Built motion from commit 561615ce.|2.6.3
authorAndrea Amorese <andrea.amorese@xenialab.it>
Mon, 28 Feb 2022 15:23:43 +0000 (16:23 +0100)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Mon, 28 Feb 2022 15:23:43 +0000 (16:23 +0100)
1317 files changed:
apidoc/api_project.js
apidoc/api_project.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/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/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/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.3d038dbc.js [moved from public/scripts/app.4132798e.js with 57% 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
server/errors/index.js
server/migrations/2.6.3.js
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
server/services/agi/graph/index.js
server/services/agi/index.js
server/services/agi/mailRpc/index.js
server/services/agi/project.js
server/services/agi/reply.js
server/services/agi/rpc/index.js
server/services/agi/scripts/aws/index.js
server/services/agi/scripts/aws/lex/index.js
server/services/agi/scripts/aws/lex/lib/api.js
server/services/agi/scripts/aws/polly/index.js
server/services/agi/scripts/aws/polly/lib/api.js
server/services/agi/scripts/google/asr/index.js
server/services/agi/scripts/google/asr/lib/api.js
server/services/agi/scripts/google/index.js
server/services/agi/scripts/index.js
server/services/agi/scripts/sestek/index.js
server/services/agi/scripts/sestek/nda/index.js
server/services/agi/scripts/tilde/asr/index.js
server/services/agi/scripts/tilde/asr/lib/api.js
server/services/agi/scripts/tilde/index.js
server/services/agi/server.js
server/services/agi/vertices.js
server/services/ami/acw/index.js
server/services/ami/ami.js
server/services/ami/client.js
server/services/ami/dialer/action.js
server/services/ami/dialer/additionalPhone.js [new file with mode: 0644]
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 d2833cc..58e0419 100644 (file)
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-02-28T08:09:04.431Z",
+    "time": "2022-02-28T15:10:35.791Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 718595a..802468f 100644 (file)
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-02-28T08:09:04.431Z",
+    "time": "2022-02-28T15:10:35.791Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index f024ec7..caa1d08 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 d9f974d..bffb47d 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 e6b577a..f771c4b 100644 (file)
@@ -1,20 +1,20 @@
 {
   "ANALYTICS": {
     "NAME": "Name",
-    "ANALYTICS": "Analytics",
-    "METRICS": "Kennzahlen",
-    "ID": "Id",
+    "ANALYTICS": "Reporting",
+    "METRICS": "Eigene Kennzahlen",
+    "ID": "ID",
     "TABLE": "Tabelle",
     "DESCRIPTION": "Beschreibung",
     "SEARCH_FOR_ANYONE": "Suche",
-    "METRIC": "Metrik",
+    "METRIC": "MYSQL-Ausdruck. Beispiel: DATE(queuecallerjoinat)",
     "ERRORS": {
-      "NAME_REQUIRED": "Pflichtfeld",
-      "METRIC_REQUIRED": "Pflichtfeld",
-      "COLUMN_REQUIRED": "Pflichtfeld",
-      "VALUE_REQUIRED": "Pflichtfeld",
-      "CUSTOM_METRIC_REQUIRED": "Pflichtfeld",
-      "ALIAS_REQUIRED": "Pflichtfeld"
+      "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"
     },
     "NEW_METRIC": "Neue Metrik",
     "ADD_METRIC": "Metrik hinzufügen",
     "DELETE_METRIC": "Metrik löschen",
     "SAVE": "Speichern",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählte",
+    "SELECTED": "Ausgewählt",
     "SELECT_ALL": "Alles auswählen",
     "SELECT_NONE": "Nichts auswählen",
     "TYPE": "Typ",
-    "EXTRACTEDREPORTS": "Extrahierte Berichte",
+    "EXTRACTEDREPORTS": "Ausgeführte 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": "Berichtvorschau",
+    "PREVIEW_REPORT": "Vorschau Bericht",
     "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": "Schliessen",
+    "CLOSE": "Schließen",
     "FORMAT": "Format",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
@@ -61,7 +61,7 @@
     "COLUMN": "Spalte",
     "VALUE": "Wert",
     "PREVIEW": "Vorschau",
-    "LIMITED_RESULT": "Ergebins begrenzt",
+    "LIMITED_RESULT": "Ansicht 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": "Extrahierte Berichte löschen",
-    "EDIT_EXTRACTEDREPORT": "Extrahierte Berichte bearbeiten",
-    "DOWNLOAD_EXTRACTEDREPORT": "Extrahierte Berichte herunterladen",
+    "DELETE_EXTRACTEDREPORT": "Bericht löschen",
+    "EDIT_EXTRACTEDREPORT": "Bericht bearbeiten",
+    "DOWNLOAD_EXTRACTEDREPORT": "Bericht herunterladen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
     "OF": "von",
index c214138..784ce48 100644 (file)
@@ -1,56 +1,56 @@
 {
   "ANALYTICS": {
     "NAME": "Naam",
-    "ANALYTICS": "Analytics",
-    "METRICS": "Metrieken",
+    "ANALYTICS": "Analyses",
+    "METRICS": "Statistieken",
     "ID": "Id",
     "TABLE": "Tabel",
     "DESCRIPTION": "Beschrijving",
-    "SEARCH_FOR_ANYONE": "Zoeken voor iedereen",
-    "METRIC": "Metrisch",
+    "SEARCH_FOR_ANYONE": "Zoeken",
+    "METRIC": "Statistiek",
     "ERRORS": {
-      "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"
+      "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"
     },
-    "NEW_METRIC": "Nieuwe metrisch",
-    "ADD_METRIC": "Voeg metrisch",
-    "EDIT_METRIC": "Edit metrisch",
-    "DELETE_METRIC": "Verwijder metrisch",
+    "NEW_METRIC": "Nieuwe Statistiek",
+    "ADD_METRIC": "Statistiek Toevoegen",
+    "EDIT_METRIC": "Statistiek Bewerken",
+    "DELETE_METRIC": "Statistiek Verwijderen",
     "SAVE": "Opslaan",
     "BACK": "Terug",
     "SELECTED": "Geselecteerd",
-    "SELECT_ALL": "Alles selecteren",
-    "SELECT_NONE": "Selecteer None (Geen).",
+    "SELECT_ALL": "Selecteer Alles",
+    "SELECT_NONE": "Selecteer Geen",
     "TYPE": "Type",
-    "EXTRACTEDREPORTS": "Uitgepakte rapporten",
+    "EXTRACTEDREPORTS": "Resultaten",
     "DATE_RANGE_FROM": "Datumbereik Van",
     "DATE_RANGE_TO": "Datumbereik Tot",
-    "GENERATED_AT": "Gegenereerd.",
+    "GENERATED_AT": "Gegenereerd Op",
     "STATUS": "Status",
-    "OUTPUT": "Uitgang",
+    "OUTPUT": "Resultaat",
     "REPORTS": "Rapporten",
     "SEARCH_FOR_FOLDER": "Zoeken naar map",
-    "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",
+    "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",
     "ERROR": "Fout",
     "QUERY_ERROR": "Query fout",
     "MESSAGE": "Bericht",
-    "CLOSE": "Dicht",
+    "CLOSE": "Sluiten",
     "FORMAT": "Formaat",
     "SETTINGS": "Instellingen",
     "GENERAL": "Algemeen",
     "VALUE": "Waarde",
     "PREVIEW": "Afdrukvoorbeeld",
     "LIMITED_RESULT": "*Beperkte resultaten",
-    "NO_DATA": "Geen gegevens resultaten",
+    "NO_DATA": "Geen resultaten gevonden",
     "CONDITIONS": "Voorwaarden",
     "ALIAS": "Alias",
     "FUNCTION": "Functie",
-    "GROUP_BY": "Groeperen op",
-    "ORDER_BY": "Order By",
+    "GROUP_BY": "Groeperen Op",
+    "ORDER_BY": "Sorteren op Op",
     "ADD_REPORTFIELD": "Veld toevoegen",
-    "EDIT_REPORTFIELD": "Invoerveld",
-    "DELETE_REPORTFIELD": "Veld wissen",
-    "METRIC_NAME": "Metrisch",
-    "NO_METRIC_FOUND": "Geen metrische gevonden",
+    "EDIT_REPORTFIELD": "Invoerveld Bewerken",
+    "DELETE_REPORTFIELD": "Veld Verwijderen",
+    "METRIC_NAME": "Statistiek",
+    "NO_METRIC_FOUND": "Geen statistieken gevonden",
     "NO_AVAILABLE_INFO": "Geen beschikbare informatie",
-    "CUSTOM_METRIC": "Aangepaste metrisch",
-    "DELETE_EXTRACTEDREPORT": "Verwijder geëxtraheerd verslag",
-    "EDIT_EXTRACTEDREPORT": "Edit geëxtraheerd verslag",
-    "DOWNLOAD_EXTRACTEDREPORT": "Download geëxtraheerd verslag",
+    "CUSTOM_METRIC": "Aangepaste Statistiek",
+    "DELETE_EXTRACTEDREPORT": "Rapport Verwijderen",
+    "EDIT_EXTRACTEDREPORT": "Rapport Bewerken",
+    "DOWNLOAD_EXTRACTEDREPORT": "Rapport Downloaden",
     "PAGE": "Pagina",
     "ROWSPERPAGE": "Rijen per pagina",
     "OF": "Van",
index c1efa84..4a4f088 100644 (file)
@@ -41,7 +41,7 @@
     "NEW_REPORT": "Novo relatório",
     "ADD_REPORT": "Adicionar relatório",
     "COPY_REPORT": "Copiar relatório",
-    "PREVIEW_REPORT": "Pré-visualização do relatório",
+    "PREVIEW_REPORT": "Relatório de pré-visualização",
     "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 web"
+    "WEB_REPORT": "Relatório da web"
   }
 }
index 43d5be6..e40e468 100644 (file)
@@ -1,20 +1,20 @@
 {
   "CALLYSQUARE": {
-    "ACCOUNT_ID": "Account",
-    "ADDUSER_PROJECTS": "Benutzer zu dem Projekt hinzufügen",
+    "ACCOUNT_ID": "Konto",
+    "ADDUSER_PROJECTS": "Benutzer zum Projekt hinzufügen",
     "ADD_ODBC": "ODBC hinzufügen",
     "ADD_PROJECT": "Projekt hinzufügen",
-    "ADD_VARIABLE": "Variable hinzufügen",
+    "ADD_VARIABLE": "Variabel hinzufügen",
     "AGENTS": "Agenten",
-    "AGI": "AGI",
+    "AGI": "Skript",
     "ALL_USERS": "Alle Benutzer",
     "ANSWER": "Antwort",
     "APIKEY": "API-Schlüssel",
     "APPID": "App-ID",
-    "APPLICATION": "Application",
-    "APPSECRET": "App Geheimnis",
-    "ARGS": "Arguments",
-    "ATTACHMENT_NAME": "Name des Anhangs",
+    "APPLICATION": "Anwendung",
+    "APPSECRET": "App-Secret",
+    "ARGS": "Argumente",
+    "ATTACHMENT_NAME": "Anhangsname",
     "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": "Region",
-    "AWS_POLLY_REGION": "Region",
-    "AWS_POLLY_VOICE": "Sprache",
+    "AWS_BOT_NAME": "BOT-Name",
+    "AWS_LEX_REGION": "Lex-Region",
+    "AWS_POLLY_REGION": "Polly-Region",
+    "AWS_POLLY_VOICE": "Polly-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": "Cally Square",
+    "CALLYSQUARE": "Callflow-Editor",
     "CC": "CC",
     "CHOOSE_ATTACHMENT": "Anhang wählen",
     "CLOSE": "Schließen",
-    "COMMAND": "Befehlen",
-    "COMPUTEDVARIABLES": "Skriptpfad für berechnete Variablen",
-    "CONDITION": "Voraussetzung",
+    "COMMAND": "Eingabe",
+    "COMPUTEDVARIABLES": "Skriptpfad für berechnete Variabeln",
+    "CONDITION": "Bedingung",
     "CONTEXT": "Kontext",
     "COPY": "Kopieren",
     "COPY_PROJECT": "Projekt kopieren",
@@ -61,7 +61,7 @@
     "DIGIT": "Maximale Ziffern",
     "DIGITS": "Ziffern",
     "DOWNLOAD_SQUARERECORDING": "Aufnahme hochladen",
-    "DROP_TO_UPLOAD": "ABLEGEN ZUM UPLOADEN",
+    "DROP_TO_UPLOAD": "HIER 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": "Pflichtfeld",
-      "FIELD_REQUIRED": "Pflichtfeld",
-      "NAME_REQUIRED": "Pflichtfeld",
-      "PROJECT_REQUIRED": "Pflichtfeld",
-      "URL_REQUIRED": "Pflichtfeld"
+      "DSN_REQUIRED": "DSN erforderlich",
+      "FIELD_REQUIRED": "Feld erforderlich",
+      "NAME_REQUIRED": "Name erforderlich",
+      "PROJECT_REQUIRED": "Projekt erforderlich",
+      "URL_REQUIRED": "URL erforderlich"
     },
     "ESCAPE_DIGITS": "Escape Digits",
     "EXTEN": "Erweitern",
-    "EXTENSION": "Erweiterung",
+    "EXTENSION": "Nebenstelle/Ziel",
     "EXT_DIAL": "Wählen extern",
-    "FILE": "Dateiname",
+    "FILE": "Datei",
     "FILENAME": "Dateiname",
-    "FILE_ID": "Audio",
-    "FINALLY": "Schliesslich",
+    "FILE_ID": "Datei ID",
+    "FINALLY": "Am Ende",
     "FINDBY": "Suchen nach",
     "GETDIGITS": "Ziffern erhalten",
     "GETSECRETDIGITS": "Geheime Ziffern erhalten",
     "LUMENVOXTTS": "Lumenvox Text-To-Speech",
     "MACRO": "Macro",
     "MAILBOX": "Mailbox",
-    "MATH": "Math",
+    "MATH": "Mathematik",
     "MAXDIGIT": "Maximum Ziffern",
     "MENU": "Menü",
     "METHOD": "Methode",
     "OPERATION": "Operation",
     "OPTIONS": "Optionen",
     "OPTS": "Optionen",
-    "OUTPUT": "Ausgang",
+    "OUTPUT": "Ausgabe",
     "PAGE": "Seite",
     "PASSWORD": "Passwort",
     "PAUSE": "Pause",
-    "PAUSE_ID": "Pause ID",
+    "PAUSE_ID": "Pausen ID",
     "PERMISSIONADD_PROJECTS": "Benutzer zu dem Projekt hinzufügen",
     "PHONE": "Telefon",
     "PLAYBACK": "Wiedergabe",
     "PRIORITY": "Priorität",
     "PROJECT": "Projekt",
     "PROJECTS": "Projekte",
-    "PROJECT_ID": "Projekt",
-    "QUERY": "Abfrage",
+    "PROJECT_ID": "Projekt ID",
+    "QUERY": "Query",
     "QUEUE": "Warteschlange",
-    "QUEUE_ID": "Warteschlange ID",
-    "RAWBODY": "Body",
+    "QUEUE_ID": "Warteschlangen ID",
+    "RAWBODY": "Textkörper",
     "RAWHEADERS": "Überschriften",
-    "RECORD": "Aufnahme",
-    "RECORDINGFORMAT": "Aufnahme Format",
+    "RECORD": "Aufzeichnung",
+    "RECORDINGFORMAT": "Aufzeichnungsformat",
     "RESPONSE": "Antwort Timeout",
     "RESTAPI": "Rest API",
-    "RETRY": "Wiederholungen",
+    "RETRY": "Wiederholen",
     "ROWSPERPAGE": "Zeilen pro Seite",
     "SAVE": "Speichern",
-    "SAYDIGITS": "Say Digits",
-    "SAYNUMBER": "Say number",
-    "SAYPHONETIC": "Say Phonetics",
+    "SAYDIGITS": "Ziffern sagen",
+    "SAYNUMBER": "Nummer sagen",
+    "SAYPHONETIC": "Phonetische Ansage",
     "SEARCH_FOR_ANYONE": "Suchen",
     "SELECTED": "Ausgewählt",
     "SELECTED_USERS": "Ausgewählte Benutzer",
     "SESTEKTTS": "Sestek TTS",
     "SET": "Set",
     "SIP_ID": "SIP",
-    "SMS_ACCOUNT_ID": "Konto",
+    "SMS_ACCOUNT_ID": "ID Konto für SMS",
     "SMS_TEXT": "Text",
-    "SPEED": "Speed",
-    "SQUARERECORDINGS": "Aufnahmen",
-    "SSMLGENDER": "Geschlecht",
+    "SPEED": "Geschwindigkeit",
+    "SQUARERECORDINGS": "Aufzeichnungen",
+    "SSMLGENDER": "Geschlecht Stimme",
     "START": "Start",
     "SUBJECT": "Betreff",
     "SUBPROJECT": "Sub-Projekt",
     "SYSTEM": "System",
     "TELEPHONES": "Telefone",
-    "TEMPLATE_ID": "Vorlage",
+    "TEMPLATE_ID": "Vorlagen ID",
     "TEST_ODBC": "Test ODBC",
     "TEXT": "Text",
     "TILDEASR": "Tilde ASR",
     "TIMEOUT": "Timeout",
-    "TO": "To",
+    "TO": "An",
     "TRUNK_NAME": "Trunk",
     "TTS": "Google Text-To-Speech",
     "UNIQUEID": "Eindeutige ID",
     "UNPAUSE": "Pause beenden",
-    "UPDATE_DESCRIPTION": "Update Beschreibung",
+    "UPDATE_DESCRIPTION": "Beschreibung aktualisieren",
     "UPDATE_INFO": "Info aktualisieren",
     "URI": "URI",
     "URL": "URL",
     "DIALOGFLOWV2": "DialogflowV2",
     "DIALOGFLOWV2_LANGUAGE": "Sprache",
     "DIALOGFLOWV2_PROJECT_ID": "Projekt-ID",
-    "PRIVATE_KEY": "Privat Schlüssel",
+    "PRIVATE_KEY": "Privater Schlüssel",
     "DIALTIMEZONE": "Zeitzone wählen"
   }
 }
index 0f1fe4e..dbe19f3 100644 (file)
   "CALLYSQUARE": {
     "ACCOUNT_ID": "Account",
     "ADDUSER_PROJECTS": "Gebruikers toevoegen aan project",
-    "ADD_ODBC": "Voeg ODBC",
-    "ADD_PROJECT": "Voeg Project",
-    "ADD_VARIABLE": "Variabele toevoegen",
+    "ADD_ODBC": "ODBC Toevoegen",
+    "ADD_PROJECT": "Project Toevoegen",
+    "ADD_VARIABLE": "Variabele Toevoegen",
     "AGENTS": "Agenten",
     "AGI": "AGI",
     "ALL_USERS": "Alle gebruikers",
-    "ANSWER": "Answer",
-    "APIKEY": "API sleutel",
+    "ANSWER": "Antwoorden",
+    "APIKEY": "API key",
     "APPID": "App ID",
-    "APPLICATION": "Application",
-    "APPSECRET": "App geheim",
+    "APPLICATION": "Applicatie",
+    "APPSECRET": "App secret",
     "ARGS": "Arguments",
     "ATTACHMENT_NAME": "Bijlagenaam",
-    "ATTACHMENT_PATH": "Attachment pad",
-    "ATTACHMENT_TYPE": "Type aansluiting",
+    "ATTACHMENT_PATH": "Bijlage pad",
+    "ATTACHMENT_TYPE": "Type bijlage",
     "AUDIO": "Audio",
     "AUDIOENCODING": "Audiocodering",
     "AWSLEX": "Amazon Lex",
-    "AWSPOLLY": "AWS Polly",
-    "AWS_ACCESS_KEY_ID": "Toegangstoets ID",
+    "AWSPOLLY": "Amazon Polly",
+    "AWS_ACCESS_KEY_ID": "Access key ID",
     "AWS_BOT_NAME": "Botnaam",
     "AWS_LEX_REGION": "Regio",
     "AWS_POLLY_REGION": "Regio",
     "AWS_POLLY_VOICE": "Spraak",
-    "AWS_SECRET_ACCESS_KEY": "Geheime sleutel",
-    "AWS_TEXT_TYPE": "Bericht soort",
+    "AWS_SECRET_ACCESS_KEY": "Access key",
+    "AWS_TEXT_TYPE": "Soort bericht",
     "BACK": "Terug",
     "BCC": "BCC",
     "BEEP": "Beep",
-    "BODY": "Lichaam",
-    "CALLBACK": "Callback",
+    "BODY": "Inhoud",
+    "CALLBACK": "Terugbellen",
     "CALLBACK_PRIORITY": "Prioriteit",
-    "CALLYSQUARE": "Schrijfsnelheid Square",
+    "CALLYSQUARE": "Cally Square",
     "CC": "CC",
-    "CHOOSE_ATTACHMENT": "Kies voorzetstuk",
-    "CLOSE": "Dicht",
-    "COMMAND": "Command",
+    "CHOOSE_ATTACHMENT": "Kies een bijlage",
+    "CLOSE": "Sluiten",
+    "COMMAND": "Commando",
     "COMPUTEDVARIABLES": "Scriptpad voor berekende variabelen",
-    "CONDITION": "Condition",
+    "CONDITION": "Voorwaarde",
     "CONTEXT": "Context",
     "COPY": "Kopiëren",
-    "COPY_PROJECT": "Kopieer Project",
-    "CREATED_AT": "Gemaakt op",
-    "CUSTOM_ACTION": "Aangepaste actie",
-    "CUSTOM_ACTION_DATA": "Aangepaste actiegegevens",
-    "CUSTOM_APP": "Custom Application",
+    "COPY_PROJECT": "Project Kopiëren",
+    "CREATED_AT": "Gemaakt Op",
+    "CUSTOM_ACTION": "Aangepaste Actie",
+    "CUSTOM_ACTION_DATA": "Aangepaste Actiegegevens",
+    "CUSTOM_APP": "Aangepaste Applicatie",
     "DATABASE": "Database",
-    "DELAY": "Delay",
+    "DELAY": "Vertraging",
     "DELETE": "Verwijderen",
-    "DELETE_ODBC": "Verwijderen van ODBC",
-    "DELETE_PROJECT": "Project verwijderen",
-    "DELETE_SQUARERECORDING": "Wis vierkant opnemen",
+    "DELETE_ODBC": "ODBC Verwijderen",
+    "DELETE_PROJECT": "Project Verwijderen",
+    "DELETE_SQUARERECORDING": "Opname Verwijderen",
     "DESCRIPTION": "Beschrijving",
-    "DIAL": "Dial",
-    "DIALOGFLOW": "Dialogflow",
+    "DIAL": "Bel",
+    "DIALOGFLOW": "Dialoogstroom",
     "DIALOGFLOW_LANGUAGE": "Taal",
-    "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",
+    "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",
     "DSN": "DSN",
-    "EDIT": "Edit",
-    "EDIT_ODBC": "Edit ODBC",
-    "EDIT_PROJECT": "Edit Project",
-    "EDIT_SQUARERECORDING": "Edit plein opnemen",
-    "EDIT_XML": "Edit XML",
-    "END": "End",
+    "EDIT": "Bewerken",
+    "EDIT_ODBC": "ODBC Bewerken",
+    "EDIT_PROJECT": "Project Bewerken",
+    "EDIT_SQUARERECORDING": "Opnames Bewerken",
+    "EDIT_XML": "XML aanpassen",
+    "END": "Einde",
     "ERRORS": {
-      "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",
+      "DSN_REQUIRED": "Verplicht veld",
+      "FIELD_REQUIRED": "Verplicht veld",
+      "NAME_REQUIRED": "Verplicht veld",
+      "PROJECT_REQUIRED": "Verplicht veld",
       "URL_REQUIRED": "Verplicht veld"
     },
-    "ESCAPE_DIGITS": "Escape Digits",
+    "ESCAPE_DIGITS": "Escape cijfers",
     "EXTEN": "Uitbreiding",
-    "EXTENSION": "Extension",
-    "EXT_DIAL": "External Dial",
-    "FILE": "Filename",
+    "EXTENSION": "Extensie",
+    "EXT_DIAL": "Bellen naar extern",
+    "FILE": "Bestand",
     "FILENAME": "Bestandsnaam",
     "FILE_ID": "Audio",
-    "FINALLY": "Finally",
+    "FINALLY": "Ten slotte",
     "FINDBY": "Zoek naar",
-    "GETDIGITS": "Get Digits",
-    "GETSECRETDIGITS": "Get Secret Digits",
-    "GOAL": "Goal",
-    "GOALNAME": "Goal Name",
+    "GETDIGITS": "Cijfers opvragen",
+    "GETSECRETDIGITS": "Geheime cijfers opvragen",
+    "GOAL": "Doel",
+    "GOALNAME": "Doelnaam",
     "GOOGLEASR": "GoogleASR",
     "GOOGLE_ASR_LANGUAGE": "Taal",
     "GOOGLE_CLOUD_TTS": "Google Cloud TTS",
-    "GOOGLE_CLOUD_TTS_TEXT_TYPE": "Bericht soort",
-    "GOOGLE_TTS_LANGUAGE": "Language",
+    "GOOGLE_CLOUD_TTS_TEXT_TYPE": "Soort bericht",
+    "GOOGLE_TTS_LANGUAGE": "Taal",
     "GOSUB": "GoSub",
     "GOTOC": "GoTo",
     "GOTOIF": "GoToIf",
     "GOTOIFTIME": "GoToIfTime",
     "GO_TO_PROJECTS": "Ga naar projecten",
     "GRAMMAR": "Grammatica",
-    "HANGUP": "Hangup",
+    "HANGUP": "Ophangen",
     "HEADERS": "Kopteksten",
     "HELP": {
-      "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)",
+      "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)",
       "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 met een komma (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)"
+      "TO": "U kunt meerdere adressen toevoegen door ze te scheiden met een komma  (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)"
     },
-    "HIDDENDIGITSNUM": "Hiddden Digits Number",
-    "HIDDENDIGITSPOS": "Hidden Digits Position",
-    "ID": "Id",
+    "HIDDENDIGITSNUM": "Verborgen Cijfer Nummer",
+    "HIDDENDIGITSPOS": "Verborgen Cijfer Positie",
+    "ID": "ID",
     "IMPORT": "Importeren",
-    "IMPORT_XML": "Import XML",
+    "IMPORT_XML": "Importeer XML",
     "INTERVAL_ID": "Interval",
-    "INTKEY": "Interrupt Key",
+    "INTKEY": "Toets voor onderbreken",
     "ISPEECHASR": "ISpeech ASR",
     "ISPEECHTTS": "ISpeech Text-To-Speech",
-    "ISPEECH_ASR_LANGUAGE": "Language",
-    "ISPEECH_TTS_LANGUAGE": "Language",
-    "KEY": "Key",
+    "ISPEECH_ASR_LANGUAGE": "Taal",
+    "ISPEECH_TTS_LANGUAGE": "Taal",
+    "KEY": "Sleutel",
     "LABEL": "Label",
     "LANGUAGECODE": "Taalcode",
-    "LASTNAME": "Last Name",
-    "LIST_ID": "List",
-    "LOGIN": "Log in",
+    "LASTNAME": "Achternaam",
+    "LIST_ID": "Lijst",
+    "LOGIN": "Inloggen",
     "LOGOUT": "Uitloggen",
     "LUMENVOXASR": "Lumenvox ASR",
     "LUMENVOXTTS": "Lumenvox Text-To-Speech",
     "MACRO": "Macro",
     "MAILBOX": "Mailbox",
-    "MATH": "Math",
-    "MAXDIGIT": "Maximum Digits",
+    "MATH": "Wiskundefuncties",
+    "MAXDIGIT": "Maximaal aantal cijfers",
     "MENU": "Menu",
     "METHOD": "Methode",
-    "MINDIGIT": "Minimum Digits",
+    "MINDIGIT": "Minimaal aantal cijfers",
     "MODEL": "Model",
     "MRCPRECOG": "MRCPRecog",
     "MRCPSYNTH": "MRCPSynth",
     "NAME": "Naam",
     "NDAACTIVITY_TYPE": "Soort activiteit",
-    "NDAGENERATE_AUDIO": "Genereer audiobestand",
+    "NDAGENERATE_AUDIO": "Audiobestand genereren",
     "NDASSISTANT_URL": "NDASSISTANT URL",
     "NDAUTH_URL": "NDAUTH-URL",
-    "NEW": "Nieuwe",
-    "NEW_ODBC": "Nieuwe ODBC verbinding",
-    "NEW_PROJECT": "Nieuw project",
-    "NEW_VARIABLE": "Nieuwe variabele",
+    "NEW": "Nieuw",
+    "NEW_ODBC": "Nieuwe ODBC Verbinding",
+    "NEW_PROJECT": "Nieuw Project",
+    "NEW_VARIABLE": "Nieuwe Variabele",
     "NOOP": "NoOp",
     "NOTES": "Aantekeningen",
     "NO_AVAILABLE_INFO": "Geen beschikbare informatie",
-    "NUMBER": "Number",
+    "NUMBER": "Nummer",
     "ODBC": "ODBC",
-    "ODBC_ID": "ODBC Connection",
+    "ODBC_ID": "ODBC Verbinding",
     "OF": "Van",
     "OPEN": "Open",
     "OPEN_NEW_WINDOW": "Open in een nieuw venster",
-    "OPEN_PROJECT": "Project openen",
-    "OPERATION": "Operation",
-    "OPTIONS": "Options",
-    "OPTS": "Options",
-    "OUTPUT": "Output",
+    "OPEN_PROJECT": "Project Openen",
+    "OPERATION": "Operatie",
+    "OPTIONS": "Opties",
+    "OPTS": "Opties",
+    "OUTPUT": "Resultaat",
     "PAGE": "Pagina",
     "PASSWORD": "Wachtwoord",
     "PAUSE": "Pauze",
-    "PAUSE_ID": "Pauzeer type",
+    "PAUSE_ID": "Soort pauze",
     "PERMISSIONADD_PROJECTS": "Gebruikers toevoegen aan project",
     "PHONE": "Telefoon",
-    "PLAYBACK": "Playback",
-    "POSITION": "Position",
-    "PRIORITY": "Priority",
+    "PLAYBACK": "Afspelen",
+    "POSITION": "Positie",
+    "PRIORITY": "Prioriteit",
     "PROJECT": "Project",
     "PROJECTS": "Projecten",
     "PROJECT_ID": "Project",
     "QUERY": "Query",
     "QUEUE": "Queue",
     "QUEUE_ID": "Queue",
-    "RAWBODY": "Lichaam",
+    "RAWBODY": "Inhoud",
     "RAWHEADERS": "Kopteksten",
-    "RECORD": "Record",
-    "RECORDINGFORMAT": "Recording Format",
-    "RESPONSE": "Response Timeout",
+    "RECORD": "Opname",
+    "RECORDINGFORMAT": "Opnameformaat",
+    "RESPONSE": "Reactie Timeout",
     "RESTAPI": "Rest API",
-    "RETRY": "Retries",
+    "RETRY": "Pogingen",
     "ROWSPERPAGE": "Rijen per pagina",
     "SAVE": "Opslaan",
-    "SAYDIGITS": "Say Digits",
-    "SAYNUMBER": "Say number",
-    "SAYPHONETIC": "Say Phonetics",
-    "SEARCH_FOR_ANYONE": "Zoeken voor iedereen",
+    "SAYDIGITS": "Cijfers uitspreken",
+    "SAYNUMBER": "Nummer uitspreken",
+    "SAYPHONETIC": "Fonetisch uitspreken",
+    "SEARCH_FOR_ANYONE": "Zoeken",
     "SELECTED": "Geselecteerd",
-    "SELECTED_USERS": "Geselecteerde gebruikers",
-    "SELECT_ALL": "Alles selecteren",
-    "SELECT_NONE": "Selecteer None (Geen).",
+    "SELECTED_USERS": "Geselecteerde Gebruikers",
+    "SELECT_ALL": "Selecteer Alles ",
+    "SELECT_NONE": "Selecteer Geen.",
     "SENDFAX": "Fax verzenden",
-    "SENDMAIL": "Send Mail",
-    "SENDSMS": "Send SMS",
+    "SENDMAIL": "Mail verzenden",
+    "SENDSMS": "SMS verzenden",
     "SESTEKASR": "Sestek ASR",
     "SESTEKNDA": "Sestek NDA",
     "SESTEKTTS": "Sestek TTS",
     "SMS_ACCOUNT_ID": "Account",
     "SMS_TEXT": "Text",
     "SPEED": "Speed",
-    "SQUARERECORDINGS": "Vierkante opnamen",
+    "SQUARERECORDINGS": "Opnames",
     "SSMLGENDER": "Geslacht",
     "START": "Start",
-    "SUBJECT": "Subject",
+    "SUBJECT": "Onderwerp",
     "SUBPROJECT": "Sub Project",
-    "SYSTEM": "System",
+    "SYSTEM": "Systeem",
     "TELEPHONES": "Telefoons",
-    "TEMPLATE_ID": "Template",
+    "TEMPLATE_ID": "Sjabloon",
     "TEST_ODBC": "Test ODBC",
     "TEXT": "Text",
     "TILDEASR": "Tilde ASR",
     "TIMEOUT": "Timeout",
-    "TO": "To",
+    "TO": "Naar",
     "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": "Variable",
-    "VARIABLE_VALUE": "Value",
+    "VARIABLE_ID": "Variabele",
+    "VARIABLE_VALUE": "Waarde",
     "VOICEMAIL": "Voicemail",
-    "VSWITCH": "Variable Switch",
+    "VSWITCH": "Variabele schakelaar",
     "CLIENT_EMAIL": "E-mail van de klant",
     "DIALOGFLOWV2": "DialogflowV2",
     "DIALOGFLOWV2_LANGUAGE": "Taal",
     "DIALOGFLOWV2_PROJECT_ID": "Project-ID",
-    "PRIVATE_KEY": "Prive sleutel",
+    "PRIVATE_KEY": "Geheime sleutel",
     "DIALTIMEZONE": "Kies tijdzone"
   }
 }
index 42dd4c2..4b5a0df 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": "Áudio",
+    "ATTACHMENT_NAME": "Nome do Anexo",
+    "ATTACHMENT_PATH": "Caminho de Anexos",
+    "ATTACHMENT_TYPE": "Tipo de Anexo",
+    "AUDIO": "Audio",
     "AUDIOENCODING": "Codificação de áudio",
-    "AWSLEX": "AWS Lex",
+    "AWSLEX": "Amazon 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": "AWS Secret Access Key",
+    "AWS_SECRET_ACCESS_KEY": "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": "Soltar para upload",
+    "DOWNLOAD_SQUARERECORDING": "Download Gravação",
+    "DROP_TO_UPLOAD": "DROP TO 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 TTS",
+    "ISPEECHTTS": "iSpeech Text-To-Speech",
     "ISPEECH_ASR_LANGUAGE": "Idioma",
     "ISPEECH_TTS_LANGUAGE": "Idioma",
     "KEY": "Key",
     "LOGIN": "Login",
     "LOGOUT": "Logout",
     "LUMENVOXASR": "Lumenvox ASR",
-    "LUMENVOXTTS": "Lumenvox TTS",
+    "LUMENVOXTTS": "Lumenvox Text-To-Speech",
     "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 TTS",
+    "TTS": "Google Text-To-Speech",
     "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": "Fuso horário de discagem"
+    "DIALTIMEZONE": "Disque fuso horário"
   }
 }
index 9fd2be8..112cad3 100644 (file)
   "CHAT": {
     "AMAZONLEX": "Amazon Lex",
     "TEXT": "Text",
-    "TIMES": "Anzahl der Zeiten pro Interaktion",
+    "TIMES": "Anzeigehäufigkeit automatische Antwort",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
     "NEW_CHATDISPOSITION": "Neue Chat-Qualifizierung",
-    "ENABLECUSTOMERATTACHMENT": "Kundenanhänge aktivieren",
-    "OFFLINE_CHAT_BUTTON": "Button Chat offline",
-    "OFFLINESTATUS": "Offline Status",
+    "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)",
     "NAME": "Name",
     "CHATQUEUES": "Chat-Warteschlangen",
     "SEARCH_FOR_ANYONE": "Suche",
-    "STRATEGY": "Strategie",
-    "AGENT_TIMEOUT": "Agent Timeout",
+    "STRATEGY": "Verteilungsstrategie an freie Agenten",
+    "AGENT_TIMEOUT": "Klingelzeit (in Sekunden), bevor Weiterleitung an den nächsten Agenten erfolgt",
     "DESCRIPTION": "Beschreibung",
-    "KEY": "Schlüssel",
+    "KEY": "Kurzname",
     "ALIAS": "Alias-Name",
-    "VARIABLE": "Variable",
-    "INTERVAL": "Intervall",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "VARIABLE": "Variabel",
+    "INTERVAL": "Zeitplanung",
+    "EDIT_CLOSE": "Interaktion schließen und Qualifizierung hinzufügen",
     "TIMEZONE": "Zeitzone",
     "MESSAGE": "Nachricht",
-    "ADVANCED": "Erweitert",
-    "FORWARDTRANSCRIPT": "Transkript weiterleiten",
-    "FORWARDTRANSCRIPTMESSAGE": "Transkript-Nachricht weiterleiten",
-    "SKIPMESSAGEBUTTON": "Nachrichtenbutton überspringen",
+    "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",
     "EDIT_MESSAGE": "Nachricht bearbeiten",
-    "CONDITION_AGREEMENT": "Konditionelle Vereinbarung",
+    "CONDITION_AGREEMENT": "Chatbedingungen zustimmen",
     "NONE": "Nichts",
     "PRIORITY": "Priorität",
-    "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",
+    "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",
     "WEBSITESCRIPT": "Webseiten-Skript",
     "DELETE_OFFLINEMESSAGE": "Löschen",
-    "OFFLINEMESSAGES": "Offline Nachrichten",
-    "FORWARD_OFFLINE": "Offline weiterleiten",
+    "OFFLINEMESSAGES": "Offline-Nachrichten",
+    "FORWARD_OFFLINE": "Offline-Nachrichten per E-Mail weiterleiten (extern)",
     "SHOW_OFFLINEMESSAGE": "Anzeigen",
-    "FORWARD_OFFLINE_ADDRESS": "Offline-Adresse weiterleiten",
-    "CLOSINGFORM": "Formular schließen",
-    "ENABLERATING": "Bewertung aktivieren",
+    "FORWARD_OFFLINE_ADDRESS": "Empfängeradresse eingeben",
+    "CLOSINGFORM": "Verhalten bei Chatende",
+    "ENABLERATING": "Bewertung ermöglichen",
     "ENABLECUSTOMERWRITING": "Kunde kann schreiben, bevor Chat akzeptiert wird",
-    "ENABLEFEEDBACK": "Feedback aktivieren",
+    "ENABLEFEEDBACK": "Feedback ermöglichen",
     "RATINGTYPE": "Bewertungstyp",
-    "CLOSINGMESSAGE": "Abschluss Nachricht",
-    "CLOSINGMESSAGEBUTTON": "Button für Abschluss Nachricht",
-    "RATINGSTARSNUMBER": "Anzahl der Bewertungssterne",
-    "EDIT_GOTOIF": "GotoIf bearbeiten",
+    "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",
     "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Wahre Priorität",
-    "FALSEPRIORITY": "Falsche Priorität",
+    "TRUEPRIORITY": "Priorität, wenn erfüllt (true)",
+    "FALSEPRIORITY": "Priorität, wenn nicht erfüllt (false)",
     "VALUE": "Wert",
     "WEBSITEALIAS": "Website-Alias",
     "ERRORS": {
-      "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",
+      "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",
       "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer 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",
+      "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",
       "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": "Pflichtfeld",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Auf zugewiesenen Agenten warten erforderlich",
       "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": "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"
+      "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"
     },
     "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": "Timeout",
+    "TIMEOUT": "Zeitüberschreitung",
     "TYPE": "Typ",
-    "SELECTOR": "Selektion",
+    "SELECTOR": "Auswahl/Bereich",
     "AGENT": "Agent",
-    "GOTO": "Goto",
-    "GOTOIF": "GotoIf",
-    "NOOP": "Noop",
+    "GOTO": "GeheZu (GoTo)",
+    "GOTOIF": "GeheZuWenn (GoToIf)",
+    "NOOP": "Log erstellen (NoOp)",
     "QUEUE": "Warteschlange",
-    "BUILDER": "Builder",
+    "BUILDER": "Formularerstellung",
     "PREVIEW": "Vorschau",
     "EDIT_AGENT": "Agenten bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "EDIT_GOTO": "Goto bearbeiten",
-    "EDIT_GOTOIf": "GotoIf bearbeiten",
-    "EDIT_NOOP": "Noop bearbeiten",
+    "EDIT_GOTO": "GeheZu bearbeiten",
+    "EDIT_GOTOIf": "GeheZuWenn bearbeiten",
+    "EDIT_NOOP": "Log-Erstellung bearbeiten",
     "ADD_CHATQUEUE": "Chat-Warteschlange hinzufügen",
     "EDIT_CHATQUEUE": "Chat-Warteschlange bearbeiten",
     "DELETE_CHATQUEUE": "Chat-Warteschlange löschen",
-    "SETTINGS": "Einstellungen",
+    "SETTINGS": "Allg. Einstellungen",
     "SAVE": "Speichern",
     "SCRIPT": "Skript",
     "TOKEN": "Token",
     "EDIT_CHATWEBSITE": "Chat-Webseite bearbeiten",
     "DELETE_CHATWEBSITE": "Chat-Webseite löschen",
     "LIST": "Liste",
-    "SNIPPET": "Snippet",
+    "SNIPPET": "Chat-Widget",
     "FORMS": "Formulare",
     "UP": "Nach Oben",
     "DOWN": "Nach Unten",
     "PROACTIVEACTIONS": "Proaktive Anfragen",
     "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Aktionen",
+    "ACTIONS": "Routing",
     "FIDELITY": "Treue",
-    "APPEARANCE": "Darstellung",
+    "APPEARANCE": "Darstellung Widget",
     "MAINCOLOR": "Hauptfarbe",
     "FOCUSCOLOR": "Fokusfarbe",
     "BUTTONCOLOR": "Buttonfarbe",
     "DEFAULT": "Standard",
     "WHITELABEL": "White Label",
     "LOGO": "Logo",
-    "DOWNLOADTRANSCRIPT": "Transkript herunterladen",
-    "ENQUIRY_ENABLE": "Anfrage aktivieren",
+    "DOWNLOADTRANSCRIPT": "Kunde darf Chatverlauf herunterladen (.csv-Datei)",
+    "ENQUIRY_ENABLE": "Anfrage ermöglichen",
     "ENQUIRY_FORWARDING": "Weiterleitung von Anfragen",
-    "ENQUIRY_FORWARDING_ADDRESS": "Anfrage-Weiterleitungsadresse",
+    "ENQUIRY_FORWARDING_ADDRESS": "Weiterleitungsadresse für Anfragen",
     "LABELS": "Labels",
-    "HEADER_ONLINE": "Online-Kopfzeile",
-    "ONLINE_MESSAGE": "Online Nachricht",
-    "NAME_TITLE": "Name Titel",
-    "USERNAME_PLACEHOLDER": "Platzhalter für Nutzernamen",
+    "HEADER_ONLINE": "Kopfzeile auf Widget, wenn Chat geöffnet",
+    "ONLINE_MESSAGE": "Nachricht wenn online",
+    "NAME_TITLE": "Titel",
+    "USERNAME_PLACEHOLDER": "Nutzernamen",
     "EMAIL_TITLE": "E-Mail Titel",
-    "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",
+    "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",
     "ACCEPT": "Akzeptieren",
     "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
+    "CLOSE": "Schließen und Qualifizieren",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
     "EMBEDDING": "Einbetten",
     "GENERAL": "Allgemein",
-    "SELECTED": "Ausgewählte",
+    "SELECTED": "Ausgewählt",
     "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-Snippet wie folgt zugeordnet:",
+      "FROMKEY": "wird in dem Chat-Widget 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@xcally.com, jane.miller@xcally.com)",
+      "FORWARD_OFFLINE": "Sie können mehrere durch Kommas getrennte Adressen hinzufügen (z. B. john.doe@test.com, jane.miller@test.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": "Website-Kurzname (5 Zeichen), der auf der Registerkarte \"Agent\" angezeigt wird",
-      "INTEVAL": "Wählen aus der Liste der verfügbaren Intervalle",
+      "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",
       "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": "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.",
+      "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",
       "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 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",
+      "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",
       "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": "Leer lassen, um keine Nachricht zu senden",
+      "WELCOMEMESSAGE": "Automatische Begrüßungsnachricht. Leer lassen, um keine automatische Nachricht zu senden",
       "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
       "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
     },
     "ADDRESS": "Adresse",
-    "ONLINESTATE": "Online Status",
-    "OFFLINESTATE": "Offline Status",
-    "RATINGSTATE": "Bewertungsstatus",
+    "ONLINESTATE": "Status Online",
+    "OFFLINESTATE": "Status Offline",
+    "RATINGSTATE": "Status Bewertung",
     "ENQUIRY": "Anfrage",
-    "OFFLINETEMPLATE": "Offline Vorlage",
+    "OFFLINETEMPLATE": "Vorlage wenn offline",
     "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": "Gotop",
-    "EDIT_GOTOP": "Gotop bearbeiten",
+    "GOTOP": "Priorität setzen (GoToP)",
+    "EDIT_GOTOP": "GoToP bearbeiten",
     "SELECT_WEBSITE": "Webseite auswählen",
     "INFO": "Info",
-    "OFFLINEMESSAGES_CHATWEBSITE": "Zu Offline-Nachrichten gehen",
-    "WAITINGTITLE": "Titel während Warten",
-    "WAITINGMESSAGE": "Wartenachricht",
+    "OFFLINEMESSAGES_CHATWEBSITE": "Direkt zu Offline-Nachrichten",
+    "WAITINGTITLE": "Kopfzeile während auf einen freien Agenten gewartet wird",
+    "WAITINGMESSAGE": "Nachricht während Warten",
     "RATING": "Bewertung",
     "NO_RATINGVALUE": "Keine Bewertung",
     "AGENTSADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "AGENTS": "Agenten",
     "FULLNAME": "Vollständiger Name",
     "INTERNAL": "Intern",
-    "PHONE_STATE": "Telefonstatus",
-    "PHONE_STATUS": "Telefonstatus",
+    "PHONE_STATE": "Status Nebenstelle",
+    "PHONE_STATUS": "Status SIP",
     "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": "Zur Echtzeit-Warteschlange für Chat gehen",
+    "GOTOREALTIME_CHATQUEUE": "Direkt zur Echtzeit-Warteschlange",
     "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
-    "IDLE": "Inaktiv",
+    "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
     "SHOWAGENTAVATAR": "Persönlichen Agenten-Avatar anzeigen",
     "AGENTAVATAR": "Agenten-Avatar",
-    "SPYINTERACTION": "Mitlesen",
-    "INTERACTIONS_CHATWEBSITE": "Zu den Interaktionen gehen",
+    "SPYINTERACTION": "Chat anzeigen",
+    "INTERACTIONS_CHATWEBSITE": "Direkt zu Interaktionen",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "CLOSINGQUESTION": "Abschlussfrage",
+    "CLOSINGQUESTION": "Frage beim Beenden des Chats",
     "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 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",
+    "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",
     "DELETE_INTERACTION": "Interaktion löschen",
     "FONTSIZE": "Schriftgröße",
     "TEXTCOLOR": "Textfarbe",
     "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
-    "NOTIFICATION": "Benachrichtigung",
+    "NOTIFICATION": "Benachrichtigung für Agenten",
     "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Klingeln",
+    "NOTIFICATIONSOUND": "Sound abspielen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "HIDEWHENOFFLINE": "Ausblenden, wenn offline",
     "INSERT_MESSAGE_HERE": "Nachricht hier eingeben",
-    "AGENTALIAS": "Agent Alias",
+    "AGENTALIAS": "Agenten-Alias",
     "AGENTFULLNAME": "Vollständiger Name des Agenten",
-    "AGENTIDENTIFIER": "Identifikator",
-    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Mitarbeiter",
-    "ALIGNMENT": "Ausrichtung",
-    "BOTTOM_RIGHT": "Unten rechts",
-    "LEFT": "Links",
-    "RIGHT": "Richtig",
+    "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",
     "VERTICALALIGNMENT": "Vertikale Ausrichtung",
     "POSITION": "Position",
     "VERTICALPOSITION": "Vertikale Position",
-    "SNIPPETSWIPEOUT": "Snippet ausschieben",
-    "ALTERNATE": "Wechseln",
+    "SNIPPETSWIPEOUT": "Widget ausklappen",
+    "ALTERNATE": "Abwechselnd",
     "CENTERED": "Zentriert",
     "CUSTOMERAVATAR": "Kunden-Avatar",
     "DEFAULTTITLE": "Standardtitel",
     "AGENTADD_CHATWEBSITE": "Agenten zur Chat-Website hinzufügen",
     "BACKGROUNDCOLOR": "Hintergrundfarbe",
     "MESSAGEFONTSIZE": "Schriftgröße der Nachricht",
-    "AGENTTRANSFER": "Agententransfer",
-    "AGENTTRANSFERTIMEOUT": "Agententransfer-Timeout",
-    "DIALOGFLOW": "Dialogflow",
+    "AGENTTRANSFER": "Transfer an Agenten erlauben",
+    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
+    "DIALOGFLOW": "Google Dialogflow",
     "EDIT_DIALOGFLOW": "Dialogflow bearbeiten",
     "LANGUAGE": "Sprache",
-    "QUEUETRANSFER": "Transfer in Warteschlange",
-    "QUEUETRANSFERTIMEOUT": "Timeout bei der Warteschlangenübertragung",
-    "SYSTEMALIAS": "Systemalias",
+    "QUEUETRANSFER": "Transfer in Warteschlange erlauben",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
+    "SYSTEMALIAS": "System-Alias",
     "SYSTEMAVATAR": "System-Avatar",
     "TRANSFER": "Transfer",
     "WELCOMEMESSAGE": "Willkommensnachricht",
-    "ENABLECUSTOMERCHECKMARKS": "Bestätigung Nachricht erhalten/gelesen",
+    "ENABLECUSTOMERCHECKMARKS": "Bestätigung Nachricht erhalten/gelesen anzeigen",
     "CANNEDANSWERS": "Textvorlagen",
-    "CHATCANNEDANSWERS": "Textvorlagen",
+    "CHATCANNEDANSWERS": "Chat-Textbausteine",
     "DOWNLOAD_INTERACTION": "Herunterladen",
     "LOGIN_TIME": "Zeit angemeldet",
     "PAUSE_TIME": "Zeit in Pause",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
-    "BOTNAME": "Botname",
+    "BOTNAME": "Name des BOTs",
     "EDIT_AMAZONLEX": "Amazon Lex bearbeiten",
     "LEXREGION": "Region",
     "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
     "TEAMS_ASSOCIATION": "Teamzuweisung",
     "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID, wenn Qualifizierung erforderlich",
-    "ENABLESENDBUTTON": "Senden-Button aktivieren",
-    "FEEDBACKTITLE": "Feedback-Titel",
+    "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",
     "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": "Kunden-E-Mail",
-    "DIALOGFLOWV2": "Dialogflow V2",
+    "CLIENTEMAIL": "E-Mail des Kunden",
+    "DIALOGFLOWV2": "Google Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
     "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
-    "EMAIL_ACCOUNT": "Email-Konto",
-    "OPEN_NEW_INTERACTION": "Neue Interaktion öffnen",
+    "EMAIL_ACCOUNT": "E-Mail Konto",
+    "OPEN_NEW_INTERACTION": "Offline-Nachrichten per E-Mail innerhalb des Systems verwalten",
     "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": "Bewegungstitel",
-    "MOTIONURL": "Bewegungs-URL",
-    "MOTIONURLONANSWER": "Bewegungs-URL bei Antwort",
-    "MOTIONURLONRING": "Bewegungs-URL auf Ring",
+    "MOTIONTITLE": "Motion-Titel",
+    "MOTIONURL": "Motion-URL",
+    "MOTIONURLONANSWER": "Motion-URLL bei Antwort",
+    "MOTIONURLONRING": "Motion-URL bei Klingeln",
     "SERVICEID": "Service-ID",
-    "SERVICENAME": "Dienstname",
+    "SERVICENAME": "Servicename",
     "TVOX": "TVox",
     "TVOXIP": "TVox IP-Adresse",
     "TVOXLOGINURL": "TVox-Login-REST-URL",
index d094697..20f6e0a 100644 (file)
@@ -3,15 +3,15 @@
     "AMAZONLEX": "Amazon Lex",
     "TEXT": "Tekst",
     "TIMES": "Aantal keren per interactie",
-    "EDIT_AUTOREPLY": "Edit automatisch antwoord",
-    "AUTOREPLY": "Automatisch antwoord",
-    "NEW_CHATDISPOSITION": "Nieuwe chat dispositie",
-    "ENABLECUSTOMERATTACHMENT": "Kan een klant voorzetstukken",
+    "EDIT_AUTOREPLY": "Automatisch Antwoord Bewerken",
+    "AUTOREPLY": "Automatisch Antwoord",
+    "NEW_CHATDISPOSITION": "Nieuwe Chat Dispositie",
+    "ENABLECUSTOMERATTACHMENT": "Klantbijlage Inschakelen",
     "OFFLINE_CHAT_BUTTON": "'Offline Chat' knop",
-    "OFFLINESTATUS": "Status offline",
+    "OFFLINESTATUS": "Status Offline",
     "NAME": "Naam",
     "CHATQUEUES": "Chatwachtrijen",
-    "SEARCH_FOR_ANYONE": "Zoeken voor iedereen",
+    "SEARCH_FOR_ANYONE": "Zoeken",
     "STRATEGY": "Strategie",
     "AGENT_TIMEOUT": "Time-out agent",
     "DESCRIPTION": "Beschrijving",
     "ALIAS": "Alias",
     "VARIABLE": "Variabele",
     "INTERVAL": "Interval",
-    "EDIT_CLOSE": "Edit dicht",
+    "EDIT_CLOSE": "Bewerken Sluiten",
     "TIMEZONE": "Tijdzone",
     "MESSAGE": "Bericht",
     "ADVANCED": "Geavanceerd",
-    "FORWARDTRANSCRIPT": "Vooruit transcript",
-    "FORWARDTRANSCRIPTMESSAGE": "Vooruit Transcript bericht",
-    "SKIPMESSAGEBUTTON": "Bericht overslaan knop",
-    "EDIT_MESSAGE": "Bericht wijzigen",
-    "CONDITION_AGREEMENT": "Voorwaarde akkoord",
+    "FORWARDTRANSCRIPT": "Transcriptie doorsturen",
+    "FORWARDTRANSCRIPTMESSAGE": "Transcriptie bericht doorsturen",
+    "SKIPMESSAGEBUTTON": "Bericht Overslaan Knop",
+    "EDIT_MESSAGE": "Bericht Bewerken",
+    "CONDITION_AGREEMENT": "Akkoord met de voorwaarden",
     "NONE": "Geen",
     "PRIORITY": "Prioriteit",
-    "ONLINESTATUS": "Online status",
+    "ONLINESTATUS": "Online Status",
     "UNMANAGEDSTATUS": "Onbeheerde Status",
-    "AUTOCLOSE": "Autoclose inschakelen",
-    "ENABLEUNMANAGEDNOTE": "Om onbeheerde bericht",
+    "AUTOCLOSE": "Automatisch Sluiten Inschakelen",
+    "ENABLEUNMANAGEDNOTE": "Onbeheerd Bericht Inschakelen",
     "UNMANAGEDMESSAGE": "Bericht",
     "SKIPUNMANAGED": "Bericht overslaan",
     "SENDUNMANAGED": "Bericht verzenden",
     "WEBSITESCRIPT": "Website Script",
     "DELETE_OFFLINEMESSAGE": "Verwijderen",
     "OFFLINEMESSAGES": "Offline berichten",
-    "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",
+    "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",
     "ENABLEFEEDBACK": "Feedback mogelijk",
-    "RATINGTYPE": "Waardering Type",
+    "RATINGTYPE": "Type Rating",
     "CLOSINGMESSAGE": "Bericht sluiten",
-    "CLOSINGMESSAGEBUTTON": "Sluiten Berichtentoets",
-    "RATINGSTARSNUMBER": "Rating Stars nummer",
-    "EDIT_GOTOIF": "GotoIf bewerken",
+    "CLOSINGMESSAGEBUTTON": "Knop om het bericht te sluiten",
+    "RATINGSTARSNUMBER": "Rating",
+    "EDIT_GOTOIF": "GotoIf Bewerken",
     "CONDITION": "Voorwaarde",
-    "TRUEPRIORITY": "Echte prioriteit",
-    "FALSEPRIORITY": "False prioriteit",
+    "TRUEPRIORITY": "Prioriteit",
+    "FALSEPRIORITY": "Geen prioriteit",
     "VALUE": "Waarde",
     "WEBSITEALIAS": "Website Alias",
     "ERRORS": {
-      "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}}",
+      "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",
       "VALUE_REQUIRED": "Verplicht veld",
-      "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}}",
+      "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",
       "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 moet een maximale lengte hebben die gelijk is aan {{max}}",
+      "CUSTOMERALIAS_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
       "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 moet een maximale lengte hebben die gelijk is aan {{max}}",
+      "SYSTEMALIAS_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
       "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": "Edit Pro-actief optreden",
-    "DELETE_CHATPROACTIVEACTION": "Verwijder proactief optreden",
-    "ADD_CHATPROACTIVEACTION": "Voeg proactief optreden",
+    "CHATPROACTIVEACTIONS": "Proactieve Acties",
+    "NEW_CHATPROACTIVEACTION": "Nieuwe Proactieve Actie",
+    "EDIT_CHATPROACTIVEACTION": "Proactieve Actie Bewerken",
+    "DELETE_CHATPROACTIVEACTION": "Proactieve Actie Verwijderen",
+    "ADD_CHATPROACTIVEACTION": "Proactieve Actie Toevoegen",
     "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": "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",
+    "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",
     "SETTINGS": "Instellingen",
     "SAVE": "Opslaan",
     "SCRIPT": "Script",
     "CHATWEBSITES": "Chat websites",
     "MOTIONADDRESS": "Motion adres",
     "MOTIONPROXY": "Proxy of Motion domein",
-    "ADD_CHATWEBSITE": "Voeg Chat Website",
-    "EDIT_CHATWEBSITE": "Edit Chat Website",
-    "DELETE_CHATWEBSITE": "Verwijder Chat Website",
+    "ADD_CHATWEBSITE": "Chat Website Toevoegen",
+    "EDIT_CHATWEBSITE": "Chat Website Bewerken",
+    "DELETE_CHATWEBSITE": "Chat Website verwijderen",
     "LIST": "Lijst",
     "SNIPPET": "Snapshot",
     "FORMS": "Formulieren",
     "MAINCOLOR": "Hoofdkleur",
     "FOCUSCOLOR": "Focuskleur",
     "BUTTONCOLOR": "Kleur",
-    "HEADERSHAPE": "Vorm van het maaibord",
+    "HEADERSHAPE": "Koptekst opmaak",
     "ANIMATION": "Animatie",
     "DEFAULT": "Standaard",
     "WHITELABEL": "White Label",
     "LOGO": "Logo",
-    "DOWNLOADTRANSCRIPT": "Download transcript",
-    "ENQUIRY_ENABLE": "Onderzoek inschakelen",
-    "ENQUIRY_FORWARDING": "Onderzoek doorsturen",
-    "ENQUIRY_FORWARDING_ADDRESS": "Onderzoek Doorstuuradres",
+    "DOWNLOADTRANSCRIPT": "Transcriptie downloaden",
+    "ENQUIRY_ENABLE": "Navragen inschakelen",
+    "ENQUIRY_FORWARDING": "Navraag doorsturen",
+    "ENQUIRY_FORWARDING_ADDRESS": "Doorstuuradres voor navraag",
     "LABELS": "Labels",
-    "HEADER_ONLINE": "Online voorzetstuk",
+    "HEADER_ONLINE": "Online koptekst",
     "ONLINE_MESSAGE": "Online bericht",
-    "NAME_TITLE": "Naam Input Label",
-    "USERNAME_PLACEHOLDER": "Gebruikersnaam Input Placeholder",
-    "EMAIL_TITLE": "E-mail input label",
-    "EMAIL_PLACEHOLDER": "E-mail Input Placeholder",
+    "NAME_TITLE": "Naam Label",
+    "USERNAME_PLACEHOLDER": "Gebruikersnaam Placeholder",
+    "EMAIL_TITLE": "E-mail label",
+    "EMAIL_PLACEHOLDER": "E-mail Placeholder",
     "START_CHAT_BUTTON": "'Start Chat' knop",
-    "AGENTS_BUSY": "Drukbezette Agents bericht",
-    "HEADER_OFFLINE": "Offline voorzetstuk",
+    "AGENTS_BUSY": "Agent zijn drukbezet bericht",
+    "HEADER_OFFLINE": "Offline koptekst",
     "OFFLINE_MESSAGE": "Offline berichten",
     "MESSAGE_TITLE": "Bericht Label",
-    "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",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Navraag bericht Placeholder",
+    "ENQUIRY_BUTTON": "Navraag knoptekst",
+    "RATING_MESSAGE": "Rating Bericht",
+    "RATING_SEND": "Rating Verzendknop Tekst",
+    "RATING_SKIP": "Rating Overslaan Knoptekst",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
     "PROACTIVE": "Proactief",
     "ACCEPT": "Accepteren",
-    "ACCEPTMETHOD": "Accepteren methode",
+    "ACCEPTMETHOD": "Methode accepteren",
     "ACCEPTURL": "URL accepteren",
     "REJECT": "Afwijzen",
     "REJECTMETHOD": "Methode afwijzen",
     "REJECTURL": "URL afwijzen",
     "CLOSE": "Dicht",
-    "CLOSEMETHOD": "Sluit methode",
-    "CLOSEURL": "Sluit URL",
+    "CLOSEMETHOD": "Methode sluiten",
+    "CLOSEURL": "URL sluiten",
     "EMBEDDING": "Insluiten",
     "GENERAL": "Algemeen",
     "SELECTED": "Geselecteerd",
-    "SELECT_ALL": "Alles selecteren",
-    "SELECT_NONE": "Selecteer None (Geen).",
+    "SELECT_ALL": "Selecteer Alles",
+    "SELECT_NONE": "Selecteer Geen",
     "BACK": "Terug",
     "HELP": {
-      "MAPKEY": "De volgende motie Contact Manager veld:",
-      "FROMKEY": "Wordt toegewezen die u in uw ontwerpresolutie Chat fragment zoals:",
+      "MAPKEY": "Het volgende Motion Contact Manager veld:",
+      "FROMKEY": "zal worden toegewezen aan uw Motion Chat snippet als:",
       "TOKEN": "Website Motion Token",
       "COPYSCRIPTTOCLIPBOARD": "Kopieer en plak dit script in uw website",
-      "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",
+      "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",
       "NAME": "Alleen cijfers, letters en speciale tekens (_) worden ondersteund",
-      "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",
+      "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",
       "TIMEZONE": "Selecteer één optie in de lijst (standaard=local timezone)",
-      "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",
+      "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",
       "INTERVAL": "Selecteer één optie in de lijst",
-      "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",
+      "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",
       "VERTICALPOSITION": "Vertegenwoordigt de afstand in percentage vanaf de bovenkant",
-      "WELCOMEMESSAGE": "Laat leeg als u geen welkomstbericht wilt verzenden",
-      "MANDATORYDISPOSITION": "Verplichte regeling",
+      "WELCOMEMESSAGE": "Leeglaten als u geen welkomstbericht wilt verzenden",
+      "MANDATORYDISPOSITION": "Verplichte Dispositie",
       "MANDATORYDISPOSITIONPAUSEID": "Pauze om te gebruiken als verplichte dispositie is ingeschakeld"
     },
     "ADDRESS": "Adres",
-    "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",
+    "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",
     "DELETE": "Verwijderen",
-    "EDIT_CHATDISPOSITION": "Edit Chat dispositie",
-    "DELETE_CHATDISPOSITION": "Verwijder Chat dispositie",
+    "EDIT_CHATDISPOSITION": "Chat dispositie Bewerken",
+    "DELETE_CHATDISPOSITION": "Chat dispositie Verwijderen",
     "CHAT": "Chat",
     "ID": "Id",
-    "NEW_CHATQUEUE": "Nieuwe wachtrij voor chatten",
+    "NEW_CHATQUEUE": "Nieuwe chat wachtrij",
     "NEW_CHATWEBSITE": "Nieuwe Chat Website",
     "ROUNDED": "Afgerond",
     "SQUARED": "Kwadraat",
     "SELECT_STATUS": "Selecteer een status",
     "FILTER": "Filter",
     "FILTERS": "Filters",
-    "TEAMADD_CHATQUEUE": "Toevoegen aan wachtrij voor chatten",
-    "AGENTADD_CHATQUEUE": "Voeg Agent naar wachtrij voor chatten",
+    "TEAMADD_CHATQUEUE": "Team aan chat wachtrij Toevoegen",
+    "AGENTADD_CHATQUEUE": "Agent aan chat wachtrij Toevoegen",
     "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": "Kies een website",
+    "SELECTED_WEBSITE": "Selecteer een website",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Gotop bewerken",
-    "SELECT_WEBSITE": "Kies een website",
+    "EDIT_GOTOP": "Gotop Bewerken",
+    "SELECT_WEBSITE": "Selecteer een website",
     "INFO": "Info",
     "OFFLINEMESSAGES_CHATWEBSITE": "Ga naar offline-meldingen",
-    "WAITINGTITLE": "Waiting titel",
+    "WAITINGTITLE": "Wachtmelding titel",
     "WAITINGMESSAGE": "Wachtmelding",
-    "RATING": "Waardering",
-    "NO_RATINGVALUE": "Geen waardering",
-    "AGENTSADD_QUEUE": "Voeg Agent naar wachtrij voor chatten",
+    "RATING": "Rating",
+    "NO_RATINGVALUE": "Geen Rating",
+    "AGENTSADD_QUEUE": "Agent aan chat wachtrij toevoegen",
     "QUEUES": "Wachtrijen",
     "LOGGED_IN": "Aangemeld",
     "PAUSED": "Gepauzeerd",
     "PHONE_STATUS": "Telefoonstatus",
     "LOGOUT": "Afmelden",
     "UNPAUSE": "Einde pauze",
-    "AGENTADD_QUEUE": "Voeg Agent naar wachtrij voor chatten",
+    "AGENTADD_QUEUE": "Agent toevoegen aan chat wachtrij",
     "DEFAULT_PAUSE": "Standaardinstellingen voor pauze",
     "UNKNOWN": "Onbekend",
-    "UNREGISTERED": "Unregistered",
+    "UNREGISTERED": "Niet geregistreerd",
     "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": "Gedeeltelijk onderbreken",
+    "PARTIALPAUSE": "Tijdelijk onderbreken",
     "BUSY": "Bezet",
     "TIMER": "Timer",
-    "IDLE": "Stationair toerental",
+    "IDLE": "Idle",
     "CAPACITY": "Capaciteit",
     "TAGS": "Tags",
-    "SHOWAGENTAVATAR": "Persoonlijke agent avatar",
+    "SHOWAGENTAVATAR": "Agent Avatar Weergeven",
     "AGENTAVATAR": "Agent Avatar",
     "SPYINTERACTION": "Spy",
     "INTERACTIONS_CHATWEBSITE": "Ga naar interacties",
-    "REFRESH_INTERACTIONS": "Interacties vernieuwen",
-    "CLOSINGQUESTION": "Sluiten vraag",
+    "REFRESH_INTERACTIONS": "Interacties Vernieuwen",
+    "CLOSINGQUESTION": "Vraag Sluiten",
     "WEBSCRIPT": "Web Script",
-    "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",
+    "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",
     "FORMSUBMITFAILUREMESSAGE": "Formulier verzenden mislukt bericht",
-    "PLACEHOLDERMESSAGE": "Plaatsaanduiding voor berichten",
-    "NOTETITLE": "De titel van Note",
-    "DELETE_INTERACTION": "Interactie verwijderen",
+    "PLACEHOLDERMESSAGE": "Placeholder bericht",
+    "NOTETITLE": "Notitie Titel",
+    "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": "opstelling",
+    "ALIGNMENT": "Uitlijning",
     "BOTTOM_RIGHT": "Rechts onder",
     "LEFT": "Links",
     "RIGHT": "Rechts",
     "CENTERED": "centered",
     "CUSTOMERAVATAR": "Avatar klant",
     "DEFAULTTITLE": "Standaard titel",
-    "MESSAGESALIGNMENT": "Berichten Afstemming",
-    "SHOWCUSTOMERAVATAR": "Toon klantavatar",
+    "MESSAGESALIGNMENT": "Bericht Uitlijning",
+    "SHOWCUSTOMERAVATAR": "Klantavatar Weergeven",
     "EDIT_TAG": "Bewerk label",
     "TAG": "Label",
     "CUSTOMERALIAS": "Klantalias",
-    "AGENTADD_CHATWEBSITE": "Agent toevoegen aan chatwebsite",
+    "AGENTADD_CHATWEBSITE": "Agent aan chatwebsite Toevoegen",
     "BACKGROUNDCOLOR": "Achtergrond kleur",
     "MESSAGEFONTSIZE": "Grootte van berichtlettertype",
     "AGENTTRANSFER": "Agent Transfer",
     "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
     "DIALOGFLOW": "Dialogflow",
-    "EDIT_DIALOGFLOW": "Bewerk Dialogflow",
+    "EDIT_DIALOGFLOW": "Dialogflow Bewerken",
     "LANGUAGE": "Taal",
-    "QUEUETRANSFER": "Wachtrijoverdracht",
-    "QUEUETRANSFERTIMEOUT": "Wachtrij Transfer Timeout",
+    "QUEUETRANSFER": "Wachtrij Overdracht",
+    "QUEUETRANSFERTIMEOUT": "Wachtrij Overdracht Timeout",
     "SYSTEMALIAS": "Systeemalias",
     "SYSTEMAVATAR": "Systeemavatar",
     "TRANSFER": "Overdracht",
-    "WELCOMEMESSAGE": "Welkoms bericht",
-    "ENABLECUSTOMERCHECKMARKS": "Schakel door klant geleverde / gelezen meldingen in",
-    "CANNEDANSWERS": "Ingeblikte antwoorden",
-    "CHATCANNEDANSWERS": "Ingeblikte antwoorden",
-    "DOWNLOAD_INTERACTION": "Download",
+    "WELCOMEMESSAGE": "Welkomstbericht",
+    "ENABLECUSTOMERCHECKMARKS": "Afgeleverd/gelezen door klant melding inschakelen",
+    "CANNEDANSWERS": "Standaard Antwoorden",
+    "CHATCANNEDANSWERS": "Standaard Antwoorden",
+    "DOWNLOAD_INTERACTION": "Interactie Downloaden",
     "LOGIN_TIME": "Aanmeldtijd",
     "PAUSE_TIME": "Pauzetijd",
     "ACCESSKEYID": "Toegang Key ID",
     "BOTNAME": "Botnaam",
     "EDIT_AMAZONLEX": "Bewerk Amazon Lex",
     "LEXREGION": "Regio",
-    "SECRETACCESSKEY": "Geheime toegangssleutel",
+    "SECRETACCESSKEY": "Geheime Sleutel",
     "TEAMS_ASSOCIATION": "Teams Association",
     "MANDATORYDISPOSITION": "Verplichte regeling",
     "MANDATORYDISPOSITIONPAUSEID": "Pauze om te gebruiken als verplichte dispositie is ingeschakeld",
-    "ENABLESENDBUTTON": "Schakel de verzendknop in",
+    "ENABLESENDBUTTON": "Verzendknop Inschakelen",
     "FEEDBACKTITLE": "Feedbacktitel",
     "TOOLTIP_SCREENRECORDING_OFF": "Schermopname beschikbaar",
     "TOOLTIP_SCREENRECORDING_ON": "Schermopname bezig",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download zonder bijlagen",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download met bijlagen",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Zonder bijlagen Downloaden",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Met bijlagen Downloaden",
     "LASTMESSAGE": "Laatste bericht",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api-sleutel",
     "VIDEO": "Video",
     "CLIENTEMAIL": "E-mail van de klant",
     "DIALOGFLOWV2": "Dialogflow V2",
-    "EDIT_DIALOGFLOWV2": "Bewerk Dialogflow V2",
-    "PRIVATEKEY": "Prive sleutel",
+    "EDIT_DIALOGFLOWV2": "Dialogflow V2 Bewerken",
+    "PRIVATEKEY": "Privé-sleutel",
     "PROJECTID": "Project-ID",
     "EMAIL_ACCOUNT": "Email account",
-    "OPEN_NEW_INTERACTION": "Open nieuwe interactie",
+    "OPEN_NEW_INTERACTION": "Nieuwe interactie Openen",
     "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": "Bewegingstitel",
+    "EDIT_TVOX": "TVox Bewerken",
+    "MOTIONTITLE": "Titel",
     "MOTIONURL": "Bewegings-URL",
     "MOTIONURLONANSWER": "Bewegings-URL bij antwoord",
     "MOTIONURLONRING": "Bewegings-URL op bel",
index ffaddae..8a05182 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": "Disponível",
+    "IDLE": "Ocioso",
     "CAPACITY": "Capacidade",
     "AGENTSADD_QUEUE": "Adicionar agente à fila de chat",
     "QUEUES": "Filas",
     "ALIAS": "Alias",
     "VARIABLE": "Variável",
     "INTERVAL": "Intervalo",
-    "EDIT_CLOSE": "Editar encerramento",
+    "EDIT_CLOSE": "Editar Fechar",
     "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 offline",
+    "OFFLINEMESSAGES": "Mensagens Offline",
+    "FORWARD_OFFLINE": "Encaminhar off-line",
     "SHOW_OFFLINEMESSAGE": "Mostrar",
     "FORWARD_OFFLINE_ADDRESS": "Endereço offline de encaminhamento",
-    "CLOSINGFORM": "Formulário de encerramento",
-    "ENABLERATING": "Ativar classificação",
+    "CLOSINGFORM": "Formulário de Fechamento",
+    "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": "Campo Contact Manager",
+    "CM_FIELD": "Contact Manager Field",
     "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 offline disponível",
-    "MOUSEOVER": "Mouse over",
+    "NO_OFFLINEMESSAGE_AVAILABLE": "Nenhuma mensagem off-line 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 botão",
+    "BUTTONCOLOR": "Cor do botao",
     "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 online",
-    "ONLINE_MESSAGE": "Mensagem online",
+    "HEADER_ONLINE": "Cabeçalho on-line",
+    "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": "Título de Mensagem",
+    "AGENTS_BUSY": "Mensagem de Agentes Ocupados",
+    "HEADER_OFFLINE": "Cabeçalho Offline",
+    "OFFLINE_MESSAGE": "Mensagem Offline",
+    "MESSAGE_TITLE": "Ró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 método",
+    "REJECTMETHOD": "Rejeitar Metodo",
     "REJECTURL": "Rejeitar URL",
     "CLOSE": "Fechar",
-    "CLOSEMETHOD": "Fechar método",
+    "CLOSEMETHOD": "Fechar Metodo",
     "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 Gerenciar Contatos",
+      "LIST": "Lista do Gerenciador de contatos usada para associar os 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": "Página",
+    "SELECTED_TEAMS": "Equipes Selecionadas",
+    "PAGE": "Pagina",
     "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 Motion",
-    "MOTIONURL": "URL Motion",
-    "MOTIONURLONANSWER": "Motion URL answer",
-    "MOTIONURLONRING": "Motion URL ring",
+    "MOTIONTITLE": "Título de Movimento",
+    "MOTIONURL": "URL de movimento",
+    "MOTIONURLONANSWER": "URL de movimento na resposta",
+    "MOTIONURLONRING": "URL de movimento no anel",
     "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 dc22557..c3d27cc 100644 (file)
@@ -1,6 +1,6 @@
 {
   "CONTACTMANAGER": {
-    "VOICEQUEUEID": "ID Warteschlange für Sprachanrufe",
+    "VOICEQUEUEID": "ID Anruf-Warteschlange",
     "CAMPAIGNID": "Kampagnen-ID",
     "STATE": "Status",
     "NAME": "Name",
@@ -9,36 +9,36 @@
     "STATUS": "Status",
     "STARTTIME": "Startzeit",
     "ENDTIME": "Endzeit",
-    "MOTION_BULL": "Motion Bull",
-    "HOPPER": "Hopper",
-    "FINAL": "Hopper final",
-    "HISTORY": "Hopper historisch",
+    "MOTION_BULL": "Outbound-Dialer",
+    "HOPPER": "Kontakte in Ausführung",
+    "FINAL": "Kontakte abgeschlossen",
+    "HISTORY": "Kontaktverlauf",
     "SCHEDULEDAT": "Geplant am",
     "SEARCH_FOR_ANYONE": "Suche",
     "EDIT_LIST": "Liste bearbeiten",
-    "EDIT_HOPPER": "Hopper bearbeiten",
+    "EDIT_HOPPER": "Kontakte in Ausführung bearbeiten",
     "DELETE_LIST": "Liste löschen",
-    "DELETE_HOPPER": "Hopper löschen",
-    "RELOAD": "Neu laden",
-    "NO_COMPANIES": "Kein Unternehmen",
+    "DELETE_HOPPER": "Kontakte in Ausführung löschen",
+    "RELOAD": "Neu Laden",
+    "NO_COMPANIES": "Keine Unternehmen vorhanden",
     "NO_AVAILABLE_ITEMS": "Keine Einträge verfügbar",
     "ADD": "Hinzufügen",
     "ERRORS": {
-      "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",
+      "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",
       "PHONEBAR_API": "Statusprüfung für die MotionBar und des Remote-Switches für den Agenten",
-      "ACTIONTYPE_REQUIRED": "Pflichtfeld",
-      "CLICKTOACTION_REQUIRED": "Pflichtfeld"
+      "ACTIONTYPE_REQUIRED": "Aktionstyp erforderlich",
+      "CLICKTOACTION_REQUIRED": "Aktion bei Klick erforderlich"
     },
     "DESCRIPTION": "Beschreibung",
     "DISPOSITION": "Qualifizierung",
     "DISPOSITIONS": "Qualifizierungen",
-    "VOICEDISPOSITIONS": "Anrufqualifizierungen",
-    "NEW_VOICEDISPOSITION": "Neue Anrufqualifizierung",
+    "VOICEDISPOSITIONS": "Anruf-Qualifizierungen",
+    "NEW_VOICEDISPOSITION": "Neue Qualifizierung",
     "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": "Detail",
-    "PERSONAL_INFO": "Persönliche Infos",
+    "DETAIL": "Details",
+    "PERSONAL_INFO": "Persönliche Informationen",
     "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",
+    "NO_TAG": "Keine Tags vorhanden",
     "ALIAS": "Alias",
     "TYPE": "Typ",
     "VALUE": "Wert",
     "POSTAL_CODE": "Postleitzahl",
     "SHIPMENTADDRESS": "Lieferadresse",
     "COPY_CONTACT": "Kontakt kopieren",
-    "GOTOCONTACTS_LIST": "Kontakte anzeigen",
+    "GOTOCONTACTS_LIST": "Zur Kontaktliste gehen",
     "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",
+    "DUPLICATES": "Duplikate prüfen",
     "UPLOAD_CSV": "Hochladen von CSV-Datei",
     "TAG": "Tag",
     "UPLOAD": "Hochladen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
     "OF": "von",
-    "SOCIAL": "Social",
+    "SOCIAL": "Social Media",
     "ROW": "Reihe",
     "EXPORT_ERRORS": "Fehler-Log exportieren",
     "UPLOAD_COMPLETED": "Hochladen abgeschlossen",
-    "STOP": "Stopp",
+    "STOP": "Anhalten",
     "SELECT_FILE": "Datei auswählen",
     "IMPORT_CONTACTS": "Kontakte importieren",
-    "MOTIONDIALER": "Motion Bull",
+    "MOTIONDIALER": "Outbound-Dialer",
     "PREFIX": "Vorwahl wählen",
     "PRIORITY": "Priorität",
     "USERID": "Agent-ID abrufen",
index 6a8b39d..caf032b 100644 (file)
     "ENDTIME": "Eindtijd",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Trechter",
-    "FINAL": "Hopper def.",
-    "HISTORY": "Hopper Geschiedenis",
+    "FINAL": "Trechter def.",
+    "HISTORY": "Trechter Geschiedenis",
     "SCHEDULEDAT": "Gepland op",
-    "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",
+    "SEARCH_FOR_ANYONE": "Zoeken",
+    "EDIT_LIST": "Lijst bewerken Bewerken",
+    "EDIT_HOPPER": "Trechter",
+    "DELETE_LIST": "Lijst Verwijderen",
+    "DELETE_HOPPER": "Trechter Verwijderen",
+    "RELOAD": "Herladen",
     "NO_COMPANIES": "Geen enkele onderneming",
     "NO_AVAILABLE_ITEMS": "Geen beschikbare items",
     "ADD": "Toevoegen",
     "ERRORS": {
-      "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",
+      "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",
       "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": "Afvoeren",
-    "DISPOSITIONS": "Dispositions",
-    "VOICEDISPOSITIONS": "Voice dispositieven",
-    "NEW_VOICEDISPOSITION": "Nieuw spraakbericht dispositie",
-    "CUSTOM_FIELDS": "Aangepaste velden",
-    "ADD_LIST": "Lijst toevoegen",
+    "DISPOSITION": "Dispositie",
+    "DISPOSITIONS": "Disposities",
+    "VOICEDISPOSITIONS": "Spraak disposities",
+    "NEW_VOICEDISPOSITION": "Nieuw spraak dispositie",
+    "CUSTOM_FIELDS": "Aangepaste Velden",
+    "ADD_LIST": "Lijst Toevoegen",
     "BACK": "Terug",
     "SELECTED": "Geselecteerd",
-    "SELECT_ALL": "Alles selecteren",
-    "SELECT_NONE": "Selecteer None (Geen).",
+    "SELECT_ALL": "Selecteer Alles",
+    "SELECT_NONE": "Selecteer Geen",
     "COMPANIES": "Bedrijven",
-    "EDIT_COMPANY": "Bedrijf wijzigen",
-    "DELETE_COMPANY": "Bedrijf verwijderen",
+    "EDIT_COMPANY": "Bedrijf Bewerken",
+    "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": "Bewerk aangepaste veld",
-    "DELETE_CUSTOMFIELD": "Verwijder aangepaste veld",
+    "ADD_CUSTOMFIELD": "Aangepast veld Toevoegen",
+    "EDIT_CUSTOMFIELD": "Aangepaste veld Bewerken",
+    "DELETE_CUSTOMFIELD": "Aangepaste veld Bewerken",
     "NEW_COMPANY": "Nieuwe onderneming",
     "NEW_CONTACT": "Nieuwe contactpersoon",
     "NEW_TAG": "Nieuwe Tag",
-    "UPLOAD_CONTACTS": "Upload Contact",
-    "FINISH": "Afwerking",
+    "UPLOAD_CONTACTS": "Contact uploadeden",
+    "FINISH": "Voltooid",
     "SUCCESS": "Succes",
     "FAILURE": "Defect",
     "ALL_CONTACTS": "Alle contactpersonen",
     "NEW_CUSTOMFIELD": "Nieuwe aangepaste veld",
-    "NO_VOICEDISPOSITION_AVAILABLE": "Geen spraakmemo dispositieven beschikbaar",
-    "ADD_VOICEDISPOSITION": "Voeg spraak dispositie",
-    "EDIT_VOICEDISPOSITION": "Edit Voice dispositie",
-    "DELETE_VOICEDISPOSITION": "Alle spraakberichten dispositie",
+    "NO_VOICEDISPOSITION_AVAILABLE": "Geen spraakmemo disposities beschikbaar",
+    "ADD_VOICEDISPOSITION": "Spraak dispositie Toevoegen",
+    "EDIT_VOICEDISPOSITION": "Spraak dispositie Bewerken",
+    "DELETE_VOICEDISPOSITION": "Spraak dispositie Verwijderen",
     "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": "Wereldwijde Aangepaste velden",
-    "NEW_GLOBALCUSTOMFIELD": "Nieuwe aangepaste velden",
-    "ADD_GLOBALCUSTOMFIELD": "Aangepast veld toevoegen",
-    "EDIT_GLOBALCUSTOMFIELD": "Bewerk aangepaste veld",
-    "DELETE_GLOBALCUSTOMFIELD": "Verwijder aangepaste veld",
+    "GLOBALCUSTOMFIELDS": "Aangepaste Velden",
+    "NEW_GLOBALCUSTOMFIELD": "Nieuw aangepast veld",
+    "ADD_GLOBALCUSTOMFIELD": "Aangepast veld Toevoegen",
+    "EDIT_GLOBALCUSTOMFIELD": "Aangepaste veld Bewerken",
+    "DELETE_GLOBALCUSTOMFIELD": "Aangepaste veld Verwijderen",
     "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 de afstandsbedieningsschakelaar 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 het bedienen op afstand 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": "creëren",
+    "CREATE": "Aanmaken",
     "EUROPE": "Europa",
     "EXPIREDAY": "Vervaldagen",
     "FLATDISCOUNT": "Bedrijfskorting",
index c7f8a2f..b84d6b8 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 único",
+    "UNIQUEID": "ID unico",
     "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": "Disposição",
-    "DISPOSITIONS": "Disposições",
+    "DISPOSITION": "Descrição",
+    "DISPOSITIONS": "Descrição",
     "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": "Gerenciar contatos",
+    "CONTACTMANAGER": "Gerente de contatos",
     "ID": "Id",
     "SETTINGS": "Configurações",
     "GENERAL": "Geral",
-    "CUSTOMFIELDS": "Campos personalizados",
+    "CUSTOMFIELDS": "Os 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": "Novo campo personalizado global",
-    "ADD_GLOBALCUSTOMFIELD": "Adicionar campo personalizado global",
-    "EDIT_GLOBALCUSTOMFIELD": "Editar campo personalizado global",
-    "DELETE_GLOBALCUSTOMFIELD": "Excluir campo personalizado global",
+    "NEW_GLOBALCUSTOMFIELD": "Novos campos personalizados",
+    "ADD_GLOBALCUSTOMFIELD": "Adicionar campo personalizado",
+    "EDIT_GLOBALCUSTOMFIELD": "Editar campo personalizado",
+    "DELETE_GLOBALCUSTOMFIELD": "Excluir campo personalizado",
     "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 fatura",
-    "ISOCODE": "Código nacional ISO",
+    "INVOICEARTICLE": "Artigos de Direito",
+    "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": "Código VAT / IVA",
+    "VATNUMBER_CF": "Codice Fiscale / IVA",
     "RECALLME": "Lembre-me",
     "ACTIONTYPE": "Tipo de acão",
     "CLICKTOACTION": "Clique para ação",
index b372a50..a5ead60 100644 (file)
     "LIMIT_TABS_REACHED": "تم بلوغ الحد الأقصى لعدد علامات التبويب المفتوحة",
     "LIST_NAME": "اسم القائمة",
     "PREVIEW_CALL": "معاينة المكالمة",
-    "SYSTEM_TIME": "وقت النظام",
-    "CONTACT_NAME": "اسم جهة الاتصال",
-    "CONTACT_PHONE": "هاتف الاتصال",
-    "RECALLME_CALL_REMINDER": "تذكرني مكالمة تذكير",
-    "SCHEDULED_TIME": "جدول زمني",
-    "UPCOMING_RECALLME_CALL": "القادمة تذكرني المكالمة"
+    "SYSTEM_TIME": "وقت النظام"
   }
 }
index e0a66cd..33b34ac 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",
-    "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"
+    "SYSTEM_TIME": "systémový čas"
   }
 }
index 20b67fd..7d615f3 100644 (file)
     "LIMIT_TABS_REACHED": "Det maksimale antal åbne faner er nået",
     "LIST_NAME": "Listenavn",
     "PREVIEW_CALL": "Forhåndsvisning af opkald",
-    "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"
+    "SYSTEM_TIME": "System tid"
   }
 }
index 6015548..5c3ca56 100644 (file)
     "SUBJECT": "Betreff",
     "REFERER": "Referer",
     "ACCOUNT": "Konto",
-    "WEBSITE": "Website",
+    "WEBSITE": "Webseite",
     "AGENT": "Agent",
     "CREATED_AT": "Erstellt am",
     "CLOSED_AT": "Geschlossen am",
     "DISPOSITION": "Qualifizierung",
     "CONTACT": "Kontakt",
     "INTERACTION": "Interaktion",
-    "BROWSER_NAME": "Browser Name",
-    "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Betriebssystem Name",
-    "OS_VERSION": "Betriebssystem Version",
+    "BROWSER_NAME": "Name Browser",
+    "BROWSER_VERSION": "Version Broweer",
+    "OS_NAME": "Name Betriebssystem",
+    "OS_VERSION": "Version Betriebssystem",
     "DEVICE_MODEL": "Gerätemodell",
     "DEVICE_VENDOR": "Gerätehersteller",
     "DEVICE_TYPE": "Gerätetyp",
-    "RECALLME": "Rückruf anfordern",
-    "DROP_RATE": "Abbruchrate Anrufe",
-    "DROPPED": "Abgebrochen",
-    "DROPPED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
-    "DETAIL": "Detail",
-    "MOTION_BULL": "Motion Bull",
+    "RECALLME": "Pers. Wiedervorlage",
+    "DROP_RATE": "Drop-Rate",
+    "DROPPED": "Abgebrochen (Drop)",
+    "DROPPED_TEXT": "Anzahl vom System aufgelegt",
+    "DETAIL": "Details",
+    "MOTION_BULL": "Outbound Dialer",
     "LIMITED": "Limitiert",
     "LIMITED_TEXT": "IVR-Kampagnen Anrufe getätigt/limitiert",
     "DASHBOARDS": "Dashboards",
     "RECORDINGS": "Aufzeichnungen",
-    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken Warteschlangen",
-    "ORIGINATED": "Gewählt",
-    "ORIGINATED_TEXT": "Anrufe aus der Warteschlange gewählt",
+    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
+    "ORIGINATED": "Angewählt",
+    "ORIGINATED_TEXT": "Anzahl angewählter Anrufe",
     "UPDATE": "Aktualisieren",
     "MORE": "Mehr",
-    "MOTIONDIALER": "Motion Dialer",
+    "MOTIONDIALER": "Outbound Dialer",
     "DISPOSE": "Qualifizieren",
     "QUEUES": "Warteschlangen",
     "DIALER_CALL": "Dialer-Anruf",
@@ -58,8 +58,8 @@
     "PERSONAL_INFO": "Persönliche Infos",
     "SOLD": "Verkauft",
     "SPECIAL": "Speziell",
-    "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "erneut Planen",
+    "BLACKLIST": "Schwarze Liste",
+    "RESCHEDULE": "Allg. Wiedervorlage",
     "FIRSTNAME": "Vorname",
     "LASTNAME": "Nachname",
     "MOBILE": "Mobilnummer",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "GENERAL": "Allgemein",
     "VOICE": "Sprachanrufe",
-    "TODAY_IVR_CAMPAIGNS_STATS": "IVR-Tagesstatistiken",
+    "TODAY_IVR_CAMPAIGNS_STATS": "Tagesstatistiken - IVR-Kampagnen",
     "TODAY_INBOUND_STATS": "Tagesstatistiken - eingehende Warteschlangen",
     "TODAY_OUTBOUND_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
-    "WAITING": "Anrufe in Warteschlange",
+    "WAITING": "Wartend",
     "TALKING": "Im Gespräch",
     "INBOUND_ANSWERED": "Angenommen eingehend",
     "OUTBOUND_ANSWERED": "Angenommen ausgehend",
     "ABANDONED": "Abgebrochen",
     "TOTAL_OFFERED": "Gesamt angeboten",
-    "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
+    "AVG_HOLD_TIME": "DS. Wartezeit",
     "INBOUND_ANSWER_RATE": "Antwortrate eingehend",
     "OUTBOUND_ANSWER_RATE": "Antwortrate ausgehend",
     "ABANDON_RATE": "Abbruchrate",
     "TOT_DURATION": "Gesamtdauer",
     "AVG_DURATION": "Durchschnittliche Dauer",
     "HELP": {
-      "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.",
+      "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\")",
       "AVG_HOLD_TIME": "Durchschnittliche Wartezeit einer Interaktion bis zur Beantwortung durch einen Agenten.",
-      "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",
+      "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",
       "MANDATORY_DISPOSITION_ENABLED": "Kontaktqualifizierung erforderlich",
-      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung der Suchbegriffe",
-      "LIKE_FILTER": "Suche nach variablen Übereinstimmungen der Suchbegriffe"
+      "EXACT_MATCH_FILTER": "Genaue Übereinstimmung der Suchbegriffe",
+      "LIKE_FILTER": "Variable Übereinstimmung der Suchbegriffe"
     },
     "ERRORS": {
-      "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"
+      "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"
     },
-    "NO_AVAILABLE_INFO": "Keine Information vorhanden",
-    "WELCOME_TO_MOTION": "Willkommen zu Motion",
+    "NO_AVAILABLE_INFO": "Keine Informationen vorhanden",
+    "WELCOME_TO_MOTION": "Willkommen!",
     "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": "Wartende Anrufe (Eingehend)",
-    "CONTACTS": "Kontakte",
-    "MYCONTACTS": "Meine Kontakte",
+    "INBOUND_WAITING_CALLS": "Liste der wartenden Anrufe",
+    "CONTACTS": "Globale Kontakte",
+    "MYCONTACTS": "Von mir bearbeitete Kontakte",
     "ADD_CONTACT": "Kontakt hinzufügen",
     "RELOAD": "Neu Laden",
     "WAITING_TEXT": "Wartende Interaktionen",
     "TALKING_TEXT": "Aktive Anrufe",
     "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe",
-    "ABANDONED_TEXT": "Abgebrochene Anrufe",
-    "DROP_RATE_TEXT": "Abbruchrate",
+    "ABANDONED_TEXT": "Gesamt abgebrochene Interaktionen",
+    "DROP_RATE_TEXT": "Rate vom System aufgelegt",
     "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": "Durchschnittliche Dauer ausgehender Anrufe",
-    "OUTBOUND_ANSWER_RATE_TEXT": "Rate angenommener ausgehender Anrufe",
+    "AVG_DURATION_TEXT": "Durchschnittl. Dauer (Ausgehend)",
+    "OUTBOUND_ANSWER_RATE_TEXT": "Antwortrate ausgehende Anrufe",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
     "OF": "von",
-    "REPLY_PLACEHOLDER": "Text eingeben und ENTER drücken zum Senden",
+    "REPLY_PLACEHOLDER": "Text eingeben und Senden mit Eingabetaste",
     "CONTACT_INFO": "Kontaktinformationen",
     "CLOSE_AND_DISPOSE": "Schließen und Qualifizieren",
     "DISPOSITIONS": "Qualifizierungen",
     "REJECT": "Ablehnen",
     "CLOSED": "Geschlossen",
     "INFO": "Information",
-    "NOTE": "Hinweis",
+    "NOTE": "Anmerkung",
     "ACCEPT_ELSEWHERE": "Von anderem Teilnehmer angenommen",
     "ATTENTION": "Achtung",
-    "SOCIAL": "Sozial",
+    "SOCIAL": "Social-Media",
     "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Keine Jscripty-Projekte verfügbar",
     "OPENED": "Geöffnet",
     "FILTER": "Filter",
     "INTERACTIONS": "Interaktionen",
     "STARTEDAT": "Begonnen am",
     "STATUS": "Status",
-    "OPEN": "Öffnen",
+    "OPEN": "Offen",
     "SHOW": "Anzeigen",
     "ME": "ICH",
     "NOT_ASSIGNED": "Nicht zugewiesen",
     "HIDE_DETAILS": "Details ausblenden",
     "EXTERNAL_URL": "Externer Link",
     "SET_AS": "Festlegen als",
-    "PENDING": "Ausstehend",
+    "PENDING": "Warten auf Rückmeldung",
     "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": "Anrufwarteschlangen filtern",
+    "FILTER_VOICE_QUEUES": "Warteschlangen filtern",
     "LOADING_INTERACTION": "Interaktion wird geladen",
     "JANUARY": "Januar",
     "FEBRUARY": "Februar",
     "YESTERDAY": "Gestern",
     "TODAY": "Heute",
     "SELECT_DATE": "Datum auswählen",
-    "SELECT_DATE_RANGE": "Wählen Sie einen Datumsbereich",
-    "CLEAR": "Löschen",
-    "CALL_NUMBER": "Anrufen",
-    "TRANSFER_NUMBER": "Transfer",
+    "SELECT_DATE_RANGE": "Datumsbereich wählen",
+    "CLEAR": "Zurücksetzen",
+    "CALL_NUMBER": "Nummer Anrufen",
+    "TRANSFER_NUMBER": "Transfer an Nummer",
     "CALL_SAVED": "Anruf erfolgreich gespeichert",
     "CALL_DISPOSED": "Anruf erfolgreich qualifiziert",
-    "CHANNEL_WAITING_TEXT": "Wartende Interaktionen",
+    "CHANNEL_WAITING_TEXT": "Liste der wartenden 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",
+    "ABANDONAT": "Abgebrochen am",
     "ABANDONEDQUEUECALLS": "Abgebrochene Anrufe",
     "FREE": "Frei",
     "LASTASSIGNEDTO": "Zuletzt zugewiesen an",
     "QUEUE": "Warteschlange",
-    "QUEUECALLEREXITAT": "Abgebrochen",
+    "QUEUECALLEREXITAT": "Warteschlange verlassen am",
     "QUEUECALLEREXITREASON": "Grund",
     "RESERVED": "Reserviert",
     "SELECT_CAMPAIGN": "Warteschlange auswählen",
     "ASSIGNTO": "Zuweisen",
-    "CLICKRELOAD": "Verpasste Anrufe! Bitte Seite erneut laden",
+    "CLICKRELOAD": "Sie haben neue verpasste Anrufe. Bitte Seite neu 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 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",
+    "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",
     "MANAGED": "Bearbeitet",
     "MANAGED_RATE": "Bearbeitungsrate",
-    "MANAGED_RATE_TEXT": "Rate der bearbeiteten Interaktionen",
-    "MANAGED_TEXT": "Interaktionen bearbeitet",
-    "OPENED_TEXT": "Interaktionen geöffnet",
-    "TODAY_INTERACTIONS_STATS": "Interaktionen Tagesstatistiken",
+    "MANAGED_RATE_TEXT": "Rate bearbeitete Interaktionen",
+    "MANAGED_TEXT": "Ges. Interaktionen bearbeitet",
+    "OPENED_TEXT": "Ges. Interaktionen geöffnet",
+    "TODAY_INTERACTIONS_STATS": "Tagesstatistiken - weitere Kanäle",
     "UNMANAGED_RATE": "Rate nicht Bearbeitet",
-    "UNMANAGED_RATE_TEXT": "Rate der nicht bearbeiteten Interaktionen in der Warteschlange",
-    "VOICE_ABANDONED": "Abgebrochen",
-    "VOICE_ABANDONED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
+    "UNMANAGED_RATE_TEXT": "Rate nicht bearbeitete Interaktionen",
+    "VOICE_ABANDONED": "Gesamt Abgebrochen",
+    "VOICE_ABANDONED_TEXT": "Gesamt abgebrochene Anrufe",
     "VOICE_ABANDON_RATE": "Abbruchrate",
-    "VOICE_ABANDON_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
-    "VOICE_ANSWERED": "Angenommen",
-    "VOICE_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
+    "VOICE_ABANDON_RATE_TEXT": "Rate abgebrochene Anrufe",
+    "VOICE_ANSWERED": "Gesamt Angenommen",
+    "VOICE_ANSWERED_TEXT": "Gesamt angenommene Anrufe",
     "VOICE_ANSWER_RATE": "Antwortrate",
-    "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_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_TOTAL_OFFERED": "Gesamt angeboten",
-    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der angebotenen Anrufe in der Warteschlange",
+    "VOICE_TOTAL_OFFERED_TEXT": "Gesamt angebotene Anrufe (Eingehend)",
     "VOICE_UNMANAGED": "Nicht bearbeitet",
-    "VOICE_UNMANAGED_TEXT": "Nicht bearbeitete Anrufe in der Warteschlange",
+    "VOICE_UNMANAGED_TEXT": "Ges. nicht bearbeitete Anrufe",
     "VOICE_WAITING": "Wartende Anrufe",
-    "VOICE_WAITING_TEXT": "Wartende Anrufe in der Warteschlange",
+    "VOICE_WAITING_TEXT": "Gesamt wartende Anrufe",
     "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": "An Andere zugewiesen",
+    "ASSIGNED_TO_OTHERS": "Einem anderen Nutzer zugewiesen",
     "SELECT_ALL": "Alles auswählen",
-    "CHAT_INTERACTIONS": "Chat-Interaktionen",
-    "FAX_INTERACTIONS": "Fax-Interaktionen",
+    "CHAT_INTERACTIONS": "Interaktionen per Chat",
+    "FAX_INTERACTIONS": "Interaktionen per Fax",
     "ID": "ID",
-    "MAIL_INTERACTIONS": "E-Mail-Interaktionen",
-    "OPENCHANNEL_INTERACTIONS": "Offener-Kanal-Interaktionen",
-    "SMS_INTERACTIONS": "SMS-Interaktionen",
+    "MAIL_INTERACTIONS": "Interaktionen per E-Mail",
+    "OPENCHANNEL_INTERACTIONS": "Interaktionen über den offenen Kanal",
+    "SMS_INTERACTIONS": "Interaktionen per SMS",
     "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": "Alles",
-    "ALL_STATUS": "Alles",
-    "ALL_STEP": "Alles",
+    "ALL_PRODUCTS": "Alle Produkte",
+    "ALL_STATUS": "Alle Status",
+    "ALL_STEP": "Alle Schritte",
     "ALL_WORKFLOW": "Alle Arbeitsabläufe",
     "ATTENDACELASTINVOICE": "Letzte Rechnung",
     "ATTENDACENEXTINVOICE": "Nächste Rechnung",
     "COMPANYCITY": "Stadt",
     "COMPANYCOUNTRY": "Land",
     "COMPANYDESC": "Beschreibung",
-    "COMPANYEMAIL": "Email",
+    "COMPANYEMAIL": "E-Mail",
     "COMPANYFAX": "Fax",
     "COMPANYNAME": "Unternehmen",
     "COMPANYNATION": "Staat",
     "DOSSIER_INFO": "Information",
     "ENDDATE": "Ablaufdatum",
     "FROM": "von",
-    "GRAPHINVOICES": "Diagramm der Rechnungsemission",
+    "GRAPHINVOICES": "Diagramm der Rechnung",
     "INASSET": "Kapital",
     "INVOICE": "RECHNUNG",
     "INVOICEDETAILS": "RECHNUNGS-DETAILS",
     "NEXTINVOICE": "Nächste Rechnung",
     "NOTES": "Notizen",
     "NO_PRODUCTINVOICE_AVAILABLE": "Kein Produkt verfügbar",
-    "NO_PRODUCTPRICELIST_AVAILABLE": "Keine Daten verfügbar",
-    "NO_PRODUCTPROFORMA_AVAILABLE": "Keine Daten verfügbar",
+    "NO_PRODUCTPRICELIST_AVAILABLE": "Keine Preislisten verfügbar",
+    "NO_PRODUCTPROFORMA_AVAILABLE": "Keine Pro-Forma verfügbar",
     "NUMBER": "Nummer",
     "OPENDATE": "Öffnungsdatum",
     "ORDER": "Bestellung",
     "ORDERCLIENTCODE": "Kundennummer",
-    "ORDERID": "Bestellung ID ",
+    "ORDERID": "Bestellnummer",
     "ORDERNOTES": "Notizen",
     "ORDERSTATUS": "Status",
     "ORDER_INFO": "Bestellung",
     "SELECT_WORKFLOWSTEPS": "Arbeitsablaufstatus auswählen",
     "STARTDATE": "Rechnungsdatum",
     "STATE": "Status",
-    "STEP": "Stufe",
+    "STEP": "Schritt",
     "SUBSCRIPTIONDETAIL": "Detail",
     "SUBSCRIPTIONNAME": "Abonnement",
     "SUBSCRIPTIONS": "KUNDENPLAN",
     "TAX": "MwSt",
-    "TO": "Zu",
+    "TO": "auf",
     "TOTALPAYMENTS": "Gesamtzahlungen",
     "UPDATED_AT": "Geändert am",
     "UPDATE_PRODUCT": "Produkt aktualisieren",
     "ENDING_DATE": "Enddatum",
     "ENDING_VALUE": "Endwert",
     "ENDS_WITH": "endet mit",
-    "EQUALS": "gleich",
+    "EQUALS": "ist 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": "WhatsApp-Interaktionen",
+    "WHATSAPP_INTERACTIONS": "Interaktionen per WhatsApp",
     "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 der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung Ebene 2",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung Ebene 3",
     "LICENSE_EXPIRE_REMAINING_DAYS": "Ihre Lizenz läuft bald ab! Bitte wenden Sie sich an Ihren Administrator",
-    "CREATEDAT": "Hergestellt in",
+    "CREATEDAT": "Erstellt am",
     "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": "Erhältlich",
+    "AVAILABLE": "Verfügbar",
     "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",
-    "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"
+    "SYSTEM_TIME": "Systemzeit"
   }
 }
index abbb32f..3fd913c 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",
-    "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"
+    "SYSTEM_TIME": "hora del sistema"
   }
 }
index 0a5b7eb..b6a4155 100644 (file)
     "LIMIT_TABS_REACHED": "Avatud vahelehtede maksimaalne arv on täis",
     "LIST_NAME": "Loendi nimi",
     "PREVIEW_CALL": "Kõne eelvaade",
-    "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"
+    "SYSTEM_TIME": "Süsteemi aeg"
   }
 }
index 76aa749..a5d033e 100644 (file)
     "LIMIT_TABS_REACHED": "به حداکثر تعداد برگه های باز رسیده است",
     "LIST_NAME": "نام لیست",
     "PREVIEW_CALL": "پیش نمایش تماس",
-    "SYSTEM_TIME": "زمان سیستم",
-    "CONTACT_NAME": "نام تماس",
-    "CONTACT_PHONE": "تلفن تماس",
-    "RECALLME_CALL_REMINDER": "یادآوری تماس مرا Recall Me",
-    "SCHEDULED_TIME": "زمان برنامه ریزی شده",
-    "UPCOMING_RECALLME_CALL": "تماس بعدی Recall Me"
+    "SYSTEM_TIME": "زمان سیستم"
   }
 }
index 59d46ce..d6711a2 100644 (file)
     "LIMIT_TABS_REACHED": "Avointen välilehtien enimmäismäärä saavutettu",
     "LIST_NAME": "Listanimi",
     "PREVIEW_CALL": "Esikatsele puhelu",
-    "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"
+    "SYSTEM_TIME": "järjestelmän aika"
   }
 }
index 40bf467..34209e4 100644 (file)
     "LIMIT_TABS_REACHED": "Nombre maximum d'onglets ouverts atteint",
     "LIST_NAME": "Liste de noms",
     "PREVIEW_CALL": "Aperçu de l'appel",
-    "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"
+    "SYSTEM_TIME": "Le temps du système"
   }
 }
index fff6efe..c0e22b4 100644 (file)
     "LIMIT_TABS_REACHED": "הגעת למספר המרבי של כרטיסיות פתוחות",
     "LIST_NAME": "רשימת שמות",
     "PREVIEW_CALL": "תצוגה מקדימה של שיחה",
-    "SYSTEM_TIME": "זמן מערכת",
-    "CONTACT_NAME": "שם איש קשר",
-    "CONTACT_PHONE": "טלפון ליצירת קשר",
-    "RECALLME_CALL_REMINDER": "תזכורת להתקשרות זכור לי",
-    "SCHEDULED_TIME": "זמן מתוכנן",
-    "UPCOMING_RECALLME_CALL": "שיחת Recall Me הקרובה"
+    "SYSTEM_TIME": "זמן מערכת"
   }
 }
index fa4b16a..ae0ba03 100644 (file)
     "LIMIT_TABS_REACHED": "खुले टैब की अधिकतम संख्या तक पहुंच गया",
     "LIST_NAME": "सूची का नाम",
     "PREVIEW_CALL": "पूर्वावलोकन कॉल",
-    "SYSTEM_TIME": "सिस्टम का समय",
-    "CONTACT_NAME": "संपर्क नाम",
-    "CONTACT_PHONE": "संपर्क फ़ोन",
-    "RECALLME_CALL_REMINDER": "रिकॉल मी कॉल रिमाइंडर",
-    "SCHEDULED_TIME": "निर्धारित समय",
-    "UPCOMING_RECALLME_CALL": "अपकमिंग रिकॉल मी कॉल"
+    "SYSTEM_TIME": "सिस्टम का समय"
   }
 }
index e6dc890..6709e22 100644 (file)
     "LIST_NAME": "Lista név",
     "PREVIEW_CALL": "Hívás előnézete",
     "SETFILTERS": "Szűrők beállítása",
-    "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"
+    "SYSTEM_TIME": "rendszeridő"
   }
 }
index a6dfab9..f7253d3 100644 (file)
     "LIMIT_TABS_REACHED": "Jumlah maksimum tab terbuka tercapai",
     "LIST_NAME": "Daftar nama",
     "PREVIEW_CALL": "Pratinjau panggilan",
-    "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"
+    "SYSTEM_TIME": "Waktu sistem"
   }
 }
index 1fd5cad..54b37f0 100644 (file)
     },
     "LIMIT_TABS_REACHED": "Numero massimo di tab aperti raggiunto",
     "LIST_NAME": "Lista nome",
-    "PREVIEW_CALL": "Anteprima chiamata",
-    "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"
+    "PREVIEW_CALL": "Anteprima chiamata"
   }
 }
index 7971add..04a03a9 100644 (file)
     "LIMIT_TABS_REACHED": "開いているタブの最大数に達しました",
     "LIST_NAME": "リスト名",
     "PREVIEW_CALL": "プレビュー通話",
-    "SYSTEM_TIME": "システム時刻",
-    "CONTACT_NAME": "連絡先",
-    "CONTACT_PHONE": "電話に連絡する",
-    "RECALLME_CALL_REMINDER": "リコールミーコールリマインダー",
-    "SCHEDULED_TIME": "予定時間",
-    "UPCOMING_RECALLME_CALL": "今後のリコールミーコール"
+    "SYSTEM_TIME": "システム時刻"
   }
 }
index bfd643f..ba3e830 100644 (file)
     "LIMIT_TABS_REACHED": "열린 탭의 최대 수에 도달했습니다.",
     "LIST_NAME": "목록 이름",
     "PREVIEW_CALL": "통화 미리보기",
-    "SYSTEM_TIME": "시스템 시간",
-    "CONTACT_NAME": "담당자 이름",
-    "CONTACT_PHONE": "연락 전화 번호",
-    "RECALLME_CALL_REMINDER": "나에게 전화 걸기 알림",
-    "SCHEDULED_TIME": "예정된 시간",
-    "UPCOMING_RECALLME_CALL": "리콜 미 콜 예정"
+    "SYSTEM_TIME": "시스템 시간"
   }
 }
index 21fa3cd..098d5b9 100644 (file)
     "LIMIT_TABS_REACHED": "Pasiektas maksimalus atidarytų skirtukų skaičius",
     "LIST_NAME": "Sąrašo pavadinimas",
     "PREVIEW_CALL": "Peržiūrėti skambutį",
-    "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"
+    "SYSTEM_TIME": "Sistemos laikas"
   }
 }
index f70d78b..b9aa367 100644 (file)
     "LIMIT_TABS_REACHED": "Sasniegts maksimālais atvērto ciļņu skaits",
     "LIST_NAME": "Saraksta nosaukums",
     "PREVIEW_CALL": "Priekšskatīt zvanu",
-    "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"
+    "SYSTEM_TIME": "Sistēmas laiks"
   }
 }
index 55e3cf9..fa90bea 100644 (file)
@@ -2,48 +2,48 @@
   "DASHBOARDS": {
     "HOME": "Home",
     "CHAT": "Chat",
-    "MAIL": "Email",
+    "MAIL": "E-mail",
     "SMS": "Sms",
-    "OPENCHANNEL": "Open Channel",
+    "OPENCHANNEL": "Open Kanaal",
     "FAX": "Fax",
-    "RATING": "Waardering",
+    "RATING": "Rating",
     "FEEDBACK": "Feedback",
     "SUBJECT": "Onderwerp",
-    "REFERER": "Referer",
+    "REFERER": "Referentie",
     "ACCOUNT": "Account",
     "WEBSITE": "Website",
     "AGENT": "Agent",
     "CREATED_AT": "Gemaakt op",
     "CLOSED_AT": "Gesloten",
-    "DISPOSITION": "Afvoeren",
+    "DISPOSITION": "Dispositie",
     "CONTACT": "Neem contact op met",
     "INTERACTION": "Interactie",
     "BROWSER_NAME": "Browsernaam",
     "BROWSER_VERSION": "Browserversie",
     "OS_NAME": "Naam besturingssysteem",
     "OS_VERSION": "Versie van besturingssysteem",
-    "DEVICE_MODEL": "Apparaatmodel",
+    "DEVICE_MODEL": "Apparaat model",
     "DEVICE_VENDOR": "Apparaat",
-    "DEVICE_TYPE": "Apparaattype",
-    "RECALLME": "Recall Me",
-    "DROP_RATE": "Daalsnelheid",
+    "DEVICE_TYPE": "Apparaat type",
+    "RECALLME": "Bel mij terug",
+    "DROP_RATE": "Wegvalpercentage",
     "DROPPED": "Weggevallen",
-    "DROPPED_TEXT": "Verbrede Wachtrij oproepen",
+    "DROPPED_TEXT": "Weggevallen wachtrij oproepen",
     "DETAIL": "Detail",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Beperkt",
-    "LIMITED_TEXT": "Campagnes afkomstige gesprekken/Limited",
+    "LIMITED_TEXT": "Afkomst/limiet gesprekken afkomstig uit IVR-Campagnes",
     "DASHBOARDS": "Dashboards",
     "RECORDINGS": "Opnamen",
-    "TODAY_MOTION_BULL_STATS": "Vandaag Motion Bull Stats",
+    "TODAY_MOTION_BULL_STATS": "De Motion Bull stats. van vandaag",
     "ORIGINATED": "Oorsprong",
-    "ORIGINATED_TEXT": "Wachtrij afkomstige gesprekken",
+    "ORIGINATED_TEXT": "Gesprekken afkomstig uit wachtrij",
     "UPDATE": "Update",
     "MORE": "Meer",
     "MOTIONDIALER": "Motion Bull",
-    "DISPOSE": "Afvoeren",
+    "DISPOSE": "Opruimen",
     "QUEUES": "Wachtrijen",
-    "DIALER_CALL": "Oproepen beller",
+    "DIALER_CALL": "Dialer",
     "ELAPSED_TIME": "Verstreken tijd",
     "EDIT": "Bewerken",
     "MERGE": "Samenvoegen",
     "POSTALCODE": "Postcode",
     "CUSTOM_FIELDS": "Aangepaste velden",
     "GENERAL": "Algemeen",
-    "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",
+    "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",
     "INBOUND_ANSWERED": "Beantwoord",
     "OUTBOUND_ANSWERED": "Beantwoord",
     "ABANDONED": "Verlaten",
-    "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_OFFERED": "Tot. aangeboden",
+    "AVG_HOLD_TIME": "Gem. wachttijd",
+    "INBOUND_ANSWER_RATE": "Antwoordpercentage",
+    "OUTBOUND_ANSWER_RATE": "Antwoordpercentage",
+    "ABANDON_RATE": "Verlatingspercentage",
+    "UNMANAGED": "Onbeheerd",
     "TOTAL": "Totaal",
     "TOT_DURATION": "Totale duur",
     "AVG_DURATION": "Gemiddelde duur",
     "HELP": {
       "ORIGINATEDLIMITED": "Campagnes afkomstige gesprekken/Limited",
-      "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",
+      "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",
       "OUTBOUND_ANSWERED": "Het totale aantal voltooide uitgaande gesprekken",
-      "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",
+      "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",
       "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 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",
+      "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",
       "MANAGED": "Het totale aantal voltooide interacties",
-      "MANAGED_RATE": "De beheerde snelheid van alle interacties",
+      "MANAGED_RATE": "De beheerde afhandelingssnelheid van alle interacties",
       "OPENED": "Het totale aantal actieve interacties",
-      "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",
+      "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",
       "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": "De Voornaam is verplicht",
-      "PHONE_REQUIRED": "Het telefoonnummer is verplicht",
+      "FIRSTNAME_REQUIRED": "Verplicht veld",
+      "PHONE_REQUIRED": "Verplicht veld",
       "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": "Fullname",
+    "FULLNAME": "Volledige naam",
     "LIST": "Lijst",
-    "NEW_CONTACT": "Nieuwe contactpersoon",
+    "NEW_CONTACT": "Nieuw contactpersoon",
     "PHONE": "Telefoon",
     "SAVE": "Opslaan",
-    "INBOUND_WAITING_CALLS": "Inkomende gesprekken in wachtstand",
+    "INBOUND_WAITING_CALLS": "Inkomende oproepen in wachtstand",
     "CONTACTS": "Contactpersonen",
     "MYCONTACTS": "Mijn contactpersonen",
-    "ADD_CONTACT": "Contactpersoon toevoegen",
-    "RELOAD": "Reload",
+    "ADD_CONTACT": "Contactpersoon Toevoegen",
+    "RELOAD": "Herladen",
     "WAITING_TEXT": "Wachtrij oproepen",
     "TALKING_TEXT": "Actieve Wachtrij oproepen",
-    "INBOUND_ANSWERED_TEXT": "Beantwoord oproepen wachtrij",
+    "INBOUND_ANSWERED_TEXT": "Beantwoorde wachtrij oproepen",
     "ABANDONED_TEXT": "Wachtrij verlaten oproepen",
-    "DROP_RATE_TEXT": "Oproepen wachtrij daalsnelheid",
+    "DROP_RATE_TEXT": "Oproepen wachtrij wegvalsnelheid",
     "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": "Wachtrij oproepen beantwoorden tarief",
+    "INBOUND_ANSWER_RATE_TEXT": "Antwoordpercentage wachtrij oproepen",
     "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": "Dicht en afvoeren",
-    "DISPOSITIONS": "Dispositions",
+    "CLOSE_AND_DISPOSE": "Afronden",
+    "DISPOSITIONS": "Disposities",
     "CLOSE_WITHOUT_DISPOSE": "Sluiten zonder lever",
     "ACCEPT": "Accepteren",
     "REJECT": "Afwijzen",
     "OPENED": "Open",
     "FILTER": "Filter",
     "SELECT_STATUS": "Selecteer Status.",
-    "SELECT_ACCOUNT": "Account selecteren",
-    "SELECT_WEBSITE": "Selecteer website",
+    "SELECT_ACCOUNT": "Selecteren Account",
+    "SELECT_WEBSITE": "Selecteer Website",
     "ALL": "Alle",
     "INTERACTIONS": "Interacties",
     "STARTEDAT": "Gestart op",
     "STATUS": "Status",
     "OPEN": "Open",
-    "SHOW": "Toon",
+    "SHOW": "Weergeven",
     "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 ingeblikte antwoorden gevonden",
-    "CANNED_ANSWER_SEARCH": "Voer een tekst te zoeken in een ingeblikt antwoord",
+    "CANNED_ANSWER_NOT_FOUND": "Geen standaard antwoorden gevonden",
+    "CANNED_ANSWER_SEARCH": "Voer een tekst in om te zoeken in een standaard 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": "Din",
-    "WED": "trouwen",
-    "THU": "Don",
-    "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": "Di",
+    "WED": "Wo",
+    "THU": "Do",
+    "FRI": "Vr",
     "SAT": "Za",
-    "SUN": "Zon",
+    "SUN": "Zo",
     "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": "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",
+    "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",
     "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 Lezen / ongelezen",
+    "SELECT_READ_UNREAD": "Selecteer gelezen / ongelezen",
     "SELECT_SUBSTATUS": "Selecteer Substatus",
     "UNREAD": "Ongelezen",
     "ABANDONAT": "Verlaten",
     "FREE": "Gratis",
     "LASTASSIGNEDTO": "Laatst toegewezen aan",
     "QUEUE": "Wachtrij",
-    "QUEUECALLEREXITAT": "Liet vallen",
+    "QUEUECALLEREXITAT": "Beller heeft wachtrij verlaten om",
     "QUEUECALLEREXITREASON": "Reden",
     "RESERVED": "Gereserveerd",
-    "SELECT_CAMPAIGN": "Selecteer een wachtrij",
+    "SELECT_CAMPAIGN": "Selecteer een Wachtrij",
     "ASSIGNTO": "Toewijzen",
-    "CLICKRELOAD": "Nieuwe achtergelaten oproepen! Herladen alstublieft",
+    "CLICKRELOAD": "Nieuwe verlaten oproepenu0021 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": "Middel",
+    "ADD_PRODUCTPRICELIST": "Product Toevoegen",
+    "AGENTFULLNAME": "Agent",
     "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 Werkstroomstatus",
+    "SELECT_PERIOD_START": "Selecteer een Datum",
+    "SELECT_PRODUCT": "Selecteer Product",
+    "SELECT_PRODUCTTYPE": "Selecteer Type",
+    "SELECT_WORKFLOW": "Selecteer Workflow",
+    "SELECT_WORKFLOWSTEPS": "Selecteer Workflow stappen",
     "STARTDATE": "Factuur datum",
     "STATE": "Staat",
     "STEP": "Stap",
     "SUBSCRIPTIONDETAIL": "Detail",
     "SUBSCRIPTIONNAME": "Abonnement",
-    "SUBSCRIPTIONS": "KLANTenschema",
+    "SUBSCRIPTIONS": "Abonnementen",
     "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 conditie",
-    "SELECT_FIELD": "Selecteer veld",
-    "SELECT_OPERATOR": "Selecteer operator",
+    "NEW_CONDITION": "nieuwe voorwaarden",
+    "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 bijna! Neem contact op met uw beheerder",
+    "LICENSE_EXPIRE_REMAINING_DAYS": "Uw licentie verloopt bijnau0021 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": "Sluit het contacttabblad automatisch na verwijdering",
+    "AUTOCLOSE": "Het contacttabblad automatisch sluiten 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",
-    "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"
+    "SYSTEM_TIME": "Systeemtijd"
   }
 }
index 9d354d3..32f0a95 100644 (file)
     "LIMIT_TABS_REACHED": "Maksimalt antall åpne faner nådd",
     "LIST_NAME": "Liste navn",
     "PREVIEW_CALL": "Forhåndsvis samtale",
-    "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"
+    "SYSTEM_TIME": "system tid"
   }
 }
index b032714..8315a0e 100644 (file)
     "LIMIT_TABS_REACHED": "Osiągnięto maksymalną liczbę otwartych kart",
     "LIST_NAME": "Nazwa listy",
     "PREVIEW_CALL": "Podgląd rozmowy",
-    "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"
+    "SYSTEM_TIME": "czas systemu"
   }
 }
index 760ba7d..32e1af8 100644 (file)
     "LIMIT_TABS_REACHED": "Número máximo de guias abertas atingido",
     "LIST_NAME": "Lista de nomes",
     "PREVIEW_CALL": "Pré-visualizar chamada",
-    "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"
+    "SYSTEM_TIME": "Hora do sistema"
   }
 }
index 1931296..1dc55b9 100644 (file)
     "LIMIT_TABS_REACHED": "Número máximo de guias abertas atingido",
     "LIST_NAME": "Lista de nomes",
     "PREVIEW_CALL": "Pré-visualizar chamada",
-    "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"
+    "SYSTEM_TIME": "Hora do sistema"
   }
 }
index 76debab..42a4882 100644 (file)
     "LIMIT_TABS_REACHED": "Достигнуто максимальное количество открытых вкладок",
     "LIST_NAME": "Имя списка",
     "PREVIEW_CALL": "Предварительный просмотр звонка",
-    "SYSTEM_TIME": "Системное время",
-    "CONTACT_NAME": "Контактное лицо",
-    "CONTACT_PHONE": "Контактный телефон",
-    "RECALLME_CALL_REMINDER": "Напомнить мне о звонке",
-    "SCHEDULED_TIME": "Запланированное время",
-    "UPCOMING_RECALLME_CALL": "Предстоящий вызов «Напомнить мне»"
+    "SYSTEM_TIME": "Системное время"
   }
 }
index cdc4504..1b0eefb 100644 (file)
     "LIMIT_TABS_REACHED": "Maximalt antal öppna flikar har uppnåtts",
     "LIST_NAME": "Namnlista",
     "PREVIEW_CALL": "Förhandsgranska samtalet",
-    "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"
+    "SYSTEM_TIME": "system tid"
   }
 }
index b5b8081..8eccbb5 100644 (file)
     "LIMIT_TABS_REACHED": "Maksimum açık sekme sayısına ulaşıldı",
     "LIST_NAME": "Liste adı",
     "PREVIEW_CALL": "Önizleme araması",
-    "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ı"
+    "SYSTEM_TIME": "Sistem zamanı"
   }
 }
index 4a3630d..dfe41dc 100644 (file)
     "LIMIT_TABS_REACHED": "已达到打开选项卡的最大数量",
     "LIST_NAME": "列表名称",
     "PREVIEW_CALL": "预览通话",
-    "SYSTEM_TIME": "系统时间",
-    "CONTACT_NAME": "联系人姓名",
-    "CONTACT_PHONE": "联系电话",
-    "RECALLME_CALL_REMINDER": "Recall Me 来电提醒",
-    "SCHEDULED_TIME": "计划的时间",
-    "UPCOMING_RECALLME_CALL": "即将到来的 Recall Me 电话"
+    "SYSTEM_TIME": "系统时间"
   }
 }
index 2d4380f..120c0ea 100644 (file)
     "LIMIT_TABS_REACHED": "已達到打開選項卡的最大數量",
     "LIST_NAME": "列表名稱",
     "PREVIEW_CALL": "預覽通話",
-    "SYSTEM_TIME": "系統時間",
-    "CONTACT_NAME": "聯繫人姓名",
-    "CONTACT_PHONE": "聯繫電話",
-    "RECALLME_CALL_REMINDER": "Recall Me 來電提醒",
-    "SCHEDULED_TIME": "計劃的時間",
-    "UPCOMING_RECALLME_CALL": "即將到來的 Recall Me 電話"
+    "SYSTEM_TIME": "系統時間"
   }
 }
index e63ae66..d1303ac 100644 (file)
@@ -1,88 +1,88 @@
 {
   "FAX": {
-    "TEAMADD_FAXQUEUE": "Team zur Faxwarteschlange hinzufügen",
-    "AGENTADD_FAXQUEUE": "Agent Fax Warteschlange hinzufügen",
+    "TEAMADD_FAXQUEUE": "Team zur Warteschlange hinzufügen",
+    "AGENTADD_FAXQUEUE": "Agenten zur Warteschlange hinzufügen",
     "NAME": "Name",
-    "FAXQUEUES": "Fax Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "FAXQUEUES": "Fax-Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "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"
+      "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"
     },
-    "STRATEGY": "Strategie",
-    "AGENT_TIMEOUT": "Agent Timeout",
+    "STRATEGY": "Verteilungsstrategie",
+    "AGENT_TIMEOUT": "Zeitüberschreitung Agent",
     "DESCRIPTION": "Beschreibung",
-    "ADD_FAXQUEUE": "Warteschlange hinzufügen Fax",
-    "EDIT_FAXQUEUE": "Bearbeiten Fax Warteschlange",
-    "DELETE_FAXQUEUE": "Fax Löschen der Warteschlange",
+    "ADD_FAXQUEUE": "Fax-Warteschlange hinzufügen",
+    "EDIT_FAXQUEUE": "Fax-Warteschlange bearbeiten",
+    "DELETE_FAXQUEUE": "Fax-Warteschlange löschen",
     "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": "Bestimmungen",
+    "ADD_FAXACCOUNT": "Fax-Konto hinzufügen",
+    "EDIT_FAXACCOUNT": "Fax-Konto bearbeiten",
+    "DELETE_FAXACCOUNT": "Fax-Konto löschen",
+    "DISPOSITIONS": "Bedingungen",
     "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Aktionen",
+    "ACTIONS": "Routing",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "In der Nähe",
-    "CLOSEMETHOD": "In der Nähe Methode",
-    "CLOSEURL": "Der URL",
-    "TRUNK": "Amtsleitung",
-    "LOCALSTATIONID": "Lokale Station Identifier",
+    "CLOSE": "Schließen und Qualifizieren",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
+    "TRUNK": "SIP-Trunk",
+    "LOCALSTATIONID": "ID lokale Nebenstelle",
     "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": "Zwingende Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Status für Zwangsdisposition anhalten"
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus während der Qualifizierung"
     },
-    "ADVANCED": "Erweiterte",
+    "ADVANCED": "Erweitert",
     "ECM": "ECM",
     "MINRATE": "Min. Geschwindigkeit",
     "MAXRATE": "Max. Geschwindigkeit",
     "GATEWAY": "Gateway",
     "FAXDETECT": "Fax Erkennung",
     "T38TIMEOUT": "T.38-Timeout",
-    "SIP": "Technologie",
+    "SIP": "SIP",
     "HEADERINFO": "Header-info",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "FAX": "Fax",
-    "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",
+    "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",
     "NEW_FAXQUEUE": "Neue Warteschlange",
-    "NEW_FAXACCOUNT": "Neue Fax Konto",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "NEW_FAXACCOUNT": "Neues Fax-Konto",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ALL_TEAMS": "Alle Teams",
     "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": "Alle",
+    "ALL": "Alles",
     "CLOSED": "Geschlossen",
-    "OPENED": "Geöffnet",
+    "OPENED": "Offen",
     "SELECT_ACCOUNT": "Konto auswählen",
-    "INTERACTIONS": "Wechselwirkungen",
+    "INTERACTIONS": "Interaktionen",
     "CONTACT": "Kontakt",
     "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "ACCOUNT": "Konto",
-    "GOTO_FAXACCOUNT": "In Echtzeit, Faxgerät",
+    "GOTO_FAXACCOUNT": "Direkt zur Echtzeit-Warteschlange",
     "ACCOUNTS": "Konten",
-    "GOTOREALTIME_FAXACCOUNT": "In Echtzeit, Faxgerät",
+    "GOTOREALTIME_FAXACCOUNT": "Direkt zur Echtzeitansicht Fax-Konten",
     "TRUNK_STATUS": "Trunk Status",
-    "TRUNKS": "Amtsleitungen",
+    "TRUNKS": "SIP-Trunks",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine Registry",
+    "NO_REGISTRY": "Nicht registriert",
     "PAUSE": "Pause",
-    "INFO": "Info",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Interne",
-    "PHONE_STATE": "Telefonstatus",
-    "PHONE_STATUS": "Telefonstatus",
+    "INFO": "Informationen",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
+    "PHONE_STATE": "Statis Nebenstelle",
+    "PHONE_STATUS": "SIP-Status Nebenstelle",
     "LOGOUT": "An-/Abmelden",
-    "DEFAULT_PAUSE": "Standard Pause",
-    "AGENTADD_QUEUE": "Agent Fax Warteschlange hinzufügen",
-    "AGENTSADD_QUEUE": "Agenten zu Fax Warteschlange hinzufügen",
-    "UNPAUSE": "Pause",
+    "DEFAULT_PAUSE": "Standardpause",
+    "AGENTADD_QUEUE": "Agent zur Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "UNPAUSE": "Pause abbrechen",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "Angehalten",
+    "PAUSED": "in Pause",
     "READY": "Bereit",
     "WAITING": "Warten",
     "PRIORITY": "Priorität",
-    "CONDITION": "Zustand",
-    "TRUEPRIORITY": "Wahre Priorität",
-    "FALSEPRIORITY": "Falsche Priorität",
+    "CONDITION": "Bedingung",
+    "TRUEPRIORITY": "Priorität, wenn erfüllt (true)",
+    "FALSEPRIORITY": "Priorität, wenn nicht erfüllt (false)",
     "VALUE": "Wert",
-    "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",
+    "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",
     "QUEUE": "Warteschlange",
-    "GOTOIF": "GotoIf",
-    "GOTOP": "GotoP",
-    "NOOP": "Noop",
+    "GOTOIF": "GeheZuWenn (GoToIf)",
+    "GOTOP": "Priorität zuweisen (GoToP)",
+    "NOOP": "Log erstellen (NoOp)",
     "AGENT": "Agent",
-    "NOTES": "Hinweise",
-    "CLOSEDAT": "Geschlossen",
-    "DISPOSITION": "Disposition",
+    "NOTES": "Anmerkungen",
+    "CLOSEDAT": "Geschlossen am",
+    "DISPOSITION": "Qualifizierung",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
-    "VOICE": "Voice",
+    "IN_USE": "In Verwendung",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_FAXQUEUE": "In Echtzeit Fax Warteschlange",
-    "EDIT_TRUNK": "Bearbeiten Trunk",
+    "GOTOREALTIME_FAXQUEUE": "Zur Echtzeitansicht Warteschlange",
+    "EDIT_TRUNK": "Trunk bearbeiten",
     "REGISTERED": "Registriert",
-    "EDIT_ACCOUNT": "Fax Konto bearbeiten",
-    "PARTIALPAUSE": "Teilweise Pause",
+    "EDIT_ACCOUNT": "Fax-Konto bearbeiten",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
-    "TOTAL": "Insgesamt",
-    "IN": "In",
-    "OUT": "Aus",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "TOTAL": "Gesamt",
+    "IN": "Eingehend",
+    "OUT": "Ausgehend",
+    "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
     "TAGS": "Tags",
     "REPLY": "Antwort",
     "SEND": "Senden",
-    "TO": "Zu",
+    "TO": "An",
     "FROM": "Von",
-    "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",
+    "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",
     "DELETE_INTERACTION": "Interaktion löschen",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
-    "VARIABLE": "Variable",
+    "VARIABLE": "Variabel",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Sound abspielen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
+    "WAITFORTHEASSIGNEDAGENT": "Auf zugewiesenen Agenten warten",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Etikett",
-    "AGENTADD_FAXACCOUNT": "Fügen Sie dem Faxkonto einen Agenten hinzu",
-    "AGENTTRANSFER": "Agent Transfer",
+    "TAG": "Tag",
+    "AGENTADD_FAXACCOUNT": "Agenten zum Fax-Konto hinzufügen",
+    "AGENTTRANSFER": "Transfer an Agenten erlauben",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
+    "QUEUETRANSFER": "Transfer in Warteschlange erlauben",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
     "TRANSFER": "Transfer",
-    "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",
+    "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",
     "LASTMESSAGE": "Letzte Nachricht"
   }
 }
index 1bff537..5eed611 100644 (file)
@@ -1,26 +1,26 @@
 {
   "FAX": {
-    "TEAMADD_FAXQUEUE": "Voeg Team Fax wachtrij",
-    "AGENTADD_FAXQUEUE": "Voeg Agent Fax wachtrij",
+    "TEAMADD_FAXQUEUE": "Team aan Fax wachtrij Toevoegen",
+    "AGENTADD_FAXQUEUE": "Agent aan Fax wachtrij Toevoegen",
     "NAME": "Naam",
     "FAXQUEUES": "Faxwachtrijen",
-    "SEARCH_FOR_ANYONE": "Zoeken voor iedereen",
+    "SEARCH_FOR_ANYONE": "Zoeken",
     "ERRORS": {
-      "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",
+      "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",
       "KEY_MAX_LENGTH": "Sleutel moet een lengte gelijk aan {{max.}}",
-      "KEY_REQUIRED": "De sleutel is vereist",
+      "KEY_REQUIRED": "Verplicht veld",
       "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": "Voeg Fax wachtrij",
-    "EDIT_FAXQUEUE": "Edit Fax wachtrij",
-    "DELETE_FAXQUEUE": "Verwijder Fax wachtrij",
+    "ADD_FAXQUEUE": "Fax Wachtrij Toevoegen",
+    "EDIT_FAXQUEUE": "Fax Wachtrij Bewerken",
+    "DELETE_FAXQUEUE": "Fax Wachtrij Verwijderen",
     "CREATED_AT": "Gemaakt op",
     "SAVE": "Opslaan",
     "SETTINGS": "Instellingen",
     "GENERAL": "Algemeen",
     "FAXACCOUNTS": "Fax Accounts",
-    "MOTIONADDRESS": "Motion adres",
-    "ADD_FAXACCOUNT": "Voeg Fax Account",
-    "EDIT_FAXACCOUNT": "Edit Fax Account",
-    "DELETE_FAXACCOUNT": "Verwijder Fax Account",
+    "MOTIONADDRESS": "Motion Adres",
+    "ADD_FAXACCOUNT": "Fax Account Toevoegen",
+    "EDIT_FAXACCOUNT": "Fax Account Bewerken",
+    "DELETE_FAXACCOUNT": "Fax Account Verwijderen",
     "DISPOSITIONS": "Dispositions",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Acties",
     "LIST": "Lijst",
     "FIDELITY": "Hifi-geluid",
     "ACCEPT": "Accepteren",
-    "ACCEPTMETHOD": "Accepteren methode",
-    "ACCEPTURL": "URL accepteren",
+    "ACCEPTMETHOD": "Mehode Accepteren",
+    "ACCEPTURL": "URL Sccepteren",
     "REJECT": "Afwijzen",
     "REJECTMETHOD": "Methode afwijzen",
     "REJECTURL": "URL afwijzen",
     "CLOSE": "Dicht",
-    "CLOSEMETHOD": "Sluit methode",
-    "CLOSEURL": "Sluit URL",
-    "TRUNK": "Transmissielijn",
+    "CLOSEMETHOD": "Methode Sluiten",
+    "CLOSEURL": "URL Sluiten",
+    "TRUNK": "Trunk",
     "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 voordat de versnellingsbak. Mogelijke waarden zijn: 2400, 4800, 7200, 9600, 12000 of 14400.",
+      "MINRATE": "Min overdrachtssnelheid instellen. 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": "Alles selecteren",
-    "SELECT_NONE": "Selecteer None (Geen).",
+    "SELECT_ALL": "Selecteer Alles",
+    "SELECT_NONE": "Selecteer Geen",
     "BACK": "Terug",
     "FAX": "Fax",
     "ID": "Id",
     "TIMEOUT": "Timeout",
-    "FAXDISPOSITIONS": "Fax dispositieven",
-    "NO_FAXDISPOSITION_AVAILABLE": "Geen Fax Dispositieven beschikbaar",
-    "NEW_FAXDISPOSITION": "Nieuwe fax dispositie",
+    "FAXDISPOSITIONS": "Fax Disposities",
+    "NO_FAXDISPOSITION_AVAILABLE": "Geen Fax Disposities 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": "Nieuwe fax Account",
+    "EDIT_FAXDISPOSITION": "Edit Fax Dispositie",
+    "DELETE_FAXDISPOSITION": "Verwijder Fax Dispositie",
+    "NEW_FAXQUEUE": "Nieuwe Fax Wachtrij",
+    "NEW_FAXACCOUNT": "Nieuw 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": "Account selecteren",
+    "SELECT_ACCOUNT": "Selecteer Account",
     "INTERACTIONS": "Interacties",
     "CONTACT": "Neem contact op met",
     "STARTEDAT": "Gestart op",
     "TRUEPRIORITY": "Echte prioriteit",
     "FALSEPRIORITY": "False prioriteit",
     "VALUE": "Waarde",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Ga naar bewerken",
+    "EDIT_AGENT": "Agent Bewerken",
+    "EDIT_GOTO": "Ga naar Bewerken",
     "EDIT_NOOP": "Noop bewerken",
     "EDIT_GOTOP": "GotoP bewerken",
     "EDIT_GOTOIF": "GotoIf bewerken",
-    "EDIT_QUEUE": "Edit Fax wachtrij",
-    "EDIT_CLOSE": "Edit dicht",
+    "EDIT_QUEUE": "Fax wachtrij Bewerken",
+    "EDIT_CLOSE": "Bewerken Sluiten",
     "QUEUE": "Wachtrij",
     "GOTOIF": "GotoIf",
     "GOTOP": "GotoP",
     "DISPOSITION": "Afvoeren",
     "REALTIME": "Realtime",
     "UNKNOWN": "Onbekend",
-    "UNREGISTERED": "Unregistered",
+    "UNREGISTERED": "Niet geregistreerd",
     "UNAVAILABLE": "Niet beschikbaar",
     "NOT_INUSE": "Niet in gebruik",
     "REACHABLE": "Bereikbaar",
     "IN_USE": "In gebruik",
-    "VOICE": "Spraak",
+    "VOICE": "Telefonie",
     "CHAT": "Chat",
     "MAIL": "Mail",
     "SMS": "SMS",
     "REFRESH_INTERACTIONS": "Interacties vernieuwen",
     "NO_FAXCANNEDANSWER_AVAILABLE": "Geen ingeblikte antwoorden beschikbaar",
     "NEW_FAXCANNEDANSWER": "Nieuw ingebouwd antwoord",
-    "ADD_FAXCANNEDANSWER": "Voeg ingebed antwoord toe",
-    "EDIT_CHATCANNEDANSWER": "Ingebouwd antwoord bewerken",
-    "DELETE_CHATCANNEDANSWER": "Ingebouwd antwoord verwijderen",
+    "ADD_FAXCANNEDANSWER": "Standaard antwoord Toevoegen",
+    "EDIT_CHATCANNEDANSWER": "Standaard antwoord bewerken",
+    "DELETE_CHATCANNEDANSWER": "Standaard 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": "Bewerk label",
+    "EDIT_TAG": "Label Bewerken",
     "TAG": "Label",
-    "AGENTADD_FAXACCOUNT": "Agent toevoegen aan faxaccount",
+    "AGENTADD_FAXACCOUNT": "Agent aan faxaccount Toevoegen",
     "AGENTTRANSFER": "Agent Transfer",
     "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
     "QUEUETRANSFER": "Wachtrijoverdracht",
     "QUEUETRANSFERTIMEOUT": "Wachtrij Transfer Timeout",
     "TRANSFER": "Overdracht",
-    "CANNEDANSWERS": "Ingeblikte antwoorden",
+    "CANNEDANSWERS": "Standaard antwoorden",
     "DOWNLOAD_INTERACTION": "Download",
-    "FAXCANNEDANSWERS": "Ingeblikte antwoorden",
+    "FAXCANNEDANSWERS": "Standaard antwoorden",
     "LOGIN_TIME": "Aanmeldtijd",
     "PAUSE_TIME": "Pauzetijd",
     "TEAMS_ASSOCIATION": "Teams Association",
index 0b91115..3b562c6 100644 (file)
@@ -41,7 +41,7 @@
     "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
     "TIMER": "Tempo",
-    "IDLE": "Disponível",
+    "IDLE": "Ocioso",
     "CAPACITY": "Capacidade",
     "GOTO_FAXACCOUNT": "Ir para fax em tempo real",
     "ACCOUNTS": "Contas",
index 86fc6e0..3f58330 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
     "ABOUT": "Sobre",
-    "CONTACT_US": "Fale conosco",
+    "CONTACT_US": "Contate-Nos",
     "HELP": "Ajuda",
-    "USEFUL_LINKS": "Links úteis"
+    "USEFUL_LINKS": "Links Úteis"
   }
 }
index 387af87..f907009 100644 (file)
@@ -8,42 +8,42 @@
     "URI": "URL",
     "BACK": "Terug",
     "SELECTED": "Geselecteerd",
-    "SELECT_ALL": "Alles selecteren",
-    "SELECT_NONE": "Selecteer None (Geen).",
-    "EDIT_ZENDESKACCOUNT": "Edit Zendesk Account",
-    "DELETE_ZENDESKACCOUNT": "Verwijder Zendesk Account",
-    "NEW_ZENDESKACCOUNT": "Nieuwe Zendesk Account",
+    "SELECT_ALL": "Selecteer Alles",
+    "SELECT_NONE": "Selecteer Geen",
+    "EDIT_ZENDESKACCOUNT": "Zendesk Account Bewerken",
+    "DELETE_ZENDESKACCOUNT": "Zendesk Account Verwijderen",
+    "NEW_ZENDESKACCOUNT": "Nieuw Zendesk Account",
     "AUTHTYPE": "Authentication Type (Verificatietype)",
     "PASSWORD": "Wachtwoord",
-    "CONFIRM_PASSWORD": "Wachtwoord bevestigen",
+    "CONFIRM_PASSWORD": "Wachtwoord Bevestigen",
     "TOKEN": "Token",
-    "MOTIONPROXYADDRESS": "Beweging of Proxy IP Adres",
+    "MOTIONPROXYADDRESS": "Motion of Proxy IP Adres",
     "DESCRIPTION": "Beschrijving",
-    "ADD_ZENDESKACCOUNT": "Voeg Zendesk Account",
+    "ADD_ZENDESKACCOUNT": "Zendesk Account Toevoegen",
     "ERRORS": {
-      "NAME_REQUIRED": "De naam is verplicht",
-      "USERNAME_REQUIRED": "De gebruikersnaam is vereist",
-      "URI_REQUIRED": "De URL is vereist",
+      "NAME_REQUIRED": "Verplicht veld",
+      "USERNAME_REQUIRED": "Verplicht veld",
+      "URI_REQUIRED": "Verplicht veld",
       "URI_MUST_VALID_URL": "De URL (Uniform Resource Identifier) moet worden geschreven in een geldige indeling",
-      "PASSWORD_REQUIRED": "Het wachtwoord is vereist",
-      "CONFIRM_NOT_MATCH": "De wachtwoorden Don' t match",
+      "PASSWORD_REQUIRED": "Verplicht veld",
+      "CONFIRM_NOT_MATCH": "De wachtwoorden komen niet overeen",
       "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": "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",
+      "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",
       "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": "Nee Zendesk configuraties beschikbaar",
+    "NO_ZENDESKCONFIGURATION_AVAILABLE": "Geen Zendesk configuraties beschikbaar",
     "NEW_ZENDESKCONFIGURATION": "Nieuwe Zendesk configuratie",
-    "ADD_ZENDESKCONFIGURATION": "Voeg Zendesk configuratie",
-    "EDIT_ZENDESKCONFIGURATION": "Edit Zendesk configuratie",
-    "DELETE_ZENDESKCONFIGURATION": "Verwijder Zendesk configuratie",
+    "ADD_ZENDESKCONFIGURATION": "Zendesk configuratie Toevoegen",
+    "EDIT_ZENDESKCONFIGURATION": "Zendesk configuratie Bewerken",
+    "DELETE_ZENDESKCONFIGURATION": "Zendesk configuratie Verwijderen",
     "NO_SALESFORCECONFIGURATION_AVAILABLE": "Geen Salesforce-configuraties beschikbaar",
     "NEW_SALESFORCECONFIGURATION": "Nieuwe Salesforce-configuratie",
-    "ADD_SALESFORCECONFIGURATION": "Voeg Salesforce-configuratie",
-    "EDIT_SALESFORCECONFIGURATION": "Edit Salesforce-configuratie",
-    "DELETE_SALESFORCECONFIGURATION": "Verwijder Salesforce-configuratie",
-    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "Nee SugarCRM configuraties beschikbaar",
+    "ADD_SALESFORCECONFIGURATION": "Salesforce-configuratie Toevoegen",
+    "EDIT_SALESFORCECONFIGURATION": "Salesforce-configuratie Bewerken",
+    "DELETE_SALESFORCECONFIGURATION": "Salesforce-configuratie Verwijderen",
+    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "Geen SugarCRM configuraties beschikbaar",
     "NEW_SUGARCRMCONFIGURATION": "Nieuwe SugarCRM Configuratie",
-    "ADD_SUGARCRMCONFIGURATION": "Voeg SugarCRM Configuratie",
-    "EDIT_SUGARCRMCONFIGURATION": "Edit SugarCRM Configuratie",
-    "DELETE_SUGARCRMCONFIGURATION": "Verwijder SugarCRM Configuratie",
-    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Nee Freshdesk configuraties beschikbaar",
+    "ADD_SUGARCRMCONFIGURATION": "SugarCRM Configuratie Toevoegen",
+    "EDIT_SUGARCRMCONFIGURATION": "SugarCRM Configuratie Bewerken",
+    "DELETE_SUGARCRMCONFIGURATION": "SugarCRM Configuratie Verwijderen",
+    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Geen Freshdesk configuraties beschikbaar",
     "NEW_FRESHDESKCONFIGURATION": "Nieuwe Freshdesk configuratie",
-    "ADD_FRESHDESKCONFIGURATION": "Voeg Freshdesk configuratie",
-    "EDIT_FRESHDESKCONFIGURATION": "Edit Freshdesk configuratie",
-    "DELETE_FRESHDESKCONFIGURATION": "Verwijder Freshdesk configuratie",
+    "ADD_FRESHDESKCONFIGURATION": "Freshdesk configuratie Toevoegen",
+    "EDIT_FRESHDESKCONFIGURATION": "Freshdesk configuratie Bewerken",
+    "DELETE_FRESHDESKCONFIGURATION": "Freshdesk configuratie Verwijderen",
     "SALESFORCEACCOUNTS": "Salesforce-accounts",
-    "EDIT_SALESFORCEACCOUNT": "Edit Salesforce-account",
-    "DELETE_SALESFORCEACCOUNT": "Verwijder Salesforce-account",
-    "NEW_SALESFORCEACCOUNT": "Nieuwe Salesforce-account",
-    "ADD_SALESFORCEACCOUNT": "Voeg Salesforce-account",
+    "EDIT_SALESFORCEACCOUNT": "Salesforce-account Bewerken",
+    "DELETE_SALESFORCEACCOUNT": "Salesforce-account Verwijderen",
+    "NEW_SALESFORCEACCOUNT": "Nieuw Salesforce-account",
+    "ADD_SALESFORCEACCOUNT": "Salesforce-account Toevoegen",
     "CLIENTID": "Klantnr.",
     "CLIENTSECRET": "Opdrachtgever geheim",
     "SECURITYTOKEN": "Beveiligingstoken",
     "SEARCH_FOR_ANYONE": "Zoeken voor iedereen",
     "APIKEY": "Api-sleutel",
     "FRESHDESKACCOUNTS": "Freshdesk Accounts",
-    "EDIT_FRESHDESKACCOUNT": "Edit Freshdesk Account",
-    "DELETE_FRESHDESKACCOUNT": "Verwijder Freshdesk Account",
-    "NEW_FRESHDESKACCOUNT": "Nieuwe Freshdesk Account",
-    "ADD_FRESHDESKACCOUNT": "Voeg Freshdesk Account",
+    "EDIT_FRESHDESKACCOUNT": "Freshdesk Account Bewerken",
+    "DELETE_FRESHDESKACCOUNT": "Freshdesk Account Verwijderen",
+    "NEW_FRESHDESKACCOUNT": "Nieuw Freshdesk Account",
+    "ADD_FRESHDESKACCOUNT": "Freshdesk Account Toevoegen",
     "SUGARCRMACCOUNTS": "SugarCRM Accounts",
-    "EDIT_SUGARCRMACCOUNT": "Edit SugarCRM Account",
-    "DELETE_SUGARCRMACCOUNT": "Verwijder SugarCRM Account",
-    "NEW_SUGARCRMACCOUNT": "Nieuwe SugarCRM Account",
-    "ADD_SUGARCRMACCOUNT": "Voeg SugarCRM Account",
+    "EDIT_SUGARCRMACCOUNT": "SugarCRM Account Bewerken",
+    "DELETE_SUGARCRMACCOUNT": "SugarCRM Account Verwijderen",
+    "NEW_SUGARCRMACCOUNT": "Nieuw SugarCRM Account",
+    "ADD_SUGARCRMACCOUNT": "SugarCRM Account Toevoegen",
     "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": "Edit description (beschrijving bewerken)",
-    "DELETE_DESCRIPTION": "Beschrijving verwijderen",
+    "ADD_SUBJECT": "Onderwerp Toevoegen",
+    "EDIT_DESCRIPTION": "Beschrijving Bewerken",
+    "DELETE_DESCRIPTION": "Beschrijving Verwijderen",
     "NEW_DESCRIPTION": "Nieuwe beschrijving",
-    "ADD_DESCRIPTION": "Voeg de beschrijving",
-    "EDIT_FIELD": "Invoerveld",
-    "DELETE_FIELD": "Veld wissen",
+    "ADD_DESCRIPTION": "Beschrijving Toevoegen",
+    "EDIT_FIELD": "Invoerveld Bewerken",
+    "DELETE_FIELD": "Veld Verwijderen",
     "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": "Edit Desk Account",
+    "EDIT_DESKACCOUNT": "Desk Account Bewerken",
     "TEST_DESKACCOUNT": "Test Desk Account",
-    "DELETE_DESKACCOUNT": "Verwijder Desk Account",
+    "DELETE_DESKACCOUNT": "Desk Account Verwijderen",
     "CONSUMERKEY": "Toets voor consumenten",
     "CONSUMERSECRET": "Consument geheim",
     "TOKENSECRET": "Token geheim",
-    "ADD_DESKACCOUNT": "Voeg Desk Account",
-    "NEW_DESKACCOUNT": "Nieuwe Desk Account",
-    "ADD_DESKCONFIGURATION": "Voeg Desk-configuratie",
+    "ADD_DESKACCOUNT": "Desk Account Toevoegen",
+    "NEW_DESKACCOUNT": "Nieuw Desk Account",
+    "ADD_DESKCONFIGURATION": "Desk-configuratie Toevoegen",
     "NEW_DESKCONFIGURATION": "Nieuwe Desk-configuratie",
-    "DELETE_DESKCONFIGURATION": "Verwijder Desk-configuratie",
+    "DELETE_DESKCONFIGURATION": "Desk-configuratie Verwijderen",
     "ZOHOACCOUNTS": "Zoho Accounts",
-    "EDIT_ZOHOACCOUNT": "Edit Zoho Account",
+    "EDIT_ZOHOACCOUNT": "Zoho Account Bewerken",
     "TEST_ZOHOACCOUNT": "Test Zoho Account",
-    "DELETE_ZOHOACCOUNT": "Verwijder Zoho Account",
-    "ADD_ZOHOACCOUNT": "Voeg Zoho Account",
-    "NEW_ZOHOACCOUNT": "Nieuwe Zoho Account",
-    "ADD_ZOHOCONFIGURATION": "Voeg Zoho configuratie",
+    "DELETE_ZOHOACCOUNT": "Zoho Account Verwijderen",
+    "ADD_ZOHOACCOUNT": "Zoho Account Toevoegen",
+    "NEW_ZOHOACCOUNT": "Nieuw Zoho Account",
+    "ADD_ZOHOCONFIGURATION": "Zoho configuratie Toevoegen",
     "NEW_ZOHOCONFIGURATION": "Nieuwe Zoho configuratie",
     "AUTHTOKEN": "Autorisatie Token",
     "HOST": "Host",
-    "DELETE_ZOHOCONFIGURATION": "Verwijder Zoho configuratie",
+    "DELETE_ZOHOCONFIGURATION": "Zoho configuratie Verwijderen",
     "PAGE": "Pagina",
     "ROWSPERPAGE": "Rijen per pagina",
     "OF": "Van",
     "MODULE_SEARCH": "Module zoeken",
     "MODULE_CREATE": "Module aanmaken",
     "ACCESS_KEY": "vTiger Toegangssleutel",
-    "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",
+    "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",
     "MODULE_NAME": "vTiger Module naam",
     "NEW_VTIGERACCOUNT": "Nieuw vTiger-account",
-    "NEW_VTIGERCONFIGURATION": "Maak vTiger-configuratie",
+    "NEW_VTIGERCONFIGURATION": "Nieuwe vTiger-configuratie",
     "TEST_VTIGERACCOUNT": "Test vTiger-account",
     "VTIGERACCOUNTS": "vTiger-accounts",
     "VTIGER_USER_NAME": "vTiger-gebruikersnaam",
-    "ADD_DYNAMICS365ACCOUNT": "Voeg een nieuw Dynamics365-account toe",
-    "ADD_DYNAMICS365CONFIGURATION": "Dynamics365-configuratie toevoegen",
+    "ADD_DYNAMICS365ACCOUNT": "Dynamics365-account Toevoegen",
+    "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": "Maak een Dynamics365-configuratie",
+    "NEW_DYNAMICS365CONFIGURATION": "Nieuwe 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": "Maak ServiceNow-configuratie",
+    "NEW_SERVICENOWCONFIGURATION": "Nieuw ServiceNow-configuratie",
     "SERVICENOWACCOUNTS": "ServiceNow Accounts",
     "TEST_SERVICENOWACCOUNT": "Test ServiceNow Account",
     "TASK": "Taak",
     "CONTACTS": "Contact",
     "LEADS": "Lood",
     "MODULECREATE": "Module maken",
-    "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",
+    "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",
     "FRESHSALESACCOUNTS": "Freshsales Accounts",
     "NEW_FRESHSALESACCOUNT": "Nieuw Freshsales-account",
     "NEW_FRESHSALESCONFIGURATION": "Nieuwe Freshsales-configuratie",
index 66c41f9..7c99ef6 100644 (file)
     "TEST_SALESFORCEACCOUNT": "Testar conta do Salesforce",
     "INTEGRATION_TAB": "Guia Integração",
     "NEW_TAB": "Nova aba",
-    "DESKACCOUNTS": "Contas Desk.com",
-    "EDIT_DESKACCOUNT": "Editar conta Desk.com",
-    "TEST_DESKACCOUNT": "Testar conta Desk.com",
-    "DELETE_DESKACCOUNT": "Excluir conta Desk.com",
+    "DESKACCOUNTS": "Contas de mesa",
+    "EDIT_DESKACCOUNT": "Editar conta de mesa",
+    "TEST_DESKACCOUNT": "Conta de teste de mesa",
+    "DELETE_DESKACCOUNT": "Excluir conta de mesa",
     "CONSUMERKEY": "Chave do consumidor",
     "CONSUMERSECRET": "Consumidor secreto",
     "TOKENSECRET": "Segredo do Token",
-    "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",
+    "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",
     "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 Freshsales",
+    "ADD_FRESHSALESCONFIGURATION": "Adicionar configuração de vendas frescas",
     "DELETE_FRESHSALESACCOUNT": "Excluir conta Freshsales",
-    "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",
+    "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",
     "ADDITIONALSEARCHACCOUNT": "Conta de pesquisa adicional",
     "ADDITIONALSEARCHCONTACT": "Contato de pesquisa adicional",
     "ADDITIONALSEARCHLEAD": "Lead de pesquisa adicional",
index 40b33e8..25c5da4 100644 (file)
@@ -1,17 +1,17 @@
 {
   "JSCRIPTY": {
     "NAME": "Name",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "DESCRIPTION": "Beschreibung",
     "ERRORS": {
-      "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"
+      "NAME_REQUIRED": "Name erforderlich",
+      "PROJECT_REQUIRED": "Projekt erforderlich",
+      "FIELD_REQUIRED": "Feld erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Ungültiges Format Name"
     },
     "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": "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"
+      "ENABLEUNCOMPLETESAVE": "Speichert die Eingaben, auch wenn Formular noch nicht abgeschlossen",
+      "SENDUNPAUSEONSUBMIT": "Agentenpause nach Absenden des Formulars beenden"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "JSCRIPTYSESSIONS": "Projektsitzungen",
+    "OF": "von",
+    "JSCRIPTYSESSIONS": "Script-Sitzungen",
     "SESSIONS": "Sitzungen",
     "STARTTIME": "Startzeit",
     "ENDTIME": "Endzeit",
     "MEMBERNAME": "Mitgliedsname",
-    "CALLERIDNUM": "Rufnummer des Anrufers",
+    "CALLERIDNUM": "Telefonnummer des Anrufers",
     "NO_SESSION_AVAILABLE": "Keine Sitzungen verfügbar",
-    "SESSION_RESULTS": "Sitzung Ergebnisse",
-    "SHOW_QUESTIONS_SESSION": "Sitzung Ergebnisse anzeigen",
+    "SESSION_RESULTS": "Ergebnisse",
+    "SHOW_QUESTIONS_SESSION": "Ergebnisse anzeigen",
     "ANSWERS": "Antworten",
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
-    "TOTAL": "Insgesamt",
+    "TOTAL": "Gesamt",
     "ANSWER": "Antwort",
-    "EXPORT_TO_CSV": "Export in CSV",
+    "EXPORT_TO_CSV": "In CSV-Datei exportieren",
     "NO_ANSWERS_AVAILABLE": "Keine Antworten vorhanden",
-    "DELETE_SESSION": "Session löschen",
+    "DELETE_SESSION": "Sitzung löschen",
     "RESET_SESSION": "Sitzung neu starten",
     "YES": "Ja",
-    "NO": "Keine",
-    "DO_YOU_WANT_TO_RESET_SESSION": "Möchten Sie die Sitzung zurücksetzen?",
+    "NO": "Nein",
+    "DO_YOU_WANT_TO_RESET_SESSION": "Sitzung wirklich zurücksetzen?",
     "ALL_SURVEY_DATA_WILL_BE_LOST": "Alle Antworten auf die Umfragen gehen verloren!",
-    "ENABLEUNCOMPLETESAVE": "Aktivieren Sie unvollständig speichern",
+    "ENABLEUNCOMPLETESAVE": "Speichern wenn unvollständig",
     "SUBMIT": "Senden",
     "PROJECT_NOT_AVAILABLE": "Projekt ist nicht verfügbar. Bitte wenden Sie sich an den Administrator",
-    "COMPLETE": "Komplette",
-    "CLONE_PROJECT": "Klonprojekt",
-    "SESSIONS_PROJECT": "Gehe zu den Sitzungen",
-    "SENDUNPAUSEONSUBMIT": "Agent beim Senden abschalten"
+    "COMPLETE": "Abgeschlossen",
+    "CLONE_PROJECT": "Projekt duplizieren",
+    "SESSIONS_PROJECT": "Direkt zu den Sitzungen gehen",
+    "SENDUNPAUSEONSUBMIT": "Agentenpause nach Absenden beenden"
   },
   "mwForm": {
     "form": {
-      "name": "Title",
-      "name.placeholder": "Form title",
-      "description": "Description"
+      "name": "Titel",
+      "name.placeholder": "Titel hier eingeben",
+      "description": "Beschreibung"
     },
     "buttons": {
-      "addPage": "Add page",
-      "moveDown": "Move down",
-      "moveUp": "Move up",
-      "removePage": "Remove page",
-      "remove": "Remove",
-      "addElement": "Add element",
-      "questionReady": "Ready",
-      "next": "Next",
-      "back": "Back",
-      "submit": "Submit",
-      "begin": "Begin",
-      "fold": "Fold",
-      "unfold": "Unfold",
-      "edit": "Edit",
-      "clone": "Clone",
-      "view": "View"
+      "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"
     },
     "page": {
       "tab": {
-        "heading": "Page {{page}} of {{allPages}}"
+        "heading": "Seite {{page}} von {{allPages}}"
       },
       "elements": {
-        "empty": "Empty page"
+        "empty": "Leere Seite"
       },
-      "pageWithNameCheckbox": "named",
-      "name": "Page name"
+      "pageWithNameCheckbox": "Benannt",
+      "name": "Seitenname"
     },
     "pageFlow": {
-      "afterPage": "After page {{page}}:",
-      "afterQuestionAnswer": "Go to page based on answer",
-      "goToPage": "Go to page {{page.number}}",
-      "goToNextPage": "Continue to next page",
-      "submitForm": "Submit form"
+      "afterPage": "Nächste Seite {{page}}:",
+      "afterQuestionAnswer": "Seitenwechsel basierend auf Antwort",
+      "goToPage": "Gehe zu Seite {{page.number}}",
+      "goToNextPage": "Zur nächsten Seite",
+      "submitForm": "Formular übermitteln"
     },
     "elements": {
-      "question": "Question",
-      "image": "Image",
-      "paragraph": "Paragraph"
+      "question": "Frage",
+      "image": "Bild",
+      "paragraph": "Paragraf"
     },
     "question": {
       "types": {
         "text": {
-          "name": "Short text"
+          "name": "Kurztext"
         },
         "textarea": {
-          "name": "Long text"
+          "name": "Langer Text"
         },
         "radio": {
-          "name": "Radio"
+          "name": "Radio-Button"
         },
         "select": {
-          "name": "Select"
+          "name": "Auswahl"
         },
         "checkbox": {
-          "name": "Checkboxes"
+          "name": "Checkboxen"
         },
         "grid": {
-          "name": "Grid"
+          "name": "Raster"
         },
         "priority": {
-          "name": "Priority"
+          "name": "Priorität"
         },
         "division": {
-          "name": "Division"
+          "name": "Abteilung"
         },
         "number": {
-          "name": "Number"
+          "name": "Nummer"
         },
         "date": {
-          "name": "Date"
+          "name": "Datum"
         },
         "datetime": {
-          "name": "Datetime"
+          "name": "Zeitstempel"
         },
         "time": {
-          "name": "Time"
+          "name": "Zeit"
         },
         "email": {
-          "name": "Email"
+          "name": "E-Mail"
         },
         "range": {
-          "name": "Range"
+          "name": "Bereich"
         },
         "url": {
           "name": "URL"
         }
       },
-      "text": "Question text",
-      "type": "Question type",
-      "required": "Required",
+      "text": "Fragetext",
+      "type": "Fragetyp",
+      "required": "Erforderlich",
       "preview": {
-        "text": "Short answer text",
-        "textarea": "Long answer text",
-        "otherAnswer": "Other"
+        "text": "Kurztext",
+        "textarea": "Langer Text",
+        "otherAnswer": "Weitere"
       },
       "division": {
-        "quantity": "Quantity",
-        "unit": "Unit label",
-        "assignedSumLabel": "Assigned",
-        "fromRequiredLabel": "from required"
+        "quantity": "Anzahl",
+        "unit": "Einheit",
+        "assignedSumLabel": "Label Zugewiesen",
+        "fromRequiredLabel": "Label Absender erforderlich"
       },
       "priority": {
-        "sorted": "Sorted",
-        "available": "Available",
-        "clickToAddItem": "Click to add item"
+        "sorted": "Sortiert",
+        "available": "Verfügbar",
+        "clickToAddItem": "Klicken, um Element hinzuzufügen"
       },
       "grid": {
-        "cellInputType": "Cell input type",
+        "cellInputType": "Eingabetyp",
         "cellInputTypes": {
-          "radio": "Radio",
+          "radio": "Radio-Button",
           "checkbox": "Checkbox",
           "text": "Text",
-          "number": "Number",
-          "date": "Date",
-          "time": "Time"
+          "number": "Checkbox",
+          "date": "Datum",
+          "time": "Zeit"
         },
-        "rowLabel": "Row {{row}}",
-        "clickToAddRow": "Click to add row",
-        "columnLabel": "Column {{col}}",
-        "clickToAddColumn": "Click to add column"
+        "rowLabel": "Zeile {{row}}",
+        "clickToAddRow": "Klicken, um Zeile hinzuzufügen",
+        "columnLabel": "Spalte {{col}}",
+        "clickToAddColumn": "Klicken, um Spalte hinzuzufügen"
       },
       "range": {
-        "from": "Range from",
-        "to": "to"
+        "from": "Bereich von",
+        "to": "bis"
       },
       "number": {
         "min": "Min",
         "max": "Max"
       },
-      "orLabel": "or ",
-      "otherLabel": "Other: ",
-      "userAnswer": "User answer",
+      "orLabel": "oder ",
+      "otherLabel": "Weitere: ",
+      "userAnswer": "Antwort Nutzer",
       "buttons": {
-        "addOption": "Click to add option",
-        "addOther": "Add 'Other'"
+        "addOption": "Klicken, um Option hinzuzufügen",
+        "addOther": "Weitere hinzufügen"
       }
     },
     "image": {
-      "selectImageButton": "Select image",
-      "caption": "Image caption"
+      "selectImageButton": "Bild auswählen",
+      "caption": "Screenshot einfügen"
     },
     "paragraph": {
-      "placeholder": "Enter paragraph text"
+      "placeholder": "Text für Paragrafen eingeben"
     },
     "confirmationPage": {
-      "title": "Confirmation page",
-      "customMessage": "Custom confirmation message",
-      "defaultMessage": "Your response has been saved",
-      "errorMessage": "Error! Your response has not been saved",
-      "pendingMessage": "Your response is being saved."
+      "title": "Bestätigungsseite",
+      "customMessage": "Nachricht erfolgreiche Übermittlung",
+      "defaultMessage": "Ihre Eingaben wurden gespeichert",
+      "errorMessage": "Fehler beim Speichern Ihrer Eingaben",
+      "pendingMessage": "Ihre Eingaben werden gespeichert"
     }
   }
 }
index 1aa6dcf..a39d9fd 100644 (file)
@@ -1,6 +1,6 @@
 {
   "JSCRIPTY": {
-    "CLONE_PROJECT": "Clonar projeto",
+    "CLONE_PROJECT": "Projeto Clone",
     "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": "General",
+    "GENERAL": "Feral",
     "BUILDER": "Builder",
     "PREVIEW": "Visualizar",
     "OPEN_CONTACT": "Contato aberto",
index e258a20..c2b9ea0 100644 (file)
 {
   "MAIL": {
     "TEXT": "Text",
-    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
-    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
+    "TIMES": "Zeitstempel",
+    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "SHOW_AUTOREPLY": "Die automatische Antwort anzeigen",
+    "SHOW_AUTOREPLY": "Automatische Antwort anzeigen",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
-    "TO": "Zu",
+    "TO": "An",
     "FROM": "Von",
     "DATE": "Datum",
-    "CC": "Cc",
-    "REPLY": "Antwort",
+    "CC": "CC",
+    "REPLY": "Antworten",
     "REPLY_ALL": "Allen antworten",
-    "FORWARD": "Vorwärts",
+    "FORWARD": "Weiterleiten",
     "SUBJECT": "Betreff",
-    "BCC": "Bcc",
+    "BCC": "BCC",
     "SEND": "Senden",
     "ATTACHMENT": "Anhang",
     "ATTACHMENTS": "Anhänge",
     "NAME": "Name",
     "MAILQUEUES": "E-Mail Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "SEARCH_FOR_ANYONE": "Suche",
     "STRATEGY": "Strategie",
     "ERRORS": {
-      "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",
+      "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",
       "FIELD_REQUIRED": "Pflichtfeld"
     },
-    "AGENT_TIMEOUT": "Agent Timeout",
+    "AGENT_TIMEOUT": "Zeitüberschreitung Agent",
     "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": "Allgemein",
+    "GENERAL": "Allgemeine Einstellungen",
     "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-Konten löschen",
-    "DISPOSITIONS": "Bestimmungen",
+    "EDIT_MAILACCOUNT": "E-Mail Konto bearbeiten",
+    "DELETE_MAILACCOUNT": "E-Mail Konto löschen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Aktionen",
-    "OTHERS": "Andere",
+    "ACTIONS": "Routing",
+    "OTHERS": "Weitere",
     "LIST": "Liste",
     "TEMPLATE": "Vorlage",
     "FIDELITY": "Treue",
-    "SERVICE": "Service",
+    "SERVICE": "Dienst",
     "CREATED_AT": "Erstellt am",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "In der Nähe",
-    "CLOSEMETHOD": "In der Nähe Methode",
-    "CLOSEURL": "Der URL",
-    "WHITELABEL": "White Label",
-    "SIGNATURE": "Unterschrift",
+    "CLOSE": "Schließen",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
+    "WHITELABEL": "WhiteLabel",
+    "SIGNATURE": "Signatur",
     "IMAP": "IMAP",
     "HOST": "Host",
-    "USERNAME": "Benutzername",
-    "PORT": "Hafen",
+    "USERNAME": "Nutzername",
+    "PORT": "Port",
     "MAILBOX": "Mailbox",
     "FILTER": "Filter",
-    "CONNTIMEOUT": "Connection Timeout [sek]",
-    "AUTHTIMEOUT": "Authentication Timeout [sek]",
+    "CONNTIMEOUT": "Zeitüberschreitung Verbindung (Sek)",
+    "AUTHTIMEOUT": "Zeitüberschreitung Authentifizierung (Sek)",
     "DELETE": "E-Mails vom Server löschen",
     "SSL": "SSL",
     "KEEPALIVE": "Keepalive",
-    "POLLING": "Polling",
+    "POLLING": "Abfrageintervall",
     "SMTP": "SMTP",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "MAIL": "E-Mail",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
+    "ID": "ID",
+    "TIMEOUT": "Zeitüberschreitung",
     "PASSWORD": "Passwort",
-    "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",
+    "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",
     "NEW_MAILQUEUE": "Neue E-Mail Warteschlange",
-    "NEW_MAILACCOUNT": "Neue E-Mail Konto",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "NEW_MAILACCOUNT": "Neues E-Mail Konto",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "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",
+      "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",
       "FONT_SIZE": "Standard Schriftgröße",
-      "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",
+      "MARK_AS_UNREAD": "Deaktivieren/Aktivieren um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID während Qualifizierung",
       "CLOUD_PROVIDER": "Für die Authentifizierung verwendeter Cloud-Anbieter"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "TEAMADD_MAILQUEUE": "Team Chat Warteschlange hinzufügen",
-    "AGENTADD_MAILQUEUE": "Agent zu Chatten Warteschlange hinzufügen",
+    "OF": "von",
+    "TEAMADD_MAILQUEUE": "Team zur Warteschlange hinzufügen",
+    "AGENTADD_MAILQUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "AGENT": "Agent",
-    "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",
+    "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",
     "PRIORITY": "Priorität",
-    "NOOP": "Noop",
-    "EDIT_NOOP": "Bearbeiten Noop",
+    "NOOP": "Log erstellen (NoOp)",
+    "EDIT_NOOP": "Log-Erstellung bearbeiten",
     "VALUE": "Wert",
     "QUEUE": "Warteschlange",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "INTERACTIONS": "Wechselwirkungen",
-    "STARTEDAT": "Gestartet am",
+    "INTERACTIONS": "Interaktionen",
+    "STARTEDAT": "Startdatum",
     "CONTACT": "Kontakt",
-    "CLOSEDAT": "Geschlossen",
-    "NOTES": "Hinweise",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "CLOSEDAT": "Geschlossen am",
+    "NOTES": "Anmerkungen",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
     "ACTIVE": "Aktiv",
-    "SECURE": "Sichere",
+    "SECURE": "Sicher",
     "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": "Öffnen",
+    "OPENED": "Geöffnet",
     "CLOSED": "Geschlossen",
     "ALL": "Alle",
     "SELECT_ACCOUNT": "Konto auswählen",
     "STATUS": "Status",
     "ACCOUNT": "Konto",
-    "OPEN": "Öffnen",
+    "OPEN": "Offen",
     "KEY": "Schlüssel",
     "SMTPSERVICE": "SMTP-Dienst",
-    "UNPAUSE": "Pause beenden",
-    "DEFAULT_PAUSE": "Standard Pause",
+    "UNPAUSE": "Pause abbrechen",
+    "DEFAULT_PAUSE": "Standardpause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agent E-Mail Warteschlange hinzufügen",
-    "VOICE": "Voice",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Channel öffnen",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
     "ACCOUNTS": "Konten",
-    "FULLNAME": "Voller Name",
-    "INTERNAL": "Interne",
-    "PHONE_STATE": "Telefonstatus",
-    "PHONE_STATUS": "Telefonstatus",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
+    "PHONE_STATE": "Status Nebenstelle",
+    "PHONE_STATUS": "SIP-Status Nebenstelle",
     "PAUSE": "Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
     "WAITING": "Warten",
-    "TOTAL": "Insgesamt",
-    "IN": "In",
-    "OUT": "Aus",
+    "TOTAL": "Gesamt",
+    "IN": "Eingehend",
+    "OUT": "Ausgehend",
     "IMAP_STATUS": "IMAP-Status",
     "SMTP_STATUS": "SMTP-Status",
     "DISABLED": "Deaktiviert",
     "CONNECTED": "Verbunden",
-    "NEVER_VERIFIED": "Nie verifiziert",
+    "NEVER_VERIFIED": "Noch nicht verifiziert",
     "ERROR": "Fehler",
     "EDIT_ACCOUNT": "Konto bearbeiten",
-    "VERIFY_SMTP": "Überprüfen Sie die SMTP-",
+    "VERIFY_SMTP": "SMTP-Einstellungen prüfen",
     "VERIFIED": "Überprüft",
-    "VERIFYSMTP_MAILACCOUNT": "Überprüfen Sie die SMTP-",
-    "GOTOREALTIME_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
-    "GOTO_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
+    "VERIFYSMTP_MAILACCOUNT": "SMTP-Accounteinstellungen prüfen",
+    "GOTOREALTIME_MAILACCOUNT": "Direkt zur Echtzeitansicht Konto",
+    "GOTO_MAILACCOUNT": "Zum E-Mail Konto gehen",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
-    "AGENTSADD_QUEUE": "Agenten zu Warteschlange hinzufügen",
-    "INFO": "Info",
+    "IN_USE": "In Verwendung",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "INFO": "Information",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "In Echtzeit, E-Mail Warteschlange",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "GOTOREALTIME_MAILQUEUE": "Direkt zur Echtzeit-Warteschlange",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
-    "SPYINTERACTION": "Spy",
+    "SPYINTERACTION": "Anzeigen",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Hinweis",
+    "NOTE": "Notiz",
     "TAGS": "Tags",
-    "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",
+    "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",
     "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": "Unterstatus hinzufügen",
-    "DELETE_MAILSUBSTATUS": "Löschen",
-    "EDIT_MAILSUBSTATUS": "Bearbeiten",
-    "MAILSUBSTATUSES": "E-Mail-Unterstatus",
-    "NEW_MAILSUBSTATUS": "Neuer Unterstatus",
-    "SEND_AS": "Senden Als",
-    "COMMAND": "Befehl",
+    "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",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
-    "VARIABLE": "Variable",
+    "VARIABLE": "Variabel",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Sound abspielen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
+    "WAITFORTHEASSIGNEDAGENT": "Auf zugewiesenen Agenten warten",
     "EDIT_TAG": "Tag bearbeiten",
-    "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",
+    "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",
     "YOU_ARE_REGISTERED_AS_A": "Sie sind registriert als",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
-    "DOWNLOAD_INTERACTION": "Herunterladen",
-    "MAILCANNEDANSWERS": "Vordefinierte Antworten",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "CANNEDANSWERS": "Textvorlagen",
+    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
+    "MAILCANNEDANSWERS": "E-Mail Textvorlagen",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "DOWNLOAD": "Herunterladen",
-    "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",
+    "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",
     "LASTMESSAGE": "Letzte Nachricht",
     "REPLY_TYPE": "Antworttyp",
     "CLOUD_PROVIDER": "Cloud-Anbieter",
index 3c1e70e..0c88a32 100644 (file)
@@ -55,7 +55,7 @@
     "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
     "TIMER": "Cronômetro",
-    "IDLE": "Disponível",
+    "IDLE": "Ocioso",
     "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 52050f2..3c09c82 100644 (file)
 {
   "MOTIONDIALER": {
-    "MOVE_HOPPERFINAL": "Kontakt wiederherstellen",
+    "MOVE_HOPPERFINAL": "Kontakt bewegen zu Abgeschlossen",
     "RESTORECONTACTS": "Kontakte wiederherstellen",
-    "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",
+    "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",
     "RECALLFAILEDTIMEOUT": "Rückruf fehlgeschlagen",
-    "PREVIEW_CAMPAIGN": "Vorschau Kampagnen",
-    "PREVIEW_CAMPAIGNS": "Vorschau Kampagnen",
-    "AMD": "Sternchen Anrufbeantwortererkennung (AMD)",
-    "AMDTOTALANALYSISTIME": "Insgesamt Analyse Zeit",
-    "AMDACTIVE": "AMD",
-    "AMDINITIALSILENCE": "Erste Stille",
-    "AMDGREETING": "Gruß",
+    "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",
     "AMDAFTERGREETINGSILENCE": "Stille nach Begrüßung",
-    "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",
+    "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)",
     "LOGOUT": "An-/Abmelden",
     "EDIT_CAMPAIGN": "Kampagne bearbeiten",
-    "LIMITED": "Begrenzt",
-    "IVR_CAMPAIGNS": "Ivr-Kampagnen",
-    "MOTIONDIALER": "Motion Bull",
-    "QUEUECAMPAIGNS": "Warteschlange Kampagnen",
+    "LIMITED": "Limitiert",
+    "IVR_CAMPAIGNS": "IVR-Kampagnen",
+    "MOTIONDIALER": "Outbound-Dialer",
+    "QUEUECAMPAIGNS": "Kampagnen",
     "IVRCAMPAIGNS": "IVR-Kampagnen",
     "MANAGED": "Verwaltet",
     "AVAILABLE_CONTACTS_FINISHED": "Kontakte abgeschlossen",
-    "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",
+    "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",
     "STARTTIME": "Startzeit",
-    "RESPONSETIME": "Reaktionszeit",
+    "RESPONSETIME": "Antwortzeit",
     "ENDTIME": "Endzeit",
     "STATUS": "Status",
-    "HOPPERS": "Hopper",
-    "NO_HOPPER_AVAILABLE": "Keine Reihen verfügbar",
-    "EDIT_HOPPER": "Bearbeiten Hopper",
-    "DELETE_HOPPER": "Löschen Hopper",
-    "FINAL": "Endg.",
+    "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",
     "BLACKLIST": "Schwarze Liste",
     "NAME": "Name",
-    "VOICEQUEUES": "Voice Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "VOICEQUEUES": "Anruf-Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "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",
+    "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",
     "DELETE_VOICEQUEUE": "Warteschlange löschen",
-    "MOHSOUNDS": "Moh-Sounds",
+    "MOHSOUNDS": "Wartemusik",
     "STRATEGY": "Strategie",
     "DESCRIPTION": "Beschreibung",
     "INTERVAL": "Zeitintervall",
-    "ADD_VOICEQUEUE": "Voice Warteschlange hinzufügen",
-    "NEW_QUEUECAMPAIGN": "Neue Warteschlange Kampagne",
+    "ADD_VOICEQUEUE": "Anruf-Warteschlange hinzufügen",
+    "NEW_QUEUECAMPAIGN": "Neue Warteschlangen-Kampagne",
     "ACTIVE": "Aktiv",
     "METHOD": "Methode",
-    "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",
+    "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",
     "CAMPAIGN": "Kampagne",
     "MAXCONCURRENTCALLS": "Max. Anzahl gleichzeitiger Anrufe",
-    "CONCURRENTCALLS": "Max. Anzahl gleichzeitiger Anrufe",
-    "ORIGINATE": "Stammen",
-    "ORIGINATECALLERIDNAME": "Die Anrufer-ID-Namen",
-    "ORIGINATECALLERIDNUMBER": "Anrufer-ID-Nummer",
-    "ORIGINATETIMEOUT": "Stammen Timeout",
+    "CONCURRENTCALLS": "Anzahl gleichzeitiger Anrufe",
+    "ORIGINATE": "Rufaufbau",
+    "ORIGINATECALLERIDNAME": "Name Anrufer-ID",
+    "ORIGINATECALLERIDNUMBER": "Angezeigte Nummer",
+    "ORIGINATETIMEOUT": "Zeitüberschreitung Rufaufbau",
     "QUEUEOPTIONS": "Warteschlangenoptionen",
-    "QUEUETIMEOUT": "Warteschlange Timeout",
-    "CALLYSQUAREPROJECT": "Cally Square Projekt",
-    "RETRYANDFREQUENCY": "Wiederholen Sie Einstellungen",
+    "QUEUETIMEOUT": "Zeitüberschreitung Warteschlange",
+    "CALLYSQUAREPROJECT": "Call-Flow Projekt",
+    "RETRYANDFREQUENCY": "Automatische Wiedervorlage",
     "GLOBAL": "Global",
-    "GLOBALMAXRETRY": "Max. Wiederholungen",
-    "CONGESTION": "Überlastung",
-    "CONGESTIONMAXRETRY": "Max. Wiederholungen",
-    "CONGESTIONRETRYTIME": "Wiederholen Zeit [min]",
-    "BUSYMAXRETRY": "Max. Wiederholungen",
-    "BUSYRETRYTIME": "Wiederholen Zeit [min]",
+    "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)",
     "NOANSWER": "Keine Antwort",
-    "NOANSWERMAXRETRY": "Max. Wiederholungen",
-    "NOANSWERRETRYTIME": "Wiederholen Zeit [min]",
-    "QUEUE_PARAMS": "Queue Parameter",
-    "ORIGINATED": "Entstanden",
+    "NOANSWERMAXRETRY": "Max. Wiederversuche bei \"keine Antwort\"",
+    "NOANSWERRETRYTIME": "Erneuter Versuch nach (Minuten)",
+    "QUEUE_PARAMS": "Warteschlangen-Parameter",
+    "ORIGINATED": "Ursprung",
     "MESSAGE": "Nachricht",
-    "DROPPED": "Zurück",
+    "DROPPED": "Vom System aufgelegt (Drop)",
     "CREATED_AT": "Erstellt am",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Benutzerdefinierte Anwendung."
     },
     "ERRORS": {
-      "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",
+      "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",
       "CONFIRM_NOT_MATCH": "Die Passwö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 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",
+      "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",
       "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": "Agent Timeout",
+    "AGENTTIMEOUT": "Zeitüberschreitung Agent",
     "MAXLENGTH": "Maximale Länge",
     "RETRY": "Erneut versuchen",
-    "WRAPUPTIME": "Wrapup Zeit",
-    "WEIGHT": "Gewicht",
-    "JOINWHENEMPTY": "Melden Sie wenn sie leer",
+    "WRAPUPTIME": "Zeit Nacharbeit",
+    "WEIGHT": "Gewichtung",
+    "JOINWHENEMPTY": "Beitreten, wenn leer",
     "LEAVEWHENEMPTY": "Verlassen, wenn leer",
     "HELP": {
-      "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",
+      "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)",
       "ACTIVE": "Aktiv",
-      "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.",
+      "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. ",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "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",
+      "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\" ",
       "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": "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",
+    "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",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
-    "INBOUNDROUTES": "Ankommende Routen",
+    "INBOUNDROUTES": "Eingehende Routen",
     "PHONENUMBER": "Telefonnummer",
-    "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",
+    "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",
     "RECORDINGFORMAT": "Aufzeichnungsformat",
     "INTERNALROUTES": "Interne Routen",
-    "ADD_INTERNALROUTE": "Fügen Sie interne Route",
+    "ADD_INTERNALROUTE": "Interne Route hinzufügen",
     "EDIT_INTERNALROUTE": "Interne Route bearbeiten",
     "DELETE_INTERNALROUTE": "Interne Route löschen",
     "CONTEXTS": "Kontexte",
-    "ADD_CONTEXT": "Rahmen hinzufügen",
-    "EDIT_CONTEXT": "Bearbeiten Kontext",
-    "DELETE_CONTEXT": "Löschen von Rahmen",
+    "ADD_CONTEXT": "Kontext hinzufügen",
+    "EDIT_CONTEXT": "Kontext bearbeiten",
+    "DELETE_CONTEXT": "Kontext löschen",
     "VOICEMAILS": "Voicemails",
     "ADD_VOICEMAIL": "Voicemail hinzufügen",
-    "EDIT_VOICEMAIL": "Bearbeiten von Voicemail",
+    "EDIT_VOICEMAIL": "Voicemail bearbeiten",
     "DELETE_VOICEMAIL": "Voicemail löschen",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger Name",
     "EMAIL": "E-Mail",
     "MAILBOX": "Mailbox",
-    "PASSWORD": "Kennwort",
+    "PASSWORD": "Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "TIMEZONE": "Zeitzone",
-    "ATTACH": "Befestigen",
-    "ENVELOPE": "Umschlag",
+    "ATTACH": "Voicemail als E-Mail-Anhang senden",
+    "ENVELOPE": "Zeit und Datum ansagen",
     "DELETE": "Löschen",
-    "EMAILBODY": "E-Mail-Text",
+    "EMAILBODY": "E-Mail Text",
     "EMAILSUBJECT": "E-Mail Betreff",
-    "MAXSECONDS": "Max Sekunden",
-    "MAXMESSAGES": "Max. Nachrichten",
+    "MAXSECONDS": "Max. Dauer (Sekunden) Voicemail",
+    "MAXMESSAGES": "Max. Nachrichten pro Mailbox",
     "MESSAGES": "Nachrichten",
     "SORT": "Sortieren",
-    "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",
+    "ADD_MUSICONHOLD": "Wartemusik hinzufügen",
+    "MUSICONHOLDS": "Wartemusik",
+    "EDIT_MUSICONHOLD": "Wartemusik bearbeiten",
+    "DELETE_MUSICONHOLD": "Wartemusik löschen",
+    "DIRECTORY": "Lokales Verzeichnis",
     "AUDIOFILES": "Audiodateien",
-    "RECORDINGS": "Aufnahmen",
-    "CHANSPY": "ChanSpy",
+    "RECORDINGS": "Aufzeichnungen",
+    "CHANSPY": "Listen-In (Chanspy)",
     "PREFIX": "Präfix",
     "OPTIONS": "Optionen",
-    "AUTH": "Auth",
-    "ADD_CHANSPY": "Chanspy hinzufügen",
-    "EDIT_CHANSPY": "Bearbeiten ChanSpy",
-    "DELETE_CHANSPY": "Löschen ChanSpy",
+    "AUTH": "Authentifizierung",
+    "ADD_CHANSPY": "Listen-In hinzufügen",
+    "EDIT_CHANSPY": "Listen-In bearbeiten",
+    "DELETE_CHANSPY": "Listen-In löschen",
     "AGENTS": "Agenten",
     "TELEPHONES": "Telefone",
     "QUEUES": "Warteschlangen",
-    "QUEUE_CALLS": "Anrufe aus der Warteschlange",
-    "QUEUE_PARAMETERS": "Queue Parameter",
+    "QUEUE_CALLS": "Anrufe in Warteschlange",
+    "QUEUE_PARAMETERS": "Warteschlangen-Parameter",
     "ABANDONED_CALLS": "Abgebrochene Anrufe",
     "OUTBOUND_CALLS": "Ausgehende Anrufe",
-    "AGI": "AGI",
+    "AGI": "Skript",
     "DIAL": "Wählen",
-    "INTERNALDIAL": "Interne Wahl",
-    "EXTERNALDIAL": "Externes Wählen",
-    "RINGGROUP": "Ring Gruppe",
+    "INTERNALDIAL": "Intern wählen",
+    "EXTERNALDIAL": "Extern wählen",
+    "RINGGROUP": "Rufgruppe zuweisen",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Einstellen",
+    "SET": "Einstellen (Set)",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
-    "CUSTOM": "Benutzerdefinierte",
-    "PROJECT": "Cally-Square Projekt",
-    "TECHNOLOGY/RESOURCE": "Technologie / Ressource",
+    "CUSTOM": "Benutzerdefiniert",
+    "PROJECT": "Call-Flow Projekt",
+    "TECHNOLOGY/RESOURCE": "Technologie / Ressource (z.B.: SIP/1003)",
     "URL": "URL",
-    "EDIT_APP": "Bearbeiten Anwendung",
-    "EDIT_INTERVAL": "Bearbeiten Intervall",
+    "EDIT_APP": "Anwendung bearbeiten",
+    "EDIT_INTERVAL": "Zeitintervall bearbeiten",
     "DELETE_APP": "Anwendung löschen",
-    "INTERVALS": "Intervalle",
+    "INTERVALS": "Zeitintervalle",
     "USER": "Benutzer",
-    "TRUNK": "Amtsleitung",
+    "TRUNK": "SIP-Trunk",
     "PHONE": "Telefon",
     "AUDIO_FILES": "Audiodateien",
-    "ANNOUNCE_OVERRIDES": "Verkünden überschreibt",
+    "ANNOUNCE_OVERRIDES": "Ansage überschreiben",
     "MACRO": "Makro",
     "GOSUB": "GoSub",
     "RULE": "Regel",
     "POSITION": "Position",
     "ANSWER": "Antwort",
     "VALUE": "Wert",
-    "MAILBOX@CONTEXT": "Mailbox @ Rahmen",
-    "EXTENSION": "Erweiterung",
+    "MAILBOX@CONTEXT": "Mailbox@Context",
+    "EXTENSION": "Nebenstelle",
     "PRIORITY": "Priorität",
-    "HANGUP_CAUSE": "Auflegen verursachen",
-    "OUTBOUNDDIAL": "Für ausgehende Anrufe wählen",
+    "HANGUP_CAUSE": "Auflegegrund",
+    "OUTBOUNDDIAL": "Ausgehend wählen",
     "CALLER_ID": "Anrufer-ID",
     "NO_MESSAGE_AVAILABLE": "Keine Meldungen vorhanden",
     "NO_SOUND_AVAILABLE": "Kein Ton verfügbar",
-    "VOICERECORDINGS": "Sprachaufnahmen",
-    "CHANSPIES": "ChanSpy",
-    "VOICE": "Voice",
+    "VOICERECORDINGS": "Sprachaufzeichnungen",
+    "CHANSPIES": "Listen-Ins",
+    "VOICE": "Anrufe",
     "REALTIME": "Echtzeit",
-    "ID": "Id",
+    "ID": "ID",
     "VOICEMAIL_CONTEXT": "Kontext",
     "NO_MOHSOUND_AVAILABLE": "Keine Wartemusik verfügbar",
     "FILE": "Datei",
-    "ADD_MOHSOUND": "Musik hinzufügen Auf Klang",
-    "DOWNLOAD_MOHSOUND": "Download Music On Hold Sound",
-    "DELETE_MOHSOUND": "Löschen Sie Musik auf Halten Sound",
+    "ADD_MOHSOUND": "Wartemusik hinzufügen",
+    "DOWNLOAD_MOHSOUND": "Wartemusik herunterladen",
+    "DELETE_MOHSOUND": "Wartemusik löschen",
     "UNIQUEID": "Eindeutige ID",
     "AGENT": "Agent",
     "TYPE": "Typ",
     "RATING": "Bewertung",
     "AUDIO": "Audio",
     "DATE": "Datum",
-    "NEW_VOICEQUEUE": "Neue Stimme Warteschlange",
+    "NEW_VOICEQUEUE": "Neue Anruf-Warteschlange",
     "NEW_INBOUNDROUTE": "Neue eingehende Route",
     "NEW_OUTBOUNDROUTE": "Neue ausgehende Route",
     "NEW_INTERNALROUTE": "Neue interne Route",
-    "NEW_CONTEXT": "Neuen Kontext",
+    "NEW_CONTEXT": "Neuer Kontext",
     "NEW_VOICEMAIL": "Neue Voicemail",
-    "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",
+    "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",
     "EDIT_DIAL": "Kurzwahl bearbeiten",
-    "EDIT_AGI": "Bearbeiten AGI",
+    "EDIT_AGI": "Skript bearbeiten",
     "EDIT_INTERNALDIAL": "Interne Kurzwahl bearbeiten",
     "EDIT_EXTERNALDIAL": "Externe Kurzwahl bearbeiten",
-    "EDIT_RINGGROUP": "Gruppe bearbeiten",
-    "EDIT_PLAYBACK": "Bearbeiten Wiedergabe",
+    "EDIT_RINGGROUP": "Rufgruppe bearbeiten",
+    "EDIT_PLAYBACK": "Wiedergabe bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_SET": "Bearbeiten",
-    "EDIT_GOTO": "Bearbeiten Gehe zu",
-    "EDIT_HANGUP": "Bearbeiten auflegen",
-    "EDIT_CUSTOM": "Bearbeiten Benutzerdefinierte",
+    "EDIT_GOTO": "\"Gehe-zu\" bearbeiten",
+    "EDIT_HANGUP": "Auflegen bearbeiten",
+    "EDIT_CUSTOM": "Benutzerdef. Einstellungen bearbeiten",
     "DURATION": "Dauer",
     "RECEIVED_AT": "Eingegangen am",
     "YES": "Ja",
-    "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",
+    "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",
     "HANGUPCAUSE_38": "38 = Netzwerk nicht in der richtigen Reihenfolge",
     "HANGUPCAUSE_41": "41 = Temporärer Ausfall",
-    "RANDOM": "Random",
+    "RANDOM": "Zufall",
     "ALPHABETICAL": "Alphabetisch",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Löschen Sprachaufzeichnung",
-    "INTERNAL": "Interne",
-    "PHONE_STATE": "Telefonstatus",
-    "PHONE_STATUS": "Telefonstatus",
+    "DOWNLOAD_VOICERECORDING": "Sprachaufzeichnung herunterladen",
+    "DELETE_VOICERECORDING": "Sprachaufzeichnung löschen",
+    "INTERNAL": "Intern",
+    "PHONE_STATE": "Status Nebenstelle",
+    "PHONE_STATUS": "SIP-Status Nebenstelle",
     "REGISTERED": "Registriert",
-    "UNREGISTERED": "Unregistrierte",
-    "LAGGED": "Zurück",
+    "UNREGISTERED": "Nicht registriert",
+    "LAGGED": "Verzögert",
     "REACHABLE": "Erreichbar",
     "UNREACHABLE": "Nicht erreichbar",
     "UNKNOWN": "Unbekannt",
-    "NOT_INUSE": "Nicht in Gebrauch",
-    "INUSE": "Im Einsatz",
+    "NOT_INUSE": "Nicht in Verwendung",
+    "INUSE": "In Verwendung",
     "BUSY": "Besetzt",
     "INVALID": "Ungültig",
     "UNAVAILABLE": "Nicht verfügbar",
     "RINGING": "Klingeln",
-    "ONHOLD": "Auf Halten",
-    "RING": "Ring",
-    "UP": "Bis",
-    "INFO": "Info",
-    "TRUNKS": "Amtsleitungen",
+    "ONHOLD": "Halten",
+    "RING": "Klingeln",
+    "UP": "Status",
+    "INFO": "Information",
+    "TRUNKS": "SIP-Trunks",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine registry",
+    "NO_REGISTRY": "Keine Registrierung",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
-    "DISPOSITION": "Disposition",
+    "DISPOSITION": "Qualifizierung",
     "WAITING": "Warten",
-    "TALKING": "Sprechen",
-    "DID": "Haben",
+    "TALKING": "Im Gespräch",
+    "DID": "DID",
     "CALLER": "Anrufer",
-    "TOTAL": "Insgesamt",
+    "TOTAL": "Gesamt",
     "ANSWERED": "Beantwortet",
     "ABANDONED": "Abgebrochen",
-    "UNMANAGED": "Nicht verwaltete",
+    "UNMANAGED": "Nicht verwaltet",
     "REDIRECT_TO_NUMBER": "Umleitung zu einer Nummer",
-    "REDIRECT_TO_AGENT": "Umleiten zu: Ein Agent",
+    "REDIRECT_TO_AGENT": "Umleiten zu einem Agenten",
     "CLOSING": "Schließen",
-    "AVG_HOLD_TIME": "Durchschnittl. Warteschleifenzeit",
-    "AVG_DURATION": "Av-Dauer",
-    "AVG_BILLABLE": "Avg Fakturierbaren",
+    "AVG_HOLD_TIME": "Durchschnittl. Wartezeit",
+    "AVG_DURATION": "Durchschnittl. Dauer",
+    "AVG_BILLABLE": "Durchschnittl. fakturierbar",
     "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "REJECTED": "Abgelehnt",
     "FAILED": "Fehlgeschlagen",
-    "CALLED": "Aufgerufen",
+    "CALLED": "Angerufen",
     "CONNECTED": "Verbunden",
     "NO_RATING": "Keine Bewertung",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
+    "EDIT_VOICERECORDING": "Sprachaufzeichnung bearbeiten/bewerten",
     "APPLICATION_NAME": "Name der Anwendung",
     "ARGUMENTS": "Argumente",
     "EDIT_QUEUECAMPAIGN": "Kampagne bearbeiten",
     "LISTADD_QUEUECAMPAIGN": "Liste hinzufügen",
-    "BLACKLISTADD_QUEUECAMPAIGN": "Blacklist hinzufügen",
-    "TEAMADD_QUEUECAMPAIGN": "Gruppe hinzufügen",
+    "BLACKLISTADD_QUEUECAMPAIGN": "Schwarze Liste hinzufügen",
+    "TEAMADD_QUEUECAMPAIGN": "Team hinzufügen",
     "AGENTADD_QUEUECAMPAIGN": "Agent hinzufügen",
     "DELETE_QUEUECAMPAIGN": "Kampagne löschen",
-    "DELETE_IVRCAMPAIGN": "Kampagne löschen",
+    "DELETE_IVRCAMPAIGN": "IVR-Kampagne löschen",
     "EDIT_IVRCAMPAIGN": "Kampagne bearbeiten",
     "NEW_IVRCAMPAIGN": "Neue IVR-Kampagne",
-    "ADD_IVRCAMPAIGN": "Hinzufügen IVR-Kampagne",
+    "ADD_IVRCAMPAIGN": "IVR-Kampagne hinzufügen",
     "LISTADD_IVRCAMPAIGN": "Liste hinzufügen",
-    "BLACKLISTADD_IVRCAMPAIGN": "Blacklist hinzufügen",
-    "ENABLED": "Aktiviert",
+    "BLACKLISTADD_IVRCAMPAIGN": "Schwarze Liste hinzufügen",
+    "ENABLED": "Aktiv",
     "READY": "Bereit",
     "PAUSE": "Pause",
-    "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",
+    "UNPAUSE": "Pause abbrechen",
+    "DEFAULT_PAUSE": "Standardpause",
+    "AGENTADD_QUEUE": "Agent zur Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "ALL_TEAMS": "Alle Teams",
     "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": "Trunk ist nicht erreichbar.",
-    "AGENTS_NOT_LOGGED": "Agent nicht angemeldet",
+    "TRUNK_IS_NOT_REACHABLE": "SIP-Trunk nicht erreichbar",
+    "AGENTS_NOT_LOGGED": "Keine Agenten angemeldet",
     "NOT_ACTIVE": "Nicht Aktiv",
-    "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)",
+    "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",
     "INTERVAL_IS_NULL": "Intervall ist Null",
-    "TIMEZONE_UNKNOW": "Zeitzone Unknow",
+    "TIMEZONE_UNKNOW": "Zeitzone unbekannt",
     "INTERVAL_IS_EMPTY": "Intervall ist leer",
-    "TOTAL_MANAGED": "Insgesamt verwaltet",
-    "OPEN": "Öffnen",
-    "FRESH": "Frische",
+    "TOTAL_MANAGED": "Insgesamt bearbeitet",
+    "OPEN": "Offen",
+    "FRESH": "Neu",
     "CLOSED": "Geschlossen",
     "ALWAYS": "Immer",
-    "NEVER": "Nie",
+    "NEVER": "Niemals",
     "ONLY_IF_OPEN": "Nur wenn offen",
-    "CHECKDUPLICATE": "Duplizieren",
+    "CHECKDUPLICATE": "Auf Duplikate prüfen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "TIMEOUT": "Timeout",
+    "OF": "von",
+    "TIMEOUT": "Zeitüberschreitung",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "PARTIALPAUSE": "Teilpause",
     "ALL": "Alle",
     "IDLE": "Leerlauf",
     "TIMER": "Timer",
-    "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",
+    "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",
     "RESET": "Zurücksetzen",
-    "RESETLIST": "Listen zurücksetzen",
-    "RESETLIST_IVRCAMPAIGN": "Listen zurücksetzen",
-    "RESETLIST_QUEUECAMPAIGN": "Listen zurücksetzen",
-    "SELECTALL": "Wählen Sie Alle",
-    "UNSELECTALL": "Alles wiederufen",
+    "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",
     "HOPPERWIDGET": "Zusammenfassung",
-    "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",
+    "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",
     "RECALLINQUEUE": "Rückruf in der Warteschlange",
     "REFRESH_SCHEDULED_CALLS": "Geplante Anrufe aktualisieren",
     "SCHEDULED_CALLS": "Geplante Anrufe",
-    "SELECT_CAMPAIGN": "Wählen Sie Kampagne",
+    "SELECT_CAMPAIGN": "Kampagne auswählen",
     "SELECT_DATE": "Datum auswählen",
-    "SELECT_TYPE": "Art auswählen",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
-    "ANSWERING_MACHINE": "Antwortmaschine",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Status der obligatorischen Dispositionspause",
+    "SELECT_TYPE": "Typ auswählen",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "ANSWERING_MACHINE": "Anrufbeantworter",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause während Qualifizierung",
     "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 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",
+    "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",
     "PREVIOUS_INTERVAL": "Vorheriges Intervall",
-    "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",
+    "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",
     "PREVIEW_AUTO_RECALL_ME": "Rückrufe automatisieren",
     "PREVIEW_RECALL_ME_REMINDER": "Recall Me Erinnerung",
     "ADDITIONALPHONES": "Zusätzliche Telefone",
index b761bec..6f70beb 100644 (file)
@@ -23,7 +23,7 @@
     "NO_AGENT_ONLINE": "Nenhum agente online",
     "PARTIALPAUSE": "Pausa Parcial",
     "ALL": "Todos",
-    "IDLE": "Disponível",
+    "IDLE": "Ocioso",
     "TIMER": "Tempo",
     "MOVE_HOPPERFINAL": "Restaurar contato",
     "RESTORECONTACTS": "Restaurar Contatos",
index 0ef1225..d234e7a 100644 (file)
 {
   "OPENCHANNEL": {
     "TEXT": "Text",
-    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
-    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
+    "TIMES": "Zeitstempel",
+    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
     "NAME": "Name",
-    "OPENCHANNELQUEUES": "Offener Kanal Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "OPENCHANNELQUEUES": "Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "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"
+      "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"
     },
-    "STRATEGY": "Strategie",
+    "STRATEGY": "Verteilungsstrategie",
     "AGENT": "Agent",
-    "GOTO": "Gehe zu",
-    "GOTOIF": "Gotoif",
-    "NOOP": "Noop",
+    "GOTO": "GeheZu (GoTo)",
+    "GOTOIF": "GeheZuWenn (GoToIf)",
+    "NOOP": "Log erstellen (NoOp)",
     "QUEUE": "Warteschlange",
-    "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_GOTO": "Bearbeiten Gehe zu",
-    "EDIT_NOOP": "Bearbeiten Noop",
-    "EDIT_GOTOIF": "Bearbeiten Gotoif",
+    "EDIT_AGENT": "Agenten bearbeiten",
+    "EDIT_GOTO": "\"GeheZu\" bearbeiten",
+    "EDIT_NOOP": "Log-Erstellung bearbeiten",
+    "EDIT_GOTOIF": "Bedingung bearbeiten und Priorität zuweisen",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "CONDITION": "Zustand",
-    "TRUEPRIORITY": "Wahre Priorität",
-    "FALSEPRIORITY": "Falsche Priorität",
+    "CONDITION": "Bedingung",
+    "TRUEPRIORITY": "Priorität, wenn erfüllt (true)",
+    "FALSEPRIORITY": "Priorität, wenn nicht erfüllt (false)",
     "VALUE": "Wert",
     "PRIORITY": "Priorität",
-    "AGENT_TIMEOUT": "Agent Timeout",
+    "AGENT_TIMEOUT": "Zeitüberschreitung Agent",
     "DESCRIPTION": "Beschreibung",
-    "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",
+    "ADD_OPENCHANNELQUEUE": "Warteschlange hinzufügen",
+    "EDIT_OPENCHANNELQUEUE": "Warteschlange bearbeiten",
+    "DELETE_OPENCHANNELQUEUE": "Warteschlange löschen",
+    "PENALTY": "Verzögerung",
     "TEAMADD_OPENCHANNELQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_OPENCHANNELQUEUE": "Agent zur Warteschlange hinzufügen",
+    "AGENTADD_OPENCHANNELQUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "OPENCHANNELACCOUNTS": "Offener Kanal Konten",
+    "OPENCHANNELACCOUNTS": "Konten offener Kanal",
     "MOTIONADDRESS": "Motion Adresse",
-    "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.",
+    "ADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
+    "EDIT_OPENCHANNELACCOUNT": "Konto offener Kanal bearbeiten",
+    "DELETE_OPENCHANNELACCOUNT": "Konto offener Kanal löschen",
     "API": "API",
-    "DISPOSITIONS": "Bestimmungen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Aktionen",
+    "ACTIONS": "Routing",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "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\"",
+    "CLOSE": "Schließen",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "OPENCHANNEL": "Offener Kanal",
-    "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",
+    "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",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "REPLYURI": "Antwort URL",
-    "RECEIVEURI": "Erhalten URL",
+    "RECEIVEURI": "URL bei Erhalt",
     "HELP": {
-      "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",
+      "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",
       "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": "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"
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+      "WELCOMEMESSAGE": "Willkommensnachricht beim Eintreffen der ersten Anfrage"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CONTACT": "Kontakt",
-    "STARTEDAT": "Gestartet am",
+    "STARTEDAT": "Startdatum",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Öffnen",
-    "OPEN": "Öffnen",
+    "OPENED": "Geöffnet",
+    "OPEN": "Offen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
-    "INTERACTIONS": "Wechselwirkungen",
+    "INTERACTIONS": "Interaktionen",
     "ALL": "Alle",
-    "SELECT_STATUS": "Wählen Sie einen Status",
+    "SELECT_STATUS": "Status auswählen",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "CLOSEDAT": "Geschlossen",
-    "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",
+    "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",
     "KEY": "Schlüssel",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
+    "IN_USE": "In Verwendung",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Interne",
-    "PHONE_STATE": "Telefonstatus",
-    "PHONE_STATUS": "Telefonstatus",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
+    "PHONE_STATE": "Status Nebenstelle",
+    "PHONE_STATUS": "SIP-Status Nebenstelle",
     "PAUSE": "Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agent zu Offenen Kanal Warteschlange hinzufügen",
-    "UNPAUSE": "Pause beenden",
-    "DEFAULT_PAUSE": "Standard Pause",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
+    "UNPAUSE": "Pause abbrechen",
+    "DEFAULT_PAUSE": "Standardpause",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "Angehalten",
+    "PAUSED": "in Pause",
     "READY": "Bereit",
     "WAITING": "Warten",
-    "VOICE": "Voice",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Agenten, die Offenen Kanal Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "In Echtzeit, offenen Kanal Warteschlange",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "Direkt zur Echtzeit-Warteschlange",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
-    "SPYINTERACTION": "Spy",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Wechselwirkungen gehen",
-    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
+    "SPYINTERACTION": "Anzeigen",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu den Interaktionen gehen",
+    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
     "DELETE": "Löschen",
-    "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",
+    "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",
     "DELETE_INTERACTION": "Interaktion löschen",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
-    "VARIABLE": "Variable",
+    "VARIABLE": "Variabel",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Sound abspielen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
-    "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
-    "ADVANCED": "Fortgeschritten",
+    "INSERT_MESSAGE_HERE": "Textnachricht hier eingeben",
+    "WAITFORTHEASSIGNEDAGENT": "Auf zugewiesenen Agenten warten",
+    "ADVANCED": "Erweitert",
     "PROXY": "Proxy",
-    "TOKEN": "Zeichen",
+    "TOKEN": "Token",
     "EDIT_TAG": "Tag bearbeiten",
-    "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",
+    "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",
     "SEND": "Senden",
-    "TO": "Zu",
-    "AGENTTRANSFER": "Agent Transfer",
+    "TO": "An",
+    "AGENTTRANSFER": "Transfer an Agenten erlauben",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "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",
+    "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",
     "LANGUAGE": "Sprache",
-    "WELCOMEMESSAGE": "Willkommen Messsage",
+    "WELCOMEMESSAGE": "Willkommensnachricht",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
     "AMAZONLEX": "AmazonLex",
-    "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",
+    "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",
     "LASTMESSAGE": "Letzte Nachricht",
-    "CLIENTEMAIL": "Kunden-E-Mail",
+    "CLIENTEMAIL": "Kunden E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Schlüssel",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Hinweis"
+    "NOTE": "Notiz"
   }
 }
index 125aa6c..f0036b7 100644 (file)
     "PARTIALPAUSE": "Pausa parcial",
     "BUSY": "Ocupado",
     "TIMER": "Cronômetro",
-    "IDLE": "Disponível",
+    "IDLE": "Ocioso",
     "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 automática",
+    "AUTOREPLY": "Resposta automatica",
     "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 Scret Access Key",
-      "CLIENTEMAIL_REQUIRED": "Campo obrigatório",
-      "PRIVATEKEY_REQUIRED": "Campo obrigatório",
-      "PROJECTID_REQUIRED": "Campo 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"
     },
     "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 824a393..b2781d4 100644 (file)
@@ -45,8 +45,7 @@
       "TRANSCRIBEREGION_REQUIRED": "حقل الزامي",
       "FIELD_REQUIRED": "حقل الزامي",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "حقل الزامي",
-      "WRONG_FORMAT": "صيغة خاطئة",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أكبر من أو تساوي"
+      "WRONG_FORMAT": "صيغة خاطئة"
     },
     "HELP": {
       "ADDRESS": "العنوان",
index d7222bc..670c786 100644 (file)
       "USERNAME_REQUIRED": "Povinné pole",
       "FIELD_REQUIRED": "Povinné pole",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Povinné pole",
-      "WRONG_FORMAT": "Špatný formát",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Hodnota musí být větší nebo rovna"
+      "WRONG_FORMAT": "Špatný formát"
     },
     "EDIT_NETWORK": "Edit Network",
     "DELETE_NETWORK": "Delete Network",
index 6dcd159..e1732d7 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Obligatorisk felt",
       "FIELD_REQUIRED": "Obligatorisk felt",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Obligatorisk felt",
-      "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"
+      "WRONG_FORMAT": "Forkert format"
     },
     "EDIT_NETWORK": "Edit Network",
     "DELETE_NETWORK": "Delete Network",
index aa643d6..c44d7a7 100644 (file)
@@ -1,69 +1,69 @@
 {
   "SETTINGS": {
-    "PREFERRED": "Preferred Logo",
-    "DEFAULT_PREFERRED": "Default Preferred Logo",
+    "PREFERRED": "Bevorzugtes Logo",
+    "DEFAULT_PREFERRED": "Standard bevorzugtes Logo",
     "MOTIONBAR": "Motionbar",
     "WEBRTC": "WebRTC",
     "RELOAD": "Neu laden",
-    "VERIFY": "Überprüfen Sie, ob",
+    "VERIFY": "Einstellungen testen",
     "INTERFACE": "Schnittstelle",
     "UPDATING": "Aktualisierung",
     "REMOTE_VERSION": "Remote-Version",
     "NO_NEW_VERSION_AVAILABLE": "Keine neue Version verfügbar",
-    "TOP_N_PROCESSES": "Top {{Wert}} Prozesse",
-    "SYSTEM": "System",
-    "FILE_SYSTEM": "File System",
+    "TOP_N_PROCESSES": "Top {{value}} Prozesse",
+    "SYSTEM": "System und Server",
+    "FILE_SYSTEM": "Dateisystem",
     "PROCESSES": "Prozesse",
-    "MOUNT_POINT": "Berg",
-    "AVG_LOAD": "AVG Laden",
+    "MOUNT_POINT": "Mount",
+    "AVG_LOAD": "Durchschnittliche Auslastung",
     "TOTAL": "Gesamt",
-    "USED": "Verwendet",
-    "FREE": "Kostenlos",
+    "USED": "in Verwendung",
+    "FREE": "Frei",
     "NAME": "Name",
     "STATE": "Zustand",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
-    "MESSAGING": "Sms",
+    "MESSAGING": "SMS",
     "FAX": "Fax",
     "OPENCHANNEL": "Offener Kanal",
     "AGENTS": "Agenten",
     "USERS": "Benutzer",
-    "TELEPHONES": "Telefone",
+    "TELEPHONES": "Endgeräte",
     "STAFF": "Personal",
-    "CHANNELS": "Tv",
+    "CHANNELS": "Kanäle",
     "MODULES": "Module",
-    "CM": "Contacts Manager",
+    "CM": "Kontaktmanager",
     "DIALER": "Dialer",
     "JSCRIPTY": "Jscripty",
-    "CUSTOM": "Anpassung",
-    "UPDATE": "Update",
+    "CUSTOM": "WhiteLabel",
+    "UPDATE": "Aktualisieren",
     "OTHERS": "Andere",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "SMTP": "SMTP",
+    "SMTP": "SMTP-Einstellungen",
     "NETWORKS": "Netzwerke",
-    "UPDATES": "Aktuelles",
+    "UPDATES": "System-Updates",
     "LICENSE": "Lizenz",
-    "ID": "Id",
-    "MIN_INTERNAL": "Min. Interne",
-    "MIN_MAILBOX": "Min Mailbox",
+    "ID": "ID",
+    "MIN_INTERNAL": "Min. interne Durchwahl",
+    "MIN_MAILBOX": "Min Mailbox-ID",
     "INSTALLED_AT": "Installiert",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
-    "EDIT_GENERAL": "Allgemein bearbeiten",
-    "SECURE_PASSWORD": "Sicheres Kennwort",
+    "SEARCH_FOR_ANYONE": "Suche",
+    "EDIT_GENERAL": "Bearbeiten Allgemein",
+    "SECURE_PASSWORD": "Sicheres Passwort",
     "LOGO": "Logo",
-    "DEFAULT_LOGO": "Standard Logo",
-    "DEFAULT_LOGIN_LOGO": "Login Logo",
-    "WHITELABEL": "White Label",
+    "DEFAULT_LOGO": "Logo für Anwendung",
+    "DEFAULT_LOGIN_LOGO": "Logo auf Anmeldebildschirm",
+    "WHITELABEL": "WhiteLabel",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
-    "SMTP_SERVICE": "Service",
+    "SMTP_SERVICE": "SMTP-Dienst",
     "SMTP_HOST": "SMTP-Host",
     "SMTP_USERNAME": "SMTP-Benutzername",
     "DESCRIPTION": "Beschreibung",
     "SMTP_PASSWORD": "SMTP-Passwort",
     "SMTP_PORT": "SMTP-Port",
-    "SMTP_SECURE": "Sichere",
+    "SMTP_SECURE": "Sicheren SMTP verwenden",
     "TYPE": "Typ",
     "ADDRESS": "Adresse",
     "NEW_NETWORK": "Neues Netzwerk",
     "HELP": {
       "ADDRESS": "Die Adresse des Netzwerks",
       "LOCALNETADDRESS": "IP-Adresse/Subnetzmaske",
-      "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)",
+      "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)",
       "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 Motion Phonebar",
+      "MOTIONBARREMEMBERME": "Aktivieren/Deaktivieren der Funktion \"Merken\" in MotionPhonebar",
       "RTLSUPPORT": "Aktiviert die RTL-Unterstützung für Arabisch, Persisch und Hebräisch",
-      "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",
+      "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",
       "PASSWORD": "Passwort",
       "USERNAME": "Nutzername",
-      "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)",
+      "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)",
       "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": "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",
+      "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",
       "LOCALNETADDRESS_REQUIRED": "Localnet Adresse 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",
+      "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",
       "FIELD_REQUIRED": "Pflichtfeld",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Pflichtfeld",
-      "WRONG_FORMAT": "Falsches Format",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein"
+      "WRONG_FORMAT": "Falsches Format"
     },
     "EDIT_NETWORK": "Netzwerk bearbeiten",
     "DELETE_NETWORK": "Netzwerk löschen",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "EXPIRATION_DATE": "Ablaufdatum",
     "REQUEST_LICENSE": "Lizenz anfordern",
     "EMAIL": "E-Mail",
     "SEND": "Senden",
     "PLAN": "Plan",
-    "MONTH_TO_MONTH": "Von Monat zu Monat",
-    "MOTION_PROCESS_MANAGEMENT": "Motion Process Management",
+    "MONTH_TO_MONTH": "Monatlich",
+    "MOTION_PROCESS_MANAGEMENT": "Prozessverwaltung",
     "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 \"Alle\", um alle aktiven Prozesse",
+    "PM2_STOP": "Stoppen Sie einen Prozess-ID oder Name, fügen Sie\n\"All\", um alle aktiven Prozesse zu stoppen",
     "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 verfügbaren Info",
-    "STUNADDR": "Die STUN-Adresse",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "STUNADDR": "STUN-Adresse",
     "CHANGELOG": "Changelog",
     "CURRENT_VERSION": "Aktuelle Version",
-    "CUSTOMIZATIONS": "Anpassungen",
+    "CUSTOMIZATIONS": "WhiteLabel",
     "LOCALNETADDRESS": "Localnet Adresse",
     "NEW_VERSION": "Neue Version",
     "TRIAL_VERSION": "Testversion",
     "TOKEN": "Token",
-    "NEW_TOKEN_DETECTED": "Neue Token erkannt",
-    "EXPIRATION_GRAY_PERIOD": "Grau Zeitraum Ablauf",
-    "NEW_TOKEN": "Neue Token",
+    "NEW_TOKEN_DETECTED": "Neuer Token erkannt",
+    "EXPIRATION_GRAY_PERIOD": "Ablauf Testperiode",
+    "NEW_TOKEN": "Neuer Token",
     "PRICES": "Preise",
     "UPDATE_LICENSE": "Lizenz aktualisieren",
-    "LOGOLOGIN": "Login Logo",
-    "EXPIRATION_REASON": "Ablauf Grund",
-    "GLOBAL": "Global",
+    "LOGOLOGIN": "Login-Logo",
+    "EXPIRATION_REASON": "Ablaufgrund",
+    "GLOBAL": "Globale Einstellungen",
     "SMTP_AUTHENTICATION": "Authentifizierung",
-    "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",
+    "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",
     "SEND_EMAIL_TO": "E-Mail senden an",
-    "JIRA_ERROR_MESSAGE": "Fehler während der Lizenz anfordern. Bitte kontaktieren Sie unser Team bei License@xcally.com mit Ihrer Anfrage",
+    "JIRA_ERROR_MESSAGE": "Fehler bei der Anforderung der Lizenz. Bitte kontaktieren Sie unseren Support.",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "SMTP_SSL": "SMTP-SSL",
+    "OF": "von",
+    "SMTP_SSL": "SMTP verwendet SSL-Verschlüsselung",
     "ENABLED": "Aktiviert",
     "DISABLED": "Deaktiviert",
     "UNLIMITED_CHANNELS": "Unbegrenzte Anzahl von Kanälen",
-    "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",
+    "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",
     "SECURITY_SUITE": "Sicherheitssuite",
     "ANNUALLY": "Jährlich",
-    "MOTIONBARAUTOUPDATER": "Automatischer Updater",
-    "MOTIONBARAUTOUPDATERURL": "Automatische Updater-URL",
-    "JAWS": "Jaws",
+    "MOTIONBARAUTOUPDATER": "Automatisches Updates MotionBar",
+    "MOTIONBARAUTOUPDATERURL": "URL für automatische Updates",
+    "JAWS": "JAWS",
     "ENABLEEMAILPREVIEW": "E-Mail-Vorschau aktivieren",
     "REPORT": "Bericht",
-    "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",
+    "SPLIT": "Teilen",
+    "SPLITSIZECSV": "Berichtgröße teilen [CSV-Format]",
+    "SPLITSIZEPDF": "Berichtgröße teilen [PDF-Format]",
+    "SPLITSIZEXLSX": "Berichtgröße teilen [XLSX-Format]",
+    "AGENTOMNIDESKTOPINTERFACE": "Omnichannel Agentenanwendung",
     "MESSAGESALIGNMENT": "Nachrichtenausrichtung",
-    "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.",
+    "ENTER_LICENSE": "Lizenz einfügen",
+    "EXPIRATION_CHANGED_ADVISE": "Bitte wenden Sie sich an unseren Support und halten Sie Ihre alte und neue UUID bereit.",
     "EXPIRATION_REASON_MESSAGE_DISABLED": "Ihre Lizenz wurde deaktiviert.",
     "UPDATE_LICENSE_MANUALLY": "Möchten Sie Ihre Lizenz manuell aktualisieren?",
     "ADDONS": "Add-Ons",
     "SESSIONS": "Sitzungen",
-    "VIRTUAL": "Plaudern",
-    "VOICE": "Stimme",
-    "CHATTIMEOUT": "Chat schließt Interaktionszeitlimit",
-    "MOTIONBARREMEMBERME": "Erinnere dich an mich",
+    "VIRTUAL": "Chat",
+    "VOICE": "Sprachanrufe",
+    "CHATTIMEOUT": "Automatisches Schließen Chat nach",
+    "MOTIONBARREMEMBERME": "Anmeldedaten merken",
     "RTLSUPPORT": "RTL-Unterstützung",
-    "DEFAULTSCREENRECORDINGPATH": "Bildschirmaufzeichnungspfad",
-    "SCREENRECORDING": "Bildschirmaufnahme",
+    "DEFAULTSCREENRECORDINGPATH": "Pfad für Bildschirmaufzeichnungen",
+    "SCREENRECORDING": "Bildschirmaufzeichnung",
     "VIDEO": "Video",
-    "BLOCKDURATION": "Minuten vor dem automatischen Entsperren warten",
+    "BLOCKDURATION": "Dauer automatisches Sperren (Minuten)",
     "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",
-    "LOGINMAILFREQUENCY": "Anmelde-Mail-Häufigkeit (Sek.)",
+    "IMAPGENERALSETTINGS": "IMAP-Einstellungen",
+    "LOGINMAILFREQUENCY": "Frequenz Mail-Login (Sek.)",
     "USERNAME": "Nutzername",
     "GOOGLE_SSO_ENABLED": "Google SSO aktiviert",
     "SSO": "SSO",
     "AI": "A.I. Werkzeuge",
     "AITOOLS": "A.I. Werkzeuge",
     "APPZONE": "App Zone",
-    "BUCKET": "Eimer",
+    "BUCKET": "Korb",
     "DELETE": "Löschen",
     "DELETE_CLOUDPROVIDER": "Konto löschen",
     "EDIT_CLOUDPROVIDER": "Konto bearbeiten",
     "LANGUAGE": "Sprache",
     "NEW_CLOUDPROVIDER": "Neues Konto",
     "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
-    "SENTIMENTACCOUNT": "Sentiment Analysis Account",
-    "SENTIMENTANALYSIS": "Stimmungsanalyse",
-    "SENTIMENTREGION": "Sentiment Analysis Region",
-    "SERVICE": "Bedienung",
+    "SENTIMENTACCOUNT": "Konto für Sentimentanalyse",
+    "SENTIMENTANALYSIS": "Sentimentanalyse",
+    "SENTIMENTREGION": "Region für Sentimentanalyse",
+    "SERVICE": "Dienst",
     "TRANSCRIBE": "Transkribieren",
-    "TRANSCRIBEACCOUNT": "Konto transkribieren",
-    "TRANSCRIBEREGION": "Region transkribieren",
+    "TRANSCRIBEACCOUNT": "Transkription Konto",
+    "TRANSCRIBEREGION": "Transkription Region",
     "WHATSAPP": "WhatsApp Connector",
-    "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",
+    "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",
     "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "Zeitlimit für das erneute Laden von E-Mail-Interaktionen",
-    "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",
+    "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",
     "AD_SSO_ENABLED": "Active Directory SSO aktiviert",
     "APPLICATION_ID": "Anwendungs-ID",
     "AUTHENTICATE": "Authentifizieren",
index 64234bb..dd6a643 100644 (file)
@@ -68,8 +68,7 @@
       "TRANSCRIBEREGION_REQUIRED": "Campo obligatorio",
       "FIELD_REQUIRED": "Campo obligatorio",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Campo obligatorio",
-      "WRONG_FORMAT": "Formato erróneo",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El valor debe ser mayor o igual que"
+      "WRONG_FORMAT": "Formato erróneo"
     },
     "ACCOUNTNAME": "Nombre de la cuenta",
     "ADDRESS": "Dirección",
index 054b0d7..e6e0fd1 100644 (file)
       "USERNAME_REQUIRED": "Kohustuslik väli",
       "FIELD_REQUIRED": "Kohustuslik väli",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Kohustuslik väli",
-      "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"
+      "WRONG_FORMAT": "Vale formaat"
     },
     "EDIT_NETWORK": "Edit Network",
     "DELETE_NETWORK": "Delete Network",
index c43a818..46dcdbc 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "زمینه اجباری",
       "FIELD_REQUIRED": "فیلد اجباری",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "فیلد اجباری",
-      "WRONG_FORMAT": "فرمت اشتباه",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "مقدار باید بزرگتر یا مساوی باشد"
+      "WRONG_FORMAT": "فرمت اشتباه"
     },
     "EDIT_NETWORK": "ویرایش شبکه",
     "DELETE_NETWORK": "شبکه را حذف کنید",
index ad64216..67b307b 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Pakollinen kenttä",
       "FIELD_REQUIRED": "Pakollinen kenttä",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Pakollinen kenttä",
-      "WRONG_FORMAT": "Väärä formaatti",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Arvon on oltava suurempi tai yhtä suuri kuin"
+      "WRONG_FORMAT": "Väärä formaatti"
     },
     "EDIT_NETWORK": "Muokkaa verkko",
     "DELETE_NETWORK": "Poista verkko",
index d5dcba5..189a41c 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Champ obligatoire",
       "FIELD_REQUIRED": "Champ obligatoire",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Champ obligatoire",
-      "WRONG_FORMAT": "Mauvais format",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La valeur doit être supérieure ou égale à"
+      "WRONG_FORMAT": "Mauvais format"
     },
     "EDIT_NETWORK": "Modifier un réseau",
     "DELETE_NETWORK": "Supprimer réseau",
index ce0293c..06ba444 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "שדה חובה",
       "FIELD_REQUIRED": "שדה חובה",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "שדה חובה",
-      "WRONG_FORMAT": "פורמט שגוי",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "הערך חייב להיות גדול או שווה ל"
+      "WRONG_FORMAT": "פורמט שגוי"
     },
     "EDIT_NETWORK": "ערוך רשת",
     "DELETE_NETWORK": "מחק רשת",
index f66cb23..9caabb6 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "आवश्यक स्थान",
       "FIELD_REQUIRED": "अनिवार्य क्षेत्र",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "अनिवार्य क्षेत्र",
-      "WRONG_FORMAT": "गलत प्रारूप",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "मान से बड़ा या उसके बराबर होना चाहिए"
+      "WRONG_FORMAT": "गलत प्रारूप"
     },
     "EDIT_NETWORK": "नेटवर्क संपादित करें",
     "DELETE_NETWORK": "नेटवर्क हटाएं",
index 97ab5ac..98728dd 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",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Az értéknek nagyobbnak vagy egyenlőnek kell lennie, mint"
+      "WRONG_FORMAT": "Hibás formátum"
     },
     "AD_SSO_ENABLED": "Active Directory SSO engedélyezve",
     "APPLICATION_ID": "Alkalmazásazonosító",
index 507ce52..22a8658 100644 (file)
@@ -45,8 +45,7 @@
       "TRANSCRIBEREGION_REQUIRED": "Bidang wajib",
       "FIELD_REQUIRED": "Bidang wajib",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Bidang wajib",
-      "WRONG_FORMAT": "Format yang salah",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nilai harus lebih besar dari atau sama dengan"
+      "WRONG_FORMAT": "Format yang salah"
     },
     "HELP": {
       "ADDRESS": "Alamat ip eksternal (publik)",
index 9f67454..4cfe1e4 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Campo obbligatorio",
       "USERNAME_REQUIRED": "Campo obbligatorio",
       "FIELD_REQUIRED": "Campo obbligatorio",
-      "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"
+      "WRONG_FORMAT": "Il campo deve avere un formato valido"
     },
     "NOTIFICATIONS": {
       "MICROSOFT_AUTHENTICATION_SUCCESS": "Autenticazione a Microsoft Identity Platform completata con successo",
index 7bb05de..1174383 100644 (file)
@@ -45,8 +45,7 @@
       "TRANSCRIBEREGION_REQUIRED": "必須フィールド",
       "FIELD_REQUIRED": "必須フィールド",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "必須フィールド",
-      "WRONG_FORMAT": "間違ったフォーマット",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "値は以上である必要があります"
+      "WRONG_FORMAT": "間違ったフォーマット"
     },
     "HELP": {
       "ADDRESS": "外部(パブリック)IPアドレス",
index dd3d58d..31d3849 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "필수 필드",
       "FIELD_REQUIRED": "필수 필드",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "필수 필드",
-      "WRONG_FORMAT": "잘못된 형식",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "값은 다음보다 크거나 같아야 합니다."
+      "WRONG_FORMAT": "잘못된 형식"
     },
     "EDIT_NETWORK": "네트워크 수정",
     "DELETE_NETWORK": "네트워크 삭제",
index ace5dab..0cf41d7 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Privalomas laukas",
       "FIELD_REQUIRED": "Privalomas laukas",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Privalomas laukas",
-      "WRONG_FORMAT": "Blogas formatas",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Vertė turi būti didesnė arba lygi"
+      "WRONG_FORMAT": "Blogas formatas"
     },
     "EDIT_NETWORK": "Redaguoti tinklą",
     "DELETE_NETWORK": "Ištrinti tinklą",
index 2f9623a..835cc3a 100644 (file)
@@ -46,8 +46,7 @@
       "TRANSCRIBEREGION_REQUIRED": "Obligāts lauks",
       "FIELD_REQUIRED": "Obligāts lauks",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Obligāts lauks",
-      "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"
+      "WRONG_FORMAT": "Nepareizs formāts"
     },
     "HELP": {
       "ADDRESS": "Ārējā (publiskā) IP adrese",
index 737a152..e18e566 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Verplicht veld",
       "FIELD_REQUIRED": "Verplicht veld",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Verplicht veld",
-      "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"
+      "WRONG_FORMAT": "Verkeerd formaat"
     },
     "EDIT_NETWORK": "Edit netwerk",
     "DELETE_NETWORK": "Netwerk verwijderen",
index 60da4e1..6d72d16 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Obligatoriske felt",
       "FIELD_REQUIRED": "Obligatoriske felt",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Obligatoriske felt",
-      "WRONG_FORMAT": "Feil format",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Verdien må være større enn eller lik"
+      "WRONG_FORMAT": "Feil format"
     },
     "EDIT_NETWORK": "Endre nettverk",
     "DELETE_NETWORK": "Slette nettverket",
index 9ba80fb..d198040 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",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wartość musi być większa lub równa"
+      "WRONG_FORMAT": "Zły format"
     },
     "EDIT_NETWORK": "Edycja sieci",
     "DELETE_NETWORK": "Usuń sieć",
index 58f29ba..7cec298 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",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a"
+      "WRONG_FORMAT": "Formato incorreto"
     },
     "EDIT_NETWORK": "Editar rede",
     "DELETE_NETWORK": "Excluir rede",
index e542c6b..182811a 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Campo obrigatório",
       "FIELD_REQUIRED": "Campo obrigatório",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Campo obrigatório",
-      "WRONG_FORMAT": "Formato incorreto",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a"
+      "WRONG_FORMAT": "Formato incorreto"
     },
     "EDIT_NETWORK": "Editar rede",
     "DELETE_NETWORK": "Excluir redes",
index 3a4a490..9335943 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Обязательное поле",
       "FIELD_REQUIRED": "Обязательное поле",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Обязательное поле",
-      "WRONG_FORMAT": "Неправильный формат",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно"
+      "WRONG_FORMAT": "Неправильный формат"
     },
     "EDIT_NETWORK": "Редактировать сети",
     "DELETE_NETWORK": "Удалить сеть",
index 2d5a75c..2a59c4d 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Obligatoriskt fält",
       "FIELD_REQUIRED": "Obligatoriskt fält",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Obligatoriskt fält",
-      "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"
+      "WRONG_FORMAT": "Fel format"
     },
     "EDIT_NETWORK": "Edit Network",
     "DELETE_NETWORK": "Ta bort nätverket",
index 9d44523..84187a6 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Zorunlu alan",
       "FIELD_REQUIRED": "Zorunlu alan",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Zorunlu alan",
-      "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"
+      "WRONG_FORMAT": "Yanlış format"
     },
     "EDIT_NETWORK": "Edit Ağ",
     "DELETE_NETWORK": "Delete Ağ",
index d273953..2bd7475 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "必填项",
       "FIELD_REQUIRED": "必填项",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "必填项",
-      "WRONG_FORMAT": "格式错误",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "该值必须大于或等于"
+      "WRONG_FORMAT": "格式错误"
     },
     "EDIT_NETWORK": "编辑网络",
     "DELETE_NETWORK": "删除网络",
index 2a1715c..a7cec5c 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "必填項",
       "FIELD_REQUIRED": "必填項",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "必填項",
-      "WRONG_FORMAT": "格式錯誤",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "該值必須大於或等於"
+      "WRONG_FORMAT": "格式錯誤"
     },
     "EDIT_NETWORK": "編輯網路",
     "DELETE_NETWORK": "刪除網路",
index cddbe68..9a01507 100644 (file)
@@ -3,72 +3,72 @@
     "KEY": "Schlüssel",
     "NAME": "Name",
     "SMSQUEUES": "SMS-Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
-    "STRATEGY": "Strategie",
+    "SEARCH_FOR_ANYONE": "Suche",
+    "STRATEGY": "Verteilungsstrategie",
     "ERRORS": {
-      "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"
+      "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"
     },
-    "AGENT_TIMEOUT": "Agent Timeout",
+    "AGENT_TIMEOUT": "Zeitüberschreitung Agent",
     "DESCRIPTION": "Beschreibung",
     "ADD_SMSQUEUE": "SMS-Warteschlange hinzufügen",
     "EDIT_SMSQUEUE": "SMS-Warteschlange bearbeiten",
     "SID": "SID",
     "TOKEN": "Token",
     "SMSTYPE": "SMS-Typ",
-    "USERNAME": "Benutzername",
+    "USERNAME": "Nutzername",
     "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": "Bestimmungen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Aktionen",
+    "ACTIONS": "Routing",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "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\"",
+    "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",
     "BACK": "Zurück",
     "SMS": "SMS",
-    "ID": "Id",
+    "ID": "ID",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "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",
+    "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",
     "NEW_SMSQUEUE": "Neue SMS-Warteschlange",
     "NEW_SMSACCOUNT": "Neue SMS-Konto",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "LIST": "Contact Manager Liste zu verknüpfen von Kontakten",
+      "LIST": "Kontaktmanage- 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": "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"
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus während der Qualifizierung",
+      "WELCOMEMESSAGE": "Erste Nachricht bei neuen Interaktionen"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "TEAMADD_SMSQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_SMSQUEUE": "Agent zur Warteschlange hinzufügen",
+    "AGENTADD_SMSQUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
-    "RECEIVEURL": "Erhalten URL",
+    "RECEIVEURL": "URL erhalten",
     "INTERACTION": "Interaktion",
-    "INTERACTIONS": "Wechselwirkungen",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "INTERACTIONS": "Interaktionen",
+    "NO_INTERACTION_AVAILABLE": "Keine Interaktionen vorhanden",
     "CONTACT": "Kontakt",
     "STARTEDAT": "Gestartet am",
     "AGENT": "Agent",
-    "CLOSEDAT": "Geschlossen",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Hinweise",
-    "GOTO": "Gehe zu",
-    "GOTOIF": "Gotoif",
-    "NOOP": "Noop",
+    "CLOSEDAT": "Geschlossen am",
+    "DISPOSITION": "Qualifizierung",
+    "NOTES": "Anmerkungen",
+    "GOTO": "GeheZu (GoTo)",
+    "GOTOIF": "GeheZuWenn (GoToIf)",
+    "NOOP": "Log erstellen (NoOp)",
     "QUEUE": "Warteschlange",
-    "TIMEOUT": "Timeout",
+    "TIMEOUT": "Zeitüberschreitung",
     "VALUE": "Wert",
-    "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_GOTO": "Bearbeiten Gehe zu",
-    "EDIT_NOOP": "Bearbeiten Noop",
-    "EDIT_GOTOIF": "Bearbeiten Gotoif",
+    "EDIT_AGENT": "Agenten bearbeiten",
+    "EDIT_GOTO": "\"GeheZu\" bearbeiten",
+    "EDIT_NOOP": "Log-Erstellung bearbeiten",
+    "EDIT_GOTOIF": "Bedingung bearbeiten und Priorität zuweisen",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "CONDITION": "Zustand",
-    "TRUEPRIORITY": "Wahre Priorität",
-    "FALSEPRIORITY": "Falsche Priorität",
+    "CONDITION": "Bedingung",
+    "TRUEPRIORITY": "Priorität bei zutreffender Bedingung erforderlich",
+    "FALSEPRIORITY": "Priorität bei nicht zutreffender Bedingung erforderlich",
     "PRIORITY": "Priorität",
-    "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Gotop bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "GOTOP": "Priorität zuweisen (GoToP)",
+    "EDIT_GOTOP": "GoToP bearbeiten",
+    "EDIT_CLOSE": "Verhalten bei Schließen bearbeiten",
     "FILTER": "Filter",
-    "SELECT_STATUS": "Wählen Sie einen Status",
-    "ALL": "Alle",
-    "SELECT_ACCOUNT": "Wählen Sie ein Konto",
-    "OPENED": "Öffnen",
+    "SELECT_STATUS": "Status wählen",
+    "ALL": "Alles",
+    "SELECT_ACCOUNT": "Konto wählen",
+    "OPENED": "Geöffnet",
     "CLOSED": "Geschlossen",
     "STATUS": "Status",
     "ACCOUNT": "Konto",
-    "OPEN": "Öffnen",
-    "INFO": "Info",
+    "OPEN": "Offen",
+    "INFO": "Information",
     "ACCOUNTSID": "Konto SID",
     "AUTHTOKEN": "Auth Token",
     "PROXY": "Proxy",
-    "ADVANCED": "Erweiterte",
+    "ADVANCED": "Erweitert",
     "MOTIONPROXY": "Proxy oder Motion Domain",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
+    "IN_USE": "In Verwendung",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Interne",
-    "PHONE_STATE": "Telefonstatus",
-    "PHONE_STATUS": "Telefonstatus",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
+    "PHONE_STATE": "Status Nebenstelle",
+    "PHONE_STATUS": "SIP-Status Nebenstelle",
     "PAUSE": "Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agent SMS-Warteschlange hinzufügen",
-    "UNPAUSE": "Pause beenden",
-    "DEFAULT_PAUSE": "Standard Pause",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "UNPAUSE": "Pause abbrechen",
+    "DEFAULT_PAUSE": "Standardpause",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "Angehalten",
+    "PAUSED": "in Pause",
     "READY": "Bereit",
     "WAITING": "Warten",
-    "VOICE": "Voice",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
-    "OPENCHANNEL": "Channel öffnen",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Agenten zu SMS-Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur SMS-Warteschlange hinzufügen",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_SMSQUEUE": "In Echtzeit, SMS-Warteschlange",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "GOTOREALTIME_SMSQUEUE": "Direkt zur Echtzeit-Warteschlange",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "SEND": "Senden",
-    "TO": "Zu",
+    "TO": "An",
     "MESSAGE": "Nachricht",
     "TAGS": "Tags",
-    "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",
+    "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",
     "DELETE": "Löschen",
-    "SENDERSTRING": "Absenderzeichenfolge",
+    "SENDERSTRING": "Absenderkennung",
     "DELIVERYREPORT": "Sendebericht",
     "METHOD": "Methode",
     "ADD_NOTE": "Notiz hinzufügen",
     "NOTE": "Hinweis",
-    "SPYINTERACTION": "Spion",
+    "SPYINTERACTION": "Anzeigen",
     "AUTOREPLY": "Automatische Antwort",
-    "EDIT_AUTOREPLY": "Bearbeiten Sie die automatische Antwort",
-    "TIMES": "Anzahl der Male pro Interaktion",
+    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
+    "TIMES": "Zeiten",
     "TEXT": "Text",
-    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
+    "INSERT_MESSAGE_HERE": "Nachricht hier einfügen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "AUTHID": "Authentifizierungs-ID",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
-    "VARIABLE": "Variable",
+    "VARIABLE": "Variabel",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Sound abspielen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
+    "WAITFORTHEASSIGNEDAGENT": "Auf zugewiesenen Agenten warten",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Etikett",
-    "AGENTADD_SMSACCOUNT": "Fügen Sie einen Agenten zum SMS-Konto hinzu",
-    "AGENTTRANSFER": "Agent Transfer",
+    "TAG": "Tag",
+    "AGENTADD_SMSACCOUNT": "Agenten zum SMS-Konto hinzufügen",
+    "AGENTTRANSFER": "Transfer an Agenten erlauben",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
+    "QUEUETRANSFER": "Transfer in Warteschlange erlauben",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
     "TRANSFER": "Transfer",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
-    "DOWNLOAD_INTERACTION": "Herunterladen",
-    "SMSCANNEDANSWERS": "Vordefinierte Antworten",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "CANNEDANSWERS": "Textvorlagen",
+    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
+    "SMSCANNEDANSWERS": "SMS-Textvorlagen",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "APIKEY": "API-Schlüssel",
-    "BASEURL": "Basis-URL",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Anhalten, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+    "BASEURL": "Base_URL",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID während Qualifizierung",
     "ACCESSKEYID": "Zugriffsschlüssel-ID",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Bot Name",
-    "DIALOGFLOW": "DialogFlow",
-    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
-    "EDIT_DIALOGFLOW": "Bearbeiten Sie die DialogFlow-Konfiguration",
+    "BOTNAME": "BOT-Name",
+    "DIALOGFLOW": "Google DialogFlow",
+    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
+    "EDIT_DIALOGFLOW": "DialogFlow-Konfiguration bearbeiten",
     "LANGUAGE": "Sprache",
-    "LEXREGION": "Region",
-    "SECRETACCESSKEY": "Zugriffsschlüsselgeheimnis",
+    "LEXREGION": "Lex Region",
+    "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
     "WELCOMEMESSAGE": "Willkommensnachricht",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Ohne Anhang herunterladen",
-    "DOWNLOAD_WITH_ATTACHMENT": "Download mit Anhang",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Herunterladen ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENT": "Herunterladen inkl. Anhänge",
     "LASTMESSAGE": "Letzte Nachricht",
-    "CLIENTEMAIL": "Kunden-E-Mail",
+    "CLIENTEMAIL": "Kunden E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Schlüssel",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
     "ACCOUNTID": "Konto-ID",
     "APPLICATIONID": "Anwendungs-ID"
index bca1c51..6d60e30 100644 (file)
     "PARTIALPAUSE": "Pausa parcial",
     "BUSY": "Ocupado",
     "TIMER": "Tempo",
-    "IDLE": "Disponível",
+    "IDLE": "Ocioso",
     "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 a46e611..163a056 100644 (file)
 {
   "STAFF": {
-    "CONTEXT": "Kontext",
-    "RINGINUSE": "Ring im Einsatz",
+    "CONTEXT": "Kontext (Wählplan)",
+    "RINGINUSE": "Nebenstelle klingelt auch wenn Nutzer Besetzt",
     "USERS": "Benutzer",
     "AGENTS": "Agenten",
-    "TOGGLE_SIDENAV": "Um sidenav",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "TOGGLE_SIDENAV": "Navigationsleiste umschalten",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "MULTI_SELECT_TOGGLE": "Wählen Sie toggle multi",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
-    "SELECTED": "Ausgewählte",
+    "MULTI_SELECT_TOGGLE": "Mehrfachauswahl ja/nein",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
+    "SELECTED": "Ausgewählt",
     "DELETE_SELECTED": "Auswahl löschen",
     "EXPORT_SELECTED": "Auswahl exportieren",
     "ALL_USERS": "Alle Benutzer",
     "ALL_AGENTS": "Alle Agenten",
     "SORT": "Sortieren",
     "NAME": "Name",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger 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": "Bedienplatz löschen",
-    "EDIT_AGENT": "Agent bearbeiten",
+    "DELETE_AGENT": "Agenten löschen",
+    "EDIT_AGENT": "Agenten 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": "Benutzername",
+    "NAME_REQUIRED": "Name (erforderlich)",
+    "USERNAME": "Nutzername",
     "SHOW_ALL_FIELDS": "Alle Felder anzeigen",
     "PHONE_NUMBER": "Telefonnummer",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
     "ERRORS": {
-      "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",
+      "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",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
-      "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"
+      "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"
     },
-    "ACCOUNT": "Konto",
-    "VOICE": "Voice",
+    "ACCOUNT": "Nutzerdaten",
+    "VOICE": "Einstellungen Telefonie",
     "CREATED_AT": "Erstellt am",
     "ROLE": "Rolle",
-    "PERSONAL_INFO": "Persönliche Infos",
+    "PERSONAL_INFO": "Persönliche Informationen",
     "DESCRIPTION": "Beschreibung",
-    "CHANGE_AVATAR": "Avatar ändern.",
+    "CHANGE_AVATAR": "Avatar ändern",
     "GENERAL": "Allgemein",
-    "INTERNAL": "Interne",
-    "TRANSPORT": "Verkehr",
-    "ALLOWCODECS": "Codecs erlaubt",
+    "INTERNAL": "Interne Durchwahl",
+    "TRANSPORT": "Transport",
+    "ALLOWCODECS": "Erlaubte Codecs",
     "HELP": {
-      "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.",
+      "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'",
       "SIPEXPIRES": "Standardeinstellung: 160",
       "SIPPORT": "Standardeinstellung: 5160",
-      "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",
+      "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",
       "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 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'.",
+      "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'.",
       "SAVE_PERMISSIONS": "Jeder Abschnitt, der ausstehende Änderungen enthält, wird gespeichert",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Modul Tools verwaltet",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Werkzeuge-Modul verwaltet",
       "APIKEY": "Verwenden Sie die Schaltfläche \"API-Schlüsselmanager\" in der Symbolleiste, um diesen Schlüssel zu verwalten",
-      "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)",
+      "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",
       "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 Kennwort",
+    "NEW_PASSWORD": "Neues Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "CHANGE_PASSWORD": "Passwort ändern",
-    "CHANGEPASSWORD_AGENT": "Passwort ändern",
-    "CHANGEPASSWORD_USER": "Passwort ändern",
-    "CHANGEPASSWORD_TELEPHONE": "Passwort ändern",
-    "LOGININPAUSE": "Geben Sie Ihren Benutzernamen und Ihr Passwort In der Pause",
+    "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",
     "HOST": "Host",
     "NAT": "NAT",
-    "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",
+    "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",
     "MOTIONBAR": "Motion Bar",
     "SETTINGS": "Einstellungen",
-    "AUTOANSWER": "\"Autom. Antwort\"",
-    "ENABLESETTINGS": "Einstellungen aktivieren",
+    "AUTOANSWER": "Anruf automatisch annehmen",
+    "ENABLESETTINGS": "Darf Einstellungen sehen",
     "CALL_FORWARDING": "Anrufweiterleitung",
-    "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",
+    "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)",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP läuft [sec]",
+    "SIPEXPIRES": "SIP-Aktualisierungsintervall",
     "SIPPORT": "SIP-Port",
-    "PENALTY": "Strafe",
-    "ACCOUNTNAME": "Account Name",
-    "ADD_TELEPHONE": "Telefon hinzufügen",
-    "EDIT_TELEPHONE": "Telefon bearbeiten",
-    "DELETE_TELEPHONE": "Telefon löschen",
+    "PENALTY": "Verzögerung",
+    "ACCOUNTNAME": "Kontoname",
+    "ADD_TELEPHONE": "Endgerät hinzufügen",
+    "EDIT_TELEPHONE": "Endgerät bearbeiten",
+    "DELETE_TELEPHONE": "Endgerät löschen",
     "TEAMS": "Teams",
     "DELETE_TEAM": "Team löschen",
-    "AGENTADD_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
-    "EDIT_TEAM": "Team bearbeiten.",
+    "AGENTADD_TEAM": "Agenten zu einem Team hinzufügen",
+    "EDIT_TEAM": "Team bearbeiten",
     "TYPE": "Typ",
-    "TELEPHONES": "Telefone",
-    "CALLERID": "Die Anrufer-ID",
-    "ENABLERECORDING": "Aktivieren der Aufzeichnung",
+    "TELEPHONES": "Endgeräte",
+    "CALLERID": "Standard angezeigte Nummer (Caller-ID)",
+    "ENABLERECORDING": "Darf Aufzeichnung starten/stoppen",
     "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": "Melden Sie Warteschlange",
-    "CAPACITY": "Kapazität",
+    "JOIN_QUEUE": "In Warteschlange beitreten",
+    "CAPACITY": "Gleichzeitige Bearbeitung der Kommunikationskanäle",
     "AUTOINTERNAL": "Interne Nummer automatisch generieren",
-    "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",
+    "ADD_AGENT_TO_TEAM": "Agenten zum Team hinzufügen",
+    "TEAMADD_AGENT": "Zum Team hinzufügen",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "PERMISSIONS": "Berechtigungen",
-    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_MODULES_AVAILABLE": "Alle Module verfügbar",
-    "CALLGROUP": "Gruppenruf",
-    "PICKUPGROUP": "Übernahmegruppe",
+    "CALLGROUP": "Anrufgruppe",
+    "PICKUPGROUP": "Pick-Up Gruppe",
     "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": "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",
+    "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",
     "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": "Anzeigen Web Control",
+    "SHOWWEBCONTROL": "Verbindungstyp",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CALLFORWARDING": "Anrufweiterleitung",
-    "DND": "Während der Pause nicht stören",
-    "UNANSWEREDCALLBADGE": "Zeige unbeantwortete Anruf Abzeichen",
-    "ENABLEDTMFTONE": "Dtmf-Töne aktivieren",
-    "AUTOANSWERDELAY": "Auto Antwortverzögerung",
+    "DND": "Darf \"Nicht Stören\" Status setzen",
+    "UNANSWEREDCALLBADGE": "Unbeantwortete Anrufe im Icon anzeigen",
+    "ENABLEDTMFTONE": "Darf DTMF-Töne senden",
+    "AUTOANSWERDELAY": "Automatische Antwort nach",
     "ENCRYPTION": "Verschlüsselung",
     "CHANNELS": "Kanäle",
     "CHAT": "Chat",
-    "SMS": "Sms",
+    "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Benutzer in Warteschlange Kampagnen hinzufügen",
-    "MONITOREXTENSION": "Anrufe an die Nebenstelle des Benutzers aufzeichnen",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Nutzer zu ausgehender Warteschlange hinzufügen",
+    "MONITOREXTENSION": "Nebenstelle des Nutzers aufzeichnen",
     "NO_PASSWORD_CHANGE": "Keine Passwortänderung",
     "SECURITY_SUITE": "Sicherheitssuite",
-    "LAST_PASSWORD_RESET_AT": "Letzte Passwort zurücksetzen um",
-    "SIP_WEBRTC": "Schluck",
-    "SETTINGS_WEBRTC": "die Einstellungen",
+    "LAST_PASSWORD_RESET_AT": "Passwort zuletzt zurückgesetzt am:",
+    "SIP_WEBRTC": "SIP/WebRTC",
+    "SETTINGS_WEBRTC": "Einstellungen",
     "WEBRTC": "WebRTC",
     "DTLSCERTFILE": "TLS-Zertifikat",
-    "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",
+    "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",
     "PHONE": "Telefon",
     "MOBILE": "Handy, Mobiltelefon",
     "ALIAS": "Alias",
     "ENABLEJAWSINTEGRATION": "Jaws-Integration aktivieren",
     "PREFIXREQUIRED": "Präfix erforderlich",
-    "ENABLEVIDEORECORDING": "Aktiviere Videoaufnahme",
+    "ENABLEVIDEORECORDING": "Videoaufzeichnung aktivieren",
     "OLD_PASSWORD": "Altes Passwort",
     "ALL_CHATQUEUES": "Alle Chat-Warteschlangen",
-    "ALL_CHATWEBSITES": "Alle Chat-Websites",
-    "ALL_FAXACCOUNTS": "Alle Faxkonten",
-    "ALL_FAXQUEUES": "Alle Faxwarteschlangen",
+    "ALL_CHATWEBSITES": "Alle Chat-Webseiten",
+    "ALL_FAXACCOUNTS": "Alle Fax-Konten",
+    "ALL_FAXQUEUES": "Alle Fax-Warteschlangen",
     "ALL_MAILACCOUNTS": "Alle E-Mail-Konten",
     "ALL_MAILQUEUES": "Alle E-Mail-Warteschlangen",
-    "ALL_OPENCHANNELACCOUNTS": "Alle offenen Channel-Konten",
-    "ALL_OPENCHANNELQUEUES": "Alle offenen Kanalwarteschlangen",
+    "ALL_OPENCHANNELACCOUNTS": "Alle offener Kanal-Konten",
+    "ALL_OPENCHANNELQUEUES": "Alle offener Kanal-Warteschlangen",
     "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 Faxkonten",
-    "SELECTED_FAXQUEUES": "Ausgewählte Faxwarteschlangen",
+    "SELECTED_FAXACCOUNTS": "Ausgewählte Fax-Konten",
+    "SELECTED_FAXQUEUES": "Ausgewählte Fax-Warteschlangen",
     "SELECTED_MAILACCOUNTS": "Ausgewählte E-Mail-Konten",
     "SELECTED_MAILQUEUES": "Ausgewählte Chat-Warteschlangen",
-    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offene Channel-Konten",
-    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanalwarteschlangen",
+    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offener Kanal-Konten",
+    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanal-Warteschlangen",
     "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 Sprachwarteschlangen",
+    "SELECTED_VOICEQUEUES": "Ausgewählte Anruf-Warteschlangen",
     "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": "Faxwarteschlange zum Benutzer hinzufügen",
+    "USERADD_FAXQUEUES": "Fax-Warteschlange zum Benutzer hinzufügen",
     "USERADD_MAILACCOUNTS": "E-Mail-Konto zum Benutzer hinzufügen",
     "USERADD_MAILQUEUES": "E-Mail-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELACCOUNTS": "Open Channel-Konto zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELQUEUES": "Open Channel-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELACCOUNTS": "Offener Kanal-Konto zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELQUEUES": "Offener Kanal-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": "Sprachwarteschlange zum Benutzer hinzufügen",
-    "HOTDESK": "Heißer Schreibtisch",
+    "USERADD_VOICEQUEUES": "Anruf-Warteschlange zum Benutzer hinzufügen",
+    "HOTDESK": "Wechselnder Arbeitsplatz",
     "ADD_USERPROFILE": "Benutzerprofil hinzufügen",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "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": "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_SELECT_REPORT_TYPE": "Berichtstyp wählen",
+    "PERMISSIONS_SELECT_SECTION": "Abschnitt auswählen",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Kein Zugriff auf den ausgewählten Bereich",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unbefugte Handlung",
-    "PERMISSIONS_WARNING_CLOSE": "Du hast nicht gespeicherte Änderungen. Möchten Sie den Vorgang wirklich ohne Speichern beenden?",
+    "PERMISSIONS_WARNING_CLOSE": "Es wurden Änderungen nicht gespeichert. Fortfahren?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Alle {{sectionName}} Unterabschnitte und ihre Ressourcen werden aktiviert. Sind Sie sicher, dass Sie fortfahren möchten?",
-    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
+    "QUEUES_ASSOCIATION": "{{channel}} Warteschlangen-Zuweisung",
     "READ_PERMISSION": "Lesen",
     "REPORT_TYPE": "Berichtstyp",
     "SECTIONS": "Abschnitte",
     "SUMMARY": "Zusammenfassung",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "USERPROFILE": "Benutzerprofil",
-    "USERPROFILES": "Benutzerprofil",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Sie dürfen die Ressource nicht erstellen",
-    "VIDEOSUPPORT": "Video-Unterstützung",
+    "USERPROFILES": "Benutzerprofile",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Keine Berechtigung zum Erstellen der Ressource",
+    "VIDEOSUPPORT": "Videounterstützung aktivieren",
     "APIKEY": "API-Schlüssel",
-    "APIKEYMANAGER_USER": "API Key Manager",
-    "GENERATE": "(Regenerieren",
+    "APIKEYMANAGER_USER": "API-Schlüsselverwaltung",
+    "GENERATE": "Erneut generieren",
     "MANAGE_API_KEY": "API-Schlüsselmanager",
-    "REMOVE": "Löschen",
-    "ENABLEAUTOMATICSCREENRECORDING": "Aktivieren Sie die automatische Bildschirmaufnahme",
-    "ENABLESCREENRECORDINGBYAGENT": "Aktivieren Sie die Bildschirmaufzeichnung nach Agent",
-    "ENABLEVIDEOECORDING": "Videoaufnahme aktivieren",
+    "REMOVE": "Entfernen",
+    "ENABLEAUTOMATICSCREENRECORDING": "Automatische Bildschirmaufzeichnung aktivieren",
+    "ENABLESCREENRECORDINGBYAGENT": "Bildschirmaufzeichnung durch Agenten aktivieren",
+    "ENABLEVIDEOECORDING": "Videoaufzeichnung aktivieren",
     "BLOCKED": "Gesperrt",
     "DISABLED": "Deaktiviert",
-    "REGENERATE": "Regenerieren",
+    "REGENERATE": "Erneut generieren",
     "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": "Fügen Sie dem Benutzer die Whataspp-Warteschlange hinzu",
+    "USERADD_WHATSAPPQUEUES": "Whataspp-Warteschlange dem Benutzer hinzufügen",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPPCAPACITY": "WhatsApp Connector-Kapazität",
-    "MASK_SENSITIVE_DATA": "Sensitive Daten maskieren",
+    "WHATSAPPCAPACITY": "Kapazität Whatsapp",
+    "MASK_SENSITIVE_DATA": "Pers. Kundendaten verbergen",
     "WSS_PORT": "WSS-Port",
-    "ATTACHMENTS": "Anhänge",
-    "CALLYSQUARE_RECORDINGS": "Cally Square-Aufnahmen",
-    "CONTACT_MANAGER_LISTS": "Kontaktmanagerlisten",
+    "ATTACHMENTS": "Darf Anhänge herunterladen",
+    "CALLYSQUARE_RECORDINGS": "Darf Aufzeichnungen aus dem CallFlow herunterladen",
+    "CONTACT_MANAGER_LISTS": "Darf Listen aus dem Kontaktmanager herunterladen",
     "DOWNLOADS": "Downloads",
     "DOWNLOAD_PERMISSIONS": "Download-Berechtigungen",
-    "JSCRIPTY_SESSIONS": "Jscripty-Sitzungen",
-    "OMNICHANNEL_INTERACTIONS": "Omnichannel-Interaktionen",
-    "SCREEN_RECORDINGS": "Bildschirmaufnahmen",
-    "VOICE_RECORDINGS": "Sprachaufnahmen",
+    "JSCRIPTY_SESSIONS": "Darf Jscripty-Sitzungen herunterladen",
+    "OMNICHANNEL_INTERACTIONS": "Darf alle Kanalübergreifenden Interaktionen herunterladen",
+    "SCREEN_RECORDINGS": "Darf Bildschirmaufzeichnungen herunterladen",
+    "VOICE_RECORDINGS": "Darf Sprachaufzeichnungen herunterladen",
     "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": "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",
+    "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",
     "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-Warteschlangen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agent zu WhatsApp-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agenten zu WhatsApp-Warteschlangen hinzufügen",
     "SELECTED_QUEUES_WHATSAPP_INBOUND": "Ausgewählte WhatsApp-Warteschlangen",
     "AD_SSO_ENABLED": "Active Directory-SSO",
     "AUTHENTICATION": "Authentifizierung",
index 7bfe301..31c8d9c 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 OpenChannel",
+    "SMSCAPACITY": "Capacidade do Sms",
+    "OPENCHANNELCAPACITY": "Capacidade do Open Channel",
     "MOTIONBAR": "Motion Bar",
     "SETTINGS": "Definições",
     "AUTOANSWER": "Resposta automática",
-    "ENABLESETTINGS": "Habilitar configurações",
-    "CALL_FORWARDING": "Encaminhamento de chamadas",
+    "ENABLESETTINGS": "Habilitar Definiçõ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 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",
+    "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",
     "TYPE": "Tipo",
-    "TELEPHONES": "Ramais Adm",
+    "TELEPHONES": "Ramais",
     "CALLERID": "Identificador de chamadas",
     "ENABLERECORDING": "Ativar gravação",
-    "STAFF": "Colaboradores",
+    "STAFF": "Equipe",
     "ID": "Id",
-    "NEW_USER": "Novo usuário",
-    "NEW_AGENT": "Novo agente",
-    "NEW_TELEPHONE": "Novo ramal adm",
-    "NEW_TEAM": "Nova equipe",
-    "ADD_TEAM": "Adicionar equipe",
+    "NEW_USER": "Novo Usuário",
+    "NEW_AGENT": "Novo Agente",
+    "NEW_TELEPHONE": "Novo Ramal",
+    "NEW_TEAM": "Novo Grupo",
+    "ADD_TEAM": "Adicionar Grupo",
     "JOIN_QUEUE": "Junte-se à fila",
     "CAPACITY": "Capacidade",
     "AUTOINTERNAL": "Auto gerar número interno",
-    "ADD_AGENT_TO_TEAM": "Adicionar agente na equipe",
-    "TEAMADD_AGENT": "Adicionar agente na equipe",
+    "ADD_AGENT_TO_TEAM": "Adicionar agente no grupo",
+    "TEAMADD_AGENT": "Adicionar agente no grupo",
     "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": "Todas as equipes",
-    "SELECTED_TEAMS": "Equipes Selecionadas",
+    "ALL_TEAMS": "Todos os grupos",
+    "SELECTED_TEAMS": "Grupos Selecionados",
     "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": "OpenChannel",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Open Channel",
     "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 equipes",
+    "TEAMS_ASSOCIATION": "Associação de grupos",
     "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": "Generate",
+    "GENERATE": "(Regenerado",
     "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": "Regenerate",
+    "REGENERATE": "Regenerado",
     "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 gestão de contatos",
-    "DOWNLOADS": "Downloads",
+    "CONTACT_MANAGER_LISTS": "Listas de gerenciadores de contatos",
+    "DOWNLOADS": "Transferências",
     "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 4904d14..4489cf0 100644 (file)
 {
   "TOOLS": {
-    "BOT": "Voicebot",
+    "BOT": "BOT",
     "CALL": "Anruf",
     "NAME": "Name",
-    "TRUNKS": "Amtsleitungen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "TRUNKS": "SIP-Trunks",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "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",
+      "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",
       "TIME_RANGE_FROM_INVALID": "Falsches Format",
       "TIME_RANGE_TO_INVALID": "Falsches Format",
       "CHANNEL_REQUIRED": "Pflichtfeld",
-      "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",
+      "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",
       "IGNOREDIALERCONTACTID_REQUIRED": "KontaktID erforderlich"
     },
     "HOST": "Host",
-    "SECRET": "Geheimnis",
-    "DEFAULTUSER": "Default User",
+    "SECRET": "Secret",
+    "DEFAULTUSER": "Standardnutzer",
     "DESCRIPTION": "Beschreibung",
-    "ADD_TRUNK": "Amtsleitung hinzufügen",
+    "ADD_TRUNK": "Trunk hinzufügen",
     "HELP": {
-      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Anbieter.",
+      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Systemadministrator.",
       "HOST": "Die Domäne oder den Hostnamen für den Anbieter.",
-      "DEFAULTUSER": "Authentifizierung Benutzernamen, wenden Sie sich an den Anbieter.",
+      "DEFAULTUSER": "Authentifizierung Benutzername, wenden Sie sich an Ihren Anbieter.",
       "CALLERID": "Die Anrufer-ID im Format \"name\" <Nummer>.",
-      "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).",
+      "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.",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "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)",
+      "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)",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "EVENTVARIABLES": "Wenn aktiviert, Es fügt alle Event Variablen an die Url",
+      "EVENTVARIABLES": "Fügt die Event-Variablen der URL hinzu",
       "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": "Wenn nicht ausgefüllt, wird der Standardwert gesendet",
+      "BODY": "(RAW-JSON-Format) Wenn nicht ausgefüllt, wird der Standardwert verwendet",
       "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.\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."
+      "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."
     },
     "EDIT_TRUNK": "Trunk bearbeiten",
-    "DELETE_TRUNK": "Löschen Sie Trunk",
+    "DELETE_TRUNK": "Trunk löschen",
     "CREATED_AT": "Erstellt am",
     "SETTINGS": "Einstellungen",
-    "ADVANCED": "Erweiterte",
+    "ADVANCED": "Erweitert",
     "OTHER": "Andere",
     "ACTIVE": "Aktiv",
     "CONTEXT": "Kontext",
-    "CALLERID": "Die Anrufer-ID",
+    "CALLERID": "Anruferidentifikation (Caller-ID)",
     "TYPE": "Typ",
-    "DTMFMODE": "Mfv-Modus",
+    "DTMFMODE": "DTMF-Modus",
     "NAT": "NAT",
-    "QUALIFY": "Qualifizieren",
-    "ALLOWCODECS": "Codecs erlaubt",
+    "QUALIFY": "Trunk überwachen (SIP-Qualify)",
+    "ALLOWCODECS": "Erlaubte Codecs",
     "INSECURE": "Unsicher",
     "REGISTRY": "Registrierung",
-    "DIRECTMEDIA": "Direkte Medien",
+    "DIRECTMEDIA": "Direct Media",
     "CALLCOUNTER": "Anrufzähler",
-    "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",
+    "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",
     "ENCRYPTION": "Verschlüsselung",
-    "PORT": "Hafen",
-    "TRANSPORT": "Verkehr",
+    "PORT": "Port",
+    "TRANSPORT": "Transport",
     "SAVE": "Speichern",
-    "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\"",
+    "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",
     "TAGS": "Tags",
-    "ADD_TAG": "Variable hinzufügen",
-    "EDIT_TAG": "Variable bearbeiten",
-    "DELETE_TAG": "Variable löschen",
+    "ADD_TAG": "Tag hinzufügen",
+    "EDIT_TAG": "Tag bearbeiten",
+    "DELETE_TAG": "Tag löschen",
     "PAUSES": "Pausen",
     "ADD_PAUSE": "Pause hinzufügen",
     "EDIT_PAUSE": "Pause bearbeiten",
     "DELETE_PAUSE": "Pause löschen",
-    "ADD_CANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_CANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "DELETE_CANNEDANSWER": "Vordefinierte Antwort löschen",
+    "ADD_CANNEDANSWER": "Textbaustein hinzufügen",
+    "EDIT_CANNEDANSWER": "Textbaustein bearbeiten",
+    "DELETE_CANNEDANSWER": "Textbaustein löschen",
     "KEY": "Schlüssel",
     "VALUE": "Wert",
-    "SOUNDS": "Sounds",
-    "EDIT_SOUND": "Ton bearbeiten",
-    "DELETE_SOUND": "Sound löschen",
-    "FINISH": "Fertig stellen",
-    "DROP_TO_UPLOAD": "Drop hochladen",
+    "SOUNDS": "Audiodateien",
+    "EDIT_SOUND": "Audiodatei bearbeiten",
+    "DELETE_SOUND": "Audiodatei löschen",
+    "FINISH": "Beenden",
+    "DROP_TO_UPLOAD": "Hier hineinziehen für Upload",
     "TRIGGERS": "Trigger",
-    "EDIT_TRIGGER": "Auslöser bearbeiten",
-    "DELETE_TRIGGER": "Auslöser löschen",
+    "EDIT_TRIGGER": "Trigger bearbeiten",
+    "DELETE_TRIGGER": "Trigger löschen",
     "ADD_TRIGGER": "Trigger hinzufügen",
     "DELETE": "Löschen",
-    "AUTOMATIONS": "Automatisierungen",
-    "EDIT_AUTOMATION": "Bearbeiten einer Automation",
+    "AUTOMATIONS": "Automation",
+    "EDIT_AUTOMATION": "Automation bearbeiten",
     "DELETE_AUTOMATION": "Automation löschen",
     "ADD_AUTOMATION": "Automation hinzufügen",
-    "INTERVALS": "Intervalle",
+    "INTERVALS": "Zeitintervalle",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_INTERVAL": "Intervall für Löschen.",
+    "DELETE_INTERVAL": "Intervall löschen",
     "ADD_INTERVAL": "Intervall hinzufügen",
     "TOOLS": "Werkzeuge",
-    "ID": "Id",
+    "ID": "ID",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Download Sound",
-    "UPLOAD_SOUND": "Werkzeuge",
+    "DOWNLOAD_SOUND": "Audiodatei herunterladen",
+    "UPLOAD_SOUND": "Audiodatei hochladen",
     "CHANNEL": "Kanal",
-    "NEW_TRIGGER": "Neue Trigger",
+    "NEW_TRIGGER": "Neuer Trigger",
     "GENERAL": "Allgemein",
-    "STATUS": "Status",
+    "STATUS": "Trigger aktiv",
     "CONDITIONS&ACTIONS": "Bedingungen und Aktionen",
-    "ALLCONDITIONS": "Alle diese Bedingungen erfüllen:",
-    "ANYCONDITIONS": "Treffen diese Voraussetzungen:",
-    "ACTIONS": "Aktionen:",
+    "ALLCONDITIONS": "Alle Bedingungen werden erfüllt",
+    "ANYCONDITIONS": "Einige Bedingungen werden erfüllt",
+    "ACTIONS": "Aktionen",
     "NEW_AUTOMATION": "Neue Automation",
-    "TIMEOUT": "Timeout",
+    "TIMEOUT": "Zeitüberschreitung",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Anrufe beschränken",
-    "OTHERFIELDS": "Andere Felder",
-    "NEW_VARIABLE": "Neue Variable",
+    "CALL_LIMIT": "Anrufe limitieren",
+    "OTHERFIELDS": "Zusätzliche SIP-Felder",
+    "NEW_VARIABLE": "Neue Variabel",
     "NEW_TAG": "Neuer Tag",
     "NEW_PAUSE": "Neue Pause",
-    "NEW_CANNEDANSWER": "Neue vordefinierte Antwort",
+    "NEW_CANNEDANSWER": "Neue Textvorlage",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "NEW_TRUNK": "Neue Leitung",
-    "FROM": "Von",
-    "TO": "Zu",
-    "WEEKDAY": "Woche Tag",
-    "MONTHDAY": "Monat Tag",
+    "NEW_TRUNK": "Neuer Trunk",
+    "FROM": "von",
+    "TO": "an",
+    "WEEKDAY": "Wochentag",
+    "MONTHDAY": "Monatstag",
     "MONTH": "Monat",
     "ALWAYS": "Immer",
     "MON": "Montag",
     "NOV": "November",
     "DEC": "Dezember",
     "PASSWORD": "Passwort",
-    "CUSTOMDASHBOARDS": "Benutzerdefinierte Dashboards",
+    "CUSTOMDASHBOARDS": "Benutzerdef. Dashboards",
     "NEW_CUSTOMDASHBOARD": "Neues benutzerdefiniertes Dashboard",
-    "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",
+    "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",
     "SENDMAIL": "E-Mail senden",
     "CONFIGURATION": "Konfiguration",
     "MAIL": "E-Mail",
     "REPORTTYPE": "Berichtstyp",
     "REPORT": "Bericht",
-    "OUTPUT": "Ausgang",
+    "OUTPUT": "Ausgabeformat",
     "EXECUTEON": "Ausführung",
-    "REPORTRANGE": "Berichtsbereich",
+    "REPORTRANGE": "Bereich",
     "VALIDITYSTART": "Startzeit",
     "VALIDITYEND": "Endzeit",
     "EXECUTEEVERY": "Alle ausführen",
     "WEEKLY": "Wöchentlich",
     "MONTHLY": "Monatlich",
     "PREVIOUS_DAY": "Vorheriger Tag",
-    "LAST_SEVEN_DAYS": "Letzte sieben Tage",
-    "LAST_THIRTY_DAYS": "33 verbotenen letzte Tage",
+    "LAST_SEVEN_DAYS": "Letzte 7 Tage",
+    "LAST_THIRTY_DAYS": "Letzte 30 Tage",
     "LAST_MONTH": "Letzter Monat",
-    "WEEKDAYS": "Woche Tage",
+    "WEEKDAYS": "Wochentage",
     "HOUR": "Stunde",
     "DEFAULT": "Standard",
     "CSV": "CSV",
     "15MIN": "15 Minuten",
     "30MIN": "30 Minuten",
     "1H": "1 Stunde",
-    "VOICE": "Voice",
+    "VOICE": "Sprachanrufe",
     "CHAT": "Chat",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "ADD_TEMPLATE": "Vorlage hinzufügen",
     "CONTENT": "Inhalt",
     "FIELD": "Feld",
-    "NO_ANYCONDITION_AVAILABLE": "Keine Bedingungen verfügbar",
-    "NO_ALLCONDITION_AVAILABLE": "Keine Bedingungen verfügbar",
+    "NO_ANYCONDITION_AVAILABLE": "Keine Bedingung verfügbar",
+    "NO_ALLCONDITION_AVAILABLE": "Keine Bedingung 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 Maßnahme",
+    "NEW_ACTION": "Neue Aktion",
     "ADD_ACTION": "Aktion hinzufügen",
     "QUEUE": "Warteschlange",
     "CALL_STATUS": "Anrufstatus",
-    "OUTBOUNDROUTE": "Abgehende Routen",
-    "EQUALS": "Ist gleich",
-    "NOT_EQUALS": "Nicht gleich",
-    "CONTACT_MANAGER": "Contacts Manager",
+    "OUTBOUNDROUTE": "Ausgehende Routen",
+    "EQUALS": "ist gleich",
+    "NOT_EQUALS": "ist nicht gleich",
+    "CONTACT_MANAGER": "Kontaktmanager",
     "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": "Betreiber",
+    "OPERATOR": "Operator",
     "NO_INTERVALS_AVAILABLE": "Keine Intervalle zur Verfügung",
     "YES": "Ja",
-    "NO": "Keine",
+    "NO": "Nein",
     "SUBJECT": "Betreff",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "BROWSER": "Browser",
     "INTERVAL": "Intervall",
-    "INFO": "Info",
+    "INFO": "Information",
     "TIME_RANGE": "Zeitbereich",
-    "WEEK_DAYS": "Woche Tage",
-    "MONTH_DAYS": "Monat Tage",
+    "WEEK_DAYS": "Wochentage",
+    "MONTH_DAYS": "Monatstage",
     "MONTHS": "Monate",
-    "DROP_TO_UPLOAD_MESSAGE": "Sie können auch Audiodateien hier ablegen\" hochzuladen. Nur MP3-, WAV-, GSM-Max. 15 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Dateien hier hinein ziehen zum Hochladen. Unterstütze Formate: .mp3, .wav, .gsm; Max. Dateigröße: 15 MB",
     "POLLING_INTERVAL": "Abfrageintervall (Sekunden)",
-    "DASHBOARD": "Armaturenbrett",
-    "NEW_DASHBOARDITEM": "Neue Dashboard Widget",
+    "DASHBOARD": "Dashboard",
+    "NEW_DASHBOARDITEM": "Neues Dashboard-Widget",
     "COUNTER": "Zähler",
     "IFRAME": "IFrame",
     "CLOCK": "Uhr",
-    "ADD_DASHBOARDITEM": "Dashboard Widget hinzufügen",
-    "EDIT_WIDGET": "Bearbeiten Widget",
-    "DELETE_WIDGET": "Löschen Widget",
-    "FLIP_WIDGET": "Flip Widget",
+    "ADD_DASHBOARDITEM": "Dashboard-Widget hinzufügen",
+    "EDIT_WIDGET": "Widget bearbeiten",
+    "DELETE_WIDGET": "Widget löschen",
+    "FLIP_WIDGET": "Widget drehen",
     "TITLE": "Titel",
     "UPDATE": "Aktualisieren",
     "LAYOUT": "Layout",
     "BACKGROUND_COLOR": "Hintergrundfarbe",
     "FOREGROUND_COLOR": "Vordergrundfarbe",
-    "FOREGROUND_TITLE_COLOR": "Vordergrund Titel Farbe",
-    "THEME": "Thema",
-    "LIGHT": "Licht",
+    "FOREGROUND_TITLE_COLOR": "Titelfarbe",
+    "THEME": "Design-Thema",
+    "LIGHT": "Hell",
     "DARK": "Dunkel",
     "TIMEZONE": "Zeitzone",
-    "DIGITAL_FORMAT": "Digitale Datum Format",
+    "DIGITAL_FORMAT": "Digitales Datumsformat",
     "TOOLS_QUERY": "Abfrage",
-    "SELECT": "Wählen Sie",
-    "WHERE": "Wo",
+    "SELECT": "Auswählen",
+    "WHERE": "where",
     "BACK": "Zurück",
     "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "In Echtzeit, Trunk gehen",
-    "GOTO_TRUNK": "Um die Leitungsbündel gehen",
-    "CRON": "Cron",
+    "GOTOREALTIME_TRUNK": "Direkt zum Echtzeitmonitoring für SIP-Trunks",
+    "GOTO_TRUNK": "Direkt zum SIP-Trunk gehen",
+    "CRON": "Versand",
     "MINUTES": "Minuten",
     "HOURLY": "Stündlich",
     "YEARLY": "Jährlich",
-    "EVERY": "Jede",
+    "EVERY": "Jede(n)",
     "MINUTE": "Minute",
-    "ON_SECOND": "Im 2.",
-    "HOUR_ON_MINUTE": "Stunde Minute",
-    "AND_SECOND": "Und 2.",
-    "DAY_AT": "Tag an",
+    "ON_SECOND": "Zur Sekunde",
+    "HOUR_ON_MINUTE": "Stunde zur Minute",
+    "AND_SECOND": "und Sekunde",
+    "DAY_AT": "Am Tag",
     "START_TIME": "Startzeit",
-    "ON_THE": "Auf der",
-    "OF_EVERY": "Jedes",
+    "ON_THE": "Am",
+    "OF_EVERY": "An jedem",
     "MONTH_AT": "Monat",
-    "AT": "An",
+    "AT": "um",
     "LAST": "Letzte",
     "LASTUNIT": "Einheit",
     "MAILACCOUNT": "E-Mail Konto",
-    "OF": "Von",
-    "PAST_THE_HOUR": "Nach der vollen Stunde",
+    "OF": "von",
+    "PAST_THE_HOUR": "Minuten nach voller Stunde",
     "DAY": "Tag",
     "WEEK": "Woche",
     "YEAR": "Jahr",
-    "ON": "Auf",
+    "ON": "Am",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OUTBOUND_ROUTE": "Abgehende Routen",
-    "EVENTVARIABLES": "Bei Variablen",
+    "OUTBOUND_ROUTE": "Ausgehende Routen",
+    "EVENTVARIABLES": "Event-Variablen",
     "FAX": "Fax",
     "INTERACTION": "Interaktion",
     "MESSAGE": "Nachricht",
-    "T38PT_UDPTL": "T38 pt Udptl",
-    "AUTOCREATECONTACT": "Erstellen Sie automatisch",
+    "T38PT_UDPTL": "Redundanz, maxdatagram = 400",
+    "AUTOCREATECONTACT": "Automatische Kontakterstellung",
     "COLOR": "Farbe",
-    "LOCATION": "Lage",
-    "NEW_TAB": "Neue Registerkarte",
+    "LOCATION": "Standort",
+    "NEW_TAB": "Neuer Tab",
     "NEW_WINDOW": "Neues Fenster",
-    "WINDOWWIDTH": "Fenster Breite (px)",
+    "WINDOWWIDTH": "Fensterbreite (px)",
     "WINDOWHEIGHT": "Fensterhöhe (px)",
     "EDIT_DASHBOARDITEM": "Dashboard-Widget bearbeiten",
     "FONTSIZE": "Schriftgröße",
     "FOREGROUND": "Vordergrund",
     "NONE": "Keiner",
     "TOTAL": "Gesamt",
-    "ABANDONED": "Verlassen",
+    "ABANDONED": "Abgebrochen",
     "WAITING": "Warten",
-    "TALKING": "Reden",
-    "ANSWERED": "Antwortete",
-    "UNMANAGED": "Nicht verwaltet",
+    "TALKING": "im Gespräch",
+    "ANSWERED": "Beantwortet",
+    "UNMANAGED": "Nicht bearbeitet",
     "CUSTOMTYPE": "Benutzerdefiniert [Pfad]",
-    "WEBREPORT": "Webbericht",
+    "WEBREPORT": "Interner Report",
     "PIECHART": "Kuchendiagramm",
     "MULTIBARCHART": "Multibar-Diagramm",
     "MOVE_WIDGET": "Widget verschieben",
-    "USERADD_CUSTOMDASHBOARD": "Hinzufügen von Benutzerberechtigungen",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
-    "METRIC": "Metrisch",
-    "FILTERVOICEQUEUES": "Voice-Warteschlangen filtern",
+    "USERADD_CUSTOMDASHBOARD": "Berechtigungen hinzufügen",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Vorschau Dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Vorschau Dashboard",
+    "METRIC": "Metrik",
+    "FILTERVOICEQUEUES": "Anruf-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 Benutzer",
+    "SELECTED_USERS": "Ausgewählte Nutzer",
     "ADD_WIDGET": "Widget hinzufügen",
-    "NEXTCONTACT": "Nächster",
+    "NEXTCONTACT": "Nächster Kontakt",
     "SENDIFEMPTY": "Senden, wenn leer",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "UPLOADING": "Hochladen",
-    "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",
+    "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",
     "REPORTFOLDER": "Berichtsordner",
-    "REPORTSUBFOLDER": "Unterordner melden",
-    "PREVIOUSCONTACT": "Bisherige",
+    "REPORTSUBFOLDER": "Unterordner",
+    "PREVIOUSCONTACT": "Vorheriger Kontakt",
     "VIDEOSUPPORT": "Video-Unterstützung",
     "AGENT": "Agent",
     "HEADERS": "Überschriften",
     "SCRIPT": "Skript",
-    "SCRIPT_INFO": "Info",
+    "SCRIPT_INFO": "Information",
     "SCRIPT_TYPE": "Art",
     "MOTION_TAB": "Neue Registerkarte \"Agent Dashboard\"",
     "WHATSAPP": "WhatsApp Connector",
     "AUTOCREATE_FIELD": "Feld automatisch erstellen",
-    "GLOBALS": "Globals",
+    "GLOBALS": "Globale Werte",
     "SEARCH_FIELDS": "Suchfelder",
     "STANDARD": "Standard",
     "MOTION_BAR": "Motion Bar",
     "ALL": "Alle",
-    "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",
+    "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",
     "ADD_CONTACTITEMTYPE": "Hinzufügen",
     "CONTACTITEMTYPE": "Kontaktartikeltypen",
     "NEW_CONTACTITEMTYPE": "Neuer Kontaktelementtyp",
index 60b1a08..89475fd 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": "Direct media",
+    "DIRECTMEDIA": "Mídia Direta",
     "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 pré-definidas",
-    "ADD_CANNEDANSWER": "Adicionar resposta pré-definida",
-    "EDIT_CANNEDANSWER": "Editar resposta pré-definida",
-    "DELETE_CANNEDANSWER": "Excluir resposta pré-definida",
+    "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",
     "KEY": "Key",
     "VALUE": "Valor",
-    "SOUNDS": "Áudios",
-    "EDIT_SOUND": "Editar áudio",
-    "DELETE_SOUND": " Ecluir áudio",
+    "SOUNDS": "Sons",
+    "EDIT_SOUND": "Editar Som",
+    "DELETE_SOUND": " Ecluir Som",
     "CANCEL": "Cancelar",
     "FINISH": "Finalizar",
-    "DROP_TO_UPLOAD": "Soltar para fazer o upload",
+    "DROP_TO_UPLOAD": "Largar para fazer o upload",
     "UPLOADING": "Uploading",
-    "TRIGGERS": "Triggers",
-    "EDIT_TRIGGER": "Editar trigger",
-    "DELETE_TRIGGER": "Excluir trigger",
-    "ADD_TRIGGER": "Adicionar trigger",
+    "TRIGGERS": "Gatilhos",
+    "EDIT_TRIGGER": "Editar Gatilhos",
+    "DELETE_TRIGGER": "Excluir Gatilhos",
+    "ADD_TRIGGER": "Adicionar Gatilhos",
     "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": "Áudio",
-    "DOWNLOAD_SOUND": "Download áudio",
+    "AUDIO": "Audio",
+    "DOWNLOAD_SOUND": "Download Som",
     "UPLOAD_SOUND": "Ferramentas",
     "CHANNEL": "Canal",
-    "NEW_TRIGGER": "Nova trigger",
+    "NEW_TRIGGER": "Novo Gatilho",
     "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": "Peer status",
+    "PEERSTATUS": "Status de par 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 pré-definida",
-    "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 Pronta",
+    "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": "Gestão Contatos",
+    "CONTACT_MANAGER": "Gerente de contatos",
     "INTEGRATIONS": "Integrações",
     "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
index 832ae56..0339802 100644 (file)
 {
   "VOICE": {
-    "GOTO_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
-    "GOTOREALTIME_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
+    "GOTO_VOICEQUEUE": "Zur Anruf-Warteschlange gehen",
+    "GOTOREALTIME_VOICEQUEUE": "Direkt zur Echtzeit-Warteschlange",
     "NAME": "Name",
     "LOGOUT": "An-/Abmelden",
-    "VOICEQUEUES": "Voice Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "VOICEQUEUES": "Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "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",
+    "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",
     "DELETE_VOICEQUEUE": "Warteschlange löschen",
-    "MOHSOUNDS": "Die MOH-Sounds",
-    "STRATEGY": "Strategie",
+    "MOHSOUNDS": "Wartemusik",
+    "STRATEGY": "Verteilungsstrategie",
     "DESCRIPTION": "Beschreibung",
-    "ADD_VOICEQUEUE": "Hinzufügen von Warteschlangen",
+    "ADD_VOICEQUEUE": "Warteschlangen hinzufügen",
     "CREATED_AT": "Erstellt am",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht gsm-Audiodateien",
+    "CANT_PLAY_GSM_AUDIO_FILES": "GMS-Audiodateien können nicht abgespielt werden",
     "APPLICATIONS_LIST": "Liste der Anwendungen",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Benutzerdefinierte Anwendung."
     },
     "ERRORS": {
-      "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"
+      "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"
     },
     "GENERAL": "Allgemein",
-    "TIMEOUT": "Timeout",
+    "TIMEOUT": "Max. Klingelzeit Nebenstelle",
     "MAXLENGTH": "Maximale Länge",
-    "RETRY": "Versuchen Sie es erneut",
-    "WRAPUPTIME": "-Zeit",
-    "WEIGHT": "Gewicht",
-    "JOINWHENEMPTY": "Melden Sie wenn sie leer sind",
-    "LEAVEWHENEMPTY": "Wenn sie leer lassen",
+    "RETRY": "Erneut versuchen",
+    "WRAPUPTIME": "Nacharbeitszeit",
+    "WEIGHT": "Gewichtung",
+    "JOINWHENEMPTY": "Beitreten, wenn leer",
+    "LEAVEWHENEMPTY": "Verlassen, wenn leer",
     "HELP": {
-      "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.",
+      "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",
       "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": "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",
+      "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.",
       "SAVE_ROUTES": "Die Einstellungen der Route wurden geändert. Bitte nicht vergessen, zu Speichern."
     },
-    "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",
+    "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",
     "VARIABLE": "Variable",
-    "CONTEXT": "Kontext",
+    "CONTEXT": "Kontext Austritt aus Warteschlange",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
-    "INBOUNDROUTES": "Ankommende Routen",
+    "INBOUNDROUTES": "Eingehende Routen",
     "PHONENUMBER": "Telefonnummer",
     "ADD_INBOUNDROUTE": "Eingehende Route hinzufügen",
-    "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",
+    "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": "Abgehende Route bearbeiten",
-    "DELETE_OUTBOUNDROUTE": "Abgehende Route löschen",
-    "CUTDIGITS": "Die Ziffern",
-    "RECORDING": "Aufnahme",
+    "EDIT_OUTBOUNDROUTE": "Ausgehende Route bearbeiten",
+    "DELETE_OUTBOUNDROUTE": "Ausgehende Route löschen",
+    "CUTDIGITS": "Ziffern abschneiden",
+    "RECORDING": "Aufzeichnung",
     "RECORDINGFORMAT": "Aufzeichnungsformat",
     "INTERNALROUTES": "Interne Routen",
-    "ADD_INTERNALROUTE": "Fügen Sie interne Routen",
+    "ADD_INTERNALROUTE": "Interne Route hinzufügen",
     "EDIT_INTERNALROUTE": "Interne Route bearbeiten",
-    "DELETE_INTERNALROUTE": "Interne Routen löschen",
+    "DELETE_INTERNALROUTE": "Interne Route löschen",
     "CONTEXTS": "Kontexte",
-    "ADD_CONTEXT": "Rahmen hinzufügen",
+    "ADD_CONTEXT": "Kontext hinzufügen",
     "EDIT_CONTEXT": "Kontext bearbeiten",
-    "DELETE_CONTEXT": "Löschen von Rahmen",
-    "VOICEMAILS": "Von Voicemails",
-    "ADD_VOICEMAIL": "Fügen Sie Voicemail",
-    "EDIT_VOICEMAIL": "Bearbeiten von Voicemail",
+    "DELETE_CONTEXT": "Kontext löschen",
+    "VOICEMAILS": "Voicemails",
+    "ADD_VOICEMAIL": "Voicemail hinzufügen",
+    "EDIT_VOICEMAIL": "Voicemail bearbeiten",
     "DELETE_VOICEMAIL": "Voicemail löschen",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger Name",
     "EMAIL": "E-Mail",
     "MAILBOX": "Mailbox",
     "PASSWORD": "Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "TIMEZONE": "Zeitzone",
-    "ATTACH": "Befestigen Sie",
-    "ENVELOPE": "Umschlag",
-    "DELETE": "Löschen",
+    "ATTACH": "Anhang",
+    "ENVELOPE": "Datum und Zeit ansagen",
+    "DELETE": "Datei Löschen nach E-Mailversand",
     "EMAILBODY": "E-Mail-Text",
-    "EMAILSUBJECT": "Betreff der E-Mail",
-    "MAXSECONDS": "In Sekunden",
-    "MAXMESSAGES": "Max. Nachrichten",
+    "EMAILSUBJECT": "E-Mail Betreff",
+    "MAXSECONDS": "Max. Länge der Nachricht (Sekunden)",
+    "MAXMESSAGES": "Max. Nachrichten in Mailbox",
     "MESSAGES": "Nachrichten",
     "SORT": "Sortieren",
-    "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",
+    "ADD_MUSICONHOLD": "Wartemusik hinzufügen",
+    "MUSICONHOLDS": "Wartemusik",
+    "EDIT_MUSICONHOLD": "Wartemusik bearbeiten",
+    "DELETE_MUSICONHOLD": "Wartemusik löschen",
     "DIRECTORY": "Verzeichnis",
     "AUDIOFILES": "Audiodateien",
-    "RECORDINGS": "Aufnahmen",
-    "CHANSPY": "ChanSpy",
+    "RECORDINGS": "Aufzeichnungen",
+    "CHANSPY": "Listen-In (Chanspy)",
     "PREFIX": "Präfix",
     "OPTIONS": "Optionen",
-    "AUTH": "Auth",
-    "ADD_CHANSPY": "Fügen Sie ChanSpy",
-    "EDIT_CHANSPY": "Bearbeiten Sie ChanSpy",
-    "DELETE_CHANSPY": "Löschen Sie ChanSpy",
+    "AUTH": "Authentifizierung",
+    "ADD_CHANSPY": "Listen-In hinzufügen",
+    "EDIT_CHANSPY": "Listen-In bearbeiten",
+    "DELETE_CHANSPY": "Listen-In löschen",
     "AGENTS": "Agenten",
     "TELEPHONES": "Telefone",
     "QUEUES": "Warteschlangen",
-    "QUEUE_CALLS": "Anrufe aus einer Warteschlange",
-    "QUEUE_PARAMETERS": "Queue Parameter",
+    "QUEUE_CALLS": "Anrufe in Warteschlange",
+    "QUEUE_PARAMETERS": "Warteschlangen-Parameter",
     "ABANDONED_CALLS": "Abgebrochene Anrufe",
     "OUTBOUND_CALLS": "Ausgehende Anrufe",
     "AGI": "AGI",
-    "DIAL": "Kurzwahl",
+    "DIAL": "Wählen",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Interne Wahl",
-    "EXTERNALDIAL": "Externes Wählen",
-    "RINGGROUP": "Ring-Gruppe",
+    "INTERNALDIAL": "Intern wählen",
+    "EXTERNALDIAL": "Extern wählen",
+    "RINGGROUP": "Rufgruppe",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Set",
+    "SET": "Einstellen (Set)",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
-    "CUSTOM": "Benutzerdefinierte",
-    "PROJECT": "Cally-Square Projekt",
-    "TECHNOLOGY/RESOURCE": "Technologie-/Ressourcen",
+    "CUSTOM": "Benutzerdefiniert",
+    "PROJECT": "Call-Flow Projekt",
+    "TECHNOLOGY/RESOURCE": "Technologie-/Ressource (Z.B. SIP/1003)",
     "URL": "URL",
-    "EDIT_APP": "Anwendung bearbeiten.",
-    "EDIT_INTERVAL": "Intervall bearbeiten",
+    "EDIT_APP": "Anwendung bearbeiten",
+    "EDIT_INTERVAL": "Zeitintervall bearbeiten",
     "DELETE_APP": "Anwendung löschen",
-    "INTERVALS": "Intervalle",
+    "INTERVALS": "Zeitintervalle",
     "USER": "Benutzer",
-    "TRUNK": "Amtsleitung",
+    "TRUNK": "SIP-Trunk",
     "PHONE": "Telefon",
     "AUDIO_FILES": "Audiodateien",
-    "ANNOUNCE_OVERRIDES": "Überschreibt ankündigen",
+    "ANNOUNCE_OVERRIDES": "Ansage überschreiben",
     "MACRO": "Makro",
     "GOSUB": "GoSub",
     "RULE": "Regel",
     "POSITION": "Position",
-    "ANSWER": "Antwort",
+    "ANSWER": "Antwort vom System",
     "VALUE": "Wert",
     "MAILBOX@CONTEXT": "Mailbox@Kontext",
-    "EXTENSION": "Erweiterung",
+    "EXTENSION": "Nebenstelle",
     "PRIORITY": "Priorität",
-    "HANGUP_CAUSE": "Ursache auflegen",
-    "OUTBOUNDDIAL": "Wählen Sie für abgehende Anrufe",
-    "CALLER_ID": "Die Anrufer-ID",
+    "HANGUP_CAUSE": "Auflegegrund",
+    "OUTBOUNDDIAL": "Ausgehend wählen",
+    "CALLER_ID": "Anrufer-ID",
     "NO_MESSAGE_AVAILABLE": "Keine Meldungen vorhanden",
     "NO_SOUND_AVAILABLE": "Kein Ton verfügbar",
-    "VOICERECORDINGS": "Sprachaufnahmen",
-    "CHANSPIES": "Chan Spies",
-    "VOICE": "Voice",
+    "VOICERECORDINGS": "Sprachaufzeichnungen",
+    "CHANSPIES": "Listen-Ins",
+    "VOICE": "Anrufe",
     "REALTIME": "Echtzeit",
-    "ID": "Id",
+    "ID": "ID",
     "VOICEMAIL_CONTEXT": "Kontext",
     "NO_MOHSOUND_AVAILABLE": "Keine Wartemusik verfügbar",
     "FILE": "Datei",
-    "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",
+    "ADD_MOHSOUND": "Wartemusik hinzufügen",
+    "DOWNLOAD_MOHSOUND": "Wartemusik herunterladen",
+    "DELETE_MOHSOUND": "Wartemusik löschen",
     "UNIQUEID": "Eindeutige ID",
     "AGENT": "Agent",
     "TYPE": "Typ",
     "RATING": "Bewertung",
     "AUDIO": "Audio",
     "DATE": "Datum",
-    "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_VOICEQUEUE": "Neue Anruf-Warteschlange",
+    "NEW_INBOUNDROUTE": "Neue eingehende Route",
+    "NEW_OUTBOUNDROUTE": "Neue ausgehende Route",
+    "NEW_INTERNALROUTE": "Neue interne Route",
+    "NEW_CONTEXT": "Neuer Kontext",
     "NEW_VOICEMAIL": "Neue Voicemail",
-    "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.",
+    "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",
     "EDIT_AGI": "AGI 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",
+    "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",
     "DURATION": "Dauer",
-    "RECEIVED_AT": "Empfangen am",
+    "RECEIVED_AT": "Eingegangen am",
     "YES": "Ja",
-    "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)",
+    "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 = Anzahl geändert",
-    "HANGUPCAUSE_27": "27 = Ziel nicht in Ordnung",
-    "HANGUPCAUSE_38": "38 = Netzwerk aus, um",
+    "HANGUPCAUSE_22": "22 = Nummer geändert",
+    "HANGUPCAUSE_27": "27 = Ziel nicht verfügbar",
+    "HANGUPCAUSE_38": "38 = Netzwerk nicht verfügbar",
     "HANGUPCAUSE_41": "41 = vorübergehende Störung",
-    "RANDOM": "Random",
+    "RANDOM": "Zufall",
     "ALPHABETICAL": "Alphabetisch",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Löschen von Voice Recording",
-    "INTERNAL": "Interne",
-    "PHONE_STATE": "Telefonstatus",
-    "PHONE_STATUS": "Telefonstatus",
-    "TRUNK_STATUS": "Trunk Status",
+    "DOWNLOAD_VOICERECORDING": "Sprachaufzeichnung herunterladen",
+    "DELETE_VOICERECORDING": "Sprachaufzeichnung löschen",
+    "INTERNAL": "Intern",
+    "PHONE_STATE": "Status Nebenstelle",
+    "PHONE_STATUS": "SIP-Status Nebenstelle",
+    "TRUNK_STATUS": "Status Trunk",
     "REGISTERED": "Registriert",
-    "UNREGISTERED": "Unregistrierte",
-    "LAGGED": "Zurück",
+    "UNREGISTERED": "Nicht registriert",
+    "LAGGED": "Verzögert",
     "REACHABLE": "Erreichbar",
     "UNREACHABLE": "Nicht erreichbar",
     "UNKNOWN": "Unbekannt",
-    "NOT_INUSE": "Nicht in Gebrauch",
-    "INUSE": "Im Einsatz",
+    "NOT_INUSE": "Nicht in Verwendung",
+    "INUSE": "In Verwendung",
     "BUSY": "Besetzt",
     "INVALID": "Ungültig",
     "UNAVAILABLE": "Nicht verfügbar",
     "RINGING": "Klingeln",
-    "ONHOLD": "Auf Halten",
-    "RING": "Ring",
-    "UP": "Bis",
-    "INFO": "Info",
-    "TRUNKS": "Amtsleitungen",
+    "ONHOLD": "Halten",
+    "RING": "Klingeln",
+    "UP": "Status",
+    "INFO": "Information",
+    "TRUNKS": "SIP-Trunks",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine registry",
+    "NO_REGISTRY": "Keine Registrierung",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
-    "WAITING": "Warten",
-    "TALKING": "Sprechen",
-    "DID": "Haben",
+    "WAITING": "Wartezustand",
+    "TALKING": "Im Gespräch",
+    "DID": "DID",
     "CALLER": "Anrufer",
-    "TOTAL": "Insgesamt",
+    "TOTAL": "Gesamt",
     "ANSWERED": "Beantwortet",
     "ABANDONED": "Abgebrochen",
-    "UNMANAGED": "Nicht verwaltete",
-    "AVG_HOLD_TIME": "Durchschnittl. Warteschleifenzeit",
-    "AVG_DURATION": "Av-Dauer",
-    "AVG_BILLABLE": "Avg Fakturierbaren",
-    "SOURCE": "Quelle",
+    "UNMANAGED": "Nicht bearbeitet",
+    "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
+    "AVG_DURATION": "Durchschnittliche Dauer",
+    "AVG_BILLABLE": "Durchschnittliche abrechenbare Zeit",
+    "SOURCE": "Ursprung",
     "DESTINATION": "Ziel",
     "REJECTED": "Abgelehnt",
     "FAILED": "Fehlgeschlagen",
-    "CALLED": "Aufgerufen",
+    "CALLED": "Angerufen",
     "CONNECTED": "Verbunden",
     "NO_RATING": "Keine Bewertung",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
+    "EDIT_VOICERECORDING": "Sprachaufzeichnung bearbeiten",
     "APPLICATION_NAME": "Name der Anwendung",
     "ARGUMENTS": "Argumente",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
-    "DEFAULT_PAUSE": "Standard PAUSE",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "DEFAULT_PAUSE": "Standard Pause",
     "PAUSE": "Pause",
-    "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",
+    "UNPAUSE": "Fortsetzen",
+    "REDIRECT_TO_NUMBER": "Weiterleiten an Nummer",
+    "REDIRECT_TO_AGENT": "Weiterleiten an Agenten",
+    "AGENTADD_VOICEQUEUE": "Agenten zu Warteschlange hinzufügen",
     "APPLICATION": "Anwendung",
     "FILES": "Dateien",
     "FORMAT": "Format",
     "MODE": "Modus",
     "RECORD": "Datensatz",
-    "TEAMADD_VOICEQUEUE": "Hinzufügen Team voicequeue",
-    "NEW_MOHSOUND": "Neue Musik auf Halten",
-    "DOWNLOAD_MESSAGE": "Download",
+    "TEAMADD_VOICEQUEUE": "Team zur Warteschlange hinzufügen",
+    "NEW_MOHSOUND": "Neue Wartemusik",
+    "DOWNLOAD_MESSAGE": "Herunterladen",
     "DELETE_MESSAGE": "Löschen",
     "QUEUE_PARAMS": "Queue Parameter",
-    "TOTAL_OFFERED": "Insgesamt",
+    "TOTAL_OFFERED": "Gesamt",
     "READY": "Bereit",
-    "AGENTADD_QUEUE": "Agent hinzufügen Warteschlangen zu Voice",
-    "AGENTSADD_QUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlangen hinzufügen",
+    "ALL_TEAMS": "Alle Teams",
     "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": "Bearbeiten ausgehenden DFÜ",
-    "ACCOUNTNAME": "Konto Name",
+    "EDIT_OUTBOUNDDIAL": "Wählverhalten ausgehend bearbeiten",
+    "ACCOUNTNAME": "Kontoname",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "DISPOSITION": "Disposition",
+    "OF": "von",
+    "DISPOSITION": "Qualifizierung",
     "WAITING_FOR_AGENTS": "Warten auf Agenten",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "PARTIALPAUSE": "Teilweise Pause",
+    "PARTIALPAUSE": "Teilpause",
     "STATUS": "Status",
     "TIMER": "Timer",
     "ALL": "Alle",
     "IDLE": "Leerlauf",
-    "EDIT_TRUNK": "Bearbeiten Trunk",
+    "EDIT_TRUNK": "Trunk bearbeiten",
     "ACTIVE": "Aktiv",
-    "CLEAR": "klar",
+    "CLEAR": "Leeren",
     "CALLS": "Anrufe",
-    "STARTEDAT": "Fing an bei",
-    "ENDEDAT": "Beendet bei",
-    "TAG": "Etikett",
-    "DETAILS": "Einzelheiten",
+    "STARTEDAT": "Startdatum",
+    "ENDEDAT": "Enddatum",
+    "TAG": "Tag",
+    "DETAILS": "Details",
     "BILLABLESECONDS": "Abrechenbare Sekunden",
-    "ANSWEREDAT": "Beantwortet bei",
-    "NOTE": "Hinweis",
+    "ANSWEREDAT": "Beantwortet am",
+    "NOTE": "Notiz",
     "CLOSE": "Schließen",
-    "SELECT_DATE": "Wählen Sie Startdatum",
-    "SELECT_TYPE": "Art auswählen",
-    "ABANDONEDCALLS": "Verlassene Warteschlangenanrufe",
+    "SELECT_DATE": "Startdatum auswählen",
+    "SELECT_TYPE": "Typ auswählen",
+    "ABANDONEDCALLS": "Abgebrochene Anrufe",
     "ADD_VOICEPREFIX": "Präfix hinzufügen",
-    "AGENTADD_VOICEPREFIX": "Fügen Sie Agent zu Präfix hinzu",
+    "AGENTADD_VOICEPREFIX": "Agentenpräfix hinzufügen",
     "DELETE_VOICEPREFIX": "Präfix löschen",
     "EDIT_VOICEPREFIX": "Präfix bearbeiten",
     "NEW_VOICEPREFIX": "Neues Präfix",
-    "VOICEPREFIXES": "Vorgegebene Präfixe",
+    "VOICEPREFIXES": "Präfixe für Sprachanrufe",
     "CALLERIDALL": "Anruferidentifikation",
     "OUTBOUNDROUTE": "Ausgehende Route",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "DIALER": "Dialer",
-    "INBOUND": "Eingehende",
+    "INBOUND": "Eingehend",
     "OUTBOUND": "Ausgehend",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Status der obligatorischen Dispositionspause",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Qualifikation erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "CANT_DOWNLOAD_THIS_FILE": "Diese Datei kann nicht heruntergeladen werden",
     "FILE_NOT_FOUND": "Datei nicht gefunden",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
-    "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",
+    "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",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Transkript herunterladen",
     "FAILUREREASON": "Fehlergrund",
-    "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",
+    "RUNSENTIMENT_VOICERECORDING": "Starten Sprachaufzeichnung inkl. Sentiment",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Transkription und Sentinemtaufzeichnung starten",
+    "RUNTRANSCRIBE_VOICERECORDING": "Transkription starten",
+    "SENTIMENT": "Sentiment",
+    "SENTIMENTANALYSIS": "Sentiment-Analyse",
     "SENTIMENT_MIXED": "Gemischt",
     "SENTIMENT_NEGATIVE": "Negativ",
     "SENTIMENT_NEUTRAL": "Neutral",
     "SENTIMENT_POSITIVE": "Positiv",
     "TEXT": "Text",
     "TRANSCRIBE": "Transkribieren",
-    "TRANSCRIBESTATUS_COMPLETED": "Abgeschlossen",
-    "TRANSCRIBESTATUS_FAILED": "Gescheitert",
+    "TRANSCRIBESTATUS_COMPLETED": "Transkription abgeschlossen",
+    "TRANSCRIBESTATUS_FAILED": "Transkription fehlgeschlagen",
     "TRANSCRIBESTATUS_IN_PROGRESS": "In Bearbeitung",
     "TRANSCRIBESTATUS_NEW": "Neu",
     "TRANSCRIPT": "Transkript",
     "TRANSCRIPTANALYSIS": "Transkript & Analyse",
     "SERVICELEVEL": "Service Level",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung 2. Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung 3. Ebene",
     "TEAMADD_VOICEPREFIX": "Team zum Präfix hinzufügen",
     "ALIAS": "Alias",
     "MAXCAPACITY": "Max. Kapazität erreicht",
index 9a6a538..971bf53 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": "Anuncio substituto",
+    "ANNOUNCE_OVERRIDES": "Anunciar 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": "Up",
+    "UP": "Cima",
     "INFO": "Informação",
-    "TRUNKS": "Troncos",
+    "TRUNKS": "Trunks",
     "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 sentimento",
+    "RUNSENTIMENT_VOICERECORDING": "Executar Sentiment",
     "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 978ed15..be4500b 100644 (file)
 {
   "WHATSAPP": {
     "ERRORS": {
-      "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",
+      "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",
       "BASEURL_REQUIRED": "Base_URL erforderlich"
     },
     "HELP": {
-      "LIST": "Kontaktmanagerliste zum Zuordnen von Kontakten",
-      "MANDATORYDISPOSITION": "Obligatorische Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+      "LIST": "Liste für die Zuordnung von Kontakten",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
       "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 bestimmte Zeichen (._) unterstützt",
+      "NAME": "Es werden nur Zahlen, Buchstaben und Sonderzeichen (._) 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": "Dies ist die erste Antwortnachricht, die an neue Interaktionen gesendet wird"
+      "WELCOMEMESSAGE": "Erste Nachricht bei eintreffen einer neuen Interaktion"
     },
-    "ACCESSKEYID": "Zugriffsschlüssel-ID",
-    "ACCOUNTSID": "Konto-SID",
-    "ACTIONS": "Aktionen",
+    "ACCESSKEYID": "Access-Key ID",
+    "ACCOUNTSID": "Konto-ID",
+    "ACTIONS": "Routing",
     "ADD_NOTE": "Notiz hinzufügen",
-    "ADD_WHATSAPPACCOUNT": "Hinzufügen",
-    "ADD_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "ADD_WHATSAPPDISPOSITION": "WhatsApp Disposition hinzufügen",
+    "ADD_WHATSAPPACCOUNT": "WhatsApp-Konto hinzufügen",
+    "ADD_WHATSAPPCANNEDANSWER": "WhatsApp Textvorlage hinzufügen",
+    "ADD_WHATSAPPDISPOSITION": "WhatsApp Qualifizierung hinzufügen",
     "ADD_WHATSAPPQUEUE": "WhatsApp-Warteschlange hinzufügen",
-    "ADVANCED": "Fortgeschrittene",
+    "ADVANCED": "Erweitert",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
-    "AGENTADD_WHATSAPPACCOUNT": "Agent zum WhatsApp-Konto hinzufügen",
-    "AGENTADD_WHATSAPPQUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTADD_WHATSAPPACCOUNT": "Agenten zum WhatsApp-Konto hinzufügen",
+    "AGENTADD_WHATSAPPQUEUE": "Agenten zur Warteschlange hinzufügen",
     "AGENTS": "Agenten",
-    "AGENTSADD_QUEUE": "Hinzufügen von Agenten zur WhatsApp-Warteschlange",
-    "AGENTTRANSFER": "Agententransfer",
-    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung bei der Agentenübertragung",
-    "AGENT_TIMEOUT": "Agent Timeout",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTTRANSFER": "Transfer an Agenten erlauben",
+    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung Agententransfer",
+    "AGENT_TIMEOUT": "Zeitüberschreitung Agent",
     "ALL": "Alles",
     "ALL_AGENTS": "Alle Agenten",
     "ALL_TEAMS": "Alle Teams",
     "AMAZONLEX": "AmazonLex",
-    "AUTHTOKEN": "Auth Token",
+    "AUTHTOKEN": "Authentifizierungs-Token",
     "AUTOREPLY": "Automatische Antwort",
     "BACK": "Zurück",
-    "BOTNAME": "Bot Name",
+    "BOTNAME": "BOT-Name",
     "BUSY": "Beschäftigt",
-    "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",
+    "CANNEDANSWERS": "Textvorlagen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
     "CAPACITY": "Kapazität",
     "CLOSE": "Schließen",
     "CLOSED": "Geschlossen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "CONDITION": "Bedingung",
     "CONTACT": "Kontakt",
-    "CREATED_AT": "Hergestellt in",
-    "DEFAULT_PAUSE": "STANDARD PAUSE",
+    "CREATED_AT": "Erstellt am",
+    "DEFAULT_PAUSE": "Standardpause",
     "DELETE": "Löschen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "DELETE_SELECTED": "Ausgewählte löschen",
     "DELETE_WHATSAPPACCOUNT": "WhatsApp-Konto löschen",
-    "DELETE_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort löschen",
-    "DELETE_WHATSAPPDISPOSITION": "WhatsApp-Disposition löschen",
+    "DELETE_WHATSAPPCANNEDANSWER": "Textvorlage löschen",
+    "DELETE_WHATSAPPDISPOSITION": "Qualifizierung löschen",
     "DELETE_WHATSAPPQUEUE": "WhatsApp-Warteschlange löschen",
     "DESCRIPTION": "Beschreibung",
-    "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",
+    "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",
     "EDIT_AUTOREPLY": "Automatische Antwort 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_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_QUEUE": "Warteschlange bearbeiten",
     "EDIT_SYSTEM": "System bearbeiten",
     "EDIT_TAG": "Tag bearbeiten",
     "EDIT_WHATSAPPACCOUNT": "WhatsApp-Konto bearbeiten",
-    "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",
+    "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",
     "IDLE": "Leerlauf",
     "INSERT_MESSAGE_HERE": "Nachricht hier einfügen",
     "INTERACTIONS": "Interaktionen",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Gehen Sie zu Interaktionen",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Zu den Interaktionen gehen",
     "KEY": "Schlüssel",
     "LANGUAGE": "Sprache",
     "LASTMESSAGE": "Letzte Nachricht",
-    "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",
+    "LEXREGION": "LexRegion",
+    "LIST": "Liste",
+    "LOGGED_IN": "Angemeldet",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "LOGOUT": "Abgemeldet",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID während Qualifizierung",
     "MORE": "Mehr",
-    "MOTIONPROXY": "Proxy- oder Bewegungsdomäne",
+    "MOTIONPROXY": "Proxy",
     "MULTI_SELECT_TOGGLE": "Mehrfachauswahl umschalten",
     "NAME": "Name",
     "NEW_WHATSAPPACCOUNT": "Neues WhatsApp-Konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Neue vordefinierte WhatsApp-Antwort",
-    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Disposition",
+    "NEW_WHATSAPPCANNEDANSWER": "Neue WhatsApp-Textvorlage",
+    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Qualifizierung",
     "NEW_WHATSAPPQUEUE": "Neue WhatsApp-Warteschlange",
-    "NOOP": "Noop",
-    "NOTE": "Hinweis",
+    "NOOP": "Log erstellen (NoOp)",
+    "NOTE": "Anmerkung",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klang",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Sound abspielen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "NO_AGENT_ONLINE": "Kein Agent online",
-    "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_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_WHATSAPP_ACCOUNTS_AVAILABLE": "Keine WhatsApp-Konten verfügbar",
     "OF": "von",
     "OPENED": "Geöffnet",
     "PAGE": "Seite",
     "PARTIALPAUSE": "Teilpause",
     "PAUSE": "Pause",
-    "PAUSED": "Pause",
-    "PAUSE_TIME": "Pausenzeit",
+    "PAUSED": "in Pause",
+    "PAUSE_TIME": "Zeit in Pause",
     "PHONE": "Telefon",
     "PRIORITY": "Priorität",
     "PROXY": "Proxy",
     "QUEUE": "Warteschlange",
     "QUEUES": "Warteschlangen",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
+    "QUEUETRANSFER": "Transfer an Warteschlange erlauben",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
     "READY": "Bereit",
     "REALTIME": "Echtzeit",
-    "RECEIVEURL": "URL erhalten",
+    "RECEIVEURL": "URL für Erhalt",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "REMOTE": "Fernbedienung",
+    "REMOTE": "Remote",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "SAVE": "sparen",
-    "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
+    "SAVE": "Speichern",
+    "SCREENRECORDING": "Bildschirmaufzeichnung",
     "SEARCH_FOR_ANYONE": "Suche",
-    "SECRETACCESSKEY": "Zugriffsschlüsselgeheimnis",
+    "SECRETACCESSKEY": "Geheimer Schlüssel",
     "SELECTED": "Ausgewählt",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "SELECTED_TEAMS": "Ausgewählte Teams",
-    "SELECT_ALL": "Wählen Sie Alle",
-    "SELECT_NONE": "Nichts ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "SEND": "Senden",
-    "SETTINGS": "die Einstellungen",
-    "SPYINTERACTION": "Spionage-Interaktion",
-    "STARTEDAT": "Fing an bei",
-    "START_SCREENRECORDING": "Bildschirmaufnahme starten",
+    "SETTINGS": "Einstellungen",
+    "SPYINTERACTION": "Anzeigen",
+    "STARTEDAT": "Startdatum",
+    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
     "STATUS": "Status",
     "STOP_SCREENRECORDING": "Bildschirmaufzeichnung stoppen",
-    "STRATEGY": "Strategie",
+    "STRATEGY": "Verteilungsstrategie",
     "SYSTEM": "System",
-    "TAG": "Etikett",
-    "TAGS": "Stichworte",
+    "TAG": "Tag",
+    "TAGS": "Tags",
     "TEAMADD_WHATSAPPQUEUE": "Team zur WhatsApp-Warteschlange hinzufügen",
-    "TEAMS_ASSOCIATION": "Mannschaftsverband",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "TEXT": "Text",
-    "TIMEOUT": "Auszeit",
+    "TIMEOUT": "Zeitüberschreitung",
     "TIMER": "Timer",
-    "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",
+    "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",
     "VALUE": "Wert",
-    "VARIABLE": "Variable",
-    "WAITFORTHEASSIGNEDAGENT": "Warten Sie auf den zugewiesenen Agenten",
+    "VARIABLE": "Variabel",
+    "WAITFORTHEASSIGNEDAGENT": "Auf zugewiesenen Agenten warten",
     "WAITING": "Warten",
     "WELCOMEMESSAGE": "Willkommensnachricht",
     "WHATSAPP": "WhatsApp Connector",
     "WHATSAPPACCOUNTS": "WhatsApp-Konten",
-    "WHATSAPPCANNEDANSWERS": "WhatsApp vordefinierte Antworten",
-    "WHATSAPPDISPOSITIONS": "WhatsApp Dispositionen",
+    "WHATSAPPCANNEDANSWERS": "WhatsApp-Textvorlagen",
+    "WHATSAPPDISPOSITIONS": "WhatsApp-Qualifizierungen",
     "WHATSAPPQUEUES": "WhatsApp-Warteschlangen",
-    "CLIENTEMAIL": "Kunden-E-Mail",
+    "CLIENTEMAIL": "Kunden E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Schlüssel",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
     "BASEURL": "Base_URL",
     "DELIVERYREPORTURL": "URL für Erhalt"
index 8d833e7..97549f4 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 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",
+      "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",
       "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 Gestão de Contatos usada para associar contatos",
+      "LIST": "Lista do gerenciador 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 pré-definidas",
-    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta pré-definidas foi encontrada",
-    "CANNED_ANSWER_SEARCH": "Insira um texto para pesquisar uma resposta pré-definidas",
+    "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",
     "CAPACITY": "Capacidade",
     "CLOSE": "Perto",
     "CLOSED": "Fechadas",
     "CLOSEMETHOD": "Método Fechar",
     "CLOSEURL": "Fechar URL",
     "COMMAND": "Comando",
-    "CONDITION": "Condição",
+    "CONDITION": "Doença",
     "CONTACT": "Contato",
     "CREATED_AT": "Criado em",
-    "DEFAULT_PAUSE": "Pausa pafrão",
+    "DEFAULT_PAUSE": "PAUSA PADRÃO",
     "DELETE": "Excluir",
     "DELETE_INTERACTION": "Excluir interação",
     "DELETE_SELECTED": "Excluir selecionado",
     "DIALOGFLOW": "DialogFlow",
     "DISPOSITION": "Disposição",
     "DISPOSITIONS": "Disposições",
-    "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",
+    "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",
     "EDIT_AUTOREPLY": "Editar resposta automática",
-    "EDIT_CLOSE": "Editar encerramento",
+    "EDIT_CLOSE": "Editar Fechar",
     "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 TAG",
+    "EDIT_SYSTEM": "Editar Sistema",
+    "EDIT_TAG": "Editar etiqueta",
     "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": "Id",
-    "IDLE": "Disponível",
+    "ID": "Eu iria",
+    "IDLE": "Ocioso",
     "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": "Motion Proxy",
+    "MOTIONPROXY": "Domínio de proxy ou movimento",
     "MULTI_SELECT_TOGGLE": "Alternância de seleção múltipla",
     "NAME": "Nome",
     "NEW_WHATSAPPACCOUNT": "Nova conta WhatsApp",
-    "NEW_WHATSAPPCANNEDANSWER": "Nova resposta pré-definidas do WhatsApp",
+    "NEW_WHATSAPPCANNEDANSWER": "Nova resposta predeterminada 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": "Equipes selecionados",
+    "SELECTED_AGENTS": "Agentes Selecionados",
+    "SELECTED_TEAMS": "Times Selecionados",
     "SELECT_ALL": "Selecionar tudo",
     "SELECT_NONE": "Selecione nenhum",
     "SEND": "Enviar",
     "SETTINGS": "Configurações",
-    "SPYINTERACTION": "Espionar interação",
+    "SPYINTERACTION": "Interação de espiã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 pré-definidas do WhatsApp",
-    "WHATSAPPDISPOSITIONS": "Disposições do WhatsApp",
-    "WHATSAPPQUEUES": "WhatsApp Filas",
+    "WHATSAPPCANNEDANSWERS": "Respostas predeterminadas do WhatsApp",
+    "WHATSAPPDISPOSITIONS": "Dispositivos do WhatsApp",
+    "WHATSAPPQUEUES": "WhatsApp Queues",
     "CLIENTEMAIL": "Email do cliente",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Editar Dialogflow V2",
index c7b067f..477aad5 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 c07a784..6af6092 100644 (file)
     "NUM_NOTIFICATIONS": "إشعارات",
     "OPENCHANNEL": "اتمنا من كل زوجه قناة فتح",
     "SMS": "رسالة قصيرة",
-    "WHATSAPP": "ال WhatsApp",
-    "NO_AUTOANSWER_CONFIGURED": "لم يتم تكوين الرد التلقائي للقنوات"
+    "WHATSAPP": "ال WhatsApp"
   }
 }
index 62d6c2e..eac0bd8 100644 (file)
     "NUM_NOTIFICATIONS": "Oznámení",
     "OPENCHANNEL": "Otevřený kanál",
     "SMS": "SMS",
-    "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Pro kanály není nakonfigurována žádná automatická odpověď"
+    "WHATSAPP": "Whatsapp"
   }
 }
index 0d38f05..ffbb285 100644 (file)
     "NUM_NOTIFICATIONS": "Meddelelser",
     "OPENCHANNEL": "Åben kanal",
     "SMS": "SMS",
-    "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Intet autosvar konfigureret for kanaler"
+    "WHATSAPP": "Whatsapp"
   }
 }
index 1e32641..0adf4ba 100644 (file)
     "NUM_NOTIFICATIONS": "Benachrichtigungen",
     "OPENCHANNEL": "Offener Kanal",
     "SMS": "SMS",
-    "WHATSAPP": "WhatsApp",
-    "NO_AUTOANSWER_CONFIGURED": "Keine automatische Antwort für Kanäle konfiguriert"
+    "WHATSAPP": "WhatsApp"
   }
 }
index 6099ef3..f484e01 100644 (file)
@@ -40,7 +40,7 @@
     "CANCEL": "Cancel",
     "FILENAME": "File name",
     "STATUS": "Status",
-    "NO_AUTOANSWER_CONFIGURED": "No autoanswer configured for channels",
+    "NO_AUTOANSWER_CONFIGURED":"No autoanswer configured for channels",
     "ACTIONS": "Actions",
     "SPEAKER": "Speaker",
     "RINGING": "Ringing tone",
index a04a322..1d7cc9a 100644 (file)
     "NUM_NOTIFICATIONS": "Notificaciones",
     "OPENCHANNEL": "Canal abierto",
     "SMS": "SMS",
-    "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "No hay respuesta automática configurada para los canales"
+    "WHATSAPP": "Whatsapp"
   }
 }
index 1c71c2f..184add3 100644 (file)
     "NUM_NOTIFICATIONS": "Märguanded",
     "OPENCHANNEL": "Avatud kanal",
     "SMS": "SMS",
-    "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Kanalite jaoks pole automaatset vastust seadistatud"
+    "WHATSAPP": "Whatsapp"
   }
 }
index cc734a2..cfe1d34 100644 (file)
     "NUM_NOTIFICATIONS": "اطلاعیه",
     "OPENCHANNEL": "کانال باز",
     "SMS": "پیامک",
-    "WHATSAPP": "واتساپ",
-    "NO_AUTOANSWER_CONFIGURED": "هیچ پاسخ خودکار برای کانال ها پیکربندی نشده است"
+    "WHATSAPP": "واتساپ"
   }
 }
index e5e9d6c..3d92e58 100644 (file)
     "NUM_NOTIFICATIONS": "Ilmoitukset",
     "OPENCHANNEL": "Avoin kanava",
     "SMS": "tekstiviesti",
-    "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Kanaville ei ole määritetty automaattista vastausta"
+    "WHATSAPP": "Whatsapp"
   }
 }
index baa128c..9bbcaf5 100644 (file)
     "NUM_NOTIFICATIONS": "Avis",
     "OPENCHANNEL": "Canal ouvert",
     "SMS": "SMS",
-    "WHATSAPP": "WhatsApp",
-    "NO_AUTOANSWER_CONFIGURED": "Aucune réponse automatique configurée pour les canaux"
+    "WHATSAPP": "WhatsApp"
   }
 }
index d07d8c9..069ce4f 100644 (file)
     "NUM_NOTIFICATIONS": "התראות",
     "OPENCHANNEL": "ערוץ פתוח",
     "SMS": "סמס",
-    "WHATSAPP": "וואטסאפ",
-    "NO_AUTOANSWER_CONFIGURED": "לא הוגדר תשובה אוטומטית עבור ערוצים"
+    "WHATSAPP": "וואטסאפ"
   }
 }
index 253fd27..665a579 100644 (file)
     "NUM_NOTIFICATIONS": "सूचनाएं",
     "OPENCHANNEL": "ओपनचैनल",
     "SMS": "एसएमएस",
-    "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "चैनलों के लिए कोई स्वतः उत्तर कॉन्फ़िगर नहीं किया गया"
+    "WHATSAPP": "Whatsapp"
   }
 }
index d568d12..5305370 100644 (file)
     "OPENCHANNEL": "Nyílt csatorna",
     "SMS": "SMS",
     "WHATSAPP": "Whatsapp",
-    "PHONE2CALL": "Telefon a híváshoz",
-    "NO_AUTOANSWER_CONFIGURED": "Nincs automatikus válasz konfigurálva a csatornákhoz"
+    "PHONE2CALL": "Telefon a híváshoz"
   }
 }
index fdf5ce9..cdb770f 100644 (file)
     "NUM_NOTIFICATIONS": "Notifikasi",
     "OPENCHANNEL": "saluran terbuka",
     "SMS": "SMS",
-    "WHATSAPP": "ada apa",
-    "NO_AUTOANSWER_CONFIGURED": "Tidak ada jawaban otomatis yang dikonfigurasi untuk saluran"
+    "WHATSAPP": "ada apa"
   }
 }
index d0b30a9..6ae4616 100644 (file)
     "NUM_NOTIFICATIONS": "Notifiche",
     "OPENCHANNEL": "Canale aperto",
     "SMS": "sms",
-    "WHATSAPP": "WhatsApp",
-    "NO_AUTOANSWER_CONFIGURED": "Nessuna risposta automatica configurata per i canali"
+    "WHATSAPP": "WhatsApp"
   }
 }
index 28d1936..61673c4 100644 (file)
     "NUM_NOTIFICATIONS": "通知",
     "OPENCHANNEL": "オープンチャネル",
     "SMS": "SMS",
-    "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "チャネルに自動応答が設定されていません"
+    "WHATSAPP": "Whatsapp"
   }
 }
index e7bb9e6..6a67e36 100644 (file)
     "NUM_NOTIFICATIONS": "알림",
     "OPENCHANNEL": "오픈채널",
     "SMS": "SMS",
-    "WHATSAPP": "왓츠앱",
-    "NO_AUTOANSWER_CONFIGURED": "채널에 대해 구성된 자동 응답이 없습니다."
+    "WHATSAPP": "왓츠앱"
   }
 }
index 39081b5..0817df8 100644 (file)
     "NUM_NOTIFICATIONS": "Pranešimai",
     "OPENCHANNEL": "Atviras kanalas",
     "SMS": "trumpoji žinutė",
-    "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Automatinis atsakymas kanalams nesukonfigūruotas"
+    "WHATSAPP": "Whatsapp"
   }
 }
index 593e563..2074cd1 100644 (file)
     "NUM_NOTIFICATIONS": "Paziņojumi",
     "OPENCHANNEL": "Atvērts kanāls",
     "SMS": "īsziņa",
-    "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Kanāliem nav konfigurēta automātiskā atbilde"
+    "WHATSAPP": "Whatsapp"
   }
 }
index 6fd6f5b..7b95ad0 100644 (file)
     "NUM_NOTIFICATIONS": "Meldingen",
     "OPENCHANNEL": "Open kanaal",
     "SMS": "sms",
-    "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Geen automatisch antwoord geconfigureerd voor kanalen"
+    "WHATSAPP": "Whatsapp"
   }
 }
index 2de53b6..7fbfe21 100644 (file)
     "NUM_NOTIFICATIONS": "Varsler",
     "OPENCHANNEL": "Åpen kanal",
     "SMS": "tekstmelding",
-    "WHATSAPP": "Hva skjer",
-    "NO_AUTOANSWER_CONFIGURED": "Ingen autosvar konfigurert for kanaler"
+    "WHATSAPP": "Hva skjer"
   }
 }
index 09d65fc..97af4b4 100644 (file)
     "NUM_NOTIFICATIONS": "Powiadomienia",
     "OPENCHANNEL": "Otwarty kanał",
     "SMS": "SMS",
-    "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Brak automatycznej odpowiedzi skonfigurowanej dla kanałów"
+    "WHATSAPP": "Whatsapp"
   }
 }
index 5ce0d41..4f000e1 100644 (file)
@@ -2,9 +2,9 @@
   "TOOLBAR": {
     "PREFIXES": "Prefixos",
     "CALL": "Chamada",
-    "ARABIC": "Arabic",
+    "ARABIC": "Árabe",
     "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": "Áudio",
+    "AUDIO": "Audio",
     "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": "Swedish",
+    "SWEDISH": "Sueco",
     "RUSSIAN": "Russo",
     "GERMAN": "Alemão",
     "JAPANESE": "Japonês",
     "CHINESESIMPLIFIED": "Chinês simplificado",
     "CHINESETRADITIONAL": "Chinês tradicional",
-    "DUTCH": "Dutch",
+    "DUTCH": "Holandês",
     "FINNISH": "Finlandês",
-    "DANISH": "Danish",
-    "PORTUGUESE": "Português(PT)",
+    "DANISH": "Dinamarquês",
+    "PORTUGUESE": "Portugues",
     "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": "Português(BR)",
+    "BRAZILIAN": "Brasileiro",
     "CZECH": "Tcheco",
-    "ESTONIAN": "Estonian",
+    "ESTONIAN": "estoniano",
     "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",
-    "NO_AUTOANSWER_CONFIGURED": "Nenhuma resposta automática configurada para canais"
+    "WHATSAPP": "Whatsapp"
   }
 }
index 116f014..c4a4134 100644 (file)
     "NUM_NOTIFICATIONS": "Notificações",
     "OPENCHANNEL": "Canal aberto",
     "SMS": "SMS",
-    "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Nenhuma resposta automática configurada para canais"
+    "WHATSAPP": "Whatsapp"
   }
 }
index bdf5e94..c935b01 100644 (file)
     "NUM_NOTIFICATIONS": "Уведомления",
     "OPENCHANNEL": "Открытый канал",
     "SMS": "смс",
-    "WHATSAPP": "WhatsApp",
-    "NO_AUTOANSWER_CONFIGURED": "Для каналов не настроен автоответчик"
+    "WHATSAPP": "WhatsApp"
   }
 }
index 242cd09..0a7354c 100644 (file)
     "NUM_NOTIFICATIONS": "Aviseringar",
     "OPENCHANNEL": "Öppen kanal",
     "SMS": "SMS",
-    "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "Inget autosvar konfigurerat för kanaler"
+    "WHATSAPP": "Whatsapp"
   }
 }
index b820917..6bd9402 100644 (file)
     "NUM_NOTIFICATIONS": "Bildirimler",
     "OPENCHANNEL": "açık kanal",
     "SMS": "SMS",
-    "WHATSAPP": "Naber",
-    "NO_AUTOANSWER_CONFIGURED": "Kanallar için yapılandırılmamış otomatik yanıt yok"
+    "WHATSAPP": "Naber"
   }
 }
index 7c3c986..69d5010 100644 (file)
     "NUM_NOTIFICATIONS": "通知",
     "OPENCHANNEL": "开放渠道",
     "SMS": "短信",
-    "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "没有为频道配置自动应答"
+    "WHATSAPP": "Whatsapp"
   }
 }
index d0b7953..5da9717 100644 (file)
     "NUM_NOTIFICATIONS": "通知",
     "OPENCHANNEL": "開放渠道",
     "SMS": "短信",
-    "WHATSAPP": "Whatsapp",
-    "NO_AUTOANSWER_CONFIGURED": "沒有為頻道配置自動應答"
+    "WHATSAPP": "Whatsapp"
   }
 }
index 85f6fcf..62fd820 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.4132798e.js"></script>
+  <script src="scripts/app.3d038dbc.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 57%
rename from public/scripts/app.4132798e.js
rename to public/scripts/app.3d038dbc.js
index f243986..b1a816a 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:"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
+!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.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,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 976a746..3c4e5a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd90=['Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]','urlForward[body]','sequelize','exports','VIRTUAL','getDataValue','STRING','integration','motionbar','urlForward','browser','bot'];(function(_0x3f2855,_0x220576){var _0x20c16f=function(_0x38da20){while(--_0x38da20){_0x3f2855['push'](_0x3f2855['shift']());}};_0x20c16f(++_0x220576);}(_0xcd90,0x8c));var _0x0cd9=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xcd90[_0x3054be];return _0x3df150;};'use strict';var Sequelize=require(_0x0cd9('0x0'));module[_0x0cd9('0x1')]={'name':{'type':Sequelize[_0x0cd9('0x2')],'get':function(_0x5f26c3){return this[_0x0cd9('0x3')]('action');}},'action':{'type':Sequelize[_0x0cd9('0x4')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0x0cd9('0x5'),_0x0cd9('0x6'),'jscripty',_0x0cd9('0x7'),_0x0cd9('0x8'),_0x0cd9('0x9'),'script']],'msg':_0x0cd9('0xa')}},'comment':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'},'data1':{'type':Sequelize['STRING'](0x1000),'comment':'jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]'},'data2':{'type':Sequelize['STRING'](0x1000),'comment':'contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]'},'data3':{'type':Sequelize[_0x0cd9('0x4')](0x1000),'comment':_0x0cd9('0xb')},'data4':{'type':Sequelize[_0x0cd9('0x4')](0x1000),'comments':'browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]'},'data5':{'type':Sequelize[_0x0cd9('0x4')](0x1000),'comments':_0x0cd9('0xc')},'data6':{'type':Sequelize['STRING'],'comments':_0x0cd9('0xd')},'data7':{'type':Sequelize['TEXT'],'comments':_0x0cd9('0xe')}};
\ No newline at end of file
+var _0x60d4=['exports','VIRTUAL','getDataValue','STRING','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)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','TEXT','sequelize'];(function(_0x1fc122,_0x5e2c17){var _0xa2cb13=function(_0x263b13){while(--_0x263b13){_0x1fc122['push'](_0x1fc122['shift']());}};_0xa2cb13(++_0x5e2c17);}(_0x60d4,0x1ed));var _0x460d=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x60d4[_0x4b369d];return _0x571a98;};'use strict';var Sequelize=require(_0x460d('0x0'));module[_0x460d('0x1')]={'name':{'type':Sequelize[_0x460d('0x2')],'get':function(_0x29711f){return this[_0x460d('0x3')]('action');}},'action':{'type':Sequelize[_0x460d('0x4')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0x460d('0x5'),_0x460d('0x6'),_0x460d('0x7'),_0x460d('0x8'),_0x460d('0x9'),_0x460d('0xa'),_0x460d('0xb')]],'msg':_0x460d('0xc')}},'comment':_0x460d('0xc')},'data1':{'type':Sequelize[_0x460d('0x4')](0x1000),'comment':_0x460d('0xd')},'data2':{'type':Sequelize[_0x460d('0x4')](0x1000),'comment':_0x460d('0xe')},'data3':{'type':Sequelize[_0x460d('0x4')](0x1000),'comment':_0x460d('0xf')},'data4':{'type':Sequelize[_0x460d('0x4')](0x1000),'comments':_0x460d('0x10')},'data5':{'type':Sequelize['STRING'](0x1000),'comments':_0x460d('0x11')},'data6':{'type':Sequelize[_0x460d('0x4')],'comments':'urlForward[headers],\x20browser[wsindowHeight]'},'data7':{'type':Sequelize[_0x460d('0x12')],'comments':'urlForward[body]'}};
\ No newline at end of file
index 5615e3e..686e2cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe625=['../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','then','destroy','error','name','body','Action','find','params','catch','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x4f386f,_0x127b74){var _0x35064f=function(_0x17ce9e){while(--_0x17ce9e){_0x4f386f['push'](_0x4f386f['shift']());}};_0x35064f(++_0x127b74);}(_0xe625,0x75));var _0x5e62=function(_0x100da4,_0x253849){_0x100da4=_0x100da4-0x0;var _0x25efb6=_0xe625[_0x100da4];return _0x25efb6;};'use strict';var emlformat=require(_0x5e62('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5e62('0x1'));var jsonpatch=require(_0x5e62('0x2'));var rp=require(_0x5e62('0x3'));var moment=require(_0x5e62('0x4'));var BPromise=require(_0x5e62('0x5'));var Mustache=require(_0x5e62('0x6'));var util=require(_0x5e62('0x7'));var path=require('path');var sox=require(_0x5e62('0x8'));var csv=require(_0x5e62('0x9'));var ejs=require(_0x5e62('0xa'));var fs=require('fs');var fs_extra=require(_0x5e62('0xb'));var _=require(_0x5e62('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x5e62('0xd'));var deskjs=require(_0x5e62('0xe'));var toCsv=require(_0x5e62('0x9'));var querystring=require(_0x5e62('0xf'));var Papa=require(_0x5e62('0x10'));var Redis=require('ioredis');var authService=require(_0x5e62('0x11'));var qs=require(_0x5e62('0x12'));var as=require(_0x5e62('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5e62('0x14'));var utils=require(_0x5e62('0x15'));var config=require(_0x5e62('0x16'));var licenseUtil=require(_0x5e62('0x17'));var db=require(_0x5e62('0x18'))['db'];function respondWithStatusCode(_0x472fac,_0x1539c6){_0x1539c6=_0x1539c6||0xcc;return function(_0x3c182d){if(_0x3c182d){return _0x472fac[_0x5e62('0x19')](_0x1539c6);}return _0x472fac[_0x5e62('0x1a')](_0x1539c6)[_0x5e62('0x1b')]();};}function respondWithResult(_0x35c9e6,_0x2cc674){_0x2cc674=_0x2cc674||0xc8;return function(_0x5b95de){if(_0x5b95de){return _0x35c9e6[_0x5e62('0x1a')](_0x2cc674)[_0x5e62('0x1c')](_0x5b95de);}};}function respondWithFilteredResult(_0x20bf25,_0x105a7e){return function(_0x298bc0){if(_0x298bc0){var _0x365a06=typeof _0x105a7e['offset']===_0x5e62('0x1d')&&typeof _0x105a7e['limit']===_0x5e62('0x1d');var _0x29502a=_0x298bc0[_0x5e62('0x1e')];var _0x20d1d6=_0x365a06?0x0:_0x105a7e[_0x5e62('0x1f')];var _0x559613=_0x365a06?_0x298bc0[_0x5e62('0x1e')]:_0x105a7e[_0x5e62('0x1f')]+_0x105a7e[_0x5e62('0x20')];var _0x56f42f;if(_0x559613>=_0x29502a){_0x559613=_0x29502a;_0x56f42f=0xc8;}else{_0x56f42f=0xce;}_0x20bf25[_0x5e62('0x1a')](_0x56f42f);return _0x20bf25[_0x5e62('0x21')](_0x5e62('0x22'),_0x20d1d6+'-'+_0x559613+'/'+_0x29502a)[_0x5e62('0x1c')](_0x298bc0);}return null;};}function patchUpdates(_0x563f74){return function(_0x1a9802){try{jsonpatch[_0x5e62('0x23')](_0x1a9802,_0x563f74,!![]);}catch(_0x206dc6){return BPromise['reject'](_0x206dc6);}return _0x1a9802[_0x5e62('0x24')]();};}function saveUpdates(_0x3fdd8a,_0x389107){return function(_0x335051){if(_0x335051){return _0x335051[_0x5e62('0x25')](_0x3fdd8a)[_0x5e62('0x26')](function(_0x139fe1){return _0x139fe1;});}return null;};}function removeEntity(_0x14daf8,_0x4892a7){return function(_0x2edd60){if(_0x2edd60){return _0x2edd60[_0x5e62('0x27')]()[_0x5e62('0x26')](function(){_0x14daf8[_0x5e62('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x52cdec,_0x12b960){return function(_0x3b0d09){if(!_0x3b0d09){_0x52cdec['sendStatus'](0x194);}return _0x3b0d09;};}function handleError(_0x1cae3d,_0xf27aca){_0xf27aca=_0xf27aca||0x1f4;return function(_0x1f99bc){logger[_0x5e62('0x28')](_0x1f99bc['stack']);if(_0x1f99bc[_0x5e62('0x29')]){delete _0x1f99bc[_0x5e62('0x29')];}_0x1cae3d[_0x5e62('0x1a')](_0xf27aca)['send'](_0x1f99bc);};}exports[_0x5e62('0x25')]=function(_0x2870b4,_0x6f0ae4){if(_0x2870b4[_0x5e62('0x2a')]['id']){delete _0x2870b4[_0x5e62('0x2a')]['id'];}return db[_0x5e62('0x2b')][_0x5e62('0x2c')]({'where':{'id':_0x2870b4['params']['id']}})[_0x5e62('0x26')](handleEntityNotFound(_0x6f0ae4,null))[_0x5e62('0x26')](saveUpdates(_0x2870b4[_0x5e62('0x2a')],null))[_0x5e62('0x26')](respondWithResult(_0x6f0ae4,null))['catch'](handleError(_0x6f0ae4,null));};exports[_0x5e62('0x27')]=function(_0x3a6823,_0x597580){return db[_0x5e62('0x2b')]['find']({'where':{'id':_0x3a6823[_0x5e62('0x2d')]['id']}})[_0x5e62('0x26')](handleEntityNotFound(_0x597580,null))[_0x5e62('0x26')](removeEntity(_0x597580,null))[_0x5e62('0x2e')](handleError(_0x597580,null));};
\ No newline at end of file
+var _0xf52b=['rimraf','request-promise','moment','bluebird','mustache','util','sox','ejs','lodash','squel','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','destroy','then','error','stack','name','send','update','body','find','catch','Action','params','eml-format'];(function(_0xd4a02b,_0x48aadb){var _0x2ed8b8=function(_0x2c2d7c){while(--_0x2c2d7c){_0xd4a02b['push'](_0xd4a02b['shift']());}};_0x2ed8b8(++_0x48aadb);}(_0xf52b,0x119));var _0xbf52=function(_0x1e2321,_0x3ae1c5){_0x1e2321=_0x1e2321-0x0;var _0x1d346d=_0xf52b[_0x1e2321];return _0x1d346d;};'use strict';var emlformat=require(_0xbf52('0x0'));var rimraf=require(_0xbf52('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xbf52('0x2'));var moment=require(_0xbf52('0x3'));var BPromise=require(_0xbf52('0x4'));var Mustache=require(_0xbf52('0x5'));var util=require(_0xbf52('0x6'));var path=require('path');var sox=require(_0xbf52('0x7'));var csv=require('to-csv');var ejs=require(_0xbf52('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbf52('0x9'));var squel=require(_0xbf52('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xbf52('0xb'));var querystring=require(_0xbf52('0xc'));var Papa=require(_0xbf52('0xd'));var Redis=require(_0xbf52('0xe'));var authService=require(_0xbf52('0xf'));var qs=require(_0xbf52('0x10'));var as=require(_0xbf52('0x11'));var hardwareService=require(_0xbf52('0x12'));var logger=require(_0xbf52('0x13'))(_0xbf52('0x14'));var utils=require('../../config/utils');var config=require(_0xbf52('0x15'));var licenseUtil=require(_0xbf52('0x16'));var db=require(_0xbf52('0x17'))['db'];function respondWithStatusCode(_0x43746a,_0x573f6e){_0x573f6e=_0x573f6e||0xcc;return function(_0x4ed37d){if(_0x4ed37d){return _0x43746a[_0xbf52('0x18')](_0x573f6e);}return _0x43746a[_0xbf52('0x19')](_0x573f6e)[_0xbf52('0x1a')]();};}function respondWithResult(_0x88ef77,_0x4e598d){_0x4e598d=_0x4e598d||0xc8;return function(_0x31ebdc){if(_0x31ebdc){return _0x88ef77[_0xbf52('0x19')](_0x4e598d)[_0xbf52('0x1b')](_0x31ebdc);}};}function respondWithFilteredResult(_0x19716a,_0x3ddbe1){return function(_0x5d7101){if(_0x5d7101){var _0x39fe7b=typeof _0x3ddbe1[_0xbf52('0x1c')]===_0xbf52('0x1d')&&typeof _0x3ddbe1[_0xbf52('0x1e')]===_0xbf52('0x1d');var _0x205032=_0x5d7101[_0xbf52('0x1f')];var _0x280ca8=_0x39fe7b?0x0:_0x3ddbe1[_0xbf52('0x1c')];var _0x49458b=_0x39fe7b?_0x5d7101[_0xbf52('0x1f')]:_0x3ddbe1['offset']+_0x3ddbe1[_0xbf52('0x1e')];var _0x1e6c5e;if(_0x49458b>=_0x205032){_0x49458b=_0x205032;_0x1e6c5e=0xc8;}else{_0x1e6c5e=0xce;}_0x19716a[_0xbf52('0x19')](_0x1e6c5e);return _0x19716a['set'](_0xbf52('0x20'),_0x280ca8+'-'+_0x49458b+'/'+_0x205032)[_0xbf52('0x1b')](_0x5d7101);}return null;};}function patchUpdates(_0x5e8622){return function(_0x584ad8){try{jsonpatch[_0xbf52('0x21')](_0x584ad8,_0x5e8622,!![]);}catch(_0x33a294){return BPromise['reject'](_0x33a294);}return _0x584ad8[_0xbf52('0x22')]();};}function saveUpdates(_0x4d1277,_0x338746){return function(_0x3f58cb){if(_0x3f58cb){return _0x3f58cb['update'](_0x4d1277)['then'](function(_0x5577ba){return _0x5577ba;});}return null;};}function removeEntity(_0x4ec5f5,_0x2e83e1){return function(_0x3e0bee){if(_0x3e0bee){return _0x3e0bee[_0xbf52('0x23')]()[_0xbf52('0x24')](function(){_0x4ec5f5[_0xbf52('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x409ba6,_0x3013ec){return function(_0x54b07a){if(!_0x54b07a){_0x409ba6['sendStatus'](0x194);}return _0x54b07a;};}function handleError(_0x1317fa,_0x38e2c5){_0x38e2c5=_0x38e2c5||0x1f4;return function(_0x5531b3){logger[_0xbf52('0x25')](_0x5531b3[_0xbf52('0x26')]);if(_0x5531b3['name']){delete _0x5531b3[_0xbf52('0x27')];}_0x1317fa[_0xbf52('0x19')](_0x38e2c5)[_0xbf52('0x28')](_0x5531b3);};}exports[_0xbf52('0x29')]=function(_0xa07175,_0x57fc1f){if(_0xa07175[_0xbf52('0x2a')]['id']){delete _0xa07175['body']['id'];}return db['Action'][_0xbf52('0x2b')]({'where':{'id':_0xa07175['params']['id']}})[_0xbf52('0x24')](handleEntityNotFound(_0x57fc1f,null))['then'](saveUpdates(_0xa07175[_0xbf52('0x2a')],null))['then'](respondWithResult(_0x57fc1f,null))[_0xbf52('0x2c')](handleError(_0x57fc1f,null));};exports['destroy']=function(_0x38970e,_0x5b3edc){return db[_0xbf52('0x2d')]['find']({'where':{'id':_0x38970e[_0xbf52('0x2e')]['id']}})[_0xbf52('0x24')](handleEntityNotFound(_0x5b3edc,null))[_0xbf52('0x24')](removeEntity(_0x5b3edc,null))['catch'](handleError(_0x5b3edc,null));};
\ No newline at end of file
index 540b1b7..d706ee7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfde3=['bluebird','request-promise','path','../../config/environment','exports','define','tools_actions','lodash','moment'];(function(_0x120f00,_0x3e9268){var _0x5c3ce3=function(_0x4d0cc1){while(--_0x4d0cc1){_0x120f00['push'](_0x120f00['shift']());}};_0x5c3ce3(++_0x3e9268);}(_0xfde3,0xe8));var _0x3fde=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xfde3[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0x3fde('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x3fde('0x1'));var BPromise=require(_0x3fde('0x2'));var rp=require(_0x3fde('0x3'));var fs=require('fs');var path=require(_0x3fde('0x4'));var rimraf=require('rimraf');var config=require(_0x3fde('0x5'));var attributes=require('./action.attributes');module[_0x3fde('0x6')]=function(_0xb76889,_0x49ea96){return _0xb76889[_0x3fde('0x7')]('Action',attributes,{'tableName':_0x3fde('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xea12=['api','bluebird','request-promise','rimraf','../../config/environment','./action.attributes','exports','define','tools_actions','lodash','util','../../config/logger'];(function(_0x18f2de,_0x53f974){var _0xf88f41=function(_0x1c1119){while(--_0x1c1119){_0x18f2de['push'](_0x18f2de['shift']());}};_0xf88f41(++_0x53f974);}(_0xea12,0x1c5));var _0x2ea1=function(_0x20a505,_0x2ac609){_0x20a505=_0x20a505-0x0;var _0x4583ae=_0xea12[_0x20a505];return _0x4583ae;};'use strict';var _=require(_0x2ea1('0x0'));var util=require(_0x2ea1('0x1'));var logger=require(_0x2ea1('0x2'))(_0x2ea1('0x3'));var moment=require('moment');var BPromise=require(_0x2ea1('0x4'));var rp=require(_0x2ea1('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2ea1('0x6'));var config=require(_0x2ea1('0x7'));var attributes=require(_0x2ea1('0x8'));module[_0x2ea1('0x9')]=function(_0x5ddb58,_0x32e4f4){return _0x5ddb58[_0x2ea1('0xa')]('Action',attributes,{'tableName':_0x2ea1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1073e08..d685af4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x376b45,_0x5964fb){var _0x2341b3=function(_0x5a7f01){while(--_0x5a7f01){_0x376b45['push'](_0x376b45['shift']());}};_0x2341b3(++_0x5964fb);}(_0x1cb9,0x14e));var _0x91cb=function(_0x11f37b,_0x2dcf5e){_0x11f37b=_0x11f37b-0x0;var _0x232b1b=_0x1cb9[_0x11f37b];return _0x232b1b;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var moment=require(_0x91cb('0x1'));var BPromise=require(_0x91cb('0x2'));var rs=require(_0x91cb('0x3'));var fs=require('fs');var Redis=require(_0x91cb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x91cb('0x5'));var logger=require(_0x91cb('0x6'))('rpc');var config=require(_0x91cb('0x7'));var jayson=require(_0x91cb('0x8'));var client=jayson[_0x91cb('0x9')][_0x91cb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3b9d98,_0x8f8a3b,_0x4c1f56){return new BPromise(function(_0x15c517,_0x5bda2f){return client[_0x91cb('0xb')](_0x3b9d98,_0x4c1f56)['then'](function(_0xa43e7a){logger[_0x91cb('0xc')](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));logger[_0x91cb('0xf')](_0x91cb('0x10'),_0x8f8a3b,_0x91cb('0xe'),JSON[_0x91cb('0x11')](_0xa43e7a));if(_0xa43e7a[_0x91cb('0x12')]){if(_0xa43e7a[_0x91cb('0x12')]['code']===0x1f4){logger[_0x91cb('0x12')](_0x91cb('0xd'),_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x5bda2f(_0xa43e7a[_0x91cb('0x12')][_0x91cb('0x13')]);}logger[_0x91cb('0x12')]('Action,\x20%s,\x20%s',_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x15c517(_0xa43e7a[_0x91cb('0x12')]['message']);}else{logger['info'](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));_0x15c517(_0xa43e7a[_0x91cb('0x14')]['message']);}})[_0x91cb('0x15')](function(_0x135890){logger['error'](_0x91cb('0xd'),_0x8f8a3b,_0x135890);_0x5bda2f(_0x135890);});});}
\ No newline at end of file
+var _0xabce=['util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','then','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash'];(function(_0x4aeb6e,_0x3ded10){var _0x9bed66=function(_0x516068){while(--_0x516068){_0x4aeb6e['push'](_0x4aeb6e['shift']());}};_0x9bed66(++_0x3ded10);}(_0xabce,0x103));var _0xeabc=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xabce[_0x4e1d03];return _0x362d4b;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var moment=require(_0xeabc('0x2'));var BPromise=require(_0xeabc('0x3'));var rs=require(_0xeabc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeabc('0x5'));var logger=require(_0xeabc('0x6'))(_0xeabc('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xeabc('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x229ba4,_0x52ede8,_0x3bdc29){return new BPromise(function(_0x9417af,_0x8434c5){return client['request'](_0x229ba4,_0x3bdc29)[_0xeabc('0x9')](function(_0x341f16){logger[_0xeabc('0xa')](_0xeabc('0xb'),_0x52ede8,_0xeabc('0xc'));logger[_0xeabc('0xd')](_0xeabc('0xe'),_0x52ede8,_0xeabc('0xc'),JSON[_0xeabc('0xf')](_0x341f16));if(_0x341f16[_0xeabc('0x10')]){if(_0x341f16[_0xeabc('0x10')][_0xeabc('0x11')]===0x1f4){logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);return _0x8434c5(_0x341f16['error'][_0xeabc('0x12')]);}logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16['error']['message']);return _0x9417af(_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);}else{logger[_0xeabc('0xa')]('Action,\x20%s,\x20%s',_0x52ede8,_0xeabc('0xc'));_0x9417af(_0x341f16[_0xeabc('0x13')]['message']);}})['catch'](function(_0x10fa8e){logger['error'](_0xeabc('0xb'),_0x52ede8,_0x10fa8e);_0x8434c5(_0x10fa8e);});});}
\ No newline at end of file
index e2c834b..5b2a7df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0325=['path','express','Router','fs-extra','../../components/interaction/service','./action.controller','put','isAuthenticated','update','delete','destroy','exports','multer'];(function(_0x15df1e,_0x865adb){var _0x315e3e=function(_0x52c829){while(--_0x52c829){_0x15df1e['push'](_0x15df1e['shift']());}};_0x315e3e(++_0x865adb);}(_0x0325,0xc2));var _0x5032=function(_0x1da56a,_0x55f3e5){_0x1da56a=_0x1da56a-0x0;var _0x2be273=_0x0325[_0x1da56a];return _0x2be273;};'use strict';var multer=require(_0x5032('0x0'));var util=require('util');var path=require(_0x5032('0x1'));var timeout=require('connect-timeout');var express=require(_0x5032('0x2'));var router=express[_0x5032('0x3')]();var fs_extra=require(_0x5032('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5032('0x5'));var config=require('../../config/environment');var controller=require(_0x5032('0x6'));router[_0x5032('0x7')]('/:id',auth[_0x5032('0x8')](),controller[_0x5032('0x9')]);router[_0x5032('0xa')]('/:id',auth[_0x5032('0x8')](),controller[_0x5032('0xb')]);module[_0x5032('0xc')]=router;
\ No newline at end of file
+var _0x96c4=['../../components/interaction/service','../../config/environment','put','/:id','isAuthenticated','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra'];(function(_0xf44515,_0xdaca26){var _0x250e0b=function(_0x2a65db){while(--_0x2a65db){_0xf44515['push'](_0xf44515['shift']());}};_0x250e0b(++_0xdaca26);}(_0x96c4,0x13c));var _0x496c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x96c4[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x496c('0x0'));var path=require(_0x496c('0x1'));var timeout=require(_0x496c('0x2'));var express=require(_0x496c('0x3'));var router=express[_0x496c('0x4')]();var fs_extra=require(_0x496c('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x496c('0x6'));var config=require(_0x496c('0x7'));var controller=require('./action.controller');router[_0x496c('0x8')](_0x496c('0x9'),auth[_0x496c('0xa')](),controller[_0x496c('0xb')]);router[_0x496c('0xc')](_0x496c('0x9'),auth[_0x496c('0xa')](),controller['destroy']);module[_0x496c('0xd')]=router;
\ No newline at end of file
index 154a928..af4483e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8958=['TEXT','exports'];(function(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0x8958,0x93));var _0x8895=function(_0x1899a2,_0x58aabf){_0x1899a2=_0x1899a2-0x0;var _0x528f1f=_0x8958[_0x1899a2];return _0x528f1f;};'use strict';var Sequelize=require('sequelize');module[_0x8895('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize[_0x8895('0x1')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x7da7=['TEXT','sequelize','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7da7,0x10d));var _0x77da=function(_0x2d2e85,_0x22faa9){_0x2d2e85=_0x2d2e85-0x0;var _0x3e9f5e=_0x7da7[_0x2d2e85];return _0x3e9f5e;};'use strict';var Sequelize=require(_0x77da('0x0'));module[_0x77da('0x1')]={'name':{'type':Sequelize[_0x77da('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize[_0x77da('0x2')]},'conditions':{'type':Sequelize[_0x77da('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 29335a8..5ab30b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63db=['sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Reports','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','preview','right_join','cross_join','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','getFields','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','from','table','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','clone','debug','Limited\x20Query:','toString','QueryTypes','SELECT','join','left_join','COUNT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','value','Sequelize','ValidationErrorItem','keyBy','MetricId','order','includes','output','web','%s-%s.%s','generate','custom','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','info','Run\x20Query:','fork','../../components/export/','../../files/reports','savename','select','sequelize','run','runReport','SUM(%s)','HOUR(%s)','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','dbH','sendStatus','status','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','then','destroy','CustomReports','UserProfileResource','end','stack','name','send','map','AnalyticCustomReport','rawAttributes','fieldName','type','query','keys','intersection','model','fields','attributes','length','hasOwnProperty'];(function(_0x4baae2,_0x487ab6){var _0x1a2285=function(_0x1cea47){while(--_0x1cea47){_0x4baae2['push'](_0x4baae2['shift']());}};_0x1a2285(++_0x487ab6);}(_0x63db,0x117));var _0xb63d=function(_0x44f684,_0x2ec4d2){_0x44f684=_0x44f684-0x0;var _0xa227f9=_0x63db[_0x44f684];return _0xa227f9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb63d('0x0'));var zipdir=require(_0xb63d('0x1'));var jsonpatch=require(_0xb63d('0x2'));var rp=require(_0xb63d('0x3'));var moment=require(_0xb63d('0x4'));var BPromise=require(_0xb63d('0x5'));var Mustache=require(_0xb63d('0x6'));var util=require(_0xb63d('0x7'));var path=require(_0xb63d('0x8'));var sox=require(_0xb63d('0x9'));var csv=require(_0xb63d('0xa'));var ejs=require(_0xb63d('0xb'));var fs=require('fs');var fs_extra=require(_0xb63d('0xc'));var _=require(_0xb63d('0xd'));var squel=require(_0xb63d('0xe'));var crypto=require(_0xb63d('0xf'));var jsforce=require('jsforce');var deskjs=require(_0xb63d('0x10'));var toCsv=require(_0xb63d('0xa'));var querystring=require(_0xb63d('0x11'));var Papa=require(_0xb63d('0x12'));var Redis=require(_0xb63d('0x13'));var authService=require(_0xb63d('0x14'));var qs=require(_0xb63d('0x15'));var as=require(_0xb63d('0x16'));var hardwareService=require(_0xb63d('0x17'));var logger=require(_0xb63d('0x18'))(_0xb63d('0x19'));var utils=require(_0xb63d('0x1a'));var config=require(_0xb63d('0x1b'));var licenseUtil=require(_0xb63d('0x1c'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0xb63d('0x1d')];function respondWithStatusCode(_0x1f990e,_0x51e301){_0x51e301=_0x51e301||0xcc;return function(_0xd5081){if(_0xd5081){return _0x1f990e[_0xb63d('0x1e')](_0x51e301);}return _0x1f990e['status'](_0x51e301)['end']();};}function respondWithResult(_0x27d8df,_0x1b96fd){_0x1b96fd=_0x1b96fd||0xc8;return function(_0x26d8b4){if(_0x26d8b4){return _0x27d8df[_0xb63d('0x1f')](_0x1b96fd)[_0xb63d('0x20')](_0x26d8b4);}};}function respondWithFilteredResult(_0x4a7b32,_0x30bd42){return function(_0x317bd8){if(_0x317bd8){var _0x1c8da1=typeof _0x30bd42['offset']===_0xb63d('0x21')&&typeof _0x30bd42[_0xb63d('0x22')]===_0xb63d('0x21');var _0x5685f4=_0x317bd8['count'];var _0x22fdbf=_0x1c8da1?0x0:_0x30bd42[_0xb63d('0x23')];var _0x5ff55b=_0x1c8da1?_0x317bd8[_0xb63d('0x24')]:_0x30bd42[_0xb63d('0x23')]+_0x30bd42[_0xb63d('0x22')];var _0x1ea33b;if(_0x5ff55b>=_0x5685f4){_0x5ff55b=_0x5685f4;_0x1ea33b=0xc8;}else{_0x1ea33b=0xce;}_0x4a7b32[_0xb63d('0x1f')](_0x1ea33b);return _0x4a7b32[_0xb63d('0x25')](_0xb63d('0x26'),_0x22fdbf+'-'+_0x5ff55b+'/'+_0x5685f4)[_0xb63d('0x20')](_0x317bd8);}return null;};}function patchUpdates(_0x2fe2ca){return function(_0x2bd7be){try{jsonpatch[_0xb63d('0x27')](_0x2bd7be,_0x2fe2ca,!![]);}catch(_0x27bac8){return BPromise[_0xb63d('0x28')](_0x27bac8);}return _0x2bd7be[_0xb63d('0x29')]();};}function saveUpdates(_0x52eec3,_0x4cbe45){return function(_0x5d23f3){if(_0x5d23f3){return _0x5d23f3['update'](_0x52eec3)[_0xb63d('0x2a')](function(_0x29f7e8){return _0x29f7e8;});}return null;};}function removeEntity(_0x1a8d6e,_0x55ea5f){return function(_0x1a9183){if(_0x1a9183){return _0x1a9183[_0xb63d('0x2b')]()[_0xb63d('0x2a')](function(){var _0x2180de=_0x1a9183['get']({'plain':!![]});var _0x1783bd=_0xb63d('0x2c');return db[_0xb63d('0x2d')][_0xb63d('0x2b')]({'where':{'type':_0x1783bd,'resourceId':_0x2180de['id']}})[_0xb63d('0x2a')](function(){return _0x1a9183;});})['then'](function(){_0x1a8d6e[_0xb63d('0x1f')](0xcc)[_0xb63d('0x2e')]();});}};}function handleEntityNotFound(_0x1eb2d2,_0x31df7b){return function(_0x2b6db2){if(!_0x2b6db2){_0x1eb2d2[_0xb63d('0x1e')](0x194);}return _0x2b6db2;};}function handleError(_0xe47680,_0x234941){_0x234941=_0x234941||0x1f4;return function(_0x24db5d){logger['error'](_0x24db5d[_0xb63d('0x2f')]);if(_0x24db5d[_0xb63d('0x30')]){delete _0x24db5d[_0xb63d('0x30')];}_0xe47680[_0xb63d('0x1f')](_0x234941)[_0xb63d('0x31')](_0x24db5d);};}exports['index']=function(_0x519259,_0x444b5e){var _0x492cd7={},_0x4ac867={},_0x5501ce={'count':0x0,'rows':[]};var _0x34ffbc=_[_0xb63d('0x32')](db[_0xb63d('0x33')][_0xb63d('0x34')],function(_0x4f267f){return{'name':_0x4f267f[_0xb63d('0x35')],'type':_0x4f267f[_0xb63d('0x36')]['key']};});_0x4ac867['model']=_[_0xb63d('0x32')](_0x34ffbc,_0xb63d('0x30'));_0x4ac867[_0xb63d('0x37')]=_[_0xb63d('0x38')](_0x519259[_0xb63d('0x37')]);_0x4ac867['filters']=_[_0xb63d('0x39')](_0x4ac867[_0xb63d('0x3a')],_0x4ac867[_0xb63d('0x37')]);_0x492cd7['attributes']=_['intersection'](_0x4ac867['model'],qs[_0xb63d('0x3b')](_0x519259[_0xb63d('0x37')][_0xb63d('0x3b')]));_0x492cd7[_0xb63d('0x3c')]=_0x492cd7[_0xb63d('0x3c')][_0xb63d('0x3d')]?_0x492cd7[_0xb63d('0x3c')]:_0x4ac867[_0xb63d('0x3a')];if(!_0x519259['query'][_0xb63d('0x3e')]('nolimit')){_0x492cd7['limit']=qs[_0xb63d('0x22')](_0x519259[_0xb63d('0x37')]['limit']);_0x492cd7[_0xb63d('0x23')]=qs[_0xb63d('0x23')](_0x519259[_0xb63d('0x37')]['offset']);}_0x492cd7['order']=qs[_0xb63d('0x3f')](_0x519259[_0xb63d('0x37')]['sort']);_0x492cd7[_0xb63d('0x40')]=qs['filters'](_[_0xb63d('0x41')](_0x519259[_0xb63d('0x37')],_0x4ac867[_0xb63d('0x42')]),_0x34ffbc);if(_0x519259[_0xb63d('0x37')][_0xb63d('0x43')]){_0x492cd7[_0xb63d('0x40')]=_['merge'](_0x492cd7[_0xb63d('0x40')],{'$or':_['map'](_0x34ffbc,function(_0x106833){if(_0x106833['type']!==_0xb63d('0x44')){var _0x22f00e={};_0x22f00e[_0x106833[_0xb63d('0x30')]]={'$like':'%'+_0x519259[_0xb63d('0x37')][_0xb63d('0x43')]+'%'};return _0x22f00e;}})});}_0x492cd7=_[_0xb63d('0x45')]({},_0x492cd7,_0x519259[_0xb63d('0x46')]);var _0x5d0469={'where':_0x492cd7[_0xb63d('0x40')]};return db[_0xb63d('0x33')][_0xb63d('0x24')](_0x5d0469)['then'](function(_0x5acf6e){_0x5501ce[_0xb63d('0x24')]=_0x5acf6e;if(_0x519259[_0xb63d('0x37')][_0xb63d('0x47')]){_0x492cd7[_0xb63d('0x48')]=[{'all':!![]}];}return db[_0xb63d('0x33')][_0xb63d('0x49')](_0x492cd7);})['then'](function(_0xc69b38){_0x5501ce['rows']=_0xc69b38;return _0x5501ce;})['then'](respondWithFilteredResult(_0x444b5e,_0x492cd7))[_0xb63d('0x4a')](handleError(_0x444b5e,null));};exports[_0xb63d('0x4b')]=function(_0x287dcb,_0x56804f){var _0x6a3a42={'raw':![],'where':{'id':_0x287dcb[_0xb63d('0x4c')]['id']}},_0x375656={};_0x375656[_0xb63d('0x3a')]=_[_0xb63d('0x38')](db[_0xb63d('0x33')][_0xb63d('0x34')]);_0x375656[_0xb63d('0x37')]=_[_0xb63d('0x38')](_0x287dcb[_0xb63d('0x37')]);_0x375656[_0xb63d('0x42')]=_['intersection'](_0x375656[_0xb63d('0x3a')],_0x375656[_0xb63d('0x37')]);_0x6a3a42['attributes']=_['intersection'](_0x375656[_0xb63d('0x3a')],qs['fields'](_0x287dcb[_0xb63d('0x37')][_0xb63d('0x3b')]));_0x6a3a42[_0xb63d('0x3c')]=_0x6a3a42[_0xb63d('0x3c')][_0xb63d('0x3d')]?_0x6a3a42[_0xb63d('0x3c')]:_0x375656[_0xb63d('0x3a')];if(_0x287dcb[_0xb63d('0x37')][_0xb63d('0x47')]){_0x6a3a42[_0xb63d('0x48')]=[{'all':!![]}];}_0x6a3a42=_['merge']({},_0x6a3a42,_0x287dcb[_0xb63d('0x46')]);return db['AnalyticCustomReport'][_0xb63d('0x4d')](_0x6a3a42)[_0xb63d('0x2a')](handleEntityNotFound(_0x56804f,null))[_0xb63d('0x2a')](respondWithResult(_0x56804f,null))[_0xb63d('0x4a')](handleError(_0x56804f,null));};exports[_0xb63d('0x4e')]=function(_0x2ebd19,_0x552fb0){return db[_0xb63d('0x33')][_0xb63d('0x4e')](_0x2ebd19[_0xb63d('0x4f')],{})[_0xb63d('0x2a')](function(_0x55c351){var _0x272670=_0x2ebd19['user'][_0xb63d('0x50')]({'plain':!![]});if(!_0x272670)throw new Error(_0xb63d('0x51'));if(_0x272670[_0xb63d('0x52')]===_0xb63d('0x53')){var _0xfb6ea0=_0x55c351[_0xb63d('0x50')]({'plain':!![]});var _0x2914ff=_0xb63d('0x54');return db[_0xb63d('0x55')][_0xb63d('0x4d')]({'where':{'name':_0x2914ff,'userProfileId':_0x272670[_0xb63d('0x56')]},'raw':!![]})['then'](function(_0x3dc04c){if(_0x3dc04c&&_0x3dc04c[_0xb63d('0x57')]===0x0){return db[_0xb63d('0x2d')]['create']({'name':_0xfb6ea0['name'],'resourceId':_0xfb6ea0['id'],'type':_0xb63d('0x2c'),'sectionId':_0x3dc04c['id']},{})[_0xb63d('0x2a')](function(){return _0x55c351;});}else{return _0x55c351;}})[_0xb63d('0x4a')](function(_0x548d68){logger[_0xb63d('0x58')](_0xb63d('0x59'),_0x548d68);throw _0x548d68;});}return _0x55c351;})[_0xb63d('0x2a')](respondWithResult(_0x552fb0,0xc9))[_0xb63d('0x4a')](handleError(_0x552fb0,null));};exports[_0xb63d('0x5a')]=function(_0x5ece8b,_0x2a3252){if(_0x5ece8b[_0xb63d('0x4f')]['id']){delete _0x5ece8b[_0xb63d('0x4f')]['id'];}return db[_0xb63d('0x33')][_0xb63d('0x4d')]({'where':{'id':_0x5ece8b['params']['id']}})[_0xb63d('0x2a')](handleEntityNotFound(_0x2a3252,null))['then'](saveUpdates(_0x5ece8b[_0xb63d('0x4f')],null))['then'](respondWithResult(_0x2a3252,null))[_0xb63d('0x4a')](handleError(_0x2a3252,null));};exports[_0xb63d('0x2b')]=function(_0x2adaac,_0x115bbe){return db['AnalyticCustomReport'][_0xb63d('0x4d')]({'where':{'id':_0x2adaac['params']['id']}})[_0xb63d('0x2a')](handleEntityNotFound(_0x115bbe,null))[_0xb63d('0x2a')](removeEntity(_0x115bbe,null))[_0xb63d('0x4a')](handleError(_0x115bbe,null));};exports[_0xb63d('0x5b')]=function(_0x6afa47,_0x4cf6bc){var _0x2e68a1=0xa;var _0x189e8a=['join','left_join',_0xb63d('0x5c'),_0xb63d('0x5d')];var _0x3c084={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':_0xb63d('0x5e'),'MAX':_0xb63d('0x5f'),'MIN':_0xb63d('0x60'),'AVG':_0xb63d('0x61'),'GROUP_CONCAT':_0xb63d('0x62'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xb63d('0x63')};var _0x4cd8c4={'SEC_TO_TIME':_0xb63d('0x64'),'DATE':_0xb63d('0x65'),'HOUR':'HOUR(%s)','ROUND':_0xb63d('0x66'),'UNIX_TIMESTAMP':_0xb63d('0x67')};var _0x20184e=function(_0x5bc577){return!_['includes']([_0xb63d('0x68'),_0xb63d('0x69'),_0xb63d('0x6a'),_0xb63d('0x6b')],_0x5bc577);};var _0x18ed93=function(_0x1786b0){if(!_0x1786b0||!_0x1786b0[_0xb63d('0x6c')][_0xb63d('0x3d')]){return'';}for(var _0x30f498='(',_0x4a15bb=0x0;_0x4a15bb<_0x1786b0[_0xb63d('0x6c')][_0xb63d('0x3d')];_0x4a15bb+=0x1){_0x4a15bb>0x0&&(_0x30f498+='\x20'+_0x1786b0[_0xb63d('0x6d')]+'\x20');_0x30f498+=_0x1786b0[_0xb63d('0x6c')][_0x4a15bb]['group']?_0x18ed93(_0x1786b0[_0xb63d('0x6c')][_0x4a15bb][_0xb63d('0x6e')]):_0x1786b0[_0xb63d('0x6c')][_0x4a15bb][_0xb63d('0x6f')]+'\x20'+_0x1786b0[_0xb63d('0x6c')][_0x4a15bb][_0xb63d('0x70')]+(_0x20184e(_0x1786b0[_0xb63d('0x6c')][_0x4a15bb]['condition'])?'\x20'+_0x1786b0[_0xb63d('0x6c')][_0x4a15bb]['value']:'');}return _0x30f498+')';};var _0x310f2c={'where':{'id':_0x6afa47[_0xb63d('0x4c')]['id']}},_0x488cfd,_0x4f5de3,_0x1fbb6c,_0x578cac,_0x29ff96;_0x310f2c=_[_0xb63d('0x45')]({},_0x310f2c,_0x6afa47[_0xb63d('0x46')]);return db[_0xb63d('0x33')][_0xb63d('0x4d')](_0x310f2c)['then'](function(_0x34d42f){if(_0x34d42f){_0x488cfd=_0x34d42f;return _0x34d42f[_0xb63d('0x71')]();}return null;})[_0xb63d('0x2a')](function(_0x43d17e){if(_0x43d17e){if(!_0x43d17e['length']){throw new db['Sequelize']['ValidationErrorItem'](_0xb63d('0x72'),0x193);}_0x4f5de3=_0x43d17e;return db[_0xb63d('0x73')][_0xb63d('0x49')]({'raw':!![]});}return null;})[_0xb63d('0x2a')](function(_0x803906){if(_0x803906){_0x1fbb6c=_['keyBy'](_0x803906,'id');var _0x329ad0;var _0x4daa05=squel['select']();_0x4daa05[_0xb63d('0x74')](_0x488cfd[_0xb63d('0x75')]);for(var _0x1d0d10=0x0;_0x1d0d10<_0x4f5de3['length'];_0x1d0d10+=0x1){_0x329ad0=_0x4f5de3[_0x1d0d10]['MetricId']?_0x1fbb6c[_0x4f5de3[_0x1d0d10]['MetricId']][_0xb63d('0x76')]:_0x4f5de3[_0x1d0d10][_0xb63d('0x6f')];_0x329ad0=_0x4f5de3[_0x1d0d10][_0xb63d('0x77')]?_[_0xb63d('0x78')](_0x3c084[_0x4f5de3[_0x1d0d10]['function']],'%s',_0x329ad0):_0x329ad0;_0x329ad0=_0x4f5de3[_0x1d0d10]['format']?_[_0xb63d('0x78')](_0x4cd8c4[_0x4f5de3[_0x1d0d10][_0xb63d('0x79')]],'%s',_0x329ad0):_0x329ad0;if(_0x4f5de3[_0x1d0d10][_0xb63d('0x7a')]){_0x4daa05[_0xb63d('0x6e')](_0x329ad0);}_0x4f5de3[_0x1d0d10][_0xb63d('0x7b')]&&_0x4daa05['order'](_0x329ad0,_0x4f5de3[_0x1d0d10][_0xb63d('0x7b')]===_0xb63d('0x7c')?![]:!![]);_0x4daa05[_0xb63d('0x6f')](_0x329ad0,_0x4f5de3[_0x1d0d10][_0xb63d('0x7d')]||_0x329ad0);}if(_0x488cfd[_0xb63d('0x7e')]){_0x488cfd[_0xb63d('0x7e')]=JSON[_0xb63d('0x7f')](_0x488cfd[_0xb63d('0x7e')]);for(var _0x39487e=0x0;_0x39487e<_0x488cfd[_0xb63d('0x7e')][_0xb63d('0x3d')];_0x39487e+=0x1){if(_0x488cfd['joins'][_0x39487e][_0xb63d('0x36')]&&_['includes'](_0x189e8a,_0x488cfd[_0xb63d('0x7e')][_0x39487e]['type'])&&_0x488cfd[_0xb63d('0x7e')][_0x39487e][_0xb63d('0x80')]&&_0x488cfd['joins'][_0x39487e][_0xb63d('0x81')]&&_0x488cfd[_0xb63d('0x7e')][_0x39487e][_0xb63d('0x82')]){_0x4daa05[_0x488cfd[_0xb63d('0x7e')][_0x39487e][_0xb63d('0x36')]](_0x488cfd[_0xb63d('0x7e')][_0x39487e][_0xb63d('0x81')],null,util[_0xb63d('0x79')](_0xb63d('0x83'),_0x488cfd[_0xb63d('0x75')],_0x488cfd[_0xb63d('0x7e')][_0x39487e]['parentKey'],_0x488cfd[_0xb63d('0x7e')][_0x39487e][_0xb63d('0x81')],_0x488cfd['joins'][_0x39487e][_0xb63d('0x82')]));}}}if(_0x488cfd['conditions']){_0x488cfd[_0xb63d('0x84')]=JSON[_0xb63d('0x7f')](_0x488cfd[_0xb63d('0x84')]);_0x4daa05[_0xb63d('0x40')](_0x18ed93(_0x488cfd[_0xb63d('0x84')]['group']));}_0x29ff96=_0x4daa05[_0xb63d('0x85')]();_0x4daa05[_0xb63d('0x22')](_0x2e68a1);_0x4daa05['offset'](0x0);logger[_0xb63d('0x86')](_0xb63d('0x87'),_0x4daa05[_0xb63d('0x88')]());return dbH['sequelize'][_0xb63d('0x37')](_0x4daa05[_0xb63d('0x88')](),{'type':dbH['sequelize'][_0xb63d('0x89')][_0xb63d('0x8a')]});}})[_0xb63d('0x2a')](respondWithResult(_0x4cf6bc,null))['catch'](handleError(_0x4cf6bc,null));};function runReport(_0x520d47,_0x184956,_0x34144e){var _0x3886a6=_0x184956['name'];var _0x3c3789=0xa;var _0x22eaa5=[_0xb63d('0x8b'),_0xb63d('0x8c'),_0xb63d('0x5c'),_0xb63d('0x5d')];var _0x382693={'SUM':'SUM(%s)','COUNT':_0xb63d('0x8d'),'COUNT DISTINCT':_0xb63d('0x5e'),'MAX':_0xb63d('0x5f'),'MIN':_0xb63d('0x60'),'AVG':_0xb63d('0x61'),'GROUP_CONCAT':_0xb63d('0x62'),'GROUP_CONCAT ASC':_0xb63d('0x8e'),'GROUP_CONCAT DESC':_0xb63d('0x63')};var _0x5c4269={'SEC_TO_TIME':_0xb63d('0x64'),'DATE':_0xb63d('0x65'),'HOUR':'HOUR(%s)','ROUND':_0xb63d('0x66'),'UNIX_TIMESTAMP':_0xb63d('0x67')};var _0x3515bc=function(_0x5ce2e9){return!_['includes']([_0xb63d('0x68'),_0xb63d('0x69'),'IS\x20EMPTY','IS\x20NOT\x20EMPTY'],_0x5ce2e9);};var _0x3d4055=function(_0x3a6d94){if(!_0x3a6d94||!_0x3a6d94['rules'][_0xb63d('0x3d')]){return'';}for(var _0x1cbad8='(',_0x20008a=0x0;_0x20008a<_0x3a6d94[_0xb63d('0x6c')][_0xb63d('0x3d')];_0x20008a+=0x1){_0x20008a>0x0&&(_0x1cbad8+='\x20'+_0x3a6d94[_0xb63d('0x6d')]+'\x20');_0x1cbad8+=_0x3a6d94[_0xb63d('0x6c')][_0x20008a][_0xb63d('0x6e')]?_0x3d4055(_0x3a6d94['rules'][_0x20008a]['group']):_0x3a6d94['rules'][_0x20008a]['field']+'\x20'+_0x3a6d94[_0xb63d('0x6c')][_0x20008a][_0xb63d('0x70')]+(_0x3515bc(_0x3a6d94[_0xb63d('0x6c')][_0x20008a]['condition'])?'\x20'+_0x3a6d94[_0xb63d('0x6c')][_0x20008a][_0xb63d('0x8f')]:'');}return _0x1cbad8+')';};var _0x538161={'where':{'id':_0x520d47['id']}},_0x368839,_0x846fde,_0x10b542,_0x2e2346,_0x39b4da;_0x538161=_[_0xb63d('0x45')]({},_0x538161,_0x34144e);return db['AnalyticCustomReport'][_0xb63d('0x4d')](_0x538161)['then'](function(_0x27967b){if(_0x27967b){_0x368839=_0x27967b;return _0x27967b[_0xb63d('0x71')]();}return null;})['then'](function(_0x50ea78){if(_0x50ea78){if(!_0x50ea78[_0xb63d('0x3d')]){throw new db[(_0xb63d('0x90'))][(_0xb63d('0x91'))](_0xb63d('0x72'),0x193);}_0x846fde=_0x50ea78;return db['AnalyticMetric'][_0xb63d('0x49')]({'raw':!![]});}return null;})['then'](function(_0x163919){if(_0x163919){_0x10b542=_[_0xb63d('0x92')](_0x163919,'id');var _0xed28b1;var _0x826b18=squel['select']();_0x826b18['from'](_0x368839['table']);for(var _0x1fa3b5=0x0;_0x1fa3b5<_0x846fde['length'];_0x1fa3b5+=0x1){_0xed28b1=_0x846fde[_0x1fa3b5][_0xb63d('0x93')]?_0x10b542[_0x846fde[_0x1fa3b5]['MetricId']][_0xb63d('0x76')]:_0x846fde[_0x1fa3b5]['field'];_0xed28b1=_0x846fde[_0x1fa3b5][_0xb63d('0x77')]?_[_0xb63d('0x78')](_0x382693[_0x846fde[_0x1fa3b5][_0xb63d('0x77')]],'%s',_0xed28b1):_0xed28b1;_0xed28b1=_0x846fde[_0x1fa3b5][_0xb63d('0x79')]?_['replace'](_0x5c4269[_0x846fde[_0x1fa3b5][_0xb63d('0x79')]],'%s',_0xed28b1):_0xed28b1;if(_0x846fde[_0x1fa3b5][_0xb63d('0x7a')]){_0x826b18['group'](_0xed28b1);}_0x846fde[_0x1fa3b5]['orderBy']&&_0x826b18[_0xb63d('0x94')](_0xed28b1,_0x846fde[_0x1fa3b5][_0xb63d('0x7b')]===_0xb63d('0x7c')?![]:!![]);_0x826b18['field'](_0xed28b1,_0x846fde[_0x1fa3b5][_0xb63d('0x7d')]||_0xed28b1);}if(_0x368839[_0xb63d('0x7e')]){_0x368839[_0xb63d('0x7e')]=JSON[_0xb63d('0x7f')](_0x368839[_0xb63d('0x7e')]);for(var _0x11bd95=0x0;_0x11bd95<_0x368839[_0xb63d('0x7e')]['length'];_0x11bd95+=0x1){if(_0x368839[_0xb63d('0x7e')][_0x11bd95][_0xb63d('0x36')]&&_[_0xb63d('0x95')](_0x22eaa5,_0x368839[_0xb63d('0x7e')][_0x11bd95]['type'])&&_0x368839[_0xb63d('0x7e')][_0x11bd95][_0xb63d('0x80')]&&_0x368839[_0xb63d('0x7e')][_0x11bd95][_0xb63d('0x81')]&&_0x368839[_0xb63d('0x7e')][_0x11bd95][_0xb63d('0x82')]){_0x826b18[_0x368839[_0xb63d('0x7e')][_0x11bd95]['type']](_0x368839['joins'][_0x11bd95]['foreignTable'],null,util[_0xb63d('0x79')](_0xb63d('0x83'),_0x368839[_0xb63d('0x75')],_0x368839[_0xb63d('0x7e')][_0x11bd95]['parentKey'],_0x368839[_0xb63d('0x7e')][_0x11bd95]['foreignTable'],_0x368839[_0xb63d('0x7e')][_0x11bd95][_0xb63d('0x82')]));}}}if(_0x368839[_0xb63d('0x84')]){_0x368839[_0xb63d('0x84')]=JSON[_0xb63d('0x7f')](_0x368839['conditions']);_0x826b18[_0xb63d('0x40')](_0x3d4055(_0x368839[_0xb63d('0x84')]['group']));}_0x39b4da=_0x826b18[_0xb63d('0x85')]();_0x826b18[_0xb63d('0x22')](_0x3c3789);_0x826b18[_0xb63d('0x23')](0x0);return;}})['then'](function(){if(_0x184956[_0xb63d('0x96')]===_0xb63d('0x97')){return null;}var _0xd23c57=_[_0xb63d('0x45')](_0x184956,{'name':_0x184956['fullPath']||_0x184956[_0xb63d('0x30')]||_0x368839[_0xb63d('0x30')],'basename':_0x3886a6,'savename':util[_0xb63d('0x79')](_0xb63d('0x98'),_0x184956[_0xb63d('0x30')]||_0x368839[_0xb63d('0x30')],require('randomstring')[_0xb63d('0x99')](0x4),_0x184956[_0xb63d('0x96')]||'csv'),'reportId':_0x368839['id'],'reportType':_0xb63d('0x9a')});return db['AnalyticExtractedReport'][_0xb63d('0x4e')](_0xd23c57,{'raw':!![]});})[_0xb63d('0x2a')](function(_0x524236){if(_0x368839[_0xb63d('0x75')]===_0xb63d('0x9b')){_0x39b4da['where'](_0x368839[_0xb63d('0x75')]+_0xb63d('0x9c'),_0x184956[_0xb63d('0x9d')],_0x184956[_0xb63d('0x9e')]);}else{_0x39b4da['where'](_0x368839[_0xb63d('0x75')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x184956[_0xb63d('0x9d')],_0x184956[_0xb63d('0x9e')]);}if(_0x524236){logger[_0xb63d('0x9f')](_0xb63d('0xa0'),_0x39b4da[_0xb63d('0x88')]());require('child_process')[_0xb63d('0xa1')](path[_0xb63d('0x8b')](__dirname,_0xb63d('0xa2'),_0x524236[_0xb63d('0x96')]),[_0x524236['id'],_0x39b4da[_0xb63d('0x88')](),path[_0xb63d('0x8b')](__dirname,_0xb63d('0xa3'),_0x524236[_0xb63d('0xa4')]),_0x3886a6]);return _0x524236;}else{var _0x29056c=squel[_0xb63d('0xa5')]();_0x29056c['from']('('+_0x39b4da['toString']()+')','countTable');_0x29056c[_0xb63d('0x6f')]('COUNT(*)',_0xb63d('0x24'));_0x39b4da[_0xb63d('0x22')](_0x184956[_0xb63d('0x22')]||_0x3c3789);_0x39b4da['offset'](_0x184956[_0xb63d('0x23')]||0x0);return dbH[_0xb63d('0xa6')][_0xb63d('0x37')](_0x29056c['toString'](),{'type':dbH[_0xb63d('0xa6')][_0xb63d('0x89')][_0xb63d('0x8a')]})[_0xb63d('0x2a')](function(_0x29153e){if(!_0x29153e['length']){_0x2e2346=0x0;}else{_0x2e2346=_0x29153e[0x0][_0xb63d('0x24')]||0x0;}return dbH[_0xb63d('0xa6')]['query'](_0x39b4da['toString'](),{'type':dbH['sequelize']['QueryTypes'][_0xb63d('0x8a')]});})[_0xb63d('0x2a')](function(_0x47eeac){return{'rows':_0x47eeac||[],'count':_0x2e2346};});}});}exports[_0xb63d('0xa7')]=function(_0x4aca7d,_0x5431ab){return runReport(_0x4aca7d[_0xb63d('0x4c')],_0x4aca7d[_0xb63d('0x37')],_0x4aca7d[_0xb63d('0x46')])['then'](respondWithResult(_0x5431ab,null))[_0xb63d('0x4a')](handleError(_0x5431ab,null));};exports[_0xb63d('0xa8')]=runReport;exports[_0xb63d('0x37')]=function(_0x33b2a8,_0x3d9763){var _0x55c250=0xa;var _0x5be7dc=[_0xb63d('0x8b'),_0xb63d('0x8c'),_0xb63d('0x5c'),_0xb63d('0x5d')];var _0x50e6a8={'SUM':_0xb63d('0xa9'),'COUNT':_0xb63d('0x8d'),'COUNT DISTINCT':_0xb63d('0x5e'),'MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':_0xb63d('0x61'),'GROUP_CONCAT':_0xb63d('0x62'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xb63d('0x63')};var _0xfe98d2={'SEC_TO_TIME':_0xb63d('0x64'),'DATE':_0xb63d('0x65'),'HOUR':_0xb63d('0xaa'),'ROUND':_0xb63d('0x66'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1d4e66=function(_0x269d90){return!_[_0xb63d('0x95')]([_0xb63d('0x68'),_0xb63d('0x69'),_0xb63d('0x6a'),_0xb63d('0x6b')],_0x269d90);};var _0x57650f=function(_0x43fb94){if(!_0x43fb94||!_0x43fb94[_0xb63d('0x6c')][_0xb63d('0x3d')]){return'';}for(var _0x4348f7='(',_0x797aad=0x0;_0x797aad<_0x43fb94[_0xb63d('0x6c')][_0xb63d('0x3d')];_0x797aad+=0x1){_0x797aad>0x0&&(_0x4348f7+='\x20'+_0x43fb94[_0xb63d('0x6d')]+'\x20');_0x4348f7+=_0x43fb94[_0xb63d('0x6c')][_0x797aad]['group']?_0x57650f(_0x43fb94[_0xb63d('0x6c')][_0x797aad]['group']):_0x43fb94[_0xb63d('0x6c')][_0x797aad][_0xb63d('0x6f')]+'\x20'+_0x43fb94[_0xb63d('0x6c')][_0x797aad]['condition']+(_0x1d4e66(_0x43fb94[_0xb63d('0x6c')][_0x797aad][_0xb63d('0x70')])?'\x20'+_0x43fb94[_0xb63d('0x6c')][_0x797aad][_0xb63d('0x8f')]:'');}return _0x4348f7+')';};var _0x5be160={'where':{'id':_0x33b2a8[_0xb63d('0x4c')]['id']}},_0x280ac4,_0x5e3c44,_0x109b20,_0x93e0ad,_0x1ecd82;_0x5be160=_[_0xb63d('0x45')]({},_0x5be160,_0x33b2a8[_0xb63d('0x46')]);return db[_0xb63d('0x33')][_0xb63d('0x4d')](_0x5be160)[_0xb63d('0x2a')](function(_0x55d16e){if(_0x55d16e){_0x280ac4=_0x55d16e;return _0x55d16e[_0xb63d('0x71')]();}return null;})[_0xb63d('0x2a')](function(_0x46aa6b){if(_0x46aa6b){if(!_0x46aa6b[_0xb63d('0x3d')]){throw new db[(_0xb63d('0x90'))][(_0xb63d('0x91'))](_0xb63d('0x72'),0x193);}_0x5e3c44=_0x46aa6b;return db[_0xb63d('0x73')]['findAll']({'raw':!![]});}return null;})[_0xb63d('0x2a')](function(_0x2d4d1f){if(_0x2d4d1f){_0x109b20=_[_0xb63d('0x92')](_0x2d4d1f,'id');var _0x367fbc;var _0x547c2e=squel['select']();_0x547c2e['from'](_0x280ac4[_0xb63d('0x75')]);for(var _0xa5a753=0x0;_0xa5a753<_0x5e3c44[_0xb63d('0x3d')];_0xa5a753+=0x1){_0x367fbc=_0x5e3c44[_0xa5a753][_0xb63d('0x93')]?_0x109b20[_0x5e3c44[_0xa5a753][_0xb63d('0x93')]]['metric']:_0x5e3c44[_0xa5a753]['field'];_0x367fbc=_0x5e3c44[_0xa5a753]['function']?_['replace'](_0x50e6a8[_0x5e3c44[_0xa5a753][_0xb63d('0x77')]],'%s',_0x367fbc):_0x367fbc;_0x367fbc=_0x5e3c44[_0xa5a753]['format']?_[_0xb63d('0x78')](_0xfe98d2[_0x5e3c44[_0xa5a753][_0xb63d('0x79')]],'%s',_0x367fbc):_0x367fbc;if(_0x5e3c44[_0xa5a753]['groupBy']){_0x547c2e[_0xb63d('0x6e')](_0x367fbc);}_0x5e3c44[_0xa5a753][_0xb63d('0x7b')]&&_0x547c2e[_0xb63d('0x94')](_0x367fbc,_0x5e3c44[_0xa5a753][_0xb63d('0x7b')]===_0xb63d('0x7c')?![]:!![]);_0x547c2e['field'](_0x367fbc,_0x5e3c44[_0xa5a753][_0xb63d('0x7d')]||_0x367fbc);}if(_0x280ac4[_0xb63d('0x7e')]){_0x280ac4[_0xb63d('0x7e')]=JSON['parse'](_0x280ac4[_0xb63d('0x7e')]);for(var _0x1ab2a0=0x0;_0x1ab2a0<_0x280ac4['joins'][_0xb63d('0x3d')];_0x1ab2a0+=0x1){if(_0x280ac4[_0xb63d('0x7e')][_0x1ab2a0][_0xb63d('0x36')]&&_[_0xb63d('0x95')](_0x5be7dc,_0x280ac4[_0xb63d('0x7e')][_0x1ab2a0][_0xb63d('0x36')])&&_0x280ac4[_0xb63d('0x7e')][_0x1ab2a0][_0xb63d('0x80')]&&_0x280ac4['joins'][_0x1ab2a0]['foreignTable']&&_0x280ac4['joins'][_0x1ab2a0][_0xb63d('0x82')]){_0x547c2e[_0x280ac4[_0xb63d('0x7e')][_0x1ab2a0][_0xb63d('0x36')]](_0x280ac4[_0xb63d('0x7e')][_0x1ab2a0][_0xb63d('0x81')],null,util[_0xb63d('0x79')](_0xb63d('0x83'),_0x280ac4[_0xb63d('0x75')],_0x280ac4[_0xb63d('0x7e')][_0x1ab2a0][_0xb63d('0x80')],_0x280ac4[_0xb63d('0x7e')][_0x1ab2a0]['foreignTable'],_0x280ac4[_0xb63d('0x7e')][_0x1ab2a0][_0xb63d('0x82')]));}}}if(_0x280ac4[_0xb63d('0x84')]){_0x280ac4[_0xb63d('0x84')]=JSON[_0xb63d('0x7f')](_0x280ac4[_0xb63d('0x84')]);_0x547c2e[_0xb63d('0x40')](_0x57650f(_0x280ac4[_0xb63d('0x84')][_0xb63d('0x6e')]));}_0x1ecd82=_0x547c2e['clone']();_0x547c2e[_0xb63d('0x22')](_0x55c250);_0x547c2e[_0xb63d('0x23')](0x0);logger[_0xb63d('0x86')]('Limited\x20Query:',_0x547c2e[_0xb63d('0x88')]());return dbH[_0xb63d('0xa6')]['query'](_0x547c2e[_0xb63d('0x88')](),{'type':dbH[_0xb63d('0xa6')]['QueryTypes'][_0xb63d('0x8a')]});}})['then'](function(){return{'sql':_0x1ecd82[_0xb63d('0x88')]()};})['then'](respondWithResult(_0x3d9763,null))[_0xb63d('0x4a')](handleError(_0x3d9763,null));};
\ No newline at end of file
+var _0x5d9d=['create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','left_join','right_join','SUM(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20EMPTY','rules','group','field','condition','getFields','Sequelize','ValidationErrorItem','keyBy','select','from','table','MetricId','metric','function','format','replace','orderBy','DESC','alias','joins','parse','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','parentKey','conditions','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','cross_join','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','IS\x20NOT\x20NULL','IS\x20EMPTY','operator','value','Please\x20insert\x20at\x20least\x20one\x20field','groupBy','output','web','fullPath','%s-%s.%s','generate','csv','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','countTable','run','runReport','clone','eml-format','rimraf','fast-json-patch','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','dbH','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','update','destroy','get','CustomReports','then','error','stack','name','send','index','map','AnalyticCustomReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge','includeAll','include','findAll','rows','catch','show','params','fields','options','find'];(function(_0x389514,_0x123781){var _0x173678=function(_0x35ed07){while(--_0x35ed07){_0x389514['push'](_0x389514['shift']());}};_0x173678(++_0x123781);}(_0x5d9d,0x1aa));var _0xd5d9=function(_0x40efaf,_0x5e1d52){_0x40efaf=_0x40efaf-0x0;var _0x3532d9=_0x5d9d[_0x40efaf];return _0x3532d9;};'use strict';var emlformat=require(_0xd5d9('0x0'));var rimraf=require(_0xd5d9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd5d9('0x2'));var rp=require('request-promise');var moment=require(_0xd5d9('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd5d9('0x4'));var path=require(_0xd5d9('0x5'));var sox=require(_0xd5d9('0x6'));var csv=require(_0xd5d9('0x7'));var ejs=require(_0xd5d9('0x8'));var fs=require('fs');var fs_extra=require(_0xd5d9('0x9'));var _=require(_0xd5d9('0xa'));var squel=require(_0xd5d9('0xb'));var crypto=require(_0xd5d9('0xc'));var jsforce=require(_0xd5d9('0xd'));var deskjs=require(_0xd5d9('0xe'));var toCsv=require(_0xd5d9('0x7'));var querystring=require(_0xd5d9('0xf'));var Papa=require('papaparse');var Redis=require(_0xd5d9('0x10'));var authService=require(_0xd5d9('0x11'));var qs=require(_0xd5d9('0x12'));var as=require(_0xd5d9('0x13'));var hardwareService=require(_0xd5d9('0x14'));var logger=require(_0xd5d9('0x15'))(_0xd5d9('0x16'));var utils=require(_0xd5d9('0x17'));var config=require(_0xd5d9('0x18'));var licenseUtil=require(_0xd5d9('0x19'));var db=require(_0xd5d9('0x1a'))['db'];var dbH=require('../../mysqldb')[_0xd5d9('0x1b')];function respondWithStatusCode(_0x3df9cc,_0x3c9449){_0x3c9449=_0x3c9449||0xcc;return function(_0x229a22){if(_0x229a22){return _0x3df9cc['sendStatus'](_0x3c9449);}return _0x3df9cc[_0xd5d9('0x1c')](_0x3c9449)[_0xd5d9('0x1d')]();};}function respondWithResult(_0x48b412,_0x30349e){_0x30349e=_0x30349e||0xc8;return function(_0x4ef9f5){if(_0x4ef9f5){return _0x48b412[_0xd5d9('0x1c')](_0x30349e)[_0xd5d9('0x1e')](_0x4ef9f5);}};}function respondWithFilteredResult(_0x3da643,_0x5de61c){return function(_0x21148d){if(_0x21148d){var _0x483217=typeof _0x5de61c['offset']==='undefined'&&typeof _0x5de61c[_0xd5d9('0x1f')]===_0xd5d9('0x20');var _0x174f2a=_0x21148d[_0xd5d9('0x21')];var _0x32459b=_0x483217?0x0:_0x5de61c[_0xd5d9('0x22')];var _0x53d8dc=_0x483217?_0x21148d[_0xd5d9('0x21')]:_0x5de61c[_0xd5d9('0x22')]+_0x5de61c[_0xd5d9('0x1f')];var _0x3863ba;if(_0x53d8dc>=_0x174f2a){_0x53d8dc=_0x174f2a;_0x3863ba=0xc8;}else{_0x3863ba=0xce;}_0x3da643['status'](_0x3863ba);return _0x3da643[_0xd5d9('0x23')](_0xd5d9('0x24'),_0x32459b+'-'+_0x53d8dc+'/'+_0x174f2a)['json'](_0x21148d);}return null;};}function patchUpdates(_0x1b5b2f){return function(_0x242547){try{jsonpatch[_0xd5d9('0x25')](_0x242547,_0x1b5b2f,!![]);}catch(_0x47e5c0){return BPromise['reject'](_0x47e5c0);}return _0x242547['save']();};}function saveUpdates(_0x5f519b,_0xc34b84){return function(_0x5956cb){if(_0x5956cb){return _0x5956cb[_0xd5d9('0x26')](_0x5f519b)['then'](function(_0x39d6e4){return _0x39d6e4;});}return null;};}function removeEntity(_0x5a26d1,_0x2640ac){return function(_0x4e4621){if(_0x4e4621){return _0x4e4621[_0xd5d9('0x27')]()['then'](function(){var _0x222f8a=_0x4e4621[_0xd5d9('0x28')]({'plain':!![]});var _0x4923d5=_0xd5d9('0x29');return db['UserProfileResource'][_0xd5d9('0x27')]({'where':{'type':_0x4923d5,'resourceId':_0x222f8a['id']}})[_0xd5d9('0x2a')](function(){return _0x4e4621;});})[_0xd5d9('0x2a')](function(){_0x5a26d1[_0xd5d9('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3f5586,_0x41f497){return function(_0x3bd0d1){if(!_0x3bd0d1){_0x3f5586['sendStatus'](0x194);}return _0x3bd0d1;};}function handleError(_0x246ce5,_0x26d0e9){_0x26d0e9=_0x26d0e9||0x1f4;return function(_0x313e90){logger[_0xd5d9('0x2b')](_0x313e90[_0xd5d9('0x2c')]);if(_0x313e90[_0xd5d9('0x2d')]){delete _0x313e90[_0xd5d9('0x2d')];}_0x246ce5['status'](_0x26d0e9)[_0xd5d9('0x2e')](_0x313e90);};}exports[_0xd5d9('0x2f')]=function(_0x4ccc54,_0x19309d){var _0x1424c7={},_0x34f96b={},_0x2b322b={'count':0x0,'rows':[]};var _0x15b327=_[_0xd5d9('0x30')](db[_0xd5d9('0x31')][_0xd5d9('0x32')],function(_0x2df694){return{'name':_0x2df694[_0xd5d9('0x33')],'type':_0x2df694[_0xd5d9('0x34')][_0xd5d9('0x35')]};});_0x34f96b[_0xd5d9('0x36')]=_[_0xd5d9('0x30')](_0x15b327,_0xd5d9('0x2d'));_0x34f96b[_0xd5d9('0x37')]=_[_0xd5d9('0x38')](_0x4ccc54[_0xd5d9('0x37')]);_0x34f96b['filters']=_[_0xd5d9('0x39')](_0x34f96b['model'],_0x34f96b[_0xd5d9('0x37')]);_0x1424c7[_0xd5d9('0x3a')]=_[_0xd5d9('0x39')](_0x34f96b[_0xd5d9('0x36')],qs['fields'](_0x4ccc54[_0xd5d9('0x37')]['fields']));_0x1424c7[_0xd5d9('0x3a')]=_0x1424c7[_0xd5d9('0x3a')][_0xd5d9('0x3b')]?_0x1424c7['attributes']:_0x34f96b[_0xd5d9('0x36')];if(!_0x4ccc54[_0xd5d9('0x37')]['hasOwnProperty'](_0xd5d9('0x3c'))){_0x1424c7[_0xd5d9('0x1f')]=qs[_0xd5d9('0x1f')](_0x4ccc54[_0xd5d9('0x37')][_0xd5d9('0x1f')]);_0x1424c7['offset']=qs[_0xd5d9('0x22')](_0x4ccc54['query'][_0xd5d9('0x22')]);}_0x1424c7[_0xd5d9('0x3d')]=qs['sort'](_0x4ccc54['query'][_0xd5d9('0x3e')]);_0x1424c7[_0xd5d9('0x3f')]=qs[_0xd5d9('0x40')](_[_0xd5d9('0x41')](_0x4ccc54['query'],_0x34f96b[_0xd5d9('0x40')]),_0x15b327);if(_0x4ccc54[_0xd5d9('0x37')][_0xd5d9('0x42')]){_0x1424c7[_0xd5d9('0x3f')]=_[_0xd5d9('0x43')](_0x1424c7[_0xd5d9('0x3f')],{'$or':_[_0xd5d9('0x30')](_0x15b327,function(_0x424a48){if(_0x424a48[_0xd5d9('0x34')]!=='VIRTUAL'){var _0xb8bd63={};_0xb8bd63[_0x424a48[_0xd5d9('0x2d')]]={'$like':'%'+_0x4ccc54['query'][_0xd5d9('0x42')]+'%'};return _0xb8bd63;}})});}_0x1424c7=_[_0xd5d9('0x43')]({},_0x1424c7,_0x4ccc54['options']);var _0x2ca821={'where':_0x1424c7['where']};return db['AnalyticCustomReport'][_0xd5d9('0x21')](_0x2ca821)[_0xd5d9('0x2a')](function(_0x557515){_0x2b322b['count']=_0x557515;if(_0x4ccc54[_0xd5d9('0x37')][_0xd5d9('0x44')]){_0x1424c7[_0xd5d9('0x45')]=[{'all':!![]}];}return db[_0xd5d9('0x31')][_0xd5d9('0x46')](_0x1424c7);})[_0xd5d9('0x2a')](function(_0x3d88da){_0x2b322b[_0xd5d9('0x47')]=_0x3d88da;return _0x2b322b;})[_0xd5d9('0x2a')](respondWithFilteredResult(_0x19309d,_0x1424c7))[_0xd5d9('0x48')](handleError(_0x19309d,null));};exports[_0xd5d9('0x49')]=function(_0xc2a44d,_0x5a8a0c){var _0x3eeb3a={'raw':![],'where':{'id':_0xc2a44d[_0xd5d9('0x4a')]['id']}},_0x237567={};_0x237567[_0xd5d9('0x36')]=_[_0xd5d9('0x38')](db[_0xd5d9('0x31')]['rawAttributes']);_0x237567[_0xd5d9('0x37')]=_[_0xd5d9('0x38')](_0xc2a44d[_0xd5d9('0x37')]);_0x237567[_0xd5d9('0x40')]=_['intersection'](_0x237567[_0xd5d9('0x36')],_0x237567['query']);_0x3eeb3a[_0xd5d9('0x3a')]=_[_0xd5d9('0x39')](_0x237567[_0xd5d9('0x36')],qs[_0xd5d9('0x4b')](_0xc2a44d[_0xd5d9('0x37')][_0xd5d9('0x4b')]));_0x3eeb3a[_0xd5d9('0x3a')]=_0x3eeb3a['attributes'][_0xd5d9('0x3b')]?_0x3eeb3a[_0xd5d9('0x3a')]:_0x237567[_0xd5d9('0x36')];if(_0xc2a44d[_0xd5d9('0x37')][_0xd5d9('0x44')]){_0x3eeb3a[_0xd5d9('0x45')]=[{'all':!![]}];}_0x3eeb3a=_[_0xd5d9('0x43')]({},_0x3eeb3a,_0xc2a44d[_0xd5d9('0x4c')]);return db['AnalyticCustomReport'][_0xd5d9('0x4d')](_0x3eeb3a)[_0xd5d9('0x2a')](handleEntityNotFound(_0x5a8a0c,null))[_0xd5d9('0x2a')](respondWithResult(_0x5a8a0c,null))[_0xd5d9('0x48')](handleError(_0x5a8a0c,null));};exports[_0xd5d9('0x4e')]=function(_0xd34a94,_0x528c19){return db[_0xd5d9('0x31')]['create'](_0xd34a94[_0xd5d9('0x4f')],{})[_0xd5d9('0x2a')](function(_0x25a2fd){var _0x403712=_0xd34a94[_0xd5d9('0x50')]['get']({'plain':!![]});if(!_0x403712)throw new Error(_0xd5d9('0x51'));if(_0x403712[_0xd5d9('0x52')]===_0xd5d9('0x50')){var _0x3e6cf8=_0x25a2fd[_0xd5d9('0x28')]({'plain':!![]});var _0x4ff96c=_0xd5d9('0x53');return db['UserProfileSection'][_0xd5d9('0x4d')]({'where':{'name':_0x4ff96c,'userProfileId':_0x403712['userProfileId']},'raw':!![]})[_0xd5d9('0x2a')](function(_0x4fba85){if(_0x4fba85&&_0x4fba85['autoAssociation']===0x0){return db[_0xd5d9('0x54')][_0xd5d9('0x4e')]({'name':_0x3e6cf8[_0xd5d9('0x2d')],'resourceId':_0x3e6cf8['id'],'type':'CustomReports','sectionId':_0x4fba85['id']},{})[_0xd5d9('0x2a')](function(){return _0x25a2fd;});}else{return _0x25a2fd;}})[_0xd5d9('0x48')](function(_0x4e825f){logger[_0xd5d9('0x2b')](_0xd5d9('0x55'),_0x4e825f);throw _0x4e825f;});}return _0x25a2fd;})['then'](respondWithResult(_0x528c19,0xc9))[_0xd5d9('0x48')](handleError(_0x528c19,null));};exports[_0xd5d9('0x26')]=function(_0x1e63bd,_0x4b2733){if(_0x1e63bd[_0xd5d9('0x4f')]['id']){delete _0x1e63bd['body']['id'];}return db[_0xd5d9('0x31')][_0xd5d9('0x4d')]({'where':{'id':_0x1e63bd['params']['id']}})[_0xd5d9('0x2a')](handleEntityNotFound(_0x4b2733,null))[_0xd5d9('0x2a')](saveUpdates(_0x1e63bd['body'],null))[_0xd5d9('0x2a')](respondWithResult(_0x4b2733,null))[_0xd5d9('0x48')](handleError(_0x4b2733,null));};exports[_0xd5d9('0x27')]=function(_0x2de51f,_0x210a57){return db['AnalyticCustomReport'][_0xd5d9('0x4d')]({'where':{'id':_0x2de51f[_0xd5d9('0x4a')]['id']}})[_0xd5d9('0x2a')](handleEntityNotFound(_0x210a57,null))[_0xd5d9('0x2a')](removeEntity(_0x210a57,null))[_0xd5d9('0x48')](handleError(_0x210a57,null));};exports['preview']=function(_0x53d01e,_0x17f32a){var _0x52476d=0xa;var _0x4c7e02=[_0xd5d9('0x56'),_0xd5d9('0x57'),_0xd5d9('0x58'),'cross_join'];var _0x142a42={'SUM':_0xd5d9('0x59'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0xd5d9('0x5a'),'AVG':_0xd5d9('0x5b'),'GROUP_CONCAT':_0xd5d9('0x5c'),'GROUP_CONCAT ASC':_0xd5d9('0x5d'),'GROUP_CONCAT DESC':_0xd5d9('0x5e')};var _0xdc7773={'SEC_TO_TIME':_0xd5d9('0x5f'),'DATE':_0xd5d9('0x60'),'HOUR':_0xd5d9('0x61'),'ROUND':_0xd5d9('0x62'),'UNIX_TIMESTAMP':_0xd5d9('0x63')};var _0x55d28d=function(_0x50573d){return!_[_0xd5d9('0x64')]([_0xd5d9('0x65'),'IS\x20NOT\x20NULL','IS\x20EMPTY',_0xd5d9('0x66')],_0x50573d);};var _0x33586b=function(_0x1fde22){if(!_0x1fde22||!_0x1fde22[_0xd5d9('0x67')][_0xd5d9('0x3b')]){return'';}for(var _0x96d170='(',_0x57d0bb=0x0;_0x57d0bb<_0x1fde22[_0xd5d9('0x67')][_0xd5d9('0x3b')];_0x57d0bb+=0x1){_0x57d0bb>0x0&&(_0x96d170+='\x20'+_0x1fde22['operator']+'\x20');_0x96d170+=_0x1fde22[_0xd5d9('0x67')][_0x57d0bb][_0xd5d9('0x68')]?_0x33586b(_0x1fde22[_0xd5d9('0x67')][_0x57d0bb][_0xd5d9('0x68')]):_0x1fde22['rules'][_0x57d0bb][_0xd5d9('0x69')]+'\x20'+_0x1fde22[_0xd5d9('0x67')][_0x57d0bb][_0xd5d9('0x6a')]+(_0x55d28d(_0x1fde22[_0xd5d9('0x67')][_0x57d0bb][_0xd5d9('0x6a')])?'\x20'+_0x1fde22['rules'][_0x57d0bb]['value']:'');}return _0x96d170+')';};var _0x3f96c8={'where':{'id':_0x53d01e[_0xd5d9('0x4a')]['id']}},_0x488b01,_0x1790bb,_0x852439,_0x3acb9c,_0x34cedd;_0x3f96c8=_['merge']({},_0x3f96c8,_0x53d01e[_0xd5d9('0x4c')]);return db[_0xd5d9('0x31')][_0xd5d9('0x4d')](_0x3f96c8)[_0xd5d9('0x2a')](function(_0x673958){if(_0x673958){_0x488b01=_0x673958;return _0x673958[_0xd5d9('0x6b')]();}return null;})[_0xd5d9('0x2a')](function(_0xd04e02){if(_0xd04e02){if(!_0xd04e02[_0xd5d9('0x3b')]){throw new db[(_0xd5d9('0x6c'))][(_0xd5d9('0x6d'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x1790bb=_0xd04e02;return db['AnalyticMetric'][_0xd5d9('0x46')]({'raw':!![]});}return null;})[_0xd5d9('0x2a')](function(_0x38bca1){if(_0x38bca1){_0x852439=_[_0xd5d9('0x6e')](_0x38bca1,'id');var _0x59f639;var _0x18c974=squel[_0xd5d9('0x6f')]();_0x18c974[_0xd5d9('0x70')](_0x488b01[_0xd5d9('0x71')]);for(var _0x44b4cd=0x0;_0x44b4cd<_0x1790bb[_0xd5d9('0x3b')];_0x44b4cd+=0x1){_0x59f639=_0x1790bb[_0x44b4cd][_0xd5d9('0x72')]?_0x852439[_0x1790bb[_0x44b4cd]['MetricId']][_0xd5d9('0x73')]:_0x1790bb[_0x44b4cd]['field'];_0x59f639=_0x1790bb[_0x44b4cd]['function']?_['replace'](_0x142a42[_0x1790bb[_0x44b4cd][_0xd5d9('0x74')]],'%s',_0x59f639):_0x59f639;_0x59f639=_0x1790bb[_0x44b4cd][_0xd5d9('0x75')]?_[_0xd5d9('0x76')](_0xdc7773[_0x1790bb[_0x44b4cd][_0xd5d9('0x75')]],'%s',_0x59f639):_0x59f639;if(_0x1790bb[_0x44b4cd]['groupBy']){_0x18c974[_0xd5d9('0x68')](_0x59f639);}_0x1790bb[_0x44b4cd][_0xd5d9('0x77')]&&_0x18c974[_0xd5d9('0x3d')](_0x59f639,_0x1790bb[_0x44b4cd][_0xd5d9('0x77')]===_0xd5d9('0x78')?![]:!![]);_0x18c974['field'](_0x59f639,_0x1790bb[_0x44b4cd][_0xd5d9('0x79')]||_0x59f639);}if(_0x488b01['joins']){_0x488b01[_0xd5d9('0x7a')]=JSON[_0xd5d9('0x7b')](_0x488b01[_0xd5d9('0x7a')]);for(var _0x11c92c=0x0;_0x11c92c<_0x488b01[_0xd5d9('0x7a')][_0xd5d9('0x3b')];_0x11c92c+=0x1){if(_0x488b01[_0xd5d9('0x7a')][_0x11c92c][_0xd5d9('0x34')]&&_[_0xd5d9('0x64')](_0x4c7e02,_0x488b01['joins'][_0x11c92c]['type'])&&_0x488b01[_0xd5d9('0x7a')][_0x11c92c]['parentKey']&&_0x488b01['joins'][_0x11c92c][_0xd5d9('0x7c')]&&_0x488b01[_0xd5d9('0x7a')][_0x11c92c][_0xd5d9('0x7d')]){_0x18c974[_0x488b01[_0xd5d9('0x7a')][_0x11c92c][_0xd5d9('0x34')]](_0x488b01[_0xd5d9('0x7a')][_0x11c92c][_0xd5d9('0x7c')],null,util['format'](_0xd5d9('0x7e'),_0x488b01['table'],_0x488b01[_0xd5d9('0x7a')][_0x11c92c][_0xd5d9('0x7f')],_0x488b01[_0xd5d9('0x7a')][_0x11c92c]['foreignTable'],_0x488b01['joins'][_0x11c92c][_0xd5d9('0x7d')]));}}}if(_0x488b01[_0xd5d9('0x80')]){_0x488b01[_0xd5d9('0x80')]=JSON[_0xd5d9('0x7b')](_0x488b01[_0xd5d9('0x80')]);_0x18c974['where'](_0x33586b(_0x488b01['conditions']['group']));}_0x34cedd=_0x18c974['clone']();_0x18c974[_0xd5d9('0x1f')](_0x52476d);_0x18c974[_0xd5d9('0x22')](0x0);logger[_0xd5d9('0x81')](_0xd5d9('0x82'),_0x18c974[_0xd5d9('0x83')]());return dbH[_0xd5d9('0x84')][_0xd5d9('0x37')](_0x18c974[_0xd5d9('0x83')](),{'type':dbH[_0xd5d9('0x84')][_0xd5d9('0x85')][_0xd5d9('0x86')]});}})[_0xd5d9('0x2a')](respondWithResult(_0x17f32a,null))['catch'](handleError(_0x17f32a,null));};function runReport(_0x131847,_0x481811,_0x17c9a8){var _0x2015b6=_0x481811['name'];var _0x400180=0xa;var _0x44d6e3=[_0xd5d9('0x56'),_0xd5d9('0x57'),_0xd5d9('0x58'),_0xd5d9('0x87')];var _0x4e8813={'SUM':'SUM(%s)','COUNT':_0xd5d9('0x88'),'COUNT DISTINCT':_0xd5d9('0x89'),'MAX':_0xd5d9('0x8a'),'MIN':_0xd5d9('0x5a'),'AVG':_0xd5d9('0x5b'),'GROUP_CONCAT':_0xd5d9('0x5c'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xd5d9('0x5e')};var _0x2b03ae={'SEC_TO_TIME':_0xd5d9('0x5f'),'DATE':_0xd5d9('0x60'),'HOUR':_0xd5d9('0x61'),'ROUND':_0xd5d9('0x62'),'UNIX_TIMESTAMP':_0xd5d9('0x63')};var _0x1857e4=function(_0x28c7fb){return!_[_0xd5d9('0x64')]([_0xd5d9('0x65'),_0xd5d9('0x8b'),_0xd5d9('0x8c'),'IS\x20NOT\x20EMPTY'],_0x28c7fb);};var _0x19459d=function(_0x123e81){if(!_0x123e81||!_0x123e81['rules'][_0xd5d9('0x3b')]){return'';}for(var _0x2589d0='(',_0x6f0d66=0x0;_0x6f0d66<_0x123e81['rules']['length'];_0x6f0d66+=0x1){_0x6f0d66>0x0&&(_0x2589d0+='\x20'+_0x123e81[_0xd5d9('0x8d')]+'\x20');_0x2589d0+=_0x123e81['rules'][_0x6f0d66][_0xd5d9('0x68')]?_0x19459d(_0x123e81[_0xd5d9('0x67')][_0x6f0d66]['group']):_0x123e81['rules'][_0x6f0d66][_0xd5d9('0x69')]+'\x20'+_0x123e81['rules'][_0x6f0d66][_0xd5d9('0x6a')]+(_0x1857e4(_0x123e81[_0xd5d9('0x67')][_0x6f0d66][_0xd5d9('0x6a')])?'\x20'+_0x123e81[_0xd5d9('0x67')][_0x6f0d66][_0xd5d9('0x8e')]:'');}return _0x2589d0+')';};var _0x108dc5={'where':{'id':_0x131847['id']}},_0x4b3a79,_0x47836a,_0x28691e,_0x3e13ae,_0x384e96;_0x108dc5=_[_0xd5d9('0x43')]({},_0x108dc5,_0x17c9a8);return db[_0xd5d9('0x31')]['find'](_0x108dc5)[_0xd5d9('0x2a')](function(_0xfe4015){if(_0xfe4015){_0x4b3a79=_0xfe4015;return _0xfe4015['getFields']();}return null;})[_0xd5d9('0x2a')](function(_0x875875){if(_0x875875){if(!_0x875875[_0xd5d9('0x3b')]){throw new db[(_0xd5d9('0x6c'))][(_0xd5d9('0x6d'))](_0xd5d9('0x8f'),0x193);}_0x47836a=_0x875875;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0xd5d9('0x2a')](function(_0x16c8fc){if(_0x16c8fc){_0x28691e=_['keyBy'](_0x16c8fc,'id');var _0x3ca04d;var _0x54c113=squel[_0xd5d9('0x6f')]();_0x54c113[_0xd5d9('0x70')](_0x4b3a79['table']);for(var _0x585380=0x0;_0x585380<_0x47836a['length'];_0x585380+=0x1){_0x3ca04d=_0x47836a[_0x585380][_0xd5d9('0x72')]?_0x28691e[_0x47836a[_0x585380][_0xd5d9('0x72')]]['metric']:_0x47836a[_0x585380][_0xd5d9('0x69')];_0x3ca04d=_0x47836a[_0x585380][_0xd5d9('0x74')]?_[_0xd5d9('0x76')](_0x4e8813[_0x47836a[_0x585380][_0xd5d9('0x74')]],'%s',_0x3ca04d):_0x3ca04d;_0x3ca04d=_0x47836a[_0x585380][_0xd5d9('0x75')]?_[_0xd5d9('0x76')](_0x2b03ae[_0x47836a[_0x585380][_0xd5d9('0x75')]],'%s',_0x3ca04d):_0x3ca04d;if(_0x47836a[_0x585380][_0xd5d9('0x90')]){_0x54c113[_0xd5d9('0x68')](_0x3ca04d);}_0x47836a[_0x585380]['orderBy']&&_0x54c113['order'](_0x3ca04d,_0x47836a[_0x585380]['orderBy']===_0xd5d9('0x78')?![]:!![]);_0x54c113['field'](_0x3ca04d,_0x47836a[_0x585380][_0xd5d9('0x79')]||_0x3ca04d);}if(_0x4b3a79[_0xd5d9('0x7a')]){_0x4b3a79['joins']=JSON[_0xd5d9('0x7b')](_0x4b3a79['joins']);for(var _0x4df87d=0x0;_0x4df87d<_0x4b3a79[_0xd5d9('0x7a')]['length'];_0x4df87d+=0x1){if(_0x4b3a79[_0xd5d9('0x7a')][_0x4df87d][_0xd5d9('0x34')]&&_[_0xd5d9('0x64')](_0x44d6e3,_0x4b3a79[_0xd5d9('0x7a')][_0x4df87d][_0xd5d9('0x34')])&&_0x4b3a79[_0xd5d9('0x7a')][_0x4df87d][_0xd5d9('0x7f')]&&_0x4b3a79['joins'][_0x4df87d][_0xd5d9('0x7c')]&&_0x4b3a79[_0xd5d9('0x7a')][_0x4df87d][_0xd5d9('0x7d')]){_0x54c113[_0x4b3a79[_0xd5d9('0x7a')][_0x4df87d][_0xd5d9('0x34')]](_0x4b3a79['joins'][_0x4df87d][_0xd5d9('0x7c')],null,util[_0xd5d9('0x75')](_0xd5d9('0x7e'),_0x4b3a79[_0xd5d9('0x71')],_0x4b3a79[_0xd5d9('0x7a')][_0x4df87d]['parentKey'],_0x4b3a79[_0xd5d9('0x7a')][_0x4df87d][_0xd5d9('0x7c')],_0x4b3a79[_0xd5d9('0x7a')][_0x4df87d][_0xd5d9('0x7d')]));}}}if(_0x4b3a79['conditions']){_0x4b3a79['conditions']=JSON[_0xd5d9('0x7b')](_0x4b3a79[_0xd5d9('0x80')]);_0x54c113['where'](_0x19459d(_0x4b3a79['conditions'][_0xd5d9('0x68')]));}_0x384e96=_0x54c113['clone']();_0x54c113[_0xd5d9('0x1f')](_0x400180);_0x54c113[_0xd5d9('0x22')](0x0);return;}})[_0xd5d9('0x2a')](function(){if(_0x481811[_0xd5d9('0x91')]===_0xd5d9('0x92')){return null;}var _0x453ce0=_[_0xd5d9('0x43')](_0x481811,{'name':_0x481811[_0xd5d9('0x93')]||_0x481811[_0xd5d9('0x2d')]||_0x4b3a79['name'],'basename':_0x2015b6,'savename':util[_0xd5d9('0x75')](_0xd5d9('0x94'),_0x481811[_0xd5d9('0x2d')]||_0x4b3a79['name'],require('randomstring')[_0xd5d9('0x95')](0x4),_0x481811[_0xd5d9('0x91')]||_0xd5d9('0x96')),'reportId':_0x4b3a79['id'],'reportType':_0xd5d9('0x97')});return db[_0xd5d9('0x98')]['create'](_0x453ce0,{'raw':!![]});})['then'](function(_0x503727){if(_0x4b3a79['table']===_0xd5d9('0x99')){_0x384e96[_0xd5d9('0x3f')](_0x4b3a79[_0xd5d9('0x71')]+_0xd5d9('0x9a'),_0x481811[_0xd5d9('0x9b')],_0x481811[_0xd5d9('0x9c')]);}else{_0x384e96[_0xd5d9('0x3f')](_0x4b3a79[_0xd5d9('0x71')]+_0xd5d9('0x9d'),_0x481811[_0xd5d9('0x9b')],_0x481811[_0xd5d9('0x9c')]);}if(_0x503727){logger['info'](_0xd5d9('0x9e'),_0x384e96[_0xd5d9('0x83')]());require(_0xd5d9('0x9f'))[_0xd5d9('0xa0')](path[_0xd5d9('0x56')](__dirname,_0xd5d9('0xa1'),_0x503727[_0xd5d9('0x91')]),[_0x503727['id'],_0x384e96[_0xd5d9('0x83')](),path[_0xd5d9('0x56')](__dirname,_0xd5d9('0xa2'),_0x503727[_0xd5d9('0xa3')]),_0x2015b6]);return _0x503727;}else{var _0x3c1bd7=squel['select']();_0x3c1bd7[_0xd5d9('0x70')]('('+_0x384e96[_0xd5d9('0x83')]()+')',_0xd5d9('0xa4'));_0x3c1bd7[_0xd5d9('0x69')]('COUNT(*)','count');_0x384e96['limit'](_0x481811[_0xd5d9('0x1f')]||_0x400180);_0x384e96[_0xd5d9('0x22')](_0x481811[_0xd5d9('0x22')]||0x0);return dbH['sequelize'][_0xd5d9('0x37')](_0x3c1bd7[_0xd5d9('0x83')](),{'type':dbH[_0xd5d9('0x84')][_0xd5d9('0x85')]['SELECT']})[_0xd5d9('0x2a')](function(_0x4955c7){if(!_0x4955c7['length']){_0x3e13ae=0x0;}else{_0x3e13ae=_0x4955c7[0x0][_0xd5d9('0x21')]||0x0;}return dbH[_0xd5d9('0x84')][_0xd5d9('0x37')](_0x384e96[_0xd5d9('0x83')](),{'type':dbH['sequelize'][_0xd5d9('0x85')][_0xd5d9('0x86')]});})[_0xd5d9('0x2a')](function(_0x22708c){return{'rows':_0x22708c||[],'count':_0x3e13ae};});}});}exports[_0xd5d9('0xa5')]=function(_0x44f8e,_0x1ec789){return runReport(_0x44f8e['params'],_0x44f8e['query'],_0x44f8e['options'])['then'](respondWithResult(_0x1ec789,null))[_0xd5d9('0x48')](handleError(_0x1ec789,null));};exports[_0xd5d9('0xa6')]=runReport;exports[_0xd5d9('0x37')]=function(_0x3a272a,_0x1db41a){var _0x500744=0xa;var _0x2d2f64=[_0xd5d9('0x56'),_0xd5d9('0x57'),_0xd5d9('0x58'),_0xd5d9('0x87')];var _0xeaf912={'SUM':_0xd5d9('0x59'),'COUNT':_0xd5d9('0x88'),'COUNT DISTINCT':_0xd5d9('0x89'),'MAX':'MAX(%s)','MIN':_0xd5d9('0x5a'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xd5d9('0x5c'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xd5d9('0x5e')};var _0x45736a={'SEC_TO_TIME':_0xd5d9('0x5f'),'DATE':_0xd5d9('0x60'),'HOUR':_0xd5d9('0x61'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xd5d9('0x63')};var _0x2de831=function(_0x361a9e){return!_['includes'](['IS\x20NULL',_0xd5d9('0x8b'),_0xd5d9('0x8c'),_0xd5d9('0x66')],_0x361a9e);};var _0x1c3bf9=function(_0x4f8d7e){if(!_0x4f8d7e||!_0x4f8d7e[_0xd5d9('0x67')][_0xd5d9('0x3b')]){return'';}for(var _0x226cca='(',_0x483cb4=0x0;_0x483cb4<_0x4f8d7e['rules'][_0xd5d9('0x3b')];_0x483cb4+=0x1){_0x483cb4>0x0&&(_0x226cca+='\x20'+_0x4f8d7e[_0xd5d9('0x8d')]+'\x20');_0x226cca+=_0x4f8d7e[_0xd5d9('0x67')][_0x483cb4][_0xd5d9('0x68')]?_0x1c3bf9(_0x4f8d7e[_0xd5d9('0x67')][_0x483cb4][_0xd5d9('0x68')]):_0x4f8d7e[_0xd5d9('0x67')][_0x483cb4][_0xd5d9('0x69')]+'\x20'+_0x4f8d7e[_0xd5d9('0x67')][_0x483cb4][_0xd5d9('0x6a')]+(_0x2de831(_0x4f8d7e[_0xd5d9('0x67')][_0x483cb4][_0xd5d9('0x6a')])?'\x20'+_0x4f8d7e['rules'][_0x483cb4]['value']:'');}return _0x226cca+')';};var _0x26bb95={'where':{'id':_0x3a272a['params']['id']}},_0x198541,_0x4a71f3,_0x26433d,_0x3d4be6,_0x3f0a75;_0x26bb95=_['merge']({},_0x26bb95,_0x3a272a['options']);return db[_0xd5d9('0x31')][_0xd5d9('0x4d')](_0x26bb95)[_0xd5d9('0x2a')](function(_0x15b5db){if(_0x15b5db){_0x198541=_0x15b5db;return _0x15b5db[_0xd5d9('0x6b')]();}return null;})['then'](function(_0x5df26f){if(_0x5df26f){if(!_0x5df26f['length']){throw new db[(_0xd5d9('0x6c'))][(_0xd5d9('0x6d'))](_0xd5d9('0x8f'),0x193);}_0x4a71f3=_0x5df26f;return db['AnalyticMetric'][_0xd5d9('0x46')]({'raw':!![]});}return null;})['then'](function(_0x471d3b){if(_0x471d3b){_0x26433d=_[_0xd5d9('0x6e')](_0x471d3b,'id');var _0x48bc67;var _0x2c3025=squel['select']();_0x2c3025['from'](_0x198541[_0xd5d9('0x71')]);for(var _0x451954=0x0;_0x451954<_0x4a71f3['length'];_0x451954+=0x1){_0x48bc67=_0x4a71f3[_0x451954][_0xd5d9('0x72')]?_0x26433d[_0x4a71f3[_0x451954][_0xd5d9('0x72')]][_0xd5d9('0x73')]:_0x4a71f3[_0x451954][_0xd5d9('0x69')];_0x48bc67=_0x4a71f3[_0x451954]['function']?_['replace'](_0xeaf912[_0x4a71f3[_0x451954][_0xd5d9('0x74')]],'%s',_0x48bc67):_0x48bc67;_0x48bc67=_0x4a71f3[_0x451954][_0xd5d9('0x75')]?_[_0xd5d9('0x76')](_0x45736a[_0x4a71f3[_0x451954][_0xd5d9('0x75')]],'%s',_0x48bc67):_0x48bc67;if(_0x4a71f3[_0x451954][_0xd5d9('0x90')]){_0x2c3025[_0xd5d9('0x68')](_0x48bc67);}_0x4a71f3[_0x451954][_0xd5d9('0x77')]&&_0x2c3025[_0xd5d9('0x3d')](_0x48bc67,_0x4a71f3[_0x451954][_0xd5d9('0x77')]===_0xd5d9('0x78')?![]:!![]);_0x2c3025[_0xd5d9('0x69')](_0x48bc67,_0x4a71f3[_0x451954][_0xd5d9('0x79')]||_0x48bc67);}if(_0x198541[_0xd5d9('0x7a')]){_0x198541[_0xd5d9('0x7a')]=JSON[_0xd5d9('0x7b')](_0x198541[_0xd5d9('0x7a')]);for(var _0x504cd2=0x0;_0x504cd2<_0x198541['joins']['length'];_0x504cd2+=0x1){if(_0x198541[_0xd5d9('0x7a')][_0x504cd2][_0xd5d9('0x34')]&&_[_0xd5d9('0x64')](_0x2d2f64,_0x198541['joins'][_0x504cd2]['type'])&&_0x198541[_0xd5d9('0x7a')][_0x504cd2][_0xd5d9('0x7f')]&&_0x198541[_0xd5d9('0x7a')][_0x504cd2][_0xd5d9('0x7c')]&&_0x198541[_0xd5d9('0x7a')][_0x504cd2][_0xd5d9('0x7d')]){_0x2c3025[_0x198541['joins'][_0x504cd2][_0xd5d9('0x34')]](_0x198541[_0xd5d9('0x7a')][_0x504cd2][_0xd5d9('0x7c')],null,util[_0xd5d9('0x75')](_0xd5d9('0x7e'),_0x198541['table'],_0x198541[_0xd5d9('0x7a')][_0x504cd2][_0xd5d9('0x7f')],_0x198541[_0xd5d9('0x7a')][_0x504cd2]['foreignTable'],_0x198541[_0xd5d9('0x7a')][_0x504cd2][_0xd5d9('0x7d')]));}}}if(_0x198541['conditions']){_0x198541[_0xd5d9('0x80')]=JSON[_0xd5d9('0x7b')](_0x198541[_0xd5d9('0x80')]);_0x2c3025['where'](_0x1c3bf9(_0x198541[_0xd5d9('0x80')][_0xd5d9('0x68')]));}_0x3f0a75=_0x2c3025[_0xd5d9('0xa7')]();_0x2c3025[_0xd5d9('0x1f')](_0x500744);_0x2c3025[_0xd5d9('0x22')](0x0);logger[_0xd5d9('0x81')](_0xd5d9('0x82'),_0x2c3025['toString']());return dbH[_0xd5d9('0x84')][_0xd5d9('0x37')](_0x2c3025[_0xd5d9('0x83')](),{'type':dbH[_0xd5d9('0x84')][_0xd5d9('0x85')][_0xd5d9('0x86')]});}})[_0xd5d9('0x2a')](function(){return{'sql':_0x3f0a75[_0xd5d9('0x83')]()};})[_0xd5d9('0x2a')](respondWithResult(_0x1db41a,null))[_0xd5d9('0x48')](handleError(_0x1db41a,null));};
\ No newline at end of file
index 036c687..b348667 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f3d=['request-promise','path','rimraf','./analyticCustomReport.attributes','define','AnalyticCustomReport','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x4cd1d2,_0x2d6009){var _0x28a01e=function(_0x27a701){while(--_0x27a701){_0x4cd1d2['push'](_0x4cd1d2['shift']());}};_0x28a01e(++_0x2d6009);}(_0x3f3d,0x11a));var _0xd3f3=function(_0x56a7dd,_0x3fd9ae){_0x56a7dd=_0x56a7dd-0x0;var _0xc7b980=_0x3f3d[_0x56a7dd];return _0xc7b980;};'use strict';var _=require(_0xd3f3('0x0'));var util=require(_0xd3f3('0x1'));var logger=require(_0xd3f3('0x2'))(_0xd3f3('0x3'));var moment=require(_0xd3f3('0x4'));var BPromise=require(_0xd3f3('0x5'));var rp=require(_0xd3f3('0x6'));var fs=require('fs');var path=require(_0xd3f3('0x7'));var rimraf=require(_0xd3f3('0x8'));var config=require('../../config/environment');var attributes=require(_0xd3f3('0x9'));module['exports']=function(_0x460f85,_0x857212){return _0x460f85[_0xd3f3('0xa')](_0xd3f3('0xb'),attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcc06=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes','exports','define','analytics_custom_reports','lodash'];(function(_0x273f53,_0x36cc13){var _0x18c936=function(_0x22a28d){while(--_0x22a28d){_0x273f53['push'](_0x273f53['shift']());}};_0x18c936(++_0x36cc13);}(_0xcc06,0x107));var _0x6cc0=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xcc06[_0x110c3d];return _0x226d67;};'use strict';var _=require(_0x6cc0('0x0'));var util=require('util');var logger=require(_0x6cc0('0x1'))(_0x6cc0('0x2'));var moment=require(_0x6cc0('0x3'));var BPromise=require('bluebird');var rp=require(_0x6cc0('0x4'));var fs=require('fs');var path=require(_0x6cc0('0x5'));var rimraf=require(_0x6cc0('0x6'));var config=require(_0x6cc0('0x7'));var attributes=require(_0x6cc0('0x8'));module[_0x6cc0('0x9')]=function(_0x52b365,_0x263f7f){return _0x52b365[_0x6cc0('0xa')]('AnalyticCustomReport',attributes,{'tableName':_0x6cc0('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 12c10d7..7c2a08b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2735=['code','message','result','catch','lodash','util','bluebird','../../mysqldb','../../config/utils','jayson/promise','client','then','info','AnalyticCustomReport,\x20%s,\x20%s','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x236815,_0x2d5f45){var _0x7dc87f=function(_0x472116){while(--_0x472116){_0x236815['push'](_0x236815['shift']());}};_0x7dc87f(++_0x2d5f45);}(_0x2735,0x70));var _0x5273=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x2735[_0x164eca];return _0x2ce562;};'use strict';var _=require(_0x5273('0x0'));var util=require(_0x5273('0x1'));var moment=require('moment');var BPromise=require(_0x5273('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5273('0x3'))['db'];var utils=require(_0x5273('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x5273('0x5'));var client=jayson[_0x5273('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x444d57,_0x6fb408,_0x5577dd){return new BPromise(function(_0x53fe5c,_0x12df25){return client['request'](_0x444d57,_0x5577dd)[_0x5273('0x7')](function(_0x4d5707){logger[_0x5273('0x8')](_0x5273('0x9'),_0x6fb408,'request\x20sent');logger['debug'](_0x5273('0xa'),_0x6fb408,_0x5273('0xb'),JSON[_0x5273('0xc')](_0x4d5707));if(_0x4d5707[_0x5273('0xd')]){if(_0x4d5707[_0x5273('0xd')][_0x5273('0xe')]===0x1f4){logger[_0x5273('0xd')](_0x5273('0x9'),_0x6fb408,_0x4d5707[_0x5273('0xd')][_0x5273('0xf')]);return _0x12df25(_0x4d5707[_0x5273('0xd')][_0x5273('0xf')]);}logger[_0x5273('0xd')](_0x5273('0x9'),_0x6fb408,_0x4d5707[_0x5273('0xd')][_0x5273('0xf')]);return _0x53fe5c(_0x4d5707[_0x5273('0xd')]['message']);}else{logger[_0x5273('0x8')](_0x5273('0x9'),_0x6fb408,'request\x20sent');_0x53fe5c(_0x4d5707[_0x5273('0x10')][_0x5273('0xf')]);}})[_0x5273('0x11')](function(_0xfee948){logger[_0x5273('0xd')](_0x5273('0x9'),_0x6fb408,_0xfee948);_0x12df25(_0xfee948);});});}
\ No newline at end of file
+var _0x8baa=['../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','error','code','message','result','moment','randomstring','ioredis','../../mysqldb'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x8baa,0x9e));var _0xa8ba=function(_0x53cd86,_0x4309cc){_0x53cd86=_0x53cd86-0x0;var _0x36a6e5=_0x8baa[_0x53cd86];return _0x36a6e5;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xa8ba('0x0'));var BPromise=require('bluebird');var rs=require(_0xa8ba('0x1'));var fs=require('fs');var Redis=require(_0xa8ba('0x2'));var db=require(_0xa8ba('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa8ba('0x4'))(_0xa8ba('0x5'));var config=require(_0xa8ba('0x6'));var jayson=require(_0xa8ba('0x7'));var client=jayson[_0xa8ba('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x201db5,_0x34c42e,_0xcbb048){return new BPromise(function(_0x5b1090,_0x33a620){return client[_0xa8ba('0x9')](_0x201db5,_0xcbb048)['then'](function(_0x1629bf){logger[_0xa8ba('0xa')](_0xa8ba('0xb'),_0x34c42e,_0xa8ba('0xc'));logger['debug'](_0xa8ba('0xd'),_0x34c42e,_0xa8ba('0xc'),JSON['stringify'](_0x1629bf));if(_0x1629bf[_0xa8ba('0xe')]){if(_0x1629bf['error'][_0xa8ba('0xf')]===0x1f4){logger[_0xa8ba('0xe')]('AnalyticCustomReport,\x20%s,\x20%s',_0x34c42e,_0x1629bf['error'][_0xa8ba('0x10')]);return _0x33a620(_0x1629bf[_0xa8ba('0xe')][_0xa8ba('0x10')]);}logger[_0xa8ba('0xe')]('AnalyticCustomReport,\x20%s,\x20%s',_0x34c42e,_0x1629bf[_0xa8ba('0xe')][_0xa8ba('0x10')]);return _0x5b1090(_0x1629bf[_0xa8ba('0xe')]['message']);}else{logger[_0xa8ba('0xa')](_0xa8ba('0xb'),_0x34c42e,_0xa8ba('0xc'));_0x5b1090(_0x1629bf[_0xa8ba('0x11')][_0xa8ba('0x10')]);}})['catch'](function(_0x37c4a8){logger[_0xa8ba('0xe')](_0xa8ba('0xb'),_0x34c42e,_0x37c4a8);_0x33a620(_0x37c4a8);});});}
\ No newline at end of file
index 98c2735..7585ba4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d47=['preview','run','/:id/query','query','post','create','put','update','delete','destroy','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','/:id/preview'];(function(_0x58b6c7,_0x3bf35e){var _0x5f50d0=function(_0x532e10){while(--_0x532e10){_0x58b6c7['push'](_0x58b6c7['shift']());}};_0x5f50d0(++_0x3bf35e);}(_0x8d47,0xcb));var _0x78d4=function(_0x3f1cd1,_0xfe563e){_0x3f1cd1=_0x3f1cd1-0x0;var _0x3af92f=_0x8d47[_0x3f1cd1];return _0x3af92f;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x78d4('0x0'));var timeout=require(_0x78d4('0x1'));var express=require(_0x78d4('0x2'));var router=express['Router']();var fs_extra=require(_0x78d4('0x3'));var auth=require(_0x78d4('0x4'));var interaction=require(_0x78d4('0x5'));var config=require(_0x78d4('0x6'));var controller=require('./analyticCustomReport.controller');router[_0x78d4('0x7')]('/',auth['isAuthenticated'](),controller[_0x78d4('0x8')]);router[_0x78d4('0x7')](_0x78d4('0x9'),auth[_0x78d4('0xa')](),controller[_0x78d4('0xb')]);router[_0x78d4('0x7')](_0x78d4('0xc'),auth[_0x78d4('0xa')](),controller[_0x78d4('0xd')]);router[_0x78d4('0x7')]('/:id/run',auth[_0x78d4('0xa')](),controller[_0x78d4('0xe')]);router[_0x78d4('0x7')](_0x78d4('0xf'),auth['isAuthenticated'](),controller[_0x78d4('0x10')]);router[_0x78d4('0x11')]('/',auth[_0x78d4('0xa')](),controller[_0x78d4('0x12')]);router[_0x78d4('0x13')](_0x78d4('0x9'),auth[_0x78d4('0xa')](),controller[_0x78d4('0x14')]);router[_0x78d4('0x15')]('/:id',auth[_0x78d4('0xa')](),controller[_0x78d4('0x16')]);module[_0x78d4('0x17')]=router;
\ No newline at end of file
+var _0x3304=['/:id/preview','preview','/:id/run','/:id/query','query','post','create','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticCustomReport.controller','get','index','/:id','isAuthenticated','show'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3304,0x1cc));var _0x4330=function(_0x4b72ff,_0x146c53){_0x4b72ff=_0x4b72ff-0x0;var _0x19628d=_0x3304[_0x4b72ff];return _0x19628d;};'use strict';var multer=require('multer');var util=require(_0x4330('0x0'));var path=require(_0x4330('0x1'));var timeout=require(_0x4330('0x2'));var express=require(_0x4330('0x3'));var router=express[_0x4330('0x4')]();var fs_extra=require(_0x4330('0x5'));var auth=require(_0x4330('0x6'));var interaction=require(_0x4330('0x7'));var config=require(_0x4330('0x8'));var controller=require(_0x4330('0x9'));router[_0x4330('0xa')]('/',auth['isAuthenticated'](),controller[_0x4330('0xb')]);router[_0x4330('0xa')](_0x4330('0xc'),auth[_0x4330('0xd')](),controller[_0x4330('0xe')]);router[_0x4330('0xa')](_0x4330('0xf'),auth[_0x4330('0xd')](),controller[_0x4330('0x10')]);router[_0x4330('0xa')](_0x4330('0x11'),auth[_0x4330('0xd')](),controller['run']);router[_0x4330('0xa')](_0x4330('0x12'),auth[_0x4330('0xd')](),controller[_0x4330('0x13')]);router[_0x4330('0x14')]('/',auth['isAuthenticated'](),controller[_0x4330('0x15')]);router['put']('/:id',auth[_0x4330('0xd')](),controller['update']);router[_0x4330('0x16')](_0x4330('0xc'),auth[_0x4330('0xd')](),controller[_0x4330('0x17')]);module[_0x4330('0x18')]=router;
\ No newline at end of file
index d713abc..5548216 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1883=['exports','STRING','TEXT','sequelize'];(function(_0x17f6d3,_0x23e961){var _0xc39cb9=function(_0x689c0c){while(--_0x689c0c){_0x17f6d3['push'](_0x17f6d3['shift']());}};_0xc39cb9(++_0x23e961);}(_0x1883,0xab));var _0x3188=function(_0xec5c56,_0x46a233){_0xec5c56=_0xec5c56-0x0;var _0x5a85b5=_0x1883[_0xec5c56];return _0x5a85b5;};'use strict';var Sequelize=require(_0x3188('0x0'));module[_0x3188('0x1')]={'name':{'type':Sequelize[_0x3188('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x3188('0x2')]},'parent':{'type':Sequelize[_0x3188('0x2')]},'table':{'type':Sequelize[_0x3188('0x2')]},'conditions':{'type':Sequelize[_0x3188('0x3')]},'joins':{'type':Sequelize[_0x3188('0x3')]}};
\ No newline at end of file
+var _0x326f=['STRING','TEXT','sequelize'];(function(_0x1bffe0,_0x775f0a){var _0x4e9bc9=function(_0x109dd0){while(--_0x109dd0){_0x1bffe0['push'](_0x1bffe0['shift']());}};_0x4e9bc9(++_0x775f0a);}(_0x326f,0xd1));var _0xf326=function(_0x1c1f8d,_0x1ce8ff){_0x1c1f8d=_0x1c1f8d-0x0;var _0x55984e=_0x326f[_0x1c1f8d];return _0x55984e;};'use strict';var Sequelize=require(_0xf326('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xf326('0x1')]},'parent':{'type':Sequelize[_0xf326('0x1')]},'table':{'type':Sequelize[_0xf326('0x1')]},'conditions':{'type':Sequelize[_0xf326('0x2')]},'joins':{'type':Sequelize[_0xf326('0x2')]}};
\ No newline at end of file
index afef0d7..fcc00c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','get','DefaultReports','UserProfileResource','destroy','sendStatus','error','name','send','index','map','AnalyticDefaultReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','options','findAll','catch','params','intersection','includeAll','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Reports','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','left_join','right_join','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','merge','getFields','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','alias','joins','parse','foreignTable','foreignKey','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SUM(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ValidationErrorItem','DESC','parentKey','web','fullPath','%s-%s.%s','output','csv','default','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','Run\x20Query:','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','SELECT','run','runReport','cross_join','%s.%s\x20=\x20%s.%s','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x687b,0x14a));var _0xb687=function(_0x208749,_0x2b7b66){_0x208749=_0x208749-0x0;var _0x3e0042=_0x687b[_0x208749];return _0x3e0042;};'use strict';var emlformat=require(_0xb687('0x0'));var rimraf=require(_0xb687('0x1'));var zipdir=require(_0xb687('0x2'));var jsonpatch=require(_0xb687('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb687('0x4'));var Mustache=require(_0xb687('0x5'));var util=require(_0xb687('0x6'));var path=require(_0xb687('0x7'));var sox=require(_0xb687('0x8'));var csv=require(_0xb687('0x9'));var ejs=require(_0xb687('0xa'));var fs=require('fs');var fs_extra=require(_0xb687('0xb'));var _=require(_0xb687('0xc'));var squel=require(_0xb687('0xd'));var crypto=require('crypto');var jsforce=require(_0xb687('0xe'));var deskjs=require(_0xb687('0xf'));var toCsv=require('to-csv');var querystring=require(_0xb687('0x10'));var Papa=require(_0xb687('0x11'));var Redis=require(_0xb687('0x12'));var authService=require(_0xb687('0x13'));var qs=require(_0xb687('0x14'));var as=require(_0xb687('0x15'));var hardwareService=require(_0xb687('0x16'));var logger=require(_0xb687('0x17'))(_0xb687('0x18'));var utils=require('../../config/utils');var config=require(_0xb687('0x19'));var licenseUtil=require(_0xb687('0x1a'));var db=require(_0xb687('0x1b'))['db'];var dbH=require(_0xb687('0x1b'))['dbH'];function respondWithStatusCode(_0x4c97ed,_0x3e85b3){_0x3e85b3=_0x3e85b3||0xcc;return function(_0x155ebe){if(_0x155ebe){return _0x4c97ed['sendStatus'](_0x3e85b3);}return _0x4c97ed[_0xb687('0x1c')](_0x3e85b3)[_0xb687('0x1d')]();};}function respondWithResult(_0x1f1f35,_0x30d502){_0x30d502=_0x30d502||0xc8;return function(_0x838dd4){if(_0x838dd4){return _0x1f1f35[_0xb687('0x1c')](_0x30d502)[_0xb687('0x1e')](_0x838dd4);}};}function respondWithFilteredResult(_0x141375,_0x263085){return function(_0x2c7a18){if(_0x2c7a18){var _0x25124a=typeof _0x263085[_0xb687('0x1f')]==='undefined'&&typeof _0x263085[_0xb687('0x20')]===_0xb687('0x21');var _0x30d370=_0x2c7a18['count'];var _0x48958d=_0x25124a?0x0:_0x263085[_0xb687('0x1f')];var _0x3a10ef=_0x25124a?_0x2c7a18[_0xb687('0x22')]:_0x263085['offset']+_0x263085[_0xb687('0x20')];var _0x481f1d;if(_0x3a10ef>=_0x30d370){_0x3a10ef=_0x30d370;_0x481f1d=0xc8;}else{_0x481f1d=0xce;}_0x141375[_0xb687('0x1c')](_0x481f1d);return _0x141375[_0xb687('0x23')](_0xb687('0x24'),_0x48958d+'-'+_0x3a10ef+'/'+_0x30d370)[_0xb687('0x1e')](_0x2c7a18);}return null;};}function patchUpdates(_0x49d5a1){return function(_0x3a73d5){try{jsonpatch['apply'](_0x3a73d5,_0x49d5a1,!![]);}catch(_0x335541){return BPromise[_0xb687('0x25')](_0x335541);}return _0x3a73d5[_0xb687('0x26')]();};}function saveUpdates(_0x546fde,_0x1dc06b){return function(_0x491623){if(_0x491623){return _0x491623[_0xb687('0x27')](_0x546fde)[_0xb687('0x28')](function(_0xbf6c58){return _0xbf6c58;});}return null;};}function removeEntity(_0x38866c,_0xf48ba4){return function(_0x2f0a0a){if(_0x2f0a0a){return _0x2f0a0a['destroy']()[_0xb687('0x28')](function(){var _0x129347=_0x2f0a0a[_0xb687('0x29')]({'plain':!![]});var _0x1a0261=_0xb687('0x2a');return db[_0xb687('0x2b')][_0xb687('0x2c')]({'where':{'type':_0x1a0261,'resourceId':_0x129347['id']}})[_0xb687('0x28')](function(){return _0x2f0a0a;});})[_0xb687('0x28')](function(){_0x38866c[_0xb687('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3712cf,_0x192966){return function(_0x392721){if(!_0x392721){_0x3712cf[_0xb687('0x2d')](0x194);}return _0x392721;};}function handleError(_0x2e5c8d,_0x173c58){_0x173c58=_0x173c58||0x1f4;return function(_0x4e9a06){logger[_0xb687('0x2e')](_0x4e9a06['stack']);if(_0x4e9a06[_0xb687('0x2f')]){delete _0x4e9a06[_0xb687('0x2f')];}_0x2e5c8d[_0xb687('0x1c')](_0x173c58)[_0xb687('0x30')](_0x4e9a06);};}exports[_0xb687('0x31')]=function(_0x43d20d,_0xf1f0dd){var _0x556815={},_0x3da2be={},_0xe3428f={'count':0x0,'rows':[]};var _0x3c08ab=_[_0xb687('0x32')](db[_0xb687('0x33')][_0xb687('0x34')],function(_0x44be88){return{'name':_0x44be88[_0xb687('0x35')],'type':_0x44be88[_0xb687('0x36')][_0xb687('0x37')]};});_0x3da2be[_0xb687('0x38')]=_['map'](_0x3c08ab,'name');_0x3da2be[_0xb687('0x39')]=_[_0xb687('0x3a')](_0x43d20d[_0xb687('0x39')]);_0x3da2be[_0xb687('0x3b')]=_['intersection'](_0x3da2be['model'],_0x3da2be[_0xb687('0x39')]);_0x556815[_0xb687('0x3c')]=_['intersection'](_0x3da2be[_0xb687('0x38')],qs[_0xb687('0x3d')](_0x43d20d['query'][_0xb687('0x3d')]));_0x556815['attributes']=_0x556815[_0xb687('0x3c')][_0xb687('0x3e')]?_0x556815[_0xb687('0x3c')]:_0x3da2be[_0xb687('0x38')];if(!_0x43d20d[_0xb687('0x39')][_0xb687('0x3f')]('nolimit')){_0x556815[_0xb687('0x20')]=qs[_0xb687('0x20')](_0x43d20d[_0xb687('0x39')][_0xb687('0x20')]);_0x556815['offset']=qs[_0xb687('0x1f')](_0x43d20d[_0xb687('0x39')][_0xb687('0x1f')]);}_0x556815[_0xb687('0x40')]=qs[_0xb687('0x41')](_0x43d20d['query'][_0xb687('0x41')]);_0x556815[_0xb687('0x42')]=qs[_0xb687('0x3b')](_[_0xb687('0x43')](_0x43d20d[_0xb687('0x39')],_0x3da2be[_0xb687('0x3b')]),_0x3c08ab);if(_0x43d20d['query']['filter']){_0x556815[_0xb687('0x42')]=_['merge'](_0x556815[_0xb687('0x42')],{'$or':_[_0xb687('0x32')](_0x3c08ab,function(_0x48d3b1){if(_0x48d3b1[_0xb687('0x36')]!==_0xb687('0x44')){var _0x57776b={};_0x57776b[_0x48d3b1[_0xb687('0x2f')]]={'$like':'%'+_0x43d20d[_0xb687('0x39')][_0xb687('0x45')]+'%'};return _0x57776b;}})});}_0x556815=_['merge']({},_0x556815,_0x43d20d[_0xb687('0x46')]);var _0x9cffb2={'where':_0x556815[_0xb687('0x42')]};return db[_0xb687('0x33')][_0xb687('0x22')](_0x9cffb2)[_0xb687('0x28')](function(_0x21b9ef){_0xe3428f['count']=_0x21b9ef;if(_0x43d20d[_0xb687('0x39')]['includeAll']){_0x556815['include']=[{'all':!![]}];}return db[_0xb687('0x33')][_0xb687('0x47')](_0x556815);})['then'](function(_0x19a21c){_0xe3428f['rows']=_0x19a21c;return _0xe3428f;})[_0xb687('0x28')](respondWithFilteredResult(_0xf1f0dd,_0x556815))[_0xb687('0x48')](handleError(_0xf1f0dd,null));};exports['show']=function(_0x4cb7a0,_0x3a8509){var _0x5d9cb0={'raw':!![],'where':{'id':_0x4cb7a0[_0xb687('0x49')]['id']}},_0x247c67={};_0x247c67[_0xb687('0x38')]=_[_0xb687('0x3a')](db[_0xb687('0x33')][_0xb687('0x34')]);_0x247c67[_0xb687('0x39')]=_[_0xb687('0x3a')](_0x4cb7a0[_0xb687('0x39')]);_0x247c67[_0xb687('0x3b')]=_[_0xb687('0x4a')](_0x247c67[_0xb687('0x38')],_0x247c67['query']);_0x5d9cb0[_0xb687('0x3c')]=_['intersection'](_0x247c67[_0xb687('0x38')],qs[_0xb687('0x3d')](_0x4cb7a0[_0xb687('0x39')][_0xb687('0x3d')]));_0x5d9cb0[_0xb687('0x3c')]=_0x5d9cb0[_0xb687('0x3c')]['length']?_0x5d9cb0['attributes']:_0x247c67[_0xb687('0x38')];if(_0x4cb7a0[_0xb687('0x39')][_0xb687('0x4b')]){_0x5d9cb0[_0xb687('0x4c')]=[{'all':!![]}];}_0x5d9cb0=_['merge']({},_0x5d9cb0,_0x4cb7a0[_0xb687('0x46')]);return db[_0xb687('0x33')][_0xb687('0x4d')](_0x5d9cb0)[_0xb687('0x28')](handleEntityNotFound(_0x3a8509,null))['then'](respondWithResult(_0x3a8509,null))[_0xb687('0x48')](handleError(_0x3a8509,null));};exports[_0xb687('0x4e')]=function(_0x162b19,_0x401b99){return db['AnalyticDefaultReport']['create'](_0x162b19[_0xb687('0x4f')],{})[_0xb687('0x28')](function(_0x42b61a){var _0x508862=_0x162b19['user'][_0xb687('0x29')]({'plain':!![]});if(!_0x508862)throw new Error(_0xb687('0x50'));if(_0x508862[_0xb687('0x51')]===_0xb687('0x52')){var _0x34205d=_0x42b61a[_0xb687('0x29')]({'plain':!![]});var _0x602864=_0xb687('0x53');return db['UserProfileSection'][_0xb687('0x4d')]({'where':{'name':_0x602864,'userProfileId':_0x508862[_0xb687('0x54')]},'raw':!![]})[_0xb687('0x28')](function(_0x4f5784){if(_0x4f5784&&_0x4f5784['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x34205d[_0xb687('0x2f')],'resourceId':_0x34205d['id'],'type':_0xb687('0x2a'),'sectionId':_0x4f5784['id']},{})[_0xb687('0x28')](function(){return _0x42b61a;});}else{return _0x42b61a;}})[_0xb687('0x48')](function(_0x1ddfd4){logger[_0xb687('0x2e')](_0xb687('0x55'),_0x1ddfd4);throw _0x1ddfd4;});}return _0x42b61a;})[_0xb687('0x28')](respondWithResult(_0x401b99,0xc9))[_0xb687('0x48')](handleError(_0x401b99,null));};exports[_0xb687('0x27')]=function(_0x128264,_0x166900){if(_0x128264[_0xb687('0x4f')]['id']){delete _0x128264[_0xb687('0x4f')]['id'];}return db[_0xb687('0x33')][_0xb687('0x4d')]({'where':{'id':_0x128264[_0xb687('0x49')]['id']}})['then'](handleEntityNotFound(_0x166900,null))['then'](saveUpdates(_0x128264[_0xb687('0x4f')],null))[_0xb687('0x28')](respondWithResult(_0x166900,null))[_0xb687('0x48')](handleError(_0x166900,null));};exports[_0xb687('0x2c')]=function(_0x4e5642,_0xfa8790){return db[_0xb687('0x33')]['find']({'where':{'id':_0x4e5642[_0xb687('0x49')]['id']}})['then'](handleEntityNotFound(_0xfa8790,null))[_0xb687('0x28')](removeEntity(_0xfa8790,null))[_0xb687('0x48')](handleError(_0xfa8790,null));};exports['preview']=function(_0x4fb188,_0x13ad6a){var _0x4ab9c5=0xa;var _0x5ea8fd=[_0xb687('0x56'),_0xb687('0x57'),_0xb687('0x58'),'cross_join'];var _0x25e140={'SUM':'SUM(%s)','COUNT':_0xb687('0x59'),'COUNT DISTINCT':_0xb687('0x5a'),'MAX':_0xb687('0x5b'),'MIN':_0xb687('0x5c'),'AVG':_0xb687('0x5d'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xb687('0x5e')};var _0x58ec8b={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':'HOUR(%s)','ROUND':_0xb687('0x5f'),'UNIX_TIMESTAMP':_0xb687('0x60')};var _0xbc3a94=function(_0x4bc18f){return!_[_0xb687('0x61')]([_0xb687('0x62'),_0xb687('0x63'),_0xb687('0x64'),_0xb687('0x65')],_0x4bc18f);};var _0x17505c=function(_0x132e3a){if(!_0x132e3a||!_0x132e3a['rules']['length']){return'';}for(var _0x2714c6='(',_0x4906df=0x0;_0x4906df<_0x132e3a[_0xb687('0x66')][_0xb687('0x3e')];_0x4906df+=0x1){_0x4906df>0x0&&(_0x2714c6+='\x20'+_0x132e3a[_0xb687('0x67')]+'\x20');_0x2714c6+=_0x132e3a[_0xb687('0x66')][_0x4906df][_0xb687('0x68')]?_0x17505c(_0x132e3a['rules'][_0x4906df][_0xb687('0x68')]):_0x132e3a['rules'][_0x4906df][_0xb687('0x69')]+'\x20'+_0x132e3a[_0xb687('0x66')][_0x4906df][_0xb687('0x6a')]+(_0xbc3a94(_0x132e3a[_0xb687('0x66')][_0x4906df][_0xb687('0x6a')])?'\x20'+_0x132e3a[_0xb687('0x66')][_0x4906df][_0xb687('0x6b')]:'');}return _0x2714c6+')';};var _0x5deb7a={'where':{'id':_0x4fb188['params']['id']}},_0x28a6aa,_0x31ed20,_0x8942b7,_0x36bb4b,_0x258caf;_0x5deb7a=_[_0xb687('0x6c')]({},_0x5deb7a,_0x4fb188[_0xb687('0x46')]);return db[_0xb687('0x33')][_0xb687('0x4d')](_0x5deb7a)[_0xb687('0x28')](function(_0x15ef44){if(_0x15ef44){_0x28a6aa=_0x15ef44;return _0x15ef44[_0xb687('0x6d')]();}return null;})[_0xb687('0x28')](function(_0x177ea4){if(_0x177ea4){if(!_0x177ea4[_0xb687('0x3e')]){throw new db[(_0xb687('0x6e'))]['ValidationErrorItem'](_0xb687('0x6f'),0x193);}_0x31ed20=_0x177ea4;return db[_0xb687('0x70')][_0xb687('0x47')]({'raw':!![]});}return null;})[_0xb687('0x28')](function(_0x505f7a){if(_0x505f7a){_0x8942b7=_[_0xb687('0x71')](_0x505f7a,'id');var _0x1a6075;var _0x53b00a=squel[_0xb687('0x72')]();_0x53b00a[_0xb687('0x73')](_0x28a6aa[_0xb687('0x74')]);for(var _0x5eeb75=0x0;_0x5eeb75<_0x31ed20[_0xb687('0x3e')];_0x5eeb75+=0x1){_0x1a6075=_0x31ed20[_0x5eeb75][_0xb687('0x75')]?_0x8942b7[_0x31ed20[_0x5eeb75]['MetricId']][_0xb687('0x76')]:_0x31ed20[_0x5eeb75][_0xb687('0x69')];_0x1a6075=_0x31ed20[_0x5eeb75][_0xb687('0x77')]?_[_0xb687('0x78')](_0x25e140[_0x31ed20[_0x5eeb75]['function']],'%s',_0x1a6075):_0x1a6075;_0x1a6075=_0x31ed20[_0x5eeb75][_0xb687('0x79')]?_[_0xb687('0x78')](_0x58ec8b[_0x31ed20[_0x5eeb75]['format']],'%s',_0x1a6075):_0x1a6075;if(_0x31ed20[_0x5eeb75][_0xb687('0x7a')]){_0x53b00a[_0xb687('0x68')](_0x1a6075);}_0x31ed20[_0x5eeb75]['orderBy']&&_0x53b00a['order'](_0x1a6075,_0x31ed20[_0x5eeb75][_0xb687('0x7b')]==='DESC'?![]:!![]);_0x53b00a[_0xb687('0x69')](_0x1a6075,_0x31ed20[_0x5eeb75][_0xb687('0x7c')]||_0x1a6075);}if(_0x28a6aa[_0xb687('0x7d')]){_0x28a6aa[_0xb687('0x7d')]=JSON[_0xb687('0x7e')](_0x28a6aa[_0xb687('0x7d')]);for(var _0x229bc4=0x0;_0x229bc4<_0x28a6aa[_0xb687('0x7d')]['length'];_0x229bc4+=0x1){if(_0x28a6aa[_0xb687('0x7d')][_0x229bc4][_0xb687('0x36')]&&_[_0xb687('0x61')](_0x5ea8fd,_0x28a6aa[_0xb687('0x7d')][_0x229bc4][_0xb687('0x36')])&&_0x28a6aa[_0xb687('0x7d')][_0x229bc4]['parentKey']&&_0x28a6aa[_0xb687('0x7d')][_0x229bc4][_0xb687('0x7f')]&&_0x28a6aa['joins'][_0x229bc4][_0xb687('0x80')]){_0x53b00a[_0x28a6aa[_0xb687('0x7d')][_0x229bc4][_0xb687('0x36')]](_0x28a6aa[_0xb687('0x7d')][_0x229bc4]['foreignTable'],null,util[_0xb687('0x79')]('%s.%s\x20=\x20%s.%s',_0x28a6aa['table'],_0x28a6aa[_0xb687('0x7d')][_0x229bc4]['parentKey'],_0x28a6aa['joins'][_0x229bc4][_0xb687('0x7f')],_0x28a6aa['joins'][_0x229bc4][_0xb687('0x80')]));}}}if(_0x28a6aa[_0xb687('0x81')]){_0x28a6aa['conditions']=JSON[_0xb687('0x7e')](_0x28a6aa[_0xb687('0x81')]);_0x53b00a['where'](_0x17505c(_0x28a6aa[_0xb687('0x81')][_0xb687('0x68')]));}_0x258caf=_0x53b00a[_0xb687('0x82')]();_0x53b00a[_0xb687('0x20')](_0x4ab9c5);_0x53b00a[_0xb687('0x1f')](0x0);logger[_0xb687('0x83')](_0xb687('0x84'),_0x53b00a[_0xb687('0x85')]());return dbH[_0xb687('0x86')][_0xb687('0x39')](_0x53b00a[_0xb687('0x85')](),{'type':dbH['sequelize'][_0xb687('0x87')]['SELECT']});}})['then'](respondWithResult(_0x13ad6a,null))[_0xb687('0x48')](handleError(_0x13ad6a,null));};function runReport(_0x29e830,_0x22ebca,_0xfecb8d){var _0x3a7339=_0x22ebca['name'];var _0x59c94b=0xa;var _0x29e27e=[_0xb687('0x56'),_0xb687('0x57'),_0xb687('0x58'),'cross_join'];var _0x448d59={'SUM':_0xb687('0x88'),'COUNT':_0xb687('0x59'),'COUNT DISTINCT':_0xb687('0x5a'),'MAX':_0xb687('0x5b'),'MIN':_0xb687('0x5c'),'AVG':_0xb687('0x5d'),'GROUP_CONCAT':_0xb687('0x89'),'GROUP_CONCAT ASC':_0xb687('0x8a'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x25f5c3={'SEC_TO_TIME':_0xb687('0x8b'),'DATE':_0xb687('0x8c'),'HOUR':_0xb687('0x8d'),'ROUND':_0xb687('0x5f'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1037b1=function(_0x3bf480){return!_['includes']([_0xb687('0x62'),'IS\x20NOT\x20NULL',_0xb687('0x64'),_0xb687('0x65')],_0x3bf480);};var _0x5ec5f6=function(_0x1c683e){if(!_0x1c683e||!_0x1c683e[_0xb687('0x66')]['length']){return'';}for(var _0x231caa='(',_0x3479c5=0x0;_0x3479c5<_0x1c683e[_0xb687('0x66')][_0xb687('0x3e')];_0x3479c5+=0x1){_0x3479c5>0x0&&(_0x231caa+='\x20'+_0x1c683e[_0xb687('0x67')]+'\x20');_0x231caa+=_0x1c683e[_0xb687('0x66')][_0x3479c5]['group']?_0x5ec5f6(_0x1c683e[_0xb687('0x66')][_0x3479c5][_0xb687('0x68')]):_0x1c683e[_0xb687('0x66')][_0x3479c5][_0xb687('0x69')]+'\x20'+_0x1c683e[_0xb687('0x66')][_0x3479c5][_0xb687('0x6a')]+(_0x1037b1(_0x1c683e[_0xb687('0x66')][_0x3479c5][_0xb687('0x6a')])?'\x20'+_0x1c683e[_0xb687('0x66')][_0x3479c5][_0xb687('0x6b')]:'');}return _0x231caa+')';};var _0x290ddf={'where':{'id':_0x29e830['id']}},_0x5ee585,_0x10fb0,_0x5be566,_0x3d98e2,_0x3aa1c8;_0x290ddf=_['merge']({},_0x290ddf,_0xfecb8d);return db['AnalyticDefaultReport'][_0xb687('0x4d')](_0x290ddf)[_0xb687('0x28')](function(_0x3b4acf){if(_0x3b4acf){_0x5ee585=_0x3b4acf;return _0x3b4acf[_0xb687('0x6d')]();}return null;})[_0xb687('0x28')](function(_0x1c3de0){if(_0x1c3de0){if(!_0x1c3de0[_0xb687('0x3e')]){throw new db[(_0xb687('0x6e'))][(_0xb687('0x8e'))](_0xb687('0x6f'),0x193);}_0x10fb0=_0x1c3de0;return db[_0xb687('0x70')][_0xb687('0x47')]({'raw':!![]});}return null;})[_0xb687('0x28')](function(_0x1ea6fd){if(_0x1ea6fd){_0x5be566=_[_0xb687('0x71')](_0x1ea6fd,'id');var _0x3f45b7;var _0x508550=squel['select']();_0x508550[_0xb687('0x73')](_0x5ee585['table']);for(var _0x5f2557=0x0;_0x5f2557<_0x10fb0[_0xb687('0x3e')];_0x5f2557+=0x1){_0x3f45b7=_0x10fb0[_0x5f2557][_0xb687('0x75')]?_0x5be566[_0x10fb0[_0x5f2557]['MetricId']][_0xb687('0x76')]:_0x10fb0[_0x5f2557][_0xb687('0x69')];_0x3f45b7=_0x10fb0[_0x5f2557]['function']?_[_0xb687('0x78')](_0x448d59[_0x10fb0[_0x5f2557][_0xb687('0x77')]],'%s',_0x3f45b7):_0x3f45b7;_0x3f45b7=_0x10fb0[_0x5f2557][_0xb687('0x79')]?_[_0xb687('0x78')](_0x25f5c3[_0x10fb0[_0x5f2557][_0xb687('0x79')]],'%s',_0x3f45b7):_0x3f45b7;if(_0x10fb0[_0x5f2557][_0xb687('0x7a')]){_0x508550[_0xb687('0x68')](_0x3f45b7);}_0x10fb0[_0x5f2557][_0xb687('0x7b')]&&_0x508550[_0xb687('0x40')](_0x3f45b7,_0x10fb0[_0x5f2557]['orderBy']===_0xb687('0x8f')?![]:!![]);_0x508550[_0xb687('0x69')](_0x3f45b7,_0x10fb0[_0x5f2557]['alias']||_0x3f45b7);}if(_0x5ee585[_0xb687('0x7d')]){_0x5ee585['joins']=JSON[_0xb687('0x7e')](_0x5ee585[_0xb687('0x7d')]);for(var _0x59166c=0x0;_0x59166c<_0x5ee585[_0xb687('0x7d')][_0xb687('0x3e')];_0x59166c+=0x1){if(_0x5ee585[_0xb687('0x7d')][_0x59166c][_0xb687('0x36')]&&_[_0xb687('0x61')](_0x29e27e,_0x5ee585[_0xb687('0x7d')][_0x59166c][_0xb687('0x36')])&&_0x5ee585['joins'][_0x59166c]['parentKey']&&_0x5ee585[_0xb687('0x7d')][_0x59166c]['foreignTable']&&_0x5ee585[_0xb687('0x7d')][_0x59166c][_0xb687('0x80')]){_0x508550[_0x5ee585[_0xb687('0x7d')][_0x59166c][_0xb687('0x36')]](_0x5ee585['joins'][_0x59166c][_0xb687('0x7f')],null,util[_0xb687('0x79')]('%s.%s\x20=\x20%s.%s',_0x5ee585[_0xb687('0x74')],_0x5ee585[_0xb687('0x7d')][_0x59166c][_0xb687('0x90')],_0x5ee585[_0xb687('0x7d')][_0x59166c][_0xb687('0x7f')],_0x5ee585[_0xb687('0x7d')][_0x59166c]['foreignKey']));}}}if(_0x5ee585[_0xb687('0x81')]){_0x5ee585[_0xb687('0x81')]=JSON[_0xb687('0x7e')](_0x5ee585[_0xb687('0x81')]);_0x508550[_0xb687('0x42')](_0x5ec5f6(_0x5ee585[_0xb687('0x81')][_0xb687('0x68')]));}_0x3aa1c8=_0x508550[_0xb687('0x82')]();_0x508550[_0xb687('0x20')](_0x59c94b);_0x508550[_0xb687('0x1f')](0x0);return;}})['then'](function(){if(_0x22ebca['output']===_0xb687('0x91')){return null;}var _0x1a7cd8=_[_0xb687('0x6c')](_0x22ebca,{'name':_0x22ebca[_0xb687('0x92')]||_0x22ebca[_0xb687('0x2f')]||_0x5ee585[_0xb687('0x2f')],'basename':_0x3a7339,'savename':util[_0xb687('0x79')](_0xb687('0x93'),_0x22ebca[_0xb687('0x2f')]||_0x5ee585['name'],require('randomstring')['generate'](0x4),_0x22ebca[_0xb687('0x94')]||_0xb687('0x95')),'reportId':_0x5ee585['id'],'reportType':_0xb687('0x96')});return db[_0xb687('0x97')][_0xb687('0x4e')](_0x1a7cd8,{'raw':!![]});})[_0xb687('0x28')](function(_0x473130){if(_0x5ee585[_0xb687('0x74')]==='cdr'){_0x3aa1c8[_0xb687('0x42')](_0x5ee585[_0xb687('0x74')]+_0xb687('0x98'),_0x22ebca[_0xb687('0x99')],_0x22ebca[_0xb687('0x9a')]);}else{_0x3aa1c8[_0xb687('0x42')](_0x5ee585[_0xb687('0x74')]+_0xb687('0x9b'),_0x22ebca['startDate'],_0x22ebca[_0xb687('0x9a')]);}if(_0x473130){logger['info'](_0xb687('0x9c'),_0x3aa1c8[_0xb687('0x85')]());require('child_process')[_0xb687('0x9d')](path[_0xb687('0x56')](__dirname,_0xb687('0x9e'),_0x473130['output']),[_0x473130['id'],_0x3aa1c8[_0xb687('0x85')](),path[_0xb687('0x56')](__dirname,_0xb687('0x9f'),_0x473130[_0xb687('0xa0')]),_0x3a7339]);return _0x473130;}else{var _0x3d4596=squel[_0xb687('0x72')]();_0x3d4596[_0xb687('0x73')]('('+_0x3aa1c8['toString']()+')',_0xb687('0xa1'));_0x3d4596[_0xb687('0x69')](_0xb687('0xa2'),_0xb687('0x22'));_0x3aa1c8[_0xb687('0x20')](_0x22ebca['limit']||_0x59c94b);_0x3aa1c8[_0xb687('0x1f')](_0x22ebca[_0xb687('0x1f')]||0x0);return dbH[_0xb687('0x86')]['query'](_0x3d4596[_0xb687('0x85')](),{'type':dbH['sequelize'][_0xb687('0x87')][_0xb687('0xa3')]})['then'](function(_0x3dbbd6){if(!_0x3dbbd6[_0xb687('0x3e')]){_0x3d98e2=0x0;}else{_0x3d98e2=_0x3dbbd6[0x0][_0xb687('0x22')]||0x0;}return dbH['sequelize'][_0xb687('0x39')](_0x3aa1c8[_0xb687('0x85')](),{'type':dbH[_0xb687('0x86')][_0xb687('0x87')][_0xb687('0xa3')]});})[_0xb687('0x28')](function(_0x15e599){return{'rows':_0x15e599||[],'count':_0x3d98e2};});}});}exports[_0xb687('0xa4')]=function(_0x8f6ba0,_0x568aca){return runReport(_0x8f6ba0[_0xb687('0x49')],_0x8f6ba0[_0xb687('0x39')],_0x8f6ba0[_0xb687('0x46')])['then'](respondWithResult(_0x568aca,null))['catch'](handleError(_0x568aca,null));};exports[_0xb687('0xa5')]=runReport;exports['query']=function(_0x187810,_0x1d21ef){var _0x386d12=0xa;var _0x4dd8f4=['join',_0xb687('0x57'),_0xb687('0x58'),_0xb687('0xa6')];var _0x295795={'SUM':_0xb687('0x88'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xb687('0x5a'),'MAX':_0xb687('0x5b'),'MIN':'MIN(%s)','AVG':_0xb687('0x5d'),'GROUP_CONCAT':_0xb687('0x89'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xb687('0x5e')};var _0xe7056c={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xb687('0x8c'),'HOUR':_0xb687('0x8d'),'ROUND':_0xb687('0x5f'),'UNIX_TIMESTAMP':_0xb687('0x60')};var _0x1b1cf5=function(_0x46283c){return!_[_0xb687('0x61')](['IS\x20NULL',_0xb687('0x63'),'IS\x20EMPTY',_0xb687('0x65')],_0x46283c);};var _0x394ed6=function(_0x875169){if(!_0x875169||!_0x875169[_0xb687('0x66')]['length']){return'';}for(var _0x1ec485='(',_0x55a919=0x0;_0x55a919<_0x875169['rules'][_0xb687('0x3e')];_0x55a919+=0x1){_0x55a919>0x0&&(_0x1ec485+='\x20'+_0x875169[_0xb687('0x67')]+'\x20');_0x1ec485+=_0x875169[_0xb687('0x66')][_0x55a919]['group']?_0x394ed6(_0x875169[_0xb687('0x66')][_0x55a919][_0xb687('0x68')]):_0x875169['rules'][_0x55a919][_0xb687('0x69')]+'\x20'+_0x875169['rules'][_0x55a919][_0xb687('0x6a')]+(_0x1b1cf5(_0x875169[_0xb687('0x66')][_0x55a919]['condition'])?'\x20'+_0x875169[_0xb687('0x66')][_0x55a919]['value']:'');}return _0x1ec485+')';};var _0x2aecd5={'where':{'id':_0x187810[_0xb687('0x49')]['id']}},_0x58955e,_0x488a2a,_0x303738,_0x3904a3,_0x581338;_0x2aecd5=_['merge']({},_0x2aecd5,_0x187810[_0xb687('0x46')]);return db[_0xb687('0x33')][_0xb687('0x4d')](_0x2aecd5)['then'](function(_0xc29834){if(_0xc29834){_0x58955e=_0xc29834;return _0xc29834[_0xb687('0x6d')]();}return null;})[_0xb687('0x28')](function(_0x1f2f2b){if(_0x1f2f2b){if(!_0x1f2f2b[_0xb687('0x3e')]){throw new db[(_0xb687('0x6e'))]['ValidationErrorItem'](_0xb687('0x6f'),0x193);}_0x488a2a=_0x1f2f2b;return db[_0xb687('0x70')][_0xb687('0x47')]({'raw':!![]});}return null;})[_0xb687('0x28')](function(_0x3591e2){if(_0x3591e2){_0x303738=_['keyBy'](_0x3591e2,'id');var _0x4d0c14;var _0x200b55=squel[_0xb687('0x72')]();_0x200b55[_0xb687('0x73')](_0x58955e[_0xb687('0x74')]);for(var _0x33f4de=0x0;_0x33f4de<_0x488a2a[_0xb687('0x3e')];_0x33f4de+=0x1){_0x4d0c14=_0x488a2a[_0x33f4de][_0xb687('0x75')]?_0x303738[_0x488a2a[_0x33f4de]['MetricId']][_0xb687('0x76')]:_0x488a2a[_0x33f4de][_0xb687('0x69')];_0x4d0c14=_0x488a2a[_0x33f4de][_0xb687('0x77')]?_['replace'](_0x295795[_0x488a2a[_0x33f4de][_0xb687('0x77')]],'%s',_0x4d0c14):_0x4d0c14;_0x4d0c14=_0x488a2a[_0x33f4de][_0xb687('0x79')]?_[_0xb687('0x78')](_0xe7056c[_0x488a2a[_0x33f4de]['format']],'%s',_0x4d0c14):_0x4d0c14;if(_0x488a2a[_0x33f4de][_0xb687('0x7a')]){_0x200b55[_0xb687('0x68')](_0x4d0c14);}_0x488a2a[_0x33f4de]['orderBy']&&_0x200b55[_0xb687('0x40')](_0x4d0c14,_0x488a2a[_0x33f4de][_0xb687('0x7b')]===_0xb687('0x8f')?![]:!![]);_0x200b55[_0xb687('0x69')](_0x4d0c14,_0x488a2a[_0x33f4de]['alias']||_0x4d0c14);}if(_0x58955e[_0xb687('0x7d')]){_0x58955e[_0xb687('0x7d')]=JSON[_0xb687('0x7e')](_0x58955e[_0xb687('0x7d')]);for(var _0xcff220=0x0;_0xcff220<_0x58955e['joins'][_0xb687('0x3e')];_0xcff220+=0x1){if(_0x58955e[_0xb687('0x7d')][_0xcff220]['type']&&_[_0xb687('0x61')](_0x4dd8f4,_0x58955e[_0xb687('0x7d')][_0xcff220]['type'])&&_0x58955e[_0xb687('0x7d')][_0xcff220][_0xb687('0x90')]&&_0x58955e[_0xb687('0x7d')][_0xcff220]['foreignTable']&&_0x58955e[_0xb687('0x7d')][_0xcff220][_0xb687('0x80')]){_0x200b55[_0x58955e['joins'][_0xcff220]['type']](_0x58955e['joins'][_0xcff220][_0xb687('0x7f')],null,util['format'](_0xb687('0xa7'),_0x58955e[_0xb687('0x74')],_0x58955e[_0xb687('0x7d')][_0xcff220][_0xb687('0x90')],_0x58955e[_0xb687('0x7d')][_0xcff220]['foreignTable'],_0x58955e['joins'][_0xcff220][_0xb687('0x80')]));}}}if(_0x58955e[_0xb687('0x81')]){_0x58955e[_0xb687('0x81')]=JSON[_0xb687('0x7e')](_0x58955e[_0xb687('0x81')]);_0x200b55[_0xb687('0x42')](_0x394ed6(_0x58955e[_0xb687('0x81')]['group']));}_0x581338=_0x200b55['clone']();_0x200b55['limit'](_0x386d12);_0x200b55[_0xb687('0x1f')](0x0);logger[_0xb687('0x83')](_0xb687('0x84'),_0x200b55['toString']());return dbH['sequelize']['query'](_0x200b55[_0xb687('0x85')](),{'type':dbH['sequelize'][_0xb687('0x87')][_0xb687('0xa3')]});}})[_0xb687('0x28')](function(){return{'sql':_0x581338[_0xb687('0x85')]()};})[_0xb687('0x28')](respondWithResult(_0x1d21ef,null))[_0xb687('0x48')](handleError(_0x1d21ef,null));};
\ No newline at end of file
+var _0x6d38=['Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','select','countTable','COUNT(*)','sequelize','run','SEC_TO_TIME(%s)','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','dbH','sendStatus','status','json','offset','undefined','limit','count','Content-Range','save','update','then','get','destroy','error','stack','name','send','index','map','rawAttributes','type','key','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','AnalyticDefaultReport','findAll','rows','show','keys','fields','find','catch','create','body','user','role','Reports','autoAssociation','UserProfileResource','DefaultReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','preview','join','right_join','cross_join','SUM(%s)','COUNT(%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20EMPTY','rules','operator','group','field','condition','value','getFields','ValidationErrorItem','AnalyticMetric','keyBy','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','alias','joins','parse','parentKey','foreignTable','foreignKey','conditions','clone','debug','toString','QueryTypes','SELECT','left_join','COUNT(DISTINCT\x20%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','DESC','%s.%s\x20=\x20%s.%s','output','web','fullPath','randomstring','generate','csv','default','AnalyticExtractedReport','cdr','startDate','endDate','info'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x6d38,0x1ef));var _0x86d3=function(_0x5d4607,_0x6b5e7b){_0x5d4607=_0x5d4607-0x0;var _0x5e4a86=_0x6d38[_0x5d4607];return _0x5e4a86;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x86d3('0x0'));var zipdir=require(_0x86d3('0x1'));var jsonpatch=require(_0x86d3('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x86d3('0x3'));var Mustache=require('mustache');var util=require(_0x86d3('0x4'));var path=require(_0x86d3('0x5'));var sox=require(_0x86d3('0x6'));var csv=require('to-csv');var ejs=require(_0x86d3('0x7'));var fs=require('fs');var fs_extra=require(_0x86d3('0x8'));var _=require(_0x86d3('0x9'));var squel=require(_0x86d3('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x86d3('0xb'));var toCsv=require(_0x86d3('0xc'));var querystring=require(_0x86d3('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x86d3('0xe'));var qs=require(_0x86d3('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x86d3('0x10'))(_0x86d3('0x11'));var utils=require('../../config/utils');var config=require(_0x86d3('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x86d3('0x13'))['db'];var dbH=require(_0x86d3('0x13'))[_0x86d3('0x14')];function respondWithStatusCode(_0x26d64c,_0xe1b3d7){_0xe1b3d7=_0xe1b3d7||0xcc;return function(_0x1b8d0a){if(_0x1b8d0a){return _0x26d64c[_0x86d3('0x15')](_0xe1b3d7);}return _0x26d64c[_0x86d3('0x16')](_0xe1b3d7)['end']();};}function respondWithResult(_0x1c1ba8,_0x1f35cf){_0x1f35cf=_0x1f35cf||0xc8;return function(_0x356e7d){if(_0x356e7d){return _0x1c1ba8[_0x86d3('0x16')](_0x1f35cf)[_0x86d3('0x17')](_0x356e7d);}};}function respondWithFilteredResult(_0x34fb3b,_0x1ff008){return function(_0x44436d){if(_0x44436d){var _0x53b437=typeof _0x1ff008[_0x86d3('0x18')]===_0x86d3('0x19')&&typeof _0x1ff008[_0x86d3('0x1a')]===_0x86d3('0x19');var _0x46feec=_0x44436d[_0x86d3('0x1b')];var _0x33e459=_0x53b437?0x0:_0x1ff008[_0x86d3('0x18')];var _0x9b76f2=_0x53b437?_0x44436d['count']:_0x1ff008[_0x86d3('0x18')]+_0x1ff008['limit'];var _0x6ced9e;if(_0x9b76f2>=_0x46feec){_0x9b76f2=_0x46feec;_0x6ced9e=0xc8;}else{_0x6ced9e=0xce;}_0x34fb3b['status'](_0x6ced9e);return _0x34fb3b['set'](_0x86d3('0x1c'),_0x33e459+'-'+_0x9b76f2+'/'+_0x46feec)[_0x86d3('0x17')](_0x44436d);}return null;};}function patchUpdates(_0x988066){return function(_0x1720ae){try{jsonpatch['apply'](_0x1720ae,_0x988066,!![]);}catch(_0x2901de){return BPromise['reject'](_0x2901de);}return _0x1720ae[_0x86d3('0x1d')]();};}function saveUpdates(_0x3fdf67,_0x1ce849){return function(_0x5b990d){if(_0x5b990d){return _0x5b990d[_0x86d3('0x1e')](_0x3fdf67)[_0x86d3('0x1f')](function(_0x1fa4ac){return _0x1fa4ac;});}return null;};}function removeEntity(_0x4bf5b8,_0x58ba51){return function(_0x26262a){if(_0x26262a){return _0x26262a['destroy']()[_0x86d3('0x1f')](function(){var _0x1bea5e=_0x26262a[_0x86d3('0x20')]({'plain':!![]});var _0x3c5fe4='DefaultReports';return db['UserProfileResource'][_0x86d3('0x21')]({'where':{'type':_0x3c5fe4,'resourceId':_0x1bea5e['id']}})[_0x86d3('0x1f')](function(){return _0x26262a;});})['then'](function(){_0x4bf5b8[_0x86d3('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x42413c,_0x41e2f0){return function(_0x287b96){if(!_0x287b96){_0x42413c[_0x86d3('0x15')](0x194);}return _0x287b96;};}function handleError(_0x11a6fd,_0x14c9ff){_0x14c9ff=_0x14c9ff||0x1f4;return function(_0x1f203e){logger[_0x86d3('0x22')](_0x1f203e[_0x86d3('0x23')]);if(_0x1f203e[_0x86d3('0x24')]){delete _0x1f203e[_0x86d3('0x24')];}_0x11a6fd[_0x86d3('0x16')](_0x14c9ff)[_0x86d3('0x25')](_0x1f203e);};}exports[_0x86d3('0x26')]=function(_0x5b09f6,_0x120a0c){var _0x403be3={},_0x2bda35={},_0x31cefe={'count':0x0,'rows':[]};var _0x7709f0=_[_0x86d3('0x27')](db['AnalyticDefaultReport'][_0x86d3('0x28')],function(_0x5c71df){return{'name':_0x5c71df['fieldName'],'type':_0x5c71df[_0x86d3('0x29')][_0x86d3('0x2a')]};});_0x2bda35[_0x86d3('0x2b')]=_['map'](_0x7709f0,_0x86d3('0x24'));_0x2bda35[_0x86d3('0x2c')]=_['keys'](_0x5b09f6[_0x86d3('0x2c')]);_0x2bda35[_0x86d3('0x2d')]=_[_0x86d3('0x2e')](_0x2bda35[_0x86d3('0x2b')],_0x2bda35[_0x86d3('0x2c')]);_0x403be3[_0x86d3('0x2f')]=_[_0x86d3('0x2e')](_0x2bda35[_0x86d3('0x2b')],qs['fields'](_0x5b09f6['query']['fields']));_0x403be3[_0x86d3('0x2f')]=_0x403be3['attributes'][_0x86d3('0x30')]?_0x403be3['attributes']:_0x2bda35[_0x86d3('0x2b')];if(!_0x5b09f6[_0x86d3('0x2c')][_0x86d3('0x31')](_0x86d3('0x32'))){_0x403be3[_0x86d3('0x1a')]=qs[_0x86d3('0x1a')](_0x5b09f6[_0x86d3('0x2c')]['limit']);_0x403be3[_0x86d3('0x18')]=qs[_0x86d3('0x18')](_0x5b09f6['query'][_0x86d3('0x18')]);}_0x403be3[_0x86d3('0x33')]=qs[_0x86d3('0x34')](_0x5b09f6[_0x86d3('0x2c')]['sort']);_0x403be3[_0x86d3('0x35')]=qs[_0x86d3('0x2d')](_[_0x86d3('0x36')](_0x5b09f6['query'],_0x2bda35[_0x86d3('0x2d')]),_0x7709f0);if(_0x5b09f6[_0x86d3('0x2c')][_0x86d3('0x37')]){_0x403be3[_0x86d3('0x35')]=_[_0x86d3('0x38')](_0x403be3[_0x86d3('0x35')],{'$or':_[_0x86d3('0x27')](_0x7709f0,function(_0x436065){if(_0x436065['type']!==_0x86d3('0x39')){var _0x470978={};_0x470978[_0x436065[_0x86d3('0x24')]]={'$like':'%'+_0x5b09f6[_0x86d3('0x2c')]['filter']+'%'};return _0x470978;}})});}_0x403be3=_[_0x86d3('0x38')]({},_0x403be3,_0x5b09f6[_0x86d3('0x3a')]);var _0x6f72be={'where':_0x403be3[_0x86d3('0x35')]};return db['AnalyticDefaultReport']['count'](_0x6f72be)[_0x86d3('0x1f')](function(_0x4f422b){_0x31cefe['count']=_0x4f422b;if(_0x5b09f6[_0x86d3('0x2c')][_0x86d3('0x3b')]){_0x403be3[_0x86d3('0x3c')]=[{'all':!![]}];}return db[_0x86d3('0x3d')][_0x86d3('0x3e')](_0x403be3);})['then'](function(_0x2a5f6c){_0x31cefe[_0x86d3('0x3f')]=_0x2a5f6c;return _0x31cefe;})[_0x86d3('0x1f')](respondWithFilteredResult(_0x120a0c,_0x403be3))['catch'](handleError(_0x120a0c,null));};exports[_0x86d3('0x40')]=function(_0x810d10,_0x5dfae8){var _0x369f68={'raw':!![],'where':{'id':_0x810d10['params']['id']}},_0xcf6c9e={};_0xcf6c9e['model']=_['keys'](db[_0x86d3('0x3d')][_0x86d3('0x28')]);_0xcf6c9e[_0x86d3('0x2c')]=_[_0x86d3('0x41')](_0x810d10[_0x86d3('0x2c')]);_0xcf6c9e[_0x86d3('0x2d')]=_['intersection'](_0xcf6c9e[_0x86d3('0x2b')],_0xcf6c9e[_0x86d3('0x2c')]);_0x369f68['attributes']=_[_0x86d3('0x2e')](_0xcf6c9e[_0x86d3('0x2b')],qs[_0x86d3('0x42')](_0x810d10[_0x86d3('0x2c')][_0x86d3('0x42')]));_0x369f68[_0x86d3('0x2f')]=_0x369f68['attributes'][_0x86d3('0x30')]?_0x369f68[_0x86d3('0x2f')]:_0xcf6c9e['model'];if(_0x810d10[_0x86d3('0x2c')][_0x86d3('0x3b')]){_0x369f68[_0x86d3('0x3c')]=[{'all':!![]}];}_0x369f68=_[_0x86d3('0x38')]({},_0x369f68,_0x810d10[_0x86d3('0x3a')]);return db['AnalyticDefaultReport'][_0x86d3('0x43')](_0x369f68)[_0x86d3('0x1f')](handleEntityNotFound(_0x5dfae8,null))[_0x86d3('0x1f')](respondWithResult(_0x5dfae8,null))[_0x86d3('0x44')](handleError(_0x5dfae8,null));};exports[_0x86d3('0x45')]=function(_0x7af7b3,_0x1a4345){return db[_0x86d3('0x3d')][_0x86d3('0x45')](_0x7af7b3[_0x86d3('0x46')],{})[_0x86d3('0x1f')](function(_0x1236ea){var _0x4ea940=_0x7af7b3[_0x86d3('0x47')][_0x86d3('0x20')]({'plain':!![]});if(!_0x4ea940)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4ea940[_0x86d3('0x48')]===_0x86d3('0x47')){var _0x197047=_0x1236ea[_0x86d3('0x20')]({'plain':!![]});var _0x1dcff0=_0x86d3('0x49');return db['UserProfileSection']['find']({'where':{'name':_0x1dcff0,'userProfileId':_0x4ea940['userProfileId']},'raw':!![]})['then'](function(_0x159253){if(_0x159253&&_0x159253[_0x86d3('0x4a')]===0x0){return db[_0x86d3('0x4b')][_0x86d3('0x45')]({'name':_0x197047[_0x86d3('0x24')],'resourceId':_0x197047['id'],'type':_0x86d3('0x4c'),'sectionId':_0x159253['id']},{})[_0x86d3('0x1f')](function(){return _0x1236ea;});}else{return _0x1236ea;}})['catch'](function(_0x2afb07){logger[_0x86d3('0x22')](_0x86d3('0x4d'),_0x2afb07);throw _0x2afb07;});}return _0x1236ea;})[_0x86d3('0x1f')](respondWithResult(_0x1a4345,0xc9))[_0x86d3('0x44')](handleError(_0x1a4345,null));};exports[_0x86d3('0x1e')]=function(_0x34935f,_0x4c8828){if(_0x34935f[_0x86d3('0x46')]['id']){delete _0x34935f['body']['id'];}return db[_0x86d3('0x3d')][_0x86d3('0x43')]({'where':{'id':_0x34935f[_0x86d3('0x4e')]['id']}})[_0x86d3('0x1f')](handleEntityNotFound(_0x4c8828,null))[_0x86d3('0x1f')](saveUpdates(_0x34935f['body'],null))[_0x86d3('0x1f')](respondWithResult(_0x4c8828,null))[_0x86d3('0x44')](handleError(_0x4c8828,null));};exports[_0x86d3('0x21')]=function(_0x4e10d9,_0x4ad164){return db['AnalyticDefaultReport'][_0x86d3('0x43')]({'where':{'id':_0x4e10d9['params']['id']}})[_0x86d3('0x1f')](handleEntityNotFound(_0x4ad164,null))[_0x86d3('0x1f')](removeEntity(_0x4ad164,null))[_0x86d3('0x44')](handleError(_0x4ad164,null));};exports[_0x86d3('0x4f')]=function(_0x5963bb,_0x4cd835){var _0x551806=0xa;var _0x28655a=[_0x86d3('0x50'),'left_join',_0x86d3('0x51'),_0x86d3('0x52')];var _0xa085b2={'SUM':_0x86d3('0x53'),'COUNT':_0x86d3('0x54'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x86d3('0x55'),'MIN':_0x86d3('0x56'),'AVG':_0x86d3('0x57'),'GROUP_CONCAT':_0x86d3('0x58'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x86d3('0x59')};var _0x41fad7={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x86d3('0x5a'),'HOUR':_0x86d3('0x5b'),'ROUND':_0x86d3('0x5c'),'UNIX_TIMESTAMP':_0x86d3('0x5d')};var _0x4598d4=function(_0x4029a4){return!_[_0x86d3('0x5e')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x86d3('0x5f'),'IS\x20NOT\x20EMPTY'],_0x4029a4);};var _0x528ca8=function(_0x58e4b6){if(!_0x58e4b6||!_0x58e4b6[_0x86d3('0x60')]['length']){return'';}for(var _0x254ac3='(',_0x5f2ed6=0x0;_0x5f2ed6<_0x58e4b6[_0x86d3('0x60')][_0x86d3('0x30')];_0x5f2ed6+=0x1){_0x5f2ed6>0x0&&(_0x254ac3+='\x20'+_0x58e4b6[_0x86d3('0x61')]+'\x20');_0x254ac3+=_0x58e4b6['rules'][_0x5f2ed6]['group']?_0x528ca8(_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x62')]):_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x63')]+'\x20'+_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x64')]+(_0x4598d4(_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x64')])?'\x20'+_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x65')]:'');}return _0x254ac3+')';};var _0x1e3479={'where':{'id':_0x5963bb[_0x86d3('0x4e')]['id']}},_0x265beb,_0xfaf168,_0xf0dbbb,_0x3f978c,_0x5e1835;_0x1e3479=_[_0x86d3('0x38')]({},_0x1e3479,_0x5963bb['options']);return db[_0x86d3('0x3d')][_0x86d3('0x43')](_0x1e3479)[_0x86d3('0x1f')](function(_0x52dc99){if(_0x52dc99){_0x265beb=_0x52dc99;return _0x52dc99[_0x86d3('0x66')]();}return null;})[_0x86d3('0x1f')](function(_0x45e8d9){if(_0x45e8d9){if(!_0x45e8d9[_0x86d3('0x30')]){throw new db['Sequelize'][(_0x86d3('0x67'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0xfaf168=_0x45e8d9;return db[_0x86d3('0x68')][_0x86d3('0x3e')]({'raw':!![]});}return null;})[_0x86d3('0x1f')](function(_0x2d4bc1){if(_0x2d4bc1){_0xf0dbbb=_[_0x86d3('0x69')](_0x2d4bc1,'id');var _0x56fd96;var _0x3cc1d8=squel['select']();_0x3cc1d8[_0x86d3('0x6a')](_0x265beb[_0x86d3('0x6b')]);for(var _0x5866fe=0x0;_0x5866fe<_0xfaf168[_0x86d3('0x30')];_0x5866fe+=0x1){_0x56fd96=_0xfaf168[_0x5866fe][_0x86d3('0x6c')]?_0xf0dbbb[_0xfaf168[_0x5866fe][_0x86d3('0x6c')]][_0x86d3('0x6d')]:_0xfaf168[_0x5866fe][_0x86d3('0x63')];_0x56fd96=_0xfaf168[_0x5866fe][_0x86d3('0x6e')]?_[_0x86d3('0x6f')](_0xa085b2[_0xfaf168[_0x5866fe]['function']],'%s',_0x56fd96):_0x56fd96;_0x56fd96=_0xfaf168[_0x5866fe][_0x86d3('0x70')]?_[_0x86d3('0x6f')](_0x41fad7[_0xfaf168[_0x5866fe][_0x86d3('0x70')]],'%s',_0x56fd96):_0x56fd96;if(_0xfaf168[_0x5866fe][_0x86d3('0x71')]){_0x3cc1d8[_0x86d3('0x62')](_0x56fd96);}_0xfaf168[_0x5866fe]['orderBy']&&_0x3cc1d8[_0x86d3('0x33')](_0x56fd96,_0xfaf168[_0x5866fe][_0x86d3('0x72')]==='DESC'?![]:!![]);_0x3cc1d8[_0x86d3('0x63')](_0x56fd96,_0xfaf168[_0x5866fe][_0x86d3('0x73')]||_0x56fd96);}if(_0x265beb[_0x86d3('0x74')]){_0x265beb[_0x86d3('0x74')]=JSON[_0x86d3('0x75')](_0x265beb[_0x86d3('0x74')]);for(var _0x1bf5ba=0x0;_0x1bf5ba<_0x265beb[_0x86d3('0x74')][_0x86d3('0x30')];_0x1bf5ba+=0x1){if(_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x29')]&&_[_0x86d3('0x5e')](_0x28655a,_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x29')])&&_0x265beb['joins'][_0x1bf5ba][_0x86d3('0x76')]&&_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x77')]&&_0x265beb[_0x86d3('0x74')][_0x1bf5ba]['foreignKey']){_0x3cc1d8[_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x29')]](_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x77')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x265beb[_0x86d3('0x6b')],_0x265beb['joins'][_0x1bf5ba][_0x86d3('0x76')],_0x265beb['joins'][_0x1bf5ba]['foreignTable'],_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x78')]));}}}if(_0x265beb[_0x86d3('0x79')]){_0x265beb[_0x86d3('0x79')]=JSON[_0x86d3('0x75')](_0x265beb['conditions']);_0x3cc1d8[_0x86d3('0x35')](_0x528ca8(_0x265beb[_0x86d3('0x79')]['group']));}_0x5e1835=_0x3cc1d8[_0x86d3('0x7a')]();_0x3cc1d8[_0x86d3('0x1a')](_0x551806);_0x3cc1d8['offset'](0x0);logger[_0x86d3('0x7b')]('Limited\x20Query:',_0x3cc1d8[_0x86d3('0x7c')]());return dbH['sequelize']['query'](_0x3cc1d8[_0x86d3('0x7c')](),{'type':dbH['sequelize'][_0x86d3('0x7d')][_0x86d3('0x7e')]});}})[_0x86d3('0x1f')](respondWithResult(_0x4cd835,null))[_0x86d3('0x44')](handleError(_0x4cd835,null));};function runReport(_0x3193d5,_0x3a1acc,_0x268c93){var _0x3b989c=_0x3a1acc['name'];var _0x245b39=0xa;var _0x158f56=[_0x86d3('0x50'),_0x86d3('0x7f'),_0x86d3('0x51'),'cross_join'];var _0x3d8b35={'SUM':_0x86d3('0x53'),'COUNT':_0x86d3('0x54'),'COUNT DISTINCT':_0x86d3('0x80'),'MAX':_0x86d3('0x55'),'MIN':_0x86d3('0x56'),'AVG':_0x86d3('0x57'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x86d3('0x81'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0xca2e0={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0x86d3('0x5b'),'ROUND':_0x86d3('0x5c'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1b503a=function(_0x24410c){return!_[_0x86d3('0x5e')]([_0x86d3('0x82'),_0x86d3('0x83'),_0x86d3('0x5f'),_0x86d3('0x84')],_0x24410c);};var _0x5f4a38=function(_0x593b85){if(!_0x593b85||!_0x593b85[_0x86d3('0x60')][_0x86d3('0x30')]){return'';}for(var _0x3fac94='(',_0x28d98e=0x0;_0x28d98e<_0x593b85[_0x86d3('0x60')][_0x86d3('0x30')];_0x28d98e+=0x1){_0x28d98e>0x0&&(_0x3fac94+='\x20'+_0x593b85['operator']+'\x20');_0x3fac94+=_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x62')]?_0x5f4a38(_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x62')]):_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x63')]+'\x20'+_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x64')]+(_0x1b503a(_0x593b85[_0x86d3('0x60')][_0x28d98e]['condition'])?'\x20'+_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x65')]:'');}return _0x3fac94+')';};var _0x4b871b={'where':{'id':_0x3193d5['id']}},_0x584a57,_0x36ee46,_0x1cbc3a,_0x682a6d,_0x5004cd;_0x4b871b=_[_0x86d3('0x38')]({},_0x4b871b,_0x268c93);return db[_0x86d3('0x3d')][_0x86d3('0x43')](_0x4b871b)[_0x86d3('0x1f')](function(_0x3d3e7f){if(_0x3d3e7f){_0x584a57=_0x3d3e7f;return _0x3d3e7f['getFields']();}return null;})[_0x86d3('0x1f')](function(_0x1aaf08){if(_0x1aaf08){if(!_0x1aaf08['length']){throw new db[(_0x86d3('0x85'))][(_0x86d3('0x67'))](_0x86d3('0x86'),0x193);}_0x36ee46=_0x1aaf08;return db[_0x86d3('0x68')]['findAll']({'raw':!![]});}return null;})[_0x86d3('0x1f')](function(_0x2896e1){if(_0x2896e1){_0x1cbc3a=_[_0x86d3('0x69')](_0x2896e1,'id');var _0x18295c;var _0x44af1c=squel['select']();_0x44af1c[_0x86d3('0x6a')](_0x584a57[_0x86d3('0x6b')]);for(var _0x3582a2=0x0;_0x3582a2<_0x36ee46[_0x86d3('0x30')];_0x3582a2+=0x1){_0x18295c=_0x36ee46[_0x3582a2][_0x86d3('0x6c')]?_0x1cbc3a[_0x36ee46[_0x3582a2][_0x86d3('0x6c')]][_0x86d3('0x6d')]:_0x36ee46[_0x3582a2][_0x86d3('0x63')];_0x18295c=_0x36ee46[_0x3582a2][_0x86d3('0x6e')]?_[_0x86d3('0x6f')](_0x3d8b35[_0x36ee46[_0x3582a2]['function']],'%s',_0x18295c):_0x18295c;_0x18295c=_0x36ee46[_0x3582a2]['format']?_[_0x86d3('0x6f')](_0xca2e0[_0x36ee46[_0x3582a2][_0x86d3('0x70')]],'%s',_0x18295c):_0x18295c;if(_0x36ee46[_0x3582a2]['groupBy']){_0x44af1c[_0x86d3('0x62')](_0x18295c);}_0x36ee46[_0x3582a2][_0x86d3('0x72')]&&_0x44af1c[_0x86d3('0x33')](_0x18295c,_0x36ee46[_0x3582a2][_0x86d3('0x72')]===_0x86d3('0x87')?![]:!![]);_0x44af1c[_0x86d3('0x63')](_0x18295c,_0x36ee46[_0x3582a2][_0x86d3('0x73')]||_0x18295c);}if(_0x584a57[_0x86d3('0x74')]){_0x584a57[_0x86d3('0x74')]=JSON['parse'](_0x584a57['joins']);for(var _0x48a6d7=0x0;_0x48a6d7<_0x584a57['joins'][_0x86d3('0x30')];_0x48a6d7+=0x1){if(_0x584a57[_0x86d3('0x74')][_0x48a6d7][_0x86d3('0x29')]&&_[_0x86d3('0x5e')](_0x158f56,_0x584a57[_0x86d3('0x74')][_0x48a6d7][_0x86d3('0x29')])&&_0x584a57[_0x86d3('0x74')][_0x48a6d7]['parentKey']&&_0x584a57[_0x86d3('0x74')][_0x48a6d7][_0x86d3('0x77')]&&_0x584a57[_0x86d3('0x74')][_0x48a6d7][_0x86d3('0x78')]){_0x44af1c[_0x584a57['joins'][_0x48a6d7][_0x86d3('0x29')]](_0x584a57['joins'][_0x48a6d7][_0x86d3('0x77')],null,util[_0x86d3('0x70')](_0x86d3('0x88'),_0x584a57[_0x86d3('0x6b')],_0x584a57[_0x86d3('0x74')][_0x48a6d7]['parentKey'],_0x584a57['joins'][_0x48a6d7][_0x86d3('0x77')],_0x584a57['joins'][_0x48a6d7][_0x86d3('0x78')]));}}}if(_0x584a57['conditions']){_0x584a57[_0x86d3('0x79')]=JSON['parse'](_0x584a57['conditions']);_0x44af1c[_0x86d3('0x35')](_0x5f4a38(_0x584a57[_0x86d3('0x79')][_0x86d3('0x62')]));}_0x5004cd=_0x44af1c[_0x86d3('0x7a')]();_0x44af1c[_0x86d3('0x1a')](_0x245b39);_0x44af1c[_0x86d3('0x18')](0x0);return;}})[_0x86d3('0x1f')](function(){if(_0x3a1acc[_0x86d3('0x89')]===_0x86d3('0x8a')){return null;}var _0x120a85=_[_0x86d3('0x38')](_0x3a1acc,{'name':_0x3a1acc[_0x86d3('0x8b')]||_0x3a1acc[_0x86d3('0x24')]||_0x584a57[_0x86d3('0x24')],'basename':_0x3b989c,'savename':util[_0x86d3('0x70')]('%s-%s.%s',_0x3a1acc['name']||_0x584a57['name'],require(_0x86d3('0x8c'))[_0x86d3('0x8d')](0x4),_0x3a1acc[_0x86d3('0x89')]||_0x86d3('0x8e')),'reportId':_0x584a57['id'],'reportType':_0x86d3('0x8f')});return db[_0x86d3('0x90')][_0x86d3('0x45')](_0x120a85,{'raw':!![]});})[_0x86d3('0x1f')](function(_0x10e23d){if(_0x584a57[_0x86d3('0x6b')]===_0x86d3('0x91')){_0x5004cd['where'](_0x584a57[_0x86d3('0x6b')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x3a1acc[_0x86d3('0x92')],_0x3a1acc[_0x86d3('0x93')]);}else{_0x5004cd[_0x86d3('0x35')](_0x584a57[_0x86d3('0x6b')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x3a1acc[_0x86d3('0x92')],_0x3a1acc[_0x86d3('0x93')]);}if(_0x10e23d){logger[_0x86d3('0x94')](_0x86d3('0x95'),_0x5004cd[_0x86d3('0x7c')]());require(_0x86d3('0x96'))[_0x86d3('0x97')](path[_0x86d3('0x50')](__dirname,_0x86d3('0x98'),_0x10e23d[_0x86d3('0x89')]),[_0x10e23d['id'],_0x5004cd[_0x86d3('0x7c')](),path[_0x86d3('0x50')](__dirname,_0x86d3('0x99'),_0x10e23d[_0x86d3('0x9a')]),_0x3b989c]);return _0x10e23d;}else{var _0x428b11=squel[_0x86d3('0x9b')]();_0x428b11[_0x86d3('0x6a')]('('+_0x5004cd['toString']()+')',_0x86d3('0x9c'));_0x428b11[_0x86d3('0x63')](_0x86d3('0x9d'),_0x86d3('0x1b'));_0x5004cd['limit'](_0x3a1acc[_0x86d3('0x1a')]||_0x245b39);_0x5004cd['offset'](_0x3a1acc['offset']||0x0);return dbH[_0x86d3('0x9e')][_0x86d3('0x2c')](_0x428b11[_0x86d3('0x7c')](),{'type':dbH[_0x86d3('0x9e')][_0x86d3('0x7d')][_0x86d3('0x7e')]})[_0x86d3('0x1f')](function(_0x4777f1){if(!_0x4777f1['length']){_0x682a6d=0x0;}else{_0x682a6d=_0x4777f1[0x0]['count']||0x0;}return dbH['sequelize'][_0x86d3('0x2c')](_0x5004cd[_0x86d3('0x7c')](),{'type':dbH[_0x86d3('0x9e')]['QueryTypes'][_0x86d3('0x7e')]});})['then'](function(_0x435b8e){return{'rows':_0x435b8e||[],'count':_0x682a6d};});}});}exports[_0x86d3('0x9f')]=function(_0x73b8e6,_0x2c98e1){return runReport(_0x73b8e6['params'],_0x73b8e6[_0x86d3('0x2c')],_0x73b8e6[_0x86d3('0x3a')])[_0x86d3('0x1f')](respondWithResult(_0x2c98e1,null))['catch'](handleError(_0x2c98e1,null));};exports['runReport']=runReport;exports['query']=function(_0x458997,_0x1e3559){var _0x49a101=0xa;var _0x38d724=['join',_0x86d3('0x7f'),_0x86d3('0x51'),_0x86d3('0x52')];var _0x56ff91={'SUM':_0x86d3('0x53'),'COUNT':_0x86d3('0x54'),'COUNT DISTINCT':_0x86d3('0x80'),'MAX':_0x86d3('0x55'),'MIN':_0x86d3('0x56'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x86d3('0x58'),'GROUP_CONCAT ASC':_0x86d3('0x81'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x1f347e={'SEC_TO_TIME':_0x86d3('0xa0'),'DATE':'DATE(%s)','HOUR':_0x86d3('0x5b'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x45b210=function(_0x144e43){return!_[_0x86d3('0x5e')]([_0x86d3('0x82'),_0x86d3('0x83'),_0x86d3('0x5f'),_0x86d3('0x84')],_0x144e43);};var _0xdc7c21=function(_0x2e0397){if(!_0x2e0397||!_0x2e0397[_0x86d3('0x60')][_0x86d3('0x30')]){return'';}for(var _0x2cc617='(',_0x25339c=0x0;_0x25339c<_0x2e0397['rules'][_0x86d3('0x30')];_0x25339c+=0x1){_0x25339c>0x0&&(_0x2cc617+='\x20'+_0x2e0397[_0x86d3('0x61')]+'\x20');_0x2cc617+=_0x2e0397[_0x86d3('0x60')][_0x25339c][_0x86d3('0x62')]?_0xdc7c21(_0x2e0397[_0x86d3('0x60')][_0x25339c][_0x86d3('0x62')]):_0x2e0397['rules'][_0x25339c][_0x86d3('0x63')]+'\x20'+_0x2e0397['rules'][_0x25339c][_0x86d3('0x64')]+(_0x45b210(_0x2e0397[_0x86d3('0x60')][_0x25339c]['condition'])?'\x20'+_0x2e0397['rules'][_0x25339c][_0x86d3('0x65')]:'');}return _0x2cc617+')';};var _0x2c0070={'where':{'id':_0x458997[_0x86d3('0x4e')]['id']}},_0x31d436,_0x56e713,_0x525559,_0x3b9e1e,_0x1d8d7c;_0x2c0070=_['merge']({},_0x2c0070,_0x458997[_0x86d3('0x3a')]);return db[_0x86d3('0x3d')][_0x86d3('0x43')](_0x2c0070)[_0x86d3('0x1f')](function(_0x1f80be){if(_0x1f80be){_0x31d436=_0x1f80be;return _0x1f80be[_0x86d3('0x66')]();}return null;})[_0x86d3('0x1f')](function(_0x3dddbe){if(_0x3dddbe){if(!_0x3dddbe[_0x86d3('0x30')]){throw new db[(_0x86d3('0x85'))][(_0x86d3('0x67'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x56e713=_0x3dddbe;return db[_0x86d3('0x68')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x1d7e83){if(_0x1d7e83){_0x525559=_[_0x86d3('0x69')](_0x1d7e83,'id');var _0x5d9385;var _0x49a499=squel[_0x86d3('0x9b')]();_0x49a499[_0x86d3('0x6a')](_0x31d436[_0x86d3('0x6b')]);for(var _0x33e0a5=0x0;_0x33e0a5<_0x56e713['length'];_0x33e0a5+=0x1){_0x5d9385=_0x56e713[_0x33e0a5][_0x86d3('0x6c')]?_0x525559[_0x56e713[_0x33e0a5][_0x86d3('0x6c')]][_0x86d3('0x6d')]:_0x56e713[_0x33e0a5][_0x86d3('0x63')];_0x5d9385=_0x56e713[_0x33e0a5][_0x86d3('0x6e')]?_['replace'](_0x56ff91[_0x56e713[_0x33e0a5][_0x86d3('0x6e')]],'%s',_0x5d9385):_0x5d9385;_0x5d9385=_0x56e713[_0x33e0a5][_0x86d3('0x70')]?_[_0x86d3('0x6f')](_0x1f347e[_0x56e713[_0x33e0a5]['format']],'%s',_0x5d9385):_0x5d9385;if(_0x56e713[_0x33e0a5][_0x86d3('0x71')]){_0x49a499['group'](_0x5d9385);}_0x56e713[_0x33e0a5][_0x86d3('0x72')]&&_0x49a499[_0x86d3('0x33')](_0x5d9385,_0x56e713[_0x33e0a5]['orderBy']===_0x86d3('0x87')?![]:!![]);_0x49a499[_0x86d3('0x63')](_0x5d9385,_0x56e713[_0x33e0a5][_0x86d3('0x73')]||_0x5d9385);}if(_0x31d436[_0x86d3('0x74')]){_0x31d436[_0x86d3('0x74')]=JSON[_0x86d3('0x75')](_0x31d436['joins']);for(var _0x10af91=0x0;_0x10af91<_0x31d436['joins'][_0x86d3('0x30')];_0x10af91+=0x1){if(_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x29')]&&_[_0x86d3('0x5e')](_0x38d724,_0x31d436['joins'][_0x10af91][_0x86d3('0x29')])&&_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x76')]&&_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x77')]&&_0x31d436[_0x86d3('0x74')][_0x10af91]['foreignKey']){_0x49a499[_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x29')]](_0x31d436['joins'][_0x10af91]['foreignTable'],null,util[_0x86d3('0x70')]('%s.%s\x20=\x20%s.%s',_0x31d436['table'],_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x76')],_0x31d436[_0x86d3('0x74')][_0x10af91]['foreignTable'],_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x78')]));}}}if(_0x31d436[_0x86d3('0x79')]){_0x31d436[_0x86d3('0x79')]=JSON[_0x86d3('0x75')](_0x31d436['conditions']);_0x49a499[_0x86d3('0x35')](_0xdc7c21(_0x31d436[_0x86d3('0x79')]['group']));}_0x1d8d7c=_0x49a499['clone']();_0x49a499['limit'](_0x49a101);_0x49a499[_0x86d3('0x18')](0x0);logger['debug']('Limited\x20Query:',_0x49a499[_0x86d3('0x7c')]());return dbH[_0x86d3('0x9e')]['query'](_0x49a499['toString'](),{'type':dbH[_0x86d3('0x9e')][_0x86d3('0x7d')][_0x86d3('0x7e')]});}})['then'](function(){return{'sql':_0x1d8d7c[_0x86d3('0x7c')]()};})[_0x86d3('0x1f')](respondWithResult(_0x1e3559,null))[_0x86d3('0x44')](handleError(_0x1e3559,null));};
\ No newline at end of file
index 3a6ee70..00c6852 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ee0=['../../config/environment','exports','define','AnalyticDefaultReport','analytics_default_reports','util','../../config/logger','bluebird','request-promise','path','rimraf'];(function(_0x56f133,_0x7a8f87){var _0x64cfd7=function(_0x36a195){while(--_0x36a195){_0x56f133['push'](_0x56f133['shift']());}};_0x64cfd7(++_0x7a8f87);}(_0x6ee0,0x1bd));var _0x06ee=function(_0x1eb23b,_0xd0b6cb){_0x1eb23b=_0x1eb23b-0x0;var _0x2ae0ea=_0x6ee0[_0x1eb23b];return _0x2ae0ea;};'use strict';var _=require('lodash');var util=require(_0x06ee('0x0'));var logger=require(_0x06ee('0x1'))('api');var moment=require('moment');var BPromise=require(_0x06ee('0x2'));var rp=require(_0x06ee('0x3'));var fs=require('fs');var path=require(_0x06ee('0x4'));var rimraf=require(_0x06ee('0x5'));var config=require(_0x06ee('0x6'));var attributes=require('./analyticDefaultReport.attributes');module[_0x06ee('0x7')]=function(_0x53b2bf,_0x16e3ee){return _0x53b2bf[_0x06ee('0x8')](_0x06ee('0x9'),attributes,{'tableName':_0x06ee('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbe89=['../../config/logger','api','request-promise','path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','define','lodash','util'];(function(_0x2e5b60,_0x24c9af){var _0x1a20ea=function(_0x2425a0){while(--_0x2425a0){_0x2e5b60['push'](_0x2e5b60['shift']());}};_0x1a20ea(++_0x24c9af);}(_0xbe89,0x17f));var _0x9be8=function(_0x5261c6,_0x52be8a){_0x5261c6=_0x5261c6-0x0;var _0x6fa433=_0xbe89[_0x5261c6];return _0x6fa433;};'use strict';var _=require(_0x9be8('0x0'));var util=require(_0x9be8('0x1'));var logger=require(_0x9be8('0x2'))(_0x9be8('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9be8('0x4'));var fs=require('fs');var path=require(_0x9be8('0x5'));var rimraf=require(_0x9be8('0x6'));var config=require(_0x9be8('0x7'));var attributes=require(_0x9be8('0x8'));module[_0x9be8('0x9')]=function(_0x48d807,_0x9de6b5){return _0x48d807[_0x9be8('0xa')]('AnalyticDefaultReport',attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 24be8fe..41ab49a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98c0=['catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','AnalyticDefaultReport,\x20%s,\x20%s','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x4148de,_0x4c1a10){var _0x4d17a9=function(_0x572bab){while(--_0x572bab){_0x4148de['push'](_0x4148de['shift']());}};_0x4d17a9(++_0x4c1a10);}(_0x98c0,0x1e5));var _0x098c=function(_0x2dfa6a,_0x612821){_0x2dfa6a=_0x2dfa6a-0x0;var _0x1ae0e3=_0x98c0[_0x2dfa6a];return _0x1ae0e3;};'use strict';var _=require(_0x098c('0x0'));var util=require(_0x098c('0x1'));var moment=require('moment');var BPromise=require(_0x098c('0x2'));var rs=require(_0x098c('0x3'));var fs=require('fs');var Redis=require(_0x098c('0x4'));var db=require(_0x098c('0x5'))['db'];var utils=require(_0x098c('0x6'));var logger=require(_0x098c('0x7'))('rpc');var config=require(_0x098c('0x8'));var jayson=require(_0x098c('0x9'));var client=jayson[_0x098c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1a37a5,_0x13e1ec,_0x593ea9){return new BPromise(function(_0x540c19,_0x3ac97f){return client['request'](_0x1a37a5,_0x593ea9)[_0x098c('0xb')](function(_0x478751){logger[_0x098c('0xc')](_0x098c('0xd'),_0x13e1ec,'request\x20sent');logger[_0x098c('0xe')](_0x098c('0xf'),_0x13e1ec,_0x098c('0x10'),JSON[_0x098c('0x11')](_0x478751));if(_0x478751['error']){if(_0x478751[_0x098c('0x12')][_0x098c('0x13')]===0x1f4){logger[_0x098c('0x12')](_0x098c('0xd'),_0x13e1ec,_0x478751[_0x098c('0x12')][_0x098c('0x14')]);return _0x3ac97f(_0x478751[_0x098c('0x12')]['message']);}logger[_0x098c('0x12')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x13e1ec,_0x478751['error'][_0x098c('0x14')]);return _0x540c19(_0x478751[_0x098c('0x12')][_0x098c('0x14')]);}else{logger[_0x098c('0xc')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x13e1ec,_0x098c('0x10'));_0x540c19(_0x478751['result'][_0x098c('0x14')]);}})[_0x098c('0x15')](function(_0x5a9467){logger[_0x098c('0x12')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x13e1ec,_0x5a9467);_0x3ac97f(_0x5a9467);});});}
\ No newline at end of file
+var _0x8afc=['jayson/promise','client','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x8afc,0x187));var _0xc8af=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8afc[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc8af('0x0'));var util=require(_0xc8af('0x1'));var moment=require(_0xc8af('0x2'));var BPromise=require('bluebird');var rs=require(_0xc8af('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc8af('0x4'))['db'];var utils=require(_0xc8af('0x5'));var logger=require('../../config/logger')(_0xc8af('0x6'));var config=require(_0xc8af('0x7'));var jayson=require(_0xc8af('0x8'));var client=jayson[_0xc8af('0x9')][_0xc8af('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x29c4e3,_0x222cbb,_0x33ba46){return new BPromise(function(_0x494cb4,_0x1c8ebc){return client[_0xc8af('0xb')](_0x29c4e3,_0x33ba46)[_0xc8af('0xc')](function(_0x1c05fe){logger[_0xc8af('0xd')](_0xc8af('0xe'),_0x222cbb,_0xc8af('0xf'));logger[_0xc8af('0x10')]('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0x222cbb,_0xc8af('0xf'),JSON[_0xc8af('0x11')](_0x1c05fe));if(_0x1c05fe[_0xc8af('0x12')]){if(_0x1c05fe[_0xc8af('0x12')]['code']===0x1f4){logger[_0xc8af('0x12')](_0xc8af('0xe'),_0x222cbb,_0x1c05fe[_0xc8af('0x12')][_0xc8af('0x13')]);return _0x1c8ebc(_0x1c05fe[_0xc8af('0x12')]['message']);}logger[_0xc8af('0x12')](_0xc8af('0xe'),_0x222cbb,_0x1c05fe[_0xc8af('0x12')][_0xc8af('0x13')]);return _0x494cb4(_0x1c05fe['error'][_0xc8af('0x13')]);}else{logger['info']('AnalyticDefaultReport,\x20%s,\x20%s',_0x222cbb,_0xc8af('0xf'));_0x494cb4(_0x1c05fe[_0xc8af('0x14')][_0xc8af('0x13')]);}})['catch'](function(_0x775344){logger['error'](_0xc8af('0xe'),_0x222cbb,_0x775344);_0x1c8ebc(_0x775344);});});}
\ No newline at end of file
index 5351860..77680b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x081c=['run','query','post','create','update','delete','exports','multer','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/:id','show','/:id/preview','preview','/:id/run'];(function(_0x52fc2e,_0x1b9698){var _0x46c064=function(_0x4c1626){while(--_0x4c1626){_0x52fc2e['push'](_0x52fc2e['shift']());}};_0x46c064(++_0x1b9698);}(_0x081c,0xeb));var _0xc081=function(_0x496f2c,_0x333179){_0x496f2c=_0x496f2c-0x0;var _0x242388=_0x081c[_0x496f2c];return _0x242388;};'use strict';var multer=require(_0xc081('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc081('0x1')]();var fs_extra=require(_0xc081('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xc081('0x3'));var config=require('../../config/environment');var controller=require('./analyticDefaultReport.controller');router[_0xc081('0x4')]('/',auth[_0xc081('0x5')](),controller[_0xc081('0x6')]);router['get'](_0xc081('0x7'),auth['isAuthenticated'](),controller[_0xc081('0x8')]);router['get'](_0xc081('0x9'),auth[_0xc081('0x5')](),controller[_0xc081('0xa')]);router['get'](_0xc081('0xb'),auth[_0xc081('0x5')](),controller[_0xc081('0xc')]);router[_0xc081('0x4')]('/:id/query',auth[_0xc081('0x5')](),controller[_0xc081('0xd')]);router[_0xc081('0xe')]('/',auth[_0xc081('0x5')](),controller[_0xc081('0xf')]);router['put'](_0xc081('0x7'),auth[_0xc081('0x5')](),controller[_0xc081('0x10')]);router[_0xc081('0x11')](_0xc081('0x7'),auth[_0xc081('0x5')](),controller['destroy']);module[_0xc081('0x12')]=router;
\ No newline at end of file
+var _0xfd56=['../../components/interaction/service','./analyticDefaultReport.controller','get','isAuthenticated','index','/:id','show','/:id/preview','preview','/:id/run','/:id/query','query','post','create','put','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x49c057,_0xc808ed){var _0xd8f0e6=function(_0x5b9042){while(--_0x5b9042){_0x49c057['push'](_0x49c057['shift']());}};_0xd8f0e6(++_0xc808ed);}(_0xfd56,0x1d4));var _0x6fd5=function(_0x15a22b,_0x3d9806){_0x15a22b=_0x15a22b-0x0;var _0x31362a=_0xfd56[_0x15a22b];return _0x31362a;};'use strict';var multer=require(_0x6fd5('0x0'));var util=require('util');var path=require(_0x6fd5('0x1'));var timeout=require(_0x6fd5('0x2'));var express=require(_0x6fd5('0x3'));var router=express[_0x6fd5('0x4')]();var fs_extra=require(_0x6fd5('0x5'));var auth=require(_0x6fd5('0x6'));var interaction=require(_0x6fd5('0x7'));var config=require('../../config/environment');var controller=require(_0x6fd5('0x8'));router[_0x6fd5('0x9')]('/',auth[_0x6fd5('0xa')](),controller[_0x6fd5('0xb')]);router[_0x6fd5('0x9')](_0x6fd5('0xc'),auth[_0x6fd5('0xa')](),controller[_0x6fd5('0xd')]);router[_0x6fd5('0x9')](_0x6fd5('0xe'),auth['isAuthenticated'](),controller[_0x6fd5('0xf')]);router[_0x6fd5('0x9')](_0x6fd5('0x10'),auth['isAuthenticated'](),controller['run']);router[_0x6fd5('0x9')](_0x6fd5('0x11'),auth[_0x6fd5('0xa')](),controller[_0x6fd5('0x12')]);router[_0x6fd5('0x13')]('/',auth['isAuthenticated'](),controller[_0x6fd5('0x14')]);router[_0x6fd5('0x15')](_0x6fd5('0xc'),auth[_0x6fd5('0xa')](),controller['update']);router[_0x6fd5('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x6fd5('0x17')]);module[_0x6fd5('0x18')]=router;
\ No newline at end of file
index bfde32d..5ec4560 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0870=['ENUM','manual','UNSIGNED','sequelize','moment','exports','STRING','csv','pdf','DATE','Loading'];(function(_0x520138,_0x28b48e){var _0x46b0bf=function(_0x13798e){while(--_0x13798e){_0x520138['push'](_0x520138['shift']());}};_0x46b0bf(++_0x28b48e);}(_0x0870,0xd4));var _0x0087=function(_0x157b9b,_0x5eba5e){_0x157b9b=_0x157b9b-0x0;var _0x32179b=_0x0870[_0x157b9b];return _0x32179b;};'use strict';var Sequelize=require(_0x0087('0x0'));var moment=require(_0x0087('0x1'));module[_0x0087('0x2')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'basename':{'type':Sequelize[_0x0087('0x3')],'allowNull':![]},'output':{'type':Sequelize['ENUM'](_0x0087('0x4'),_0x0087('0x5'),'xlsx'),'allowNull':![],'defaultValue':_0x0087('0x4')},'savename':{'type':Sequelize['STRING'],'allowNull':![]},'startDate':{'type':Sequelize[_0x0087('0x6')]},'endDate':{'type':Sequelize[_0x0087('0x6')]},'status':{'type':Sequelize[_0x0087('0x3')],'defaultValue':_0x0087('0x7')},'type':{'type':Sequelize[_0x0087('0x8')](_0x0087('0x9'),'scheduled'),'allowNull':![],'defaultValue':_0x0087('0x9')},'reportId':{'type':Sequelize['INTEGER'](0xb)[_0x0087('0xa')]},'reportType':{'type':Sequelize[_0x0087('0x3')]}};
\ No newline at end of file
+var _0xc346=['csv','xlsx','DATE','Loading','manual','INTEGER','UNSIGNED','sequelize','STRING','ENUM'];(function(_0x2c2b74,_0x4c7bce){var _0x4c7e49=function(_0x57d976){while(--_0x57d976){_0x2c2b74['push'](_0x2c2b74['shift']());}};_0x4c7e49(++_0x4c7bce);}(_0xc346,0xd9));var _0x6c34=function(_0x1747f5,_0x93ec58){_0x1747f5=_0x1747f5-0x0;var _0x58a964=_0xc346[_0x1747f5];return _0x58a964;};'use strict';var Sequelize=require(_0x6c34('0x0'));var moment=require('moment');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'basename':{'type':Sequelize[_0x6c34('0x1')],'allowNull':![]},'output':{'type':Sequelize[_0x6c34('0x2')](_0x6c34('0x3'),'pdf',_0x6c34('0x4')),'allowNull':![],'defaultValue':_0x6c34('0x3')},'savename':{'type':Sequelize[_0x6c34('0x1')],'allowNull':![]},'startDate':{'type':Sequelize[_0x6c34('0x5')]},'endDate':{'type':Sequelize[_0x6c34('0x5')]},'status':{'type':Sequelize['STRING'],'defaultValue':_0x6c34('0x6')},'type':{'type':Sequelize[_0x6c34('0x2')]('manual','scheduled'),'allowNull':![],'defaultValue':_0x6c34('0x7')},'reportId':{'type':Sequelize[_0x6c34('0x8')](0xb)[_0x6c34('0x9')]},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 80e1dee..8088b63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x310a=['Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','join','format','%s.%s','toLowerCase','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','limit','count','Content-Range','apply','reject','update','destroy','then','get','ExtractedReports','UserProfileResource','end','sendStatus','stack','name','send','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','show','params','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','download','basename','savename','existsSync','root','server/files/reports'];(function(_0x395a89,_0xd62b36){var _0x447f82=function(_0x141ae3){while(--_0x141ae3){_0x395a89['push'](_0x395a89['shift']());}};_0x447f82(++_0xd62b36);}(_0x310a,0x12b));var _0xa310=function(_0x313608,_0x34dfb1){_0x313608=_0x313608-0x0;var _0x339ee0=_0x310a[_0x313608];return _0x339ee0;};'use strict';var emlformat=require(_0xa310('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa310('0x1'));var jsonpatch=require(_0xa310('0x2'));var rp=require(_0xa310('0x3'));var moment=require(_0xa310('0x4'));var BPromise=require(_0xa310('0x5'));var Mustache=require(_0xa310('0x6'));var util=require(_0xa310('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xa310('0x8'));var ejs=require(_0xa310('0x9'));var fs=require('fs');var fs_extra=require(_0xa310('0xa'));var _=require(_0xa310('0xb'));var squel=require(_0xa310('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xa310('0xd'));var toCsv=require(_0xa310('0x8'));var querystring=require(_0xa310('0xe'));var Papa=require(_0xa310('0xf'));var Redis=require('ioredis');var authService=require(_0xa310('0x10'));var qs=require(_0xa310('0x11'));var as=require(_0xa310('0x12'));var hardwareService=require(_0xa310('0x13'));var logger=require(_0xa310('0x14'))('api');var utils=require(_0xa310('0x15'));var config=require(_0xa310('0x16'));var licenseUtil=require(_0xa310('0x17'));var db=require(_0xa310('0x18'))['db'];function respondWithStatusCode(_0x1e0034,_0x4e1b56){_0x4e1b56=_0x4e1b56||0xcc;return function(_0x32fe6c){if(_0x32fe6c){return _0x1e0034['sendStatus'](_0x4e1b56);}return _0x1e0034[_0xa310('0x19')](_0x4e1b56)['end']();};}function respondWithResult(_0x5e30b1,_0x3aae26){_0x3aae26=_0x3aae26||0xc8;return function(_0x128fb7){if(_0x128fb7){return _0x5e30b1[_0xa310('0x19')](_0x3aae26)[_0xa310('0x1a')](_0x128fb7);}};}function respondWithFilteredResult(_0x44b760,_0x2fb168){return function(_0x494fc6){if(_0x494fc6){var _0x36670f=typeof _0x2fb168[_0xa310('0x1b')]==='undefined'&&typeof _0x2fb168[_0xa310('0x1c')]==='undefined';var _0xfeee54=_0x494fc6[_0xa310('0x1d')];var _0x1e2e19=_0x36670f?0x0:_0x2fb168[_0xa310('0x1b')];var _0x55d62b=_0x36670f?_0x494fc6[_0xa310('0x1d')]:_0x2fb168[_0xa310('0x1b')]+_0x2fb168['limit'];var _0x325194;if(_0x55d62b>=_0xfeee54){_0x55d62b=_0xfeee54;_0x325194=0xc8;}else{_0x325194=0xce;}_0x44b760[_0xa310('0x19')](_0x325194);return _0x44b760['set'](_0xa310('0x1e'),_0x1e2e19+'-'+_0x55d62b+'/'+_0xfeee54)[_0xa310('0x1a')](_0x494fc6);}return null;};}function patchUpdates(_0x318dbd){return function(_0x2e5a04){try{jsonpatch[_0xa310('0x1f')](_0x2e5a04,_0x318dbd,!![]);}catch(_0x35d1a8){return BPromise[_0xa310('0x20')](_0x35d1a8);}return _0x2e5a04['save']();};}function saveUpdates(_0x598e6f,_0x3185c4){return function(_0x58a60b){if(_0x58a60b){return _0x58a60b[_0xa310('0x21')](_0x598e6f)['then'](function(_0x56b48f){return _0x56b48f;});}return null;};}function removeEntity(_0xaeae09,_0x51facc){return function(_0x3b612e){if(_0x3b612e){return _0x3b612e[_0xa310('0x22')]()[_0xa310('0x23')](function(){var _0x553afb=_0x3b612e[_0xa310('0x24')]({'plain':!![]});var _0x37ac17=_0xa310('0x25');return db[_0xa310('0x26')]['destroy']({'where':{'type':_0x37ac17,'resourceId':_0x553afb['id']}})[_0xa310('0x23')](function(){return _0x3b612e;});})['then'](function(){_0xaeae09[_0xa310('0x19')](0xcc)[_0xa310('0x27')]();});}};}function handleEntityNotFound(_0x28b1a1,_0xe164ab){return function(_0x197359){if(!_0x197359){_0x28b1a1[_0xa310('0x28')](0x194);}return _0x197359;};}function handleError(_0x3e1464,_0x5a163e){_0x5a163e=_0x5a163e||0x1f4;return function(_0x35fc74){logger['error'](_0x35fc74[_0xa310('0x29')]);if(_0x35fc74['name']){delete _0x35fc74[_0xa310('0x2a')];}_0x3e1464['status'](_0x5a163e)[_0xa310('0x2b')](_0x35fc74);};}exports[_0xa310('0x2c')]=function(_0x602227,_0x516f35){var _0x4306e2={},_0x97418d={},_0x359684={'count':0x0,'rows':[]};var _0x1812c8=_[_0xa310('0x2d')](db[_0xa310('0x2e')][_0xa310('0x2f')],function(_0x2c2389){return{'name':_0x2c2389[_0xa310('0x30')],'type':_0x2c2389[_0xa310('0x31')][_0xa310('0x32')]};});_0x97418d[_0xa310('0x33')]=_[_0xa310('0x2d')](_0x1812c8,_0xa310('0x2a'));_0x97418d[_0xa310('0x34')]=_[_0xa310('0x35')](_0x602227[_0xa310('0x34')]);_0x97418d[_0xa310('0x36')]=_[_0xa310('0x37')](_0x97418d[_0xa310('0x33')],_0x97418d[_0xa310('0x34')]);_0x4306e2[_0xa310('0x38')]=_[_0xa310('0x37')](_0x97418d[_0xa310('0x33')],qs[_0xa310('0x39')](_0x602227['query'][_0xa310('0x39')]));_0x4306e2[_0xa310('0x38')]=_0x4306e2[_0xa310('0x38')][_0xa310('0x3a')]?_0x4306e2[_0xa310('0x38')]:_0x97418d[_0xa310('0x33')];if(!_0x602227[_0xa310('0x34')][_0xa310('0x3b')](_0xa310('0x3c'))){_0x4306e2[_0xa310('0x1c')]=qs[_0xa310('0x1c')](_0x602227[_0xa310('0x34')][_0xa310('0x1c')]);_0x4306e2[_0xa310('0x1b')]=qs[_0xa310('0x1b')](_0x602227['query'][_0xa310('0x1b')]);}_0x4306e2[_0xa310('0x3d')]=qs['sort'](_0x602227['query']['sort']);_0x4306e2[_0xa310('0x3e')]=qs[_0xa310('0x36')](_[_0xa310('0x3f')](_0x602227[_0xa310('0x34')],_0x97418d['filters']),_0x1812c8);if(_0x602227[_0xa310('0x34')][_0xa310('0x40')]){_0x4306e2[_0xa310('0x3e')]=_[_0xa310('0x41')](_0x4306e2[_0xa310('0x3e')],{'$or':_[_0xa310('0x2d')](_0x1812c8,function(_0x51e4e6){if(_0x51e4e6[_0xa310('0x31')]!==_0xa310('0x42')){var _0xa7416d={};_0xa7416d[_0x51e4e6[_0xa310('0x2a')]]={'$like':'%'+_0x602227[_0xa310('0x34')][_0xa310('0x40')]+'%'};return _0xa7416d;}})});}_0x4306e2=_[_0xa310('0x41')]({},_0x4306e2,_0x602227[_0xa310('0x43')]);var _0x53d1fd={'where':_0x4306e2[_0xa310('0x3e')]};return db[_0xa310('0x2e')]['count'](_0x53d1fd)[_0xa310('0x23')](function(_0x148e85){_0x359684[_0xa310('0x1d')]=_0x148e85;if(_0x602227[_0xa310('0x34')][_0xa310('0x44')]){_0x4306e2[_0xa310('0x45')]=[{'all':!![]}];}return db[_0xa310('0x2e')]['findAll'](_0x4306e2);})[_0xa310('0x23')](function(_0x358317){_0x359684[_0xa310('0x46')]=_0x358317;return _0x359684;})[_0xa310('0x23')](respondWithFilteredResult(_0x516f35,_0x4306e2))['catch'](handleError(_0x516f35,null));};exports[_0xa310('0x47')]=function(_0x22c39b,_0x43f3a7){var _0x3bd127={'raw':!![],'where':{'id':_0x22c39b[_0xa310('0x48')]['id']}},_0x2d1426={};_0x2d1426[_0xa310('0x33')]=_['keys'](db['AnalyticExtractedReport'][_0xa310('0x2f')]);_0x2d1426['query']=_[_0xa310('0x35')](_0x22c39b['query']);_0x2d1426[_0xa310('0x36')]=_['intersection'](_0x2d1426[_0xa310('0x33')],_0x2d1426[_0xa310('0x34')]);_0x3bd127['attributes']=_[_0xa310('0x37')](_0x2d1426[_0xa310('0x33')],qs['fields'](_0x22c39b[_0xa310('0x34')]['fields']));_0x3bd127[_0xa310('0x38')]=_0x3bd127[_0xa310('0x38')]['length']?_0x3bd127[_0xa310('0x38')]:_0x2d1426['model'];if(_0x22c39b[_0xa310('0x34')][_0xa310('0x44')]){_0x3bd127['include']=[{'all':!![]}];}_0x3bd127=_[_0xa310('0x41')]({},_0x3bd127,_0x22c39b[_0xa310('0x43')]);return db[_0xa310('0x2e')]['find'](_0x3bd127)['then'](handleEntityNotFound(_0x43f3a7,null))[_0xa310('0x23')](respondWithResult(_0x43f3a7,null))[_0xa310('0x49')](handleError(_0x43f3a7,null));};exports['create']=function(_0x5196cd,_0x396348){return db[_0xa310('0x2e')][_0xa310('0x4a')](_0x5196cd[_0xa310('0x4b')],{})[_0xa310('0x23')](function(_0x2417fd){var _0x1aa0e9=_0x5196cd[_0xa310('0x4c')][_0xa310('0x24')]({'plain':!![]});if(!_0x1aa0e9)throw new Error(_0xa310('0x4d'));if(_0x1aa0e9[_0xa310('0x4e')]==='user'){var _0x196d8b=_0x2417fd[_0xa310('0x24')]({'plain':!![]});var _0x8f9517='ExtractedReports';return db[_0xa310('0x4f')][_0xa310('0x50')]({'where':{'name':_0x8f9517,'userProfileId':_0x1aa0e9[_0xa310('0x51')]},'raw':!![]})[_0xa310('0x23')](function(_0x5323f6){if(_0x5323f6&&_0x5323f6['autoAssociation']===0x0){return db[_0xa310('0x26')][_0xa310('0x4a')]({'name':_0x196d8b[_0xa310('0x2a')],'resourceId':_0x196d8b['id'],'type':_0x5323f6[_0xa310('0x2a')],'sectionId':_0x5323f6['id']},{})[_0xa310('0x23')](function(){return _0x2417fd;});}else{return _0x2417fd;}})[_0xa310('0x49')](function(_0x54a622){logger['error'](_0xa310('0x52'),_0x54a622);throw _0x54a622;});}return _0x2417fd;})[_0xa310('0x23')](respondWithResult(_0x396348,0xc9))[_0xa310('0x49')](handleError(_0x396348,null));};exports[_0xa310('0x21')]=function(_0x156f29,_0x445782){if(_0x156f29['body']['id']){delete _0x156f29[_0xa310('0x4b')]['id'];}return db[_0xa310('0x2e')]['find']({'where':{'id':_0x156f29['params']['id']}})['then'](handleEntityNotFound(_0x445782,null))[_0xa310('0x23')](saveUpdates(_0x156f29[_0xa310('0x4b')],null))[_0xa310('0x23')](respondWithResult(_0x445782,null))['catch'](handleError(_0x445782,null));};exports[_0xa310('0x22')]=function(_0x8f77ce,_0x5b6cdd){return db[_0xa310('0x2e')][_0xa310('0x50')]({'where':{'id':_0x8f77ce[_0xa310('0x48')]['id']}})[_0xa310('0x23')](handleEntityNotFound(_0x5b6cdd,null))[_0xa310('0x23')](removeEntity(_0x5b6cdd,null))[_0xa310('0x49')](handleError(_0x5b6cdd,null));};exports[_0xa310('0x53')]=function(_0x102e15,_0x337bc5,_0xda0ff8){return db[_0xa310('0x2e')][_0xa310('0x50')]({'where':{'id':_0x102e15['params']['id']},'attributes':[_0xa310('0x2a'),_0xa310('0x54'),_0xa310('0x55'),'output'],'raw':!![]})[_0xa310('0x23')](handleEntityNotFound(_0x337bc5,null))[_0xa310('0x23')](function(_0x990d63){if(_0x990d63){if(!fs[_0xa310('0x56')](path['join'](config[_0xa310('0x57')],_0xa310('0x58'),_0x990d63['savename']))){throw new db[(_0xa310('0x59'))][(_0xa310('0x5a'))](_0xa310('0x5b'));}if(_0x102e15[_0xa310('0x34')][_0xa310('0x5c')]){return _0x337bc5['sendStatus'](0xc8);}return _0x337bc5[_0xa310('0x53')](path[_0xa310('0x5d')](config['root'],_0xa310('0x58'),_0x990d63['savename']),util[_0xa310('0x5e')](_0xa310('0x5f'),_0x990d63[_0xa310('0x54')]||_0x990d63[_0xa310('0x2a')],_0x990d63['output'][_0xa310('0x60')]()));}})[_0xa310('0x49')](handleError(_0x337bc5,null));};
\ No newline at end of file
+var _0xd59e=['count','includeAll','findAll','rows','catch','show','params','include','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','download','basename','savename','output','existsSync','root','Sequelize','join','server/files/reports','%s.%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','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/logger','api','../../config/utils','../../config/license/util','status','end','json','offset','undefined','set','apply','save','update','destroy','then','get','ExtractedReports','UserProfileResource','sendStatus','error','stack','name','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','limit','order','sort','where','filters','merge','VIRTUAL','filter','options'];(function(_0x395f75,_0x542bc2){var _0x350a19=function(_0x285341){while(--_0x285341){_0x395f75['push'](_0x395f75['shift']());}};_0x350a19(++_0x542bc2);}(_0xd59e,0xde));var _0xed59=function(_0x3cd11f,_0x5707b1){_0x3cd11f=_0x3cd11f-0x0;var _0x7152e6=_0xd59e[_0x3cd11f];return _0x7152e6;};'use strict';var emlformat=require(_0xed59('0x0'));var rimraf=require(_0xed59('0x1'));var zipdir=require(_0xed59('0x2'));var jsonpatch=require(_0xed59('0x3'));var rp=require(_0xed59('0x4'));var moment=require(_0xed59('0x5'));var BPromise=require(_0xed59('0x6'));var Mustache=require(_0xed59('0x7'));var util=require(_0xed59('0x8'));var path=require(_0xed59('0x9'));var sox=require(_0xed59('0xa'));var csv=require('to-csv');var ejs=require(_0xed59('0xb'));var fs=require('fs');var fs_extra=require(_0xed59('0xc'));var _=require(_0xed59('0xd'));var squel=require(_0xed59('0xe'));var crypto=require('crypto');var jsforce=require(_0xed59('0xf'));var deskjs=require(_0xed59('0x10'));var toCsv=require(_0xed59('0x11'));var querystring=require('querystring');var Papa=require(_0xed59('0x12'));var Redis=require(_0xed59('0x13'));var authService=require(_0xed59('0x14'));var qs=require(_0xed59('0x15'));var as=require(_0xed59('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xed59('0x17'))(_0xed59('0x18'));var utils=require(_0xed59('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xed59('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x6e617c,_0x1f5b79){_0x1f5b79=_0x1f5b79||0xcc;return function(_0x3c3247){if(_0x3c3247){return _0x6e617c['sendStatus'](_0x1f5b79);}return _0x6e617c[_0xed59('0x1b')](_0x1f5b79)[_0xed59('0x1c')]();};}function respondWithResult(_0x8f3862,_0x540eb7){_0x540eb7=_0x540eb7||0xc8;return function(_0x4abcb9){if(_0x4abcb9){return _0x8f3862['status'](_0x540eb7)[_0xed59('0x1d')](_0x4abcb9);}};}function respondWithFilteredResult(_0x2dedf0,_0x2e30e0){return function(_0x231e1f){if(_0x231e1f){var _0x347bd3=typeof _0x2e30e0[_0xed59('0x1e')]===_0xed59('0x1f')&&typeof _0x2e30e0['limit']===_0xed59('0x1f');var _0x3c05b4=_0x231e1f['count'];var _0x2ca48e=_0x347bd3?0x0:_0x2e30e0[_0xed59('0x1e')];var _0x4e2f62=_0x347bd3?_0x231e1f['count']:_0x2e30e0[_0xed59('0x1e')]+_0x2e30e0['limit'];var _0x560759;if(_0x4e2f62>=_0x3c05b4){_0x4e2f62=_0x3c05b4;_0x560759=0xc8;}else{_0x560759=0xce;}_0x2dedf0[_0xed59('0x1b')](_0x560759);return _0x2dedf0[_0xed59('0x20')]('Content-Range',_0x2ca48e+'-'+_0x4e2f62+'/'+_0x3c05b4)[_0xed59('0x1d')](_0x231e1f);}return null;};}function patchUpdates(_0x5859a2){return function(_0x4f811d){try{jsonpatch[_0xed59('0x21')](_0x4f811d,_0x5859a2,!![]);}catch(_0x5a716a){return BPromise['reject'](_0x5a716a);}return _0x4f811d[_0xed59('0x22')]();};}function saveUpdates(_0x494fb6,_0x48d018){return function(_0x209177){if(_0x209177){return _0x209177[_0xed59('0x23')](_0x494fb6)['then'](function(_0x132c66){return _0x132c66;});}return null;};}function removeEntity(_0x363d1a,_0x116bda){return function(_0x195df4){if(_0x195df4){return _0x195df4[_0xed59('0x24')]()[_0xed59('0x25')](function(){var _0xf1ba07=_0x195df4[_0xed59('0x26')]({'plain':!![]});var _0x4a4e51=_0xed59('0x27');return db[_0xed59('0x28')][_0xed59('0x24')]({'where':{'type':_0x4a4e51,'resourceId':_0xf1ba07['id']}})[_0xed59('0x25')](function(){return _0x195df4;});})[_0xed59('0x25')](function(){_0x363d1a[_0xed59('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd312c4,_0x36ea5c){return function(_0x2c03dd){if(!_0x2c03dd){_0xd312c4[_0xed59('0x29')](0x194);}return _0x2c03dd;};}function handleError(_0x37174f,_0x1b00a3){_0x1b00a3=_0x1b00a3||0x1f4;return function(_0x31f780){logger[_0xed59('0x2a')](_0x31f780[_0xed59('0x2b')]);if(_0x31f780['name']){delete _0x31f780[_0xed59('0x2c')];}_0x37174f[_0xed59('0x1b')](_0x1b00a3)['send'](_0x31f780);};}exports[_0xed59('0x2d')]=function(_0x568ef8,_0x3f5ea5){var _0x5cb6ff={},_0x4d81f0={},_0x4786de={'count':0x0,'rows':[]};var _0xa1498a=_[_0xed59('0x2e')](db[_0xed59('0x2f')][_0xed59('0x30')],function(_0x2df4bc){return{'name':_0x2df4bc[_0xed59('0x31')],'type':_0x2df4bc[_0xed59('0x32')][_0xed59('0x33')]};});_0x4d81f0[_0xed59('0x34')]=_[_0xed59('0x2e')](_0xa1498a,'name');_0x4d81f0[_0xed59('0x35')]=_[_0xed59('0x36')](_0x568ef8[_0xed59('0x35')]);_0x4d81f0['filters']=_['intersection'](_0x4d81f0[_0xed59('0x34')],_0x4d81f0[_0xed59('0x35')]);_0x5cb6ff['attributes']=_[_0xed59('0x37')](_0x4d81f0[_0xed59('0x34')],qs['fields'](_0x568ef8[_0xed59('0x35')][_0xed59('0x38')]));_0x5cb6ff[_0xed59('0x39')]=_0x5cb6ff[_0xed59('0x39')][_0xed59('0x3a')]?_0x5cb6ff['attributes']:_0x4d81f0[_0xed59('0x34')];if(!_0x568ef8['query'][_0xed59('0x3b')]('nolimit')){_0x5cb6ff[_0xed59('0x3c')]=qs[_0xed59('0x3c')](_0x568ef8['query']['limit']);_0x5cb6ff[_0xed59('0x1e')]=qs['offset'](_0x568ef8['query']['offset']);}_0x5cb6ff[_0xed59('0x3d')]=qs[_0xed59('0x3e')](_0x568ef8['query'][_0xed59('0x3e')]);_0x5cb6ff[_0xed59('0x3f')]=qs[_0xed59('0x40')](_['pick'](_0x568ef8['query'],_0x4d81f0['filters']),_0xa1498a);if(_0x568ef8['query']['filter']){_0x5cb6ff[_0xed59('0x3f')]=_[_0xed59('0x41')](_0x5cb6ff[_0xed59('0x3f')],{'$or':_[_0xed59('0x2e')](_0xa1498a,function(_0x3ade89){if(_0x3ade89[_0xed59('0x32')]!==_0xed59('0x42')){var _0x33c821={};_0x33c821[_0x3ade89[_0xed59('0x2c')]]={'$like':'%'+_0x568ef8[_0xed59('0x35')][_0xed59('0x43')]+'%'};return _0x33c821;}})});}_0x5cb6ff=_[_0xed59('0x41')]({},_0x5cb6ff,_0x568ef8[_0xed59('0x44')]);var _0x2edf0e={'where':_0x5cb6ff[_0xed59('0x3f')]};return db[_0xed59('0x2f')][_0xed59('0x45')](_0x2edf0e)[_0xed59('0x25')](function(_0x31f4b4){_0x4786de[_0xed59('0x45')]=_0x31f4b4;if(_0x568ef8[_0xed59('0x35')][_0xed59('0x46')]){_0x5cb6ff['include']=[{'all':!![]}];}return db[_0xed59('0x2f')][_0xed59('0x47')](_0x5cb6ff);})['then'](function(_0x236304){_0x4786de[_0xed59('0x48')]=_0x236304;return _0x4786de;})[_0xed59('0x25')](respondWithFilteredResult(_0x3f5ea5,_0x5cb6ff))[_0xed59('0x49')](handleError(_0x3f5ea5,null));};exports[_0xed59('0x4a')]=function(_0x23faf1,_0x5c3343){var _0x2c4f2f={'raw':!![],'where':{'id':_0x23faf1[_0xed59('0x4b')]['id']}},_0x57c42e={};_0x57c42e[_0xed59('0x34')]=_['keys'](db[_0xed59('0x2f')][_0xed59('0x30')]);_0x57c42e[_0xed59('0x35')]=_[_0xed59('0x36')](_0x23faf1[_0xed59('0x35')]);_0x57c42e[_0xed59('0x40')]=_[_0xed59('0x37')](_0x57c42e[_0xed59('0x34')],_0x57c42e[_0xed59('0x35')]);_0x2c4f2f[_0xed59('0x39')]=_['intersection'](_0x57c42e[_0xed59('0x34')],qs[_0xed59('0x38')](_0x23faf1[_0xed59('0x35')][_0xed59('0x38')]));_0x2c4f2f[_0xed59('0x39')]=_0x2c4f2f[_0xed59('0x39')]['length']?_0x2c4f2f[_0xed59('0x39')]:_0x57c42e[_0xed59('0x34')];if(_0x23faf1[_0xed59('0x35')]['includeAll']){_0x2c4f2f[_0xed59('0x4c')]=[{'all':!![]}];}_0x2c4f2f=_[_0xed59('0x41')]({},_0x2c4f2f,_0x23faf1[_0xed59('0x44')]);return db[_0xed59('0x2f')][_0xed59('0x4d')](_0x2c4f2f)['then'](handleEntityNotFound(_0x5c3343,null))[_0xed59('0x25')](respondWithResult(_0x5c3343,null))[_0xed59('0x49')](handleError(_0x5c3343,null));};exports[_0xed59('0x4e')]=function(_0x58919c,_0x418576){return db[_0xed59('0x2f')][_0xed59('0x4e')](_0x58919c[_0xed59('0x4f')],{})['then'](function(_0x4a05b8){var _0x520246=_0x58919c[_0xed59('0x50')][_0xed59('0x26')]({'plain':!![]});if(!_0x520246)throw new Error(_0xed59('0x51'));if(_0x520246[_0xed59('0x52')]===_0xed59('0x50')){var _0x3b35c2=_0x4a05b8[_0xed59('0x26')]({'plain':!![]});var _0x3ecdf0=_0xed59('0x27');return db[_0xed59('0x53')][_0xed59('0x4d')]({'where':{'name':_0x3ecdf0,'userProfileId':_0x520246[_0xed59('0x54')]},'raw':!![]})[_0xed59('0x25')](function(_0x5c45f2){if(_0x5c45f2&&_0x5c45f2[_0xed59('0x55')]===0x0){return db[_0xed59('0x28')][_0xed59('0x4e')]({'name':_0x3b35c2[_0xed59('0x2c')],'resourceId':_0x3b35c2['id'],'type':_0x5c45f2[_0xed59('0x2c')],'sectionId':_0x5c45f2['id']},{})['then'](function(){return _0x4a05b8;});}else{return _0x4a05b8;}})[_0xed59('0x49')](function(_0x2fdca9){logger['error'](_0xed59('0x56'),_0x2fdca9);throw _0x2fdca9;});}return _0x4a05b8;})['then'](respondWithResult(_0x418576,0xc9))[_0xed59('0x49')](handleError(_0x418576,null));};exports[_0xed59('0x23')]=function(_0x2e536d,_0x435453){if(_0x2e536d['body']['id']){delete _0x2e536d['body']['id'];}return db[_0xed59('0x2f')][_0xed59('0x4d')]({'where':{'id':_0x2e536d[_0xed59('0x4b')]['id']}})[_0xed59('0x25')](handleEntityNotFound(_0x435453,null))['then'](saveUpdates(_0x2e536d[_0xed59('0x4f')],null))['then'](respondWithResult(_0x435453,null))[_0xed59('0x49')](handleError(_0x435453,null));};exports[_0xed59('0x24')]=function(_0x3fb839,_0x41e44c){return db['AnalyticExtractedReport']['find']({'where':{'id':_0x3fb839[_0xed59('0x4b')]['id']}})['then'](handleEntityNotFound(_0x41e44c,null))[_0xed59('0x25')](removeEntity(_0x41e44c,null))[_0xed59('0x49')](handleError(_0x41e44c,null));};exports[_0xed59('0x57')]=function(_0x432cab,_0x39646b,_0x38dd67){return db['AnalyticExtractedReport'][_0xed59('0x4d')]({'where':{'id':_0x432cab[_0xed59('0x4b')]['id']},'attributes':[_0xed59('0x2c'),_0xed59('0x58'),_0xed59('0x59'),_0xed59('0x5a')],'raw':!![]})[_0xed59('0x25')](handleEntityNotFound(_0x39646b,null))[_0xed59('0x25')](function(_0x19871c){if(_0x19871c){if(!fs[_0xed59('0x5b')](path['join'](config[_0xed59('0x5c')],'server/files/reports',_0x19871c[_0xed59('0x59')]))){throw new db[(_0xed59('0x5d'))]['ValidationError']('Report\x20not\x20found\x20or\x20empty');}if(_0x432cab[_0xed59('0x35')]['exists']){return _0x39646b[_0xed59('0x29')](0xc8);}return _0x39646b[_0xed59('0x57')](path[_0xed59('0x5e')](config[_0xed59('0x5c')],_0xed59('0x5f'),_0x19871c['savename']),util['format'](_0xed59('0x60'),_0x19871c[_0xed59('0x58')]||_0x19871c[_0xed59('0x2c')],_0x19871c[_0xed59('0x5a')]['toLowerCase']()));}})[_0xed59('0x49')](handleError(_0x39646b,null));};
\ No newline at end of file
index b464d68..5258eca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb299=['../../config/environment','./analyticExtractedReport.attributes','exports','define','AnalyticExtractedReport','analytics_extracted_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x1f60f0,_0x9f7cb){var _0x482ebb=function(_0xa34fd1){while(--_0xa34fd1){_0x1f60f0['push'](_0x1f60f0['shift']());}};_0x482ebb(++_0x9f7cb);}(_0xb299,0x1e2));var _0x9b29=function(_0x148da2,_0x1bc31d){_0x148da2=_0x148da2-0x0;var _0x193450=_0xb299[_0x148da2];return _0x193450;};'use strict';var _=require(_0x9b29('0x0'));var util=require(_0x9b29('0x1'));var logger=require(_0x9b29('0x2'))(_0x9b29('0x3'));var moment=require(_0x9b29('0x4'));var BPromise=require(_0x9b29('0x5'));var rp=require(_0x9b29('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9b29('0x7'));var config=require(_0x9b29('0x8'));var attributes=require(_0x9b29('0x9'));module[_0x9b29('0xa')]=function(_0xd04b2c,_0x3c2ca5){return _0xd04b2c[_0x9b29('0xb')](_0x9b29('0xc'),attributes,{'tableName':_0x9b29('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x88e8=['exports','define','AnalyticExtractedReport','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x51ec5c,_0x3506ef){var _0x5b04b8=function(_0x2e741f){while(--_0x2e741f){_0x51ec5c['push'](_0x51ec5c['shift']());}};_0x5b04b8(++_0x3506ef);}(_0x88e8,0x92));var _0x888e=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x88e8[_0x173441];return _0x2423a8;};'use strict';var _=require(_0x888e('0x0'));var util=require(_0x888e('0x1'));var logger=require(_0x888e('0x2'))(_0x888e('0x3'));var moment=require(_0x888e('0x4'));var BPromise=require(_0x888e('0x5'));var rp=require(_0x888e('0x6'));var fs=require('fs');var path=require(_0x888e('0x7'));var rimraf=require(_0x888e('0x8'));var config=require(_0x888e('0x9'));var attributes=require('./analyticExtractedReport.attributes');module[_0x888e('0xa')]=function(_0x1d0925,_0x354b74){return _0x1d0925[_0x888e('0xb')](_0x888e('0xc'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 98f027d..27b11d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf14=['AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xbf14,0x12d));var _0x4bf1=function(_0x20f28e,_0x32c707){_0x20f28e=_0x20f28e-0x0;var _0x248e1e=_0xbf14[_0x20f28e];return _0x248e1e;};'use strict';var _=require(_0x4bf1('0x0'));var util=require('util');var moment=require(_0x4bf1('0x1'));var BPromise=require('bluebird');var rs=require(_0x4bf1('0x2'));var fs=require('fs');var Redis=require(_0x4bf1('0x3'));var db=require(_0x4bf1('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4bf1('0x5'))('rpc');var config=require(_0x4bf1('0x6'));var jayson=require(_0x4bf1('0x7'));var client=jayson['client'][_0x4bf1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2a2a9d,_0x2bb1f8,_0x482f42){return new BPromise(function(_0x482e2d,_0x19b122){return client[_0x4bf1('0x9')](_0x2a2a9d,_0x482f42)['then'](function(_0x1edf2b){logger[_0x4bf1('0xa')](_0x4bf1('0xb'),_0x2bb1f8,_0x4bf1('0xc'));logger[_0x4bf1('0xd')](_0x4bf1('0xe'),_0x2bb1f8,_0x4bf1('0xc'),JSON[_0x4bf1('0xf')](_0x1edf2b));if(_0x1edf2b[_0x4bf1('0x10')]){if(_0x1edf2b[_0x4bf1('0x10')][_0x4bf1('0x11')]===0x1f4){logger['error'](_0x4bf1('0xb'),_0x2bb1f8,_0x1edf2b[_0x4bf1('0x10')][_0x4bf1('0x12')]);return _0x19b122(_0x1edf2b[_0x4bf1('0x10')][_0x4bf1('0x12')]);}logger[_0x4bf1('0x10')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x2bb1f8,_0x1edf2b['error'][_0x4bf1('0x12')]);return _0x482e2d(_0x1edf2b[_0x4bf1('0x10')][_0x4bf1('0x12')]);}else{logger[_0x4bf1('0xa')](_0x4bf1('0xb'),_0x2bb1f8,_0x4bf1('0xc'));_0x482e2d(_0x1edf2b[_0x4bf1('0x13')][_0x4bf1('0x12')]);}})[_0x4bf1('0x14')](function(_0x8f22b6){logger[_0x4bf1('0x10')](_0x4bf1('0xb'),_0x2bb1f8,_0x8f22b6);_0x19b122(_0x8f22b6);});});}
\ No newline at end of file
+var _0x8471=['result','catch','lodash','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','then','info','AnalyticExtractedReport,\x20%s,\x20%s','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x2f56be,_0x4ec278){var _0x46db32=function(_0x29af80){while(--_0x29af80){_0x2f56be['push'](_0x2f56be['shift']());}};_0x46db32(++_0x4ec278);}(_0x8471,0x1ce));var _0x1847=function(_0x335e98,_0x127d1f){_0x335e98=_0x335e98-0x0;var _0x400b27=_0x8471[_0x335e98];return _0x400b27;};'use strict';var _=require(_0x1847('0x0'));var util=require(_0x1847('0x1'));var moment=require('moment');var BPromise=require(_0x1847('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1847('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1847('0x4'));var logger=require(_0x1847('0x5'))(_0x1847('0x6'));var config=require('../../config/environment');var jayson=require(_0x1847('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1bfce4,_0x4b5475,_0x439bdf){return new BPromise(function(_0x2bf40f,_0x596940){return client['request'](_0x1bfce4,_0x439bdf)[_0x1847('0x8')](function(_0x109ba2){logger[_0x1847('0x9')](_0x1847('0xa'),_0x4b5475,'request\x20sent');logger[_0x1847('0xb')](_0x1847('0xc'),_0x4b5475,_0x1847('0xd'),JSON[_0x1847('0xe')](_0x109ba2));if(_0x109ba2[_0x1847('0xf')]){if(_0x109ba2['error'][_0x1847('0x10')]===0x1f4){logger[_0x1847('0xf')](_0x1847('0xa'),_0x4b5475,_0x109ba2['error'][_0x1847('0x11')]);return _0x596940(_0x109ba2['error'][_0x1847('0x11')]);}logger[_0x1847('0xf')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x4b5475,_0x109ba2[_0x1847('0xf')][_0x1847('0x11')]);return _0x2bf40f(_0x109ba2[_0x1847('0xf')][_0x1847('0x11')]);}else{logger[_0x1847('0x9')](_0x1847('0xa'),_0x4b5475,_0x1847('0xd'));_0x2bf40f(_0x109ba2[_0x1847('0x12')][_0x1847('0x11')]);}})[_0x1847('0x13')](function(_0x2fab7f){logger[_0x1847('0xf')](_0x1847('0xa'),_0x4b5475,_0x2fab7f);_0x596940(_0x2fab7f);});});}
\ No newline at end of file
index 16ce091..153de0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdc8=['multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','/:id','show','post','create','put','delete','exports'];(function(_0x5ddf69,_0x479036){var _0x4444f8=function(_0x968357){while(--_0x968357){_0x5ddf69['push'](_0x5ddf69['shift']());}};_0x4444f8(++_0x479036);}(_0xcdc8,0x132));var _0x8cdc=function(_0x2cf2e9,_0xd58ea1){_0x2cf2e9=_0x2cf2e9-0x0;var _0xd3670d=_0xcdc8[_0x2cf2e9];return _0xd3670d;};'use strict';var multer=require(_0x8cdc('0x0'));var util=require('util');var path=require(_0x8cdc('0x1'));var timeout=require(_0x8cdc('0x2'));var express=require('express');var router=express[_0x8cdc('0x3')]();var fs_extra=require(_0x8cdc('0x4'));var auth=require(_0x8cdc('0x5'));var interaction=require(_0x8cdc('0x6'));var config=require(_0x8cdc('0x7'));var controller=require(_0x8cdc('0x8'));router[_0x8cdc('0x9')]('/',auth[_0x8cdc('0xa')](),controller['index']);router[_0x8cdc('0x9')](_0x8cdc('0xb'),auth[_0x8cdc('0xa')](),controller[_0x8cdc('0xc')]);router[_0x8cdc('0x9')]('/:id/download',auth[_0x8cdc('0xa')](),controller['download']);router[_0x8cdc('0xd')]('/',auth['isAuthenticated'](),controller[_0x8cdc('0xe')]);router[_0x8cdc('0xf')](_0x8cdc('0xb'),auth[_0x8cdc('0xa')](),controller['update']);router[_0x8cdc('0x10')](_0x8cdc('0xb'),auth[_0x8cdc('0xa')](),controller['destroy']);module[_0x8cdc('0x11')]=router;
\ No newline at end of file
+var _0x4ce7=['path','connect-timeout','Router','fs-extra','./analyticExtractedReport.controller','get','isAuthenticated','show','/:id/download','download','post','create','put','/:id','update','delete','destroy','exports','util'];(function(_0x4c7798,_0x15ad82){var _0x592e4a=function(_0x10f743){while(--_0x10f743){_0x4c7798['push'](_0x4c7798['shift']());}};_0x592e4a(++_0x15ad82);}(_0x4ce7,0x109));var _0x74ce=function(_0x306260,_0xa90ac){_0x306260=_0x306260-0x0;var _0x981ced=_0x4ce7[_0x306260];return _0x981ced;};'use strict';var multer=require('multer');var util=require(_0x74ce('0x0'));var path=require(_0x74ce('0x1'));var timeout=require(_0x74ce('0x2'));var express=require('express');var router=express[_0x74ce('0x3')]();var fs_extra=require(_0x74ce('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x74ce('0x5'));router[_0x74ce('0x6')]('/',auth[_0x74ce('0x7')](),controller['index']);router[_0x74ce('0x6')]('/:id',auth[_0x74ce('0x7')](),controller[_0x74ce('0x8')]);router[_0x74ce('0x6')](_0x74ce('0x9'),auth[_0x74ce('0x7')](),controller[_0x74ce('0xa')]);router[_0x74ce('0xb')]('/',auth[_0x74ce('0x7')](),controller[_0x74ce('0xc')]);router[_0x74ce('0xd')](_0x74ce('0xe'),auth['isAuthenticated'](),controller[_0x74ce('0xf')]);router[_0x74ce('0x10')](_0x74ce('0xe'),auth['isAuthenticated'](),controller[_0x74ce('0x11')]);module[_0x74ce('0x12')]=router;
\ No newline at end of file
index 550aed9..07b0abc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33a7=['BOOLEAN','sequelize','exports','STRING'];(function(_0x2c644e,_0x310a75){var _0x7a1a9d=function(_0x494297){while(--_0x494297){_0x2c644e['push'](_0x2c644e['shift']());}};_0x7a1a9d(++_0x310a75);}(_0x33a7,0x1b5));var _0x733a=function(_0x4f027d,_0x3f9587){_0x4f027d=_0x4f027d-0x0;var _0xc46890=_0x33a7[_0x4f027d];return _0xc46890;};'use strict';var Sequelize=require(_0x733a('0x0'));module[_0x733a('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize[_0x733a('0x2')]},'format':{'type':Sequelize[_0x733a('0x2')]},'groupBy':{'type':Sequelize[_0x733a('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x733a('0x2')]},'custom':{'type':Sequelize[_0x733a('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xe19f=['sequelize','exports','TEXT','STRING','BOOLEAN'];(function(_0x21e7b8,_0x8c7da5){var _0x158a59=function(_0x40eea8){while(--_0x40eea8){_0x21e7b8['push'](_0x21e7b8['shift']());}};_0x158a59(++_0x8c7da5);}(_0xe19f,0xaf));var _0xfe19=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xe19f[_0x4b369d];return _0x571a98;};'use strict';var Sequelize=require(_0xfe19('0x0'));module[_0xfe19('0x1')]={'field':{'type':Sequelize[_0xfe19('0x2')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize[_0xfe19('0x3')]},'format':{'type':Sequelize[_0xfe19('0x3')]},'groupBy':{'type':Sequelize[_0xfe19('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize['STRING']},'custom':{'type':Sequelize[_0xfe19('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 3b85c04..f865460 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3a5=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','Content-Range','apply','reject','save','update','then','error','stack','name','AnalyticFieldReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','limit','order','sort','filter','where','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','bulkCreate','bulkDestroy','destroy','ids','addFields','AnalyticCustomReport','findOne','sequelize','CustomReportId','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js'];(function(_0x17c16a,_0x37c4b6){var _0xca44b9=function(_0x135c8d){while(--_0x135c8d){_0x17c16a['push'](_0x17c16a['shift']());}};_0xca44b9(++_0x37c4b6);}(_0xd3a5,0xed));var _0x5d3a=function(_0x5d897d,_0x8f648e){_0x5d897d=_0x5d897d-0x0;var _0x21a626=_0xd3a5[_0x5d897d];return _0x21a626;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5d3a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5d3a('0x1'));var rp=require(_0x5d3a('0x2'));var moment=require(_0x5d3a('0x3'));var BPromise=require(_0x5d3a('0x4'));var Mustache=require(_0x5d3a('0x5'));var util=require(_0x5d3a('0x6'));var path=require(_0x5d3a('0x7'));var sox=require(_0x5d3a('0x8'));var csv=require(_0x5d3a('0x9'));var ejs=require(_0x5d3a('0xa'));var fs=require('fs');var fs_extra=require(_0x5d3a('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x5d3a('0xc'));var jsforce=require(_0x5d3a('0xd'));var deskjs=require(_0x5d3a('0xe'));var toCsv=require(_0x5d3a('0x9'));var querystring=require(_0x5d3a('0xf'));var Papa=require(_0x5d3a('0x10'));var Redis=require(_0x5d3a('0x11'));var authService=require(_0x5d3a('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x5d3a('0x13'));var hardwareService=require(_0x5d3a('0x14'));var logger=require(_0x5d3a('0x15'))(_0x5d3a('0x16'));var utils=require(_0x5d3a('0x17'));var config=require(_0x5d3a('0x18'));var licenseUtil=require(_0x5d3a('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2c0885,_0x43f16e){_0x43f16e=_0x43f16e||0xcc;return function(_0xbcb9ed){if(_0xbcb9ed){return _0x2c0885[_0x5d3a('0x1a')](_0x43f16e);}return _0x2c0885[_0x5d3a('0x1b')](_0x43f16e)[_0x5d3a('0x1c')]();};}function respondWithResult(_0x2779de,_0x10365a){_0x10365a=_0x10365a||0xc8;return function(_0xb60d82){if(_0xb60d82){return _0x2779de[_0x5d3a('0x1b')](_0x10365a)[_0x5d3a('0x1d')](_0xb60d82);}};}function respondWithFilteredResult(_0x39fa72,_0x401caa){return function(_0x315494){if(_0x315494){var _0x4c64d0=typeof _0x401caa[_0x5d3a('0x1e')]===_0x5d3a('0x1f')&&typeof _0x401caa['limit']===_0x5d3a('0x1f');var _0x2ebd8d=_0x315494['count'];var _0x15edf7=_0x4c64d0?0x0:_0x401caa[_0x5d3a('0x1e')];var _0x27f332=_0x4c64d0?_0x315494[_0x5d3a('0x20')]:_0x401caa[_0x5d3a('0x1e')]+_0x401caa['limit'];var _0x3800d5;if(_0x27f332>=_0x2ebd8d){_0x27f332=_0x2ebd8d;_0x3800d5=0xc8;}else{_0x3800d5=0xce;}_0x39fa72[_0x5d3a('0x1b')](_0x3800d5);return _0x39fa72['set'](_0x5d3a('0x21'),_0x15edf7+'-'+_0x27f332+'/'+_0x2ebd8d)[_0x5d3a('0x1d')](_0x315494);}return null;};}function patchUpdates(_0x3cfa90){return function(_0x5dae67){try{jsonpatch[_0x5d3a('0x22')](_0x5dae67,_0x3cfa90,!![]);}catch(_0x397102){return BPromise[_0x5d3a('0x23')](_0x397102);}return _0x5dae67[_0x5d3a('0x24')]();};}function saveUpdates(_0x145ad3,_0x31155c){return function(_0x5d19b2){if(_0x5d19b2){return _0x5d19b2[_0x5d3a('0x25')](_0x145ad3)[_0x5d3a('0x26')](function(_0x2fc508){return _0x2fc508;});}return null;};}function removeEntity(_0x8970d3,_0xc8e0ab){return function(_0x239bf4){if(_0x239bf4){return _0x239bf4['destroy']()[_0x5d3a('0x26')](function(){_0x8970d3[_0x5d3a('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ed9d4,_0x31a43e){return function(_0xb5de75){if(!_0xb5de75){_0x1ed9d4['sendStatus'](0x194);}return _0xb5de75;};}function handleError(_0x4c0967,_0x22b619){_0x22b619=_0x22b619||0x1f4;return function(_0x5b256c){logger[_0x5d3a('0x27')](_0x5b256c[_0x5d3a('0x28')]);if(_0x5b256c[_0x5d3a('0x29')]){delete _0x5b256c['name'];}_0x4c0967[_0x5d3a('0x1b')](_0x22b619)['send'](_0x5b256c);};}exports['index']=function(_0x509d9f,_0x1e0065){var _0x1d1105={},_0x402a03={},_0x255004={'count':0x0,'rows':[]};var _0x2263c1=_['map'](db[_0x5d3a('0x2a')][_0x5d3a('0x2b')],function(_0x379dd1){return{'name':_0x379dd1[_0x5d3a('0x2c')],'type':_0x379dd1[_0x5d3a('0x2d')]['key']};});_0x402a03[_0x5d3a('0x2e')]=_['map'](_0x2263c1,'name');_0x402a03[_0x5d3a('0x2f')]=_[_0x5d3a('0x30')](_0x509d9f[_0x5d3a('0x2f')]);_0x402a03[_0x5d3a('0x31')]=_[_0x5d3a('0x32')](_0x402a03[_0x5d3a('0x2e')],_0x402a03[_0x5d3a('0x2f')]);_0x1d1105['attributes']=_['intersection'](_0x402a03['model'],qs[_0x5d3a('0x33')](_0x509d9f[_0x5d3a('0x2f')]['fields']));_0x1d1105['attributes']=_0x1d1105['attributes'][_0x5d3a('0x34')]?_0x1d1105[_0x5d3a('0x35')]:_0x402a03['model'];if(!_0x509d9f[_0x5d3a('0x2f')][_0x5d3a('0x36')](_0x5d3a('0x37'))){_0x1d1105[_0x5d3a('0x38')]=qs[_0x5d3a('0x38')](_0x509d9f[_0x5d3a('0x2f')][_0x5d3a('0x38')]);_0x1d1105['offset']=qs['offset'](_0x509d9f[_0x5d3a('0x2f')][_0x5d3a('0x1e')]);}_0x1d1105[_0x5d3a('0x39')]=qs[_0x5d3a('0x3a')](_0x509d9f['query'][_0x5d3a('0x3a')]);_0x1d1105['where']=qs[_0x5d3a('0x31')](_['pick'](_0x509d9f[_0x5d3a('0x2f')],_0x402a03['filters']),_0x2263c1);if(_0x509d9f[_0x5d3a('0x2f')][_0x5d3a('0x3b')]){_0x1d1105[_0x5d3a('0x3c')]=_[_0x5d3a('0x3d')](_0x1d1105[_0x5d3a('0x3c')],{'$or':_[_0x5d3a('0x3e')](_0x2263c1,function(_0x5d89c9){if(_0x5d89c9[_0x5d3a('0x2d')]!==_0x5d3a('0x3f')){var _0x538b9e={};_0x538b9e[_0x5d89c9[_0x5d3a('0x29')]]={'$like':'%'+_0x509d9f['query'][_0x5d3a('0x3b')]+'%'};return _0x538b9e;}})});}_0x1d1105=_['merge']({},_0x1d1105,_0x509d9f[_0x5d3a('0x40')]);var _0x123e59={'where':_0x1d1105['where']};return db['AnalyticFieldReport'][_0x5d3a('0x20')](_0x123e59)[_0x5d3a('0x26')](function(_0x5f339a){_0x255004['count']=_0x5f339a;if(_0x509d9f['query'][_0x5d3a('0x41')]){_0x1d1105[_0x5d3a('0x42')]=[{'all':!![]}];}return db['AnalyticFieldReport'][_0x5d3a('0x43')](_0x1d1105);})[_0x5d3a('0x26')](function(_0x192b51){_0x255004[_0x5d3a('0x44')]=_0x192b51;return _0x255004;})['then'](respondWithFilteredResult(_0x1e0065,_0x1d1105))[_0x5d3a('0x45')](handleError(_0x1e0065,null));};exports[_0x5d3a('0x46')]=function(_0x1d2384,_0x56a55e){var _0x5ea606={'raw':![],'where':{'id':_0x1d2384[_0x5d3a('0x47')]['id']}},_0x147361={};_0x147361[_0x5d3a('0x2e')]=_[_0x5d3a('0x30')](db['AnalyticFieldReport'][_0x5d3a('0x2b')]);_0x147361[_0x5d3a('0x2f')]=_[_0x5d3a('0x30')](_0x1d2384['query']);_0x147361[_0x5d3a('0x31')]=_[_0x5d3a('0x32')](_0x147361[_0x5d3a('0x2e')],_0x147361['query']);_0x5ea606[_0x5d3a('0x35')]=_[_0x5d3a('0x32')](_0x147361[_0x5d3a('0x2e')],qs[_0x5d3a('0x33')](_0x1d2384[_0x5d3a('0x2f')][_0x5d3a('0x33')]));_0x5ea606[_0x5d3a('0x35')]=_0x5ea606['attributes']['length']?_0x5ea606[_0x5d3a('0x35')]:_0x147361['model'];if(_0x1d2384[_0x5d3a('0x2f')][_0x5d3a('0x41')]){_0x5ea606[_0x5d3a('0x42')]=[{'all':!![]}];}_0x5ea606=_[_0x5d3a('0x3d')]({},_0x5ea606,_0x1d2384[_0x5d3a('0x40')]);return db['AnalyticFieldReport'][_0x5d3a('0x48')](_0x5ea606)['then'](handleEntityNotFound(_0x56a55e,null))['then'](respondWithResult(_0x56a55e,null))[_0x5d3a('0x45')](handleError(_0x56a55e,null));};exports[_0x5d3a('0x49')]=function(_0x1c4fc2,_0x155584){return db['AnalyticFieldReport']['create'](_0x1c4fc2[_0x5d3a('0x4a')],{})[_0x5d3a('0x26')](respondWithResult(_0x155584,0xc9))['catch'](handleError(_0x155584,null));};exports['bulkCreate']=function(_0x1cde8a,_0x2941ee){return db['AnalyticFieldReport'][_0x5d3a('0x4b')](_0x1cde8a[_0x5d3a('0x4a')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x2941ee,0xc9))[_0x5d3a('0x45')](handleError(_0x2941ee,null));};exports[_0x5d3a('0x25')]=function(_0x7ecc22,_0x20c297){if(_0x7ecc22[_0x5d3a('0x4a')]['id']){delete _0x7ecc22[_0x5d3a('0x4a')]['id'];}return db[_0x5d3a('0x2a')][_0x5d3a('0x48')]({'where':{'id':_0x7ecc22[_0x5d3a('0x47')]['id']}})['then'](handleEntityNotFound(_0x20c297,null))['then'](saveUpdates(_0x7ecc22[_0x5d3a('0x4a')],null))[_0x5d3a('0x26')](respondWithResult(_0x20c297,null))[_0x5d3a('0x45')](handleError(_0x20c297,null));};exports['destroy']=function(_0x10bc12,_0x12a2b0){return db[_0x5d3a('0x2a')][_0x5d3a('0x48')]({'where':{'id':_0x10bc12[_0x5d3a('0x47')]['id']}})[_0x5d3a('0x26')](handleEntityNotFound(_0x12a2b0,null))['then'](removeEntity(_0x12a2b0,null))[_0x5d3a('0x45')](handleError(_0x12a2b0,null));};exports[_0x5d3a('0x4c')]=function(_0x5a7693,_0x2c3f72){return db[_0x5d3a('0x2a')][_0x5d3a('0x4d')]({'where':{'id':_0x5a7693[_0x5d3a('0x2f')][_0x5d3a('0x4e')]||[]},'raw':![],'individualHooks':!![]})[_0x5d3a('0x26')](respondWithResult(_0x2c3f72,0xcc))[_0x5d3a('0x45')](handleError(_0x2c3f72,null));};exports[_0x5d3a('0x4f')]=function(_0x312464,_0x518e9a,_0x1fc76a){return db[_0x5d3a('0x50')][_0x5d3a('0x51')]({'where':{'id':_0x312464[_0x5d3a('0x47')]['id']}})[_0x5d3a('0x26')](handleEntityNotFound(_0x518e9a,null))[_0x5d3a('0x26')](function(_0x14b9ac){if(_0x14b9ac){return db[_0x5d3a('0x52')]['transaction'](function(_0x94385){return db[_0x5d3a('0x2a')][_0x5d3a('0x4d')]({'where':{'CustomReportId':_0x312464[_0x5d3a('0x47')]['id']},'transaction':_0x94385})[_0x5d3a('0x26')](function(_0x1158e0){var _0x25af5f=_[_0x5d3a('0x3e')](_0x312464[_0x5d3a('0x4a')],function(_0x478ee9){delete _0x478ee9['id'];_0x478ee9[_0x5d3a('0x53')]=_0x312464[_0x5d3a('0x47')]['id'];return _0x478ee9;});return db[_0x5d3a('0x2a')][_0x5d3a('0x4b')](_0x25af5f,{'transaction':_0x94385});});})[_0x5d3a('0x26')](function(){return db[_0x5d3a('0x2a')]['findAll']({'where':{'CustomReportId':_0x312464[_0x5d3a('0x47')]['id']}});});}})[_0x5d3a('0x26')](respondWithResult(_0x518e9a,null))[_0x5d3a('0x45')](handleError(_0x518e9a,null));};
\ No newline at end of file
+var _0x7b1f=['../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','error','stack','name','send','index','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','rows','show','params','includeAll','create','body','catch','bulkCreate','find','bulkDestroy','destroy','ids','addFields','AnalyticCustomReport','findOne','sequelize','transaction','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse'];(function(_0x357129,_0x8c42cb){var _0x30edb8=function(_0x5e2291){while(--_0x5e2291){_0x357129['push'](_0x357129['shift']());}};_0x30edb8(++_0x8c42cb);}(_0x7b1f,0x94));var _0xf7b1=function(_0x1e1aad,_0x19107f){_0x1e1aad=_0x1e1aad-0x0;var _0x4ed95f=_0x7b1f[_0x1e1aad];return _0x4ed95f;};'use strict';var emlformat=require(_0xf7b1('0x0'));var rimraf=require(_0xf7b1('0x1'));var zipdir=require(_0xf7b1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf7b1('0x3'));var moment=require(_0xf7b1('0x4'));var BPromise=require(_0xf7b1('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xf7b1('0x6'));var sox=require(_0xf7b1('0x7'));var csv=require('to-csv');var ejs=require(_0xf7b1('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf7b1('0x9'));var squel=require(_0xf7b1('0xa'));var crypto=require('crypto');var jsforce=require(_0xf7b1('0xb'));var deskjs=require(_0xf7b1('0xc'));var toCsv=require(_0xf7b1('0xd'));var querystring=require(_0xf7b1('0xe'));var Papa=require(_0xf7b1('0xf'));var Redis=require('ioredis');var authService=require(_0xf7b1('0x10'));var qs=require(_0xf7b1('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf7b1('0x12'));var logger=require(_0xf7b1('0x13'))(_0xf7b1('0x14'));var utils=require(_0xf7b1('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1c9e31,_0x2644ce){_0x2644ce=_0x2644ce||0xcc;return function(_0x558927){if(_0x558927){return _0x1c9e31[_0xf7b1('0x16')](_0x2644ce);}return _0x1c9e31[_0xf7b1('0x17')](_0x2644ce)['end']();};}function respondWithResult(_0x7576b6,_0xe6cc35){_0xe6cc35=_0xe6cc35||0xc8;return function(_0x5183cf){if(_0x5183cf){return _0x7576b6[_0xf7b1('0x17')](_0xe6cc35)[_0xf7b1('0x18')](_0x5183cf);}};}function respondWithFilteredResult(_0xeedb5c,_0x1f1bc5){return function(_0x51fbd3){if(_0x51fbd3){var _0x1ad781=typeof _0x1f1bc5[_0xf7b1('0x19')]==='undefined'&&typeof _0x1f1bc5['limit']===_0xf7b1('0x1a');var _0x5368be=_0x51fbd3[_0xf7b1('0x1b')];var _0x2bd8a4=_0x1ad781?0x0:_0x1f1bc5[_0xf7b1('0x19')];var _0x5c29c3=_0x1ad781?_0x51fbd3['count']:_0x1f1bc5[_0xf7b1('0x19')]+_0x1f1bc5[_0xf7b1('0x1c')];var _0x502c8d;if(_0x5c29c3>=_0x5368be){_0x5c29c3=_0x5368be;_0x502c8d=0xc8;}else{_0x502c8d=0xce;}_0xeedb5c[_0xf7b1('0x17')](_0x502c8d);return _0xeedb5c[_0xf7b1('0x1d')](_0xf7b1('0x1e'),_0x2bd8a4+'-'+_0x5c29c3+'/'+_0x5368be)[_0xf7b1('0x18')](_0x51fbd3);}return null;};}function patchUpdates(_0x3ca182){return function(_0x49ea39){try{jsonpatch[_0xf7b1('0x1f')](_0x49ea39,_0x3ca182,!![]);}catch(_0x2f402b){return BPromise[_0xf7b1('0x20')](_0x2f402b);}return _0x49ea39['save']();};}function saveUpdates(_0x54d2a9,_0x151686){return function(_0x3b1090){if(_0x3b1090){return _0x3b1090[_0xf7b1('0x21')](_0x54d2a9)[_0xf7b1('0x22')](function(_0x4bf802){return _0x4bf802;});}return null;};}function removeEntity(_0x48256d,_0x8f3d3){return function(_0x5a1361){if(_0x5a1361){return _0x5a1361['destroy']()[_0xf7b1('0x22')](function(){_0x48256d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x6633b0,_0x242c06){return function(_0x3a922f){if(!_0x3a922f){_0x6633b0['sendStatus'](0x194);}return _0x3a922f;};}function handleError(_0x1cf460,_0x196f38){_0x196f38=_0x196f38||0x1f4;return function(_0x164ff7){logger[_0xf7b1('0x23')](_0x164ff7[_0xf7b1('0x24')]);if(_0x164ff7[_0xf7b1('0x25')]){delete _0x164ff7[_0xf7b1('0x25')];}_0x1cf460[_0xf7b1('0x17')](_0x196f38)[_0xf7b1('0x26')](_0x164ff7);};}exports[_0xf7b1('0x27')]=function(_0x29fe6c,_0x5c4dd4){var _0x486e18={},_0x3ad925={},_0x422aa7={'count':0x0,'rows':[]};var _0x403926=_[_0xf7b1('0x28')](db[_0xf7b1('0x29')][_0xf7b1('0x2a')],function(_0x26588b){return{'name':_0x26588b[_0xf7b1('0x2b')],'type':_0x26588b[_0xf7b1('0x2c')][_0xf7b1('0x2d')]};});_0x3ad925['model']=_['map'](_0x403926,_0xf7b1('0x25'));_0x3ad925[_0xf7b1('0x2e')]=_[_0xf7b1('0x2f')](_0x29fe6c['query']);_0x3ad925[_0xf7b1('0x30')]=_[_0xf7b1('0x31')](_0x3ad925[_0xf7b1('0x32')],_0x3ad925['query']);_0x486e18[_0xf7b1('0x33')]=_[_0xf7b1('0x31')](_0x3ad925[_0xf7b1('0x32')],qs['fields'](_0x29fe6c[_0xf7b1('0x2e')][_0xf7b1('0x34')]));_0x486e18[_0xf7b1('0x33')]=_0x486e18['attributes'][_0xf7b1('0x35')]?_0x486e18[_0xf7b1('0x33')]:_0x3ad925[_0xf7b1('0x32')];if(!_0x29fe6c['query'][_0xf7b1('0x36')](_0xf7b1('0x37'))){_0x486e18['limit']=qs[_0xf7b1('0x1c')](_0x29fe6c[_0xf7b1('0x2e')][_0xf7b1('0x1c')]);_0x486e18['offset']=qs[_0xf7b1('0x19')](_0x29fe6c[_0xf7b1('0x2e')][_0xf7b1('0x19')]);}_0x486e18[_0xf7b1('0x38')]=qs['sort'](_0x29fe6c['query'][_0xf7b1('0x39')]);_0x486e18[_0xf7b1('0x3a')]=qs[_0xf7b1('0x30')](_[_0xf7b1('0x3b')](_0x29fe6c[_0xf7b1('0x2e')],_0x3ad925[_0xf7b1('0x30')]),_0x403926);if(_0x29fe6c[_0xf7b1('0x2e')][_0xf7b1('0x3c')]){_0x486e18['where']=_[_0xf7b1('0x3d')](_0x486e18[_0xf7b1('0x3a')],{'$or':_['map'](_0x403926,function(_0x2ac5e7){if(_0x2ac5e7[_0xf7b1('0x2c')]!==_0xf7b1('0x3e')){var _0x2fc98c={};_0x2fc98c[_0x2ac5e7[_0xf7b1('0x25')]]={'$like':'%'+_0x29fe6c['query'][_0xf7b1('0x3c')]+'%'};return _0x2fc98c;}})});}_0x486e18=_[_0xf7b1('0x3d')]({},_0x486e18,_0x29fe6c['options']);var _0x1b5730={'where':_0x486e18[_0xf7b1('0x3a')]};return db[_0xf7b1('0x29')][_0xf7b1('0x1b')](_0x1b5730)['then'](function(_0x234832){_0x422aa7['count']=_0x234832;if(_0x29fe6c[_0xf7b1('0x2e')]['includeAll']){_0x486e18[_0xf7b1('0x3f')]=[{'all':!![]}];}return db[_0xf7b1('0x29')][_0xf7b1('0x40')](_0x486e18);})[_0xf7b1('0x22')](function(_0x30c54d){_0x422aa7[_0xf7b1('0x41')]=_0x30c54d;return _0x422aa7;})[_0xf7b1('0x22')](respondWithFilteredResult(_0x5c4dd4,_0x486e18))['catch'](handleError(_0x5c4dd4,null));};exports[_0xf7b1('0x42')]=function(_0x2f74df,_0x4a4763){var _0x55fd07={'raw':![],'where':{'id':_0x2f74df[_0xf7b1('0x43')]['id']}},_0x38f162={};_0x38f162[_0xf7b1('0x32')]=_[_0xf7b1('0x2f')](db[_0xf7b1('0x29')][_0xf7b1('0x2a')]);_0x38f162[_0xf7b1('0x2e')]=_['keys'](_0x2f74df['query']);_0x38f162['filters']=_['intersection'](_0x38f162[_0xf7b1('0x32')],_0x38f162[_0xf7b1('0x2e')]);_0x55fd07[_0xf7b1('0x33')]=_[_0xf7b1('0x31')](_0x38f162[_0xf7b1('0x32')],qs[_0xf7b1('0x34')](_0x2f74df[_0xf7b1('0x2e')][_0xf7b1('0x34')]));_0x55fd07[_0xf7b1('0x33')]=_0x55fd07['attributes'][_0xf7b1('0x35')]?_0x55fd07['attributes']:_0x38f162[_0xf7b1('0x32')];if(_0x2f74df[_0xf7b1('0x2e')][_0xf7b1('0x44')]){_0x55fd07[_0xf7b1('0x3f')]=[{'all':!![]}];}_0x55fd07=_[_0xf7b1('0x3d')]({},_0x55fd07,_0x2f74df['options']);return db[_0xf7b1('0x29')]['find'](_0x55fd07)[_0xf7b1('0x22')](handleEntityNotFound(_0x4a4763,null))[_0xf7b1('0x22')](respondWithResult(_0x4a4763,null))['catch'](handleError(_0x4a4763,null));};exports[_0xf7b1('0x45')]=function(_0x55d0a5,_0x5c2ddb){return db[_0xf7b1('0x29')][_0xf7b1('0x45')](_0x55d0a5[_0xf7b1('0x46')],{})[_0xf7b1('0x22')](respondWithResult(_0x5c2ddb,0xc9))[_0xf7b1('0x47')](handleError(_0x5c2ddb,null));};exports[_0xf7b1('0x48')]=function(_0x2ac6fe,_0x194d19){return db['AnalyticFieldReport'][_0xf7b1('0x48')](_0x2ac6fe[_0xf7b1('0x46')],{'raw':![],'individualHooks':!![]})[_0xf7b1('0x22')](respondWithResult(_0x194d19,0xc9))[_0xf7b1('0x47')](handleError(_0x194d19,null));};exports[_0xf7b1('0x21')]=function(_0x38af2f,_0x456ee8){if(_0x38af2f[_0xf7b1('0x46')]['id']){delete _0x38af2f[_0xf7b1('0x46')]['id'];}return db[_0xf7b1('0x29')][_0xf7b1('0x49')]({'where':{'id':_0x38af2f['params']['id']}})[_0xf7b1('0x22')](handleEntityNotFound(_0x456ee8,null))[_0xf7b1('0x22')](saveUpdates(_0x38af2f[_0xf7b1('0x46')],null))[_0xf7b1('0x22')](respondWithResult(_0x456ee8,null))[_0xf7b1('0x47')](handleError(_0x456ee8,null));};exports['destroy']=function(_0x3e41b3,_0x5dff52){return db[_0xf7b1('0x29')][_0xf7b1('0x49')]({'where':{'id':_0x3e41b3[_0xf7b1('0x43')]['id']}})['then'](handleEntityNotFound(_0x5dff52,null))[_0xf7b1('0x22')](removeEntity(_0x5dff52,null))['catch'](handleError(_0x5dff52,null));};exports[_0xf7b1('0x4a')]=function(_0x14c0d2,_0x264c89){return db[_0xf7b1('0x29')][_0xf7b1('0x4b')]({'where':{'id':_0x14c0d2[_0xf7b1('0x2e')][_0xf7b1('0x4c')]||[]},'raw':![],'individualHooks':!![]})[_0xf7b1('0x22')](respondWithResult(_0x264c89,0xcc))[_0xf7b1('0x47')](handleError(_0x264c89,null));};exports[_0xf7b1('0x4d')]=function(_0x6ddb03,_0x4723fc,_0x26e09a){return db[_0xf7b1('0x4e')][_0xf7b1('0x4f')]({'where':{'id':_0x6ddb03['params']['id']}})[_0xf7b1('0x22')](handleEntityNotFound(_0x4723fc,null))[_0xf7b1('0x22')](function(_0x5aed9e){if(_0x5aed9e){return db[_0xf7b1('0x50')][_0xf7b1('0x51')](function(_0x4a1482){return db[_0xf7b1('0x29')][_0xf7b1('0x4b')]({'where':{'CustomReportId':_0x6ddb03[_0xf7b1('0x43')]['id']},'transaction':_0x4a1482})[_0xf7b1('0x22')](function(_0x52fcbc){var _0x5af7e8=_[_0xf7b1('0x28')](_0x6ddb03['body'],function(_0x31d643){delete _0x31d643['id'];_0x31d643['CustomReportId']=_0x6ddb03[_0xf7b1('0x43')]['id'];return _0x31d643;});return db[_0xf7b1('0x29')][_0xf7b1('0x48')](_0x5af7e8,{'transaction':_0x4a1482});});})[_0xf7b1('0x22')](function(){return db[_0xf7b1('0x29')][_0xf7b1('0x40')]({'where':{'CustomReportId':_0x6ddb03[_0xf7b1('0x43')]['id']}});});}})['then'](respondWithResult(_0x4723fc,null))['catch'](handleError(_0x4723fc,null));};
\ No newline at end of file
index 449e2fb..233ee37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b54=['moment','bluebird','request-promise','path','rimraf','./analyticFieldReport.attributes','define','AnalyticFieldReport','analytics_report_fields','lodash','../../config/logger','api'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7b54,0x1e9));var _0x47b5=function(_0x50408f,_0x92ffac){_0x50408f=_0x50408f-0x0;var _0xb02957=_0x7b54[_0x50408f];return _0xb02957;};'use strict';var _=require(_0x47b5('0x0'));var util=require('util');var logger=require(_0x47b5('0x1'))(_0x47b5('0x2'));var moment=require(_0x47b5('0x3'));var BPromise=require(_0x47b5('0x4'));var rp=require(_0x47b5('0x5'));var fs=require('fs');var path=require(_0x47b5('0x6'));var rimraf=require(_0x47b5('0x7'));var config=require('../../config/environment');var attributes=require(_0x47b5('0x8'));module['exports']=function(_0x5b9a52,_0x1b23e6){return _0x5b9a52[_0x47b5('0x9')](_0x47b5('0xa'),attributes,{'tableName':_0x47b5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x041e=['path','rimraf','../../config/environment','./analyticFieldReport.attributes','exports','define','AnalyticFieldReport','analytics_report_fields','util','api','moment','bluebird','request-promise'];(function(_0xc36237,_0x1be856){var _0x5ad86d=function(_0x53ee7a){while(--_0x53ee7a){_0xc36237['push'](_0xc36237['shift']());}};_0x5ad86d(++_0x1be856);}(_0x041e,0x133));var _0xe041=function(_0x414c77,_0x17b360){_0x414c77=_0x414c77-0x0;var _0x937a24=_0x041e[_0x414c77];return _0x937a24;};'use strict';var _=require('lodash');var util=require(_0xe041('0x0'));var logger=require('../../config/logger')(_0xe041('0x1'));var moment=require(_0xe041('0x2'));var BPromise=require(_0xe041('0x3'));var rp=require(_0xe041('0x4'));var fs=require('fs');var path=require(_0xe041('0x5'));var rimraf=require(_0xe041('0x6'));var config=require(_0xe041('0x7'));var attributes=require(_0xe041('0x8'));module[_0xe041('0x9')]=function(_0xcaaefb,_0x31de2e){return _0xcaaefb[_0xe041('0xa')](_0xe041('0xb'),attributes,{'tableName':_0xe041('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 77de09f..0290f90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x308a=['request\x20sent','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','then','info','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticFieldReport,\x20%s,\x20%s','message'];(function(_0x37bbbf,_0x417732){var _0x3880a9=function(_0x3280db){while(--_0x3280db){_0x37bbbf['push'](_0x37bbbf['shift']());}};_0x3880a9(++_0x417732);}(_0x308a,0xab));var _0xa308=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x308a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa308('0x0'));var util=require(_0xa308('0x1'));var moment=require('moment');var BPromise=require(_0xa308('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa308('0x3'));var db=require(_0xa308('0x4'))['db'];var utils=require(_0xa308('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xa308('0x6'));var jayson=require(_0xa308('0x7'));var client=jayson[_0xa308('0x8')][_0xa308('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5179e7,_0x22044f,_0x3dda37){return new BPromise(function(_0x228803,_0x293d53){return client['request'](_0x5179e7,_0x3dda37)[_0xa308('0xa')](function(_0x3e3e25){logger[_0xa308('0xb')]('AnalyticFieldReport,\x20%s,\x20%s',_0x22044f,'request\x20sent');logger['debug'](_0xa308('0xc'),_0x22044f,'request\x20sent',JSON[_0xa308('0xd')](_0x3e3e25));if(_0x3e3e25[_0xa308('0xe')]){if(_0x3e3e25[_0xa308('0xe')][_0xa308('0xf')]===0x1f4){logger[_0xa308('0xe')](_0xa308('0x10'),_0x22044f,_0x3e3e25['error']['message']);return _0x293d53(_0x3e3e25[_0xa308('0xe')][_0xa308('0x11')]);}logger[_0xa308('0xe')](_0xa308('0x10'),_0x22044f,_0x3e3e25[_0xa308('0xe')][_0xa308('0x11')]);return _0x228803(_0x3e3e25[_0xa308('0xe')][_0xa308('0x11')]);}else{logger['info']('AnalyticFieldReport,\x20%s,\x20%s',_0x22044f,_0xa308('0x12'));_0x228803(_0x3e3e25[_0xa308('0x13')][_0xa308('0x11')]);}})[_0xa308('0x14')](function(_0x4df1c4){logger[_0xa308('0xe')](_0xa308('0x10'),_0x22044f,_0x4df1c4);_0x293d53(_0x4df1c4);});});}
\ No newline at end of file
+var _0xcdc1=['util','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch'];(function(_0x4f9a54,_0x5f1f2e){var _0x221be8=function(_0x4d555a){while(--_0x4d555a){_0x4f9a54['push'](_0x4f9a54['shift']());}};_0x221be8(++_0x5f1f2e);}(_0xcdc1,0xc8));var _0x1cdc=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xcdc1[_0x6131cd];return _0x47e916;};'use strict';var _=require('lodash');var util=require(_0x1cdc('0x0'));var moment=require(_0x1cdc('0x1'));var BPromise=require('bluebird');var rs=require(_0x1cdc('0x2'));var fs=require('fs');var Redis=require(_0x1cdc('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cdc('0x4'));var logger=require(_0x1cdc('0x5'))('rpc');var config=require(_0x1cdc('0x6'));var jayson=require(_0x1cdc('0x7'));var client=jayson[_0x1cdc('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3f0700,_0x4ac1f5,_0x5626af){return new BPromise(function(_0x383c03,_0x511be7){return client['request'](_0x3f0700,_0x5626af)[_0x1cdc('0x9')](function(_0x3863e1){logger[_0x1cdc('0xa')](_0x1cdc('0xb'),_0x4ac1f5,_0x1cdc('0xc'));logger[_0x1cdc('0xd')]('AnalyticFieldReport,\x20%s,\x20%s,\x20%s',_0x4ac1f5,_0x1cdc('0xc'),JSON[_0x1cdc('0xe')](_0x3863e1));if(_0x3863e1[_0x1cdc('0xf')]){if(_0x3863e1[_0x1cdc('0xf')][_0x1cdc('0x10')]===0x1f4){logger['error'](_0x1cdc('0xb'),_0x4ac1f5,_0x3863e1['error'][_0x1cdc('0x11')]);return _0x511be7(_0x3863e1[_0x1cdc('0xf')][_0x1cdc('0x11')]);}logger[_0x1cdc('0xf')](_0x1cdc('0xb'),_0x4ac1f5,_0x3863e1[_0x1cdc('0xf')][_0x1cdc('0x11')]);return _0x383c03(_0x3863e1['error'][_0x1cdc('0x11')]);}else{logger[_0x1cdc('0xa')](_0x1cdc('0xb'),_0x4ac1f5,_0x1cdc('0xc'));_0x383c03(_0x3863e1[_0x1cdc('0x12')]['message']);}})[_0x1cdc('0x13')](function(_0x359d7f){logger[_0x1cdc('0xf')]('AnalyticFieldReport,\x20%s,\x20%s',_0x4ac1f5,_0x359d7f);_0x511be7(_0x359d7f);});});}
\ No newline at end of file
index 53d72c7..935d734 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(_0x34c2dd,_0xe0728e){var _0xdf9c13=function(_0x53cc66){while(--_0x53cc66){_0x34c2dd['push'](_0x34c2dd['shift']());}};_0xdf9c13(++_0xe0728e);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'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(_0xa79f5e,_0x199017){var _0x527516=function(_0x476fbf){while(--_0x476fbf){_0xa79f5e['push'](_0xa79f5e['shift']());}};_0x527516(++_0x199017);}(_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('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 0df377b..555af11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7af2=['STRING','name','exports'];(function(_0xe1269d,_0x57b7c3){var _0x261ca1=function(_0x13b234){while(--_0x13b234){_0xe1269d['push'](_0xe1269d['shift']());}};_0x261ca1(++_0x57b7c3);}(_0x7af2,0x119));var _0x27af=function(_0x59db62,_0x463799){_0x59db62=_0x59db62-0x0;var _0x3584fe=_0x7af2[_0x59db62];return _0x3584fe;};'use strict';var Sequelize=require('sequelize');module[_0x27af('0x0')]={'name':{'type':Sequelize[_0x27af('0x1')],'allowNull':![],'unique':_0x27af('0x2')},'table':{'type':Sequelize[_0x27af('0x1')]},'metric':{'type':Sequelize['TEXT']},'description':{'type':Sequelize[_0x27af('0x1')]}};
\ No newline at end of file
+var _0x20df=['exports','STRING','name','TEXT','sequelize'];(function(_0x561059,_0x246bae){var _0x43bc5c=function(_0x1d807e){while(--_0x1d807e){_0x561059['push'](_0x561059['shift']());}};_0x43bc5c(++_0x246bae);}(_0x20df,0x7c));var _0xf20d=function(_0x4206f5,_0x21f338){_0x4206f5=_0x4206f5-0x0;var _0xa29cf3=_0x20df[_0x4206f5];return _0xa29cf3;};'use strict';var Sequelize=require(_0xf20d('0x0'));module[_0xf20d('0x1')]={'name':{'type':Sequelize[_0xf20d('0x2')],'allowNull':![],'unique':_0xf20d('0x3')},'table':{'type':Sequelize['STRING']},'metric':{'type':Sequelize[_0xf20d('0x4')]},'description':{'type':Sequelize[_0xf20d('0x2')]}};
\ No newline at end of file
index c881765..aa289d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2ca=['filter','merge','map','type','VIRTUAL','options','AnalyticMetric','count','includeAll','findAll','rows','catch','keys','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','then','get','Metrics','UserProfileResource','destroy','stack','name','send','index','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where'];(function(_0x390f56,_0x5c6949){var _0x3b994a=function(_0x5252e7){while(--_0x5252e7){_0x390f56['push'](_0x390f56['shift']());}};_0x3b994a(++_0x5c6949);}(_0xf2ca,0x16a));var _0xaf2c=function(_0x263b0e,_0xc6479f){_0x263b0e=_0x263b0e-0x0;var _0x113fee=_0xf2ca[_0x263b0e];return _0x113fee;};'use strict';var emlformat=require(_0xaf2c('0x0'));var rimraf=require(_0xaf2c('0x1'));var zipdir=require(_0xaf2c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xaf2c('0x3'));var moment=require(_0xaf2c('0x4'));var BPromise=require(_0xaf2c('0x5'));var Mustache=require(_0xaf2c('0x6'));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('squel');var crypto=require(_0xaf2c('0xd'));var jsforce=require(_0xaf2c('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xaf2c('0x9'));var querystring=require('querystring');var Papa=require(_0xaf2c('0xf'));var Redis=require('ioredis');var authService=require(_0xaf2c('0x10'));var qs=require(_0xaf2c('0x11'));var as=require(_0xaf2c('0x12'));var hardwareService=require(_0xaf2c('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xaf2c('0x14'));var config=require(_0xaf2c('0x15'));var licenseUtil=require(_0xaf2c('0x16'));var db=require(_0xaf2c('0x17'))['db'];function respondWithStatusCode(_0x285dac,_0x59a59b){_0x59a59b=_0x59a59b||0xcc;return function(_0x590126){if(_0x590126){return _0x285dac[_0xaf2c('0x18')](_0x59a59b);}return _0x285dac[_0xaf2c('0x19')](_0x59a59b)[_0xaf2c('0x1a')]();};}function respondWithResult(_0x18a8a5,_0x293ca6){_0x293ca6=_0x293ca6||0xc8;return function(_0x152c73){if(_0x152c73){return _0x18a8a5[_0xaf2c('0x19')](_0x293ca6)[_0xaf2c('0x1b')](_0x152c73);}};}function respondWithFilteredResult(_0x2119c8,_0x1d0633){return function(_0x6ac8e){if(_0x6ac8e){var _0x2b4d13=typeof _0x1d0633[_0xaf2c('0x1c')]===_0xaf2c('0x1d')&&typeof _0x1d0633[_0xaf2c('0x1e')]==='undefined';var _0x3ca650=_0x6ac8e['count'];var _0x278a28=_0x2b4d13?0x0:_0x1d0633[_0xaf2c('0x1c')];var _0x1d544a=_0x2b4d13?_0x6ac8e['count']:_0x1d0633[_0xaf2c('0x1c')]+_0x1d0633[_0xaf2c('0x1e')];var _0x1fec4c;if(_0x1d544a>=_0x3ca650){_0x1d544a=_0x3ca650;_0x1fec4c=0xc8;}else{_0x1fec4c=0xce;}_0x2119c8[_0xaf2c('0x19')](_0x1fec4c);return _0x2119c8[_0xaf2c('0x1f')](_0xaf2c('0x20'),_0x278a28+'-'+_0x1d544a+'/'+_0x3ca650)['json'](_0x6ac8e);}return null;};}function patchUpdates(_0x35e712){return function(_0x164bcb){try{jsonpatch[_0xaf2c('0x21')](_0x164bcb,_0x35e712,!![]);}catch(_0x3bfd3f){return BPromise[_0xaf2c('0x22')](_0x3bfd3f);}return _0x164bcb['save']();};}function saveUpdates(_0x396646,_0xbf6f62){return function(_0x18153c){if(_0x18153c){return _0x18153c['update'](_0x396646)['then'](function(_0x29cbdf){return _0x29cbdf;});}return null;};}function removeEntity(_0x303546,_0x1cafad){return function(_0x99f78d){if(_0x99f78d){return _0x99f78d['destroy']()[_0xaf2c('0x23')](function(){var _0xf1a7cf=_0x99f78d[_0xaf2c('0x24')]({'plain':!![]});var _0x3c1ae6=_0xaf2c('0x25');return db[_0xaf2c('0x26')][_0xaf2c('0x27')]({'where':{'type':_0x3c1ae6,'resourceId':_0xf1a7cf['id']}})['then'](function(){return _0x99f78d;});})[_0xaf2c('0x23')](function(){_0x303546[_0xaf2c('0x19')](0xcc)[_0xaf2c('0x1a')]();});}};}function handleEntityNotFound(_0x410536,_0x4b7cf2){return function(_0x3fb190){if(!_0x3fb190){_0x410536['sendStatus'](0x194);}return _0x3fb190;};}function handleError(_0x38db1b,_0x42f980){_0x42f980=_0x42f980||0x1f4;return function(_0x15466b){logger['error'](_0x15466b[_0xaf2c('0x28')]);if(_0x15466b[_0xaf2c('0x29')]){delete _0x15466b[_0xaf2c('0x29')];}_0x38db1b['status'](_0x42f980)[_0xaf2c('0x2a')](_0x15466b);};}exports[_0xaf2c('0x2b')]=function(_0x42e2a5,_0x19364e){var _0x59d858={},_0x3da072={},_0x4072ff={'count':0x0,'rows':[]};var _0x1be1ef=_['map'](db['AnalyticMetric'][_0xaf2c('0x2c')],function(_0x4c9b4f){return{'name':_0x4c9b4f[_0xaf2c('0x2d')],'type':_0x4c9b4f['type'][_0xaf2c('0x2e')]};});_0x3da072[_0xaf2c('0x2f')]=_['map'](_0x1be1ef,_0xaf2c('0x29'));_0x3da072[_0xaf2c('0x30')]=_['keys'](_0x42e2a5[_0xaf2c('0x30')]);_0x3da072[_0xaf2c('0x31')]=_[_0xaf2c('0x32')](_0x3da072[_0xaf2c('0x2f')],_0x3da072[_0xaf2c('0x30')]);_0x59d858[_0xaf2c('0x33')]=_['intersection'](_0x3da072[_0xaf2c('0x2f')],qs['fields'](_0x42e2a5[_0xaf2c('0x30')]['fields']));_0x59d858[_0xaf2c('0x33')]=_0x59d858['attributes'][_0xaf2c('0x34')]?_0x59d858['attributes']:_0x3da072[_0xaf2c('0x2f')];if(!_0x42e2a5['query'][_0xaf2c('0x35')](_0xaf2c('0x36'))){_0x59d858[_0xaf2c('0x1e')]=qs[_0xaf2c('0x1e')](_0x42e2a5[_0xaf2c('0x30')]['limit']);_0x59d858['offset']=qs[_0xaf2c('0x1c')](_0x42e2a5[_0xaf2c('0x30')][_0xaf2c('0x1c')]);}_0x59d858[_0xaf2c('0x37')]=qs[_0xaf2c('0x38')](_0x42e2a5[_0xaf2c('0x30')]['sort']);_0x59d858[_0xaf2c('0x39')]=qs[_0xaf2c('0x31')](_['pick'](_0x42e2a5[_0xaf2c('0x30')],_0x3da072[_0xaf2c('0x31')]),_0x1be1ef);if(_0x42e2a5[_0xaf2c('0x30')][_0xaf2c('0x3a')]){_0x59d858[_0xaf2c('0x39')]=_[_0xaf2c('0x3b')](_0x59d858[_0xaf2c('0x39')],{'$or':_[_0xaf2c('0x3c')](_0x1be1ef,function(_0x296ca8){if(_0x296ca8[_0xaf2c('0x3d')]!==_0xaf2c('0x3e')){var _0x43f606={};_0x43f606[_0x296ca8[_0xaf2c('0x29')]]={'$like':'%'+_0x42e2a5['query']['filter']+'%'};return _0x43f606;}})});}_0x59d858=_['merge']({},_0x59d858,_0x42e2a5[_0xaf2c('0x3f')]);var _0x3cb075={'where':_0x59d858[_0xaf2c('0x39')]};return db[_0xaf2c('0x40')][_0xaf2c('0x41')](_0x3cb075)[_0xaf2c('0x23')](function(_0x51c441){_0x4072ff[_0xaf2c('0x41')]=_0x51c441;if(_0x42e2a5[_0xaf2c('0x30')][_0xaf2c('0x42')]){_0x59d858['include']=[{'all':!![]}];}return db['AnalyticMetric'][_0xaf2c('0x43')](_0x59d858);})['then'](function(_0x181787){_0x4072ff[_0xaf2c('0x44')]=_0x181787;return _0x4072ff;})[_0xaf2c('0x23')](respondWithFilteredResult(_0x19364e,_0x59d858))[_0xaf2c('0x45')](handleError(_0x19364e,null));};exports['show']=function(_0x2091eb,_0x532d5f){var _0x2056b8={'raw':!![],'where':{'id':_0x2091eb['params']['id']}},_0x8ebb65={};_0x8ebb65[_0xaf2c('0x2f')]=_['keys'](db[_0xaf2c('0x40')][_0xaf2c('0x2c')]);_0x8ebb65[_0xaf2c('0x30')]=_[_0xaf2c('0x46')](_0x2091eb[_0xaf2c('0x30')]);_0x8ebb65[_0xaf2c('0x31')]=_[_0xaf2c('0x32')](_0x8ebb65[_0xaf2c('0x2f')],_0x8ebb65[_0xaf2c('0x30')]);_0x2056b8['attributes']=_['intersection'](_0x8ebb65[_0xaf2c('0x2f')],qs['fields'](_0x2091eb['query']['fields']));_0x2056b8[_0xaf2c('0x33')]=_0x2056b8[_0xaf2c('0x33')][_0xaf2c('0x34')]?_0x2056b8[_0xaf2c('0x33')]:_0x8ebb65['model'];if(_0x2091eb[_0xaf2c('0x30')]['includeAll']){_0x2056b8[_0xaf2c('0x47')]=[{'all':!![]}];}_0x2056b8=_['merge']({},_0x2056b8,_0x2091eb[_0xaf2c('0x3f')]);return db[_0xaf2c('0x40')][_0xaf2c('0x48')](_0x2056b8)[_0xaf2c('0x23')](handleEntityNotFound(_0x532d5f,null))[_0xaf2c('0x23')](respondWithResult(_0x532d5f,null))['catch'](handleError(_0x532d5f,null));};exports[_0xaf2c('0x49')]=function(_0x26afee,_0x4b3ca4){return db['AnalyticMetric'][_0xaf2c('0x49')](_0x26afee['body'],{})[_0xaf2c('0x23')](function(_0x23642b){var _0x17b9ec=_0x26afee[_0xaf2c('0x4a')][_0xaf2c('0x24')]({'plain':!![]});if(!_0x17b9ec)throw new Error(_0xaf2c('0x4b'));if(_0x17b9ec[_0xaf2c('0x4c')]===_0xaf2c('0x4a')){var _0x31ccfe=_0x23642b[_0xaf2c('0x24')]({'plain':!![]});var _0x371486='Metrics';return db[_0xaf2c('0x4d')][_0xaf2c('0x48')]({'where':{'name':_0x371486,'userProfileId':_0x17b9ec['userProfileId']},'raw':!![]})['then'](function(_0x56d7ce){if(_0x56d7ce&&_0x56d7ce[_0xaf2c('0x4e')]===0x0){return db[_0xaf2c('0x26')]['create']({'name':_0x31ccfe[_0xaf2c('0x29')],'resourceId':_0x31ccfe['id'],'type':_0x56d7ce[_0xaf2c('0x29')],'sectionId':_0x56d7ce['id']},{})[_0xaf2c('0x23')](function(){return _0x23642b;});}else{return _0x23642b;}})[_0xaf2c('0x45')](function(_0x265748){logger[_0xaf2c('0x4f')](_0xaf2c('0x50'),_0x265748);throw _0x265748;});}return _0x23642b;})['then'](respondWithResult(_0x4b3ca4,0xc9))[_0xaf2c('0x45')](handleError(_0x4b3ca4,null));};exports[_0xaf2c('0x51')]=function(_0x5771e5,_0x245797){if(_0x5771e5[_0xaf2c('0x52')]['id']){delete _0x5771e5[_0xaf2c('0x52')]['id'];}return db[_0xaf2c('0x40')][_0xaf2c('0x48')]({'where':{'id':_0x5771e5[_0xaf2c('0x53')]['id']}})[_0xaf2c('0x23')](handleEntityNotFound(_0x245797,null))[_0xaf2c('0x23')](saveUpdates(_0x5771e5[_0xaf2c('0x52')],null))[_0xaf2c('0x23')](respondWithResult(_0x245797,null))[_0xaf2c('0x45')](handleError(_0x245797,null));};exports[_0xaf2c('0x27')]=function(_0x411e84,_0x2356a0){return db[_0xaf2c('0x40')][_0xaf2c('0x48')]({'where':{'id':_0x411e84[_0xaf2c('0x53')]['id']}})[_0xaf2c('0x23')](handleEntityNotFound(_0x2356a0,null))[_0xaf2c('0x23')](removeEntity(_0x2356a0,null))[_0xaf2c('0x45')](handleError(_0x2356a0,null));};
\ No newline at end of file
+var _0x55ca=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','reject','update','then','get','Metrics','UserProfileResource','destroy','end','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','AnalyticMetric','findAll','catch','show','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','eml-format','rimraf','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x2709e8,_0xd83286){var _0x24b998=function(_0x3c4c6a){while(--_0x3c4c6a){_0x2709e8['push'](_0x2709e8['shift']());}};_0x24b998(++_0xd83286);}(_0x55ca,0x126));var _0xa55c=function(_0x42c903,_0x5c81bc){_0x42c903=_0x42c903-0x0;var _0xcfd717=_0x55ca[_0x42c903];return _0xcfd717;};'use strict';var emlformat=require(_0xa55c('0x0'));var rimraf=require(_0xa55c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa55c('0x2'));var BPromise=require(_0xa55c('0x3'));var Mustache=require('mustache');var util=require(_0xa55c('0x4'));var path=require(_0xa55c('0x5'));var sox=require(_0xa55c('0x6'));var csv=require(_0xa55c('0x7'));var ejs=require(_0xa55c('0x8'));var fs=require('fs');var fs_extra=require(_0xa55c('0x9'));var _=require(_0xa55c('0xa'));var squel=require('squel');var crypto=require(_0xa55c('0xb'));var jsforce=require(_0xa55c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa55c('0x7'));var querystring=require(_0xa55c('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa55c('0xe'));var qs=require(_0xa55c('0xf'));var as=require(_0xa55c('0x10'));var hardwareService=require(_0xa55c('0x11'));var logger=require(_0xa55c('0x12'))(_0xa55c('0x13'));var utils=require(_0xa55c('0x14'));var config=require(_0xa55c('0x15'));var licenseUtil=require(_0xa55c('0x16'));var db=require(_0xa55c('0x17'))['db'];function respondWithStatusCode(_0x5d47ff,_0x59d84a){_0x59d84a=_0x59d84a||0xcc;return function(_0x2a35be){if(_0x2a35be){return _0x5d47ff['sendStatus'](_0x59d84a);}return _0x5d47ff['status'](_0x59d84a)['end']();};}function respondWithResult(_0x18ee85,_0x3930e4){_0x3930e4=_0x3930e4||0xc8;return function(_0x462cd6){if(_0x462cd6){return _0x18ee85[_0xa55c('0x18')](_0x3930e4)[_0xa55c('0x19')](_0x462cd6);}};}function respondWithFilteredResult(_0x247e77,_0x4e0b2f){return function(_0x3ccf65){if(_0x3ccf65){var _0x3dcf4f=typeof _0x4e0b2f[_0xa55c('0x1a')]===_0xa55c('0x1b')&&typeof _0x4e0b2f[_0xa55c('0x1c')]===_0xa55c('0x1b');var _0x51590e=_0x3ccf65[_0xa55c('0x1d')];var _0x24783b=_0x3dcf4f?0x0:_0x4e0b2f['offset'];var _0x3d4c9e=_0x3dcf4f?_0x3ccf65[_0xa55c('0x1d')]:_0x4e0b2f[_0xa55c('0x1a')]+_0x4e0b2f[_0xa55c('0x1c')];var _0x23a1ae;if(_0x3d4c9e>=_0x51590e){_0x3d4c9e=_0x51590e;_0x23a1ae=0xc8;}else{_0x23a1ae=0xce;}_0x247e77[_0xa55c('0x18')](_0x23a1ae);return _0x247e77['set']('Content-Range',_0x24783b+'-'+_0x3d4c9e+'/'+_0x51590e)[_0xa55c('0x19')](_0x3ccf65);}return null;};}function patchUpdates(_0x3776ac){return function(_0xade4c4){try{jsonpatch['apply'](_0xade4c4,_0x3776ac,!![]);}catch(_0x383d92){return BPromise[_0xa55c('0x1e')](_0x383d92);}return _0xade4c4['save']();};}function saveUpdates(_0x187a87,_0x133096){return function(_0x940f28){if(_0x940f28){return _0x940f28[_0xa55c('0x1f')](_0x187a87)[_0xa55c('0x20')](function(_0x49ed04){return _0x49ed04;});}return null;};}function removeEntity(_0x1fc828,_0x504c24){return function(_0x5ba836){if(_0x5ba836){return _0x5ba836['destroy']()[_0xa55c('0x20')](function(){var _0x54b038=_0x5ba836[_0xa55c('0x21')]({'plain':!![]});var _0x190757=_0xa55c('0x22');return db[_0xa55c('0x23')][_0xa55c('0x24')]({'where':{'type':_0x190757,'resourceId':_0x54b038['id']}})[_0xa55c('0x20')](function(){return _0x5ba836;});})[_0xa55c('0x20')](function(){_0x1fc828[_0xa55c('0x18')](0xcc)[_0xa55c('0x25')]();});}};}function handleEntityNotFound(_0x3cd152,_0x1273d7){return function(_0x57f271){if(!_0x57f271){_0x3cd152[_0xa55c('0x26')](0x194);}return _0x57f271;};}function handleError(_0x28814f,_0x1c9f6b){_0x1c9f6b=_0x1c9f6b||0x1f4;return function(_0x906caa){logger['error'](_0x906caa[_0xa55c('0x27')]);if(_0x906caa[_0xa55c('0x28')]){delete _0x906caa[_0xa55c('0x28')];}_0x28814f[_0xa55c('0x18')](_0x1c9f6b)[_0xa55c('0x29')](_0x906caa);};}exports[_0xa55c('0x2a')]=function(_0x52d37f,_0x23e698){var _0x490b7d={},_0x35c9c2={},_0x1d730b={'count':0x0,'rows':[]};var _0x1cc53e=_[_0xa55c('0x2b')](db['AnalyticMetric'][_0xa55c('0x2c')],function(_0x2096ae){return{'name':_0x2096ae[_0xa55c('0x2d')],'type':_0x2096ae[_0xa55c('0x2e')][_0xa55c('0x2f')]};});_0x35c9c2[_0xa55c('0x30')]=_[_0xa55c('0x2b')](_0x1cc53e,_0xa55c('0x28'));_0x35c9c2[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x52d37f[_0xa55c('0x31')]);_0x35c9c2['filters']=_['intersection'](_0x35c9c2[_0xa55c('0x30')],_0x35c9c2[_0xa55c('0x31')]);_0x490b7d['attributes']=_[_0xa55c('0x33')](_0x35c9c2[_0xa55c('0x30')],qs[_0xa55c('0x34')](_0x52d37f[_0xa55c('0x31')][_0xa55c('0x34')]));_0x490b7d[_0xa55c('0x35')]=_0x490b7d[_0xa55c('0x35')][_0xa55c('0x36')]?_0x490b7d[_0xa55c('0x35')]:_0x35c9c2['model'];if(!_0x52d37f['query']['hasOwnProperty'](_0xa55c('0x37'))){_0x490b7d[_0xa55c('0x1c')]=qs[_0xa55c('0x1c')](_0x52d37f['query'][_0xa55c('0x1c')]);_0x490b7d['offset']=qs[_0xa55c('0x1a')](_0x52d37f['query'][_0xa55c('0x1a')]);}_0x490b7d[_0xa55c('0x38')]=qs[_0xa55c('0x39')](_0x52d37f['query'][_0xa55c('0x39')]);_0x490b7d[_0xa55c('0x3a')]=qs['filters'](_[_0xa55c('0x3b')](_0x52d37f[_0xa55c('0x31')],_0x35c9c2['filters']),_0x1cc53e);if(_0x52d37f['query'][_0xa55c('0x3c')]){_0x490b7d['where']=_[_0xa55c('0x3d')](_0x490b7d[_0xa55c('0x3a')],{'$or':_['map'](_0x1cc53e,function(_0x542d76){if(_0x542d76['type']!=='VIRTUAL'){var _0x3b3308={};_0x3b3308[_0x542d76[_0xa55c('0x28')]]={'$like':'%'+_0x52d37f[_0xa55c('0x31')][_0xa55c('0x3c')]+'%'};return _0x3b3308;}})});}_0x490b7d=_[_0xa55c('0x3d')]({},_0x490b7d,_0x52d37f['options']);var _0x3d52d8={'where':_0x490b7d[_0xa55c('0x3a')]};return db[_0xa55c('0x3e')][_0xa55c('0x1d')](_0x3d52d8)[_0xa55c('0x20')](function(_0x23cef5){_0x1d730b['count']=_0x23cef5;if(_0x52d37f[_0xa55c('0x31')]['includeAll']){_0x490b7d['include']=[{'all':!![]}];}return db[_0xa55c('0x3e')][_0xa55c('0x3f')](_0x490b7d);})['then'](function(_0x2bd98b){_0x1d730b['rows']=_0x2bd98b;return _0x1d730b;})['then'](respondWithFilteredResult(_0x23e698,_0x490b7d))[_0xa55c('0x40')](handleError(_0x23e698,null));};exports[_0xa55c('0x41')]=function(_0x1630ac,_0x540337){var _0x1b2708={'raw':!![],'where':{'id':_0x1630ac['params']['id']}},_0xd5a006={};_0xd5a006[_0xa55c('0x30')]=_['keys'](db[_0xa55c('0x3e')][_0xa55c('0x2c')]);_0xd5a006['query']=_[_0xa55c('0x32')](_0x1630ac[_0xa55c('0x31')]);_0xd5a006['filters']=_[_0xa55c('0x33')](_0xd5a006[_0xa55c('0x30')],_0xd5a006[_0xa55c('0x31')]);_0x1b2708['attributes']=_[_0xa55c('0x33')](_0xd5a006['model'],qs[_0xa55c('0x34')](_0x1630ac[_0xa55c('0x31')][_0xa55c('0x34')]));_0x1b2708['attributes']=_0x1b2708[_0xa55c('0x35')][_0xa55c('0x36')]?_0x1b2708['attributes']:_0xd5a006[_0xa55c('0x30')];if(_0x1630ac[_0xa55c('0x31')]['includeAll']){_0x1b2708[_0xa55c('0x42')]=[{'all':!![]}];}_0x1b2708=_[_0xa55c('0x3d')]({},_0x1b2708,_0x1630ac['options']);return db[_0xa55c('0x3e')][_0xa55c('0x43')](_0x1b2708)[_0xa55c('0x20')](handleEntityNotFound(_0x540337,null))[_0xa55c('0x20')](respondWithResult(_0x540337,null))['catch'](handleError(_0x540337,null));};exports[_0xa55c('0x44')]=function(_0x58a7ea,_0x2157d6){return db[_0xa55c('0x3e')][_0xa55c('0x44')](_0x58a7ea['body'],{})[_0xa55c('0x20')](function(_0x250b00){var _0x574fe9=_0x58a7ea[_0xa55c('0x45')][_0xa55c('0x21')]({'plain':!![]});if(!_0x574fe9)throw new Error(_0xa55c('0x46'));if(_0x574fe9[_0xa55c('0x47')]===_0xa55c('0x45')){var _0x1c84d9=_0x250b00[_0xa55c('0x21')]({'plain':!![]});var _0x129626=_0xa55c('0x22');return db[_0xa55c('0x48')]['find']({'where':{'name':_0x129626,'userProfileId':_0x574fe9[_0xa55c('0x49')]},'raw':!![]})[_0xa55c('0x20')](function(_0x216de8){if(_0x216de8&&_0x216de8['autoAssociation']===0x0){return db[_0xa55c('0x23')][_0xa55c('0x44')]({'name':_0x1c84d9['name'],'resourceId':_0x1c84d9['id'],'type':_0x216de8[_0xa55c('0x28')],'sectionId':_0x216de8['id']},{})['then'](function(){return _0x250b00;});}else{return _0x250b00;}})[_0xa55c('0x40')](function(_0x228df4){logger[_0xa55c('0x4a')](_0xa55c('0x4b'),_0x228df4);throw _0x228df4;});}return _0x250b00;})[_0xa55c('0x20')](respondWithResult(_0x2157d6,0xc9))['catch'](handleError(_0x2157d6,null));};exports[_0xa55c('0x1f')]=function(_0x4607ca,_0x4b85cc){if(_0x4607ca[_0xa55c('0x4c')]['id']){delete _0x4607ca[_0xa55c('0x4c')]['id'];}return db[_0xa55c('0x3e')][_0xa55c('0x43')]({'where':{'id':_0x4607ca['params']['id']}})['then'](handleEntityNotFound(_0x4b85cc,null))[_0xa55c('0x20')](saveUpdates(_0x4607ca[_0xa55c('0x4c')],null))[_0xa55c('0x20')](respondWithResult(_0x4b85cc,null))[_0xa55c('0x40')](handleError(_0x4b85cc,null));};exports['destroy']=function(_0x30c0c9,_0x5ce463){return db[_0xa55c('0x3e')][_0xa55c('0x43')]({'where':{'id':_0x30c0c9[_0xa55c('0x4d')]['id']}})[_0xa55c('0x20')](handleEntityNotFound(_0x5ce463,null))[_0xa55c('0x20')](removeEntity(_0x5ce463,null))['catch'](handleError(_0x5ce463,null));};
\ No newline at end of file
index a818c05..d241c15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf105=['define','AnalyticMetric','analytics_metrics','lodash','util','../../config/logger','api','moment','bluebird','path','../../config/environment','./analyticMetric.attributes','exports'];(function(_0x2d7fbe,_0x44b669){var _0x3a93ac=function(_0x101520){while(--_0x101520){_0x2d7fbe['push'](_0x2d7fbe['shift']());}};_0x3a93ac(++_0x44b669);}(_0xf105,0x1b0));var _0x5f10=function(_0x30e268,_0x19ef60){_0x30e268=_0x30e268-0x0;var _0x1f00e1=_0xf105[_0x30e268];return _0x1f00e1;};'use strict';var _=require(_0x5f10('0x0'));var util=require(_0x5f10('0x1'));var logger=require(_0x5f10('0x2'))(_0x5f10('0x3'));var moment=require(_0x5f10('0x4'));var BPromise=require(_0x5f10('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5f10('0x6'));var rimraf=require('rimraf');var config=require(_0x5f10('0x7'));var attributes=require(_0x5f10('0x8'));module[_0x5f10('0x9')]=function(_0x1b7489,_0x46b6f2){return _0x1b7489[_0x5f10('0xa')](_0x5f10('0xb'),attributes,{'tableName':_0x5f10('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf95f=['api','moment','bluebird','request-promise','path','rimraf','./analyticMetric.attributes','define','AnalyticMetric','analytics_metrics','lodash','util','../../config/logger'];(function(_0x365293,_0x2c1606){var _0x22a922=function(_0x3002bc){while(--_0x3002bc){_0x365293['push'](_0x365293['shift']());}};_0x22a922(++_0x2c1606);}(_0xf95f,0x142));var _0xff95=function(_0x5390a3,_0x4d60f7){_0x5390a3=_0x5390a3-0x0;var _0x45d220=_0xf95f[_0x5390a3];return _0x45d220;};'use strict';var _=require(_0xff95('0x0'));var util=require(_0xff95('0x1'));var logger=require(_0xff95('0x2'))(_0xff95('0x3'));var moment=require(_0xff95('0x4'));var BPromise=require(_0xff95('0x5'));var rp=require(_0xff95('0x6'));var fs=require('fs');var path=require(_0xff95('0x7'));var rimraf=require(_0xff95('0x8'));var config=require('../../config/environment');var attributes=require(_0xff95('0x9'));module['exports']=function(_0x3f72b4,_0x4fb1ed){return _0x3f72b4[_0xff95('0xa')](_0xff95('0xb'),attributes,{'tableName':_0xff95('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index df42b5b..f4f2ce9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3adc=['rpc','../../config/environment','jayson/promise','http','then','info','AnalyticMetric,\x20%s,\x20%s','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x35fd70,_0x3cebdd){var _0x16765d=function(_0x3f6d6d){while(--_0x3f6d6d){_0x35fd70['push'](_0x35fd70['shift']());}};_0x16765d(++_0x3cebdd);}(_0x3adc,0x1c3));var _0xc3ad=function(_0x50e0ed,_0x3cdbed){_0x50e0ed=_0x50e0ed-0x0;var _0x542a34=_0x3adc[_0x50e0ed];return _0x542a34;};'use strict';var _=require(_0xc3ad('0x0'));var util=require(_0xc3ad('0x1'));var moment=require(_0xc3ad('0x2'));var BPromise=require(_0xc3ad('0x3'));var rs=require(_0xc3ad('0x4'));var fs=require('fs');var Redis=require(_0xc3ad('0x5'));var db=require(_0xc3ad('0x6'))['db'];var utils=require(_0xc3ad('0x7'));var logger=require(_0xc3ad('0x8'))(_0xc3ad('0x9'));var config=require(_0xc3ad('0xa'));var jayson=require(_0xc3ad('0xb'));var client=jayson['client'][_0xc3ad('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1044e6,_0x10a4ef,_0x606c47){return new BPromise(function(_0x261e68,_0x11712d){return client['request'](_0x1044e6,_0x606c47)[_0xc3ad('0xd')](function(_0x39dd9c){logger[_0xc3ad('0xe')](_0xc3ad('0xf'),_0x10a4ef,'request\x20sent');logger['debug'](_0xc3ad('0x10'),_0x10a4ef,'request\x20sent',JSON[_0xc3ad('0x11')](_0x39dd9c));if(_0x39dd9c[_0xc3ad('0x12')]){if(_0x39dd9c['error'][_0xc3ad('0x13')]===0x1f4){logger[_0xc3ad('0x12')]('AnalyticMetric,\x20%s,\x20%s',_0x10a4ef,_0x39dd9c['error'][_0xc3ad('0x14')]);return _0x11712d(_0x39dd9c['error'][_0xc3ad('0x14')]);}logger[_0xc3ad('0x12')](_0xc3ad('0xf'),_0x10a4ef,_0x39dd9c[_0xc3ad('0x12')][_0xc3ad('0x14')]);return _0x261e68(_0x39dd9c[_0xc3ad('0x12')][_0xc3ad('0x14')]);}else{logger[_0xc3ad('0xe')](_0xc3ad('0xf'),_0x10a4ef,_0xc3ad('0x15'));_0x261e68(_0x39dd9c['result']['message']);}})[_0xc3ad('0x16')](function(_0x1660bf){logger[_0xc3ad('0x12')](_0xc3ad('0xf'),_0x10a4ef,_0x1660bf);_0x11712d(_0x1660bf);});});}
\ No newline at end of file
+var _0x6bca=['then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0xe0b6cd,_0x49f7d5){var _0x34896a=function(_0x34f702){while(--_0x34f702){_0xe0b6cd['push'](_0xe0b6cd['shift']());}};_0x34896a(++_0x49f7d5);}(_0x6bca,0x130));var _0xa6bc=function(_0x5b8b8c,_0x5ba459){_0x5b8b8c=_0x5b8b8c-0x0;var _0x5342c1=_0x6bca[_0x5b8b8c];return _0x5342c1;};'use strict';var _=require(_0xa6bc('0x0'));var util=require(_0xa6bc('0x1'));var moment=require(_0xa6bc('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa6bc('0x3'));var db=require(_0xa6bc('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa6bc('0x5'));var config=require(_0xa6bc('0x6'));var jayson=require(_0xa6bc('0x7'));var client=jayson[_0xa6bc('0x8')][_0xa6bc('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5b870c,_0x1a58c2,_0x44c0a6){return new BPromise(function(_0x23ad86,_0x40da43){return client[_0xa6bc('0xa')](_0x5b870c,_0x44c0a6)[_0xa6bc('0xb')](function(_0x37dc3a){logger[_0xa6bc('0xc')](_0xa6bc('0xd'),_0x1a58c2,_0xa6bc('0xe'));logger[_0xa6bc('0xf')](_0xa6bc('0x10'),_0x1a58c2,'request\x20sent',JSON[_0xa6bc('0x11')](_0x37dc3a));if(_0x37dc3a[_0xa6bc('0x12')]){if(_0x37dc3a[_0xa6bc('0x12')]['code']===0x1f4){logger[_0xa6bc('0x12')](_0xa6bc('0xd'),_0x1a58c2,_0x37dc3a[_0xa6bc('0x12')][_0xa6bc('0x13')]);return _0x40da43(_0x37dc3a[_0xa6bc('0x12')][_0xa6bc('0x13')]);}logger[_0xa6bc('0x12')](_0xa6bc('0xd'),_0x1a58c2,_0x37dc3a[_0xa6bc('0x12')]['message']);return _0x23ad86(_0x37dc3a[_0xa6bc('0x12')][_0xa6bc('0x13')]);}else{logger[_0xa6bc('0xc')](_0xa6bc('0xd'),_0x1a58c2,_0xa6bc('0xe'));_0x23ad86(_0x37dc3a['result'][_0xa6bc('0x13')]);}})[_0xa6bc('0x14')](function(_0x3d4500){logger[_0xa6bc('0x12')](_0xa6bc('0xd'),_0x1a58c2,_0x3d4500);_0x40da43(_0x3d4500);});});}
\ No newline at end of file
index 5f356b4..e200100 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37c5=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','isAuthenticated','index','get','show','post','put','/:id','delete','destroy','util','path','connect-timeout','express'];(function(_0x41a887,_0x86c36f){var _0x4b434b=function(_0x297c8f){while(--_0x297c8f){_0x41a887['push'](_0x41a887['shift']());}};_0x4b434b(++_0x86c36f);}(_0x37c5,0xa7));var _0x537c=function(_0x51bc81,_0x2eb0b3){_0x51bc81=_0x51bc81-0x0;var _0x42ed9=_0x37c5[_0x51bc81];return _0x42ed9;};'use strict';var multer=require('multer');var util=require(_0x537c('0x0'));var path=require(_0x537c('0x1'));var timeout=require(_0x537c('0x2'));var express=require(_0x537c('0x3'));var router=express[_0x537c('0x4')]();var fs_extra=require(_0x537c('0x5'));var auth=require(_0x537c('0x6'));var interaction=require(_0x537c('0x7'));var config=require(_0x537c('0x8'));var controller=require(_0x537c('0x9'));router['get']('/',auth[_0x537c('0xa')](),controller[_0x537c('0xb')]);router[_0x537c('0xc')]('/:id',auth[_0x537c('0xa')](),controller[_0x537c('0xd')]);router[_0x537c('0xe')]('/',auth[_0x537c('0xa')](),controller['create']);router[_0x537c('0xf')](_0x537c('0x10'),auth[_0x537c('0xa')](),controller['update']);router[_0x537c('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x537c('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x535d=['get','isAuthenticated','/:id','post','create','put','delete','destroy','multer','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller'];(function(_0x525818,_0x578bc9){var _0x1c42d9=function(_0x524a73){while(--_0x524a73){_0x525818['push'](_0x525818['shift']());}};_0x1c42d9(++_0x578bc9);}(_0x535d,0xe8));var _0xd535=function(_0x16eb49,_0x591e1f){_0x16eb49=_0x16eb49-0x0;var _0x3fb01e=_0x535d[_0x16eb49];return _0x3fb01e;};'use strict';var multer=require(_0xd535('0x0'));var util=require(_0xd535('0x1'));var path=require('path');var timeout=require(_0xd535('0x2'));var express=require(_0xd535('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xd535('0x4'));var interaction=require(_0xd535('0x5'));var config=require(_0xd535('0x6'));var controller=require(_0xd535('0x7'));router[_0xd535('0x8')]('/',auth[_0xd535('0x9')](),controller['index']);router['get'](_0xd535('0xa'),auth[_0xd535('0x9')](),controller['show']);router[_0xd535('0xb')]('/',auth['isAuthenticated'](),controller[_0xd535('0xc')]);router[_0xd535('0xd')](_0xd535('0xa'),auth[_0xd535('0x9')](),controller['update']);router[_0xd535('0xe')](_0xd535('0xa'),auth[_0xd535('0x9')](),controller[_0xd535('0xf')]);module['exports']=router;
\ No newline at end of file
index db4c832..fbcb596 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2db=['exports','TEXT'];(function(_0x25c4a9,_0x2d70a8){var _0x4e6482=function(_0x4fca73){while(--_0x4fca73){_0x25c4a9['push'](_0x25c4a9['shift']());}};_0x4e6482(++_0x2d70a8);}(_0xc2db,0x100));var _0xbc2d=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xc2db[_0x432682];return _0x463d05;};'use strict';var Sequelize=require('sequelize');module[_0xbc2d('0x0')]={'tree':{'type':Sequelize[_0xbc2d('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x06c5=['TEXT','sequelize','exports'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x06c5,0x88));var _0x506c=function(_0x4f98fc,_0x5b5e7b){_0x4f98fc=_0x4f98fc-0x0;var _0x48e317=_0x06c5[_0x4f98fc];return _0x48e317;};'use strict';var Sequelize=require(_0x506c('0x0'));module[_0x506c('0x1')]={'tree':{'type':Sequelize[_0x506c('0x2')],'allowNull':![]}};
\ No newline at end of file
index 711cad9..02f0b21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9060=['type','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','options','includeAll','include','findAll','rows','show','params','keys','merge','catch','create','body','find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','AnalyticTreeReport','rawAttributes'];(function(_0x15070a,_0x522955){var _0x251d50=function(_0x1b4f8e){while(--_0x1b4f8e){_0x15070a['push'](_0x15070a['shift']());}};_0x251d50(++_0x522955);}(_0x9060,0xb9));var _0x0906=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0x9060[_0x4c12ec];return _0x3ae42c;};'use strict';var emlformat=require(_0x0906('0x0'));var rimraf=require(_0x0906('0x1'));var zipdir=require(_0x0906('0x2'));var jsonpatch=require(_0x0906('0x3'));var rp=require(_0x0906('0x4'));var moment=require(_0x0906('0x5'));var BPromise=require(_0x0906('0x6'));var Mustache=require('mustache');var util=require(_0x0906('0x7'));var path=require(_0x0906('0x8'));var sox=require(_0x0906('0x9'));var csv=require(_0x0906('0xa'));var ejs=require(_0x0906('0xb'));var fs=require('fs');var fs_extra=require(_0x0906('0xc'));var _=require(_0x0906('0xd'));var squel=require(_0x0906('0xe'));var crypto=require(_0x0906('0xf'));var jsforce=require(_0x0906('0x10'));var deskjs=require(_0x0906('0x11'));var toCsv=require(_0x0906('0xa'));var querystring=require(_0x0906('0x12'));var Papa=require(_0x0906('0x13'));var Redis=require(_0x0906('0x14'));var authService=require('../../components/auth/service');var qs=require(_0x0906('0x15'));var as=require(_0x0906('0x16'));var hardwareService=require(_0x0906('0x17'));var logger=require(_0x0906('0x18'))(_0x0906('0x19'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0906('0x1a'));var db=require(_0x0906('0x1b'))['db'];function respondWithStatusCode(_0x13aac9,_0x37dfe0){_0x37dfe0=_0x37dfe0||0xcc;return function(_0x2e2b11){if(_0x2e2b11){return _0x13aac9[_0x0906('0x1c')](_0x37dfe0);}return _0x13aac9[_0x0906('0x1d')](_0x37dfe0)[_0x0906('0x1e')]();};}function respondWithResult(_0xe5ef35,_0x259c68){_0x259c68=_0x259c68||0xc8;return function(_0xa2c6aa){if(_0xa2c6aa){return _0xe5ef35[_0x0906('0x1d')](_0x259c68)[_0x0906('0x1f')](_0xa2c6aa);}};}function respondWithFilteredResult(_0x15fdca,_0x1b0651){return function(_0x558b08){if(_0x558b08){var _0x3afe92=typeof _0x1b0651['offset']==='undefined'&&typeof _0x1b0651[_0x0906('0x20')]===_0x0906('0x21');var _0xe7fc64=_0x558b08[_0x0906('0x22')];var _0x3d3dd0=_0x3afe92?0x0:_0x1b0651[_0x0906('0x23')];var _0x1ffba5=_0x3afe92?_0x558b08[_0x0906('0x22')]:_0x1b0651[_0x0906('0x23')]+_0x1b0651[_0x0906('0x20')];var _0x54bc6c;if(_0x1ffba5>=_0xe7fc64){_0x1ffba5=_0xe7fc64;_0x54bc6c=0xc8;}else{_0x54bc6c=0xce;}_0x15fdca[_0x0906('0x1d')](_0x54bc6c);return _0x15fdca['set'](_0x0906('0x24'),_0x3d3dd0+'-'+_0x1ffba5+'/'+_0xe7fc64)[_0x0906('0x1f')](_0x558b08);}return null;};}function patchUpdates(_0x225623){return function(_0x3a1edf){try{jsonpatch[_0x0906('0x25')](_0x3a1edf,_0x225623,!![]);}catch(_0x303521){return BPromise[_0x0906('0x26')](_0x303521);}return _0x3a1edf[_0x0906('0x27')]();};}function saveUpdates(_0x4b8dcd,_0x96cc77){return function(_0x49f66e){if(_0x49f66e){return _0x49f66e[_0x0906('0x28')](_0x4b8dcd)['then'](function(_0x466be0){return _0x466be0;});}return null;};}function removeEntity(_0x18a8e1,_0x14352d){return function(_0xc7bf7e){if(_0xc7bf7e){return _0xc7bf7e['destroy']()[_0x0906('0x29')](function(){_0x18a8e1[_0x0906('0x1d')](0xcc)[_0x0906('0x1e')]();});}};}function handleEntityNotFound(_0x4d7cd2,_0x2c8713){return function(_0x263a1e){if(!_0x263a1e){_0x4d7cd2[_0x0906('0x1c')](0x194);}return _0x263a1e;};}function handleError(_0xca1326,_0x5d47ab){_0x5d47ab=_0x5d47ab||0x1f4;return function(_0x3c64b6){logger[_0x0906('0x2a')](_0x3c64b6[_0x0906('0x2b')]);if(_0x3c64b6['name']){delete _0x3c64b6[_0x0906('0x2c')];}_0xca1326['status'](_0x5d47ab)[_0x0906('0x2d')](_0x3c64b6);};}exports[_0x0906('0x2e')]=function(_0x19fcea,_0x123fe3){var _0x29a99d={},_0x384b2a={},_0x34c35c={'count':0x0,'rows':[]};var _0x3ab191=_['map'](db[_0x0906('0x2f')][_0x0906('0x30')],function(_0x28e80d){return{'name':_0x28e80d['fieldName'],'type':_0x28e80d[_0x0906('0x31')]['key']};});_0x384b2a['model']=_[_0x0906('0x32')](_0x3ab191,_0x0906('0x2c'));_0x384b2a['query']=_['keys'](_0x19fcea[_0x0906('0x33')]);_0x384b2a[_0x0906('0x34')]=_[_0x0906('0x35')](_0x384b2a[_0x0906('0x36')],_0x384b2a[_0x0906('0x33')]);_0x29a99d[_0x0906('0x37')]=_[_0x0906('0x35')](_0x384b2a[_0x0906('0x36')],qs[_0x0906('0x38')](_0x19fcea[_0x0906('0x33')][_0x0906('0x38')]));_0x29a99d[_0x0906('0x37')]=_0x29a99d[_0x0906('0x37')][_0x0906('0x39')]?_0x29a99d[_0x0906('0x37')]:_0x384b2a[_0x0906('0x36')];if(!_0x19fcea[_0x0906('0x33')][_0x0906('0x3a')](_0x0906('0x3b'))){_0x29a99d['limit']=qs[_0x0906('0x20')](_0x19fcea[_0x0906('0x33')][_0x0906('0x20')]);_0x29a99d[_0x0906('0x23')]=qs[_0x0906('0x23')](_0x19fcea[_0x0906('0x33')][_0x0906('0x23')]);}_0x29a99d['order']=qs[_0x0906('0x3c')](_0x19fcea[_0x0906('0x33')][_0x0906('0x3c')]);_0x29a99d['where']=qs['filters'](_[_0x0906('0x3d')](_0x19fcea[_0x0906('0x33')],_0x384b2a[_0x0906('0x34')]),_0x3ab191);if(_0x19fcea['query'][_0x0906('0x3e')]){_0x29a99d[_0x0906('0x3f')]=_['merge'](_0x29a99d[_0x0906('0x3f')],{'$or':_[_0x0906('0x32')](_0x3ab191,function(_0x9af599){if(_0x9af599[_0x0906('0x31')]!=='VIRTUAL'){var _0x51b54c={};_0x51b54c[_0x9af599[_0x0906('0x2c')]]={'$like':'%'+_0x19fcea[_0x0906('0x33')][_0x0906('0x3e')]+'%'};return _0x51b54c;}})});}_0x29a99d=_['merge']({},_0x29a99d,_0x19fcea[_0x0906('0x40')]);var _0x276483={'where':_0x29a99d[_0x0906('0x3f')]};return db[_0x0906('0x2f')][_0x0906('0x22')](_0x276483)[_0x0906('0x29')](function(_0x507071){_0x34c35c[_0x0906('0x22')]=_0x507071;if(_0x19fcea[_0x0906('0x33')][_0x0906('0x41')]){_0x29a99d[_0x0906('0x42')]=[{'all':!![]}];}return db['AnalyticTreeReport'][_0x0906('0x43')](_0x29a99d);})[_0x0906('0x29')](function(_0x133e47){_0x34c35c[_0x0906('0x44')]=_0x133e47;return _0x34c35c;})[_0x0906('0x29')](respondWithFilteredResult(_0x123fe3,_0x29a99d))['catch'](handleError(_0x123fe3,null));};exports[_0x0906('0x45')]=function(_0x12190a,_0x4a7f3d){var _0x5eaea8={'raw':!![],'where':{'id':_0x12190a[_0x0906('0x46')]['id']}},_0x5a7f3d={};_0x5a7f3d[_0x0906('0x36')]=_[_0x0906('0x47')](db['AnalyticTreeReport'][_0x0906('0x30')]);_0x5a7f3d['query']=_[_0x0906('0x47')](_0x12190a[_0x0906('0x33')]);_0x5a7f3d['filters']=_['intersection'](_0x5a7f3d[_0x0906('0x36')],_0x5a7f3d[_0x0906('0x33')]);_0x5eaea8[_0x0906('0x37')]=_[_0x0906('0x35')](_0x5a7f3d[_0x0906('0x36')],qs[_0x0906('0x38')](_0x12190a[_0x0906('0x33')][_0x0906('0x38')]));_0x5eaea8['attributes']=_0x5eaea8[_0x0906('0x37')][_0x0906('0x39')]?_0x5eaea8[_0x0906('0x37')]:_0x5a7f3d[_0x0906('0x36')];if(_0x12190a[_0x0906('0x33')][_0x0906('0x41')]){_0x5eaea8[_0x0906('0x42')]=[{'all':!![]}];}_0x5eaea8=_[_0x0906('0x48')]({},_0x5eaea8,_0x12190a[_0x0906('0x40')]);return db[_0x0906('0x2f')]['find'](_0x5eaea8)[_0x0906('0x29')](handleEntityNotFound(_0x4a7f3d,null))[_0x0906('0x29')](respondWithResult(_0x4a7f3d,null))[_0x0906('0x49')](handleError(_0x4a7f3d,null));};exports[_0x0906('0x4a')]=function(_0x1ddec9,_0x57b9f8){return db[_0x0906('0x2f')][_0x0906('0x4a')](_0x1ddec9[_0x0906('0x4b')],{})[_0x0906('0x29')](respondWithResult(_0x57b9f8,0xc9))[_0x0906('0x49')](handleError(_0x57b9f8,null));};exports[_0x0906('0x28')]=function(_0x1da11f,_0x9534ae){if(_0x1da11f[_0x0906('0x4b')]['id']){delete _0x1da11f[_0x0906('0x4b')]['id'];}return db[_0x0906('0x2f')][_0x0906('0x4c')]({'where':{'id':_0x1da11f[_0x0906('0x46')]['id']}})['then'](handleEntityNotFound(_0x9534ae,null))[_0x0906('0x29')](saveUpdates(_0x1da11f['body'],null))['then'](respondWithResult(_0x9534ae,null))[_0x0906('0x49')](handleError(_0x9534ae,null));};exports[_0x0906('0x4d')]=function(_0x148339,_0x198586){return db['AnalyticTreeReport'][_0x0906('0x4c')]({'where':{'id':_0x148339[_0x0906('0x46')]['id']}})[_0x0906('0x29')](handleEntityNotFound(_0x198586,null))[_0x0906('0x29')](removeEntity(_0x198586,null))['catch'](handleError(_0x198586,null));};
\ No newline at end of file
+var _0xfd15=['show','params','length','options','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','end','sendStatus','error','name','index','map','AnalyticTreeReport','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','includeAll','include','findAll','catch'];(function(_0x255cef,_0x1abdbd){var _0x171a93=function(_0x30bc0a){while(--_0x30bc0a){_0x255cef['push'](_0x255cef['shift']());}};_0x171a93(++_0x1abdbd);}(_0xfd15,0x133));var _0x5fd1=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xfd15[_0x3947c9];return _0x2e7871;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5fd1('0x0'));var zipdir=require(_0x5fd1('0x1'));var jsonpatch=require(_0x5fd1('0x2'));var rp=require(_0x5fd1('0x3'));var moment=require(_0x5fd1('0x4'));var BPromise=require(_0x5fd1('0x5'));var Mustache=require(_0x5fd1('0x6'));var util=require('util');var path=require(_0x5fd1('0x7'));var sox=require(_0x5fd1('0x8'));var csv=require(_0x5fd1('0x9'));var ejs=require(_0x5fd1('0xa'));var fs=require('fs');var fs_extra=require(_0x5fd1('0xb'));var _=require(_0x5fd1('0xc'));var squel=require('squel');var crypto=require(_0x5fd1('0xd'));var jsforce=require(_0x5fd1('0xe'));var deskjs=require(_0x5fd1('0xf'));var toCsv=require(_0x5fd1('0x9'));var querystring=require(_0x5fd1('0x10'));var Papa=require(_0x5fd1('0x11'));var Redis=require(_0x5fd1('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x5fd1('0x13'));var as=require(_0x5fd1('0x14'));var hardwareService=require(_0x5fd1('0x15'));var logger=require(_0x5fd1('0x16'))(_0x5fd1('0x17'));var utils=require('../../config/utils');var config=require(_0x5fd1('0x18'));var licenseUtil=require(_0x5fd1('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1f27fe,_0xf3f8ab){_0xf3f8ab=_0xf3f8ab||0xcc;return function(_0x145299){if(_0x145299){return _0x1f27fe['sendStatus'](_0xf3f8ab);}return _0x1f27fe[_0x5fd1('0x1a')](_0xf3f8ab)['end']();};}function respondWithResult(_0x43b2a0,_0x304c16){_0x304c16=_0x304c16||0xc8;return function(_0x5a5dfe){if(_0x5a5dfe){return _0x43b2a0[_0x5fd1('0x1a')](_0x304c16)[_0x5fd1('0x1b')](_0x5a5dfe);}};}function respondWithFilteredResult(_0x39ae78,_0x122fb6){return function(_0x497e3e){if(_0x497e3e){var _0x5c8094=typeof _0x122fb6[_0x5fd1('0x1c')]===_0x5fd1('0x1d')&&typeof _0x122fb6[_0x5fd1('0x1e')]===_0x5fd1('0x1d');var _0x534240=_0x497e3e[_0x5fd1('0x1f')];var _0x7344a1=_0x5c8094?0x0:_0x122fb6[_0x5fd1('0x1c')];var _0x389ef8=_0x5c8094?_0x497e3e[_0x5fd1('0x1f')]:_0x122fb6['offset']+_0x122fb6[_0x5fd1('0x1e')];var _0x17c4a5;if(_0x389ef8>=_0x534240){_0x389ef8=_0x534240;_0x17c4a5=0xc8;}else{_0x17c4a5=0xce;}_0x39ae78['status'](_0x17c4a5);return _0x39ae78[_0x5fd1('0x20')](_0x5fd1('0x21'),_0x7344a1+'-'+_0x389ef8+'/'+_0x534240)['json'](_0x497e3e);}return null;};}function patchUpdates(_0x420222){return function(_0x1e847a){try{jsonpatch[_0x5fd1('0x22')](_0x1e847a,_0x420222,!![]);}catch(_0x598334){return BPromise[_0x5fd1('0x23')](_0x598334);}return _0x1e847a['save']();};}function saveUpdates(_0x77f23b,_0x5b8923){return function(_0x59b48b){if(_0x59b48b){return _0x59b48b[_0x5fd1('0x24')](_0x77f23b)[_0x5fd1('0x25')](function(_0xbb5304){return _0xbb5304;});}return null;};}function removeEntity(_0x261ab6,_0x3a8ade){return function(_0x3ffedd){if(_0x3ffedd){return _0x3ffedd[_0x5fd1('0x26')]()[_0x5fd1('0x25')](function(){_0x261ab6[_0x5fd1('0x1a')](0xcc)[_0x5fd1('0x27')]();});}};}function handleEntityNotFound(_0x10d05c,_0xab5d44){return function(_0x2dd968){if(!_0x2dd968){_0x10d05c[_0x5fd1('0x28')](0x194);}return _0x2dd968;};}function handleError(_0x2a56f4,_0x371429){_0x371429=_0x371429||0x1f4;return function(_0x4642f2){logger[_0x5fd1('0x29')](_0x4642f2['stack']);if(_0x4642f2[_0x5fd1('0x2a')]){delete _0x4642f2['name'];}_0x2a56f4[_0x5fd1('0x1a')](_0x371429)['send'](_0x4642f2);};}exports[_0x5fd1('0x2b')]=function(_0x3ad685,_0x6a1fdf){var _0x3f408e={},_0x174052={},_0x2cdf81={'count':0x0,'rows':[]};var _0x39e822=_[_0x5fd1('0x2c')](db[_0x5fd1('0x2d')][_0x5fd1('0x2e')],function(_0x567c8e){return{'name':_0x567c8e[_0x5fd1('0x2f')],'type':_0x567c8e[_0x5fd1('0x30')]['key']};});_0x174052['model']=_[_0x5fd1('0x2c')](_0x39e822,_0x5fd1('0x2a'));_0x174052[_0x5fd1('0x31')]=_[_0x5fd1('0x32')](_0x3ad685[_0x5fd1('0x31')]);_0x174052[_0x5fd1('0x33')]=_[_0x5fd1('0x34')](_0x174052[_0x5fd1('0x35')],_0x174052[_0x5fd1('0x31')]);_0x3f408e[_0x5fd1('0x36')]=_[_0x5fd1('0x34')](_0x174052[_0x5fd1('0x35')],qs[_0x5fd1('0x37')](_0x3ad685['query'][_0x5fd1('0x37')]));_0x3f408e[_0x5fd1('0x36')]=_0x3f408e['attributes']['length']?_0x3f408e[_0x5fd1('0x36')]:_0x174052['model'];if(!_0x3ad685[_0x5fd1('0x31')]['hasOwnProperty'](_0x5fd1('0x38'))){_0x3f408e[_0x5fd1('0x1e')]=qs[_0x5fd1('0x1e')](_0x3ad685[_0x5fd1('0x31')][_0x5fd1('0x1e')]);_0x3f408e['offset']=qs['offset'](_0x3ad685[_0x5fd1('0x31')]['offset']);}_0x3f408e[_0x5fd1('0x39')]=qs[_0x5fd1('0x3a')](_0x3ad685[_0x5fd1('0x31')][_0x5fd1('0x3a')]);_0x3f408e['where']=qs[_0x5fd1('0x33')](_[_0x5fd1('0x3b')](_0x3ad685[_0x5fd1('0x31')],_0x174052[_0x5fd1('0x33')]),_0x39e822);if(_0x3ad685[_0x5fd1('0x31')][_0x5fd1('0x3c')]){_0x3f408e['where']=_[_0x5fd1('0x3d')](_0x3f408e[_0x5fd1('0x3e')],{'$or':_['map'](_0x39e822,function(_0x1e514e){if(_0x1e514e['type']!==_0x5fd1('0x3f')){var _0xd09238={};_0xd09238[_0x1e514e[_0x5fd1('0x2a')]]={'$like':'%'+_0x3ad685[_0x5fd1('0x31')][_0x5fd1('0x3c')]+'%'};return _0xd09238;}})});}_0x3f408e=_[_0x5fd1('0x3d')]({},_0x3f408e,_0x3ad685['options']);var _0x143954={'where':_0x3f408e[_0x5fd1('0x3e')]};return db[_0x5fd1('0x2d')]['count'](_0x143954)[_0x5fd1('0x25')](function(_0x1c12bb){_0x2cdf81[_0x5fd1('0x1f')]=_0x1c12bb;if(_0x3ad685[_0x5fd1('0x31')][_0x5fd1('0x40')]){_0x3f408e[_0x5fd1('0x41')]=[{'all':!![]}];}return db[_0x5fd1('0x2d')][_0x5fd1('0x42')](_0x3f408e);})[_0x5fd1('0x25')](function(_0x286ded){_0x2cdf81['rows']=_0x286ded;return _0x2cdf81;})['then'](respondWithFilteredResult(_0x6a1fdf,_0x3f408e))[_0x5fd1('0x43')](handleError(_0x6a1fdf,null));};exports[_0x5fd1('0x44')]=function(_0x1d5abe,_0x5d30f6){var _0x46b70d={'raw':!![],'where':{'id':_0x1d5abe[_0x5fd1('0x45')]['id']}},_0x23bebd={};_0x23bebd[_0x5fd1('0x35')]=_[_0x5fd1('0x32')](db[_0x5fd1('0x2d')][_0x5fd1('0x2e')]);_0x23bebd[_0x5fd1('0x31')]=_['keys'](_0x1d5abe[_0x5fd1('0x31')]);_0x23bebd[_0x5fd1('0x33')]=_[_0x5fd1('0x34')](_0x23bebd[_0x5fd1('0x35')],_0x23bebd['query']);_0x46b70d['attributes']=_[_0x5fd1('0x34')](_0x23bebd[_0x5fd1('0x35')],qs[_0x5fd1('0x37')](_0x1d5abe['query']['fields']));_0x46b70d[_0x5fd1('0x36')]=_0x46b70d[_0x5fd1('0x36')][_0x5fd1('0x46')]?_0x46b70d[_0x5fd1('0x36')]:_0x23bebd[_0x5fd1('0x35')];if(_0x1d5abe[_0x5fd1('0x31')]['includeAll']){_0x46b70d['include']=[{'all':!![]}];}_0x46b70d=_['merge']({},_0x46b70d,_0x1d5abe[_0x5fd1('0x47')]);return db[_0x5fd1('0x2d')][_0x5fd1('0x48')](_0x46b70d)['then'](handleEntityNotFound(_0x5d30f6,null))[_0x5fd1('0x25')](respondWithResult(_0x5d30f6,null))[_0x5fd1('0x43')](handleError(_0x5d30f6,null));};exports[_0x5fd1('0x49')]=function(_0x1ee0b8,_0x507cf2){return db['AnalyticTreeReport']['create'](_0x1ee0b8[_0x5fd1('0x4a')],{})['then'](respondWithResult(_0x507cf2,0xc9))[_0x5fd1('0x43')](handleError(_0x507cf2,null));};exports[_0x5fd1('0x24')]=function(_0x1644d3,_0x1f7cff){if(_0x1644d3[_0x5fd1('0x4a')]['id']){delete _0x1644d3['body']['id'];}return db[_0x5fd1('0x2d')]['find']({'where':{'id':_0x1644d3[_0x5fd1('0x45')]['id']}})[_0x5fd1('0x25')](handleEntityNotFound(_0x1f7cff,null))[_0x5fd1('0x25')](saveUpdates(_0x1644d3[_0x5fd1('0x4a')],null))[_0x5fd1('0x25')](respondWithResult(_0x1f7cff,null))[_0x5fd1('0x43')](handleError(_0x1f7cff,null));};exports[_0x5fd1('0x26')]=function(_0x38c799,_0x99c377){return db[_0x5fd1('0x2d')]['find']({'where':{'id':_0x38c799[_0x5fd1('0x45')]['id']}})[_0x5fd1('0x25')](handleEntityNotFound(_0x99c377,null))[_0x5fd1('0x25')](removeEntity(_0x99c377,null))[_0x5fd1('0x43')](handleError(_0x99c377,null));};
\ No newline at end of file
index f45645f..f6a0e89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbf0=['rimraf','../../config/environment','./analyticTreeReport.attributes','exports','AnalyticTreeReport','analytics_report_trees','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x24ac65,_0x5c72da){var _0x512dea=function(_0x2113bf){while(--_0x2113bf){_0x24ac65['push'](_0x24ac65['shift']());}};_0x512dea(++_0x5c72da);}(_0xdbf0,0x14b));var _0x0dbf=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xdbf0[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var util=require(_0x0dbf('0x0'));var logger=require(_0x0dbf('0x1'))(_0x0dbf('0x2'));var moment=require(_0x0dbf('0x3'));var BPromise=require(_0x0dbf('0x4'));var rp=require(_0x0dbf('0x5'));var fs=require('fs');var path=require(_0x0dbf('0x6'));var rimraf=require(_0x0dbf('0x7'));var config=require(_0x0dbf('0x8'));var attributes=require(_0x0dbf('0x9'));module[_0x0dbf('0xa')]=function(_0x530f51,_0x30bd9a){return _0x530f51['define'](_0x0dbf('0xb'),attributes,{'tableName':_0x0dbf('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x26bc=['util','moment','bluebird','request-promise','path','rimraf','./analyticTreeReport.attributes','define','lodash'];(function(_0x53273a,_0x5ed978){var _0x3c41db=function(_0x491a57){while(--_0x491a57){_0x53273a['push'](_0x53273a['shift']());}};_0x3c41db(++_0x5ed978);}(_0x26bc,0x1af));var _0xc26b=function(_0x1d7716,_0x356c91){_0x1d7716=_0x1d7716-0x0;var _0x2d32c6=_0x26bc[_0x1d7716];return _0x2d32c6;};'use strict';var _=require(_0xc26b('0x0'));var util=require(_0xc26b('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xc26b('0x2'));var BPromise=require(_0xc26b('0x3'));var rp=require(_0xc26b('0x4'));var fs=require('fs');var path=require(_0xc26b('0x5'));var rimraf=require(_0xc26b('0x6'));var config=require('../../config/environment');var attributes=require(_0xc26b('0x7'));module['exports']=function(_0x5e13eb,_0x34d2ba){return _0x5e13eb[_0xc26b('0x8')]('AnalyticTreeReport',attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9862a82..68b8e54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','stringify','code','message','error','info','catch','util','bluebird','randomstring','ioredis'];(function(_0x3102f5,_0x3f7513){var _0x156105=function(_0x111ed6){while(--_0x111ed6){_0x3102f5['push'](_0x3102f5['shift']());}};_0x156105(++_0x3f7513);}(_0x5f66,0x1a0));var _0x65f6=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0x5f66[_0x122096];return _0x3d1966;};'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')]('AnalyticTreeReport,\x20%s,\x20%s',_0x1c0e12,_0x65f6('0xc'));_0x112079(_0x48d85c['result']['message']);}})[_0x65f6('0x14')](function(_0x5c69f8){logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x5c69f8);_0x8f6451(_0x5c69f8);});});}
\ No newline at end of file
+var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x5a58db,_0x2d7f41){var _0x42dd9a=function(_0x52d814){while(--_0x52d814){_0x5a58db['push'](_0x5a58db['shift']());}};_0x42dd9a(++_0x2d7f41);}(_0xadb5,0xad));var _0x5adb=function(_0x55eaac,_0x3b87a3){_0x55eaac=_0x55eaac-0x0;var _0x327fad=_0xadb5[_0x55eaac];return _0x327fad;};'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']('AnalyticTreeReport,\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);});});}
\ No newline at end of file
index 154cb34..a8ab945 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fa4=['/:id','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','index','show','post','create'];(function(_0x4f6762,_0x50ce94){var _0x8549f6=function(_0x51ccc9){while(--_0x51ccc9){_0x4f6762['push'](_0x4f6762['shift']());}};_0x8549f6(++_0x50ce94);}(_0x6fa4,0x195));var _0x46fa=function(_0x5e1f4f,_0x39b1e5){_0x5e1f4f=_0x5e1f4f-0x0;var _0x487f60=_0x6fa4[_0x5e1f4f];return _0x487f60;};'use strict';var multer=require(_0x46fa('0x0'));var util=require('util');var path=require(_0x46fa('0x1'));var timeout=require(_0x46fa('0x2'));var express=require('express');var router=express[_0x46fa('0x3')]();var fs_extra=require(_0x46fa('0x4'));var auth=require(_0x46fa('0x5'));var interaction=require(_0x46fa('0x6'));var config=require(_0x46fa('0x7'));var controller=require(_0x46fa('0x8'));router[_0x46fa('0x9')]('/',auth[_0x46fa('0xa')](),controller[_0x46fa('0xb')]);router[_0x46fa('0x9')]('/:id',auth[_0x46fa('0xa')](),controller[_0x46fa('0xc')]);router[_0x46fa('0xd')]('/',auth['isAuthenticated'](),controller[_0x46fa('0xe')]);router['put'](_0x46fa('0xf'),auth[_0x46fa('0xa')](),controller[_0x46fa('0x10')]);router[_0x46fa('0x11')]('/:id',auth[_0x46fa('0xa')](),controller[_0x46fa('0x12')]);module[_0x46fa('0x13')]=router;
\ No newline at end of file
+var _0xe4e3=['express','fs-extra','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','index','/:id','show','post','isAuthenticated','put','update','delete','destroy','exports','multer','util','connect-timeout'];(function(_0x51308d,_0x42cf02){var _0x37cde8=function(_0x527de4){while(--_0x527de4){_0x51308d['push'](_0x51308d['shift']());}};_0x37cde8(++_0x42cf02);}(_0xe4e3,0x6f));var _0x3e4e=function(_0x128d1d,_0x41e39e){_0x128d1d=_0x128d1d-0x0;var _0x2e5982=_0xe4e3[_0x128d1d];return _0x2e5982;};'use strict';var multer=require(_0x3e4e('0x0'));var util=require(_0x3e4e('0x1'));var path=require('path');var timeout=require(_0x3e4e('0x2'));var express=require(_0x3e4e('0x3'));var router=express['Router']();var fs_extra=require(_0x3e4e('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3e4e('0x5'));var config=require(_0x3e4e('0x6'));var controller=require(_0x3e4e('0x7'));router[_0x3e4e('0x8')]('/',auth['isAuthenticated'](),controller[_0x3e4e('0x9')]);router[_0x3e4e('0x8')](_0x3e4e('0xa'),auth['isAuthenticated'](),controller[_0x3e4e('0xb')]);router[_0x3e4e('0xc')]('/',auth[_0x3e4e('0xd')](),controller['create']);router[_0x3e4e('0xe')](_0x3e4e('0xa'),auth['isAuthenticated'](),controller[_0x3e4e('0xf')]);router[_0x3e4e('0x10')](_0x3e4e('0xa'),auth[_0x3e4e('0xd')](),controller[_0x3e4e('0x11')]);module[_0x3e4e('0x12')]=router;
\ No newline at end of file
index d9674f0..94d5dce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3613=['sequelize','exports','STRING'];(function(_0x30483a,_0x5d7c8a){var _0x104303=function(_0xc045a2){while(--_0xc045a2){_0x30483a['push'](_0x30483a['shift']());}};_0x104303(++_0x5d7c8a);}(_0x3613,0x198));var _0x3361=function(_0x16b797,_0x86769b){_0x16b797=_0x16b797-0x0;var _0x581a7f=_0x3613[_0x16b797];return _0x581a7f;};'use strict';var Sequelize=require(_0x3361('0x0'));module[_0x3361('0x1')]={'name':{'type':Sequelize[_0x3361('0x2')]},'basename':{'type':Sequelize[_0x3361('0x2')]},'type':{'type':Sequelize[_0x3361('0x2')]}};
\ No newline at end of file
+var _0xb6b1=['STRING','sequelize'];(function(_0xefd3e6,_0x10d71e){var _0x52a204=function(_0x14222e){while(--_0x14222e){_0xefd3e6['push'](_0xefd3e6['shift']());}};_0x52a204(++_0x10d71e);}(_0xb6b1,0x17b));var _0x1b6b=function(_0x328534,_0x33b41e){_0x328534=_0x328534-0x0;var _0x2796c0=_0xb6b1[_0x328534];return _0x2796c0;};'use strict';var Sequelize=require(_0x1b6b('0x0'));module['exports']={'name':{'type':Sequelize[_0x1b6b('0x1')]},'basename':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x1b6b('0x1')]}};
\ No newline at end of file
index 20c1e8a..b2a7e8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fb0=['body','updatedAt','create','file','originalname','mimetype','ChatOfflineMessageId','join','root','server/files/attachments/','basename','download','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','error','name','send','index','map','Attachment','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','length','includeAll','find','clone','rawAttributes','get','omit','createdAt'];(function(_0x5a1e54,_0x2c8f4f){var _0x10f204=function(_0x45b8f9){while(--_0x45b8f9){_0x5a1e54['push'](_0x5a1e54['shift']());}};_0x10f204(++_0x2c8f4f);}(_0x9fb0,0xba));var _0x09fb=function(_0x365e54,_0x44be74){_0x365e54=_0x365e54-0x0;var _0x13317a=_0x9fb0[_0x365e54];return _0x13317a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x09fb('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x09fb('0x1'));var moment=require(_0x09fb('0x2'));var BPromise=require(_0x09fb('0x3'));var Mustache=require(_0x09fb('0x4'));var util=require(_0x09fb('0x5'));var path=require(_0x09fb('0x6'));var sox=require('sox');var csv=require(_0x09fb('0x7'));var ejs=require(_0x09fb('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x09fb('0x9'));var squel=require('squel');var crypto=require(_0x09fb('0xa'));var jsforce=require(_0x09fb('0xb'));var deskjs=require(_0x09fb('0xc'));var toCsv=require(_0x09fb('0x7'));var querystring=require('querystring');var Papa=require(_0x09fb('0xd'));var Redis=require(_0x09fb('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x09fb('0xf'));var as=require(_0x09fb('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x09fb('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x09fb('0x12'));var licenseUtil=require(_0x09fb('0x13'));var db=require(_0x09fb('0x14'))['db'];function respondWithStatusCode(_0x2d108d,_0x2cc8df){_0x2cc8df=_0x2cc8df||0xcc;return function(_0xf53d86){if(_0xf53d86){return _0x2d108d[_0x09fb('0x15')](_0x2cc8df);}return _0x2d108d[_0x09fb('0x16')](_0x2cc8df)[_0x09fb('0x17')]();};}function respondWithResult(_0x57c20,_0xe9c0c7){_0xe9c0c7=_0xe9c0c7||0xc8;return function(_0x2c4fb7){if(_0x2c4fb7){return _0x57c20[_0x09fb('0x16')](_0xe9c0c7)[_0x09fb('0x18')](_0x2c4fb7);}};}function respondWithFilteredResult(_0x2aca67,_0x4b2ec0){return function(_0xb2be9){if(_0xb2be9){var _0x4cfd94=typeof _0x4b2ec0['offset']==='undefined'&&typeof _0x4b2ec0['limit']===_0x09fb('0x19');var _0x506672=_0xb2be9[_0x09fb('0x1a')];var _0x250c5b=_0x4cfd94?0x0:_0x4b2ec0[_0x09fb('0x1b')];var _0x5a9dcb=_0x4cfd94?_0xb2be9[_0x09fb('0x1a')]:_0x4b2ec0['offset']+_0x4b2ec0[_0x09fb('0x1c')];var _0x519777;if(_0x5a9dcb>=_0x506672){_0x5a9dcb=_0x506672;_0x519777=0xc8;}else{_0x519777=0xce;}_0x2aca67[_0x09fb('0x16')](_0x519777);return _0x2aca67[_0x09fb('0x1d')](_0x09fb('0x1e'),_0x250c5b+'-'+_0x5a9dcb+'/'+_0x506672)[_0x09fb('0x18')](_0xb2be9);}return null;};}function patchUpdates(_0x243028){return function(_0x316a3c){try{jsonpatch[_0x09fb('0x1f')](_0x316a3c,_0x243028,!![]);}catch(_0x290263){return BPromise[_0x09fb('0x20')](_0x290263);}return _0x316a3c[_0x09fb('0x21')]();};}function saveUpdates(_0x15eabc,_0x167518){return function(_0x5e80a6){if(_0x5e80a6){return _0x5e80a6['update'](_0x15eabc)[_0x09fb('0x22')](function(_0x208254){return _0x208254;});}return null;};}function removeEntity(_0x58bea5,_0xa5929c){return function(_0x436674){if(_0x436674){return _0x436674[_0x09fb('0x23')]()[_0x09fb('0x22')](function(){_0x58bea5[_0x09fb('0x16')](0xcc)[_0x09fb('0x17')]();});}};}function handleEntityNotFound(_0x3f0503,_0x29201e){return function(_0x1fc682){if(!_0x1fc682){_0x3f0503[_0x09fb('0x15')](0x194);}return _0x1fc682;};}function handleError(_0x3b47aa,_0x21133d){_0x21133d=_0x21133d||0x1f4;return function(_0xa4f614){logger[_0x09fb('0x24')](_0xa4f614['stack']);if(_0xa4f614[_0x09fb('0x25')]){delete _0xa4f614[_0x09fb('0x25')];}_0x3b47aa[_0x09fb('0x16')](_0x21133d)[_0x09fb('0x26')](_0xa4f614);};}exports[_0x09fb('0x27')]=function(_0x1b5dd9,_0x87b320){var _0x190c48={},_0x1cd23d={},_0x226d8f={'count':0x0,'rows':[]};var _0x239298=_[_0x09fb('0x28')](db[_0x09fb('0x29')]['rawAttributes'],function(_0x1c60c4){return{'name':_0x1c60c4[_0x09fb('0x2a')],'type':_0x1c60c4[_0x09fb('0x2b')][_0x09fb('0x2c')]};});_0x1cd23d[_0x09fb('0x2d')]=_[_0x09fb('0x28')](_0x239298,_0x09fb('0x25'));_0x1cd23d[_0x09fb('0x2e')]=_[_0x09fb('0x2f')](_0x1b5dd9[_0x09fb('0x2e')]);_0x1cd23d[_0x09fb('0x30')]=_[_0x09fb('0x31')](_0x1cd23d[_0x09fb('0x2d')],_0x1cd23d[_0x09fb('0x2e')]);_0x190c48[_0x09fb('0x32')]=_[_0x09fb('0x31')](_0x1cd23d[_0x09fb('0x2d')],qs[_0x09fb('0x33')](_0x1b5dd9['query'][_0x09fb('0x33')]));_0x190c48[_0x09fb('0x32')]=_0x190c48['attributes']['length']?_0x190c48[_0x09fb('0x32')]:_0x1cd23d[_0x09fb('0x2d')];if(!_0x1b5dd9[_0x09fb('0x2e')]['hasOwnProperty'](_0x09fb('0x34'))){_0x190c48[_0x09fb('0x1c')]=qs[_0x09fb('0x1c')](_0x1b5dd9[_0x09fb('0x2e')][_0x09fb('0x1c')]);_0x190c48['offset']=qs[_0x09fb('0x1b')](_0x1b5dd9[_0x09fb('0x2e')]['offset']);}_0x190c48[_0x09fb('0x35')]=qs[_0x09fb('0x36')](_0x1b5dd9[_0x09fb('0x2e')][_0x09fb('0x36')]);_0x190c48[_0x09fb('0x37')]=qs[_0x09fb('0x30')](_[_0x09fb('0x38')](_0x1b5dd9['query'],_0x1cd23d[_0x09fb('0x30')]),_0x239298);if(_0x1b5dd9['query'][_0x09fb('0x39')]){_0x190c48[_0x09fb('0x37')]=_[_0x09fb('0x3a')](_0x190c48[_0x09fb('0x37')],{'$or':_['map'](_0x239298,function(_0x8d492c){if(_0x8d492c[_0x09fb('0x2b')]!==_0x09fb('0x3b')){var _0xf86575={};_0xf86575[_0x8d492c[_0x09fb('0x25')]]={'$like':'%'+_0x1b5dd9[_0x09fb('0x2e')][_0x09fb('0x39')]+'%'};return _0xf86575;}})});}_0x190c48=_['merge']({},_0x190c48,_0x1b5dd9[_0x09fb('0x3c')]);var _0x4e07c6={'where':_0x190c48[_0x09fb('0x37')]};return db['Attachment'][_0x09fb('0x1a')](_0x4e07c6)['then'](function(_0xbe6c42){_0x226d8f[_0x09fb('0x1a')]=_0xbe6c42;if(_0x1b5dd9['query']['includeAll']){_0x190c48[_0x09fb('0x3d')]=[{'all':!![]}];}return db[_0x09fb('0x29')][_0x09fb('0x3e')](_0x190c48);})[_0x09fb('0x22')](function(_0x14ada1){_0x226d8f[_0x09fb('0x3f')]=_0x14ada1;return _0x226d8f;})['then'](respondWithFilteredResult(_0x87b320,_0x190c48))[_0x09fb('0x40')](handleError(_0x87b320,null));};exports[_0x09fb('0x41')]=function(_0x129c80,_0x345c15){var _0x537666={'raw':!![],'where':{'id':_0x129c80[_0x09fb('0x42')]['id']}},_0x27e8ec={};_0x27e8ec[_0x09fb('0x2d')]=_[_0x09fb('0x2f')](db[_0x09fb('0x29')]['rawAttributes']);_0x27e8ec[_0x09fb('0x2e')]=_['keys'](_0x129c80[_0x09fb('0x2e')]);_0x27e8ec['filters']=_[_0x09fb('0x31')](_0x27e8ec['model'],_0x27e8ec['query']);_0x537666[_0x09fb('0x32')]=_[_0x09fb('0x31')](_0x27e8ec['model'],qs[_0x09fb('0x33')](_0x129c80[_0x09fb('0x2e')][_0x09fb('0x33')]));_0x537666[_0x09fb('0x32')]=_0x537666[_0x09fb('0x32')][_0x09fb('0x43')]?_0x537666[_0x09fb('0x32')]:_0x27e8ec['model'];if(_0x129c80[_0x09fb('0x2e')][_0x09fb('0x44')]){_0x537666[_0x09fb('0x3d')]=[{'all':!![]}];}_0x537666=_[_0x09fb('0x3a')]({},_0x537666,_0x129c80[_0x09fb('0x3c')]);return db[_0x09fb('0x29')][_0x09fb('0x45')](_0x537666)[_0x09fb('0x22')](handleEntityNotFound(_0x345c15,null))['then'](respondWithResult(_0x345c15,null))[_0x09fb('0x40')](handleError(_0x345c15,null));};exports[_0x09fb('0x46')]=function(_0xaff47a,_0x3f3db6){var _0x509061={'where':{'id':_0xaff47a['params']['id']}},_0x4e1142={};_0x4e1142['model']=_[_0x09fb('0x2f')](db[_0x09fb('0x29')][_0x09fb('0x47')]);_0x509061[_0x09fb('0x32')]=_[_0x09fb('0x31')](_0x4e1142[_0x09fb('0x2d')],qs[_0x09fb('0x33')](_0xaff47a[_0x09fb('0x2e')][_0x09fb('0x33')]));_0x509061[_0x09fb('0x32')]=_0x509061[_0x09fb('0x32')]['length']?_0x509061[_0x09fb('0x32')]:_0x4e1142['model'];if(_0xaff47a[_0x09fb('0x2e')][_0x09fb('0x44')]){_0x509061[_0x09fb('0x3d')]=[{'all':!![]}];}_0x509061=_[_0x09fb('0x3a')]({},_0x509061,_0xaff47a['options']);return db[_0x09fb('0x29')]['find'](_0x509061)[_0x09fb('0x22')](handleEntityNotFound(_0x3f3db6,null))['then'](function(_0x414f7e){if(_0x414f7e){var _0x24585c=_0x414f7e[_0x09fb('0x48')]({'plain':!![]});_0x24585c=qs[_0x09fb('0x49')](_0x24585c,['id',_0x09fb('0x4a'),'updatedAt']);_0xaff47a[_0x09fb('0x4b')]=_['omit'](_0xaff47a[_0x09fb('0x4b')],['id',_0x09fb('0x4a'),_0x09fb('0x4c')]);return db['Attachment'][_0x09fb('0x4d')](_[_0x09fb('0x3a')](_0x24585c,_0xaff47a[_0x09fb('0x4b')]),{'include':_0xaff47a[_0x09fb('0x2e')]['includeAll']?[{'all':!![]}]:undefined});}})[_0x09fb('0x22')](respondWithResult(_0x3f3db6,0xc9))[_0x09fb('0x40')](handleError(_0x3f3db6,null));};exports['update']=function(_0x2fd384,_0x1b89e3){if(_0x2fd384[_0x09fb('0x4b')]['id']){delete _0x2fd384[_0x09fb('0x4b')]['id'];}return db['Attachment'][_0x09fb('0x45')]({'where':{'id':_0x2fd384['params']['id']}})[_0x09fb('0x22')](handleEntityNotFound(_0x1b89e3,null))['then'](saveUpdates(_0x2fd384['body'],null))[_0x09fb('0x22')](respondWithResult(_0x1b89e3,null))[_0x09fb('0x40')](handleError(_0x1b89e3,null));};exports['destroy']=function(_0x2e0a87,_0x5834ac){return db[_0x09fb('0x29')][_0x09fb('0x45')]({'where':{'id':_0x2e0a87[_0x09fb('0x42')]['id']}})[_0x09fb('0x22')](handleEntityNotFound(_0x5834ac,null))[_0x09fb('0x22')](removeEntity(_0x5834ac,null))[_0x09fb('0x40')](handleError(_0x5834ac,null));};exports['create']=function(_0xa7a33c,_0x40f5b8,_0x75753e){_0xa7a33c[_0x09fb('0x4b')][_0x09fb('0x25')]=_0xa7a33c[_0x09fb('0x4e')][_0x09fb('0x4f')];_0xa7a33c[_0x09fb('0x4b')]['basename']=_0xa7a33c[_0x09fb('0x4e')]['filename'];_0xa7a33c['body']['type']=_0xa7a33c[_0x09fb('0x4e')][_0x09fb('0x50')];return db['Attachment'][_0x09fb('0x4d')](_0xa7a33c['body'])[_0x09fb('0x22')](respondWithResult(_0x40f5b8,0xc9))[_0x09fb('0x40')](handleError(_0x40f5b8,null));};exports['download']=function(_0x389f8a,_0x4b1a58,_0x159a51){return db['Attachment']['findOne']({'where':{'id':_0x389f8a[_0x09fb('0x42')]['id']},'raw':!![]})[_0x09fb('0x22')](handleEntityNotFound(_0x4b1a58,null))[_0x09fb('0x22')](function(_0x7d418){if(_0x7d418){var _0x417564=_0x7d418[_0x09fb('0x51')]!==null;var _0x2ad73f=path[_0x09fb('0x52')](config[_0x09fb('0x53')],_0x09fb('0x54'));if(_0x417564){_0x2ad73f=path[_0x09fb('0x52')](_0x2ad73f,'offline-chat/');}var _0x46cbc9=path[_0x09fb('0x52')](_0x2ad73f,_0x7d418[_0x09fb('0x55')]);return _0x4b1a58[_0x09fb('0x56')](_0x46cbc9);}})[_0x09fb('0x40')](handleError(_0x4b1a58,null));};
\ No newline at end of file
+var _0x2fb7=['includeAll','include','findAll','catch','params','keys','options','clone','find','get','omit','createdAt','body','updatedAt','create','file','basename','mimetype','download','findOne','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','limit','undefined','count','offset','set','Content-Range','reject','save','update','then','end','error','stack','name','send','index','map','Attachment','rawAttributes','fieldName','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter'];(function(_0x3c52ab,_0x2ef049){var _0x2bca11=function(_0x1c9a3b){while(--_0x1c9a3b){_0x3c52ab['push'](_0x3c52ab['shift']());}};_0x2bca11(++_0x2ef049);}(_0x2fb7,0x1e5));var _0x72fb=function(_0x299523,_0xc9ba8){_0x299523=_0x299523-0x0;var _0x160a8e=_0x2fb7[_0x299523];return _0x160a8e;};'use strict';var emlformat=require(_0x72fb('0x0'));var rimraf=require(_0x72fb('0x1'));var zipdir=require(_0x72fb('0x2'));var jsonpatch=require(_0x72fb('0x3'));var rp=require(_0x72fb('0x4'));var moment=require(_0x72fb('0x5'));var BPromise=require(_0x72fb('0x6'));var Mustache=require(_0x72fb('0x7'));var util=require(_0x72fb('0x8'));var path=require(_0x72fb('0x9'));var sox=require(_0x72fb('0xa'));var csv=require(_0x72fb('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x72fb('0xc'));var _=require(_0x72fb('0xd'));var squel=require(_0x72fb('0xe'));var crypto=require(_0x72fb('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x72fb('0x10'));var toCsv=require(_0x72fb('0xb'));var querystring=require(_0x72fb('0x11'));var Papa=require(_0x72fb('0x12'));var Redis=require(_0x72fb('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x72fb('0x14'));var as=require(_0x72fb('0x15'));var hardwareService=require(_0x72fb('0x16'));var logger=require(_0x72fb('0x17'))('api');var utils=require(_0x72fb('0x18'));var config=require(_0x72fb('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x72fb('0x1a'))['db'];function respondWithStatusCode(_0x33751c,_0x484c67){_0x484c67=_0x484c67||0xcc;return function(_0x2a341a){if(_0x2a341a){return _0x33751c[_0x72fb('0x1b')](_0x484c67);}return _0x33751c[_0x72fb('0x1c')](_0x484c67)['end']();};}function respondWithResult(_0x3cabb3,_0x2833bf){_0x2833bf=_0x2833bf||0xc8;return function(_0x5d191d){if(_0x5d191d){return _0x3cabb3['status'](_0x2833bf)[_0x72fb('0x1d')](_0x5d191d);}};}function respondWithFilteredResult(_0x108ecb,_0x3b8ab3){return function(_0x598754){if(_0x598754){var _0x4103=typeof _0x3b8ab3['offset']==='undefined'&&typeof _0x3b8ab3[_0x72fb('0x1e')]===_0x72fb('0x1f');var _0x1c03ab=_0x598754[_0x72fb('0x20')];var _0x4ff8fb=_0x4103?0x0:_0x3b8ab3[_0x72fb('0x21')];var _0x3d80c8=_0x4103?_0x598754['count']:_0x3b8ab3[_0x72fb('0x21')]+_0x3b8ab3[_0x72fb('0x1e')];var _0x324e59;if(_0x3d80c8>=_0x1c03ab){_0x3d80c8=_0x1c03ab;_0x324e59=0xc8;}else{_0x324e59=0xce;}_0x108ecb[_0x72fb('0x1c')](_0x324e59);return _0x108ecb[_0x72fb('0x22')](_0x72fb('0x23'),_0x4ff8fb+'-'+_0x3d80c8+'/'+_0x1c03ab)['json'](_0x598754);}return null;};}function patchUpdates(_0x156943){return function(_0x4424ae){try{jsonpatch['apply'](_0x4424ae,_0x156943,!![]);}catch(_0xe441af){return BPromise[_0x72fb('0x24')](_0xe441af);}return _0x4424ae[_0x72fb('0x25')]();};}function saveUpdates(_0x2c0f24,_0x477dfb){return function(_0x3ef5de){if(_0x3ef5de){return _0x3ef5de[_0x72fb('0x26')](_0x2c0f24)['then'](function(_0x2b7fb5){return _0x2b7fb5;});}return null;};}function removeEntity(_0x5a5059,_0x3e1d2b){return function(_0x265218){if(_0x265218){return _0x265218['destroy']()[_0x72fb('0x27')](function(){_0x5a5059[_0x72fb('0x1c')](0xcc)[_0x72fb('0x28')]();});}};}function handleEntityNotFound(_0x682eb1,_0x4ebdfd){return function(_0x316f54){if(!_0x316f54){_0x682eb1['sendStatus'](0x194);}return _0x316f54;};}function handleError(_0x14a14a,_0x51596b){_0x51596b=_0x51596b||0x1f4;return function(_0x3e7def){logger[_0x72fb('0x29')](_0x3e7def[_0x72fb('0x2a')]);if(_0x3e7def[_0x72fb('0x2b')]){delete _0x3e7def['name'];}_0x14a14a[_0x72fb('0x1c')](_0x51596b)[_0x72fb('0x2c')](_0x3e7def);};}exports[_0x72fb('0x2d')]=function(_0x3940fc,_0x4511bf){var _0x43e9ca={},_0x2dfd9f={},_0x51edfa={'count':0x0,'rows':[]};var _0x2b823b=_[_0x72fb('0x2e')](db[_0x72fb('0x2f')][_0x72fb('0x30')],function(_0x41126b){return{'name':_0x41126b[_0x72fb('0x31')],'type':_0x41126b['type']['key']};});_0x2dfd9f[_0x72fb('0x32')]=_[_0x72fb('0x2e')](_0x2b823b,_0x72fb('0x2b'));_0x2dfd9f[_0x72fb('0x33')]=_['keys'](_0x3940fc[_0x72fb('0x33')]);_0x2dfd9f[_0x72fb('0x34')]=_[_0x72fb('0x35')](_0x2dfd9f['model'],_0x2dfd9f[_0x72fb('0x33')]);_0x43e9ca[_0x72fb('0x36')]=_[_0x72fb('0x35')](_0x2dfd9f[_0x72fb('0x32')],qs[_0x72fb('0x37')](_0x3940fc[_0x72fb('0x33')][_0x72fb('0x37')]));_0x43e9ca['attributes']=_0x43e9ca[_0x72fb('0x36')][_0x72fb('0x38')]?_0x43e9ca[_0x72fb('0x36')]:_0x2dfd9f[_0x72fb('0x32')];if(!_0x3940fc[_0x72fb('0x33')][_0x72fb('0x39')](_0x72fb('0x3a'))){_0x43e9ca['limit']=qs[_0x72fb('0x1e')](_0x3940fc[_0x72fb('0x33')][_0x72fb('0x1e')]);_0x43e9ca[_0x72fb('0x21')]=qs['offset'](_0x3940fc[_0x72fb('0x33')][_0x72fb('0x21')]);}_0x43e9ca[_0x72fb('0x3b')]=qs[_0x72fb('0x3c')](_0x3940fc[_0x72fb('0x33')][_0x72fb('0x3c')]);_0x43e9ca[_0x72fb('0x3d')]=qs[_0x72fb('0x34')](_[_0x72fb('0x3e')](_0x3940fc[_0x72fb('0x33')],_0x2dfd9f['filters']),_0x2b823b);if(_0x3940fc[_0x72fb('0x33')]['filter']){_0x43e9ca[_0x72fb('0x3d')]=_[_0x72fb('0x3f')](_0x43e9ca[_0x72fb('0x3d')],{'$or':_['map'](_0x2b823b,function(_0x2b993b){if(_0x2b993b[_0x72fb('0x40')]!==_0x72fb('0x41')){var _0x5039b3={};_0x5039b3[_0x2b993b[_0x72fb('0x2b')]]={'$like':'%'+_0x3940fc[_0x72fb('0x33')][_0x72fb('0x42')]+'%'};return _0x5039b3;}})});}_0x43e9ca=_['merge']({},_0x43e9ca,_0x3940fc['options']);var _0x4b0bcf={'where':_0x43e9ca[_0x72fb('0x3d')]};return db[_0x72fb('0x2f')][_0x72fb('0x20')](_0x4b0bcf)[_0x72fb('0x27')](function(_0x472c7c){_0x51edfa[_0x72fb('0x20')]=_0x472c7c;if(_0x3940fc[_0x72fb('0x33')][_0x72fb('0x43')]){_0x43e9ca[_0x72fb('0x44')]=[{'all':!![]}];}return db[_0x72fb('0x2f')][_0x72fb('0x45')](_0x43e9ca);})[_0x72fb('0x27')](function(_0x224082){_0x51edfa['rows']=_0x224082;return _0x51edfa;})[_0x72fb('0x27')](respondWithFilteredResult(_0x4511bf,_0x43e9ca))[_0x72fb('0x46')](handleError(_0x4511bf,null));};exports['show']=function(_0x15a2a9,_0x57b91e){var _0xebb91f={'raw':!![],'where':{'id':_0x15a2a9[_0x72fb('0x47')]['id']}},_0x56c331={};_0x56c331[_0x72fb('0x32')]=_['keys'](db[_0x72fb('0x2f')][_0x72fb('0x30')]);_0x56c331['query']=_[_0x72fb('0x48')](_0x15a2a9[_0x72fb('0x33')]);_0x56c331[_0x72fb('0x34')]=_[_0x72fb('0x35')](_0x56c331[_0x72fb('0x32')],_0x56c331['query']);_0xebb91f[_0x72fb('0x36')]=_[_0x72fb('0x35')](_0x56c331[_0x72fb('0x32')],qs[_0x72fb('0x37')](_0x15a2a9[_0x72fb('0x33')]['fields']));_0xebb91f['attributes']=_0xebb91f[_0x72fb('0x36')][_0x72fb('0x38')]?_0xebb91f[_0x72fb('0x36')]:_0x56c331[_0x72fb('0x32')];if(_0x15a2a9[_0x72fb('0x33')][_0x72fb('0x43')]){_0xebb91f[_0x72fb('0x44')]=[{'all':!![]}];}_0xebb91f=_[_0x72fb('0x3f')]({},_0xebb91f,_0x15a2a9[_0x72fb('0x49')]);return db['Attachment']['find'](_0xebb91f)[_0x72fb('0x27')](handleEntityNotFound(_0x57b91e,null))[_0x72fb('0x27')](respondWithResult(_0x57b91e,null))[_0x72fb('0x46')](handleError(_0x57b91e,null));};exports[_0x72fb('0x4a')]=function(_0x411180,_0x370fa6){var _0x431fbd={'where':{'id':_0x411180[_0x72fb('0x47')]['id']}},_0x2ac7f6={};_0x2ac7f6[_0x72fb('0x32')]=_[_0x72fb('0x48')](db[_0x72fb('0x2f')][_0x72fb('0x30')]);_0x431fbd[_0x72fb('0x36')]=_[_0x72fb('0x35')](_0x2ac7f6[_0x72fb('0x32')],qs[_0x72fb('0x37')](_0x411180[_0x72fb('0x33')]['fields']));_0x431fbd['attributes']=_0x431fbd['attributes'][_0x72fb('0x38')]?_0x431fbd[_0x72fb('0x36')]:_0x2ac7f6[_0x72fb('0x32')];if(_0x411180[_0x72fb('0x33')][_0x72fb('0x43')]){_0x431fbd[_0x72fb('0x44')]=[{'all':!![]}];}_0x431fbd=_[_0x72fb('0x3f')]({},_0x431fbd,_0x411180[_0x72fb('0x49')]);return db[_0x72fb('0x2f')][_0x72fb('0x4b')](_0x431fbd)[_0x72fb('0x27')](handleEntityNotFound(_0x370fa6,null))['then'](function(_0x52e2e8){if(_0x52e2e8){var _0x7e1abe=_0x52e2e8[_0x72fb('0x4c')]({'plain':!![]});_0x7e1abe=qs[_0x72fb('0x4d')](_0x7e1abe,['id',_0x72fb('0x4e'),'updatedAt']);_0x411180[_0x72fb('0x4f')]=_['omit'](_0x411180['body'],['id',_0x72fb('0x4e'),_0x72fb('0x50')]);return db[_0x72fb('0x2f')][_0x72fb('0x51')](_[_0x72fb('0x3f')](_0x7e1abe,_0x411180[_0x72fb('0x4f')]),{'include':_0x411180['query'][_0x72fb('0x43')]?[{'all':!![]}]:undefined});}})[_0x72fb('0x27')](respondWithResult(_0x370fa6,0xc9))[_0x72fb('0x46')](handleError(_0x370fa6,null));};exports[_0x72fb('0x26')]=function(_0x1029e7,_0x5359a1){if(_0x1029e7['body']['id']){delete _0x1029e7['body']['id'];}return db[_0x72fb('0x2f')][_0x72fb('0x4b')]({'where':{'id':_0x1029e7[_0x72fb('0x47')]['id']}})[_0x72fb('0x27')](handleEntityNotFound(_0x5359a1,null))[_0x72fb('0x27')](saveUpdates(_0x1029e7[_0x72fb('0x4f')],null))[_0x72fb('0x27')](respondWithResult(_0x5359a1,null))[_0x72fb('0x46')](handleError(_0x5359a1,null));};exports['destroy']=function(_0x3a4ebc,_0x3558a9){return db[_0x72fb('0x2f')][_0x72fb('0x4b')]({'where':{'id':_0x3a4ebc['params']['id']}})[_0x72fb('0x27')](handleEntityNotFound(_0x3558a9,null))[_0x72fb('0x27')](removeEntity(_0x3558a9,null))[_0x72fb('0x46')](handleError(_0x3558a9,null));};exports[_0x72fb('0x51')]=function(_0x167b1a,_0x1067dd,_0x22af62){_0x167b1a['body']['name']=_0x167b1a[_0x72fb('0x52')]['originalname'];_0x167b1a[_0x72fb('0x4f')][_0x72fb('0x53')]=_0x167b1a['file']['filename'];_0x167b1a[_0x72fb('0x4f')][_0x72fb('0x40')]=_0x167b1a['file'][_0x72fb('0x54')];return db[_0x72fb('0x2f')][_0x72fb('0x51')](_0x167b1a['body'])[_0x72fb('0x27')](respondWithResult(_0x1067dd,0xc9))[_0x72fb('0x46')](handleError(_0x1067dd,null));};exports[_0x72fb('0x55')]=function(_0x2e77ea,_0x470fe6,_0x27ec3f){return db[_0x72fb('0x2f')][_0x72fb('0x56')]({'where':{'id':_0x2e77ea[_0x72fb('0x47')]['id']},'raw':!![]})[_0x72fb('0x27')](handleEntityNotFound(_0x470fe6,null))['then'](function(_0x340a8d){if(_0x340a8d){var _0xe8326c=_0x340a8d[_0x72fb('0x57')]!==null;var _0x356dfb=path[_0x72fb('0x58')](config[_0x72fb('0x59')],_0x72fb('0x5a'));if(_0xe8326c){_0x356dfb=path[_0x72fb('0x58')](_0x356dfb,_0x72fb('0x5b'));}var _0x145158=path[_0x72fb('0x58')](_0x356dfb,_0x340a8d[_0x72fb('0x53')]);return _0x470fe6[_0x72fb('0x55')](_0x145158);}})[_0x72fb('0x46')](handleError(_0x470fe6,null));};
\ No newline at end of file
index ed73184..3f2ccf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a04=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./attachment.attributes','exports','define','Attachment','attachments'];(function(_0xc4b2a,_0x49e489){var _0x2e3cce=function(_0x3810b5){while(--_0x3810b5){_0xc4b2a['push'](_0xc4b2a['shift']());}};_0x2e3cce(++_0x49e489);}(_0x6a04,0xa8));var _0x46a0=function(_0x1a7bed,_0x15278d){_0x1a7bed=_0x1a7bed-0x0;var _0x2d9381=_0x6a04[_0x1a7bed];return _0x2d9381;};'use strict';var _=require(_0x46a0('0x0'));var util=require(_0x46a0('0x1'));var logger=require(_0x46a0('0x2'))(_0x46a0('0x3'));var moment=require(_0x46a0('0x4'));var BPromise=require(_0x46a0('0x5'));var rp=require(_0x46a0('0x6'));var fs=require('fs');var path=require(_0x46a0('0x7'));var rimraf=require(_0x46a0('0x8'));var config=require('../../config/environment');var attributes=require(_0x46a0('0x9'));module[_0x46a0('0xa')]=function(_0x585dea,_0xb94f9a){return _0x585dea[_0x46a0('0xb')](_0x46a0('0xc'),attributes,{'tableName':_0x46a0('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x63fc=['./attachment.attributes','define','Attachment','attachments','util','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x4828b1,_0x5c8cf3){var _0x1fec1b=function(_0x3f2e5a){while(--_0x3f2e5a){_0x4828b1['push'](_0x4828b1['shift']());}};_0x1fec1b(++_0x5c8cf3);}(_0x63fc,0xe0));var _0xc63f=function(_0x4c440b,_0x3ea627){_0x4c440b=_0x4c440b-0x0;var _0x2d48cf=_0x63fc[_0x4c440b];return _0x2d48cf;};'use strict';var _=require('lodash');var util=require(_0xc63f('0x0'));var logger=require('../../config/logger')(_0xc63f('0x1'));var moment=require(_0xc63f('0x2'));var BPromise=require(_0xc63f('0x3'));var rp=require(_0xc63f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc63f('0x5'));var config=require(_0xc63f('0x6'));var attributes=require(_0xc63f('0x7'));module['exports']=function(_0x396279,_0x3636d6){return _0x396279[_0xc63f('0x8')](_0xc63f('0x9'),attributes,{'tableName':_0xc63f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 58857a3..808fed2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa37e=['catch','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','request','then','info','Attachment,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','CreateAttachment','Attachment','create','body','options','raw'];(function(_0x401609,_0x5eb61d){var _0x35fd57=function(_0x5dcddd){while(--_0x5dcddd){_0x401609['push'](_0x401609['shift']());}};_0x35fd57(++_0x5eb61d);}(_0xa37e,0x97));var _0xea37=function(_0x1411f9,_0x83d3b6){_0x1411f9=_0x1411f9-0x0;var _0x48431c=_0xa37e[_0x1411f9];return _0x48431c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xea37('0x0'));var BPromise=require(_0xea37('0x1'));var rs=require(_0xea37('0x2'));var fs=require('fs');var Redis=require(_0xea37('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xea37('0x4'));var logger=require('../../config/logger')(_0xea37('0x5'));var config=require(_0xea37('0x6'));var jayson=require(_0xea37('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x36c489,_0x4a9e08,_0x4ae081){return new BPromise(function(_0x2c2890,_0x1401e1){return client[_0xea37('0x8')](_0x36c489,_0x4ae081)[_0xea37('0x9')](function(_0x5e4ebe){logger[_0xea37('0xa')](_0xea37('0xb'),_0x4a9e08,_0xea37('0xc'));logger['debug']('Attachment,\x20%s,\x20%s,\x20%s',_0x4a9e08,_0xea37('0xc'),JSON[_0xea37('0xd')](_0x5e4ebe));if(_0x5e4ebe[_0xea37('0xe')]){if(_0x5e4ebe['error'][_0xea37('0xf')]===0x1f4){logger[_0xea37('0xe')](_0xea37('0xb'),_0x4a9e08,_0x5e4ebe['error'][_0xea37('0x10')]);return _0x1401e1(_0x5e4ebe[_0xea37('0xe')]['message']);}logger[_0xea37('0xe')]('Attachment,\x20%s,\x20%s',_0x4a9e08,_0x5e4ebe[_0xea37('0xe')]['message']);return _0x2c2890(_0x5e4ebe[_0xea37('0xe')][_0xea37('0x10')]);}else{logger[_0xea37('0xa')](_0xea37('0xb'),_0x4a9e08,'request\x20sent');_0x2c2890(_0x5e4ebe[_0xea37('0x11')]['message']);}})['catch'](function(_0x3ae3cc){logger['error'](_0xea37('0xb'),_0x4a9e08,_0x3ae3cc);_0x1401e1(_0x3ae3cc);});});}exports[_0xea37('0x12')]=function(_0x4ef3c9){var _0x2242f0=this;return new Promise(function(_0x465d3b,_0x5427e7){return db[_0xea37('0x13')][_0xea37('0x14')](_0x4ef3c9[_0xea37('0x15')],{'raw':_0x4ef3c9[_0xea37('0x16')]?_0x4ef3c9[_0xea37('0x16')][_0xea37('0x17')]===undefined?!![]:![]:!![]})[_0xea37('0x9')](function(_0x238567){logger[_0xea37('0xa')](_0xea37('0x12'),_0x4ef3c9);logger['debug'](_0xea37('0x12'),_0x4ef3c9,JSON[_0xea37('0xd')](_0x238567));_0x465d3b(_0x238567);})[_0xea37('0x18')](function(_0x536eff){logger['error'](_0xea37('0x12'),_0x536eff[_0xea37('0x10')],_0x4ef3c9);_0x5427e7(_0x2242f0[_0xea37('0xe')](0x1f4,_0x536eff[_0xea37('0x10')]));});});};
\ No newline at end of file
+var _0x48ea=['lodash','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Attachment,\x20%s,\x20%s','debug','error','code','message','result','catch','CreateAttachment','Attachment','create','body','options','stringify'];(function(_0x23182f,_0x3e60d5){var _0x4db43c=function(_0x516181){while(--_0x516181){_0x23182f['push'](_0x23182f['shift']());}};_0x4db43c(++_0x3e60d5);}(_0x48ea,0x9c));var _0xa48e=function(_0x42593f,_0x72f6fd){_0x42593f=_0x42593f-0x0;var _0x420422=_0x48ea[_0x42593f];return _0x420422;};'use strict';var _=require(_0xa48e('0x0'));var util=require('util');var moment=require(_0xa48e('0x1'));var BPromise=require(_0xa48e('0x2'));var rs=require(_0xa48e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa48e('0x4'));var logger=require('../../config/logger')(_0xa48e('0x5'));var config=require(_0xa48e('0x6'));var jayson=require(_0xa48e('0x7'));var client=jayson[_0xa48e('0x8')][_0xa48e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x405033,_0x5213e5,_0x143004){return new BPromise(function(_0x3bdc25,_0x170ffc){return client[_0xa48e('0xa')](_0x405033,_0x143004)[_0xa48e('0xb')](function(_0x3ad947){logger[_0xa48e('0xc')](_0xa48e('0xd'),_0x5213e5,'request\x20sent');logger[_0xa48e('0xe')]('Attachment,\x20%s,\x20%s,\x20%s',_0x5213e5,'request\x20sent',JSON['stringify'](_0x3ad947));if(_0x3ad947[_0xa48e('0xf')]){if(_0x3ad947[_0xa48e('0xf')][_0xa48e('0x10')]===0x1f4){logger[_0xa48e('0xf')]('Attachment,\x20%s,\x20%s',_0x5213e5,_0x3ad947[_0xa48e('0xf')][_0xa48e('0x11')]);return _0x170ffc(_0x3ad947[_0xa48e('0xf')][_0xa48e('0x11')]);}logger[_0xa48e('0xf')](_0xa48e('0xd'),_0x5213e5,_0x3ad947[_0xa48e('0xf')]['message']);return _0x3bdc25(_0x3ad947[_0xa48e('0xf')][_0xa48e('0x11')]);}else{logger[_0xa48e('0xc')](_0xa48e('0xd'),_0x5213e5,'request\x20sent');_0x3bdc25(_0x3ad947[_0xa48e('0x12')][_0xa48e('0x11')]);}})[_0xa48e('0x13')](function(_0x28c15c){logger[_0xa48e('0xf')](_0xa48e('0xd'),_0x5213e5,_0x28c15c);_0x170ffc(_0x28c15c);});});}exports[_0xa48e('0x14')]=function(_0x1f1cbc){var _0x320d22=this;return new Promise(function(_0x1baea5,_0xfc65bf){return db[_0xa48e('0x15')][_0xa48e('0x16')](_0x1f1cbc[_0xa48e('0x17')],{'raw':_0x1f1cbc[_0xa48e('0x18')]?_0x1f1cbc['options']['raw']===undefined?!![]:![]:!![]})[_0xa48e('0xb')](function(_0x5939e0){logger[_0xa48e('0xc')](_0xa48e('0x14'),_0x1f1cbc);logger[_0xa48e('0xe')](_0xa48e('0x14'),_0x1f1cbc,JSON[_0xa48e('0x19')](_0x5939e0));_0x1baea5(_0x5939e0);})[_0xa48e('0x13')](function(_0x240f87){logger['error'](_0xa48e('0x14'),_0x240f87['message'],_0x1f1cbc);_0xfc65bf(_0x320d22['error'](0x1f4,_0x240f87['message']));});});};
\ No newline at end of file
index f56075d..0382e7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['put','/:id','update','delete','destroy','exports','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','index','isAuthenticated','show','/:id/download','post','/:id/clone','clone','diskStorage','%s-%s','replace','single','file','create'];(function(_0xc3faf,_0x263ca6){var _0x3ccbd4=function(_0xb75a34){while(--_0xb75a34){_0xc3faf['push'](_0xc3faf['shift']());}};_0x3ccbd4(++_0x263ca6);}(_0x757a,0xde));var _0xa757=function(_0x7d12ad,_0x290075){_0x7d12ad=_0x7d12ad-0x0;var _0x49fb5b=_0x757a[_0x7d12ad];return _0x49fb5b;};'use strict';var multer=require('multer');var util=require(_0xa757('0x0'));var path=require(_0xa757('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xa757('0x2'));var auth=require(_0xa757('0x3'));var interaction=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var controller=require(_0xa757('0x6'));router[_0xa757('0x7')]('/',auth['isAuthenticated'](),controller[_0xa757('0x8')]);router[_0xa757('0x7')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0xa')]);router[_0xa757('0x7')](_0xa757('0xb'),auth[_0xa757('0x9')](),controller['download']);router[_0xa757('0xc')](_0xa757('0xd'),auth[_0xa757('0x9')](),controller[_0xa757('0xe')]);var upload=multer({'storage':multer[_0xa757('0xf')]({'destination':function(_0x188ad5,_0x17408b,_0x483d77){_0x483d77(null,path['join'](config['root'],'server/files/attachments/'));},'filename':function(_0x4db68e,_0x421040,_0x544b45){_0x544b45(null,util['format'](_0xa757('0x10'),Date['now'](),_0x421040['originalname'][_0xa757('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xa757('0xc')]('/',upload[_0xa757('0x12')](_0xa757('0x13')),controller[_0xa757('0x14')]);router[_0xa757('0x15')](_0xa757('0x16'),auth[_0xa757('0x9')](),controller[_0xa757('0x17')]);router[_0xa757('0x18')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0x19')]);module[_0xa757('0x1a')]=router;
\ No newline at end of file
+var _0x5f66=['fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/download','/:id/clone','clone','diskStorage','root','format','%s-%s','now','originalname','replace','post','single','file','create','delete','destroy','exports','util','connect-timeout','express','Router'];(function(_0x1f9f5f,_0x509fb7){var _0x51d649=function(_0x4a5285){while(--_0x4a5285){_0x1f9f5f['push'](_0x1f9f5f['shift']());}};_0x51d649(++_0x509fb7);}(_0x5f66,0x1a0));var _0x65f6=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x5f66[_0x164eca];return _0x2ce562;};'use strict';var multer=require('multer');var util=require(_0x65f6('0x0'));var path=require('path');var timeout=require(_0x65f6('0x1'));var express=require(_0x65f6('0x2'));var router=express[_0x65f6('0x3')]();var fs_extra=require(_0x65f6('0x4'));var auth=require(_0x65f6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x65f6('0x6'));var controller=require('./attachment.controller');router[_0x65f6('0x7')]('/',auth[_0x65f6('0x8')](),controller['index']);router['get'](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xa')]);router[_0x65f6('0x7')](_0x65f6('0xb'),auth[_0x65f6('0x8')](),controller['download']);router['post'](_0x65f6('0xc'),auth[_0x65f6('0x8')](),controller[_0x65f6('0xd')]);var upload=multer({'storage':multer[_0x65f6('0xe')]({'destination':function(_0x50d26d,_0x41a7fd,_0x571436){_0x571436(null,path['join'](config[_0x65f6('0xf')],'server/files/attachments/'));},'filename':function(_0x419819,_0x4862a5,_0x2f964a){_0x2f964a(null,util[_0x65f6('0x10')](_0x65f6('0x11'),Date[_0x65f6('0x12')](),_0x4862a5[_0x65f6('0x13')][_0x65f6('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x65f6('0x15')]('/',upload[_0x65f6('0x16')](_0x65f6('0x17')),controller[_0x65f6('0x18')]);router['put'](_0x65f6('0x9'),auth['isAuthenticated'](),controller['update']);router[_0x65f6('0x19')](_0x65f6('0x9'),auth[_0x65f6('0x8')](),controller[_0x65f6('0x1a')]);module[_0x65f6('0x1b')]=router;
\ No newline at end of file
index fcc6d0f..4a7f1d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xead1=['name','then','blockedAt','add','minutes','getLicense','status','message','login','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','User','passport-local','Strategy','util','../../components/auth/service','../../config/utils','../../config/environment','api','activedirectory','undefined','baseDN','url','domain','authenticate','error','Error\x20authenticate\x20%s:\x20%s','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','adSsoEnabled','blockDuration','findOne','password','role','disabled','blocked','online','user','agent'];(function(_0x325746,_0x2a0d8a){var _0x41ca9b=function(_0x47ce37){while(--_0x47ce37){_0x325746['push'](_0x325746['shift']());}};_0x41ca9b(++_0x2a0d8a);}(_0xead1,0x1e6));var _0x1ead=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xead1[_0x4e1d03];return _0x362d4b;};'use strict';var passport=require('passport');var LocalStrategy=require(_0x1ead('0x0'))[_0x1ead('0x1')];var moment=require('moment');var ActiveDirectory=require('activedirectory2');var BPromise=require('bluebird');var util=require(_0x1ead('0x2'));var db=require('../../mysqldb')['db'];var authService=require(_0x1ead('0x3'));var utils=require(_0x1ead('0x4'));var config=require(_0x1ead('0x5'));var logger=require('../../config/logger')(_0x1ead('0x6'));function isActiveDirectoryConfigured(_0x3bbe69){var _0x10cc88=![];if(typeof _0x3bbe69[_0x1ead('0x7')]!==_0x1ead('0x8')){_0x10cc88=_0x3bbe69[_0x1ead('0x7')][_0x1ead('0x9')]&&_0x3bbe69['activedirectory'][_0x1ead('0xa')]&&_0x3bbe69['activedirectory'][_0x1ead('0xb')];}return _0x10cc88;}function adAuthenticate(_0x56a16b,_0x3244c9,_0x8e2a12){return new BPromise(function(_0x53b3e1,_0x817401){try{var _0x4d9c92=new ActiveDirectory(_0x56a16b);_0x4d9c92[_0x1ead('0xc')](_0x3244c9,_0x8e2a12,function(_0xa6ed38,_0x4df8af){if(_0xa6ed38){logger[_0x1ead('0xd')](_0x1ead('0xe'),_0x3244c9,util[_0x1ead('0xf')](_0xa6ed38,{'showHidden':![],'depth':null}));_0x817401(_0x1ead('0x10'));}else if(!_0x4df8af){logger[_0x1ead('0xd')](_0x1ead('0x11'),_0x3244c9);_0x817401(_0x1ead('0x10'));}else{_0x53b3e1(_0x4df8af);}});}catch(_0x1f9ee8){_0x817401(_0x1f9ee8);}});}function ActiveDirectoryAuthenticate(_0x1bae0a,_0x6385f7,_0x41bdee,_0x3f241b){var _0x4ba93b,_0x55e952;if(!isActiveDirectoryConfigured(config)){logger[_0x1ead('0xd')](_0x1ead('0x12'),_0x6385f7);return _0x3f241b(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db[_0x1ead('0x13')]['findOne']({'where':{'id':0x1},'attributes':[_0x1ead('0x14'),_0x1ead('0x15')],'raw':!![]})['then'](function(_0x4a2aef){_0x4ba93b=_0x4a2aef;if(!_0x4ba93b['adSsoEnabled']){logger[_0x1ead('0xd')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled',_0x6385f7);throw new Error(_0x1ead('0x10'));}return _0x1bae0a[_0x1ead('0x16')]({'attributes':['id','name',_0x1ead('0x17'),'salt',_0x1ead('0x18'),_0x1ead('0x19'),_0x1ead('0x1a'),'blockedAt',_0x1ead('0x1b')],'where':{'name':_0x6385f7,'role':{'$or':['admin',_0x1ead('0x1c'),_0x1ead('0x1d')]},'adSsoEnabled':!![]}});})['then'](function(_0x29d424){if(!_0x29d424||_0x29d424&&_0x29d424[_0x1ead('0x1e')]!==_0x6385f7){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}_0x55e952=_0x29d424;var _0x155e8=_0x55e952[_0x1ead('0x1e')]+'@'+config[_0x1ead('0x7')][_0x1ead('0xb')];return adAuthenticate(config[_0x1ead('0x7')],_0x155e8,_0x41bdee);})[_0x1ead('0x1f')](function(_0x168573){if(_0x55e952[_0x1ead('0x19')]){throw new Error(_0x1ead('0x10'));}if(_0x4ba93b[_0x1ead('0x15')]>0x0){if(_0x55e952['blocked']){if(moment(_0x55e952[_0x1ead('0x20')])[_0x1ead('0x21')](_0x4ba93b[_0x1ead('0x15')],_0x1ead('0x22'))>moment()){throw new Error(_0x1ead('0x10'));}return utils['clearBlockUser'](_0x55e952,0x0,![],null)[_0x1ead('0x1f')](function(){return utils[_0x1ead('0x23')](_0x55e952);})[_0x1ead('0x1f')](function(){return _0x3f241b(null,_0x55e952);});}else{return utils[_0x1ead('0x23')](_0x55e952)['then'](function(){return _0x3f241b(null,_0x55e952);});}}else{return utils[_0x1ead('0x23')](_0x55e952)[_0x1ead('0x1f')](function(){return _0x3f241b(null,_0x55e952);});}})['catch'](function(_0x18802c){return _0x3f241b(null,![],_0x18802c);});}function handleError(_0x425a6c,_0x5c8e34,_0x2ea6da){return _0x425a6c[_0x1ead('0x24')](_0x5c8e34||0x1f4)['send']({'message':_0x2ea6da?_0x2ea6da[_0x1ead('0x25')]||_0x2ea6da:''});}exports[_0x1ead('0x26')]=function(_0x7fc5ab,_0x1cef4c,_0x975fe1){passport[_0x1ead('0xc')](_0x1ead('0x27'),function(_0x84c3aa,_0x3ee5d6,_0x3daac2){var _0x6e9816=_0x84c3aa||_0x3daac2;if(_0x6e9816){return handleError(_0x1cef4c,0x191,_0x6e9816);}if(!_0x3ee5d6){return handleError(_0x1cef4c,0x194,{'message':_0x1ead('0x28')});}else{var _0x5ab1fe={'payload':{'id':_0x3ee5d6['id'],'role':_0x3ee5d6['role']},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x5ab1fe)[_0x1ead('0x1f')](function(_0xb4356a){_0x1cef4c[_0x1ead('0x29')]({'id':_0x3ee5d6['id'],'token':_0xb4356a,'statusCall':'','isAlreadyLogged':_0x3ee5d6[_0x1ead('0x1b')]});});}})(_0x7fc5ab,_0x1cef4c,_0x975fe1);};passport['use'](_0x1ead('0x27'),new LocalStrategy({'usernameField':_0x1ead('0x1e'),'passwordField':'password'},function(_0x566d93,_0x4bdcc8,_0x513e29){return ActiveDirectoryAuthenticate(db[_0x1ead('0x2a')],_0x566d93,_0x4bdcc8,_0x513e29);}));
\ No newline at end of file
+var _0x7281=['util','../../config/utils','../../config/logger','api','activedirectory','undefined','domain','error','Error\x20authenticate\x20%s:\x20%s','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Setting','findOne','adSsoEnabled','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password','salt','role','disabled','blocked','online','user','agent','blockedAt','add','minutes','clearBlockUser','getLicense','status','login','authenticate','signToken','json','use','ad-login','User','passport','passport-local','Strategy','moment','bluebird'];(function(_0x2a6a0f,_0x3b9206){var _0x25b465=function(_0x2ad28){while(--_0x2ad28){_0x2a6a0f['push'](_0x2a6a0f['shift']());}};_0x25b465(++_0x3b9206);}(_0x7281,0x153));var _0x1728=function(_0x52fafc,_0xf2e43b){_0x52fafc=_0x52fafc-0x0;var _0x3b6ad8=_0x7281[_0x52fafc];return _0x3b6ad8;};'use strict';var passport=require(_0x1728('0x0'));var LocalStrategy=require(_0x1728('0x1'))[_0x1728('0x2')];var moment=require(_0x1728('0x3'));var ActiveDirectory=require('activedirectory2');var BPromise=require(_0x1728('0x4'));var util=require(_0x1728('0x5'));var db=require('../../mysqldb')['db'];var authService=require('../../components/auth/service');var utils=require(_0x1728('0x6'));var config=require('../../config/environment');var logger=require(_0x1728('0x7'))(_0x1728('0x8'));function isActiveDirectoryConfigured(_0x5eb5e0){var _0x39ec7f=![];if(typeof _0x5eb5e0[_0x1728('0x9')]!==_0x1728('0xa')){_0x39ec7f=_0x5eb5e0[_0x1728('0x9')]['baseDN']&&_0x5eb5e0[_0x1728('0x9')]['url']&&_0x5eb5e0[_0x1728('0x9')][_0x1728('0xb')];}return _0x39ec7f;}function adAuthenticate(_0x18912d,_0x2cca4e,_0x14d2eb){return new BPromise(function(_0x474c9a,_0x528d81){try{var _0x45e1a6=new ActiveDirectory(_0x18912d);_0x45e1a6['authenticate'](_0x2cca4e,_0x14d2eb,function(_0x15fef2,_0xb41ae2){if(_0x15fef2){logger[_0x1728('0xc')](_0x1728('0xd'),_0x2cca4e,util['inspect'](_0x15fef2,{'showHidden':![],'depth':null}));_0x528d81(_0x1728('0xe'));}else if(!_0xb41ae2){logger[_0x1728('0xc')](_0x1728('0xf'),_0x2cca4e);_0x528d81(_0x1728('0xe'));}else{_0x474c9a(_0xb41ae2);}});}catch(_0x3dbaad){_0x528d81(_0x3dbaad);}});}function ActiveDirectoryAuthenticate(_0x2b2345,_0x15f348,_0x28f140,_0x3bcee1){var _0x56eb42,_0xb5939e;if(!isActiveDirectoryConfigured(config)){logger[_0x1728('0xc')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured',_0x15f348);return _0x3bcee1(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db[_0x1728('0x10')][_0x1728('0x11')]({'where':{'id':0x1},'attributes':[_0x1728('0x12'),'blockDuration'],'raw':!![]})[_0x1728('0x13')](function(_0x496b2b){_0x56eb42=_0x496b2b;if(!_0x56eb42['adSsoEnabled']){logger['error'](_0x1728('0x14'),_0x15f348);throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return _0x2b2345['findOne']({'attributes':['id',_0x1728('0x15'),_0x1728('0x16'),_0x1728('0x17'),_0x1728('0x18'),_0x1728('0x19'),_0x1728('0x1a'),'blockedAt',_0x1728('0x1b')],'where':{'name':_0x15f348,'role':{'$or':['admin',_0x1728('0x1c'),_0x1728('0x1d')]},'adSsoEnabled':!![]}});})['then'](function(_0x366baa){if(!_0x366baa||_0x366baa&&_0x366baa[_0x1728('0x15')]!==_0x15f348){throw new Error(_0x1728('0xe'));}_0xb5939e=_0x366baa;var _0x566195=_0xb5939e[_0x1728('0x15')]+'@'+config[_0x1728('0x9')][_0x1728('0xb')];return adAuthenticate(config[_0x1728('0x9')],_0x566195,_0x28f140);})[_0x1728('0x13')](function(_0x3f58a0){if(_0xb5939e[_0x1728('0x19')]){throw new Error(_0x1728('0xe'));}if(_0x56eb42['blockDuration']>0x0){if(_0xb5939e['blocked']){if(moment(_0xb5939e[_0x1728('0x1e')])[_0x1728('0x1f')](_0x56eb42['blockDuration'],_0x1728('0x20'))>moment()){throw new Error(_0x1728('0xe'));}return utils[_0x1728('0x21')](_0xb5939e,0x0,![],null)[_0x1728('0x13')](function(){return utils[_0x1728('0x22')](_0xb5939e);})['then'](function(){return _0x3bcee1(null,_0xb5939e);});}else{return utils[_0x1728('0x22')](_0xb5939e)[_0x1728('0x13')](function(){return _0x3bcee1(null,_0xb5939e);});}}else{return utils['getLicense'](_0xb5939e)[_0x1728('0x13')](function(){return _0x3bcee1(null,_0xb5939e);});}})['catch'](function(_0x295d97){return _0x3bcee1(null,![],_0x295d97);});}function handleError(_0x73c64c,_0x4a1a99,_0x417542){return _0x73c64c[_0x1728('0x23')](_0x4a1a99||0x1f4)['send']({'message':_0x417542?_0x417542['message']||_0x417542:''});}exports[_0x1728('0x24')]=function(_0x24aab1,_0x1ccfa9,_0x12df0a){passport[_0x1728('0x25')]('ad-login',function(_0x38eb92,_0xf2ea72,_0x3d9ffa){var _0x253391=_0x38eb92||_0x3d9ffa;if(_0x253391){return handleError(_0x1ccfa9,0x191,_0x253391);}if(!_0xf2ea72){return handleError(_0x1ccfa9,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x5f3882={'payload':{'id':_0xf2ea72['id'],'role':_0xf2ea72[_0x1728('0x18')]},'options':{'expiresIn':0x15180}};return authService[_0x1728('0x26')](_0x5f3882)[_0x1728('0x13')](function(_0x5cdd4e){_0x1ccfa9[_0x1728('0x27')]({'id':_0xf2ea72['id'],'token':_0x5cdd4e,'statusCall':'','isAlreadyLogged':_0xf2ea72[_0x1728('0x1b')]});});}})(_0x24aab1,_0x1ccfa9,_0x12df0a);};passport[_0x1728('0x28')](_0x1728('0x29'),new LocalStrategy({'usernameField':_0x1728('0x15'),'passwordField':_0x1728('0x16')},function(_0x1526b2,_0x376af0,_0x3fc1cf){return ActiveDirectoryAuthenticate(db[_0x1728('0x2a')],_0x1526b2,_0x376af0,_0x3fc1cf);}));
\ No newline at end of file
index ce82f14..1f6b908 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe75f=['express','Router','./authActiveDirectory.controller','post'];(function(_0x640cc3,_0x3653cb){var _0x45541c=function(_0x5ccafe){while(--_0x5ccafe){_0x640cc3['push'](_0x640cc3['shift']());}};_0x45541c(++_0x3653cb);}(_0xe75f,0x10c));var _0xfe75=function(_0x3bd70e,_0x1b1c3c){_0x3bd70e=_0x3bd70e-0x0;var _0x468eb3=_0xe75f[_0x3bd70e];return _0x468eb3;};'use strict';var express=require(_0xfe75('0x0'));var router=express[_0xfe75('0x1')]();var controller=require(_0xfe75('0x2'));router[_0xfe75('0x3')]('/',controller['login']);module['exports']=router;
\ No newline at end of file
+var _0x2eed=['exports','express','Router','./authActiveDirectory.controller','post'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x2eed,0x1b4));var _0xd2ee=function(_0x428f48,_0x142890){_0x428f48=_0x428f48-0x0;var _0x5c4713=_0x2eed[_0x428f48];return _0x5c4713;};'use strict';var express=require(_0xd2ee('0x0'));var router=express[_0xd2ee('0x1')]();var controller=require(_0xd2ee('0x2'));router[_0xd2ee('0x3')]('/',controller['login']);module[_0xd2ee('0x4')]=router;
\ No newline at end of file
index 437093a..e6c9926 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(_0x49f036,_0x3336cb){var _0x52ab55=function(_0x18ed16){while(--_0x18ed16){_0x49f036['push'](_0x49f036['shift']());}};_0x52ab55(++_0x3336cb);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'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 _0x7a54=['blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/utils','login','authenticate','google','/login','email','use','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','value','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0x7a54,0x106));var _0x47a5=function(_0x41f765,_0x315f8d){_0x41f765=_0x41f765-0x0;var _0x12d542=_0x7a54[_0x41f765];return _0x12d542;};'use strict';var _=require(_0x47a5('0x0'));var passport=require(_0x47a5('0x1'));var GoogleStrategy=require(_0x47a5('0x2'))['Strategy'];var moment=require(_0x47a5('0x3'));var db=require(_0x47a5('0x4'))['db'];var config=require('../../config/environment');var utils=require(_0x47a5('0x5'));exports[_0x47a5('0x6')]=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':_0x47a5('0x9'),'scope':['profile',_0x47a5('0xa')],'session':![]});exports['callback']=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':'/login','session':![]});passport[_0x47a5('0xb')](new GoogleStrategy({'clientID':config['google']?config['google']['clientID']:'id','clientSecret':config[_0x47a5('0x8')]?config[_0x47a5('0x8')]['clientSecret']:_0x47a5('0xc'),'callbackURL':config['google']?config['google'][_0x47a5('0xd')]:''},function(_0x69e4d4,_0x2f399b,_0x250fad,_0xd612dd){var _0xd308b8,_0x1eae59;return db['Setting'][_0x47a5('0xe')]({'where':{'id':0x1},'attributes':[_0x47a5('0xf'),_0x47a5('0x10')],'raw':!![]})[_0x47a5('0x11')](function(_0x139f25){_0xd308b8=_0x139f25;return db[_0x47a5('0x12')][_0x47a5('0x13')]({'where':{'email':_[_0x47a5('0x14')](_0x250fad['emails'],_0x47a5('0x15')),'role':{'$or':[_0x47a5('0x16'),_0x47a5('0x17'),_0x47a5('0x18')]}}});})[_0x47a5('0x11')](function(_0x574af6){_0x1eae59=_0x574af6;if(_0x1eae59){if(_0x1eae59['disabled']){return _0xd612dd(_0x47a5('0x19'));}else if(_0xd308b8['blockDuration']>0x0){if(_0x1eae59['blocked']){if(moment(_0x1eae59[_0x47a5('0x1a')])[_0x47a5('0x1b')](_0xd308b8[_0x47a5('0x10')],_0x47a5('0x1c'))>moment()){return _0xd612dd(_0x47a5('0x19'));}else{return utils[_0x47a5('0x1d')](_0x1eae59,0x0,![],null)[_0x47a5('0x11')](function(){return utils[_0x47a5('0x1e')](_0x1eae59);})[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils['getLicense'](_0x1eae59)[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils[_0x47a5('0x1e')](_0x1eae59)['then'](function(){return _0xd612dd(null,_0x1eae59);});}}return _0xd612dd(_0x47a5('0x19'));})[_0x47a5('0x1f')](function(_0x36874d){_0xd612dd(_0x36874d);});}));
\ No newline at end of file
index cb8bd2f..5bc9b13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2c7=['isMiddleware','exports','passport','./authGoogle.controller','get','login','/callback'];(function(_0x469687,_0x40608d){var _0x1127c9=function(_0x3d54b2){while(--_0x3d54b2){_0x469687['push'](_0x469687['shift']());}};_0x1127c9(++_0x40608d);}(_0xd2c7,0x1e5));var _0x7d2c=function(_0x2a2dd2,_0x26c2bb){_0x2a2dd2=_0x2a2dd2-0x0;var _0x3e1e08=_0xd2c7[_0x2a2dd2];return _0x3e1e08;};'use strict';var express=require('express');var passport=require(_0x7d2c('0x0'));var router=express['Router']();var controller=require(_0x7d2c('0x1'));var userController=require('../user/user.controller.js');var authService=require('../../components/auth/service');router[_0x7d2c('0x2')]('/',controller[_0x7d2c('0x3')]);router['get'](_0x7d2c('0x4'),controller['callback'],authService[_0x7d2c('0x5')],userController[_0x7d2c('0x3')],authService['setTokenCookie']);module[_0x7d2c('0x6')]=router;
\ No newline at end of file
+var _0x35cb=['callback','isMiddleware','setTokenCookie','exports','express','passport','Router','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','login'];(function(_0x1a3bba,_0x1a6946){var _0x58aa13=function(_0x4abe79){while(--_0x4abe79){_0x1a3bba['push'](_0x1a3bba['shift']());}};_0x58aa13(++_0x1a6946);}(_0x35cb,0xb8));var _0xb35c=function(_0x4e7ea1,_0xf3bfc0){_0x4e7ea1=_0x4e7ea1-0x0;var _0x243604=_0x35cb[_0x4e7ea1];return _0x243604;};'use strict';var express=require(_0xb35c('0x0'));var passport=require(_0xb35c('0x1'));var router=express[_0xb35c('0x2')]();var controller=require(_0xb35c('0x3'));var userController=require(_0xb35c('0x4'));var authService=require(_0xb35c('0x5'));router[_0xb35c('0x6')]('/',controller[_0xb35c('0x7')]);router[_0xb35c('0x6')]('/callback',controller[_0xb35c('0x8')],authService[_0xb35c('0x9')],userController[_0xb35c('0x7')],authService[_0xb35c('0xa')]);module[_0xb35c('0xb')]=router;
\ No newline at end of file
index d6f2105..99ec65d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8453=['format','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','error','message','stringify','status','send','json','online','forgot','body','generate','trim','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','now','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','host','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','Setting','securePassword','enforcePasswordHistory','validatePasswordPattern','previousPasswords','validatePasswordHistory','passwordHistoryLimit','resetPasswordExpires','save','use','local-login','util','passport','passport-local','Strategy','lodash','moment','../../mysqldb','../../config/utils','client','http','findOne','allowedLoginAttempts','blockDuration','then','name','password','salt','role','disabled','blocked','blockedAt','loginAttempts','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','minutes','clearBlockUser','add','getLicense','catch','MailAccount','find','email','MailServerOut','Smtp','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','request','SendMail'];(function(_0x5209b5,_0x336144){var _0x22ad2f=function(_0xd696c2){while(--_0xd696c2){_0x5209b5['push'](_0x5209b5['shift']());}};_0x22ad2f(++_0x336144);}(_0x8453,0x174));var _0x3845=function(_0x30d6d1,_0x1c90f5){_0x30d6d1=_0x30d6d1-0x0;var _0x470a38=_0x8453[_0x30d6d1];return _0x470a38;};'use strict';var util=require(_0x3845('0x0'));var passport=require(_0x3845('0x1'));var LocalStrategy=require(_0x3845('0x2'))[_0x3845('0x3')];var jayson=require('jayson/promise');var _=require(_0x3845('0x4'));var rs=require('randomstring');var moment=require(_0x3845('0x5'));var db=require(_0x3845('0x6'))['db'];var authService=require('../../components/auth/service');var utils=require(_0x3845('0x7'));var client=jayson[_0x3845('0x8')][_0x3845('0x9')]({'port':0x232b});function localAuthenticate(_0x4c3790,_0xfbfb5e,_0x52c0d0,_0x463f61){var _0x3de627,_0x1e24c1;return db['Setting'][_0x3845('0xa')]({'where':{'id':0x1},'attributes':[_0x3845('0xb'),_0x3845('0xc')],'raw':!![]})[_0x3845('0xd')](function(_0x38e60f){_0x3de627=_0x38e60f;return _0x4c3790['findOne']({'attributes':['id',_0x3845('0xe'),_0x3845('0xf'),_0x3845('0x10'),_0x3845('0x11'),_0x3845('0x12'),_0x3845('0x13'),_0x3845('0x14'),_0x3845('0x15')],'where':{'name':_0xfbfb5e,'role':{'$or':[_0x3845('0x16'),_0x3845('0x17'),_0x3845('0x18')]}}});})[_0x3845('0xd')](function(_0x5389cd){if(!_0x5389cd||_0x5389cd&&_0x5389cd[_0x3845('0xe')]!==_0xfbfb5e){throw new Error(_0x3845('0x19'));}else{_0x1e24c1=_0x5389cd;return _0x1e24c1;}})[_0x3845('0xd')](function(){_0x1e24c1[_0x3845('0x1a')](_0x52c0d0,function(_0x9c33cb,_0x525474){var _0x3c9916=_0x1e24c1['loginAttempts']+0x1;if(_0x9c33cb){return _0x463f61(_0x9c33cb);}else if(!_0x525474){if(_0x1e24c1[_0x3845('0x12')]){return _0x463f61(null,![],{'message':_0x3845('0x19')});}else if(_0x3de627[_0x3845('0xb')]>0x0){if(_0x1e24c1[_0x3845('0x13')]){if(_0x3de627[_0x3845('0xc')]>0x0){if(moment(_0x1e24c1[_0x3845('0x14')])['add'](_0x3de627['blockDuration'],_0x3845('0x1b'))>moment()){return _0x463f61(null,![],{'message':_0x3845('0x19')});}else{return utils[_0x3845('0x1c')](_0x1e24c1,_0x3c9916,![],null)['then'](function(){return _0x463f61(null,![],{'message':_0x3845('0x19')});});}}else{return _0x463f61(null,![],{'message':_0x3845('0x19')});}}else{if(_0x3c9916>=_0x3de627[_0x3845('0xb')]){return utils['clearBlockUser'](_0x1e24c1,0x0,!![],moment())[_0x3845('0xd')](function(){return _0x463f61(null,![],{'message':_0x3845('0x19')});});}else{return utils[_0x3845('0x1c')](_0x1e24c1,_0x3c9916,![],null)[_0x3845('0xd')](function(){return _0x463f61(null,![],{'message':_0x3845('0x19')});});}}}else{return _0x463f61(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x1e24c1[_0x3845('0x12')]){return _0x463f61(null,![],{'message':_0x3845('0x19')});}else if(_0x3de627[_0x3845('0xb')]>0x0){if(_0x1e24c1[_0x3845('0x13')]){if(_0x3de627[_0x3845('0xc')]>0x0){if(moment(_0x1e24c1['blockedAt'])[_0x3845('0x1d')](_0x3de627[_0x3845('0xc')],'minutes')>moment()){return _0x463f61(null,![],{'message':_0x3845('0x19')});}else{return utils[_0x3845('0x1c')](_0x1e24c1,0x0,![],null)[_0x3845('0xd')](function(){return utils['getLicense'](_0x1e24c1);})['then'](function(){return _0x463f61(null,_0x1e24c1);});}}else{return _0x463f61(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0x3845('0x1c')](_0x1e24c1,0x0,![],null)[_0x3845('0xd')](function(){return utils[_0x3845('0x1e')](_0x1e24c1);})[_0x3845('0xd')](function(){return _0x463f61(null,_0x1e24c1);})[_0x3845('0x1f')](function(_0xbd6a77){return _0x463f61(null,![],_0xbd6a77);});}}else{if(_0x1e24c1['blocked']){return _0x463f61(null,![],{'message':_0x3845('0x19')});}else{return utils[_0x3845('0x1e')](_0x1e24c1)[_0x3845('0xd')](function(){return _0x463f61(null,_0x1e24c1);});}}}});})[_0x3845('0x1f')](function(_0x193b7f){return _0x463f61(null,![],_0x193b7f);});}function sendServiceMail(_0x3aa840){return db[_0x3845('0x20')][_0x3845('0x21')]({'where':{'service':!![]},'attributes':['id',_0x3845('0xe'),_0x3845('0x22')],'include':[{'model':db[_0x3845('0x23')],'as':_0x3845('0x24'),'include':[{'model':db['CloudProvider'],'as':_0x3845('0x25')}]}]})[_0x3845('0xd')](function(_0x543b3d){if(!_0x543b3d){throw new Error(_0x3845('0x26'));}var _0x1be392=_0x543b3d[_0x3845('0x27')]();var _0x37dd34={'account':_0x1be392,'message':_[_0x3845('0x28')]({'from':util['format']('\x22%s\x22\x20<%s>',_0x543b3d[_0x3845('0xe')],_0x543b3d[_0x3845('0x22')]||_0x543b3d[_0x3845('0x24')][_0x3845('0x17')])},_0x3aa840)};return client[_0x3845('0x29')](_0x3845('0x2a'),_0x37dd34);})[_0x3845('0xd')](function(_0x46e180){if(_0x46e180['error']){throw new Error(util[_0x3845('0x2b')](_0x3845('0x2c'),_0x46e180[_0x3845('0x2d')][_0x3845('0x2e')]||JSON[_0x3845('0x2f')](_0x46e180[_0x3845('0x2d')])));}return!![];});}function handleError(_0x5b67fa,_0x53a7ad,_0x2f6d68){return _0x5b67fa[_0x3845('0x30')](_0x53a7ad||0x1f4)[_0x3845('0x31')]({'message':_0x2f6d68?_0x2f6d68['message']||_0x2f6d68:''});}exports['login']=function(_0x5f1091,_0x4d3dfe,_0x3f1fac){passport[_0x3845('0x1a')]('local-login',function(_0x410d2e,_0xf48e5,_0x2af6a2){var _0x2f8cfc=_0x410d2e||_0x2af6a2;if(_0x2f8cfc){return handleError(_0x4d3dfe,0x191,_0x2f8cfc);}if(!_0xf48e5){return handleError(_0x4d3dfe,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x3cbed4={'payload':{'id':_0xf48e5['id'],'role':_0xf48e5[_0x3845('0x11')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x3cbed4)[_0x3845('0xd')](function(_0x43121c){_0x4d3dfe[_0x3845('0x32')]({'id':_0xf48e5['id'],'token':_0x43121c,'statusCall':'','isAlreadyLogged':_0xf48e5[_0x3845('0x33')]});});}})(_0x5f1091,_0x4d3dfe,_0x3f1fac);};exports[_0x3845('0x34')]=function(_0x49d348,_0x352c64){if(!_0x49d348[_0x3845('0x35')][_0x3845('0x22')]){return handleError(_0x352c64,0x1f4,{'message':'Email\x20parameter\x20is\x20missing'});}var _0x171b2d=rs[_0x3845('0x36')]();_0x49d348[_0x3845('0x35')]['email']=_0x49d348['body'][_0x3845('0x22')][_0x3845('0x37')]()[_0x3845('0x38')]();var _0x40bf91;return db['Setting'][_0x3845('0xa')]({'where':{'id':0x1},'attributes':[_0x3845('0xb'),_0x3845('0xc')],'raw':!![]})[_0x3845('0xd')](function(_0x17613a){_0x40bf91=_0x17613a;return db[_0x3845('0x39')][_0x3845('0x21')]({'where':{'email':_0x49d348['body'][_0x3845('0x22')]}});})['then'](function(_0x206be5){if(!_0x206be5){throw new Error(_0x3845('0x3a'));}if(_0x206be5['disabled']){throw new Error(_0x3845('0x3b'));}if(_0x206be5[_0x3845('0x13')]){if(moment(_0x206be5[_0x3845('0x14')])[_0x3845('0x1d')](_0x40bf91[_0x3845('0xc')],'minutes')>moment()){throw new Error(_0x3845('0x3c'));}else{_0x206be5['blocked']=![];_0x206be5['blockedAt']=null;}}_0x206be5['resetPasswordToken']=_0x171b2d;_0x206be5['resetPasswordExpires']=Date[_0x3845('0x3d')]()+0x36ee80;return _0x206be5['save']();})['then'](function(){return sendServiceMail({'to':_0x49d348[_0x3845('0x35')][_0x3845('0x22')],'subject':'xCally\x20Motion\x20Password\x20Reset','text':_0x3845('0x3e')+_0x3845('0x3f')+_0x3845('0x40')+_0x49d348[_0x3845('0x41')][_0x3845('0x42')]+'/reset/'+_0x171b2d+'\x0a\x0a'+_0x3845('0x43')});})[_0x3845('0xd')](function(){_0x352c64[_0x3845('0x30')](0xc8)[_0x3845('0x31')]({'message':_0x3845('0x44')});})[_0x3845('0x1f')](function(_0x309be0){return handleError(_0x352c64,0x1f4,_0x309be0);});};exports[_0x3845('0x45')]=function(_0x26b086,_0x45f374){return db['User'][_0x3845('0x21')]({'where':{'resetPasswordToken':_0x26b086['params'][_0x3845('0x46')],'resetPasswordExpires':{'$gt':Date['now']()}}})[_0x3845('0xd')](function(_0x4a882b){if(!_0x4a882b){throw new Error(_0x3845('0x47'));}return db[_0x3845('0x48')][_0x3845('0xa')]({'attributes':['id',_0x3845('0x49'),_0x3845('0x4a'),'passwordHistoryLimit']})[_0x3845('0xd')](function(_0x333eb5){if(_0x333eb5[_0x3845('0x49')])authService[_0x3845('0x4b')](_0x26b086[_0x3845('0x35')][_0x3845('0xf')]);if(!_0x333eb5['enforcePasswordHistory']||!_0x4a882b[_0x3845('0x4c')])return _0x4a882b;authService[_0x3845('0x4d')](_0x26b086[_0x3845('0x35')][_0x3845('0xf')],_0x4a882b['previousPasswords'],_0x333eb5[_0x3845('0x4e')]);return _0x4a882b;})[_0x3845('0xd')](function(){_0x4a882b[_0x3845('0xf')]=_0x26b086[_0x3845('0x35')][_0x3845('0xf')];_0x4a882b['resetPasswordToken']=null;_0x4a882b[_0x3845('0x4f')]=null;return _0x4a882b[_0x3845('0x50')]();});})['then'](function(){_0x45f374[_0x3845('0x30')](0xc8)[_0x3845('0x31')]({'message':'Password\x20reset!'});})['catch'](function(_0x4610fc){return handleError(_0x45f374,0x1f4,_0x4610fc);});};passport[_0x3845('0x51')](_0x3845('0x52'),new LocalStrategy({'usernameField':_0x3845('0xe'),'passwordField':_0x3845('0xf')},function(_0x36ae87,_0x4bef23,_0xb385d5){return localAuthenticate(db[_0x3845('0x39')],_0x36ae87,_0x4bef23,_0xb385d5);}));
\ No newline at end of file
+var _0x407e=['minutes','clearBlockUser','getLicense','catch','MailAccount','find','email','MailServerOut','CloudProvider','getSmtpOptions','merge','format','Smtp','SendMail','error','status','login','local-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','online','forgot','Email\x20parameter\x20is\x20missing','generate','body','trim','toLowerCase','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','now','xCally\x20Motion\x20Password\x20Reset','https://','headers','send','Reset\x20Email\x20sent!','reset','User','params','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','password','resetPasswordExpires','save','Password\x20reset!','util','passport','passport-local','Strategy','jayson/promise','lodash','../../mysqldb','http','Setting','findOne','allowedLoginAttempts','blockDuration','name','salt','role','disabled','blockedAt','loginAttempts','admin','user','agent','then','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','blocked','add'];(function(_0x170e4b,_0x36accd){var _0x45187e=function(_0x52887c){while(--_0x52887c){_0x170e4b['push'](_0x170e4b['shift']());}};_0x45187e(++_0x36accd);}(_0x407e,0x1a2));var _0xe407=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x407e[_0x57b54c];return _0x59cc19;};'use strict';var util=require(_0xe407('0x0'));var passport=require(_0xe407('0x1'));var LocalStrategy=require(_0xe407('0x2'))[_0xe407('0x3')];var jayson=require(_0xe407('0x4'));var _=require(_0xe407('0x5'));var rs=require('randomstring');var moment=require('moment');var db=require(_0xe407('0x6'))['db'];var authService=require('../../components/auth/service');var utils=require('../../config/utils');var client=jayson['client'][_0xe407('0x7')]({'port':0x232b});function localAuthenticate(_0x2e0c21,_0x1ddfa5,_0x12ef62,_0x48564c){var _0x52ba18,_0x1d0a7f;return db[_0xe407('0x8')][_0xe407('0x9')]({'where':{'id':0x1},'attributes':[_0xe407('0xa'),_0xe407('0xb')],'raw':!![]})['then'](function(_0xfd5577){_0x52ba18=_0xfd5577;return _0x2e0c21[_0xe407('0x9')]({'attributes':['id',_0xe407('0xc'),'password',_0xe407('0xd'),_0xe407('0xe'),_0xe407('0xf'),'blocked',_0xe407('0x10'),_0xe407('0x11')],'where':{'name':_0x1ddfa5,'role':{'$or':[_0xe407('0x12'),_0xe407('0x13'),_0xe407('0x14')]}}});})[_0xe407('0x15')](function(_0x1fc01b){if(!_0x1fc01b||_0x1fc01b&&_0x1fc01b[_0xe407('0xc')]!==_0x1ddfa5){throw new Error(_0xe407('0x16'));}else{_0x1d0a7f=_0x1fc01b;return _0x1d0a7f;}})[_0xe407('0x15')](function(){_0x1d0a7f[_0xe407('0x17')](_0x12ef62,function(_0x38af97,_0x5ee8f9){var _0x2a0189=_0x1d0a7f['loginAttempts']+0x1;if(_0x38af97){return _0x48564c(_0x38af97);}else if(!_0x5ee8f9){if(_0x1d0a7f[_0xe407('0xf')]){return _0x48564c(null,![],{'message':_0xe407('0x16')});}else if(_0x52ba18[_0xe407('0xa')]>0x0){if(_0x1d0a7f[_0xe407('0x18')]){if(_0x52ba18['blockDuration']>0x0){if(moment(_0x1d0a7f[_0xe407('0x10')])[_0xe407('0x19')](_0x52ba18[_0xe407('0xb')],_0xe407('0x1a'))>moment()){return _0x48564c(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xe407('0x1b')](_0x1d0a7f,_0x2a0189,![],null)['then'](function(){return _0x48564c(null,![],{'message':_0xe407('0x16')});});}}else{return _0x48564c(null,![],{'message':_0xe407('0x16')});}}else{if(_0x2a0189>=_0x52ba18[_0xe407('0xa')]){return utils[_0xe407('0x1b')](_0x1d0a7f,0x0,!![],moment())[_0xe407('0x15')](function(){return _0x48564c(null,![],{'message':_0xe407('0x16')});});}else{return utils[_0xe407('0x1b')](_0x1d0a7f,_0x2a0189,![],null)[_0xe407('0x15')](function(){return _0x48564c(null,![],{'message':_0xe407('0x16')});});}}}else{return _0x48564c(null,![],{'message':_0xe407('0x16')});}}else{if(_0x1d0a7f[_0xe407('0xf')]){return _0x48564c(null,![],{'message':_0xe407('0x16')});}else if(_0x52ba18[_0xe407('0xa')]>0x0){if(_0x1d0a7f[_0xe407('0x18')]){if(_0x52ba18['blockDuration']>0x0){if(moment(_0x1d0a7f[_0xe407('0x10')])[_0xe407('0x19')](_0x52ba18[_0xe407('0xb')],'minutes')>moment()){return _0x48564c(null,![],{'message':_0xe407('0x16')});}else{return utils[_0xe407('0x1b')](_0x1d0a7f,0x0,![],null)[_0xe407('0x15')](function(){return utils[_0xe407('0x1c')](_0x1d0a7f);})[_0xe407('0x15')](function(){return _0x48564c(null,_0x1d0a7f);});}}else{return _0x48564c(null,![],{'message':_0xe407('0x16')});}}else{return utils[_0xe407('0x1b')](_0x1d0a7f,0x0,![],null)[_0xe407('0x15')](function(){return utils['getLicense'](_0x1d0a7f);})['then'](function(){return _0x48564c(null,_0x1d0a7f);})['catch'](function(_0xf0a4aa){return _0x48564c(null,![],_0xf0a4aa);});}}else{if(_0x1d0a7f[_0xe407('0x18')]){return _0x48564c(null,![],{'message':_0xe407('0x16')});}else{return utils[_0xe407('0x1c')](_0x1d0a7f)[_0xe407('0x15')](function(){return _0x48564c(null,_0x1d0a7f);});}}}});})[_0xe407('0x1d')](function(_0x4d55d2){return _0x48564c(null,![],_0x4d55d2);});}function sendServiceMail(_0x5e4dfa){return db[_0xe407('0x1e')][_0xe407('0x1f')]({'where':{'service':!![]},'attributes':['id','name',_0xe407('0x20')],'include':[{'model':db[_0xe407('0x21')],'as':'Smtp','include':[{'model':db[_0xe407('0x22')],'as':'CloudProvider'}]}]})[_0xe407('0x15')](function(_0x368497){if(!_0x368497){throw new Error('Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!');}var _0x21c5a0=_0x368497[_0xe407('0x23')]();var _0x1d9cf5={'account':_0x21c5a0,'message':_[_0xe407('0x24')]({'from':util[_0xe407('0x25')]('\x22%s\x22\x20<%s>',_0x368497[_0xe407('0xc')],_0x368497[_0xe407('0x20')]||_0x368497[_0xe407('0x26')][_0xe407('0x13')])},_0x5e4dfa)};return client['request'](_0xe407('0x27'),_0x1d9cf5);})[_0xe407('0x15')](function(_0x349e1e){if(_0x349e1e['error']){throw new Error(util[_0xe407('0x25')]('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x349e1e[_0xe407('0x28')]['message']||JSON['stringify'](_0x349e1e[_0xe407('0x28')])));}return!![];});}function handleError(_0x518550,_0x4a5a90,_0x916a13){return _0x518550[_0xe407('0x29')](_0x4a5a90||0x1f4)['send']({'message':_0x916a13?_0x916a13['message']||_0x916a13:''});}exports[_0xe407('0x2a')]=function(_0x20a52e,_0x527a89,_0x6a0a57){passport['authenticate'](_0xe407('0x2b'),function(_0x923113,_0x2e43c1,_0x53cfbc){var _0x26dc54=_0x923113||_0x53cfbc;if(_0x26dc54){return handleError(_0x527a89,0x191,_0x26dc54);}if(!_0x2e43c1){return handleError(_0x527a89,0x194,{'message':_0xe407('0x2c')});}else{var _0x538137={'payload':{'id':_0x2e43c1['id'],'role':_0x2e43c1[_0xe407('0xe')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x538137)[_0xe407('0x15')](function(_0x46762d){_0x527a89['json']({'id':_0x2e43c1['id'],'token':_0x46762d,'statusCall':'','isAlreadyLogged':_0x2e43c1[_0xe407('0x2d')]});});}})(_0x20a52e,_0x527a89,_0x6a0a57);};exports[_0xe407('0x2e')]=function(_0x14ee48,_0x4ad715){if(!_0x14ee48['body']['email']){return handleError(_0x4ad715,0x1f4,{'message':_0xe407('0x2f')});}var _0x23050b=rs[_0xe407('0x30')]();_0x14ee48[_0xe407('0x31')]['email']=_0x14ee48['body'][_0xe407('0x20')][_0xe407('0x32')]()[_0xe407('0x33')]();var _0x45dcd8;return db[_0xe407('0x8')][_0xe407('0x9')]({'where':{'id':0x1},'attributes':[_0xe407('0xa'),_0xe407('0xb')],'raw':!![]})[_0xe407('0x15')](function(_0x334d4f){_0x45dcd8=_0x334d4f;return db['User'][_0xe407('0x1f')]({'where':{'email':_0x14ee48[_0xe407('0x31')][_0xe407('0x20')]}});})[_0xe407('0x15')](function(_0x14d2bd){if(!_0x14d2bd){throw new Error(_0xe407('0x34'));}if(_0x14d2bd[_0xe407('0xf')]){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0x14d2bd[_0xe407('0x18')]){if(moment(_0x14d2bd[_0xe407('0x10')])[_0xe407('0x19')](_0x45dcd8['blockDuration'],_0xe407('0x1a'))>moment()){throw new Error(_0xe407('0x35'));}else{_0x14d2bd[_0xe407('0x18')]=![];_0x14d2bd[_0xe407('0x10')]=null;}}_0x14d2bd[_0xe407('0x36')]=_0x23050b;_0x14d2bd['resetPasswordExpires']=Date[_0xe407('0x37')]()+0x36ee80;return _0x14d2bd['save']();})[_0xe407('0x15')](function(){return sendServiceMail({'to':_0x14ee48[_0xe407('0x31')][_0xe407('0x20')],'subject':_0xe407('0x38'),'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'+_0xe407('0x39')+_0x14ee48[_0xe407('0x3a')]['host']+'/reset/'+_0x23050b+'\x0a\x0a'+'If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a'});})[_0xe407('0x15')](function(){_0x4ad715[_0xe407('0x29')](0xc8)[_0xe407('0x3b')]({'message':_0xe407('0x3c')});})[_0xe407('0x1d')](function(_0x32c612){return handleError(_0x4ad715,0x1f4,_0x32c612);});};exports[_0xe407('0x3d')]=function(_0x197766,_0x463d1a){return db[_0xe407('0x3e')][_0xe407('0x1f')]({'where':{'resetPasswordToken':_0x197766[_0xe407('0x3f')]['token'],'resetPasswordExpires':{'$gt':Date[_0xe407('0x37')]()}}})['then'](function(_0x49a369){if(!_0x49a369){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db[_0xe407('0x8')][_0xe407('0x9')]({'attributes':['id',_0xe407('0x40'),_0xe407('0x41'),_0xe407('0x42')]})['then'](function(_0x47c6ed){if(_0x47c6ed[_0xe407('0x40')])authService[_0xe407('0x43')](_0x197766['body']['password']);if(!_0x47c6ed[_0xe407('0x41')]||!_0x49a369[_0xe407('0x44')])return _0x49a369;authService[_0xe407('0x45')](_0x197766[_0xe407('0x31')][_0xe407('0x46')],_0x49a369['previousPasswords'],_0x47c6ed[_0xe407('0x42')]);return _0x49a369;})[_0xe407('0x15')](function(){_0x49a369[_0xe407('0x46')]=_0x197766[_0xe407('0x31')][_0xe407('0x46')];_0x49a369[_0xe407('0x36')]=null;_0x49a369[_0xe407('0x47')]=null;return _0x49a369[_0xe407('0x48')]();});})['then'](function(){_0x463d1a[_0xe407('0x29')](0xc8)[_0xe407('0x3b')]({'message':_0xe407('0x49')});})[_0xe407('0x1d')](function(_0x505da7){return handleError(_0x463d1a,0x1f4,_0x505da7);});};passport['use']('local-login',new LocalStrategy({'usernameField':_0xe407('0xc'),'passwordField':_0xe407('0x46')},function(_0x346a9c,_0x3896ad,_0x2eee8b){return localAuthenticate(db[_0xe407('0x3e')],_0x346a9c,_0x3896ad,_0x2eee8b);}));
\ No newline at end of file
index f7f6faf..1b338ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39f3=['reset','express','Router','./authLocal.controller','login','post','/forgot','forgot'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0x39f3,0x161));var _0x339f=function(_0xee7fca,_0x3e7fda){_0xee7fca=_0xee7fca-0x0;var _0x25075c=_0x39f3[_0xee7fca];return _0x25075c;};'use strict';var express=require(_0x339f('0x0'));var router=express[_0x339f('0x1')]();var controller=require(_0x339f('0x2'));router['post']('/',controller[_0x339f('0x3')]);router[_0x339f('0x4')](_0x339f('0x5'),controller[_0x339f('0x6')]);router['post']('/reset/:token',controller[_0x339f('0x7')]);module['exports']=router;
\ No newline at end of file
+var _0x6242=['reset','express','Router','./authLocal.controller','post','login','/forgot','forgot','/reset/:token'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x6242,0x13c));var _0x2624=function(_0xe07f93,_0x2750c9){_0xe07f93=_0xe07f93-0x0;var _0x101e80=_0x6242[_0xe07f93];return _0x101e80;};'use strict';var express=require(_0x2624('0x0'));var router=express[_0x2624('0x1')]();var controller=require(_0x2624('0x2'));router[_0x2624('0x3')]('/',controller[_0x2624('0x4')]);router[_0x2624('0x3')](_0x2624('0x5'),controller[_0x2624('0x6')]);router[_0x2624('0x3')](_0x2624('0x7'),controller[_0x2624('0x8')]);module['exports']=router;
\ No newline at end of file
index 08c1947..f1ddf1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01a0=['BOOLEAN','INTEGER','sequelize','STRING'];(function(_0x498e3c,_0x2455c4){var _0x1e5f5f=function(_0x1d981b){while(--_0x1d981b){_0x498e3c['push'](_0x498e3c['shift']());}};_0x1e5f5f(++_0x2455c4);}(_0x01a0,0x13e));var _0x001a=function(_0x283fee,_0x136141){_0x283fee=_0x283fee-0x0;var _0x20867d=_0x01a0[_0x283fee];return _0x20867d;};'use strict';var Sequelize=require(_0x001a('0x0'));module['exports']={'name':{'type':Sequelize[_0x001a('0x1')],'allowNull':![]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0x001a('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x001a('0x3')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x63cb=['sequelize','exports','STRING','INTEGER'];(function(_0x418996,_0x1f43ea){var _0xd62f73=function(_0x1bf850){while(--_0x1bf850){_0x418996['push'](_0x418996['shift']());}};_0xd62f73(++_0x1f43ea);}(_0x63cb,0xa8));var _0xb63c=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0x63cb[_0x2dadb9];return _0x2f0097;};'use strict';var Sequelize=require(_0xb63c('0x0'));module[_0xb63c('0x1')]={'name':{'type':Sequelize[_0xb63c('0x2')],'allowNull':![]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb63c('0x2')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timeout':{'type':Sequelize[_0xb63c('0x3')],'defaultValue':0xa}};
\ No newline at end of file
index 304219a..6b0bbcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf94=['ejs','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','save','then','destroy','error','stack','name','send','index','map','Automation','rawAttributes','fieldName','type','key','model','query','filters','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','options','findAll','rows','catch','show','params','keys','intersection','includeAll','include','find','create','body','update','addConditions','ids','getConditions','addActions','Action','omit','getActions','findOne','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv'];(function(_0x5dbdbc,_0x35fee0){var _0x258f29=function(_0x265af9){while(--_0x265af9){_0x5dbdbc['push'](_0x5dbdbc['shift']());}};_0x258f29(++_0x35fee0);}(_0xcf94,0x1e8));var _0x4cf9=function(_0x3cff8f,_0x858b75){_0x3cff8f=_0x3cff8f-0x0;var _0x5727f1=_0xcf94[_0x3cff8f];return _0x5727f1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4cf9('0x0'));var zipdir=require(_0x4cf9('0x1'));var jsonpatch=require(_0x4cf9('0x2'));var rp=require(_0x4cf9('0x3'));var moment=require(_0x4cf9('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4cf9('0x5'));var util=require(_0x4cf9('0x6'));var path=require(_0x4cf9('0x7'));var sox=require(_0x4cf9('0x8'));var csv=require(_0x4cf9('0x9'));var ejs=require(_0x4cf9('0xa'));var fs=require('fs');var fs_extra=require(_0x4cf9('0xb'));var _=require('lodash');var squel=require(_0x4cf9('0xc'));var crypto=require(_0x4cf9('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x4cf9('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4cf9('0xf'));var Redis=require(_0x4cf9('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x4cf9('0x11'));var as=require(_0x4cf9('0x12'));var hardwareService=require(_0x4cf9('0x13'));var logger=require(_0x4cf9('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x4cf9('0x15'));var licenseUtil=require(_0x4cf9('0x16'));var db=require(_0x4cf9('0x17'))['db'];function respondWithStatusCode(_0x4dd062,_0x108063){_0x108063=_0x108063||0xcc;return function(_0x536929){if(_0x536929){return _0x4dd062[_0x4cf9('0x18')](_0x108063);}return _0x4dd062[_0x4cf9('0x19')](_0x108063)[_0x4cf9('0x1a')]();};}function respondWithResult(_0x5e5a15,_0x3cd630){_0x3cd630=_0x3cd630||0xc8;return function(_0x27fc56){if(_0x27fc56){return _0x5e5a15['status'](_0x3cd630)['json'](_0x27fc56);}};}function respondWithFilteredResult(_0x4e2dd0,_0x276914){return function(_0x1367ac){if(_0x1367ac){var _0x3e5725=typeof _0x276914[_0x4cf9('0x1b')]===_0x4cf9('0x1c')&&typeof _0x276914[_0x4cf9('0x1d')]===_0x4cf9('0x1c');var _0x358294=_0x1367ac[_0x4cf9('0x1e')];var _0x1c121c=_0x3e5725?0x0:_0x276914[_0x4cf9('0x1b')];var _0x57d132=_0x3e5725?_0x1367ac[_0x4cf9('0x1e')]:_0x276914[_0x4cf9('0x1b')]+_0x276914[_0x4cf9('0x1d')];var _0x35ec40;if(_0x57d132>=_0x358294){_0x57d132=_0x358294;_0x35ec40=0xc8;}else{_0x35ec40=0xce;}_0x4e2dd0[_0x4cf9('0x19')](_0x35ec40);return _0x4e2dd0[_0x4cf9('0x1f')](_0x4cf9('0x20'),_0x1c121c+'-'+_0x57d132+'/'+_0x358294)['json'](_0x1367ac);}return null;};}function patchUpdates(_0xf06424){return function(_0x509811){try{jsonpatch[_0x4cf9('0x21')](_0x509811,_0xf06424,!![]);}catch(_0x45b232){return BPromise['reject'](_0x45b232);}return _0x509811[_0x4cf9('0x22')]();};}function saveUpdates(_0x20d142,_0x8df863){return function(_0x26339f){if(_0x26339f){return _0x26339f['update'](_0x20d142)[_0x4cf9('0x23')](function(_0x57840f){return _0x57840f;});}return null;};}function removeEntity(_0x2d3719,_0x1f7b9d){return function(_0x4054d6){if(_0x4054d6){return _0x4054d6[_0x4cf9('0x24')]()['then'](function(){_0x2d3719[_0x4cf9('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x379ab6,_0x132126){return function(_0x127fde){if(!_0x127fde){_0x379ab6[_0x4cf9('0x18')](0x194);}return _0x127fde;};}function handleError(_0x5c3dc3,_0x444988){_0x444988=_0x444988||0x1f4;return function(_0x4bb6f4){logger[_0x4cf9('0x25')](_0x4bb6f4[_0x4cf9('0x26')]);if(_0x4bb6f4[_0x4cf9('0x27')]){delete _0x4bb6f4['name'];}_0x5c3dc3[_0x4cf9('0x19')](_0x444988)[_0x4cf9('0x28')](_0x4bb6f4);};}exports[_0x4cf9('0x29')]=function(_0x1df895,_0x27702c){var _0x52f277={},_0x3dfb88={},_0x5125ee={'count':0x0,'rows':[]};var _0x100011=_[_0x4cf9('0x2a')](db[_0x4cf9('0x2b')][_0x4cf9('0x2c')],function(_0x51e62b){return{'name':_0x51e62b[_0x4cf9('0x2d')],'type':_0x51e62b[_0x4cf9('0x2e')][_0x4cf9('0x2f')]};});_0x3dfb88[_0x4cf9('0x30')]=_['map'](_0x100011,_0x4cf9('0x27'));_0x3dfb88[_0x4cf9('0x31')]=_['keys'](_0x1df895[_0x4cf9('0x31')]);_0x3dfb88[_0x4cf9('0x32')]=_['intersection'](_0x3dfb88[_0x4cf9('0x30')],_0x3dfb88[_0x4cf9('0x31')]);_0x52f277['attributes']=_['intersection'](_0x3dfb88[_0x4cf9('0x30')],qs[_0x4cf9('0x33')](_0x1df895[_0x4cf9('0x31')]['fields']));_0x52f277[_0x4cf9('0x34')]=_0x52f277[_0x4cf9('0x34')][_0x4cf9('0x35')]?_0x52f277['attributes']:_0x3dfb88[_0x4cf9('0x30')];if(!_0x1df895[_0x4cf9('0x31')]['hasOwnProperty'](_0x4cf9('0x36'))){_0x52f277[_0x4cf9('0x1d')]=qs['limit'](_0x1df895[_0x4cf9('0x31')]['limit']);_0x52f277[_0x4cf9('0x1b')]=qs['offset'](_0x1df895[_0x4cf9('0x31')]['offset']);}_0x52f277[_0x4cf9('0x37')]=qs[_0x4cf9('0x38')](_0x1df895['query']['sort']);_0x52f277[_0x4cf9('0x39')]=qs[_0x4cf9('0x32')](_[_0x4cf9('0x3a')](_0x1df895[_0x4cf9('0x31')],_0x3dfb88['filters']),_0x100011);if(_0x1df895[_0x4cf9('0x31')][_0x4cf9('0x3b')]){_0x52f277[_0x4cf9('0x39')]=_['merge'](_0x52f277[_0x4cf9('0x39')],{'$or':_[_0x4cf9('0x2a')](_0x100011,function(_0x69436){if(_0x69436[_0x4cf9('0x2e')]!=='VIRTUAL'){var _0x452ec7={};_0x452ec7[_0x69436[_0x4cf9('0x27')]]={'$like':'%'+_0x1df895[_0x4cf9('0x31')]['filter']+'%'};return _0x452ec7;}})});}_0x52f277=_[_0x4cf9('0x3c')]({},_0x52f277,_0x1df895[_0x4cf9('0x3d')]);var _0x515342={'where':_0x52f277[_0x4cf9('0x39')]};return db[_0x4cf9('0x2b')][_0x4cf9('0x1e')](_0x515342)[_0x4cf9('0x23')](function(_0x462630){_0x5125ee[_0x4cf9('0x1e')]=_0x462630;if(_0x1df895[_0x4cf9('0x31')]['includeAll']){_0x52f277['include']=[{'all':!![]}];}return db[_0x4cf9('0x2b')][_0x4cf9('0x3e')](_0x52f277);})['then'](function(_0x57b9d3){_0x5125ee[_0x4cf9('0x3f')]=_0x57b9d3;return _0x5125ee;})[_0x4cf9('0x23')](respondWithFilteredResult(_0x27702c,_0x52f277))[_0x4cf9('0x40')](handleError(_0x27702c,null));};exports[_0x4cf9('0x41')]=function(_0x2d3ce8,_0x3688e7){var _0x186bb2={'raw':![],'where':{'id':_0x2d3ce8[_0x4cf9('0x42')]['id']}},_0x1403db={};_0x1403db[_0x4cf9('0x30')]=_['keys'](db[_0x4cf9('0x2b')][_0x4cf9('0x2c')]);_0x1403db['query']=_[_0x4cf9('0x43')](_0x2d3ce8[_0x4cf9('0x31')]);_0x1403db['filters']=_[_0x4cf9('0x44')](_0x1403db['model'],_0x1403db[_0x4cf9('0x31')]);_0x186bb2[_0x4cf9('0x34')]=_[_0x4cf9('0x44')](_0x1403db['model'],qs[_0x4cf9('0x33')](_0x2d3ce8['query'][_0x4cf9('0x33')]));_0x186bb2['attributes']=_0x186bb2[_0x4cf9('0x34')][_0x4cf9('0x35')]?_0x186bb2[_0x4cf9('0x34')]:_0x1403db[_0x4cf9('0x30')];if(_0x2d3ce8[_0x4cf9('0x31')][_0x4cf9('0x45')]){_0x186bb2[_0x4cf9('0x46')]=[{'all':!![]}];}_0x186bb2=_[_0x4cf9('0x3c')]({},_0x186bb2,_0x2d3ce8[_0x4cf9('0x3d')]);return db[_0x4cf9('0x2b')][_0x4cf9('0x47')](_0x186bb2)[_0x4cf9('0x23')](handleEntityNotFound(_0x3688e7,null))[_0x4cf9('0x23')](respondWithResult(_0x3688e7,null))[_0x4cf9('0x40')](handleError(_0x3688e7,null));};exports[_0x4cf9('0x48')]=function(_0xdc243f,_0x4c485a){return db[_0x4cf9('0x2b')][_0x4cf9('0x48')](_0xdc243f[_0x4cf9('0x49')],{})[_0x4cf9('0x23')](respondWithResult(_0x4c485a,0xc9))[_0x4cf9('0x40')](handleError(_0x4c485a,null));};exports[_0x4cf9('0x4a')]=function(_0x2d2ec9,_0x32d146){if(_0x2d2ec9[_0x4cf9('0x49')]['id']){delete _0x2d2ec9[_0x4cf9('0x49')]['id'];}return db[_0x4cf9('0x2b')]['find']({'where':{'id':_0x2d2ec9[_0x4cf9('0x42')]['id']}})[_0x4cf9('0x23')](handleEntityNotFound(_0x32d146,null))['then'](saveUpdates(_0x2d2ec9[_0x4cf9('0x49')],null))[_0x4cf9('0x23')](respondWithResult(_0x32d146,null))['catch'](handleError(_0x32d146,null));};exports['destroy']=function(_0xac2a2b,_0x2bfb49){return db['Automation'][_0x4cf9('0x47')]({'where':{'id':_0xac2a2b['params']['id']}})[_0x4cf9('0x23')](handleEntityNotFound(_0x2bfb49,null))[_0x4cf9('0x23')](removeEntity(_0x2bfb49,null))[_0x4cf9('0x40')](handleError(_0x2bfb49,null));};exports[_0x4cf9('0x4b')]=function(_0x49f8b8,_0x499993,_0x1fdf2b){return db['Condition']['find']({'where':{'id':_0x49f8b8['params']['id']}})[_0x4cf9('0x23')](handleEntityNotFound(_0x499993,null))[_0x4cf9('0x23')](function(_0x10c884){if(_0x10c884){return _0x10c884['addConditions'](_0x49f8b8['body']['ids'],_['omit'](_0x49f8b8[_0x4cf9('0x49')],[_0x4cf9('0x4c'),'id'])||{});}})['then'](respondWithResult(_0x499993,null))[_0x4cf9('0x40')](handleError(_0x499993,null));};exports[_0x4cf9('0x4d')]=function(_0x17254d,_0x43ab6b,_0x2d6f29){var _0x5f3ee6={};var _0x5cd2f3={};var _0x4cdab2;var _0x5c059b;return db['Automation']['findOne']({'where':{'id':_0x17254d['params']['id']}})[_0x4cf9('0x23')](handleEntityNotFound(_0x43ab6b,null))[_0x4cf9('0x23')](function(_0xc458ec){if(_0xc458ec){_0x4cdab2=_0xc458ec;_0x5cd2f3[_0x4cf9('0x30')]=_[_0x4cf9('0x43')](db['Condition'][_0x4cf9('0x2c')]);_0x5cd2f3[_0x4cf9('0x31')]=_[_0x4cf9('0x43')](_0x17254d[_0x4cf9('0x31')]);_0x5cd2f3[_0x4cf9('0x32')]=_[_0x4cf9('0x44')](_0x5cd2f3['model'],_0x5cd2f3[_0x4cf9('0x31')]);_0x5f3ee6[_0x4cf9('0x34')]=_[_0x4cf9('0x44')](_0x5cd2f3['model'],qs[_0x4cf9('0x33')](_0x17254d[_0x4cf9('0x31')][_0x4cf9('0x33')]));_0x5f3ee6[_0x4cf9('0x34')]=_0x5f3ee6[_0x4cf9('0x34')][_0x4cf9('0x35')]?_0x5f3ee6[_0x4cf9('0x34')]:_0x5cd2f3['model'];_0x5f3ee6['order']=qs[_0x4cf9('0x38')](_0x17254d['query'][_0x4cf9('0x38')]);_0x5f3ee6[_0x4cf9('0x39')]=qs[_0x4cf9('0x32')](_[_0x4cf9('0x3a')](_0x17254d['query'],_0x5cd2f3[_0x4cf9('0x32')]));if(_0x17254d[_0x4cf9('0x31')][_0x4cf9('0x3b')]){_0x5f3ee6['where']=_[_0x4cf9('0x3c')](_0x5f3ee6[_0x4cf9('0x39')],{'$or':_[_0x4cf9('0x2a')](_0x5f3ee6[_0x4cf9('0x34')],function(_0x17130a){var _0x3c3e6a={};_0x3c3e6a[_0x17130a]={'$like':'%'+_0x17254d['query']['filter']+'%'};return _0x3c3e6a;})});}_0x5f3ee6=_[_0x4cf9('0x3c')]({},_0x5f3ee6,_0x17254d['options']);return _0x4cdab2['getConditions'](_0x5f3ee6);}})[_0x4cf9('0x23')](function(_0xd3613b){if(_0xd3613b){_0x5c059b=_0xd3613b[_0x4cf9('0x35')];if(!_0x17254d[_0x4cf9('0x31')]['hasOwnProperty']('nolimit')){_0x5f3ee6[_0x4cf9('0x1d')]=qs['limit'](_0x17254d['query'][_0x4cf9('0x1d')]);_0x5f3ee6[_0x4cf9('0x1b')]=qs[_0x4cf9('0x1b')](_0x17254d[_0x4cf9('0x31')]['offset']);}return _0x4cdab2[_0x4cf9('0x4d')](_0x5f3ee6);}})['then'](function(_0x3de0a7){if(_0x3de0a7){return _0x3de0a7?{'count':_0x5c059b,'rows':_0x3de0a7}:null;}})[_0x4cf9('0x23')](respondWithResult(_0x43ab6b,null))[_0x4cf9('0x40')](handleError(_0x43ab6b,null));};exports[_0x4cf9('0x4e')]=function(_0x5e7370,_0x3d7490,_0x1cd09a){return db[_0x4cf9('0x4f')][_0x4cf9('0x47')]({'where':{'id':_0x5e7370['params']['id']}})[_0x4cf9('0x23')](handleEntityNotFound(_0x3d7490,null))[_0x4cf9('0x23')](function(_0x3edd6a){if(_0x3edd6a){return _0x3edd6a[_0x4cf9('0x4e')](_0x5e7370['body']['ids'],_[_0x4cf9('0x50')](_0x5e7370['body'],[_0x4cf9('0x4c'),'id'])||{});}})[_0x4cf9('0x23')](respondWithResult(_0x3d7490,null))[_0x4cf9('0x40')](handleError(_0x3d7490,null));};exports[_0x4cf9('0x51')]=function(_0x12e158,_0x5dfad7,_0x4be764){var _0x3b2739={};var _0x4889d5={};var _0x27d78f;var _0x1c5ba0;return db[_0x4cf9('0x2b')][_0x4cf9('0x52')]({'where':{'id':_0x12e158[_0x4cf9('0x42')]['id']}})['then'](handleEntityNotFound(_0x5dfad7,null))[_0x4cf9('0x23')](function(_0x3dc4e5){if(_0x3dc4e5){_0x27d78f=_0x3dc4e5;_0x4889d5['model']=_[_0x4cf9('0x43')](db[_0x4cf9('0x4f')]['rawAttributes']);_0x4889d5['query']=_[_0x4cf9('0x43')](_0x12e158[_0x4cf9('0x31')]);_0x4889d5[_0x4cf9('0x32')]=_[_0x4cf9('0x44')](_0x4889d5[_0x4cf9('0x30')],_0x4889d5[_0x4cf9('0x31')]);_0x3b2739[_0x4cf9('0x34')]=_[_0x4cf9('0x44')](_0x4889d5[_0x4cf9('0x30')],qs[_0x4cf9('0x33')](_0x12e158['query'][_0x4cf9('0x33')]));_0x3b2739['attributes']=_0x3b2739[_0x4cf9('0x34')]['length']?_0x3b2739[_0x4cf9('0x34')]:_0x4889d5[_0x4cf9('0x30')];_0x3b2739[_0x4cf9('0x37')]=qs['sort'](_0x12e158['query'][_0x4cf9('0x38')]);_0x3b2739[_0x4cf9('0x39')]=qs[_0x4cf9('0x32')](_['pick'](_0x12e158[_0x4cf9('0x31')],_0x4889d5['filters']));if(_0x12e158[_0x4cf9('0x31')][_0x4cf9('0x3b')]){_0x3b2739['where']=_['merge'](_0x3b2739[_0x4cf9('0x39')],{'$or':_[_0x4cf9('0x2a')](_0x3b2739[_0x4cf9('0x34')],function(_0x387a82){var _0x2e4be9={};_0x2e4be9[_0x387a82]={'$like':'%'+_0x12e158[_0x4cf9('0x31')]['filter']+'%'};return _0x2e4be9;})});}_0x3b2739=_[_0x4cf9('0x3c')]({},_0x3b2739,_0x12e158['options']);return _0x27d78f[_0x4cf9('0x51')](_0x3b2739);}})[_0x4cf9('0x23')](function(_0x5d709f){if(_0x5d709f){_0x1c5ba0=_0x5d709f[_0x4cf9('0x35')];if(!_0x12e158['query']['hasOwnProperty'](_0x4cf9('0x36'))){_0x3b2739['limit']=qs['limit'](_0x12e158[_0x4cf9('0x31')][_0x4cf9('0x1d')]);_0x3b2739[_0x4cf9('0x1b')]=qs['offset'](_0x12e158[_0x4cf9('0x31')][_0x4cf9('0x1b')]);}return _0x27d78f[_0x4cf9('0x51')](_0x3b2739);}})['then'](function(_0x43b858){if(_0x43b858){return _0x43b858?{'count':_0x1c5ba0,'rows':_0x43b858}:null;}})[_0x4cf9('0x23')](respondWithResult(_0x5dfad7,null))[_0x4cf9('0x40')](handleError(_0x5dfad7,null));};
\ No newline at end of file
+var _0xdefe=['save','update','then','destroy','sendStatus','error','stack','name','send','map','Automation','rawAttributes','fieldName','query','keys','filters','intersection','model','attributes','fields','length','order','sort','where','pick','filter','merge','options','include','catch','params','includeAll','create','body','find','Condition','addConditions','ids','omit','getConditions','findOne','nolimit','Action','addActions','getActions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject'];(function(_0x11a220,_0x4e470a){var _0x20d8fe=function(_0xbedfd){while(--_0xbedfd){_0x11a220['push'](_0x11a220['shift']());}};_0x20d8fe(++_0x4e470a);}(_0xdefe,0x179));var _0xedef=function(_0x4c679a,_0xe4bb2b){_0x4c679a=_0x4c679a-0x0;var _0x5de133=_0xdefe[_0x4c679a];return _0x5de133;};'use strict';var emlformat=require(_0xedef('0x0'));var rimraf=require(_0xedef('0x1'));var zipdir=require(_0xedef('0x2'));var jsonpatch=require(_0xedef('0x3'));var rp=require(_0xedef('0x4'));var moment=require(_0xedef('0x5'));var BPromise=require(_0xedef('0x6'));var Mustache=require(_0xedef('0x7'));var util=require(_0xedef('0x8'));var path=require(_0xedef('0x9'));var sox=require(_0xedef('0xa'));var csv=require(_0xedef('0xb'));var ejs=require(_0xedef('0xc'));var fs=require('fs');var fs_extra=require(_0xedef('0xd'));var _=require(_0xedef('0xe'));var squel=require(_0xedef('0xf'));var crypto=require(_0xedef('0x10'));var jsforce=require(_0xedef('0x11'));var deskjs=require(_0xedef('0x12'));var toCsv=require('to-csv');var querystring=require(_0xedef('0x13'));var Papa=require(_0xedef('0x14'));var Redis=require(_0xedef('0x15'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xedef('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xedef('0x17'))('api');var utils=require(_0xedef('0x18'));var config=require(_0xedef('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xedef('0x1a'))['db'];function respondWithStatusCode(_0x4138b6,_0x5e61f6){_0x5e61f6=_0x5e61f6||0xcc;return function(_0x400c5d){if(_0x400c5d){return _0x4138b6['sendStatus'](_0x5e61f6);}return _0x4138b6['status'](_0x5e61f6)[_0xedef('0x1b')]();};}function respondWithResult(_0x17e4d7,_0x328fcd){_0x328fcd=_0x328fcd||0xc8;return function(_0x24606a){if(_0x24606a){return _0x17e4d7[_0xedef('0x1c')](_0x328fcd)[_0xedef('0x1d')](_0x24606a);}};}function respondWithFilteredResult(_0x4b7b8f,_0xb13edc){return function(_0x33da6d){if(_0x33da6d){var _0x38b2df=typeof _0xb13edc[_0xedef('0x1e')]===_0xedef('0x1f')&&typeof _0xb13edc[_0xedef('0x20')]==='undefined';var _0x43f805=_0x33da6d[_0xedef('0x21')];var _0x549c12=_0x38b2df?0x0:_0xb13edc[_0xedef('0x1e')];var _0x24dff8=_0x38b2df?_0x33da6d[_0xedef('0x21')]:_0xb13edc[_0xedef('0x1e')]+_0xb13edc[_0xedef('0x20')];var _0x460b39;if(_0x24dff8>=_0x43f805){_0x24dff8=_0x43f805;_0x460b39=0xc8;}else{_0x460b39=0xce;}_0x4b7b8f[_0xedef('0x1c')](_0x460b39);return _0x4b7b8f[_0xedef('0x22')](_0xedef('0x23'),_0x549c12+'-'+_0x24dff8+'/'+_0x43f805)['json'](_0x33da6d);}return null;};}function patchUpdates(_0x20f42c){return function(_0x46a9e6){try{jsonpatch[_0xedef('0x24')](_0x46a9e6,_0x20f42c,!![]);}catch(_0x15dbdd){return BPromise[_0xedef('0x25')](_0x15dbdd);}return _0x46a9e6[_0xedef('0x26')]();};}function saveUpdates(_0x4dff03,_0x213807){return function(_0x1fb0ab){if(_0x1fb0ab){return _0x1fb0ab[_0xedef('0x27')](_0x4dff03)[_0xedef('0x28')](function(_0x16bf41){return _0x16bf41;});}return null;};}function removeEntity(_0x42f8d4,_0x469916){return function(_0x3b021d){if(_0x3b021d){return _0x3b021d[_0xedef('0x29')]()[_0xedef('0x28')](function(){_0x42f8d4['status'](0xcc)[_0xedef('0x1b')]();});}};}function handleEntityNotFound(_0x53adbb,_0x1a2259){return function(_0x1dabea){if(!_0x1dabea){_0x53adbb[_0xedef('0x2a')](0x194);}return _0x1dabea;};}function handleError(_0x52a0fe,_0x1146a5){_0x1146a5=_0x1146a5||0x1f4;return function(_0xa26945){logger[_0xedef('0x2b')](_0xa26945[_0xedef('0x2c')]);if(_0xa26945[_0xedef('0x2d')]){delete _0xa26945[_0xedef('0x2d')];}_0x52a0fe['status'](_0x1146a5)[_0xedef('0x2e')](_0xa26945);};}exports['index']=function(_0x31bc3b,_0x2e65cc){var _0x1c1637={},_0x415516={},_0x1ca714={'count':0x0,'rows':[]};var _0x284fb6=_[_0xedef('0x2f')](db[_0xedef('0x30')][_0xedef('0x31')],function(_0x479023){return{'name':_0x479023[_0xedef('0x32')],'type':_0x479023['type']['key']};});_0x415516['model']=_[_0xedef('0x2f')](_0x284fb6,_0xedef('0x2d'));_0x415516[_0xedef('0x33')]=_[_0xedef('0x34')](_0x31bc3b[_0xedef('0x33')]);_0x415516[_0xedef('0x35')]=_[_0xedef('0x36')](_0x415516[_0xedef('0x37')],_0x415516['query']);_0x1c1637[_0xedef('0x38')]=_[_0xedef('0x36')](_0x415516[_0xedef('0x37')],qs['fields'](_0x31bc3b[_0xedef('0x33')][_0xedef('0x39')]));_0x1c1637[_0xedef('0x38')]=_0x1c1637[_0xedef('0x38')][_0xedef('0x3a')]?_0x1c1637[_0xedef('0x38')]:_0x415516[_0xedef('0x37')];if(!_0x31bc3b[_0xedef('0x33')]['hasOwnProperty']('nolimit')){_0x1c1637['limit']=qs[_0xedef('0x20')](_0x31bc3b['query'][_0xedef('0x20')]);_0x1c1637[_0xedef('0x1e')]=qs[_0xedef('0x1e')](_0x31bc3b[_0xedef('0x33')]['offset']);}_0x1c1637[_0xedef('0x3b')]=qs[_0xedef('0x3c')](_0x31bc3b['query'][_0xedef('0x3c')]);_0x1c1637[_0xedef('0x3d')]=qs[_0xedef('0x35')](_[_0xedef('0x3e')](_0x31bc3b[_0xedef('0x33')],_0x415516[_0xedef('0x35')]),_0x284fb6);if(_0x31bc3b[_0xedef('0x33')]['filter']){_0x1c1637[_0xedef('0x3d')]=_['merge'](_0x1c1637[_0xedef('0x3d')],{'$or':_[_0xedef('0x2f')](_0x284fb6,function(_0x28a8ba){if(_0x28a8ba['type']!=='VIRTUAL'){var _0x25996b={};_0x25996b[_0x28a8ba[_0xedef('0x2d')]]={'$like':'%'+_0x31bc3b['query'][_0xedef('0x3f')]+'%'};return _0x25996b;}})});}_0x1c1637=_[_0xedef('0x40')]({},_0x1c1637,_0x31bc3b[_0xedef('0x41')]);var _0x43d778={'where':_0x1c1637['where']};return db[_0xedef('0x30')][_0xedef('0x21')](_0x43d778)[_0xedef('0x28')](function(_0x49c0cf){_0x1ca714[_0xedef('0x21')]=_0x49c0cf;if(_0x31bc3b[_0xedef('0x33')]['includeAll']){_0x1c1637[_0xedef('0x42')]=[{'all':!![]}];}return db['Automation']['findAll'](_0x1c1637);})[_0xedef('0x28')](function(_0x34b30b){_0x1ca714['rows']=_0x34b30b;return _0x1ca714;})[_0xedef('0x28')](respondWithFilteredResult(_0x2e65cc,_0x1c1637))[_0xedef('0x43')](handleError(_0x2e65cc,null));};exports['show']=function(_0x515547,_0xc809b2){var _0x3b6a73={'raw':![],'where':{'id':_0x515547[_0xedef('0x44')]['id']}},_0x1929f2={};_0x1929f2[_0xedef('0x37')]=_[_0xedef('0x34')](db[_0xedef('0x30')][_0xedef('0x31')]);_0x1929f2['query']=_[_0xedef('0x34')](_0x515547[_0xedef('0x33')]);_0x1929f2[_0xedef('0x35')]=_[_0xedef('0x36')](_0x1929f2['model'],_0x1929f2[_0xedef('0x33')]);_0x3b6a73[_0xedef('0x38')]=_[_0xedef('0x36')](_0x1929f2['model'],qs[_0xedef('0x39')](_0x515547['query'][_0xedef('0x39')]));_0x3b6a73[_0xedef('0x38')]=_0x3b6a73[_0xedef('0x38')][_0xedef('0x3a')]?_0x3b6a73['attributes']:_0x1929f2[_0xedef('0x37')];if(_0x515547[_0xedef('0x33')][_0xedef('0x45')]){_0x3b6a73['include']=[{'all':!![]}];}_0x3b6a73=_[_0xedef('0x40')]({},_0x3b6a73,_0x515547[_0xedef('0x41')]);return db[_0xedef('0x30')]['find'](_0x3b6a73)[_0xedef('0x28')](handleEntityNotFound(_0xc809b2,null))[_0xedef('0x28')](respondWithResult(_0xc809b2,null))[_0xedef('0x43')](handleError(_0xc809b2,null));};exports[_0xedef('0x46')]=function(_0x4b1fa6,_0x128866){return db[_0xedef('0x30')][_0xedef('0x46')](_0x4b1fa6[_0xedef('0x47')],{})[_0xedef('0x28')](respondWithResult(_0x128866,0xc9))[_0xedef('0x43')](handleError(_0x128866,null));};exports[_0xedef('0x27')]=function(_0x20035c,_0x5a0cdc){if(_0x20035c['body']['id']){delete _0x20035c[_0xedef('0x47')]['id'];}return db['Automation'][_0xedef('0x48')]({'where':{'id':_0x20035c[_0xedef('0x44')]['id']}})[_0xedef('0x28')](handleEntityNotFound(_0x5a0cdc,null))[_0xedef('0x28')](saveUpdates(_0x20035c[_0xedef('0x47')],null))[_0xedef('0x28')](respondWithResult(_0x5a0cdc,null))[_0xedef('0x43')](handleError(_0x5a0cdc,null));};exports[_0xedef('0x29')]=function(_0x578c18,_0x700f6d){return db[_0xedef('0x30')][_0xedef('0x48')]({'where':{'id':_0x578c18[_0xedef('0x44')]['id']}})['then'](handleEntityNotFound(_0x700f6d,null))[_0xedef('0x28')](removeEntity(_0x700f6d,null))['catch'](handleError(_0x700f6d,null));};exports['addConditions']=function(_0x2b585b,_0x59f840,_0x6540d8){return db[_0xedef('0x49')][_0xedef('0x48')]({'where':{'id':_0x2b585b[_0xedef('0x44')]['id']}})[_0xedef('0x28')](handleEntityNotFound(_0x59f840,null))['then'](function(_0x31439b){if(_0x31439b){return _0x31439b[_0xedef('0x4a')](_0x2b585b['body'][_0xedef('0x4b')],_[_0xedef('0x4c')](_0x2b585b[_0xedef('0x47')],[_0xedef('0x4b'),'id'])||{});}})[_0xedef('0x28')](respondWithResult(_0x59f840,null))[_0xedef('0x43')](handleError(_0x59f840,null));};exports[_0xedef('0x4d')]=function(_0x28d653,_0x24bb48,_0x207c1d){var _0x26fda4={};var _0x48f34f={};var _0x271fb7;var _0x3bf29c;return db[_0xedef('0x30')][_0xedef('0x4e')]({'where':{'id':_0x28d653[_0xedef('0x44')]['id']}})[_0xedef('0x28')](handleEntityNotFound(_0x24bb48,null))['then'](function(_0x5c721a){if(_0x5c721a){_0x271fb7=_0x5c721a;_0x48f34f[_0xedef('0x37')]=_[_0xedef('0x34')](db['Condition'][_0xedef('0x31')]);_0x48f34f[_0xedef('0x33')]=_['keys'](_0x28d653['query']);_0x48f34f[_0xedef('0x35')]=_[_0xedef('0x36')](_0x48f34f[_0xedef('0x37')],_0x48f34f[_0xedef('0x33')]);_0x26fda4[_0xedef('0x38')]=_[_0xedef('0x36')](_0x48f34f[_0xedef('0x37')],qs[_0xedef('0x39')](_0x28d653['query'][_0xedef('0x39')]));_0x26fda4[_0xedef('0x38')]=_0x26fda4[_0xedef('0x38')]['length']?_0x26fda4[_0xedef('0x38')]:_0x48f34f['model'];_0x26fda4['order']=qs[_0xedef('0x3c')](_0x28d653[_0xedef('0x33')]['sort']);_0x26fda4[_0xedef('0x3d')]=qs['filters'](_[_0xedef('0x3e')](_0x28d653['query'],_0x48f34f[_0xedef('0x35')]));if(_0x28d653[_0xedef('0x33')]['filter']){_0x26fda4[_0xedef('0x3d')]=_[_0xedef('0x40')](_0x26fda4[_0xedef('0x3d')],{'$or':_[_0xedef('0x2f')](_0x26fda4['attributes'],function(_0x5c0eb8){var _0x2f1434={};_0x2f1434[_0x5c0eb8]={'$like':'%'+_0x28d653[_0xedef('0x33')]['filter']+'%'};return _0x2f1434;})});}_0x26fda4=_['merge']({},_0x26fda4,_0x28d653[_0xedef('0x41')]);return _0x271fb7[_0xedef('0x4d')](_0x26fda4);}})[_0xedef('0x28')](function(_0x45e702){if(_0x45e702){_0x3bf29c=_0x45e702[_0xedef('0x3a')];if(!_0x28d653[_0xedef('0x33')]['hasOwnProperty'](_0xedef('0x4f'))){_0x26fda4['limit']=qs[_0xedef('0x20')](_0x28d653[_0xedef('0x33')][_0xedef('0x20')]);_0x26fda4['offset']=qs[_0xedef('0x1e')](_0x28d653[_0xedef('0x33')][_0xedef('0x1e')]);}return _0x271fb7[_0xedef('0x4d')](_0x26fda4);}})[_0xedef('0x28')](function(_0xde9d3d){if(_0xde9d3d){return _0xde9d3d?{'count':_0x3bf29c,'rows':_0xde9d3d}:null;}})[_0xedef('0x28')](respondWithResult(_0x24bb48,null))['catch'](handleError(_0x24bb48,null));};exports['addActions']=function(_0x3393f4,_0x34c089,_0x219542){return db[_0xedef('0x50')][_0xedef('0x48')]({'where':{'id':_0x3393f4[_0xedef('0x44')]['id']}})['then'](handleEntityNotFound(_0x34c089,null))[_0xedef('0x28')](function(_0x3e7f7d){if(_0x3e7f7d){return _0x3e7f7d[_0xedef('0x51')](_0x3393f4[_0xedef('0x47')]['ids'],_['omit'](_0x3393f4[_0xedef('0x47')],[_0xedef('0x4b'),'id'])||{});}})['then'](respondWithResult(_0x34c089,null))['catch'](handleError(_0x34c089,null));};exports['getActions']=function(_0x2c900e,_0x436936,_0x55a119){var _0x52e231={};var _0x510e42={};var _0x4ced76;var _0x402e1c;return db[_0xedef('0x30')]['findOne']({'where':{'id':_0x2c900e['params']['id']}})[_0xedef('0x28')](handleEntityNotFound(_0x436936,null))[_0xedef('0x28')](function(_0x51b19e){if(_0x51b19e){_0x4ced76=_0x51b19e;_0x510e42[_0xedef('0x37')]=_[_0xedef('0x34')](db[_0xedef('0x50')]['rawAttributes']);_0x510e42[_0xedef('0x33')]=_[_0xedef('0x34')](_0x2c900e['query']);_0x510e42['filters']=_[_0xedef('0x36')](_0x510e42[_0xedef('0x37')],_0x510e42['query']);_0x52e231['attributes']=_[_0xedef('0x36')](_0x510e42[_0xedef('0x37')],qs[_0xedef('0x39')](_0x2c900e['query'][_0xedef('0x39')]));_0x52e231[_0xedef('0x38')]=_0x52e231[_0xedef('0x38')]['length']?_0x52e231[_0xedef('0x38')]:_0x510e42[_0xedef('0x37')];_0x52e231[_0xedef('0x3b')]=qs[_0xedef('0x3c')](_0x2c900e[_0xedef('0x33')][_0xedef('0x3c')]);_0x52e231[_0xedef('0x3d')]=qs[_0xedef('0x35')](_[_0xedef('0x3e')](_0x2c900e[_0xedef('0x33')],_0x510e42[_0xedef('0x35')]));if(_0x2c900e['query'][_0xedef('0x3f')]){_0x52e231['where']=_[_0xedef('0x40')](_0x52e231[_0xedef('0x3d')],{'$or':_[_0xedef('0x2f')](_0x52e231[_0xedef('0x38')],function(_0x48ebf2){var _0x27363f={};_0x27363f[_0x48ebf2]={'$like':'%'+_0x2c900e[_0xedef('0x33')][_0xedef('0x3f')]+'%'};return _0x27363f;})});}_0x52e231=_[_0xedef('0x40')]({},_0x52e231,_0x2c900e[_0xedef('0x41')]);return _0x4ced76['getActions'](_0x52e231);}})[_0xedef('0x28')](function(_0x34bf01){if(_0x34bf01){_0x402e1c=_0x34bf01[_0xedef('0x3a')];if(!_0x2c900e[_0xedef('0x33')]['hasOwnProperty'](_0xedef('0x4f'))){_0x52e231['limit']=qs[_0xedef('0x20')](_0x2c900e[_0xedef('0x33')][_0xedef('0x20')]);_0x52e231['offset']=qs[_0xedef('0x1e')](_0x2c900e[_0xedef('0x33')][_0xedef('0x1e')]);}return _0x4ced76[_0xedef('0x52')](_0x52e231);}})['then'](function(_0x221d4e){if(_0x221d4e){return _0x221d4e?{'count':_0x402e1c,'rows':_0x221d4e}:null;}})['then'](respondWithResult(_0x436936,null))['catch'](handleError(_0x436936,null));};
\ No newline at end of file
index 65311f2..1074c29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0017=['path','rimraf','exports','define','Automation','lodash','util','../../config/logger','request-promise'];(function(_0x36f37b,_0x36ea03){var _0x249634=function(_0x1cde21){while(--_0x1cde21){_0x36f37b['push'](_0x36f37b['shift']());}};_0x249634(++_0x36ea03);}(_0x0017,0x19a));var _0x7001=function(_0x420f2a,_0x2cc58d){_0x420f2a=_0x420f2a-0x0;var _0x28f802=_0x0017[_0x420f2a];return _0x28f802;};'use strict';var _=require(_0x7001('0x0'));var util=require(_0x7001('0x1'));var logger=require(_0x7001('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x7001('0x3'));var fs=require('fs');var path=require(_0x7001('0x4'));var rimraf=require(_0x7001('0x5'));var config=require('../../config/environment');var attributes=require('./automation.attributes');module[_0x7001('0x6')]=function(_0x19991d,_0x5d4f4e){return _0x19991d[_0x7001('0x7')](_0x7001('0x8'),attributes,{'tableName':'tools_automations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x418a=['../../config/environment','exports','Automation','tools_automations','util','../../config/logger','api','path','rimraf'];(function(_0x204476,_0x5c4274){var _0x564580=function(_0x187379){while(--_0x187379){_0x204476['push'](_0x204476['shift']());}};_0x564580(++_0x5c4274);}(_0x418a,0xc1));var _0xa418=function(_0x5e5a40,_0x2c577a){_0x5e5a40=_0x5e5a40-0x0;var _0x30c0ca=_0x418a[_0x5e5a40];return _0x30c0ca;};'use strict';var _=require('lodash');var util=require(_0xa418('0x0'));var logger=require(_0xa418('0x1'))(_0xa418('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa418('0x3'));var rimraf=require(_0xa418('0x4'));var config=require(_0xa418('0x5'));var attributes=require('./automation.attributes');module[_0xa418('0x6')]=function(_0x2c4569,_0x523277){return _0x2c4569['define'](_0xa418('0x7'),attributes,{'tableName':_0xa418('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0b945b4..b5c9725 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa702=['info','Automation,\x20%s,\x20%s','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','jayson/promise','client','then'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa702,0x1ae));var _0x2a70=function(_0x33423c,_0x43a7b9){_0x33423c=_0x33423c-0x0;var _0x5bb5b8=_0xa702[_0x33423c];return _0x5bb5b8;};'use strict';var _=require(_0x2a70('0x0'));var util=require(_0x2a70('0x1'));var moment=require(_0x2a70('0x2'));var BPromise=require(_0x2a70('0x3'));var rs=require(_0x2a70('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2a70('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2a70('0x6'));var config=require('../../config/environment');var jayson=require(_0x2a70('0x7'));var client=jayson[_0x2a70('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x54e5a2,_0x26a166,_0x261c54){return new BPromise(function(_0x51e726,_0x768a34){return client['request'](_0x54e5a2,_0x261c54)[_0x2a70('0x9')](function(_0x3f3a15){logger[_0x2a70('0xa')](_0x2a70('0xb'),_0x26a166,_0x2a70('0xc'));logger[_0x2a70('0xd')](_0x2a70('0xe'),_0x26a166,_0x2a70('0xc'),JSON[_0x2a70('0xf')](_0x3f3a15));if(_0x3f3a15[_0x2a70('0x10')]){if(_0x3f3a15[_0x2a70('0x10')][_0x2a70('0x11')]===0x1f4){logger['error'](_0x2a70('0xb'),_0x26a166,_0x3f3a15[_0x2a70('0x10')][_0x2a70('0x12')]);return _0x768a34(_0x3f3a15[_0x2a70('0x10')][_0x2a70('0x12')]);}logger['error'](_0x2a70('0xb'),_0x26a166,_0x3f3a15[_0x2a70('0x10')]['message']);return _0x51e726(_0x3f3a15[_0x2a70('0x10')][_0x2a70('0x12')]);}else{logger['info'](_0x2a70('0xb'),_0x26a166,_0x2a70('0xc'));_0x51e726(_0x3f3a15['result']['message']);}})[_0x2a70('0x13')](function(_0x450273){logger[_0x2a70('0x10')](_0x2a70('0xb'),_0x26a166,_0x450273);_0x768a34(_0x450273);});});}
\ No newline at end of file
+var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','Automation,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x44da9d,_0x1dacd5){var _0x5c24d0=function(_0x2395b5){while(--_0x2395b5){_0x44da9d['push'](_0x44da9d['shift']());}};_0x5c24d0(++_0x1dacd5);}(_0x5f2f,0x73));var _0xf5f2=function(_0x3f4910,_0x570ccf){_0x3f4910=_0x3f4910-0x0;var _0x30bf23=_0x5f2f[_0x3f4910];return _0x30bf23;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3133bc,_0x473100,_0x5907aa){return new BPromise(function(_0x466882,_0x46cd9c){return client[_0xf5f2('0xc')](_0x3133bc,_0x5907aa)['then'](function(_0x375da4){logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,'request\x20sent');logger[_0xf5f2('0xf')]('Automation,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}
\ No newline at end of file
index 8e1d6af..f8481dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49f8=['Router','fs-extra','./automation.controller','get','isAuthenticated','index','show','/:id/conditions','getConditions','/:id/actions','post','create','addActions','put','/:id','update','delete','destroy','exports','multer','util','express'];(function(_0x3706b6,_0x885101){var _0x22a9dd=function(_0x3ddb1f){while(--_0x3ddb1f){_0x3706b6['push'](_0x3706b6['shift']());}};_0x22a9dd(++_0x885101);}(_0x49f8,0x105));var _0x849f=function(_0x5dea03,_0x5edc15){_0x5dea03=_0x5dea03-0x0;var _0x18a82d=_0x49f8[_0x5dea03];return _0x18a82d;};'use strict';var multer=require(_0x849f('0x0'));var util=require(_0x849f('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x849f('0x2'));var router=express[_0x849f('0x3')]();var fs_extra=require(_0x849f('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x849f('0x5'));router[_0x849f('0x6')]('/',auth[_0x849f('0x7')](),controller[_0x849f('0x8')]);router[_0x849f('0x6')]('/:id',auth['isAuthenticated'](),controller[_0x849f('0x9')]);router[_0x849f('0x6')](_0x849f('0xa'),auth['isAuthenticated'](),controller[_0x849f('0xb')]);router[_0x849f('0x6')](_0x849f('0xc'),auth['isAuthenticated'](),controller['getActions']);router[_0x849f('0xd')]('/',auth[_0x849f('0x7')](),controller[_0x849f('0xe')]);router[_0x849f('0xd')](_0x849f('0xa'),auth[_0x849f('0x7')](),controller['addConditions']);router[_0x849f('0xd')]('/:id/actions',auth['isAuthenticated'](),controller[_0x849f('0xf')]);router[_0x849f('0x10')](_0x849f('0x11'),auth['isAuthenticated'](),controller[_0x849f('0x12')]);router[_0x849f('0x13')](_0x849f('0x11'),auth[_0x849f('0x7')](),controller[_0x849f('0x14')]);module[_0x849f('0x15')]=router;
\ No newline at end of file
+var _0x871e=['../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','index','/:id','getConditions','/:id/actions','getActions','post','create','/:id/conditions','addActions','put','update','delete','multer','path','connect-timeout','express','Router'];(function(_0x456bd2,_0x156c79){var _0x2218c1=function(_0x44f2d4){while(--_0x44f2d4){_0x456bd2['push'](_0x456bd2['shift']());}};_0x2218c1(++_0x156c79);}(_0x871e,0x1b0));var _0xe871=function(_0x439434,_0x152ba6){_0x439434=_0x439434-0x0;var _0x1df395=_0x871e[_0x439434];return _0x1df395;};'use strict';var multer=require(_0xe871('0x0'));var util=require('util');var path=require(_0xe871('0x1'));var timeout=require(_0xe871('0x2'));var express=require(_0xe871('0x3'));var router=express[_0xe871('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe871('0x5'));var interaction=require(_0xe871('0x6'));var config=require(_0xe871('0x7'));var controller=require(_0xe871('0x8'));router[_0xe871('0x9')]('/',auth[_0xe871('0xa')](),controller[_0xe871('0xb')]);router[_0xe871('0x9')](_0xe871('0xc'),auth[_0xe871('0xa')](),controller['show']);router[_0xe871('0x9')]('/:id/conditions',auth['isAuthenticated'](),controller[_0xe871('0xd')]);router[_0xe871('0x9')](_0xe871('0xe'),auth['isAuthenticated'](),controller[_0xe871('0xf')]);router[_0xe871('0x10')]('/',auth[_0xe871('0xa')](),controller[_0xe871('0x11')]);router[_0xe871('0x10')](_0xe871('0x12'),auth[_0xe871('0xa')](),controller['addConditions']);router[_0xe871('0x10')](_0xe871('0xe'),auth[_0xe871('0xa')](),controller[_0xe871('0x13')]);router[_0xe871('0x14')](_0xe871('0xc'),auth[_0xe871('0xa')](),controller[_0xe871('0x15')]);router[_0xe871('0x16')]('/:id',auth[_0xe871('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index b39180d..d3d656c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a8e=['Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','name','ENUM','ivr','STRING','BOOLEAN','Active/Disactive\x20Campaign','Max\x20200\x20calls.','UNSIGNED','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','INTEGER','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','never','onlyIfOpen','always','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','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)'];(function(_0x6a3bfb,_0x2786ee){var _0x148f56=function(_0x217bc2){while(--_0x217bc2){_0x6a3bfb['push'](_0x6a3bfb['shift']());}};_0x148f56(++_0x2786ee);}(_0x4a8e,0x173));var _0xe4a8=function(_0x58b6c7,_0x3bf35e){_0x58b6c7=_0x58b6c7-0x0;var _0x5f50d0=_0x4a8e[_0x58b6c7];return _0x5f50d0;};'use strict';var Sequelize=require(_0xe4a8('0x0'));module[_0xe4a8('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xe4a8('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xe4a8('0x3')]('ivr'),'allowNull':![],'defaultValue':_0xe4a8('0x4')},'description':{'type':Sequelize[_0xe4a8('0x5')]},'active':{'type':Sequelize[_0xe4a8('0x6')],'defaultValue':0x0,'comment':_0xe4a8('0x7')},'limitCalls':{'type':Sequelize['INTEGER'](0x4)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xe4a8('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0xe4a8('0x5')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xe4a8('0x5')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0xe4a8('0x9')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe4a8('0xa')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xe4a8('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe4a8('0xb')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xe4a8('0xc')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xe4a8('0xd')},'dialBusyMaxRetry':{'type':Sequelize[_0xe4a8('0xc')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe4a8('0xe')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xe4a8('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xe4a8('0xc')](0x3)[_0xe4a8('0x9')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xe4a8('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xe4a8('0xf')},'dialGlobalMaxRetry':{'type':Sequelize[_0xe4a8('0xc')](0x3)[_0xe4a8('0x9')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xe4a8('0x10')},'dialTimezone':{'type':Sequelize[_0xe4a8('0x5')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xe4a8('0x5')],'defaultValue':_0xe4a8('0x11')},'dialCheckDuplicateType':{'type':Sequelize[_0xe4a8('0x3')]('always',_0xe4a8('0x12'),_0xe4a8('0x13')),'defaultValue':_0xe4a8('0x14')},'dialAMDActive':{'type':Sequelize[_0xe4a8('0x6')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0xe4a8('0xc')](0x9)[_0xe4a8('0x9')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xe4a8('0x15')},'dialAMDGreeting':{'type':Sequelize[_0xe4a8('0xc')](0x9)[_0xe4a8('0x9')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xe4a8('0x16')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xe4a8('0xc')](0x9)[_0xe4a8('0x9')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xe4a8('0x17')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0xe4a8('0x9')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xe4a8('0x18')},'dialAMDMinWordLength':{'type':Sequelize[_0xe4a8('0xc')](0x9)[_0xe4a8('0x9')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xe4a8('0x19')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xe4a8('0xc')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xe4a8('0x1a')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xe4a8('0x1b')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xe4a8('0xc')](0x5)[_0xe4a8('0x9')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xe4a8('0x9')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0xe4a8('0x3')](_0xe4a8('0x1c'),_0xe4a8('0x1d')),'defaultValue':_0xe4a8('0x1c')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0xe4a8('0x9')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xe4a8('0x1e')},'dialCutDigit':{'type':Sequelize[_0xe4a8('0xc')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xe4a8('0x1f')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xe4a8('0xc')](0x3)[_0xe4a8('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe4a8('0x20')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xe4a8('0xc')](0x5)[_0xe4a8('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xe4a8('0x21')},'dialDropMaxRetry':{'type':Sequelize[_0xe4a8('0xc')](0x3)[_0xe4a8('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe4a8('0x22')},'dialDropRetryFrequency':{'type':Sequelize[_0xe4a8('0xc')](0x5)[_0xe4a8('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xe4a8('0x23')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xe4a8('0xc')](0x3)[_0xe4a8('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe4a8('0x24')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xe4a8('0xc')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xe4a8('0x25')},'dialMachineMaxRetry':{'type':Sequelize[_0xe4a8('0xc')](0x3)[_0xe4a8('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xe4a8('0x26')},'dialMachineRetryFrequency':{'type':Sequelize[_0xe4a8('0xc')](0x5)[_0xe4a8('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xe4a8('0x27')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xe4a8('0xc')](0x3)[_0xe4a8('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xe4a8('0xc')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xe4a8('0x28')}};
\ No newline at end of file
+var _0x9d66=['INTEGER','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','always','never','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','sequelize','exports','STRING','name','ENUM','ivr','BOOLEAN','Active/Disactive\x20Campaign','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'];(function(_0x380158,_0x599bd1){var _0x39ac68=function(_0x294e50){while(--_0x294e50){_0x380158['push'](_0x380158['shift']());}};_0x39ac68(++_0x599bd1);}(_0x9d66,0x106));var _0x69d6=function(_0x59469b,_0x1bad52){_0x59469b=_0x59469b-0x0;var _0x59eab2=_0x9d66[_0x59469b];return _0x59eab2;};'use strict';var Sequelize=require(_0x69d6('0x0'));module[_0x69d6('0x1')]={'name':{'type':Sequelize[_0x69d6('0x2')],'unique':_0x69d6('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x69d6('0x4')](_0x69d6('0x5')),'allowNull':![],'defaultValue':'ivr'},'description':{'type':Sequelize[_0x69d6('0x2')]},'active':{'type':Sequelize[_0x69d6('0x6')],'defaultValue':0x0,'comment':_0x69d6('0x7')},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0x69d6('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x69d6('0x9')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x69d6('0x2')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x69d6('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x69d6('0xa')},'dialCongestionMaxRetry':{'type':Sequelize[_0x69d6('0xb')](0x3)[_0x69d6('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x69d6('0xc')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x69d6('0xb')](0x5)[_0x69d6('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x69d6('0xd')},'dialBusyMaxRetry':{'type':Sequelize[_0x69d6('0xb')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x69d6('0xe')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x69d6('0xf')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x69d6('0x10')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x69d6('0xb')](0x5)[_0x69d6('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x69d6('0x8')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x69d6('0x11')},'dialTimezone':{'type':Sequelize[_0x69d6('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x69d6('0x2')],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize[_0x69d6('0x4')](_0x69d6('0x12'),_0x69d6('0x13'),'onlyIfOpen'),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x69d6('0x14')},'dialAMDInitialSilence':{'type':Sequelize[_0x69d6('0xb')](0x9)[_0x69d6('0x8')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x69d6('0x15')},'dialAMDGreeting':{'type':Sequelize[_0x69d6('0xb')](0x9)[_0x69d6('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x69d6('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x69d6('0x16')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)[_0x69d6('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x69d6('0x17')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x69d6('0x8')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x69d6('0x18')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x69d6('0x19')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x69d6('0xb')](0x9)[_0x69d6('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x69d6('0x1a')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x69d6('0xb')](0x5)[_0x69d6('0x8')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x69d6('0x1b')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x69d6('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x69d6('0x1c')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0x69d6('0x1d'),_0x69d6('0x1e')),'defaultValue':_0x69d6('0x1d')},'dialPrefix':{'type':Sequelize[_0x69d6('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x69d6('0xb')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x69d6('0x1f')},'dialCutDigit':{'type':Sequelize[_0x69d6('0xb')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x69d6('0xb')](0x3)[_0x69d6('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x69d6('0x20')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x69d6('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0x69d6('0xb')](0x3)[_0x69d6('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x69d6('0x21')},'dialDropRetryFrequency':{'type':Sequelize[_0x69d6('0xb')](0x5)[_0x69d6('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x69d6('0x22')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x69d6('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x69d6('0xb')](0x5)[_0x69d6('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x69d6('0x23')},'dialMachineMaxRetry':{'type':Sequelize[_0x69d6('0xb')](0x3)[_0x69d6('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x69d6('0x24')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x69d6('0x25')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x69d6('0xb')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x69d6('0x26')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x69d6('0xb')](0x5)[_0x69d6('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'}};
\ No newline at end of file
index e1388e6..f732d52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77e2=['hasOwnProperty','order','sort','where','merge','type','VIRTUAL','filter','options','count','findAll','includeAll','find','catch','create','body','get','role','user','UserProfileSection','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','getHoppers','findOne','nolimit','include','CmHopper','rows','getHopperHistories','CmHopperHistory','pick','CampaignId','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','format','ids','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','field','NOW()','CmListId','toString','ListId','deletedAt\x20IS\x20NULL','phone\x20NOT\x20IN\x20(?)','select','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','from','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','COALESCE(phone,\x27\x27)','cm_hopper_additional_phones','cmHopperId','OrderBy','h.id','ci.item','ci.OrderBY','h.ListId\x20=\x20?','h.createdAt\x20=\x20?','sequelize','push','all','removeLists','getBlackLists','YYYY-MM-DD\x20HH:mm:ss','spread','cm_hopper_black','removeBlackLists','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','Content-Range','update','then','destroy','IvrCampaigns','stack','name','send','index','map','Campaign','rawAttributes','fieldName','model','query','keys','filters','attributes','intersection','fields','length'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x77e2,0x176));var _0x277e=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x77e2[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x277e('0x0'));var rimraf=require(_0x277e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x277e('0x2'));var rp=require(_0x277e('0x3'));var moment=require('moment');var BPromise=require(_0x277e('0x4'));var Mustache=require('mustache');var util=require(_0x277e('0x5'));var path=require(_0x277e('0x6'));var sox=require('sox');var csv=require(_0x277e('0x7'));var ejs=require(_0x277e('0x8'));var fs=require('fs');var fs_extra=require(_0x277e('0x9'));var _=require(_0x277e('0xa'));var squel=require(_0x277e('0xb'));var crypto=require('crypto');var jsforce=require(_0x277e('0xc'));var deskjs=require(_0x277e('0xd'));var toCsv=require(_0x277e('0x7'));var querystring=require(_0x277e('0xe'));var Papa=require(_0x277e('0xf'));var Redis=require(_0x277e('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x277e('0x11'));var as=require(_0x277e('0x12'));var hardwareService=require(_0x277e('0x13'));var logger=require(_0x277e('0x14'))(_0x277e('0x15'));var utils=require(_0x277e('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x277e('0x17'))['db'];function respondWithStatusCode(_0x2f184b,_0x4e75c4){_0x4e75c4=_0x4e75c4||0xcc;return function(_0x119fb4){if(_0x119fb4){return _0x2f184b[_0x277e('0x18')](_0x4e75c4);}return _0x2f184b[_0x277e('0x19')](_0x4e75c4)[_0x277e('0x1a')]();};}function respondWithResult(_0x557d7c,_0xefc7fa){_0xefc7fa=_0xefc7fa||0xc8;return function(_0x5f5f34){if(_0x5f5f34){return _0x557d7c[_0x277e('0x19')](_0xefc7fa)[_0x277e('0x1b')](_0x5f5f34);}};}function respondWithFilteredResult(_0x153cf6,_0x234059){return function(_0x358f37){if(_0x358f37){var _0x19fca0=typeof _0x234059['offset']===_0x277e('0x1c')&&typeof _0x234059[_0x277e('0x1d')]==='undefined';var _0x32b901=_0x358f37['count'];var _0x35bc8e=_0x19fca0?0x0:_0x234059[_0x277e('0x1e')];var _0x196fca=_0x19fca0?_0x358f37['count']:_0x234059[_0x277e('0x1e')]+_0x234059['limit'];var _0x2b4dce;if(_0x196fca>=_0x32b901){_0x196fca=_0x32b901;_0x2b4dce=0xc8;}else{_0x2b4dce=0xce;}_0x153cf6[_0x277e('0x19')](_0x2b4dce);return _0x153cf6['set'](_0x277e('0x1f'),_0x35bc8e+'-'+_0x196fca+'/'+_0x32b901)[_0x277e('0x1b')](_0x358f37);}return null;};}function patchUpdates(_0x37d634){return function(_0x21f065){try{jsonpatch['apply'](_0x21f065,_0x37d634,!![]);}catch(_0x2f6325){return BPromise['reject'](_0x2f6325);}return _0x21f065['save']();};}function saveUpdates(_0x17a812,_0x7927e8){return function(_0x10dfae){if(_0x10dfae){return _0x10dfae[_0x277e('0x20')](_0x17a812)[_0x277e('0x21')](function(_0x3536eb){return _0x3536eb;});}return null;};}function removeEntity(_0x26c2bd,_0x2acf6f){return function(_0x3717d6){if(_0x3717d6){return _0x3717d6[_0x277e('0x22')]()[_0x277e('0x21')](function(){var _0x2b6154=_0x3717d6['get']({'plain':!![]});var _0x20c069=_0x277e('0x23');return db['UserProfileResource'][_0x277e('0x22')]({'where':{'type':_0x20c069,'resourceId':_0x2b6154['id']}})['then'](function(){return _0x3717d6;});})['then'](function(){_0x26c2bd[_0x277e('0x19')](0xcc)[_0x277e('0x1a')]();});}};}function handleEntityNotFound(_0x159b2e,_0x220809){return function(_0x41158d){if(!_0x41158d){_0x159b2e[_0x277e('0x18')](0x194);}return _0x41158d;};}function handleError(_0x22eb18,_0x4828e1){_0x4828e1=_0x4828e1||0x1f4;return function(_0x9b4821){logger['error'](_0x9b4821[_0x277e('0x24')]);if(_0x9b4821[_0x277e('0x25')]){delete _0x9b4821['name'];}_0x22eb18['status'](_0x4828e1)[_0x277e('0x26')](_0x9b4821);};}exports[_0x277e('0x27')]=function(_0x5eb0fa,_0x12734a){var _0x598db={},_0x3967c7={},_0x4095fa={'count':0x0,'rows':[]};var _0x5e53bd=_[_0x277e('0x28')](db[_0x277e('0x29')][_0x277e('0x2a')],function(_0x352cdc){return{'name':_0x352cdc[_0x277e('0x2b')],'type':_0x352cdc['type']['key']};});_0x3967c7[_0x277e('0x2c')]=_[_0x277e('0x28')](_0x5e53bd,_0x277e('0x25'));_0x3967c7[_0x277e('0x2d')]=_[_0x277e('0x2e')](_0x5eb0fa[_0x277e('0x2d')]);_0x3967c7[_0x277e('0x2f')]=_['intersection'](_0x3967c7[_0x277e('0x2c')],_0x3967c7['query']);_0x598db[_0x277e('0x30')]=_[_0x277e('0x31')](_0x3967c7['model'],qs[_0x277e('0x32')](_0x5eb0fa[_0x277e('0x2d')][_0x277e('0x32')]));_0x598db['attributes']=_0x598db['attributes'][_0x277e('0x33')]?_0x598db['attributes']:_0x3967c7[_0x277e('0x2c')];if(!_0x5eb0fa[_0x277e('0x2d')][_0x277e('0x34')]('nolimit')){_0x598db['limit']=qs[_0x277e('0x1d')](_0x5eb0fa[_0x277e('0x2d')][_0x277e('0x1d')]);_0x598db[_0x277e('0x1e')]=qs[_0x277e('0x1e')](_0x5eb0fa[_0x277e('0x2d')][_0x277e('0x1e')]);}_0x598db[_0x277e('0x35')]=qs[_0x277e('0x36')](_0x5eb0fa['query'][_0x277e('0x36')]);_0x598db[_0x277e('0x37')]=qs[_0x277e('0x2f')](_['pick'](_0x5eb0fa[_0x277e('0x2d')],_0x3967c7[_0x277e('0x2f')]),_0x5e53bd);if(_0x5eb0fa[_0x277e('0x2d')]['filter']){_0x598db[_0x277e('0x37')]=_[_0x277e('0x38')](_0x598db[_0x277e('0x37')],{'$or':_['map'](_0x5e53bd,function(_0x2512e3){if(_0x2512e3[_0x277e('0x39')]!==_0x277e('0x3a')){var _0x50c077={};_0x50c077[_0x2512e3[_0x277e('0x25')]]={'$like':'%'+_0x5eb0fa[_0x277e('0x2d')][_0x277e('0x3b')]+'%'};return _0x50c077;}})});}_0x598db=_[_0x277e('0x38')]({},_0x598db,_0x5eb0fa[_0x277e('0x3c')]);var _0xe8bc18={'where':_0x598db['where']};return db[_0x277e('0x29')][_0x277e('0x3d')](_0xe8bc18)[_0x277e('0x21')](function(_0x1c79a6){_0x4095fa[_0x277e('0x3d')]=_0x1c79a6;if(_0x5eb0fa[_0x277e('0x2d')]['includeAll']){_0x598db['include']=[{'all':!![]}];}return db[_0x277e('0x29')][_0x277e('0x3e')](_0x598db);})[_0x277e('0x21')](function(_0x421b5a){_0x4095fa['rows']=_0x421b5a;return _0x4095fa;})['then'](respondWithFilteredResult(_0x12734a,_0x598db))['catch'](handleError(_0x12734a,null));};exports['show']=function(_0x3e2a61,_0x43316a){var _0x2862d2={'raw':![],'where':{'id':_0x3e2a61['params']['id']}},_0x197479={};_0x197479[_0x277e('0x2c')]=_[_0x277e('0x2e')](db[_0x277e('0x29')][_0x277e('0x2a')]);_0x197479[_0x277e('0x2d')]=_[_0x277e('0x2e')](_0x3e2a61[_0x277e('0x2d')]);_0x197479[_0x277e('0x2f')]=_[_0x277e('0x31')](_0x197479['model'],_0x197479[_0x277e('0x2d')]);_0x2862d2[_0x277e('0x30')]=_[_0x277e('0x31')](_0x197479[_0x277e('0x2c')],qs[_0x277e('0x32')](_0x3e2a61['query'][_0x277e('0x32')]));_0x2862d2[_0x277e('0x30')]=_0x2862d2[_0x277e('0x30')][_0x277e('0x33')]?_0x2862d2[_0x277e('0x30')]:_0x197479[_0x277e('0x2c')];if(_0x3e2a61[_0x277e('0x2d')][_0x277e('0x3f')]){_0x2862d2['include']=[{'all':!![]}];}_0x2862d2=_['merge']({},_0x2862d2,_0x3e2a61[_0x277e('0x3c')]);return db[_0x277e('0x29')][_0x277e('0x40')](_0x2862d2)[_0x277e('0x21')](handleEntityNotFound(_0x43316a,null))[_0x277e('0x21')](respondWithResult(_0x43316a,null))[_0x277e('0x41')](handleError(_0x43316a,null));};exports[_0x277e('0x42')]=function(_0x1dbbba,_0x2983e2){return db['Campaign']['create'](_0x1dbbba[_0x277e('0x43')],{})[_0x277e('0x21')](function(_0x503797){var _0x252886=_0x1dbbba['user'][_0x277e('0x44')]({'plain':!![]});if(!_0x252886)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x252886[_0x277e('0x45')]===_0x277e('0x46')){var _0x176b9b=_0x503797[_0x277e('0x44')]({'plain':!![]});var _0x39937b=_0x277e('0x23');return db[_0x277e('0x47')][_0x277e('0x40')]({'where':{'name':_0x39937b,'userProfileId':_0x252886['userProfileId']},'raw':!![]})[_0x277e('0x21')](function(_0x1a001b){if(_0x1a001b&&_0x1a001b['autoAssociation']===0x0){return db[_0x277e('0x48')][_0x277e('0x42')]({'name':_0x176b9b[_0x277e('0x25')],'resourceId':_0x176b9b['id'],'type':_0x1a001b['name'],'sectionId':_0x1a001b['id']},{})[_0x277e('0x21')](function(){return _0x503797;});}else{return _0x503797;}})['catch'](function(_0x471856){logger[_0x277e('0x49')](_0x277e('0x4a'),_0x471856);throw _0x471856;});}return _0x503797;})[_0x277e('0x21')](respondWithResult(_0x2983e2,0xc9))['catch'](handleError(_0x2983e2,null));};exports[_0x277e('0x4b')]=function(_0x358656,_0x35a483){var _0x40fd8c={'where':{'id':_0x358656[_0x277e('0x4c')]['id']}},_0x5e3cc9={};_0x5e3cc9[_0x277e('0x2c')]=_[_0x277e('0x2e')](db[_0x277e('0x29')][_0x277e('0x2a')]);_0x40fd8c[_0x277e('0x30')]=_[_0x277e('0x31')](_0x5e3cc9['model'],qs[_0x277e('0x32')](_0x358656[_0x277e('0x2d')][_0x277e('0x32')]));_0x40fd8c[_0x277e('0x30')]=_0x40fd8c[_0x277e('0x30')][_0x277e('0x33')]?_0x40fd8c[_0x277e('0x30')]:_0x5e3cc9[_0x277e('0x2c')];if(_0x358656['query'][_0x277e('0x3f')]){_0x40fd8c['include']=[{'all':!![]}];}_0x40fd8c=_[_0x277e('0x38')]({},_0x40fd8c,_0x358656[_0x277e('0x3c')]);return db[_0x277e('0x29')]['find'](_0x40fd8c)[_0x277e('0x21')](handleEntityNotFound(_0x35a483,null))[_0x277e('0x21')](function(_0x34ea28){if(_0x34ea28){var _0x288d98=_0x34ea28[_0x277e('0x44')]({'plain':!![]});_0x288d98=qs[_0x277e('0x4d')](_0x288d98,['id',_0x277e('0x4e'),_0x277e('0x4f')]);_0x358656[_0x277e('0x43')]=_[_0x277e('0x4d')](_0x358656[_0x277e('0x43')],['id','createdAt',_0x277e('0x4f')]);return db[_0x277e('0x29')][_0x277e('0x42')](_[_0x277e('0x38')](_0x288d98,_0x358656[_0x277e('0x43')]),{'include':_0x358656[_0x277e('0x2d')][_0x277e('0x3f')]?[{'all':!![]}]:undefined})[_0x277e('0x21')](function(_0x217d14){var _0x28c60e=_0x358656[_0x277e('0x46')][_0x277e('0x44')]({'plain':!![]});if(!_0x28c60e)throw new Error(_0x277e('0x50'));if(_0x28c60e[_0x277e('0x45')]===_0x277e('0x46')){var _0x355b5a=_0x217d14[_0x277e('0x44')]({'plain':!![]});var _0x2da001=_0x277e('0x23');return db[_0x277e('0x47')][_0x277e('0x40')]({'where':{'name':_0x2da001,'userProfileId':_0x28c60e['userProfileId']},'raw':!![]})[_0x277e('0x21')](function(_0x1e23f8){if(_0x1e23f8&&_0x1e23f8[_0x277e('0x51')]===0x0){return db[_0x277e('0x48')][_0x277e('0x42')]({'name':_0x355b5a[_0x277e('0x25')],'resourceId':_0x355b5a['id'],'type':_0x1e23f8['name'],'sectionId':_0x1e23f8['id']},{})[_0x277e('0x21')](function(){return _0x217d14;});}else{return _0x217d14;}})[_0x277e('0x41')](function(_0x57f9ee){logger['error'](_0x277e('0x4a'),_0x57f9ee);throw _0x57f9ee;});}return _0x217d14;});}})['then'](respondWithResult(_0x35a483,0xc9))[_0x277e('0x41')](handleError(_0x35a483,null));};exports['update']=function(_0x2dc56b,_0x2d82e5){if(_0x2dc56b['body']['id']){delete _0x2dc56b[_0x277e('0x43')]['id'];}return db[_0x277e('0x29')]['find']({'where':{'id':_0x2dc56b[_0x277e('0x4c')]['id']}})[_0x277e('0x21')](handleEntityNotFound(_0x2d82e5,null))['then'](saveUpdates(_0x2dc56b['body'],null))[_0x277e('0x21')](respondWithResult(_0x2d82e5,null))[_0x277e('0x41')](handleError(_0x2d82e5,null));};exports[_0x277e('0x22')]=function(_0x466e62,_0x5d5a9d){return db['Campaign']['find']({'where':{'id':_0x466e62[_0x277e('0x4c')]['id']}})[_0x277e('0x21')](handleEntityNotFound(_0x5d5a9d,null))[_0x277e('0x21')](removeEntity(_0x5d5a9d,null))[_0x277e('0x41')](handleError(_0x5d5a9d,null));};exports[_0x277e('0x52')]=function(_0x4f1a7c,_0x4c32d4,_0x5d0da4){var _0x50623a={'raw':!![],'where':{}};var _0x22bb3a={};var _0xc17670={'count':0x0,'rows':[]};return db[_0x277e('0x29')][_0x277e('0x53')]({'where':{'id':_0x4f1a7c['params']['id']}})['then'](handleEntityNotFound(_0x4c32d4,null))[_0x277e('0x21')](function(_0x49c91e){if(_0x49c91e){_0x22bb3a[_0x277e('0x2c')]=_[_0x277e('0x2e')](db['CmHopper']['rawAttributes']);_0x22bb3a[_0x277e('0x2d')]=_['keys'](_0x4f1a7c[_0x277e('0x2d')]);_0x22bb3a[_0x277e('0x2f')]=_[_0x277e('0x31')](_0x22bb3a[_0x277e('0x2c')],_0x22bb3a['query']);_0x50623a[_0x277e('0x30')]=_['intersection'](_0x22bb3a['model'],qs[_0x277e('0x32')](_0x4f1a7c[_0x277e('0x2d')][_0x277e('0x32')]));_0x50623a[_0x277e('0x30')]=_0x50623a['attributes']['length']?_0x50623a['attributes']:_0x22bb3a['model'];if(!_0x4f1a7c[_0x277e('0x2d')][_0x277e('0x34')](_0x277e('0x54'))){_0x50623a[_0x277e('0x1d')]=qs[_0x277e('0x1d')](_0x4f1a7c['query']['limit']);_0x50623a['offset']=qs['offset'](_0x4f1a7c[_0x277e('0x2d')][_0x277e('0x1e')]);}_0x50623a[_0x277e('0x35')]=qs[_0x277e('0x36')](_0x4f1a7c[_0x277e('0x2d')]['sort']);_0x50623a[_0x277e('0x37')]=qs[_0x277e('0x2f')](_['pick'](_0x4f1a7c[_0x277e('0x2d')],_0x22bb3a[_0x277e('0x2f')]));_0x50623a[_0x277e('0x37')]['CampaignId']=_0x49c91e['id'];if(_0x4f1a7c['query'][_0x277e('0x3b')]){_0x50623a[_0x277e('0x37')]=_[_0x277e('0x38')](_0x50623a[_0x277e('0x37')],{'$or':_['map'](_0x50623a[_0x277e('0x30')],function(_0x23efe8){var _0x2e55e2={};_0x2e55e2[_0x23efe8]={'$like':'%'+_0x4f1a7c[_0x277e('0x2d')][_0x277e('0x3b')]+'%'};return _0x2e55e2;})});}_0x50623a=_[_0x277e('0x38')]({},_0x50623a,_0x4f1a7c[_0x277e('0x3c')]);return db['CmHopper'][_0x277e('0x3d')]({'where':_0x50623a[_0x277e('0x37')]})['then'](function(_0x2030a3){_0xc17670[_0x277e('0x3d')]=_0x2030a3;if(_0x4f1a7c[_0x277e('0x2d')][_0x277e('0x3f')]){_0x50623a[_0x277e('0x55')]=[{'all':!![]}];}return db[_0x277e('0x56')][_0x277e('0x3e')](_0x50623a);})[_0x277e('0x21')](function(_0x2e1f75){_0xc17670[_0x277e('0x57')]=_0x2e1f75;return _0xc17670;});}})[_0x277e('0x21')](respondWithFilteredResult(_0x4c32d4,_0x50623a))[_0x277e('0x41')](handleError(_0x4c32d4,null));};exports[_0x277e('0x58')]=function(_0x548426,_0x24b5c8,_0x35414e){var _0x59f0ba={'raw':!![],'where':{}};var _0x697857={};var _0x534715={'count':0x0,'rows':[]};return db[_0x277e('0x29')]['findOne']({'where':{'id':_0x548426[_0x277e('0x4c')]['id']}})[_0x277e('0x21')](handleEntityNotFound(_0x24b5c8,null))['then'](function(_0x391282){if(_0x391282){_0x697857[_0x277e('0x2c')]=_[_0x277e('0x2e')](db[_0x277e('0x59')][_0x277e('0x2a')]);_0x697857[_0x277e('0x2d')]=_[_0x277e('0x2e')](_0x548426['query']);_0x697857[_0x277e('0x2f')]=_[_0x277e('0x31')](_0x697857[_0x277e('0x2c')],_0x697857[_0x277e('0x2d')]);_0x59f0ba[_0x277e('0x30')]=_[_0x277e('0x31')](_0x697857[_0x277e('0x2c')],qs[_0x277e('0x32')](_0x548426['query'][_0x277e('0x32')]));_0x59f0ba[_0x277e('0x30')]=_0x59f0ba[_0x277e('0x30')]['length']?_0x59f0ba['attributes']:_0x697857['model'];if(!_0x548426[_0x277e('0x2d')][_0x277e('0x34')](_0x277e('0x54'))){_0x59f0ba[_0x277e('0x1d')]=qs['limit'](_0x548426[_0x277e('0x2d')]['limit']);_0x59f0ba['offset']=qs[_0x277e('0x1e')](_0x548426[_0x277e('0x2d')]['offset']);}_0x59f0ba['order']=qs['sort'](_0x548426[_0x277e('0x2d')][_0x277e('0x36')]);_0x59f0ba[_0x277e('0x37')]=qs[_0x277e('0x2f')](_[_0x277e('0x5a')](_0x548426[_0x277e('0x2d')],_0x697857[_0x277e('0x2f')]));_0x59f0ba[_0x277e('0x37')][_0x277e('0x5b')]=_0x391282['id'];if(_0x548426[_0x277e('0x2d')][_0x277e('0x3b')]){_0x59f0ba[_0x277e('0x37')]=_['merge'](_0x59f0ba['where'],{'$or':_[_0x277e('0x28')](_0x59f0ba['attributes'],function(_0x520f40){var _0x2fe123={};_0x2fe123[_0x520f40]={'$like':'%'+_0x548426[_0x277e('0x2d')][_0x277e('0x3b')]+'%'};return _0x2fe123;})});}_0x59f0ba=_[_0x277e('0x38')]({},_0x59f0ba,_0x548426[_0x277e('0x3c')]);return db['CmHopperHistory'][_0x277e('0x3d')]({'where':_0x59f0ba[_0x277e('0x37')]})[_0x277e('0x21')](function(_0x24d95b){_0x534715[_0x277e('0x3d')]=_0x24d95b;if(_0x548426[_0x277e('0x2d')][_0x277e('0x3f')]){_0x59f0ba['include']=[{'all':!![]}];}return db[_0x277e('0x59')][_0x277e('0x3e')](_0x59f0ba);})[_0x277e('0x21')](function(_0x7b8fd8){_0x534715[_0x277e('0x57')]=_0x7b8fd8;return _0x534715;});}})[_0x277e('0x21')](respondWithFilteredResult(_0x24b5c8,_0x59f0ba))[_0x277e('0x41')](handleError(_0x24b5c8,null));};exports['getHopperFinals']=function(_0x57acf3,_0x2af90d,_0x336952){var _0x1fd45e={'raw':!![],'where':{}};var _0x578187={};var _0xf775cb={'count':0x0,'rows':[]};return db[_0x277e('0x29')][_0x277e('0x53')]({'where':{'id':_0x57acf3[_0x277e('0x4c')]['id']}})[_0x277e('0x21')](handleEntityNotFound(_0x2af90d,null))[_0x277e('0x21')](function(_0x27b60a){if(_0x27b60a){_0x578187['model']=_['keys'](db['CmHopperFinal'][_0x277e('0x2a')]);_0x578187[_0x277e('0x2d')]=_[_0x277e('0x2e')](_0x57acf3[_0x277e('0x2d')]);_0x578187['filters']=_[_0x277e('0x31')](_0x578187[_0x277e('0x2c')],_0x578187['query']);_0x1fd45e[_0x277e('0x30')]=_[_0x277e('0x31')](_0x578187[_0x277e('0x2c')],qs['fields'](_0x57acf3['query'][_0x277e('0x32')]));_0x1fd45e[_0x277e('0x30')]=_0x1fd45e[_0x277e('0x30')]['length']?_0x1fd45e['attributes']:_0x578187[_0x277e('0x2c')];if(!_0x57acf3[_0x277e('0x2d')][_0x277e('0x34')]('nolimit')){_0x1fd45e[_0x277e('0x1d')]=qs[_0x277e('0x1d')](_0x57acf3['query'][_0x277e('0x1d')]);_0x1fd45e[_0x277e('0x1e')]=qs[_0x277e('0x1e')](_0x57acf3['query'][_0x277e('0x1e')]);}_0x1fd45e[_0x277e('0x35')]=qs[_0x277e('0x36')](_0x57acf3[_0x277e('0x2d')][_0x277e('0x36')]);_0x1fd45e[_0x277e('0x37')]=qs[_0x277e('0x2f')](_[_0x277e('0x5a')](_0x57acf3['query'],_0x578187[_0x277e('0x2f')]));_0x1fd45e[_0x277e('0x37')][_0x277e('0x5b')]=_0x27b60a['id'];if(_0x57acf3['query']['filter']){_0x1fd45e[_0x277e('0x37')]=_[_0x277e('0x38')](_0x1fd45e[_0x277e('0x37')],{'$or':_['map'](_0x1fd45e[_0x277e('0x30')],function(_0x145a2e){var _0x75b12={};_0x75b12[_0x145a2e]={'$like':'%'+_0x57acf3[_0x277e('0x2d')][_0x277e('0x3b')]+'%'};return _0x75b12;})});}_0x1fd45e=_[_0x277e('0x38')]({},_0x1fd45e,_0x57acf3[_0x277e('0x3c')]);return db[_0x277e('0x5c')]['count']({'where':_0x1fd45e[_0x277e('0x37')]})[_0x277e('0x21')](function(_0x376c1a){_0xf775cb[_0x277e('0x3d')]=_0x376c1a;if(_0x57acf3[_0x277e('0x2d')][_0x277e('0x3f')]){_0x1fd45e[_0x277e('0x55')]=[{'all':!![]}];}return db['CmHopperFinal'][_0x277e('0x3e')](_0x1fd45e);})[_0x277e('0x21')](function(_0x121afd){_0xf775cb['rows']=_0x121afd;return _0xf775cb;});}})[_0x277e('0x21')](respondWithFilteredResult(_0x2af90d,_0x1fd45e))['catch'](handleError(_0x2af90d,null));};exports[_0x277e('0x5d')]=function(_0x25ca40,_0x5c6ef7,_0x3f569e){var _0x2b4280={'raw':!![],'where':{}};var _0xa92ce={};var _0x5e9f3c={'count':0x0,'rows':[]};return db[_0x277e('0x29')][_0x277e('0x53')]({'where':{'id':_0x25ca40['params']['id']}})[_0x277e('0x21')](handleEntityNotFound(_0x5c6ef7,null))[_0x277e('0x21')](function(_0x5ed8e4){if(_0x5ed8e4){_0xa92ce[_0x277e('0x2c')]=_['keys'](db[_0x277e('0x5e')][_0x277e('0x2a')]);_0xa92ce[_0x277e('0x2d')]=_[_0x277e('0x2e')](_0x25ca40['query']);_0xa92ce[_0x277e('0x2f')]=_[_0x277e('0x31')](_0xa92ce[_0x277e('0x2c')],_0xa92ce['query']);_0x2b4280['attributes']=_[_0x277e('0x31')](_0xa92ce[_0x277e('0x2c')],qs[_0x277e('0x32')](_0x25ca40['query'][_0x277e('0x32')]));_0x2b4280[_0x277e('0x30')]=_0x2b4280[_0x277e('0x30')]['length']?_0x2b4280['attributes']:_0xa92ce[_0x277e('0x2c')];if(!_0x25ca40[_0x277e('0x2d')]['hasOwnProperty'](_0x277e('0x54'))){_0x2b4280[_0x277e('0x1d')]=qs[_0x277e('0x1d')](_0x25ca40['query'][_0x277e('0x1d')]);_0x2b4280['offset']=qs[_0x277e('0x1e')](_0x25ca40[_0x277e('0x2d')]['offset']);}_0x2b4280[_0x277e('0x35')]=qs[_0x277e('0x36')](_0x25ca40[_0x277e('0x2d')][_0x277e('0x36')]);_0x2b4280['where']=qs[_0x277e('0x2f')](_[_0x277e('0x5a')](_0x25ca40[_0x277e('0x2d')],_0xa92ce[_0x277e('0x2f')]));_0x2b4280['where']['CampaignId']=_0x5ed8e4['id'];if(_0x25ca40['query'][_0x277e('0x3b')]){_0x2b4280[_0x277e('0x37')]=_[_0x277e('0x38')](_0x2b4280[_0x277e('0x37')],{'$or':_['map'](_0x2b4280['attributes'],function(_0x70cefa){var _0x40ba37={};_0x40ba37[_0x70cefa]={'$like':'%'+_0x25ca40[_0x277e('0x2d')][_0x277e('0x3b')]+'%'};return _0x40ba37;})});}_0x2b4280=_['merge']({},_0x2b4280,_0x25ca40[_0x277e('0x3c')]);return db['CmHopperBlack']['count']({'where':_0x2b4280[_0x277e('0x37')]})['then'](function(_0x5600d1){_0x5e9f3c[_0x277e('0x3d')]=_0x5600d1;if(_0x25ca40['query'][_0x277e('0x3f')]){_0x2b4280['include']=[{'all':!![]}];}return db[_0x277e('0x5e')][_0x277e('0x3e')](_0x2b4280);})[_0x277e('0x21')](function(_0x380a23){_0x5e9f3c['rows']=_0x380a23;return _0x5e9f3c;});}})[_0x277e('0x21')](respondWithFilteredResult(_0x5c6ef7,_0x2b4280))[_0x277e('0x41')](handleError(_0x5c6ef7,null));};exports[_0x277e('0x5f')]=function(_0x229ba5,_0x537afe,_0x356b6f){var _0x4dae58={};var _0x560720={};var _0x4a917b;var _0x5bf77c;return db[_0x277e('0x29')]['findOne']({'where':{'id':_0x229ba5[_0x277e('0x4c')]['id']}})[_0x277e('0x21')](handleEntityNotFound(_0x537afe,null))['then'](function(_0x34e562){if(_0x34e562){_0x4a917b=_0x34e562;_0x560720[_0x277e('0x2c')]=_['keys'](db[_0x277e('0x60')][_0x277e('0x2a')]);_0x560720[_0x277e('0x2d')]=_[_0x277e('0x2e')](_0x229ba5[_0x277e('0x2d')]);_0x560720['filters']=_['intersection'](_0x560720[_0x277e('0x2c')],_0x560720['query']);_0x4dae58[_0x277e('0x30')]=_[_0x277e('0x31')](_0x560720['model'],qs[_0x277e('0x32')](_0x229ba5['query'][_0x277e('0x32')]));_0x4dae58[_0x277e('0x30')]=_0x4dae58[_0x277e('0x30')]['length']?_0x4dae58[_0x277e('0x30')]:_0x560720[_0x277e('0x2c')];_0x4dae58[_0x277e('0x35')]=qs[_0x277e('0x36')](_0x229ba5['query'][_0x277e('0x36')]);_0x4dae58[_0x277e('0x37')]=qs[_0x277e('0x2f')](_['pick'](_0x229ba5['query'],_0x560720[_0x277e('0x2f')]));if(_0x229ba5[_0x277e('0x2d')]['filter']){_0x4dae58[_0x277e('0x37')]=_[_0x277e('0x38')](_0x4dae58['where'],{'$or':_[_0x277e('0x28')](_0x4dae58[_0x277e('0x30')],function(_0x19bb78){var _0x3cea50={};_0x3cea50[_0x19bb78]={'$like':'%'+_0x229ba5['query']['filter']+'%'};return _0x3cea50;})});}_0x4dae58=_[_0x277e('0x38')]({},_0x4dae58,_0x229ba5[_0x277e('0x3c')]);return _0x4a917b[_0x277e('0x5f')](_0x4dae58);}})[_0x277e('0x21')](function(_0x586988){if(_0x586988){_0x5bf77c=_0x586988[_0x277e('0x33')];if(!_0x229ba5['query'][_0x277e('0x34')](_0x277e('0x54'))){_0x4dae58[_0x277e('0x1d')]=qs['limit'](_0x229ba5[_0x277e('0x2d')][_0x277e('0x1d')]);_0x4dae58[_0x277e('0x1e')]=qs[_0x277e('0x1e')](_0x229ba5[_0x277e('0x2d')][_0x277e('0x1e')]);}return _0x4a917b[_0x277e('0x5f')](_0x4dae58);}})[_0x277e('0x21')](function(_0x1ff8d4){if(_0x1ff8d4){return _0x1ff8d4?{'count':_0x5bf77c,'rows':_0x1ff8d4}:null;}})['then'](respondWithResult(_0x537afe,null))['catch'](handleError(_0x537afe,null));};exports[_0x277e('0x61')]=function(_0x4ea97d,_0x2aede3,_0x3931aa){var _0x3c4b4c,_0xf9a6ff;var _0x32c854=[];var _0x5680f4=moment()[_0x277e('0x62')]('YYYY-MM-DD\x20HH:mm:ss');return db['Campaign'][_0x277e('0x40')]({'where':{'id':_0x4ea97d[_0x277e('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2aede3,null))[_0x277e('0x21')](function(_0x5e8e22){if(_0x5e8e22){_0xf9a6ff=_0x5e8e22;return _0x5e8e22['addLists'](_0x4ea97d[_0x277e('0x43')][_0x277e('0x63')],_[_0x277e('0x4d')](_0x4ea97d['body'],[_0x277e('0x63'),'id'])||{});}return null;})['spread'](function(_0x9944a2){var _0x74fb9a;var _0x950359;_0x3c4b4c=_0x9944a2||[];var _0x7cc404=[];if(_0x9944a2){for(var _0x451b37=0x0;_0x451b37<_0x9944a2[_0x277e('0x33')];_0x451b37+=0x1){var _0x374e92=_0x9944a2[_0x451b37][_0x277e('0x44')]({'plain':!![]});_0xf9a6ff[_0x277e('0x64')]=_0x4ea97d[_0x277e('0x43')][_0x277e('0x64')]?_0x4ea97d[_0x277e('0x43')][_0x277e('0x64')]:_0xf9a6ff['dialCheckDuplicateType'];switch(_0xf9a6ff[_0x277e('0x64')]){case _0x277e('0x65'):_0x74fb9a=squel[_0x277e('0x66')]()[_0x277e('0x67')](_0x277e('0x68'))[_0x277e('0x69')]([_0x277e('0x6a'),_0x277e('0x6b'),_0x277e('0x6c'),'ListId',_0x277e('0x5b'),'createdAt',_0x277e('0x4f')],squel['select']()[_0x277e('0x6d')](_0x277e('0x6a'),_0x277e('0x6a'))[_0x277e('0x6d')](_0x277e('0x6e'),_0x277e('0x6b'))[_0x277e('0x6d')]('id',_0x277e('0x6c'))[_0x277e('0x6d')](_0x374e92[_0x277e('0x6f')][_0x277e('0x70')](),_0x277e('0x71'))[_0x277e('0x6d')](_0x4ea97d[_0x277e('0x4c')]['id'][_0x277e('0x70')](),_0x277e('0x5b'))[_0x277e('0x6d')]('\x27'+_0x5680f4+'\x27','createdAt')[_0x277e('0x6d')]('\x27'+_0x5680f4+'\x27','updatedAt')['from']('cm_contacts')['where'](_0x277e('0x72'))['where']('ListId\x20=\x20?',_0x374e92[_0x277e('0x6f')]['toString']())['where']('phone\x20IS\x20NOT\x20NULL')[_0x277e('0x37')](_0x277e('0x73'),squel[_0x277e('0x74')]()[_0x277e('0x6d')](_0x277e('0x75'))['from'](_0x277e('0x76'))[_0x277e('0x37')](_0x277e('0x77'),_0x4ea97d['params']['id'][_0x277e('0x70')]()))[_0x277e('0x37')](_0x277e('0x73'),squel[_0x277e('0x74')]()['field']('COALESCE(phone,\x27\x27)')[_0x277e('0x78')]('cm_hopper')[_0x277e('0x37')](_0x277e('0x77'),_0x4ea97d['params']['id'][_0x277e('0x70')]())))[_0x277e('0x70')]();break;case'onlyIfOpen':_0x74fb9a=squel['insert']()['into']('cm_hopper')['fromQuery'](['phone',_0x277e('0x6b'),_0x277e('0x6c'),_0x277e('0x71'),_0x277e('0x5b'),_0x277e('0x4e'),_0x277e('0x4f')],squel[_0x277e('0x74')]()[_0x277e('0x6d')](_0x277e('0x6a'),_0x277e('0x6a'))['field']('NOW()',_0x277e('0x6b'))['field']('id',_0x277e('0x6c'))['field'](_0x374e92[_0x277e('0x6f')]['toString'](),_0x277e('0x71'))[_0x277e('0x6d')](_0x4ea97d['params']['id'][_0x277e('0x70')](),'CampaignId')[_0x277e('0x6d')]('\x27'+_0x5680f4+'\x27',_0x277e('0x4e'))[_0x277e('0x6d')]('\x27'+_0x5680f4+'\x27',_0x277e('0x4f'))[_0x277e('0x78')](_0x277e('0x79'))[_0x277e('0x37')](_0x277e('0x72'))['where'](_0x277e('0x7a'),_0x374e92[_0x277e('0x6f')][_0x277e('0x70')]())[_0x277e('0x37')](_0x277e('0x7b'))[_0x277e('0x37')](_0x277e('0x73'),squel['select']()['field'](_0x277e('0x7c'))['from'](_0x277e('0x68'))[_0x277e('0x37')]('CampaignId\x20=\x20?',_0x4ea97d[_0x277e('0x4c')]['id'][_0x277e('0x70')]())))[_0x277e('0x70')]();break;default:_0x74fb9a=squel['insert']()[_0x277e('0x67')](_0x277e('0x68'))[_0x277e('0x69')]([_0x277e('0x6a'),_0x277e('0x6b'),'ContactId',_0x277e('0x71'),'CampaignId','createdAt',_0x277e('0x4f')],squel['select']()['field']('phone','phone')[_0x277e('0x6d')](_0x277e('0x6e'),'scheduledAt')['field']('id','ContactId')[_0x277e('0x6d')](_0x374e92['CmListId'][_0x277e('0x70')](),_0x277e('0x71'))[_0x277e('0x6d')](_0x4ea97d[_0x277e('0x4c')]['id'][_0x277e('0x70')](),'CampaignId')['field']('\x27'+_0x5680f4+'\x27',_0x277e('0x4e'))[_0x277e('0x6d')]('\x27'+_0x5680f4+'\x27',_0x277e('0x4f'))[_0x277e('0x78')](_0x277e('0x79'))[_0x277e('0x37')]('deletedAt\x20IS\x20NULL')[_0x277e('0x37')](_0x277e('0x7a'),_0x374e92[_0x277e('0x6f')][_0x277e('0x70')]())['where'](_0x277e('0x7b')))[_0x277e('0x70')]();}_0x950359=squel[_0x277e('0x66')]()[_0x277e('0x67')](_0x277e('0x7d'))[_0x277e('0x69')]([_0x277e('0x7e'),_0x277e('0x6b'),_0x277e('0x6a'),_0x277e('0x7f'),_0x277e('0x4e'),'updatedAt'],squel[_0x277e('0x74')]()['field'](_0x277e('0x80'),'id')[_0x277e('0x6d')]('NOW()',_0x277e('0x6b'))[_0x277e('0x6d')](_0x277e('0x81'),_0x277e('0x6a'))[_0x277e('0x6d')](_0x277e('0x82'),_0x277e('0x7f'))[_0x277e('0x6d')]('\x27'+_0x5680f4+'\x27',_0x277e('0x4e'))[_0x277e('0x6d')]('\x27'+_0x5680f4+'\x27','updatedAt')[_0x277e('0x78')]('cm_contact_has_items','ci')['join'](_0x277e('0x68'),'h','h.ContactId\x20=\x20ci.CmContactId')[_0x277e('0x37')](_0x277e('0x83'),_0x374e92['CmListId'][_0x277e('0x70')]())[_0x277e('0x37')]('h.CampaignId=?',_0x4ea97d[_0x277e('0x4c')]['id'][_0x277e('0x70')]())[_0x277e('0x37')](_0x277e('0x84'),_0x5680f4))[_0x277e('0x70')]();_0x7cc404['push'](db[_0x277e('0x85')]['query'](_0x74fb9a));_0x32c854[_0x277e('0x86')](db[_0x277e('0x85')]['query'](_0x950359));}return BPromise[_0x277e('0x87')](_0x7cc404);}})['then'](function(){return BPromise[_0x277e('0x87')](_0x32c854);})[_0x277e('0x21')](function(){return _0x3c4b4c;})[_0x277e('0x21')](respondWithResult(_0x2aede3,null))[_0x277e('0x41')](handleError(_0x2aede3,null));};exports[_0x277e('0x88')]=function(_0x261b1f,_0x1995bb,_0x4d4fcf){return db[_0x277e('0x29')][_0x277e('0x40')]({'where':{'id':_0x261b1f[_0x277e('0x4c')]['id']}})[_0x277e('0x21')](handleEntityNotFound(_0x1995bb,null))[_0x277e('0x21')](function(_0xd56a4f){if(_0xd56a4f){return _0xd56a4f['removeLists'](_0x261b1f[_0x277e('0x2d')][_0x277e('0x63')]);}})[_0x277e('0x21')](function(_0x59cf11){if(_0x59cf11){return db[_0x277e('0x56')][_0x277e('0x22')]({'where':{'ListId':_0x261b1f[_0x277e('0x2d')]['ids'],'CampaignId':_0x261b1f['params']['id']}})[_0x277e('0x21')](function(){return _0x59cf11;});}})['then'](respondWithStatusCode(_0x1995bb,null))[_0x277e('0x41')](handleError(_0x1995bb,null));};exports[_0x277e('0x89')]=function(_0x492fc5,_0x4f6208,_0x5124fc){var _0x3ab1f2={};var _0x273b2d={};var _0x238399;var _0x1223a6;return db[_0x277e('0x29')][_0x277e('0x53')]({'where':{'id':_0x492fc5[_0x277e('0x4c')]['id']}})[_0x277e('0x21')](handleEntityNotFound(_0x4f6208,null))[_0x277e('0x21')](function(_0x146a5b){if(_0x146a5b){_0x238399=_0x146a5b;_0x273b2d[_0x277e('0x2c')]=_[_0x277e('0x2e')](db['CmList'][_0x277e('0x2a')]);_0x273b2d[_0x277e('0x2d')]=_[_0x277e('0x2e')](_0x492fc5[_0x277e('0x2d')]);_0x273b2d[_0x277e('0x2f')]=_[_0x277e('0x31')](_0x273b2d[_0x277e('0x2c')],_0x273b2d[_0x277e('0x2d')]);_0x3ab1f2[_0x277e('0x30')]=_[_0x277e('0x31')](_0x273b2d[_0x277e('0x2c')],qs[_0x277e('0x32')](_0x492fc5[_0x277e('0x2d')][_0x277e('0x32')]));_0x3ab1f2[_0x277e('0x30')]=_0x3ab1f2[_0x277e('0x30')][_0x277e('0x33')]?_0x3ab1f2[_0x277e('0x30')]:_0x273b2d['model'];_0x3ab1f2['order']=qs['sort'](_0x492fc5[_0x277e('0x2d')]['sort']);_0x3ab1f2[_0x277e('0x37')]=qs[_0x277e('0x2f')](_['pick'](_0x492fc5['query'],_0x273b2d[_0x277e('0x2f')]));if(_0x492fc5[_0x277e('0x2d')][_0x277e('0x3b')]){_0x3ab1f2[_0x277e('0x37')]=_['merge'](_0x3ab1f2[_0x277e('0x37')],{'$or':_[_0x277e('0x28')](_0x3ab1f2['attributes'],function(_0x570646){var _0x1f8db5={};_0x1f8db5[_0x570646]={'$like':'%'+_0x492fc5[_0x277e('0x2d')][_0x277e('0x3b')]+'%'};return _0x1f8db5;})});}_0x3ab1f2=_[_0x277e('0x38')]({},_0x3ab1f2,_0x492fc5[_0x277e('0x3c')]);return _0x238399[_0x277e('0x89')](_0x3ab1f2);}})[_0x277e('0x21')](function(_0x46bfc3){if(_0x46bfc3){_0x1223a6=_0x46bfc3['length'];if(!_0x492fc5[_0x277e('0x2d')]['hasOwnProperty'](_0x277e('0x54'))){_0x3ab1f2[_0x277e('0x1d')]=qs[_0x277e('0x1d')](_0x492fc5[_0x277e('0x2d')][_0x277e('0x1d')]);_0x3ab1f2['offset']=qs[_0x277e('0x1e')](_0x492fc5[_0x277e('0x2d')][_0x277e('0x1e')]);}return _0x238399[_0x277e('0x89')](_0x3ab1f2);}})[_0x277e('0x21')](function(_0x2e41c9){if(_0x2e41c9){return _0x2e41c9?{'count':_0x1223a6,'rows':_0x2e41c9}:null;}})[_0x277e('0x21')](respondWithResult(_0x4f6208,null))['catch'](handleError(_0x4f6208,null));};exports['addBlackLists']=function(_0x561c81,_0x372343,_0x76af48){var _0x30978c,_0x16abaa;var _0x5530bd=[];var _0x2508c1=moment()[_0x277e('0x62')](_0x277e('0x8a'));return db['Campaign'][_0x277e('0x40')]({'where':{'id':_0x561c81[_0x277e('0x4c')]['id']}})[_0x277e('0x21')](handleEntityNotFound(_0x372343,null))[_0x277e('0x21')](function(_0x4e766a){if(_0x4e766a){_0x16abaa=_0x4e766a;return _0x4e766a['addBlackLists'](_0x561c81[_0x277e('0x43')][_0x277e('0x63')],_[_0x277e('0x4d')](_0x561c81['body'],[_0x277e('0x63'),'id'])||{});}return null;})[_0x277e('0x8b')](function(_0x384bea){var _0x5007a4;var _0x4be8b1;_0x30978c=_0x384bea||[];var _0x46acbb=[];if(_0x384bea){for(var _0x8e4279=0x0;_0x8e4279<_0x384bea['length'];_0x8e4279+=0x1){var _0x359092=_0x384bea[_0x8e4279][_0x277e('0x44')]({'plain':!![]});_0x5007a4=squel[_0x277e('0x66')]()['into'](_0x277e('0x8c'))['fromQuery']([_0x277e('0x6a'),_0x277e('0x6c'),_0x277e('0x71'),_0x277e('0x5b'),_0x277e('0x4e'),_0x277e('0x4f')],squel[_0x277e('0x74')]()['field'](_0x277e('0x6a'),'phone')[_0x277e('0x6d')]('id',_0x277e('0x6c'))['field'](_0x359092['CmListId']['toString'](),_0x277e('0x71'))[_0x277e('0x6d')](_0x561c81[_0x277e('0x4c')]['id'][_0x277e('0x70')](),_0x277e('0x5b'))[_0x277e('0x6d')](_0x277e('0x6e'),_0x277e('0x4e'))[_0x277e('0x6d')]('NOW()',_0x277e('0x4f'))[_0x277e('0x78')]('cm_contacts')['where'](_0x277e('0x72'))[_0x277e('0x37')](_0x277e('0x7a'),_0x359092[_0x277e('0x6f')]['toString']())[_0x277e('0x37')](_0x277e('0x7b')))[_0x277e('0x70')]();_0x46acbb['push'](db[_0x277e('0x85')][_0x277e('0x2d')](_0x5007a4));}return BPromise[_0x277e('0x87')](_0x46acbb);}})[_0x277e('0x21')](function(){return _0x30978c;})['then'](respondWithResult(_0x372343,null))['catch'](handleError(_0x372343,null));};exports[_0x277e('0x8d')]=function(_0x338519,_0x1ef3e2,_0x4af233){return db['Campaign']['find']({'where':{'id':_0x338519['params']['id']}})[_0x277e('0x21')](handleEntityNotFound(_0x1ef3e2,null))[_0x277e('0x21')](function(_0x2e9a6a){if(_0x2e9a6a){return _0x2e9a6a[_0x277e('0x8d')](_0x338519[_0x277e('0x2d')][_0x277e('0x63')]);}})[_0x277e('0x21')](function(_0x259647){if(_0x259647){return db[_0x277e('0x5e')][_0x277e('0x22')]({'where':{'ListId':_0x338519[_0x277e('0x2d')][_0x277e('0x63')],'CampaignId':_0x338519[_0x277e('0x4c')]['id']}})[_0x277e('0x21')](function(){return _0x259647;});}})[_0x277e('0x21')](respondWithStatusCode(_0x1ef3e2,null))[_0x277e('0x41')](handleError(_0x1ef3e2,null));};
\ No newline at end of file
+var _0xbe9d=['getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','limit','count','offset','set','apply','reject','save','update','then','destroy','get','IvrCampaigns','UserProfileResource','stack','name','send','map','Campaign','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','includeAll','include','findAll','rows','catch','show','params','options','find','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','create','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','role','getHoppers','CmHopper','pick','CampaignId','getHopperHistories','findOne','CmHopperHistory','getHopperFinals','CmHopperFinal','CmHopperBlack','getLists','CmList','addLists','format','YYYY-MM-DD\x20HH:mm:ss','spread','dialCheckDuplicateType','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','updatedAt','select','field','NOW()','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','CmListId','toString','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','cm_hopper_final','CampaignId\x20=\x20?','onlyIfOpen','COALESCE(phone,\x27\x27)','insert','into','cm_hopper_additional_phones','cmHopperId','OrderBy','h.id','ci.item','ci.OrderBY','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'];(function(_0x443702,_0x5dddd9){var _0x216267=function(_0x31c479){while(--_0x31c479){_0x443702['push'](_0x443702['shift']());}};_0x216267(++_0x5dddd9);}(_0xbe9d,0x99));var _0xdbe9=function(_0xd1d19a,_0x1933f0){_0xd1d19a=_0xd1d19a-0x0;var _0x52a79d=_0xbe9d[_0xd1d19a];return _0x52a79d;};'use strict';var emlformat=require(_0xdbe9('0x0'));var rimraf=require(_0xdbe9('0x1'));var zipdir=require(_0xdbe9('0x2'));var jsonpatch=require(_0xdbe9('0x3'));var rp=require(_0xdbe9('0x4'));var moment=require(_0xdbe9('0x5'));var BPromise=require(_0xdbe9('0x6'));var Mustache=require(_0xdbe9('0x7'));var util=require(_0xdbe9('0x8'));var path=require(_0xdbe9('0x9'));var sox=require(_0xdbe9('0xa'));var csv=require(_0xdbe9('0xb'));var ejs=require(_0xdbe9('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xdbe9('0xd'));var crypto=require(_0xdbe9('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xdbe9('0xf'));var toCsv=require(_0xdbe9('0xb'));var querystring=require(_0xdbe9('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xdbe9('0x11'));var qs=require(_0xdbe9('0x12'));var as=require(_0xdbe9('0x13'));var hardwareService=require(_0xdbe9('0x14'));var logger=require('../../config/logger')(_0xdbe9('0x15'));var utils=require(_0xdbe9('0x16'));var config=require(_0xdbe9('0x17'));var licenseUtil=require(_0xdbe9('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x463efa,_0x53b083){_0x53b083=_0x53b083||0xcc;return function(_0x31233b){if(_0x31233b){return _0x463efa[_0xdbe9('0x19')](_0x53b083);}return _0x463efa[_0xdbe9('0x1a')](_0x53b083)['end']();};}function respondWithResult(_0x39701a,_0x28e5d9){_0x28e5d9=_0x28e5d9||0xc8;return function(_0x2429fb){if(_0x2429fb){return _0x39701a['status'](_0x28e5d9)[_0xdbe9('0x1b')](_0x2429fb);}};}function respondWithFilteredResult(_0x4d71e5,_0x131348){return function(_0x36b5c9){if(_0x36b5c9){var _0x11260a=typeof _0x131348['offset']===_0xdbe9('0x1c')&&typeof _0x131348[_0xdbe9('0x1d')]===_0xdbe9('0x1c');var _0x4d051e=_0x36b5c9[_0xdbe9('0x1e')];var _0x196faa=_0x11260a?0x0:_0x131348['offset'];var _0x2cf06e=_0x11260a?_0x36b5c9[_0xdbe9('0x1e')]:_0x131348[_0xdbe9('0x1f')]+_0x131348[_0xdbe9('0x1d')];var _0x12db0a;if(_0x2cf06e>=_0x4d051e){_0x2cf06e=_0x4d051e;_0x12db0a=0xc8;}else{_0x12db0a=0xce;}_0x4d71e5[_0xdbe9('0x1a')](_0x12db0a);return _0x4d71e5[_0xdbe9('0x20')]('Content-Range',_0x196faa+'-'+_0x2cf06e+'/'+_0x4d051e)[_0xdbe9('0x1b')](_0x36b5c9);}return null;};}function patchUpdates(_0x181627){return function(_0x55b60c){try{jsonpatch[_0xdbe9('0x21')](_0x55b60c,_0x181627,!![]);}catch(_0x3e411d){return BPromise[_0xdbe9('0x22')](_0x3e411d);}return _0x55b60c[_0xdbe9('0x23')]();};}function saveUpdates(_0x2fe158,_0x5e55a0){return function(_0x1a6b6e){if(_0x1a6b6e){return _0x1a6b6e[_0xdbe9('0x24')](_0x2fe158)[_0xdbe9('0x25')](function(_0x266790){return _0x266790;});}return null;};}function removeEntity(_0x43cfff,_0x306d15){return function(_0x834c1){if(_0x834c1){return _0x834c1[_0xdbe9('0x26')]()[_0xdbe9('0x25')](function(){var _0x5cc1ab=_0x834c1[_0xdbe9('0x27')]({'plain':!![]});var _0x3a4b17=_0xdbe9('0x28');return db[_0xdbe9('0x29')][_0xdbe9('0x26')]({'where':{'type':_0x3a4b17,'resourceId':_0x5cc1ab['id']}})[_0xdbe9('0x25')](function(){return _0x834c1;});})[_0xdbe9('0x25')](function(){_0x43cfff[_0xdbe9('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3ec148,_0x1e5b1b){return function(_0x30fcc7){if(!_0x30fcc7){_0x3ec148[_0xdbe9('0x19')](0x194);}return _0x30fcc7;};}function handleError(_0x21693e,_0x1b21a8){_0x1b21a8=_0x1b21a8||0x1f4;return function(_0x56a9aa){logger['error'](_0x56a9aa[_0xdbe9('0x2a')]);if(_0x56a9aa[_0xdbe9('0x2b')]){delete _0x56a9aa[_0xdbe9('0x2b')];}_0x21693e[_0xdbe9('0x1a')](_0x1b21a8)[_0xdbe9('0x2c')](_0x56a9aa);};}exports['index']=function(_0x1c0a00,_0x34ba93){var _0x59696f={},_0x3d1a0c={},_0x35ec24={'count':0x0,'rows':[]};var _0x10f42f=_[_0xdbe9('0x2d')](db[_0xdbe9('0x2e')][_0xdbe9('0x2f')],function(_0x1fca2b){return{'name':_0x1fca2b[_0xdbe9('0x30')],'type':_0x1fca2b[_0xdbe9('0x31')][_0xdbe9('0x32')]};});_0x3d1a0c[_0xdbe9('0x33')]=_[_0xdbe9('0x2d')](_0x10f42f,'name');_0x3d1a0c[_0xdbe9('0x34')]=_[_0xdbe9('0x35')](_0x1c0a00['query']);_0x3d1a0c[_0xdbe9('0x36')]=_[_0xdbe9('0x37')](_0x3d1a0c['model'],_0x3d1a0c[_0xdbe9('0x34')]);_0x59696f[_0xdbe9('0x38')]=_[_0xdbe9('0x37')](_0x3d1a0c['model'],qs[_0xdbe9('0x39')](_0x1c0a00[_0xdbe9('0x34')][_0xdbe9('0x39')]));_0x59696f['attributes']=_0x59696f[_0xdbe9('0x38')][_0xdbe9('0x3a')]?_0x59696f[_0xdbe9('0x38')]:_0x3d1a0c[_0xdbe9('0x33')];if(!_0x1c0a00[_0xdbe9('0x34')][_0xdbe9('0x3b')](_0xdbe9('0x3c'))){_0x59696f['limit']=qs[_0xdbe9('0x1d')](_0x1c0a00[_0xdbe9('0x34')]['limit']);_0x59696f[_0xdbe9('0x1f')]=qs['offset'](_0x1c0a00['query'][_0xdbe9('0x1f')]);}_0x59696f[_0xdbe9('0x3d')]=qs[_0xdbe9('0x3e')](_0x1c0a00[_0xdbe9('0x34')][_0xdbe9('0x3e')]);_0x59696f[_0xdbe9('0x3f')]=qs[_0xdbe9('0x36')](_['pick'](_0x1c0a00['query'],_0x3d1a0c[_0xdbe9('0x36')]),_0x10f42f);if(_0x1c0a00[_0xdbe9('0x34')][_0xdbe9('0x40')]){_0x59696f[_0xdbe9('0x3f')]=_[_0xdbe9('0x41')](_0x59696f['where'],{'$or':_[_0xdbe9('0x2d')](_0x10f42f,function(_0x358190){if(_0x358190[_0xdbe9('0x31')]!=='VIRTUAL'){var _0x30fa89={};_0x30fa89[_0x358190[_0xdbe9('0x2b')]]={'$like':'%'+_0x1c0a00[_0xdbe9('0x34')][_0xdbe9('0x40')]+'%'};return _0x30fa89;}})});}_0x59696f=_[_0xdbe9('0x41')]({},_0x59696f,_0x1c0a00['options']);var _0x57e5b0={'where':_0x59696f[_0xdbe9('0x3f')]};return db[_0xdbe9('0x2e')]['count'](_0x57e5b0)[_0xdbe9('0x25')](function(_0x35ed09){_0x35ec24[_0xdbe9('0x1e')]=_0x35ed09;if(_0x1c0a00[_0xdbe9('0x34')][_0xdbe9('0x42')]){_0x59696f[_0xdbe9('0x43')]=[{'all':!![]}];}return db['Campaign'][_0xdbe9('0x44')](_0x59696f);})['then'](function(_0x1a6c93){_0x35ec24[_0xdbe9('0x45')]=_0x1a6c93;return _0x35ec24;})[_0xdbe9('0x25')](respondWithFilteredResult(_0x34ba93,_0x59696f))[_0xdbe9('0x46')](handleError(_0x34ba93,null));};exports[_0xdbe9('0x47')]=function(_0x49034c,_0x4adef6){var _0x552923={'raw':![],'where':{'id':_0x49034c[_0xdbe9('0x48')]['id']}},_0x18f2ec={};_0x18f2ec[_0xdbe9('0x33')]=_[_0xdbe9('0x35')](db[_0xdbe9('0x2e')]['rawAttributes']);_0x18f2ec['query']=_[_0xdbe9('0x35')](_0x49034c[_0xdbe9('0x34')]);_0x18f2ec[_0xdbe9('0x36')]=_[_0xdbe9('0x37')](_0x18f2ec[_0xdbe9('0x33')],_0x18f2ec[_0xdbe9('0x34')]);_0x552923[_0xdbe9('0x38')]=_[_0xdbe9('0x37')](_0x18f2ec[_0xdbe9('0x33')],qs[_0xdbe9('0x39')](_0x49034c[_0xdbe9('0x34')][_0xdbe9('0x39')]));_0x552923[_0xdbe9('0x38')]=_0x552923['attributes'][_0xdbe9('0x3a')]?_0x552923[_0xdbe9('0x38')]:_0x18f2ec[_0xdbe9('0x33')];if(_0x49034c[_0xdbe9('0x34')][_0xdbe9('0x42')]){_0x552923[_0xdbe9('0x43')]=[{'all':!![]}];}_0x552923=_[_0xdbe9('0x41')]({},_0x552923,_0x49034c[_0xdbe9('0x49')]);return db[_0xdbe9('0x2e')][_0xdbe9('0x4a')](_0x552923)[_0xdbe9('0x25')](handleEntityNotFound(_0x4adef6,null))[_0xdbe9('0x25')](respondWithResult(_0x4adef6,null))['catch'](handleError(_0x4adef6,null));};exports['create']=function(_0x299d16,_0x4282f6){return db[_0xdbe9('0x2e')]['create'](_0x299d16[_0xdbe9('0x4b')],{})[_0xdbe9('0x25')](function(_0x3c6ce4){var _0x49d06c=_0x299d16['user'][_0xdbe9('0x27')]({'plain':!![]});if(!_0x49d06c)throw new Error(_0xdbe9('0x4c'));if(_0x49d06c['role']===_0xdbe9('0x4d')){var _0x14d0bc=_0x3c6ce4[_0xdbe9('0x27')]({'plain':!![]});var _0x5e33e9=_0xdbe9('0x28');return db[_0xdbe9('0x4e')]['find']({'where':{'name':_0x5e33e9,'userProfileId':_0x49d06c[_0xdbe9('0x4f')]},'raw':!![]})[_0xdbe9('0x25')](function(_0x3142d1){if(_0x3142d1&&_0x3142d1[_0xdbe9('0x50')]===0x0){return db[_0xdbe9('0x29')][_0xdbe9('0x51')]({'name':_0x14d0bc[_0xdbe9('0x2b')],'resourceId':_0x14d0bc['id'],'type':_0x3142d1[_0xdbe9('0x2b')],'sectionId':_0x3142d1['id']},{})['then'](function(){return _0x3c6ce4;});}else{return _0x3c6ce4;}})['catch'](function(_0x44939){logger[_0xdbe9('0x52')](_0xdbe9('0x53'),_0x44939);throw _0x44939;});}return _0x3c6ce4;})[_0xdbe9('0x25')](respondWithResult(_0x4282f6,0xc9))[_0xdbe9('0x46')](handleError(_0x4282f6,null));};exports['clone']=function(_0x175697,_0x481df4){var _0x2bbfe1={'where':{'id':_0x175697[_0xdbe9('0x48')]['id']}},_0x2df39a={};_0x2df39a[_0xdbe9('0x33')]=_[_0xdbe9('0x35')](db[_0xdbe9('0x2e')][_0xdbe9('0x2f')]);_0x2bbfe1[_0xdbe9('0x38')]=_['intersection'](_0x2df39a['model'],qs[_0xdbe9('0x39')](_0x175697[_0xdbe9('0x34')][_0xdbe9('0x39')]));_0x2bbfe1[_0xdbe9('0x38')]=_0x2bbfe1[_0xdbe9('0x38')][_0xdbe9('0x3a')]?_0x2bbfe1[_0xdbe9('0x38')]:_0x2df39a[_0xdbe9('0x33')];if(_0x175697['query'][_0xdbe9('0x42')]){_0x2bbfe1[_0xdbe9('0x43')]=[{'all':!![]}];}_0x2bbfe1=_[_0xdbe9('0x41')]({},_0x2bbfe1,_0x175697[_0xdbe9('0x49')]);return db[_0xdbe9('0x2e')][_0xdbe9('0x4a')](_0x2bbfe1)[_0xdbe9('0x25')](handleEntityNotFound(_0x481df4,null))[_0xdbe9('0x25')](function(_0x3eaf48){if(_0x3eaf48){var _0x13c7be=_0x3eaf48[_0xdbe9('0x27')]({'plain':!![]});_0x13c7be=qs['omit'](_0x13c7be,['id','createdAt','updatedAt']);_0x175697[_0xdbe9('0x4b')]=_[_0xdbe9('0x54')](_0x175697[_0xdbe9('0x4b')],['id',_0xdbe9('0x55'),'updatedAt']);return db['Campaign'][_0xdbe9('0x51')](_[_0xdbe9('0x41')](_0x13c7be,_0x175697['body']),{'include':_0x175697[_0xdbe9('0x34')][_0xdbe9('0x42')]?[{'all':!![]}]:undefined})[_0xdbe9('0x25')](function(_0x14f8f1){var _0x169c63=_0x175697[_0xdbe9('0x4d')][_0xdbe9('0x27')]({'plain':!![]});if(!_0x169c63)throw new Error(_0xdbe9('0x4c'));if(_0x169c63[_0xdbe9('0x56')]===_0xdbe9('0x4d')){var _0x3205a7=_0x14f8f1[_0xdbe9('0x27')]({'plain':!![]});var _0x53fa5e=_0xdbe9('0x28');return db[_0xdbe9('0x4e')][_0xdbe9('0x4a')]({'where':{'name':_0x53fa5e,'userProfileId':_0x169c63[_0xdbe9('0x4f')]},'raw':!![]})[_0xdbe9('0x25')](function(_0x5567a6){if(_0x5567a6&&_0x5567a6[_0xdbe9('0x50')]===0x0){return db[_0xdbe9('0x29')]['create']({'name':_0x3205a7[_0xdbe9('0x2b')],'resourceId':_0x3205a7['id'],'type':_0x5567a6[_0xdbe9('0x2b')],'sectionId':_0x5567a6['id']},{})['then'](function(){return _0x14f8f1;});}else{return _0x14f8f1;}})[_0xdbe9('0x46')](function(_0x3ddc41){logger[_0xdbe9('0x52')](_0xdbe9('0x53'),_0x3ddc41);throw _0x3ddc41;});}return _0x14f8f1;});}})['then'](respondWithResult(_0x481df4,0xc9))[_0xdbe9('0x46')](handleError(_0x481df4,null));};exports['update']=function(_0x5c658e,_0x2810c0){if(_0x5c658e[_0xdbe9('0x4b')]['id']){delete _0x5c658e[_0xdbe9('0x4b')]['id'];}return db['Campaign']['find']({'where':{'id':_0x5c658e[_0xdbe9('0x48')]['id']}})[_0xdbe9('0x25')](handleEntityNotFound(_0x2810c0,null))[_0xdbe9('0x25')](saveUpdates(_0x5c658e[_0xdbe9('0x4b')],null))[_0xdbe9('0x25')](respondWithResult(_0x2810c0,null))['catch'](handleError(_0x2810c0,null));};exports['destroy']=function(_0x546750,_0xd9306f){return db[_0xdbe9('0x2e')][_0xdbe9('0x4a')]({'where':{'id':_0x546750[_0xdbe9('0x48')]['id']}})[_0xdbe9('0x25')](handleEntityNotFound(_0xd9306f,null))[_0xdbe9('0x25')](removeEntity(_0xd9306f,null))[_0xdbe9('0x46')](handleError(_0xd9306f,null));};exports[_0xdbe9('0x57')]=function(_0x5343be,_0x26561f,_0x37fca2){var _0x1d0ce2={'raw':!![],'where':{}};var _0x3dc665={};var _0x14356a={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x5343be[_0xdbe9('0x48')]['id']}})['then'](handleEntityNotFound(_0x26561f,null))['then'](function(_0x366af7){if(_0x366af7){_0x3dc665[_0xdbe9('0x33')]=_[_0xdbe9('0x35')](db[_0xdbe9('0x58')][_0xdbe9('0x2f')]);_0x3dc665[_0xdbe9('0x34')]=_[_0xdbe9('0x35')](_0x5343be[_0xdbe9('0x34')]);_0x3dc665[_0xdbe9('0x36')]=_[_0xdbe9('0x37')](_0x3dc665['model'],_0x3dc665[_0xdbe9('0x34')]);_0x1d0ce2[_0xdbe9('0x38')]=_['intersection'](_0x3dc665['model'],qs[_0xdbe9('0x39')](_0x5343be[_0xdbe9('0x34')][_0xdbe9('0x39')]));_0x1d0ce2['attributes']=_0x1d0ce2[_0xdbe9('0x38')][_0xdbe9('0x3a')]?_0x1d0ce2[_0xdbe9('0x38')]:_0x3dc665[_0xdbe9('0x33')];if(!_0x5343be['query'][_0xdbe9('0x3b')]('nolimit')){_0x1d0ce2[_0xdbe9('0x1d')]=qs[_0xdbe9('0x1d')](_0x5343be[_0xdbe9('0x34')]['limit']);_0x1d0ce2[_0xdbe9('0x1f')]=qs[_0xdbe9('0x1f')](_0x5343be['query']['offset']);}_0x1d0ce2[_0xdbe9('0x3d')]=qs[_0xdbe9('0x3e')](_0x5343be[_0xdbe9('0x34')][_0xdbe9('0x3e')]);_0x1d0ce2[_0xdbe9('0x3f')]=qs[_0xdbe9('0x36')](_[_0xdbe9('0x59')](_0x5343be[_0xdbe9('0x34')],_0x3dc665[_0xdbe9('0x36')]));_0x1d0ce2[_0xdbe9('0x3f')][_0xdbe9('0x5a')]=_0x366af7['id'];if(_0x5343be['query'][_0xdbe9('0x40')]){_0x1d0ce2['where']=_['merge'](_0x1d0ce2[_0xdbe9('0x3f')],{'$or':_['map'](_0x1d0ce2['attributes'],function(_0x51aa13){var _0x4556e8={};_0x4556e8[_0x51aa13]={'$like':'%'+_0x5343be[_0xdbe9('0x34')]['filter']+'%'};return _0x4556e8;})});}_0x1d0ce2=_[_0xdbe9('0x41')]({},_0x1d0ce2,_0x5343be['options']);return db[_0xdbe9('0x58')][_0xdbe9('0x1e')]({'where':_0x1d0ce2[_0xdbe9('0x3f')]})['then'](function(_0x38ae6b){_0x14356a[_0xdbe9('0x1e')]=_0x38ae6b;if(_0x5343be['query'][_0xdbe9('0x42')]){_0x1d0ce2[_0xdbe9('0x43')]=[{'all':!![]}];}return db[_0xdbe9('0x58')]['findAll'](_0x1d0ce2);})['then'](function(_0x4a29aa){_0x14356a[_0xdbe9('0x45')]=_0x4a29aa;return _0x14356a;});}})['then'](respondWithFilteredResult(_0x26561f,_0x1d0ce2))['catch'](handleError(_0x26561f,null));};exports[_0xdbe9('0x5b')]=function(_0x5759b4,_0x3efa45,_0x47f973){var _0x5d1c8b={'raw':!![],'where':{}};var _0x21dfdb={};var _0x15f6bd={'count':0x0,'rows':[]};return db[_0xdbe9('0x2e')][_0xdbe9('0x5c')]({'where':{'id':_0x5759b4[_0xdbe9('0x48')]['id']}})[_0xdbe9('0x25')](handleEntityNotFound(_0x3efa45,null))[_0xdbe9('0x25')](function(_0x57e71b){if(_0x57e71b){_0x21dfdb[_0xdbe9('0x33')]=_[_0xdbe9('0x35')](db[_0xdbe9('0x5d')][_0xdbe9('0x2f')]);_0x21dfdb[_0xdbe9('0x34')]=_['keys'](_0x5759b4[_0xdbe9('0x34')]);_0x21dfdb[_0xdbe9('0x36')]=_[_0xdbe9('0x37')](_0x21dfdb[_0xdbe9('0x33')],_0x21dfdb['query']);_0x5d1c8b[_0xdbe9('0x38')]=_[_0xdbe9('0x37')](_0x21dfdb['model'],qs[_0xdbe9('0x39')](_0x5759b4[_0xdbe9('0x34')]['fields']));_0x5d1c8b['attributes']=_0x5d1c8b['attributes'][_0xdbe9('0x3a')]?_0x5d1c8b[_0xdbe9('0x38')]:_0x21dfdb[_0xdbe9('0x33')];if(!_0x5759b4['query'][_0xdbe9('0x3b')](_0xdbe9('0x3c'))){_0x5d1c8b[_0xdbe9('0x1d')]=qs[_0xdbe9('0x1d')](_0x5759b4['query'][_0xdbe9('0x1d')]);_0x5d1c8b['offset']=qs[_0xdbe9('0x1f')](_0x5759b4[_0xdbe9('0x34')][_0xdbe9('0x1f')]);}_0x5d1c8b[_0xdbe9('0x3d')]=qs[_0xdbe9('0x3e')](_0x5759b4[_0xdbe9('0x34')]['sort']);_0x5d1c8b['where']=qs[_0xdbe9('0x36')](_[_0xdbe9('0x59')](_0x5759b4['query'],_0x21dfdb[_0xdbe9('0x36')]));_0x5d1c8b['where'][_0xdbe9('0x5a')]=_0x57e71b['id'];if(_0x5759b4[_0xdbe9('0x34')]['filter']){_0x5d1c8b['where']=_[_0xdbe9('0x41')](_0x5d1c8b[_0xdbe9('0x3f')],{'$or':_[_0xdbe9('0x2d')](_0x5d1c8b['attributes'],function(_0x309b89){var _0x498dae={};_0x498dae[_0x309b89]={'$like':'%'+_0x5759b4['query'][_0xdbe9('0x40')]+'%'};return _0x498dae;})});}_0x5d1c8b=_[_0xdbe9('0x41')]({},_0x5d1c8b,_0x5759b4[_0xdbe9('0x49')]);return db[_0xdbe9('0x5d')]['count']({'where':_0x5d1c8b['where']})[_0xdbe9('0x25')](function(_0x3a3bf7){_0x15f6bd[_0xdbe9('0x1e')]=_0x3a3bf7;if(_0x5759b4[_0xdbe9('0x34')][_0xdbe9('0x42')]){_0x5d1c8b[_0xdbe9('0x43')]=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x5d1c8b);})['then'](function(_0x1cf795){_0x15f6bd[_0xdbe9('0x45')]=_0x1cf795;return _0x15f6bd;});}})[_0xdbe9('0x25')](respondWithFilteredResult(_0x3efa45,_0x5d1c8b))[_0xdbe9('0x46')](handleError(_0x3efa45,null));};exports[_0xdbe9('0x5e')]=function(_0x5c420c,_0x3df884,_0x48a06c){var _0x32bdf8={'raw':!![],'where':{}};var _0x196c32={};var _0x463ee1={'count':0x0,'rows':[]};return db[_0xdbe9('0x2e')][_0xdbe9('0x5c')]({'where':{'id':_0x5c420c[_0xdbe9('0x48')]['id']}})['then'](handleEntityNotFound(_0x3df884,null))[_0xdbe9('0x25')](function(_0x39e146){if(_0x39e146){_0x196c32[_0xdbe9('0x33')]=_[_0xdbe9('0x35')](db[_0xdbe9('0x5f')][_0xdbe9('0x2f')]);_0x196c32['query']=_['keys'](_0x5c420c['query']);_0x196c32[_0xdbe9('0x36')]=_[_0xdbe9('0x37')](_0x196c32[_0xdbe9('0x33')],_0x196c32[_0xdbe9('0x34')]);_0x32bdf8[_0xdbe9('0x38')]=_[_0xdbe9('0x37')](_0x196c32[_0xdbe9('0x33')],qs[_0xdbe9('0x39')](_0x5c420c[_0xdbe9('0x34')][_0xdbe9('0x39')]));_0x32bdf8['attributes']=_0x32bdf8[_0xdbe9('0x38')][_0xdbe9('0x3a')]?_0x32bdf8[_0xdbe9('0x38')]:_0x196c32[_0xdbe9('0x33')];if(!_0x5c420c[_0xdbe9('0x34')][_0xdbe9('0x3b')](_0xdbe9('0x3c'))){_0x32bdf8[_0xdbe9('0x1d')]=qs['limit'](_0x5c420c[_0xdbe9('0x34')]['limit']);_0x32bdf8['offset']=qs[_0xdbe9('0x1f')](_0x5c420c['query'][_0xdbe9('0x1f')]);}_0x32bdf8[_0xdbe9('0x3d')]=qs[_0xdbe9('0x3e')](_0x5c420c[_0xdbe9('0x34')]['sort']);_0x32bdf8['where']=qs[_0xdbe9('0x36')](_[_0xdbe9('0x59')](_0x5c420c[_0xdbe9('0x34')],_0x196c32[_0xdbe9('0x36')]));_0x32bdf8[_0xdbe9('0x3f')][_0xdbe9('0x5a')]=_0x39e146['id'];if(_0x5c420c[_0xdbe9('0x34')]['filter']){_0x32bdf8[_0xdbe9('0x3f')]=_[_0xdbe9('0x41')](_0x32bdf8[_0xdbe9('0x3f')],{'$or':_['map'](_0x32bdf8[_0xdbe9('0x38')],function(_0x48d2c8){var _0x5cdc9a={};_0x5cdc9a[_0x48d2c8]={'$like':'%'+_0x5c420c[_0xdbe9('0x34')][_0xdbe9('0x40')]+'%'};return _0x5cdc9a;})});}_0x32bdf8=_[_0xdbe9('0x41')]({},_0x32bdf8,_0x5c420c[_0xdbe9('0x49')]);return db[_0xdbe9('0x5f')]['count']({'where':_0x32bdf8['where']})[_0xdbe9('0x25')](function(_0x37260c){_0x463ee1[_0xdbe9('0x1e')]=_0x37260c;if(_0x5c420c['query'][_0xdbe9('0x42')]){_0x32bdf8['include']=[{'all':!![]}];}return db[_0xdbe9('0x5f')][_0xdbe9('0x44')](_0x32bdf8);})[_0xdbe9('0x25')](function(_0x25584b){_0x463ee1[_0xdbe9('0x45')]=_0x25584b;return _0x463ee1;});}})[_0xdbe9('0x25')](respondWithFilteredResult(_0x3df884,_0x32bdf8))['catch'](handleError(_0x3df884,null));};exports['getHopperBlacks']=function(_0x21c0d5,_0x446078,_0x2ad423){var _0x3a81a7={'raw':!![],'where':{}};var _0x30c4ed={};var _0x598f68={'count':0x0,'rows':[]};return db[_0xdbe9('0x2e')][_0xdbe9('0x5c')]({'where':{'id':_0x21c0d5[_0xdbe9('0x48')]['id']}})['then'](handleEntityNotFound(_0x446078,null))[_0xdbe9('0x25')](function(_0x2ce00d){if(_0x2ce00d){_0x30c4ed['model']=_['keys'](db[_0xdbe9('0x60')][_0xdbe9('0x2f')]);_0x30c4ed[_0xdbe9('0x34')]=_[_0xdbe9('0x35')](_0x21c0d5[_0xdbe9('0x34')]);_0x30c4ed[_0xdbe9('0x36')]=_[_0xdbe9('0x37')](_0x30c4ed[_0xdbe9('0x33')],_0x30c4ed[_0xdbe9('0x34')]);_0x3a81a7['attributes']=_['intersection'](_0x30c4ed[_0xdbe9('0x33')],qs['fields'](_0x21c0d5[_0xdbe9('0x34')][_0xdbe9('0x39')]));_0x3a81a7[_0xdbe9('0x38')]=_0x3a81a7['attributes'][_0xdbe9('0x3a')]?_0x3a81a7['attributes']:_0x30c4ed['model'];if(!_0x21c0d5[_0xdbe9('0x34')][_0xdbe9('0x3b')](_0xdbe9('0x3c'))){_0x3a81a7[_0xdbe9('0x1d')]=qs['limit'](_0x21c0d5[_0xdbe9('0x34')]['limit']);_0x3a81a7[_0xdbe9('0x1f')]=qs['offset'](_0x21c0d5[_0xdbe9('0x34')][_0xdbe9('0x1f')]);}_0x3a81a7['order']=qs[_0xdbe9('0x3e')](_0x21c0d5[_0xdbe9('0x34')][_0xdbe9('0x3e')]);_0x3a81a7['where']=qs[_0xdbe9('0x36')](_[_0xdbe9('0x59')](_0x21c0d5[_0xdbe9('0x34')],_0x30c4ed[_0xdbe9('0x36')]));_0x3a81a7[_0xdbe9('0x3f')]['CampaignId']=_0x2ce00d['id'];if(_0x21c0d5['query']['filter']){_0x3a81a7[_0xdbe9('0x3f')]=_['merge'](_0x3a81a7[_0xdbe9('0x3f')],{'$or':_[_0xdbe9('0x2d')](_0x3a81a7[_0xdbe9('0x38')],function(_0x2f7442){var _0x976476={};_0x976476[_0x2f7442]={'$like':'%'+_0x21c0d5[_0xdbe9('0x34')][_0xdbe9('0x40')]+'%'};return _0x976476;})});}_0x3a81a7=_[_0xdbe9('0x41')]({},_0x3a81a7,_0x21c0d5[_0xdbe9('0x49')]);return db[_0xdbe9('0x60')]['count']({'where':_0x3a81a7[_0xdbe9('0x3f')]})[_0xdbe9('0x25')](function(_0x35dbd7){_0x598f68[_0xdbe9('0x1e')]=_0x35dbd7;if(_0x21c0d5[_0xdbe9('0x34')][_0xdbe9('0x42')]){_0x3a81a7[_0xdbe9('0x43')]=[{'all':!![]}];}return db['CmHopperBlack'][_0xdbe9('0x44')](_0x3a81a7);})[_0xdbe9('0x25')](function(_0x4857f9){_0x598f68[_0xdbe9('0x45')]=_0x4857f9;return _0x598f68;});}})[_0xdbe9('0x25')](respondWithFilteredResult(_0x446078,_0x3a81a7))[_0xdbe9('0x46')](handleError(_0x446078,null));};exports[_0xdbe9('0x61')]=function(_0x1217da,_0xfdf67e,_0xb9dfaa){var _0x2264e4={};var _0xb70f96={};var _0x3389a2;var _0x278975;return db['Campaign'][_0xdbe9('0x5c')]({'where':{'id':_0x1217da['params']['id']}})[_0xdbe9('0x25')](handleEntityNotFound(_0xfdf67e,null))[_0xdbe9('0x25')](function(_0x311089){if(_0x311089){_0x3389a2=_0x311089;_0xb70f96['model']=_[_0xdbe9('0x35')](db[_0xdbe9('0x62')][_0xdbe9('0x2f')]);_0xb70f96[_0xdbe9('0x34')]=_[_0xdbe9('0x35')](_0x1217da[_0xdbe9('0x34')]);_0xb70f96[_0xdbe9('0x36')]=_[_0xdbe9('0x37')](_0xb70f96[_0xdbe9('0x33')],_0xb70f96[_0xdbe9('0x34')]);_0x2264e4[_0xdbe9('0x38')]=_[_0xdbe9('0x37')](_0xb70f96['model'],qs['fields'](_0x1217da[_0xdbe9('0x34')][_0xdbe9('0x39')]));_0x2264e4['attributes']=_0x2264e4[_0xdbe9('0x38')][_0xdbe9('0x3a')]?_0x2264e4[_0xdbe9('0x38')]:_0xb70f96[_0xdbe9('0x33')];_0x2264e4[_0xdbe9('0x3d')]=qs[_0xdbe9('0x3e')](_0x1217da[_0xdbe9('0x34')][_0xdbe9('0x3e')]);_0x2264e4[_0xdbe9('0x3f')]=qs[_0xdbe9('0x36')](_[_0xdbe9('0x59')](_0x1217da[_0xdbe9('0x34')],_0xb70f96[_0xdbe9('0x36')]));if(_0x1217da[_0xdbe9('0x34')][_0xdbe9('0x40')]){_0x2264e4[_0xdbe9('0x3f')]=_['merge'](_0x2264e4[_0xdbe9('0x3f')],{'$or':_[_0xdbe9('0x2d')](_0x2264e4[_0xdbe9('0x38')],function(_0x475518){var _0x83f398={};_0x83f398[_0x475518]={'$like':'%'+_0x1217da[_0xdbe9('0x34')][_0xdbe9('0x40')]+'%'};return _0x83f398;})});}_0x2264e4=_[_0xdbe9('0x41')]({},_0x2264e4,_0x1217da['options']);return _0x3389a2[_0xdbe9('0x61')](_0x2264e4);}})[_0xdbe9('0x25')](function(_0x59d710){if(_0x59d710){_0x278975=_0x59d710[_0xdbe9('0x3a')];if(!_0x1217da['query'][_0xdbe9('0x3b')](_0xdbe9('0x3c'))){_0x2264e4[_0xdbe9('0x1d')]=qs[_0xdbe9('0x1d')](_0x1217da[_0xdbe9('0x34')]['limit']);_0x2264e4['offset']=qs[_0xdbe9('0x1f')](_0x1217da[_0xdbe9('0x34')][_0xdbe9('0x1f')]);}return _0x3389a2[_0xdbe9('0x61')](_0x2264e4);}})[_0xdbe9('0x25')](function(_0x590c92){if(_0x590c92){return _0x590c92?{'count':_0x278975,'rows':_0x590c92}:null;}})[_0xdbe9('0x25')](respondWithResult(_0xfdf67e,null))[_0xdbe9('0x46')](handleError(_0xfdf67e,null));};exports[_0xdbe9('0x63')]=function(_0xbdafd0,_0x297afb,_0x26d458){var _0x3cc3e0,_0x36b5b3;var _0x3c840f=[];var _0x1cc217=moment()[_0xdbe9('0x64')](_0xdbe9('0x65'));return db[_0xdbe9('0x2e')][_0xdbe9('0x4a')]({'where':{'id':_0xbdafd0[_0xdbe9('0x48')]['id']}})[_0xdbe9('0x25')](handleEntityNotFound(_0x297afb,null))['then'](function(_0x58821d){if(_0x58821d){_0x36b5b3=_0x58821d;return _0x58821d[_0xdbe9('0x63')](_0xbdafd0[_0xdbe9('0x4b')]['ids'],_[_0xdbe9('0x54')](_0xbdafd0[_0xdbe9('0x4b')],['ids','id'])||{});}return null;})[_0xdbe9('0x66')](function(_0x52ed5a){var _0x593155;var _0x58c68b;_0x3cc3e0=_0x52ed5a||[];var _0x5777d1=[];if(_0x52ed5a){for(var _0x6cae28=0x0;_0x6cae28<_0x52ed5a[_0xdbe9('0x3a')];_0x6cae28+=0x1){var _0x380824=_0x52ed5a[_0x6cae28][_0xdbe9('0x27')]({'plain':!![]});_0x36b5b3[_0xdbe9('0x67')]=_0xbdafd0['body'][_0xdbe9('0x67')]?_0xbdafd0['body'][_0xdbe9('0x67')]:_0x36b5b3[_0xdbe9('0x67')];switch(_0x36b5b3[_0xdbe9('0x67')]){case'always':_0x593155=squel['insert']()['into'](_0xdbe9('0x68'))[_0xdbe9('0x69')]([_0xdbe9('0x6a'),_0xdbe9('0x6b'),_0xdbe9('0x6c'),_0xdbe9('0x6d'),'CampaignId',_0xdbe9('0x55'),_0xdbe9('0x6e')],squel[_0xdbe9('0x6f')]()[_0xdbe9('0x70')](_0xdbe9('0x6a'),'phone')[_0xdbe9('0x70')](_0xdbe9('0x71'),_0xdbe9('0x6b'))[_0xdbe9('0x70')]('id',_0xdbe9('0x6c'))[_0xdbe9('0x70')](_0x380824['CmListId']['toString'](),_0xdbe9('0x6d'))[_0xdbe9('0x70')](_0xbdafd0[_0xdbe9('0x48')]['id']['toString'](),_0xdbe9('0x5a'))['field']('\x27'+_0x1cc217+'\x27',_0xdbe9('0x55'))['field']('\x27'+_0x1cc217+'\x27','updatedAt')[_0xdbe9('0x72')](_0xdbe9('0x73'))[_0xdbe9('0x3f')](_0xdbe9('0x74'))[_0xdbe9('0x3f')](_0xdbe9('0x75'),_0x380824[_0xdbe9('0x76')][_0xdbe9('0x77')]())[_0xdbe9('0x3f')](_0xdbe9('0x78'))[_0xdbe9('0x3f')](_0xdbe9('0x79'),squel[_0xdbe9('0x6f')]()[_0xdbe9('0x70')]('COALESCE(calleridnum,\x27\x27)')['from'](_0xdbe9('0x7a'))[_0xdbe9('0x3f')](_0xdbe9('0x7b'),_0xbdafd0['params']['id'][_0xdbe9('0x77')]()))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0xdbe9('0x6f')]()['field']('COALESCE(phone,\x27\x27)')[_0xdbe9('0x72')]('cm_hopper')[_0xdbe9('0x3f')](_0xdbe9('0x7b'),_0xbdafd0['params']['id'][_0xdbe9('0x77')]())))[_0xdbe9('0x77')]();break;case _0xdbe9('0x7c'):_0x593155=squel['insert']()['into'](_0xdbe9('0x68'))[_0xdbe9('0x69')]([_0xdbe9('0x6a'),_0xdbe9('0x6b'),_0xdbe9('0x6c'),_0xdbe9('0x6d'),_0xdbe9('0x5a'),_0xdbe9('0x55'),'updatedAt'],squel[_0xdbe9('0x6f')]()[_0xdbe9('0x70')](_0xdbe9('0x6a'),'phone')[_0xdbe9('0x70')](_0xdbe9('0x71'),_0xdbe9('0x6b'))[_0xdbe9('0x70')]('id',_0xdbe9('0x6c'))[_0xdbe9('0x70')](_0x380824[_0xdbe9('0x76')][_0xdbe9('0x77')](),_0xdbe9('0x6d'))[_0xdbe9('0x70')](_0xbdafd0[_0xdbe9('0x48')]['id']['toString'](),_0xdbe9('0x5a'))[_0xdbe9('0x70')]('\x27'+_0x1cc217+'\x27',_0xdbe9('0x55'))[_0xdbe9('0x70')]('\x27'+_0x1cc217+'\x27',_0xdbe9('0x6e'))[_0xdbe9('0x72')](_0xdbe9('0x73'))[_0xdbe9('0x3f')](_0xdbe9('0x74'))[_0xdbe9('0x3f')]('ListId\x20=\x20?',_0x380824['CmListId'][_0xdbe9('0x77')]())[_0xdbe9('0x3f')](_0xdbe9('0x78'))[_0xdbe9('0x3f')](_0xdbe9('0x79'),squel['select']()['field'](_0xdbe9('0x7d'))[_0xdbe9('0x72')](_0xdbe9('0x68'))['where'](_0xdbe9('0x7b'),_0xbdafd0[_0xdbe9('0x48')]['id'][_0xdbe9('0x77')]())))[_0xdbe9('0x77')]();break;default:_0x593155=squel[_0xdbe9('0x7e')]()['into'](_0xdbe9('0x68'))[_0xdbe9('0x69')]([_0xdbe9('0x6a'),_0xdbe9('0x6b'),_0xdbe9('0x6c'),_0xdbe9('0x6d'),'CampaignId','createdAt',_0xdbe9('0x6e')],squel[_0xdbe9('0x6f')]()[_0xdbe9('0x70')](_0xdbe9('0x6a'),'phone')[_0xdbe9('0x70')](_0xdbe9('0x71'),_0xdbe9('0x6b'))['field']('id',_0xdbe9('0x6c'))[_0xdbe9('0x70')](_0x380824[_0xdbe9('0x76')][_0xdbe9('0x77')](),'ListId')['field'](_0xbdafd0['params']['id']['toString'](),_0xdbe9('0x5a'))[_0xdbe9('0x70')]('\x27'+_0x1cc217+'\x27',_0xdbe9('0x55'))[_0xdbe9('0x70')]('\x27'+_0x1cc217+'\x27',_0xdbe9('0x6e'))['from'](_0xdbe9('0x73'))[_0xdbe9('0x3f')](_0xdbe9('0x74'))[_0xdbe9('0x3f')](_0xdbe9('0x75'),_0x380824['CmListId']['toString']())[_0xdbe9('0x3f')](_0xdbe9('0x78')))[_0xdbe9('0x77')]();}_0x58c68b=squel['insert']()[_0xdbe9('0x7f')](_0xdbe9('0x80'))[_0xdbe9('0x69')]([_0xdbe9('0x81'),_0xdbe9('0x6b'),_0xdbe9('0x6a'),_0xdbe9('0x82'),'createdAt','updatedAt'],squel[_0xdbe9('0x6f')]()['field'](_0xdbe9('0x83'),'id')[_0xdbe9('0x70')](_0xdbe9('0x71'),_0xdbe9('0x6b'))['field'](_0xdbe9('0x84'),'phone')[_0xdbe9('0x70')](_0xdbe9('0x85'),_0xdbe9('0x82'))[_0xdbe9('0x70')]('\x27'+_0x1cc217+'\x27','createdAt')[_0xdbe9('0x70')]('\x27'+_0x1cc217+'\x27',_0xdbe9('0x6e'))[_0xdbe9('0x72')](_0xdbe9('0x86'),'ci')[_0xdbe9('0x87')](_0xdbe9('0x68'),'h',_0xdbe9('0x88'))[_0xdbe9('0x3f')](_0xdbe9('0x89'),_0x380824['CmListId'][_0xdbe9('0x77')]())[_0xdbe9('0x3f')](_0xdbe9('0x8a'),_0xbdafd0[_0xdbe9('0x48')]['id'][_0xdbe9('0x77')]())[_0xdbe9('0x3f')](_0xdbe9('0x8b'),_0x1cc217))[_0xdbe9('0x77')]();_0x5777d1[_0xdbe9('0x8c')](db[_0xdbe9('0x8d')]['query'](_0x593155));_0x3c840f[_0xdbe9('0x8c')](db[_0xdbe9('0x8d')][_0xdbe9('0x34')](_0x58c68b));}return BPromise[_0xdbe9('0x8e')](_0x5777d1);}})[_0xdbe9('0x25')](function(){return BPromise['all'](_0x3c840f);})[_0xdbe9('0x25')](function(){return _0x3cc3e0;})[_0xdbe9('0x25')](respondWithResult(_0x297afb,null))[_0xdbe9('0x46')](handleError(_0x297afb,null));};exports[_0xdbe9('0x8f')]=function(_0x2440fa,_0x219030,_0x1d7c0e){return db[_0xdbe9('0x2e')][_0xdbe9('0x4a')]({'where':{'id':_0x2440fa[_0xdbe9('0x48')]['id']}})['then'](handleEntityNotFound(_0x219030,null))[_0xdbe9('0x25')](function(_0x314fde){if(_0x314fde){return _0x314fde[_0xdbe9('0x8f')](_0x2440fa[_0xdbe9('0x34')][_0xdbe9('0x90')]);}})[_0xdbe9('0x25')](function(_0x268907){if(_0x268907){return db[_0xdbe9('0x58')][_0xdbe9('0x26')]({'where':{'ListId':_0x2440fa[_0xdbe9('0x34')][_0xdbe9('0x90')],'CampaignId':_0x2440fa[_0xdbe9('0x48')]['id']}})[_0xdbe9('0x25')](function(){return _0x268907;});}})[_0xdbe9('0x25')](respondWithStatusCode(_0x219030,null))[_0xdbe9('0x46')](handleError(_0x219030,null));};exports[_0xdbe9('0x91')]=function(_0x6531df,_0x38043a,_0x4fab87){var _0x32e853={};var _0x3cf12d={};var _0xd1ce06;var _0x536d52;return db[_0xdbe9('0x2e')][_0xdbe9('0x5c')]({'where':{'id':_0x6531df[_0xdbe9('0x48')]['id']}})['then'](handleEntityNotFound(_0x38043a,null))[_0xdbe9('0x25')](function(_0x5358ab){if(_0x5358ab){_0xd1ce06=_0x5358ab;_0x3cf12d[_0xdbe9('0x33')]=_[_0xdbe9('0x35')](db[_0xdbe9('0x62')][_0xdbe9('0x2f')]);_0x3cf12d[_0xdbe9('0x34')]=_[_0xdbe9('0x35')](_0x6531df['query']);_0x3cf12d[_0xdbe9('0x36')]=_[_0xdbe9('0x37')](_0x3cf12d[_0xdbe9('0x33')],_0x3cf12d[_0xdbe9('0x34')]);_0x32e853[_0xdbe9('0x38')]=_['intersection'](_0x3cf12d['model'],qs[_0xdbe9('0x39')](_0x6531df[_0xdbe9('0x34')]['fields']));_0x32e853[_0xdbe9('0x38')]=_0x32e853[_0xdbe9('0x38')][_0xdbe9('0x3a')]?_0x32e853[_0xdbe9('0x38')]:_0x3cf12d[_0xdbe9('0x33')];_0x32e853[_0xdbe9('0x3d')]=qs[_0xdbe9('0x3e')](_0x6531df[_0xdbe9('0x34')][_0xdbe9('0x3e')]);_0x32e853[_0xdbe9('0x3f')]=qs[_0xdbe9('0x36')](_[_0xdbe9('0x59')](_0x6531df[_0xdbe9('0x34')],_0x3cf12d['filters']));if(_0x6531df['query']['filter']){_0x32e853[_0xdbe9('0x3f')]=_['merge'](_0x32e853[_0xdbe9('0x3f')],{'$or':_[_0xdbe9('0x2d')](_0x32e853[_0xdbe9('0x38')],function(_0x1be149){var _0x571c82={};_0x571c82[_0x1be149]={'$like':'%'+_0x6531df[_0xdbe9('0x34')]['filter']+'%'};return _0x571c82;})});}_0x32e853=_[_0xdbe9('0x41')]({},_0x32e853,_0x6531df[_0xdbe9('0x49')]);return _0xd1ce06[_0xdbe9('0x91')](_0x32e853);}})[_0xdbe9('0x25')](function(_0x593c75){if(_0x593c75){_0x536d52=_0x593c75['length'];if(!_0x6531df[_0xdbe9('0x34')][_0xdbe9('0x3b')](_0xdbe9('0x3c'))){_0x32e853[_0xdbe9('0x1d')]=qs[_0xdbe9('0x1d')](_0x6531df[_0xdbe9('0x34')]['limit']);_0x32e853[_0xdbe9('0x1f')]=qs[_0xdbe9('0x1f')](_0x6531df[_0xdbe9('0x34')]['offset']);}return _0xd1ce06[_0xdbe9('0x91')](_0x32e853);}})['then'](function(_0x176a03){if(_0x176a03){return _0x176a03?{'count':_0x536d52,'rows':_0x176a03}:null;}})[_0xdbe9('0x25')](respondWithResult(_0x38043a,null))['catch'](handleError(_0x38043a,null));};exports[_0xdbe9('0x92')]=function(_0x593d94,_0x549fef,_0x20d616){var _0x452d41,_0x1b55f1;var _0x89f70a=[];var _0x44abf0=moment()[_0xdbe9('0x64')](_0xdbe9('0x65'));return db[_0xdbe9('0x2e')][_0xdbe9('0x4a')]({'where':{'id':_0x593d94[_0xdbe9('0x48')]['id']}})[_0xdbe9('0x25')](handleEntityNotFound(_0x549fef,null))['then'](function(_0x4db377){if(_0x4db377){_0x1b55f1=_0x4db377;return _0x4db377['addBlackLists'](_0x593d94['body'][_0xdbe9('0x90')],_[_0xdbe9('0x54')](_0x593d94[_0xdbe9('0x4b')],[_0xdbe9('0x90'),'id'])||{});}return null;})['spread'](function(_0x39bc00){var _0x5b9740;var _0x4cad4b;_0x452d41=_0x39bc00||[];var _0x31f97a=[];if(_0x39bc00){for(var _0x5cc3fa=0x0;_0x5cc3fa<_0x39bc00[_0xdbe9('0x3a')];_0x5cc3fa+=0x1){var _0x5411b7=_0x39bc00[_0x5cc3fa][_0xdbe9('0x27')]({'plain':!![]});_0x5b9740=squel[_0xdbe9('0x7e')]()[_0xdbe9('0x7f')](_0xdbe9('0x93'))[_0xdbe9('0x69')]([_0xdbe9('0x6a'),_0xdbe9('0x6c'),'ListId',_0xdbe9('0x5a'),_0xdbe9('0x55'),_0xdbe9('0x6e')],squel[_0xdbe9('0x6f')]()[_0xdbe9('0x70')](_0xdbe9('0x6a'),'phone')[_0xdbe9('0x70')]('id',_0xdbe9('0x6c'))[_0xdbe9('0x70')](_0x5411b7['CmListId'][_0xdbe9('0x77')](),_0xdbe9('0x6d'))[_0xdbe9('0x70')](_0x593d94[_0xdbe9('0x48')]['id']['toString'](),_0xdbe9('0x5a'))[_0xdbe9('0x70')](_0xdbe9('0x71'),'createdAt')['field'](_0xdbe9('0x71'),'updatedAt')[_0xdbe9('0x72')](_0xdbe9('0x73'))[_0xdbe9('0x3f')]('deletedAt\x20IS\x20NULL')[_0xdbe9('0x3f')](_0xdbe9('0x75'),_0x5411b7['CmListId']['toString']())[_0xdbe9('0x3f')](_0xdbe9('0x78')))[_0xdbe9('0x77')]();_0x31f97a[_0xdbe9('0x8c')](db[_0xdbe9('0x8d')][_0xdbe9('0x34')](_0x5b9740));}return BPromise[_0xdbe9('0x8e')](_0x31f97a);}})[_0xdbe9('0x25')](function(){return _0x452d41;})['then'](respondWithResult(_0x549fef,null))[_0xdbe9('0x46')](handleError(_0x549fef,null));};exports['removeBlackLists']=function(_0x5a0ba0,_0x3fbee2,_0x83740f){return db[_0xdbe9('0x2e')][_0xdbe9('0x4a')]({'where':{'id':_0x5a0ba0['params']['id']}})[_0xdbe9('0x25')](handleEntityNotFound(_0x3fbee2,null))[_0xdbe9('0x25')](function(_0x4d6582){if(_0x4d6582){return _0x4d6582[_0xdbe9('0x94')](_0x5a0ba0[_0xdbe9('0x34')][_0xdbe9('0x90')]);}})[_0xdbe9('0x25')](function(_0x546254){if(_0x546254){return db[_0xdbe9('0x60')][_0xdbe9('0x26')]({'where':{'ListId':_0x5a0ba0['query'][_0xdbe9('0x90')],'CampaignId':_0x5a0ba0[_0xdbe9('0x48')]['id']}})[_0xdbe9('0x25')](function(){return _0x546254;});}})[_0xdbe9('0x25')](respondWithStatusCode(_0x3fbee2,null))['catch'](handleError(_0x3fbee2,null));};
\ No newline at end of file
index 7dbd8f1..09b9c8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x12f688,_0x585c25){var _0x59c3de=function(_0x4ac301){while(--_0x4ac301){_0x12f688['push'](_0x12f688['shift']());}};_0x59c3de(++_0x585c25);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'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':'campaigns','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(_0xcb4af1,_0x1284e4){var _0x582348=function(_0x2b3e12){while(--_0x2b3e12){_0xcb4af1['push'](_0xcb4af1['shift']());}};_0x582348(++_0x1284e4);}(_0x7a54,0x106));var _0x47a5=function(_0x3e8411,_0x2c8259){_0x3e8411=_0x3e8411-0x0;var _0x4b8c67=_0x7a54[_0x3e8411];return _0x4b8c67;};'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 29cc5ea..996ac7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96a2=['jayson/promise','client','http','request','info','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','Campaign,\x20%s,\x20%s','message','GetCampaign','findAll','options','where','attributes','limit','include','map','model','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x149055,_0x42bd96){var _0x2862bf=function(_0x39a5dc){while(--_0x39a5dc){_0x149055['push'](_0x149055['shift']());}};_0x2862bf(++_0x42bd96);}(_0x96a2,0x96));var _0x296a=function(_0x4e7293,_0x54bffc){_0x4e7293=_0x4e7293-0x0;var _0x2a5ed7=_0x96a2[_0x4e7293];return _0x2a5ed7;};'use strict';var _=require(_0x296a('0x0'));var util=require('util');var moment=require(_0x296a('0x1'));var BPromise=require(_0x296a('0x2'));var rs=require(_0x296a('0x3'));var fs=require('fs');var Redis=require(_0x296a('0x4'));var db=require(_0x296a('0x5'))['db'];var utils=require(_0x296a('0x6'));var logger=require(_0x296a('0x7'))(_0x296a('0x8'));var config=require(_0x296a('0x9'));var jayson=require(_0x296a('0xa'));var client=jayson[_0x296a('0xb')][_0x296a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4eb919,_0x273b83,_0x3c3486){return new BPromise(function(_0x3a2b44,_0x17d4d2){return client[_0x296a('0xd')](_0x4eb919,_0x3c3486)['then'](function(_0x307644){logger[_0x296a('0xe')]('Campaign,\x20%s,\x20%s',_0x273b83,_0x296a('0xf'));logger[_0x296a('0x10')](_0x296a('0x11'),_0x273b83,_0x296a('0xf'),JSON[_0x296a('0x12')](_0x307644));if(_0x307644[_0x296a('0x13')]){if(_0x307644[_0x296a('0x13')]['code']===0x1f4){logger[_0x296a('0x13')](_0x296a('0x14'),_0x273b83,_0x307644[_0x296a('0x13')][_0x296a('0x15')]);return _0x17d4d2(_0x307644[_0x296a('0x13')]['message']);}logger[_0x296a('0x13')](_0x296a('0x14'),_0x273b83,_0x307644['error'][_0x296a('0x15')]);return _0x3a2b44(_0x307644[_0x296a('0x13')][_0x296a('0x15')]);}else{logger[_0x296a('0xe')](_0x296a('0x14'),_0x273b83,_0x296a('0xf'));_0x3a2b44(_0x307644['result'][_0x296a('0x15')]);}})['catch'](function(_0x55864e){logger['error'](_0x296a('0x14'),_0x273b83,_0x55864e);_0x17d4d2(_0x55864e);});});}exports[_0x296a('0x16')]=function(_0x2b82d6){var _0x55295f=this;return new Promise(function(_0x51ba98,_0x3e72fa){return db['Campaign'][_0x296a('0x17')]({'raw':_0x2b82d6[_0x296a('0x18')]?_0x2b82d6[_0x296a('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x2b82d6[_0x296a('0x18')]?_0x2b82d6[_0x296a('0x18')][_0x296a('0x19')]||null:null,'attributes':_0x2b82d6['options']?_0x2b82d6[_0x296a('0x18')][_0x296a('0x1a')]||null:null,'limit':_0x2b82d6['options']?_0x2b82d6['options'][_0x296a('0x1b')]||null:null,'include':_0x2b82d6[_0x296a('0x18')]?_0x2b82d6[_0x296a('0x18')][_0x296a('0x1c')]?_[_0x296a('0x1d')](_0x2b82d6[_0x296a('0x18')][_0x296a('0x1c')],function(_0x2cf007){return{'model':db[_0x2cf007[_0x296a('0x1e')]],'as':_0x2cf007['as'],'attributes':_0x2cf007[_0x296a('0x1a')],'include':_0x2cf007[_0x296a('0x1c')]?_[_0x296a('0x1d')](_0x2cf007[_0x296a('0x1c')],function(_0xf6b922){return{'model':db[_0xf6b922[_0x296a('0x1e')]],'as':_0xf6b922['as'],'attributes':_0xf6b922['attributes'],'include':_0xf6b922[_0x296a('0x1c')]?_[_0x296a('0x1d')](_0xf6b922['include'],function(_0x2c4bed){return{'model':db[_0x2c4bed[_0x296a('0x1e')]],'as':_0x2c4bed['as'],'attributes':_0x2c4bed[_0x296a('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x24b280){logger[_0x296a('0xe')]('GetCampaign',_0x2b82d6);logger['debug'](_0x296a('0x16'),_0x2b82d6,JSON[_0x296a('0x12')](_0x24b280));_0x51ba98(_0x24b280);})[_0x296a('0x1f')](function(_0x583548){logger['error'](_0x296a('0x16'),_0x583548[_0x296a('0x15')],_0x2b82d6);_0x3e72fa(_0x55295f[_0x296a('0x13')](0x1f4,_0x583548[_0x296a('0x15')]));});});};
\ No newline at end of file
+var _0xaf9b=['http','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetCampaign','findAll','options','where','attributes','limit','include','map','model','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x2555d0,_0x4150a6){var _0x3bb486=function(_0x1eb89f){while(--_0x1eb89f){_0x2555d0['push'](_0x2555d0['shift']());}};_0x3bb486(++_0x4150a6);}(_0xaf9b,0x1d7));var _0xbaf9=function(_0x4da71e,_0x45ea4c){_0x4da71e=_0x4da71e-0x0;var _0xc41b97=_0xaf9b[_0x4da71e];return _0xc41b97;};'use strict';var _=require(_0xbaf9('0x0'));var util=require('util');var moment=require(_0xbaf9('0x1'));var BPromise=require('bluebird');var rs=require(_0xbaf9('0x2'));var fs=require('fs');var Redis=require(_0xbaf9('0x3'));var db=require(_0xbaf9('0x4'))['db'];var utils=require(_0xbaf9('0x5'));var logger=require('../../config/logger')(_0xbaf9('0x6'));var config=require(_0xbaf9('0x7'));var jayson=require(_0xbaf9('0x8'));var client=jayson['client'][_0xbaf9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3578fd,_0x4db9a3,_0x4a8f38){return new BPromise(function(_0x1168ed,_0x24c9af){return client[_0xbaf9('0xa')](_0x3578fd,_0x4a8f38)[_0xbaf9('0xb')](function(_0x339d25){logger[_0xbaf9('0xc')](_0xbaf9('0xd'),_0x4db9a3,_0xbaf9('0xe'));logger[_0xbaf9('0xf')](_0xbaf9('0x10'),_0x4db9a3,_0xbaf9('0xe'),JSON[_0xbaf9('0x11')](_0x339d25));if(_0x339d25['error']){if(_0x339d25[_0xbaf9('0x12')][_0xbaf9('0x13')]===0x1f4){logger[_0xbaf9('0x12')](_0xbaf9('0xd'),_0x4db9a3,_0x339d25['error'][_0xbaf9('0x14')]);return _0x24c9af(_0x339d25[_0xbaf9('0x12')]['message']);}logger[_0xbaf9('0x12')](_0xbaf9('0xd'),_0x4db9a3,_0x339d25[_0xbaf9('0x12')]['message']);return _0x1168ed(_0x339d25['error'][_0xbaf9('0x14')]);}else{logger['info'](_0xbaf9('0xd'),_0x4db9a3,_0xbaf9('0xe'));_0x1168ed(_0x339d25[_0xbaf9('0x15')][_0xbaf9('0x14')]);}})['catch'](function(_0x58e49a){logger[_0xbaf9('0x12')](_0xbaf9('0xd'),_0x4db9a3,_0x58e49a);_0x24c9af(_0x58e49a);});});}exports[_0xbaf9('0x16')]=function(_0x125c7e){var _0x2c3ef6=this;return new Promise(function(_0x380f02,_0x1a1d1b){return db['Campaign'][_0xbaf9('0x17')]({'raw':_0x125c7e[_0xbaf9('0x18')]?_0x125c7e[_0xbaf9('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x125c7e[_0xbaf9('0x18')]?_0x125c7e[_0xbaf9('0x18')][_0xbaf9('0x19')]||null:null,'attributes':_0x125c7e['options']?_0x125c7e[_0xbaf9('0x18')][_0xbaf9('0x1a')]||null:null,'limit':_0x125c7e[_0xbaf9('0x18')]?_0x125c7e['options'][_0xbaf9('0x1b')]||null:null,'include':_0x125c7e[_0xbaf9('0x18')]?_0x125c7e['options'][_0xbaf9('0x1c')]?_[_0xbaf9('0x1d')](_0x125c7e[_0xbaf9('0x18')][_0xbaf9('0x1c')],function(_0x55bd2d){return{'model':db[_0x55bd2d[_0xbaf9('0x1e')]],'as':_0x55bd2d['as'],'attributes':_0x55bd2d[_0xbaf9('0x1a')],'include':_0x55bd2d['include']?_[_0xbaf9('0x1d')](_0x55bd2d[_0xbaf9('0x1c')],function(_0x135d46){return{'model':db[_0x135d46[_0xbaf9('0x1e')]],'as':_0x135d46['as'],'attributes':_0x135d46[_0xbaf9('0x1a')],'include':_0x135d46['include']?_[_0xbaf9('0x1d')](_0x135d46['include'],function(_0x2b9da3){return{'model':db[_0x2b9da3[_0xbaf9('0x1e')]],'as':_0x2b9da3['as'],'attributes':_0x2b9da3['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3d038e){logger[_0xbaf9('0xc')]('GetCampaign',_0x125c7e);logger[_0xbaf9('0xf')](_0xbaf9('0x16'),_0x125c7e,JSON['stringify'](_0x3d038e));_0x380f02(_0x3d038e);})[_0xbaf9('0x1f')](function(_0x11df41){logger['error'](_0xbaf9('0x16'),_0x11df41['message'],_0x125c7e);_0x1a1d1b(_0x2c3ef6['error'](0x1f4,_0x11df41[_0xbaf9('0x14')]));});});};
\ No newline at end of file
index f3b1b07..6710e8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf84=['/:id/clone','addLists','/:id/blacklists','addBlackLists','put','update','delete','destroy','removeBlackLists','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./campaign.controller','get','isAuthenticated','/:id','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists','getBlackLists','create'];(function(_0x1bd7b7,_0x18e7c4){var _0x46a408=function(_0x447563){while(--_0x447563){_0x1bd7b7['push'](_0x1bd7b7['shift']());}};_0x46a408(++_0x18e7c4);}(_0xcf84,0x175));var _0x4cf8=function(_0x10f5ea,_0xeb348a){_0x10f5ea=_0x10f5ea-0x0;var _0x5c4f0f=_0xcf84[_0x10f5ea];return _0x5c4f0f;};'use strict';var multer=require(_0x4cf8('0x0'));var util=require(_0x4cf8('0x1'));var path=require(_0x4cf8('0x2'));var timeout=require(_0x4cf8('0x3'));var express=require(_0x4cf8('0x4'));var router=express[_0x4cf8('0x5')]();var fs_extra=require(_0x4cf8('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x4cf8('0x7'));var config=require('../../config/environment');var controller=require(_0x4cf8('0x8'));router[_0x4cf8('0x9')]('/',auth[_0x4cf8('0xa')](),controller['index']);router['get'](_0x4cf8('0xb'),auth[_0x4cf8('0xa')](),controller['show']);router[_0x4cf8('0x9')](_0x4cf8('0xc'),auth[_0x4cf8('0xa')](),controller[_0x4cf8('0xd')]);router[_0x4cf8('0x9')](_0x4cf8('0xe'),auth[_0x4cf8('0xa')](),controller[_0x4cf8('0xf')]);router[_0x4cf8('0x9')]('/:id/hopper_finals',auth[_0x4cf8('0xa')](),controller[_0x4cf8('0x10')]);router[_0x4cf8('0x9')](_0x4cf8('0x11'),auth[_0x4cf8('0xa')](),controller[_0x4cf8('0x12')]);router[_0x4cf8('0x9')](_0x4cf8('0x13'),auth[_0x4cf8('0xa')](),controller[_0x4cf8('0x14')]);router[_0x4cf8('0x9')]('/:id/blacklists',auth[_0x4cf8('0xa')](),controller[_0x4cf8('0x15')]);router['post']('/',auth['isAuthenticated'](),controller[_0x4cf8('0x16')]);router['post'](_0x4cf8('0x17'),auth[_0x4cf8('0xa')](),controller['clone']);router['post']('/:id/lists',auth[_0x4cf8('0xa')](),controller[_0x4cf8('0x18')]);router['post'](_0x4cf8('0x19'),auth[_0x4cf8('0xa')](),controller[_0x4cf8('0x1a')]);router[_0x4cf8('0x1b')](_0x4cf8('0xb'),auth['isAuthenticated'](),controller[_0x4cf8('0x1c')]);router[_0x4cf8('0x1d')](_0x4cf8('0xb'),auth['isAuthenticated'](),controller[_0x4cf8('0x1e')]);router['delete'](_0x4cf8('0x13'),auth[_0x4cf8('0xa')](),controller['removeLists']);router[_0x4cf8('0x1d')](_0x4cf8('0x19'),auth[_0x4cf8('0xa')](),controller[_0x4cf8('0x1f')]);module[_0x4cf8('0x20')]=router;
\ No newline at end of file
+var _0xdc84=['getHopperBlacks','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','addLists','addBlackLists','put','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','get','isAuthenticated','index','/:id','show','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black'];(function(_0x4acac6,_0x4bbbd4){var _0x303b7b=function(_0x335202){while(--_0x335202){_0x4acac6['push'](_0x4acac6['shift']());}};_0x303b7b(++_0x4bbbd4);}(_0xdc84,0x1d5));var _0x4dc8=function(_0x376db5,_0x2b8874){_0x376db5=_0x376db5-0x0;var _0x304c17=_0xdc84[_0x376db5];return _0x304c17;};'use strict';var multer=require(_0x4dc8('0x0'));var util=require(_0x4dc8('0x1'));var path=require(_0x4dc8('0x2'));var timeout=require(_0x4dc8('0x3'));var express=require(_0x4dc8('0x4'));var router=express['Router']();var fs_extra=require(_0x4dc8('0x5'));var auth=require(_0x4dc8('0x6'));var interaction=require(_0x4dc8('0x7'));var config=require(_0x4dc8('0x8'));var controller=require(_0x4dc8('0x9'));router[_0x4dc8('0xa')]('/',auth[_0x4dc8('0xb')](),controller[_0x4dc8('0xc')]);router[_0x4dc8('0xa')](_0x4dc8('0xd'),auth[_0x4dc8('0xb')](),controller[_0x4dc8('0xe')]);router['get']('/:id/hoppers',auth[_0x4dc8('0xb')](),controller[_0x4dc8('0xf')]);router[_0x4dc8('0xa')](_0x4dc8('0x10'),auth[_0x4dc8('0xb')](),controller[_0x4dc8('0x11')]);router[_0x4dc8('0xa')](_0x4dc8('0x12'),auth['isAuthenticated'](),controller[_0x4dc8('0x13')]);router[_0x4dc8('0xa')](_0x4dc8('0x14'),auth[_0x4dc8('0xb')](),controller[_0x4dc8('0x15')]);router[_0x4dc8('0xa')](_0x4dc8('0x16'),auth[_0x4dc8('0xb')](),controller[_0x4dc8('0x17')]);router[_0x4dc8('0xa')](_0x4dc8('0x18'),auth[_0x4dc8('0xb')](),controller[_0x4dc8('0x19')]);router[_0x4dc8('0x1a')]('/',auth[_0x4dc8('0xb')](),controller[_0x4dc8('0x1b')]);router[_0x4dc8('0x1a')](_0x4dc8('0x1c'),auth[_0x4dc8('0xb')](),controller[_0x4dc8('0x1d')]);router[_0x4dc8('0x1a')](_0x4dc8('0x16'),auth[_0x4dc8('0xb')](),controller[_0x4dc8('0x1e')]);router[_0x4dc8('0x1a')]('/:id/blacklists',auth[_0x4dc8('0xb')](),controller[_0x4dc8('0x1f')]);router[_0x4dc8('0x20')]('/:id',auth[_0x4dc8('0xb')](),controller['update']);router['delete'](_0x4dc8('0xd'),auth['isAuthenticated'](),controller['destroy']);router[_0x4dc8('0x21')](_0x4dc8('0x16'),auth[_0x4dc8('0xb')](),controller['removeLists']);router[_0x4dc8('0x21')](_0x4dc8('0x18'),auth[_0x4dc8('0xb')](),controller['removeBlackLists']);module[_0x4dc8('0x22')]=router;
\ No newline at end of file
index 9528737..60481cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7a2=['STRING','TEXT','VIRTUAL','getDataValue','key','sequelize'];(function(_0x382b53,_0x537ee3){var _0x4c5d13=function(_0x31c046){while(--_0x31c046){_0x382b53['push'](_0x382b53['shift']());}};_0x4c5d13(++_0x537ee3);}(_0xa7a2,0x1cd));var _0x2a7a=function(_0x3db13d,_0x36dbed){_0x3db13d=_0x3db13d-0x0;var _0x1734b4=_0xa7a2[_0x3db13d];return _0x1734b4;};'use strict';var Sequelize=require(_0x2a7a('0x0'));module['exports']={'key':{'type':Sequelize[_0x2a7a('0x1')],'allowNull':![]},'value':{'type':Sequelize[_0x2a7a('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x2a7a('0x1')]},'name':{'type':Sequelize[_0x2a7a('0x3')],'get':function(){return this[_0x2a7a('0x4')](_0x2a7a('0x5'));}}};
\ No newline at end of file
+var _0x89ec=['exports','STRING','key','sequelize'];(function(_0x4a90e5,_0x203d75){var _0x1ac456=function(_0x597bed){while(--_0x597bed){_0x4a90e5['push'](_0x4a90e5['shift']());}};_0x1ac456(++_0x203d75);}(_0x89ec,0x143));var _0xc89e=function(_0x43ff1b,_0x4561b1){_0x43ff1b=_0x43ff1b-0x0;var _0x3f26a0=_0x89ec[_0x43ff1b];return _0x3f26a0;};'use strict';var Sequelize=require(_0xc89e('0x0'));module[_0xc89e('0x1')]={'key':{'type':Sequelize[_0xc89e('0x2')],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize[_0xc89e('0x2')]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue'](_0xc89e('0x3'));}}};
\ No newline at end of file
index b2595d2..ec08aac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07f7=['../../config/license/util','end','json','offset','undefined','limit','count','status','Content-Range','save','update','then','destroy','CannedAnswers','UserProfileResource','error','stack','send','index','map','CannedAnswer','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','where','pick','merge','filter','include','rows','catch','params','includeAll','find','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','userProfileId','autoAssociation','name','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x07f7,0xe8));var _0x707f=function(_0x401a4d,_0x4bb835){_0x401a4d=_0x401a4d-0x0;var _0x1faaff=_0x07f7[_0x401a4d];return _0x1faaff;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x707f('0x0'));var zipdir=require(_0x707f('0x1'));var jsonpatch=require(_0x707f('0x2'));var rp=require(_0x707f('0x3'));var moment=require('moment');var BPromise=require(_0x707f('0x4'));var Mustache=require(_0x707f('0x5'));var util=require(_0x707f('0x6'));var path=require(_0x707f('0x7'));var sox=require(_0x707f('0x8'));var csv=require(_0x707f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x707f('0xa'));var squel=require(_0x707f('0xb'));var crypto=require(_0x707f('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x707f('0x9'));var querystring=require(_0x707f('0xd'));var Papa=require(_0x707f('0xe'));var Redis=require(_0x707f('0xf'));var authService=require(_0x707f('0x10'));var qs=require(_0x707f('0x11'));var as=require(_0x707f('0x12'));var hardwareService=require(_0x707f('0x13'));var logger=require(_0x707f('0x14'))(_0x707f('0x15'));var utils=require(_0x707f('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x707f('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4b1ecc,_0x3bd0dd){_0x3bd0dd=_0x3bd0dd||0xcc;return function(_0x5d8935){if(_0x5d8935){return _0x4b1ecc['sendStatus'](_0x3bd0dd);}return _0x4b1ecc['status'](_0x3bd0dd)[_0x707f('0x18')]();};}function respondWithResult(_0x596d99,_0x162508){_0x162508=_0x162508||0xc8;return function(_0x25f73b){if(_0x25f73b){return _0x596d99['status'](_0x162508)[_0x707f('0x19')](_0x25f73b);}};}function respondWithFilteredResult(_0x46547f,_0x3fc8b1){return function(_0x5545ba){if(_0x5545ba){var _0x36ae06=typeof _0x3fc8b1[_0x707f('0x1a')]===_0x707f('0x1b')&&typeof _0x3fc8b1[_0x707f('0x1c')]===_0x707f('0x1b');var _0x47671b=_0x5545ba[_0x707f('0x1d')];var _0x42b162=_0x36ae06?0x0:_0x3fc8b1['offset'];var _0x184d96=_0x36ae06?_0x5545ba['count']:_0x3fc8b1[_0x707f('0x1a')]+_0x3fc8b1['limit'];var _0x337084;if(_0x184d96>=_0x47671b){_0x184d96=_0x47671b;_0x337084=0xc8;}else{_0x337084=0xce;}_0x46547f[_0x707f('0x1e')](_0x337084);return _0x46547f['set'](_0x707f('0x1f'),_0x42b162+'-'+_0x184d96+'/'+_0x47671b)['json'](_0x5545ba);}return null;};}function patchUpdates(_0xef0ee1){return function(_0x897991){try{jsonpatch['apply'](_0x897991,_0xef0ee1,!![]);}catch(_0x42a54d){return BPromise['reject'](_0x42a54d);}return _0x897991[_0x707f('0x20')]();};}function saveUpdates(_0x2ef77c,_0x31fdc1){return function(_0x3276f4){if(_0x3276f4){return _0x3276f4[_0x707f('0x21')](_0x2ef77c)[_0x707f('0x22')](function(_0x313e58){return _0x313e58;});}return null;};}function removeEntity(_0x4737fe,_0x31d273){return function(_0x16ee1f){if(_0x16ee1f){return _0x16ee1f[_0x707f('0x23')]()[_0x707f('0x22')](function(){var _0x3bea95=_0x16ee1f['get']({'plain':!![]});var _0x2e8f0a=_0x707f('0x24');return db[_0x707f('0x25')][_0x707f('0x23')]({'where':{'type':_0x2e8f0a,'resourceId':_0x3bea95['id']}})[_0x707f('0x22')](function(){return _0x16ee1f;});})['then'](function(){_0x4737fe['status'](0xcc)[_0x707f('0x18')]();});}};}function handleEntityNotFound(_0x16ff49,_0x4f6fb0){return function(_0x3d6657){if(!_0x3d6657){_0x16ff49['sendStatus'](0x194);}return _0x3d6657;};}function handleError(_0x4797e9,_0x30c9ee){_0x30c9ee=_0x30c9ee||0x1f4;return function(_0xc85d8b){logger[_0x707f('0x26')](_0xc85d8b[_0x707f('0x27')]);if(_0xc85d8b['name']){delete _0xc85d8b['name'];}_0x4797e9[_0x707f('0x1e')](_0x30c9ee)[_0x707f('0x28')](_0xc85d8b);};}exports[_0x707f('0x29')]=function(_0x22211e,_0xb472d2){var _0x5b68c7={},_0x43c6cd={},_0x258936={'count':0x0,'rows':[]};var _0x4ef159=_[_0x707f('0x2a')](db[_0x707f('0x2b')][_0x707f('0x2c')],function(_0x1c0a34){return{'name':_0x1c0a34[_0x707f('0x2d')],'type':_0x1c0a34[_0x707f('0x2e')][_0x707f('0x2f')]};});_0x43c6cd[_0x707f('0x30')]=_[_0x707f('0x2a')](_0x4ef159,'name');_0x43c6cd[_0x707f('0x31')]=_[_0x707f('0x32')](_0x22211e[_0x707f('0x31')]);_0x43c6cd[_0x707f('0x33')]=_['intersection'](_0x43c6cd[_0x707f('0x30')],_0x43c6cd['query']);_0x5b68c7[_0x707f('0x34')]=_[_0x707f('0x35')](_0x43c6cd['model'],qs[_0x707f('0x36')](_0x22211e['query'][_0x707f('0x36')]));_0x5b68c7['attributes']=_0x5b68c7['attributes'][_0x707f('0x37')]?_0x5b68c7[_0x707f('0x34')]:_0x43c6cd[_0x707f('0x30')];if(!_0x22211e['query'][_0x707f('0x38')](_0x707f('0x39'))){_0x5b68c7['limit']=qs['limit'](_0x22211e[_0x707f('0x31')][_0x707f('0x1c')]);_0x5b68c7['offset']=qs[_0x707f('0x1a')](_0x22211e[_0x707f('0x31')]['offset']);}_0x5b68c7[_0x707f('0x3a')]=qs['sort'](_0x22211e[_0x707f('0x31')]['sort']);_0x5b68c7[_0x707f('0x3b')]=qs[_0x707f('0x33')](_[_0x707f('0x3c')](_0x22211e[_0x707f('0x31')],_0x43c6cd[_0x707f('0x33')]),_0x4ef159);if(_0x22211e['query']['filter']){_0x5b68c7[_0x707f('0x3b')]=_[_0x707f('0x3d')](_0x5b68c7[_0x707f('0x3b')],{'$or':[{'key':{'$like':'%'+_0x22211e['query'][_0x707f('0x3e')]+'%'}},{'value':{'$like':'%'+_0x22211e[_0x707f('0x31')]['filter']+'%'}}]});}_0x5b68c7=_['merge']({},_0x5b68c7,_0x22211e['options']);var _0x20432b={'where':_0x5b68c7['where']};return db[_0x707f('0x2b')][_0x707f('0x1d')](_0x20432b)['then'](function(_0x536ddd){_0x258936['count']=_0x536ddd;if(_0x22211e[_0x707f('0x31')]['includeAll']){_0x5b68c7[_0x707f('0x3f')]=[{'all':!![]}];}return db[_0x707f('0x2b')]['findAll'](_0x5b68c7);})[_0x707f('0x22')](function(_0x9e8894){_0x258936[_0x707f('0x40')]=_0x9e8894;return _0x258936;})[_0x707f('0x22')](respondWithFilteredResult(_0xb472d2,_0x5b68c7))[_0x707f('0x41')](handleError(_0xb472d2,null));};exports['show']=function(_0x3e8218,_0x2d50f4){var _0x3d7694={'raw':!![],'where':{'id':_0x3e8218[_0x707f('0x42')]['id']}},_0xb51985={};_0xb51985[_0x707f('0x30')]=_[_0x707f('0x32')](db[_0x707f('0x2b')][_0x707f('0x2c')]);_0xb51985[_0x707f('0x31')]=_[_0x707f('0x32')](_0x3e8218['query']);_0xb51985[_0x707f('0x33')]=_[_0x707f('0x35')](_0xb51985[_0x707f('0x30')],_0xb51985[_0x707f('0x31')]);_0x3d7694[_0x707f('0x34')]=_[_0x707f('0x35')](_0xb51985[_0x707f('0x30')],qs[_0x707f('0x36')](_0x3e8218[_0x707f('0x31')][_0x707f('0x36')]));_0x3d7694[_0x707f('0x34')]=_0x3d7694[_0x707f('0x34')][_0x707f('0x37')]?_0x3d7694[_0x707f('0x34')]:_0xb51985[_0x707f('0x30')];if(_0x3e8218[_0x707f('0x31')][_0x707f('0x43')]){_0x3d7694[_0x707f('0x3f')]=[{'all':!![]}];}_0x3d7694=_[_0x707f('0x3d')]({},_0x3d7694,_0x3e8218['options']);return db[_0x707f('0x2b')][_0x707f('0x44')](_0x3d7694)['then'](handleEntityNotFound(_0x2d50f4,null))[_0x707f('0x22')](respondWithResult(_0x2d50f4,null))[_0x707f('0x41')](handleError(_0x2d50f4,null));};exports['update']=function(_0x59fb67,_0x53b5ef){if(_0x59fb67['body']['id']){delete _0x59fb67['body']['id'];}return db['CannedAnswer'][_0x707f('0x44')]({'where':{'id':_0x59fb67[_0x707f('0x42')]['id']}})[_0x707f('0x22')](handleEntityNotFound(_0x53b5ef,null))['then'](saveUpdates(_0x59fb67[_0x707f('0x45')],null))[_0x707f('0x22')](respondWithResult(_0x53b5ef,null))[_0x707f('0x41')](handleError(_0x53b5ef,null));};exports[_0x707f('0x23')]=function(_0x523cfe,_0x51a1ac){return db['CannedAnswer']['find']({'where':{'id':_0x523cfe[_0x707f('0x42')]['id']}})['then'](handleEntityNotFound(_0x51a1ac,null))['then'](removeEntity(_0x51a1ac,null))['catch'](handleError(_0x51a1ac,null));};exports[_0x707f('0x46')]=function(_0x84fefe,_0x360412){var _0x6cd4f2={'key':_0x84fefe[_0x707f('0x45')][_0x707f('0x2f')]};if(_0x84fefe['body'][_0x707f('0x47')]){_0x6cd4f2[_0x707f('0x47')]=_0x84fefe[_0x707f('0x45')][_0x707f('0x47')];}else if(_0x84fefe[_0x707f('0x45')][_0x707f('0x48')]){_0x6cd4f2[_0x707f('0x48')]=_0x84fefe[_0x707f('0x45')][_0x707f('0x48')];}else if(_0x84fefe[_0x707f('0x45')][_0x707f('0x49')]){_0x6cd4f2[_0x707f('0x49')]=_0x84fefe[_0x707f('0x45')][_0x707f('0x49')];}else if(_0x84fefe['body'][_0x707f('0x4a')]){_0x6cd4f2[_0x707f('0x4a')]=_0x84fefe[_0x707f('0x45')][_0x707f('0x4a')];}return db[_0x707f('0x2b')][_0x707f('0x44')]({'where':_0x6cd4f2})['then'](function(_0x122431){if(_0x122431){throw new db[(_0x707f('0x4b'))]['ValidationError']('The\x20inserted\x20key\x20already\x20exists.');}return db['CannedAnswer'][_0x707f('0x46')](_0x84fefe[_0x707f('0x45')]);})[_0x707f('0x22')](function(_0x4a7f41){var _0x4b4bea=_0x84fefe[_0x707f('0x4c')]['get']({'plain':!![]});if(!_0x4b4bea)throw new Error(_0x707f('0x4d'));if(_0x4b4bea[_0x707f('0x4e')]==='user'){var _0x39db84=_0x4a7f41[_0x707f('0x4f')]({'plain':!![]});return db[_0x707f('0x50')][_0x707f('0x44')]({'where':{'name':_0x707f('0x24'),'userProfileId':_0x4b4bea[_0x707f('0x51')]},'raw':!![]})[_0x707f('0x22')](function(_0x5e55f1){if(_0x5e55f1&&_0x5e55f1[_0x707f('0x52')]===0x0){return db[_0x707f('0x25')][_0x707f('0x46')]({'name':_0x39db84['name'],'resourceId':_0x39db84['id'],'type':_0x5e55f1[_0x707f('0x53')],'sectionId':_0x5e55f1['id']},{})['then'](function(){return _0x4a7f41;});}else{return _0x4a7f41;}})['catch'](function(_0x12e4e4){logger['error'](_0x707f('0x54'),_0x12e4e4);throw _0x12e4e4;});}return _0x4a7f41;})[_0x707f('0x22')](respondWithResult(_0x360412,0xc9))[_0x707f('0x41')](handleError(_0x360412,null));};
\ No newline at end of file
+var _0x7883=['then','destroy','get','CannedAnswers','UserProfileResource','sendStatus','error','stack','name','index','map','CannedAnswer','fieldName','type','key','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','includeAll','include','findAll','rows','params','rawAttributes','keys','options','find','body','catch','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','ValidationError','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','create','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','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','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update'];(function(_0x46a6ef,_0x4aba4e){var _0xf92c60=function(_0x49d803){while(--_0x49d803){_0x46a6ef['push'](_0x46a6ef['shift']());}};_0xf92c60(++_0x4aba4e);}(_0x7883,0x13a));var _0x3788=function(_0xd916ee,_0x3b6118){_0xd916ee=_0xd916ee-0x0;var _0x2116e7=_0x7883[_0xd916ee];return _0x2116e7;};'use strict';var emlformat=require(_0x3788('0x0'));var rimraf=require(_0x3788('0x1'));var zipdir=require(_0x3788('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x3788('0x3'));var BPromise=require(_0x3788('0x4'));var Mustache=require(_0x3788('0x5'));var util=require(_0x3788('0x6'));var path=require('path');var sox=require(_0x3788('0x7'));var csv=require(_0x3788('0x8'));var ejs=require(_0x3788('0x9'));var fs=require('fs');var fs_extra=require(_0x3788('0xa'));var _=require(_0x3788('0xb'));var squel=require('squel');var crypto=require(_0x3788('0xc'));var jsforce=require(_0x3788('0xd'));var deskjs=require(_0x3788('0xe'));var toCsv=require(_0x3788('0x8'));var querystring=require('querystring');var Papa=require(_0x3788('0xf'));var Redis=require(_0x3788('0x10'));var authService=require(_0x3788('0x11'));var qs=require(_0x3788('0x12'));var as=require(_0x3788('0x13'));var hardwareService=require(_0x3788('0x14'));var logger=require(_0x3788('0x15'))('api');var utils=require(_0x3788('0x16'));var config=require(_0x3788('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x3788('0x18'))['db'];function respondWithStatusCode(_0x9fa0a4,_0x43ee6f){_0x43ee6f=_0x43ee6f||0xcc;return function(_0x1438fe){if(_0x1438fe){return _0x9fa0a4['sendStatus'](_0x43ee6f);}return _0x9fa0a4[_0x3788('0x19')](_0x43ee6f)[_0x3788('0x1a')]();};}function respondWithResult(_0x50416e,_0xe69f74){_0xe69f74=_0xe69f74||0xc8;return function(_0x19a10d){if(_0x19a10d){return _0x50416e['status'](_0xe69f74)[_0x3788('0x1b')](_0x19a10d);}};}function respondWithFilteredResult(_0x252696,_0x25cc02){return function(_0x22bc01){if(_0x22bc01){var _0x3666a6=typeof _0x25cc02['offset']==='undefined'&&typeof _0x25cc02[_0x3788('0x1c')]===_0x3788('0x1d');var _0x1b6124=_0x22bc01[_0x3788('0x1e')];var _0x404350=_0x3666a6?0x0:_0x25cc02[_0x3788('0x1f')];var _0x15704d=_0x3666a6?_0x22bc01[_0x3788('0x1e')]:_0x25cc02[_0x3788('0x1f')]+_0x25cc02[_0x3788('0x1c')];var _0x3859c7;if(_0x15704d>=_0x1b6124){_0x15704d=_0x1b6124;_0x3859c7=0xc8;}else{_0x3859c7=0xce;}_0x252696[_0x3788('0x19')](_0x3859c7);return _0x252696[_0x3788('0x20')](_0x3788('0x21'),_0x404350+'-'+_0x15704d+'/'+_0x1b6124)[_0x3788('0x1b')](_0x22bc01);}return null;};}function patchUpdates(_0x23ade5){return function(_0x5e474e){try{jsonpatch[_0x3788('0x22')](_0x5e474e,_0x23ade5,!![]);}catch(_0x368203){return BPromise[_0x3788('0x23')](_0x368203);}return _0x5e474e[_0x3788('0x24')]();};}function saveUpdates(_0x514449,_0xa18ab5){return function(_0x1fb150){if(_0x1fb150){return _0x1fb150[_0x3788('0x25')](_0x514449)[_0x3788('0x26')](function(_0x2569bc){return _0x2569bc;});}return null;};}function removeEntity(_0x542ca3,_0x53ba14){return function(_0x39a95e){if(_0x39a95e){return _0x39a95e[_0x3788('0x27')]()[_0x3788('0x26')](function(){var _0x4c29f3=_0x39a95e[_0x3788('0x28')]({'plain':!![]});var _0x16d5ae=_0x3788('0x29');return db[_0x3788('0x2a')][_0x3788('0x27')]({'where':{'type':_0x16d5ae,'resourceId':_0x4c29f3['id']}})[_0x3788('0x26')](function(){return _0x39a95e;});})[_0x3788('0x26')](function(){_0x542ca3[_0x3788('0x19')](0xcc)[_0x3788('0x1a')]();});}};}function handleEntityNotFound(_0x290935,_0x26cc28){return function(_0x17e6c6){if(!_0x17e6c6){_0x290935[_0x3788('0x2b')](0x194);}return _0x17e6c6;};}function handleError(_0x632332,_0x467fcd){_0x467fcd=_0x467fcd||0x1f4;return function(_0x31f291){logger[_0x3788('0x2c')](_0x31f291[_0x3788('0x2d')]);if(_0x31f291['name']){delete _0x31f291[_0x3788('0x2e')];}_0x632332['status'](_0x467fcd)['send'](_0x31f291);};}exports[_0x3788('0x2f')]=function(_0x45d427,_0x30f71d){var _0x90c9ea={},_0x398819={},_0x3fcff0={'count':0x0,'rows':[]};var _0x4f53af=_[_0x3788('0x30')](db[_0x3788('0x31')]['rawAttributes'],function(_0x2e47ba){return{'name':_0x2e47ba[_0x3788('0x32')],'type':_0x2e47ba[_0x3788('0x33')][_0x3788('0x34')]};});_0x398819['model']=_[_0x3788('0x30')](_0x4f53af,_0x3788('0x2e'));_0x398819[_0x3788('0x35')]=_['keys'](_0x45d427[_0x3788('0x35')]);_0x398819[_0x3788('0x36')]=_[_0x3788('0x37')](_0x398819['model'],_0x398819['query']);_0x90c9ea[_0x3788('0x38')]=_[_0x3788('0x37')](_0x398819[_0x3788('0x39')],qs[_0x3788('0x3a')](_0x45d427[_0x3788('0x35')][_0x3788('0x3a')]));_0x90c9ea['attributes']=_0x90c9ea[_0x3788('0x38')][_0x3788('0x3b')]?_0x90c9ea[_0x3788('0x38')]:_0x398819['model'];if(!_0x45d427['query'][_0x3788('0x3c')](_0x3788('0x3d'))){_0x90c9ea[_0x3788('0x1c')]=qs['limit'](_0x45d427[_0x3788('0x35')]['limit']);_0x90c9ea[_0x3788('0x1f')]=qs[_0x3788('0x1f')](_0x45d427['query'][_0x3788('0x1f')]);}_0x90c9ea[_0x3788('0x3e')]=qs[_0x3788('0x3f')](_0x45d427[_0x3788('0x35')][_0x3788('0x3f')]);_0x90c9ea[_0x3788('0x40')]=qs['filters'](_['pick'](_0x45d427[_0x3788('0x35')],_0x398819[_0x3788('0x36')]),_0x4f53af);if(_0x45d427['query'][_0x3788('0x41')]){_0x90c9ea[_0x3788('0x40')]=_[_0x3788('0x42')](_0x90c9ea[_0x3788('0x40')],{'$or':[{'key':{'$like':'%'+_0x45d427['query'][_0x3788('0x41')]+'%'}},{'value':{'$like':'%'+_0x45d427[_0x3788('0x35')]['filter']+'%'}}]});}_0x90c9ea=_[_0x3788('0x42')]({},_0x90c9ea,_0x45d427['options']);var _0x40f7ca={'where':_0x90c9ea['where']};return db['CannedAnswer'][_0x3788('0x1e')](_0x40f7ca)['then'](function(_0x31363c){_0x3fcff0['count']=_0x31363c;if(_0x45d427[_0x3788('0x35')][_0x3788('0x43')]){_0x90c9ea[_0x3788('0x44')]=[{'all':!![]}];}return db[_0x3788('0x31')][_0x3788('0x45')](_0x90c9ea);})[_0x3788('0x26')](function(_0x2c7c03){_0x3fcff0[_0x3788('0x46')]=_0x2c7c03;return _0x3fcff0;})['then'](respondWithFilteredResult(_0x30f71d,_0x90c9ea))['catch'](handleError(_0x30f71d,null));};exports['show']=function(_0x7d30f6,_0x393cfe){var _0x46a851={'raw':!![],'where':{'id':_0x7d30f6[_0x3788('0x47')]['id']}},_0x32bcbd={};_0x32bcbd[_0x3788('0x39')]=_['keys'](db[_0x3788('0x31')][_0x3788('0x48')]);_0x32bcbd[_0x3788('0x35')]=_[_0x3788('0x49')](_0x7d30f6['query']);_0x32bcbd[_0x3788('0x36')]=_[_0x3788('0x37')](_0x32bcbd[_0x3788('0x39')],_0x32bcbd[_0x3788('0x35')]);_0x46a851[_0x3788('0x38')]=_[_0x3788('0x37')](_0x32bcbd['model'],qs[_0x3788('0x3a')](_0x7d30f6[_0x3788('0x35')][_0x3788('0x3a')]));_0x46a851[_0x3788('0x38')]=_0x46a851[_0x3788('0x38')][_0x3788('0x3b')]?_0x46a851[_0x3788('0x38')]:_0x32bcbd[_0x3788('0x39')];if(_0x7d30f6[_0x3788('0x35')]['includeAll']){_0x46a851[_0x3788('0x44')]=[{'all':!![]}];}_0x46a851=_['merge']({},_0x46a851,_0x7d30f6[_0x3788('0x4a')]);return db[_0x3788('0x31')][_0x3788('0x4b')](_0x46a851)[_0x3788('0x26')](handleEntityNotFound(_0x393cfe,null))[_0x3788('0x26')](respondWithResult(_0x393cfe,null))['catch'](handleError(_0x393cfe,null));};exports[_0x3788('0x25')]=function(_0x270b52,_0x4b6ef1){if(_0x270b52[_0x3788('0x4c')]['id']){delete _0x270b52[_0x3788('0x4c')]['id'];}return db[_0x3788('0x31')][_0x3788('0x4b')]({'where':{'id':_0x270b52[_0x3788('0x47')]['id']}})[_0x3788('0x26')](handleEntityNotFound(_0x4b6ef1,null))[_0x3788('0x26')](saveUpdates(_0x270b52[_0x3788('0x4c')],null))['then'](respondWithResult(_0x4b6ef1,null))[_0x3788('0x4d')](handleError(_0x4b6ef1,null));};exports[_0x3788('0x27')]=function(_0x47aa42,_0xbbb241){return db[_0x3788('0x31')]['find']({'where':{'id':_0x47aa42[_0x3788('0x47')]['id']}})[_0x3788('0x26')](handleEntityNotFound(_0xbbb241,null))[_0x3788('0x26')](removeEntity(_0xbbb241,null))[_0x3788('0x4d')](handleError(_0xbbb241,null));};exports['create']=function(_0x1e8e27,_0x43839a){var _0x534640={'key':_0x1e8e27[_0x3788('0x4c')][_0x3788('0x34')]};if(_0x1e8e27[_0x3788('0x4c')][_0x3788('0x4e')]){_0x534640[_0x3788('0x4e')]=_0x1e8e27[_0x3788('0x4c')][_0x3788('0x4e')];}else if(_0x1e8e27['body'][_0x3788('0x4f')]){_0x534640[_0x3788('0x4f')]=_0x1e8e27['body'][_0x3788('0x4f')];}else if(_0x1e8e27[_0x3788('0x4c')][_0x3788('0x50')]){_0x534640[_0x3788('0x50')]=_0x1e8e27[_0x3788('0x4c')]['OpenchannelAccountId'];}else if(_0x1e8e27[_0x3788('0x4c')][_0x3788('0x51')]){_0x534640[_0x3788('0x51')]=_0x1e8e27[_0x3788('0x4c')]['ChatWebsiteId'];}return db[_0x3788('0x31')][_0x3788('0x4b')]({'where':_0x534640})[_0x3788('0x26')](function(_0x1d1b4e){if(_0x1d1b4e){throw new db['Sequelize'][(_0x3788('0x52'))]('The\x20inserted\x20key\x20already\x20exists.');}return db[_0x3788('0x31')]['create'](_0x1e8e27['body']);})[_0x3788('0x26')](function(_0x1590dd){var _0x467baa=_0x1e8e27[_0x3788('0x53')]['get']({'plain':!![]});if(!_0x467baa)throw new Error(_0x3788('0x54'));if(_0x467baa['role']==='user'){var _0x426b17=_0x1590dd['get']({'plain':!![]});return db[_0x3788('0x55')][_0x3788('0x4b')]({'where':{'name':'CannedAnswers','userProfileId':_0x467baa[_0x3788('0x56')]},'raw':!![]})[_0x3788('0x26')](function(_0x14c230){if(_0x14c230&&_0x14c230['autoAssociation']===0x0){return db[_0x3788('0x2a')][_0x3788('0x57')]({'name':_0x426b17[_0x3788('0x2e')],'resourceId':_0x426b17['id'],'type':_0x14c230[_0x3788('0x2e')],'sectionId':_0x14c230['id']},{})['then'](function(){return _0x1590dd;});}else{return _0x1590dd;}})['catch'](function(_0x241e7a){logger[_0x3788('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x241e7a);throw _0x241e7a;});}return _0x1590dd;})['then'](respondWithResult(_0x43839a,0xc9))[_0x3788('0x4d')](handleError(_0x43839a,null));};
\ No newline at end of file
index e4465fb..0f2aea6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf816=['util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','exports','CannedAnswer','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x2f71f6,_0x3a1f4d){var _0x2b23ea=function(_0x285980){while(--_0x285980){_0x2f71f6['push'](_0x2f71f6['shift']());}};_0x2b23ea(++_0x3a1f4d);}(_0xf816,0x11d));var _0x6f81=function(_0x2dd94b,_0x5524c3){_0x2dd94b=_0x2dd94b-0x0;var _0x4f02fd=_0xf816[_0x2dd94b];return _0x4f02fd;};'use strict';var _=require(_0x6f81('0x0'));var util=require(_0x6f81('0x1'));var logger=require(_0x6f81('0x2'))(_0x6f81('0x3'));var moment=require('moment');var BPromise=require(_0x6f81('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6f81('0x5'));var rimraf=require(_0x6f81('0x6'));var config=require(_0x6f81('0x7'));var attributes=require('./cannedAnswer.attributes');module[_0x6f81('0x8')]=function(_0x4350ba,_0x292b4d){return _0x4350ba['define'](_0x6f81('0x9'),attributes,{'tableName':_0x6f81('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6f81('0xb'),'collate':_0x6f81('0xc')});};
\ No newline at end of file
+var _0xbedc=['bluebird','path','rimraf','../../config/environment','./cannedAnswer.attributes','exports','define','CannedAnswer','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api'];(function(_0x33707d,_0x41f2f6){var _0x2ccad1=function(_0x2d03f5){while(--_0x2d03f5){_0x33707d['push'](_0x33707d['shift']());}};_0x2ccad1(++_0x41f2f6);}(_0xbedc,0x10a));var _0xcbed=function(_0x57225f,_0x4ead47){_0x57225f=_0x57225f-0x0;var _0x16b844=_0xbedc[_0x57225f];return _0x16b844;};'use strict';var _=require(_0xcbed('0x0'));var util=require(_0xcbed('0x1'));var logger=require(_0xcbed('0x2'))(_0xcbed('0x3'));var moment=require('moment');var BPromise=require(_0xcbed('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcbed('0x5'));var rimraf=require(_0xcbed('0x6'));var config=require(_0xcbed('0x7'));var attributes=require(_0xcbed('0x8'));module[_0xcbed('0x9')]=function(_0x1b83f8,_0x404a3e){return _0x1b83f8[_0xcbed('0xa')](_0xcbed('0xb'),attributes,{'tableName':_0xcbed('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xcbed('0xd'),'collate':_0xcbed('0xe')});};
\ No newline at end of file
index 1b834ae..a6a0118 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(_0x12a030,_0xb7a27f){var _0xcb6d8a=function(_0x8fabfd){while(--_0x8fabfd){_0x12a030['push'](_0x12a030['shift']());}};_0xcb6d8a(++_0xb7a27f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'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(_0x3e7216,_0x57eeae){var _0x166cc8=function(_0x5ef6f6){while(--_0x5ef6f6){_0x3e7216['push'](_0x3e7216['shift']());}};_0x166cc8(++_0x57eeae);}(_0xa9e0,0x123));var _0x0a9e=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xa9e0[_0x433a86];return _0x23000c;};'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 9827c8c..1b3dd3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93a6=['exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x93a6,0x1dc));var _0x693a=function(_0x3bfe11,_0x573678){_0x3bfe11=_0x3bfe11-0x0;var _0x19f6b2=_0x93a6[_0x3bfe11];return _0x19f6b2;};'use strict';var multer=require('multer');var util=require(_0x693a('0x0'));var path=require(_0x693a('0x1'));var timeout=require(_0x693a('0x2'));var express=require(_0x693a('0x3'));var router=express['Router']();var fs_extra=require(_0x693a('0x4'));var auth=require(_0x693a('0x5'));var interaction=require(_0x693a('0x6'));var config=require(_0x693a('0x7'));var controller=require('./cannedAnswer.controller');router[_0x693a('0x8')]('/',auth[_0x693a('0x9')](),controller[_0x693a('0xa')]);router[_0x693a('0x8')](_0x693a('0xb'),auth[_0x693a('0x9')](),controller[_0x693a('0xc')]);router[_0x693a('0xd')]('/',auth[_0x693a('0x9')](),controller[_0x693a('0xe')]);router[_0x693a('0xf')]('/:id',auth[_0x693a('0x9')](),controller['update']);router[_0x693a('0x10')](_0x693a('0xb'),auth[_0x693a('0x9')](),controller[_0x693a('0x11')]);module[_0x693a('0x12')]=router;
\ No newline at end of file
+var _0x9b6d=['../../config/environment','./cannedAnswer.controller','get','isAuthenticated','index','show','create','/:id','update','delete','destroy','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x163454,_0x3e5ba3){var _0x2693fb=function(_0x557e8a){while(--_0x557e8a){_0x163454['push'](_0x163454['shift']());}};_0x2693fb(++_0x3e5ba3);}(_0x9b6d,0x17b));var _0xd9b6=function(_0x5da2cd,_0x3078ad){_0x5da2cd=_0x5da2cd-0x0;var _0x5ce8b4=_0x9b6d[_0x5da2cd];return _0x5ce8b4;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xd9b6('0x0'));var express=require(_0xd9b6('0x1'));var router=express[_0xd9b6('0x2')]();var fs_extra=require(_0xd9b6('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xd9b6('0x4'));var config=require(_0xd9b6('0x5'));var controller=require(_0xd9b6('0x6'));router[_0xd9b6('0x7')]('/',auth[_0xd9b6('0x8')](),controller[_0xd9b6('0x9')]);router[_0xd9b6('0x7')]('/:id',auth[_0xd9b6('0x8')](),controller[_0xd9b6('0xa')]);router['post']('/',auth[_0xd9b6('0x8')](),controller[_0xd9b6('0xb')]);router['put'](_0xd9b6('0xc'),auth[_0xd9b6('0x8')](),controller[_0xd9b6('0xd')]);router[_0xd9b6('0xe')](_0xd9b6('0xc'),auth['isAuthenticated'](),controller[_0xd9b6('0xf')]);module['exports']=router;
\ No newline at end of file
index 52a24a8..5428d01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0911=['exports','DATE','1970-01-01\x2000:00:01','STRING','INTEGER','sequelize'];(function(_0x307f39,_0x4cbe4b){var _0x15fa1b=function(_0x26e358){while(--_0x26e358){_0x307f39['push'](_0x307f39['shift']());}};_0x15fa1b(++_0x4cbe4b);}(_0x0911,0x1a9));var _0x1091=function(_0x435b2f,_0x4c44da){_0x435b2f=_0x435b2f-0x0;var _0x181648=_0x0911[_0x435b2f];return _0x181648;};'use strict';var Sequelize=require(_0x1091('0x0'));module[_0x1091('0x1')]={'calldate':{'type':Sequelize[_0x1091('0x2')],'allowNull':![],'defaultValue':_0x1091('0x3')},'clid':{'type':Sequelize[_0x1091('0x4')]},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize[_0x1091('0x4')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x1091('0x4')]},'dstchannel':{'type':Sequelize[_0x1091('0x4')]},'lastapp':{'type':Sequelize[_0x1091('0x4')]},'lastdata':{'type':Sequelize[_0x1091('0x4')]},'duration':{'type':Sequelize[_0x1091('0x5')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x1091('0x5')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x1091('0x4')]},'amaflags':{'type':Sequelize[_0x1091('0x5')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x1091('0x4')]},'userfield':{'type':Sequelize[_0x1091('0x4')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0x1091('0x4')]},'sequence':{'type':Sequelize[_0x1091('0x4')]},'peeraccount':{'type':Sequelize[_0x1091('0x4')]},'type':{'type':Sequelize[_0x1091('0x4')]},'tag':{'type':Sequelize[_0x1091('0x4')]}};
\ No newline at end of file
+var _0x3cd1=['DATE','1970-01-01\x2000:00:01','STRING','INTEGER','exports'];(function(_0x187361,_0x35d9b2){var _0x3fe57c=function(_0xf0d0a){while(--_0xf0d0a){_0x187361['push'](_0x187361['shift']());}};_0x3fe57c(++_0x35d9b2);}(_0x3cd1,0x112));var _0x13cd=function(_0xf9c034,_0x371eb7){_0xf9c034=_0xf9c034-0x0;var _0x49f933=_0x3cd1[_0xf9c034];return _0x49f933;};'use strict';var Sequelize=require('sequelize');module[_0x13cd('0x0')]={'calldate':{'type':Sequelize[_0x13cd('0x1')],'allowNull':![],'defaultValue':_0x13cd('0x2')},'clid':{'type':Sequelize[_0x13cd('0x3')]},'src':{'type':Sequelize[_0x13cd('0x3')]},'dst':{'type':Sequelize[_0x13cd('0x3')]},'dcontext':{'type':Sequelize[_0x13cd('0x3')]},'channel':{'type':Sequelize[_0x13cd('0x3')]},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize[_0x13cd('0x3')]},'lastdata':{'type':Sequelize[_0x13cd('0x3')]},'duration':{'type':Sequelize[_0x13cd('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x13cd('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x13cd('0x3')]},'userfield':{'type':Sequelize[_0x13cd('0x3')]},'uniqueid':{'type':Sequelize[_0x13cd('0x3')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0x13cd('0x3')]},'peeraccount':{'type':Sequelize[_0x13cd('0x3')]},'type':{'type':Sequelize[_0x13cd('0x3')]},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e329344..d8f9a9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x126e=['../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','Cdr','rawAttributes','type','model','map','keys','query','filters','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','include','show','params','intersection','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0x4350aa,_0x3cca8){var _0x55dc32=function(_0x56c4be){while(--_0x56c4be){_0x4350aa['push'](_0x4350aa['shift']());}};_0x55dc32(++_0x3cca8);}(_0x126e,0x108));var _0xe126=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x126e[_0x5bd426];return _0x23a7eb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe126('0x0'));var zipdir=require(_0xe126('0x1'));var jsonpatch=require(_0xe126('0x2'));var rp=require(_0xe126('0x3'));var moment=require(_0xe126('0x4'));var BPromise=require(_0xe126('0x5'));var Mustache=require('mustache');var util=require(_0xe126('0x6'));var path=require(_0xe126('0x7'));var sox=require(_0xe126('0x8'));var csv=require(_0xe126('0x9'));var ejs=require(_0xe126('0xa'));var fs=require('fs');var fs_extra=require(_0xe126('0xb'));var _=require(_0xe126('0xc'));var squel=require('squel');var crypto=require(_0xe126('0xd'));var jsforce=require(_0xe126('0xe'));var deskjs=require(_0xe126('0xf'));var toCsv=require(_0xe126('0x9'));var querystring=require(_0xe126('0x10'));var Papa=require('papaparse');var Redis=require(_0xe126('0x11'));var authService=require(_0xe126('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xe126('0x13'));var hardwareService=require(_0xe126('0x14'));var logger=require('../../config/logger')(_0xe126('0x15'));var utils=require('../../config/utils');var config=require(_0xe126('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe126('0x17'))['db'];function respondWithStatusCode(_0x34ae06,_0x23ff02){_0x23ff02=_0x23ff02||0xcc;return function(_0x38b8c3){if(_0x38b8c3){return _0x34ae06[_0xe126('0x18')](_0x23ff02);}return _0x34ae06[_0xe126('0x19')](_0x23ff02)[_0xe126('0x1a')]();};}function respondWithResult(_0x55f10a,_0xd55baf){_0xd55baf=_0xd55baf||0xc8;return function(_0x1c02c9){if(_0x1c02c9){return _0x55f10a['status'](_0xd55baf)[_0xe126('0x1b')](_0x1c02c9);}};}function respondWithFilteredResult(_0x28d7dd,_0x10bc24){return function(_0x38b0c0){if(_0x38b0c0){var _0x5e52d1=typeof _0x10bc24[_0xe126('0x1c')]===_0xe126('0x1d')&&typeof _0x10bc24[_0xe126('0x1e')]==='undefined';var _0x2b0baa=_0x38b0c0['count'];var _0x46c98a=_0x5e52d1?0x0:_0x10bc24[_0xe126('0x1c')];var _0x19b0a3=_0x5e52d1?_0x38b0c0[_0xe126('0x1f')]:_0x10bc24[_0xe126('0x1c')]+_0x10bc24[_0xe126('0x1e')];var _0x20874b;if(_0x19b0a3>=_0x2b0baa){_0x19b0a3=_0x2b0baa;_0x20874b=0xc8;}else{_0x20874b=0xce;}_0x28d7dd[_0xe126('0x19')](_0x20874b);return _0x28d7dd['set'](_0xe126('0x20'),_0x46c98a+'-'+_0x19b0a3+'/'+_0x2b0baa)[_0xe126('0x1b')](_0x38b0c0);}return null;};}function patchUpdates(_0x35ab64){return function(_0x2e5617){try{jsonpatch[_0xe126('0x21')](_0x2e5617,_0x35ab64,!![]);}catch(_0x24076e){return BPromise[_0xe126('0x22')](_0x24076e);}return _0x2e5617[_0xe126('0x23')]();};}function saveUpdates(_0x5257bc,_0x4a1a97){return function(_0xdb6544){if(_0xdb6544){return _0xdb6544[_0xe126('0x24')](_0x5257bc)[_0xe126('0x25')](function(_0x5f1ce1){return _0x5f1ce1;});}return null;};}function removeEntity(_0x5381e1,_0x47f179){return function(_0x4807d3){if(_0x4807d3){return _0x4807d3[_0xe126('0x26')]()['then'](function(){_0x5381e1[_0xe126('0x19')](0xcc)[_0xe126('0x1a')]();});}};}function handleEntityNotFound(_0x4157ed,_0x1674c9){return function(_0x532409){if(!_0x532409){_0x4157ed['sendStatus'](0x194);}return _0x532409;};}function handleError(_0x26482f,_0x4facea){_0x4facea=_0x4facea||0x1f4;return function(_0x3f5de5){logger[_0xe126('0x27')](_0x3f5de5[_0xe126('0x28')]);if(_0x3f5de5['name']){delete _0x3f5de5[_0xe126('0x29')];}_0x26482f[_0xe126('0x19')](_0x4facea)['send'](_0x3f5de5);};}exports[_0xe126('0x2a')]=function(_0x259059,_0x5a8b2a){var _0x9d9e28={},_0x1fb354={},_0x29dec4={'count':0x0,'rows':[]};var _0x181ccc=_['map'](db[_0xe126('0x2b')][_0xe126('0x2c')],function(_0x5e7bab){return{'name':_0x5e7bab['fieldName'],'type':_0x5e7bab[_0xe126('0x2d')]['key']};});_0x1fb354[_0xe126('0x2e')]=_[_0xe126('0x2f')](_0x181ccc,_0xe126('0x29'));_0x1fb354['query']=_[_0xe126('0x30')](_0x259059[_0xe126('0x31')]);_0x1fb354[_0xe126('0x32')]=_['intersection'](_0x1fb354[_0xe126('0x2e')],_0x1fb354[_0xe126('0x31')]);_0x9d9e28['attributes']=_['intersection'](_0x1fb354[_0xe126('0x2e')],qs[_0xe126('0x33')](_0x259059[_0xe126('0x31')][_0xe126('0x33')]));_0x9d9e28[_0xe126('0x34')]=_0x9d9e28[_0xe126('0x34')][_0xe126('0x35')]?_0x9d9e28[_0xe126('0x34')]:_0x1fb354['model'];if(!_0x259059[_0xe126('0x31')][_0xe126('0x36')](_0xe126('0x37'))){_0x9d9e28[_0xe126('0x1e')]=qs[_0xe126('0x1e')](_0x259059[_0xe126('0x31')]['limit']);_0x9d9e28[_0xe126('0x1c')]=qs[_0xe126('0x1c')](_0x259059[_0xe126('0x31')][_0xe126('0x1c')]);}_0x9d9e28[_0xe126('0x38')]=qs['sort'](_0x259059[_0xe126('0x31')][_0xe126('0x39')]);_0x9d9e28[_0xe126('0x3a')]=qs[_0xe126('0x32')](_['pick'](_0x259059[_0xe126('0x31')],_0x1fb354[_0xe126('0x32')]),_0x181ccc);if(_0x259059[_0xe126('0x31')][_0xe126('0x3b')]){_0x9d9e28[_0xe126('0x3a')]=_[_0xe126('0x3c')](_0x9d9e28['where'],{'$or':_[_0xe126('0x2f')](_0x181ccc,function(_0x1a8edf){if(_0x1a8edf[_0xe126('0x2d')]!=='VIRTUAL'){var _0x5073bc={};_0x5073bc[_0x1a8edf[_0xe126('0x29')]]={'$like':'%'+_0x259059[_0xe126('0x31')][_0xe126('0x3b')]+'%'};return _0x5073bc;}})});}_0x9d9e28=_[_0xe126('0x3c')]({},_0x9d9e28,_0x259059[_0xe126('0x3d')]);var _0x1c128d={'where':_0x9d9e28['where']};return db[_0xe126('0x2b')][_0xe126('0x1f')](_0x1c128d)['then'](function(_0x4eb3d7){_0x29dec4[_0xe126('0x1f')]=_0x4eb3d7;if(_0x259059[_0xe126('0x31')]['includeAll']){_0x9d9e28[_0xe126('0x3e')]=[{'all':!![]}];}return db[_0xe126('0x2b')]['findAll'](_0x9d9e28);})[_0xe126('0x25')](function(_0x366754){_0x29dec4['rows']=_0x366754;return _0x29dec4;})[_0xe126('0x25')](respondWithFilteredResult(_0x5a8b2a,_0x9d9e28))['catch'](handleError(_0x5a8b2a,null));};exports[_0xe126('0x3f')]=function(_0x23d1d8,_0x5d5111){var _0x3613de={'raw':!![],'where':{'id':_0x23d1d8[_0xe126('0x40')]['id']}},_0x149b84={};_0x149b84['model']=_[_0xe126('0x30')](db['Cdr'][_0xe126('0x2c')]);_0x149b84[_0xe126('0x31')]=_[_0xe126('0x30')](_0x23d1d8[_0xe126('0x31')]);_0x149b84[_0xe126('0x32')]=_[_0xe126('0x41')](_0x149b84[_0xe126('0x2e')],_0x149b84[_0xe126('0x31')]);_0x3613de[_0xe126('0x34')]=_[_0xe126('0x41')](_0x149b84[_0xe126('0x2e')],qs['fields'](_0x23d1d8['query'][_0xe126('0x33')]));_0x3613de[_0xe126('0x34')]=_0x3613de['attributes'][_0xe126('0x35')]?_0x3613de[_0xe126('0x34')]:_0x149b84[_0xe126('0x2e')];if(_0x23d1d8[_0xe126('0x31')]['includeAll']){_0x3613de[_0xe126('0x3e')]=[{'all':!![]}];}_0x3613de=_[_0xe126('0x3c')]({},_0x3613de,_0x23d1d8[_0xe126('0x3d')]);return db[_0xe126('0x2b')][_0xe126('0x42')](_0x3613de)[_0xe126('0x25')](handleEntityNotFound(_0x5d5111,null))[_0xe126('0x25')](respondWithResult(_0x5d5111,null))[_0xe126('0x43')](handleError(_0x5d5111,null));};exports[_0xe126('0x44')]=function(_0xccc25d,_0x23007d){return db[_0xe126('0x2b')][_0xe126('0x44')](_0xccc25d['body'],{})['then'](respondWithResult(_0x23007d,0xc9))['catch'](handleError(_0x23007d,null));};exports['update']=function(_0xe642ae,_0x8d5abd){if(_0xe642ae[_0xe126('0x45')]['id']){delete _0xe642ae[_0xe126('0x45')]['id'];}return db[_0xe126('0x2b')][_0xe126('0x42')]({'where':{'id':_0xe642ae[_0xe126('0x40')]['id']}})['then'](handleEntityNotFound(_0x8d5abd,null))['then'](saveUpdates(_0xe642ae[_0xe126('0x45')],null))[_0xe126('0x25')](respondWithResult(_0x8d5abd,null))['catch'](handleError(_0x8d5abd,null));};exports[_0xe126('0x26')]=function(_0x209002,_0x518e43){return db[_0xe126('0x2b')][_0xe126('0x42')]({'where':{'id':_0x209002['params']['id']}})['then'](handleEntityNotFound(_0x518e43,null))[_0xe126('0x25')](removeEntity(_0x518e43,null))[_0xe126('0x43')](handleError(_0x518e43,null));};exports[_0xe126('0x46')]=function(_0x48fbed,_0x31e193){return db['Cdr'][_0xe126('0x46')]()[_0xe126('0x25')](respondWithResult(_0x31e193,null))['catch'](handleError(_0x31e193,null));};
\ No newline at end of file
+var _0x723e=['request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','end','sendStatus','error','name','send','index','rawAttributes','fieldName','type','map','query','keys','filters','intersection','model','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','Cdr','findAll','params','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch'];(function(_0x329297,_0x1a8ada){var _0x122f55=function(_0x51d4da){while(--_0x51d4da){_0x329297['push'](_0x329297['shift']());}};_0x122f55(++_0x1a8ada);}(_0x723e,0x179));var _0xe723=function(_0x251fa4,_0x3d5860){_0x251fa4=_0x251fa4-0x0;var _0x453047=_0x723e[_0x251fa4];return _0x453047;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe723('0x0'));var zipdir=require(_0xe723('0x1'));var jsonpatch=require(_0xe723('0x2'));var rp=require(_0xe723('0x3'));var moment=require(_0xe723('0x4'));var BPromise=require(_0xe723('0x5'));var Mustache=require(_0xe723('0x6'));var util=require(_0xe723('0x7'));var path=require(_0xe723('0x8'));var sox=require(_0xe723('0x9'));var csv=require('to-csv');var ejs=require(_0xe723('0xa'));var fs=require('fs');var fs_extra=require(_0xe723('0xb'));var _=require(_0xe723('0xc'));var squel=require(_0xe723('0xd'));var crypto=require(_0xe723('0xe'));var jsforce=require(_0xe723('0xf'));var deskjs=require(_0xe723('0x10'));var toCsv=require(_0xe723('0x11'));var querystring=require('querystring');var Papa=require(_0xe723('0x12'));var Redis=require(_0xe723('0x13'));var authService=require(_0xe723('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xe723('0x15'));var hardwareService=require(_0xe723('0x16'));var logger=require(_0xe723('0x17'))('api');var utils=require(_0xe723('0x18'));var config=require(_0xe723('0x19'));var licenseUtil=require(_0xe723('0x1a'));var db=require(_0xe723('0x1b'))['db'];function respondWithStatusCode(_0x236b69,_0x5c066c){_0x5c066c=_0x5c066c||0xcc;return function(_0x29a1e){if(_0x29a1e){return _0x236b69['sendStatus'](_0x5c066c);}return _0x236b69['status'](_0x5c066c)['end']();};}function respondWithResult(_0x57bc0e,_0x75c12c){_0x75c12c=_0x75c12c||0xc8;return function(_0x30b2ba){if(_0x30b2ba){return _0x57bc0e[_0xe723('0x1c')](_0x75c12c)[_0xe723('0x1d')](_0x30b2ba);}};}function respondWithFilteredResult(_0xf29a39,_0x5aec97){return function(_0x23d0b2){if(_0x23d0b2){var _0xbf5ca3=typeof _0x5aec97[_0xe723('0x1e')]===_0xe723('0x1f')&&typeof _0x5aec97[_0xe723('0x20')]===_0xe723('0x1f');var _0x2cd7ca=_0x23d0b2[_0xe723('0x21')];var _0x17e2c1=_0xbf5ca3?0x0:_0x5aec97[_0xe723('0x1e')];var _0x2057d7=_0xbf5ca3?_0x23d0b2[_0xe723('0x21')]:_0x5aec97[_0xe723('0x1e')]+_0x5aec97[_0xe723('0x20')];var _0x5e8a90;if(_0x2057d7>=_0x2cd7ca){_0x2057d7=_0x2cd7ca;_0x5e8a90=0xc8;}else{_0x5e8a90=0xce;}_0xf29a39['status'](_0x5e8a90);return _0xf29a39[_0xe723('0x22')](_0xe723('0x23'),_0x17e2c1+'-'+_0x2057d7+'/'+_0x2cd7ca)['json'](_0x23d0b2);}return null;};}function patchUpdates(_0x28caca){return function(_0x2762e2){try{jsonpatch['apply'](_0x2762e2,_0x28caca,!![]);}catch(_0x472502){return BPromise['reject'](_0x472502);}return _0x2762e2[_0xe723('0x24')]();};}function saveUpdates(_0x43ccfc,_0x3b82b2){return function(_0x1fe43d){if(_0x1fe43d){return _0x1fe43d[_0xe723('0x25')](_0x43ccfc)[_0xe723('0x26')](function(_0x25f7d2){return _0x25f7d2;});}return null;};}function removeEntity(_0x15196c,_0x1228f2){return function(_0x19bd0c){if(_0x19bd0c){return _0x19bd0c[_0xe723('0x27')]()[_0xe723('0x26')](function(){_0x15196c['status'](0xcc)[_0xe723('0x28')]();});}};}function handleEntityNotFound(_0x59f095,_0xa258f3){return function(_0x3ffa15){if(!_0x3ffa15){_0x59f095[_0xe723('0x29')](0x194);}return _0x3ffa15;};}function handleError(_0xe7e271,_0x1f81ec){_0x1f81ec=_0x1f81ec||0x1f4;return function(_0x598f15){logger[_0xe723('0x2a')](_0x598f15['stack']);if(_0x598f15['name']){delete _0x598f15[_0xe723('0x2b')];}_0xe7e271['status'](_0x1f81ec)[_0xe723('0x2c')](_0x598f15);};}exports[_0xe723('0x2d')]=function(_0x335c66,_0x4d55cc){var _0x1edbb2={},_0x45e162={},_0x48a97a={'count':0x0,'rows':[]};var _0x3c8c56=_['map'](db['Cdr'][_0xe723('0x2e')],function(_0x2c2240){return{'name':_0x2c2240[_0xe723('0x2f')],'type':_0x2c2240[_0xe723('0x30')]['key']};});_0x45e162['model']=_[_0xe723('0x31')](_0x3c8c56,'name');_0x45e162[_0xe723('0x32')]=_[_0xe723('0x33')](_0x335c66[_0xe723('0x32')]);_0x45e162[_0xe723('0x34')]=_[_0xe723('0x35')](_0x45e162[_0xe723('0x36')],_0x45e162[_0xe723('0x32')]);_0x1edbb2[_0xe723('0x37')]=_[_0xe723('0x35')](_0x45e162[_0xe723('0x36')],qs[_0xe723('0x38')](_0x335c66[_0xe723('0x32')][_0xe723('0x38')]));_0x1edbb2[_0xe723('0x37')]=_0x1edbb2['attributes'][_0xe723('0x39')]?_0x1edbb2['attributes']:_0x45e162[_0xe723('0x36')];if(!_0x335c66[_0xe723('0x32')]['hasOwnProperty']('nolimit')){_0x1edbb2[_0xe723('0x20')]=qs[_0xe723('0x20')](_0x335c66[_0xe723('0x32')][_0xe723('0x20')]);_0x1edbb2[_0xe723('0x1e')]=qs[_0xe723('0x1e')](_0x335c66['query'][_0xe723('0x1e')]);}_0x1edbb2[_0xe723('0x3a')]=qs[_0xe723('0x3b')](_0x335c66[_0xe723('0x32')][_0xe723('0x3b')]);_0x1edbb2[_0xe723('0x3c')]=qs[_0xe723('0x34')](_[_0xe723('0x3d')](_0x335c66[_0xe723('0x32')],_0x45e162[_0xe723('0x34')]),_0x3c8c56);if(_0x335c66[_0xe723('0x32')][_0xe723('0x3e')]){_0x1edbb2[_0xe723('0x3c')]=_[_0xe723('0x3f')](_0x1edbb2[_0xe723('0x3c')],{'$or':_[_0xe723('0x31')](_0x3c8c56,function(_0x5c5027){if(_0x5c5027[_0xe723('0x30')]!==_0xe723('0x40')){var _0x68eda5={};_0x68eda5[_0x5c5027[_0xe723('0x2b')]]={'$like':'%'+_0x335c66['query']['filter']+'%'};return _0x68eda5;}})});}_0x1edbb2=_[_0xe723('0x3f')]({},_0x1edbb2,_0x335c66[_0xe723('0x41')]);var _0xc0c2c7={'where':_0x1edbb2[_0xe723('0x3c')]};return db['Cdr']['count'](_0xc0c2c7)[_0xe723('0x26')](function(_0x2f1618){_0x48a97a[_0xe723('0x21')]=_0x2f1618;if(_0x335c66[_0xe723('0x32')][_0xe723('0x42')]){_0x1edbb2[_0xe723('0x43')]=[{'all':!![]}];}return db[_0xe723('0x44')][_0xe723('0x45')](_0x1edbb2);})[_0xe723('0x26')](function(_0x5b0c89){_0x48a97a['rows']=_0x5b0c89;return _0x48a97a;})[_0xe723('0x26')](respondWithFilteredResult(_0x4d55cc,_0x1edbb2))['catch'](handleError(_0x4d55cc,null));};exports['show']=function(_0x18f4a1,_0x55530b){var _0x36272={'raw':!![],'where':{'id':_0x18f4a1[_0xe723('0x46')]['id']}},_0x42bd2f={};_0x42bd2f[_0xe723('0x36')]=_[_0xe723('0x33')](db[_0xe723('0x44')][_0xe723('0x2e')]);_0x42bd2f['query']=_['keys'](_0x18f4a1[_0xe723('0x32')]);_0x42bd2f['filters']=_[_0xe723('0x35')](_0x42bd2f['model'],_0x42bd2f[_0xe723('0x32')]);_0x36272[_0xe723('0x37')]=_[_0xe723('0x35')](_0x42bd2f[_0xe723('0x36')],qs[_0xe723('0x38')](_0x18f4a1[_0xe723('0x32')][_0xe723('0x38')]));_0x36272[_0xe723('0x37')]=_0x36272[_0xe723('0x37')]['length']?_0x36272['attributes']:_0x42bd2f[_0xe723('0x36')];if(_0x18f4a1[_0xe723('0x32')][_0xe723('0x42')]){_0x36272['include']=[{'all':!![]}];}_0x36272=_['merge']({},_0x36272,_0x18f4a1['options']);return db[_0xe723('0x44')][_0xe723('0x47')](_0x36272)[_0xe723('0x26')](handleEntityNotFound(_0x55530b,null))['then'](respondWithResult(_0x55530b,null))[_0xe723('0x48')](handleError(_0x55530b,null));};exports[_0xe723('0x49')]=function(_0x1cb2b2,_0x38bd1a){return db[_0xe723('0x44')]['create'](_0x1cb2b2[_0xe723('0x4a')],{})['then'](respondWithResult(_0x38bd1a,0xc9))[_0xe723('0x48')](handleError(_0x38bd1a,null));};exports['update']=function(_0x52f42e,_0x1590fe){if(_0x52f42e[_0xe723('0x4a')]['id']){delete _0x52f42e[_0xe723('0x4a')]['id'];}return db['Cdr'][_0xe723('0x47')]({'where':{'id':_0x52f42e['params']['id']}})[_0xe723('0x26')](handleEntityNotFound(_0x1590fe,null))[_0xe723('0x26')](saveUpdates(_0x52f42e[_0xe723('0x4a')],null))[_0xe723('0x26')](respondWithResult(_0x1590fe,null))[_0xe723('0x48')](handleError(_0x1590fe,null));};exports[_0xe723('0x27')]=function(_0x41e1c4,_0x16cb50){return db[_0xe723('0x44')]['find']({'where':{'id':_0x41e1c4[_0xe723('0x46')]['id']}})[_0xe723('0x26')](handleEntityNotFound(_0x16cb50,null))['then'](removeEntity(_0x16cb50,null))[_0xe723('0x48')](handleError(_0x16cb50,null));};exports[_0xe723('0x4b')]=function(_0x56e92a,_0x126ca5){return db['Cdr']['describe']()[_0xe723('0x26')](respondWithResult(_0x126ca5,null))[_0xe723('0x48')](handleError(_0x126ca5,null));};
\ No newline at end of file
index bbabc0c..009563a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Cdr','cdr','accountcode','disposition','dst','src','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./cdr.attributes','exports'];(function(_0x26d3db,_0x216e3b){var _0x36ee83=function(_0x554814){while(--_0x554814){_0x26d3db['push'](_0x26d3db['shift']());}};_0x36ee83(++_0x216e3b);}(_0x7a54,0x106));var _0x47a5=function(_0x18d97e,_0x6e3c6f){_0x18d97e=_0x18d97e-0x0;var _0xef55fc=_0x7a54[_0x18d97e];return _0xef55fc;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'accountcode','fields':[_0x47a5('0xc')]},{'name':'calldate','fields':['calldate']},{'name':'disposition','fields':[_0x47a5('0xd')]},{'name':_0x47a5('0xe'),'fields':['dst']},{'name':_0x47a5('0xf'),'fields':['src']},{'name':'uniqueid','fields':[_0x47a5('0x10')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x3e2394,_0x2dc34c){var _0x29743b=function(_0x44ede3){while(--_0x44ede3){_0x3e2394['push'](_0x3e2394['shift']());}};_0x29743b(++_0x2dc34c);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'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
index f93476c..6a9eb3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9256=['ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x19e0c7,_0x8c57f){var _0x1fd31=function(_0x356dd0){while(--_0x356dd0){_0x19e0c7['push'](_0x19e0c7['shift']());}};_0x1fd31(++_0x8c57f);}(_0x9256,0xdc));var _0x6925=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9256[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x6925('0x0'));var util=require(_0x6925('0x1'));var moment=require(_0x6925('0x2'));var BPromise=require(_0x6925('0x3'));var rs=require(_0x6925('0x4'));var fs=require('fs');var Redis=require(_0x6925('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x6925('0x6'));var logger=require(_0x6925('0x7'))(_0x6925('0x8'));var config=require(_0x6925('0x9'));var jayson=require(_0x6925('0xa'));var client=jayson[_0x6925('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4d60ed,_0xfc1741,_0x3e4eb0){return new BPromise(function(_0x149033,_0x147f5e){return client[_0x6925('0xc')](_0x4d60ed,_0x3e4eb0)[_0x6925('0xd')](function(_0x4ee089){logger[_0x6925('0xe')](_0x6925('0xf'),_0xfc1741,_0x6925('0x10'));logger[_0x6925('0x11')](_0x6925('0x12'),_0xfc1741,_0x6925('0x10'),JSON[_0x6925('0x13')](_0x4ee089));if(_0x4ee089[_0x6925('0x14')]){if(_0x4ee089['error'][_0x6925('0x15')]===0x1f4){logger[_0x6925('0x14')]('Cdr,\x20%s,\x20%s',_0xfc1741,_0x4ee089['error'][_0x6925('0x16')]);return _0x147f5e(_0x4ee089['error'][_0x6925('0x16')]);}logger['error'](_0x6925('0xf'),_0xfc1741,_0x4ee089[_0x6925('0x14')]['message']);return _0x149033(_0x4ee089['error']['message']);}else{logger[_0x6925('0xe')]('Cdr,\x20%s,\x20%s',_0xfc1741,'request\x20sent');_0x149033(_0x4ee089[_0x6925('0x17')][_0x6925('0x16')]);}})[_0x6925('0x18')](function(_0x3358ac){logger['error']('Cdr,\x20%s,\x20%s',_0xfc1741,_0x3358ac);_0x147f5e(_0x3358ac);});});}
\ No newline at end of file
+var _0xfb91=['Cdr,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','http','request','then','info'];(function(_0xd32cc2,_0x3c1a26){var _0x54ab18=function(_0x9ba6d3){while(--_0x9ba6d3){_0xd32cc2['push'](_0xd32cc2['shift']());}};_0x54ab18(++_0x3c1a26);}(_0xfb91,0xc4));var _0x1fb9=function(_0x20ca10,_0x25ce5b){_0x20ca10=_0x20ca10-0x0;var _0x5be443=_0xfb91[_0x20ca10];return _0x5be443;};'use strict';var _=require(_0x1fb9('0x0'));var util=require(_0x1fb9('0x1'));var moment=require(_0x1fb9('0x2'));var BPromise=require(_0x1fb9('0x3'));var rs=require(_0x1fb9('0x4'));var fs=require('fs');var Redis=require(_0x1fb9('0x5'));var db=require(_0x1fb9('0x6'))['db'];var utils=require(_0x1fb9('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x1fb9('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1fb9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3ed559,_0x220040,_0x2832ff){return new BPromise(function(_0x300a38,_0x55458f){return client[_0x1fb9('0xa')](_0x3ed559,_0x2832ff)[_0x1fb9('0xb')](function(_0x4e150d){logger[_0x1fb9('0xc')](_0x1fb9('0xd'),_0x220040,_0x1fb9('0xe'));logger[_0x1fb9('0xf')]('Cdr,\x20%s,\x20%s,\x20%s',_0x220040,_0x1fb9('0xe'),JSON[_0x1fb9('0x10')](_0x4e150d));if(_0x4e150d[_0x1fb9('0x11')]){if(_0x4e150d[_0x1fb9('0x11')]['code']===0x1f4){logger['error'](_0x1fb9('0xd'),_0x220040,_0x4e150d[_0x1fb9('0x11')][_0x1fb9('0x12')]);return _0x55458f(_0x4e150d[_0x1fb9('0x11')]['message']);}logger[_0x1fb9('0x11')](_0x1fb9('0xd'),_0x220040,_0x4e150d['error']['message']);return _0x300a38(_0x4e150d['error']['message']);}else{logger[_0x1fb9('0xc')](_0x1fb9('0xd'),_0x220040,_0x1fb9('0xe'));_0x300a38(_0x4e150d['result'][_0x1fb9('0x12')]);}})['catch'](function(_0x3389ee){logger['error'](_0x1fb9('0xd'),_0x220040,_0x3389ee);_0x55458f(_0x3389ee);});});}
\ No newline at end of file
index 2f27b9c..eba16ff 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(_0x56989c,_0x6781f0){var _0x22ab27=function(_0x390034){while(--_0x390034){_0x56989c['push'](_0x56989c['shift']());}};_0x22ab27(++_0x6781f0);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
+var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cdr.controller','get','index','/describe','show','post'];(function(_0x2aa0e7,_0x4e5145){var _0x1472c0=function(_0x4deaeb){while(--_0x4deaeb){_0x2aa0e7['push'](_0x2aa0e7['shift']());}};_0x1472c0(++_0x4e5145);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0xa9e0[_0x47e7cb];return _0x2a8874;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('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 9361789..2d5c662 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98b1=['INTEGER','STRING','noop','TEXT','*,*,*,*','exports'];(function(_0x11315e,_0x11db19){var _0x5a2ddf=function(_0x411c23){while(--_0x411c23){_0x11315e['push'](_0x11315e['shift']());}};_0x5a2ddf(++_0x11db19);}(_0x98b1,0x107));var _0x198b=function(_0x365a91,_0x10fd46){_0x365a91=_0x365a91-0x0;var _0x1b96cd=_0x98b1[_0x365a91];return _0x1b96cd;};'use strict';var Sequelize=require('sequelize');module[_0x198b('0x0')]={'priority':{'type':Sequelize[_0x198b('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x198b('0x2')],'allowNull':![],'defaultValue':_0x198b('0x3')},'appdata':{'type':Sequelize[_0x198b('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x198b('0x5')}};
\ No newline at end of file
+var _0xc9e4=['*,*,*,*','exports','noop','TEXT','STRING'];(function(_0x2a1b3e,_0x176595){var _0x10e8d7=function(_0x924c25){while(--_0x924c25){_0x2a1b3e['push'](_0x2a1b3e['shift']());}};_0x10e8d7(++_0x176595);}(_0xc9e4,0x132));var _0x4c9e=function(_0x41b0a8,_0x1b05cc){_0x41b0a8=_0x41b0a8-0x0;var _0x3a83d4=_0xc9e4[_0x41b0a8];return _0x3a83d4;};'use strict';var Sequelize=require('sequelize');module[_0x4c9e('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x4c9e('0x1')},'appdata':{'type':Sequelize[_0x4c9e('0x2')]()},'description':{'type':Sequelize[_0x4c9e('0x3')]},'interval':{'type':Sequelize[_0x4c9e('0x3')],'defaultValue':_0x4c9e('0x4')}};
\ No newline at end of file
index 04f0a8a..6f8c0cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5127=['sox','to-csv','ejs','fs-extra','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','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','name','send','model','keys','ChatApplication','rawAttributes','intersection','fields','query','attributes','length','merge','options','find','catch','update','body','params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','path'];(function(_0x57171b,_0xfe67c6){var _0x33a2c8=function(_0x31e60d){while(--_0x31e60d){_0x57171b['push'](_0x57171b['shift']());}};_0x33a2c8(++_0xfe67c6);}(_0x5127,0x18f));var _0x7512=function(_0x44a329,_0x45f280){_0x44a329=_0x44a329-0x0;var _0x45f2a3=_0x5127[_0x44a329];return _0x45f2a3;};'use strict';var emlformat=require(_0x7512('0x0'));var rimraf=require(_0x7512('0x1'));var zipdir=require(_0x7512('0x2'));var jsonpatch=require(_0x7512('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x7512('0x4'));var Mustache=require('mustache');var util=require(_0x7512('0x5'));var path=require(_0x7512('0x6'));var sox=require(_0x7512('0x7'));var csv=require(_0x7512('0x8'));var ejs=require(_0x7512('0x9'));var fs=require('fs');var fs_extra=require(_0x7512('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x7512('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7512('0xc'));var toCsv=require('to-csv');var querystring=require(_0x7512('0xd'));var Papa=require(_0x7512('0xe'));var Redis=require(_0x7512('0xf'));var authService=require(_0x7512('0x10'));var qs=require(_0x7512('0x11'));var as=require(_0x7512('0x12'));var hardwareService=require(_0x7512('0x13'));var logger=require(_0x7512('0x14'))(_0x7512('0x15'));var utils=require(_0x7512('0x16'));var config=require(_0x7512('0x17'));var licenseUtil=require(_0x7512('0x18'));var db=require(_0x7512('0x19'))['db'];function respondWithStatusCode(_0x599ce4,_0x472323){_0x472323=_0x472323||0xcc;return function(_0x474746){if(_0x474746){return _0x599ce4[_0x7512('0x1a')](_0x472323);}return _0x599ce4['status'](_0x472323)[_0x7512('0x1b')]();};}function respondWithResult(_0x57813c,_0x3069a1){_0x3069a1=_0x3069a1||0xc8;return function(_0x3ef1fc){if(_0x3ef1fc){return _0x57813c[_0x7512('0x1c')](_0x3069a1)[_0x7512('0x1d')](_0x3ef1fc);}};}function respondWithFilteredResult(_0x4968a5,_0x519aad){return function(_0x5a4101){if(_0x5a4101){var _0x219f4c=typeof _0x519aad[_0x7512('0x1e')]===_0x7512('0x1f')&&typeof _0x519aad[_0x7512('0x20')]==='undefined';var _0x82484a=_0x5a4101['count'];var _0x10858d=_0x219f4c?0x0:_0x519aad[_0x7512('0x1e')];var _0x1d357b=_0x219f4c?_0x5a4101[_0x7512('0x21')]:_0x519aad[_0x7512('0x1e')]+_0x519aad[_0x7512('0x20')];var _0x67c45e;if(_0x1d357b>=_0x82484a){_0x1d357b=_0x82484a;_0x67c45e=0xc8;}else{_0x67c45e=0xce;}_0x4968a5[_0x7512('0x1c')](_0x67c45e);return _0x4968a5[_0x7512('0x22')](_0x7512('0x23'),_0x10858d+'-'+_0x1d357b+'/'+_0x82484a)['json'](_0x5a4101);}return null;};}function patchUpdates(_0x3c8b39){return function(_0x41bb33){try{jsonpatch['apply'](_0x41bb33,_0x3c8b39,!![]);}catch(_0x4862d6){return BPromise[_0x7512('0x24')](_0x4862d6);}return _0x41bb33[_0x7512('0x25')]();};}function saveUpdates(_0x16cabb,_0x2279a0){return function(_0x24baaf){if(_0x24baaf){return _0x24baaf['update'](_0x16cabb)[_0x7512('0x26')](function(_0x28aa80){return _0x28aa80;});}return null;};}function removeEntity(_0x101f57,_0x21cb99){return function(_0x14f0e2){if(_0x14f0e2){return _0x14f0e2['destroy']()[_0x7512('0x26')](function(){_0x101f57[_0x7512('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c88dd,_0x5e0cfd){return function(_0x5df068){if(!_0x5df068){_0x2c88dd[_0x7512('0x1a')](0x194);}return _0x5df068;};}function handleError(_0x3ccd5f,_0x1a5985){_0x1a5985=_0x1a5985||0x1f4;return function(_0x5784ba){logger['error'](_0x5784ba['stack']);if(_0x5784ba[_0x7512('0x27')]){delete _0x5784ba['name'];}_0x3ccd5f['status'](_0x1a5985)[_0x7512('0x28')](_0x5784ba);};}exports['show']=function(_0x1c0442,_0x133d18){var _0x2f8df2={'raw':!![],'where':{'id':_0x1c0442['params']['id']}},_0x4c676c={};_0x4c676c[_0x7512('0x29')]=_[_0x7512('0x2a')](db[_0x7512('0x2b')][_0x7512('0x2c')]);_0x4c676c['query']=_[_0x7512('0x2a')](_0x1c0442['query']);_0x4c676c['filters']=_[_0x7512('0x2d')](_0x4c676c[_0x7512('0x29')],_0x4c676c['query']);_0x2f8df2['attributes']=_[_0x7512('0x2d')](_0x4c676c['model'],qs[_0x7512('0x2e')](_0x1c0442[_0x7512('0x2f')][_0x7512('0x2e')]));_0x2f8df2[_0x7512('0x30')]=_0x2f8df2['attributes'][_0x7512('0x31')]?_0x2f8df2['attributes']:_0x4c676c[_0x7512('0x29')];if(_0x1c0442[_0x7512('0x2f')]['includeAll']){_0x2f8df2['include']=[{'all':!![]}];}_0x2f8df2=_[_0x7512('0x32')]({},_0x2f8df2,_0x1c0442[_0x7512('0x33')]);return db['ChatApplication'][_0x7512('0x34')](_0x2f8df2)[_0x7512('0x26')](handleEntityNotFound(_0x133d18,null))[_0x7512('0x26')](respondWithResult(_0x133d18,null))[_0x7512('0x35')](handleError(_0x133d18,null));};exports[_0x7512('0x36')]=function(_0x20e8fb,_0x5b566d){if(_0x20e8fb[_0x7512('0x37')]['id']){delete _0x20e8fb[_0x7512('0x37')]['id'];}return db[_0x7512('0x2b')]['find']({'where':{'id':_0x20e8fb[_0x7512('0x38')]['id']}})[_0x7512('0x26')](handleEntityNotFound(_0x5b566d,null))['then'](saveUpdates(_0x20e8fb[_0x7512('0x37')],null))[_0x7512('0x26')](respondWithResult(_0x5b566d,null))['catch'](handleError(_0x5b566d,null));};exports[_0x7512('0x39')]=function(_0x5cc6a1,_0x325da0){return db[_0x7512('0x2b')]['find']({'where':{'id':_0x5cc6a1[_0x7512('0x38')]['id']}})['then'](handleEntityNotFound(_0x325da0,null))[_0x7512('0x26')](removeEntity(_0x325da0,null))['catch'](handleError(_0x325da0,null));};
\ No newline at end of file
+var _0x99b7=['fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../mysqldb','status','end','undefined','limit','count','Content-Range','json','apply','reject','then','destroy','sendStatus','error','stack','name','send','show','keys','rawAttributes','query','filters','intersection','model','attributes','fields','length','includeAll','include','merge','options','ChatApplication','find','catch','update','body','params','eml-format','zip-dir','bluebird','mustache','util','sox','to-csv','ejs'];(function(_0x45b29d,_0x44ce43){var _0x32d74=function(_0x559eff){while(--_0x559eff){_0x45b29d['push'](_0x45b29d['shift']());}};_0x32d74(++_0x44ce43);}(_0x99b7,0x14e));var _0x799b=function(_0x5ddaac,_0x2697a8){_0x5ddaac=_0x5ddaac-0x0;var _0x2a9c58=_0x99b7[_0x5ddaac];return _0x2a9c58;};'use strict';var emlformat=require(_0x799b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x799b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x799b('0x2'));var Mustache=require(_0x799b('0x3'));var util=require(_0x799b('0x4'));var path=require('path');var sox=require(_0x799b('0x5'));var csv=require(_0x799b('0x6'));var ejs=require(_0x799b('0x7'));var fs=require('fs');var fs_extra=require(_0x799b('0x8'));var _=require(_0x799b('0x9'));var squel=require(_0x799b('0xa'));var crypto=require('crypto');var jsforce=require(_0x799b('0xb'));var deskjs=require(_0x799b('0xc'));var toCsv=require(_0x799b('0x6'));var querystring=require(_0x799b('0xd'));var Papa=require(_0x799b('0xe'));var Redis=require('ioredis');var authService=require(_0x799b('0xf'));var qs=require(_0x799b('0x10'));var as=require(_0x799b('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x799b('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x799b('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x799b('0x14'))['db'];function respondWithStatusCode(_0x5d970d,_0x30a5e0){_0x30a5e0=_0x30a5e0||0xcc;return function(_0x4a6d53){if(_0x4a6d53){return _0x5d970d['sendStatus'](_0x30a5e0);}return _0x5d970d[_0x799b('0x15')](_0x30a5e0)[_0x799b('0x16')]();};}function respondWithResult(_0x28e749,_0x36d3cb){_0x36d3cb=_0x36d3cb||0xc8;return function(_0x3fbf4a){if(_0x3fbf4a){return _0x28e749[_0x799b('0x15')](_0x36d3cb)['json'](_0x3fbf4a);}};}function respondWithFilteredResult(_0x2efe00,_0x5187c1){return function(_0x45004c){if(_0x45004c){var _0x26b419=typeof _0x5187c1['offset']===_0x799b('0x17')&&typeof _0x5187c1[_0x799b('0x18')]==='undefined';var _0x140a04=_0x45004c[_0x799b('0x19')];var _0x3f5cbb=_0x26b419?0x0:_0x5187c1['offset'];var _0x51d53c=_0x26b419?_0x45004c[_0x799b('0x19')]:_0x5187c1['offset']+_0x5187c1[_0x799b('0x18')];var _0x70df1a;if(_0x51d53c>=_0x140a04){_0x51d53c=_0x140a04;_0x70df1a=0xc8;}else{_0x70df1a=0xce;}_0x2efe00['status'](_0x70df1a);return _0x2efe00['set'](_0x799b('0x1a'),_0x3f5cbb+'-'+_0x51d53c+'/'+_0x140a04)[_0x799b('0x1b')](_0x45004c);}return null;};}function patchUpdates(_0x590d88){return function(_0x1fdf0b){try{jsonpatch[_0x799b('0x1c')](_0x1fdf0b,_0x590d88,!![]);}catch(_0x4aef46){return BPromise[_0x799b('0x1d')](_0x4aef46);}return _0x1fdf0b['save']();};}function saveUpdates(_0x51f9bc,_0x4109dd){return function(_0x395925){if(_0x395925){return _0x395925['update'](_0x51f9bc)[_0x799b('0x1e')](function(_0x26d8ec){return _0x26d8ec;});}return null;};}function removeEntity(_0x2621a9,_0x362fc9){return function(_0x107e5e){if(_0x107e5e){return _0x107e5e[_0x799b('0x1f')]()[_0x799b('0x1e')](function(){_0x2621a9[_0x799b('0x15')](0xcc)[_0x799b('0x16')]();});}};}function handleEntityNotFound(_0xa42021,_0x301412){return function(_0x31c1fe){if(!_0x31c1fe){_0xa42021[_0x799b('0x20')](0x194);}return _0x31c1fe;};}function handleError(_0x3be9a0,_0x38a03e){_0x38a03e=_0x38a03e||0x1f4;return function(_0x4f151e){logger[_0x799b('0x21')](_0x4f151e[_0x799b('0x22')]);if(_0x4f151e[_0x799b('0x23')]){delete _0x4f151e[_0x799b('0x23')];}_0x3be9a0[_0x799b('0x15')](_0x38a03e)[_0x799b('0x24')](_0x4f151e);};}exports[_0x799b('0x25')]=function(_0x1b0339,_0x52dc90){var _0x1dd3ba={'raw':!![],'where':{'id':_0x1b0339['params']['id']}},_0x33d2e6={};_0x33d2e6['model']=_[_0x799b('0x26')](db['ChatApplication'][_0x799b('0x27')]);_0x33d2e6[_0x799b('0x28')]=_['keys'](_0x1b0339[_0x799b('0x28')]);_0x33d2e6[_0x799b('0x29')]=_[_0x799b('0x2a')](_0x33d2e6[_0x799b('0x2b')],_0x33d2e6['query']);_0x1dd3ba[_0x799b('0x2c')]=_['intersection'](_0x33d2e6[_0x799b('0x2b')],qs['fields'](_0x1b0339['query'][_0x799b('0x2d')]));_0x1dd3ba[_0x799b('0x2c')]=_0x1dd3ba[_0x799b('0x2c')][_0x799b('0x2e')]?_0x1dd3ba[_0x799b('0x2c')]:_0x33d2e6[_0x799b('0x2b')];if(_0x1b0339[_0x799b('0x28')][_0x799b('0x2f')]){_0x1dd3ba[_0x799b('0x30')]=[{'all':!![]}];}_0x1dd3ba=_[_0x799b('0x31')]({},_0x1dd3ba,_0x1b0339[_0x799b('0x32')]);return db[_0x799b('0x33')][_0x799b('0x34')](_0x1dd3ba)[_0x799b('0x1e')](handleEntityNotFound(_0x52dc90,null))[_0x799b('0x1e')](respondWithResult(_0x52dc90,null))[_0x799b('0x35')](handleError(_0x52dc90,null));};exports[_0x799b('0x36')]=function(_0x2fca7b,_0x1b8ab2){if(_0x2fca7b[_0x799b('0x37')]['id']){delete _0x2fca7b[_0x799b('0x37')]['id'];}return db['ChatApplication'][_0x799b('0x34')]({'where':{'id':_0x2fca7b[_0x799b('0x38')]['id']}})['then'](handleEntityNotFound(_0x1b8ab2,null))[_0x799b('0x1e')](saveUpdates(_0x2fca7b[_0x799b('0x37')],null))['then'](respondWithResult(_0x1b8ab2,null))['catch'](handleError(_0x1b8ab2,null));};exports[_0x799b('0x1f')]=function(_0x36ebcb,_0x57ef0a){return db[_0x799b('0x33')][_0x799b('0x34')]({'where':{'id':_0x36ebcb[_0x799b('0x38')]['id']}})[_0x799b('0x1e')](handleEntityNotFound(_0x57ef0a,null))[_0x799b('0x1e')](removeEntity(_0x57ef0a,null))[_0x799b('0x35')](handleError(_0x57ef0a,null));};
\ No newline at end of file
index 6f89c01..1092527 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71e8=['chat_applications','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./chatApplication.attributes','exports','define'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x71e8,0x9f));var _0x871e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x71e8[_0x4cf98e];return _0x1623ac;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x871e('0x0'))(_0x871e('0x1'));var moment=require(_0x871e('0x2'));var BPromise=require(_0x871e('0x3'));var rp=require(_0x871e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x871e('0x5'));var attributes=require(_0x871e('0x6'));module[_0x871e('0x7')]=function(_0x5f4407,_0x5e1863){return _0x5f4407[_0x871e('0x8')]('ChatApplication',attributes,{'tableName':_0x871e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x871e('0xa'),'collate':_0x871e('0xb')});};
\ No newline at end of file
+var _0x6537=['./chatApplication.attributes','define','ChatApplication','chat_applications','utf8mb4_unicode_ci','lodash','api','moment','../../config/environment'];(function(_0x4c2a95,_0x24feff){var _0x231fc0=function(_0x52cc95){while(--_0x52cc95){_0x4c2a95['push'](_0x4c2a95['shift']());}};_0x231fc0(++_0x24feff);}(_0x6537,0x1e2));var _0x7653=function(_0x27a8c0,_0x27a700){_0x27a8c0=_0x27a8c0-0x0;var _0x109422=_0x6537[_0x27a8c0];return _0x109422;};'use strict';var _=require(_0x7653('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x7653('0x1'));var moment=require(_0x7653('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7653('0x3'));var attributes=require(_0x7653('0x4'));module['exports']=function(_0x1d8943,_0x50e2a4){return _0x1d8943[_0x7653('0x5')](_0x7653('0x6'),attributes,{'tableName':_0x7653('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x7653('0x8')});};
\ No newline at end of file
index 71e6deb..ac6f443 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfc7=['message','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','request','then','info','debug','ChatApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ChatApplication,\x20%s,\x20%s'];(function(_0x3634f4,_0x1c3d84){var _0xa0122b=function(_0x40c0b4){while(--_0x40c0b4){_0x3634f4['push'](_0x3634f4['shift']());}};_0xa0122b(++_0x1c3d84);}(_0xdfc7,0x6b));var _0x7dfc=function(_0x13f980,_0x1e1c56){_0x13f980=_0x13f980-0x0;var _0x27153c=_0xdfc7[_0x13f980];return _0x27153c;};'use strict';var _=require(_0x7dfc('0x0'));var util=require(_0x7dfc('0x1'));var moment=require('moment');var BPromise=require(_0x7dfc('0x2'));var rs=require(_0x7dfc('0x3'));var fs=require('fs');var Redis=require(_0x7dfc('0x4'));var db=require(_0x7dfc('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7dfc('0x6'))('rpc');var config=require(_0x7dfc('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x7dfc('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x536ca5,_0x337924,_0x5cc46d){return new BPromise(function(_0x434ff8,_0x2af39a){return client[_0x7dfc('0x9')](_0x536ca5,_0x5cc46d)[_0x7dfc('0xa')](function(_0x138c2d){logger[_0x7dfc('0xb')]('ChatApplication,\x20%s,\x20%s',_0x337924,'request\x20sent');logger[_0x7dfc('0xc')](_0x7dfc('0xd'),_0x337924,_0x7dfc('0xe'),JSON[_0x7dfc('0xf')](_0x138c2d));if(_0x138c2d[_0x7dfc('0x10')]){if(_0x138c2d[_0x7dfc('0x10')][_0x7dfc('0x11')]===0x1f4){logger['error'](_0x7dfc('0x12'),_0x337924,_0x138c2d[_0x7dfc('0x10')][_0x7dfc('0x13')]);return _0x2af39a(_0x138c2d['error'][_0x7dfc('0x13')]);}logger[_0x7dfc('0x10')](_0x7dfc('0x12'),_0x337924,_0x138c2d[_0x7dfc('0x10')]['message']);return _0x434ff8(_0x138c2d[_0x7dfc('0x10')][_0x7dfc('0x13')]);}else{logger[_0x7dfc('0xb')]('ChatApplication,\x20%s,\x20%s',_0x337924,'request\x20sent');_0x434ff8(_0x138c2d[_0x7dfc('0x14')][_0x7dfc('0x13')]);}})['catch'](function(_0x570ca4){logger[_0x7dfc('0x10')](_0x7dfc('0x12'),_0x337924,_0x570ca4);_0x2af39a(_0x570ca4);});});}
\ No newline at end of file
+var _0x4c46=['code','message','info','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','ChatApplication,\x20%s,\x20%s','stringify','error'];(function(_0x3aee17,_0x11c9b8){var _0x400d13=function(_0x319d17){while(--_0x319d17){_0x3aee17['push'](_0x3aee17['shift']());}};_0x400d13(++_0x11c9b8);}(_0x4c46,0x77));var _0x64c4=function(_0x296b84,_0x309ad5){_0x296b84=_0x296b84-0x0;var _0xab2959=_0x4c46[_0x296b84];return _0xab2959;};'use strict';var _=require('lodash');var util=require(_0x64c4('0x0'));var moment=require('moment');var BPromise=require(_0x64c4('0x1'));var rs=require(_0x64c4('0x2'));var fs=require('fs');var Redis=require(_0x64c4('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x64c4('0x4'));var logger=require(_0x64c4('0x5'))(_0x64c4('0x6'));var config=require('../../config/environment');var jayson=require(_0x64c4('0x7'));var client=jayson['client'][_0x64c4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1ed752,_0x580284,_0x5b9901){return new BPromise(function(_0x44f01d,_0x3cc702){return client[_0x64c4('0x9')](_0x1ed752,_0x5b9901)[_0x64c4('0xa')](function(_0x370a0d){logger['info'](_0x64c4('0xb'),_0x580284,'request\x20sent');logger['debug']('ChatApplication,\x20%s,\x20%s,\x20%s',_0x580284,'request\x20sent',JSON[_0x64c4('0xc')](_0x370a0d));if(_0x370a0d[_0x64c4('0xd')]){if(_0x370a0d[_0x64c4('0xd')][_0x64c4('0xe')]===0x1f4){logger[_0x64c4('0xd')](_0x64c4('0xb'),_0x580284,_0x370a0d['error']['message']);return _0x3cc702(_0x370a0d[_0x64c4('0xd')][_0x64c4('0xf')]);}logger['error'](_0x64c4('0xb'),_0x580284,_0x370a0d[_0x64c4('0xd')][_0x64c4('0xf')]);return _0x44f01d(_0x370a0d[_0x64c4('0xd')]['message']);}else{logger[_0x64c4('0x10')](_0x64c4('0xb'),_0x580284,'request\x20sent');_0x44f01d(_0x370a0d[_0x64c4('0x11')][_0x64c4('0xf')]);}})[_0x64c4('0x12')](function(_0x3e5330){logger[_0x64c4('0xd')](_0x64c4('0xb'),_0x580284,_0x3e5330);_0x3cc702(_0x3e5330);});});}
\ No newline at end of file
index cf5c3bb..f6042e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b71=['put','isAuthenticated','delete','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','get','/:id','show'];(function(_0x26cdb5,_0x3849a8){var _0x90e40=function(_0x380f41){while(--_0x380f41){_0x26cdb5['push'](_0x26cdb5['shift']());}};_0x90e40(++_0x3849a8);}(_0x6b71,0x114));var _0x16b7=function(_0x276221,_0x378da4){_0x276221=_0x276221-0x0;var _0x4fa716=_0x6b71[_0x276221];return _0x4fa716;};'use strict';var multer=require(_0x16b7('0x0'));var util=require(_0x16b7('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x16b7('0x2'));var router=express[_0x16b7('0x3')]();var fs_extra=require(_0x16b7('0x4'));var auth=require(_0x16b7('0x5'));var interaction=require(_0x16b7('0x6'));var config=require(_0x16b7('0x7'));var controller=require(_0x16b7('0x8'));router[_0x16b7('0x9')](_0x16b7('0xa'),auth['isAuthenticated'](),controller[_0x16b7('0xb')]);router[_0x16b7('0xc')](_0x16b7('0xa'),auth[_0x16b7('0xd')](),controller['update']);router[_0x16b7('0xe')](_0x16b7('0xa'),auth[_0x16b7('0xd')](),controller['destroy']);module[_0x16b7('0xf')]=router;
\ No newline at end of file
+var _0x6250=['multer','util','path','express','Router','../../components/auth/service','../../config/environment','./chatApplication.controller','isAuthenticated','show','put','/:id','update','destroy'];(function(_0x5d79be,_0x5b5b46){var _0x2ac8a8=function(_0x313a57){while(--_0x313a57){_0x5d79be['push'](_0x5d79be['shift']());}};_0x2ac8a8(++_0x5b5b46);}(_0x6250,0xd2));var _0x0625=function(_0x5b2f31,_0x468984){_0x5b2f31=_0x5b2f31-0x0;var _0x575da3=_0x6250[_0x5b2f31];return _0x575da3;};'use strict';var multer=require(_0x0625('0x0'));var util=require(_0x0625('0x1'));var path=require(_0x0625('0x2'));var timeout=require('connect-timeout');var express=require(_0x0625('0x3'));var router=express[_0x0625('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x0625('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x0625('0x6'));var controller=require(_0x0625('0x7'));router['get']('/:id',auth[_0x0625('0x8')](),controller[_0x0625('0x9')]);router[_0x0625('0xa')](_0x0625('0xb'),auth[_0x0625('0x8')](),controller[_0x0625('0xc')]);router['delete']('/:id',auth[_0x0625('0x8')](),controller[_0x0625('0xd')]);module['exports']=router;
\ No newline at end of file
index ba5b27e..dea1c96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75ad=['exports','STRING','BOOLEAN','sequelize'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x75ad,0xd7));var _0xd75a=function(_0x4c2743,_0xf7e3a0){_0x4c2743=_0x4c2743-0x0;var _0x4063c0=_0x75ad[_0x4c2743];return _0x4063c0;};'use strict';var Sequelize=require(_0xd75a('0x0'));module[_0xd75a('0x1')]={'name':{'type':Sequelize[_0xd75a('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xd75a('0x2')]},'write':{'type':Sequelize[_0xd75a('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x065f=['BOOLEAN','sequelize','exports','STRING'];(function(_0x708c47,_0x6eaa1f){var _0x52a470=function(_0x14a750){while(--_0x14a750){_0x708c47['push'](_0x708c47['shift']());}};_0x52a470(++_0x6eaa1f);}(_0x065f,0x175));var _0xf065=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x065f[_0x59ee6f];return _0x4c0979;};'use strict';var Sequelize=require(_0xf065('0x0'));module[_0xf065('0x1')]={'name':{'type':Sequelize[_0xf065('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'write':{'type':Sequelize[_0xf065('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index bf75eed..84969b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd21d=['util','path','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','defaults','localhost','socket.io-emitter','redis','register','sendStatus','end','status','offset','undefined','limit','count','set','json','reject','save','update','then','destroy','error','stack','name','send','index','map','ChatGroup','rawAttributes','fieldName','key','filters','model','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','show','keys','find','create','body','params','describe','ChatInternalMessage','user','toInteger','addMembers','ids','omit','getMembers','findOne','User','nolimit','removeMembers','addMessage','ChatGroupId','getMessages','$gte','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x301cd1,_0x3e6c8c){var _0x17e16d=function(_0x1ff367){while(--_0x1ff367){_0x301cd1['push'](_0x301cd1['shift']());}};_0x17e16d(++_0x3e6c8c);}(_0xd21d,0xbb));var _0xdd21=function(_0x3654c5,_0x2f4ecd){_0x3654c5=_0x3654c5-0x0;var _0xf5f082=_0xd21d[_0x3654c5];return _0xf5f082;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdd21('0x0'));var zipdir=require(_0xdd21('0x1'));var jsonpatch=require(_0xdd21('0x2'));var rp=require(_0xdd21('0x3'));var moment=require(_0xdd21('0x4'));var BPromise=require(_0xdd21('0x5'));var Mustache=require(_0xdd21('0x6'));var util=require(_0xdd21('0x7'));var path=require(_0xdd21('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdd21('0x9'));var _=require(_0xdd21('0xa'));var squel=require(_0xdd21('0xb'));var crypto=require(_0xdd21('0xc'));var jsforce=require(_0xdd21('0xd'));var deskjs=require(_0xdd21('0xe'));var toCsv=require(_0xdd21('0xf'));var querystring=require('querystring');var Papa=require(_0xdd21('0x10'));var Redis=require(_0xdd21('0x11'));var authService=require(_0xdd21('0x12'));var qs=require(_0xdd21('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdd21('0x14'));var logger=require(_0xdd21('0x15'))('api');var utils=require(_0xdd21('0x16'));var config=require(_0xdd21('0x17'));var licenseUtil=require(_0xdd21('0x18'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xdd21('0x19')](config['redis'],{'host':_0xdd21('0x1a'),'port':0x18eb});var socket=require(_0xdd21('0x1b'))(new Redis(config[_0xdd21('0x1c')]));require('./chatGroup.socket')[_0xdd21('0x1d')](socket);function respondWithStatusCode(_0x4ef4f5,_0x27ec0b){_0x27ec0b=_0x27ec0b||0xcc;return function(_0x446e6e){if(_0x446e6e){return _0x4ef4f5[_0xdd21('0x1e')](_0x27ec0b);}return _0x4ef4f5['status'](_0x27ec0b)[_0xdd21('0x1f')]();};}function respondWithResult(_0x4814bc,_0x496afe){_0x496afe=_0x496afe||0xc8;return function(_0x5dee4f){if(_0x5dee4f){return _0x4814bc[_0xdd21('0x20')](_0x496afe)['json'](_0x5dee4f);}};}function respondWithFilteredResult(_0x4de542,_0x2317bc){return function(_0x38675e){if(_0x38675e){var _0xb7f209=typeof _0x2317bc[_0xdd21('0x21')]===_0xdd21('0x22')&&typeof _0x2317bc[_0xdd21('0x23')]===_0xdd21('0x22');var _0x386b6d=_0x38675e['count'];var _0x5c9e1a=_0xb7f209?0x0:_0x2317bc[_0xdd21('0x21')];var _0x20ec9a=_0xb7f209?_0x38675e[_0xdd21('0x24')]:_0x2317bc[_0xdd21('0x21')]+_0x2317bc[_0xdd21('0x23')];var _0x53f464;if(_0x20ec9a>=_0x386b6d){_0x20ec9a=_0x386b6d;_0x53f464=0xc8;}else{_0x53f464=0xce;}_0x4de542[_0xdd21('0x20')](_0x53f464);return _0x4de542[_0xdd21('0x25')]('Content-Range',_0x5c9e1a+'-'+_0x20ec9a+'/'+_0x386b6d)[_0xdd21('0x26')](_0x38675e);}return null;};}function patchUpdates(_0x385c47){return function(_0x5e2848){try{jsonpatch['apply'](_0x5e2848,_0x385c47,!![]);}catch(_0x8a696d){return BPromise[_0xdd21('0x27')](_0x8a696d);}return _0x5e2848[_0xdd21('0x28')]();};}function saveUpdates(_0x313189,_0xfd2ae5){return function(_0x1b6f9d){if(_0x1b6f9d){return _0x1b6f9d[_0xdd21('0x29')](_0x313189)[_0xdd21('0x2a')](function(_0x2551ec){return _0x2551ec;});}return null;};}function removeEntity(_0x4bd515,_0x36b85c){return function(_0xb0c5f0){if(_0xb0c5f0){return _0xb0c5f0[_0xdd21('0x2b')]()[_0xdd21('0x2a')](function(){_0x4bd515[_0xdd21('0x20')](0xcc)[_0xdd21('0x1f')]();});}};}function handleEntityNotFound(_0x1e2cea,_0x4ef2f5){return function(_0x291199){if(!_0x291199){_0x1e2cea[_0xdd21('0x1e')](0x194);}return _0x291199;};}function handleError(_0x59af77,_0x4964b7){_0x4964b7=_0x4964b7||0x1f4;return function(_0x42537d){logger[_0xdd21('0x2c')](_0x42537d[_0xdd21('0x2d')]);if(_0x42537d[_0xdd21('0x2e')]){delete _0x42537d[_0xdd21('0x2e')];}_0x59af77[_0xdd21('0x20')](_0x4964b7)[_0xdd21('0x2f')](_0x42537d);};}exports[_0xdd21('0x30')]=function(_0x48e3d5,_0x1d7966){var _0x391299={},_0x46cfe8={},_0x56bbbf={'count':0x0,'rows':[]};var _0x5b0b51=_[_0xdd21('0x31')](db[_0xdd21('0x32')][_0xdd21('0x33')],function(_0x2ed653){return{'name':_0x2ed653[_0xdd21('0x34')],'type':_0x2ed653['type'][_0xdd21('0x35')]};});_0x46cfe8['model']=_['map'](_0x5b0b51,_0xdd21('0x2e'));_0x46cfe8['query']=_['keys'](_0x48e3d5['query']);_0x46cfe8[_0xdd21('0x36')]=_['intersection'](_0x46cfe8[_0xdd21('0x37')],_0x46cfe8[_0xdd21('0x38')]);_0x391299[_0xdd21('0x39')]=_[_0xdd21('0x3a')](_0x46cfe8['model'],qs[_0xdd21('0x3b')](_0x48e3d5[_0xdd21('0x38')][_0xdd21('0x3b')]));_0x391299['attributes']=_0x391299['attributes'][_0xdd21('0x3c')]?_0x391299[_0xdd21('0x39')]:_0x46cfe8[_0xdd21('0x37')];if(!_0x48e3d5['query'][_0xdd21('0x3d')]('nolimit')){_0x391299[_0xdd21('0x23')]=qs[_0xdd21('0x23')](_0x48e3d5[_0xdd21('0x38')][_0xdd21('0x23')]);_0x391299[_0xdd21('0x21')]=qs[_0xdd21('0x21')](_0x48e3d5[_0xdd21('0x38')][_0xdd21('0x21')]);}_0x391299[_0xdd21('0x3e')]=qs['sort'](_0x48e3d5['query'][_0xdd21('0x3f')]);_0x391299['where']=qs[_0xdd21('0x36')](_[_0xdd21('0x40')](_0x48e3d5[_0xdd21('0x38')],_0x46cfe8[_0xdd21('0x36')]),_0x5b0b51);if(_0x48e3d5[_0xdd21('0x38')][_0xdd21('0x41')]){_0x391299[_0xdd21('0x42')]=_[_0xdd21('0x43')](_0x391299[_0xdd21('0x42')],{'$or':_[_0xdd21('0x31')](_0x5b0b51,function(_0xee9bf2){if(_0xee9bf2[_0xdd21('0x44')]!==_0xdd21('0x45')){var _0x62e6c0={};_0x62e6c0[_0xee9bf2['name']]={'$like':'%'+_0x48e3d5['query'][_0xdd21('0x41')]+'%'};return _0x62e6c0;}})});}_0x391299=_[_0xdd21('0x43')]({},_0x391299,_0x48e3d5[_0xdd21('0x46')]);var _0x4c9ee2={'where':_0x391299[_0xdd21('0x42')]};return db['ChatGroup'][_0xdd21('0x24')](_0x4c9ee2)[_0xdd21('0x2a')](function(_0x5eb8d9){_0x56bbbf[_0xdd21('0x24')]=_0x5eb8d9;if(_0x48e3d5[_0xdd21('0x38')][_0xdd21('0x47')]){_0x391299[_0xdd21('0x48')]=[{'all':!![]}];}return db['ChatGroup'][_0xdd21('0x49')](_0x391299);})['then'](function(_0x503ffd){_0x56bbbf['rows']=_0x503ffd;return _0x56bbbf;})['then'](respondWithFilteredResult(_0x1d7966,_0x391299))[_0xdd21('0x4a')](handleError(_0x1d7966,null));};exports[_0xdd21('0x4b')]=function(_0x4de562,_0x9a980a){var _0x517d94={'raw':!![],'where':{'id':_0x4de562['params']['id']}},_0x50cf3a={};_0x50cf3a['model']=_[_0xdd21('0x4c')](db[_0xdd21('0x32')]['rawAttributes']);_0x50cf3a['query']=_[_0xdd21('0x4c')](_0x4de562[_0xdd21('0x38')]);_0x50cf3a['filters']=_[_0xdd21('0x3a')](_0x50cf3a[_0xdd21('0x37')],_0x50cf3a['query']);_0x517d94[_0xdd21('0x39')]=_[_0xdd21('0x3a')](_0x50cf3a['model'],qs[_0xdd21('0x3b')](_0x4de562[_0xdd21('0x38')][_0xdd21('0x3b')]));_0x517d94['attributes']=_0x517d94[_0xdd21('0x39')][_0xdd21('0x3c')]?_0x517d94[_0xdd21('0x39')]:_0x50cf3a[_0xdd21('0x37')];if(_0x4de562[_0xdd21('0x38')][_0xdd21('0x47')]){_0x517d94[_0xdd21('0x48')]=[{'all':!![]}];}_0x517d94=_[_0xdd21('0x43')]({},_0x517d94,_0x4de562[_0xdd21('0x46')]);return db[_0xdd21('0x32')][_0xdd21('0x4d')](_0x517d94)[_0xdd21('0x2a')](handleEntityNotFound(_0x9a980a,null))[_0xdd21('0x2a')](respondWithResult(_0x9a980a,null))[_0xdd21('0x4a')](handleError(_0x9a980a,null));};exports['create']=function(_0x1ff538,_0x651bf1){return db[_0xdd21('0x32')][_0xdd21('0x4e')](_0x1ff538[_0xdd21('0x4f')],{})[_0xdd21('0x2a')](respondWithResult(_0x651bf1,0xc9))[_0xdd21('0x4a')](handleError(_0x651bf1,null));};exports[_0xdd21('0x29')]=function(_0x3abc8f,_0x54af9b){if(_0x3abc8f[_0xdd21('0x4f')]['id']){delete _0x3abc8f[_0xdd21('0x4f')]['id'];}return db[_0xdd21('0x32')][_0xdd21('0x4d')]({'where':{'id':_0x3abc8f[_0xdd21('0x50')]['id']}})[_0xdd21('0x2a')](handleEntityNotFound(_0x54af9b,null))['then'](saveUpdates(_0x3abc8f[_0xdd21('0x4f')],null))[_0xdd21('0x2a')](respondWithResult(_0x54af9b,null))[_0xdd21('0x4a')](handleError(_0x54af9b,null));};exports[_0xdd21('0x2b')]=function(_0x35a340,_0xce4324){return db[_0xdd21('0x32')]['find']({'where':{'id':_0x35a340[_0xdd21('0x50')]['id']}})[_0xdd21('0x2a')](handleEntityNotFound(_0xce4324,null))[_0xdd21('0x2a')](removeEntity(_0xce4324,null))[_0xdd21('0x4a')](handleError(_0xce4324,null));};exports[_0xdd21('0x51')]=function(_0x59ab86,_0x72e2e3){return db[_0xdd21('0x32')][_0xdd21('0x51')]()['then'](respondWithResult(_0x72e2e3,null))[_0xdd21('0x4a')](handleError(_0x72e2e3,null));};exports['getUnread']=function(_0x42c8f1,_0x10e8d0,_0x330dde){return db[_0xdd21('0x52')][_0xdd21('0x24')]({'where':{'ChatGroupId':_0x42c8f1[_0xdd21('0x50')]['id'],'ToId':_0x42c8f1[_0xdd21('0x53')]['id'],'read':![]}})[_0xdd21('0x2a')](function(_0x41f1ed){return{'id':_[_0xdd21('0x54')](_0x42c8f1[_0xdd21('0x50')]['id']),'count':_0x41f1ed};})[_0xdd21('0x2a')](respondWithResult(_0x10e8d0,null))[_0xdd21('0x4a')](handleError(_0x10e8d0,null));};exports['addMembers']=function(_0x1580c3,_0x279dcf,_0x5de9ee){return db[_0xdd21('0x32')][_0xdd21('0x4d')]({'where':{'id':_0x1580c3[_0xdd21('0x50')]['id']}})[_0xdd21('0x2a')](handleEntityNotFound(_0x279dcf,null))[_0xdd21('0x2a')](function(_0x1bed62){if(_0x1bed62){return _0x1bed62[_0xdd21('0x55')](_0x1580c3[_0xdd21('0x4f')][_0xdd21('0x56')],_[_0xdd21('0x57')](_0x1580c3[_0xdd21('0x4f')],['ids','id'])||{});}})[_0xdd21('0x2a')](respondWithResult(_0x279dcf,null))[_0xdd21('0x4a')](handleError(_0x279dcf,null));};exports[_0xdd21('0x58')]=function(_0x2c108e,_0xd296fd,_0x2ec68c){var _0x59d61e={};var _0x1aa44e={};var _0x1a004c;var _0x5864d0;return db['ChatGroup'][_0xdd21('0x59')]({'where':{'id':_0x2c108e['params']['id']}})[_0xdd21('0x2a')](handleEntityNotFound(_0xd296fd,null))[_0xdd21('0x2a')](function(_0x717c4f){if(_0x717c4f){_0x1a004c=_0x717c4f;_0x1aa44e[_0xdd21('0x37')]=_['keys'](db[_0xdd21('0x5a')][_0xdd21('0x33')]);_0x1aa44e['query']=_[_0xdd21('0x4c')](_0x2c108e[_0xdd21('0x38')]);_0x1aa44e[_0xdd21('0x36')]=_[_0xdd21('0x3a')](_0x1aa44e[_0xdd21('0x37')],_0x1aa44e[_0xdd21('0x38')]);_0x59d61e[_0xdd21('0x39')]=_[_0xdd21('0x3a')](_0x1aa44e[_0xdd21('0x37')],qs[_0xdd21('0x3b')](_0x2c108e[_0xdd21('0x38')]['fields']));_0x59d61e[_0xdd21('0x39')]=_0x59d61e['attributes'][_0xdd21('0x3c')]?_0x59d61e[_0xdd21('0x39')]:_0x1aa44e[_0xdd21('0x37')];_0x59d61e['order']=qs[_0xdd21('0x3f')](_0x2c108e[_0xdd21('0x38')][_0xdd21('0x3f')]);_0x59d61e['where']=qs['filters'](_[_0xdd21('0x40')](_0x2c108e['query'],_0x1aa44e[_0xdd21('0x36')]));if(_0x2c108e[_0xdd21('0x38')][_0xdd21('0x41')]){_0x59d61e[_0xdd21('0x42')]=_[_0xdd21('0x43')](_0x59d61e[_0xdd21('0x42')],{'$or':_[_0xdd21('0x31')](_0x59d61e[_0xdd21('0x39')],function(_0x311bf5){var _0x3bd956={};_0x3bd956[_0x311bf5]={'$like':'%'+_0x2c108e[_0xdd21('0x38')]['filter']+'%'};return _0x3bd956;})});}_0x59d61e=_[_0xdd21('0x43')]({},_0x59d61e,_0x2c108e[_0xdd21('0x46')]);return _0x1a004c[_0xdd21('0x58')](_0x59d61e);}})[_0xdd21('0x2a')](function(_0x169740){if(_0x169740){_0x5864d0=_0x169740[_0xdd21('0x3c')];if(!_0x2c108e[_0xdd21('0x38')][_0xdd21('0x3d')](_0xdd21('0x5b'))){_0x59d61e[_0xdd21('0x23')]=qs['limit'](_0x2c108e['query'][_0xdd21('0x23')]);_0x59d61e[_0xdd21('0x21')]=qs[_0xdd21('0x21')](_0x2c108e[_0xdd21('0x38')][_0xdd21('0x21')]);}return _0x1a004c[_0xdd21('0x58')](_0x59d61e);}})['then'](function(_0x3c6dd7){if(_0x3c6dd7){return _0x3c6dd7?{'count':_0x5864d0,'rows':_0x3c6dd7}:null;}})[_0xdd21('0x2a')](respondWithResult(_0xd296fd,null))[_0xdd21('0x4a')](handleError(_0xd296fd,null));};exports[_0xdd21('0x5c')]=function(_0x374b37,_0x59480e,_0x2d7d37){return db[_0xdd21('0x32')]['find']({'where':{'id':_0x374b37[_0xdd21('0x50')]['id']}})[_0xdd21('0x2a')](handleEntityNotFound(_0x59480e,null))['then'](function(_0xc08ddb){if(_0xc08ddb){return _0xc08ddb['removeMembers'](_0x374b37['query'][_0xdd21('0x56')]);}})[_0xdd21('0x2a')](respondWithStatusCode(_0x59480e,null))[_0xdd21('0x4a')](handleError(_0x59480e,null));};exports[_0xdd21('0x5d')]=function(_0x1b6ec1,_0x6dc852,_0x499f01){if(_0x1b6ec1[_0xdd21('0x4f')]['id']){delete _0x1b6ec1[_0xdd21('0x4f')]['id'];}return db[_0xdd21('0x32')][_0xdd21('0x4d')]({'where':{'id':_0x1b6ec1[_0xdd21('0x50')]['id']}})['then'](handleEntityNotFound(_0x6dc852,null))[_0xdd21('0x2a')](function(_0x1967fb){if(_0x1967fb){_0x1b6ec1[_0xdd21('0x4f')][_0xdd21('0x5e')]=_0x1967fb['id'];return db[_0xdd21('0x52')][_0xdd21('0x4e')](_0x1b6ec1[_0xdd21('0x4f')]);}})[_0xdd21('0x2a')](respondWithResult(_0x6dc852,null))[_0xdd21('0x4a')](handleError(_0x6dc852,null));};exports[_0xdd21('0x5f')]=function(_0x1471e4,_0x538256,_0x1b6bbf){var _0x3316ea={};var _0x156635={};var _0x2369c1;var _0x5dd270;return db[_0xdd21('0x32')]['findOne']({'where':{'id':_0x1471e4[_0xdd21('0x50')]['id']}})[_0xdd21('0x2a')](handleEntityNotFound(_0x538256,null))['then'](function(_0x5016a7){if(_0x5016a7){_0x2369c1=_0x5016a7;_0x156635[_0xdd21('0x37')]=_['keys'](db[_0xdd21('0x52')][_0xdd21('0x33')]);_0x156635['query']=_[_0xdd21('0x4c')](_0x1471e4['query']);_0x156635[_0xdd21('0x36')]=_[_0xdd21('0x3a')](_0x156635[_0xdd21('0x37')],_0x156635[_0xdd21('0x38')]);_0x3316ea[_0xdd21('0x39')]=_[_0xdd21('0x3a')](_0x156635[_0xdd21('0x37')],qs[_0xdd21('0x3b')](_0x1471e4[_0xdd21('0x38')][_0xdd21('0x3b')]));_0x3316ea['attributes']=_0x3316ea[_0xdd21('0x39')]['length']?_0x3316ea[_0xdd21('0x39')]:_0x156635[_0xdd21('0x37')];_0x3316ea[_0xdd21('0x3e')]=qs['sort'](_0x1471e4['query'][_0xdd21('0x3f')]);_0x3316ea[_0xdd21('0x42')]=qs[_0xdd21('0x36')](_[_0xdd21('0x40')](_0x1471e4[_0xdd21('0x38')],_0x156635[_0xdd21('0x36')]));if(_0x1471e4[_0xdd21('0x38')][_0xdd21('0x41')]){_0x3316ea['where']=_[_0xdd21('0x43')](_0x3316ea[_0xdd21('0x42')],{'$or':_[_0xdd21('0x31')](_0x3316ea[_0xdd21('0x39')],function(_0x59357e){var _0x30e522={};_0x30e522[_0x59357e]={'$like':'%'+_0x1471e4[_0xdd21('0x38')][_0xdd21('0x41')]+'%'};return _0x30e522;})});}if(_0x1471e4[_0xdd21('0x38')][_0xdd21('0x60')]){var _0x1970a8=_0x1471e4[_0xdd21('0x38')][_0xdd21('0x60')]['split'](',');var _0x1f51cc={};_0x1f51cc[_0x1970a8[0x0]]={'$gte':moment(_0x1970a8[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x3316ea[_0xdd21('0x42')]=_[_0xdd21('0x43')](_0x3316ea[_0xdd21('0x42')],_0x1f51cc);}_0x3316ea=_[_0xdd21('0x43')]({},_0x3316ea,_0x1471e4['options']);return _0x2369c1[_0xdd21('0x5f')](_0x3316ea);}})['then'](function(_0x4bc012){if(_0x4bc012){_0x5dd270=_0x4bc012[_0xdd21('0x3c')];if(!_0x1471e4[_0xdd21('0x38')][_0xdd21('0x3d')]('nolimit')){_0x3316ea['limit']=qs[_0xdd21('0x23')](_0x1471e4[_0xdd21('0x38')][_0xdd21('0x23')]);_0x3316ea['offset']=qs[_0xdd21('0x21')](_0x1471e4[_0xdd21('0x38')][_0xdd21('0x21')]);}return _0x2369c1[_0xdd21('0x5f')](_0x3316ea);}})[_0xdd21('0x2a')](function(_0x9d1ea5){if(_0x9d1ea5){return _0x9d1ea5?{'count':_0x5dd270,'rows':_0x9d1ea5}:null;}})[_0xdd21('0x2a')](respondWithResult(_0x538256,null))[_0xdd21('0x4a')](handleError(_0x538256,null));};
\ No newline at end of file
+var _0xa46b=['ejs','fs-extra','lodash','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','redis','localhost','socket.io-emitter','register','sendStatus','status','json','offset','undefined','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','ChatGroup','rawAttributes','fieldName','type','key','map','keys','filters','model','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','findAll','rows','catch','show','params','find','create','body','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','ids','omit','getMembers','findOne','removeMembers','ChatGroupId','getMessages','$gte','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path'];(function(_0x1aa86c,_0x5aaeba){var _0x271260=function(_0x50618d){while(--_0x50618d){_0x1aa86c['push'](_0x1aa86c['shift']());}};_0x271260(++_0x5aaeba);}(_0xa46b,0x1c4));var _0xba46=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa46b[_0x3947c9];return _0x2e7871;};'use strict';var emlformat=require(_0xba46('0x0'));var rimraf=require(_0xba46('0x1'));var zipdir=require(_0xba46('0x2'));var jsonpatch=require(_0xba46('0x3'));var rp=require('request-promise');var moment=require(_0xba46('0x4'));var BPromise=require(_0xba46('0x5'));var Mustache=require(_0xba46('0x6'));var util=require('util');var path=require(_0xba46('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xba46('0x8'));var fs=require('fs');var fs_extra=require(_0xba46('0x9'));var _=require(_0xba46('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xba46('0xb'));var deskjs=require(_0xba46('0xc'));var toCsv=require(_0xba46('0xd'));var querystring=require(_0xba46('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xba46('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xba46('0x10'));var logger=require(_0xba46('0x11'))('api');var utils=require(_0xba46('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xba46('0x13'));var db=require('../../mysqldb')['db'];config[_0xba46('0x14')]=_['defaults'](config[_0xba46('0x14')],{'host':_0xba46('0x15'),'port':0x18eb});var socket=require(_0xba46('0x16'))(new Redis(config[_0xba46('0x14')]));require('./chatGroup.socket')[_0xba46('0x17')](socket);function respondWithStatusCode(_0x241b98,_0x3328cb){_0x3328cb=_0x3328cb||0xcc;return function(_0xd5f4cf){if(_0xd5f4cf){return _0x241b98[_0xba46('0x18')](_0x3328cb);}return _0x241b98['status'](_0x3328cb)['end']();};}function respondWithResult(_0x9f8d26,_0x214687){_0x214687=_0x214687||0xc8;return function(_0x245835){if(_0x245835){return _0x9f8d26[_0xba46('0x19')](_0x214687)[_0xba46('0x1a')](_0x245835);}};}function respondWithFilteredResult(_0x236e7c,_0x5564c6){return function(_0x16c7c6){if(_0x16c7c6){var _0x548683=typeof _0x5564c6[_0xba46('0x1b')]===_0xba46('0x1c')&&typeof _0x5564c6['limit']===_0xba46('0x1c');var _0x4046a9=_0x16c7c6['count'];var _0x3bc77f=_0x548683?0x0:_0x5564c6[_0xba46('0x1b')];var _0x44cade=_0x548683?_0x16c7c6[_0xba46('0x1d')]:_0x5564c6[_0xba46('0x1b')]+_0x5564c6['limit'];var _0x2942a9;if(_0x44cade>=_0x4046a9){_0x44cade=_0x4046a9;_0x2942a9=0xc8;}else{_0x2942a9=0xce;}_0x236e7c[_0xba46('0x19')](_0x2942a9);return _0x236e7c[_0xba46('0x1e')]('Content-Range',_0x3bc77f+'-'+_0x44cade+'/'+_0x4046a9)[_0xba46('0x1a')](_0x16c7c6);}return null;};}function patchUpdates(_0x2ea8d1){return function(_0x36b73a){try{jsonpatch[_0xba46('0x1f')](_0x36b73a,_0x2ea8d1,!![]);}catch(_0x4d851f){return BPromise[_0xba46('0x20')](_0x4d851f);}return _0x36b73a[_0xba46('0x21')]();};}function saveUpdates(_0x317b1a,_0x4bbb43){return function(_0x9440de){if(_0x9440de){return _0x9440de[_0xba46('0x22')](_0x317b1a)[_0xba46('0x23')](function(_0x2277bc){return _0x2277bc;});}return null;};}function removeEntity(_0x3dcd2c,_0x56eb30){return function(_0x31e973){if(_0x31e973){return _0x31e973[_0xba46('0x24')]()['then'](function(){_0x3dcd2c[_0xba46('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3bccc9,_0x2248ab){return function(_0x4b28d0){if(!_0x4b28d0){_0x3bccc9[_0xba46('0x18')](0x194);}return _0x4b28d0;};}function handleError(_0x5e5946,_0x38262c){_0x38262c=_0x38262c||0x1f4;return function(_0x498606){logger[_0xba46('0x25')](_0x498606[_0xba46('0x26')]);if(_0x498606['name']){delete _0x498606[_0xba46('0x27')];}_0x5e5946[_0xba46('0x19')](_0x38262c)[_0xba46('0x28')](_0x498606);};}exports[_0xba46('0x29')]=function(_0x3c7cb9,_0x4b385a){var _0x4c76ab={},_0x5ca65b={},_0x354b71={'count':0x0,'rows':[]};var _0x13b929=_['map'](db[_0xba46('0x2a')][_0xba46('0x2b')],function(_0x905f6e){return{'name':_0x905f6e[_0xba46('0x2c')],'type':_0x905f6e[_0xba46('0x2d')][_0xba46('0x2e')]};});_0x5ca65b['model']=_[_0xba46('0x2f')](_0x13b929,_0xba46('0x27'));_0x5ca65b['query']=_[_0xba46('0x30')](_0x3c7cb9['query']);_0x5ca65b[_0xba46('0x31')]=_['intersection'](_0x5ca65b[_0xba46('0x32')],_0x5ca65b[_0xba46('0x33')]);_0x4c76ab[_0xba46('0x34')]=_[_0xba46('0x35')](_0x5ca65b[_0xba46('0x32')],qs[_0xba46('0x36')](_0x3c7cb9[_0xba46('0x33')][_0xba46('0x36')]));_0x4c76ab[_0xba46('0x34')]=_0x4c76ab['attributes'][_0xba46('0x37')]?_0x4c76ab[_0xba46('0x34')]:_0x5ca65b[_0xba46('0x32')];if(!_0x3c7cb9['query'][_0xba46('0x38')](_0xba46('0x39'))){_0x4c76ab[_0xba46('0x3a')]=qs[_0xba46('0x3a')](_0x3c7cb9[_0xba46('0x33')]['limit']);_0x4c76ab[_0xba46('0x1b')]=qs['offset'](_0x3c7cb9['query'][_0xba46('0x1b')]);}_0x4c76ab[_0xba46('0x3b')]=qs['sort'](_0x3c7cb9[_0xba46('0x33')][_0xba46('0x3c')]);_0x4c76ab[_0xba46('0x3d')]=qs['filters'](_[_0xba46('0x3e')](_0x3c7cb9[_0xba46('0x33')],_0x5ca65b[_0xba46('0x31')]),_0x13b929);if(_0x3c7cb9[_0xba46('0x33')]['filter']){_0x4c76ab[_0xba46('0x3d')]=_['merge'](_0x4c76ab[_0xba46('0x3d')],{'$or':_[_0xba46('0x2f')](_0x13b929,function(_0x4f6f0d){if(_0x4f6f0d[_0xba46('0x2d')]!==_0xba46('0x3f')){var _0x58a45d={};_0x58a45d[_0x4f6f0d[_0xba46('0x27')]]={'$like':'%'+_0x3c7cb9[_0xba46('0x33')][_0xba46('0x40')]+'%'};return _0x58a45d;}})});}_0x4c76ab=_[_0xba46('0x41')]({},_0x4c76ab,_0x3c7cb9[_0xba46('0x42')]);var _0x4c336a={'where':_0x4c76ab[_0xba46('0x3d')]};return db[_0xba46('0x2a')]['count'](_0x4c336a)[_0xba46('0x23')](function(_0x2a1270){_0x354b71['count']=_0x2a1270;if(_0x3c7cb9[_0xba46('0x33')][_0xba46('0x43')]){_0x4c76ab['include']=[{'all':!![]}];}return db[_0xba46('0x2a')][_0xba46('0x44')](_0x4c76ab);})[_0xba46('0x23')](function(_0x4f674b){_0x354b71[_0xba46('0x45')]=_0x4f674b;return _0x354b71;})[_0xba46('0x23')](respondWithFilteredResult(_0x4b385a,_0x4c76ab))[_0xba46('0x46')](handleError(_0x4b385a,null));};exports[_0xba46('0x47')]=function(_0x22859f,_0x1c450c){var _0x2775bd={'raw':!![],'where':{'id':_0x22859f[_0xba46('0x48')]['id']}},_0x2ddb8e={};_0x2ddb8e[_0xba46('0x32')]=_['keys'](db['ChatGroup'][_0xba46('0x2b')]);_0x2ddb8e[_0xba46('0x33')]=_[_0xba46('0x30')](_0x22859f['query']);_0x2ddb8e[_0xba46('0x31')]=_[_0xba46('0x35')](_0x2ddb8e[_0xba46('0x32')],_0x2ddb8e[_0xba46('0x33')]);_0x2775bd[_0xba46('0x34')]=_[_0xba46('0x35')](_0x2ddb8e[_0xba46('0x32')],qs['fields'](_0x22859f[_0xba46('0x33')][_0xba46('0x36')]));_0x2775bd['attributes']=_0x2775bd[_0xba46('0x34')]['length']?_0x2775bd[_0xba46('0x34')]:_0x2ddb8e[_0xba46('0x32')];if(_0x22859f[_0xba46('0x33')]['includeAll']){_0x2775bd['include']=[{'all':!![]}];}_0x2775bd=_[_0xba46('0x41')]({},_0x2775bd,_0x22859f[_0xba46('0x42')]);return db[_0xba46('0x2a')][_0xba46('0x49')](_0x2775bd)[_0xba46('0x23')](handleEntityNotFound(_0x1c450c,null))[_0xba46('0x23')](respondWithResult(_0x1c450c,null))[_0xba46('0x46')](handleError(_0x1c450c,null));};exports[_0xba46('0x4a')]=function(_0x17d10f,_0x3acad1){return db[_0xba46('0x2a')][_0xba46('0x4a')](_0x17d10f[_0xba46('0x4b')],{})[_0xba46('0x23')](respondWithResult(_0x3acad1,0xc9))[_0xba46('0x46')](handleError(_0x3acad1,null));};exports[_0xba46('0x22')]=function(_0x28a0f4,_0x7a70f5){if(_0x28a0f4['body']['id']){delete _0x28a0f4[_0xba46('0x4b')]['id'];}return db[_0xba46('0x2a')][_0xba46('0x49')]({'where':{'id':_0x28a0f4[_0xba46('0x48')]['id']}})['then'](handleEntityNotFound(_0x7a70f5,null))[_0xba46('0x23')](saveUpdates(_0x28a0f4[_0xba46('0x4b')],null))[_0xba46('0x23')](respondWithResult(_0x7a70f5,null))[_0xba46('0x46')](handleError(_0x7a70f5,null));};exports['destroy']=function(_0x44b6f9,_0xf6c51d){return db[_0xba46('0x2a')][_0xba46('0x49')]({'where':{'id':_0x44b6f9[_0xba46('0x48')]['id']}})[_0xba46('0x23')](handleEntityNotFound(_0xf6c51d,null))[_0xba46('0x23')](removeEntity(_0xf6c51d,null))['catch'](handleError(_0xf6c51d,null));};exports[_0xba46('0x4c')]=function(_0x37e9c1,_0x22dccc){return db[_0xba46('0x2a')]['describe']()[_0xba46('0x23')](respondWithResult(_0x22dccc,null))['catch'](handleError(_0x22dccc,null));};exports[_0xba46('0x4d')]=function(_0x219181,_0x4d4132,_0x1d4d64){return db[_0xba46('0x4e')][_0xba46('0x1d')]({'where':{'ChatGroupId':_0x219181['params']['id'],'ToId':_0x219181[_0xba46('0x4f')]['id'],'read':![]}})[_0xba46('0x23')](function(_0x4035c4){return{'id':_[_0xba46('0x50')](_0x219181[_0xba46('0x48')]['id']),'count':_0x4035c4};})[_0xba46('0x23')](respondWithResult(_0x4d4132,null))[_0xba46('0x46')](handleError(_0x4d4132,null));};exports[_0xba46('0x51')]=function(_0x54d156,_0xd6169c,_0x1d77b8){return db['ChatGroup']['find']({'where':{'id':_0x54d156[_0xba46('0x48')]['id']}})[_0xba46('0x23')](handleEntityNotFound(_0xd6169c,null))[_0xba46('0x23')](function(_0x1965ce){if(_0x1965ce){return _0x1965ce['addMembers'](_0x54d156[_0xba46('0x4b')][_0xba46('0x52')],_[_0xba46('0x53')](_0x54d156[_0xba46('0x4b')],[_0xba46('0x52'),'id'])||{});}})['then'](respondWithResult(_0xd6169c,null))[_0xba46('0x46')](handleError(_0xd6169c,null));};exports[_0xba46('0x54')]=function(_0x4e3676,_0x38a3ea,_0x2dd591){var _0x31f8f8={};var _0x4de1a4={};var _0x13ab17;var _0x2b91d4;return db[_0xba46('0x2a')][_0xba46('0x55')]({'where':{'id':_0x4e3676['params']['id']}})[_0xba46('0x23')](handleEntityNotFound(_0x38a3ea,null))[_0xba46('0x23')](function(_0x4b6e86){if(_0x4b6e86){_0x13ab17=_0x4b6e86;_0x4de1a4['model']=_[_0xba46('0x30')](db['User']['rawAttributes']);_0x4de1a4[_0xba46('0x33')]=_[_0xba46('0x30')](_0x4e3676[_0xba46('0x33')]);_0x4de1a4[_0xba46('0x31')]=_[_0xba46('0x35')](_0x4de1a4[_0xba46('0x32')],_0x4de1a4['query']);_0x31f8f8[_0xba46('0x34')]=_[_0xba46('0x35')](_0x4de1a4[_0xba46('0x32')],qs[_0xba46('0x36')](_0x4e3676[_0xba46('0x33')][_0xba46('0x36')]));_0x31f8f8['attributes']=_0x31f8f8[_0xba46('0x34')][_0xba46('0x37')]?_0x31f8f8[_0xba46('0x34')]:_0x4de1a4[_0xba46('0x32')];_0x31f8f8[_0xba46('0x3b')]=qs[_0xba46('0x3c')](_0x4e3676[_0xba46('0x33')][_0xba46('0x3c')]);_0x31f8f8['where']=qs[_0xba46('0x31')](_[_0xba46('0x3e')](_0x4e3676['query'],_0x4de1a4['filters']));if(_0x4e3676[_0xba46('0x33')]['filter']){_0x31f8f8[_0xba46('0x3d')]=_[_0xba46('0x41')](_0x31f8f8[_0xba46('0x3d')],{'$or':_[_0xba46('0x2f')](_0x31f8f8['attributes'],function(_0x8bc8eb){var _0x4dffb5={};_0x4dffb5[_0x8bc8eb]={'$like':'%'+_0x4e3676[_0xba46('0x33')]['filter']+'%'};return _0x4dffb5;})});}_0x31f8f8=_['merge']({},_0x31f8f8,_0x4e3676['options']);return _0x13ab17['getMembers'](_0x31f8f8);}})[_0xba46('0x23')](function(_0x4c0138){if(_0x4c0138){_0x2b91d4=_0x4c0138[_0xba46('0x37')];if(!_0x4e3676[_0xba46('0x33')][_0xba46('0x38')]('nolimit')){_0x31f8f8[_0xba46('0x3a')]=qs[_0xba46('0x3a')](_0x4e3676[_0xba46('0x33')]['limit']);_0x31f8f8[_0xba46('0x1b')]=qs[_0xba46('0x1b')](_0x4e3676[_0xba46('0x33')][_0xba46('0x1b')]);}return _0x13ab17[_0xba46('0x54')](_0x31f8f8);}})['then'](function(_0x4f0958){if(_0x4f0958){return _0x4f0958?{'count':_0x2b91d4,'rows':_0x4f0958}:null;}})['then'](respondWithResult(_0x38a3ea,null))[_0xba46('0x46')](handleError(_0x38a3ea,null));};exports[_0xba46('0x56')]=function(_0x2b8166,_0x338d94,_0x4fbe64){return db[_0xba46('0x2a')][_0xba46('0x49')]({'where':{'id':_0x2b8166['params']['id']}})[_0xba46('0x23')](handleEntityNotFound(_0x338d94,null))['then'](function(_0x4689d2){if(_0x4689d2){return _0x4689d2[_0xba46('0x56')](_0x2b8166[_0xba46('0x33')][_0xba46('0x52')]);}})[_0xba46('0x23')](respondWithStatusCode(_0x338d94,null))[_0xba46('0x46')](handleError(_0x338d94,null));};exports['addMessage']=function(_0xa2603,_0xe2d507,_0xad7181){if(_0xa2603[_0xba46('0x4b')]['id']){delete _0xa2603[_0xba46('0x4b')]['id'];}return db[_0xba46('0x2a')][_0xba46('0x49')]({'where':{'id':_0xa2603[_0xba46('0x48')]['id']}})['then'](handleEntityNotFound(_0xe2d507,null))[_0xba46('0x23')](function(_0x13ec39){if(_0x13ec39){_0xa2603['body'][_0xba46('0x57')]=_0x13ec39['id'];return db[_0xba46('0x4e')][_0xba46('0x4a')](_0xa2603['body']);}})[_0xba46('0x23')](respondWithResult(_0xe2d507,null))[_0xba46('0x46')](handleError(_0xe2d507,null));};exports[_0xba46('0x58')]=function(_0x4611d1,_0x41cf24,_0x4b32e1){var _0xfbabfc={};var _0x42fd33={};var _0x2df859;var _0x2da682;return db[_0xba46('0x2a')][_0xba46('0x55')]({'where':{'id':_0x4611d1['params']['id']}})[_0xba46('0x23')](handleEntityNotFound(_0x41cf24,null))[_0xba46('0x23')](function(_0x259e27){if(_0x259e27){_0x2df859=_0x259e27;_0x42fd33[_0xba46('0x32')]=_[_0xba46('0x30')](db['ChatInternalMessage'][_0xba46('0x2b')]);_0x42fd33[_0xba46('0x33')]=_['keys'](_0x4611d1[_0xba46('0x33')]);_0x42fd33[_0xba46('0x31')]=_[_0xba46('0x35')](_0x42fd33[_0xba46('0x32')],_0x42fd33[_0xba46('0x33')]);_0xfbabfc['attributes']=_[_0xba46('0x35')](_0x42fd33[_0xba46('0x32')],qs[_0xba46('0x36')](_0x4611d1['query'][_0xba46('0x36')]));_0xfbabfc[_0xba46('0x34')]=_0xfbabfc['attributes'][_0xba46('0x37')]?_0xfbabfc[_0xba46('0x34')]:_0x42fd33[_0xba46('0x32')];_0xfbabfc['order']=qs[_0xba46('0x3c')](_0x4611d1[_0xba46('0x33')]['sort']);_0xfbabfc['where']=qs['filters'](_[_0xba46('0x3e')](_0x4611d1[_0xba46('0x33')],_0x42fd33[_0xba46('0x31')]));if(_0x4611d1[_0xba46('0x33')][_0xba46('0x40')]){_0xfbabfc[_0xba46('0x3d')]=_[_0xba46('0x41')](_0xfbabfc[_0xba46('0x3d')],{'$or':_[_0xba46('0x2f')](_0xfbabfc[_0xba46('0x34')],function(_0x181080){var _0x5304a4={};_0x5304a4[_0x181080]={'$like':'%'+_0x4611d1[_0xba46('0x33')][_0xba46('0x40')]+'%'};return _0x5304a4;})});}if(_0x4611d1['query'][_0xba46('0x59')]){var _0x58eb9f=_0x4611d1[_0xba46('0x33')][_0xba46('0x59')]['split'](',');var _0x3042db={};_0x3042db[_0x58eb9f[0x0]]={'$gte':moment(_0x58eb9f[0x1])[_0xba46('0x5a')](_0xba46('0x5b'))};_0xfbabfc['where']=_[_0xba46('0x41')](_0xfbabfc['where'],_0x3042db);}_0xfbabfc=_[_0xba46('0x41')]({},_0xfbabfc,_0x4611d1[_0xba46('0x42')]);return _0x2df859[_0xba46('0x58')](_0xfbabfc);}})[_0xba46('0x23')](function(_0x35cf56){if(_0x35cf56){_0x2da682=_0x35cf56[_0xba46('0x37')];if(!_0x4611d1['query']['hasOwnProperty'](_0xba46('0x39'))){_0xfbabfc['limit']=qs['limit'](_0x4611d1[_0xba46('0x33')][_0xba46('0x3a')]);_0xfbabfc[_0xba46('0x1b')]=qs['offset'](_0x4611d1[_0xba46('0x33')][_0xba46('0x1b')]);}return _0x2df859[_0xba46('0x58')](_0xfbabfc);}})[_0xba46('0x23')](function(_0x2131a7){if(_0x2131a7){return _0x2131a7?{'count':_0x2da682,'rows':_0x2131a7}:null;}})[_0xba46('0x23')](respondWithResult(_0x41cf24,null))[_0xba46('0x46')](handleError(_0x41cf24,null));};
\ No newline at end of file
index adfca8b..f956d8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a26=['events','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0xa9d6ec,_0x3090d3){var _0x40089a=function(_0x25e929){while(--_0x25e929){_0xa9d6ec['push'](_0xa9d6ec['shift']());}};_0x40089a(++_0x3090d3);}(_0x3a26,0x129));var _0x63a2=function(_0x66ce89,_0x61d36a){_0x66ce89=_0x66ce89-0x0;var _0x448684=_0x3a26[_0x66ce89];return _0x448684;};'use strict';var EventEmitter=require(_0x63a2('0x0'));var ChatGroup=require('../../mysqldb')['db']['ChatGroup'];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x63a2('0x1')](0x0);var events={'afterCreate':_0x63a2('0x2'),'afterUpdate':_0x63a2('0x3'),'afterDestroy':_0x63a2('0x4')};function emitEvent(_0x399cf0){return function(_0x52d368,_0x1d2898,_0x178f68){ChatGroupEvents[_0x63a2('0x5')](_0x399cf0+':'+_0x52d368['id'],_0x52d368);ChatGroupEvents['emit'](_0x399cf0,_0x52d368);_0x178f68(null);};}for(var e in events){if(events[_0x63a2('0x6')](e)){var event=events[e];ChatGroup[_0x63a2('0x7')](e,emitEvent(event));}}module[_0x63a2('0x8')]=ChatGroupEvents;
\ No newline at end of file
+var _0xec79=['save','update','remove','emit','hasOwnProperty','hook','exports','ChatGroup','setMaxListeners'];(function(_0x5dc8ea,_0x77ecb2){var _0x228996=function(_0x3142ca){while(--_0x3142ca){_0x5dc8ea['push'](_0x5dc8ea['shift']());}};_0x228996(++_0x77ecb2);}(_0xec79,0x1b7));var _0x9ec7=function(_0x34fd5e,_0x5e35b2){_0x34fd5e=_0x34fd5e-0x0;var _0x3877b9=_0xec79[_0x34fd5e];return _0x3877b9;};'use strict';var EventEmitter=require('events');var ChatGroup=require('../../mysqldb')['db'][_0x9ec7('0x0')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x9ec7('0x1')](0x0);var events={'afterCreate':_0x9ec7('0x2'),'afterUpdate':_0x9ec7('0x3'),'afterDestroy':_0x9ec7('0x4')};function emitEvent(_0x117c71){return function(_0x5ecf46,_0x3addb6,_0x560fad){ChatGroupEvents[_0x9ec7('0x5')](_0x117c71+':'+_0x5ecf46['id'],_0x5ecf46);ChatGroupEvents[_0x9ec7('0x5')](_0x117c71,_0x5ecf46);_0x560fad(null);};}for(var e in events){if(events[_0x9ec7('0x6')](e)){var event=events[e];ChatGroup[_0x9ec7('0x7')](e,emitEvent(event));}}module[_0x9ec7('0x8')]=ChatGroupEvents;
\ No newline at end of file
index adee575..7e3884e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1239=['../../config/environment','./chatGroup.attributes','exports','define','ChatGroup','chat_groups','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x1964de,_0x8f0142){var _0xb37020=function(_0x32549c){while(--_0x32549c){_0x1964de['push'](_0x1964de['shift']());}};_0xb37020(++_0x8f0142);}(_0x1239,0x1b8));var _0x9123=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x1239[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x9123('0x0'));var util=require(_0x9123('0x1'));var logger=require(_0x9123('0x2'))(_0x9123('0x3'));var moment=require(_0x9123('0x4'));var BPromise=require(_0x9123('0x5'));var rp=require(_0x9123('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9123('0x7'));var config=require(_0x9123('0x8'));var attributes=require(_0x9123('0x9'));module[_0x9123('0xa')]=function(_0x12487d,_0x2cc5c5){return _0x12487d[_0x9123('0xb')](_0x9123('0xc'),attributes,{'tableName':_0x9123('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbee6=['../../config/logger','api','moment','request-promise','path','rimraf','exports','ChatGroup','chat_groups','lodash','util'];(function(_0x1ab180,_0x382b2c){var _0xfb2c2d=function(_0x1c5fd3){while(--_0x1c5fd3){_0x1ab180['push'](_0x1ab180['shift']());}};_0xfb2c2d(++_0x382b2c);}(_0xbee6,0x11c));var _0x6bee=function(_0x4d8179,_0x3ab9ce){_0x4d8179=_0x4d8179-0x0;var _0x24c76a=_0xbee6[_0x4d8179];return _0x24c76a;};'use strict';var _=require(_0x6bee('0x0'));var util=require(_0x6bee('0x1'));var logger=require(_0x6bee('0x2'))(_0x6bee('0x3'));var moment=require(_0x6bee('0x4'));var BPromise=require('bluebird');var rp=require(_0x6bee('0x5'));var fs=require('fs');var path=require(_0x6bee('0x6'));var rimraf=require(_0x6bee('0x7'));var config=require('../../config/environment');var attributes=require('./chatGroup.attributes');module[_0x6bee('0x8')]=function(_0xa603ee,_0x2c85d2){return _0xa603ee['define'](_0x6bee('0x9'),attributes,{'tableName':_0x6bee('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 54d522b..f4db285 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf849=['../../mysqldb','../../config/environment','http','redis','socket.io-emitter','./chatGroup.socket','register','request','then','info','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis'];(function(_0x2c2d74,_0x4c7d1e){var _0x425177=function(_0x4c9bf7){while(--_0x4c9bf7){_0x2c2d74['push'](_0x2c2d74['shift']());}};_0x425177(++_0x4c7d1e);}(_0xf849,0x193));var _0x9f84=function(_0x522e32,_0x440e6d){_0x522e32=_0x522e32-0x0;var _0x216842=_0xf849[_0x522e32];return _0x216842;};'use strict';var _=require(_0x9f84('0x0'));var util=require(_0x9f84('0x1'));var moment=require(_0x9f84('0x2'));var BPromise=require('bluebird');var rs=require(_0x9f84('0x3'));var fs=require('fs');var Redis=require(_0x9f84('0x4'));var db=require(_0x9f84('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x9f84('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x9f84('0x7')]({'port':0x232a});config['redis']=_['defaults'](config[_0x9f84('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x9f84('0x9'))(new Redis(config[_0x9f84('0x8')]));require(_0x9f84('0xa'))[_0x9f84('0xb')](socket);function respondWithRpcPromise(_0xe8d4d7,_0x3c1c39,_0x327f10){return new BPromise(function(_0xf32072,_0x4a4c2){return client[_0x9f84('0xc')](_0xe8d4d7,_0x327f10)[_0x9f84('0xd')](function(_0xd3abfa){logger[_0x9f84('0xe')](_0x9f84('0xf'),_0x3c1c39,_0x9f84('0x10'));logger[_0x9f84('0x11')]('ChatGroup,\x20%s,\x20%s,\x20%s',_0x3c1c39,_0x9f84('0x10'),JSON[_0x9f84('0x12')](_0xd3abfa));if(_0xd3abfa[_0x9f84('0x13')]){if(_0xd3abfa[_0x9f84('0x13')][_0x9f84('0x14')]===0x1f4){logger['error'](_0x9f84('0xf'),_0x3c1c39,_0xd3abfa[_0x9f84('0x13')]['message']);return _0x4a4c2(_0xd3abfa['error'][_0x9f84('0x15')]);}logger[_0x9f84('0x13')](_0x9f84('0xf'),_0x3c1c39,_0xd3abfa[_0x9f84('0x13')][_0x9f84('0x15')]);return _0xf32072(_0xd3abfa['error'][_0x9f84('0x15')]);}else{logger[_0x9f84('0xe')]('ChatGroup,\x20%s,\x20%s',_0x3c1c39,_0x9f84('0x10'));_0xf32072(_0xd3abfa[_0x9f84('0x16')]['message']);}})[_0x9f84('0x17')](function(_0x5610d4){logger['error'](_0x9f84('0xf'),_0x3c1c39,_0x5610d4);_0x4a4c2(_0x5610d4);});});}
\ No newline at end of file
+var _0x06bf=['socket.io-emitter','request','then','debug','ChatGroup,\x20%s,\x20%s,\x20%s','error','ChatGroup,\x20%s,\x20%s','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults'];(function(_0x3a5867,_0x4eb239){var _0xe5702d=function(_0x1db1b8){while(--_0x1db1b8){_0x3a5867['push'](_0x3a5867['shift']());}};_0xe5702d(++_0x4eb239);}(_0x06bf,0x105));var _0xf06b=function(_0x26ac45,_0x5a1277){_0x26ac45=_0x26ac45-0x0;var _0x56242c=_0x06bf[_0x26ac45];return _0x56242c;};'use strict';var _=require(_0xf06b('0x0'));var util=require(_0xf06b('0x1'));var moment=require(_0xf06b('0x2'));var BPromise=require(_0xf06b('0x3'));var rs=require(_0xf06b('0x4'));var fs=require('fs');var Redis=require(_0xf06b('0x5'));var db=require(_0xf06b('0x6'))['db'];var utils=require(_0xf06b('0x7'));var logger=require('../../config/logger')(_0xf06b('0x8'));var config=require(_0xf06b('0x9'));var jayson=require(_0xf06b('0xa'));var client=jayson['client'][_0xf06b('0xb')]({'port':0x232a});config[_0xf06b('0xc')]=_[_0xf06b('0xd')](config[_0xf06b('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xf06b('0xe'))(new Redis(config[_0xf06b('0xc')]));require('./chatGroup.socket')['register'](socket);function respondWithRpcPromise(_0x222824,_0x2f41d3,_0x151581){return new BPromise(function(_0x40773e,_0x2823b1){return client[_0xf06b('0xf')](_0x222824,_0x151581)[_0xf06b('0x10')](function(_0x12d627){logger['info']('ChatGroup,\x20%s,\x20%s',_0x2f41d3,'request\x20sent');logger[_0xf06b('0x11')](_0xf06b('0x12'),_0x2f41d3,'request\x20sent',JSON['stringify'](_0x12d627));if(_0x12d627[_0xf06b('0x13')]){if(_0x12d627[_0xf06b('0x13')]['code']===0x1f4){logger[_0xf06b('0x13')](_0xf06b('0x14'),_0x2f41d3,_0x12d627[_0xf06b('0x13')]['message']);return _0x2823b1(_0x12d627[_0xf06b('0x13')][_0xf06b('0x15')]);}logger[_0xf06b('0x13')]('ChatGroup,\x20%s,\x20%s',_0x2f41d3,_0x12d627[_0xf06b('0x13')][_0xf06b('0x15')]);return _0x40773e(_0x12d627[_0xf06b('0x13')][_0xf06b('0x15')]);}else{logger[_0xf06b('0x16')](_0xf06b('0x14'),_0x2f41d3,'request\x20sent');_0x40773e(_0x12d627[_0xf06b('0x17')][_0xf06b('0x15')]);}})[_0xf06b('0x18')](function(_0x486aea){logger[_0xf06b('0x13')](_0xf06b('0x14'),_0x2f41d3,_0x486aea);_0x2823b1(_0x486aea);});});}
\ No newline at end of file
index 91f8faf..87cd44c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66e8=['removeListener','register','length','chatGroup:','./chatGroup.events','save','update','emit'];(function(_0x541f41,_0x543d62){var _0x1fc12b=function(_0xec20ae){while(--_0xec20ae){_0x541f41['push'](_0x541f41['shift']());}};_0x1fc12b(++_0x543d62);}(_0x66e8,0xa4));var _0x866e=function(_0xc5c653,_0x4c86f1){_0xc5c653=_0xc5c653-0x0;var _0x5da819=_0x66e8[_0xc5c653];return _0x5da819;};'use strict';var ChatGroupEvents=require(_0x866e('0x0'));var events=[_0x866e('0x1'),'remove',_0x866e('0x2')];function createListener(_0x6d033,_0x4e1190){return function(_0x1b4778){_0x4e1190[_0x866e('0x3')](_0x6d033,_0x1b4778);};}function removeListener(_0x2c24b5,_0xd38be7){return function(){ChatGroupEvents[_0x866e('0x4')](_0x2c24b5,_0xd38be7);};}exports[_0x866e('0x5')]=function(_0xec9b67){for(var _0x9abd25=0x0,_0x36a566=events[_0x866e('0x6')];_0x9abd25<_0x36a566;_0x9abd25++){var _0x1e6da8=events[_0x9abd25];var _0x3a5af9=createListener(_0x866e('0x7')+_0x1e6da8,_0xec9b67);ChatGroupEvents['on'](_0x1e6da8,_0x3a5af9);}};
\ No newline at end of file
+var _0xdf09=['./chatGroup.events','save','update','emit','removeListener','register','chatGroup:'];(function(_0x48db9e,_0x43b9d2){var _0x53db5a=function(_0x43435e){while(--_0x43435e){_0x48db9e['push'](_0x48db9e['shift']());}};_0x53db5a(++_0x43b9d2);}(_0xdf09,0x13b));var _0x9df0=function(_0x5beda6,_0x585195){_0x5beda6=_0x5beda6-0x0;var _0x22892b=_0xdf09[_0x5beda6];return _0x22892b;};'use strict';var ChatGroupEvents=require(_0x9df0('0x0'));var events=[_0x9df0('0x1'),'remove',_0x9df0('0x2')];function createListener(_0x56fa4b,_0x3b7511){return function(_0x35dc3f){_0x3b7511[_0x9df0('0x3')](_0x56fa4b,_0x35dc3f);};}function removeListener(_0x2ace84,_0x409e2c){return function(){ChatGroupEvents[_0x9df0('0x4')](_0x2ace84,_0x409e2c);};}exports[_0x9df0('0x5')]=function(_0xc709c6){for(var _0x5a755d=0x0,_0x8e8e40=events['length'];_0x5a755d<_0x8e8e40;_0x5a755d++){var _0x3a3448=events[_0x5a755d];var _0x405185=createListener(_0x9df0('0x6')+_0x3a3448,_0xc709c6);ChatGroupEvents['on'](_0x3a3448,_0x405185);}};
\ No newline at end of file
index f71f958..6989cf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ec0=['create','addMembers','addMessage','put','update','delete','destroy','removeMembers','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./chatGroup.controller','isAuthenticated','index','describe','get','/:id','show','/:id/unread','getUnread','/:id/members','/:id/messages','post'];(function(_0x25bd26,_0x3b6d36){var _0x457bfa=function(_0x3feec7){while(--_0x3feec7){_0x25bd26['push'](_0x25bd26['shift']());}};_0x457bfa(++_0x3b6d36);}(_0x3ec0,0x159));var _0x03ec=function(_0x568b4a,_0x3ef977){_0x568b4a=_0x568b4a-0x0;var _0x102a47=_0x3ec0[_0x568b4a];return _0x102a47;};'use strict';var multer=require('multer');var util=require(_0x03ec('0x0'));var path=require(_0x03ec('0x1'));var timeout=require(_0x03ec('0x2'));var express=require(_0x03ec('0x3'));var router=express['Router']();var fs_extra=require(_0x03ec('0x4'));var auth=require(_0x03ec('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x03ec('0x6'));var controller=require(_0x03ec('0x7'));router['get']('/',auth[_0x03ec('0x8')](),controller[_0x03ec('0x9')]);router['get']('/describe',auth[_0x03ec('0x8')](),controller[_0x03ec('0xa')]);router[_0x03ec('0xb')](_0x03ec('0xc'),auth[_0x03ec('0x8')](),controller[_0x03ec('0xd')]);router[_0x03ec('0xb')](_0x03ec('0xe'),auth[_0x03ec('0x8')](),controller[_0x03ec('0xf')]);router['get'](_0x03ec('0x10'),auth[_0x03ec('0x8')](),controller['getMembers']);router['get'](_0x03ec('0x11'),auth[_0x03ec('0x8')](),controller['getMessages']);router[_0x03ec('0x12')]('/',auth[_0x03ec('0x8')](),controller[_0x03ec('0x13')]);router['post'](_0x03ec('0x10'),auth[_0x03ec('0x8')](),controller[_0x03ec('0x14')]);router[_0x03ec('0x12')](_0x03ec('0x11'),auth[_0x03ec('0x8')](),controller[_0x03ec('0x15')]);router[_0x03ec('0x16')](_0x03ec('0xc'),auth[_0x03ec('0x8')](),controller[_0x03ec('0x17')]);router[_0x03ec('0x18')](_0x03ec('0xc'),auth[_0x03ec('0x8')](),controller[_0x03ec('0x19')]);router[_0x03ec('0x18')]('/:id/members',auth[_0x03ec('0x8')](),controller[_0x03ec('0x1a')]);module[_0x03ec('0x1b')]=router;
\ No newline at end of file
+var _0x0afd=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatGroup.controller','get','isAuthenticated','index','/describe','describe','show','/:id/unread','getUnread','/:id/members','getMembers','getMessages','post','create','addMembers','/:id/messages','addMessage','put','/:id','update','delete','destroy','removeMembers','exports','multer','path'];(function(_0x33a863,_0x404f01){var _0xbad384=function(_0x3a8f0e){while(--_0x3a8f0e){_0x33a863['push'](_0x33a863['shift']());}};_0xbad384(++_0x404f01);}(_0x0afd,0x9e));var _0xd0af=function(_0x99ed4f,_0x51c663){_0x99ed4f=_0x99ed4f-0x0;var _0x394241=_0x0afd[_0x99ed4f];return _0x394241;};'use strict';var multer=require(_0xd0af('0x0'));var util=require('util');var path=require(_0xd0af('0x1'));var timeout=require(_0xd0af('0x2'));var express=require(_0xd0af('0x3'));var router=express[_0xd0af('0x4')]();var fs_extra=require(_0xd0af('0x5'));var auth=require(_0xd0af('0x6'));var interaction=require(_0xd0af('0x7'));var config=require('../../config/environment');var controller=require(_0xd0af('0x8'));router[_0xd0af('0x9')]('/',auth[_0xd0af('0xa')](),controller[_0xd0af('0xb')]);router['get'](_0xd0af('0xc'),auth['isAuthenticated'](),controller[_0xd0af('0xd')]);router[_0xd0af('0x9')]('/:id',auth[_0xd0af('0xa')](),controller[_0xd0af('0xe')]);router[_0xd0af('0x9')](_0xd0af('0xf'),auth['isAuthenticated'](),controller[_0xd0af('0x10')]);router['get'](_0xd0af('0x11'),auth['isAuthenticated'](),controller[_0xd0af('0x12')]);router[_0xd0af('0x9')]('/:id/messages',auth[_0xd0af('0xa')](),controller[_0xd0af('0x13')]);router[_0xd0af('0x14')]('/',auth[_0xd0af('0xa')](),controller[_0xd0af('0x15')]);router['post'](_0xd0af('0x11'),auth[_0xd0af('0xa')](),controller[_0xd0af('0x16')]);router[_0xd0af('0x14')](_0xd0af('0x17'),auth[_0xd0af('0xa')](),controller[_0xd0af('0x18')]);router[_0xd0af('0x19')](_0xd0af('0x1a'),auth[_0xd0af('0xa')](),controller[_0xd0af('0x1b')]);router[_0xd0af('0x1c')](_0xd0af('0x1a'),auth[_0xd0af('0xa')](),controller[_0xd0af('0x1d')]);router[_0xd0af('0x1c')](_0xd0af('0x11'),auth[_0xd0af('0xa')](),controller[_0xd0af('0x1e')]);module[_0xd0af('0x1f')]=router;
\ No newline at end of file
index d037dd1..4d2c9fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x928c=['TEXT','DATE','STRING','long','out','BOOLEAN','INTEGER','star','thumb'];(function(_0xe2a247,_0x109308){var _0xd1ce59=function(_0x4f16e6){while(--_0x4f16e6){_0xe2a247['push'](_0xe2a247['shift']());}};_0xd1ce59(++_0x109308);}(_0x928c,0x17f));var _0xc928=function(_0x19ce2d,_0x12ad5e){_0x19ce2d=_0x19ce2d-0x0;var _0x489514=_0x928c[_0x19ce2d];return _0x489514;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize[_0xc928('0x0')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0xc928('0x1')]},'ratingType':{'type':Sequelize['ENUM'](_0xc928('0x2'),_0xc928('0x3')),'defaultValue':_0xc928('0x2')},'ratingMessage':{'type':Sequelize[_0xc928('0x4')]},'pathTranscript':{'type':Sequelize[_0xc928('0x4')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0xc928('0x5')]},'disposition':{'type':Sequelize[_0xc928('0x6')]},'secondDisposition':{'type':Sequelize[_0xc928('0x6')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize['STRING']},'browserVersion':{'type':Sequelize[_0xc928('0x6')]},'osName':{'type':Sequelize[_0xc928('0x6')]},'osVersion':{'type':Sequelize[_0xc928('0x6')]},'deviceModel':{'type':Sequelize[_0xc928('0x6')]},'deviceVendor':{'type':Sequelize[_0xc928('0x6')]},'deviceType':{'type':Sequelize[_0xc928('0x6')]},'referer':{'type':Sequelize[_0xc928('0x4')]},'customerIp':{'type':Sequelize[_0xc928('0x6')]},'formData':{'type':Sequelize['TEXT'](_0xc928('0x7'))},'read1stAt':{'type':Sequelize[_0xc928('0x5')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xc928('0x8')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize['STRING']},'customerPort':{'type':Sequelize[_0xc928('0x6')]},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0xc928('0x0')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9c02=['out','sequelize','exports','BOOLEAN','star','TEXT','DATE','STRING','ENUM'];(function(_0x49c653,_0x390195){var _0x31e169=function(_0x3684ac){while(--_0x3684ac){_0x49c653['push'](_0x49c653['shift']());}};_0x31e169(++_0x390195);}(_0x9c02,0x196));var _0x29c0=function(_0x268f90,_0x38ac63){_0x268f90=_0x268f90-0x0;var _0xfa32ed=_0x9c02[_0x268f90];return _0xfa32ed;};'use strict';var Sequelize=require(_0x29c0('0x0'));module[_0x29c0('0x1')]={'closed':{'type':Sequelize[_0x29c0('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize['ENUM']('star','thumb'),'defaultValue':_0x29c0('0x3')},'ratingMessage':{'type':Sequelize['TEXT']},'pathTranscript':{'type':Sequelize[_0x29c0('0x4')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x29c0('0x5')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x29c0('0x6')]},'thirdDisposition':{'type':Sequelize[_0x29c0('0x6')]},'note':{'type':Sequelize[_0x29c0('0x6')]},'browserName':{'type':Sequelize['STRING']},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize[_0x29c0('0x6')]},'osVersion':{'type':Sequelize[_0x29c0('0x6')]},'deviceModel':{'type':Sequelize[_0x29c0('0x6')]},'deviceVendor':{'type':Sequelize[_0x29c0('0x6')]},'deviceType':{'type':Sequelize[_0x29c0('0x6')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0x29c0('0x4')]('long')},'read1stAt':{'type':Sequelize[_0x29c0('0x5')]},'lastMsgAt':{'type':Sequelize[_0x29c0('0x5')]},'lastMsgDirection':{'type':Sequelize[_0x29c0('0x7')]('in',_0x29c0('0x8')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x29c0('0x6')]},'customerPort':{'type':Sequelize[_0x29c0('0x6')]},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0x29c0('0x2')],'defaultValue':![]}};
\ No newline at end of file
index ee5bb66..3cc152c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['browserName','referer','customerIp','customerPort','tail','existsSync','createReadStream','pipe','createWriteStream','renderFile','views','transcript-','.pdf','unlinkSync','rimraf','zip-dir','request-promise','moment','mustache','util','path','ejs','lodash','squel','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','./chatInteraction.socket','register','jayson/promise','http','client','then','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','status','end','json','offset','undefined','limit','set','Content-Range','update','destroy','sendStatus','stack','name','send','render','merge','body','agent','account','Users','map','Tags','forEach','push','TagIds','waiting','talking','answered','unmanaged','abandoned','total','closed','UserId','disposition','index','ChatInteraction','fieldName','type','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','sort','pick','select','field','color','from','tools_tags','u.id','ui.ChatInteractionId','u.id\x20=\x20ui.UserId','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','left_join','chat_websites','chat_messages','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','expr','parseSearch','search','conditions','find','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','value','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','compact','isEmpty','where','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','parse','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','isNumeric','group','i.id','Sequelize','QueryTypes','SELECT','clone','unreadMessages','order','contactName','resolve','ChatWebsiteId','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','role','user','i.ChatWebsiteId\x20IS\x20NULL','sequelize','toString','count','fields','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','Contact.phone','c.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','all','rawAttributes','includeAll','include','options','create','params','describe','ChatWebsite','findOne','vidaooApiKey','vidaooTopic','vidaooNote','vidaooMetadata','vidaooEscalation','email','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','follow','metadata','Error\x20in\x20conversion\x20vidaooMetadata','ValidationError','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','Interaction\x20already\x20assigned','AbandonInteraction','attachmentUpload','file','originalname','filename','mimetype','Attachment','attachmentDownload','Unauthorized','ChatOfflineMessageId','offline-chat/','join','basename','download','mailTranscript','format','transcript-%s.txt','pathTranscript','CmContact','Messages','agentAlias','System','%s%d','Visitor','agentIdentifier','website_alias','agent_alias','agent_fullname','fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','direction','appendFileSync','MailAccount','MailServerOut','Smtp','CloudProvider','SendMail','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','$gte','YYYY-MM-DD\x20HH:mm:ss','findAll','getMyMessages','secret','includeAgent','alias','rows','addTags','setTags','chatInteractionTags:save','removeTags','unix','root','server','files','tmp','attachments','transcript-%d-%s.zip','firstName','lastName','Owner','get','mkdirSync','Account','N.A.','closedAt'];(function(_0x2809d8,_0x1e1660){var _0x35cf26=function(_0x10aa0b){while(--_0x10aa0b){_0x2809d8['push'](_0x2809d8['shift']());}};_0x35cf26(++_0x1e1660);}(_0xaa88,0x137));var _0x8aa8=function(_0x574617,_0x42eccc){_0x574617=_0x574617-0x0;var _0x29de90=_0xaa88[_0x574617];return _0x29de90;};'use strict';var rimraf=require(_0x8aa8('0x0'));var zipdir=require(_0x8aa8('0x1'));var rp=require(_0x8aa8('0x2'));var moment=require(_0x8aa8('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8aa8('0x4'));var util=require(_0x8aa8('0x5'));var path=require(_0x8aa8('0x6'));var ejs=require(_0x8aa8('0x7'));var fs=require('fs');var _=require(_0x8aa8('0x8'));var squel=require(_0x8aa8('0x9'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var as=require(_0x8aa8('0xa'));var pdf=require('../../components/export/pdf');var logger=require(_0x8aa8('0xb'))(_0x8aa8('0xc'));var config=require(_0x8aa8('0xd'));var db=require(_0x8aa8('0xe'))['db'];config['redis']=_[_0x8aa8('0xf')](config[_0x8aa8('0x10')],{'host':_0x8aa8('0x11'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8aa8('0x10')]));require(_0x8aa8('0x12'))[_0x8aa8('0x13')](socket);var jayson=require(_0x8aa8('0x14'));var client=jayson['client'][_0x8aa8('0x15')]({'port':0x232b});var client9004=jayson[_0x8aa8('0x16')]['http']({'port':0x232c});function respondWithRpcPromise(_0x370b25,_0xa691d6,_0x28132f,_0x535aa0){return new BPromise(function(_0x3b9f74,_0x179e33){var _0x2fa66f=_0x535aa0||client;return _0x2fa66f['request'](_0x370b25,_0x28132f)[_0x8aa8('0x17')](function(_0x4af534){logger['info'](_0x8aa8('0x18'),_0xa691d6,_0x8aa8('0x19'));logger[_0x8aa8('0x1a')](_0x8aa8('0x1b'),_0xa691d6,_0x8aa8('0x19'),JSON[_0x8aa8('0x1c')](_0x4af534));if(_0x4af534[_0x8aa8('0x1d')]){if(_0x4af534[_0x8aa8('0x1d')][_0x8aa8('0x1e')]===0x1f4){logger['error']('ChatInteraction,\x20%s,\x20%s',_0xa691d6,_0x4af534[_0x8aa8('0x1d')]['message']);return _0x179e33(_0x4af534['error'][_0x8aa8('0x1f')]);}logger['error'](_0x8aa8('0x18'),_0xa691d6,_0x4af534[_0x8aa8('0x1d')][_0x8aa8('0x1f')]);return _0x3b9f74(_0x4af534[_0x8aa8('0x1d')]['message']);}else{logger[_0x8aa8('0x20')](_0x8aa8('0x18'),_0xa691d6,_0x8aa8('0x19'));_0x3b9f74(_0x4af534[_0x8aa8('0x21')][_0x8aa8('0x1f')]);}})[_0x8aa8('0x22')](function(_0x5d9b62){logger[_0x8aa8('0x1d')]('ChatInteraction,\x20%s,\x20%s',_0xa691d6,_0x5d9b62);_0x179e33(_0x5d9b62);});});}function respondWithStatusCode(_0x1fdadd,_0x47dd5d){_0x47dd5d=_0x47dd5d||0xcc;return function(_0x2c1828){if(_0x2c1828){return _0x1fdadd['sendStatus'](_0x47dd5d);}return _0x1fdadd[_0x8aa8('0x23')](_0x47dd5d)[_0x8aa8('0x24')]();};}function respondWithResult(_0x3ca7dc,_0x5e5d91){_0x5e5d91=_0x5e5d91||0xc8;return function(_0x24f428){if(_0x24f428){return _0x3ca7dc[_0x8aa8('0x23')](_0x5e5d91)[_0x8aa8('0x25')](_0x24f428);}};}function respondWithFilteredResult(_0x547a7b,_0x57acd2){return function(_0x2d1508){if(_0x2d1508){var _0x44e2d8=typeof _0x57acd2[_0x8aa8('0x26')]===_0x8aa8('0x27')&&typeof _0x57acd2[_0x8aa8('0x28')]==='undefined';var _0x2bc34a=_0x2d1508['count'];var _0x2a0ff2=_0x44e2d8?0x0:_0x57acd2[_0x8aa8('0x26')];var _0x15ff33=_0x44e2d8?_0x2d1508['count']:_0x57acd2['offset']+_0x57acd2[_0x8aa8('0x28')];var _0x5e96c9;if(_0x15ff33>=_0x2bc34a){_0x15ff33=_0x2bc34a;_0x5e96c9=0xc8;}else{_0x5e96c9=0xce;}_0x547a7b[_0x8aa8('0x23')](_0x5e96c9);return _0x547a7b[_0x8aa8('0x29')](_0x8aa8('0x2a'),_0x2a0ff2+'-'+_0x15ff33+'/'+_0x2bc34a)[_0x8aa8('0x25')](_0x2d1508);}return null;};}function saveUpdates(_0xe07a83){return function(_0x4d5c2e){if(_0x4d5c2e){return _0x4d5c2e[_0x8aa8('0x2b')](_0xe07a83)[_0x8aa8('0x17')](function(_0x4b67f5){return _0x4b67f5;});}return null;};}function removeEntity(_0x99f74e){return function(_0xee2f61){if(_0xee2f61){return _0xee2f61[_0x8aa8('0x2c')]()['then'](function(){_0x99f74e[_0x8aa8('0x23')](0xcc)[_0x8aa8('0x24')]();});}};}function handleEntityNotFound(_0x23a37c){return function(_0x423b02){if(!_0x423b02){_0x23a37c[_0x8aa8('0x2d')](0x194);}return _0x423b02;};}function handleError(_0x356be7,_0x370401){_0x370401=_0x370401||0x1f4;return function(_0xcad4f8){logger[_0x8aa8('0x1d')](_0xcad4f8[_0x8aa8('0x2e')]);if(_0xcad4f8[_0x8aa8('0x2f')]){delete _0xcad4f8['name'];}_0x356be7['status'](_0x370401)[_0x8aa8('0x30')](_0xcad4f8);};}function getMustacheRender(_0x1270ff,_0x201d8d){return Mustache[_0x8aa8('0x31')](_0x1270ff,_[_0x8aa8('0x32')](_0x201d8d[_0x8aa8('0x33')],{'contact':_0x201d8d['contact'],'message':_0x201d8d['message'],'agent':_0x201d8d[_0x8aa8('0x34')],'interaction':_0x201d8d['interaction'],'account':_0x201d8d[_0x8aa8('0x35')]}))||'';}function getInteractionUsers(_0x2c5c84,_0x25066c){return new BPromise(function(_0x59041c,_0x36ae4b){try{if(_0x25066c[_0x2c5c84['id']]){_0x2c5c84[_0x8aa8('0x36')]=_[_0x8aa8('0x37')](_0x25066c[_0x2c5c84['id']],function(_0x5c28fa){return{'id':_0x5c28fa['id'],'fullname':_0x5c28fa['fullname']};});}}catch(_0x22b511){_0x36ae4b(_0x22b511);}_0x59041c(_0x2c5c84);});}function getInteractionTags(_0x1f90fc,_0x52f87d){return new BPromise(function(_0x24eb18,_0x2e1f52){try{if(_0x1f90fc['TagIds']){_0x1f90fc[_0x8aa8('0x38')]=[];_0x1f90fc['TagIds']['split'](',')[_0x8aa8('0x39')](function(_0x5537ff){_0x1f90fc[_0x8aa8('0x38')][_0x8aa8('0x3a')](_0x52f87d[_0x5537ff]);});}delete _0x1f90fc[_0x8aa8('0x3b')];}catch(_0x39b063){_0x2e1f52(_0x39b063);}_0x24eb18(_0x1f90fc);});}function updateChatInteraction(_0x4ce5e9,_0x14264d,_0x32abfc){return new BPromise(function(_0x4962a4,_0x40867c){return getInteractionUsers(_0x4ce5e9,_0x32abfc)[_0x8aa8('0x17')](function(_0x5ea57a){return getInteractionTags(_0x5ea57a,_0x14264d);})[_0x8aa8('0x17')](function(_0x3c6115){return getStateInteraction(_0x3c6115);})[_0x8aa8('0x17')](function(_0x2658f4){_0x4962a4(_0x2658f4);})[_0x8aa8('0x22')](function(_0xea42cb){_0x40867c(_0xea42cb);});});}function getStateInteraction(_0x46711b){return new BPromise(function(_0x3fb265){_0x46711b[_0x8aa8('0x3c')]=0x0;_0x46711b[_0x8aa8('0x3d')]=0x0;_0x46711b[_0x8aa8('0x3e')]=0x0;_0x46711b[_0x8aa8('0x3f')]=0x0;_0x46711b[_0x8aa8('0x40')]=0x0;_0x46711b[_0x8aa8('0x41')]=0x0;if(!_0x46711b[_0x8aa8('0x42')]&&!_0x46711b[_0x8aa8('0x43')]){_0x46711b['waiting']+=0x1;}if(!_0x46711b[_0x8aa8('0x42')]&&_0x46711b['UserId']){_0x46711b['talking']+=0x1;if(_0x46711b['waiting']){_0x46711b[_0x8aa8('0x3c')]-=0x1;}}if(_0x46711b['closed']&&_0x46711b['disposition']===_0x8aa8('0x40')){_0x46711b['abandoned']+=0x1;if(_0x46711b[_0x8aa8('0x3c')]){_0x46711b['waiting']-=0x1;}}else if(_0x46711b['closed']&&!_0x46711b[_0x8aa8('0x43')]&&_0x46711b[_0x8aa8('0x44')]){_0x46711b[_0x8aa8('0x3f')]+=0x1;if(_0x46711b[_0x8aa8('0x3c')]){_0x46711b[_0x8aa8('0x3c')]-=0x1;}}else if(_0x46711b[_0x8aa8('0x42')]&&_0x46711b[_0x8aa8('0x43')]){_0x46711b['answered']+=0x1;if(_0x46711b[_0x8aa8('0x3d')]){_0x46711b['talking']-=0x1;}}_0x46711b[_0x8aa8('0x41')]+=0x1;_0x3fb265(_0x46711b);});}exports[_0x8aa8('0x45')]=function(_0x44ba22,_0x2bc6d3){var _0x2a0a14={},_0x44f2b4={},_0x5adcda={'count':0x0,'rows':[]};var _0x56e13f=_[_0x8aa8('0x37')](db[_0x8aa8('0x46')]['rawAttributes'],function(_0x35eeea){return{'name':_0x35eeea[_0x8aa8('0x47')],'type':_0x35eeea[_0x8aa8('0x48')]['key']};});_0x44f2b4['model']=_['map'](_0x56e13f,'name');_0x44f2b4[_0x8aa8('0x49')]=_[_0x8aa8('0x4a')](_0x44ba22['query']);_0x44f2b4[_0x8aa8('0x4b')]=_[_0x8aa8('0x4c')](_0x44f2b4[_0x8aa8('0x4d')],_0x44f2b4[_0x8aa8('0x49')]);_0x2a0a14[_0x8aa8('0x4e')]=_[_0x8aa8('0x4c')](_0x44f2b4['model'],qs['fields'](_0x44ba22[_0x8aa8('0x49')]['fields']));_0x2a0a14[_0x8aa8('0x4e')]=_0x2a0a14['attributes'][_0x8aa8('0x4f')]?_0x2a0a14[_0x8aa8('0x4e')]:_0x44f2b4[_0x8aa8('0x4d')];if(!_0x44ba22[_0x8aa8('0x49')][_0x8aa8('0x50')](_0x8aa8('0x51'))){_0x2a0a14[_0x8aa8('0x28')]=qs[_0x8aa8('0x28')](_0x44ba22[_0x8aa8('0x49')][_0x8aa8('0x28')]);_0x2a0a14[_0x8aa8('0x26')]=qs[_0x8aa8('0x26')](_0x44ba22['query'][_0x8aa8('0x26')]);}_0x2a0a14['order']=qs['sort'](_0x44ba22['query'][_0x8aa8('0x52')]);_0x2a0a14['where']=qs[_0x8aa8('0x4b')](_[_0x8aa8('0x53')](_0x44ba22[_0x8aa8('0x49')],_0x44f2b4['filters']),_0x56e13f);var _0x3508df=[];var _0x33d8a4=squel[_0x8aa8('0x54')]()[_0x8aa8('0x55')]('id')['field']('name')[_0x8aa8('0x55')](_0x8aa8('0x56'))[_0x8aa8('0x57')](_0x8aa8('0x58'));var _0x4e7ea0=squel['select']()[_0x8aa8('0x55')](_0x8aa8('0x59'))[_0x8aa8('0x55')]('u.fullname')[_0x8aa8('0x55')](_0x8aa8('0x5a'))['from']('user_has_chat_interactions','ui')['left_join']('users','u',_0x8aa8('0x5b'));var _0x4ab098=squel[_0x8aa8('0x54')]()[_0x8aa8('0x57')]('chat_interactions','i')['left_join'](_0x8aa8('0x5c'),'c',_0x8aa8('0x5d'))['left_join']('users','o','o.id\x20=\x20i.UserId')[_0x8aa8('0x5e')](_0x8aa8('0x5f'),'a','a.id\x20=\x20i.ChatWebsiteId')['left_join'](_0x8aa8('0x60'),'me',_0x8aa8('0x61'))['left_join'](_0x8aa8('0x62'),'it',_0x8aa8('0x63'))['left_join'](_0x8aa8('0x58'),'t','t.id\x20=\x20it.TagId');var _0x29dfb3=squel['expr']();var _0x26f771=[];var _0x1497ad=squel[_0x8aa8('0x64')]();var _0x417a34;if(_0x44ba22[_0x8aa8('0x49')]['search']){_0x417a34=as[_0x8aa8('0x65')](_0x44ba22[_0x8aa8('0x49')][_0x8aa8('0x66')]);var _0x3cb847=_0x417a34['sqlOperator'];for(var _0x106a95=0x0;_0x106a95<_0x417a34[_0x8aa8('0x67')]['length'];_0x106a95++){var _0x2f7fe2=_0x417a34[_0x8aa8('0x67')][_0x106a95];var _0x2d322a='i';var _0xec3379=_[_0x8aa8('0x68')](_0x56e13f,[_0x8aa8('0x2f'),_0x2f7fe2[_0x8aa8('0x55')]]);if(!_0xec3379){switch(_0x2f7fe2['field']){case'unreadMessages':if(_0x2f7fe2['value']==0x1){_0x4ab098[_0x8aa8('0x69')]('`'+_0x2f7fe2[_0x8aa8('0x55')]+_0x8aa8('0x6a'));}else{_0x4ab098[_0x8aa8('0x69')]('`'+_0x2f7fe2[_0x8aa8('0x55')]+_0x8aa8('0x6b'));}break;case _0x8aa8('0x6c'):if(_0x2f7fe2[_0x8aa8('0x6d')]===_0x8aa8('0x6e')){if(_0x2f7fe2[_0x8aa8('0x6f')][_0x8aa8('0x70')]('\x20')[_0x8aa8('0x4f')]>0x1){_0x29dfb3[_0x3cb847](_0x8aa8('0x71'),qs[_0x8aa8('0x72')](_0x2f7fe2[_0x8aa8('0x6f')]),null);}else{var _0x36523a='%'+_0x2f7fe2[_0x8aa8('0x6f')]+'%';_0x29dfb3[_0x3cb847](_0x8aa8('0x73'),_0x36523a,_0x36523a,_0x36523a);}}else{_0xec3379=_[_0x8aa8('0x68')](_0x56e13f,['name',_0x8aa8('0x74')]);_0x2f7fe2[_0x8aa8('0x55')]=_0x8aa8('0x74');_0x1417a1=as[_0x8aa8('0x75')](_0x2d322a,_0xec3379[_0x8aa8('0x48')],_0x2f7fe2);_0x29dfb3[_0x3cb847](_0x1417a1[_0x8aa8('0x76')],_0x1417a1[_0x8aa8('0x6f')][_0x8aa8('0x77')],_0x1417a1[_0x8aa8('0x6f')]['end']);}break;case _0x8aa8('0x78'):var _0x3d2c0e=_0x2f7fe2['value'][_0x8aa8('0x70')](',')['map'](function(_0x1e52fc){return Number(_0x1e52fc);});_0x3d2c0e[_0x8aa8('0x39')](function(_0x4c45a6){_0x1497ad['or'](_0x8aa8('0x79'),'%,'+_0x4c45a6+',%');});_0x26f771=_[_0x8aa8('0x7a')](_0x26f771,_0x3d2c0e);break;case _0x8aa8('0x7b'):if(_0x2f7fe2[_0x8aa8('0x6d')]===_0x8aa8('0x6e')){_0x29dfb3[_0x3cb847](_0x8aa8('0x7c'),'%'+_0x2f7fe2[_0x8aa8('0x6f')]+'%',null);}else{_0xec3379=_['find'](_0x56e13f,[_0x8aa8('0x2f'),_0x8aa8('0x43')]);_0x2f7fe2[_0x8aa8('0x55')]=_0x8aa8('0x43');_0x1417a1=as['buildExpression'](_0x2d322a,_0xec3379['type'],_0x2f7fe2);_0x29dfb3[_0x3cb847](_0x1417a1[_0x8aa8('0x76')],_0x1417a1[_0x8aa8('0x6f')][_0x8aa8('0x77')],_0x1417a1[_0x8aa8('0x6f')]['end']);}break;case'body':_0x1417a1=as['buildExpression']('me',null,_0x2f7fe2);_0x29dfb3[_0x3cb847](_0x1417a1[_0x8aa8('0x76')],_0x1417a1[_0x8aa8('0x6f')][_0x8aa8('0x77')],_0x1417a1[_0x8aa8('0x6f')][_0x8aa8('0x24')]);break;}}else{var _0x1417a1=as[_0x8aa8('0x75')](_0x2d322a,_0xec3379[_0x8aa8('0x48')],_0x2f7fe2);_0x29dfb3[_0x3cb847](_0x1417a1[_0x8aa8('0x76')],_0x1417a1['value'][_0x8aa8('0x77')],_0x1417a1['value']['end']);}}}else{var _0x376a37=_(_0x44ba22[_0x8aa8('0x49')])[_0x8aa8('0x4a')]()['map'](function(_0x47027d){return _['some'](_0x56e13f,[_0x8aa8('0x2f'),_0x47027d])?_0x47027d:undefined;})[_0x8aa8('0x7d')]()[_0x8aa8('0x6f')]();if(!_[_0x8aa8('0x7e')](_0x376a37)){_0x376a37[_0x8aa8('0x39')](function(_0x5d1c8e){if(_0x5d1c8e==='ChatWebsiteId'){_0x4ab098[_0x8aa8('0x7f')](_0x8aa8('0x80'),[][_0x8aa8('0x81')](_0x44ba22[_0x8aa8('0x49')][_0x5d1c8e]));}else if(_0x5d1c8e===_0x8aa8('0x82')){var _0x358fb6=JSON[_0x8aa8('0x83')](_0x44ba22[_0x8aa8('0x49')][_0x5d1c8e])['$gte'];var _0x3b9a77=JSON[_0x8aa8('0x83')](_0x44ba22['query'][_0x5d1c8e])['$lte'];_0x4ab098[_0x8aa8('0x7f')](_0x8aa8('0x84'),_0x358fb6,_0x3b9a77);}else{if(_0x44ba22['query'][_0x5d1c8e]===_0x8aa8('0x85')){_0x4ab098[_0x8aa8('0x7f')]('i.'+_0x5d1c8e+_0x8aa8('0x86'));}else{_0x4ab098['where']('i.'+_0x5d1c8e+'\x20=\x20?',_0x44ba22['query'][_0x5d1c8e]);}}});}if(_0x44ba22[_0x8aa8('0x49')][_0x8aa8('0x87')]){if(_0x44ba22[_0x8aa8('0x49')][_0x8aa8('0x87')]==0x1){_0x4ab098['having'](_0x8aa8('0x88'));}else{_0x4ab098[_0x8aa8('0x69')](_0x8aa8('0x89'));}}if(_0x44ba22[_0x8aa8('0x49')]['tag']){_0x26f771=_[_0x8aa8('0x8a')](_0x44ba22['query']['tag'])?_0x44ba22[_0x8aa8('0x49')]['tag']:new Array(_0x44ba22[_0x8aa8('0x49')][_0x8aa8('0x8b')]);_0x26f771[_0x8aa8('0x39')](function(_0x55a3c0){_0x1497ad['or'](_0x8aa8('0x79'),'%,'+_0x55a3c0+',%');});}if(_0x44ba22[_0x8aa8('0x49')][_0x8aa8('0x8c')]){var _0x3926a8=_0x44ba22[_0x8aa8('0x49')][_0x8aa8('0x8c')]['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x8aa8('0x8d')](_0x3926a8)){_0x29dfb3['or']('i.id\x20LIKE\x20?',_0x3926a8+'%');}else{_0x29dfb3['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x3926a8))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x3926a8+'%');}}}_0x4ab098['where'](_0x29dfb3);_0x4ab098[_0x8aa8('0x8e')](_0x8aa8('0x8f'));var _0x183945={'type':db[_0x8aa8('0x90')][_0x8aa8('0x91')][_0x8aa8('0x92')],'raw':!![]};var _0x19c43f=_0x4ab098[_0x8aa8('0x93')]();_0x19c43f[_0x8aa8('0x55')](_0x8aa8('0x8f'));_0x19c43f['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x8aa8('0x94'));if(_0x2a0a14[_0x8aa8('0x95')]){_0x2a0a14[_0x8aa8('0x95')][_0x8aa8('0x39')](function(_0x26599f){var _0x227591=_0x26599f[0x0]===_0x8aa8('0x96')?_0x26599f[0x0]:'i.'+_0x26599f[0x0];_0x4ab098[_0x8aa8('0x95')](_0x227591,_0x26599f[0x1]==='DESC'?![]:!![]);});}if(!_[_0x8aa8('0x7e')](_0x26f771)){_0x4ab098[_0x8aa8('0x69')](_0x1497ad);_0x19c43f[_0x8aa8('0x7f')]('t.id\x20IN\x20?',_0x26f771);}BPromise[_0x8aa8('0x97')]()[_0x8aa8('0x17')](function(){if(!_0x417a34){if(_0x44ba22['query'][_0x8aa8('0x98')])return;_0x19c43f[_0x8aa8('0x7f')](_0x8aa8('0x99'));_0x4ab098[_0x8aa8('0x7f')](_0x8aa8('0x99'));return;}if(_0x44ba22['user'][_0x8aa8('0x9a')]!==_0x8aa8('0x34'))return;return _0x44ba22[_0x8aa8('0x9b')]['getChatWebsites']({'attributes':['id'],'raw':!![]})[_0x8aa8('0x17')](function(_0x13e9c9){if(_[_0x8aa8('0x7e')](_0x13e9c9)){_0x19c43f[_0x8aa8('0x7f')](_0x8aa8('0x9c'));_0x4ab098[_0x8aa8('0x7f')]('i.ChatWebsiteId\x20IS\x20NULL');}else{_0x19c43f[_0x8aa8('0x7f')]('i.ChatWebsiteId\x20IN\x20?',_[_0x8aa8('0x37')](_0x13e9c9,'id'));_0x4ab098[_0x8aa8('0x7f')](_0x8aa8('0x80'),_[_0x8aa8('0x37')](_0x13e9c9,'id'));}});})[_0x8aa8('0x17')](function(){if(_0x44ba22['user'][_0x8aa8('0x9a')]===_0x8aa8('0x34')&&!_0x417a34&&!_0x44ba22[_0x8aa8('0x49')][_0x8aa8('0x98')])return[];return db[_0x8aa8('0x9d')][_0x8aa8('0x49')](_0x19c43f[_0x8aa8('0x9e')](),_0x183945);})['then'](function(_0x51e859){_0x5adcda[_0x8aa8('0x9f')]=_0x51e859[_0x8aa8('0x4f')];if(_0x5adcda[_0x8aa8('0x9f')]===0x0)return[];return db[_0x8aa8('0x9d')][_0x8aa8('0x49')](_0x33d8a4[_0x8aa8('0x9e')](),_0x183945)[_0x8aa8('0x17')](function(_0x3b151f){_0x3508df=_['keyBy'](_0x3b151f,'id');_0x183945=_[_0x8aa8('0x32')](_0x183945,{'model':db[_0x8aa8('0x46')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x44ba22['query'][_0x8aa8('0xa0')]){_0x2a0a14['attributes'][_0x8aa8('0x39')](function(_0xe5556c){_0x4ab098[_0x8aa8('0x55')]('i.'+_0xe5556c);});}else{_0x4ab098[_0x8aa8('0x55')](_0x8aa8('0xa1'),_0x8aa8('0x94'));_0x4ab098['field'](_0x8aa8('0xa2'),_0x8aa8('0xa3'));_0x4ab098[_0x8aa8('0x55')](_0x8aa8('0xa4'),_0x8aa8('0xa5'));_0x4ab098['field'](_0x8aa8('0xa6'),_0x8aa8('0x96'));_0x4ab098[_0x8aa8('0x55')](_0x8aa8('0xa7'));_0x4ab098[_0x8aa8('0x55')](_0x8aa8('0xa8'),_0x8aa8('0xa9'));_0x4ab098[_0x8aa8('0x55')](_0x8aa8('0xaa'),_0x8aa8('0xab'));_0x4ab098['field']('c.email',_0x8aa8('0xac'));_0x4ab098[_0x8aa8('0x55')](_0x8aa8('0xad'),_0x8aa8('0xae'));_0x4ab098[_0x8aa8('0x55')](_0x8aa8('0xaf'),'Contact.mobile');_0x4ab098[_0x8aa8('0x55')]('c.fax',_0x8aa8('0xb0'));_0x4ab098[_0x8aa8('0x55')](_0x8aa8('0xb1'),_0x8aa8('0xb2'));_0x4ab098['field'](_0x8aa8('0xb3'),_0x8aa8('0xb4'));_0x4ab098['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0x8aa8('0x3b'));}if(_0x2a0a14['limit'])_0x4ab098['limit'](_0x2a0a14[_0x8aa8('0x28')]);if(_0x2a0a14[_0x8aa8('0x26')])_0x4ab098['offset'](_0x2a0a14[_0x8aa8('0x26')]);return db[_0x8aa8('0x9d')][_0x8aa8('0x49')](_0x4ab098[_0x8aa8('0x9e')](),_0x183945);})['then'](function(_0x124887){if(_0x124887[_0x8aa8('0x4f')]>0x0)_0x4e7ea0[_0x8aa8('0x7f')](_0x8aa8('0xb5'),_[_0x8aa8('0x37')](_0x124887,'id'));return db[_0x8aa8('0x9d')][_0x8aa8('0x49')](_0x4e7ea0[_0x8aa8('0x9e')](),_0x183945)[_0x8aa8('0x17')](function(_0x11f060){var _0x4d15ab=_[_0x8aa8('0xb6')](_0x11f060,_0x8aa8('0xb7'));var _0x3b3df6=[];_0x124887[_0x8aa8('0x39')](function(_0x58435d){_0x3b3df6[_0x8aa8('0x3a')](updateChatInteraction(_0x58435d,_0x3508df,_0x4d15ab));});return BPromise[_0x8aa8('0xb8')](_0x3b3df6);});});})[_0x8aa8('0x17')](function(_0x188f56){_0x5adcda['rows']=_0x188f56;return _0x5adcda;})[_0x8aa8('0x17')](respondWithFilteredResult(_0x2bc6d3,_0x2a0a14))[_0x8aa8('0x22')](handleError(_0x2bc6d3,null));};exports['show']=function(_0x521d25,_0xf028c6){var _0x4e1c38={'raw':![],'where':{'id':_0x521d25['params']['id']}},_0x27f584={};_0x27f584['model']=_[_0x8aa8('0x4a')](db[_0x8aa8('0x46')][_0x8aa8('0xb9')]);_0x27f584[_0x8aa8('0x49')]=_['keys'](_0x521d25[_0x8aa8('0x49')]);_0x27f584[_0x8aa8('0x4b')]=_[_0x8aa8('0x4c')](_0x27f584[_0x8aa8('0x4d')],_0x27f584[_0x8aa8('0x49')]);_0x4e1c38[_0x8aa8('0x4e')]=_['intersection'](_0x27f584['model'],qs[_0x8aa8('0xa0')](_0x521d25[_0x8aa8('0x49')][_0x8aa8('0xa0')]));_0x4e1c38[_0x8aa8('0x4e')]=_0x4e1c38[_0x8aa8('0x4e')]['length']?_0x4e1c38['attributes']:_0x27f584['model'];if(_0x521d25['query'][_0x8aa8('0xba')]){_0x4e1c38[_0x8aa8('0xbb')]=[{'all':!![]}];}_0x4e1c38=_['merge']({},_0x4e1c38,_0x521d25[_0x8aa8('0xbc')]);return db[_0x8aa8('0x46')][_0x8aa8('0x68')](_0x4e1c38)['then'](handleEntityNotFound(_0xf028c6,null))['then'](respondWithResult(_0xf028c6,null))[_0x8aa8('0x22')](handleError(_0xf028c6,null));};exports[_0x8aa8('0xbd')]=function(_0x280e35,_0x48b7b4){return db[_0x8aa8('0x46')]['create'](_0x280e35[_0x8aa8('0x33')],{})[_0x8aa8('0x17')](respondWithResult(_0x48b7b4,0xc9))['catch'](handleError(_0x48b7b4,null));};exports[_0x8aa8('0x2b')]=function(_0x393c20,_0x5365b6){if(_0x393c20[_0x8aa8('0x33')]['id']){delete _0x393c20['body']['id'];}return db[_0x8aa8('0x46')]['find']({'where':{'id':_0x393c20[_0x8aa8('0xbe')]['id']}})[_0x8aa8('0x17')](handleEntityNotFound(_0x5365b6,null))[_0x8aa8('0x17')](saveUpdates(_0x393c20['body'],null))['then'](respondWithResult(_0x5365b6,null))[_0x8aa8('0x22')](handleError(_0x5365b6,null));};exports[_0x8aa8('0x2c')]=function(_0x279a0c,_0x2ddd01){return db[_0x8aa8('0x46')]['find']({'where':{'id':_0x279a0c[_0x8aa8('0xbe')]['id']}})[_0x8aa8('0x17')](handleEntityNotFound(_0x2ddd01,null))[_0x8aa8('0x17')](removeEntity(_0x2ddd01,null))[_0x8aa8('0x22')](handleError(_0x2ddd01,null));};exports[_0x8aa8('0xbf')]=function(_0x353717,_0x1720be){return db[_0x8aa8('0x46')][_0x8aa8('0xbf')]()[_0x8aa8('0x17')](respondWithResult(_0x1720be,null))[_0x8aa8('0x22')](handleError(_0x1720be,null));};exports['createVidaooSession']=function(_0x2fb2dc,_0x5b1edc){var _0x2d6551=_0x2fb2dc[_0x8aa8('0xbe')]['id'];var _0x3e8a06;var _0x1b3d07;var _0x262d3a;return db[_0x8aa8('0x46')]['findOne']({'where':{'id':_0x2d6551}})['then'](function(_0x48017d){_0x3e8a06=_0x48017d;return db[_0x8aa8('0xc0')][_0x8aa8('0xc1')]({'where':{'id':_0x48017d[_0x8aa8('0x98')]},'attributes':['id',_0x8aa8('0xc2'),'vidaooEscalation',_0x8aa8('0xc3'),_0x8aa8('0xc4'),_0x8aa8('0xc5')],'raw':!![]});})[_0x8aa8('0x17')](function(_0x3d2e50){if(_0x3d2e50&&_0x3d2e50['vidaooApiKey']&&_0x3d2e50[_0x8aa8('0xc6')]){_0x1b3d07=_0x3d2e50;var _0x1e1e11={'interaction':{'id':_0x2d6551},'agent':{'id':_0x2fb2dc[_0x8aa8('0x9b')]['id'],'name':_0x2fb2dc[_0x8aa8('0x9b')][_0x8aa8('0x2f')],'fullname':_0x2fb2dc[_0x8aa8('0x9b')]['fullname'],'email':_0x2fb2dc[_0x8aa8('0x9b')][_0x8aa8('0xc7')]},'contact':_0x2fb2dc['body']['contact'],'account':_0x2fb2dc[_0x8aa8('0x33')]['account']};var _0x5d0226={'rejectUnauthorized':![],'method':'POST','url':_0x8aa8('0xc8'),'headers':{'X-APIKEY':_0x3d2e50['vidaooApiKey']},'body':{'duration':null,'scheduledAt':null,'participants':[_0x2fb2dc['user'][_0x8aa8('0xc7')]],'buttons':null,'topic':_0x1b3d07[_0x8aa8('0xc3')],'note':_[_0x8aa8('0xc9')](_0x1b3d07[_0x8aa8('0xc4')])?null:getMustacheRender(_0x1b3d07[_0x8aa8('0xc4')],_0x1e1e11),'metadata':null},'redirect':_0x8aa8('0xca'),'json':!![]};try{if(!_[_0x8aa8('0xc9')](_0x1b3d07[_0x8aa8('0xc5')])){var _0x532666=getMustacheRender(_0x1b3d07[_0x8aa8('0xc5')],_0x1e1e11);var _0x23664f=JSON[_0x8aa8('0x83')](_0x532666);_0x5d0226['body'][_0x8aa8('0xcb')]=_0x23664f;}}catch(_0x12258b){throw new db[(_0x8aa8('0x90'))]['ValidationError'](_0x8aa8('0xcc'));}return rp(_0x5d0226);}else{throw new db[(_0x8aa8('0x90'))][(_0x8aa8('0xcd'))](_0x8aa8('0xce'));}})[_0x8aa8('0x17')](function(_0x5d7b0d){_0x262d3a=_0x5d7b0d;if(_0x262d3a['id']){var _0x5eb681={'body':_0x262d3a[_0x8aa8('0xcf')],'ChatWebsiteId':_0x1b3d07['id'],'ChatInteractionId':_0x3e8a06['id'],'direction':_0x8aa8('0xd0'),'UserId':_0x2fb2dc['user']['id']};return db[_0x8aa8('0xd1')][_0x8aa8('0xbd')](_0x5eb681,{});}else{throw new db[(_0x8aa8('0x90'))][(_0x8aa8('0xcd'))](_0x8aa8('0xd2'));}})[_0x8aa8('0x17')](function(){return _0x3e8a06['updateAttributes']({'vidaooSessionId':_0x262d3a['id']});})[_0x8aa8('0x17')](respondWithResult(_0x5b1edc,null))[_0x8aa8('0x22')](handleError(_0x5b1edc,null));};exports['customUpdate']=function(_0x304777,_0x56c4a2){if(_0x304777[_0x8aa8('0x33')]['id']){delete _0x304777[_0x8aa8('0x33')]['id'];}return db[_0x8aa8('0x46')]['find']({'where':{'id':_0x304777['params']['id']},'include':[{'model':db['CmContact'],'as':'Contact'}]})[_0x8aa8('0x17')](handleEntityNotFound(_0x56c4a2,null))[_0x8aa8('0x17')](saveUpdates(_0x304777['body'],null))[_0x8aa8('0x17')](respondWithResult(_0x56c4a2,null))['catch'](handleError(_0x56c4a2,null));};exports[_0x8aa8('0xd3')]=function(_0x2544f3,_0x21fda7){if(_0x2544f3[_0x8aa8('0x33')]['id']){delete _0x2544f3['body']['id'];}return db[_0x8aa8('0x46')]['find']({'where':{'id':_0x2544f3[_0x8aa8('0xbe')]['id']}})['then'](function(_0x2a195d){if(!_0x2a195d){logger['error'](_0x8aa8('0xd4'),_0x8aa8('0xd3'),0x194,'entity\x20not\x20found');_0x21fda7['sendStatus'](0x194);}else{if(_0x2a195d['UserId']){throw new db[(_0x8aa8('0x90'))][(_0x8aa8('0xcd'))](_0x8aa8('0xd5'));}}return _0x2a195d;})[_0x8aa8('0x17')](function(_0x1da673){if(_0x1da673){return _0x1da673[_0x8aa8('0x2b')]({'closed':_0x2544f3[_0x8aa8('0x33')]['closed'],'disposition':_0x2544f3[_0x8aa8('0x33')][_0x8aa8('0x44')]})[_0x8aa8('0x17')](function(_0xd4e399){return _0xd4e399;});}})[_0x8aa8('0x17')](function(){return respondWithRpcPromise(_0x8aa8('0xd6'),_0x8aa8('0xd3'),_0x2544f3[_0x8aa8('0x33')],client9004);})[_0x8aa8('0x17')](respondWithResult(_0x21fda7,null))[_0x8aa8('0x22')](handleError(_0x21fda7,null));};exports[_0x8aa8('0xd7')]=function(_0xb7e50f,_0x19b724){_0xb7e50f[_0x8aa8('0x33')]['name']=_0xb7e50f[_0x8aa8('0xd8')][_0x8aa8('0xd9')];_0xb7e50f['body']['basename']=_0xb7e50f['file'][_0x8aa8('0xda')];_0xb7e50f[_0x8aa8('0x33')][_0x8aa8('0x48')]=_0xb7e50f['file'][_0x8aa8('0xdb')];return db[_0x8aa8('0xdc')][_0x8aa8('0xbd')](_0xb7e50f[_0x8aa8('0x33')])[_0x8aa8('0x17')](respondWithResult(_0x19b724,0xc9))[_0x8aa8('0x22')](handleError(_0x19b724,null));};exports[_0x8aa8('0xdd')]=function(_0x1fc225,_0x450b76){return db[_0x8aa8('0x46')][_0x8aa8('0xc1')]({'where':{'id':_0x1fc225[_0x8aa8('0xbe')]['id']},'raw':!![]})[_0x8aa8('0x17')](handleEntityNotFound(_0x450b76,null))[_0x8aa8('0x17')](function(_0x21d7f1){if(_0x21d7f1){if(_0x21d7f1['closed']){return _0x450b76[_0x8aa8('0x23')](0x193)['json']({'status':0x193,'message':_0x8aa8('0xde')});}return db[_0x8aa8('0xdc')]['findOne']({'where':{'id':_0x1fc225[_0x8aa8('0x49')]['attachId']},'raw':!![]})[_0x8aa8('0x17')](handleEntityNotFound(_0x450b76,null));}})[_0x8aa8('0x17')](function(_0x1654fa){if(_0x1654fa){var _0x4bb398=_0x1654fa[_0x8aa8('0xdf')]!==null;var _0x3a8a5e=path['join'](config['root'],'server/files/attachments/');if(_0x4bb398){_0x3a8a5e=path['join'](_0x3a8a5e,_0x8aa8('0xe0'));}var _0x3743f0=path[_0x8aa8('0xe1')](_0x3a8a5e,_0x1654fa[_0x8aa8('0xe2')]);return _0x450b76[_0x8aa8('0xe3')](_0x3743f0);}})[_0x8aa8('0x22')](handleError(_0x450b76,null));};exports['close']=function(_0xbb19c4,_0x1f75f1){var _0x3bb329=null;var _0x2c10d9=null;var _0x5bec09=null;if(_0xbb19c4['body']['id']){delete _0xbb19c4['body']['id'];}if(_0xbb19c4[_0x8aa8('0x33')][_0x8aa8('0xe4')]){_0x5bec09=path[_0x8aa8('0xe1')](config['root'],'server/files/chat/upload/',util[_0x8aa8('0xe5')](_0x8aa8('0xe6'),Date['now']()));_0xbb19c4[_0x8aa8('0x33')][_0x8aa8('0xe7')]=_0x5bec09;}return db[_0x8aa8('0x46')][_0x8aa8('0x68')]({'where':{'id':_0xbb19c4['params']['id']},'include':[{'model':db[_0x8aa8('0xd1')],'as':'Messages','include':[{'model':db[_0x8aa8('0x7b')],'as':_0x8aa8('0x7b')}]}]})['then'](handleEntityNotFound(_0x1f75f1,null))[_0x8aa8('0x17')](saveUpdates(_0xbb19c4[_0x8aa8('0x33')],null))[_0x8aa8('0x17')](function(_0x544409){if(_0x544409){_0x3bb329=_0x544409;return db[_0x8aa8('0xc0')]['find']({'where':{'id':_0x3bb329[_0x8aa8('0x98')]}});}})[_0x8aa8('0x17')](function(_0x3305f4){if(_0x3305f4){_0x2c10d9=_0x3305f4;return db[_0x8aa8('0xe8')][_0x8aa8('0x68')]({'where':{'id':_0x3bb329[_0x8aa8('0x74')]}});}})['then'](function(_0x391cc0){if(_0x391cc0){if(_0x5bec09){var _0x13096e=null;for(var _0x31b317=0x1;_0x31b317<_0x3bb329[_0x8aa8('0xe9')]['length'];++_0x31b317){_0x13096e=_0x3bb329[_0x8aa8('0xe9')][_0x31b317];var _0x49d685=_0x13096e[_0x8aa8('0x43')]?util['format']('%s%d',_0x2c10d9[_0x8aa8('0xea')],_0x13096e[_0x8aa8('0x43')]):_0x8aa8('0xeb');var _0x2c9d5a=_0xbb19c4[_0x8aa8('0x33')]['customer']||util[_0x8aa8('0xe5')](_0x8aa8('0xec'),_0x8aa8('0xed'),_0x13096e[_0x8aa8('0x74')]);switch(_0x2c10d9[_0x8aa8('0xee')]){case _0x8aa8('0xef'):_0x49d685=_0x13096e[_0x8aa8('0x43')]?util[_0x8aa8('0xe5')](_0x8aa8('0xec'),_0x2c10d9[_0x8aa8('0xea')],_0x13096e[_0x8aa8('0x43')]):'System';break;case _0x8aa8('0xf0'):_0x49d685=_0x13096e['UserId']?_0x13096e[_0x8aa8('0x7b')]['alias']||_0x13096e[_0x8aa8('0x7b')]['fullname']:_0x8aa8('0xeb');break;case _0x8aa8('0xf1'):_0x49d685=_0x13096e[_0x8aa8('0x43')]?_0x13096e[_0x8aa8('0x7b')][_0x8aa8('0xf2')]:_0x8aa8('0xeb');break;default:_0x49d685=_0x13096e[_0x8aa8('0x43')]?util[_0x8aa8('0xe5')]('%s%d',_0x2c10d9[_0x8aa8('0xea')],_0x13096e['UserId']):_0x8aa8('0xeb');}var _0x2ba7ec=util[_0x8aa8('0xe5')](_0x8aa8('0xf3'),moment(_0x13096e[_0x8aa8('0x82')])['format'](_0x8aa8('0xf4')),_0x13096e[_0x8aa8('0xf5')]==='in'?_0x2c9d5a:_0x49d685,_0x13096e[_0x8aa8('0x33')]);if(!_0x13096e['secret']){fs[_0x8aa8('0xf6')](_0x5bec09,_0x2ba7ec);}}return db[_0x8aa8('0xf7')][_0x8aa8('0xc1')]({'where':{'service':!![]},'include':[{'model':db[_0x8aa8('0xf8')],'as':_0x8aa8('0xf9'),'raw':!![],'include':[{'model':db[_0x8aa8('0xfa')],'as':_0x8aa8('0xfa'),'raw':!![]}]}]});}}})[_0x8aa8('0x17')](function(_0xc1dfc6){if(!_0xc1dfc6||!_0xc1dfc6[_0x8aa8('0xf9')]||!_0xbb19c4[_0x8aa8('0x33')])return _0x3bb329;var _0x228435=_0xc1dfc6['getSmtpOptions']();return respondWithRpcPromise(_0x8aa8('0xfb'),'sendMail',{'account':_0x228435,'message':{'from':util[_0x8aa8('0xe5')]('\x22%s\x22\x20<%s>',_0xc1dfc6[_0x8aa8('0x2f')],_0xc1dfc6[_0x8aa8('0xc7')]||_0xc1dfc6[_0x8aa8('0xf9')][_0x8aa8('0x9b')]),'to':_0xbb19c4[_0x8aa8('0x33')][_0x8aa8('0xe4')],'subject':'Mail\x20Transcript','text':util['format'](_0x8aa8('0xfc'),_0xbb19c4[_0x8aa8('0x33')][_0x8aa8('0xe4')]),'attachments':[{'path':_0x5bec09}]}})['then'](function(){return _0x3bb329;})['catch'](function(_0x124828){logger[_0x8aa8('0x1d')](_0x124828);});})['then'](respondWithStatusCode(_0x1f75f1,0xc8))[_0x8aa8('0x22')](handleError(_0x1f75f1,null));};exports[_0x8aa8('0xfd')]=function(_0x3455d9,_0x28ea5e){return db[_0x8aa8('0xd1')][_0x8aa8('0x68')]({'where':{'id':_0x3455d9[_0x8aa8('0xbe')]['id']}})[_0x8aa8('0x17')](handleEntityNotFound(_0x28ea5e,null))[_0x8aa8('0x17')](function(_0x2a1cfa){if(_0x2a1cfa){return _0x2a1cfa[_0x8aa8('0xfd')](_0x3455d9[_0x8aa8('0x33')][_0x8aa8('0xfe')],_[_0x8aa8('0xff')](_0x3455d9['body'],[_0x8aa8('0xfe'),'id'])||{});}})['then'](respondWithResult(_0x28ea5e,null))[_0x8aa8('0x22')](handleError(_0x28ea5e,null));};exports['getMessages']=function(_0x487e54,_0x463d42){var _0x4accd6={'raw':![],'where':{}};var _0x129b24={};var _0x306bce={'count':0x0,'rows':[]};return db[_0x8aa8('0x46')][_0x8aa8('0xc1')]({'where':{'id':_0x487e54['params']['id']}})[_0x8aa8('0x17')](handleEntityNotFound(_0x463d42,null))['then'](function(_0x169368){if(_0x169368){_0x129b24['model']=_[_0x8aa8('0x4a')](db[_0x8aa8('0xd1')][_0x8aa8('0xb9')]);_0x129b24[_0x8aa8('0x49')]=_[_0x8aa8('0x4a')](_0x487e54['query']);_0x129b24[_0x8aa8('0x4b')]=_[_0x8aa8('0x4c')](_0x129b24[_0x8aa8('0x4d')],_0x129b24[_0x8aa8('0x49')]);_0x4accd6['attributes']=_[_0x8aa8('0x4c')](_0x129b24['model'],qs['fields'](_0x487e54[_0x8aa8('0x49')]['fields']));_0x4accd6[_0x8aa8('0x4e')]=_0x4accd6[_0x8aa8('0x4e')][_0x8aa8('0x4f')]?_0x4accd6[_0x8aa8('0x4e')]:_0x129b24[_0x8aa8('0x4d')];if(!_0x487e54[_0x8aa8('0x49')]['hasOwnProperty'](_0x8aa8('0x51'))){_0x4accd6[_0x8aa8('0x28')]=qs['limit'](_0x487e54[_0x8aa8('0x49')][_0x8aa8('0x28')]);_0x4accd6[_0x8aa8('0x26')]=qs[_0x8aa8('0x26')](_0x487e54[_0x8aa8('0x49')][_0x8aa8('0x26')]);}_0x4accd6[_0x8aa8('0x95')]=qs[_0x8aa8('0x52')](_0x487e54[_0x8aa8('0x49')][_0x8aa8('0x52')]);_0x4accd6[_0x8aa8('0x7f')]=qs[_0x8aa8('0x4b')](_['pick'](_0x487e54['query'],_0x129b24[_0x8aa8('0x4b')]));_0x4accd6[_0x8aa8('0x7f')][_0x8aa8('0xb7')]=_0x169368['id'];if(_0x487e54['query'][_0x8aa8('0x8c')]){_0x4accd6[_0x8aa8('0x7f')]=_[_0x8aa8('0x32')](_0x4accd6[_0x8aa8('0x7f')],{'$or':_[_0x8aa8('0x37')](_0x4accd6[_0x8aa8('0x4e')],function(_0x19de5c){var _0x144bbf={};_0x144bbf[_0x19de5c]={'$like':'%'+_0x487e54['query'][_0x8aa8('0x8c')]+'%'};return _0x144bbf;})});}if(_0x487e54[_0x8aa8('0x49')]['$gte']){var _0x10fb48=_0x487e54['query'][_0x8aa8('0x100')]['split'](',');var _0x5b1d7b={};_0x5b1d7b[_0x10fb48[0x0]]={'$gte':moment(_0x10fb48[0x1])[_0x8aa8('0xe5')](_0x8aa8('0x101'))};_0x4accd6[_0x8aa8('0x7f')]=_[_0x8aa8('0x32')](_0x4accd6['where'],_0x5b1d7b);}_0x4accd6=_[_0x8aa8('0x32')]({},_0x4accd6,_0x487e54[_0x8aa8('0xbc')]);return db[_0x8aa8('0xd1')][_0x8aa8('0x9f')]({'where':_0x4accd6['where']})[_0x8aa8('0x17')](function(_0x3392b9){_0x306bce[_0x8aa8('0x9f')]=_0x3392b9;if(_0x487e54[_0x8aa8('0x49')][_0x8aa8('0xba')]){_0x4accd6[_0x8aa8('0xbb')]=[{'all':!![]}];}return db[_0x8aa8('0xd1')][_0x8aa8('0x102')](_0x4accd6);})[_0x8aa8('0x17')](function(_0x296398){_0x306bce['rows']=_0x296398;return _0x306bce;});}})[_0x8aa8('0x17')](respondWithFilteredResult(_0x463d42,_0x4accd6))[_0x8aa8('0x22')](handleError(_0x463d42,null));};exports[_0x8aa8('0x103')]=function(_0x26c579,_0x3d44ef){var _0x3e82f3={'where':{}},_0x4eb023={},_0x214cdb={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x8aa8('0xc1')]({'where':{'id':_0x26c579[_0x8aa8('0xbe')]['id']}})['then'](handleEntityNotFound(_0x3d44ef,null))[_0x8aa8('0x17')](function(_0x5d51bc){if(_0x5d51bc){_0x4eb023[_0x8aa8('0x4d')]=_[_0x8aa8('0x4a')](db[_0x8aa8('0xd1')]['rawAttributes']);_0x4eb023[_0x8aa8('0x49')]=_['keys'](_0x26c579['query']);_0x4eb023[_0x8aa8('0x4b')]=_[_0x8aa8('0x4c')](_0x4eb023[_0x8aa8('0x4d')],_0x4eb023[_0x8aa8('0x49')]);_0x3e82f3[_0x8aa8('0x4e')]=_[_0x8aa8('0x4c')](_0x4eb023[_0x8aa8('0x4d')],qs['fields'](_0x26c579[_0x8aa8('0x49')]['fields']));_0x3e82f3[_0x8aa8('0x4e')]=_0x3e82f3[_0x8aa8('0x4e')][_0x8aa8('0x4f')]?_0x3e82f3['attributes']:_0x4eb023[_0x8aa8('0x4d')];if(!_0x26c579['query'][_0x8aa8('0x50')]('nolimit')){_0x3e82f3['limit']=qs[_0x8aa8('0x28')](_0x26c579[_0x8aa8('0x49')][_0x8aa8('0x28')]);_0x3e82f3['offset']=qs['offset'](_0x26c579['query']['offset']);}_0x3e82f3[_0x8aa8('0x95')]=qs['sort'](_0x26c579[_0x8aa8('0x49')][_0x8aa8('0x52')]);_0x3e82f3['where']=qs[_0x8aa8('0x4b')](_[_0x8aa8('0x53')](_0x26c579['query'],_0x4eb023[_0x8aa8('0x4b')]));_0x3e82f3[_0x8aa8('0x7f')]['ChatInteractionId']=_0x5d51bc['id'];if(_0x26c579[_0x8aa8('0x49')][_0x8aa8('0x8c')]){_0x3e82f3['where']=_[_0x8aa8('0x32')](_0x3e82f3['where'],{'$or':_['map'](_0x3e82f3['attributes'],function(_0x5c40ef){var _0x55b8a6={};_0x55b8a6[_0x5c40ef]={'$like':'%'+_0x26c579[_0x8aa8('0x49')]['filter']+'%'};return _0x55b8a6;})});}_0x3e82f3[_0x8aa8('0x7f')][_0x8aa8('0x104')]=![];if(_0x26c579[_0x8aa8('0x49')]['id']){_0x3e82f3[_0x8aa8('0x7f')]['id']={'$gt':_0x26c579[_0x8aa8('0x49')]['id']};}_0x3e82f3=_[_0x8aa8('0x32')]({},_0x3e82f3,_0x26c579[_0x8aa8('0xbc')]);return db[_0x8aa8('0xd1')][_0x8aa8('0x9f')]({'where':_0x3e82f3[_0x8aa8('0x7f')]})[_0x8aa8('0x17')](function(_0x328fbf){_0x214cdb['count']=_0x328fbf;_0x3e82f3['include']=[];if(_0x26c579['query'][_0x8aa8('0x105')]){_0x3e82f3[_0x8aa8('0xbb')]['push']({'model':db[_0x8aa8('0x7b')],'as':_0x8aa8('0x7b'),'attributes':['id','fullname',_0x8aa8('0x106')]});}if(_0x26c579[_0x8aa8('0x49')][_0x8aa8('0xba')]){_0x3e82f3[_0x8aa8('0xbb')]=[{'all':!![]}];}return db[_0x8aa8('0xd1')][_0x8aa8('0x102')](_0x3e82f3);})[_0x8aa8('0x17')](function(_0x3ff161){_0x214cdb[_0x8aa8('0x107')]=_0x3ff161;return _0x214cdb;});}})[_0x8aa8('0x17')](respondWithFilteredResult(_0x3d44ef,_0x3e82f3))['catch'](handleError(_0x3d44ef,null));};exports[_0x8aa8('0x108')]=function(_0x229c5c,_0x56cbc1){return db[_0x8aa8('0x46')][_0x8aa8('0x68')]({'where':{'id':_0x229c5c[_0x8aa8('0xbe')]['id']}})['then'](handleEntityNotFound(_0x56cbc1,null))[_0x8aa8('0x17')](function(_0x554cc4){if(_0x554cc4){return _0x554cc4[_0x8aa8('0x109')](_0x229c5c['body']['ids'],_[_0x8aa8('0xff')](_0x229c5c['body'],[_0x8aa8('0xfe'),'id'])||{})['spread'](function(){return db[_0x8aa8('0x78')][_0x8aa8('0x102')]({'attributes':['id',_0x8aa8('0x2f'),_0x8aa8('0x56')],'where':{'id':_0x229c5c[_0x8aa8('0x33')][_0x8aa8('0xfe')]}});})[_0x8aa8('0x17')](function(_0x5da31b){socket['emit'](_0x8aa8('0x10a'),{'id':Number(_0x229c5c[_0x8aa8('0xbe')]['id']),'tags':_0x5da31b||[]});return{'id':Number(_0x229c5c[_0x8aa8('0xbe')]['id']),'tags':_0x5da31b||[]};});}})[_0x8aa8('0x17')](respondWithResult(_0x56cbc1,null))[_0x8aa8('0x22')](handleError(_0x56cbc1,null));};exports[_0x8aa8('0x10b')]=function(_0xd97a60,_0x1af658){return db[_0x8aa8('0x46')]['find']({'where':{'id':_0xd97a60[_0x8aa8('0xbe')]['id']}})[_0x8aa8('0x17')](handleEntityNotFound(_0x1af658,null))[_0x8aa8('0x17')](function(_0x5aedd7){if(_0x5aedd7){return _0x5aedd7[_0x8aa8('0x10b')](_0xd97a60[_0x8aa8('0x49')][_0x8aa8('0xfe')]);}})[_0x8aa8('0x17')](respondWithStatusCode(_0x1af658,null))['catch'](handleError(_0x1af658,null));};exports[_0x8aa8('0xe3')]=function(_0x3a1c6d,_0x2c2750){var _0x39eab4=moment()[_0x8aa8('0x10c')]()[_0x8aa8('0x9e')]();var _0x244aba=path['join'](config[_0x8aa8('0x10d')],_0x8aa8('0x10e'),_0x8aa8('0x10f'),_0x8aa8('0x110'));var _0x42d491=path[_0x8aa8('0xe1')](config[_0x8aa8('0x10d')],_0x8aa8('0x10e'),_0x8aa8('0x10f'),_0x8aa8('0x111'));var _0x2b3efd=path[_0x8aa8('0xe1')](_0x244aba,_0x39eab4);var _0x8ea26d=util[_0x8aa8('0xe5')](_0x8aa8('0x112'),_0x3a1c6d[_0x8aa8('0xbe')]['id'],_0x39eab4);var _0x333a72=path[_0x8aa8('0xe1')](_0x244aba,_0x8ea26d);var _0x569946=[];_0x569946[_0x8aa8('0x3a')]({'model':db[_0x8aa8('0x7b')],'as':_0x8aa8('0x7b'),'attributes':['id',_0x8aa8('0xf2')],'raw':!![]});_0x569946['push']({'model':db[_0x8aa8('0xe8')],'as':'Contact','attributes':['id',_0x8aa8('0x113'),_0x8aa8('0x114')],'raw':!![]});if(_0x3a1c6d['query'][_0x8aa8('0x111')]){_0x569946[_0x8aa8('0x3a')]({'model':db[_0x8aa8('0xdc')],'as':_0x8aa8('0xdc'),'raw':!![]});}var _0x2a695f=[{'model':db[_0x8aa8('0xd1')],'as':_0x8aa8('0xe9'),'attributes':['id',_0x8aa8('0x33'),_0x8aa8('0x82'),'direction',_0x8aa8('0x104'),'read'],'include':_0x569946}];_0x2a695f[_0x8aa8('0x3a')]({'model':db[_0x8aa8('0xc0')],'as':'Account','attributes':['id',_0x8aa8('0x2f')]});_0x2a695f[_0x8aa8('0x3a')]({'model':db[_0x8aa8('0x7b')],'as':_0x8aa8('0x115'),'attributes':['id','fullname']});return db[_0x8aa8('0x46')][_0x8aa8('0x68')]({'where':{'id':_0x3a1c6d[_0x8aa8('0xbe')]['id']},'include':_0x2a695f})[_0x8aa8('0x17')](handleEntityNotFound(_0x2c2750,null))[_0x8aa8('0x17')](function(_0x19c661){if(_0x19c661){var _0x227ffd=_0x19c661[_0x8aa8('0x116')]({'plain':!![]});fs[_0x8aa8('0x117')](_0x2b3efd);var _0x5063e3={'channel':'Chat','account':_0x227ffd[_0x8aa8('0x118')]['name'],'agent':_0x227ffd[_0x8aa8('0x115')]?_0x227ffd[_0x8aa8('0x115')][_0x8aa8('0xf2')]:_0x8aa8('0x119'),'createdAt':moment(_0x227ffd[_0x8aa8('0x82')])[_0x8aa8('0xe5')]('YYYY-MM-DD\x20HH:mm:ss')[_0x8aa8('0x9e')](),'closedAt':_0x227ffd[_0x8aa8('0x42')]?moment(_0x227ffd[_0x8aa8('0x11a')])[_0x8aa8('0xe5')](_0x8aa8('0x101'))['toString']():'','disposition':_0x227ffd[_0x8aa8('0x44')],'chatInfo':{'browser':_0x227ffd[_0x8aa8('0x11b')],'os':_0x227ffd['osName'],'referer':_0x227ffd[_0x8aa8('0x11c')],'customerIp':_0x227ffd[_0x8aa8('0x11d')],'customerPort':_0x227ffd['customerPort']?_0x227ffd[_0x8aa8('0x11e')]:_0x8aa8('0x119')},'messages':_(_0x227ffd[_0x8aa8('0xe9')])[_0x8aa8('0x11f')]()['filter']({'secret':![]})[_0x8aa8('0x37')](function(_0x1abae4){if(_0x1abae4[_0x8aa8('0xdc')]){var _0x29e820=path[_0x8aa8('0xe1')](_0x42d491,_0x1abae4[_0x8aa8('0xdc')][_0x8aa8('0xe2')]);if(fs[_0x8aa8('0x120')](_0x29e820)){fs[_0x8aa8('0x121')](_0x29e820)[_0x8aa8('0x122')](fs[_0x8aa8('0x123')](path[_0x8aa8('0xe1')](_0x2b3efd,_0x1abae4[_0x8aa8('0xdc')][_0x8aa8('0xe2')])));}}return{'date':moment(_0x1abae4[_0x8aa8('0x82')])[_0x8aa8('0xe5')](_0x8aa8('0x101'))[_0x8aa8('0x9e')](),'sender':_0x1abae4[_0x8aa8('0xf5')]===_0x8aa8('0xd0')?_0x1abae4[_0x8aa8('0x7b')]?_0x1abae4['User'][_0x8aa8('0xf2')]:_0x8aa8('0xeb'):_0x1abae4[_0x8aa8('0x6c')][_0x8aa8('0x113')]+(_0x1abae4[_0x8aa8('0x6c')][_0x8aa8('0x114')]?'\x20'+_0x1abae4['Contact'][_0x8aa8('0x114')]:''),'body':_0x1abae4[_0x8aa8('0xdc')]?_0x1abae4[_0x8aa8('0xdc')][_0x8aa8('0xe2')]:_0x1abae4[_0x8aa8('0x33')],'direction':_0x1abae4[_0x8aa8('0xf5')]===_0x8aa8('0xd0')?'A':'C','secret':_0x1abae4['secret'],'read':_0x1abae4[_0x8aa8('0x87')],'attachment':_0x1abae4['Attachment']};})[_0x8aa8('0x6f')]()};return ejs[_0x8aa8('0x124')](path[_0x8aa8('0xe1')](config[_0x8aa8('0x10d')],_0x8aa8('0x10e'),_0x8aa8('0x125'),'downloadInteraction.ejs'),{'interaction':_0x5063e3})[_0x8aa8('0x17')](function(_0x337397){var _0x5d9174=path[_0x8aa8('0xe1')](_0x2b3efd,_0x8aa8('0x126')+_0x227ffd['id']+'-'+_0x39eab4+_0x8aa8('0x127'));var _0x5ea27e={'path':_0x5d9174,'channel':'Chat','interactionId':_0x227ffd['id']};return pdf['createPdfFromHTML'](_0x337397,_0x5ea27e);})[_0x8aa8('0x17')](function(){return new Promise(function(_0x20154a,_0x3d7283){zipdir(_0x2b3efd,{'saveTo':_0x333a72},function(_0x5155b8,_0x50c12d){if(_0x5155b8)return _0x3d7283(_0x5155b8);return _0x20154a(_0x50c12d);});})['then'](function(){return new BPromise(function(_0x29ab45,_0x20b5ca){rimraf(_0x2b3efd,function(_0x212b8e){if(_0x212b8e)_0x20b5ca(_0x212b8e);return _0x29ab45();});});})['then'](function(){return _0x2c2750[_0x8aa8('0xe3')](_0x333a72,_0x8ea26d,function(_0x1a646b){if(_0x1a646b){logger[_0x8aa8('0x1d')]('err',_0x1a646b);}else{fs[_0x8aa8('0x128')](_0x333a72);}});});});}else{return _0x2c2750[_0x8aa8('0x2d')](0xc8);}})[_0x8aa8('0x22')](handleError(_0x2c2750,null));};
\ No newline at end of file
+var _0xedd9=['account','Users','map','fullname','TagIds','Tags','split','forEach','push','catch','waiting','talking','answered','abandoned','closed','UserId','disposition','unmanaged','total','index','ChatInteraction','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','select','field','color','from','u.fullname','ui.ChatInteractionId','users','u.id\x20=\x20ui.UserId','chat_interactions','left_join','cm_contacts','o.id\x20=\x20i.UserId','a.id\x20=\x20i.ChatWebsiteId','chat_messages','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','unreadMessages','having','`\x20=\x200','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','value','ContactId','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','buildExpression','some','compact','isEmpty','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','t.id\x20IN\x20?','resolve','ChatWebsiteId','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','i.ChatWebsiteId\x20IN\x20?','user','role','sequelize','toString','keyBy','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','i.*','c.firstName','c.lastName','Contact.email','c.phone','Contact.phone','c.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','ChatInteractionId','all','rows','show','params','includeAll','include','options','create','createVidaooSession','findOne','vidaooApiKey','vidaooTopic','vidaooNote','vidaooMetadata','vidaooEscalation','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','follow','isNull','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','CmContact','abandon','entity\x20not\x20found','Interaction\x20already\x20assigned','AbandonInteraction','attachmentUpload','file','Attachment','Unauthorized','attachId','root','server/files/attachments/','offline-chat/','join','download','close','server/files/chat/upload/','format','transcript-%s.txt','pathTranscript','Messages','User','ChatWebsite','%s%d','agentAlias','System','customer','Visitor','website_alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','secret','appendFileSync','MailAccount','MailServerOut','Smtp','CloudProvider','getSmtpOptions','SendMail','sendMail','mailTranscript','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','getMessages','YYYY-MM-DD\x20HH:mm:ss','getMyMessages','includeAgent','alias','setTags','spread','findAll','removeTags','unix','server','tmp','files','attachments','transcript-%d-%s.zip','Contact','firstName','lastName','direction','Owner','get','Chat','Account','N.A.','closedAt','browserName','osName','referer','customerPort','tail','basename','createReadStream','pipe','createWriteStream','out','renderFile','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','zip-dir','request-promise','moment','bluebird','mustache','util','path','ejs','squel','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','./chatInteraction.socket','jayson/promise','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','result','message','sendStatus','status','end','json','offset','undefined','limit','count','set','update','destroy','name','send','render','merge','body','contact','agent','interaction'];(function(_0x255531,_0x4a919e){var _0xb00866=function(_0x25b2fc){while(--_0x25b2fc){_0x255531['push'](_0x255531['shift']());}};_0xb00866(++_0x4a919e);}(_0xedd9,0xfc));var _0x9edd=function(_0x2b5ebe,_0x1f2779){_0x2b5ebe=_0x2b5ebe-0x0;var _0x38dbff=_0xedd9[_0x2b5ebe];return _0x38dbff;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x9edd('0x0'));var rp=require(_0x9edd('0x1'));var moment=require(_0x9edd('0x2'));var BPromise=require(_0x9edd('0x3'));var Mustache=require(_0x9edd('0x4'));var util=require(_0x9edd('0x5'));var path=require(_0x9edd('0x6'));var ejs=require(_0x9edd('0x7'));var fs=require('fs');var _=require('lodash');var squel=require(_0x9edd('0x8'));var Redis=require(_0x9edd('0x9'));var qs=require(_0x9edd('0xa'));var as=require(_0x9edd('0xb'));var pdf=require('../../components/export/pdf');var logger=require(_0x9edd('0xc'))('api');var config=require(_0x9edd('0xd'));var db=require(_0x9edd('0xe'))['db'];config[_0x9edd('0xf')]=_[_0x9edd('0x10')](config['redis'],{'host':_0x9edd('0x11'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9edd('0xf')]));require(_0x9edd('0x12'))['register'](socket);var jayson=require(_0x9edd('0x13'));var client=jayson[_0x9edd('0x14')]['http']({'port':0x232b});var client9004=jayson[_0x9edd('0x14')][_0x9edd('0x15')]({'port':0x232c});function respondWithRpcPromise(_0x25e64c,_0xfd544a,_0x287ddd,_0x3a7b84){return new BPromise(function(_0xfca576,_0xef5498){var _0x47eb64=_0x3a7b84||client;return _0x47eb64[_0x9edd('0x16')](_0x25e64c,_0x287ddd)[_0x9edd('0x17')](function(_0x891832){logger[_0x9edd('0x18')](_0x9edd('0x19'),_0xfd544a,_0x9edd('0x1a'));logger[_0x9edd('0x1b')](_0x9edd('0x1c'),_0xfd544a,'request\x20sent',JSON[_0x9edd('0x1d')](_0x891832));if(_0x891832[_0x9edd('0x1e')]){if(_0x891832[_0x9edd('0x1e')]['code']===0x1f4){logger[_0x9edd('0x1e')](_0x9edd('0x19'),_0xfd544a,_0x891832[_0x9edd('0x1e')]['message']);return _0xef5498(_0x891832[_0x9edd('0x1e')]['message']);}logger[_0x9edd('0x1e')](_0x9edd('0x19'),_0xfd544a,_0x891832['error']['message']);return _0xfca576(_0x891832[_0x9edd('0x1e')]['message']);}else{logger[_0x9edd('0x18')]('ChatInteraction,\x20%s,\x20%s',_0xfd544a,'request\x20sent');_0xfca576(_0x891832[_0x9edd('0x1f')][_0x9edd('0x20')]);}})['catch'](function(_0x5823bc){logger[_0x9edd('0x1e')](_0x9edd('0x19'),_0xfd544a,_0x5823bc);_0xef5498(_0x5823bc);});});}function respondWithStatusCode(_0x477878,_0x542172){_0x542172=_0x542172||0xcc;return function(_0x3741c8){if(_0x3741c8){return _0x477878[_0x9edd('0x21')](_0x542172);}return _0x477878[_0x9edd('0x22')](_0x542172)[_0x9edd('0x23')]();};}function respondWithResult(_0x339a0d,_0x4c75d2){_0x4c75d2=_0x4c75d2||0xc8;return function(_0x46c383){if(_0x46c383){return _0x339a0d[_0x9edd('0x22')](_0x4c75d2)[_0x9edd('0x24')](_0x46c383);}};}function respondWithFilteredResult(_0x2f9f86,_0x310a4d){return function(_0x4d507f){if(_0x4d507f){var _0x4b3d1b=typeof _0x310a4d[_0x9edd('0x25')]===_0x9edd('0x26')&&typeof _0x310a4d[_0x9edd('0x27')]===_0x9edd('0x26');var _0x3c2227=_0x4d507f['count'];var _0x57a2cc=_0x4b3d1b?0x0:_0x310a4d[_0x9edd('0x25')];var _0x257a26=_0x4b3d1b?_0x4d507f[_0x9edd('0x28')]:_0x310a4d['offset']+_0x310a4d[_0x9edd('0x27')];var _0x28cfae;if(_0x257a26>=_0x3c2227){_0x257a26=_0x3c2227;_0x28cfae=0xc8;}else{_0x28cfae=0xce;}_0x2f9f86[_0x9edd('0x22')](_0x28cfae);return _0x2f9f86[_0x9edd('0x29')]('Content-Range',_0x57a2cc+'-'+_0x257a26+'/'+_0x3c2227)[_0x9edd('0x24')](_0x4d507f);}return null;};}function saveUpdates(_0x3fb556){return function(_0xbe87e1){if(_0xbe87e1){return _0xbe87e1[_0x9edd('0x2a')](_0x3fb556)[_0x9edd('0x17')](function(_0x42e664){return _0x42e664;});}return null;};}function removeEntity(_0x209aba){return function(_0x1fba7b){if(_0x1fba7b){return _0x1fba7b[_0x9edd('0x2b')]()[_0x9edd('0x17')](function(){_0x209aba[_0x9edd('0x22')](0xcc)[_0x9edd('0x23')]();});}};}function handleEntityNotFound(_0x6907a5){return function(_0xa55906){if(!_0xa55906){_0x6907a5[_0x9edd('0x21')](0x194);}return _0xa55906;};}function handleError(_0x5af178,_0x1453d2){_0x1453d2=_0x1453d2||0x1f4;return function(_0x259259){logger[_0x9edd('0x1e')](_0x259259['stack']);if(_0x259259[_0x9edd('0x2c')]){delete _0x259259[_0x9edd('0x2c')];}_0x5af178[_0x9edd('0x22')](_0x1453d2)[_0x9edd('0x2d')](_0x259259);};}function getMustacheRender(_0x21bc30,_0x2bc4ed){return Mustache[_0x9edd('0x2e')](_0x21bc30,_[_0x9edd('0x2f')](_0x2bc4ed[_0x9edd('0x30')],{'contact':_0x2bc4ed[_0x9edd('0x31')],'message':_0x2bc4ed[_0x9edd('0x20')],'agent':_0x2bc4ed[_0x9edd('0x32')],'interaction':_0x2bc4ed[_0x9edd('0x33')],'account':_0x2bc4ed[_0x9edd('0x34')]}))||'';}function getInteractionUsers(_0x5757fc,_0x37fcb2){return new BPromise(function(_0x5ed62d,_0x968303){try{if(_0x37fcb2[_0x5757fc['id']]){_0x5757fc[_0x9edd('0x35')]=_[_0x9edd('0x36')](_0x37fcb2[_0x5757fc['id']],function(_0x434d26){return{'id':_0x434d26['id'],'fullname':_0x434d26[_0x9edd('0x37')]};});}}catch(_0x4fa5ab){_0x968303(_0x4fa5ab);}_0x5ed62d(_0x5757fc);});}function getInteractionTags(_0x6de835,_0x44dbfc){return new BPromise(function(_0x2b3469,_0x38e9be){try{if(_0x6de835[_0x9edd('0x38')]){_0x6de835[_0x9edd('0x39')]=[];_0x6de835[_0x9edd('0x38')][_0x9edd('0x3a')](',')[_0x9edd('0x3b')](function(_0x35c16f){_0x6de835['Tags'][_0x9edd('0x3c')](_0x44dbfc[_0x35c16f]);});}delete _0x6de835['TagIds'];}catch(_0x3ef1d5){_0x38e9be(_0x3ef1d5);}_0x2b3469(_0x6de835);});}function updateChatInteraction(_0x5658d6,_0x30883e,_0x2858b5){return new BPromise(function(_0x34e9d2,_0x479661){return getInteractionUsers(_0x5658d6,_0x2858b5)[_0x9edd('0x17')](function(_0xcbd0ef){return getInteractionTags(_0xcbd0ef,_0x30883e);})[_0x9edd('0x17')](function(_0x48958a){return getStateInteraction(_0x48958a);})[_0x9edd('0x17')](function(_0x51ad91){_0x34e9d2(_0x51ad91);})[_0x9edd('0x3d')](function(_0xfbc492){_0x479661(_0xfbc492);});});}function getStateInteraction(_0x50be2c){return new BPromise(function(_0x315f52){_0x50be2c[_0x9edd('0x3e')]=0x0;_0x50be2c[_0x9edd('0x3f')]=0x0;_0x50be2c[_0x9edd('0x40')]=0x0;_0x50be2c['unmanaged']=0x0;_0x50be2c[_0x9edd('0x41')]=0x0;_0x50be2c['total']=0x0;if(!_0x50be2c[_0x9edd('0x42')]&&!_0x50be2c[_0x9edd('0x43')]){_0x50be2c['waiting']+=0x1;}if(!_0x50be2c[_0x9edd('0x42')]&&_0x50be2c['UserId']){_0x50be2c['talking']+=0x1;if(_0x50be2c[_0x9edd('0x3e')]){_0x50be2c[_0x9edd('0x3e')]-=0x1;}}if(_0x50be2c[_0x9edd('0x42')]&&_0x50be2c[_0x9edd('0x44')]===_0x9edd('0x41')){_0x50be2c[_0x9edd('0x41')]+=0x1;if(_0x50be2c[_0x9edd('0x3e')]){_0x50be2c[_0x9edd('0x3e')]-=0x1;}}else if(_0x50be2c[_0x9edd('0x42')]&&!_0x50be2c[_0x9edd('0x43')]&&_0x50be2c[_0x9edd('0x44')]){_0x50be2c[_0x9edd('0x45')]+=0x1;if(_0x50be2c[_0x9edd('0x3e')]){_0x50be2c[_0x9edd('0x3e')]-=0x1;}}else if(_0x50be2c[_0x9edd('0x42')]&&_0x50be2c['UserId']){_0x50be2c[_0x9edd('0x40')]+=0x1;if(_0x50be2c[_0x9edd('0x3f')]){_0x50be2c[_0x9edd('0x3f')]-=0x1;}}_0x50be2c[_0x9edd('0x46')]+=0x1;_0x315f52(_0x50be2c);});}exports[_0x9edd('0x47')]=function(_0x3ecdfd,_0x10d41e){var _0x4e9ad1={},_0x4a4656={},_0x4bc7a1={'count':0x0,'rows':[]};var _0x4a7dc9=_['map'](db[_0x9edd('0x48')][_0x9edd('0x49')],function(_0x2b06d3){return{'name':_0x2b06d3[_0x9edd('0x4a')],'type':_0x2b06d3[_0x9edd('0x4b')]['key']};});_0x4a4656[_0x9edd('0x4c')]=_[_0x9edd('0x36')](_0x4a7dc9,_0x9edd('0x2c'));_0x4a4656['query']=_[_0x9edd('0x4d')](_0x3ecdfd[_0x9edd('0x4e')]);_0x4a4656[_0x9edd('0x4f')]=_[_0x9edd('0x50')](_0x4a4656[_0x9edd('0x4c')],_0x4a4656[_0x9edd('0x4e')]);_0x4e9ad1['attributes']=_[_0x9edd('0x50')](_0x4a4656[_0x9edd('0x4c')],qs['fields'](_0x3ecdfd[_0x9edd('0x4e')][_0x9edd('0x51')]));_0x4e9ad1['attributes']=_0x4e9ad1[_0x9edd('0x52')][_0x9edd('0x53')]?_0x4e9ad1[_0x9edd('0x52')]:_0x4a4656['model'];if(!_0x3ecdfd[_0x9edd('0x4e')][_0x9edd('0x54')](_0x9edd('0x55'))){_0x4e9ad1[_0x9edd('0x27')]=qs['limit'](_0x3ecdfd[_0x9edd('0x4e')][_0x9edd('0x27')]);_0x4e9ad1[_0x9edd('0x25')]=qs['offset'](_0x3ecdfd[_0x9edd('0x4e')][_0x9edd('0x25')]);}_0x4e9ad1['order']=qs[_0x9edd('0x56')](_0x3ecdfd['query'][_0x9edd('0x56')]);_0x4e9ad1[_0x9edd('0x57')]=qs[_0x9edd('0x4f')](_[_0x9edd('0x58')](_0x3ecdfd[_0x9edd('0x4e')],_0x4a4656[_0x9edd('0x4f')]),_0x4a7dc9);var _0x2334d4=[];var _0x14dd27=squel[_0x9edd('0x59')]()[_0x9edd('0x5a')]('id')[_0x9edd('0x5a')]('name')[_0x9edd('0x5a')](_0x9edd('0x5b'))[_0x9edd('0x5c')]('tools_tags');var _0xe96d6a=squel['select']()['field']('u.id')[_0x9edd('0x5a')](_0x9edd('0x5d'))[_0x9edd('0x5a')](_0x9edd('0x5e'))['from']('user_has_chat_interactions','ui')['left_join'](_0x9edd('0x5f'),'u',_0x9edd('0x60'));var _0xd5090a=squel[_0x9edd('0x59')]()[_0x9edd('0x5c')](_0x9edd('0x61'),'i')[_0x9edd('0x62')](_0x9edd('0x63'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x9edd('0x62')]('users','o',_0x9edd('0x64'))[_0x9edd('0x62')]('chat_websites','a',_0x9edd('0x65'))[_0x9edd('0x62')](_0x9edd('0x66'),'me','me.ChatInteractionId\x20=\x20i.id')[_0x9edd('0x62')](_0x9edd('0x67'),'it',_0x9edd('0x68'))[_0x9edd('0x62')](_0x9edd('0x69'),'t',_0x9edd('0x6a'));var _0x53f55b=squel['expr']();var _0x452ca5=[];var _0x54f96c=squel[_0x9edd('0x6b')]();var _0x3e9a3e;if(_0x3ecdfd[_0x9edd('0x4e')][_0x9edd('0x6c')]){_0x3e9a3e=as['parseSearch'](_0x3ecdfd[_0x9edd('0x4e')]['search']);var _0x3e5dca=_0x3e9a3e[_0x9edd('0x6d')];for(var _0xc6bde6=0x0;_0xc6bde6<_0x3e9a3e['conditions'][_0x9edd('0x53')];_0xc6bde6++){var _0x57da5b=_0x3e9a3e[_0x9edd('0x6e')][_0xc6bde6];var _0x4e1eda='i';var _0x4915a9=_[_0x9edd('0x6f')](_0x4a7dc9,['name',_0x57da5b[_0x9edd('0x5a')]]);if(!_0x4915a9){switch(_0x57da5b[_0x9edd('0x5a')]){case _0x9edd('0x70'):if(_0x57da5b['value']==0x1){_0xd5090a[_0x9edd('0x71')]('`'+_0x57da5b[_0x9edd('0x5a')]+_0x9edd('0x72'));}else{_0xd5090a[_0x9edd('0x71')]('`'+_0x57da5b[_0x9edd('0x5a')]+'`\x20>\x200');}break;case'Contact':if(_0x57da5b[_0x9edd('0x73')]===_0x9edd('0x74')){if(_0x57da5b['value']['split']('\x20')['length']>0x1){_0x53f55b[_0x3e5dca](_0x9edd('0x75'),qs['getFullTextValue'](_0x57da5b['value']),null);}else{var _0x3ef9c9='%'+_0x57da5b[_0x9edd('0x76')]+'%';_0x53f55b[_0x3e5dca]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x3ef9c9,_0x3ef9c9,_0x3ef9c9);}}else{_0x4915a9=_[_0x9edd('0x6f')](_0x4a7dc9,[_0x9edd('0x2c'),_0x9edd('0x77')]);_0x57da5b['field']=_0x9edd('0x77');_0x3801c4=as['buildExpression'](_0x4e1eda,_0x4915a9[_0x9edd('0x4b')],_0x57da5b);_0x53f55b[_0x3e5dca](_0x3801c4[_0x9edd('0x78')],_0x3801c4['value'][_0x9edd('0x79')],_0x3801c4[_0x9edd('0x76')]['end']);}break;case _0x9edd('0x7a'):var _0x475dc3=_0x57da5b[_0x9edd('0x76')][_0x9edd('0x3a')](',')['map'](function(_0x366b04){return Number(_0x366b04);});_0x475dc3['forEach'](function(_0x1a618c){_0x54f96c['or'](_0x9edd('0x7b'),'%,'+_0x1a618c+',%');});_0x452ca5=_[_0x9edd('0x7c')](_0x452ca5,_0x475dc3);break;case'User':if(_0x57da5b[_0x9edd('0x73')]===_0x9edd('0x74')){_0x53f55b[_0x3e5dca](_0x9edd('0x7d'),'%'+_0x57da5b[_0x9edd('0x76')]+'%',null);}else{_0x4915a9=_[_0x9edd('0x6f')](_0x4a7dc9,[_0x9edd('0x2c'),_0x9edd('0x43')]);_0x57da5b['field']='UserId';_0x3801c4=as[_0x9edd('0x7e')](_0x4e1eda,_0x4915a9[_0x9edd('0x4b')],_0x57da5b);_0x53f55b[_0x3e5dca](_0x3801c4[_0x9edd('0x78')],_0x3801c4[_0x9edd('0x76')][_0x9edd('0x79')],_0x3801c4['value'][_0x9edd('0x23')]);}break;case _0x9edd('0x30'):_0x3801c4=as[_0x9edd('0x7e')]('me',null,_0x57da5b);_0x53f55b[_0x3e5dca](_0x3801c4['text'],_0x3801c4[_0x9edd('0x76')][_0x9edd('0x79')],_0x3801c4['value'][_0x9edd('0x23')]);break;}}else{var _0x3801c4=as['buildExpression'](_0x4e1eda,_0x4915a9[_0x9edd('0x4b')],_0x57da5b);_0x53f55b[_0x3e5dca](_0x3801c4[_0x9edd('0x78')],_0x3801c4['value'][_0x9edd('0x79')],_0x3801c4['value']['end']);}}}else{var _0x45c9ef=_(_0x3ecdfd[_0x9edd('0x4e')])[_0x9edd('0x4d')]()['map'](function(_0x3c7df3){return _[_0x9edd('0x7f')](_0x4a7dc9,['name',_0x3c7df3])?_0x3c7df3:undefined;})[_0x9edd('0x80')]()[_0x9edd('0x76')]();if(!_[_0x9edd('0x81')](_0x45c9ef)){_0x45c9ef[_0x9edd('0x3b')](function(_0x54ac71){if(_0x54ac71==='ChatWebsiteId'){_0xd5090a[_0x9edd('0x57')]('i.ChatWebsiteId\x20IN\x20?',[][_0x9edd('0x82')](_0x3ecdfd[_0x9edd('0x4e')][_0x54ac71]));}else if(_0x54ac71===_0x9edd('0x83')){var _0x3cfd35=JSON[_0x9edd('0x84')](_0x3ecdfd[_0x9edd('0x4e')][_0x54ac71])[_0x9edd('0x85')];var _0x5a4d4b=JSON[_0x9edd('0x84')](_0x3ecdfd['query'][_0x54ac71])[_0x9edd('0x86')];_0xd5090a[_0x9edd('0x57')](_0x9edd('0x87'),_0x3cfd35,_0x5a4d4b);}else{if(_0x3ecdfd[_0x9edd('0x4e')][_0x54ac71]===_0x9edd('0x88')){_0xd5090a[_0x9edd('0x57')]('i.'+_0x54ac71+_0x9edd('0x89'));}else{_0xd5090a['where']('i.'+_0x54ac71+_0x9edd('0x8a'),_0x3ecdfd[_0x9edd('0x4e')][_0x54ac71]);}}});}if(_0x3ecdfd['query'][_0x9edd('0x8b')]){if(_0x3ecdfd[_0x9edd('0x4e')]['read']==0x1){_0xd5090a[_0x9edd('0x71')](_0x9edd('0x8c'));}else{_0xd5090a[_0x9edd('0x71')]('`unreadMessages`\x20>\x200');}}if(_0x3ecdfd[_0x9edd('0x4e')][_0x9edd('0x8d')]){_0x452ca5=_[_0x9edd('0x8e')](_0x3ecdfd['query']['tag'])?_0x3ecdfd['query']['tag']:new Array(_0x3ecdfd[_0x9edd('0x4e')][_0x9edd('0x8d')]);_0x452ca5[_0x9edd('0x3b')](function(_0x521810){_0x54f96c['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x521810+',%');});}if(_0x3ecdfd['query'][_0x9edd('0x8f')]){var _0x388252=_0x3ecdfd[_0x9edd('0x4e')][_0x9edd('0x8f')][_0x9edd('0x90')]('\x5c','\x5c\x5c')[_0x9edd('0x90')](/'/g,'\x27\x27');if(qs[_0x9edd('0x91')](_0x388252)){_0x53f55b['or'](_0x9edd('0x92'),_0x388252+'%');}else{_0x53f55b['or'](_0x9edd('0x93'),qs[_0x9edd('0x94')](_0x388252))['or'](_0x9edd('0x95'),_0x388252+'%');}}}_0xd5090a[_0x9edd('0x57')](_0x53f55b);_0xd5090a['group'](_0x9edd('0x96'));var _0x29f3b2={'type':db[_0x9edd('0x97')][_0x9edd('0x98')][_0x9edd('0x99')],'raw':!![]};var _0x2d067b=_0xd5090a[_0x9edd('0x9a')]();_0x2d067b[_0x9edd('0x5a')]('i.id');_0x2d067b['field'](_0x9edd('0x9b'),'unreadMessages');if(_0x4e9ad1[_0x9edd('0x9c')]){_0x4e9ad1['order'][_0x9edd('0x3b')](function(_0x3f2452){var _0x554804=_0x3f2452[0x0]===_0x9edd('0x9d')?_0x3f2452[0x0]:'i.'+_0x3f2452[0x0];_0xd5090a[_0x9edd('0x9c')](_0x554804,_0x3f2452[0x1]==='DESC'?![]:!![]);});}if(!_[_0x9edd('0x81')](_0x452ca5)){_0xd5090a[_0x9edd('0x71')](_0x54f96c);_0x2d067b[_0x9edd('0x57')](_0x9edd('0x9e'),_0x452ca5);}BPromise[_0x9edd('0x9f')]()['then'](function(){if(!_0x3e9a3e){if(_0x3ecdfd[_0x9edd('0x4e')][_0x9edd('0xa0')])return;_0x2d067b[_0x9edd('0x57')](_0x9edd('0xa1'));_0xd5090a[_0x9edd('0x57')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');return;}if(_0x3ecdfd['user']['role']!=='agent')return;return _0x3ecdfd['user'][_0x9edd('0xa2')]({'attributes':['id'],'raw':!![]})['then'](function(_0x58cb3f){if(_[_0x9edd('0x81')](_0x58cb3f)){_0x2d067b[_0x9edd('0x57')](_0x9edd('0xa3'));_0xd5090a[_0x9edd('0x57')](_0x9edd('0xa3'));}else{_0x2d067b[_0x9edd('0x57')](_0x9edd('0xa4'),_[_0x9edd('0x36')](_0x58cb3f,'id'));_0xd5090a[_0x9edd('0x57')](_0x9edd('0xa4'),_['map'](_0x58cb3f,'id'));}});})[_0x9edd('0x17')](function(){if(_0x3ecdfd[_0x9edd('0xa5')][_0x9edd('0xa6')]===_0x9edd('0x32')&&!_0x3e9a3e&&!_0x3ecdfd[_0x9edd('0x4e')][_0x9edd('0xa0')])return[];return db[_0x9edd('0xa7')][_0x9edd('0x4e')](_0x2d067b['toString'](),_0x29f3b2);})['then'](function(_0x401ad3){_0x4bc7a1[_0x9edd('0x28')]=_0x401ad3[_0x9edd('0x53')];if(_0x4bc7a1[_0x9edd('0x28')]===0x0)return[];return db[_0x9edd('0xa7')][_0x9edd('0x4e')](_0x14dd27[_0x9edd('0xa8')](),_0x29f3b2)[_0x9edd('0x17')](function(_0x93fef1){_0x2334d4=_[_0x9edd('0xa9')](_0x93fef1,'id');_0x29f3b2=_[_0x9edd('0x2f')](_0x29f3b2,{'model':db[_0x9edd('0x48')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3ecdfd[_0x9edd('0x4e')][_0x9edd('0x51')]){_0x4e9ad1['attributes'][_0x9edd('0x3b')](function(_0x34ee39){_0xd5090a['field']('i.'+_0x34ee39);});}else{_0xd5090a[_0x9edd('0x5a')](_0x9edd('0x9b'),_0x9edd('0x70'));_0xd5090a[_0x9edd('0x5a')]('a.key',_0x9edd('0xaa'));_0xd5090a[_0x9edd('0x5a')](_0x9edd('0xab'),_0x9edd('0xac'));_0xd5090a[_0x9edd('0x5a')]('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',_0x9edd('0x9d'));_0xd5090a[_0x9edd('0x5a')](_0x9edd('0xad'));_0xd5090a[_0x9edd('0x5a')](_0x9edd('0xae'),'Contact.firstName');_0xd5090a['field'](_0x9edd('0xaf'),'Contact.lastName');_0xd5090a[_0x9edd('0x5a')]('c.email',_0x9edd('0xb0'));_0xd5090a[_0x9edd('0x5a')](_0x9edd('0xb1'),_0x9edd('0xb2'));_0xd5090a[_0x9edd('0x5a')](_0x9edd('0xb3'),'Contact.mobile');_0xd5090a[_0x9edd('0x5a')](_0x9edd('0xb4'),_0x9edd('0xb5'));_0xd5090a[_0x9edd('0x5a')](_0x9edd('0xb6'),_0x9edd('0xb7'));_0xd5090a[_0x9edd('0x5a')](_0x9edd('0xb8'),'Owner.internal');_0xd5090a[_0x9edd('0x5a')](_0x9edd('0xb9'),_0x9edd('0x38'));}if(_0x4e9ad1[_0x9edd('0x27')])_0xd5090a[_0x9edd('0x27')](_0x4e9ad1[_0x9edd('0x27')]);if(_0x4e9ad1[_0x9edd('0x25')])_0xd5090a[_0x9edd('0x25')](_0x4e9ad1[_0x9edd('0x25')]);return db[_0x9edd('0xa7')][_0x9edd('0x4e')](_0xd5090a[_0x9edd('0xa8')](),_0x29f3b2);})[_0x9edd('0x17')](function(_0x315a4c){if(_0x315a4c[_0x9edd('0x53')]>0x0)_0xe96d6a[_0x9edd('0x57')](_0x9edd('0xba'),_[_0x9edd('0x36')](_0x315a4c,'id'));return db[_0x9edd('0xa7')][_0x9edd('0x4e')](_0xe96d6a[_0x9edd('0xa8')](),_0x29f3b2)['then'](function(_0xa704eb){var _0x553018=_['groupBy'](_0xa704eb,_0x9edd('0xbb'));var _0x108244=[];_0x315a4c[_0x9edd('0x3b')](function(_0x11b556){_0x108244[_0x9edd('0x3c')](updateChatInteraction(_0x11b556,_0x2334d4,_0x553018));});return BPromise[_0x9edd('0xbc')](_0x108244);});});})[_0x9edd('0x17')](function(_0x69925a){_0x4bc7a1[_0x9edd('0xbd')]=_0x69925a;return _0x4bc7a1;})[_0x9edd('0x17')](respondWithFilteredResult(_0x10d41e,_0x4e9ad1))['catch'](handleError(_0x10d41e,null));};exports[_0x9edd('0xbe')]=function(_0x3c2c2c,_0x48f1ae){var _0x568067={'raw':![],'where':{'id':_0x3c2c2c[_0x9edd('0xbf')]['id']}},_0x176427={};_0x176427[_0x9edd('0x4c')]=_[_0x9edd('0x4d')](db['ChatInteraction']['rawAttributes']);_0x176427[_0x9edd('0x4e')]=_['keys'](_0x3c2c2c[_0x9edd('0x4e')]);_0x176427[_0x9edd('0x4f')]=_[_0x9edd('0x50')](_0x176427['model'],_0x176427['query']);_0x568067['attributes']=_[_0x9edd('0x50')](_0x176427[_0x9edd('0x4c')],qs[_0x9edd('0x51')](_0x3c2c2c['query'][_0x9edd('0x51')]));_0x568067[_0x9edd('0x52')]=_0x568067['attributes'][_0x9edd('0x53')]?_0x568067[_0x9edd('0x52')]:_0x176427['model'];if(_0x3c2c2c['query'][_0x9edd('0xc0')]){_0x568067[_0x9edd('0xc1')]=[{'all':!![]}];}_0x568067=_['merge']({},_0x568067,_0x3c2c2c[_0x9edd('0xc2')]);return db[_0x9edd('0x48')]['find'](_0x568067)[_0x9edd('0x17')](handleEntityNotFound(_0x48f1ae,null))['then'](respondWithResult(_0x48f1ae,null))[_0x9edd('0x3d')](handleError(_0x48f1ae,null));};exports[_0x9edd('0xc3')]=function(_0x23eb54,_0x742e13){return db[_0x9edd('0x48')][_0x9edd('0xc3')](_0x23eb54['body'],{})[_0x9edd('0x17')](respondWithResult(_0x742e13,0xc9))[_0x9edd('0x3d')](handleError(_0x742e13,null));};exports[_0x9edd('0x2a')]=function(_0x511ea1,_0x956219){if(_0x511ea1['body']['id']){delete _0x511ea1[_0x9edd('0x30')]['id'];}return db[_0x9edd('0x48')][_0x9edd('0x6f')]({'where':{'id':_0x511ea1[_0x9edd('0xbf')]['id']}})['then'](handleEntityNotFound(_0x956219,null))['then'](saveUpdates(_0x511ea1['body'],null))[_0x9edd('0x17')](respondWithResult(_0x956219,null))[_0x9edd('0x3d')](handleError(_0x956219,null));};exports[_0x9edd('0x2b')]=function(_0x50af78,_0x41a761){return db[_0x9edd('0x48')][_0x9edd('0x6f')]({'where':{'id':_0x50af78[_0x9edd('0xbf')]['id']}})[_0x9edd('0x17')](handleEntityNotFound(_0x41a761,null))[_0x9edd('0x17')](removeEntity(_0x41a761,null))['catch'](handleError(_0x41a761,null));};exports['describe']=function(_0x12ceb1,_0x47676c){return db[_0x9edd('0x48')]['describe']()[_0x9edd('0x17')](respondWithResult(_0x47676c,null))[_0x9edd('0x3d')](handleError(_0x47676c,null));};exports[_0x9edd('0xc4')]=function(_0x454cce,_0x524217){var _0x2122de=_0x454cce['params']['id'];var _0x3d8b18;var _0x3eeb0c;var _0x7b0a4f;return db[_0x9edd('0x48')][_0x9edd('0xc5')]({'where':{'id':_0x2122de}})['then'](function(_0x3e07f1){_0x3d8b18=_0x3e07f1;return db['ChatWebsite'][_0x9edd('0xc5')]({'where':{'id':_0x3e07f1['ChatWebsiteId']},'attributes':['id',_0x9edd('0xc6'),'vidaooEscalation',_0x9edd('0xc7'),_0x9edd('0xc8'),_0x9edd('0xc9')],'raw':!![]});})['then'](function(_0x244dce){if(_0x244dce&&_0x244dce[_0x9edd('0xc6')]&&_0x244dce[_0x9edd('0xca')]){_0x3eeb0c=_0x244dce;var _0x2e7b0d={'interaction':{'id':_0x2122de},'agent':{'id':_0x454cce[_0x9edd('0xa5')]['id'],'name':_0x454cce[_0x9edd('0xa5')][_0x9edd('0x2c')],'fullname':_0x454cce[_0x9edd('0xa5')][_0x9edd('0x37')],'email':_0x454cce[_0x9edd('0xa5')][_0x9edd('0xcb')]},'contact':_0x454cce[_0x9edd('0x30')][_0x9edd('0x31')],'account':_0x454cce[_0x9edd('0x30')][_0x9edd('0x34')]};var _0x81dd98={'rejectUnauthorized':![],'method':_0x9edd('0xcc'),'url':_0x9edd('0xcd'),'headers':{'X-APIKEY':_0x244dce[_0x9edd('0xc6')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x454cce[_0x9edd('0xa5')][_0x9edd('0xcb')]],'buttons':null,'topic':_0x3eeb0c[_0x9edd('0xc7')],'note':_['isNull'](_0x3eeb0c[_0x9edd('0xc8')])?null:getMustacheRender(_0x3eeb0c['vidaooNote'],_0x2e7b0d),'metadata':null},'redirect':_0x9edd('0xce'),'json':!![]};try{if(!_[_0x9edd('0xcf')](_0x3eeb0c[_0x9edd('0xc9')])){var _0x8ab7e8=getMustacheRender(_0x3eeb0c[_0x9edd('0xc9')],_0x2e7b0d);var _0x5465fd=JSON[_0x9edd('0x84')](_0x8ab7e8);_0x81dd98['body'][_0x9edd('0xd0')]=_0x5465fd;}}catch(_0x438cc5){throw new db[(_0x9edd('0x97'))][(_0x9edd('0xd1'))](_0x9edd('0xd2'));}return rp(_0x81dd98);}else{throw new db[(_0x9edd('0x97'))]['ValidationError'](_0x9edd('0xd3'));}})[_0x9edd('0x17')](function(_0x5be4a6){_0x7b0a4f=_0x5be4a6;if(_0x7b0a4f['id']){var _0x4f7350={'body':_0x7b0a4f['join_url'],'ChatWebsiteId':_0x3eeb0c['id'],'ChatInteractionId':_0x3d8b18['id'],'direction':'out','UserId':_0x454cce[_0x9edd('0xa5')]['id']};return db[_0x9edd('0xd4')][_0x9edd('0xc3')](_0x4f7350,{});}else{throw new db[(_0x9edd('0x97'))][(_0x9edd('0xd1'))](_0x9edd('0xd5'));}})[_0x9edd('0x17')](function(){return _0x3d8b18[_0x9edd('0xd6')]({'vidaooSessionId':_0x7b0a4f['id']});})[_0x9edd('0x17')](respondWithResult(_0x524217,null))[_0x9edd('0x3d')](handleError(_0x524217,null));};exports['customUpdate']=function(_0x361b57,_0x4b3449){if(_0x361b57['body']['id']){delete _0x361b57[_0x9edd('0x30')]['id'];}return db[_0x9edd('0x48')][_0x9edd('0x6f')]({'where':{'id':_0x361b57[_0x9edd('0xbf')]['id']},'include':[{'model':db[_0x9edd('0xd7')],'as':'Contact'}]})[_0x9edd('0x17')](handleEntityNotFound(_0x4b3449,null))[_0x9edd('0x17')](saveUpdates(_0x361b57[_0x9edd('0x30')],null))[_0x9edd('0x17')](respondWithResult(_0x4b3449,null))['catch'](handleError(_0x4b3449,null));};exports[_0x9edd('0xd8')]=function(_0x2a3076,_0x3df631){if(_0x2a3076[_0x9edd('0x30')]['id']){delete _0x2a3076[_0x9edd('0x30')]['id'];}return db[_0x9edd('0x48')][_0x9edd('0x6f')]({'where':{'id':_0x2a3076[_0x9edd('0xbf')]['id']}})[_0x9edd('0x17')](function(_0xa8c1f7){if(!_0xa8c1f7){logger[_0x9edd('0x1e')]('abandonInteraction,\x20%s,\x20%s,\x20%s',_0x9edd('0xd8'),0x194,_0x9edd('0xd9'));_0x3df631[_0x9edd('0x21')](0x194);}else{if(_0xa8c1f7[_0x9edd('0x43')]){throw new db[(_0x9edd('0x97'))][(_0x9edd('0xd1'))](_0x9edd('0xda'));}}return _0xa8c1f7;})[_0x9edd('0x17')](function(_0x4a3955){if(_0x4a3955){return _0x4a3955['update']({'closed':_0x2a3076['body'][_0x9edd('0x42')],'disposition':_0x2a3076[_0x9edd('0x30')][_0x9edd('0x44')]})[_0x9edd('0x17')](function(_0x223c42){return _0x223c42;});}})[_0x9edd('0x17')](function(){return respondWithRpcPromise(_0x9edd('0xdb'),_0x9edd('0xd8'),_0x2a3076[_0x9edd('0x30')],client9004);})[_0x9edd('0x17')](respondWithResult(_0x3df631,null))['catch'](handleError(_0x3df631,null));};exports[_0x9edd('0xdc')]=function(_0x56dc7e,_0x4db9fc){_0x56dc7e[_0x9edd('0x30')][_0x9edd('0x2c')]=_0x56dc7e[_0x9edd('0xdd')]['originalname'];_0x56dc7e['body']['basename']=_0x56dc7e['file']['filename'];_0x56dc7e[_0x9edd('0x30')][_0x9edd('0x4b')]=_0x56dc7e[_0x9edd('0xdd')]['mimetype'];return db[_0x9edd('0xde')][_0x9edd('0xc3')](_0x56dc7e[_0x9edd('0x30')])['then'](respondWithResult(_0x4db9fc,0xc9))[_0x9edd('0x3d')](handleError(_0x4db9fc,null));};exports['attachmentDownload']=function(_0x16a1c8,_0x1a2376){return db[_0x9edd('0x48')][_0x9edd('0xc5')]({'where':{'id':_0x16a1c8['params']['id']},'raw':!![]})[_0x9edd('0x17')](handleEntityNotFound(_0x1a2376,null))[_0x9edd('0x17')](function(_0x499e2a){if(_0x499e2a){if(_0x499e2a[_0x9edd('0x42')]){return _0x1a2376[_0x9edd('0x22')](0x193)[_0x9edd('0x24')]({'status':0x193,'message':_0x9edd('0xdf')});}return db['Attachment'][_0x9edd('0xc5')]({'where':{'id':_0x16a1c8[_0x9edd('0x4e')][_0x9edd('0xe0')]},'raw':!![]})[_0x9edd('0x17')](handleEntityNotFound(_0x1a2376,null));}})[_0x9edd('0x17')](function(_0x35d21e){if(_0x35d21e){var _0x390354=_0x35d21e['ChatOfflineMessageId']!==null;var _0xb29591=path['join'](config[_0x9edd('0xe1')],_0x9edd('0xe2'));if(_0x390354){_0xb29591=path['join'](_0xb29591,_0x9edd('0xe3'));}var _0x2f212d=path[_0x9edd('0xe4')](_0xb29591,_0x35d21e['basename']);return _0x1a2376[_0x9edd('0xe5')](_0x2f212d);}})[_0x9edd('0x3d')](handleError(_0x1a2376,null));};exports[_0x9edd('0xe6')]=function(_0x52f0e2,_0x155ca5){var _0x517142=null;var _0x288ecc=null;var _0x30d03a=null;if(_0x52f0e2[_0x9edd('0x30')]['id']){delete _0x52f0e2[_0x9edd('0x30')]['id'];}if(_0x52f0e2['body']['mailTranscript']){_0x30d03a=path[_0x9edd('0xe4')](config[_0x9edd('0xe1')],_0x9edd('0xe7'),util[_0x9edd('0xe8')](_0x9edd('0xe9'),Date['now']()));_0x52f0e2[_0x9edd('0x30')][_0x9edd('0xea')]=_0x30d03a;}return db[_0x9edd('0x48')][_0x9edd('0x6f')]({'where':{'id':_0x52f0e2[_0x9edd('0xbf')]['id']},'include':[{'model':db[_0x9edd('0xd4')],'as':_0x9edd('0xeb'),'include':[{'model':db[_0x9edd('0xec')],'as':_0x9edd('0xec')}]}]})[_0x9edd('0x17')](handleEntityNotFound(_0x155ca5,null))[_0x9edd('0x17')](saveUpdates(_0x52f0e2[_0x9edd('0x30')],null))[_0x9edd('0x17')](function(_0x549cd6){if(_0x549cd6){_0x517142=_0x549cd6;return db[_0x9edd('0xed')][_0x9edd('0x6f')]({'where':{'id':_0x517142[_0x9edd('0xa0')]}});}})[_0x9edd('0x17')](function(_0x5aab0e){if(_0x5aab0e){_0x288ecc=_0x5aab0e;return db[_0x9edd('0xd7')][_0x9edd('0x6f')]({'where':{'id':_0x517142[_0x9edd('0x77')]}});}})['then'](function(_0x910adf){if(_0x910adf){if(_0x30d03a){var _0x49a24f=null;for(var _0x483d82=0x1;_0x483d82<_0x517142[_0x9edd('0xeb')][_0x9edd('0x53')];++_0x483d82){_0x49a24f=_0x517142[_0x9edd('0xeb')][_0x483d82];var _0x1934d3=_0x49a24f['UserId']?util[_0x9edd('0xe8')](_0x9edd('0xee'),_0x288ecc[_0x9edd('0xef')],_0x49a24f[_0x9edd('0x43')]):_0x9edd('0xf0');var _0x38efe5=_0x52f0e2[_0x9edd('0x30')][_0x9edd('0xf1')]||util[_0x9edd('0xe8')](_0x9edd('0xee'),_0x9edd('0xf2'),_0x49a24f[_0x9edd('0x77')]);switch(_0x288ecc['agentIdentifier']){case _0x9edd('0xf3'):_0x1934d3=_0x49a24f[_0x9edd('0x43')]?util[_0x9edd('0xe8')](_0x9edd('0xee'),_0x288ecc[_0x9edd('0xef')],_0x49a24f['UserId']):_0x9edd('0xf0');break;case'agent_alias':_0x1934d3=_0x49a24f[_0x9edd('0x43')]?_0x49a24f[_0x9edd('0xec')]['alias']||_0x49a24f['User'][_0x9edd('0x37')]:_0x9edd('0xf0');break;case _0x9edd('0xf4'):_0x1934d3=_0x49a24f[_0x9edd('0x43')]?_0x49a24f[_0x9edd('0xec')]['fullname']:'System';break;default:_0x1934d3=_0x49a24f[_0x9edd('0x43')]?util[_0x9edd('0xe8')](_0x9edd('0xee'),_0x288ecc[_0x9edd('0xef')],_0x49a24f['UserId']):_0x9edd('0xf0');}var _0x3b36ed=util[_0x9edd('0xe8')](_0x9edd('0xf5'),moment(_0x49a24f[_0x9edd('0x83')])[_0x9edd('0xe8')](_0x9edd('0xf6')),_0x49a24f['direction']==='in'?_0x38efe5:_0x1934d3,_0x49a24f[_0x9edd('0x30')]);if(!_0x49a24f[_0x9edd('0xf7')]){fs[_0x9edd('0xf8')](_0x30d03a,_0x3b36ed);}}return db[_0x9edd('0xf9')][_0x9edd('0xc5')]({'where':{'service':!![]},'include':[{'model':db[_0x9edd('0xfa')],'as':_0x9edd('0xfb'),'raw':!![],'include':[{'model':db[_0x9edd('0xfc')],'as':_0x9edd('0xfc'),'raw':!![]}]}]});}}})[_0x9edd('0x17')](function(_0x288bc8){if(!_0x288bc8||!_0x288bc8[_0x9edd('0xfb')]||!_0x52f0e2[_0x9edd('0x30')])return _0x517142;var _0x50bfd5=_0x288bc8[_0x9edd('0xfd')]();return respondWithRpcPromise(_0x9edd('0xfe'),_0x9edd('0xff'),{'account':_0x50bfd5,'message':{'from':util[_0x9edd('0xe8')]('\x22%s\x22\x20<%s>',_0x288bc8[_0x9edd('0x2c')],_0x288bc8[_0x9edd('0xcb')]||_0x288bc8[_0x9edd('0xfb')][_0x9edd('0xa5')]),'to':_0x52f0e2[_0x9edd('0x30')][_0x9edd('0x100')],'subject':_0x9edd('0x101'),'text':util[_0x9edd('0xe8')](_0x9edd('0x102'),_0x52f0e2[_0x9edd('0x30')][_0x9edd('0x100')]),'attachments':[{'path':_0x30d03a}]}})['then'](function(){return _0x517142;})[_0x9edd('0x3d')](function(_0x7916cf){logger[_0x9edd('0x1e')](_0x7916cf);});})[_0x9edd('0x17')](respondWithStatusCode(_0x155ca5,0xc8))[_0x9edd('0x3d')](handleError(_0x155ca5,null));};exports[_0x9edd('0x103')]=function(_0x3bdbed,_0x55d08b){return db[_0x9edd('0xd4')][_0x9edd('0x6f')]({'where':{'id':_0x3bdbed[_0x9edd('0xbf')]['id']}})[_0x9edd('0x17')](handleEntityNotFound(_0x55d08b,null))[_0x9edd('0x17')](function(_0x116fcb){if(_0x116fcb){return _0x116fcb[_0x9edd('0x103')](_0x3bdbed[_0x9edd('0x30')][_0x9edd('0x104')],_[_0x9edd('0x105')](_0x3bdbed[_0x9edd('0x30')],[_0x9edd('0x104'),'id'])||{});}})[_0x9edd('0x17')](respondWithResult(_0x55d08b,null))[_0x9edd('0x3d')](handleError(_0x55d08b,null));};exports[_0x9edd('0x106')]=function(_0xd227fe,_0x106889){var _0x56a952={'raw':![],'where':{}};var _0xadc0be={};var _0x300094={'count':0x0,'rows':[]};return db[_0x9edd('0x48')][_0x9edd('0xc5')]({'where':{'id':_0xd227fe[_0x9edd('0xbf')]['id']}})[_0x9edd('0x17')](handleEntityNotFound(_0x106889,null))[_0x9edd('0x17')](function(_0x11d72d){if(_0x11d72d){_0xadc0be[_0x9edd('0x4c')]=_['keys'](db[_0x9edd('0xd4')][_0x9edd('0x49')]);_0xadc0be[_0x9edd('0x4e')]=_['keys'](_0xd227fe[_0x9edd('0x4e')]);_0xadc0be['filters']=_[_0x9edd('0x50')](_0xadc0be['model'],_0xadc0be[_0x9edd('0x4e')]);_0x56a952[_0x9edd('0x52')]=_['intersection'](_0xadc0be[_0x9edd('0x4c')],qs[_0x9edd('0x51')](_0xd227fe[_0x9edd('0x4e')][_0x9edd('0x51')]));_0x56a952[_0x9edd('0x52')]=_0x56a952[_0x9edd('0x52')][_0x9edd('0x53')]?_0x56a952['attributes']:_0xadc0be[_0x9edd('0x4c')];if(!_0xd227fe[_0x9edd('0x4e')]['hasOwnProperty'](_0x9edd('0x55'))){_0x56a952['limit']=qs[_0x9edd('0x27')](_0xd227fe[_0x9edd('0x4e')][_0x9edd('0x27')]);_0x56a952[_0x9edd('0x25')]=qs[_0x9edd('0x25')](_0xd227fe[_0x9edd('0x4e')][_0x9edd('0x25')]);}_0x56a952[_0x9edd('0x9c')]=qs[_0x9edd('0x56')](_0xd227fe[_0x9edd('0x4e')][_0x9edd('0x56')]);_0x56a952[_0x9edd('0x57')]=qs['filters'](_['pick'](_0xd227fe[_0x9edd('0x4e')],_0xadc0be[_0x9edd('0x4f')]));_0x56a952[_0x9edd('0x57')][_0x9edd('0xbb')]=_0x11d72d['id'];if(_0xd227fe[_0x9edd('0x4e')][_0x9edd('0x8f')]){_0x56a952[_0x9edd('0x57')]=_[_0x9edd('0x2f')](_0x56a952[_0x9edd('0x57')],{'$or':_['map'](_0x56a952[_0x9edd('0x52')],function(_0x49181c){var _0x3ca64d={};_0x3ca64d[_0x49181c]={'$like':'%'+_0xd227fe[_0x9edd('0x4e')][_0x9edd('0x8f')]+'%'};return _0x3ca64d;})});}if(_0xd227fe[_0x9edd('0x4e')][_0x9edd('0x85')]){var _0x12561b=_0xd227fe[_0x9edd('0x4e')][_0x9edd('0x85')][_0x9edd('0x3a')](',');var _0x3fcbc0={};_0x3fcbc0[_0x12561b[0x0]]={'$gte':moment(_0x12561b[0x1])[_0x9edd('0xe8')](_0x9edd('0x107'))};_0x56a952[_0x9edd('0x57')]=_[_0x9edd('0x2f')](_0x56a952[_0x9edd('0x57')],_0x3fcbc0);}_0x56a952=_[_0x9edd('0x2f')]({},_0x56a952,_0xd227fe[_0x9edd('0xc2')]);return db[_0x9edd('0xd4')][_0x9edd('0x28')]({'where':_0x56a952['where']})['then'](function(_0x33a86d){_0x300094['count']=_0x33a86d;if(_0xd227fe[_0x9edd('0x4e')][_0x9edd('0xc0')]){_0x56a952[_0x9edd('0xc1')]=[{'all':!![]}];}return db[_0x9edd('0xd4')]['findAll'](_0x56a952);})['then'](function(_0x593f45){_0x300094[_0x9edd('0xbd')]=_0x593f45;return _0x300094;});}})[_0x9edd('0x17')](respondWithFilteredResult(_0x106889,_0x56a952))[_0x9edd('0x3d')](handleError(_0x106889,null));};exports[_0x9edd('0x108')]=function(_0x51ac25,_0x4707b7){var _0x48f055={'where':{}},_0x43e9fa={},_0x2e260a={'count':0x0,'rows':[]};return db[_0x9edd('0x48')][_0x9edd('0xc5')]({'where':{'id':_0x51ac25['params']['id']}})['then'](handleEntityNotFound(_0x4707b7,null))['then'](function(_0x3bb205){if(_0x3bb205){_0x43e9fa[_0x9edd('0x4c')]=_[_0x9edd('0x4d')](db[_0x9edd('0xd4')][_0x9edd('0x49')]);_0x43e9fa[_0x9edd('0x4e')]=_['keys'](_0x51ac25[_0x9edd('0x4e')]);_0x43e9fa[_0x9edd('0x4f')]=_['intersection'](_0x43e9fa['model'],_0x43e9fa[_0x9edd('0x4e')]);_0x48f055[_0x9edd('0x52')]=_[_0x9edd('0x50')](_0x43e9fa['model'],qs[_0x9edd('0x51')](_0x51ac25[_0x9edd('0x4e')][_0x9edd('0x51')]));_0x48f055[_0x9edd('0x52')]=_0x48f055['attributes'][_0x9edd('0x53')]?_0x48f055[_0x9edd('0x52')]:_0x43e9fa[_0x9edd('0x4c')];if(!_0x51ac25[_0x9edd('0x4e')][_0x9edd('0x54')](_0x9edd('0x55'))){_0x48f055['limit']=qs[_0x9edd('0x27')](_0x51ac25[_0x9edd('0x4e')][_0x9edd('0x27')]);_0x48f055[_0x9edd('0x25')]=qs['offset'](_0x51ac25['query'][_0x9edd('0x25')]);}_0x48f055[_0x9edd('0x9c')]=qs[_0x9edd('0x56')](_0x51ac25[_0x9edd('0x4e')][_0x9edd('0x56')]);_0x48f055[_0x9edd('0x57')]=qs[_0x9edd('0x4f')](_[_0x9edd('0x58')](_0x51ac25[_0x9edd('0x4e')],_0x43e9fa[_0x9edd('0x4f')]));_0x48f055[_0x9edd('0x57')][_0x9edd('0xbb')]=_0x3bb205['id'];if(_0x51ac25['query']['filter']){_0x48f055[_0x9edd('0x57')]=_[_0x9edd('0x2f')](_0x48f055[_0x9edd('0x57')],{'$or':_[_0x9edd('0x36')](_0x48f055[_0x9edd('0x52')],function(_0x180c4d){var _0x425948={};_0x425948[_0x180c4d]={'$like':'%'+_0x51ac25[_0x9edd('0x4e')]['filter']+'%'};return _0x425948;})});}_0x48f055[_0x9edd('0x57')][_0x9edd('0xf7')]=![];if(_0x51ac25[_0x9edd('0x4e')]['id']){_0x48f055[_0x9edd('0x57')]['id']={'$gt':_0x51ac25[_0x9edd('0x4e')]['id']};}_0x48f055=_[_0x9edd('0x2f')]({},_0x48f055,_0x51ac25['options']);return db['ChatMessage'][_0x9edd('0x28')]({'where':_0x48f055[_0x9edd('0x57')]})[_0x9edd('0x17')](function(_0x50c328){_0x2e260a['count']=_0x50c328;_0x48f055[_0x9edd('0xc1')]=[];if(_0x51ac25[_0x9edd('0x4e')][_0x9edd('0x109')]){_0x48f055[_0x9edd('0xc1')][_0x9edd('0x3c')]({'model':db[_0x9edd('0xec')],'as':_0x9edd('0xec'),'attributes':['id',_0x9edd('0x37'),_0x9edd('0x10a')]});}if(_0x51ac25[_0x9edd('0x4e')][_0x9edd('0xc0')]){_0x48f055['include']=[{'all':!![]}];}return db[_0x9edd('0xd4')]['findAll'](_0x48f055);})['then'](function(_0x58756b){_0x2e260a[_0x9edd('0xbd')]=_0x58756b;return _0x2e260a;});}})[_0x9edd('0x17')](respondWithFilteredResult(_0x4707b7,_0x48f055))['catch'](handleError(_0x4707b7,null));};exports['addTags']=function(_0x5e721c,_0x47d20b){return db[_0x9edd('0x48')][_0x9edd('0x6f')]({'where':{'id':_0x5e721c[_0x9edd('0xbf')]['id']}})['then'](handleEntityNotFound(_0x47d20b,null))[_0x9edd('0x17')](function(_0x2f99ac){if(_0x2f99ac){return _0x2f99ac[_0x9edd('0x10b')](_0x5e721c[_0x9edd('0x30')][_0x9edd('0x104')],_['omit'](_0x5e721c[_0x9edd('0x30')],['ids','id'])||{})[_0x9edd('0x10c')](function(){return db['Tag'][_0x9edd('0x10d')]({'attributes':['id',_0x9edd('0x2c'),_0x9edd('0x5b')],'where':{'id':_0x5e721c['body'][_0x9edd('0x104')]}});})[_0x9edd('0x17')](function(_0x3e2fc7){socket['emit']('chatInteractionTags:save',{'id':Number(_0x5e721c[_0x9edd('0xbf')]['id']),'tags':_0x3e2fc7||[]});return{'id':Number(_0x5e721c[_0x9edd('0xbf')]['id']),'tags':_0x3e2fc7||[]};});}})[_0x9edd('0x17')](respondWithResult(_0x47d20b,null))[_0x9edd('0x3d')](handleError(_0x47d20b,null));};exports[_0x9edd('0x10e')]=function(_0x83693e,_0x4308a2){return db[_0x9edd('0x48')][_0x9edd('0x6f')]({'where':{'id':_0x83693e[_0x9edd('0xbf')]['id']}})['then'](handleEntityNotFound(_0x4308a2,null))[_0x9edd('0x17')](function(_0x276a53){if(_0x276a53){return _0x276a53['removeTags'](_0x83693e['query'][_0x9edd('0x104')]);}})[_0x9edd('0x17')](respondWithStatusCode(_0x4308a2,null))[_0x9edd('0x3d')](handleError(_0x4308a2,null));};exports[_0x9edd('0xe5')]=function(_0x5eec20,_0xc23db6){var _0x33a71d=moment()[_0x9edd('0x10f')]()[_0x9edd('0xa8')]();var _0x5d8749=path[_0x9edd('0xe4')](config[_0x9edd('0xe1')],_0x9edd('0x110'),'files',_0x9edd('0x111'));var _0x1e9806=path[_0x9edd('0xe4')](config[_0x9edd('0xe1')],_0x9edd('0x110'),_0x9edd('0x112'),_0x9edd('0x113'));var _0x4fa1b2=path[_0x9edd('0xe4')](_0x5d8749,_0x33a71d);var _0x2c0620=util['format'](_0x9edd('0x114'),_0x5eec20['params']['id'],_0x33a71d);var _0x5a43af=path[_0x9edd('0xe4')](_0x5d8749,_0x2c0620);var _0x6018fd=[];_0x6018fd[_0x9edd('0x3c')]({'model':db[_0x9edd('0xec')],'as':_0x9edd('0xec'),'attributes':['id',_0x9edd('0x37')],'raw':!![]});_0x6018fd[_0x9edd('0x3c')]({'model':db[_0x9edd('0xd7')],'as':_0x9edd('0x115'),'attributes':['id',_0x9edd('0x116'),_0x9edd('0x117')],'raw':!![]});if(_0x5eec20['query']['attachments']){_0x6018fd[_0x9edd('0x3c')]({'model':db[_0x9edd('0xde')],'as':_0x9edd('0xde'),'raw':!![]});}var _0x3a2dad=[{'model':db[_0x9edd('0xd4')],'as':_0x9edd('0xeb'),'attributes':['id','body',_0x9edd('0x83'),_0x9edd('0x118'),_0x9edd('0xf7'),'read'],'include':_0x6018fd}];_0x3a2dad[_0x9edd('0x3c')]({'model':db['ChatWebsite'],'as':'Account','attributes':['id','name']});_0x3a2dad[_0x9edd('0x3c')]({'model':db[_0x9edd('0xec')],'as':_0x9edd('0x119'),'attributes':['id',_0x9edd('0x37')]});return db[_0x9edd('0x48')][_0x9edd('0x6f')]({'where':{'id':_0x5eec20[_0x9edd('0xbf')]['id']},'include':_0x3a2dad})[_0x9edd('0x17')](handleEntityNotFound(_0xc23db6,null))[_0x9edd('0x17')](function(_0x5033e3){if(_0x5033e3){var _0x3a6ffa=_0x5033e3[_0x9edd('0x11a')]({'plain':!![]});fs['mkdirSync'](_0x4fa1b2);var _0x5d7461={'channel':_0x9edd('0x11b'),'account':_0x3a6ffa[_0x9edd('0x11c')]['name'],'agent':_0x3a6ffa[_0x9edd('0x119')]?_0x3a6ffa[_0x9edd('0x119')][_0x9edd('0x37')]:_0x9edd('0x11d'),'createdAt':moment(_0x3a6ffa['createdAt'])[_0x9edd('0xe8')](_0x9edd('0x107'))[_0x9edd('0xa8')](),'closedAt':_0x3a6ffa['closed']?moment(_0x3a6ffa[_0x9edd('0x11e')])[_0x9edd('0xe8')](_0x9edd('0x107'))[_0x9edd('0xa8')]():'','disposition':_0x3a6ffa[_0x9edd('0x44')],'chatInfo':{'browser':_0x3a6ffa[_0x9edd('0x11f')],'os':_0x3a6ffa[_0x9edd('0x120')],'referer':_0x3a6ffa[_0x9edd('0x121')],'customerIp':_0x3a6ffa['customerIp'],'customerPort':_0x3a6ffa[_0x9edd('0x122')]?_0x3a6ffa[_0x9edd('0x122')]:_0x9edd('0x11d')},'messages':_(_0x3a6ffa[_0x9edd('0xeb')])[_0x9edd('0x123')]()[_0x9edd('0x8f')]({'secret':![]})[_0x9edd('0x36')](function(_0x57845c){if(_0x57845c[_0x9edd('0xde')]){var _0x55d8e1=path['join'](_0x1e9806,_0x57845c[_0x9edd('0xde')][_0x9edd('0x124')]);if(fs['existsSync'](_0x55d8e1)){fs[_0x9edd('0x125')](_0x55d8e1)[_0x9edd('0x126')](fs[_0x9edd('0x127')](path['join'](_0x4fa1b2,_0x57845c['Attachment'][_0x9edd('0x124')])));}}return{'date':moment(_0x57845c[_0x9edd('0x83')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x9edd('0xa8')](),'sender':_0x57845c[_0x9edd('0x118')]===_0x9edd('0x128')?_0x57845c[_0x9edd('0xec')]?_0x57845c['User']['fullname']:_0x9edd('0xf0'):_0x57845c[_0x9edd('0x115')]['firstName']+(_0x57845c[_0x9edd('0x115')]['lastName']?'\x20'+_0x57845c[_0x9edd('0x115')][_0x9edd('0x117')]:''),'body':_0x57845c[_0x9edd('0xde')]?_0x57845c[_0x9edd('0xde')]['basename']:_0x57845c[_0x9edd('0x30')],'direction':_0x57845c[_0x9edd('0x118')]==='out'?'A':'C','secret':_0x57845c[_0x9edd('0xf7')],'read':_0x57845c['read'],'attachment':_0x57845c[_0x9edd('0xde')]};})[_0x9edd('0x76')]()};return ejs[_0x9edd('0x129')](path[_0x9edd('0xe4')](config[_0x9edd('0xe1')],_0x9edd('0x110'),'views',_0x9edd('0x12a')),{'interaction':_0x5d7461})[_0x9edd('0x17')](function(_0x268088){var _0x3aa372=path[_0x9edd('0xe4')](_0x4fa1b2,_0x9edd('0x12b')+_0x3a6ffa['id']+'-'+_0x33a71d+_0x9edd('0x12c'));var _0x299444={'path':_0x3aa372,'channel':_0x9edd('0x11b'),'interactionId':_0x3a6ffa['id']};return pdf[_0x9edd('0x12d')](_0x268088,_0x299444);})['then'](function(){return new Promise(function(_0x2b7c53,_0x62b689){zipdir(_0x4fa1b2,{'saveTo':_0x5a43af},function(_0x319670,_0x108640){if(_0x319670)return _0x62b689(_0x319670);return _0x2b7c53(_0x108640);});})[_0x9edd('0x17')](function(){return new BPromise(function(_0x350ae2,_0x202f59){rimraf(_0x4fa1b2,function(_0x2f5a6e){if(_0x2f5a6e)_0x202f59(_0x2f5a6e);return _0x350ae2();});});})[_0x9edd('0x17')](function(){return _0xc23db6[_0x9edd('0xe5')](_0x5a43af,_0x2c0620,function(_0x142052){if(_0x142052){logger[_0x9edd('0x1e')](_0x9edd('0x12e'),_0x142052);}else{fs[_0x9edd('0x12f')](_0x5a43af);}});});});}else{return _0xc23db6[_0x9edd('0x21')](0xc8);}})['catch'](handleError(_0xc23db6,null));};
\ No newline at end of file
index 0dd17d8..59b7ff8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65aa=['map','then','unreadMessages','length','emit','hook','exports','events','../../mysqldb','ChatInteraction','ChatMessage','setMaxListeners','getUsers','Users'];(function(_0x4665d7,_0x344c5b){var _0x26ae0=function(_0x41ad6f){while(--_0x41ad6f){_0x4665d7['push'](_0x4665d7['shift']());}};_0x26ae0(++_0x344c5b);}(_0x65aa,0x18f));var _0xa65a=function(_0x574159,_0x952110){_0x574159=_0x574159-0x0;var _0x5dd226=_0x65aa[_0x574159];return _0x5dd226;};'use strict';var EventEmitter=require(_0xa65a('0x0'));var ChatInteraction=require(_0xa65a('0x1'))['db'][_0xa65a('0x2')];var ChatMessage=require(_0xa65a('0x1'))['db'][_0xa65a('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xa65a('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x34cf75){return function(_0x4b5350,_0x1a0a53,_0x350bd0){_0x4b5350[_0xa65a('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x133fb8){_0x4b5350['setDataValue'](_0xa65a('0x6'),_0x133fb8[_0xa65a('0x7')](function(_0x16e8e5){return{'id':_0x16e8e5['id']};}));return ChatMessage['findAll']({'where':{'ChatInteractionId':_0x4b5350['id'],'direction':'in','read':![]},'raw':!![]});})[_0xa65a('0x8')](function(_0xa0d2b2){_0x4b5350['setDataValue'](_0xa65a('0x9'),_0xa0d2b2[_0xa65a('0xa')]);ChatInteractionEvents[_0xa65a('0xb')](_0x34cf75+':'+_0x4b5350['id'],_0x4b5350);ChatInteractionEvents[_0xa65a('0xb')](_0x34cf75,_0x4b5350);_0x350bd0(null);})['catch'](_0x350bd0(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInteraction[_0xa65a('0xc')](e,emitEvent(event));}}module[_0xa65a('0xd')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x6a7a=['setDataValue','Users','map','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','ChatInteraction','ChatMessage','save','update'];(function(_0x3ee379,_0xcdb88d){var _0xb9edf9=function(_0x287ff1){while(--_0x287ff1){_0x3ee379['push'](_0x3ee379['shift']());}};_0xb9edf9(++_0xcdb88d);}(_0x6a7a,0x15a));var _0xa6a7=function(_0x1ff419,_0x205670){_0x1ff419=_0x1ff419-0x0;var _0x3d3573=_0x6a7a[_0x1ff419];return _0x3d3573;};'use strict';var EventEmitter=require(_0xa6a7('0x0'));var ChatInteraction=require(_0xa6a7('0x1'))['db'][_0xa6a7('0x2')];var ChatMessage=require(_0xa6a7('0x1'))['db'][_0xa6a7('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa6a7('0x4'),'afterUpdate':_0xa6a7('0x5'),'afterDestroy':'remove'};function emitEvent(_0x80e1f6){return function(_0x5321cd,_0x560fd8,_0x5be739){_0x5321cd['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x47bc98){_0x5321cd[_0xa6a7('0x6')](_0xa6a7('0x7'),_0x47bc98[_0xa6a7('0x8')](function(_0x68b56){return{'id':_0x68b56['id']};}));return ChatMessage['findAll']({'where':{'ChatInteractionId':_0x5321cd['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x1817ac){_0x5321cd['setDataValue'](_0xa6a7('0x9'),_0x1817ac[_0xa6a7('0xa')]);ChatInteractionEvents['emit'](_0x80e1f6+':'+_0x5321cd['id'],_0x5321cd);ChatInteractionEvents[_0xa6a7('0xb')](_0x80e1f6,_0x5321cd);_0x5be739(null);})[_0xa6a7('0xc')](_0x5be739(null));};}for(var e in events){if(events[_0xa6a7('0xd')](e)){var event=events[e];ChatInteraction[_0xa6a7('0xe')](e,emitEvent(event));}}module[_0xa6a7('0xf')]=ChatInteractionEvents;
\ No newline at end of file
index 11536f9..1b190a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9792=['chat_interactions','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatInteraction.attributes','exports','define','ChatInteraction'];(function(_0x26d5b0,_0x48af7c){var _0x48ca59=function(_0x38a707){while(--_0x38a707){_0x26d5b0['push'](_0x26d5b0['shift']());}};_0x48ca59(++_0x48af7c);}(_0x9792,0x16a));var _0x2979=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x9792[_0x40a045];return _0x1a687c;};'use strict';var _=require('lodash');var util=require(_0x2979('0x0'));var logger=require(_0x2979('0x1'))('api');var moment=require(_0x2979('0x2'));var BPromise=require(_0x2979('0x3'));var rp=require(_0x2979('0x4'));var fs=require('fs');var path=require(_0x2979('0x5'));var rimraf=require(_0x2979('0x6'));var config=require(_0x2979('0x7'));var attributes=require(_0x2979('0x8'));module[_0x2979('0x9')]=function(_0x122658,_0xa49e8f){return _0x122658[_0x2979('0xa')](_0x2979('0xb'),attributes,{'tableName':_0x2979('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xf8c6c3,_0x23b55f,_0x56ab05){if(_0xf8c6c3['changed']('closed')){_0xf8c6c3[_0x2979('0xd')]=moment()[_0x2979('0xe')](_0x2979('0xf'));}_0x56ab05(null,_0xf8c6c3);}},'charset':_0x2979('0x10'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x9a7a=['changed','closed','format','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./chatInteraction.attributes','exports','define'];(function(_0x454017,_0x4c2948){var _0x22d946=function(_0x3b9da6){while(--_0x3b9da6){_0x454017['push'](_0x454017['shift']());}};_0x22d946(++_0x4c2948);}(_0x9a7a,0xb5));var _0xa9a7=function(_0x4aa662,_0x1cc90c){_0x4aa662=_0x4aa662-0x0;var _0x336478=_0x9a7a[_0x4aa662];return _0x336478;};'use strict';var _=require(_0xa9a7('0x0'));var util=require(_0xa9a7('0x1'));var logger=require(_0xa9a7('0x2'))(_0xa9a7('0x3'));var moment=require('moment');var BPromise=require(_0xa9a7('0x4'));var rp=require(_0xa9a7('0x5'));var fs=require('fs');var path=require(_0xa9a7('0x6'));var rimraf=require(_0xa9a7('0x7'));var config=require('../../config/environment');var attributes=require(_0xa9a7('0x8'));module[_0xa9a7('0x9')]=function(_0x31baef,_0xd0ab6c){return _0x31baef[_0xa9a7('0xa')]('ChatInteraction',attributes,{'tableName':'chat_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x21413a,_0x2521a2,_0x56477c){if(_0x21413a[_0xa9a7('0xb')](_0xa9a7('0xc'))){_0x21413a['closedAt']=moment()[_0xa9a7('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0x56477c(null,_0x21413a);}},'charset':_0xa9a7('0xe'),'collate':_0xa9a7('0xf')});};
\ No newline at end of file
index 2245a5c..468f554 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e1e=['limit','stringify','AddTagsToChatInteraction','find','addTags','ids','omit','body','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','redis','localhost','./chatInteraction.socket','register','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','UpdateChatInteraction','ChatInteraction','update','options','attributes'];(function(_0x45d3f0,_0x4be53f){var _0x314b79=function(_0x563d32){while(--_0x563d32){_0x45d3f0['push'](_0x45d3f0['shift']());}};_0x314b79(++_0x4be53f);}(_0x0e1e,0x152));var _0xe0e1=function(_0x4a49fd,_0xdf7290){_0x4a49fd=_0x4a49fd-0x0;var _0x352773=_0x0e1e[_0x4a49fd];return _0x352773;};'use strict';var _=require(_0xe0e1('0x0'));var util=require(_0xe0e1('0x1'));var moment=require(_0xe0e1('0x2'));var BPromise=require('bluebird');var rs=require(_0xe0e1('0x3'));var fs=require('fs');var Redis=require(_0xe0e1('0x4'));var db=require(_0xe0e1('0x5'))['db'];var utils=require(_0xe0e1('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xe0e1('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe0e1('0x8')][_0xe0e1('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0xe0e1('0xa')],{'host':_0xe0e1('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xe0e1('0xc'))[_0xe0e1('0xd')](socket);function respondWithRpcPromise(_0x1e3a83,_0x3479ab,_0x99bac8){return new BPromise(function(_0x2ad7f1,_0x3062ef){return client[_0xe0e1('0xe')](_0x1e3a83,_0x99bac8)[_0xe0e1('0xf')](function(_0x3f2ce9){logger[_0xe0e1('0x10')](_0xe0e1('0x11'),_0x3479ab,_0xe0e1('0x12'));logger[_0xe0e1('0x13')](_0xe0e1('0x14'),_0x3479ab,_0xe0e1('0x12'),JSON['stringify'](_0x3f2ce9));if(_0x3f2ce9[_0xe0e1('0x15')]){if(_0x3f2ce9[_0xe0e1('0x15')][_0xe0e1('0x16')]===0x1f4){logger['error'](_0xe0e1('0x11'),_0x3479ab,_0x3f2ce9[_0xe0e1('0x15')][_0xe0e1('0x17')]);return _0x3062ef(_0x3f2ce9[_0xe0e1('0x15')][_0xe0e1('0x17')]);}logger[_0xe0e1('0x15')](_0xe0e1('0x11'),_0x3479ab,_0x3f2ce9[_0xe0e1('0x15')][_0xe0e1('0x17')]);return _0x2ad7f1(_0x3f2ce9['error']['message']);}else{logger['info'](_0xe0e1('0x11'),_0x3479ab,'request\x20sent');_0x2ad7f1(_0x3f2ce9[_0xe0e1('0x18')][_0xe0e1('0x17')]);}})[_0xe0e1('0x19')](function(_0x2cdc17){logger['error'](_0xe0e1('0x11'),_0x3479ab,_0x2cdc17);_0x3062ef(_0x2cdc17);});});}exports[_0xe0e1('0x1a')]=function(_0x2b850e){var _0x482a6c=this;return new Promise(function(_0x39d983,_0x2e639c){return db[_0xe0e1('0x1b')][_0xe0e1('0x1c')](_0x2b850e['body'],{'raw':_0x2b850e['options']?_0x2b850e[_0xe0e1('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b850e[_0xe0e1('0x1d')]?_0x2b850e[_0xe0e1('0x1d')]['where']||null:null,'attributes':_0x2b850e[_0xe0e1('0x1d')]?_0x2b850e[_0xe0e1('0x1d')][_0xe0e1('0x1e')]||null:null,'limit':_0x2b850e[_0xe0e1('0x1d')]?_0x2b850e['options'][_0xe0e1('0x1f')]||null:null})[_0xe0e1('0xf')](function(_0xce2e44){logger['info'](_0xe0e1('0x1a'),_0x2b850e);logger['debug'](_0xe0e1('0x1a'),_0x2b850e,JSON[_0xe0e1('0x20')](_0xce2e44));_0x39d983(_0xce2e44);})[_0xe0e1('0x19')](function(_0x252ed1){logger[_0xe0e1('0x15')](_0xe0e1('0x1a'),_0x252ed1['message'],_0x2b850e);_0x2e639c(_0x482a6c[_0xe0e1('0x15')](0x1f4,_0x252ed1[_0xe0e1('0x17')]));});});};exports[_0xe0e1('0x21')]=function(_0x497b5a){return new Promise(function(_0x766c2c,_0x432b9a){return db[_0xe0e1('0x1b')][_0xe0e1('0x22')]({'where':_0x497b5a[_0xe0e1('0x1d')]?_0x497b5a[_0xe0e1('0x1d')]['where']||null:null})[_0xe0e1('0xf')](function(_0x4beca8){if(_0x4beca8){return _0x4beca8[_0xe0e1('0x23')](_0x497b5a['body'][_0xe0e1('0x24')],_[_0xe0e1('0x25')](_0x497b5a[_0xe0e1('0x26')],['ids','id'])||{});}})[_0xe0e1('0x27')](function(_0x14214e){logger['info'](_0xe0e1('0x28'),_0x497b5a);logger[_0xe0e1('0x13')](_0xe0e1('0x28'),_0x497b5a,JSON['stringify'](_0x14214e));_0x766c2c(_0x14214e);})[_0xe0e1('0x19')](function(_0x4bed60){logger[_0xe0e1('0x15')](_0xe0e1('0x28'),_0x4bed60[_0xe0e1('0x17')],_0x497b5a);_0x432b9a(_this[_0xe0e1('0x15')](0x1f4,_0x4bed60[_0xe0e1('0x17')]));});});};
\ No newline at end of file
+var _0x0104=['info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','UpdateChatInteraction','ChatInteraction','update','body','options','raw','attributes','catch','find','where','addTags','omit','ids','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','register','request','then'];(function(_0x3d3d05,_0x4eb12a){var _0x1ba556=function(_0x5dacb9){while(--_0x5dacb9){_0x3d3d05['push'](_0x3d3d05['shift']());}};_0x1ba556(++_0x4eb12a);}(_0x0104,0x68));var _0x4010=function(_0x3ab080,_0xb0c046){_0x3ab080=_0x3ab080-0x0;var _0x24cfde=_0x0104[_0x3ab080];return _0x24cfde;};'use strict';var _=require(_0x4010('0x0'));var util=require(_0x4010('0x1'));var moment=require(_0x4010('0x2'));var BPromise=require(_0x4010('0x3'));var rs=require(_0x4010('0x4'));var fs=require('fs');var Redis=require(_0x4010('0x5'));var db=require(_0x4010('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x4010('0x7'))('rpc');var config=require(_0x4010('0x8'));var jayson=require(_0x4010('0x9'));var client=jayson['client'][_0x4010('0xa')]({'port':0x232a});config[_0x4010('0xb')]=_[_0x4010('0xc')](config[_0x4010('0xb')],{'host':_0x4010('0xd'),'port':0x18eb});var socket=require(_0x4010('0xe'))(new Redis(config[_0x4010('0xb')]));require(_0x4010('0xf'))[_0x4010('0x10')](socket);function respondWithRpcPromise(_0x556548,_0x2c8dd6,_0x3d53d4){return new BPromise(function(_0x3ed39a,_0xee7c69){return client[_0x4010('0x11')](_0x556548,_0x3d53d4)[_0x4010('0x12')](function(_0x2d7ede){logger[_0x4010('0x13')](_0x4010('0x14'),_0x2c8dd6,_0x4010('0x15'));logger[_0x4010('0x16')](_0x4010('0x17'),_0x2c8dd6,'request\x20sent',JSON[_0x4010('0x18')](_0x2d7ede));if(_0x2d7ede[_0x4010('0x19')]){if(_0x2d7ede[_0x4010('0x19')]['code']===0x1f4){logger[_0x4010('0x19')](_0x4010('0x14'),_0x2c8dd6,_0x2d7ede['error'][_0x4010('0x1a')]);return _0xee7c69(_0x2d7ede[_0x4010('0x19')][_0x4010('0x1a')]);}logger[_0x4010('0x19')]('ChatInteraction,\x20%s,\x20%s',_0x2c8dd6,_0x2d7ede['error'][_0x4010('0x1a')]);return _0x3ed39a(_0x2d7ede[_0x4010('0x19')][_0x4010('0x1a')]);}else{logger[_0x4010('0x13')](_0x4010('0x14'),_0x2c8dd6,'request\x20sent');_0x3ed39a(_0x2d7ede['result'][_0x4010('0x1a')]);}})['catch'](function(_0x24fa08){logger[_0x4010('0x19')]('ChatInteraction,\x20%s,\x20%s',_0x2c8dd6,_0x24fa08);_0xee7c69(_0x24fa08);});});}exports[_0x4010('0x1b')]=function(_0x599122){var _0x4ab756=this;return new Promise(function(_0x4af4e4,_0x2566d1){return db[_0x4010('0x1c')][_0x4010('0x1d')](_0x599122[_0x4010('0x1e')],{'raw':_0x599122['options']?_0x599122[_0x4010('0x1f')][_0x4010('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x599122[_0x4010('0x1f')]?_0x599122['options']['where']||null:null,'attributes':_0x599122[_0x4010('0x1f')]?_0x599122[_0x4010('0x1f')][_0x4010('0x21')]||null:null,'limit':_0x599122[_0x4010('0x1f')]?_0x599122[_0x4010('0x1f')]['limit']||null:null})[_0x4010('0x12')](function(_0x512221){logger[_0x4010('0x13')](_0x4010('0x1b'),_0x599122);logger['debug'](_0x4010('0x1b'),_0x599122,JSON[_0x4010('0x18')](_0x512221));_0x4af4e4(_0x512221);})[_0x4010('0x22')](function(_0x413374){logger['error'](_0x4010('0x1b'),_0x413374[_0x4010('0x1a')],_0x599122);_0x2566d1(_0x4ab756['error'](0x1f4,_0x413374[_0x4010('0x1a')]));});});};exports['AddTagsToChatInteraction']=function(_0x45e112){return new Promise(function(_0x2e33d4,_0xdba804){return db[_0x4010('0x1c')][_0x4010('0x23')]({'where':_0x45e112[_0x4010('0x1f')]?_0x45e112[_0x4010('0x1f')][_0x4010('0x24')]||null:null})[_0x4010('0x12')](function(_0x1479c5){if(_0x1479c5){return _0x1479c5[_0x4010('0x25')](_0x45e112[_0x4010('0x1e')]['ids'],_[_0x4010('0x26')](_0x45e112[_0x4010('0x1e')],[_0x4010('0x27'),'id'])||{});}})['spread'](function(_0x246c2a){logger['info'](_0x4010('0x28'),_0x45e112);logger[_0x4010('0x16')](_0x4010('0x28'),_0x45e112,JSON[_0x4010('0x18')](_0x246c2a));_0x2e33d4(_0x246c2a);})['catch'](function(_0x18148d){logger['error'](_0x4010('0x28'),_0x18148d[_0x4010('0x1a')],_0x45e112);_0xdba804(_this[_0x4010('0x19')](0x1f4,_0x18148d[_0x4010('0x1a')]));});});};
\ No newline at end of file
index 032a5c1..84affcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6068=['save','remove','update','emit','register','length','chatInteraction:'];(function(_0x5f5629,_0x5e3c8d){var _0x11f0ce=function(_0x47e880){while(--_0x47e880){_0x5f5629['push'](_0x5f5629['shift']());}};_0x11f0ce(++_0x5e3c8d);}(_0x6068,0x134));var _0x8606=function(_0x24c4a8,_0xc0facd){_0x24c4a8=_0x24c4a8-0x0;var _0x4a2c28=_0x6068[_0x24c4a8];return _0x4a2c28;};'use strict';var ChatInteractionEvents=require('./chatInteraction.events');var events=[_0x8606('0x0'),_0x8606('0x1'),_0x8606('0x2')];function createListener(_0x81ac12,_0x9d29eb){return function(_0x88c8fd){_0x9d29eb[_0x8606('0x3')](_0x81ac12,_0x88c8fd);};}function removeListener(_0x7f410b,_0x2886a9){return function(){ChatInteractionEvents['removeListener'](_0x7f410b,_0x2886a9);};}exports[_0x8606('0x4')]=function(_0x25341a){for(var _0x2784da=0x0,_0x28de69=events[_0x8606('0x5')];_0x2784da<_0x28de69;_0x2784da++){var _0x5aa72c=events[_0x2784da];var _0x5a52d8=createListener(_0x8606('0x6')+_0x5aa72c,_0x25341a);ChatInteractionEvents['on'](_0x5aa72c,_0x5a52d8);}};
\ No newline at end of file
+var _0x9d5d=['removeListener','length','chatInteraction:','./chatInteraction.events','save','remove','update','emit'];(function(_0x4e55a9,_0x241b22){var _0x4a9b67=function(_0x2a3bd1){while(--_0x2a3bd1){_0x4e55a9['push'](_0x4e55a9['shift']());}};_0x4a9b67(++_0x241b22);}(_0x9d5d,0xab));var _0xd9d5=function(_0x19f9d9,_0x5434bc){_0x19f9d9=_0x19f9d9-0x0;var _0x1f52c2=_0x9d5d[_0x19f9d9];return _0x1f52c2;};'use strict';var ChatInteractionEvents=require(_0xd9d5('0x0'));var events=[_0xd9d5('0x1'),_0xd9d5('0x2'),_0xd9d5('0x3')];function createListener(_0x10c8bd,_0x3c1724){return function(_0x423b3f){_0x3c1724[_0xd9d5('0x4')](_0x10c8bd,_0x423b3f);};}function removeListener(_0xc0ded6,_0x380e60){return function(){ChatInteractionEvents[_0xd9d5('0x5')](_0xc0ded6,_0x380e60);};}exports['register']=function(_0x1ad1b3){for(var _0x23f20a=0x0,_0x5e046e=events[_0xd9d5('0x6')];_0x23f20a<_0x5e046e;_0x23f20a++){var _0x3f437e=events[_0x23f20a];var _0x2b24a6=createListener(_0xd9d5('0x7')+_0x3f437e,_0x1ad1b3);ChatInteractionEvents['on'](_0x3f437e,_0x2b24a6);}};
\ No newline at end of file
index 47a692a..04d3b4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5400=['root','server/files/attachments/','format','%s-%s','now','replace','/:id/attachment_upload','single','attachmentUpload','chat','chatinteraction:addtags','addTags','put','chatinteraction:update','update','/:id/abandon','abandon','/:id/close','close','chatinteraction:destroy','destroy','delete','/:id/tags','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./chatInteraction.controller','get','isAuthenticated','index','describe','/:id','isChatInteractionAuthorized','/:id/messages','getMyMessages','/:id/download','download','post','/:id/vidaoo','createVidaooSession','diskStorage','join'];(function(_0x4d35f3,_0x19ba66){var _0x382fea=function(_0x2c2390){while(--_0x2c2390){_0x4d35f3['push'](_0x4d35f3['shift']());}};_0x382fea(++_0x19ba66);}(_0x5400,0x103));var _0x0540=function(_0x3222f7,_0x151aac){_0x3222f7=_0x3222f7-0x0;var _0x2fa881=_0x5400[_0x3222f7];return _0x2fa881;};'use strict';var multer=require('multer');var util=require(_0x0540('0x0'));var path=require(_0x0540('0x1'));var timeout=require(_0x0540('0x2'));var express=require(_0x0540('0x3'));var router=express[_0x0540('0x4')]();var fs_extra=require(_0x0540('0x5'));var auth=require(_0x0540('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x0540('0x7'));router[_0x0540('0x8')]('/',auth[_0x0540('0x9')](),controller[_0x0540('0xa')]);router[_0x0540('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x0540('0xb')]);router[_0x0540('0x8')](_0x0540('0xc'),auth[_0x0540('0xd')](),controller['show']);router['get']('/:id/attachment_download',auth['isChatInteractionAuthorized'](),controller['attachmentDownload']);router[_0x0540('0x8')](_0x0540('0xe'),auth['isAuthenticated'](),controller['getMessages']);router[_0x0540('0x8')]('/:id/my_messages',auth[_0x0540('0xd')](),controller[_0x0540('0xf')]);router['get'](_0x0540('0x10'),auth[_0x0540('0x9')](),controller[_0x0540('0x11')]);router['post']('/',auth[_0x0540('0x9')](),controller['create']);router[_0x0540('0x12')](_0x0540('0x13'),auth['isAuthenticated'](),controller[_0x0540('0x14')]);var upload=multer({'storage':multer[_0x0540('0x15')]({'destination':function(_0x5b09ab,_0x29dab2,_0x1ad4f5){_0x1ad4f5(null,path[_0x0540('0x16')](config[_0x0540('0x17')],_0x0540('0x18')));},'filename':function(_0x840d78,_0x3d8354,_0x1bb69b){_0x1bb69b(null,util[_0x0540('0x19')](_0x0540('0x1a'),Date[_0x0540('0x1b')](),_0x3d8354['originalname'][_0x0540('0x1c')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post'](_0x0540('0x1d'),upload[_0x0540('0x1e')]('file'),controller[_0x0540('0x1f')]);router[_0x0540('0x12')](_0x0540('0xe'),auth['isChatInteractionAuthorized'](),controller['addMessage']);router[_0x0540('0x12')]('/:id/tags',auth[_0x0540('0x9')](),interaction['tracked'](_0x0540('0x20'),_0x0540('0x21')),controller[_0x0540('0x22')]);router[_0x0540('0x23')]('/:id',auth['isAuthenticated'](),interaction['tracked'](_0x0540('0x20'),_0x0540('0x24')),controller[_0x0540('0x25')]);router[_0x0540('0x23')]('/:id/custom_update',controller['customUpdate']);router['put'](_0x0540('0x26'),auth['isChatInteractionAuthorized'](),controller[_0x0540('0x27')]);router[_0x0540('0x23')](_0x0540('0x28'),controller[_0x0540('0x29')]);router['delete'](_0x0540('0xc'),auth[_0x0540('0x9')](),interaction['tracked'](_0x0540('0x20'),_0x0540('0x2a')),controller[_0x0540('0x2b')]);router[_0x0540('0x2c')](_0x0540('0x2d'),auth[_0x0540('0x9')](),controller['removeTags']);module[_0x0540('0x2e')]=router;
\ No newline at end of file
+var _0xa6a7=['../../config/environment','get','isAuthenticated','index','describe','/:id','isChatInteractionAuthorized','attachmentDownload','getMessages','/:id/my_messages','download','post','createVidaooSession','diskStorage','join','root','format','%s-%s','now','originalname','replace','/:id/attachment_upload','single','file','attachmentUpload','/:id/messages','addMessage','/:id/tags','tracked','chatinteraction:addtags','addTags','chat','chatinteraction:update','put','/:id/custom_update','customUpdate','/:id/abandon','abandon','/:id/close','close','delete','chatinteraction:destroy','destroy','removeTags','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0xa6a7,0x199));var _0x7a6a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa6a7[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x7a6a('0x0'));var util=require('util');var path=require(_0x7a6a('0x1'));var timeout=require('connect-timeout');var express=require(_0x7a6a('0x2'));var router=express[_0x7a6a('0x3')]();var fs_extra=require(_0x7a6a('0x4'));var auth=require(_0x7a6a('0x5'));var interaction=require(_0x7a6a('0x6'));var config=require(_0x7a6a('0x7'));var controller=require('./chatInteraction.controller');router[_0x7a6a('0x8')]('/',auth[_0x7a6a('0x9')](),controller[_0x7a6a('0xa')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x7a6a('0xb')]);router[_0x7a6a('0x8')](_0x7a6a('0xc'),auth[_0x7a6a('0xd')](),controller['show']);router[_0x7a6a('0x8')]('/:id/attachment_download',auth[_0x7a6a('0xd')](),controller[_0x7a6a('0xe')]);router['get']('/:id/messages',auth[_0x7a6a('0x9')](),controller[_0x7a6a('0xf')]);router[_0x7a6a('0x8')](_0x7a6a('0x10'),auth['isChatInteractionAuthorized'](),controller['getMyMessages']);router[_0x7a6a('0x8')]('/:id/download',auth[_0x7a6a('0x9')](),controller[_0x7a6a('0x11')]);router[_0x7a6a('0x12')]('/',auth[_0x7a6a('0x9')](),controller['create']);router[_0x7a6a('0x12')]('/:id/vidaoo',auth[_0x7a6a('0x9')](),controller[_0x7a6a('0x13')]);var upload=multer({'storage':multer[_0x7a6a('0x14')]({'destination':function(_0x5abff9,_0xe3daae,_0x380459){_0x380459(null,path[_0x7a6a('0x15')](config[_0x7a6a('0x16')],'server/files/attachments/'));},'filename':function(_0x48e98c,_0x3911ef,_0x54edea){_0x54edea(null,util[_0x7a6a('0x17')](_0x7a6a('0x18'),Date[_0x7a6a('0x19')](),_0x3911ef[_0x7a6a('0x1a')][_0x7a6a('0x1b')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post'](_0x7a6a('0x1c'),upload[_0x7a6a('0x1d')](_0x7a6a('0x1e')),controller[_0x7a6a('0x1f')]);router[_0x7a6a('0x12')](_0x7a6a('0x20'),auth['isChatInteractionAuthorized'](),controller[_0x7a6a('0x21')]);router[_0x7a6a('0x12')](_0x7a6a('0x22'),auth[_0x7a6a('0x9')](),interaction[_0x7a6a('0x23')]('chat',_0x7a6a('0x24')),controller[_0x7a6a('0x25')]);router['put'](_0x7a6a('0xc'),auth[_0x7a6a('0x9')](),interaction['tracked'](_0x7a6a('0x26'),_0x7a6a('0x27')),controller['update']);router[_0x7a6a('0x28')](_0x7a6a('0x29'),controller[_0x7a6a('0x2a')]);router[_0x7a6a('0x28')](_0x7a6a('0x2b'),auth[_0x7a6a('0xd')](),controller[_0x7a6a('0x2c')]);router[_0x7a6a('0x28')](_0x7a6a('0x2d'),controller[_0x7a6a('0x2e')]);router[_0x7a6a('0x2f')](_0x7a6a('0xc'),auth['isAuthenticated'](),interaction[_0x7a6a('0x23')]('chat',_0x7a6a('0x30')),controller[_0x7a6a('0x31')]);router[_0x7a6a('0x2f')](_0x7a6a('0x22'),auth['isAuthenticated'](),controller[_0x7a6a('0x32')]);module[_0x7a6a('0x33')]=router;
\ No newline at end of file
index 41cfd09..9769a17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12d0=['exports','medium','BOOLEAN','sequelize'];(function(_0x58d79a,_0x322927){var _0x290152=function(_0xa6e2d1){while(--_0xa6e2d1){_0x58d79a['push'](_0x58d79a['shift']());}};_0x290152(++_0x322927);}(_0x12d0,0xc3));var _0x012d=function(_0x2a1894,_0x574da2){_0x2a1894=_0x2a1894-0x0;var _0x1d87ba=_0x12d0[_0x2a1894];return _0x1d87ba;};'use strict';var Sequelize=require(_0x012d('0x0'));module[_0x012d('0x1')]={'body':{'type':Sequelize['TEXT'](_0x012d('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x012d('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x68e7=['BOOLEAN','INTEGER','sequelize','exports'];(function(_0x492e42,_0xf547e){var _0x3dd575=function(_0x501e6e){while(--_0x501e6e){_0x492e42['push'](_0x492e42['shift']());}};_0x3dd575(++_0xf547e);}(_0x68e7,0x1da));var _0x768e=function(_0xdad211,_0x56f984){_0xdad211=_0xdad211-0x0;var _0x537f8d=_0x68e7[_0xdad211];return _0x537f8d;};'use strict';var Sequelize=require(_0x768e('0x0'));module[_0x768e('0x1')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x768e('0x2')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x768e('0x3')]}};
\ No newline at end of file
index 27e6edf..a821ec9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45f5=['request-promise','bluebird','mustache','sox','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','send','index','map','ChatInternalMessage','fieldName','name','query','keys','filters','intersection','attributes','model','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','findAll','then','rows','catch','show','params','fields','include','create','body','find','describe','messages','lastMessageAt','createdAt','lastMessage','format','getUsers','User','admin','user','fullname','role','userpic','internal','online','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueue','type','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','agent','resourceId','push','FromId','ToId','-createdAt','all','rimraf','zip-dir','fast-json-patch'];(function(_0x41db21,_0x1d142a){var _0x202b8b=function(_0x1a715d){while(--_0x1a715d){_0x41db21['push'](_0x41db21['shift']());}};_0x202b8b(++_0x1d142a);}(_0x45f5,0x6f));var _0x545f=function(_0xe31165,_0x23cebf){_0xe31165=_0xe31165-0x0;var _0x3cd681=_0x45f5[_0xe31165];return _0x3cd681;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x545f('0x0'));var zipdir=require(_0x545f('0x1'));var jsonpatch=require(_0x545f('0x2'));var rp=require(_0x545f('0x3'));var moment=require('moment');var BPromise=require(_0x545f('0x4'));var Mustache=require(_0x545f('0x5'));var util=require('util');var path=require('path');var sox=require(_0x545f('0x6'));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(_0x545f('0x7'));var crypto=require(_0x545f('0x8'));var jsforce=require(_0x545f('0x9'));var deskjs=require(_0x545f('0xa'));var toCsv=require('to-csv');var querystring=require(_0x545f('0xb'));var Papa=require('papaparse');var Redis=require(_0x545f('0xc'));var authService=require(_0x545f('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x545f('0xe'));var hardwareService=require(_0x545f('0xf'));var logger=require(_0x545f('0x10'))(_0x545f('0x11'));var utils=require(_0x545f('0x12'));var config=require(_0x545f('0x13'));var licenseUtil=require(_0x545f('0x14'));var db=require(_0x545f('0x15'))['db'];config[_0x545f('0x16')]=_[_0x545f('0x17')](config[_0x545f('0x16')],{'host':_0x545f('0x18'),'port':0x18eb});var socket=require(_0x545f('0x19'))(new Redis(config[_0x545f('0x16')]));require(_0x545f('0x1a'))['register'](socket);function respondWithStatusCode(_0x379d22,_0x1e1938){_0x1e1938=_0x1e1938||0xcc;return function(_0x59726f){if(_0x59726f){return _0x379d22['sendStatus'](_0x1e1938);}return _0x379d22[_0x545f('0x1b')](_0x1e1938)[_0x545f('0x1c')]();};}function respondWithResult(_0x59a5e9,_0xfccfba){_0xfccfba=_0xfccfba||0xc8;return function(_0x7ba8d9){if(_0x7ba8d9){return _0x59a5e9[_0x545f('0x1b')](_0xfccfba)[_0x545f('0x1d')](_0x7ba8d9);}};}function respondWithFilteredResult(_0x43328c,_0x11f5c5){return function(_0x2f998e){if(_0x2f998e){var _0x383d23=typeof _0x11f5c5[_0x545f('0x1e')]===_0x545f('0x1f')&&typeof _0x11f5c5[_0x545f('0x20')]===_0x545f('0x1f');var _0x428200=_0x2f998e[_0x545f('0x21')];var _0x46138c=_0x383d23?0x0:_0x11f5c5['offset'];var _0x2ec299=_0x383d23?_0x2f998e['count']:_0x11f5c5[_0x545f('0x1e')]+_0x11f5c5[_0x545f('0x20')];var _0x3a0004;if(_0x2ec299>=_0x428200){_0x2ec299=_0x428200;_0x3a0004=0xc8;}else{_0x3a0004=0xce;}_0x43328c[_0x545f('0x1b')](_0x3a0004);return _0x43328c[_0x545f('0x22')](_0x545f('0x23'),_0x46138c+'-'+_0x2ec299+'/'+_0x428200)[_0x545f('0x1d')](_0x2f998e);}return null;};}function patchUpdates(_0x1e7c4a){return function(_0x4f9efc){try{jsonpatch[_0x545f('0x24')](_0x4f9efc,_0x1e7c4a,!![]);}catch(_0x3861b0){return BPromise[_0x545f('0x25')](_0x3861b0);}return _0x4f9efc[_0x545f('0x26')]();};}function saveUpdates(_0x242e58,_0x35d096){return function(_0x3307dd){if(_0x3307dd){return _0x3307dd[_0x545f('0x27')](_0x242e58)['then'](function(_0x32aa21){return _0x32aa21;});}return null;};}function removeEntity(_0x409e69,_0x46de05){return function(_0xf16f9c){if(_0xf16f9c){return _0xf16f9c[_0x545f('0x28')]()['then'](function(){_0x409e69[_0x545f('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x460005,_0x58a940){return function(_0x2eaf2a){if(!_0x2eaf2a){_0x460005[_0x545f('0x29')](0x194);}return _0x2eaf2a;};}function handleError(_0x177512,_0x4e0c45){_0x4e0c45=_0x4e0c45||0x1f4;return function(_0x28b2fb){logger['error'](_0x28b2fb[_0x545f('0x2a')]);if(_0x28b2fb['name']){delete _0x28b2fb['name'];}_0x177512[_0x545f('0x1b')](_0x4e0c45)[_0x545f('0x2b')](_0x28b2fb);};}exports[_0x545f('0x2c')]=function(_0x1e7127,_0x3b2ead){var _0x37c69b={},_0x5d4c60={},_0x964b4e={'count':0x0,'rows':[]};var _0x5e7deb=_[_0x545f('0x2d')](db[_0x545f('0x2e')]['rawAttributes'],function(_0xd952a0){return{'name':_0xd952a0[_0x545f('0x2f')],'type':_0xd952a0['type']['key']};});_0x5d4c60['model']=_[_0x545f('0x2d')](_0x5e7deb,_0x545f('0x30'));_0x5d4c60[_0x545f('0x31')]=_[_0x545f('0x32')](_0x1e7127[_0x545f('0x31')]);_0x5d4c60[_0x545f('0x33')]=_[_0x545f('0x34')](_0x5d4c60['model'],_0x5d4c60[_0x545f('0x31')]);_0x37c69b[_0x545f('0x35')]=_[_0x545f('0x34')](_0x5d4c60[_0x545f('0x36')],qs['fields'](_0x1e7127['query']['fields']));_0x37c69b[_0x545f('0x35')]=_0x37c69b[_0x545f('0x35')][_0x545f('0x37')]?_0x37c69b['attributes']:_0x5d4c60[_0x545f('0x36')];if(!_0x1e7127['query'][_0x545f('0x38')](_0x545f('0x39'))){_0x37c69b[_0x545f('0x20')]=qs['limit'](_0x1e7127['query']['limit']);_0x37c69b[_0x545f('0x1e')]=qs[_0x545f('0x1e')](_0x1e7127['query'][_0x545f('0x1e')]);}_0x37c69b[_0x545f('0x3a')]=qs[_0x545f('0x3b')](_0x1e7127[_0x545f('0x31')][_0x545f('0x3b')]);_0x37c69b[_0x545f('0x3c')]=qs[_0x545f('0x33')](_[_0x545f('0x3d')](_0x1e7127[_0x545f('0x31')],_0x5d4c60[_0x545f('0x33')]),_0x5e7deb);if(_0x1e7127[_0x545f('0x31')]['filter']){_0x37c69b['where']=_[_0x545f('0x3e')](_0x37c69b[_0x545f('0x3c')],{'$or':_[_0x545f('0x2d')](_0x5e7deb,function(_0x3daeb1){if(_0x3daeb1['type']!==_0x545f('0x3f')){var _0xa19028={};_0xa19028[_0x3daeb1[_0x545f('0x30')]]={'$like':'%'+_0x1e7127[_0x545f('0x31')][_0x545f('0x40')]+'%'};return _0xa19028;}})});}_0x37c69b=_['merge']({},_0x37c69b,_0x1e7127[_0x545f('0x41')]);var _0x13a525={'where':_0x37c69b[_0x545f('0x3c')]};return db[_0x545f('0x2e')][_0x545f('0x21')](_0x13a525)['then'](function(_0xe72feb){_0x964b4e[_0x545f('0x21')]=_0xe72feb;if(_0x1e7127['query'][_0x545f('0x42')]){_0x37c69b['include']=[{'all':!![]}];}return db[_0x545f('0x2e')][_0x545f('0x43')](_0x37c69b);})[_0x545f('0x44')](function(_0x5ef3da){_0x964b4e[_0x545f('0x45')]=_0x5ef3da;return _0x964b4e;})[_0x545f('0x44')](respondWithFilteredResult(_0x3b2ead,_0x37c69b))[_0x545f('0x46')](handleError(_0x3b2ead,null));};exports[_0x545f('0x47')]=function(_0x38c8f9,_0xe1986d){var _0x4870c8={'raw':!![],'where':{'id':_0x38c8f9[_0x545f('0x48')]['id']}},_0x1f7950={};_0x1f7950[_0x545f('0x36')]=_[_0x545f('0x32')](db[_0x545f('0x2e')]['rawAttributes']);_0x1f7950['query']=_['keys'](_0x38c8f9[_0x545f('0x31')]);_0x1f7950['filters']=_['intersection'](_0x1f7950[_0x545f('0x36')],_0x1f7950[_0x545f('0x31')]);_0x4870c8[_0x545f('0x35')]=_[_0x545f('0x34')](_0x1f7950[_0x545f('0x36')],qs[_0x545f('0x49')](_0x38c8f9[_0x545f('0x31')][_0x545f('0x49')]));_0x4870c8[_0x545f('0x35')]=_0x4870c8[_0x545f('0x35')][_0x545f('0x37')]?_0x4870c8[_0x545f('0x35')]:_0x1f7950['model'];if(_0x38c8f9[_0x545f('0x31')][_0x545f('0x42')]){_0x4870c8[_0x545f('0x4a')]=[{'all':!![]}];}_0x4870c8=_[_0x545f('0x3e')]({},_0x4870c8,_0x38c8f9[_0x545f('0x41')]);return db[_0x545f('0x2e')]['find'](_0x4870c8)['then'](handleEntityNotFound(_0xe1986d,null))[_0x545f('0x44')](respondWithResult(_0xe1986d,null))[_0x545f('0x46')](handleError(_0xe1986d,null));};exports[_0x545f('0x4b')]=function(_0x5c2cad,_0x5b92da){return db['ChatInternalMessage']['create'](_0x5c2cad['body'],{})['then'](respondWithResult(_0x5b92da,0xc9))[_0x545f('0x46')](handleError(_0x5b92da,null));};exports['update']=function(_0x587870,_0x5e62cc){if(_0x587870['body']['id']){delete _0x587870[_0x545f('0x4c')]['id'];}return db['ChatInternalMessage'][_0x545f('0x4d')]({'where':{'id':_0x587870['params']['id']}})[_0x545f('0x44')](handleEntityNotFound(_0x5e62cc,null))[_0x545f('0x44')](saveUpdates(_0x587870[_0x545f('0x4c')],null))[_0x545f('0x44')](respondWithResult(_0x5e62cc,null))['catch'](handleError(_0x5e62cc,null));};exports['destroy']=function(_0x18afc9,_0x412079){return db[_0x545f('0x2e')]['find']({'where':{'id':_0x18afc9[_0x545f('0x48')]['id']}})[_0x545f('0x44')](handleEntityNotFound(_0x412079,null))[_0x545f('0x44')](removeEntity(_0x412079,null))[_0x545f('0x46')](handleError(_0x412079,null));};exports['describe']=function(_0x34e24b,_0x338662){return db[_0x545f('0x2e')][_0x545f('0x4e')]()[_0x545f('0x44')](respondWithResult(_0x338662,null))[_0x545f('0x46')](handleError(_0x338662,null));};function wrapUser(_0x4cfce8){return function(_0x1e026d){var _0x21bc9c=_0x4cfce8['get']({'plain':!![]});_0x21bc9c[_0x545f('0x4f')]=[];if(_0x1e026d){_0x21bc9c[_0x545f('0x50')]=_0x1e026d[_0x545f('0x51')];_0x21bc9c[_0x545f('0x52')]=_0x1e026d;}else{_0x21bc9c['lastMessageAt']=moment(0x0)[_0x545f('0x53')]('YYYY-MM-DD\x20HH:mm:ss');_0x21bc9c['lastMessage']={};}return _0x21bc9c;};}exports[_0x545f('0x54')]=function(_0x46b2b8,_0x20be58,_0x174354){var _0x10e351=[];return db[_0x545f('0x55')]['findAll']({'where':{'role':['agent',_0x545f('0x56'),_0x545f('0x57')]},'attributes':['id',_0x545f('0x58'),_0x545f('0x30'),_0x545f('0x59'),_0x545f('0x5a'),_0x545f('0x5b'),_0x545f('0x5c'),_0x545f('0x5d'),_0x545f('0x5e'),_0x545f('0x5f')],'order':qs[_0x545f('0x3b')](_0x545f('0x60')),'include':[{'model':db[_0x545f('0x61')],'as':'VoiceQueues','attributes':['id','name',_0x545f('0x62')],'through':{'attributes':[]}}]})[_0x545f('0x44')](function(_0x5c273f){if(_0x5c273f){var _0x1463a4=_0x46b2b8[_0x545f('0x57')][_0x545f('0x63')]({'plain':!![]});if(!_0x1463a4)throw new Error(_0x545f('0x64'));if(_0x1463a4[_0x545f('0x59')]==='user'){return db[_0x545f('0x65')][_0x545f('0x4d')]({'where':{'name':_0x545f('0x66'),'userProfileId':_0x1463a4[_0x545f('0x67')]},'raw':!![]})['then'](function(_0x15d962){if(_0x15d962){if(_0x15d962[_0x545f('0x68')]===0x0){return db[_0x545f('0x69')]['findAll']({'where':{'sectionId':_0x15d962['id']},'raw':!![]})[_0x545f('0x44')](function(_0x59c45){var _0xd886ae=[];if(_[_0x545f('0x6a')](_0x59c45)){_0xd886ae=_[_0x545f('0x40')](_0x5c273f,function(_0x41be66){if(_0x41be66[_0x545f('0x59')]!==_0x545f('0x6b')){return _0x41be66;}});return _0xd886ae;}else{for(var _0x384aa6=0x0;_0x384aa6<_0x5c273f[_0x545f('0x37')];_0x384aa6++){var _0x2b5d19=_0x5c273f[_0x384aa6];if(_0x2b5d19['role']===_0x545f('0x6b')){var _0x45994d=_[_0x545f('0x4d')](_0x59c45,function(_0x5dd167){return _0x5dd167[_0x545f('0x6c')]===_0x2b5d19['id'];});if(_0x45994d)_0xd886ae[_0x545f('0x6d')](_0x2b5d19);}else{_0xd886ae[_0x545f('0x6d')](_0x2b5d19);}}return _0xd886ae;}});}else{return _0x5c273f;}}else{var _0xa4ad3c=_[_0x545f('0x40')](_0x5c273f,function(_0x3cd6ba){if(_0x3cd6ba[_0x545f('0x59')]!==_0x545f('0x6b')){return _0x3cd6ba;}});return _0xa4ad3c;}});}else{return _0x5c273f;}}})[_0x545f('0x44')](function(_0x68e3ab){var _0x14eaca=[];if(_0x68e3ab){_0x10e351=_0x68e3ab;for(var _0x518a88=0x0;_0x518a88<_0x68e3ab[_0x545f('0x37')];_0x518a88+=0x1){_0x10e351[_0x518a88]['messages']=[];_0x14eaca['push'](db[_0x545f('0x2e')][_0x545f('0x4d')]({'where':{'FromId':[_0x46b2b8[_0x545f('0x57')]['id'],_0x68e3ab[_0x518a88]['id']],'ToId':[_0x46b2b8[_0x545f('0x57')]['id'],_0x68e3ab[_0x518a88]['id']],'ChatGroupId':null},'attributes':['id',_0x545f('0x51'),_0x545f('0x6e'),_0x545f('0x6f'),'read',_0x545f('0x4c')],'order':qs[_0x545f('0x3b')](_0x545f('0x70')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x545f('0x44')](wrapUser(_0x68e3ab[_0x518a88])));}return BPromise[_0x545f('0x71')](_0x14eaca);}return[];})[_0x545f('0x44')](function(_0x4f52e4){return{'rows':_0x4f52e4,'count':_0x4f52e4[_0x545f('0x37')]};})[_0x545f('0x44')](respondWithResult(_0x20be58,null))[_0x545f('0x46')](handleError(_0x20be58,null));};
\ No newline at end of file
+var _0x8a3b=['filters','filter','where','merge','options','includeAll','include','rows','catch','show','params','keys','find','create','body','describe','get','messages','lastMessageAt','createdAt','lastMessage','YYYY-MM-DD\x20HH:mm:ss','getUsers','findAll','agent','user','fullname','role','userpic','internal','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','isEmpty','resourceId','push','ToId','read','-createdAt','all','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','ChatInternalMessage','rawAttributes','type','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0x5c4701,_0x1a630c){var _0x28bdd2=function(_0x53e70e){while(--_0x53e70e){_0x5c4701['push'](_0x5c4701['shift']());}};_0x28bdd2(++_0x1a630c);}(_0x8a3b,0x171));var _0xb8a3=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0x8a3b[_0x220dbb];return _0x2b77de;};'use strict';var emlformat=require(_0xb8a3('0x0'));var rimraf=require(_0xb8a3('0x1'));var zipdir=require(_0xb8a3('0x2'));var jsonpatch=require(_0xb8a3('0x3'));var rp=require(_0xb8a3('0x4'));var moment=require('moment');var BPromise=require(_0xb8a3('0x5'));var Mustache=require(_0xb8a3('0x6'));var util=require(_0xb8a3('0x7'));var path=require(_0xb8a3('0x8'));var sox=require(_0xb8a3('0x9'));var csv=require(_0xb8a3('0xa'));var ejs=require(_0xb8a3('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb8a3('0xc'));var squel=require(_0xb8a3('0xd'));var crypto=require(_0xb8a3('0xe'));var jsforce=require(_0xb8a3('0xf'));var deskjs=require(_0xb8a3('0x10'));var toCsv=require('to-csv');var querystring=require(_0xb8a3('0x11'));var Papa=require('papaparse');var Redis=require(_0xb8a3('0x12'));var authService=require(_0xb8a3('0x13'));var qs=require(_0xb8a3('0x14'));var as=require(_0xb8a3('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb8a3('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb8a3('0x17'));var db=require('../../mysqldb')['db'];config[_0xb8a3('0x18')]=_[_0xb8a3('0x19')](config[_0xb8a3('0x18')],{'host':_0xb8a3('0x1a'),'port':0x18eb});var socket=require(_0xb8a3('0x1b'))(new Redis(config[_0xb8a3('0x18')]));require('./chatInternalMessage.socket')[_0xb8a3('0x1c')](socket);function respondWithStatusCode(_0x346caa,_0x3aa3b5){_0x3aa3b5=_0x3aa3b5||0xcc;return function(_0x26e08d){if(_0x26e08d){return _0x346caa[_0xb8a3('0x1d')](_0x3aa3b5);}return _0x346caa[_0xb8a3('0x1e')](_0x3aa3b5)['end']();};}function respondWithResult(_0x15dd5b,_0x8bebbf){_0x8bebbf=_0x8bebbf||0xc8;return function(_0x101151){if(_0x101151){return _0x15dd5b['status'](_0x8bebbf)[_0xb8a3('0x1f')](_0x101151);}};}function respondWithFilteredResult(_0x3cd6b6,_0x17eee7){return function(_0x8fe794){if(_0x8fe794){var _0x116d66=typeof _0x17eee7['offset']==='undefined'&&typeof _0x17eee7[_0xb8a3('0x20')]===_0xb8a3('0x21');var _0x340e82=_0x8fe794[_0xb8a3('0x22')];var _0x1ab1a3=_0x116d66?0x0:_0x17eee7[_0xb8a3('0x23')];var _0x181419=_0x116d66?_0x8fe794[_0xb8a3('0x22')]:_0x17eee7['offset']+_0x17eee7['limit'];var _0x3821de;if(_0x181419>=_0x340e82){_0x181419=_0x340e82;_0x3821de=0xc8;}else{_0x3821de=0xce;}_0x3cd6b6[_0xb8a3('0x1e')](_0x3821de);return _0x3cd6b6[_0xb8a3('0x24')](_0xb8a3('0x25'),_0x1ab1a3+'-'+_0x181419+'/'+_0x340e82)[_0xb8a3('0x1f')](_0x8fe794);}return null;};}function patchUpdates(_0x34c3d2){return function(_0x3a3a80){try{jsonpatch[_0xb8a3('0x26')](_0x3a3a80,_0x34c3d2,!![]);}catch(_0xd3c38c){return BPromise[_0xb8a3('0x27')](_0xd3c38c);}return _0x3a3a80[_0xb8a3('0x28')]();};}function saveUpdates(_0x2122ff,_0x40ed96){return function(_0x1773c3){if(_0x1773c3){return _0x1773c3[_0xb8a3('0x29')](_0x2122ff)[_0xb8a3('0x2a')](function(_0x29e6ee){return _0x29e6ee;});}return null;};}function removeEntity(_0x4c8687,_0x48a49e){return function(_0x654a2a){if(_0x654a2a){return _0x654a2a[_0xb8a3('0x2b')]()[_0xb8a3('0x2a')](function(){_0x4c8687[_0xb8a3('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1cb3e9,_0x9b0622){return function(_0x4b1839){if(!_0x4b1839){_0x1cb3e9['sendStatus'](0x194);}return _0x4b1839;};}function handleError(_0x98b42c,_0x18cffc){_0x18cffc=_0x18cffc||0x1f4;return function(_0x5daeb0){logger[_0xb8a3('0x2c')](_0x5daeb0['stack']);if(_0x5daeb0[_0xb8a3('0x2d')]){delete _0x5daeb0[_0xb8a3('0x2d')];}_0x98b42c[_0xb8a3('0x1e')](_0x18cffc)[_0xb8a3('0x2e')](_0x5daeb0);};}exports[_0xb8a3('0x2f')]=function(_0x1037a2,_0x4b3afb){var _0x1a2603={},_0x29045e={},_0x4360e2={'count':0x0,'rows':[]};var _0x2d10fa=_['map'](db[_0xb8a3('0x30')][_0xb8a3('0x31')],function(_0x14145c){return{'name':_0x14145c['fieldName'],'type':_0x14145c[_0xb8a3('0x32')][_0xb8a3('0x33')]};});_0x29045e[_0xb8a3('0x34')]=_[_0xb8a3('0x35')](_0x2d10fa,'name');_0x29045e[_0xb8a3('0x36')]=_['keys'](_0x1037a2[_0xb8a3('0x36')]);_0x29045e['filters']=_[_0xb8a3('0x37')](_0x29045e[_0xb8a3('0x34')],_0x29045e['query']);_0x1a2603[_0xb8a3('0x38')]=_[_0xb8a3('0x37')](_0x29045e[_0xb8a3('0x34')],qs['fields'](_0x1037a2[_0xb8a3('0x36')][_0xb8a3('0x39')]));_0x1a2603[_0xb8a3('0x38')]=_0x1a2603[_0xb8a3('0x38')][_0xb8a3('0x3a')]?_0x1a2603[_0xb8a3('0x38')]:_0x29045e[_0xb8a3('0x34')];if(!_0x1037a2['query'][_0xb8a3('0x3b')](_0xb8a3('0x3c'))){_0x1a2603['limit']=qs[_0xb8a3('0x20')](_0x1037a2[_0xb8a3('0x36')][_0xb8a3('0x20')]);_0x1a2603['offset']=qs[_0xb8a3('0x23')](_0x1037a2['query'][_0xb8a3('0x23')]);}_0x1a2603[_0xb8a3('0x3d')]=qs[_0xb8a3('0x3e')](_0x1037a2[_0xb8a3('0x36')][_0xb8a3('0x3e')]);_0x1a2603['where']=qs[_0xb8a3('0x3f')](_['pick'](_0x1037a2[_0xb8a3('0x36')],_0x29045e[_0xb8a3('0x3f')]),_0x2d10fa);if(_0x1037a2[_0xb8a3('0x36')][_0xb8a3('0x40')]){_0x1a2603[_0xb8a3('0x41')]=_['merge'](_0x1a2603[_0xb8a3('0x41')],{'$or':_[_0xb8a3('0x35')](_0x2d10fa,function(_0x282604){if(_0x282604['type']!=='VIRTUAL'){var _0x1f8e28={};_0x1f8e28[_0x282604[_0xb8a3('0x2d')]]={'$like':'%'+_0x1037a2[_0xb8a3('0x36')][_0xb8a3('0x40')]+'%'};return _0x1f8e28;}})});}_0x1a2603=_[_0xb8a3('0x42')]({},_0x1a2603,_0x1037a2[_0xb8a3('0x43')]);var _0x36d8df={'where':_0x1a2603['where']};return db['ChatInternalMessage'][_0xb8a3('0x22')](_0x36d8df)[_0xb8a3('0x2a')](function(_0x58c494){_0x4360e2[_0xb8a3('0x22')]=_0x58c494;if(_0x1037a2[_0xb8a3('0x36')][_0xb8a3('0x44')]){_0x1a2603[_0xb8a3('0x45')]=[{'all':!![]}];}return db[_0xb8a3('0x30')]['findAll'](_0x1a2603);})[_0xb8a3('0x2a')](function(_0x2f0720){_0x4360e2[_0xb8a3('0x46')]=_0x2f0720;return _0x4360e2;})['then'](respondWithFilteredResult(_0x4b3afb,_0x1a2603))[_0xb8a3('0x47')](handleError(_0x4b3afb,null));};exports[_0xb8a3('0x48')]=function(_0x2c53b8,_0xedbd6){var _0x1ecdc0={'raw':!![],'where':{'id':_0x2c53b8[_0xb8a3('0x49')]['id']}},_0xfcfb32={};_0xfcfb32[_0xb8a3('0x34')]=_[_0xb8a3('0x4a')](db['ChatInternalMessage'][_0xb8a3('0x31')]);_0xfcfb32['query']=_[_0xb8a3('0x4a')](_0x2c53b8[_0xb8a3('0x36')]);_0xfcfb32[_0xb8a3('0x3f')]=_[_0xb8a3('0x37')](_0xfcfb32[_0xb8a3('0x34')],_0xfcfb32[_0xb8a3('0x36')]);_0x1ecdc0[_0xb8a3('0x38')]=_['intersection'](_0xfcfb32[_0xb8a3('0x34')],qs[_0xb8a3('0x39')](_0x2c53b8[_0xb8a3('0x36')][_0xb8a3('0x39')]));_0x1ecdc0[_0xb8a3('0x38')]=_0x1ecdc0[_0xb8a3('0x38')]['length']?_0x1ecdc0['attributes']:_0xfcfb32[_0xb8a3('0x34')];if(_0x2c53b8[_0xb8a3('0x36')][_0xb8a3('0x44')]){_0x1ecdc0[_0xb8a3('0x45')]=[{'all':!![]}];}_0x1ecdc0=_[_0xb8a3('0x42')]({},_0x1ecdc0,_0x2c53b8[_0xb8a3('0x43')]);return db[_0xb8a3('0x30')][_0xb8a3('0x4b')](_0x1ecdc0)[_0xb8a3('0x2a')](handleEntityNotFound(_0xedbd6,null))[_0xb8a3('0x2a')](respondWithResult(_0xedbd6,null))['catch'](handleError(_0xedbd6,null));};exports[_0xb8a3('0x4c')]=function(_0x2c8eb9,_0x4f83c9){return db['ChatInternalMessage']['create'](_0x2c8eb9[_0xb8a3('0x4d')],{})[_0xb8a3('0x2a')](respondWithResult(_0x4f83c9,0xc9))['catch'](handleError(_0x4f83c9,null));};exports['update']=function(_0x46cd8f,_0x5e8344){if(_0x46cd8f['body']['id']){delete _0x46cd8f['body']['id'];}return db[_0xb8a3('0x30')]['find']({'where':{'id':_0x46cd8f[_0xb8a3('0x49')]['id']}})['then'](handleEntityNotFound(_0x5e8344,null))[_0xb8a3('0x2a')](saveUpdates(_0x46cd8f[_0xb8a3('0x4d')],null))[_0xb8a3('0x2a')](respondWithResult(_0x5e8344,null))[_0xb8a3('0x47')](handleError(_0x5e8344,null));};exports[_0xb8a3('0x2b')]=function(_0x53f6e0,_0x3ebd54){return db['ChatInternalMessage'][_0xb8a3('0x4b')]({'where':{'id':_0x53f6e0['params']['id']}})['then'](handleEntityNotFound(_0x3ebd54,null))[_0xb8a3('0x2a')](removeEntity(_0x3ebd54,null))[_0xb8a3('0x47')](handleError(_0x3ebd54,null));};exports['describe']=function(_0x4766fb,_0x51398b){return db[_0xb8a3('0x30')][_0xb8a3('0x4e')]()[_0xb8a3('0x2a')](respondWithResult(_0x51398b,null))[_0xb8a3('0x47')](handleError(_0x51398b,null));};function wrapUser(_0x1f4959){return function(_0x5cd195){var _0x5a016b=_0x1f4959[_0xb8a3('0x4f')]({'plain':!![]});_0x5a016b[_0xb8a3('0x50')]=[];if(_0x5cd195){_0x5a016b[_0xb8a3('0x51')]=_0x5cd195[_0xb8a3('0x52')];_0x5a016b[_0xb8a3('0x53')]=_0x5cd195;}else{_0x5a016b[_0xb8a3('0x51')]=moment(0x0)['format'](_0xb8a3('0x54'));_0x5a016b['lastMessage']={};}return _0x5a016b;};}exports[_0xb8a3('0x55')]=function(_0x3f2bf2,_0x37d58c,_0x34fa31){var _0x49a020=[];return db['User'][_0xb8a3('0x56')]({'where':{'role':[_0xb8a3('0x57'),'admin',_0xb8a3('0x58')]},'attributes':['id',_0xb8a3('0x59'),'name',_0xb8a3('0x5a'),_0xb8a3('0x5b'),_0xb8a3('0x5c'),'online',_0xb8a3('0x5d'),_0xb8a3('0x5e'),_0xb8a3('0x5f')],'order':qs[_0xb8a3('0x3e')](_0xb8a3('0x60')),'include':[{'model':db['VoiceQueue'],'as':_0xb8a3('0x61'),'attributes':['id','name',_0xb8a3('0x32')],'through':{'attributes':[]}}]})[_0xb8a3('0x2a')](function(_0x1f5104){if(_0x1f5104){var _0x5e7444=_0x3f2bf2['user'][_0xb8a3('0x4f')]({'plain':!![]});if(!_0x5e7444)throw new Error(_0xb8a3('0x62'));if(_0x5e7444[_0xb8a3('0x5a')]===_0xb8a3('0x58')){return db[_0xb8a3('0x63')][_0xb8a3('0x4b')]({'where':{'name':_0xb8a3('0x64'),'userProfileId':_0x5e7444['userProfileId']},'raw':!![]})[_0xb8a3('0x2a')](function(_0x557888){if(_0x557888){if(_0x557888['autoAssociation']===0x0){return db['UserProfileResource'][_0xb8a3('0x56')]({'where':{'sectionId':_0x557888['id']},'raw':!![]})[_0xb8a3('0x2a')](function(_0x3cda54){var _0x4448b1=[];if(_[_0xb8a3('0x65')](_0x3cda54)){_0x4448b1=_[_0xb8a3('0x40')](_0x1f5104,function(_0x4014c0){if(_0x4014c0[_0xb8a3('0x5a')]!==_0xb8a3('0x57')){return _0x4014c0;}});return _0x4448b1;}else{for(var _0x2d36bf=0x0;_0x2d36bf<_0x1f5104[_0xb8a3('0x3a')];_0x2d36bf++){var _0x4b37a1=_0x1f5104[_0x2d36bf];if(_0x4b37a1['role']===_0xb8a3('0x57')){var _0x57f026=_['find'](_0x3cda54,function(_0x458ea4){return _0x458ea4[_0xb8a3('0x66')]===_0x4b37a1['id'];});if(_0x57f026)_0x4448b1[_0xb8a3('0x67')](_0x4b37a1);}else{_0x4448b1[_0xb8a3('0x67')](_0x4b37a1);}}return _0x4448b1;}});}else{return _0x1f5104;}}else{var _0x3be807=_[_0xb8a3('0x40')](_0x1f5104,function(_0x4d97c6){if(_0x4d97c6[_0xb8a3('0x5a')]!=='agent'){return _0x4d97c6;}});return _0x3be807;}});}else{return _0x1f5104;}}})[_0xb8a3('0x2a')](function(_0x112b1b){var _0x5c18db=[];if(_0x112b1b){_0x49a020=_0x112b1b;for(var _0x1d60e9=0x0;_0x1d60e9<_0x112b1b[_0xb8a3('0x3a')];_0x1d60e9+=0x1){_0x49a020[_0x1d60e9]['messages']=[];_0x5c18db['push'](db['ChatInternalMessage'][_0xb8a3('0x4b')]({'where':{'FromId':[_0x3f2bf2['user']['id'],_0x112b1b[_0x1d60e9]['id']],'ToId':[_0x3f2bf2[_0xb8a3('0x58')]['id'],_0x112b1b[_0x1d60e9]['id']],'ChatGroupId':null},'attributes':['id','createdAt','FromId',_0xb8a3('0x68'),_0xb8a3('0x69'),_0xb8a3('0x4d')],'order':qs['sort'](_0xb8a3('0x6a')),'limit':0x1,'offset':0x0,'raw':!![]})[_0xb8a3('0x2a')](wrapUser(_0x112b1b[_0x1d60e9])));}return BPromise[_0xb8a3('0x6b')](_0x5c18db);}return[];})[_0xb8a3('0x2a')](function(_0x5da03b){return{'rows':_0x5da03b,'count':_0x5da03b[_0xb8a3('0x3a')]};})[_0xb8a3('0x2a')](respondWithResult(_0x37d58c,null))[_0xb8a3('0x47')](handleError(_0x37d58c,null));};
\ No newline at end of file
index 50541a3..0e4bb20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04e7=['ChatInternalMessage','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x58042b,_0x32ee71){var _0x4e706d=function(_0x2aff45){while(--_0x2aff45){_0x58042b['push'](_0x58042b['shift']());}};_0x4e706d(++_0x32ee71);}(_0x04e7,0x1ca));var _0x704e=function(_0x59eefb,_0x2151ce){_0x59eefb=_0x59eefb-0x0;var _0x1a49e8=_0x04e7[_0x59eefb];return _0x1a49e8;};'use strict';var EventEmitter=require(_0x704e('0x0'));var ChatInternalMessage=require(_0x704e('0x1'))['db'][_0x704e('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x704e('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x704e('0x4'),'afterDestroy':_0x704e('0x5')};function emitEvent(_0xed672f){return function(_0x38afe6,_0x3bd53f,_0x5aeffc){ChatInternalMessageEvents[_0x704e('0x6')](_0xed672f+':'+_0x38afe6['id'],_0x38afe6);ChatInternalMessageEvents['emit'](_0xed672f,_0x38afe6);_0x5aeffc(null);};}for(var e in events){if(events[_0x704e('0x7')](e)){var event=events[e];ChatInternalMessage[_0x704e('0x8')](e,emitEvent(event));}}module[_0x704e('0x9')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x9e25=['emit','exports','events','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0x9e25,0x12a));var _0x59e2=function(_0x4e5171,_0xf3e3b7){_0x4e5171=_0x4e5171-0x0;var _0x9fc6bb=_0x9e25[_0x4e5171];return _0x9fc6bb;};'use strict';var EventEmitter=require(_0x59e2('0x0'));var ChatInternalMessage=require(_0x59e2('0x1'))['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x59e2('0x2')](0x0);var events={'afterCreate':_0x59e2('0x3'),'afterUpdate':_0x59e2('0x4'),'afterDestroy':_0x59e2('0x5')};function emitEvent(_0x2cc8ce){return function(_0xfa3574,_0x35a9dd,_0x1f424e){ChatInternalMessageEvents[_0x59e2('0x6')](_0x2cc8ce+':'+_0xfa3574['id'],_0xfa3574);ChatInternalMessageEvents[_0x59e2('0x6')](_0x2cc8ce,_0xfa3574);_0x1f424e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage['hook'](e,emitEvent(event));}}module[_0x59e2('0x7')]=ChatInternalMessageEvents;
\ No newline at end of file
index 8b1cfb3..03b8215 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd051=['request-promise','path','rimraf','../../config/environment','exports','ChatInternalMessage','chat_internal_messages','utf8mb4','util','../../config/logger','bluebird'];(function(_0x91bc19,_0x3222d2){var _0x2f00e5=function(_0x3d0af3){while(--_0x3d0af3){_0x91bc19['push'](_0x91bc19['shift']());}};_0x2f00e5(++_0x3222d2);}(_0xd051,0x189));var _0x1d05=function(_0x2c66f6,_0x2dae26){_0x2c66f6=_0x2c66f6-0x0;var _0x1e5894=_0xd051[_0x2c66f6];return _0x1e5894;};'use strict';var _=require('lodash');var util=require(_0x1d05('0x0'));var logger=require(_0x1d05('0x1'))('api');var moment=require('moment');var BPromise=require(_0x1d05('0x2'));var rp=require(_0x1d05('0x3'));var fs=require('fs');var path=require(_0x1d05('0x4'));var rimraf=require(_0x1d05('0x5'));var config=require(_0x1d05('0x6'));var attributes=require('./chatInternalMessage.attributes');module[_0x1d05('0x7')]=function(_0x5f38b5,_0x153b9d){return _0x5f38b5['define'](_0x1d05('0x8'),attributes,{'tableName':_0x1d05('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1d05('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xeaf7=['utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./chatInternalMessage.attributes','exports','define','ChatInternalMessage'];(function(_0x22392b,_0x3d18b6){var _0x3623fd=function(_0x46413d){while(--_0x46413d){_0x22392b['push'](_0x22392b['shift']());}};_0x3623fd(++_0x3d18b6);}(_0xeaf7,0x151));var _0x7eaf=function(_0x8d9972,_0x39b00a){_0x8d9972=_0x8d9972-0x0;var _0x1f44ff=_0xeaf7[_0x8d9972];return _0x1f44ff;};'use strict';var _=require(_0x7eaf('0x0'));var util=require(_0x7eaf('0x1'));var logger=require(_0x7eaf('0x2'))(_0x7eaf('0x3'));var moment=require(_0x7eaf('0x4'));var BPromise=require(_0x7eaf('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7eaf('0x6'));var rimraf=require(_0x7eaf('0x7'));var config=require(_0x7eaf('0x8'));var attributes=require(_0x7eaf('0x9'));module[_0x7eaf('0xa')]=function(_0x4ef83c,_0xb3ece){return _0x4ef83c[_0x7eaf('0xb')](_0x7eaf('0xc'),attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x7eaf('0xd')});};
\ No newline at end of file
index 6a9d867..505367b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf961=['error','code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x279841,_0x4e9e3b){var _0x4d3a9f=function(_0x261c2d){while(--_0x261c2d){_0x279841['push'](_0x279841['shift']());}};_0x4d3a9f(++_0x4e9e3b);}(_0xf961,0x1cf));var _0x1f96=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0xf961[_0xefd519];return _0x4bb882;};'use strict';var _=require(_0x1f96('0x0'));var util=require(_0x1f96('0x1'));var moment=require(_0x1f96('0x2'));var BPromise=require(_0x1f96('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1f96('0x4'));var db=require(_0x1f96('0x5'))['db'];var utils=require(_0x1f96('0x6'));var logger=require('../../config/logger')(_0x1f96('0x7'));var config=require(_0x1f96('0x8'));var jayson=require(_0x1f96('0x9'));var client=jayson['client'][_0x1f96('0xa')]({'port':0x232a});config['redis']=_[_0x1f96('0xb')](config[_0x1f96('0xc')],{'host':_0x1f96('0xd'),'port':0x18eb});var socket=require(_0x1f96('0xe'))(new Redis(config[_0x1f96('0xc')]));require(_0x1f96('0xf'))['register'](socket);function respondWithRpcPromise(_0x523b60,_0x40f9f1,_0x54ae99){return new BPromise(function(_0x32b621,_0x2e1fdb){return client[_0x1f96('0x10')](_0x523b60,_0x54ae99)[_0x1f96('0x11')](function(_0x577c76){logger[_0x1f96('0x12')](_0x1f96('0x13'),_0x40f9f1,_0x1f96('0x14'));logger['debug'](_0x1f96('0x15'),_0x40f9f1,_0x1f96('0x14'),JSON[_0x1f96('0x16')](_0x577c76));if(_0x577c76[_0x1f96('0x17')]){if(_0x577c76[_0x1f96('0x17')][_0x1f96('0x18')]===0x1f4){logger['error'](_0x1f96('0x13'),_0x40f9f1,_0x577c76[_0x1f96('0x17')][_0x1f96('0x19')]);return _0x2e1fdb(_0x577c76[_0x1f96('0x17')]['message']);}logger[_0x1f96('0x17')](_0x1f96('0x13'),_0x40f9f1,_0x577c76[_0x1f96('0x17')][_0x1f96('0x19')]);return _0x32b621(_0x577c76[_0x1f96('0x17')][_0x1f96('0x19')]);}else{logger[_0x1f96('0x12')](_0x1f96('0x13'),_0x40f9f1,'request\x20sent');_0x32b621(_0x577c76[_0x1f96('0x1a')][_0x1f96('0x19')]);}})['catch'](function(_0x1569ca){logger[_0x1f96('0x17')](_0x1f96('0x13'),_0x40f9f1,_0x1569ca);_0x2e1fdb(_0x1569ca);});});}
\ No newline at end of file
+var _0x25ac=['register','request','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','./chatInternalMessage.socket'];(function(_0x4abeb1,_0x44f73b){var _0x143d27=function(_0x3454e1){while(--_0x3454e1){_0x4abeb1['push'](_0x4abeb1['shift']());}};_0x143d27(++_0x44f73b);}(_0x25ac,0x1d3));var _0xc25a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x25ac[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc25a('0x0'));var fs=require('fs');var Redis=require(_0xc25a('0x1'));var db=require(_0xc25a('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xc25a('0x3'))(_0xc25a('0x4'));var config=require(_0xc25a('0x5'));var jayson=require(_0xc25a('0x6'));var client=jayson[_0xc25a('0x7')][_0xc25a('0x8')]({'port':0x232a});config['redis']=_[_0xc25a('0x9')](config[_0xc25a('0xa')],{'host':_0xc25a('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xc25a('0xc'))[_0xc25a('0xd')](socket);function respondWithRpcPromise(_0x2cf78b,_0x2dde18,_0x54d7aa){return new BPromise(function(_0x469b10,_0x3a698f){return client[_0xc25a('0xe')](_0x2cf78b,_0x54d7aa)['then'](function(_0x25d9e1){logger[_0xc25a('0xf')](_0xc25a('0x10'),_0x2dde18,_0xc25a('0x11'));logger['debug'](_0xc25a('0x12'),_0x2dde18,_0xc25a('0x11'),JSON[_0xc25a('0x13')](_0x25d9e1));if(_0x25d9e1[_0xc25a('0x14')]){if(_0x25d9e1[_0xc25a('0x14')]['code']===0x1f4){logger[_0xc25a('0x14')](_0xc25a('0x10'),_0x2dde18,_0x25d9e1[_0xc25a('0x14')][_0xc25a('0x15')]);return _0x3a698f(_0x25d9e1['error'][_0xc25a('0x15')]);}logger['error']('ChatInternalMessage,\x20%s,\x20%s',_0x2dde18,_0x25d9e1['error'][_0xc25a('0x15')]);return _0x469b10(_0x25d9e1[_0xc25a('0x14')][_0xc25a('0x15')]);}else{logger[_0xc25a('0xf')]('ChatInternalMessage,\x20%s,\x20%s',_0x2dde18,_0xc25a('0x11'));_0x469b10(_0x25d9e1[_0xc25a('0x16')][_0xc25a('0x15')]);}})[_0xc25a('0x17')](function(_0x1e5673){logger[_0xc25a('0x14')](_0xc25a('0x10'),_0x2dde18,_0x1e5673);_0x3a698f(_0x1e5673);});});}
\ No newline at end of file
index fe8278b..3f2ac75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48c2=['save','remove','emit','removeListener','register','chatInternalMessage:','./chatInternalMessage.events'];(function(_0x84fcb4,_0x383344){var _0x542c14=function(_0x2a3d96){while(--_0x2a3d96){_0x84fcb4['push'](_0x84fcb4['shift']());}};_0x542c14(++_0x383344);}(_0x48c2,0x84));var _0x248c=function(_0x377a6e,_0x59b99d){_0x377a6e=_0x377a6e-0x0;var _0x37f751=_0x48c2[_0x377a6e];return _0x37f751;};'use strict';var ChatInternalMessageEvents=require(_0x248c('0x0'));var events=[_0x248c('0x1'),_0x248c('0x2'),'update'];function createListener(_0x3ab66d,_0x1bb788){return function(_0x3736b3){_0x1bb788[_0x248c('0x3')](_0x3ab66d,_0x3736b3);};}function removeListener(_0x4cb103,_0x20bb38){return function(){ChatInternalMessageEvents[_0x248c('0x4')](_0x4cb103,_0x20bb38);};}exports[_0x248c('0x5')]=function(_0x50ecd2){for(var _0x4645a7=0x0,_0x52eb14=events['length'];_0x4645a7<_0x52eb14;_0x4645a7++){var _0x133c63=events[_0x4645a7];var _0x42198a=createListener(_0x248c('0x6')+_0x133c63,_0x50ecd2);ChatInternalMessageEvents['on'](_0x133c63,_0x42198a);}};
\ No newline at end of file
+var _0x2e7e=['update','emit','register','length','./chatInternalMessage.events','save'];(function(_0x172298,_0x542449){var _0x44856d=function(_0xa648ba){while(--_0xa648ba){_0x172298['push'](_0x172298['shift']());}};_0x44856d(++_0x542449);}(_0x2e7e,0x11e));var _0xe2e7=function(_0x2436d0,_0x354b64){_0x2436d0=_0x2436d0-0x0;var _0x47562b=_0x2e7e[_0x2436d0];return _0x47562b;};'use strict';var ChatInternalMessageEvents=require(_0xe2e7('0x0'));var events=[_0xe2e7('0x1'),'remove',_0xe2e7('0x2')];function createListener(_0x3aec20,_0x40b0a2){return function(_0x53c95c){_0x40b0a2[_0xe2e7('0x3')](_0x3aec20,_0x53c95c);};}function removeListener(_0x5836d5,_0x14eeff){return function(){ChatInternalMessageEvents['removeListener'](_0x5836d5,_0x14eeff);};}exports[_0xe2e7('0x4')]=function(_0x383b22){for(var _0x213c86=0x0,_0x1315d4=events[_0xe2e7('0x5')];_0x213c86<_0x1315d4;_0x213c86++){var _0x18e155=events[_0x213c86];var _0x393be6=createListener('chatInternalMessage:'+_0x18e155,_0x383b22);ChatInternalMessageEvents['on'](_0x18e155,_0x393be6);}};
\ No newline at end of file
index 146b506..415c45a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32e5=['index','get','getUsers','/:id','show','post','delete','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated'];(function(_0x23e36d,_0x502fe1){var _0x639868=function(_0x1300bf){while(--_0x1300bf){_0x23e36d['push'](_0x23e36d['shift']());}};_0x639868(++_0x502fe1);}(_0x32e5,0x15c));var _0x532e=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x32e5[_0x2f5ac5];return _0x37c9a8;};'use strict';var multer=require(_0x532e('0x0'));var util=require('util');var path=require(_0x532e('0x1'));var timeout=require(_0x532e('0x2'));var express=require(_0x532e('0x3'));var router=express[_0x532e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x532e('0x5'));var interaction=require(_0x532e('0x6'));var config=require(_0x532e('0x7'));var controller=require('./chatInternalMessage.controller');router['get']('/',auth[_0x532e('0x8')](),controller[_0x532e('0x9')]);router[_0x532e('0xa')]('/describe',auth[_0x532e('0x8')](),controller['describe']);router[_0x532e('0xa')]('/users',auth['isAuthenticated'](),controller[_0x532e('0xb')]);router['get'](_0x532e('0xc'),auth[_0x532e('0x8')](),controller[_0x532e('0xd')]);router[_0x532e('0xe')]('/',auth[_0x532e('0x8')](),controller['create']);router['put'](_0x532e('0xc'),controller['update']);router[_0x532e('0xf')]('/:id',auth[_0x532e('0x8')](),controller['destroy']);module[_0x532e('0x10')]=router;
\ No newline at end of file
+var _0xada1=['/:id','post','create','update','delete','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/users','getUsers'];(function(_0x581d53,_0x4ad997){var _0x56c2d8=function(_0x32350b){while(--_0x32350b){_0x581d53['push'](_0x581d53['shift']());}};_0x56c2d8(++_0x4ad997);}(_0xada1,0xfe));var _0x1ada=function(_0x4ae6ef,_0xc2af80){_0x4ae6ef=_0x4ae6ef-0x0;var _0x3cbb4e=_0xada1[_0x4ae6ef];return _0x3cbb4e;};'use strict';var multer=require(_0x1ada('0x0'));var util=require(_0x1ada('0x1'));var path=require('path');var timeout=require(_0x1ada('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x1ada('0x3'));var auth=require(_0x1ada('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x1ada('0x5'));var controller=require('./chatInternalMessage.controller');router[_0x1ada('0x6')]('/',auth[_0x1ada('0x7')](),controller['index']);router['get'](_0x1ada('0x8'),auth['isAuthenticated'](),controller[_0x1ada('0x9')]);router[_0x1ada('0x6')](_0x1ada('0xa'),auth[_0x1ada('0x7')](),controller[_0x1ada('0xb')]);router[_0x1ada('0x6')](_0x1ada('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x1ada('0xd')]('/',auth['isAuthenticated'](),controller[_0x1ada('0xe')]);router['put'](_0x1ada('0xc'),controller[_0x1ada('0xf')]);router[_0x1ada('0x10')]('/:id',auth[_0x1ada('0x7')](),controller[_0x1ada('0x11')]);module[_0x1ada('0x12')]=router;
\ No newline at end of file
index 78130ed..95a95dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['exports','TEXT','ENUM','out','DATE','STRING'];(function(_0x222ad8,_0x41ef1a){var _0x4bbdde=function(_0x2d6ac2){while(--_0x2d6ac2){_0x222ad8['push'](_0x222ad8['shift']());}};_0x4bbdde(++_0x41ef1a);}(_0x757a,0xde));var _0xa757=function(_0x1c7b69,_0x176d9a){_0x1c7b69=_0x1c7b69-0x0;var _0x25beea=_0x757a[_0x1c7b69];return _0x25beea;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'body':{'type':Sequelize[_0xa757('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xa757('0x2')]('in',_0xa757('0x3')),'defaultValue':_0xa757('0x3'),'allowNull':![]},'readAt':{'type':Sequelize[_0xa757('0x4')]},'providerName':{'type':Sequelize[_0xa757('0x5')]},'providerResponse':{'type':Sequelize[_0xa757('0x1')]}};
\ No newline at end of file
+var _0x9158=['DATE','STRING','sequelize','exports','TEXT','BOOLEAN','ENUM'];(function(_0x4bd06e,_0x593701){var _0x85ebb=function(_0x26a7f2){while(--_0x26a7f2){_0x4bd06e['push'](_0x4bd06e['shift']());}};_0x85ebb(++_0x593701);}(_0x9158,0x16e));var _0x8915=function(_0x5a7761,_0x42e1da){_0x5a7761=_0x5a7761-0x0;var _0xc87e47=_0x9158[_0x5a7761];return _0xc87e47;};'use strict';var Sequelize=require(_0x8915('0x0'));module[_0x8915('0x1')]={'body':{'type':Sequelize[_0x8915('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x8915('0x3')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x8915('0x4')]('in','out'),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x8915('0x5')]},'providerName':{'type':Sequelize[_0x8915('0x6')]},'providerResponse':{'type':Sequelize[_0x8915('0x2')]}};
\ No newline at end of file
index 6228454..8a33be0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x588b=['register','jayson/promise','http','client','request','info','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','ChatMessage,\x20%s,\x20%s','result','catch','sendStatus','status','end','json','offset','limit','undefined','count','apply','reject','save','update','stack','name','index','map','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','ChatMessage','includeAll','include','findAll','then','rows','show','params','rawAttributes','options','find','create','body','destroy','describe','chat','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','ChatInteraction','ChatInteractionId','read1stAt','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','fullname','internal','manual','format','channel','motionChannel','EventManager','acceptmessage','merge','parse','formData','chat-interactions','RejectMessage','User','email','interface','SIP/%s','event','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter'];(function(_0x4ec42,_0x36177b){var _0x385e11=function(_0x44e535){while(--_0x44e535){_0x4ec42['push'](_0x4ec42['shift']());}};_0x385e11(++_0x36177b);}(_0x588b,0xf0));var _0xb588=function(_0x273705,_0x4a4942){_0x273705=_0x273705-0x0;var _0x21c81e=_0x588b[_0x273705];return _0x21c81e;};'use strict';var emlformat=require(_0xb588('0x0'));var rimraf=require(_0xb588('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb588('0x2'));var rp=require(_0xb588('0x3'));var moment=require(_0xb588('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb588('0x5'));var util=require('util');var path=require('path');var sox=require(_0xb588('0x6'));var csv=require('to-csv');var ejs=require(_0xb588('0x7'));var fs=require('fs');var fs_extra=require(_0xb588('0x8'));var _=require(_0xb588('0x9'));var squel=require(_0xb588('0xa'));var crypto=require(_0xb588('0xb'));var jsforce=require(_0xb588('0xc'));var deskjs=require(_0xb588('0xd'));var toCsv=require(_0xb588('0xe'));var querystring=require(_0xb588('0xf'));var Papa=require(_0xb588('0x10'));var Redis=require('ioredis');var authService=require(_0xb588('0x11'));var qs=require(_0xb588('0x12'));var as=require(_0xb588('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb588('0x14'))(_0xb588('0x15'));var utils=require(_0xb588('0x16'));var config=require(_0xb588('0x17'));var licenseUtil=require(_0xb588('0x18'));var db=require(_0xb588('0x19'))['db'];config[_0xb588('0x1a')]=_[_0xb588('0x1b')](config[_0xb588('0x1a')],{'host':_0xb588('0x1c'),'port':0x18eb});var socket=require(_0xb588('0x1d'))(new Redis(config[_0xb588('0x1a')]));require('./chatMessage.socket')[_0xb588('0x1e')](socket);var jayson=require(_0xb588('0x1f'));var client=jayson['client'][_0xb588('0x20')]({'port':0x232c});var client9002=jayson[_0xb588('0x21')][_0xb588('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x5598b8,_0x3e562d,_0x402028,_0x1beb36){return new BPromise(function(_0x3e1d65,_0x429c89){var _0x4901b6=_0x1beb36||client;return _0x4901b6[_0xb588('0x22')](_0x5598b8,_0x402028)['then'](function(_0x445e3c){logger[_0xb588('0x23')]('ChatMessage,\x20%s,\x20%s',_0x3e562d,_0xb588('0x24'));logger[_0xb588('0x25')](_0xb588('0x26'),_0x3e562d,_0xb588('0x24'),JSON[_0xb588('0x27')](_0x445e3c));if(_0x445e3c['error']){if(_0x445e3c['error'][_0xb588('0x28')]===0x1f4){logger[_0xb588('0x29')]('ChatMessage,\x20%s,\x20%s',_0x3e562d,_0x445e3c['error'][_0xb588('0x2a')]);return _0x429c89(_0x445e3c[_0xb588('0x29')]['message']);}logger[_0xb588('0x29')]('ChatMessage,\x20%s,\x20%s',_0x3e562d,_0x445e3c[_0xb588('0x29')]['message']);return _0x3e1d65(_0x445e3c['error'][_0xb588('0x2a')]);}else{logger[_0xb588('0x23')](_0xb588('0x2b'),_0x3e562d,_0xb588('0x24'));_0x3e1d65(_0x445e3c[_0xb588('0x2c')][_0xb588('0x2a')]);}})[_0xb588('0x2d')](function(_0x5940e1){logger[_0xb588('0x29')](_0xb588('0x2b'),_0x3e562d,_0x5940e1);_0x429c89(_0x5940e1);});});}function respondWithStatusCode(_0x4be9d5,_0x501771){_0x501771=_0x501771||0xcc;return function(_0xe5af67){if(_0xe5af67){return _0x4be9d5[_0xb588('0x2e')](_0x501771);}return _0x4be9d5[_0xb588('0x2f')](_0x501771)[_0xb588('0x30')]();};}function respondWithResult(_0x2253f1,_0x35d4a7){_0x35d4a7=_0x35d4a7||0xc8;return function(_0x42b86f){if(_0x42b86f){return _0x2253f1[_0xb588('0x2f')](_0x35d4a7)[_0xb588('0x31')](_0x42b86f);}};}function respondWithFilteredResult(_0x2a75b8,_0x407479){return function(_0x4cbbe6){if(_0x4cbbe6){var _0x334deb=typeof _0x407479[_0xb588('0x32')]==='undefined'&&typeof _0x407479[_0xb588('0x33')]===_0xb588('0x34');var _0x2bca0b=_0x4cbbe6[_0xb588('0x35')];var _0x5ac70f=_0x334deb?0x0:_0x407479['offset'];var _0x118549=_0x334deb?_0x4cbbe6[_0xb588('0x35')]:_0x407479['offset']+_0x407479['limit'];var _0xe73f19;if(_0x118549>=_0x2bca0b){_0x118549=_0x2bca0b;_0xe73f19=0xc8;}else{_0xe73f19=0xce;}_0x2a75b8[_0xb588('0x2f')](_0xe73f19);return _0x2a75b8['set']('Content-Range',_0x5ac70f+'-'+_0x118549+'/'+_0x2bca0b)[_0xb588('0x31')](_0x4cbbe6);}return null;};}function patchUpdates(_0xa991fc){return function(_0x2d180b){try{jsonpatch[_0xb588('0x36')](_0x2d180b,_0xa991fc,!![]);}catch(_0x2ce57a){return BPromise[_0xb588('0x37')](_0x2ce57a);}return _0x2d180b[_0xb588('0x38')]();};}function saveUpdates(_0x1c2efb,_0x1b7ca3){return function(_0x29af3d){if(_0x29af3d){return _0x29af3d[_0xb588('0x39')](_0x1c2efb)['then'](function(_0x378a33){return _0x378a33;});}return null;};}function removeEntity(_0x278b63,_0x350266){return function(_0x173fae){if(_0x173fae){return _0x173fae['destroy']()['then'](function(){_0x278b63[_0xb588('0x2f')](0xcc)[_0xb588('0x30')]();});}};}function handleEntityNotFound(_0x53dd25,_0x423ca5){return function(_0x4d7181){if(!_0x4d7181){_0x53dd25[_0xb588('0x2e')](0x194);}return _0x4d7181;};}function handleError(_0x228bc9,_0x406a26){_0x406a26=_0x406a26||0x1f4;return function(_0x4c1b39){logger[_0xb588('0x29')](_0x4c1b39[_0xb588('0x3a')]);if(_0x4c1b39[_0xb588('0x3b')]){delete _0x4c1b39['name'];}_0x228bc9['status'](_0x406a26)['send'](_0x4c1b39);};}exports[_0xb588('0x3c')]=function(_0x563aee,_0x4a8e75){var _0x406a0b={},_0x352a27={},_0x4276c6={'count':0x0,'rows':[]};var _0x4b3bf1=_[_0xb588('0x3d')](db['ChatMessage']['rawAttributes'],function(_0x43886a){return{'name':_0x43886a['fieldName'],'type':_0x43886a[_0xb588('0x3e')][_0xb588('0x3f')]};});_0x352a27['model']=_[_0xb588('0x3d')](_0x4b3bf1,_0xb588('0x3b'));_0x352a27[_0xb588('0x40')]=_[_0xb588('0x41')](_0x563aee[_0xb588('0x40')]);_0x352a27[_0xb588('0x42')]=_[_0xb588('0x43')](_0x352a27[_0xb588('0x44')],_0x352a27[_0xb588('0x40')]);_0x406a0b['attributes']=_[_0xb588('0x43')](_0x352a27['model'],qs[_0xb588('0x45')](_0x563aee['query']['fields']));_0x406a0b[_0xb588('0x46')]=_0x406a0b[_0xb588('0x46')][_0xb588('0x47')]?_0x406a0b[_0xb588('0x46')]:_0x352a27[_0xb588('0x44')];if(!_0x563aee['query'][_0xb588('0x48')](_0xb588('0x49'))){_0x406a0b[_0xb588('0x33')]=qs[_0xb588('0x33')](_0x563aee['query']['limit']);_0x406a0b[_0xb588('0x32')]=qs[_0xb588('0x32')](_0x563aee[_0xb588('0x40')][_0xb588('0x32')]);}_0x406a0b[_0xb588('0x4a')]=qs[_0xb588('0x4b')](_0x563aee[_0xb588('0x40')]['sort']);_0x406a0b[_0xb588('0x4c')]=qs['filters'](_['pick'](_0x563aee[_0xb588('0x40')],_0x352a27[_0xb588('0x42')]),_0x4b3bf1);if(_0x563aee[_0xb588('0x40')][_0xb588('0x4d')]){_0x406a0b[_0xb588('0x4c')]=_['merge'](_0x406a0b[_0xb588('0x4c')],{'$or':_[_0xb588('0x3d')](_0x4b3bf1,function(_0x3fed39){if(_0x3fed39[_0xb588('0x3e')]!==_0xb588('0x4e')){var _0x175742={};_0x175742[_0x3fed39[_0xb588('0x3b')]]={'$like':'%'+_0x563aee[_0xb588('0x40')][_0xb588('0x4d')]+'%'};return _0x175742;}})});}_0x406a0b=_['merge']({},_0x406a0b,_0x563aee['options']);var _0x586702={'where':_0x406a0b[_0xb588('0x4c')]};return db[_0xb588('0x4f')][_0xb588('0x35')](_0x586702)['then'](function(_0x395fba){_0x4276c6[_0xb588('0x35')]=_0x395fba;if(_0x563aee[_0xb588('0x40')][_0xb588('0x50')]){_0x406a0b[_0xb588('0x51')]=[{'all':!![]}];}return db['ChatMessage'][_0xb588('0x52')](_0x406a0b);})[_0xb588('0x53')](function(_0x4cd378){_0x4276c6[_0xb588('0x54')]=_0x4cd378;return _0x4276c6;})[_0xb588('0x53')](respondWithFilteredResult(_0x4a8e75,_0x406a0b))[_0xb588('0x2d')](handleError(_0x4a8e75,null));};exports[_0xb588('0x55')]=function(_0x59eff9,_0x28ed3d){var _0x32deb3={'raw':!![],'where':{'id':_0x59eff9[_0xb588('0x56')]['id']}},_0x2d1cdb={};_0x2d1cdb[_0xb588('0x44')]=_[_0xb588('0x41')](db[_0xb588('0x4f')][_0xb588('0x57')]);_0x2d1cdb[_0xb588('0x40')]=_[_0xb588('0x41')](_0x59eff9[_0xb588('0x40')]);_0x2d1cdb['filters']=_[_0xb588('0x43')](_0x2d1cdb[_0xb588('0x44')],_0x2d1cdb[_0xb588('0x40')]);_0x32deb3[_0xb588('0x46')]=_['intersection'](_0x2d1cdb[_0xb588('0x44')],qs[_0xb588('0x45')](_0x59eff9[_0xb588('0x40')][_0xb588('0x45')]));_0x32deb3[_0xb588('0x46')]=_0x32deb3['attributes'][_0xb588('0x47')]?_0x32deb3[_0xb588('0x46')]:_0x2d1cdb[_0xb588('0x44')];if(_0x59eff9[_0xb588('0x40')]['includeAll']){_0x32deb3['include']=[{'all':!![]}];}_0x32deb3=_['merge']({},_0x32deb3,_0x59eff9[_0xb588('0x58')]);return db[_0xb588('0x4f')][_0xb588('0x59')](_0x32deb3)['then'](handleEntityNotFound(_0x28ed3d,null))['then'](respondWithResult(_0x28ed3d,null))[_0xb588('0x2d')](handleError(_0x28ed3d,null));};exports['create']=function(_0xb77fe,_0x536b32){return db[_0xb588('0x4f')][_0xb588('0x5a')](_0xb77fe[_0xb588('0x5b')],{})['then'](respondWithResult(_0x536b32,0xc9))['catch'](handleError(_0x536b32,null));};exports[_0xb588('0x39')]=function(_0x1da09f,_0x434e71){if(_0x1da09f[_0xb588('0x5b')]['id']){delete _0x1da09f[_0xb588('0x5b')]['id'];}return db[_0xb588('0x4f')]['find']({'where':{'id':_0x1da09f[_0xb588('0x56')]['id']}})[_0xb588('0x53')](handleEntityNotFound(_0x434e71,null))[_0xb588('0x53')](saveUpdates(_0x1da09f[_0xb588('0x5b')],null))[_0xb588('0x53')](respondWithResult(_0x434e71,null))[_0xb588('0x2d')](handleError(_0x434e71,null));};exports[_0xb588('0x5c')]=function(_0x13159f,_0xf816bc){return db[_0xb588('0x4f')][_0xb588('0x59')]({'where':{'id':_0x13159f[_0xb588('0x56')]['id']}})['then'](handleEntityNotFound(_0xf816bc,null))[_0xb588('0x53')](removeEntity(_0xf816bc,null))[_0xb588('0x2d')](handleError(_0xf816bc,null));};exports[_0xb588('0x5d')]=function(_0x45e0c9,_0x253acf){return db['ChatMessage'][_0xb588('0x5d')]()[_0xb588('0x53')](respondWithResult(_0x253acf,null))['catch'](handleError(_0x253acf,null));};var interaction_log=require(_0xb588('0x14'))('chat-interactions');exports['accept']=function(_0x1b6ce4,_0x27cb18,_0x2b4596){var _0x271a67={'agent':{},'channel':_0xb588('0x5e')};if(_0x1b6ce4[_0xb588('0x5b')]['id']){delete _0x1b6ce4[_0xb588('0x5b')]['id'];}_0x1b6ce4[_0xb588('0x5b')][_0xb588('0x5f')]=!![];_0x1b6ce4['body'][_0xb588('0x60')]=moment()['format'](_0xb588('0x61'));_0x1b6ce4['body'][_0xb588('0x62')]=_0x1b6ce4[_0xb588('0x5b')][_0xb588('0x62')]||_0x1b6ce4[_0xb588('0x63')]['id'];_0x271a67[_0xb588('0x64')]['id']=_0x1b6ce4[_0xb588('0x5b')][_0xb588('0x62')];return db['ChatMessage'][_0xb588('0x59')]({'where':{'id':_0x1b6ce4[_0xb588('0x56')]['id'],'UserId':null}})[_0xb588('0x53')](handleEntityNotFound(_0x27cb18,null))[_0xb588('0x53')](saveUpdates(_0x1b6ce4[_0xb588('0x5b')],null))['then'](function(_0x44f638){if(_0x44f638){_0x271a67['message']=_0x44f638[_0xb588('0x65')]({'plain':!![]});return db[_0xb588('0x66')][_0xb588('0x59')]({'where':{'id':_0x44f638[_0xb588('0x67')]}});}return null;})[_0xb588('0x53')](handleEntityNotFound(_0x27cb18,null))['then'](function(_0x4875b4){if(_0x4875b4){return _0x4875b4[_0xb588('0x39')]({'UserId':_0x1b6ce4[_0xb588('0x5b')][_0xb588('0x62')],'read1stAt':_['isNil'](_0x4875b4[_0xb588('0x68')])?moment()['format'](_0xb588('0x61')):undefined});}return null;})[_0xb588('0x53')](function(_0xb62bdd){if(_0xb62bdd){_0x271a67['interaction']=_0xb62bdd[_0xb588('0x65')]({'plain':!![]});interaction_log[_0xb588('0x23')](_0xb588('0x69'),_0x1b6ce4['user']['id'],_0x1b6ce4[_0xb588('0x63')][_0xb588('0x3b')],_0x1b6ce4[_0xb588('0x63')][_0xb588('0x6a')],_0x271a67[_0xb588('0x6b')]['id'],_0x1b6ce4[_0xb588('0x5b')]?JSON[_0xb588('0x27')](_0x1b6ce4[_0xb588('0x5b')]):_0xb588('0x6c'));return respondWithRpcPromise(_0xb588('0x6d'),'acceptMessage',_0x271a67);}return null;})[_0xb588('0x53')](function(_0x2a8b36){var _0x1bdbe3=_0xb588('0x6e')+_0x2a8b36['message'][_0xb588('0x6f')];return db[_0xb588('0x70')][_0xb588('0x40')](_0x1bdbe3,{'type':db[_0xb588('0x71')][_0xb588('0x72')][_0xb588('0x73')],'raw':!![]})[_0xb588('0x53')](function(_0x4dcf6b){return _0x4dcf6b;});})[_0xb588('0x53')](function(_0x368eee){if(_0x368eee){_0x271a67[_0xb588('0x2a')][_0xb588('0x74')]=_0x368eee[0x0];if(!_0x1b6ce4[_0xb588('0x5b')][_0xb588('0x62')])return;return db['User'][_0xb588('0x59')]({'where':{'id':_0x1b6ce4['body'][_0xb588('0x62')],'role':_0xb588('0x64')},'attributes':['id','name',_0xb588('0x75'),'email',_0xb588('0x76')],'raw':!![]});}return null;})[_0xb588('0x53')](function(_0x15b95a){if(!_0x15b95a)return null;_0x271a67['message'][_0xb588('0x64')]=_0x15b95a;return _0x271a67;})[_0xb588('0x53')](function(_0x4873fc){if(_0x4873fc){if(_0x1b6ce4[_0xb588('0x5b')][_0xb588('0x77')]){_0x271a67['message']['interface']=util[_0xb588('0x78')]('SIP/%s',_0x1b6ce4[_0xb588('0x63')]['name']);_0x271a67[_0xb588('0x2a')][_0xb588('0x79')]=_0x271a67[_0xb588('0x79')];_0x271a67[_0xb588('0x2a')][_0xb588('0x7a')]=_0x271a67[_0xb588('0x79')];_0x271a67['message']['event']='accept';return respondWithRpcPromise(_0xb588('0x7b'),_0xb588('0x7b'),{'event':_0xb588('0x7c'),'message':_[_0xb588('0x7d')](_0x271a67['message'],JSON[_0xb588('0x7e')](_0x271a67[_0xb588('0x6b')][_0xb588('0x7f')]))},client9002)[_0xb588('0x53')](function(){return _0x271a67;});}return _0x271a67;}return null;})['then'](respondWithResult(_0x27cb18,null))[_0xb588('0x2d')](handleError(_0x27cb18,null));};var interaction_log=require('../../config/logger')(_0xb588('0x80'));exports[_0xb588('0x37')]=function(_0x2b0b76,_0x5979ff,_0x3d8aa0){var _0x2fc839={'agent':{},'channel':_0xb588('0x5e')};if(_0x2b0b76[_0xb588('0x5b')]['id']){delete _0x2b0b76['body']['id'];}_0x2b0b76['body'][_0xb588('0x62')]=_0x2b0b76[_0xb588('0x5b')][_0xb588('0x62')]||_0x2b0b76[_0xb588('0x63')]['id'];_0x2fc839['agent']['id']=_0x2b0b76[_0xb588('0x5b')][_0xb588('0x62')];return db[_0xb588('0x4f')][_0xb588('0x59')]({'where':{'id':_0x2b0b76[_0xb588('0x56')]['id'],'UserId':null}})[_0xb588('0x53')](handleEntityNotFound(_0x5979ff,null))['then'](function(_0xe83d8a){if(_0xe83d8a){_0x2fc839[_0xb588('0x2a')]=_0xe83d8a[_0xb588('0x65')]({'plain':!![]});return db[_0xb588('0x66')][_0xb588('0x59')]({'where':{'id':_0xe83d8a[_0xb588('0x67')]}});}return null;})[_0xb588('0x53')](handleEntityNotFound(_0x5979ff,null))['then'](function(_0x44ba07){if(_0x44ba07){_0x2fc839[_0xb588('0x6b')]=_0x44ba07['get']({'plain':!![]});interaction_log[_0xb588('0x23')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2b0b76['user']['id'],_0x2b0b76[_0xb588('0x63')][_0xb588('0x3b')],_0x2b0b76[_0xb588('0x63')]['role'],_0x2fc839[_0xb588('0x6b')]['id'],_0x2b0b76[_0xb588('0x5b')]?JSON[_0xb588('0x27')](_0x2b0b76['body']):_0xb588('0x6c'));return respondWithRpcPromise(_0xb588('0x81'),'rejectMessage',_0x2fc839);}return null;})[_0xb588('0x53')](function(_0x1b196f){var _0x1995e7=_0xb588('0x6e')+_0x1b196f[_0xb588('0x2a')][_0xb588('0x6f')];return db[_0xb588('0x70')][_0xb588('0x40')](_0x1995e7,{'type':db['Sequelize']['QueryTypes'][_0xb588('0x73')],'raw':!![]})['then'](function(_0x3c39ca){return _0x3c39ca;});})[_0xb588('0x53')](function(_0x423542){if(_0x423542){_0x2fc839[_0xb588('0x2a')][_0xb588('0x74')]=_0x423542[0x0];if(!_0x2b0b76[_0xb588('0x5b')][_0xb588('0x62')])return;return db[_0xb588('0x82')][_0xb588('0x59')]({'where':{'id':_0x2b0b76['body'][_0xb588('0x62')],'role':_0xb588('0x64')},'attributes':['id',_0xb588('0x3b'),'fullname',_0xb588('0x83'),_0xb588('0x76')],'raw':!![]});}return null;})[_0xb588('0x53')](function(_0x5430ba){if(!_0x5430ba)return null;_0x2fc839[_0xb588('0x2a')]['agent']=_0x5430ba;return _0x2fc839;})['then'](function(_0x3085e8){if(_0x3085e8){_0x3085e8[_0xb588('0x2a')][_0xb588('0x84')]=util[_0xb588('0x78')](_0xb588('0x85'),_0x2b0b76['user']['name']);_0x3085e8[_0xb588('0x2a')][_0xb588('0x79')]=_0x2fc839[_0xb588('0x79')];_0x3085e8[_0xb588('0x2a')][_0xb588('0x7a')]=_0x2fc839[_0xb588('0x79')];_0x3085e8['message'][_0xb588('0x86')]=_0xb588('0x37');respondWithRpcPromise(_0xb588('0x7b'),_0xb588('0x7b'),{'event':'rejectmessage','message':_[_0xb588('0x7d')](_0x2fc839['message'],JSON[_0xb588('0x7e')](_0x2fc839[_0xb588('0x6b')][_0xb588('0x7f')]))},client9002);return _0x2fc839;}return null;})[_0xb588('0x53')](respondWithResult(_0x5979ff,null))[_0xb588('0x2d')](handleError(_0x5979ff,null));};
\ No newline at end of file
+var _0xc8e9=['parse','formData','agent','null','ContactId','SELECT','User','fullname','EventManager','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','client','http','request','then','info','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatMessage,\x20%s,\x20%s','message','result','sendStatus','end','json','offset','undefined','count','status','set','Content-Range','reject','update','destroy','stack','name','index','map','keys','query','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','limit','sort','pick','filter','where','type','VIRTUAL','merge','options','ChatMessage','includeAll','include','findAll','rows','catch','show','params','rawAttributes','length','find','create','body','describe','chat-interactions','accept','chat','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','user','UserId','get','ChatInteraction','isNil','read1stAt','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','QueryTypes','contact','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','acceptmessage'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0xc8e9,0x116));var _0x9c8e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc8e9[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x9c8e('0x0'));var rimraf=require(_0x9c8e('0x1'));var zipdir=require(_0x9c8e('0x2'));var jsonpatch=require(_0x9c8e('0x3'));var rp=require(_0x9c8e('0x4'));var moment=require(_0x9c8e('0x5'));var BPromise=require(_0x9c8e('0x6'));var Mustache=require('mustache');var util=require(_0x9c8e('0x7'));var path=require(_0x9c8e('0x8'));var sox=require(_0x9c8e('0x9'));var csv=require(_0x9c8e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9c8e('0xb'));var _=require(_0x9c8e('0xc'));var squel=require(_0x9c8e('0xd'));var crypto=require(_0x9c8e('0xe'));var jsforce=require(_0x9c8e('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x9c8e('0xa'));var querystring=require(_0x9c8e('0x10'));var Papa=require(_0x9c8e('0x11'));var Redis=require(_0x9c8e('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x9c8e('0x13'));var as=require(_0x9c8e('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9c8e('0x15'))(_0x9c8e('0x16'));var utils=require(_0x9c8e('0x17'));var config=require(_0x9c8e('0x18'));var licenseUtil=require(_0x9c8e('0x19'));var db=require(_0x9c8e('0x1a'))['db'];config[_0x9c8e('0x1b')]=_[_0x9c8e('0x1c')](config['redis'],{'host':_0x9c8e('0x1d'),'port':0x18eb});var socket=require(_0x9c8e('0x1e'))(new Redis(config['redis']));require('./chatMessage.socket')[_0x9c8e('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0x9c8e('0x20')]['http']({'port':0x232c});var client9002=jayson[_0x9c8e('0x20')][_0x9c8e('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x2d3e62,_0x1790a3,_0x34b92f,_0x4588a0){return new BPromise(function(_0x4aa0d2,_0x49b5b3){var _0x4c23ac=_0x4588a0||client;return _0x4c23ac[_0x9c8e('0x22')](_0x2d3e62,_0x34b92f)[_0x9c8e('0x23')](function(_0x443ee1){logger[_0x9c8e('0x24')]('ChatMessage,\x20%s,\x20%s',_0x1790a3,_0x9c8e('0x25'));logger[_0x9c8e('0x26')](_0x9c8e('0x27'),_0x1790a3,_0x9c8e('0x25'),JSON[_0x9c8e('0x28')](_0x443ee1));if(_0x443ee1['error']){if(_0x443ee1[_0x9c8e('0x29')][_0x9c8e('0x2a')]===0x1f4){logger['error'](_0x9c8e('0x2b'),_0x1790a3,_0x443ee1[_0x9c8e('0x29')]['message']);return _0x49b5b3(_0x443ee1[_0x9c8e('0x29')][_0x9c8e('0x2c')]);}logger[_0x9c8e('0x29')](_0x9c8e('0x2b'),_0x1790a3,_0x443ee1[_0x9c8e('0x29')][_0x9c8e('0x2c')]);return _0x4aa0d2(_0x443ee1[_0x9c8e('0x29')][_0x9c8e('0x2c')]);}else{logger[_0x9c8e('0x24')](_0x9c8e('0x2b'),_0x1790a3,'request\x20sent');_0x4aa0d2(_0x443ee1[_0x9c8e('0x2d')][_0x9c8e('0x2c')]);}})['catch'](function(_0x5ebb63){logger[_0x9c8e('0x29')](_0x9c8e('0x2b'),_0x1790a3,_0x5ebb63);_0x49b5b3(_0x5ebb63);});});}function respondWithStatusCode(_0x2f3696,_0x37338d){_0x37338d=_0x37338d||0xcc;return function(_0x8414da){if(_0x8414da){return _0x2f3696[_0x9c8e('0x2e')](_0x37338d);}return _0x2f3696['status'](_0x37338d)[_0x9c8e('0x2f')]();};}function respondWithResult(_0x4f2d41,_0x5ac184){_0x5ac184=_0x5ac184||0xc8;return function(_0x3553d6){if(_0x3553d6){return _0x4f2d41['status'](_0x5ac184)[_0x9c8e('0x30')](_0x3553d6);}};}function respondWithFilteredResult(_0x419e04,_0x43a86e){return function(_0x4be255){if(_0x4be255){var _0xe444ac=typeof _0x43a86e[_0x9c8e('0x31')]==='undefined'&&typeof _0x43a86e['limit']===_0x9c8e('0x32');var _0x4bd3=_0x4be255['count'];var _0x496b53=_0xe444ac?0x0:_0x43a86e[_0x9c8e('0x31')];var _0x17b07a=_0xe444ac?_0x4be255[_0x9c8e('0x33')]:_0x43a86e['offset']+_0x43a86e['limit'];var _0x1c6902;if(_0x17b07a>=_0x4bd3){_0x17b07a=_0x4bd3;_0x1c6902=0xc8;}else{_0x1c6902=0xce;}_0x419e04[_0x9c8e('0x34')](_0x1c6902);return _0x419e04[_0x9c8e('0x35')](_0x9c8e('0x36'),_0x496b53+'-'+_0x17b07a+'/'+_0x4bd3)[_0x9c8e('0x30')](_0x4be255);}return null;};}function patchUpdates(_0x2a5da2){return function(_0x56b163){try{jsonpatch['apply'](_0x56b163,_0x2a5da2,!![]);}catch(_0x1bd940){return BPromise[_0x9c8e('0x37')](_0x1bd940);}return _0x56b163['save']();};}function saveUpdates(_0x1a753f,_0x5fc515){return function(_0x196020){if(_0x196020){return _0x196020[_0x9c8e('0x38')](_0x1a753f)[_0x9c8e('0x23')](function(_0x4c6a6c){return _0x4c6a6c;});}return null;};}function removeEntity(_0x257fd3,_0x372fc4){return function(_0x26ebbe){if(_0x26ebbe){return _0x26ebbe[_0x9c8e('0x39')]()['then'](function(){_0x257fd3[_0x9c8e('0x34')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4fc037,_0x562883){return function(_0x1d2f7f){if(!_0x1d2f7f){_0x4fc037[_0x9c8e('0x2e')](0x194);}return _0x1d2f7f;};}function handleError(_0x2c4488,_0x1abb16){_0x1abb16=_0x1abb16||0x1f4;return function(_0x5b773a){logger[_0x9c8e('0x29')](_0x5b773a[_0x9c8e('0x3a')]);if(_0x5b773a[_0x9c8e('0x3b')]){delete _0x5b773a['name'];}_0x2c4488[_0x9c8e('0x34')](_0x1abb16)['send'](_0x5b773a);};}exports[_0x9c8e('0x3c')]=function(_0x6d404e,_0x5a4fa7){var _0x3e55ff={},_0x504da4={},_0x428841={'count':0x0,'rows':[]};var _0x163015=_[_0x9c8e('0x3d')](db['ChatMessage']['rawAttributes'],function(_0x30ad80){return{'name':_0x30ad80['fieldName'],'type':_0x30ad80['type']['key']};});_0x504da4['model']=_[_0x9c8e('0x3d')](_0x163015,_0x9c8e('0x3b'));_0x504da4['query']=_[_0x9c8e('0x3e')](_0x6d404e[_0x9c8e('0x3f')]);_0x504da4[_0x9c8e('0x40')]=_[_0x9c8e('0x41')](_0x504da4['model'],_0x504da4[_0x9c8e('0x3f')]);_0x3e55ff[_0x9c8e('0x42')]=_[_0x9c8e('0x41')](_0x504da4[_0x9c8e('0x43')],qs[_0x9c8e('0x44')](_0x6d404e[_0x9c8e('0x3f')][_0x9c8e('0x44')]));_0x3e55ff[_0x9c8e('0x42')]=_0x3e55ff[_0x9c8e('0x42')]['length']?_0x3e55ff[_0x9c8e('0x42')]:_0x504da4[_0x9c8e('0x43')];if(!_0x6d404e[_0x9c8e('0x3f')][_0x9c8e('0x45')](_0x9c8e('0x46'))){_0x3e55ff[_0x9c8e('0x47')]=qs[_0x9c8e('0x47')](_0x6d404e[_0x9c8e('0x3f')][_0x9c8e('0x47')]);_0x3e55ff[_0x9c8e('0x31')]=qs[_0x9c8e('0x31')](_0x6d404e['query'][_0x9c8e('0x31')]);}_0x3e55ff['order']=qs['sort'](_0x6d404e['query'][_0x9c8e('0x48')]);_0x3e55ff['where']=qs[_0x9c8e('0x40')](_[_0x9c8e('0x49')](_0x6d404e['query'],_0x504da4[_0x9c8e('0x40')]),_0x163015);if(_0x6d404e[_0x9c8e('0x3f')][_0x9c8e('0x4a')]){_0x3e55ff[_0x9c8e('0x4b')]=_['merge'](_0x3e55ff['where'],{'$or':_['map'](_0x163015,function(_0x3ef91d){if(_0x3ef91d[_0x9c8e('0x4c')]!==_0x9c8e('0x4d')){var _0x487e6b={};_0x487e6b[_0x3ef91d[_0x9c8e('0x3b')]]={'$like':'%'+_0x6d404e[_0x9c8e('0x3f')][_0x9c8e('0x4a')]+'%'};return _0x487e6b;}})});}_0x3e55ff=_[_0x9c8e('0x4e')]({},_0x3e55ff,_0x6d404e[_0x9c8e('0x4f')]);var _0x3767ea={'where':_0x3e55ff[_0x9c8e('0x4b')]};return db[_0x9c8e('0x50')][_0x9c8e('0x33')](_0x3767ea)[_0x9c8e('0x23')](function(_0x6ac951){_0x428841[_0x9c8e('0x33')]=_0x6ac951;if(_0x6d404e[_0x9c8e('0x3f')][_0x9c8e('0x51')]){_0x3e55ff[_0x9c8e('0x52')]=[{'all':!![]}];}return db[_0x9c8e('0x50')][_0x9c8e('0x53')](_0x3e55ff);})[_0x9c8e('0x23')](function(_0x2610c9){_0x428841[_0x9c8e('0x54')]=_0x2610c9;return _0x428841;})[_0x9c8e('0x23')](respondWithFilteredResult(_0x5a4fa7,_0x3e55ff))[_0x9c8e('0x55')](handleError(_0x5a4fa7,null));};exports[_0x9c8e('0x56')]=function(_0xc6811e,_0x3beb46){var _0x29fe0c={'raw':!![],'where':{'id':_0xc6811e[_0x9c8e('0x57')]['id']}},_0x261748={};_0x261748[_0x9c8e('0x43')]=_[_0x9c8e('0x3e')](db['ChatMessage'][_0x9c8e('0x58')]);_0x261748[_0x9c8e('0x3f')]=_[_0x9c8e('0x3e')](_0xc6811e[_0x9c8e('0x3f')]);_0x261748[_0x9c8e('0x40')]=_[_0x9c8e('0x41')](_0x261748[_0x9c8e('0x43')],_0x261748[_0x9c8e('0x3f')]);_0x29fe0c[_0x9c8e('0x42')]=_[_0x9c8e('0x41')](_0x261748['model'],qs[_0x9c8e('0x44')](_0xc6811e['query'][_0x9c8e('0x44')]));_0x29fe0c[_0x9c8e('0x42')]=_0x29fe0c['attributes'][_0x9c8e('0x59')]?_0x29fe0c['attributes']:_0x261748[_0x9c8e('0x43')];if(_0xc6811e[_0x9c8e('0x3f')][_0x9c8e('0x51')]){_0x29fe0c['include']=[{'all':!![]}];}_0x29fe0c=_[_0x9c8e('0x4e')]({},_0x29fe0c,_0xc6811e[_0x9c8e('0x4f')]);return db[_0x9c8e('0x50')][_0x9c8e('0x5a')](_0x29fe0c)[_0x9c8e('0x23')](handleEntityNotFound(_0x3beb46,null))[_0x9c8e('0x23')](respondWithResult(_0x3beb46,null))[_0x9c8e('0x55')](handleError(_0x3beb46,null));};exports['create']=function(_0x4cc43c,_0x13c5a0){return db['ChatMessage'][_0x9c8e('0x5b')](_0x4cc43c[_0x9c8e('0x5c')],{})[_0x9c8e('0x23')](respondWithResult(_0x13c5a0,0xc9))[_0x9c8e('0x55')](handleError(_0x13c5a0,null));};exports['update']=function(_0x2aa4a7,_0x3ac91c){if(_0x2aa4a7[_0x9c8e('0x5c')]['id']){delete _0x2aa4a7[_0x9c8e('0x5c')]['id'];}return db['ChatMessage'][_0x9c8e('0x5a')]({'where':{'id':_0x2aa4a7[_0x9c8e('0x57')]['id']}})[_0x9c8e('0x23')](handleEntityNotFound(_0x3ac91c,null))[_0x9c8e('0x23')](saveUpdates(_0x2aa4a7[_0x9c8e('0x5c')],null))[_0x9c8e('0x23')](respondWithResult(_0x3ac91c,null))[_0x9c8e('0x55')](handleError(_0x3ac91c,null));};exports[_0x9c8e('0x39')]=function(_0x2f791f,_0x20ad41){return db['ChatMessage']['find']({'where':{'id':_0x2f791f[_0x9c8e('0x57')]['id']}})[_0x9c8e('0x23')](handleEntityNotFound(_0x20ad41,null))['then'](removeEntity(_0x20ad41,null))[_0x9c8e('0x55')](handleError(_0x20ad41,null));};exports[_0x9c8e('0x5d')]=function(_0x308004,_0x2387d3){return db['ChatMessage']['describe']()[_0x9c8e('0x23')](respondWithResult(_0x2387d3,null))[_0x9c8e('0x55')](handleError(_0x2387d3,null));};var interaction_log=require(_0x9c8e('0x15'))(_0x9c8e('0x5e'));exports[_0x9c8e('0x5f')]=function(_0xf008a6,_0x11f9c3,_0x5a8068){var _0x2828d3={'agent':{},'channel':_0x9c8e('0x60')};if(_0xf008a6[_0x9c8e('0x5c')]['id']){delete _0xf008a6[_0x9c8e('0x5c')]['id'];}_0xf008a6[_0x9c8e('0x5c')][_0x9c8e('0x61')]=!![];_0xf008a6[_0x9c8e('0x5c')][_0x9c8e('0x62')]=moment()[_0x9c8e('0x63')](_0x9c8e('0x64'));_0xf008a6[_0x9c8e('0x5c')]['UserId']=_0xf008a6[_0x9c8e('0x5c')]['UserId']||_0xf008a6[_0x9c8e('0x65')]['id'];_0x2828d3['agent']['id']=_0xf008a6[_0x9c8e('0x5c')][_0x9c8e('0x66')];return db['ChatMessage'][_0x9c8e('0x5a')]({'where':{'id':_0xf008a6['params']['id'],'UserId':null}})[_0x9c8e('0x23')](handleEntityNotFound(_0x11f9c3,null))[_0x9c8e('0x23')](saveUpdates(_0xf008a6['body'],null))[_0x9c8e('0x23')](function(_0x3f5829){if(_0x3f5829){_0x2828d3[_0x9c8e('0x2c')]=_0x3f5829[_0x9c8e('0x67')]({'plain':!![]});return db[_0x9c8e('0x68')][_0x9c8e('0x5a')]({'where':{'id':_0x3f5829['ChatInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x11f9c3,null))[_0x9c8e('0x23')](function(_0xe6d1a6){if(_0xe6d1a6){return _0xe6d1a6[_0x9c8e('0x38')]({'UserId':_0xf008a6[_0x9c8e('0x5c')]['UserId'],'read1stAt':_[_0x9c8e('0x69')](_0xe6d1a6[_0x9c8e('0x6a')])?moment()[_0x9c8e('0x63')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0xe8d2ae){if(_0xe8d2ae){_0x2828d3['interaction']=_0xe8d2ae['get']({'plain':!![]});interaction_log[_0x9c8e('0x24')](_0x9c8e('0x6b'),_0xf008a6[_0x9c8e('0x65')]['id'],_0xf008a6[_0x9c8e('0x65')]['name'],_0xf008a6[_0x9c8e('0x65')][_0x9c8e('0x6c')],_0x2828d3[_0x9c8e('0x6d')]['id'],_0xf008a6[_0x9c8e('0x5c')]?JSON[_0x9c8e('0x28')](_0xf008a6[_0x9c8e('0x5c')]):'null');return respondWithRpcPromise('AcceptMessage',_0x9c8e('0x6e'),_0x2828d3);}return null;})[_0x9c8e('0x23')](function(_0x444cc4){var _0xb0bee3=_0x9c8e('0x6f')+_0x444cc4[_0x9c8e('0x2c')]['ContactId'];return db['sequelize'][_0x9c8e('0x3f')](_0xb0bee3,{'type':db[_0x9c8e('0x70')][_0x9c8e('0x71')]['SELECT'],'raw':!![]})['then'](function(_0x398e02){return _0x398e02;});})['then'](function(_0x39453b){if(_0x39453b){_0x2828d3[_0x9c8e('0x2c')][_0x9c8e('0x72')]=_0x39453b[0x0];if(!_0xf008a6[_0x9c8e('0x5c')][_0x9c8e('0x66')])return;return db['User'][_0x9c8e('0x5a')]({'where':{'id':_0xf008a6[_0x9c8e('0x5c')][_0x9c8e('0x66')],'role':'agent'},'attributes':['id',_0x9c8e('0x3b'),'fullname',_0x9c8e('0x73'),_0x9c8e('0x74')],'raw':!![]});}return null;})[_0x9c8e('0x23')](function(_0x3e9c73){if(!_0x3e9c73)return null;_0x2828d3[_0x9c8e('0x2c')]['agent']=_0x3e9c73;return _0x2828d3;})[_0x9c8e('0x23')](function(_0x5c559e){if(_0x5c559e){if(_0xf008a6[_0x9c8e('0x5c')][_0x9c8e('0x75')]){_0x2828d3['message'][_0x9c8e('0x76')]=util[_0x9c8e('0x63')](_0x9c8e('0x77'),_0xf008a6[_0x9c8e('0x65')][_0x9c8e('0x3b')]);_0x2828d3[_0x9c8e('0x2c')][_0x9c8e('0x78')]=_0x2828d3[_0x9c8e('0x78')];_0x2828d3[_0x9c8e('0x2c')][_0x9c8e('0x79')]=_0x2828d3['channel'];_0x2828d3[_0x9c8e('0x2c')][_0x9c8e('0x7a')]=_0x9c8e('0x5f');return respondWithRpcPromise('EventManager','EventManager',{'event':_0x9c8e('0x7b'),'message':_[_0x9c8e('0x4e')](_0x2828d3[_0x9c8e('0x2c')],JSON[_0x9c8e('0x7c')](_0x2828d3[_0x9c8e('0x6d')][_0x9c8e('0x7d')]))},client9002)[_0x9c8e('0x23')](function(){return _0x2828d3;});}return _0x2828d3;}return null;})[_0x9c8e('0x23')](respondWithResult(_0x11f9c3,null))[_0x9c8e('0x55')](handleError(_0x11f9c3,null));};var interaction_log=require('../../config/logger')(_0x9c8e('0x5e'));exports[_0x9c8e('0x37')]=function(_0xa74799,_0xb68aee,_0x212c0f){var _0x946bd0={'agent':{},'channel':'chat'};if(_0xa74799['body']['id']){delete _0xa74799[_0x9c8e('0x5c')]['id'];}_0xa74799[_0x9c8e('0x5c')][_0x9c8e('0x66')]=_0xa74799[_0x9c8e('0x5c')][_0x9c8e('0x66')]||_0xa74799[_0x9c8e('0x65')]['id'];_0x946bd0[_0x9c8e('0x7e')]['id']=_0xa74799['body'][_0x9c8e('0x66')];return db[_0x9c8e('0x50')]['find']({'where':{'id':_0xa74799['params']['id'],'UserId':null}})[_0x9c8e('0x23')](handleEntityNotFound(_0xb68aee,null))[_0x9c8e('0x23')](function(_0x50fa99){if(_0x50fa99){_0x946bd0['message']=_0x50fa99[_0x9c8e('0x67')]({'plain':!![]});return db[_0x9c8e('0x68')][_0x9c8e('0x5a')]({'where':{'id':_0x50fa99['ChatInteractionId']}});}return null;})['then'](handleEntityNotFound(_0xb68aee,null))[_0x9c8e('0x23')](function(_0x448460){if(_0x448460){_0x946bd0['interaction']=_0x448460[_0x9c8e('0x67')]({'plain':!![]});interaction_log[_0x9c8e('0x24')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0xa74799[_0x9c8e('0x65')]['id'],_0xa74799[_0x9c8e('0x65')]['name'],_0xa74799[_0x9c8e('0x65')][_0x9c8e('0x6c')],_0x946bd0[_0x9c8e('0x6d')]['id'],_0xa74799[_0x9c8e('0x5c')]?JSON['stringify'](_0xa74799['body']):_0x9c8e('0x7f'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0x946bd0);}return null;})['then'](function(_0x43d592){var _0xf5d94=_0x9c8e('0x6f')+_0x43d592[_0x9c8e('0x2c')][_0x9c8e('0x80')];return db['sequelize']['query'](_0xf5d94,{'type':db[_0x9c8e('0x70')]['QueryTypes'][_0x9c8e('0x81')],'raw':!![]})['then'](function(_0x5c21ac){return _0x5c21ac;});})[_0x9c8e('0x23')](function(_0x3cf859){if(_0x3cf859){_0x946bd0['message'][_0x9c8e('0x72')]=_0x3cf859[0x0];if(!_0xa74799[_0x9c8e('0x5c')]['UserId'])return;return db[_0x9c8e('0x82')][_0x9c8e('0x5a')]({'where':{'id':_0xa74799[_0x9c8e('0x5c')]['UserId'],'role':'agent'},'attributes':['id',_0x9c8e('0x3b'),_0x9c8e('0x83'),_0x9c8e('0x73'),'internal'],'raw':!![]});}return null;})[_0x9c8e('0x23')](function(_0x3d3fe1){if(!_0x3d3fe1)return null;_0x946bd0[_0x9c8e('0x2c')][_0x9c8e('0x7e')]=_0x3d3fe1;return _0x946bd0;})[_0x9c8e('0x23')](function(_0x183d86){if(_0x183d86){_0x183d86[_0x9c8e('0x2c')][_0x9c8e('0x76')]=util['format'](_0x9c8e('0x77'),_0xa74799[_0x9c8e('0x65')]['name']);_0x183d86[_0x9c8e('0x2c')][_0x9c8e('0x78')]=_0x946bd0[_0x9c8e('0x78')];_0x183d86[_0x9c8e('0x2c')][_0x9c8e('0x79')]=_0x946bd0['channel'];_0x183d86[_0x9c8e('0x2c')]['event']='reject';respondWithRpcPromise(_0x9c8e('0x84'),'EventManager',{'event':_0x9c8e('0x85'),'message':_[_0x9c8e('0x4e')](_0x946bd0[_0x9c8e('0x2c')],JSON['parse'](_0x946bd0['interaction']['formData']))},client9002);return _0x946bd0;}return null;})[_0x9c8e('0x23')](respondWithResult(_0xb68aee,null))[_0x9c8e('0x55')](handleError(_0xb68aee,null));};
\ No newline at end of file
index 64a0250..e2b6e7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f99=['emit','hook','exports','events','../../mysqldb','ChatMessage','save','update','remove'];(function(_0x55a075,_0xc2d761){var _0x5b1d44=function(_0x874762){while(--_0x874762){_0x55a075['push'](_0x55a075['shift']());}};_0x5b1d44(++_0xc2d761);}(_0x2f99,0x17d));var _0x92f9=function(_0xf6268a,_0x4d2a75){_0xf6268a=_0xf6268a-0x0;var _0x479dbd=_0x2f99[_0xf6268a];return _0x479dbd;};'use strict';var EventEmitter=require(_0x92f9('0x0'));var ChatMessage=require(_0x92f9('0x1'))['db'][_0x92f9('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x92f9('0x3'),'afterUpdate':_0x92f9('0x4'),'afterDestroy':_0x92f9('0x5')};function emitEvent(_0x317f38){return function(_0x47bae1,_0x519dd6,_0x593a1d){ChatMessageEvents['emit'](_0x317f38+':'+_0x47bae1['id'],_0x47bae1);ChatMessageEvents[_0x92f9('0x6')](_0x317f38,_0x47bae1);_0x593a1d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage[_0x92f9('0x7')](e,emitEvent(event));}}module[_0x92f9('0x8')]=ChatMessageEvents;
\ No newline at end of file
+var _0xeac8=['setMaxListeners','save','update','emit','hook','exports','events','../../mysqldb','ChatMessage'];(function(_0x531122,_0xbf3079){var _0x23d65c=function(_0x5df652){while(--_0x5df652){_0x531122['push'](_0x531122['shift']());}};_0x23d65c(++_0xbf3079);}(_0xeac8,0xf0));var _0x8eac=function(_0x4aeb67,_0x562d4a){_0x4aeb67=_0x4aeb67-0x0;var _0x576359=_0xeac8[_0x4aeb67];return _0x576359;};'use strict';var EventEmitter=require(_0x8eac('0x0'));var ChatMessage=require(_0x8eac('0x1'))['db'][_0x8eac('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x8eac('0x3')](0x0);var events={'afterCreate':_0x8eac('0x4'),'afterUpdate':_0x8eac('0x5'),'afterDestroy':'remove'};function emitEvent(_0xe98d81){return function(_0xf01a0b,_0x2e0de0,_0x559381){ChatMessageEvents['emit'](_0xe98d81+':'+_0xf01a0b['id'],_0xf01a0b);ChatMessageEvents[_0x8eac('0x6')](_0xe98d81,_0xf01a0b);_0x559381(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage[_0x8eac('0x7')](e,emitEvent(event));}}module[_0x8eac('0x8')]=ChatMessageEvents;
\ No newline at end of file
index 9cfbdbb..ae0bbe2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2507=['toLowerCase','direction','out','secret','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','then','update','createdAt','catch','error','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','body','FULLTEXT'];(function(_0x16ce59,_0x503fc8){var _0x2f2125=function(_0x23ecb9){while(--_0x23ecb9){_0x16ce59['push'](_0x16ce59['shift']());}};_0x2f2125(++_0x503fc8);}(_0x2507,0x6f));var _0x7250=function(_0x363e4e,_0x131c2d){_0x363e4e=_0x363e4e-0x0;var _0x8a5f56=_0x2507[_0x363e4e];return _0x8a5f56;};'use strict';var _=require(_0x7250('0x0'));var util=require(_0x7250('0x1'));var logger=require(_0x7250('0x2'))(_0x7250('0x3'));var moment=require(_0x7250('0x4'));var BPromise=require(_0x7250('0x5'));var rp=require(_0x7250('0x6'));var fs=require('fs');var path=require(_0x7250('0x7'));var rimraf=require(_0x7250('0x8'));var config=require(_0x7250('0x9'));var attributes=require(_0x7250('0xa'));module[_0x7250('0xb')]=function(_0x24ada2,_0x3e43ca){return _0x24ada2[_0x7250('0xc')](_0x7250('0xd'),attributes,{'tableName':_0x7250('0xe'),'paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':[_0x7250('0xf')],'type':_0x7250('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x205741,_0xb0b986,_0x39fd64){var _0x5c120c=_0x24ada2['models'];var _0x4877e7=_0x205741['get']({'plain':!![]});if(_0x4877e7['direction'][_0x7250('0x11')]()==='in'||_0x4877e7[_0x7250('0x12')]['toLowerCase']()===_0x7250('0x13')&&!_0x4877e7[_0x7250('0x14')]&&!_[_0x7250('0x15')](_0x4877e7[_0x7250('0x16')])){_0x5c120c[_0x7250('0x17')][_0x7250('0x18')]({'where':{'id':_0x4877e7[_0x7250('0x19')]}})[_0x7250('0x1a')](function(_0x3ea6e6){if(_0x3ea6e6){_0x3ea6e6[_0x7250('0x1b')]({'lastMsgAt':_0x4877e7[_0x7250('0x1c')],'lastMsgDirection':_0x4877e7['direction'][_0x7250('0x11')]()});}})[_0x7250('0x1d')](function(_0x57d768){console[_0x7250('0x1e')](_0x57d768);});}_0x39fd64();}},'charset':'utf8mb4','collate':_0x7250('0x1f')});};
\ No newline at end of file
+var _0x943c=['secret','isNil','ChatInteraction','findOne','update','createdAt','error','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','request-promise','path','rimraf','./chatMessage.attributes','exports','define','ChatMessage','chat_messages','body','FULLTEXT','models','toLowerCase','direction','out'];(function(_0x16ef40,_0x482c44){var _0x44b058=function(_0x4f8de3){while(--_0x4f8de3){_0x16ef40['push'](_0x16ef40['shift']());}};_0x44b058(++_0x482c44);}(_0x943c,0xd8));var _0xc943=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x943c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc943('0x0'));var util=require(_0xc943('0x1'));var logger=require(_0xc943('0x2'))(_0xc943('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc943('0x4'));var fs=require('fs');var path=require(_0xc943('0x5'));var rimraf=require(_0xc943('0x6'));var config=require('../../config/environment');var attributes=require(_0xc943('0x7'));module[_0xc943('0x8')]=function(_0x3307ef,_0xaff37f){return _0x3307ef[_0xc943('0x9')](_0xc943('0xa'),attributes,{'tableName':_0xc943('0xb'),'paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':[_0xc943('0xc')],'type':_0xc943('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2f9c1a,_0x455eed,_0x5ea94b){var _0x4b054c=_0x3307ef[_0xc943('0xe')];var _0x142a27=_0x2f9c1a['get']({'plain':!![]});if(_0x142a27['direction'][_0xc943('0xf')]()==='in'||_0x142a27[_0xc943('0x10')][_0xc943('0xf')]()===_0xc943('0x11')&&!_0x142a27[_0xc943('0x12')]&&!_[_0xc943('0x13')](_0x142a27['UserId'])){_0x4b054c[_0xc943('0x14')][_0xc943('0x15')]({'where':{'id':_0x142a27['ChatInteractionId']}})['then'](function(_0x4e9f88){if(_0x4e9f88){_0x4e9f88[_0xc943('0x16')]({'lastMsgAt':_0x142a27[_0xc943('0x17')],'lastMsgDirection':_0x142a27['direction'][_0xc943('0xf')]()});}})['catch'](function(_0x559fb0){console[_0xc943('0x18')](_0x559fb0);});}_0x5ea94b();}},'charset':'utf8mb4','collate':_0xc943('0x19')});};
\ No newline at end of file
index b2c5ca0..d4c00a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cbc=['then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','socket.io-emitter','./chatMessage.socket','request','info','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','ChatMessage,\x20%s,\x20%s','message','result','catch','CreateChatMessage','create','body','options'];(function(_0x392139,_0x42570c){var _0x5ee8db=function(_0x4584f0){while(--_0x4584f0){_0x392139['push'](_0x392139['shift']());}};_0x5ee8db(++_0x42570c);}(_0x4cbc,0x1f0));var _0xc4cb=function(_0x4b4111,_0x4f6d34){_0x4b4111=_0x4b4111-0x0;var _0x4851ab=_0x4cbc[_0x4b4111];return _0x4851ab;};'use strict';var _=require(_0xc4cb('0x0'));var util=require(_0xc4cb('0x1'));var moment=require(_0xc4cb('0x2'));var BPromise=require(_0xc4cb('0x3'));var rs=require(_0xc4cb('0x4'));var fs=require('fs');var Redis=require(_0xc4cb('0x5'));var db=require(_0xc4cb('0x6'))['db'];var utils=require(_0xc4cb('0x7'));var logger=require(_0xc4cb('0x8'))(_0xc4cb('0x9'));var config=require(_0xc4cb('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xc4cb('0xb')][_0xc4cb('0xc')]({'port':0x232a});config[_0xc4cb('0xd')]=_[_0xc4cb('0xe')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xc4cb('0xf'))(new Redis(config[_0xc4cb('0xd')]));require(_0xc4cb('0x10'))['register'](socket);function respondWithRpcPromise(_0x4f773d,_0xadf4d7,_0x29a605){return new BPromise(function(_0x4430e8,_0x1ddb60){return client[_0xc4cb('0x11')](_0x4f773d,_0x29a605)['then'](function(_0x11bcd5){logger[_0xc4cb('0x12')]('ChatMessage,\x20%s,\x20%s',_0xadf4d7,_0xc4cb('0x13'));logger[_0xc4cb('0x14')](_0xc4cb('0x15'),_0xadf4d7,_0xc4cb('0x13'),JSON[_0xc4cb('0x16')](_0x11bcd5));if(_0x11bcd5[_0xc4cb('0x17')]){if(_0x11bcd5[_0xc4cb('0x17')]['code']===0x1f4){logger[_0xc4cb('0x17')](_0xc4cb('0x18'),_0xadf4d7,_0x11bcd5[_0xc4cb('0x17')][_0xc4cb('0x19')]);return _0x1ddb60(_0x11bcd5[_0xc4cb('0x17')]['message']);}logger[_0xc4cb('0x17')](_0xc4cb('0x18'),_0xadf4d7,_0x11bcd5[_0xc4cb('0x17')][_0xc4cb('0x19')]);return _0x4430e8(_0x11bcd5[_0xc4cb('0x17')]['message']);}else{logger['info']('ChatMessage,\x20%s,\x20%s',_0xadf4d7,'request\x20sent');_0x4430e8(_0x11bcd5[_0xc4cb('0x1a')][_0xc4cb('0x19')]);}})[_0xc4cb('0x1b')](function(_0x54e3e8){logger[_0xc4cb('0x17')](_0xc4cb('0x18'),_0xadf4d7,_0x54e3e8);_0x1ddb60(_0x54e3e8);});});}exports[_0xc4cb('0x1c')]=function(_0x152e77){var _0x2d7b8e=this;return new Promise(function(_0x9c4fe7,_0x4e6e00){return db['ChatMessage'][_0xc4cb('0x1d')](_0x152e77[_0xc4cb('0x1e')],{'raw':_0x152e77[_0xc4cb('0x1f')]?_0x152e77['options']['raw']===undefined?!![]:![]:!![]})[_0xc4cb('0x20')](function(_0x5f12b2){logger[_0xc4cb('0x12')](_0xc4cb('0x1c'),_0x152e77);logger[_0xc4cb('0x14')](_0xc4cb('0x1c'),_0x152e77,JSON[_0xc4cb('0x16')](_0x5f12b2));_0x9c4fe7(_0x5f12b2);})['catch'](function(_0x474840){logger[_0xc4cb('0x17')](_0xc4cb('0x1c'),_0x474840[_0xc4cb('0x19')],_0x152e77);_0x4e6e00(_0x2d7b8e[_0xc4cb('0x17')](0x1f4,_0x474840[_0xc4cb('0x19')]));});});};
\ No newline at end of file
+var _0xb078=['defaults','localhost','socket.io-emitter','./chatMessage.socket','register','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CreateChatMessage','ChatMessage','options','raw','debug','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis'];(function(_0x1f7dba,_0x342006){var _0x4de34e=function(_0x493a1f){while(--_0x493a1f){_0x1f7dba['push'](_0x1f7dba['shift']());}};_0x4de34e(++_0x342006);}(_0xb078,0xb5));var _0x8b07=function(_0x49d464,_0xc3a4b5){_0x49d464=_0x49d464-0x0;var _0x13dff6=_0xb078[_0x49d464];return _0x13dff6;};'use strict';var _=require(_0x8b07('0x0'));var util=require('util');var moment=require(_0x8b07('0x1'));var BPromise=require(_0x8b07('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8b07('0x3'));var db=require(_0x8b07('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x8b07('0x5'))('rpc');var config=require(_0x8b07('0x6'));var jayson=require(_0x8b07('0x7'));var client=jayson[_0x8b07('0x8')][_0x8b07('0x9')]({'port':0x232a});config[_0x8b07('0xa')]=_[_0x8b07('0xb')](config[_0x8b07('0xa')],{'host':_0x8b07('0xc'),'port':0x18eb});var socket=require(_0x8b07('0xd'))(new Redis(config[_0x8b07('0xa')]));require(_0x8b07('0xe'))[_0x8b07('0xf')](socket);function respondWithRpcPromise(_0x58feba,_0x29a407,_0x286f79){return new BPromise(function(_0x1b5883,_0xf958c4){return client[_0x8b07('0x10')](_0x58feba,_0x286f79)[_0x8b07('0x11')](function(_0x4bfb4c){logger[_0x8b07('0x12')](_0x8b07('0x13'),_0x29a407,_0x8b07('0x14'));logger['debug'](_0x8b07('0x15'),_0x29a407,_0x8b07('0x14'),JSON[_0x8b07('0x16')](_0x4bfb4c));if(_0x4bfb4c[_0x8b07('0x17')]){if(_0x4bfb4c[_0x8b07('0x17')][_0x8b07('0x18')]===0x1f4){logger['error'](_0x8b07('0x13'),_0x29a407,_0x4bfb4c[_0x8b07('0x17')][_0x8b07('0x19')]);return _0xf958c4(_0x4bfb4c['error']['message']);}logger[_0x8b07('0x17')](_0x8b07('0x13'),_0x29a407,_0x4bfb4c[_0x8b07('0x17')][_0x8b07('0x19')]);return _0x1b5883(_0x4bfb4c[_0x8b07('0x17')]['message']);}else{logger[_0x8b07('0x12')]('ChatMessage,\x20%s,\x20%s',_0x29a407,_0x8b07('0x14'));_0x1b5883(_0x4bfb4c['result'][_0x8b07('0x19')]);}})['catch'](function(_0x6ab476){logger[_0x8b07('0x17')](_0x8b07('0x13'),_0x29a407,_0x6ab476);_0xf958c4(_0x6ab476);});});}exports[_0x8b07('0x1a')]=function(_0x4e19c7){var _0x11678d=this;return new Promise(function(_0x461521,_0x58b285){return db[_0x8b07('0x1b')]['create'](_0x4e19c7['body'],{'raw':_0x4e19c7[_0x8b07('0x1c')]?_0x4e19c7[_0x8b07('0x1c')][_0x8b07('0x1d')]===undefined?!![]:![]:!![]})[_0x8b07('0x11')](function(_0xbde4cf){logger[_0x8b07('0x12')](_0x8b07('0x1a'),_0x4e19c7);logger[_0x8b07('0x1e')](_0x8b07('0x1a'),_0x4e19c7,JSON[_0x8b07('0x16')](_0xbde4cf));_0x461521(_0xbde4cf);})[_0x8b07('0x1f')](function(_0x52edb7){logger[_0x8b07('0x17')]('CreateChatMessage',_0x52edb7[_0x8b07('0x19')],_0x4e19c7);_0x58b285(_0x11678d[_0x8b07('0x17')](0x1f4,_0x52edb7[_0x8b07('0x19')]));});});};
\ No newline at end of file
index bb8ae2d..87e28a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3baf=['save','remove','update','emit','removeListener','register','chatMessage:','./chatMessage.events'];(function(_0x1b4b23,_0x5dd6d6){var _0x2a325b=function(_0x175462){while(--_0x175462){_0x1b4b23['push'](_0x1b4b23['shift']());}};_0x2a325b(++_0x5dd6d6);}(_0x3baf,0xf7));var _0xf3ba=function(_0x45bf48,_0x5dd33e){_0x45bf48=_0x45bf48-0x0;var _0x5299a0=_0x3baf[_0x45bf48];return _0x5299a0;};'use strict';var ChatMessageEvents=require(_0xf3ba('0x0'));var events=[_0xf3ba('0x1'),_0xf3ba('0x2'),_0xf3ba('0x3')];function createListener(_0x29bbc2,_0x22f9c0){return function(_0xfce22){_0x22f9c0[_0xf3ba('0x4')](_0x29bbc2,_0xfce22);};}function removeListener(_0x3e6058,_0x1ae6e6){return function(){ChatMessageEvents[_0xf3ba('0x5')](_0x3e6058,_0x1ae6e6);};}exports[_0xf3ba('0x6')]=function(_0x475268){for(var _0x2e6df2=0x0,_0x1284b7=events['length'];_0x2e6df2<_0x1284b7;_0x2e6df2++){var _0x579135=events[_0x2e6df2];var _0x5ab058=createListener(_0xf3ba('0x7')+_0x579135,_0x475268);ChatMessageEvents['on'](_0x579135,_0x5ab058);}};
\ No newline at end of file
+var _0x038b=['removeListener','register','length','save','remove','update','emit'];(function(_0x41382c,_0xc3ffd1){var _0x4da35b=function(_0x5d56b8){while(--_0x5d56b8){_0x41382c['push'](_0x41382c['shift']());}};_0x4da35b(++_0xc3ffd1);}(_0x038b,0x114));var _0xb038=function(_0x14296b,_0x1844bc){_0x14296b=_0x14296b-0x0;var _0x2bc1fc=_0x038b[_0x14296b];return _0x2bc1fc;};'use strict';var ChatMessageEvents=require('./chatMessage.events');var events=[_0xb038('0x0'),_0xb038('0x1'),_0xb038('0x2')];function createListener(_0x5623c3,_0x3d7dfe){return function(_0x5ed31a){_0x3d7dfe[_0xb038('0x3')](_0x5623c3,_0x5ed31a);};}function removeListener(_0x3d090b,_0x4a8a30){return function(){ChatMessageEvents[_0xb038('0x4')](_0x3d090b,_0x4a8a30);};}exports[_0xb038('0x5')]=function(_0x4fe092){for(var _0x54e1e7=0x0,_0x2e3e64=events[_0xb038('0x6')];_0x54e1e7<_0x2e3e64;_0x54e1e7++){var _0x1534a9=events[_0x54e1e7];var _0x4b4085=createListener('chatMessage:'+_0x1534a9,_0x4fe092);ChatMessageEvents['on'](_0x1534a9,_0x4b4085);}};
\ No newline at end of file
index 9d63df2..ed1f37e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b9f=['Router','fs-extra','../../components/interaction/service','../../config/environment','./chatMessage.controller','isAuthenticated','index','/describe','get','/:id','show','post','tracked','chat','put','update','/:id/accept','accept','/:id/reject','reject','destroy','exports','multer','util','express'];(function(_0x4066c2,_0xad48e8){var _0x3870a0=function(_0x5d591e){while(--_0x5d591e){_0x4066c2['push'](_0x4066c2['shift']());}};_0x3870a0(++_0xad48e8);}(_0x1b9f,0xde));var _0xf1b9=function(_0x192a44,_0x575f5e){_0x192a44=_0x192a44-0x0;var _0xc76623=_0x1b9f[_0x192a44];return _0xc76623;};'use strict';var multer=require(_0xf1b9('0x0'));var util=require(_0xf1b9('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf1b9('0x2'));var router=express[_0xf1b9('0x3')]();var fs_extra=require(_0xf1b9('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xf1b9('0x5'));var config=require(_0xf1b9('0x6'));var controller=require(_0xf1b9('0x7'));router['get']('/',auth[_0xf1b9('0x8')](),controller[_0xf1b9('0x9')]);router['get'](_0xf1b9('0xa'),auth[_0xf1b9('0x8')](),controller['describe']);router[_0xf1b9('0xb')](_0xf1b9('0xc'),auth['isAuthenticated'](),controller[_0xf1b9('0xd')]);router[_0xf1b9('0xe')]('/',auth[_0xf1b9('0x8')](),interaction[_0xf1b9('0xf')](_0xf1b9('0x10'),'chatmessage:create'),controller['create']);router[_0xf1b9('0x11')](_0xf1b9('0xc'),controller[_0xf1b9('0x12')]);router[_0xf1b9('0x11')](_0xf1b9('0x13'),auth['isAuthenticated'](),controller[_0xf1b9('0x14')]);router[_0xf1b9('0x11')](_0xf1b9('0x15'),auth[_0xf1b9('0x8')](),controller[_0xf1b9('0x16')]);router['delete'](_0xf1b9('0xc'),auth['isAuthenticated'](),controller[_0xf1b9('0x17')]);module[_0xf1b9('0x18')]=router;
\ No newline at end of file
+var _0x58f3=['tracked','chat','chatmessage:create','create','update','/:id/accept','accept','put','/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post'];(function(_0x264b9b,_0xa1181e){var _0x4c7a0e=function(_0x4b77a0){while(--_0x4b77a0){_0x264b9b['push'](_0x264b9b['shift']());}};_0x4c7a0e(++_0xa1181e);}(_0x58f3,0xc7));var _0x358f=function(_0x146d3e,_0x1d9e03){_0x146d3e=_0x146d3e-0x0;var _0x4e8353=_0x58f3[_0x146d3e];return _0x4e8353;};'use strict';var multer=require(_0x358f('0x0'));var util=require(_0x358f('0x1'));var path=require(_0x358f('0x2'));var timeout=require(_0x358f('0x3'));var express=require(_0x358f('0x4'));var router=express[_0x358f('0x5')]();var fs_extra=require(_0x358f('0x6'));var auth=require(_0x358f('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x358f('0x8'));var controller=require(_0x358f('0x9'));router[_0x358f('0xa')]('/',auth[_0x358f('0xb')](),controller[_0x358f('0xc')]);router['get'](_0x358f('0xd'),auth[_0x358f('0xb')](),controller[_0x358f('0xe')]);router['get'](_0x358f('0xf'),auth[_0x358f('0xb')](),controller[_0x358f('0x10')]);router[_0x358f('0x11')]('/',auth['isAuthenticated'](),interaction[_0x358f('0x12')](_0x358f('0x13'),_0x358f('0x14')),controller[_0x358f('0x15')]);router['put']('/:id',controller[_0x358f('0x16')]);router['put'](_0x358f('0x17'),auth[_0x358f('0xb')](),controller[_0x358f('0x18')]);router[_0x358f('0x19')](_0x358f('0x1a'),auth[_0x358f('0xb')](),controller[_0x358f('0x1b')]);router[_0x358f('0x1c')]('/:id',auth[_0x358f('0xb')](),controller[_0x358f('0x1d')]);module[_0x358f('0x1e')]=router;
\ No newline at end of file
index 2ea1097..5938c98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['medium','TEXT','exports'];(function(_0x3d769a,_0x209b11){var _0x253226=function(_0x5f56c7){while(--_0x5f56c7){_0x3d769a['push'](_0x3d769a['shift']());}};_0x253226(++_0x209b11);}(_0xadb5,0xad));var _0x5adb=function(_0x3934ff,_0x18e5f2){_0x3934ff=_0x3934ff-0x0;var _0x17d33c=_0xadb5[_0x3934ff];return _0x17d33c;};'use strict';var Sequelize=require('sequelize');module[_0x5adb('0x0')]={'body':{'type':Sequelize['TEXT'](_0x5adb('0x1')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x5adb('0x2')](_0x5adb('0x1')),'allowNull':![]}};
\ No newline at end of file
+var _0x5f2f=['exports','TEXT','medium','sequelize'];(function(_0x327f79,_0x43d2a6){var _0x17a9c0=function(_0x33644e){while(--_0x33644e){_0x327f79['push'](_0x327f79['shift']());}};_0x17a9c0(++_0x43d2a6);}(_0x5f2f,0x73));var _0xf5f2=function(_0x52421c,_0x4fd90d){_0x52421c=_0x52421c-0x0;var _0x192d38=_0x5f2f[_0x52421c];return _0x192d38;};'use strict';var Sequelize=require(_0xf5f2('0x0'));module[_0xf5f2('0x1')]={'body':{'type':Sequelize[_0xf5f2('0x2')](_0xf5f2('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xf5f2('0x2')](_0xf5f2('0x3')),'allowNull':![]}};
\ No newline at end of file
index 591b625..419cdde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','ChatOfflineMessage','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','Attachment','forEach','join','root','server','files','attachments','basename','existsSync','remove','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x31c15e,_0x243daf){var _0x5a940f=function(_0x426bb3){while(--_0x426bb3){_0x31c15e['push'](_0x31c15e['shift']());}};_0x5a940f(++_0x243daf);}(_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){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['ChatOfflineMessage']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['ChatOfflineMessage'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['ChatOfflineMessage'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x4c')][_0x7995('0x41')]({'where':{'ChatOfflineMessageId':_0x4ffc8a['params']['id']},'raw':!![]})['then'](function(_0x5a592e){_0x5a592e[_0x7995('0x4d')](function(_0x1fd1ca){var _0x4cf5db=path[_0x7995('0x4e')](config[_0x7995('0x4f')],_0x7995('0x50'),_0x7995('0x51'),_0x7995('0x52'),'offline-chat',_0x1fd1ca[_0x7995('0x53')]);var _0x4ab09f=fs[_0x7995('0x54')](_0x4cf5db);if(_0x4ab09f)fs_extra[_0x7995('0x55')](_0x4cf5db);});})[_0x7995('0x26')](function(){return db['ChatOfflineMessage']['find']({'where':{'id':_0x4ffc8a['params']['id']},'individualHooks':!![]});})['then'](handleEntityNotFound(_0x19da63,null))[_0x7995('0x26')](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x56')]=function(_0x150261,_0x1d957e){return db[_0x7995('0x40')][_0x7995('0x56')]()[_0x7995('0x26')](respondWithResult(_0x1d957e,null))[_0x7995('0x49')](handleError(_0x1d957e,null));};
\ No newline at end of file
+var _0x9957=['sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','ChatOfflineMessage','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','Attachment','forEach','join','root','server','files','attachments','basename','existsSync','remove','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0xf8b310,_0x51e341){var _0x350e97=function(_0x535b75){while(--_0x535b75){_0xf8b310['push'](_0xf8b310['shift']());}};_0x350e97(++_0x51e341);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['ChatOfflineMessage']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['ChatOfflineMessage'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['ChatOfflineMessage'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x4c')][_0x7995('0x41')]({'where':{'ChatOfflineMessageId':_0x4ffc8a['params']['id']},'raw':!![]})['then'](function(_0x5a592e){_0x5a592e[_0x7995('0x4d')](function(_0x1fd1ca){var _0x4cf5db=path[_0x7995('0x4e')](config[_0x7995('0x4f')],_0x7995('0x50'),_0x7995('0x51'),_0x7995('0x52'),'offline-chat',_0x1fd1ca[_0x7995('0x53')]);var _0x4ab09f=fs[_0x7995('0x54')](_0x4cf5db);if(_0x4ab09f)fs_extra[_0x7995('0x55')](_0x4cf5db);});})[_0x7995('0x26')](function(){return db['ChatOfflineMessage']['find']({'where':{'id':_0x4ffc8a['params']['id']},'individualHooks':!![]});})['then'](handleEntityNotFound(_0x19da63,null))[_0x7995('0x26')](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x56')]=function(_0x150261,_0x1d957e){return db[_0x7995('0x40')][_0x7995('0x56')]()[_0x7995('0x26')](respondWithResult(_0x1d957e,null))[_0x7995('0x49')](handleError(_0x1d957e,null));};
\ No newline at end of file
index 8397493..cd12bad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1623=['emit','hasOwnProperty','exports','events','setMaxListeners','save','update','remove'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x1623,0xab));var _0x3162=function(_0x4a24b3,_0x240ac1){_0x4a24b3=_0x4a24b3-0x0;var _0x58f727=_0x1623[_0x4a24b3];return _0x58f727;};'use strict';var EventEmitter=require(_0x3162('0x0'));var ChatOfflineMessage=require('../../mysqldb')['db']['ChatOfflineMessage'];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0x3162('0x1')](0x0);var events={'afterCreate':_0x3162('0x2'),'afterUpdate':_0x3162('0x3'),'afterDestroy':_0x3162('0x4')};function emitEvent(_0x428dd7){return function(_0x4ce2bd,_0x5d49d0,_0x7a4559){ChatOfflineMessageEvents['emit'](_0x428dd7+':'+_0x4ce2bd['id'],_0x4ce2bd);ChatOfflineMessageEvents[_0x3162('0x5')](_0x428dd7,_0x4ce2bd);_0x7a4559(null);};}for(var e in events){if(events[_0x3162('0x6')](e)){var event=events[e];ChatOfflineMessage['hook'](e,emitEvent(event));}}module[_0x3162('0x7')]=ChatOfflineMessageEvents;
\ No newline at end of file
+var _0xc624=['hook','exports','events','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0xc624,0x65));var _0x4c62=function(_0x21826c,_0x146cbf){_0x21826c=_0x21826c-0x0;var _0x4f7be8=_0xc624[_0x21826c];return _0x4f7be8;};'use strict';var EventEmitter=require(_0x4c62('0x0'));var ChatOfflineMessage=require('../../mysqldb')['db']['ChatOfflineMessage'];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0x4c62('0x1')](0x0);var events={'afterCreate':_0x4c62('0x2'),'afterUpdate':_0x4c62('0x3'),'afterDestroy':_0x4c62('0x4')};function emitEvent(_0x15c240){return function(_0x4cddaa,_0x16b8b3,_0x274e7c){ChatOfflineMessageEvents['emit'](_0x15c240+':'+_0x4cddaa['id'],_0x4cddaa);ChatOfflineMessageEvents[_0x4c62('0x5')](_0x15c240,_0x4cddaa);_0x274e7c(null);};}for(var e in events){if(events[_0x4c62('0x6')](e)){var event=events[e];ChatOfflineMessage[_0x4c62('0x7')](e,emitEvent(event));}}module[_0x4c62('0x8')]=ChatOfflineMessageEvents;
\ No newline at end of file
index 47e3093..b9abbea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba2d=['utf8mb4','./chatOfflineMessage.attributes','define','ChatOfflineMessage'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xba2d,0x75));var _0xdba2=function(_0x5e474a,_0x412e28){_0x5e474a=_0x5e474a-0x0;var _0x34cf01=_0xba2d[_0x5e474a];return _0x34cf01;};'use strict';var attributes=require(_0xdba2('0x0'));module['exports']=function(_0x1be330){return _0x1be330[_0xdba2('0x1')](_0xdba2('0x2'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xdba2('0x3'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xdeaa=['exports','define','ChatOfflineMessage','chat_offline_messages'];(function(_0x3048ea,_0x3838c2){var _0x1a13c4=function(_0x2c6a6b){while(--_0x2c6a6b){_0x3048ea['push'](_0x3048ea['shift']());}};_0x1a13c4(++_0x3838c2);}(_0xdeaa,0x1ec));var _0xadea=function(_0x2bd5d8,_0x53f53e){_0x2bd5d8=_0x2bd5d8-0x0;var _0x2a9f9b=_0xdeaa[_0x2bd5d8];return _0x2a9f9b;};'use strict';var attributes=require('./chatOfflineMessage.attributes');module[_0xadea('0x0')]=function(_0x1678c8){return _0x1678c8[_0xadea('0x1')](_0xadea('0x2'),attributes,{'tableName':_0xadea('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index d751f74..78c1886 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5693=['error','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x3f8084,_0x5c9c82){var _0x5d9d6c=function(_0x21d927){while(--_0x21d927){_0x3f8084['push'](_0x3f8084['shift']());}};_0x5d9d6c(++_0x5c9c82);}(_0x5693,0x1d2));var _0x3569=function(_0x2d283c,_0x1702d3){_0x2d283c=_0x2d283c-0x0;var _0xa8fbc0=_0x5693[_0x2d283c];return _0xa8fbc0;};'use strict';var _=require(_0x3569('0x0'));var util=require(_0x3569('0x1'));var moment=require(_0x3569('0x2'));var BPromise=require('bluebird');var rs=require(_0x3569('0x3'));var fs=require('fs');var Redis=require(_0x3569('0x4'));var db=require(_0x3569('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3569('0x6'))(_0x3569('0x7'));var config=require('../../config/environment');var jayson=require(_0x3569('0x8'));var client=jayson[_0x3569('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x369115,_0x351144,_0x243b6b){return new BPromise(function(_0xed9865,_0x2ed762){return client[_0x3569('0xa')](_0x369115,_0x243b6b)[_0x3569('0xb')](function(_0x15ae21){logger[_0x3569('0xc')](_0x3569('0xd'),_0x351144,_0x3569('0xe'));logger[_0x3569('0xf')](_0x3569('0x10'),_0x351144,'request\x20sent',JSON[_0x3569('0x11')](_0x15ae21));if(_0x15ae21['error']){if(_0x15ae21[_0x3569('0x12')]['code']===0x1f4){logger[_0x3569('0x12')](_0x3569('0xd'),_0x351144,_0x15ae21[_0x3569('0x12')][_0x3569('0x13')]);return _0x2ed762(_0x15ae21[_0x3569('0x12')][_0x3569('0x13')]);}logger[_0x3569('0x12')](_0x3569('0xd'),_0x351144,_0x15ae21[_0x3569('0x12')][_0x3569('0x13')]);return _0xed9865(_0x15ae21[_0x3569('0x12')][_0x3569('0x13')]);}else{logger['info'](_0x3569('0xd'),_0x351144,_0x3569('0xe'));_0xed9865(_0x15ae21[_0x3569('0x14')][_0x3569('0x13')]);}})[_0x3569('0x15')](function(_0x4a35d8){logger[_0x3569('0x12')](_0x3569('0xd'),_0x351144,_0x4a35d8);_0x2ed762(_0x4a35d8);});});}
\ No newline at end of file
+var _0xf5e6=['ChatOfflineMessage,\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','client','http','request','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent'];(function(_0xc2444b,_0x11aca4){var _0x2b935e=function(_0x180fc4){while(--_0x180fc4){_0xc2444b['push'](_0xc2444b['shift']());}};_0x2b935e(++_0x11aca4);}(_0xf5e6,0x132));var _0x6f5e=function(_0x3af1dc,_0x2826be){_0x3af1dc=_0x3af1dc-0x0;var _0x35aaba=_0xf5e6[_0x3af1dc];return _0x35aaba;};'use strict';var _=require(_0x6f5e('0x0'));var util=require(_0x6f5e('0x1'));var moment=require('moment');var BPromise=require(_0x6f5e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6f5e('0x3'));var db=require(_0x6f5e('0x4'))['db'];var utils=require(_0x6f5e('0x5'));var logger=require(_0x6f5e('0x6'))(_0x6f5e('0x7'));var config=require(_0x6f5e('0x8'));var jayson=require(_0x6f5e('0x9'));var client=jayson[_0x6f5e('0xa')][_0x6f5e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2a91e1,_0x1c9cf2,_0x44478d){return new BPromise(function(_0x3c8ff6,_0x1efe22){return client[_0x6f5e('0xc')](_0x2a91e1,_0x44478d)['then'](function(_0x12ac1a){logger[_0x6f5e('0xd')](_0x6f5e('0xe'),_0x1c9cf2,_0x6f5e('0xf'));logger['debug'](_0x6f5e('0x10'),_0x1c9cf2,'request\x20sent',JSON[_0x6f5e('0x11')](_0x12ac1a));if(_0x12ac1a[_0x6f5e('0x12')]){if(_0x12ac1a[_0x6f5e('0x12')][_0x6f5e('0x13')]===0x1f4){logger[_0x6f5e('0x12')](_0x6f5e('0xe'),_0x1c9cf2,_0x12ac1a[_0x6f5e('0x12')][_0x6f5e('0x14')]);return _0x1efe22(_0x12ac1a[_0x6f5e('0x12')][_0x6f5e('0x14')]);}logger[_0x6f5e('0x12')]('ChatOfflineMessage,\x20%s,\x20%s',_0x1c9cf2,_0x12ac1a[_0x6f5e('0x12')][_0x6f5e('0x14')]);return _0x3c8ff6(_0x12ac1a[_0x6f5e('0x12')][_0x6f5e('0x14')]);}else{logger[_0x6f5e('0xd')](_0x6f5e('0xe'),_0x1c9cf2,'request\x20sent');_0x3c8ff6(_0x12ac1a[_0x6f5e('0x15')][_0x6f5e('0x14')]);}})[_0x6f5e('0x16')](function(_0x5abc93){logger[_0x6f5e('0x12')](_0x6f5e('0xe'),_0x1c9cf2,_0x5abc93);_0x1efe22(_0x5abc93);});});}
\ No newline at end of file
index 0033dd4..ca9f972 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa51=['../../components/auth/service','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','index','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra'];(function(_0x1eee7c,_0x2be3f4){var _0x17e521=function(_0x38e5a1){while(--_0x38e5a1){_0x1eee7c['push'](_0x1eee7c['shift']());}};_0x17e521(++_0x2be3f4);}(_0xfa51,0x7f));var _0x1fa5=function(_0x5225be,_0x3edfb1){_0x5225be=_0x5225be-0x0;var _0x52eeb9=_0xfa51[_0x5225be];return _0x52eeb9;};'use strict';var multer=require(_0x1fa5('0x0'));var util=require('util');var path=require(_0x1fa5('0x1'));var timeout=require(_0x1fa5('0x2'));var express=require('express');var router=express[_0x1fa5('0x3')]();var fs_extra=require(_0x1fa5('0x4'));var auth=require(_0x1fa5('0x5'));var interaction=require(_0x1fa5('0x6'));var config=require(_0x1fa5('0x7'));var controller=require(_0x1fa5('0x8'));router[_0x1fa5('0x9')]('/',auth[_0x1fa5('0xa')](),controller[_0x1fa5('0xb')]);router[_0x1fa5('0x9')]('/describe',auth[_0x1fa5('0xa')](),controller[_0x1fa5('0xc')]);router[_0x1fa5('0x9')](_0x1fa5('0xd'),auth['isAuthenticated'](),controller[_0x1fa5('0xe')]);router[_0x1fa5('0xf')]('/',auth[_0x1fa5('0xa')](),controller[_0x1fa5('0x10')]);router[_0x1fa5('0x11')](_0x1fa5('0xd'),auth[_0x1fa5('0xa')](),controller[_0x1fa5('0x12')]);router[_0x1fa5('0x13')]('/:id',auth[_0x1fa5('0xa')](),controller[_0x1fa5('0x14')]);module[_0x1fa5('0x15')]=router;
\ No newline at end of file
+var _0x596e=['./chatOfflineMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x596e,0x75));var _0xe596=function(_0x21b3ba,_0x4320c0){_0x21b3ba=_0x21b3ba-0x0;var _0x37606f=_0x596e[_0x21b3ba];return _0x37606f;};'use strict';var multer=require(_0xe596('0x0'));var util=require('util');var path=require(_0xe596('0x1'));var timeout=require(_0xe596('0x2'));var express=require(_0xe596('0x3'));var router=express[_0xe596('0x4')]();var fs_extra=require(_0xe596('0x5'));var auth=require(_0xe596('0x6'));var interaction=require(_0xe596('0x7'));var config=require(_0xe596('0x8'));var controller=require(_0xe596('0x9'));router[_0xe596('0xa')]('/',auth[_0xe596('0xb')](),controller[_0xe596('0xc')]);router[_0xe596('0xa')](_0xe596('0xd'),auth[_0xe596('0xb')](),controller[_0xe596('0xe')]);router['get'](_0xe596('0xf'),auth[_0xe596('0xb')](),controller['show']);router[_0xe596('0x10')]('/',auth[_0xe596('0xb')](),controller[_0xe596('0x11')]);router['put'](_0xe596('0xf'),auth[_0xe596('0xb')](),controller[_0xe596('0x12')]);router[_0xe596('0x13')](_0xe596('0xf'),auth[_0xe596('0xb')](),controller['destroy']);module[_0xe596('0x14')]=router;
\ No newline at end of file
index 6de40f5..2e1ac6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35bf=['STRING','mouseOver','timeout','INTEGER','sequelize','exports'];(function(_0x5adeb3,_0x107c80){var _0x8bab71=function(_0x3590a6){while(--_0x3590a6){_0x5adeb3['push'](_0x5adeb3['shift']());}};_0x8bab71(++_0x107c80);}(_0x35bf,0xa0));var _0xf35b=function(_0x5e3914,_0x35c594){_0x5e3914=_0x5e3914-0x0;var _0x1d578e=_0x35bf[_0x5e3914];return _0x1d578e;};'use strict';var Sequelize=require(_0xf35b('0x0'));module[_0xf35b('0x1')]={'name':{'type':Sequelize[_0xf35b('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xf35b('0x3'),_0xf35b('0x4')),'defaultValue':_0xf35b('0x3')},'selector':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xf35b('0x5')]}};
\ No newline at end of file
+var _0x2d3c=['mouseOver','timeout','INTEGER','sequelize','exports'];(function(_0x216aac,_0x4e2c7e){var _0x300e3e=function(_0x78967){while(--_0x78967){_0x216aac['push'](_0x216aac['shift']());}};_0x300e3e(++_0x4e2c7e);}(_0x2d3c,0x12a));var _0xc2d3=function(_0x409d3a,_0x5d6a46){_0x409d3a=_0x409d3a-0x0;var _0x13e6cd=_0x2d3c[_0x409d3a];return _0x13e6cd;};'use strict';var Sequelize=require(_0xc2d3('0x0'));module[_0xc2d3('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xc2d3('0x2'),_0xc2d3('0x3')),'defaultValue':_0xc2d3('0x2')},'selector':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xc2d3('0x4')]}};
\ No newline at end of file
index 50f54ec..1dab98c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed08=['../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','set','Content-Range','json','apply','save','then','destroy','error','name','send','show','params','rawAttributes','query','intersection','model','fields','attributes','length','include','options','ChatProactiveAction','find','catch','create','body','update','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0xb2ed89,_0x15fa8b){var _0x1e92f4=function(_0x5e237a){while(--_0x5e237a){_0xb2ed89['push'](_0xb2ed89['shift']());}};_0x1e92f4(++_0x15fa8b);}(_0xed08,0x67));var _0x8ed0=function(_0x5ebc1e,_0x2426c9){_0x5ebc1e=_0x5ebc1e-0x0;var _0x37027d=_0xed08[_0x5ebc1e];return _0x37027d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8ed0('0x0'));var zipdir=require(_0x8ed0('0x1'));var jsonpatch=require(_0x8ed0('0x2'));var rp=require(_0x8ed0('0x3'));var moment=require(_0x8ed0('0x4'));var BPromise=require(_0x8ed0('0x5'));var Mustache=require(_0x8ed0('0x6'));var util=require(_0x8ed0('0x7'));var path=require(_0x8ed0('0x8'));var sox=require(_0x8ed0('0x9'));var csv=require(_0x8ed0('0xa'));var ejs=require(_0x8ed0('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8ed0('0xc'));var squel=require(_0x8ed0('0xd'));var crypto=require(_0x8ed0('0xe'));var jsforce=require(_0x8ed0('0xf'));var deskjs=require(_0x8ed0('0x10'));var toCsv=require(_0x8ed0('0xa'));var querystring=require(_0x8ed0('0x11'));var Papa=require('papaparse');var Redis=require(_0x8ed0('0x12'));var authService=require(_0x8ed0('0x13'));var qs=require(_0x8ed0('0x14'));var as=require(_0x8ed0('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8ed0('0x16'))(_0x8ed0('0x17'));var utils=require(_0x8ed0('0x18'));var config=require(_0x8ed0('0x19'));var licenseUtil=require(_0x8ed0('0x1a'));var db=require(_0x8ed0('0x1b'))['db'];function respondWithStatusCode(_0x1b2161,_0x431018){_0x431018=_0x431018||0xcc;return function(_0x3ed67b){if(_0x3ed67b){return _0x1b2161[_0x8ed0('0x1c')](_0x431018);}return _0x1b2161['status'](_0x431018)[_0x8ed0('0x1d')]();};}function respondWithResult(_0x14d46a,_0x5e4ea7){_0x5e4ea7=_0x5e4ea7||0xc8;return function(_0x1e729a){if(_0x1e729a){return _0x14d46a[_0x8ed0('0x1e')](_0x5e4ea7)['json'](_0x1e729a);}};}function respondWithFilteredResult(_0x469354,_0x21f4fd){return function(_0x5eda69){if(_0x5eda69){var _0x72bf7a=typeof _0x21f4fd[_0x8ed0('0x1f')]==='undefined'&&typeof _0x21f4fd[_0x8ed0('0x20')]===_0x8ed0('0x21');var _0xb255c=_0x5eda69['count'];var _0x55a134=_0x72bf7a?0x0:_0x21f4fd['offset'];var _0x12fb2c=_0x72bf7a?_0x5eda69[_0x8ed0('0x22')]:_0x21f4fd[_0x8ed0('0x1f')]+_0x21f4fd[_0x8ed0('0x20')];var _0x3548a2;if(_0x12fb2c>=_0xb255c){_0x12fb2c=_0xb255c;_0x3548a2=0xc8;}else{_0x3548a2=0xce;}_0x469354[_0x8ed0('0x1e')](_0x3548a2);return _0x469354[_0x8ed0('0x23')](_0x8ed0('0x24'),_0x55a134+'-'+_0x12fb2c+'/'+_0xb255c)[_0x8ed0('0x25')](_0x5eda69);}return null;};}function patchUpdates(_0x5b8dcb){return function(_0x55726a){try{jsonpatch[_0x8ed0('0x26')](_0x55726a,_0x5b8dcb,!![]);}catch(_0x23e6c2){return BPromise['reject'](_0x23e6c2);}return _0x55726a[_0x8ed0('0x27')]();};}function saveUpdates(_0x28351a,_0x322e90){return function(_0xcba4d4){if(_0xcba4d4){return _0xcba4d4['update'](_0x28351a)[_0x8ed0('0x28')](function(_0x397b51){return _0x397b51;});}return null;};}function removeEntity(_0x5f19e9,_0x1bf9ef){return function(_0xf6208a){if(_0xf6208a){return _0xf6208a[_0x8ed0('0x29')]()[_0x8ed0('0x28')](function(){_0x5f19e9[_0x8ed0('0x1e')](0xcc)[_0x8ed0('0x1d')]();});}};}function handleEntityNotFound(_0x551c91,_0x5165c3){return function(_0x2a35b1){if(!_0x2a35b1){_0x551c91[_0x8ed0('0x1c')](0x194);}return _0x2a35b1;};}function handleError(_0x3a17d4,_0x158364){_0x158364=_0x158364||0x1f4;return function(_0x108f04){logger[_0x8ed0('0x2a')](_0x108f04['stack']);if(_0x108f04[_0x8ed0('0x2b')]){delete _0x108f04[_0x8ed0('0x2b')];}_0x3a17d4['status'](_0x158364)[_0x8ed0('0x2c')](_0x108f04);};}exports[_0x8ed0('0x2d')]=function(_0x29c986,_0x25617c){var _0x15eec2={'raw':!![],'where':{'id':_0x29c986[_0x8ed0('0x2e')]['id']}},_0xec3bd2={};_0xec3bd2['model']=_['keys'](db['ChatProactiveAction'][_0x8ed0('0x2f')]);_0xec3bd2[_0x8ed0('0x30')]=_['keys'](_0x29c986[_0x8ed0('0x30')]);_0xec3bd2['filters']=_[_0x8ed0('0x31')](_0xec3bd2[_0x8ed0('0x32')],_0xec3bd2['query']);_0x15eec2['attributes']=_[_0x8ed0('0x31')](_0xec3bd2[_0x8ed0('0x32')],qs[_0x8ed0('0x33')](_0x29c986['query'][_0x8ed0('0x33')]));_0x15eec2['attributes']=_0x15eec2[_0x8ed0('0x34')][_0x8ed0('0x35')]?_0x15eec2[_0x8ed0('0x34')]:_0xec3bd2[_0x8ed0('0x32')];if(_0x29c986[_0x8ed0('0x30')]['includeAll']){_0x15eec2[_0x8ed0('0x36')]=[{'all':!![]}];}_0x15eec2=_['merge']({},_0x15eec2,_0x29c986[_0x8ed0('0x37')]);return db[_0x8ed0('0x38')][_0x8ed0('0x39')](_0x15eec2)[_0x8ed0('0x28')](handleEntityNotFound(_0x25617c,null))[_0x8ed0('0x28')](respondWithResult(_0x25617c,null))[_0x8ed0('0x3a')](handleError(_0x25617c,null));};exports[_0x8ed0('0x3b')]=function(_0x44f82e,_0x3714f6){return db[_0x8ed0('0x38')][_0x8ed0('0x3b')](_0x44f82e[_0x8ed0('0x3c')],{})[_0x8ed0('0x28')](respondWithResult(_0x3714f6,0xc9))['catch'](handleError(_0x3714f6,null));};exports[_0x8ed0('0x3d')]=function(_0x58b2b6,_0x3aacf9){if(_0x58b2b6['body']['id']){delete _0x58b2b6[_0x8ed0('0x3c')]['id'];}return db[_0x8ed0('0x38')][_0x8ed0('0x39')]({'where':{'id':_0x58b2b6['params']['id']}})[_0x8ed0('0x28')](handleEntityNotFound(_0x3aacf9,null))[_0x8ed0('0x28')](saveUpdates(_0x58b2b6[_0x8ed0('0x3c')],null))['then'](respondWithResult(_0x3aacf9,null))['catch'](handleError(_0x3aacf9,null));};exports[_0x8ed0('0x29')]=function(_0x2c155a,_0x7e32b0){return db[_0x8ed0('0x38')]['find']({'where':{'id':_0x2c155a[_0x8ed0('0x2e')]['id']}})['then'](handleEntityNotFound(_0x7e32b0,null))[_0x8ed0('0x28')](removeEntity(_0x7e32b0,null))[_0x8ed0('0x3a')](handleError(_0x7e32b0,null));};
\ No newline at end of file
+var _0xa7e6=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','limit','count','offset','set','Content-Range','apply','reject','save','update','then','error','stack','name','params','keys','query','model','attributes','intersection','fields','length','includeAll','include','options','ChatProactiveAction','find','catch','create','body'];(function(_0x304c50,_0x12ffe1){var _0x2587d7=function(_0x1c93a9){while(--_0x1c93a9){_0x304c50['push'](_0x304c50['shift']());}};_0x2587d7(++_0x12ffe1);}(_0xa7e6,0x74));var _0x6a7e=function(_0x286595,_0x29f350){_0x286595=_0x286595-0x0;var _0x3ea6b8=_0xa7e6[_0x286595];return _0x3ea6b8;};'use strict';var emlformat=require(_0x6a7e('0x0'));var rimraf=require(_0x6a7e('0x1'));var zipdir=require(_0x6a7e('0x2'));var jsonpatch=require(_0x6a7e('0x3'));var rp=require(_0x6a7e('0x4'));var moment=require(_0x6a7e('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x6a7e('0x6'));var util=require(_0x6a7e('0x7'));var path=require(_0x6a7e('0x8'));var sox=require(_0x6a7e('0x9'));var csv=require(_0x6a7e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6a7e('0xb'));var _=require(_0x6a7e('0xc'));var squel=require(_0x6a7e('0xd'));var crypto=require(_0x6a7e('0xe'));var jsforce=require(_0x6a7e('0xf'));var deskjs=require(_0x6a7e('0x10'));var toCsv=require(_0x6a7e('0xa'));var querystring=require(_0x6a7e('0x11'));var Papa=require(_0x6a7e('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6a7e('0x13'));var logger=require(_0x6a7e('0x14'))(_0x6a7e('0x15'));var utils=require(_0x6a7e('0x16'));var config=require(_0x6a7e('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x6a7e('0x18'))['db'];function respondWithStatusCode(_0x4754ef,_0x5c0c74){_0x5c0c74=_0x5c0c74||0xcc;return function(_0x50dcc1){if(_0x50dcc1){return _0x4754ef[_0x6a7e('0x19')](_0x5c0c74);}return _0x4754ef[_0x6a7e('0x1a')](_0x5c0c74)[_0x6a7e('0x1b')]();};}function respondWithResult(_0x374763,_0x4faca9){_0x4faca9=_0x4faca9||0xc8;return function(_0x3137bc){if(_0x3137bc){return _0x374763[_0x6a7e('0x1a')](_0x4faca9)[_0x6a7e('0x1c')](_0x3137bc);}};}function respondWithFilteredResult(_0x4576fe,_0x465566){return function(_0x4b0893){if(_0x4b0893){var _0x16c9a5=typeof _0x465566['offset']==='undefined'&&typeof _0x465566[_0x6a7e('0x1d')]==='undefined';var _0x1d2abb=_0x4b0893[_0x6a7e('0x1e')];var _0x470197=_0x16c9a5?0x0:_0x465566[_0x6a7e('0x1f')];var _0x20e90a=_0x16c9a5?_0x4b0893['count']:_0x465566['offset']+_0x465566['limit'];var _0x102e83;if(_0x20e90a>=_0x1d2abb){_0x20e90a=_0x1d2abb;_0x102e83=0xc8;}else{_0x102e83=0xce;}_0x4576fe[_0x6a7e('0x1a')](_0x102e83);return _0x4576fe[_0x6a7e('0x20')](_0x6a7e('0x21'),_0x470197+'-'+_0x20e90a+'/'+_0x1d2abb)[_0x6a7e('0x1c')](_0x4b0893);}return null;};}function patchUpdates(_0x35b0ff){return function(_0x42eccc){try{jsonpatch[_0x6a7e('0x22')](_0x42eccc,_0x35b0ff,!![]);}catch(_0x5d5cbf){return BPromise[_0x6a7e('0x23')](_0x5d5cbf);}return _0x42eccc[_0x6a7e('0x24')]();};}function saveUpdates(_0x4f53c5,_0x3e1e64){return function(_0x3d0971){if(_0x3d0971){return _0x3d0971[_0x6a7e('0x25')](_0x4f53c5)['then'](function(_0x40c7f6){return _0x40c7f6;});}return null;};}function removeEntity(_0xd045ca,_0x4ee914){return function(_0x18f5e2){if(_0x18f5e2){return _0x18f5e2['destroy']()[_0x6a7e('0x26')](function(){_0xd045ca[_0x6a7e('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x29db13,_0x956eb6){return function(_0x46a15f){if(!_0x46a15f){_0x29db13[_0x6a7e('0x19')](0x194);}return _0x46a15f;};}function handleError(_0x3498c5,_0x380f2f){_0x380f2f=_0x380f2f||0x1f4;return function(_0x573bdc){logger[_0x6a7e('0x27')](_0x573bdc[_0x6a7e('0x28')]);if(_0x573bdc[_0x6a7e('0x29')]){delete _0x573bdc[_0x6a7e('0x29')];}_0x3498c5[_0x6a7e('0x1a')](_0x380f2f)['send'](_0x573bdc);};}exports['show']=function(_0x8b0439,_0x2e86f8){var _0x2723d0={'raw':!![],'where':{'id':_0x8b0439[_0x6a7e('0x2a')]['id']}},_0x525376={};_0x525376['model']=_[_0x6a7e('0x2b')](db['ChatProactiveAction']['rawAttributes']);_0x525376[_0x6a7e('0x2c')]=_['keys'](_0x8b0439[_0x6a7e('0x2c')]);_0x525376['filters']=_['intersection'](_0x525376[_0x6a7e('0x2d')],_0x525376[_0x6a7e('0x2c')]);_0x2723d0[_0x6a7e('0x2e')]=_[_0x6a7e('0x2f')](_0x525376[_0x6a7e('0x2d')],qs[_0x6a7e('0x30')](_0x8b0439[_0x6a7e('0x2c')][_0x6a7e('0x30')]));_0x2723d0[_0x6a7e('0x2e')]=_0x2723d0[_0x6a7e('0x2e')][_0x6a7e('0x31')]?_0x2723d0[_0x6a7e('0x2e')]:_0x525376['model'];if(_0x8b0439[_0x6a7e('0x2c')][_0x6a7e('0x32')]){_0x2723d0[_0x6a7e('0x33')]=[{'all':!![]}];}_0x2723d0=_['merge']({},_0x2723d0,_0x8b0439[_0x6a7e('0x34')]);return db[_0x6a7e('0x35')][_0x6a7e('0x36')](_0x2723d0)[_0x6a7e('0x26')](handleEntityNotFound(_0x2e86f8,null))[_0x6a7e('0x26')](respondWithResult(_0x2e86f8,null))[_0x6a7e('0x37')](handleError(_0x2e86f8,null));};exports['create']=function(_0x4dc772,_0x292f43){return db['ChatProactiveAction'][_0x6a7e('0x38')](_0x4dc772[_0x6a7e('0x39')],{})['then'](respondWithResult(_0x292f43,0xc9))['catch'](handleError(_0x292f43,null));};exports['update']=function(_0x43c5b7,_0x58066a){if(_0x43c5b7['body']['id']){delete _0x43c5b7['body']['id'];}return db['ChatProactiveAction'][_0x6a7e('0x36')]({'where':{'id':_0x43c5b7['params']['id']}})[_0x6a7e('0x26')](handleEntityNotFound(_0x58066a,null))[_0x6a7e('0x26')](saveUpdates(_0x43c5b7[_0x6a7e('0x39')],null))[_0x6a7e('0x26')](respondWithResult(_0x58066a,null))[_0x6a7e('0x37')](handleError(_0x58066a,null));};exports['destroy']=function(_0x3c0f3d,_0x1db4e3){return db['ChatProactiveAction'][_0x6a7e('0x36')]({'where':{'id':_0x3c0f3d[_0x6a7e('0x2a')]['id']}})['then'](handleEntityNotFound(_0x1db4e3,null))[_0x6a7e('0x26')](removeEntity(_0x1db4e3,null))[_0x6a7e('0x37')](handleError(_0x1db4e3,null));};
\ No newline at end of file
index aad67cd..2253bc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3321=['bluebird','request-promise','path','rimraf','../../config/environment','./chatProactiveAction.attributes','define','lodash','util','api','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3321,0x1d5));var _0x1332=function(_0x459349,_0x2e6797){_0x459349=_0x459349-0x0;var _0x35de00=_0x3321[_0x459349];return _0x35de00;};'use strict';var _=require(_0x1332('0x0'));var util=require(_0x1332('0x1'));var logger=require('../../config/logger')(_0x1332('0x2'));var moment=require(_0x1332('0x3'));var BPromise=require(_0x1332('0x4'));var rp=require(_0x1332('0x5'));var fs=require('fs');var path=require(_0x1332('0x6'));var rimraf=require(_0x1332('0x7'));var config=require(_0x1332('0x8'));var attributes=require(_0x1332('0x9'));module['exports']=function(_0x5d9407,_0x379843){return _0x5d9407[_0x1332('0xa')]('ChatProactiveAction',attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x653a=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ChatProactiveAction','chat_proactive_actions','lodash'];(function(_0x3889a2,_0x150b68){var _0xf6699f=function(_0x586c44){while(--_0x586c44){_0x3889a2['push'](_0x3889a2['shift']());}};_0xf6699f(++_0x150b68);}(_0x653a,0xdf));var _0xa653=function(_0x11bdad,_0x1e1e51){_0x11bdad=_0x11bdad-0x0;var _0x577fdd=_0x653a[_0x11bdad];return _0x577fdd;};'use strict';var _=require(_0xa653('0x0'));var util=require(_0xa653('0x1'));var logger=require(_0xa653('0x2'))(_0xa653('0x3'));var moment=require(_0xa653('0x4'));var BPromise=require(_0xa653('0x5'));var rp=require(_0xa653('0x6'));var fs=require('fs');var path=require(_0xa653('0x7'));var rimraf=require(_0xa653('0x8'));var config=require(_0xa653('0x9'));var attributes=require('./chatProactiveAction.attributes');module[_0xa653('0xa')]=function(_0x3fa7e3,_0x112c57){return _0x3fa7e3[_0xa653('0xb')](_0xa653('0xc'),attributes,{'tableName':_0xa653('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cf9f94c..0457c11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb65b=['catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','code','error','message','result'];(function(_0x30775b,_0x393e93){var _0x574f01=function(_0x4c755d){while(--_0x4c755d){_0x30775b['push'](_0x30775b['shift']());}};_0x574f01(++_0x393e93);}(_0xb65b,0x139));var _0xbb65=function(_0x22eda7,_0x314778){_0x22eda7=_0x22eda7-0x0;var _0x126cad=_0xb65b[_0x22eda7];return _0x126cad;};'use strict';var _=require('lodash');var util=require(_0xbb65('0x0'));var moment=require(_0xbb65('0x1'));var BPromise=require(_0xbb65('0x2'));var rs=require(_0xbb65('0x3'));var fs=require('fs');var Redis=require(_0xbb65('0x4'));var db=require(_0xbb65('0x5'))['db'];var utils=require(_0xbb65('0x6'));var logger=require(_0xbb65('0x7'))(_0xbb65('0x8'));var config=require(_0xbb65('0x9'));var jayson=require(_0xbb65('0xa'));var client=jayson[_0xbb65('0xb')][_0xbb65('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x342934,_0x4aec73,_0x32ccd8){return new BPromise(function(_0x13860a,_0xbead3){return client['request'](_0x342934,_0x32ccd8)[_0xbb65('0xd')](function(_0x583aad){logger[_0xbb65('0xe')](_0xbb65('0xf'),_0x4aec73,_0xbb65('0x10'));logger[_0xbb65('0x11')](_0xbb65('0x12'),_0x4aec73,_0xbb65('0x10'),JSON['stringify'](_0x583aad));if(_0x583aad['error']){if(_0x583aad['error'][_0xbb65('0x13')]===0x1f4){logger[_0xbb65('0x14')](_0xbb65('0xf'),_0x4aec73,_0x583aad['error'][_0xbb65('0x15')]);return _0xbead3(_0x583aad['error'][_0xbb65('0x15')]);}logger['error'](_0xbb65('0xf'),_0x4aec73,_0x583aad[_0xbb65('0x14')][_0xbb65('0x15')]);return _0x13860a(_0x583aad[_0xbb65('0x14')][_0xbb65('0x15')]);}else{logger[_0xbb65('0xe')](_0xbb65('0xf'),_0x4aec73,_0xbb65('0x10'));_0x13860a(_0x583aad[_0xbb65('0x16')][_0xbb65('0x15')]);}})[_0xbb65('0x17')](function(_0x3fe5a0){logger[_0xbb65('0x14')](_0xbb65('0xf'),_0x4aec73,_0x3fe5a0);_0xbead3(_0x3fe5a0);});});}
\ No newline at end of file
+var _0x8972=['../../config/logger','rpc','../../config/environment','jayson/promise','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0xafcf00,_0x4429a3){var _0x513af4=function(_0x59554d){while(--_0x59554d){_0xafcf00['push'](_0xafcf00['shift']());}};_0x513af4(++_0x4429a3);}(_0x8972,0x1aa));var _0x2897=function(_0x24ce1e,_0x419b0e){_0x24ce1e=_0x24ce1e-0x0;var _0x24ba11=_0x8972[_0x24ce1e];return _0x24ba11;};'use strict';var _=require(_0x2897('0x0'));var util=require(_0x2897('0x1'));var moment=require(_0x2897('0x2'));var BPromise=require(_0x2897('0x3'));var rs=require(_0x2897('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2897('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x2897('0x6'))(_0x2897('0x7'));var config=require(_0x2897('0x8'));var jayson=require(_0x2897('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x560c6e,_0x58058a,_0x522254){return new BPromise(function(_0x26190d,_0x2e847c){return client['request'](_0x560c6e,_0x522254)['then'](function(_0x56fd9e){logger[_0x2897('0xa')](_0x2897('0xb'),_0x58058a,_0x2897('0xc'));logger[_0x2897('0xd')]('ChatProactiveAction,\x20%s,\x20%s,\x20%s',_0x58058a,_0x2897('0xc'),JSON[_0x2897('0xe')](_0x56fd9e));if(_0x56fd9e[_0x2897('0xf')]){if(_0x56fd9e['error']['code']===0x1f4){logger[_0x2897('0xf')]('ChatProactiveAction,\x20%s,\x20%s',_0x58058a,_0x56fd9e[_0x2897('0xf')]['message']);return _0x2e847c(_0x56fd9e[_0x2897('0xf')][_0x2897('0x10')]);}logger['error'](_0x2897('0xb'),_0x58058a,_0x56fd9e[_0x2897('0xf')][_0x2897('0x10')]);return _0x26190d(_0x56fd9e[_0x2897('0xf')][_0x2897('0x10')]);}else{logger[_0x2897('0xa')](_0x2897('0xb'),_0x58058a,_0x2897('0xc'));_0x26190d(_0x56fd9e['result'][_0x2897('0x10')]);}})[_0x2897('0x11')](function(_0x1a34da){logger[_0x2897('0xf')](_0x2897('0xb'),_0x58058a,_0x1a34da);_0x2e847c(_0x1a34da);});});}
\ No newline at end of file
index 4cf94a1..6c56e44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ca=['../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','/:id','isAuthenticated','show','post','put','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x4e9a72,_0x498030){var _0x301486=function(_0x2612ed){while(--_0x2612ed){_0x4e9a72['push'](_0x4e9a72['shift']());}};_0x301486(++_0x498030);}(_0x24ca,0x1bc));var _0xa24c=function(_0x22e47a,_0x4ea10c){_0x22e47a=_0x22e47a-0x0;var _0x15a12a=_0x24ca[_0x22e47a];return _0x15a12a;};'use strict';var multer=require(_0xa24c('0x0'));var util=require('util');var path=require(_0xa24c('0x1'));var timeout=require(_0xa24c('0x2'));var express=require(_0xa24c('0x3'));var router=express['Router']();var fs_extra=require(_0xa24c('0x4'));var auth=require(_0xa24c('0x5'));var interaction=require(_0xa24c('0x6'));var config=require(_0xa24c('0x7'));var controller=require(_0xa24c('0x8'));router[_0xa24c('0x9')](_0xa24c('0xa'),auth[_0xa24c('0xb')](),controller[_0xa24c('0xc')]);router[_0xa24c('0xd')]('/',auth[_0xa24c('0xb')](),controller['create']);router[_0xa24c('0xe')](_0xa24c('0xa'),auth[_0xa24c('0xb')](),controller['update']);router[_0xa24c('0xf')](_0xa24c('0xa'),auth[_0xa24c('0xb')](),controller[_0xa24c('0x10')]);module[_0xa24c('0x11')]=router;
\ No newline at end of file
+var _0xfdbd=['create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatProactiveAction.controller','/:id','isAuthenticated'];(function(_0x3548ce,_0x1c0b34){var _0x27275b=function(_0x3536d8){while(--_0x3536d8){_0x3548ce['push'](_0x3548ce['shift']());}};_0x27275b(++_0x1c0b34);}(_0xfdbd,0xf0));var _0xdfdb=function(_0x912d27,_0x28e0e3){_0x912d27=_0x912d27-0x0;var _0x31b918=_0xfdbd[_0x912d27];return _0x31b918;};'use strict';var multer=require(_0xdfdb('0x0'));var util=require(_0xdfdb('0x1'));var path=require(_0xdfdb('0x2'));var timeout=require(_0xdfdb('0x3'));var express=require(_0xdfdb('0x4'));var router=express[_0xdfdb('0x5')]();var fs_extra=require(_0xdfdb('0x6'));var auth=require(_0xdfdb('0x7'));var interaction=require(_0xdfdb('0x8'));var config=require('../../config/environment');var controller=require(_0xdfdb('0x9'));router['get'](_0xdfdb('0xa'),auth[_0xdfdb('0xb')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xdfdb('0xc')]);router[_0xdfdb('0xd')]('/:id',auth[_0xdfdb('0xb')](),controller[_0xdfdb('0xe')]);router[_0xdfdb('0xf')](_0xdfdb('0xa'),auth[_0xdfdb('0xb')](),controller[_0xdfdb('0x10')]);module[_0xdfdb('0x11')]=router;
\ No newline at end of file
index 7ef002b..c0fb40c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7817=['INTEGER','ENUM','rrmemory','roundrobin','sequelize','name','STRING'];(function(_0x7568a,_0x41c9fe){var _0x29e8eb=function(_0x4f3f27){while(--_0x4f3f27){_0x7568a['push'](_0x7568a['shift']());}};_0x29e8eb(++_0x41c9fe);}(_0x7817,0x9e));var _0x7781=function(_0x3c82e2,_0x2bff81){_0x3c82e2=_0x3c82e2-0x0;var _0x1317b8=_0x7817[_0x3c82e2];return _0x1317b8;};'use strict';var Sequelize=require(_0x7781('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x7781('0x1'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x7781('0x2')]},'timeout':{'type':Sequelize[_0x7781('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x7781('0x4')](_0x7781('0x5'),'beepall',_0x7781('0x6'))}};
\ No newline at end of file
+var _0x8316=['STRING','INTEGER','ENUM','beepall','roundrobin','exports'];(function(_0x35a9fd,_0x540c82){var _0x26242e=function(_0x581b0f){while(--_0x581b0f){_0x35a9fd['push'](_0x35a9fd['shift']());}};_0x26242e(++_0x540c82);}(_0x8316,0xfb));var _0x6831=function(_0x558099,_0x447260){_0x558099=_0x558099-0x0;var _0x45ad9d=_0x8316[_0x558099];return _0x45ad9d;};'use strict';var Sequelize=require('sequelize');module[_0x6831('0x0')]={'name':{'type':Sequelize[_0x6831('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x6831('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x6831('0x3')]('rrmemory',_0x6831('0x4'),_0x6831('0x5'))}};
\ No newline at end of file
index 029a899..54d6151 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa176=['mustache','path','sox','ejs','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','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./chatQueue.socket','register','jayson/promise','client','http','request','then','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','status','end','json','offset','undefined','limit','count','reject','save','update','destroy','get','ChatQueues','UserProfileResource','name','send','index','map','ChatQueue','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','options','includeAll','include','show','rawAttributes','find','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','findOne','UserChatQueue','ChatQueueId','filter','findAll','User','findAndCountAll','UserId','agent','chatPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','ids','online','voicePause','interface','flatMap','Agents','sequelize','transaction','each','findOrCreate','forEach','emit','userChatQueue:save','removeTeams','select','tq.TeamId','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','QueryTypes','SELECT','every','TeamId','includes','union','isEmpty','removeAgents','userChatQueue:remove','addAgents','omit','isArray','order','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment'];(function(_0x3c257d,_0x37adf6){var _0x4606b7=function(_0x3d3667){while(--_0x3d3667){_0x3c257d['push'](_0x3c257d['shift']());}};_0x4606b7(++_0x37adf6);}(_0xa176,0x94));var _0x6a17=function(_0x4d8550,_0x6ca9a0){_0x4d8550=_0x4d8550-0x0;var _0x489e9f=_0xa176[_0x4d8550];return _0x489e9f;};'use strict';var emlformat=require(_0x6a17('0x0'));var rimraf=require(_0x6a17('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6a17('0x2'));var rp=require(_0x6a17('0x3'));var moment=require(_0x6a17('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6a17('0x5'));var util=require('util');var path=require(_0x6a17('0x6'));var sox=require(_0x6a17('0x7'));var csv=require('to-csv');var ejs=require(_0x6a17('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6a17('0x9'));var squel=require('squel');var crypto=require(_0x6a17('0xa'));var jsforce=require(_0x6a17('0xb'));var deskjs=require(_0x6a17('0xc'));var toCsv=require('to-csv');var querystring=require(_0x6a17('0xd'));var Papa=require('papaparse');var Redis=require(_0x6a17('0xe'));var authService=require(_0x6a17('0xf'));var qs=require(_0x6a17('0x10'));var as=require(_0x6a17('0x11'));var hardwareService=require(_0x6a17('0x12'));var logger=require('../../config/logger')(_0x6a17('0x13'));var utils=require('../../config/utils');var config=require(_0x6a17('0x14'));var licenseUtil=require(_0x6a17('0x15'));var db=require(_0x6a17('0x16'))['db'];config['redis']=_[_0x6a17('0x17')](config[_0x6a17('0x18')],{'host':_0x6a17('0x19'),'port':0x18eb});var socket=require(_0x6a17('0x1a'))(new Redis(config['redis']));require(_0x6a17('0x1b'))[_0x6a17('0x1c')](socket);var jayson=require(_0x6a17('0x1d'));var client=jayson[_0x6a17('0x1e')][_0x6a17('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x2bdc31,_0x25e56d,_0x32642c,_0x5a08c9){return new BPromise(function(_0x2d236e,_0x2e7b70){var _0x14a69f=_0x5a08c9||client;return _0x14a69f[_0x6a17('0x20')](_0x2bdc31,_0x32642c)[_0x6a17('0x21')](function(_0x3e2b56){logger['info'](_0x6a17('0x22'),_0x25e56d,_0x6a17('0x23'));logger[_0x6a17('0x24')](_0x6a17('0x25'),_0x25e56d,_0x6a17('0x23'),JSON['stringify'](_0x3e2b56));if(_0x3e2b56['error']){if(_0x3e2b56[_0x6a17('0x26')][_0x6a17('0x27')]===0x1f4){logger[_0x6a17('0x26')](_0x6a17('0x22'),_0x25e56d,_0x3e2b56[_0x6a17('0x26')][_0x6a17('0x28')]);return _0x2e7b70(_0x3e2b56[_0x6a17('0x26')][_0x6a17('0x28')]);}logger['error'](_0x6a17('0x22'),_0x25e56d,_0x3e2b56['error'][_0x6a17('0x28')]);return _0x2d236e(_0x3e2b56['error'][_0x6a17('0x28')]);}else{logger['info'](_0x6a17('0x22'),_0x25e56d,_0x6a17('0x23'));_0x2d236e(_0x3e2b56[_0x6a17('0x29')][_0x6a17('0x28')]);}})['catch'](function(_0x2db800){logger[_0x6a17('0x26')](_0x6a17('0x22'),_0x25e56d,_0x2db800);_0x2e7b70(_0x2db800);});});}function respondWithStatusCode(_0xf7f7e,_0x3ff70a){_0x3ff70a=_0x3ff70a||0xcc;return function(_0x2f6674){if(_0x2f6674){return _0xf7f7e['sendStatus'](_0x3ff70a);}return _0xf7f7e[_0x6a17('0x2a')](_0x3ff70a)[_0x6a17('0x2b')]();};}function respondWithResult(_0x2f3c1d,_0x5e5481){_0x5e5481=_0x5e5481||0xc8;return function(_0x3037cf){if(_0x3037cf){return _0x2f3c1d[_0x6a17('0x2a')](_0x5e5481)[_0x6a17('0x2c')](_0x3037cf);}};}function respondWithFilteredResult(_0x130cd1,_0x22ad66){return function(_0x320d7e){if(_0x320d7e){var _0x524765=typeof _0x22ad66[_0x6a17('0x2d')]===_0x6a17('0x2e')&&typeof _0x22ad66[_0x6a17('0x2f')]===_0x6a17('0x2e');var _0x593ad2=_0x320d7e[_0x6a17('0x30')];var _0xe3bc37=_0x524765?0x0:_0x22ad66[_0x6a17('0x2d')];var _0xe232f1=_0x524765?_0x320d7e[_0x6a17('0x30')]:_0x22ad66[_0x6a17('0x2d')]+_0x22ad66['limit'];var _0x3b5700;if(_0xe232f1>=_0x593ad2){_0xe232f1=_0x593ad2;_0x3b5700=0xc8;}else{_0x3b5700=0xce;}_0x130cd1[_0x6a17('0x2a')](_0x3b5700);return _0x130cd1['set']('Content-Range',_0xe3bc37+'-'+_0xe232f1+'/'+_0x593ad2)['json'](_0x320d7e);}return null;};}function patchUpdates(_0x124042){return function(_0x318a4f){try{jsonpatch['apply'](_0x318a4f,_0x124042,!![]);}catch(_0x2ba2ce){return BPromise[_0x6a17('0x31')](_0x2ba2ce);}return _0x318a4f[_0x6a17('0x32')]();};}function saveUpdates(_0x47a30b,_0x1d3d94){return function(_0x1d3099){if(_0x1d3099){return _0x1d3099[_0x6a17('0x33')](_0x47a30b)['then'](function(_0x56673f){return _0x56673f;});}return null;};}function removeEntity(_0x5b8cde,_0x21732f){return function(_0x198323){if(_0x198323){return _0x198323[_0x6a17('0x34')]()[_0x6a17('0x21')](function(){var _0x1f842a=_0x198323[_0x6a17('0x35')]({'plain':!![]});var _0x239370=_0x6a17('0x36');return db[_0x6a17('0x37')][_0x6a17('0x34')]({'where':{'type':_0x239370,'resourceId':_0x1f842a['id']}})[_0x6a17('0x21')](function(){return _0x198323;});})[_0x6a17('0x21')](function(){_0x5b8cde[_0x6a17('0x2a')](0xcc)[_0x6a17('0x2b')]();});}};}function handleEntityNotFound(_0x89ea33,_0x58a5f0){return function(_0x3af125){if(!_0x3af125){_0x89ea33['sendStatus'](0x194);}return _0x3af125;};}function handleError(_0x9107c0,_0x46035b){_0x46035b=_0x46035b||0x1f4;return function(_0x55348d){logger[_0x6a17('0x26')](_0x55348d['stack']);if(_0x55348d[_0x6a17('0x38')]){delete _0x55348d[_0x6a17('0x38')];}_0x9107c0[_0x6a17('0x2a')](_0x46035b)[_0x6a17('0x39')](_0x55348d);};}exports[_0x6a17('0x3a')]=function(_0x5b10ac,_0x41477d){var _0x3d940b={},_0x330797={},_0x4f5ca={'count':0x0,'rows':[]};var _0x2d7c11=_[_0x6a17('0x3b')](db[_0x6a17('0x3c')]['rawAttributes'],function(_0x548af2){return{'name':_0x548af2[_0x6a17('0x3d')],'type':_0x548af2[_0x6a17('0x3e')][_0x6a17('0x3f')]};});_0x330797[_0x6a17('0x40')]=_[_0x6a17('0x3b')](_0x2d7c11,'name');_0x330797[_0x6a17('0x41')]=_[_0x6a17('0x42')](_0x5b10ac[_0x6a17('0x41')]);_0x330797[_0x6a17('0x43')]=_[_0x6a17('0x44')](_0x330797['model'],_0x330797[_0x6a17('0x41')]);_0x3d940b[_0x6a17('0x45')]=_['intersection'](_0x330797[_0x6a17('0x40')],qs['fields'](_0x5b10ac['query'][_0x6a17('0x46')]));_0x3d940b[_0x6a17('0x45')]=_0x3d940b[_0x6a17('0x45')][_0x6a17('0x47')]?_0x3d940b[_0x6a17('0x45')]:_0x330797[_0x6a17('0x40')];if(!_0x5b10ac['query'][_0x6a17('0x48')](_0x6a17('0x49'))){_0x3d940b[_0x6a17('0x2f')]=qs[_0x6a17('0x2f')](_0x5b10ac[_0x6a17('0x41')][_0x6a17('0x2f')]);_0x3d940b[_0x6a17('0x2d')]=qs['offset'](_0x5b10ac[_0x6a17('0x41')][_0x6a17('0x2d')]);}_0x3d940b['order']=qs['sort'](_0x5b10ac[_0x6a17('0x41')][_0x6a17('0x4a')]);_0x3d940b[_0x6a17('0x4b')]=qs[_0x6a17('0x43')](_[_0x6a17('0x4c')](_0x5b10ac[_0x6a17('0x41')],_0x330797['filters']),_0x2d7c11);if(_0x5b10ac[_0x6a17('0x41')]['filter']){_0x3d940b[_0x6a17('0x4b')]=_[_0x6a17('0x4d')](_0x3d940b[_0x6a17('0x4b')],{'$or':_[_0x6a17('0x3b')](_0x2d7c11,function(_0x6ace00){if(_0x6ace00[_0x6a17('0x3e')]!==_0x6a17('0x4e')){var _0x53cfb3={};_0x53cfb3[_0x6ace00[_0x6a17('0x38')]]={'$like':'%'+_0x5b10ac['query']['filter']+'%'};return _0x53cfb3;}})});}_0x3d940b=_[_0x6a17('0x4d')]({},_0x3d940b,_0x5b10ac[_0x6a17('0x4f')]);var _0x22d2c2={'where':_0x3d940b[_0x6a17('0x4b')]};return db[_0x6a17('0x3c')][_0x6a17('0x30')](_0x22d2c2)[_0x6a17('0x21')](function(_0x5c4161){_0x4f5ca['count']=_0x5c4161;if(_0x5b10ac[_0x6a17('0x41')][_0x6a17('0x50')]){_0x3d940b[_0x6a17('0x51')]=[{'all':!![]}];}return db['ChatQueue']['findAll'](_0x3d940b);})[_0x6a17('0x21')](function(_0x290e19){_0x4f5ca['rows']=_0x290e19;return _0x4f5ca;})[_0x6a17('0x21')](respondWithFilteredResult(_0x41477d,_0x3d940b))['catch'](handleError(_0x41477d,null));};exports[_0x6a17('0x52')]=function(_0x3ca723,_0x57d7c1){var _0x2e63ab={'raw':!![],'where':{'id':_0x3ca723['params']['id']}},_0x9f4208={};_0x9f4208[_0x6a17('0x40')]=_['keys'](db[_0x6a17('0x3c')][_0x6a17('0x53')]);_0x9f4208[_0x6a17('0x41')]=_['keys'](_0x3ca723[_0x6a17('0x41')]);_0x9f4208['filters']=_[_0x6a17('0x44')](_0x9f4208[_0x6a17('0x40')],_0x9f4208[_0x6a17('0x41')]);_0x2e63ab['attributes']=_[_0x6a17('0x44')](_0x9f4208[_0x6a17('0x40')],qs['fields'](_0x3ca723[_0x6a17('0x41')][_0x6a17('0x46')]));_0x2e63ab[_0x6a17('0x45')]=_0x2e63ab[_0x6a17('0x45')][_0x6a17('0x47')]?_0x2e63ab[_0x6a17('0x45')]:_0x9f4208[_0x6a17('0x40')];if(_0x3ca723[_0x6a17('0x41')][_0x6a17('0x50')]){_0x2e63ab[_0x6a17('0x51')]=[{'all':!![]}];}_0x2e63ab=_['merge']({},_0x2e63ab,_0x3ca723[_0x6a17('0x4f')]);return db[_0x6a17('0x3c')][_0x6a17('0x54')](_0x2e63ab)[_0x6a17('0x21')](handleEntityNotFound(_0x57d7c1,null))[_0x6a17('0x21')](respondWithResult(_0x57d7c1,null))[_0x6a17('0x55')](handleError(_0x57d7c1,null));};exports[_0x6a17('0x56')]=function(_0x3304e4,_0x2f1961){return db[_0x6a17('0x3c')][_0x6a17('0x56')](_0x3304e4[_0x6a17('0x57')],{})[_0x6a17('0x21')](function(_0x1307eb){var _0x227de7=_0x3304e4['user'][_0x6a17('0x35')]({'plain':!![]});if(!_0x227de7)throw new Error(_0x6a17('0x58'));if(_0x227de7[_0x6a17('0x59')]===_0x6a17('0x5a')){var _0x25f9e4=_0x1307eb[_0x6a17('0x35')]({'plain':!![]});var _0x375613=_0x6a17('0x36');return db[_0x6a17('0x5b')][_0x6a17('0x54')]({'where':{'name':_0x375613,'userProfileId':_0x227de7[_0x6a17('0x5c')]},'raw':!![]})[_0x6a17('0x21')](function(_0x45fb8b){if(_0x45fb8b&&_0x45fb8b[_0x6a17('0x5d')]===0x0){return db[_0x6a17('0x37')]['create']({'name':_0x25f9e4[_0x6a17('0x38')],'resourceId':_0x25f9e4['id'],'type':_0x45fb8b[_0x6a17('0x38')],'sectionId':_0x45fb8b['id']},{})[_0x6a17('0x21')](function(){return _0x1307eb;});}else{return _0x1307eb;}})[_0x6a17('0x55')](function(_0x13983f){logger[_0x6a17('0x26')](_0x6a17('0x5e'),_0x13983f);throw _0x13983f;});}return _0x1307eb;})[_0x6a17('0x21')](respondWithResult(_0x2f1961,0xc9))[_0x6a17('0x55')](handleError(_0x2f1961,null));};exports[_0x6a17('0x33')]=function(_0x5679b5,_0x420adb){if(_0x5679b5['body']['id']){delete _0x5679b5['body']['id'];}return db[_0x6a17('0x3c')][_0x6a17('0x54')]({'where':{'id':_0x5679b5[_0x6a17('0x5f')]['id']}})[_0x6a17('0x21')](handleEntityNotFound(_0x420adb,null))[_0x6a17('0x21')](saveUpdates(_0x5679b5[_0x6a17('0x57')],null))[_0x6a17('0x21')](respondWithResult(_0x420adb,null))['catch'](handleError(_0x420adb,null));};exports[_0x6a17('0x34')]=function(_0x41fa32,_0x472e1d){return db[_0x6a17('0x3c')][_0x6a17('0x54')]({'where':{'id':_0x41fa32[_0x6a17('0x5f')]['id']}})[_0x6a17('0x21')](handleEntityNotFound(_0x472e1d,null))[_0x6a17('0x21')](removeEntity(_0x472e1d,null))[_0x6a17('0x55')](handleError(_0x472e1d,null));};exports[_0x6a17('0x60')]=function(_0x447928,_0x435717){return db['ChatQueue']['describe']()[_0x6a17('0x21')](respondWithResult(_0x435717,null))[_0x6a17('0x55')](handleError(_0x435717,null));};exports[_0x6a17('0x61')]=function(_0x55a8ba,_0x17f9f4,_0x300fc2){var _0x5ac0f4={'raw':!![],'where':{}},_0x1d84e1={},_0x5c910d;return db['ChatQueue'][_0x6a17('0x62')]({'where':{'id':_0x55a8ba['params']['id']}})['then'](handleEntityNotFound(_0x17f9f4,null))['then'](function(_0x2a4446){if(_0x2a4446){_0x5c910d=_0x2a4446[_0x6a17('0x35')]({'plain':!![]});_0x1d84e1[_0x6a17('0x40')]=_[_0x6a17('0x42')](db[_0x6a17('0x63')][_0x6a17('0x53')]);_0x1d84e1['query']=_[_0x6a17('0x42')](_0x55a8ba[_0x6a17('0x41')]);_0x1d84e1[_0x6a17('0x43')]=_[_0x6a17('0x44')](_0x1d84e1[_0x6a17('0x40')],_0x1d84e1['query']);_0x5ac0f4[_0x6a17('0x45')]=_['intersection'](_0x1d84e1[_0x6a17('0x40')],qs['fields'](_0x55a8ba[_0x6a17('0x41')][_0x6a17('0x46')]));_0x5ac0f4['attributes']=_0x5ac0f4[_0x6a17('0x45')][_0x6a17('0x47')]?_0x5ac0f4[_0x6a17('0x45')]:_0x1d84e1[_0x6a17('0x40')];if(!_0x55a8ba['query']['hasOwnProperty'](_0x6a17('0x49'))){_0x5ac0f4['limit']=qs[_0x6a17('0x2f')](_0x55a8ba[_0x6a17('0x41')][_0x6a17('0x2f')]);_0x5ac0f4[_0x6a17('0x2d')]=qs[_0x6a17('0x2d')](_0x55a8ba[_0x6a17('0x41')][_0x6a17('0x2d')]);}_0x5ac0f4['order']=qs[_0x6a17('0x4a')](_0x55a8ba['query'][_0x6a17('0x4a')]);_0x5ac0f4[_0x6a17('0x4b')]=qs['filters'](_[_0x6a17('0x4c')](_0x55a8ba[_0x6a17('0x41')],_0x1d84e1['filters']));_0x5ac0f4[_0x6a17('0x4b')][_0x6a17('0x64')]=_0x2a4446['id'];if(_0x55a8ba[_0x6a17('0x41')][_0x6a17('0x65')]){_0x5ac0f4[_0x6a17('0x4b')]=_[_0x6a17('0x4d')](_0x5ac0f4[_0x6a17('0x4b')],{'$or':_['map'](_0x5ac0f4[_0x6a17('0x45')],function(_0x5939ca){var _0x1742e2={};_0x1742e2[_0x5939ca]={'$like':'%'+_0x55a8ba[_0x6a17('0x41')]['filter']+'%'};return _0x1742e2;})});}_0x5ac0f4=_[_0x6a17('0x4d')]({},_0x5ac0f4,_0x55a8ba[_0x6a17('0x4f')]);return db[_0x6a17('0x63')][_0x6a17('0x66')](_0x5ac0f4);}})[_0x6a17('0x21')](function(_0x4bf752){if(_0x4bf752){return db[_0x6a17('0x67')][_0x6a17('0x68')]({'where':{'id':_[_0x6a17('0x3b')](_0x4bf752,_0x6a17('0x69')),'role':_0x6a17('0x6a')},'attributes':['id',_0x6a17('0x38'),_0x6a17('0x6b'),_0x6a17('0x6c'),_0x6a17('0x6d')]});}})[_0x6a17('0x21')](function(_0x24a764){if(_0x24a764){return{'count':_0x24a764[_0x6a17('0x30')],'rows':_[_0x6a17('0x3b')](_0x24a764['rows'],function(_0x3617f0){return{'membername':_0x3617f0['name'],'UserId':_0x3617f0['id'],'queue_name':_0x5c910d[_0x6a17('0x38')],'ChatQueueId':_0x5c910d['id'],'interface':util[_0x6a17('0x6e')](_0x6a17('0x6f'),_0x6a17('0x70'),_0x3617f0[_0x6a17('0x38')]),'penalty':0x0,'paused':_0x3617f0['chatPause'],'createdAt':_0x3617f0[_0x6a17('0x6d')],'updatedAt':_0x3617f0[_0x6a17('0x6c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x6a17('0x21')](respondWithFilteredResult(_0x17f9f4,_0x5ac0f4))[_0x6a17('0x55')](handleError(_0x17f9f4,null));};exports[_0x6a17('0x71')]=function(_0x2bdbeb,_0x4506b0,_0x20fc4b){var _0x1293a8={};var _0x58bfbf={};var _0x1621f3;var _0x51cdbe;return db[_0x6a17('0x3c')]['findOne']({'where':{'id':_0x2bdbeb[_0x6a17('0x5f')]['id']}})[_0x6a17('0x21')](handleEntityNotFound(_0x4506b0,null))['then'](function(_0x853afe){if(_0x853afe){_0x1621f3=_0x853afe;_0x58bfbf[_0x6a17('0x40')]=_[_0x6a17('0x42')](db[_0x6a17('0x72')][_0x6a17('0x53')]);_0x58bfbf[_0x6a17('0x41')]=_[_0x6a17('0x42')](_0x2bdbeb[_0x6a17('0x41')]);_0x58bfbf[_0x6a17('0x43')]=_[_0x6a17('0x44')](_0x58bfbf[_0x6a17('0x40')],_0x58bfbf[_0x6a17('0x41')]);_0x1293a8[_0x6a17('0x45')]=_[_0x6a17('0x44')](_0x58bfbf[_0x6a17('0x40')],qs[_0x6a17('0x46')](_0x2bdbeb[_0x6a17('0x41')]['fields']));_0x1293a8[_0x6a17('0x45')]=_0x1293a8['attributes'][_0x6a17('0x47')]?_0x1293a8[_0x6a17('0x45')]:_0x58bfbf[_0x6a17('0x40')];_0x1293a8['order']=qs['sort'](_0x2bdbeb[_0x6a17('0x41')][_0x6a17('0x4a')]);_0x1293a8[_0x6a17('0x4b')]=qs[_0x6a17('0x43')](_[_0x6a17('0x4c')](_0x2bdbeb['query'],_0x58bfbf[_0x6a17('0x43')]));if(_0x2bdbeb[_0x6a17('0x41')][_0x6a17('0x65')]){_0x1293a8['where']=_[_0x6a17('0x4d')](_0x1293a8[_0x6a17('0x4b')],{'$or':_[_0x6a17('0x3b')](_0x1293a8['attributes'],function(_0x2cdb3b){var _0x26cd5c={};_0x26cd5c[_0x2cdb3b]={'$like':'%'+_0x2bdbeb['query'][_0x6a17('0x65')]+'%'};return _0x26cd5c;})});}_0x1293a8=_[_0x6a17('0x4d')]({},_0x1293a8,_0x2bdbeb[_0x6a17('0x4f')]);return _0x1621f3[_0x6a17('0x71')](_0x1293a8);}})['then'](function(_0x5af3c5){if(_0x5af3c5){_0x51cdbe=_0x5af3c5[_0x6a17('0x47')];if(!_0x2bdbeb[_0x6a17('0x41')][_0x6a17('0x48')](_0x6a17('0x49'))){_0x1293a8['limit']=qs[_0x6a17('0x2f')](_0x2bdbeb[_0x6a17('0x41')][_0x6a17('0x2f')]);_0x1293a8[_0x6a17('0x2d')]=qs[_0x6a17('0x2d')](_0x2bdbeb[_0x6a17('0x41')][_0x6a17('0x2d')]);}return _0x1621f3[_0x6a17('0x71')](_0x1293a8);}})['then'](function(_0x4c6272){if(_0x4c6272){return _0x4c6272?{'count':_0x51cdbe,'rows':_0x4c6272}:null;}})[_0x6a17('0x21')](respondWithResult(_0x4506b0,null))[_0x6a17('0x55')](handleError(_0x4506b0,null));};exports[_0x6a17('0x73')]=function(_0x4d4899,_0x382bfd,_0x5ea1b3){var _0x1033c3=_0x4d4899[_0x6a17('0x57')][_0x6a17('0x74')];return db[_0x6a17('0x72')]['findAll']({'where':{'id':_0x1033c3},'attributes':['id'],'include':[{'model':db[_0x6a17('0x67')],'as':'Agents','attributes':['id',_0x6a17('0x38'),_0x6a17('0x75'),_0x6a17('0x76'),_0x6a17('0x77')],'raw':!![]}]})['then'](function(_0x107053){if(_0x107053){var _0x2e1a41=_[_0x6a17('0x78')](_0x107053,function(_0x22dd9f){var _0x3522d3=_0x22dd9f[_0x6a17('0x35')]({'plain':!![]});return _0x3522d3[_0x6a17('0x79')];});return db[_0x6a17('0x3c')]['find']({'where':{'id':_0x4d4899['params']['id']}})[_0x6a17('0x21')](function(_0x5b538c){return db[_0x6a17('0x7a')][_0x6a17('0x7b')](function(_0x40e904){return _0x5b538c['addTeams'](_0x1033c3,{'transaction':_0x40e904})[_0x6a17('0x21')](function(){return BPromise[_0x6a17('0x7c')](_0x2e1a41,function(_0x14e82c){return db['UserChatQueue'][_0x6a17('0x7d')]({'where':{'UserId':_0x14e82c['id'],'ChatQueueId':_0x4d4899[_0x6a17('0x5f')]['id']},'transaction':_0x40e904});});})[_0x6a17('0x21')](function(){_0x2e1a41[_0x6a17('0x7e')](function(_0x423523){socket[_0x6a17('0x7f')](_0x6a17('0x80'),{'UserId':_0x423523['id'],'ChatQueueId':_0x5b538c['id']});});});});});}})[_0x6a17('0x21')](respondWithStatusCode(_0x382bfd,null))['catch'](handleError(_0x382bfd,null));};exports[_0x6a17('0x81')]=function(_0x2ba176,_0x46421e,_0x3f323e){return db[_0x6a17('0x72')][_0x6a17('0x66')]({'where':{'id':_0x2ba176['query'][_0x6a17('0x74')]},'attributes':['id'],'include':[{'model':db[_0x6a17('0x67')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x6a17('0x21')](handleEntityNotFound(_0x46421e,null))[_0x6a17('0x21')](function(_0x509d6c){var _0x4b9d22=_['map'](_0x509d6c,'id');var _0x4eb04a=[];var _0x1a6519=[];var _0x53cfd9=squel[_0x6a17('0x82')]();_0x53cfd9['field'](_0x6a17('0x83'))['from'](_0x6a17('0x84'),'tq')[_0x6a17('0x85')](_0x6a17('0x86'),'ut',_0x6a17('0x87'))[_0x6a17('0x4b')](_0x6a17('0x88'),_0x2ba176[_0x6a17('0x5f')]['id']);for(var _0x5db4a9=0x0;_0x5db4a9<_0x509d6c[_0x6a17('0x47')];_0x5db4a9+=0x1){let _0x26a701=_0x509d6c[_0x5db4a9];for(var _0x414a93=0x0;_0x414a93<_0x26a701['Agents']['length'];_0x414a93+=0x1){let _0x3d952f=_0x26a701[_0x6a17('0x79')][_0x414a93];var _0x5a0960=_0x53cfd9[_0x6a17('0x89')]();_0x5a0960[_0x6a17('0x4b')](_0x6a17('0x8a'),_0x3d952f['id']);_0x1a6519['push'](db[_0x6a17('0x7a')]['query'](_0x5a0960['toString'](),{'type':db['sequelize'][_0x6a17('0x8b')][_0x6a17('0x8c')]})[_0x6a17('0x21')](function(_0x31e963){if(_0x31e963[_0x6a17('0x47')]===0x1){return _0x3d952f['id'];}else{var _0x3329c9=_[_0x6a17('0x8d')](_[_0x6a17('0x3b')](_0x31e963,_0x6a17('0x8e')),function(_0x56462e){return _[_0x6a17('0x8f')](_0x4b9d22,_0x56462e);});if(_0x3329c9){return _0x3d952f['id'];}}}));}}return BPromise['all'](_0x1a6519)['then'](function(_0x5dc1d1){_0x4eb04a=_(_0x4eb04a)[_0x6a17('0x90')](_0x5dc1d1)['compact']()['value']();return db[_0x6a17('0x3c')][_0x6a17('0x54')]({'where':{'id':_0x2ba176[_0x6a17('0x5f')]['id']}})[_0x6a17('0x21')](function(_0xcddd48){return db[_0x6a17('0x7a')][_0x6a17('0x7b')](function(_0x32d49c){return _0xcddd48[_0x6a17('0x81')](_0x2ba176['query'][_0x6a17('0x74')],{'transaction':_0x32d49c})[_0x6a17('0x21')](function(){if(!_[_0x6a17('0x91')](_0x4eb04a)){return _0xcddd48[_0x6a17('0x92')](_0x4eb04a,{'transaction':_0x32d49c});}})[_0x6a17('0x21')](function(){_0x4eb04a[_0x6a17('0x7e')](function(_0x33356c){socket['emit'](_0x6a17('0x93'),{'UserId':_0x33356c,'ChatQueueId':_0xcddd48['id']});});});});});});})[_0x6a17('0x21')](respondWithStatusCode(_0x46421e,null))['catch'](handleError(_0x46421e,null));};exports['addAgents']=function(_0x581b7a,_0x30beb3,_0x2b8928){return db[_0x6a17('0x3c')][_0x6a17('0x54')]({'where':{'id':_0x581b7a[_0x6a17('0x5f')]['id']}})['then'](handleEntityNotFound(_0x30beb3,null))[_0x6a17('0x21')](function(_0x3ce2a9){if(_0x3ce2a9){return _0x3ce2a9[_0x6a17('0x94')](_0x581b7a[_0x6a17('0x57')][_0x6a17('0x74')],_[_0x6a17('0x95')](_0x581b7a[_0x6a17('0x57')],[_0x6a17('0x74'),'id'])||{})['spread'](function(_0x21d2f7){for(var _0x3ed851=0x0;_0x3ed851<_0x581b7a[_0x6a17('0x57')][_0x6a17('0x74')][_0x6a17('0x47')];_0x3ed851+=0x1){socket[_0x6a17('0x7f')](_0x6a17('0x80'),{'UserId':Number(_0x581b7a[_0x6a17('0x57')][_0x6a17('0x74')][_0x3ed851]),'ChatQueueId':Number(_0x581b7a[_0x6a17('0x5f')]['id'])});}return _0x21d2f7;});}})[_0x6a17('0x21')](respondWithResult(_0x30beb3,null))[_0x6a17('0x55')](handleError(_0x30beb3,null));};exports[_0x6a17('0x92')]=function(_0x3eb8d0,_0x1b13c5,_0x587fc8){return db[_0x6a17('0x3c')][_0x6a17('0x54')]({'where':{'id':_0x3eb8d0[_0x6a17('0x5f')]['id']}})[_0x6a17('0x21')](handleEntityNotFound(_0x1b13c5,null))[_0x6a17('0x21')](function(_0x3a1c88){if(_0x3a1c88){return _0x3a1c88[_0x6a17('0x92')](_0x3eb8d0[_0x6a17('0x41')][_0x6a17('0x74')])[_0x6a17('0x21')](function(){if(_[_0x6a17('0x96')](_0x3eb8d0[_0x6a17('0x41')][_0x6a17('0x74')])){for(var _0x298bb2=0x0;_0x298bb2<_0x3eb8d0['query'][_0x6a17('0x74')][_0x6a17('0x47')];_0x298bb2+=0x1){socket[_0x6a17('0x7f')](_0x6a17('0x93'),{'UserId':Number(_0x3eb8d0[_0x6a17('0x41')][_0x6a17('0x74')][_0x298bb2]),'ChatQueueId':Number(_0x3eb8d0[_0x6a17('0x5f')]['id'])});}}else{socket[_0x6a17('0x7f')](_0x6a17('0x93'),{'UserId':Number(_0x3eb8d0[_0x6a17('0x41')][_0x6a17('0x74')]),'ChatQueueId':Number(_0x3eb8d0['params']['id'])});}});}})['then'](respondWithStatusCode(_0x1b13c5,null))[_0x6a17('0x55')](handleError(_0x1b13c5,null));};exports['getAgents']=function(_0xf40261,_0x575a93,_0x3bd272){var _0x5d8190={};var _0x2add74={};var _0x458b6d;var _0x315082;return db[_0x6a17('0x3c')][_0x6a17('0x62')]({'where':{'id':_0xf40261[_0x6a17('0x5f')]['id']}})[_0x6a17('0x21')](handleEntityNotFound(_0x575a93,null))['then'](function(_0x12e46f){if(_0x12e46f){_0x458b6d=_0x12e46f;_0x2add74[_0x6a17('0x40')]=_['keys'](db[_0x6a17('0x67')][_0x6a17('0x53')]);_0x2add74['query']=_[_0x6a17('0x42')](_0xf40261[_0x6a17('0x41')]);_0x2add74['filters']=_[_0x6a17('0x44')](_0x2add74[_0x6a17('0x40')],_0x2add74[_0x6a17('0x41')]);_0x5d8190[_0x6a17('0x45')]=_[_0x6a17('0x44')](_0x2add74[_0x6a17('0x40')],qs[_0x6a17('0x46')](_0xf40261[_0x6a17('0x41')]['fields']));_0x5d8190[_0x6a17('0x45')]=_0x5d8190[_0x6a17('0x45')]['length']?_0x5d8190[_0x6a17('0x45')]:_0x2add74[_0x6a17('0x40')];_0x5d8190[_0x6a17('0x97')]=qs[_0x6a17('0x4a')](_0xf40261[_0x6a17('0x41')][_0x6a17('0x4a')]);_0x5d8190[_0x6a17('0x4b')]=qs['filters'](_['pick'](_0xf40261['query'],_0x2add74[_0x6a17('0x43')]));if(_0xf40261[_0x6a17('0x41')][_0x6a17('0x65')]){_0x5d8190['where']=_[_0x6a17('0x4d')](_0x5d8190[_0x6a17('0x4b')],{'$or':_[_0x6a17('0x3b')](_0x5d8190['attributes'],function(_0x1933fe){var _0x326ee9={};_0x326ee9[_0x1933fe]={'$like':'%'+_0xf40261['query'][_0x6a17('0x65')]+'%'};return _0x326ee9;})});}_0x5d8190=_[_0x6a17('0x4d')]({},_0x5d8190,_0xf40261[_0x6a17('0x4f')]);return _0x458b6d[_0x6a17('0x98')](_0x5d8190);}})[_0x6a17('0x21')](function(_0xb83ae4){if(_0xb83ae4){_0x315082=_0xb83ae4[_0x6a17('0x47')];if(!_0xf40261['query']['hasOwnProperty'](_0x6a17('0x49'))){_0x5d8190['limit']=qs[_0x6a17('0x2f')](_0xf40261[_0x6a17('0x41')][_0x6a17('0x2f')]);_0x5d8190[_0x6a17('0x2d')]=qs[_0x6a17('0x2d')](_0xf40261[_0x6a17('0x41')][_0x6a17('0x2d')]);}return _0x458b6d[_0x6a17('0x98')](_0x5d8190);}})[_0x6a17('0x21')](function(_0x167b99){if(_0x167b99){return _0x167b99?{'count':_0x315082,'rows':_0x167b99}:null;}})['then'](respondWithResult(_0x575a93,null))[_0x6a17('0x55')](handleError(_0x575a93,null));};
\ No newline at end of file
+var _0x6012=['zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./chatQueue.socket','register','jayson/promise','client','http','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','status','end','json','offset','undefined','limit','set','Content-Range','reject','update','get','sendStatus','stack','name','send','index','map','ChatQueue','rawAttributes','fieldName','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','merge','type','VIRTUAL','count','include','findAll','catch','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChatQueues','UserProfileSection','find','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','describe','getMembers','findOne','ChatQueueId','filter','UserChatQueue','User','findAndCountAll','UserId','agent','chatPause','createdAt','rows','format','SIP','Team','ids','voicePause','interface','Agents','transaction','each','findOrCreate','forEach','emit','removeTeams','select','field','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','includes','union','compact','removeAgents','userChatQueue:remove','addAgents','spread','userChatQueue:save','isArray','options','getAgents','eml-format','rimraf'];(function(_0x2e9a34,_0x23a8d2){var _0x5f1dc1=function(_0xf42ce0){while(--_0xf42ce0){_0x2e9a34['push'](_0x2e9a34['shift']());}};_0x5f1dc1(++_0x23a8d2);}(_0x6012,0x12e));var _0x2601=function(_0x26e727,_0x3e65be){_0x26e727=_0x26e727-0x0;var _0x563800=_0x6012[_0x26e727];return _0x563800;};'use strict';var emlformat=require(_0x2601('0x0'));var rimraf=require(_0x2601('0x1'));var zipdir=require(_0x2601('0x2'));var jsonpatch=require(_0x2601('0x3'));var rp=require('request-promise');var moment=require(_0x2601('0x4'));var BPromise=require(_0x2601('0x5'));var Mustache=require(_0x2601('0x6'));var util=require(_0x2601('0x7'));var path=require(_0x2601('0x8'));var sox=require(_0x2601('0x9'));var csv=require(_0x2601('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2601('0xb'));var _=require(_0x2601('0xc'));var squel=require(_0x2601('0xd'));var crypto=require('crypto');var jsforce=require(_0x2601('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x2601('0xf'));var Papa=require(_0x2601('0x10'));var Redis=require(_0x2601('0x11'));var authService=require(_0x2601('0x12'));var qs=require(_0x2601('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2601('0x14'));var logger=require(_0x2601('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x2601('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x2601('0x17'))['db'];config[_0x2601('0x18')]=_[_0x2601('0x19')](config[_0x2601('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x2601('0x1a'))(new Redis(config[_0x2601('0x18')]));require(_0x2601('0x1b'))[_0x2601('0x1c')](socket);var jayson=require(_0x2601('0x1d'));var client=jayson[_0x2601('0x1e')][_0x2601('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x2f8e0d,_0x473a86,_0x24a1c7,_0x518e58){return new BPromise(function(_0x5b2bb4,_0x2c1371){var _0x37a5aa=_0x518e58||client;return _0x37a5aa['request'](_0x2f8e0d,_0x24a1c7)[_0x2601('0x20')](function(_0x29e828){logger[_0x2601('0x21')](_0x2601('0x22'),_0x473a86,_0x2601('0x23'));logger[_0x2601('0x24')](_0x2601('0x25'),_0x473a86,_0x2601('0x23'),JSON[_0x2601('0x26')](_0x29e828));if(_0x29e828[_0x2601('0x27')]){if(_0x29e828[_0x2601('0x27')][_0x2601('0x28')]===0x1f4){logger['error'](_0x2601('0x22'),_0x473a86,_0x29e828[_0x2601('0x27')]['message']);return _0x2c1371(_0x29e828[_0x2601('0x27')][_0x2601('0x29')]);}logger['error']('ChatQueue,\x20%s,\x20%s',_0x473a86,_0x29e828[_0x2601('0x27')]['message']);return _0x5b2bb4(_0x29e828[_0x2601('0x27')]['message']);}else{logger[_0x2601('0x21')]('ChatQueue,\x20%s,\x20%s',_0x473a86,_0x2601('0x23'));_0x5b2bb4(_0x29e828[_0x2601('0x2a')][_0x2601('0x29')]);}})['catch'](function(_0x1374dd){logger[_0x2601('0x27')]('ChatQueue,\x20%s,\x20%s',_0x473a86,_0x1374dd);_0x2c1371(_0x1374dd);});});}function respondWithStatusCode(_0x365552,_0xc70c9){_0xc70c9=_0xc70c9||0xcc;return function(_0x443e69){if(_0x443e69){return _0x365552['sendStatus'](_0xc70c9);}return _0x365552[_0x2601('0x2b')](_0xc70c9)[_0x2601('0x2c')]();};}function respondWithResult(_0x34a819,_0x3861ce){_0x3861ce=_0x3861ce||0xc8;return function(_0x718e13){if(_0x718e13){return _0x34a819[_0x2601('0x2b')](_0x3861ce)[_0x2601('0x2d')](_0x718e13);}};}function respondWithFilteredResult(_0xbf7bc2,_0x17f959){return function(_0x5ddb13){if(_0x5ddb13){var _0x53abe3=typeof _0x17f959[_0x2601('0x2e')]===_0x2601('0x2f')&&typeof _0x17f959[_0x2601('0x30')]==='undefined';var _0x3381b8=_0x5ddb13['count'];var _0x4e60ab=_0x53abe3?0x0:_0x17f959[_0x2601('0x2e')];var _0x109ec2=_0x53abe3?_0x5ddb13['count']:_0x17f959[_0x2601('0x2e')]+_0x17f959[_0x2601('0x30')];var _0x3d74cc;if(_0x109ec2>=_0x3381b8){_0x109ec2=_0x3381b8;_0x3d74cc=0xc8;}else{_0x3d74cc=0xce;}_0xbf7bc2[_0x2601('0x2b')](_0x3d74cc);return _0xbf7bc2[_0x2601('0x31')](_0x2601('0x32'),_0x4e60ab+'-'+_0x109ec2+'/'+_0x3381b8)[_0x2601('0x2d')](_0x5ddb13);}return null;};}function patchUpdates(_0xcb2a86){return function(_0x4c1f62){try{jsonpatch['apply'](_0x4c1f62,_0xcb2a86,!![]);}catch(_0x412af9){return BPromise[_0x2601('0x33')](_0x412af9);}return _0x4c1f62['save']();};}function saveUpdates(_0x4c3171,_0x295b8d){return function(_0x592620){if(_0x592620){return _0x592620[_0x2601('0x34')](_0x4c3171)['then'](function(_0x47ea81){return _0x47ea81;});}return null;};}function removeEntity(_0x3adac6,_0x1f3fa5){return function(_0x1fb4b5){if(_0x1fb4b5){return _0x1fb4b5['destroy']()[_0x2601('0x20')](function(){var _0x173ee0=_0x1fb4b5[_0x2601('0x35')]({'plain':!![]});var _0x2e62fe='ChatQueues';return db['UserProfileResource']['destroy']({'where':{'type':_0x2e62fe,'resourceId':_0x173ee0['id']}})[_0x2601('0x20')](function(){return _0x1fb4b5;});})['then'](function(){_0x3adac6[_0x2601('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x14ff61,_0x1d8439){return function(_0x122598){if(!_0x122598){_0x14ff61[_0x2601('0x36')](0x194);}return _0x122598;};}function handleError(_0x5c8a24,_0x1eda1e){_0x1eda1e=_0x1eda1e||0x1f4;return function(_0x21fcda){logger[_0x2601('0x27')](_0x21fcda[_0x2601('0x37')]);if(_0x21fcda[_0x2601('0x38')]){delete _0x21fcda['name'];}_0x5c8a24[_0x2601('0x2b')](_0x1eda1e)[_0x2601('0x39')](_0x21fcda);};}exports[_0x2601('0x3a')]=function(_0x44d6a4,_0x3130d3){var _0x4541fc={},_0x159476={},_0x5d8880={'count':0x0,'rows':[]};var _0x491db8=_[_0x2601('0x3b')](db[_0x2601('0x3c')][_0x2601('0x3d')],function(_0x118863){return{'name':_0x118863[_0x2601('0x3e')],'type':_0x118863['type'][_0x2601('0x3f')]};});_0x159476['model']=_[_0x2601('0x3b')](_0x491db8,_0x2601('0x38'));_0x159476[_0x2601('0x40')]=_[_0x2601('0x41')](_0x44d6a4[_0x2601('0x40')]);_0x159476['filters']=_[_0x2601('0x42')](_0x159476[_0x2601('0x43')],_0x159476[_0x2601('0x40')]);_0x4541fc[_0x2601('0x44')]=_[_0x2601('0x42')](_0x159476[_0x2601('0x43')],qs[_0x2601('0x45')](_0x44d6a4['query'][_0x2601('0x45')]));_0x4541fc[_0x2601('0x44')]=_0x4541fc[_0x2601('0x44')][_0x2601('0x46')]?_0x4541fc[_0x2601('0x44')]:_0x159476[_0x2601('0x43')];if(!_0x44d6a4['query'][_0x2601('0x47')](_0x2601('0x48'))){_0x4541fc[_0x2601('0x30')]=qs['limit'](_0x44d6a4[_0x2601('0x40')][_0x2601('0x30')]);_0x4541fc[_0x2601('0x2e')]=qs['offset'](_0x44d6a4[_0x2601('0x40')]['offset']);}_0x4541fc[_0x2601('0x49')]=qs['sort'](_0x44d6a4[_0x2601('0x40')][_0x2601('0x4a')]);_0x4541fc[_0x2601('0x4b')]=qs['filters'](_[_0x2601('0x4c')](_0x44d6a4[_0x2601('0x40')],_0x159476[_0x2601('0x4d')]),_0x491db8);if(_0x44d6a4[_0x2601('0x40')]['filter']){_0x4541fc[_0x2601('0x4b')]=_[_0x2601('0x4e')](_0x4541fc[_0x2601('0x4b')],{'$or':_['map'](_0x491db8,function(_0x3f09fa){if(_0x3f09fa[_0x2601('0x4f')]!==_0x2601('0x50')){var _0x6ca5e2={};_0x6ca5e2[_0x3f09fa[_0x2601('0x38')]]={'$like':'%'+_0x44d6a4[_0x2601('0x40')]['filter']+'%'};return _0x6ca5e2;}})});}_0x4541fc=_[_0x2601('0x4e')]({},_0x4541fc,_0x44d6a4['options']);var _0x492f60={'where':_0x4541fc[_0x2601('0x4b')]};return db[_0x2601('0x3c')][_0x2601('0x51')](_0x492f60)[_0x2601('0x20')](function(_0x237483){_0x5d8880['count']=_0x237483;if(_0x44d6a4[_0x2601('0x40')]['includeAll']){_0x4541fc[_0x2601('0x52')]=[{'all':!![]}];}return db['ChatQueue'][_0x2601('0x53')](_0x4541fc);})['then'](function(_0x5a7d1f){_0x5d8880['rows']=_0x5a7d1f;return _0x5d8880;})[_0x2601('0x20')](respondWithFilteredResult(_0x3130d3,_0x4541fc))[_0x2601('0x54')](handleError(_0x3130d3,null));};exports['show']=function(_0x13199c,_0x4c63ad){var _0x3e0b73={'raw':!![],'where':{'id':_0x13199c[_0x2601('0x55')]['id']}},_0x417f59={};_0x417f59[_0x2601('0x43')]=_[_0x2601('0x41')](db[_0x2601('0x3c')]['rawAttributes']);_0x417f59['query']=_['keys'](_0x13199c[_0x2601('0x40')]);_0x417f59[_0x2601('0x4d')]=_[_0x2601('0x42')](_0x417f59[_0x2601('0x43')],_0x417f59[_0x2601('0x40')]);_0x3e0b73[_0x2601('0x44')]=_[_0x2601('0x42')](_0x417f59['model'],qs[_0x2601('0x45')](_0x13199c[_0x2601('0x40')]['fields']));_0x3e0b73[_0x2601('0x44')]=_0x3e0b73[_0x2601('0x44')]['length']?_0x3e0b73[_0x2601('0x44')]:_0x417f59[_0x2601('0x43')];if(_0x13199c['query']['includeAll']){_0x3e0b73['include']=[{'all':!![]}];}_0x3e0b73=_['merge']({},_0x3e0b73,_0x13199c['options']);return db[_0x2601('0x3c')]['find'](_0x3e0b73)[_0x2601('0x20')](handleEntityNotFound(_0x4c63ad,null))[_0x2601('0x20')](respondWithResult(_0x4c63ad,null))['catch'](handleError(_0x4c63ad,null));};exports[_0x2601('0x56')]=function(_0x10c69f,_0x51c136){return db[_0x2601('0x3c')][_0x2601('0x56')](_0x10c69f[_0x2601('0x57')],{})[_0x2601('0x20')](function(_0x283cba){var _0x517592=_0x10c69f[_0x2601('0x58')][_0x2601('0x35')]({'plain':!![]});if(!_0x517592)throw new Error(_0x2601('0x59'));if(_0x517592[_0x2601('0x5a')]===_0x2601('0x58')){var _0x158153=_0x283cba[_0x2601('0x35')]({'plain':!![]});var _0x43c3aa=_0x2601('0x5b');return db[_0x2601('0x5c')][_0x2601('0x5d')]({'where':{'name':_0x43c3aa,'userProfileId':_0x517592['userProfileId']},'raw':!![]})[_0x2601('0x20')](function(_0x3fabc3){if(_0x3fabc3&&_0x3fabc3[_0x2601('0x5e')]===0x0){return db[_0x2601('0x5f')][_0x2601('0x56')]({'name':_0x158153[_0x2601('0x38')],'resourceId':_0x158153['id'],'type':_0x3fabc3['name'],'sectionId':_0x3fabc3['id']},{})[_0x2601('0x20')](function(){return _0x283cba;});}else{return _0x283cba;}})[_0x2601('0x54')](function(_0x312270){logger[_0x2601('0x27')](_0x2601('0x60'),_0x312270);throw _0x312270;});}return _0x283cba;})[_0x2601('0x20')](respondWithResult(_0x51c136,0xc9))[_0x2601('0x54')](handleError(_0x51c136,null));};exports[_0x2601('0x34')]=function(_0x5a6028,_0x2b4c30){if(_0x5a6028[_0x2601('0x57')]['id']){delete _0x5a6028['body']['id'];}return db[_0x2601('0x3c')]['find']({'where':{'id':_0x5a6028['params']['id']}})[_0x2601('0x20')](handleEntityNotFound(_0x2b4c30,null))['then'](saveUpdates(_0x5a6028[_0x2601('0x57')],null))['then'](respondWithResult(_0x2b4c30,null))[_0x2601('0x54')](handleError(_0x2b4c30,null));};exports[_0x2601('0x61')]=function(_0xcfdf24,_0x46ead3){return db[_0x2601('0x3c')][_0x2601('0x5d')]({'where':{'id':_0xcfdf24['params']['id']}})[_0x2601('0x20')](handleEntityNotFound(_0x46ead3,null))[_0x2601('0x20')](removeEntity(_0x46ead3,null))[_0x2601('0x54')](handleError(_0x46ead3,null));};exports[_0x2601('0x62')]=function(_0x44076d,_0x4c89b6){return db['ChatQueue'][_0x2601('0x62')]()[_0x2601('0x20')](respondWithResult(_0x4c89b6,null))[_0x2601('0x54')](handleError(_0x4c89b6,null));};exports[_0x2601('0x63')]=function(_0x36b851,_0x439bec,_0x56bff8){var _0x343df6={'raw':!![],'where':{}},_0x53d9e7={},_0x12bd70;return db['ChatQueue'][_0x2601('0x64')]({'where':{'id':_0x36b851[_0x2601('0x55')]['id']}})[_0x2601('0x20')](handleEntityNotFound(_0x439bec,null))[_0x2601('0x20')](function(_0x4ec9c3){if(_0x4ec9c3){_0x12bd70=_0x4ec9c3[_0x2601('0x35')]({'plain':!![]});_0x53d9e7[_0x2601('0x43')]=_[_0x2601('0x41')](db['UserChatQueue']['rawAttributes']);_0x53d9e7[_0x2601('0x40')]=_[_0x2601('0x41')](_0x36b851['query']);_0x53d9e7['filters']=_[_0x2601('0x42')](_0x53d9e7[_0x2601('0x43')],_0x53d9e7['query']);_0x343df6['attributes']=_[_0x2601('0x42')](_0x53d9e7[_0x2601('0x43')],qs[_0x2601('0x45')](_0x36b851['query']['fields']));_0x343df6[_0x2601('0x44')]=_0x343df6[_0x2601('0x44')][_0x2601('0x46')]?_0x343df6[_0x2601('0x44')]:_0x53d9e7[_0x2601('0x43')];if(!_0x36b851[_0x2601('0x40')][_0x2601('0x47')](_0x2601('0x48'))){_0x343df6[_0x2601('0x30')]=qs[_0x2601('0x30')](_0x36b851[_0x2601('0x40')]['limit']);_0x343df6[_0x2601('0x2e')]=qs['offset'](_0x36b851[_0x2601('0x40')][_0x2601('0x2e')]);}_0x343df6['order']=qs[_0x2601('0x4a')](_0x36b851[_0x2601('0x40')][_0x2601('0x4a')]);_0x343df6[_0x2601('0x4b')]=qs[_0x2601('0x4d')](_[_0x2601('0x4c')](_0x36b851[_0x2601('0x40')],_0x53d9e7[_0x2601('0x4d')]));_0x343df6['where'][_0x2601('0x65')]=_0x4ec9c3['id'];if(_0x36b851[_0x2601('0x40')][_0x2601('0x66')]){_0x343df6[_0x2601('0x4b')]=_[_0x2601('0x4e')](_0x343df6[_0x2601('0x4b')],{'$or':_[_0x2601('0x3b')](_0x343df6[_0x2601('0x44')],function(_0x1375e9){var _0x438db8={};_0x438db8[_0x1375e9]={'$like':'%'+_0x36b851['query'][_0x2601('0x66')]+'%'};return _0x438db8;})});}_0x343df6=_['merge']({},_0x343df6,_0x36b851['options']);return db[_0x2601('0x67')][_0x2601('0x53')](_0x343df6);}})[_0x2601('0x20')](function(_0x2c66a6){if(_0x2c66a6){return db[_0x2601('0x68')][_0x2601('0x69')]({'where':{'id':_['map'](_0x2c66a6,_0x2601('0x6a')),'role':_0x2601('0x6b')},'attributes':['id','name',_0x2601('0x6c'),'updatedAt',_0x2601('0x6d')]});}})[_0x2601('0x20')](function(_0x4624a7){if(_0x4624a7){return{'count':_0x4624a7[_0x2601('0x51')],'rows':_[_0x2601('0x3b')](_0x4624a7[_0x2601('0x6e')],function(_0x5a5199){return{'membername':_0x5a5199[_0x2601('0x38')],'UserId':_0x5a5199['id'],'queue_name':_0x12bd70['name'],'ChatQueueId':_0x12bd70['id'],'interface':util[_0x2601('0x6f')]('%s/%s',_0x2601('0x70'),_0x5a5199[_0x2601('0x38')]),'penalty':0x0,'paused':_0x5a5199[_0x2601('0x6c')],'createdAt':_0x5a5199['createdAt'],'updatedAt':_0x5a5199['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x2601('0x20')](respondWithFilteredResult(_0x439bec,_0x343df6))[_0x2601('0x54')](handleError(_0x439bec,null));};exports['getTeams']=function(_0x261a92,_0x409917,_0x27552a){var _0x4c76bc={};var _0x125931={};var _0x43fd1b;var _0x1b6796;return db['ChatQueue'][_0x2601('0x64')]({'where':{'id':_0x261a92['params']['id']}})[_0x2601('0x20')](handleEntityNotFound(_0x409917,null))['then'](function(_0x5793bd){if(_0x5793bd){_0x43fd1b=_0x5793bd;_0x125931[_0x2601('0x43')]=_[_0x2601('0x41')](db[_0x2601('0x71')][_0x2601('0x3d')]);_0x125931[_0x2601('0x40')]=_[_0x2601('0x41')](_0x261a92['query']);_0x125931[_0x2601('0x4d')]=_[_0x2601('0x42')](_0x125931[_0x2601('0x43')],_0x125931[_0x2601('0x40')]);_0x4c76bc['attributes']=_[_0x2601('0x42')](_0x125931[_0x2601('0x43')],qs[_0x2601('0x45')](_0x261a92['query'][_0x2601('0x45')]));_0x4c76bc[_0x2601('0x44')]=_0x4c76bc[_0x2601('0x44')][_0x2601('0x46')]?_0x4c76bc[_0x2601('0x44')]:_0x125931['model'];_0x4c76bc[_0x2601('0x49')]=qs[_0x2601('0x4a')](_0x261a92[_0x2601('0x40')][_0x2601('0x4a')]);_0x4c76bc['where']=qs[_0x2601('0x4d')](_[_0x2601('0x4c')](_0x261a92[_0x2601('0x40')],_0x125931[_0x2601('0x4d')]));if(_0x261a92[_0x2601('0x40')][_0x2601('0x66')]){_0x4c76bc[_0x2601('0x4b')]=_[_0x2601('0x4e')](_0x4c76bc[_0x2601('0x4b')],{'$or':_[_0x2601('0x3b')](_0x4c76bc['attributes'],function(_0x33556f){var _0x4a57b6={};_0x4a57b6[_0x33556f]={'$like':'%'+_0x261a92[_0x2601('0x40')]['filter']+'%'};return _0x4a57b6;})});}_0x4c76bc=_[_0x2601('0x4e')]({},_0x4c76bc,_0x261a92['options']);return _0x43fd1b['getTeams'](_0x4c76bc);}})[_0x2601('0x20')](function(_0x5007c3){if(_0x5007c3){_0x1b6796=_0x5007c3[_0x2601('0x46')];if(!_0x261a92[_0x2601('0x40')][_0x2601('0x47')]('nolimit')){_0x4c76bc[_0x2601('0x30')]=qs[_0x2601('0x30')](_0x261a92[_0x2601('0x40')][_0x2601('0x30')]);_0x4c76bc['offset']=qs[_0x2601('0x2e')](_0x261a92['query'][_0x2601('0x2e')]);}return _0x43fd1b['getTeams'](_0x4c76bc);}})[_0x2601('0x20')](function(_0x3899a3){if(_0x3899a3){return _0x3899a3?{'count':_0x1b6796,'rows':_0x3899a3}:null;}})[_0x2601('0x20')](respondWithResult(_0x409917,null))[_0x2601('0x54')](handleError(_0x409917,null));};exports['addTeams']=function(_0x1c422a,_0x6e3260,_0x397468){var _0x4b474f=_0x1c422a[_0x2601('0x57')][_0x2601('0x72')];return db[_0x2601('0x71')][_0x2601('0x53')]({'where':{'id':_0x4b474f},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id','name','online',_0x2601('0x73'),_0x2601('0x74')],'raw':!![]}]})[_0x2601('0x20')](function(_0x2d88b0){if(_0x2d88b0){var _0x3b04ec=_['flatMap'](_0x2d88b0,function(_0x3bef04){var _0x1a0d07=_0x3bef04[_0x2601('0x35')]({'plain':!![]});return _0x1a0d07[_0x2601('0x75')];});return db[_0x2601('0x3c')][_0x2601('0x5d')]({'where':{'id':_0x1c422a['params']['id']}})[_0x2601('0x20')](function(_0x48cf09){return db['sequelize'][_0x2601('0x76')](function(_0x3642e4){return _0x48cf09['addTeams'](_0x4b474f,{'transaction':_0x3642e4})[_0x2601('0x20')](function(){return BPromise[_0x2601('0x77')](_0x3b04ec,function(_0x16cb59){return db['UserChatQueue'][_0x2601('0x78')]({'where':{'UserId':_0x16cb59['id'],'ChatQueueId':_0x1c422a[_0x2601('0x55')]['id']},'transaction':_0x3642e4});});})[_0x2601('0x20')](function(){_0x3b04ec[_0x2601('0x79')](function(_0x805ed5){socket[_0x2601('0x7a')]('userChatQueue:save',{'UserId':_0x805ed5['id'],'ChatQueueId':_0x48cf09['id']});});});});});}})[_0x2601('0x20')](respondWithStatusCode(_0x6e3260,null))[_0x2601('0x54')](handleError(_0x6e3260,null));};exports[_0x2601('0x7b')]=function(_0x53be5b,_0x5cb2ba,_0x2363e7){return db['Team'][_0x2601('0x53')]({'where':{'id':_0x53be5b[_0x2601('0x40')][_0x2601('0x72')]},'attributes':['id'],'include':[{'model':db[_0x2601('0x68')],'as':_0x2601('0x75'),'attributes':['id'],'raw':!![]}]})[_0x2601('0x20')](handleEntityNotFound(_0x5cb2ba,null))['then'](function(_0x1c919b){var _0x295dfb=_[_0x2601('0x3b')](_0x1c919b,'id');var _0x1b93da=[];var _0x129ad5=[];var _0x10a121=squel[_0x2601('0x7c')]();_0x10a121[_0x2601('0x7d')](_0x2601('0x7e'))[_0x2601('0x7f')](_0x2601('0x80'),'tq')[_0x2601('0x81')](_0x2601('0x82'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x2601('0x4b')](_0x2601('0x83'),_0x53be5b[_0x2601('0x55')]['id']);for(var _0x5a4c29=0x0;_0x5a4c29<_0x1c919b[_0x2601('0x46')];_0x5a4c29+=0x1){let _0x517764=_0x1c919b[_0x5a4c29];for(var _0x52e4f6=0x0;_0x52e4f6<_0x517764[_0x2601('0x75')][_0x2601('0x46')];_0x52e4f6+=0x1){let _0x9db5dd=_0x517764['Agents'][_0x52e4f6];var _0x404eae=_0x10a121[_0x2601('0x84')]();_0x404eae[_0x2601('0x4b')](_0x2601('0x85'),_0x9db5dd['id']);_0x129ad5[_0x2601('0x86')](db[_0x2601('0x87')][_0x2601('0x40')](_0x404eae[_0x2601('0x88')](),{'type':db['sequelize'][_0x2601('0x89')][_0x2601('0x8a')]})[_0x2601('0x20')](function(_0x4f07dc){if(_0x4f07dc[_0x2601('0x46')]===0x1){return _0x9db5dd['id'];}else{var _0x43f519=_[_0x2601('0x8b')](_[_0x2601('0x3b')](_0x4f07dc,_0x2601('0x8c')),function(_0x45374b){return _[_0x2601('0x8d')](_0x295dfb,_0x45374b);});if(_0x43f519){return _0x9db5dd['id'];}}}));}}return BPromise['all'](_0x129ad5)[_0x2601('0x20')](function(_0x5e4c65){_0x1b93da=_(_0x1b93da)[_0x2601('0x8e')](_0x5e4c65)[_0x2601('0x8f')]()['value']();return db[_0x2601('0x3c')][_0x2601('0x5d')]({'where':{'id':_0x53be5b[_0x2601('0x55')]['id']}})[_0x2601('0x20')](function(_0x1a9228){return db[_0x2601('0x87')][_0x2601('0x76')](function(_0x91a630){return _0x1a9228['removeTeams'](_0x53be5b['query']['ids'],{'transaction':_0x91a630})[_0x2601('0x20')](function(){if(!_['isEmpty'](_0x1b93da)){return _0x1a9228[_0x2601('0x90')](_0x1b93da,{'transaction':_0x91a630});}})[_0x2601('0x20')](function(){_0x1b93da['forEach'](function(_0x44c28d){socket[_0x2601('0x7a')](_0x2601('0x91'),{'UserId':_0x44c28d,'ChatQueueId':_0x1a9228['id']});});});});});});})[_0x2601('0x20')](respondWithStatusCode(_0x5cb2ba,null))[_0x2601('0x54')](handleError(_0x5cb2ba,null));};exports[_0x2601('0x92')]=function(_0x2faef4,_0x3dac4a,_0x3837d2){return db['ChatQueue'][_0x2601('0x5d')]({'where':{'id':_0x2faef4[_0x2601('0x55')]['id']}})[_0x2601('0x20')](handleEntityNotFound(_0x3dac4a,null))[_0x2601('0x20')](function(_0xf768fb){if(_0xf768fb){return _0xf768fb[_0x2601('0x92')](_0x2faef4[_0x2601('0x57')][_0x2601('0x72')],_['omit'](_0x2faef4[_0x2601('0x57')],[_0x2601('0x72'),'id'])||{})[_0x2601('0x93')](function(_0x4c3620){for(var _0x47b848=0x0;_0x47b848<_0x2faef4[_0x2601('0x57')][_0x2601('0x72')][_0x2601('0x46')];_0x47b848+=0x1){socket[_0x2601('0x7a')](_0x2601('0x94'),{'UserId':Number(_0x2faef4[_0x2601('0x57')]['ids'][_0x47b848]),'ChatQueueId':Number(_0x2faef4[_0x2601('0x55')]['id'])});}return _0x4c3620;});}})[_0x2601('0x20')](respondWithResult(_0x3dac4a,null))['catch'](handleError(_0x3dac4a,null));};exports['removeAgents']=function(_0x3ee3c8,_0x1f818b,_0x36159c){return db[_0x2601('0x3c')]['find']({'where':{'id':_0x3ee3c8['params']['id']}})[_0x2601('0x20')](handleEntityNotFound(_0x1f818b,null))['then'](function(_0x3ea84a){if(_0x3ea84a){return _0x3ea84a[_0x2601('0x90')](_0x3ee3c8['query'][_0x2601('0x72')])['then'](function(){if(_[_0x2601('0x95')](_0x3ee3c8[_0x2601('0x40')][_0x2601('0x72')])){for(var _0x3e55dd=0x0;_0x3e55dd<_0x3ee3c8[_0x2601('0x40')][_0x2601('0x72')][_0x2601('0x46')];_0x3e55dd+=0x1){socket['emit']('userChatQueue:remove',{'UserId':Number(_0x3ee3c8['query'][_0x2601('0x72')][_0x3e55dd]),'ChatQueueId':Number(_0x3ee3c8['params']['id'])});}}else{socket[_0x2601('0x7a')]('userChatQueue:remove',{'UserId':Number(_0x3ee3c8[_0x2601('0x40')][_0x2601('0x72')]),'ChatQueueId':Number(_0x3ee3c8[_0x2601('0x55')]['id'])});}});}})[_0x2601('0x20')](respondWithStatusCode(_0x1f818b,null))['catch'](handleError(_0x1f818b,null));};exports['getAgents']=function(_0x4b7c2f,_0x7e2db5,_0x5d90b4){var _0xfd64c0={};var _0x93ea1f={};var _0x38f0da;var _0x3a37f0;return db[_0x2601('0x3c')]['findOne']({'where':{'id':_0x4b7c2f[_0x2601('0x55')]['id']}})[_0x2601('0x20')](handleEntityNotFound(_0x7e2db5,null))[_0x2601('0x20')](function(_0x55fba3){if(_0x55fba3){_0x38f0da=_0x55fba3;_0x93ea1f[_0x2601('0x43')]=_['keys'](db[_0x2601('0x68')][_0x2601('0x3d')]);_0x93ea1f[_0x2601('0x40')]=_[_0x2601('0x41')](_0x4b7c2f[_0x2601('0x40')]);_0x93ea1f[_0x2601('0x4d')]=_[_0x2601('0x42')](_0x93ea1f['model'],_0x93ea1f[_0x2601('0x40')]);_0xfd64c0[_0x2601('0x44')]=_[_0x2601('0x42')](_0x93ea1f['model'],qs[_0x2601('0x45')](_0x4b7c2f[_0x2601('0x40')][_0x2601('0x45')]));_0xfd64c0['attributes']=_0xfd64c0[_0x2601('0x44')][_0x2601('0x46')]?_0xfd64c0[_0x2601('0x44')]:_0x93ea1f[_0x2601('0x43')];_0xfd64c0['order']=qs[_0x2601('0x4a')](_0x4b7c2f['query']['sort']);_0xfd64c0[_0x2601('0x4b')]=qs[_0x2601('0x4d')](_['pick'](_0x4b7c2f['query'],_0x93ea1f['filters']));if(_0x4b7c2f[_0x2601('0x40')][_0x2601('0x66')]){_0xfd64c0[_0x2601('0x4b')]=_[_0x2601('0x4e')](_0xfd64c0['where'],{'$or':_[_0x2601('0x3b')](_0xfd64c0[_0x2601('0x44')],function(_0x50f371){var _0x59c245={};_0x59c245[_0x50f371]={'$like':'%'+_0x4b7c2f[_0x2601('0x40')][_0x2601('0x66')]+'%'};return _0x59c245;})});}_0xfd64c0=_[_0x2601('0x4e')]({},_0xfd64c0,_0x4b7c2f[_0x2601('0x96')]);return _0x38f0da[_0x2601('0x97')](_0xfd64c0);}})[_0x2601('0x20')](function(_0x18bfc8){if(_0x18bfc8){_0x3a37f0=_0x18bfc8[_0x2601('0x46')];if(!_0x4b7c2f[_0x2601('0x40')][_0x2601('0x47')](_0x2601('0x48'))){_0xfd64c0[_0x2601('0x30')]=qs[_0x2601('0x30')](_0x4b7c2f[_0x2601('0x40')][_0x2601('0x30')]);_0xfd64c0[_0x2601('0x2e')]=qs[_0x2601('0x2e')](_0x4b7c2f['query'][_0x2601('0x2e')]);}return _0x38f0da[_0x2601('0x97')](_0xfd64c0);}})[_0x2601('0x20')](function(_0x4ce482){if(_0x4ce482){return _0x4ce482?{'count':_0x3a37f0,'rows':_0x4ce482}:null;}})[_0x2601('0x20')](respondWithResult(_0x7e2db5,null))[_0x2601('0x54')](handleError(_0x7e2db5,null));};
\ No newline at end of file
index 51439ba..dcae8f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd46f=['remove','emit','hook','exports','events','ChatQueue','setMaxListeners','save','update'];(function(_0x3bca33,_0x7fc883){var _0x2a6d0c=function(_0x48038f){while(--_0x48038f){_0x3bca33['push'](_0x3bca33['shift']());}};_0x2a6d0c(++_0x7fc883);}(_0xd46f,0x82));var _0xfd46=function(_0x536b45,_0x3400ee){_0x536b45=_0x536b45-0x0;var _0xa28b35=_0xd46f[_0x536b45];return _0xa28b35;};'use strict';var EventEmitter=require(_0xfd46('0x0'));var ChatQueue=require('../../mysqldb')['db'][_0xfd46('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xfd46('0x2')](0x0);var events={'afterCreate':_0xfd46('0x3'),'afterUpdate':_0xfd46('0x4'),'afterDestroy':_0xfd46('0x5')};function emitEvent(_0x26c0e3){return function(_0x21ccc6,_0x2ee27a,_0x30534a){ChatQueueEvents[_0xfd46('0x6')](_0x26c0e3+':'+_0x21ccc6['id'],_0x21ccc6);ChatQueueEvents[_0xfd46('0x6')](_0x26c0e3,_0x21ccc6);_0x30534a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatQueue[_0xfd46('0x7')](e,emitEvent(event));}}module[_0xfd46('0x8')]=ChatQueueEvents;
\ No newline at end of file
+var _0xdea1=['events','../../mysqldb','ChatQueue','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x85f892,_0x33fbac){var _0x1564cc=function(_0x53bd4a){while(--_0x53bd4a){_0x85f892['push'](_0x85f892['shift']());}};_0x1564cc(++_0x33fbac);}(_0xdea1,0x1f4));var _0x1dea=function(_0x12e783,_0x584d84){_0x12e783=_0x12e783-0x0;var _0x39a8f6=_0xdea1[_0x12e783];return _0x39a8f6;};'use strict';var EventEmitter=require(_0x1dea('0x0'));var ChatQueue=require(_0x1dea('0x1'))['db'][_0x1dea('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x1dea('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x1dea('0x4'),'afterDestroy':_0x1dea('0x5')};function emitEvent(_0x480ce8){return function(_0x13c976,_0x249034,_0x4e4877){ChatQueueEvents[_0x1dea('0x6')](_0x480ce8+':'+_0x13c976['id'],_0x13c976);ChatQueueEvents[_0x1dea('0x6')](_0x480ce8,_0x13c976);_0x4e4877(null);};}for(var e in events){if(events[_0x1dea('0x7')](e)){var event=events[e];ChatQueue[_0x1dea('0x8')](e,emitEvent(event));}}module[_0x1dea('0x9')]=ChatQueueEvents;
\ No newline at end of file
index d3fda13..fc0c672 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecf9=['path','rimraf','../../config/environment','./chatQueue.attributes','exports','define','ChatQueue','chat_queues','lodash','util','../../config/logger','bluebird','request-promise'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xecf9,0x1dc));var _0x9ecf=function(_0x346518,_0x3b206d){_0x346518=_0x346518-0x0;var _0x21d930=_0xecf9[_0x346518];return _0x21d930;};'use strict';var _=require(_0x9ecf('0x0'));var util=require(_0x9ecf('0x1'));var logger=require(_0x9ecf('0x2'))('api');var moment=require('moment');var BPromise=require(_0x9ecf('0x3'));var rp=require(_0x9ecf('0x4'));var fs=require('fs');var path=require(_0x9ecf('0x5'));var rimraf=require(_0x9ecf('0x6'));var config=require(_0x9ecf('0x7'));var attributes=require(_0x9ecf('0x8'));module[_0x9ecf('0x9')]=function(_0x61de4f,_0x4987d2){return _0x61de4f[_0x9ecf('0xa')](_0x9ecf('0xb'),attributes,{'tableName':_0x9ecf('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5706=['util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./chatQueue.attributes','exports','define','ChatQueue','chat_queues','lodash'];(function(_0x4e6c0a,_0x36d711){var _0x28baf4=function(_0x3fe71a){while(--_0x3fe71a){_0x4e6c0a['push'](_0x4e6c0a['shift']());}};_0x28baf4(++_0x36d711);}(_0x5706,0x187));var _0x6570=function(_0x4cf5fe,_0x1a1506){_0x4cf5fe=_0x4cf5fe-0x0;var _0x2af081=_0x5706[_0x4cf5fe];return _0x2af081;};'use strict';var _=require(_0x6570('0x0'));var util=require(_0x6570('0x1'));var logger=require(_0x6570('0x2'))(_0x6570('0x3'));var moment=require(_0x6570('0x4'));var BPromise=require(_0x6570('0x5'));var rp=require(_0x6570('0x6'));var fs=require('fs');var path=require(_0x6570('0x7'));var rimraf=require('rimraf');var config=require(_0x6570('0x8'));var attributes=require(_0x6570('0x9'));module[_0x6570('0xa')]=function(_0x508b1a,_0x127145){return _0x508b1a[_0x6570('0xb')](_0x6570('0xc'),attributes,{'tableName':_0x6570('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 703e5e9..b7ac1b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d8a=['debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatQueue,\x20%s,\x20%s','message','info','result','GetChatQueue','ChatQueue','findAll','options','raw','where','attributes','limit','include','map','model','catch','find','ShowChatQueue','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','request\x20sent'];(function(_0x30e5c0,_0x16edd5){var _0x5a88fb=function(_0x1227e1){while(--_0x1227e1){_0x30e5c0['push'](_0x30e5c0['shift']());}};_0x5a88fb(++_0x16edd5);}(_0x7d8a,0xbf));var _0xa7d8=function(_0x11ce46,_0x177a85){_0x11ce46=_0x11ce46-0x0;var _0x368a1e=_0x7d8a[_0x11ce46];return _0x368a1e;};'use strict';var _=require(_0xa7d8('0x0'));var util=require(_0xa7d8('0x1'));var moment=require(_0xa7d8('0x2'));var BPromise=require('bluebird');var rs=require(_0xa7d8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa7d8('0x4'))['db'];var utils=require(_0xa7d8('0x5'));var logger=require(_0xa7d8('0x6'))(_0xa7d8('0x7'));var config=require(_0xa7d8('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xa7d8('0x9')][_0xa7d8('0xa')]({'port':0x232a});config[_0xa7d8('0xb')]=_[_0xa7d8('0xc')](config['redis'],{'host':_0xa7d8('0xd'),'port':0x18eb});var socket=require(_0xa7d8('0xe'))(new Redis(config[_0xa7d8('0xb')]));require('./chatQueue.socket')[_0xa7d8('0xf')](socket);function respondWithRpcPromise(_0x39d72d,_0xfa0a46,_0x479948){return new BPromise(function(_0xbfdd7b,_0x4731cc){return client[_0xa7d8('0x10')](_0x39d72d,_0x479948)[_0xa7d8('0x11')](function(_0x3b1085){logger['info']('ChatQueue,\x20%s,\x20%s',_0xfa0a46,_0xa7d8('0x12'));logger[_0xa7d8('0x13')](_0xa7d8('0x14'),_0xfa0a46,_0xa7d8('0x12'),JSON[_0xa7d8('0x15')](_0x3b1085));if(_0x3b1085[_0xa7d8('0x16')]){if(_0x3b1085[_0xa7d8('0x16')][_0xa7d8('0x17')]===0x1f4){logger[_0xa7d8('0x16')](_0xa7d8('0x18'),_0xfa0a46,_0x3b1085['error'][_0xa7d8('0x19')]);return _0x4731cc(_0x3b1085[_0xa7d8('0x16')][_0xa7d8('0x19')]);}logger[_0xa7d8('0x16')](_0xa7d8('0x18'),_0xfa0a46,_0x3b1085[_0xa7d8('0x16')][_0xa7d8('0x19')]);return _0xbfdd7b(_0x3b1085['error'][_0xa7d8('0x19')]);}else{logger[_0xa7d8('0x1a')](_0xa7d8('0x18'),_0xfa0a46,'request\x20sent');_0xbfdd7b(_0x3b1085[_0xa7d8('0x1b')]['message']);}})['catch'](function(_0x59151f){logger[_0xa7d8('0x16')](_0xa7d8('0x18'),_0xfa0a46,_0x59151f);_0x4731cc(_0x59151f);});});}exports[_0xa7d8('0x1c')]=function(_0x5a67ea){var _0x25550a=this;return new Promise(function(_0x5aed47,_0xa774ff){return db[_0xa7d8('0x1d')][_0xa7d8('0x1e')]({'raw':_0x5a67ea[_0xa7d8('0x1f')]?_0x5a67ea['options'][_0xa7d8('0x20')]===undefined?!![]:![]:!![],'where':_0x5a67ea[_0xa7d8('0x1f')]?_0x5a67ea[_0xa7d8('0x1f')][_0xa7d8('0x21')]||null:null,'attributes':_0x5a67ea[_0xa7d8('0x1f')]?_0x5a67ea[_0xa7d8('0x1f')][_0xa7d8('0x22')]||null:null,'limit':_0x5a67ea[_0xa7d8('0x1f')]?_0x5a67ea[_0xa7d8('0x1f')][_0xa7d8('0x23')]||null:null,'include':_0x5a67ea[_0xa7d8('0x1f')]?_0x5a67ea[_0xa7d8('0x1f')][_0xa7d8('0x24')]?_[_0xa7d8('0x25')](_0x5a67ea[_0xa7d8('0x1f')]['include'],function(_0x5d1006){return{'model':db[_0x5d1006['model']],'as':_0x5d1006['as'],'attributes':_0x5d1006[_0xa7d8('0x22')],'include':_0x5d1006['include']?_['map'](_0x5d1006[_0xa7d8('0x24')],function(_0x32619b){return{'model':db[_0x32619b[_0xa7d8('0x26')]],'as':_0x32619b['as'],'attributes':_0x32619b[_0xa7d8('0x22')],'include':_0x32619b[_0xa7d8('0x24')]?_[_0xa7d8('0x25')](_0x32619b['include'],function(_0x39f3e1){return{'model':db[_0x39f3e1[_0xa7d8('0x26')]],'as':_0x39f3e1['as'],'attributes':_0x39f3e1[_0xa7d8('0x22')]};}):[]};}):[]};}):[]:[]})[_0xa7d8('0x11')](function(_0x3c458d){logger[_0xa7d8('0x1a')](_0xa7d8('0x1c'),_0x5a67ea);logger['debug']('GetChatQueue',_0x5a67ea,JSON[_0xa7d8('0x15')](_0x3c458d));_0x5aed47(_0x3c458d);})[_0xa7d8('0x27')](function(_0xbb1f00){logger['error'](_0xa7d8('0x1c'),_0xbb1f00[_0xa7d8('0x19')],_0x5a67ea);_0xa774ff(_0x25550a['error'](0x1f4,_0xbb1f00[_0xa7d8('0x19')]));});});};exports['ShowChatQueue']=function(_0x33d0b6){var _0x52e3ed=this;return new Promise(function(_0x2df4a2,_0x4cc87f){return db[_0xa7d8('0x1d')][_0xa7d8('0x28')]({'raw':_0x33d0b6[_0xa7d8('0x1f')]?_0x33d0b6['options'][_0xa7d8('0x20')]===undefined?!![]:![]:!![],'where':_0x33d0b6['options']?_0x33d0b6[_0xa7d8('0x1f')]['where']||null:null,'attributes':_0x33d0b6['options']?_0x33d0b6[_0xa7d8('0x1f')][_0xa7d8('0x22')]||null:null,'include':_0x33d0b6[_0xa7d8('0x1f')]?_0x33d0b6[_0xa7d8('0x1f')][_0xa7d8('0x24')]?_['map'](_0x33d0b6['options'][_0xa7d8('0x24')],function(_0x597106){return{'model':db[_0x597106[_0xa7d8('0x26')]],'as':_0x597106['as'],'attributes':_0x597106[_0xa7d8('0x22')],'include':_0x597106['include']?_[_0xa7d8('0x25')](_0x597106[_0xa7d8('0x24')],function(_0x5550b6){return{'model':db[_0x5550b6[_0xa7d8('0x26')]],'as':_0x5550b6['as'],'attributes':_0x5550b6['attributes'],'include':_0x5550b6['include']?_[_0xa7d8('0x25')](_0x5550b6['include'],function(_0x581649){return{'model':db[_0x581649['model']],'as':_0x581649['as'],'attributes':_0x581649[_0xa7d8('0x22')]};}):[]};}):[]};}):[]:[]})[_0xa7d8('0x11')](function(_0x20261c){logger['info']('ShowChatQueue',_0x33d0b6);logger[_0xa7d8('0x13')]('ShowChatQueue',_0x33d0b6,JSON[_0xa7d8('0x15')](_0x20261c));_0x2df4a2(_0x20261c);})[_0xa7d8('0x27')](function(_0xa76d3a){logger['error'](_0xa7d8('0x29'),_0xa76d3a[_0xa7d8('0x19')],_0x33d0b6);_0x4cc87f(_0x52e3ed['error'](0x1f4,_0xa76d3a['message']));});});};
\ No newline at end of file
+var _0x79ad=['code','message','result','catch','GetChatQueue','options','raw','where','map','model','include','attributes','stringify','ShowChatQueue','find','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','register','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','error'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x79ad,0x16e));var _0xd79a=function(_0x57cf4e,_0x3d855c){_0x57cf4e=_0x57cf4e-0x0;var _0x10b4f5=_0x79ad[_0x57cf4e];return _0x10b4f5;};'use strict';var _=require(_0xd79a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xd79a('0x1'));var rs=require(_0xd79a('0x2'));var fs=require('fs');var Redis=require(_0xd79a('0x3'));var db=require(_0xd79a('0x4'))['db'];var utils=require(_0xd79a('0x5'));var logger=require(_0xd79a('0x6'))(_0xd79a('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd79a('0x8')][_0xd79a('0x9')]({'port':0x232a});config[_0xd79a('0xa')]=_[_0xd79a('0xb')](config[_0xd79a('0xa')],{'host':_0xd79a('0xc'),'port':0x18eb});var socket=require(_0xd79a('0xd'))(new Redis(config[_0xd79a('0xa')]));require(_0xd79a('0xe'))[_0xd79a('0xf')](socket);function respondWithRpcPromise(_0x28c947,_0x28e5b8,_0x18739f){return new BPromise(function(_0x5a7743,_0x3acce0){return client[_0xd79a('0x10')](_0x28c947,_0x18739f)[_0xd79a('0x11')](function(_0x21c3f9){logger[_0xd79a('0x12')](_0xd79a('0x13'),_0x28e5b8,_0xd79a('0x14'));logger[_0xd79a('0x15')](_0xd79a('0x16'),_0x28e5b8,'request\x20sent',JSON['stringify'](_0x21c3f9));if(_0x21c3f9[_0xd79a('0x17')]){if(_0x21c3f9['error'][_0xd79a('0x18')]===0x1f4){logger[_0xd79a('0x17')](_0xd79a('0x13'),_0x28e5b8,_0x21c3f9[_0xd79a('0x17')][_0xd79a('0x19')]);return _0x3acce0(_0x21c3f9[_0xd79a('0x17')][_0xd79a('0x19')]);}logger[_0xd79a('0x17')](_0xd79a('0x13'),_0x28e5b8,_0x21c3f9[_0xd79a('0x17')][_0xd79a('0x19')]);return _0x5a7743(_0x21c3f9[_0xd79a('0x17')]['message']);}else{logger[_0xd79a('0x12')](_0xd79a('0x13'),_0x28e5b8,_0xd79a('0x14'));_0x5a7743(_0x21c3f9[_0xd79a('0x1a')][_0xd79a('0x19')]);}})[_0xd79a('0x1b')](function(_0x1bd13f){logger[_0xd79a('0x17')](_0xd79a('0x13'),_0x28e5b8,_0x1bd13f);_0x3acce0(_0x1bd13f);});});}exports[_0xd79a('0x1c')]=function(_0x2e5036){var _0x51a253=this;return new Promise(function(_0x2ac9ea,_0x558db5){return db['ChatQueue']['findAll']({'raw':_0x2e5036[_0xd79a('0x1d')]?_0x2e5036[_0xd79a('0x1d')][_0xd79a('0x1e')]===undefined?!![]:![]:!![],'where':_0x2e5036['options']?_0x2e5036[_0xd79a('0x1d')][_0xd79a('0x1f')]||null:null,'attributes':_0x2e5036[_0xd79a('0x1d')]?_0x2e5036[_0xd79a('0x1d')]['attributes']||null:null,'limit':_0x2e5036['options']?_0x2e5036['options']['limit']||null:null,'include':_0x2e5036[_0xd79a('0x1d')]?_0x2e5036['options']['include']?_[_0xd79a('0x20')](_0x2e5036['options']['include'],function(_0x169993){return{'model':db[_0x169993[_0xd79a('0x21')]],'as':_0x169993['as'],'attributes':_0x169993['attributes'],'include':_0x169993['include']?_['map'](_0x169993['include'],function(_0x12152b){return{'model':db[_0x12152b[_0xd79a('0x21')]],'as':_0x12152b['as'],'attributes':_0x12152b['attributes'],'include':_0x12152b[_0xd79a('0x22')]?_['map'](_0x12152b['include'],function(_0x3b95){return{'model':db[_0x3b95['model']],'as':_0x3b95['as'],'attributes':_0x3b95[_0xd79a('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2bf0b2){logger[_0xd79a('0x12')](_0xd79a('0x1c'),_0x2e5036);logger[_0xd79a('0x15')](_0xd79a('0x1c'),_0x2e5036,JSON[_0xd79a('0x24')](_0x2bf0b2));_0x2ac9ea(_0x2bf0b2);})['catch'](function(_0x2bce6d){logger[_0xd79a('0x17')](_0xd79a('0x1c'),_0x2bce6d[_0xd79a('0x19')],_0x2e5036);_0x558db5(_0x51a253[_0xd79a('0x17')](0x1f4,_0x2bce6d[_0xd79a('0x19')]));});});};exports[_0xd79a('0x25')]=function(_0xcaeb47){var _0x2e69aa=this;return new Promise(function(_0x555423,_0xb68e78){return db['ChatQueue'][_0xd79a('0x26')]({'raw':_0xcaeb47['options']?_0xcaeb47[_0xd79a('0x1d')][_0xd79a('0x1e')]===undefined?!![]:![]:!![],'where':_0xcaeb47[_0xd79a('0x1d')]?_0xcaeb47['options'][_0xd79a('0x1f')]||null:null,'attributes':_0xcaeb47['options']?_0xcaeb47['options']['attributes']||null:null,'include':_0xcaeb47[_0xd79a('0x1d')]?_0xcaeb47['options'][_0xd79a('0x22')]?_['map'](_0xcaeb47[_0xd79a('0x1d')]['include'],function(_0x226d7c){return{'model':db[_0x226d7c[_0xd79a('0x21')]],'as':_0x226d7c['as'],'attributes':_0x226d7c[_0xd79a('0x23')],'include':_0x226d7c[_0xd79a('0x22')]?_[_0xd79a('0x20')](_0x226d7c[_0xd79a('0x22')],function(_0x3f6a68){return{'model':db[_0x3f6a68[_0xd79a('0x21')]],'as':_0x3f6a68['as'],'attributes':_0x3f6a68['attributes'],'include':_0x3f6a68[_0xd79a('0x22')]?_[_0xd79a('0x20')](_0x3f6a68[_0xd79a('0x22')],function(_0x56c6cb){return{'model':db[_0x56c6cb['model']],'as':_0x56c6cb['as'],'attributes':_0x56c6cb['attributes']};}):[]};}):[]};}):[]:[]})[_0xd79a('0x11')](function(_0x337239){logger['info'](_0xd79a('0x25'),_0xcaeb47);logger[_0xd79a('0x15')](_0xd79a('0x25'),_0xcaeb47,JSON[_0xd79a('0x24')](_0x337239));_0x555423(_0x337239);})[_0xd79a('0x1b')](function(_0x135e63){logger[_0xd79a('0x17')]('ShowChatQueue',_0x135e63[_0xd79a('0x19')],_0xcaeb47);_0xb68e78(_0x2e69aa[_0xd79a('0x17')](0x1f4,_0x135e63[_0xd79a('0x19')]));});});};
\ No newline at end of file
index 4355800..91d3823 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84ab=['update','emit','removeListener','register','length','chatQueue:','./chatQueue.events','save','remove'];(function(_0x526de9,_0x36f376){var _0x596d5f=function(_0x3a25c8){while(--_0x3a25c8){_0x526de9['push'](_0x526de9['shift']());}};_0x596d5f(++_0x36f376);}(_0x84ab,0x12f));var _0xb84a=function(_0x5ce15c,_0x19c917){_0x5ce15c=_0x5ce15c-0x0;var _0x36e4f5=_0x84ab[_0x5ce15c];return _0x36e4f5;};'use strict';var ChatQueueEvents=require(_0xb84a('0x0'));var events=[_0xb84a('0x1'),_0xb84a('0x2'),_0xb84a('0x3')];function createListener(_0x473c3,_0x512f13){return function(_0xc83587){_0x512f13[_0xb84a('0x4')](_0x473c3,_0xc83587);};}function removeListener(_0x47b8e3,_0x9d3a00){return function(){ChatQueueEvents[_0xb84a('0x5')](_0x47b8e3,_0x9d3a00);};}exports[_0xb84a('0x6')]=function(_0x5b9def){for(var _0x521a64=0x0,_0x4dc496=events[_0xb84a('0x7')];_0x521a64<_0x4dc496;_0x521a64++){var _0x4fac4d=events[_0x521a64];var _0x3e9086=createListener(_0xb84a('0x8')+_0x4fac4d,_0x5b9def);ChatQueueEvents['on'](_0x4fac4d,_0x3e9086);}};
\ No newline at end of file
+var _0x6f0d=['update','emit','removeListener','length','save','remove'];(function(_0x5397f4,_0x3f2c05){var _0x4cba07=function(_0x20b72d){while(--_0x20b72d){_0x5397f4['push'](_0x5397f4['shift']());}};_0x4cba07(++_0x3f2c05);}(_0x6f0d,0x16c));var _0xd6f0=function(_0x5b8cf2,_0x244949){_0x5b8cf2=_0x5b8cf2-0x0;var _0x1cb461=_0x6f0d[_0x5b8cf2];return _0x1cb461;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=[_0xd6f0('0x0'),_0xd6f0('0x1'),_0xd6f0('0x2')];function createListener(_0x107a8c,_0x573473){return function(_0x275230){_0x573473[_0xd6f0('0x3')](_0x107a8c,_0x275230);};}function removeListener(_0x2f78fb,_0x25344b){return function(){ChatQueueEvents[_0xd6f0('0x4')](_0x2f78fb,_0x25344b);};}exports['register']=function(_0x2d2ce6){for(var _0x4a8b0c=0x0,_0xe21ac4=events[_0xd6f0('0x5')];_0x4a8b0c<_0xe21ac4;_0x4a8b0c++){var _0x8b89a9=events[_0x4a8b0c];var _0x1a48a0=createListener('chatQueue:'+_0x8b89a9,_0x2d2ce6);ChatQueueEvents['on'](_0x8b89a9,_0x1a48a0);}};
\ No newline at end of file
index 348fa56..af3eda7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','show','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','addAgents','update','delete','/:id','removeTeams','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x4f3da8,_0x40c68d){var _0x3cba5e=function(_0x33fbe9){while(--_0x33fbe9){_0x4f3da8['push'](_0x4f3da8['shift']());}};_0x3cba5e(++_0x40c68d);}(_0x008c,0x188));var _0xc008=function(_0x13e47d,_0x1e38bd){_0x13e47d=_0x13e47d-0x0;var _0x1042e4=_0x008c[_0x13e47d];return _0x1042e4;};'use strict';var multer=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var path=require(_0xc008('0x2'));var timeout=require(_0xc008('0x3'));var express=require(_0xc008('0x4'));var router=express['Router']();var fs_extra=require(_0xc008('0x5'));var auth=require(_0xc008('0x6'));var interaction=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var controller=require(_0xc008('0x9'));router[_0xc008('0xa')]('/',auth[_0xc008('0xb')](),controller[_0xc008('0xc')]);router[_0xc008('0xa')]('/describe',auth[_0xc008('0xb')](),controller['describe']);router[_0xc008('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xc008('0xd')]);router[_0xc008('0xa')]('/:id/members',auth['isAuthenticated'](),controller['getMembers']);router[_0xc008('0xa')](_0xc008('0xe'),auth['isAuthenticated'](),controller[_0xc008('0xf')]);router[_0xc008('0xa')](_0xc008('0x10'),auth[_0xc008('0xb')](),controller[_0xc008('0x11')]);router[_0xc008('0x12')]('/',auth[_0xc008('0xb')](),controller['create']);router['post'](_0xc008('0xe'),auth['isAuthenticated'](),controller[_0xc008('0x13')]);router[_0xc008('0x12')](_0xc008('0x10'),auth[_0xc008('0xb')](),controller[_0xc008('0x14')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xc008('0x15')]);router[_0xc008('0x16')](_0xc008('0x17'),auth[_0xc008('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth['isAuthenticated'](),controller[_0xc008('0x18')]);router[_0xc008('0x16')]('/:id/users',auth[_0xc008('0xb')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x5fc3=['update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','describe','/:id','show','getMembers','/:id/teams','/:id/users','post','create','addTeams','put'];(function(_0x31cb5f,_0x2df766){var _0x586042=function(_0x53c807){while(--_0x53c807){_0x31cb5f['push'](_0x31cb5f['shift']());}};_0x586042(++_0x2df766);}(_0x5fc3,0xa8));var _0x35fc=function(_0x16a637,_0x5eb627){_0x16a637=_0x16a637-0x0;var _0x25126d=_0x5fc3[_0x16a637];return _0x25126d;};'use strict';var multer=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var path=require('path');var timeout=require(_0x35fc('0x2'));var express=require(_0x35fc('0x3'));var router=express[_0x35fc('0x4')]();var fs_extra=require(_0x35fc('0x5'));var auth=require(_0x35fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x35fc('0x7'));var controller=require(_0x35fc('0x8'));router[_0x35fc('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x35fc('0x9')]('/describe',auth[_0x35fc('0xa')](),controller[_0x35fc('0xb')]);router[_0x35fc('0x9')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0xd')]);router[_0x35fc('0x9')]('/:id/members',auth[_0x35fc('0xa')](),controller[_0x35fc('0xe')]);router['get'](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller['getTeams']);router[_0x35fc('0x9')](_0x35fc('0x10'),auth['isAuthenticated'](),controller['getAgents']);router[_0x35fc('0x11')]('/',auth['isAuthenticated'](),controller[_0x35fc('0x12')]);router[_0x35fc('0x11')](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x13')]);router['post']('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0x35fc('0x14')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x15')]);router[_0x35fc('0x16')](_0x35fc('0xc'),auth['isAuthenticated'](),controller[_0x35fc('0x17')]);router[_0x35fc('0x16')]('/:id/teams',auth[_0x35fc('0xa')](),controller[_0x35fc('0x18')]);router[_0x35fc('0x16')]('/:id/users',auth[_0x35fc('0xa')](),controller[_0x35fc('0x19')]);module[_0x35fc('0x1a')]=router;
\ No newline at end of file
index 6606788..ceee23c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b37=['moment','sequelize','exports','STRING','DATE'];(function(_0xa6cc5c,_0x239c99){var _0x44803d=function(_0x515b6e){while(--_0x515b6e){_0xa6cc5c['push'](_0xa6cc5c['shift']());}};_0x44803d(++_0x239c99);}(_0x2b37,0xa0));var _0x72b3=function(_0xd7648,_0x2c7f7f){_0xd7648=_0xd7648-0x0;var _0x3ceff2=_0x2b37[_0xd7648];return _0x3ceff2;};'use strict';var moment=require(_0x72b3('0x0'));var Sequelize=require(_0x72b3('0x1'));module[_0x72b3('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x72b3('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x72b3('0x4')]},'exitAt':{'type':Sequelize[_0x72b3('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb670=['sequelize','STRING','DATE','moment'];(function(_0x450af2,_0x2d8417){var _0x4a8ba6=function(_0x25ab12){while(--_0x25ab12){_0x450af2['push'](_0x450af2['shift']());}};_0x4a8ba6(++_0x2d8417);}(_0xb670,0x1c3));var _0x0b67=function(_0x20b9cc,_0x18473d){_0x20b9cc=_0x20b9cc-0x0;var _0xacda3a=_0xb670[_0x20b9cc];return _0xacda3a;};'use strict';var moment=require(_0x0b67('0x0'));var Sequelize=require(_0x0b67('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x0b67('0x2')]},'joinAt':{'type':Sequelize[_0x0b67('0x3')]},'leaveAt':{'type':Sequelize[_0x0b67('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x0b67('0x3')]},'reason':{'type':Sequelize[_0x0b67('0x2')]}};
\ No newline at end of file
index 8f2f1e1..5d19a95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18b2=['../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','end','error','name','send','index','rawAttributes','fieldName','type','key','map','query','attributes','intersection','fields','length','model','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','ChatQueueReport','includeAll','include','findAll','catch','show','params','keys','find','create','body','update','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger'];(function(_0x3ab687,_0x2f3a18){var _0x512596=function(_0x981ef2){while(--_0x981ef2){_0x3ab687['push'](_0x3ab687['shift']());}};_0x512596(++_0x2f3a18);}(_0x18b2,0x85));var _0x218b=function(_0x128e80,_0x4a2fae){_0x128e80=_0x128e80-0x0;var _0x55b121=_0x18b2[_0x128e80];return _0x55b121;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x218b('0x0'));var zipdir=require(_0x218b('0x1'));var jsonpatch=require(_0x218b('0x2'));var rp=require('request-promise');var moment=require(_0x218b('0x3'));var BPromise=require(_0x218b('0x4'));var Mustache=require(_0x218b('0x5'));var util=require(_0x218b('0x6'));var path=require(_0x218b('0x7'));var sox=require(_0x218b('0x8'));var csv=require(_0x218b('0x9'));var ejs=require(_0x218b('0xa'));var fs=require('fs');var fs_extra=require(_0x218b('0xb'));var _=require(_0x218b('0xc'));var squel=require(_0x218b('0xd'));var crypto=require(_0x218b('0xe'));var jsforce=require(_0x218b('0xf'));var deskjs=require(_0x218b('0x10'));var toCsv=require(_0x218b('0x9'));var querystring=require('querystring');var Papa=require(_0x218b('0x11'));var Redis=require(_0x218b('0x12'));var authService=require(_0x218b('0x13'));var qs=require(_0x218b('0x14'));var as=require(_0x218b('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x218b('0x16'))('api');var utils=require(_0x218b('0x17'));var config=require(_0x218b('0x18'));var licenseUtil=require(_0x218b('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x26d573,_0x1a8456){_0x1a8456=_0x1a8456||0xcc;return function(_0x57ea4e){if(_0x57ea4e){return _0x26d573[_0x218b('0x1a')](_0x1a8456);}return _0x26d573[_0x218b('0x1b')](_0x1a8456)['end']();};}function respondWithResult(_0x3475c7,_0xa45378){_0xa45378=_0xa45378||0xc8;return function(_0x467aa0){if(_0x467aa0){return _0x3475c7[_0x218b('0x1b')](_0xa45378)[_0x218b('0x1c')](_0x467aa0);}};}function respondWithFilteredResult(_0x27b5b8,_0x384852){return function(_0x2487d3){if(_0x2487d3){var _0x461808=typeof _0x384852[_0x218b('0x1d')]===_0x218b('0x1e')&&typeof _0x384852[_0x218b('0x1f')]===_0x218b('0x1e');var _0x13ecbd=_0x2487d3[_0x218b('0x20')];var _0x477f32=_0x461808?0x0:_0x384852['offset'];var _0x2a1c5c=_0x461808?_0x2487d3[_0x218b('0x20')]:_0x384852[_0x218b('0x1d')]+_0x384852['limit'];var _0x5f249c;if(_0x2a1c5c>=_0x13ecbd){_0x2a1c5c=_0x13ecbd;_0x5f249c=0xc8;}else{_0x5f249c=0xce;}_0x27b5b8['status'](_0x5f249c);return _0x27b5b8[_0x218b('0x21')](_0x218b('0x22'),_0x477f32+'-'+_0x2a1c5c+'/'+_0x13ecbd)[_0x218b('0x1c')](_0x2487d3);}return null;};}function patchUpdates(_0x157a8e){return function(_0x449851){try{jsonpatch[_0x218b('0x23')](_0x449851,_0x157a8e,!![]);}catch(_0xeaa78b){return BPromise[_0x218b('0x24')](_0xeaa78b);}return _0x449851['save']();};}function saveUpdates(_0x50e657,_0x387c21){return function(_0x35716b){if(_0x35716b){return _0x35716b['update'](_0x50e657)[_0x218b('0x25')](function(_0x280f32){return _0x280f32;});}return null;};}function removeEntity(_0x40895a,_0x571909){return function(_0x52b3a9){if(_0x52b3a9){return _0x52b3a9[_0x218b('0x26')]()[_0x218b('0x25')](function(){_0x40895a['status'](0xcc)[_0x218b('0x27')]();});}};}function handleEntityNotFound(_0x1d70a8,_0x3a6868){return function(_0x3135d8){if(!_0x3135d8){_0x1d70a8[_0x218b('0x1a')](0x194);}return _0x3135d8;};}function handleError(_0x5120d7,_0x178214){_0x178214=_0x178214||0x1f4;return function(_0x239f75){logger[_0x218b('0x28')](_0x239f75['stack']);if(_0x239f75[_0x218b('0x29')]){delete _0x239f75['name'];}_0x5120d7['status'](_0x178214)[_0x218b('0x2a')](_0x239f75);};}exports[_0x218b('0x2b')]=function(_0x50b0f5,_0x4f2af0){var _0x539bb5={},_0x4aca90={},_0x5cc7dc={'count':0x0,'rows':[]};var _0x48b42e=_['map'](db['ChatQueueReport'][_0x218b('0x2c')],function(_0x2351d0){return{'name':_0x2351d0[_0x218b('0x2d')],'type':_0x2351d0[_0x218b('0x2e')][_0x218b('0x2f')]};});_0x4aca90['model']=_[_0x218b('0x30')](_0x48b42e,'name');_0x4aca90[_0x218b('0x31')]=_['keys'](_0x50b0f5[_0x218b('0x31')]);_0x4aca90['filters']=_['intersection'](_0x4aca90['model'],_0x4aca90['query']);_0x539bb5[_0x218b('0x32')]=_[_0x218b('0x33')](_0x4aca90['model'],qs[_0x218b('0x34')](_0x50b0f5[_0x218b('0x31')][_0x218b('0x34')]));_0x539bb5[_0x218b('0x32')]=_0x539bb5['attributes'][_0x218b('0x35')]?_0x539bb5[_0x218b('0x32')]:_0x4aca90[_0x218b('0x36')];if(!_0x50b0f5[_0x218b('0x31')][_0x218b('0x37')](_0x218b('0x38'))){_0x539bb5[_0x218b('0x1f')]=qs[_0x218b('0x1f')](_0x50b0f5['query']['limit']);_0x539bb5[_0x218b('0x1d')]=qs[_0x218b('0x1d')](_0x50b0f5[_0x218b('0x31')][_0x218b('0x1d')]);}_0x539bb5[_0x218b('0x39')]=qs[_0x218b('0x3a')](_0x50b0f5['query'][_0x218b('0x3a')]);_0x539bb5['where']=qs['filters'](_[_0x218b('0x3b')](_0x50b0f5[_0x218b('0x31')],_0x4aca90['filters']),_0x48b42e);if(_0x50b0f5[_0x218b('0x31')][_0x218b('0x3c')]){_0x539bb5['where']=_['merge'](_0x539bb5[_0x218b('0x3d')],{'$or':_[_0x218b('0x30')](_0x48b42e,function(_0x4735d2){if(_0x4735d2['type']!==_0x218b('0x3e')){var _0x220fb5={};_0x220fb5[_0x4735d2['name']]={'$like':'%'+_0x50b0f5[_0x218b('0x31')][_0x218b('0x3c')]+'%'};return _0x220fb5;}})});}_0x539bb5=_[_0x218b('0x3f')]({},_0x539bb5,_0x50b0f5[_0x218b('0x40')]);var _0x21b296={'where':_0x539bb5[_0x218b('0x3d')]};return db[_0x218b('0x41')][_0x218b('0x20')](_0x21b296)[_0x218b('0x25')](function(_0x3ef2d3){_0x5cc7dc[_0x218b('0x20')]=_0x3ef2d3;if(_0x50b0f5['query'][_0x218b('0x42')]){_0x539bb5[_0x218b('0x43')]=[{'all':!![]}];}return db['ChatQueueReport'][_0x218b('0x44')](_0x539bb5);})[_0x218b('0x25')](function(_0x5807ef){_0x5cc7dc['rows']=_0x5807ef;return _0x5cc7dc;})[_0x218b('0x25')](respondWithFilteredResult(_0x4f2af0,_0x539bb5))[_0x218b('0x45')](handleError(_0x4f2af0,null));};exports[_0x218b('0x46')]=function(_0x3f3e92,_0x35ef57){var _0x4a9076={'raw':!![],'where':{'id':_0x3f3e92[_0x218b('0x47')]['id']}},_0x13360e={};_0x13360e['model']=_['keys'](db['ChatQueueReport']['rawAttributes']);_0x13360e[_0x218b('0x31')]=_[_0x218b('0x48')](_0x3f3e92[_0x218b('0x31')]);_0x13360e['filters']=_[_0x218b('0x33')](_0x13360e[_0x218b('0x36')],_0x13360e[_0x218b('0x31')]);_0x4a9076[_0x218b('0x32')]=_[_0x218b('0x33')](_0x13360e['model'],qs[_0x218b('0x34')](_0x3f3e92[_0x218b('0x31')][_0x218b('0x34')]));_0x4a9076[_0x218b('0x32')]=_0x4a9076[_0x218b('0x32')][_0x218b('0x35')]?_0x4a9076[_0x218b('0x32')]:_0x13360e[_0x218b('0x36')];if(_0x3f3e92[_0x218b('0x31')]['includeAll']){_0x4a9076[_0x218b('0x43')]=[{'all':!![]}];}_0x4a9076=_[_0x218b('0x3f')]({},_0x4a9076,_0x3f3e92['options']);return db[_0x218b('0x41')][_0x218b('0x49')](_0x4a9076)[_0x218b('0x25')](handleEntityNotFound(_0x35ef57,null))[_0x218b('0x25')](respondWithResult(_0x35ef57,null))['catch'](handleError(_0x35ef57,null));};exports[_0x218b('0x4a')]=function(_0x5b5f4a,_0x2c8cae){return db[_0x218b('0x41')][_0x218b('0x4a')](_0x5b5f4a[_0x218b('0x4b')],{})[_0x218b('0x25')](respondWithResult(_0x2c8cae,0xc9))[_0x218b('0x45')](handleError(_0x2c8cae,null));};exports[_0x218b('0x4c')]=function(_0x2ce155,_0x30c63c){if(_0x2ce155[_0x218b('0x4b')]['id']){delete _0x2ce155['body']['id'];}return db[_0x218b('0x41')][_0x218b('0x49')]({'where':{'id':_0x2ce155[_0x218b('0x47')]['id']}})[_0x218b('0x25')](handleEntityNotFound(_0x30c63c,null))[_0x218b('0x25')](saveUpdates(_0x2ce155[_0x218b('0x4b')],null))[_0x218b('0x25')](respondWithResult(_0x30c63c,null))[_0x218b('0x45')](handleError(_0x30c63c,null));};exports[_0x218b('0x26')]=function(_0x392866,_0xf3dfe9){return db[_0x218b('0x41')][_0x218b('0x49')]({'where':{'id':_0x392866[_0x218b('0x47')]['id']}})[_0x218b('0x25')](handleEntityNotFound(_0xf3dfe9,null))[_0x218b('0x25')](removeEntity(_0xf3dfe9,null))[_0x218b('0x45')](handleError(_0xf3dfe9,null));};exports[_0x218b('0x4d')]=function(_0x284435,_0x4b88cc){return db[_0x218b('0x41')][_0x218b('0x4d')]()[_0x218b('0x25')](respondWithResult(_0x4b88cc,null))[_0x218b('0x45')](handleError(_0x4b88cc,null));};
\ No newline at end of file
+var _0xbccd=['eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../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','save','update','then','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','hasOwnProperty','sort','filters','pick','filter','where','merge','options','includeAll','include','ChatQueueReport','findAll','params','keys','length','find','create','catch','body','describe'];(function(_0x2fc39b,_0x30a3a8){var _0x3d859c=function(_0x299dd1){while(--_0x299dd1){_0x2fc39b['push'](_0x2fc39b['shift']());}};_0x3d859c(++_0x30a3a8);}(_0xbccd,0x1b0));var _0xdbcc=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xbccd[_0x47b58b];return _0x46bebe;};'use strict';var emlformat=require(_0xdbcc('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xdbcc('0x1'));var rp=require(_0xdbcc('0x2'));var moment=require(_0xdbcc('0x3'));var BPromise=require(_0xdbcc('0x4'));var Mustache=require(_0xdbcc('0x5'));var util=require(_0xdbcc('0x6'));var path=require('path');var sox=require(_0xdbcc('0x7'));var csv=require(_0xdbcc('0x8'));var ejs=require(_0xdbcc('0x9'));var fs=require('fs');var fs_extra=require(_0xdbcc('0xa'));var _=require(_0xdbcc('0xb'));var squel=require(_0xdbcc('0xc'));var crypto=require(_0xdbcc('0xd'));var jsforce=require(_0xdbcc('0xe'));var deskjs=require(_0xdbcc('0xf'));var toCsv=require(_0xdbcc('0x8'));var querystring=require(_0xdbcc('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xdbcc('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xdbcc('0x12'));var hardwareService=require(_0xdbcc('0x13'));var logger=require(_0xdbcc('0x14'))(_0xdbcc('0x15'));var utils=require(_0xdbcc('0x16'));var config=require(_0xdbcc('0x17'));var licenseUtil=require(_0xdbcc('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2fbd02,_0x4c8384){_0x4c8384=_0x4c8384||0xcc;return function(_0x52b3bf){if(_0x52b3bf){return _0x2fbd02['sendStatus'](_0x4c8384);}return _0x2fbd02[_0xdbcc('0x19')](_0x4c8384)[_0xdbcc('0x1a')]();};}function respondWithResult(_0x290b93,_0xa799eb){_0xa799eb=_0xa799eb||0xc8;return function(_0x381f22){if(_0x381f22){return _0x290b93[_0xdbcc('0x19')](_0xa799eb)[_0xdbcc('0x1b')](_0x381f22);}};}function respondWithFilteredResult(_0x4649d2,_0x5c53a1){return function(_0x5688ce){if(_0x5688ce){var _0x2b189a=typeof _0x5c53a1[_0xdbcc('0x1c')]===_0xdbcc('0x1d')&&typeof _0x5c53a1[_0xdbcc('0x1e')]===_0xdbcc('0x1d');var _0x2df00c=_0x5688ce[_0xdbcc('0x1f')];var _0x3bfeb0=_0x2b189a?0x0:_0x5c53a1[_0xdbcc('0x1c')];var _0x3d9bda=_0x2b189a?_0x5688ce[_0xdbcc('0x1f')]:_0x5c53a1[_0xdbcc('0x1c')]+_0x5c53a1[_0xdbcc('0x1e')];var _0x4dd404;if(_0x3d9bda>=_0x2df00c){_0x3d9bda=_0x2df00c;_0x4dd404=0xc8;}else{_0x4dd404=0xce;}_0x4649d2['status'](_0x4dd404);return _0x4649d2[_0xdbcc('0x20')](_0xdbcc('0x21'),_0x3bfeb0+'-'+_0x3d9bda+'/'+_0x2df00c)['json'](_0x5688ce);}return null;};}function patchUpdates(_0x447f70){return function(_0x47990b){try{jsonpatch[_0xdbcc('0x22')](_0x47990b,_0x447f70,!![]);}catch(_0x500ec4){return BPromise['reject'](_0x500ec4);}return _0x47990b[_0xdbcc('0x23')]();};}function saveUpdates(_0x3c321f,_0x40d7d0){return function(_0x6eee38){if(_0x6eee38){return _0x6eee38[_0xdbcc('0x24')](_0x3c321f)[_0xdbcc('0x25')](function(_0x2d797a){return _0x2d797a;});}return null;};}function removeEntity(_0x18d47f,_0x591962){return function(_0x343523){if(_0x343523){return _0x343523['destroy']()[_0xdbcc('0x25')](function(){_0x18d47f[_0xdbcc('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x18d76d,_0xb2a8b4){return function(_0x2df594){if(!_0x2df594){_0x18d76d['sendStatus'](0x194);}return _0x2df594;};}function handleError(_0x50e23c,_0xbe9ba3){_0xbe9ba3=_0xbe9ba3||0x1f4;return function(_0x17e223){logger[_0xdbcc('0x26')](_0x17e223['stack']);if(_0x17e223[_0xdbcc('0x27')]){delete _0x17e223[_0xdbcc('0x27')];}_0x50e23c['status'](_0xbe9ba3)[_0xdbcc('0x28')](_0x17e223);};}exports[_0xdbcc('0x29')]=function(_0x26cf3a,_0x59b175){var _0x31412c={},_0x548047={},_0x1b4425={'count':0x0,'rows':[]};var _0x57d722=_[_0xdbcc('0x2a')](db['ChatQueueReport'][_0xdbcc('0x2b')],function(_0x38b9ac){return{'name':_0x38b9ac[_0xdbcc('0x2c')],'type':_0x38b9ac[_0xdbcc('0x2d')][_0xdbcc('0x2e')]};});_0x548047[_0xdbcc('0x2f')]=_[_0xdbcc('0x2a')](_0x57d722,'name');_0x548047[_0xdbcc('0x30')]=_['keys'](_0x26cf3a[_0xdbcc('0x30')]);_0x548047['filters']=_['intersection'](_0x548047[_0xdbcc('0x2f')],_0x548047[_0xdbcc('0x30')]);_0x31412c['attributes']=_[_0xdbcc('0x31')](_0x548047['model'],qs[_0xdbcc('0x32')](_0x26cf3a[_0xdbcc('0x30')][_0xdbcc('0x32')]));_0x31412c[_0xdbcc('0x33')]=_0x31412c[_0xdbcc('0x33')]['length']?_0x31412c[_0xdbcc('0x33')]:_0x548047[_0xdbcc('0x2f')];if(!_0x26cf3a[_0xdbcc('0x30')][_0xdbcc('0x34')]('nolimit')){_0x31412c['limit']=qs[_0xdbcc('0x1e')](_0x26cf3a['query']['limit']);_0x31412c[_0xdbcc('0x1c')]=qs[_0xdbcc('0x1c')](_0x26cf3a[_0xdbcc('0x30')]['offset']);}_0x31412c['order']=qs[_0xdbcc('0x35')](_0x26cf3a[_0xdbcc('0x30')]['sort']);_0x31412c['where']=qs[_0xdbcc('0x36')](_[_0xdbcc('0x37')](_0x26cf3a[_0xdbcc('0x30')],_0x548047[_0xdbcc('0x36')]),_0x57d722);if(_0x26cf3a[_0xdbcc('0x30')][_0xdbcc('0x38')]){_0x31412c[_0xdbcc('0x39')]=_['merge'](_0x31412c[_0xdbcc('0x39')],{'$or':_['map'](_0x57d722,function(_0x2826d5){if(_0x2826d5[_0xdbcc('0x2d')]!=='VIRTUAL'){var _0xfc5684={};_0xfc5684[_0x2826d5[_0xdbcc('0x27')]]={'$like':'%'+_0x26cf3a[_0xdbcc('0x30')][_0xdbcc('0x38')]+'%'};return _0xfc5684;}})});}_0x31412c=_[_0xdbcc('0x3a')]({},_0x31412c,_0x26cf3a[_0xdbcc('0x3b')]);var _0x193651={'where':_0x31412c[_0xdbcc('0x39')]};return db['ChatQueueReport'][_0xdbcc('0x1f')](_0x193651)[_0xdbcc('0x25')](function(_0x298e63){_0x1b4425[_0xdbcc('0x1f')]=_0x298e63;if(_0x26cf3a['query'][_0xdbcc('0x3c')]){_0x31412c[_0xdbcc('0x3d')]=[{'all':!![]}];}return db[_0xdbcc('0x3e')][_0xdbcc('0x3f')](_0x31412c);})[_0xdbcc('0x25')](function(_0x24b4d5){_0x1b4425['rows']=_0x24b4d5;return _0x1b4425;})[_0xdbcc('0x25')](respondWithFilteredResult(_0x59b175,_0x31412c))['catch'](handleError(_0x59b175,null));};exports['show']=function(_0x3d4371,_0x3de65f){var _0x1c1ea8={'raw':!![],'where':{'id':_0x3d4371[_0xdbcc('0x40')]['id']}},_0x5c32db={};_0x5c32db['model']=_[_0xdbcc('0x41')](db[_0xdbcc('0x3e')][_0xdbcc('0x2b')]);_0x5c32db['query']=_[_0xdbcc('0x41')](_0x3d4371[_0xdbcc('0x30')]);_0x5c32db[_0xdbcc('0x36')]=_['intersection'](_0x5c32db[_0xdbcc('0x2f')],_0x5c32db[_0xdbcc('0x30')]);_0x1c1ea8['attributes']=_[_0xdbcc('0x31')](_0x5c32db[_0xdbcc('0x2f')],qs[_0xdbcc('0x32')](_0x3d4371['query'][_0xdbcc('0x32')]));_0x1c1ea8[_0xdbcc('0x33')]=_0x1c1ea8[_0xdbcc('0x33')][_0xdbcc('0x42')]?_0x1c1ea8['attributes']:_0x5c32db[_0xdbcc('0x2f')];if(_0x3d4371[_0xdbcc('0x30')]['includeAll']){_0x1c1ea8[_0xdbcc('0x3d')]=[{'all':!![]}];}_0x1c1ea8=_[_0xdbcc('0x3a')]({},_0x1c1ea8,_0x3d4371[_0xdbcc('0x3b')]);return db['ChatQueueReport'][_0xdbcc('0x43')](_0x1c1ea8)[_0xdbcc('0x25')](handleEntityNotFound(_0x3de65f,null))[_0xdbcc('0x25')](respondWithResult(_0x3de65f,null))['catch'](handleError(_0x3de65f,null));};exports[_0xdbcc('0x44')]=function(_0x301f00,_0x2b2172){return db[_0xdbcc('0x3e')]['create'](_0x301f00['body'],{})[_0xdbcc('0x25')](respondWithResult(_0x2b2172,0xc9))[_0xdbcc('0x45')](handleError(_0x2b2172,null));};exports[_0xdbcc('0x24')]=function(_0x5da133,_0x16f783){if(_0x5da133[_0xdbcc('0x46')]['id']){delete _0x5da133[_0xdbcc('0x46')]['id'];}return db[_0xdbcc('0x3e')]['find']({'where':{'id':_0x5da133[_0xdbcc('0x40')]['id']}})[_0xdbcc('0x25')](handleEntityNotFound(_0x16f783,null))[_0xdbcc('0x25')](saveUpdates(_0x5da133[_0xdbcc('0x46')],null))[_0xdbcc('0x25')](respondWithResult(_0x16f783,null))[_0xdbcc('0x45')](handleError(_0x16f783,null));};exports['destroy']=function(_0x534063,_0x1470e9){return db['ChatQueueReport'][_0xdbcc('0x43')]({'where':{'id':_0x534063['params']['id']}})['then'](handleEntityNotFound(_0x1470e9,null))[_0xdbcc('0x25')](removeEntity(_0x1470e9,null))['catch'](handleError(_0x1470e9,null));};exports[_0xdbcc('0x47')]=function(_0xe005aa,_0x5e2656){return db[_0xdbcc('0x3e')][_0xdbcc('0x47')]()['then'](respondWithResult(_0x5e2656,null))[_0xdbcc('0x45')](handleError(_0x5e2656,null));};
\ No newline at end of file
index b99f721..de865e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['define','ChatQueueReport','report_chat_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports'];(function(_0x5454be,_0x39b788){var _0x5c2ec8=function(_0x3eb123){while(--_0x3eb123){_0x5454be['push'](_0x5454be['shift']());}};_0x5c2ec8(++_0x39b788);}(_0xbaf0,0x12a));var _0x0baf=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xbaf0[_0x6c993a];return _0x27f547;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));module[_0x0baf('0x9')]=function(_0xe4c3c4,_0x335e24){return _0xe4c3c4[_0x0baf('0xa')](_0x0baf('0xb'),attributes,{'tableName':_0x0baf('0xc'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0baf('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb10b=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','report_chat_queue','uniqueid','lodash'];(function(_0x54a761,_0x431fd4){var _0x37d1da=function(_0x5ca617){while(--_0x5ca617){_0x54a761['push'](_0x54a761['shift']());}};_0x37d1da(++_0x431fd4);}(_0xb10b,0x12a));var _0xbb10=function(_0x1ac9b6,_0xe2449a){_0x1ac9b6=_0x1ac9b6-0x0;var _0xa0d863=_0xb10b[_0x1ac9b6];return _0xa0d863;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var logger=require(_0xbb10('0x1'))(_0xbb10('0x2'));var moment=require(_0xbb10('0x3'));var BPromise=require('bluebird');var rp=require(_0xbb10('0x4'));var fs=require('fs');var path=require(_0xbb10('0x5'));var rimraf=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var attributes=require(_0xbb10('0x8'));module[_0xbb10('0x9')]=function(_0x481979,_0x328583){return _0x481979[_0xbb10('0xa')]('ChatQueueReport',attributes,{'tableName':_0xbb10('0xb'),'paranoid':![],'indexes':[{'name':_0xbb10('0xc'),'fields':[_0xbb10('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 5810b79..c67b68f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6aa=['stringify','error','message','catch','ChatQueueReport','create','options','raw','CreateChatQueueReport','debug','UpdateChatQueueReport','where','attributes','limit','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','ChatQueueReport,\x20%s,\x20%s,\x20%s'];(function(_0x251eaf,_0x730fda){var _0x2a2983=function(_0x5cebcb){while(--_0x5cebcb){_0x251eaf['push'](_0x251eaf['shift']());}};_0x2a2983(++_0x730fda);}(_0xd6aa,0x182));var _0xad6a=function(_0xceb38b,_0x5d6bdb){_0xceb38b=_0xceb38b-0x0;var _0x4ba6f2=_0xd6aa[_0xceb38b];return _0x4ba6f2;};'use strict';var _=require(_0xad6a('0x0'));var util=require(_0xad6a('0x1'));var moment=require('moment');var BPromise=require(_0xad6a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xad6a('0x3'));var db=require(_0xad6a('0x4'))['db'];var utils=require(_0xad6a('0x5'));var logger=require(_0xad6a('0x6'))(_0xad6a('0x7'));var config=require(_0xad6a('0x8'));var jayson=require(_0xad6a('0x9'));var client=jayson[_0xad6a('0xa')][_0xad6a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x21cca8,_0x4c52bf,_0x3fe075){return new BPromise(function(_0x59ada9,_0x3d56d2){return client['request'](_0x21cca8,_0x3fe075)[_0xad6a('0xc')](function(_0xec3f65){logger[_0xad6a('0xd')](_0xad6a('0xe'),_0x4c52bf,_0xad6a('0xf'));logger['debug'](_0xad6a('0x10'),_0x4c52bf,_0xad6a('0xf'),JSON[_0xad6a('0x11')](_0xec3f65));if(_0xec3f65['error']){if(_0xec3f65['error']['code']===0x1f4){logger[_0xad6a('0x12')]('ChatQueueReport,\x20%s,\x20%s',_0x4c52bf,_0xec3f65['error'][_0xad6a('0x13')]);return _0x3d56d2(_0xec3f65['error'][_0xad6a('0x13')]);}logger[_0xad6a('0x12')](_0xad6a('0xe'),_0x4c52bf,_0xec3f65[_0xad6a('0x12')][_0xad6a('0x13')]);return _0x59ada9(_0xec3f65[_0xad6a('0x12')][_0xad6a('0x13')]);}else{logger[_0xad6a('0xd')](_0xad6a('0xe'),_0x4c52bf,'request\x20sent');_0x59ada9(_0xec3f65['result'][_0xad6a('0x13')]);}})[_0xad6a('0x14')](function(_0x557328){logger[_0xad6a('0x12')]('ChatQueueReport,\x20%s,\x20%s',_0x4c52bf,_0x557328);_0x3d56d2(_0x557328);});});}exports['CreateChatQueueReport']=function(_0x2f841a){var _0x2b61bf=this;return new Promise(function(_0x328364,_0x1dd5dd){return db[_0xad6a('0x15')][_0xad6a('0x16')](_0x2f841a['body'],{'raw':_0x2f841a[_0xad6a('0x17')]?_0x2f841a['options'][_0xad6a('0x18')]===undefined?!![]:![]:!![]})[_0xad6a('0xc')](function(_0x2338c6){logger[_0xad6a('0xd')](_0xad6a('0x19'),_0x2f841a);logger[_0xad6a('0x1a')]('CreateChatQueueReport',_0x2f841a,JSON[_0xad6a('0x11')](_0x2338c6));_0x328364(_0x2338c6);})['catch'](function(_0x4a12da){logger[_0xad6a('0x12')](_0xad6a('0x19'),_0x4a12da[_0xad6a('0x13')],_0x2f841a);_0x1dd5dd(_0x2b61bf[_0xad6a('0x12')](0x1f4,_0x4a12da[_0xad6a('0x13')]));});});};exports[_0xad6a('0x1b')]=function(_0x400911){var _0x38e9c0=this;return new Promise(function(_0x2fd5e3,_0x248f25){return db[_0xad6a('0x15')]['update'](_0x400911['body'],{'raw':_0x400911[_0xad6a('0x17')]?_0x400911[_0xad6a('0x17')][_0xad6a('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x400911[_0xad6a('0x17')]?_0x400911[_0xad6a('0x17')][_0xad6a('0x1c')]||null:null,'attributes':_0x400911[_0xad6a('0x17')]?_0x400911['options'][_0xad6a('0x1d')]||null:null,'limit':_0x400911[_0xad6a('0x17')]?_0x400911['options'][_0xad6a('0x1e')]||null:null})[_0xad6a('0xc')](function(_0x1c0b5e){logger['info'](_0xad6a('0x1b'),_0x400911);logger[_0xad6a('0x1a')](_0xad6a('0x1b'),_0x400911,JSON[_0xad6a('0x11')](_0x1c0b5e));_0x2fd5e3(_0x1c0b5e);})[_0xad6a('0x14')](function(_0x459677){logger[_0xad6a('0x12')]('UpdateChatQueueReport',_0x459677['message'],_0x400911);_0x248f25(_0x38e9c0[_0xad6a('0x12')](0x1f4,_0x459677['message']));});});};
\ No newline at end of file
+var _0x2472=['util','moment','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','CreateChatQueueReport','create','body','options','raw','ChatQueueReport','update','where','attributes','limit','UpdateChatQueueReport','catch','lodash'];(function(_0xa69705,_0x1637d9){var _0x3e0531=function(_0x254179){while(--_0x254179){_0xa69705['push'](_0xa69705['shift']());}};_0x3e0531(++_0x1637d9);}(_0x2472,0xd8));var _0x2247=function(_0x25682f,_0x1dcbd6){_0x25682f=_0x25682f-0x0;var _0x4cb134=_0x2472[_0x25682f];return _0x4cb134;};'use strict';var _=require(_0x2247('0x0'));var util=require(_0x2247('0x1'));var moment=require(_0x2247('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2247('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x2247('0x4'))(_0x2247('0x5'));var config=require(_0x2247('0x6'));var jayson=require(_0x2247('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x984435,_0x2325d9,_0x2881c9){return new BPromise(function(_0x1c83ae,_0x58f607){return client['request'](_0x984435,_0x2881c9)[_0x2247('0x8')](function(_0x4db2bb){logger[_0x2247('0x9')](_0x2247('0xa'),_0x2325d9,_0x2247('0xb'));logger[_0x2247('0xc')](_0x2247('0xd'),_0x2325d9,'request\x20sent',JSON[_0x2247('0xe')](_0x4db2bb));if(_0x4db2bb['error']){if(_0x4db2bb['error'][_0x2247('0xf')]===0x1f4){logger[_0x2247('0x10')]('ChatQueueReport,\x20%s,\x20%s',_0x2325d9,_0x4db2bb['error'][_0x2247('0x11')]);return _0x58f607(_0x4db2bb['error'][_0x2247('0x11')]);}logger['error'](_0x2247('0xa'),_0x2325d9,_0x4db2bb[_0x2247('0x10')][_0x2247('0x11')]);return _0x1c83ae(_0x4db2bb['error'][_0x2247('0x11')]);}else{logger[_0x2247('0x9')](_0x2247('0xa'),_0x2325d9,_0x2247('0xb'));_0x1c83ae(_0x4db2bb[_0x2247('0x12')][_0x2247('0x11')]);}})['catch'](function(_0x3a646a){logger['error'](_0x2247('0xa'),_0x2325d9,_0x3a646a);_0x58f607(_0x3a646a);});});}exports[_0x2247('0x13')]=function(_0x107bed){var _0x22701f=this;return new Promise(function(_0x173f59,_0x54359d){return db['ChatQueueReport'][_0x2247('0x14')](_0x107bed[_0x2247('0x15')],{'raw':_0x107bed[_0x2247('0x16')]?_0x107bed[_0x2247('0x16')][_0x2247('0x17')]===undefined?!![]:![]:!![]})[_0x2247('0x8')](function(_0x2e6536){logger['info'](_0x2247('0x13'),_0x107bed);logger['debug'](_0x2247('0x13'),_0x107bed,JSON[_0x2247('0xe')](_0x2e6536));_0x173f59(_0x2e6536);})['catch'](function(_0x58de26){logger['error'](_0x2247('0x13'),_0x58de26['message'],_0x107bed);_0x54359d(_0x22701f['error'](0x1f4,_0x58de26['message']));});});};exports['UpdateChatQueueReport']=function(_0x40c1a9){var _0x3b727b=this;return new Promise(function(_0x222952,_0x51d4e2){return db[_0x2247('0x18')][_0x2247('0x19')](_0x40c1a9[_0x2247('0x15')],{'raw':_0x40c1a9[_0x2247('0x16')]?_0x40c1a9[_0x2247('0x16')][_0x2247('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x40c1a9[_0x2247('0x16')]?_0x40c1a9[_0x2247('0x16')][_0x2247('0x1a')]||null:null,'attributes':_0x40c1a9['options']?_0x40c1a9['options'][_0x2247('0x1b')]||null:null,'limit':_0x40c1a9[_0x2247('0x16')]?_0x40c1a9[_0x2247('0x16')][_0x2247('0x1c')]||null:null})[_0x2247('0x8')](function(_0x550b35){logger['info'](_0x2247('0x1d'),_0x40c1a9);logger[_0x2247('0xc')]('UpdateChatQueueReport',_0x40c1a9,JSON[_0x2247('0xe')](_0x550b35));_0x222952(_0x550b35);})[_0x2247('0x1e')](function(_0x3ceb27){logger['error'](_0x2247('0x1d'),_0x3ceb27[_0x2247('0x11')],_0x40c1a9);_0x51d4e2(_0x3b727b[_0x2247('0x10')](0x1f4,_0x3ceb27['message']));});});};
\ No newline at end of file
index b7ce2b3..c536a83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdeb8=['show','post','create','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./chatQueueReport.controller','isAuthenticated','get','/describe','describe'];(function(_0x5ada34,_0x35aa7c){var _0x12484e=function(_0xc4bb96){while(--_0xc4bb96){_0x5ada34['push'](_0x5ada34['shift']());}};_0x12484e(++_0x35aa7c);}(_0xdeb8,0xdb));var _0x8deb=function(_0x4a2ea2,_0x73dd91){_0x4a2ea2=_0x4a2ea2-0x0;var _0x558490=_0xdeb8[_0x4a2ea2];return _0x558490;};'use strict';var multer=require('multer');var util=require(_0x8deb('0x0'));var path=require(_0x8deb('0x1'));var timeout=require(_0x8deb('0x2'));var express=require(_0x8deb('0x3'));var router=express['Router']();var fs_extra=require(_0x8deb('0x4'));var auth=require(_0x8deb('0x5'));var interaction=require(_0x8deb('0x6'));var config=require('../../config/environment');var controller=require(_0x8deb('0x7'));router['get']('/',auth[_0x8deb('0x8')](),controller['index']);router[_0x8deb('0x9')](_0x8deb('0xa'),auth['isAuthenticated'](),controller[_0x8deb('0xb')]);router[_0x8deb('0x9')]('/:id',auth[_0x8deb('0x8')](),controller[_0x8deb('0xc')]);router[_0x8deb('0xd')]('/',auth[_0x8deb('0x8')](),controller[_0x8deb('0xe')]);router[_0x8deb('0xf')](_0x8deb('0x10'),auth['isAuthenticated'](),controller[_0x8deb('0x11')]);router[_0x8deb('0x12')](_0x8deb('0x10'),auth[_0x8deb('0x8')](),controller[_0x8deb('0x13')]);module[_0x8deb('0x14')]=router;
\ No newline at end of file
+var _0x5a88=['../../components/interaction/service','get','isAuthenticated','/describe','describe','show','post','put','/:id','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x503cc9,_0x5a2694){var _0x7a4745=function(_0x12cd56){while(--_0x12cd56){_0x503cc9['push'](_0x503cc9['shift']());}};_0x7a4745(++_0x5a2694);}(_0x5a88,0x150));var _0x85a8=function(_0x39c585,_0x454a3f){_0x39c585=_0x39c585-0x0;var _0x3ddf40=_0x5a88[_0x39c585];return _0x3ddf40;};'use strict';var multer=require(_0x85a8('0x0'));var util=require('util');var path=require(_0x85a8('0x1'));var timeout=require('connect-timeout');var express=require(_0x85a8('0x2'));var router=express[_0x85a8('0x3')]();var fs_extra=require(_0x85a8('0x4'));var auth=require(_0x85a8('0x5'));var interaction=require(_0x85a8('0x6'));var config=require('../../config/environment');var controller=require('./chatQueueReport.controller');router[_0x85a8('0x7')]('/',auth[_0x85a8('0x8')](),controller['index']);router[_0x85a8('0x7')](_0x85a8('0x9'),auth[_0x85a8('0x8')](),controller[_0x85a8('0xa')]);router[_0x85a8('0x7')]('/:id',auth[_0x85a8('0x8')](),controller[_0x85a8('0xb')]);router[_0x85a8('0xc')]('/',auth[_0x85a8('0x8')](),controller['create']);router[_0x85a8('0xd')](_0x85a8('0xe'),auth[_0x85a8('0x8')](),controller[_0x85a8('0xf')]);router[_0x85a8('0x10')](_0x85a8('0xe'),auth[_0x85a8('0x8')](),controller[_0x85a8('0x11')]);module[_0x85a8('0x12')]=router;
\ No newline at end of file
index 33b5a1b..107a692 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x49f72d,_0x315dc6){var _0x4e1123=function(_0x37464b){while(--_0x37464b){_0x49f72d['push'](_0x49f72d['shift']());}};_0x4e1123(++_0x315dc6);}(_0x9c44,0x178));var _0x49c4=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x9c44[_0x8c43de];return _0xa6591b;};'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 _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x46957f,_0x56fa94){var _0x407fa3=function(_0xfd66f2){while(--_0xfd66f2){_0x46957f['push'](_0x46957f['shift']());}};_0x407fa3(++_0x56fa94);}(_0xf4eb,0xec));var _0xbf4e=function(_0x4429da,_0x20f2b2){_0x4429da=_0x4429da-0x0;var _0x331008=_0xf4eb[_0x4429da];return _0x331008;};'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 00d0134..748abac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e91=['include','findAll','rows','catch','show','keys','find','create','body','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','error','name','index','map','ChatTransferReport','rawAttributes','fieldName','key','query','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','type','options'];(function(_0x48d2cd,_0x14c4b7){var _0x5b4bb3=function(_0xd881bb){while(--_0xd881bb){_0x48d2cd['push'](_0x48d2cd['shift']());}};_0x5b4bb3(++_0x14c4b7);}(_0x9e91,0x138));var _0x19e9=function(_0x3a0f87,_0xc3077d){_0x3a0f87=_0x3a0f87-0x0;var _0x508a83=_0x9e91[_0x3a0f87];return _0x508a83;};'use strict';var emlformat=require(_0x19e9('0x0'));var rimraf=require(_0x19e9('0x1'));var zipdir=require(_0x19e9('0x2'));var jsonpatch=require(_0x19e9('0x3'));var rp=require('request-promise');var moment=require(_0x19e9('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x19e9('0x5'));var sox=require(_0x19e9('0x6'));var csv=require(_0x19e9('0x7'));var ejs=require(_0x19e9('0x8'));var fs=require('fs');var fs_extra=require(_0x19e9('0x9'));var _=require(_0x19e9('0xa'));var squel=require(_0x19e9('0xb'));var crypto=require(_0x19e9('0xc'));var jsforce=require(_0x19e9('0xd'));var deskjs=require(_0x19e9('0xe'));var toCsv=require(_0x19e9('0x7'));var querystring=require(_0x19e9('0xf'));var Papa=require('papaparse');var Redis=require(_0x19e9('0x10'));var authService=require(_0x19e9('0x11'));var qs=require(_0x19e9('0x12'));var as=require(_0x19e9('0x13'));var hardwareService=require(_0x19e9('0x14'));var logger=require(_0x19e9('0x15'))(_0x19e9('0x16'));var utils=require('../../config/utils');var config=require(_0x19e9('0x17'));var licenseUtil=require(_0x19e9('0x18'));var db=require(_0x19e9('0x19'))['db'];function respondWithStatusCode(_0x3e6bed,_0x13fd65){_0x13fd65=_0x13fd65||0xcc;return function(_0x20d30e){if(_0x20d30e){return _0x3e6bed[_0x19e9('0x1a')](_0x13fd65);}return _0x3e6bed[_0x19e9('0x1b')](_0x13fd65)[_0x19e9('0x1c')]();};}function respondWithResult(_0x17262a,_0x2cd013){_0x2cd013=_0x2cd013||0xc8;return function(_0x5581c3){if(_0x5581c3){return _0x17262a[_0x19e9('0x1b')](_0x2cd013)[_0x19e9('0x1d')](_0x5581c3);}};}function respondWithFilteredResult(_0x30dbe3,_0x37a1eb){return function(_0xac1d05){if(_0xac1d05){var _0x3fe831=typeof _0x37a1eb[_0x19e9('0x1e')]===_0x19e9('0x1f')&&typeof _0x37a1eb[_0x19e9('0x20')]===_0x19e9('0x1f');var _0x56b923=_0xac1d05['count'];var _0x54ff5f=_0x3fe831?0x0:_0x37a1eb[_0x19e9('0x1e')];var _0x4252bc=_0x3fe831?_0xac1d05[_0x19e9('0x21')]:_0x37a1eb[_0x19e9('0x1e')]+_0x37a1eb['limit'];var _0x41c3b8;if(_0x4252bc>=_0x56b923){_0x4252bc=_0x56b923;_0x41c3b8=0xc8;}else{_0x41c3b8=0xce;}_0x30dbe3[_0x19e9('0x1b')](_0x41c3b8);return _0x30dbe3[_0x19e9('0x22')](_0x19e9('0x23'),_0x54ff5f+'-'+_0x4252bc+'/'+_0x56b923)[_0x19e9('0x1d')](_0xac1d05);}return null;};}function patchUpdates(_0x1244f2){return function(_0x4dbdcb){try{jsonpatch[_0x19e9('0x24')](_0x4dbdcb,_0x1244f2,!![]);}catch(_0x53cb1a){return BPromise['reject'](_0x53cb1a);}return _0x4dbdcb['save']();};}function saveUpdates(_0x221d98,_0x276eb8){return function(_0x2a7d15){if(_0x2a7d15){return _0x2a7d15[_0x19e9('0x25')](_0x221d98)[_0x19e9('0x26')](function(_0x56def4){return _0x56def4;});}return null;};}function removeEntity(_0x43ae10,_0xd5955c){return function(_0x4151a4){if(_0x4151a4){return _0x4151a4['destroy']()[_0x19e9('0x26')](function(){_0x43ae10[_0x19e9('0x1b')](0xcc)[_0x19e9('0x1c')]();});}};}function handleEntityNotFound(_0x49ff5f,_0x6c474a){return function(_0x4c28eb){if(!_0x4c28eb){_0x49ff5f[_0x19e9('0x1a')](0x194);}return _0x4c28eb;};}function handleError(_0x3dc274,_0x3cfb5f){_0x3cfb5f=_0x3cfb5f||0x1f4;return function(_0x17282c){logger[_0x19e9('0x27')](_0x17282c['stack']);if(_0x17282c[_0x19e9('0x28')]){delete _0x17282c[_0x19e9('0x28')];}_0x3dc274['status'](_0x3cfb5f)['send'](_0x17282c);};}exports[_0x19e9('0x29')]=function(_0x2f063f,_0x34a81a){var _0x9fb4f6={},_0x36ea9c={},_0x7a2c33={'count':0x0,'rows':[]};var _0x16d96e=_[_0x19e9('0x2a')](db[_0x19e9('0x2b')][_0x19e9('0x2c')],function(_0x5fc225){return{'name':_0x5fc225[_0x19e9('0x2d')],'type':_0x5fc225['type'][_0x19e9('0x2e')]};});_0x36ea9c['model']=_[_0x19e9('0x2a')](_0x16d96e,'name');_0x36ea9c['query']=_['keys'](_0x2f063f[_0x19e9('0x2f')]);_0x36ea9c[_0x19e9('0x30')]=_[_0x19e9('0x31')](_0x36ea9c[_0x19e9('0x32')],_0x36ea9c[_0x19e9('0x2f')]);_0x9fb4f6['attributes']=_['intersection'](_0x36ea9c[_0x19e9('0x32')],qs['fields'](_0x2f063f['query'][_0x19e9('0x33')]));_0x9fb4f6[_0x19e9('0x34')]=_0x9fb4f6['attributes'][_0x19e9('0x35')]?_0x9fb4f6[_0x19e9('0x34')]:_0x36ea9c[_0x19e9('0x32')];if(!_0x2f063f[_0x19e9('0x2f')]['hasOwnProperty'](_0x19e9('0x36'))){_0x9fb4f6['limit']=qs['limit'](_0x2f063f['query'][_0x19e9('0x20')]);_0x9fb4f6[_0x19e9('0x1e')]=qs['offset'](_0x2f063f[_0x19e9('0x2f')]['offset']);}_0x9fb4f6[_0x19e9('0x37')]=qs['sort'](_0x2f063f[_0x19e9('0x2f')][_0x19e9('0x38')]);_0x9fb4f6[_0x19e9('0x39')]=qs[_0x19e9('0x30')](_[_0x19e9('0x3a')](_0x2f063f['query'],_0x36ea9c[_0x19e9('0x30')]),_0x16d96e);if(_0x2f063f[_0x19e9('0x2f')][_0x19e9('0x3b')]){_0x9fb4f6[_0x19e9('0x39')]=_[_0x19e9('0x3c')](_0x9fb4f6[_0x19e9('0x39')],{'$or':_['map'](_0x16d96e,function(_0x2a3da5){if(_0x2a3da5[_0x19e9('0x3d')]!=='VIRTUAL'){var _0x4ed38e={};_0x4ed38e[_0x2a3da5[_0x19e9('0x28')]]={'$like':'%'+_0x2f063f['query'][_0x19e9('0x3b')]+'%'};return _0x4ed38e;}})});}_0x9fb4f6=_[_0x19e9('0x3c')]({},_0x9fb4f6,_0x2f063f[_0x19e9('0x3e')]);var _0x1cdcd0={'where':_0x9fb4f6[_0x19e9('0x39')]};return db[_0x19e9('0x2b')]['count'](_0x1cdcd0)[_0x19e9('0x26')](function(_0x47d6fd){_0x7a2c33['count']=_0x47d6fd;if(_0x2f063f['query']['includeAll']){_0x9fb4f6[_0x19e9('0x3f')]=[{'all':!![]}];}return db[_0x19e9('0x2b')][_0x19e9('0x40')](_0x9fb4f6);})['then'](function(_0x29819d){_0x7a2c33[_0x19e9('0x41')]=_0x29819d;return _0x7a2c33;})[_0x19e9('0x26')](respondWithFilteredResult(_0x34a81a,_0x9fb4f6))[_0x19e9('0x42')](handleError(_0x34a81a,null));};exports[_0x19e9('0x43')]=function(_0xd1fee1,_0xbb463c){var _0x1bb7b0={'raw':!![],'where':{'id':_0xd1fee1['params']['id']}},_0x21ecd7={};_0x21ecd7[_0x19e9('0x32')]=_['keys'](db['ChatTransferReport']['rawAttributes']);_0x21ecd7[_0x19e9('0x2f')]=_[_0x19e9('0x44')](_0xd1fee1[_0x19e9('0x2f')]);_0x21ecd7[_0x19e9('0x30')]=_[_0x19e9('0x31')](_0x21ecd7['model'],_0x21ecd7[_0x19e9('0x2f')]);_0x1bb7b0[_0x19e9('0x34')]=_['intersection'](_0x21ecd7['model'],qs['fields'](_0xd1fee1[_0x19e9('0x2f')][_0x19e9('0x33')]));_0x1bb7b0[_0x19e9('0x34')]=_0x1bb7b0['attributes'][_0x19e9('0x35')]?_0x1bb7b0['attributes']:_0x21ecd7['model'];if(_0xd1fee1['query']['includeAll']){_0x1bb7b0[_0x19e9('0x3f')]=[{'all':!![]}];}_0x1bb7b0=_[_0x19e9('0x3c')]({},_0x1bb7b0,_0xd1fee1[_0x19e9('0x3e')]);return db[_0x19e9('0x2b')][_0x19e9('0x45')](_0x1bb7b0)['then'](handleEntityNotFound(_0xbb463c,null))[_0x19e9('0x26')](respondWithResult(_0xbb463c,null))[_0x19e9('0x42')](handleError(_0xbb463c,null));};exports[_0x19e9('0x46')]=function(_0x553398,_0x32404a){return db[_0x19e9('0x2b')]['create'](_0x553398[_0x19e9('0x47')],{})[_0x19e9('0x26')](respondWithResult(_0x32404a,0xc9))['catch'](handleError(_0x32404a,null));};exports[_0x19e9('0x25')]=function(_0x55bf66,_0x274828){if(_0x55bf66['body']['id']){delete _0x55bf66[_0x19e9('0x47')]['id'];}return db[_0x19e9('0x2b')][_0x19e9('0x45')]({'where':{'id':_0x55bf66[_0x19e9('0x48')]['id']}})['then'](handleEntityNotFound(_0x274828,null))[_0x19e9('0x26')](saveUpdates(_0x55bf66[_0x19e9('0x47')],null))[_0x19e9('0x26')](respondWithResult(_0x274828,null))[_0x19e9('0x42')](handleError(_0x274828,null));};exports[_0x19e9('0x49')]=function(_0x39f8c6,_0x38a92e){return db[_0x19e9('0x2b')][_0x19e9('0x45')]({'where':{'id':_0x39f8c6[_0x19e9('0x48')]['id']}})['then'](handleEntityNotFound(_0x38a92e,null))['then'](removeEntity(_0x38a92e,null))['catch'](handleError(_0x38a92e,null));};exports[_0x19e9('0x4a')]=function(_0x6a2cf9,_0x39ffb6){return db[_0x19e9('0x2b')][_0x19e9('0x4a')]()[_0x19e9('0x26')](respondWithResult(_0x39ffb6,null))[_0x19e9('0x42')](handleError(_0x39ffb6,null));};
\ No newline at end of file
+var _0x0dbf=['offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','stack','send','index','map','ChatTransferReport','rawAttributes','fieldName','type','key','name','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','length','create','body','find','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json'];(function(_0x40e59f,_0xc9544f){var _0x59239a=function(_0x44344d){while(--_0x44344d){_0x40e59f['push'](_0x40e59f['shift']());}};_0x59239a(++_0xc9544f);}(_0x0dbf,0x119));var _0xf0db=function(_0x5f1cf8,_0x5e0923){_0x5f1cf8=_0x5f1cf8-0x0;var _0x27d0fa=_0x0dbf[_0x5f1cf8];return _0x27d0fa;};'use strict';var emlformat=require(_0xf0db('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf0db('0x1'));var jsonpatch=require(_0xf0db('0x2'));var rp=require('request-promise');var moment=require(_0xf0db('0x3'));var BPromise=require(_0xf0db('0x4'));var Mustache=require(_0xf0db('0x5'));var util=require(_0xf0db('0x6'));var path=require(_0xf0db('0x7'));var sox=require(_0xf0db('0x8'));var csv=require('to-csv');var ejs=require(_0xf0db('0x9'));var fs=require('fs');var fs_extra=require(_0xf0db('0xa'));var _=require(_0xf0db('0xb'));var squel=require(_0xf0db('0xc'));var crypto=require(_0xf0db('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf0db('0xe'));var toCsv=require(_0xf0db('0xf'));var querystring=require(_0xf0db('0x10'));var Papa=require(_0xf0db('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xf0db('0x12'));var as=require(_0xf0db('0x13'));var hardwareService=require(_0xf0db('0x14'));var logger=require(_0xf0db('0x15'))(_0xf0db('0x16'));var utils=require(_0xf0db('0x17'));var config=require(_0xf0db('0x18'));var licenseUtil=require(_0xf0db('0x19'));var db=require(_0xf0db('0x1a'))['db'];function respondWithStatusCode(_0x12d2f7,_0x40133e){_0x40133e=_0x40133e||0xcc;return function(_0xad5598){if(_0xad5598){return _0x12d2f7[_0xf0db('0x1b')](_0x40133e);}return _0x12d2f7[_0xf0db('0x1c')](_0x40133e)[_0xf0db('0x1d')]();};}function respondWithResult(_0x1a7fa5,_0x217d5f){_0x217d5f=_0x217d5f||0xc8;return function(_0x55a572){if(_0x55a572){return _0x1a7fa5[_0xf0db('0x1c')](_0x217d5f)[_0xf0db('0x1e')](_0x55a572);}};}function respondWithFilteredResult(_0x4ac0f8,_0xe019a){return function(_0x43e09d){if(_0x43e09d){var _0x4c4b9b=typeof _0xe019a[_0xf0db('0x1f')]===_0xf0db('0x20')&&typeof _0xe019a[_0xf0db('0x21')]===_0xf0db('0x20');var _0x144b62=_0x43e09d[_0xf0db('0x22')];var _0x584a2e=_0x4c4b9b?0x0:_0xe019a['offset'];var _0x4d2783=_0x4c4b9b?_0x43e09d['count']:_0xe019a[_0xf0db('0x1f')]+_0xe019a['limit'];var _0x11fdd0;if(_0x4d2783>=_0x144b62){_0x4d2783=_0x144b62;_0x11fdd0=0xc8;}else{_0x11fdd0=0xce;}_0x4ac0f8[_0xf0db('0x1c')](_0x11fdd0);return _0x4ac0f8[_0xf0db('0x23')](_0xf0db('0x24'),_0x584a2e+'-'+_0x4d2783+'/'+_0x144b62)['json'](_0x43e09d);}return null;};}function patchUpdates(_0x363b97){return function(_0x568ba0){try{jsonpatch[_0xf0db('0x25')](_0x568ba0,_0x363b97,!![]);}catch(_0x574ee5){return BPromise['reject'](_0x574ee5);}return _0x568ba0['save']();};}function saveUpdates(_0x5de46f,_0x7840b2){return function(_0x2aec64){if(_0x2aec64){return _0x2aec64[_0xf0db('0x26')](_0x5de46f)[_0xf0db('0x27')](function(_0x2b5477){return _0x2b5477;});}return null;};}function removeEntity(_0x249db5,_0x3a2083){return function(_0x498ec8){if(_0x498ec8){return _0x498ec8[_0xf0db('0x28')]()['then'](function(){_0x249db5[_0xf0db('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2eaf70,_0x3edb16){return function(_0x555f60){if(!_0x555f60){_0x2eaf70[_0xf0db('0x1b')](0x194);}return _0x555f60;};}function handleError(_0x446acc,_0x5b51dd){_0x5b51dd=_0x5b51dd||0x1f4;return function(_0xc1fee9){logger['error'](_0xc1fee9[_0xf0db('0x29')]);if(_0xc1fee9['name']){delete _0xc1fee9['name'];}_0x446acc['status'](_0x5b51dd)[_0xf0db('0x2a')](_0xc1fee9);};}exports[_0xf0db('0x2b')]=function(_0xeaa450,_0x4fe48d){var _0x608e52={},_0x562128={},_0x17445c={'count':0x0,'rows':[]};var _0x1c3ba3=_[_0xf0db('0x2c')](db[_0xf0db('0x2d')][_0xf0db('0x2e')],function(_0x385711){return{'name':_0x385711[_0xf0db('0x2f')],'type':_0x385711[_0xf0db('0x30')][_0xf0db('0x31')]};});_0x562128['model']=_[_0xf0db('0x2c')](_0x1c3ba3,_0xf0db('0x32'));_0x562128[_0xf0db('0x33')]=_[_0xf0db('0x34')](_0xeaa450[_0xf0db('0x33')]);_0x562128[_0xf0db('0x35')]=_[_0xf0db('0x36')](_0x562128[_0xf0db('0x37')],_0x562128[_0xf0db('0x33')]);_0x608e52[_0xf0db('0x38')]=_[_0xf0db('0x36')](_0x562128[_0xf0db('0x37')],qs[_0xf0db('0x39')](_0xeaa450[_0xf0db('0x33')][_0xf0db('0x39')]));_0x608e52['attributes']=_0x608e52['attributes']['length']?_0x608e52[_0xf0db('0x38')]:_0x562128[_0xf0db('0x37')];if(!_0xeaa450[_0xf0db('0x33')][_0xf0db('0x3a')](_0xf0db('0x3b'))){_0x608e52[_0xf0db('0x21')]=qs[_0xf0db('0x21')](_0xeaa450[_0xf0db('0x33')][_0xf0db('0x21')]);_0x608e52['offset']=qs[_0xf0db('0x1f')](_0xeaa450['query'][_0xf0db('0x1f')]);}_0x608e52['order']=qs[_0xf0db('0x3c')](_0xeaa450[_0xf0db('0x33')][_0xf0db('0x3c')]);_0x608e52['where']=qs[_0xf0db('0x35')](_[_0xf0db('0x3d')](_0xeaa450[_0xf0db('0x33')],_0x562128[_0xf0db('0x35')]),_0x1c3ba3);if(_0xeaa450['query'][_0xf0db('0x3e')]){_0x608e52[_0xf0db('0x3f')]=_[_0xf0db('0x40')](_0x608e52['where'],{'$or':_[_0xf0db('0x2c')](_0x1c3ba3,function(_0x504335){if(_0x504335[_0xf0db('0x30')]!=='VIRTUAL'){var _0x4423a4={};_0x4423a4[_0x504335[_0xf0db('0x32')]]={'$like':'%'+_0xeaa450[_0xf0db('0x33')][_0xf0db('0x3e')]+'%'};return _0x4423a4;}})});}_0x608e52=_[_0xf0db('0x40')]({},_0x608e52,_0xeaa450[_0xf0db('0x41')]);var _0x4a66a3={'where':_0x608e52['where']};return db[_0xf0db('0x2d')][_0xf0db('0x22')](_0x4a66a3)[_0xf0db('0x27')](function(_0x212553){_0x17445c[_0xf0db('0x22')]=_0x212553;if(_0xeaa450[_0xf0db('0x33')][_0xf0db('0x42')]){_0x608e52[_0xf0db('0x43')]=[{'all':!![]}];}return db[_0xf0db('0x2d')][_0xf0db('0x44')](_0x608e52);})[_0xf0db('0x27')](function(_0x4a07ca){_0x17445c[_0xf0db('0x45')]=_0x4a07ca;return _0x17445c;})['then'](respondWithFilteredResult(_0x4fe48d,_0x608e52))[_0xf0db('0x46')](handleError(_0x4fe48d,null));};exports[_0xf0db('0x47')]=function(_0x17ddd9,_0x294995){var _0x12b974={'raw':!![],'where':{'id':_0x17ddd9[_0xf0db('0x48')]['id']}},_0x468072={};_0x468072['model']=_[_0xf0db('0x34')](db[_0xf0db('0x2d')]['rawAttributes']);_0x468072[_0xf0db('0x33')]=_[_0xf0db('0x34')](_0x17ddd9[_0xf0db('0x33')]);_0x468072[_0xf0db('0x35')]=_[_0xf0db('0x36')](_0x468072[_0xf0db('0x37')],_0x468072['query']);_0x12b974['attributes']=_['intersection'](_0x468072[_0xf0db('0x37')],qs[_0xf0db('0x39')](_0x17ddd9[_0xf0db('0x33')][_0xf0db('0x39')]));_0x12b974[_0xf0db('0x38')]=_0x12b974[_0xf0db('0x38')][_0xf0db('0x49')]?_0x12b974[_0xf0db('0x38')]:_0x468072[_0xf0db('0x37')];if(_0x17ddd9['query'][_0xf0db('0x42')]){_0x12b974[_0xf0db('0x43')]=[{'all':!![]}];}_0x12b974=_[_0xf0db('0x40')]({},_0x12b974,_0x17ddd9[_0xf0db('0x41')]);return db[_0xf0db('0x2d')]['find'](_0x12b974)[_0xf0db('0x27')](handleEntityNotFound(_0x294995,null))[_0xf0db('0x27')](respondWithResult(_0x294995,null))[_0xf0db('0x46')](handleError(_0x294995,null));};exports[_0xf0db('0x4a')]=function(_0x330365,_0x5284ba){return db[_0xf0db('0x2d')][_0xf0db('0x4a')](_0x330365[_0xf0db('0x4b')],{})['then'](respondWithResult(_0x5284ba,0xc9))['catch'](handleError(_0x5284ba,null));};exports[_0xf0db('0x26')]=function(_0x4c4502,_0x375454){if(_0x4c4502[_0xf0db('0x4b')]['id']){delete _0x4c4502[_0xf0db('0x4b')]['id'];}return db[_0xf0db('0x2d')]['find']({'where':{'id':_0x4c4502['params']['id']}})['then'](handleEntityNotFound(_0x375454,null))[_0xf0db('0x27')](saveUpdates(_0x4c4502['body'],null))[_0xf0db('0x27')](respondWithResult(_0x375454,null))[_0xf0db('0x46')](handleError(_0x375454,null));};exports[_0xf0db('0x28')]=function(_0x119c11,_0x353392){return db[_0xf0db('0x2d')][_0xf0db('0x4c')]({'where':{'id':_0x119c11[_0xf0db('0x48')]['id']}})[_0xf0db('0x27')](handleEntityNotFound(_0x353392,null))[_0xf0db('0x27')](removeEntity(_0x353392,null))[_0xf0db('0x46')](handleError(_0x353392,null));};exports[_0xf0db('0x4d')]=function(_0x118bd4,_0x477fab){return db['ChatTransferReport'][_0xf0db('0x4d')]()[_0xf0db('0x27')](respondWithResult(_0x477fab,null))[_0xf0db('0x46')](handleError(_0x477fab,null));};
\ No newline at end of file
index dc81ee7..1033bdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3418=['../../config/environment','ChatTransferReport','report_chat_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x499353,_0x271f92){var _0x557d82=function(_0x2bedc4){while(--_0x2bedc4){_0x499353['push'](_0x499353['shift']());}};_0x557d82(++_0x271f92);}(_0x3418,0x184));var _0x8341=function(_0x37495c,_0x11f0c1){_0x37495c=_0x37495c-0x0;var _0x77a7c9=_0x3418[_0x37495c];return _0x77a7c9;};'use strict';var _=require(_0x8341('0x0'));var util=require(_0x8341('0x1'));var logger=require(_0x8341('0x2'))(_0x8341('0x3'));var moment=require(_0x8341('0x4'));var BPromise=require(_0x8341('0x5'));var rp=require(_0x8341('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8341('0x7'));var config=require(_0x8341('0x8'));var attributes=require('./chatTransferReport.attributes');module['exports']=function(_0x2e1b7f,_0x505fdf){return _0x2e1b7f['define'](_0x8341('0x9'),attributes,{'tableName':_0x8341('0xa'),'paranoid':![],'indexes':[{'name':_0x8341('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xec23=['moment','bluebird','path','rimraf','../../config/environment','./chatTransferReport.attributes','define','ChatTransferReport','uniqueid','lodash','util','../../config/logger'];(function(_0x272e71,_0x3aeff4){var _0x2f1ff3=function(_0x3026b0){while(--_0x3026b0){_0x272e71['push'](_0x272e71['shift']());}};_0x2f1ff3(++_0x3aeff4);}(_0xec23,0xd5));var _0x3ec2=function(_0x4c1ec2,_0x4f42b7){_0x4c1ec2=_0x4c1ec2-0x0;var _0x3f6f1c=_0xec23[_0x4c1ec2];return _0x3f6f1c;};'use strict';var _=require(_0x3ec2('0x0'));var util=require(_0x3ec2('0x1'));var logger=require(_0x3ec2('0x2'))('api');var moment=require(_0x3ec2('0x3'));var BPromise=require(_0x3ec2('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3ec2('0x5'));var rimraf=require(_0x3ec2('0x6'));var config=require(_0x3ec2('0x7'));var attributes=require(_0x3ec2('0x8'));module['exports']=function(_0xd265ea,_0x437e18){return _0xd265ea[_0x3ec2('0x9')](_0x3ec2('0xa'),attributes,{'tableName':'report_chat_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x3ec2('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 0f9475a..abc4965 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5a6=['../../config/logger','jayson/promise','client','then','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x2f88b2,_0x26c631){var _0x2f4586=function(_0x54c99c){while(--_0x54c99c){_0x2f88b2['push'](_0x2f88b2['shift']());}};_0x2f4586(++_0x26c631);}(_0xf5a6,0x7d));var _0x6f5a=function(_0x458772,_0x4a2afd){_0x458772=_0x458772-0x0;var _0x1daf74=_0xf5a6[_0x458772];return _0x1daf74;};'use strict';var _=require(_0x6f5a('0x0'));var util=require(_0x6f5a('0x1'));var moment=require(_0x6f5a('0x2'));var BPromise=require('bluebird');var rs=require(_0x6f5a('0x3'));var fs=require('fs');var Redis=require(_0x6f5a('0x4'));var db=require(_0x6f5a('0x5'))['db'];var utils=require(_0x6f5a('0x6'));var logger=require(_0x6f5a('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6f5a('0x8'));var client=jayson[_0x6f5a('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x301c5b,_0x316411,_0x12e3c1){return new BPromise(function(_0x5c7e39,_0x544664){return client['request'](_0x301c5b,_0x12e3c1)[_0x6f5a('0xa')](function(_0x1c213c){logger[_0x6f5a('0xb')](_0x6f5a('0xc'),_0x316411,_0x6f5a('0xd'));logger[_0x6f5a('0xe')](_0x6f5a('0xf'),_0x316411,_0x6f5a('0xd'),JSON[_0x6f5a('0x10')](_0x1c213c));if(_0x1c213c[_0x6f5a('0x11')]){if(_0x1c213c['error'][_0x6f5a('0x12')]===0x1f4){logger[_0x6f5a('0x11')](_0x6f5a('0xc'),_0x316411,_0x1c213c[_0x6f5a('0x11')][_0x6f5a('0x13')]);return _0x544664(_0x1c213c[_0x6f5a('0x11')][_0x6f5a('0x13')]);}logger[_0x6f5a('0x11')](_0x6f5a('0xc'),_0x316411,_0x1c213c['error'][_0x6f5a('0x13')]);return _0x5c7e39(_0x1c213c['error']['message']);}else{logger[_0x6f5a('0xb')](_0x6f5a('0xc'),_0x316411,_0x6f5a('0xd'));_0x5c7e39(_0x1c213c[_0x6f5a('0x14')][_0x6f5a('0x13')]);}})[_0x6f5a('0x15')](function(_0x1abbf8){logger['error'](_0x6f5a('0xc'),_0x316411,_0x1abbf8);_0x544664(_0x1abbf8);});});}
\ No newline at end of file
+var _0xf7a4=['stringify','error','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','request','then','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x59328b,_0x3e1186){var _0x2593ea=function(_0x11ba1e){while(--_0x11ba1e){_0x59328b['push'](_0x59328b['shift']());}};_0x2593ea(++_0x3e1186);}(_0xf7a4,0x1d2));var _0x4f7a=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xf7a4[_0x4a9fb1];return _0x348672;};'use strict';var _=require('lodash');var util=require(_0x4f7a('0x0'));var moment=require(_0x4f7a('0x1'));var BPromise=require(_0x4f7a('0x2'));var rs=require(_0x4f7a('0x3'));var fs=require('fs');var Redis=require(_0x4f7a('0x4'));var db=require(_0x4f7a('0x5'))['db'];var utils=require(_0x4f7a('0x6'));var logger=require(_0x4f7a('0x7'))(_0x4f7a('0x8'));var config=require(_0x4f7a('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x37985e,_0x4f94ba,_0x12f47f){return new BPromise(function(_0x2803ca,_0x4985ae){return client[_0x4f7a('0xa')](_0x37985e,_0x12f47f)[_0x4f7a('0xb')](function(_0x5131e8){logger[_0x4f7a('0xc')](_0x4f7a('0xd'),_0x4f94ba,_0x4f7a('0xe'));logger[_0x4f7a('0xf')](_0x4f7a('0x10'),_0x4f94ba,_0x4f7a('0xe'),JSON[_0x4f7a('0x11')](_0x5131e8));if(_0x5131e8[_0x4f7a('0x12')]){if(_0x5131e8['error']['code']===0x1f4){logger[_0x4f7a('0x12')]('ChatTransferReport,\x20%s,\x20%s',_0x4f94ba,_0x5131e8[_0x4f7a('0x12')][_0x4f7a('0x13')]);return _0x4985ae(_0x5131e8[_0x4f7a('0x12')][_0x4f7a('0x13')]);}logger['error'](_0x4f7a('0xd'),_0x4f94ba,_0x5131e8[_0x4f7a('0x12')][_0x4f7a('0x13')]);return _0x2803ca(_0x5131e8[_0x4f7a('0x12')][_0x4f7a('0x13')]);}else{logger[_0x4f7a('0xc')](_0x4f7a('0xd'),_0x4f94ba,_0x4f7a('0xe'));_0x2803ca(_0x5131e8['result'][_0x4f7a('0x13')]);}})[_0x4f7a('0x14')](function(_0xbe95d2){logger[_0x4f7a('0x12')](_0x4f7a('0xd'),_0x4f94ba,_0xbe95d2);_0x4985ae(_0xbe95d2);});});}
\ No newline at end of file
index 2bdc94b..60db3d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10c1=['post','isAuthenticated','create','put','update','delete','/:id','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./chatTransferReport.controller','index','/describe','describe','get','show'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x10c1,0x152));var _0x110c=function(_0x55ef51,_0x208287){_0x55ef51=_0x55ef51-0x0;var _0x46394c=_0x10c1[_0x55ef51];return _0x46394c;};'use strict';var multer=require(_0x110c('0x0'));var util=require(_0x110c('0x1'));var path=require(_0x110c('0x2'));var timeout=require(_0x110c('0x3'));var express=require(_0x110c('0x4'));var router=express[_0x110c('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x110c('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x110c('0x7'));var controller=require(_0x110c('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x110c('0x9')]);router['get'](_0x110c('0xa'),auth['isAuthenticated'](),controller[_0x110c('0xb')]);router[_0x110c('0xc')]('/:id',auth['isAuthenticated'](),controller[_0x110c('0xd')]);router[_0x110c('0xe')]('/',auth[_0x110c('0xf')](),controller[_0x110c('0x10')]);router[_0x110c('0x11')]('/:id',auth[_0x110c('0xf')](),controller[_0x110c('0x12')]);router[_0x110c('0x13')](_0x110c('0x14'),auth[_0x110c('0xf')](),controller[_0x110c('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xd767=['get','isAuthenticated','index','/describe','describe','/:id','show','post','put','exports','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./chatTransferReport.controller'];(function(_0x4ae625,_0xf396d0){var _0x31accf=function(_0x3ded6b){while(--_0x3ded6b){_0x4ae625['push'](_0x4ae625['shift']());}};_0x31accf(++_0xf396d0);}(_0xd767,0x9a));var _0x7d76=function(_0x13e045,_0x5b801f){_0x13e045=_0x13e045-0x0;var _0x1e1f02=_0xd767[_0x13e045];return _0x1e1f02;};'use strict';var multer=require(_0x7d76('0x0'));var util=require('util');var path=require(_0x7d76('0x1'));var timeout=require(_0x7d76('0x2'));var express=require(_0x7d76('0x3'));var router=express[_0x7d76('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x7d76('0x5'));var config=require(_0x7d76('0x6'));var controller=require(_0x7d76('0x7'));router[_0x7d76('0x8')]('/',auth[_0x7d76('0x9')](),controller[_0x7d76('0xa')]);router[_0x7d76('0x8')](_0x7d76('0xb'),auth[_0x7d76('0x9')](),controller[_0x7d76('0xc')]);router[_0x7d76('0x8')](_0x7d76('0xd'),auth[_0x7d76('0x9')](),controller[_0x7d76('0xe')]);router[_0x7d76('0xf')]('/',auth[_0x7d76('0x9')](),controller['create']);router[_0x7d76('0x10')](_0x7d76('0xd'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x7d76('0xd'),auth[_0x7d76('0x9')](),controller['destroy']);module[_0x7d76('0x11')]=router;
\ No newline at end of file
index 6c1689e..a39cf21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14d=['thumb','stringify','input','name','text','getDataValue','onlineForm','parse','setDataValue','textarea','Comments','offlineForm','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','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','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','Generated\x20by\x20XCALLY\x20Motion','sequelize','randomstring','exports','STRING','address','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','TEXT','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','star'];(function(_0x9ff7ba,_0x424f7b){var _0x47d820=function(_0x183b44){while(--_0x183b44){_0x9ff7ba['push'](_0x9ff7ba['shift']());}};_0x47d820(++_0x424f7b);}(_0xe14d,0x1ee));var _0xde14=function(_0x54d4a8,_0x585a59){_0x54d4a8=_0x54d4a8-0x0;var _0x3b321b=_0xe14d[_0x54d4a8];return _0x3b321b;};'use strict';var Sequelize=require(_0xde14('0x0'));var rs=require(_0xde14('0x1'));module[_0xde14('0x2')]={'name':{'type':Sequelize[_0xde14('0x3')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xde14('0x4')},'description':{'type':Sequelize[_0xde14('0x3')]},'mapKey':{'type':Sequelize['STRING'],'defaultValue':_0xde14('0x5')},'mapKeyOffline':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x5')},'key':{'type':Sequelize[_0xde14('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x6')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xde14('0x7'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xde14('0x3')],'allowNull':![],'defaultValue':_0xde14('0x7'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xde14('0x3')],'allowNull':![],'defaultValue':_0xde14('0x8'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0xde14('0x3')],'allowNull':![],'defaultValue':_0xde14('0x8'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0xde14('0x9')],'defaultValue':0xf},'remote':{'type':Sequelize['STRING']},'animation':{'type':Sequelize[_0xde14('0xa')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0xde14('0xb')](_0xde14('0xc'),_0xde14('0xd')),'defaultValue':_0xde14('0xc')},'header_online':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0xe')},'start_chat_button':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0xf')},'offline_chat_button':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x10')},'header_offline':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x11')},'download_transcript':{'type':Sequelize[_0xde14('0xa')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xde14('0x9')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize[_0xde14('0xa')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0xde14('0x12')]},'closingQuestion':{'type':Sequelize[_0xde14('0x3')],'defaultValue':'Do\x20you\x20want\x20to\x20close\x20the\x20interaction?'},'formSubmitSuccessMessage':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x13')},'formSubmitFailureMessage':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x14')},'noteTitle':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x15')},'placeholderMessage':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x16')},'closingMessage':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x17')},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0xde14('0x10')},'skipMessageButton':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x18')},'conditionAgreement':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xde14('0x3')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize[_0xde14('0xb')](_0xde14('0x19'),_0xde14('0x1a')),'defaultValue':_0xde14('0x19')},'ratingStarsNumber':{'type':Sequelize[_0xde14('0x9')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0xde14('0x12')],'defaultValue':function(){return JSON[_0xde14('0x1b')]({'items':[{'type':_0xde14('0x1c'),'variable':null,'config':{'placeholder':_0xde14('0x1d'),'type':_0xde14('0x1e'),'required':!![]},'props':{'title':_0xde14('0x1d'),'helpText':''}},{'type':_0xde14('0x1c'),'props':{'title':_0xde14('0x5'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':_0xde14('0x5')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xde14('0x1f')](_0xde14('0x20'))?JSON[_0xde14('0x21')](this[_0xde14('0x1f')](_0xde14('0x20'))):{};},'set':function(_0x310d75){return this[_0xde14('0x22')](_0xde14('0x20'),JSON[_0xde14('0x1b')](_0x310d75));}},'offlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON[_0xde14('0x1b')]({'items':[{'type':_0xde14('0x1c'),'props':{'title':_0xde14('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0xde14('0x5'),'type':'email'},'variable':null},{'type':_0xde14('0x23'),'config':{'placeholder':_0xde14('0x24')},'props':{'title':_0xde14('0x24'),'helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this[_0xde14('0x1f')]('offlineForm')?JSON[_0xde14('0x21')](this[_0xde14('0x1f')](_0xde14('0x25'))):{};},'set':function(_0x1e7906){return this[_0xde14('0x22')](_0xde14('0x25'),JSON[_0xde14('0x1b')](_0x1e7906));}},'token':{'type':Sequelize[_0xde14('0x3')],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize[_0xde14('0xa')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0xde14('0x3')]},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xde14('0x3')]},'waitingTitle':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x26')},'waitingMessage':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x27')},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':_0xde14('0x28')},'offlineMessageBody':{'type':Sequelize[_0xde14('0x3')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0xde14('0xa')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x29')},'skipUnmanaged':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x18')},'sendUnmanaged':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x10')},'enableCustomerAttachment':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize[_0xde14('0x3')]},'notificationTemplate':{'type':Sequelize[_0xde14('0x12')],'defaultValue':function(){return _0xde14('0x2a');}},'notificationSound':{'type':Sequelize[_0xde14('0xa')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x2b')},'waitForTheAssignedAgent':{'type':Sequelize[_0xde14('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':_0xde14('0x2c')},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'labelText':{'type':Sequelize['STRING'],'defaultValue':'CHAT'},'messagesAlignment':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x2d')},'defaultTitle':{'type':Sequelize[_0xde14('0x3')]},'customerAvatar':{'type':Sequelize[_0xde14('0x12')]},'showCustomerAvatar':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xde14('0x9')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0xde14('0x3')],'allowNull':![],'defaultValue':_0xde14('0x2e'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xde14('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xde14('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xde14('0x3')],'defaultValue':_0xde14('0x2f')},'systemAvatar':{'type':Sequelize[_0xde14('0x12')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xde14('0x9')],'comment':_0xde14('0x30')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xde14('0x31'),'set':function(_0xb6b2ee){if(!_0xb6b2ee)this[_0xde14('0x22')](_0xde14('0x32'),null);this['setDataValue']('mandatoryDisposition',_0xb6b2ee);}},'vidaooEscalation':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xde14('0x3')]},'vidaooTopic':{'type':Sequelize[_0xde14('0x3')],'allowNull':![],'defaultValue':_0xde14('0x33')},'vidaooNote':{'type':Sequelize[_0xde14('0x3')],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize[_0xde14('0x12')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xde14('0xa')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0xde14('0x12')]}};
\ No newline at end of file
+var _0xb903=['BOOLEAN','Feedback','star','thumb','INTEGER','TEXT','stringify','input','text','name','parse','getDataValue','onlineForm','textarea','Comments','Leave\x20your\x20comments','offlineForm','setDataValue','All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','CHAT','alternate','#fafafa','System','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','exports','STRING','address','email','Agent','#011F6A','ENUM','rounded','Chat','Contact\x20us','Powered\x20by\x20xCALLY','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Note','Thanks\x20you\x20for\x20your\x20time!','Send','Skip'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xb903,0x185));var _0x3b90=function(_0x36797c,_0x1de0f7){_0x36797c=_0x36797c-0x0;var _0x2d824a=_0xb903[_0x36797c];return _0x2d824a;};'use strict';var Sequelize=require(_0x3b90('0x0'));var rs=require(_0x3b90('0x1'));module[_0x3b90('0x2')]={'name':{'type':Sequelize[_0x3b90('0x3')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x3b90('0x4')},'description':{'type':Sequelize[_0x3b90('0x3')]},'mapKey':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':_0x3b90('0x5')},'mapKeyOffline':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':_0x3b90('0x5')},'key':{'type':Sequelize[_0x3b90('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize['STRING'],'defaultValue':_0x3b90('0x6')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x3b90('0x7'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x3b90('0x3')],'allowNull':![],'defaultValue':_0x3b90('0x7'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x3b90('0x3')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize['STRING']},'animation':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x3b90('0x8')](_0x3b90('0x9'),'squared'),'defaultValue':_0x3b90('0x9')},'header_online':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':_0x3b90('0xa')},'offline_chat_button':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':'Send'},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0x3b90('0xb')},'download_transcript':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':_0x3b90('0xc')},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize['TEXT']},'closingQuestion':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':_0x3b90('0xd')},'formSubmitSuccessMessage':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':_0x3b90('0xe')},'formSubmitFailureMessage':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':'Form\x20submission\x20error'},'noteTitle':{'type':Sequelize['STRING'],'defaultValue':_0x3b90('0xf')},'placeholderMessage':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':'Type\x20a\x20message'},'closingMessage':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':_0x3b90('0x10')},'closingMessageButton':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':_0x3b90('0x11')},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x3b90('0x12')},'conditionAgreement':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x3b90('0x13')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x3b90('0x13')],'defaultValue':![]},'enableSendButton':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':_0x3b90('0x14')},'ratingType':{'type':Sequelize[_0x3b90('0x8')](_0x3b90('0x15'),_0x3b90('0x16')),'defaultValue':_0x3b90('0x15')},'ratingStarsNumber':{'type':Sequelize[_0x3b90('0x17')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x3b90('0x18')],'defaultValue':function(){return JSON[_0x3b90('0x19')]({'items':[{'type':_0x3b90('0x1a'),'variable':null,'config':{'placeholder':'name','type':_0x3b90('0x1b'),'required':!![]},'props':{'title':_0x3b90('0x1c'),'helpText':''}},{'type':_0x3b90('0x1a'),'props':{'title':_0x3b90('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0x3b90('0x5'),'type':_0x3b90('0x5')},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue']('onlineForm')?JSON[_0x3b90('0x1d')](this[_0x3b90('0x1e')](_0x3b90('0x1f'))):{};},'set':function(_0x2ffa1a){return this['setDataValue'](_0x3b90('0x1f'),JSON[_0x3b90('0x19')](_0x2ffa1a));}},'offlineForm':{'type':Sequelize[_0x3b90('0x18')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x3b90('0x1a'),'props':{'title':_0x3b90('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0x3b90('0x5'),'type':_0x3b90('0x5')},'variable':null},{'type':_0x3b90('0x20'),'config':{'placeholder':_0x3b90('0x21')},'props':{'title':'Comments','helpText':_0x3b90('0x22')}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0x3b90('0x23'))?JSON[_0x3b90('0x1d')](this[_0x3b90('0x1e')](_0x3b90('0x23'))):{};},'set':function(_0xd515bd){return this[_0x3b90('0x24')](_0x3b90('0x23'),JSON[_0x3b90('0x19')](_0xd515bd));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize[_0x3b90('0x13')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x3b90('0x13')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x3b90('0x13')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x3b90('0x3')]},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize['STRING']},'waitingTitle':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':_0x3b90('0x25')},'waitingMessage':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':'Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.'},'offlineMessageSubject':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':'New\x20offline\x20message\x20from\x20websiteName'},'offlineMessageBody':{'type':Sequelize['STRING'],'defaultValue':_0x3b90('0x26')},'enableUnmanagedNote':{'type':Sequelize[_0x3b90('0x13')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':_0x3b90('0x27')},'skipUnmanaged':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':_0x3b90('0x12')},'sendUnmanaged':{'type':Sequelize['STRING'],'defaultValue':'Send'},'enableCustomerAttachment':{'type':Sequelize[_0x3b90('0x13')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x3b90('0x13')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x3b90('0x18')]},'showAgentAvatar':{'type':Sequelize[_0x3b90('0x13')],'defaultValue':![]},'timezone':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x3b90('0x28');}},'notificationSound':{'type':Sequelize[_0x3b90('0x13')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':_0x3b90('0x29')},'waitForTheAssignedAgent':{'type':Sequelize[_0x3b90('0x17')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':'bottom_right'},'verticalAlignment':{'type':Sequelize[_0x3b90('0x17')],'defaultValue':0x1e},'labelText':{'type':Sequelize['STRING'],'defaultValue':_0x3b90('0x2a')},'messagesAlignment':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':_0x3b90('0x2b')},'defaultTitle':{'type':Sequelize[_0x3b90('0x3')]},'customerAvatar':{'type':Sequelize[_0x3b90('0x18')]},'showCustomerAvatar':{'type':Sequelize[_0x3b90('0x13')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x3b90('0x17')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x3b90('0x2c'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x3b90('0x13')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x3b90('0x17')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x3b90('0x13')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x3b90('0x17')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':_0x3b90('0x2d')},'systemAvatar':{'type':Sequelize[_0x3b90('0x18')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x3b90('0x17')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x3b90('0x13')],'defaultValue':![],'comment':_0x3b90('0x2e'),'set':function(_0x40ce3a){if(!_0x40ce3a)this[_0x3b90('0x24')](_0x3b90('0x2f'),null);this[_0x3b90('0x24')](_0x3b90('0x30'),_0x40ce3a);}},'vidaooEscalation':{'type':Sequelize[_0x3b90('0x13')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x3b90('0x3')]},'vidaooTopic':{'type':Sequelize[_0x3b90('0x3')],'allowNull':![],'defaultValue':_0x3b90('0x31')},'vidaooNote':{'type':Sequelize[_0x3b90('0x3')],'defaultValue':function(){return _0x3b90('0x32');}},'vidaooMetadata':{'type':Sequelize[_0x3b90('0x18')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x3b90('0x13')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x3b90('0x18')]}};
\ No newline at end of file
index 33d21e2..da2ff2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f11=['end','offset','undefined','limit','count','Content-Range','json','update','destroy','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','fieldName','type','key','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','options','include','findAll','catch','show','params','keys','intersection','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','ChatWebsites','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ChatWebsiteId','getDispositions','Disposition','filter','merge','rows','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addLogo','sitepic','file','filename','agentAvatar','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','root','custom','existsSync','join','server/files/images/logos/','getAvatar','isNil','server/files/images/avatars/','download','getCustomerAvatar','showCustomerAvatar','server/files/images/avatars/system_avatar.png','notify','headers','user-agent','getResult','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','from','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','CmContact','Contacts','DESC','ChatApplication','Applications','account','applications','list','orderBy','priority','contact','customerIp','cf-connecting-ip','x-forwarded-for','first','split','lastName','x-real-port','browser','version','format','unknown','%s\x20%s','device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','firstName','messageId','created','autoclose','push','close','unmanaged','*,*,*,*','ChatMessage','UserId','User','unshift','agent','forcedOwnership','Start','startRouting','EventManager','files','no\x20available\x20attributes','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','server/files/templates/chatOfflineMessage.ejs','toPairs','offlineMessageBody','ChatOfflineMessage','attachments','offline-chat','basename','openNewInteraction','transaction','Attachment','Smtp','CloudProvider','getSmtpOptions','SendMail','\x22%s\x22\x20<%s>','forwardOfflineAddress','offlineMessageSubject','originalname','mimetype','mapValues','email','Chat','MailAccountId','NotifyMailAccount','notifyMail','server','Could\x20not\x20remove\x20attachment\x20file','addInteraction','getInteractions','findOne','fullname','internal','Tags','color','tag','Command','getSnippet','timezone','iftime\x20%s,%s','iftime\x20%s','interval','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','Interval','Intervals','getProactiveActions','../../config/license/util','increment','chatLicenseExceeded','all','some','readFileSync','server/files/chat/iframe.ejs','remote','x-real-ip','connection','remoteAddress','referer','virtual','replace','render','alignment','verticalAlignment','labelText','textColor','textButtonColor','hideWhenOffline','IntervalId','sequelize','Transaction','ISOLATION_LEVELS','bulkCreate','findAndCountAll','getApplications','addProactiveActions','chatProactiveAction','omit','ChatProactiveAction','online','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Contact','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','bluebird','util','path','ejs','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','sendStatus','status'];(function(_0x4e7490,_0x4b26ae){var _0x3622d0=function(_0x40a2bb){while(--_0x40a2bb){_0x4e7490['push'](_0x4e7490['shift']());}};_0x3622d0(++_0x4b26ae);}(_0x5f11,0x107));var _0x15f1=function(_0x41bcf8,_0x54373c){_0x41bcf8=_0x41bcf8-0x0;var _0x3cff1a=_0x5f11[_0x41bcf8];return _0x3cff1a;};'use strict';var BPromise=require(_0x15f1('0x0'));var Mustache=require('mustache');var util=require(_0x15f1('0x1'));var path=require(_0x15f1('0x2'));var ejs=require(_0x15f1('0x3'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x15f1('0x4'));var querystring=require('querystring');var Redis=require(_0x15f1('0x5'));var qs=require(_0x15f1('0x6'));var logger=require(_0x15f1('0x7'))(_0x15f1('0x8'));var config=require(_0x15f1('0x9'));var db=require(_0x15f1('0xa'))['db'];config['redis']=_[_0x15f1('0xb')](config[_0x15f1('0xc')],{'host':_0x15f1('0xd'),'port':0x18eb});var socket=require(_0x15f1('0xe'))(new Redis(config['redis']));require('./chatWebsite.socket')[_0x15f1('0xf')](socket);var htmlToText=require('html-to-text');var jayson=require(_0x15f1('0x10'));var client=jayson[_0x15f1('0x11')][_0x15f1('0x12')]({'port':0x232c});var client9002=jayson[_0x15f1('0x11')]['http']({'port':0x232a});var client9003=jayson[_0x15f1('0x11')][_0x15f1('0x12')]({'port':0x232b});var client9001=jayson[_0x15f1('0x11')]['http']({'port':0x2329});function respondWithRpcPromise(_0x2a6bb2,_0x249f8d,_0x578e5b,_0x206292){return new BPromise(function(_0x2ce6cb,_0x42420f){var _0x42fed2=_0x206292||client;return _0x42fed2[_0x15f1('0x13')](_0x2a6bb2,_0x578e5b)[_0x15f1('0x14')](function(_0x59679c){logger['info'](_0x15f1('0x15'),_0x249f8d,_0x15f1('0x16'));logger[_0x15f1('0x17')](_0x15f1('0x18'),_0x249f8d,_0x15f1('0x16'),JSON[_0x15f1('0x19')](_0x59679c));if(_0x59679c[_0x15f1('0x1a')]){if(_0x59679c['error']['code']===0x1f4){logger[_0x15f1('0x1a')]('ChatWebsite,\x20%s,\x20%s',_0x249f8d,_0x59679c['error']['message']);return _0x42420f(_0x59679c[_0x15f1('0x1a')][_0x15f1('0x1b')]);}logger[_0x15f1('0x1a')](_0x15f1('0x15'),_0x249f8d,_0x59679c[_0x15f1('0x1a')][_0x15f1('0x1b')]);return _0x2ce6cb(_0x59679c[_0x15f1('0x1a')][_0x15f1('0x1b')]);}else{logger[_0x15f1('0x1c')](_0x15f1('0x15'),_0x249f8d,_0x15f1('0x16'));_0x2ce6cb(_0x59679c[_0x15f1('0x1d')]['message']);}})['catch'](function(_0x2da877){logger[_0x15f1('0x1a')]('ChatWebsite,\x20%s,\x20%s',_0x249f8d,_0x2da877);_0x42420f(_0x2da877);});});}function respondWithStatusCode(_0x8cc557,_0x5ef254){_0x5ef254=_0x5ef254||0xcc;return function(_0x330c39){if(_0x330c39){return _0x8cc557[_0x15f1('0x1e')](_0x5ef254);}return _0x8cc557[_0x15f1('0x1f')](_0x5ef254)[_0x15f1('0x20')]();};}function respondWithResult(_0x13c415,_0x4ca534){_0x4ca534=_0x4ca534||0xc8;return function(_0x538311){if(_0x538311){return _0x13c415[_0x15f1('0x1f')](_0x4ca534)['json'](_0x538311);}};}function respondWithFilteredResult(_0x21eb3f,_0x30dc64){return function(_0x4a3b8b){if(_0x4a3b8b){var _0x3b843b=typeof _0x30dc64[_0x15f1('0x21')]===_0x15f1('0x22')&&typeof _0x30dc64[_0x15f1('0x23')]===_0x15f1('0x22');var _0x5cdcfc=_0x4a3b8b['count'];var _0x1fba9d=_0x3b843b?0x0:_0x30dc64[_0x15f1('0x21')];var _0x44774c=_0x3b843b?_0x4a3b8b[_0x15f1('0x24')]:_0x30dc64[_0x15f1('0x21')]+_0x30dc64[_0x15f1('0x23')];var _0xaf0f47;if(_0x44774c>=_0x5cdcfc){_0x44774c=_0x5cdcfc;_0xaf0f47=0xc8;}else{_0xaf0f47=0xce;}_0x21eb3f['status'](_0xaf0f47);return _0x21eb3f['set'](_0x15f1('0x25'),_0x1fba9d+'-'+_0x44774c+'/'+_0x5cdcfc)[_0x15f1('0x26')](_0x4a3b8b);}return null;};}function saveUpdates(_0xcdad89){return function(_0x5a403b){if(_0x5a403b){return _0x5a403b[_0x15f1('0x27')](_0xcdad89)[_0x15f1('0x14')](function(_0x46d25f){return _0x46d25f;});}return null;};}function removeEntity(_0xc07389){return function(_0x3bf370){if(_0x3bf370){return _0x3bf370[_0x15f1('0x28')]()[_0x15f1('0x14')](function(){var _0x25848f=_0x3bf370['get']({'plain':!![]});var _0x3573f7='ChatWebsites';return db[_0x15f1('0x29')]['destroy']({'where':{'type':_0x3573f7,'resourceId':_0x25848f['id']}})['then'](function(){return _0x3bf370;});})[_0x15f1('0x14')](function(){_0xc07389[_0x15f1('0x1f')](0xcc)[_0x15f1('0x20')]();});}};}function handleEntityNotFound(_0x24df90){return function(_0x4b1f83){if(!_0x4b1f83){_0x24df90[_0x15f1('0x1e')](0x194);}return _0x4b1f83;};}function handleError(_0x4051da,_0x3a44b5){_0x3a44b5=_0x3a44b5||0x1f4;return function(_0x2dcb2d){logger[_0x15f1('0x1a')](_0x2dcb2d[_0x15f1('0x2a')]);if(_0x2dcb2d[_0x15f1('0x2b')]){delete _0x2dcb2d['name'];}_0x4051da[_0x15f1('0x1f')](_0x3a44b5)[_0x15f1('0x2c')](_0x2dcb2d);};}exports[_0x15f1('0x2d')]=function(_0x54f87c,_0x556076){var _0xb2c3bb={'include':[{'model':db[_0x15f1('0x2e')],'as':_0x15f1('0x2f')}]},_0x34e6e5={},_0x51b21e={'count':0x0,'rows':[]};var _0x56233d=_[_0x15f1('0x30')](db[_0x15f1('0x31')][_0x15f1('0x32')],function(_0x376121){return{'name':_0x376121[_0x15f1('0x33')],'type':_0x376121[_0x15f1('0x34')][_0x15f1('0x35')]};});_0x34e6e5[_0x15f1('0x36')]=_[_0x15f1('0x30')](_0x56233d,'name');_0x34e6e5[_0x15f1('0x37')]=_['keys'](_0x54f87c[_0x15f1('0x37')]);_0x34e6e5[_0x15f1('0x38')]=_['intersection'](_0x34e6e5['model'],_0x34e6e5[_0x15f1('0x37')]);_0xb2c3bb[_0x15f1('0x39')]=_['intersection'](_0x34e6e5['model'],qs[_0x15f1('0x3a')](_0x54f87c[_0x15f1('0x37')][_0x15f1('0x3a')]));_0xb2c3bb[_0x15f1('0x39')]=_0xb2c3bb[_0x15f1('0x39')][_0x15f1('0x3b')]?_0xb2c3bb[_0x15f1('0x39')]:_0x34e6e5[_0x15f1('0x36')];if(!_0x54f87c['query'][_0x15f1('0x3c')](_0x15f1('0x3d'))){_0xb2c3bb['limit']=qs[_0x15f1('0x23')](_0x54f87c[_0x15f1('0x37')][_0x15f1('0x23')]);_0xb2c3bb[_0x15f1('0x21')]=qs['offset'](_0x54f87c[_0x15f1('0x37')][_0x15f1('0x21')]);}_0xb2c3bb[_0x15f1('0x3e')]=qs['sort'](_0x54f87c[_0x15f1('0x37')][_0x15f1('0x3f')]);_0xb2c3bb[_0x15f1('0x40')]=qs[_0x15f1('0x38')](_[_0x15f1('0x41')](_0x54f87c['query'],_0x34e6e5['filters']),_0x56233d);if(_0x54f87c[_0x15f1('0x37')]['filter']){_0xb2c3bb[_0x15f1('0x40')]=_['merge'](_0xb2c3bb[_0x15f1('0x40')],{'$or':_[_0x15f1('0x30')](_0x56233d,function(_0x84acfc){if(_0x84acfc[_0x15f1('0x34')]!==_0x15f1('0x42')){var _0x5e3acf={};_0x5e3acf[_0x84acfc[_0x15f1('0x2b')]]={'$like':'%'+_0x54f87c[_0x15f1('0x37')]['filter']+'%'};return _0x5e3acf;}})});}_0xb2c3bb=_['merge']({},_0xb2c3bb,_0x54f87c[_0x15f1('0x43')]);var _0xb5e62e={'where':_0xb2c3bb[_0x15f1('0x40')]};return db[_0x15f1('0x31')]['count'](_0xb5e62e)[_0x15f1('0x14')](function(_0x813640){_0x51b21e[_0x15f1('0x24')]=_0x813640;if(_0x54f87c[_0x15f1('0x37')]['includeAll']){_0xb2c3bb[_0x15f1('0x44')]=[{'all':!![]}];}return db[_0x15f1('0x31')][_0x15f1('0x45')](_0xb2c3bb);})['then'](function(_0x7aa9aa){_0x51b21e['rows']=_0x7aa9aa;return _0x51b21e;})[_0x15f1('0x14')](respondWithFilteredResult(_0x556076,_0xb2c3bb))[_0x15f1('0x46')](handleError(_0x556076,null));};exports[_0x15f1('0x47')]=function(_0x3fa209,_0x3ecaaf){var _0x43f268={'raw':![],'where':{'id':_0x3fa209[_0x15f1('0x48')]['id']},'include':[{'model':db[_0x15f1('0x2e')],'as':_0x15f1('0x2f')}]},_0x14cc59={};_0x14cc59['model']=_[_0x15f1('0x49')](db['ChatWebsite'][_0x15f1('0x32')]);_0x14cc59[_0x15f1('0x37')]=_[_0x15f1('0x49')](_0x3fa209[_0x15f1('0x37')]);_0x14cc59['filters']=_[_0x15f1('0x4a')](_0x14cc59[_0x15f1('0x36')],_0x14cc59[_0x15f1('0x37')]);_0x43f268[_0x15f1('0x39')]=_[_0x15f1('0x4a')](_0x14cc59['model'],qs[_0x15f1('0x3a')](_0x3fa209['query'][_0x15f1('0x3a')]));_0x43f268[_0x15f1('0x39')]=_0x43f268['attributes']['length']?_0x43f268[_0x15f1('0x39')]:_0x14cc59[_0x15f1('0x36')];if(_0x3fa209['query'][_0x15f1('0x4b')]){_0x43f268[_0x15f1('0x44')]=[{'all':!![]}];}_0x43f268=_['merge']({},_0x43f268,_0x3fa209[_0x15f1('0x43')]);return db[_0x15f1('0x31')][_0x15f1('0x4c')](_0x43f268)[_0x15f1('0x14')](handleEntityNotFound(_0x3ecaaf,null))[_0x15f1('0x14')](respondWithResult(_0x3ecaaf,null))['catch'](handleError(_0x3ecaaf,null));};exports[_0x15f1('0x4d')]=function(_0x323891,_0x5ad2ab){return db['ChatWebsite'][_0x15f1('0x4d')](_0x323891[_0x15f1('0x4e')],{})[_0x15f1('0x14')](function(_0x422b37){var _0x38a794=_0x323891[_0x15f1('0x4f')]['get']({'plain':!![]});if(!_0x38a794)throw new Error(_0x15f1('0x50'));if(_0x38a794['role']===_0x15f1('0x4f')){var _0x306e2b=_0x422b37[_0x15f1('0x51')]({'plain':!![]});var _0x5a0c2a=_0x15f1('0x52');return db[_0x15f1('0x53')]['find']({'where':{'name':_0x5a0c2a,'userProfileId':_0x38a794['userProfileId']},'raw':!![]})[_0x15f1('0x14')](function(_0x52b38e){if(_0x52b38e&&_0x52b38e[_0x15f1('0x54')]===0x0){return db[_0x15f1('0x29')][_0x15f1('0x4d')]({'name':_0x306e2b[_0x15f1('0x2b')],'resourceId':_0x306e2b['id'],'type':_0x52b38e['name'],'sectionId':_0x52b38e['id']},{})[_0x15f1('0x14')](function(){return _0x422b37;});}else{return _0x422b37;}})[_0x15f1('0x46')](function(_0x15dba9){logger[_0x15f1('0x1a')](_0x15f1('0x55'),_0x15dba9);throw _0x15dba9;});}return _0x422b37;})[_0x15f1('0x14')](respondWithResult(_0x5ad2ab,0xc9))[_0x15f1('0x46')](handleError(_0x5ad2ab,null));};exports[_0x15f1('0x27')]=function(_0x2473eb,_0x27f414){if(_0x2473eb[_0x15f1('0x4e')]['id']){delete _0x2473eb[_0x15f1('0x4e')]['id'];}return db[_0x15f1('0x31')][_0x15f1('0x4c')]({'where':{'id':_0x2473eb[_0x15f1('0x48')]['id']},'include':[{'model':db[_0x15f1('0x2e')],'as':_0x15f1('0x2f')}]})[_0x15f1('0x14')](handleEntityNotFound(_0x27f414,null))['then'](saveUpdates(_0x2473eb[_0x15f1('0x4e')],null))[_0x15f1('0x14')](respondWithResult(_0x27f414,null))[_0x15f1('0x46')](handleError(_0x27f414,null));};exports[_0x15f1('0x28')]=function(_0x4ffd5c,_0x136633){return db[_0x15f1('0x31')][_0x15f1('0x4c')]({'where':{'id':_0x4ffd5c[_0x15f1('0x48')]['id']}})[_0x15f1('0x14')](handleEntityNotFound(_0x136633,null))['then'](removeEntity(_0x136633,null))[_0x15f1('0x46')](handleError(_0x136633,null));};exports['describe']=function(_0x1daf49,_0x48f78b){return db['ChatWebsite'][_0x15f1('0x56')]()[_0x15f1('0x14')](respondWithResult(_0x48f78b,null))[_0x15f1('0x46')](handleError(_0x48f78b,null));};exports[_0x15f1('0x57')]=function(_0x384fe0,_0x4f9d66){if(_0x384fe0[_0x15f1('0x4e')]['id']){delete _0x384fe0[_0x15f1('0x4e')]['id'];}return db['ChatWebsite'][_0x15f1('0x4c')]({'where':{'id':_0x384fe0['params']['id']}})[_0x15f1('0x14')](handleEntityNotFound(_0x4f9d66,null))['then'](function(_0x1ff1de){if(_0x1ff1de){_0x384fe0[_0x15f1('0x4e')][_0x15f1('0x58')]=_0x1ff1de['id'];return db['Disposition'][_0x15f1('0x4d')](_0x384fe0['body']);}})[_0x15f1('0x14')](respondWithResult(_0x4f9d66,null))[_0x15f1('0x46')](handleError(_0x4f9d66,null));};exports[_0x15f1('0x59')]=function(_0xfe90d,_0x76cfea){var _0x5770fe={'raw':![],'where':{}};var _0x44d6dc={};var _0x6170f={'count':0x0,'rows':[]};return db[_0x15f1('0x31')]['findOne']({'where':{'id':_0xfe90d[_0x15f1('0x48')]['id']}})[_0x15f1('0x14')](handleEntityNotFound(_0x76cfea,null))[_0x15f1('0x14')](function(_0x2ed44f){if(_0x2ed44f){_0x44d6dc['model']=_[_0x15f1('0x49')](db[_0x15f1('0x5a')][_0x15f1('0x32')]);_0x44d6dc[_0x15f1('0x37')]=_[_0x15f1('0x49')](_0xfe90d[_0x15f1('0x37')]);_0x44d6dc[_0x15f1('0x38')]=_[_0x15f1('0x4a')](_0x44d6dc[_0x15f1('0x36')],_0x44d6dc[_0x15f1('0x37')]);_0x5770fe['attributes']=_['intersection'](_0x44d6dc['model'],qs[_0x15f1('0x3a')](_0xfe90d[_0x15f1('0x37')][_0x15f1('0x3a')]));_0x5770fe[_0x15f1('0x39')]=_0x5770fe[_0x15f1('0x39')]['length']?_0x5770fe[_0x15f1('0x39')]:_0x44d6dc[_0x15f1('0x36')];if(!_0xfe90d[_0x15f1('0x37')][_0x15f1('0x3c')](_0x15f1('0x3d'))){_0x5770fe[_0x15f1('0x23')]=qs[_0x15f1('0x23')](_0xfe90d[_0x15f1('0x37')][_0x15f1('0x23')]);_0x5770fe[_0x15f1('0x21')]=qs[_0x15f1('0x21')](_0xfe90d[_0x15f1('0x37')][_0x15f1('0x21')]);}_0x5770fe['order']=qs['sort'](_0xfe90d[_0x15f1('0x37')]['sort']);_0x5770fe[_0x15f1('0x40')]=qs[_0x15f1('0x38')](_[_0x15f1('0x41')](_0xfe90d[_0x15f1('0x37')],_0x44d6dc[_0x15f1('0x38')]));_0x5770fe[_0x15f1('0x40')][_0x15f1('0x58')]=_0x2ed44f['id'];if(_0xfe90d[_0x15f1('0x37')][_0x15f1('0x5b')]){_0x5770fe['where']=_[_0x15f1('0x5c')](_0x5770fe[_0x15f1('0x40')],{'$or':_[_0x15f1('0x30')](_0x5770fe[_0x15f1('0x39')],function(_0x5d8412){var _0x1394ff={};_0x1394ff[_0x5d8412]={'$like':'%'+_0xfe90d[_0x15f1('0x37')][_0x15f1('0x5b')]+'%'};return _0x1394ff;})});}_0x5770fe=_[_0x15f1('0x5c')]({},_0x5770fe,_0xfe90d[_0x15f1('0x43')]);return db[_0x15f1('0x5a')]['count']({'where':_0x5770fe[_0x15f1('0x40')]})[_0x15f1('0x14')](function(_0x558329){_0x6170f[_0x15f1('0x24')]=_0x558329;if(_0xfe90d[_0x15f1('0x37')][_0x15f1('0x4b')]){_0x5770fe['include']=[{'all':!![]}];}return db[_0x15f1('0x5a')][_0x15f1('0x45')](_0x5770fe);})['then'](function(_0x50d0c6){_0x6170f[_0x15f1('0x5d')]=_0x50d0c6;return _0x6170f;});}})['then'](respondWithFilteredResult(_0x76cfea,_0x5770fe))[_0x15f1('0x46')](handleError(_0x76cfea,null));};exports[_0x15f1('0x5e')]=function(_0x13308a,_0x2c3ef6){return db[_0x15f1('0x31')]['find']({'where':{'id':_0x13308a['params']['id']}})[_0x15f1('0x14')](handleEntityNotFound(_0x2c3ef6,null))['then'](function(_0x2e492f){if(_0x2e492f){return _0x2e492f[_0x15f1('0x5e')](_0x13308a[_0x15f1('0x37')][_0x15f1('0x5f')]);}})[_0x15f1('0x14')](respondWithStatusCode(_0x2c3ef6,null))[_0x15f1('0x46')](handleError(_0x2c3ef6,null));};exports[_0x15f1('0x60')]=function(_0x282d17,_0x444364){if(_0x282d17['body']['id']){delete _0x282d17['body']['id'];}return db['ChatWebsite']['find']({'where':{'id':_0x282d17[_0x15f1('0x48')]['id']}})[_0x15f1('0x14')](handleEntityNotFound(_0x444364,null))['then'](function(_0x116cea){if(_0x116cea){_0x282d17[_0x15f1('0x4e')][_0x15f1('0x58')]=_0x116cea['id'];return db[_0x15f1('0x61')]['create'](_0x282d17[_0x15f1('0x4e')]);}})[_0x15f1('0x14')](respondWithResult(_0x444364,null))[_0x15f1('0x46')](handleError(_0x444364,null));};exports[_0x15f1('0x62')]=function(_0x48e21b,_0x2978cb){var _0x4cc569={'raw':![],'where':{}};var _0x4495de={};var _0x1b826a={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0x48e21b[_0x15f1('0x48')]['id']}})['then'](handleEntityNotFound(_0x2978cb,null))[_0x15f1('0x14')](function(_0x1db116){if(_0x1db116){_0x4495de[_0x15f1('0x36')]=_['keys'](db[_0x15f1('0x61')][_0x15f1('0x32')]);_0x4495de[_0x15f1('0x37')]=_[_0x15f1('0x49')](_0x48e21b['query']);_0x4495de[_0x15f1('0x38')]=_[_0x15f1('0x4a')](_0x4495de['model'],_0x4495de['query']);_0x4cc569[_0x15f1('0x39')]=_[_0x15f1('0x4a')](_0x4495de[_0x15f1('0x36')],qs[_0x15f1('0x3a')](_0x48e21b['query'][_0x15f1('0x3a')]));_0x4cc569[_0x15f1('0x39')]=_0x4cc569[_0x15f1('0x39')]['length']?_0x4cc569[_0x15f1('0x39')]:_0x4495de['model'];if(!_0x48e21b['query'][_0x15f1('0x3c')](_0x15f1('0x3d'))){_0x4cc569['limit']=qs[_0x15f1('0x23')](_0x48e21b['query'][_0x15f1('0x23')]);_0x4cc569[_0x15f1('0x21')]=qs['offset'](_0x48e21b[_0x15f1('0x37')][_0x15f1('0x21')]);}_0x4cc569[_0x15f1('0x3e')]=qs[_0x15f1('0x3f')](_0x48e21b[_0x15f1('0x37')][_0x15f1('0x3f')]);_0x4cc569[_0x15f1('0x40')]=qs['filters'](_[_0x15f1('0x41')](_0x48e21b['query'],_0x4495de[_0x15f1('0x38')]));_0x4cc569[_0x15f1('0x40')][_0x15f1('0x58')]=_0x1db116['id'];if(_0x48e21b['query'][_0x15f1('0x5b')]){_0x4cc569[_0x15f1('0x40')]=_[_0x15f1('0x5c')](_0x4cc569[_0x15f1('0x40')],{'$or':_['map'](_0x4cc569['attributes'],function(_0x49553b){var _0x37986f={};_0x37986f[_0x49553b]={'$like':'%'+_0x48e21b[_0x15f1('0x37')][_0x15f1('0x5b')]+'%'};return _0x37986f;})});}_0x4cc569=_[_0x15f1('0x5c')]({},_0x4cc569,_0x48e21b[_0x15f1('0x43')]);return db[_0x15f1('0x61')]['count']({'where':_0x4cc569[_0x15f1('0x40')]})[_0x15f1('0x14')](function(_0x24da85){_0x1b826a[_0x15f1('0x24')]=_0x24da85;if(_0x48e21b[_0x15f1('0x37')]['includeAll']){_0x4cc569[_0x15f1('0x44')]=[{'all':!![]}];}return db['CannedAnswer'][_0x15f1('0x45')](_0x4cc569);})[_0x15f1('0x14')](function(_0x33119d){_0x1b826a['rows']=_0x33119d;return _0x1b826a;});}})[_0x15f1('0x14')](respondWithFilteredResult(_0x2978cb,_0x4cc569))['catch'](handleError(_0x2978cb,null));};exports[_0x15f1('0x63')]=function(_0x1ec03b,_0xeb5419){return db[_0x15f1('0x31')][_0x15f1('0x4c')]({'where':{'id':_0x1ec03b[_0x15f1('0x48')]['id']}})[_0x15f1('0x14')](handleEntityNotFound(_0xeb5419,null))[_0x15f1('0x14')](function(_0x46f595){if(_0x46f595){return _0x46f595[_0x15f1('0x63')](_0x1ec03b[_0x15f1('0x37')][_0x15f1('0x5f')]);}})['then'](respondWithStatusCode(_0xeb5419,null))[_0x15f1('0x46')](handleError(_0xeb5419,null));};exports[_0x15f1('0x64')]=function(_0x4c6ebd,_0x2d4d38){_0x4c6ebd['body'][_0x15f1('0x65')]=_0x4c6ebd[_0x15f1('0x66')][_0x15f1('0x67')];return db[_0x15f1('0x31')][_0x15f1('0x4c')]({'where':{'id':_0x4c6ebd[_0x15f1('0x48')]['id']}})[_0x15f1('0x14')](handleEntityNotFound(_0x2d4d38,null))['then'](saveUpdates(_0x4c6ebd['body'],null))['then'](respondWithResult(_0x2d4d38,null))[_0x15f1('0x46')](handleError(_0x2d4d38,null));};exports['addAvatar']=function(_0x53e8f9,_0x5b47b5){_0x53e8f9[_0x15f1('0x4e')][_0x15f1('0x68')]=_0x53e8f9[_0x15f1('0x66')][_0x15f1('0x67')];return db['ChatWebsite'][_0x15f1('0x4c')]({'where':{'id':_0x53e8f9[_0x15f1('0x48')]['id']}})[_0x15f1('0x14')](handleEntityNotFound(_0x5b47b5,null))[_0x15f1('0x14')](saveUpdates(_0x53e8f9[_0x15f1('0x4e')],null))[_0x15f1('0x14')](respondWithResult(_0x5b47b5,null))[_0x15f1('0x46')](handleError(_0x5b47b5,null));};exports[_0x15f1('0x69')]=function(_0x4d146f,_0x2f51e5){_0x4d146f[_0x15f1('0x4e')][_0x15f1('0x6a')]=_0x4d146f[_0x15f1('0x66')][_0x15f1('0x67')];return db[_0x15f1('0x31')]['find']({'where':{'id':_0x4d146f[_0x15f1('0x48')]['id']}})[_0x15f1('0x14')](handleEntityNotFound(_0x2f51e5,null))['then'](saveUpdates(_0x4d146f[_0x15f1('0x4e')],null))[_0x15f1('0x14')](respondWithResult(_0x2f51e5,null))[_0x15f1('0x46')](handleError(_0x2f51e5,null));};exports[_0x15f1('0x6b')]=function(_0x281365,_0x116a08){_0x281365[_0x15f1('0x4e')][_0x15f1('0x6c')]=_0x281365['file'][_0x15f1('0x67')];return db[_0x15f1('0x31')][_0x15f1('0x4c')]({'where':{'id':_0x281365[_0x15f1('0x48')]['id']}})[_0x15f1('0x14')](handleEntityNotFound(_0x116a08,null))['then'](saveUpdates(_0x281365[_0x15f1('0x4e')],null))[_0x15f1('0x14')](respondWithResult(_0x116a08,null))[_0x15f1('0x46')](handleError(_0x116a08,null));};exports[_0x15f1('0x6d')]=function(_0x5d532c,_0x7db8fe){var _0x1aad53=path['join'](config[_0x15f1('0x6e')],'server/files/images/logos/default_logo.svg');var _0xee9c96={'where':{'id':_0x5d532c[_0x15f1('0x48')]['id']},'attributes':['id',_0x15f1('0x65')],'raw':!![]};var _0xfbd8cc=![];return require('../../config/license/util')['getLicense']()[_0x15f1('0x14')](function(_0x453f98){if(_0x453f98){_0xfbd8cc=_0x453f98[_0x15f1('0x6f')];}})[_0x15f1('0x14')](function(){return db[_0x15f1('0x31')]['find'](_0xee9c96);})['then'](handleEntityNotFound(_0x7db8fe,null))[_0x15f1('0x14')](function(_0x284296){if(_0x284296){if(!_['isNil'](_0x284296['sitepic'])){if(fs[_0x15f1('0x70')](path[_0x15f1('0x71')](config['root'],_0x15f1('0x72'),_0x284296[_0x15f1('0x65')]))&&_0xfbd8cc){_0x1aad53=path['join'](config[_0x15f1('0x6e')],_0x15f1('0x72'),_0x284296[_0x15f1('0x65')]);}}return _0x7db8fe['download'](_0x1aad53);}})[_0x15f1('0x46')](handleError(_0x7db8fe,null));};exports[_0x15f1('0x73')]=function(_0x2d8d24,_0x3cc4d5){var _0x29fd8b=path['join'](config[_0x15f1('0x6e')],'server/files/images/avatars/default_avatar.png');var _0x3ce35d={'where':{'id':_0x2d8d24[_0x15f1('0x48')]['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db[_0x15f1('0x31')][_0x15f1('0x4c')](_0x3ce35d)[_0x15f1('0x14')](handleEntityNotFound(_0x3cc4d5,null))[_0x15f1('0x14')](function(_0x2feb22){if(_0x2feb22){if(!_[_0x15f1('0x74')](_0x2feb22[_0x15f1('0x68')])){if(fs[_0x15f1('0x70')](path[_0x15f1('0x71')](config[_0x15f1('0x6e')],_0x15f1('0x75'),_0x2feb22[_0x15f1('0x68')]))){_0x29fd8b=path[_0x15f1('0x71')](config[_0x15f1('0x6e')],_0x15f1('0x75'),_0x2feb22[_0x15f1('0x68')]);}}return _0x3cc4d5[_0x15f1('0x76')](_0x29fd8b);}})['catch'](handleError(_0x3cc4d5,null));};exports[_0x15f1('0x77')]=function(_0x28a3b4,_0x51e9f9){var _0x411082=path[_0x15f1('0x71')](config[_0x15f1('0x6e')],'server/files/images/avatars/customer_avatar.png');var _0x19afa1={'where':{'id':_0x28a3b4[_0x15f1('0x48')]['id']},'attributes':['id',_0x15f1('0x6a'),_0x15f1('0x78')],'raw':!![]};return db['ChatWebsite']['find'](_0x19afa1)[_0x15f1('0x14')](handleEntityNotFound(_0x51e9f9,null))['then'](function(_0x554c42){if(_0x554c42){if(!_[_0x15f1('0x74')](_0x554c42[_0x15f1('0x6a')])){if(fs[_0x15f1('0x70')](path[_0x15f1('0x71')](config[_0x15f1('0x6e')],_0x15f1('0x75'),_0x554c42['customerAvatar']))&&_0x554c42[_0x15f1('0x78')]){_0x411082=path[_0x15f1('0x71')](config[_0x15f1('0x6e')],_0x15f1('0x75'),_0x554c42[_0x15f1('0x6a')]);}}return _0x51e9f9[_0x15f1('0x76')](_0x411082);}})[_0x15f1('0x46')](handleError(_0x51e9f9,null));};exports['getSystemAvatar']=function(_0x4db719,_0x462790){var _0x1cd6df=path[_0x15f1('0x71')](config[_0x15f1('0x6e')],_0x15f1('0x79'));var _0x34e700={'where':{'id':_0x4db719['params']['id']},'attributes':['id',_0x15f1('0x6c')],'raw':!![]};return db[_0x15f1('0x31')][_0x15f1('0x4c')](_0x34e700)[_0x15f1('0x14')](handleEntityNotFound(_0x462790,null))[_0x15f1('0x14')](function(_0x31b08f){if(_0x31b08f){if(!_[_0x15f1('0x74')](_0x31b08f[_0x15f1('0x6c')])){if(fs['existsSync'](path[_0x15f1('0x71')](config[_0x15f1('0x6e')],_0x15f1('0x75'),_0x31b08f[_0x15f1('0x6c')]))){_0x1cd6df=path[_0x15f1('0x71')](config[_0x15f1('0x6e')],_0x15f1('0x75'),_0x31b08f[_0x15f1('0x6c')]);}}return _0x462790[_0x15f1('0x76')](_0x1cd6df);}})[_0x15f1('0x46')](handleError(_0x462790,null));};exports[_0x15f1('0x7a')]=function(_0x4175fb,_0x484b63){var _0x136321=require('user-agent-parser');var _0x12d5d1=new _0x136321();var _0x6323e9=_0x12d5d1['setUA'](_0x4175fb[_0x15f1('0x7b')][_0x15f1('0x7c')])[_0x15f1('0x7d')]();var _0x11857a={'body':_0x4175fb[_0x15f1('0x4e')],'channel':'chat'};var _0x3f0a1b=[];var _0x36ea0c=[];var _0x55714b={};var _0xbe007a=![];return db['CmContact'][_0x15f1('0x56')]()[_0x15f1('0x14')](function(_0x5a7026){if(!_0x5a7026){throw new db[(_0x15f1('0x7e'))][(_0x15f1('0x7f'))]('no\x20available\x20attributes');}_0x3f0a1b=_[_0x15f1('0x80')](_[_0x15f1('0x49')](_0x5a7026),[_0x15f1('0x81'),_0x15f1('0x82')]);_0x36ea0c=_[_0x15f1('0x80')](_[_0x15f1('0x49')](_0x5a7026),[_0x15f1('0x81'),_0x15f1('0x82'),_0x15f1('0x83'),_0x15f1('0x84')]);if(_0x4175fb[_0x15f1('0x4e')]['id']){delete _0x4175fb[_0x15f1('0x4e')]['id'];}if(_[_0x15f1('0x74')](_0x4175fb[_0x15f1('0x4e')][_0x15f1('0x85')])){throw new db['Sequelize']['ValidationError'](_0x15f1('0x86'));}if(_['isNil'](_0x4175fb['body']['body'])||_0x4175fb[_0x15f1('0x4e')][_0x15f1('0x4e')]===''){throw new db[(_0x15f1('0x7e'))][(_0x15f1('0x7f'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x15f1('0x74')](_0x4175fb['body'][_0x15f1('0x87')])){throw new db[(_0x15f1('0x7e'))][(_0x15f1('0x7f'))](_0x15f1('0x88')+_0x36ea0c);}if(!_['includes'](_0x36ea0c,_0x4175fb['body']['mapKey'])){throw new db[(_0x15f1('0x7e'))][(_0x15f1('0x7f'))](_0x15f1('0x89')+_0x36ea0c);}_0x55714b[_0x4175fb[_0x15f1('0x4e')][_0x15f1('0x87')]]=_0x4175fb['body'][_0x15f1('0x85')];})[_0x15f1('0x14')](function(){return db['ChatWebsite'][_0x15f1('0x4c')]({'where':{'id':_0x4175fb[_0x15f1('0x48')]['id']},'include':[{'model':db[_0x15f1('0x8a')],'as':_0x15f1('0x8b'),'include':[{'model':db[_0x15f1('0x8c')],'as':_0x15f1('0x8d'),'where':_0x55714b,'limit':0x1,'order':[[_0x15f1('0x82'),_0x15f1('0x8e')]]}]},{'model':db[_0x15f1('0x8f')],'as':_0x15f1('0x90')}]});})['then'](handleEntityNotFound(_0x484b63,null))[_0x15f1('0x14')](function(_0x5373fe){if(_0x5373fe&&_0x5373fe[_0x15f1('0x8b')]){_0x11857a[_0x15f1('0x91')]=_0x5373fe;_0x11857a[_0x15f1('0x92')]=_0x5373fe[_0x15f1('0x90')];_0x11857a[_0x15f1('0x93')]=_0x5373fe[_0x15f1('0x8b')];_0x11857a[_0x15f1('0x92')]=_[_0x15f1('0x94')](_0x11857a['applications'],[_0x15f1('0x95')],['asc']);if(_0x11857a['account'][_0x15f1('0x90')]){delete _0x11857a[_0x15f1('0x91')][_0x15f1('0x90')];}if(_0x11857a[_0x15f1('0x91')]['List']&&_0x11857a['account']['List'][_0x15f1('0x8d')]['length']){return _0x11857a[_0x15f1('0x91')][_0x15f1('0x8b')][_0x15f1('0x8d')][0x0];}var _0x500202=_[_0x15f1('0xb')](_0x4175fb[_0x15f1('0x4e')],{'firstName':_0x4175fb[_0x15f1('0x4e')][_0x15f1('0x85')],'ListId':_0x5373fe[_0x15f1('0x84')]});_0x500202[_0x4175fb[_0x15f1('0x4e')][_0x15f1('0x87')]]=_0x4175fb[_0x15f1('0x4e')][_0x15f1('0x85')];return db[_0x15f1('0x8c')][_0x15f1('0x4d')](_0x500202,{'fields':_0x3f0a1b,'raw':!![]});}})[_0x15f1('0x14')](handleEntityNotFound(_0x484b63,null))['then'](function(_0x342d20){_0x11857a[_0x15f1('0x96')]=_0x342d20;var _0xf90899=_0x4175fb[_0x15f1('0x4e')][_0x15f1('0x97')];if(_0x4175fb[_0x15f1('0x7b')][_0x15f1('0x98')]){_0xf90899=_0x4175fb[_0x15f1('0x7b')][_0x15f1('0x98')];}else if(_0x4175fb[_0x15f1('0x7b')][_0x15f1('0x99')]){_0xf90899=_[_0x15f1('0x9a')](_0x4175fb[_0x15f1('0x7b')][_0x15f1('0x99')][_0x15f1('0x9b')](','));}if(_0x342d20){var _0x5ca77e={'ContactId':_0x342d20['id'],'ChatWebsiteId':_0x4175fb[_0x15f1('0x48')]['id'],'from':(_0x342d20['firstName']||'')+'\x20'+(_0x342d20[_0x15f1('0x9c')]||''),'customerIp':_0xf90899,'customerPort':_0x4175fb[_0x15f1('0x7b')][_0x15f1('0x9d')]?_0x4175fb[_0x15f1('0x7b')]['x-real-port']:null,'referer':_0x4175fb['body']['referer'],'browserName':_0x6323e9[_0x15f1('0x9e')][_0x15f1('0x2b')]&&_0x6323e9[_0x15f1('0x9e')][_0x15f1('0x9f')]?util[_0x15f1('0xa0')]('%s\x20%s',_0x6323e9['browser'][_0x15f1('0x2b')],_0x6323e9[_0x15f1('0x9e')][_0x15f1('0x9f')]):'unknown','browserVersion':_0x6323e9['browser'][_0x15f1('0x9f')]||_0x15f1('0xa1'),'osName':util[_0x15f1('0xa0')](_0x15f1('0xa2'),_0x6323e9['os'][_0x15f1('0x2b')],_0x6323e9['os']['version']),'osVersion':_0x6323e9['os']['version'],'deviceModel':_0x6323e9[_0x15f1('0xa3')][_0x15f1('0x36')]&&_0x6323e9[_0x15f1('0xa3')][_0x15f1('0xa4')]?util[_0x15f1('0xa0')](_0x15f1('0xa5'),_0x6323e9['device']['model'],_0x6323e9[_0x15f1('0xa3')][_0x15f1('0xa4')],_0x6323e9[_0x15f1('0xa3')]['type']):null,'deviceVendor':_0x6323e9[_0x15f1('0xa3')][_0x15f1('0xa4')],'deviceType':_0x6323e9[_0x15f1('0xa3')][_0x15f1('0x34')],'formData':JSON[_0x15f1('0x19')](_0x4175fb[_0x15f1('0x4e')])};var _0x3707b6={'ChatWebsiteId':_0x4175fb[_0x15f1('0x48')]['id'],'closed':![]};if(_0x4175fb[_0x15f1('0x4e')][_0x15f1('0xa6')]){_0x3707b6['threadId']=_0x4175fb[_0x15f1('0x4e')][_0x15f1('0xa6')];return db[_0x15f1('0xa7')][_0x15f1('0x4c')]({'where':_0x3707b6})[_0x15f1('0x14')](function(_0x556158){if(_0x556158){return[_0x556158,![]];}_0x5ca77e[_0x15f1('0xa6')]=_0x4175fb['body'][_0x15f1('0xa6')];_0x5ca77e[_0x15f1('0xa8')]=_0x4175fb[_0x15f1('0x4e')][_0x15f1('0xa8')];return db[_0x15f1('0xa7')][_0x15f1('0x4d')](_0x5ca77e)[_0x15f1('0x14')](function(_0x67c3d3){return[_0x67c3d3,!![]];});});}_0x3707b6[_0x15f1('0xa9')]=_0x342d20['id'];if(_0x4175fb['body'][_0x15f1('0xaa')]&&_0x4175fb[_0x15f1('0x4e')]['interaction']['id']){_0x3707b6['id']=_0x4175fb[_0x15f1('0x4e')]['interaction']['id'];return db['ChatInteraction'][_0x15f1('0x4c')]({'where':_0x3707b6})['then'](function(_0x48b906){if(_0x48b906){return[_0x48b906,![]];}return db['ChatInteraction'][_0x15f1('0x4d')](_0x5ca77e)[_0x15f1('0x14')](function(_0x4d5a1f){return[_0x4d5a1f,!![]];});});}return db[_0x15f1('0xa7')][_0x15f1('0x4d')](_0x5ca77e)['then'](function(_0x361a32){return[_0x361a32,!![]];});}})[_0x15f1('0xab')](function(_0x2afd1d,_0x488484){if(_0x2afd1d){_0xbe007a=_0x488484;if(!_0x488484){var _0x1b9039={'from':(_0x11857a['contact'][_0x15f1('0xac')]||'')+'\x20'+(_0x11857a[_0x15f1('0x96')][_0x15f1('0x9c')]||'')};if(_0x4175fb[_0x15f1('0x4e')][_0x15f1('0xa6')]&&_0x4175fb[_0x15f1('0x4e')]['messageId']&&_0x4175fb[_0x15f1('0x4e')][_0x15f1('0xa6')]!=_0x4175fb[_0x15f1('0x4e')][_0x15f1('0xad')]){_0x1b9039['threadId']=_0x4175fb[_0x15f1('0x4e')][_0x15f1('0xad')];}return _0x2afd1d['update'](_0x1b9039);}else{return _0x2afd1d;}}})[_0x15f1('0x14')](function(_0x34235f){_0x11857a['interaction']=_0x34235f['get']({'plain':!![]});_0x11857a[_0x15f1('0xaa')]['created']=_0xbe007a;if(_0x11857a[_0x15f1('0xaa')][_0x15f1('0xae')]){if(_0x11857a[_0x15f1('0x91')][_0x15f1('0xaf')]){_0x11857a[_0x15f1('0x92')][_0x15f1('0xb0')]({'id':0x0,'priority':_0x11857a['applications'][_0x15f1('0x3b')]+0x1,'app':_0x15f1('0xb1'),'appdata':_0x15f1('0xb2'),'interval':_0x15f1('0xb3')});}}return db[_0x15f1('0xb4')][_0x15f1('0x4d')]({'body':_0x4175fb[_0x15f1('0x4e')][_0x15f1('0x4e')],'ChatWebsiteId':_0x4175fb[_0x15f1('0x48')]['id'],'ChatInteractionId':_0x34235f['id'],'direction':'in','ContactId':_0x11857a[_0x15f1('0x96')]['id'],'AttachmentId':_0x4175fb[_0x15f1('0x4e')]['AttachmentId']});})[_0x15f1('0x14')](function(_0x4b06aa){_0x11857a[_0x15f1('0x1b')]=_0x4b06aa;if(_0x11857a['interaction'][_0x15f1('0xb5')]){return db[_0x15f1('0xb6')][_0x15f1('0x4c')]({'attributes':['id',_0x15f1('0x2b')],'where':{'id':_0x11857a[_0x15f1('0xaa')][_0x15f1('0xb5')]}})[_0x15f1('0x14')](function(_0x3da1b0){if(_0x3da1b0){_0x11857a['applications'][_0x15f1('0xb7')]({'id':0x0,'priority':0x0,'app':_0x15f1('0xb8'),'appdata':_0x3da1b0[_0x15f1('0x2b')]+','+(_0x11857a[_0x15f1('0x91')]['waitForTheAssignedAgent']||0xa),'interval':_0x15f1('0xb3')});_0x11857a[_0x15f1('0xb9')]=!![];}return respondWithRpcPromise(_0x15f1('0xba'),_0x15f1('0xbb'),_0x11857a);});}return respondWithRpcPromise(_0x15f1('0xba'),_0x15f1('0xbb'),_0x11857a);})[_0x15f1('0x14')](function(_0x2f39c8){respondWithRpcPromise(_0x15f1('0xbc'),_0x15f1('0xbc'),{'event':_0x15f1('0x7a'),'message':_0x2f39c8},client9002);return _0x2f39c8;})['then'](respondWithResult(_0x484b63,null))[_0x15f1('0x46')](handleError(_0x484b63,null));};exports['offline']=function(_0x1374dc,_0x472bac){var _0x3f9d25,_0x23ab01,_0x3ad99a;var _0x4f0c6a=[];var _0x38a146={};var _0x3ad172=_0x1374dc[_0x15f1('0xbd')]||[];var _0x46e2a3=[];var _0x5811e4;return db[_0x15f1('0x8c')][_0x15f1('0x56')]()[_0x15f1('0x14')](function(_0x1455b3){if(!_0x1455b3){throw new db[(_0x15f1('0x7e'))][(_0x15f1('0x7f'))](_0x15f1('0xbe'));}_0x4f0c6a=_[_0x15f1('0x80')](_[_0x15f1('0x49')](_0x1455b3),['createdAt',_0x15f1('0x82'),_0x15f1('0x83'),_0x15f1('0x84')]);if(_0x1374dc[_0x15f1('0x4e')]['id']){delete _0x1374dc[_0x15f1('0x4e')]['id'];}if(_['isNil'](_0x1374dc[_0x15f1('0x4e')][_0x15f1('0x85')])){throw _0x472bac[_0x15f1('0x1f')](0x1f4)[_0x15f1('0x2c')](new db[(_0x15f1('0x7e'))]['ValidationError'](_0x15f1('0x86')));}if(_[_0x15f1('0x74')](_0x1374dc[_0x15f1('0x4e')]['body'])||_0x1374dc['body'][_0x15f1('0x4e')]===''){throw _0x472bac[_0x15f1('0x1f')](0x1f4)['send'](new db[(_0x15f1('0x7e'))][(_0x15f1('0x7f'))](_0x15f1('0xbf')));}if(_['isNil'](_0x1374dc[_0x15f1('0x4e')][_0x15f1('0xc0')])){throw _0x472bac[_0x15f1('0x1f')](0x1f4)[_0x15f1('0x2c')](new db[(_0x15f1('0x7e'))]['ValidationError'](_0x15f1('0xc1')+_0x4f0c6a));}if(!_[_0x15f1('0xc2')](_0x4f0c6a,_0x1374dc['body'][_0x15f1('0xc0')])){throw _0x472bac[_0x15f1('0x1f')](0x1f4)['send'](new db[(_0x15f1('0x7e'))][(_0x15f1('0x7f'))](_0x15f1('0xc3')+_0x4f0c6a));}_0x38a146[_0x1374dc[_0x15f1('0x4e')][_0x15f1('0xc0')]]=_0x1374dc[_0x15f1('0x4e')][_0x15f1('0x85')];})[_0x15f1('0x14')](function(){return db['ChatWebsite']['find']({'where':{'id':_0x1374dc[_0x15f1('0x48')]['id']},'include':[{'model':db[_0x15f1('0x8a')],'as':_0x15f1('0x8b')},{'model':db[_0x15f1('0xc4')],'as':_0x15f1('0xc4')}]});})[_0x15f1('0x14')](handleEntityNotFound(_0x472bac,null))['then'](function(_0x15e60d){if(_0x15e60d&&_0x15e60d[_0x15f1('0x8b')]){_0x23ab01=_0x15e60d;var _0x4657a5=_[_0x15f1('0xb')](_0x1374dc[_0x15f1('0x4e')],{'firstName':_0x1374dc[_0x15f1('0x4e')][_0x15f1('0x85')],'phone':_0x1374dc[_0x15f1('0x4e')][_0x15f1('0x85')],'ListId':_0x15e60d[_0x15f1('0x84')]});_0x4657a5[_0x1374dc['body'][_0x15f1('0xc0')]]=_0x1374dc[_0x15f1('0x4e')][_0x15f1('0x85')];return db[_0x15f1('0x8c')][_0x15f1('0xc5')]({'where':_0x38a146,'defaults':_0x4657a5});}})[_0x15f1('0xab')](function(_0x314fd4){if(_0x314fd4){_0x3ad99a=_0x314fd4;var _0x105fa6=fs['readFileSync'](path[_0x15f1('0x71')](config[_0x15f1('0x6e')],_0x15f1('0xc6')),'utf8');var _0x259131=ejs['render'](_0x105fa6,{'body':_[_0x15f1('0xc7')](_0x1374dc['body'][_0x15f1('0x4e')]),'bodyTitle':_0x23ab01[_0x15f1('0xc8')]});return db[_0x15f1('0xc9')][_0x15f1('0x4d')]({'body':_0x259131,'plainBody':htmlToText['fromString'](_0x259131),'ContactId':_0x314fd4['id'],'ChatWebsiteId':_0x23ab01['id']});}})[_0x15f1('0x14')](function(_0x39b970){_0x5811e4=_0x39b970;if(_0x3ad172[_0x15f1('0x3b')]){var _0x922f78=_0x3ad172[_0x15f1('0x30')](function(_0x496c37){return{'name':_0x496c37['originalname'],'basename':_0x496c37[_0x15f1('0x67')],'type':_0x496c37['mimetype'],'ChatOfflineMessageId':_0x39b970['id']};});_0x46e2a3=_0x922f78['map'](_0x438b06=>{var _0x3a2e7b={'filename':_0x438b06['name'],'path':path[_0x15f1('0x71')](config['root'],'server','files',_0x15f1('0xca'),_0x15f1('0xcb'),_0x438b06[_0x15f1('0xcc')])};return _0x3a2e7b;});if(!_0x23ab01[_0x15f1('0xcd')]){return db['sequelize'][_0x15f1('0xce')](function(_0x5c890d){return db[_0x15f1('0xcf')]['bulkCreate'](_0x922f78,{'transaction':_0x5c890d});});}}})[_0x15f1('0x14')](function(){if(_0x5811e4){_0x3f9d25=_0x5811e4;return db['MailAccount']['findOne']({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0x15f1('0xd0'),'raw':!![],'include':[{'model':db[_0x15f1('0xd1')],'as':'CloudProvider','raw':!![]}]}]});}})[_0x15f1('0x14')](function(_0x1db920){if(_0x1db920&&_0x1db920[_0x15f1('0xd0')]&&_0x23ab01['forwardOffline']&&_0x23ab01['forwardOfflineAddress']){var _0x242f6a=_0x1db920[_0x15f1('0xd2')]();return respondWithRpcPromise(_0x15f1('0xd3'),'sendMail',{'account':_0x242f6a,'message':{'from':util[_0x15f1('0xa0')](_0x15f1('0xd4'),_0x1db920[_0x15f1('0x2b')],_0x1db920['email']||_0x1db920['Smtp']['user']),'to':_0x23ab01[_0x15f1('0xd5')],'subject':_0x23ab01[_0x15f1('0xd6')],'html':_0x3f9d25['body'],'attachments':_0x46e2a3}},client9003)[_0x15f1('0x14')](function(){return _0x3f9d25;})[_0x15f1('0x46')](function(_0xf8db54){logger[_0x15f1('0x1a')](_0xf8db54);});}})['then'](function(){if(_0x23ab01&&_0x23ab01[_0x15f1('0xcd')]&&_0x23ab01['MailAccountId']){var _0x4b5495=[];if(_0x3ad172[_0x15f1('0x3b')]){_0x4b5495=_0x3ad172[_0x15f1('0x30')](function(_0x3cf987){return{'name':_0x3cf987[_0x15f1('0xd7')],'basename':_0x3cf987[_0x15f1('0x67')],'type':_0x3cf987[_0x15f1('0xd8')],'ChatOfflineMessageId':_0x5811e4['id']};});}var _0x22c369;if(!_[_0x15f1('0x74')](_0x23ab01['subjectOffline'])){var _0x4a1cf3=_[_0x15f1('0x30')](_0x1374dc[_0x15f1('0x4e')],function(_0x841177){return _0x841177;});var _0x1d4283=_['toPairsIn'](_0x4a1cf3)[0x0];var _0x1e0b94=_[_0x15f1('0xd9')](_0x1d4283,function(_0x102974){return _0x102974;});_0x22c369=_0x1e0b94[0x1][_0x23ab01['subjectOffline']];}var _0x178ee3={'from':_0x3ad99a[_0x15f1('0xda')],'firstName':_0x3ad99a[_0x15f1('0xac')],'lastName':_0x3ad99a[_0x15f1('0x9c')],'mapKey':_0x15f1('0xda'),'message':{'from':_0x3ad99a[_0x15f1('0xda')],'to':_0x23ab01[_0x15f1('0xc4')][_0x15f1('0xda')],'cc':'','subject':_[_0x15f1('0x74')](_0x22c369)?_0x23ab01[_0x15f1('0xd6')]:_0x22c369,'messageId':'','sentAt':new Date(),'attach':_0x4b5495[_0x15f1('0x3b')],'attachments':_0x4b5495,'originChannel':_0x15f1('0xdb'),'ChatWebsiteId':_0x23ab01['id'],'ChatOfflineMessageId':_0x3f9d25['id'],'originTo':_0x23ab01[_0x15f1('0xc4')][_0x15f1('0xda')]},'body':_0x3f9d25['body']};var _0x4d4103={'account':{'id':_0x23ab01[_0x15f1('0xdc')]},'body':_0x178ee3,'log':_0x15f1('0xdd')};return respondWithRpcPromise('NotifyMailAccount',_0x15f1('0xde'),_0x4d4103,client9001)[_0x15f1('0x14')](function(){return _0x3f9d25;})[_0x15f1('0x46')](function(_0xa71d8c){logger[_0x15f1('0x1a')](_0xa71d8c);});}return;})[_0x15f1('0x14')](function(){if(_0x3f9d25){return _0x3f9d25;}})['then'](respondWithResult(_0x472bac,null))['catch'](function(_0x49a551){logger['error'](_0x15f1('0x46'),_0x49a551);for(var _0x3fe817 of _0x3ad172){var _0x17cd82=path['join'](config[_0x15f1('0x6e')],_0x15f1('0xdf'),_0x15f1('0xbd'),_0x15f1('0xca'),_0x15f1('0xcb'),_0x3fe817[_0x15f1('0x67')]);fs_extra['remove'](_0x17cd82)['catch'](function(_0x523489){logger[_0x15f1('0x1a')](_0x15f1('0xe0'),_0x17cd82,_0x523489);});}});};exports[_0x15f1('0xe1')]=function(_0x412e2f,_0x4db436){return db['ChatInteraction'][_0x15f1('0x4c')]({'where':{'id':_0x412e2f[_0x15f1('0x48')]['id']}})[_0x15f1('0x14')](handleEntityNotFound(_0x4db436,null))[_0x15f1('0x14')](function(_0x11e78e){if(_0x11e78e){return _0x11e78e['addInteraction'](_0x412e2f['body']['ids'],_['omit'](_0x412e2f[_0x15f1('0x4e')],['ids','id'])||{});}})['then'](respondWithResult(_0x4db436,null))[_0x15f1('0x46')](handleError(_0x4db436,null));};exports[_0x15f1('0xe2')]=function(_0xca769d,_0x21ec73){var _0x4f5d81={'raw':![],'where':{}};var _0x29b3e5={};var _0x14883e={'count':0x0,'rows':[]};return db[_0x15f1('0x31')][_0x15f1('0xe3')]({'where':{'id':_0xca769d[_0x15f1('0x48')]['id']}})['then'](handleEntityNotFound(_0x21ec73,null))[_0x15f1('0x14')](function(_0x321b30){if(_0x321b30){_0x29b3e5[_0x15f1('0x36')]=_[_0x15f1('0x49')](db[_0x15f1('0xa7')][_0x15f1('0x32')]);_0x29b3e5['query']=_[_0x15f1('0x49')](_0xca769d[_0x15f1('0x37')]);_0x29b3e5[_0x15f1('0x38')]=_[_0x15f1('0x4a')](_0x29b3e5[_0x15f1('0x36')],_0x29b3e5[_0x15f1('0x37')]);_0x4f5d81['attributes']=_['intersection'](_0x29b3e5[_0x15f1('0x36')],qs[_0x15f1('0x3a')](_0xca769d[_0x15f1('0x37')]['fields']));_0x4f5d81[_0x15f1('0x39')]=_0x4f5d81[_0x15f1('0x39')][_0x15f1('0x3b')]?_0x4f5d81[_0x15f1('0x39')]:_0x29b3e5[_0x15f1('0x36')];if(!_0xca769d[_0x15f1('0x37')][_0x15f1('0x3c')](_0x15f1('0x3d'))){_0x4f5d81[_0x15f1('0x23')]=qs[_0x15f1('0x23')](_0xca769d[_0x15f1('0x37')]['limit']);_0x4f5d81[_0x15f1('0x21')]=qs[_0x15f1('0x21')](_0xca769d[_0x15f1('0x37')]['offset']);}_0x4f5d81['order']=qs[_0x15f1('0x3f')](_0xca769d['query'][_0x15f1('0x3f')]);_0x4f5d81['where']=qs['filters'](_['pick'](_0xca769d[_0x15f1('0x37')],_0x29b3e5[_0x15f1('0x38')]));_0x4f5d81[_0x15f1('0x40')][_0x15f1('0x58')]=_0x321b30['id'];if(_0xca769d[_0x15f1('0x37')][_0x15f1('0x5b')]){_0x4f5d81[_0x15f1('0x40')]=_[_0x15f1('0x5c')](_0x4f5d81[_0x15f1('0x40')],{'$or':_[_0x15f1('0x30')](_0x4f5d81[_0x15f1('0x39')],function(_0xd275f6){var _0x44b83e={};_0x44b83e[_0xd275f6]={'$like':'%'+_0xca769d[_0x15f1('0x37')][_0x15f1('0x5b')]+'%'};return _0x44b83e;})});}_0x4f5d81=_['merge']({},_0x4f5d81,_0xca769d[_0x15f1('0x43')]);return db[_0x15f1('0xa7')]['count']({'where':_0x4f5d81[_0x15f1('0x40')]})[_0x15f1('0x14')](function(_0x5b0aa4){_0x14883e[_0x15f1('0x24')]=_0x5b0aa4;if(_0xca769d[_0x15f1('0x37')][_0x15f1('0x4b')]){_0x4f5d81[_0x15f1('0x44')]=[{'model':db[_0x15f1('0x8c')],'as':'Contact','required':![]},{'model':db[_0x15f1('0xb6')],'as':'Owner','attributes':[_0x15f1('0x2b'),_0x15f1('0xe4'),_0x15f1('0xe5')],'required':![]},{'model':db['Tag'],'as':_0x15f1('0xe6'),'attributes':['id',_0x15f1('0x2b'),_0x15f1('0xe7')],'where':_0xca769d[_0x15f1('0x37')]['tag']?{'id':_0xca769d[_0x15f1('0x37')]['tag']}:undefined,'required':_0xca769d[_0x15f1('0x37')][_0x15f1('0xe8')]?!![]:![]}];}return db['ChatInteraction'][_0x15f1('0x45')](_0x4f5d81);})[_0x15f1('0x14')](function(_0x48fec1){_0x14883e[_0x15f1('0x5d')]=_0x48fec1;return _0x14883e;});}})['then'](respondWithFilteredResult(_0x21ec73,_0x4f5d81))['catch'](handleError(_0x21ec73,null));};function iftimePromise(_0x5e4937,_0x4f2ff1){return respondWithRpcPromise(_0x15f1('0xe9'),_0x15f1('0xea'),{'command':_0x4f2ff1[_0x15f1('0xeb')]?util['format'](_0x15f1('0xec'),_0x5e4937['interval'],_0x4f2ff1['timezone']):util[_0x15f1('0xa0')](_0x15f1('0xed'),_0x5e4937[_0x15f1('0xee')])},client9002)[_0x15f1('0x14')](function(_0x4f6f6f){var _0x5d6b7f=_0x4f6f6f&&_0x4f6f6f[_0x15f1('0xef')](_0x15f1('0xf0'))>=0x0?!![]:![];logger[_0x15f1('0x1c')](_0x15f1('0xf1'),_0x4f2ff1['id'],_0x5e4937['id'],_0x5e4937[_0x15f1('0xee')],_0x5d6b7f?_0x15f1('0xf2'):_0x15f1('0xf3'),_0x4f2ff1[_0x15f1('0xeb')]?_0x4f2ff1[_0x15f1('0xeb')]:_0x15f1('0xf4'));return _0x5d6b7f;})[_0x15f1('0x46')](function(_0x41fd14){logger[_0x15f1('0x1a')](_0x15f1('0xf1'),_0x4f2ff1['id'],_0x5e4937['id'],_0x5e4937[_0x15f1('0xee')],util['inspect'](_0x41fd14,{'showHidden':![],'depth':null}),_0x4f2ff1[_0x15f1('0xeb')]?_0x4f2ff1[_0x15f1('0xeb')]:'No\x20timezone');return![];});}exports[_0x15f1('0xea')]=function(_0x4e3473,_0x3fe267){var _0x417ccd=0x0;var _0x46b65d=0x0;var _0x4399ee=![];var _0x4cae06;var _0x52d3f9;return db[_0x15f1('0x31')][_0x15f1('0x4c')]({'where':{'id':_0x4e3473[_0x15f1('0x48')]['id']},'include':[{'model':db[_0x15f1('0xf5')],'as':_0x15f1('0xf5'),'include':[{'model':db[_0x15f1('0xf5')],'as':_0x15f1('0xf6'),'attributes':['id',_0x15f1('0xee')],'raw':!![]}]}]})['then'](handleEntityNotFound(_0x3fe267,null))[_0x15f1('0x14')](function(_0x35a158){if(_0x35a158){_0x4cae06=_0x35a158;return _0x35a158[_0x15f1('0xf7')]({'raw':!![]});}})[_0x15f1('0x14')](function(_0x51d80d){if(_0x4cae06){if(_0x51d80d){_0x52d3f9=_0x51d80d;}}return require(_0x15f1('0xf8'))['getLicense']();})[_0x15f1('0x14')](function(_0x5be510){if(_0x5be510){_0x46b65d=_0x5be510['virtual'];_0x4399ee=_0x5be510['custom'];}})[_0x15f1('0x14')](function(){return db[_0x15f1('0xa7')][_0x15f1('0x24')]({'where':{'closed':![]}});})[_0x15f1('0x14')](function(_0x3da541){_0x417ccd=_0x3da541;if(_0x46b65d&&_0x3da541>_0x46b65d){return db['License']['findOne']({'where':{'id':0x1}})['then'](function(_0x40fb0){if(_0x40fb0){_0x40fb0[_0x15f1('0xf9')](_0x15f1('0xfa'));}});}})[_0x15f1('0x14')](function(){if(_0x4cae06[_0x15f1('0xf5')]&&_0x4cae06[_0x15f1('0xf5')]['Intervals']){var _0x3c0d69=[];for(var _0x295388=0x0;_0x295388<_0x4cae06[_0x15f1('0xf5')]['Intervals'][_0x15f1('0x3b')];_0x295388++){var _0x2a456b=_0x4cae06[_0x15f1('0xf5')][_0x15f1('0xf6')][_0x295388][_0x15f1('0x51')]({'plain':!![]});_0x3c0d69['push'](iftimePromise(_0x2a456b,_0x4cae06));}return BPromise[_0x15f1('0xfb')](_0x3c0d69)['then'](function(_0x13448e){return _[_0x15f1('0xfc')](_0x13448e);});}else{return!![];}})['then'](function(_0x4189a5){var _0x49fa5c=fs[_0x15f1('0xfd')](path[_0x15f1('0x71')](config['root'],_0x15f1('0xfe')),'utf8');var _0x2303e5={'remote':_0x4cae06[_0x15f1('0xff')],'query':querystring[_0x15f1('0x19')](_['merge'](_0x4cae06['get']({'plain':!![]}),{'customerIp':_0x4e3473[_0x15f1('0x7b')][_0x15f1('0x99')]||_0x4e3473['headers'][_0x15f1('0x100')]||_0x4e3473[_0x15f1('0x101')][_0x15f1('0x102')]||_0x4e3473['ip'],'referer':_0x4e3473[_0x15f1('0x7b')][_0x15f1('0x103')],'openedInteractions':_0x417ccd,'maxInteractions':_0x46b65d,'virtual':_0x4399ee[_0x15f1('0x104')],'online':_0x4189a5,'custom':_0x4399ee}))[_0x15f1('0x105')](/'/g,'\x5c\x27')};_0x3fe267[_0x15f1('0x2c')](ejs[_0x15f1('0x106')](Mustache[_0x15f1('0x106')](_0x49fa5c,_0x2303e5),{'proactiveActions':_0x52d3f9,'alignment':_0x4cae06[_0x15f1('0x107')],'verticalAlignment':_0x4cae06[_0x15f1('0x108')],'div_color':_0x4cae06['color'],'labelText':_0x4cae06[_0x15f1('0x109')],'text_color':_0x4cae06[_0x15f1('0x10a')],'text_button_color':_0x4cae06[_0x15f1('0x10b')],'button_color':_0x4cae06['color_button'],'background_color':_0x4cae06['backgroundColor'],'hideWhenOffline':_0x4cae06[_0x15f1('0x10c')],'interval':_0x4cae06[_0x15f1('0x10d')]}));})[_0x15f1('0x46')](handleError(_0x3fe267,null));};exports['addApplications']=function(_0x470a58,_0x251c05){var _0x3aef22=_0x470a58['params']['id'];var _0x165d49=_0x470a58[_0x15f1('0x4e')];var _0x47e998=0xc8;var _0x105130=null;return db[_0x15f1('0x10e')][_0x15f1('0xce')]({'isolationLevel':db[_0x15f1('0x10e')][_0x15f1('0x10f')][_0x15f1('0x110')]['READ_COMMITTED']},function(_0xd0d4f6){return db[_0x15f1('0x31')][_0x15f1('0xe3')]({'where':{'id':_0x3aef22},'transaction':_0xd0d4f6})[_0x15f1('0x14')](function(_0x3413da){if(_0x3413da){return db[_0x15f1('0x8f')][_0x15f1('0x28')]({'where':{'ChatWebsiteId':_0x3aef22},'transaction':_0xd0d4f6})[_0x15f1('0x14')](function(){var _0x2d712b=_[_0x15f1('0x30')](_0x165d49,function(_0x31688f){_0x31688f[_0x15f1('0x58')]=_0x3aef22;return _0x31688f;});return db[_0x15f1('0x8f')][_0x15f1('0x111')](_0x2d712b,{'transaction':_0xd0d4f6});});}else{_0x47e998=0x194;_0x105130=[];}});})[_0x15f1('0x14')](function(){if(_0x47e998!==0x194){return db[_0x15f1('0x8f')][_0x15f1('0x112')]({'where':{'ChatWebsiteId':_0x3aef22},'order':_0x15f1('0x95')})[_0x15f1('0x14')](function(_0x125c87){_0x105130=_0x125c87;});}})[_0x15f1('0x46')](function(_0x374a2a){_0x47e998=0x1f4;logger[_0x15f1('0x1a')](_0x374a2a[_0x15f1('0x2a')]);if(_0x374a2a['name']){delete _0x374a2a[_0x15f1('0x2b')];}_0x105130=_0x374a2a;})['finally'](function(){if(_0x105130===null){_0x251c05['sendStatus'](_0x47e998);}else{if(_0x47e998===0x1f4){_0x251c05[_0x15f1('0x1f')](_0x47e998)[_0x15f1('0x2c')](_0x105130);}else{_0x251c05[_0x15f1('0x1f')](_0x47e998)['json'](_0x105130);}}});};exports[_0x15f1('0x113')]=function(_0x545e79,_0x5a9831){var _0x1fbdb8={};var _0x4237d2={};var _0x56f0d4;var _0x56df83;return db['ChatWebsite'][_0x15f1('0xe3')]({'where':{'id':_0x545e79[_0x15f1('0x48')]['id']}})[_0x15f1('0x14')](handleEntityNotFound(_0x5a9831,null))[_0x15f1('0x14')](function(_0x43cd3f){if(_0x43cd3f){_0x56f0d4=_0x43cd3f;_0x4237d2['model']=_[_0x15f1('0x49')](db[_0x15f1('0x8f')][_0x15f1('0x32')]);_0x4237d2[_0x15f1('0x37')]=_['keys'](_0x545e79[_0x15f1('0x37')]);_0x4237d2[_0x15f1('0x38')]=_[_0x15f1('0x4a')](_0x4237d2[_0x15f1('0x36')],_0x4237d2[_0x15f1('0x37')]);_0x1fbdb8['attributes']=_[_0x15f1('0x4a')](_0x4237d2[_0x15f1('0x36')],qs[_0x15f1('0x3a')](_0x545e79[_0x15f1('0x37')][_0x15f1('0x3a')]));_0x1fbdb8['attributes']=_0x1fbdb8[_0x15f1('0x39')]['length']?_0x1fbdb8[_0x15f1('0x39')]:_0x4237d2[_0x15f1('0x36')];_0x1fbdb8['order']=qs['sort'](_0x545e79[_0x15f1('0x37')][_0x15f1('0x3f')]);_0x1fbdb8[_0x15f1('0x40')]=qs[_0x15f1('0x38')](_[_0x15f1('0x41')](_0x545e79[_0x15f1('0x37')],_0x4237d2['filters']));if(_0x545e79[_0x15f1('0x37')][_0x15f1('0x5b')]){_0x1fbdb8[_0x15f1('0x40')]=_[_0x15f1('0x5c')](_0x1fbdb8['where'],{'$or':_['map'](_0x1fbdb8['attributes'],function(_0x36360c){var _0x5edc41={};_0x5edc41[_0x36360c]={'$like':'%'+_0x545e79['query']['filter']+'%'};return _0x5edc41;})});}_0x1fbdb8=_[_0x15f1('0x5c')]({},_0x1fbdb8,_0x545e79[_0x15f1('0x43')]);return _0x56f0d4[_0x15f1('0x113')](_0x1fbdb8);}})[_0x15f1('0x14')](function(_0x232b89){if(_0x232b89){_0x56df83=_0x232b89[_0x15f1('0x3b')];if(!_0x545e79[_0x15f1('0x37')][_0x15f1('0x3c')]('nolimit')){_0x1fbdb8[_0x15f1('0x23')]=qs[_0x15f1('0x23')](_0x545e79['query'][_0x15f1('0x23')]);_0x1fbdb8[_0x15f1('0x21')]=qs[_0x15f1('0x21')](_0x545e79['query']['offset']);}return _0x56f0d4[_0x15f1('0x113')](_0x1fbdb8);}})[_0x15f1('0x14')](function(_0x536a16){if(_0x536a16){return _0x536a16?{'count':_0x56df83,'rows':_0x536a16}:null;}})[_0x15f1('0x14')](respondWithResult(_0x5a9831,null))[_0x15f1('0x46')](handleError(_0x5a9831,null));};exports[_0x15f1('0x114')]=function(_0x1fada2,_0x1ae5af){return db[_0x15f1('0x115')][_0x15f1('0x4c')]({'where':{'id':_0x1fada2[_0x15f1('0x48')]['id']}})[_0x15f1('0x14')](handleEntityNotFound(_0x1ae5af,null))[_0x15f1('0x14')](function(_0x117c51){if(_0x117c51){return _0x117c51[_0x15f1('0x114')](_0x1fada2[_0x15f1('0x4e')][_0x15f1('0x5f')],_[_0x15f1('0x116')](_0x1fada2['body'],[_0x15f1('0x5f'),'id'])||{});}})[_0x15f1('0x14')](respondWithResult(_0x1ae5af,null))[_0x15f1('0x46')](handleError(_0x1ae5af,null));};exports[_0x15f1('0xf7')]=function(_0x310cc3,_0x1bc337){var _0x38a473={};var _0x201845={};var _0xc0673d;var _0x145fb8;return db[_0x15f1('0x31')][_0x15f1('0xe3')]({'where':{'id':_0x310cc3[_0x15f1('0x48')]['id']}})['then'](handleEntityNotFound(_0x1bc337,null))[_0x15f1('0x14')](function(_0x34554f){if(_0x34554f){_0xc0673d=_0x34554f;_0x201845[_0x15f1('0x36')]=_[_0x15f1('0x49')](db[_0x15f1('0x117')][_0x15f1('0x32')]);_0x201845[_0x15f1('0x37')]=_['keys'](_0x310cc3['query']);_0x201845[_0x15f1('0x38')]=_[_0x15f1('0x4a')](_0x201845['model'],_0x201845[_0x15f1('0x37')]);_0x38a473[_0x15f1('0x39')]=_[_0x15f1('0x4a')](_0x201845[_0x15f1('0x36')],qs[_0x15f1('0x3a')](_0x310cc3[_0x15f1('0x37')]['fields']));_0x38a473[_0x15f1('0x39')]=_0x38a473[_0x15f1('0x39')][_0x15f1('0x3b')]?_0x38a473[_0x15f1('0x39')]:_0x201845[_0x15f1('0x36')];_0x38a473['order']=qs[_0x15f1('0x3f')](_0x310cc3[_0x15f1('0x37')][_0x15f1('0x3f')]);_0x38a473['where']=qs[_0x15f1('0x38')](_[_0x15f1('0x41')](_0x310cc3['query'],_0x201845[_0x15f1('0x38')]));if(_0x310cc3[_0x15f1('0x37')][_0x15f1('0x5b')]){_0x38a473[_0x15f1('0x40')]=_['merge'](_0x38a473[_0x15f1('0x40')],{'$or':_['map'](_0x38a473['attributes'],function(_0x37f116){var _0xa2f975={};_0xa2f975[_0x37f116]={'$like':'%'+_0x310cc3['query'][_0x15f1('0x5b')]+'%'};return _0xa2f975;})});}_0x38a473=_[_0x15f1('0x5c')]({},_0x38a473,_0x310cc3[_0x15f1('0x43')]);return _0xc0673d['getProactiveActions'](_0x38a473);}})[_0x15f1('0x14')](function(_0x1f2576){if(_0x1f2576){_0x145fb8=_0x1f2576['length'];if(!_0x310cc3[_0x15f1('0x37')][_0x15f1('0x3c')](_0x15f1('0x3d'))){_0x38a473['limit']=qs['limit'](_0x310cc3['query'][_0x15f1('0x23')]);_0x38a473[_0x15f1('0x21')]=qs[_0x15f1('0x21')](_0x310cc3[_0x15f1('0x37')][_0x15f1('0x21')]);}return _0xc0673d[_0x15f1('0xf7')](_0x38a473);}})['then'](function(_0x17135d){if(_0x17135d){return _0x17135d?{'count':_0x145fb8,'rows':_0x17135d}:null;}})[_0x15f1('0x14')](respondWithResult(_0x1bc337,null))['catch'](handleError(_0x1bc337,null));};exports['getFields']=function(_0x1a2505,_0x3ab9ed){var _0x154b87=_0x1a2505[_0x15f1('0x37')][_0x15f1('0x118')]==='false'?_0x15f1('0x119'):_0x15f1('0x11a');return db[_0x15f1('0x31')][_0x15f1('0x4c')]({'attributes':['id',_0x154b87],'where':{'id':_0x1a2505[_0x15f1('0x48')]['id']}})[_0x15f1('0x14')](handleEntityNotFound(_0x3ab9ed,null))[_0x15f1('0x14')](function(_0x27e37b){if(_0x27e37b){var _0x2a160a=_0x27e37b[_0x154b87];var _0x48d4db=_0x2a160a&&_0x2a160a[_0x15f1('0x11b')]?_0x2a160a['items']:[];_0x3ab9ed[_0x15f1('0x2c')]({'fromKey':_[_0x15f1('0x74')](_0x2a160a[_0x15f1('0x11c')])?undefined:_0x2a160a[_0x15f1('0x11c')],'count':_0x48d4db[_0x15f1('0x3b')],'rows':_0x48d4db});}})['catch'](handleError(_0x3ab9ed,null));};exports[_0x15f1('0x11d')]=function(_0x1fa0ab,_0x374a3d){var _0x349f6e={'raw':![],'where':{}};var _0x256c9d={};var _0x566c6e={'count':0x0,'rows':[]};return db[_0x15f1('0x31')]['findOne']({'where':{'id':_0x1fa0ab[_0x15f1('0x48')]['id']}})['then'](handleEntityNotFound(_0x374a3d,null))[_0x15f1('0x14')](function(_0x2d2b73){if(_0x2d2b73){_0x256c9d['model']=_[_0x15f1('0x49')](db[_0x15f1('0xc9')]['rawAttributes']);_0x256c9d[_0x15f1('0x37')]=_[_0x15f1('0x49')](_0x1fa0ab[_0x15f1('0x37')]);_0x256c9d[_0x15f1('0x38')]=_[_0x15f1('0x4a')](_0x256c9d['model'],_0x256c9d[_0x15f1('0x37')]);_0x349f6e[_0x15f1('0x39')]=_[_0x15f1('0x4a')](_0x256c9d[_0x15f1('0x36')],qs[_0x15f1('0x3a')](_0x1fa0ab[_0x15f1('0x37')][_0x15f1('0x3a')]));_0x349f6e['attributes']=_0x349f6e[_0x15f1('0x39')][_0x15f1('0x3b')]?_0x349f6e['attributes']:_0x256c9d[_0x15f1('0x36')];if(!_0x1fa0ab[_0x15f1('0x37')][_0x15f1('0x3c')](_0x15f1('0x3d'))){_0x349f6e[_0x15f1('0x23')]=qs['limit'](_0x1fa0ab['query'][_0x15f1('0x23')]);_0x349f6e[_0x15f1('0x21')]=qs['offset'](_0x1fa0ab[_0x15f1('0x37')][_0x15f1('0x21')]);}_0x349f6e['order']=qs['sort'](_0x1fa0ab[_0x15f1('0x37')]['sort']);_0x349f6e[_0x15f1('0x40')]=qs[_0x15f1('0x38')](_[_0x15f1('0x41')](_0x1fa0ab[_0x15f1('0x37')],_0x256c9d[_0x15f1('0x38')]));_0x349f6e[_0x15f1('0x40')][_0x15f1('0x58')]=_0x2d2b73['id'];if(_0x1fa0ab['query'][_0x15f1('0x5b')]){_0x349f6e[_0x15f1('0x40')]=_['merge'](_0x349f6e[_0x15f1('0x40')],{'$or':_[_0x15f1('0x30')](_0x349f6e['attributes'],function(_0x36b1a8){var _0x11e223={};_0x11e223[_0x36b1a8]={'$like':'%'+_0x1fa0ab[_0x15f1('0x37')]['filter']+'%'};return _0x11e223;})});}_0x349f6e=_[_0x15f1('0x5c')]({},_0x349f6e,_0x1fa0ab[_0x15f1('0x43')]);return db[_0x15f1('0xc9')][_0x15f1('0x24')]({'where':_0x349f6e['where']})[_0x15f1('0x14')](function(_0x9ec198){_0x566c6e[_0x15f1('0x24')]=_0x9ec198;if(_0x1fa0ab[_0x15f1('0x37')][_0x15f1('0x4b')]){_0x349f6e[_0x15f1('0x44')]=[{'all':!![]}];}else{_0x349f6e[_0x15f1('0x44')]=[{'model':db[_0x15f1('0x8c')],'as':_0x15f1('0x11e'),'required':![]},{'model':db[_0x15f1('0xcf')],'as':_0x15f1('0x11f'),'required':![]}];}return db['ChatOfflineMessage']['findAll'](_0x349f6e);})[_0x15f1('0x14')](function(_0x467f05){_0x566c6e[_0x15f1('0x5d')]=_0x467f05;return _0x566c6e;});}})[_0x15f1('0x14')](respondWithFilteredResult(_0x374a3d,_0x349f6e))[_0x15f1('0x46')](handleError(_0x374a3d,null));};exports[_0x15f1('0x120')]=function(_0x36d9d4,_0x5c1c08){return db['ChatWebsite'][_0x15f1('0x4c')]({'where':{'id':_0x36d9d4[_0x15f1('0x48')]['id']}})[_0x15f1('0x14')](handleEntityNotFound(_0x5c1c08,null))[_0x15f1('0x14')](function(_0x4aa919){if(_0x4aa919){return _0x4aa919['addAgents'](_0x36d9d4['body'][_0x15f1('0x5f')],_[_0x15f1('0x116')](_0x36d9d4[_0x15f1('0x4e')],[_0x15f1('0x5f'),'id'])||{})['spread'](function(_0x125144){for(var _0x54fbae=0x0;_0x54fbae<_0x36d9d4['body'][_0x15f1('0x5f')][_0x15f1('0x3b')];_0x54fbae+=0x1){socket[_0x15f1('0x121')](_0x15f1('0x122'),{'UserId':Number(_0x36d9d4[_0x15f1('0x4e')][_0x15f1('0x5f')][_0x54fbae]),'ChatWebsiteId':Number(_0x36d9d4[_0x15f1('0x48')]['id'])});}return _0x125144;});}})[_0x15f1('0x14')](respondWithResult(_0x5c1c08,null))[_0x15f1('0x46')](handleError(_0x5c1c08,null));};exports[_0x15f1('0x123')]=function(_0xf10063,_0x12dc3b){return db[_0x15f1('0x31')][_0x15f1('0x4c')]({'where':{'id':_0xf10063[_0x15f1('0x48')]['id']}})[_0x15f1('0x14')](handleEntityNotFound(_0x12dc3b,null))[_0x15f1('0x14')](function(_0x4a933a){if(_0x4a933a){return _0x4a933a[_0x15f1('0x123')](_0xf10063['query'][_0x15f1('0x5f')])['then'](function(){if(_[_0x15f1('0x124')](_0xf10063[_0x15f1('0x37')]['ids'])){for(var _0x5efbec=0x0;_0x5efbec<_0xf10063[_0x15f1('0x37')]['ids'][_0x15f1('0x3b')];_0x5efbec+=0x1){socket[_0x15f1('0x121')](_0x15f1('0x125'),{'UserId':Number(_0xf10063['query'][_0x15f1('0x5f')][_0x5efbec]),'ChatWebsiteId':Number(_0xf10063['params']['id'])});}}else{socket['emit'](_0x15f1('0x125'),{'UserId':Number(_0xf10063['query'][_0x15f1('0x5f')]),'ChatWebsiteId':Number(_0xf10063[_0x15f1('0x48')]['id'])});}});}})['then'](respondWithStatusCode(_0x12dc3b,null))[_0x15f1('0x46')](handleError(_0x12dc3b,null));};exports[_0x15f1('0x126')]=function(_0x52bb4c,_0x469e82){var _0x41951e={};var _0x300856={};var _0xd1f730;var _0x5b92e2;return db[_0x15f1('0x31')]['findOne']({'where':{'id':_0x52bb4c[_0x15f1('0x48')]['id']}})['then'](handleEntityNotFound(_0x469e82,null))[_0x15f1('0x14')](function(_0x12ae69){if(_0x12ae69){_0xd1f730=_0x12ae69;_0x300856[_0x15f1('0x36')]=_[_0x15f1('0x49')](db['User']['rawAttributes']);_0x300856['query']=_['keys'](_0x52bb4c['query']);_0x300856[_0x15f1('0x38')]=_[_0x15f1('0x4a')](_0x300856[_0x15f1('0x36')],_0x300856[_0x15f1('0x37')]);_0x41951e['attributes']=_['intersection'](_0x300856[_0x15f1('0x36')],qs[_0x15f1('0x3a')](_0x52bb4c[_0x15f1('0x37')][_0x15f1('0x3a')]));_0x41951e['attributes']=_0x41951e[_0x15f1('0x39')][_0x15f1('0x3b')]?_0x41951e[_0x15f1('0x39')]:_0x300856[_0x15f1('0x36')];_0x41951e[_0x15f1('0x3e')]=qs[_0x15f1('0x3f')](_0x52bb4c[_0x15f1('0x37')][_0x15f1('0x3f')]);_0x41951e['where']=qs[_0x15f1('0x38')](_[_0x15f1('0x41')](_0x52bb4c[_0x15f1('0x37')],_0x300856[_0x15f1('0x38')]));if(_0x52bb4c[_0x15f1('0x37')]['filter']){_0x41951e[_0x15f1('0x40')]=_[_0x15f1('0x5c')](_0x41951e['where'],{'$or':_['map'](_0x41951e[_0x15f1('0x39')],function(_0x2de538){var _0x10465c={};_0x10465c[_0x2de538]={'$like':'%'+_0x52bb4c[_0x15f1('0x37')][_0x15f1('0x5b')]+'%'};return _0x10465c;})});}_0x41951e=_[_0x15f1('0x5c')]({},_0x41951e,_0x52bb4c['options']);return _0xd1f730[_0x15f1('0x126')](_0x41951e);}})[_0x15f1('0x14')](function(_0x43b1de){if(_0x43b1de){_0x5b92e2=_0x43b1de['length'];if(!_0x52bb4c['query'][_0x15f1('0x3c')]('nolimit')){_0x41951e[_0x15f1('0x23')]=qs['limit'](_0x52bb4c['query'][_0x15f1('0x23')]);_0x41951e[_0x15f1('0x21')]=qs['offset'](_0x52bb4c[_0x15f1('0x37')][_0x15f1('0x21')]);}return _0xd1f730[_0x15f1('0x126')](_0x41951e);}})[_0x15f1('0x14')](function(_0x7f0fdc){if(_0x7f0fdc){return _0x7f0fdc?{'count':_0x5b92e2,'rows':_0x7f0fdc}:null;}})[_0x15f1('0x14')](respondWithResult(_0x469e82,null))[_0x15f1('0x46')](handleError(_0x469e82,null));};
\ No newline at end of file
+var _0x9a67=['ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','from','mapKey','Sequelize','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','Contacts','DESC','ChatApplication','Applications','account','applications','list','orderBy','priority','asc','ListId','contact','cf-connecting-ip','x-forwarded-for','first','firstName','lastName','x-real-port','browser','format','%s\x20%s','version','unknown','device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','messageId','created','autoclose','push','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','offline','files','CompanyId','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','server/files/templates/chatOfflineMessage.ejs','render','offlineMessageBody','ChatOfflineMessage','originalname','mimetype','server','attachments','offline-chat','basename','openNewInteraction','sequelize','Attachment','bulkCreate','MailServerOut','Smtp','CloudProvider','forwardOffline','SendMail','\x22%s\x22\x20<%s>','forwardOfflineAddress','offlineMessageSubject','toPairsIn','mapValues','subjectOffline','email','Chat','MailAccountId','NotifyMailAccount','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Contact','Tag','Tags','color','tag','getSnippet','interval','timezone','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','inspect','Interval','Intervals','getProactiveActions','../../config/license/util','custom','License','increment','all','some','readFileSync','utf8','remote','x-real-ip','connection','remoteAddress','referer','virtual','alignment','verticalAlignment','labelText','textColor','textButtonColor','hideWhenOffline','IntervalId','addApplications','Transaction','ISOLATION_LEVELS','READ_COMMITTED','finally','getApplications','addProactiveActions','ChatProactiveAction','getFields','online','onlineForm','items','fromKey','getOfflineMessages','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','bluebird','mustache','util','path','fs-extra','lodash','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./chatWebsite.socket','register','html-to-text','jayson/promise','client','http','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','update','get','ChatWebsites','UserProfileResource','destroy','stack','name','send','Pause','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','options','includeAll','include','findAll','rows','show','params','merge','find','create','body','role','user','UserProfileSection','userProfileId','autoAssociation','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','pick','removeDispositions','ids','addAnswer','getAnswers','CannedAnswer','removeAnswers','addLogo','sitepic','file','filename','addAvatar','agentAvatar','addCustomerAvatar','customerAvatar','systemAvatar','getLogo','root','server/files/images/logos/default_logo.svg','getLicense','isNil','join','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','existsSync','server/files/images/avatars/','getCustomerAvatar','showCustomerAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','headers','chat','CmContact'];(function(_0x18b0bb,_0x30b0f8){var _0x165fe6=function(_0x465663){while(--_0x465663){_0x18b0bb['push'](_0x18b0bb['shift']());}};_0x165fe6(++_0x30b0f8);}(_0x9a67,0x1cc));var _0x79a6=function(_0x29cfba,_0x28c40f){_0x29cfba=_0x29cfba-0x0;var _0x1f694c=_0x9a67[_0x29cfba];return _0x1f694c;};'use strict';var BPromise=require(_0x79a6('0x0'));var Mustache=require(_0x79a6('0x1'));var util=require(_0x79a6('0x2'));var path=require(_0x79a6('0x3'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x79a6('0x4'));var _=require(_0x79a6('0x5'));var querystring=require('querystring');var Redis=require(_0x79a6('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0x79a6('0x7'))(_0x79a6('0x8'));var config=require(_0x79a6('0x9'));var db=require(_0x79a6('0xa'))['db'];config[_0x79a6('0xb')]=_[_0x79a6('0xc')](config[_0x79a6('0xb')],{'host':_0x79a6('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x79a6('0xb')]));require(_0x79a6('0xe'))[_0x79a6('0xf')](socket);var htmlToText=require(_0x79a6('0x10'));var jayson=require(_0x79a6('0x11'));var client=jayson[_0x79a6('0x12')][_0x79a6('0x13')]({'port':0x232c});var client9002=jayson[_0x79a6('0x12')][_0x79a6('0x13')]({'port':0x232a});var client9003=jayson[_0x79a6('0x12')][_0x79a6('0x13')]({'port':0x232b});var client9001=jayson[_0x79a6('0x12')][_0x79a6('0x13')]({'port':0x2329});function respondWithRpcPromise(_0x1e27e3,_0x4ed1c0,_0x135eb7,_0x28de48){return new BPromise(function(_0x1a6da6,_0x2afaa1){var _0x65acab=_0x28de48||client;return _0x65acab[_0x79a6('0x14')](_0x1e27e3,_0x135eb7)[_0x79a6('0x15')](function(_0x40d872){logger[_0x79a6('0x16')](_0x79a6('0x17'),_0x4ed1c0,_0x79a6('0x18'));logger['debug'](_0x79a6('0x19'),_0x4ed1c0,_0x79a6('0x18'),JSON[_0x79a6('0x1a')](_0x40d872));if(_0x40d872[_0x79a6('0x1b')]){if(_0x40d872['error']['code']===0x1f4){logger[_0x79a6('0x1b')](_0x79a6('0x17'),_0x4ed1c0,_0x40d872[_0x79a6('0x1b')]['message']);return _0x2afaa1(_0x40d872[_0x79a6('0x1b')][_0x79a6('0x1c')]);}logger[_0x79a6('0x1b')]('ChatWebsite,\x20%s,\x20%s',_0x4ed1c0,_0x40d872[_0x79a6('0x1b')]['message']);return _0x1a6da6(_0x40d872[_0x79a6('0x1b')][_0x79a6('0x1c')]);}else{logger['info']('ChatWebsite,\x20%s,\x20%s',_0x4ed1c0,_0x79a6('0x18'));_0x1a6da6(_0x40d872['result'][_0x79a6('0x1c')]);}})[_0x79a6('0x1d')](function(_0xe0c8){logger[_0x79a6('0x1b')](_0x79a6('0x17'),_0x4ed1c0,_0xe0c8);_0x2afaa1(_0xe0c8);});});}function respondWithStatusCode(_0x5501e3,_0xa11b26){_0xa11b26=_0xa11b26||0xcc;return function(_0x4c87ee){if(_0x4c87ee){return _0x5501e3[_0x79a6('0x1e')](_0xa11b26);}return _0x5501e3[_0x79a6('0x1f')](_0xa11b26)[_0x79a6('0x20')]();};}function respondWithResult(_0x3eba76,_0x233507){_0x233507=_0x233507||0xc8;return function(_0x43e550){if(_0x43e550){return _0x3eba76[_0x79a6('0x1f')](_0x233507)[_0x79a6('0x21')](_0x43e550);}};}function respondWithFilteredResult(_0x3e7df3,_0x54bead){return function(_0x5168ae){if(_0x5168ae){var _0x19e708=typeof _0x54bead[_0x79a6('0x22')]===_0x79a6('0x23')&&typeof _0x54bead['limit']===_0x79a6('0x23');var _0x39640a=_0x5168ae[_0x79a6('0x24')];var _0x35acb6=_0x19e708?0x0:_0x54bead['offset'];var _0xa343d9=_0x19e708?_0x5168ae[_0x79a6('0x24')]:_0x54bead[_0x79a6('0x22')]+_0x54bead[_0x79a6('0x25')];var _0x39c8c3;if(_0xa343d9>=_0x39640a){_0xa343d9=_0x39640a;_0x39c8c3=0xc8;}else{_0x39c8c3=0xce;}_0x3e7df3[_0x79a6('0x1f')](_0x39c8c3);return _0x3e7df3['set'](_0x79a6('0x26'),_0x35acb6+'-'+_0xa343d9+'/'+_0x39640a)[_0x79a6('0x21')](_0x5168ae);}return null;};}function saveUpdates(_0x4a5861){return function(_0x5e1142){if(_0x5e1142){return _0x5e1142[_0x79a6('0x27')](_0x4a5861)['then'](function(_0x55961b){return _0x55961b;});}return null;};}function removeEntity(_0x1e7c68){return function(_0x14dcba){if(_0x14dcba){return _0x14dcba['destroy']()[_0x79a6('0x15')](function(){var _0x3acf4f=_0x14dcba[_0x79a6('0x28')]({'plain':!![]});var _0x4eebd6=_0x79a6('0x29');return db[_0x79a6('0x2a')][_0x79a6('0x2b')]({'where':{'type':_0x4eebd6,'resourceId':_0x3acf4f['id']}})[_0x79a6('0x15')](function(){return _0x14dcba;});})[_0x79a6('0x15')](function(){_0x1e7c68['status'](0xcc)[_0x79a6('0x20')]();});}};}function handleEntityNotFound(_0x202ad5){return function(_0x5f3ec9){if(!_0x5f3ec9){_0x202ad5[_0x79a6('0x1e')](0x194);}return _0x5f3ec9;};}function handleError(_0x1c4d34,_0xd0e318){_0xd0e318=_0xd0e318||0x1f4;return function(_0x4d9b95){logger[_0x79a6('0x1b')](_0x4d9b95[_0x79a6('0x2c')]);if(_0x4d9b95[_0x79a6('0x2d')]){delete _0x4d9b95['name'];}_0x1c4d34[_0x79a6('0x1f')](_0xd0e318)[_0x79a6('0x2e')](_0x4d9b95);};}exports['index']=function(_0x2372d4,_0x1ee019){var _0x41abaf={'include':[{'model':db[_0x79a6('0x2f')],'as':_0x79a6('0x30')}]},_0x9bbf95={},_0xb29391={'count':0x0,'rows':[]};var _0x52cbd7=_[_0x79a6('0x31')](db[_0x79a6('0x32')][_0x79a6('0x33')],function(_0x3f51a4){return{'name':_0x3f51a4[_0x79a6('0x34')],'type':_0x3f51a4[_0x79a6('0x35')][_0x79a6('0x36')]};});_0x9bbf95[_0x79a6('0x37')]=_[_0x79a6('0x31')](_0x52cbd7,'name');_0x9bbf95[_0x79a6('0x38')]=_[_0x79a6('0x39')](_0x2372d4[_0x79a6('0x38')]);_0x9bbf95[_0x79a6('0x3a')]=_[_0x79a6('0x3b')](_0x9bbf95[_0x79a6('0x37')],_0x9bbf95['query']);_0x41abaf[_0x79a6('0x3c')]=_[_0x79a6('0x3b')](_0x9bbf95[_0x79a6('0x37')],qs[_0x79a6('0x3d')](_0x2372d4['query'][_0x79a6('0x3d')]));_0x41abaf[_0x79a6('0x3c')]=_0x41abaf['attributes'][_0x79a6('0x3e')]?_0x41abaf[_0x79a6('0x3c')]:_0x9bbf95[_0x79a6('0x37')];if(!_0x2372d4[_0x79a6('0x38')][_0x79a6('0x3f')](_0x79a6('0x40'))){_0x41abaf['limit']=qs[_0x79a6('0x25')](_0x2372d4[_0x79a6('0x38')][_0x79a6('0x25')]);_0x41abaf['offset']=qs[_0x79a6('0x22')](_0x2372d4[_0x79a6('0x38')][_0x79a6('0x22')]);}_0x41abaf[_0x79a6('0x41')]=qs[_0x79a6('0x42')](_0x2372d4[_0x79a6('0x38')][_0x79a6('0x42')]);_0x41abaf[_0x79a6('0x43')]=qs['filters'](_['pick'](_0x2372d4[_0x79a6('0x38')],_0x9bbf95[_0x79a6('0x3a')]),_0x52cbd7);if(_0x2372d4[_0x79a6('0x38')][_0x79a6('0x44')]){_0x41abaf[_0x79a6('0x43')]=_['merge'](_0x41abaf['where'],{'$or':_[_0x79a6('0x31')](_0x52cbd7,function(_0x1d68d5){if(_0x1d68d5[_0x79a6('0x35')]!==_0x79a6('0x45')){var _0x9d0e5f={};_0x9d0e5f[_0x1d68d5[_0x79a6('0x2d')]]={'$like':'%'+_0x2372d4[_0x79a6('0x38')][_0x79a6('0x44')]+'%'};return _0x9d0e5f;}})});}_0x41abaf=_['merge']({},_0x41abaf,_0x2372d4[_0x79a6('0x46')]);var _0x4b489b={'where':_0x41abaf[_0x79a6('0x43')]};return db[_0x79a6('0x32')][_0x79a6('0x24')](_0x4b489b)['then'](function(_0x250b14){_0xb29391[_0x79a6('0x24')]=_0x250b14;if(_0x2372d4['query'][_0x79a6('0x47')]){_0x41abaf[_0x79a6('0x48')]=[{'all':!![]}];}return db['ChatWebsite'][_0x79a6('0x49')](_0x41abaf);})[_0x79a6('0x15')](function(_0x222ce0){_0xb29391[_0x79a6('0x4a')]=_0x222ce0;return _0xb29391;})[_0x79a6('0x15')](respondWithFilteredResult(_0x1ee019,_0x41abaf))[_0x79a6('0x1d')](handleError(_0x1ee019,null));};exports[_0x79a6('0x4b')]=function(_0x27f5d9,_0x85910a){var _0x1cf6b0={'raw':![],'where':{'id':_0x27f5d9[_0x79a6('0x4c')]['id']},'include':[{'model':db[_0x79a6('0x2f')],'as':'mandatoryDispositionPause'}]},_0x462e24={};_0x462e24[_0x79a6('0x37')]=_['keys'](db[_0x79a6('0x32')]['rawAttributes']);_0x462e24[_0x79a6('0x38')]=_[_0x79a6('0x39')](_0x27f5d9[_0x79a6('0x38')]);_0x462e24[_0x79a6('0x3a')]=_[_0x79a6('0x3b')](_0x462e24[_0x79a6('0x37')],_0x462e24[_0x79a6('0x38')]);_0x1cf6b0[_0x79a6('0x3c')]=_['intersection'](_0x462e24['model'],qs[_0x79a6('0x3d')](_0x27f5d9[_0x79a6('0x38')][_0x79a6('0x3d')]));_0x1cf6b0['attributes']=_0x1cf6b0[_0x79a6('0x3c')][_0x79a6('0x3e')]?_0x1cf6b0[_0x79a6('0x3c')]:_0x462e24[_0x79a6('0x37')];if(_0x27f5d9[_0x79a6('0x38')]['includeAll']){_0x1cf6b0[_0x79a6('0x48')]=[{'all':!![]}];}_0x1cf6b0=_[_0x79a6('0x4d')]({},_0x1cf6b0,_0x27f5d9[_0x79a6('0x46')]);return db[_0x79a6('0x32')][_0x79a6('0x4e')](_0x1cf6b0)[_0x79a6('0x15')](handleEntityNotFound(_0x85910a,null))[_0x79a6('0x15')](respondWithResult(_0x85910a,null))['catch'](handleError(_0x85910a,null));};exports[_0x79a6('0x4f')]=function(_0x26c2e4,_0x46e3b7){return db[_0x79a6('0x32')][_0x79a6('0x4f')](_0x26c2e4[_0x79a6('0x50')],{})[_0x79a6('0x15')](function(_0x5484f0){var _0x34c585=_0x26c2e4['user'][_0x79a6('0x28')]({'plain':!![]});if(!_0x34c585)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x34c585[_0x79a6('0x51')]===_0x79a6('0x52')){var _0x4f3166=_0x5484f0[_0x79a6('0x28')]({'plain':!![]});var _0x22425a=_0x79a6('0x29');return db[_0x79a6('0x53')][_0x79a6('0x4e')]({'where':{'name':_0x22425a,'userProfileId':_0x34c585[_0x79a6('0x54')]},'raw':!![]})[_0x79a6('0x15')](function(_0xeccc56){if(_0xeccc56&&_0xeccc56[_0x79a6('0x55')]===0x0){return db[_0x79a6('0x2a')]['create']({'name':_0x4f3166[_0x79a6('0x2d')],'resourceId':_0x4f3166['id'],'type':_0xeccc56['name'],'sectionId':_0xeccc56['id']},{})['then'](function(){return _0x5484f0;});}else{return _0x5484f0;}})[_0x79a6('0x1d')](function(_0x28fb81){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x28fb81);throw _0x28fb81;});}return _0x5484f0;})['then'](respondWithResult(_0x46e3b7,0xc9))[_0x79a6('0x1d')](handleError(_0x46e3b7,null));};exports['update']=function(_0x2a49ca,_0x11df2f){if(_0x2a49ca[_0x79a6('0x50')]['id']){delete _0x2a49ca[_0x79a6('0x50')]['id'];}return db[_0x79a6('0x32')]['find']({'where':{'id':_0x2a49ca[_0x79a6('0x4c')]['id']},'include':[{'model':db[_0x79a6('0x2f')],'as':_0x79a6('0x30')}]})[_0x79a6('0x15')](handleEntityNotFound(_0x11df2f,null))['then'](saveUpdates(_0x2a49ca[_0x79a6('0x50')],null))[_0x79a6('0x15')](respondWithResult(_0x11df2f,null))[_0x79a6('0x1d')](handleError(_0x11df2f,null));};exports[_0x79a6('0x2b')]=function(_0x1f8d95,_0x350f42){return db['ChatWebsite'][_0x79a6('0x4e')]({'where':{'id':_0x1f8d95[_0x79a6('0x4c')]['id']}})[_0x79a6('0x15')](handleEntityNotFound(_0x350f42,null))[_0x79a6('0x15')](removeEntity(_0x350f42,null))[_0x79a6('0x1d')](handleError(_0x350f42,null));};exports[_0x79a6('0x56')]=function(_0x34cc00,_0x236426){return db['ChatWebsite'][_0x79a6('0x56')]()[_0x79a6('0x15')](respondWithResult(_0x236426,null))[_0x79a6('0x1d')](handleError(_0x236426,null));};exports[_0x79a6('0x57')]=function(_0x41283f,_0x11e191){if(_0x41283f[_0x79a6('0x50')]['id']){delete _0x41283f['body']['id'];}return db[_0x79a6('0x32')]['find']({'where':{'id':_0x41283f[_0x79a6('0x4c')]['id']}})[_0x79a6('0x15')](handleEntityNotFound(_0x11e191,null))[_0x79a6('0x15')](function(_0x3b0d24){if(_0x3b0d24){_0x41283f[_0x79a6('0x50')][_0x79a6('0x58')]=_0x3b0d24['id'];return db[_0x79a6('0x59')][_0x79a6('0x4f')](_0x41283f[_0x79a6('0x50')]);}})[_0x79a6('0x15')](respondWithResult(_0x11e191,null))['catch'](handleError(_0x11e191,null));};exports[_0x79a6('0x5a')]=function(_0x45f350,_0x46c400){var _0x522916={'raw':![],'where':{}};var _0x1db950={};var _0x340ad0={'count':0x0,'rows':[]};return db[_0x79a6('0x32')][_0x79a6('0x5b')]({'where':{'id':_0x45f350['params']['id']}})[_0x79a6('0x15')](handleEntityNotFound(_0x46c400,null))[_0x79a6('0x15')](function(_0x19f928){if(_0x19f928){_0x1db950[_0x79a6('0x37')]=_[_0x79a6('0x39')](db[_0x79a6('0x59')][_0x79a6('0x33')]);_0x1db950[_0x79a6('0x38')]=_[_0x79a6('0x39')](_0x45f350[_0x79a6('0x38')]);_0x1db950[_0x79a6('0x3a')]=_[_0x79a6('0x3b')](_0x1db950['model'],_0x1db950['query']);_0x522916['attributes']=_[_0x79a6('0x3b')](_0x1db950['model'],qs[_0x79a6('0x3d')](_0x45f350[_0x79a6('0x38')]['fields']));_0x522916[_0x79a6('0x3c')]=_0x522916[_0x79a6('0x3c')][_0x79a6('0x3e')]?_0x522916['attributes']:_0x1db950[_0x79a6('0x37')];if(!_0x45f350['query'][_0x79a6('0x3f')]('nolimit')){_0x522916['limit']=qs['limit'](_0x45f350['query']['limit']);_0x522916['offset']=qs[_0x79a6('0x22')](_0x45f350[_0x79a6('0x38')][_0x79a6('0x22')]);}_0x522916[_0x79a6('0x41')]=qs[_0x79a6('0x42')](_0x45f350[_0x79a6('0x38')][_0x79a6('0x42')]);_0x522916['where']=qs['filters'](_[_0x79a6('0x5c')](_0x45f350[_0x79a6('0x38')],_0x1db950[_0x79a6('0x3a')]));_0x522916[_0x79a6('0x43')][_0x79a6('0x58')]=_0x19f928['id'];if(_0x45f350[_0x79a6('0x38')][_0x79a6('0x44')]){_0x522916['where']=_['merge'](_0x522916['where'],{'$or':_[_0x79a6('0x31')](_0x522916[_0x79a6('0x3c')],function(_0x89cae7){var _0xe8db65={};_0xe8db65[_0x89cae7]={'$like':'%'+_0x45f350[_0x79a6('0x38')][_0x79a6('0x44')]+'%'};return _0xe8db65;})});}_0x522916=_[_0x79a6('0x4d')]({},_0x522916,_0x45f350[_0x79a6('0x46')]);return db['Disposition'][_0x79a6('0x24')]({'where':_0x522916['where']})[_0x79a6('0x15')](function(_0x4f82a0){_0x340ad0[_0x79a6('0x24')]=_0x4f82a0;if(_0x45f350[_0x79a6('0x38')][_0x79a6('0x47')]){_0x522916[_0x79a6('0x48')]=[{'all':!![]}];}return db[_0x79a6('0x59')]['findAll'](_0x522916);})[_0x79a6('0x15')](function(_0x5f3d06){_0x340ad0[_0x79a6('0x4a')]=_0x5f3d06;return _0x340ad0;});}})[_0x79a6('0x15')](respondWithFilteredResult(_0x46c400,_0x522916))[_0x79a6('0x1d')](handleError(_0x46c400,null));};exports['removeDispositions']=function(_0x42ccb0,_0x4d2e56){return db[_0x79a6('0x32')][_0x79a6('0x4e')]({'where':{'id':_0x42ccb0[_0x79a6('0x4c')]['id']}})[_0x79a6('0x15')](handleEntityNotFound(_0x4d2e56,null))[_0x79a6('0x15')](function(_0x1dbd2c){if(_0x1dbd2c){return _0x1dbd2c[_0x79a6('0x5d')](_0x42ccb0[_0x79a6('0x38')][_0x79a6('0x5e')]);}})[_0x79a6('0x15')](respondWithStatusCode(_0x4d2e56,null))['catch'](handleError(_0x4d2e56,null));};exports[_0x79a6('0x5f')]=function(_0x56498f,_0x20b655){if(_0x56498f['body']['id']){delete _0x56498f[_0x79a6('0x50')]['id'];}return db['ChatWebsite'][_0x79a6('0x4e')]({'where':{'id':_0x56498f['params']['id']}})['then'](handleEntityNotFound(_0x20b655,null))[_0x79a6('0x15')](function(_0x34c785){if(_0x34c785){_0x56498f[_0x79a6('0x50')]['ChatWebsiteId']=_0x34c785['id'];return db['CannedAnswer'][_0x79a6('0x4f')](_0x56498f[_0x79a6('0x50')]);}})[_0x79a6('0x15')](respondWithResult(_0x20b655,null))[_0x79a6('0x1d')](handleError(_0x20b655,null));};exports[_0x79a6('0x60')]=function(_0x1db2cb,_0x4279a3){var _0xcf8d63={'raw':![],'where':{}};var _0x2d91a9={};var _0x172af={'count':0x0,'rows':[]};return db[_0x79a6('0x32')][_0x79a6('0x5b')]({'where':{'id':_0x1db2cb['params']['id']}})['then'](handleEntityNotFound(_0x4279a3,null))[_0x79a6('0x15')](function(_0x227b48){if(_0x227b48){_0x2d91a9['model']=_[_0x79a6('0x39')](db[_0x79a6('0x61')]['rawAttributes']);_0x2d91a9[_0x79a6('0x38')]=_[_0x79a6('0x39')](_0x1db2cb['query']);_0x2d91a9[_0x79a6('0x3a')]=_[_0x79a6('0x3b')](_0x2d91a9[_0x79a6('0x37')],_0x2d91a9[_0x79a6('0x38')]);_0xcf8d63[_0x79a6('0x3c')]=_[_0x79a6('0x3b')](_0x2d91a9[_0x79a6('0x37')],qs['fields'](_0x1db2cb[_0x79a6('0x38')][_0x79a6('0x3d')]));_0xcf8d63[_0x79a6('0x3c')]=_0xcf8d63[_0x79a6('0x3c')][_0x79a6('0x3e')]?_0xcf8d63[_0x79a6('0x3c')]:_0x2d91a9[_0x79a6('0x37')];if(!_0x1db2cb[_0x79a6('0x38')]['hasOwnProperty'](_0x79a6('0x40'))){_0xcf8d63[_0x79a6('0x25')]=qs[_0x79a6('0x25')](_0x1db2cb[_0x79a6('0x38')][_0x79a6('0x25')]);_0xcf8d63[_0x79a6('0x22')]=qs['offset'](_0x1db2cb[_0x79a6('0x38')][_0x79a6('0x22')]);}_0xcf8d63[_0x79a6('0x41')]=qs[_0x79a6('0x42')](_0x1db2cb[_0x79a6('0x38')]['sort']);_0xcf8d63[_0x79a6('0x43')]=qs[_0x79a6('0x3a')](_[_0x79a6('0x5c')](_0x1db2cb[_0x79a6('0x38')],_0x2d91a9[_0x79a6('0x3a')]));_0xcf8d63[_0x79a6('0x43')][_0x79a6('0x58')]=_0x227b48['id'];if(_0x1db2cb[_0x79a6('0x38')][_0x79a6('0x44')]){_0xcf8d63[_0x79a6('0x43')]=_[_0x79a6('0x4d')](_0xcf8d63[_0x79a6('0x43')],{'$or':_['map'](_0xcf8d63[_0x79a6('0x3c')],function(_0x1f6405){var _0x1fbb55={};_0x1fbb55[_0x1f6405]={'$like':'%'+_0x1db2cb[_0x79a6('0x38')][_0x79a6('0x44')]+'%'};return _0x1fbb55;})});}_0xcf8d63=_['merge']({},_0xcf8d63,_0x1db2cb[_0x79a6('0x46')]);return db[_0x79a6('0x61')][_0x79a6('0x24')]({'where':_0xcf8d63[_0x79a6('0x43')]})['then'](function(_0x181962){_0x172af[_0x79a6('0x24')]=_0x181962;if(_0x1db2cb['query'][_0x79a6('0x47')]){_0xcf8d63[_0x79a6('0x48')]=[{'all':!![]}];}return db[_0x79a6('0x61')][_0x79a6('0x49')](_0xcf8d63);})[_0x79a6('0x15')](function(_0x241b23){_0x172af[_0x79a6('0x4a')]=_0x241b23;return _0x172af;});}})['then'](respondWithFilteredResult(_0x4279a3,_0xcf8d63))[_0x79a6('0x1d')](handleError(_0x4279a3,null));};exports['removeAnswers']=function(_0x1d04ed,_0x119259){return db[_0x79a6('0x32')][_0x79a6('0x4e')]({'where':{'id':_0x1d04ed[_0x79a6('0x4c')]['id']}})['then'](handleEntityNotFound(_0x119259,null))[_0x79a6('0x15')](function(_0x3a8e2a){if(_0x3a8e2a){return _0x3a8e2a[_0x79a6('0x62')](_0x1d04ed[_0x79a6('0x38')]['ids']);}})[_0x79a6('0x15')](respondWithStatusCode(_0x119259,null))[_0x79a6('0x1d')](handleError(_0x119259,null));};exports[_0x79a6('0x63')]=function(_0x1d2096,_0x3c29a6){_0x1d2096[_0x79a6('0x50')][_0x79a6('0x64')]=_0x1d2096[_0x79a6('0x65')][_0x79a6('0x66')];return db[_0x79a6('0x32')][_0x79a6('0x4e')]({'where':{'id':_0x1d2096[_0x79a6('0x4c')]['id']}})[_0x79a6('0x15')](handleEntityNotFound(_0x3c29a6,null))[_0x79a6('0x15')](saveUpdates(_0x1d2096[_0x79a6('0x50')],null))[_0x79a6('0x15')](respondWithResult(_0x3c29a6,null))['catch'](handleError(_0x3c29a6,null));};exports[_0x79a6('0x67')]=function(_0x312692,_0x1c13c3){_0x312692[_0x79a6('0x50')][_0x79a6('0x68')]=_0x312692['file']['filename'];return db[_0x79a6('0x32')][_0x79a6('0x4e')]({'where':{'id':_0x312692['params']['id']}})[_0x79a6('0x15')](handleEntityNotFound(_0x1c13c3,null))['then'](saveUpdates(_0x312692[_0x79a6('0x50')],null))[_0x79a6('0x15')](respondWithResult(_0x1c13c3,null))['catch'](handleError(_0x1c13c3,null));};exports[_0x79a6('0x69')]=function(_0x2f326a,_0x326b0){_0x2f326a[_0x79a6('0x50')][_0x79a6('0x6a')]=_0x2f326a['file'][_0x79a6('0x66')];return db[_0x79a6('0x32')]['find']({'where':{'id':_0x2f326a[_0x79a6('0x4c')]['id']}})[_0x79a6('0x15')](handleEntityNotFound(_0x326b0,null))[_0x79a6('0x15')](saveUpdates(_0x2f326a[_0x79a6('0x50')],null))['then'](respondWithResult(_0x326b0,null))[_0x79a6('0x1d')](handleError(_0x326b0,null));};exports['addSystemAvatar']=function(_0x557e05,_0x3941d7){_0x557e05[_0x79a6('0x50')][_0x79a6('0x6b')]=_0x557e05['file'][_0x79a6('0x66')];return db[_0x79a6('0x32')][_0x79a6('0x4e')]({'where':{'id':_0x557e05[_0x79a6('0x4c')]['id']}})[_0x79a6('0x15')](handleEntityNotFound(_0x3941d7,null))[_0x79a6('0x15')](saveUpdates(_0x557e05[_0x79a6('0x50')],null))['then'](respondWithResult(_0x3941d7,null))[_0x79a6('0x1d')](handleError(_0x3941d7,null));};exports[_0x79a6('0x6c')]=function(_0x5ca64a,_0x505c23){var _0x2e1669=path['join'](config[_0x79a6('0x6d')],_0x79a6('0x6e'));var _0x2cda60={'where':{'id':_0x5ca64a['params']['id']},'attributes':['id',_0x79a6('0x64')],'raw':!![]};var _0xc2ab1c=![];return require('../../config/license/util')[_0x79a6('0x6f')]()[_0x79a6('0x15')](function(_0xc2c916){if(_0xc2c916){_0xc2ab1c=_0xc2c916['custom'];}})[_0x79a6('0x15')](function(){return db['ChatWebsite'][_0x79a6('0x4e')](_0x2cda60);})[_0x79a6('0x15')](handleEntityNotFound(_0x505c23,null))['then'](function(_0x5d0758){if(_0x5d0758){if(!_[_0x79a6('0x70')](_0x5d0758[_0x79a6('0x64')])){if(fs['existsSync'](path[_0x79a6('0x71')](config['root'],'server/files/images/logos/',_0x5d0758[_0x79a6('0x64')]))&&_0xc2ab1c){_0x2e1669=path['join'](config[_0x79a6('0x6d')],_0x79a6('0x72'),_0x5d0758['sitepic']);}}return _0x505c23[_0x79a6('0x73')](_0x2e1669);}})[_0x79a6('0x1d')](handleError(_0x505c23,null));};exports[_0x79a6('0x74')]=function(_0x35b567,_0x1d9395){var _0x251f06=path[_0x79a6('0x71')](config[_0x79a6('0x6d')],_0x79a6('0x75'));var _0x654438={'where':{'id':_0x35b567[_0x79a6('0x4c')]['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db[_0x79a6('0x32')][_0x79a6('0x4e')](_0x654438)['then'](handleEntityNotFound(_0x1d9395,null))[_0x79a6('0x15')](function(_0x2f6c35){if(_0x2f6c35){if(!_['isNil'](_0x2f6c35[_0x79a6('0x68')])){if(fs[_0x79a6('0x76')](path['join'](config[_0x79a6('0x6d')],_0x79a6('0x77'),_0x2f6c35['agentAvatar']))){_0x251f06=path[_0x79a6('0x71')](config[_0x79a6('0x6d')],_0x79a6('0x77'),_0x2f6c35[_0x79a6('0x68')]);}}return _0x1d9395[_0x79a6('0x73')](_0x251f06);}})[_0x79a6('0x1d')](handleError(_0x1d9395,null));};exports[_0x79a6('0x78')]=function(_0x46a86a,_0x2fe26f){var _0x38a76c=path['join'](config[_0x79a6('0x6d')],'server/files/images/avatars/customer_avatar.png');var _0x22af00={'where':{'id':_0x46a86a[_0x79a6('0x4c')]['id']},'attributes':['id','customerAvatar',_0x79a6('0x79')],'raw':!![]};return db[_0x79a6('0x32')][_0x79a6('0x4e')](_0x22af00)[_0x79a6('0x15')](handleEntityNotFound(_0x2fe26f,null))['then'](function(_0x3c2dca){if(_0x3c2dca){if(!_[_0x79a6('0x70')](_0x3c2dca[_0x79a6('0x6a')])){if(fs[_0x79a6('0x76')](path[_0x79a6('0x71')](config[_0x79a6('0x6d')],_0x79a6('0x77'),_0x3c2dca['customerAvatar']))&&_0x3c2dca['showCustomerAvatar']){_0x38a76c=path['join'](config[_0x79a6('0x6d')],_0x79a6('0x77'),_0x3c2dca[_0x79a6('0x6a')]);}}return _0x2fe26f['download'](_0x38a76c);}})['catch'](handleError(_0x2fe26f,null));};exports['getSystemAvatar']=function(_0x234b4f,_0x25cc12){var _0x58beef=path[_0x79a6('0x71')](config[_0x79a6('0x6d')],_0x79a6('0x7a'));var _0x1e3260={'where':{'id':_0x234b4f[_0x79a6('0x4c')]['id']},'attributes':['id',_0x79a6('0x6b')],'raw':!![]};return db[_0x79a6('0x32')][_0x79a6('0x4e')](_0x1e3260)['then'](handleEntityNotFound(_0x25cc12,null))[_0x79a6('0x15')](function(_0x478106){if(_0x478106){if(!_[_0x79a6('0x70')](_0x478106[_0x79a6('0x6b')])){if(fs['existsSync'](path[_0x79a6('0x71')](config['root'],_0x79a6('0x77'),_0x478106[_0x79a6('0x6b')]))){_0x58beef=path['join'](config[_0x79a6('0x6d')],_0x79a6('0x77'),_0x478106[_0x79a6('0x6b')]);}}return _0x25cc12['download'](_0x58beef);}})[_0x79a6('0x1d')](handleError(_0x25cc12,null));};exports[_0x79a6('0x7b')]=function(_0x55b62b,_0x5e8a56){var _0x155223=require(_0x79a6('0x7c'));var _0x3f5d3f=new _0x155223();var _0x4d2d8d=_0x3f5d3f['setUA'](_0x55b62b[_0x79a6('0x7d')]['user-agent'])['getResult']();var _0x561cf1={'body':_0x55b62b[_0x79a6('0x50')],'channel':_0x79a6('0x7e')};var _0x181015=[];var _0x5645aa=[];var _0xe98e15={};var _0x1d81ee=![];return db[_0x79a6('0x7f')]['describe']()[_0x79a6('0x15')](function(_0xb37c47){if(!_0xb37c47){throw new db['Sequelize'][(_0x79a6('0x80'))](_0x79a6('0x81'));}_0x181015=_[_0x79a6('0x82')](_[_0x79a6('0x39')](_0xb37c47),[_0x79a6('0x83'),_0x79a6('0x84')]);_0x5645aa=_[_0x79a6('0x82')](_[_0x79a6('0x39')](_0xb37c47),['createdAt',_0x79a6('0x84'),'CompanyId','ListId']);if(_0x55b62b['body']['id']){delete _0x55b62b['body']['id'];}if(_[_0x79a6('0x70')](_0x55b62b['body'][_0x79a6('0x85')])){throw new db['Sequelize'][(_0x79a6('0x80'))]('from\x20is\x20mandatory');}if(_[_0x79a6('0x70')](_0x55b62b[_0x79a6('0x50')][_0x79a6('0x50')])||_0x55b62b['body']['body']===''){throw new db['Sequelize'][(_0x79a6('0x80'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x79a6('0x70')](_0x55b62b[_0x79a6('0x50')][_0x79a6('0x86')])){throw new db['Sequelize'][(_0x79a6('0x80'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5645aa);}if(!_['includes'](_0x5645aa,_0x55b62b['body']['mapKey'])){throw new db[(_0x79a6('0x87'))][(_0x79a6('0x80'))](_0x79a6('0x88')+_0x5645aa);}_0xe98e15[_0x55b62b[_0x79a6('0x50')]['mapKey']]=_0x55b62b['body']['from'];})['then'](function(){return db[_0x79a6('0x32')][_0x79a6('0x4e')]({'where':{'id':_0x55b62b[_0x79a6('0x4c')]['id']},'include':[{'model':db[_0x79a6('0x89')],'as':_0x79a6('0x8a'),'include':[{'model':db[_0x79a6('0x7f')],'as':_0x79a6('0x8b'),'where':_0xe98e15,'limit':0x1,'order':[[_0x79a6('0x84'),_0x79a6('0x8c')]]}]},{'model':db[_0x79a6('0x8d')],'as':_0x79a6('0x8e')}]});})[_0x79a6('0x15')](handleEntityNotFound(_0x5e8a56,null))[_0x79a6('0x15')](function(_0x43c166){if(_0x43c166&&_0x43c166[_0x79a6('0x8a')]){_0x561cf1[_0x79a6('0x8f')]=_0x43c166;_0x561cf1[_0x79a6('0x90')]=_0x43c166[_0x79a6('0x8e')];_0x561cf1[_0x79a6('0x91')]=_0x43c166[_0x79a6('0x8a')];_0x561cf1['applications']=_[_0x79a6('0x92')](_0x561cf1[_0x79a6('0x90')],[_0x79a6('0x93')],[_0x79a6('0x94')]);if(_0x561cf1['account'][_0x79a6('0x8e')]){delete _0x561cf1[_0x79a6('0x8f')][_0x79a6('0x8e')];}if(_0x561cf1[_0x79a6('0x8f')][_0x79a6('0x8a')]&&_0x561cf1[_0x79a6('0x8f')][_0x79a6('0x8a')][_0x79a6('0x8b')][_0x79a6('0x3e')]){return _0x561cf1['account'][_0x79a6('0x8a')]['Contacts'][0x0];}var _0x6802b8=_[_0x79a6('0xc')](_0x55b62b[_0x79a6('0x50')],{'firstName':_0x55b62b['body']['from'],'ListId':_0x43c166[_0x79a6('0x95')]});_0x6802b8[_0x55b62b[_0x79a6('0x50')]['mapKey']]=_0x55b62b[_0x79a6('0x50')]['from'];return db['CmContact']['create'](_0x6802b8,{'fields':_0x181015,'raw':!![]});}})[_0x79a6('0x15')](handleEntityNotFound(_0x5e8a56,null))[_0x79a6('0x15')](function(_0x37e78e){_0x561cf1[_0x79a6('0x96')]=_0x37e78e;var _0x2ba1ad=_0x55b62b[_0x79a6('0x50')]['customerIp'];if(_0x55b62b['headers']['cf-connecting-ip']){_0x2ba1ad=_0x55b62b[_0x79a6('0x7d')][_0x79a6('0x97')];}else if(_0x55b62b['headers'][_0x79a6('0x98')]){_0x2ba1ad=_[_0x79a6('0x99')](_0x55b62b[_0x79a6('0x7d')][_0x79a6('0x98')]['split'](','));}if(_0x37e78e){var _0x2cc68e={'ContactId':_0x37e78e['id'],'ChatWebsiteId':_0x55b62b[_0x79a6('0x4c')]['id'],'from':(_0x37e78e[_0x79a6('0x9a')]||'')+'\x20'+(_0x37e78e[_0x79a6('0x9b')]||''),'customerIp':_0x2ba1ad,'customerPort':_0x55b62b[_0x79a6('0x7d')][_0x79a6('0x9c')]?_0x55b62b[_0x79a6('0x7d')][_0x79a6('0x9c')]:null,'referer':_0x55b62b[_0x79a6('0x50')]['referer'],'browserName':_0x4d2d8d[_0x79a6('0x9d')][_0x79a6('0x2d')]&&_0x4d2d8d[_0x79a6('0x9d')]['version']?util[_0x79a6('0x9e')](_0x79a6('0x9f'),_0x4d2d8d['browser']['name'],_0x4d2d8d['browser'][_0x79a6('0xa0')]):_0x79a6('0xa1'),'browserVersion':_0x4d2d8d[_0x79a6('0x9d')][_0x79a6('0xa0')]||_0x79a6('0xa1'),'osName':util[_0x79a6('0x9e')](_0x79a6('0x9f'),_0x4d2d8d['os'][_0x79a6('0x2d')],_0x4d2d8d['os']['version']),'osVersion':_0x4d2d8d['os'][_0x79a6('0xa0')],'deviceModel':_0x4d2d8d['device'][_0x79a6('0x37')]&&_0x4d2d8d[_0x79a6('0xa2')][_0x79a6('0xa3')]?util['format'](_0x79a6('0xa4'),_0x4d2d8d[_0x79a6('0xa2')][_0x79a6('0x37')],_0x4d2d8d['device'][_0x79a6('0xa3')],_0x4d2d8d[_0x79a6('0xa2')][_0x79a6('0x35')]):null,'deviceVendor':_0x4d2d8d[_0x79a6('0xa2')][_0x79a6('0xa3')],'deviceType':_0x4d2d8d[_0x79a6('0xa2')][_0x79a6('0x35')],'formData':JSON[_0x79a6('0x1a')](_0x55b62b[_0x79a6('0x50')])};var _0x2843af={'ChatWebsiteId':_0x55b62b[_0x79a6('0x4c')]['id'],'closed':![]};if(_0x55b62b[_0x79a6('0x50')]['threadId']){_0x2843af[_0x79a6('0xa5')]=_0x55b62b[_0x79a6('0x50')][_0x79a6('0xa5')];return db[_0x79a6('0xa6')][_0x79a6('0x4e')]({'where':_0x2843af})[_0x79a6('0x15')](function(_0x60dcc2){if(_0x60dcc2){return[_0x60dcc2,![]];}_0x2cc68e['threadId']=_0x55b62b[_0x79a6('0x50')][_0x79a6('0xa5')];_0x2cc68e['externalUrl']=_0x55b62b[_0x79a6('0x50')][_0x79a6('0xa7')];return db[_0x79a6('0xa6')]['create'](_0x2cc68e)[_0x79a6('0x15')](function(_0x1249de){return[_0x1249de,!![]];});});}_0x2843af[_0x79a6('0xa8')]=_0x37e78e['id'];if(_0x55b62b[_0x79a6('0x50')][_0x79a6('0xa9')]&&_0x55b62b['body'][_0x79a6('0xa9')]['id']){_0x2843af['id']=_0x55b62b[_0x79a6('0x50')][_0x79a6('0xa9')]['id'];return db[_0x79a6('0xa6')]['find']({'where':_0x2843af})[_0x79a6('0x15')](function(_0x4ff395){if(_0x4ff395){return[_0x4ff395,![]];}return db[_0x79a6('0xa6')][_0x79a6('0x4f')](_0x2cc68e)[_0x79a6('0x15')](function(_0x1bf16b){return[_0x1bf16b,!![]];});});}return db[_0x79a6('0xa6')][_0x79a6('0x4f')](_0x2cc68e)[_0x79a6('0x15')](function(_0x1388d1){return[_0x1388d1,!![]];});}})[_0x79a6('0xaa')](function(_0x7fd9a3,_0x107859){if(_0x7fd9a3){_0x1d81ee=_0x107859;if(!_0x107859){var _0x2b7f08={'from':(_0x561cf1['contact'][_0x79a6('0x9a')]||'')+'\x20'+(_0x561cf1[_0x79a6('0x96')][_0x79a6('0x9b')]||'')};if(_0x55b62b['body'][_0x79a6('0xa5')]&&_0x55b62b[_0x79a6('0x50')][_0x79a6('0xab')]&&_0x55b62b['body'][_0x79a6('0xa5')]!=_0x55b62b[_0x79a6('0x50')]['messageId']){_0x2b7f08[_0x79a6('0xa5')]=_0x55b62b[_0x79a6('0x50')][_0x79a6('0xab')];}return _0x7fd9a3['update'](_0x2b7f08);}else{return _0x7fd9a3;}}})[_0x79a6('0x15')](function(_0x31f51a){_0x561cf1['interaction']=_0x31f51a[_0x79a6('0x28')]({'plain':!![]});_0x561cf1[_0x79a6('0xa9')][_0x79a6('0xac')]=_0x1d81ee;if(_0x561cf1[_0x79a6('0xa9')][_0x79a6('0xac')]){if(_0x561cf1[_0x79a6('0x8f')][_0x79a6('0xad')]){_0x561cf1[_0x79a6('0x90')][_0x79a6('0xae')]({'id':0x0,'priority':_0x561cf1[_0x79a6('0x90')][_0x79a6('0x3e')]+0x1,'app':'close','appdata':_0x79a6('0xaf'),'interval':_0x79a6('0xb0')});}}return db[_0x79a6('0xb1')][_0x79a6('0x4f')]({'body':_0x55b62b[_0x79a6('0x50')]['body'],'ChatWebsiteId':_0x55b62b[_0x79a6('0x4c')]['id'],'ChatInteractionId':_0x31f51a['id'],'direction':'in','ContactId':_0x561cf1['contact']['id'],'AttachmentId':_0x55b62b['body'][_0x79a6('0xb2')]});})[_0x79a6('0x15')](function(_0x204488){_0x561cf1[_0x79a6('0x1c')]=_0x204488;if(_0x561cf1[_0x79a6('0xa9')][_0x79a6('0xb3')]){return db[_0x79a6('0xb4')][_0x79a6('0x4e')]({'attributes':['id',_0x79a6('0x2d')],'where':{'id':_0x561cf1['interaction'][_0x79a6('0xb3')]}})[_0x79a6('0x15')](function(_0x276f4e){if(_0x276f4e){_0x561cf1[_0x79a6('0x90')][_0x79a6('0xb5')]({'id':0x0,'priority':0x0,'app':_0x79a6('0xb6'),'appdata':_0x276f4e[_0x79a6('0x2d')]+','+(_0x561cf1[_0x79a6('0x8f')][_0x79a6('0xb7')]||0xa),'interval':_0x79a6('0xb0')});_0x561cf1[_0x79a6('0xb8')]=!![];}return respondWithRpcPromise(_0x79a6('0xb9'),_0x79a6('0xba'),_0x561cf1);});}return respondWithRpcPromise('Start','startRouting',_0x561cf1);})[_0x79a6('0x15')](function(_0x2d8ed4){respondWithRpcPromise('EventManager',_0x79a6('0xbb'),{'event':_0x79a6('0x7b'),'message':_0x2d8ed4},client9002);return _0x2d8ed4;})[_0x79a6('0x15')](respondWithResult(_0x5e8a56,null))[_0x79a6('0x1d')](handleError(_0x5e8a56,null));};exports[_0x79a6('0xbc')]=function(_0x4494ce,_0x76b152){var _0x12e3e7,_0xf23e3a,_0x14ee29;var _0xce85f=[];var _0x1acd90={};var _0xe0ca4b=_0x4494ce[_0x79a6('0xbd')]||[];var _0x825ed2=[];var _0x199bd2;return db[_0x79a6('0x7f')][_0x79a6('0x56')]()[_0x79a6('0x15')](function(_0x1a6578){if(!_0x1a6578){throw new db[(_0x79a6('0x87'))][(_0x79a6('0x80'))](_0x79a6('0x81'));}_0xce85f=_[_0x79a6('0x82')](_[_0x79a6('0x39')](_0x1a6578),[_0x79a6('0x83'),'updatedAt',_0x79a6('0xbe'),_0x79a6('0x95')]);if(_0x4494ce[_0x79a6('0x50')]['id']){delete _0x4494ce[_0x79a6('0x50')]['id'];}if(_[_0x79a6('0x70')](_0x4494ce['body'][_0x79a6('0x85')])){throw _0x76b152[_0x79a6('0x1f')](0x1f4)['send'](new db[(_0x79a6('0x87'))]['ValidationError'](_0x79a6('0xbf')));}if(_[_0x79a6('0x70')](_0x4494ce[_0x79a6('0x50')][_0x79a6('0x50')])||_0x4494ce[_0x79a6('0x50')][_0x79a6('0x50')]===''){throw _0x76b152[_0x79a6('0x1f')](0x1f4)[_0x79a6('0x2e')](new db[(_0x79a6('0x87'))][(_0x79a6('0x80'))](_0x79a6('0xc0')));}if(_['isNil'](_0x4494ce['body']['mapKeyOffline'])){throw _0x76b152[_0x79a6('0x1f')](0x1f4)[_0x79a6('0x2e')](new db[(_0x79a6('0x87'))][(_0x79a6('0x80'))](_0x79a6('0xc1')+_0xce85f));}if(!_['includes'](_0xce85f,_0x4494ce[_0x79a6('0x50')][_0x79a6('0xc2')])){throw _0x76b152[_0x79a6('0x1f')](0x1f4)[_0x79a6('0x2e')](new db[(_0x79a6('0x87'))]['ValidationError'](_0x79a6('0xc3')+_0xce85f));}_0x1acd90[_0x4494ce['body'][_0x79a6('0xc2')]]=_0x4494ce[_0x79a6('0x50')][_0x79a6('0x85')];})['then'](function(){return db[_0x79a6('0x32')]['find']({'where':{'id':_0x4494ce[_0x79a6('0x4c')]['id']},'include':[{'model':db[_0x79a6('0x89')],'as':'List'},{'model':db['MailAccount'],'as':_0x79a6('0xc4')}]});})[_0x79a6('0x15')](handleEntityNotFound(_0x76b152,null))[_0x79a6('0x15')](function(_0x2fa8b0){if(_0x2fa8b0&&_0x2fa8b0[_0x79a6('0x8a')]){_0xf23e3a=_0x2fa8b0;var _0x1192e9=_[_0x79a6('0xc')](_0x4494ce[_0x79a6('0x50')],{'firstName':_0x4494ce['body'][_0x79a6('0x85')],'phone':_0x4494ce[_0x79a6('0x50')][_0x79a6('0x85')],'ListId':_0x2fa8b0[_0x79a6('0x95')]});_0x1192e9[_0x4494ce['body']['mapKeyOffline']]=_0x4494ce[_0x79a6('0x50')][_0x79a6('0x85')];return db[_0x79a6('0x7f')][_0x79a6('0xc5')]({'where':_0x1acd90,'defaults':_0x1192e9});}})['spread'](function(_0x2b2ad5){if(_0x2b2ad5){_0x14ee29=_0x2b2ad5;var _0x3e20ff=fs['readFileSync'](path[_0x79a6('0x71')](config[_0x79a6('0x6d')],_0x79a6('0xc6')),'utf8');var _0x1f95c6=ejs[_0x79a6('0xc7')](_0x3e20ff,{'body':_['toPairs'](_0x4494ce[_0x79a6('0x50')]['body']),'bodyTitle':_0xf23e3a[_0x79a6('0xc8')]});return db[_0x79a6('0xc9')][_0x79a6('0x4f')]({'body':_0x1f95c6,'plainBody':htmlToText['fromString'](_0x1f95c6),'ContactId':_0x2b2ad5['id'],'ChatWebsiteId':_0xf23e3a['id']});}})[_0x79a6('0x15')](function(_0x470395){_0x199bd2=_0x470395;if(_0xe0ca4b[_0x79a6('0x3e')]){var _0x11df8b=_0xe0ca4b[_0x79a6('0x31')](function(_0x2546dd){return{'name':_0x2546dd[_0x79a6('0xca')],'basename':_0x2546dd[_0x79a6('0x66')],'type':_0x2546dd[_0x79a6('0xcb')],'ChatOfflineMessageId':_0x470395['id']};});_0x825ed2=_0x11df8b['map'](_0x463004=>{var _0x1714b4={'filename':_0x463004[_0x79a6('0x2d')],'path':path[_0x79a6('0x71')](config[_0x79a6('0x6d')],_0x79a6('0xcc'),_0x79a6('0xbd'),_0x79a6('0xcd'),_0x79a6('0xce'),_0x463004[_0x79a6('0xcf')])};return _0x1714b4;});if(!_0xf23e3a[_0x79a6('0xd0')]){return db[_0x79a6('0xd1')]['transaction'](function(_0xc1e93e){return db[_0x79a6('0xd2')][_0x79a6('0xd3')](_0x11df8b,{'transaction':_0xc1e93e});});}}})[_0x79a6('0x15')](function(){if(_0x199bd2){_0x12e3e7=_0x199bd2;return db[_0x79a6('0xc4')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0x79a6('0xd4')],'as':_0x79a6('0xd5'),'raw':!![],'include':[{'model':db[_0x79a6('0xd6')],'as':_0x79a6('0xd6'),'raw':!![]}]}]});}})[_0x79a6('0x15')](function(_0x44b5e7){if(_0x44b5e7&&_0x44b5e7[_0x79a6('0xd5')]&&_0xf23e3a[_0x79a6('0xd7')]&&_0xf23e3a['forwardOfflineAddress']){var _0x423ae2=_0x44b5e7['getSmtpOptions']();return respondWithRpcPromise(_0x79a6('0xd8'),'sendMail',{'account':_0x423ae2,'message':{'from':util[_0x79a6('0x9e')](_0x79a6('0xd9'),_0x44b5e7[_0x79a6('0x2d')],_0x44b5e7['email']||_0x44b5e7[_0x79a6('0xd5')][_0x79a6('0x52')]),'to':_0xf23e3a[_0x79a6('0xda')],'subject':_0xf23e3a[_0x79a6('0xdb')],'html':_0x12e3e7[_0x79a6('0x50')],'attachments':_0x825ed2}},client9003)[_0x79a6('0x15')](function(){return _0x12e3e7;})['catch'](function(_0xd50a12){logger['error'](_0xd50a12);});}})[_0x79a6('0x15')](function(){if(_0xf23e3a&&_0xf23e3a[_0x79a6('0xd0')]&&_0xf23e3a['MailAccountId']){var _0x26f511=[];if(_0xe0ca4b['length']){_0x26f511=_0xe0ca4b[_0x79a6('0x31')](function(_0xbf46b4){return{'name':_0xbf46b4[_0x79a6('0xca')],'basename':_0xbf46b4[_0x79a6('0x66')],'type':_0xbf46b4['mimetype'],'ChatOfflineMessageId':_0x199bd2['id']};});}var _0x32adae;if(!_['isNil'](_0xf23e3a['subjectOffline'])){var _0x5638c0=_['map'](_0x4494ce[_0x79a6('0x50')],function(_0x211c9b){return _0x211c9b;});var _0x3615bd=_[_0x79a6('0xdc')](_0x5638c0)[0x0];var _0x5cca24=_[_0x79a6('0xdd')](_0x3615bd,function(_0x2381b1){return _0x2381b1;});_0x32adae=_0x5cca24[0x1][_0xf23e3a[_0x79a6('0xde')]];}var _0x4b0508={'from':_0x14ee29[_0x79a6('0xdf')],'firstName':_0x14ee29[_0x79a6('0x9a')],'lastName':_0x14ee29[_0x79a6('0x9b')],'mapKey':_0x79a6('0xdf'),'message':{'from':_0x14ee29[_0x79a6('0xdf')],'to':_0xf23e3a['MailAccount'][_0x79a6('0xdf')],'cc':'','subject':_[_0x79a6('0x70')](_0x32adae)?_0xf23e3a['offlineMessageSubject']:_0x32adae,'messageId':'','sentAt':new Date(),'attach':_0x26f511[_0x79a6('0x3e')],'attachments':_0x26f511,'originChannel':_0x79a6('0xe0'),'ChatWebsiteId':_0xf23e3a['id'],'ChatOfflineMessageId':_0x12e3e7['id'],'originTo':_0xf23e3a[_0x79a6('0xc4')][_0x79a6('0xdf')]},'body':_0x12e3e7[_0x79a6('0x50')]};var _0x3cbd95={'account':{'id':_0xf23e3a[_0x79a6('0xe1')]},'body':_0x4b0508,'log':_0x79a6('0xe2')};return respondWithRpcPromise(_0x79a6('0xe2'),_0x79a6('0xe3'),_0x3cbd95,client9001)[_0x79a6('0x15')](function(){return _0x12e3e7;})[_0x79a6('0x1d')](function(_0x39019b){logger[_0x79a6('0x1b')](_0x39019b);});}return;})[_0x79a6('0x15')](function(){if(_0x12e3e7){return _0x12e3e7;}})[_0x79a6('0x15')](respondWithResult(_0x76b152,null))[_0x79a6('0x1d')](function(_0x1878b0){logger['error']('catch',_0x1878b0);for(var _0x10d734 of _0xe0ca4b){var _0x597c2a=path[_0x79a6('0x71')](config[_0x79a6('0x6d')],_0x79a6('0xcc'),'files',_0x79a6('0xcd'),_0x79a6('0xce'),_0x10d734[_0x79a6('0x66')]);fs_extra[_0x79a6('0xe4')](_0x597c2a)[_0x79a6('0x1d')](function(_0x146cd0){logger[_0x79a6('0x1b')](_0x79a6('0xe5'),_0x597c2a,_0x146cd0);});}});};exports['addInteraction']=function(_0x42516e,_0xbe82fd){return db[_0x79a6('0xa6')]['find']({'where':{'id':_0x42516e['params']['id']}})['then'](handleEntityNotFound(_0xbe82fd,null))[_0x79a6('0x15')](function(_0x1ff2fe){if(_0x1ff2fe){return _0x1ff2fe[_0x79a6('0xe6')](_0x42516e[_0x79a6('0x50')][_0x79a6('0x5e')],_[_0x79a6('0xe7')](_0x42516e[_0x79a6('0x50')],['ids','id'])||{});}})['then'](respondWithResult(_0xbe82fd,null))['catch'](handleError(_0xbe82fd,null));};exports[_0x79a6('0xe8')]=function(_0x5ca4e4,_0x4fea64){var _0xa62b72={'raw':![],'where':{}};var _0x4c815d={};var _0x43f6f0={'count':0x0,'rows':[]};return db[_0x79a6('0x32')]['findOne']({'where':{'id':_0x5ca4e4['params']['id']}})[_0x79a6('0x15')](handleEntityNotFound(_0x4fea64,null))[_0x79a6('0x15')](function(_0x12bd7f){if(_0x12bd7f){_0x4c815d[_0x79a6('0x37')]=_['keys'](db[_0x79a6('0xa6')]['rawAttributes']);_0x4c815d['query']=_[_0x79a6('0x39')](_0x5ca4e4['query']);_0x4c815d[_0x79a6('0x3a')]=_[_0x79a6('0x3b')](_0x4c815d[_0x79a6('0x37')],_0x4c815d[_0x79a6('0x38')]);_0xa62b72[_0x79a6('0x3c')]=_[_0x79a6('0x3b')](_0x4c815d[_0x79a6('0x37')],qs[_0x79a6('0x3d')](_0x5ca4e4[_0x79a6('0x38')]['fields']));_0xa62b72['attributes']=_0xa62b72[_0x79a6('0x3c')]['length']?_0xa62b72[_0x79a6('0x3c')]:_0x4c815d[_0x79a6('0x37')];if(!_0x5ca4e4[_0x79a6('0x38')][_0x79a6('0x3f')](_0x79a6('0x40'))){_0xa62b72[_0x79a6('0x25')]=qs[_0x79a6('0x25')](_0x5ca4e4[_0x79a6('0x38')][_0x79a6('0x25')]);_0xa62b72[_0x79a6('0x22')]=qs[_0x79a6('0x22')](_0x5ca4e4[_0x79a6('0x38')][_0x79a6('0x22')]);}_0xa62b72[_0x79a6('0x41')]=qs[_0x79a6('0x42')](_0x5ca4e4[_0x79a6('0x38')][_0x79a6('0x42')]);_0xa62b72[_0x79a6('0x43')]=qs[_0x79a6('0x3a')](_['pick'](_0x5ca4e4[_0x79a6('0x38')],_0x4c815d[_0x79a6('0x3a')]));_0xa62b72[_0x79a6('0x43')][_0x79a6('0x58')]=_0x12bd7f['id'];if(_0x5ca4e4['query'][_0x79a6('0x44')]){_0xa62b72[_0x79a6('0x43')]=_['merge'](_0xa62b72['where'],{'$or':_[_0x79a6('0x31')](_0xa62b72[_0x79a6('0x3c')],function(_0x57eadc){var _0x460ed0={};_0x460ed0[_0x57eadc]={'$like':'%'+_0x5ca4e4[_0x79a6('0x38')][_0x79a6('0x44')]+'%'};return _0x460ed0;})});}_0xa62b72=_['merge']({},_0xa62b72,_0x5ca4e4[_0x79a6('0x46')]);return db[_0x79a6('0xa6')][_0x79a6('0x24')]({'where':_0xa62b72[_0x79a6('0x43')]})[_0x79a6('0x15')](function(_0x5e31d4){_0x43f6f0[_0x79a6('0x24')]=_0x5e31d4;if(_0x5ca4e4[_0x79a6('0x38')][_0x79a6('0x47')]){_0xa62b72[_0x79a6('0x48')]=[{'model':db['CmContact'],'as':_0x79a6('0xe9'),'required':![]},{'model':db[_0x79a6('0xb4')],'as':'Owner','attributes':[_0x79a6('0x2d'),'fullname','internal'],'required':![]},{'model':db[_0x79a6('0xea')],'as':_0x79a6('0xeb'),'attributes':['id',_0x79a6('0x2d'),_0x79a6('0xec')],'where':_0x5ca4e4[_0x79a6('0x38')]['tag']?{'id':_0x5ca4e4['query'][_0x79a6('0xed')]}:undefined,'required':_0x5ca4e4[_0x79a6('0x38')]['tag']?!![]:![]}];}return db[_0x79a6('0xa6')][_0x79a6('0x49')](_0xa62b72);})[_0x79a6('0x15')](function(_0x3089bb){_0x43f6f0[_0x79a6('0x4a')]=_0x3089bb;return _0x43f6f0;});}})[_0x79a6('0x15')](respondWithFilteredResult(_0x4fea64,_0xa62b72))[_0x79a6('0x1d')](handleError(_0x4fea64,null));};function iftimePromise(_0x307174,_0x5777a9){return respondWithRpcPromise('Command',_0x79a6('0xee'),{'command':_0x5777a9['timezone']?util[_0x79a6('0x9e')]('iftime\x20%s,%s',_0x307174[_0x79a6('0xef')],_0x5777a9[_0x79a6('0xf0')]):util[_0x79a6('0x9e')](_0x79a6('0xf1'),_0x307174[_0x79a6('0xef')])},client9002)[_0x79a6('0x15')](function(_0x250f63){var _0x439a23=_0x250f63&&_0x250f63[_0x79a6('0xf2')](_0x79a6('0xf3'))>=0x0?!![]:![];logger[_0x79a6('0x16')](_0x79a6('0xf4'),_0x5777a9['id'],_0x307174['id'],_0x307174[_0x79a6('0xef')],_0x439a23?_0x79a6('0xf5'):_0x79a6('0xf6'),_0x5777a9[_0x79a6('0xf0')]?_0x5777a9['timezone']:_0x79a6('0xf7'));return _0x439a23;})['catch'](function(_0x157823){logger[_0x79a6('0x1b')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x5777a9['id'],_0x307174['id'],_0x307174[_0x79a6('0xef')],util[_0x79a6('0xf8')](_0x157823,{'showHidden':![],'depth':null}),_0x5777a9[_0x79a6('0xf0')]?_0x5777a9[_0x79a6('0xf0')]:_0x79a6('0xf7'));return![];});}exports[_0x79a6('0xee')]=function(_0x4b3e10,_0x4209a4){var _0x46593f=0x0;var _0x3ab4af=0x0;var _0x4a07e6=![];var _0x6dda14;var _0x473007;return db[_0x79a6('0x32')][_0x79a6('0x4e')]({'where':{'id':_0x4b3e10[_0x79a6('0x4c')]['id']},'include':[{'model':db[_0x79a6('0xf9')],'as':_0x79a6('0xf9'),'include':[{'model':db[_0x79a6('0xf9')],'as':_0x79a6('0xfa'),'attributes':['id',_0x79a6('0xef')],'raw':!![]}]}]})[_0x79a6('0x15')](handleEntityNotFound(_0x4209a4,null))[_0x79a6('0x15')](function(_0x5b39b5){if(_0x5b39b5){_0x6dda14=_0x5b39b5;return _0x5b39b5[_0x79a6('0xfb')]({'raw':!![]});}})[_0x79a6('0x15')](function(_0x118861){if(_0x6dda14){if(_0x118861){_0x473007=_0x118861;}}return require(_0x79a6('0xfc'))[_0x79a6('0x6f')]();})[_0x79a6('0x15')](function(_0x21dec2){if(_0x21dec2){_0x3ab4af=_0x21dec2['virtual'];_0x4a07e6=_0x21dec2[_0x79a6('0xfd')];}})[_0x79a6('0x15')](function(){return db[_0x79a6('0xa6')][_0x79a6('0x24')]({'where':{'closed':![]}});})[_0x79a6('0x15')](function(_0xa4aa5a){_0x46593f=_0xa4aa5a;if(_0x3ab4af&&_0xa4aa5a>_0x3ab4af){return db[_0x79a6('0xfe')]['findOne']({'where':{'id':0x1}})[_0x79a6('0x15')](function(_0x29ddc3){if(_0x29ddc3){_0x29ddc3[_0x79a6('0xff')]('chatLicenseExceeded');}});}})[_0x79a6('0x15')](function(){if(_0x6dda14[_0x79a6('0xf9')]&&_0x6dda14[_0x79a6('0xf9')][_0x79a6('0xfa')]){var _0x4358f6=[];for(var _0x2a19a7=0x0;_0x2a19a7<_0x6dda14[_0x79a6('0xf9')]['Intervals'][_0x79a6('0x3e')];_0x2a19a7++){var _0x5e8e05=_0x6dda14[_0x79a6('0xf9')][_0x79a6('0xfa')][_0x2a19a7][_0x79a6('0x28')]({'plain':!![]});_0x4358f6[_0x79a6('0xae')](iftimePromise(_0x5e8e05,_0x6dda14));}return BPromise[_0x79a6('0x100')](_0x4358f6)[_0x79a6('0x15')](function(_0x4e1054){return _[_0x79a6('0x101')](_0x4e1054);});}else{return!![];}})['then'](function(_0x4939ed){var _0x2f22d9=fs[_0x79a6('0x102')](path[_0x79a6('0x71')](config[_0x79a6('0x6d')],'server/files/chat/iframe.ejs'),_0x79a6('0x103'));var _0x3b5a27={'remote':_0x6dda14[_0x79a6('0x104')],'query':querystring[_0x79a6('0x1a')](_[_0x79a6('0x4d')](_0x6dda14['get']({'plain':!![]}),{'customerIp':_0x4b3e10['headers'][_0x79a6('0x98')]||_0x4b3e10['headers'][_0x79a6('0x105')]||_0x4b3e10[_0x79a6('0x106')][_0x79a6('0x107')]||_0x4b3e10['ip'],'referer':_0x4b3e10[_0x79a6('0x7d')][_0x79a6('0x108')],'openedInteractions':_0x46593f,'maxInteractions':_0x3ab4af,'virtual':_0x4a07e6[_0x79a6('0x109')],'online':_0x4939ed,'custom':_0x4a07e6}))['replace'](/'/g,'\x5c\x27')};_0x4209a4[_0x79a6('0x2e')](ejs[_0x79a6('0xc7')](Mustache[_0x79a6('0xc7')](_0x2f22d9,_0x3b5a27),{'proactiveActions':_0x473007,'alignment':_0x6dda14[_0x79a6('0x10a')],'verticalAlignment':_0x6dda14[_0x79a6('0x10b')],'div_color':_0x6dda14[_0x79a6('0xec')],'labelText':_0x6dda14[_0x79a6('0x10c')],'text_color':_0x6dda14[_0x79a6('0x10d')],'text_button_color':_0x6dda14[_0x79a6('0x10e')],'button_color':_0x6dda14['color_button'],'background_color':_0x6dda14['backgroundColor'],'hideWhenOffline':_0x6dda14[_0x79a6('0x10f')],'interval':_0x6dda14[_0x79a6('0x110')]}));})['catch'](handleError(_0x4209a4,null));};exports[_0x79a6('0x111')]=function(_0xd0ff87,_0x55f770){var _0x2e504c=_0xd0ff87['params']['id'];var _0x2f9074=_0xd0ff87[_0x79a6('0x50')];var _0x4a0eca=0xc8;var _0x26257c=null;return db[_0x79a6('0xd1')]['transaction']({'isolationLevel':db[_0x79a6('0xd1')][_0x79a6('0x112')][_0x79a6('0x113')][_0x79a6('0x114')]},function(_0x1e52ff){return db[_0x79a6('0x32')][_0x79a6('0x5b')]({'where':{'id':_0x2e504c},'transaction':_0x1e52ff})[_0x79a6('0x15')](function(_0x5daef5){if(_0x5daef5){return db[_0x79a6('0x8d')]['destroy']({'where':{'ChatWebsiteId':_0x2e504c},'transaction':_0x1e52ff})['then'](function(){var _0x21e55e=_[_0x79a6('0x31')](_0x2f9074,function(_0x1ad7dd){_0x1ad7dd[_0x79a6('0x58')]=_0x2e504c;return _0x1ad7dd;});return db[_0x79a6('0x8d')]['bulkCreate'](_0x21e55e,{'transaction':_0x1e52ff});});}else{_0x4a0eca=0x194;_0x26257c=[];}});})[_0x79a6('0x15')](function(){if(_0x4a0eca!==0x194){return db[_0x79a6('0x8d')]['findAndCountAll']({'where':{'ChatWebsiteId':_0x2e504c},'order':_0x79a6('0x93')})[_0x79a6('0x15')](function(_0x4549f9){_0x26257c=_0x4549f9;});}})[_0x79a6('0x1d')](function(_0x49bae5){_0x4a0eca=0x1f4;logger['error'](_0x49bae5[_0x79a6('0x2c')]);if(_0x49bae5['name']){delete _0x49bae5['name'];}_0x26257c=_0x49bae5;})[_0x79a6('0x115')](function(){if(_0x26257c===null){_0x55f770[_0x79a6('0x1e')](_0x4a0eca);}else{if(_0x4a0eca===0x1f4){_0x55f770[_0x79a6('0x1f')](_0x4a0eca)[_0x79a6('0x2e')](_0x26257c);}else{_0x55f770['status'](_0x4a0eca)[_0x79a6('0x21')](_0x26257c);}}});};exports[_0x79a6('0x116')]=function(_0x50ca58,_0x398359){var _0x127c1c={};var _0x5a685d={};var _0x1d0c08;var _0x3ee1e5;return db[_0x79a6('0x32')]['findOne']({'where':{'id':_0x50ca58['params']['id']}})[_0x79a6('0x15')](handleEntityNotFound(_0x398359,null))[_0x79a6('0x15')](function(_0x117c47){if(_0x117c47){_0x1d0c08=_0x117c47;_0x5a685d['model']=_[_0x79a6('0x39')](db[_0x79a6('0x8d')][_0x79a6('0x33')]);_0x5a685d[_0x79a6('0x38')]=_[_0x79a6('0x39')](_0x50ca58['query']);_0x5a685d['filters']=_['intersection'](_0x5a685d[_0x79a6('0x37')],_0x5a685d[_0x79a6('0x38')]);_0x127c1c[_0x79a6('0x3c')]=_[_0x79a6('0x3b')](_0x5a685d[_0x79a6('0x37')],qs['fields'](_0x50ca58[_0x79a6('0x38')][_0x79a6('0x3d')]));_0x127c1c[_0x79a6('0x3c')]=_0x127c1c['attributes'][_0x79a6('0x3e')]?_0x127c1c[_0x79a6('0x3c')]:_0x5a685d['model'];_0x127c1c[_0x79a6('0x41')]=qs[_0x79a6('0x42')](_0x50ca58['query'][_0x79a6('0x42')]);_0x127c1c[_0x79a6('0x43')]=qs['filters'](_[_0x79a6('0x5c')](_0x50ca58[_0x79a6('0x38')],_0x5a685d[_0x79a6('0x3a')]));if(_0x50ca58[_0x79a6('0x38')][_0x79a6('0x44')]){_0x127c1c[_0x79a6('0x43')]=_['merge'](_0x127c1c[_0x79a6('0x43')],{'$or':_[_0x79a6('0x31')](_0x127c1c[_0x79a6('0x3c')],function(_0x434bc6){var _0x467842={};_0x467842[_0x434bc6]={'$like':'%'+_0x50ca58[_0x79a6('0x38')][_0x79a6('0x44')]+'%'};return _0x467842;})});}_0x127c1c=_[_0x79a6('0x4d')]({},_0x127c1c,_0x50ca58[_0x79a6('0x46')]);return _0x1d0c08[_0x79a6('0x116')](_0x127c1c);}})[_0x79a6('0x15')](function(_0x41fd05){if(_0x41fd05){_0x3ee1e5=_0x41fd05[_0x79a6('0x3e')];if(!_0x50ca58['query'][_0x79a6('0x3f')](_0x79a6('0x40'))){_0x127c1c[_0x79a6('0x25')]=qs[_0x79a6('0x25')](_0x50ca58[_0x79a6('0x38')][_0x79a6('0x25')]);_0x127c1c[_0x79a6('0x22')]=qs[_0x79a6('0x22')](_0x50ca58[_0x79a6('0x38')][_0x79a6('0x22')]);}return _0x1d0c08[_0x79a6('0x116')](_0x127c1c);}})[_0x79a6('0x15')](function(_0x2df8ef){if(_0x2df8ef){return _0x2df8ef?{'count':_0x3ee1e5,'rows':_0x2df8ef}:null;}})[_0x79a6('0x15')](respondWithResult(_0x398359,null))['catch'](handleError(_0x398359,null));};exports[_0x79a6('0x117')]=function(_0x2c0794,_0x5417b6){return db['chatProactiveAction'][_0x79a6('0x4e')]({'where':{'id':_0x2c0794[_0x79a6('0x4c')]['id']}})[_0x79a6('0x15')](handleEntityNotFound(_0x5417b6,null))[_0x79a6('0x15')](function(_0x5a3c7d){if(_0x5a3c7d){return _0x5a3c7d[_0x79a6('0x117')](_0x2c0794[_0x79a6('0x50')]['ids'],_[_0x79a6('0xe7')](_0x2c0794[_0x79a6('0x50')],[_0x79a6('0x5e'),'id'])||{});}})[_0x79a6('0x15')](respondWithResult(_0x5417b6,null))['catch'](handleError(_0x5417b6,null));};exports[_0x79a6('0xfb')]=function(_0x5e1677,_0x146e74){var _0x1aa12a={};var _0x27360d={};var _0x117bd8;var _0xf1cbd5;return db[_0x79a6('0x32')][_0x79a6('0x5b')]({'where':{'id':_0x5e1677['params']['id']}})[_0x79a6('0x15')](handleEntityNotFound(_0x146e74,null))['then'](function(_0x40a2c7){if(_0x40a2c7){_0x117bd8=_0x40a2c7;_0x27360d[_0x79a6('0x37')]=_[_0x79a6('0x39')](db[_0x79a6('0x118')][_0x79a6('0x33')]);_0x27360d[_0x79a6('0x38')]=_['keys'](_0x5e1677[_0x79a6('0x38')]);_0x27360d[_0x79a6('0x3a')]=_[_0x79a6('0x3b')](_0x27360d[_0x79a6('0x37')],_0x27360d[_0x79a6('0x38')]);_0x1aa12a[_0x79a6('0x3c')]=_['intersection'](_0x27360d['model'],qs[_0x79a6('0x3d')](_0x5e1677[_0x79a6('0x38')]['fields']));_0x1aa12a['attributes']=_0x1aa12a[_0x79a6('0x3c')][_0x79a6('0x3e')]?_0x1aa12a[_0x79a6('0x3c')]:_0x27360d[_0x79a6('0x37')];_0x1aa12a[_0x79a6('0x41')]=qs[_0x79a6('0x42')](_0x5e1677[_0x79a6('0x38')][_0x79a6('0x42')]);_0x1aa12a['where']=qs[_0x79a6('0x3a')](_[_0x79a6('0x5c')](_0x5e1677[_0x79a6('0x38')],_0x27360d[_0x79a6('0x3a')]));if(_0x5e1677[_0x79a6('0x38')]['filter']){_0x1aa12a[_0x79a6('0x43')]=_[_0x79a6('0x4d')](_0x1aa12a[_0x79a6('0x43')],{'$or':_['map'](_0x1aa12a['attributes'],function(_0x2e9a2f){var _0x4c0940={};_0x4c0940[_0x2e9a2f]={'$like':'%'+_0x5e1677['query'][_0x79a6('0x44')]+'%'};return _0x4c0940;})});}_0x1aa12a=_[_0x79a6('0x4d')]({},_0x1aa12a,_0x5e1677[_0x79a6('0x46')]);return _0x117bd8['getProactiveActions'](_0x1aa12a);}})[_0x79a6('0x15')](function(_0x2a305e){if(_0x2a305e){_0xf1cbd5=_0x2a305e[_0x79a6('0x3e')];if(!_0x5e1677[_0x79a6('0x38')][_0x79a6('0x3f')](_0x79a6('0x40'))){_0x1aa12a[_0x79a6('0x25')]=qs[_0x79a6('0x25')](_0x5e1677['query'][_0x79a6('0x25')]);_0x1aa12a[_0x79a6('0x22')]=qs[_0x79a6('0x22')](_0x5e1677[_0x79a6('0x38')][_0x79a6('0x22')]);}return _0x117bd8[_0x79a6('0xfb')](_0x1aa12a);}})[_0x79a6('0x15')](function(_0x1a2a73){if(_0x1a2a73){return _0x1a2a73?{'count':_0xf1cbd5,'rows':_0x1a2a73}:null;}})['then'](respondWithResult(_0x146e74,null))[_0x79a6('0x1d')](handleError(_0x146e74,null));};exports[_0x79a6('0x119')]=function(_0x14537c,_0x4d8efe){var _0x575c93=_0x14537c[_0x79a6('0x38')][_0x79a6('0x11a')]==='false'?'offlineForm':_0x79a6('0x11b');return db[_0x79a6('0x32')][_0x79a6('0x4e')]({'attributes':['id',_0x575c93],'where':{'id':_0x14537c[_0x79a6('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4d8efe,null))[_0x79a6('0x15')](function(_0x8265f9){if(_0x8265f9){var _0x596c03=_0x8265f9[_0x575c93];var _0x1376bf=_0x596c03&&_0x596c03[_0x79a6('0x11c')]?_0x596c03['items']:[];_0x4d8efe['send']({'fromKey':_['isNil'](_0x596c03[_0x79a6('0x11d')])?undefined:_0x596c03['fromKey'],'count':_0x1376bf[_0x79a6('0x3e')],'rows':_0x1376bf});}})['catch'](handleError(_0x4d8efe,null));};exports[_0x79a6('0x11e')]=function(_0x13c1eb,_0x35e35e){var _0xedffc9={'raw':![],'where':{}};var _0x56ae3f={};var _0x1528c1={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x79a6('0x5b')]({'where':{'id':_0x13c1eb[_0x79a6('0x4c')]['id']}})[_0x79a6('0x15')](handleEntityNotFound(_0x35e35e,null))['then'](function(_0x5b328c){if(_0x5b328c){_0x56ae3f[_0x79a6('0x37')]=_[_0x79a6('0x39')](db[_0x79a6('0xc9')][_0x79a6('0x33')]);_0x56ae3f[_0x79a6('0x38')]=_[_0x79a6('0x39')](_0x13c1eb[_0x79a6('0x38')]);_0x56ae3f[_0x79a6('0x3a')]=_[_0x79a6('0x3b')](_0x56ae3f[_0x79a6('0x37')],_0x56ae3f['query']);_0xedffc9[_0x79a6('0x3c')]=_[_0x79a6('0x3b')](_0x56ae3f[_0x79a6('0x37')],qs[_0x79a6('0x3d')](_0x13c1eb[_0x79a6('0x38')][_0x79a6('0x3d')]));_0xedffc9[_0x79a6('0x3c')]=_0xedffc9[_0x79a6('0x3c')][_0x79a6('0x3e')]?_0xedffc9[_0x79a6('0x3c')]:_0x56ae3f['model'];if(!_0x13c1eb['query']['hasOwnProperty']('nolimit')){_0xedffc9[_0x79a6('0x25')]=qs['limit'](_0x13c1eb['query']['limit']);_0xedffc9[_0x79a6('0x22')]=qs['offset'](_0x13c1eb[_0x79a6('0x38')][_0x79a6('0x22')]);}_0xedffc9[_0x79a6('0x41')]=qs['sort'](_0x13c1eb[_0x79a6('0x38')][_0x79a6('0x42')]);_0xedffc9[_0x79a6('0x43')]=qs[_0x79a6('0x3a')](_[_0x79a6('0x5c')](_0x13c1eb[_0x79a6('0x38')],_0x56ae3f[_0x79a6('0x3a')]));_0xedffc9['where'][_0x79a6('0x58')]=_0x5b328c['id'];if(_0x13c1eb[_0x79a6('0x38')][_0x79a6('0x44')]){_0xedffc9[_0x79a6('0x43')]=_[_0x79a6('0x4d')](_0xedffc9[_0x79a6('0x43')],{'$or':_[_0x79a6('0x31')](_0xedffc9['attributes'],function(_0x389721){var _0x51c18d={};_0x51c18d[_0x389721]={'$like':'%'+_0x13c1eb['query']['filter']+'%'};return _0x51c18d;})});}_0xedffc9=_[_0x79a6('0x4d')]({},_0xedffc9,_0x13c1eb[_0x79a6('0x46')]);return db[_0x79a6('0xc9')][_0x79a6('0x24')]({'where':_0xedffc9[_0x79a6('0x43')]})['then'](function(_0x2e9f70){_0x1528c1[_0x79a6('0x24')]=_0x2e9f70;if(_0x13c1eb[_0x79a6('0x38')][_0x79a6('0x47')]){_0xedffc9['include']=[{'all':!![]}];}else{_0xedffc9[_0x79a6('0x48')]=[{'model':db[_0x79a6('0x7f')],'as':'Contact','required':![]},{'model':db['Attachment'],'as':'Attachments','required':![]}];}return db[_0x79a6('0xc9')][_0x79a6('0x49')](_0xedffc9);})[_0x79a6('0x15')](function(_0x39f807){_0x1528c1[_0x79a6('0x4a')]=_0x39f807;return _0x1528c1;});}})[_0x79a6('0x15')](respondWithFilteredResult(_0x35e35e,_0xedffc9))[_0x79a6('0x1d')](handleError(_0x35e35e,null));};exports[_0x79a6('0x11f')]=function(_0x306f47,_0x51bafd){return db[_0x79a6('0x32')][_0x79a6('0x4e')]({'where':{'id':_0x306f47['params']['id']}})['then'](handleEntityNotFound(_0x51bafd,null))[_0x79a6('0x15')](function(_0x288727){if(_0x288727){return _0x288727[_0x79a6('0x11f')](_0x306f47[_0x79a6('0x50')][_0x79a6('0x5e')],_[_0x79a6('0xe7')](_0x306f47[_0x79a6('0x50')],['ids','id'])||{})[_0x79a6('0xaa')](function(_0x5a5e4c){for(var _0xfe2f66=0x0;_0xfe2f66<_0x306f47[_0x79a6('0x50')][_0x79a6('0x5e')]['length'];_0xfe2f66+=0x1){socket[_0x79a6('0x120')](_0x79a6('0x121'),{'UserId':Number(_0x306f47[_0x79a6('0x50')][_0x79a6('0x5e')][_0xfe2f66]),'ChatWebsiteId':Number(_0x306f47['params']['id'])});}return _0x5a5e4c;});}})[_0x79a6('0x15')](respondWithResult(_0x51bafd,null))[_0x79a6('0x1d')](handleError(_0x51bafd,null));};exports[_0x79a6('0x122')]=function(_0x4e28e9,_0x14aeab){return db['ChatWebsite']['find']({'where':{'id':_0x4e28e9[_0x79a6('0x4c')]['id']}})[_0x79a6('0x15')](handleEntityNotFound(_0x14aeab,null))[_0x79a6('0x15')](function(_0x6e1781){if(_0x6e1781){return _0x6e1781[_0x79a6('0x122')](_0x4e28e9[_0x79a6('0x38')][_0x79a6('0x5e')])['then'](function(){if(_[_0x79a6('0x123')](_0x4e28e9[_0x79a6('0x38')]['ids'])){for(var _0x23567c=0x0;_0x23567c<_0x4e28e9[_0x79a6('0x38')][_0x79a6('0x5e')][_0x79a6('0x3e')];_0x23567c+=0x1){socket[_0x79a6('0x120')](_0x79a6('0x124'),{'UserId':Number(_0x4e28e9[_0x79a6('0x38')][_0x79a6('0x5e')][_0x23567c]),'ChatWebsiteId':Number(_0x4e28e9['params']['id'])});}}else{socket[_0x79a6('0x120')](_0x79a6('0x124'),{'UserId':Number(_0x4e28e9['query'][_0x79a6('0x5e')]),'ChatWebsiteId':Number(_0x4e28e9[_0x79a6('0x4c')]['id'])});}});}})[_0x79a6('0x15')](respondWithStatusCode(_0x14aeab,null))[_0x79a6('0x1d')](handleError(_0x14aeab,null));};exports[_0x79a6('0x125')]=function(_0x155d45,_0x32b987){var _0x572c3c={};var _0x3a8b3b={};var _0x36adda;var _0x610fcc;return db[_0x79a6('0x32')][_0x79a6('0x5b')]({'where':{'id':_0x155d45['params']['id']}})[_0x79a6('0x15')](handleEntityNotFound(_0x32b987,null))[_0x79a6('0x15')](function(_0x4f87ef){if(_0x4f87ef){_0x36adda=_0x4f87ef;_0x3a8b3b[_0x79a6('0x37')]=_[_0x79a6('0x39')](db[_0x79a6('0xb4')]['rawAttributes']);_0x3a8b3b[_0x79a6('0x38')]=_[_0x79a6('0x39')](_0x155d45[_0x79a6('0x38')]);_0x3a8b3b[_0x79a6('0x3a')]=_[_0x79a6('0x3b')](_0x3a8b3b[_0x79a6('0x37')],_0x3a8b3b[_0x79a6('0x38')]);_0x572c3c[_0x79a6('0x3c')]=_[_0x79a6('0x3b')](_0x3a8b3b['model'],qs[_0x79a6('0x3d')](_0x155d45[_0x79a6('0x38')][_0x79a6('0x3d')]));_0x572c3c[_0x79a6('0x3c')]=_0x572c3c['attributes'][_0x79a6('0x3e')]?_0x572c3c[_0x79a6('0x3c')]:_0x3a8b3b[_0x79a6('0x37')];_0x572c3c[_0x79a6('0x41')]=qs[_0x79a6('0x42')](_0x155d45[_0x79a6('0x38')]['sort']);_0x572c3c[_0x79a6('0x43')]=qs[_0x79a6('0x3a')](_['pick'](_0x155d45[_0x79a6('0x38')],_0x3a8b3b[_0x79a6('0x3a')]));if(_0x155d45[_0x79a6('0x38')][_0x79a6('0x44')]){_0x572c3c[_0x79a6('0x43')]=_[_0x79a6('0x4d')](_0x572c3c['where'],{'$or':_[_0x79a6('0x31')](_0x572c3c[_0x79a6('0x3c')],function(_0x5f4e87){var _0x3e0cab={};_0x3e0cab[_0x5f4e87]={'$like':'%'+_0x155d45[_0x79a6('0x38')][_0x79a6('0x44')]+'%'};return _0x3e0cab;})});}_0x572c3c=_[_0x79a6('0x4d')]({},_0x572c3c,_0x155d45['options']);return _0x36adda[_0x79a6('0x125')](_0x572c3c);}})[_0x79a6('0x15')](function(_0x5b24ac){if(_0x5b24ac){_0x610fcc=_0x5b24ac[_0x79a6('0x3e')];if(!_0x155d45[_0x79a6('0x38')][_0x79a6('0x3f')](_0x79a6('0x40'))){_0x572c3c[_0x79a6('0x25')]=qs[_0x79a6('0x25')](_0x155d45[_0x79a6('0x38')]['limit']);_0x572c3c[_0x79a6('0x22')]=qs[_0x79a6('0x22')](_0x155d45[_0x79a6('0x38')][_0x79a6('0x22')]);}return _0x36adda[_0x79a6('0x125')](_0x572c3c);}})[_0x79a6('0x15')](function(_0x1c02af){if(_0x1c02af){return _0x1c02af?{'count':_0x610fcc,'rows':_0x1c02af}:null;}})[_0x79a6('0x15')](respondWithResult(_0x32b987,null))['catch'](handleError(_0x32b987,null));};
\ No newline at end of file
index 1115f91..090baf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdd0=['exports','events','../../mysqldb','ChatWebsite','setMaxListeners','update','emit','hook'];(function(_0x42bdad,_0x12836c){var _0x122626=function(_0x2eb29c){while(--_0x2eb29c){_0x42bdad['push'](_0x42bdad['shift']());}};_0x122626(++_0x12836c);}(_0xcdd0,0xd9));var _0x0cdd=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0xcdd0[_0x543084];return _0x306a57;};'use strict';var EventEmitter=require(_0x0cdd('0x0'));var ChatWebsite=require(_0x0cdd('0x1'))['db'][_0x0cdd('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0x0cdd('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0cdd('0x4'),'afterDestroy':'remove'};function emitEvent(_0x47eb4d){return function(_0x2ff2d3,_0x586e63,_0x119de1){ChatWebsiteEvents[_0x0cdd('0x5')](_0x47eb4d+':'+_0x2ff2d3['id'],_0x2ff2d3);ChatWebsiteEvents[_0x0cdd('0x5')](_0x47eb4d,_0x2ff2d3);_0x119de1(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatWebsite[_0x0cdd('0x6')](e,emitEvent(event));}}module[_0x0cdd('0x7')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0xbd50=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatWebsite','save'];(function(_0x36b736,_0x3d0d0b){var _0x2dae5d=function(_0x2ef0b1){while(--_0x2ef0b1){_0x36b736['push'](_0x36b736['shift']());}};_0x2dae5d(++_0x3d0d0b);}(_0xbd50,0x196));var _0x0bd5=function(_0x3d325c,_0x4e4dd4){_0x3d325c=_0x3d325c-0x0;var _0x1a4878=_0xbd50[_0x3d325c];return _0x1a4878;};'use strict';var EventEmitter=require(_0x0bd5('0x0'));var ChatWebsite=require(_0x0bd5('0x1'))['db'][_0x0bd5('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0bd5('0x3'),'afterUpdate':_0x0bd5('0x4'),'afterDestroy':_0x0bd5('0x5')};function emitEvent(_0x1e9877){return function(_0x15620d,_0x4c17ee,_0x558e89){ChatWebsiteEvents['emit'](_0x1e9877+':'+_0x15620d['id'],_0x15620d);ChatWebsiteEvents[_0x0bd5('0x6')](_0x1e9877,_0x15620d);_0x558e89(null);};}for(var e in events){if(events[_0x0bd5('0x7')](e)){var event=events[e];ChatWebsite[_0x0bd5('0x8')](e,emitEvent(event));}}module[_0x0bd5('0x9')]=ChatWebsiteEvents;
\ No newline at end of file
index 086790d..9422f88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfe2=['../../config/environment','./chatWebsite.attributes','exports','ChatWebsite','chat_websites','lodash','api','moment','path','rimraf'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xdfe2,0x159));var _0x2dfe=function(_0x4e7d25,_0x58285f){_0x4e7d25=_0x4e7d25-0x0;var _0x526fe6=_0xdfe2[_0x4e7d25];return _0x526fe6;};'use strict';var _=require(_0x2dfe('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2dfe('0x1'));var moment=require(_0x2dfe('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2dfe('0x3'));var rimraf=require(_0x2dfe('0x4'));var config=require(_0x2dfe('0x5'));var attributes=require(_0x2dfe('0x6'));module[_0x2dfe('0x7')]=function(_0x341e8f,_0x4c4c14){return _0x341e8f['define'](_0x2dfe('0x8'),attributes,{'tableName':_0x2dfe('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5b2c=['rimraf','../../config/environment','./chatWebsite.attributes','exports','define','ChatWebsite','chat_websites','util','api','moment','bluebird','request-promise','path'];(function(_0x7427c7,_0x229e73){var _0x128240=function(_0x112a92){while(--_0x112a92){_0x7427c7['push'](_0x7427c7['shift']());}};_0x128240(++_0x229e73);}(_0x5b2c,0x14c));var _0xc5b2=function(_0x5ab38a,_0x123af8){_0x5ab38a=_0x5ab38a-0x0;var _0x2f0a55=_0x5b2c[_0x5ab38a];return _0x2f0a55;};'use strict';var _=require('lodash');var util=require(_0xc5b2('0x0'));var logger=require('../../config/logger')(_0xc5b2('0x1'));var moment=require(_0xc5b2('0x2'));var BPromise=require(_0xc5b2('0x3'));var rp=require(_0xc5b2('0x4'));var fs=require('fs');var path=require(_0xc5b2('0x5'));var rimraf=require(_0xc5b2('0x6'));var config=require(_0xc5b2('0x7'));var attributes=require(_0xc5b2('0x8'));module[_0xc5b2('0x9')]=function(_0x119015,_0x5ea0f1){return _0x119015[_0xc5b2('0xa')](_0xc5b2('0xb'),attributes,{'tableName':_0xc5b2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index de81fae..f9502f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcecc=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./chatWebsite.socket','register','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0x2169f2,_0x2458c8){var _0x15b4f1=function(_0x18ef4e){while(--_0x18ef4e){_0x2169f2['push'](_0x2169f2['shift']());}};_0x15b4f1(++_0x2458c8);}(_0xcecc,0xa8));var _0xccec=function(_0x4f0b51,_0x183880){_0x4f0b51=_0x4f0b51-0x0;var _0x126cf5=_0xcecc[_0x4f0b51];return _0x126cf5;};'use strict';var _=require(_0xccec('0x0'));var util=require(_0xccec('0x1'));var moment=require(_0xccec('0x2'));var BPromise=require(_0xccec('0x3'));var rs=require(_0xccec('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xccec('0x5'))['db'];var utils=require(_0xccec('0x6'));var logger=require(_0xccec('0x7'))(_0xccec('0x8'));var config=require(_0xccec('0x9'));var jayson=require(_0xccec('0xa'));var client=jayson[_0xccec('0xb')][_0xccec('0xc')]({'port':0x232a});config[_0xccec('0xd')]=_[_0xccec('0xe')](config[_0xccec('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0xccec('0xf'))(new Redis(config[_0xccec('0xd')]));require(_0xccec('0x10'))[_0xccec('0x11')](socket);function respondWithRpcPromise(_0x172923,_0x1191fb,_0x502a71){return new BPromise(function(_0x5a4d30,_0x3a7f7c){return client[_0xccec('0x12')](_0x172923,_0x502a71)[_0xccec('0x13')](function(_0x5e5c44){logger[_0xccec('0x14')](_0xccec('0x15'),_0x1191fb,_0xccec('0x16'));logger['debug'](_0xccec('0x17'),_0x1191fb,_0xccec('0x16'),JSON['stringify'](_0x5e5c44));if(_0x5e5c44[_0xccec('0x18')]){if(_0x5e5c44[_0xccec('0x18')][_0xccec('0x19')]===0x1f4){logger[_0xccec('0x18')]('ChatWebsite,\x20%s,\x20%s',_0x1191fb,_0x5e5c44[_0xccec('0x18')][_0xccec('0x1a')]);return _0x3a7f7c(_0x5e5c44['error'][_0xccec('0x1a')]);}logger[_0xccec('0x18')](_0xccec('0x15'),_0x1191fb,_0x5e5c44[_0xccec('0x18')][_0xccec('0x1a')]);return _0x5a4d30(_0x5e5c44['error'][_0xccec('0x1a')]);}else{logger['info'](_0xccec('0x15'),_0x1191fb,_0xccec('0x16'));_0x5a4d30(_0x5e5c44[_0xccec('0x1b')][_0xccec('0x1a')]);}})[_0xccec('0x1c')](function(_0x156a01){logger[_0xccec('0x18')](_0xccec('0x15'),_0x1191fb,_0x156a01);_0x3a7f7c(_0x156a01);});});}
\ No newline at end of file
+var _0xadcc=['moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','./chatWebsite.socket','request','then','info','ChatWebsite,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','util'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xadcc,0x176));var _0xcadc=function(_0x4ef895,_0x48db6a){_0x4ef895=_0x4ef895-0x0;var _0x332ffc=_0xadcc[_0x4ef895];return _0x332ffc;};'use strict';var _=require('lodash');var util=require(_0xcadc('0x0'));var moment=require(_0xcadc('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcadc('0x2'));var db=require(_0xcadc('0x3'))['db'];var utils=require(_0xcadc('0x4'));var logger=require(_0xcadc('0x5'))(_0xcadc('0x6'));var config=require('../../config/environment');var jayson=require(_0xcadc('0x7'));var client=jayson[_0xcadc('0x8')][_0xcadc('0x9')]({'port':0x232a});config[_0xcadc('0xa')]=_['defaults'](config['redis'],{'host':_0xcadc('0xb'),'port':0x18eb});var socket=require(_0xcadc('0xc'))(new Redis(config[_0xcadc('0xa')]));require(_0xcadc('0xd'))['register'](socket);function respondWithRpcPromise(_0x253b01,_0x1fe510,_0x44f763){return new BPromise(function(_0x4e96f4,_0x573b57){return client[_0xcadc('0xe')](_0x253b01,_0x44f763)[_0xcadc('0xf')](function(_0x20bfe4){logger[_0xcadc('0x10')](_0xcadc('0x11'),_0x1fe510,'request\x20sent');logger[_0xcadc('0x12')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x1fe510,_0xcadc('0x13'),JSON[_0xcadc('0x14')](_0x20bfe4));if(_0x20bfe4[_0xcadc('0x15')]){if(_0x20bfe4[_0xcadc('0x15')][_0xcadc('0x16')]===0x1f4){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x1fe510,_0x20bfe4['error']['message']);return _0x573b57(_0x20bfe4[_0xcadc('0x15')][_0xcadc('0x17')]);}logger[_0xcadc('0x15')](_0xcadc('0x11'),_0x1fe510,_0x20bfe4[_0xcadc('0x15')]['message']);return _0x4e96f4(_0x20bfe4[_0xcadc('0x15')]['message']);}else{logger[_0xcadc('0x10')](_0xcadc('0x11'),_0x1fe510,_0xcadc('0x13'));_0x4e96f4(_0x20bfe4['result']['message']);}})[_0xcadc('0x18')](function(_0x1dd6e5){logger[_0xcadc('0x15')](_0xcadc('0x11'),_0x1fe510,_0x1dd6e5);_0x573b57(_0x1dd6e5);});});}
\ No newline at end of file
index 8f336cd..0206039 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4590=['emit','removeListener','register','length','chatWebsite:','./chatWebsite.events','save','remove'];(function(_0x53d616,_0x190b1a){var _0x136650=function(_0x2b8188){while(--_0x2b8188){_0x53d616['push'](_0x53d616['shift']());}};_0x136650(++_0x190b1a);}(_0x4590,0x1a5));var _0x0459=function(_0x26b51c,_0xd6ad59){_0x26b51c=_0x26b51c-0x0;var _0x46f0aa=_0x4590[_0x26b51c];return _0x46f0aa;};'use strict';var ChatWebsiteEvents=require(_0x0459('0x0'));var events=[_0x0459('0x1'),_0x0459('0x2'),'update'];function createListener(_0x3e332e,_0x1bd987){return function(_0x5ba911){_0x1bd987[_0x0459('0x3')](_0x3e332e,_0x5ba911);};}function removeListener(_0x31a21d,_0x55549e){return function(){ChatWebsiteEvents[_0x0459('0x4')](_0x31a21d,_0x55549e);};}exports[_0x0459('0x5')]=function(_0x57e793){for(var _0x3bc5d1=0x0,_0x495247=events[_0x0459('0x6')];_0x3bc5d1<_0x495247;_0x3bc5d1++){var _0xff5aee=events[_0x3bc5d1];var _0x19fd17=createListener(_0x0459('0x7')+_0xff5aee,_0x57e793);ChatWebsiteEvents['on'](_0xff5aee,_0x19fd17);}};
\ No newline at end of file
+var _0x77d0=['./chatWebsite.events','save','remove','update','emit','removeListener','register','length','chatWebsite:'];(function(_0x31012d,_0xadb05a){var _0x25b818=function(_0x47d4ef){while(--_0x47d4ef){_0x31012d['push'](_0x31012d['shift']());}};_0x25b818(++_0xadb05a);}(_0x77d0,0x1c2));var _0x077d=function(_0x17b783,_0x58d67d){_0x17b783=_0x17b783-0x0;var _0xfe2ca0=_0x77d0[_0x17b783];return _0xfe2ca0;};'use strict';var ChatWebsiteEvents=require(_0x077d('0x0'));var events=[_0x077d('0x1'),_0x077d('0x2'),_0x077d('0x3')];function createListener(_0x5b35bd,_0xbcb534){return function(_0x10170c){_0xbcb534[_0x077d('0x4')](_0x5b35bd,_0x10170c);};}function removeListener(_0x194394,_0x122ef5){return function(){ChatWebsiteEvents[_0x077d('0x5')](_0x194394,_0x122ef5);};}exports[_0x077d('0x6')]=function(_0x39ef0e){for(var _0x1ad4cc=0x0,_0x20ab45=events[_0x077d('0x7')];_0x1ad4cc<_0x20ab45;_0x1ad4cc++){var _0x3ae9de=events[_0x1ad4cc];var _0x4e7290=createListener(_0x077d('0x8')+_0x3ae9de,_0x39ef0e);ChatWebsiteEvents['on'](_0x3ae9de,_0x4e7290);}};
\ No newline at end of file
index fa5c024..faca546 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bde=['ensureDir','replace','extname','/:id/offline','any','addInteraction','addApplications','addProactiveActions','addAgents','put','/:id','update','delete','destroy','removeAnswers','/:id/users','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','/describe','describe','show','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getAvatar','/:id/customer_avatar','getCustomerAvatar','getSystemAvatar','/:id/interactions','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','getFields','/:id/offline_messages','getOfflineMessages','getAgents','post','/:id/dispositions','diskStorage','root','server/files/images/logos/','format','%s-%s','now','originalname','single','file','join','/:id/avatar','addAvatar','server/files/images/avatars/','addCustomerAvatar','/:id/system_avatar','/:id/notify','notify','server/files','offline-chat'];(function(_0x5938c8,_0x4a9ca){var _0x4353f7=function(_0x50764f){while(--_0x50764f){_0x5938c8['push'](_0x5938c8['shift']());}};_0x4353f7(++_0x4a9ca);}(_0x6bde,0x17a));var _0xe6bd=function(_0x507591,_0x3fd7ca){_0x507591=_0x507591-0x0;var _0x15fba1=_0x6bde[_0x507591];return _0x15fba1;};'use strict';var multer=require(_0xe6bd('0x0'));var util=require(_0xe6bd('0x1'));var path=require(_0xe6bd('0x2'));var timeout=require(_0xe6bd('0x3'));var express=require('express');var router=express[_0xe6bd('0x4')]();var fs_extra=require(_0xe6bd('0x5'));var auth=require(_0xe6bd('0x6'));var interaction=require(_0xe6bd('0x7'));var config=require(_0xe6bd('0x8'));var controller=require(_0xe6bd('0x9'));router[_0xe6bd('0xa')]('/',auth[_0xe6bd('0xb')](),controller['index']);router[_0xe6bd('0xa')](_0xe6bd('0xc'),auth[_0xe6bd('0xb')](),controller[_0xe6bd('0xd')]);router[_0xe6bd('0xa')]('/:id',auth[_0xe6bd('0xb')](),controller[_0xe6bd('0xe')]);router['get']('/:id/dispositions',auth[_0xe6bd('0xb')](),controller[_0xe6bd('0xf')]);router[_0xe6bd('0xa')](_0xe6bd('0x10'),auth[_0xe6bd('0xb')](),controller[_0xe6bd('0x11')]);router['get'](_0xe6bd('0x12'),controller['getLogo']);router['get']('/:id/avatar',controller[_0xe6bd('0x13')]);router[_0xe6bd('0xa')](_0xe6bd('0x14'),controller[_0xe6bd('0x15')]);router[_0xe6bd('0xa')]('/:id/system_avatar',controller[_0xe6bd('0x16')]);router[_0xe6bd('0xa')](_0xe6bd('0x17'),auth[_0xe6bd('0xb')](),controller['getInteractions']);router[_0xe6bd('0xa')]('/:id/snippet',controller[_0xe6bd('0x18')]);router['get'](_0xe6bd('0x19'),auth[_0xe6bd('0xb')](),controller[_0xe6bd('0x1a')]);router[_0xe6bd('0xa')](_0xe6bd('0x1b'),auth['isAuthenticated'](),controller[_0xe6bd('0x1c')]);router['get']('/:id/fields',controller[_0xe6bd('0x1d')]);router[_0xe6bd('0xa')](_0xe6bd('0x1e'),auth[_0xe6bd('0xb')](),controller[_0xe6bd('0x1f')]);router[_0xe6bd('0xa')]('/:id/users',auth['isAuthenticated'](),controller[_0xe6bd('0x20')]);router[_0xe6bd('0x21')]('/',auth[_0xe6bd('0xb')](),controller['create']);router[_0xe6bd('0x21')](_0xe6bd('0x22'),auth[_0xe6bd('0xb')](),controller['addDisposition']);router[_0xe6bd('0x21')](_0xe6bd('0x10'),auth[_0xe6bd('0xb')](),controller['addAnswer']);var upload=multer({'storage':multer[_0xe6bd('0x23')]({'destination':function(_0x858384,_0x57c29b,_0x44ea73){_0x44ea73(null,path['join'](config[_0xe6bd('0x24')],_0xe6bd('0x25')));},'filename':function(_0x314690,_0x4859eb,_0x271d2a){_0x271d2a(null,util[_0xe6bd('0x26')](_0xe6bd('0x27'),Date[_0xe6bd('0x28')](),_0x4859eb[_0xe6bd('0x29')]));}})});router[_0xe6bd('0x21')](_0xe6bd('0x12'),upload[_0xe6bd('0x2a')](_0xe6bd('0x2b')),controller['addLogo']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x203f05,_0x2e06d4,_0x4f3701){_0x4f3701(null,path[_0xe6bd('0x2c')](config[_0xe6bd('0x24')],'server/files/images/avatars/'));},'filename':function(_0x40ed0,_0x5ed8bf,_0x3cc6d1){_0x3cc6d1(null,util['format'](_0xe6bd('0x27'),Date['now'](),_0x5ed8bf[_0xe6bd('0x29')]));}})});router[_0xe6bd('0x21')](_0xe6bd('0x2d'),upload['single']('file'),controller[_0xe6bd('0x2e')]);var upload=multer({'storage':multer[_0xe6bd('0x23')]({'destination':function(_0x24568a,_0x25b6d3,_0x5dd83b){_0x5dd83b(null,path[_0xe6bd('0x2c')](config[_0xe6bd('0x24')],_0xe6bd('0x2f')));},'filename':function(_0x9663ec,_0x13c1e9,_0x5f49f8){_0x5f49f8(null,util[_0xe6bd('0x26')]('%s-%s',Date[_0xe6bd('0x28')](),_0x13c1e9[_0xe6bd('0x29')]));}})});router[_0xe6bd('0x21')](_0xe6bd('0x14'),upload[_0xe6bd('0x2a')](_0xe6bd('0x2b')),controller[_0xe6bd('0x30')]);var upload=multer({'storage':multer[_0xe6bd('0x23')]({'destination':function(_0x360860,_0x3cee83,_0x5934e8){_0x5934e8(null,path[_0xe6bd('0x2c')](config[_0xe6bd('0x24')],'server/files/images/avatars/'));},'filename':function(_0x48743f,_0x408a02,_0x110be0){_0x110be0(null,util[_0xe6bd('0x26')](_0xe6bd('0x27'),Date[_0xe6bd('0x28')](),_0x408a02['originalname']));}})});router[_0xe6bd('0x21')](_0xe6bd('0x31'),upload[_0xe6bd('0x2a')]('file'),controller['addSystemAvatar']);router['post'](_0xe6bd('0x32'),controller[_0xe6bd('0x33')]);const offlineUploadMulter=multer({'storage':multer[_0xe6bd('0x23')]({'destination':function(_0xdc69b2,_0x13bf86,_0x211ba4){const _0x4d1888=path[_0xe6bd('0x2c')](config[_0xe6bd('0x24')],_0xe6bd('0x34'),'attachments',_0xe6bd('0x35'));fs_extra[_0xe6bd('0x36')](_0x4d1888,function(){_0x211ba4(null,_0x4d1888);});},'filename':function(_0x248342,_0xc20dca,_0x4ce8df){const _0x210186=_0xc20dca[_0xe6bd('0x29')][_0xe6bd('0x37')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x23053a=path[_0xe6bd('0x38')](_0x210186);const _0x109c39=Date[_0xe6bd('0x28')]()+'-'+_0x210186['replace'](_0x23053a,'')+_0x23053a;_0x4ce8df(null,_0x109c39);}})});router[_0xe6bd('0x21')](_0xe6bd('0x39'),offlineUploadMulter[_0xe6bd('0x3a')](),controller['offline']);router[_0xe6bd('0x21')](_0xe6bd('0x17'),auth[_0xe6bd('0xb')](),controller[_0xe6bd('0x3b')]);router[_0xe6bd('0x21')](_0xe6bd('0x19'),auth[_0xe6bd('0xb')](),controller[_0xe6bd('0x3c')]);router['post'](_0xe6bd('0x1b'),auth[_0xe6bd('0xb')](),controller[_0xe6bd('0x3d')]);router['post']('/:id/users',auth[_0xe6bd('0xb')](),controller[_0xe6bd('0x3e')]);router[_0xe6bd('0x3f')](_0xe6bd('0x40'),auth['isAuthenticated'](),controller[_0xe6bd('0x41')]);router[_0xe6bd('0x42')](_0xe6bd('0x40'),auth[_0xe6bd('0xb')](),controller[_0xe6bd('0x43')]);router['delete']('/:id/dispositions',auth[_0xe6bd('0xb')](),controller['removeDispositions']);router['delete'](_0xe6bd('0x10'),auth[_0xe6bd('0xb')](),controller[_0xe6bd('0x44')]);router[_0xe6bd('0x42')](_0xe6bd('0x45'),auth[_0xe6bd('0xb')](),controller[_0xe6bd('0x46')]);module[_0xe6bd('0x47')]=router;
\ No newline at end of file
+var _0x6fa6=['getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','post','addDisposition','addAnswer','diskStorage','join','root','server/files/images/logos/','format','%s-%s','now','originalname','/:id/logo','file','addLogo','addAvatar','server/files/images/avatars/','single','addSystemAvatar','/:id/notify','notify','server/files','attachments','offline-chat','replace','extname','/:id/offline','any','offline','addInteraction','addProactiveActions','addAgents','put','delete','destroy','removeDispositions','removeAnswers','removeAgents','util','path','connect-timeout','express','Router','fs-extra','./chatWebsite.controller','get','index','isAuthenticated','describe','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/avatar'];(function(_0x3631a8,_0x4616ca){var _0x5099b6=function(_0x5359a7){while(--_0x5359a7){_0x3631a8['push'](_0x3631a8['shift']());}};_0x5099b6(++_0x4616ca);}(_0x6fa6,0x1a5));var _0x66fa=function(_0x15d35d,_0x880163){_0x15d35d=_0x15d35d-0x0;var _0x396b66=_0x6fa6[_0x15d35d];return _0x396b66;};'use strict';var multer=require('multer');var util=require(_0x66fa('0x0'));var path=require(_0x66fa('0x1'));var timeout=require(_0x66fa('0x2'));var express=require(_0x66fa('0x3'));var router=express[_0x66fa('0x4')]();var fs_extra=require(_0x66fa('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x66fa('0x6'));router[_0x66fa('0x7')]('/',auth['isAuthenticated'](),controller[_0x66fa('0x8')]);router[_0x66fa('0x7')]('/describe',auth[_0x66fa('0x9')](),controller[_0x66fa('0xa')]);router['get'](_0x66fa('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x66fa('0x7')](_0x66fa('0xc'),auth[_0x66fa('0x9')](),controller[_0x66fa('0xd')]);router[_0x66fa('0x7')](_0x66fa('0xe'),auth[_0x66fa('0x9')](),controller[_0x66fa('0xf')]);router[_0x66fa('0x7')]('/:id/logo',controller['getLogo']);router[_0x66fa('0x7')](_0x66fa('0x10'),controller[_0x66fa('0x11')]);router[_0x66fa('0x7')](_0x66fa('0x12'),controller[_0x66fa('0x13')]);router[_0x66fa('0x7')](_0x66fa('0x14'),controller[_0x66fa('0x15')]);router[_0x66fa('0x7')](_0x66fa('0x16'),auth[_0x66fa('0x9')](),controller[_0x66fa('0x17')]);router['get'](_0x66fa('0x18'),controller[_0x66fa('0x19')]);router[_0x66fa('0x7')](_0x66fa('0x1a'),auth[_0x66fa('0x9')](),controller[_0x66fa('0x1b')]);router[_0x66fa('0x7')](_0x66fa('0x1c'),auth[_0x66fa('0x9')](),controller[_0x66fa('0x1d')]);router[_0x66fa('0x7')](_0x66fa('0x1e'),controller[_0x66fa('0x1f')]);router['get'](_0x66fa('0x20'),auth[_0x66fa('0x9')](),controller[_0x66fa('0x21')]);router[_0x66fa('0x7')](_0x66fa('0x22'),auth['isAuthenticated'](),controller[_0x66fa('0x23')]);router[_0x66fa('0x24')]('/',auth['isAuthenticated'](),controller['create']);router[_0x66fa('0x24')]('/:id/dispositions',auth[_0x66fa('0x9')](),controller[_0x66fa('0x25')]);router[_0x66fa('0x24')](_0x66fa('0xe'),auth[_0x66fa('0x9')](),controller[_0x66fa('0x26')]);var upload=multer({'storage':multer[_0x66fa('0x27')]({'destination':function(_0x7b9388,_0x306198,_0x1428ce){_0x1428ce(null,path[_0x66fa('0x28')](config[_0x66fa('0x29')],_0x66fa('0x2a')));},'filename':function(_0x385430,_0x2a2626,_0x1e3662){_0x1e3662(null,util[_0x66fa('0x2b')](_0x66fa('0x2c'),Date[_0x66fa('0x2d')](),_0x2a2626[_0x66fa('0x2e')]));}})});router[_0x66fa('0x24')](_0x66fa('0x2f'),upload['single'](_0x66fa('0x30')),controller[_0x66fa('0x31')]);var upload=multer({'storage':multer[_0x66fa('0x27')]({'destination':function(_0x3f43d3,_0x243b44,_0x4f9f26){_0x4f9f26(null,path['join'](config[_0x66fa('0x29')],'server/files/images/avatars/'));},'filename':function(_0x5eea10,_0x126db9,_0x3eecd8){_0x3eecd8(null,util[_0x66fa('0x2b')](_0x66fa('0x2c'),Date['now'](),_0x126db9[_0x66fa('0x2e')]));}})});router[_0x66fa('0x24')](_0x66fa('0x10'),upload['single'](_0x66fa('0x30')),controller[_0x66fa('0x32')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x260ae6,_0xd1c9f5,_0x28a2f5){_0x28a2f5(null,path[_0x66fa('0x28')](config['root'],_0x66fa('0x33')));},'filename':function(_0x7e0cfb,_0x5d8499,_0x1abecb){_0x1abecb(null,util[_0x66fa('0x2b')](_0x66fa('0x2c'),Date[_0x66fa('0x2d')](),_0x5d8499[_0x66fa('0x2e')]));}})});router[_0x66fa('0x24')]('/:id/customer_avatar',upload[_0x66fa('0x34')](_0x66fa('0x30')),controller['addCustomerAvatar']);var upload=multer({'storage':multer[_0x66fa('0x27')]({'destination':function(_0x2c1281,_0x3e66c6,_0x1dafc3){_0x1dafc3(null,path[_0x66fa('0x28')](config[_0x66fa('0x29')],_0x66fa('0x33')));},'filename':function(_0x3c4933,_0x5da836,_0x1067c5){_0x1067c5(null,util['format'](_0x66fa('0x2c'),Date[_0x66fa('0x2d')](),_0x5da836[_0x66fa('0x2e')]));}})});router[_0x66fa('0x24')](_0x66fa('0x14'),upload[_0x66fa('0x34')](_0x66fa('0x30')),controller[_0x66fa('0x35')]);router[_0x66fa('0x24')](_0x66fa('0x36'),controller[_0x66fa('0x37')]);const offlineUploadMulter=multer({'storage':multer[_0x66fa('0x27')]({'destination':function(_0x1dd292,_0x5034d9,_0x4eb1f3){const _0x58a1c9=path['join'](config[_0x66fa('0x29')],_0x66fa('0x38'),_0x66fa('0x39'),_0x66fa('0x3a'));fs_extra['ensureDir'](_0x58a1c9,function(){_0x4eb1f3(null,_0x58a1c9);});},'filename':function(_0x1e0781,_0x105103,_0x344165){const _0x5a7648=_0x105103[_0x66fa('0x2e')][_0x66fa('0x3b')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x38d80d=path[_0x66fa('0x3c')](_0x5a7648);const _0x308b32=Date[_0x66fa('0x2d')]()+'-'+_0x5a7648[_0x66fa('0x3b')](_0x38d80d,'')+_0x38d80d;_0x344165(null,_0x308b32);}})});router[_0x66fa('0x24')](_0x66fa('0x3d'),offlineUploadMulter[_0x66fa('0x3e')](),controller[_0x66fa('0x3f')]);router['post'](_0x66fa('0x16'),auth['isAuthenticated'](),controller[_0x66fa('0x40')]);router[_0x66fa('0x24')](_0x66fa('0x1a'),auth['isAuthenticated'](),controller['addApplications']);router[_0x66fa('0x24')](_0x66fa('0x1c'),auth[_0x66fa('0x9')](),controller[_0x66fa('0x41')]);router[_0x66fa('0x24')](_0x66fa('0x22'),auth[_0x66fa('0x9')](),controller[_0x66fa('0x42')]);router[_0x66fa('0x43')]('/:id',auth[_0x66fa('0x9')](),controller['update']);router[_0x66fa('0x44')](_0x66fa('0xb'),auth[_0x66fa('0x9')](),controller[_0x66fa('0x45')]);router['delete'](_0x66fa('0xc'),auth[_0x66fa('0x9')](),controller[_0x66fa('0x46')]);router[_0x66fa('0x44')](_0x66fa('0xe'),auth['isAuthenticated'](),controller[_0x66fa('0x47')]);router[_0x66fa('0x44')](_0x66fa('0x22'),auth[_0x66fa('0x9')](),controller[_0x66fa('0x48')]);module['exports']=router;
\ No newline at end of file
index b277b8c..40ef91d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e84=['production','app','get','Client-Side\x20logger\x20not\x20found!','expressEndpoint','/client-logs','use','isAuthenticated','exports','../components/auth/service','env'];(function(_0x3b405a,_0x19e7cf){var _0x3560c9=function(_0x3ef131){while(--_0x3ef131){_0x3b405a['push'](_0x3b405a['shift']());}};_0x3560c9(++_0x19e7cf);}(_0x4e84,0x1d7));var _0x44e8=function(_0x2d6378,_0x2d034b){_0x2d6378=_0x2d6378-0x0;var _0xd620be=_0x4e84[_0x2d6378];return _0xd620be;};var beaverLogger=require('beaver-logger/server');var express=require('express');var auth=require(_0x44e8('0x0'));var config=require('../config/environment');var router=express['Router']();var isProduction=config[_0x44e8('0x1')]===_0x44e8('0x2')||![];function clientSideLogs(_0x5d7051,_0x1a4cf3,_0x17f9b3){var _0x5b554d=_0x5d7051[_0x44e8('0x3')][_0x44e8('0x4')]('client-side-logger');if(!_0x5b554d){throw new Error(_0x44e8('0x5'));}return beaverLogger[_0x44e8('0x6')]({'uri':_0x44e8('0x7'),'logger':_0x5b554d,'enableCors':!isProduction})(_0x5d7051,_0x1a4cf3,_0x17f9b3);}router[_0x44e8('0x8')](auth[_0x44e8('0x9')](),clientSideLogs);module[_0x44e8('0xa')]=router;
\ No newline at end of file
+var _0xe415=['client-side-logger','Client-Side\x20logger\x20not\x20found!','expressEndpoint','exports','beaver-logger/server','express','../config/environment','Router','env','app','get'];(function(_0x7208df,_0x241bfd){var _0x29c781=function(_0xebca1e){while(--_0xebca1e){_0x7208df['push'](_0x7208df['shift']());}};_0x29c781(++_0x241bfd);}(_0xe415,0xe0));var _0x5e41=function(_0x5aa505,_0xe71326){_0x5aa505=_0x5aa505-0x0;var _0x1a9a4c=_0xe415[_0x5aa505];return _0x1a9a4c;};var beaverLogger=require(_0x5e41('0x0'));var express=require(_0x5e41('0x1'));var auth=require('../components/auth/service');var config=require(_0x5e41('0x2'));var router=express[_0x5e41('0x3')]();var isProduction=config[_0x5e41('0x4')]==='production'||![];function clientSideLogs(_0x518f6b,_0x31c995,_0x2aea57){var _0x3eb4e3=_0x518f6b[_0x5e41('0x5')][_0x5e41('0x6')](_0x5e41('0x7'));if(!_0x3eb4e3){throw new Error(_0x5e41('0x8'));}return beaverLogger[_0x5e41('0x9')]({'uri':'/client-logs','logger':_0x3eb4e3,'enableCors':!isProduction})(_0x518f6b,_0x31c995,_0x2aea57);}router['use'](auth['isAuthenticated'](),clientSideLogs);module[_0x5e41('0xa')]=router;
\ No newline at end of file
index d9abc73..810cae2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84b0=['MicrosoftAzure\x20=>\x20client_id','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','STRING','ENUM','Google','MicrosoftAzure','Outlook365','Dynamics365'];(function(_0x39ea42,_0x3c1f50){var _0x33f5b7=function(_0x5d8e73){while(--_0x5d8e73){_0x39ea42['push'](_0x39ea42['shift']());}};_0x33f5b7(++_0x3c1f50);}(_0x84b0,0xbe));var _0x084b=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0x84b0[_0x487b0c];return _0x1adbdc;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x084b('0x0')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x084b('0x1')]('AmazonAWS',_0x084b('0x2'),_0x084b('0x3')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0x084b('0x1')](_0x084b('0x4'),_0x084b('0x5'))},'data1':{'type':Sequelize[_0x084b('0x0')],'comment':_0x084b('0x6')},'data2':{'type':Sequelize[_0x084b('0x0')],'comment':_0x084b('0x7')},'data3':{'type':Sequelize[_0x084b('0x0')],'comment':_0x084b('0x8')},'data4':{'type':Sequelize[_0x084b('0x0')],'comment':_0x084b('0x9')},'data5':{'type':Sequelize[_0x084b('0xa')],'comment':_0x084b('0xb')},'data6':{'type':Sequelize[_0x084b('0xa')],'comment':_0x084b('0xc')},'data7':{'type':Sequelize[_0x084b('0xa')],'comment':_0x084b('0xd')}};
\ No newline at end of file
+var _0x58e8=['exports','STRING','Google','MicrosoftAzure','ENUM','Outlook365','Dynamics365','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize'];(function(_0x499dbd,_0x1a9f33){var _0x4bc328=function(_0x5ddf4c){while(--_0x5ddf4c){_0x499dbd['push'](_0x499dbd['shift']());}};_0x4bc328(++_0x1a9f33);}(_0x58e8,0x1b1));var _0x858e=function(_0x3322ce,_0x228d26){_0x3322ce=_0x3322ce-0x0;var _0x3891f7=_0x58e8[_0x3322ce];return _0x3891f7;};'use strict';var Sequelize=require(_0x858e('0x0'));module[_0x858e('0x1')]={'name':{'type':Sequelize[_0x858e('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM']('AmazonAWS',_0x858e('0x3'),_0x858e('0x4')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0x858e('0x5')](_0x858e('0x6'),_0x858e('0x7'))},'data1':{'type':Sequelize[_0x858e('0x2')],'comment':'MicrosoftAzure\x20=>\x20client_id'},'data2':{'type':Sequelize[_0x858e('0x2')],'comment':_0x858e('0x8')},'data3':{'type':Sequelize[_0x858e('0x2')],'comment':_0x858e('0x9')},'data4':{'type':Sequelize[_0x858e('0x2')],'comment':_0x858e('0xa')},'data5':{'type':Sequelize[_0x858e('0xb')],'comment':_0x858e('0xc')},'data6':{'type':Sequelize[_0x858e('0xb')],'comment':'MicrosoftAzure\x20=>\x20refresh_token'},'data7':{'type':Sequelize[_0x858e('0xb')],'comment':_0x858e('0xd')}};
\ No newline at end of file
index 23a24a1..6298a68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b09=['findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','get','state','Invalid\x20state\x20parameter','parse','from','base64','ascii','del','getOauth2MicrosoftAccessToken','code','access_token','data6','refresh_token','data5','startRefreshInterval','emit','Invalid\x20authentication\x20state\x20parameter','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','ioredis','../../components/encryptor','../../config/environment','../../config/logger','../../mysqldb','redis','defaults','socket.io-emitter','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','update','then','destroy','error','stack','name','send','padEnd','index','map','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','nolimit','sort','where','filter','type','VIRTUAL','merge','options','CloudProvider','includeAll','include','findAll','rows','service','MicrosoftAzure','decryptString','data3','catch','show','params','length','find','create','body','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','values'];(function(_0x15e200,_0x387e2d){var _0x176d26=function(_0x5c5ec2){while(--_0x5c5ec2){_0x15e200['push'](_0x15e200['shift']());}};_0x176d26(++_0x387e2d);}(_0x3b09,0xc5));var _0x93b0=function(_0x44e97a,_0x4a01d2){_0x44e97a=_0x44e97a-0x0;var _0x15a999=_0x3b09[_0x44e97a];return _0x15a999;};'use strict';var _=require(_0x93b0('0x0'));var Redis=require(_0x93b0('0x1'));var qs=require('../../components/parsers/qs');var encryptor=require(_0x93b0('0x2'));var config=require(_0x93b0('0x3'));var logger=require(_0x93b0('0x4'))('api');var db=require(_0x93b0('0x5'))['db'];var oauth=require('./cloudProvider.oauth');config[_0x93b0('0x6')]=_[_0x93b0('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x93b0('0x8'))(new Redis(config[_0x93b0('0x6')]));var redis=new Redis(config[_0x93b0('0x6')]);function respondWithStatusCode(_0x5cabc4,_0x2e2363){_0x2e2363=_0x2e2363||0xcc;return function(_0x15e093){if(_0x15e093){return _0x5cabc4[_0x93b0('0x9')](_0x2e2363);}return _0x5cabc4[_0x93b0('0xa')](_0x2e2363)[_0x93b0('0xb')]();};}function respondWithResult(_0x26b67d,_0x177a77){_0x177a77=_0x177a77||0xc8;return function(_0x38eab0){if(_0x38eab0){return _0x26b67d[_0x93b0('0xa')](_0x177a77)['json'](_0x38eab0);}};}function respondWithFilteredResult(_0x3827cd,_0x803d76){return function(_0x48796e){if(_0x48796e){var _0x990d5c=typeof _0x803d76[_0x93b0('0xc')]===_0x93b0('0xd')&&typeof _0x803d76[_0x93b0('0xe')]===_0x93b0('0xd');var _0x58fd50=_0x48796e['count'];var _0x47f97b=_0x990d5c?0x0:_0x803d76[_0x93b0('0xc')];var _0x4fe772=_0x990d5c?_0x48796e[_0x93b0('0xf')]:_0x803d76[_0x93b0('0xc')]+_0x803d76[_0x93b0('0xe')];var _0x5df412;if(_0x4fe772>=_0x58fd50){_0x4fe772=_0x58fd50;_0x5df412=0xc8;}else{_0x5df412=0xce;}_0x3827cd[_0x93b0('0xa')](_0x5df412);return _0x3827cd['set'](_0x93b0('0x10'),_0x47f97b+'-'+_0x4fe772+'/'+_0x58fd50)[_0x93b0('0x11')](_0x48796e);}return null;};}function saveUpdates(_0x2ad9eb){return function(_0x22aeb7){if(_0x22aeb7){return _0x22aeb7[_0x93b0('0x12')](_0x2ad9eb)[_0x93b0('0x13')](function(_0x48344a){return _0x48344a;});}return null;};}function removeEntity(_0x1e456d){return function(_0x26d969){if(_0x26d969){return _0x26d969[_0x93b0('0x14')]()[_0x93b0('0x13')](function(){_0x1e456d[_0x93b0('0xa')](0xcc)[_0x93b0('0xb')]();});}};}function handleEntityNotFound(_0x362111){return function(_0x28f9b4){if(!_0x28f9b4){_0x362111[_0x93b0('0x9')](0x194);}return _0x28f9b4;};}function handleError(_0xb3bf04,_0x24bf4f){_0x24bf4f=_0x24bf4f||0x1f4;return function(_0x52d7eb){logger[_0x93b0('0x15')](_0x52d7eb[_0x93b0('0x16')]);if(_0x52d7eb[_0x93b0('0x17')]){delete _0x52d7eb[_0x93b0('0x17')];}_0xb3bf04[_0x93b0('0xa')](_0x24bf4f)[_0x93b0('0x18')](_0x52d7eb);};}function maskClientSecret(_0x1d2ced){return _[_0x93b0('0x19')](_0x1d2ced['slice'](0x0,0x3),0x14,'*');}exports[_0x93b0('0x1a')]=function(_0x5386e6,_0x25a01c){var _0x28f236={},_0x42f66b={},_0x59e5e7={'count':0x0,'rows':[]};var _0x537c2=_[_0x93b0('0x1b')](db['CloudProvider'][_0x93b0('0x1c')],function(_0x14f246){return{'name':_0x14f246[_0x93b0('0x1d')],'type':_0x14f246['type']['key']};});_0x42f66b[_0x93b0('0x1e')]=_['map'](_0x537c2,_0x93b0('0x17'));_0x42f66b[_0x93b0('0x1f')]=_[_0x93b0('0x20')](_0x5386e6[_0x93b0('0x1f')]);_0x42f66b[_0x93b0('0x21')]=_[_0x93b0('0x22')](_0x42f66b[_0x93b0('0x1e')],_0x42f66b[_0x93b0('0x1f')]);_0x28f236[_0x93b0('0x23')]=_[_0x93b0('0x22')](_0x42f66b[_0x93b0('0x1e')],qs[_0x93b0('0x24')](_0x5386e6[_0x93b0('0x1f')]['fields']));_0x28f236[_0x93b0('0x23')]=_0x28f236['attributes']['length']?_0x28f236[_0x93b0('0x23')]:_0x42f66b[_0x93b0('0x1e')];if(!_0x5386e6['query']['hasOwnProperty'](_0x93b0('0x25'))){_0x28f236['limit']=qs[_0x93b0('0xe')](_0x5386e6[_0x93b0('0x1f')]['limit']);_0x28f236['offset']=qs[_0x93b0('0xc')](_0x5386e6[_0x93b0('0x1f')]['offset']);}_0x28f236['order']=qs[_0x93b0('0x26')](_0x5386e6[_0x93b0('0x1f')][_0x93b0('0x26')]);_0x28f236[_0x93b0('0x27')]=qs[_0x93b0('0x21')](_['pick'](_0x5386e6['query'],_0x42f66b[_0x93b0('0x21')]),_0x537c2);if(_0x5386e6[_0x93b0('0x1f')][_0x93b0('0x28')]){_0x28f236[_0x93b0('0x27')]=_['merge'](_0x28f236[_0x93b0('0x27')],{'$or':_[_0x93b0('0x1b')](_0x537c2,function(_0x1e9191){if(_0x1e9191[_0x93b0('0x29')]!==_0x93b0('0x2a')){var _0x37fbb7={};_0x37fbb7[_0x1e9191[_0x93b0('0x17')]]={'$like':'%'+_0x5386e6[_0x93b0('0x1f')]['filter']+'%'};return _0x37fbb7;}})});}_0x28f236=_[_0x93b0('0x2b')]({},_0x28f236,_0x5386e6[_0x93b0('0x2c')]);var _0x3ffc54={'where':_0x28f236['where']};return db[_0x93b0('0x2d')]['count'](_0x3ffc54)[_0x93b0('0x13')](function(_0x2a130c){_0x59e5e7['count']=_0x2a130c;if(_0x5386e6['query'][_0x93b0('0x2e')]){_0x28f236[_0x93b0('0x2f')]=[{'all':!![]}];}return db[_0x93b0('0x2d')][_0x93b0('0x30')](_0x28f236);})[_0x93b0('0x13')](function(_0x483777){_0x59e5e7[_0x93b0('0x31')]=_[_0x93b0('0x1b')](_0x483777,function(_0x5d2d47){if(_0x5d2d47[_0x93b0('0x32')]===_0x93b0('0x33')){var _0x3eabd9=encryptor[_0x93b0('0x34')](_0x5d2d47['data3']);_0x5d2d47[_0x93b0('0x35')]=maskClientSecret(_0x3eabd9);}return _0x5d2d47;});return _0x59e5e7;})[_0x93b0('0x13')](respondWithFilteredResult(_0x25a01c,_0x28f236))[_0x93b0('0x36')](handleError(_0x25a01c,null));};exports[_0x93b0('0x37')]=function(_0x5c577c,_0x293f0d){var _0x16c87e={'raw':!![],'where':{'id':_0x5c577c[_0x93b0('0x38')]['id']}},_0x1dfe5b={};_0x1dfe5b[_0x93b0('0x1e')]=_[_0x93b0('0x20')](db[_0x93b0('0x2d')][_0x93b0('0x1c')]);_0x1dfe5b['query']=_['keys'](_0x5c577c[_0x93b0('0x1f')]);_0x1dfe5b[_0x93b0('0x21')]=_[_0x93b0('0x22')](_0x1dfe5b['model'],_0x1dfe5b[_0x93b0('0x1f')]);_0x16c87e[_0x93b0('0x23')]=_['intersection'](_0x1dfe5b['model'],qs['fields'](_0x5c577c[_0x93b0('0x1f')]['fields']));_0x16c87e['attributes']=_0x16c87e['attributes'][_0x93b0('0x39')]?_0x16c87e['attributes']:_0x1dfe5b[_0x93b0('0x1e')];if(_0x5c577c[_0x93b0('0x1f')][_0x93b0('0x2e')]){_0x16c87e['include']=[{'all':!![]}];}_0x16c87e=_['merge']({},_0x16c87e,_0x5c577c[_0x93b0('0x2c')]);return db[_0x93b0('0x2d')][_0x93b0('0x3a')](_0x16c87e)[_0x93b0('0x13')](handleEntityNotFound(_0x293f0d,null))[_0x93b0('0x13')](function(_0x5ac4b5){if(_0x5ac4b5['service']===_0x93b0('0x33')){var _0x3bb7ae=encryptor['decryptString'](_0x5ac4b5[_0x93b0('0x35')]);_0x5ac4b5['data3']=maskClientSecret(_0x3bb7ae);}return _0x5ac4b5;})['then'](respondWithResult(_0x293f0d,null))[_0x93b0('0x36')](handleError(_0x293f0d,null));};exports[_0x93b0('0x3b')]=function(_0x119917,_0x59b39c){if(!_0x119917[_0x93b0('0x3c')][_0x93b0('0x17')])throw new Error(_0x93b0('0x3d'));if(!_0x119917['body'][_0x93b0('0x32')])throw new Error(_0x93b0('0x3e'));var _0x212fe8=db[_0x93b0('0x2d')][_0x93b0('0x1c')][_0x93b0('0x32')][_0x93b0('0x3f')];if(!_0x212fe8['includes'](_0x119917[_0x93b0('0x3c')][_0x93b0('0x32')]))throw new Error('Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20'+_0x212fe8['join'](',\x20'));if(_0x119917[_0x93b0('0x3c')][_0x93b0('0x32')]==='MicrosoftAzure'&&_0x119917[_0x93b0('0x3c')][_0x93b0('0x35')]){_0x119917['body'][_0x93b0('0x35')]=encryptor['encryptString'](_0x119917[_0x93b0('0x3c')][_0x93b0('0x35')]);}return db['CloudProvider']['create'](_0x119917[_0x93b0('0x3c')],{})['then'](respondWithResult(_0x59b39c,0xc9))['catch'](handleError(_0x59b39c,null));};exports[_0x93b0('0x12')]=function(_0x5d010e,_0x65ba33){if(_0x5d010e['body']['id']){delete _0x5d010e[_0x93b0('0x3c')]['id'];}return db['CloudProvider'][_0x93b0('0x3a')]({'where':{'id':_0x5d010e[_0x93b0('0x38')]['id']}})['then'](handleEntityNotFound(_0x65ba33,null))['then'](function(_0x5bc8a3){if(_0x5bc8a3[_0x93b0('0x32')]===_0x93b0('0x33')&&_0x5d010e['body']['data3']){_0x5d010e[_0x93b0('0x3c')]['data3']=encryptor['encryptString'](_0x5d010e['body'][_0x93b0('0x35')]);}return _0x5bc8a3;})[_0x93b0('0x13')](saveUpdates(_0x5d010e[_0x93b0('0x3c')],null))[_0x93b0('0x13')](respondWithResult(_0x65ba33,null))[_0x93b0('0x36')](handleError(_0x65ba33,null));};exports['destroy']=function(_0x3fb502,_0x327aa1){return db[_0x93b0('0x2d')][_0x93b0('0x3a')]({'where':{'id':_0x3fb502[_0x93b0('0x38')]['id']}})['then'](handleEntityNotFound(_0x327aa1,null))[_0x93b0('0x13')](removeEntity(_0x327aa1,null))['catch'](handleError(_0x327aa1,null));};exports['oauth2MicrosoftAuthorize']=function(_0x547f99,_0x33ceb7){return db['CloudProvider'][_0x93b0('0x40')]({'where':{'id':_0x547f99['params']['id']},'raw':!![]})['then'](function(_0x435eee){if(!_0x435eee)return _0x33ceb7[_0x93b0('0x9')](0x194);return{'url':oauth[_0x93b0('0x41')](_0x435eee,_0x547f99[_0x93b0('0x42')]['id'])};})[_0x93b0('0x13')](respondWithResult(_0x33ceb7,null))[_0x93b0('0x36')](handleError(_0x33ceb7,null));};exports[_0x93b0('0x43')]=function(_0x3fd97f,_0x179b00){var _0x162f4d=_0x3fd97f[_0x93b0('0x3c')];var _0x3fe2c4;var _0x2a8918;if(_0x162f4d['error'])throw _0x162f4d;redis[_0x93b0('0x44')](_0x162f4d[_0x93b0('0x45')])['then'](function(_0x5ab4fb){if(!_0x5ab4fb)throw new Error(_0x93b0('0x46'));_0x3fe2c4=JSON[_0x93b0('0x47')](_0x5ab4fb);var _0x573002=Buffer[_0x93b0('0x48')](_0x162f4d[_0x93b0('0x45')],_0x93b0('0x49'))['toString'](_0x93b0('0x4a'));_0x2a8918=JSON[_0x93b0('0x47')](_0x573002);if(!oauth['isValidIdToken'](_0x162f4d['id_token'],_0x3fe2c4['oauth2Claims']))throw new Error('Unable\x20to\x20validate\x20id_token');redis[_0x93b0('0x4b')](_0x162f4d[_0x93b0('0x45')]);return oauth[_0x93b0('0x4c')](_0x162f4d[_0x93b0('0x4d')],_0x3fe2c4);})[_0x93b0('0x13')](function(_0x11cd59){_0x3fe2c4['data5']=_0x11cd59[_0x93b0('0x4e')];_0x3fe2c4[_0x93b0('0x4f')]=_0x11cd59[_0x93b0('0x50')];return db[_0x93b0('0x2d')][_0x93b0('0x12')]({'data5':_0x3fe2c4[_0x93b0('0x51')],'data6':_0x3fe2c4[_0x93b0('0x4f')]},{'where':{'id':_0x3fe2c4['id']}});})[_0x93b0('0x13')](function(){oauth[_0x93b0('0x52')](_0x3fe2c4);socket[_0x93b0('0x53')]('microsoftAuthorization:success',{'id':_0x2a8918['id']});return;})[_0x93b0('0x13')](respondWithStatusCode(_0x179b00,null))[_0x93b0('0x36')](function(_0x3f2324){if(_0x2a8918){socket[_0x93b0('0x53')]('microsoftAuthorization:error',{'id':_0x2a8918['id']});}if(!_0x3fe2c4){logger[_0x93b0('0x15')](_0x93b0('0x54'),_0x3f2324);return _0x179b00[_0x93b0('0xa')](0x1f4)['send'](_0x3f2324['message']);}logger[_0x93b0('0x15')](_0x93b0('0x55'),_0x3fe2c4['id'],JSON[_0x93b0('0x56')](_0x3f2324));});};
\ No newline at end of file
+var _0x8848=['options','includeAll','findAll','rows','service','MicrosoftAzure','data3','catch','params','find','decryptString','create','body','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','values','includes','encryptString','findOne','oauth2MicrosoftCallback','get','state','Invalid\x20state\x20parameter','parse','from','base64','toString','ascii','isValidIdToken','id_token','getOauth2MicrosoftAccessToken','access_token','data6','refresh_token','data5','startRefreshInterval','emit','microsoftAuthorization:success','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','stringify','lodash','ioredis','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../config/logger','api','defaults','redis','localhost','socket.io-emitter','end','status','json','undefined','limit','count','offset','Content-Range','update','then','destroy','sendStatus','error','name','send','padEnd','slice','map','CloudProvider','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','pick','filter','where','merge','type','VIRTUAL'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0x8848,0xdd));var _0x8884=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x8848[_0x178e48];return _0x440d7e;};'use strict';var _=require(_0x8884('0x0'));var Redis=require(_0x8884('0x1'));var qs=require(_0x8884('0x2'));var encryptor=require(_0x8884('0x3'));var config=require(_0x8884('0x4'));var logger=require(_0x8884('0x5'))(_0x8884('0x6'));var db=require('../../mysqldb')['db'];var oauth=require('./cloudProvider.oauth');config['redis']=_[_0x8884('0x7')](config[_0x8884('0x8')],{'host':_0x8884('0x9'),'port':0x18eb});var socket=require(_0x8884('0xa'))(new Redis(config[_0x8884('0x8')]));var redis=new Redis(config[_0x8884('0x8')]);function respondWithStatusCode(_0x56f778,_0x33cdcb){_0x33cdcb=_0x33cdcb||0xcc;return function(_0x136431){if(_0x136431){return _0x56f778['sendStatus'](_0x33cdcb);}return _0x56f778['status'](_0x33cdcb)[_0x8884('0xb')]();};}function respondWithResult(_0x4cf8b1,_0x167ffc){_0x167ffc=_0x167ffc||0xc8;return function(_0x4fbfd0){if(_0x4fbfd0){return _0x4cf8b1[_0x8884('0xc')](_0x167ffc)[_0x8884('0xd')](_0x4fbfd0);}};}function respondWithFilteredResult(_0x28812a,_0x55c8ce){return function(_0x3b6331){if(_0x3b6331){var _0x3ed86d=typeof _0x55c8ce['offset']===_0x8884('0xe')&&typeof _0x55c8ce[_0x8884('0xf')]==='undefined';var _0x339f44=_0x3b6331[_0x8884('0x10')];var _0xf57fde=_0x3ed86d?0x0:_0x55c8ce[_0x8884('0x11')];var _0x56d221=_0x3ed86d?_0x3b6331[_0x8884('0x10')]:_0x55c8ce[_0x8884('0x11')]+_0x55c8ce[_0x8884('0xf')];var _0x4a11c3;if(_0x56d221>=_0x339f44){_0x56d221=_0x339f44;_0x4a11c3=0xc8;}else{_0x4a11c3=0xce;}_0x28812a['status'](_0x4a11c3);return _0x28812a['set'](_0x8884('0x12'),_0xf57fde+'-'+_0x56d221+'/'+_0x339f44)[_0x8884('0xd')](_0x3b6331);}return null;};}function saveUpdates(_0x168965){return function(_0xa841dc){if(_0xa841dc){return _0xa841dc[_0x8884('0x13')](_0x168965)[_0x8884('0x14')](function(_0x3ffa59){return _0x3ffa59;});}return null;};}function removeEntity(_0x10fc7b){return function(_0x44ff64){if(_0x44ff64){return _0x44ff64[_0x8884('0x15')]()[_0x8884('0x14')](function(){_0x10fc7b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4edbf1){return function(_0x2f5592){if(!_0x2f5592){_0x4edbf1[_0x8884('0x16')](0x194);}return _0x2f5592;};}function handleError(_0x11d4c4,_0x580b0d){_0x580b0d=_0x580b0d||0x1f4;return function(_0x565003){logger[_0x8884('0x17')](_0x565003['stack']);if(_0x565003[_0x8884('0x18')]){delete _0x565003['name'];}_0x11d4c4[_0x8884('0xc')](_0x580b0d)[_0x8884('0x19')](_0x565003);};}function maskClientSecret(_0x1e3f4f){return _[_0x8884('0x1a')](_0x1e3f4f[_0x8884('0x1b')](0x0,0x3),0x14,'*');}exports['index']=function(_0x55639f,_0x455a9c){var _0x33cf87={},_0x2d5a02={},_0x4ddfdd={'count':0x0,'rows':[]};var _0x3f3ce8=_[_0x8884('0x1c')](db[_0x8884('0x1d')][_0x8884('0x1e')],function(_0x4253bb){return{'name':_0x4253bb[_0x8884('0x1f')],'type':_0x4253bb['type'][_0x8884('0x20')]};});_0x2d5a02[_0x8884('0x21')]=_['map'](_0x3f3ce8,_0x8884('0x18'));_0x2d5a02[_0x8884('0x22')]=_[_0x8884('0x23')](_0x55639f[_0x8884('0x22')]);_0x2d5a02[_0x8884('0x24')]=_[_0x8884('0x25')](_0x2d5a02[_0x8884('0x21')],_0x2d5a02[_0x8884('0x22')]);_0x33cf87[_0x8884('0x26')]=_[_0x8884('0x25')](_0x2d5a02[_0x8884('0x21')],qs[_0x8884('0x27')](_0x55639f['query'][_0x8884('0x27')]));_0x33cf87['attributes']=_0x33cf87[_0x8884('0x26')][_0x8884('0x28')]?_0x33cf87[_0x8884('0x26')]:_0x2d5a02[_0x8884('0x21')];if(!_0x55639f[_0x8884('0x22')]['hasOwnProperty']('nolimit')){_0x33cf87[_0x8884('0xf')]=qs['limit'](_0x55639f['query'][_0x8884('0xf')]);_0x33cf87[_0x8884('0x11')]=qs[_0x8884('0x11')](_0x55639f[_0x8884('0x22')][_0x8884('0x11')]);}_0x33cf87[_0x8884('0x29')]=qs[_0x8884('0x2a')](_0x55639f[_0x8884('0x22')][_0x8884('0x2a')]);_0x33cf87['where']=qs[_0x8884('0x24')](_[_0x8884('0x2b')](_0x55639f[_0x8884('0x22')],_0x2d5a02[_0x8884('0x24')]),_0x3f3ce8);if(_0x55639f[_0x8884('0x22')][_0x8884('0x2c')]){_0x33cf87[_0x8884('0x2d')]=_[_0x8884('0x2e')](_0x33cf87['where'],{'$or':_[_0x8884('0x1c')](_0x3f3ce8,function(_0x4ccf99){if(_0x4ccf99[_0x8884('0x2f')]!==_0x8884('0x30')){var _0x546f6e={};_0x546f6e[_0x4ccf99[_0x8884('0x18')]]={'$like':'%'+_0x55639f['query']['filter']+'%'};return _0x546f6e;}})});}_0x33cf87=_[_0x8884('0x2e')]({},_0x33cf87,_0x55639f[_0x8884('0x31')]);var _0x1f6f27={'where':_0x33cf87[_0x8884('0x2d')]};return db[_0x8884('0x1d')][_0x8884('0x10')](_0x1f6f27)['then'](function(_0x1b78e3){_0x4ddfdd['count']=_0x1b78e3;if(_0x55639f['query'][_0x8884('0x32')]){_0x33cf87['include']=[{'all':!![]}];}return db['CloudProvider'][_0x8884('0x33')](_0x33cf87);})[_0x8884('0x14')](function(_0x27bcaa){_0x4ddfdd[_0x8884('0x34')]=_[_0x8884('0x1c')](_0x27bcaa,function(_0x5c351a){if(_0x5c351a[_0x8884('0x35')]===_0x8884('0x36')){var _0x1e2338=encryptor['decryptString'](_0x5c351a[_0x8884('0x37')]);_0x5c351a[_0x8884('0x37')]=maskClientSecret(_0x1e2338);}return _0x5c351a;});return _0x4ddfdd;})[_0x8884('0x14')](respondWithFilteredResult(_0x455a9c,_0x33cf87))[_0x8884('0x38')](handleError(_0x455a9c,null));};exports['show']=function(_0x2e522c,_0x15c1fd){var _0x2e9aa5={'raw':!![],'where':{'id':_0x2e522c[_0x8884('0x39')]['id']}},_0x3401df={};_0x3401df[_0x8884('0x21')]=_[_0x8884('0x23')](db[_0x8884('0x1d')][_0x8884('0x1e')]);_0x3401df[_0x8884('0x22')]=_[_0x8884('0x23')](_0x2e522c[_0x8884('0x22')]);_0x3401df[_0x8884('0x24')]=_[_0x8884('0x25')](_0x3401df[_0x8884('0x21')],_0x3401df[_0x8884('0x22')]);_0x2e9aa5['attributes']=_[_0x8884('0x25')](_0x3401df['model'],qs[_0x8884('0x27')](_0x2e522c[_0x8884('0x22')][_0x8884('0x27')]));_0x2e9aa5[_0x8884('0x26')]=_0x2e9aa5[_0x8884('0x26')]['length']?_0x2e9aa5['attributes']:_0x3401df[_0x8884('0x21')];if(_0x2e522c[_0x8884('0x22')][_0x8884('0x32')]){_0x2e9aa5['include']=[{'all':!![]}];}_0x2e9aa5=_[_0x8884('0x2e')]({},_0x2e9aa5,_0x2e522c['options']);return db[_0x8884('0x1d')][_0x8884('0x3a')](_0x2e9aa5)[_0x8884('0x14')](handleEntityNotFound(_0x15c1fd,null))['then'](function(_0x57494f){if(_0x57494f[_0x8884('0x35')]===_0x8884('0x36')){var _0x3ec4fd=encryptor[_0x8884('0x3b')](_0x57494f['data3']);_0x57494f[_0x8884('0x37')]=maskClientSecret(_0x3ec4fd);}return _0x57494f;})['then'](respondWithResult(_0x15c1fd,null))[_0x8884('0x38')](handleError(_0x15c1fd,null));};exports[_0x8884('0x3c')]=function(_0x472b6a,_0x3f5e8c){if(!_0x472b6a[_0x8884('0x3d')][_0x8884('0x18')])throw new Error(_0x8884('0x3e'));if(!_0x472b6a[_0x8884('0x3d')][_0x8884('0x35')])throw new Error(_0x8884('0x3f'));var _0x279276=db['CloudProvider']['rawAttributes']['service'][_0x8884('0x40')];if(!_0x279276[_0x8884('0x41')](_0x472b6a[_0x8884('0x3d')]['service']))throw new Error('Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20'+_0x279276['join'](',\x20'));if(_0x472b6a[_0x8884('0x3d')][_0x8884('0x35')]===_0x8884('0x36')&&_0x472b6a[_0x8884('0x3d')][_0x8884('0x37')]){_0x472b6a[_0x8884('0x3d')]['data3']=encryptor[_0x8884('0x42')](_0x472b6a[_0x8884('0x3d')]['data3']);}return db[_0x8884('0x1d')][_0x8884('0x3c')](_0x472b6a[_0x8884('0x3d')],{})[_0x8884('0x14')](respondWithResult(_0x3f5e8c,0xc9))[_0x8884('0x38')](handleError(_0x3f5e8c,null));};exports['update']=function(_0x5cb76a,_0x28a86f){if(_0x5cb76a[_0x8884('0x3d')]['id']){delete _0x5cb76a[_0x8884('0x3d')]['id'];}return db[_0x8884('0x1d')][_0x8884('0x3a')]({'where':{'id':_0x5cb76a[_0x8884('0x39')]['id']}})[_0x8884('0x14')](handleEntityNotFound(_0x28a86f,null))['then'](function(_0x2a83b7){if(_0x2a83b7[_0x8884('0x35')]===_0x8884('0x36')&&_0x5cb76a[_0x8884('0x3d')][_0x8884('0x37')]){_0x5cb76a['body']['data3']=encryptor['encryptString'](_0x5cb76a[_0x8884('0x3d')][_0x8884('0x37')]);}return _0x2a83b7;})['then'](saveUpdates(_0x5cb76a['body'],null))['then'](respondWithResult(_0x28a86f,null))[_0x8884('0x38')](handleError(_0x28a86f,null));};exports[_0x8884('0x15')]=function(_0x86226,_0x433f21){return db[_0x8884('0x1d')][_0x8884('0x3a')]({'where':{'id':_0x86226[_0x8884('0x39')]['id']}})[_0x8884('0x14')](handleEntityNotFound(_0x433f21,null))['then'](removeEntity(_0x433f21,null))['catch'](handleError(_0x433f21,null));};exports['oauth2MicrosoftAuthorize']=function(_0x2a4bb5,_0x4818e5){return db[_0x8884('0x1d')][_0x8884('0x43')]({'where':{'id':_0x2a4bb5[_0x8884('0x39')]['id']},'raw':!![]})['then'](function(_0x546d45){if(!_0x546d45)return _0x4818e5['sendStatus'](0x194);return{'url':oauth['generateMicrosoftAuthorizationUrl'](_0x546d45,_0x2a4bb5['user']['id'])};})[_0x8884('0x14')](respondWithResult(_0x4818e5,null))['catch'](handleError(_0x4818e5,null));};exports[_0x8884('0x44')]=function(_0xa0158d,_0x470916){var _0x512aaf=_0xa0158d[_0x8884('0x3d')];var _0x1269a5;var _0x124e7a;if(_0x512aaf[_0x8884('0x17')])throw _0x512aaf;redis[_0x8884('0x45')](_0x512aaf[_0x8884('0x46')])[_0x8884('0x14')](function(_0x4bb485){if(!_0x4bb485)throw new Error(_0x8884('0x47'));_0x1269a5=JSON[_0x8884('0x48')](_0x4bb485);var _0xa66255=Buffer[_0x8884('0x49')](_0x512aaf[_0x8884('0x46')],_0x8884('0x4a'))[_0x8884('0x4b')](_0x8884('0x4c'));_0x124e7a=JSON[_0x8884('0x48')](_0xa66255);if(!oauth[_0x8884('0x4d')](_0x512aaf[_0x8884('0x4e')],_0x1269a5['oauth2Claims']))throw new Error('Unable\x20to\x20validate\x20id_token');redis['del'](_0x512aaf[_0x8884('0x46')]);return oauth[_0x8884('0x4f')](_0x512aaf['code'],_0x1269a5);})[_0x8884('0x14')](function(_0x5484a1){_0x1269a5['data5']=_0x5484a1[_0x8884('0x50')];_0x1269a5[_0x8884('0x51')]=_0x5484a1[_0x8884('0x52')];return db['CloudProvider']['update']({'data5':_0x1269a5[_0x8884('0x53')],'data6':_0x1269a5[_0x8884('0x51')]},{'where':{'id':_0x1269a5['id']}});})[_0x8884('0x14')](function(){oauth[_0x8884('0x54')](_0x1269a5);socket[_0x8884('0x55')](_0x8884('0x56'),{'id':_0x124e7a['id']});return;})[_0x8884('0x14')](respondWithStatusCode(_0x470916,null))[_0x8884('0x38')](function(_0x5ab4de){if(_0x124e7a){socket[_0x8884('0x55')](_0x8884('0x57'),{'id':_0x124e7a['id']});}if(!_0x1269a5){logger[_0x8884('0x17')](_0x8884('0x58'),_0x5ab4de);return _0x470916[_0x8884('0xc')](0x1f4)['send'](_0x5ab4de['message']);}logger['error']('Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s',_0x1269a5['id'],JSON[_0x8884('0x59')](_0x5ab4de));});};
\ No newline at end of file
index c56e6e5..d69c7ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2ce=['define','CloudProvider','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./cloudProvider.attributes','exports'];(function(_0x23da79,_0x5cf49c){var _0xa1366e=function(_0x1c7d1d){while(--_0x1c7d1d){_0x23da79['push'](_0x23da79['shift']());}};_0xa1366e(++_0x5cf49c);}(_0xd2ce,0x98));var _0xed2c=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xd2ce[_0x2763f2];return _0x3ef471;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xed2c('0x0'))('api');var moment=require(_0xed2c('0x1'));var BPromise=require(_0xed2c('0x2'));var rp=require(_0xed2c('0x3'));var fs=require('fs');var path=require(_0xed2c('0x4'));var rimraf=require('rimraf');var config=require(_0xed2c('0x5'));var attributes=require(_0xed2c('0x6'));module[_0xed2c('0x7')]=function(_0x439679,_0x607341){return _0x439679[_0xed2c('0x8')](_0xed2c('0x9'),attributes,{'tableName':'cloud_providers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x90ed=['../../config/logger','bluebird','request-promise','path','rimraf','exports','CloudProvider','cloud_providers','util'];(function(_0x3304ab,_0x236477){var _0x58396c=function(_0x34c5ae){while(--_0x34c5ae){_0x3304ab['push'](_0x3304ab['shift']());}};_0x58396c(++_0x236477);}(_0x90ed,0x1ee));var _0xd90e=function(_0x47e3e5,_0x54ee58){_0x47e3e5=_0x47e3e5-0x0;var _0x18b0d6=_0x90ed[_0x47e3e5];return _0x18b0d6;};'use strict';var _=require('lodash');var util=require(_0xd90e('0x0'));var logger=require(_0xd90e('0x1'))('api');var moment=require('moment');var BPromise=require(_0xd90e('0x2'));var rp=require(_0xd90e('0x3'));var fs=require('fs');var path=require(_0xd90e('0x4'));var rimraf=require(_0xd90e('0x5'));var config=require('../../config/environment');var attributes=require('./cloudProvider.attributes');module[_0xd90e('0x6')]=function(_0xfb2bf1,_0x2be538){return _0xfb2bf1['define'](_0xd90e('0x7'),attributes,{'tableName':_0xd90e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d9712a7..bd12ba2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd68a=['issuer','aud','audience','isAfter','unix','resolve','then','data3','CloudProvider','refresh_token','data6','POST','data5','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','decryptString','{TENANT_ID}','intervals','bind','map','all','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','lodash','request-promise','util','../../components/encryptor','../../config/environment','../../config/logger','../../config/schedule/cloud-provider','../../mysqldb','defaults','redis','localhost','openid','profile','email','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/authorize','push','data7','/.default','Dynamics365','replace','data2','id_token','from','stringify','randomBytes','hex','data1','response_type','join','redirect_uri','data4','response_mode','form_post','state','nonce','prompt','login','key','value','oauth2Claims','oauth2/','set','decode','iss'];(function(_0x5805d7,_0x3d584a){var _0x170fe4=function(_0x3b9b73){while(--_0x3b9b73){_0x5805d7['push'](_0x5805d7['shift']());}};_0x170fe4(++_0x3d584a);}(_0xd68a,0xed));var _0xad68=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0xd68a[_0x68ee8b];return _0x5148f7;};'use strict';var _=require(_0xad68('0x0'));var crypto=require('crypto');var jwt=require('jsonwebtoken');var moment=require('moment');var Redis=require('ioredis');var rp=require(_0xad68('0x1'));var util=require(_0xad68('0x2'));var encryptor=require(_0xad68('0x3'));var config=require(_0xad68('0x4'));var logger=require(_0xad68('0x5'))('api');var schedule=require(_0xad68('0x6'));var db=require(_0xad68('0x7'))['db'];config['redis']=_[_0xad68('0x8')](config[_0xad68('0x9')],{'host':_0xad68('0xa'),'port':0x18eb});var redis=new Redis(config[_0xad68('0x9')]);var MICROSOFT_AUTH_URL='https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0';var AZURE_AUTH_SCOPES={'Outlook365':[_0xad68('0xb'),_0xad68('0xc'),_0xad68('0xd'),'offline_access',_0xad68('0xe'),_0xad68('0xf'),_0xad68('0x10')],'Dynamics365':['openid','offline_access']};var MICROSOFT_AUTH_ENDPOINT=_0xad68('0x11');var MICROSOFT_TOKEN_ENDPOINT='/token';var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x5de8e7){var _0x554f38=_['map'](AZURE_AUTH_SCOPES[_0x5de8e7['type']]);if(_0x5de8e7['type']==='Dynamics365')_0x554f38[_0xad68('0x12')](_0x5de8e7[_0xad68('0x13')]+_0xad68('0x14'));return _0x554f38['join']('\x20');}function getAccessTokenScope(_0x43bc3f){if(_0x43bc3f['type']==='Outlook365')return _0xad68('0xe');if(_0x43bc3f['type']===_0xad68('0x15'))return _0x43bc3f[_0xad68('0x13')]+'/.default';}function generateMicrosoftAuthorizationUrl(_0x51b89a,_0x465a50){var _0x58eae1=MICROSOFT_AUTH_URL[_0xad68('0x16')]('{TENANT_ID}',_0x51b89a[_0xad68('0x17')]);var _0x3e00d0=['code',_0xad68('0x18')];var _0x170fc1=Buffer[_0xad68('0x19')](JSON[_0xad68('0x1a')]({'id':_0x465a50}))['toString']('base64');var _0x2e1078=crypto[_0xad68('0x1b')](0x10)['toString'](_0xad68('0x1c'));var _0x205939=getAuthorizationScopes(_0x51b89a);var _0x16ea1f=[{'key':'client_id','value':_0x51b89a[_0xad68('0x1d')]},{'key':_0xad68('0x1e'),'value':encodeURIComponent(_0x3e00d0[_0xad68('0x1f')]('\x20'))},{'key':_0xad68('0x20'),'value':_0x51b89a[_0xad68('0x21')]},{'key':_0xad68('0x22'),'value':_0xad68('0x23')},{'key':'scope','value':encodeURIComponent(_0x205939)},{'key':_0xad68('0x24'),'value':_0x170fc1},{'key':_0xad68('0x25'),'value':_0x2e1078},{'key':_0xad68('0x26'),'value':_0xad68('0x27')}];var _0x56e0d7=_0x58eae1+MICROSOFT_AUTH_ENDPOINT+'?'+_['map'](_0x16ea1f,function(_0x3fa9cb){return _0x3fa9cb[_0xad68('0x28')]+'='+_0x3fa9cb[_0xad68('0x29')];})[_0xad68('0x1f')]('&');_0x51b89a[_0xad68('0x2a')]={'issuer':_0x58eae1[_0xad68('0x16')](_0xad68('0x2b'),''),'audience':_0x51b89a[_0xad68('0x1d')],'state':_0x170fc1,'nonce':_0x2e1078};redis[_0xad68('0x2c')](_0x170fc1,JSON[_0xad68('0x1a')](_0x51b89a));return _0x56e0d7;}function isValidIdToken(_0x203864,_0x19883b){try{var _0x2f2a19=jwt[_0xad68('0x2d')](_0x203864,{'complete':!![]});var _0x267920=_0x2f2a19['payload'];if(_0x267920[_0xad68('0x2e')]!==_0x19883b[_0xad68('0x2f')])return![];if(_0x267920[_0xad68('0x30')]!==_0x19883b[_0xad68('0x31')])return![];if(_0x267920[_0xad68('0x25')]!==_0x19883b[_0xad68('0x25')])return![];if(moment()[_0xad68('0x32')](moment[_0xad68('0x33')](_0x267920['exp'])))return![];return!![];}catch(_0x1c5e9f){throw _0x1c5e9f;}}function refreshOauth2MicrosoftAccessToken(_0x443b41){return Promise[_0xad68('0x34')]()[_0xad68('0x35')](function(){if(_0x443b41[_0xad68('0x36')])return _0x443b41;return db[_0xad68('0x37')]['findOne']({'where':{'id':_0x443b41['id']},'raw':!![]});})[_0xad68('0x35')](function(_0xe8827e){var _0x1c217b={'grant_type':_0xad68('0x38'),'refresh_token':_0xe8827e[_0xad68('0x39')],'scope':getAccessTokenScope(_0xe8827e),'redirect_uri':_0xe8827e[_0xad68('0x21')],'client_id':_0xe8827e[_0xad68('0x1d')],'client_secret':encryptor['decryptString'](_0xe8827e[_0xad68('0x36')])};var _0x27dc35={'method':_0xad68('0x3a'),'uri':MICROSOFT_AUTH_URL['replace']('{TENANT_ID}',_0xe8827e[_0xad68('0x17')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x1c217b,'json':!![]};return rp(_0x27dc35);})['then'](function(_0x5d2510){_0x443b41[_0xad68('0x3b')]=_0x5d2510['access_token'];_0x443b41[_0xad68('0x39')]=_0x5d2510['refresh_token'];return db[_0xad68('0x37')][_0xad68('0x3c')]({'data5':_0x443b41[_0xad68('0x3b')],'data6':_0x443b41['data6']},{'where':{'id':_0x443b41['id']}});})['then'](function(){return _0x443b41;})[_0xad68('0x3d')](function(_0x14060b){logger[_0xad68('0x3e')](_0xad68('0x3f'),_0x443b41['id'],_0x14060b);});}function getOauth2MicrosoftAccessToken(_0x6382c3,_0x8d28f9){var _0xeea008={'grant_type':'authorization_code','code':_0x6382c3,'scope':getAccessTokenScope(_0x8d28f9),'redirect_uri':_0x8d28f9[_0xad68('0x21')],'client_id':_0x8d28f9[_0xad68('0x1d')],'client_secret':encryptor[_0xad68('0x40')](_0x8d28f9[_0xad68('0x36')])};var _0x193def={'method':'POST','uri':MICROSOFT_AUTH_URL[_0xad68('0x16')](_0xad68('0x41'),_0x8d28f9[_0xad68('0x17')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0xeea008,'json':!![]};return rp(_0x193def);}function startRefreshInterval(_0x2ac6ed){var _0x546d90=schedule[_0xad68('0x42')];if(_0x546d90[_0x2ac6ed['id']])clearInterval(_0x546d90[_0x2ac6ed['id']]);_0x546d90[_0x2ac6ed['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0xad68('0x43')](this,{'id':_0x2ac6ed['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule['intervals']=_0x546d90;}function startAllRefreshIntervals(){return db[_0xad68('0x37')]['findAll']({'where':{'data6':{'$ne':null}},'raw':!![]})['then'](function(_0x481002){var _0x362427=_0x481002[_0xad68('0x44')](function(_0x57c33b){return refreshOauth2MicrosoftAccessToken(_0x57c33b)[_0xad68('0x35')](function(_0x2612ba){startRefreshInterval(_0x2612ba);});});return Promise[_0xad68('0x45')](_0x362427);})[_0xad68('0x3d')](function(_0x36acd6){var _0x152d48=_0x36acd6?util['inspect'](_0x36acd6,{'showHidden':![],'depth':null}):'';logger[_0xad68('0x3e')](_0xad68('0x46'),_0x152d48);});}module['exports']={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0x2186=['resolve','then','data3','CloudProvider','findOne','refresh_token','decryptString','POST','data5','access_token','data6','update','catch','authorization_code','intervals','findAll','all','error','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','lodash','crypto','jsonwebtoken','moment','ioredis','request-promise','util','api','../../mysqldb','redis','defaults','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','profile','email','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/authorize','/token','map','type','data7','join','Dynamics365','{TENANT_ID}','data2','code','id_token','stringify','toString','base64','randomBytes','hex','data1','response_type','redirect_uri','data4','response_mode','form_post','scope','state','nonce','prompt','login','key','value','oauth2Claims','replace','set','payload','iss','issuer','aud','isAfter','unix','exp'];(function(_0xd8813a,_0x315766){var _0x487db6=function(_0x538ca9){while(--_0x538ca9){_0xd8813a['push'](_0xd8813a['shift']());}};_0x487db6(++_0x315766);}(_0x2186,0x199));var _0x6218=function(_0x13064f,_0x1acb31){_0x13064f=_0x13064f-0x0;var _0x4c12e5=_0x2186[_0x13064f];return _0x4c12e5;};'use strict';var _=require(_0x6218('0x0'));var crypto=require(_0x6218('0x1'));var jwt=require(_0x6218('0x2'));var moment=require(_0x6218('0x3'));var Redis=require(_0x6218('0x4'));var rp=require(_0x6218('0x5'));var util=require(_0x6218('0x6'));var encryptor=require('../../components/encryptor');var config=require('../../config/environment');var logger=require('../../config/logger')(_0x6218('0x7'));var schedule=require('../../config/schedule/cloud-provider');var db=require(_0x6218('0x8'))['db'];config[_0x6218('0x9')]=_[_0x6218('0xa')](config[_0x6218('0x9')],{'host':_0x6218('0xb'),'port':0x18eb});var redis=new Redis(config[_0x6218('0x9')]);var MICROSOFT_AUTH_URL=_0x6218('0xc');var AZURE_AUTH_SCOPES={'Outlook365':[_0x6218('0xd'),_0x6218('0xe'),_0x6218('0xf'),_0x6218('0x10'),_0x6218('0x11'),_0x6218('0x12'),_0x6218('0x13')],'Dynamics365':[_0x6218('0xd'),'offline_access']};var MICROSOFT_AUTH_ENDPOINT=_0x6218('0x14');var MICROSOFT_TOKEN_ENDPOINT=_0x6218('0x15');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x4aca7c){var _0x2478c9=_[_0x6218('0x16')](AZURE_AUTH_SCOPES[_0x4aca7c[_0x6218('0x17')]]);if(_0x4aca7c['type']==='Dynamics365')_0x2478c9['push'](_0x4aca7c[_0x6218('0x18')]+'/.default');return _0x2478c9[_0x6218('0x19')]('\x20');}function getAccessTokenScope(_0x4100d7){if(_0x4100d7[_0x6218('0x17')]==='Outlook365')return _0x6218('0x11');if(_0x4100d7[_0x6218('0x17')]===_0x6218('0x1a'))return _0x4100d7[_0x6218('0x18')]+'/.default';}function generateMicrosoftAuthorizationUrl(_0x5aacb5,_0x3d8e78){var _0x43b510=MICROSOFT_AUTH_URL['replace'](_0x6218('0x1b'),_0x5aacb5[_0x6218('0x1c')]);var _0x55b713=[_0x6218('0x1d'),_0x6218('0x1e')];var _0xaded7f=Buffer['from'](JSON[_0x6218('0x1f')]({'id':_0x3d8e78}))[_0x6218('0x20')](_0x6218('0x21'));var _0x854c25=crypto[_0x6218('0x22')](0x10)['toString'](_0x6218('0x23'));var _0x1d3b7c=getAuthorizationScopes(_0x5aacb5);var _0x848cb0=[{'key':'client_id','value':_0x5aacb5[_0x6218('0x24')]},{'key':_0x6218('0x25'),'value':encodeURIComponent(_0x55b713[_0x6218('0x19')]('\x20'))},{'key':_0x6218('0x26'),'value':_0x5aacb5[_0x6218('0x27')]},{'key':_0x6218('0x28'),'value':_0x6218('0x29')},{'key':_0x6218('0x2a'),'value':encodeURIComponent(_0x1d3b7c)},{'key':_0x6218('0x2b'),'value':_0xaded7f},{'key':_0x6218('0x2c'),'value':_0x854c25},{'key':_0x6218('0x2d'),'value':_0x6218('0x2e')}];var _0x31c177=_0x43b510+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x6218('0x16')](_0x848cb0,function(_0x19d466){return _0x19d466[_0x6218('0x2f')]+'='+_0x19d466[_0x6218('0x30')];})[_0x6218('0x19')]('&');_0x5aacb5[_0x6218('0x31')]={'issuer':_0x43b510[_0x6218('0x32')]('oauth2/',''),'audience':_0x5aacb5[_0x6218('0x24')],'state':_0xaded7f,'nonce':_0x854c25};redis[_0x6218('0x33')](_0xaded7f,JSON[_0x6218('0x1f')](_0x5aacb5));return _0x31c177;}function isValidIdToken(_0x5824ce,_0x18882f){try{var _0x78178a=jwt['decode'](_0x5824ce,{'complete':!![]});var _0x5e172c=_0x78178a[_0x6218('0x34')];if(_0x5e172c[_0x6218('0x35')]!==_0x18882f[_0x6218('0x36')])return![];if(_0x5e172c[_0x6218('0x37')]!==_0x18882f['audience'])return![];if(_0x5e172c[_0x6218('0x2c')]!==_0x18882f[_0x6218('0x2c')])return![];if(moment()[_0x6218('0x38')](moment[_0x6218('0x39')](_0x5e172c[_0x6218('0x3a')])))return![];return!![];}catch(_0x4a9f60){throw _0x4a9f60;}}function refreshOauth2MicrosoftAccessToken(_0x5e7089){return Promise[_0x6218('0x3b')]()[_0x6218('0x3c')](function(){if(_0x5e7089[_0x6218('0x3d')])return _0x5e7089;return db[_0x6218('0x3e')][_0x6218('0x3f')]({'where':{'id':_0x5e7089['id']},'raw':!![]});})['then'](function(_0x1f4ad8){var _0x2a2d48={'grant_type':_0x6218('0x40'),'refresh_token':_0x1f4ad8['data6'],'scope':getAccessTokenScope(_0x1f4ad8),'redirect_uri':_0x1f4ad8[_0x6218('0x27')],'client_id':_0x1f4ad8[_0x6218('0x24')],'client_secret':encryptor[_0x6218('0x41')](_0x1f4ad8[_0x6218('0x3d')])};var _0x5c65bc={'method':_0x6218('0x42'),'uri':MICROSOFT_AUTH_URL[_0x6218('0x32')](_0x6218('0x1b'),_0x1f4ad8[_0x6218('0x1c')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x2a2d48,'json':!![]};return rp(_0x5c65bc);})['then'](function(_0x18a6b3){_0x5e7089[_0x6218('0x43')]=_0x18a6b3[_0x6218('0x44')];_0x5e7089[_0x6218('0x45')]=_0x18a6b3['refresh_token'];return db[_0x6218('0x3e')][_0x6218('0x46')]({'data5':_0x5e7089[_0x6218('0x43')],'data6':_0x5e7089['data6']},{'where':{'id':_0x5e7089['id']}});})[_0x6218('0x3c')](function(){return _0x5e7089;})[_0x6218('0x47')](function(_0x1ee05e){logger['error']('Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s',_0x5e7089['id'],_0x1ee05e);});}function getOauth2MicrosoftAccessToken(_0x4ac665,_0x591abb){var _0x20f876={'grant_type':_0x6218('0x48'),'code':_0x4ac665,'scope':getAccessTokenScope(_0x591abb),'redirect_uri':_0x591abb[_0x6218('0x27')],'client_id':_0x591abb[_0x6218('0x24')],'client_secret':encryptor['decryptString'](_0x591abb[_0x6218('0x3d')])};var _0x3b1f2a={'method':_0x6218('0x42'),'uri':MICROSOFT_AUTH_URL[_0x6218('0x32')](_0x6218('0x1b'),_0x591abb['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x20f876,'json':!![]};return rp(_0x3b1f2a);}function startRefreshInterval(_0x18039a){var _0x3c189f=schedule[_0x6218('0x49')];if(_0x3c189f[_0x18039a['id']])clearInterval(_0x3c189f[_0x18039a['id']]);_0x3c189f[_0x18039a['id']]=setInterval(refreshOauth2MicrosoftAccessToken['bind'](this,{'id':_0x18039a['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule['intervals']=_0x3c189f;}function startAllRefreshIntervals(){return db[_0x6218('0x3e')][_0x6218('0x4a')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x6218('0x3c')](function(_0x555085){var _0x3024ad=_0x555085[_0x6218('0x16')](function(_0x11d9ce){return refreshOauth2MicrosoftAccessToken(_0x11d9ce)['then'](function(_0x3cb0dd){startRefreshInterval(_0x3cb0dd);});});return Promise[_0x6218('0x4b')](_0x3024ad);})[_0x6218('0x47')](function(_0x1a9c56){var _0x3269f5=_0x1a9c56?util['inspect'](_0x1a9c56,{'showHidden':![],'depth':null}):'';logger[_0x6218('0x4c')](_0x6218('0x4d'),_0x3269f5);});}module['exports']={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
index 446e381..c29f391 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c71=['debug','CloudProvider,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent'];(function(_0x4f7997,_0x738024){var _0x5c46b9=function(_0x2f5ec1){while(--_0x2f5ec1){_0x4f7997['push'](_0x4f7997['shift']());}};_0x5c46b9(++_0x738024);}(_0x7c71,0x177));var _0x17c7=function(_0x5d80de,_0x2cf15d){_0x5d80de=_0x5d80de-0x0;var _0x1c7556=_0x7c71[_0x5d80de];return _0x1c7556;};'use strict';var _=require(_0x17c7('0x0'));var util=require(_0x17c7('0x1'));var moment=require(_0x17c7('0x2'));var BPromise=require(_0x17c7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x17c7('0x4'));var db=require(_0x17c7('0x5'))['db'];var utils=require(_0x17c7('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x17c7('0x7'));var jayson=require(_0x17c7('0x8'));var client=jayson[_0x17c7('0x9')][_0x17c7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3c061b,_0xf284a2,_0x1ff4ec){return new BPromise(function(_0x50feb0,_0x13fdad){return client[_0x17c7('0xb')](_0x3c061b,_0x1ff4ec)[_0x17c7('0xc')](function(_0xdb3575){logger[_0x17c7('0xd')](_0x17c7('0xe'),_0xf284a2,_0x17c7('0xf'));logger[_0x17c7('0x10')](_0x17c7('0x11'),_0xf284a2,_0x17c7('0xf'),JSON['stringify'](_0xdb3575));if(_0xdb3575['error']){if(_0xdb3575[_0x17c7('0x12')][_0x17c7('0x13')]===0x1f4){logger['error'](_0x17c7('0xe'),_0xf284a2,_0xdb3575[_0x17c7('0x12')]['message']);return _0x13fdad(_0xdb3575[_0x17c7('0x12')][_0x17c7('0x14')]);}logger['error']('CloudProvider,\x20%s,\x20%s',_0xf284a2,_0xdb3575[_0x17c7('0x12')][_0x17c7('0x14')]);return _0x50feb0(_0xdb3575[_0x17c7('0x12')][_0x17c7('0x14')]);}else{logger[_0x17c7('0xd')](_0x17c7('0xe'),_0xf284a2,_0x17c7('0xf'));_0x50feb0(_0xdb3575[_0x17c7('0x15')][_0x17c7('0x14')]);}})[_0x17c7('0x16')](function(_0x296f9c){logger[_0x17c7('0x12')]('CloudProvider,\x20%s,\x20%s',_0xf284a2,_0x296f9c);_0x13fdad(_0x296f9c);});});}
\ No newline at end of file
+var _0x3fce=['info','CloudProvider,\x20%s,\x20%s','CloudProvider,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','client','http','request','then'];(function(_0x224241,_0x2c870b){var _0x3bcac4=function(_0x43abad){while(--_0x43abad){_0x224241['push'](_0x224241['shift']());}};_0x3bcac4(++_0x2c870b);}(_0x3fce,0x121));var _0xe3fc=function(_0x89a001,_0x3a9a8c){_0x89a001=_0x89a001-0x0;var _0x5f3ec2=_0x3fce[_0x89a001];return _0x5f3ec2;};'use strict';var _=require('lodash');var util=require(_0xe3fc('0x0'));var moment=require(_0xe3fc('0x1'));var BPromise=require(_0xe3fc('0x2'));var rs=require(_0xe3fc('0x3'));var fs=require('fs');var Redis=require(_0xe3fc('0x4'));var db=require(_0xe3fc('0x5'))['db'];var utils=require(_0xe3fc('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe3fc('0x7')][_0xe3fc('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x523982,_0x200715,_0x49c611){return new BPromise(function(_0x40660f,_0x4a192d){return client[_0xe3fc('0x9')](_0x523982,_0x49c611)[_0xe3fc('0xa')](function(_0x1bb7be){logger[_0xe3fc('0xb')](_0xe3fc('0xc'),_0x200715,'request\x20sent');logger['debug'](_0xe3fc('0xd'),_0x200715,_0xe3fc('0xe'),JSON[_0xe3fc('0xf')](_0x1bb7be));if(_0x1bb7be['error']){if(_0x1bb7be[_0xe3fc('0x10')][_0xe3fc('0x11')]===0x1f4){logger[_0xe3fc('0x10')](_0xe3fc('0xc'),_0x200715,_0x1bb7be[_0xe3fc('0x10')][_0xe3fc('0x12')]);return _0x4a192d(_0x1bb7be[_0xe3fc('0x10')]['message']);}logger[_0xe3fc('0x10')](_0xe3fc('0xc'),_0x200715,_0x1bb7be['error'][_0xe3fc('0x12')]);return _0x40660f(_0x1bb7be[_0xe3fc('0x10')]['message']);}else{logger[_0xe3fc('0xb')](_0xe3fc('0xc'),_0x200715,'request\x20sent');_0x40660f(_0x1bb7be['result']['message']);}})[_0xe3fc('0x13')](function(_0x4283be){logger[_0xe3fc('0x10')]('CloudProvider,\x20%s,\x20%s',_0x200715,_0x4283be);_0x4a192d(_0x4283be);});});}
\ No newline at end of file
index 2a64cc5..315deec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['exports','express','Router','../../components/auth/service','./cloudProvider.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','delete','destroy','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','oauth2MicrosoftCallback'];(function(_0x51ed62,_0x574379){var _0x34aee3=function(_0x2958bc){while(--_0x2958bc){_0x51ed62['push'](_0x51ed62['shift']());}};_0x34aee3(++_0x574379);}(_0x5f2f,0x73));var _0xf5f2=function(_0x16268a,_0x10ce1b){_0x16268a=_0x16268a-0x0;var _0x419a09=_0x5f2f[_0x16268a];return _0x419a09;};'use strict';var express=require(_0xf5f2('0x0'));var router=express[_0xf5f2('0x1')]();var auth=require(_0xf5f2('0x2'));var controller=require(_0xf5f2('0x3'));router[_0xf5f2('0x4')]('/',auth[_0xf5f2('0x5')](),controller[_0xf5f2('0x6')]);router[_0xf5f2('0x4')]('/:id',auth['isAuthenticated'](),controller[_0xf5f2('0x7')]);router[_0xf5f2('0x8')]('/',auth[_0xf5f2('0x5')](),controller[_0xf5f2('0x9')]);router[_0xf5f2('0xa')](_0xf5f2('0xb'),auth['isAuthenticated'](),controller[_0xf5f2('0xc')]);router[_0xf5f2('0xd')](_0xf5f2('0xb'),auth['isAuthenticated'](),controller[_0xf5f2('0xe')]);router[_0xf5f2('0x4')](_0xf5f2('0xf'),auth['isAuthenticated'](),controller[_0xf5f2('0x10')]);router['post']('/oauth2/microsoft/callback',controller[_0xf5f2('0x11')]);module[_0xf5f2('0x12')]=router;
\ No newline at end of file
+var _0x2ef3=['Router','../../components/auth/service','./cloudProvider.controller','get','isAuthenticated','/:id','show','post','put','update','delete','destroy','/:id/oauth2/microsoft/authorize/','/oauth2/microsoft/callback','oauth2MicrosoftCallback','exports','express'];(function(_0x2a3dbb,_0x21fea8){var _0x37f09f=function(_0xfe1f08){while(--_0xfe1f08){_0x2a3dbb['push'](_0x2a3dbb['shift']());}};_0x37f09f(++_0x21fea8);}(_0x2ef3,0xba));var _0x32ef=function(_0x372ed9,_0x542bea){_0x372ed9=_0x372ed9-0x0;var _0x3df61c=_0x2ef3[_0x372ed9];return _0x3df61c;};'use strict';var express=require(_0x32ef('0x0'));var router=express[_0x32ef('0x1')]();var auth=require(_0x32ef('0x2'));var controller=require(_0x32ef('0x3'));router[_0x32ef('0x4')]('/',auth[_0x32ef('0x5')](),controller['index']);router[_0x32ef('0x4')](_0x32ef('0x6'),auth['isAuthenticated'](),controller[_0x32ef('0x7')]);router[_0x32ef('0x8')]('/',auth['isAuthenticated'](),controller['create']);router[_0x32ef('0x9')](_0x32ef('0x6'),auth[_0x32ef('0x5')](),controller[_0x32ef('0xa')]);router[_0x32ef('0xb')](_0x32ef('0x6'),auth[_0x32ef('0x5')](),controller[_0x32ef('0xc')]);router[_0x32ef('0x4')](_0x32ef('0xd'),auth['isAuthenticated'](),controller['oauth2MicrosoftAuthorize']);router[_0x32ef('0x8')](_0x32ef('0xe'),controller[_0x32ef('0xf')]);module[_0x32ef('0x10')]=router;
\ No newline at end of file
index 513a674..a8462e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3236=['name','sequelize','exports','STRING'];(function(_0x417020,_0x3ee315){var _0x5715ec=function(_0x272358){while(--_0x272358){_0x417020['push'](_0x417020['shift']());}};_0x5715ec(++_0x3ee315);}(_0x3236,0x91));var _0x6323=function(_0x324cc6,_0x2d4876){_0x324cc6=_0x324cc6-0x0;var _0x317e7a=_0x3236[_0x324cc6];return _0x317e7a;};'use strict';var Sequelize=require(_0x6323('0x0'));module[_0x6323('0x1')]={'name':{'type':Sequelize[_0x6323('0x2')],'unique':_0x6323('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0x6323('0x2')]},'website':{'type':Sequelize[_0x6323('0x2')]},'phone':{'type':Sequelize[_0x6323('0x2')]},'fax':{'type':Sequelize[_0x6323('0x2')]},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0x6323('0x2')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x6323('0x2')]},'country':{'type':Sequelize[_0x6323('0x2')]},'email':{'type':Sequelize[_0x6323('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x6323('0x2')]},'sStreet':{'type':Sequelize[_0x6323('0x2')]},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize[_0x6323('0x2')]},'description':{'type':Sequelize[_0x6323('0x2')]}};
\ No newline at end of file
+var _0x968c=['name','sequelize','exports','STRING'];(function(_0x1bd6f2,_0x53cd9a){var _0x2555b5=function(_0x1c4609){while(--_0x1c4609){_0x1bd6f2['push'](_0x1bd6f2['shift']());}};_0x2555b5(++_0x53cd9a);}(_0x968c,0x189));var _0xc968=function(_0x407197,_0x53024d){_0x407197=_0x407197-0x0;var _0x49a4cf=_0x968c[_0x407197];return _0x49a4cf;};'use strict';var Sequelize=require(_0xc968('0x0'));module[_0xc968('0x1')]={'name':{'type':Sequelize[_0xc968('0x2')],'unique':_0xc968('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xc968('0x2')]},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize[_0xc968('0x2')]},'phone':{'type':Sequelize[_0xc968('0x2')]},'fax':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xc968('0x2')]},'street':{'type':Sequelize[_0xc968('0x2')]},'postalCode':{'type':Sequelize[_0xc968('0x2')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0xc968('0x2')]},'email':{'type':Sequelize[_0xc968('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xc968('0x2')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0xc968('0x2')]},'sCity':{'type':Sequelize[_0xc968('0x2')]},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xc968('0x2')]}};
\ No newline at end of file
index 5ffb0e2..6c981a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d2e=['getContacts','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','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','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','destroy','get','Companies','UserProfileResource','name','send','describe','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','map','merge','options','CmCompany','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addContacts','CmContact','ids','omit','findOne','rawAttributes'];(function(_0x5bf301,_0x42f14c){var _0x28180d=function(_0x5c13ee){while(--_0x5c13ee){_0x5bf301['push'](_0x5bf301['shift']());}};_0x28180d(++_0x42f14c);}(_0x9d2e,0x115));var _0xe9d2=function(_0x16380c,_0xc55d7f){_0x16380c=_0x16380c-0x0;var _0x40b45d=_0x9d2e[_0x16380c];return _0x40b45d;};'use strict';var emlformat=require(_0xe9d2('0x0'));var rimraf=require(_0xe9d2('0x1'));var zipdir=require(_0xe9d2('0x2'));var jsonpatch=require(_0xe9d2('0x3'));var rp=require(_0xe9d2('0x4'));var moment=require(_0xe9d2('0x5'));var BPromise=require(_0xe9d2('0x6'));var Mustache=require(_0xe9d2('0x7'));var util=require(_0xe9d2('0x8'));var path=require(_0xe9d2('0x9'));var sox=require('sox');var csv=require(_0xe9d2('0xa'));var ejs=require(_0xe9d2('0xb'));var fs=require('fs');var fs_extra=require(_0xe9d2('0xc'));var _=require(_0xe9d2('0xd'));var squel=require(_0xe9d2('0xe'));var crypto=require(_0xe9d2('0xf'));var jsforce=require(_0xe9d2('0x10'));var deskjs=require(_0xe9d2('0x11'));var toCsv=require('to-csv');var querystring=require(_0xe9d2('0x12'));var Papa=require('papaparse');var Redis=require(_0xe9d2('0x13'));var authService=require(_0xe9d2('0x14'));var qs=require(_0xe9d2('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe9d2('0x16'));var logger=require(_0xe9d2('0x17'))(_0xe9d2('0x18'));var utils=require(_0xe9d2('0x19'));var config=require(_0xe9d2('0x1a'));var licenseUtil=require(_0xe9d2('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5bef60,_0x4f3bac){_0x4f3bac=_0x4f3bac||0xcc;return function(_0x2bcfbd){if(_0x2bcfbd){return _0x5bef60[_0xe9d2('0x1c')](_0x4f3bac);}return _0x5bef60[_0xe9d2('0x1d')](_0x4f3bac)[_0xe9d2('0x1e')]();};}function respondWithResult(_0x553897,_0x449367){_0x449367=_0x449367||0xc8;return function(_0x4eba5b){if(_0x4eba5b){return _0x553897[_0xe9d2('0x1d')](_0x449367)[_0xe9d2('0x1f')](_0x4eba5b);}};}function respondWithFilteredResult(_0x11c9cf,_0x1dddae){return function(_0x2d6cbe){if(_0x2d6cbe){var _0x248ceb=typeof _0x1dddae['offset']===_0xe9d2('0x20')&&typeof _0x1dddae[_0xe9d2('0x21')]===_0xe9d2('0x20');var _0x4dbced=_0x2d6cbe[_0xe9d2('0x22')];var _0x319be7=_0x248ceb?0x0:_0x1dddae['offset'];var _0x256b6e=_0x248ceb?_0x2d6cbe['count']:_0x1dddae[_0xe9d2('0x23')]+_0x1dddae[_0xe9d2('0x21')];var _0x4c3e6f;if(_0x256b6e>=_0x4dbced){_0x256b6e=_0x4dbced;_0x4c3e6f=0xc8;}else{_0x4c3e6f=0xce;}_0x11c9cf['status'](_0x4c3e6f);return _0x11c9cf[_0xe9d2('0x24')](_0xe9d2('0x25'),_0x319be7+'-'+_0x256b6e+'/'+_0x4dbced)['json'](_0x2d6cbe);}return null;};}function patchUpdates(_0x582b5c){return function(_0x8a9318){try{jsonpatch[_0xe9d2('0x26')](_0x8a9318,_0x582b5c,!![]);}catch(_0x4a1825){return BPromise[_0xe9d2('0x27')](_0x4a1825);}return _0x8a9318['save']();};}function saveUpdates(_0x273e61,_0x49f7b4){return function(_0x161082){if(_0x161082){return _0x161082[_0xe9d2('0x28')](_0x273e61)[_0xe9d2('0x29')](function(_0x96c284){return _0x96c284;});}return null;};}function removeEntity(_0x213469,_0x5956a3){return function(_0x23afef){if(_0x23afef){return _0x23afef[_0xe9d2('0x2a')]()['then'](function(){var _0x3a6c7a=_0x23afef[_0xe9d2('0x2b')]({'plain':!![]});var _0x10637c=_0xe9d2('0x2c');return db[_0xe9d2('0x2d')][_0xe9d2('0x2a')]({'where':{'type':_0x10637c,'resourceId':_0x3a6c7a['id']}})[_0xe9d2('0x29')](function(){return _0x23afef;});})[_0xe9d2('0x29')](function(){_0x213469['status'](0xcc)[_0xe9d2('0x1e')]();});}};}function handleEntityNotFound(_0xae7c9d,_0x576303){return function(_0x3d01a0){if(!_0x3d01a0){_0xae7c9d[_0xe9d2('0x1c')](0x194);}return _0x3d01a0;};}function handleError(_0x13e510,_0x379c2c){_0x379c2c=_0x379c2c||0x1f4;return function(_0x597f4a){logger['error'](_0x597f4a['stack']);if(_0x597f4a[_0xe9d2('0x2e')]){delete _0x597f4a[_0xe9d2('0x2e')];}_0x13e510[_0xe9d2('0x1d')](_0x379c2c)[_0xe9d2('0x2f')](_0x597f4a);};}exports['index']=function(_0x12be81,_0x3dd8cc){var _0x14ac6c={},_0x32db50={},_0x3926f6={'count':0x0,'rows':[]};return db['CmCompany'][_0xe9d2('0x30')]()[_0xe9d2('0x29')](function(_0x43b9b6){_0x32db50[_0xe9d2('0x31')]=_[_0xe9d2('0x32')](_0x43b9b6);_0x32db50[_0xe9d2('0x33')]=_[_0xe9d2('0x32')](_0x12be81[_0xe9d2('0x33')]);_0x32db50[_0xe9d2('0x34')]=_['intersection'](_0x32db50['model'],_0x32db50[_0xe9d2('0x33')]);_0x14ac6c[_0xe9d2('0x35')]=_[_0xe9d2('0x36')](_0x32db50[_0xe9d2('0x31')],qs[_0xe9d2('0x37')](_0x12be81['query'][_0xe9d2('0x37')]));_0x14ac6c[_0xe9d2('0x35')]=_0x14ac6c[_0xe9d2('0x35')][_0xe9d2('0x38')]?_0x14ac6c['attributes']:_0x32db50['model'];if(!_0x12be81['query'][_0xe9d2('0x39')](_0xe9d2('0x3a'))){_0x14ac6c[_0xe9d2('0x21')]=qs[_0xe9d2('0x21')](_0x12be81[_0xe9d2('0x33')][_0xe9d2('0x21')]);_0x14ac6c['offset']=qs['offset'](_0x12be81['query']['offset']);}_0x14ac6c[_0xe9d2('0x3b')]=qs[_0xe9d2('0x3c')](_0x12be81[_0xe9d2('0x33')][_0xe9d2('0x3c')]);_0x14ac6c['where']=qs[_0xe9d2('0x34')](_[_0xe9d2('0x3d')](_0x12be81[_0xe9d2('0x33')],_0x32db50['filters']),_0x43b9b6);if(_0x12be81['query'][_0xe9d2('0x3e')]){_0x14ac6c[_0xe9d2('0x3f')]=_['merge'](_0x14ac6c['where'],{'$or':_[_0xe9d2('0x40')](_0x14ac6c['attributes'],function(_0x22458a){var _0x1c9b4a={};_0x1c9b4a[_0x22458a]={'$like':'%'+_0x12be81[_0xe9d2('0x33')][_0xe9d2('0x3e')]+'%'};return _0x1c9b4a;})});}_0x14ac6c=_[_0xe9d2('0x41')]({},_0x14ac6c,_0x12be81[_0xe9d2('0x42')]);var _0x825c66={'where':_0x14ac6c['where']};return db[_0xe9d2('0x43')]['count'](_0x825c66)['then'](function(_0x58c828){_0x3926f6[_0xe9d2('0x22')]=_0x58c828;if(_0x12be81[_0xe9d2('0x33')][_0xe9d2('0x44')]){_0x14ac6c[_0xe9d2('0x45')]=[{'all':!![]}];}return db[_0xe9d2('0x43')][_0xe9d2('0x46')](_0x14ac6c);})[_0xe9d2('0x29')](function(_0x792179){_0x3926f6[_0xe9d2('0x47')]=_0x792179;return _0x3926f6;})[_0xe9d2('0x29')](respondWithFilteredResult(_0x3dd8cc,_0x14ac6c))[_0xe9d2('0x48')](handleError(_0x3dd8cc,null));})['catch'](handleError(_0x3dd8cc,null));};exports[_0xe9d2('0x49')]=function(_0x3b9c3f,_0x1d8537){var _0x2c23f1={'raw':![],'where':{'id':_0x3b9c3f[_0xe9d2('0x4a')]['id']}},_0x2ea594={};_0x2ea594[_0xe9d2('0x31')]=_['keys'](db[_0xe9d2('0x43')]['rawAttributes']);_0x2ea594['query']=_[_0xe9d2('0x32')](_0x3b9c3f[_0xe9d2('0x33')]);_0x2ea594[_0xe9d2('0x34')]=_[_0xe9d2('0x36')](_0x2ea594[_0xe9d2('0x31')],_0x2ea594[_0xe9d2('0x33')]);_0x2c23f1[_0xe9d2('0x35')]=_[_0xe9d2('0x36')](_0x2ea594[_0xe9d2('0x31')],qs['fields'](_0x3b9c3f['query']['fields']));_0x2c23f1[_0xe9d2('0x35')]=_0x2c23f1[_0xe9d2('0x35')]['length']?_0x2c23f1[_0xe9d2('0x35')]:_0x2ea594[_0xe9d2('0x31')];if(_0x3b9c3f[_0xe9d2('0x33')]['includeAll']){_0x2c23f1['include']=[{'all':!![]}];}_0x2c23f1=_[_0xe9d2('0x41')]({},_0x2c23f1,_0x3b9c3f['options']);return db[_0xe9d2('0x43')][_0xe9d2('0x4b')](_0x2c23f1)[_0xe9d2('0x29')](handleEntityNotFound(_0x1d8537,null))[_0xe9d2('0x29')](respondWithResult(_0x1d8537,null))['catch'](handleError(_0x1d8537,null));};exports['create']=function(_0x303f9b,_0x4ec056){return db[_0xe9d2('0x43')][_0xe9d2('0x4c')](_0x303f9b[_0xe9d2('0x4d')],{})[_0xe9d2('0x29')](function(_0xc61daa){var _0x3f9e46=_0x303f9b[_0xe9d2('0x4e')][_0xe9d2('0x2b')]({'plain':!![]});if(!_0x3f9e46)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3f9e46[_0xe9d2('0x4f')]===_0xe9d2('0x4e')){var _0x59d5ed=_0xc61daa[_0xe9d2('0x2b')]({'plain':!![]});var _0x3d1776='Companies';return db[_0xe9d2('0x50')]['find']({'where':{'name':_0x3d1776,'userProfileId':_0x3f9e46[_0xe9d2('0x51')]},'raw':!![]})[_0xe9d2('0x29')](function(_0x5f0717){if(_0x5f0717&&_0x5f0717[_0xe9d2('0x52')]===0x0){return db[_0xe9d2('0x2d')][_0xe9d2('0x4c')]({'name':_0x59d5ed[_0xe9d2('0x2e')],'resourceId':_0x59d5ed['id'],'type':_0x5f0717[_0xe9d2('0x2e')],'sectionId':_0x5f0717['id']},{})[_0xe9d2('0x29')](function(){return _0xc61daa;});}else{return _0xc61daa;}})[_0xe9d2('0x48')](function(_0x21ea5c){logger[_0xe9d2('0x53')](_0xe9d2('0x54'),_0x21ea5c);throw _0x21ea5c;});}return _0xc61daa;})[_0xe9d2('0x29')](respondWithResult(_0x4ec056,0xc9))[_0xe9d2('0x48')](handleError(_0x4ec056,null));};exports['update']=function(_0x171ed0,_0x4fc099){if(_0x171ed0[_0xe9d2('0x4d')]['id']){delete _0x171ed0[_0xe9d2('0x4d')]['id'];}return db['CmCompany'][_0xe9d2('0x4b')]({'where':{'id':_0x171ed0[_0xe9d2('0x4a')]['id']}})[_0xe9d2('0x29')](handleEntityNotFound(_0x4fc099,null))['then'](saveUpdates(_0x171ed0[_0xe9d2('0x4d')],null))[_0xe9d2('0x29')](respondWithResult(_0x4fc099,null))[_0xe9d2('0x48')](handleError(_0x4fc099,null));};exports[_0xe9d2('0x2a')]=function(_0x7f0ee6,_0x28b1a6){return db[_0xe9d2('0x43')][_0xe9d2('0x4b')]({'where':{'id':_0x7f0ee6[_0xe9d2('0x4a')]['id']}})[_0xe9d2('0x29')](handleEntityNotFound(_0x28b1a6,null))[_0xe9d2('0x29')](removeEntity(_0x28b1a6,null))['catch'](handleError(_0x28b1a6,null));};exports['describe']=function(_0x24310d,_0x20e258){return db[_0xe9d2('0x43')][_0xe9d2('0x30')]()['then'](respondWithResult(_0x20e258,null))[_0xe9d2('0x48')](handleError(_0x20e258,null));};exports[_0xe9d2('0x55')]=function(_0x51a625,_0x4b3374,_0xaa25fb){return db[_0xe9d2('0x56')][_0xe9d2('0x4b')]({'where':{'id':_0x51a625[_0xe9d2('0x4a')]['id']}})[_0xe9d2('0x29')](handleEntityNotFound(_0x4b3374,null))[_0xe9d2('0x29')](function(_0x1b6e55){if(_0x1b6e55){return _0x1b6e55['addContacts'](_0x51a625['body'][_0xe9d2('0x57')],_[_0xe9d2('0x58')](_0x51a625[_0xe9d2('0x4d')],[_0xe9d2('0x57'),'id'])||{});}})[_0xe9d2('0x29')](respondWithResult(_0x4b3374,null))[_0xe9d2('0x48')](handleError(_0x4b3374,null));};exports['getContacts']=function(_0x4227b8,_0x48af0e,_0x1ec006){var _0x56101d={};var _0x546086={};var _0x2ab42f;var _0x618bab;return db['CmCompany'][_0xe9d2('0x59')]({'where':{'id':_0x4227b8[_0xe9d2('0x4a')]['id']}})[_0xe9d2('0x29')](handleEntityNotFound(_0x48af0e,null))['then'](function(_0x4b6c95){if(_0x4b6c95){_0x2ab42f=_0x4b6c95;_0x546086[_0xe9d2('0x31')]=_['keys'](db[_0xe9d2('0x56')][_0xe9d2('0x5a')]);_0x546086[_0xe9d2('0x33')]=_['keys'](_0x4227b8[_0xe9d2('0x33')]);_0x546086['filters']=_['intersection'](_0x546086[_0xe9d2('0x31')],_0x546086[_0xe9d2('0x33')]);_0x56101d[_0xe9d2('0x35')]=_[_0xe9d2('0x36')](_0x546086[_0xe9d2('0x31')],qs[_0xe9d2('0x37')](_0x4227b8[_0xe9d2('0x33')][_0xe9d2('0x37')]));_0x56101d['attributes']=_0x56101d['attributes'][_0xe9d2('0x38')]?_0x56101d[_0xe9d2('0x35')]:_0x546086[_0xe9d2('0x31')];_0x56101d[_0xe9d2('0x3b')]=qs[_0xe9d2('0x3c')](_0x4227b8[_0xe9d2('0x33')][_0xe9d2('0x3c')]);_0x56101d['where']=qs[_0xe9d2('0x34')](_['pick'](_0x4227b8[_0xe9d2('0x33')],_0x546086[_0xe9d2('0x34')]));if(_0x4227b8['query']['filter']){_0x56101d[_0xe9d2('0x3f')]=_[_0xe9d2('0x41')](_0x56101d[_0xe9d2('0x3f')],{'$or':_['map'](_0x56101d[_0xe9d2('0x35')],function(_0x4ed158){var _0x6afc7d={};_0x6afc7d[_0x4ed158]={'$like':'%'+_0x4227b8['query'][_0xe9d2('0x3e')]+'%'};return _0x6afc7d;})});}_0x56101d=_[_0xe9d2('0x41')]({},_0x56101d,_0x4227b8[_0xe9d2('0x42')]);return _0x2ab42f[_0xe9d2('0x5b')](_0x56101d);}})[_0xe9d2('0x29')](function(_0x3bb724){if(_0x3bb724){_0x618bab=_0x3bb724[_0xe9d2('0x38')];if(!_0x4227b8[_0xe9d2('0x33')][_0xe9d2('0x39')](_0xe9d2('0x3a'))){_0x56101d[_0xe9d2('0x21')]=qs['limit'](_0x4227b8['query'][_0xe9d2('0x21')]);_0x56101d[_0xe9d2('0x23')]=qs[_0xe9d2('0x23')](_0x4227b8[_0xe9d2('0x33')]['offset']);}return _0x2ab42f['getContacts'](_0x56101d);}})[_0xe9d2('0x29')](function(_0x134c54){if(_0x134c54){return _0x134c54?{'count':_0x618bab,'rows':_0x134c54}:null;}})['then'](respondWithResult(_0x48af0e,null))[_0xe9d2('0x48')](handleError(_0x48af0e,null));};
\ No newline at end of file
+var _0xed26=['ejs','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Companies','error','stack','name','CmCompany','model','keys','query','filters','attributes','intersection','fields','length','nolimit','sort','where','filter','merge','map','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addContacts','CmContact','ids','omit','getContacts','findOne','order','hasOwnProperty','rimraf','zip-dir','fast-json-patch','moment','mustache','util','to-csv'];(function(_0x5de22a,_0x5190a6){var _0x3acb59=function(_0x1d8494){while(--_0x1d8494){_0x5de22a['push'](_0x5de22a['shift']());}};_0x3acb59(++_0x5190a6);}(_0xed26,0xf2));var _0x6ed2=function(_0x10e87d,_0x47fb7f){_0x10e87d=_0x10e87d-0x0;var _0x2ee99a=_0xed26[_0x10e87d];return _0x2ee99a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6ed2('0x0'));var zipdir=require(_0x6ed2('0x1'));var jsonpatch=require(_0x6ed2('0x2'));var rp=require('request-promise');var moment=require(_0x6ed2('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6ed2('0x4'));var util=require(_0x6ed2('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x6ed2('0x6'));var ejs=require(_0x6ed2('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6ed2('0x8'));var squel=require(_0x6ed2('0x9'));var crypto=require(_0x6ed2('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x6ed2('0xb'));var toCsv=require(_0x6ed2('0x6'));var querystring=require(_0x6ed2('0xc'));var Papa=require(_0x6ed2('0xd'));var Redis=require('ioredis');var authService=require(_0x6ed2('0xe'));var qs=require(_0x6ed2('0xf'));var as=require(_0x6ed2('0x10'));var hardwareService=require(_0x6ed2('0x11'));var logger=require(_0x6ed2('0x12'))(_0x6ed2('0x13'));var utils=require(_0x6ed2('0x14'));var config=require(_0x6ed2('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x339e08,_0x372f4e){_0x372f4e=_0x372f4e||0xcc;return function(_0x34119f){if(_0x34119f){return _0x339e08['sendStatus'](_0x372f4e);}return _0x339e08[_0x6ed2('0x16')](_0x372f4e)[_0x6ed2('0x17')]();};}function respondWithResult(_0x2c563e,_0x713739){_0x713739=_0x713739||0xc8;return function(_0x1f14c5){if(_0x1f14c5){return _0x2c563e[_0x6ed2('0x16')](_0x713739)[_0x6ed2('0x18')](_0x1f14c5);}};}function respondWithFilteredResult(_0x2caa89,_0x3d953a){return function(_0x5759e5){if(_0x5759e5){var _0x1fcbb9=typeof _0x3d953a[_0x6ed2('0x19')]===_0x6ed2('0x1a')&&typeof _0x3d953a[_0x6ed2('0x1b')]===_0x6ed2('0x1a');var _0x13acbf=_0x5759e5[_0x6ed2('0x1c')];var _0x5ed1fc=_0x1fcbb9?0x0:_0x3d953a[_0x6ed2('0x19')];var _0x1e45ec=_0x1fcbb9?_0x5759e5[_0x6ed2('0x1c')]:_0x3d953a[_0x6ed2('0x19')]+_0x3d953a[_0x6ed2('0x1b')];var _0xaf3929;if(_0x1e45ec>=_0x13acbf){_0x1e45ec=_0x13acbf;_0xaf3929=0xc8;}else{_0xaf3929=0xce;}_0x2caa89[_0x6ed2('0x16')](_0xaf3929);return _0x2caa89[_0x6ed2('0x1d')](_0x6ed2('0x1e'),_0x5ed1fc+'-'+_0x1e45ec+'/'+_0x13acbf)[_0x6ed2('0x18')](_0x5759e5);}return null;};}function patchUpdates(_0x1e4502){return function(_0x49874c){try{jsonpatch[_0x6ed2('0x1f')](_0x49874c,_0x1e4502,!![]);}catch(_0x5a9614){return BPromise[_0x6ed2('0x20')](_0x5a9614);}return _0x49874c[_0x6ed2('0x21')]();};}function saveUpdates(_0x17d1b9,_0x4f6b5b){return function(_0x5393d2){if(_0x5393d2){return _0x5393d2[_0x6ed2('0x22')](_0x17d1b9)[_0x6ed2('0x23')](function(_0x123d82){return _0x123d82;});}return null;};}function removeEntity(_0x4ba174,_0x5eb3bd){return function(_0x3a5f7a){if(_0x3a5f7a){return _0x3a5f7a[_0x6ed2('0x24')]()['then'](function(){var _0x5bbfe2=_0x3a5f7a[_0x6ed2('0x25')]({'plain':!![]});var _0x5d0a54=_0x6ed2('0x26');return db['UserProfileResource'][_0x6ed2('0x24')]({'where':{'type':_0x5d0a54,'resourceId':_0x5bbfe2['id']}})[_0x6ed2('0x23')](function(){return _0x3a5f7a;});})['then'](function(){_0x4ba174[_0x6ed2('0x16')](0xcc)[_0x6ed2('0x17')]();});}};}function handleEntityNotFound(_0x3259eb,_0x59932a){return function(_0xfd4571){if(!_0xfd4571){_0x3259eb['sendStatus'](0x194);}return _0xfd4571;};}function handleError(_0x3be353,_0x5c03ca){_0x5c03ca=_0x5c03ca||0x1f4;return function(_0x2ecf56){logger[_0x6ed2('0x27')](_0x2ecf56[_0x6ed2('0x28')]);if(_0x2ecf56[_0x6ed2('0x29')]){delete _0x2ecf56[_0x6ed2('0x29')];}_0x3be353['status'](_0x5c03ca)['send'](_0x2ecf56);};}exports['index']=function(_0x4c906e,_0x575b37){var _0x44d360={},_0x9d61d0={},_0xea58cb={'count':0x0,'rows':[]};return db[_0x6ed2('0x2a')]['describe']()[_0x6ed2('0x23')](function(_0x457726){_0x9d61d0[_0x6ed2('0x2b')]=_[_0x6ed2('0x2c')](_0x457726);_0x9d61d0[_0x6ed2('0x2d')]=_[_0x6ed2('0x2c')](_0x4c906e[_0x6ed2('0x2d')]);_0x9d61d0[_0x6ed2('0x2e')]=_['intersection'](_0x9d61d0[_0x6ed2('0x2b')],_0x9d61d0[_0x6ed2('0x2d')]);_0x44d360[_0x6ed2('0x2f')]=_[_0x6ed2('0x30')](_0x9d61d0['model'],qs[_0x6ed2('0x31')](_0x4c906e[_0x6ed2('0x2d')]['fields']));_0x44d360[_0x6ed2('0x2f')]=_0x44d360[_0x6ed2('0x2f')][_0x6ed2('0x32')]?_0x44d360[_0x6ed2('0x2f')]:_0x9d61d0[_0x6ed2('0x2b')];if(!_0x4c906e['query']['hasOwnProperty'](_0x6ed2('0x33'))){_0x44d360[_0x6ed2('0x1b')]=qs[_0x6ed2('0x1b')](_0x4c906e['query'][_0x6ed2('0x1b')]);_0x44d360[_0x6ed2('0x19')]=qs[_0x6ed2('0x19')](_0x4c906e[_0x6ed2('0x2d')]['offset']);}_0x44d360['order']=qs[_0x6ed2('0x34')](_0x4c906e[_0x6ed2('0x2d')]['sort']);_0x44d360[_0x6ed2('0x35')]=qs[_0x6ed2('0x2e')](_['pick'](_0x4c906e[_0x6ed2('0x2d')],_0x9d61d0['filters']),_0x457726);if(_0x4c906e[_0x6ed2('0x2d')][_0x6ed2('0x36')]){_0x44d360[_0x6ed2('0x35')]=_[_0x6ed2('0x37')](_0x44d360['where'],{'$or':_[_0x6ed2('0x38')](_0x44d360[_0x6ed2('0x2f')],function(_0xdd5a83){var _0x1c75e5={};_0x1c75e5[_0xdd5a83]={'$like':'%'+_0x4c906e[_0x6ed2('0x2d')][_0x6ed2('0x36')]+'%'};return _0x1c75e5;})});}_0x44d360=_[_0x6ed2('0x37')]({},_0x44d360,_0x4c906e[_0x6ed2('0x39')]);var _0x288af2={'where':_0x44d360[_0x6ed2('0x35')]};return db[_0x6ed2('0x2a')][_0x6ed2('0x1c')](_0x288af2)[_0x6ed2('0x23')](function(_0x1a585b){_0xea58cb[_0x6ed2('0x1c')]=_0x1a585b;if(_0x4c906e[_0x6ed2('0x2d')][_0x6ed2('0x3a')]){_0x44d360[_0x6ed2('0x3b')]=[{'all':!![]}];}return db[_0x6ed2('0x2a')][_0x6ed2('0x3c')](_0x44d360);})[_0x6ed2('0x23')](function(_0x1b40af){_0xea58cb[_0x6ed2('0x3d')]=_0x1b40af;return _0xea58cb;})[_0x6ed2('0x23')](respondWithFilteredResult(_0x575b37,_0x44d360))[_0x6ed2('0x3e')](handleError(_0x575b37,null));})[_0x6ed2('0x3e')](handleError(_0x575b37,null));};exports[_0x6ed2('0x3f')]=function(_0xca3bff,_0x1d1310){var _0x27f809={'raw':![],'where':{'id':_0xca3bff[_0x6ed2('0x40')]['id']}},_0x3672e5={};_0x3672e5[_0x6ed2('0x2b')]=_[_0x6ed2('0x2c')](db[_0x6ed2('0x2a')][_0x6ed2('0x41')]);_0x3672e5[_0x6ed2('0x2d')]=_[_0x6ed2('0x2c')](_0xca3bff[_0x6ed2('0x2d')]);_0x3672e5[_0x6ed2('0x2e')]=_[_0x6ed2('0x30')](_0x3672e5[_0x6ed2('0x2b')],_0x3672e5[_0x6ed2('0x2d')]);_0x27f809[_0x6ed2('0x2f')]=_[_0x6ed2('0x30')](_0x3672e5[_0x6ed2('0x2b')],qs[_0x6ed2('0x31')](_0xca3bff[_0x6ed2('0x2d')][_0x6ed2('0x31')]));_0x27f809[_0x6ed2('0x2f')]=_0x27f809[_0x6ed2('0x2f')]['length']?_0x27f809[_0x6ed2('0x2f')]:_0x3672e5['model'];if(_0xca3bff['query'][_0x6ed2('0x3a')]){_0x27f809[_0x6ed2('0x3b')]=[{'all':!![]}];}_0x27f809=_[_0x6ed2('0x37')]({},_0x27f809,_0xca3bff[_0x6ed2('0x39')]);return db[_0x6ed2('0x2a')][_0x6ed2('0x42')](_0x27f809)['then'](handleEntityNotFound(_0x1d1310,null))['then'](respondWithResult(_0x1d1310,null))[_0x6ed2('0x3e')](handleError(_0x1d1310,null));};exports[_0x6ed2('0x43')]=function(_0x235dca,_0x5d6e2b){return db[_0x6ed2('0x2a')]['create'](_0x235dca[_0x6ed2('0x44')],{})[_0x6ed2('0x23')](function(_0x472094){var _0x3c4597=_0x235dca['user'][_0x6ed2('0x25')]({'plain':!![]});if(!_0x3c4597)throw new Error(_0x6ed2('0x45'));if(_0x3c4597[_0x6ed2('0x46')]===_0x6ed2('0x47')){var _0x7da54=_0x472094[_0x6ed2('0x25')]({'plain':!![]});var _0x4856db=_0x6ed2('0x26');return db[_0x6ed2('0x48')][_0x6ed2('0x42')]({'where':{'name':_0x4856db,'userProfileId':_0x3c4597['userProfileId']},'raw':!![]})['then'](function(_0x213d33){if(_0x213d33&&_0x213d33['autoAssociation']===0x0){return db['UserProfileResource'][_0x6ed2('0x43')]({'name':_0x7da54[_0x6ed2('0x29')],'resourceId':_0x7da54['id'],'type':_0x213d33[_0x6ed2('0x29')],'sectionId':_0x213d33['id']},{})[_0x6ed2('0x23')](function(){return _0x472094;});}else{return _0x472094;}})['catch'](function(_0x4d3cd0){logger[_0x6ed2('0x27')](_0x6ed2('0x49'),_0x4d3cd0);throw _0x4d3cd0;});}return _0x472094;})[_0x6ed2('0x23')](respondWithResult(_0x5d6e2b,0xc9))[_0x6ed2('0x3e')](handleError(_0x5d6e2b,null));};exports[_0x6ed2('0x22')]=function(_0x5dbd3f,_0x13118a){if(_0x5dbd3f[_0x6ed2('0x44')]['id']){delete _0x5dbd3f[_0x6ed2('0x44')]['id'];}return db[_0x6ed2('0x2a')]['find']({'where':{'id':_0x5dbd3f['params']['id']}})[_0x6ed2('0x23')](handleEntityNotFound(_0x13118a,null))['then'](saveUpdates(_0x5dbd3f[_0x6ed2('0x44')],null))['then'](respondWithResult(_0x13118a,null))['catch'](handleError(_0x13118a,null));};exports[_0x6ed2('0x24')]=function(_0x4c0a10,_0x361bf9){return db[_0x6ed2('0x2a')][_0x6ed2('0x42')]({'where':{'id':_0x4c0a10['params']['id']}})['then'](handleEntityNotFound(_0x361bf9,null))[_0x6ed2('0x23')](removeEntity(_0x361bf9,null))[_0x6ed2('0x3e')](handleError(_0x361bf9,null));};exports[_0x6ed2('0x4a')]=function(_0x4d12bf,_0x5895e0){return db[_0x6ed2('0x2a')][_0x6ed2('0x4a')]()[_0x6ed2('0x23')](respondWithResult(_0x5895e0,null))['catch'](handleError(_0x5895e0,null));};exports[_0x6ed2('0x4b')]=function(_0x2a88fd,_0x94321f,_0x3bd2b0){return db[_0x6ed2('0x4c')][_0x6ed2('0x42')]({'where':{'id':_0x2a88fd['params']['id']}})[_0x6ed2('0x23')](handleEntityNotFound(_0x94321f,null))[_0x6ed2('0x23')](function(_0x1c597c){if(_0x1c597c){return _0x1c597c['addContacts'](_0x2a88fd[_0x6ed2('0x44')][_0x6ed2('0x4d')],_[_0x6ed2('0x4e')](_0x2a88fd['body'],[_0x6ed2('0x4d'),'id'])||{});}})[_0x6ed2('0x23')](respondWithResult(_0x94321f,null))[_0x6ed2('0x3e')](handleError(_0x94321f,null));};exports[_0x6ed2('0x4f')]=function(_0xb7c84e,_0x116510,_0x387347){var _0x567dc6={};var _0x459781={};var _0x439c96;var _0x33130c;return db['CmCompany'][_0x6ed2('0x50')]({'where':{'id':_0xb7c84e[_0x6ed2('0x40')]['id']}})['then'](handleEntityNotFound(_0x116510,null))[_0x6ed2('0x23')](function(_0x3db3b7){if(_0x3db3b7){_0x439c96=_0x3db3b7;_0x459781['model']=_[_0x6ed2('0x2c')](db[_0x6ed2('0x4c')][_0x6ed2('0x41')]);_0x459781['query']=_['keys'](_0xb7c84e[_0x6ed2('0x2d')]);_0x459781['filters']=_['intersection'](_0x459781[_0x6ed2('0x2b')],_0x459781[_0x6ed2('0x2d')]);_0x567dc6[_0x6ed2('0x2f')]=_['intersection'](_0x459781['model'],qs[_0x6ed2('0x31')](_0xb7c84e['query'][_0x6ed2('0x31')]));_0x567dc6[_0x6ed2('0x2f')]=_0x567dc6[_0x6ed2('0x2f')][_0x6ed2('0x32')]?_0x567dc6[_0x6ed2('0x2f')]:_0x459781['model'];_0x567dc6[_0x6ed2('0x51')]=qs['sort'](_0xb7c84e[_0x6ed2('0x2d')]['sort']);_0x567dc6[_0x6ed2('0x35')]=qs['filters'](_['pick'](_0xb7c84e['query'],_0x459781[_0x6ed2('0x2e')]));if(_0xb7c84e[_0x6ed2('0x2d')][_0x6ed2('0x36')]){_0x567dc6[_0x6ed2('0x35')]=_[_0x6ed2('0x37')](_0x567dc6['where'],{'$or':_['map'](_0x567dc6[_0x6ed2('0x2f')],function(_0x475dfa){var _0x355ddc={};_0x355ddc[_0x475dfa]={'$like':'%'+_0xb7c84e[_0x6ed2('0x2d')][_0x6ed2('0x36')]+'%'};return _0x355ddc;})});}_0x567dc6=_[_0x6ed2('0x37')]({},_0x567dc6,_0xb7c84e['options']);return _0x439c96[_0x6ed2('0x4f')](_0x567dc6);}})[_0x6ed2('0x23')](function(_0x7d98ae){if(_0x7d98ae){_0x33130c=_0x7d98ae['length'];if(!_0xb7c84e[_0x6ed2('0x2d')][_0x6ed2('0x52')](_0x6ed2('0x33'))){_0x567dc6['limit']=qs['limit'](_0xb7c84e['query'][_0x6ed2('0x1b')]);_0x567dc6[_0x6ed2('0x19')]=qs[_0x6ed2('0x19')](_0xb7c84e[_0x6ed2('0x2d')][_0x6ed2('0x19')]);}return _0x439c96[_0x6ed2('0x4f')](_0x567dc6);}})[_0x6ed2('0x23')](function(_0xab2c7a){if(_0xab2c7a){return _0xab2c7a?{'count':_0x33130c,'rows':_0xab2c7a}:null;}})[_0x6ed2('0x23')](respondWithResult(_0x116510,null))['catch'](handleError(_0x116510,null));};
\ No newline at end of file
index 0738b93..76a9689 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74f3=['request-promise','path','rimraf','../../config/environment','./cmCompany.attributes','exports','define','CmCompany','lodash','util','../../config/logger','moment','bluebird'];(function(_0x5ddca1,_0x3c493c){var _0x5ae35e=function(_0x335174){while(--_0x335174){_0x5ddca1['push'](_0x5ddca1['shift']());}};_0x5ae35e(++_0x3c493c);}(_0x74f3,0x1a8));var _0x374f=function(_0x2b28c8,_0x45aa9d){_0x2b28c8=_0x2b28c8-0x0;var _0x1246e7=_0x74f3[_0x2b28c8];return _0x1246e7;};'use strict';var _=require(_0x374f('0x0'));var util=require(_0x374f('0x1'));var logger=require(_0x374f('0x2'))('api');var moment=require(_0x374f('0x3'));var BPromise=require(_0x374f('0x4'));var rp=require(_0x374f('0x5'));var fs=require('fs');var path=require(_0x374f('0x6'));var rimraf=require(_0x374f('0x7'));var config=require(_0x374f('0x8'));var attributes=require(_0x374f('0x9'));module[_0x374f('0xa')]=function(_0x41470b,_0x4720f8){return _0x41470b[_0x374f('0xb')](_0x374f('0xc'),attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfe2c=['api','moment','bluebird','request-promise','path','define','CmCompany','lodash','util'];(function(_0x1e6475,_0x24bf36){var _0x23229f=function(_0x20cdf7){while(--_0x20cdf7){_0x1e6475['push'](_0x1e6475['shift']());}};_0x23229f(++_0x24bf36);}(_0xfe2c,0x154));var _0xcfe2=function(_0x36acb4,_0x2a53e0){_0x36acb4=_0x36acb4-0x0;var _0x3744b6=_0xfe2c[_0x36acb4];return _0x3744b6;};'use strict';var _=require(_0xcfe2('0x0'));var util=require(_0xcfe2('0x1'));var logger=require('../../config/logger')(_0xcfe2('0x2'));var moment=require(_0xcfe2('0x3'));var BPromise=require(_0xcfe2('0x4'));var rp=require(_0xcfe2('0x5'));var fs=require('fs');var path=require(_0xcfe2('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./cmCompany.attributes');module['exports']=function(_0x4b3b0f,_0x3dc85b){return _0x4b3b0f[_0xcfe2('0x7')](_0xcfe2('0x8'),attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ec2d4aa..0eef3e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc67=['http','CmCompany,\x20%s,\x20%s','request\x20sent','CmCompany,\x20%s,\x20%s,\x20%s','error','code','message','info','result','lodash','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x380105,_0x55667e){var _0x450f7b=function(_0x2e23c2){while(--_0x2e23c2){_0x380105['push'](_0x380105['shift']());}};_0x450f7b(++_0x55667e);}(_0xcc67,0xe1));var _0x7cc6=function(_0xf345b2,_0x46c13f){_0xf345b2=_0xf345b2-0x0;var _0x3a093a=_0xcc67[_0xf345b2];return _0x3a093a;};'use strict';var _=require(_0x7cc6('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x7cc6('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7cc6('0x2'))['db'];var utils=require(_0x7cc6('0x3'));var logger=require(_0x7cc6('0x4'))(_0x7cc6('0x5'));var config=require(_0x7cc6('0x6'));var jayson=require(_0x7cc6('0x7'));var client=jayson[_0x7cc6('0x8')][_0x7cc6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2f7981,_0x4b9907,_0x8f3097){return new BPromise(function(_0x41734f,_0x209258){return client['request'](_0x2f7981,_0x8f3097)['then'](function(_0x310135){logger['info'](_0x7cc6('0xa'),_0x4b9907,_0x7cc6('0xb'));logger['debug'](_0x7cc6('0xc'),_0x4b9907,'request\x20sent',JSON['stringify'](_0x310135));if(_0x310135['error']){if(_0x310135[_0x7cc6('0xd')][_0x7cc6('0xe')]===0x1f4){logger[_0x7cc6('0xd')]('CmCompany,\x20%s,\x20%s',_0x4b9907,_0x310135[_0x7cc6('0xd')][_0x7cc6('0xf')]);return _0x209258(_0x310135[_0x7cc6('0xd')]['message']);}logger[_0x7cc6('0xd')]('CmCompany,\x20%s,\x20%s',_0x4b9907,_0x310135['error'][_0x7cc6('0xf')]);return _0x41734f(_0x310135[_0x7cc6('0xd')][_0x7cc6('0xf')]);}else{logger[_0x7cc6('0x10')](_0x7cc6('0xa'),_0x4b9907,_0x7cc6('0xb'));_0x41734f(_0x310135[_0x7cc6('0x11')][_0x7cc6('0xf')]);}})['catch'](function(_0x21ed0d){logger[_0x7cc6('0xd')](_0x7cc6('0xa'),_0x4b9907,_0x21ed0d);_0x209258(_0x21ed0d);});});}
\ No newline at end of file
+var _0x6676=['info','debug','CmCompany,\x20%s,\x20%s,\x20%s','error','CmCompany,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then'];(function(_0x55c95e,_0x288ed1){var _0x1f7b34=function(_0x3a842f){while(--_0x3a842f){_0x55c95e['push'](_0x55c95e['shift']());}};_0x1f7b34(++_0x288ed1);}(_0x6676,0x111));var _0x6667=function(_0x2bcb67,_0x44a22c){_0x2bcb67=_0x2bcb67-0x0;var _0x2ea51a=_0x6676[_0x2bcb67];return _0x2ea51a;};'use strict';var _=require(_0x6667('0x0'));var util=require(_0x6667('0x1'));var moment=require('moment');var BPromise=require(_0x6667('0x2'));var rs=require(_0x6667('0x3'));var fs=require('fs');var Redis=require(_0x6667('0x4'));var db=require(_0x6667('0x5'))['db'];var utils=require(_0x6667('0x6'));var logger=require(_0x6667('0x7'))('rpc');var config=require(_0x6667('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x6667('0x9')][_0x6667('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x216b39,_0x10385d,_0x55c90a){return new BPromise(function(_0x358d6e,_0x25a5e2){return client[_0x6667('0xb')](_0x216b39,_0x55c90a)[_0x6667('0xc')](function(_0x298d8f){logger[_0x6667('0xd')]('CmCompany,\x20%s,\x20%s',_0x10385d,'request\x20sent');logger[_0x6667('0xe')](_0x6667('0xf'),_0x10385d,'request\x20sent',JSON['stringify'](_0x298d8f));if(_0x298d8f['error']){if(_0x298d8f[_0x6667('0x10')]['code']===0x1f4){logger[_0x6667('0x10')](_0x6667('0x11'),_0x10385d,_0x298d8f['error'][_0x6667('0x12')]);return _0x25a5e2(_0x298d8f['error'][_0x6667('0x12')]);}logger[_0x6667('0x10')](_0x6667('0x11'),_0x10385d,_0x298d8f[_0x6667('0x10')][_0x6667('0x12')]);return _0x358d6e(_0x298d8f[_0x6667('0x10')][_0x6667('0x12')]);}else{logger[_0x6667('0xd')](_0x6667('0x11'),_0x10385d,_0x6667('0x13'));_0x358d6e(_0x298d8f[_0x6667('0x14')][_0x6667('0x12')]);}})[_0x6667('0x15')](function(_0x22ab10){logger[_0x6667('0x10')](_0x6667('0x11'),_0x10385d,_0x22ab10);_0x25a5e2(_0x22ab10);});});}
\ No newline at end of file
index 48a8764..20e1919 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x171a=['../../config/environment','./cmCompany.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/contacts','getContacts','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x171a,0x1f4));var _0xa171=function(_0x6a734c,_0x1b2d9f){_0x6a734c=_0x6a734c-0x0;var _0x494d0d=_0x171a[_0x6a734c];return _0x494d0d;};'use strict';var multer=require(_0xa171('0x0'));var util=require(_0xa171('0x1'));var path=require(_0xa171('0x2'));var timeout=require(_0xa171('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xa171('0x4'));var auth=require(_0xa171('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa171('0x6'));var controller=require(_0xa171('0x7'));router[_0xa171('0x8')]('/',auth['isAuthenticated'](),controller[_0xa171('0x9')]);router[_0xa171('0x8')](_0xa171('0xa'),auth[_0xa171('0xb')](),controller[_0xa171('0xc')]);router[_0xa171('0x8')](_0xa171('0xd'),auth[_0xa171('0xb')](),controller[_0xa171('0xe')]);router[_0xa171('0x8')](_0xa171('0xf'),auth[_0xa171('0xb')](),controller[_0xa171('0x10')]);router[_0xa171('0x11')]('/',auth['isAuthenticated'](),controller[_0xa171('0x12')]);router[_0xa171('0x11')](_0xa171('0xf'),auth['isAuthenticated'](),controller['addContacts']);router[_0xa171('0x13')](_0xa171('0xd'),auth[_0xa171('0xb')](),controller['update']);router[_0xa171('0x14')](_0xa171('0xd'),auth[_0xa171('0xb')](),controller[_0xa171('0x15')]);module[_0xa171('0x16')]=router;
\ No newline at end of file
+var _0x90ad=['describe','/:id','/:id/contacts','getContacts','post','create','addContacts','put','update','delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmCompany.controller','isAuthenticated','index','get','/describe'];(function(_0x5da190,_0x15d86d){var _0x4c16af=function(_0x3aff60){while(--_0x3aff60){_0x5da190['push'](_0x5da190['shift']());}};_0x4c16af(++_0x15d86d);}(_0x90ad,0x6c));var _0xd90a=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0x90ad[_0x1c546c];return _0x2cc384;};'use strict';var multer=require('multer');var util=require(_0xd90a('0x0'));var path=require(_0xd90a('0x1'));var timeout=require('connect-timeout');var express=require(_0xd90a('0x2'));var router=express[_0xd90a('0x3')]();var fs_extra=require(_0xd90a('0x4'));var auth=require(_0xd90a('0x5'));var interaction=require(_0xd90a('0x6'));var config=require('../../config/environment');var controller=require(_0xd90a('0x7'));router['get']('/',auth[_0xd90a('0x8')](),controller[_0xd90a('0x9')]);router[_0xd90a('0xa')](_0xd90a('0xb'),auth['isAuthenticated'](),controller[_0xd90a('0xc')]);router[_0xd90a('0xa')](_0xd90a('0xd'),auth[_0xd90a('0x8')](),controller['show']);router[_0xd90a('0xa')](_0xd90a('0xe'),auth[_0xd90a('0x8')](),controller[_0xd90a('0xf')]);router[_0xd90a('0x10')]('/',auth['isAuthenticated'](),controller[_0xd90a('0x11')]);router['post'](_0xd90a('0xe'),auth[_0xd90a('0x8')](),controller[_0xd90a('0x12')]);router[_0xd90a('0x13')](_0xd90a('0xd'),auth['isAuthenticated'](),controller[_0xd90a('0x14')]);router[_0xd90a('0x15')](_0xd90a('0xd'),auth[_0xd90a('0x8')](),controller[_0xd90a('0x16')]);module[_0xd90a('0x17')]=router;
\ No newline at end of file
index 972288c..6590d8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe480=['NOW','lodash','sequelize','STRING','TEXT','INTEGER','UNSIGNED','DATE'];(function(_0x3b000c,_0xa3a56d){var _0x430655=function(_0x578cd9){while(--_0x578cd9){_0x3b000c['push'](_0x3b000c['shift']());}};_0x430655(++_0xa3a56d);}(_0xe480,0x1b1));var _0x0e48=function(_0x5f0631,_0x365c51){_0x5f0631=_0x5f0631-0x0;var _0x26c093=_0xe480[_0x5f0631];return _0x26c093;};'use strict';var _=require(_0x0e48('0x0'));var Sequelize=require(_0x0e48('0x1'));module['exports']={'firstName':{'type':Sequelize[_0x0e48('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0x0e48('0x2')]},'street':{'type':Sequelize[_0x0e48('0x2')]},'postalCode':{'type':Sequelize[_0x0e48('0x2')]},'city':{'type':Sequelize[_0x0e48('0x2')]},'country':{'type':Sequelize[_0x0e48('0x2')]},'dateOfBirth':{'type':Sequelize[_0x0e48('0x2')]},'description':{'type':Sequelize[_0x0e48('0x3')]},'phone':{'type':Sequelize[_0x0e48('0x2')]},'mobile':{'type':Sequelize[_0x0e48('0x2')]},'fax':{'type':Sequelize[_0x0e48('0x2')]},'email':{'type':Sequelize[_0x0e48('0x2')]},'url':{'type':Sequelize['STRING']},'facebook':{'type':Sequelize[_0x0e48('0x2')]},'fb_data':{'type':Sequelize[_0x0e48('0x2')]},'twitter':{'type':Sequelize[_0x0e48('0x2')]},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize[_0x0e48('0x2')]},'viber':{'type':Sequelize[_0x0e48('0x2')]},'line':{'type':Sequelize['STRING']},'wechat':{'type':Sequelize[_0x0e48('0x2')]},'telegram':{'type':Sequelize[_0x0e48('0x2')]},'UserId':{'type':Sequelize[_0x0e48('0x4')]},'AdditionalPhones':{'type':Sequelize[_0x0e48('0x2')]},'priority':{'type':Sequelize['INTEGER'](0x2)[_0x0e48('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x0e48('0x6')],'defaultValue':Sequelize[_0x0e48('0x7')]},'dialTimezone':{'type':Sequelize[_0x0e48('0x2')]},'utcOffset':{'type':Sequelize[_0x0e48('0x4')]}};
\ No newline at end of file
+var _0x0470=['sequelize','exports','STRING','TEXT','INTEGER','UNSIGNED','DATE'];(function(_0x1a1068,_0x1bc080){var _0x46cccb=function(_0x40755b){while(--_0x40755b){_0x1a1068['push'](_0x1a1068['shift']());}};_0x46cccb(++_0x1bc080);}(_0x0470,0x16c));var _0x0047=function(_0x39a9db,_0x48b388){_0x39a9db=_0x39a9db-0x0;var _0x2127a4=_0x0470[_0x39a9db];return _0x2127a4;};'use strict';var _=require('lodash');var Sequelize=require(_0x0047('0x0'));module[_0x0047('0x1')]={'firstName':{'type':Sequelize[_0x0047('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0x0047('0x2')]},'street':{'type':Sequelize[_0x0047('0x2')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x0047('0x2')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x0047('0x3')]},'phone':{'type':Sequelize[_0x0047('0x2')]},'mobile':{'type':Sequelize[_0x0047('0x2')]},'fax':{'type':Sequelize[_0x0047('0x2')]},'email':{'type':Sequelize[_0x0047('0x2')]},'url':{'type':Sequelize[_0x0047('0x2')]},'facebook':{'type':Sequelize[_0x0047('0x2')]},'fb_data':{'type':Sequelize[_0x0047('0x2')]},'twitter':{'type':Sequelize[_0x0047('0x2')]},'skype':{'type':Sequelize[_0x0047('0x2')]},'teams':{'type':Sequelize[_0x0047('0x2')]},'viber':{'type':Sequelize[_0x0047('0x2')]},'line':{'type':Sequelize[_0x0047('0x2')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0x0047('0x2')]},'UserId':{'type':Sequelize[_0x0047('0x4')]},'AdditionalPhones':{'type':Sequelize[_0x0047('0x2')]},'priority':{'type':Sequelize[_0x0047('0x4')](0x2)[_0x0047('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x0047('0x6')],'defaultValue':Sequelize['NOW']},'dialTimezone':{'type':Sequelize[_0x0047('0x2')]},'utcOffset':{'type':Sequelize[_0x0047('0x4')]}};
\ No newline at end of file
index 9078369..9fd32ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcd0=['rawAttributes','options','getTags','setTags','ids','setAdditionalPhones','OrderBy','items','item_types','ItemTypeId','description','contact\x20phone\x20exists','item','PHONE','literal','`ItemType`.OrderBy','CmHopperId','ItemType.OrderBy','CmHopperAdditionalPhone','getAdditionalPhones','duplicateAdditionalPhones','CmContactId','toContactId','rescheduleAdditionalPhones','hopperId','getHoppers','ContactId','include','getHopperHistories','includeAll','getHopperFinals','CmHopperFinal','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','server/files/tmp','file','filename','chmodSync','0777','child_process','fork','../../components/import/cm/csv','CompanyId','File\x20uploaded\x20correctly!','pid','upload','parse','meta','import','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','../../components/import/cm/csv2','stringify','message','start\x20child\x20process\x20correctly!','exit','error\x20child\x20process','importUpdates','binding','../../components/import/cm/csvUpdates','getJourney','mail','chat','sms','openchannel','whatsapp','includes','channel','toLowerCase','Invalid\x20channel','range','isValid','Invalid\x20createdAt\x20filter','uniqueid','starttime','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','UserId','fullname','findAndCountAll','startCase','Website','Account','closed','closedAt','disposition','thirdDisposition','key','browserName','customerIp','customerPort','deviceModel','osName','ratingType','ratingValue','referer','subject','substatus','externalUrl','threadId','Interaction','Owner','flatten','sortBy','reverse','slice','moment','util','path','lodash','ioredis','../../config/logger','api','../../config/environment','../../config/environment/shared','redis','socket.io-emitter','./cmContact.socket','status','json','undefined','limit','count','offset','set','Content-Range','then','sendStatus','error','stack','name','send','index','CmContact','describe','keys','length','startsWith','push','CmCustomField','findOne','trimStart','cf_','fieldType','type','query','filters','intersection','model','attributes','fields','nolimit','sort','where','pick','select','field','color','from','tools_tags','cm_contacts','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','left_join','ct.CmContactId\x20=\x20c.id','t.id\x20=\x20ct.TagId','c.deletedAt\x20IS\x20NULL','expr','parseSearch','search','Tag','value','split','User','and','uc.UserId\x20=\x20?','datetime','DATE','buildExpression','start','end','map','filter','isNil','forEach','ListId','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','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.fax\x20LIKE\x20?','c.email\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','c.id','Sequelize','QueryTypes','clone','order','DESC','isEmpty','having','t.id\x20IN\x20?','resolve','some','conditions','getLists','c.ListId\x20IS\x20NULL','user','agent','sequelize','toString','keyBy','c.firstName','c.lastName','c.phone','c.mobile','c.fax','c.email','c.ListId','c.createdAt','c.deletedAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','destroy','find','params','tags','columnName','displayName','alias','custom','values','hasOwnProperty','catch','merge','body','get','isArray','join','[CmContact][merge]\x20to\x20%s\x20from\x20%s','info','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','ChatInteraction','update','ChatMessage','ChatOfflineMessage','MailMessage','MailInteraction','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperHistory','VoiceCallReport','ChatQueueReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','create','dialTimezone','timezones','utcOffset','additionalPhones','bulkCreate','each','duplicates','$or','findOrCreate','all','show','Phones','ContactItemType','ItemType','Phones.OrderBy','$and','findAll','omit','format','pickBy','table','setFields','toParam','text','phone','CmHopper'];(function(_0x2a0b7d,_0x237ad9){var _0x1927ac=function(_0x378fe3){while(--_0x378fe3){_0x2a0b7d['push'](_0x2a0b7d['shift']());}};_0x1927ac(++_0x237ad9);}(_0xdcd0,0x1b6));var _0x0dcd=function(_0x4197d5,_0x2f8c20){_0x4197d5=_0x4197d5-0x0;var _0xef3920=_0xdcd0[_0x4197d5];return _0xef3920;};'use strict';var moment=require(_0x0dcd('0x0'));var BPromise=require('bluebird');var util=require(_0x0dcd('0x1'));var path=require(_0x0dcd('0x2'));var fs=require('fs');var _=require(_0x0dcd('0x3'));var squel=require('squel');var Papa=require('papaparse');var Redis=require(_0x0dcd('0x4'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var logger=require(_0x0dcd('0x5'))(_0x0dcd('0x6'));var config=require(_0x0dcd('0x7'));var shared=require(_0x0dcd('0x8'));var db=require('../../mysqldb')['db'];config[_0x0dcd('0x9')]=_['defaults'](config[_0x0dcd('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x0dcd('0xa'))(new Redis(config['redis']));require(_0x0dcd('0xb'))['register'](socket);function respondWithResult(_0xe6fec8,_0x5f4f8f){_0x5f4f8f=_0x5f4f8f||0xc8;return function(_0x169783){if(_0x169783){return _0xe6fec8[_0x0dcd('0xc')](_0x5f4f8f)[_0x0dcd('0xd')](_0x169783);}};}function respondWithFilteredResult(_0x267c9e,_0x4e8788){return function(_0x2d3774){if(_0x2d3774){var _0xe443c4=typeof _0x4e8788['offset']===_0x0dcd('0xe')&&typeof _0x4e8788[_0x0dcd('0xf')]==='undefined';var _0x252007=_0x2d3774[_0x0dcd('0x10')];var _0x251e66=_0xe443c4?0x0:_0x4e8788[_0x0dcd('0x11')];var _0x5e5d6b=_0xe443c4?_0x2d3774[_0x0dcd('0x10')]:_0x4e8788[_0x0dcd('0x11')]+_0x4e8788[_0x0dcd('0xf')];var _0x1a7479;if(_0x5e5d6b>=_0x252007){_0x5e5d6b=_0x252007;_0x1a7479=0xc8;}else{_0x1a7479=0xce;}_0x267c9e[_0x0dcd('0xc')](_0x1a7479);return _0x267c9e[_0x0dcd('0x12')](_0x0dcd('0x13'),_0x251e66+'-'+_0x5e5d6b+'/'+_0x252007)[_0x0dcd('0xd')](_0x2d3774);}return null;};}function saveUpdates(_0x4f9481){return function(_0x1c9f3b){if(_0x1c9f3b){return _0x1c9f3b['update'](_0x4f9481)['then'](function(_0x586832){return _0x586832;});}return null;};}function removeEntity(_0x169920){return function(_0x3caa6e){if(_0x3caa6e){return _0x3caa6e['destroy']()[_0x0dcd('0x14')](function(){_0x169920[_0x0dcd('0xc')](0xcc)['end']();});}};}function handleEntityNotFound(_0x22dffa){return function(_0x4731a0){if(!_0x4731a0){_0x22dffa[_0x0dcd('0x15')](0x194);}return _0x4731a0;};}function handleError(_0x27977b,_0x41e3b9){_0x41e3b9=_0x41e3b9||0x1f4;return function(_0x1123f7){logger[_0x0dcd('0x16')](_0x1123f7[_0x0dcd('0x17')]);if(_0x1123f7[_0x0dcd('0x18')]){delete _0x1123f7[_0x0dcd('0x18')];}_0x27977b['status'](_0x41e3b9)[_0x0dcd('0x19')](_0x1123f7);};}exports[_0x0dcd('0x1a')]=function(_0x546e30,_0x18ec3e){var _0x2d8582={},_0x43e19a={},_0xcd61c0={'count':0x0,'rows':[]};return db[_0x0dcd('0x1b')][_0x0dcd('0x1c')]()[_0x0dcd('0x14')](function(_0x373cb7){var _0xb9df10=[];for(var _0x13c6e0=0x0;_0x13c6e0<Object[_0x0dcd('0x1d')](_0x373cb7)[_0x0dcd('0x1e')];_0x13c6e0++){var _0x3dde38=Object[_0x0dcd('0x1d')](_0x373cb7)[_0x13c6e0];if(_[_0x0dcd('0x1f')](_0x3dde38,'cf_')){_0xb9df10[_0x0dcd('0x20')](db[_0x0dcd('0x21')][_0x0dcd('0x22')]({'where':{'id':_[_0x0dcd('0x23')](_0x3dde38,'cf_')},'raw':!![]}));}}return BPromise['all'](_0xb9df10)['then'](function(_0x51dbe3){for(var _0x202726=0x0;_0x202726<_0x51dbe3['length'];_0x202726++){if(_0x51dbe3[_0x202726]){var _0x25839a=_0x0dcd('0x24')+_0x51dbe3[_0x202726]['id'];var _0x255d1c=_0x373cb7[_0x25839a];_0x255d1c[_0x0dcd('0x25')]=_0x51dbe3[_0x202726][_0x0dcd('0x26')];}}return _0x373cb7;});})[_0x0dcd('0x14')](function(_0x1bf14b){_0x43e19a['model']=_[_0x0dcd('0x1d')](_0x1bf14b);_0x43e19a[_0x0dcd('0x27')]=_[_0x0dcd('0x1d')](_0x546e30['query']);_0x43e19a[_0x0dcd('0x28')]=_[_0x0dcd('0x29')](_0x43e19a[_0x0dcd('0x2a')],_0x43e19a[_0x0dcd('0x27')]);_0x2d8582[_0x0dcd('0x2b')]=_[_0x0dcd('0x29')](_0x43e19a[_0x0dcd('0x2a')],qs[_0x0dcd('0x2c')](_0x546e30[_0x0dcd('0x27')][_0x0dcd('0x2c')]));_0x2d8582[_0x0dcd('0x2b')]=_0x2d8582[_0x0dcd('0x2b')][_0x0dcd('0x1e')]?_0x2d8582['attributes']:_0x43e19a[_0x0dcd('0x2a')];if(!_0x546e30[_0x0dcd('0x27')]['hasOwnProperty'](_0x0dcd('0x2d'))){_0x2d8582[_0x0dcd('0xf')]=qs[_0x0dcd('0xf')](_0x546e30[_0x0dcd('0x27')]['limit']);_0x2d8582[_0x0dcd('0x11')]=qs[_0x0dcd('0x11')](_0x546e30[_0x0dcd('0x27')][_0x0dcd('0x11')]);}_0x2d8582['order']=qs['sort'](_0x546e30[_0x0dcd('0x27')][_0x0dcd('0x2e')]);_0x2d8582[_0x0dcd('0x2f')]=qs[_0x0dcd('0x28')](_[_0x0dcd('0x30')](_0x546e30[_0x0dcd('0x27')],_0x43e19a[_0x0dcd('0x28')]),_0x1bf14b);var _0x159db2=[];var _0xde84c3=squel[_0x0dcd('0x31')]()['field']('id')[_0x0dcd('0x32')]('name')[_0x0dcd('0x32')](_0x0dcd('0x33'))[_0x0dcd('0x34')](_0x0dcd('0x35'));var _0x30a26e=squel['select']()[_0x0dcd('0x34')](_0x0dcd('0x36'),'c')['left_join'](_0x0dcd('0x37'),'uc',_0x0dcd('0x38'))[_0x0dcd('0x39')]('cm_contact_has_tags','ct',_0x0dcd('0x3a'))[_0x0dcd('0x39')](_0x0dcd('0x35'),'t',_0x0dcd('0x3b'))[_0x0dcd('0x2f')](_0x0dcd('0x3c'));var _0x51612f=squel[_0x0dcd('0x3d')]();var _0xd51ba7=[];var _0x498f4d=squel[_0x0dcd('0x3d')]();var _0x18f98f;if(_0x546e30[_0x0dcd('0x27')]['search']){_0x18f98f=as[_0x0dcd('0x3e')](_0x546e30[_0x0dcd('0x27')][_0x0dcd('0x3f')]);var _0x530d1b=_0x18f98f['sqlOperator'];for(var _0x45e829=0x0;_0x45e829<_0x18f98f['conditions'][_0x0dcd('0x1e')];_0x45e829++){var _0x46cf84=_0x18f98f['conditions'][_0x45e829];var _0x27aa0f='c';var _0x41bca5=_(_0x1bf14b)[_0x0dcd('0x1d')]()['find'](function(_0x2c3578){return _0x2c3578===_0x46cf84[_0x0dcd('0x32')];});if(_0x41bca5)_0x41bca5=_0x1bf14b[_0x46cf84['field']];if(!_0x41bca5){if(_0x46cf84['field']===_0x0dcd('0x40')){var _0x33bc9c=_0x46cf84[_0x0dcd('0x41')][_0x0dcd('0x42')](',')['map'](function(_0x3f8e47){return Number(_0x3f8e47);});_0x33bc9c['forEach'](function(_0x1d3c33){_0x498f4d['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x1d3c33+',%');});_0xd51ba7=_['union'](_0xd51ba7,_0x33bc9c);}else if(_0x46cf84[_0x0dcd('0x32')]===_0x0dcd('0x43')){_0x51612f[_0x0dcd('0x44')](_0x0dcd('0x45'),_0x46cf84[_0x0dcd('0x41')]);}}else{if(_0x46cf84[_0x0dcd('0x32')]==='dateOfBirth'||_0x41bca5[_0x0dcd('0x25')]===_0x0dcd('0x46'))_0x46cf84['castTo']=_0x0dcd('0x47');var _0xae9856=as[_0x0dcd('0x48')](_0x27aa0f,_0x41bca5['type'],_0x46cf84);_0x51612f[_0x530d1b](_0xae9856['text'],_0xae9856['value'][_0x0dcd('0x49')],_0xae9856[_0x0dcd('0x41')][_0x0dcd('0x4a')]);}}}else{var _0x1d782b=_(Object[_0x0dcd('0x1d')](_0x546e30[_0x0dcd('0x27')]))[_0x0dcd('0x4b')](function(_0x304d79){return _0x1bf14b['hasOwnProperty'](_0x304d79)?_0x304d79:undefined;})[_0x0dcd('0x4c')](function(_0xbebcd0){return!_[_0x0dcd('0x4d')](_0xbebcd0);})['value']();if(_0x546e30['query']['Contact'])_0x1d782b[_0x0dcd('0x20')]('Contact');if(!_['isEmpty'](_0x1d782b)){_0x1d782b[_0x0dcd('0x4e')](function(_0x2008a2){if(_0x2008a2===_0x0dcd('0x4f')){_0x30a26e['where'](_0x0dcd('0x50'),[][_0x0dcd('0x51')](_0x546e30[_0x0dcd('0x27')][_0x2008a2]));}else if(_0x2008a2==='Contact'){var _0x429b27='%'+_0x546e30['query'][_0x2008a2]+'%';_0x30a26e[_0x0dcd('0x2f')](_0x0dcd('0x52'),_0x429b27);}else{_0x30a26e['where']('c.'+_0x2008a2+_0x0dcd('0x53'),_0x546e30['query'][_0x2008a2]);}});}if(_0x546e30['query'][_0x0dcd('0x54')]){_0xd51ba7=_['isArray'](_0x546e30[_0x0dcd('0x27')][_0x0dcd('0x54')])?_0x546e30[_0x0dcd('0x27')][_0x0dcd('0x54')]:new Array(_0x546e30[_0x0dcd('0x27')]['tag']);_0xd51ba7[_0x0dcd('0x4e')](function(_0x2ba516){_0x498f4d['or'](_0x0dcd('0x55'),'%,'+_0x2ba516+',%');});}if(_0x546e30[_0x0dcd('0x27')][_0x0dcd('0x4c')]){var _0x14f8dd=_0x546e30['query'][_0x0dcd('0x4c')][_0x0dcd('0x56')]('\x5c','\x5c\x5c')[_0x0dcd('0x56')](/'/g,'\x27\x27');if(_0x14f8dd[_0x0dcd('0x42')]('\x20')[_0x0dcd('0x1e')]>0x1){_0x51612f['or'](_0x0dcd('0x57'),qs[_0x0dcd('0x58')](_0x14f8dd),null);}else{if(qs[_0x0dcd('0x59')](_0x14f8dd)){_0x51612f['or'](_0x0dcd('0x5a'),_0x14f8dd+'%');_0x51612f['or']('c.phone\x20LIKE\x20?',_0x14f8dd+'%');_0x51612f['or']('c.mobile\x20LIKE\x20?',_0x14f8dd+'%');_0x51612f['or'](_0x0dcd('0x5b'),_0x14f8dd+'%');}else if(qs['isEmail'](_0x14f8dd)){_0x51612f['or'](_0x0dcd('0x5c'),_0x14f8dd+'%');}else{_0x51612f['or']('c.firstName\x20LIKE\x20?','%'+_0x14f8dd+'%');_0x51612f['or'](_0x0dcd('0x5d'),'%'+_0x14f8dd+'%');_0x51612f['or']('c.email\x20LIKE\x20?','%'+_0x14f8dd+'%');}}}}_0x30a26e[_0x0dcd('0x2f')](_0x51612f);_0x30a26e[_0x0dcd('0x5e')](_0x0dcd('0x5f'));var _0x5d8e15={'type':db[_0x0dcd('0x60')][_0x0dcd('0x61')]['SELECT'],'raw':!![]};var _0xc7de0f=_0x30a26e[_0x0dcd('0x62')]()['field'](_0x0dcd('0x5f'));if(_0x2d8582[_0x0dcd('0x63')]){_0x2d8582[_0x0dcd('0x63')]['forEach'](function(_0x7487b5){_0x30a26e[_0x0dcd('0x63')]('c.'+_0x7487b5[0x0],_0x7487b5[0x1]===_0x0dcd('0x64')?![]:!![]);});}if(!_[_0x0dcd('0x65')](_0xd51ba7)){_0x30a26e[_0x0dcd('0x66')](_0x498f4d);_0xc7de0f[_0x0dcd('0x2f')](_0x0dcd('0x67'),_0xd51ba7);}BPromise[_0x0dcd('0x68')]()['then'](function(){if(!_0x18f98f)return;if(_0x546e30['user']['role']!=='agent')return;if(!_[_0x0dcd('0x69')](_0x18f98f[_0x0dcd('0x6a')],[_0x0dcd('0x32'),_0x0dcd('0x43')])){return _0x546e30['user'][_0x0dcd('0x6b')]({'attributes':['id'],'raw':!![]})[_0x0dcd('0x14')](function(_0x24c1fe){if(_[_0x0dcd('0x65')](_0x24c1fe)){_0xc7de0f[_0x0dcd('0x2f')](_0x0dcd('0x6c'));_0x30a26e[_0x0dcd('0x2f')](_0x0dcd('0x6c'));}else{_0xc7de0f[_0x0dcd('0x2f')](_0x0dcd('0x50'),_[_0x0dcd('0x4b')](_0x24c1fe,'id'));_0x30a26e[_0x0dcd('0x2f')](_0x0dcd('0x50'),_['map'](_0x24c1fe,'id'));}});}})[_0x0dcd('0x14')](function(){if(_0x546e30[_0x0dcd('0x6d')]['role']===_0x0dcd('0x6e')&&!_0x18f98f&&!_0x546e30[_0x0dcd('0x27')]['ListId'])return[];return db['sequelize']['query'](_0xc7de0f['toString'](),_0x5d8e15);})[_0x0dcd('0x14')](function(_0x84f7ac){_0xcd61c0[_0x0dcd('0x10')]=_0x84f7ac[_0x0dcd('0x1e')];if(_0xcd61c0[_0x0dcd('0x10')]===0x0)return[];return db[_0x0dcd('0x6f')][_0x0dcd('0x27')](_0xde84c3[_0x0dcd('0x70')](),_0x5d8e15)[_0x0dcd('0x14')](function(_0x173bb9){_0x159db2=_[_0x0dcd('0x71')](_0x173bb9,'id');_0x5d8e15=_['merge'](_0x5d8e15,{'model':db[_0x0dcd('0x1b')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x546e30[_0x0dcd('0x27')]['fields']){_0x2d8582[_0x0dcd('0x2b')][_0x0dcd('0x4e')](function(_0x32004){_0x30a26e[_0x0dcd('0x32')]('c.'+_0x32004);});}else{_0x30a26e[_0x0dcd('0x32')](_0x0dcd('0x5f'));_0x30a26e[_0x0dcd('0x32')](_0x0dcd('0x72'));_0x30a26e[_0x0dcd('0x32')](_0x0dcd('0x73'));_0x30a26e[_0x0dcd('0x32')](_0x0dcd('0x74'));_0x30a26e[_0x0dcd('0x32')](_0x0dcd('0x75'));_0x30a26e[_0x0dcd('0x32')](_0x0dcd('0x76'));_0x30a26e[_0x0dcd('0x32')](_0x0dcd('0x77'));_0x30a26e[_0x0dcd('0x32')](_0x0dcd('0x78'));_0x30a26e[_0x0dcd('0x32')](_0x0dcd('0x79'));_0x30a26e['field'](_0x0dcd('0x7a'));_0x30a26e[_0x0dcd('0x32')](_0x0dcd('0x7b'));_0x30a26e[_0x0dcd('0x32')](_0x0dcd('0x7c'),_0x0dcd('0x7d'));}if(_0x2d8582[_0x0dcd('0xf')])_0x30a26e['limit'](_0x2d8582[_0x0dcd('0xf')]);if(_0x2d8582['offset'])_0x30a26e[_0x0dcd('0x11')](_0x2d8582[_0x0dcd('0x11')]);return db[_0x0dcd('0x6f')][_0x0dcd('0x27')](_0x30a26e[_0x0dcd('0x70')](),_0x5d8e15);});})[_0x0dcd('0x14')](function(_0x465cac){_0x465cac[_0x0dcd('0x4e')](function(_0x22aae4){if(_0x22aae4[_0x0dcd('0x7d')]){_0x22aae4['Tags']=[];_0x22aae4['TagIds'][_0x0dcd('0x42')](',')['forEach'](function(_0x2a1849){_0x22aae4[_0x0dcd('0x7e')][_0x0dcd('0x20')](_0x159db2[_0x2a1849]);});}delete _0x22aae4['TagIds'];});_0xcd61c0[_0x0dcd('0x7f')]=_0x465cac;return _0xcd61c0;})[_0x0dcd('0x14')](respondWithFilteredResult(_0x18ec3e,_0x2d8582));})['catch'](handleError(_0x18ec3e,null));};exports[_0x0dcd('0x80')]=function(_0x5d1311,_0x333aaf){return db['CmContact'][_0x0dcd('0x81')]({'where':{'id':_0x5d1311[_0x0dcd('0x82')]['id']}})['then'](handleEntityNotFound(_0x333aaf,null))[_0x0dcd('0x14')](removeEntity(_0x333aaf,null))['catch'](handleError(_0x333aaf,null));};exports['describe']=function(_0x5d076b,_0x4d07ce){return db[_0x0dcd('0x1b')][_0x0dcd('0x1c')]()[_0x0dcd('0x14')](function(_0x5f1d64){delete _0x5f1d64[_0x0dcd('0x83')];for(var _0x19d3e7=0x0;_0x19d3e7<Object[_0x0dcd('0x1d')](_0x5f1d64)['length'];_0x19d3e7++){var _0x39b8b7=Object[_0x0dcd('0x1d')](_0x5f1d64)[_0x19d3e7];if(!_[_0x0dcd('0x1f')](_0x39b8b7,'cf_')){_0x5f1d64[_0x39b8b7][_0x0dcd('0x84')]=_0x39b8b7;_0x5f1d64[_0x39b8b7][_0x0dcd('0x85')]=_0x39b8b7;}}return _0x5f1d64;})['then'](function(_0xdeaf00){var _0x5e14d1={'where':Boolean(_0x5d076b[_0x0dcd('0x27')]['analytics'])===!![]?undefined:{'$or':[{'ListId':_0x5d076b[_0x0dcd('0x27')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x0dcd('0x21')]['findAll'](_0x5e14d1)[_0x0dcd('0x14')](function(_0x27856f){for(var _0xa0ce7a=0x0;_0xa0ce7a<_0x27856f[_0x0dcd('0x1e')];_0xa0ce7a++){var _0x598e03='cf_'+_0x27856f[_0xa0ce7a]['id'];_0xdeaf00[_0x598e03][_0x0dcd('0x84')]=_0x598e03;_0xdeaf00[_0x598e03][_0x0dcd('0x85')]=_0x27856f[_0xa0ce7a][_0x0dcd('0x86')];_0xdeaf00[_0x598e03][_0x0dcd('0x87')]={'type':_0x27856f[_0xa0ce7a][_0x0dcd('0x26')],'values':_0x27856f[_0xa0ce7a][_0x0dcd('0x88')]};}Object[_0x0dcd('0x1d')](_0xdeaf00)[_0x0dcd('0x4e')](function(_0x219521){if(!_0xdeaf00[_0x219521][_0x0dcd('0x89')](_0x0dcd('0x84'))){delete _0xdeaf00[_0x219521];}});return _0xdeaf00;});})[_0x0dcd('0x14')](respondWithResult(_0x4d07ce,null))[_0x0dcd('0x8a')](handleError(_0x4d07ce,null));};exports[_0x0dcd('0x8b')]=function(_0x356ed9,_0x1671dc){var _0x18d0bb;var _0x325dde;var _0x42e803;if(_0x356ed9['body']['id']){delete _0x356ed9[_0x0dcd('0x8c')]['id'];}return db[_0x0dcd('0x1b')]['findAll']({'where':{'id':[_0x356ed9[_0x0dcd('0x8c')]['to'],_0x356ed9[_0x0dcd('0x8c')][_0x0dcd('0x34')]]}})[_0x0dcd('0x14')](function(_0x29881a){if(_0x29881a){if(_0x29881a[_0x0dcd('0x1e')]!==0x2){return null;}_0x29881a[0x0]=_0x29881a[0x0][_0x0dcd('0x8d')]({'plain':!![]});_0x29881a[0x1]=_0x29881a[0x1]['get']({'plain':!![]});delete _0x29881a[0x0]['id'];delete _0x29881a[0x1]['id'];return _['mergeWith'](_0x29881a[0x0],_0x29881a[0x1],function(_0x556367,_0x1eb8c2){if(Array[_0x0dcd('0x8e')](_0x1eb8c2)&&!_0x1eb8c2[_0x0dcd('0x1e')]){return _0x556367;}else if(!_0x1eb8c2){return _0x556367;}});}})[_0x0dcd('0x14')](handleEntityNotFound(_0x1671dc,null))[_0x0dcd('0x14')](function(_0x42a078){if(_0x42a078){if(_0x42a078['tags']&&_['isArray'](_0x42a078[_0x0dcd('0x83')])){_0x42a078['tags']=_0x42a078[_0x0dcd('0x83')][_0x0dcd('0x8f')]();}logger['info'](_0x0dcd('0x90'),_0x356ed9[_0x0dcd('0x8c')]['to'],_0x356ed9['body'][_0x0dcd('0x34')]);return db['CmHopper'][_0x0dcd('0x80')]({'where':{'ContactId':[_0x356ed9[_0x0dcd('0x8c')]['to'],_0x356ed9['body'][_0x0dcd('0x34')]]}})['then'](function(_0x1454bc){logger[_0x0dcd('0x91')](_0x0dcd('0x92'),_0x1454bc);return db[_0x0dcd('0x93')]['destroy']({'where':{'ContactId':[_0x356ed9[_0x0dcd('0x8c')]['to'],_0x356ed9[_0x0dcd('0x8c')][_0x0dcd('0x34')]]}})[_0x0dcd('0x14')](function(_0x371130){logger[_0x0dcd('0x91')](_0x0dcd('0x94'),_0x371130);return db[_0x0dcd('0x1b')]['create'](_0x42a078);});});}})[_0x0dcd('0x14')](function(_0x3e16ff){if(_0x3e16ff){_0x18d0bb=_0x3e16ff;_0x325dde={'ContactId':_0x18d0bb['id']};_0x42e803={'where':{'ContactId':[_0x356ed9[_0x0dcd('0x8c')]['to'],_0x356ed9[_0x0dcd('0x8c')][_0x0dcd('0x34')]]}};return db[_0x0dcd('0x95')][_0x0dcd('0x96')](_0x325dde,_0x42e803);}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db[_0x0dcd('0x97')][_0x0dcd('0x96')](_0x325dde,_0x42e803);}})['then'](function(){if(_0x18d0bb){return db[_0x0dcd('0x98')][_0x0dcd('0x96')](_0x325dde,_0x42e803);}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db['MailInteraction'][_0x0dcd('0x96')](_0x325dde,_0x42e803);}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db[_0x0dcd('0x99')]['update'](_0x325dde,_0x42e803);}})['then'](function(){if(_0x18d0bb){return db[_0x0dcd('0x9a')][_0x0dcd('0x96')](_0x325dde,_0x42e803);}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db[_0x0dcd('0x99')][_0x0dcd('0x96')](_0x325dde,_0x42e803);}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db[_0x0dcd('0x9b')][_0x0dcd('0x96')](_0x325dde,_0x42e803);}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db[_0x0dcd('0x9c')][_0x0dcd('0x96')](_0x325dde,_0x42e803);}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db[_0x0dcd('0x9d')][_0x0dcd('0x96')](_0x325dde,_0x42e803);}})['then'](function(){if(_0x18d0bb){return db[_0x0dcd('0x9e')]['update'](_0x325dde,_0x42e803);}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db[_0x0dcd('0x9f')][_0x0dcd('0x96')](_0x325dde,_0x42e803);}})['then'](function(){if(_0x18d0bb){return db[_0x0dcd('0xa0')][_0x0dcd('0x96')](_0x325dde,_0x42e803);}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db[_0x0dcd('0xa1')][_0x0dcd('0x96')]({'CmContactId':_0x18d0bb['id']},{'where':{'CmContactId':[_0x356ed9[_0x0dcd('0x8c')]['to'],_0x356ed9[_0x0dcd('0x8c')]['from']]}});}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db['CmHopperFinal']['update'](_0x325dde,_0x42e803);}})['then'](function(){if(_0x18d0bb){return db[_0x0dcd('0xa2')]['update'](_0x325dde,_0x42e803);}})['then'](function(){if(_0x18d0bb){return db['ReportAgentPreview'][_0x0dcd('0x96')](_0x325dde,_0x42e803);}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db[_0x0dcd('0xa3')]['update'](_0x325dde,_0x42e803);}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db[_0x0dcd('0xa4')][_0x0dcd('0x96')](_0x325dde,_0x42e803);}})['then'](function(){if(_0x18d0bb){return db[_0x0dcd('0xa5')]['update'](_0x325dde,_0x42e803);}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db[_0x0dcd('0xa6')]['update'](_0x325dde,_0x42e803);}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db[_0x0dcd('0xa7')][_0x0dcd('0x96')](_0x325dde,_0x42e803);}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db[_0x0dcd('0xa8')][_0x0dcd('0x96')](_0x325dde,_0x42e803);}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db[_0x0dcd('0xa9')][_0x0dcd('0x96')](_0x325dde,_0x42e803);}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db[_0x0dcd('0xaa')]['update'](_0x325dde,_0x42e803);}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db[_0x0dcd('0xab')][_0x0dcd('0x96')](_0x325dde,_0x42e803);}})['then'](function(){if(_0x18d0bb){return db[_0x0dcd('0xac')][_0x0dcd('0x96')](_0x325dde,_0x42e803);}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return db[_0x0dcd('0x1b')][_0x0dcd('0x80')]({'where':{'id':[_0x356ed9[_0x0dcd('0x8c')]['to'],_0x356ed9['body'][_0x0dcd('0x34')]]}});}})[_0x0dcd('0x14')](function(){if(_0x18d0bb){return _0x18d0bb;}})[_0x0dcd('0x14')](respondWithResult(_0x1671dc,null))[_0x0dcd('0x8a')](handleError(_0x1671dc,null));};exports[_0x0dcd('0xad')]=function(_0x296e24,_0xa595b){return db[_0x0dcd('0x1b')][_0x0dcd('0x1c')]()[_0x0dcd('0x14')](function(_0x5e8e63){if(_0x296e24[_0x0dcd('0x8c')]['tags']&&_[_0x0dcd('0x8e')](_0x296e24[_0x0dcd('0x8c')]['tags'])){if(_0x296e24[_0x0dcd('0x8c')][_0x0dcd('0x83')][_0x0dcd('0x1e')]){_0x296e24[_0x0dcd('0x8c')][_0x0dcd('0x83')]=_0x296e24[_0x0dcd('0x8c')][_0x0dcd('0x83')]['join'](';')+';';}else{_0x296e24['body'][_0x0dcd('0x83')]=null;}}else{_0x296e24[_0x0dcd('0x8c')][_0x0dcd('0x83')]=null;}if(!_[_0x0dcd('0x4d')](_0x296e24['body'][_0x0dcd('0xae')])){var _0x5a0e19=_0x296e24[_0x0dcd('0x8c')][_0x0dcd('0xae')];if(!_[_0x0dcd('0x4d')](shared[_0x0dcd('0xaf')][_0x5a0e19]))_0x296e24[_0x0dcd('0x8c')][_0x0dcd('0xb0')]=shared['timezones'][_0x5a0e19][_0x0dcd('0xb0')];}return db[_0x0dcd('0x1b')][_0x0dcd('0xad')](_0x296e24[_0x0dcd('0x8c')],{'fields':_['keys'](_0x5e8e63),'raw':!![]});})[_0x0dcd('0x14')](function(_0x2ecb94){if(_0x296e24['body'][_0x0dcd('0xb1')]){return insertAdditionalPhones(_0x2ecb94,_0x296e24[_0x0dcd('0x8c')][_0x0dcd('0xb1')]);}else{return _0x2ecb94;}})[_0x0dcd('0x14')](respondWithResult(_0xa595b,0xc9))['catch'](handleError(_0xa595b,null));};exports[_0x0dcd('0xb2')]=function(_0x154fb9,_0x537f47){var _0x2f88d2=0x0;var _0x13ed0d=0x0;var _0x2c492c=0x0;var _0x4fb371=[];return db['CmContact'][_0x0dcd('0x1c')]()[_0x0dcd('0x14')](function(_0x4db0b5){return BPromise[_0x0dcd('0xb3')](_0x154fb9[_0x0dcd('0x8c')],function(_0x558e78){var _0x462342={'where':{'$or':[]},'defaults':_0x558e78,'fields':_[_0x0dcd('0x1d')](_0x4db0b5),'raw':!![]};if(_0x558e78[_0x0dcd('0xb4')]){for(var _0x11bd35=0x0;_0x11bd35<_0x558e78[_0x0dcd('0xb4')][_0x0dcd('0x1e')];_0x11bd35++){var _0x4a4910={};_0x4a4910[_0x558e78[_0x0dcd('0xb4')][_0x11bd35]]=_0x558e78[_0x558e78[_0x0dcd('0xb4')][_0x11bd35]];_0x462342[_0x0dcd('0x2f')][_0x0dcd('0xb5')][_0x0dcd('0x20')](_0x4a4910);}_0x462342[_0x0dcd('0x2f')]['ListId']=_0x558e78[_0x0dcd('0x4f')];}return db[_0x0dcd('0x1b')][_0x0dcd('0xb6')](_0x462342)['spread'](function(_0x5d9e2e,_0x1013e9){if(_0x1013e9){if(_0x558e78['hasOwnProperty'](_0x0dcd('0xb1'))){_0x4fb371[_0x0dcd('0x20')]({'contact':_0x5d9e2e,'additionalPhones':_0x558e78[_0x0dcd('0xb1')]});}_0x2f88d2++;}else{_0x2c492c++;}})[_0x0dcd('0x8a')](function(){_0x13ed0d++;});});})['then'](function(_0x4cdcf6){if(_0x4cdcf6){if(_0x4fb371['length']>0x0){return new Promise(function(_0xcb9b5e,_0x16903f){var _0x4ab520=[];for(var _0x2970ee=0x0;_0x2970ee<_0x4fb371[_0x0dcd('0x1e')];_0x2970ee++){_0x4ab520['push'](insertAdditionalPhones(_0x4fb371[_0x2970ee]['contact'],_0x4fb371[_0x2970ee][_0x0dcd('0xb1')]));}Promise[_0x0dcd('0xb7')](_0x4ab520)['then'](function(){_0xcb9b5e(0x1);});})[_0x0dcd('0x14')](function(){return{'success':_0x2f88d2,'failure':_0x13ed0d,'duplicates':_0x2c492c};});}else{return{'success':_0x2f88d2,'failure':_0x13ed0d,'duplicates':_0x2c492c};}}})[_0x0dcd('0x14')](respondWithResult(_0x537f47,0xc9))[_0x0dcd('0x8a')](handleError(_0x537f47,null));};exports[_0x0dcd('0xb8')]=function(_0x798903,_0x550d9c){var _0x5f0b6b;return db[_0x0dcd('0x1b')][_0x0dcd('0x1c')]()[_0x0dcd('0x14')](function(_0x66df12){return db[_0x0dcd('0x1b')][_0x0dcd('0x81')]({'where':{'id':_0x798903[_0x0dcd('0x82')]['id']},'include':[{'model':db['Tag'],'as':'Tags','attributes':['id',_0x0dcd('0x18'),_0x0dcd('0x33')],'required':_0x798903[_0x0dcd('0x27')][_0x0dcd('0x54')]?!![]:![]},{'model':db[_0x0dcd('0xa1')],'as':_0x0dcd('0xb9'),'where':{'CmContactId':_0x798903[_0x0dcd('0x82')]['id']},'required':![],'include':[{'model':db[_0x0dcd('0xba')],'as':_0x0dcd('0xbb')}]}],'order':[db['sequelize']['literal'](_0x0dcd('0xbc'))],'attributes':_['keys'](_0x66df12)});})['then'](function(_0x3b640b){if(!_[_0x0dcd('0x4d')](_0x3b640b)){_0x5f0b6b=_0x3b640b[_0x0dcd('0x8d')]({'plain':!![]});var _0x12eccc={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x3b640b&&_0x3b640b[_0x0dcd('0x4f')]){if(_0x3b640b[_0x0dcd('0x4f')]){_0x12eccc[_0x0dcd('0x2f')][_0x0dcd('0xbd')][_0x0dcd('0x20')]({'ListId':{'$ne':_0x3b640b[_0x0dcd('0x4f')]}});}}return db[_0x0dcd('0x21')][_0x0dcd('0xbe')](_0x12eccc);}})[_0x0dcd('0x14')](function(_0x54151c){if(!_[_0x0dcd('0x4d')](_0x54151c)){return _[_0x0dcd('0xbf')](_0x5f0b6b,_[_0x0dcd('0x4b')](_0x54151c,function(_0x209b07){return util[_0x0dcd('0xc0')]('cf_%d',_0x209b07['id']);}));}})[_0x0dcd('0x14')](handleEntityNotFound(_0x550d9c,null))[_0x0dcd('0x14')](respondWithResult(_0x550d9c,null))[_0x0dcd('0x8a')](handleError(_0x550d9c,null));};exports[_0x0dcd('0x96')]=function(_0x2ad2ea,_0x5947c6){var _0x119f88;if(_0x2ad2ea[_0x0dcd('0x8c')]['id']){delete _0x2ad2ea['body']['id'];}if(!_[_0x0dcd('0x4d')](_0x2ad2ea['body'][_0x0dcd('0xae')])){var _0x2eaeda=_0x2ad2ea[_0x0dcd('0x8c')][_0x0dcd('0xae')];if(!_['isNil'](shared['timezones'][_0x2eaeda]))_0x2ad2ea['body'][_0x0dcd('0xb0')]=shared[_0x0dcd('0xaf')][_0x2eaeda][_0x0dcd('0xb0')];}return db[_0x0dcd('0x1b')][_0x0dcd('0x81')]({'where':{'id':_0x2ad2ea[_0x0dcd('0x82')]['id']}})[_0x0dcd('0x14')](handleEntityNotFound(_0x5947c6,null))[_0x0dcd('0x14')](saveUpdates(_0x2ad2ea[_0x0dcd('0x8c')],null))['then'](function(_0x562d8a){_0x119f88=_0x562d8a;var _0x379aea={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x562d8a&&_0x562d8a[_0x0dcd('0x4f')]){if(_0x562d8a[_0x0dcd('0x4f')]){_0x379aea[_0x0dcd('0x2f')]['$and'][_0x0dcd('0x20')]({'ListId':{'$ne':_0x562d8a[_0x0dcd('0x4f')]}});}}return db[_0x0dcd('0x21')][_0x0dcd('0xbe')](_0x379aea);})[_0x0dcd('0x14')](function(_0x3cd243){if(_0x3cd243){return _[_0x0dcd('0xbf')](_[_0x0dcd('0xc1')](_0x2ad2ea[_0x0dcd('0x8c')],function(_0x33b82d,_0x4c2ebb){return _['startsWith'](_0x4c2ebb,'cf_');}),_[_0x0dcd('0x4b')](_0x3cd243,function(_0x319b30){return util[_0x0dcd('0xc0')]('cf_%d',_0x319b30['id']);}));}})['then'](function(_0x1838b1){if(_0x1838b1&&!_['isEmpty'](_0x1838b1)){var _0x337cba=squel[_0x0dcd('0x96')]()[_0x0dcd('0xc2')](_0x0dcd('0x36'))[_0x0dcd('0xc3')](_0x1838b1)[_0x0dcd('0x2f')]('id\x20=\x20?',_0x2ad2ea[_0x0dcd('0x82')]['id'])[_0x0dcd('0xc4')]();return db[_0x0dcd('0x6f')][_0x0dcd('0x27')](_0x337cba[_0x0dcd('0xc5')],{'replacements':_0x337cba[_0x0dcd('0x88')]});}})[_0x0dcd('0x14')](function(){if(_0x2ad2ea['body'][_0x0dcd('0xc6')]&&_0x119f88){return db[_0x0dcd('0xc7')][_0x0dcd('0x96')]({'phone':_0x2ad2ea[_0x0dcd('0x8c')][_0x0dcd('0xc6')],'OrderBy':0x0},{'where':{'ContactId':_0x119f88['id']}});}})[_0x0dcd('0x14')](function(){return _0x119f88;})['then'](respondWithResult(_0x5947c6,null))[_0x0dcd('0x8a')](handleError(_0x5947c6,null));};exports['getTags']=function(_0x1b6489,_0x4cabaa){var _0x422465={};var _0x130f08={};var _0x1e0346;var _0x2f6466;return db['CmContact']['findOne']({'where':{'id':_0x1b6489[_0x0dcd('0x82')]['id']}})[_0x0dcd('0x14')](handleEntityNotFound(_0x4cabaa,null))['then'](function(_0x56f1c7){if(_0x56f1c7){_0x1e0346=_0x56f1c7;_0x130f08['model']=_['keys'](db[_0x0dcd('0x40')][_0x0dcd('0xc8')]);_0x130f08[_0x0dcd('0x27')]=_[_0x0dcd('0x1d')](_0x1b6489[_0x0dcd('0x27')]);_0x130f08[_0x0dcd('0x28')]=_[_0x0dcd('0x29')](_0x130f08[_0x0dcd('0x2a')],_0x130f08[_0x0dcd('0x27')]);_0x422465[_0x0dcd('0x2b')]=_[_0x0dcd('0x29')](_0x130f08[_0x0dcd('0x2a')],qs[_0x0dcd('0x2c')](_0x1b6489[_0x0dcd('0x27')][_0x0dcd('0x2c')]));_0x422465[_0x0dcd('0x2b')]=_0x422465[_0x0dcd('0x2b')]['length']?_0x422465[_0x0dcd('0x2b')]:_0x130f08[_0x0dcd('0x2a')];_0x422465['order']=qs['sort'](_0x1b6489[_0x0dcd('0x27')][_0x0dcd('0x2e')]);_0x422465[_0x0dcd('0x2f')]=qs[_0x0dcd('0x28')](_[_0x0dcd('0x30')](_0x1b6489[_0x0dcd('0x27')],_0x130f08[_0x0dcd('0x28')]));if(_0x1b6489[_0x0dcd('0x27')][_0x0dcd('0x4c')]){_0x422465[_0x0dcd('0x2f')]=_['merge'](_0x422465[_0x0dcd('0x2f')],{'$or':_[_0x0dcd('0x4b')](_0x422465[_0x0dcd('0x2b')],function(_0x4d0a77){var _0x59f6eb={};_0x59f6eb[_0x4d0a77]={'$like':'%'+_0x1b6489[_0x0dcd('0x27')]['filter']+'%'};return _0x59f6eb;})});}_0x422465=_[_0x0dcd('0x8b')]({},_0x422465,_0x1b6489[_0x0dcd('0xc9')]);return _0x1e0346[_0x0dcd('0xca')](_0x422465);}})['then'](function(_0x2c7105){if(_0x2c7105){_0x2f6466=_0x2c7105[_0x0dcd('0x1e')];if(!_0x1b6489[_0x0dcd('0x27')][_0x0dcd('0x89')](_0x0dcd('0x2d'))){_0x422465['limit']=qs['limit'](_0x1b6489['query']['limit']);_0x422465['offset']=qs['offset'](_0x1b6489[_0x0dcd('0x27')]['offset']);}return _0x1e0346[_0x0dcd('0xca')](_0x422465);}})[_0x0dcd('0x14')](function(_0x4b0e6d){if(_0x4b0e6d){return _0x4b0e6d?{'count':_0x2f6466,'rows':_0x4b0e6d}:null;}})['then'](respondWithResult(_0x4cabaa,null))['catch'](handleError(_0x4cabaa,null));};exports[_0x0dcd('0xcb')]=function(_0x527216,_0x440beb){if(_0x527216[_0x0dcd('0x8c')]['id']){delete _0x527216[_0x0dcd('0x8c')]['id'];}return db['CmContact'][_0x0dcd('0x22')]({'where':{'id':_0x527216['params']['id']}})[_0x0dcd('0x14')](handleEntityNotFound(_0x440beb,null))[_0x0dcd('0x14')](function(_0x2307d4){if(_0x2307d4){return _0x2307d4[_0x0dcd('0xcb')](_0x527216[_0x0dcd('0x8c')][_0x0dcd('0xcc')]||[]);}return null;})[_0x0dcd('0x14')](respondWithResult(_0x440beb,null))[_0x0dcd('0x8a')](handleError(_0x440beb,null));};exports[_0x0dcd('0xcd')]=function(_0x4baa1e,_0x5111da){var _0x5449b4=[];_0x5449b4['push'](addAdditionalPhones(_0x4baa1e[_0x0dcd('0x8c')]));Promise[_0x0dcd('0xb7')](_0x5449b4)[_0x0dcd('0x14')](function(){_0x5449b4=[];_0x5449b4[_0x0dcd('0x20')](deleteCmHopperPhones(_0x4baa1e[_0x0dcd('0x8c')]['id']));_0x5449b4['push'](addCmHopperPhones(_0x4baa1e[_0x0dcd('0x8c')]['id']));Promise[_0x0dcd('0xb7')](_0x5449b4)['then'](function(){return[0x1];})['then'](respondWithResult(_0x5111da,null));});};function addAdditionalPhones(_0x525660){var _0x5dd843;return new Promise(function(_0x490a70,_0xf408a){return db[_0x0dcd('0xa1')]['destroy']({'where':{'CmContactId':_0x525660['id']}})['then'](function(){db[_0x0dcd('0xba')][_0x0dcd('0xbe')]({'raw':!![],'attributes':['id',_0x0dcd('0xce')]})[_0x0dcd('0x14')](function(_0x1760f8){var _0x111350=[];for(var _0x33689b=0x0;_0x33689b<_0x525660[_0x0dcd('0xcf')][_0x0dcd('0x1e')];_0x33689b++){var _0x25b336=_0x525660[_0x0dcd('0xd0')]?_[_0x0dcd('0x4d')](_0x525660['item_types'][_0x33689b])?'':_0x525660[_0x0dcd('0xd0')][_0x33689b]:_0x525660[_0x0dcd('0xcf')][_0x33689b][_0x0dcd('0xd1')]?_0x525660['items'][_0x33689b]['ItemTypeId']:'';var _0x39d0d0=_[_0x0dcd('0x4d')](_0x525660[_0x0dcd('0xcf')][_0x33689b][_0x0dcd('0xd2')])?'':_0x525660['items'][_0x33689b][_0x0dcd('0xd2')];var _0x175054=_0x25b336+':'+_0x525660[_0x0dcd('0xcf')][_0x33689b][_0x0dcd('0xc6')]+'§'+_0x39d0d0;if(_[_0x0dcd('0x4d')](_0x5dd843))_0x5dd843=_0x175054;else _0x5dd843+=';'+_0x175054;var _0x45134f=null;if(_0x525660[_0x0dcd('0xd0')]){if(!_[_0x0dcd('0x4d')](_0x525660[_0x0dcd('0xd0')][_0x33689b])){var _0x232cb8=_[_0x0dcd('0x81')](_0x1760f8,function(_0x2a61c9){return _0x2a61c9['id']===_0x525660['item_types'][_0x33689b];});if(!_['isNil'](_0x232cb8)){_0x45134f=_0x232cb8['OrderBy'];}}}else{if(!_['isNil'](_0x525660['items'][_0x33689b])){var _0x232cb8=_[_0x0dcd('0x81')](_0x1760f8,function(_0x5e7c88){return _0x5e7c88['id']===_0x525660[_0x0dcd('0xcf')][_0x33689b]['ItemTypeId'];});if(!_[_0x0dcd('0x4d')](_0x232cb8)){_0x45134f=_0x33689b;}}}if(_['isNil'](_0x45134f)){_0x45134f=0x64;}_0x111350[_0x0dcd('0x20')](addAdditionalPhone(_0x525660['id'],_0x525660['items'][_0x33689b][_0x0dcd('0xc6')],_0x525660[_0x0dcd('0xd0')]?_['isNil'](_0x525660['item_types'][_0x33689b])?null:_0x525660['item_types'][_0x33689b]:_0x525660[_0x0dcd('0xcf')][_0x33689b][_0x0dcd('0xd1')]?_0x525660[_0x0dcd('0xcf')][_0x33689b][_0x0dcd('0xd1')]:null,_0x45134f,_0x39d0d0));}Promise[_0x0dcd('0xb7')](_0x111350)[_0x0dcd('0x14')](function(){db[_0x0dcd('0x1b')][_0x0dcd('0x96')]({'AdditionalPhones':_0x5dd843},{'where':{'id':_0x525660['id']}})[_0x0dcd('0x14')](function(){_0x490a70(0x1);});});});});});}function addAdditionalPhone(_0x55a634,_0xb6a6c1,_0x4b01cd,_0x1af1c6,_0x18c460){return db['CmContactHasItem'][_0x0dcd('0x81')]({'where':{'CmContactId':_0x55a634,'item':_0xb6a6c1}})['then'](function(_0x422a4b){if(_0x422a4b)logger['info'](_0x0dcd('0xd3'),_0x422a4b);else{db[_0x0dcd('0xa1')]['create']({'CmContactId':_0x55a634,'item':_0xb6a6c1,'ItemTypeId':_0x4b01cd,'OrderBy':_0x1af1c6,'ItemClass':'PHONE','description':_0x18c460});}});}function deletePhones(_0x35358c){return db[_0x0dcd('0xa1')][_0x0dcd('0x80')]({'where':{'CmContactId':_0x35358c}});}function deleteCmHopperPhones(_0x500908){return new Promise(function(_0x23c263,_0xbb8169){return db['CmHopper'][_0x0dcd('0xbe')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x500908}})['then'](function(_0xa4b650){db['CmHopperAdditionalPhone'][_0x0dcd('0x80')]({'where':{'CmHopperId':{'$in':_['map'](_0xa4b650,'id')}}});})['then'](function(){_0x23c263(0x1);});});}function addCmHopperPhones(_0x16dbff){return new Promise(function(_0x470f86,_0xfe9d63){return db[_0x0dcd('0xc7')][_0x0dcd('0xbe')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x16dbff}})[_0x0dcd('0x14')](function(_0x132dfe){var _0x9224b9=[];_[_0x0dcd('0x4b')](_0x132dfe,function(_0xbe8c96){_0x9224b9['push'](createCmHopperPhone(_0x16dbff,_0xbe8c96['id']));});Promise['all'](_0x9224b9)[_0x0dcd('0x14')](function(){_0x470f86(0x1);});});});}function createCmHopperPhone(_0x2206fa,_0x38ffb5){return new Promise(function(_0x4c4f54,_0xa864ab){db['CmContactHasItem'][_0x0dcd('0xbe')]({'raw':!![],'attributes':[_0x0dcd('0xd4'),_0x0dcd('0xce')],'where':{'CmContactId':_0x2206fa,'ItemClass':_0x0dcd('0xd5')},'include':[{'model':db[_0x0dcd('0xba')],'attributes':[_0x0dcd('0xce')],'as':'ItemType'}],'order':[_0x0dcd('0xce'),db[_0x0dcd('0x6f')][_0x0dcd('0xd6')](_0x0dcd('0xd7'))]})[_0x0dcd('0x14')](function(_0x1f3e61){var _0x49eb35=0x1;var _0x55ae79=_[_0x0dcd('0x4b')](_0x1f3e61,function(_0x5885ec){_0x5885ec[_0x0dcd('0xd8')]=_0x38ffb5;_0x5885ec['phone']=_0x5885ec[_0x0dcd('0xd4')];_0x5885ec[_0x0dcd('0xce')]=_0x49eb35;delete _0x5885ec[_0x0dcd('0xd9')];_0x49eb35=_0x49eb35+0x1;return _0x5885ec;});return db[_0x0dcd('0xda')][_0x0dcd('0xb2')](_0x55ae79,{});})['then'](function(){_0x4c4f54(0x1);});});}function insertAdditionalPhones(_0x1fb9a8,_0x196d06){return new Promise(function(_0x153c0b,_0x38794d){var _0x476e46=[];for(var _0x4b1976=0x0;_0x4b1976<_0x196d06[_0x0dcd('0x1e')];_0x4b1976++){var _0x78abc2=_0x196d06[_0x4b1976];_0x476e46[_0x0dcd('0x20')](parseContactItemType(_0x78abc2));}Promise[_0x0dcd('0xb7')](_0x476e46)[_0x0dcd('0x14')](function(){var _0x5117e8={'id':_0x1fb9a8['id'],'items':_0x196d06};return addAdditionalPhones(_0x5117e8)[_0x0dcd('0x14')](function(_0x568f6d){return addCmHopperPhones(_0x1fb9a8['id']);});})['then'](function(){_0x153c0b(_0x1fb9a8);});});}function parseContactItemType(_0x5b1c66){return new Promise(function(_0x398bd7,_0x2cfa7a){if(_0x5b1c66[_0x0dcd('0x89')](_0x0dcd('0xd1'))){_0x398bd7(_0x5b1c66);}else{return db[_0x0dcd('0xba')][_0x0dcd('0x81')]({'where':{'name':_0x5b1c66[_0x0dcd('0xbb')]}})[_0x0dcd('0x14')](function(_0x27ee7f){if(_[_0x0dcd('0x4d')](_0x27ee7f))_0x5b1c66[_0x0dcd('0xd1')]=null;else _0x5b1c66['ItemTypeId']=_0x27ee7f['id'];_0x398bd7(_0x5b1c66);});}});}exports[_0x0dcd('0xdb')]=function(_0x41f1d7,_0x903d58){return db['CmContactHasItem']['findAll']({'raw':!![],'where':{'CmContactId':_0x41f1d7[_0x0dcd('0x82')]['id'],'ItemClass':_0x0dcd('0xd5')},'include':[{'model':db[_0x0dcd('0xba')],'as':_0x0dcd('0xbb')}],'order':[[_0x0dcd('0xce')],[db[_0x0dcd('0x6f')][_0x0dcd('0xd6')](_0x0dcd('0xd7'))]]})[_0x0dcd('0x14')](function(_0x458919){return _0x458919;})[_0x0dcd('0x14')](respondWithResult(_0x903d58,null))[_0x0dcd('0x8a')](handleError(_0x903d58,null));};exports[_0x0dcd('0xdc')]=function(_0x4e0a81,_0x1a5bab){return db[_0x0dcd('0xa1')]['findAll']({'raw':!![],'where':{'CmContactId':_0x4e0a81[_0x0dcd('0x8c')]['fromContactId']}})[_0x0dcd('0x14')](function(_0x1e9718){var _0xa7930=_[_0x0dcd('0x4b')](_0x1e9718,function(_0x3006ff){_0x3006ff[_0x0dcd('0xdd')]=_0x4e0a81[_0x0dcd('0x8c')][_0x0dcd('0xde')];return _0x3006ff;});return db[_0x0dcd('0xa1')][_0x0dcd('0xb2')](_0xa7930,{});})[_0x0dcd('0x14')](function(_0x27670a){return addCmHopperPhones(_0x4e0a81['body'][_0x0dcd('0xde')]);})[_0x0dcd('0x14')](function(_0x439ae7){return['ok'];})[_0x0dcd('0x14')](respondWithResult(_0x1a5bab,null))['catch'](handleError(_0x1a5bab,null));};exports[_0x0dcd('0xdf')]=function(_0x32e7f4,_0x44238b){var _0x1fd41e=[];_0x1fd41e[_0x0dcd('0x20')](createCmHopperPhone(_0x32e7f4['body']['id'],_0x32e7f4['body'][_0x0dcd('0xe0')]));Promise[_0x0dcd('0xb7')](_0x1fd41e)['then'](function(){return[0x1];})[_0x0dcd('0x14')](respondWithResult(_0x44238b,null));};exports[_0x0dcd('0xe1')]=function(_0x3cc087,_0x388117){var _0x233a7f={'raw':![],'where':{}};var _0x6a1a6={};var _0xc62cf0={'count':0x0,'rows':[]};return db[_0x0dcd('0x1b')][_0x0dcd('0x22')]({'where':{'id':_0x3cc087['params']['id']}})[_0x0dcd('0x14')](handleEntityNotFound(_0x388117,null))[_0x0dcd('0x14')](function(_0x271d9a){if(_0x271d9a){_0x6a1a6[_0x0dcd('0x2a')]=_['keys'](db[_0x0dcd('0xc7')]['rawAttributes']);_0x6a1a6[_0x0dcd('0x27')]=_['keys'](_0x3cc087[_0x0dcd('0x27')]);_0x6a1a6[_0x0dcd('0x28')]=_[_0x0dcd('0x29')](_0x6a1a6['model'],_0x6a1a6[_0x0dcd('0x27')]);_0x233a7f[_0x0dcd('0x2b')]=_['intersection'](_0x6a1a6[_0x0dcd('0x2a')],qs[_0x0dcd('0x2c')](_0x3cc087[_0x0dcd('0x27')][_0x0dcd('0x2c')]));_0x233a7f['attributes']=_0x233a7f[_0x0dcd('0x2b')][_0x0dcd('0x1e')]?_0x233a7f[_0x0dcd('0x2b')]:_0x6a1a6['model'];if(!_0x3cc087['query'][_0x0dcd('0x89')](_0x0dcd('0x2d'))){_0x233a7f[_0x0dcd('0xf')]=qs['limit'](_0x3cc087[_0x0dcd('0x27')][_0x0dcd('0xf')]);_0x233a7f[_0x0dcd('0x11')]=qs['offset'](_0x3cc087[_0x0dcd('0x27')][_0x0dcd('0x11')]);}_0x233a7f[_0x0dcd('0x63')]=qs[_0x0dcd('0x2e')](_0x3cc087['query'][_0x0dcd('0x2e')]);_0x233a7f[_0x0dcd('0x2f')]=qs[_0x0dcd('0x28')](_[_0x0dcd('0x30')](_0x3cc087[_0x0dcd('0x27')],_0x6a1a6[_0x0dcd('0x28')]));_0x233a7f[_0x0dcd('0x2f')][_0x0dcd('0xe2')]=_0x271d9a['id'];if(_0x3cc087[_0x0dcd('0x27')][_0x0dcd('0x4c')]){_0x233a7f[_0x0dcd('0x2f')]=_[_0x0dcd('0x8b')](_0x233a7f[_0x0dcd('0x2f')],{'$or':_[_0x0dcd('0x4b')](_0x233a7f[_0x0dcd('0x2b')],function(_0x5be348){var _0x3e1991={};_0x3e1991[_0x5be348]={'$like':'%'+_0x3cc087[_0x0dcd('0x27')][_0x0dcd('0x4c')]+'%'};return _0x3e1991;})});}_0x233a7f=_[_0x0dcd('0x8b')]({},_0x233a7f,_0x3cc087[_0x0dcd('0xc9')]);return db[_0x0dcd('0xc7')][_0x0dcd('0x10')]({'where':_0x233a7f[_0x0dcd('0x2f')]})[_0x0dcd('0x14')](function(_0x3652a5){_0xc62cf0[_0x0dcd('0x10')]=_0x3652a5;if(_0x3cc087['query']['includeAll']){_0x233a7f[_0x0dcd('0xe3')]=[{'all':!![]}];}return db[_0x0dcd('0xc7')][_0x0dcd('0xbe')](_0x233a7f);})[_0x0dcd('0x14')](function(_0x78f1a){_0xc62cf0[_0x0dcd('0x7f')]=_0x78f1a;return _0xc62cf0;});}})[_0x0dcd('0x14')](respondWithFilteredResult(_0x388117,_0x233a7f))[_0x0dcd('0x8a')](handleError(_0x388117,null));};exports[_0x0dcd('0xe4')]=function(_0x39170d,_0x41812d){var _0x31c64b={'raw':!![],'where':{}};var _0x133477={};var _0x372afe={'count':0x0,'rows':[]};return db[_0x0dcd('0x1b')][_0x0dcd('0x22')]({'where':{'id':_0x39170d[_0x0dcd('0x82')]['id']}})['then'](handleEntityNotFound(_0x41812d,null))[_0x0dcd('0x14')](function(_0x109708){if(_0x109708){_0x133477[_0x0dcd('0x2a')]=_[_0x0dcd('0x1d')](db[_0x0dcd('0xa2')][_0x0dcd('0xc8')]);_0x133477[_0x0dcd('0x27')]=_[_0x0dcd('0x1d')](_0x39170d[_0x0dcd('0x27')]);_0x133477['filters']=_[_0x0dcd('0x29')](_0x133477[_0x0dcd('0x2a')],_0x133477[_0x0dcd('0x27')]);_0x31c64b[_0x0dcd('0x2b')]=_[_0x0dcd('0x29')](_0x133477['model'],qs['fields'](_0x39170d[_0x0dcd('0x27')][_0x0dcd('0x2c')]));_0x31c64b[_0x0dcd('0x2b')]=_0x31c64b['attributes'][_0x0dcd('0x1e')]?_0x31c64b['attributes']:_0x133477[_0x0dcd('0x2a')];if(!_0x39170d[_0x0dcd('0x27')][_0x0dcd('0x89')](_0x0dcd('0x2d'))){_0x31c64b[_0x0dcd('0xf')]=qs['limit'](_0x39170d[_0x0dcd('0x27')][_0x0dcd('0xf')]);_0x31c64b[_0x0dcd('0x11')]=qs[_0x0dcd('0x11')](_0x39170d['query']['offset']);}_0x31c64b[_0x0dcd('0x63')]=qs[_0x0dcd('0x2e')](_0x39170d[_0x0dcd('0x27')][_0x0dcd('0x2e')]);_0x31c64b[_0x0dcd('0x2f')]=qs[_0x0dcd('0x28')](_['pick'](_0x39170d[_0x0dcd('0x27')],_0x133477[_0x0dcd('0x28')]));_0x31c64b['where']['ContactId']=_0x109708['id'];if(_0x39170d[_0x0dcd('0x27')][_0x0dcd('0x4c')]){_0x31c64b[_0x0dcd('0x2f')]=_[_0x0dcd('0x8b')](_0x31c64b[_0x0dcd('0x2f')],{'$or':_['map'](_0x31c64b[_0x0dcd('0x2b')],function(_0x47026d){var _0x24c5da={};_0x24c5da[_0x47026d]={'$like':'%'+_0x39170d[_0x0dcd('0x27')][_0x0dcd('0x4c')]+'%'};return _0x24c5da;})});}_0x31c64b=_[_0x0dcd('0x8b')]({},_0x31c64b,_0x39170d[_0x0dcd('0xc9')]);return db[_0x0dcd('0xa2')]['count']({'where':_0x31c64b[_0x0dcd('0x2f')]})['then'](function(_0x29bec0){_0x372afe[_0x0dcd('0x10')]=_0x29bec0;if(_0x39170d['query'][_0x0dcd('0xe5')]){_0x31c64b[_0x0dcd('0xe3')]=[{'all':!![]}];}return db[_0x0dcd('0xa2')][_0x0dcd('0xbe')](_0x31c64b);})[_0x0dcd('0x14')](function(_0x4d52cb){_0x372afe['rows']=_0x4d52cb;return _0x372afe;});}})['then'](respondWithFilteredResult(_0x41812d,_0x31c64b))['catch'](handleError(_0x41812d,null));};exports[_0x0dcd('0xe6')]=function(_0x24d9cd,_0x76418){var _0x5b0fa9={'raw':!![],'where':{}};var _0x1258de={};var _0x218d4b={'count':0x0,'rows':[]};return db[_0x0dcd('0x1b')][_0x0dcd('0x22')]({'where':{'id':_0x24d9cd['params']['id']}})[_0x0dcd('0x14')](handleEntityNotFound(_0x76418,null))['then'](function(_0x14b23c){if(_0x14b23c){_0x1258de[_0x0dcd('0x2a')]=_[_0x0dcd('0x1d')](db[_0x0dcd('0xe7')][_0x0dcd('0xc8')]);_0x1258de[_0x0dcd('0x27')]=_['keys'](_0x24d9cd[_0x0dcd('0x27')]);_0x1258de['filters']=_[_0x0dcd('0x29')](_0x1258de[_0x0dcd('0x2a')],_0x1258de['query']);_0x5b0fa9[_0x0dcd('0x2b')]=_[_0x0dcd('0x29')](_0x1258de[_0x0dcd('0x2a')],qs[_0x0dcd('0x2c')](_0x24d9cd[_0x0dcd('0x27')][_0x0dcd('0x2c')]));_0x5b0fa9[_0x0dcd('0x2b')]=_0x5b0fa9['attributes'][_0x0dcd('0x1e')]?_0x5b0fa9['attributes']:_0x1258de[_0x0dcd('0x2a')];if(!_0x24d9cd[_0x0dcd('0x27')][_0x0dcd('0x89')](_0x0dcd('0x2d'))){_0x5b0fa9[_0x0dcd('0xf')]=qs['limit'](_0x24d9cd['query']['limit']);_0x5b0fa9['offset']=qs[_0x0dcd('0x11')](_0x24d9cd[_0x0dcd('0x27')]['offset']);}_0x5b0fa9[_0x0dcd('0x63')]=qs[_0x0dcd('0x2e')](_0x24d9cd[_0x0dcd('0x27')][_0x0dcd('0x2e')]);_0x5b0fa9[_0x0dcd('0x2f')]=qs['filters'](_['pick'](_0x24d9cd['query'],_0x1258de[_0x0dcd('0x28')]));_0x5b0fa9[_0x0dcd('0x2f')][_0x0dcd('0xe2')]=_0x14b23c['id'];if(_0x24d9cd['query']['filter']){_0x5b0fa9[_0x0dcd('0x2f')]=_[_0x0dcd('0x8b')](_0x5b0fa9[_0x0dcd('0x2f')],{'$or':_[_0x0dcd('0x4b')](_0x5b0fa9[_0x0dcd('0x2b')],function(_0x278922){var _0xa72264={};_0xa72264[_0x278922]={'$like':'%'+_0x24d9cd['query']['filter']+'%'};return _0xa72264;})});}_0x5b0fa9=_[_0x0dcd('0x8b')]({},_0x5b0fa9,_0x24d9cd[_0x0dcd('0xc9')]);return db[_0x0dcd('0xe7')][_0x0dcd('0x10')]({'where':_0x5b0fa9[_0x0dcd('0x2f')]})['then'](function(_0x11db72){_0x218d4b[_0x0dcd('0x10')]=_0x11db72;if(_0x24d9cd[_0x0dcd('0x27')][_0x0dcd('0xe5')]){_0x5b0fa9[_0x0dcd('0xe3')]=[{'all':!![]}];}return db[_0x0dcd('0xe7')][_0x0dcd('0xbe')](_0x5b0fa9);})[_0x0dcd('0x14')](function(_0x15b8fc){_0x218d4b[_0x0dcd('0x7f')]=_0x15b8fc;return _0x218d4b;});}})[_0x0dcd('0x14')](respondWithFilteredResult(_0x76418,_0x5b0fa9))['catch'](handleError(_0x76418,null));};exports['getJscriptySessions']=function(_0x51d536,_0x13b12f){var _0x524ab2={'raw':!![],'where':{}};var _0x1c3ac8={};var _0x2fb0e3={'count':0x0,'rows':[]};return db[_0x0dcd('0x1b')][_0x0dcd('0x22')]({'where':{'id':_0x51d536[_0x0dcd('0x82')]['id']}})[_0x0dcd('0x14')](handleEntityNotFound(_0x13b12f,null))['then'](function(_0x25f47a){if(_0x25f47a){_0x1c3ac8['model']=_[_0x0dcd('0x1d')](db[_0x0dcd('0xa9')][_0x0dcd('0xc8')]);_0x1c3ac8[_0x0dcd('0x27')]=_['keys'](_0x51d536[_0x0dcd('0x27')]);_0x1c3ac8['filters']=_[_0x0dcd('0x29')](_0x1c3ac8[_0x0dcd('0x2a')],_0x1c3ac8[_0x0dcd('0x27')]);_0x524ab2[_0x0dcd('0x2b')]=_['intersection'](_0x1c3ac8['model'],qs[_0x0dcd('0x2c')](_0x51d536[_0x0dcd('0x27')]['fields']));_0x524ab2[_0x0dcd('0x2b')]=_0x524ab2[_0x0dcd('0x2b')][_0x0dcd('0x1e')]?_0x524ab2[_0x0dcd('0x2b')]:_0x1c3ac8[_0x0dcd('0x2a')];if(!_0x51d536[_0x0dcd('0x27')]['hasOwnProperty'](_0x0dcd('0x2d'))){_0x524ab2['limit']=qs['limit'](_0x51d536[_0x0dcd('0x27')][_0x0dcd('0xf')]);_0x524ab2[_0x0dcd('0x11')]=qs['offset'](_0x51d536[_0x0dcd('0x27')]['offset']);}_0x524ab2['order']=qs[_0x0dcd('0x2e')](_0x51d536[_0x0dcd('0x27')]['sort']);_0x524ab2['where']=qs[_0x0dcd('0x28')](_[_0x0dcd('0x30')](_0x51d536[_0x0dcd('0x27')],_0x1c3ac8[_0x0dcd('0x28')]));_0x524ab2[_0x0dcd('0x2f')][_0x0dcd('0xe2')]=_0x25f47a['id'];if(_0x51d536[_0x0dcd('0x27')][_0x0dcd('0x4c')]){_0x524ab2[_0x0dcd('0x2f')]=_[_0x0dcd('0x8b')](_0x524ab2[_0x0dcd('0x2f')],{'$or':_[_0x0dcd('0x4b')](_0x524ab2[_0x0dcd('0x2b')],function(_0x47eb80){var _0x341b10={};_0x341b10[_0x47eb80]={'$like':'%'+_0x51d536[_0x0dcd('0x27')][_0x0dcd('0x4c')]+'%'};return _0x341b10;})});}_0x524ab2=_['merge']({},_0x524ab2,_0x51d536['options']);return db['JscriptySessionReport']['count']({'where':_0x524ab2['where']})['then'](function(_0x358952){_0x2fb0e3[_0x0dcd('0x10')]=_0x358952;if(_0x51d536[_0x0dcd('0x27')]['includeAll']){_0x524ab2[_0x0dcd('0xe3')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0x0dcd('0xbe')](_0x524ab2);})['then'](function(_0x449383){_0x2fb0e3[_0x0dcd('0x7f')]=_0x449383;return _0x2fb0e3;});}})[_0x0dcd('0x14')](respondWithFilteredResult(_0x13b12f,_0x524ab2))['catch'](handleError(_0x13b12f,null));};exports[_0x0dcd('0xe8')]=function(_0x14d658,_0x3727b4){try{if(!_0x14d658[_0x0dcd('0x8c')]['ListId']){throw new Error(_0x0dcd('0xe9'));}if(!_0x14d658[_0x0dcd('0x8c')][_0x0dcd('0xea')]){throw new Error(_0x0dcd('0xeb'));}if(!_0x14d658[_0x0dcd('0x8c')][_0x0dcd('0xec')]){throw new Error('No\x20association\x20values\x20specified!');}if(!_0x14d658[_0x0dcd('0x8c')]['socket_timestamp']){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0xcf53fb=_0x14d658[_0x0dcd('0x8c')][_0x0dcd('0xea')]['split'](',');var _0x18b5cc=_0x14d658['body'][_0x0dcd('0xec')][_0x0dcd('0x42')](',');if(!_0xcf53fb[_0x0dcd('0x1e')]||!_0x18b5cc[_0x0dcd('0x1e')]||_0xcf53fb['length']!==_0x18b5cc[_0x0dcd('0x1e')]){throw new Error(_0x0dcd('0xed'));}_0x14d658[_0x0dcd('0x8c')][_0x0dcd('0x2c')]=_[_0x0dcd('0xee')](_0xcf53fb,_0x18b5cc);if(!_0x14d658[_0x0dcd('0x8c')]['fields'][_0x0dcd('0xc6')]){throw new Error(_0x0dcd('0xef'));}if(!_0x14d658[_0x0dcd('0x8c')][_0x0dcd('0x2c')][_0x0dcd('0xf0')]){throw new Error(_0x0dcd('0xf1'));}var _0x48fc1b=path[_0x0dcd('0x8f')](config[_0x0dcd('0xf2')],_0x0dcd('0xf3'),_0x14d658[_0x0dcd('0xf4')][_0x0dcd('0xf5')]);fs[_0x0dcd('0xf6')](_0x48fc1b,parseInt(_0x0dcd('0xf7'),0x8));var _0x52dfca=require(_0x0dcd('0xf8'))[_0x0dcd('0xf9')](path[_0x0dcd('0x8f')](__dirname,_0x0dcd('0xfa')),[_0x48fc1b,_0x14d658['body'][_0x0dcd('0xea')],_0x14d658['body'][_0x0dcd('0xec')],_0x14d658[_0x0dcd('0x8c')][_0x0dcd('0x4f')],_0x14d658[_0x0dcd('0x8c')][_0x0dcd('0xfb')],_0x14d658[_0x0dcd('0x8c')]['duplicates'],_0x14d658['body']['socket_timestamp']]);return _0x3727b4[_0x0dcd('0xc')](0xc8)[_0x0dcd('0xd')]({'message':_0x0dcd('0xfc'),'pid':_0x52dfca[_0x0dcd('0xfd')]});}catch(_0x7f6444){return _0x3727b4[_0x0dcd('0xc')](0x1f4)[_0x0dcd('0x19')](_0x7f6444);}};exports[_0x0dcd('0xfe')]=function(_0x5559ae,_0x3a6d46){var _0x2484c7=fs['createReadStream'](_0x5559ae[_0x0dcd('0xf4')][_0x0dcd('0x2')]);Papa[_0x0dcd('0xff')](_0x2484c7,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x40e65e){return _0x3a6d46[_0x0dcd('0xc')](0xc8)[_0x0dcd('0xd')]({'file':_0x5559ae['file'],'fields':_0x40e65e[_0x0dcd('0x100')]['fields']});}});};exports[_0x0dcd('0x101')]=function(_0x3dddf3,_0x1583a2){return db[_0x0dcd('0x43')][_0x0dcd('0xbe')]({'raw':!![],'attributes':['id'],'where':{'role':'agent'}})['then'](function(_0x19b88f){var _0x5c1769=![];if(!_0x3dddf3[_0x0dcd('0x8c')][_0x0dcd('0x4f')]){throw new Error(_0x0dcd('0xe9'));}if(!_0x3dddf3[_0x0dcd('0x8c')]['binding'][_0x0dcd('0xc6')]){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x3dddf3['body']['binding'][_0x0dcd('0xf0')]){throw new Error(_0x0dcd('0xf1'));}if(!_0x3dddf3[_0x0dcd('0x8c')][_0x0dcd('0x102')]){throw new Error(_0x0dcd('0x103'));}var _0x220794=require(_0x0dcd('0xf8'))[_0x0dcd('0xf9')](path['join'](__dirname,_0x0dcd('0x104')),[_0x3dddf3['params']['id'],JSON[_0x0dcd('0x105')](_0x3dddf3[_0x0dcd('0x8c')]),JSON[_0x0dcd('0x105')](_0x19b88f)]);_0x220794['on'](_0x0dcd('0x106'),function(){_0x5c1769=!![];return _0x1583a2['status'](0xc8)['json']({'message':_0x0dcd('0x107'),'pid':_0x220794[_0x0dcd('0xfd')]});});_0x220794['on'](_0x0dcd('0x108'),function(_0x229542){if(_0x229542&&!_0x5c1769){return _0x1583a2[_0x0dcd('0xc')](0x1f4)[_0x0dcd('0xd')]({'message':_0x0dcd('0x109'),'pid':_0x220794['pid']});}});})['catch'](handleError(_0x1583a2,null));};exports[_0x0dcd('0x10a')]=function(_0x5e2588,_0x38d90a,_0x5f1c05){return db['User'][_0x0dcd('0xbe')]({'raw':!![],'attributes':['id'],'where':{'role':_0x0dcd('0x6e')}})['then'](function(_0x2a1e1e){var _0x51b410=![];if(!_0x5e2588[_0x0dcd('0x8c')][_0x0dcd('0x4f')]){throw new Error('No\x20ListId\x20specified');}if(!_0x5e2588[_0x0dcd('0x8c')][_0x0dcd('0x10b')][_0x0dcd('0xc6')]){throw new Error(_0x0dcd('0xef'));}if(!_0x5e2588['body']['binding'][_0x0dcd('0xf0')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x5e2588['body'][_0x0dcd('0x102')]){throw new Error(_0x0dcd('0x103'));}var _0x198aff=require('child_process')[_0x0dcd('0xf9')](path[_0x0dcd('0x8f')](__dirname,_0x0dcd('0x10c')),[_0x5e2588[_0x0dcd('0x82')]['id'],JSON[_0x0dcd('0x105')](_0x5e2588[_0x0dcd('0x8c')]),JSON[_0x0dcd('0x105')](_0x2a1e1e)]);_0x198aff['on']('message',function(_0x15d1da){_0x51b410=!![];return _0x38d90a[_0x0dcd('0xc')](0xc8)[_0x0dcd('0xd')]({'message':_0x0dcd('0x107'),'pid':_0x198aff[_0x0dcd('0xfd')]});});_0x198aff['on']('exit',function(_0x37735c){if(_0x37735c&&!_0x51b410){return _0x38d90a['status'](0x1f4)[_0x0dcd('0xd')]({'message':'error\x20child\x20process','pid':_0x198aff[_0x0dcd('0xfd')]});}});})[_0x0dcd('0x8a')](handleError(_0x38d90a,null));};exports[_0x0dcd('0x10d')]=function(_0x3dca07,_0x2e0892){var _0x3a13c3=[_0x0dcd('0x10e'),_0x0dcd('0x10f'),_0x0dcd('0x110'),_0x0dcd('0x111'),'fax',_0x0dcd('0x112'),'voice'];var _0x5ad579={'offset':0x0,'order':qs[_0x0dcd('0x2e')]('-createdAt')},_0x23590c={'count':0x0,'rows':[]};Promise[_0x0dcd('0x68')]()[_0x0dcd('0x14')](function(){if(_0x3dca07[_0x0dcd('0x27')]['channel']){if(!_[_0x0dcd('0x113')](_0x3a13c3,_0x3dca07['query'][_0x0dcd('0x114')][_0x0dcd('0x115')]())){throw new Error(_0x0dcd('0x116'));}_0x3a13c3=[_0x3dca07[_0x0dcd('0x27')]['channel'][_0x0dcd('0x115')]()];}if(_0x3dca07[_0x0dcd('0x27')][_0x0dcd('0x117')]){try{var _0x3fe5bd=JSON[_0x0dcd('0xff')](_0x3dca07['query']['range']);if(!moment(_0x3fe5bd[_0x0dcd('0x34')])[_0x0dcd('0x118')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x3fe5bd['to'])[_0x0dcd('0x118')]()){throw new Error('Invalid\x20date\x20for\x20range\x20to\x20filter');}}catch(_0x3c010d){throw new Error(_0x0dcd('0x119'));}}if(!_0x3dca07[_0x0dcd('0x27')]['hasOwnProperty'](_0x0dcd('0x2d'))){_0x5ad579[_0x0dcd('0xf')]=qs[_0x0dcd('0xf')](_0x3dca07[_0x0dcd('0x27')][_0x0dcd('0xf')]||0xa);_0x5ad579[_0x0dcd('0x11')]=qs[_0x0dcd('0x11')](_0x3dca07[_0x0dcd('0x27')][_0x0dcd('0x11')]);}var _0x431f25=_0x3a13c3['map'](function(_0x2238a3){if(_0x2238a3==='voice'){var _0x4386c6={'attributes':['id',_0x0dcd('0x11a'),'type','source','destination','callerid',_0x0dcd('0x11b'),_0x0dcd('0x11c'),_0x0dcd('0x11d'),_0x0dcd('0x11e'),_0x0dcd('0x11f'),_0x0dcd('0x120'),_0x0dcd('0x121'),'userThirdDisposition',_0x0dcd('0x122')],'where':{'ContactId':_0x3dca07[_0x0dcd('0x82')]['id']},'include':[{'model':db[_0x0dcd('0x43')],'as':_0x0dcd('0x43'),'attributes':['id','name',_0x0dcd('0x123'),_0x0dcd('0x86')]}],'order':[['createdAt',_0x0dcd('0x64')]]};if(_0x3dca07[_0x0dcd('0x27')]['range']){_0x4386c6['where'][_0x0dcd('0x11f')]={'$gte':_0x3fe5bd[_0x0dcd('0x34')],'$lte':_0x3fe5bd['to']};}return db[_0x0dcd('0xa3')][_0x0dcd('0x124')](_0x4386c6)[_0x0dcd('0x14')](function(_0x4adff4){_0x23590c[_0x0dcd('0x10')]+=_0x4adff4[_0x0dcd('0x10')];return _['map'](_0x4adff4[_0x0dcd('0x7f')],function(_0x5c9a34){var _0x376ea7=_0x5c9a34[_0x0dcd('0x8d')]({'plain':!![]});_0x376ea7[_0x0dcd('0x114')]=_0x2238a3;if(_0x376ea7[_0x0dcd('0x43')]){_0x376ea7['User']={'id':_0x376ea7[_0x0dcd('0x43')]['id'],'name':_0x376ea7[_0x0dcd('0x43')][_0x0dcd('0x18')],'fullname':_0x376ea7[_0x0dcd('0x43')][_0x0dcd('0x123')],'alias':_0x376ea7[_0x0dcd('0x43')]['alias']};}return _0x376ea7;});});}else{var _0x5f3f12=_[_0x0dcd('0x125')](_0x2238a3)+(_0x2238a3===_0x0dcd('0x10f')?_0x0dcd('0x126'):_0x0dcd('0x127'));var _0x532f1b={'attributes':['id',_0x0dcd('0x128'),_0x0dcd('0x129'),_0x0dcd('0x11f'),_0x0dcd('0x11e'),_0x0dcd('0x12a'),'secondDisposition',_0x0dcd('0x12b'),_0x0dcd('0x122'),_0x5f3f12+'Id'],'where':{'ContactId':_0x3dca07[_0x0dcd('0x82')]['id']},'include':[{'model':db[_0x5f3f12],'as':_0x0dcd('0x127'),'attributes':['id',_0x0dcd('0x18'),_0x0dcd('0x12c')]},{'model':db[_0x0dcd('0x43')],'as':'Owner','attributes':['id',_0x0dcd('0x18'),_0x0dcd('0x123')]},{'model':db[_0x0dcd('0x40')],'as':'Tags','attributes':['id',_0x0dcd('0x18'),_0x0dcd('0x33')],'through':{'attributes':[]}}],'order':[['createdAt',_0x0dcd('0x64')]]};if(_0x3dca07[_0x0dcd('0x27')]['range']){_0x532f1b[_0x0dcd('0x2f')]['createdAt']={'$gte':_0x3fe5bd[_0x0dcd('0x34')],'$lte':_0x3fe5bd['to']};}switch(_0x2238a3){case _0x0dcd('0x10f'):_0x532f1b['attributes']['push'](_0x0dcd('0x12d'),_0x0dcd('0x12e'),_0x0dcd('0x12f'),_0x0dcd('0x130'),_0x0dcd('0x131'),'ratingMessage',_0x0dcd('0x132'),_0x0dcd('0x133'),_0x0dcd('0x134'));break;case _0x0dcd('0x10e'):_0x532f1b[_0x0dcd('0x2b')][_0x0dcd('0x20')](_0x0dcd('0x135'),_0x0dcd('0x136'));break;case'openchannel':_0x532f1b[_0x0dcd('0x2b')]['push'](_0x0dcd('0x137'),_0x0dcd('0x138'));break;}return db[_['startCase'](_0x2238a3)+_0x0dcd('0x139')][_0x0dcd('0x124')](_0x532f1b)['then'](function(_0x4729c3){_0x23590c[_0x0dcd('0x10')]+=_0x4729c3[_0x0dcd('0x10')];return _[_0x0dcd('0x4b')](_0x4729c3[_0x0dcd('0x7f')],function(_0x299c81){var _0x384b6e=_0x299c81[_0x0dcd('0x8d')]({'plain':!![]});_0x384b6e[_0x0dcd('0x114')]=_0x2238a3;if(_0x384b6e[_0x0dcd('0x13a')]){_0x384b6e[_0x0dcd('0x13a')]={'id':_0x384b6e['Owner']['id'],'name':_0x384b6e[_0x0dcd('0x13a')][_0x0dcd('0x18')],'fullname':_0x384b6e[_0x0dcd('0x13a')]['fullname']};}return _0x384b6e;});});}});return Promise[_0x0dcd('0xb7')](_0x431f25);})[_0x0dcd('0x14')](function(_0x5f3177){return _(_0x5f3177)[_0x0dcd('0x13b')]()[_0x0dcd('0x13c')](_0x0dcd('0x11f'))[_0x0dcd('0x13d')]()[_0x0dcd('0x41')]();})[_0x0dcd('0x14')](function(_0x55957a){_0x23590c[_0x0dcd('0x7f')]=_0x5ad579['limit']?_0x55957a[_0x0dcd('0x13e')](_0x5ad579['offset'],_0x5ad579[_0x0dcd('0x11')]+_0x5ad579[_0x0dcd('0xf')]):_0x55957a;return _0x23590c;})['then'](respondWithFilteredResult(_0x2e0892,_0x5ad579))[_0x0dcd('0x8a')](handleError(_0x2e0892,null));};
\ No newline at end of file
+var _0xe95b=['map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','and','castTo','DATE','buildExpression','text','start','filter','isNil','Contact','push','isEmpty','ListId','c.ListId\x20IN\x20?','concat','\x20=\x20?','isArray','tag','replace','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','group','c.id','Sequelize','QueryTypes','SELECT','clone','DESC','having','resolve','user','role','some','User','c.ListId\x20IS\x20NULL','agent','toString','fields','c.firstName','c.lastName','c.phone','c.ListId','TagIds','sequelize','Tags','rows','catch','find','params','columnName','findAll','displayName','alias','custom','values','hasOwnProperty','body','get','mergeWith','tags','join','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','ChatOfflineMessage','MailInteraction','MailMessage','SmsMessage','FaxInteraction','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperFinal','CmHopperHistory','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','dialTimezone','utcOffset','timezones','additionalPhones','each','duplicates','$or','findOrCreate','spread','contact','show','literal','Phones.OrderBy','omit','format','$and','table','setFields','toParam','phone','getTags','rawAttributes','merge','options','setTags','ids','all','ContactItemType','OrderBy','items','item_types','ItemTypeId','description','PHONE','CmHopperAdditionalPhone','item','ItemType','`ItemType`.OrderBy','CmHopperId','getAdditionalPhones','duplicateAdditionalPhones','fromContactId','CmContactId','toContactId','bulkCreate','rescheduleAdditionalPhones','getHoppers','include','getHopperHistories','ContactId','includeAll','getHopperFinals','getJscriptySessions','uploadCsv','binding_keys','No\x20association\x20keys\x20specified!','binding_values','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','file','filename','chmodSync','0777','fork','../../components/import/cm/csv','socket_timestamp','File\x20uploaded\x20correctly!','upload','createReadStream','path','parse','import','binding','../../components/import/cm/csv2','stringify','message','start\x20child\x20process\x20correctly!','pid','exit','error\x20child\x20process','No\x20ListId\x20specified','child_process','../../components/import/cm/csvUpdates','getJourney','mail','chat','sms','openchannel','whatsapp','-createdAt','includes','channel','toLowerCase','Invalid\x20channel','range','Invalid\x20date\x20for\x20range\x20from\x20filter','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','voice','source','destination','starttime','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','startCase','Website','Account','closed','closedAt','disposition','thirdDisposition','key','customerIp','customerPort','deviceModel','osName','ratingMessage','ratingValue','referer','subject','substatus','externalUrl','threadId','Interaction','Owner','flatten','sortBy','reverse','bluebird','util','lodash','squel','papaparse','../../config/logger','../../config/environment','../../config/environment/shared','redis','localhost','./cmContact.socket','register','status','json','offset','undefined','count','limit','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','index','CmContact','describe','keys','startsWith','CmCustomField','findOne','trimStart','length','cf_','fieldType','type','model','query','filters','intersection','attributes','nolimit','order','sort','where','pick','select','field','color','from','tools_tags','cm_contacts','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','t.id\x20=\x20ct.TagId','c.deletedAt\x20IS\x20NULL','expr','search','sqlOperator','conditions','Tag','value','split'];(function(_0x3c8790,_0x2d776f){var _0x4d9e38=function(_0x5632d3){while(--_0x5632d3){_0x3c8790['push'](_0x3c8790['shift']());}};_0x4d9e38(++_0x2d776f);}(_0xe95b,0xef));var _0xbe95=function(_0x2abcbb,_0x5bad29){_0x2abcbb=_0x2abcbb-0x0;var _0x2500eb=_0xe95b[_0x2abcbb];return _0x2500eb;};'use strict';var moment=require('moment');var BPromise=require(_0xbe95('0x0'));var util=require(_0xbe95('0x1'));var path=require('path');var fs=require('fs');var _=require(_0xbe95('0x2'));var squel=require(_0xbe95('0x3'));var Papa=require(_0xbe95('0x4'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var logger=require(_0xbe95('0x5'))('api');var config=require(_0xbe95('0x6'));var shared=require(_0xbe95('0x7'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0xbe95('0x8')],{'host':_0xbe95('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbe95('0x8')]));require(_0xbe95('0xa'))[_0xbe95('0xb')](socket);function respondWithResult(_0x555089,_0xc08871){_0xc08871=_0xc08871||0xc8;return function(_0x28cb19){if(_0x28cb19){return _0x555089[_0xbe95('0xc')](_0xc08871)[_0xbe95('0xd')](_0x28cb19);}};}function respondWithFilteredResult(_0x2e8273,_0x1b9251){return function(_0xc4a253){if(_0xc4a253){var _0x167edd=typeof _0x1b9251[_0xbe95('0xe')]==='undefined'&&typeof _0x1b9251['limit']===_0xbe95('0xf');var _0x349805=_0xc4a253[_0xbe95('0x10')];var _0x493ace=_0x167edd?0x0:_0x1b9251['offset'];var _0x33a278=_0x167edd?_0xc4a253['count']:_0x1b9251[_0xbe95('0xe')]+_0x1b9251[_0xbe95('0x11')];var _0x125531;if(_0x33a278>=_0x349805){_0x33a278=_0x349805;_0x125531=0xc8;}else{_0x125531=0xce;}_0x2e8273[_0xbe95('0xc')](_0x125531);return _0x2e8273['set'](_0xbe95('0x12'),_0x493ace+'-'+_0x33a278+'/'+_0x349805)[_0xbe95('0xd')](_0xc4a253);}return null;};}function saveUpdates(_0x4070a4){return function(_0x335548){if(_0x335548){return _0x335548[_0xbe95('0x13')](_0x4070a4)[_0xbe95('0x14')](function(_0x10067e){return _0x10067e;});}return null;};}function removeEntity(_0x2b6077){return function(_0x3434e7){if(_0x3434e7){return _0x3434e7[_0xbe95('0x15')]()[_0xbe95('0x14')](function(){_0x2b6077[_0xbe95('0xc')](0xcc)[_0xbe95('0x16')]();});}};}function handleEntityNotFound(_0xceb953){return function(_0xad415c){if(!_0xad415c){_0xceb953[_0xbe95('0x17')](0x194);}return _0xad415c;};}function handleError(_0x1e662b,_0x1057ee){_0x1057ee=_0x1057ee||0x1f4;return function(_0x21baf5){logger[_0xbe95('0x18')](_0x21baf5[_0xbe95('0x19')]);if(_0x21baf5[_0xbe95('0x1a')]){delete _0x21baf5[_0xbe95('0x1a')];}_0x1e662b[_0xbe95('0xc')](_0x1057ee)[_0xbe95('0x1b')](_0x21baf5);};}exports[_0xbe95('0x1c')]=function(_0x59ccd7,_0x2bf18c){var _0x2b905c={},_0x4bcbd4={},_0x43b02e={'count':0x0,'rows':[]};return db[_0xbe95('0x1d')][_0xbe95('0x1e')]()[_0xbe95('0x14')](function(_0x249198){var _0x30cf50=[];for(var _0x31cfb8=0x0;_0x31cfb8<Object[_0xbe95('0x1f')](_0x249198)['length'];_0x31cfb8++){var _0x2ed276=Object[_0xbe95('0x1f')](_0x249198)[_0x31cfb8];if(_[_0xbe95('0x20')](_0x2ed276,'cf_')){_0x30cf50['push'](db[_0xbe95('0x21')][_0xbe95('0x22')]({'where':{'id':_[_0xbe95('0x23')](_0x2ed276,'cf_')},'raw':!![]}));}}return BPromise['all'](_0x30cf50)['then'](function(_0x5df0df){for(var _0x1d231f=0x0;_0x1d231f<_0x5df0df[_0xbe95('0x24')];_0x1d231f++){if(_0x5df0df[_0x1d231f]){var _0x2a7463=_0xbe95('0x25')+_0x5df0df[_0x1d231f]['id'];var _0x59529f=_0x249198[_0x2a7463];_0x59529f[_0xbe95('0x26')]=_0x5df0df[_0x1d231f][_0xbe95('0x27')];}}return _0x249198;});})[_0xbe95('0x14')](function(_0x1fa8ce){_0x4bcbd4[_0xbe95('0x28')]=_['keys'](_0x1fa8ce);_0x4bcbd4[_0xbe95('0x29')]=_[_0xbe95('0x1f')](_0x59ccd7[_0xbe95('0x29')]);_0x4bcbd4[_0xbe95('0x2a')]=_[_0xbe95('0x2b')](_0x4bcbd4[_0xbe95('0x28')],_0x4bcbd4[_0xbe95('0x29')]);_0x2b905c[_0xbe95('0x2c')]=_[_0xbe95('0x2b')](_0x4bcbd4[_0xbe95('0x28')],qs['fields'](_0x59ccd7[_0xbe95('0x29')]['fields']));_0x2b905c[_0xbe95('0x2c')]=_0x2b905c['attributes'][_0xbe95('0x24')]?_0x2b905c[_0xbe95('0x2c')]:_0x4bcbd4[_0xbe95('0x28')];if(!_0x59ccd7[_0xbe95('0x29')]['hasOwnProperty'](_0xbe95('0x2d'))){_0x2b905c[_0xbe95('0x11')]=qs[_0xbe95('0x11')](_0x59ccd7['query']['limit']);_0x2b905c[_0xbe95('0xe')]=qs['offset'](_0x59ccd7[_0xbe95('0x29')][_0xbe95('0xe')]);}_0x2b905c[_0xbe95('0x2e')]=qs[_0xbe95('0x2f')](_0x59ccd7[_0xbe95('0x29')]['sort']);_0x2b905c[_0xbe95('0x30')]=qs[_0xbe95('0x2a')](_[_0xbe95('0x31')](_0x59ccd7[_0xbe95('0x29')],_0x4bcbd4[_0xbe95('0x2a')]),_0x1fa8ce);var _0x47431b=[];var _0x22515d=squel[_0xbe95('0x32')]()[_0xbe95('0x33')]('id')[_0xbe95('0x33')](_0xbe95('0x1a'))[_0xbe95('0x33')](_0xbe95('0x34'))[_0xbe95('0x35')](_0xbe95('0x36'));var _0x5bef76=squel[_0xbe95('0x32')]()[_0xbe95('0x35')](_0xbe95('0x37'),'c')[_0xbe95('0x38')](_0xbe95('0x39'),'uc',_0xbe95('0x3a'))[_0xbe95('0x38')](_0xbe95('0x3b'),'ct','ct.CmContactId\x20=\x20c.id')[_0xbe95('0x38')](_0xbe95('0x36'),'t',_0xbe95('0x3c'))['where'](_0xbe95('0x3d'));var _0x403735=squel[_0xbe95('0x3e')]();var _0x29d11b=[];var _0x3164d7=squel[_0xbe95('0x3e')]();var _0x3bd820;if(_0x59ccd7['query'][_0xbe95('0x3f')]){_0x3bd820=as['parseSearch'](_0x59ccd7[_0xbe95('0x29')][_0xbe95('0x3f')]);var _0x535f89=_0x3bd820[_0xbe95('0x40')];for(var _0xba50e3=0x0;_0xba50e3<_0x3bd820[_0xbe95('0x41')][_0xbe95('0x24')];_0xba50e3++){var _0x40b536=_0x3bd820['conditions'][_0xba50e3];var _0x1d7ef9='c';var _0x109fee=_(_0x1fa8ce)[_0xbe95('0x1f')]()['find'](function(_0x546010){return _0x546010===_0x40b536[_0xbe95('0x33')];});if(_0x109fee)_0x109fee=_0x1fa8ce[_0x40b536['field']];if(!_0x109fee){if(_0x40b536[_0xbe95('0x33')]===_0xbe95('0x42')){var _0x3abdca=_0x40b536[_0xbe95('0x43')][_0xbe95('0x44')](',')[_0xbe95('0x45')](function(_0xe9eaf2){return Number(_0xe9eaf2);});_0x3abdca[_0xbe95('0x46')](function(_0x4559a8){_0x3164d7['or'](_0xbe95('0x47'),'%,'+_0x4559a8+',%');});_0x29d11b=_[_0xbe95('0x48')](_0x29d11b,_0x3abdca);}else if(_0x40b536[_0xbe95('0x33')]==='User'){_0x403735[_0xbe95('0x49')]('uc.UserId\x20=\x20?',_0x40b536[_0xbe95('0x43')]);}}else{if(_0x40b536[_0xbe95('0x33')]==='dateOfBirth'||_0x109fee[_0xbe95('0x26')]==='datetime')_0x40b536[_0xbe95('0x4a')]=_0xbe95('0x4b');var _0x2ee28f=as[_0xbe95('0x4c')](_0x1d7ef9,_0x109fee[_0xbe95('0x27')],_0x40b536);_0x403735[_0x535f89](_0x2ee28f[_0xbe95('0x4d')],_0x2ee28f[_0xbe95('0x43')][_0xbe95('0x4e')],_0x2ee28f[_0xbe95('0x43')][_0xbe95('0x16')]);}}}else{var _0x9788c8=_(Object[_0xbe95('0x1f')](_0x59ccd7['query']))['map'](function(_0x16753e){return _0x1fa8ce['hasOwnProperty'](_0x16753e)?_0x16753e:undefined;})[_0xbe95('0x4f')](function(_0x4b57a6){return!_[_0xbe95('0x50')](_0x4b57a6);})['value']();if(_0x59ccd7[_0xbe95('0x29')][_0xbe95('0x51')])_0x9788c8[_0xbe95('0x52')](_0xbe95('0x51'));if(!_[_0xbe95('0x53')](_0x9788c8)){_0x9788c8['forEach'](function(_0x513b32){if(_0x513b32===_0xbe95('0x54')){_0x5bef76[_0xbe95('0x30')](_0xbe95('0x55'),[][_0xbe95('0x56')](_0x59ccd7[_0xbe95('0x29')][_0x513b32]));}else if(_0x513b32===_0xbe95('0x51')){var _0x2f5136='%'+_0x59ccd7[_0xbe95('0x29')][_0x513b32]+'%';_0x5bef76[_0xbe95('0x30')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x2f5136);}else{_0x5bef76[_0xbe95('0x30')]('c.'+_0x513b32+_0xbe95('0x57'),_0x59ccd7[_0xbe95('0x29')][_0x513b32]);}});}if(_0x59ccd7[_0xbe95('0x29')]['tag']){_0x29d11b=_[_0xbe95('0x58')](_0x59ccd7['query']['tag'])?_0x59ccd7[_0xbe95('0x29')]['tag']:new Array(_0x59ccd7['query'][_0xbe95('0x59')]);_0x29d11b['forEach'](function(_0x48147f){_0x3164d7['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x48147f+',%');});}if(_0x59ccd7['query']['filter']){var _0x5306ec=_0x59ccd7['query'][_0xbe95('0x4f')][_0xbe95('0x5a')]('\x5c','\x5c\x5c')[_0xbe95('0x5a')](/'/g,'\x27\x27');if(_0x5306ec[_0xbe95('0x44')]('\x20')[_0xbe95('0x24')]>0x1){_0x403735['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xbe95('0x5b')](_0x5306ec),null);}else{if(qs[_0xbe95('0x5c')](_0x5306ec)){_0x403735['or'](_0xbe95('0x5d'),_0x5306ec+'%');_0x403735['or']('c.phone\x20LIKE\x20?',_0x5306ec+'%');_0x403735['or'](_0xbe95('0x5e'),_0x5306ec+'%');_0x403735['or'](_0xbe95('0x5f'),_0x5306ec+'%');}else if(qs['isEmail'](_0x5306ec)){_0x403735['or'](_0xbe95('0x60'),_0x5306ec+'%');}else{_0x403735['or'](_0xbe95('0x61'),'%'+_0x5306ec+'%');_0x403735['or'](_0xbe95('0x62'),'%'+_0x5306ec+'%');_0x403735['or'](_0xbe95('0x60'),'%'+_0x5306ec+'%');}}}}_0x5bef76[_0xbe95('0x30')](_0x403735);_0x5bef76[_0xbe95('0x63')](_0xbe95('0x64'));var _0x14984d={'type':db[_0xbe95('0x65')][_0xbe95('0x66')][_0xbe95('0x67')],'raw':!![]};var _0x3e81fd=_0x5bef76[_0xbe95('0x68')]()[_0xbe95('0x33')](_0xbe95('0x64'));if(_0x2b905c[_0xbe95('0x2e')]){_0x2b905c[_0xbe95('0x2e')][_0xbe95('0x46')](function(_0x77df97){_0x5bef76[_0xbe95('0x2e')]('c.'+_0x77df97[0x0],_0x77df97[0x1]===_0xbe95('0x69')?![]:!![]);});}if(!_[_0xbe95('0x53')](_0x29d11b)){_0x5bef76[_0xbe95('0x6a')](_0x3164d7);_0x3e81fd[_0xbe95('0x30')]('t.id\x20IN\x20?',_0x29d11b);}BPromise[_0xbe95('0x6b')]()['then'](function(){if(!_0x3bd820)return;if(_0x59ccd7[_0xbe95('0x6c')][_0xbe95('0x6d')]!=='agent')return;if(!_[_0xbe95('0x6e')](_0x3bd820[_0xbe95('0x41')],[_0xbe95('0x33'),_0xbe95('0x6f')])){return _0x59ccd7[_0xbe95('0x6c')]['getLists']({'attributes':['id'],'raw':!![]})['then'](function(_0x482044){if(_[_0xbe95('0x53')](_0x482044)){_0x3e81fd[_0xbe95('0x30')](_0xbe95('0x70'));_0x5bef76[_0xbe95('0x30')](_0xbe95('0x70'));}else{_0x3e81fd[_0xbe95('0x30')](_0xbe95('0x55'),_[_0xbe95('0x45')](_0x482044,'id'));_0x5bef76[_0xbe95('0x30')]('c.ListId\x20IN\x20?',_[_0xbe95('0x45')](_0x482044,'id'));}});}})[_0xbe95('0x14')](function(){if(_0x59ccd7[_0xbe95('0x6c')][_0xbe95('0x6d')]===_0xbe95('0x71')&&!_0x3bd820&&!_0x59ccd7['query'][_0xbe95('0x54')])return[];return db['sequelize'][_0xbe95('0x29')](_0x3e81fd[_0xbe95('0x72')](),_0x14984d);})['then'](function(_0x39fbe7){_0x43b02e['count']=_0x39fbe7[_0xbe95('0x24')];if(_0x43b02e[_0xbe95('0x10')]===0x0)return[];return db['sequelize'][_0xbe95('0x29')](_0x22515d[_0xbe95('0x72')](),_0x14984d)[_0xbe95('0x14')](function(_0x9521c6){_0x47431b=_['keyBy'](_0x9521c6,'id');_0x14984d=_['merge'](_0x14984d,{'model':db[_0xbe95('0x1d')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x59ccd7[_0xbe95('0x29')][_0xbe95('0x73')]){_0x2b905c[_0xbe95('0x2c')][_0xbe95('0x46')](function(_0x40978f){_0x5bef76[_0xbe95('0x33')]('c.'+_0x40978f);});}else{_0x5bef76[_0xbe95('0x33')](_0xbe95('0x64'));_0x5bef76[_0xbe95('0x33')](_0xbe95('0x74'));_0x5bef76[_0xbe95('0x33')](_0xbe95('0x75'));_0x5bef76[_0xbe95('0x33')](_0xbe95('0x76'));_0x5bef76[_0xbe95('0x33')]('c.mobile');_0x5bef76[_0xbe95('0x33')]('c.fax');_0x5bef76[_0xbe95('0x33')]('c.email');_0x5bef76[_0xbe95('0x33')](_0xbe95('0x77'));_0x5bef76['field']('c.createdAt');_0x5bef76['field']('c.deletedAt');_0x5bef76[_0xbe95('0x33')]('c.CompanyId');_0x5bef76[_0xbe95('0x33')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xbe95('0x78'));}if(_0x2b905c['limit'])_0x5bef76['limit'](_0x2b905c['limit']);if(_0x2b905c[_0xbe95('0xe')])_0x5bef76['offset'](_0x2b905c['offset']);return db[_0xbe95('0x79')][_0xbe95('0x29')](_0x5bef76[_0xbe95('0x72')](),_0x14984d);});})[_0xbe95('0x14')](function(_0x3b8a93){_0x3b8a93[_0xbe95('0x46')](function(_0x34f621){if(_0x34f621[_0xbe95('0x78')]){_0x34f621[_0xbe95('0x7a')]=[];_0x34f621[_0xbe95('0x78')]['split'](',')['forEach'](function(_0x197c4b){_0x34f621[_0xbe95('0x7a')][_0xbe95('0x52')](_0x47431b[_0x197c4b]);});}delete _0x34f621[_0xbe95('0x78')];});_0x43b02e[_0xbe95('0x7b')]=_0x3b8a93;return _0x43b02e;})[_0xbe95('0x14')](respondWithFilteredResult(_0x2bf18c,_0x2b905c));})[_0xbe95('0x7c')](handleError(_0x2bf18c,null));};exports[_0xbe95('0x15')]=function(_0x22cafe,_0x3b4ab7){return db[_0xbe95('0x1d')][_0xbe95('0x7d')]({'where':{'id':_0x22cafe[_0xbe95('0x7e')]['id']}})[_0xbe95('0x14')](handleEntityNotFound(_0x3b4ab7,null))[_0xbe95('0x14')](removeEntity(_0x3b4ab7,null))['catch'](handleError(_0x3b4ab7,null));};exports['describe']=function(_0x1de108,_0x56183d){return db[_0xbe95('0x1d')]['describe']()['then'](function(_0x2a0ab0){delete _0x2a0ab0['tags'];for(var _0x544055=0x0;_0x544055<Object['keys'](_0x2a0ab0)['length'];_0x544055++){var _0x177c42=Object[_0xbe95('0x1f')](_0x2a0ab0)[_0x544055];if(!_[_0xbe95('0x20')](_0x177c42,_0xbe95('0x25'))){_0x2a0ab0[_0x177c42][_0xbe95('0x7f')]=_0x177c42;_0x2a0ab0[_0x177c42]['displayName']=_0x177c42;}}return _0x2a0ab0;})['then'](function(_0x3810a0){var _0x360f90={'where':Boolean(_0x1de108['query']['analytics'])===!![]?undefined:{'$or':[{'ListId':_0x1de108[_0xbe95('0x29')]['id']},{'ListId':null}]},'raw':!![]};return db['CmCustomField'][_0xbe95('0x80')](_0x360f90)['then'](function(_0x4ee199){for(var _0x1e3170=0x0;_0x1e3170<_0x4ee199['length'];_0x1e3170++){var _0x135d9a='cf_'+_0x4ee199[_0x1e3170]['id'];_0x3810a0[_0x135d9a]['columnName']=_0x135d9a;_0x3810a0[_0x135d9a][_0xbe95('0x81')]=_0x4ee199[_0x1e3170][_0xbe95('0x82')];_0x3810a0[_0x135d9a][_0xbe95('0x83')]={'type':_0x4ee199[_0x1e3170]['type'],'values':_0x4ee199[_0x1e3170][_0xbe95('0x84')]};}Object[_0xbe95('0x1f')](_0x3810a0)[_0xbe95('0x46')](function(_0x2174c0){if(!_0x3810a0[_0x2174c0][_0xbe95('0x85')](_0xbe95('0x7f'))){delete _0x3810a0[_0x2174c0];}});return _0x3810a0;});})[_0xbe95('0x14')](respondWithResult(_0x56183d,null))[_0xbe95('0x7c')](handleError(_0x56183d,null));};exports['merge']=function(_0x3b7ee4,_0x238232){var _0x2d031e;var _0x567d0e;var _0x4bd7b2;if(_0x3b7ee4[_0xbe95('0x86')]['id']){delete _0x3b7ee4[_0xbe95('0x86')]['id'];}return db['CmContact'][_0xbe95('0x80')]({'where':{'id':[_0x3b7ee4[_0xbe95('0x86')]['to'],_0x3b7ee4['body'][_0xbe95('0x35')]]}})[_0xbe95('0x14')](function(_0x86e543){if(_0x86e543){if(_0x86e543[_0xbe95('0x24')]!==0x2){return null;}_0x86e543[0x0]=_0x86e543[0x0][_0xbe95('0x87')]({'plain':!![]});_0x86e543[0x1]=_0x86e543[0x1][_0xbe95('0x87')]({'plain':!![]});delete _0x86e543[0x0]['id'];delete _0x86e543[0x1]['id'];return _[_0xbe95('0x88')](_0x86e543[0x0],_0x86e543[0x1],function(_0x22b8cd,_0x59b461){if(Array[_0xbe95('0x58')](_0x59b461)&&!_0x59b461[_0xbe95('0x24')]){return _0x22b8cd;}else if(!_0x59b461){return _0x22b8cd;}});}})[_0xbe95('0x14')](handleEntityNotFound(_0x238232,null))[_0xbe95('0x14')](function(_0x140d07){if(_0x140d07){if(_0x140d07[_0xbe95('0x89')]&&_[_0xbe95('0x58')](_0x140d07[_0xbe95('0x89')])){_0x140d07[_0xbe95('0x89')]=_0x140d07['tags'][_0xbe95('0x8a')]();}logger[_0xbe95('0x8b')](_0xbe95('0x8c'),_0x3b7ee4[_0xbe95('0x86')]['to'],_0x3b7ee4[_0xbe95('0x86')][_0xbe95('0x35')]);return db[_0xbe95('0x8d')][_0xbe95('0x15')]({'where':{'ContactId':[_0x3b7ee4['body']['to'],_0x3b7ee4[_0xbe95('0x86')][_0xbe95('0x35')]]}})[_0xbe95('0x14')](function(_0x70fed2){logger[_0xbe95('0x8b')](_0xbe95('0x8e'),_0x70fed2);return db[_0xbe95('0x8f')][_0xbe95('0x15')]({'where':{'ContactId':[_0x3b7ee4['body']['to'],_0x3b7ee4[_0xbe95('0x86')][_0xbe95('0x35')]]}})[_0xbe95('0x14')](function(_0x5d840d){logger[_0xbe95('0x8b')](_0xbe95('0x90'),_0x5d840d);return db[_0xbe95('0x1d')][_0xbe95('0x91')](_0x140d07);});});}})['then'](function(_0x521b56){if(_0x521b56){_0x2d031e=_0x521b56;_0x567d0e={'ContactId':_0x2d031e['id']};_0x4bd7b2={'where':{'ContactId':[_0x3b7ee4[_0xbe95('0x86')]['to'],_0x3b7ee4[_0xbe95('0x86')][_0xbe95('0x35')]]}};return db[_0xbe95('0x92')]['update'](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db['ChatMessage'][_0xbe95('0x13')](_0x567d0e,_0x4bd7b2);}})['then'](function(){if(_0x2d031e){return db[_0xbe95('0x93')][_0xbe95('0x13')](_0x567d0e,_0x4bd7b2);}})['then'](function(){if(_0x2d031e){return db[_0xbe95('0x94')][_0xbe95('0x13')](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0x95')][_0xbe95('0x13')](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0x94')][_0xbe95('0x13')](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0x95')]['update'](_0x567d0e,_0x4bd7b2);}})['then'](function(){if(_0x2d031e){return db['SmsInteraction'][_0xbe95('0x13')](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0x96')][_0xbe95('0x13')](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0x97')][_0xbe95('0x13')](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db['FaxMessage'][_0xbe95('0x13')](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0x98')][_0xbe95('0x13')](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0x99')]['update'](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0x9a')][_0xbe95('0x13')]({'CmContactId':_0x2d031e['id']},{'where':{'CmContactId':[_0x3b7ee4[_0xbe95('0x86')]['to'],_0x3b7ee4['body'][_0xbe95('0x35')]]}});}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0x9b')]['update'](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0x9c')][_0xbe95('0x13')](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0x9d')]['update'](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0x9e')][_0xbe95('0x13')](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0x9f')][_0xbe95('0x13')](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db['FaxQueueReport']['update'](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0xa0')][_0xbe95('0x13')](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0xa1')][_0xbe95('0x13')](_0x567d0e,_0x4bd7b2);}})['then'](function(){if(_0x2d031e){return db[_0xbe95('0xa2')]['update'](_0x567d0e,_0x4bd7b2);}})['then'](function(){if(_0x2d031e){return db[_0xbe95('0xa3')][_0xbe95('0x13')](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0xa4')]['update'](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0xa5')][_0xbe95('0x13')](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0xa6')][_0xbe95('0x13')](_0x567d0e,_0x4bd7b2);}})[_0xbe95('0x14')](function(){if(_0x2d031e){return db[_0xbe95('0x1d')]['destroy']({'where':{'id':[_0x3b7ee4[_0xbe95('0x86')]['to'],_0x3b7ee4[_0xbe95('0x86')][_0xbe95('0x35')]]}});}})[_0xbe95('0x14')](function(){if(_0x2d031e){return _0x2d031e;}})[_0xbe95('0x14')](respondWithResult(_0x238232,null))[_0xbe95('0x7c')](handleError(_0x238232,null));};exports[_0xbe95('0x91')]=function(_0x414ba6,_0x36436b){return db[_0xbe95('0x1d')][_0xbe95('0x1e')]()[_0xbe95('0x14')](function(_0x2901bb){if(_0x414ba6['body']['tags']&&_[_0xbe95('0x58')](_0x414ba6['body'][_0xbe95('0x89')])){if(_0x414ba6['body'][_0xbe95('0x89')][_0xbe95('0x24')]){_0x414ba6[_0xbe95('0x86')][_0xbe95('0x89')]=_0x414ba6[_0xbe95('0x86')][_0xbe95('0x89')][_0xbe95('0x8a')](';')+';';}else{_0x414ba6[_0xbe95('0x86')][_0xbe95('0x89')]=null;}}else{_0x414ba6['body'][_0xbe95('0x89')]=null;}if(!_['isNil'](_0x414ba6['body'][_0xbe95('0xa7')])){var _0x4a60bc=_0x414ba6['body'][_0xbe95('0xa7')];if(!_[_0xbe95('0x50')](shared['timezones'][_0x4a60bc]))_0x414ba6['body'][_0xbe95('0xa8')]=shared[_0xbe95('0xa9')][_0x4a60bc][_0xbe95('0xa8')];}return db[_0xbe95('0x1d')][_0xbe95('0x91')](_0x414ba6[_0xbe95('0x86')],{'fields':_[_0xbe95('0x1f')](_0x2901bb),'raw':!![]});})[_0xbe95('0x14')](function(_0x4c6ff6){if(_0x414ba6[_0xbe95('0x86')]['additionalPhones']){return insertAdditionalPhones(_0x4c6ff6,_0x414ba6[_0xbe95('0x86')][_0xbe95('0xaa')]);}else{return _0x4c6ff6;}})[_0xbe95('0x14')](respondWithResult(_0x36436b,0xc9))[_0xbe95('0x7c')](handleError(_0x36436b,null));};exports['bulkCreate']=function(_0xaac9d0,_0x1026f9){var _0x1ac602=0x0;var _0x55f8da=0x0;var _0x38e513=0x0;var _0x3ca8e5=[];return db[_0xbe95('0x1d')][_0xbe95('0x1e')]()['then'](function(_0x2df2a8){return BPromise[_0xbe95('0xab')](_0xaac9d0[_0xbe95('0x86')],function(_0x28bfd2){var _0x103381={'where':{'$or':[]},'defaults':_0x28bfd2,'fields':_[_0xbe95('0x1f')](_0x2df2a8),'raw':!![]};if(_0x28bfd2[_0xbe95('0xac')]){for(var _0x188fd6=0x0;_0x188fd6<_0x28bfd2[_0xbe95('0xac')][_0xbe95('0x24')];_0x188fd6++){var _0x2ec174={};_0x2ec174[_0x28bfd2[_0xbe95('0xac')][_0x188fd6]]=_0x28bfd2[_0x28bfd2[_0xbe95('0xac')][_0x188fd6]];_0x103381['where'][_0xbe95('0xad')][_0xbe95('0x52')](_0x2ec174);}_0x103381[_0xbe95('0x30')][_0xbe95('0x54')]=_0x28bfd2[_0xbe95('0x54')];}return db[_0xbe95('0x1d')][_0xbe95('0xae')](_0x103381)[_0xbe95('0xaf')](function(_0x30b705,_0x32525d){if(_0x32525d){if(_0x28bfd2[_0xbe95('0x85')](_0xbe95('0xaa'))){_0x3ca8e5[_0xbe95('0x52')]({'contact':_0x30b705,'additionalPhones':_0x28bfd2[_0xbe95('0xaa')]});}_0x1ac602++;}else{_0x38e513++;}})[_0xbe95('0x7c')](function(){_0x55f8da++;});});})['then'](function(_0x149f14){if(_0x149f14){if(_0x3ca8e5[_0xbe95('0x24')]>0x0){return new Promise(function(_0x4097a7,_0x39dc4e){var _0x433015=[];for(var _0x3cfe9d=0x0;_0x3cfe9d<_0x3ca8e5[_0xbe95('0x24')];_0x3cfe9d++){_0x433015[_0xbe95('0x52')](insertAdditionalPhones(_0x3ca8e5[_0x3cfe9d][_0xbe95('0xb0')],_0x3ca8e5[_0x3cfe9d][_0xbe95('0xaa')]));}Promise['all'](_0x433015)[_0xbe95('0x14')](function(){_0x4097a7(0x1);});})[_0xbe95('0x14')](function(){return{'success':_0x1ac602,'failure':_0x55f8da,'duplicates':_0x38e513};});}else{return{'success':_0x1ac602,'failure':_0x55f8da,'duplicates':_0x38e513};}}})[_0xbe95('0x14')](respondWithResult(_0x1026f9,0xc9))[_0xbe95('0x7c')](handleError(_0x1026f9,null));};exports[_0xbe95('0xb1')]=function(_0x246c66,_0x4709dd){var _0x4510a4;return db[_0xbe95('0x1d')][_0xbe95('0x1e')]()[_0xbe95('0x14')](function(_0x47873f){return db[_0xbe95('0x1d')][_0xbe95('0x7d')]({'where':{'id':_0x246c66['params']['id']},'include':[{'model':db[_0xbe95('0x42')],'as':_0xbe95('0x7a'),'attributes':['id',_0xbe95('0x1a'),_0xbe95('0x34')],'required':_0x246c66['query'][_0xbe95('0x59')]?!![]:![]},{'model':db[_0xbe95('0x9a')],'as':'Phones','where':{'CmContactId':_0x246c66[_0xbe95('0x7e')]['id']},'required':![],'include':[{'model':db['ContactItemType'],'as':'ItemType'}]}],'order':[db['sequelize'][_0xbe95('0xb2')](_0xbe95('0xb3'))],'attributes':_['keys'](_0x47873f)});})['then'](function(_0x39c706){if(!_[_0xbe95('0x50')](_0x39c706)){_0x4510a4=_0x39c706[_0xbe95('0x87')]({'plain':!![]});var _0x1fa07a={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x39c706&&_0x39c706[_0xbe95('0x54')]){if(_0x39c706[_0xbe95('0x54')]){_0x1fa07a[_0xbe95('0x30')]['$and']['push']({'ListId':{'$ne':_0x39c706[_0xbe95('0x54')]}});}}return db['CmCustomField'][_0xbe95('0x80')](_0x1fa07a);}})['then'](function(_0x46d92b){if(!_['isNil'](_0x46d92b)){return _[_0xbe95('0xb4')](_0x4510a4,_[_0xbe95('0x45')](_0x46d92b,function(_0x4097cd){return util[_0xbe95('0xb5')]('cf_%d',_0x4097cd['id']);}));}})[_0xbe95('0x14')](handleEntityNotFound(_0x4709dd,null))[_0xbe95('0x14')](respondWithResult(_0x4709dd,null))[_0xbe95('0x7c')](handleError(_0x4709dd,null));};exports['update']=function(_0x2e632f,_0x218031){var _0x48b8e1;if(_0x2e632f[_0xbe95('0x86')]['id']){delete _0x2e632f['body']['id'];}if(!_[_0xbe95('0x50')](_0x2e632f[_0xbe95('0x86')][_0xbe95('0xa7')])){var _0x4379fa=_0x2e632f[_0xbe95('0x86')][_0xbe95('0xa7')];if(!_[_0xbe95('0x50')](shared[_0xbe95('0xa9')][_0x4379fa]))_0x2e632f['body']['utcOffset']=shared[_0xbe95('0xa9')][_0x4379fa][_0xbe95('0xa8')];}return db[_0xbe95('0x1d')]['find']({'where':{'id':_0x2e632f['params']['id']}})[_0xbe95('0x14')](handleEntityNotFound(_0x218031,null))[_0xbe95('0x14')](saveUpdates(_0x2e632f[_0xbe95('0x86')],null))[_0xbe95('0x14')](function(_0x2cd172){_0x48b8e1=_0x2cd172;var _0x356cf5={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x2cd172&&_0x2cd172[_0xbe95('0x54')]){if(_0x2cd172['ListId']){_0x356cf5[_0xbe95('0x30')][_0xbe95('0xb6')]['push']({'ListId':{'$ne':_0x2cd172[_0xbe95('0x54')]}});}}return db[_0xbe95('0x21')][_0xbe95('0x80')](_0x356cf5);})[_0xbe95('0x14')](function(_0x2571c0){if(_0x2571c0){return _['omit'](_['pickBy'](_0x2e632f[_0xbe95('0x86')],function(_0x163fad,_0x817c1e){return _['startsWith'](_0x817c1e,_0xbe95('0x25'));}),_[_0xbe95('0x45')](_0x2571c0,function(_0x3a7dda){return util[_0xbe95('0xb5')]('cf_%d',_0x3a7dda['id']);}));}})[_0xbe95('0x14')](function(_0x5eee39){if(_0x5eee39&&!_[_0xbe95('0x53')](_0x5eee39)){var _0xe49b3b=squel[_0xbe95('0x13')]()[_0xbe95('0xb7')](_0xbe95('0x37'))[_0xbe95('0xb8')](_0x5eee39)['where']('id\x20=\x20?',_0x2e632f[_0xbe95('0x7e')]['id'])[_0xbe95('0xb9')]();return db['sequelize'][_0xbe95('0x29')](_0xe49b3b['text'],{'replacements':_0xe49b3b['values']});}})[_0xbe95('0x14')](function(){if(_0x2e632f[_0xbe95('0x86')]['phone']&&_0x48b8e1){return db[_0xbe95('0x8d')]['update']({'phone':_0x2e632f[_0xbe95('0x86')][_0xbe95('0xba')],'OrderBy':0x0},{'where':{'ContactId':_0x48b8e1['id']}});}})[_0xbe95('0x14')](function(){return _0x48b8e1;})[_0xbe95('0x14')](respondWithResult(_0x218031,null))[_0xbe95('0x7c')](handleError(_0x218031,null));};exports[_0xbe95('0xbb')]=function(_0x32d0e4,_0xdfa3e2){var _0x1b56ad={};var _0x3a6b20={};var _0x4c7f9c;var _0xa84301;return db[_0xbe95('0x1d')][_0xbe95('0x22')]({'where':{'id':_0x32d0e4[_0xbe95('0x7e')]['id']}})[_0xbe95('0x14')](handleEntityNotFound(_0xdfa3e2,null))[_0xbe95('0x14')](function(_0x2f72b0){if(_0x2f72b0){_0x4c7f9c=_0x2f72b0;_0x3a6b20[_0xbe95('0x28')]=_[_0xbe95('0x1f')](db[_0xbe95('0x42')][_0xbe95('0xbc')]);_0x3a6b20[_0xbe95('0x29')]=_[_0xbe95('0x1f')](_0x32d0e4[_0xbe95('0x29')]);_0x3a6b20[_0xbe95('0x2a')]=_[_0xbe95('0x2b')](_0x3a6b20[_0xbe95('0x28')],_0x3a6b20[_0xbe95('0x29')]);_0x1b56ad[_0xbe95('0x2c')]=_[_0xbe95('0x2b')](_0x3a6b20[_0xbe95('0x28')],qs['fields'](_0x32d0e4[_0xbe95('0x29')][_0xbe95('0x73')]));_0x1b56ad[_0xbe95('0x2c')]=_0x1b56ad[_0xbe95('0x2c')][_0xbe95('0x24')]?_0x1b56ad[_0xbe95('0x2c')]:_0x3a6b20[_0xbe95('0x28')];_0x1b56ad[_0xbe95('0x2e')]=qs['sort'](_0x32d0e4[_0xbe95('0x29')]['sort']);_0x1b56ad[_0xbe95('0x30')]=qs[_0xbe95('0x2a')](_['pick'](_0x32d0e4['query'],_0x3a6b20[_0xbe95('0x2a')]));if(_0x32d0e4[_0xbe95('0x29')][_0xbe95('0x4f')]){_0x1b56ad[_0xbe95('0x30')]=_[_0xbe95('0xbd')](_0x1b56ad[_0xbe95('0x30')],{'$or':_[_0xbe95('0x45')](_0x1b56ad[_0xbe95('0x2c')],function(_0x47a1ec){var _0x3d7487={};_0x3d7487[_0x47a1ec]={'$like':'%'+_0x32d0e4[_0xbe95('0x29')][_0xbe95('0x4f')]+'%'};return _0x3d7487;})});}_0x1b56ad=_[_0xbe95('0xbd')]({},_0x1b56ad,_0x32d0e4[_0xbe95('0xbe')]);return _0x4c7f9c['getTags'](_0x1b56ad);}})['then'](function(_0x3b2516){if(_0x3b2516){_0xa84301=_0x3b2516['length'];if(!_0x32d0e4[_0xbe95('0x29')][_0xbe95('0x85')](_0xbe95('0x2d'))){_0x1b56ad[_0xbe95('0x11')]=qs[_0xbe95('0x11')](_0x32d0e4[_0xbe95('0x29')]['limit']);_0x1b56ad[_0xbe95('0xe')]=qs[_0xbe95('0xe')](_0x32d0e4[_0xbe95('0x29')][_0xbe95('0xe')]);}return _0x4c7f9c[_0xbe95('0xbb')](_0x1b56ad);}})['then'](function(_0x2a673c){if(_0x2a673c){return _0x2a673c?{'count':_0xa84301,'rows':_0x2a673c}:null;}})[_0xbe95('0x14')](respondWithResult(_0xdfa3e2,null))[_0xbe95('0x7c')](handleError(_0xdfa3e2,null));};exports[_0xbe95('0xbf')]=function(_0x5430c9,_0x4d1f27){if(_0x5430c9[_0xbe95('0x86')]['id']){delete _0x5430c9[_0xbe95('0x86')]['id'];}return db[_0xbe95('0x1d')][_0xbe95('0x22')]({'where':{'id':_0x5430c9['params']['id']}})['then'](handleEntityNotFound(_0x4d1f27,null))[_0xbe95('0x14')](function(_0x17fc8a){if(_0x17fc8a){return _0x17fc8a[_0xbe95('0xbf')](_0x5430c9[_0xbe95('0x86')][_0xbe95('0xc0')]||[]);}return null;})[_0xbe95('0x14')](respondWithResult(_0x4d1f27,null))[_0xbe95('0x7c')](handleError(_0x4d1f27,null));};exports['setAdditionalPhones']=function(_0xc98d7f,_0x126c98){var _0x162658=[];_0x162658[_0xbe95('0x52')](addAdditionalPhones(_0xc98d7f[_0xbe95('0x86')]));Promise[_0xbe95('0xc1')](_0x162658)[_0xbe95('0x14')](function(){_0x162658=[];_0x162658[_0xbe95('0x52')](deleteCmHopperPhones(_0xc98d7f[_0xbe95('0x86')]['id']));_0x162658['push'](addCmHopperPhones(_0xc98d7f[_0xbe95('0x86')]['id']));Promise[_0xbe95('0xc1')](_0x162658)[_0xbe95('0x14')](function(){return[0x1];})[_0xbe95('0x14')](respondWithResult(_0x126c98,null));});};function addAdditionalPhones(_0x4d9059){var _0xd6c2de;return new Promise(function(_0xd6a3c7,_0xc17601){return db['CmContactHasItem'][_0xbe95('0x15')]({'where':{'CmContactId':_0x4d9059['id']}})[_0xbe95('0x14')](function(){db[_0xbe95('0xc2')][_0xbe95('0x80')]({'raw':!![],'attributes':['id',_0xbe95('0xc3')]})['then'](function(_0xffb317){var _0x5c1d4d=[];for(var _0x5637d1=0x0;_0x5637d1<_0x4d9059[_0xbe95('0xc4')][_0xbe95('0x24')];_0x5637d1++){var _0x315617=_0x4d9059[_0xbe95('0xc5')]?_[_0xbe95('0x50')](_0x4d9059[_0xbe95('0xc5')][_0x5637d1])?'':_0x4d9059[_0xbe95('0xc5')][_0x5637d1]:_0x4d9059[_0xbe95('0xc4')][_0x5637d1][_0xbe95('0xc6')]?_0x4d9059[_0xbe95('0xc4')][_0x5637d1][_0xbe95('0xc6')]:'';var _0x3fe931=_['isNil'](_0x4d9059['items'][_0x5637d1][_0xbe95('0xc7')])?'':_0x4d9059[_0xbe95('0xc4')][_0x5637d1][_0xbe95('0xc7')];var _0x1e6cbb=_0x315617+':'+_0x4d9059[_0xbe95('0xc4')][_0x5637d1][_0xbe95('0xba')]+'§'+_0x3fe931;if(_[_0xbe95('0x50')](_0xd6c2de))_0xd6c2de=_0x1e6cbb;else _0xd6c2de+=';'+_0x1e6cbb;var _0x2cfce6=null;if(_0x4d9059[_0xbe95('0xc5')]){if(!_['isNil'](_0x4d9059[_0xbe95('0xc5')][_0x5637d1])){var _0x3c2598=_[_0xbe95('0x7d')](_0xffb317,function(_0x49f5e2){return _0x49f5e2['id']===_0x4d9059[_0xbe95('0xc5')][_0x5637d1];});if(!_[_0xbe95('0x50')](_0x3c2598)){_0x2cfce6=_0x3c2598[_0xbe95('0xc3')];}}}else{if(!_[_0xbe95('0x50')](_0x4d9059[_0xbe95('0xc4')][_0x5637d1])){var _0x3c2598=_[_0xbe95('0x7d')](_0xffb317,function(_0x4744bc){return _0x4744bc['id']===_0x4d9059['items'][_0x5637d1][_0xbe95('0xc6')];});if(!_['isNil'](_0x3c2598)){_0x2cfce6=_0x5637d1;}}}if(_[_0xbe95('0x50')](_0x2cfce6)){_0x2cfce6=0x64;}_0x5c1d4d[_0xbe95('0x52')](addAdditionalPhone(_0x4d9059['id'],_0x4d9059['items'][_0x5637d1][_0xbe95('0xba')],_0x4d9059[_0xbe95('0xc5')]?_[_0xbe95('0x50')](_0x4d9059['item_types'][_0x5637d1])?null:_0x4d9059['item_types'][_0x5637d1]:_0x4d9059['items'][_0x5637d1]['ItemTypeId']?_0x4d9059['items'][_0x5637d1][_0xbe95('0xc6')]:null,_0x2cfce6,_0x3fe931));}Promise[_0xbe95('0xc1')](_0x5c1d4d)['then'](function(){db['CmContact'][_0xbe95('0x13')]({'AdditionalPhones':_0xd6c2de},{'where':{'id':_0x4d9059['id']}})[_0xbe95('0x14')](function(){_0xd6a3c7(0x1);});});});});});}function addAdditionalPhone(_0xd61d94,_0x97b021,_0x85b38f,_0x1363f2,_0x26b9e){return db[_0xbe95('0x9a')][_0xbe95('0x7d')]({'where':{'CmContactId':_0xd61d94,'item':_0x97b021}})[_0xbe95('0x14')](function(_0x4b60e4){if(_0x4b60e4)logger[_0xbe95('0x8b')]('contact\x20phone\x20exists',_0x4b60e4);else{db[_0xbe95('0x9a')][_0xbe95('0x91')]({'CmContactId':_0xd61d94,'item':_0x97b021,'ItemTypeId':_0x85b38f,'OrderBy':_0x1363f2,'ItemClass':_0xbe95('0xc8'),'description':_0x26b9e});}});}function deletePhones(_0x286dce){return db[_0xbe95('0x9a')][_0xbe95('0x15')]({'where':{'CmContactId':_0x286dce}});}function deleteCmHopperPhones(_0x546c26){return new Promise(function(_0x179671,_0x11aace){return db[_0xbe95('0x8d')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x546c26}})[_0xbe95('0x14')](function(_0x5edabb){db[_0xbe95('0xc9')]['destroy']({'where':{'CmHopperId':{'$in':_[_0xbe95('0x45')](_0x5edabb,'id')}}});})['then'](function(){_0x179671(0x1);});});}function addCmHopperPhones(_0x54953e){return new Promise(function(_0x52079b,_0x3f8951){return db[_0xbe95('0x8d')][_0xbe95('0x80')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x54953e}})['then'](function(_0x4a714e){var _0x4f7d4a=[];_[_0xbe95('0x45')](_0x4a714e,function(_0x7f5d5a){_0x4f7d4a[_0xbe95('0x52')](createCmHopperPhone(_0x54953e,_0x7f5d5a['id']));});Promise['all'](_0x4f7d4a)[_0xbe95('0x14')](function(){_0x52079b(0x1);});});});}function createCmHopperPhone(_0x58f33e,_0x1912b5){return new Promise(function(_0x324cb7,_0x207971){db[_0xbe95('0x9a')]['findAll']({'raw':!![],'attributes':[_0xbe95('0xca'),_0xbe95('0xc3')],'where':{'CmContactId':_0x58f33e,'ItemClass':'PHONE'},'include':[{'model':db[_0xbe95('0xc2')],'attributes':[_0xbe95('0xc3')],'as':_0xbe95('0xcb')}],'order':[_0xbe95('0xc3'),db[_0xbe95('0x79')][_0xbe95('0xb2')](_0xbe95('0xcc'))]})[_0xbe95('0x14')](function(_0x28fcad){var _0x3afdd1=0x1;var _0x13478d=_[_0xbe95('0x45')](_0x28fcad,function(_0x4e540e){_0x4e540e[_0xbe95('0xcd')]=_0x1912b5;_0x4e540e['phone']=_0x4e540e[_0xbe95('0xca')];_0x4e540e[_0xbe95('0xc3')]=_0x3afdd1;delete _0x4e540e['ItemType.OrderBy'];_0x3afdd1=_0x3afdd1+0x1;return _0x4e540e;});return db['CmHopperAdditionalPhone']['bulkCreate'](_0x13478d,{});})[_0xbe95('0x14')](function(){_0x324cb7(0x1);});});}function insertAdditionalPhones(_0x7d1423,_0x12777e){return new Promise(function(_0x4e3d94,_0x5f3c37){var _0x260f5f=[];for(var _0x3c3f04=0x0;_0x3c3f04<_0x12777e[_0xbe95('0x24')];_0x3c3f04++){var _0x1b0862=_0x12777e[_0x3c3f04];_0x260f5f[_0xbe95('0x52')](parseContactItemType(_0x1b0862));}Promise[_0xbe95('0xc1')](_0x260f5f)[_0xbe95('0x14')](function(){var _0x2cb154={'id':_0x7d1423['id'],'items':_0x12777e};return addAdditionalPhones(_0x2cb154)[_0xbe95('0x14')](function(_0x5cf3fe){return addCmHopperPhones(_0x7d1423['id']);});})[_0xbe95('0x14')](function(){_0x4e3d94(_0x7d1423);});});}function parseContactItemType(_0xa48c39){return new Promise(function(_0x36cccc,_0x3834bd){if(_0xa48c39[_0xbe95('0x85')](_0xbe95('0xc6'))){_0x36cccc(_0xa48c39);}else{return db['ContactItemType'][_0xbe95('0x7d')]({'where':{'name':_0xa48c39['ItemType']}})['then'](function(_0x10c0b8){if(_[_0xbe95('0x50')](_0x10c0b8))_0xa48c39[_0xbe95('0xc6')]=null;else _0xa48c39[_0xbe95('0xc6')]=_0x10c0b8['id'];_0x36cccc(_0xa48c39);});}});}exports[_0xbe95('0xce')]=function(_0x407529,_0x3f89b3){return db['CmContactHasItem'][_0xbe95('0x80')]({'raw':!![],'where':{'CmContactId':_0x407529[_0xbe95('0x7e')]['id'],'ItemClass':_0xbe95('0xc8')},'include':[{'model':db['ContactItemType'],'as':'ItemType'}],'order':[['OrderBy'],[db['sequelize'][_0xbe95('0xb2')](_0xbe95('0xcc'))]]})['then'](function(_0x446db0){return _0x446db0;})[_0xbe95('0x14')](respondWithResult(_0x3f89b3,null))[_0xbe95('0x7c')](handleError(_0x3f89b3,null));};exports[_0xbe95('0xcf')]=function(_0x3d5900,_0x2aca45){return db[_0xbe95('0x9a')][_0xbe95('0x80')]({'raw':!![],'where':{'CmContactId':_0x3d5900['body'][_0xbe95('0xd0')]}})[_0xbe95('0x14')](function(_0x501b36){var _0x4caefe=_[_0xbe95('0x45')](_0x501b36,function(_0x463ea8){_0x463ea8[_0xbe95('0xd1')]=_0x3d5900['body'][_0xbe95('0xd2')];return _0x463ea8;});return db[_0xbe95('0x9a')][_0xbe95('0xd3')](_0x4caefe,{});})[_0xbe95('0x14')](function(_0x9ee753){return addCmHopperPhones(_0x3d5900[_0xbe95('0x86')]['toContactId']);})[_0xbe95('0x14')](function(_0x2a46d0){return['ok'];})[_0xbe95('0x14')](respondWithResult(_0x2aca45,null))[_0xbe95('0x7c')](handleError(_0x2aca45,null));};exports[_0xbe95('0xd4')]=function(_0x17c6a4,_0x212862){var _0x5b8d5a=[];_0x5b8d5a[_0xbe95('0x52')](createCmHopperPhone(_0x17c6a4[_0xbe95('0x86')]['id'],_0x17c6a4[_0xbe95('0x86')]['hopperId']));Promise[_0xbe95('0xc1')](_0x5b8d5a)[_0xbe95('0x14')](function(){return[0x1];})['then'](respondWithResult(_0x212862,null));};exports[_0xbe95('0xd5')]=function(_0x57c96d,_0x4713a7){var _0x11df8c={'raw':![],'where':{}};var _0x7931e1={};var _0x6941d7={'count':0x0,'rows':[]};return db[_0xbe95('0x1d')][_0xbe95('0x22')]({'where':{'id':_0x57c96d[_0xbe95('0x7e')]['id']}})[_0xbe95('0x14')](handleEntityNotFound(_0x4713a7,null))[_0xbe95('0x14')](function(_0x334a4e){if(_0x334a4e){_0x7931e1[_0xbe95('0x28')]=_[_0xbe95('0x1f')](db[_0xbe95('0x8d')][_0xbe95('0xbc')]);_0x7931e1[_0xbe95('0x29')]=_[_0xbe95('0x1f')](_0x57c96d[_0xbe95('0x29')]);_0x7931e1['filters']=_['intersection'](_0x7931e1['model'],_0x7931e1[_0xbe95('0x29')]);_0x11df8c[_0xbe95('0x2c')]=_[_0xbe95('0x2b')](_0x7931e1[_0xbe95('0x28')],qs[_0xbe95('0x73')](_0x57c96d['query'][_0xbe95('0x73')]));_0x11df8c[_0xbe95('0x2c')]=_0x11df8c[_0xbe95('0x2c')][_0xbe95('0x24')]?_0x11df8c['attributes']:_0x7931e1[_0xbe95('0x28')];if(!_0x57c96d[_0xbe95('0x29')][_0xbe95('0x85')](_0xbe95('0x2d'))){_0x11df8c['limit']=qs[_0xbe95('0x11')](_0x57c96d[_0xbe95('0x29')][_0xbe95('0x11')]);_0x11df8c[_0xbe95('0xe')]=qs['offset'](_0x57c96d[_0xbe95('0x29')][_0xbe95('0xe')]);}_0x11df8c['order']=qs[_0xbe95('0x2f')](_0x57c96d[_0xbe95('0x29')][_0xbe95('0x2f')]);_0x11df8c[_0xbe95('0x30')]=qs['filters'](_[_0xbe95('0x31')](_0x57c96d['query'],_0x7931e1['filters']));_0x11df8c[_0xbe95('0x30')]['ContactId']=_0x334a4e['id'];if(_0x57c96d['query'][_0xbe95('0x4f')]){_0x11df8c[_0xbe95('0x30')]=_['merge'](_0x11df8c[_0xbe95('0x30')],{'$or':_[_0xbe95('0x45')](_0x11df8c[_0xbe95('0x2c')],function(_0x5d8734){var _0x358102={};_0x358102[_0x5d8734]={'$like':'%'+_0x57c96d['query']['filter']+'%'};return _0x358102;})});}_0x11df8c=_[_0xbe95('0xbd')]({},_0x11df8c,_0x57c96d[_0xbe95('0xbe')]);return db[_0xbe95('0x8d')][_0xbe95('0x10')]({'where':_0x11df8c[_0xbe95('0x30')]})[_0xbe95('0x14')](function(_0x3bae0c){_0x6941d7[_0xbe95('0x10')]=_0x3bae0c;if(_0x57c96d[_0xbe95('0x29')]['includeAll']){_0x11df8c[_0xbe95('0xd6')]=[{'all':!![]}];}return db[_0xbe95('0x8d')][_0xbe95('0x80')](_0x11df8c);})[_0xbe95('0x14')](function(_0x146586){_0x6941d7[_0xbe95('0x7b')]=_0x146586;return _0x6941d7;});}})[_0xbe95('0x14')](respondWithFilteredResult(_0x4713a7,_0x11df8c))[_0xbe95('0x7c')](handleError(_0x4713a7,null));};exports[_0xbe95('0xd7')]=function(_0xd06abb,_0x2bc339){var _0x4d60d7={'raw':!![],'where':{}};var _0x29975a={};var _0x519b09={'count':0x0,'rows':[]};return db[_0xbe95('0x1d')][_0xbe95('0x22')]({'where':{'id':_0xd06abb['params']['id']}})[_0xbe95('0x14')](handleEntityNotFound(_0x2bc339,null))['then'](function(_0xf8f4ab){if(_0xf8f4ab){_0x29975a[_0xbe95('0x28')]=_[_0xbe95('0x1f')](db[_0xbe95('0x9c')][_0xbe95('0xbc')]);_0x29975a['query']=_['keys'](_0xd06abb['query']);_0x29975a[_0xbe95('0x2a')]=_['intersection'](_0x29975a[_0xbe95('0x28')],_0x29975a[_0xbe95('0x29')]);_0x4d60d7[_0xbe95('0x2c')]=_[_0xbe95('0x2b')](_0x29975a['model'],qs[_0xbe95('0x73')](_0xd06abb[_0xbe95('0x29')]['fields']));_0x4d60d7[_0xbe95('0x2c')]=_0x4d60d7[_0xbe95('0x2c')][_0xbe95('0x24')]?_0x4d60d7[_0xbe95('0x2c')]:_0x29975a['model'];if(!_0xd06abb['query'][_0xbe95('0x85')](_0xbe95('0x2d'))){_0x4d60d7[_0xbe95('0x11')]=qs[_0xbe95('0x11')](_0xd06abb[_0xbe95('0x29')][_0xbe95('0x11')]);_0x4d60d7[_0xbe95('0xe')]=qs['offset'](_0xd06abb[_0xbe95('0x29')]['offset']);}_0x4d60d7[_0xbe95('0x2e')]=qs['sort'](_0xd06abb['query'][_0xbe95('0x2f')]);_0x4d60d7[_0xbe95('0x30')]=qs['filters'](_['pick'](_0xd06abb[_0xbe95('0x29')],_0x29975a[_0xbe95('0x2a')]));_0x4d60d7[_0xbe95('0x30')][_0xbe95('0xd8')]=_0xf8f4ab['id'];if(_0xd06abb[_0xbe95('0x29')][_0xbe95('0x4f')]){_0x4d60d7[_0xbe95('0x30')]=_[_0xbe95('0xbd')](_0x4d60d7[_0xbe95('0x30')],{'$or':_[_0xbe95('0x45')](_0x4d60d7[_0xbe95('0x2c')],function(_0x35ef7c){var _0x1f17dd={};_0x1f17dd[_0x35ef7c]={'$like':'%'+_0xd06abb[_0xbe95('0x29')][_0xbe95('0x4f')]+'%'};return _0x1f17dd;})});}_0x4d60d7=_['merge']({},_0x4d60d7,_0xd06abb[_0xbe95('0xbe')]);return db[_0xbe95('0x9c')]['count']({'where':_0x4d60d7[_0xbe95('0x30')]})['then'](function(_0x1f99d8){_0x519b09[_0xbe95('0x10')]=_0x1f99d8;if(_0xd06abb[_0xbe95('0x29')][_0xbe95('0xd9')]){_0x4d60d7[_0xbe95('0xd6')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xbe95('0x80')](_0x4d60d7);})[_0xbe95('0x14')](function(_0x468fa0){_0x519b09[_0xbe95('0x7b')]=_0x468fa0;return _0x519b09;});}})[_0xbe95('0x14')](respondWithFilteredResult(_0x2bc339,_0x4d60d7))[_0xbe95('0x7c')](handleError(_0x2bc339,null));};exports[_0xbe95('0xda')]=function(_0x20f16e,_0x24b19e){var _0x31d27b={'raw':!![],'where':{}};var _0x1aca48={};var _0x18f94f={'count':0x0,'rows':[]};return db['CmContact'][_0xbe95('0x22')]({'where':{'id':_0x20f16e[_0xbe95('0x7e')]['id']}})[_0xbe95('0x14')](handleEntityNotFound(_0x24b19e,null))[_0xbe95('0x14')](function(_0x1d3111){if(_0x1d3111){_0x1aca48['model']=_[_0xbe95('0x1f')](db[_0xbe95('0x9b')][_0xbe95('0xbc')]);_0x1aca48['query']=_[_0xbe95('0x1f')](_0x20f16e[_0xbe95('0x29')]);_0x1aca48[_0xbe95('0x2a')]=_[_0xbe95('0x2b')](_0x1aca48[_0xbe95('0x28')],_0x1aca48[_0xbe95('0x29')]);_0x31d27b['attributes']=_[_0xbe95('0x2b')](_0x1aca48[_0xbe95('0x28')],qs[_0xbe95('0x73')](_0x20f16e['query'][_0xbe95('0x73')]));_0x31d27b[_0xbe95('0x2c')]=_0x31d27b[_0xbe95('0x2c')][_0xbe95('0x24')]?_0x31d27b['attributes']:_0x1aca48[_0xbe95('0x28')];if(!_0x20f16e[_0xbe95('0x29')][_0xbe95('0x85')](_0xbe95('0x2d'))){_0x31d27b[_0xbe95('0x11')]=qs[_0xbe95('0x11')](_0x20f16e[_0xbe95('0x29')][_0xbe95('0x11')]);_0x31d27b[_0xbe95('0xe')]=qs[_0xbe95('0xe')](_0x20f16e[_0xbe95('0x29')][_0xbe95('0xe')]);}_0x31d27b[_0xbe95('0x2e')]=qs['sort'](_0x20f16e[_0xbe95('0x29')][_0xbe95('0x2f')]);_0x31d27b[_0xbe95('0x30')]=qs[_0xbe95('0x2a')](_[_0xbe95('0x31')](_0x20f16e[_0xbe95('0x29')],_0x1aca48['filters']));_0x31d27b['where'][_0xbe95('0xd8')]=_0x1d3111['id'];if(_0x20f16e[_0xbe95('0x29')][_0xbe95('0x4f')]){_0x31d27b[_0xbe95('0x30')]=_['merge'](_0x31d27b[_0xbe95('0x30')],{'$or':_[_0xbe95('0x45')](_0x31d27b[_0xbe95('0x2c')],function(_0x5376bd){var _0x3ab3f6={};_0x3ab3f6[_0x5376bd]={'$like':'%'+_0x20f16e[_0xbe95('0x29')][_0xbe95('0x4f')]+'%'};return _0x3ab3f6;})});}_0x31d27b=_[_0xbe95('0xbd')]({},_0x31d27b,_0x20f16e[_0xbe95('0xbe')]);return db['CmHopperFinal'][_0xbe95('0x10')]({'where':_0x31d27b['where']})[_0xbe95('0x14')](function(_0x406525){_0x18f94f[_0xbe95('0x10')]=_0x406525;if(_0x20f16e[_0xbe95('0x29')][_0xbe95('0xd9')]){_0x31d27b[_0xbe95('0xd6')]=[{'all':!![]}];}return db['CmHopperFinal']['findAll'](_0x31d27b);})[_0xbe95('0x14')](function(_0x16d354){_0x18f94f['rows']=_0x16d354;return _0x18f94f;});}})[_0xbe95('0x14')](respondWithFilteredResult(_0x24b19e,_0x31d27b))['catch'](handleError(_0x24b19e,null));};exports[_0xbe95('0xdb')]=function(_0x175497,_0x5a1c98){var _0x2c7045={'raw':!![],'where':{}};var _0x196f65={};var _0x429579={'count':0x0,'rows':[]};return db[_0xbe95('0x1d')]['findOne']({'where':{'id':_0x175497[_0xbe95('0x7e')]['id']}})['then'](handleEntityNotFound(_0x5a1c98,null))['then'](function(_0x2212dd){if(_0x2212dd){_0x196f65['model']=_[_0xbe95('0x1f')](db[_0xbe95('0xa3')][_0xbe95('0xbc')]);_0x196f65[_0xbe95('0x29')]=_['keys'](_0x175497[_0xbe95('0x29')]);_0x196f65[_0xbe95('0x2a')]=_[_0xbe95('0x2b')](_0x196f65[_0xbe95('0x28')],_0x196f65[_0xbe95('0x29')]);_0x2c7045[_0xbe95('0x2c')]=_['intersection'](_0x196f65[_0xbe95('0x28')],qs[_0xbe95('0x73')](_0x175497['query'][_0xbe95('0x73')]));_0x2c7045['attributes']=_0x2c7045['attributes'][_0xbe95('0x24')]?_0x2c7045[_0xbe95('0x2c')]:_0x196f65[_0xbe95('0x28')];if(!_0x175497[_0xbe95('0x29')][_0xbe95('0x85')]('nolimit')){_0x2c7045['limit']=qs[_0xbe95('0x11')](_0x175497[_0xbe95('0x29')][_0xbe95('0x11')]);_0x2c7045[_0xbe95('0xe')]=qs['offset'](_0x175497['query'][_0xbe95('0xe')]);}_0x2c7045[_0xbe95('0x2e')]=qs[_0xbe95('0x2f')](_0x175497['query']['sort']);_0x2c7045[_0xbe95('0x30')]=qs['filters'](_['pick'](_0x175497[_0xbe95('0x29')],_0x196f65[_0xbe95('0x2a')]));_0x2c7045['where']['ContactId']=_0x2212dd['id'];if(_0x175497[_0xbe95('0x29')]['filter']){_0x2c7045[_0xbe95('0x30')]=_['merge'](_0x2c7045['where'],{'$or':_[_0xbe95('0x45')](_0x2c7045['attributes'],function(_0x163b0f){var _0x37e38e={};_0x37e38e[_0x163b0f]={'$like':'%'+_0x175497['query']['filter']+'%'};return _0x37e38e;})});}_0x2c7045=_[_0xbe95('0xbd')]({},_0x2c7045,_0x175497[_0xbe95('0xbe')]);return db[_0xbe95('0xa3')][_0xbe95('0x10')]({'where':_0x2c7045['where']})[_0xbe95('0x14')](function(_0x240300){_0x429579[_0xbe95('0x10')]=_0x240300;if(_0x175497[_0xbe95('0x29')][_0xbe95('0xd9')]){_0x2c7045[_0xbe95('0xd6')]=[{'all':!![]}];}return db[_0xbe95('0xa3')][_0xbe95('0x80')](_0x2c7045);})[_0xbe95('0x14')](function(_0x2dfa52){_0x429579['rows']=_0x2dfa52;return _0x429579;});}})[_0xbe95('0x14')](respondWithFilteredResult(_0x5a1c98,_0x2c7045))[_0xbe95('0x7c')](handleError(_0x5a1c98,null));};exports[_0xbe95('0xdc')]=function(_0x4e42f9,_0x3464e4){try{if(!_0x4e42f9[_0xbe95('0x86')][_0xbe95('0x54')]){throw new Error('No\x20ListId\x20specified');}if(!_0x4e42f9[_0xbe95('0x86')][_0xbe95('0xdd')]){throw new Error(_0xbe95('0xde'));}if(!_0x4e42f9[_0xbe95('0x86')][_0xbe95('0xdf')]){throw new Error('No\x20association\x20values\x20specified!');}if(!_0x4e42f9[_0xbe95('0x86')]['socket_timestamp']){throw new Error(_0xbe95('0xe0'));}var _0x4b525c=_0x4e42f9['body']['binding_keys']['split'](',');var _0x570b09=_0x4e42f9[_0xbe95('0x86')][_0xbe95('0xdf')][_0xbe95('0x44')](',');if(!_0x4b525c[_0xbe95('0x24')]||!_0x570b09[_0xbe95('0x24')]||_0x4b525c[_0xbe95('0x24')]!==_0x570b09[_0xbe95('0x24')]){throw new Error(_0xbe95('0xe1'));}_0x4e42f9['body'][_0xbe95('0x73')]=_[_0xbe95('0xe2')](_0x4b525c,_0x570b09);if(!_0x4e42f9[_0xbe95('0x86')][_0xbe95('0x73')][_0xbe95('0xba')]){throw new Error(_0xbe95('0xe3'));}if(!_0x4e42f9[_0xbe95('0x86')]['fields'][_0xbe95('0xe4')]){throw new Error(_0xbe95('0xe5'));}var _0x2d4d5d=path['join'](config[_0xbe95('0xe6')],'server/files/tmp',_0x4e42f9[_0xbe95('0xe7')][_0xbe95('0xe8')]);fs[_0xbe95('0xe9')](_0x2d4d5d,parseInt(_0xbe95('0xea'),0x8));var _0xe9e23=require('child_process')[_0xbe95('0xeb')](path[_0xbe95('0x8a')](__dirname,_0xbe95('0xec')),[_0x2d4d5d,_0x4e42f9['body'][_0xbe95('0xdd')],_0x4e42f9[_0xbe95('0x86')][_0xbe95('0xdf')],_0x4e42f9['body'][_0xbe95('0x54')],_0x4e42f9[_0xbe95('0x86')]['CompanyId'],_0x4e42f9[_0xbe95('0x86')][_0xbe95('0xac')],_0x4e42f9['body'][_0xbe95('0xed')]]);return _0x3464e4[_0xbe95('0xc')](0xc8)[_0xbe95('0xd')]({'message':_0xbe95('0xee'),'pid':_0xe9e23['pid']});}catch(_0x4c99c4){return _0x3464e4[_0xbe95('0xc')](0x1f4)['send'](_0x4c99c4);}};exports[_0xbe95('0xef')]=function(_0x2bcaa1,_0x456795){var _0x498d03=fs[_0xbe95('0xf0')](_0x2bcaa1[_0xbe95('0xe7')][_0xbe95('0xf1')]);Papa[_0xbe95('0xf2')](_0x498d03,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x4f6f7d){return _0x456795['status'](0xc8)[_0xbe95('0xd')]({'file':_0x2bcaa1[_0xbe95('0xe7')],'fields':_0x4f6f7d['meta']['fields']});}});};exports[_0xbe95('0xf3')]=function(_0xfe5def,_0x51a141){return db[_0xbe95('0x6f')][_0xbe95('0x80')]({'raw':!![],'attributes':['id'],'where':{'role':'agent'}})[_0xbe95('0x14')](function(_0x39aadc){var _0x9aa186=![];if(!_0xfe5def['body']['ListId']){throw new Error('No\x20ListId\x20specified');}if(!_0xfe5def[_0xbe95('0x86')][_0xbe95('0xf4')]['phone']){throw new Error('No\x20phone\x20column\x20specified');}if(!_0xfe5def[_0xbe95('0x86')][_0xbe95('0xf4')][_0xbe95('0xe4')]){throw new Error(_0xbe95('0xe5'));}if(!_0xfe5def[_0xbe95('0x86')][_0xbe95('0xed')]){throw new Error(_0xbe95('0xe0'));}var _0x396cc4=require('child_process')[_0xbe95('0xeb')](path[_0xbe95('0x8a')](__dirname,_0xbe95('0xf5')),[_0xfe5def['params']['id'],JSON['stringify'](_0xfe5def['body']),JSON[_0xbe95('0xf6')](_0x39aadc)]);_0x396cc4['on'](_0xbe95('0xf7'),function(){_0x9aa186=!![];return _0x51a141[_0xbe95('0xc')](0xc8)[_0xbe95('0xd')]({'message':_0xbe95('0xf8'),'pid':_0x396cc4[_0xbe95('0xf9')]});});_0x396cc4['on'](_0xbe95('0xfa'),function(_0x39ae1c){if(_0x39ae1c&&!_0x9aa186){return _0x51a141[_0xbe95('0xc')](0x1f4)[_0xbe95('0xd')]({'message':_0xbe95('0xfb'),'pid':_0x396cc4[_0xbe95('0xf9')]});}});})[_0xbe95('0x7c')](handleError(_0x51a141,null));};exports['importUpdates']=function(_0x4948a8,_0x5df2f0,_0x2e23e0){return db[_0xbe95('0x6f')][_0xbe95('0x80')]({'raw':!![],'attributes':['id'],'where':{'role':_0xbe95('0x71')}})[_0xbe95('0x14')](function(_0x284452){var _0x52ee0c=![];if(!_0x4948a8[_0xbe95('0x86')][_0xbe95('0x54')]){throw new Error(_0xbe95('0xfc'));}if(!_0x4948a8['body'][_0xbe95('0xf4')][_0xbe95('0xba')]){throw new Error(_0xbe95('0xe3'));}if(!_0x4948a8[_0xbe95('0x86')]['binding'][_0xbe95('0xe4')]){throw new Error(_0xbe95('0xe5'));}if(!_0x4948a8['body'][_0xbe95('0xed')]){throw new Error(_0xbe95('0xe0'));}var _0x4b9eeb=require(_0xbe95('0xfd'))[_0xbe95('0xeb')](path[_0xbe95('0x8a')](__dirname,_0xbe95('0xfe')),[_0x4948a8[_0xbe95('0x7e')]['id'],JSON[_0xbe95('0xf6')](_0x4948a8[_0xbe95('0x86')]),JSON['stringify'](_0x284452)]);_0x4b9eeb['on']('message',function(_0x319ca4){_0x52ee0c=!![];return _0x5df2f0['status'](0xc8)[_0xbe95('0xd')]({'message':_0xbe95('0xf8'),'pid':_0x4b9eeb[_0xbe95('0xf9')]});});_0x4b9eeb['on'](_0xbe95('0xfa'),function(_0xe48dd3){if(_0xe48dd3&&!_0x52ee0c){return _0x5df2f0[_0xbe95('0xc')](0x1f4)[_0xbe95('0xd')]({'message':_0xbe95('0xfb'),'pid':_0x4b9eeb['pid']});}});})[_0xbe95('0x7c')](handleError(_0x5df2f0,null));};exports[_0xbe95('0xff')]=function(_0x17c80f,_0x4bd57d){var _0x3bef3e=[_0xbe95('0x100'),_0xbe95('0x101'),_0xbe95('0x102'),_0xbe95('0x103'),'fax',_0xbe95('0x104'),'voice'];var _0x5cf6cf={'offset':0x0,'order':qs[_0xbe95('0x2f')](_0xbe95('0x105'))},_0x80daa={'count':0x0,'rows':[]};Promise[_0xbe95('0x6b')]()['then'](function(){if(_0x17c80f[_0xbe95('0x29')]['channel']){if(!_[_0xbe95('0x106')](_0x3bef3e,_0x17c80f[_0xbe95('0x29')][_0xbe95('0x107')][_0xbe95('0x108')]())){throw new Error(_0xbe95('0x109'));}_0x3bef3e=[_0x17c80f[_0xbe95('0x29')][_0xbe95('0x107')][_0xbe95('0x108')]()];}if(_0x17c80f[_0xbe95('0x29')][_0xbe95('0x10a')]){try{var _0x5ba2ff=JSON['parse'](_0x17c80f[_0xbe95('0x29')][_0xbe95('0x10a')]);if(!moment(_0x5ba2ff[_0xbe95('0x35')])['isValid']()){throw new Error(_0xbe95('0x10b'));}if(!moment(_0x5ba2ff['to'])[_0xbe95('0x10c')]()){throw new Error(_0xbe95('0x10d'));}}catch(_0x479200){throw new Error(_0xbe95('0x10e'));}}if(!_0x17c80f[_0xbe95('0x29')]['hasOwnProperty'](_0xbe95('0x2d'))){_0x5cf6cf[_0xbe95('0x11')]=qs['limit'](_0x17c80f[_0xbe95('0x29')]['limit']||0xa);_0x5cf6cf[_0xbe95('0xe')]=qs[_0xbe95('0xe')](_0x17c80f[_0xbe95('0x29')]['offset']);}var _0x5785f3=_0x3bef3e[_0xbe95('0x45')](function(_0x1e3d38){if(_0x1e3d38===_0xbe95('0x10f')){var _0x31e20a={'attributes':['id','uniqueid',_0xbe95('0x27'),_0xbe95('0x110'),_0xbe95('0x111'),'callerid',_0xbe95('0x112'),_0xbe95('0x113'),_0xbe95('0x114'),_0xbe95('0x115'),_0xbe95('0x116'),_0xbe95('0x117'),_0xbe95('0x118'),_0xbe95('0x119'),_0xbe95('0x11a')],'where':{'ContactId':_0x17c80f[_0xbe95('0x7e')]['id']},'include':[{'model':db[_0xbe95('0x6f')],'as':_0xbe95('0x6f'),'attributes':['id','name','fullname',_0xbe95('0x82')]}],'order':[[_0xbe95('0x116'),_0xbe95('0x69')]]};if(_0x17c80f[_0xbe95('0x29')][_0xbe95('0x10a')]){_0x31e20a[_0xbe95('0x30')]['createdAt']={'$gte':_0x5ba2ff[_0xbe95('0x35')],'$lte':_0x5ba2ff['to']};}return db['VoiceCallReport']['findAndCountAll'](_0x31e20a)[_0xbe95('0x14')](function(_0x5b762c){_0x80daa[_0xbe95('0x10')]+=_0x5b762c[_0xbe95('0x10')];return _['map'](_0x5b762c['rows'],function(_0x780808){var _0x1d487c=_0x780808[_0xbe95('0x87')]({'plain':!![]});_0x1d487c['channel']=_0x1e3d38;if(_0x1d487c[_0xbe95('0x6f')]){_0x1d487c[_0xbe95('0x6f')]={'id':_0x1d487c[_0xbe95('0x6f')]['id'],'name':_0x1d487c[_0xbe95('0x6f')][_0xbe95('0x1a')],'fullname':_0x1d487c[_0xbe95('0x6f')][_0xbe95('0x11b')],'alias':_0x1d487c['User'][_0xbe95('0x82')]};}return _0x1d487c;});});}else{var _0x4089dd=_[_0xbe95('0x11c')](_0x1e3d38)+(_0x1e3d38===_0xbe95('0x101')?_0xbe95('0x11d'):_0xbe95('0x11e'));var _0x328e56={'attributes':['id',_0xbe95('0x11f'),_0xbe95('0x120'),_0xbe95('0x116'),_0xbe95('0x115'),_0xbe95('0x121'),'secondDisposition',_0xbe95('0x122'),_0xbe95('0x11a'),_0x4089dd+'Id'],'where':{'ContactId':_0x17c80f[_0xbe95('0x7e')]['id']},'include':[{'model':db[_0x4089dd],'as':_0xbe95('0x11e'),'attributes':['id',_0xbe95('0x1a'),_0xbe95('0x123')]},{'model':db[_0xbe95('0x6f')],'as':'Owner','attributes':['id',_0xbe95('0x1a'),_0xbe95('0x11b')]},{'model':db[_0xbe95('0x42')],'as':_0xbe95('0x7a'),'attributes':['id',_0xbe95('0x1a'),_0xbe95('0x34')],'through':{'attributes':[]}}],'order':[[_0xbe95('0x116'),'DESC']]};if(_0x17c80f[_0xbe95('0x29')][_0xbe95('0x10a')]){_0x328e56['where'][_0xbe95('0x116')]={'$gte':_0x5ba2ff[_0xbe95('0x35')],'$lte':_0x5ba2ff['to']};}switch(_0x1e3d38){case _0xbe95('0x101'):_0x328e56[_0xbe95('0x2c')][_0xbe95('0x52')]('browserName',_0xbe95('0x124'),_0xbe95('0x125'),_0xbe95('0x126'),_0xbe95('0x127'),_0xbe95('0x128'),'ratingType',_0xbe95('0x129'),_0xbe95('0x12a'));break;case _0xbe95('0x100'):_0x328e56[_0xbe95('0x2c')][_0xbe95('0x52')](_0xbe95('0x12b'),_0xbe95('0x12c'));break;case _0xbe95('0x103'):_0x328e56[_0xbe95('0x2c')][_0xbe95('0x52')](_0xbe95('0x12d'),_0xbe95('0x12e'));break;}return db[_[_0xbe95('0x11c')](_0x1e3d38)+_0xbe95('0x12f')]['findAndCountAll'](_0x328e56)['then'](function(_0x163286){_0x80daa[_0xbe95('0x10')]+=_0x163286[_0xbe95('0x10')];return _[_0xbe95('0x45')](_0x163286[_0xbe95('0x7b')],function(_0x3b5890){var _0x20296e=_0x3b5890[_0xbe95('0x87')]({'plain':!![]});_0x20296e[_0xbe95('0x107')]=_0x1e3d38;if(_0x20296e[_0xbe95('0x130')]){_0x20296e['Owner']={'id':_0x20296e[_0xbe95('0x130')]['id'],'name':_0x20296e['Owner']['name'],'fullname':_0x20296e[_0xbe95('0x130')]['fullname']};}return _0x20296e;});});}});return Promise[_0xbe95('0xc1')](_0x5785f3);})[_0xbe95('0x14')](function(_0x4eafa2){return _(_0x4eafa2)[_0xbe95('0x131')]()[_0xbe95('0x132')](_0xbe95('0x116'))[_0xbe95('0x133')]()[_0xbe95('0x43')]();})[_0xbe95('0x14')](function(_0x2f6835){_0x80daa[_0xbe95('0x7b')]=_0x5cf6cf[_0xbe95('0x11')]?_0x2f6835['slice'](_0x5cf6cf[_0xbe95('0xe')],_0x5cf6cf['offset']+_0x5cf6cf[_0xbe95('0x11')]):_0x2f6835;return _0x80daa;})[_0xbe95('0x14')](respondWithFilteredResult(_0x4bd57d,_0x5cf6cf))[_0xbe95('0x7c')](handleError(_0x4bd57d,null));};
\ No newline at end of file
index 20c55d9..e921ab9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f2f=['save','update','remove','emit','hook','../../mysqldb','CmContact','setMaxListeners'];(function(_0x9cd4c3,_0x1c9b2c){var _0x4c9025=function(_0x25b3c6){while(--_0x25b3c6){_0x9cd4c3['push'](_0x9cd4c3['shift']());}};_0x4c9025(++_0x1c9b2c);}(_0x8f2f,0x1a5));var _0xf8f2=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0x8f2f[_0x13b02f];return _0x12e9a6;};'use strict';var EventEmitter=require('events');var CmContact=require(_0xf8f2('0x0'))['db'][_0xf8f2('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents[_0xf8f2('0x2')](0x0);var events={'afterCreate':_0xf8f2('0x3'),'afterUpdate':_0xf8f2('0x4'),'afterDestroy':_0xf8f2('0x5')};function emitEvent(_0x4ef03d){return function(_0x4e9382,_0x266539,_0x25a181){CmContactEvents[_0xf8f2('0x6')](_0x4ef03d+':'+_0x4e9382['id'],_0x4e9382);CmContactEvents[_0xf8f2('0x6')](_0x4ef03d,_0x4e9382);_0x25a181(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact[_0xf8f2('0x7')](e,emitEvent(event));}}module['exports']=CmContactEvents;
\ No newline at end of file
+var _0xd73d=['save','remove','emit','hasOwnProperty','exports','events','../../mysqldb','CmContact'];(function(_0x135188,_0x1afd71){var _0x371f9e=function(_0x48a4bf){while(--_0x48a4bf){_0x135188['push'](_0x135188['shift']());}};_0x371f9e(++_0x1afd71);}(_0xd73d,0x1a5));var _0xdd73=function(_0x282536,_0x3ba66a){_0x282536=_0x282536-0x0;var _0x76aa80=_0xd73d[_0x282536];return _0x76aa80;};'use strict';var EventEmitter=require(_0xdd73('0x0'));var CmContact=require(_0xdd73('0x1'))['db'][_0xdd73('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xdd73('0x3'),'afterUpdate':'update','afterDestroy':_0xdd73('0x4')};function emitEvent(_0x5c296a){return function(_0xa382bd,_0x45af2c,_0x4a96da){CmContactEvents[_0xdd73('0x5')](_0x5c296a+':'+_0xa382bd['id'],_0xa382bd);CmContactEvents[_0xdd73('0x5')](_0x5c296a,_0xa382bd);_0x4a96da(null);};}for(var e in events){if(events[_0xdd73('0x6')](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0xdd73('0x7')]=CmContactEvents;
\ No newline at end of file
index ee5c4a7..0239927 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccf6=['afterCreate','inspect','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','isNil','VoiceQueue','then','dialTimezone','timezones','utcOffset','add','minutes','ret','CmHopper','findOne','cmContact,\x20afterCreate\x20','create','ListId','priority','callbackUniqueid','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','Campaign','\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','findAll','outbound','dialCheckDuplicateType','Lists','always','onlyIfOpen','CmList','BlackLists','length','CmHopperBlack','cmContact,\x20%s,\x20%s','List\x20not\x20found','destroy','ContactId','VoiceQueueId','CampaignId','all','info','[CmContact][afterDestroy][Succesfull]','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment/shared','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','fax','email','FULLTEXT','models','get','error','cmContact'];(function(_0x529c6a,_0x1b6bbf){var _0x4ca96a=function(_0x1f0dc9){while(--_0x1f0dc9){_0x529c6a['push'](_0x529c6a['shift']());}};_0x4ca96a(++_0x1b6bbf);}(_0xccf6,0x103));var _0x6ccf=function(_0x1f71d8,_0x278518){_0x1f71d8=_0x1f71d8-0x0;var _0x10b045=_0xccf6[_0x1f71d8];return _0x10b045;};'use strict';var _=require('lodash');var util=require(_0x6ccf('0x0'));var logger=require('../../config/logger')(_0x6ccf('0x1'));var moment=require(_0x6ccf('0x2'));var BPromise=require(_0x6ccf('0x3'));var rp=require(_0x6ccf('0x4'));var fs=require('fs');var path=require(_0x6ccf('0x5'));var rimraf=require(_0x6ccf('0x6'));var config=require('../../config/environment');var shared=require(_0x6ccf('0x7'));var attributes=require(_0x6ccf('0x8'));module[_0x6ccf('0x9')]=function(_0x3be548,_0x548e96){return _0x3be548[_0x6ccf('0xa')](_0x6ccf('0xb'),attributes,{'tableName':_0x6ccf('0xc'),'paranoid':!![],'indexes':[{'name':_0x6ccf('0xd'),'fields':[_0x6ccf('0xd')]},{'name':_0x6ccf('0xe'),'fields':[_0x6ccf('0xf'),_0x6ccf('0x10'),_0x6ccf('0xd'),_0x6ccf('0x11'),_0x6ccf('0x12'),_0x6ccf('0x13')],'type':_0x6ccf('0x14')}],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x4a50c4,_0x2b47be,_0x21f2a9){var _0x259798=_0x3be548[_0x6ccf('0x15')];var _0x5af84b=_0x4a50c4[_0x6ccf('0x16')]({'plain':!![]});function _0x440817(){return function(_0x3b7e1b){logger[_0x6ccf('0x17')](_0x6ccf('0x18'),_0x6ccf('0x19'),util[_0x6ccf('0x1a')](_0x3b7e1b,{'showHidden':![],'depth':null}));};}function _0x4bdbb8(_0x5c5c44,_0x34bb0c){var _0x9a631f=_0x34bb0c[_0x6ccf('0x1b')]?_0x34bb0c[_0x6ccf('0x1b')]:moment()[_0x6ccf('0x1c')](_0x6ccf('0x1d'));return new BPromise(function(_0xa4ba12,_0x3baa8a){if(_[_0x6ccf('0x1e')](_0x34bb0c['dialTimezone'])){_0xa4ba12({'ret':_0x9a631f});}else{_0x259798[_0x6ccf('0x1f')]['findOne']({'where':{'id':_0x5c5c44['id']}})[_0x6ccf('0x20')](function(_0x1e797d){if(!_[_0x6ccf('0x1e')](_0x1e797d)){var _0x109ee5=_0x1e797d[_0x6ccf('0x21')];if(!_[_0x6ccf('0x1e')](_0x109ee5)){var _0x3f3f35=shared[_0x6ccf('0x22')];var _0x1e9a0c=_0x3f3f35[_0x109ee5];var _0x4d1cf0=_0x3f3f35[_0x34bb0c['dialTimezone']];if(!_[_0x6ccf('0x1e')](_0x1e9a0c)&&!_['isNil'](_0x4d1cf0)){var _0x5ed6dc=_0x1e9a0c[_0x6ccf('0x23')]-_0x4d1cf0[_0x6ccf('0x23')];_0x9a631f=_0x34bb0c[_0x6ccf('0x1b')]?_0x34bb0c['scheduledat']:moment();var _0x1d1cc8=moment(_0x9a631f)[_0x6ccf('0x24')](_0x5ed6dc,_0x6ccf('0x25'));_0xa4ba12({'ret':_0x1d1cc8['format'](_0x6ccf('0x1d'))});}else _0xa4ba12({'ret':_0x9a631f});}else _0xa4ba12({'ret':_0x9a631f});}else{_0xa4ba12({'ret':_0x9a631f});}});}});return 0xa;}var _0x38a948=function(_0x43b2bc){return new BPromise(function(_0x402a83,_0x7ecaba){_0x4bdbb8(_0x43b2bc,_0x5af84b)[_0x6ccf('0x20')](function(_0x2e87e1){_0x5af84b[_0x6ccf('0x1b')]=_0x2e87e1[_0x6ccf('0x26')];_0x259798[_0x6ccf('0x27')][_0x6ccf('0x28')]({'where':{'phone':_0x5af84b[_0x6ccf('0xd')],'VoiceQueueId':_0x43b2bc['id']}})[_0x6ccf('0x20')](function(_0x590014){if(!_[_0x6ccf('0x1e')](_0x590014)){throw new Error(_0x6ccf('0x29')+_0x5af84b[_0x6ccf('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x43b2bc['id']);}return _0x259798[_0x6ccf('0x27')][_0x6ccf('0x2a')]({'phone':_0x5af84b['phone'],'ContactId':_0x5af84b['id'],'ListId':_0x5af84b[_0x6ccf('0x2b')],'priority':_0x5af84b['priority']?_0x5af84b[_0x6ccf('0x2c')]:0x2,'scheduledat':_0x5af84b[_0x6ccf('0x1b')]?_0x5af84b[_0x6ccf('0x1b')]:moment()[_0x6ccf('0x1c')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x5af84b[_0x6ccf('0x2d')]?!![]:![],'callbackuniqueid':_0x5af84b['callbackUniqueid']?_0x5af84b[_0x6ccf('0x2d')]:undefined,'callbackat':_0x5af84b[_0x6ccf('0x2d')]?moment()[_0x6ccf('0x1c')](_0x6ccf('0x1d')):undefined,'VoiceQueueId':_0x43b2bc['id']});})[_0x6ccf('0x2e')](function(_0x5f1427){_0x7ecaba(_0x5f1427);});});});};var _0x3ee837=function(_0xd52c30){return new BPromise(function(_0x554882,_0x5b601c){_0x4bdbb8(_0xd52c30,_0x5af84b)[_0x6ccf('0x20')](function(_0x17be56){_0x5af84b[_0x6ccf('0x1b')]=_0x17be56[_0x6ccf('0x26')];_0x259798['CmHopper'][_0x6ccf('0x28')]({'where':{'phone':_0x5af84b['phone'],'VoiceQueueId':_0xd52c30['id']}})[_0x6ccf('0x20')](function(_0x5a58ad){if(!_[_0x6ccf('0x1e')](_0x5a58ad)){throw new Error(_0x6ccf('0x29')+_0x5af84b[_0x6ccf('0xd')]+_0x6ccf('0x2f')+_0xd52c30['id']);}return _0x259798[_0x6ccf('0x30')][_0x6ccf('0x28')]({'where':{'calleridnum':_0x5af84b[_0x6ccf('0xd')],'VoiceQueueId':_0xd52c30['id']}});})[_0x6ccf('0x20')](function(_0x46d262){if(!_[_0x6ccf('0x1e')](_0x46d262)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x5af84b[_0x6ccf('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0xd52c30['id']);}return _0x259798['CmHopper'][_0x6ccf('0x2a')]({'phone':_0x5af84b[_0x6ccf('0xd')],'ContactId':_0x5af84b['id'],'ListId':_0x5af84b[_0x6ccf('0x2b')],'priority':_0x5af84b[_0x6ccf('0x2c')]?_0x5af84b['priority']:0x2,'scheduledat':_0x5af84b[_0x6ccf('0x1b')]?_0x5af84b[_0x6ccf('0x1b')]:moment()[_0x6ccf('0x1c')](_0x6ccf('0x1d')),'callback':_0x5af84b[_0x6ccf('0x2d')]?!![]:![],'callbackuniqueid':_0x5af84b['callbackUniqueid']?_0x5af84b[_0x6ccf('0x2d')]:undefined,'callbackat':_0x5af84b[_0x6ccf('0x2d')]?moment()[_0x6ccf('0x1c')](_0x6ccf('0x1d')):undefined,'VoiceQueueId':_0xd52c30['id']});})[_0x6ccf('0x2e')](function(_0x25abed){_0x5b601c(_0x25abed);});});});};function _0x29b656(){return function(_0xd0d617){logger[_0x6ccf('0x17')](_0x6ccf('0x18'),_0x6ccf('0x19'),util[_0x6ccf('0x1a')](_0xd0d617,{'showHidden':![],'depth':null}));};}function _0x2da0da(_0x5c0852,_0x26cf2){var _0x2cf893=_0x26cf2['scheduledat']?_0x26cf2[_0x6ccf('0x1b')]:moment()[_0x6ccf('0x1c')](_0x6ccf('0x1d'));return new BPromise(function(_0x283632,_0x3720b5){if(_[_0x6ccf('0x1e')](_0x26cf2[_0x6ccf('0x21')])){_0x283632({'ret':_0x2cf893});}else{_0x259798[_0x6ccf('0x31')][_0x6ccf('0x28')]({'where':{'id':_0x5c0852['id']}})[_0x6ccf('0x20')](function(_0x36ed24){if(!_[_0x6ccf('0x1e')](_0x36ed24)){var _0x292116=_0x36ed24[_0x6ccf('0x21')];if(!_[_0x6ccf('0x1e')](_0x292116)){var _0x54bbbf=shared[_0x6ccf('0x22')];var _0x59d6b7=_0x54bbbf[_0x292116];var _0x5678a1=_0x54bbbf[_0x26cf2[_0x6ccf('0x21')]];if(!_[_0x6ccf('0x1e')](_0x59d6b7)&&!_[_0x6ccf('0x1e')](_0x5678a1)){var _0x5093c7=_0x59d6b7[_0x6ccf('0x23')]-_0x5678a1[_0x6ccf('0x23')];_0x2cf893=_0x26cf2[_0x6ccf('0x1b')]?_0x26cf2[_0x6ccf('0x1b')]:moment();var _0x5020d9=moment(_0x2cf893)[_0x6ccf('0x24')](_0x5093c7,'minutes');_0x283632({'ret':_0x5020d9[_0x6ccf('0x1c')](_0x6ccf('0x1d'))});}else _0x283632({'ret':_0x2cf893});}else _0x283632({'ret':_0x2cf893});}else{_0x283632({'ret':_0x2cf893});}});}});return 0xa;}var _0x40e89d=function(_0x571f04){return new BPromise(function(_0x523ffc,_0x18b030){_0x2da0da(_0x571f04,_0x5af84b)['then'](function(_0x12f922){_0x5af84b['scheduledat']=_0x12f922[_0x6ccf('0x26')];_0x259798[_0x6ccf('0x27')][_0x6ccf('0x28')]({'where':{'phone':_0x5af84b[_0x6ccf('0xd')],'CampaignId':_0x571f04['id']}})[_0x6ccf('0x20')](function(_0x3e9953){if(!_[_0x6ccf('0x1e')](_0x3e9953)){throw new Error('cmContact,\x20afterCreate\x20'+_0x5af84b[_0x6ccf('0xd')]+_0x6ccf('0x32')+_0x571f04['id']);}return _0x259798[_0x6ccf('0x27')][_0x6ccf('0x2a')]({'phone':_0x5af84b[_0x6ccf('0xd')],'ContactId':_0x5af84b['id'],'ListId':_0x5af84b['ListId'],'priority':_0x5af84b[_0x6ccf('0x2c')]?_0x5af84b[_0x6ccf('0x2c')]:0x2,'scheduledat':_0x5af84b[_0x6ccf('0x1b')]?_0x5af84b[_0x6ccf('0x1b')]:moment()[_0x6ccf('0x1c')](_0x6ccf('0x1d')),'callback':_0x5af84b[_0x6ccf('0x2d')]?!![]:![],'callbackuniqueid':_0x5af84b[_0x6ccf('0x2d')]?_0x5af84b[_0x6ccf('0x2d')]:undefined,'callbackat':_0x5af84b[_0x6ccf('0x2d')]?moment()['format'](_0x6ccf('0x1d')):undefined,'CampaignId':_0x571f04['id']});})[_0x6ccf('0x2e')](function(_0x4bbe17){_0x18b030(_0x4bbe17);});});});};var _0x5b12fe=function(_0x4c3e1f){return new BPromise(function(_0x3eed0c,_0x5604a9){_0x2da0da(_0x4c3e1f,_0x5af84b)['then'](function(_0x42e0ed){_0x5af84b['scheduledat']=_0x42e0ed[_0x6ccf('0x26')];_0x259798['CmHopper'][_0x6ccf('0x28')]({'where':{'phone':_0x5af84b[_0x6ccf('0xd')],'CampaignId':_0x4c3e1f['id']}})[_0x6ccf('0x20')](function(_0x347bac){if(!_[_0x6ccf('0x1e')](_0x347bac)){throw new Error(_0x6ccf('0x29')+_0x5af84b['phone']+_0x6ccf('0x33')+_0x4c3e1f['id']);}return _0x259798[_0x6ccf('0x30')][_0x6ccf('0x28')]({'where':{'calleridnum':_0x5af84b['phone'],'CampaignId':_0x4c3e1f['id']}});})[_0x6ccf('0x20')](function(_0x31a438){if(!_[_0x6ccf('0x1e')](_0x31a438)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x5af84b['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0x4c3e1f['id']);}return _0x259798[_0x6ccf('0x27')][_0x6ccf('0x2a')]({'phone':_0x5af84b[_0x6ccf('0xd')],'ContactId':_0x5af84b['id'],'ListId':_0x5af84b[_0x6ccf('0x2b')],'priority':_0x5af84b[_0x6ccf('0x2c')]?_0x5af84b[_0x6ccf('0x2c')]:0x2,'scheduledat':_0x5af84b['scheduledat']?_0x5af84b[_0x6ccf('0x1b')]:moment()['format'](_0x6ccf('0x1d')),'callback':_0x5af84b[_0x6ccf('0x2d')]?!![]:![],'callbackuniqueid':_0x5af84b[_0x6ccf('0x2d')]?_0x5af84b['callbackUniqueid']:undefined,'callbackat':_0x5af84b['callbackUniqueid']?moment()[_0x6ccf('0x1c')](_0x6ccf('0x1d')):undefined,'CampaignId':_0x4c3e1f['id']});})['catch'](function(_0x54ec57){_0x5604a9(_0x54ec57);});});});};if(_0x5af84b[_0x6ccf('0x2b')]){_0x259798[_0x6ccf('0x1f')][_0x6ccf('0x34')]({'where':{'type':_0x6ccf('0x35')},'attributes':['id',_0x6ccf('0x36'),_0x6ccf('0x21')],'include':[{'model':_0x259798['CmList'],'as':_0x6ccf('0x37'),'where':{'id':_0x5af84b[_0x6ccf('0x2b')]}}]})['then'](function(_0x4ff7ff){if(_0x4ff7ff){var _0x41d82b=[];for(var _0x31ad37=0x0,_0x48bdfe;_0x31ad37<_0x4ff7ff['length'];_0x31ad37+=0x1){_0x48bdfe=_0x4ff7ff[_0x31ad37]['get']({'plain':!![]});switch(_0x48bdfe[_0x6ccf('0x36')]){case _0x6ccf('0x38'):_0x3ee837(_0x48bdfe)[_0x6ccf('0x2e')](_0x440817());break;case _0x6ccf('0x39'):_0x38a948(_0x48bdfe)[_0x6ccf('0x2e')](_0x440817());break;default:_0x2da0da(_0x48bdfe,_0x5af84b)['then'](function(_0x300881){_0x5af84b[_0x6ccf('0x1b')]=_0x300881[_0x6ccf('0x26')];_0x259798[_0x6ccf('0x27')]['create']({'phone':_0x5af84b[_0x6ccf('0xd')],'ContactId':_0x5af84b['id'],'ListId':_0x5af84b[_0x6ccf('0x2b')],'scheduledat':_0x5af84b[_0x6ccf('0x1b')]?_0x5af84b[_0x6ccf('0x1b')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x5af84b[_0x6ccf('0x2c')]?_0x5af84b[_0x6ccf('0x2c')]:0x2,'callback':_0x5af84b[_0x6ccf('0x2d')]?!![]:![],'callbackuniqueid':_0x5af84b['callbackUniqueid']?_0x5af84b[_0x6ccf('0x2d')]:undefined,'callbackat':_0x5af84b[_0x6ccf('0x2d')]?moment()['format'](_0x6ccf('0x1d')):undefined,'VoiceQueueId':_0x48bdfe['id']})[_0x6ccf('0x2e')](_0x440817());});}}}})[_0x6ccf('0x20')](function(){return _0x259798[_0x6ccf('0x1f')][_0x6ccf('0x34')]({'where':{'type':_0x6ccf('0x35')},'attributes':['id'],'include':[{'model':_0x259798[_0x6ccf('0x3a')],'as':_0x6ccf('0x3b'),'where':{'id':_0x5af84b['ListId']}}]})[_0x6ccf('0x20')](function(_0xeee986){if(_0xeee986){var _0x31700e=[];for(var _0x5bdcf3=0x0,_0x1cfde0;_0x5bdcf3<_0xeee986[_0x6ccf('0x3c')];_0x5bdcf3+=0x1){_0x1cfde0=_0xeee986[_0x5bdcf3][_0x6ccf('0x16')]({'plain':!![]});_0x259798[_0x6ccf('0x3d')][_0x6ccf('0x2a')]({'phone':_0x5af84b[_0x6ccf('0xd')],'ContactId':_0x5af84b['id'],'ListId':_0x5af84b[_0x6ccf('0x2b')],'VoiceQueueId':_0x1cfde0['id']})['catch'](function(_0x290615){logger[_0x6ccf('0x17')](_0x6ccf('0x3e'),_0x6ccf('0x19'),_0x290615['message']);});}}});})[_0x6ccf('0x20')](function(){return _0x259798[_0x6ccf('0x31')][_0x6ccf('0x34')]({'attributes':['id','dialCheckDuplicateType',_0x6ccf('0x21')],'include':[{'model':_0x259798['CmList'],'as':_0x6ccf('0x37'),'where':{'id':_0x5af84b[_0x6ccf('0x2b')]}}]})[_0x6ccf('0x20')](function(_0x313bf7){if(_0x313bf7){var _0xb24f86=[];for(var _0x32b9c8=0x0,_0xb7485f;_0x32b9c8<_0x313bf7[_0x6ccf('0x3c')];_0x32b9c8+=0x1){_0xb7485f=_0x313bf7[_0x32b9c8]['get']({'plain':!![]});switch(_0xb7485f[_0x6ccf('0x36')]){case _0x6ccf('0x38'):_0x5b12fe(_0xb7485f)[_0x6ccf('0x2e')](_0x29b656());break;case _0x6ccf('0x39'):_0x40e89d(_0xb7485f)[_0x6ccf('0x2e')](_0x29b656());break;default:_0x259798['CmHopper'][_0x6ccf('0x2a')]({'phone':_0x5af84b[_0x6ccf('0xd')],'ContactId':_0x5af84b['id'],'ListId':_0x5af84b[_0x6ccf('0x2b')],'scheduledat':_0x5af84b[_0x6ccf('0x1b')]?_0x5af84b[_0x6ccf('0x1b')]:moment()[_0x6ccf('0x1c')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x5af84b[_0x6ccf('0x2c')]?_0x5af84b[_0x6ccf('0x2c')]:0x2,'callback':_0x5af84b['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x5af84b[_0x6ccf('0x2d')]?_0x5af84b[_0x6ccf('0x2d')]:undefined,'callbackat':_0x5af84b[_0x6ccf('0x2d')]?moment()[_0x6ccf('0x1c')](_0x6ccf('0x1d')):undefined,'CampaignId':_0xb7485f['id']})[_0x6ccf('0x2e')](_0x29b656());}}}});})['then'](function(){return _0x259798[_0x6ccf('0x31')]['findAll']({'attributes':['id'],'include':[{'model':_0x259798['CmList'],'as':_0x6ccf('0x3b'),'where':{'id':_0x5af84b[_0x6ccf('0x2b')]}}]})[_0x6ccf('0x20')](function(_0x235782){if(_0x235782){var _0x14aff9=[];for(var _0x594a84=0x0,_0x585d38;_0x594a84<_0x235782[_0x6ccf('0x3c')];_0x594a84+=0x1){_0x585d38=_0x235782[_0x594a84][_0x6ccf('0x16')]({'plain':!![]});_0x259798[_0x6ccf('0x3d')][_0x6ccf('0x2a')]({'phone':_0x5af84b[_0x6ccf('0xd')],'ContactId':_0x5af84b['id'],'ListId':_0x5af84b[_0x6ccf('0x2b')],'CampaignId':_0x585d38['id']})[_0x6ccf('0x2e')](function(_0xc0a6be){logger[_0x6ccf('0x17')](_0x6ccf('0x3e'),_0x6ccf('0x19'),_0xc0a6be['message']);});}}});})[_0x6ccf('0x20')](function(){_0x21f2a9();})[_0x6ccf('0x2e')](function(_0x46a790){logger['error'](_0x6ccf('0x3e'),'afterCreate',_0x46a790['message']);_0x21f2a9(_0x46a790);});}else{_0x21f2a9(new Error(_0x6ccf('0x3f')));}},'afterDestroy':function(_0x2ef795,_0xf001fa,_0x196699){var _0x10d62b=_0x3be548['models'];var _0xa85d22=_0x2ef795[_0x6ccf('0x16')]({'plain':!![]});return _0x10d62b[_0x6ccf('0x27')][_0x6ccf('0x34')]({'raw':!![],'where':{'ListId':_0xa85d22[_0x6ccf('0x2b')],'ContactId':_0xa85d22['id']}})['then'](function(_0x10f501){if(!_['isEmpty'](_0x10f501)){var _0x3ec96c=[];for(var _0x3a0ad3=0x0;_0x3a0ad3<_0x10f501[_0x6ccf('0x3c')];_0x3a0ad3+=0x1){var _0x5ae295=_0x10d62b['CmHopper'][_0x6ccf('0x40')]({'where':{'ListId':_0x10f501[_0x3a0ad3][_0x6ccf('0x2b')],'ContactId':_0x10f501[_0x3a0ad3][_0x6ccf('0x41')],'VoiceQueueId':_0x10f501[_0x3a0ad3][_0x6ccf('0x42')],'CampaignId':_0x10f501[_0x3a0ad3][_0x6ccf('0x43')]}});_0x3ec96c['push'](_0x5ae295);}return BPromise[_0x6ccf('0x44')](_0x3ec96c);}})[_0x6ccf('0x20')](function(_0x52cbf6){logger[_0x6ccf('0x45')](_0x6ccf('0x46'),util[_0x6ccf('0x1a')](_0x52cbf6,{'showHidden':![],'depth':null}));_0x196699();})[_0x6ccf('0x2e')](function(_0x31baa9){logger[_0x6ccf('0x17')]('[CmContact][afterDestroy][Error]',util[_0x6ccf('0x1a')](_0x31baa9,{'showHidden':![],'depth':null}));_0x196699(_0x31baa9);});}}});};
\ No newline at end of file
+var _0x92c3=['cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','create','cmContact','Campaign','timezones','utcOffset','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','outbound','dialCheckDuplicateType','CmList','Lists','length','get','always','onlyIfOpen','findAll','CmHopperBlack','cmContact,\x20%s,\x20%s','afterCreate','message','BlackLists','isEmpty','destroy','ContactId','CampaignId','push','all','inspect','api','moment','bluebird','request-promise','path','rimraf','../../config/environment/shared','./cmContact.attributes','cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','fax','email','utf8mb4_unicode_ci','models','error','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','dialTimezone','VoiceQueue','findOne','then','isNil','add','ret','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopper','ListId','priority','callbackUniqueid','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal'];(function(_0x493150,_0x107958){var _0x3fe8da=function(_0xce7a75){while(--_0xce7a75){_0x493150['push'](_0x493150['shift']());}};_0x3fe8da(++_0x107958);}(_0x92c3,0xa6));var _0x392c=function(_0x67c681,_0x4eca57){_0x67c681=_0x67c681-0x0;var _0x3fa322=_0x92c3[_0x67c681];return _0x3fa322;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x392c('0x0'));var moment=require(_0x392c('0x1'));var BPromise=require(_0x392c('0x2'));var rp=require(_0x392c('0x3'));var fs=require('fs');var path=require(_0x392c('0x4'));var rimraf=require(_0x392c('0x5'));var config=require('../../config/environment');var shared=require(_0x392c('0x6'));var attributes=require(_0x392c('0x7'));module['exports']=function(_0x293844,_0x590d98){return _0x293844['define']('CmContact',attributes,{'tableName':_0x392c('0x8'),'paranoid':!![],'indexes':[{'name':_0x392c('0x9'),'fields':[_0x392c('0x9')]},{'name':_0x392c('0xa'),'fields':[_0x392c('0xb'),_0x392c('0xc'),_0x392c('0x9'),_0x392c('0xd'),_0x392c('0xe'),_0x392c('0xf')],'type':'FULLTEXT'}],'timestamps':!![],'charset':'utf8mb4','collate':_0x392c('0x10'),'hooks':{'afterCreate':function(_0x39f91b,_0x386af0,_0x249735){var _0x2d3f57=_0x293844[_0x392c('0x11')];var _0x10f3cc=_0x39f91b['get']({'plain':!![]});function _0x503dea(){return function(_0x40d0fc){logger[_0x392c('0x12')]('cmContact','afterCreate',util['inspect'](_0x40d0fc,{'showHidden':![],'depth':null}));};}function _0xe32c80(_0x5a6862,_0x2368b2){var _0x441741=_0x2368b2[_0x392c('0x13')]?_0x2368b2['scheduledat']:moment()[_0x392c('0x14')](_0x392c('0x15'));return new BPromise(function(_0x1f62b9,_0x6bc471){if(_['isNil'](_0x2368b2[_0x392c('0x16')])){_0x1f62b9({'ret':_0x441741});}else{_0x2d3f57[_0x392c('0x17')][_0x392c('0x18')]({'where':{'id':_0x5a6862['id']}})[_0x392c('0x19')](function(_0x1b62db){if(!_[_0x392c('0x1a')](_0x1b62db)){var _0x315364=_0x1b62db[_0x392c('0x16')];if(!_['isNil'](_0x315364)){var _0x159cda=shared['timezones'];var _0x1f91cb=_0x159cda[_0x315364];var _0x1edcaa=_0x159cda[_0x2368b2['dialTimezone']];if(!_[_0x392c('0x1a')](_0x1f91cb)&&!_[_0x392c('0x1a')](_0x1edcaa)){var _0x15858f=_0x1f91cb['utcOffset']-_0x1edcaa['utcOffset'];_0x441741=_0x2368b2['scheduledat']?_0x2368b2['scheduledat']:moment();var _0x167571=moment(_0x441741)[_0x392c('0x1b')](_0x15858f,'minutes');_0x1f62b9({'ret':_0x167571['format'](_0x392c('0x15'))});}else _0x1f62b9({'ret':_0x441741});}else _0x1f62b9({'ret':_0x441741});}else{_0x1f62b9({'ret':_0x441741});}});}});return 0xa;}var _0x497116=function(_0x88be0c){return new BPromise(function(_0x49676f,_0x568d14){_0xe32c80(_0x88be0c,_0x10f3cc)[_0x392c('0x19')](function(_0xb82ce6){_0x10f3cc[_0x392c('0x13')]=_0xb82ce6[_0x392c('0x1c')];_0x2d3f57['CmHopper'][_0x392c('0x18')]({'where':{'phone':_0x10f3cc[_0x392c('0x9')],'VoiceQueueId':_0x88be0c['id']}})['then'](function(_0x32ceba){if(!_[_0x392c('0x1a')](_0x32ceba)){throw new Error(_0x392c('0x1d')+_0x10f3cc[_0x392c('0x9')]+_0x392c('0x1e')+_0x88be0c['id']);}return _0x2d3f57[_0x392c('0x1f')]['create']({'phone':_0x10f3cc['phone'],'ContactId':_0x10f3cc['id'],'ListId':_0x10f3cc[_0x392c('0x20')],'priority':_0x10f3cc['priority']?_0x10f3cc[_0x392c('0x21')]:0x2,'scheduledat':_0x10f3cc[_0x392c('0x13')]?_0x10f3cc[_0x392c('0x13')]:moment()[_0x392c('0x14')](_0x392c('0x15')),'callback':_0x10f3cc[_0x392c('0x22')]?!![]:![],'callbackuniqueid':_0x10f3cc[_0x392c('0x22')]?_0x10f3cc[_0x392c('0x22')]:undefined,'callbackat':_0x10f3cc[_0x392c('0x22')]?moment()['format'](_0x392c('0x15')):undefined,'VoiceQueueId':_0x88be0c['id']});})[_0x392c('0x23')](function(_0x255f4c){_0x568d14(_0x255f4c);});});});};var _0x204ddd=function(_0x5c3cfe){return new BPromise(function(_0x3a6b60,_0x353134){_0xe32c80(_0x5c3cfe,_0x10f3cc)[_0x392c('0x19')](function(_0x57aa8e){_0x10f3cc[_0x392c('0x13')]=_0x57aa8e[_0x392c('0x1c')];_0x2d3f57['CmHopper'][_0x392c('0x18')]({'where':{'phone':_0x10f3cc['phone'],'VoiceQueueId':_0x5c3cfe['id']}})[_0x392c('0x19')](function(_0x41e311){if(!_['isNil'](_0x41e311)){throw new Error('cmContact,\x20afterCreate\x20'+_0x10f3cc[_0x392c('0x9')]+_0x392c('0x24')+_0x5c3cfe['id']);}return _0x2d3f57[_0x392c('0x25')][_0x392c('0x18')]({'where':{'calleridnum':_0x10f3cc[_0x392c('0x9')],'VoiceQueueId':_0x5c3cfe['id']}});})[_0x392c('0x19')](function(_0x30e219){if(!_[_0x392c('0x1a')](_0x30e219)){throw new Error(_0x392c('0x26')+_0x10f3cc[_0x392c('0x9')]+_0x392c('0x27')+_0x5c3cfe['id']);}return _0x2d3f57[_0x392c('0x1f')][_0x392c('0x28')]({'phone':_0x10f3cc[_0x392c('0x9')],'ContactId':_0x10f3cc['id'],'ListId':_0x10f3cc[_0x392c('0x20')],'priority':_0x10f3cc[_0x392c('0x21')]?_0x10f3cc[_0x392c('0x21')]:0x2,'scheduledat':_0x10f3cc[_0x392c('0x13')]?_0x10f3cc['scheduledat']:moment()['format'](_0x392c('0x15')),'callback':_0x10f3cc[_0x392c('0x22')]?!![]:![],'callbackuniqueid':_0x10f3cc['callbackUniqueid']?_0x10f3cc['callbackUniqueid']:undefined,'callbackat':_0x10f3cc[_0x392c('0x22')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x5c3cfe['id']});})[_0x392c('0x23')](function(_0x2d9ef6){_0x353134(_0x2d9ef6);});});});};function _0x177c56(){return function(_0x15a47c){logger[_0x392c('0x12')](_0x392c('0x29'),'afterCreate',util['inspect'](_0x15a47c,{'showHidden':![],'depth':null}));};}function _0x492cf4(_0x5db673,_0x12166f){var _0x162f84=_0x12166f[_0x392c('0x13')]?_0x12166f[_0x392c('0x13')]:moment()[_0x392c('0x14')](_0x392c('0x15'));return new BPromise(function(_0x4e62a1,_0x4af7a3){if(_[_0x392c('0x1a')](_0x12166f[_0x392c('0x16')])){_0x4e62a1({'ret':_0x162f84});}else{_0x2d3f57[_0x392c('0x2a')][_0x392c('0x18')]({'where':{'id':_0x5db673['id']}})['then'](function(_0x3e2af3){if(!_[_0x392c('0x1a')](_0x3e2af3)){var _0x5af05f=_0x3e2af3[_0x392c('0x16')];if(!_[_0x392c('0x1a')](_0x5af05f)){var _0x5df910=shared[_0x392c('0x2b')];var _0x360b05=_0x5df910[_0x5af05f];var _0x4a0d5e=_0x5df910[_0x12166f[_0x392c('0x16')]];if(!_[_0x392c('0x1a')](_0x360b05)&&!_[_0x392c('0x1a')](_0x4a0d5e)){var _0x59bed9=_0x360b05[_0x392c('0x2c')]-_0x4a0d5e[_0x392c('0x2c')];_0x162f84=_0x12166f[_0x392c('0x13')]?_0x12166f[_0x392c('0x13')]:moment();var _0x4126b9=moment(_0x162f84)[_0x392c('0x1b')](_0x59bed9,'minutes');_0x4e62a1({'ret':_0x4126b9[_0x392c('0x14')](_0x392c('0x15'))});}else _0x4e62a1({'ret':_0x162f84});}else _0x4e62a1({'ret':_0x162f84});}else{_0x4e62a1({'ret':_0x162f84});}});}});return 0xa;}var _0x2e600f=function(_0x129cfd){return new BPromise(function(_0x2722c6,_0x3610d8){_0x492cf4(_0x129cfd,_0x10f3cc)[_0x392c('0x19')](function(_0x44fc8f){_0x10f3cc[_0x392c('0x13')]=_0x44fc8f[_0x392c('0x1c')];_0x2d3f57[_0x392c('0x1f')]['findOne']({'where':{'phone':_0x10f3cc[_0x392c('0x9')],'CampaignId':_0x129cfd['id']}})[_0x392c('0x19')](function(_0x51ff3b){if(!_['isNil'](_0x51ff3b)){throw new Error(_0x392c('0x1d')+_0x10f3cc[_0x392c('0x9')]+_0x392c('0x2d')+_0x129cfd['id']);}return _0x2d3f57['CmHopper'][_0x392c('0x28')]({'phone':_0x10f3cc[_0x392c('0x9')],'ContactId':_0x10f3cc['id'],'ListId':_0x10f3cc[_0x392c('0x20')],'priority':_0x10f3cc[_0x392c('0x21')]?_0x10f3cc[_0x392c('0x21')]:0x2,'scheduledat':_0x10f3cc['scheduledat']?_0x10f3cc[_0x392c('0x13')]:moment()[_0x392c('0x14')](_0x392c('0x15')),'callback':_0x10f3cc['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x10f3cc[_0x392c('0x22')]?_0x10f3cc['callbackUniqueid']:undefined,'callbackat':_0x10f3cc['callbackUniqueid']?moment()['format'](_0x392c('0x15')):undefined,'CampaignId':_0x129cfd['id']});})[_0x392c('0x23')](function(_0x31f483){_0x3610d8(_0x31f483);});});});};var _0x12a928=function(_0x231de3){return new BPromise(function(_0x372518,_0x59a57f){_0x492cf4(_0x231de3,_0x10f3cc)[_0x392c('0x19')](function(_0xbf4ce3){_0x10f3cc[_0x392c('0x13')]=_0xbf4ce3['ret'];_0x2d3f57[_0x392c('0x1f')][_0x392c('0x18')]({'where':{'phone':_0x10f3cc[_0x392c('0x9')],'CampaignId':_0x231de3['id']}})[_0x392c('0x19')](function(_0x5a9910){if(!_[_0x392c('0x1a')](_0x5a9910)){throw new Error(_0x392c('0x1d')+_0x10f3cc[_0x392c('0x9')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x231de3['id']);}return _0x2d3f57[_0x392c('0x25')]['findOne']({'where':{'calleridnum':_0x10f3cc[_0x392c('0x9')],'CampaignId':_0x231de3['id']}});})[_0x392c('0x19')](function(_0x3f48f3){if(!_['isNil'](_0x3f48f3)){throw new Error(_0x392c('0x26')+_0x10f3cc['phone']+_0x392c('0x2e')+_0x231de3['id']);}return _0x2d3f57[_0x392c('0x1f')][_0x392c('0x28')]({'phone':_0x10f3cc['phone'],'ContactId':_0x10f3cc['id'],'ListId':_0x10f3cc[_0x392c('0x20')],'priority':_0x10f3cc['priority']?_0x10f3cc['priority']:0x2,'scheduledat':_0x10f3cc[_0x392c('0x13')]?_0x10f3cc[_0x392c('0x13')]:moment()[_0x392c('0x14')](_0x392c('0x15')),'callback':_0x10f3cc[_0x392c('0x22')]?!![]:![],'callbackuniqueid':_0x10f3cc['callbackUniqueid']?_0x10f3cc['callbackUniqueid']:undefined,'callbackat':_0x10f3cc['callbackUniqueid']?moment()[_0x392c('0x14')](_0x392c('0x15')):undefined,'CampaignId':_0x231de3['id']});})[_0x392c('0x23')](function(_0x5b852a){_0x59a57f(_0x5b852a);});});});};if(_0x10f3cc[_0x392c('0x20')]){_0x2d3f57['VoiceQueue']['findAll']({'where':{'type':_0x392c('0x2f')},'attributes':['id',_0x392c('0x30'),'dialTimezone'],'include':[{'model':_0x2d3f57[_0x392c('0x31')],'as':_0x392c('0x32'),'where':{'id':_0x10f3cc[_0x392c('0x20')]}}]})['then'](function(_0x21e2a0){if(_0x21e2a0){var _0xc94d9c=[];for(var _0x4b019b=0x0,_0xfd4bc1;_0x4b019b<_0x21e2a0[_0x392c('0x33')];_0x4b019b+=0x1){_0xfd4bc1=_0x21e2a0[_0x4b019b][_0x392c('0x34')]({'plain':!![]});switch(_0xfd4bc1[_0x392c('0x30')]){case _0x392c('0x35'):_0x204ddd(_0xfd4bc1)[_0x392c('0x23')](_0x503dea());break;case _0x392c('0x36'):_0x497116(_0xfd4bc1)[_0x392c('0x23')](_0x503dea());break;default:_0x492cf4(_0xfd4bc1,_0x10f3cc)[_0x392c('0x19')](function(_0x5932c6){_0x10f3cc[_0x392c('0x13')]=_0x5932c6[_0x392c('0x1c')];_0x2d3f57[_0x392c('0x1f')][_0x392c('0x28')]({'phone':_0x10f3cc[_0x392c('0x9')],'ContactId':_0x10f3cc['id'],'ListId':_0x10f3cc[_0x392c('0x20')],'scheduledat':_0x10f3cc[_0x392c('0x13')]?_0x10f3cc[_0x392c('0x13')]:moment()['format'](_0x392c('0x15')),'priority':_0x10f3cc[_0x392c('0x21')]?_0x10f3cc[_0x392c('0x21')]:0x2,'callback':_0x10f3cc['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x10f3cc[_0x392c('0x22')]?_0x10f3cc[_0x392c('0x22')]:undefined,'callbackat':_0x10f3cc[_0x392c('0x22')]?moment()[_0x392c('0x14')](_0x392c('0x15')):undefined,'VoiceQueueId':_0xfd4bc1['id']})[_0x392c('0x23')](_0x503dea());});}}}})[_0x392c('0x19')](function(){return _0x2d3f57['VoiceQueue'][_0x392c('0x37')]({'where':{'type':_0x392c('0x2f')},'attributes':['id'],'include':[{'model':_0x2d3f57[_0x392c('0x31')],'as':'BlackLists','where':{'id':_0x10f3cc[_0x392c('0x20')]}}]})[_0x392c('0x19')](function(_0x51702c){if(_0x51702c){var _0x24dfc4=[];for(var _0x2bfc8a=0x0,_0x44c372;_0x2bfc8a<_0x51702c[_0x392c('0x33')];_0x2bfc8a+=0x1){_0x44c372=_0x51702c[_0x2bfc8a][_0x392c('0x34')]({'plain':!![]});_0x2d3f57[_0x392c('0x38')]['create']({'phone':_0x10f3cc[_0x392c('0x9')],'ContactId':_0x10f3cc['id'],'ListId':_0x10f3cc[_0x392c('0x20')],'VoiceQueueId':_0x44c372['id']})[_0x392c('0x23')](function(_0x1dc4a1){logger['error'](_0x392c('0x39'),_0x392c('0x3a'),_0x1dc4a1[_0x392c('0x3b')]);});}}});})['then'](function(){return _0x2d3f57[_0x392c('0x2a')][_0x392c('0x37')]({'attributes':['id',_0x392c('0x30'),_0x392c('0x16')],'include':[{'model':_0x2d3f57[_0x392c('0x31')],'as':'Lists','where':{'id':_0x10f3cc[_0x392c('0x20')]}}]})[_0x392c('0x19')](function(_0x33159e){if(_0x33159e){var _0x5cff8d=[];for(var _0x4b8c6c=0x0,_0x4c17bf;_0x4b8c6c<_0x33159e[_0x392c('0x33')];_0x4b8c6c+=0x1){_0x4c17bf=_0x33159e[_0x4b8c6c]['get']({'plain':!![]});switch(_0x4c17bf[_0x392c('0x30')]){case _0x392c('0x35'):_0x12a928(_0x4c17bf)[_0x392c('0x23')](_0x177c56());break;case _0x392c('0x36'):_0x2e600f(_0x4c17bf)[_0x392c('0x23')](_0x177c56());break;default:_0x2d3f57['CmHopper'][_0x392c('0x28')]({'phone':_0x10f3cc[_0x392c('0x9')],'ContactId':_0x10f3cc['id'],'ListId':_0x10f3cc['ListId'],'scheduledat':_0x10f3cc[_0x392c('0x13')]?_0x10f3cc[_0x392c('0x13')]:moment()[_0x392c('0x14')](_0x392c('0x15')),'priority':_0x10f3cc[_0x392c('0x21')]?_0x10f3cc['priority']:0x2,'callback':_0x10f3cc[_0x392c('0x22')]?!![]:![],'callbackuniqueid':_0x10f3cc[_0x392c('0x22')]?_0x10f3cc[_0x392c('0x22')]:undefined,'callbackat':_0x10f3cc['callbackUniqueid']?moment()[_0x392c('0x14')](_0x392c('0x15')):undefined,'CampaignId':_0x4c17bf['id']})[_0x392c('0x23')](_0x177c56());}}}});})[_0x392c('0x19')](function(){return _0x2d3f57[_0x392c('0x2a')][_0x392c('0x37')]({'attributes':['id'],'include':[{'model':_0x2d3f57['CmList'],'as':_0x392c('0x3c'),'where':{'id':_0x10f3cc[_0x392c('0x20')]}}]})['then'](function(_0x2da7ca){if(_0x2da7ca){var _0x58778e=[];for(var _0x34e800=0x0,_0x8f1621;_0x34e800<_0x2da7ca[_0x392c('0x33')];_0x34e800+=0x1){_0x8f1621=_0x2da7ca[_0x34e800][_0x392c('0x34')]({'plain':!![]});_0x2d3f57[_0x392c('0x38')]['create']({'phone':_0x10f3cc[_0x392c('0x9')],'ContactId':_0x10f3cc['id'],'ListId':_0x10f3cc['ListId'],'CampaignId':_0x8f1621['id']})[_0x392c('0x23')](function(_0x5080be){logger[_0x392c('0x12')]('cmContact,\x20%s,\x20%s',_0x392c('0x3a'),_0x5080be[_0x392c('0x3b')]);});}}});})['then'](function(){_0x249735();})[_0x392c('0x23')](function(_0x40691f){logger['error'](_0x392c('0x39'),'afterCreate',_0x40691f['message']);_0x249735(_0x40691f);});}else{_0x249735(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x52e4f6,_0x320dc0,_0x25d446){var _0x4bff92=_0x293844[_0x392c('0x11')];var _0x5b66ac=_0x52e4f6['get']({'plain':!![]});return _0x4bff92[_0x392c('0x1f')][_0x392c('0x37')]({'raw':!![],'where':{'ListId':_0x5b66ac[_0x392c('0x20')],'ContactId':_0x5b66ac['id']}})[_0x392c('0x19')](function(_0x6aa890){if(!_[_0x392c('0x3d')](_0x6aa890)){var _0x4d3771=[];for(var _0x1711c1=0x0;_0x1711c1<_0x6aa890[_0x392c('0x33')];_0x1711c1+=0x1){var _0xbc159a=_0x4bff92[_0x392c('0x1f')][_0x392c('0x3e')]({'where':{'ListId':_0x6aa890[_0x1711c1][_0x392c('0x20')],'ContactId':_0x6aa890[_0x1711c1][_0x392c('0x3f')],'VoiceQueueId':_0x6aa890[_0x1711c1]['VoiceQueueId'],'CampaignId':_0x6aa890[_0x1711c1][_0x392c('0x40')]}});_0x4d3771[_0x392c('0x41')](_0xbc159a);}return BPromise[_0x392c('0x42')](_0x4d3771);}})['then'](function(_0x175d1c){logger['info']('[CmContact][afterDestroy][Succesfull]',util[_0x392c('0x43')](_0x175d1c,{'showHidden':![],'depth':null}));_0x25d446();})[_0x392c('0x23')](function(_0x3b9879){logger[_0x392c('0x12')]('[CmContact][afterDestroy][Error]',util[_0x392c('0x43')](_0x3b9879,{'showHidden':![],'depth':null}));_0x25d446(_0x3b9879);});}}});};
\ No newline at end of file
index 7a044a0..f4b46f2 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(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'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 _0x9957=['include','model','length','CmContactHasItem','find','ListId','Contact','isNil','CmContactId','CmContact','catch','CreateCmContact','create','body','keys','startsWith','cf_','table','cm_contacts','set','where','id\x20=\x20?','toString','sequelize','query','lodash','util','moment','bluebird','ioredis','squel','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','GetCmContact','findAll','options','raw','attributes','limit','map'];(function(_0x15633f,_0x2937b2){var _0x21af2c=function(_0x4aaa1e){while(--_0x4aaa1e){_0x15633f['push'](_0x15633f['shift']());}};_0x21af2c(++_0x2937b2);}(_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 moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var squel=require(_0x7995('0x5'));var db=require(_0x7995('0x6'))['db'];var utils=require(_0x7995('0x7'));var logger=require('../../config/logger')(_0x7995('0x8'));var config=require(_0x7995('0x9'));var jayson=require(_0x7995('0xa'));var client=jayson[_0x7995('0xb')][_0x7995('0xc')]({'port':0x232a});config[_0x7995('0xd')]=_['defaults'](config[_0x7995('0xd')],{'host':_0x7995('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7995('0xd')]));require(_0x7995('0xf'))[_0x7995('0x10')](socket);function respondWithRpcPromise(_0x35b5fe,_0x3c1d19,_0x1e400a){return new BPromise(function(_0x341672,_0x524f7b){return client[_0x7995('0x11')](_0x35b5fe,_0x1e400a)[_0x7995('0x12')](function(_0x581f22){logger[_0x7995('0x13')](_0x7995('0x14'),_0x3c1d19,_0x7995('0x15'));logger[_0x7995('0x16')](_0x7995('0x17'),_0x3c1d19,_0x7995('0x15'),JSON[_0x7995('0x18')](_0x581f22));if(_0x581f22['error']){if(_0x581f22['error'][_0x7995('0x19')]===0x1f4){logger[_0x7995('0x1a')](_0x7995('0x14'),_0x3c1d19,_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);return _0x524f7b(_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);}logger[_0x7995('0x1a')]('CmContact,\x20%s,\x20%s',_0x3c1d19,_0x581f22[_0x7995('0x1a')]['message']);return _0x341672(_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);}else{logger[_0x7995('0x13')](_0x7995('0x14'),_0x3c1d19,_0x7995('0x15'));_0x341672(_0x581f22[_0x7995('0x1c')]['message']);}})['catch'](function(_0x2536c8){logger['error']('CmContact,\x20%s,\x20%s',_0x3c1d19,_0x2536c8);_0x524f7b(_0x2536c8);});});}exports[_0x7995('0x1d')]=function(_0x3d463e){var _0x4cbe10=this;return new Promise(function(_0x3a9b54,_0x51f276){return db['CmContact'][_0x7995('0x1e')]({'raw':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x20')]===undefined?!![]:![]:!![],'where':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')]['where']||null:null,'attributes':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x21')]||null:null,'limit':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x22')]||null:null,'include':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')]['include']?_[_0x7995('0x23')](_0x3d463e[_0x7995('0x1f')][_0x7995('0x24')],function(_0x268ce7){return{'model':db[_0x268ce7[_0x7995('0x25')]],'as':_0x268ce7['as'],'attributes':_0x268ce7[_0x7995('0x21')],'include':_0x268ce7['include']?_[_0x7995('0x23')](_0x268ce7['include'],function(_0x229742){return{'model':db[_0x229742[_0x7995('0x25')]],'as':_0x229742['as'],'attributes':_0x229742[_0x7995('0x21')],'include':_0x229742[_0x7995('0x24')]?_[_0x7995('0x23')](_0x229742['include'],function(_0x9b2a15){return{'model':db[_0x9b2a15['model']],'as':_0x9b2a15['as'],'attributes':_0x9b2a15[_0x7995('0x21')]};}):[]};}):[]};}):[]:[]})[_0x7995('0x12')](function(_0x4253e5){logger['info']('GetCmContact',_0x3d463e);logger['debug'](_0x7995('0x1d'),_0x3d463e,JSON[_0x7995('0x18')](_0x4253e5));if(_0x4253e5[_0x7995('0x26')]==0x0){return db[_0x7995('0x27')][_0x7995('0x28')]({'raw':!![],'where':{'item':_0x3d463e[_0x7995('0x1f')]['phone']},'include':[{'model':db['CmContact'],'where':{'ListId':_0x3d463e[_0x7995('0x1f')]['where'][_0x7995('0x29')],'deletedAt':{'$eq':null}},'as':_0x7995('0x2a')}]})[_0x7995('0x12')](function(_0x1e9fa4){if(_[_0x7995('0x2b')](_0x1e9fa4)){_0x3a9b54(_0x4253e5);}else{var _0x510841=_0x1e9fa4[_0x7995('0x2c')];return db[_0x7995('0x2d')]['findAll']({'raw':!![],'where':{'id':_0x510841},'attributes':_0x3d463e['options']?_0x3d463e['options'][_0x7995('0x21')]||null:null})[_0x7995('0x12')](function(_0x4a176f){_0x3a9b54(_0x4a176f);});}});}else{_0x3a9b54(_0x4253e5);}})[_0x7995('0x2e')](function(_0x51b95d){logger[_0x7995('0x1a')](_0x7995('0x1d'),_0x51b95d[_0x7995('0x1b')],_0x3d463e);_0x51f276(_0x4cbe10['error'](0x1f4,_0x51b95d['message']));});});};exports[_0x7995('0x2f')]=function(_0x5e67fe){var _0x5d2428=this;return new Promise(function(_0x3e99cd,_0xe328b1){return db['CmContact'][_0x7995('0x30')](_0x5e67fe[_0x7995('0x31')],{'raw':_0x5e67fe[_0x7995('0x1f')]?_0x5e67fe[_0x7995('0x1f')][_0x7995('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x2d4285){var _0x242713;for(var _0xf612e6=0x0;_0xf612e6<Object[_0x7995('0x32')](_0x5e67fe['body'])[_0x7995('0x26')];_0xf612e6++){var _0x235df7=Object[_0x7995('0x32')](_0x5e67fe[_0x7995('0x31')])[_0xf612e6];if(_0x235df7[_0x7995('0x33')](_0x7995('0x34'))){_0x242713=squel['update']()[_0x7995('0x35')](_0x7995('0x36'))[_0x7995('0x37')](_0x235df7,_0x5e67fe[_0x7995('0x31')][_0x235df7])[_0x7995('0x38')](_0x7995('0x39'),_0x2d4285['id'])[_0x7995('0x3a')]();break;}}if(!_0x242713)return _0x2d4285;return db[_0x7995('0x3b')][_0x7995('0x3c')](_0x242713)[_0x7995('0x12')](function(){return _0x2d4285;});})[_0x7995('0x12')](function(_0x270d52){logger[_0x7995('0x13')]('CreateCmContact',_0x5e67fe);logger['debug'](_0x7995('0x2f'),_0x5e67fe,JSON[_0x7995('0x18')](_0x270d52));_0x3e99cd(_0x270d52);})['catch'](function(_0x4b0855){logger[_0x7995('0x1a')]('CreateCmContact',_0x4b0855['message'],_0x5e67fe);_0xe328b1(_0x5d2428[_0x7995('0x1a')](0x1f4,_0x4b0855[_0x7995('0x1b')]));});});};
\ No newline at end of file
index 3010009..31e9196 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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'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(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0xa9e0[_0x32d457];return _0x338386;};'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 117761f..49ee527 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(_0x2348b2,_0x5f4e46){var _0x3dcefa=function(_0x2f8406){while(--_0x2f8406){_0x2348b2['push'](_0x2348b2['shift']());}};_0x3dcefa(++_0x5f4e46);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'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(_0x1f9872,_0x4ff939){var _0x4a1e57=function(_0x4ad801){while(--_0x4ad801){_0x1f9872['push'](_0x1f9872['shift']());}};_0x4a1e57(++_0x4ff939);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa9e0[_0x2b10c6];return _0x3789d2;};'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 1bee6e6..9200cf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4de=['PHONE','sequelize','STRING','INTEGER'];(function(_0x5cb3fb,_0x255290){var _0x23739b=function(_0x4eaf19){while(--_0x4eaf19){_0x5cb3fb['push'](_0x5cb3fb['shift']());}};_0x23739b(++_0x255290);}(_0xa4de,0x10d));var _0xea4d=function(_0xa9201a,_0x269ed5){_0xa9201a=_0xa9201a-0x0;var _0x1b124b=_0xa4de[_0xa9201a];return _0x1b124b;};'use strict';var Sequelize=require(_0xea4d('0x0'));module['exports']={'CmContactId':{'type':Sequelize['INTEGER'],'primaryKey':!![]},'item':{'type':Sequelize[_0xea4d('0x1')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0xea4d('0x2')],'defaultValue':null},'ItemClass':{'type':Sequelize[_0xea4d('0x1')],'defaultValue':_0xea4d('0x3')},'OrderBy':{'type':Sequelize[_0xea4d('0x2')],'defaultValue':null},'description':{'type':Sequelize[_0xea4d('0x1')],'defaultValue':null}};
\ No newline at end of file
+var _0xfa2f=['PHONE','INTEGER','STRING'];(function(_0x2d46da,_0x1106ad){var _0x66e05d=function(_0x49fc86){while(--_0x49fc86){_0x2d46da['push'](_0x2d46da['shift']());}};_0x66e05d(++_0x1106ad);}(_0xfa2f,0xe8));var _0xffa2=function(_0xd2e69f,_0x323bb8){_0xd2e69f=_0xd2e69f-0x0;var _0x345906=_0xfa2f[_0xd2e69f];return _0x345906;};'use strict';var Sequelize=require('sequelize');module['exports']={'CmContactId':{'type':Sequelize[_0xffa2('0x0')],'primaryKey':!![]},'item':{'type':Sequelize['STRING'],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0xffa2('0x0')],'defaultValue':null},'ItemClass':{'type':Sequelize[_0xffa2('0x1')],'defaultValue':_0xffa2('0x2')},'OrderBy':{'type':Sequelize['INTEGER'],'defaultValue':null},'description':{'type':Sequelize[_0xffa2('0x1')],'defaultValue':null}};
\ No newline at end of file
index d71c2f2..2dfa28b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x268b=['offset','undefined','count','set','Content-Range','json','apply','reject','save','update','destroy','then','UserProfileResource','error','stack','name','index','map','rawAttributes','type','key','query','intersection','attributes','model','fields','hasOwnProperty','nolimit','limit','order','sort','filters','pick','VIRTUAL','filter','options','where','CmContactHasItem','includeAll','include','rows','catch','params','keys','length','find','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','CmContactHasItems','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status'];(function(_0x57d370,_0x3ed0f6){var _0x550fd2=function(_0x59634f){while(--_0x59634f){_0x57d370['push'](_0x57d370['shift']());}};_0x550fd2(++_0x3ed0f6);}(_0x268b,0xdc));var _0xb268=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x268b[_0x2be8c2];return _0x97f531;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb268('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb268('0x1'));var rp=require(_0xb268('0x2'));var moment=require('moment');var BPromise=require(_0xb268('0x3'));var Mustache=require(_0xb268('0x4'));var util=require('util');var path=require(_0xb268('0x5'));var sox=require(_0xb268('0x6'));var csv=require(_0xb268('0x7'));var ejs=require(_0xb268('0x8'));var fs=require('fs');var fs_extra=require(_0xb268('0x9'));var _=require(_0xb268('0xa'));var squel=require(_0xb268('0xb'));var crypto=require(_0xb268('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xb268('0xd'));var toCsv=require(_0xb268('0x7'));var querystring=require(_0xb268('0xe'));var Papa=require(_0xb268('0xf'));var Redis=require(_0xb268('0x10'));var authService=require(_0xb268('0x11'));var qs=require(_0xb268('0x12'));var as=require(_0xb268('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb268('0x14'))(_0xb268('0x15'));var utils=require('../../config/utils');var config=require(_0xb268('0x16'));var licenseUtil=require(_0xb268('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x59660c,_0x217719){_0x217719=_0x217719||0xcc;return function(_0x566756){if(_0x566756){return _0x59660c[_0xb268('0x18')](_0x217719);}return _0x59660c['status'](_0x217719)['end']();};}function respondWithResult(_0x2f4818,_0x3c6203){_0x3c6203=_0x3c6203||0xc8;return function(_0x2c1bc8){if(_0x2c1bc8){return _0x2f4818[_0xb268('0x19')](_0x3c6203)['json'](_0x2c1bc8);}};}function respondWithFilteredResult(_0x5baf2e,_0xa42962){return function(_0x27ba7e){if(_0x27ba7e){var _0xba6b8=typeof _0xa42962[_0xb268('0x1a')]===_0xb268('0x1b')&&typeof _0xa42962['limit']==='undefined';var _0x207356=_0x27ba7e[_0xb268('0x1c')];var _0x5b9546=_0xba6b8?0x0:_0xa42962[_0xb268('0x1a')];var _0x9114ae=_0xba6b8?_0x27ba7e[_0xb268('0x1c')]:_0xa42962[_0xb268('0x1a')]+_0xa42962['limit'];var _0x26bd51;if(_0x9114ae>=_0x207356){_0x9114ae=_0x207356;_0x26bd51=0xc8;}else{_0x26bd51=0xce;}_0x5baf2e[_0xb268('0x19')](_0x26bd51);return _0x5baf2e[_0xb268('0x1d')](_0xb268('0x1e'),_0x5b9546+'-'+_0x9114ae+'/'+_0x207356)[_0xb268('0x1f')](_0x27ba7e);}return null;};}function patchUpdates(_0x2c0e2b){return function(_0x167138){try{jsonpatch[_0xb268('0x20')](_0x167138,_0x2c0e2b,!![]);}catch(_0x57bf19){return BPromise[_0xb268('0x21')](_0x57bf19);}return _0x167138[_0xb268('0x22')]();};}function saveUpdates(_0x1328c2,_0x27f10d){return function(_0x212b40){if(_0x212b40){return _0x212b40[_0xb268('0x23')](_0x1328c2)['then'](function(_0x5632ae){return _0x5632ae;});}return null;};}function removeEntity(_0x3c7149,_0x38e8ab){return function(_0x6734e8){if(_0x6734e8){return _0x6734e8[_0xb268('0x24')]()[_0xb268('0x25')](function(){var _0x22a1b9=_0x6734e8['get']({'plain':!![]});var _0x52ca93='CmContactHasItems';return db[_0xb268('0x26')][_0xb268('0x24')]({'where':{'type':_0x52ca93,'resourceId':_0x22a1b9['id']}})['then'](function(){return _0x6734e8;});})[_0xb268('0x25')](function(){_0x3c7149['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xeb039a,_0x31b4c0){return function(_0x3bd4d3){if(!_0x3bd4d3){_0xeb039a[_0xb268('0x18')](0x194);}return _0x3bd4d3;};}function handleError(_0x11dcc8,_0x9632be){_0x9632be=_0x9632be||0x1f4;return function(_0x2aebef){logger[_0xb268('0x27')](_0x2aebef[_0xb268('0x28')]);if(_0x2aebef[_0xb268('0x29')]){delete _0x2aebef[_0xb268('0x29')];}_0x11dcc8[_0xb268('0x19')](_0x9632be)['send'](_0x2aebef);};}exports[_0xb268('0x2a')]=function(_0x130309,_0x22fec4){var _0x2818a3={},_0x5843d7={},_0x3acc54={'count':0x0,'rows':[]};var _0x3fb2c8=_[_0xb268('0x2b')](db['CmContactHasItem'][_0xb268('0x2c')],function(_0xe65f76){return{'name':_0xe65f76['fieldName'],'type':_0xe65f76[_0xb268('0x2d')][_0xb268('0x2e')]};});_0x5843d7['model']=_[_0xb268('0x2b')](_0x3fb2c8,_0xb268('0x29'));_0x5843d7[_0xb268('0x2f')]=_['keys'](_0x130309[_0xb268('0x2f')]);_0x5843d7['filters']=_[_0xb268('0x30')](_0x5843d7['model'],_0x5843d7[_0xb268('0x2f')]);_0x2818a3[_0xb268('0x31')]=_[_0xb268('0x30')](_0x5843d7[_0xb268('0x32')],qs[_0xb268('0x33')](_0x130309['query'][_0xb268('0x33')]));_0x2818a3[_0xb268('0x31')]=_0x2818a3['attributes']['length']?_0x2818a3[_0xb268('0x31')]:_0x5843d7[_0xb268('0x32')];if(!_0x130309[_0xb268('0x2f')][_0xb268('0x34')](_0xb268('0x35'))){_0x2818a3[_0xb268('0x36')]=qs['limit'](_0x130309[_0xb268('0x2f')][_0xb268('0x36')]);_0x2818a3[_0xb268('0x1a')]=qs[_0xb268('0x1a')](_0x130309[_0xb268('0x2f')][_0xb268('0x1a')]);}_0x2818a3[_0xb268('0x37')]=qs[_0xb268('0x38')](_0x130309[_0xb268('0x2f')][_0xb268('0x38')]);_0x2818a3['where']=qs[_0xb268('0x39')](_[_0xb268('0x3a')](_0x130309['query'],_0x5843d7[_0xb268('0x39')]),_0x3fb2c8);if(_0x130309[_0xb268('0x2f')]['filter']){_0x2818a3['where']=_['merge'](_0x2818a3['where'],{'$or':_[_0xb268('0x2b')](_0x3fb2c8,function(_0x5b327f){if(_0x5b327f[_0xb268('0x2d')]!==_0xb268('0x3b')){var _0x3de553={};_0x3de553[_0x5b327f[_0xb268('0x29')]]={'$like':'%'+_0x130309['query'][_0xb268('0x3c')]+'%'};return _0x3de553;}})});}_0x2818a3=_['merge']({},_0x2818a3,_0x130309[_0xb268('0x3d')]);var _0x33d6d8={'where':_0x2818a3[_0xb268('0x3e')]};return db[_0xb268('0x3f')]['count'](_0x33d6d8)['then'](function(_0x5876b){_0x3acc54['count']=_0x5876b;if(_0x130309[_0xb268('0x2f')][_0xb268('0x40')]){_0x2818a3[_0xb268('0x41')]=[{'all':!![]}];}return db['CmContactHasItem']['findAll'](_0x2818a3);})[_0xb268('0x25')](function(_0x5d1d6b){_0x3acc54[_0xb268('0x42')]=_0x5d1d6b;return _0x3acc54;})[_0xb268('0x25')](respondWithFilteredResult(_0x22fec4,_0x2818a3))[_0xb268('0x43')](handleError(_0x22fec4,null));};exports['show']=function(_0x1fe99e,_0x5af3c2){var _0x2b019c={'raw':!![],'where':{'id':_0x1fe99e[_0xb268('0x44')]['id']}},_0x64d0df={};_0x64d0df['model']=_['keys'](db['CmContactHasItem']['rawAttributes']);_0x64d0df[_0xb268('0x2f')]=_[_0xb268('0x45')](_0x1fe99e['query']);_0x64d0df[_0xb268('0x39')]=_[_0xb268('0x30')](_0x64d0df['model'],_0x64d0df['query']);_0x2b019c[_0xb268('0x31')]=_[_0xb268('0x30')](_0x64d0df[_0xb268('0x32')],qs[_0xb268('0x33')](_0x1fe99e[_0xb268('0x2f')][_0xb268('0x33')]));_0x2b019c['attributes']=_0x2b019c['attributes'][_0xb268('0x46')]?_0x2b019c['attributes']:_0x64d0df[_0xb268('0x32')];if(_0x1fe99e[_0xb268('0x2f')][_0xb268('0x40')]){_0x2b019c[_0xb268('0x41')]=[{'all':!![]}];}_0x2b019c=_['merge']({},_0x2b019c,_0x1fe99e['options']);return db[_0xb268('0x3f')][_0xb268('0x47')](_0x2b019c)[_0xb268('0x25')](handleEntityNotFound(_0x5af3c2,null))[_0xb268('0x25')](respondWithResult(_0x5af3c2,null))['catch'](handleError(_0x5af3c2,null));};exports[_0xb268('0x48')]=function(_0x259860,_0x2f994b){return db[_0xb268('0x3f')][_0xb268('0x48')](_0x259860['body'],{})['then'](function(_0x5cfb29){var _0x159c6f=_0x259860['user'][_0xb268('0x49')]({'plain':!![]});if(!_0x159c6f)throw new Error(_0xb268('0x4a'));if(_0x159c6f['role']===_0xb268('0x4b')){var _0xf777c9=_0x5cfb29[_0xb268('0x49')]({'plain':!![]});var _0x22b402=_0xb268('0x4c');return db[_0xb268('0x4d')][_0xb268('0x47')]({'where':{'name':_0x22b402,'userProfileId':_0x159c6f[_0xb268('0x4e')]},'raw':!![]})['then'](function(_0x9226ef){if(_0x9226ef&&_0x9226ef[_0xb268('0x4f')]===0x0){return db[_0xb268('0x26')][_0xb268('0x48')]({'name':_0xf777c9['name'],'resourceId':_0xf777c9['id'],'type':_0x9226ef[_0xb268('0x29')],'sectionId':_0x9226ef['id']},{})[_0xb268('0x25')](function(){return _0x5cfb29;});}else{return _0x5cfb29;}})['catch'](function(_0x93e589){logger[_0xb268('0x27')](_0xb268('0x50'),_0x93e589);throw _0x93e589;});}return _0x5cfb29;})[_0xb268('0x25')](respondWithResult(_0x2f994b,0xc9))[_0xb268('0x43')](handleError(_0x2f994b,null));};exports[_0xb268('0x23')]=function(_0x4d9077,_0x461904){if(_0x4d9077[_0xb268('0x51')]['id']){delete _0x4d9077[_0xb268('0x51')]['id'];}return db[_0xb268('0x3f')]['find']({'where':{'id':_0x4d9077[_0xb268('0x44')]['id']}})['then'](handleEntityNotFound(_0x461904,null))[_0xb268('0x25')](saveUpdates(_0x4d9077[_0xb268('0x51')],null))[_0xb268('0x25')](respondWithResult(_0x461904,null))[_0xb268('0x43')](handleError(_0x461904,null));};exports['destroy']=function(_0x284c0b,_0x3be54a){return db[_0xb268('0x3f')]['find']({'where':{'id':_0x284c0b[_0xb268('0x44')]['id']}})[_0xb268('0x25')](handleEntityNotFound(_0x3be54a,null))['then'](removeEntity(_0x3be54a,null))[_0xb268('0x43')](handleError(_0x3be54a,null));};
\ No newline at end of file
+var _0x11a4=['key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filter','merge','options','count','includeAll','findAll','rows','catch','show','params','include','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','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply','reject','save','destroy','get','CmContactHasItems','UserProfileResource','then','error','stack','name','send','index','map','CmContactHasItem','rawAttributes','fieldName','type'];(function(_0x25ff69,_0x10bb29){var _0x479732=function(_0x2e2f76){while(--_0x2e2f76){_0x25ff69['push'](_0x25ff69['shift']());}};_0x479732(++_0x10bb29);}(_0x11a4,0x1d6));var _0x411a=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x11a4[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require(_0x411a('0x0'));var rimraf=require(_0x411a('0x1'));var zipdir=require(_0x411a('0x2'));var jsonpatch=require(_0x411a('0x3'));var rp=require(_0x411a('0x4'));var moment=require(_0x411a('0x5'));var BPromise=require(_0x411a('0x6'));var Mustache=require(_0x411a('0x7'));var util=require(_0x411a('0x8'));var path=require(_0x411a('0x9'));var sox=require(_0x411a('0xa'));var csv=require(_0x411a('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x411a('0xc'));var crypto=require(_0x411a('0xd'));var jsforce=require(_0x411a('0xe'));var deskjs=require(_0x411a('0xf'));var toCsv=require(_0x411a('0xb'));var querystring=require(_0x411a('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x411a('0x11'));var qs=require(_0x411a('0x12'));var as=require(_0x411a('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x411a('0x14'))(_0x411a('0x15'));var utils=require(_0x411a('0x16'));var config=require(_0x411a('0x17'));var licenseUtil=require(_0x411a('0x18'));var db=require(_0x411a('0x19'))['db'];function respondWithStatusCode(_0x5c015f,_0x5cec45){_0x5cec45=_0x5cec45||0xcc;return function(_0x12784a){if(_0x12784a){return _0x5c015f[_0x411a('0x1a')](_0x5cec45);}return _0x5c015f[_0x411a('0x1b')](_0x5cec45)[_0x411a('0x1c')]();};}function respondWithResult(_0x334195,_0x84906c){_0x84906c=_0x84906c||0xc8;return function(_0x265c41){if(_0x265c41){return _0x334195[_0x411a('0x1b')](_0x84906c)[_0x411a('0x1d')](_0x265c41);}};}function respondWithFilteredResult(_0x1c56fe,_0x11179d){return function(_0x2a4063){if(_0x2a4063){var _0x457b30=typeof _0x11179d[_0x411a('0x1e')]===_0x411a('0x1f')&&typeof _0x11179d[_0x411a('0x20')]===_0x411a('0x1f');var _0x1b7a10=_0x2a4063['count'];var _0x1d36f5=_0x457b30?0x0:_0x11179d[_0x411a('0x1e')];var _0x274d9f=_0x457b30?_0x2a4063['count']:_0x11179d['offset']+_0x11179d[_0x411a('0x20')];var _0x2c5455;if(_0x274d9f>=_0x1b7a10){_0x274d9f=_0x1b7a10;_0x2c5455=0xc8;}else{_0x2c5455=0xce;}_0x1c56fe[_0x411a('0x1b')](_0x2c5455);return _0x1c56fe['set'](_0x411a('0x21'),_0x1d36f5+'-'+_0x274d9f+'/'+_0x1b7a10)[_0x411a('0x1d')](_0x2a4063);}return null;};}function patchUpdates(_0x853a5e){return function(_0x2d9656){try{jsonpatch[_0x411a('0x22')](_0x2d9656,_0x853a5e,!![]);}catch(_0x493fa3){return BPromise[_0x411a('0x23')](_0x493fa3);}return _0x2d9656[_0x411a('0x24')]();};}function saveUpdates(_0x47a02e,_0xdfd06e){return function(_0x476fff){if(_0x476fff){return _0x476fff['update'](_0x47a02e)['then'](function(_0x4a6911){return _0x4a6911;});}return null;};}function removeEntity(_0x11502e,_0x4c599d){return function(_0x2edcba){if(_0x2edcba){return _0x2edcba[_0x411a('0x25')]()['then'](function(){var _0x287765=_0x2edcba[_0x411a('0x26')]({'plain':!![]});var _0x43ecb8=_0x411a('0x27');return db[_0x411a('0x28')][_0x411a('0x25')]({'where':{'type':_0x43ecb8,'resourceId':_0x287765['id']}})[_0x411a('0x29')](function(){return _0x2edcba;});})['then'](function(){_0x11502e[_0x411a('0x1b')](0xcc)[_0x411a('0x1c')]();});}};}function handleEntityNotFound(_0x591983,_0x25c7f8){return function(_0x499dbc){if(!_0x499dbc){_0x591983['sendStatus'](0x194);}return _0x499dbc;};}function handleError(_0x404a4c,_0x138673){_0x138673=_0x138673||0x1f4;return function(_0xf652ed){logger[_0x411a('0x2a')](_0xf652ed[_0x411a('0x2b')]);if(_0xf652ed[_0x411a('0x2c')]){delete _0xf652ed['name'];}_0x404a4c[_0x411a('0x1b')](_0x138673)[_0x411a('0x2d')](_0xf652ed);};}exports[_0x411a('0x2e')]=function(_0x2818e3,_0x3a80e2){var _0x5c5db8={},_0x1603ed={},_0xe3e6ae={'count':0x0,'rows':[]};var _0x4ec97c=_[_0x411a('0x2f')](db[_0x411a('0x30')][_0x411a('0x31')],function(_0x403410){return{'name':_0x403410[_0x411a('0x32')],'type':_0x403410[_0x411a('0x33')][_0x411a('0x34')]};});_0x1603ed[_0x411a('0x35')]=_[_0x411a('0x2f')](_0x4ec97c,_0x411a('0x2c'));_0x1603ed['query']=_[_0x411a('0x36')](_0x2818e3[_0x411a('0x37')]);_0x1603ed[_0x411a('0x38')]=_[_0x411a('0x39')](_0x1603ed['model'],_0x1603ed['query']);_0x5c5db8['attributes']=_[_0x411a('0x39')](_0x1603ed[_0x411a('0x35')],qs[_0x411a('0x3a')](_0x2818e3[_0x411a('0x37')][_0x411a('0x3a')]));_0x5c5db8['attributes']=_0x5c5db8[_0x411a('0x3b')][_0x411a('0x3c')]?_0x5c5db8[_0x411a('0x3b')]:_0x1603ed[_0x411a('0x35')];if(!_0x2818e3[_0x411a('0x37')][_0x411a('0x3d')]('nolimit')){_0x5c5db8[_0x411a('0x20')]=qs[_0x411a('0x20')](_0x2818e3[_0x411a('0x37')][_0x411a('0x20')]);_0x5c5db8[_0x411a('0x1e')]=qs[_0x411a('0x1e')](_0x2818e3[_0x411a('0x37')][_0x411a('0x1e')]);}_0x5c5db8[_0x411a('0x3e')]=qs[_0x411a('0x3f')](_0x2818e3['query'][_0x411a('0x3f')]);_0x5c5db8[_0x411a('0x40')]=qs[_0x411a('0x38')](_['pick'](_0x2818e3[_0x411a('0x37')],_0x1603ed[_0x411a('0x38')]),_0x4ec97c);if(_0x2818e3[_0x411a('0x37')][_0x411a('0x41')]){_0x5c5db8[_0x411a('0x40')]=_[_0x411a('0x42')](_0x5c5db8[_0x411a('0x40')],{'$or':_[_0x411a('0x2f')](_0x4ec97c,function(_0x159f18){if(_0x159f18[_0x411a('0x33')]!=='VIRTUAL'){var _0x302bb8={};_0x302bb8[_0x159f18[_0x411a('0x2c')]]={'$like':'%'+_0x2818e3['query'][_0x411a('0x41')]+'%'};return _0x302bb8;}})});}_0x5c5db8=_['merge']({},_0x5c5db8,_0x2818e3[_0x411a('0x43')]);var _0x4e48b6={'where':_0x5c5db8[_0x411a('0x40')]};return db[_0x411a('0x30')][_0x411a('0x44')](_0x4e48b6)[_0x411a('0x29')](function(_0x4e9251){_0xe3e6ae[_0x411a('0x44')]=_0x4e9251;if(_0x2818e3['query'][_0x411a('0x45')]){_0x5c5db8['include']=[{'all':!![]}];}return db['CmContactHasItem'][_0x411a('0x46')](_0x5c5db8);})[_0x411a('0x29')](function(_0x31ee00){_0xe3e6ae[_0x411a('0x47')]=_0x31ee00;return _0xe3e6ae;})[_0x411a('0x29')](respondWithFilteredResult(_0x3a80e2,_0x5c5db8))[_0x411a('0x48')](handleError(_0x3a80e2,null));};exports[_0x411a('0x49')]=function(_0x1a89f6,_0x115f7f){var _0x1eb7f3={'raw':!![],'where':{'id':_0x1a89f6[_0x411a('0x4a')]['id']}},_0x38e8f9={};_0x38e8f9[_0x411a('0x35')]=_[_0x411a('0x36')](db[_0x411a('0x30')][_0x411a('0x31')]);_0x38e8f9[_0x411a('0x37')]=_[_0x411a('0x36')](_0x1a89f6[_0x411a('0x37')]);_0x38e8f9[_0x411a('0x38')]=_[_0x411a('0x39')](_0x38e8f9[_0x411a('0x35')],_0x38e8f9['query']);_0x1eb7f3[_0x411a('0x3b')]=_[_0x411a('0x39')](_0x38e8f9[_0x411a('0x35')],qs[_0x411a('0x3a')](_0x1a89f6['query'][_0x411a('0x3a')]));_0x1eb7f3[_0x411a('0x3b')]=_0x1eb7f3[_0x411a('0x3b')][_0x411a('0x3c')]?_0x1eb7f3[_0x411a('0x3b')]:_0x38e8f9[_0x411a('0x35')];if(_0x1a89f6['query'][_0x411a('0x45')]){_0x1eb7f3[_0x411a('0x4b')]=[{'all':!![]}];}_0x1eb7f3=_[_0x411a('0x42')]({},_0x1eb7f3,_0x1a89f6[_0x411a('0x43')]);return db[_0x411a('0x30')][_0x411a('0x4c')](_0x1eb7f3)['then'](handleEntityNotFound(_0x115f7f,null))[_0x411a('0x29')](respondWithResult(_0x115f7f,null))[_0x411a('0x48')](handleError(_0x115f7f,null));};exports[_0x411a('0x4d')]=function(_0x710504,_0xafe6ec){return db[_0x411a('0x30')]['create'](_0x710504[_0x411a('0x4e')],{})[_0x411a('0x29')](function(_0x31fee4){var _0x2e3418=_0x710504[_0x411a('0x4f')][_0x411a('0x26')]({'plain':!![]});if(!_0x2e3418)throw new Error(_0x411a('0x50'));if(_0x2e3418[_0x411a('0x51')]==='user'){var _0x536119=_0x31fee4['get']({'plain':!![]});var _0x45e0ca=_0x411a('0x27');return db[_0x411a('0x52')]['find']({'where':{'name':_0x45e0ca,'userProfileId':_0x2e3418[_0x411a('0x53')]},'raw':!![]})[_0x411a('0x29')](function(_0x4dfc3b){if(_0x4dfc3b&&_0x4dfc3b[_0x411a('0x54')]===0x0){return db[_0x411a('0x28')][_0x411a('0x4d')]({'name':_0x536119[_0x411a('0x2c')],'resourceId':_0x536119['id'],'type':_0x4dfc3b[_0x411a('0x2c')],'sectionId':_0x4dfc3b['id']},{})[_0x411a('0x29')](function(){return _0x31fee4;});}else{return _0x31fee4;}})['catch'](function(_0x59a5e1){logger['error'](_0x411a('0x55'),_0x59a5e1);throw _0x59a5e1;});}return _0x31fee4;})[_0x411a('0x29')](respondWithResult(_0xafe6ec,0xc9))[_0x411a('0x48')](handleError(_0xafe6ec,null));};exports[_0x411a('0x56')]=function(_0x3de5b2,_0x290955){if(_0x3de5b2['body']['id']){delete _0x3de5b2['body']['id'];}return db[_0x411a('0x30')][_0x411a('0x4c')]({'where':{'id':_0x3de5b2[_0x411a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x290955,null))[_0x411a('0x29')](saveUpdates(_0x3de5b2[_0x411a('0x4e')],null))[_0x411a('0x29')](respondWithResult(_0x290955,null))[_0x411a('0x48')](handleError(_0x290955,null));};exports[_0x411a('0x25')]=function(_0x1c3ea5,_0x4c8917){return db[_0x411a('0x30')][_0x411a('0x4c')]({'where':{'id':_0x1c3ea5[_0x411a('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4c8917,null))[_0x411a('0x29')](removeEntity(_0x4c8917,null))[_0x411a('0x48')](handleError(_0x4c8917,null));};
\ No newline at end of file
index 6eaedc3..ebf9d30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01f9=['util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','exports','define','CmContactHasItem','cm_contact_has_items'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x01f9,0x6e));var _0x901f=function(_0x1e07ad,_0x84c967){_0x1e07ad=_0x1e07ad-0x0;var _0x2e4fc8=_0x01f9[_0x1e07ad];return _0x2e4fc8;};'use strict';var _=require('lodash');var util=require(_0x901f('0x0'));var logger=require(_0x901f('0x1'))(_0x901f('0x2'));var moment=require(_0x901f('0x3'));var BPromise=require('bluebird');var rp=require(_0x901f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x901f('0x5'));var config=require(_0x901f('0x6'));var attributes=require('./cmContactHasItem.attributes');module[_0x901f('0x7')]=function(_0x3c1a0d,_0x1c5828){return _0x3c1a0d[_0x901f('0x8')](_0x901f('0x9'),attributes,{'tableName':_0x901f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7755=['cm_contact_has_items','lodash','util','api','request-promise','path','../../config/environment','./cmContactHasItem.attributes','exports','define','CmContactHasItem'];(function(_0x285d34,_0x42dd2d){var _0x59e21d=function(_0x386777){while(--_0x386777){_0x285d34['push'](_0x285d34['shift']());}};_0x59e21d(++_0x42dd2d);}(_0x7755,0xbc));var _0x5775=function(_0x4f8a65,_0x4bf69f){_0x4f8a65=_0x4f8a65-0x0;var _0x355d50=_0x7755[_0x4f8a65];return _0x355d50;};'use strict';var _=require(_0x5775('0x0'));var util=require(_0x5775('0x1'));var logger=require('../../config/logger')(_0x5775('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5775('0x3'));var fs=require('fs');var path=require(_0x5775('0x4'));var rimraf=require('rimraf');var config=require(_0x5775('0x5'));var attributes=require(_0x5775('0x6'));module[_0x5775('0x7')]=function(_0x3a2b4c,_0xb02945){return _0x3a2b4c[_0x5775('0x8')](_0x5775('0x9'),attributes,{'tableName':_0x5775('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ae1bc5e..84b3d93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f7c=['code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','CmContactHasItem,\x20%s,\x20%s','debug','CmContactHasItem,\x20%s,\x20%s,\x20%s','error'];(function(_0x819464,_0x46fc91){var _0x49dcc0=function(_0x36b2b2){while(--_0x36b2b2){_0x819464['push'](_0x819464['shift']());}};_0x49dcc0(++_0x46fc91);}(_0x1f7c,0xca));var _0xc1f7=function(_0x5cb97e,_0x132a39){_0x5cb97e=_0x5cb97e-0x0;var _0x1714b4=_0x1f7c[_0x5cb97e];return _0x1714b4;};'use strict';var _=require(_0xc1f7('0x0'));var util=require(_0xc1f7('0x1'));var moment=require(_0xc1f7('0x2'));var BPromise=require(_0xc1f7('0x3'));var rs=require(_0xc1f7('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc1f7('0x5'))['db'];var utils=require(_0xc1f7('0x6'));var logger=require(_0xc1f7('0x7'))(_0xc1f7('0x8'));var config=require(_0xc1f7('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xc1f7('0xa')][_0xc1f7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xda26a9,_0x5a61c2,_0x1aed15){return new BPromise(function(_0xe5846c,_0x22fa66){return client[_0xc1f7('0xc')](_0xda26a9,_0x1aed15)['then'](function(_0x13ee67){logger[_0xc1f7('0xd')](_0xc1f7('0xe'),_0x5a61c2,'request\x20sent');logger[_0xc1f7('0xf')](_0xc1f7('0x10'),_0x5a61c2,'request\x20sent',JSON['stringify'](_0x13ee67));if(_0x13ee67[_0xc1f7('0x11')]){if(_0x13ee67[_0xc1f7('0x11')][_0xc1f7('0x12')]===0x1f4){logger[_0xc1f7('0x11')](_0xc1f7('0xe'),_0x5a61c2,_0x13ee67[_0xc1f7('0x11')]['message']);return _0x22fa66(_0x13ee67[_0xc1f7('0x11')]['message']);}logger[_0xc1f7('0x11')](_0xc1f7('0xe'),_0x5a61c2,_0x13ee67[_0xc1f7('0x11')]['message']);return _0xe5846c(_0x13ee67['error'][_0xc1f7('0x13')]);}else{logger[_0xc1f7('0xd')](_0xc1f7('0xe'),_0x5a61c2,'request\x20sent');_0xe5846c(_0x13ee67[_0xc1f7('0x14')][_0xc1f7('0x13')]);}})[_0xc1f7('0x15')](function(_0x8cf41a){logger['error'](_0xc1f7('0xe'),_0x5a61c2,_0x8cf41a);_0x22fa66(_0x8cf41a);});});}
\ No newline at end of file
+var _0xfeae=['../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','then','info','CmContactHasItem,\x20%s,\x20%s','request\x20sent','debug','CmContactHasItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring'];(function(_0xedbd61,_0xe0483a){var _0xf1cba4=function(_0x4d023){while(--_0x4d023){_0xedbd61['push'](_0xedbd61['shift']());}};_0xf1cba4(++_0xe0483a);}(_0xfeae,0x146));var _0xefea=function(_0x346512,_0x5c99e6){_0x346512=_0x346512-0x0;var _0x483a14=_0xfeae[_0x346512];return _0x483a14;};'use strict';var _=require(_0xefea('0x0'));var util=require(_0xefea('0x1'));var moment=require('moment');var BPromise=require(_0xefea('0x2'));var rs=require(_0xefea('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xefea('0x4'))['db'];var utils=require(_0xefea('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xefea('0x6'));var jayson=require(_0xefea('0x7'));var client=jayson[_0xefea('0x8')][_0xefea('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3b0be9,_0x1025ed,_0x52ce03){return new BPromise(function(_0x4698dc,_0x37d713){return client['request'](_0x3b0be9,_0x52ce03)[_0xefea('0xa')](function(_0x3a48c1){logger[_0xefea('0xb')](_0xefea('0xc'),_0x1025ed,_0xefea('0xd'));logger[_0xefea('0xe')](_0xefea('0xf'),_0x1025ed,'request\x20sent',JSON[_0xefea('0x10')](_0x3a48c1));if(_0x3a48c1[_0xefea('0x11')]){if(_0x3a48c1[_0xefea('0x11')][_0xefea('0x12')]===0x1f4){logger[_0xefea('0x11')](_0xefea('0xc'),_0x1025ed,_0x3a48c1[_0xefea('0x11')]['message']);return _0x37d713(_0x3a48c1[_0xefea('0x11')][_0xefea('0x13')]);}logger[_0xefea('0x11')](_0xefea('0xc'),_0x1025ed,_0x3a48c1[_0xefea('0x11')]['message']);return _0x4698dc(_0x3a48c1[_0xefea('0x11')][_0xefea('0x13')]);}else{logger[_0xefea('0xb')]('CmContactHasItem,\x20%s,\x20%s',_0x1025ed,'request\x20sent');_0x4698dc(_0x3a48c1[_0xefea('0x14')][_0xefea('0x13')]);}})[_0xefea('0x15')](function(_0x4a89ea){logger[_0xefea('0x11')]('CmContactHasItem,\x20%s,\x20%s',_0x1025ed,_0x4a89ea);_0x37d713(_0x4a89ea);});});}
\ No newline at end of file
index 05d0c51..0cbc109 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe78b=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContactHasItem.controller','get','isAuthenticated','index','/:id','post','create','put','destroy','exports','util','connect-timeout'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0xe78b,0x1c9));var _0xbe78=function(_0xc66583,_0x404ee3){_0xc66583=_0xc66583-0x0;var _0x580314=_0xe78b[_0xc66583];return _0x580314;};'use strict';var multer=require('multer');var util=require(_0xbe78('0x0'));var path=require('path');var timeout=require(_0xbe78('0x1'));var express=require(_0xbe78('0x2'));var router=express['Router']();var fs_extra=require(_0xbe78('0x3'));var auth=require(_0xbe78('0x4'));var interaction=require(_0xbe78('0x5'));var config=require(_0xbe78('0x6'));var controller=require(_0xbe78('0x7'));router[_0xbe78('0x8')]('/',auth[_0xbe78('0x9')](),controller[_0xbe78('0xa')]);router[_0xbe78('0x8')](_0xbe78('0xb'),auth[_0xbe78('0x9')](),controller['show']);router[_0xbe78('0xc')]('/',auth[_0xbe78('0x9')](),controller[_0xbe78('0xd')]);router[_0xbe78('0xe')]('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0xbe78('0xb'),auth[_0xbe78('0x9')](),controller[_0xbe78('0xf')]);module[_0xbe78('0x10')]=router;
\ No newline at end of file
+var _0x33d0=['put','destroy','exports','multer','path','Router','fs-extra','../../config/environment','./cmContactHasItem.controller','get','/:id','isAuthenticated','show','post','create'];(function(_0x3f5cdb,_0x1be3f4){var _0x6f66c3=function(_0x52204f){while(--_0x52204f){_0x3f5cdb['push'](_0x3f5cdb['shift']());}};_0x6f66c3(++_0x1be3f4);}(_0x33d0,0x99));var _0x033d=function(_0x11b537,_0x26a349){_0x11b537=_0x11b537-0x0;var _0x5285d0=_0x33d0[_0x11b537];return _0x5285d0;};'use strict';var multer=require(_0x033d('0x0'));var util=require('util');var path=require(_0x033d('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x033d('0x2')]();var fs_extra=require(_0x033d('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x033d('0x4'));var controller=require(_0x033d('0x5'));router[_0x033d('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0x033d('0x6')](_0x033d('0x7'),auth[_0x033d('0x8')](),controller[_0x033d('0x9')]);router[_0x033d('0xa')]('/',auth[_0x033d('0x8')](),controller[_0x033d('0xb')]);router[_0x033d('0xc')](_0x033d('0x7'),auth[_0x033d('0x8')](),controller['update']);router['delete']('/:id',auth[_0x033d('0x8')](),controller[_0x033d('0xd')]);module[_0x033d('0xe')]=router;
\ No newline at end of file
index 6b145c6..eebf939 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69b2=['parse','values','isArray','stringify','BOOLEAN','voice','sequelize','lodash','exports','VIRTUAL','getDataValue','alias','STRING','setDataValue','name','TEXT','long','type'];(function(_0x203b8d,_0x323f8d){var _0x743a77=function(_0x1fb930){while(--_0x1fb930){_0x203b8d['push'](_0x203b8d['shift']());}};_0x743a77(++_0x323f8d);}(_0x69b2,0x1a4));var _0x269b=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0x69b2[_0x5b561d];return _0x431060;};'use strict';var Sequelize=require(_0x269b('0x0'));var _=require(_0x269b('0x1'));module[_0x269b('0x2')]={'name':{'type':Sequelize[_0x269b('0x3')],'get':function(_0x33af52){return this[_0x269b('0x4')](_0x269b('0x5'));}},'alias':{'type':Sequelize[_0x269b('0x6')],'allowNull':![],'set':function(_0x16d01d){this[_0x269b('0x7')](_0x269b('0x5'),_0x16d01d?_0x16d01d:this[_0x269b('0x4')](_0x269b('0x8')));}},'type':{'type':Sequelize['STRING'],'allowNull':![]},'values':{'type':Sequelize[_0x269b('0x9')](_0x269b('0xa')),'get':function(){if(this[_0x269b('0x4')](_0x269b('0xb'))==='select'){return JSON[_0x269b('0xc')](this['getDataValue'](_0x269b('0xd')));}else{return this['getDataValue'](_0x269b('0xd'));}},'set':function(_0x423fc4){if(Array[_0x269b('0xe')](_0x423fc4)){this['setDataValue'](_0x269b('0xd'),JSON[_0x269b('0xf')](_0x423fc4));}else{this['setDataValue'](_0x269b('0xd'),_0x423fc4);}}},'required':{'type':Sequelize[_0x269b('0x10')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x269b('0x10')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0x269b('0x11'))}};
\ No newline at end of file
+var _0xdcbc=['name','STRING','type','select','parse','values','isArray','stringify','BOOLEAN','voice','sequelize','lodash','exports','VIRTUAL','getDataValue','alias','setDataValue'];(function(_0x2cee1a,_0x50e050){var _0x4bd2dc=function(_0x20215e){while(--_0x20215e){_0x2cee1a['push'](_0x2cee1a['shift']());}};_0x4bd2dc(++_0x50e050);}(_0xdcbc,0x92));var _0xcdcb=function(_0x3ce99c,_0x6395aa){_0x3ce99c=_0x3ce99c-0x0;var _0x59b267=_0xdcbc[_0x3ce99c];return _0x59b267;};'use strict';var Sequelize=require(_0xcdcb('0x0'));var _=require(_0xcdcb('0x1'));module[_0xcdcb('0x2')]={'name':{'type':Sequelize[_0xcdcb('0x3')],'get':function(_0x1aae4a){return this[_0xcdcb('0x4')](_0xcdcb('0x5'));}},'alias':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x41674c){this[_0xcdcb('0x6')](_0xcdcb('0x5'),_0x41674c?_0x41674c:this[_0xcdcb('0x4')](_0xcdcb('0x7')));}},'type':{'type':Sequelize[_0xcdcb('0x8')],'allowNull':![]},'values':{'type':Sequelize['TEXT']('long'),'get':function(){if(this[_0xcdcb('0x4')](_0xcdcb('0x9'))===_0xcdcb('0xa')){return JSON[_0xcdcb('0xb')](this[_0xcdcb('0x4')]('values'));}else{return this['getDataValue'](_0xcdcb('0xc'));}},'set':function(_0x126359){if(Array[_0xcdcb('0xd')](_0x126359)){this[_0xcdcb('0x6')](_0xcdcb('0xc'),JSON[_0xcdcb('0xe')](_0x126359));}else{this[_0xcdcb('0x6')](_0xcdcb('0xc'),_0x126359);}}},'required':{'type':Sequelize[_0xcdcb('0xf')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xcdcb('0xf')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM'](_0xcdcb('0x10'))}};
\ No newline at end of file
index f658b4e..f9f93ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba18=['catch','update','body','params','create','sequelize','transaction','Sequelize','TEXT','text','INTEGER','switch','BOOLEAN','defaultValue','addColumn','cm_contacts','cf_%d','rimraf','fast-json-patch','mustache','util','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','apply','then','destroy','end','name','send','index','CmCustomField','rawAttributes','key','model','differenceBy','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','map','type','VIRTUAL','filter','includeAll','include','show','options','find'];(function(_0x371566,_0x1c6037){var _0x2d8e19=function(_0x445bd2){while(--_0x445bd2){_0x371566['push'](_0x371566['shift']());}};_0x2d8e19(++_0x1c6037);}(_0xba18,0x1e5));var _0x8ba1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xba18[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8ba1('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8ba1('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x8ba1('0x2'));var util=require(_0x8ba1('0x3'));var path=require('path');var sox=require('sox');var csv=require(_0x8ba1('0x4'));var ejs=require(_0x8ba1('0x5'));var fs=require('fs');var fs_extra=require(_0x8ba1('0x6'));var _=require(_0x8ba1('0x7'));var squel=require('squel');var crypto=require(_0x8ba1('0x8'));var jsforce=require('jsforce');var deskjs=require(_0x8ba1('0x9'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8ba1('0xa'));var Redis=require(_0x8ba1('0xb'));var authService=require(_0x8ba1('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0x8ba1('0xd'));var hardwareService=require(_0x8ba1('0xe'));var logger=require(_0x8ba1('0xf'))('api');var utils=require('../../config/utils');var config=require(_0x8ba1('0x10'));var licenseUtil=require(_0x8ba1('0x11'));var db=require(_0x8ba1('0x12'))['db'];function respondWithStatusCode(_0x4cc61e,_0x389143){_0x389143=_0x389143||0xcc;return function(_0x1f6270){if(_0x1f6270){return _0x4cc61e[_0x8ba1('0x13')](_0x389143);}return _0x4cc61e[_0x8ba1('0x14')](_0x389143)['end']();};}function respondWithResult(_0x540569,_0x58bb89){_0x58bb89=_0x58bb89||0xc8;return function(_0x171189){if(_0x171189){return _0x540569[_0x8ba1('0x14')](_0x58bb89)[_0x8ba1('0x15')](_0x171189);}};}function respondWithFilteredResult(_0x581cf7,_0x233490){return function(_0x20f7b4){if(_0x20f7b4){var _0x22284f=typeof _0x233490['offset']===_0x8ba1('0x16')&&typeof _0x233490['limit']===_0x8ba1('0x16');var _0x4f0e07=_0x20f7b4[_0x8ba1('0x17')];var _0x215d2b=_0x22284f?0x0:_0x233490['offset'];var _0x307b4a=_0x22284f?_0x20f7b4[_0x8ba1('0x17')]:_0x233490[_0x8ba1('0x18')]+_0x233490[_0x8ba1('0x19')];var _0x2935bf;if(_0x307b4a>=_0x4f0e07){_0x307b4a=_0x4f0e07;_0x2935bf=0xc8;}else{_0x2935bf=0xce;}_0x581cf7[_0x8ba1('0x14')](_0x2935bf);return _0x581cf7[_0x8ba1('0x1a')](_0x8ba1('0x1b'),_0x215d2b+'-'+_0x307b4a+'/'+_0x4f0e07)['json'](_0x20f7b4);}return null;};}function patchUpdates(_0x5945de){return function(_0x7cf344){try{jsonpatch[_0x8ba1('0x1c')](_0x7cf344,_0x5945de,!![]);}catch(_0x3cb467){return BPromise['reject'](_0x3cb467);}return _0x7cf344['save']();};}function saveUpdates(_0x3d6c45,_0x2291d3){return function(_0x562d6f){if(_0x562d6f){return _0x562d6f['update'](_0x3d6c45)[_0x8ba1('0x1d')](function(_0x131118){return _0x131118;});}return null;};}function removeEntity(_0x365b73,_0x4ae0af){return function(_0x244388){if(_0x244388){return _0x244388[_0x8ba1('0x1e')]()['then'](function(){_0x365b73[_0x8ba1('0x14')](0xcc)[_0x8ba1('0x1f')]();});}};}function handleEntityNotFound(_0x48530e,_0x526dd8){return function(_0x213dfd){if(!_0x213dfd){_0x48530e[_0x8ba1('0x13')](0x194);}return _0x213dfd;};}function handleError(_0x305a8d,_0x13f468){_0x13f468=_0x13f468||0x1f4;return function(_0x4afeaf){logger['error'](_0x4afeaf['stack']);if(_0x4afeaf[_0x8ba1('0x20')]){delete _0x4afeaf[_0x8ba1('0x20')];}_0x305a8d[_0x8ba1('0x14')](_0x13f468)[_0x8ba1('0x21')](_0x4afeaf);};}exports[_0x8ba1('0x22')]=function(_0x3a8a8a,_0x4f7eac){var _0x4694d0={},_0x27b449={},_0x49f888={'count':0x0,'rows':[]};var _0x3af8ad=_['map'](db[_0x8ba1('0x23')][_0x8ba1('0x24')],function(_0x4628e4){return{'name':_0x4628e4['fieldName'],'type':_0x4628e4['type'][_0x8ba1('0x25')]};});_0x27b449[_0x8ba1('0x26')]=_[_0x8ba1('0x27')](_['map'](_0x3af8ad,'name'),['name']);_0x27b449['query']=_[_0x8ba1('0x28')](_0x3a8a8a[_0x8ba1('0x29')]);_0x27b449[_0x8ba1('0x2a')]=_[_0x8ba1('0x2b')](_0x27b449[_0x8ba1('0x26')],_0x27b449[_0x8ba1('0x29')]);_0x4694d0[_0x8ba1('0x2c')]=_[_0x8ba1('0x2b')](_0x27b449['model'],qs[_0x8ba1('0x2d')](_0x3a8a8a[_0x8ba1('0x29')]['fields']));_0x4694d0[_0x8ba1('0x2c')]=_0x4694d0[_0x8ba1('0x2c')][_0x8ba1('0x2e')]?_0x4694d0[_0x8ba1('0x2c')]:_0x27b449['model'];if(!_0x3a8a8a['query']['hasOwnProperty'](_0x8ba1('0x2f'))){_0x4694d0[_0x8ba1('0x19')]=qs[_0x8ba1('0x19')](_0x3a8a8a[_0x8ba1('0x29')][_0x8ba1('0x19')]);_0x4694d0[_0x8ba1('0x18')]=qs[_0x8ba1('0x18')](_0x3a8a8a['query'][_0x8ba1('0x18')]);}_0x4694d0[_0x8ba1('0x30')]=qs['sort'](_0x3a8a8a[_0x8ba1('0x29')][_0x8ba1('0x31')]);_0x4694d0[_0x8ba1('0x32')]=qs['filters'](_[_0x8ba1('0x33')](_0x3a8a8a[_0x8ba1('0x29')],_0x27b449[_0x8ba1('0x2a')]),_0x3af8ad);if(_0x3a8a8a[_0x8ba1('0x29')]['filter']){_0x4694d0['where']=_['merge'](_0x4694d0[_0x8ba1('0x32')],{'$or':_[_0x8ba1('0x34')](_0x3af8ad,function(_0x7f71d5){if(_0x7f71d5[_0x8ba1('0x35')]!==_0x8ba1('0x36')){var _0x3de0ea={};_0x3de0ea[_0x7f71d5[_0x8ba1('0x20')]]={'$like':'%'+_0x3a8a8a['query'][_0x8ba1('0x37')]+'%'};return _0x3de0ea;}})});}_0x4694d0=_['merge']({},_0x4694d0,_0x3a8a8a['options']);var _0x4b7fb3={'where':_0x4694d0[_0x8ba1('0x32')]};return db[_0x8ba1('0x23')][_0x8ba1('0x17')](_0x4b7fb3)[_0x8ba1('0x1d')](function(_0x52bbb4){_0x49f888['count']=_0x52bbb4;if(_0x3a8a8a[_0x8ba1('0x29')][_0x8ba1('0x38')]){_0x4694d0[_0x8ba1('0x39')]=[{'all':!![]}];}return db[_0x8ba1('0x23')]['findAll'](_0x4694d0);})['then'](function(_0x226dd9){_0x49f888['rows']=_0x226dd9;return _0x49f888;})[_0x8ba1('0x1d')](respondWithFilteredResult(_0x4f7eac,_0x4694d0))['catch'](handleError(_0x4f7eac,null));};exports[_0x8ba1('0x3a')]=function(_0x5d2360,_0x26b299){var _0x1a6e03={'raw':!![],'where':{'id':_0x5d2360['params']['id']}},_0x3f19f4={};_0x3f19f4[_0x8ba1('0x26')]=_[_0x8ba1('0x28')](db[_0x8ba1('0x23')][_0x8ba1('0x24')]);_0x3f19f4[_0x8ba1('0x29')]=_[_0x8ba1('0x28')](_0x5d2360[_0x8ba1('0x29')]);_0x3f19f4[_0x8ba1('0x2a')]=_[_0x8ba1('0x2b')](_0x3f19f4[_0x8ba1('0x26')],_0x3f19f4[_0x8ba1('0x29')]);_0x1a6e03[_0x8ba1('0x2c')]=_['intersection'](_0x3f19f4[_0x8ba1('0x26')],qs[_0x8ba1('0x2d')](_0x5d2360[_0x8ba1('0x29')][_0x8ba1('0x2d')]));_0x1a6e03['attributes']=_0x1a6e03['attributes'][_0x8ba1('0x2e')]?_0x1a6e03[_0x8ba1('0x2c')]:_0x3f19f4[_0x8ba1('0x26')];if(_0x5d2360[_0x8ba1('0x29')]['includeAll']){_0x1a6e03[_0x8ba1('0x39')]=[{'all':!![]}];}_0x1a6e03=_['merge']({},_0x1a6e03,_0x5d2360[_0x8ba1('0x3b')]);return db[_0x8ba1('0x23')][_0x8ba1('0x3c')](_0x1a6e03)['then'](handleEntityNotFound(_0x26b299,null))['then'](respondWithResult(_0x26b299,null))[_0x8ba1('0x3d')](handleError(_0x26b299,null));};exports[_0x8ba1('0x3e')]=function(_0x1b0dbd,_0xee872b){if(_0x1b0dbd[_0x8ba1('0x3f')]['id']){delete _0x1b0dbd[_0x8ba1('0x3f')]['id'];}return db[_0x8ba1('0x23')][_0x8ba1('0x3c')]({'where':{'id':_0x1b0dbd[_0x8ba1('0x40')]['id']}})[_0x8ba1('0x1d')](handleEntityNotFound(_0xee872b,null))[_0x8ba1('0x1d')](saveUpdates(_0x1b0dbd['body'],null))[_0x8ba1('0x1d')](respondWithResult(_0xee872b,null))[_0x8ba1('0x3d')](handleError(_0xee872b,null));};exports[_0x8ba1('0x1e')]=function(_0x380799,_0x50ab7f){return db[_0x8ba1('0x23')][_0x8ba1('0x3c')]({'where':{'id':_0x380799['params']['id']}})['then'](handleEntityNotFound(_0x50ab7f,null))[_0x8ba1('0x1d')](removeEntity(_0x50ab7f,null))['catch'](handleError(_0x50ab7f,null));};exports[_0x8ba1('0x41')]=function(_0x55210c,_0x346af8){var _0x260293;return db[_0x8ba1('0x42')][_0x8ba1('0x43')](function(_0x21dc42){return db[_0x8ba1('0x23')][_0x8ba1('0x41')](_0x55210c[_0x8ba1('0x3f')],{'transaction':_0x21dc42})[_0x8ba1('0x1d')](function(_0x48e58d){_0x260293=_0x48e58d;var _0x4e766d={'type':db[_0x8ba1('0x44')][_0x8ba1('0x45')],'transaction':_0x21dc42};switch(_0x55210c[_0x8ba1('0x3f')][_0x8ba1('0x35')]){case _0x8ba1('0x46'):_0x4e766d[_0x8ba1('0x35')]=db[_0x8ba1('0x44')]['TEXT'];break;case'number':_0x4e766d[_0x8ba1('0x35')]=db[_0x8ba1('0x44')][_0x8ba1('0x47')];break;case _0x8ba1('0x48'):_0x4e766d[_0x8ba1('0x35')]=db[_0x8ba1('0x44')][_0x8ba1('0x49')];_0x4e766d[_0x8ba1('0x4a')]=![];break;default:}return db['sequelize']['queryInterface'][_0x8ba1('0x4b')](_0x8ba1('0x4c'),util['format'](_0x8ba1('0x4d'),_0x260293['id']),_0x4e766d);})[_0x8ba1('0x1d')](function(){return _0x260293;});})[_0x8ba1('0x1d')](respondWithResult(_0x346af8,0xc9))['catch'](handleError(_0x346af8,null));};
\ No newline at end of file
+var _0x037d=['fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','key','differenceBy','query','filters','attributes','intersection','model','fields','length','hasOwnProperty','order','sort','where','filter','VIRTUAL','merge','options','CmCustomField','include','findAll','rows','catch','show','params','keys','includeAll','find','body','transaction','create','Sequelize','type','text','INTEGER','switch','BOOLEAN','defaultValue','sequelize','queryInterface','cm_contacts','format','cf_%d','eml-format','rimraf','zip-dir'];(function(_0x3aa321,_0x5bcde5){var _0x2bc5a5=function(_0xabb066){while(--_0xabb066){_0x3aa321['push'](_0x3aa321['shift']());}};_0x2bc5a5(++_0x5bcde5);}(_0x037d,0x1ba));var _0xd037=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x037d[_0x2641f9];return _0x585741;};'use strict';var emlformat=require(_0xd037('0x0'));var rimraf=require(_0xd037('0x1'));var zipdir=require(_0xd037('0x2'));var jsonpatch=require(_0xd037('0x3'));var rp=require('request-promise');var moment=require(_0xd037('0x4'));var BPromise=require(_0xd037('0x5'));var Mustache=require(_0xd037('0x6'));var util=require(_0xd037('0x7'));var path=require(_0xd037('0x8'));var sox=require(_0xd037('0x9'));var csv=require('to-csv');var ejs=require(_0xd037('0xa'));var fs=require('fs');var fs_extra=require(_0xd037('0xb'));var _=require(_0xd037('0xc'));var squel=require('squel');var crypto=require(_0xd037('0xd'));var jsforce=require(_0xd037('0xe'));var deskjs=require(_0xd037('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd037('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xd037('0x11'));var qs=require(_0xd037('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd037('0x13'));var logger=require(_0xd037('0x14'))(_0xd037('0x15'));var utils=require(_0xd037('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xd037('0x17'));var db=require(_0xd037('0x18'))['db'];function respondWithStatusCode(_0x5e682d,_0x525192){_0x525192=_0x525192||0xcc;return function(_0x4a35fc){if(_0x4a35fc){return _0x5e682d[_0xd037('0x19')](_0x525192);}return _0x5e682d[_0xd037('0x1a')](_0x525192)[_0xd037('0x1b')]();};}function respondWithResult(_0x13c0cb,_0x2c75e1){_0x2c75e1=_0x2c75e1||0xc8;return function(_0x550cac){if(_0x550cac){return _0x13c0cb[_0xd037('0x1a')](_0x2c75e1)[_0xd037('0x1c')](_0x550cac);}};}function respondWithFilteredResult(_0x3c9710,_0x205369){return function(_0x50cabb){if(_0x50cabb){var _0x4186ad=typeof _0x205369['offset']===_0xd037('0x1d')&&typeof _0x205369[_0xd037('0x1e')]===_0xd037('0x1d');var _0x1d2c5d=_0x50cabb['count'];var _0x272d78=_0x4186ad?0x0:_0x205369['offset'];var _0x134474=_0x4186ad?_0x50cabb[_0xd037('0x1f')]:_0x205369[_0xd037('0x20')]+_0x205369[_0xd037('0x1e')];var _0x1f8db9;if(_0x134474>=_0x1d2c5d){_0x134474=_0x1d2c5d;_0x1f8db9=0xc8;}else{_0x1f8db9=0xce;}_0x3c9710['status'](_0x1f8db9);return _0x3c9710['set'](_0xd037('0x21'),_0x272d78+'-'+_0x134474+'/'+_0x1d2c5d)[_0xd037('0x1c')](_0x50cabb);}return null;};}function patchUpdates(_0x34feb0){return function(_0x50c773){try{jsonpatch[_0xd037('0x22')](_0x50c773,_0x34feb0,!![]);}catch(_0x1798a2){return BPromise[_0xd037('0x23')](_0x1798a2);}return _0x50c773[_0xd037('0x24')]();};}function saveUpdates(_0x19d936,_0xf39ce0){return function(_0x2a9b4b){if(_0x2a9b4b){return _0x2a9b4b['update'](_0x19d936)[_0xd037('0x25')](function(_0x1bd624){return _0x1bd624;});}return null;};}function removeEntity(_0x484e83,_0x62fa65){return function(_0xd2f919){if(_0xd2f919){return _0xd2f919[_0xd037('0x26')]()[_0xd037('0x25')](function(){_0x484e83[_0xd037('0x1a')](0xcc)[_0xd037('0x1b')]();});}};}function handleEntityNotFound(_0x2d8fda,_0x34833e){return function(_0x32164f){if(!_0x32164f){_0x2d8fda[_0xd037('0x19')](0x194);}return _0x32164f;};}function handleError(_0x2fd737,_0x4ad7cf){_0x4ad7cf=_0x4ad7cf||0x1f4;return function(_0x1bcb31){logger[_0xd037('0x27')](_0x1bcb31[_0xd037('0x28')]);if(_0x1bcb31[_0xd037('0x29')]){delete _0x1bcb31[_0xd037('0x29')];}_0x2fd737[_0xd037('0x1a')](_0x4ad7cf)[_0xd037('0x2a')](_0x1bcb31);};}exports[_0xd037('0x2b')]=function(_0x234bcd,_0x36109d){var _0x40b7d9={},_0x27955a={},_0x2f0b38={'count':0x0,'rows':[]};var _0x260e1c=_[_0xd037('0x2c')](db['CmCustomField'][_0xd037('0x2d')],function(_0x7e6dce){return{'name':_0x7e6dce[_0xd037('0x2e')],'type':_0x7e6dce['type'][_0xd037('0x2f')]};});_0x27955a['model']=_[_0xd037('0x30')](_[_0xd037('0x2c')](_0x260e1c,_0xd037('0x29')),[_0xd037('0x29')]);_0x27955a[_0xd037('0x31')]=_['keys'](_0x234bcd[_0xd037('0x31')]);_0x27955a[_0xd037('0x32')]=_['intersection'](_0x27955a['model'],_0x27955a[_0xd037('0x31')]);_0x40b7d9[_0xd037('0x33')]=_[_0xd037('0x34')](_0x27955a[_0xd037('0x35')],qs[_0xd037('0x36')](_0x234bcd[_0xd037('0x31')][_0xd037('0x36')]));_0x40b7d9['attributes']=_0x40b7d9[_0xd037('0x33')][_0xd037('0x37')]?_0x40b7d9['attributes']:_0x27955a[_0xd037('0x35')];if(!_0x234bcd[_0xd037('0x31')][_0xd037('0x38')]('nolimit')){_0x40b7d9[_0xd037('0x1e')]=qs['limit'](_0x234bcd[_0xd037('0x31')][_0xd037('0x1e')]);_0x40b7d9[_0xd037('0x20')]=qs[_0xd037('0x20')](_0x234bcd[_0xd037('0x31')][_0xd037('0x20')]);}_0x40b7d9[_0xd037('0x39')]=qs[_0xd037('0x3a')](_0x234bcd[_0xd037('0x31')][_0xd037('0x3a')]);_0x40b7d9[_0xd037('0x3b')]=qs[_0xd037('0x32')](_['pick'](_0x234bcd[_0xd037('0x31')],_0x27955a['filters']),_0x260e1c);if(_0x234bcd['query'][_0xd037('0x3c')]){_0x40b7d9[_0xd037('0x3b')]=_['merge'](_0x40b7d9['where'],{'$or':_['map'](_0x260e1c,function(_0x359b25){if(_0x359b25['type']!==_0xd037('0x3d')){var _0x48351a={};_0x48351a[_0x359b25[_0xd037('0x29')]]={'$like':'%'+_0x234bcd[_0xd037('0x31')][_0xd037('0x3c')]+'%'};return _0x48351a;}})});}_0x40b7d9=_[_0xd037('0x3e')]({},_0x40b7d9,_0x234bcd[_0xd037('0x3f')]);var _0x3191ea={'where':_0x40b7d9[_0xd037('0x3b')]};return db[_0xd037('0x40')]['count'](_0x3191ea)['then'](function(_0x4dea12){_0x2f0b38[_0xd037('0x1f')]=_0x4dea12;if(_0x234bcd[_0xd037('0x31')]['includeAll']){_0x40b7d9[_0xd037('0x41')]=[{'all':!![]}];}return db[_0xd037('0x40')][_0xd037('0x42')](_0x40b7d9);})['then'](function(_0x3fe0b2){_0x2f0b38[_0xd037('0x43')]=_0x3fe0b2;return _0x2f0b38;})[_0xd037('0x25')](respondWithFilteredResult(_0x36109d,_0x40b7d9))[_0xd037('0x44')](handleError(_0x36109d,null));};exports[_0xd037('0x45')]=function(_0x1644a8,_0x76537d){var _0x92f401={'raw':!![],'where':{'id':_0x1644a8[_0xd037('0x46')]['id']}},_0x5ba28d={};_0x5ba28d[_0xd037('0x35')]=_[_0xd037('0x47')](db[_0xd037('0x40')][_0xd037('0x2d')]);_0x5ba28d[_0xd037('0x31')]=_[_0xd037('0x47')](_0x1644a8['query']);_0x5ba28d['filters']=_[_0xd037('0x34')](_0x5ba28d[_0xd037('0x35')],_0x5ba28d[_0xd037('0x31')]);_0x92f401['attributes']=_[_0xd037('0x34')](_0x5ba28d[_0xd037('0x35')],qs[_0xd037('0x36')](_0x1644a8[_0xd037('0x31')][_0xd037('0x36')]));_0x92f401[_0xd037('0x33')]=_0x92f401[_0xd037('0x33')][_0xd037('0x37')]?_0x92f401[_0xd037('0x33')]:_0x5ba28d[_0xd037('0x35')];if(_0x1644a8[_0xd037('0x31')][_0xd037('0x48')]){_0x92f401['include']=[{'all':!![]}];}_0x92f401=_[_0xd037('0x3e')]({},_0x92f401,_0x1644a8[_0xd037('0x3f')]);return db[_0xd037('0x40')][_0xd037('0x49')](_0x92f401)[_0xd037('0x25')](handleEntityNotFound(_0x76537d,null))[_0xd037('0x25')](respondWithResult(_0x76537d,null))[_0xd037('0x44')](handleError(_0x76537d,null));};exports['update']=function(_0x5b55d9,_0x1b4364){if(_0x5b55d9[_0xd037('0x4a')]['id']){delete _0x5b55d9['body']['id'];}return db['CmCustomField'][_0xd037('0x49')]({'where':{'id':_0x5b55d9[_0xd037('0x46')]['id']}})[_0xd037('0x25')](handleEntityNotFound(_0x1b4364,null))['then'](saveUpdates(_0x5b55d9[_0xd037('0x4a')],null))['then'](respondWithResult(_0x1b4364,null))[_0xd037('0x44')](handleError(_0x1b4364,null));};exports['destroy']=function(_0x3e2345,_0x3e3545){return db[_0xd037('0x40')][_0xd037('0x49')]({'where':{'id':_0x3e2345['params']['id']}})[_0xd037('0x25')](handleEntityNotFound(_0x3e3545,null))[_0xd037('0x25')](removeEntity(_0x3e3545,null))[_0xd037('0x44')](handleError(_0x3e3545,null));};exports['create']=function(_0x16a33f,_0x2eb9b5){var _0x4bd82c;return db['sequelize'][_0xd037('0x4b')](function(_0x33c837){return db[_0xd037('0x40')][_0xd037('0x4c')](_0x16a33f['body'],{'transaction':_0x33c837})[_0xd037('0x25')](function(_0x3ebb03){_0x4bd82c=_0x3ebb03;var _0x5c714d={'type':db[_0xd037('0x4d')]['TEXT'],'transaction':_0x33c837};switch(_0x16a33f['body'][_0xd037('0x4e')]){case _0xd037('0x4f'):_0x5c714d[_0xd037('0x4e')]=db[_0xd037('0x4d')]['TEXT'];break;case'number':_0x5c714d[_0xd037('0x4e')]=db['Sequelize'][_0xd037('0x50')];break;case _0xd037('0x51'):_0x5c714d[_0xd037('0x4e')]=db['Sequelize'][_0xd037('0x52')];_0x5c714d[_0xd037('0x53')]=![];break;default:}return db[_0xd037('0x54')][_0xd037('0x55')]['addColumn'](_0xd037('0x56'),util[_0xd037('0x57')](_0xd037('0x58'),_0x4bd82c['id']),_0x5c714d);})[_0xd037('0x25')](function(){return _0x4bd82c;});})['then'](respondWithResult(_0x2eb9b5,0xc9))['catch'](handleError(_0x2eb9b5,null));};
\ No newline at end of file
index ba39d50..fd7abcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc27c=['../../config/logger','api','moment','request-promise','rimraf','define','CmCustomField','cm_custom_fields','lodash','util'];(function(_0x4d262a,_0x39c4bc){var _0x39783c=function(_0x4a6633){while(--_0x4a6633){_0x4d262a['push'](_0x4d262a['shift']());}};_0x39783c(++_0x39c4bc);}(_0xc27c,0xe4));var _0xcc27=function(_0x4c406c,_0x1af245){_0x4c406c=_0x4c406c-0x0;var _0x112de4=_0xc27c[_0x4c406c];return _0x112de4;};'use strict';var _=require(_0xcc27('0x0'));var util=require(_0xcc27('0x1'));var logger=require(_0xcc27('0x2'))(_0xcc27('0x3'));var moment=require(_0xcc27('0x4'));var BPromise=require('bluebird');var rp=require(_0xcc27('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcc27('0x6'));var config=require('../../config/environment');var attributes=require('./cmCustomField.attributes');module['exports']=function(_0x49d514,_0x459d4f){return _0x49d514[_0xcc27('0x7')](_0xcc27('0x8'),attributes,{'tableName':_0xcc27('0x9'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1e47=['rimraf','../../config/environment','./cmCustomField.attributes','exports','define','cm_custom_fields','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x34c8ff,_0x674110){var _0x42601c=function(_0x3e2ce5){while(--_0x3e2ce5){_0x34c8ff['push'](_0x34c8ff['shift']());}};_0x42601c(++_0x674110);}(_0x1e47,0x17f));var _0x71e4=function(_0x479fc0,_0x78906c){_0x479fc0=_0x479fc0-0x0;var _0x361c18=_0x1e47[_0x479fc0];return _0x361c18;};'use strict';var _=require(_0x71e4('0x0'));var util=require(_0x71e4('0x1'));var logger=require('../../config/logger')(_0x71e4('0x2'));var moment=require(_0x71e4('0x3'));var BPromise=require(_0x71e4('0x4'));var rp=require(_0x71e4('0x5'));var fs=require('fs');var path=require(_0x71e4('0x6'));var rimraf=require(_0x71e4('0x7'));var config=require(_0x71e4('0x8'));var attributes=require(_0x71e4('0x9'));module[_0x71e4('0xa')]=function(_0x4d7876,_0x12b7f9){return _0x4d7876[_0x71e4('0xb')]('CmCustomField',attributes,{'tableName':_0x71e4('0xc'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9e00ffa..3ec8e27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb81a=['then','info','CmCustomField,\x20%s,\x20%s','CmCustomField,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request'];(function(_0x4b7b69,_0x3ab075){var _0x173b4c=function(_0x234d5f){while(--_0x234d5f){_0x4b7b69['push'](_0x4b7b69['shift']());}};_0x173b4c(++_0x3ab075);}(_0xb81a,0x16a));var _0xab81=function(_0x359699,_0x1ec651){_0x359699=_0x359699-0x0;var _0x2bfde3=_0xb81a[_0x359699];return _0x2bfde3;};'use strict';var _=require(_0xab81('0x0'));var util=require(_0xab81('0x1'));var moment=require(_0xab81('0x2'));var BPromise=require(_0xab81('0x3'));var rs=require(_0xab81('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xab81('0x5'))['db'];var utils=require(_0xab81('0x6'));var logger=require(_0xab81('0x7'))(_0xab81('0x8'));var config=require('../../config/environment');var jayson=require(_0xab81('0x9'));var client=jayson[_0xab81('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3ca5f2,_0x5542eb,_0x5ba916){return new BPromise(function(_0x10ee09,_0x54fdc1){return client[_0xab81('0xb')](_0x3ca5f2,_0x5ba916)[_0xab81('0xc')](function(_0x534178){logger[_0xab81('0xd')](_0xab81('0xe'),_0x5542eb,'request\x20sent');logger['debug'](_0xab81('0xf'),_0x5542eb,'request\x20sent',JSON['stringify'](_0x534178));if(_0x534178['error']){if(_0x534178[_0xab81('0x10')][_0xab81('0x11')]===0x1f4){logger[_0xab81('0x10')](_0xab81('0xe'),_0x5542eb,_0x534178[_0xab81('0x10')][_0xab81('0x12')]);return _0x54fdc1(_0x534178[_0xab81('0x10')]['message']);}logger[_0xab81('0x10')](_0xab81('0xe'),_0x5542eb,_0x534178['error'][_0xab81('0x12')]);return _0x10ee09(_0x534178[_0xab81('0x10')][_0xab81('0x12')]);}else{logger['info'](_0xab81('0xe'),_0x5542eb,_0xab81('0x13'));_0x10ee09(_0x534178[_0xab81('0x14')][_0xab81('0x12')]);}})[_0xab81('0x15')](function(_0x53b159){logger[_0xab81('0x10')]('CmCustomField,\x20%s,\x20%s',_0x5542eb,_0x53b159);_0x54fdc1(_0x53b159);});});}
\ No newline at end of file
+var _0x7e69=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','moment','bluebird','randomstring'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x7e69,0x164));var _0x97e6=function(_0x32f850,_0x6ba444){_0x32f850=_0x32f850-0x0;var _0x38e424=_0x7e69[_0x32f850];return _0x38e424;};'use strict';var _=require(_0x97e6('0x0'));var util=require('util');var moment=require(_0x97e6('0x1'));var BPromise=require(_0x97e6('0x2'));var rs=require(_0x97e6('0x3'));var fs=require('fs');var Redis=require(_0x97e6('0x4'));var db=require(_0x97e6('0x5'))['db'];var utils=require(_0x97e6('0x6'));var logger=require(_0x97e6('0x7'))(_0x97e6('0x8'));var config=require(_0x97e6('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x97e6('0xa')][_0x97e6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x263eb7,_0x2da56d,_0x3283c1){return new BPromise(function(_0x52dce1,_0x4f26bf){return client[_0x97e6('0xc')](_0x263eb7,_0x3283c1)[_0x97e6('0xd')](function(_0x5007b5){logger[_0x97e6('0xe')](_0x97e6('0xf'),_0x2da56d,_0x97e6('0x10'));logger[_0x97e6('0x11')](_0x97e6('0x12'),_0x2da56d,'request\x20sent',JSON[_0x97e6('0x13')](_0x5007b5));if(_0x5007b5[_0x97e6('0x14')]){if(_0x5007b5[_0x97e6('0x14')][_0x97e6('0x15')]===0x1f4){logger['error'](_0x97e6('0xf'),_0x2da56d,_0x5007b5[_0x97e6('0x14')][_0x97e6('0x16')]);return _0x4f26bf(_0x5007b5['error'][_0x97e6('0x16')]);}logger[_0x97e6('0x14')](_0x97e6('0xf'),_0x2da56d,_0x5007b5['error'][_0x97e6('0x16')]);return _0x52dce1(_0x5007b5[_0x97e6('0x14')][_0x97e6('0x16')]);}else{logger[_0x97e6('0xe')]('CmCustomField,\x20%s,\x20%s',_0x2da56d,_0x97e6('0x10'));_0x52dce1(_0x5007b5['result'][_0x97e6('0x16')]);}})[_0x97e6('0x17')](function(_0x1b8e44){logger['error'](_0x97e6('0xf'),_0x2da56d,_0x1b8e44);_0x4f26bf(_0x1b8e44);});});}
\ No newline at end of file
index dbb3ff4..69d5629 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea98=['Router','fs-extra','../../components/auth/service','../../config/environment','./cmCustomField.controller','get','isAuthenticated','index','show','post','create','/:id','update','delete','destroy','exports','multer','util','path','express'];(function(_0x801bdb,_0x261b61){var _0xfe915c=function(_0x5ad212){while(--_0x5ad212){_0x801bdb['push'](_0x801bdb['shift']());}};_0xfe915c(++_0x261b61);}(_0xea98,0xd8));var _0x8ea9=function(_0x10b6b0,_0x2d26ad){_0x10b6b0=_0x10b6b0-0x0;var _0xb1ff29=_0xea98[_0x10b6b0];return _0xb1ff29;};'use strict';var multer=require(_0x8ea9('0x0'));var util=require(_0x8ea9('0x1'));var path=require(_0x8ea9('0x2'));var timeout=require('connect-timeout');var express=require(_0x8ea9('0x3'));var router=express[_0x8ea9('0x4')]();var fs_extra=require(_0x8ea9('0x5'));var auth=require(_0x8ea9('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8ea9('0x7'));var controller=require(_0x8ea9('0x8'));router[_0x8ea9('0x9')]('/',auth[_0x8ea9('0xa')](),controller[_0x8ea9('0xb')]);router[_0x8ea9('0x9')]('/:id',auth[_0x8ea9('0xa')](),controller[_0x8ea9('0xc')]);router[_0x8ea9('0xd')]('/',auth[_0x8ea9('0xa')](),controller[_0x8ea9('0xe')]);router['put'](_0x8ea9('0xf'),auth[_0x8ea9('0xa')](),controller[_0x8ea9('0x10')]);router[_0x8ea9('0x11')](_0x8ea9('0xf'),auth[_0x8ea9('0xa')](),controller[_0x8ea9('0x12')]);module[_0x8ea9('0x13')]=router;
\ No newline at end of file
+var _0x6f76=['../../components/interaction/service','./cmCustomField.controller','get','isAuthenticated','index','/:id','create','put','update','destroy','multer','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x18e453,_0x47dbcb){var _0x310615=function(_0x2df0fa){while(--_0x2df0fa){_0x18e453['push'](_0x18e453['shift']());}};_0x310615(++_0x47dbcb);}(_0x6f76,0x14a));var _0x66f7=function(_0x205e45,_0x5b2eb6){_0x205e45=_0x205e45-0x0;var _0x126f6a=_0x6f76[_0x205e45];return _0x126f6a;};'use strict';var multer=require(_0x66f7('0x0'));var util=require('util');var path=require(_0x66f7('0x1'));var timeout=require('connect-timeout');var express=require(_0x66f7('0x2'));var router=express[_0x66f7('0x3')]();var fs_extra=require(_0x66f7('0x4'));var auth=require(_0x66f7('0x5'));var interaction=require(_0x66f7('0x6'));var config=require('../../config/environment');var controller=require(_0x66f7('0x7'));router[_0x66f7('0x8')]('/',auth[_0x66f7('0x9')](),controller[_0x66f7('0xa')]);router[_0x66f7('0x8')](_0x66f7('0xb'),auth[_0x66f7('0x9')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x66f7('0xc')]);router[_0x66f7('0xd')](_0x66f7('0xb'),auth[_0x66f7('0x9')](),controller[_0x66f7('0xe')]);router['delete']('/:id',auth[_0x66f7('0x9')](),controller[_0x66f7('0xf')]);module['exports']=router;
\ No newline at end of file
index 0e5cc40..c5a11d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56b1=['exports','STRING','BOOLEAN','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','DATE','UNSIGNED','contactListQueue','moment','sequelize'];(function(_0x599c94,_0x464f0e){var _0x34e215=function(_0x36295a){while(--_0x36295a){_0x599c94['push'](_0x599c94['shift']());}};_0x34e215(++_0x464f0e);}(_0x56b1,0xc4));var _0x156b=function(_0x247b17,_0x168cba){_0x247b17=_0x247b17-0x0;var _0x4b9f53=_0x56b1[_0x247b17];return _0x4b9f53;};'use strict';var moment=require(_0x156b('0x0'));var Sequelize=require(_0x156b('0x1'));module[_0x156b('0x2')]={'phone':{'type':Sequelize[_0x156b('0x3')],'allowNull':![]},'active':{'type':Sequelize[_0x156b('0x4')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x156b('0x5')](_0x156b('0x6'))},'countbusyretry':{'type':Sequelize[_0x156b('0x7')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x156b('0x7')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x156b('0x7')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x156b('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x156b('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x156b('0x8')]},'priority':{'type':Sequelize[_0x156b('0x7')](0x2)[_0x156b('0x9')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x156b('0x4')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x156b('0xa')},'ListId':{'type':Sequelize[_0x156b('0x7')],'unique':'contactListQueue'},'UserId':{'type':Sequelize[_0x156b('0x7')]},'VoiceQueueId':{'type':Sequelize[_0x156b('0x7')],'unique':'contactListQueue'},'CampaignId':{'type':Sequelize['INTEGER']},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x156b('0x7')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x156b('0x7')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x156b('0x7')],'defaultValue':0x0},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x156b('0x3')]},'recallmeNotifiedDate':{'type':Sequelize[_0x156b('0x8')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
+var _0xff37=['BOOLEAN','UNSIGNED','contactListQueue','moment','sequelize','exports','STRING','DATE','YYYY-MM-DD\x20HH:mm:ss','INTEGER'];(function(_0x38831b,_0x4611ea){var _0x5a508a=function(_0x2df441){while(--_0x2df441){_0x38831b['push'](_0x38831b['shift']());}};_0x5a508a(++_0x4611ea);}(_0xff37,0x1c5));var _0x7ff3=function(_0x387dc8,_0x3197cd){_0x387dc8=_0x387dc8-0x0;var _0x561af9=_0xff37[_0x387dc8];return _0x561af9;};'use strict';var moment=require(_0x7ff3('0x0'));var Sequelize=require(_0x7ff3('0x1'));module[_0x7ff3('0x2')]={'phone':{'type':Sequelize[_0x7ff3('0x3')],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x7ff3('0x4')],'defaultValue':moment()['format'](_0x7ff3('0x5'))},'countbusyretry':{'type':Sequelize[_0x7ff3('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x7ff3('0x6')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x7ff3('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x7ff3('0x7')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x7ff3('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x7ff3('0x4')]},'priority':{'type':Sequelize[_0x7ff3('0x6')](0x2)[_0x7ff3('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x7ff3('0x9')},'ListId':{'type':Sequelize[_0x7ff3('0x6')],'unique':_0x7ff3('0x9')},'UserId':{'type':Sequelize[_0x7ff3('0x6')]},'VoiceQueueId':{'type':Sequelize[_0x7ff3('0x6')],'unique':_0x7ff3('0x9')},'CampaignId':{'type':Sequelize[_0x7ff3('0x6')]},'countnosuchnumberretry':{'type':Sequelize[_0x7ff3('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x7ff3('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x7ff3('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x7ff3('0x3')]},'recallmeNotifiedDate':{'type':Sequelize[_0x7ff3('0x4')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
index d1de811..5bd8bbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5577=['Campaign','omit','createdAt','updatedAt','state','statedesc','deleted','membername','user','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','CmContact','lastName','isNil','firstName','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','end','getPreview','getVoiceQueues','outbound','preview','dialPreviewAutoRecallMe','length','sequelize','transaction','value','direction','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','COALESCE(CmHopper.UserId,\x200)\x20ASC','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','UPDATE','CmCompany','Company','List','Queue','dialActive','LOCK','Contact','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','getTimezones','push','utcOffset','getTimezone','timezones','moment','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','status','offset','undefined','limit','count','set','Content-Range','json','update','then','sendStatus','error','stack','name','CmHopper','rawAttributes','fieldName','key','model','map','query','intersection','filters','concat','$and','$or','$gt','$lt','$ne','$not','$between','$notBetween','$in','$like','$iLike','$notILike','$contains','$contained','$any','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','rows','params','keys','include','find','create','body','catch','describe','destroy','VoiceQueueId','CampaignId','VoiceQueue'];(function(_0x4b73a2,_0x40b5fe){var _0x383c66=function(_0x3917ae){while(--_0x3917ae){_0x4b73a2['push'](_0x4b73a2['shift']());}};_0x383c66(++_0x40b5fe);}(_0x5577,0x1b4));var _0x7557=function(_0x5b1696,_0xb76345){_0x5b1696=_0x5b1696-0x0;var _0x3ecd3e=_0x5577[_0x5b1696];return _0x3ecd3e;};'use strict';var moment=require(_0x7557('0x0'));var _=require('lodash');var qs=require(_0x7557('0x1'));var logger=require(_0x7557('0x2'))('api');var shared=require(_0x7557('0x3'));var db=require(_0x7557('0x4'))['db'];function respondWithResult(_0x25c0da,_0x3c4697){_0x3c4697=_0x3c4697||0xc8;return function(_0x1274d5){if(_0x1274d5){return _0x25c0da[_0x7557('0x5')](_0x3c4697)['json'](_0x1274d5);}};}function respondWithFilteredResult(_0x7bb8c,_0x41a4a5){return function(_0x3da895){if(_0x3da895){var _0x1446fd=typeof _0x41a4a5[_0x7557('0x6')]===_0x7557('0x7')&&typeof _0x41a4a5[_0x7557('0x8')]===_0x7557('0x7');var _0x166f43=_0x3da895[_0x7557('0x9')];var _0x98b346=_0x1446fd?0x0:_0x41a4a5[_0x7557('0x6')];var _0x3c7986=_0x1446fd?_0x3da895[_0x7557('0x9')]:_0x41a4a5[_0x7557('0x6')]+_0x41a4a5['limit'];var _0x4d92d9;if(_0x3c7986>=_0x166f43){_0x3c7986=_0x166f43;_0x4d92d9=0xc8;}else{_0x4d92d9=0xce;}_0x7bb8c[_0x7557('0x5')](_0x4d92d9);return _0x7bb8c[_0x7557('0xa')](_0x7557('0xb'),_0x98b346+'-'+_0x3c7986+'/'+_0x166f43)[_0x7557('0xc')](_0x3da895);}return null;};}function saveUpdates(_0xb6ed30,_0x467ac5){return function(_0x156ac1){if(_0x156ac1){return _0x156ac1[_0x7557('0xd')](_0xb6ed30)[_0x7557('0xe')](function(_0x926138){return _0x926138;});}return null;};}function handleEntityNotFound(_0x5468df,_0x276031){return function(_0x3fb7a6){if(!_0x3fb7a6){_0x5468df[_0x7557('0xf')](0x194);}return _0x3fb7a6;};}function handleError(_0x519549,_0x3ad3a1){_0x3ad3a1=_0x3ad3a1||0x1f4;return function(_0x3c3953){logger[_0x7557('0x10')](_0x3c3953[_0x7557('0x11')]);if(_0x3c3953['name']){delete _0x3c3953[_0x7557('0x12')];}_0x519549[_0x7557('0x5')](_0x3ad3a1)['send'](_0x3c3953);};}exports['index']=function(_0x41b3db,_0x11f186){var _0x10edc3={},_0x40a81b={},_0x5c1774={'count':0x0,'rows':[]};var _0x16bb9b=_['map'](db[_0x7557('0x13')][_0x7557('0x14')],function(_0x1515ea){return{'name':_0x1515ea[_0x7557('0x15')],'type':_0x1515ea['type'][_0x7557('0x16')]};});_0x40a81b[_0x7557('0x17')]=_[_0x7557('0x18')](_0x16bb9b,_0x7557('0x12'));_0x40a81b[_0x7557('0x19')]=_['keys'](_0x41b3db['query']);_0x40a81b['filters']=_[_0x7557('0x1a')](_0x40a81b['model'],_0x40a81b[_0x7557('0x19')]);_0x40a81b[_0x7557('0x1b')]=_[_0x7557('0x1c')](_0x40a81b[_0x7557('0x1b')],[_0x7557('0x1d'),_0x7557('0x1e'),_0x7557('0x1f'),'$gte',_0x7557('0x20'),'$lte',_0x7557('0x21'),'$eq',_0x7557('0x22'),_0x7557('0x23'),_0x7557('0x24'),_0x7557('0x25'),'$notIn',_0x7557('0x26'),'$notLike',_0x7557('0x27'),_0x7557('0x28'),_0x7557('0x26'),'$overlap',_0x7557('0x29'),_0x7557('0x2a'),_0x7557('0x2b')]);_0x10edc3[_0x7557('0x2c')]=_[_0x7557('0x1a')](_0x40a81b[_0x7557('0x17')],qs['fields'](_0x41b3db[_0x7557('0x19')][_0x7557('0x2d')]));_0x10edc3[_0x7557('0x2c')]=_0x10edc3[_0x7557('0x2c')]['length']?_0x10edc3[_0x7557('0x2c')]:_0x40a81b[_0x7557('0x17')];if(!_0x41b3db[_0x7557('0x19')][_0x7557('0x2e')](_0x7557('0x2f'))){_0x10edc3[_0x7557('0x8')]=qs[_0x7557('0x8')](_0x41b3db[_0x7557('0x19')][_0x7557('0x8')]);_0x10edc3[_0x7557('0x6')]=qs[_0x7557('0x6')](_0x41b3db[_0x7557('0x19')][_0x7557('0x6')]);}_0x10edc3[_0x7557('0x30')]=qs[_0x7557('0x31')](_0x41b3db[_0x7557('0x19')][_0x7557('0x31')]);_0x10edc3[_0x7557('0x32')]=qs[_0x7557('0x1b')](_[_0x7557('0x33')](_0x41b3db[_0x7557('0x19')],_0x40a81b[_0x7557('0x1b')]),_0x16bb9b);if(_0x41b3db['query'][_0x7557('0x34')]){_0x10edc3['where']=_['merge'](_0x10edc3[_0x7557('0x32')],{'$or':_['map'](_0x16bb9b,function(_0x24dd31){if(_0x24dd31['type']!=='VIRTUAL'){var _0x2eaeaa={};_0x2eaeaa[_0x24dd31[_0x7557('0x12')]]={'$like':'%'+_0x41b3db[_0x7557('0x19')]['filter']+'%'};return _0x2eaeaa;}})});}_0x10edc3=_[_0x7557('0x35')]({},_0x10edc3,_0x41b3db[_0x7557('0x36')]);var _0x239454={'where':_0x10edc3[_0x7557('0x32')]};return db[_0x7557('0x13')][_0x7557('0x9')](_0x239454)[_0x7557('0xe')](function(_0x32c22b){_0x5c1774['count']=_0x32c22b;if(_0x41b3db['query']['includeAll']){_0x10edc3['include']=[{'all':!![]}];}return db['CmHopper']['findAll'](_0x10edc3);})[_0x7557('0xe')](function(_0x2ad88e){_0x5c1774[_0x7557('0x37')]=_0x2ad88e;return _0x5c1774;})[_0x7557('0xe')](respondWithFilteredResult(_0x11f186,_0x10edc3))['catch'](handleError(_0x11f186,null));};exports['show']=function(_0x3c7e08,_0x338d90){var _0x962488={'raw':!![],'where':{'id':_0x3c7e08[_0x7557('0x38')]['id']}},_0x2bd51a={};_0x2bd51a['model']=_[_0x7557('0x39')](db[_0x7557('0x13')][_0x7557('0x14')]);_0x2bd51a[_0x7557('0x19')]=_[_0x7557('0x39')](_0x3c7e08[_0x7557('0x19')]);_0x2bd51a[_0x7557('0x1b')]=_['intersection'](_0x2bd51a[_0x7557('0x17')],_0x2bd51a[_0x7557('0x19')]);_0x962488[_0x7557('0x2c')]=_[_0x7557('0x1a')](_0x2bd51a['model'],qs[_0x7557('0x2d')](_0x3c7e08[_0x7557('0x19')][_0x7557('0x2d')]));_0x962488['attributes']=_0x962488[_0x7557('0x2c')]['length']?_0x962488[_0x7557('0x2c')]:_0x2bd51a['model'];if(_0x3c7e08[_0x7557('0x19')]['includeAll']){_0x962488[_0x7557('0x3a')]=[{'all':!![]}];}_0x962488=_[_0x7557('0x35')]({},_0x962488,_0x3c7e08[_0x7557('0x36')]);return db[_0x7557('0x13')][_0x7557('0x3b')](_0x962488)[_0x7557('0xe')](handleEntityNotFound(_0x338d90,null))['then'](respondWithResult(_0x338d90,null))['catch'](handleError(_0x338d90,null));};exports['create']=function(_0x2a4188,_0x3dee0c){return db[_0x7557('0x13')][_0x7557('0x3c')](_0x2a4188[_0x7557('0x3d')],{})['then'](respondWithResult(_0x3dee0c,0xc9))[_0x7557('0x3e')](handleError(_0x3dee0c,null));};exports['update']=function(_0x3e86e8,_0x321d62){if(_0x3e86e8[_0x7557('0x3d')]['id']){delete _0x3e86e8[_0x7557('0x3d')]['id'];}return db[_0x7557('0x13')][_0x7557('0x3b')]({'where':{'id':_0x3e86e8[_0x7557('0x38')]['id']}})[_0x7557('0xe')](handleEntityNotFound(_0x321d62,null))['then'](saveUpdates(_0x3e86e8[_0x7557('0x3d')],null))[_0x7557('0xe')](respondWithResult(_0x321d62,null))[_0x7557('0x3e')](handleError(_0x321d62,null));};exports['describe']=function(_0xb25031,_0x5cad65){return db['CmHopper'][_0x7557('0x3f')]()[_0x7557('0xe')](respondWithResult(_0x5cad65,null))[_0x7557('0x3e')](handleError(_0x5cad65,null));};exports[_0x7557('0x40')]=function(_0x3683c9,_0x4d9b43){var _0x2b8a99;var _0x23468c=_0x3683c9[_0x7557('0x38')]['id'];return db[_0x7557('0x13')][_0x7557('0x3b')]({'where':{'id':_0x3683c9[_0x7557('0x38')]['id']}})[_0x7557('0xe')](handleEntityNotFound(_0x4d9b43,null))['then'](function(_0x4e7f2c){if(_0x4e7f2c){return _0x4e7f2c['destroy']()['then'](function(_0x2b85c5){return _0x2b85c5;});}})[_0x7557('0xe')](function(_0x3212c7){_0x2b8a99=_0x3212c7;if(_0x3212c7){if(_0x3212c7[_0x7557('0x41')]||_0x3212c7[_0x7557('0x42')]){return db[_0x3212c7[_0x7557('0x41')]?_0x7557('0x43'):_0x7557('0x44')]['find']({'where':{'id':_0x3212c7[_0x7557('0x41')]?_0x3212c7[_0x7557('0x41')]:_0x3212c7['CampaignId']},'attributes':['id',_0x7557('0x12')],'raw':!![]});}}})['then'](function(_0x121057){var _0x5bc7f8={};if(_0x121057){_[_0x7557('0x35')](_0x5bc7f8,_[_0x7557('0x45')](_0x2b8a99['dataValues'],[_0x7557('0x46'),_0x7557('0x47'),'id']));_0x5bc7f8[_0x7557('0x48')]=0x15;_0x5bc7f8[_0x7557('0x49')]=_0x7557('0x4a');_0x5bc7f8['campaign']=_0x121057[_0x7557('0x12')];_0x5bc7f8[_0x7557('0x4b')]=_0x3683c9[_0x7557('0x4c')][_0x7557('0x12')];_0x5bc7f8['UserId']=_0x3683c9['user']['id'];_0x5bc7f8[_0x7557('0x4a')]=!![];_0x5bc7f8['deletedat']=moment()[_0x7557('0x4d')](_0x7557('0x4e'));_0x5bc7f8[_0x7557('0x4f')]=_0x2b8a99[_0x7557('0x50')];_0x5bc7f8['campaigntype']=_0x2b8a99[_0x7557('0x41')]?'queue':'ivr';return db[_0x7557('0x51')][_0x7557('0x3b')]({'where':{'id':_0x5bc7f8['ContactId']},'attributes':['firstName',_0x7557('0x52')]})[_0x7557('0xe')](function(_0x2109f7){if(!_[_0x7557('0x53')](_0x4d9b43)&&!_[_0x7557('0x53')](_0x2109f7[_0x7557('0x54')])){_0x5bc7f8['calleridname']=_0x2109f7['firstName'];if(!_['isNil'](_0x2109f7[_0x7557('0x52')])){_0x5bc7f8[_0x7557('0x55')]+='\x20'+_0x2109f7[_0x7557('0x52')];}}})[_0x7557('0x56')](function(){return db[_0x7557('0x57')][_0x7557('0x3c')](_0x5bc7f8);});}})['then'](function(_0x211467){return db[_0x7557('0x58')][_0x7557('0x40')]({'where':{'CmHopperId':_0x23468c}});})[_0x7557('0xe')](function(){return _0x4d9b43[_0x7557('0x5')](0xcc)[_0x7557('0x59')]();})[_0x7557('0x3e')](handleError(_0x4d9b43,null));};exports[_0x7557('0x5a')]=function(_0x558cf0,_0x586645){var _0x17fa97=[];return db['CmContact'][_0x7557('0x3f')]()[_0x7557('0xe')](function(_0x5c2d0d){_0x17fa97=_['keys'](_0x5c2d0d);return _0x558cf0['user'][_0x7557('0x5b')]({'where':{'type':_0x7557('0x5c'),'dialActive':!![],'dialMethod':_0x7557('0x5d')},'attributes':['id','dialOrderByScheduledAt',_0x7557('0x5e')],'raw':!![]});})[_0x7557('0xe')](function(_0x5df751){if(_0x5df751&&_0x5df751[_0x7557('0x5f')]){return db[_0x7557('0x60')][_0x7557('0x61')](function(_0x10b7d8){var _0x5df5dd={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x7557('0x4d')](_0x7557('0x4e'))},'VoiceQueueId':{'$in':_[_0x7557('0x18')](_0x5df751,'id')},'$or':[{'UserId':null},{'UserId':_0x558cf0['user']['id']}]};var _0x576665={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x5df751)['filter']([_0x7557('0x5e'),0x0])[_0x7557('0x18')]('id')[_0x7557('0x62')]()},'$or':[{'UserId':null},{'UserId':_0x558cf0[_0x7557('0x4c')]['id']}]};var _0x5e333c={'$or':[_0x5df5dd,_0x576665]};var _0xec14bb=[];if(_0x558cf0[_0x7557('0x3d')][_0x7557('0x63')]&&_0x558cf0[_0x7557('0x3d')][_0x7557('0x63')]==='prev'){if(!_[_0x7557('0x64')](_0x558cf0[_0x7557('0x3d')]['hopperIds'])){_0x5e333c['id']={'$in':_0x558cf0[_0x7557('0x3d')][_0x7557('0x65')]};}_0xec14bb=[[_0x7557('0x66'),_0x7557('0x67')],[_0x7557('0x68'),_0x5df751[0x0]['dialOrderByScheduledAt']===_0x7557('0x67')?_0x7557('0x69'):_0x7557('0x67')],db[_0x7557('0x60')]['literal'](_0x7557('0x6a')),['id',_0x7557('0x69')]];}else{if(!_[_0x7557('0x64')](_0x558cf0[_0x7557('0x3d')]['hopperIds'])){_0x5e333c['id']={'$notIn':_0x558cf0[_0x7557('0x3d')][_0x7557('0x65')]};}_0xec14bb=[[_0x7557('0x66'),'DESC'],[_0x7557('0x68'),_0x5df751[0x0]['dialOrderByScheduledAt']],db[_0x7557('0x60')][_0x7557('0x6b')](_0x7557('0x6c')),['id',_0x7557('0x67')]];}return db[_0x7557('0x13')][_0x7557('0x6d')]({'attributes':['id',_0x7557('0x6e'),'phone','recallme'],'where':_0x5e333c,'order':_0xec14bb,'transaction':_0x10b7d8,'lock':_0x10b7d8['LOCK'][_0x7557('0x6f')],'include':[{'model':db[_0x7557('0x51')],'as':'Contact','attributes':_0x17fa97,'include':[{'model':db[_0x7557('0x70')],'as':_0x7557('0x71'),'attributes':['id',_0x7557('0x12')]}]},{'model':db['CmList'],'as':_0x7557('0x72'),'attributes':['id','name']},{'model':db[_0x7557('0x43')],'as':_0x7557('0x73'),'attributes':['id',_0x7557('0x12'),_0x7557('0x74')]}]})[_0x7557('0xe')](function(_0x359dbe){if(_0x359dbe){return _0x359dbe['update']({'UserId':_0x558cf0['user']['id']},{'transaction':_0x10b7d8});}});});}})[_0x7557('0xe')](handleEntityNotFound(_0x586645,null))[_0x7557('0xe')](respondWithResult(_0x586645,null))[_0x7557('0x3e')](handleError(_0x586645,null));};exports['getPreviewRecall']=function(_0x2437a3,_0x1e6873,_0x4968dd){var _0x5ad6ba=[];var _0x400767=_0x2437a3[_0x7557('0x38')]['id'];var _0x490667=_0x2437a3[_0x7557('0x4c')]['id'];return db['CmContact'][_0x7557('0x3f')]()[_0x7557('0xe')](function(_0x126f7b){_0x5ad6ba=_[_0x7557('0x39')](_0x126f7b);return db[_0x7557('0x60')][_0x7557('0x61')](function(_0x1a03ed){const _0x4c018e={'id':_0x400767};return db['CmHopper'][_0x7557('0x6d')]({'attributes':['id','scheduledat','recallme'],'where':_0x4c018e,'transaction':_0x1a03ed,'lock':_0x1a03ed[_0x7557('0x75')][_0x7557('0x6f')],'include':[{'model':db[_0x7557('0x51')],'as':_0x7557('0x76'),'attributes':_0x5ad6ba,'include':[{'model':db[_0x7557('0x70')],'as':_0x7557('0x71'),'attributes':['id',_0x7557('0x12')]}]},{'model':db['CmList'],'as':_0x7557('0x72'),'attributes':['id',_0x7557('0x12')]},{'model':db[_0x7557('0x43')],'as':'Queue','attributes':['id','name',_0x7557('0x74')]}]})[_0x7557('0xe')](function(_0x41004c){if(_0x41004c){return _0x41004c[_0x7557('0xd')]({'UserId':_0x490667},{'transaction':_0x1a03ed});}});});})[_0x7557('0xe')](handleEntityNotFound(_0x1e6873,null))[_0x7557('0xe')](respondWithResult(_0x1e6873,null))['catch'](handleError(_0x1e6873,null));};exports['getOpenContacts']=function(_0x25107f,_0x27e0f9){return _0x25107f[_0x7557('0x4c')]['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x7557('0x5d')},'attributes':['id'],'raw':!![]})[_0x7557('0xe')](function(_0x18af3){if(_0x18af3&&_0x18af3[_0x7557('0x5f')]){return db[_0x7557('0x13')]['count']({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x7557('0x4d')](_0x7557('0x4e'))},'VoiceQueueId':{'$in':_['map'](_0x18af3,'id')},'$or':[{'UserId':null},{'UserId':_0x25107f[_0x7557('0x4c')]['id']}]}});}return 0x0;})['then'](function(_0x5d981f){if(!_[_0x7557('0x53')](_0x5d981f)&&_['isNumber'](_0x5d981f)){return _0x27e0f9['status'](0xc8)['json']({'contacts':_0x5d981f});}else{logger[_0x7557('0x10')](_0x7557('0x77'),'getOpenContacts',0x194,_0x7557('0x78'));_0x27e0f9['sendStatus'](0x194);}})[_0x7557('0x3e')](handleError(_0x27e0f9,null));};exports[_0x7557('0x79')]=function(_0xba3dcf,_0x46fc3b){var _0x30d952=shared['timezones'];var _0x2886b3=[];_[_0x7557('0x18')](_0x30d952,function(_0xba06bf){_0x2886b3[_0x7557('0x7a')]({'id':_0xba06bf[_0x7557('0x12')],'name':_0xba06bf[_0x7557('0x12')],'utcOffset':_0xba06bf[_0x7557('0x7b')]});});return _0x46fc3b[_0x7557('0x5')](0xc8)[_0x7557('0xc')]({'tz':_0x2886b3});};exports[_0x7557('0x7c')]=function(_0x4fd3e5,_0x34a327){var _0x3df70b=shared[_0x7557('0x7d')];var _0x25935d={};if(!_[_0x7557('0x53')](_0x3df70b[_0x4fd3e5[_0x7557('0x3d')]['id']]))_0x25935d=_0x3df70b[_0x4fd3e5['body']['id']];return _0x34a327['status'](0xc8)[_0x7557('0xc')](_0x25935d);};
\ No newline at end of file
+var _0xcb99=['getPreviewRecall','recallme','Company','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','push','utcOffset','getTimezone','timezones','moment','../../components/parsers/qs','../../config/environment','../../mysqldb','status','offset','undefined','limit','count','json','then','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$notBetween','$in','$notIn','$like','$iLike','$overlap','$contains','$contained','attributes','length','nolimit','sort','where','pick','filter','merge','options','includeAll','CmHopper','findAll','rows','catch','show','params','fields','include','find','create','update','body','describe','VoiceQueueId','VoiceQueue','Campaign','CampaignId','omit','dataValues','createdAt','statedesc','deleted','campaign','membername','UserId','user','format','YYYY-MM-DD\x20HH:mm:ss','queue','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','destroy','end','CmContact','getVoiceQueues','outbound','preview','dialPreviewAutoRecallMe','sequelize','transaction','value','prev','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','COALESCE(CmHopper.UserId,\x200)\x20ASC','findOne','scheduledat','phone','LOCK','UPDATE','Contact','CmCompany','CmList','List','Queue'];(function(_0x5563cd,_0x782b12){var _0x24c0d1=function(_0x25b0ec){while(--_0x25b0ec){_0x5563cd['push'](_0x5563cd['shift']());}};_0x24c0d1(++_0x782b12);}(_0xcb99,0x8b));var _0x9cb9=function(_0x592cea,_0x4e72f1){_0x592cea=_0x592cea-0x0;var _0x1e9cc6=_0xcb99[_0x592cea];return _0x1e9cc6;};'use strict';var moment=require(_0x9cb9('0x0'));var _=require('lodash');var qs=require(_0x9cb9('0x1'));var logger=require('../../config/logger')('api');var shared=require(_0x9cb9('0x2'));var db=require(_0x9cb9('0x3'))['db'];function respondWithResult(_0x124c48,_0x51f2ee){_0x51f2ee=_0x51f2ee||0xc8;return function(_0x167735){if(_0x167735){return _0x124c48[_0x9cb9('0x4')](_0x51f2ee)['json'](_0x167735);}};}function respondWithFilteredResult(_0x214b72,_0x509cfc){return function(_0x2ed26a){if(_0x2ed26a){var _0xa84493=typeof _0x509cfc[_0x9cb9('0x5')]===_0x9cb9('0x6')&&typeof _0x509cfc[_0x9cb9('0x7')]===_0x9cb9('0x6');var _0x106f17=_0x2ed26a[_0x9cb9('0x8')];var _0x48d99a=_0xa84493?0x0:_0x509cfc['offset'];var _0xe6d275=_0xa84493?_0x2ed26a[_0x9cb9('0x8')]:_0x509cfc[_0x9cb9('0x5')]+_0x509cfc['limit'];var _0x3be02c;if(_0xe6d275>=_0x106f17){_0xe6d275=_0x106f17;_0x3be02c=0xc8;}else{_0x3be02c=0xce;}_0x214b72[_0x9cb9('0x4')](_0x3be02c);return _0x214b72['set']('Content-Range',_0x48d99a+'-'+_0xe6d275+'/'+_0x106f17)[_0x9cb9('0x9')](_0x2ed26a);}return null;};}function saveUpdates(_0x2e687e,_0x3382c8){return function(_0x1bcb05){if(_0x1bcb05){return _0x1bcb05['update'](_0x2e687e)[_0x9cb9('0xa')](function(_0x37dc98){return _0x37dc98;});}return null;};}function handleEntityNotFound(_0x3ec500,_0x32352d){return function(_0x18fa1f){if(!_0x18fa1f){_0x3ec500[_0x9cb9('0xb')](0x194);}return _0x18fa1f;};}function handleError(_0xc0bf6,_0x2132be){_0x2132be=_0x2132be||0x1f4;return function(_0x3975a5){logger[_0x9cb9('0xc')](_0x3975a5[_0x9cb9('0xd')]);if(_0x3975a5[_0x9cb9('0xe')]){delete _0x3975a5[_0x9cb9('0xe')];}_0xc0bf6[_0x9cb9('0x4')](_0x2132be)[_0x9cb9('0xf')](_0x3975a5);};}exports[_0x9cb9('0x10')]=function(_0x41e598,_0x5a6fba){var _0x4e89cf={},_0x59fcae={},_0x1a23d3={'count':0x0,'rows':[]};var _0x50169f=_['map'](db['CmHopper'][_0x9cb9('0x11')],function(_0x5b2aa3){return{'name':_0x5b2aa3[_0x9cb9('0x12')],'type':_0x5b2aa3[_0x9cb9('0x13')][_0x9cb9('0x14')]};});_0x59fcae[_0x9cb9('0x15')]=_[_0x9cb9('0x16')](_0x50169f,_0x9cb9('0xe'));_0x59fcae[_0x9cb9('0x17')]=_[_0x9cb9('0x18')](_0x41e598[_0x9cb9('0x17')]);_0x59fcae[_0x9cb9('0x19')]=_[_0x9cb9('0x1a')](_0x59fcae[_0x9cb9('0x15')],_0x59fcae[_0x9cb9('0x17')]);_0x59fcae[_0x9cb9('0x19')]=_['concat'](_0x59fcae['filters'],[_0x9cb9('0x1b'),_0x9cb9('0x1c'),_0x9cb9('0x1d'),_0x9cb9('0x1e'),_0x9cb9('0x1f'),_0x9cb9('0x20'),_0x9cb9('0x21'),_0x9cb9('0x22'),_0x9cb9('0x23'),'$between',_0x9cb9('0x24'),_0x9cb9('0x25'),_0x9cb9('0x26'),_0x9cb9('0x27'),'$notLike',_0x9cb9('0x28'),'$notILike',_0x9cb9('0x27'),_0x9cb9('0x29'),_0x9cb9('0x2a'),_0x9cb9('0x2b'),'$any']);_0x4e89cf[_0x9cb9('0x2c')]=_[_0x9cb9('0x1a')](_0x59fcae[_0x9cb9('0x15')],qs['fields'](_0x41e598[_0x9cb9('0x17')]['fields']));_0x4e89cf[_0x9cb9('0x2c')]=_0x4e89cf[_0x9cb9('0x2c')][_0x9cb9('0x2d')]?_0x4e89cf[_0x9cb9('0x2c')]:_0x59fcae[_0x9cb9('0x15')];if(!_0x41e598[_0x9cb9('0x17')]['hasOwnProperty'](_0x9cb9('0x2e'))){_0x4e89cf[_0x9cb9('0x7')]=qs[_0x9cb9('0x7')](_0x41e598['query']['limit']);_0x4e89cf[_0x9cb9('0x5')]=qs[_0x9cb9('0x5')](_0x41e598[_0x9cb9('0x17')]['offset']);}_0x4e89cf['order']=qs[_0x9cb9('0x2f')](_0x41e598[_0x9cb9('0x17')]['sort']);_0x4e89cf[_0x9cb9('0x30')]=qs[_0x9cb9('0x19')](_[_0x9cb9('0x31')](_0x41e598[_0x9cb9('0x17')],_0x59fcae[_0x9cb9('0x19')]),_0x50169f);if(_0x41e598['query'][_0x9cb9('0x32')]){_0x4e89cf[_0x9cb9('0x30')]=_['merge'](_0x4e89cf[_0x9cb9('0x30')],{'$or':_['map'](_0x50169f,function(_0x1f72b2){if(_0x1f72b2[_0x9cb9('0x13')]!=='VIRTUAL'){var _0x5668c4={};_0x5668c4[_0x1f72b2[_0x9cb9('0xe')]]={'$like':'%'+_0x41e598[_0x9cb9('0x17')][_0x9cb9('0x32')]+'%'};return _0x5668c4;}})});}_0x4e89cf=_[_0x9cb9('0x33')]({},_0x4e89cf,_0x41e598[_0x9cb9('0x34')]);var _0x2dd463={'where':_0x4e89cf[_0x9cb9('0x30')]};return db['CmHopper'][_0x9cb9('0x8')](_0x2dd463)[_0x9cb9('0xa')](function(_0x4496a4){_0x1a23d3[_0x9cb9('0x8')]=_0x4496a4;if(_0x41e598[_0x9cb9('0x17')][_0x9cb9('0x35')]){_0x4e89cf['include']=[{'all':!![]}];}return db[_0x9cb9('0x36')][_0x9cb9('0x37')](_0x4e89cf);})[_0x9cb9('0xa')](function(_0x31f8d7){_0x1a23d3[_0x9cb9('0x38')]=_0x31f8d7;return _0x1a23d3;})[_0x9cb9('0xa')](respondWithFilteredResult(_0x5a6fba,_0x4e89cf))[_0x9cb9('0x39')](handleError(_0x5a6fba,null));};exports[_0x9cb9('0x3a')]=function(_0x481377,_0x597db6){var _0x448113={'raw':!![],'where':{'id':_0x481377[_0x9cb9('0x3b')]['id']}},_0x5c0811={};_0x5c0811['model']=_[_0x9cb9('0x18')](db[_0x9cb9('0x36')][_0x9cb9('0x11')]);_0x5c0811[_0x9cb9('0x17')]=_['keys'](_0x481377[_0x9cb9('0x17')]);_0x5c0811['filters']=_[_0x9cb9('0x1a')](_0x5c0811[_0x9cb9('0x15')],_0x5c0811[_0x9cb9('0x17')]);_0x448113[_0x9cb9('0x2c')]=_[_0x9cb9('0x1a')](_0x5c0811['model'],qs[_0x9cb9('0x3c')](_0x481377[_0x9cb9('0x17')][_0x9cb9('0x3c')]));_0x448113[_0x9cb9('0x2c')]=_0x448113[_0x9cb9('0x2c')][_0x9cb9('0x2d')]?_0x448113[_0x9cb9('0x2c')]:_0x5c0811[_0x9cb9('0x15')];if(_0x481377[_0x9cb9('0x17')]['includeAll']){_0x448113[_0x9cb9('0x3d')]=[{'all':!![]}];}_0x448113=_[_0x9cb9('0x33')]({},_0x448113,_0x481377[_0x9cb9('0x34')]);return db[_0x9cb9('0x36')][_0x9cb9('0x3e')](_0x448113)['then'](handleEntityNotFound(_0x597db6,null))[_0x9cb9('0xa')](respondWithResult(_0x597db6,null))[_0x9cb9('0x39')](handleError(_0x597db6,null));};exports[_0x9cb9('0x3f')]=function(_0x52c295,_0x2813ce){return db[_0x9cb9('0x36')][_0x9cb9('0x3f')](_0x52c295['body'],{})[_0x9cb9('0xa')](respondWithResult(_0x2813ce,0xc9))[_0x9cb9('0x39')](handleError(_0x2813ce,null));};exports[_0x9cb9('0x40')]=function(_0x45bbdd,_0x2920fb){if(_0x45bbdd[_0x9cb9('0x41')]['id']){delete _0x45bbdd['body']['id'];}return db[_0x9cb9('0x36')][_0x9cb9('0x3e')]({'where':{'id':_0x45bbdd[_0x9cb9('0x3b')]['id']}})[_0x9cb9('0xa')](handleEntityNotFound(_0x2920fb,null))[_0x9cb9('0xa')](saveUpdates(_0x45bbdd[_0x9cb9('0x41')],null))[_0x9cb9('0xa')](respondWithResult(_0x2920fb,null))[_0x9cb9('0x39')](handleError(_0x2920fb,null));};exports[_0x9cb9('0x42')]=function(_0x28efec,_0x11e990){return db[_0x9cb9('0x36')][_0x9cb9('0x42')]()['then'](respondWithResult(_0x11e990,null))[_0x9cb9('0x39')](handleError(_0x11e990,null));};exports['destroy']=function(_0x40ae9b,_0x23fece){var _0x401f1e;var _0x5a7691=_0x40ae9b[_0x9cb9('0x3b')]['id'];return db[_0x9cb9('0x36')][_0x9cb9('0x3e')]({'where':{'id':_0x40ae9b[_0x9cb9('0x3b')]['id']}})['then'](handleEntityNotFound(_0x23fece,null))['then'](function(_0x57475e){if(_0x57475e){return _0x57475e['destroy']()['then'](function(_0x527e4a){return _0x527e4a;});}})[_0x9cb9('0xa')](function(_0x4490ec){_0x401f1e=_0x4490ec;if(_0x4490ec){if(_0x4490ec[_0x9cb9('0x43')]||_0x4490ec['CampaignId']){return db[_0x4490ec[_0x9cb9('0x43')]?_0x9cb9('0x44'):_0x9cb9('0x45')][_0x9cb9('0x3e')]({'where':{'id':_0x4490ec[_0x9cb9('0x43')]?_0x4490ec[_0x9cb9('0x43')]:_0x4490ec[_0x9cb9('0x46')]},'attributes':['id',_0x9cb9('0xe')],'raw':!![]});}}})['then'](function(_0x5b8ffa){var _0x58df82={};if(_0x5b8ffa){_[_0x9cb9('0x33')](_0x58df82,_[_0x9cb9('0x47')](_0x401f1e[_0x9cb9('0x48')],[_0x9cb9('0x49'),'updatedAt','id']));_0x58df82['state']=0x15;_0x58df82[_0x9cb9('0x4a')]=_0x9cb9('0x4b');_0x58df82[_0x9cb9('0x4c')]=_0x5b8ffa['name'];_0x58df82[_0x9cb9('0x4d')]=_0x40ae9b['user'][_0x9cb9('0xe')];_0x58df82[_0x9cb9('0x4e')]=_0x40ae9b[_0x9cb9('0x4f')]['id'];_0x58df82[_0x9cb9('0x4b')]=!![];_0x58df82['deletedat']=moment()[_0x9cb9('0x50')](_0x9cb9('0x51'));_0x58df82['calleridnum']=_0x401f1e['phone'];_0x58df82['campaigntype']=_0x401f1e[_0x9cb9('0x43')]?_0x9cb9('0x52'):'ivr';return db['CmContact'][_0x9cb9('0x3e')]({'where':{'id':_0x58df82[_0x9cb9('0x53')]},'attributes':[_0x9cb9('0x54'),_0x9cb9('0x55')]})[_0x9cb9('0xa')](function(_0x4e030a){if(!_[_0x9cb9('0x56')](_0x23fece)&&!_['isNil'](_0x4e030a['firstName'])){_0x58df82[_0x9cb9('0x57')]=_0x4e030a[_0x9cb9('0x54')];if(!_[_0x9cb9('0x56')](_0x4e030a['lastName'])){_0x58df82[_0x9cb9('0x57')]+='\x20'+_0x4e030a[_0x9cb9('0x55')];}}})[_0x9cb9('0x58')](function(){return db[_0x9cb9('0x59')][_0x9cb9('0x3f')](_0x58df82);});}})[_0x9cb9('0xa')](function(_0x21f73a){return db[_0x9cb9('0x5a')][_0x9cb9('0x5b')]({'where':{'CmHopperId':_0x5a7691}});})[_0x9cb9('0xa')](function(){return _0x23fece[_0x9cb9('0x4')](0xcc)[_0x9cb9('0x5c')]();})[_0x9cb9('0x39')](handleError(_0x23fece,null));};exports['getPreview']=function(_0x4dfc6e,_0x3e19ca){var _0x41ff82=[];return db[_0x9cb9('0x5d')]['describe']()[_0x9cb9('0xa')](function(_0xfd180d){_0x41ff82=_['keys'](_0xfd180d);return _0x4dfc6e['user'][_0x9cb9('0x5e')]({'where':{'type':_0x9cb9('0x5f'),'dialActive':!![],'dialMethod':_0x9cb9('0x60')},'attributes':['id','dialOrderByScheduledAt',_0x9cb9('0x61')],'raw':!![]});})['then'](function(_0x4473c6){if(_0x4473c6&&_0x4473c6[_0x9cb9('0x2d')]){return db[_0x9cb9('0x62')][_0x9cb9('0x63')](function(_0x3b3897){var _0x2d1b65={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x9cb9('0x16')](_0x4473c6,'id')},'$or':[{'UserId':null},{'UserId':_0x4dfc6e[_0x9cb9('0x4f')]['id']}]};var _0x38acc6={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x4473c6)[_0x9cb9('0x32')](['dialPreviewAutoRecallMe',0x0])[_0x9cb9('0x16')]('id')[_0x9cb9('0x64')]()},'$or':[{'UserId':null},{'UserId':_0x4dfc6e[_0x9cb9('0x4f')]['id']}]};var _0x58b9b3={'$or':[_0x2d1b65,_0x38acc6]};var _0x4f11b6=[];if(_0x4dfc6e['body']['direction']&&_0x4dfc6e[_0x9cb9('0x41')]['direction']===_0x9cb9('0x65')){if(!_[_0x9cb9('0x66')](_0x4dfc6e[_0x9cb9('0x41')][_0x9cb9('0x67')])){_0x58b9b3['id']={'$in':_0x4dfc6e[_0x9cb9('0x41')][_0x9cb9('0x67')]};}_0x4f11b6=[[_0x9cb9('0x68'),_0x9cb9('0x69')],[_0x9cb9('0x6a'),_0x4473c6[0x0]['dialOrderByScheduledAt']==='ASC'?_0x9cb9('0x6b'):_0x9cb9('0x69')],db['sequelize']['literal'](_0x9cb9('0x6c')),['id',_0x9cb9('0x6b')]];}else{if(!_['isEmpty'](_0x4dfc6e['body']['hopperIds'])){_0x58b9b3['id']={'$notIn':_0x4dfc6e['body'][_0x9cb9('0x67')]};}_0x4f11b6=[['priority',_0x9cb9('0x6b')],[_0x9cb9('0x6a'),_0x4473c6[0x0]['dialOrderByScheduledAt']],db[_0x9cb9('0x62')]['literal']('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id','ASC']];}return db[_0x9cb9('0x36')][_0x9cb9('0x6d')]({'attributes':['id',_0x9cb9('0x6e'),_0x9cb9('0x6f'),'recallme'],'where':_0x58b9b3,'order':_0x4f11b6,'transaction':_0x3b3897,'lock':_0x3b3897[_0x9cb9('0x70')][_0x9cb9('0x71')],'include':[{'model':db['CmContact'],'as':_0x9cb9('0x72'),'attributes':_0x41ff82,'include':[{'model':db[_0x9cb9('0x73')],'as':'Company','attributes':['id',_0x9cb9('0xe')]}]},{'model':db[_0x9cb9('0x74')],'as':_0x9cb9('0x75'),'attributes':['id',_0x9cb9('0xe')]},{'model':db[_0x9cb9('0x44')],'as':_0x9cb9('0x76'),'attributes':['id','name','dialActive']}]})[_0x9cb9('0xa')](function(_0x2c2ff1){if(_0x2c2ff1){return _0x2c2ff1[_0x9cb9('0x40')]({'UserId':_0x4dfc6e[_0x9cb9('0x4f')]['id']},{'transaction':_0x3b3897});}});});}})[_0x9cb9('0xa')](handleEntityNotFound(_0x3e19ca,null))[_0x9cb9('0xa')](respondWithResult(_0x3e19ca,null))[_0x9cb9('0x39')](handleError(_0x3e19ca,null));};exports[_0x9cb9('0x77')]=function(_0x24f574,_0x4eb9c6,_0x23a727){var _0x1ef68b=[];var _0x3ceb83=_0x24f574['params']['id'];var _0x7d8ce8=_0x24f574[_0x9cb9('0x4f')]['id'];return db[_0x9cb9('0x5d')][_0x9cb9('0x42')]()['then'](function(_0x222393){_0x1ef68b=_[_0x9cb9('0x18')](_0x222393);return db[_0x9cb9('0x62')][_0x9cb9('0x63')](function(_0x30342f){const _0x203156={'id':_0x3ceb83};return db[_0x9cb9('0x36')][_0x9cb9('0x6d')]({'attributes':['id',_0x9cb9('0x6e'),_0x9cb9('0x78')],'where':_0x203156,'transaction':_0x30342f,'lock':_0x30342f[_0x9cb9('0x70')]['UPDATE'],'include':[{'model':db['CmContact'],'as':'Contact','attributes':_0x1ef68b,'include':[{'model':db[_0x9cb9('0x73')],'as':_0x9cb9('0x79'),'attributes':['id','name']}]},{'model':db[_0x9cb9('0x74')],'as':_0x9cb9('0x75'),'attributes':['id','name']},{'model':db[_0x9cb9('0x44')],'as':'Queue','attributes':['id',_0x9cb9('0xe'),'dialActive']}]})[_0x9cb9('0xa')](function(_0xd49604){if(_0xd49604){return _0xd49604[_0x9cb9('0x40')]({'UserId':_0x7d8ce8},{'transaction':_0x30342f});}});});})[_0x9cb9('0xa')](handleEntityNotFound(_0x4eb9c6,null))[_0x9cb9('0xa')](respondWithResult(_0x4eb9c6,null))['catch'](handleError(_0x4eb9c6,null));};exports[_0x9cb9('0x7a')]=function(_0x303dfc,_0x3a60d3){return _0x303dfc['user']['getVoiceQueues']({'where':{'type':_0x9cb9('0x5f'),'dialActive':!![],'dialMethod':_0x9cb9('0x60')},'attributes':['id'],'raw':!![]})[_0x9cb9('0xa')](function(_0x288782){if(_0x288782&&_0x288782['length']){return db[_0x9cb9('0x36')][_0x9cb9('0x8')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x9cb9('0x51'))},'VoiceQueueId':{'$in':_[_0x9cb9('0x16')](_0x288782,'id')},'$or':[{'UserId':null},{'UserId':_0x303dfc[_0x9cb9('0x4f')]['id']}]}});}return 0x0;})[_0x9cb9('0xa')](function(_0x54043e){if(!_[_0x9cb9('0x56')](_0x54043e)&&_[_0x9cb9('0x7b')](_0x54043e)){return _0x3a60d3[_0x9cb9('0x4')](0xc8)[_0x9cb9('0x9')]({'contacts':_0x54043e});}else{logger[_0x9cb9('0xc')](_0x9cb9('0x7c'),_0x9cb9('0x7a'),0x194,'entity\x20not\x20found');_0x3a60d3[_0x9cb9('0xb')](0x194);}})['catch'](handleError(_0x3a60d3,null));};exports['getTimezones']=function(_0x54d5ed,_0x5341d1){var _0x32130f=shared['timezones'];var _0x4c2ca1=[];_[_0x9cb9('0x16')](_0x32130f,function(_0x465945){_0x4c2ca1[_0x9cb9('0x7d')]({'id':_0x465945[_0x9cb9('0xe')],'name':_0x465945[_0x9cb9('0xe')],'utcOffset':_0x465945[_0x9cb9('0x7e')]});});return _0x5341d1[_0x9cb9('0x4')](0xc8)[_0x9cb9('0x9')]({'tz':_0x4c2ca1});};exports[_0x9cb9('0x7f')]=function(_0x206abd,_0x5971eb){var _0xe48750=shared[_0x9cb9('0x80')];var _0x13b776={};if(!_[_0x9cb9('0x56')](_0xe48750[_0x206abd[_0x9cb9('0x41')]['id']]))_0x13b776=_0xe48750[_0x206abd['body']['id']];return _0x5971eb['status'](0xc8)[_0x9cb9('0x9')](_0x13b776);};
\ No newline at end of file
index 02e7069..313b013 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33af=['request-promise','path','rimraf','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','phone','priority','util','api','moment','bluebird'];(function(_0x50db25,_0x529219){var _0x1ee7a7=function(_0x3b364c){while(--_0x3b364c){_0x50db25['push'](_0x50db25['shift']());}};_0x1ee7a7(++_0x529219);}(_0x33af,0xec));var _0xf33a=function(_0x3185ad,_0x5e5ca2){_0x3185ad=_0x3185ad-0x0;var _0x4f77fb=_0x33af[_0x3185ad];return _0x4f77fb;};'use strict';var _=require('lodash');var util=require(_0xf33a('0x0'));var logger=require('../../config/logger')(_0xf33a('0x1'));var moment=require(_0xf33a('0x2'));var BPromise=require(_0xf33a('0x3'));var rp=require(_0xf33a('0x4'));var fs=require('fs');var path=require(_0xf33a('0x5'));var rimraf=require(_0xf33a('0x6'));var config=require('../../config/environment');var attributes=require(_0xf33a('0x7'));module[_0xf33a('0x8')]=function(_0x583e54,_0xc0dd13){return _0x583e54[_0xf33a('0x9')](_0xf33a('0xa'),attributes,{'tableName':_0xf33a('0xb'),'paranoid':![],'indexes':[{'name':_0xf33a('0xc'),'fields':[_0xf33a('0xc')]},{'name':'phone','fields':[_0xf33a('0xd')]},{'name':_0xf33a('0xe'),'fields':[_0xf33a('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6d38=['util','../../config/logger','api','request-promise','rimraf','../../config/environment','./cmHopper.attributes','define','CmHopper','scheduledat','phone'];(function(_0x1e2c73,_0x12cd55){var _0x46f8d5=function(_0xe5a2fd){while(--_0xe5a2fd){_0x1e2c73['push'](_0x1e2c73['shift']());}};_0x46f8d5(++_0x12cd55);}(_0x6d38,0x1ef));var _0x86d3=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x6d38[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require('lodash');var util=require(_0x86d3('0x0'));var logger=require(_0x86d3('0x1'))(_0x86d3('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x86d3('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x86d3('0x4'));var config=require(_0x86d3('0x5'));var attributes=require(_0x86d3('0x6'));module['exports']=function(_0x2d8272,_0xfbbc15){return _0x2d8272[_0x86d3('0x7')](_0x86d3('0x8'),attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':'scheduledat','fields':[_0x86d3('0x9')]},{'name':_0x86d3('0xa'),'fields':[_0x86d3('0xa')]},{'name':'priority','fields':['priority']}],'timestamps':!![]});};
\ No newline at end of file
index 47be621..337d7e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e8c=['name','voicePause','length','push','includes','all','GetContactDialer','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','MoveContactManagedDialer','transaction','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','destroy','COUNT','literal','`scheduledat`\x20>=\x20','format','YYYY-MM-DD\x20HH:mm:ss','CountReScheduled','GetContactRecallMe','describe','UserId','GetCmHopperPreview','Contact','keys','findOne','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','NOW()\x20+\x20INTERVAL\x20','\x20MINUTE','User','CmList','NOW()','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','client','http','request','then','info','CmHopper,\x20%s,\x20%s','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','error','code','message','result','GetCmHopper','CmHopper','options','raw','limit','include','map','model','attributes','catch','ShowCmHopper','where','create','body','CreateCmHopper','stringify','UpdateCmHopper','update','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','DestroyCmHopper','CmContact','sequelize','findAll','order','LOCK','UPDATE','Agent'];(function(_0x4e28f6,_0x4c3518){var _0x18ac94=function(_0x3aebf8){while(--_0x3aebf8){_0x4e28f6['push'](_0x4e28f6['shift']());}};_0x18ac94(++_0x4c3518);}(_0x1e8c,0xd3));var _0xc1e8=function(_0x497d8c,_0x2904c9){_0x497d8c=_0x497d8c-0x0;var _0xeafed7=_0x1e8c[_0x497d8c];return _0xeafed7;};'use strict';var _=require('lodash');var util=require(_0xc1e8('0x0'));var moment=require(_0xc1e8('0x1'));var BPromise=require(_0xc1e8('0x2'));var db=require(_0xc1e8('0x3'))['db'];var logger=require(_0xc1e8('0x4'))(_0xc1e8('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xc1e8('0x6')][_0xc1e8('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x197e99,_0x22e15a,_0x2547e3){return new BPromise(function(_0x18613e,_0x547868){return client[_0xc1e8('0x8')](_0x197e99,_0x2547e3)[_0xc1e8('0x9')](function(_0x3b5001){logger[_0xc1e8('0xa')](_0xc1e8('0xb'),_0x22e15a,_0xc1e8('0xc'));logger[_0xc1e8('0xd')](_0xc1e8('0xe'),_0x22e15a,_0xc1e8('0xc'),JSON['stringify'](_0x3b5001));if(_0x3b5001[_0xc1e8('0xf')]){if(_0x3b5001[_0xc1e8('0xf')][_0xc1e8('0x10')]===0x1f4){logger[_0xc1e8('0xf')](_0xc1e8('0xb'),_0x22e15a,_0x3b5001[_0xc1e8('0xf')][_0xc1e8('0x11')]);return _0x547868(_0x3b5001[_0xc1e8('0xf')]['message']);}logger[_0xc1e8('0xf')](_0xc1e8('0xb'),_0x22e15a,_0x3b5001[_0xc1e8('0xf')][_0xc1e8('0x11')]);return _0x18613e(_0x3b5001[_0xc1e8('0xf')][_0xc1e8('0x11')]);}else{logger[_0xc1e8('0xa')]('CmHopper,\x20%s,\x20%s',_0x22e15a,_0xc1e8('0xc'));_0x18613e(_0x3b5001[_0xc1e8('0x12')]['message']);}})['catch'](function(_0x2f4c17){logger[_0xc1e8('0xf')](_0xc1e8('0xb'),_0x22e15a,_0x2f4c17);_0x547868(_0x2f4c17);});});}exports[_0xc1e8('0x13')]=function(_0xe69604){var _0x4b76da=this;return new Promise(function(_0x126d90,_0x1e51eb){return db[_0xc1e8('0x14')]['findAll']({'raw':_0xe69604[_0xc1e8('0x15')]?_0xe69604[_0xc1e8('0x15')][_0xc1e8('0x16')]===undefined?!![]:![]:!![],'where':_0xe69604[_0xc1e8('0x15')]?_0xe69604[_0xc1e8('0x15')]['where']||null:null,'attributes':_0xe69604[_0xc1e8('0x15')]?_0xe69604['options']['attributes']||null:null,'limit':_0xe69604[_0xc1e8('0x15')]?_0xe69604[_0xc1e8('0x15')][_0xc1e8('0x17')]||null:null,'include':_0xe69604[_0xc1e8('0x15')]?_0xe69604[_0xc1e8('0x15')][_0xc1e8('0x18')]?_[_0xc1e8('0x19')](_0xe69604[_0xc1e8('0x15')][_0xc1e8('0x18')],function(_0x473841){return{'model':db[_0x473841[_0xc1e8('0x1a')]],'as':_0x473841['as'],'attributes':_0x473841[_0xc1e8('0x1b')],'include':_0x473841[_0xc1e8('0x18')]?_['map'](_0x473841[_0xc1e8('0x18')],function(_0x2293e7){return{'model':db[_0x2293e7[_0xc1e8('0x1a')]],'as':_0x2293e7['as'],'attributes':_0x2293e7[_0xc1e8('0x1b')],'include':_0x2293e7[_0xc1e8('0x18')]?_[_0xc1e8('0x19')](_0x2293e7[_0xc1e8('0x18')],function(_0x53d25e){return{'model':db[_0x53d25e[_0xc1e8('0x1a')]],'as':_0x53d25e['as'],'attributes':_0x53d25e[_0xc1e8('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x55f214){logger['info'](_0xc1e8('0x13'),_0xe69604);logger[_0xc1e8('0xd')](_0xc1e8('0x13'),_0xe69604,JSON['stringify'](_0x55f214));_0x126d90(_0x55f214);})[_0xc1e8('0x1c')](function(_0x286186){logger[_0xc1e8('0xf')]('GetCmHopper',_0x286186['message'],_0xe69604);_0x1e51eb(_0x4b76da[_0xc1e8('0xf')](0x1f4,_0x286186['message']));});});};exports[_0xc1e8('0x1d')]=function(_0x16ada4){var _0x5c3444=this;return new Promise(function(_0x53e14f,_0x23a4d8){return db[_0xc1e8('0x14')]['find']({'raw':_0x16ada4['options']?_0x16ada4[_0xc1e8('0x15')][_0xc1e8('0x16')]===undefined?!![]:![]:!![],'where':_0x16ada4[_0xc1e8('0x15')]?_0x16ada4[_0xc1e8('0x15')][_0xc1e8('0x1e')]||null:null,'attributes':_0x16ada4[_0xc1e8('0x15')]?_0x16ada4[_0xc1e8('0x15')][_0xc1e8('0x1b')]||null:null,'include':_0x16ada4[_0xc1e8('0x15')]?_0x16ada4[_0xc1e8('0x15')][_0xc1e8('0x18')]?_[_0xc1e8('0x19')](_0x16ada4[_0xc1e8('0x15')]['include'],function(_0x280d14){return{'model':db[_0x280d14[_0xc1e8('0x1a')]],'as':_0x280d14['as'],'attributes':_0x280d14['attributes'],'include':_0x280d14['include']?_[_0xc1e8('0x19')](_0x280d14['include'],function(_0x112ac8){return{'model':db[_0x112ac8[_0xc1e8('0x1a')]],'as':_0x112ac8['as'],'attributes':_0x112ac8[_0xc1e8('0x1b')],'include':_0x112ac8['include']?_['map'](_0x112ac8[_0xc1e8('0x18')],function(_0x4e6004){return{'model':db[_0x4e6004[_0xc1e8('0x1a')]],'as':_0x4e6004['as'],'attributes':_0x4e6004['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x446cbd){logger[_0xc1e8('0xa')](_0xc1e8('0x1d'),_0x16ada4);logger[_0xc1e8('0xd')](_0xc1e8('0x1d'),_0x16ada4,JSON['stringify'](_0x446cbd));_0x53e14f(_0x446cbd);})['catch'](function(_0x30cc33){logger['error'](_0xc1e8('0x1d'),_0x30cc33[_0xc1e8('0x11')],_0x16ada4);_0x23a4d8(_0x5c3444[_0xc1e8('0xf')](0x1f4,_0x30cc33[_0xc1e8('0x11')]));});});};exports['CreateCmHopper']=function(_0x4f713b){var _0x5ae1ce=this;return new Promise(function(_0x41f911,_0xc248bd){return db[_0xc1e8('0x14')][_0xc1e8('0x1f')](_0x4f713b[_0xc1e8('0x20')],{'raw':_0x4f713b[_0xc1e8('0x15')]?_0x4f713b['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2af685){logger['info']('CreateCmHopper',_0x4f713b);logger[_0xc1e8('0xd')](_0xc1e8('0x21'),_0x4f713b,JSON[_0xc1e8('0x22')](_0x2af685));_0x41f911(_0x2af685);})[_0xc1e8('0x1c')](function(_0x322e58){logger['error'](_0xc1e8('0x21'),_0x322e58['message'],_0x4f713b);_0xc248bd(_0x5ae1ce[_0xc1e8('0xf')](0x1f4,_0x322e58[_0xc1e8('0x11')]));});});};exports[_0xc1e8('0x23')]=function(_0x347e8e){var _0x34c91d=this;return new Promise(function(_0x6a45f5,_0x291a5f){return db[_0xc1e8('0x14')][_0xc1e8('0x24')](_0x347e8e[_0xc1e8('0x20')],{'raw':_0x347e8e['options']?_0x347e8e[_0xc1e8('0x15')][_0xc1e8('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x347e8e[_0xc1e8('0x15')]?_0x347e8e[_0xc1e8('0x15')][_0xc1e8('0x1e')]||null:null,'attributes':_0x347e8e['options']?_0x347e8e[_0xc1e8('0x15')][_0xc1e8('0x1b')]||null:null,'limit':_0x347e8e[_0xc1e8('0x15')]?_0x347e8e[_0xc1e8('0x15')]['limit']||null:null})[_0xc1e8('0x9')](function(_0x1faf59){logger[_0xc1e8('0xa')](_0xc1e8('0x23'),_0x347e8e);logger['info'](_0xc1e8('0x25'),JSON[_0xc1e8('0x22')](_0x347e8e[_0xc1e8('0x15')]['where']),_0x347e8e[_0xc1e8('0x20')][_0xc1e8('0x26')]);logger[_0xc1e8('0xd')]('UpdateCmHopper',_0x347e8e,JSON[_0xc1e8('0x22')](_0x1faf59));_0x6a45f5(_0x1faf59);})[_0xc1e8('0x1c')](function(_0x494984){logger[_0xc1e8('0xf')](_0xc1e8('0x23'),_0x494984['message'],_0x347e8e);_0x291a5f(_0x34c91d[_0xc1e8('0xf')](0x1f4,_0x494984[_0xc1e8('0x11')]));});});};exports[_0xc1e8('0x27')]=function(_0xe237e8){var _0x1fb1dc=this;return new Promise(function(_0xa504ec,_0x51213e){return db['CmHopper']['destroy']({'where':_0xe237e8['options']?_0xe237e8[_0xc1e8('0x15')]['where']||null:null})[_0xc1e8('0x9')](function(_0x18c9b0){logger[_0xc1e8('0xa')]('DestroyCmHopper',_0xe237e8);logger['debug'](_0xc1e8('0x27'),_0xe237e8,JSON[_0xc1e8('0x22')](_0x18c9b0));_0xa504ec(_0x18c9b0);})[_0xc1e8('0x1c')](function(_0x38e43c){logger[_0xc1e8('0xf')](_0xc1e8('0x27'),_0x38e43c[_0xc1e8('0x11')],_0xe237e8);_0x51213e(_0x1fb1dc[_0xc1e8('0xf')](0x1f4,_0x38e43c['message']));});});};exports['GetContactDialer']=function(_0x1262e8){var _0x4db014=this;return new Promise(function(_0x408965,_0x30d721){return db[_0xc1e8('0x28')]['describe']()[_0xc1e8('0x9')](function(_0x89def3){return db[_0xc1e8('0x29')]['transaction'](function(_0x557ed4){return db[_0xc1e8('0x14')][_0xc1e8('0x2a')]({'where':_0x1262e8[_0xc1e8('0x15')]?_0x1262e8[_0xc1e8('0x15')][_0xc1e8('0x1e')]||null:null,'attributes':_0x1262e8['options']?_0x1262e8[_0xc1e8('0x15')][_0xc1e8('0x1b')]||null:null,'limit':_0x1262e8[_0xc1e8('0x15')]?_0x1262e8[_0xc1e8('0x15')][_0xc1e8('0x17')]||null:null,'order':_0x1262e8[_0xc1e8('0x15')]?_0x1262e8[_0xc1e8('0x15')][_0xc1e8('0x2b')]||null:null,'transaction':_0x557ed4,'lock':_0x557ed4[_0xc1e8('0x2c')][_0xc1e8('0x2d')],'include':[{'model':db[_0xc1e8('0x28')],'as':'Contact','attributes':_['keys'](_0x89def3)},{'model':db['User'],'as':_0xc1e8('0x2e'),'attributes':['id',_0xc1e8('0x2f'),_0xc1e8('0x30')]}]})['then'](function(_0x258178){var _0x55bd93=[];var _0x371343=[];for(var _0x95f396=0x0;_0x95f396<_0x258178[_0xc1e8('0x31')];_0x95f396+=0x1){var _0xc9869c=_0x258178[_0x95f396]['UserId'];if(_0xc9869c===null){_0x55bd93[_0xc1e8('0x32')](_0x258178[_0x95f396][_0xc1e8('0x24')](_0x1262e8[_0xc1e8('0x20')],{'transaction':_0x557ed4}));}else if(!_0x371343[_0xc1e8('0x33')](_0xc9869c)){_0x371343[_0xc1e8('0x32')](_0xc9869c);_0x55bd93[_0xc1e8('0x32')](_0x258178[_0x95f396]['update'](_0x1262e8[_0xc1e8('0x20')],{'transaction':_0x557ed4}));}}return BPromise[_0xc1e8('0x34')](_0x55bd93);});})[_0xc1e8('0x9')](function(_0x4c04a4){logger['info'](_0xc1e8('0x35'),_0x1262e8);if(_0x4c04a4[_0xc1e8('0x31')]>0x0){logger[_0xc1e8('0xa')](_0xc1e8('0x36'),_0x4c04a4[0x0][_0xc1e8('0x37')]['id'],_0x4c04a4[0x0][_0xc1e8('0x37')]['ContactId'],_0x4c04a4[0x0]['dataValues'][_0xc1e8('0x26')]);}logger[_0xc1e8('0xd')]('GetContactDialer',_0x1262e8,JSON[_0xc1e8('0x22')](_0x4c04a4));_0x408965(_0x4c04a4);})[_0xc1e8('0x1c')](function(_0x1b45a3){logger['error'](_0xc1e8('0x35'),_0x1b45a3['message'],_0x1262e8);_0x30d721(_0x4db014[_0xc1e8('0xf')](0x1f4,_0x1b45a3[_0xc1e8('0x11')]));});});});};exports[_0xc1e8('0x38')]=function(_0x237e87){var _0x5f2ab7=this;return new Promise(function(_0x58dfb2,_0x31d24b){return db[_0xc1e8('0x29')][_0xc1e8('0x39')](function(_0x37e9bf){return db[_0xc1e8('0x3a')][_0xc1e8('0x1f')](_0x237e87[_0xc1e8('0x20')],{'raw':_0x237e87['options']?_0x237e87[_0xc1e8('0x15')][_0xc1e8('0x16')]===undefined?!![]:![]:!![],'transaction':_0x37e9bf})[_0xc1e8('0x9')](function(){logger[_0xc1e8('0xa')](_0xc1e8('0x3b'),JSON[_0xc1e8('0x22')](_0x237e87[_0xc1e8('0x15')]['where']),_0x237e87[_0xc1e8('0x15')]['where'][_0xc1e8('0x26')]);return db['CmHopper'][_0xc1e8('0x3c')]({'where':_0x237e87[_0xc1e8('0x15')]?_0x237e87['options'][_0xc1e8('0x1e')]||null:null,'transaction':_0x37e9bf});});})[_0xc1e8('0x9')](function(_0x367603){logger[_0xc1e8('0xa')](_0xc1e8('0x38'),_0x237e87);logger['debug'](_0xc1e8('0x38'),_0x237e87,JSON[_0xc1e8('0x22')](_0x367603));_0x58dfb2(_0x367603);})['catch'](function(_0x8eb9d3){logger[_0xc1e8('0xf')](_0xc1e8('0x38'),_0x8eb9d3[_0xc1e8('0x11')],_0x237e87);_0x31d24b(_0x5f2ab7['error'](0x1f4,_0x8eb9d3[_0xc1e8('0x11')]));});});};exports['CountReScheduled']=function(_0x2cfaff){var _0x30b30e=this;return new Promise(function(_0x506c0d,_0x26be17){return db['CmHopper'][_0xc1e8('0x2a')]({'raw':_0x2cfaff['options']?_0x2cfaff[_0xc1e8('0x15')][_0xc1e8('0x16')]===undefined?!![]:![]:!![],'where':_0x2cfaff[_0xc1e8('0x15')]?_0x2cfaff[_0xc1e8('0x15')][_0xc1e8('0x1e')]||null:null,'attributes':[[db[_0xc1e8('0x29')]['fn'](_0xc1e8('0x3d'),db[_0xc1e8('0x29')]['fn']('IF',db[_0xc1e8('0x29')][_0xc1e8('0x3e')](_0xc1e8('0x3f')+util[_0xc1e8('0x40')]('\x22%s\x22',moment()['format'](_0xc1e8('0x41')))+'\x20,\x201,\x20null'))),'contactsRescheduled']]})['then'](function(_0x362ac2){logger[_0xc1e8('0xa')](_0xc1e8('0x42'),_0x2cfaff);logger[_0xc1e8('0xd')](_0xc1e8('0x42'),_0x2cfaff,JSON[_0xc1e8('0x22')](_0x362ac2));_0x506c0d(_0x362ac2);})[_0xc1e8('0x1c')](function(_0x2cb8e9){logger[_0xc1e8('0xf')]('CountReScheduled',_0x2cb8e9['message'],_0x2cfaff);_0x26be17(_0x30b30e[_0xc1e8('0xf')](0x1f4,_0x2cb8e9['message']));});});};exports[_0xc1e8('0x43')]=function(_0x3f9397){var _0x11dfd9=this;return new Promise(function(_0x271406,_0x4fbf28){return db[_0xc1e8('0x28')][_0xc1e8('0x44')]()[_0xc1e8('0x9')](function(_0x3fc1ca){return db[_0xc1e8('0x29')]['transaction'](function(_0x98b7a1){return db['CmHopper'][_0xc1e8('0x2a')]({'where':_0x3f9397[_0xc1e8('0x15')]?_0x3f9397[_0xc1e8('0x15')][_0xc1e8('0x1e')]||null:null,'attributes':_0x3f9397[_0xc1e8('0x15')]?_0x3f9397[_0xc1e8('0x15')]['attributes']||null:null,'limit':0x1,'order':_0x3f9397[_0xc1e8('0x15')]?_0x3f9397[_0xc1e8('0x15')]['order']||null:null,'group':db[_0xc1e8('0x14')][_0xc1e8('0x45')],'transaction':_0x98b7a1,'lock':_0x98b7a1[_0xc1e8('0x2c')][_0xc1e8('0x2d')],'include':_0x3f9397[_0xc1e8('0x15')]?_0x3f9397[_0xc1e8('0x15')]['include']?_['map'](_0x3f9397['options'][_0xc1e8('0x18')],function(_0x1d1a3e){return{'model':db[_0x1d1a3e['model']],'as':_0x1d1a3e['as'],'attributes':_0x1d1a3e[_0xc1e8('0x1b')],'include':_0x1d1a3e['include']?_[_0xc1e8('0x19')](_0x1d1a3e['include'],function(_0xf95ef5){return{'model':db[_0xf95ef5[_0xc1e8('0x1a')]],'as':_0xf95ef5['as'],'attributes':_0xf95ef5['attributes'],'include':_0xf95ef5[_0xc1e8('0x18')]?_[_0xc1e8('0x19')](_0xf95ef5[_0xc1e8('0x18')],function(_0x29f812){return{'model':db[_0x29f812['model']],'as':_0x29f812['as'],'attributes':_0x29f812[_0xc1e8('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xc1e8('0x9')](function(_0x3c10e8){var _0x1054f5=[];for(var _0x3425f1=0x0;_0x3425f1<_0x3c10e8[_0xc1e8('0x31')];_0x3425f1+=0x1){_0x1054f5[_0xc1e8('0x32')](_0x3c10e8[_0x3425f1][_0xc1e8('0x24')](_0x3f9397[_0xc1e8('0x20')],{'transaction':_0x98b7a1}));}return BPromise[_0xc1e8('0x34')](_0x1054f5);});})[_0xc1e8('0x9')](function(_0x4c06d){logger[_0xc1e8('0xa')](_0xc1e8('0x43'),_0x3f9397);logger[_0xc1e8('0xd')](_0xc1e8('0x43'),_0x3f9397,JSON[_0xc1e8('0x22')](_0x4c06d));_0x271406(_0x4c06d);})[_0xc1e8('0x1c')](function(_0x1d88d0){logger[_0xc1e8('0xf')](_0xc1e8('0x43'),_0x1d88d0[_0xc1e8('0x11')],_0x3f9397);_0x4fbf28(_0x11dfd9[_0xc1e8('0xf')](0x1f4,_0x1d88d0['message']));});});});};exports[_0xc1e8('0x46')]=function(_0x1ff17b){var _0x2e2dd6=this;return new Promise(function(_0x5ef590,_0x50fcda){db[_0xc1e8('0x28')][_0xc1e8('0x44')]()[_0xc1e8('0x9')](function(_0x142914){return db[_0xc1e8('0x14')][_0xc1e8('0x2a')]({'raw':_0x1ff17b[_0xc1e8('0x15')]?_0x1ff17b['options']['raw']===undefined?!![]:![]:!![],'where':_0x1ff17b[_0xc1e8('0x15')]?_0x1ff17b[_0xc1e8('0x15')][_0xc1e8('0x1e')]||null:null,'attributes':_0x1ff17b[_0xc1e8('0x15')]?_0x1ff17b['options'][_0xc1e8('0x1b')]||null:null,'limit':_0x1ff17b[_0xc1e8('0x15')]?_0x1ff17b[_0xc1e8('0x15')][_0xc1e8('0x17')]||null:null,'include':_0x1ff17b[_0xc1e8('0x15')]?_0x1ff17b[_0xc1e8('0x15')][_0xc1e8('0x18')]?_[_0xc1e8('0x19')](_0x1ff17b[_0xc1e8('0x15')][_0xc1e8('0x18')],function(_0x3d3dc6){return{'model':db[_0x3d3dc6[_0xc1e8('0x1a')]],'as':_0x3d3dc6['as'],'attributes':_0x3d3dc6['as']===_0xc1e8('0x47')?_[_0xc1e8('0x48')](_0x142914):_0x3d3dc6['attributes'],'include':_0x3d3dc6['include']?_[_0xc1e8('0x19')](_0x3d3dc6[_0xc1e8('0x18')],function(_0x3ab404){return{'model':db[_0x3ab404[_0xc1e8('0x1a')]],'as':_0x3ab404['as'],'attributes':_0x3ab404[_0xc1e8('0x1b')],'include':_0x3ab404[_0xc1e8('0x18')]?_[_0xc1e8('0x19')](_0x3ab404[_0xc1e8('0x18')],function(_0x599d65){return{'model':db[_0x599d65['model']],'as':_0x599d65['as'],'attributes':_0x599d65['attributes']};}):[]};}):[]};}):[]:[]})[_0xc1e8('0x9')](function(_0x38599d){logger[_0xc1e8('0xa')](_0xc1e8('0x13'),_0x1ff17b);logger[_0xc1e8('0xd')](_0xc1e8('0x13'),_0x1ff17b,JSON[_0xc1e8('0x22')](_0x38599d));_0x5ef590(_0x38599d);})['catch'](function(_0x2e619d){logger['error']('GetCmHopper',_0x2e619d[_0xc1e8('0x11')],_0x1ff17b);_0x50fcda(_0x2e2dd6['error'](0x1f4,_0x2e619d['message']));});});});};exports['GetContactByPhone']=function(_0x23927c){var _0x7a2408=this;return new Promise(function(_0x3e3f37,_0x5d7e61){return db['CmContact'][_0xc1e8('0x49')]({'raw':!![],'where':{'phone':_0x23927c[_0xc1e8('0x15')][_0xc1e8('0x1e')][_0xc1e8('0x4a')]},'attributes':['id',_0xc1e8('0x4b')],'order':[['id',_0xc1e8('0x4c')]]})['then'](function(_0x45075f){logger[_0xc1e8('0xa')](_0xc1e8('0x4d'),_0x23927c);logger[_0xc1e8('0xd')](_0xc1e8('0x4d'),_0x23927c,JSON[_0xc1e8('0x22')](_0x45075f));_0x3e3f37(_0x45075f);})['catch'](function(_0x126066){logger[_0xc1e8('0xf')]('getContactByPhone',_0x126066[_0xc1e8('0x11')],_0x23927c);_0x5d7e61(_0x7a2408[_0xc1e8('0xf')](0x1f4,_0x126066[_0xc1e8('0x11')]));});});};exports[_0xc1e8('0x4e')]=function(_0x751956){var _0x5a1e94=this;return new Promise(function(_0x505096,_0x501459){return db[_0xc1e8('0x29')]['transaction'](function(_0x5978f1){return db['CmHopper'][_0xc1e8('0x24')]({'active':![]},{'where':{},'transaction':_0x5978f1})['then'](function(_0x299c7d){logger[_0xc1e8('0xa')](_0xc1e8('0x4e'),_0x751956);logger['debug'](_0xc1e8('0x4e'),_0x751956,JSON[_0xc1e8('0x22')](_0x299c7d));_0x505096(_0x299c7d);})['catch'](function(_0x4699f7){logger[_0xc1e8('0xf')]('ResetActiveCalls',_0x4699f7[_0xc1e8('0x11')],_0x751956);_0x501459(_0x5a1e94[_0xc1e8('0xf')](0x1f4,_0x4699f7[_0xc1e8('0x11')]));});});});};exports[_0xc1e8('0x4f')]=function(_0x1b3ba5){var _0x4cf494=this;var _0x4619e5=_0x1b3ba5[_0xc1e8('0x20')][_0xc1e8('0x1e')][_0xc1e8('0x50')];var _0x3ba611=_0x1b3ba5['body']['where']['interval'];var _0x46ad44=_0x1b3ba5[_0xc1e8('0x20')]['where']['availableAgentsIds'];return new Promise(function(_0x5d0722,_0x5d0a1e){return db['CmHopper'][_0xc1e8('0x2a')]({'where':{'voiceQueueId':{'$in':_0x4619e5},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0xc1e8('0x29')]['literal'](_0xc1e8('0x51')+_0x3ba611+_0xc1e8('0x52')),'$gt':db['sequelize'][_0xc1e8('0x3e')]('NOW()')}},'UserId':{'$in':_0x46ad44}},'include':[{'model':db[_0xc1e8('0x28')],'as':_0xc1e8('0x47')},{'model':db[_0xc1e8('0x53')],'as':_0xc1e8('0x2e'),'attributes':['id',_0xc1e8('0x2f'),_0xc1e8('0x30')]},{'model':db[_0xc1e8('0x54')],'as':'List'}]})[_0xc1e8('0x9')](function(_0x11f88e){if(_0x11f88e[_0xc1e8('0x31')]>0x0){return db[_0xc1e8('0x29')][_0xc1e8('0x39')](function(_0x37d4ff){return db[_0xc1e8('0x14')][_0xc1e8('0x24')]({'recallmeNotifiedDate':db['sequelize'][_0xc1e8('0x3e')](_0xc1e8('0x55'))},{'where':{'id':{'$in':_[_0xc1e8('0x19')](_0x11f88e,'id')}},'transaction':_0x37d4ff})[_0xc1e8('0x9')](function(){_0x5d0722(_0x11f88e);})[_0xc1e8('0x1c')](function(_0x8d3f78){logger[_0xc1e8('0xf')](_0xc1e8('0x4f'),_0x8d3f78[_0xc1e8('0x11')],_0x1b3ba5);_0x5d0a1e(_0x4cf494['error'](0x1f4,_0x8d3f78[_0xc1e8('0x11')]));});})[_0xc1e8('0x1c')](function(_0x59a6c7){logger[_0xc1e8('0xf')]('CmHopperHandlePreviewRecallNotifications',_0x59a6c7['message'],_0x1b3ba5);_0x5d0a1e(_0x4cf494[_0xc1e8('0xf')](0x1f4,_0x59a6c7[_0xc1e8('0x11')]));});}else{_0x5d0722(_0x11f88e);}});});};
\ No newline at end of file
+var _0x4639=['\x20MINUTE','Contact','CmList','NOW()','lodash','bluebird','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','info','CmHopper,\x20%s,\x20%s','request\x20sent','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','findAll','options','raw','where','attributes','limit','include','model','map','then','GetCmHopper','debug','ShowCmHopper','CmHopper','find','CreateCmHopper','body','UpdateCmHopper','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','DestroyCmHopper','destroy','GetContactDialer','CmContact','describe','sequelize','transaction','order','LOCK','UPDATE','keys','User','Agent','name','voicePause','UserId','push','update','all','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','ContactId','active','CmHopperFinal','create','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','MoveContactManagedDialer','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','\x22%s\x22','format','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','length','GetCmHopperPreview','findOne','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','interval','availableAgentsIds','NOW()\x20+\x20INTERVAL\x20'];(function(_0x558d6a,_0x4bbbea){var _0x266707=function(_0x565421){while(--_0x565421){_0x558d6a['push'](_0x558d6a['shift']());}};_0x266707(++_0x4bbbea);}(_0x4639,0x115));var _0x9463=function(_0x143a91,_0x235332){_0x143a91=_0x143a91-0x0;var _0x1906f5=_0x4639[_0x143a91];return _0x1906f5;};'use strict';var _=require(_0x9463('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x9463('0x1'));var db=require(_0x9463('0x2'))['db'];var logger=require(_0x9463('0x3'))(_0x9463('0x4'));var jayson=require(_0x9463('0x5'));var client=jayson[_0x9463('0x6')][_0x9463('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4d33e0,_0x368083,_0x10d647){return new BPromise(function(_0x493fdc,_0x494a02){return client[_0x9463('0x8')](_0x4d33e0,_0x10d647)['then'](function(_0x58d09c){logger[_0x9463('0x9')](_0x9463('0xa'),_0x368083,_0x9463('0xb'));logger['debug'](_0x9463('0xc'),_0x368083,_0x9463('0xb'),JSON[_0x9463('0xd')](_0x58d09c));if(_0x58d09c[_0x9463('0xe')]){if(_0x58d09c[_0x9463('0xe')][_0x9463('0xf')]===0x1f4){logger[_0x9463('0xe')](_0x9463('0xa'),_0x368083,_0x58d09c[_0x9463('0xe')][_0x9463('0x10')]);return _0x494a02(_0x58d09c[_0x9463('0xe')][_0x9463('0x10')]);}logger[_0x9463('0xe')](_0x9463('0xa'),_0x368083,_0x58d09c[_0x9463('0xe')][_0x9463('0x10')]);return _0x493fdc(_0x58d09c[_0x9463('0xe')][_0x9463('0x10')]);}else{logger[_0x9463('0x9')]('CmHopper,\x20%s,\x20%s',_0x368083,_0x9463('0xb'));_0x493fdc(_0x58d09c['result'][_0x9463('0x10')]);}})[_0x9463('0x11')](function(_0x1915e5){logger[_0x9463('0xe')](_0x9463('0xa'),_0x368083,_0x1915e5);_0x494a02(_0x1915e5);});});}exports['GetCmHopper']=function(_0x3d5a81){var _0x1314a7=this;return new Promise(function(_0x98f2bc,_0x50b961){return db['CmHopper'][_0x9463('0x12')]({'raw':_0x3d5a81[_0x9463('0x13')]?_0x3d5a81[_0x9463('0x13')][_0x9463('0x14')]===undefined?!![]:![]:!![],'where':_0x3d5a81[_0x9463('0x13')]?_0x3d5a81[_0x9463('0x13')][_0x9463('0x15')]||null:null,'attributes':_0x3d5a81[_0x9463('0x13')]?_0x3d5a81[_0x9463('0x13')][_0x9463('0x16')]||null:null,'limit':_0x3d5a81[_0x9463('0x13')]?_0x3d5a81['options'][_0x9463('0x17')]||null:null,'include':_0x3d5a81[_0x9463('0x13')]?_0x3d5a81[_0x9463('0x13')][_0x9463('0x18')]?_['map'](_0x3d5a81[_0x9463('0x13')][_0x9463('0x18')],function(_0x2d2ef3){return{'model':db[_0x2d2ef3[_0x9463('0x19')]],'as':_0x2d2ef3['as'],'attributes':_0x2d2ef3[_0x9463('0x16')],'include':_0x2d2ef3[_0x9463('0x18')]?_[_0x9463('0x1a')](_0x2d2ef3[_0x9463('0x18')],function(_0x47547a){return{'model':db[_0x47547a[_0x9463('0x19')]],'as':_0x47547a['as'],'attributes':_0x47547a[_0x9463('0x16')],'include':_0x47547a[_0x9463('0x18')]?_[_0x9463('0x1a')](_0x47547a[_0x9463('0x18')],function(_0x62286d){return{'model':db[_0x62286d[_0x9463('0x19')]],'as':_0x62286d['as'],'attributes':_0x62286d[_0x9463('0x16')]};}):[]};}):[]};}):[]:[]})[_0x9463('0x1b')](function(_0x505207){logger[_0x9463('0x9')](_0x9463('0x1c'),_0x3d5a81);logger[_0x9463('0x1d')](_0x9463('0x1c'),_0x3d5a81,JSON[_0x9463('0xd')](_0x505207));_0x98f2bc(_0x505207);})['catch'](function(_0x10e1ac){logger['error'](_0x9463('0x1c'),_0x10e1ac[_0x9463('0x10')],_0x3d5a81);_0x50b961(_0x1314a7[_0x9463('0xe')](0x1f4,_0x10e1ac[_0x9463('0x10')]));});});};exports[_0x9463('0x1e')]=function(_0x26b6a5){var _0x18db64=this;return new Promise(function(_0x59f15f,_0x4effe2){return db[_0x9463('0x1f')][_0x9463('0x20')]({'raw':_0x26b6a5[_0x9463('0x13')]?_0x26b6a5['options'][_0x9463('0x14')]===undefined?!![]:![]:!![],'where':_0x26b6a5[_0x9463('0x13')]?_0x26b6a5[_0x9463('0x13')][_0x9463('0x15')]||null:null,'attributes':_0x26b6a5[_0x9463('0x13')]?_0x26b6a5[_0x9463('0x13')][_0x9463('0x16')]||null:null,'include':_0x26b6a5[_0x9463('0x13')]?_0x26b6a5[_0x9463('0x13')][_0x9463('0x18')]?_[_0x9463('0x1a')](_0x26b6a5[_0x9463('0x13')][_0x9463('0x18')],function(_0x10a00f){return{'model':db[_0x10a00f[_0x9463('0x19')]],'as':_0x10a00f['as'],'attributes':_0x10a00f[_0x9463('0x16')],'include':_0x10a00f[_0x9463('0x18')]?_[_0x9463('0x1a')](_0x10a00f[_0x9463('0x18')],function(_0x248ba5){return{'model':db[_0x248ba5[_0x9463('0x19')]],'as':_0x248ba5['as'],'attributes':_0x248ba5['attributes'],'include':_0x248ba5['include']?_['map'](_0x248ba5[_0x9463('0x18')],function(_0xd9a798){return{'model':db[_0xd9a798[_0x9463('0x19')]],'as':_0xd9a798['as'],'attributes':_0xd9a798[_0x9463('0x16')]};}):[]};}):[]};}):[]:[]})[_0x9463('0x1b')](function(_0x13cf19){logger[_0x9463('0x9')](_0x9463('0x1e'),_0x26b6a5);logger[_0x9463('0x1d')](_0x9463('0x1e'),_0x26b6a5,JSON[_0x9463('0xd')](_0x13cf19));_0x59f15f(_0x13cf19);})[_0x9463('0x11')](function(_0x44f225){logger['error'](_0x9463('0x1e'),_0x44f225['message'],_0x26b6a5);_0x4effe2(_0x18db64[_0x9463('0xe')](0x1f4,_0x44f225['message']));});});};exports[_0x9463('0x21')]=function(_0x3003f9){var _0x4237e8=this;return new Promise(function(_0x233a4e,_0x29a3d7){return db[_0x9463('0x1f')]['create'](_0x3003f9[_0x9463('0x22')],{'raw':_0x3003f9[_0x9463('0x13')]?_0x3003f9[_0x9463('0x13')][_0x9463('0x14')]===undefined?!![]:![]:!![]})[_0x9463('0x1b')](function(_0x3a0261){logger[_0x9463('0x9')](_0x9463('0x21'),_0x3003f9);logger[_0x9463('0x1d')](_0x9463('0x21'),_0x3003f9,JSON[_0x9463('0xd')](_0x3a0261));_0x233a4e(_0x3a0261);})[_0x9463('0x11')](function(_0x36d687){logger[_0x9463('0xe')](_0x9463('0x21'),_0x36d687[_0x9463('0x10')],_0x3003f9);_0x29a3d7(_0x4237e8[_0x9463('0xe')](0x1f4,_0x36d687[_0x9463('0x10')]));});});};exports['UpdateCmHopper']=function(_0x4c391b){var _0xf656e5=this;return new Promise(function(_0x193958,_0x372b6a){return db[_0x9463('0x1f')]['update'](_0x4c391b[_0x9463('0x22')],{'raw':_0x4c391b['options']?_0x4c391b[_0x9463('0x13')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4c391b[_0x9463('0x13')]?_0x4c391b[_0x9463('0x13')]['where']||null:null,'attributes':_0x4c391b[_0x9463('0x13')]?_0x4c391b[_0x9463('0x13')]['attributes']||null:null,'limit':_0x4c391b[_0x9463('0x13')]?_0x4c391b[_0x9463('0x13')][_0x9463('0x17')]||null:null})[_0x9463('0x1b')](function(_0xe2533a){logger[_0x9463('0x9')](_0x9463('0x23'),_0x4c391b);logger[_0x9463('0x9')](_0x9463('0x24'),JSON[_0x9463('0xd')](_0x4c391b[_0x9463('0x13')][_0x9463('0x15')]),_0x4c391b[_0x9463('0x22')]['active']);logger[_0x9463('0x1d')]('UpdateCmHopper',_0x4c391b,JSON[_0x9463('0xd')](_0xe2533a));_0x193958(_0xe2533a);})[_0x9463('0x11')](function(_0x53c614){logger['error']('UpdateCmHopper',_0x53c614[_0x9463('0x10')],_0x4c391b);_0x372b6a(_0xf656e5['error'](0x1f4,_0x53c614['message']));});});};exports[_0x9463('0x25')]=function(_0x19775d){var _0x17706a=this;return new Promise(function(_0x1fa268,_0x491eb7){return db['CmHopper'][_0x9463('0x26')]({'where':_0x19775d[_0x9463('0x13')]?_0x19775d[_0x9463('0x13')][_0x9463('0x15')]||null:null})[_0x9463('0x1b')](function(_0x2b6277){logger[_0x9463('0x9')](_0x9463('0x25'),_0x19775d);logger[_0x9463('0x1d')](_0x9463('0x25'),_0x19775d,JSON['stringify'](_0x2b6277));_0x1fa268(_0x2b6277);})[_0x9463('0x11')](function(_0x465f68){logger['error'](_0x9463('0x25'),_0x465f68[_0x9463('0x10')],_0x19775d);_0x491eb7(_0x17706a[_0x9463('0xe')](0x1f4,_0x465f68['message']));});});};exports[_0x9463('0x27')]=function(_0xaf1dca){var _0x25385e=this;return new Promise(function(_0x47ed44,_0x3bac22){return db[_0x9463('0x28')][_0x9463('0x29')]()[_0x9463('0x1b')](function(_0x53b390){return db[_0x9463('0x2a')][_0x9463('0x2b')](function(_0x441bdd){return db[_0x9463('0x1f')][_0x9463('0x12')]({'where':_0xaf1dca['options']?_0xaf1dca[_0x9463('0x13')][_0x9463('0x15')]||null:null,'attributes':_0xaf1dca[_0x9463('0x13')]?_0xaf1dca['options'][_0x9463('0x16')]||null:null,'limit':_0xaf1dca['options']?_0xaf1dca['options'][_0x9463('0x17')]||null:null,'order':_0xaf1dca[_0x9463('0x13')]?_0xaf1dca['options'][_0x9463('0x2c')]||null:null,'transaction':_0x441bdd,'lock':_0x441bdd[_0x9463('0x2d')][_0x9463('0x2e')],'include':[{'model':db[_0x9463('0x28')],'as':'Contact','attributes':_[_0x9463('0x2f')](_0x53b390)},{'model':db[_0x9463('0x30')],'as':_0x9463('0x31'),'attributes':['id',_0x9463('0x32'),_0x9463('0x33')]}]})[_0x9463('0x1b')](function(_0x4bf036){var _0x3f470a=[];var _0x2373bd=[];for(var _0x248da6=0x0;_0x248da6<_0x4bf036['length'];_0x248da6+=0x1){var _0x35dcde=_0x4bf036[_0x248da6][_0x9463('0x34')];if(_0x35dcde===null){_0x3f470a[_0x9463('0x35')](_0x4bf036[_0x248da6][_0x9463('0x36')](_0xaf1dca['body'],{'transaction':_0x441bdd}));}else if(!_0x2373bd['includes'](_0x35dcde)){_0x2373bd['push'](_0x35dcde);_0x3f470a[_0x9463('0x35')](_0x4bf036[_0x248da6]['update'](_0xaf1dca[_0x9463('0x22')],{'transaction':_0x441bdd}));}}return BPromise[_0x9463('0x37')](_0x3f470a);});})[_0x9463('0x1b')](function(_0x59a54f){logger[_0x9463('0x9')](_0x9463('0x27'),_0xaf1dca);if(_0x59a54f['length']>0x0){logger[_0x9463('0x9')](_0x9463('0x38'),_0x59a54f[0x0][_0x9463('0x39')]['id'],_0x59a54f[0x0][_0x9463('0x39')][_0x9463('0x3a')],_0x59a54f[0x0][_0x9463('0x39')][_0x9463('0x3b')]);}logger[_0x9463('0x1d')]('GetContactDialer',_0xaf1dca,JSON[_0x9463('0xd')](_0x59a54f));_0x47ed44(_0x59a54f);})[_0x9463('0x11')](function(_0x332ca8){logger[_0x9463('0xe')](_0x9463('0x27'),_0x332ca8['message'],_0xaf1dca);_0x3bac22(_0x25385e[_0x9463('0xe')](0x1f4,_0x332ca8['message']));});});});};exports['MoveContactManagedDialer']=function(_0x1a9038){var _0x28c074=this;return new Promise(function(_0x3bbff6,_0x1e5527){return db[_0x9463('0x2a')][_0x9463('0x2b')](function(_0x31b975){return db[_0x9463('0x3c')][_0x9463('0x3d')](_0x1a9038[_0x9463('0x22')],{'raw':_0x1a9038[_0x9463('0x13')]?_0x1a9038[_0x9463('0x13')][_0x9463('0x14')]===undefined?!![]:![]:!![],'transaction':_0x31b975})[_0x9463('0x1b')](function(){logger[_0x9463('0x9')](_0x9463('0x3e'),JSON[_0x9463('0xd')](_0x1a9038[_0x9463('0x13')][_0x9463('0x15')]),_0x1a9038['options'][_0x9463('0x15')][_0x9463('0x3b')]);return db[_0x9463('0x1f')][_0x9463('0x26')]({'where':_0x1a9038[_0x9463('0x13')]?_0x1a9038[_0x9463('0x13')][_0x9463('0x15')]||null:null,'transaction':_0x31b975});});})[_0x9463('0x1b')](function(_0x33d59b){logger[_0x9463('0x9')]('MoveContactManagedDialer',_0x1a9038);logger['debug'](_0x9463('0x3f'),_0x1a9038,JSON[_0x9463('0xd')](_0x33d59b));_0x3bbff6(_0x33d59b);})[_0x9463('0x11')](function(_0x56d005){logger[_0x9463('0xe')](_0x9463('0x3f'),_0x56d005[_0x9463('0x10')],_0x1a9038);_0x1e5527(_0x28c074['error'](0x1f4,_0x56d005[_0x9463('0x10')]));});});};exports[_0x9463('0x40')]=function(_0x2f8b45){var _0x356603=this;return new Promise(function(_0x3bb8bd,_0x249dfe){return db[_0x9463('0x1f')][_0x9463('0x12')]({'raw':_0x2f8b45[_0x9463('0x13')]?_0x2f8b45[_0x9463('0x13')][_0x9463('0x14')]===undefined?!![]:![]:!![],'where':_0x2f8b45[_0x9463('0x13')]?_0x2f8b45[_0x9463('0x13')]['where']||null:null,'attributes':[[db[_0x9463('0x2a')]['fn'](_0x9463('0x41'),db[_0x9463('0x2a')]['fn']('IF',db['sequelize'][_0x9463('0x42')](_0x9463('0x43')+util['format'](_0x9463('0x44'),moment()[_0x9463('0x45')](_0x9463('0x46')))+_0x9463('0x47')))),_0x9463('0x48')]]})['then'](function(_0x224412){logger[_0x9463('0x9')](_0x9463('0x40'),_0x2f8b45);logger[_0x9463('0x1d')]('CountReScheduled',_0x2f8b45,JSON[_0x9463('0xd')](_0x224412));_0x3bb8bd(_0x224412);})['catch'](function(_0x5abdb8){logger[_0x9463('0xe')](_0x9463('0x40'),_0x5abdb8[_0x9463('0x10')],_0x2f8b45);_0x249dfe(_0x356603['error'](0x1f4,_0x5abdb8[_0x9463('0x10')]));});});};exports[_0x9463('0x49')]=function(_0x5a1a73){var _0x370132=this;return new Promise(function(_0x3b0f96,_0xa7c850){return db['CmContact'][_0x9463('0x29')]()[_0x9463('0x1b')](function(_0x48aab9){return db[_0x9463('0x2a')][_0x9463('0x2b')](function(_0x5c4a00){return db['CmHopper']['findAll']({'where':_0x5a1a73[_0x9463('0x13')]?_0x5a1a73[_0x9463('0x13')]['where']||null:null,'attributes':_0x5a1a73['options']?_0x5a1a73[_0x9463('0x13')][_0x9463('0x16')]||null:null,'limit':0x1,'order':_0x5a1a73[_0x9463('0x13')]?_0x5a1a73[_0x9463('0x13')][_0x9463('0x2c')]||null:null,'group':db[_0x9463('0x1f')][_0x9463('0x34')],'transaction':_0x5c4a00,'lock':_0x5c4a00[_0x9463('0x2d')][_0x9463('0x2e')],'include':_0x5a1a73[_0x9463('0x13')]?_0x5a1a73[_0x9463('0x13')][_0x9463('0x18')]?_[_0x9463('0x1a')](_0x5a1a73[_0x9463('0x13')]['include'],function(_0x2ee500){return{'model':db[_0x2ee500[_0x9463('0x19')]],'as':_0x2ee500['as'],'attributes':_0x2ee500[_0x9463('0x16')],'include':_0x2ee500[_0x9463('0x18')]?_[_0x9463('0x1a')](_0x2ee500[_0x9463('0x18')],function(_0x543c5b){return{'model':db[_0x543c5b[_0x9463('0x19')]],'as':_0x543c5b['as'],'attributes':_0x543c5b['attributes'],'include':_0x543c5b[_0x9463('0x18')]?_['map'](_0x543c5b[_0x9463('0x18')],function(_0x1c6f20){return{'model':db[_0x1c6f20['model']],'as':_0x1c6f20['as'],'attributes':_0x1c6f20[_0x9463('0x16')]};}):[]};}):[]};}):[]:[]})[_0x9463('0x1b')](function(_0x19d6e6){var _0x2d46fa=[];for(var _0xd50140=0x0;_0xd50140<_0x19d6e6[_0x9463('0x4a')];_0xd50140+=0x1){_0x2d46fa[_0x9463('0x35')](_0x19d6e6[_0xd50140]['update'](_0x5a1a73['body'],{'transaction':_0x5c4a00}));}return BPromise['all'](_0x2d46fa);});})[_0x9463('0x1b')](function(_0x56e97c){logger['info'](_0x9463('0x49'),_0x5a1a73);logger[_0x9463('0x1d')](_0x9463('0x49'),_0x5a1a73,JSON[_0x9463('0xd')](_0x56e97c));_0x3b0f96(_0x56e97c);})[_0x9463('0x11')](function(_0x17a240){logger['error'](_0x9463('0x49'),_0x17a240[_0x9463('0x10')],_0x5a1a73);_0xa7c850(_0x370132[_0x9463('0xe')](0x1f4,_0x17a240[_0x9463('0x10')]));});});});};exports[_0x9463('0x4b')]=function(_0x2c87b9){var _0x4295d7=this;return new Promise(function(_0x58e473,_0x4310d5){db[_0x9463('0x28')][_0x9463('0x29')]()[_0x9463('0x1b')](function(_0x57e644){return db[_0x9463('0x1f')][_0x9463('0x12')]({'raw':_0x2c87b9[_0x9463('0x13')]?_0x2c87b9[_0x9463('0x13')]['raw']===undefined?!![]:![]:!![],'where':_0x2c87b9[_0x9463('0x13')]?_0x2c87b9['options'][_0x9463('0x15')]||null:null,'attributes':_0x2c87b9[_0x9463('0x13')]?_0x2c87b9[_0x9463('0x13')][_0x9463('0x16')]||null:null,'limit':_0x2c87b9[_0x9463('0x13')]?_0x2c87b9[_0x9463('0x13')]['limit']||null:null,'include':_0x2c87b9[_0x9463('0x13')]?_0x2c87b9[_0x9463('0x13')]['include']?_['map'](_0x2c87b9[_0x9463('0x13')][_0x9463('0x18')],function(_0xdb8452){return{'model':db[_0xdb8452[_0x9463('0x19')]],'as':_0xdb8452['as'],'attributes':_0xdb8452['as']==='Contact'?_['keys'](_0x57e644):_0xdb8452['attributes'],'include':_0xdb8452[_0x9463('0x18')]?_[_0x9463('0x1a')](_0xdb8452['include'],function(_0x5a0005){return{'model':db[_0x5a0005[_0x9463('0x19')]],'as':_0x5a0005['as'],'attributes':_0x5a0005[_0x9463('0x16')],'include':_0x5a0005['include']?_[_0x9463('0x1a')](_0x5a0005['include'],function(_0x342641){return{'model':db[_0x342641['model']],'as':_0x342641['as'],'attributes':_0x342641[_0x9463('0x16')]};}):[]};}):[]};}):[]:[]})[_0x9463('0x1b')](function(_0x2a9046){logger['info'](_0x9463('0x1c'),_0x2c87b9);logger[_0x9463('0x1d')]('GetCmHopper',_0x2c87b9,JSON[_0x9463('0xd')](_0x2a9046));_0x58e473(_0x2a9046);})[_0x9463('0x11')](function(_0x1d746f){logger[_0x9463('0xe')](_0x9463('0x1c'),_0x1d746f['message'],_0x2c87b9);_0x4310d5(_0x4295d7[_0x9463('0xe')](0x1f4,_0x1d746f[_0x9463('0x10')]));});});});};exports['GetContactByPhone']=function(_0x478967){var _0x92272e=this;return new Promise(function(_0x33400a,_0x46317d){return db[_0x9463('0x28')][_0x9463('0x4c')]({'raw':!![],'where':{'phone':_0x478967[_0x9463('0x13')]['where'][_0x9463('0x4d')]},'attributes':['id',_0x9463('0x4e')],'order':[['id',_0x9463('0x4f')]]})['then'](function(_0x1ee454){logger[_0x9463('0x9')](_0x9463('0x50'),_0x478967);logger['debug'](_0x9463('0x50'),_0x478967,JSON[_0x9463('0xd')](_0x1ee454));_0x33400a(_0x1ee454);})[_0x9463('0x11')](function(_0x172043){logger['error'](_0x9463('0x50'),_0x172043[_0x9463('0x10')],_0x478967);_0x46317d(_0x92272e[_0x9463('0xe')](0x1f4,_0x172043[_0x9463('0x10')]));});});};exports[_0x9463('0x51')]=function(_0x3ebb77){var _0x14fb65=this;return new Promise(function(_0x3297d4,_0x54c9d3){return db[_0x9463('0x2a')][_0x9463('0x2b')](function(_0x397352){return db[_0x9463('0x1f')][_0x9463('0x36')]({'active':![]},{'where':{},'transaction':_0x397352})[_0x9463('0x1b')](function(_0x59c104){logger[_0x9463('0x9')](_0x9463('0x51'),_0x3ebb77);logger['debug'](_0x9463('0x51'),_0x3ebb77,JSON['stringify'](_0x59c104));_0x3297d4(_0x59c104);})['catch'](function(_0x516382){logger['error']('ResetActiveCalls',_0x516382[_0x9463('0x10')],_0x3ebb77);_0x54c9d3(_0x14fb65[_0x9463('0xe')](0x1f4,_0x516382['message']));});});});};exports[_0x9463('0x52')]=function(_0x21ceb3){var _0x34974a=this;var _0x4ac92b=_0x21ceb3[_0x9463('0x22')]['where'][_0x9463('0x53')];var _0x517b06=_0x21ceb3[_0x9463('0x22')][_0x9463('0x15')][_0x9463('0x54')];var _0x55e633=_0x21ceb3[_0x9463('0x22')]['where'][_0x9463('0x55')];return new Promise(function(_0x3f0a49,_0x2d5f03){return db[_0x9463('0x1f')][_0x9463('0x12')]({'where':{'voiceQueueId':{'$in':_0x4ac92b},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0x9463('0x2a')][_0x9463('0x42')](_0x9463('0x56')+_0x517b06+_0x9463('0x57')),'$gt':db['sequelize'][_0x9463('0x42')]('NOW()')}},'UserId':{'$in':_0x55e633}},'include':[{'model':db['CmContact'],'as':_0x9463('0x58')},{'model':db[_0x9463('0x30')],'as':_0x9463('0x31'),'attributes':['id',_0x9463('0x32'),_0x9463('0x33')]},{'model':db[_0x9463('0x59')],'as':'List'}]})[_0x9463('0x1b')](function(_0x8eb507){if(_0x8eb507[_0x9463('0x4a')]>0x0){return db[_0x9463('0x2a')]['transaction'](function(_0x2a63bb){return db[_0x9463('0x1f')][_0x9463('0x36')]({'recallmeNotifiedDate':db[_0x9463('0x2a')][_0x9463('0x42')](_0x9463('0x5a'))},{'where':{'id':{'$in':_['map'](_0x8eb507,'id')}},'transaction':_0x2a63bb})[_0x9463('0x1b')](function(){_0x3f0a49(_0x8eb507);})[_0x9463('0x11')](function(_0x2125ea){logger[_0x9463('0xe')](_0x9463('0x52'),_0x2125ea[_0x9463('0x10')],_0x21ceb3);_0x2d5f03(_0x34974a['error'](0x1f4,_0x2125ea[_0x9463('0x10')]));});})[_0x9463('0x11')](function(_0x390ec1){logger[_0x9463('0xe')](_0x9463('0x52'),_0x390ec1[_0x9463('0x10')],_0x21ceb3);_0x2d5f03(_0x34974a['error'](0x1f4,_0x390ec1[_0x9463('0x10')]));});}else{_0x3f0a49(_0x8eb507);}});});};
\ No newline at end of file
index f4885b8..2c122c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf95c=['getPreview','getTimezone','put','destroy','exports','express','Router','../../components/auth/service','./cmHopper.controller','get','isAuthenticated','index','/describe','describe','/opencontacts','getOpenContacts','/:id','show','/:id/previewrecall','getPreviewRecall','post','create','/preview'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf95c,0x1ba));var _0xcf95=function(_0x3c9877,_0x2d9bc2){_0x3c9877=_0x3c9877-0x0;var _0x3bcd71=_0xf95c[_0x3c9877];return _0x3bcd71;};'use strict';var express=require(_0xcf95('0x0'));var router=express[_0xcf95('0x1')]();var auth=require(_0xcf95('0x2'));var controller=require(_0xcf95('0x3'));router[_0xcf95('0x4')]('/',auth[_0xcf95('0x5')](),controller[_0xcf95('0x6')]);router['get'](_0xcf95('0x7'),auth[_0xcf95('0x5')](),controller[_0xcf95('0x8')]);router[_0xcf95('0x4')](_0xcf95('0x9'),auth[_0xcf95('0x5')](),controller[_0xcf95('0xa')]);router[_0xcf95('0x4')]('/timezones',auth['isAuthenticated'](),controller['getTimezones']);router[_0xcf95('0x4')](_0xcf95('0xb'),auth[_0xcf95('0x5')](),controller[_0xcf95('0xc')]);router[_0xcf95('0x4')](_0xcf95('0xd'),auth['isAuthenticated'](),controller[_0xcf95('0xe')]);router[_0xcf95('0xf')]('/',auth['isAuthenticated'](),controller[_0xcf95('0x10')]);router[_0xcf95('0xf')](_0xcf95('0x11'),auth[_0xcf95('0x5')](),controller[_0xcf95('0x12')]);router['post']('/timezone',auth[_0xcf95('0x5')](),controller[_0xcf95('0x13')]);router[_0xcf95('0x14')](_0xcf95('0xb'),auth[_0xcf95('0x5')](),controller['update']);router['delete'](_0xcf95('0xb'),auth[_0xcf95('0x5')](),controller[_0xcf95('0x15')]);module[_0xcf95('0x16')]=router;
\ No newline at end of file
+var _0x2784=['/:id','show','getPreviewRecall','post','create','getTimezone','put','update','destroy','express','./cmHopper.controller','get','describe','/opencontacts','isAuthenticated','getOpenContacts','/timezones','getTimezones'];(function(_0x450866,_0x555290){var _0x310427=function(_0x2b7eaa){while(--_0x2b7eaa){_0x450866['push'](_0x450866['shift']());}};_0x310427(++_0x555290);}(_0x2784,0x129));var _0x4278=function(_0x4e2297,_0x59877a){_0x4e2297=_0x4e2297-0x0;var _0x3905a3=_0x2784[_0x4e2297];return _0x3905a3;};'use strict';var express=require(_0x4278('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0x4278('0x1'));router[_0x4278('0x2')]('/',auth['isAuthenticated'](),controller['index']);router[_0x4278('0x2')]('/describe',auth['isAuthenticated'](),controller[_0x4278('0x3')]);router['get'](_0x4278('0x4'),auth[_0x4278('0x5')](),controller[_0x4278('0x6')]);router[_0x4278('0x2')](_0x4278('0x7'),auth['isAuthenticated'](),controller[_0x4278('0x8')]);router[_0x4278('0x2')](_0x4278('0x9'),auth[_0x4278('0x5')](),controller[_0x4278('0xa')]);router[_0x4278('0x2')]('/:id/previewrecall',auth['isAuthenticated'](),controller[_0x4278('0xb')]);router[_0x4278('0xc')]('/',auth['isAuthenticated'](),controller[_0x4278('0xd')]);router[_0x4278('0xc')]('/preview',auth['isAuthenticated'](),controller['getPreview']);router[_0x4278('0xc')]('/timezone',auth[_0x4278('0x5')](),controller[_0x4278('0xe')]);router[_0x4278('0xf')](_0x4278('0x9'),auth[_0x4278('0x5')](),controller[_0x4278('0x10')]);router['delete'](_0x4278('0x9'),auth['isAuthenticated'](),controller[_0x4278('0x11')]);module['exports']=router;
\ No newline at end of file
index 173202f..bfbeb73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9cb=['INTEGER','STRING','DATE','YYYY-MM-DD\x20HH:mm:ss','moment','sequelize','exports'];(function(_0x384396,_0xc008f1){var _0x9e8de7=function(_0x3d4004){while(--_0x3d4004){_0x384396['push'](_0x384396['shift']());}};_0x9e8de7(++_0xc008f1);}(_0xc9cb,0xf2));var _0xbc9c=function(_0x193d5a,_0x3ef3be){_0x193d5a=_0x193d5a-0x0;var _0x2e5fb1=_0xc9cb[_0x193d5a];return _0x2e5fb1;};'use strict';var moment=require(_0xbc9c('0x0'));var Sequelize=require(_0xbc9c('0x1'));module[_0xbc9c('0x2')]={'CmHopperId':{'type':Sequelize[_0xbc9c('0x3')]},'phone':{'type':Sequelize[_0xbc9c('0x4')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0xbc9c('0x3')],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0xbc9c('0x5')],'defaultValue':moment()['format'](_0xbc9c('0x6'))},'countbusyretry':{'type':Sequelize[_0xbc9c('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xbc9c('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0xbc9c('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xbc9c('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xbc9c('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xbc9c('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa2f4=['DATE','format','YYYY-MM-DD\x20HH:mm:ss','sequelize','exports','INTEGER','STRING'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0xa2f4,0x106));var _0x4a2f=function(_0x3287f4,_0x131a75){_0x3287f4=_0x3287f4-0x0;var _0x4f6d7e=_0xa2f4[_0x3287f4];return _0x4f6d7e;};'use strict';var moment=require('moment');var Sequelize=require(_0x4a2f('0x0'));module[_0x4a2f('0x1')]={'CmHopperId':{'type':Sequelize[_0x4a2f('0x2')]},'phone':{'type':Sequelize[_0x4a2f('0x3')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0x4a2f('0x2')],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0x4a2f('0x4')],'defaultValue':moment()[_0x4a2f('0x5')](_0x4a2f('0x6'))},'countbusyretry':{'type':Sequelize[_0x4a2f('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x4a2f('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x4a2f('0x2')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0x4a2f('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x4a2f('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x4a2f('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index ff7bd68..b98ccee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe760=['order','sort','where','pick','merge','filter','includeAll','include','findAll','catch','show','params','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','get','CmHopperAdditionalPhones','UserProfileResource','stack','name','send','index','CmHopperAdditionalPhone','fieldName','type','key','map','query','keys','filters','intersection','attributes','fields','model','hasOwnProperty','nolimit'];(function(_0x4cadfd,_0x889708){var _0x4985f6=function(_0x518760){while(--_0x518760){_0x4cadfd['push'](_0x4cadfd['shift']());}};_0x4985f6(++_0x889708);}(_0xe760,0x116));var _0x0e76=function(_0x196ca0,_0x125cd7){_0x196ca0=_0x196ca0-0x0;var _0x554c6b=_0xe760[_0x196ca0];return _0x554c6b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0e76('0x0'));var zipdir=require(_0x0e76('0x1'));var jsonpatch=require(_0x0e76('0x2'));var rp=require(_0x0e76('0x3'));var moment=require(_0x0e76('0x4'));var BPromise=require(_0x0e76('0x5'));var Mustache=require(_0x0e76('0x6'));var util=require('util');var path=require('path');var sox=require(_0x0e76('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0e76('0x8'));var squel=require(_0x0e76('0x9'));var crypto=require(_0x0e76('0xa'));var jsforce=require(_0x0e76('0xb'));var deskjs=require(_0x0e76('0xc'));var toCsv=require(_0x0e76('0xd'));var querystring=require(_0x0e76('0xe'));var Papa=require(_0x0e76('0xf'));var Redis=require(_0x0e76('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x0e76('0x11'));var as=require(_0x0e76('0x12'));var hardwareService=require(_0x0e76('0x13'));var logger=require(_0x0e76('0x14'))(_0x0e76('0x15'));var utils=require(_0x0e76('0x16'));var config=require(_0x0e76('0x17'));var licenseUtil=require(_0x0e76('0x18'));var db=require(_0x0e76('0x19'))['db'];function respondWithStatusCode(_0x13b001,_0x391592){_0x391592=_0x391592||0xcc;return function(_0x187ed2){if(_0x187ed2){return _0x13b001[_0x0e76('0x1a')](_0x391592);}return _0x13b001[_0x0e76('0x1b')](_0x391592)[_0x0e76('0x1c')]();};}function respondWithResult(_0x53a310,_0x17a57e){_0x17a57e=_0x17a57e||0xc8;return function(_0x4fff5c){if(_0x4fff5c){return _0x53a310[_0x0e76('0x1b')](_0x17a57e)[_0x0e76('0x1d')](_0x4fff5c);}};}function respondWithFilteredResult(_0xbdf43b,_0xb67630){return function(_0x2aa5fe){if(_0x2aa5fe){var _0x1d7803=typeof _0xb67630[_0x0e76('0x1e')]===_0x0e76('0x1f')&&typeof _0xb67630[_0x0e76('0x20')]===_0x0e76('0x1f');var _0x595450=_0x2aa5fe[_0x0e76('0x21')];var _0x519920=_0x1d7803?0x0:_0xb67630[_0x0e76('0x1e')];var _0x2d6695=_0x1d7803?_0x2aa5fe[_0x0e76('0x21')]:_0xb67630[_0x0e76('0x1e')]+_0xb67630[_0x0e76('0x20')];var _0x2287b5;if(_0x2d6695>=_0x595450){_0x2d6695=_0x595450;_0x2287b5=0xc8;}else{_0x2287b5=0xce;}_0xbdf43b[_0x0e76('0x1b')](_0x2287b5);return _0xbdf43b[_0x0e76('0x22')](_0x0e76('0x23'),_0x519920+'-'+_0x2d6695+'/'+_0x595450)[_0x0e76('0x1d')](_0x2aa5fe);}return null;};}function patchUpdates(_0x167fba){return function(_0x83d2){try{jsonpatch[_0x0e76('0x24')](_0x83d2,_0x167fba,!![]);}catch(_0x1f459f){return BPromise[_0x0e76('0x25')](_0x1f459f);}return _0x83d2[_0x0e76('0x26')]();};}function saveUpdates(_0x16ffd6,_0x535de9){return function(_0x1a0c37){if(_0x1a0c37){return _0x1a0c37['update'](_0x16ffd6)[_0x0e76('0x27')](function(_0x3f5fe4){return _0x3f5fe4;});}return null;};}function removeEntity(_0x5bad83,_0x21a75f){return function(_0x42a66a){if(_0x42a66a){return _0x42a66a[_0x0e76('0x28')]()[_0x0e76('0x27')](function(){var _0x3dd1d2=_0x42a66a[_0x0e76('0x29')]({'plain':!![]});var _0x1335f2=_0x0e76('0x2a');return db[_0x0e76('0x2b')][_0x0e76('0x28')]({'where':{'type':_0x1335f2,'resourceId':_0x3dd1d2['id']}})[_0x0e76('0x27')](function(){return _0x42a66a;});})[_0x0e76('0x27')](function(){_0x5bad83[_0x0e76('0x1b')](0xcc)[_0x0e76('0x1c')]();});}};}function handleEntityNotFound(_0x48da05,_0x14b184){return function(_0x5cb2b2){if(!_0x5cb2b2){_0x48da05[_0x0e76('0x1a')](0x194);}return _0x5cb2b2;};}function handleError(_0x5757ec,_0x2a1a60){_0x2a1a60=_0x2a1a60||0x1f4;return function(_0x2f61c8){logger['error'](_0x2f61c8[_0x0e76('0x2c')]);if(_0x2f61c8[_0x0e76('0x2d')]){delete _0x2f61c8['name'];}_0x5757ec[_0x0e76('0x1b')](_0x2a1a60)[_0x0e76('0x2e')](_0x2f61c8);};}exports[_0x0e76('0x2f')]=function(_0xbfefaa,_0x46ea3d){var _0x20dcea={},_0x5ee093={},_0x48b0da={'count':0x0,'rows':[]};var _0x1076ab=_['map'](db[_0x0e76('0x30')]['rawAttributes'],function(_0xca73dd){return{'name':_0xca73dd[_0x0e76('0x31')],'type':_0xca73dd[_0x0e76('0x32')][_0x0e76('0x33')]};});_0x5ee093['model']=_[_0x0e76('0x34')](_0x1076ab,_0x0e76('0x2d'));_0x5ee093[_0x0e76('0x35')]=_[_0x0e76('0x36')](_0xbfefaa[_0x0e76('0x35')]);_0x5ee093[_0x0e76('0x37')]=_[_0x0e76('0x38')](_0x5ee093['model'],_0x5ee093[_0x0e76('0x35')]);_0x20dcea[_0x0e76('0x39')]=_[_0x0e76('0x38')](_0x5ee093['model'],qs[_0x0e76('0x3a')](_0xbfefaa['query'][_0x0e76('0x3a')]));_0x20dcea[_0x0e76('0x39')]=_0x20dcea[_0x0e76('0x39')]['length']?_0x20dcea['attributes']:_0x5ee093[_0x0e76('0x3b')];if(!_0xbfefaa[_0x0e76('0x35')][_0x0e76('0x3c')](_0x0e76('0x3d'))){_0x20dcea[_0x0e76('0x20')]=qs[_0x0e76('0x20')](_0xbfefaa[_0x0e76('0x35')][_0x0e76('0x20')]);_0x20dcea[_0x0e76('0x1e')]=qs[_0x0e76('0x1e')](_0xbfefaa[_0x0e76('0x35')][_0x0e76('0x1e')]);}_0x20dcea[_0x0e76('0x3e')]=qs[_0x0e76('0x3f')](_0xbfefaa[_0x0e76('0x35')][_0x0e76('0x3f')]);_0x20dcea[_0x0e76('0x40')]=qs['filters'](_[_0x0e76('0x41')](_0xbfefaa[_0x0e76('0x35')],_0x5ee093[_0x0e76('0x37')]),_0x1076ab);if(_0xbfefaa[_0x0e76('0x35')]['filter']){_0x20dcea['where']=_[_0x0e76('0x42')](_0x20dcea[_0x0e76('0x40')],{'$or':_['map'](_0x1076ab,function(_0x4d5222){if(_0x4d5222['type']!=='VIRTUAL'){var _0x1d6800={};_0x1d6800[_0x4d5222[_0x0e76('0x2d')]]={'$like':'%'+_0xbfefaa['query'][_0x0e76('0x43')]+'%'};return _0x1d6800;}})});}_0x20dcea=_['merge']({},_0x20dcea,_0xbfefaa['options']);var _0x1e23e7={'where':_0x20dcea[_0x0e76('0x40')]};return db[_0x0e76('0x30')][_0x0e76('0x21')](_0x1e23e7)[_0x0e76('0x27')](function(_0x3201c3){_0x48b0da[_0x0e76('0x21')]=_0x3201c3;if(_0xbfefaa[_0x0e76('0x35')][_0x0e76('0x44')]){_0x20dcea[_0x0e76('0x45')]=[{'all':!![]}];}return db[_0x0e76('0x30')][_0x0e76('0x46')](_0x20dcea);})[_0x0e76('0x27')](function(_0xf4ec9b){_0x48b0da['rows']=_0xf4ec9b;return _0x48b0da;})[_0x0e76('0x27')](respondWithFilteredResult(_0x46ea3d,_0x20dcea))[_0x0e76('0x47')](handleError(_0x46ea3d,null));};exports[_0x0e76('0x48')]=function(_0x586079,_0x51a4d6){var _0xa97ab5={'raw':!![],'where':{'id':_0x586079[_0x0e76('0x49')]['id']}},_0x3aa6d6={};_0x3aa6d6[_0x0e76('0x3b')]=_[_0x0e76('0x36')](db[_0x0e76('0x30')]['rawAttributes']);_0x3aa6d6[_0x0e76('0x35')]=_['keys'](_0x586079[_0x0e76('0x35')]);_0x3aa6d6[_0x0e76('0x37')]=_[_0x0e76('0x38')](_0x3aa6d6[_0x0e76('0x3b')],_0x3aa6d6[_0x0e76('0x35')]);_0xa97ab5[_0x0e76('0x39')]=_[_0x0e76('0x38')](_0x3aa6d6[_0x0e76('0x3b')],qs[_0x0e76('0x3a')](_0x586079[_0x0e76('0x35')][_0x0e76('0x3a')]));_0xa97ab5['attributes']=_0xa97ab5[_0x0e76('0x39')][_0x0e76('0x4a')]?_0xa97ab5[_0x0e76('0x39')]:_0x3aa6d6[_0x0e76('0x3b')];if(_0x586079['query'][_0x0e76('0x44')]){_0xa97ab5[_0x0e76('0x45')]=[{'all':!![]}];}_0xa97ab5=_['merge']({},_0xa97ab5,_0x586079['options']);return db[_0x0e76('0x30')][_0x0e76('0x4b')](_0xa97ab5)['then'](handleEntityNotFound(_0x51a4d6,null))['then'](respondWithResult(_0x51a4d6,null))[_0x0e76('0x47')](handleError(_0x51a4d6,null));};exports[_0x0e76('0x4c')]=function(_0x1d2eed,_0x20779d){return db[_0x0e76('0x30')]['create'](_0x1d2eed['body'],{})[_0x0e76('0x27')](function(_0x44dc91){var _0x2630ea=_0x1d2eed[_0x0e76('0x4d')][_0x0e76('0x29')]({'plain':!![]});if(!_0x2630ea)throw new Error(_0x0e76('0x4e'));if(_0x2630ea[_0x0e76('0x4f')]===_0x0e76('0x4d')){var _0x1a5f55=_0x44dc91['get']({'plain':!![]});var _0x5725bc=_0x0e76('0x2a');return db['UserProfileSection'][_0x0e76('0x4b')]({'where':{'name':_0x5725bc,'userProfileId':_0x2630ea[_0x0e76('0x50')]},'raw':!![]})[_0x0e76('0x27')](function(_0x5eeb2f){if(_0x5eeb2f&&_0x5eeb2f[_0x0e76('0x51')]===0x0){return db[_0x0e76('0x2b')][_0x0e76('0x4c')]({'name':_0x1a5f55[_0x0e76('0x2d')],'resourceId':_0x1a5f55['id'],'type':_0x5eeb2f['name'],'sectionId':_0x5eeb2f['id']},{})[_0x0e76('0x27')](function(){return _0x44dc91;});}else{return _0x44dc91;}})['catch'](function(_0x335173){logger['error'](_0x0e76('0x52'),_0x335173);throw _0x335173;});}return _0x44dc91;})['then'](respondWithResult(_0x20779d,0xc9))[_0x0e76('0x47')](handleError(_0x20779d,null));};exports[_0x0e76('0x53')]=function(_0x2ea63f,_0xcd628f){if(_0x2ea63f[_0x0e76('0x54')]['id']){delete _0x2ea63f[_0x0e76('0x54')]['id'];}return db[_0x0e76('0x30')][_0x0e76('0x4b')]({'where':{'id':_0x2ea63f[_0x0e76('0x49')]['id']}})[_0x0e76('0x27')](handleEntityNotFound(_0xcd628f,null))[_0x0e76('0x27')](saveUpdates(_0x2ea63f[_0x0e76('0x54')],null))[_0x0e76('0x27')](respondWithResult(_0xcd628f,null))[_0x0e76('0x47')](handleError(_0xcd628f,null));};exports['destroy']=function(_0x328c2f,_0x415575){return db['CmHopperAdditionalPhone'][_0x0e76('0x4b')]({'where':{'id':_0x328c2f['params']['id']}})[_0x0e76('0x27')](handleEntityNotFound(_0x415575,null))[_0x0e76('0x27')](removeEntity(_0x415575,null))[_0x0e76('0x47')](handleError(_0x415575,null));};
\ No newline at end of file
+var _0xf54b=['../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','reject','save','then','destroy','get','CmHopperAdditionalPhones','UserProfileResource','end','error','name','send','index','map','CmHopperAdditionalPhone','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','merge','includeAll','include','rows','catch','show','params','length','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','update','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis'];(function(_0x2b1f9a,_0x4d13b9){var _0x2913f2=function(_0x4546a2){while(--_0x4546a2){_0x2b1f9a['push'](_0x2b1f9a['shift']());}};_0x2913f2(++_0x4d13b9);}(_0xf54b,0xdd));var _0xbf54=function(_0x3a94e1,_0x22e4fd){_0x3a94e1=_0x3a94e1-0x0;var _0x6a09d5=_0xf54b[_0x3a94e1];return _0x6a09d5;};'use strict';var emlformat=require(_0xbf54('0x0'));var rimraf=require(_0xbf54('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xbf54('0x2'));var moment=require(_0xbf54('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xbf54('0x4'));var util=require(_0xbf54('0x5'));var path=require(_0xbf54('0x6'));var sox=require(_0xbf54('0x7'));var csv=require(_0xbf54('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbf54('0x9'));var _=require(_0xbf54('0xa'));var squel=require(_0xbf54('0xb'));var crypto=require('crypto');var jsforce=require(_0xbf54('0xc'));var deskjs=require(_0xbf54('0xd'));var toCsv=require(_0xbf54('0x8'));var querystring=require('querystring');var Papa=require(_0xbf54('0xe'));var Redis=require(_0xbf54('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xbf54('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xbf54('0x11'))('api');var utils=require(_0xbf54('0x12'));var config=require(_0xbf54('0x13'));var licenseUtil=require(_0xbf54('0x14'));var db=require(_0xbf54('0x15'))['db'];function respondWithStatusCode(_0x50f50d,_0x2d709e){_0x2d709e=_0x2d709e||0xcc;return function(_0x5e5afe){if(_0x5e5afe){return _0x50f50d[_0xbf54('0x16')](_0x2d709e);}return _0x50f50d['status'](_0x2d709e)['end']();};}function respondWithResult(_0x590c9a,_0x21478e){_0x21478e=_0x21478e||0xc8;return function(_0x43aa29){if(_0x43aa29){return _0x590c9a[_0xbf54('0x17')](_0x21478e)[_0xbf54('0x18')](_0x43aa29);}};}function respondWithFilteredResult(_0x39075e,_0x1825c8){return function(_0x4fc43b){if(_0x4fc43b){var _0x3ca2da=typeof _0x1825c8[_0xbf54('0x19')]===_0xbf54('0x1a')&&typeof _0x1825c8[_0xbf54('0x1b')]===_0xbf54('0x1a');var _0x5a2eaa=_0x4fc43b[_0xbf54('0x1c')];var _0x479047=_0x3ca2da?0x0:_0x1825c8['offset'];var _0x5693ec=_0x3ca2da?_0x4fc43b[_0xbf54('0x1c')]:_0x1825c8[_0xbf54('0x19')]+_0x1825c8[_0xbf54('0x1b')];var _0x2bf62e;if(_0x5693ec>=_0x5a2eaa){_0x5693ec=_0x5a2eaa;_0x2bf62e=0xc8;}else{_0x2bf62e=0xce;}_0x39075e[_0xbf54('0x17')](_0x2bf62e);return _0x39075e['set']('Content-Range',_0x479047+'-'+_0x5693ec+'/'+_0x5a2eaa)['json'](_0x4fc43b);}return null;};}function patchUpdates(_0x138624){return function(_0x5a62dd){try{jsonpatch['apply'](_0x5a62dd,_0x138624,!![]);}catch(_0x570550){return BPromise[_0xbf54('0x1d')](_0x570550);}return _0x5a62dd[_0xbf54('0x1e')]();};}function saveUpdates(_0x59e868,_0x5ab565){return function(_0x2c9ff4){if(_0x2c9ff4){return _0x2c9ff4['update'](_0x59e868)[_0xbf54('0x1f')](function(_0x3d0c94){return _0x3d0c94;});}return null;};}function removeEntity(_0x1e211d,_0x20873b){return function(_0x289000){if(_0x289000){return _0x289000[_0xbf54('0x20')]()[_0xbf54('0x1f')](function(){var _0x5a8276=_0x289000[_0xbf54('0x21')]({'plain':!![]});var _0x5ee402=_0xbf54('0x22');return db[_0xbf54('0x23')][_0xbf54('0x20')]({'where':{'type':_0x5ee402,'resourceId':_0x5a8276['id']}})[_0xbf54('0x1f')](function(){return _0x289000;});})[_0xbf54('0x1f')](function(){_0x1e211d[_0xbf54('0x17')](0xcc)[_0xbf54('0x24')]();});}};}function handleEntityNotFound(_0x52f18c,_0x3b443f){return function(_0x5751d9){if(!_0x5751d9){_0x52f18c[_0xbf54('0x16')](0x194);}return _0x5751d9;};}function handleError(_0x2a63aa,_0x339266){_0x339266=_0x339266||0x1f4;return function(_0x1810be){logger[_0xbf54('0x25')](_0x1810be['stack']);if(_0x1810be['name']){delete _0x1810be[_0xbf54('0x26')];}_0x2a63aa['status'](_0x339266)[_0xbf54('0x27')](_0x1810be);};}exports[_0xbf54('0x28')]=function(_0x1518c6,_0x5e2e83){var _0x24a41a={},_0x5920d7={},_0x554b87={'count':0x0,'rows':[]};var _0x20ebb9=_[_0xbf54('0x29')](db[_0xbf54('0x2a')][_0xbf54('0x2b')],function(_0x23148b){return{'name':_0x23148b['fieldName'],'type':_0x23148b['type'][_0xbf54('0x2c')]};});_0x5920d7[_0xbf54('0x2d')]=_[_0xbf54('0x29')](_0x20ebb9,'name');_0x5920d7[_0xbf54('0x2e')]=_[_0xbf54('0x2f')](_0x1518c6['query']);_0x5920d7[_0xbf54('0x30')]=_[_0xbf54('0x31')](_0x5920d7[_0xbf54('0x2d')],_0x5920d7['query']);_0x24a41a[_0xbf54('0x32')]=_['intersection'](_0x5920d7[_0xbf54('0x2d')],qs[_0xbf54('0x33')](_0x1518c6[_0xbf54('0x2e')][_0xbf54('0x33')]));_0x24a41a['attributes']=_0x24a41a[_0xbf54('0x32')]['length']?_0x24a41a[_0xbf54('0x32')]:_0x5920d7[_0xbf54('0x2d')];if(!_0x1518c6[_0xbf54('0x2e')][_0xbf54('0x34')](_0xbf54('0x35'))){_0x24a41a['limit']=qs[_0xbf54('0x1b')](_0x1518c6[_0xbf54('0x2e')]['limit']);_0x24a41a[_0xbf54('0x19')]=qs[_0xbf54('0x19')](_0x1518c6[_0xbf54('0x2e')]['offset']);}_0x24a41a['order']=qs[_0xbf54('0x36')](_0x1518c6['query']['sort']);_0x24a41a[_0xbf54('0x37')]=qs[_0xbf54('0x30')](_[_0xbf54('0x38')](_0x1518c6[_0xbf54('0x2e')],_0x5920d7['filters']),_0x20ebb9);if(_0x1518c6[_0xbf54('0x2e')][_0xbf54('0x39')]){_0x24a41a[_0xbf54('0x37')]=_['merge'](_0x24a41a[_0xbf54('0x37')],{'$or':_[_0xbf54('0x29')](_0x20ebb9,function(_0x365c4e){if(_0x365c4e[_0xbf54('0x3a')]!==_0xbf54('0x3b')){var _0x44bcbe={};_0x44bcbe[_0x365c4e['name']]={'$like':'%'+_0x1518c6[_0xbf54('0x2e')][_0xbf54('0x39')]+'%'};return _0x44bcbe;}})});}_0x24a41a=_[_0xbf54('0x3c')]({},_0x24a41a,_0x1518c6['options']);var _0x1c9dcf={'where':_0x24a41a[_0xbf54('0x37')]};return db[_0xbf54('0x2a')]['count'](_0x1c9dcf)['then'](function(_0x3c0836){_0x554b87['count']=_0x3c0836;if(_0x1518c6['query'][_0xbf54('0x3d')]){_0x24a41a[_0xbf54('0x3e')]=[{'all':!![]}];}return db[_0xbf54('0x2a')]['findAll'](_0x24a41a);})[_0xbf54('0x1f')](function(_0x472d16){_0x554b87[_0xbf54('0x3f')]=_0x472d16;return _0x554b87;})['then'](respondWithFilteredResult(_0x5e2e83,_0x24a41a))[_0xbf54('0x40')](handleError(_0x5e2e83,null));};exports[_0xbf54('0x41')]=function(_0x142a06,_0x3b3861){var _0x308ab7={'raw':!![],'where':{'id':_0x142a06[_0xbf54('0x42')]['id']}},_0x587de0={};_0x587de0[_0xbf54('0x2d')]=_[_0xbf54('0x2f')](db[_0xbf54('0x2a')][_0xbf54('0x2b')]);_0x587de0[_0xbf54('0x2e')]=_['keys'](_0x142a06[_0xbf54('0x2e')]);_0x587de0[_0xbf54('0x30')]=_[_0xbf54('0x31')](_0x587de0[_0xbf54('0x2d')],_0x587de0[_0xbf54('0x2e')]);_0x308ab7['attributes']=_[_0xbf54('0x31')](_0x587de0[_0xbf54('0x2d')],qs[_0xbf54('0x33')](_0x142a06['query'][_0xbf54('0x33')]));_0x308ab7[_0xbf54('0x32')]=_0x308ab7['attributes'][_0xbf54('0x43')]?_0x308ab7[_0xbf54('0x32')]:_0x587de0[_0xbf54('0x2d')];if(_0x142a06[_0xbf54('0x2e')][_0xbf54('0x3d')]){_0x308ab7[_0xbf54('0x3e')]=[{'all':!![]}];}_0x308ab7=_[_0xbf54('0x3c')]({},_0x308ab7,_0x142a06[_0xbf54('0x44')]);return db[_0xbf54('0x2a')]['find'](_0x308ab7)[_0xbf54('0x1f')](handleEntityNotFound(_0x3b3861,null))['then'](respondWithResult(_0x3b3861,null))['catch'](handleError(_0x3b3861,null));};exports[_0xbf54('0x45')]=function(_0x5ca084,_0x43c50b){return db[_0xbf54('0x2a')][_0xbf54('0x45')](_0x5ca084[_0xbf54('0x46')],{})[_0xbf54('0x1f')](function(_0x5273f2){var _0x3185b6=_0x5ca084[_0xbf54('0x47')][_0xbf54('0x21')]({'plain':!![]});if(!_0x3185b6)throw new Error(_0xbf54('0x48'));if(_0x3185b6[_0xbf54('0x49')]===_0xbf54('0x47')){var _0x2fce48=_0x5273f2[_0xbf54('0x21')]({'plain':!![]});var _0x9a3da9=_0xbf54('0x22');return db[_0xbf54('0x4a')][_0xbf54('0x4b')]({'where':{'name':_0x9a3da9,'userProfileId':_0x3185b6[_0xbf54('0x4c')]},'raw':!![]})[_0xbf54('0x1f')](function(_0x445d5e){if(_0x445d5e&&_0x445d5e[_0xbf54('0x4d')]===0x0){return db['UserProfileResource']['create']({'name':_0x2fce48['name'],'resourceId':_0x2fce48['id'],'type':_0x445d5e[_0xbf54('0x26')],'sectionId':_0x445d5e['id']},{})[_0xbf54('0x1f')](function(){return _0x5273f2;});}else{return _0x5273f2;}})['catch'](function(_0x22982d){logger[_0xbf54('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x22982d);throw _0x22982d;});}return _0x5273f2;})[_0xbf54('0x1f')](respondWithResult(_0x43c50b,0xc9))['catch'](handleError(_0x43c50b,null));};exports[_0xbf54('0x4e')]=function(_0x303eae,_0x248b2f){if(_0x303eae[_0xbf54('0x46')]['id']){delete _0x303eae[_0xbf54('0x46')]['id'];}return db[_0xbf54('0x2a')]['find']({'where':{'id':_0x303eae[_0xbf54('0x42')]['id']}})[_0xbf54('0x1f')](handleEntityNotFound(_0x248b2f,null))[_0xbf54('0x1f')](saveUpdates(_0x303eae[_0xbf54('0x46')],null))[_0xbf54('0x1f')](respondWithResult(_0x248b2f,null))[_0xbf54('0x40')](handleError(_0x248b2f,null));};exports[_0xbf54('0x20')]=function(_0x11fe4d,_0x2a6b97){return db['CmHopperAdditionalPhone']['find']({'where':{'id':_0x11fe4d['params']['id']}})[_0xbf54('0x1f')](handleEntityNotFound(_0x2a6b97,null))['then'](removeEntity(_0x2a6b97,null))[_0xbf54('0x40')](handleError(_0x2a6b97,null));};
\ No newline at end of file
index 318afec..f21bf35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x108e=['request-promise','rimraf','exports','define','CmHopperAdditionalPhone','cm_hopper_additional_phones','util','../../config/logger','moment'];(function(_0x1f28f1,_0xe47443){var _0x3ab673=function(_0x5abf11){while(--_0x5abf11){_0x1f28f1['push'](_0x1f28f1['shift']());}};_0x3ab673(++_0xe47443);}(_0x108e,0x141));var _0xe108=function(_0x5808c9,_0x2201d2){_0x5808c9=_0x5808c9-0x0;var _0x1a4ea7=_0x108e[_0x5808c9];return _0x1a4ea7;};'use strict';var _=require('lodash');var util=require(_0xe108('0x0'));var logger=require(_0xe108('0x1'))('api');var moment=require(_0xe108('0x2'));var BPromise=require('bluebird');var rp=require(_0xe108('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe108('0x4'));var config=require('../../config/environment');var attributes=require('./cmHopperAdditionalPhone.attributes');module[_0xe108('0x5')]=function(_0x2e2dd2,_0x405fc7){return _0x2e2dd2[_0xe108('0x6')](_0xe108('0x7'),attributes,{'tableName':_0xe108('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5dd1=['exports','define','CmHopperAdditionalPhone','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperAdditionalPhone.attributes'];(function(_0x677920,_0x1e3e6a){var _0x1c593b=function(_0x22e305){while(--_0x22e305){_0x677920['push'](_0x677920['shift']());}};_0x1c593b(++_0x1e3e6a);}(_0x5dd1,0xed));var _0x15dd=function(_0x2be855,_0x269cdb){_0x2be855=_0x2be855-0x0;var _0x9c266b=_0x5dd1[_0x2be855];return _0x9c266b;};'use strict';var _=require(_0x15dd('0x0'));var util=require(_0x15dd('0x1'));var logger=require('../../config/logger')(_0x15dd('0x2'));var moment=require(_0x15dd('0x3'));var BPromise=require(_0x15dd('0x4'));var rp=require(_0x15dd('0x5'));var fs=require('fs');var path=require(_0x15dd('0x6'));var rimraf=require(_0x15dd('0x7'));var config=require(_0x15dd('0x8'));var attributes=require(_0x15dd('0x9'));module[_0x15dd('0xa')]=function(_0x5ff6d1,_0x2f5f91){return _0x5ff6d1[_0x15dd('0xb')](_0x15dd('0xc'),attributes,{'tableName':'cm_hopper_additional_phones','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 13d4360..29b766f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9743=['../../mysqldb','rpc','jayson/promise','client','http','request','then','info','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','VerifyAdditionalPhones','CmHopper','findOne','body','ListId','VoiceQueueId','CampaignId','CmHopperAdditionalPhone','OrderBy','ASC','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','entity','dialGlobalMaxRetry','countbusyretry','countnosuchnumberretry','SwapAdditionalPhones','duration','waitTime','scheduledat','add','minutes','phone','updatedAt','isNil','createdAt','sequelize','transaction','activateAdditionalPhone','IncrementPreviewCounters','field','lodash','moment','bluebird','ioredis'];(function(_0x1d8a18,_0x3eac22){var _0x393237=function(_0x699955){while(--_0x699955){_0x1d8a18['push'](_0x1d8a18['shift']());}};_0x393237(++_0x3eac22);}(_0x9743,0x6a));var _0x3974=function(_0x2d0934,_0x3a1999){_0x2d0934=_0x2d0934-0x0;var _0x98981d=_0x9743[_0x2d0934];return _0x98981d;};'use strict';var _=require(_0x3974('0x0'));var util=require('util');var moment=require(_0x3974('0x1'));var BPromise=require(_0x3974('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3974('0x3'));var db=require(_0x3974('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3974('0x5'));var config=require('../../config/environment');var jayson=require(_0x3974('0x6'));var client=jayson[_0x3974('0x7')][_0x3974('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x235ef2,_0x1736a2,_0x57d944){return new BPromise(function(_0x4a9f56,_0x589ba4){return client[_0x3974('0x9')](_0x235ef2,_0x57d944)[_0x3974('0xa')](function(_0xd31081){logger[_0x3974('0xb')](_0x3974('0xc'),_0x1736a2,_0x3974('0xd'));logger[_0x3974('0xe')]('CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s',_0x1736a2,_0x3974('0xd'),JSON['stringify'](_0xd31081));if(_0xd31081[_0x3974('0xf')]){if(_0xd31081[_0x3974('0xf')][_0x3974('0x10')]===0x1f4){logger[_0x3974('0xf')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x1736a2,_0xd31081[_0x3974('0xf')][_0x3974('0x11')]);return _0x589ba4(_0xd31081['error'][_0x3974('0x11')]);}logger[_0x3974('0xf')](_0x3974('0xc'),_0x1736a2,_0xd31081[_0x3974('0xf')][_0x3974('0x11')]);return _0x4a9f56(_0xd31081['error']['message']);}else{logger[_0x3974('0xb')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x1736a2,_0x3974('0xd'));_0x4a9f56(_0xd31081[_0x3974('0x12')][_0x3974('0x11')]);}})[_0x3974('0x13')](function(_0x377c7d){logger[_0x3974('0xf')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x1736a2,_0x377c7d);_0x589ba4(_0x377c7d);});});}exports[_0x3974('0x14')]=function(_0x4db727){var _0x2ead70=this;return new Promise(function(_0xbc2597,_0x3afd57){return db[_0x3974('0x15')][_0x3974('0x16')]({'raw':!![],'where':{'ContactId':_0x4db727[_0x3974('0x17')]['ContactId'],'ListId':_0x4db727['body'][_0x3974('0x18')],'VoiceQueueId':_0x4db727['body'][_0x3974('0x19')]===undefined?null:_0x4db727[_0x3974('0x17')][_0x3974('0x19')],'CampaignId':_0x4db727[_0x3974('0x17')][_0x3974('0x1a')]===undefined?null:_0x4db727[_0x3974('0x17')][_0x3974('0x1a')]}})['then'](function(_0x477454){if(_0x477454!=null){return db[_0x3974('0x1b')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x477454['id'],'OrderBy':{'$gt':_0x477454[_0x3974('0x1c')]}},'order':[['OrderBy',_0x3974('0x1d')]]})['then'](function(_0x1a16f5){var _0x9c4522=0x0;if(_0x1a16f5){if(_0x1a16f5['countbusyretry']+_0x1a16f5[_0x3974('0x1e')]+_0x1a16f5[_0x3974('0x1f')]+_0x1a16f5['countnosuchnumberretry']+_0x1a16f5[_0x3974('0x20')]+_0x1a16f5[_0x3974('0x21')]+_0x1a16f5[_0x3974('0x22')]+_0x1a16f5[_0x3974('0x23')]<_0x4db727[_0x3974('0x24')][_0x3974('0x25')])_0x9c4522=0x1;_0xbc2597({'additional':_0x9c4522});}else{return db[_0x3974('0x1b')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x477454['id']},'order':[[_0x3974('0x1c'),_0x3974('0x1d')]]})[_0x3974('0xa')](function(_0x4f33dd){var _0x48e75d=0x0;if(_0x4f33dd){if(_0x4f33dd[_0x3974('0x26')]+_0x4f33dd[_0x3974('0x1e')]+_0x4f33dd[_0x3974('0x1f')]+_0x4f33dd[_0x3974('0x27')]+_0x4f33dd[_0x3974('0x20')]+_0x4f33dd[_0x3974('0x21')]+_0x4f33dd[_0x3974('0x22')]+_0x4f33dd[_0x3974('0x23')]<_0x4db727['entity']['dialGlobalMaxRetry'])_0x48e75d=0x1;_0xbc2597({'additional':_0x48e75d});}else{_0xbc2597({'additional':0x0});}})['catch'](function(_0x49d4ec){logger[_0x3974('0xf')]('VerifyAdditionalPhones',_0x49d4ec[_0x3974('0x11')]);_0x3afd57(_0x2ead70[_0x3974('0xf')](0x1f4,_0x49d4ec[_0x3974('0x11')]));});}})[_0x3974('0x13')](function(_0x5db5d3){logger[_0x3974('0xf')](_0x3974('0x14'),_0x5db5d3[_0x3974('0x11')]);_0x3afd57(_0x2ead70['error'](0x1f4,_0x5db5d3['message']));});}else _0xbc2597({'additional':0x0});});});};exports[_0x3974('0x28')]=function(_0x542e31){var _0x219499=this;return new Promise(function(_0x56d86e,_0x285ef7){return db['CmHopper'][_0x3974('0x16')]({'raw':!![],'where':{'ContactId':_0x542e31[_0x3974('0x17')]['ContactId'],'ListId':_0x542e31[_0x3974('0x17')][_0x3974('0x18')],'VoiceQueueId':_0x542e31['body']['VoiceQueueId']===undefined?null:_0x542e31[_0x3974('0x17')][_0x3974('0x19')],'CampaignId':_0x542e31['body'][_0x3974('0x1a')]===undefined?null:_0x542e31['body'][_0x3974('0x1a')]}})[_0x3974('0xa')](function(_0x521abe){if(_0x521abe!=null){return db[_0x3974('0x1b')][_0x3974('0x16')]({'raw':!![],'where':{'CmHopperId':_0x521abe['id'],'OrderBy':{'$gte':_0x521abe[_0x3974('0x1c')]}},'order':[['OrderBy',_0x3974('0x1d')]]})[_0x3974('0xa')](function(_0x287d41){if(_0x287d41)return activateAdditionalPhone(_0x521abe,_0x542e31['body'],_0x287d41,_0x542e31[_0x3974('0x29')],_0x542e31[_0x3974('0x2a')])[_0x3974('0xa')](function(_0x1b4440){_0x56d86e(_0x1b4440);});else{return db[_0x3974('0x1b')][_0x3974('0x16')]({'raw':!![],'where':{'CmHopperId':_0x521abe['id']},'order':[[_0x3974('0x1c'),_0x3974('0x1d')]]})[_0x3974('0xa')](function(_0x29a38d){if(_0x29a38d)return activateAdditionalPhone(_0x521abe,_0x542e31['body'],_0x29a38d,_0x542e31['duration'],_0x542e31[_0x3974('0x2a')])[_0x3974('0xa')](function(_0x3b0219){_0x56d86e(_0x3b0219);});else{_0x56d86e({'id':_0x521abe['id'],'phone':''});}})[_0x3974('0x13')](function(_0x296ebd){logger['error'](_0x3974('0x14'),_0x296ebd[_0x3974('0x11')]);_0x285ef7(_0x219499[_0x3974('0xf')](0x1f4,_0x296ebd[_0x3974('0x11')]));});}})['catch'](function(_0x37e1a8){logger[_0x3974('0xf')](_0x3974('0x14'),_0x37e1a8[_0x3974('0x11')]);_0x285ef7(_0x219499[_0x3974('0xf')](0x1f4,_0x37e1a8[_0x3974('0x11')]));});}else _0x56d86e(0x1);});});};function activateAdditionalPhone(_0x12c564,_0x40e8eb,_0x4403e2,_0x56e8ba,_0x16745b){return new Promise(function(_0x119d1e,_0x6179ed){var _0x35f502;if(_['isNil'](_0x4403e2[_0x3974('0x2b')])){_0x4403e2[_0x3974('0x2b')]=moment();}if(moment()>moment(_0x4403e2['scheduledat'])){_0x35f502=moment()[_0x3974('0x2c')](_0x16745b||0x3,_0x3974('0x2d'));}else{if(_0x4403e2['OrderBy']==0x0){_0x35f502=moment(_0x4403e2[_0x3974('0x2b')]);}else{_0x35f502=moment()[_0x3974('0x2c')](_0x16745b||0x3,_0x3974('0x2d'));}}if(_['isNil'](_0x35f502)){_0x35f502=moment()[_0x3974('0x2c')](_0x16745b||0x3,_0x3974('0x2d'));}var _0x133f57={'phone':_0x12c564[_0x3974('0x2e')],'active':0x0,'OrderBy':_['isNil'](_0x12c564[_0x3974('0x1c')])?0x0:_0x12c564[_0x3974('0x1c')],'scheduledat':moment()['add'](_0x56e8ba||0x1,_0x3974('0x2d')),'countbusyretry':_0x40e8eb[_0x3974('0x26')],'countcongestionretry':_0x40e8eb['countcongestionretry'],'countnoanswerretry':_0x40e8eb['countnoanswerretry'],'countnosuchnumberretry':_0x40e8eb['countnosuchnumberretry'],'countdropretry':_0x40e8eb[_0x3974('0x20')],'countabandonedretry':_0x40e8eb[_0x3974('0x21')],'countmachineretry':_0x40e8eb['countmachineretry'],'countagentrejectretry':_0x40e8eb[_0x3974('0x23')],'createdAt':_0x40e8eb['createdAt'],'updatedAt':_0x40e8eb[_0x3974('0x2f')]};var _0x561d96={'CmHopperId':_0x12c564['id'],'phone':_0x4403e2['phone'],'active':0x0,'OrderBy':_[_0x3974('0x30')](_0x4403e2[_0x3974('0x1c')])?0x0:_0x4403e2[_0x3974('0x1c')],'scheduledat':_0x35f502,'countbusyretry':_0x4403e2[_0x3974('0x26')],'countcongestionretry':_0x4403e2[_0x3974('0x1e')],'countnoanswerretry':_0x4403e2[_0x3974('0x1f')],'countnosuchnumberretry':_0x4403e2[_0x3974('0x27')],'countdropretry':_0x4403e2[_0x3974('0x20')],'countabandonedretry':_0x4403e2[_0x3974('0x21')],'countmachineretry':_0x4403e2[_0x3974('0x22')],'countagentrejectretry':_0x4403e2[_0x3974('0x23')],'createdAt':_0x4403e2[_0x3974('0x31')],'updatedAt':_0x4403e2['updatedAt']};return db[_0x3974('0x32')][_0x3974('0x33')](function(_0x1f4cfc){return db['CmHopperAdditionalPhone']['update'](_0x133f57,{'where':{'id':_0x4403e2['id']}},{'transaction':_0x1f4cfc})[_0x3974('0xa')](function(){return db[_0x3974('0x15')]['update'](_0x561d96,{'where':{'id':_0x12c564['id']}},{'transaction':_0x1f4cfc});});})[_0x3974('0xa')](function(_0x341dca){_0x119d1e({'id':_0x12c564['id'],'phone':_0x4403e2[_0x3974('0x2e')]});})['catch'](function(_0x1fc181){logger[_0x3974('0xf')](_0x3974('0x34'),_0x1fc181[_0x3974('0x11')]);_0x6179ed({'error':_0x1fc181[_0x3974('0x11')]});});});}exports[_0x3974('0x35')]=function(_0x487e51){var _0x4eae15=this;return new Promise(function(_0x26744b,_0x490722){return db['CmHopper']['update'](_0x487e51[_0x3974('0x17')][_0x3974('0x36')],{'where':{'id':_0x487e51[_0x3974('0x17')]['id']}})['then'](function(_0x5975e4){_0x26744b(_0x5975e4);})[_0x3974('0x13')](function(_0x3e873f){logger['error']('IncrementPreviewCounters',_0x3e873f[_0x3974('0x11')]);_0x490722(_0x4eae15[_0x3974('0xf')](0x1f4,_0x3e873f[_0x3974('0x11')]));});});};
\ No newline at end of file
+var _0x45ce=['message','result','catch','VerifyAdditionalPhones','findOne','body','ContactId','ListId','VoiceQueueId','CampaignId','then','CmHopperAdditionalPhone','OrderBy','countbusyretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ASC','countcongestionretry','dialGlobalMaxRetry','SwapAdditionalPhones','CmHopper','duration','waitTime','isNil','scheduledat','add','minutes','createdAt','updatedAt','phone','transaction','update','IncrementPreviewCounters','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','request\x20sent','debug','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','code','CmHopperAdditionalPhone,\x20%s,\x20%s'];(function(_0x118439,_0x1907d9){var _0x209b67=function(_0x51e946){while(--_0x51e946){_0x118439['push'](_0x118439['shift']());}};_0x209b67(++_0x1907d9);}(_0x45ce,0xfd));var _0xe45c=function(_0x1e428d,_0x55943c){_0x1e428d=_0x1e428d-0x0;var _0x145558=_0x45ce[_0x1e428d];return _0x145558;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe45c('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe45c('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0xe45c('0x2'));var logger=require(_0xe45c('0x3'))(_0xe45c('0x4'));var config=require(_0xe45c('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xe45c('0x6')][_0xe45c('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x23b075,_0x2738a7,_0x2d5438){return new BPromise(function(_0x7b3e48,_0x5d2802){return client[_0xe45c('0x8')](_0x23b075,_0x2d5438)['then'](function(_0x1b3c34){logger[_0xe45c('0x9')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x2738a7,_0xe45c('0xa'));logger[_0xe45c('0xb')](_0xe45c('0xc'),_0x2738a7,'request\x20sent',JSON[_0xe45c('0xd')](_0x1b3c34));if(_0x1b3c34['error']){if(_0x1b3c34[_0xe45c('0xe')][_0xe45c('0xf')]===0x1f4){logger[_0xe45c('0xe')](_0xe45c('0x10'),_0x2738a7,_0x1b3c34[_0xe45c('0xe')][_0xe45c('0x11')]);return _0x5d2802(_0x1b3c34[_0xe45c('0xe')][_0xe45c('0x11')]);}logger['error'](_0xe45c('0x10'),_0x2738a7,_0x1b3c34[_0xe45c('0xe')][_0xe45c('0x11')]);return _0x7b3e48(_0x1b3c34[_0xe45c('0xe')][_0xe45c('0x11')]);}else{logger[_0xe45c('0x9')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x2738a7,_0xe45c('0xa'));_0x7b3e48(_0x1b3c34[_0xe45c('0x12')][_0xe45c('0x11')]);}})[_0xe45c('0x13')](function(_0x2af81a){logger['error'](_0xe45c('0x10'),_0x2738a7,_0x2af81a);_0x5d2802(_0x2af81a);});});}exports[_0xe45c('0x14')]=function(_0x16eb76){var _0x5c16ae=this;return new Promise(function(_0x3579a5,_0x5ce722){return db['CmHopper'][_0xe45c('0x15')]({'raw':!![],'where':{'ContactId':_0x16eb76[_0xe45c('0x16')][_0xe45c('0x17')],'ListId':_0x16eb76[_0xe45c('0x16')][_0xe45c('0x18')],'VoiceQueueId':_0x16eb76['body'][_0xe45c('0x19')]===undefined?null:_0x16eb76[_0xe45c('0x16')][_0xe45c('0x19')],'CampaignId':_0x16eb76[_0xe45c('0x16')][_0xe45c('0x1a')]===undefined?null:_0x16eb76['body'][_0xe45c('0x1a')]}})[_0xe45c('0x1b')](function(_0x5361c3){if(_0x5361c3!=null){return db[_0xe45c('0x1c')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x5361c3['id'],'OrderBy':{'$gt':_0x5361c3[_0xe45c('0x1d')]}},'order':[[_0xe45c('0x1d'),'ASC']]})['then'](function(_0x3b9ecd){var _0x3a7f21=0x0;if(_0x3b9ecd){if(_0x3b9ecd[_0xe45c('0x1e')]+_0x3b9ecd['countcongestionretry']+_0x3b9ecd[_0xe45c('0x1f')]+_0x3b9ecd[_0xe45c('0x20')]+_0x3b9ecd[_0xe45c('0x21')]+_0x3b9ecd[_0xe45c('0x22')]+_0x3b9ecd[_0xe45c('0x23')]+_0x3b9ecd[_0xe45c('0x24')]<_0x16eb76['entity']['dialGlobalMaxRetry'])_0x3a7f21=0x1;_0x3579a5({'additional':_0x3a7f21});}else{return db[_0xe45c('0x1c')][_0xe45c('0x15')]({'raw':!![],'where':{'CmHopperId':_0x5361c3['id']},'order':[[_0xe45c('0x1d'),_0xe45c('0x25')]]})[_0xe45c('0x1b')](function(_0x48311d){var _0x100b9c=0x0;if(_0x48311d){if(_0x48311d[_0xe45c('0x1e')]+_0x48311d[_0xe45c('0x26')]+_0x48311d['countnoanswerretry']+_0x48311d[_0xe45c('0x20')]+_0x48311d[_0xe45c('0x21')]+_0x48311d[_0xe45c('0x22')]+_0x48311d[_0xe45c('0x23')]+_0x48311d[_0xe45c('0x24')]<_0x16eb76['entity'][_0xe45c('0x27')])_0x100b9c=0x1;_0x3579a5({'additional':_0x100b9c});}else{_0x3579a5({'additional':0x0});}})['catch'](function(_0x496ee2){logger['error'](_0xe45c('0x14'),_0x496ee2[_0xe45c('0x11')]);_0x5ce722(_0x5c16ae[_0xe45c('0xe')](0x1f4,_0x496ee2[_0xe45c('0x11')]));});}})['catch'](function(_0x514a2d){logger[_0xe45c('0xe')](_0xe45c('0x14'),_0x514a2d[_0xe45c('0x11')]);_0x5ce722(_0x5c16ae[_0xe45c('0xe')](0x1f4,_0x514a2d['message']));});}else _0x3579a5({'additional':0x0});});});};exports[_0xe45c('0x28')]=function(_0x4feb26){var _0x4ab9ab=this;return new Promise(function(_0x1aeee3,_0xbe75b5){return db[_0xe45c('0x29')][_0xe45c('0x15')]({'raw':!![],'where':{'ContactId':_0x4feb26[_0xe45c('0x16')][_0xe45c('0x17')],'ListId':_0x4feb26[_0xe45c('0x16')][_0xe45c('0x18')],'VoiceQueueId':_0x4feb26[_0xe45c('0x16')][_0xe45c('0x19')]===undefined?null:_0x4feb26[_0xe45c('0x16')][_0xe45c('0x19')],'CampaignId':_0x4feb26[_0xe45c('0x16')][_0xe45c('0x1a')]===undefined?null:_0x4feb26[_0xe45c('0x16')][_0xe45c('0x1a')]}})['then'](function(_0x289a56){if(_0x289a56!=null){return db[_0xe45c('0x1c')][_0xe45c('0x15')]({'raw':!![],'where':{'CmHopperId':_0x289a56['id'],'OrderBy':{'$gte':_0x289a56['OrderBy']}},'order':[['OrderBy','ASC']]})[_0xe45c('0x1b')](function(_0x1f2b1c){if(_0x1f2b1c)return activateAdditionalPhone(_0x289a56,_0x4feb26['body'],_0x1f2b1c,_0x4feb26[_0xe45c('0x2a')],_0x4feb26[_0xe45c('0x2b')])[_0xe45c('0x1b')](function(_0x170a93){_0x1aeee3(_0x170a93);});else{return db[_0xe45c('0x1c')][_0xe45c('0x15')]({'raw':!![],'where':{'CmHopperId':_0x289a56['id']},'order':[['OrderBy',_0xe45c('0x25')]]})['then'](function(_0xaa649a){if(_0xaa649a)return activateAdditionalPhone(_0x289a56,_0x4feb26['body'],_0xaa649a,_0x4feb26[_0xe45c('0x2a')],_0x4feb26[_0xe45c('0x2b')])[_0xe45c('0x1b')](function(_0x19a2e9){_0x1aeee3(_0x19a2e9);});else{_0x1aeee3({'id':_0x289a56['id'],'phone':''});}})[_0xe45c('0x13')](function(_0x173d29){logger[_0xe45c('0xe')](_0xe45c('0x14'),_0x173d29[_0xe45c('0x11')]);_0xbe75b5(_0x4ab9ab[_0xe45c('0xe')](0x1f4,_0x173d29[_0xe45c('0x11')]));});}})['catch'](function(_0x2aa605){logger[_0xe45c('0xe')](_0xe45c('0x14'),_0x2aa605[_0xe45c('0x11')]);_0xbe75b5(_0x4ab9ab['error'](0x1f4,_0x2aa605[_0xe45c('0x11')]));});}else _0x1aeee3(0x1);});});};function activateAdditionalPhone(_0x26852d,_0x57d72f,_0x2bf2fd,_0x4311ee,_0x54df2a){return new Promise(function(_0x4d0de5,_0x3f2fe3){var _0x111935;if(_[_0xe45c('0x2c')](_0x2bf2fd[_0xe45c('0x2d')])){_0x2bf2fd['scheduledat']=moment();}if(moment()>moment(_0x2bf2fd[_0xe45c('0x2d')])){_0x111935=moment()[_0xe45c('0x2e')](_0x54df2a||0x3,'minutes');}else{if(_0x2bf2fd[_0xe45c('0x1d')]==0x0){_0x111935=moment(_0x2bf2fd[_0xe45c('0x2d')]);}else{_0x111935=moment()[_0xe45c('0x2e')](_0x54df2a||0x3,'minutes');}}if(_[_0xe45c('0x2c')](_0x111935)){_0x111935=moment()['add'](_0x54df2a||0x3,_0xe45c('0x2f'));}var _0xc8dec9={'phone':_0x26852d['phone'],'active':0x0,'OrderBy':_[_0xe45c('0x2c')](_0x26852d[_0xe45c('0x1d')])?0x0:_0x26852d[_0xe45c('0x1d')],'scheduledat':moment()[_0xe45c('0x2e')](_0x4311ee||0x1,'minutes'),'countbusyretry':_0x57d72f[_0xe45c('0x1e')],'countcongestionretry':_0x57d72f[_0xe45c('0x26')],'countnoanswerretry':_0x57d72f['countnoanswerretry'],'countnosuchnumberretry':_0x57d72f['countnosuchnumberretry'],'countdropretry':_0x57d72f[_0xe45c('0x21')],'countabandonedretry':_0x57d72f[_0xe45c('0x22')],'countmachineretry':_0x57d72f[_0xe45c('0x23')],'countagentrejectretry':_0x57d72f['countagentrejectretry'],'createdAt':_0x57d72f[_0xe45c('0x30')],'updatedAt':_0x57d72f[_0xe45c('0x31')]};var _0x35a8f6={'CmHopperId':_0x26852d['id'],'phone':_0x2bf2fd[_0xe45c('0x32')],'active':0x0,'OrderBy':_[_0xe45c('0x2c')](_0x2bf2fd[_0xe45c('0x1d')])?0x0:_0x2bf2fd[_0xe45c('0x1d')],'scheduledat':_0x111935,'countbusyretry':_0x2bf2fd[_0xe45c('0x1e')],'countcongestionretry':_0x2bf2fd[_0xe45c('0x26')],'countnoanswerretry':_0x2bf2fd[_0xe45c('0x1f')],'countnosuchnumberretry':_0x2bf2fd[_0xe45c('0x20')],'countdropretry':_0x2bf2fd[_0xe45c('0x21')],'countabandonedretry':_0x2bf2fd['countabandonedretry'],'countmachineretry':_0x2bf2fd['countmachineretry'],'countagentrejectretry':_0x2bf2fd['countagentrejectretry'],'createdAt':_0x2bf2fd['createdAt'],'updatedAt':_0x2bf2fd[_0xe45c('0x31')]};return db['sequelize'][_0xe45c('0x33')](function(_0x1c1909){return db[_0xe45c('0x1c')][_0xe45c('0x34')](_0xc8dec9,{'where':{'id':_0x2bf2fd['id']}},{'transaction':_0x1c1909})[_0xe45c('0x1b')](function(){return db['CmHopper'][_0xe45c('0x34')](_0x35a8f6,{'where':{'id':_0x26852d['id']}},{'transaction':_0x1c1909});});})['then'](function(_0x362c24){_0x4d0de5({'id':_0x26852d['id'],'phone':_0x2bf2fd[_0xe45c('0x32')]});})[_0xe45c('0x13')](function(_0x491c6e){logger[_0xe45c('0xe')]('activateAdditionalPhone',_0x491c6e['message']);_0x3f2fe3({'error':_0x491c6e[_0xe45c('0x11')]});});});}exports['IncrementPreviewCounters']=function(_0x4e0499){var _0x3c8aba=this;return new Promise(function(_0x471c62,_0x36dbde){return db[_0xe45c('0x29')][_0xe45c('0x34')](_0x4e0499[_0xe45c('0x16')]['field'],{'where':{'id':_0x4e0499[_0xe45c('0x16')]['id']}})[_0xe45c('0x1b')](function(_0x215829){_0x471c62(_0x215829);})['catch'](function(_0x24e4b6){logger[_0xe45c('0xe')](_0xe45c('0x35'),_0x24e4b6[_0xe45c('0x11')]);_0x36dbde(_0x3c8aba[_0xe45c('0xe')](0x1f4,_0x24e4b6[_0xe45c('0x11')]));});});};
\ No newline at end of file
index 88c5576..d6fdb3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ee4=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperAdditionalPhone.controller','get','isAuthenticated','index','/:id','show','post','create','update','delete','multer','util','path'];(function(_0x30c1d6,_0x4de4ba){var _0x34433a=function(_0xb9761d){while(--_0xb9761d){_0x30c1d6['push'](_0x30c1d6['shift']());}};_0x34433a(++_0x4de4ba);}(_0x4ee4,0x179));var _0x44ee=function(_0x2b7764,_0x2606f1){_0x2b7764=_0x2b7764-0x0;var _0x848dcb=_0x4ee4[_0x2b7764];return _0x848dcb;};'use strict';var multer=require(_0x44ee('0x0'));var util=require(_0x44ee('0x1'));var path=require(_0x44ee('0x2'));var timeout=require(_0x44ee('0x3'));var express=require('express');var router=express[_0x44ee('0x4')]();var fs_extra=require(_0x44ee('0x5'));var auth=require(_0x44ee('0x6'));var interaction=require(_0x44ee('0x7'));var config=require(_0x44ee('0x8'));var controller=require(_0x44ee('0x9'));router[_0x44ee('0xa')]('/',auth[_0x44ee('0xb')](),controller[_0x44ee('0xc')]);router[_0x44ee('0xa')](_0x44ee('0xd'),auth[_0x44ee('0xb')](),controller[_0x44ee('0xe')]);router[_0x44ee('0xf')]('/',auth[_0x44ee('0xb')](),controller[_0x44ee('0x10')]);router['put'](_0x44ee('0xd'),auth[_0x44ee('0xb')](),controller[_0x44ee('0x11')]);router[_0x44ee('0x12')]('/:id',auth[_0x44ee('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x2126=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0xb68772,_0x5253ac){var _0x4189bb=function(_0x1b0cf3){while(--_0x1b0cf3){_0xb68772['push'](_0xb68772['shift']());}};_0x4189bb(++_0x5253ac);}(_0x2126,0xe4));var _0x6212=function(_0x2b79dc,_0x40e928){_0x2b79dc=_0x2b79dc-0x0;var _0x1954ad=_0x2126[_0x2b79dc];return _0x1954ad;};'use strict';var multer=require('multer');var util=require(_0x6212('0x0'));var path=require(_0x6212('0x1'));var timeout=require(_0x6212('0x2'));var express=require(_0x6212('0x3'));var router=express['Router']();var fs_extra=require(_0x6212('0x4'));var auth=require(_0x6212('0x5'));var interaction=require(_0x6212('0x6'));var config=require(_0x6212('0x7'));var controller=require('./cmHopperAdditionalPhone.controller');router['get']('/',auth[_0x6212('0x8')](),controller['index']);router[_0x6212('0x9')](_0x6212('0xa'),auth['isAuthenticated'](),controller[_0x6212('0xb')]);router[_0x6212('0xc')]('/',auth[_0x6212('0x8')](),controller[_0x6212('0xd')]);router[_0x6212('0xe')](_0x6212('0xa'),auth[_0x6212('0x8')](),controller[_0x6212('0xf')]);router[_0x6212('0x10')](_0x6212('0xa'),auth[_0x6212('0x8')](),controller[_0x6212('0x11')]);module[_0x6212('0x12')]=router;
\ No newline at end of file
index ca6fdc3..6367dc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc6f=['INTEGER','moment','sequelize','exports','STRING','contactListQueue'];(function(_0x5803ea,_0x9276ed){var _0x4ccb4=function(_0x4e7589){while(--_0x4e7589){_0x5803ea['push'](_0x5803ea['shift']());}};_0x4ccb4(++_0x9276ed);}(_0xcc6f,0x10f));var _0xfcc6=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0xcc6f[_0x45d55e];return _0x29812a;};'use strict';var moment=require(_0xfcc6('0x0'));var Sequelize=require(_0xfcc6('0x1'));module[_0xfcc6('0x2')]={'phone':{'type':Sequelize[_0xfcc6('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0xfcc6('0x4')},'ListId':{'type':Sequelize[_0xfcc6('0x5')],'unique':_0xfcc6('0x4')},'VoiceQueueId':{'type':Sequelize[_0xfcc6('0x5')],'unique':_0xfcc6('0x4')}};
\ No newline at end of file
+var _0xebf4=['INTEGER','contactListQueue','moment'];(function(_0xd2481f,_0x18a4fd){var _0x193dd3=function(_0x48be35){while(--_0x48be35){_0xd2481f['push'](_0xd2481f['shift']());}};_0x193dd3(++_0x18a4fd);}(_0xebf4,0xe3));var _0x4ebf=function(_0x21ae7c,_0x2e6273){_0x21ae7c=_0x21ae7c-0x0;var _0x37701f=_0xebf4[_0x21ae7c];return _0x37701f;};'use strict';var moment=require(_0x4ebf('0x0'));var Sequelize=require('sequelize');module['exports']={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'ContactId':{'type':Sequelize[_0x4ebf('0x1')],'unique':_0x4ebf('0x2')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x4ebf('0x2')},'VoiceQueueId':{'type':Sequelize[_0x4ebf('0x1')],'unique':'contactListQueue'}};
\ No newline at end of file
index 63c2364..bc32d0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5b0=['body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','apply','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','CmHopperBlack','include','findAll','catch','show','params','intersection','includeAll','find'];(function(_0x9b53c,_0x58d117){var _0x57c67c=function(_0x36b4b9){while(--_0x36b4b9){_0x9b53c['push'](_0x9b53c['shift']());}};_0x57c67c(++_0x58d117);}(_0xb5b0,0x17e));var _0x0b5b=function(_0x22339a,_0x26946f){_0x22339a=_0x22339a-0x0;var _0xa51784=_0xb5b0[_0x22339a];return _0xa51784;};'use strict';var emlformat=require(_0x0b5b('0x0'));var rimraf=require(_0x0b5b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0b5b('0x2'));var rp=require(_0x0b5b('0x3'));var moment=require(_0x0b5b('0x4'));var BPromise=require(_0x0b5b('0x5'));var Mustache=require(_0x0b5b('0x6'));var util=require(_0x0b5b('0x7'));var path=require(_0x0b5b('0x8'));var sox=require(_0x0b5b('0x9'));var csv=require(_0x0b5b('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0b5b('0xb'));var _=require(_0x0b5b('0xc'));var squel=require(_0x0b5b('0xd'));var crypto=require(_0x0b5b('0xe'));var jsforce=require(_0x0b5b('0xf'));var deskjs=require(_0x0b5b('0x10'));var toCsv=require(_0x0b5b('0xa'));var querystring=require(_0x0b5b('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x0b5b('0x12'));var qs=require(_0x0b5b('0x13'));var as=require(_0x0b5b('0x14'));var hardwareService=require(_0x0b5b('0x15'));var logger=require('../../config/logger')(_0x0b5b('0x16'));var utils=require('../../config/utils');var config=require(_0x0b5b('0x17'));var licenseUtil=require(_0x0b5b('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3ade2c,_0x966858){_0x966858=_0x966858||0xcc;return function(_0x608ba9){if(_0x608ba9){return _0x3ade2c[_0x0b5b('0x19')](_0x966858);}return _0x3ade2c[_0x0b5b('0x1a')](_0x966858)['end']();};}function respondWithResult(_0x539ab5,_0x37f74d){_0x37f74d=_0x37f74d||0xc8;return function(_0x241c12){if(_0x241c12){return _0x539ab5['status'](_0x37f74d)['json'](_0x241c12);}};}function respondWithFilteredResult(_0x36972a,_0x4545be){return function(_0x2fefa9){if(_0x2fefa9){var _0x5efcbf=typeof _0x4545be[_0x0b5b('0x1b')]===_0x0b5b('0x1c')&&typeof _0x4545be['limit']===_0x0b5b('0x1c');var _0x4c82ec=_0x2fefa9[_0x0b5b('0x1d')];var _0x348117=_0x5efcbf?0x0:_0x4545be[_0x0b5b('0x1b')];var _0x4ee7a3=_0x5efcbf?_0x2fefa9['count']:_0x4545be[_0x0b5b('0x1b')]+_0x4545be[_0x0b5b('0x1e')];var _0x4f4288;if(_0x4ee7a3>=_0x4c82ec){_0x4ee7a3=_0x4c82ec;_0x4f4288=0xc8;}else{_0x4f4288=0xce;}_0x36972a[_0x0b5b('0x1a')](_0x4f4288);return _0x36972a[_0x0b5b('0x1f')](_0x0b5b('0x20'),_0x348117+'-'+_0x4ee7a3+'/'+_0x4c82ec)[_0x0b5b('0x21')](_0x2fefa9);}return null;};}function patchUpdates(_0x14d9ed){return function(_0x5ac5ef){try{jsonpatch[_0x0b5b('0x22')](_0x5ac5ef,_0x14d9ed,!![]);}catch(_0x27a550){return BPromise['reject'](_0x27a550);}return _0x5ac5ef['save']();};}function saveUpdates(_0x308f13,_0x18c1eb){return function(_0x22f782){if(_0x22f782){return _0x22f782[_0x0b5b('0x23')](_0x308f13)[_0x0b5b('0x24')](function(_0x247653){return _0x247653;});}return null;};}function removeEntity(_0x4758a9,_0x21d3ef){return function(_0x55e38b){if(_0x55e38b){return _0x55e38b[_0x0b5b('0x25')]()[_0x0b5b('0x24')](function(){_0x4758a9['status'](0xcc)[_0x0b5b('0x26')]();});}};}function handleEntityNotFound(_0x3bc9ce,_0x2740d1){return function(_0x1a8700){if(!_0x1a8700){_0x3bc9ce[_0x0b5b('0x19')](0x194);}return _0x1a8700;};}function handleError(_0x36876e,_0x2031f6){_0x2031f6=_0x2031f6||0x1f4;return function(_0x270039){logger[_0x0b5b('0x27')](_0x270039[_0x0b5b('0x28')]);if(_0x270039['name']){delete _0x270039[_0x0b5b('0x29')];}_0x36876e[_0x0b5b('0x1a')](_0x2031f6)[_0x0b5b('0x2a')](_0x270039);};}exports[_0x0b5b('0x2b')]=function(_0x4412e2,_0x5ee2f6){var _0x6e6498={},_0x43fdfb={},_0x1b29f8={'count':0x0,'rows':[]};var _0x373d5d=_[_0x0b5b('0x2c')](db['CmHopperBlack'][_0x0b5b('0x2d')],function(_0x5a7649){return{'name':_0x5a7649[_0x0b5b('0x2e')],'type':_0x5a7649[_0x0b5b('0x2f')]['key']};});_0x43fdfb[_0x0b5b('0x30')]=_[_0x0b5b('0x2c')](_0x373d5d,_0x0b5b('0x29'));_0x43fdfb[_0x0b5b('0x31')]=_[_0x0b5b('0x32')](_0x4412e2[_0x0b5b('0x31')]);_0x43fdfb['filters']=_['intersection'](_0x43fdfb[_0x0b5b('0x30')],_0x43fdfb[_0x0b5b('0x31')]);_0x6e6498[_0x0b5b('0x33')]=_['intersection'](_0x43fdfb[_0x0b5b('0x30')],qs[_0x0b5b('0x34')](_0x4412e2[_0x0b5b('0x31')]['fields']));_0x6e6498[_0x0b5b('0x33')]=_0x6e6498['attributes'][_0x0b5b('0x35')]?_0x6e6498[_0x0b5b('0x33')]:_0x43fdfb['model'];if(!_0x4412e2[_0x0b5b('0x31')][_0x0b5b('0x36')](_0x0b5b('0x37'))){_0x6e6498[_0x0b5b('0x1e')]=qs[_0x0b5b('0x1e')](_0x4412e2[_0x0b5b('0x31')][_0x0b5b('0x1e')]);_0x6e6498[_0x0b5b('0x1b')]=qs[_0x0b5b('0x1b')](_0x4412e2[_0x0b5b('0x31')][_0x0b5b('0x1b')]);}_0x6e6498[_0x0b5b('0x38')]=qs['sort'](_0x4412e2[_0x0b5b('0x31')][_0x0b5b('0x39')]);_0x6e6498[_0x0b5b('0x3a')]=qs[_0x0b5b('0x3b')](_[_0x0b5b('0x3c')](_0x4412e2[_0x0b5b('0x31')],_0x43fdfb[_0x0b5b('0x3b')]),_0x373d5d);if(_0x4412e2[_0x0b5b('0x31')][_0x0b5b('0x3d')]){_0x6e6498['where']=_[_0x0b5b('0x3e')](_0x6e6498[_0x0b5b('0x3a')],{'$or':_[_0x0b5b('0x2c')](_0x373d5d,function(_0x438a12){if(_0x438a12[_0x0b5b('0x2f')]!==_0x0b5b('0x3f')){var _0x1583ea={};_0x1583ea[_0x438a12[_0x0b5b('0x29')]]={'$like':'%'+_0x4412e2[_0x0b5b('0x31')][_0x0b5b('0x3d')]+'%'};return _0x1583ea;}})});}_0x6e6498=_[_0x0b5b('0x3e')]({},_0x6e6498,_0x4412e2[_0x0b5b('0x40')]);var _0x4d5c10={'where':_0x6e6498[_0x0b5b('0x3a')]};return db[_0x0b5b('0x41')][_0x0b5b('0x1d')](_0x4d5c10)[_0x0b5b('0x24')](function(_0x3485cb){_0x1b29f8['count']=_0x3485cb;if(_0x4412e2[_0x0b5b('0x31')]['includeAll']){_0x6e6498[_0x0b5b('0x42')]=[{'all':!![]}];}return db[_0x0b5b('0x41')][_0x0b5b('0x43')](_0x6e6498);})[_0x0b5b('0x24')](function(_0x8c6768){_0x1b29f8['rows']=_0x8c6768;return _0x1b29f8;})[_0x0b5b('0x24')](respondWithFilteredResult(_0x5ee2f6,_0x6e6498))[_0x0b5b('0x44')](handleError(_0x5ee2f6,null));};exports[_0x0b5b('0x45')]=function(_0x516d64,_0x156966){var _0x426167={'raw':!![],'where':{'id':_0x516d64[_0x0b5b('0x46')]['id']}},_0x5174e6={};_0x5174e6['model']=_['keys'](db['CmHopperBlack'][_0x0b5b('0x2d')]);_0x5174e6[_0x0b5b('0x31')]=_[_0x0b5b('0x32')](_0x516d64['query']);_0x5174e6['filters']=_[_0x0b5b('0x47')](_0x5174e6['model'],_0x5174e6[_0x0b5b('0x31')]);_0x426167['attributes']=_[_0x0b5b('0x47')](_0x5174e6[_0x0b5b('0x30')],qs['fields'](_0x516d64[_0x0b5b('0x31')][_0x0b5b('0x34')]));_0x426167[_0x0b5b('0x33')]=_0x426167[_0x0b5b('0x33')][_0x0b5b('0x35')]?_0x426167['attributes']:_0x5174e6[_0x0b5b('0x30')];if(_0x516d64[_0x0b5b('0x31')][_0x0b5b('0x48')]){_0x426167[_0x0b5b('0x42')]=[{'all':!![]}];}_0x426167=_[_0x0b5b('0x3e')]({},_0x426167,_0x516d64[_0x0b5b('0x40')]);return db[_0x0b5b('0x41')][_0x0b5b('0x49')](_0x426167)[_0x0b5b('0x24')](handleEntityNotFound(_0x156966,null))[_0x0b5b('0x24')](respondWithResult(_0x156966,null))['catch'](handleError(_0x156966,null));};exports[_0x0b5b('0x23')]=function(_0x3c068f,_0x39df1e){if(_0x3c068f[_0x0b5b('0x4a')]['id']){delete _0x3c068f[_0x0b5b('0x4a')]['id'];}return db[_0x0b5b('0x41')][_0x0b5b('0x49')]({'where':{'id':_0x3c068f['params']['id']}})[_0x0b5b('0x24')](handleEntityNotFound(_0x39df1e,null))[_0x0b5b('0x24')](saveUpdates(_0x3c068f[_0x0b5b('0x4a')],null))[_0x0b5b('0x24')](respondWithResult(_0x39df1e,null))[_0x0b5b('0x44')](handleError(_0x39df1e,null));};exports[_0x0b5b('0x25')]=function(_0x13dc0f,_0x4b197b){return db[_0x0b5b('0x41')][_0x0b5b('0x49')]({'where':{'id':_0x13dc0f['params']['id']}})[_0x0b5b('0x24')](handleEntityNotFound(_0x4b197b,null))[_0x0b5b('0x24')](removeEntity(_0x4b197b,null))[_0x0b5b('0x44')](handleError(_0x4b197b,null));};exports[_0x0b5b('0x4b')]=function(_0xe939d5,_0x167462){return db[_0x0b5b('0x41')][_0x0b5b('0x4b')]()[_0x0b5b('0x24')](respondWithResult(_0x167462,null))[_0x0b5b('0x44')](handleError(_0x167462,null));};
\ No newline at end of file
+var _0x8968=['count','set','apply','reject','update','then','destroy','end','error','stack','name','send','index','map','CmHopperBlack','rawAttributes','fieldName','type','key','keys','filters','intersection','query','attributes','fields','length','model','nolimit','order','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','params','find','body','describe','eml-format','rimraf','zip-dir','moment','bluebird','util','path','sox','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit'];(function(_0x586881,_0x575d29){var _0x586a0c=function(_0x221519){while(--_0x221519){_0x586881['push'](_0x586881['shift']());}};_0x586a0c(++_0x575d29);}(_0x8968,0x75));var _0x8896=function(_0x229a9d,_0x4d3229){_0x229a9d=_0x229a9d-0x0;var _0x5bd600=_0x8968[_0x229a9d];return _0x5bd600;};'use strict';var emlformat=require(_0x8896('0x0'));var rimraf=require(_0x8896('0x1'));var zipdir=require(_0x8896('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8896('0x3'));var BPromise=require(_0x8896('0x4'));var Mustache=require('mustache');var util=require(_0x8896('0x5'));var path=require(_0x8896('0x6'));var sox=require(_0x8896('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8896('0x8'));var _=require(_0x8896('0x9'));var squel=require(_0x8896('0xa'));var crypto=require(_0x8896('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x8896('0xc'));var Papa=require(_0x8896('0xd'));var Redis=require(_0x8896('0xe'));var authService=require(_0x8896('0xf'));var qs=require(_0x8896('0x10'));var as=require(_0x8896('0x11'));var hardwareService=require(_0x8896('0x12'));var logger=require(_0x8896('0x13'))('api');var utils=require(_0x8896('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x8896('0x15'));var db=require(_0x8896('0x16'))['db'];function respondWithStatusCode(_0x7ce721,_0x5a7ede){_0x5a7ede=_0x5a7ede||0xcc;return function(_0x486c07){if(_0x486c07){return _0x7ce721[_0x8896('0x17')](_0x5a7ede);}return _0x7ce721[_0x8896('0x18')](_0x5a7ede)['end']();};}function respondWithResult(_0x568de8,_0x5a62ae){_0x5a62ae=_0x5a62ae||0xc8;return function(_0x4d5ddd){if(_0x4d5ddd){return _0x568de8['status'](_0x5a62ae)[_0x8896('0x19')](_0x4d5ddd);}};}function respondWithFilteredResult(_0x4ffc4e,_0x16e0f0){return function(_0x26e750){if(_0x26e750){var _0x2ea7b1=typeof _0x16e0f0[_0x8896('0x1a')]===_0x8896('0x1b')&&typeof _0x16e0f0[_0x8896('0x1c')]==='undefined';var _0x5a007a=_0x26e750['count'];var _0x55c82f=_0x2ea7b1?0x0:_0x16e0f0['offset'];var _0xe46b3b=_0x2ea7b1?_0x26e750[_0x8896('0x1d')]:_0x16e0f0[_0x8896('0x1a')]+_0x16e0f0[_0x8896('0x1c')];var _0x32bf56;if(_0xe46b3b>=_0x5a007a){_0xe46b3b=_0x5a007a;_0x32bf56=0xc8;}else{_0x32bf56=0xce;}_0x4ffc4e[_0x8896('0x18')](_0x32bf56);return _0x4ffc4e[_0x8896('0x1e')]('Content-Range',_0x55c82f+'-'+_0xe46b3b+'/'+_0x5a007a)[_0x8896('0x19')](_0x26e750);}return null;};}function patchUpdates(_0xc5fce){return function(_0xd00f98){try{jsonpatch[_0x8896('0x1f')](_0xd00f98,_0xc5fce,!![]);}catch(_0x2154fc){return BPromise[_0x8896('0x20')](_0x2154fc);}return _0xd00f98['save']();};}function saveUpdates(_0x1994f0,_0xb9e59){return function(_0x1bf510){if(_0x1bf510){return _0x1bf510[_0x8896('0x21')](_0x1994f0)[_0x8896('0x22')](function(_0x168963){return _0x168963;});}return null;};}function removeEntity(_0x5cc79c,_0x42f53e){return function(_0x384c19){if(_0x384c19){return _0x384c19[_0x8896('0x23')]()[_0x8896('0x22')](function(){_0x5cc79c[_0x8896('0x18')](0xcc)[_0x8896('0x24')]();});}};}function handleEntityNotFound(_0xa64a3f,_0x5f1a0a){return function(_0x2964c3){if(!_0x2964c3){_0xa64a3f['sendStatus'](0x194);}return _0x2964c3;};}function handleError(_0x5cd665,_0x392777){_0x392777=_0x392777||0x1f4;return function(_0x1ea9e6){logger[_0x8896('0x25')](_0x1ea9e6[_0x8896('0x26')]);if(_0x1ea9e6[_0x8896('0x27')]){delete _0x1ea9e6['name'];}_0x5cd665[_0x8896('0x18')](_0x392777)[_0x8896('0x28')](_0x1ea9e6);};}exports[_0x8896('0x29')]=function(_0xce069b,_0x294778){var _0x16191={},_0xd9f40d={},_0x222973={'count':0x0,'rows':[]};var _0x58f07e=_[_0x8896('0x2a')](db[_0x8896('0x2b')][_0x8896('0x2c')],function(_0x3ebc23){return{'name':_0x3ebc23[_0x8896('0x2d')],'type':_0x3ebc23[_0x8896('0x2e')][_0x8896('0x2f')]};});_0xd9f40d['model']=_['map'](_0x58f07e,_0x8896('0x27'));_0xd9f40d['query']=_[_0x8896('0x30')](_0xce069b['query']);_0xd9f40d[_0x8896('0x31')]=_[_0x8896('0x32')](_0xd9f40d['model'],_0xd9f40d[_0x8896('0x33')]);_0x16191[_0x8896('0x34')]=_['intersection'](_0xd9f40d['model'],qs[_0x8896('0x35')](_0xce069b[_0x8896('0x33')][_0x8896('0x35')]));_0x16191[_0x8896('0x34')]=_0x16191[_0x8896('0x34')][_0x8896('0x36')]?_0x16191['attributes']:_0xd9f40d[_0x8896('0x37')];if(!_0xce069b[_0x8896('0x33')]['hasOwnProperty'](_0x8896('0x38'))){_0x16191[_0x8896('0x1c')]=qs[_0x8896('0x1c')](_0xce069b['query']['limit']);_0x16191[_0x8896('0x1a')]=qs['offset'](_0xce069b[_0x8896('0x33')][_0x8896('0x1a')]);}_0x16191[_0x8896('0x39')]=qs['sort'](_0xce069b['query']['sort']);_0x16191[_0x8896('0x3a')]=qs['filters'](_[_0x8896('0x3b')](_0xce069b[_0x8896('0x33')],_0xd9f40d[_0x8896('0x31')]),_0x58f07e);if(_0xce069b[_0x8896('0x33')]['filter']){_0x16191[_0x8896('0x3a')]=_['merge'](_0x16191[_0x8896('0x3a')],{'$or':_[_0x8896('0x2a')](_0x58f07e,function(_0xdae7ab){if(_0xdae7ab[_0x8896('0x2e')]!==_0x8896('0x3c')){var _0x3c2da3={};_0x3c2da3[_0xdae7ab[_0x8896('0x27')]]={'$like':'%'+_0xce069b[_0x8896('0x33')][_0x8896('0x3d')]+'%'};return _0x3c2da3;}})});}_0x16191=_[_0x8896('0x3e')]({},_0x16191,_0xce069b[_0x8896('0x3f')]);var _0x36054c={'where':_0x16191[_0x8896('0x3a')]};return db['CmHopperBlack'][_0x8896('0x1d')](_0x36054c)[_0x8896('0x22')](function(_0x547304){_0x222973[_0x8896('0x1d')]=_0x547304;if(_0xce069b[_0x8896('0x33')][_0x8896('0x40')]){_0x16191[_0x8896('0x41')]=[{'all':!![]}];}return db[_0x8896('0x2b')][_0x8896('0x42')](_0x16191);})[_0x8896('0x22')](function(_0x2336f7){_0x222973[_0x8896('0x43')]=_0x2336f7;return _0x222973;})['then'](respondWithFilteredResult(_0x294778,_0x16191))[_0x8896('0x44')](handleError(_0x294778,null));};exports['show']=function(_0x1806bc,_0x3bcd00){var _0x1d2ef1={'raw':!![],'where':{'id':_0x1806bc[_0x8896('0x45')]['id']}},_0x1265b6={};_0x1265b6['model']=_['keys'](db['CmHopperBlack'][_0x8896('0x2c')]);_0x1265b6['query']=_[_0x8896('0x30')](_0x1806bc['query']);_0x1265b6[_0x8896('0x31')]=_[_0x8896('0x32')](_0x1265b6['model'],_0x1265b6[_0x8896('0x33')]);_0x1d2ef1[_0x8896('0x34')]=_[_0x8896('0x32')](_0x1265b6[_0x8896('0x37')],qs[_0x8896('0x35')](_0x1806bc[_0x8896('0x33')]['fields']));_0x1d2ef1[_0x8896('0x34')]=_0x1d2ef1[_0x8896('0x34')][_0x8896('0x36')]?_0x1d2ef1[_0x8896('0x34')]:_0x1265b6[_0x8896('0x37')];if(_0x1806bc['query']['includeAll']){_0x1d2ef1[_0x8896('0x41')]=[{'all':!![]}];}_0x1d2ef1=_[_0x8896('0x3e')]({},_0x1d2ef1,_0x1806bc[_0x8896('0x3f')]);return db['CmHopperBlack'][_0x8896('0x46')](_0x1d2ef1)[_0x8896('0x22')](handleEntityNotFound(_0x3bcd00,null))[_0x8896('0x22')](respondWithResult(_0x3bcd00,null))[_0x8896('0x44')](handleError(_0x3bcd00,null));};exports[_0x8896('0x21')]=function(_0x2c0fa8,_0xf47559){if(_0x2c0fa8[_0x8896('0x47')]['id']){delete _0x2c0fa8[_0x8896('0x47')]['id'];}return db[_0x8896('0x2b')][_0x8896('0x46')]({'where':{'id':_0x2c0fa8[_0x8896('0x45')]['id']}})[_0x8896('0x22')](handleEntityNotFound(_0xf47559,null))[_0x8896('0x22')](saveUpdates(_0x2c0fa8[_0x8896('0x47')],null))[_0x8896('0x22')](respondWithResult(_0xf47559,null))['catch'](handleError(_0xf47559,null));};exports[_0x8896('0x23')]=function(_0x46ccd6,_0x3fb9e4){return db[_0x8896('0x2b')]['find']({'where':{'id':_0x46ccd6['params']['id']}})[_0x8896('0x22')](handleEntityNotFound(_0x3fb9e4,null))[_0x8896('0x22')](removeEntity(_0x3fb9e4,null))[_0x8896('0x44')](handleError(_0x3fb9e4,null));};exports[_0x8896('0x48')]=function(_0x2b6c63,_0x2e3c3f){return db['CmHopperBlack']['describe']()['then'](respondWithResult(_0x2e3c3f,null))[_0x8896('0x44')](handleError(_0x2e3c3f,null));};
\ No newline at end of file
index 4911552..2646aa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c69=['api','moment','bluebird','rimraf','../../config/environment','./cmHopperBlack.attributes','exports','define','cm_hopper_black','lodash','util','../../config/logger'];(function(_0x356127,_0x4873ac){var _0x5d4c75=function(_0x4fe60c){while(--_0x4fe60c){_0x356127['push'](_0x356127['shift']());}};_0x5d4c75(++_0x4873ac);}(_0x5c69,0xc9));var _0x95c6=function(_0x486f4a,_0x478dc7){_0x486f4a=_0x486f4a-0x0;var _0x135d99=_0x5c69[_0x486f4a];return _0x135d99;};'use strict';var _=require(_0x95c6('0x0'));var util=require(_0x95c6('0x1'));var logger=require(_0x95c6('0x2'))(_0x95c6('0x3'));var moment=require(_0x95c6('0x4'));var BPromise=require(_0x95c6('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x95c6('0x6'));var config=require(_0x95c6('0x7'));var attributes=require(_0x95c6('0x8'));module[_0x95c6('0x9')]=function(_0x98a9f9,_0x33478c){return _0x98a9f9[_0x95c6('0xa')]('CmHopperBlack',attributes,{'tableName':_0x95c6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x22d5=['rimraf','./cmHopperBlack.attributes','exports','define','CmHopperBlack','cm_hopper_black','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x14f2ff,_0x5e6a4f){var _0x2c01e7=function(_0x4546e7){while(--_0x4546e7){_0x14f2ff['push'](_0x14f2ff['shift']());}};_0x2c01e7(++_0x5e6a4f);}(_0x22d5,0x1b3));var _0x522d=function(_0x509d9e,_0x2d1197){_0x509d9e=_0x509d9e-0x0;var _0x56b488=_0x22d5[_0x509d9e];return _0x56b488;};'use strict';var _=require(_0x522d('0x0'));var util=require(_0x522d('0x1'));var logger=require('../../config/logger')(_0x522d('0x2'));var moment=require(_0x522d('0x3'));var BPromise=require(_0x522d('0x4'));var rp=require(_0x522d('0x5'));var fs=require('fs');var path=require(_0x522d('0x6'));var rimraf=require(_0x522d('0x7'));var config=require('../../config/environment');var attributes=require(_0x522d('0x8'));module[_0x522d('0x9')]=function(_0x2fef28,_0xe44134){return _0x2fef28[_0x522d('0xa')](_0x522d('0xb'),attributes,{'tableName':_0x522d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cbf5e3a..9deeb58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a84=['CmHopperBlack,\x20%s,\x20%s','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetCmHopperBlack','findAll','options','raw','where','attributes','limit','map','include','model','UpdateCmHopperBlack','CmHopperBlack','update','body','DestroyCmHopperBlack','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info'];(function(_0x107e13,_0x43da7c){var _0x986248=function(_0x360ccc){while(--_0x360ccc){_0x107e13['push'](_0x107e13['shift']());}};_0x986248(++_0x43da7c);}(_0x8a84,0x177));var _0x48a8=function(_0x4ded16,_0x23fcbf){_0x4ded16=_0x4ded16-0x0;var _0x4a525a=_0x8a84[_0x4ded16];return _0x4a525a;};'use strict';var _=require(_0x48a8('0x0'));var util=require(_0x48a8('0x1'));var moment=require(_0x48a8('0x2'));var BPromise=require(_0x48a8('0x3'));var rs=require(_0x48a8('0x4'));var fs=require('fs');var Redis=require(_0x48a8('0x5'));var db=require(_0x48a8('0x6'))['db'];var utils=require(_0x48a8('0x7'));var logger=require(_0x48a8('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x48a8('0x9'));var client=jayson[_0x48a8('0xa')][_0x48a8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1b0143,_0x125518,_0x18a716){return new BPromise(function(_0x26d798,_0x28be4c){return client[_0x48a8('0xc')](_0x1b0143,_0x18a716)[_0x48a8('0xd')](function(_0x4284d6){logger[_0x48a8('0xe')](_0x48a8('0xf'),_0x125518,'request\x20sent');logger[_0x48a8('0x10')](_0x48a8('0x11'),_0x125518,_0x48a8('0x12'),JSON[_0x48a8('0x13')](_0x4284d6));if(_0x4284d6[_0x48a8('0x14')]){if(_0x4284d6[_0x48a8('0x14')][_0x48a8('0x15')]===0x1f4){logger[_0x48a8('0x14')](_0x48a8('0xf'),_0x125518,_0x4284d6[_0x48a8('0x14')][_0x48a8('0x16')]);return _0x28be4c(_0x4284d6['error'][_0x48a8('0x16')]);}logger[_0x48a8('0x14')]('CmHopperBlack,\x20%s,\x20%s',_0x125518,_0x4284d6[_0x48a8('0x14')][_0x48a8('0x16')]);return _0x26d798(_0x4284d6['error']['message']);}else{logger[_0x48a8('0xe')](_0x48a8('0xf'),_0x125518,'request\x20sent');_0x26d798(_0x4284d6['result']['message']);}})[_0x48a8('0x17')](function(_0x46ee4e){logger[_0x48a8('0x14')]('CmHopperBlack,\x20%s,\x20%s',_0x125518,_0x46ee4e);_0x28be4c(_0x46ee4e);});});}exports[_0x48a8('0x18')]=function(_0x27cd93){var _0x4af6f7=this;return new Promise(function(_0x50f847,_0x1a1ec2){return db['CmHopperBlack'][_0x48a8('0x19')]({'raw':_0x27cd93[_0x48a8('0x1a')]?_0x27cd93[_0x48a8('0x1a')][_0x48a8('0x1b')]===undefined?!![]:![]:!![],'where':_0x27cd93['options']?_0x27cd93[_0x48a8('0x1a')][_0x48a8('0x1c')]||null:null,'attributes':_0x27cd93[_0x48a8('0x1a')]?_0x27cd93['options'][_0x48a8('0x1d')]||null:null,'limit':_0x27cd93[_0x48a8('0x1a')]?_0x27cd93[_0x48a8('0x1a')][_0x48a8('0x1e')]||null:null,'include':_0x27cd93[_0x48a8('0x1a')]?_0x27cd93[_0x48a8('0x1a')]['include']?_[_0x48a8('0x1f')](_0x27cd93['options'][_0x48a8('0x20')],function(_0x37e4ec){return{'model':db[_0x37e4ec[_0x48a8('0x21')]],'as':_0x37e4ec['as'],'attributes':_0x37e4ec[_0x48a8('0x1d')],'include':_0x37e4ec[_0x48a8('0x20')]?_[_0x48a8('0x1f')](_0x37e4ec[_0x48a8('0x20')],function(_0x1b1aa3){return{'model':db[_0x1b1aa3[_0x48a8('0x21')]],'as':_0x1b1aa3['as'],'attributes':_0x1b1aa3[_0x48a8('0x1d')],'include':_0x1b1aa3[_0x48a8('0x20')]?_[_0x48a8('0x1f')](_0x1b1aa3[_0x48a8('0x20')],function(_0x161bce){return{'model':db[_0x161bce['model']],'as':_0x161bce['as'],'attributes':_0x161bce[_0x48a8('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x48a8('0xd')](function(_0x17935a){logger[_0x48a8('0xe')]('GetCmHopperBlack',_0x27cd93);logger[_0x48a8('0x10')](_0x48a8('0x18'),_0x27cd93,JSON[_0x48a8('0x13')](_0x17935a));_0x50f847(_0x17935a);})[_0x48a8('0x17')](function(_0x2058c6){logger[_0x48a8('0x14')](_0x48a8('0x18'),_0x2058c6[_0x48a8('0x16')],_0x27cd93);_0x1a1ec2(_0x4af6f7[_0x48a8('0x14')](0x1f4,_0x2058c6[_0x48a8('0x16')]));});});};exports[_0x48a8('0x22')]=function(_0x229eca){var _0x279236=this;return new Promise(function(_0x3e802b,_0x1f3075){return db[_0x48a8('0x23')][_0x48a8('0x24')](_0x229eca[_0x48a8('0x25')],{'raw':_0x229eca[_0x48a8('0x1a')]?_0x229eca[_0x48a8('0x1a')][_0x48a8('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x229eca[_0x48a8('0x1a')]?_0x229eca[_0x48a8('0x1a')][_0x48a8('0x1c')]||null:null,'attributes':_0x229eca[_0x48a8('0x1a')]?_0x229eca[_0x48a8('0x1a')][_0x48a8('0x1d')]||null:null,'limit':_0x229eca[_0x48a8('0x1a')]?_0x229eca['options']['limit']||null:null})[_0x48a8('0xd')](function(_0x16bd1e){logger[_0x48a8('0xe')](_0x48a8('0x22'),_0x229eca);logger[_0x48a8('0x10')](_0x48a8('0x22'),_0x229eca,JSON[_0x48a8('0x13')](_0x16bd1e));_0x3e802b(_0x16bd1e);})[_0x48a8('0x17')](function(_0x50ac40){logger[_0x48a8('0x14')](_0x48a8('0x22'),_0x50ac40[_0x48a8('0x16')],_0x229eca);_0x1f3075(_0x279236['error'](0x1f4,_0x50ac40['message']));});});};exports[_0x48a8('0x26')]=function(_0x13a4e4){var _0x36715a=this;return new Promise(function(_0x127c09,_0x536b8e){return db['CmHopperBlack']['destroy']({'where':_0x13a4e4[_0x48a8('0x1a')]?_0x13a4e4['options']['where']||null:null})[_0x48a8('0xd')](function(_0x5f2c88){logger['info']('DestroyCmHopperBlack',_0x13a4e4);logger[_0x48a8('0x10')](_0x48a8('0x26'),_0x13a4e4,JSON[_0x48a8('0x13')](_0x5f2c88));_0x127c09(_0x5f2c88);})[_0x48a8('0x17')](function(_0x1350a7){logger[_0x48a8('0x14')]('DestroyCmHopperBlack',_0x1350a7[_0x48a8('0x16')],_0x13a4e4);_0x536b8e(_0x36715a['error'](0x1f4,_0x1350a7[_0x48a8('0x16')]));});});};
\ No newline at end of file
+var _0x62e2=['destroy','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','findAll','options','raw','where','attributes','limit','include','map','model','GetCmHopperBlack','catch','UpdateCmHopperBlack','update','DestroyCmHopperBlack'];(function(_0x153faa,_0x75f2a){var _0x43c32a=function(_0x1c5721){while(--_0x1c5721){_0x153faa['push'](_0x153faa['shift']());}};_0x43c32a(++_0x75f2a);}(_0x62e2,0x129));var _0x262e=function(_0x2392ba,_0x3cd73c){_0x2392ba=_0x2392ba-0x0;var _0x5ed454=_0x62e2[_0x2392ba];return _0x5ed454;};'use strict';var _=require(_0x262e('0x0'));var util=require(_0x262e('0x1'));var moment=require(_0x262e('0x2'));var BPromise=require(_0x262e('0x3'));var rs=require(_0x262e('0x4'));var fs=require('fs');var Redis=require(_0x262e('0x5'));var db=require(_0x262e('0x6'))['db'];var utils=require(_0x262e('0x7'));var logger=require(_0x262e('0x8'))(_0x262e('0x9'));var config=require(_0x262e('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x262e('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x412f28,_0xc070fa,_0x50700d){return new BPromise(function(_0x3af4a6,_0x573255){return client[_0x262e('0xc')](_0x412f28,_0x50700d)[_0x262e('0xd')](function(_0x158aba){logger[_0x262e('0xe')](_0x262e('0xf'),_0xc070fa,_0x262e('0x10'));logger[_0x262e('0x11')]('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0xc070fa,_0x262e('0x10'),JSON[_0x262e('0x12')](_0x158aba));if(_0x158aba[_0x262e('0x13')]){if(_0x158aba['error']['code']===0x1f4){logger['error'](_0x262e('0xf'),_0xc070fa,_0x158aba['error'][_0x262e('0x14')]);return _0x573255(_0x158aba[_0x262e('0x13')][_0x262e('0x14')]);}logger['error']('CmHopperBlack,\x20%s,\x20%s',_0xc070fa,_0x158aba['error'][_0x262e('0x14')]);return _0x3af4a6(_0x158aba['error'][_0x262e('0x14')]);}else{logger[_0x262e('0xe')](_0x262e('0xf'),_0xc070fa,_0x262e('0x10'));_0x3af4a6(_0x158aba[_0x262e('0x15')][_0x262e('0x14')]);}})['catch'](function(_0x38255d){logger[_0x262e('0x13')]('CmHopperBlack,\x20%s,\x20%s',_0xc070fa,_0x38255d);_0x573255(_0x38255d);});});}exports['GetCmHopperBlack']=function(_0x114887){var _0x218df3=this;return new Promise(function(_0x482ee0,_0x40961c){return db['CmHopperBlack'][_0x262e('0x16')]({'raw':_0x114887[_0x262e('0x17')]?_0x114887['options'][_0x262e('0x18')]===undefined?!![]:![]:!![],'where':_0x114887['options']?_0x114887[_0x262e('0x17')][_0x262e('0x19')]||null:null,'attributes':_0x114887[_0x262e('0x17')]?_0x114887['options'][_0x262e('0x1a')]||null:null,'limit':_0x114887[_0x262e('0x17')]?_0x114887[_0x262e('0x17')][_0x262e('0x1b')]||null:null,'include':_0x114887['options']?_0x114887[_0x262e('0x17')][_0x262e('0x1c')]?_[_0x262e('0x1d')](_0x114887[_0x262e('0x17')][_0x262e('0x1c')],function(_0x308e2c){return{'model':db[_0x308e2c['model']],'as':_0x308e2c['as'],'attributes':_0x308e2c['attributes'],'include':_0x308e2c['include']?_['map'](_0x308e2c['include'],function(_0x24a0b7){return{'model':db[_0x24a0b7[_0x262e('0x1e')]],'as':_0x24a0b7['as'],'attributes':_0x24a0b7[_0x262e('0x1a')],'include':_0x24a0b7[_0x262e('0x1c')]?_[_0x262e('0x1d')](_0x24a0b7[_0x262e('0x1c')],function(_0x2a0b35){return{'model':db[_0x2a0b35[_0x262e('0x1e')]],'as':_0x2a0b35['as'],'attributes':_0x2a0b35['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2664ca){logger[_0x262e('0xe')](_0x262e('0x1f'),_0x114887);logger[_0x262e('0x11')](_0x262e('0x1f'),_0x114887,JSON[_0x262e('0x12')](_0x2664ca));_0x482ee0(_0x2664ca);})[_0x262e('0x20')](function(_0x33e946){logger['error']('GetCmHopperBlack',_0x33e946[_0x262e('0x14')],_0x114887);_0x40961c(_0x218df3[_0x262e('0x13')](0x1f4,_0x33e946[_0x262e('0x14')]));});});};exports[_0x262e('0x21')]=function(_0x50d044){var _0x6a40db=this;return new Promise(function(_0x119dc6,_0x2c6aec){return db['CmHopperBlack'][_0x262e('0x22')](_0x50d044['body'],{'raw':_0x50d044['options']?_0x50d044['options'][_0x262e('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x50d044[_0x262e('0x17')]?_0x50d044[_0x262e('0x17')][_0x262e('0x19')]||null:null,'attributes':_0x50d044[_0x262e('0x17')]?_0x50d044[_0x262e('0x17')]['attributes']||null:null,'limit':_0x50d044['options']?_0x50d044[_0x262e('0x17')][_0x262e('0x1b')]||null:null})['then'](function(_0x5a1dc5){logger[_0x262e('0xe')](_0x262e('0x21'),_0x50d044);logger[_0x262e('0x11')]('UpdateCmHopperBlack',_0x50d044,JSON[_0x262e('0x12')](_0x5a1dc5));_0x119dc6(_0x5a1dc5);})[_0x262e('0x20')](function(_0x21e5e0){logger['error'](_0x262e('0x21'),_0x21e5e0[_0x262e('0x14')],_0x50d044);_0x2c6aec(_0x6a40db[_0x262e('0x13')](0x1f4,_0x21e5e0[_0x262e('0x14')]));});});};exports[_0x262e('0x23')]=function(_0x59a97d){var _0x2c276c=this;return new Promise(function(_0x2d3dce,_0x1fe20a){return db['CmHopperBlack'][_0x262e('0x24')]({'where':_0x59a97d[_0x262e('0x17')]?_0x59a97d[_0x262e('0x17')]['where']||null:null})[_0x262e('0xd')](function(_0x2e16c5){logger['info'](_0x262e('0x23'),_0x59a97d);logger[_0x262e('0x11')]('DestroyCmHopperBlack',_0x59a97d,JSON['stringify'](_0x2e16c5));_0x2d3dce(_0x2e16c5);})[_0x262e('0x20')](function(_0x50c769){logger['error'](_0x262e('0x23'),_0x50c769[_0x262e('0x14')],_0x59a97d);_0x1fe20a(_0x2c276c[_0x262e('0x13')](0x1f4,_0x50c769['message']));});});};
\ No newline at end of file
index 49183fd..4d00254 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2542=['multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','index','/describe','isAuthenticated','describe','/:id','show','put','update','delete'];(function(_0x3d54d7,_0x4ebb68){var _0x5cb3d1=function(_0xe54a70){while(--_0xe54a70){_0x3d54d7['push'](_0x3d54d7['shift']());}};_0x5cb3d1(++_0x4ebb68);}(_0x2542,0x169));var _0x2254=function(_0x16a876,_0x3ea196){_0x16a876=_0x16a876-0x0;var _0x3b30b1=_0x2542[_0x16a876];return _0x3b30b1;};'use strict';var multer=require(_0x2254('0x0'));var util=require(_0x2254('0x1'));var path=require(_0x2254('0x2'));var timeout=require(_0x2254('0x3'));var express=require('express');var router=express[_0x2254('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2254('0x5'));var interaction=require(_0x2254('0x6'));var config=require(_0x2254('0x7'));var controller=require(_0x2254('0x8'));router[_0x2254('0x9')]('/',auth['isAuthenticated'](),controller[_0x2254('0xa')]);router[_0x2254('0x9')](_0x2254('0xb'),auth[_0x2254('0xc')](),controller[_0x2254('0xd')]);router[_0x2254('0x9')](_0x2254('0xe'),auth[_0x2254('0xc')](),controller[_0x2254('0xf')]);router[_0x2254('0x10')](_0x2254('0xe'),auth['isAuthenticated'](),controller[_0x2254('0x11')]);router[_0x2254('0x12')](_0x2254('0xe'),auth[_0x2254('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xbff5=['delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x36c00c,_0x4d381d){var _0x53c15e=function(_0x23cc21){while(--_0x23cc21){_0x36c00c['push'](_0x36c00c['shift']());}};_0x53c15e(++_0x4d381d);}(_0xbff5,0x1bc));var _0x5bff=function(_0x4e5837,_0x24963f){_0x4e5837=_0x4e5837-0x0;var _0x72bd1c=_0xbff5[_0x4e5837];return _0x72bd1c;};'use strict';var multer=require(_0x5bff('0x0'));var util=require(_0x5bff('0x1'));var path=require(_0x5bff('0x2'));var timeout=require(_0x5bff('0x3'));var express=require(_0x5bff('0x4'));var router=express[_0x5bff('0x5')]();var fs_extra=require(_0x5bff('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x5bff('0x7'));var config=require('../../config/environment');var controller=require('./cmHopperBlack.controller');router[_0x5bff('0x8')]('/',auth[_0x5bff('0x9')](),controller[_0x5bff('0xa')]);router[_0x5bff('0x8')](_0x5bff('0xb'),auth[_0x5bff('0x9')](),controller[_0x5bff('0xc')]);router[_0x5bff('0x8')](_0x5bff('0xd'),auth['isAuthenticated'](),controller[_0x5bff('0xe')]);router['put'](_0x5bff('0xd'),auth[_0x5bff('0x9')](),controller['update']);router[_0x5bff('0xf')]('/:id',auth[_0x5bff('0x9')](),controller['destroy']);module[_0x5bff('0x10')]=router;
\ No newline at end of file
index 6fcdcd9..0b5b212 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0bf=['INTEGER','STRING','DATE','endtime','setDataValue','followuptime','diff','seconds','BOOLEAN','sequelize','moment','exports'];(function(_0x5bbc1f,_0x41cc8b){var _0x430d70=function(_0x42f306){while(--_0x42f306){_0x5bbc1f['push'](_0x5bbc1f['shift']());}};_0x430d70(++_0x41cc8b);}(_0xb0bf,0xbd));var _0xfb0b=function(_0x2bc37d,_0x470da0){_0x2bc37d=_0x2bc37d-0x0;var _0x50b00e=_0xb0bf[_0x2bc37d];return _0x50b00e;};'use strict';var Sequelize=require(_0xfb0b('0x0'));var moment=require(_0xfb0b('0x1'));module[_0xfb0b('0x2')]={'state':{'type':Sequelize[_0xfb0b('0x3')](0x2)},'statedesc':{'type':Sequelize[_0xfb0b('0x4')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0xfb0b('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xfb0b('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xfb0b('0x4')]},'originatecalleridnum':{'type':Sequelize[_0xfb0b('0x4')]},'originatecalleridname':{'type':Sequelize[_0xfb0b('0x4')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xfb0b('0x4')]},'starttime':{'type':Sequelize[_0xfb0b('0x5')]},'responsetime':{'type':Sequelize[_0xfb0b('0x5')]},'answertime':{'type':Sequelize[_0xfb0b('0x5')]},'droptime':{'type':Sequelize[_0xfb0b('0x5')]},'endtime':{'type':Sequelize[_0xfb0b('0x5')]},'ringtime':{'type':Sequelize[_0xfb0b('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xfb0b('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xfb0b('0x4')]},'membername':{'type':Sequelize[_0xfb0b('0x4')]},'reason':{'type':Sequelize[_0xfb0b('0x4')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xfb0b('0x4')]},'thirdDisposition':{'type':Sequelize[_0xfb0b('0x4')]},'dispositionat':{'type':Sequelize[_0xfb0b('0x5')],'set':function(_0x421d7a){var _0xaeebe2=this['getDataValue'](_0xfb0b('0x6'));if(_0xaeebe2&&_0x421d7a){this[_0xfb0b('0x7')](_0xfb0b('0x8'),moment(_0x421d7a)[_0xfb0b('0x9')](moment(_0xaeebe2),_0xfb0b('0xa')));}}},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize[_0xfb0b('0xb')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xfb0b('0xb')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xfb0b('0xb')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xfb0b('0x5')]},'callback':{'type':Sequelize[_0xfb0b('0xb')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xfb0b('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xfb0b('0x5')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0xfb0b('0xb')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xfb0b('0x5')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xfb0b('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xfb0b('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xfb0b('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xbf2d=['INTEGER','STRING','DATE','getDataValue','endtime','setDataValue','followuptime','diff','seconds','BOOLEAN','sequelize','moment'];(function(_0x28d18d,_0x55896b){var _0x470640=function(_0x57e78b){while(--_0x57e78b){_0x28d18d['push'](_0x28d18d['shift']());}};_0x470640(++_0x55896b);}(_0xbf2d,0xfa));var _0xdbf2=function(_0x54f8a4,_0x4afa6b){_0x54f8a4=_0x54f8a4-0x0;var _0x311ef3=_0xbf2d[_0x54f8a4];return _0x311ef3;};'use strict';var Sequelize=require(_0xdbf2('0x0'));var moment=require(_0xdbf2('0x1'));module['exports']={'state':{'type':Sequelize[_0xdbf2('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xdbf2('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0xdbf2('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xdbf2('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xdbf2('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0xdbf2('0x3')]},'calleridnum':{'type':Sequelize[_0xdbf2('0x3')]},'calleridname':{'type':Sequelize[_0xdbf2('0x3')]},'starttime':{'type':Sequelize[_0xdbf2('0x4')]},'responsetime':{'type':Sequelize[_0xdbf2('0x4')]},'answertime':{'type':Sequelize[_0xdbf2('0x4')]},'droptime':{'type':Sequelize[_0xdbf2('0x4')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xdbf2('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xdbf2('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xdbf2('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xdbf2('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xdbf2('0x3')]},'campaign':{'type':Sequelize[_0xdbf2('0x3')]},'campaigntype':{'type':Sequelize[_0xdbf2('0x3')]},'membername':{'type':Sequelize[_0xdbf2('0x3')]},'reason':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xdbf2('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize[_0xdbf2('0x4')],'set':function(_0x123bd2){var _0x195f06=this[_0xdbf2('0x5')](_0xdbf2('0x6'));if(_0x195f06&&_0x123bd2){this[_0xdbf2('0x7')](_0xdbf2('0x8'),moment(_0x123bd2)[_0xdbf2('0x9')](moment(_0x195f06),_0xdbf2('0xa')));}}},'amd':{'type':Sequelize[_0xdbf2('0xb')],'defaultValue':![]},'fax':{'type':Sequelize[_0xdbf2('0xb')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xdbf2('0xb')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xdbf2('0xb')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xdbf2('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xdbf2('0x4')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0xdbf2('0xb')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xdbf2('0x4')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 105e8e7..84eb4ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6ac=['key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','show','params','includeAll','include','find','catch','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','sequelize','COUNT','literal','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','insert','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','createdAt','updatedAt','select','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','VoiceQueueId','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','from','calleridnum','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','into','CampaignId','CampaignId\x20=\x20?','checkContactHopper','findOne','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','CmHopperFinal','rawAttributes','fieldName','type'];(function(_0x39993c,_0x52d30a){var _0x49e333=function(_0x2e2ac5){while(--_0x2e2ac5){_0x39993c['push'](_0x39993c['shift']());}};_0x49e333(++_0x52d30a);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x4e62be,_0x1c3499){_0x4e62be=_0x4e62be-0x0;var _0x1ab403=_0xc6ac[_0x4e62be];return _0x1ab403;};'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['CmHopperFinal'][_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['describe']=function(_0x4e1a0b,_0x47c999){return db[_0xcc6a('0x2d')][_0xcc6a('0x4c')]()[_0xcc6a('0x27')](respondWithResult(_0x47c999,null))[_0xcc6a('0x4b')](handleError(_0x47c999,null));};exports['update']=function(_0x1c3bb8,_0x5e7bab){if(_0x1c3bb8[_0xcc6a('0x4d')][_0xcc6a('0x4e')]){delete _0x1c3bb8[_0xcc6a('0x4d')][_0xcc6a('0x4e')];}return db[_0xcc6a('0x2d')][_0xcc6a('0x4a')]({'where':{'uniqueid':_0x1c3bb8['params']['id']}})[_0xcc6a('0x27')](handleEntityNotFound(_0x5e7bab,null))[_0xcc6a('0x27')](saveUpdates(_0x1c3bb8[_0xcc6a('0x4d')],null))[_0xcc6a('0x27')](respondWithResult(_0x5e7bab,null))[_0xcc6a('0x4b')](handleError(_0x5e7bab,null));};exports[_0xcc6a('0x4f')]=function(_0x431684,_0x392805,_0x31987f){return db[_0xcc6a('0x2d')]['findAll']({'raw':![],'where':{'VoiceQueueId':_0x431684[_0xcc6a('0x47')]['id']},'attributes':[[db[_0xcc6a('0x50')]['fn'](_0xcc6a('0x51'),db[_0xcc6a('0x50')]['fn']('IF',db[_0xcc6a('0x50')][_0xcc6a('0x52')]('`state`\x20=\x200,\x201,\x20null'))),'noSuchContacts'],[db[_0xcc6a('0x50')]['fn']('COUNT',db[_0xcc6a('0x50')]['fn']('IF',db[_0xcc6a('0x50')][_0xcc6a('0x52')](_0xcc6a('0x53')))),_0xcc6a('0x54')],[db[_0xcc6a('0x50')]['fn'](_0xcc6a('0x51'),db[_0xcc6a('0x50')]['fn']('IF',db[_0xcc6a('0x50')][_0xcc6a('0x52')](_0xcc6a('0x55')))),'busyContacts'],[db[_0xcc6a('0x50')]['fn']('COUNT',db[_0xcc6a('0x50')]['fn']('IF',db[_0xcc6a('0x50')][_0xcc6a('0x52')]('`state`\x20=\x208,\x201,\x20null'))),_0xcc6a('0x56')],[db['sequelize']['fn'](_0xcc6a('0x51'),db['sequelize']['fn']('IF',db[_0xcc6a('0x50')][_0xcc6a('0x52')](_0xcc6a('0x57')))),_0xcc6a('0x58')],[db[_0xcc6a('0x50')]['fn'](_0xcc6a('0x51'),db[_0xcc6a('0x50')]['fn']('IF',db[_0xcc6a('0x50')]['literal'](_0xcc6a('0x59')))),'abandonedContacts'],[db[_0xcc6a('0x50')]['fn']('COUNT',db[_0xcc6a('0x50')]['fn']('IF',db[_0xcc6a('0x50')][_0xcc6a('0x52')]('`state`\x20=\x2022,\x201,\x20null'))),_0xcc6a('0x5a')],[db['sequelize']['fn']('COUNT',db[_0xcc6a('0x50')]['fn']('IF',db[_0xcc6a('0x50')][_0xcc6a('0x52')](_0xcc6a('0x5b')))),_0xcc6a('0x5c')]]})[_0xcc6a('0x27')](handleEntityNotFound(_0x392805,null))[_0xcc6a('0x27')](respondWithResult(_0x392805,null))[_0xcc6a('0x4b')](handleError(_0x392805,null));};exports[_0xcc6a('0x5d')]=function(_0x3e76d7,_0x42bbc7,_0x2ad9a6){return db[_0xcc6a('0x2d')]['findAll']({'raw':![],'where':{'CampaignId':_0x3e76d7[_0xcc6a('0x47')]['id']},'attributes':[[db[_0xcc6a('0x50')]['fn'](_0xcc6a('0x51'),db[_0xcc6a('0x50')]['fn']('IF',db['sequelize'][_0xcc6a('0x52')](_0xcc6a('0x5e')))),_0xcc6a('0x5f')],[db[_0xcc6a('0x50')]['fn'](_0xcc6a('0x51'),db[_0xcc6a('0x50')]['fn']('IF',db[_0xcc6a('0x50')][_0xcc6a('0x52')](_0xcc6a('0x53')))),_0xcc6a('0x54')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xcc6a('0x50')][_0xcc6a('0x52')](_0xcc6a('0x55')))),'busyContacts'],[db[_0xcc6a('0x50')]['fn'](_0xcc6a('0x51'),db[_0xcc6a('0x50')]['fn']('IF',db[_0xcc6a('0x50')]['literal']('`state`\x20=\x208,\x201,\x20null'))),_0xcc6a('0x56')],[db[_0xcc6a('0x50')]['fn'](_0xcc6a('0x51'),db[_0xcc6a('0x50')]['fn']('IF',db['sequelize'][_0xcc6a('0x52')](_0xcc6a('0x57')))),_0xcc6a('0x58')],[db[_0xcc6a('0x50')]['fn'](_0xcc6a('0x51'),db['sequelize']['fn']('IF',db['sequelize'][_0xcc6a('0x52')](_0xcc6a('0x59')))),_0xcc6a('0x60')],[db[_0xcc6a('0x50')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xcc6a('0x50')][_0xcc6a('0x52')](_0xcc6a('0x61')))),_0xcc6a('0x5a')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xcc6a('0x50')][_0xcc6a('0x52')](_0xcc6a('0x5b')))),_0xcc6a('0x5c')]]})['then'](handleEntityNotFound(_0x42bbc7,null))[_0xcc6a('0x27')](respondWithResult(_0x42bbc7,null))[_0xcc6a('0x4b')](handleError(_0x42bbc7,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x72e53a,_0x5b61df,_0x3b4ce0){return db['VoiceQueue'][_0xcc6a('0x4a')]({'where':{'id':_0x72e53a[_0xcc6a('0x47')]['id']}})[_0xcc6a('0x27')](handleEntityNotFound(_0x5b61df,null))['then'](function(_0x3ce1eb){var _0x51390a;if(_0x3ce1eb){_0x51390a=squel[_0xcc6a('0x62')]()['into'](_0xcc6a('0x63'))[_0xcc6a('0x64')]([_0xcc6a('0x65'),_0xcc6a('0x66'),_0xcc6a('0x67'),_0xcc6a('0x68'),'VoiceQueueId',_0xcc6a('0x69'),_0xcc6a('0x6a')],squel[_0xcc6a('0x6b')]()[_0xcc6a('0x6c')](_0xcc6a('0x6d'),'phone')[_0xcc6a('0x6c')](_0xcc6a('0x6e'),'scheduledAt')['field'](_0xcc6a('0x6f'),_0xcc6a('0x67'))[_0xcc6a('0x6c')](_0xcc6a('0x70'),_0xcc6a('0x68'))[_0xcc6a('0x6c')]('ANY_VALUE(VoiceQueueId)',_0xcc6a('0x71'))[_0xcc6a('0x6c')](_0xcc6a('0x6e'),_0xcc6a('0x69'))[_0xcc6a('0x6c')](_0xcc6a('0x6e'),'updatedAt')['from'](_0xcc6a('0x72'))[_0xcc6a('0x3e')](_0xcc6a('0x73'),_0x72e53a[_0xcc6a('0x47')]['id'][_0xcc6a('0x74')]())[_0xcc6a('0x3e')](_0xcc6a('0x75'),_0x72e53a['body'][_0xcc6a('0x76')][_0xcc6a('0x74')]())[_0xcc6a('0x3e')](_0xcc6a('0x77'))[_0xcc6a('0x3e')](_0xcc6a('0x78'),squel['select']()[_0xcc6a('0x6c')](_0xcc6a('0x65'))[_0xcc6a('0x79')]('cm_hopper')[_0xcc6a('0x3e')](_0xcc6a('0x73'),_0x72e53a[_0xcc6a('0x47')]['id'][_0xcc6a('0x74')]()))[_0xcc6a('0x3e')](_0xcc6a('0x78'),squel['select']()[_0xcc6a('0x6c')](_0xcc6a('0x7a'))['from'](_0xcc6a('0x72'))[_0xcc6a('0x3e')](_0xcc6a('0x73'),_0x72e53a[_0xcc6a('0x47')]['id'][_0xcc6a('0x74')]())['where'](_0xcc6a('0x7b')))[_0xcc6a('0x7c')](_0xcc6a('0x67')))[_0xcc6a('0x74')]();return db[_0xcc6a('0x50')][_0xcc6a('0x33')](_0x51390a);}return[];})['then'](respondWithResult(_0x5b61df,null))['catch'](handleError(_0x5b61df,null));};exports[_0xcc6a('0x7d')]=function(_0x5be65b,_0xb42e9,_0x35a798){return db[_0xcc6a('0x7e')][_0xcc6a('0x4a')]({'where':{'id':_0x5be65b[_0xcc6a('0x47')]['id']}})[_0xcc6a('0x27')](handleEntityNotFound(_0xb42e9,null))[_0xcc6a('0x27')](function(_0x1746d8){var _0xc0d194;if(_0x1746d8){_0xc0d194=squel[_0xcc6a('0x62')]()[_0xcc6a('0x7f')](_0xcc6a('0x63'))['fromQuery']([_0xcc6a('0x65'),_0xcc6a('0x66'),_0xcc6a('0x67'),_0xcc6a('0x68'),'CampaignId',_0xcc6a('0x69'),'updatedAt'],squel[_0xcc6a('0x6b')]()[_0xcc6a('0x6c')](_0xcc6a('0x6d'),_0xcc6a('0x65'))[_0xcc6a('0x6c')](_0xcc6a('0x6e'),_0xcc6a('0x66'))['field'](_0xcc6a('0x6f'),_0xcc6a('0x67'))[_0xcc6a('0x6c')](_0xcc6a('0x70'),_0xcc6a('0x68'))[_0xcc6a('0x6c')]('ANY_VALUE(CampaignId)',_0xcc6a('0x80'))[_0xcc6a('0x6c')]('NOW()','createdAt')[_0xcc6a('0x6c')](_0xcc6a('0x6e'),_0xcc6a('0x6a'))[_0xcc6a('0x79')](_0xcc6a('0x72'))['where'](_0xcc6a('0x81'),_0x5be65b['params']['id'][_0xcc6a('0x74')]())[_0xcc6a('0x3e')](_0xcc6a('0x75'),_0x5be65b[_0xcc6a('0x4d')][_0xcc6a('0x76')][_0xcc6a('0x74')]())[_0xcc6a('0x3e')](_0xcc6a('0x77'))['where'](_0xcc6a('0x78'),squel[_0xcc6a('0x6b')]()[_0xcc6a('0x6c')]('phone')[_0xcc6a('0x79')](_0xcc6a('0x63'))[_0xcc6a('0x3e')](_0xcc6a('0x81'),_0x5be65b[_0xcc6a('0x47')]['id'][_0xcc6a('0x74')]()))[_0xcc6a('0x3e')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0xcc6a('0x6b')]()[_0xcc6a('0x6c')](_0xcc6a('0x7a'))[_0xcc6a('0x79')](_0xcc6a('0x72'))[_0xcc6a('0x3e')](_0xcc6a('0x81'),_0x5be65b[_0xcc6a('0x47')]['id']['toString']())['where'](_0xcc6a('0x7b')))['group'](_0xcc6a('0x67')))[_0xcc6a('0x74')]();return db[_0xcc6a('0x50')][_0xcc6a('0x33')](_0xc0d194);}return[];})[_0xcc6a('0x27')](respondWithResult(_0xb42e9,null))[_0xcc6a('0x4b')](handleError(_0xb42e9,null));};exports[_0xcc6a('0x82')]=function(_0x48b6e3,_0x10d731,_0x537e2b){return db['CmHopper'][_0xcc6a('0x83')]({'where':{'VoiceQueueId':_0x48b6e3['body'][_0xcc6a('0x71')],'CampaignId':_0x48b6e3[_0xcc6a('0x4d')]['CampaignId'],'ContactId':_0x48b6e3['body'][_0xcc6a('0x67')]}})['then'](handleEntityNotFound(_0x10d731,null))[_0xcc6a('0x27')](function(_0x3df510){if(_0x3df510){return _0x3df510;}return null;})[_0xcc6a('0x27')](respondWithResult(_0x10d731,null))[_0xcc6a('0x4b')](handleError(_0x10d731,null));};
\ No newline at end of file
+var _0x187d=['state\x20=\x20?','calleridnum\x20NOT\x20IN\x20(?)','select','from','cm_hopper','calleridnum','cm_hopper_final','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','insert','into','CampaignId','CampaignId\x20=\x20?','state','checkContactHopper','CmHopper','findOne','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','update','destroy','error','stack','name','index','map','CmHopperFinal','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','where','filter','merge','includeAll','include','findAll','then','rows','catch','show','params','fields','options','find','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','COUNT','sequelize','literal','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x200,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','moveContactsQueueCampaignHopperFinal','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','VoiceQueueId\x20=\x20?','toString'];(function(_0x45783c,_0x49c56d){var _0x1161da=function(_0x3c5d41){while(--_0x3c5d41){_0x45783c['push'](_0x45783c['shift']());}};_0x1161da(++_0x49c56d);}(_0x187d,0x93));var _0xd187=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x187d[_0xbca1b1];return _0x4e1686;};'use strict';var emlformat=require(_0xd187('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd187('0x1'));var jsonpatch=require(_0xd187('0x2'));var rp=require(_0xd187('0x3'));var moment=require(_0xd187('0x4'));var BPromise=require(_0xd187('0x5'));var Mustache=require(_0xd187('0x6'));var util=require('util');var path=require(_0xd187('0x7'));var sox=require(_0xd187('0x8'));var csv=require('to-csv');var ejs=require(_0xd187('0x9'));var fs=require('fs');var fs_extra=require(_0xd187('0xa'));var _=require(_0xd187('0xb'));var squel=require(_0xd187('0xc'));var crypto=require(_0xd187('0xd'));var jsforce=require(_0xd187('0xe'));var deskjs=require(_0xd187('0xf'));var toCsv=require(_0xd187('0x10'));var querystring=require('querystring');var Papa=require(_0xd187('0x11'));var Redis=require(_0xd187('0x12'));var authService=require(_0xd187('0x13'));var qs=require(_0xd187('0x14'));var as=require(_0xd187('0x15'));var hardwareService=require(_0xd187('0x16'));var logger=require('../../config/logger')(_0xd187('0x17'));var utils=require(_0xd187('0x18'));var config=require(_0xd187('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xd187('0x1a'))['db'];function respondWithStatusCode(_0x4545cf,_0x32ba07){_0x32ba07=_0x32ba07||0xcc;return function(_0x59ee4a){if(_0x59ee4a){return _0x4545cf[_0xd187('0x1b')](_0x32ba07);}return _0x4545cf[_0xd187('0x1c')](_0x32ba07)[_0xd187('0x1d')]();};}function respondWithResult(_0x126d1a,_0x517b25){_0x517b25=_0x517b25||0xc8;return function(_0x39a927){if(_0x39a927){return _0x126d1a[_0xd187('0x1c')](_0x517b25)[_0xd187('0x1e')](_0x39a927);}};}function respondWithFilteredResult(_0x188cfe,_0x4c8f68){return function(_0x245d3e){if(_0x245d3e){var _0x52a208=typeof _0x4c8f68['offset']===_0xd187('0x1f')&&typeof _0x4c8f68['limit']==='undefined';var _0x207b36=_0x245d3e[_0xd187('0x20')];var _0x374fe0=_0x52a208?0x0:_0x4c8f68[_0xd187('0x21')];var _0x21df74=_0x52a208?_0x245d3e[_0xd187('0x20')]:_0x4c8f68[_0xd187('0x21')]+_0x4c8f68[_0xd187('0x22')];var _0x4f2f88;if(_0x21df74>=_0x207b36){_0x21df74=_0x207b36;_0x4f2f88=0xc8;}else{_0x4f2f88=0xce;}_0x188cfe[_0xd187('0x1c')](_0x4f2f88);return _0x188cfe[_0xd187('0x23')](_0xd187('0x24'),_0x374fe0+'-'+_0x21df74+'/'+_0x207b36)[_0xd187('0x1e')](_0x245d3e);}return null;};}function patchUpdates(_0x5204ee){return function(_0x2f7fb3){try{jsonpatch[_0xd187('0x25')](_0x2f7fb3,_0x5204ee,!![]);}catch(_0xc5bba5){return BPromise['reject'](_0xc5bba5);}return _0x2f7fb3['save']();};}function saveUpdates(_0x57cf1d,_0x435d94){return function(_0x33741d){if(_0x33741d){return _0x33741d[_0xd187('0x26')](_0x57cf1d)['then'](function(_0x2c07c8){return _0x2c07c8;});}return null;};}function removeEntity(_0x57186b,_0x145771){return function(_0x5a7a23){if(_0x5a7a23){return _0x5a7a23[_0xd187('0x27')]()['then'](function(){_0x57186b['status'](0xcc)[_0xd187('0x1d')]();});}};}function handleEntityNotFound(_0x4d992b,_0x12da33){return function(_0x598aa4){if(!_0x598aa4){_0x4d992b['sendStatus'](0x194);}return _0x598aa4;};}function handleError(_0x4eac6a,_0x848ddd){_0x848ddd=_0x848ddd||0x1f4;return function(_0xeff822){logger[_0xd187('0x28')](_0xeff822[_0xd187('0x29')]);if(_0xeff822['name']){delete _0xeff822[_0xd187('0x2a')];}_0x4eac6a[_0xd187('0x1c')](_0x848ddd)['send'](_0xeff822);};}exports[_0xd187('0x2b')]=function(_0x1c87ee,_0x34febe){var _0x4c50a5={},_0x15e2e8={},_0x56e292={'count':0x0,'rows':[]};var _0x263e31=_[_0xd187('0x2c')](db[_0xd187('0x2d')][_0xd187('0x2e')],function(_0x489f2e){return{'name':_0x489f2e[_0xd187('0x2f')],'type':_0x489f2e[_0xd187('0x30')]['key']};});_0x15e2e8['model']=_[_0xd187('0x2c')](_0x263e31,_0xd187('0x2a'));_0x15e2e8[_0xd187('0x31')]=_[_0xd187('0x32')](_0x1c87ee[_0xd187('0x31')]);_0x15e2e8[_0xd187('0x33')]=_[_0xd187('0x34')](_0x15e2e8[_0xd187('0x35')],_0x15e2e8['query']);_0x4c50a5[_0xd187('0x36')]=_[_0xd187('0x34')](_0x15e2e8[_0xd187('0x35')],qs['fields'](_0x1c87ee[_0xd187('0x31')]['fields']));_0x4c50a5[_0xd187('0x36')]=_0x4c50a5[_0xd187('0x36')][_0xd187('0x37')]?_0x4c50a5['attributes']:_0x15e2e8['model'];if(!_0x1c87ee[_0xd187('0x31')][_0xd187('0x38')]('nolimit')){_0x4c50a5[_0xd187('0x22')]=qs[_0xd187('0x22')](_0x1c87ee[_0xd187('0x31')]['limit']);_0x4c50a5['offset']=qs[_0xd187('0x21')](_0x1c87ee[_0xd187('0x31')]['offset']);}_0x4c50a5['order']=qs['sort'](_0x1c87ee[_0xd187('0x31')]['sort']);_0x4c50a5[_0xd187('0x39')]=qs[_0xd187('0x33')](_['pick'](_0x1c87ee[_0xd187('0x31')],_0x15e2e8['filters']),_0x263e31);if(_0x1c87ee[_0xd187('0x31')][_0xd187('0x3a')]){_0x4c50a5['where']=_[_0xd187('0x3b')](_0x4c50a5[_0xd187('0x39')],{'$or':_['map'](_0x263e31,function(_0x4399a5){if(_0x4399a5['type']!=='VIRTUAL'){var _0x26b06d={};_0x26b06d[_0x4399a5[_0xd187('0x2a')]]={'$like':'%'+_0x1c87ee[_0xd187('0x31')][_0xd187('0x3a')]+'%'};return _0x26b06d;}})});}_0x4c50a5=_[_0xd187('0x3b')]({},_0x4c50a5,_0x1c87ee['options']);var _0x8860c={'where':_0x4c50a5[_0xd187('0x39')]};return db[_0xd187('0x2d')]['count'](_0x8860c)['then'](function(_0x538c05){_0x56e292['count']=_0x538c05;if(_0x1c87ee[_0xd187('0x31')][_0xd187('0x3c')]){_0x4c50a5[_0xd187('0x3d')]=[{'all':!![]}];}return db[_0xd187('0x2d')][_0xd187('0x3e')](_0x4c50a5);})[_0xd187('0x3f')](function(_0x4699e1){_0x56e292[_0xd187('0x40')]=_0x4699e1;return _0x56e292;})['then'](respondWithFilteredResult(_0x34febe,_0x4c50a5))[_0xd187('0x41')](handleError(_0x34febe,null));};exports[_0xd187('0x42')]=function(_0x31d9d2,_0x51c7fc){var _0x21cbf6={'raw':!![],'where':{'id':_0x31d9d2[_0xd187('0x43')]['id']}},_0x48c100={};_0x48c100[_0xd187('0x35')]=_[_0xd187('0x32')](db[_0xd187('0x2d')][_0xd187('0x2e')]);_0x48c100['query']=_[_0xd187('0x32')](_0x31d9d2[_0xd187('0x31')]);_0x48c100[_0xd187('0x33')]=_[_0xd187('0x34')](_0x48c100['model'],_0x48c100[_0xd187('0x31')]);_0x21cbf6[_0xd187('0x36')]=_['intersection'](_0x48c100[_0xd187('0x35')],qs[_0xd187('0x44')](_0x31d9d2['query']['fields']));_0x21cbf6[_0xd187('0x36')]=_0x21cbf6[_0xd187('0x36')]['length']?_0x21cbf6['attributes']:_0x48c100['model'];if(_0x31d9d2[_0xd187('0x31')][_0xd187('0x3c')]){_0x21cbf6[_0xd187('0x3d')]=[{'all':!![]}];}_0x21cbf6=_[_0xd187('0x3b')]({},_0x21cbf6,_0x31d9d2[_0xd187('0x45')]);return db[_0xd187('0x2d')][_0xd187('0x46')](_0x21cbf6)['then'](handleEntityNotFound(_0x51c7fc,null))[_0xd187('0x3f')](respondWithResult(_0x51c7fc,null))[_0xd187('0x41')](handleError(_0x51c7fc,null));};exports[_0xd187('0x47')]=function(_0x3ce4a1,_0x3f5def){return db[_0xd187('0x2d')][_0xd187('0x47')]()[_0xd187('0x3f')](respondWithResult(_0x3f5def,null))['catch'](handleError(_0x3f5def,null));};exports[_0xd187('0x26')]=function(_0x2657be,_0x4523c8){if(_0x2657be[_0xd187('0x48')][_0xd187('0x49')]){delete _0x2657be['body'][_0xd187('0x49')];}return db[_0xd187('0x2d')]['find']({'where':{'uniqueid':_0x2657be[_0xd187('0x43')]['id']}})[_0xd187('0x3f')](handleEntityNotFound(_0x4523c8,null))['then'](saveUpdates(_0x2657be['body'],null))['then'](respondWithResult(_0x4523c8,null))['catch'](handleError(_0x4523c8,null));};exports[_0xd187('0x4a')]=function(_0x22f432,_0x12d448,_0x1bcc3a){return db[_0xd187('0x2d')][_0xd187('0x3e')]({'raw':![],'where':{'VoiceQueueId':_0x22f432[_0xd187('0x43')]['id']},'attributes':[[db['sequelize']['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')]('`state`\x20=\x200,\x201,\x20null'))),_0xd187('0x4e')],[db['sequelize']['fn']('COUNT',db[_0xd187('0x4c')]['fn']('IF',db['sequelize'][_0xd187('0x4d')](_0xd187('0x4f')))),_0xd187('0x50')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x51')))),'busyContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x52')))),'congestionContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xd187('0x53')],[db['sequelize']['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x54')))),_0xd187('0x55')],[db[_0xd187('0x4c')]['fn']('COUNT',db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')]('`state`\x20=\x2022,\x201,\x20null'))),_0xd187('0x56')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x57')))),_0xd187('0x58')]]})[_0xd187('0x3f')](handleEntityNotFound(_0x12d448,null))[_0xd187('0x3f')](respondWithResult(_0x12d448,null))[_0xd187('0x41')](handleError(_0x12d448,null));};exports[_0xd187('0x59')]=function(_0x23271b,_0x288a04,_0x39934c){return db[_0xd187('0x2d')][_0xd187('0x3e')]({'raw':![],'where':{'CampaignId':_0x23271b[_0xd187('0x43')]['id']},'attributes':[[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db[_0xd187('0x4c')]['literal'](_0xd187('0x5a')))),_0xd187('0x4e')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')]('`state`\x20=\x203,\x201,\x20null'))),'noAnswerContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')]['literal'](_0xd187('0x51')))),'busyContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')]['literal'](_0xd187('0x52')))),_0xd187('0x5b')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db['sequelize']['literal'](_0xd187('0x5c')))),_0xd187('0x53')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x54')))),_0xd187('0x55')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db['sequelize'][_0xd187('0x4d')](_0xd187('0x5d')))),'reCallContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db['sequelize'][_0xd187('0x4d')](_0xd187('0x57')))),_0xd187('0x58')]]})[_0xd187('0x3f')](handleEntityNotFound(_0x288a04,null))['then'](respondWithResult(_0x288a04,null))[_0xd187('0x41')](handleError(_0x288a04,null));};exports[_0xd187('0x5e')]=function(_0x52e364,_0x569959,_0x3bca83){return db['VoiceQueue'][_0xd187('0x46')]({'where':{'id':_0x52e364[_0xd187('0x43')]['id']}})['then'](handleEntityNotFound(_0x569959,null))[_0xd187('0x3f')](function(_0x570c1c){var _0x317bc3;if(_0x570c1c){_0x317bc3=squel['insert']()['into']('cm_hopper')[_0xd187('0x5f')]([_0xd187('0x60'),_0xd187('0x61'),_0xd187('0x62'),_0xd187('0x63'),_0xd187('0x64'),_0xd187('0x65'),_0xd187('0x66')],squel['select']()[_0xd187('0x67')](_0xd187('0x68'),_0xd187('0x60'))['field'](_0xd187('0x69'),_0xd187('0x61'))[_0xd187('0x67')](_0xd187('0x6a'),'ContactId')[_0xd187('0x67')](_0xd187('0x6b'),'ListId')[_0xd187('0x67')](_0xd187('0x6c'),_0xd187('0x64'))[_0xd187('0x67')]('NOW()',_0xd187('0x65'))[_0xd187('0x67')]('NOW()',_0xd187('0x66'))['from']('cm_hopper_final')['where'](_0xd187('0x6d'),_0x52e364[_0xd187('0x43')]['id'][_0xd187('0x6e')]())[_0xd187('0x39')](_0xd187('0x6f'),_0x52e364[_0xd187('0x48')]['state'][_0xd187('0x6e')]())[_0xd187('0x39')]('calleridnum\x20IS\x20NOT\x20NULL')['where'](_0xd187('0x70'),squel[_0xd187('0x71')]()[_0xd187('0x67')](_0xd187('0x60'))[_0xd187('0x72')](_0xd187('0x73'))['where'](_0xd187('0x6d'),_0x52e364[_0xd187('0x43')]['id'][_0xd187('0x6e')]()))[_0xd187('0x39')](_0xd187('0x70'),squel[_0xd187('0x71')]()[_0xd187('0x67')](_0xd187('0x74'))[_0xd187('0x72')](_0xd187('0x75'))[_0xd187('0x39')](_0xd187('0x6d'),_0x52e364['params']['id']['toString']())[_0xd187('0x39')](_0xd187('0x76')))[_0xd187('0x77')](_0xd187('0x62')))[_0xd187('0x6e')]();return db[_0xd187('0x4c')]['query'](_0x317bc3);}return[];})[_0xd187('0x3f')](respondWithResult(_0x569959,null))['catch'](handleError(_0x569959,null));};exports[_0xd187('0x78')]=function(_0x520f86,_0x5cbfa6,_0x304117){return db['Campaign'][_0xd187('0x46')]({'where':{'id':_0x520f86[_0xd187('0x43')]['id']}})[_0xd187('0x3f')](handleEntityNotFound(_0x5cbfa6,null))[_0xd187('0x3f')](function(_0x1b93db){var _0x13a362;if(_0x1b93db){_0x13a362=squel[_0xd187('0x79')]()[_0xd187('0x7a')](_0xd187('0x73'))[_0xd187('0x5f')]([_0xd187('0x60'),_0xd187('0x61'),_0xd187('0x62'),_0xd187('0x63'),_0xd187('0x7b'),'createdAt',_0xd187('0x66')],squel[_0xd187('0x71')]()[_0xd187('0x67')](_0xd187('0x68'),'phone')[_0xd187('0x67')](_0xd187('0x69'),'scheduledAt')['field'](_0xd187('0x6a'),_0xd187('0x62'))[_0xd187('0x67')](_0xd187('0x6b'),_0xd187('0x63'))[_0xd187('0x67')]('ANY_VALUE(CampaignId)',_0xd187('0x7b'))[_0xd187('0x67')]('NOW()',_0xd187('0x65'))[_0xd187('0x67')](_0xd187('0x69'),_0xd187('0x66'))['from']('cm_hopper_final')[_0xd187('0x39')](_0xd187('0x7c'),_0x520f86[_0xd187('0x43')]['id']['toString']())[_0xd187('0x39')](_0xd187('0x6f'),_0x520f86[_0xd187('0x48')][_0xd187('0x7d')]['toString']())[_0xd187('0x39')]('calleridnum\x20IS\x20NOT\x20NULL')['where']('calleridnum\x20NOT\x20IN\x20(?)',squel['select']()['field']('phone')['from'](_0xd187('0x73'))[_0xd187('0x39')]('CampaignId\x20=\x20?',_0x520f86[_0xd187('0x43')]['id'][_0xd187('0x6e')]()))[_0xd187('0x39')](_0xd187('0x70'),squel[_0xd187('0x71')]()['field'](_0xd187('0x74'))['from'](_0xd187('0x75'))[_0xd187('0x39')](_0xd187('0x7c'),_0x520f86[_0xd187('0x43')]['id'][_0xd187('0x6e')]())[_0xd187('0x39')](_0xd187('0x76')))['group'](_0xd187('0x62')))[_0xd187('0x6e')]();return db['sequelize'][_0xd187('0x31')](_0x13a362);}return[];})[_0xd187('0x3f')](respondWithResult(_0x5cbfa6,null))['catch'](handleError(_0x5cbfa6,null));};exports[_0xd187('0x7e')]=function(_0x3bd1d8,_0x224312,_0x45b522){return db[_0xd187('0x7f')][_0xd187('0x80')]({'where':{'VoiceQueueId':_0x3bd1d8[_0xd187('0x48')][_0xd187('0x64')],'CampaignId':_0x3bd1d8['body'][_0xd187('0x7b')],'ContactId':_0x3bd1d8[_0xd187('0x48')][_0xd187('0x62')]}})[_0xd187('0x3f')](handleEntityNotFound(_0x224312,null))[_0xd187('0x3f')](function(_0x400a9){if(_0x400a9){return _0x400a9;}return null;})['then'](respondWithResult(_0x224312,null))['catch'](handleError(_0x224312,null));};
\ No newline at end of file
index e97431a..9d95899 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x599e=['uniqueid','lodash','api','moment','path','../../config/environment','./cmHopperFinal.attributes','exports','CmHopperFinal','cm_hopper_final','calleridnum'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x599e,0x140));var _0xe599=function(_0x11bb35,_0x54ce24){_0x11bb35=_0x11bb35-0x0;var _0x45f9f3=_0x599e[_0x11bb35];return _0x45f9f3;};'use strict';var _=require(_0xe599('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xe599('0x1'));var moment=require(_0xe599('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xe599('0x3'));var rimraf=require('rimraf');var config=require(_0xe599('0x4'));var attributes=require(_0xe599('0x5'));module[_0xe599('0x6')]=function(_0x393560,_0x599226){return _0x393560['define'](_0xe599('0x7'),attributes,{'tableName':_0xe599('0x8'),'paranoid':![],'indexes':[{'name':'calleridnum','fields':[_0xe599('0x9')]},{'name':'uniqueid','fields':[_0xe599('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa5f7=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash'];(function(_0x12bffa,_0x550ab0){var _0x34032f=function(_0x1fb731){while(--_0x1fb731){_0x12bffa['push'](_0x12bffa['shift']());}};_0x34032f(++_0x550ab0);}(_0xa5f7,0x197));var _0x7a5f=function(_0x2d61b2,_0x142947){_0x2d61b2=_0x2d61b2-0x0;var _0x12df89=_0xa5f7[_0x2d61b2];return _0x12df89;};'use strict';var _=require(_0x7a5f('0x0'));var util=require(_0x7a5f('0x1'));var logger=require(_0x7a5f('0x2'))(_0x7a5f('0x3'));var moment=require(_0x7a5f('0x4'));var BPromise=require(_0x7a5f('0x5'));var rp=require(_0x7a5f('0x6'));var fs=require('fs');var path=require(_0x7a5f('0x7'));var rimraf=require(_0x7a5f('0x8'));var config=require(_0x7a5f('0x9'));var attributes=require(_0x7a5f('0xa'));module[_0x7a5f('0xb')]=function(_0x5b0c7a,_0x37ebe7){return _0x5b0c7a[_0x7a5f('0xc')](_0x7a5f('0xd'),attributes,{'tableName':_0x7a5f('0xe'),'paranoid':![],'indexes':[{'name':_0x7a5f('0xf'),'fields':['calleridnum']},{'name':_0x7a5f('0x10'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index f74ee8e..ab71ade 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0x5b988e,_0x3862a5){var _0x3b652d=function(_0x3fb345){while(--_0x3fb345){_0x5b988e['push'](_0x5b988e['shift']());}};_0x3b652d(++_0x3862a5);}(_0xb10b,0x12a));var _0xbb10=function(_0x4d4046,_0x195cf8){_0x4d4046=_0x4d4046-0x0;var _0x82d2b1=_0xb10b[_0x4d4046];return _0x82d2b1;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _0x7a54=['../../config/environment','jayson/promise','http','info','CmHopperFinal,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','CmHopperFinal','create','body','options','raw','CreateCmHopperFinal','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x1d12df,_0x173f49){var _0xc13272=function(_0x465ce4){while(--_0x465ce4){_0x1d12df['push'](_0x1d12df['shift']());}};_0xc13272(++_0x173f49);}(_0x7a54,0x106));var _0x47a5=function(_0x2026d3,_0x40da30){_0x2026d3=_0x2026d3-0x0;var _0x5c63e3=_0x7a54[_0x2026d3];return _0x5c63e3;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('CmHopperFinal,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateCmHopperFinal']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateCmHopperFinal',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};
\ No newline at end of file
index 339fd03..2e60f55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf74e=['countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','moveContactsIvrCampaignHopperFinal','/checkContactHopper','put','update','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal'];(function(_0x4b1439,_0x2b7333){var _0x252454=function(_0x2c2203){while(--_0x2c2203){_0x4b1439['push'](_0x4b1439['shift']());}};_0x252454(++_0x2b7333);}(_0xf74e,0x19e));var _0xef74=function(_0x493985,_0xabbee5){_0x493985=_0x493985-0x0;var _0x532b94=_0xf74e[_0x493985];return _0x532b94;};'use strict';var multer=require(_0xef74('0x0'));var util=require(_0xef74('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xef74('0x2'));var router=express[_0xef74('0x3')]();var fs_extra=require(_0xef74('0x4'));var auth=require(_0xef74('0x5'));var interaction=require(_0xef74('0x6'));var config=require(_0xef74('0x7'));var controller=require(_0xef74('0x8'));router['get']('/',auth[_0xef74('0x9')](),controller[_0xef74('0xa')]);router[_0xef74('0xb')](_0xef74('0xc'),auth['isAuthenticated'](),controller[_0xef74('0xd')]);router['get'](_0xef74('0xe'),auth[_0xef74('0x9')](),controller[_0xef74('0xf')]);router[_0xef74('0xb')](_0xef74('0x10'),auth[_0xef74('0x9')](),controller[_0xef74('0x11')]);router[_0xef74('0xb')]('/campaign/countAttributes/:id',auth[_0xef74('0x9')](),controller[_0xef74('0x12')]);router[_0xef74('0x13')](_0xef74('0x14'),auth[_0xef74('0x9')](),controller[_0xef74('0x15')]);router[_0xef74('0x13')]('/voice/campaign/moveContacts/:id',auth[_0xef74('0x9')](),controller[_0xef74('0x16')]);router[_0xef74('0x13')](_0xef74('0x17'),auth[_0xef74('0x9')](),controller['checkContactHopper']);router[_0xef74('0x18')](_0xef74('0xe'),auth[_0xef74('0x9')](),controller[_0xef74('0x19')]);module[_0xef74('0x1a')]=router;
\ No newline at end of file
+var _0x43d9=['/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','post','/checkContactHopper','checkContactHopper','update','exports','multer','util','connect-timeout','express','fs-extra','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','index','/describe','describe','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal'];(function(_0x507c81,_0x3e1b56){var _0x368a25=function(_0x1e7519){while(--_0x1e7519){_0x507c81['push'](_0x507c81['shift']());}};_0x368a25(++_0x3e1b56);}(_0x43d9,0x17e));var _0x943d=function(_0x315996,_0x1918de){_0x315996=_0x315996-0x0;var _0x11be21=_0x43d9[_0x315996];return _0x11be21;};'use strict';var multer=require(_0x943d('0x0'));var util=require(_0x943d('0x1'));var path=require('path');var timeout=require(_0x943d('0x2'));var express=require(_0x943d('0x3'));var router=express['Router']();var fs_extra=require(_0x943d('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x943d('0x5'));var controller=require(_0x943d('0x6'));router[_0x943d('0x7')]('/',auth[_0x943d('0x8')](),controller[_0x943d('0x9')]);router[_0x943d('0x7')](_0x943d('0xa'),auth[_0x943d('0x8')](),controller[_0x943d('0xb')]);router[_0x943d('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x943d('0x7')](_0x943d('0xc'),auth[_0x943d('0x8')](),controller[_0x943d('0xd')]);router[_0x943d('0x7')](_0x943d('0xe'),auth[_0x943d('0x8')](),controller[_0x943d('0xf')]);router['post'](_0x943d('0x10'),auth[_0x943d('0x8')](),controller[_0x943d('0x11')]);router['post'](_0x943d('0x12'),auth[_0x943d('0x8')](),controller[_0x943d('0x13')]);router[_0x943d('0x14')](_0x943d('0x15'),auth[_0x943d('0x8')](),controller[_0x943d('0x16')]);router['put']('/:id',auth[_0x943d('0x8')](),controller[_0x943d('0x17')]);module[_0x943d('0x18')]=router;
\ No newline at end of file
index a50ba27..44e6773 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc771=['BOOLEAN','sequelize','exports','INTEGER','DATE','STRING'];(function(_0x313c96,_0x3cee6e){var _0x522f53=function(_0x8961e){while(--_0x8961e){_0x313c96['push'](_0x313c96['shift']());}};_0x522f53(++_0x3cee6e);}(_0xc771,0x1b7));var _0x1c77=function(_0x418251,_0x51579c){_0x418251=_0x418251-0x0;var _0x51a711=_0xc771[_0x418251];return _0x51a711;};'use strict';var Sequelize=require(_0x1c77('0x0'));module[_0x1c77('0x1')]={'state':{'type':Sequelize[_0x1c77('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x1c77('0x3')]},'countbusyretry':{'type':Sequelize[_0x1c77('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x1c77('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x1c77('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x1c77('0x4')]},'originatecalleridnum':{'type':Sequelize[_0x1c77('0x4')]},'originatecalleridname':{'type':Sequelize[_0x1c77('0x4')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x1c77('0x4')]},'starttime':{'type':Sequelize[_0x1c77('0x3')]},'responsetime':{'type':Sequelize[_0x1c77('0x3')]},'answertime':{'type':Sequelize[_0x1c77('0x3')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x1c77('0x3')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x1c77('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x1c77('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x1c77('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x1c77('0x4')]},'campaign':{'type':Sequelize[_0x1c77('0x4')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x1c77('0x4')]},'reason':{'type':Sequelize[_0x1c77('0x4')]},'amd':{'type':Sequelize[_0x1c77('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x1c77('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x1c77('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x1c77('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x1c77('0x3')]},'recallme':{'type':Sequelize[_0x1c77('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x1c77('0x3')]},'edited':{'type':Sequelize[_0x1c77('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x1c77('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x1c77('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x1c77('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x1c77('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x1c77('0x2')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x1c77('0x4')]}};
\ No newline at end of file
+var _0x2533=['STRING','BOOLEAN','sequelize','exports','INTEGER','DATE'];(function(_0x5ee754,_0x1924c1){var _0x1d019d=function(_0x3f3b12){while(--_0x3f3b12){_0x5ee754['push'](_0x5ee754['shift']());}};_0x1d019d(++_0x1924c1);}(_0x2533,0x68));var _0x3253=function(_0x1a89a1,_0x56d889){_0x1a89a1=_0x1a89a1-0x0;var _0x3d5b46=_0x2533[_0x1a89a1];return _0x3d5b46;};'use strict';var Sequelize=require(_0x3253('0x0'));module[_0x3253('0x1')]={'state':{'type':Sequelize[_0x3253('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x3253('0x3')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x3253('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x3253('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x3253('0x4')]},'originatecalleridnum':{'type':Sequelize[_0x3253('0x4')]},'originatecalleridname':{'type':Sequelize[_0x3253('0x4')]},'calleridnum':{'type':Sequelize[_0x3253('0x4')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x3253('0x3')]},'responsetime':{'type':Sequelize[_0x3253('0x3')]},'answertime':{'type':Sequelize[_0x3253('0x3')]},'droptime':{'type':Sequelize[_0x3253('0x3')]},'endtime':{'type':Sequelize[_0x3253('0x3')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x3253('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x3253('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x3253('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x3253('0x4')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x3253('0x4')]},'membername':{'type':Sequelize[_0x3253('0x4')]},'reason':{'type':Sequelize[_0x3253('0x4')]},'amd':{'type':Sequelize[_0x3253('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x3253('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x3253('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x3253('0x3')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0x3253('0x3')]},'edited':{'type':Sequelize[_0x3253('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x3253('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x3253('0x2')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x3253('0x4')]}};
\ No newline at end of file
index fc4f46c..d0a749d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fb5=['includeAll','include','findAll','rows','show','params','catch','create','body','describe','uniqueid','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','Content-Range','reject','save','update','then','sendStatus','error','name','send','map','CmHopperHistory','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options'];(function(_0x36909d,_0x2795f1){var _0x1fd29d=function(_0x27d0fa){while(--_0x27d0fa){_0x36909d['push'](_0x36909d['shift']());}};_0x1fd29d(++_0x2795f1);}(_0x5fb5,0x1c7));var _0x55fb=function(_0x3f2855,_0x220576){_0x3f2855=_0x3f2855-0x0;var _0x20c16f=_0x5fb5[_0x3f2855];return _0x20c16f;};'use strict';var emlformat=require(_0x55fb('0x0'));var rimraf=require(_0x55fb('0x1'));var zipdir=require(_0x55fb('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x55fb('0x3'));var moment=require(_0x55fb('0x4'));var BPromise=require(_0x55fb('0x5'));var Mustache=require(_0x55fb('0x6'));var util=require(_0x55fb('0x7'));var path=require(_0x55fb('0x8'));var sox=require('sox');var csv=require(_0x55fb('0x9'));var ejs=require(_0x55fb('0xa'));var fs=require('fs');var fs_extra=require(_0x55fb('0xb'));var _=require(_0x55fb('0xc'));var squel=require(_0x55fb('0xd'));var crypto=require('crypto');var jsforce=require(_0x55fb('0xe'));var deskjs=require(_0x55fb('0xf'));var toCsv=require(_0x55fb('0x9'));var querystring=require('querystring');var Papa=require(_0x55fb('0x10'));var Redis=require('ioredis');var authService=require(_0x55fb('0x11'));var qs=require(_0x55fb('0x12'));var as=require(_0x55fb('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x55fb('0x14'));var licenseUtil=require(_0x55fb('0x15'));var db=require(_0x55fb('0x16'))['db'];function respondWithStatusCode(_0x45f2a0,_0x540767){_0x540767=_0x540767||0xcc;return function(_0x3d189d){if(_0x3d189d){return _0x45f2a0['sendStatus'](_0x540767);}return _0x45f2a0[_0x55fb('0x17')](_0x540767)[_0x55fb('0x18')]();};}function respondWithResult(_0x174fce,_0x3dafb6){_0x3dafb6=_0x3dafb6||0xc8;return function(_0x21fde6){if(_0x21fde6){return _0x174fce[_0x55fb('0x17')](_0x3dafb6)[_0x55fb('0x19')](_0x21fde6);}};}function respondWithFilteredResult(_0x1180af,_0x5aaaaf){return function(_0x6e15ee){if(_0x6e15ee){var _0xd667ba=typeof _0x5aaaaf[_0x55fb('0x1a')]===_0x55fb('0x1b')&&typeof _0x5aaaaf['limit']===_0x55fb('0x1b');var _0x37a600=_0x6e15ee['count'];var _0xa0de55=_0xd667ba?0x0:_0x5aaaaf['offset'];var _0x31d16c=_0xd667ba?_0x6e15ee[_0x55fb('0x1c')]:_0x5aaaaf[_0x55fb('0x1a')]+_0x5aaaaf[_0x55fb('0x1d')];var _0x120433;if(_0x31d16c>=_0x37a600){_0x31d16c=_0x37a600;_0x120433=0xc8;}else{_0x120433=0xce;}_0x1180af[_0x55fb('0x17')](_0x120433);return _0x1180af['set'](_0x55fb('0x1e'),_0xa0de55+'-'+_0x31d16c+'/'+_0x37a600)[_0x55fb('0x19')](_0x6e15ee);}return null;};}function patchUpdates(_0x5f23cd){return function(_0x2039d1){try{jsonpatch['apply'](_0x2039d1,_0x5f23cd,!![]);}catch(_0xb07fc6){return BPromise[_0x55fb('0x1f')](_0xb07fc6);}return _0x2039d1[_0x55fb('0x20')]();};}function saveUpdates(_0x907628,_0x4ba895){return function(_0x1f16a9){if(_0x1f16a9){return _0x1f16a9[_0x55fb('0x21')](_0x907628)[_0x55fb('0x22')](function(_0xd9c6af){return _0xd9c6af;});}return null;};}function removeEntity(_0x5ca2b6,_0x4bc6dc){return function(_0x5ac656){if(_0x5ac656){return _0x5ac656['destroy']()['then'](function(){_0x5ca2b6[_0x55fb('0x17')](0xcc)[_0x55fb('0x18')]();});}};}function handleEntityNotFound(_0x11d277,_0x29569e){return function(_0x5f56ac){if(!_0x5f56ac){_0x11d277[_0x55fb('0x23')](0x194);}return _0x5f56ac;};}function handleError(_0x46a2cd,_0x3fd47c){_0x3fd47c=_0x3fd47c||0x1f4;return function(_0x4bc3b0){logger[_0x55fb('0x24')](_0x4bc3b0['stack']);if(_0x4bc3b0[_0x55fb('0x25')]){delete _0x4bc3b0[_0x55fb('0x25')];}_0x46a2cd['status'](_0x3fd47c)[_0x55fb('0x26')](_0x4bc3b0);};}exports['index']=function(_0x4306b1,_0xbff91a){var _0x154835={},_0xc9c3dc={},_0x4e886f={'count':0x0,'rows':[]};var _0x288fe8=_[_0x55fb('0x27')](db[_0x55fb('0x28')][_0x55fb('0x29')],function(_0x2b770a){return{'name':_0x2b770a[_0x55fb('0x2a')],'type':_0x2b770a[_0x55fb('0x2b')][_0x55fb('0x2c')]};});_0xc9c3dc['model']=_['map'](_0x288fe8,_0x55fb('0x25'));_0xc9c3dc[_0x55fb('0x2d')]=_[_0x55fb('0x2e')](_0x4306b1[_0x55fb('0x2d')]);_0xc9c3dc[_0x55fb('0x2f')]=_[_0x55fb('0x30')](_0xc9c3dc[_0x55fb('0x31')],_0xc9c3dc[_0x55fb('0x2d')]);_0x154835[_0x55fb('0x32')]=_[_0x55fb('0x30')](_0xc9c3dc[_0x55fb('0x31')],qs[_0x55fb('0x33')](_0x4306b1['query'][_0x55fb('0x33')]));_0x154835[_0x55fb('0x32')]=_0x154835[_0x55fb('0x32')][_0x55fb('0x34')]?_0x154835[_0x55fb('0x32')]:_0xc9c3dc['model'];if(!_0x4306b1[_0x55fb('0x2d')][_0x55fb('0x35')](_0x55fb('0x36'))){_0x154835[_0x55fb('0x1d')]=qs[_0x55fb('0x1d')](_0x4306b1['query']['limit']);_0x154835[_0x55fb('0x1a')]=qs['offset'](_0x4306b1['query'][_0x55fb('0x1a')]);}_0x154835[_0x55fb('0x37')]=qs[_0x55fb('0x38')](_0x4306b1[_0x55fb('0x2d')][_0x55fb('0x38')]);_0x154835[_0x55fb('0x39')]=qs[_0x55fb('0x2f')](_[_0x55fb('0x3a')](_0x4306b1[_0x55fb('0x2d')],_0xc9c3dc['filters']),_0x288fe8);if(_0x4306b1[_0x55fb('0x2d')][_0x55fb('0x3b')]){_0x154835[_0x55fb('0x39')]=_[_0x55fb('0x3c')](_0x154835[_0x55fb('0x39')],{'$or':_[_0x55fb('0x27')](_0x288fe8,function(_0x182c53){if(_0x182c53[_0x55fb('0x2b')]!==_0x55fb('0x3d')){var _0x6180e3={};_0x6180e3[_0x182c53['name']]={'$like':'%'+_0x4306b1[_0x55fb('0x2d')][_0x55fb('0x3b')]+'%'};return _0x6180e3;}})});}_0x154835=_['merge']({},_0x154835,_0x4306b1[_0x55fb('0x3e')]);var _0x6b8685={'where':_0x154835[_0x55fb('0x39')]};return db[_0x55fb('0x28')][_0x55fb('0x1c')](_0x6b8685)[_0x55fb('0x22')](function(_0x510b4c){_0x4e886f[_0x55fb('0x1c')]=_0x510b4c;if(_0x4306b1[_0x55fb('0x2d')][_0x55fb('0x3f')]){_0x154835[_0x55fb('0x40')]=[{'all':!![]}];}return db[_0x55fb('0x28')][_0x55fb('0x41')](_0x154835);})['then'](function(_0x247333){_0x4e886f[_0x55fb('0x42')]=_0x247333;return _0x4e886f;})[_0x55fb('0x22')](respondWithFilteredResult(_0xbff91a,_0x154835))['catch'](handleError(_0xbff91a,null));};exports[_0x55fb('0x43')]=function(_0xe592b,_0xbf0528){var _0x57b5bb={'raw':!![],'where':{'id':_0xe592b[_0x55fb('0x44')]['id']}},_0x1b0d9f={};_0x1b0d9f[_0x55fb('0x31')]=_[_0x55fb('0x2e')](db['CmHopperHistory'][_0x55fb('0x29')]);_0x1b0d9f[_0x55fb('0x2d')]=_[_0x55fb('0x2e')](_0xe592b['query']);_0x1b0d9f[_0x55fb('0x2f')]=_[_0x55fb('0x30')](_0x1b0d9f['model'],_0x1b0d9f[_0x55fb('0x2d')]);_0x57b5bb['attributes']=_[_0x55fb('0x30')](_0x1b0d9f['model'],qs[_0x55fb('0x33')](_0xe592b[_0x55fb('0x2d')][_0x55fb('0x33')]));_0x57b5bb[_0x55fb('0x32')]=_0x57b5bb['attributes']['length']?_0x57b5bb[_0x55fb('0x32')]:_0x1b0d9f[_0x55fb('0x31')];if(_0xe592b[_0x55fb('0x2d')][_0x55fb('0x3f')]){_0x57b5bb[_0x55fb('0x40')]=[{'all':!![]}];}_0x57b5bb=_[_0x55fb('0x3c')]({},_0x57b5bb,_0xe592b[_0x55fb('0x3e')]);return db[_0x55fb('0x28')]['find'](_0x57b5bb)[_0x55fb('0x22')](handleEntityNotFound(_0xbf0528,null))['then'](respondWithResult(_0xbf0528,null))[_0x55fb('0x45')](handleError(_0xbf0528,null));};exports[_0x55fb('0x46')]=function(_0x4a20d7,_0x30a2b0){return db[_0x55fb('0x28')][_0x55fb('0x46')](_0x4a20d7[_0x55fb('0x47')],{})['then'](respondWithResult(_0x30a2b0,0xc9))[_0x55fb('0x45')](handleError(_0x30a2b0,null));};exports[_0x55fb('0x48')]=function(_0x17a765,_0x2eab02){return db[_0x55fb('0x28')][_0x55fb('0x48')]()['then'](respondWithResult(_0x2eab02,null))['catch'](handleError(_0x2eab02,null));};exports[_0x55fb('0x21')]=function(_0x123100,_0x20bedc){if(_0x123100[_0x55fb('0x47')]['uniqueid']){delete _0x123100['body'][_0x55fb('0x49')];}return db[_0x55fb('0x28')]['find']({'where':{'uniqueid':_0x123100[_0x55fb('0x44')]['id']}})[_0x55fb('0x22')](handleEntityNotFound(_0x20bedc,null))['then'](saveUpdates(_0x123100[_0x55fb('0x47')],null))[_0x55fb('0x22')](respondWithResult(_0x20bedc,null))[_0x55fb('0x45')](handleError(_0x20bedc,null));};
\ No newline at end of file
+var _0xf8d1=['options','count','includeAll','catch','show','params','length','include','find','create','body','describe','uniqueid','eml-format','request-promise','moment','bluebird','mustache','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','json','offset','limit','undefined','status','set','Content-Range','apply','reject','update','destroy','then','end','error','stack','name','index','map','CmHopperHistory','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','where','pick','filter','merge','VIRTUAL'];(function(_0x5a95fa,_0x4a2fc9){var _0x1a61b8=function(_0x59f119){while(--_0x59f119){_0x5a95fa['push'](_0x5a95fa['shift']());}};_0x1a61b8(++_0x4a2fc9);}(_0xf8d1,0x1c9));var _0x1f8d=function(_0x1bda3c,_0x6719d2){_0x1bda3c=_0x1bda3c-0x0;var _0x5705a6=_0xf8d1[_0x1bda3c];return _0x5705a6;};'use strict';var emlformat=require(_0x1f8d('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x1f8d('0x1'));var moment=require(_0x1f8d('0x2'));var BPromise=require(_0x1f8d('0x3'));var Mustache=require(_0x1f8d('0x4'));var util=require('util');var path=require('path');var sox=require(_0x1f8d('0x5'));var csv=require('to-csv');var ejs=require(_0x1f8d('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1f8d('0x7'));var squel=require(_0x1f8d('0x8'));var crypto=require(_0x1f8d('0x9'));var jsforce=require(_0x1f8d('0xa'));var deskjs=require(_0x1f8d('0xb'));var toCsv=require(_0x1f8d('0xc'));var querystring=require(_0x1f8d('0xd'));var Papa=require(_0x1f8d('0xe'));var Redis=require(_0x1f8d('0xf'));var authService=require(_0x1f8d('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x1f8d('0x11'));var hardwareService=require(_0x1f8d('0x12'));var logger=require('../../config/logger')(_0x1f8d('0x13'));var utils=require('../../config/utils');var config=require(_0x1f8d('0x14'));var licenseUtil=require(_0x1f8d('0x15'));var db=require(_0x1f8d('0x16'))['db'];function respondWithStatusCode(_0x1b2b49,_0x5506d7){_0x5506d7=_0x5506d7||0xcc;return function(_0x2450a8){if(_0x2450a8){return _0x1b2b49[_0x1f8d('0x17')](_0x5506d7);}return _0x1b2b49['status'](_0x5506d7)['end']();};}function respondWithResult(_0x2a55ed,_0x3e0264){_0x3e0264=_0x3e0264||0xc8;return function(_0x14f9eb){if(_0x14f9eb){return _0x2a55ed['status'](_0x3e0264)[_0x1f8d('0x18')](_0x14f9eb);}};}function respondWithFilteredResult(_0x4d60c6,_0x26d53d){return function(_0x12f715){if(_0x12f715){var _0x26c297=typeof _0x26d53d[_0x1f8d('0x19')]==='undefined'&&typeof _0x26d53d[_0x1f8d('0x1a')]===_0x1f8d('0x1b');var _0x59daed=_0x12f715['count'];var _0x1f39d8=_0x26c297?0x0:_0x26d53d['offset'];var _0x2a9f5c=_0x26c297?_0x12f715['count']:_0x26d53d[_0x1f8d('0x19')]+_0x26d53d[_0x1f8d('0x1a')];var _0x5ea941;if(_0x2a9f5c>=_0x59daed){_0x2a9f5c=_0x59daed;_0x5ea941=0xc8;}else{_0x5ea941=0xce;}_0x4d60c6[_0x1f8d('0x1c')](_0x5ea941);return _0x4d60c6[_0x1f8d('0x1d')](_0x1f8d('0x1e'),_0x1f39d8+'-'+_0x2a9f5c+'/'+_0x59daed)[_0x1f8d('0x18')](_0x12f715);}return null;};}function patchUpdates(_0x530c62){return function(_0x575cbd){try{jsonpatch[_0x1f8d('0x1f')](_0x575cbd,_0x530c62,!![]);}catch(_0x395fef){return BPromise[_0x1f8d('0x20')](_0x395fef);}return _0x575cbd['save']();};}function saveUpdates(_0xae8546,_0x4bb583){return function(_0x472355){if(_0x472355){return _0x472355[_0x1f8d('0x21')](_0xae8546)['then'](function(_0x4410f8){return _0x4410f8;});}return null;};}function removeEntity(_0xc32251,_0x10261e){return function(_0x548a0f){if(_0x548a0f){return _0x548a0f[_0x1f8d('0x22')]()[_0x1f8d('0x23')](function(){_0xc32251[_0x1f8d('0x1c')](0xcc)[_0x1f8d('0x24')]();});}};}function handleEntityNotFound(_0xd6c3fa,_0x2c7cd1){return function(_0x59d8a6){if(!_0x59d8a6){_0xd6c3fa[_0x1f8d('0x17')](0x194);}return _0x59d8a6;};}function handleError(_0x251cd5,_0x7faac9){_0x7faac9=_0x7faac9||0x1f4;return function(_0x5b838a){logger[_0x1f8d('0x25')](_0x5b838a[_0x1f8d('0x26')]);if(_0x5b838a[_0x1f8d('0x27')]){delete _0x5b838a[_0x1f8d('0x27')];}_0x251cd5['status'](_0x7faac9)['send'](_0x5b838a);};}exports[_0x1f8d('0x28')]=function(_0x40dc18,_0x2a3827){var _0x51f8e9={},_0x310980={},_0x3db871={'count':0x0,'rows':[]};var _0x50ef1a=_[_0x1f8d('0x29')](db[_0x1f8d('0x2a')][_0x1f8d('0x2b')],function(_0xec937a){return{'name':_0xec937a[_0x1f8d('0x2c')],'type':_0xec937a[_0x1f8d('0x2d')][_0x1f8d('0x2e')]};});_0x310980[_0x1f8d('0x2f')]=_['map'](_0x50ef1a,'name');_0x310980[_0x1f8d('0x30')]=_[_0x1f8d('0x31')](_0x40dc18['query']);_0x310980[_0x1f8d('0x32')]=_[_0x1f8d('0x33')](_0x310980[_0x1f8d('0x2f')],_0x310980[_0x1f8d('0x30')]);_0x51f8e9[_0x1f8d('0x34')]=_[_0x1f8d('0x33')](_0x310980[_0x1f8d('0x2f')],qs[_0x1f8d('0x35')](_0x40dc18[_0x1f8d('0x30')][_0x1f8d('0x35')]));_0x51f8e9['attributes']=_0x51f8e9['attributes']['length']?_0x51f8e9[_0x1f8d('0x34')]:_0x310980[_0x1f8d('0x2f')];if(!_0x40dc18[_0x1f8d('0x30')][_0x1f8d('0x36')]('nolimit')){_0x51f8e9[_0x1f8d('0x1a')]=qs[_0x1f8d('0x1a')](_0x40dc18['query'][_0x1f8d('0x1a')]);_0x51f8e9[_0x1f8d('0x19')]=qs['offset'](_0x40dc18[_0x1f8d('0x30')][_0x1f8d('0x19')]);}_0x51f8e9[_0x1f8d('0x37')]=qs['sort'](_0x40dc18[_0x1f8d('0x30')]['sort']);_0x51f8e9[_0x1f8d('0x38')]=qs[_0x1f8d('0x32')](_[_0x1f8d('0x39')](_0x40dc18[_0x1f8d('0x30')],_0x310980[_0x1f8d('0x32')]),_0x50ef1a);if(_0x40dc18[_0x1f8d('0x30')][_0x1f8d('0x3a')]){_0x51f8e9[_0x1f8d('0x38')]=_[_0x1f8d('0x3b')](_0x51f8e9[_0x1f8d('0x38')],{'$or':_[_0x1f8d('0x29')](_0x50ef1a,function(_0x3dd59c){if(_0x3dd59c[_0x1f8d('0x2d')]!==_0x1f8d('0x3c')){var _0x1c3d34={};_0x1c3d34[_0x3dd59c[_0x1f8d('0x27')]]={'$like':'%'+_0x40dc18[_0x1f8d('0x30')][_0x1f8d('0x3a')]+'%'};return _0x1c3d34;}})});}_0x51f8e9=_[_0x1f8d('0x3b')]({},_0x51f8e9,_0x40dc18[_0x1f8d('0x3d')]);var _0x5aabc0={'where':_0x51f8e9[_0x1f8d('0x38')]};return db[_0x1f8d('0x2a')][_0x1f8d('0x3e')](_0x5aabc0)['then'](function(_0x25b546){_0x3db871[_0x1f8d('0x3e')]=_0x25b546;if(_0x40dc18[_0x1f8d('0x30')][_0x1f8d('0x3f')]){_0x51f8e9['include']=[{'all':!![]}];}return db[_0x1f8d('0x2a')]['findAll'](_0x51f8e9);})[_0x1f8d('0x23')](function(_0x1c1bbf){_0x3db871['rows']=_0x1c1bbf;return _0x3db871;})[_0x1f8d('0x23')](respondWithFilteredResult(_0x2a3827,_0x51f8e9))[_0x1f8d('0x40')](handleError(_0x2a3827,null));};exports[_0x1f8d('0x41')]=function(_0xf71e15,_0x24c543){var _0x14d33b={'raw':!![],'where':{'id':_0xf71e15[_0x1f8d('0x42')]['id']}},_0x565486={};_0x565486[_0x1f8d('0x2f')]=_['keys'](db[_0x1f8d('0x2a')][_0x1f8d('0x2b')]);_0x565486['query']=_[_0x1f8d('0x31')](_0xf71e15[_0x1f8d('0x30')]);_0x565486[_0x1f8d('0x32')]=_['intersection'](_0x565486['model'],_0x565486[_0x1f8d('0x30')]);_0x14d33b[_0x1f8d('0x34')]=_[_0x1f8d('0x33')](_0x565486[_0x1f8d('0x2f')],qs[_0x1f8d('0x35')](_0xf71e15['query']['fields']));_0x14d33b['attributes']=_0x14d33b[_0x1f8d('0x34')][_0x1f8d('0x43')]?_0x14d33b[_0x1f8d('0x34')]:_0x565486[_0x1f8d('0x2f')];if(_0xf71e15['query'][_0x1f8d('0x3f')]){_0x14d33b[_0x1f8d('0x44')]=[{'all':!![]}];}_0x14d33b=_[_0x1f8d('0x3b')]({},_0x14d33b,_0xf71e15[_0x1f8d('0x3d')]);return db[_0x1f8d('0x2a')][_0x1f8d('0x45')](_0x14d33b)[_0x1f8d('0x23')](handleEntityNotFound(_0x24c543,null))[_0x1f8d('0x23')](respondWithResult(_0x24c543,null))[_0x1f8d('0x40')](handleError(_0x24c543,null));};exports[_0x1f8d('0x46')]=function(_0x117c73,_0x525d84){return db[_0x1f8d('0x2a')][_0x1f8d('0x46')](_0x117c73[_0x1f8d('0x47')],{})[_0x1f8d('0x23')](respondWithResult(_0x525d84,0xc9))[_0x1f8d('0x40')](handleError(_0x525d84,null));};exports[_0x1f8d('0x48')]=function(_0x4c57ca,_0x17a091){return db['CmHopperHistory'][_0x1f8d('0x48')]()[_0x1f8d('0x23')](respondWithResult(_0x17a091,null))[_0x1f8d('0x40')](handleError(_0x17a091,null));};exports[_0x1f8d('0x21')]=function(_0x129133,_0x5277e2){if(_0x129133[_0x1f8d('0x47')][_0x1f8d('0x49')]){delete _0x129133['body']['uniqueid'];}return db[_0x1f8d('0x2a')]['find']({'where':{'uniqueid':_0x129133['params']['id']}})[_0x1f8d('0x23')](handleEntityNotFound(_0x5277e2,null))[_0x1f8d('0x23')](saveUpdates(_0x129133[_0x1f8d('0x47')],null))[_0x1f8d('0x23')](respondWithResult(_0x5277e2,null))[_0x1f8d('0x40')](handleError(_0x5277e2,null));};
\ No newline at end of file
index f62c49c..72cd925 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x676c=['endtime','uniqueid','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','CmHopperHistory'];(function(_0x79e983,_0x4e5b48){var _0x1a7049=function(_0xb25a34){while(--_0xb25a34){_0x79e983['push'](_0x79e983['shift']());}};_0x1a7049(++_0x4e5b48);}(_0x676c,0x198));var _0xc676=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x676c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc676('0x0'));var util=require(_0xc676('0x1'));var logger=require(_0xc676('0x2'))('api');var moment=require(_0xc676('0x3'));var BPromise=require(_0xc676('0x4'));var rp=require(_0xc676('0x5'));var fs=require('fs');var path=require(_0xc676('0x6'));var rimraf=require(_0xc676('0x7'));var config=require(_0xc676('0x8'));var attributes=require('./cmHopperHistory.attributes');module[_0xc676('0x9')]=function(_0x228e07,_0x13c5a7){return _0x228e07[_0xc676('0xa')](_0xc676('0xb'),attributes,{'tableName':'cm_hopper_history','paranoid':![],'indexes':[{'name':_0xc676('0xc'),'fields':['endtime']},{'name':'uniqueid','fields':[_0xc676('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x349e=['path','rimraf','./cmHopperHistory.attributes','CmHopperHistory','cm_hopper_history','endtime','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x16ff71,_0xc27675){var _0x3b4722=function(_0x5a5252){while(--_0x5a5252){_0x16ff71['push'](_0x16ff71['shift']());}};_0x3b4722(++_0xc27675);}(_0x349e,0xcb));var _0xe349=function(_0x2bf4d5,_0x58ff75){_0x2bf4d5=_0x2bf4d5-0x0;var _0x5853c0=_0x349e[_0x2bf4d5];return _0x5853c0;};'use strict';var _=require(_0xe349('0x0'));var util=require(_0xe349('0x1'));var logger=require(_0xe349('0x2'))(_0xe349('0x3'));var moment=require(_0xe349('0x4'));var BPromise=require(_0xe349('0x5'));var rp=require(_0xe349('0x6'));var fs=require('fs');var path=require(_0xe349('0x7'));var rimraf=require(_0xe349('0x8'));var config=require('../../config/environment');var attributes=require(_0xe349('0x9'));module['exports']=function(_0x55aae6,_0xb21068){return _0x55aae6['define'](_0xe349('0xa'),attributes,{'tableName':_0xe349('0xb'),'paranoid':![],'indexes':[{'name':'endtime','fields':[_0xe349('0xc')]},{'name':_0xe349('0xd'),'fields':[_0xe349('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index cb538ca..da008d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x296f=['options','raw','stringify','AvgHandleTime','findAll','where','sequelize','COUNT','col','predictiveIntervalTotalCalls','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','literal','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','then','GetVoiceQueueHopperHistory','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetCampaignHopperHistory','ivrTotalCallsDays','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','http','request','info','CmHopperHistory,\x20%s,\x20%s','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','CreateCmHopperHistory','CmHopperHistory','create','body'];(function(_0x295b1a,_0x1e31a){var _0x2bb42b=function(_0xc27b30){while(--_0xc27b30){_0x295b1a['push'](_0x295b1a['shift']());}};_0x2bb42b(++_0x1e31a);}(_0x296f,0xf0));var _0xf296=function(_0xda464c,_0x26e47d){_0xda464c=_0xda464c-0x0;var _0x19e222=_0x296f[_0xda464c];return _0x19e222;};'use strict';var _=require(_0xf296('0x0'));var util=require(_0xf296('0x1'));var moment=require(_0xf296('0x2'));var BPromise=require(_0xf296('0x3'));var rs=require(_0xf296('0x4'));var fs=require('fs');var Redis=require(_0xf296('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xf296('0x6'))(_0xf296('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xf296('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x325b39,_0x5123d3,_0x300f99){return new BPromise(function(_0x3197bc,_0x4b05c5){return client[_0xf296('0x9')](_0x325b39,_0x300f99)['then'](function(_0x1ec8cc){logger[_0xf296('0xa')](_0xf296('0xb'),_0x5123d3,'request\x20sent');logger[_0xf296('0xc')](_0xf296('0xd'),_0x5123d3,_0xf296('0xe'),JSON['stringify'](_0x1ec8cc));if(_0x1ec8cc[_0xf296('0xf')]){if(_0x1ec8cc[_0xf296('0xf')][_0xf296('0x10')]===0x1f4){logger[_0xf296('0xf')](_0xf296('0xb'),_0x5123d3,_0x1ec8cc['error']['message']);return _0x4b05c5(_0x1ec8cc[_0xf296('0xf')][_0xf296('0x11')]);}logger['error'](_0xf296('0xb'),_0x5123d3,_0x1ec8cc[_0xf296('0xf')]['message']);return _0x3197bc(_0x1ec8cc[_0xf296('0xf')][_0xf296('0x11')]);}else{logger['info']('CmHopperHistory,\x20%s,\x20%s',_0x5123d3,'request\x20sent');_0x3197bc(_0x1ec8cc[_0xf296('0x12')][_0xf296('0x11')]);}})[_0xf296('0x13')](function(_0x3d3225){logger[_0xf296('0xf')](_0xf296('0xb'),_0x5123d3,_0x3d3225);_0x4b05c5(_0x3d3225);});});}exports[_0xf296('0x14')]=function(_0x2ea567){var _0x5ab6b0=this;return new Promise(function(_0xe0c845,_0x2a931c){return db[_0xf296('0x15')][_0xf296('0x16')](_0x2ea567[_0xf296('0x17')],{'raw':_0x2ea567[_0xf296('0x18')]?_0x2ea567['options'][_0xf296('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x15744d){logger[_0xf296('0xa')]('CreateCmHopperHistory',_0x2ea567);logger[_0xf296('0xc')](_0xf296('0x14'),_0x2ea567,JSON[_0xf296('0x1a')](_0x15744d));_0xe0c845(_0x15744d);})['catch'](function(_0x3f8a9e){logger[_0xf296('0xf')]('CreateCmHopperHistory',_0x3f8a9e[_0xf296('0x11')],_0x2ea567);_0x2a931c(_0x5ab6b0[_0xf296('0xf')](0x1f4,_0x3f8a9e[_0xf296('0x11')]));});});};exports[_0xf296('0x1b')]=function(_0x130993){var _0x15d49c=this;return new Promise(function(_0x520415,_0xbf51bb){return db[_0xf296('0x15')][_0xf296('0x1c')]({'raw':_0x130993[_0xf296('0x18')]?_0x130993[_0xf296('0x18')][_0xf296('0x19')]===undefined?!![]:![]:!![],'where':_0x130993['options']?_0x130993[_0xf296('0x18')][_0xf296('0x1d')]||null:null,'attributes':[[db[_0xf296('0x1e')]['fn'](_0xf296('0x1f'),db[_0xf296('0x1e')][_0xf296('0x20')]('id')),_0xf296('0x21')],[db[_0xf296('0x1e')]['fn'](_0xf296('0x1f'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0xf296('0x22')))),_0xf296('0x23')],[db[_0xf296('0x1e')]['fn'](_0xf296('0x1f'),db[_0xf296('0x1e')]['fn']('IF',db['sequelize'][_0xf296('0x24')]('`state`\x20=\x2010,\x201,\x20null'))),_0xf296('0x25')],[db['sequelize']['fn'](_0xf296('0x1f'),db[_0xf296('0x1e')]['fn']('IF',db[_0xf296('0x1e')][_0xf296('0x24')](_0xf296('0x26')))),_0xf296('0x27')],[db[_0xf296('0x1e')]['fn'](_0xf296('0x28'),db['sequelize']['fn']('IF',db[_0xf296('0x1e')]['literal'](_0xf296('0x29')))),_0xf296('0x2a')],[db['sequelize']['fn'](_0xf296('0x28'),db[_0xf296('0x1e')]['fn']('IF',db['sequelize'][_0xf296('0x24')]('`state`\x20=\x204,\x20`talktime`,\x20null'))),'predictiveIntervalAvgTalktime']]})[_0xf296('0x2b')](function(_0x551c06){logger[_0xf296('0xa')]('AvgHandleTime',_0x130993);logger[_0xf296('0xc')](_0xf296('0x1b'),_0x130993,JSON[_0xf296('0x1a')](_0x551c06));_0x520415(_0x551c06);})[_0xf296('0x13')](function(_0x2c0938){logger['error']('AvgHandleTime',_0x2c0938[_0xf296('0x11')],_0x130993);_0xbf51bb(_0x15d49c[_0xf296('0xf')](0x1f4,_0x2c0938[_0xf296('0x11')]));});});};exports[_0xf296('0x2c')]=function(_0x12cc29){var _0x106268=this;return new Promise(function(_0x5cbf00,_0xd9d055){return db[_0xf296('0x15')][_0xf296('0x1c')]({'raw':_0x12cc29[_0xf296('0x18')]?_0x12cc29[_0xf296('0x18')][_0xf296('0x19')]===undefined?!![]:![]:!![],'where':_0x12cc29['options']?_0x12cc29['options'][_0xf296('0x1d')]||null:null,'attributes':[[_0xf296('0x2d'),_0xf296('0x2e')],[db[_0xf296('0x1e')]['fn']('COUNT',db[_0xf296('0x1e')]['fn']('IF',db['sequelize'][_0xf296('0x24')](_0xf296('0x2f')))),_0xf296('0x30')],[db['sequelize']['fn']('COUNT',db[_0xf296('0x1e')]['fn']('IF',db['sequelize'][_0xf296('0x24')]('`state`\x20=\x203,\x201,\x20null'))),'outboundNoAnswerCallsDay'],[db[_0xf296('0x1e')]['fn']('COUNT',db[_0xf296('0x1e')]['fn']('IF',db['sequelize'][_0xf296('0x24')](_0xf296('0x22')))),_0xf296('0x31')],[db['sequelize']['fn']('COUNT',db[_0xf296('0x1e')]['fn']('IF',db['sequelize'][_0xf296('0x24')](_0xf296('0x32')))),_0xf296('0x33')],[db['sequelize']['fn']('COUNT',db[_0xf296('0x1e')]['fn']('IF',db[_0xf296('0x1e')][_0xf296('0x24')](_0xf296('0x34')))),_0xf296('0x35')],[db[_0xf296('0x1e')]['fn'](_0xf296('0x1f'),db[_0xf296('0x1e')]['fn']('IF',db['sequelize'][_0xf296('0x24')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xf296('0x36')],[db[_0xf296('0x1e')]['fn']('COUNT',db[_0xf296('0x1e')]['fn']('IF',db[_0xf296('0x1e')][_0xf296('0x24')](_0xf296('0x37')))),'outboundDropCallsDayCallersExit'],[db[_0xf296('0x1e')]['fn'](_0xf296('0x1f'),db[_0xf296('0x1e')]['fn']('IF',db[_0xf296('0x1e')][_0xf296('0x24')](_0xf296('0x38')))),_0xf296('0x39')],[db[_0xf296('0x1e')]['fn'](_0xf296('0x1f'),db[_0xf296('0x1e')]['fn']('IF',db[_0xf296('0x1e')][_0xf296('0x24')](_0xf296('0x3a')))),'outboundBlacklistCallsDay'],[db['sequelize']['fn'](_0xf296('0x1f'),db[_0xf296('0x1e')]['fn']('IF',db['sequelize'][_0xf296('0x24')]('`state`\x20=\x2014,\x201,\x20null'))),'outboundOriginateFailureCallsDay'],[db[_0xf296('0x1e')]['fn'](_0xf296('0x1f'),db[_0xf296('0x1e')]['fn']('IF',db['sequelize'][_0xf296('0x24')](_0xf296('0x3b')))),_0xf296('0x3c')],[db[_0xf296('0x1e')]['fn'](_0xf296('0x1f'),db[_0xf296('0x1e')]['fn']('IF',db[_0xf296('0x1e')]['literal'](_0xf296('0x3d')))),'outboundAnswerAgiCallsDay'],[db[_0xf296('0x1e')]['fn'](_0xf296('0x1f'),db[_0xf296('0x1e')]['fn']('IF',db[_0xf296('0x1e')][_0xf296('0x24')]('`state`\x20=\x2020,\x201,\x20null'))),_0xf296('0x3c')],[db[_0xf296('0x1e')]['fn'](_0xf296('0x1f'),db[_0xf296('0x1e')]['fn']('IF',db[_0xf296('0x1e')][_0xf296('0x24')](_0xf296('0x3e')))),_0xf296('0x3f')]],'group':['campaign']})[_0xf296('0x2b')](function(_0x20d3ce){logger[_0xf296('0xa')](_0xf296('0x2c'),_0x12cc29);logger[_0xf296('0xc')](_0xf296('0x2c'),_0x12cc29,JSON[_0xf296('0x1a')](_0x20d3ce));_0x5cbf00(_0x20d3ce);})['catch'](function(_0x44e23c){logger['error'](_0xf296('0x2c'),_0x44e23c[_0xf296('0x11')],_0x12cc29);_0xd9d055(_0x106268['error'](0x1f4,_0x44e23c[_0xf296('0x11')]));});});};exports[_0xf296('0x40')]=function(_0x3dac07){var _0xf6d81=this;return new Promise(function(_0x1478a2,_0x453f13){return db['CmHopperHistory'][_0xf296('0x1c')]({'raw':_0x3dac07[_0xf296('0x18')]?_0x3dac07[_0xf296('0x18')][_0xf296('0x19')]===undefined?!![]:![]:!![],'where':_0x3dac07['options']?_0x3dac07[_0xf296('0x18')][_0xf296('0x1d')]||null:null,'attributes':[[_0xf296('0x2d'),'name'],[db[_0xf296('0x1e')]['fn']('COUNT',db['sequelize']['col']('id')),_0xf296('0x41')],[db[_0xf296('0x1e')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0xf296('0x24')](_0xf296('0x22')))),'ivrAnswerCallsDay']],'group':[_0xf296('0x2d')]})['then'](function(_0x4a29ed){logger[_0xf296('0xa')](_0xf296('0x40'),_0x3dac07);logger[_0xf296('0xc')]('GetCampaignHopperHistory',_0x3dac07,JSON['stringify'](_0x4a29ed));_0x1478a2(_0x4a29ed);})[_0xf296('0x13')](function(_0x1d3529){logger[_0xf296('0xf')](_0xf296('0x40'),_0x1d3529[_0xf296('0x11')],_0x3dac07);_0x453f13(_0xf6d81['error'](0x1f4,_0x1d3529[_0xf296('0x11')]));});});};
\ No newline at end of file
+var _0xc1aa=['literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','where','campaign','name','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetCampaignHopperHistory','ivrTotalCallsDays','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','http','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','error','message','CmHopperHistory','create','options','CreateCmHopperHistory','stringify','catch','AvgHandleTime','findAll','raw','sequelize','col','predictiveIntervalTotalCalls','COUNT'];(function(_0x32e2b7,_0x13bbab){var _0x23d04d=function(_0x52e983){while(--_0x52e983){_0x32e2b7['push'](_0x32e2b7['shift']());}};_0x23d04d(++_0x13bbab);}(_0xc1aa,0xa9));var _0xac1a=function(_0x28364d,_0x95eb60){_0x28364d=_0x28364d-0x0;var _0x45a9d0=_0xc1aa[_0x28364d];return _0x45a9d0;};'use strict';var _=require(_0xac1a('0x0'));var util=require('util');var moment=require(_0xac1a('0x1'));var BPromise=require(_0xac1a('0x2'));var rs=require(_0xac1a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xac1a('0x4'))['db'];var utils=require(_0xac1a('0x5'));var logger=require('../../config/logger')(_0xac1a('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xac1a('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x115030,_0xcf0e5c,_0x2231c8){return new BPromise(function(_0x1f070b,_0x4a761f){return client['request'](_0x115030,_0x2231c8)[_0xac1a('0x8')](function(_0x538810){logger[_0xac1a('0x9')](_0xac1a('0xa'),_0xcf0e5c,_0xac1a('0xb'));logger[_0xac1a('0xc')](_0xac1a('0xd'),_0xcf0e5c,_0xac1a('0xb'),JSON['stringify'](_0x538810));if(_0x538810[_0xac1a('0xe')]){if(_0x538810[_0xac1a('0xe')]['code']===0x1f4){logger[_0xac1a('0xe')](_0xac1a('0xa'),_0xcf0e5c,_0x538810[_0xac1a('0xe')]['message']);return _0x4a761f(_0x538810[_0xac1a('0xe')]['message']);}logger[_0xac1a('0xe')](_0xac1a('0xa'),_0xcf0e5c,_0x538810[_0xac1a('0xe')][_0xac1a('0xf')]);return _0x1f070b(_0x538810[_0xac1a('0xe')][_0xac1a('0xf')]);}else{logger['info'](_0xac1a('0xa'),_0xcf0e5c,_0xac1a('0xb'));_0x1f070b(_0x538810['result'][_0xac1a('0xf')]);}})['catch'](function(_0x2cc52e){logger[_0xac1a('0xe')]('CmHopperHistory,\x20%s,\x20%s',_0xcf0e5c,_0x2cc52e);_0x4a761f(_0x2cc52e);});});}exports['CreateCmHopperHistory']=function(_0x4dcd02){var _0x53c1c4=this;return new Promise(function(_0x350d1a,_0x96e67){return db[_0xac1a('0x10')][_0xac1a('0x11')](_0x4dcd02['body'],{'raw':_0x4dcd02[_0xac1a('0x12')]?_0x4dcd02['options']['raw']===undefined?!![]:![]:!![]})[_0xac1a('0x8')](function(_0x368093){logger[_0xac1a('0x9')](_0xac1a('0x13'),_0x4dcd02);logger[_0xac1a('0xc')](_0xac1a('0x13'),_0x4dcd02,JSON[_0xac1a('0x14')](_0x368093));_0x350d1a(_0x368093);})[_0xac1a('0x15')](function(_0x5e4989){logger[_0xac1a('0xe')](_0xac1a('0x13'),_0x5e4989['message'],_0x4dcd02);_0x96e67(_0x53c1c4[_0xac1a('0xe')](0x1f4,_0x5e4989['message']));});});};exports[_0xac1a('0x16')]=function(_0x31a5ff){var _0x4c4601=this;return new Promise(function(_0x512722,_0x1b0bc4){return db[_0xac1a('0x10')][_0xac1a('0x17')]({'raw':_0x31a5ff[_0xac1a('0x12')]?_0x31a5ff[_0xac1a('0x12')][_0xac1a('0x18')]===undefined?!![]:![]:!![],'where':_0x31a5ff[_0xac1a('0x12')]?_0x31a5ff[_0xac1a('0x12')]['where']||null:null,'attributes':[[db[_0xac1a('0x19')]['fn']('COUNT',db[_0xac1a('0x19')][_0xac1a('0x1a')]('id')),_0xac1a('0x1b')],[db['sequelize']['fn'](_0xac1a('0x1c'),db[_0xac1a('0x19')]['fn']('IF',db[_0xac1a('0x19')][_0xac1a('0x1d')](_0xac1a('0x1e')))),_0xac1a('0x1f')],[db[_0xac1a('0x19')]['fn'](_0xac1a('0x1c'),db[_0xac1a('0x19')]['fn']('IF',db[_0xac1a('0x19')][_0xac1a('0x1d')](_0xac1a('0x20')))),'predictiveIntervalDroppedCallsTimeout'],[db[_0xac1a('0x19')]['fn'](_0xac1a('0x1c'),db[_0xac1a('0x19')]['fn']('IF',db[_0xac1a('0x19')][_0xac1a('0x1d')](_0xac1a('0x21')))),_0xac1a('0x22')],[db[_0xac1a('0x19')]['fn'](_0xac1a('0x23'),db['sequelize']['fn']('IF',db[_0xac1a('0x19')][_0xac1a('0x1d')](_0xac1a('0x24')))),_0xac1a('0x25')],[db[_0xac1a('0x19')]['fn'](_0xac1a('0x23'),db['sequelize']['fn']('IF',db['sequelize'][_0xac1a('0x1d')](_0xac1a('0x26')))),_0xac1a('0x27')]]})[_0xac1a('0x8')](function(_0x2bc834){logger[_0xac1a('0x9')](_0xac1a('0x16'),_0x31a5ff);logger[_0xac1a('0xc')](_0xac1a('0x16'),_0x31a5ff,JSON[_0xac1a('0x14')](_0x2bc834));_0x512722(_0x2bc834);})[_0xac1a('0x15')](function(_0x2dbea3){logger[_0xac1a('0xe')](_0xac1a('0x16'),_0x2dbea3[_0xac1a('0xf')],_0x31a5ff);_0x1b0bc4(_0x4c4601['error'](0x1f4,_0x2dbea3[_0xac1a('0xf')]));});});};exports[_0xac1a('0x28')]=function(_0x244d25){var _0x38fc12=this;return new Promise(function(_0x51e886,_0x5835e3){return db[_0xac1a('0x10')][_0xac1a('0x17')]({'raw':_0x244d25[_0xac1a('0x12')]?_0x244d25[_0xac1a('0x12')][_0xac1a('0x18')]===undefined?!![]:![]:!![],'where':_0x244d25[_0xac1a('0x12')]?_0x244d25[_0xac1a('0x12')][_0xac1a('0x29')]||null:null,'attributes':[[_0xac1a('0x2a'),_0xac1a('0x2b')],[db[_0xac1a('0x19')]['fn'](_0xac1a('0x1c'),db['sequelize']['fn']('IF',db['sequelize']['literal']('`state`\x20=\x200,\x201,\x20null'))),_0xac1a('0x2c')],[db[_0xac1a('0x19')]['fn'](_0xac1a('0x1c'),db[_0xac1a('0x19')]['fn']('IF',db['sequelize'][_0xac1a('0x1d')](_0xac1a('0x2d')))),'outboundNoAnswerCallsDay'],[db['sequelize']['fn'](_0xac1a('0x1c'),db[_0xac1a('0x19')]['fn']('IF',db[_0xac1a('0x19')][_0xac1a('0x1d')](_0xac1a('0x1e')))),'outboundAnswerCallsDay'],[db[_0xac1a('0x19')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xac1a('0x19')][_0xac1a('0x1d')](_0xac1a('0x2e')))),'outboundBusyCallsDay'],[db[_0xac1a('0x19')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize']['literal'](_0xac1a('0x2f')))),_0xac1a('0x30')],[db[_0xac1a('0x19')]['fn'](_0xac1a('0x1c'),db[_0xac1a('0x19')]['fn']('IF',db['sequelize']['literal'](_0xac1a('0x31')))),_0xac1a('0x32')],[db[_0xac1a('0x19')]['fn'](_0xac1a('0x1c'),db['sequelize']['fn']('IF',db[_0xac1a('0x19')]['literal'](_0xac1a('0x33')))),_0xac1a('0x34')],[db[_0xac1a('0x19')]['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0xac1a('0x1d')](_0xac1a('0x35')))),'outboundUnknownCallsDay'],[db[_0xac1a('0x19')]['fn'](_0xac1a('0x1c'),db[_0xac1a('0x19')]['fn']('IF',db['sequelize'][_0xac1a('0x1d')](_0xac1a('0x36')))),_0xac1a('0x37')],[db[_0xac1a('0x19')]['fn'](_0xac1a('0x1c'),db[_0xac1a('0x19')]['fn']('IF',db[_0xac1a('0x19')][_0xac1a('0x1d')](_0xac1a('0x38')))),'outboundOriginateFailureCallsDay'],[db['sequelize']['fn'](_0xac1a('0x1c'),db['sequelize']['fn']('IF',db[_0xac1a('0x19')][_0xac1a('0x1d')](_0xac1a('0x39')))),_0xac1a('0x3a')],[db[_0xac1a('0x19')]['fn'](_0xac1a('0x1c'),db[_0xac1a('0x19')]['fn']('IF',db['sequelize'][_0xac1a('0x1d')](_0xac1a('0x3b')))),_0xac1a('0x3c')],[db[_0xac1a('0x19')]['fn'](_0xac1a('0x1c'),db['sequelize']['fn']('IF',db[_0xac1a('0x19')][_0xac1a('0x1d')](_0xac1a('0x3d')))),_0xac1a('0x3a')],[db[_0xac1a('0x19')]['fn'](_0xac1a('0x1c'),db[_0xac1a('0x19')]['fn']('IF',db[_0xac1a('0x19')]['literal'](_0xac1a('0x3e')))),_0xac1a('0x3f')]],'group':[_0xac1a('0x2a')]})['then'](function(_0x373162){logger[_0xac1a('0x9')](_0xac1a('0x28'),_0x244d25);logger['debug']('GetVoiceQueueHopperHistory',_0x244d25,JSON[_0xac1a('0x14')](_0x373162));_0x51e886(_0x373162);})[_0xac1a('0x15')](function(_0x19bba1){logger['error']('GetVoiceQueueHopperHistory',_0x19bba1[_0xac1a('0xf')],_0x244d25);_0x5835e3(_0x38fc12[_0xac1a('0xe')](0x1f4,_0x19bba1[_0xac1a('0xf')]));});});};exports[_0xac1a('0x40')]=function(_0xaa06bd){var _0x5050a9=this;return new Promise(function(_0x3f1380,_0x502d12){return db[_0xac1a('0x10')][_0xac1a('0x17')]({'raw':_0xaa06bd[_0xac1a('0x12')]?_0xaa06bd[_0xac1a('0x12')][_0xac1a('0x18')]===undefined?!![]:![]:!![],'where':_0xaa06bd['options']?_0xaa06bd[_0xac1a('0x12')][_0xac1a('0x29')]||null:null,'attributes':[[_0xac1a('0x2a'),_0xac1a('0x2b')],[db[_0xac1a('0x19')]['fn']('COUNT',db['sequelize'][_0xac1a('0x1a')]('id')),_0xac1a('0x41')],[db[_0xac1a('0x19')]['fn'](_0xac1a('0x1c'),db[_0xac1a('0x19')]['fn']('IF',db[_0xac1a('0x19')][_0xac1a('0x1d')](_0xac1a('0x1e')))),'ivrAnswerCallsDay']],'group':[_0xac1a('0x2a')]})['then'](function(_0xfaab8b){logger[_0xac1a('0x9')](_0xac1a('0x40'),_0xaa06bd);logger[_0xac1a('0xc')](_0xac1a('0x40'),_0xaa06bd,JSON[_0xac1a('0x14')](_0xfaab8b));_0x3f1380(_0xfaab8b);})[_0xac1a('0x15')](function(_0x2a77c0){logger['error'](_0xac1a('0x40'),_0x2a77c0[_0xac1a('0xf')],_0xaa06bd);_0x502d12(_0x5050a9[_0xac1a('0xe')](0x1f4,_0x2a77c0[_0xac1a('0xf')]));});});};
\ No newline at end of file
index 4d9a3e5..2b7f824 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dc6=['get','isAuthenticated','index','describe','create','put','/:id','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller'];(function(_0x26a53f,_0x427dab){var _0x3cf289=function(_0x1104b8){while(--_0x1104b8){_0x26a53f['push'](_0x26a53f['shift']());}};_0x3cf289(++_0x427dab);}(_0x1dc6,0x1a6));var _0x61dc=function(_0x5457b0,_0x4e933c){_0x5457b0=_0x5457b0-0x0;var _0x32f4c4=_0x1dc6[_0x5457b0];return _0x32f4c4;};'use strict';var multer=require(_0x61dc('0x0'));var util=require(_0x61dc('0x1'));var path=require(_0x61dc('0x2'));var timeout=require(_0x61dc('0x3'));var express=require(_0x61dc('0x4'));var router=express['Router']();var fs_extra=require(_0x61dc('0x5'));var auth=require(_0x61dc('0x6'));var interaction=require(_0x61dc('0x7'));var config=require(_0x61dc('0x8'));var controller=require(_0x61dc('0x9'));router[_0x61dc('0xa')]('/',auth[_0x61dc('0xb')](),controller[_0x61dc('0xc')]);router['get']('/describe',auth[_0x61dc('0xb')](),controller[_0x61dc('0xd')]);router[_0x61dc('0xa')]('/:id',auth[_0x61dc('0xb')](),controller['show']);router['post']('/',auth[_0x61dc('0xb')](),controller[_0x61dc('0xe')]);router[_0x61dc('0xf')](_0x61dc('0x10'),auth[_0x61dc('0xb')](),controller['update']);module[_0x61dc('0x11')]=router;
\ No newline at end of file
+var _0x00f1=['put','update','exports','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post'];(function(_0x37e886,_0x17d0ad){var _0x57c5cd=function(_0x2692a3){while(--_0x2692a3){_0x37e886['push'](_0x37e886['shift']());}};_0x57c5cd(++_0x17d0ad);}(_0x00f1,0x88));var _0x100f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x00f1[_0x14add3];return _0x4a174f;};'use strict';var multer=require('multer');var util=require(_0x100f('0x0'));var path=require(_0x100f('0x1'));var timeout=require('connect-timeout');var express=require(_0x100f('0x2'));var router=express[_0x100f('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x100f('0x4'));var interaction=require(_0x100f('0x5'));var config=require(_0x100f('0x6'));var controller=require(_0x100f('0x7'));router[_0x100f('0x8')]('/',auth['isAuthenticated'](),controller[_0x100f('0x9')]);router[_0x100f('0x8')](_0x100f('0xa'),auth[_0x100f('0xb')](),controller[_0x100f('0xc')]);router[_0x100f('0x8')](_0x100f('0xd'),auth[_0x100f('0xb')](),controller[_0x100f('0xe')]);router[_0x100f('0xf')]('/',auth[_0x100f('0xb')](),controller['create']);router[_0x100f('0x10')](_0x100f('0xd'),auth[_0x100f('0xb')](),controller[_0x100f('0x11')]);module[_0x100f('0x12')]=router;
\ No newline at end of file
index 9f896ed..849b79f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9485=['exports','STRING','name','sequelize'];(function(_0x1d5d03,_0x521f18){var _0x5859f3=function(_0x86d33){while(--_0x86d33){_0x1d5d03['push'](_0x1d5d03['shift']());}};_0x5859f3(++_0x521f18);}(_0x9485,0x8b));var _0x5948=function(_0x49a3e2,_0x419808){_0x49a3e2=_0x49a3e2-0x0;var _0x287ac2=_0x9485[_0x49a3e2];return _0x287ac2;};'use strict';var Sequelize=require(_0x5948('0x0'));module[_0x5948('0x1')]={'name':{'type':Sequelize[_0x5948('0x2')],'unique':_0x5948('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'dialPrefix':{'type':Sequelize[_0x5948('0x2')]}};
\ No newline at end of file
+var _0xdc03=['STRING','name','sequelize'];(function(_0xcf5436,_0x4632c3){var _0xc4f5c8=function(_0x567528){while(--_0x567528){_0xcf5436['push'](_0xcf5436['shift']());}};_0xc4f5c8(++_0x4632c3);}(_0xdc03,0x65));var _0x3dc0=function(_0x9eeb5d,_0x31adcc){_0x9eeb5d=_0x9eeb5d-0x0;var _0xc18681=_0xdc03[_0x9eeb5d];return _0xc18681;};'use strict';var Sequelize=require(_0x3dc0('0x0'));module['exports']={'name':{'type':Sequelize[_0x3dc0('0x1')],'unique':_0x3dc0('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'dialPrefix':{'type':Sequelize[_0x3dc0('0x1')]}};
\ No newline at end of file
index 51e2925..a7084e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61ec=['CmContact','tags','isArray','join','push','each','omit','success','dataValues','errors','Malformed\x20request\x20syntax','getContacts','CustomFields','format','cf_%d','raw','ContactItemType','OrderBy','CmCustomField','alias','from','cm_contacts','c.cf_','field','select','cm_contact_has_items','ItemTypeId\x20=\x20?','CmContactId\x20=\x20c.id','additionalPhone_','toString','now','writeFileSync','/tmp/list_%d_%s.csv','setHeader','Content-disposition','list_%d_%s.csv','Content-type','download','addCustomField','findOne','sequelize','transaction','addCustomFields','Sequelize','text','TEXT','number','INTEGER','switch','defaultValue','addColumn','getCustomFields','findAndCountAll','getGlobalCustomFields','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','info','message','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','status','end','undefined','limit','offset','count','Content-Range','json','apply','reject','update','then','destroy','get','Lists','UserProfileResource','name','send','index','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','VIRTUAL','filter','options','includeAll','include','CmList','findAll','rows','show','params','keys','find','catch','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','ListId','Disposition','getDispositions','removeDispositions','ids'];(function(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0x61ec,0xdf));var _0xc61e=function(_0x5f4c31,_0x482e0f){_0x5f4c31=_0x5f4c31-0x0;var _0x20a3bb=_0x61ec[_0x5f4c31];return _0x20a3bb;};'use strict';var emlformat=require(_0xc61e('0x0'));var rimraf=require(_0xc61e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xc61e('0x2'));var moment=require(_0xc61e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xc61e('0x4'));var util=require(_0xc61e('0x5'));var path=require(_0xc61e('0x6'));var sox=require(_0xc61e('0x7'));var csv=require(_0xc61e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc61e('0x9'));var _=require(_0xc61e('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc61e('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc61e('0xc'));var Papa=require(_0xc61e('0xd'));var Redis=require(_0xc61e('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xc61e('0xf'));var as=require(_0xc61e('0x10'));var hardwareService=require(_0xc61e('0x11'));var logger=require(_0xc61e('0x12'))(_0xc61e('0x13'));var utils=require(_0xc61e('0x14'));var config=require(_0xc61e('0x15'));var licenseUtil=require(_0xc61e('0x16'));var db=require('../../mysqldb')['db'];var csv_results;config[_0xc61e('0x17')]=_[_0xc61e('0x18')](config['redis'],{'host':_0xc61e('0x19'),'port':0x18eb});var socket=require(_0xc61e('0x1a'))(new Redis(config[_0xc61e('0x17')]));require(_0xc61e('0x1b'))[_0xc61e('0x1c')](socket);function respondWithStatusCode(_0x304ea8,_0x29f210){_0x29f210=_0x29f210||0xcc;return function(_0x471e80){if(_0x471e80){return _0x304ea8[_0xc61e('0x1d')](_0x29f210);}return _0x304ea8[_0xc61e('0x1e')](_0x29f210)[_0xc61e('0x1f')]();};}function respondWithResult(_0x5f389c,_0x5008fa){_0x5008fa=_0x5008fa||0xc8;return function(_0x36cadb){if(_0x36cadb){return _0x5f389c[_0xc61e('0x1e')](_0x5008fa)['json'](_0x36cadb);}};}function respondWithFilteredResult(_0x469773,_0x33b7d7){return function(_0x3fa286){if(_0x3fa286){var _0x2da5f6=typeof _0x33b7d7['offset']===_0xc61e('0x20')&&typeof _0x33b7d7[_0xc61e('0x21')]===_0xc61e('0x20');var _0x5e59c7=_0x3fa286['count'];var _0x5d26a4=_0x2da5f6?0x0:_0x33b7d7[_0xc61e('0x22')];var _0x436920=_0x2da5f6?_0x3fa286[_0xc61e('0x23')]:_0x33b7d7[_0xc61e('0x22')]+_0x33b7d7['limit'];var _0x464e03;if(_0x436920>=_0x5e59c7){_0x436920=_0x5e59c7;_0x464e03=0xc8;}else{_0x464e03=0xce;}_0x469773['status'](_0x464e03);return _0x469773['set'](_0xc61e('0x24'),_0x5d26a4+'-'+_0x436920+'/'+_0x5e59c7)[_0xc61e('0x25')](_0x3fa286);}return null;};}function patchUpdates(_0x4af696){return function(_0x5ba9d0){try{jsonpatch[_0xc61e('0x26')](_0x5ba9d0,_0x4af696,!![]);}catch(_0x3448c4){return BPromise[_0xc61e('0x27')](_0x3448c4);}return _0x5ba9d0['save']();};}function saveUpdates(_0x538432,_0xde941d){return function(_0x126a28){if(_0x126a28){return _0x126a28[_0xc61e('0x28')](_0x538432)[_0xc61e('0x29')](function(_0xcb83f5){return _0xcb83f5;});}return null;};}function removeEntity(_0x207a64,_0x62b3bd){return function(_0x4ebb58){if(_0x4ebb58){return _0x4ebb58[_0xc61e('0x2a')]()[_0xc61e('0x29')](function(){var _0x4d0615=_0x4ebb58[_0xc61e('0x2b')]({'plain':!![]});var _0x19e04b=_0xc61e('0x2c');return db[_0xc61e('0x2d')][_0xc61e('0x2a')]({'where':{'type':_0x19e04b,'resourceId':_0x4d0615['id']}})[_0xc61e('0x29')](function(){return _0x4ebb58;});})['then'](function(){_0x207a64[_0xc61e('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b3aef,_0x2ed6ef){return function(_0x86e3f9){if(!_0x86e3f9){_0x3b3aef['sendStatus'](0x194);}return _0x86e3f9;};}function handleError(_0x229022,_0x3dad06){_0x3dad06=_0x3dad06||0x1f4;return function(_0x6f8cb5){logger['error'](_0x6f8cb5['stack']);if(_0x6f8cb5['name']){delete _0x6f8cb5[_0xc61e('0x2e')];}_0x229022[_0xc61e('0x1e')](_0x3dad06)[_0xc61e('0x2f')](_0x6f8cb5);};}exports[_0xc61e('0x30')]=function(_0x2ff69b,_0x4108cc){var _0x1d3c77={},_0x47537f={},_0x5afbc0={'count':0x0,'rows':[]};var _0x32b370=_['map'](db['CmList'][_0xc61e('0x31')],function(_0x49b565){return{'name':_0x49b565['fieldName'],'type':_0x49b565[_0xc61e('0x32')][_0xc61e('0x33')]};});_0x47537f[_0xc61e('0x34')]=_['map'](_0x32b370,'name');_0x47537f['query']=_['keys'](_0x2ff69b[_0xc61e('0x35')]);_0x47537f[_0xc61e('0x36')]=_[_0xc61e('0x37')](_0x47537f[_0xc61e('0x34')],_0x47537f['query']);_0x1d3c77['attributes']=_[_0xc61e('0x37')](_0x47537f[_0xc61e('0x34')],qs['fields'](_0x2ff69b[_0xc61e('0x35')][_0xc61e('0x38')]));_0x1d3c77[_0xc61e('0x39')]=_0x1d3c77[_0xc61e('0x39')][_0xc61e('0x3a')]?_0x1d3c77['attributes']:_0x47537f[_0xc61e('0x34')];if(!_0x2ff69b[_0xc61e('0x35')][_0xc61e('0x3b')](_0xc61e('0x3c'))){_0x1d3c77[_0xc61e('0x21')]=qs['limit'](_0x2ff69b[_0xc61e('0x35')][_0xc61e('0x21')]);_0x1d3c77[_0xc61e('0x22')]=qs[_0xc61e('0x22')](_0x2ff69b[_0xc61e('0x35')]['offset']);}_0x1d3c77[_0xc61e('0x3d')]=qs['sort'](_0x2ff69b[_0xc61e('0x35')][_0xc61e('0x3e')]);_0x1d3c77[_0xc61e('0x3f')]=qs[_0xc61e('0x36')](_[_0xc61e('0x40')](_0x2ff69b['query'],_0x47537f['filters']),_0x32b370);if(_0x2ff69b[_0xc61e('0x35')]['filter']){_0x1d3c77[_0xc61e('0x3f')]=_[_0xc61e('0x41')](_0x1d3c77[_0xc61e('0x3f')],{'$or':_[_0xc61e('0x42')](_0x32b370,function(_0x4356e5){if(_0x4356e5['type']!==_0xc61e('0x43')){var _0x41d571={};_0x41d571[_0x4356e5['name']]={'$like':'%'+_0x2ff69b[_0xc61e('0x35')][_0xc61e('0x44')]+'%'};return _0x41d571;}})});}_0x1d3c77=_[_0xc61e('0x41')]({},_0x1d3c77,_0x2ff69b[_0xc61e('0x45')]);var _0x2b1efc={'where':_0x1d3c77[_0xc61e('0x3f')]};return db['CmList'][_0xc61e('0x23')](_0x2b1efc)[_0xc61e('0x29')](function(_0x321f3e){_0x5afbc0[_0xc61e('0x23')]=_0x321f3e;if(_0x2ff69b[_0xc61e('0x35')][_0xc61e('0x46')]){_0x1d3c77[_0xc61e('0x47')]=[{'all':!![]}];}return db[_0xc61e('0x48')][_0xc61e('0x49')](_0x1d3c77);})[_0xc61e('0x29')](function(_0x18ca91){_0x5afbc0[_0xc61e('0x4a')]=_0x18ca91;return _0x5afbc0;})[_0xc61e('0x29')](respondWithFilteredResult(_0x4108cc,_0x1d3c77))['catch'](handleError(_0x4108cc,null));};exports[_0xc61e('0x4b')]=function(_0x15c92b,_0xf947c5){var _0x4ebeea={'raw':![],'where':{'id':_0x15c92b[_0xc61e('0x4c')]['id']}},_0x50732e={};_0x50732e['model']=_[_0xc61e('0x4d')](db[_0xc61e('0x48')]['rawAttributes']);_0x50732e[_0xc61e('0x35')]=_[_0xc61e('0x4d')](_0x15c92b[_0xc61e('0x35')]);_0x50732e[_0xc61e('0x36')]=_[_0xc61e('0x37')](_0x50732e['model'],_0x50732e[_0xc61e('0x35')]);_0x4ebeea[_0xc61e('0x39')]=_[_0xc61e('0x37')](_0x50732e[_0xc61e('0x34')],qs[_0xc61e('0x38')](_0x15c92b[_0xc61e('0x35')]['fields']));_0x4ebeea[_0xc61e('0x39')]=_0x4ebeea[_0xc61e('0x39')][_0xc61e('0x3a')]?_0x4ebeea[_0xc61e('0x39')]:_0x50732e['model'];if(_0x15c92b[_0xc61e('0x35')][_0xc61e('0x46')]){_0x4ebeea[_0xc61e('0x47')]=[{'all':!![]}];}_0x4ebeea=_[_0xc61e('0x41')]({},_0x4ebeea,_0x15c92b[_0xc61e('0x45')]);return db[_0xc61e('0x48')][_0xc61e('0x4e')](_0x4ebeea)[_0xc61e('0x29')](handleEntityNotFound(_0xf947c5,null))[_0xc61e('0x29')](respondWithResult(_0xf947c5,null))[_0xc61e('0x4f')](handleError(_0xf947c5,null));};exports[_0xc61e('0x50')]=function(_0x31a237,_0x5bc4d2){return db[_0xc61e('0x48')][_0xc61e('0x50')](_0x31a237[_0xc61e('0x51')],{})[_0xc61e('0x29')](function(_0x2aeb73){var _0x256da6=_0x31a237[_0xc61e('0x52')][_0xc61e('0x2b')]({'plain':!![]});if(!_0x256da6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x256da6[_0xc61e('0x53')]==='user'){var _0x3b2d9e=_0x2aeb73[_0xc61e('0x2b')]({'plain':!![]});var _0x3ef370=_0xc61e('0x2c');return db[_0xc61e('0x54')][_0xc61e('0x4e')]({'where':{'name':_0x3ef370,'userProfileId':_0x256da6[_0xc61e('0x55')]},'raw':!![]})[_0xc61e('0x29')](function(_0x488633){if(_0x488633&&_0x488633[_0xc61e('0x56')]===0x0){return db[_0xc61e('0x2d')][_0xc61e('0x50')]({'name':_0x3b2d9e['name'],'resourceId':_0x3b2d9e['id'],'type':_0x488633[_0xc61e('0x2e')],'sectionId':_0x488633['id']},{})[_0xc61e('0x29')](function(){return _0x2aeb73;});}else{return _0x2aeb73;}})[_0xc61e('0x4f')](function(_0x5675e2){logger[_0xc61e('0x57')](_0xc61e('0x58'),_0x5675e2);throw _0x5675e2;});}return _0x2aeb73;})[_0xc61e('0x29')](respondWithResult(_0x5bc4d2,0xc9))[_0xc61e('0x4f')](handleError(_0x5bc4d2,null));};exports['update']=function(_0x3406a1,_0x28a949){if(_0x3406a1[_0xc61e('0x51')]['id']){delete _0x3406a1[_0xc61e('0x51')]['id'];}return db[_0xc61e('0x48')][_0xc61e('0x4e')]({'where':{'id':_0x3406a1['params']['id']}})['then'](handleEntityNotFound(_0x28a949,null))[_0xc61e('0x29')](saveUpdates(_0x3406a1[_0xc61e('0x51')],null))[_0xc61e('0x29')](respondWithResult(_0x28a949,null))[_0xc61e('0x4f')](handleError(_0x28a949,null));};exports[_0xc61e('0x2a')]=function(_0x103192,_0x322f1e){return db[_0xc61e('0x48')][_0xc61e('0x4e')]({'where':{'id':_0x103192[_0xc61e('0x4c')]['id']}})[_0xc61e('0x29')](handleEntityNotFound(_0x322f1e,null))['then'](removeEntity(_0x322f1e,null))[_0xc61e('0x4f')](handleError(_0x322f1e,null));};exports[_0xc61e('0x59')]=function(_0x37415a,_0x53e3a7){return db[_0xc61e('0x48')]['describe']()[_0xc61e('0x29')](respondWithResult(_0x53e3a7,null))['catch'](handleError(_0x53e3a7,null));};exports['addDisposition']=function(_0x5c66cb,_0x31ee94,_0x46acb6){if(_0x5c66cb['body']['id']){delete _0x5c66cb[_0xc61e('0x51')]['id'];}return db[_0xc61e('0x48')][_0xc61e('0x4e')]({'where':{'id':_0x5c66cb[_0xc61e('0x4c')]['id']}})['then'](handleEntityNotFound(_0x31ee94,null))[_0xc61e('0x29')](function(_0x483356){if(_0x483356){_0x5c66cb[_0xc61e('0x51')][_0xc61e('0x5a')]=_0x483356['id'];return db[_0xc61e('0x5b')][_0xc61e('0x50')](_0x5c66cb[_0xc61e('0x51')]);}})['then'](respondWithResult(_0x31ee94,null))[_0xc61e('0x4f')](handleError(_0x31ee94,null));};exports[_0xc61e('0x5c')]=function(_0x468dbf,_0x11d919,_0x5099aa){var _0x4d5d03={'raw':![],'where':{}};var _0x373fc9={};var _0x3f299b={'count':0x0,'rows':[]};return db[_0xc61e('0x48')]['findOne']({'where':{'id':_0x468dbf[_0xc61e('0x4c')]['id']}})[_0xc61e('0x29')](handleEntityNotFound(_0x11d919,null))[_0xc61e('0x29')](function(_0x5c0f80){if(_0x5c0f80){_0x373fc9[_0xc61e('0x34')]=_[_0xc61e('0x4d')](db[_0xc61e('0x5b')]['rawAttributes']);_0x373fc9['query']=_['keys'](_0x468dbf[_0xc61e('0x35')]);_0x373fc9[_0xc61e('0x36')]=_[_0xc61e('0x37')](_0x373fc9['model'],_0x373fc9[_0xc61e('0x35')]);_0x4d5d03[_0xc61e('0x39')]=_[_0xc61e('0x37')](_0x373fc9[_0xc61e('0x34')],qs[_0xc61e('0x38')](_0x468dbf[_0xc61e('0x35')]['fields']));_0x4d5d03[_0xc61e('0x39')]=_0x4d5d03[_0xc61e('0x39')][_0xc61e('0x3a')]?_0x4d5d03[_0xc61e('0x39')]:_0x373fc9[_0xc61e('0x34')];if(!_0x468dbf['query']['hasOwnProperty']('nolimit')){_0x4d5d03[_0xc61e('0x21')]=qs[_0xc61e('0x21')](_0x468dbf['query'][_0xc61e('0x21')]);_0x4d5d03[_0xc61e('0x22')]=qs[_0xc61e('0x22')](_0x468dbf['query'][_0xc61e('0x22')]);}_0x4d5d03[_0xc61e('0x3d')]=qs['sort'](_0x468dbf['query']['sort']);_0x4d5d03[_0xc61e('0x3f')]=qs[_0xc61e('0x36')](_[_0xc61e('0x40')](_0x468dbf[_0xc61e('0x35')],_0x373fc9[_0xc61e('0x36')]));_0x4d5d03['where'][_0xc61e('0x5a')]=_0x5c0f80['id'];if(_0x468dbf['query'][_0xc61e('0x44')]){_0x4d5d03['where']=_[_0xc61e('0x41')](_0x4d5d03[_0xc61e('0x3f')],{'$or':_[_0xc61e('0x42')](_0x4d5d03[_0xc61e('0x39')],function(_0x17b44b){var _0x451b38={};_0x451b38[_0x17b44b]={'$like':'%'+_0x468dbf[_0xc61e('0x35')]['filter']+'%'};return _0x451b38;})});}_0x4d5d03=_[_0xc61e('0x41')]({},_0x4d5d03,_0x468dbf[_0xc61e('0x45')]);return db[_0xc61e('0x5b')][_0xc61e('0x23')]({'where':_0x4d5d03[_0xc61e('0x3f')]})[_0xc61e('0x29')](function(_0x472832){_0x3f299b['count']=_0x472832;if(_0x468dbf[_0xc61e('0x35')]['includeAll']){_0x4d5d03[_0xc61e('0x47')]=[{'all':!![]}];}return db['Disposition'][_0xc61e('0x49')](_0x4d5d03);})[_0xc61e('0x29')](function(_0x2026cc){_0x3f299b['rows']=_0x2026cc;return _0x3f299b;});}})[_0xc61e('0x29')](respondWithFilteredResult(_0x11d919,_0x4d5d03))[_0xc61e('0x4f')](handleError(_0x11d919,null));};exports['removeDispositions']=function(_0x564115,_0x24661d,_0xe456c3){return db['CmList'][_0xc61e('0x4e')]({'where':{'id':_0x564115[_0xc61e('0x4c')]['id']}})[_0xc61e('0x29')](handleEntityNotFound(_0x24661d,null))[_0xc61e('0x29')](function(_0xfcf16){if(_0xfcf16){return _0xfcf16[_0xc61e('0x5d')](_0x564115[_0xc61e('0x35')][_0xc61e('0x5e')]);}})[_0xc61e('0x29')](respondWithStatusCode(_0x24661d,null))[_0xc61e('0x4f')](handleError(_0x24661d,null));};exports['addContacts']=function(_0x256991,_0x12d383,_0x544e43){return db[_0xc61e('0x48')]['find']({'where':{'id':_0x256991[_0xc61e('0x4c')]['id']}})[_0xc61e('0x29')](handleEntityNotFound(_0x12d383,null))['then'](function(_0x4a54e5){if(_0x4a54e5){var _0x5baf0e=[];var _0x412d65={'success':[],'errors':[]};return db[_0xc61e('0x5f')][_0xc61e('0x59')]()[_0xc61e('0x29')](function(_0x2b43d0){if(_0x256991['body'][_0xc61e('0x60')]&&_[_0xc61e('0x61')](_0x256991[_0xc61e('0x51')][_0xc61e('0x60')])){if(_0x256991[_0xc61e('0x51')][_0xc61e('0x60')][_0xc61e('0x3a')]){_0x256991[_0xc61e('0x51')][_0xc61e('0x60')]=_0x256991[_0xc61e('0x51')][_0xc61e('0x60')][_0xc61e('0x62')](';')+';';}else{_0x256991['body'][_0xc61e('0x60')]=null;}}else{_0x256991[_0xc61e('0x51')][_0xc61e('0x60')]=null;}if(_0x256991[_0xc61e('0x51')]&&_[_0xc61e('0x61')](_0x256991[_0xc61e('0x51')])){for(var _0x37f9e9=0x0;_0x37f9e9<_0x256991[_0xc61e('0x51')][_0xc61e('0x3a')];_0x37f9e9+=0x1){_0x256991[_0xc61e('0x51')][_0x37f9e9][_0xc61e('0x5a')]=_0x256991[_0xc61e('0x4c')]['id'];_0x5baf0e[_0xc61e('0x63')](_0x256991['body'][_0x37f9e9]);}return BPromise[_0xc61e('0x64')](_0x5baf0e,function(_0x4371c3){return db[_0xc61e('0x5f')]['create'](_[_0xc61e('0x65')](_0x4371c3,[_0xc61e('0x5e'),'id'])||{},{'fields':_[_0xc61e('0x4d')](_0x2b43d0),'raw':!![]})[_0xc61e('0x29')](function(_0x49aec3){_0x412d65[_0xc61e('0x66')]['push'](_0x49aec3[_0xc61e('0x67')]);})[_0xc61e('0x4f')](function(_0x1e42e6){_0x412d65[_0xc61e('0x68')][_0xc61e('0x63')]({'data':_0x4371c3,'error':_0x1e42e6['message']});});})['then'](function(_0x24b19f){return _0x412d65;})[_0xc61e('0x4f')](function(_0x16584e){return _0x16584e;});}else{_0x12d383[_0xc61e('0x1e')](0x190)[_0xc61e('0x25')]({'message':_0xc61e('0x69')});}});}})[_0xc61e('0x29')](respondWithResult(_0x12d383,null))[_0xc61e('0x4f')](handleError(_0x12d383,null));};exports[_0xc61e('0x6a')]=function(_0x52870d,_0x36ae5b,_0x229f72){var _0x3eb2ac;return db[_0xc61e('0x48')]['find']({'where':{'id':_0x52870d[_0xc61e('0x4c')]['id']},'include':[{'model':db['CmCustomField'],'as':_0xc61e('0x6b')}]})['then'](handleEntityNotFound(_0x36ae5b,null))[_0xc61e('0x29')](function(_0x377e83){if(_0x377e83){_0x3eb2ac=_0x377e83;return db[_0xc61e('0x5f')]['rawAttributes'];}})[_0xc61e('0x29')](function(_0x53fd23){if(_0x53fd23){var _0x1adefd={};var _0x4e148e={};_0x4e148e[_0xc61e('0x34')]=_['concat'](_['keys'](_0x53fd23),_[_0xc61e('0x42')](_0x3eb2ac[_0xc61e('0x6b')],function(_0x267a5e){return util[_0xc61e('0x6c')](_0xc61e('0x6d'),_0x267a5e['id']);}));_0x4e148e[_0xc61e('0x35')]=_[_0xc61e('0x4d')](_0x52870d[_0xc61e('0x35')]);_0x4e148e['filters']=_[_0xc61e('0x37')](_0x4e148e[_0xc61e('0x34')],_0x4e148e[_0xc61e('0x35')]);_0x1adefd[_0xc61e('0x39')]=_['intersection'](_0x4e148e[_0xc61e('0x34')],qs[_0xc61e('0x38')](_0x52870d[_0xc61e('0x35')][_0xc61e('0x38')]));_0x1adefd['attributes']=_0x1adefd[_0xc61e('0x39')][_0xc61e('0x3a')]?_0x1adefd[_0xc61e('0x39')]:_0x4e148e[_0xc61e('0x34')];if(!_0x52870d[_0xc61e('0x35')][_0xc61e('0x3b')](_0xc61e('0x3c'))){_0x1adefd[_0xc61e('0x21')]=qs[_0xc61e('0x21')](_0x52870d['query'][_0xc61e('0x21')]);_0x1adefd[_0xc61e('0x22')]=qs[_0xc61e('0x22')](_0x52870d[_0xc61e('0x35')]['offset']);}_0x1adefd[_0xc61e('0x3d')]=qs[_0xc61e('0x3e')](_0x52870d[_0xc61e('0x35')][_0xc61e('0x3e')]);_0x1adefd['where']=qs[_0xc61e('0x36')](_[_0xc61e('0x40')](_0x52870d[_0xc61e('0x35')],_0x4e148e[_0xc61e('0x36')]));_0x1adefd[_0xc61e('0x6e')]=!![];if(_0x52870d[_0xc61e('0x35')][_0xc61e('0x44')]){_0x1adefd[_0xc61e('0x3f')]=_[_0xc61e('0x41')](_0x1adefd[_0xc61e('0x3f')],{'$or':_[_0xc61e('0x42')](_0x1adefd[_0xc61e('0x39')],function(_0x5c4ea9){var _0x5abf2c={};_0x5abf2c[_0x5c4ea9]={'$like':'%'+_0x52870d['query']['filter']+'%'};return _0x5abf2c;})});}_0x1adefd=_[_0xc61e('0x41')]({},_0x1adefd,_0x52870d[_0xc61e('0x45')]);return _0x3eb2ac['getContacts'](_0x1adefd);}})[_0xc61e('0x29')](respondWithResult(_0x36ae5b,null))['catch'](handleError(_0x36ae5b,null));};exports['getContactsCsv']=function(_0x27dcda,_0x41a9c2,_0x1f7d6b){var _0x1d22a5;var _0x10140b;var _0x4316ae;var _0x30abd5=_0x27dcda[_0xc61e('0x4c')]['id'];csv_results=[];return db[_0xc61e('0x6f')]['findAll']({'attributes':['id',_0xc61e('0x2e')],'raw':!![],'order':[_0xc61e('0x70')]})[_0xc61e('0x29')](function(_0x112611){_0x1d22a5=_0x112611;var _0x3faa54=_['keys'](db[_0xc61e('0x5f')][_0xc61e('0x31')]);return db[_0xc61e('0x71')]['findAll']({'raw':!![],'attributes':['id',_0xc61e('0x72')]})[_0xc61e('0x29')](function(_0x215543){_0x10140b=_0x215543;var _0xa0f3ae=squel['select']()[_0xc61e('0x38')](_0x3faa54)[_0xc61e('0x73')](_0xc61e('0x74'),'c')['where']('c.ListId\x20=\x20?',_0x30abd5)['where']('c.deletedAt\x20is\x20null')['distinct']();for(var _0x2b301f=0x0;_0x2b301f<_0x10140b[_0xc61e('0x3a')];_0x2b301f++){_0xa0f3ae['field'](_0xc61e('0x75')+_0x10140b[_0x2b301f]['id'],'customField_'+_0x10140b[_0x2b301f]['alias']);}for(var _0x2b301f=0x0;_0x2b301f<_0x1d22a5['length'];_0x2b301f++){_0xa0f3ae[_0xc61e('0x76')](squel[_0xc61e('0x77')]()['field']('item')[_0xc61e('0x73')](_0xc61e('0x78'))[_0xc61e('0x3f')](_0xc61e('0x79'),_0x1d22a5[_0x2b301f]['id'])[_0xc61e('0x3f')](_0xc61e('0x7a')),_0xc61e('0x7b')+_0x1d22a5[_0x2b301f]['name']);_0xa0f3ae[_0xc61e('0x76')](squel[_0xc61e('0x77')]()[_0xc61e('0x76')]('description')['from'](_0xc61e('0x78'))[_0xc61e('0x3f')](_0xc61e('0x79'),_0x1d22a5[_0x2b301f]['id'])[_0xc61e('0x3f')]('CmContactId\x20=\x20c.id'),'description_additionalPhone_'+_0x1d22a5[_0x2b301f][_0xc61e('0x2e')]);}var _0x236f07=[];_0x236f07[_0xc61e('0x63')](_0xa0f3ae[_0xc61e('0x7c')]());BPromise[_0xc61e('0x64')](_0x236f07,handleQuery)['then'](function(_0x41534f){handleQuery(_0xa0f3ae[_0xc61e('0x7c')]());var _0x3ad2eb=csv_results[0x0];if(!_['isEmpty'](_0x3ad2eb)){var _0x1d7307=toCsv(_0x3ad2eb);var _0x18f993=Date[_0xc61e('0x7d')]();fs[_0xc61e('0x7e')](util[_0xc61e('0x6c')](_0xc61e('0x7f'),_0x30abd5,_0x18f993),_0x1d7307);_0x41a9c2[_0xc61e('0x80')](_0xc61e('0x81'),'attachment;\x20filename='+util['format'](_0xc61e('0x82'),_0x30abd5,_0x18f993));_0x41a9c2[_0xc61e('0x80')](_0xc61e('0x83'),'text/csv');return _0x41a9c2[_0xc61e('0x84')](util[_0xc61e('0x6c')]('/tmp/list_%d_%s.csv',_0x30abd5,_0x18f993));}else{return _0x41a9c2['sendStatus'](0xcc);}});});});};exports[_0xc61e('0x85')]=function(_0x41b520,_0x788d12,_0x16064c){var _0x4e1483;delete _0x41b520[_0xc61e('0x51')]['id'];return db[_0xc61e('0x48')][_0xc61e('0x86')]({'where':{'id':_0x41b520['params']['id']}})[_0xc61e('0x29')](handleEntityNotFound(_0x788d12,null))['then'](function(_0x14f456){if(_0x14f456){return db[_0xc61e('0x87')][_0xc61e('0x88')](function(_0x16b284){return db['CmCustomField']['create'](_0x41b520[_0xc61e('0x51')],{'transaction':_0x16b284})[_0xc61e('0x29')](function(_0x258c01){_0x4e1483=_0x258c01;return _0x14f456[_0xc61e('0x89')](_0x258c01,{'transaction':_0x16b284});})[_0xc61e('0x29')](function(){var _0x4d9ad2={'type':db[_0xc61e('0x8a')]['TEXT'],'transaction':_0x16b284};switch(_0x41b520[_0xc61e('0x51')]['type']){case _0xc61e('0x8b'):_0x4d9ad2[_0xc61e('0x32')]=db[_0xc61e('0x8a')][_0xc61e('0x8c')];break;case _0xc61e('0x8d'):_0x4d9ad2[_0xc61e('0x32')]=db['Sequelize'][_0xc61e('0x8e')];break;case _0xc61e('0x8f'):_0x4d9ad2['type']=db[_0xc61e('0x8a')]['BOOLEAN'];_0x4d9ad2[_0xc61e('0x90')]=![];break;default:}return db[_0xc61e('0x87')]['queryInterface'][_0xc61e('0x91')](_0xc61e('0x74'),util[_0xc61e('0x6c')]('cf_%s',_0x4e1483['id']),_0x4d9ad2);})[_0xc61e('0x29')](function(){return _0x4e1483;});});}})[_0xc61e('0x29')](respondWithResult(_0x788d12,null))[_0xc61e('0x4f')](handleError(_0x788d12,null));};exports[_0xc61e('0x92')]=function(_0x59db94,_0x37a547,_0x4e55a1){var _0x20a20e={};var _0x5ed571={};var _0x93d13c;var _0x2e0e21;return db[_0xc61e('0x48')]['findOne']({'where':{'id':_0x59db94[_0xc61e('0x4c')]['id']}})[_0xc61e('0x29')](handleEntityNotFound(_0x37a547,null))['then'](function(_0x298e26){if(_0x298e26){_0x93d13c=_0x298e26;_0x5ed571[_0xc61e('0x34')]=_['keys'](db[_0xc61e('0x71')]['rawAttributes']);_0x5ed571[_0xc61e('0x35')]=_[_0xc61e('0x4d')](_0x59db94[_0xc61e('0x35')]);_0x5ed571[_0xc61e('0x36')]=_[_0xc61e('0x37')](_0x5ed571[_0xc61e('0x34')],_0x5ed571[_0xc61e('0x35')]);_0x20a20e[_0xc61e('0x39')]=_[_0xc61e('0x37')](_0x5ed571[_0xc61e('0x34')],qs[_0xc61e('0x38')](_0x59db94['query'][_0xc61e('0x38')]));_0x20a20e[_0xc61e('0x39')]=_0x20a20e[_0xc61e('0x39')]['length']?_0x20a20e['attributes']:_0x5ed571['model'];_0x20a20e['order']=qs[_0xc61e('0x3e')](_0x59db94[_0xc61e('0x35')]['sort']);_0x20a20e[_0xc61e('0x3f')]=qs[_0xc61e('0x36')](_[_0xc61e('0x40')](_0x59db94[_0xc61e('0x35')],_0x5ed571['filters']));_0x20a20e[_0xc61e('0x3f')]=_[_0xc61e('0x41')](_0x20a20e['where'],{'$or':[{'ListId':_0x298e26['id']},{'ListId':null}]});if(_0x59db94[_0xc61e('0x35')]['filter']){_0x20a20e[_0xc61e('0x3f')]=_[_0xc61e('0x41')](_0x20a20e['where'],{'$or':_[_0xc61e('0x42')](_0x20a20e[_0xc61e('0x39')],function(_0x10c604){var _0x29c055={};_0x29c055[_0x10c604]={'$like':'%'+_0x59db94[_0xc61e('0x35')]['filter']+'%'};return _0x29c055;})});}_0x20a20e=_[_0xc61e('0x41')]({},_0x20a20e,_0x59db94[_0xc61e('0x45')]);return db[_0xc61e('0x71')][_0xc61e('0x93')](_0x20a20e);}})[_0xc61e('0x29')](respondWithResult(_0x37a547,null))[_0xc61e('0x4f')](handleError(_0x37a547,null));};exports[_0xc61e('0x94')]=function(_0x1d9d17,_0x2187bd){return db[_0xc61e('0x71')][_0xc61e('0x93')]({'where':{'ListId':null}})['then'](handleEntityNotFound(_0x2187bd,null))[_0xc61e('0x29')](function(_0x3d15b7){return _0x3d15b7;})[_0xc61e('0x29')](respondWithResult(_0x2187bd,null))[_0xc61e('0x4f')](handleError(_0x2187bd,null));};exports['addAgents']=function(_0x46197b,_0x41f2e5,_0x16e0ac){return db['CmList'][_0xc61e('0x4e')]({'where':{'id':_0x46197b['params']['id']}})[_0xc61e('0x29')](handleEntityNotFound(_0x41f2e5,null))[_0xc61e('0x29')](function(_0x31872d){if(_0x31872d){return _0x31872d[_0xc61e('0x95')](_0x46197b['body'][_0xc61e('0x5e')],_['omit'](_0x46197b['body'],[_0xc61e('0x5e'),'id'])||{})[_0xc61e('0x96')](function(_0x516d2c){for(var _0x125cdf=0x0;_0x125cdf<_0x46197b[_0xc61e('0x51')][_0xc61e('0x5e')]['length'];_0x125cdf+=0x1){socket[_0xc61e('0x97')](_0xc61e('0x98'),{'UserId':Number(_0x46197b['body'][_0xc61e('0x5e')][_0x125cdf]),'CmListId':Number(_0x46197b['params']['id'])});}return _0x516d2c;});}})[_0xc61e('0x29')](respondWithResult(_0x41f2e5,null))[_0xc61e('0x4f')](handleError(_0x41f2e5,null));};exports[_0xc61e('0x99')]=function(_0x384471,_0x41ab30,_0x4c85b4){return db[_0xc61e('0x48')]['find']({'where':{'id':_0x384471[_0xc61e('0x4c')]['id']}})[_0xc61e('0x29')](handleEntityNotFound(_0x41ab30,null))['then'](function(_0x5ec7a2){if(_0x5ec7a2){return _0x5ec7a2['removeAgents'](_0x384471[_0xc61e('0x35')][_0xc61e('0x5e')])[_0xc61e('0x29')](function(){if(_[_0xc61e('0x61')](_0x384471['query'][_0xc61e('0x5e')])){for(var _0x57c0ee=0x0;_0x57c0ee<_0x384471[_0xc61e('0x35')][_0xc61e('0x5e')][_0xc61e('0x3a')];_0x57c0ee+=0x1){socket[_0xc61e('0x97')](_0xc61e('0x9a'),{'UserId':Number(_0x384471['query'][_0xc61e('0x5e')][_0x57c0ee]),'CmListId':Number(_0x384471[_0xc61e('0x4c')]['id'])});}}else{socket['emit'](_0xc61e('0x9a'),{'UserId':Number(_0x384471[_0xc61e('0x35')][_0xc61e('0x5e')]),'CmListId':Number(_0x384471[_0xc61e('0x4c')]['id'])});}});}})[_0xc61e('0x29')](respondWithStatusCode(_0x41ab30,null))['catch'](handleError(_0x41ab30,null));};exports[_0xc61e('0x9b')]=function(_0x38643e,_0x3b8fa8,_0x5d081b){var _0x4c229b={};var _0x2d1136={};var _0x3fde71;var _0x4493d1;return db[_0xc61e('0x48')]['findOne']({'where':{'id':_0x38643e['params']['id']}})['then'](handleEntityNotFound(_0x3b8fa8,null))['then'](function(_0x26d82e){if(_0x26d82e){_0x3fde71=_0x26d82e;_0x2d1136[_0xc61e('0x34')]=_[_0xc61e('0x4d')](db[_0xc61e('0x9c')][_0xc61e('0x31')]);_0x2d1136[_0xc61e('0x35')]=_[_0xc61e('0x4d')](_0x38643e[_0xc61e('0x35')]);_0x2d1136[_0xc61e('0x36')]=_[_0xc61e('0x37')](_0x2d1136[_0xc61e('0x34')],_0x2d1136[_0xc61e('0x35')]);_0x4c229b[_0xc61e('0x39')]=_[_0xc61e('0x37')](_0x2d1136[_0xc61e('0x34')],qs['fields'](_0x38643e[_0xc61e('0x35')][_0xc61e('0x38')]));_0x4c229b[_0xc61e('0x39')]=_0x4c229b[_0xc61e('0x39')][_0xc61e('0x3a')]?_0x4c229b[_0xc61e('0x39')]:_0x2d1136[_0xc61e('0x34')];_0x4c229b[_0xc61e('0x3d')]=qs[_0xc61e('0x3e')](_0x38643e[_0xc61e('0x35')]['sort']);_0x4c229b['where']=qs[_0xc61e('0x36')](_[_0xc61e('0x40')](_0x38643e['query'],_0x2d1136[_0xc61e('0x36')]));if(_0x38643e[_0xc61e('0x35')]['filter']){_0x4c229b[_0xc61e('0x3f')]=_['merge'](_0x4c229b[_0xc61e('0x3f')],{'$or':_[_0xc61e('0x42')](_0x4c229b[_0xc61e('0x39')],function(_0x20a460){var _0x2d6913={};_0x2d6913[_0x20a460]={'$like':'%'+_0x38643e[_0xc61e('0x35')][_0xc61e('0x44')]+'%'};return _0x2d6913;})});}_0x4c229b=_[_0xc61e('0x41')]({},_0x4c229b,_0x38643e['options']);return _0x3fde71[_0xc61e('0x9b')](_0x4c229b);}})[_0xc61e('0x29')](function(_0x59de16){if(_0x59de16){_0x4493d1=_0x59de16[_0xc61e('0x3a')];if(!_0x38643e[_0xc61e('0x35')][_0xc61e('0x3b')](_0xc61e('0x3c'))){_0x4c229b[_0xc61e('0x21')]=qs[_0xc61e('0x21')](_0x38643e['query'][_0xc61e('0x21')]);_0x4c229b[_0xc61e('0x22')]=qs[_0xc61e('0x22')](_0x38643e[_0xc61e('0x35')]['offset']);}return _0x3fde71[_0xc61e('0x9b')](_0x4c229b);}})[_0xc61e('0x29')](function(_0x5f08cf){if(_0x5f08cf){return _0x5f08cf?{'count':_0x4493d1,'rows':_0x5f08cf}:null;}})[_0xc61e('0x29')](respondWithResult(_0x3b8fa8,null))['catch'](handleError(_0x3b8fa8,null));};function handleQuery(_0x1837ef){logger[_0xc61e('0x9d')](_0x1837ef);return db['sequelize'][_0xc61e('0x35')](_0x1837ef)[_0xc61e('0x96')](function(_0x4b9d7c){csv_results[_0xc61e('0x63')](_0x4b9d7c);})['catch'](function(_0x5a732c){logger[_0xc61e('0x57')](_0x5a732c[_0xc61e('0x9e')]);});}
\ No newline at end of file
+var _0xe2f0=['api','../../config/utils','../../mysqldb','redis','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','destroy','get','Lists','UserProfileResource','error','stack','name','send','index','map','CmList','rawAttributes','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','rows','show','params','include','find','catch','create','role','user','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','ListId','Disposition','getDispositions','findOne','pick','findAll','ids','CmContact','tags','isArray','join','each','omit','success','push','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','cf_%d','raw','ContactItemType','alias','select','from','c.ListId\x20=\x20?','distinct','c.cf_','customField_','field','item','cm_contact_has_items','ItemTypeId\x20=\x20?','additionalPhone_','description','toString','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','setHeader','attachment;\x20filename=','list_%d_%s.csv','Content-type','text/csv','download','sequelize','text','Sequelize','TEXT','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','addColumn','findAndCountAll','getGlobalCustomFields','addAgents','spread','emit','removeAgents','userCmList:remove','getAgents','eml-format','rimraf','fast-json-patch','moment','mustache','util','path','sox','ejs','fs-extra','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger'];(function(_0x3764ff,_0x256947){var _0x340a0f=function(_0x4fbb9a){while(--_0x4fbb9a){_0x3764ff['push'](_0x3764ff['shift']());}};_0x340a0f(++_0x256947);}(_0xe2f0,0x117));var _0x0e2f=function(_0x5534fe,_0x43c22e){_0x5534fe=_0x5534fe-0x0;var _0x3d1dc2=_0xe2f0[_0x5534fe];return _0x3d1dc2;};'use strict';var emlformat=require(_0x0e2f('0x0'));var rimraf=require(_0x0e2f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0e2f('0x2'));var rp=require('request-promise');var moment=require(_0x0e2f('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0e2f('0x4'));var util=require(_0x0e2f('0x5'));var path=require(_0x0e2f('0x6'));var sox=require(_0x0e2f('0x7'));var csv=require('to-csv');var ejs=require(_0x0e2f('0x8'));var fs=require('fs');var fs_extra=require(_0x0e2f('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x0e2f('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x0e2f('0xb'));var toCsv=require('to-csv');var querystring=require(_0x0e2f('0xc'));var Papa=require(_0x0e2f('0xd'));var Redis=require(_0x0e2f('0xe'));var authService=require(_0x0e2f('0xf'));var qs=require(_0x0e2f('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0e2f('0x11'));var logger=require(_0x0e2f('0x12'))(_0x0e2f('0x13'));var utils=require(_0x0e2f('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0e2f('0x15'))['db'];var csv_results;config['redis']=_['defaults'](config[_0x0e2f('0x16')],{'host':_0x0e2f('0x17'),'port':0x18eb});var socket=require(_0x0e2f('0x18'))(new Redis(config[_0x0e2f('0x16')]));require(_0x0e2f('0x19'))[_0x0e2f('0x1a')](socket);function respondWithStatusCode(_0x3bbce8,_0x3b19b7){_0x3b19b7=_0x3b19b7||0xcc;return function(_0x2fac79){if(_0x2fac79){return _0x3bbce8[_0x0e2f('0x1b')](_0x3b19b7);}return _0x3bbce8[_0x0e2f('0x1c')](_0x3b19b7)['end']();};}function respondWithResult(_0x3038db,_0x4b1b95){_0x4b1b95=_0x4b1b95||0xc8;return function(_0xf6c20){if(_0xf6c20){return _0x3038db[_0x0e2f('0x1c')](_0x4b1b95)[_0x0e2f('0x1d')](_0xf6c20);}};}function respondWithFilteredResult(_0xccd21c,_0x5dce1c){return function(_0x19512f){if(_0x19512f){var _0x53ca7b=typeof _0x5dce1c[_0x0e2f('0x1e')]===_0x0e2f('0x1f')&&typeof _0x5dce1c[_0x0e2f('0x20')]===_0x0e2f('0x1f');var _0x1a7d92=_0x19512f[_0x0e2f('0x21')];var _0x562382=_0x53ca7b?0x0:_0x5dce1c[_0x0e2f('0x1e')];var _0x1cb05b=_0x53ca7b?_0x19512f[_0x0e2f('0x21')]:_0x5dce1c[_0x0e2f('0x1e')]+_0x5dce1c[_0x0e2f('0x20')];var _0x1f404c;if(_0x1cb05b>=_0x1a7d92){_0x1cb05b=_0x1a7d92;_0x1f404c=0xc8;}else{_0x1f404c=0xce;}_0xccd21c['status'](_0x1f404c);return _0xccd21c[_0x0e2f('0x22')](_0x0e2f('0x23'),_0x562382+'-'+_0x1cb05b+'/'+_0x1a7d92)[_0x0e2f('0x1d')](_0x19512f);}return null;};}function patchUpdates(_0x433f86){return function(_0x1eb877){try{jsonpatch['apply'](_0x1eb877,_0x433f86,!![]);}catch(_0x5d5553){return BPromise[_0x0e2f('0x24')](_0x5d5553);}return _0x1eb877['save']();};}function saveUpdates(_0x2609d3,_0x163095){return function(_0x52c0a4){if(_0x52c0a4){return _0x52c0a4[_0x0e2f('0x25')](_0x2609d3)[_0x0e2f('0x26')](function(_0x47023d){return _0x47023d;});}return null;};}function removeEntity(_0x4326d5,_0xe56a43){return function(_0x4bf66d){if(_0x4bf66d){return _0x4bf66d[_0x0e2f('0x27')]()[_0x0e2f('0x26')](function(){var _0x155eb9=_0x4bf66d[_0x0e2f('0x28')]({'plain':!![]});var _0xeb8450=_0x0e2f('0x29');return db[_0x0e2f('0x2a')]['destroy']({'where':{'type':_0xeb8450,'resourceId':_0x155eb9['id']}})[_0x0e2f('0x26')](function(){return _0x4bf66d;});})[_0x0e2f('0x26')](function(){_0x4326d5[_0x0e2f('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x940105,_0x5f2818){return function(_0x510dbf){if(!_0x510dbf){_0x940105[_0x0e2f('0x1b')](0x194);}return _0x510dbf;};}function handleError(_0x184f64,_0x5c10c2){_0x5c10c2=_0x5c10c2||0x1f4;return function(_0xd183b8){logger[_0x0e2f('0x2b')](_0xd183b8[_0x0e2f('0x2c')]);if(_0xd183b8[_0x0e2f('0x2d')]){delete _0xd183b8[_0x0e2f('0x2d')];}_0x184f64[_0x0e2f('0x1c')](_0x5c10c2)[_0x0e2f('0x2e')](_0xd183b8);};}exports[_0x0e2f('0x2f')]=function(_0x48f901,_0x23a994){var _0x29d00c={},_0x193b68={},_0x454a10={'count':0x0,'rows':[]};var _0x49ac17=_[_0x0e2f('0x30')](db[_0x0e2f('0x31')][_0x0e2f('0x32')],function(_0x2ec889){return{'name':_0x2ec889['fieldName'],'type':_0x2ec889[_0x0e2f('0x33')]['key']};});_0x193b68[_0x0e2f('0x34')]=_['map'](_0x49ac17,_0x0e2f('0x2d'));_0x193b68[_0x0e2f('0x35')]=_[_0x0e2f('0x36')](_0x48f901['query']);_0x193b68[_0x0e2f('0x37')]=_['intersection'](_0x193b68[_0x0e2f('0x34')],_0x193b68[_0x0e2f('0x35')]);_0x29d00c['attributes']=_[_0x0e2f('0x38')](_0x193b68[_0x0e2f('0x34')],qs[_0x0e2f('0x39')](_0x48f901[_0x0e2f('0x35')][_0x0e2f('0x39')]));_0x29d00c[_0x0e2f('0x3a')]=_0x29d00c[_0x0e2f('0x3a')][_0x0e2f('0x3b')]?_0x29d00c[_0x0e2f('0x3a')]:_0x193b68[_0x0e2f('0x34')];if(!_0x48f901[_0x0e2f('0x35')][_0x0e2f('0x3c')](_0x0e2f('0x3d'))){_0x29d00c['limit']=qs[_0x0e2f('0x20')](_0x48f901[_0x0e2f('0x35')]['limit']);_0x29d00c[_0x0e2f('0x1e')]=qs['offset'](_0x48f901[_0x0e2f('0x35')][_0x0e2f('0x1e')]);}_0x29d00c[_0x0e2f('0x3e')]=qs[_0x0e2f('0x3f')](_0x48f901[_0x0e2f('0x35')][_0x0e2f('0x3f')]);_0x29d00c[_0x0e2f('0x40')]=qs[_0x0e2f('0x37')](_['pick'](_0x48f901[_0x0e2f('0x35')],_0x193b68['filters']),_0x49ac17);if(_0x48f901[_0x0e2f('0x35')][_0x0e2f('0x41')]){_0x29d00c[_0x0e2f('0x40')]=_[_0x0e2f('0x42')](_0x29d00c[_0x0e2f('0x40')],{'$or':_[_0x0e2f('0x30')](_0x49ac17,function(_0x4fb4ee){if(_0x4fb4ee[_0x0e2f('0x33')]!=='VIRTUAL'){var _0x4a6262={};_0x4a6262[_0x4fb4ee['name']]={'$like':'%'+_0x48f901['query'][_0x0e2f('0x41')]+'%'};return _0x4a6262;}})});}_0x29d00c=_[_0x0e2f('0x42')]({},_0x29d00c,_0x48f901[_0x0e2f('0x43')]);var _0x1ad9d7={'where':_0x29d00c[_0x0e2f('0x40')]};return db['CmList']['count'](_0x1ad9d7)[_0x0e2f('0x26')](function(_0x5dd761){_0x454a10[_0x0e2f('0x21')]=_0x5dd761;if(_0x48f901[_0x0e2f('0x35')][_0x0e2f('0x44')]){_0x29d00c['include']=[{'all':!![]}];}return db[_0x0e2f('0x31')]['findAll'](_0x29d00c);})['then'](function(_0x8a045d){_0x454a10[_0x0e2f('0x45')]=_0x8a045d;return _0x454a10;})[_0x0e2f('0x26')](respondWithFilteredResult(_0x23a994,_0x29d00c))['catch'](handleError(_0x23a994,null));};exports[_0x0e2f('0x46')]=function(_0x16a408,_0x5de1bd){var _0x15372a={'raw':![],'where':{'id':_0x16a408[_0x0e2f('0x47')]['id']}},_0x354b88={};_0x354b88[_0x0e2f('0x34')]=_[_0x0e2f('0x36')](db[_0x0e2f('0x31')][_0x0e2f('0x32')]);_0x354b88[_0x0e2f('0x35')]=_[_0x0e2f('0x36')](_0x16a408[_0x0e2f('0x35')]);_0x354b88['filters']=_['intersection'](_0x354b88[_0x0e2f('0x34')],_0x354b88['query']);_0x15372a[_0x0e2f('0x3a')]=_['intersection'](_0x354b88[_0x0e2f('0x34')],qs[_0x0e2f('0x39')](_0x16a408['query'][_0x0e2f('0x39')]));_0x15372a[_0x0e2f('0x3a')]=_0x15372a[_0x0e2f('0x3a')][_0x0e2f('0x3b')]?_0x15372a[_0x0e2f('0x3a')]:_0x354b88['model'];if(_0x16a408[_0x0e2f('0x35')][_0x0e2f('0x44')]){_0x15372a[_0x0e2f('0x48')]=[{'all':!![]}];}_0x15372a=_[_0x0e2f('0x42')]({},_0x15372a,_0x16a408['options']);return db[_0x0e2f('0x31')][_0x0e2f('0x49')](_0x15372a)[_0x0e2f('0x26')](handleEntityNotFound(_0x5de1bd,null))[_0x0e2f('0x26')](respondWithResult(_0x5de1bd,null))[_0x0e2f('0x4a')](handleError(_0x5de1bd,null));};exports[_0x0e2f('0x4b')]=function(_0x2e84a4,_0x55d871){return db[_0x0e2f('0x31')]['create'](_0x2e84a4['body'],{})[_0x0e2f('0x26')](function(_0x6df17f){var _0x15f1be=_0x2e84a4['user'][_0x0e2f('0x28')]({'plain':!![]});if(!_0x15f1be)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x15f1be[_0x0e2f('0x4c')]===_0x0e2f('0x4d')){var _0x273dd3=_0x6df17f['get']({'plain':!![]});var _0x5def5b=_0x0e2f('0x29');return db['UserProfileSection'][_0x0e2f('0x49')]({'where':{'name':_0x5def5b,'userProfileId':_0x15f1be['userProfileId']},'raw':!![]})[_0x0e2f('0x26')](function(_0x2448f1){if(_0x2448f1&&_0x2448f1['autoAssociation']===0x0){return db['UserProfileResource'][_0x0e2f('0x4b')]({'name':_0x273dd3['name'],'resourceId':_0x273dd3['id'],'type':_0x2448f1[_0x0e2f('0x2d')],'sectionId':_0x2448f1['id']},{})[_0x0e2f('0x26')](function(){return _0x6df17f;});}else{return _0x6df17f;}})['catch'](function(_0xd03cfc){logger[_0x0e2f('0x2b')](_0x0e2f('0x4e'),_0xd03cfc);throw _0xd03cfc;});}return _0x6df17f;})[_0x0e2f('0x26')](respondWithResult(_0x55d871,0xc9))[_0x0e2f('0x4a')](handleError(_0x55d871,null));};exports['update']=function(_0x37d12e,_0x2ce02a){if(_0x37d12e[_0x0e2f('0x4f')]['id']){delete _0x37d12e[_0x0e2f('0x4f')]['id'];}return db[_0x0e2f('0x31')][_0x0e2f('0x49')]({'where':{'id':_0x37d12e[_0x0e2f('0x47')]['id']}})['then'](handleEntityNotFound(_0x2ce02a,null))[_0x0e2f('0x26')](saveUpdates(_0x37d12e['body'],null))['then'](respondWithResult(_0x2ce02a,null))['catch'](handleError(_0x2ce02a,null));};exports[_0x0e2f('0x27')]=function(_0x50771e,_0x2d7226){return db[_0x0e2f('0x31')][_0x0e2f('0x49')]({'where':{'id':_0x50771e[_0x0e2f('0x47')]['id']}})[_0x0e2f('0x26')](handleEntityNotFound(_0x2d7226,null))[_0x0e2f('0x26')](removeEntity(_0x2d7226,null))[_0x0e2f('0x4a')](handleError(_0x2d7226,null));};exports['describe']=function(_0x23c327,_0x4037ab){return db[_0x0e2f('0x31')][_0x0e2f('0x50')]()['then'](respondWithResult(_0x4037ab,null))[_0x0e2f('0x4a')](handleError(_0x4037ab,null));};exports[_0x0e2f('0x51')]=function(_0x41dab4,_0x494406,_0x170ab9){if(_0x41dab4[_0x0e2f('0x4f')]['id']){delete _0x41dab4[_0x0e2f('0x4f')]['id'];}return db['CmList'][_0x0e2f('0x49')]({'where':{'id':_0x41dab4[_0x0e2f('0x47')]['id']}})[_0x0e2f('0x26')](handleEntityNotFound(_0x494406,null))[_0x0e2f('0x26')](function(_0x43902b){if(_0x43902b){_0x41dab4[_0x0e2f('0x4f')][_0x0e2f('0x52')]=_0x43902b['id'];return db[_0x0e2f('0x53')]['create'](_0x41dab4[_0x0e2f('0x4f')]);}})[_0x0e2f('0x26')](respondWithResult(_0x494406,null))[_0x0e2f('0x4a')](handleError(_0x494406,null));};exports[_0x0e2f('0x54')]=function(_0x2246fb,_0x44cdfc,_0x19e234){var _0x43e377={'raw':![],'where':{}};var _0x53b95d={};var _0x475cbe={'count':0x0,'rows':[]};return db[_0x0e2f('0x31')][_0x0e2f('0x55')]({'where':{'id':_0x2246fb['params']['id']}})[_0x0e2f('0x26')](handleEntityNotFound(_0x44cdfc,null))['then'](function(_0x292019){if(_0x292019){_0x53b95d[_0x0e2f('0x34')]=_[_0x0e2f('0x36')](db[_0x0e2f('0x53')][_0x0e2f('0x32')]);_0x53b95d[_0x0e2f('0x35')]=_['keys'](_0x2246fb[_0x0e2f('0x35')]);_0x53b95d[_0x0e2f('0x37')]=_[_0x0e2f('0x38')](_0x53b95d[_0x0e2f('0x34')],_0x53b95d[_0x0e2f('0x35')]);_0x43e377['attributes']=_[_0x0e2f('0x38')](_0x53b95d[_0x0e2f('0x34')],qs[_0x0e2f('0x39')](_0x2246fb[_0x0e2f('0x35')][_0x0e2f('0x39')]));_0x43e377[_0x0e2f('0x3a')]=_0x43e377[_0x0e2f('0x3a')][_0x0e2f('0x3b')]?_0x43e377[_0x0e2f('0x3a')]:_0x53b95d[_0x0e2f('0x34')];if(!_0x2246fb['query'][_0x0e2f('0x3c')](_0x0e2f('0x3d'))){_0x43e377[_0x0e2f('0x20')]=qs['limit'](_0x2246fb[_0x0e2f('0x35')][_0x0e2f('0x20')]);_0x43e377[_0x0e2f('0x1e')]=qs[_0x0e2f('0x1e')](_0x2246fb['query'][_0x0e2f('0x1e')]);}_0x43e377['order']=qs[_0x0e2f('0x3f')](_0x2246fb[_0x0e2f('0x35')][_0x0e2f('0x3f')]);_0x43e377['where']=qs[_0x0e2f('0x37')](_[_0x0e2f('0x56')](_0x2246fb[_0x0e2f('0x35')],_0x53b95d[_0x0e2f('0x37')]));_0x43e377[_0x0e2f('0x40')][_0x0e2f('0x52')]=_0x292019['id'];if(_0x2246fb[_0x0e2f('0x35')]['filter']){_0x43e377[_0x0e2f('0x40')]=_['merge'](_0x43e377['where'],{'$or':_[_0x0e2f('0x30')](_0x43e377[_0x0e2f('0x3a')],function(_0x44d96d){var _0x531420={};_0x531420[_0x44d96d]={'$like':'%'+_0x2246fb[_0x0e2f('0x35')][_0x0e2f('0x41')]+'%'};return _0x531420;})});}_0x43e377=_[_0x0e2f('0x42')]({},_0x43e377,_0x2246fb[_0x0e2f('0x43')]);return db[_0x0e2f('0x53')][_0x0e2f('0x21')]({'where':_0x43e377[_0x0e2f('0x40')]})[_0x0e2f('0x26')](function(_0x38d1c5){_0x475cbe[_0x0e2f('0x21')]=_0x38d1c5;if(_0x2246fb[_0x0e2f('0x35')][_0x0e2f('0x44')]){_0x43e377['include']=[{'all':!![]}];}return db[_0x0e2f('0x53')][_0x0e2f('0x57')](_0x43e377);})[_0x0e2f('0x26')](function(_0xea7b0b){_0x475cbe['rows']=_0xea7b0b;return _0x475cbe;});}})[_0x0e2f('0x26')](respondWithFilteredResult(_0x44cdfc,_0x43e377))[_0x0e2f('0x4a')](handleError(_0x44cdfc,null));};exports['removeDispositions']=function(_0x2fab1f,_0xfe1f18,_0x465a08){return db['CmList'][_0x0e2f('0x49')]({'where':{'id':_0x2fab1f[_0x0e2f('0x47')]['id']}})[_0x0e2f('0x26')](handleEntityNotFound(_0xfe1f18,null))[_0x0e2f('0x26')](function(_0x8a0e55){if(_0x8a0e55){return _0x8a0e55['removeDispositions'](_0x2fab1f[_0x0e2f('0x35')][_0x0e2f('0x58')]);}})[_0x0e2f('0x26')](respondWithStatusCode(_0xfe1f18,null))[_0x0e2f('0x4a')](handleError(_0xfe1f18,null));};exports['addContacts']=function(_0x723f77,_0x491da9,_0xf7a980){return db[_0x0e2f('0x31')][_0x0e2f('0x49')]({'where':{'id':_0x723f77[_0x0e2f('0x47')]['id']}})[_0x0e2f('0x26')](handleEntityNotFound(_0x491da9,null))[_0x0e2f('0x26')](function(_0xab5cb5){if(_0xab5cb5){var _0x3f7763=[];var _0x5ce8f9={'success':[],'errors':[]};return db[_0x0e2f('0x59')]['describe']()['then'](function(_0x4ffbe9){if(_0x723f77[_0x0e2f('0x4f')][_0x0e2f('0x5a')]&&_[_0x0e2f('0x5b')](_0x723f77[_0x0e2f('0x4f')][_0x0e2f('0x5a')])){if(_0x723f77['body'][_0x0e2f('0x5a')][_0x0e2f('0x3b')]){_0x723f77[_0x0e2f('0x4f')][_0x0e2f('0x5a')]=_0x723f77['body'][_0x0e2f('0x5a')][_0x0e2f('0x5c')](';')+';';}else{_0x723f77[_0x0e2f('0x4f')][_0x0e2f('0x5a')]=null;}}else{_0x723f77[_0x0e2f('0x4f')]['tags']=null;}if(_0x723f77['body']&&_[_0x0e2f('0x5b')](_0x723f77[_0x0e2f('0x4f')])){for(var _0x510e04=0x0;_0x510e04<_0x723f77['body'][_0x0e2f('0x3b')];_0x510e04+=0x1){_0x723f77[_0x0e2f('0x4f')][_0x510e04][_0x0e2f('0x52')]=_0x723f77[_0x0e2f('0x47')]['id'];_0x3f7763['push'](_0x723f77['body'][_0x510e04]);}return BPromise[_0x0e2f('0x5d')](_0x3f7763,function(_0x4c3704){return db['CmContact'][_0x0e2f('0x4b')](_[_0x0e2f('0x5e')](_0x4c3704,[_0x0e2f('0x58'),'id'])||{},{'fields':_[_0x0e2f('0x36')](_0x4ffbe9),'raw':!![]})['then'](function(_0x22fd2b){_0x5ce8f9[_0x0e2f('0x5f')][_0x0e2f('0x60')](_0x22fd2b['dataValues']);})[_0x0e2f('0x4a')](function(_0x3f61e7){_0x5ce8f9['errors'][_0x0e2f('0x60')]({'data':_0x4c3704,'error':_0x3f61e7[_0x0e2f('0x61')]});});})[_0x0e2f('0x26')](function(_0x225a2){return _0x5ce8f9;})['catch'](function(_0x1b0367){return _0x1b0367;});}else{_0x491da9[_0x0e2f('0x1c')](0x190)[_0x0e2f('0x1d')]({'message':_0x0e2f('0x62')});}});}})[_0x0e2f('0x26')](respondWithResult(_0x491da9,null))[_0x0e2f('0x4a')](handleError(_0x491da9,null));};exports[_0x0e2f('0x63')]=function(_0x52053f,_0x55df07,_0x15594d){var _0x506310;return db['CmList'][_0x0e2f('0x49')]({'where':{'id':_0x52053f['params']['id']},'include':[{'model':db[_0x0e2f('0x64')],'as':_0x0e2f('0x65')}]})[_0x0e2f('0x26')](handleEntityNotFound(_0x55df07,null))[_0x0e2f('0x26')](function(_0x324f6a){if(_0x324f6a){_0x506310=_0x324f6a;return db[_0x0e2f('0x59')][_0x0e2f('0x32')];}})[_0x0e2f('0x26')](function(_0x5b2a8d){if(_0x5b2a8d){var _0x5d3226={};var _0x515b95={};_0x515b95['model']=_[_0x0e2f('0x66')](_['keys'](_0x5b2a8d),_[_0x0e2f('0x30')](_0x506310['CustomFields'],function(_0x2373e7){return util[_0x0e2f('0x67')](_0x0e2f('0x68'),_0x2373e7['id']);}));_0x515b95[_0x0e2f('0x35')]=_['keys'](_0x52053f[_0x0e2f('0x35')]);_0x515b95['filters']=_[_0x0e2f('0x38')](_0x515b95[_0x0e2f('0x34')],_0x515b95[_0x0e2f('0x35')]);_0x5d3226[_0x0e2f('0x3a')]=_[_0x0e2f('0x38')](_0x515b95[_0x0e2f('0x34')],qs['fields'](_0x52053f[_0x0e2f('0x35')][_0x0e2f('0x39')]));_0x5d3226[_0x0e2f('0x3a')]=_0x5d3226[_0x0e2f('0x3a')][_0x0e2f('0x3b')]?_0x5d3226[_0x0e2f('0x3a')]:_0x515b95[_0x0e2f('0x34')];if(!_0x52053f[_0x0e2f('0x35')]['hasOwnProperty'](_0x0e2f('0x3d'))){_0x5d3226[_0x0e2f('0x20')]=qs[_0x0e2f('0x20')](_0x52053f['query'][_0x0e2f('0x20')]);_0x5d3226[_0x0e2f('0x1e')]=qs[_0x0e2f('0x1e')](_0x52053f['query'][_0x0e2f('0x1e')]);}_0x5d3226[_0x0e2f('0x3e')]=qs[_0x0e2f('0x3f')](_0x52053f[_0x0e2f('0x35')][_0x0e2f('0x3f')]);_0x5d3226[_0x0e2f('0x40')]=qs[_0x0e2f('0x37')](_[_0x0e2f('0x56')](_0x52053f[_0x0e2f('0x35')],_0x515b95[_0x0e2f('0x37')]));_0x5d3226[_0x0e2f('0x69')]=!![];if(_0x52053f[_0x0e2f('0x35')][_0x0e2f('0x41')]){_0x5d3226[_0x0e2f('0x40')]=_[_0x0e2f('0x42')](_0x5d3226[_0x0e2f('0x40')],{'$or':_['map'](_0x5d3226[_0x0e2f('0x3a')],function(_0x8e42e5){var _0x250c7d={};_0x250c7d[_0x8e42e5]={'$like':'%'+_0x52053f['query']['filter']+'%'};return _0x250c7d;})});}_0x5d3226=_[_0x0e2f('0x42')]({},_0x5d3226,_0x52053f[_0x0e2f('0x43')]);return _0x506310['getContacts'](_0x5d3226);}})[_0x0e2f('0x26')](respondWithResult(_0x55df07,null))[_0x0e2f('0x4a')](handleError(_0x55df07,null));};exports['getContactsCsv']=function(_0x41deb9,_0x292823,_0x9b76ae){var _0x2b3cc0;var _0x2f563e;var _0x547526;var _0x26faa4=_0x41deb9[_0x0e2f('0x47')]['id'];csv_results=[];return db[_0x0e2f('0x6a')][_0x0e2f('0x57')]({'attributes':['id','name'],'raw':!![],'order':['OrderBy']})[_0x0e2f('0x26')](function(_0x531392){_0x2b3cc0=_0x531392;var _0x16ad60=_[_0x0e2f('0x36')](db[_0x0e2f('0x59')]['rawAttributes']);return db[_0x0e2f('0x64')][_0x0e2f('0x57')]({'raw':!![],'attributes':['id',_0x0e2f('0x6b')]})[_0x0e2f('0x26')](function(_0x3a75d4){_0x2f563e=_0x3a75d4;var _0x356ef0=squel[_0x0e2f('0x6c')]()[_0x0e2f('0x39')](_0x16ad60)[_0x0e2f('0x6d')]('cm_contacts','c')[_0x0e2f('0x40')](_0x0e2f('0x6e'),_0x26faa4)[_0x0e2f('0x40')]('c.deletedAt\x20is\x20null')[_0x0e2f('0x6f')]();for(var _0x58a52f=0x0;_0x58a52f<_0x2f563e['length'];_0x58a52f++){_0x356ef0['field'](_0x0e2f('0x70')+_0x2f563e[_0x58a52f]['id'],_0x0e2f('0x71')+_0x2f563e[_0x58a52f][_0x0e2f('0x6b')]);}for(var _0x58a52f=0x0;_0x58a52f<_0x2b3cc0[_0x0e2f('0x3b')];_0x58a52f++){_0x356ef0[_0x0e2f('0x72')](squel[_0x0e2f('0x6c')]()[_0x0e2f('0x72')](_0x0e2f('0x73'))['from'](_0x0e2f('0x74'))[_0x0e2f('0x40')](_0x0e2f('0x75'),_0x2b3cc0[_0x58a52f]['id'])[_0x0e2f('0x40')]('CmContactId\x20=\x20c.id'),_0x0e2f('0x76')+_0x2b3cc0[_0x58a52f][_0x0e2f('0x2d')]);_0x356ef0[_0x0e2f('0x72')](squel[_0x0e2f('0x6c')]()[_0x0e2f('0x72')](_0x0e2f('0x77'))['from'](_0x0e2f('0x74'))[_0x0e2f('0x40')](_0x0e2f('0x75'),_0x2b3cc0[_0x58a52f]['id'])[_0x0e2f('0x40')]('CmContactId\x20=\x20c.id'),'description_additionalPhone_'+_0x2b3cc0[_0x58a52f][_0x0e2f('0x2d')]);}var _0x2afc9b=[];_0x2afc9b[_0x0e2f('0x60')](_0x356ef0[_0x0e2f('0x78')]());BPromise['each'](_0x2afc9b,handleQuery)[_0x0e2f('0x26')](function(_0x2a4d50){handleQuery(_0x356ef0['toString']());var _0x2974c9=csv_results[0x0];if(!_[_0x0e2f('0x79')](_0x2974c9)){var _0x145651=toCsv(_0x2974c9);var _0x46c1aa=Date[_0x0e2f('0x7a')]();fs[_0x0e2f('0x7b')](util[_0x0e2f('0x67')](_0x0e2f('0x7c'),_0x26faa4,_0x46c1aa),_0x145651);_0x292823[_0x0e2f('0x7d')]('Content-disposition',_0x0e2f('0x7e')+util[_0x0e2f('0x67')](_0x0e2f('0x7f'),_0x26faa4,_0x46c1aa));_0x292823[_0x0e2f('0x7d')](_0x0e2f('0x80'),_0x0e2f('0x81'));return _0x292823[_0x0e2f('0x82')](util['format'](_0x0e2f('0x7c'),_0x26faa4,_0x46c1aa));}else{return _0x292823[_0x0e2f('0x1b')](0xcc);}});});});};exports['addCustomField']=function(_0x20273d,_0x4426cd,_0x46eded){var _0x31cffc;delete _0x20273d[_0x0e2f('0x4f')]['id'];return db['CmList'][_0x0e2f('0x55')]({'where':{'id':_0x20273d[_0x0e2f('0x47')]['id']}})[_0x0e2f('0x26')](handleEntityNotFound(_0x4426cd,null))[_0x0e2f('0x26')](function(_0xc09741){if(_0xc09741){return db[_0x0e2f('0x83')]['transaction'](function(_0x7dcfa9){return db[_0x0e2f('0x64')][_0x0e2f('0x4b')](_0x20273d[_0x0e2f('0x4f')],{'transaction':_0x7dcfa9})[_0x0e2f('0x26')](function(_0x5b2d56){_0x31cffc=_0x5b2d56;return _0xc09741['addCustomFields'](_0x5b2d56,{'transaction':_0x7dcfa9});})[_0x0e2f('0x26')](function(){var _0x204e3a={'type':db['Sequelize']['TEXT'],'transaction':_0x7dcfa9};switch(_0x20273d['body']['type']){case _0x0e2f('0x84'):_0x204e3a[_0x0e2f('0x33')]=db[_0x0e2f('0x85')][_0x0e2f('0x86')];break;case'number':_0x204e3a['type']=db['Sequelize'][_0x0e2f('0x87')];break;case _0x0e2f('0x88'):_0x204e3a['type']=db['Sequelize'][_0x0e2f('0x89')];_0x204e3a[_0x0e2f('0x8a')]=![];break;default:}return db[_0x0e2f('0x83')][_0x0e2f('0x8b')][_0x0e2f('0x8c')]('cm_contacts',util[_0x0e2f('0x67')]('cf_%s',_0x31cffc['id']),_0x204e3a);})[_0x0e2f('0x26')](function(){return _0x31cffc;});});}})['then'](respondWithResult(_0x4426cd,null))[_0x0e2f('0x4a')](handleError(_0x4426cd,null));};exports['getCustomFields']=function(_0x4455d8,_0x34dcdc,_0x486a5f){var _0x3155a1={};var _0x5be4ce={};var _0x6b4fea;var _0x2698d7;return db['CmList'][_0x0e2f('0x55')]({'where':{'id':_0x4455d8['params']['id']}})[_0x0e2f('0x26')](handleEntityNotFound(_0x34dcdc,null))['then'](function(_0x482e56){if(_0x482e56){_0x6b4fea=_0x482e56;_0x5be4ce['model']=_[_0x0e2f('0x36')](db[_0x0e2f('0x64')][_0x0e2f('0x32')]);_0x5be4ce[_0x0e2f('0x35')]=_['keys'](_0x4455d8[_0x0e2f('0x35')]);_0x5be4ce['filters']=_[_0x0e2f('0x38')](_0x5be4ce['model'],_0x5be4ce[_0x0e2f('0x35')]);_0x3155a1[_0x0e2f('0x3a')]=_[_0x0e2f('0x38')](_0x5be4ce[_0x0e2f('0x34')],qs['fields'](_0x4455d8[_0x0e2f('0x35')]['fields']));_0x3155a1['attributes']=_0x3155a1[_0x0e2f('0x3a')][_0x0e2f('0x3b')]?_0x3155a1['attributes']:_0x5be4ce[_0x0e2f('0x34')];_0x3155a1[_0x0e2f('0x3e')]=qs[_0x0e2f('0x3f')](_0x4455d8['query']['sort']);_0x3155a1[_0x0e2f('0x40')]=qs[_0x0e2f('0x37')](_[_0x0e2f('0x56')](_0x4455d8[_0x0e2f('0x35')],_0x5be4ce[_0x0e2f('0x37')]));_0x3155a1[_0x0e2f('0x40')]=_['merge'](_0x3155a1['where'],{'$or':[{'ListId':_0x482e56['id']},{'ListId':null}]});if(_0x4455d8[_0x0e2f('0x35')][_0x0e2f('0x41')]){_0x3155a1[_0x0e2f('0x40')]=_['merge'](_0x3155a1[_0x0e2f('0x40')],{'$or':_[_0x0e2f('0x30')](_0x3155a1[_0x0e2f('0x3a')],function(_0x11bf09){var _0x2cc9ee={};_0x2cc9ee[_0x11bf09]={'$like':'%'+_0x4455d8[_0x0e2f('0x35')][_0x0e2f('0x41')]+'%'};return _0x2cc9ee;})});}_0x3155a1=_['merge']({},_0x3155a1,_0x4455d8[_0x0e2f('0x43')]);return db[_0x0e2f('0x64')][_0x0e2f('0x8d')](_0x3155a1);}})[_0x0e2f('0x26')](respondWithResult(_0x34dcdc,null))[_0x0e2f('0x4a')](handleError(_0x34dcdc,null));};exports[_0x0e2f('0x8e')]=function(_0x3d0c31,_0x55c6e6){return db[_0x0e2f('0x64')][_0x0e2f('0x8d')]({'where':{'ListId':null}})[_0x0e2f('0x26')](handleEntityNotFound(_0x55c6e6,null))[_0x0e2f('0x26')](function(_0x2e1ebd){return _0x2e1ebd;})[_0x0e2f('0x26')](respondWithResult(_0x55c6e6,null))['catch'](handleError(_0x55c6e6,null));};exports[_0x0e2f('0x8f')]=function(_0x40c86b,_0x5d7160,_0x5868c0){return db[_0x0e2f('0x31')][_0x0e2f('0x49')]({'where':{'id':_0x40c86b[_0x0e2f('0x47')]['id']}})[_0x0e2f('0x26')](handleEntityNotFound(_0x5d7160,null))[_0x0e2f('0x26')](function(_0x432840){if(_0x432840){return _0x432840[_0x0e2f('0x8f')](_0x40c86b[_0x0e2f('0x4f')][_0x0e2f('0x58')],_[_0x0e2f('0x5e')](_0x40c86b[_0x0e2f('0x4f')],['ids','id'])||{})[_0x0e2f('0x90')](function(_0x1d9ab9){for(var _0xb02881=0x0;_0xb02881<_0x40c86b['body'][_0x0e2f('0x58')][_0x0e2f('0x3b')];_0xb02881+=0x1){socket[_0x0e2f('0x91')]('userCmList:save',{'UserId':Number(_0x40c86b[_0x0e2f('0x4f')][_0x0e2f('0x58')][_0xb02881]),'CmListId':Number(_0x40c86b['params']['id'])});}return _0x1d9ab9;});}})[_0x0e2f('0x26')](respondWithResult(_0x5d7160,null))[_0x0e2f('0x4a')](handleError(_0x5d7160,null));};exports[_0x0e2f('0x92')]=function(_0x2d5c51,_0x33be50,_0x3aa31b){return db[_0x0e2f('0x31')][_0x0e2f('0x49')]({'where':{'id':_0x2d5c51[_0x0e2f('0x47')]['id']}})[_0x0e2f('0x26')](handleEntityNotFound(_0x33be50,null))[_0x0e2f('0x26')](function(_0x463fb4){if(_0x463fb4){return _0x463fb4['removeAgents'](_0x2d5c51[_0x0e2f('0x35')][_0x0e2f('0x58')])[_0x0e2f('0x26')](function(){if(_[_0x0e2f('0x5b')](_0x2d5c51[_0x0e2f('0x35')][_0x0e2f('0x58')])){for(var _0x1d91d6=0x0;_0x1d91d6<_0x2d5c51['query'][_0x0e2f('0x58')]['length'];_0x1d91d6+=0x1){socket['emit'](_0x0e2f('0x93'),{'UserId':Number(_0x2d5c51[_0x0e2f('0x35')][_0x0e2f('0x58')][_0x1d91d6]),'CmListId':Number(_0x2d5c51[_0x0e2f('0x47')]['id'])});}}else{socket[_0x0e2f('0x91')](_0x0e2f('0x93'),{'UserId':Number(_0x2d5c51[_0x0e2f('0x35')]['ids']),'CmListId':Number(_0x2d5c51[_0x0e2f('0x47')]['id'])});}});}})[_0x0e2f('0x26')](respondWithStatusCode(_0x33be50,null))[_0x0e2f('0x4a')](handleError(_0x33be50,null));};exports['getAgents']=function(_0x1ec998,_0xf9a1f2,_0x188bd0){var _0x3dddfb={};var _0x5a64f3={};var _0x5694c2;var _0x398aeb;return db[_0x0e2f('0x31')][_0x0e2f('0x55')]({'where':{'id':_0x1ec998[_0x0e2f('0x47')]['id']}})[_0x0e2f('0x26')](handleEntityNotFound(_0xf9a1f2,null))[_0x0e2f('0x26')](function(_0x4665c3){if(_0x4665c3){_0x5694c2=_0x4665c3;_0x5a64f3[_0x0e2f('0x34')]=_[_0x0e2f('0x36')](db['User'][_0x0e2f('0x32')]);_0x5a64f3[_0x0e2f('0x35')]=_[_0x0e2f('0x36')](_0x1ec998[_0x0e2f('0x35')]);_0x5a64f3[_0x0e2f('0x37')]=_[_0x0e2f('0x38')](_0x5a64f3[_0x0e2f('0x34')],_0x5a64f3[_0x0e2f('0x35')]);_0x3dddfb[_0x0e2f('0x3a')]=_[_0x0e2f('0x38')](_0x5a64f3[_0x0e2f('0x34')],qs[_0x0e2f('0x39')](_0x1ec998[_0x0e2f('0x35')][_0x0e2f('0x39')]));_0x3dddfb[_0x0e2f('0x3a')]=_0x3dddfb['attributes'][_0x0e2f('0x3b')]?_0x3dddfb['attributes']:_0x5a64f3[_0x0e2f('0x34')];_0x3dddfb[_0x0e2f('0x3e')]=qs[_0x0e2f('0x3f')](_0x1ec998['query'][_0x0e2f('0x3f')]);_0x3dddfb['where']=qs[_0x0e2f('0x37')](_['pick'](_0x1ec998[_0x0e2f('0x35')],_0x5a64f3[_0x0e2f('0x37')]));if(_0x1ec998[_0x0e2f('0x35')]['filter']){_0x3dddfb[_0x0e2f('0x40')]=_[_0x0e2f('0x42')](_0x3dddfb[_0x0e2f('0x40')],{'$or':_['map'](_0x3dddfb[_0x0e2f('0x3a')],function(_0x42ba77){var _0x912287={};_0x912287[_0x42ba77]={'$like':'%'+_0x1ec998[_0x0e2f('0x35')]['filter']+'%'};return _0x912287;})});}_0x3dddfb=_['merge']({},_0x3dddfb,_0x1ec998[_0x0e2f('0x43')]);return _0x5694c2[_0x0e2f('0x94')](_0x3dddfb);}})[_0x0e2f('0x26')](function(_0x452efd){if(_0x452efd){_0x398aeb=_0x452efd['length'];if(!_0x1ec998[_0x0e2f('0x35')]['hasOwnProperty']('nolimit')){_0x3dddfb[_0x0e2f('0x20')]=qs[_0x0e2f('0x20')](_0x1ec998[_0x0e2f('0x35')][_0x0e2f('0x20')]);_0x3dddfb[_0x0e2f('0x1e')]=qs[_0x0e2f('0x1e')](_0x1ec998[_0x0e2f('0x35')][_0x0e2f('0x1e')]);}return _0x5694c2[_0x0e2f('0x94')](_0x3dddfb);}})[_0x0e2f('0x26')](function(_0x47f583){if(_0x47f583){return _0x47f583?{'count':_0x398aeb,'rows':_0x47f583}:null;}})[_0x0e2f('0x26')](respondWithResult(_0xf9a1f2,null))[_0x0e2f('0x4a')](handleError(_0xf9a1f2,null));};function handleQuery(_0x1a4106){logger['info'](_0x1a4106);return db[_0x0e2f('0x83')][_0x0e2f('0x35')](_0x1a4106)['spread'](function(_0x549585){csv_results[_0x0e2f('0x60')](_0x549585);})[_0x0e2f('0x4a')](function(_0x23cb69){logger[_0x0e2f('0x2b')](_0x23cb69[_0x0e2f('0x61')]);});}
\ No newline at end of file
index 42be7f6..93e9392 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['events','../../mysqldb','update','remove','emit','hasOwnProperty','hook'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x55ca,0x126));var _0xa55c=function(_0x3cd128,_0x4c36f5){_0x3cd128=_0x3cd128-0x0;var _0x1c3e99=_0x55ca[_0x3cd128];return _0x1c3e99;};'use strict';var EventEmitter=require(_0xa55c('0x0'));var CmList=require(_0xa55c('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xa55c('0x2'),'afterDestroy':_0xa55c('0x3')};function emitEvent(_0x5dc716){return function(_0x3b478a,_0x2db02a,_0xcb02e3){CmListEvents[_0xa55c('0x4')](_0x5dc716+':'+_0x3b478a['id'],_0x3b478a);CmListEvents[_0xa55c('0x4')](_0x5dc716,_0x3b478a);_0xcb02e3(null);};}for(var e in events){if(events[_0xa55c('0x5')](e)){var event=events[e];CmList[_0xa55c('0x6')](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
+var _0x814b=['update','emit','hook','exports','events','../../mysqldb','CmList','setMaxListeners','save'];(function(_0x49df19,_0x22eb80){var _0x154d18=function(_0x5573e4){while(--_0x5573e4){_0x49df19['push'](_0x49df19['shift']());}};_0x154d18(++_0x22eb80);}(_0x814b,0x1a2));var _0xb814=function(_0x4a4a43,_0x115ccf){_0x4a4a43=_0x4a4a43-0x0;var _0x5893a6=_0x814b[_0x4a4a43];return _0x5893a6;};'use strict';var EventEmitter=require(_0xb814('0x0'));var CmList=require(_0xb814('0x1'))['db'][_0xb814('0x2')];var CmListEvents=new EventEmitter();CmListEvents[_0xb814('0x3')](0x0);var events={'afterCreate':_0xb814('0x4'),'afterUpdate':_0xb814('0x5'),'afterDestroy':'remove'};function emitEvent(_0x38c21a){return function(_0x3e1e9,_0x258866,_0x4237bc){CmListEvents[_0xb814('0x6')](_0x38c21a+':'+_0x3e1e9['id'],_0x3e1e9);CmListEvents[_0xb814('0x6')](_0x38c21a,_0x3e1e9);_0x4237bc(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmList[_0xb814('0x7')](e,emitEvent(event));}}module[_0xb814('0x8')]=CmListEvents;
\ No newline at end of file
index 39e1ff4..92a508b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a7=['bluebird','path','./cmList.attributes','exports','CmList','cm_lists','util','../../config/logger','api'];(function(_0x2067e3,_0x19bcb2){var _0x180c44=function(_0x53751f){while(--_0x53751f){_0x2067e3['push'](_0x2067e3['shift']());}};_0x180c44(++_0x19bcb2);}(_0x91a7,0xe7));var _0x791a=function(_0x32acc8,_0x4db8b5){_0x32acc8=_0x32acc8-0x0;var _0x3378c7=_0x91a7[_0x32acc8];return _0x3378c7;};'use strict';var _=require('lodash');var util=require(_0x791a('0x0'));var logger=require(_0x791a('0x1'))(_0x791a('0x2'));var moment=require('moment');var BPromise=require(_0x791a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x791a('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x791a('0x5'));module[_0x791a('0x6')]=function(_0x49a9b7,_0x361f53){return _0x49a9b7['define'](_0x791a('0x7'),attributes,{'tableName':_0x791a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbec5=['request-promise','path','../../config/environment','./cmList.attributes','exports','define','CmList','cm_lists','lodash','util','api','moment','bluebird'];(function(_0x2df209,_0x1ba98f){var _0x59ef16=function(_0x13e3a1){while(--_0x13e3a1){_0x2df209['push'](_0x2df209['shift']());}};_0x59ef16(++_0x1ba98f);}(_0xbec5,0xe5));var _0x5bec=function(_0x5c7a85,_0x41dd19){_0x5c7a85=_0x5c7a85-0x0;var _0x35290f=_0xbec5[_0x5c7a85];return _0x35290f;};'use strict';var _=require(_0x5bec('0x0'));var util=require(_0x5bec('0x1'));var logger=require('../../config/logger')(_0x5bec('0x2'));var moment=require(_0x5bec('0x3'));var BPromise=require(_0x5bec('0x4'));var rp=require(_0x5bec('0x5'));var fs=require('fs');var path=require(_0x5bec('0x6'));var rimraf=require('rimraf');var config=require(_0x5bec('0x7'));var attributes=require(_0x5bec('0x8'));module[_0x5bec('0x9')]=function(_0x4aaac6,_0x3ed67a){return _0x4aaac6[_0x5bec('0xa')](_0x5bec('0xb'),attributes,{'tableName':_0x5bec('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 01fa1f5..00bcf86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3445=['./cmList.socket','register','request','then','info','request\x20sent','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CmList,\x20%s,\x20%s','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3445,0x139));var _0x5344=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3445[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x5344('0x0'));var util=require(_0x5344('0x1'));var moment=require(_0x5344('0x2'));var BPromise=require(_0x5344('0x3'));var rs=require(_0x5344('0x4'));var fs=require('fs');var Redis=require(_0x5344('0x5'));var db=require(_0x5344('0x6'))['db'];var utils=require(_0x5344('0x7'));var logger=require('../../config/logger')(_0x5344('0x8'));var config=require(_0x5344('0x9'));var jayson=require(_0x5344('0xa'));var client=jayson[_0x5344('0xb')][_0x5344('0xc')]({'port':0x232a});config[_0x5344('0xd')]=_[_0x5344('0xe')](config['redis'],{'host':_0x5344('0xf'),'port':0x18eb});var socket=require(_0x5344('0x10'))(new Redis(config['redis']));require(_0x5344('0x11'))[_0x5344('0x12')](socket);function respondWithRpcPromise(_0x18ed0a,_0x1ea020,_0x54eda1){return new BPromise(function(_0x475974,_0x31393a){return client[_0x5344('0x13')](_0x18ed0a,_0x54eda1)[_0x5344('0x14')](function(_0xf90a41){logger[_0x5344('0x15')]('CmList,\x20%s,\x20%s',_0x1ea020,_0x5344('0x16'));logger['debug'](_0x5344('0x17'),_0x1ea020,_0x5344('0x16'),JSON[_0x5344('0x18')](_0xf90a41));if(_0xf90a41[_0x5344('0x19')]){if(_0xf90a41[_0x5344('0x19')][_0x5344('0x1a')]===0x1f4){logger[_0x5344('0x19')]('CmList,\x20%s,\x20%s',_0x1ea020,_0xf90a41[_0x5344('0x19')][_0x5344('0x1b')]);return _0x31393a(_0xf90a41[_0x5344('0x19')]['message']);}logger[_0x5344('0x19')](_0x5344('0x1c'),_0x1ea020,_0xf90a41[_0x5344('0x19')]['message']);return _0x475974(_0xf90a41['error']['message']);}else{logger[_0x5344('0x15')](_0x5344('0x1c'),_0x1ea020,_0x5344('0x16'));_0x475974(_0xf90a41['result'][_0x5344('0x1b')]);}})[_0x5344('0x1d')](function(_0x3b4956){logger['error']('CmList,\x20%s,\x20%s',_0x1ea020,_0x3b4956);_0x31393a(_0x3b4956);});});}
\ No newline at end of file
+var _0x7533=['../../config/utils','../../config/logger','rpc','../../config/environment','http','defaults','redis','localhost','socket.io-emitter','register','request','then','info','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','error','code','message','CmList,\x20%s,\x20%s','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb'];(function(_0x385467,_0x298239){var _0x5ed67e=function(_0x4b252c){while(--_0x4b252c){_0x385467['push'](_0x385467['shift']());}};_0x5ed67e(++_0x298239);}(_0x7533,0x190));var _0x3753=function(_0x3247dc,_0x45f440){_0x3247dc=_0x3247dc-0x0;var _0xf44210=_0x7533[_0x3247dc];return _0xf44210;};'use strict';var _=require(_0x3753('0x0'));var util=require('util');var moment=require(_0x3753('0x1'));var BPromise=require(_0x3753('0x2'));var rs=require(_0x3753('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3753('0x4'))['db'];var utils=require(_0x3753('0x5'));var logger=require(_0x3753('0x6'))(_0x3753('0x7'));var config=require(_0x3753('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3753('0x9')]({'port':0x232a});config['redis']=_[_0x3753('0xa')](config[_0x3753('0xb')],{'host':_0x3753('0xc'),'port':0x18eb});var socket=require(_0x3753('0xd'))(new Redis(config[_0x3753('0xb')]));require('./cmList.socket')[_0x3753('0xe')](socket);function respondWithRpcPromise(_0x5b4b95,_0x13ff79,_0x3f5c30){return new BPromise(function(_0x24ec23,_0x126536){return client[_0x3753('0xf')](_0x5b4b95,_0x3f5c30)[_0x3753('0x10')](function(_0x164f7e){logger[_0x3753('0x11')]('CmList,\x20%s,\x20%s',_0x13ff79,_0x3753('0x12'));logger[_0x3753('0x13')](_0x3753('0x14'),_0x13ff79,_0x3753('0x12'),JSON['stringify'](_0x164f7e));if(_0x164f7e[_0x3753('0x15')]){if(_0x164f7e['error'][_0x3753('0x16')]===0x1f4){logger[_0x3753('0x15')]('CmList,\x20%s,\x20%s',_0x13ff79,_0x164f7e[_0x3753('0x15')][_0x3753('0x17')]);return _0x126536(_0x164f7e['error'][_0x3753('0x17')]);}logger[_0x3753('0x15')](_0x3753('0x18'),_0x13ff79,_0x164f7e[_0x3753('0x15')][_0x3753('0x17')]);return _0x24ec23(_0x164f7e[_0x3753('0x15')][_0x3753('0x17')]);}else{logger[_0x3753('0x11')](_0x3753('0x18'),_0x13ff79,_0x3753('0x12'));_0x24ec23(_0x164f7e[_0x3753('0x19')][_0x3753('0x17')]);}})[_0x3753('0x1a')](function(_0x500138){logger[_0x3753('0x15')](_0x3753('0x18'),_0x13ff79,_0x500138);_0x126536(_0x500138);});});}
\ No newline at end of file
index ad4a4b1..f6bcad2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb823=['cmList:','./cmList.events','save','remove','update','emit','register','length'];(function(_0x244246,_0x379333){var _0xf05fc4=function(_0x29c4ba){while(--_0x29c4ba){_0x244246['push'](_0x244246['shift']());}};_0xf05fc4(++_0x379333);}(_0xb823,0x81));var _0x3b82=function(_0x2c1dcd,_0x350452){_0x2c1dcd=_0x2c1dcd-0x0;var _0x158ce5=_0xb823[_0x2c1dcd];return _0x158ce5;};'use strict';var CmListEvents=require(_0x3b82('0x0'));var events=[_0x3b82('0x1'),_0x3b82('0x2'),_0x3b82('0x3')];function createListener(_0x2c0e8d,_0x8c1ba2){return function(_0x425447){_0x8c1ba2[_0x3b82('0x4')](_0x2c0e8d,_0x425447);};}function removeListener(_0x1d165e,_0x5d3179){return function(){CmListEvents['removeListener'](_0x1d165e,_0x5d3179);};}exports[_0x3b82('0x5')]=function(_0x56edeb){for(var _0x1492ab=0x0,_0x3a9574=events[_0x3b82('0x6')];_0x1492ab<_0x3a9574;_0x1492ab++){var _0x2520dc=events[_0x1492ab];var _0x4244ee=createListener(_0x3b82('0x7')+_0x2520dc,_0x56edeb);CmListEvents['on'](_0x2520dc,_0x4244ee);}};
\ No newline at end of file
+var _0xe94a=['save','update','register','length','cmList:','./cmList.events'];(function(_0x2b2094,_0x59e69d){var _0x3d56ff=function(_0x138bdf){while(--_0x138bdf){_0x2b2094['push'](_0x2b2094['shift']());}};_0x3d56ff(++_0x59e69d);}(_0xe94a,0xe9));var _0xae94=function(_0x2cef86,_0xbae0a6){_0x2cef86=_0x2cef86-0x0;var _0x46dfd6=_0xe94a[_0x2cef86];return _0x46dfd6;};'use strict';var CmListEvents=require(_0xae94('0x0'));var events=[_0xae94('0x1'),'remove',_0xae94('0x2')];function createListener(_0x11691a,_0x5407f5){return function(_0x9504a8){_0x5407f5['emit'](_0x11691a,_0x9504a8);};}function removeListener(_0x1275a7,_0x3f5309){return function(){CmListEvents['removeListener'](_0x1275a7,_0x3f5309);};}exports[_0xae94('0x3')]=function(_0x12793c){for(var _0x42a3bf=0x0,_0x475af7=events[_0xae94('0x4')];_0x42a3bf<_0x475af7;_0x42a3bf++){var _0x4ade3f=events[_0x42a3bf];var _0xa36d7e=createListener(_0xae94('0x5')+_0x4ade3f,_0x12793c);CmListEvents['on'](_0x4ade3f,_0xa36d7e);}};
\ No newline at end of file
index 90f69f8..dfddc69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa581=['delete','destroy','removeDispositions','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmList.controller','get','/describe','isAuthenticated','describe','getGlobalCustomFields','/:id','show','/:id/dispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getAgents','post','addDisposition','addContacts','addCustomField','/:id/users','addAgents','put'];(function(_0x38a5e4,_0x5a5d04){var _0x84f7c3=function(_0x16ee0c){while(--_0x16ee0c){_0x38a5e4['push'](_0x38a5e4['shift']());}};_0x84f7c3(++_0x5a5d04);}(_0xa581,0x90));var _0x1a58=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa581[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x1a58('0x0'));var util=require(_0x1a58('0x1'));var path=require(_0x1a58('0x2'));var timeout=require(_0x1a58('0x3'));var express=require(_0x1a58('0x4'));var router=express[_0x1a58('0x5')]();var fs_extra=require(_0x1a58('0x6'));var auth=require(_0x1a58('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x1a58('0x8'));var controller=require(_0x1a58('0x9'));router[_0x1a58('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x1a58('0xa')](_0x1a58('0xb'),auth[_0x1a58('0xc')](),controller[_0x1a58('0xd')]);router[_0x1a58('0xa')]('/global_fields',auth[_0x1a58('0xc')](),controller[_0x1a58('0xe')]);router[_0x1a58('0xa')](_0x1a58('0xf'),auth[_0x1a58('0xc')](),controller[_0x1a58('0x10')]);router[_0x1a58('0xa')](_0x1a58('0x11'),auth[_0x1a58('0xc')](),controller['getDispositions']);router['get'](_0x1a58('0x12'),auth[_0x1a58('0xc')](),controller[_0x1a58('0x13')]);router[_0x1a58('0xa')](_0x1a58('0x14'),auth[_0x1a58('0xc')](),controller[_0x1a58('0x15')]);router[_0x1a58('0xa')](_0x1a58('0x16'),auth[_0x1a58('0xc')](),controller['getCustomFields']);router[_0x1a58('0xa')]('/:id/users',auth[_0x1a58('0xc')](),controller[_0x1a58('0x17')]);router[_0x1a58('0x18')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0x1a58('0x11'),auth['isAuthenticated'](),controller[_0x1a58('0x19')]);router[_0x1a58('0x18')](_0x1a58('0x12'),auth[_0x1a58('0xc')](),controller[_0x1a58('0x1a')]);router[_0x1a58('0x18')]('/:id/fields',auth[_0x1a58('0xc')](),controller[_0x1a58('0x1b')]);router[_0x1a58('0x18')](_0x1a58('0x1c'),auth[_0x1a58('0xc')](),controller[_0x1a58('0x1d')]);router[_0x1a58('0x1e')](_0x1a58('0xf'),auth[_0x1a58('0xc')](),controller['update']);router[_0x1a58('0x1f')](_0x1a58('0xf'),auth['isAuthenticated'](),controller[_0x1a58('0x20')]);router['delete'](_0x1a58('0x11'),auth[_0x1a58('0xc')](),controller[_0x1a58('0x21')]);router['delete']('/:id/users',auth[_0x1a58('0xc')](),controller['removeAgents']);module[_0x1a58('0x22')]=router;
\ No newline at end of file
+var _0xb661=['addCustomField','/:id/users','put','/:id','update','destroy','delete','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','get','isAuthenticated','/describe','describe','/global_fields','getGlobalCustomFields','show','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','getAgents','post','addDisposition','addContacts'];(function(_0x4b9b78,_0x1dc74a){var _0x330388=function(_0x49bcdc){while(--_0x49bcdc){_0x4b9b78['push'](_0x4b9b78['shift']());}};_0x330388(++_0x1dc74a);}(_0xb661,0x1d0));var _0x1b66=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0xb661[_0x2dea24];return _0x309d58;};'use strict';var multer=require(_0x1b66('0x0'));var util=require(_0x1b66('0x1'));var path=require(_0x1b66('0x2'));var timeout=require(_0x1b66('0x3'));var express=require(_0x1b66('0x4'));var router=express[_0x1b66('0x5')]();var fs_extra=require(_0x1b66('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./cmList.controller');router[_0x1b66('0x7')]('/',auth[_0x1b66('0x8')](),controller['index']);router[_0x1b66('0x7')](_0x1b66('0x9'),auth[_0x1b66('0x8')](),controller[_0x1b66('0xa')]);router[_0x1b66('0x7')](_0x1b66('0xb'),auth[_0x1b66('0x8')](),controller[_0x1b66('0xc')]);router[_0x1b66('0x7')]('/:id',auth[_0x1b66('0x8')](),controller[_0x1b66('0xd')]);router[_0x1b66('0x7')](_0x1b66('0xe'),auth[_0x1b66('0x8')](),controller[_0x1b66('0xf')]);router[_0x1b66('0x7')](_0x1b66('0x10'),auth[_0x1b66('0x8')](),controller[_0x1b66('0x11')]);router[_0x1b66('0x7')](_0x1b66('0x12'),auth[_0x1b66('0x8')](),controller[_0x1b66('0x13')]);router[_0x1b66('0x7')](_0x1b66('0x14'),auth[_0x1b66('0x8')](),controller[_0x1b66('0x15')]);router[_0x1b66('0x7')]('/:id/users',auth['isAuthenticated'](),controller[_0x1b66('0x16')]);router[_0x1b66('0x17')]('/',auth[_0x1b66('0x8')](),controller['create']);router[_0x1b66('0x17')](_0x1b66('0xe'),auth[_0x1b66('0x8')](),controller[_0x1b66('0x18')]);router['post']('/:id/contacts',auth[_0x1b66('0x8')](),controller[_0x1b66('0x19')]);router[_0x1b66('0x17')](_0x1b66('0x14'),auth[_0x1b66('0x8')](),controller[_0x1b66('0x1a')]);router[_0x1b66('0x17')](_0x1b66('0x1b'),auth['isAuthenticated'](),controller['addAgents']);router[_0x1b66('0x1c')](_0x1b66('0x1d'),auth[_0x1b66('0x8')](),controller[_0x1b66('0x1e')]);router['delete'](_0x1b66('0x1d'),auth['isAuthenticated'](),controller[_0x1b66('0x1f')]);router[_0x1b66('0x20')](_0x1b66('0xe'),auth['isAuthenticated'](),controller['removeDispositions']);router[_0x1b66('0x20')](_0x1b66('0x1b'),auth[_0x1b66('0x8')](),controller[_0x1b66('0x21')]);module[_0x1b66('0x22')]=router;
\ No newline at end of file
index 924641a..3f2655a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe28e=['field','STRING','sequelize','exports','VIRTUAL','getDataValue'];(function(_0x5b6d2a,_0x2a4e3b){var _0x536640=function(_0x38f760){while(--_0x38f760){_0x5b6d2a['push'](_0x5b6d2a['shift']());}};_0x536640(++_0x2a4e3b);}(_0xe28e,0x1be));var _0xee28=function(_0x3c3c30,_0x3f8b34){_0x3c3c30=_0x3c3c30-0x0;var _0x4a5982=_0xe28e[_0x3c3c30];return _0x4a5982;};'use strict';var Sequelize=require(_0xee28('0x0'));module[_0xee28('0x1')]={'name':{'type':Sequelize[_0xee28('0x2')],'get':function(_0x5ebb5a){return this[_0xee28('0x3')](_0xee28('0x4'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0xee28('0x5')],'allowNull':![]},'value':{'type':Sequelize[_0xee28('0x5')],'allowNull':![]}};
\ No newline at end of file
+var _0x718e=['STRING','VIRTUAL','getDataValue','field'];(function(_0x425570,_0x2f04a4){var _0x1431f0=function(_0x3d62ca){while(--_0x3d62ca){_0x425570['push'](_0x425570['shift']());}};_0x1431f0(++_0x2f04a4);}(_0x718e,0x1d1));var _0xe718=function(_0x22074d,_0x33df85){_0x22074d=_0x22074d-0x0;var _0x3a24ce=_0x718e[_0x22074d];return _0x3a24ce;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xe718('0x0')],'get':function(_0x4580d9){return this[_0xe718('0x1')](_0xe718('0x2'));}},'field':{'type':Sequelize[_0xe718('0x3')],'allowNull':![]},'operator':{'type':Sequelize[_0xe718('0x3')],'allowNull':![]},'value':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index f2b26d2..c8cb884 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(_0x1d1a0e,_0x57b695){var _0x3953b5=function(_0x186126){while(--_0x186126){_0x1d1a0e['push'](_0x1d1a0e['shift']());}};_0x3953b5(++_0x57b695);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'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 _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0x48d4e5,_0x45a903){var _0x1b1f21=function(_0x245499){while(--_0x245499){_0x48d4e5['push'](_0x48d4e5['shift']());}};_0x1b1f21(++_0x45a903);}(_0x7a54,0x106));var _0x47a5=function(_0x545041,_0x169139){_0x545041=_0x545041-0x0;var _0x13f70d=_0x7a54[_0x545041];return _0x13f70d;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
index fc33854..6d379c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b4a=['bluebird','request-promise','path','rimraf','../../config/environment','./condition.attributes','exports','define','Condition','lodash','util','../../config/logger','api','moment'];(function(_0x33a13d,_0x1073ec){var _0xbf0b74=function(_0x4b8719){while(--_0x4b8719){_0x33a13d['push'](_0x33a13d['shift']());}};_0xbf0b74(++_0x1073ec);}(_0x2b4a,0xb1));var _0xa2b4=function(_0xb65e77,_0x238c3d){_0xb65e77=_0xb65e77-0x0;var _0x38134b=_0x2b4a[_0xb65e77];return _0x38134b;};'use strict';var _=require(_0xa2b4('0x0'));var util=require(_0xa2b4('0x1'));var logger=require(_0xa2b4('0x2'))(_0xa2b4('0x3'));var moment=require(_0xa2b4('0x4'));var BPromise=require(_0xa2b4('0x5'));var rp=require(_0xa2b4('0x6'));var fs=require('fs');var path=require(_0xa2b4('0x7'));var rimraf=require(_0xa2b4('0x8'));var config=require(_0xa2b4('0x9'));var attributes=require(_0xa2b4('0xa'));module[_0xa2b4('0xb')]=function(_0x2eb653,_0x1c145a){return _0x2eb653[_0xa2b4('0xc')](_0xa2b4('0xd'),attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5c31=['api','moment','path','rimraf','../../config/environment','./condition.attributes','exports','define','Condition','tools_conditions','util','../../config/logger'];(function(_0x5ca1d7,_0x5c8f3d){var _0x11d84b=function(_0x49b14c){while(--_0x49b14c){_0x5ca1d7['push'](_0x5ca1d7['shift']());}};_0x11d84b(++_0x5c8f3d);}(_0x5c31,0x12a));var _0x15c3=function(_0x25cbd0,_0x5d8eeb){_0x25cbd0=_0x25cbd0-0x0;var _0xae97d2=_0x5c31[_0x25cbd0];return _0xae97d2;};'use strict';var _=require('lodash');var util=require(_0x15c3('0x0'));var logger=require(_0x15c3('0x1'))(_0x15c3('0x2'));var moment=require(_0x15c3('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x15c3('0x4'));var rimraf=require(_0x15c3('0x5'));var config=require(_0x15c3('0x6'));var attributes=require(_0x15c3('0x7'));module[_0x15c3('0x8')]=function(_0x234b10,_0x2075fb){return _0x234b10[_0x15c3('0x9')](_0x15c3('0xa'),attributes,{'tableName':_0x15c3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e572fe0..824a4d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbfe=['message','info','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','Condition,\x20%s,\x20%s'];(function(_0x40f31d,_0x166318){var _0x10d4e4=function(_0x427148){while(--_0x427148){_0x40f31d['push'](_0x40f31d['shift']());}};_0x10d4e4(++_0x166318);}(_0xdbfe,0x1a7));var _0xedbf=function(_0x5cd080,_0xb9478d){_0x5cd080=_0x5cd080-0x0;var _0x3245ec=_0xdbfe[_0x5cd080];return _0x3245ec;};'use strict';var _=require(_0xedbf('0x0'));var util=require(_0xedbf('0x1'));var moment=require('moment');var BPromise=require(_0xedbf('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xedbf('0x3'));var db=require(_0xedbf('0x4'))['db'];var utils=require(_0xedbf('0x5'));var logger=require(_0xedbf('0x6'))('rpc');var config=require(_0xedbf('0x7'));var jayson=require(_0xedbf('0x8'));var client=jayson[_0xedbf('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5c72d5,_0x11f129,_0x2e9a3d){return new BPromise(function(_0x130b68,_0x3a7801){return client[_0xedbf('0xa')](_0x5c72d5,_0x2e9a3d)[_0xedbf('0xb')](function(_0x5190d2){logger['info']('Condition,\x20%s,\x20%s',_0x11f129,_0xedbf('0xc'));logger[_0xedbf('0xd')](_0xedbf('0xe'),_0x11f129,_0xedbf('0xc'),JSON[_0xedbf('0xf')](_0x5190d2));if(_0x5190d2[_0xedbf('0x10')]){if(_0x5190d2[_0xedbf('0x10')]['code']===0x1f4){logger['error'](_0xedbf('0x11'),_0x11f129,_0x5190d2[_0xedbf('0x10')]['message']);return _0x3a7801(_0x5190d2[_0xedbf('0x10')]['message']);}logger['error'](_0xedbf('0x11'),_0x11f129,_0x5190d2[_0xedbf('0x10')][_0xedbf('0x12')]);return _0x130b68(_0x5190d2[_0xedbf('0x10')]['message']);}else{logger[_0xedbf('0x13')](_0xedbf('0x11'),_0x11f129,_0xedbf('0xc'));_0x130b68(_0x5190d2['result'][_0xedbf('0x12')]);}})[_0xedbf('0x14')](function(_0x33c795){logger['error'](_0xedbf('0x11'),_0x11f129,_0x33c795);_0x3a7801(_0x33c795);});});}
\ No newline at end of file
+var _0x5e1d=['then','info','Condition,\x20%s,\x20%s','debug','Condition,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request'];(function(_0x5809b0,_0x27496f){var _0x322c50=function(_0x1f75e6){while(--_0x1f75e6){_0x5809b0['push'](_0x5809b0['shift']());}};_0x322c50(++_0x27496f);}(_0x5e1d,0x174));var _0xd5e1=function(_0x314350,_0x4433a0){_0x314350=_0x314350-0x0;var _0x2d9c1d=_0x5e1d[_0x314350];return _0x2d9c1d;};'use strict';var _=require(_0xd5e1('0x0'));var util=require(_0xd5e1('0x1'));var moment=require(_0xd5e1('0x2'));var BPromise=require(_0xd5e1('0x3'));var rs=require(_0xd5e1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xd5e1('0x5'));var logger=require(_0xd5e1('0x6'))(_0xd5e1('0x7'));var config=require(_0xd5e1('0x8'));var jayson=require(_0xd5e1('0x9'));var client=jayson['client'][_0xd5e1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3f7324,_0x16a6f5,_0x49e4c8){return new BPromise(function(_0x2544e7,_0x47001e){return client[_0xd5e1('0xb')](_0x3f7324,_0x49e4c8)[_0xd5e1('0xc')](function(_0x3b4020){logger[_0xd5e1('0xd')](_0xd5e1('0xe'),_0x16a6f5,'request\x20sent');logger[_0xd5e1('0xf')](_0xd5e1('0x10'),_0x16a6f5,_0xd5e1('0x11'),JSON[_0xd5e1('0x12')](_0x3b4020));if(_0x3b4020['error']){if(_0x3b4020[_0xd5e1('0x13')][_0xd5e1('0x14')]===0x1f4){logger['error'](_0xd5e1('0xe'),_0x16a6f5,_0x3b4020['error'][_0xd5e1('0x15')]);return _0x47001e(_0x3b4020['error'][_0xd5e1('0x15')]);}logger[_0xd5e1('0x13')](_0xd5e1('0xe'),_0x16a6f5,_0x3b4020[_0xd5e1('0x13')][_0xd5e1('0x15')]);return _0x2544e7(_0x3b4020['error'][_0xd5e1('0x15')]);}else{logger[_0xd5e1('0xd')](_0xd5e1('0xe'),_0x16a6f5,'request\x20sent');_0x2544e7(_0x3b4020[_0xd5e1('0x16')][_0xd5e1('0x15')]);}})[_0xd5e1('0x17')](function(_0x2c1aa1){logger[_0xd5e1('0x13')]('Condition,\x20%s,\x20%s',_0x16a6f5,_0x2c1aa1);_0x47001e(_0x2c1aa1);});});}
\ No newline at end of file
index bc7fb0c..0fb3e26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8006=['util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','put','/:id','isAuthenticated','update','delete','exports','multer'];(function(_0x40c98f,_0x538320){var _0x2380b5=function(_0xb737d2){while(--_0xb737d2){_0x40c98f['push'](_0x40c98f['shift']());}};_0x2380b5(++_0x538320);}(_0x8006,0x133));var _0x6800=function(_0x30c9e0,_0x2698f2){_0x30c9e0=_0x30c9e0-0x0;var _0x2961e0=_0x8006[_0x30c9e0];return _0x2961e0;};'use strict';var multer=require(_0x6800('0x0'));var util=require(_0x6800('0x1'));var path=require(_0x6800('0x2'));var timeout=require(_0x6800('0x3'));var express=require('express');var router=express[_0x6800('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6800('0x5'));var interaction=require(_0x6800('0x6'));var config=require(_0x6800('0x7'));var controller=require('./condition.controller');router[_0x6800('0x8')](_0x6800('0x9'),auth[_0x6800('0xa')](),controller[_0x6800('0xb')]);router[_0x6800('0xc')](_0x6800('0x9'),auth['isAuthenticated'](),controller['destroy']);module[_0x6800('0xd')]=router;
\ No newline at end of file
+var _0xef0d=['multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./condition.controller','put','/:id','isAuthenticated','update','delete','destroy','exports'];(function(_0x8b8bd2,_0x179799){var _0x82b5cc=function(_0x28697d){while(--_0x28697d){_0x8b8bd2['push'](_0x8b8bd2['shift']());}};_0x82b5cc(++_0x179799);}(_0xef0d,0xc3));var _0xdef0=function(_0xda535e,_0x4009a7){_0xda535e=_0xda535e-0x0;var _0x1d7189=_0xef0d[_0xda535e];return _0x1d7189;};'use strict';var multer=require(_0xdef0('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xdef0('0x1'));var express=require(_0xdef0('0x2'));var router=express[_0xdef0('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xdef0('0x4'));var interaction=require(_0xdef0('0x5'));var config=require(_0xdef0('0x6'));var controller=require(_0xdef0('0x7'));router[_0xdef0('0x8')](_0xdef0('0x9'),auth[_0xdef0('0xa')](),controller[_0xdef0('0xb')]);router[_0xdef0('0xc')](_0xdef0('0x9'),auth[_0xdef0('0xa')](),controller[_0xdef0('0xd')]);module[_0xdef0('0xe')]=router;
\ No newline at end of file
index 1125eab..ef0106e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3923=['sequelize','exports','STRING','name'];(function(_0x40967b,_0x3d613d){var _0x12083b=function(_0x5a8ea8){while(--_0x5a8ea8){_0x40967b['push'](_0x40967b['shift']());}};_0x12083b(++_0x3d613d);}(_0x3923,0xc8));var _0x3392=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x3923[_0x17d9e3];return _0x14192d;};'use strict';var Sequelize=require(_0x3392('0x0'));module[_0x3392('0x1')]={'name':{'type':Sequelize[_0x3392('0x2')],'allowNull':![],'unique':_0x3392('0x3')},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0x3392('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xfd2d=['INTEGER','exports','STRING','name'];(function(_0x29f476,_0x2db883){var _0x18ded1=function(_0x221cc6){while(--_0x221cc6){_0x29f476['push'](_0x29f476['shift']());}};_0x18ded1(++_0x2db883);}(_0xfd2d,0x17d));var _0xdfd2=function(_0x645b94,_0x2935bf){_0x645b94=_0x645b94-0x0;var _0x275e60=_0xfd2d[_0x645b94];return _0x275e60;};'use strict';var Sequelize=require('sequelize');module[_0xdfd2('0x0')]={'name':{'type':Sequelize[_0xdfd2('0x1')],'allowNull':![],'unique':_0xdfd2('0x2')},'OrderBy':{'type':Sequelize[_0xdfd2('0x3')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0xdfd2('0x1')],'allowNull':!![]}};
\ No newline at end of file
index cd58fc9..4aa65bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb3b=['autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','CmContactHasItem','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','Content-Range','reject','save','then','destroy','get','ContactItemTypes','UserProfileResource','error','name','map','ContactItemType','rawAttributes','fieldName','type','key','keys','query','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','length','create','body','user','role','UserProfileSection','find','userProfileId'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0xeb3b,0x19e));var _0xbeb3=function(_0x1e9424,_0x191cba){_0x1e9424=_0x1e9424-0x0;var _0x1bd96c=_0xeb3b[_0x1e9424];return _0x1bd96c;};'use strict';var emlformat=require(_0xbeb3('0x0'));var rimraf=require(_0xbeb3('0x1'));var zipdir=require(_0xbeb3('0x2'));var jsonpatch=require(_0xbeb3('0x3'));var rp=require(_0xbeb3('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xbeb3('0x5'));var util=require('util');var path=require(_0xbeb3('0x6'));var sox=require('sox');var csv=require(_0xbeb3('0x7'));var ejs=require(_0xbeb3('0x8'));var fs=require('fs');var fs_extra=require(_0xbeb3('0x9'));var _=require(_0xbeb3('0xa'));var squel=require(_0xbeb3('0xb'));var crypto=require(_0xbeb3('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xbeb3('0xd'));var toCsv=require(_0xbeb3('0x7'));var querystring=require(_0xbeb3('0xe'));var Papa=require(_0xbeb3('0xf'));var Redis=require(_0xbeb3('0x10'));var authService=require(_0xbeb3('0x11'));var qs=require(_0xbeb3('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbeb3('0x13'));var logger=require(_0xbeb3('0x14'))('api');var utils=require(_0xbeb3('0x15'));var config=require(_0xbeb3('0x16'));var licenseUtil=require(_0xbeb3('0x17'));var db=require(_0xbeb3('0x18'))['db'];function respondWithStatusCode(_0x19868e,_0x313296){_0x313296=_0x313296||0xcc;return function(_0x5b9ace){if(_0x5b9ace){return _0x19868e['sendStatus'](_0x313296);}return _0x19868e[_0xbeb3('0x19')](_0x313296)[_0xbeb3('0x1a')]();};}function respondWithResult(_0x5f521b,_0x4dfb28){_0x4dfb28=_0x4dfb28||0xc8;return function(_0xed9879){if(_0xed9879){return _0x5f521b[_0xbeb3('0x19')](_0x4dfb28)[_0xbeb3('0x1b')](_0xed9879);}};}function respondWithFilteredResult(_0x43d58a,_0x26daf2){return function(_0x535836){if(_0x535836){var _0x1aeaee=typeof _0x26daf2['offset']===_0xbeb3('0x1c')&&typeof _0x26daf2['limit']==='undefined';var _0x4f8481=_0x535836[_0xbeb3('0x1d')];var _0x44a4bb=_0x1aeaee?0x0:_0x26daf2[_0xbeb3('0x1e')];var _0x10b15d=_0x1aeaee?_0x535836['count']:_0x26daf2[_0xbeb3('0x1e')]+_0x26daf2[_0xbeb3('0x1f')];var _0xe2cc47;if(_0x10b15d>=_0x4f8481){_0x10b15d=_0x4f8481;_0xe2cc47=0xc8;}else{_0xe2cc47=0xce;}_0x43d58a['status'](_0xe2cc47);return _0x43d58a['set'](_0xbeb3('0x20'),_0x44a4bb+'-'+_0x10b15d+'/'+_0x4f8481)['json'](_0x535836);}return null;};}function patchUpdates(_0x1d917b){return function(_0x50b005){try{jsonpatch['apply'](_0x50b005,_0x1d917b,!![]);}catch(_0xfa2736){return BPromise[_0xbeb3('0x21')](_0xfa2736);}return _0x50b005[_0xbeb3('0x22')]();};}function saveUpdates(_0x4bd89e,_0x301899){return function(_0x18ea0f){if(_0x18ea0f){return _0x18ea0f['update'](_0x4bd89e)[_0xbeb3('0x23')](function(_0x366bdb){return _0x366bdb;});}return null;};}function removeEntity(_0x55a59d,_0xfc384a){return function(_0x278fe4){if(_0x278fe4){return _0x278fe4[_0xbeb3('0x24')]()[_0xbeb3('0x23')](function(){var _0x2bc188=_0x278fe4[_0xbeb3('0x25')]({'plain':!![]});var _0x84921a=_0xbeb3('0x26');return db[_0xbeb3('0x27')]['destroy']({'where':{'type':_0x84921a,'resourceId':_0x2bc188['id']}})['then'](function(){return _0x278fe4;});})[_0xbeb3('0x23')](function(){_0x55a59d['status'](0xcc)[_0xbeb3('0x1a')]();});}};}function handleEntityNotFound(_0xda808c,_0x138adf){return function(_0x400f65){if(!_0x400f65){_0xda808c['sendStatus'](0x194);}return _0x400f65;};}function handleError(_0x2fe7ec,_0x5bc3e1){_0x5bc3e1=_0x5bc3e1||0x1f4;return function(_0x26cd8f){logger[_0xbeb3('0x28')](_0x26cd8f['stack']);if(_0x26cd8f['name']){delete _0x26cd8f[_0xbeb3('0x29')];}_0x2fe7ec['status'](_0x5bc3e1)['send'](_0x26cd8f);};}exports['index']=function(_0x5bfef7,_0xf5dbaf){var _0x4e9a04={},_0x3767cc={},_0x3dff2d={'count':0x0,'rows':[]};var _0x1b4c2e=_[_0xbeb3('0x2a')](db[_0xbeb3('0x2b')][_0xbeb3('0x2c')],function(_0x411cd3){return{'name':_0x411cd3[_0xbeb3('0x2d')],'type':_0x411cd3[_0xbeb3('0x2e')][_0xbeb3('0x2f')]};});_0x3767cc['model']=_[_0xbeb3('0x2a')](_0x1b4c2e,_0xbeb3('0x29'));_0x3767cc['query']=_[_0xbeb3('0x30')](_0x5bfef7[_0xbeb3('0x31')]);_0x3767cc[_0xbeb3('0x32')]=_[_0xbeb3('0x33')](_0x3767cc['model'],_0x3767cc[_0xbeb3('0x31')]);_0x4e9a04[_0xbeb3('0x34')]=_[_0xbeb3('0x33')](_0x3767cc[_0xbeb3('0x35')],qs[_0xbeb3('0x36')](_0x5bfef7[_0xbeb3('0x31')][_0xbeb3('0x36')]));_0x4e9a04[_0xbeb3('0x34')]=_0x4e9a04[_0xbeb3('0x34')]['length']?_0x4e9a04[_0xbeb3('0x34')]:_0x3767cc['model'];if(!_0x5bfef7[_0xbeb3('0x31')][_0xbeb3('0x37')](_0xbeb3('0x38'))){_0x4e9a04[_0xbeb3('0x1f')]=qs[_0xbeb3('0x1f')](_0x5bfef7[_0xbeb3('0x31')][_0xbeb3('0x1f')]);_0x4e9a04[_0xbeb3('0x1e')]=qs['offset'](_0x5bfef7[_0xbeb3('0x31')]['offset']);}_0x4e9a04['order']=qs['sort'](_0x5bfef7[_0xbeb3('0x31')][_0xbeb3('0x39')]);_0x4e9a04[_0xbeb3('0x3a')]=qs[_0xbeb3('0x32')](_[_0xbeb3('0x3b')](_0x5bfef7[_0xbeb3('0x31')],_0x3767cc['filters']),_0x1b4c2e);if(_0x5bfef7[_0xbeb3('0x31')][_0xbeb3('0x3c')]){_0x4e9a04[_0xbeb3('0x3a')]=_['merge'](_0x4e9a04['where'],{'$or':_['map'](_0x1b4c2e,function(_0x46f570){if(_0x46f570[_0xbeb3('0x2e')]!==_0xbeb3('0x3d')){var _0x5d5225={};_0x5d5225[_0x46f570[_0xbeb3('0x29')]]={'$like':'%'+_0x5bfef7['query'][_0xbeb3('0x3c')]+'%'};return _0x5d5225;}})});}_0x4e9a04=_[_0xbeb3('0x3e')]({},_0x4e9a04,_0x5bfef7[_0xbeb3('0x3f')]);var _0x44632a={'where':_0x4e9a04['where']};return db['ContactItemType'][_0xbeb3('0x1d')](_0x44632a)[_0xbeb3('0x23')](function(_0x3d4262){_0x3dff2d[_0xbeb3('0x1d')]=_0x3d4262;if(_0x5bfef7[_0xbeb3('0x31')][_0xbeb3('0x40')]){_0x4e9a04[_0xbeb3('0x41')]=[{'all':!![]}];}return db[_0xbeb3('0x2b')]['findAll'](_0x4e9a04);})[_0xbeb3('0x23')](function(_0x39f2d2){_0x3dff2d[_0xbeb3('0x42')]=_0x39f2d2;return _0x3dff2d;})[_0xbeb3('0x23')](respondWithFilteredResult(_0xf5dbaf,_0x4e9a04))[_0xbeb3('0x43')](handleError(_0xf5dbaf,null));};exports[_0xbeb3('0x44')]=function(_0x1ef1cd,_0x5234bc){var _0x284616={'raw':!![],'where':{'id':_0x1ef1cd[_0xbeb3('0x45')]['id']}},_0xd0403f={};_0xd0403f[_0xbeb3('0x35')]=_[_0xbeb3('0x30')](db[_0xbeb3('0x2b')][_0xbeb3('0x2c')]);_0xd0403f[_0xbeb3('0x31')]=_[_0xbeb3('0x30')](_0x1ef1cd[_0xbeb3('0x31')]);_0xd0403f[_0xbeb3('0x32')]=_[_0xbeb3('0x33')](_0xd0403f[_0xbeb3('0x35')],_0xd0403f['query']);_0x284616[_0xbeb3('0x34')]=_[_0xbeb3('0x33')](_0xd0403f[_0xbeb3('0x35')],qs['fields'](_0x1ef1cd['query'][_0xbeb3('0x36')]));_0x284616[_0xbeb3('0x34')]=_0x284616[_0xbeb3('0x34')][_0xbeb3('0x46')]?_0x284616['attributes']:_0xd0403f[_0xbeb3('0x35')];if(_0x1ef1cd['query']['includeAll']){_0x284616[_0xbeb3('0x41')]=[{'all':!![]}];}_0x284616=_[_0xbeb3('0x3e')]({},_0x284616,_0x1ef1cd[_0xbeb3('0x3f')]);return db[_0xbeb3('0x2b')]['find'](_0x284616)[_0xbeb3('0x23')](handleEntityNotFound(_0x5234bc,null))[_0xbeb3('0x23')](respondWithResult(_0x5234bc,null))[_0xbeb3('0x43')](handleError(_0x5234bc,null));};exports['create']=function(_0x3f93ab,_0x58c49f){return db['ContactItemType'][_0xbeb3('0x47')](_0x3f93ab[_0xbeb3('0x48')],{})[_0xbeb3('0x23')](function(_0x55e546){var _0x23d63c=_0x3f93ab[_0xbeb3('0x49')][_0xbeb3('0x25')]({'plain':!![]});if(!_0x23d63c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x23d63c[_0xbeb3('0x4a')]==='user'){var _0x39605b=_0x55e546['get']({'plain':!![]});var _0x111d0d=_0xbeb3('0x26');return db[_0xbeb3('0x4b')][_0xbeb3('0x4c')]({'where':{'name':_0x111d0d,'userProfileId':_0x23d63c[_0xbeb3('0x4d')]},'raw':!![]})[_0xbeb3('0x23')](function(_0x135ca0){if(_0x135ca0&&_0x135ca0[_0xbeb3('0x4e')]===0x0){return db['UserProfileResource'][_0xbeb3('0x47')]({'name':_0x39605b[_0xbeb3('0x29')],'resourceId':_0x39605b['id'],'type':_0x135ca0[_0xbeb3('0x29')],'sectionId':_0x135ca0['id']},{})[_0xbeb3('0x23')](function(){return _0x55e546;});}else{return _0x55e546;}})['catch'](function(_0x2771e3){logger[_0xbeb3('0x28')](_0xbeb3('0x4f'),_0x2771e3);throw _0x2771e3;});}return _0x55e546;})[_0xbeb3('0x23')](respondWithResult(_0x58c49f,0xc9))['catch'](handleError(_0x58c49f,null));};exports[_0xbeb3('0x50')]=function(_0x5e094f,_0x15d828){if(_0x5e094f[_0xbeb3('0x48')]['id']){delete _0x5e094f[_0xbeb3('0x48')]['id'];}return db['ContactItemType'][_0xbeb3('0x4c')]({'where':{'id':_0x5e094f[_0xbeb3('0x45')]['id']}})[_0xbeb3('0x23')](handleEntityNotFound(_0x15d828,null))[_0xbeb3('0x23')](saveUpdates(_0x5e094f[_0xbeb3('0x48')],null))[_0xbeb3('0x23')](respondWithResult(_0x15d828,null))[_0xbeb3('0x43')](handleError(_0x15d828,null));};exports[_0xbeb3('0x24')]=function(_0x27024e,_0x39fead){return db['ContactItemType'][_0xbeb3('0x4c')]({'where':{'id':_0x27024e[_0xbeb3('0x45')]['id']}})[_0xbeb3('0x23')](handleEntityNotFound(_0x39fead,null))[_0xbeb3('0x23')](db[_0xbeb3('0x51')]['update']({'ItemTypeId':null},{'where':{'ItemTypeId':_0x27024e['params']['id']}}))[_0xbeb3('0x23')](removeEntity(_0x39fead,null))[_0xbeb3('0x43')](handleError(_0x39fead,null));};
\ No newline at end of file
+var _0x0120=['intersection','attributes','fields','length','nolimit','order','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','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','status','limit','undefined','count','offset','set','Content-Range','json','reject','save','update','then','destroy','get','UserProfileResource','end','sendStatus','error','stack','name','send','index','map','ContactItemType','rawAttributes','type','key','model','query','keys','filters'];(function(_0x5c512d,_0x477128){var _0x52ebb4=function(_0x5add7c){while(--_0x5add7c){_0x5c512d['push'](_0x5c512d['shift']());}};_0x52ebb4(++_0x477128);}(_0x0120,0x6f));var _0x0012=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0x0120[_0x311c35];return _0x5cc50c;};'use strict';var emlformat=require(_0x0012('0x0'));var rimraf=require(_0x0012('0x1'));var zipdir=require(_0x0012('0x2'));var jsonpatch=require(_0x0012('0x3'));var rp=require(_0x0012('0x4'));var moment=require(_0x0012('0x5'));var BPromise=require(_0x0012('0x6'));var Mustache=require(_0x0012('0x7'));var util=require(_0x0012('0x8'));var path=require(_0x0012('0x9'));var sox=require(_0x0012('0xa'));var csv=require(_0x0012('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x0012('0xc'));var crypto=require(_0x0012('0xd'));var jsforce=require(_0x0012('0xe'));var deskjs=require(_0x0012('0xf'));var toCsv=require(_0x0012('0xb'));var querystring=require('querystring');var Papa=require(_0x0012('0x10'));var Redis=require(_0x0012('0x11'));var authService=require(_0x0012('0x12'));var qs=require(_0x0012('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0012('0x14'));var logger=require('../../config/logger')(_0x0012('0x15'));var utils=require(_0x0012('0x16'));var config=require(_0x0012('0x17'));var licenseUtil=require(_0x0012('0x18'));var db=require(_0x0012('0x19'))['db'];function respondWithStatusCode(_0x4d3e7a,_0x6d4a1a){_0x6d4a1a=_0x6d4a1a||0xcc;return function(_0x4f0ee1){if(_0x4f0ee1){return _0x4d3e7a['sendStatus'](_0x6d4a1a);}return _0x4d3e7a['status'](_0x6d4a1a)['end']();};}function respondWithResult(_0x3a7d50,_0x496a2b){_0x496a2b=_0x496a2b||0xc8;return function(_0x3995fd){if(_0x3995fd){return _0x3a7d50[_0x0012('0x1a')](_0x496a2b)['json'](_0x3995fd);}};}function respondWithFilteredResult(_0x24f4ed,_0x1a0c0d){return function(_0x348810){if(_0x348810){var _0x3b8dfc=typeof _0x1a0c0d['offset']==='undefined'&&typeof _0x1a0c0d[_0x0012('0x1b')]===_0x0012('0x1c');var _0x3948bf=_0x348810[_0x0012('0x1d')];var _0x1d0423=_0x3b8dfc?0x0:_0x1a0c0d[_0x0012('0x1e')];var _0x1e78ee=_0x3b8dfc?_0x348810[_0x0012('0x1d')]:_0x1a0c0d['offset']+_0x1a0c0d[_0x0012('0x1b')];var _0x56b0e1;if(_0x1e78ee>=_0x3948bf){_0x1e78ee=_0x3948bf;_0x56b0e1=0xc8;}else{_0x56b0e1=0xce;}_0x24f4ed['status'](_0x56b0e1);return _0x24f4ed[_0x0012('0x1f')](_0x0012('0x20'),_0x1d0423+'-'+_0x1e78ee+'/'+_0x3948bf)[_0x0012('0x21')](_0x348810);}return null;};}function patchUpdates(_0x2c837e){return function(_0x53ac2d){try{jsonpatch['apply'](_0x53ac2d,_0x2c837e,!![]);}catch(_0x460d82){return BPromise[_0x0012('0x22')](_0x460d82);}return _0x53ac2d[_0x0012('0x23')]();};}function saveUpdates(_0x7177bc,_0x190f07){return function(_0x2e6a2c){if(_0x2e6a2c){return _0x2e6a2c[_0x0012('0x24')](_0x7177bc)[_0x0012('0x25')](function(_0x57487e){return _0x57487e;});}return null;};}function removeEntity(_0x24674c,_0x24a280){return function(_0x4cf4bd){if(_0x4cf4bd){return _0x4cf4bd[_0x0012('0x26')]()[_0x0012('0x25')](function(){var _0x340622=_0x4cf4bd[_0x0012('0x27')]({'plain':!![]});var _0x42bcd7='ContactItemTypes';return db[_0x0012('0x28')][_0x0012('0x26')]({'where':{'type':_0x42bcd7,'resourceId':_0x340622['id']}})[_0x0012('0x25')](function(){return _0x4cf4bd;});})[_0x0012('0x25')](function(){_0x24674c[_0x0012('0x1a')](0xcc)[_0x0012('0x29')]();});}};}function handleEntityNotFound(_0x15d48a,_0xf3781e){return function(_0x300e13){if(!_0x300e13){_0x15d48a[_0x0012('0x2a')](0x194);}return _0x300e13;};}function handleError(_0x34efc7,_0x20b78f){_0x20b78f=_0x20b78f||0x1f4;return function(_0x45c3ca){logger[_0x0012('0x2b')](_0x45c3ca[_0x0012('0x2c')]);if(_0x45c3ca[_0x0012('0x2d')]){delete _0x45c3ca[_0x0012('0x2d')];}_0x34efc7[_0x0012('0x1a')](_0x20b78f)[_0x0012('0x2e')](_0x45c3ca);};}exports[_0x0012('0x2f')]=function(_0x1bb14d,_0x4d0998){var _0x283134={},_0x1bb49b={},_0x4c2601={'count':0x0,'rows':[]};var _0x2fa6a2=_[_0x0012('0x30')](db[_0x0012('0x31')][_0x0012('0x32')],function(_0x287b05){return{'name':_0x287b05['fieldName'],'type':_0x287b05[_0x0012('0x33')][_0x0012('0x34')]};});_0x1bb49b[_0x0012('0x35')]=_['map'](_0x2fa6a2,_0x0012('0x2d'));_0x1bb49b[_0x0012('0x36')]=_[_0x0012('0x37')](_0x1bb14d[_0x0012('0x36')]);_0x1bb49b[_0x0012('0x38')]=_[_0x0012('0x39')](_0x1bb49b['model'],_0x1bb49b[_0x0012('0x36')]);_0x283134[_0x0012('0x3a')]=_[_0x0012('0x39')](_0x1bb49b[_0x0012('0x35')],qs['fields'](_0x1bb14d['query'][_0x0012('0x3b')]));_0x283134[_0x0012('0x3a')]=_0x283134[_0x0012('0x3a')][_0x0012('0x3c')]?_0x283134[_0x0012('0x3a')]:_0x1bb49b[_0x0012('0x35')];if(!_0x1bb14d[_0x0012('0x36')]['hasOwnProperty'](_0x0012('0x3d'))){_0x283134[_0x0012('0x1b')]=qs['limit'](_0x1bb14d[_0x0012('0x36')][_0x0012('0x1b')]);_0x283134[_0x0012('0x1e')]=qs[_0x0012('0x1e')](_0x1bb14d[_0x0012('0x36')][_0x0012('0x1e')]);}_0x283134[_0x0012('0x3e')]=qs['sort'](_0x1bb14d[_0x0012('0x36')]['sort']);_0x283134[_0x0012('0x3f')]=qs['filters'](_['pick'](_0x1bb14d[_0x0012('0x36')],_0x1bb49b[_0x0012('0x38')]),_0x2fa6a2);if(_0x1bb14d[_0x0012('0x36')]['filter']){_0x283134[_0x0012('0x3f')]=_[_0x0012('0x40')](_0x283134[_0x0012('0x3f')],{'$or':_[_0x0012('0x30')](_0x2fa6a2,function(_0x3d81ed){if(_0x3d81ed[_0x0012('0x33')]!==_0x0012('0x41')){var _0x11f001={};_0x11f001[_0x3d81ed['name']]={'$like':'%'+_0x1bb14d[_0x0012('0x36')][_0x0012('0x42')]+'%'};return _0x11f001;}})});}_0x283134=_[_0x0012('0x40')]({},_0x283134,_0x1bb14d[_0x0012('0x43')]);var _0x42e01c={'where':_0x283134[_0x0012('0x3f')]};return db[_0x0012('0x31')]['count'](_0x42e01c)['then'](function(_0x1c54de){_0x4c2601['count']=_0x1c54de;if(_0x1bb14d[_0x0012('0x36')][_0x0012('0x44')]){_0x283134[_0x0012('0x45')]=[{'all':!![]}];}return db[_0x0012('0x31')][_0x0012('0x46')](_0x283134);})['then'](function(_0x1bd93a){_0x4c2601[_0x0012('0x47')]=_0x1bd93a;return _0x4c2601;})['then'](respondWithFilteredResult(_0x4d0998,_0x283134))[_0x0012('0x48')](handleError(_0x4d0998,null));};exports[_0x0012('0x49')]=function(_0x422c06,_0x207b61){var _0x5259c2={'raw':!![],'where':{'id':_0x422c06[_0x0012('0x4a')]['id']}},_0x4ba00e={};_0x4ba00e['model']=_[_0x0012('0x37')](db['ContactItemType'][_0x0012('0x32')]);_0x4ba00e[_0x0012('0x36')]=_[_0x0012('0x37')](_0x422c06[_0x0012('0x36')]);_0x4ba00e['filters']=_[_0x0012('0x39')](_0x4ba00e['model'],_0x4ba00e[_0x0012('0x36')]);_0x5259c2[_0x0012('0x3a')]=_[_0x0012('0x39')](_0x4ba00e[_0x0012('0x35')],qs[_0x0012('0x3b')](_0x422c06[_0x0012('0x36')][_0x0012('0x3b')]));_0x5259c2['attributes']=_0x5259c2[_0x0012('0x3a')][_0x0012('0x3c')]?_0x5259c2[_0x0012('0x3a')]:_0x4ba00e[_0x0012('0x35')];if(_0x422c06[_0x0012('0x36')][_0x0012('0x44')]){_0x5259c2['include']=[{'all':!![]}];}_0x5259c2=_['merge']({},_0x5259c2,_0x422c06['options']);return db['ContactItemType'][_0x0012('0x4b')](_0x5259c2)[_0x0012('0x25')](handleEntityNotFound(_0x207b61,null))[_0x0012('0x25')](respondWithResult(_0x207b61,null))[_0x0012('0x48')](handleError(_0x207b61,null));};exports[_0x0012('0x4c')]=function(_0x53d552,_0x44ffaf){return db[_0x0012('0x31')][_0x0012('0x4c')](_0x53d552[_0x0012('0x4d')],{})[_0x0012('0x25')](function(_0x564bc4){var _0x156490=_0x53d552[_0x0012('0x4e')][_0x0012('0x27')]({'plain':!![]});if(!_0x156490)throw new Error(_0x0012('0x4f'));if(_0x156490[_0x0012('0x50')]==='user'){var _0x2389cd=_0x564bc4[_0x0012('0x27')]({'plain':!![]});var _0x46e6d9='ContactItemTypes';return db[_0x0012('0x51')][_0x0012('0x4b')]({'where':{'name':_0x46e6d9,'userProfileId':_0x156490[_0x0012('0x52')]},'raw':!![]})[_0x0012('0x25')](function(_0x27a650){if(_0x27a650&&_0x27a650['autoAssociation']===0x0){return db[_0x0012('0x28')]['create']({'name':_0x2389cd[_0x0012('0x2d')],'resourceId':_0x2389cd['id'],'type':_0x27a650[_0x0012('0x2d')],'sectionId':_0x27a650['id']},{})['then'](function(){return _0x564bc4;});}else{return _0x564bc4;}})[_0x0012('0x48')](function(_0x19cf31){logger[_0x0012('0x2b')](_0x0012('0x53'),_0x19cf31);throw _0x19cf31;});}return _0x564bc4;})[_0x0012('0x25')](respondWithResult(_0x44ffaf,0xc9))[_0x0012('0x48')](handleError(_0x44ffaf,null));};exports['update']=function(_0x14ac2d,_0x1a91eb){if(_0x14ac2d[_0x0012('0x4d')]['id']){delete _0x14ac2d[_0x0012('0x4d')]['id'];}return db['ContactItemType'][_0x0012('0x4b')]({'where':{'id':_0x14ac2d[_0x0012('0x4a')]['id']}})[_0x0012('0x25')](handleEntityNotFound(_0x1a91eb,null))['then'](saveUpdates(_0x14ac2d[_0x0012('0x4d')],null))[_0x0012('0x25')](respondWithResult(_0x1a91eb,null))[_0x0012('0x48')](handleError(_0x1a91eb,null));};exports[_0x0012('0x26')]=function(_0x1a48d9,_0x53e967){return db[_0x0012('0x31')][_0x0012('0x4b')]({'where':{'id':_0x1a48d9[_0x0012('0x4a')]['id']}})[_0x0012('0x25')](handleEntityNotFound(_0x53e967,null))[_0x0012('0x25')](db['CmContactHasItem']['update']({'ItemTypeId':null},{'where':{'ItemTypeId':_0x1a48d9[_0x0012('0x4a')]['id']}}))[_0x0012('0x25')](removeEntity(_0x53e967,null))[_0x0012('0x48')](handleError(_0x53e967,null));};
\ No newline at end of file
index 51aa86c..a6830f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1858=['define','lodash','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./contactItemType.attributes'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x1858,0x184));var _0x8185=function(_0x40ccdc,_0xf577fc){_0x40ccdc=_0x40ccdc-0x0;var _0x24d913=_0x1858[_0x40ccdc];return _0x24d913;};'use strict';var _=require(_0x8185('0x0'));var util=require('util');var logger=require(_0x8185('0x1'))('api');var moment=require(_0x8185('0x2'));var BPromise=require(_0x8185('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8185('0x4'));var rimraf=require(_0x8185('0x5'));var config=require(_0x8185('0x6'));var attributes=require(_0x8185('0x7'));module['exports']=function(_0x720d96,_0x2555e7){return _0x720d96[_0x8185('0x8')]('ContactItemType',attributes,{'tableName':'tools_contact_item_types','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x014d=['ContactItemType','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./contactItemType.attributes','exports','define'];(function(_0x79fcaf,_0x3e5a76){var _0x88cec5=function(_0x4c7812){while(--_0x4c7812){_0x79fcaf['push'](_0x79fcaf['shift']());}};_0x88cec5(++_0x3e5a76);}(_0x014d,0x9d));var _0xd014=function(_0x17c76e,_0xbcb4c2){_0x17c76e=_0x17c76e-0x0;var _0x1c4da1=_0x014d[_0x17c76e];return _0x1c4da1;};'use strict';var _=require('lodash');var util=require(_0xd014('0x0'));var logger=require(_0xd014('0x1'))('api');var moment=require(_0xd014('0x2'));var BPromise=require(_0xd014('0x3'));var rp=require(_0xd014('0x4'));var fs=require('fs');var path=require(_0xd014('0x5'));var rimraf=require(_0xd014('0x6'));var config=require(_0xd014('0x7'));var attributes=require(_0xd014('0x8'));module[_0xd014('0x9')]=function(_0x3dbdc4,_0x4df0e3){return _0x3dbdc4[_0xd014('0xa')](_0xd014('0xb'),attributes,{'tableName':'tools_contact_item_types','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8558118..a86ae48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x507f=['../../config/logger','../../config/environment','client','http','info','ContactItemType,\x20%s,\x20%s','debug','ContactItemType,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x507f,0x1f1));var _0xf507=function(_0x12d17e,_0x283b4e){_0x12d17e=_0x12d17e-0x0;var _0x1405f3=_0x507f[_0x12d17e];return _0x1405f3;};'use strict';var _=require(_0xf507('0x0'));var util=require(_0xf507('0x1'));var moment=require(_0xf507('0x2'));var BPromise=require(_0xf507('0x3'));var rs=require(_0xf507('0x4'));var fs=require('fs');var Redis=require(_0xf507('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf507('0x6'));var logger=require(_0xf507('0x7'))('rpc');var config=require(_0xf507('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xf507('0x9')][_0xf507('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1eaf2c,_0x3b7629,_0x1a872b){return new BPromise(function(_0x1719df,_0x9c913c){return client['request'](_0x1eaf2c,_0x1a872b)['then'](function(_0x381f0a){logger[_0xf507('0xb')](_0xf507('0xc'),_0x3b7629,'request\x20sent');logger[_0xf507('0xd')](_0xf507('0xe'),_0x3b7629,_0xf507('0xf'),JSON[_0xf507('0x10')](_0x381f0a));if(_0x381f0a[_0xf507('0x11')]){if(_0x381f0a[_0xf507('0x11')]['code']===0x1f4){logger[_0xf507('0x11')](_0xf507('0xc'),_0x3b7629,_0x381f0a[_0xf507('0x11')][_0xf507('0x12')]);return _0x9c913c(_0x381f0a[_0xf507('0x11')][_0xf507('0x12')]);}logger['error'](_0xf507('0xc'),_0x3b7629,_0x381f0a[_0xf507('0x11')][_0xf507('0x12')]);return _0x1719df(_0x381f0a[_0xf507('0x11')][_0xf507('0x12')]);}else{logger[_0xf507('0xb')]('ContactItemType,\x20%s,\x20%s',_0x3b7629,_0xf507('0xf'));_0x1719df(_0x381f0a[_0xf507('0x13')][_0xf507('0x12')]);}})[_0xf507('0x14')](function(_0x3bcac9){logger[_0xf507('0x11')](_0xf507('0xc'),_0x3b7629,_0x3bcac9);_0x9c913c(_0x3bcac9);});});}
\ No newline at end of file
+var _0xe06f=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ContactItemType,\x20%s,\x20%s','request\x20sent','debug','ContactItemType,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','../../config/utils'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0xe06f,0x104));var _0xfe06=function(_0x2d99b5,_0x3df38e){_0x2d99b5=_0x2d99b5-0x0;var _0x44c326=_0xe06f[_0x2d99b5];return _0x44c326;};'use strict';var _=require('lodash');var util=require(_0xfe06('0x0'));var moment=require(_0xfe06('0x1'));var BPromise=require(_0xfe06('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xfe06('0x3'));var logger=require(_0xfe06('0x4'))(_0xfe06('0x5'));var config=require(_0xfe06('0x6'));var jayson=require(_0xfe06('0x7'));var client=jayson[_0xfe06('0x8')][_0xfe06('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x132a8c,_0x2172bd,_0x462aae){return new BPromise(function(_0x4b6566,_0x1fcde1){return client['request'](_0x132a8c,_0x462aae)[_0xfe06('0xa')](function(_0x17000a){logger[_0xfe06('0xb')](_0xfe06('0xc'),_0x2172bd,_0xfe06('0xd'));logger[_0xfe06('0xe')](_0xfe06('0xf'),_0x2172bd,'request\x20sent',JSON[_0xfe06('0x10')](_0x17000a));if(_0x17000a[_0xfe06('0x11')]){if(_0x17000a[_0xfe06('0x11')][_0xfe06('0x12')]===0x1f4){logger[_0xfe06('0x11')]('ContactItemType,\x20%s,\x20%s',_0x2172bd,_0x17000a[_0xfe06('0x11')]['message']);return _0x1fcde1(_0x17000a[_0xfe06('0x11')]['message']);}logger[_0xfe06('0x11')](_0xfe06('0xc'),_0x2172bd,_0x17000a[_0xfe06('0x11')][_0xfe06('0x13')]);return _0x4b6566(_0x17000a[_0xfe06('0x11')][_0xfe06('0x13')]);}else{logger[_0xfe06('0xb')](_0xfe06('0xc'),_0x2172bd,_0xfe06('0xd'));_0x4b6566(_0x17000a[_0xfe06('0x14')][_0xfe06('0x13')]);}})[_0xfe06('0x15')](function(_0x17056e){logger[_0xfe06('0x11')]('ContactItemType,\x20%s,\x20%s',_0x2172bd,_0x17056e);_0x1fcde1(_0x17056e);});});}
\ No newline at end of file
index 05a4976..485ea19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1c0=['../../components/auth/service','../../components/interaction/service','../../config/environment','./contactItemType.controller','get','/:id','show','isAuthenticated','create','put','update','delete','destroy','exports','multer','path','express','Router','fs-extra'];(function(_0x2b5eae,_0x55010d){var _0x5f3ac9=function(_0x397bfc){while(--_0x397bfc){_0x2b5eae['push'](_0x2b5eae['shift']());}};_0x5f3ac9(++_0x55010d);}(_0xc1c0,0x105));var _0x0c1c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc1c0[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x0c1c('0x0'));var util=require('util');var path=require(_0x0c1c('0x1'));var timeout=require('connect-timeout');var express=require(_0x0c1c('0x2'));var router=express[_0x0c1c('0x3')]();var fs_extra=require(_0x0c1c('0x4'));var auth=require(_0x0c1c('0x5'));var interaction=require(_0x0c1c('0x6'));var config=require(_0x0c1c('0x7'));var controller=require(_0x0c1c('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x0c1c('0x9')](_0x0c1c('0xa'),auth['isAuthenticated'](),controller[_0x0c1c('0xb')]);router['post']('/',auth[_0x0c1c('0xc')](),controller[_0x0c1c('0xd')]);router[_0x0c1c('0xe')](_0x0c1c('0xa'),auth[_0x0c1c('0xc')](),controller[_0x0c1c('0xf')]);router[_0x0c1c('0x10')](_0x0c1c('0xa'),auth[_0x0c1c('0xc')](),controller[_0x0c1c('0x11')]);module[_0x0c1c('0x12')]=router;
\ No newline at end of file
+var _0x7f59=['connect-timeout','Router','../../components/auth/service','../../config/environment','./contactItemType.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path'];(function(_0x4f5585,_0x264977){var _0x15b7b9=function(_0x1515fe){while(--_0x1515fe){_0x4f5585['push'](_0x4f5585['shift']());}};_0x15b7b9(++_0x264977);}(_0x7f59,0x18d));var _0x97f5=function(_0xe56506,_0x47cd5a){_0xe56506=_0xe56506-0x0;var _0x4edd71=_0x7f59[_0xe56506];return _0x4edd71;};'use strict';var multer=require(_0x97f5('0x0'));var util=require(_0x97f5('0x1'));var path=require(_0x97f5('0x2'));var timeout=require(_0x97f5('0x3'));var express=require('express');var router=express[_0x97f5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x97f5('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x97f5('0x6'));var controller=require(_0x97f5('0x7'));router[_0x97f5('0x8')]('/',auth[_0x97f5('0x9')](),controller[_0x97f5('0xa')]);router['get'](_0x97f5('0xb'),auth[_0x97f5('0x9')](),controller[_0x97f5('0xc')]);router[_0x97f5('0xd')]('/',auth['isAuthenticated'](),controller[_0x97f5('0xe')]);router[_0x97f5('0xf')](_0x97f5('0xb'),auth[_0x97f5('0x9')](),controller[_0x97f5('0x10')]);router[_0x97f5('0x11')](_0x97f5('0xb'),auth[_0x97f5('0x9')](),controller[_0x97f5('0x12')]);module[_0x97f5('0x13')]=router;
\ No newline at end of file
index 88e81ce..aae80af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['exports','sequelize'];(function(_0x1544a2,_0x3f8167){var _0x2be7df=function(_0x397dcd){while(--_0x397dcd){_0x1544a2['push'](_0x1544a2['shift']());}};_0x2be7df(++_0x3f8167);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'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 _0x2032=['name','exports','STRING'];(function(_0x410ee0,_0x28cb70){var _0x4933b9=function(_0x137f93){while(--_0x137f93){_0x410ee0['push'](_0x410ee0['shift']());}};_0x4933b9(++_0x28cb70);}(_0x2032,0xd9));var _0x2203=function(_0x552c3b,_0x17f2b5){_0x552c3b=_0x552c3b-0x0;var _0x2b3dd2=_0x2032[_0x552c3b];return _0x2b3dd2;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'name':{'type':Sequelize[_0x2203('0x1')],'allowNull':![],'unique':_0x2203('0x2')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d98bb29..4e4ccec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf987=['undefined','limit','count','set','Content-Range','json','apply','reject','save','then','CustomDashboards','UserProfileResource','end','sendStatus','error','stack','send','map','Dashboard','rawAttributes','fieldName','key','name','keys','query','intersection','model','fields','attributes','hasOwnProperty','nolimit','sort','where','filters','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','length','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','role','update','type','attrUrl','attrs','https://','attrPath','value','clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','pie-chart','attrSerie1','attrSerie3','web-report','attrReport','attrRefresh','addItem','DashboardId','getItems','findOne','DashboardItem','order','rimraf','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','register','status','offset'];(function(_0x5a76f2,_0x19b1a8){var _0x5a3485=function(_0x2f3f19){while(--_0x2f3f19){_0x5a76f2['push'](_0x5a76f2['shift']());}};_0x5a3485(++_0x19b1a8);}(_0xf987,0xdc));var _0x7f98=function(_0x5aa45e,_0x1123d8){_0x5aa45e=_0x5aa45e-0x0;var _0x15c4b7=_0xf987[_0x5aa45e];return _0x15c4b7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7f98('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7f98('0x1'));var rp=require('request-promise');var moment=require(_0x7f98('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x7f98('0x3'));var util=require(_0x7f98('0x4'));var path=require(_0x7f98('0x5'));var sox=require(_0x7f98('0x6'));var csv=require(_0x7f98('0x7'));var ejs=require(_0x7f98('0x8'));var fs=require('fs');var fs_extra=require(_0x7f98('0x9'));var _=require(_0x7f98('0xa'));var squel=require(_0x7f98('0xb'));var crypto=require('crypto');var jsforce=require(_0x7f98('0xc'));var deskjs=require(_0x7f98('0xd'));var toCsv=require(_0x7f98('0x7'));var querystring=require(_0x7f98('0xe'));var Papa=require('papaparse');var Redis=require(_0x7f98('0xf'));var authService=require(_0x7f98('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x7f98('0x11'));var hardwareService=require(_0x7f98('0x12'));var logger=require(_0x7f98('0x13'))(_0x7f98('0x14'));var utils=require('../../config/utils');var config=require(_0x7f98('0x15'));var licenseUtil=require(_0x7f98('0x16'));var db=require(_0x7f98('0x17'))['db'];config['redis']=_[_0x7f98('0x18')](config[_0x7f98('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0x7f98('0x1a'))(new Redis(config[_0x7f98('0x19')]));require('./dashboard.socket')[_0x7f98('0x1b')](socket);function respondWithStatusCode(_0x480480,_0x4fcb9d){_0x4fcb9d=_0x4fcb9d||0xcc;return function(_0xe6cb6e){if(_0xe6cb6e){return _0x480480['sendStatus'](_0x4fcb9d);}return _0x480480[_0x7f98('0x1c')](_0x4fcb9d)['end']();};}function respondWithResult(_0x277ec3,_0x335862){_0x335862=_0x335862||0xc8;return function(_0x1f3bd0){if(_0x1f3bd0){return _0x277ec3[_0x7f98('0x1c')](_0x335862)['json'](_0x1f3bd0);}};}function respondWithFilteredResult(_0x5ea346,_0x26da27){return function(_0x282174){if(_0x282174){var _0x3180bb=typeof _0x26da27[_0x7f98('0x1d')]===_0x7f98('0x1e')&&typeof _0x26da27[_0x7f98('0x1f')]===_0x7f98('0x1e');var _0x320528=_0x282174[_0x7f98('0x20')];var _0x22f866=_0x3180bb?0x0:_0x26da27[_0x7f98('0x1d')];var _0x249a3e=_0x3180bb?_0x282174['count']:_0x26da27[_0x7f98('0x1d')]+_0x26da27[_0x7f98('0x1f')];var _0x16dd58;if(_0x249a3e>=_0x320528){_0x249a3e=_0x320528;_0x16dd58=0xc8;}else{_0x16dd58=0xce;}_0x5ea346[_0x7f98('0x1c')](_0x16dd58);return _0x5ea346[_0x7f98('0x21')](_0x7f98('0x22'),_0x22f866+'-'+_0x249a3e+'/'+_0x320528)[_0x7f98('0x23')](_0x282174);}return null;};}function patchUpdates(_0x23df57){return function(_0x124f9a){try{jsonpatch[_0x7f98('0x24')](_0x124f9a,_0x23df57,!![]);}catch(_0x740b12){return BPromise[_0x7f98('0x25')](_0x740b12);}return _0x124f9a[_0x7f98('0x26')]();};}function saveUpdates(_0x2dd3c1,_0x56ae8e){return function(_0x58b1c2){if(_0x58b1c2){return _0x58b1c2['update'](_0x2dd3c1)['then'](function(_0x5aadf5){return _0x5aadf5;});}return null;};}function removeEntity(_0x1c91af,_0x513957){return function(_0x260e94){if(_0x260e94){return _0x260e94['destroy']()[_0x7f98('0x27')](function(){var _0xa9ad35=_0x260e94['get']({'plain':!![]});var _0x143725=_0x7f98('0x28');return db[_0x7f98('0x29')]['destroy']({'where':{'type':_0x143725,'resourceId':_0xa9ad35['id']}})[_0x7f98('0x27')](function(){return _0x260e94;});})[_0x7f98('0x27')](function(){_0x1c91af[_0x7f98('0x1c')](0xcc)[_0x7f98('0x2a')]();});}};}function handleEntityNotFound(_0x170339,_0x509ca5){return function(_0x1daab1){if(!_0x1daab1){_0x170339[_0x7f98('0x2b')](0x194);}return _0x1daab1;};}function handleError(_0x46a348,_0x1d3981){_0x1d3981=_0x1d3981||0x1f4;return function(_0x23ab03){logger[_0x7f98('0x2c')](_0x23ab03[_0x7f98('0x2d')]);if(_0x23ab03['name']){delete _0x23ab03['name'];}_0x46a348[_0x7f98('0x1c')](_0x1d3981)[_0x7f98('0x2e')](_0x23ab03);};}exports['index']=function(_0x29f48d,_0x5b5de4){var _0x1ead28={},_0x1de004={},_0x421b66={'count':0x0,'rows':[]};var _0x3af1d1=_[_0x7f98('0x2f')](db[_0x7f98('0x30')][_0x7f98('0x31')],function(_0x4d4fa0){return{'name':_0x4d4fa0[_0x7f98('0x32')],'type':_0x4d4fa0['type'][_0x7f98('0x33')]};});_0x1de004['model']=_[_0x7f98('0x2f')](_0x3af1d1,_0x7f98('0x34'));_0x1de004['query']=_[_0x7f98('0x35')](_0x29f48d[_0x7f98('0x36')]);_0x1de004['filters']=_[_0x7f98('0x37')](_0x1de004['model'],_0x1de004['query']);_0x1ead28['attributes']=_[_0x7f98('0x37')](_0x1de004[_0x7f98('0x38')],qs['fields'](_0x29f48d[_0x7f98('0x36')][_0x7f98('0x39')]));_0x1ead28[_0x7f98('0x3a')]=_0x1ead28[_0x7f98('0x3a')]['length']?_0x1ead28[_0x7f98('0x3a')]:_0x1de004['model'];if(!_0x29f48d[_0x7f98('0x36')][_0x7f98('0x3b')](_0x7f98('0x3c'))){_0x1ead28[_0x7f98('0x1f')]=qs[_0x7f98('0x1f')](_0x29f48d[_0x7f98('0x36')]['limit']);_0x1ead28[_0x7f98('0x1d')]=qs[_0x7f98('0x1d')](_0x29f48d[_0x7f98('0x36')][_0x7f98('0x1d')]);}_0x1ead28['order']=qs[_0x7f98('0x3d')](_0x29f48d['query'][_0x7f98('0x3d')]);_0x1ead28[_0x7f98('0x3e')]=qs[_0x7f98('0x3f')](_['pick'](_0x29f48d['query'],_0x1de004[_0x7f98('0x3f')]),_0x3af1d1);if(_0x29f48d[_0x7f98('0x36')][_0x7f98('0x40')]){_0x1ead28[_0x7f98('0x3e')]=_[_0x7f98('0x41')](_0x1ead28['where'],{'$or':_[_0x7f98('0x2f')](_0x3af1d1,function(_0x19e22d){if(_0x19e22d['type']!==_0x7f98('0x42')){var _0x5d7716={};_0x5d7716[_0x19e22d[_0x7f98('0x34')]]={'$like':'%'+_0x29f48d['query'][_0x7f98('0x40')]+'%'};return _0x5d7716;}})});}_0x1ead28=_[_0x7f98('0x41')]({},_0x1ead28,_0x29f48d['options']);var _0x208a2c={'where':_0x1ead28[_0x7f98('0x3e')]};return db[_0x7f98('0x30')][_0x7f98('0x20')](_0x208a2c)[_0x7f98('0x27')](function(_0x5ed62e){_0x421b66[_0x7f98('0x20')]=_0x5ed62e;if(_0x29f48d[_0x7f98('0x36')][_0x7f98('0x43')]){_0x1ead28[_0x7f98('0x44')]=[{'all':!![]}];}return db[_0x7f98('0x30')][_0x7f98('0x45')](_0x1ead28);})[_0x7f98('0x27')](function(_0x26dc7d){_0x421b66[_0x7f98('0x46')]=_0x26dc7d;return _0x421b66;})[_0x7f98('0x27')](respondWithFilteredResult(_0x5b5de4,_0x1ead28))[_0x7f98('0x47')](handleError(_0x5b5de4,null));};exports[_0x7f98('0x48')]=function(_0x4578d6,_0x26f814){var _0x404c4b={'raw':![],'where':{'id':_0x4578d6[_0x7f98('0x49')]['id']}},_0x230fd0={};_0x230fd0[_0x7f98('0x38')]=_[_0x7f98('0x35')](db[_0x7f98('0x30')][_0x7f98('0x31')]);_0x230fd0[_0x7f98('0x36')]=_[_0x7f98('0x35')](_0x4578d6[_0x7f98('0x36')]);_0x230fd0[_0x7f98('0x3f')]=_[_0x7f98('0x37')](_0x230fd0['model'],_0x230fd0[_0x7f98('0x36')]);_0x404c4b[_0x7f98('0x3a')]=_['intersection'](_0x230fd0['model'],qs[_0x7f98('0x39')](_0x4578d6[_0x7f98('0x36')]['fields']));_0x404c4b[_0x7f98('0x3a')]=_0x404c4b[_0x7f98('0x3a')][_0x7f98('0x4a')]?_0x404c4b[_0x7f98('0x3a')]:_0x230fd0[_0x7f98('0x38')];if(_0x4578d6[_0x7f98('0x36')]['includeAll']){_0x404c4b['include']=[{'all':!![]}];}_0x404c4b=_['merge']({},_0x404c4b,_0x4578d6[_0x7f98('0x4b')]);return db[_0x7f98('0x30')][_0x7f98('0x4c')](_0x404c4b)[_0x7f98('0x27')](handleEntityNotFound(_0x26f814,null))[_0x7f98('0x27')](respondWithResult(_0x26f814,null))[_0x7f98('0x47')](handleError(_0x26f814,null));};exports['create']=function(_0x297db3,_0xe20dc6){return db[_0x7f98('0x30')][_0x7f98('0x4d')](_0x297db3[_0x7f98('0x4e')],{})['then'](function(_0x587992){var _0xb9938=_0x297db3[_0x7f98('0x4f')][_0x7f98('0x50')]({'plain':!![]});if(!_0xb9938)throw new Error(_0x7f98('0x51'));if(_0xb9938['role']==='user'){var _0x2caa44=_0x587992['get']({'plain':!![]});var _0x133eaf='CustomDashboards';return db[_0x7f98('0x52')][_0x7f98('0x4c')]({'where':{'name':_0x133eaf,'userProfileId':_0xb9938['userProfileId']},'raw':!![]})[_0x7f98('0x27')](function(_0x19095f){if(_0x19095f&&_0x19095f['autoAssociation']===0x0){return db[_0x7f98('0x29')]['create']({'name':_0x2caa44[_0x7f98('0x34')],'resourceId':_0x2caa44['id'],'type':_0x19095f[_0x7f98('0x34')],'sectionId':_0x19095f['id']},{})[_0x7f98('0x27')](function(){return _0x587992;});}else{return _0x587992;}})[_0x7f98('0x47')](function(_0x2196e2){logger[_0x7f98('0x2c')](_0x7f98('0x53'),_0x2196e2);throw _0x2196e2;});}return _0x587992;})[_0x7f98('0x27')](respondWithResult(_0xe20dc6,0xc9))[_0x7f98('0x47')](handleError(_0xe20dc6,null));};exports[_0x7f98('0x54')]=function(_0x4cc99b,_0x57e896){var _0x5d3860={'where':{'id':_0x4cc99b[_0x7f98('0x49')]['id']}},_0x2acf7a={};_0x2acf7a['model']=_[_0x7f98('0x35')](db[_0x7f98('0x30')][_0x7f98('0x31')]);_0x5d3860[_0x7f98('0x3a')]=_['intersection'](_0x2acf7a[_0x7f98('0x38')],qs[_0x7f98('0x39')](_0x4cc99b['query'][_0x7f98('0x39')]));_0x5d3860[_0x7f98('0x3a')]=_0x5d3860[_0x7f98('0x3a')]['length']?_0x5d3860['attributes']:_0x2acf7a[_0x7f98('0x38')];if(_0x4cc99b[_0x7f98('0x36')][_0x7f98('0x43')]){_0x5d3860[_0x7f98('0x44')]=[{'all':!![]}];}_0x5d3860=_[_0x7f98('0x41')]({},_0x5d3860,_0x4cc99b['options']);return db[_0x7f98('0x30')]['find'](_0x5d3860)[_0x7f98('0x27')](handleEntityNotFound(_0x57e896,null))[_0x7f98('0x27')](function(_0x2adac9){if(_0x2adac9){var _0x484118=_0x2adac9[_0x7f98('0x50')]({'plain':!![]});_0x484118=qs[_0x7f98('0x55')](_0x484118,['id',_0x7f98('0x56'),_0x7f98('0x57')]);_0x4cc99b['body']=_['omit'](_0x4cc99b[_0x7f98('0x4e')],['id',_0x7f98('0x56'),_0x7f98('0x57')]);return db[_0x7f98('0x30')]['create'](_[_0x7f98('0x41')](_0x484118,_0x4cc99b[_0x7f98('0x4e')]),{'include':_0x4cc99b[_0x7f98('0x36')][_0x7f98('0x43')]?[{'all':!![]}]:undefined})[_0x7f98('0x27')](function(_0x3ed8c4){var _0x428155=_0x4cc99b[_0x7f98('0x4f')]['get']({'plain':!![]});if(!_0x428155)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x428155[_0x7f98('0x58')]===_0x7f98('0x4f')){var _0x5a9205=_0x3ed8c4[_0x7f98('0x50')]({'plain':!![]});var _0x1ec981=_0x7f98('0x28');return db['UserProfileSection'][_0x7f98('0x4c')]({'where':{'name':_0x1ec981,'userProfileId':_0x428155['userProfileId']},'raw':!![]})[_0x7f98('0x27')](function(_0x3147f5){if(_0x3147f5&&_0x3147f5['autoAssociation']===0x0){return db[_0x7f98('0x29')]['create']({'name':_0x5a9205['name'],'resourceId':_0x5a9205['id'],'type':_0x3147f5[_0x7f98('0x34')],'sectionId':_0x3147f5['id']},{})[_0x7f98('0x27')](function(){return _0x3ed8c4;});}else{return _0x3ed8c4;}})[_0x7f98('0x47')](function(_0x20133c){logger[_0x7f98('0x2c')](_0x7f98('0x53'),_0x20133c);throw _0x20133c;});}return _0x3ed8c4;});}})[_0x7f98('0x27')](respondWithResult(_0x57e896,0xc9))['catch'](handleError(_0x57e896,null));};exports[_0x7f98('0x59')]=function(_0x464440,_0x4def83){if(_0x464440['body']['id']){delete _0x464440['body']['id'];}return db['Dashboard'][_0x7f98('0x4c')]({'where':{'id':_0x464440[_0x7f98('0x49')]['id']}})[_0x7f98('0x27')](handleEntityNotFound(_0x4def83,null))[_0x7f98('0x27')](saveUpdates(_0x464440[_0x7f98('0x4e')],null))[_0x7f98('0x27')](respondWithResult(_0x4def83,null))[_0x7f98('0x47')](handleError(_0x4def83,null));};exports['destroy']=function(_0x4451ee,_0x17adbe){return db[_0x7f98('0x30')][_0x7f98('0x4c')]({'where':{'id':_0x4451ee['params']['id']}})['then'](handleEntityNotFound(_0x17adbe,null))[_0x7f98('0x27')](removeEntity(_0x17adbe,null))[_0x7f98('0x47')](handleError(_0x17adbe,null));};function widgetAttributes(_0x56c75b){try{switch(_0x56c75b[_0x7f98('0x5a')]){case'iframe':return[{'name':_0x7f98('0x5b'),'value':_0x56c75b[_0x7f98('0x5b')]||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0x0]?_0x56c75b['attrs'][0x0]['value']:undefined)||_0x7f98('0x5d')}];case'custom':return[{'name':'attrPath','value':_0x56c75b[_0x7f98('0x5e')]||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0x0]?_0x56c75b['attrs'][0x0][_0x7f98('0x5f')]:undefined)||''}];case _0x7f98('0x60'):return[{'name':_0x7f98('0x61'),'value':_0x56c75b[_0x7f98('0x61')]||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b['attrs'][0x0]?_0x56c75b[_0x7f98('0x5c')][0x0][_0x7f98('0x5f')]:undefined)||_0x7f98('0x62')},{'name':'attrTimezone','value':_0x56c75b[_0x7f98('0x63')]||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0x1]?_0x56c75b[_0x7f98('0x5c')][0x1][_0x7f98('0x5f')]:undefined)||'0.00'},{'name':_0x7f98('0x64'),'value':_0x56c75b[_0x7f98('0x64')]||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0x2]?_0x56c75b[_0x7f98('0x5c')][0x2][_0x7f98('0x5f')]:undefined)||0xc}];case _0x7f98('0x65'):return[{'name':_0x7f98('0x66'),'value':_0x56c75b[_0x7f98('0x66')]||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0x0]?_0x56c75b[_0x7f98('0x5c')][0x0][_0x7f98('0x5f')]:undefined)||_0x7f98('0x67')},{'name':_0x7f98('0x68'),'value':_0x56c75b[_0x7f98('0x68')]||(_0x56c75b['attrs']&&_0x56c75b[_0x7f98('0x5c')][0x1]?_0x56c75b['attrs'][0x1][_0x7f98('0x5f')]:undefined)||[]},{'name':'attrFontSize','value':_0x56c75b[_0x7f98('0x64')]||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b['attrs'][0x2]?_0x56c75b[_0x7f98('0x5c')][0x2]['value']:undefined)||0x14},{'name':'attrChannel','value':_0x56c75b[_0x7f98('0x69')]||(_0x56c75b['attrs']&&_0x56c75b[_0x7f98('0x5c')][0x3]?_0x56c75b[_0x7f98('0x5c')][0x3][_0x7f98('0x5f')]:undefined)||_0x7f98('0x6a')},{'name':_0x7f98('0x6b'),'value':_0x56c75b[_0x7f98('0x6b')]||(_0x56c75b['attrs']&&_0x56c75b['attrs'][0x4]?_0x56c75b[_0x7f98('0x5c')][0x4][_0x7f98('0x5f')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x56c75b[_0x7f98('0x6c')]||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0x5]?_0x56c75b[_0x7f98('0x5c')][0x5][_0x7f98('0x5f')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x56c75b[_0x7f98('0x6d')]||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0x6]?_0x56c75b[_0x7f98('0x5c')][0x6][_0x7f98('0x5f')]:undefined)||''},{'name':_0x7f98('0x6e'),'value':_0x56c75b['attrOpenchannelAccounts']||(_0x56c75b['attrs']&&_0x56c75b[_0x7f98('0x5c')][0x7]?_0x56c75b['attrs'][0x7][_0x7f98('0x5f')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x56c75b[_0x7f98('0x6f')]||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0x8]?_0x56c75b['attrs'][0x8][_0x7f98('0x5f')]:undefined)||''},{'name':'attrChatWebsites','value':_0x56c75b[_0x7f98('0x70')]||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0x9]?_0x56c75b['attrs'][0x9]['value']:undefined)||''}];case'multibar-chart':case _0x7f98('0x71'):return[{'name':_0x7f98('0x72'),'value':_0x56c75b[_0x7f98('0x72')]||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0x0]?_0x56c75b[_0x7f98('0x5c')][0x0][_0x7f98('0x5f')]:undefined)||_0x7f98('0x67')},{'name':'attrSerie2','value':_0x56c75b['attrSerie2']||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0x1]?_0x56c75b['attrs'][0x1][_0x7f98('0x5f')]:undefined)||null},{'name':_0x7f98('0x73'),'value':_0x56c75b[_0x7f98('0x73')]||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0x2]?_0x56c75b['attrs'][0x2][_0x7f98('0x5f')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x56c75b[_0x7f98('0x68')]||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0x3]?_0x56c75b[_0x7f98('0x5c')][0x3]['value']:undefined)||[]},{'name':'attrChannel','value':_0x56c75b[_0x7f98('0x69')]||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0x4]?_0x56c75b[_0x7f98('0x5c')][0x4][_0x7f98('0x5f')]:undefined)||_0x7f98('0x6a')},{'name':_0x7f98('0x6b'),'value':_0x56c75b['attrEmailAccounts']||(_0x56c75b['attrs']&&_0x56c75b['attrs'][0x5]?_0x56c75b[_0x7f98('0x5c')][0x5][_0x7f98('0x5f')]:undefined)||''},{'name':_0x7f98('0x6c'),'value':_0x56c75b[_0x7f98('0x6c')]||(_0x56c75b['attrs']&&_0x56c75b[_0x7f98('0x5c')][0x6]?_0x56c75b[_0x7f98('0x5c')][0x6]['value']:undefined)||''},{'name':'attrSmsAccounts','value':_0x56c75b['attrSmsAccounts']||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0x7]?_0x56c75b[_0x7f98('0x5c')][0x7]['value']:undefined)||''},{'name':_0x7f98('0x6e'),'value':_0x56c75b['attrOpenchannelAccounts']||(_0x56c75b['attrs']&&_0x56c75b[_0x7f98('0x5c')][0x8]?_0x56c75b['attrs'][0x8]['value']:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x56c75b['attrWhatsappAccounts']||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0x9]?_0x56c75b['attrs'][0x9][_0x7f98('0x5f')]:undefined)||''},{'name':_0x7f98('0x70'),'value':_0x56c75b[_0x7f98('0x70')]||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0xa]?_0x56c75b['attrs'][0xa][_0x7f98('0x5f')]:undefined)||''}];case _0x7f98('0x74'):return[{'name':_0x7f98('0x75'),'type':_0x56c75b['reportType']||(_0x56c75b['attrs']&&_0x56c75b[_0x7f98('0x5c')][0x0]?_0x56c75b[_0x7f98('0x5c')][0x0]['type']:undefined)||null,'value':_0x56c75b[_0x7f98('0x75')]||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0x0]?_0x56c75b[_0x7f98('0x5c')][0x0][_0x7f98('0x5f')]:undefined)||null},{'name':_0x7f98('0x76'),'value':_0x56c75b[_0x7f98('0x76')]||(_0x56c75b[_0x7f98('0x5c')]&&_0x56c75b[_0x7f98('0x5c')][0x1]?_0x56c75b[_0x7f98('0x5c')][0x1][_0x7f98('0x5f')]:undefined)||0x0}];default:return[];}}catch(_0x3a896f){logger[_0x7f98('0x2c')]('widgetAttributes:\x20%s',JSON['stringify'](_0x3a896f));return[];}}exports[_0x7f98('0x77')]=function(_0xb057c7,_0x431021,_0x3c0ed8){if(_0xb057c7[_0x7f98('0x4e')]['id']){delete _0xb057c7[_0x7f98('0x4e')]['id'];}return db['Dashboard']['find']({'where':{'id':_0xb057c7[_0x7f98('0x49')]['id']}})[_0x7f98('0x27')](handleEntityNotFound(_0x431021,null))[_0x7f98('0x27')](function(_0x49fd48){if(_0x49fd48){_0xb057c7[_0x7f98('0x4e')][_0x7f98('0x78')]=_0x49fd48['id'];_0xb057c7[_0x7f98('0x4e')][_0x7f98('0x5c')]=widgetAttributes(_0xb057c7['body']);return db['DashboardItem'][_0x7f98('0x4d')](_0xb057c7[_0x7f98('0x4e')]);}})[_0x7f98('0x27')](respondWithResult(_0x431021,null))[_0x7f98('0x47')](handleError(_0x431021,null));};exports[_0x7f98('0x79')]=function(_0xb9d34e,_0x25b273,_0x5547e9){var _0x5ece9e={};var _0x1c37af={};var _0x120acc;var _0xb9052f;return db[_0x7f98('0x30')][_0x7f98('0x7a')]({'where':{'id':_0xb9d34e[_0x7f98('0x49')]['id']}})[_0x7f98('0x27')](handleEntityNotFound(_0x25b273,null))[_0x7f98('0x27')](function(_0x39a23f){if(_0x39a23f){_0x120acc=_0x39a23f;_0x1c37af[_0x7f98('0x38')]=_[_0x7f98('0x35')](db[_0x7f98('0x7b')]['rawAttributes']);_0x1c37af[_0x7f98('0x36')]=_[_0x7f98('0x35')](_0xb9d34e[_0x7f98('0x36')]);_0x1c37af[_0x7f98('0x3f')]=_['intersection'](_0x1c37af[_0x7f98('0x38')],_0x1c37af[_0x7f98('0x36')]);_0x5ece9e[_0x7f98('0x3a')]=_[_0x7f98('0x37')](_0x1c37af[_0x7f98('0x38')],qs[_0x7f98('0x39')](_0xb9d34e['query'][_0x7f98('0x39')]));_0x5ece9e[_0x7f98('0x3a')]=_0x5ece9e[_0x7f98('0x3a')][_0x7f98('0x4a')]?_0x5ece9e['attributes']:_0x1c37af['model'];_0x5ece9e[_0x7f98('0x7c')]=qs[_0x7f98('0x3d')](_0xb9d34e['query'][_0x7f98('0x3d')]);_0x5ece9e[_0x7f98('0x3e')]=qs[_0x7f98('0x3f')](_['pick'](_0xb9d34e[_0x7f98('0x36')],_0x1c37af[_0x7f98('0x3f')]));if(_0xb9d34e[_0x7f98('0x36')][_0x7f98('0x40')]){_0x5ece9e[_0x7f98('0x3e')]=_['merge'](_0x5ece9e[_0x7f98('0x3e')],{'$or':_['map'](_0x5ece9e['attributes'],function(_0x527be6){var _0x19867c={};_0x19867c[_0x527be6]={'$like':'%'+_0xb9d34e[_0x7f98('0x36')]['filter']+'%'};return _0x19867c;})});}_0x5ece9e=_[_0x7f98('0x41')]({},_0x5ece9e,_0xb9d34e[_0x7f98('0x4b')]);return _0x120acc[_0x7f98('0x79')](_0x5ece9e);}})[_0x7f98('0x27')](function(_0x42ef2a){if(_0x42ef2a){_0xb9052f=_0x42ef2a[_0x7f98('0x4a')];if(!_0xb9d34e[_0x7f98('0x36')][_0x7f98('0x3b')](_0x7f98('0x3c'))){_0x5ece9e[_0x7f98('0x1f')]=qs[_0x7f98('0x1f')](_0xb9d34e['query'][_0x7f98('0x1f')]);_0x5ece9e[_0x7f98('0x1d')]=qs[_0x7f98('0x1d')](_0xb9d34e[_0x7f98('0x36')][_0x7f98('0x1d')]);}return _0x120acc['getItems'](_0x5ece9e);}})[_0x7f98('0x27')](function(_0x23ad2c){if(_0x23ad2c){return _0x23ad2c?{'count':_0xb9052f,'rows':_0x23ad2c}:null;}})[_0x7f98('0x27')](respondWithResult(_0x25b273,null))[_0x7f98('0x47')](handleError(_0x25b273,null));};
\ No newline at end of file
+var _0x0ac7=['error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','role','autoAssociation','iframe','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrOpenchannelAccounts','web-report','reportType','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','getItems','rimraf','zip-dir','moment','bluebird','util','path','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','get','CustomDashboards','destroy','stack','name','index','Dashboard','rawAttributes','fieldName','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','type','VIRTUAL','filter','options','includeAll','findAll','rows','catch','keys','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','UserProfileResource'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x0ac7,0x138));var _0x70ac=function(_0x4b7d9f,_0x46bbbf){_0x4b7d9f=_0x4b7d9f-0x0;var _0x3155b3=_0x0ac7[_0x4b7d9f];return _0x3155b3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x70ac('0x0'));var zipdir=require(_0x70ac('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x70ac('0x2'));var BPromise=require(_0x70ac('0x3'));var Mustache=require('mustache');var util=require(_0x70ac('0x4'));var path=require(_0x70ac('0x5'));var sox=require('sox');var csv=require(_0x70ac('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x70ac('0x7'));var squel=require(_0x70ac('0x8'));var crypto=require(_0x70ac('0x9'));var jsforce=require(_0x70ac('0xa'));var deskjs=require(_0x70ac('0xb'));var toCsv=require(_0x70ac('0x6'));var querystring=require(_0x70ac('0xc'));var Papa=require(_0x70ac('0xd'));var Redis=require('ioredis');var authService=require(_0x70ac('0xe'));var qs=require(_0x70ac('0xf'));var as=require(_0x70ac('0x10'));var hardwareService=require(_0x70ac('0x11'));var logger=require(_0x70ac('0x12'))(_0x70ac('0x13'));var utils=require(_0x70ac('0x14'));var config=require(_0x70ac('0x15'));var licenseUtil=require(_0x70ac('0x16'));var db=require(_0x70ac('0x17'))['db'];config['redis']=_[_0x70ac('0x18')](config[_0x70ac('0x19')],{'host':_0x70ac('0x1a'),'port':0x18eb});var socket=require(_0x70ac('0x1b'))(new Redis(config[_0x70ac('0x19')]));require(_0x70ac('0x1c'))[_0x70ac('0x1d')](socket);function respondWithStatusCode(_0xade14c,_0x60303f){_0x60303f=_0x60303f||0xcc;return function(_0x32a70a){if(_0x32a70a){return _0xade14c[_0x70ac('0x1e')](_0x60303f);}return _0xade14c[_0x70ac('0x1f')](_0x60303f)[_0x70ac('0x20')]();};}function respondWithResult(_0x2e1b1f,_0x4febaa){_0x4febaa=_0x4febaa||0xc8;return function(_0x451f58){if(_0x451f58){return _0x2e1b1f[_0x70ac('0x1f')](_0x4febaa)[_0x70ac('0x21')](_0x451f58);}};}function respondWithFilteredResult(_0x3a5dc6,_0x9e9f52){return function(_0x449ce0){if(_0x449ce0){var _0x46d10a=typeof _0x9e9f52['offset']===_0x70ac('0x22')&&typeof _0x9e9f52[_0x70ac('0x23')]===_0x70ac('0x22');var _0x1d7769=_0x449ce0[_0x70ac('0x24')];var _0x3f1df5=_0x46d10a?0x0:_0x9e9f52[_0x70ac('0x25')];var _0x25345b=_0x46d10a?_0x449ce0[_0x70ac('0x24')]:_0x9e9f52['offset']+_0x9e9f52[_0x70ac('0x23')];var _0x299c89;if(_0x25345b>=_0x1d7769){_0x25345b=_0x1d7769;_0x299c89=0xc8;}else{_0x299c89=0xce;}_0x3a5dc6[_0x70ac('0x1f')](_0x299c89);return _0x3a5dc6[_0x70ac('0x26')](_0x70ac('0x27'),_0x3f1df5+'-'+_0x25345b+'/'+_0x1d7769)[_0x70ac('0x21')](_0x449ce0);}return null;};}function patchUpdates(_0x45f70b){return function(_0x1b43c9){try{jsonpatch[_0x70ac('0x28')](_0x1b43c9,_0x45f70b,!![]);}catch(_0x25a591){return BPromise[_0x70ac('0x29')](_0x25a591);}return _0x1b43c9['save']();};}function saveUpdates(_0x13cba6,_0x241563){return function(_0x1be015){if(_0x1be015){return _0x1be015[_0x70ac('0x2a')](_0x13cba6)[_0x70ac('0x2b')](function(_0x3f3ad1){return _0x3f3ad1;});}return null;};}function removeEntity(_0x29214e,_0x5ac1cb){return function(_0x230d17){if(_0x230d17){return _0x230d17['destroy']()['then'](function(){var _0x581cae=_0x230d17[_0x70ac('0x2c')]({'plain':!![]});var _0x1d6efa=_0x70ac('0x2d');return db['UserProfileResource'][_0x70ac('0x2e')]({'where':{'type':_0x1d6efa,'resourceId':_0x581cae['id']}})[_0x70ac('0x2b')](function(){return _0x230d17;});})['then'](function(){_0x29214e[_0x70ac('0x1f')](0xcc)[_0x70ac('0x20')]();});}};}function handleEntityNotFound(_0x4ef75a,_0x340c46){return function(_0x55fb7b){if(!_0x55fb7b){_0x4ef75a[_0x70ac('0x1e')](0x194);}return _0x55fb7b;};}function handleError(_0x32aeae,_0x206860){_0x206860=_0x206860||0x1f4;return function(_0x563252){logger['error'](_0x563252[_0x70ac('0x2f')]);if(_0x563252[_0x70ac('0x30')]){delete _0x563252['name'];}_0x32aeae[_0x70ac('0x1f')](_0x206860)['send'](_0x563252);};}exports[_0x70ac('0x31')]=function(_0xdea5fa,_0x2f8bc9){var _0x1bca59={},_0x76dfe4={},_0x1df28b={'count':0x0,'rows':[]};var _0x1cf044=_['map'](db[_0x70ac('0x32')][_0x70ac('0x33')],function(_0x593e97){return{'name':_0x593e97[_0x70ac('0x34')],'type':_0x593e97['type'][_0x70ac('0x35')]};});_0x76dfe4[_0x70ac('0x36')]=_[_0x70ac('0x37')](_0x1cf044,_0x70ac('0x30'));_0x76dfe4[_0x70ac('0x38')]=_['keys'](_0xdea5fa[_0x70ac('0x38')]);_0x76dfe4['filters']=_[_0x70ac('0x39')](_0x76dfe4[_0x70ac('0x36')],_0x76dfe4[_0x70ac('0x38')]);_0x1bca59[_0x70ac('0x3a')]=_[_0x70ac('0x39')](_0x76dfe4[_0x70ac('0x36')],qs[_0x70ac('0x3b')](_0xdea5fa[_0x70ac('0x38')]['fields']));_0x1bca59['attributes']=_0x1bca59[_0x70ac('0x3a')][_0x70ac('0x3c')]?_0x1bca59['attributes']:_0x76dfe4[_0x70ac('0x36')];if(!_0xdea5fa[_0x70ac('0x38')][_0x70ac('0x3d')](_0x70ac('0x3e'))){_0x1bca59['limit']=qs['limit'](_0xdea5fa['query'][_0x70ac('0x23')]);_0x1bca59['offset']=qs[_0x70ac('0x25')](_0xdea5fa[_0x70ac('0x38')][_0x70ac('0x25')]);}_0x1bca59[_0x70ac('0x3f')]=qs[_0x70ac('0x40')](_0xdea5fa[_0x70ac('0x38')]['sort']);_0x1bca59['where']=qs[_0x70ac('0x41')](_[_0x70ac('0x42')](_0xdea5fa['query'],_0x76dfe4['filters']),_0x1cf044);if(_0xdea5fa[_0x70ac('0x38')]['filter']){_0x1bca59[_0x70ac('0x43')]=_[_0x70ac('0x44')](_0x1bca59[_0x70ac('0x43')],{'$or':_[_0x70ac('0x37')](_0x1cf044,function(_0x1b4260){if(_0x1b4260[_0x70ac('0x45')]!==_0x70ac('0x46')){var _0x291822={};_0x291822[_0x1b4260[_0x70ac('0x30')]]={'$like':'%'+_0xdea5fa['query'][_0x70ac('0x47')]+'%'};return _0x291822;}})});}_0x1bca59=_[_0x70ac('0x44')]({},_0x1bca59,_0xdea5fa[_0x70ac('0x48')]);var _0x5bee36={'where':_0x1bca59['where']};return db[_0x70ac('0x32')][_0x70ac('0x24')](_0x5bee36)['then'](function(_0x2bb8c6){_0x1df28b['count']=_0x2bb8c6;if(_0xdea5fa[_0x70ac('0x38')][_0x70ac('0x49')]){_0x1bca59['include']=[{'all':!![]}];}return db[_0x70ac('0x32')][_0x70ac('0x4a')](_0x1bca59);})[_0x70ac('0x2b')](function(_0x1c948f){_0x1df28b[_0x70ac('0x4b')]=_0x1c948f;return _0x1df28b;})['then'](respondWithFilteredResult(_0x2f8bc9,_0x1bca59))[_0x70ac('0x4c')](handleError(_0x2f8bc9,null));};exports['show']=function(_0x594749,_0x100a08){var _0x547583={'raw':![],'where':{'id':_0x594749['params']['id']}},_0x40304c={};_0x40304c[_0x70ac('0x36')]=_[_0x70ac('0x4d')](db['Dashboard']['rawAttributes']);_0x40304c[_0x70ac('0x38')]=_[_0x70ac('0x4d')](_0x594749[_0x70ac('0x38')]);_0x40304c[_0x70ac('0x41')]=_[_0x70ac('0x39')](_0x40304c[_0x70ac('0x36')],_0x40304c[_0x70ac('0x38')]);_0x547583[_0x70ac('0x3a')]=_[_0x70ac('0x39')](_0x40304c[_0x70ac('0x36')],qs[_0x70ac('0x3b')](_0x594749['query']['fields']));_0x547583[_0x70ac('0x3a')]=_0x547583[_0x70ac('0x3a')][_0x70ac('0x3c')]?_0x547583[_0x70ac('0x3a')]:_0x40304c[_0x70ac('0x36')];if(_0x594749['query']['includeAll']){_0x547583[_0x70ac('0x4e')]=[{'all':!![]}];}_0x547583=_[_0x70ac('0x44')]({},_0x547583,_0x594749[_0x70ac('0x48')]);return db[_0x70ac('0x32')][_0x70ac('0x4f')](_0x547583)['then'](handleEntityNotFound(_0x100a08,null))[_0x70ac('0x2b')](respondWithResult(_0x100a08,null))[_0x70ac('0x4c')](handleError(_0x100a08,null));};exports[_0x70ac('0x50')]=function(_0x1fa39e,_0x2f863e){return db['Dashboard'][_0x70ac('0x50')](_0x1fa39e[_0x70ac('0x51')],{})[_0x70ac('0x2b')](function(_0x3205bc){var _0xfa6bc0=_0x1fa39e[_0x70ac('0x52')][_0x70ac('0x2c')]({'plain':!![]});if(!_0xfa6bc0)throw new Error(_0x70ac('0x53'));if(_0xfa6bc0['role']===_0x70ac('0x52')){var _0x35ac6b=_0x3205bc[_0x70ac('0x2c')]({'plain':!![]});var _0x104a5b=_0x70ac('0x2d');return db[_0x70ac('0x54')]['find']({'where':{'name':_0x104a5b,'userProfileId':_0xfa6bc0[_0x70ac('0x55')]},'raw':!![]})['then'](function(_0x36e6e5){if(_0x36e6e5&&_0x36e6e5['autoAssociation']===0x0){return db[_0x70ac('0x56')][_0x70ac('0x50')]({'name':_0x35ac6b[_0x70ac('0x30')],'resourceId':_0x35ac6b['id'],'type':_0x36e6e5['name'],'sectionId':_0x36e6e5['id']},{})[_0x70ac('0x2b')](function(){return _0x3205bc;});}else{return _0x3205bc;}})[_0x70ac('0x4c')](function(_0x5448ad){logger[_0x70ac('0x57')](_0x70ac('0x58'),_0x5448ad);throw _0x5448ad;});}return _0x3205bc;})['then'](respondWithResult(_0x2f863e,0xc9))[_0x70ac('0x4c')](handleError(_0x2f863e,null));};exports[_0x70ac('0x59')]=function(_0x18a6c1,_0x53d6c5){var _0xbf479d={'where':{'id':_0x18a6c1[_0x70ac('0x5a')]['id']}},_0x996c5c={};_0x996c5c[_0x70ac('0x36')]=_[_0x70ac('0x4d')](db[_0x70ac('0x32')]['rawAttributes']);_0xbf479d['attributes']=_[_0x70ac('0x39')](_0x996c5c[_0x70ac('0x36')],qs[_0x70ac('0x3b')](_0x18a6c1[_0x70ac('0x38')][_0x70ac('0x3b')]));_0xbf479d[_0x70ac('0x3a')]=_0xbf479d[_0x70ac('0x3a')][_0x70ac('0x3c')]?_0xbf479d[_0x70ac('0x3a')]:_0x996c5c['model'];if(_0x18a6c1[_0x70ac('0x38')]['includeAll']){_0xbf479d[_0x70ac('0x4e')]=[{'all':!![]}];}_0xbf479d=_[_0x70ac('0x44')]({},_0xbf479d,_0x18a6c1[_0x70ac('0x48')]);return db['Dashboard'][_0x70ac('0x4f')](_0xbf479d)[_0x70ac('0x2b')](handleEntityNotFound(_0x53d6c5,null))[_0x70ac('0x2b')](function(_0x4a8b96){if(_0x4a8b96){var _0x24de4a=_0x4a8b96[_0x70ac('0x2c')]({'plain':!![]});_0x24de4a=qs[_0x70ac('0x5b')](_0x24de4a,['id',_0x70ac('0x5c'),_0x70ac('0x5d')]);_0x18a6c1[_0x70ac('0x51')]=_[_0x70ac('0x5b')](_0x18a6c1['body'],['id',_0x70ac('0x5c'),_0x70ac('0x5d')]);return db[_0x70ac('0x32')][_0x70ac('0x50')](_[_0x70ac('0x44')](_0x24de4a,_0x18a6c1[_0x70ac('0x51')]),{'include':_0x18a6c1['query'][_0x70ac('0x49')]?[{'all':!![]}]:undefined})[_0x70ac('0x2b')](function(_0x3a3003){var _0x39d7cd=_0x18a6c1['user']['get']({'plain':!![]});if(!_0x39d7cd)throw new Error(_0x70ac('0x53'));if(_0x39d7cd[_0x70ac('0x5e')]===_0x70ac('0x52')){var _0x83266=_0x3a3003['get']({'plain':!![]});var _0x114273=_0x70ac('0x2d');return db[_0x70ac('0x54')][_0x70ac('0x4f')]({'where':{'name':_0x114273,'userProfileId':_0x39d7cd[_0x70ac('0x55')]},'raw':!![]})[_0x70ac('0x2b')](function(_0x27eec1){if(_0x27eec1&&_0x27eec1[_0x70ac('0x5f')]===0x0){return db['UserProfileResource'][_0x70ac('0x50')]({'name':_0x83266[_0x70ac('0x30')],'resourceId':_0x83266['id'],'type':_0x27eec1['name'],'sectionId':_0x27eec1['id']},{})[_0x70ac('0x2b')](function(){return _0x3a3003;});}else{return _0x3a3003;}})['catch'](function(_0x21868b){logger[_0x70ac('0x57')](_0x70ac('0x58'),_0x21868b);throw _0x21868b;});}return _0x3a3003;});}})[_0x70ac('0x2b')](respondWithResult(_0x53d6c5,0xc9))[_0x70ac('0x4c')](handleError(_0x53d6c5,null));};exports[_0x70ac('0x2a')]=function(_0xc089cb,_0x42191e){if(_0xc089cb['body']['id']){delete _0xc089cb[_0x70ac('0x51')]['id'];}return db['Dashboard'][_0x70ac('0x4f')]({'where':{'id':_0xc089cb['params']['id']}})[_0x70ac('0x2b')](handleEntityNotFound(_0x42191e,null))['then'](saveUpdates(_0xc089cb[_0x70ac('0x51')],null))[_0x70ac('0x2b')](respondWithResult(_0x42191e,null))[_0x70ac('0x4c')](handleError(_0x42191e,null));};exports[_0x70ac('0x2e')]=function(_0x311c5b,_0x2547f9){return db['Dashboard']['find']({'where':{'id':_0x311c5b[_0x70ac('0x5a')]['id']}})[_0x70ac('0x2b')](handleEntityNotFound(_0x2547f9,null))[_0x70ac('0x2b')](removeEntity(_0x2547f9,null))['catch'](handleError(_0x2547f9,null));};function widgetAttributes(_0x3b00b8){try{switch(_0x3b00b8[_0x70ac('0x45')]){case _0x70ac('0x60'):return[{'name':_0x70ac('0x61'),'value':_0x3b00b8[_0x70ac('0x61')]||(_0x3b00b8['attrs']&&_0x3b00b8[_0x70ac('0x62')][0x0]?_0x3b00b8[_0x70ac('0x62')][0x0][_0x70ac('0x63')]:undefined)||_0x70ac('0x64')}];case'custom':return[{'name':'attrPath','value':_0x3b00b8[_0x70ac('0x65')]||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x0]?_0x3b00b8[_0x70ac('0x62')][0x0][_0x70ac('0x63')]:undefined)||''}];case _0x70ac('0x66'):return[{'name':_0x70ac('0x67'),'value':_0x3b00b8[_0x70ac('0x67')]||(_0x3b00b8['attrs']&&_0x3b00b8[_0x70ac('0x62')][0x0]?_0x3b00b8[_0x70ac('0x62')][0x0][_0x70ac('0x63')]:undefined)||_0x70ac('0x68')},{'name':_0x70ac('0x69'),'value':_0x3b00b8[_0x70ac('0x69')]||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x1]?_0x3b00b8[_0x70ac('0x62')][0x1][_0x70ac('0x63')]:undefined)||_0x70ac('0x6a')},{'name':_0x70ac('0x6b'),'value':_0x3b00b8[_0x70ac('0x6b')]||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x2]?_0x3b00b8['attrs'][0x2][_0x70ac('0x63')]:undefined)||0xc}];case _0x70ac('0x6c'):return[{'name':'attrMetric','value':_0x3b00b8[_0x70ac('0x6d')]||(_0x3b00b8['attrs']&&_0x3b00b8[_0x70ac('0x62')][0x0]?_0x3b00b8[_0x70ac('0x62')][0x0][_0x70ac('0x63')]:undefined)||_0x70ac('0x6e')},{'name':'attrVoiceQueues','value':_0x3b00b8[_0x70ac('0x6f')]||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x1]?_0x3b00b8[_0x70ac('0x62')][0x1][_0x70ac('0x63')]:undefined)||[]},{'name':_0x70ac('0x6b'),'value':_0x3b00b8[_0x70ac('0x6b')]||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x2]?_0x3b00b8[_0x70ac('0x62')][0x2][_0x70ac('0x63')]:undefined)||0x14},{'name':_0x70ac('0x70'),'value':_0x3b00b8[_0x70ac('0x70')]||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x3]?_0x3b00b8[_0x70ac('0x62')][0x3]['value']:undefined)||_0x70ac('0x71')},{'name':_0x70ac('0x72'),'value':_0x3b00b8[_0x70ac('0x72')]||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x4]?_0x3b00b8[_0x70ac('0x62')][0x4][_0x70ac('0x63')]:undefined)||''},{'name':_0x70ac('0x73'),'value':_0x3b00b8[_0x70ac('0x73')]||(_0x3b00b8['attrs']&&_0x3b00b8[_0x70ac('0x62')][0x5]?_0x3b00b8[_0x70ac('0x62')][0x5][_0x70ac('0x63')]:undefined)||''},{'name':_0x70ac('0x74'),'value':_0x3b00b8[_0x70ac('0x74')]||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x6]?_0x3b00b8[_0x70ac('0x62')][0x6]['value']:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x3b00b8['attrOpenchannelAccounts']||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8['attrs'][0x7]?_0x3b00b8[_0x70ac('0x62')][0x7][_0x70ac('0x63')]:undefined)||''},{'name':_0x70ac('0x75'),'value':_0x3b00b8[_0x70ac('0x75')]||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x8]?_0x3b00b8['attrs'][0x8][_0x70ac('0x63')]:undefined)||''},{'name':'attrChatWebsites','value':_0x3b00b8[_0x70ac('0x76')]||(_0x3b00b8['attrs']&&_0x3b00b8[_0x70ac('0x62')][0x9]?_0x3b00b8[_0x70ac('0x62')][0x9][_0x70ac('0x63')]:undefined)||''}];case _0x70ac('0x77'):case _0x70ac('0x78'):return[{'name':_0x70ac('0x79'),'value':_0x3b00b8[_0x70ac('0x79')]||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x0]?_0x3b00b8['attrs'][0x0][_0x70ac('0x63')]:undefined)||'total'},{'name':_0x70ac('0x7a'),'value':_0x3b00b8[_0x70ac('0x7a')]||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x1]?_0x3b00b8[_0x70ac('0x62')][0x1]['value']:undefined)||null},{'name':'attrSerie3','value':_0x3b00b8[_0x70ac('0x7b')]||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x2]?_0x3b00b8[_0x70ac('0x62')][0x2]['value']:undefined)||null},{'name':'attrVoiceQueues','value':_0x3b00b8['attrVoiceQueues']||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x3]?_0x3b00b8[_0x70ac('0x62')][0x3][_0x70ac('0x63')]:undefined)||[]},{'name':_0x70ac('0x70'),'value':_0x3b00b8[_0x70ac('0x70')]||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x4]?_0x3b00b8[_0x70ac('0x62')][0x4][_0x70ac('0x63')]:undefined)||_0x70ac('0x71')},{'name':'attrEmailAccounts','value':_0x3b00b8['attrEmailAccounts']||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x5]?_0x3b00b8[_0x70ac('0x62')][0x5][_0x70ac('0x63')]:undefined)||''},{'name':_0x70ac('0x73'),'value':_0x3b00b8[_0x70ac('0x73')]||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x6]?_0x3b00b8[_0x70ac('0x62')][0x6][_0x70ac('0x63')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x3b00b8['attrSmsAccounts']||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8['attrs'][0x7]?_0x3b00b8[_0x70ac('0x62')][0x7][_0x70ac('0x63')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x3b00b8[_0x70ac('0x7c')]||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x8]?_0x3b00b8['attrs'][0x8]['value']:undefined)||''},{'name':_0x70ac('0x75'),'value':_0x3b00b8['attrWhatsappAccounts']||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x9]?_0x3b00b8[_0x70ac('0x62')][0x9][_0x70ac('0x63')]:undefined)||''},{'name':_0x70ac('0x76'),'value':_0x3b00b8[_0x70ac('0x76')]||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0xa]?_0x3b00b8[_0x70ac('0x62')][0xa][_0x70ac('0x63')]:undefined)||''}];case _0x70ac('0x7d'):return[{'name':'attrReport','type':_0x3b00b8[_0x70ac('0x7e')]||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x0]?_0x3b00b8[_0x70ac('0x62')][0x0][_0x70ac('0x45')]:undefined)||null,'value':_0x3b00b8[_0x70ac('0x7f')]||(_0x3b00b8['attrs']&&_0x3b00b8[_0x70ac('0x62')][0x0]?_0x3b00b8[_0x70ac('0x62')][0x0][_0x70ac('0x63')]:undefined)||null},{'name':_0x70ac('0x80'),'value':_0x3b00b8[_0x70ac('0x80')]||(_0x3b00b8[_0x70ac('0x62')]&&_0x3b00b8[_0x70ac('0x62')][0x1]?_0x3b00b8[_0x70ac('0x62')][0x1][_0x70ac('0x63')]:undefined)||0x0}];default:return[];}}catch(_0x223430){logger['error'](_0x70ac('0x81'),JSON[_0x70ac('0x82')](_0x223430));return[];}}exports[_0x70ac('0x83')]=function(_0x489c61,_0x19d292,_0x1b0264){if(_0x489c61[_0x70ac('0x51')]['id']){delete _0x489c61['body']['id'];}return db[_0x70ac('0x32')][_0x70ac('0x4f')]({'where':{'id':_0x489c61['params']['id']}})['then'](handleEntityNotFound(_0x19d292,null))['then'](function(_0x1d028c){if(_0x1d028c){_0x489c61[_0x70ac('0x51')]['DashboardId']=_0x1d028c['id'];_0x489c61[_0x70ac('0x51')][_0x70ac('0x62')]=widgetAttributes(_0x489c61[_0x70ac('0x51')]);return db['DashboardItem']['create'](_0x489c61[_0x70ac('0x51')]);}})[_0x70ac('0x2b')](respondWithResult(_0x19d292,null))[_0x70ac('0x4c')](handleError(_0x19d292,null));};exports[_0x70ac('0x84')]=function(_0x5e974d,_0x4efe2e,_0x3a78e6){var _0x356ba8={};var _0x33ec6c={};var _0x17504c;var _0x3eb376;return db[_0x70ac('0x32')]['findOne']({'where':{'id':_0x5e974d[_0x70ac('0x5a')]['id']}})['then'](handleEntityNotFound(_0x4efe2e,null))[_0x70ac('0x2b')](function(_0x577e59){if(_0x577e59){_0x17504c=_0x577e59;_0x33ec6c[_0x70ac('0x36')]=_[_0x70ac('0x4d')](db['DashboardItem']['rawAttributes']);_0x33ec6c['query']=_['keys'](_0x5e974d[_0x70ac('0x38')]);_0x33ec6c[_0x70ac('0x41')]=_[_0x70ac('0x39')](_0x33ec6c[_0x70ac('0x36')],_0x33ec6c[_0x70ac('0x38')]);_0x356ba8[_0x70ac('0x3a')]=_['intersection'](_0x33ec6c[_0x70ac('0x36')],qs[_0x70ac('0x3b')](_0x5e974d['query']['fields']));_0x356ba8[_0x70ac('0x3a')]=_0x356ba8['attributes'][_0x70ac('0x3c')]?_0x356ba8[_0x70ac('0x3a')]:_0x33ec6c[_0x70ac('0x36')];_0x356ba8[_0x70ac('0x3f')]=qs['sort'](_0x5e974d[_0x70ac('0x38')][_0x70ac('0x40')]);_0x356ba8['where']=qs[_0x70ac('0x41')](_[_0x70ac('0x42')](_0x5e974d['query'],_0x33ec6c['filters']));if(_0x5e974d[_0x70ac('0x38')][_0x70ac('0x47')]){_0x356ba8[_0x70ac('0x43')]=_[_0x70ac('0x44')](_0x356ba8[_0x70ac('0x43')],{'$or':_['map'](_0x356ba8[_0x70ac('0x3a')],function(_0x2b1f3f){var _0x26e27b={};_0x26e27b[_0x2b1f3f]={'$like':'%'+_0x5e974d[_0x70ac('0x38')][_0x70ac('0x47')]+'%'};return _0x26e27b;})});}_0x356ba8=_[_0x70ac('0x44')]({},_0x356ba8,_0x5e974d['options']);return _0x17504c['getItems'](_0x356ba8);}})[_0x70ac('0x2b')](function(_0xb2cbf6){if(_0xb2cbf6){_0x3eb376=_0xb2cbf6[_0x70ac('0x3c')];if(!_0x5e974d[_0x70ac('0x38')]['hasOwnProperty'](_0x70ac('0x3e'))){_0x356ba8['limit']=qs[_0x70ac('0x23')](_0x5e974d['query'][_0x70ac('0x23')]);_0x356ba8[_0x70ac('0x25')]=qs[_0x70ac('0x25')](_0x5e974d[_0x70ac('0x38')][_0x70ac('0x25')]);}return _0x17504c[_0x70ac('0x84')](_0x356ba8);}})[_0x70ac('0x2b')](function(_0x37ecbb){if(_0x37ecbb){return _0x37ecbb?{'count':_0x3eb376,'rows':_0x37ecbb}:null;}})[_0x70ac('0x2b')](respondWithResult(_0x4efe2e,null))[_0x70ac('0x4c')](handleError(_0x4efe2e,null));};
\ No newline at end of file
index e61b187..12f27f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x254b=['events','../../mysqldb','Dashboard','setMaxListeners','save','remove','emit','hook'];(function(_0xab92b5,_0x184d79){var _0x3a758c=function(_0x3eae35){while(--_0x3eae35){_0xab92b5['push'](_0xab92b5['shift']());}};_0x3a758c(++_0x184d79);}(_0x254b,0x110));var _0xb254=function(_0x22e9fe,_0x3d019f){_0x22e9fe=_0x22e9fe-0x0;var _0x47cd19=_0x254b[_0x22e9fe];return _0x47cd19;};'use strict';var EventEmitter=require(_0xb254('0x0'));var Dashboard=require(_0xb254('0x1'))['db'][_0xb254('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xb254('0x3')](0x0);var events={'afterCreate':_0xb254('0x4'),'afterUpdate':'update','afterDestroy':_0xb254('0x5')};function emitEvent(_0x127f24){return function(_0x1fb9b7,_0x2355b4,_0x28b425){DashboardEvents['emit'](_0x127f24+':'+_0x1fb9b7['id'],_0x1fb9b7);DashboardEvents[_0xb254('0x6')](_0x127f24,_0x1fb9b7);_0x28b425(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0xb254('0x7')](e,emitEvent(event));}}module['exports']=DashboardEvents;
\ No newline at end of file
+var _0x4093=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','Dashboard'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x4093,0x18d));var _0x3409=function(_0x353bfb,_0x1d69f1){_0x353bfb=_0x353bfb-0x0;var _0x54f72d=_0x4093[_0x353bfb];return _0x54f72d;};'use strict';var EventEmitter=require(_0x3409('0x0'));var Dashboard=require(_0x3409('0x1'))['db'][_0x3409('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x3409('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3409('0x4'),'afterDestroy':_0x3409('0x5')};function emitEvent(_0x4b44b8){return function(_0x10bca8,_0x414826,_0x34e58e){DashboardEvents[_0x3409('0x6')](_0x4b44b8+':'+_0x10bca8['id'],_0x10bca8);DashboardEvents[_0x3409('0x6')](_0x4b44b8,_0x10bca8);_0x34e58e(null);};}for(var e in events){if(events[_0x3409('0x7')](e)){var event=events[e];Dashboard[_0x3409('0x8')](e,emitEvent(event));}}module[_0x3409('0x9')]=DashboardEvents;
\ No newline at end of file
index fef822b..c7cc1b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa58e=['lodash','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','exports','Dashboard','dashboards'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa58e,0x172));var _0xea58=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0xa58e[_0x27af45];return _0x18df21;};'use strict';var _=require(_0xea58('0x0'));var util=require('util');var logger=require(_0xea58('0x1'))(_0xea58('0x2'));var moment=require(_0xea58('0x3'));var BPromise=require('bluebird');var rp=require(_0xea58('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xea58('0x5'));var config=require(_0xea58('0x6'));var attributes=require('./dashboard.attributes');module[_0xea58('0x7')]=function(_0x73620c,_0x4e4abc){return _0x73620c['define'](_0xea58('0x8'),attributes,{'tableName':_0xea58('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4344=['path','rimraf','../../config/environment','./dashboard.attributes','exports','define','Dashboard','dashboards','lodash','../../config/logger','bluebird','request-promise'];(function(_0x469852,_0x532e8c){var _0xa844b9=function(_0x511046){while(--_0x511046){_0x469852['push'](_0x469852['shift']());}};_0xa844b9(++_0x532e8c);}(_0x4344,0x170));var _0x4434=function(_0x4293f4,_0x389b80){_0x4293f4=_0x4293f4-0x0;var _0x478c0a=_0x4344[_0x4293f4];return _0x478c0a;};'use strict';var _=require(_0x4434('0x0'));var util=require('util');var logger=require(_0x4434('0x1'))('api');var moment=require('moment');var BPromise=require(_0x4434('0x2'));var rp=require(_0x4434('0x3'));var fs=require('fs');var path=require(_0x4434('0x4'));var rimraf=require(_0x4434('0x5'));var config=require(_0x4434('0x6'));var attributes=require(_0x4434('0x7'));module[_0x4434('0x8')]=function(_0x4aaff2,_0x3b98d4){return _0x4aaff2[_0x4434('0x9')](_0x4434('0xa'),attributes,{'tableName':_0x4434('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ba3d1e4..54edded 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7895=['lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','http','redis','localhost','socket.io-emitter','./dashboard.socket','then','info','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','error','code','message','result','catch'];(function(_0x3a328b,_0x441cd9){var _0x312fd9=function(_0x438021){while(--_0x438021){_0x3a328b['push'](_0x3a328b['shift']());}};_0x312fd9(++_0x441cd9);}(_0x7895,0x150));var _0x5789=function(_0x32b95a,_0x55a63d){_0x32b95a=_0x32b95a-0x0;var _0x4f74f1=_0x7895[_0x32b95a];return _0x4f74f1;};'use strict';var _=require(_0x5789('0x0'));var util=require('util');var moment=require(_0x5789('0x1'));var BPromise=require(_0x5789('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5789('0x3'));var db=require(_0x5789('0x4'))['db'];var utils=require(_0x5789('0x5'));var logger=require('../../config/logger')(_0x5789('0x6'));var config=require(_0x5789('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x5789('0x8')]({'port':0x232a});config['redis']=_['defaults'](config[_0x5789('0x9')],{'host':_0x5789('0xa'),'port':0x18eb});var socket=require(_0x5789('0xb'))(new Redis(config[_0x5789('0x9')]));require(_0x5789('0xc'))['register'](socket);function respondWithRpcPromise(_0x387b85,_0x34e94b,_0x15d32c){return new BPromise(function(_0xbe4202,_0x5e4105){return client['request'](_0x387b85,_0x15d32c)[_0x5789('0xd')](function(_0x5af3ba){logger[_0x5789('0xe')](_0x5789('0xf'),_0x34e94b,_0x5789('0x10'));logger[_0x5789('0x11')](_0x5789('0x12'),_0x34e94b,_0x5789('0x10'),JSON['stringify'](_0x5af3ba));if(_0x5af3ba[_0x5789('0x13')]){if(_0x5af3ba['error'][_0x5789('0x14')]===0x1f4){logger[_0x5789('0x13')](_0x5789('0xf'),_0x34e94b,_0x5af3ba[_0x5789('0x13')]['message']);return _0x5e4105(_0x5af3ba[_0x5789('0x13')][_0x5789('0x15')]);}logger[_0x5789('0x13')](_0x5789('0xf'),_0x34e94b,_0x5af3ba[_0x5789('0x13')][_0x5789('0x15')]);return _0xbe4202(_0x5af3ba[_0x5789('0x13')][_0x5789('0x15')]);}else{logger[_0x5789('0xe')](_0x5789('0xf'),_0x34e94b,'request\x20sent');_0xbe4202(_0x5af3ba[_0x5789('0x16')][_0x5789('0x15')]);}})[_0x5789('0x17')](function(_0x3071b2){logger[_0x5789('0x13')](_0x5789('0xf'),_0x34e94b,_0x3071b2);_0x5e4105(_0x3071b2);});});}
\ No newline at end of file
+var _0x2b18=['redis','socket.io-emitter','./dashboard.socket','register','then','info','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','code','Dashboard,\x20%s,\x20%s','message','result','lodash','util','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','defaults'];(function(_0x3f06e3,_0x3edcdd){var _0x1e5063=function(_0x483b16){while(--_0x483b16){_0x3f06e3['push'](_0x3f06e3['shift']());}};_0x1e5063(++_0x3edcdd);}(_0x2b18,0xde));var _0x82b1=function(_0x1a5b78,_0x40090a){_0x1a5b78=_0x1a5b78-0x0;var _0x9f9569=_0x2b18[_0x1a5b78];return _0x9f9569;};'use strict';var _=require(_0x82b1('0x0'));var util=require(_0x82b1('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x82b1('0x2'));var fs=require('fs');var Redis=require(_0x82b1('0x3'));var db=require(_0x82b1('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x82b1('0x5'));var jayson=require(_0x82b1('0x6'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x82b1('0x7')](config[_0x82b1('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x82b1('0x9'))(new Redis(config[_0x82b1('0x8')]));require(_0x82b1('0xa'))[_0x82b1('0xb')](socket);function respondWithRpcPromise(_0x203339,_0x142a2b,_0x18f0fb){return new BPromise(function(_0x47d16f,_0x23a6d0){return client['request'](_0x203339,_0x18f0fb)[_0x82b1('0xc')](function(_0x91b491){logger[_0x82b1('0xd')]('Dashboard,\x20%s,\x20%s',_0x142a2b,_0x82b1('0xe'));logger[_0x82b1('0xf')](_0x82b1('0x10'),_0x142a2b,_0x82b1('0xe'),JSON[_0x82b1('0x11')](_0x91b491));if(_0x91b491['error']){if(_0x91b491[_0x82b1('0x12')][_0x82b1('0x13')]===0x1f4){logger['error'](_0x82b1('0x14'),_0x142a2b,_0x91b491[_0x82b1('0x12')]['message']);return _0x23a6d0(_0x91b491[_0x82b1('0x12')][_0x82b1('0x15')]);}logger[_0x82b1('0x12')](_0x82b1('0x14'),_0x142a2b,_0x91b491[_0x82b1('0x12')]['message']);return _0x47d16f(_0x91b491[_0x82b1('0x12')]['message']);}else{logger[_0x82b1('0xd')](_0x82b1('0x14'),_0x142a2b,_0x82b1('0xe'));_0x47d16f(_0x91b491[_0x82b1('0x16')][_0x82b1('0x15')]);}})['catch'](function(_0x195415){logger['error']('Dashboard,\x20%s,\x20%s',_0x142a2b,_0x195415);_0x23a6d0(_0x195415);});});}
\ No newline at end of file
index 02e4265..be854f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccd4=['length','dashboard:','remove','update','emit','register'];(function(_0x212000,_0x248ef4){var _0x37a58e=function(_0x34e646){while(--_0x34e646){_0x212000['push'](_0x212000['shift']());}};_0x37a58e(++_0x248ef4);}(_0xccd4,0x19a));var _0x4ccd=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xccd4[_0x47a7d0];return _0xb9bd08;};'use strict';var DashboardEvents=require('./dashboard.events');var events=['save',_0x4ccd('0x0'),_0x4ccd('0x1')];function createListener(_0xdc4cc7,_0x9f3955){return function(_0x36baca){_0x9f3955[_0x4ccd('0x2')](_0xdc4cc7,_0x36baca);};}function removeListener(_0x2070b4,_0x7279e1){return function(){DashboardEvents['removeListener'](_0x2070b4,_0x7279e1);};}exports[_0x4ccd('0x3')]=function(_0x198645){for(var _0x189442=0x0,_0x5012f2=events[_0x4ccd('0x4')];_0x189442<_0x5012f2;_0x189442++){var _0x431ed7=events[_0x189442];var _0x5a5a83=createListener(_0x4ccd('0x5')+_0x431ed7,_0x198645);DashboardEvents['on'](_0x431ed7,_0x5a5a83);}};
\ No newline at end of file
+var _0x1552=['remove','removeListener','register','length','dashboard:','save'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0x1552,0x1d3));var _0x2155=function(_0x5cebc3,_0x3f0d41){_0x5cebc3=_0x5cebc3-0x0;var _0x595fa5=_0x1552[_0x5cebc3];return _0x595fa5;};'use strict';var DashboardEvents=require('./dashboard.events');var events=[_0x2155('0x0'),_0x2155('0x1'),'update'];function createListener(_0x4c5fe2,_0x471b38){return function(_0x4f991f){_0x471b38['emit'](_0x4c5fe2,_0x4f991f);};}function removeListener(_0x1cd0a0,_0x49c044){return function(){DashboardEvents[_0x2155('0x2')](_0x1cd0a0,_0x49c044);};}exports[_0x2155('0x3')]=function(_0x29d32e){for(var _0x47c2aa=0x0,_0x5c1146=events[_0x2155('0x4')];_0x47c2aa<_0x5c1146;_0x47c2aa++){var _0x39d69f=events[_0x47c2aa];var _0x20f46a=createListener(_0x2155('0x5')+_0x39d69f,_0x29d32e);DashboardEvents['on'](_0x39d69f,_0x20f46a);}};
\ No newline at end of file
index b06789f..b50a367 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c2a=['index','get','/:id','isAuthenticated','/:id/items','getItems','post','addItem','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8c2a,0x9f));var _0xa8c2=function(_0x3e0e6c,_0x4757cd){_0x3e0e6c=_0x3e0e6c-0x0;var _0xad2be9=_0x8c2a[_0x3e0e6c];return _0xad2be9;};'use strict';var multer=require(_0xa8c2('0x0'));var util=require(_0xa8c2('0x1'));var path=require(_0xa8c2('0x2'));var timeout=require(_0xa8c2('0x3'));var express=require(_0xa8c2('0x4'));var router=express[_0xa8c2('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xa8c2('0x6'));var interaction=require(_0xa8c2('0x7'));var config=require(_0xa8c2('0x8'));var controller=require('./dashboard.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xa8c2('0x9')]);router[_0xa8c2('0xa')](_0xa8c2('0xb'),auth[_0xa8c2('0xc')](),controller['show']);router[_0xa8c2('0xa')](_0xa8c2('0xd'),auth['isAuthenticated'](),controller[_0xa8c2('0xe')]);router[_0xa8c2('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/clone',auth[_0xa8c2('0xc')](),controller['clone']);router[_0xa8c2('0xf')](_0xa8c2('0xd'),auth[_0xa8c2('0xc')](),controller[_0xa8c2('0x10')]);router[_0xa8c2('0x11')]('/:id',auth[_0xa8c2('0xc')](),controller[_0xa8c2('0x12')]);router[_0xa8c2('0x13')](_0xa8c2('0xb'),auth[_0xa8c2('0xc')](),controller[_0xa8c2('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x9b91=['show','/:id/items','post','create','/:id/clone','put','delete','destroy','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','get','isAuthenticated','index','/:id'];(function(_0x1ee351,_0x54261b){var _0x245aaf=function(_0x3e4b65){while(--_0x3e4b65){_0x1ee351['push'](_0x1ee351['shift']());}};_0x245aaf(++_0x54261b);}(_0x9b91,0x1d6));var _0x19b9=function(_0x383c94,_0x2c7402){_0x383c94=_0x383c94-0x0;var _0x149b61=_0x9b91[_0x383c94];return _0x149b61;};'use strict';var multer=require('multer');var util=require(_0x19b9('0x0'));var path=require(_0x19b9('0x1'));var timeout=require(_0x19b9('0x2'));var express=require(_0x19b9('0x3'));var router=express['Router']();var fs_extra=require(_0x19b9('0x4'));var auth=require(_0x19b9('0x5'));var interaction=require(_0x19b9('0x6'));var config=require(_0x19b9('0x7'));var controller=require(_0x19b9('0x8'));router[_0x19b9('0x9')]('/',auth[_0x19b9('0xa')](),controller[_0x19b9('0xb')]);router[_0x19b9('0x9')](_0x19b9('0xc'),auth[_0x19b9('0xa')](),controller[_0x19b9('0xd')]);router[_0x19b9('0x9')](_0x19b9('0xe'),auth[_0x19b9('0xa')](),controller['getItems']);router[_0x19b9('0xf')]('/',auth[_0x19b9('0xa')](),controller[_0x19b9('0x10')]);router[_0x19b9('0xf')](_0x19b9('0x11'),auth[_0x19b9('0xa')](),controller['clone']);router['post'](_0x19b9('0xe'),auth[_0x19b9('0xa')](),controller['addItem']);router[_0x19b9('0x12')](_0x19b9('0xc'),auth[_0x19b9('0xa')](),controller['update']);router[_0x19b9('0x13')](_0x19b9('0xc'),auth[_0x19b9('0xa')](),controller[_0x19b9('0x14')]);module['exports']=router;
\ No newline at end of file
index 622c247..93b9655 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f8a=['parse','getDataValue','attrs','setDataValue','stringify','INTEGER','#ffffff','sequelize','squel','lodash','exports','STRING','TEXT','long'];(function(_0x4df6f9,_0x44bd65){var _0x4b1a73=function(_0xf5adb7){while(--_0xf5adb7){_0x4df6f9['push'](_0x4df6f9['shift']());}};_0x4b1a73(++_0x44bd65);}(_0x3f8a,0x1d5));var _0xa3f8=function(_0xe2b6d3,_0x3b0d10){_0xe2b6d3=_0xe2b6d3-0x0;var _0x34aa0b=_0x3f8a[_0xe2b6d3];return _0x34aa0b;};'use strict';var Sequelize=require(_0xa3f8('0x0'));var squel=require(_0xa3f8('0x1'));var _=require(_0xa3f8('0x2'));module[_0xa3f8('0x3')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xa3f8('0x4')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0xa3f8('0x5')](_0xa3f8('0x6')),'get':function(){try{return JSON[_0xa3f8('0x7')](this[_0xa3f8('0x8')](_0xa3f8('0x9')));}catch(_0x39d2e4){return[];}},'set':function(_0x471464){try{this[_0xa3f8('0xa')](_0xa3f8('0x9'),JSON[_0xa3f8('0xb')](_0x471464));}catch(_0x268332){this[_0xa3f8('0xa')](_0xa3f8('0x9'),JSON[_0xa3f8('0xb')]([]));}}},'sizeX':{'type':Sequelize[_0xa3f8('0xc')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0xa3f8('0xc')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize['INTEGER']},'col':{'type':Sequelize[_0xa3f8('0xc')]},'background':{'type':Sequelize[_0xa3f8('0x4')],'allowNull':![],'defaultValue':_0xa3f8('0xd'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0xa3f8('0x4')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0xa3f8('0x4')]},'titleFontSize':{'type':Sequelize[_0xa3f8('0xc')],'defaultValue':0xc}};
\ No newline at end of file
+var _0x1623=['attrs','setDataValue','stringify','INTEGER','#ffffff','#2196f3','sequelize','exports','STRING','TEXT','long'];(function(_0x57cc22,_0x2d351f){var _0x6f7bdc=function(_0x4935b5){while(--_0x4935b5){_0x57cc22['push'](_0x57cc22['shift']());}};_0x6f7bdc(++_0x2d351f);}(_0x1623,0xab));var _0x3162=function(_0xd56e65,_0xf6034e){_0xd56e65=_0xd56e65-0x0;var _0x3f7b83=_0x1623[_0xd56e65];return _0x3f7b83;};'use strict';var Sequelize=require(_0x3162('0x0'));var squel=require('squel');var _=require('lodash');module[_0x3162('0x1')]={'title':{'type':Sequelize[_0x3162('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x3162('0x2')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x3162('0x3')](_0x3162('0x4')),'get':function(){try{return JSON['parse'](this['getDataValue'](_0x3162('0x5')));}catch(_0x4b77c4){return[];}},'set':function(_0x1b55f2){try{this[_0x3162('0x6')]('attrs',JSON[_0x3162('0x7')](_0x1b55f2));}catch(_0x2dc07e){this[_0x3162('0x6')](_0x3162('0x5'),JSON[_0x3162('0x7')]([]));}}},'sizeX':{'type':Sequelize[_0x3162('0x8')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x3162('0x8')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x3162('0x8')]},'col':{'type':Sequelize['INTEGER']},'background':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x3162('0x9'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x3162('0x2')],'allowNull':![],'defaultValue':_0x3162('0xa'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x3162('0x2')]},'titleFontSize':{'type':Sequelize[_0x3162('0x8')],'defaultValue':0xc}};
\ No newline at end of file
index 5835a8f..aea0756 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02b6=['show','params','model','keys','DashboardItem','rawAttributes','query','filters','intersection','attributes','fields','includeAll','include','merge','options','then','catch','find','type','iframe','attrUrl','attrs','https://','custom','attrPath','clock','attrHourFormat','value','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','attrEmailAccounts','attrFaxAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','voice','web-report','reportType','attrReport','attrRefresh','widgetAttributes:\x20%s','create','body','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','./dashboardItem.socket','register','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','sendStatus','error','stack','name','send'];(function(_0x273d96,_0x3e3def){var _0x3cab36=function(_0x4fb245){while(--_0x4fb245){_0x273d96['push'](_0x273d96['shift']());}};_0x3cab36(++_0x3e3def);}(_0x02b6,0xfe));var _0x602b=function(_0x56f570,_0x49b060){_0x56f570=_0x56f570-0x0;var _0x3f8e06=_0x02b6[_0x56f570];return _0x3f8e06;};'use strict';var emlformat=require(_0x602b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x602b('0x1'));var jsonpatch=require(_0x602b('0x2'));var rp=require(_0x602b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x602b('0x4'));var util=require(_0x602b('0x5'));var path=require(_0x602b('0x6'));var sox=require(_0x602b('0x7'));var csv=require('to-csv');var ejs=require(_0x602b('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x602b('0x9'));var squel=require(_0x602b('0xa'));var crypto=require(_0x602b('0xb'));var jsforce=require(_0x602b('0xc'));var deskjs=require(_0x602b('0xd'));var toCsv=require(_0x602b('0xe'));var querystring=require(_0x602b('0xf'));var Papa=require(_0x602b('0x10'));var Redis=require(_0x602b('0x11'));var authService=require(_0x602b('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x602b('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x602b('0x14'));var utils=require('../../config/utils');var config=require(_0x602b('0x15'));var licenseUtil=require(_0x602b('0x16'));var db=require('../../mysqldb')['db'];config[_0x602b('0x17')]=_[_0x602b('0x18')](config[_0x602b('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x602b('0x19'))(new Redis(config[_0x602b('0x17')]));require(_0x602b('0x1a'))[_0x602b('0x1b')](socket);function respondWithStatusCode(_0x27eb0a,_0x2033c7){_0x2033c7=_0x2033c7||0xcc;return function(_0x260d1e){if(_0x260d1e){return _0x27eb0a['sendStatus'](_0x2033c7);}return _0x27eb0a['status'](_0x2033c7)[_0x602b('0x1c')]();};}function respondWithResult(_0x41f957,_0x28c3d4){_0x28c3d4=_0x28c3d4||0xc8;return function(_0x18abb6){if(_0x18abb6){return _0x41f957[_0x602b('0x1d')](_0x28c3d4)[_0x602b('0x1e')](_0x18abb6);}};}function respondWithFilteredResult(_0x416f64,_0x1c440f){return function(_0x46758d){if(_0x46758d){var _0x57057c=typeof _0x1c440f[_0x602b('0x1f')]===_0x602b('0x20')&&typeof _0x1c440f[_0x602b('0x21')]==='undefined';var _0x3c991c=_0x46758d['count'];var _0x4ddfe0=_0x57057c?0x0:_0x1c440f[_0x602b('0x1f')];var _0x4e888d=_0x57057c?_0x46758d[_0x602b('0x22')]:_0x1c440f['offset']+_0x1c440f[_0x602b('0x21')];var _0x36cd1b;if(_0x4e888d>=_0x3c991c){_0x4e888d=_0x3c991c;_0x36cd1b=0xc8;}else{_0x36cd1b=0xce;}_0x416f64[_0x602b('0x1d')](_0x36cd1b);return _0x416f64['set'](_0x602b('0x23'),_0x4ddfe0+'-'+_0x4e888d+'/'+_0x3c991c)[_0x602b('0x1e')](_0x46758d);}return null;};}function patchUpdates(_0x580b66){return function(_0x315ea8){try{jsonpatch[_0x602b('0x24')](_0x315ea8,_0x580b66,!![]);}catch(_0x2c59f3){return BPromise[_0x602b('0x25')](_0x2c59f3);}return _0x315ea8[_0x602b('0x26')]();};}function saveUpdates(_0xb3beff,_0x24b96e){return function(_0x3409ed){if(_0x3409ed){return _0x3409ed[_0x602b('0x27')](_0xb3beff)['then'](function(_0x43acc3){return _0x43acc3;});}return null;};}function removeEntity(_0x427bf1,_0x5ce51b){return function(_0x295025){if(_0x295025){return _0x295025[_0x602b('0x28')]()['then'](function(){_0x427bf1[_0x602b('0x1d')](0xcc)[_0x602b('0x1c')]();});}};}function handleEntityNotFound(_0x22cd69,_0x2bb5b7){return function(_0xc4a556){if(!_0xc4a556){_0x22cd69[_0x602b('0x29')](0x194);}return _0xc4a556;};}function handleError(_0x9ac7bf,_0x14b703){_0x14b703=_0x14b703||0x1f4;return function(_0x3e82bc){logger[_0x602b('0x2a')](_0x3e82bc[_0x602b('0x2b')]);if(_0x3e82bc['name']){delete _0x3e82bc[_0x602b('0x2c')];}_0x9ac7bf['status'](_0x14b703)[_0x602b('0x2d')](_0x3e82bc);};}exports[_0x602b('0x2e')]=function(_0x40b828,_0x3b951b){var _0x32b9b7={'raw':![],'where':{'id':_0x40b828[_0x602b('0x2f')]['id']}},_0x3647cf={};_0x3647cf[_0x602b('0x30')]=_[_0x602b('0x31')](db[_0x602b('0x32')][_0x602b('0x33')]);_0x3647cf['query']=_['keys'](_0x40b828[_0x602b('0x34')]);_0x3647cf[_0x602b('0x35')]=_[_0x602b('0x36')](_0x3647cf[_0x602b('0x30')],_0x3647cf['query']);_0x32b9b7[_0x602b('0x37')]=_[_0x602b('0x36')](_0x3647cf[_0x602b('0x30')],qs['fields'](_0x40b828[_0x602b('0x34')][_0x602b('0x38')]));_0x32b9b7[_0x602b('0x37')]=_0x32b9b7[_0x602b('0x37')]['length']?_0x32b9b7[_0x602b('0x37')]:_0x3647cf['model'];if(_0x40b828[_0x602b('0x34')][_0x602b('0x39')]){_0x32b9b7[_0x602b('0x3a')]=[{'all':!![]}];}_0x32b9b7=_[_0x602b('0x3b')]({},_0x32b9b7,_0x40b828[_0x602b('0x3c')]);return db[_0x602b('0x32')]['find'](_0x32b9b7)[_0x602b('0x3d')](handleEntityNotFound(_0x3b951b,null))[_0x602b('0x3d')](respondWithResult(_0x3b951b,null))[_0x602b('0x3e')](handleError(_0x3b951b,null));};exports['destroy']=function(_0x24ade2,_0x4b287b){return db[_0x602b('0x32')][_0x602b('0x3f')]({'where':{'id':_0x24ade2['params']['id']}})['then'](handleEntityNotFound(_0x4b287b,null))['then'](removeEntity(_0x4b287b,null))[_0x602b('0x3e')](handleError(_0x4b287b,null));};function widgetAttributes(_0x199e7b){try{switch(_0x199e7b[_0x602b('0x40')]){case _0x602b('0x41'):return[{'name':_0x602b('0x42'),'value':_0x199e7b[_0x602b('0x42')]||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x0]?_0x199e7b[_0x602b('0x43')][0x0]['value']:undefined)||_0x602b('0x44')}];case _0x602b('0x45'):return[{'name':_0x602b('0x46'),'value':_0x199e7b['attrPath']||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x0]?_0x199e7b[_0x602b('0x43')][0x0]['value']:undefined)||''}];case _0x602b('0x47'):return[{'name':_0x602b('0x48'),'value':_0x199e7b[_0x602b('0x48')]||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x0]?_0x199e7b['attrs'][0x0][_0x602b('0x49')]:undefined)||_0x602b('0x4a')},{'name':'attrTimezone','value':_0x199e7b[_0x602b('0x4b')]||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x1]?_0x199e7b[_0x602b('0x43')][0x1]['value']:undefined)||'0.00'},{'name':_0x602b('0x4c'),'value':_0x199e7b['attrFontSize']||(_0x199e7b['attrs']&&_0x199e7b[_0x602b('0x43')][0x2]?_0x199e7b['attrs'][0x2][_0x602b('0x49')]:undefined)||0xc}];case _0x602b('0x4d'):return[{'name':_0x602b('0x4e'),'value':_0x199e7b['attrMetric']||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b['attrs'][0x0]?_0x199e7b['attrs'][0x0][_0x602b('0x49')]:undefined)||_0x602b('0x4f')},{'name':_0x602b('0x50'),'value':_0x199e7b[_0x602b('0x50')]||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x1]?_0x199e7b[_0x602b('0x43')][0x1][_0x602b('0x49')]:undefined)||[]},{'name':_0x602b('0x4c'),'value':_0x199e7b[_0x602b('0x4c')]||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b['attrs'][0x2]?_0x199e7b[_0x602b('0x43')][0x2][_0x602b('0x49')]:undefined)||0x14},{'name':_0x602b('0x51'),'value':_0x199e7b['attrChannel']||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x3]?_0x199e7b['attrs'][0x3][_0x602b('0x49')]:undefined)||'voice'},{'name':_0x602b('0x52'),'value':_0x199e7b[_0x602b('0x52')]||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x4]?_0x199e7b[_0x602b('0x43')][0x4][_0x602b('0x49')]:undefined)||''},{'name':_0x602b('0x53'),'value':_0x199e7b[_0x602b('0x53')]||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x5]?_0x199e7b[_0x602b('0x43')][0x5][_0x602b('0x49')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x199e7b['attrSmsAccounts']||(_0x199e7b['attrs']&&_0x199e7b[_0x602b('0x43')][0x6]?_0x199e7b[_0x602b('0x43')][0x6][_0x602b('0x49')]:undefined)||''},{'name':_0x602b('0x54'),'value':_0x199e7b[_0x602b('0x54')]||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x7]?_0x199e7b[_0x602b('0x43')][0x7]['value']:undefined)||''},{'name':_0x602b('0x55'),'value':_0x199e7b['attrWhatsappAccounts']||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x8]?_0x199e7b['attrs'][0x8][_0x602b('0x49')]:undefined)||''},{'name':'attrChatWebsites','value':_0x199e7b[_0x602b('0x56')]||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x9]?_0x199e7b[_0x602b('0x43')][0x9][_0x602b('0x49')]:undefined)||''}];case _0x602b('0x57'):case _0x602b('0x58'):return[{'name':'attrSerie1','value':_0x199e7b[_0x602b('0x59')]||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x0]?_0x199e7b['attrs'][0x0][_0x602b('0x49')]:undefined)||_0x602b('0x4f')},{'name':_0x602b('0x5a'),'value':_0x199e7b['attrSerie2']||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b['attrs'][0x1]?_0x199e7b[_0x602b('0x43')][0x1][_0x602b('0x49')]:undefined)||null},{'name':_0x602b('0x5b'),'value':_0x199e7b[_0x602b('0x5b')]||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x2]?_0x199e7b[_0x602b('0x43')][0x2][_0x602b('0x49')]:undefined)||null},{'name':_0x602b('0x50'),'value':_0x199e7b[_0x602b('0x50')]||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x3]?_0x199e7b[_0x602b('0x43')][0x3][_0x602b('0x49')]:undefined)||[]},{'name':_0x602b('0x51'),'value':_0x199e7b[_0x602b('0x51')]||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x4]?_0x199e7b[_0x602b('0x43')][0x4]['value']:undefined)||_0x602b('0x5c')},{'name':_0x602b('0x52'),'value':_0x199e7b[_0x602b('0x52')]||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x5]?_0x199e7b[_0x602b('0x43')][0x5][_0x602b('0x49')]:undefined)||''},{'name':_0x602b('0x53'),'value':_0x199e7b[_0x602b('0x53')]||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x6]?_0x199e7b[_0x602b('0x43')][0x6][_0x602b('0x49')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x199e7b['attrSmsAccounts']||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b['attrs'][0x7]?_0x199e7b[_0x602b('0x43')][0x7][_0x602b('0x49')]:undefined)||''},{'name':_0x602b('0x54'),'value':_0x199e7b['attrOpenchannelAccounts']||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b['attrs'][0x8]?_0x199e7b['attrs'][0x8][_0x602b('0x49')]:undefined)||''},{'name':_0x602b('0x55'),'value':_0x199e7b[_0x602b('0x55')]||(_0x199e7b['attrs']&&_0x199e7b[_0x602b('0x43')][0x9]?_0x199e7b[_0x602b('0x43')][0x9][_0x602b('0x49')]:undefined)||''},{'name':_0x602b('0x56'),'value':_0x199e7b['attrChatWebsites']||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0xa]?_0x199e7b['attrs'][0xa][_0x602b('0x49')]:undefined)||''}];case _0x602b('0x5d'):return[{'name':'attrReport','type':_0x199e7b[_0x602b('0x5e')]||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x0]?_0x199e7b[_0x602b('0x43')][0x0]['type']:undefined)||null,'value':_0x199e7b[_0x602b('0x5f')]||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b['attrs'][0x0]?_0x199e7b[_0x602b('0x43')][0x0][_0x602b('0x49')]:undefined)||null},{'name':_0x602b('0x60'),'value':_0x199e7b['attrRefresh']||(_0x199e7b[_0x602b('0x43')]&&_0x199e7b[_0x602b('0x43')][0x1]?_0x199e7b['attrs'][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x36ae35){logger['error'](_0x602b('0x61'),JSON['stringify'](_0x36ae35));return[];}}exports[_0x602b('0x62')]=function(_0x407b2c,_0x45a250){if(_0x407b2c[_0x602b('0x63')]){_0x407b2c[_0x602b('0x63')]['attrs']=widgetAttributes(_0x407b2c['body']);}return db[_0x602b('0x32')]['create'](_0x407b2c['body'],{})[_0x602b('0x3d')](respondWithResult(_0x45a250,0xc9))[_0x602b('0x3e')](handleError(_0x45a250,null));};exports[_0x602b('0x27')]=function(_0x166997,_0x2321f9){if(_0x166997['body']['id']){delete _0x166997[_0x602b('0x63')]['id'];}_0x166997[_0x602b('0x63')][_0x602b('0x43')]=widgetAttributes(_0x166997[_0x602b('0x63')]);return db[_0x602b('0x32')][_0x602b('0x3f')]({'where':{'id':_0x166997[_0x602b('0x2f')]['id']}})[_0x602b('0x3d')](handleEntityNotFound(_0x2321f9,null))['then'](saveUpdates(_0x166997[_0x602b('0x63')],null))[_0x602b('0x3d')](respondWithResult(_0x2321f9,null))[_0x602b('0x3e')](handleError(_0x2321f9,null));};
\ No newline at end of file
+var _0x88b0=['widgetAttributes:\x20%s','stringify','body','update','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./dashboardItem.socket','register','sendStatus','end','status','json','offset','undefined','count','limit','reject','then','destroy','stack','name','send','params','keys','DashboardItem','rawAttributes','query','filters','intersection','model','attributes','fields','includeAll','include','merge','options','find','catch','type','attrUrl','attrs','https://','custom','attrPath','value','attrHourFormat','HH:mm:ss','0.00','attrFontSize','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','error'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x88b0,0x1cb));var _0x088b=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x88b0[_0x3947c9];return _0x2e7871;};'use strict';var emlformat=require(_0x088b('0x0'));var rimraf=require(_0x088b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x088b('0x2'));var moment=require(_0x088b('0x3'));var BPromise=require(_0x088b('0x4'));var Mustache=require(_0x088b('0x5'));var util=require('util');var path=require(_0x088b('0x6'));var sox=require(_0x088b('0x7'));var csv=require(_0x088b('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x088b('0x9'));var squel=require(_0x088b('0xa'));var crypto=require(_0x088b('0xb'));var jsforce=require(_0x088b('0xc'));var deskjs=require(_0x088b('0xd'));var toCsv=require(_0x088b('0x8'));var querystring=require(_0x088b('0xe'));var Papa=require('papaparse');var Redis=require(_0x088b('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x088b('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x088b('0x11'));var logger=require(_0x088b('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x088b('0x13'));var licenseUtil=require(_0x088b('0x14'));var db=require(_0x088b('0x15'))['db'];config['redis']=_[_0x088b('0x16')](config[_0x088b('0x17')],{'host':_0x088b('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x088b('0x17')]));require(_0x088b('0x19'))[_0x088b('0x1a')](socket);function respondWithStatusCode(_0xf6bd53,_0x1ec5e5){_0x1ec5e5=_0x1ec5e5||0xcc;return function(_0x3d659d){if(_0x3d659d){return _0xf6bd53[_0x088b('0x1b')](_0x1ec5e5);}return _0xf6bd53['status'](_0x1ec5e5)[_0x088b('0x1c')]();};}function respondWithResult(_0x1c1096,_0x458b47){_0x458b47=_0x458b47||0xc8;return function(_0xdee68a){if(_0xdee68a){return _0x1c1096[_0x088b('0x1d')](_0x458b47)[_0x088b('0x1e')](_0xdee68a);}};}function respondWithFilteredResult(_0x54a27e,_0x331cb0){return function(_0x3ce059){if(_0x3ce059){var _0x135e00=typeof _0x331cb0[_0x088b('0x1f')]===_0x088b('0x20')&&typeof _0x331cb0['limit']==='undefined';var _0x35e006=_0x3ce059[_0x088b('0x21')];var _0x12e3ac=_0x135e00?0x0:_0x331cb0[_0x088b('0x1f')];var _0x3c9c1d=_0x135e00?_0x3ce059[_0x088b('0x21')]:_0x331cb0['offset']+_0x331cb0[_0x088b('0x22')];var _0x293604;if(_0x3c9c1d>=_0x35e006){_0x3c9c1d=_0x35e006;_0x293604=0xc8;}else{_0x293604=0xce;}_0x54a27e[_0x088b('0x1d')](_0x293604);return _0x54a27e['set']('Content-Range',_0x12e3ac+'-'+_0x3c9c1d+'/'+_0x35e006)[_0x088b('0x1e')](_0x3ce059);}return null;};}function patchUpdates(_0x1db300){return function(_0x587bad){try{jsonpatch['apply'](_0x587bad,_0x1db300,!![]);}catch(_0x187350){return BPromise[_0x088b('0x23')](_0x187350);}return _0x587bad['save']();};}function saveUpdates(_0x4b4d3f,_0x48bbaa){return function(_0x282156){if(_0x282156){return _0x282156['update'](_0x4b4d3f)[_0x088b('0x24')](function(_0x4178d0){return _0x4178d0;});}return null;};}function removeEntity(_0x8f18b7,_0x2c551f){return function(_0x43ee2e){if(_0x43ee2e){return _0x43ee2e[_0x088b('0x25')]()['then'](function(){_0x8f18b7[_0x088b('0x1d')](0xcc)[_0x088b('0x1c')]();});}};}function handleEntityNotFound(_0x3da9e1,_0x5f20de){return function(_0x24f8e6){if(!_0x24f8e6){_0x3da9e1[_0x088b('0x1b')](0x194);}return _0x24f8e6;};}function handleError(_0x1a668b,_0x3ed176){_0x3ed176=_0x3ed176||0x1f4;return function(_0x5e1449){logger['error'](_0x5e1449[_0x088b('0x26')]);if(_0x5e1449[_0x088b('0x27')]){delete _0x5e1449[_0x088b('0x27')];}_0x1a668b[_0x088b('0x1d')](_0x3ed176)[_0x088b('0x28')](_0x5e1449);};}exports['show']=function(_0x246afa,_0xb97ad6){var _0x1573eb={'raw':![],'where':{'id':_0x246afa[_0x088b('0x29')]['id']}},_0x6535be={};_0x6535be['model']=_[_0x088b('0x2a')](db[_0x088b('0x2b')][_0x088b('0x2c')]);_0x6535be[_0x088b('0x2d')]=_[_0x088b('0x2a')](_0x246afa[_0x088b('0x2d')]);_0x6535be[_0x088b('0x2e')]=_[_0x088b('0x2f')](_0x6535be[_0x088b('0x30')],_0x6535be[_0x088b('0x2d')]);_0x1573eb[_0x088b('0x31')]=_['intersection'](_0x6535be[_0x088b('0x30')],qs[_0x088b('0x32')](_0x246afa[_0x088b('0x2d')][_0x088b('0x32')]));_0x1573eb['attributes']=_0x1573eb[_0x088b('0x31')]['length']?_0x1573eb[_0x088b('0x31')]:_0x6535be['model'];if(_0x246afa[_0x088b('0x2d')][_0x088b('0x33')]){_0x1573eb[_0x088b('0x34')]=[{'all':!![]}];}_0x1573eb=_[_0x088b('0x35')]({},_0x1573eb,_0x246afa[_0x088b('0x36')]);return db[_0x088b('0x2b')][_0x088b('0x37')](_0x1573eb)['then'](handleEntityNotFound(_0xb97ad6,null))[_0x088b('0x24')](respondWithResult(_0xb97ad6,null))[_0x088b('0x38')](handleError(_0xb97ad6,null));};exports[_0x088b('0x25')]=function(_0x4dcd8d,_0x2d8f2e){return db[_0x088b('0x2b')]['find']({'where':{'id':_0x4dcd8d[_0x088b('0x29')]['id']}})[_0x088b('0x24')](handleEntityNotFound(_0x2d8f2e,null))[_0x088b('0x24')](removeEntity(_0x2d8f2e,null))[_0x088b('0x38')](handleError(_0x2d8f2e,null));};function widgetAttributes(_0x48e89c){try{switch(_0x48e89c[_0x088b('0x39')]){case'iframe':return[{'name':_0x088b('0x3a'),'value':_0x48e89c[_0x088b('0x3a')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c['attrs'][0x0]?_0x48e89c[_0x088b('0x3b')][0x0]['value']:undefined)||_0x088b('0x3c')}];case _0x088b('0x3d'):return[{'name':_0x088b('0x3e'),'value':_0x48e89c[_0x088b('0x3e')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c[_0x088b('0x3b')][0x0]?_0x48e89c[_0x088b('0x3b')][0x0][_0x088b('0x3f')]:undefined)||''}];case'clock':return[{'name':_0x088b('0x40'),'value':_0x48e89c[_0x088b('0x40')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c['attrs'][0x0]?_0x48e89c[_0x088b('0x3b')][0x0][_0x088b('0x3f')]:undefined)||_0x088b('0x41')},{'name':'attrTimezone','value':_0x48e89c['attrTimezone']||(_0x48e89c['attrs']&&_0x48e89c['attrs'][0x1]?_0x48e89c[_0x088b('0x3b')][0x1][_0x088b('0x3f')]:undefined)||_0x088b('0x42')},{'name':_0x088b('0x43'),'value':_0x48e89c[_0x088b('0x43')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c['attrs'][0x2]?_0x48e89c[_0x088b('0x3b')][0x2]['value']:undefined)||0xc}];case'counter':return[{'name':'attrMetric','value':_0x48e89c['attrMetric']||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c[_0x088b('0x3b')][0x0]?_0x48e89c[_0x088b('0x3b')][0x0][_0x088b('0x3f')]:undefined)||_0x088b('0x44')},{'name':_0x088b('0x45'),'value':_0x48e89c[_0x088b('0x45')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c[_0x088b('0x3b')][0x1]?_0x48e89c[_0x088b('0x3b')][0x1][_0x088b('0x3f')]:undefined)||[]},{'name':'attrFontSize','value':_0x48e89c[_0x088b('0x43')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c[_0x088b('0x3b')][0x2]?_0x48e89c[_0x088b('0x3b')][0x2]['value']:undefined)||0x14},{'name':_0x088b('0x46'),'value':_0x48e89c['attrChannel']||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c[_0x088b('0x3b')][0x3]?_0x48e89c[_0x088b('0x3b')][0x3]['value']:undefined)||_0x088b('0x47')},{'name':_0x088b('0x48'),'value':_0x48e89c[_0x088b('0x48')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c[_0x088b('0x3b')][0x4]?_0x48e89c[_0x088b('0x3b')][0x4][_0x088b('0x3f')]:undefined)||''},{'name':_0x088b('0x49'),'value':_0x48e89c[_0x088b('0x49')]||(_0x48e89c['attrs']&&_0x48e89c[_0x088b('0x3b')][0x5]?_0x48e89c[_0x088b('0x3b')][0x5][_0x088b('0x3f')]:undefined)||''},{'name':_0x088b('0x4a'),'value':_0x48e89c[_0x088b('0x4a')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c[_0x088b('0x3b')][0x6]?_0x48e89c[_0x088b('0x3b')][0x6]['value']:undefined)||''},{'name':_0x088b('0x4b'),'value':_0x48e89c[_0x088b('0x4b')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c[_0x088b('0x3b')][0x7]?_0x48e89c['attrs'][0x7][_0x088b('0x3f')]:undefined)||''},{'name':_0x088b('0x4c'),'value':_0x48e89c[_0x088b('0x4c')]||(_0x48e89c['attrs']&&_0x48e89c[_0x088b('0x3b')][0x8]?_0x48e89c['attrs'][0x8]['value']:undefined)||''},{'name':_0x088b('0x4d'),'value':_0x48e89c[_0x088b('0x4d')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c[_0x088b('0x3b')][0x9]?_0x48e89c[_0x088b('0x3b')][0x9][_0x088b('0x3f')]:undefined)||''}];case _0x088b('0x4e'):case'pie-chart':return[{'name':_0x088b('0x4f'),'value':_0x48e89c[_0x088b('0x4f')]||(_0x48e89c['attrs']&&_0x48e89c[_0x088b('0x3b')][0x0]?_0x48e89c[_0x088b('0x3b')][0x0][_0x088b('0x3f')]:undefined)||_0x088b('0x44')},{'name':_0x088b('0x50'),'value':_0x48e89c[_0x088b('0x50')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c[_0x088b('0x3b')][0x1]?_0x48e89c[_0x088b('0x3b')][0x1][_0x088b('0x3f')]:undefined)||null},{'name':_0x088b('0x51'),'value':_0x48e89c['attrSerie3']||(_0x48e89c['attrs']&&_0x48e89c[_0x088b('0x3b')][0x2]?_0x48e89c['attrs'][0x2][_0x088b('0x3f')]:undefined)||null},{'name':_0x088b('0x45'),'value':_0x48e89c[_0x088b('0x45')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c[_0x088b('0x3b')][0x3]?_0x48e89c[_0x088b('0x3b')][0x3]['value']:undefined)||[]},{'name':_0x088b('0x46'),'value':_0x48e89c[_0x088b('0x46')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c['attrs'][0x4]?_0x48e89c[_0x088b('0x3b')][0x4][_0x088b('0x3f')]:undefined)||'voice'},{'name':'attrEmailAccounts','value':_0x48e89c[_0x088b('0x48')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c[_0x088b('0x3b')][0x5]?_0x48e89c['attrs'][0x5][_0x088b('0x3f')]:undefined)||''},{'name':_0x088b('0x49'),'value':_0x48e89c[_0x088b('0x49')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c[_0x088b('0x3b')][0x6]?_0x48e89c[_0x088b('0x3b')][0x6][_0x088b('0x3f')]:undefined)||''},{'name':_0x088b('0x4a'),'value':_0x48e89c[_0x088b('0x4a')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c[_0x088b('0x3b')][0x7]?_0x48e89c[_0x088b('0x3b')][0x7][_0x088b('0x3f')]:undefined)||''},{'name':_0x088b('0x4b'),'value':_0x48e89c['attrOpenchannelAccounts']||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c['attrs'][0x8]?_0x48e89c['attrs'][0x8]['value']:undefined)||''},{'name':_0x088b('0x4c'),'value':_0x48e89c[_0x088b('0x4c')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c['attrs'][0x9]?_0x48e89c['attrs'][0x9][_0x088b('0x3f')]:undefined)||''},{'name':_0x088b('0x4d'),'value':_0x48e89c[_0x088b('0x4d')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c[_0x088b('0x3b')][0xa]?_0x48e89c[_0x088b('0x3b')][0xa][_0x088b('0x3f')]:undefined)||''}];case _0x088b('0x52'):return[{'name':_0x088b('0x53'),'type':_0x48e89c[_0x088b('0x54')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c[_0x088b('0x3b')][0x0]?_0x48e89c[_0x088b('0x3b')][0x0]['type']:undefined)||null,'value':_0x48e89c[_0x088b('0x53')]||(_0x48e89c['attrs']&&_0x48e89c[_0x088b('0x3b')][0x0]?_0x48e89c['attrs'][0x0][_0x088b('0x3f')]:undefined)||null},{'name':'attrRefresh','value':_0x48e89c[_0x088b('0x55')]||(_0x48e89c[_0x088b('0x3b')]&&_0x48e89c[_0x088b('0x3b')][0x1]?_0x48e89c[_0x088b('0x3b')][0x1][_0x088b('0x3f')]:undefined)||0x0}];default:return[];}}catch(_0x54ec8b){logger[_0x088b('0x56')](_0x088b('0x57'),JSON[_0x088b('0x58')](_0x54ec8b));return[];}}exports['create']=function(_0x3ad76b,_0xd2180e){if(_0x3ad76b[_0x088b('0x59')]){_0x3ad76b[_0x088b('0x59')][_0x088b('0x3b')]=widgetAttributes(_0x3ad76b[_0x088b('0x59')]);}return db[_0x088b('0x2b')]['create'](_0x3ad76b[_0x088b('0x59')],{})[_0x088b('0x24')](respondWithResult(_0xd2180e,0xc9))[_0x088b('0x38')](handleError(_0xd2180e,null));};exports[_0x088b('0x5a')]=function(_0x5d2eef,_0x228a8d){if(_0x5d2eef[_0x088b('0x59')]['id']){delete _0x5d2eef[_0x088b('0x59')]['id'];}_0x5d2eef[_0x088b('0x59')]['attrs']=widgetAttributes(_0x5d2eef['body']);return db['DashboardItem'][_0x088b('0x37')]({'where':{'id':_0x5d2eef[_0x088b('0x29')]['id']}})[_0x088b('0x24')](handleEntityNotFound(_0x228a8d,null))['then'](saveUpdates(_0x5d2eef[_0x088b('0x59')],null))['then'](respondWithResult(_0x228a8d,null))['catch'](handleError(_0x228a8d,null));};
\ No newline at end of file
index 9fd49a5..8c69bb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20fa=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0x5623f1,_0x57b4dc){var _0x5bb15e=function(_0x5d238d){while(--_0x5d238d){_0x5623f1['push'](_0x5623f1['shift']());}};_0x5bb15e(++_0x57b4dc);}(_0x20fa,0xea));var _0xa20f=function(_0x1cb18a,_0x33167a){_0x1cb18a=_0x1cb18a-0x0;var _0x22442e=_0x20fa[_0x1cb18a];return _0x22442e;};'use strict';var EventEmitter=require(_0xa20f('0x0'));var DashboardItem=require(_0xa20f('0x1'))['db']['DashboardItem'];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xa20f('0x2')](0x0);var events={'afterCreate':_0xa20f('0x3'),'afterUpdate':_0xa20f('0x4'),'afterDestroy':_0xa20f('0x5')};function emitEvent(_0x16b159){return function(_0xc0f010,_0x1f8072,_0x50adcf){DashboardItemEvents[_0xa20f('0x6')](_0x16b159+':'+_0xc0f010['id'],_0xc0f010);DashboardItemEvents[_0xa20f('0x6')](_0x16b159,_0xc0f010);_0x50adcf(null);};}for(var e in events){if(events[_0xa20f('0x7')](e)){var event=events[e];DashboardItem[_0xa20f('0x8')](e,emitEvent(event));}}module[_0xa20f('0x9')]=DashboardItemEvents;
\ No newline at end of file
+var _0xd7e0=['../../mysqldb','DashboardItem','setMaxListeners','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x486512,_0x3f7d56){var _0x4f7800=function(_0x172dc5){while(--_0x172dc5){_0x486512['push'](_0x486512['shift']());}};_0x4f7800(++_0x3f7d56);}(_0xd7e0,0xb3));var _0x0d7e=function(_0x240392,_0xa8ba5e){_0x240392=_0x240392-0x0;var _0x198821=_0xd7e0[_0x240392];return _0x198821;};'use strict';var EventEmitter=require(_0x0d7e('0x0'));var DashboardItem=require(_0x0d7e('0x1'))['db'][_0x0d7e('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x0d7e('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0d7e('0x4'),'afterDestroy':_0x0d7e('0x5')};function emitEvent(_0x1f2fff){return function(_0x16f266,_0x4f4641,_0x26bc83){DashboardItemEvents[_0x0d7e('0x6')](_0x1f2fff+':'+_0x16f266['id'],_0x16f266);DashboardItemEvents[_0x0d7e('0x6')](_0x1f2fff,_0x16f266);_0x26bc83(null);};}for(var e in events){if(events[_0x0d7e('0x7')](e)){var event=events[e];DashboardItem[_0x0d7e('0x8')](e,emitEvent(event));}}module['exports']=DashboardItemEvents;
\ No newline at end of file
index f8c93fe..91b7f4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46db=['path','rimraf','./dashboardItem.attributes','exports','define','DashboardItem','dashboard_items','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x239d8e,_0x9977ab){var _0x229189=function(_0x52fdbe){while(--_0x52fdbe){_0x239d8e['push'](_0x239d8e['shift']());}};_0x229189(++_0x9977ab);}(_0x46db,0x1c7));var _0xb46d=function(_0x58877e,_0x571ffd){_0x58877e=_0x58877e-0x0;var _0x2a0360=_0x46db[_0x58877e];return _0x2a0360;};'use strict';var _=require(_0xb46d('0x0'));var util=require(_0xb46d('0x1'));var logger=require(_0xb46d('0x2'))(_0xb46d('0x3'));var moment=require(_0xb46d('0x4'));var BPromise=require(_0xb46d('0x5'));var rp=require(_0xb46d('0x6'));var fs=require('fs');var path=require(_0xb46d('0x7'));var rimraf=require(_0xb46d('0x8'));var config=require('../../config/environment');var attributes=require(_0xb46d('0x9'));module[_0xb46d('0xa')]=function(_0x22d1dc,_0x231c98){return _0x22d1dc[_0xb46d('0xb')](_0xb46d('0xc'),attributes,{'tableName':_0xb46d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xeb81=['rimraf','./dashboardItem.attributes','exports','dashboard_items','lodash','../../config/logger','moment','bluebird','path'];(function(_0x4db926,_0x1ed7b3){var _0x13e850=function(_0x5aa2e3){while(--_0x5aa2e3){_0x4db926['push'](_0x4db926['shift']());}};_0x13e850(++_0x1ed7b3);}(_0xeb81,0x100));var _0x1eb8=function(_0x10a29d,_0x6b51d3){_0x10a29d=_0x10a29d-0x0;var _0xff1b77=_0xeb81[_0x10a29d];return _0xff1b77;};'use strict';var _=require(_0x1eb8('0x0'));var util=require('util');var logger=require(_0x1eb8('0x1'))('api');var moment=require(_0x1eb8('0x2'));var BPromise=require(_0x1eb8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1eb8('0x4'));var rimraf=require(_0x1eb8('0x5'));var config=require('../../config/environment');var attributes=require(_0x1eb8('0x6'));module[_0x1eb8('0x7')]=function(_0x578a72,_0x54eaae){return _0x578a72['define']('DashboardItem',attributes,{'tableName':_0x1eb8('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d95d947..9dad370 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeee5=['request\x20sent','catch','util','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','defaults','localhost','./dashboardItem.socket','register','request','then','info','DashboardItem,\x20%s,\x20%s','debug','stringify','error','code','message'];(function(_0x584b9d,_0x1cb5c5){var _0x172053=function(_0x5036ec){while(--_0x5036ec){_0x584b9d['push'](_0x584b9d['shift']());}};_0x172053(++_0x1cb5c5);}(_0xeee5,0x8c));var _0x5eee=function(_0x4fb356,_0x4bfbab){_0x4fb356=_0x4fb356-0x0;var _0x2fee94=_0xeee5[_0x4fb356];return _0x2fee94;};'use strict';var _=require('lodash');var util=require(_0x5eee('0x0'));var moment=require('moment');var BPromise=require(_0x5eee('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5eee('0x2'));var db=require(_0x5eee('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5eee('0x4'));var config=require(_0x5eee('0x5'));var jayson=require(_0x5eee('0x6'));var client=jayson[_0x5eee('0x7')]['http']({'port':0x232a});config['redis']=_[_0x5eee('0x8')](config['redis'],{'host':_0x5eee('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x5eee('0xa'))[_0x5eee('0xb')](socket);function respondWithRpcPromise(_0x121845,_0x3c4b84,_0x29ba78){return new BPromise(function(_0x16edc2,_0x89d1a){return client[_0x5eee('0xc')](_0x121845,_0x29ba78)[_0x5eee('0xd')](function(_0x1a65b0){logger[_0x5eee('0xe')](_0x5eee('0xf'),_0x3c4b84,'request\x20sent');logger[_0x5eee('0x10')]('DashboardItem,\x20%s,\x20%s,\x20%s',_0x3c4b84,'request\x20sent',JSON[_0x5eee('0x11')](_0x1a65b0));if(_0x1a65b0[_0x5eee('0x12')]){if(_0x1a65b0[_0x5eee('0x12')][_0x5eee('0x13')]===0x1f4){logger[_0x5eee('0x12')](_0x5eee('0xf'),_0x3c4b84,_0x1a65b0[_0x5eee('0x12')][_0x5eee('0x14')]);return _0x89d1a(_0x1a65b0['error'][_0x5eee('0x14')]);}logger[_0x5eee('0x12')](_0x5eee('0xf'),_0x3c4b84,_0x1a65b0[_0x5eee('0x12')]['message']);return _0x16edc2(_0x1a65b0[_0x5eee('0x12')][_0x5eee('0x14')]);}else{logger['info'](_0x5eee('0xf'),_0x3c4b84,_0x5eee('0x15'));_0x16edc2(_0x1a65b0['result'][_0x5eee('0x14')]);}})[_0x5eee('0x16')](function(_0x434de3){logger[_0x5eee('0x12')]('DashboardItem,\x20%s,\x20%s',_0x3c4b84,_0x434de3);_0x89d1a(_0x434de3);});});}
\ No newline at end of file
+var _0xf30b=['request\x20sent','stringify','error','code','DashboardItem,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','request','info'];(function(_0x128cfe,_0x31a3c3){var _0x1c2266=function(_0x3230e2){while(--_0x3230e2){_0x128cfe['push'](_0x128cfe['shift']());}};_0x1c2266(++_0x31a3c3);}(_0xf30b,0xd8));var _0xbf30=function(_0x57172c,_0x1df512){_0x57172c=_0x57172c-0x0;var _0x38e8a4=_0xf30b[_0x57172c];return _0x38e8a4;};'use strict';var _=require(_0xbf30('0x0'));var util=require(_0xbf30('0x1'));var moment=require(_0xbf30('0x2'));var BPromise=require(_0xbf30('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbf30('0x4'));var db=require(_0xbf30('0x5'))['db'];var utils=require(_0xbf30('0x6'));var logger=require('../../config/logger')(_0xbf30('0x7'));var config=require(_0xbf30('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xbf30('0x9')][_0xbf30('0xa')]({'port':0x232a});config[_0xbf30('0xb')]=_['defaults'](config[_0xbf30('0xb')],{'host':_0xbf30('0xc'),'port':0x18eb});var socket=require(_0xbf30('0xd'))(new Redis(config['redis']));require(_0xbf30('0xe'))[_0xbf30('0xf')](socket);function respondWithRpcPromise(_0x8463c1,_0x5d9ac1,_0x2c9ea9){return new BPromise(function(_0xa3bb8a,_0x100540){return client[_0xbf30('0x10')](_0x8463c1,_0x2c9ea9)['then'](function(_0x1c4059){logger[_0xbf30('0x11')]('DashboardItem,\x20%s,\x20%s',_0x5d9ac1,_0xbf30('0x12'));logger['debug']('DashboardItem,\x20%s,\x20%s,\x20%s',_0x5d9ac1,'request\x20sent',JSON[_0xbf30('0x13')](_0x1c4059));if(_0x1c4059['error']){if(_0x1c4059[_0xbf30('0x14')][_0xbf30('0x15')]===0x1f4){logger[_0xbf30('0x14')](_0xbf30('0x16'),_0x5d9ac1,_0x1c4059[_0xbf30('0x14')][_0xbf30('0x17')]);return _0x100540(_0x1c4059['error'][_0xbf30('0x17')]);}logger[_0xbf30('0x14')](_0xbf30('0x16'),_0x5d9ac1,_0x1c4059[_0xbf30('0x14')][_0xbf30('0x17')]);return _0xa3bb8a(_0x1c4059[_0xbf30('0x14')][_0xbf30('0x17')]);}else{logger[_0xbf30('0x11')](_0xbf30('0x16'),_0x5d9ac1,'request\x20sent');_0xa3bb8a(_0x1c4059[_0xbf30('0x18')][_0xbf30('0x17')]);}})[_0xbf30('0x19')](function(_0x36f0aa){logger[_0xbf30('0x14')](_0xbf30('0x16'),_0x5d9ac1,_0x36f0aa);_0x100540(_0x36f0aa);});});}
\ No newline at end of file
index c71587c..821e83d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a9d=['./dashboardItem.events','update','emit','register','length'];(function(_0x5753ea,_0x4d30f3){var _0x533ed7=function(_0x4f3290){while(--_0x4f3290){_0x5753ea['push'](_0x5753ea['shift']());}};_0x533ed7(++_0x4d30f3);}(_0x4a9d,0x1f4));var _0xd4a9=function(_0x4fddfd,_0x3c25c2){_0x4fddfd=_0x4fddfd-0x0;var _0x178649=_0x4a9d[_0x4fddfd];return _0x178649;};'use strict';var DashboardItemEvents=require(_0xd4a9('0x0'));var events=['save','remove',_0xd4a9('0x1')];function createListener(_0x5c61c2,_0x364505){return function(_0x53a529){_0x364505[_0xd4a9('0x2')](_0x5c61c2,_0x53a529);};}function removeListener(_0x465ded,_0x6dcc4c){return function(){DashboardItemEvents['removeListener'](_0x465ded,_0x6dcc4c);};}exports[_0xd4a9('0x3')]=function(_0x458211){for(var _0x324a00=0x0,_0x338dfb=events[_0xd4a9('0x4')];_0x324a00<_0x338dfb;_0x324a00++){var _0x4f813a=events[_0x324a00];var _0x54d5eb=createListener('dashboardItem:'+_0x4f813a,_0x458211);DashboardItemEvents['on'](_0x4f813a,_0x54d5eb);}};
\ No newline at end of file
+var _0x947b=['emit','dashboardItem:','./dashboardItem.events','remove'];(function(_0x2b256c,_0x148dff){var _0x42bf13=function(_0x5ca7aa){while(--_0x5ca7aa){_0x2b256c['push'](_0x2b256c['shift']());}};_0x42bf13(++_0x148dff);}(_0x947b,0xc2));var _0xb947=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x947b[_0x3b380d];return _0x54502b;};'use strict';var DashboardItemEvents=require(_0xb947('0x0'));var events=['save',_0xb947('0x1'),'update'];function createListener(_0x470212,_0x39e0a5){return function(_0x49da98){_0x39e0a5[_0xb947('0x2')](_0x470212,_0x49da98);};}function removeListener(_0x6f1944,_0x17a0ed){return function(){DashboardItemEvents['removeListener'](_0x6f1944,_0x17a0ed);};}exports['register']=function(_0x3a803d){for(var _0x540afa=0x0,_0x21bf80=events['length'];_0x540afa<_0x21bf80;_0x540afa++){var _0x2ddfc4=events[_0x540afa];var _0x15bdfd=createListener(_0xb947('0x3')+_0x2ddfc4,_0x3a803d);DashboardItemEvents['on'](_0x2ddfc4,_0x15bdfd);}};
\ No newline at end of file
index 055cc1b..4db4735 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd1d=['multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./dashboardItem.controller','get','/:id','isAuthenticated','show','update','delete','destroy','exports'];(function(_0x4ec8e1,_0x2c74ba){var _0x3c5e59=function(_0x7c1210){while(--_0x7c1210){_0x4ec8e1['push'](_0x4ec8e1['shift']());}};_0x3c5e59(++_0x2c74ba);}(_0xbd1d,0x80));var _0xdbd1=function(_0x1eff59,_0x195aa6){_0x1eff59=_0x1eff59-0x0;var _0xa061cd=_0xbd1d[_0x1eff59];return _0xa061cd;};'use strict';var multer=require(_0xdbd1('0x0'));var util=require('util');var path=require(_0xdbd1('0x1'));var timeout=require(_0xdbd1('0x2'));var express=require('express');var router=express[_0xdbd1('0x3')]();var fs_extra=require(_0xdbd1('0x4'));var auth=require(_0xdbd1('0x5'));var interaction=require(_0xdbd1('0x6'));var config=require('../../config/environment');var controller=require(_0xdbd1('0x7'));router[_0xdbd1('0x8')](_0xdbd1('0x9'),auth[_0xdbd1('0xa')](),controller[_0xdbd1('0xb')]);router['post']('/',auth[_0xdbd1('0xa')](),controller['create']);router['put'](_0xdbd1('0x9'),auth['isAuthenticated'](),controller[_0xdbd1('0xc')]);router[_0xdbd1('0xd')]('/:id',auth[_0xdbd1('0xa')](),controller[_0xdbd1('0xe')]);module[_0xdbd1('0xf')]=router;
\ No newline at end of file
+var _0xa9e7=['/:id','isAuthenticated','show','post','create','update','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./dashboardItem.controller','get'];(function(_0x119afa,_0x42f101){var _0x3256b7=function(_0x2c63cc){while(--_0x2c63cc){_0x119afa['push'](_0x119afa['shift']());}};_0x3256b7(++_0x42f101);}(_0xa9e7,0x8f));var _0x7a9e=function(_0x5efc4e,_0x16a77b){_0x5efc4e=_0x5efc4e-0x0;var _0x47a4a7=_0xa9e7[_0x5efc4e];return _0x47a4a7;};'use strict';var multer=require(_0x7a9e('0x0'));var util=require(_0x7a9e('0x1'));var path=require(_0x7a9e('0x2'));var timeout=require(_0x7a9e('0x3'));var express=require(_0x7a9e('0x4'));var router=express[_0x7a9e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x7a9e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x7a9e('0x7'));var controller=require(_0x7a9e('0x8'));router[_0x7a9e('0x9')](_0x7a9e('0xa'),auth[_0x7a9e('0xb')](),controller[_0x7a9e('0xc')]);router[_0x7a9e('0xd')]('/',auth[_0x7a9e('0xb')](),controller[_0x7a9e('0xe')]);router['put']('/:id',auth[_0x7a9e('0xb')](),controller[_0x7a9e('0xf')]);router['delete']('/:id',auth[_0x7a9e('0xb')](),controller['destroy']);module[_0x7a9e('0x10')]=router;
\ No newline at end of file
index 7153637..4df2357 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x960a=['STRING','ENUM','first','second','sequelize','exports'];(function(_0x934425,_0x5af72f){var _0x31d596=function(_0x219869){while(--_0x219869){_0x934425['push'](_0x934425['shift']());}};_0x31d596(++_0x5af72f);}(_0x960a,0xf4));var _0xa960=function(_0xe5b62d,_0x28d4b0){_0xe5b62d=_0xe5b62d-0x0;var _0x848e9a=_0x960a[_0xe5b62d];return _0x848e9a;};'use strict';var Sequelize=require(_0xa960('0x0'));module[_0xa960('0x1')]={'name':{'type':Sequelize[_0xa960('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0xa960('0x3')](_0xa960('0x4'),_0xa960('0x5'),'third'),'allowNull':![],'defaultValue':_0xa960('0x4')},'description':{'type':Sequelize[_0xa960('0x2')]}};
\ No newline at end of file
+var _0x1c05=['second','sequelize','exports','ENUM','first'];(function(_0x5c6636,_0x22e2d1){var _0x4cc6e8=function(_0x5caa38){while(--_0x5caa38){_0x5c6636['push'](_0x5c6636['shift']());}};_0x4cc6e8(++_0x22e2d1);}(_0x1c05,0x65));var _0x51c0=function(_0x36468e,_0x4f75eb){_0x36468e=_0x36468e-0x0;var _0x5e4f09=_0x1c05[_0x36468e];return _0x5e4f09;};'use strict';var Sequelize=require(_0x51c0('0x0'));module[_0x51c0('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'level':{'type':Sequelize[_0x51c0('0x2')](_0x51c0('0x3'),_0x51c0('0x4'),'third'),'allowNull':![],'defaultValue':_0x51c0('0x3')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 19cb0f7..3100f71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc76e=['includeAll','include','findAll','catch','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','get','Dispositions','error','stack','name','index','map','Disposition','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','order','sort','where','filter','VIRTUAL','merge','options'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc76e,0x10c));var _0xec76=function(_0x332b9e,_0x4d3c84){_0x332b9e=_0x332b9e-0x0;var _0x1e63da=_0xc76e[_0x332b9e];return _0x1e63da;};'use strict';var emlformat=require(_0xec76('0x0'));var rimraf=require(_0xec76('0x1'));var zipdir=require(_0xec76('0x2'));var jsonpatch=require(_0xec76('0x3'));var rp=require(_0xec76('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xec76('0x5'));var util=require(_0xec76('0x6'));var path=require('path');var sox=require(_0xec76('0x7'));var csv=require('to-csv');var ejs=require(_0xec76('0x8'));var fs=require('fs');var fs_extra=require(_0xec76('0x9'));var _=require(_0xec76('0xa'));var squel=require(_0xec76('0xb'));var crypto=require(_0xec76('0xc'));var jsforce=require(_0xec76('0xd'));var deskjs=require(_0xec76('0xe'));var toCsv=require(_0xec76('0xf'));var querystring=require(_0xec76('0x10'));var Papa=require('papaparse');var Redis=require(_0xec76('0x11'));var authService=require(_0xec76('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xec76('0x13'));var hardwareService=require(_0xec76('0x14'));var logger=require('../../config/logger')(_0xec76('0x15'));var utils=require(_0xec76('0x16'));var config=require(_0xec76('0x17'));var licenseUtil=require(_0xec76('0x18'));var db=require(_0xec76('0x19'))['db'];function respondWithStatusCode(_0x31c45d,_0x70ad76){_0x70ad76=_0x70ad76||0xcc;return function(_0x228f4b){if(_0x228f4b){return _0x31c45d[_0xec76('0x1a')](_0x70ad76);}return _0x31c45d[_0xec76('0x1b')](_0x70ad76)[_0xec76('0x1c')]();};}function respondWithResult(_0xec7def,_0x24400f){_0x24400f=_0x24400f||0xc8;return function(_0x23826b){if(_0x23826b){return _0xec7def[_0xec76('0x1b')](_0x24400f)[_0xec76('0x1d')](_0x23826b);}};}function respondWithFilteredResult(_0x4c544a,_0xe2bf8d){return function(_0x490c76){if(_0x490c76){var _0x2fe444=typeof _0xe2bf8d[_0xec76('0x1e')]===_0xec76('0x1f')&&typeof _0xe2bf8d[_0xec76('0x20')]===_0xec76('0x1f');var _0x17931d=_0x490c76['count'];var _0x4a591a=_0x2fe444?0x0:_0xe2bf8d[_0xec76('0x1e')];var _0x300ee6=_0x2fe444?_0x490c76[_0xec76('0x21')]:_0xe2bf8d[_0xec76('0x1e')]+_0xe2bf8d[_0xec76('0x20')];var _0xbcd2f3;if(_0x300ee6>=_0x17931d){_0x300ee6=_0x17931d;_0xbcd2f3=0xc8;}else{_0xbcd2f3=0xce;}_0x4c544a[_0xec76('0x1b')](_0xbcd2f3);return _0x4c544a[_0xec76('0x22')](_0xec76('0x23'),_0x4a591a+'-'+_0x300ee6+'/'+_0x17931d)[_0xec76('0x1d')](_0x490c76);}return null;};}function patchUpdates(_0x55a5f3){return function(_0x446d43){try{jsonpatch['apply'](_0x446d43,_0x55a5f3,!![]);}catch(_0x1ef320){return BPromise[_0xec76('0x24')](_0x1ef320);}return _0x446d43[_0xec76('0x25')]();};}function saveUpdates(_0x233ee4,_0x3627b5){return function(_0x175119){if(_0x175119){return _0x175119[_0xec76('0x26')](_0x233ee4)['then'](function(_0x5324f7){return _0x5324f7;});}return null;};}function removeEntity(_0x91592a,_0x50aa67){return function(_0x3b3187){if(_0x3b3187){return _0x3b3187[_0xec76('0x27')]()[_0xec76('0x28')](function(){var _0x2fe9ff=_0x3b3187[_0xec76('0x29')]({'plain':!![]});var _0x4957b4=_0xec76('0x2a');return db['UserProfileResource']['destroy']({'where':{'type':_0x4957b4,'resourceId':_0x2fe9ff['id']}})['then'](function(){return _0x3b3187;});})[_0xec76('0x28')](function(){_0x91592a[_0xec76('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x285e4b,_0xe2ddff){return function(_0x6585f2){if(!_0x6585f2){_0x285e4b[_0xec76('0x1a')](0x194);}return _0x6585f2;};}function handleError(_0x26e31a,_0x214a2c){_0x214a2c=_0x214a2c||0x1f4;return function(_0x325745){logger[_0xec76('0x2b')](_0x325745[_0xec76('0x2c')]);if(_0x325745['name']){delete _0x325745[_0xec76('0x2d')];}_0x26e31a[_0xec76('0x1b')](_0x214a2c)['send'](_0x325745);};}exports[_0xec76('0x2e')]=function(_0x40e79d,_0x3cd4de){var _0x3ec7b6={},_0x4f76ad={},_0x4c2011={'count':0x0,'rows':[]};var _0x149f73=_[_0xec76('0x2f')](db[_0xec76('0x30')][_0xec76('0x31')],function(_0x52f654){return{'name':_0x52f654[_0xec76('0x32')],'type':_0x52f654[_0xec76('0x33')][_0xec76('0x34')]};});_0x4f76ad[_0xec76('0x35')]=_[_0xec76('0x2f')](_0x149f73,_0xec76('0x2d'));_0x4f76ad[_0xec76('0x36')]=_[_0xec76('0x37')](_0x40e79d[_0xec76('0x36')]);_0x4f76ad[_0xec76('0x38')]=_[_0xec76('0x39')](_0x4f76ad[_0xec76('0x35')],_0x4f76ad[_0xec76('0x36')]);_0x3ec7b6['attributes']=_[_0xec76('0x39')](_0x4f76ad[_0xec76('0x35')],qs[_0xec76('0x3a')](_0x40e79d[_0xec76('0x36')][_0xec76('0x3a')]));_0x3ec7b6[_0xec76('0x3b')]=_0x3ec7b6[_0xec76('0x3b')][_0xec76('0x3c')]?_0x3ec7b6['attributes']:_0x4f76ad[_0xec76('0x35')];if(!_0x40e79d[_0xec76('0x36')]['hasOwnProperty']('nolimit')){_0x3ec7b6['limit']=qs[_0xec76('0x20')](_0x40e79d[_0xec76('0x36')][_0xec76('0x20')]);_0x3ec7b6[_0xec76('0x1e')]=qs[_0xec76('0x1e')](_0x40e79d[_0xec76('0x36')][_0xec76('0x1e')]);}_0x3ec7b6[_0xec76('0x3d')]=qs[_0xec76('0x3e')](_0x40e79d['query']['sort']);_0x3ec7b6[_0xec76('0x3f')]=qs['filters'](_['pick'](_0x40e79d[_0xec76('0x36')],_0x4f76ad[_0xec76('0x38')]),_0x149f73);if(_0x40e79d[_0xec76('0x36')][_0xec76('0x40')]){_0x3ec7b6[_0xec76('0x3f')]=_['merge'](_0x3ec7b6[_0xec76('0x3f')],{'$or':_[_0xec76('0x2f')](_0x149f73,function(_0x36b777){if(_0x36b777[_0xec76('0x33')]!==_0xec76('0x41')){var _0x2ba16c={};_0x2ba16c[_0x36b777[_0xec76('0x2d')]]={'$like':'%'+_0x40e79d[_0xec76('0x36')][_0xec76('0x40')]+'%'};return _0x2ba16c;}})});}_0x3ec7b6=_[_0xec76('0x42')]({},_0x3ec7b6,_0x40e79d[_0xec76('0x43')]);var _0x2a21d9={'where':_0x3ec7b6[_0xec76('0x3f')]};return db[_0xec76('0x30')][_0xec76('0x21')](_0x2a21d9)['then'](function(_0x368362){_0x4c2011[_0xec76('0x21')]=_0x368362;if(_0x40e79d[_0xec76('0x36')][_0xec76('0x44')]){_0x3ec7b6[_0xec76('0x45')]=[{'all':!![]}];}return db['Disposition'][_0xec76('0x46')](_0x3ec7b6);})[_0xec76('0x28')](function(_0xf2760a){_0x4c2011['rows']=_0xf2760a;return _0x4c2011;})['then'](respondWithFilteredResult(_0x3cd4de,_0x3ec7b6))[_0xec76('0x47')](handleError(_0x3cd4de,null));};exports[_0xec76('0x48')]=function(_0x4fce8c,_0x10f7d7){var _0x4a57eb={'raw':!![],'where':{'id':_0x4fce8c[_0xec76('0x49')]['id']}},_0x1c59e0={};_0x1c59e0[_0xec76('0x35')]=_[_0xec76('0x37')](db[_0xec76('0x30')][_0xec76('0x31')]);_0x1c59e0[_0xec76('0x36')]=_[_0xec76('0x37')](_0x4fce8c[_0xec76('0x36')]);_0x1c59e0[_0xec76('0x38')]=_[_0xec76('0x39')](_0x1c59e0[_0xec76('0x35')],_0x1c59e0[_0xec76('0x36')]);_0x4a57eb[_0xec76('0x3b')]=_[_0xec76('0x39')](_0x1c59e0[_0xec76('0x35')],qs[_0xec76('0x3a')](_0x4fce8c[_0xec76('0x36')]['fields']));_0x4a57eb[_0xec76('0x3b')]=_0x4a57eb['attributes'][_0xec76('0x3c')]?_0x4a57eb[_0xec76('0x3b')]:_0x1c59e0[_0xec76('0x35')];if(_0x4fce8c[_0xec76('0x36')][_0xec76('0x44')]){_0x4a57eb[_0xec76('0x45')]=[{'all':!![]}];}_0x4a57eb=_['merge']({},_0x4a57eb,_0x4fce8c[_0xec76('0x43')]);return db['Disposition'][_0xec76('0x4a')](_0x4a57eb)[_0xec76('0x28')](handleEntityNotFound(_0x10f7d7,null))['then'](respondWithResult(_0x10f7d7,null))['catch'](handleError(_0x10f7d7,null));};exports[_0xec76('0x4b')]=function(_0x2c2273,_0x1cc99c){return db['Disposition'][_0xec76('0x4b')](_0x2c2273['body'],{})[_0xec76('0x28')](function(_0x5673cb){var _0x3e9a64=_0x2c2273[_0xec76('0x4c')]['get']({'plain':!![]});if(!_0x3e9a64)throw new Error(_0xec76('0x4d'));if(_0x3e9a64[_0xec76('0x4e')]==='user'){var _0x48e3d5=_0x5673cb[_0xec76('0x29')]({'plain':!![]});var _0x46fb50=_0xec76('0x2a');return db[_0xec76('0x4f')]['find']({'where':{'name':_0x46fb50,'userProfileId':_0x3e9a64[_0xec76('0x50')]},'raw':!![]})[_0xec76('0x28')](function(_0x10b333){if(_0x10b333&&_0x10b333[_0xec76('0x51')]===0x0){return db[_0xec76('0x52')][_0xec76('0x4b')]({'name':_0x48e3d5[_0xec76('0x2d')],'resourceId':_0x48e3d5['id'],'type':_0x10b333['name'],'sectionId':_0x10b333['id']},{})[_0xec76('0x28')](function(){return _0x5673cb;});}else{return _0x5673cb;}})[_0xec76('0x47')](function(_0x577945){logger[_0xec76('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x577945);throw _0x577945;});}return _0x5673cb;})['then'](respondWithResult(_0x1cc99c,0xc9))[_0xec76('0x47')](handleError(_0x1cc99c,null));};exports[_0xec76('0x26')]=function(_0x25ef4b,_0x67e971){if(_0x25ef4b['body']['id']){delete _0x25ef4b[_0xec76('0x53')]['id'];}return db[_0xec76('0x30')][_0xec76('0x4a')]({'where':{'id':_0x25ef4b[_0xec76('0x49')]['id']}})[_0xec76('0x28')](handleEntityNotFound(_0x67e971,null))[_0xec76('0x28')](saveUpdates(_0x25ef4b[_0xec76('0x53')],null))['then'](respondWithResult(_0x67e971,null))['catch'](handleError(_0x67e971,null));};exports[_0xec76('0x27')]=function(_0x558991,_0x347ade){return db['Disposition'][_0xec76('0x4a')]({'where':{'id':_0x558991[_0xec76('0x49')]['id']}})[_0xec76('0x28')](handleEntityNotFound(_0x347ade,null))[_0xec76('0x28')](removeEntity(_0x347ade,null))[_0xec76('0x47')](handleError(_0x347ade,null));};
\ No newline at end of file
+var _0x9c51=['find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Dispositions','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','rimraf','fast-json-patch','request-promise','moment','mustache','path','ejs','fs-extra','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/advancedSearch','api','../../config/environment','sendStatus','status','end','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','get','UserProfileResource','destroy','error','name','index','map','Disposition','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','pick','filter','where','merge','VIRTUAL','options','include','findAll','rows','show','includeAll'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0x9c51,0x13c));var _0x19c5=function(_0xefed2d,_0x2ee25e){_0xefed2d=_0xefed2d-0x0;var _0x2e86d3=_0x9c51[_0xefed2d];return _0x2e86d3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x19c5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x19c5('0x1'));var rp=require(_0x19c5('0x2'));var moment=require(_0x19c5('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x19c5('0x4'));var util=require('util');var path=require(_0x19c5('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x19c5('0x6'));var fs=require('fs');var fs_extra=require(_0x19c5('0x7'));var _=require('lodash');var squel=require(_0x19c5('0x8'));var crypto=require('crypto');var jsforce=require(_0x19c5('0x9'));var deskjs=require(_0x19c5('0xa'));var toCsv=require(_0x19c5('0xb'));var querystring=require('querystring');var Papa=require(_0x19c5('0xc'));var Redis=require(_0x19c5('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x19c5('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x19c5('0xf'));var utils=require('../../config/utils');var config=require(_0x19c5('0x10'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a36e1,_0x9523b2){_0x9523b2=_0x9523b2||0xcc;return function(_0x5ac08f){if(_0x5ac08f){return _0x2a36e1[_0x19c5('0x11')](_0x9523b2);}return _0x2a36e1[_0x19c5('0x12')](_0x9523b2)[_0x19c5('0x13')]();};}function respondWithResult(_0x191fee,_0x5f39ff){_0x5f39ff=_0x5f39ff||0xc8;return function(_0x3d1517){if(_0x3d1517){return _0x191fee[_0x19c5('0x12')](_0x5f39ff)['json'](_0x3d1517);}};}function respondWithFilteredResult(_0xe8417d,_0x4c4c5f){return function(_0xb23af6){if(_0xb23af6){var _0x1a920f=typeof _0x4c4c5f[_0x19c5('0x14')]===_0x19c5('0x15')&&typeof _0x4c4c5f[_0x19c5('0x16')]===_0x19c5('0x15');var _0x1ad81e=_0xb23af6[_0x19c5('0x17')];var _0x51d630=_0x1a920f?0x0:_0x4c4c5f[_0x19c5('0x14')];var _0x225c0f=_0x1a920f?_0xb23af6[_0x19c5('0x17')]:_0x4c4c5f[_0x19c5('0x14')]+_0x4c4c5f[_0x19c5('0x16')];var _0x914800;if(_0x225c0f>=_0x1ad81e){_0x225c0f=_0x1ad81e;_0x914800=0xc8;}else{_0x914800=0xce;}_0xe8417d[_0x19c5('0x12')](_0x914800);return _0xe8417d['set'](_0x19c5('0x18'),_0x51d630+'-'+_0x225c0f+'/'+_0x1ad81e)['json'](_0xb23af6);}return null;};}function patchUpdates(_0x4e6636){return function(_0x3f3c9a){try{jsonpatch[_0x19c5('0x19')](_0x3f3c9a,_0x4e6636,!![]);}catch(_0x53d6f8){return BPromise[_0x19c5('0x1a')](_0x53d6f8);}return _0x3f3c9a[_0x19c5('0x1b')]();};}function saveUpdates(_0x197dd3,_0x13f88c){return function(_0x4be3b5){if(_0x4be3b5){return _0x4be3b5[_0x19c5('0x1c')](_0x197dd3)[_0x19c5('0x1d')](function(_0x1a4065){return _0x1a4065;});}return null;};}function removeEntity(_0x589bea,_0x56faea){return function(_0x532b4e){if(_0x532b4e){return _0x532b4e['destroy']()[_0x19c5('0x1d')](function(){var _0x58e2ec=_0x532b4e[_0x19c5('0x1e')]({'plain':!![]});var _0x5a9bc5='Dispositions';return db[_0x19c5('0x1f')][_0x19c5('0x20')]({'where':{'type':_0x5a9bc5,'resourceId':_0x58e2ec['id']}})[_0x19c5('0x1d')](function(){return _0x532b4e;});})[_0x19c5('0x1d')](function(){_0x589bea[_0x19c5('0x12')](0xcc)[_0x19c5('0x13')]();});}};}function handleEntityNotFound(_0x1cf4b0,_0x259127){return function(_0x2e358b){if(!_0x2e358b){_0x1cf4b0[_0x19c5('0x11')](0x194);}return _0x2e358b;};}function handleError(_0x22d0a2,_0x20b0b0){_0x20b0b0=_0x20b0b0||0x1f4;return function(_0x3484a6){logger[_0x19c5('0x21')](_0x3484a6['stack']);if(_0x3484a6['name']){delete _0x3484a6[_0x19c5('0x22')];}_0x22d0a2[_0x19c5('0x12')](_0x20b0b0)['send'](_0x3484a6);};}exports[_0x19c5('0x23')]=function(_0x497529,_0x3a526d){var _0x2dc71c={},_0xd9a514={},_0x583ed0={'count':0x0,'rows':[]};var _0x3b956a=_[_0x19c5('0x24')](db[_0x19c5('0x25')][_0x19c5('0x26')],function(_0x3da504){return{'name':_0x3da504[_0x19c5('0x27')],'type':_0x3da504[_0x19c5('0x28')][_0x19c5('0x29')]};});_0xd9a514['model']=_['map'](_0x3b956a,_0x19c5('0x22'));_0xd9a514[_0x19c5('0x2a')]=_[_0x19c5('0x2b')](_0x497529[_0x19c5('0x2a')]);_0xd9a514[_0x19c5('0x2c')]=_[_0x19c5('0x2d')](_0xd9a514[_0x19c5('0x2e')],_0xd9a514['query']);_0x2dc71c[_0x19c5('0x2f')]=_['intersection'](_0xd9a514[_0x19c5('0x2e')],qs[_0x19c5('0x30')](_0x497529[_0x19c5('0x2a')]['fields']));_0x2dc71c[_0x19c5('0x2f')]=_0x2dc71c['attributes'][_0x19c5('0x31')]?_0x2dc71c[_0x19c5('0x2f')]:_0xd9a514[_0x19c5('0x2e')];if(!_0x497529[_0x19c5('0x2a')][_0x19c5('0x32')](_0x19c5('0x33'))){_0x2dc71c[_0x19c5('0x16')]=qs[_0x19c5('0x16')](_0x497529['query'][_0x19c5('0x16')]);_0x2dc71c[_0x19c5('0x14')]=qs['offset'](_0x497529[_0x19c5('0x2a')]['offset']);}_0x2dc71c[_0x19c5('0x34')]=qs['sort'](_0x497529[_0x19c5('0x2a')]['sort']);_0x2dc71c['where']=qs[_0x19c5('0x2c')](_[_0x19c5('0x35')](_0x497529[_0x19c5('0x2a')],_0xd9a514['filters']),_0x3b956a);if(_0x497529['query'][_0x19c5('0x36')]){_0x2dc71c[_0x19c5('0x37')]=_[_0x19c5('0x38')](_0x2dc71c[_0x19c5('0x37')],{'$or':_[_0x19c5('0x24')](_0x3b956a,function(_0x52f90e){if(_0x52f90e[_0x19c5('0x28')]!==_0x19c5('0x39')){var _0x3a278c={};_0x3a278c[_0x52f90e[_0x19c5('0x22')]]={'$like':'%'+_0x497529['query'][_0x19c5('0x36')]+'%'};return _0x3a278c;}})});}_0x2dc71c=_['merge']({},_0x2dc71c,_0x497529[_0x19c5('0x3a')]);var _0x307fe0={'where':_0x2dc71c[_0x19c5('0x37')]};return db[_0x19c5('0x25')][_0x19c5('0x17')](_0x307fe0)[_0x19c5('0x1d')](function(_0x5864c8){_0x583ed0[_0x19c5('0x17')]=_0x5864c8;if(_0x497529[_0x19c5('0x2a')]['includeAll']){_0x2dc71c[_0x19c5('0x3b')]=[{'all':!![]}];}return db[_0x19c5('0x25')][_0x19c5('0x3c')](_0x2dc71c);})[_0x19c5('0x1d')](function(_0x407a91){_0x583ed0[_0x19c5('0x3d')]=_0x407a91;return _0x583ed0;})[_0x19c5('0x1d')](respondWithFilteredResult(_0x3a526d,_0x2dc71c))['catch'](handleError(_0x3a526d,null));};exports[_0x19c5('0x3e')]=function(_0x1e5278,_0x1b385c){var _0x26d4f4={'raw':!![],'where':{'id':_0x1e5278['params']['id']}},_0x3b26cf={};_0x3b26cf['model']=_[_0x19c5('0x2b')](db[_0x19c5('0x25')][_0x19c5('0x26')]);_0x3b26cf['query']=_[_0x19c5('0x2b')](_0x1e5278[_0x19c5('0x2a')]);_0x3b26cf['filters']=_[_0x19c5('0x2d')](_0x3b26cf[_0x19c5('0x2e')],_0x3b26cf[_0x19c5('0x2a')]);_0x26d4f4['attributes']=_[_0x19c5('0x2d')](_0x3b26cf[_0x19c5('0x2e')],qs['fields'](_0x1e5278[_0x19c5('0x2a')][_0x19c5('0x30')]));_0x26d4f4[_0x19c5('0x2f')]=_0x26d4f4[_0x19c5('0x2f')][_0x19c5('0x31')]?_0x26d4f4[_0x19c5('0x2f')]:_0x3b26cf[_0x19c5('0x2e')];if(_0x1e5278[_0x19c5('0x2a')][_0x19c5('0x3f')]){_0x26d4f4[_0x19c5('0x3b')]=[{'all':!![]}];}_0x26d4f4=_[_0x19c5('0x38')]({},_0x26d4f4,_0x1e5278['options']);return db['Disposition'][_0x19c5('0x40')](_0x26d4f4)['then'](handleEntityNotFound(_0x1b385c,null))[_0x19c5('0x1d')](respondWithResult(_0x1b385c,null))[_0x19c5('0x41')](handleError(_0x1b385c,null));};exports[_0x19c5('0x42')]=function(_0x403546,_0x233f66){return db[_0x19c5('0x25')][_0x19c5('0x42')](_0x403546[_0x19c5('0x43')],{})[_0x19c5('0x1d')](function(_0x260725){var _0x21eed=_0x403546[_0x19c5('0x44')]['get']({'plain':!![]});if(!_0x21eed)throw new Error(_0x19c5('0x45'));if(_0x21eed[_0x19c5('0x46')]===_0x19c5('0x44')){var _0x2ebf28=_0x260725[_0x19c5('0x1e')]({'plain':!![]});var _0x2cdfdc=_0x19c5('0x47');return db[_0x19c5('0x48')][_0x19c5('0x40')]({'where':{'name':_0x2cdfdc,'userProfileId':_0x21eed[_0x19c5('0x49')]},'raw':!![]})['then'](function(_0x55a441){if(_0x55a441&&_0x55a441['autoAssociation']===0x0){return db[_0x19c5('0x1f')]['create']({'name':_0x2ebf28[_0x19c5('0x22')],'resourceId':_0x2ebf28['id'],'type':_0x55a441[_0x19c5('0x22')],'sectionId':_0x55a441['id']},{})[_0x19c5('0x1d')](function(){return _0x260725;});}else{return _0x260725;}})[_0x19c5('0x41')](function(_0x3d1066){logger[_0x19c5('0x21')](_0x19c5('0x4a'),_0x3d1066);throw _0x3d1066;});}return _0x260725;})['then'](respondWithResult(_0x233f66,0xc9))['catch'](handleError(_0x233f66,null));};exports['update']=function(_0x40bac7,_0x3c1687){if(_0x40bac7[_0x19c5('0x43')]['id']){delete _0x40bac7[_0x19c5('0x43')]['id'];}return db[_0x19c5('0x25')][_0x19c5('0x40')]({'where':{'id':_0x40bac7['params']['id']}})[_0x19c5('0x1d')](handleEntityNotFound(_0x3c1687,null))[_0x19c5('0x1d')](saveUpdates(_0x40bac7['body'],null))[_0x19c5('0x1d')](respondWithResult(_0x3c1687,null))[_0x19c5('0x41')](handleError(_0x3c1687,null));};exports[_0x19c5('0x20')]=function(_0x1159d1,_0x4dc9a6){return db[_0x19c5('0x25')]['find']({'where':{'id':_0x1159d1[_0x19c5('0x4b')]['id']}})['then'](handleEntityNotFound(_0x4dc9a6,null))[_0x19c5('0x1d')](removeEntity(_0x4dc9a6,null))['catch'](handleError(_0x4dc9a6,null));};
\ No newline at end of file
index a16e463..79468c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfac6=['name_voice','ListId','name_chat','name','ChatWebsiteId','name_mail','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./disposition.attributes','exports','define','Disposition','tools_dispositions'];(function(_0x15d18f,_0x126b0e){var _0xd12bf7=function(_0x19e661){while(--_0x19e661){_0x15d18f['push'](_0x15d18f['shift']());}};_0xd12bf7(++_0x126b0e);}(_0xfac6,0xef));var _0x6fac=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xfac6[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x6fac('0x0'));var util=require(_0x6fac('0x1'));var logger=require(_0x6fac('0x2'))(_0x6fac('0x3'));var moment=require('moment');var BPromise=require(_0x6fac('0x4'));var rp=require(_0x6fac('0x5'));var fs=require('fs');var path=require(_0x6fac('0x6'));var rimraf=require('rimraf');var config=require(_0x6fac('0x7'));var attributes=require(_0x6fac('0x8'));module[_0x6fac('0x9')]=function(_0x563689,_0xfc6a5b){return _0x563689[_0x6fac('0xa')](_0x6fac('0xb'),attributes,{'tableName':_0x6fac('0xc'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x6fac('0xd'),'fields':['name',_0x6fac('0xe')]},{'unique':!![],'name':_0x6fac('0xf'),'fields':[_0x6fac('0x10'),_0x6fac('0x11')]},{'unique':!![],'name':_0x6fac('0x12'),'fields':[_0x6fac('0x10'),_0x6fac('0x13')]},{'unique':!![],'name':_0x6fac('0x14'),'fields':[_0x6fac('0x10'),_0x6fac('0x15')]},{'unique':!![],'name':_0x6fac('0x16'),'fields':[_0x6fac('0x10'),_0x6fac('0x17')]},{'unique':!![],'name':_0x6fac('0x18'),'fields':[_0x6fac('0x10'),_0x6fac('0x19')]},{'unique':!![],'name':_0x6fac('0x1a'),'fields':[_0x6fac('0x10'),_0x6fac('0x1b')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2fad=['path','../../config/environment','exports','define','Disposition','tools_dispositions','ListId','name_chat','name','ChatWebsiteId','name_mail','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','moment','bluebird','request-promise'];(function(_0x2a77c1,_0x480d48){var _0x2a0c77=function(_0x506be6){while(--_0x506be6){_0x2a77c1['push'](_0x2a77c1['shift']());}};_0x2a0c77(++_0x480d48);}(_0x2fad,0x1b5));var _0xd2fa=function(_0x156a0d,_0x3946ce){_0x156a0d=_0x156a0d-0x0;var _0x98a9ba=_0x2fad[_0x156a0d];return _0x98a9ba;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xd2fa('0x0'));var BPromise=require(_0xd2fa('0x1'));var rp=require(_0xd2fa('0x2'));var fs=require('fs');var path=require(_0xd2fa('0x3'));var rimraf=require('rimraf');var config=require(_0xd2fa('0x4'));var attributes=require('./disposition.attributes');module[_0xd2fa('0x5')]=function(_0x3ad60e,_0x1bdda6){return _0x3ad60e[_0xd2fa('0x6')](_0xd2fa('0x7'),attributes,{'tableName':_0xd2fa('0x8'),'paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':['name',_0xd2fa('0x9')]},{'unique':!![],'name':_0xd2fa('0xa'),'fields':[_0xd2fa('0xb'),_0xd2fa('0xc')]},{'unique':!![],'name':_0xd2fa('0xd'),'fields':['name',_0xd2fa('0xe')]},{'unique':!![],'name':_0xd2fa('0xf'),'fields':['name',_0xd2fa('0x10')]},{'unique':!![],'name':_0xd2fa('0x11'),'fields':[_0xd2fa('0xb'),_0xd2fa('0x12')]},{'unique':!![],'name':_0xd2fa('0x13'),'fields':[_0xd2fa('0xb'),_0xd2fa('0x14')]},{'unique':!![],'name':_0xd2fa('0x15'),'fields':[_0xd2fa('0xb'),'WhatsappAccountId']}],'timestamps':!![]});};
\ No newline at end of file
index c7c3479..962cbac 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(_0x1727ad,_0x140853){var _0x2eb61f=function(_0x42940b){while(--_0x42940b){_0x1727ad['push'](_0x1727ad['shift']());}};_0x2eb61f(++_0x140853);}(_0xa9e0,0x123));var _0x0a9e=function(_0x21aec3,_0x5c97e9){_0x21aec3=_0x21aec3-0x0;var _0x288bbc=_0xa9e0[_0x21aec3];return _0x288bbc;};'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(_0x17bd75,_0xf03beb){var _0x3b22c3=function(_0x412271){while(--_0x412271){_0x17bd75['push'](_0x17bd75['shift']());}};_0x3b22c3(++_0xf03beb);}(_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);});});}
\ No newline at end of file
index a6e4d41..5682375 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c68=['../../components/auth/service','../../components/interaction/service','../../config/environment','./disposition.controller','get','isAuthenticated','index','/:id','post','put','update','destroy','exports','multer','path','Router','fs-extra'];(function(_0x291fa8,_0x290d9c){var _0x21eb4c=function(_0x282084){while(--_0x282084){_0x291fa8['push'](_0x291fa8['shift']());}};_0x21eb4c(++_0x290d9c);}(_0x8c68,0x95));var _0x88c6=function(_0x3fe1ff,_0x24a8d7){_0x3fe1ff=_0x3fe1ff-0x0;var _0x3e933e=_0x8c68[_0x3fe1ff];return _0x3e933e;};'use strict';var multer=require(_0x88c6('0x0'));var util=require('util');var path=require(_0x88c6('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x88c6('0x2')]();var fs_extra=require(_0x88c6('0x3'));var auth=require(_0x88c6('0x4'));var interaction=require(_0x88c6('0x5'));var config=require(_0x88c6('0x6'));var controller=require(_0x88c6('0x7'));router[_0x88c6('0x8')]('/',auth[_0x88c6('0x9')](),controller[_0x88c6('0xa')]);router['get'](_0x88c6('0xb'),auth[_0x88c6('0x9')](),controller['show']);router[_0x88c6('0xc')]('/',auth[_0x88c6('0x9')](),controller['create']);router[_0x88c6('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x88c6('0xe')]);router['delete'](_0x88c6('0xb'),auth[_0x88c6('0x9')](),controller[_0x88c6('0xf')]);module[_0x88c6('0x10')]=router;
\ No newline at end of file
+var _0x133d=['express','Router','fs-extra','../../config/environment','./disposition.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','util','connect-timeout'];(function(_0x572a03,_0x11ba9b){var _0x4f7283=function(_0x906b0b){while(--_0x906b0b){_0x572a03['push'](_0x572a03['shift']());}};_0x4f7283(++_0x11ba9b);}(_0x133d,0xa8));var _0xd133=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0x133d[_0x37c22c];return _0x119d79;};'use strict';var multer=require(_0xd133('0x0'));var util=require(_0xd133('0x1'));var path=require('path');var timeout=require(_0xd133('0x2'));var express=require(_0xd133('0x3'));var router=express[_0xd133('0x4')]();var fs_extra=require(_0xd133('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xd133('0x6'));var controller=require(_0xd133('0x7'));router[_0xd133('0x8')]('/',auth[_0xd133('0x9')](),controller[_0xd133('0xa')]);router[_0xd133('0x8')](_0xd133('0xb'),auth[_0xd133('0x9')](),controller[_0xd133('0xc')]);router[_0xd133('0xd')]('/',auth[_0xd133('0x9')](),controller[_0xd133('0xe')]);router[_0xd133('0xf')]('/:id',auth[_0xd133('0x9')](),controller[_0xd133('0x10')]);router[_0xd133('0x11')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xd133('0x12')]=router;
\ No newline at end of file
index 10386a1..e351ad5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca26=['IAX','DADHI','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','sequelize','exports','STRING','yes','xCALLY\x20Motion\x20Fax','localstationid','ENUM','2400','4800','7200','12000','14400','9600','INTEGER','SIP'];(function(_0xa3b211,_0x4d12b1){var _0x2b7f51=function(_0x486c57){while(--_0x486c57){_0xa3b211['push'](_0xa3b211['shift']());}};_0x2b7f51(++_0x4d12b1);}(_0xca26,0x1b3));var _0x6ca2=function(_0x58ef68,_0x557e57){_0x58ef68=_0x58ef68-0x0;var _0x4beeb7=_0xca26[_0x58ef68];return _0x4beeb7;};'use strict';var Sequelize=require(_0x6ca2('0x0'));module[_0x6ca2('0x1')]={'name':{'type':Sequelize[_0x6ca2('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x6ca2('0x2')]},'ecm':{'type':Sequelize['ENUM'](_0x6ca2('0x3'),'no'),'defaultValue':_0x6ca2('0x3')},'headerinfo':{'type':Sequelize[_0x6ca2('0x2')],'defaultValue':_0x6ca2('0x4')},'localstationid':{'type':Sequelize['STRING'],'unique':_0x6ca2('0x5')},'minrate':{'type':Sequelize[_0x6ca2('0x6')](_0x6ca2('0x7'),_0x6ca2('0x8'),_0x6ca2('0x9'),'9600',_0x6ca2('0xa'),_0x6ca2('0xb')),'defaultValue':_0x6ca2('0x8')},'maxrate':{'type':Sequelize[_0x6ca2('0x6')](_0x6ca2('0x7'),_0x6ca2('0x8'),_0x6ca2('0x9'),_0x6ca2('0xc'),_0x6ca2('0xa'),_0x6ca2('0xb')),'defaultValue':_0x6ca2('0xb')},'modem':{'type':Sequelize[_0x6ca2('0x2')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize[_0x6ca2('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x6ca2('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x6ca2('0xd')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x6ca2('0x6')](_0x6ca2('0xe'),_0x6ca2('0xf'),_0x6ca2('0x10'),_0x6ca2('0x11')),'defaultValue':_0x6ca2('0xe')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x6ca2('0x12')],'defaultValue':function(){return _0x6ca2('0x13');}},'notificationSound':{'type':Sequelize[_0x6ca2('0x14')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x6ca2('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x6ca2('0x14')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x6ca2('0x14')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x6ca2('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x6ca2('0xd')],'allowNull':!![],'defaultValue':null,'comment':_0x6ca2('0x15')},'mandatoryDisposition':{'type':Sequelize[_0x6ca2('0x14')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0xa796a3){if(!_0xa796a3)this['setDataValue'](_0x6ca2('0x16'),null);this[_0x6ca2('0x17')](_0x6ca2('0x18'),_0xa796a3);}}};
\ No newline at end of file
+var _0x7f89=['BOOLEAN','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','ENUM','xCALLY\x20Motion\x20Fax','localstationid','7200','9600','14400','4800','12000','v17,v27,v29','INTEGER','SIP','DADHI','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0xac151d,_0x4ea1d2){var _0x111dba=function(_0x13d7f4){while(--_0x13d7f4){_0xac151d['push'](_0xac151d['shift']());}};_0x111dba(++_0x4ea1d2);}(_0x7f89,0x73));var _0x97f8=function(_0xb4d947,_0x16b719){_0xb4d947=_0xb4d947-0x0;var _0x8c85d0=_0x7f89[_0xb4d947];return _0x8c85d0;};'use strict';var Sequelize=require(_0x97f8('0x0'));module[_0x97f8('0x1')]={'name':{'type':Sequelize[_0x97f8('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'ecm':{'type':Sequelize[_0x97f8('0x3')]('yes','no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0x97f8('0x2')],'defaultValue':_0x97f8('0x4')},'localstationid':{'type':Sequelize[_0x97f8('0x2')],'unique':_0x97f8('0x5')},'minrate':{'type':Sequelize[_0x97f8('0x3')]('2400','4800',_0x97f8('0x6'),_0x97f8('0x7'),'12000',_0x97f8('0x8')),'defaultValue':_0x97f8('0x9')},'maxrate':{'type':Sequelize['ENUM']('2400',_0x97f8('0x9'),_0x97f8('0x6'),_0x97f8('0x7'),_0x97f8('0xa'),'14400'),'defaultValue':_0x97f8('0x8')},'modem':{'type':Sequelize[_0x97f8('0x2')],'defaultValue':_0x97f8('0xb')},'gateway':{'type':Sequelize[_0x97f8('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x97f8('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x97f8('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x97f8('0x3')](_0x97f8('0xd'),'IAX',_0x97f8('0xe'),'KHOMP'),'defaultValue':_0x97f8('0xd')},'key':{'type':Sequelize[_0x97f8('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x97f8('0xf')],'defaultValue':function(){return _0x97f8('0x10');}},'notificationSound':{'type':Sequelize[_0x97f8('0x11')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x97f8('0x11')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x97f8('0x11')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x97f8('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x97f8('0x11')],'defaultValue':![],'comment':_0x97f8('0x12'),'set':function(_0x2f25f2){if(!_0x2f25f2)this[_0x97f8('0x13')](_0x97f8('0x14'),null);this[_0x97f8('0x13')](_0x97f8('0x15'),_0x2f25f2);}}};
\ No newline at end of file
index 13ab312..72d1dd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc273=['findOne','includeAll','removeAnswers','addInteraction','FaxInteraction','omit','Contact','User','Owner','fullname','internal','Tags','color','tag','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','priority','send','getApplications','from-voip-provider','exten','localstationid','app','appdata','Answer','push','Set','ecm','gateway','faxdetect','headerinfo','maxrate','minrate','modem','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','VoiceExtension','bulkCreate','updateAccountApplications','tech','updatedAt','ListId','findById','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','CmList','Contacts','DESC','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax','List','CmContact','Send\x20Fax\x20failed','Messages','Contact\x20not\x20found','spread','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','userFaxAccount:remove','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./faxAccount.socket','register','client','http','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','destroy','get','FaxAccounts','end','sendStatus','stack','name','index','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filters','pick','where','merge','VIRTUAL','filter','options','FaxAccount','include','findAll','rows','show','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','describe','addDisposition','FaxAccountId','Disposition','getDispositions','order','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers'];(function(_0x5b3792,_0x10fd35){var _0x544eaa=function(_0x58d75f){while(--_0x58d75f){_0x5b3792['push'](_0x5b3792['shift']());}};_0x544eaa(++_0x10fd35);}(_0xc273,0x1e3));var _0x3c27=function(_0x491468,_0x42f169){_0x491468=_0x491468-0x0;var _0x5b8c22=_0xc273[_0x491468];return _0x5b8c22;};'use strict';var emlformat=require(_0x3c27('0x0'));var rimraf=require(_0x3c27('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3c27('0x2'));var rp=require(_0x3c27('0x3'));var moment=require(_0x3c27('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3c27('0x5'));var util=require(_0x3c27('0x6'));var path=require(_0x3c27('0x7'));var sox=require('sox');var csv=require(_0x3c27('0x8'));var ejs=require(_0x3c27('0x9'));var fs=require('fs');var fs_extra=require(_0x3c27('0xa'));var _=require(_0x3c27('0xb'));var squel=require('squel');var crypto=require(_0x3c27('0xc'));var jsforce=require(_0x3c27('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x3c27('0x8'));var querystring=require(_0x3c27('0xe'));var Papa=require(_0x3c27('0xf'));var Redis=require(_0x3c27('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3c27('0x11'));var hardwareService=require(_0x3c27('0x12'));var logger=require(_0x3c27('0x13'))(_0x3c27('0x14'));var utils=require(_0x3c27('0x15'));var config=require(_0x3c27('0x16'));var licenseUtil=require(_0x3c27('0x17'));var db=require(_0x3c27('0x18'))['db'];config[_0x3c27('0x19')]=_[_0x3c27('0x1a')](config[_0x3c27('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3c27('0x19')]));require(_0x3c27('0x1b'))[_0x3c27('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0x3c27('0x1d')][_0x3c27('0x1e')]({'port':0x232c});var client9002=jayson[_0x3c27('0x1d')][_0x3c27('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x464f6f,_0x17c49b,_0x29c0de,_0x2c3587){return new BPromise(function(_0x13835a,_0x39c52e){var _0x7b7ec8=_0x2c3587||client;return _0x7b7ec8[_0x3c27('0x1f')](_0x464f6f,_0x29c0de)[_0x3c27('0x20')](function(_0x5477e8){logger[_0x3c27('0x21')](_0x3c27('0x22'),_0x17c49b,_0x3c27('0x23'));logger[_0x3c27('0x24')](_0x3c27('0x25'),_0x17c49b,_0x3c27('0x23'),JSON[_0x3c27('0x26')](_0x5477e8));if(_0x5477e8['error']){if(_0x5477e8[_0x3c27('0x27')][_0x3c27('0x28')]===0x1f4){logger['error']('FaxAccount,\x20%s,\x20%s',_0x17c49b,_0x5477e8[_0x3c27('0x27')]['message']);return _0x39c52e(_0x5477e8[_0x3c27('0x27')]['message']);}logger[_0x3c27('0x27')](_0x3c27('0x22'),_0x17c49b,_0x5477e8['error'][_0x3c27('0x29')]);return _0x13835a(_0x5477e8[_0x3c27('0x27')][_0x3c27('0x29')]);}else{logger['info'](_0x3c27('0x22'),_0x17c49b,'request\x20sent');_0x13835a(_0x5477e8['result'][_0x3c27('0x29')]);}})[_0x3c27('0x2a')](function(_0x2562b9){logger[_0x3c27('0x27')](_0x3c27('0x22'),_0x17c49b,_0x2562b9);_0x39c52e(_0x2562b9);});});}function respondWithStatusCode(_0x635bc9,_0x43368e){_0x43368e=_0x43368e||0xcc;return function(_0x298d06){if(_0x298d06){return _0x635bc9['sendStatus'](_0x43368e);}return _0x635bc9[_0x3c27('0x2b')](_0x43368e)['end']();};}function respondWithResult(_0x421ce2,_0xb918e6){_0xb918e6=_0xb918e6||0xc8;return function(_0x4083a5){if(_0x4083a5){return _0x421ce2['status'](_0xb918e6)[_0x3c27('0x2c')](_0x4083a5);}};}function respondWithFilteredResult(_0x1ced30,_0x567b21){return function(_0x2691f3){if(_0x2691f3){var _0x2ac85e=typeof _0x567b21[_0x3c27('0x2d')]===_0x3c27('0x2e')&&typeof _0x567b21[_0x3c27('0x2f')]===_0x3c27('0x2e');var _0x5b98bc=_0x2691f3[_0x3c27('0x30')];var _0xca9cae=_0x2ac85e?0x0:_0x567b21[_0x3c27('0x2d')];var _0x3b78de=_0x2ac85e?_0x2691f3[_0x3c27('0x30')]:_0x567b21['offset']+_0x567b21[_0x3c27('0x2f')];var _0x39de41;if(_0x3b78de>=_0x5b98bc){_0x3b78de=_0x5b98bc;_0x39de41=0xc8;}else{_0x39de41=0xce;}_0x1ced30[_0x3c27('0x2b')](_0x39de41);return _0x1ced30[_0x3c27('0x31')](_0x3c27('0x32'),_0xca9cae+'-'+_0x3b78de+'/'+_0x5b98bc)[_0x3c27('0x2c')](_0x2691f3);}return null;};}function patchUpdates(_0x5b3f1b){return function(_0xf489d5){try{jsonpatch[_0x3c27('0x33')](_0xf489d5,_0x5b3f1b,!![]);}catch(_0x1b487f){return BPromise[_0x3c27('0x34')](_0x1b487f);}return _0xf489d5['save']();};}function saveUpdates(_0x35d81b,_0x4afed3){return function(_0x5e31ee){if(_0x5e31ee){return _0x5e31ee['update'](_0x35d81b)[_0x3c27('0x20')](function(_0x4f2137){return _0x4f2137;});}return null;};}function removeEntity(_0x3d1241,_0x341fbe){return function(_0x4cb57c){if(_0x4cb57c){return _0x4cb57c[_0x3c27('0x35')]()[_0x3c27('0x20')](function(){var _0x48c092=_0x4cb57c[_0x3c27('0x36')]({'plain':!![]});var _0x307e9f=_0x3c27('0x37');return db['UserProfileResource']['destroy']({'where':{'type':_0x307e9f,'resourceId':_0x48c092['id']}})['then'](function(){return _0x4cb57c;});})[_0x3c27('0x20')](function(){_0x3d1241[_0x3c27('0x2b')](0xcc)[_0x3c27('0x38')]();});}};}function handleEntityNotFound(_0x3f5a6b,_0x531b0a){return function(_0x221bc1){if(!_0x221bc1){_0x3f5a6b[_0x3c27('0x39')](0x194);}return _0x221bc1;};}function handleError(_0x39d0bb,_0x5bfda9){_0x5bfda9=_0x5bfda9||0x1f4;return function(_0x2f21a3){logger[_0x3c27('0x27')](_0x2f21a3[_0x3c27('0x3a')]);if(_0x2f21a3[_0x3c27('0x3b')]){delete _0x2f21a3[_0x3c27('0x3b')];}_0x39d0bb[_0x3c27('0x2b')](_0x5bfda9)['send'](_0x2f21a3);};}exports[_0x3c27('0x3c')]=function(_0x2d78c8,_0x91203c){var _0x22f275={'include':[{'model':db[_0x3c27('0x3d')],'as':_0x3c27('0x3e')}]},_0xa81c6d={},_0x17c4ac={'count':0x0,'rows':[]};var _0x3c2182=_[_0x3c27('0x3f')](db['FaxAccount'][_0x3c27('0x40')],function(_0x2ac237){return{'name':_0x2ac237[_0x3c27('0x41')],'type':_0x2ac237[_0x3c27('0x42')][_0x3c27('0x43')]};});_0xa81c6d[_0x3c27('0x44')]=_[_0x3c27('0x3f')](_0x3c2182,_0x3c27('0x3b'));_0xa81c6d[_0x3c27('0x45')]=_[_0x3c27('0x46')](_0x2d78c8[_0x3c27('0x45')]);_0xa81c6d['filters']=_[_0x3c27('0x47')](_0xa81c6d[_0x3c27('0x44')],_0xa81c6d[_0x3c27('0x45')]);_0x22f275[_0x3c27('0x48')]=_[_0x3c27('0x47')](_0xa81c6d['model'],qs[_0x3c27('0x49')](_0x2d78c8[_0x3c27('0x45')][_0x3c27('0x49')]));_0x22f275[_0x3c27('0x48')]=_0x22f275[_0x3c27('0x48')][_0x3c27('0x4a')]?_0x22f275['attributes']:_0xa81c6d[_0x3c27('0x44')];if(!_0x2d78c8[_0x3c27('0x45')][_0x3c27('0x4b')](_0x3c27('0x4c'))){_0x22f275[_0x3c27('0x2f')]=qs[_0x3c27('0x2f')](_0x2d78c8[_0x3c27('0x45')][_0x3c27('0x2f')]);_0x22f275['offset']=qs[_0x3c27('0x2d')](_0x2d78c8[_0x3c27('0x45')][_0x3c27('0x2d')]);}_0x22f275['order']=qs[_0x3c27('0x4d')](_0x2d78c8[_0x3c27('0x45')][_0x3c27('0x4d')]);_0x22f275['where']=qs[_0x3c27('0x4e')](_[_0x3c27('0x4f')](_0x2d78c8[_0x3c27('0x45')],_0xa81c6d[_0x3c27('0x4e')]),_0x3c2182);if(_0x2d78c8[_0x3c27('0x45')]['filter']){_0x22f275[_0x3c27('0x50')]=_[_0x3c27('0x51')](_0x22f275[_0x3c27('0x50')],{'$or':_['map'](_0x3c2182,function(_0x3161ed){if(_0x3161ed[_0x3c27('0x42')]!==_0x3c27('0x52')){var _0x53df12={};_0x53df12[_0x3161ed['name']]={'$like':'%'+_0x2d78c8[_0x3c27('0x45')][_0x3c27('0x53')]+'%'};return _0x53df12;}})});}_0x22f275=_['merge']({},_0x22f275,_0x2d78c8[_0x3c27('0x54')]);var _0x466026={'where':_0x22f275['where']};return db[_0x3c27('0x55')][_0x3c27('0x30')](_0x466026)[_0x3c27('0x20')](function(_0x2fdc43){_0x17c4ac[_0x3c27('0x30')]=_0x2fdc43;if(_0x2d78c8[_0x3c27('0x45')]['includeAll']){_0x22f275[_0x3c27('0x56')]=[{'all':!![]}];}return db[_0x3c27('0x55')][_0x3c27('0x57')](_0x22f275);})[_0x3c27('0x20')](function(_0x3903c4){_0x17c4ac[_0x3c27('0x58')]=_0x3903c4;return _0x17c4ac;})[_0x3c27('0x20')](respondWithFilteredResult(_0x91203c,_0x22f275))[_0x3c27('0x2a')](handleError(_0x91203c,null));};exports[_0x3c27('0x59')]=function(_0x40ebfc,_0x54232c){var _0x441f39={'raw':![],'where':{'id':_0x40ebfc[_0x3c27('0x5a')]['id']},'include':[{'model':db[_0x3c27('0x3d')],'as':_0x3c27('0x3e')}]},_0x36b7ca={};_0x36b7ca[_0x3c27('0x44')]=_[_0x3c27('0x46')](db[_0x3c27('0x55')][_0x3c27('0x40')]);_0x36b7ca[_0x3c27('0x45')]=_['keys'](_0x40ebfc[_0x3c27('0x45')]);_0x36b7ca['filters']=_[_0x3c27('0x47')](_0x36b7ca['model'],_0x36b7ca['query']);_0x441f39[_0x3c27('0x48')]=_[_0x3c27('0x47')](_0x36b7ca[_0x3c27('0x44')],qs[_0x3c27('0x49')](_0x40ebfc[_0x3c27('0x45')][_0x3c27('0x49')]));_0x441f39[_0x3c27('0x48')]=_0x441f39[_0x3c27('0x48')][_0x3c27('0x4a')]?_0x441f39[_0x3c27('0x48')]:_0x36b7ca[_0x3c27('0x44')];if(_0x40ebfc[_0x3c27('0x45')]['includeAll']){_0x441f39[_0x3c27('0x56')]=[{'all':!![]}];}_0x441f39=_['merge']({},_0x441f39,_0x40ebfc[_0x3c27('0x54')]);return db['FaxAccount']['find'](_0x441f39)['then'](handleEntityNotFound(_0x54232c,null))[_0x3c27('0x20')](respondWithResult(_0x54232c,null))[_0x3c27('0x2a')](handleError(_0x54232c,null));};exports[_0x3c27('0x5b')]=function(_0x4dca29,_0x13b7d0){return db[_0x3c27('0x55')][_0x3c27('0x5b')](_0x4dca29[_0x3c27('0x5c')],{})[_0x3c27('0x20')](function(_0x1fc3b2){var _0x1e3412=_0x4dca29[_0x3c27('0x5d')][_0x3c27('0x36')]({'plain':!![]});if(!_0x1e3412)throw new Error(_0x3c27('0x5e'));if(_0x1e3412[_0x3c27('0x5f')]===_0x3c27('0x5d')){var _0x2ac43f=_0x1fc3b2[_0x3c27('0x36')]({'plain':!![]});var _0x4f0022=_0x3c27('0x37');return db[_0x3c27('0x60')]['find']({'where':{'name':_0x4f0022,'userProfileId':_0x1e3412[_0x3c27('0x61')]},'raw':!![]})[_0x3c27('0x20')](function(_0x51fca8){if(_0x51fca8&&_0x51fca8[_0x3c27('0x62')]===0x0){return db[_0x3c27('0x63')][_0x3c27('0x5b')]({'name':_0x2ac43f[_0x3c27('0x3b')],'resourceId':_0x2ac43f['id'],'type':_0x51fca8[_0x3c27('0x3b')],'sectionId':_0x51fca8['id']},{})[_0x3c27('0x20')](function(){return _0x1fc3b2;});}else{return _0x1fc3b2;}})[_0x3c27('0x2a')](function(_0x4e5139){logger[_0x3c27('0x27')](_0x3c27('0x64'),_0x4e5139);throw _0x4e5139;});}return _0x1fc3b2;})[_0x3c27('0x20')](respondWithResult(_0x13b7d0,0xc9))[_0x3c27('0x2a')](handleError(_0x13b7d0,null));};exports[_0x3c27('0x65')]=function(_0x5e9073,_0x46bc22){if(_0x5e9073[_0x3c27('0x5c')]['id']){delete _0x5e9073[_0x3c27('0x5c')]['id'];}return db[_0x3c27('0x55')][_0x3c27('0x66')]({'where':{'id':_0x5e9073[_0x3c27('0x5a')]['id']},'include':[{'model':db[_0x3c27('0x3d')],'as':_0x3c27('0x3e')}]})[_0x3c27('0x20')](handleEntityNotFound(_0x46bc22,null))[_0x3c27('0x20')](saveUpdates(_0x5e9073[_0x3c27('0x5c')],null))[_0x3c27('0x20')](respondWithResult(_0x46bc22,null))['catch'](handleError(_0x46bc22,null));};exports['destroy']=function(_0x54851e,_0xc36131){return db[_0x3c27('0x55')][_0x3c27('0x66')]({'where':{'id':_0x54851e[_0x3c27('0x5a')]['id']}})['then'](handleEntityNotFound(_0xc36131,null))[_0x3c27('0x20')](removeEntity(_0xc36131,null))[_0x3c27('0x2a')](handleError(_0xc36131,null));};exports[_0x3c27('0x67')]=function(_0x5b648b,_0x4bd980){return db[_0x3c27('0x55')][_0x3c27('0x67')]()['then'](respondWithResult(_0x4bd980,null))[_0x3c27('0x2a')](handleError(_0x4bd980,null));};exports[_0x3c27('0x68')]=function(_0x39eb76,_0x594f5b,_0x54fa91){if(_0x39eb76[_0x3c27('0x5c')]['id']){delete _0x39eb76['body']['id'];}return db[_0x3c27('0x55')]['find']({'where':{'id':_0x39eb76[_0x3c27('0x5a')]['id']}})[_0x3c27('0x20')](handleEntityNotFound(_0x594f5b,null))['then'](function(_0xd5c861){if(_0xd5c861){_0x39eb76[_0x3c27('0x5c')][_0x3c27('0x69')]=_0xd5c861['id'];return db[_0x3c27('0x6a')][_0x3c27('0x5b')](_0x39eb76[_0x3c27('0x5c')]);}})[_0x3c27('0x20')](respondWithResult(_0x594f5b,null))['catch'](handleError(_0x594f5b,null));};exports[_0x3c27('0x6b')]=function(_0x168fe6,_0x5a73f3,_0x40629c){var _0x48ee31={'raw':![],'where':{}};var _0x1322ea={};var _0x48860f={'count':0x0,'rows':[]};return db[_0x3c27('0x55')]['findOne']({'where':{'id':_0x168fe6[_0x3c27('0x5a')]['id']}})[_0x3c27('0x20')](handleEntityNotFound(_0x5a73f3,null))[_0x3c27('0x20')](function(_0x200fa2){if(_0x200fa2){_0x1322ea[_0x3c27('0x44')]=_[_0x3c27('0x46')](db[_0x3c27('0x6a')]['rawAttributes']);_0x1322ea[_0x3c27('0x45')]=_[_0x3c27('0x46')](_0x168fe6[_0x3c27('0x45')]);_0x1322ea[_0x3c27('0x4e')]=_[_0x3c27('0x47')](_0x1322ea['model'],_0x1322ea['query']);_0x48ee31[_0x3c27('0x48')]=_['intersection'](_0x1322ea[_0x3c27('0x44')],qs['fields'](_0x168fe6[_0x3c27('0x45')][_0x3c27('0x49')]));_0x48ee31[_0x3c27('0x48')]=_0x48ee31[_0x3c27('0x48')][_0x3c27('0x4a')]?_0x48ee31[_0x3c27('0x48')]:_0x1322ea[_0x3c27('0x44')];if(!_0x168fe6[_0x3c27('0x45')][_0x3c27('0x4b')](_0x3c27('0x4c'))){_0x48ee31[_0x3c27('0x2f')]=qs[_0x3c27('0x2f')](_0x168fe6['query'][_0x3c27('0x2f')]);_0x48ee31[_0x3c27('0x2d')]=qs['offset'](_0x168fe6['query'][_0x3c27('0x2d')]);}_0x48ee31[_0x3c27('0x6c')]=qs[_0x3c27('0x4d')](_0x168fe6[_0x3c27('0x45')][_0x3c27('0x4d')]);_0x48ee31['where']=qs['filters'](_[_0x3c27('0x4f')](_0x168fe6[_0x3c27('0x45')],_0x1322ea[_0x3c27('0x4e')]));_0x48ee31[_0x3c27('0x50')][_0x3c27('0x69')]=_0x200fa2['id'];if(_0x168fe6[_0x3c27('0x45')]['filter']){_0x48ee31['where']=_['merge'](_0x48ee31['where'],{'$or':_['map'](_0x48ee31[_0x3c27('0x48')],function(_0x56d34a){var _0x4b3668={};_0x4b3668[_0x56d34a]={'$like':'%'+_0x168fe6[_0x3c27('0x45')]['filter']+'%'};return _0x4b3668;})});}_0x48ee31=_[_0x3c27('0x51')]({},_0x48ee31,_0x168fe6[_0x3c27('0x54')]);return db['Disposition'][_0x3c27('0x30')]({'where':_0x48ee31[_0x3c27('0x50')]})[_0x3c27('0x20')](function(_0x4d9de6){_0x48860f[_0x3c27('0x30')]=_0x4d9de6;if(_0x168fe6[_0x3c27('0x45')]['includeAll']){_0x48ee31[_0x3c27('0x56')]=[{'all':!![]}];}return db[_0x3c27('0x6a')][_0x3c27('0x57')](_0x48ee31);})[_0x3c27('0x20')](function(_0x960c63){_0x48860f[_0x3c27('0x58')]=_0x960c63;return _0x48860f;});}})[_0x3c27('0x20')](respondWithFilteredResult(_0x5a73f3,_0x48ee31))[_0x3c27('0x2a')](handleError(_0x5a73f3,null));};exports[_0x3c27('0x6d')]=function(_0x14aa89,_0x367af3,_0x3b4b8a){return db['FaxAccount'][_0x3c27('0x66')]({'where':{'id':_0x14aa89['params']['id']}})[_0x3c27('0x20')](handleEntityNotFound(_0x367af3,null))[_0x3c27('0x20')](function(_0x2061e3){if(_0x2061e3){return _0x2061e3['removeDispositions'](_0x14aa89[_0x3c27('0x45')][_0x3c27('0x6e')]);}})[_0x3c27('0x20')](respondWithStatusCode(_0x367af3,null))['catch'](handleError(_0x367af3,null));};exports[_0x3c27('0x6f')]=function(_0x463acf,_0x1edf6d,_0x20613c){if(_0x463acf['body']['id']){delete _0x463acf['body']['id'];}return db[_0x3c27('0x55')]['find']({'where':{'id':_0x463acf[_0x3c27('0x5a')]['id']}})[_0x3c27('0x20')](handleEntityNotFound(_0x1edf6d,null))[_0x3c27('0x20')](function(_0x5386ff){if(_0x5386ff){_0x463acf[_0x3c27('0x5c')][_0x3c27('0x69')]=_0x5386ff['id'];return db[_0x3c27('0x70')]['create'](_0x463acf[_0x3c27('0x5c')]);}})[_0x3c27('0x20')](respondWithResult(_0x1edf6d,null))[_0x3c27('0x2a')](handleError(_0x1edf6d,null));};exports[_0x3c27('0x71')]=function(_0x19948e,_0x3c1c03,_0x49e698){var _0x3b071a={'raw':![],'where':{}};var _0x12b997={};var _0x1e7ec9={'count':0x0,'rows':[]};return db['FaxAccount'][_0x3c27('0x72')]({'where':{'id':_0x19948e['params']['id']}})['then'](handleEntityNotFound(_0x3c1c03,null))[_0x3c27('0x20')](function(_0x3b6f26){if(_0x3b6f26){_0x12b997['model']=_[_0x3c27('0x46')](db['CannedAnswer'][_0x3c27('0x40')]);_0x12b997[_0x3c27('0x45')]=_[_0x3c27('0x46')](_0x19948e['query']);_0x12b997[_0x3c27('0x4e')]=_[_0x3c27('0x47')](_0x12b997[_0x3c27('0x44')],_0x12b997[_0x3c27('0x45')]);_0x3b071a[_0x3c27('0x48')]=_[_0x3c27('0x47')](_0x12b997[_0x3c27('0x44')],qs['fields'](_0x19948e[_0x3c27('0x45')][_0x3c27('0x49')]));_0x3b071a['attributes']=_0x3b071a[_0x3c27('0x48')][_0x3c27('0x4a')]?_0x3b071a[_0x3c27('0x48')]:_0x12b997[_0x3c27('0x44')];if(!_0x19948e[_0x3c27('0x45')][_0x3c27('0x4b')](_0x3c27('0x4c'))){_0x3b071a[_0x3c27('0x2f')]=qs[_0x3c27('0x2f')](_0x19948e['query'][_0x3c27('0x2f')]);_0x3b071a[_0x3c27('0x2d')]=qs[_0x3c27('0x2d')](_0x19948e[_0x3c27('0x45')][_0x3c27('0x2d')]);}_0x3b071a[_0x3c27('0x6c')]=qs['sort'](_0x19948e['query']['sort']);_0x3b071a[_0x3c27('0x50')]=qs['filters'](_['pick'](_0x19948e[_0x3c27('0x45')],_0x12b997[_0x3c27('0x4e')]));_0x3b071a['where'][_0x3c27('0x69')]=_0x3b6f26['id'];if(_0x19948e[_0x3c27('0x45')][_0x3c27('0x53')]){_0x3b071a[_0x3c27('0x50')]=_[_0x3c27('0x51')](_0x3b071a[_0x3c27('0x50')],{'$or':_['map'](_0x3b071a['attributes'],function(_0x2e17ee){var _0x1b3157={};_0x1b3157[_0x2e17ee]={'$like':'%'+_0x19948e[_0x3c27('0x45')][_0x3c27('0x53')]+'%'};return _0x1b3157;})});}_0x3b071a=_[_0x3c27('0x51')]({},_0x3b071a,_0x19948e[_0x3c27('0x54')]);return db[_0x3c27('0x70')][_0x3c27('0x30')]({'where':_0x3b071a[_0x3c27('0x50')]})['then'](function(_0x5d8da0){_0x1e7ec9[_0x3c27('0x30')]=_0x5d8da0;if(_0x19948e['query'][_0x3c27('0x73')]){_0x3b071a[_0x3c27('0x56')]=[{'all':!![]}];}return db[_0x3c27('0x70')]['findAll'](_0x3b071a);})[_0x3c27('0x20')](function(_0x8dec60){_0x1e7ec9[_0x3c27('0x58')]=_0x8dec60;return _0x1e7ec9;});}})['then'](respondWithFilteredResult(_0x3c1c03,_0x3b071a))['catch'](handleError(_0x3c1c03,null));};exports[_0x3c27('0x74')]=function(_0x47e1f4,_0xbb3af7,_0x56ec3f){return db[_0x3c27('0x55')]['find']({'where':{'id':_0x47e1f4[_0x3c27('0x5a')]['id']}})[_0x3c27('0x20')](handleEntityNotFound(_0xbb3af7,null))[_0x3c27('0x20')](function(_0x1582b9){if(_0x1582b9){return _0x1582b9[_0x3c27('0x74')](_0x47e1f4[_0x3c27('0x45')][_0x3c27('0x6e')]);}})['then'](respondWithStatusCode(_0xbb3af7,null))['catch'](handleError(_0xbb3af7,null));};exports[_0x3c27('0x75')]=function(_0x42a77d,_0x2c6db0,_0xd42fa8){return db[_0x3c27('0x76')][_0x3c27('0x66')]({'where':{'id':_0x42a77d['params']['id']}})[_0x3c27('0x20')](handleEntityNotFound(_0x2c6db0,null))[_0x3c27('0x20')](function(_0x1d1b22){if(_0x1d1b22){return _0x1d1b22[_0x3c27('0x75')](_0x42a77d['body'][_0x3c27('0x6e')],_[_0x3c27('0x77')](_0x42a77d[_0x3c27('0x5c')],[_0x3c27('0x6e'),'id'])||{});}})[_0x3c27('0x20')](respondWithResult(_0x2c6db0,null))[_0x3c27('0x2a')](handleError(_0x2c6db0,null));};exports['getInteractions']=function(_0x353c21,_0x163b9d,_0x456a90){var _0x2527af={'raw':![],'where':{}};var _0x5ae00f={};var _0x4271d0={'count':0x0,'rows':[]};return db['FaxAccount'][_0x3c27('0x72')]({'where':{'id':_0x353c21[_0x3c27('0x5a')]['id']}})['then'](handleEntityNotFound(_0x163b9d,null))['then'](function(_0x4019ca){if(_0x4019ca){_0x5ae00f['model']=_[_0x3c27('0x46')](db[_0x3c27('0x76')][_0x3c27('0x40')]);_0x5ae00f[_0x3c27('0x45')]=_[_0x3c27('0x46')](_0x353c21[_0x3c27('0x45')]);_0x5ae00f[_0x3c27('0x4e')]=_[_0x3c27('0x47')](_0x5ae00f[_0x3c27('0x44')],_0x5ae00f['query']);_0x2527af[_0x3c27('0x48')]=_[_0x3c27('0x47')](_0x5ae00f['model'],qs['fields'](_0x353c21[_0x3c27('0x45')][_0x3c27('0x49')]));_0x2527af[_0x3c27('0x48')]=_0x2527af['attributes'][_0x3c27('0x4a')]?_0x2527af[_0x3c27('0x48')]:_0x5ae00f[_0x3c27('0x44')];if(!_0x353c21['query'][_0x3c27('0x4b')](_0x3c27('0x4c'))){_0x2527af['limit']=qs[_0x3c27('0x2f')](_0x353c21[_0x3c27('0x45')]['limit']);_0x2527af['offset']=qs['offset'](_0x353c21[_0x3c27('0x45')][_0x3c27('0x2d')]);}_0x2527af[_0x3c27('0x6c')]=qs['sort'](_0x353c21[_0x3c27('0x45')][_0x3c27('0x4d')]);_0x2527af[_0x3c27('0x50')]=qs[_0x3c27('0x4e')](_['pick'](_0x353c21[_0x3c27('0x45')],_0x5ae00f[_0x3c27('0x4e')]));_0x2527af[_0x3c27('0x50')][_0x3c27('0x69')]=_0x4019ca['id'];if(_0x353c21[_0x3c27('0x45')][_0x3c27('0x53')]){_0x2527af[_0x3c27('0x50')]=_[_0x3c27('0x51')](_0x2527af[_0x3c27('0x50')],{'$or':_['map'](_0x2527af[_0x3c27('0x48')],function(_0x231818){var _0x88610f={};_0x88610f[_0x231818]={'$like':'%'+_0x353c21[_0x3c27('0x45')][_0x3c27('0x53')]+'%'};return _0x88610f;})});}_0x2527af=_['merge']({},_0x2527af,_0x353c21['options']);return db['FaxInteraction'][_0x3c27('0x30')]({'where':_0x2527af[_0x3c27('0x50')]})[_0x3c27('0x20')](function(_0x517d31){_0x4271d0[_0x3c27('0x30')]=_0x517d31;if(_0x353c21[_0x3c27('0x45')][_0x3c27('0x73')]){_0x2527af[_0x3c27('0x56')]=[{'model':db['CmContact'],'as':_0x3c27('0x78'),'required':![]},{'model':db[_0x3c27('0x79')],'as':_0x3c27('0x7a'),'attributes':['name',_0x3c27('0x7b'),_0x3c27('0x7c')],'required':![]},{'model':db['Tag'],'as':_0x3c27('0x7d'),'attributes':['id',_0x3c27('0x3b'),_0x3c27('0x7e')],'where':_0x353c21[_0x3c27('0x45')][_0x3c27('0x7f')]?{'id':_0x353c21['query']['tag']}:undefined,'required':_0x353c21[_0x3c27('0x45')]['tag']?!![]:![]}];}return db[_0x3c27('0x76')][_0x3c27('0x57')](_0x2527af);})['then'](function(_0x3da135){_0x4271d0['rows']=_0x3da135;return _0x4271d0;});}})['then'](respondWithFilteredResult(_0x163b9d,_0x2527af))[_0x3c27('0x2a')](handleError(_0x163b9d,null));};exports[_0x3c27('0x80')]=function(_0x4fe7aa,_0x5f57ef){var _0x554a7d=_0x4fe7aa[_0x3c27('0x5a')]['id'];var _0x355b67=_0x4fe7aa['body'];var _0x4ada24=0xc8;var _0x23bc6e=null;return db[_0x3c27('0x81')][_0x3c27('0x82')]({'isolationLevel':db[_0x3c27('0x81')][_0x3c27('0x83')][_0x3c27('0x84')][_0x3c27('0x85')]},function(_0x3c4170){return db['FaxAccount'][_0x3c27('0x72')]({'where':{'id':_0x554a7d},'transaction':_0x3c4170})[_0x3c27('0x20')](function(_0x172150){if(_0x172150){return db[_0x3c27('0x86')][_0x3c27('0x35')]({'where':{'FaxAccountId':_0x554a7d},'transaction':_0x3c4170})[_0x3c27('0x20')](function(){var _0xf8fa61=_['map'](_0x355b67,function(_0x585040){_0x585040[_0x3c27('0x69')]=_0x554a7d;return _0x585040;});return db[_0x3c27('0x86')]['bulkCreate'](_0xf8fa61,{'transaction':_0x3c4170});});}else{_0x4ada24=0x194;_0x23bc6e=[];}});})[_0x3c27('0x20')](function(){if(_0x4ada24!==0x194){return db['FaxApplication']['findAndCountAll']({'where':{'FaxAccountId':_0x554a7d},'order':_0x3c27('0x87')})[_0x3c27('0x20')](function(_0x32f936){_0x23bc6e=_0x32f936;});}})['catch'](function(_0x4c4813){_0x4ada24=0x1f4;logger[_0x3c27('0x27')](_0x4c4813[_0x3c27('0x3a')]);if(_0x4c4813[_0x3c27('0x3b')]){delete _0x4c4813[_0x3c27('0x3b')];}_0x23bc6e=_0x4c4813;})['finally'](function(){if(_0x23bc6e===null){_0x5f57ef[_0x3c27('0x39')](_0x4ada24);}else{if(_0x4ada24===0x1f4){_0x5f57ef['status'](_0x4ada24)[_0x3c27('0x88')](_0x23bc6e);}else{_0x5f57ef[_0x3c27('0x2b')](_0x4ada24)[_0x3c27('0x2c')](_0x23bc6e);}}});};exports[_0x3c27('0x89')]=function(_0x388517,_0x24b871,_0x43aa11){var _0x466088={};var _0x4c96ca={};var _0x5d743d;var _0xec4dfb;return db['FaxAccount'][_0x3c27('0x72')]({'where':{'id':_0x388517[_0x3c27('0x5a')]['id']}})['then'](handleEntityNotFound(_0x24b871,null))[_0x3c27('0x20')](function(_0x314622){if(_0x314622){_0x5d743d=_0x314622;_0x4c96ca[_0x3c27('0x44')]=_[_0x3c27('0x46')](db[_0x3c27('0x86')][_0x3c27('0x40')]);_0x4c96ca['query']=_[_0x3c27('0x46')](_0x388517[_0x3c27('0x45')]);_0x4c96ca[_0x3c27('0x4e')]=_[_0x3c27('0x47')](_0x4c96ca[_0x3c27('0x44')],_0x4c96ca[_0x3c27('0x45')]);_0x466088[_0x3c27('0x48')]=_[_0x3c27('0x47')](_0x4c96ca[_0x3c27('0x44')],qs[_0x3c27('0x49')](_0x388517[_0x3c27('0x45')]['fields']));_0x466088[_0x3c27('0x48')]=_0x466088[_0x3c27('0x48')][_0x3c27('0x4a')]?_0x466088[_0x3c27('0x48')]:_0x4c96ca[_0x3c27('0x44')];_0x466088[_0x3c27('0x6c')]=qs['sort'](_0x388517[_0x3c27('0x45')][_0x3c27('0x4d')]);_0x466088['where']=qs[_0x3c27('0x4e')](_[_0x3c27('0x4f')](_0x388517[_0x3c27('0x45')],_0x4c96ca['filters']));if(_0x388517['query']['filter']){_0x466088[_0x3c27('0x50')]=_[_0x3c27('0x51')](_0x466088[_0x3c27('0x50')],{'$or':_[_0x3c27('0x3f')](_0x466088[_0x3c27('0x48')],function(_0x4f678c){var _0x37897e={};_0x37897e[_0x4f678c]={'$like':'%'+_0x388517[_0x3c27('0x45')]['filter']+'%'};return _0x37897e;})});}_0x466088=_[_0x3c27('0x51')]({},_0x466088,_0x388517['options']);return _0x5d743d[_0x3c27('0x89')](_0x466088);}})[_0x3c27('0x20')](function(_0x25714e){if(_0x25714e){_0xec4dfb=_0x25714e['length'];if(!_0x388517['query']['hasOwnProperty'](_0x3c27('0x4c'))){_0x466088[_0x3c27('0x2f')]=qs[_0x3c27('0x2f')](_0x388517['query'][_0x3c27('0x2f')]);_0x466088[_0x3c27('0x2d')]=qs[_0x3c27('0x2d')](_0x388517['query']['offset']);}return _0x5d743d[_0x3c27('0x89')](_0x466088);}})[_0x3c27('0x20')](function(_0x3682bb){if(_0x3682bb){return _0x3682bb?{'count':_0xec4dfb,'rows':_0x3682bb}:null;}})[_0x3c27('0x20')](respondWithResult(_0x24b871,null))[_0x3c27('0x2a')](handleError(_0x24b871,null));};function Extension(_0xc80a76,_0x4ff649,_0x5d5b2a,_0x5ed76b){this['context']=_0x3c27('0x8a');this[_0x3c27('0x8b')]=_0xc80a76[_0x3c27('0x8c')];this[_0x3c27('0x8d')]=_0x5ed76b;this['type']='system';this['description']='Fax\x20Extension';this[_0x3c27('0x69')]=_0xc80a76['id'];this['priority']=_0x4ff649;this[_0x3c27('0x8e')]=_0x5d5b2a;}function createExtensionsReciveFax(_0x59eb15){var _0x3f12fe=0x1;var _0x386445=[];_0x386445['push'](new Extension(_0x59eb15,_0x3f12fe,'',_0x3c27('0x8f')));_0x3f12fe+=0x1;_0x386445[_0x3c27('0x90')](new Extension(_0x59eb15,_0x3f12fe,'CDR(type)=inbound-fax',_0x3c27('0x91')));_0x3f12fe+=0x1;for(var _0x528c10 in _0x59eb15){if(_0x59eb15[_0x3c27('0x4b')](_0x528c10)&&(_0x528c10===_0x3c27('0x92')||_0x528c10===_0x3c27('0x8c')||_0x528c10===_0x3c27('0x93')||_0x528c10===_0x3c27('0x94')||_0x528c10===_0x3c27('0x95')||_0x528c10===_0x3c27('0x96')||_0x528c10===_0x3c27('0x97')||_0x528c10===_0x3c27('0x98')||_0x528c10==='t38timeout')){_0x386445[_0x3c27('0x90')](new Extension(_0x59eb15,_0x3f12fe,_0x3c27('0x99')+_0x528c10+')='+_0x59eb15[_0x528c10],_0x3c27('0x91')));_0x3f12fe+=0x1;}}_0x386445['push'](new Extension(_0x59eb15,_0x3f12fe,'6',_0x3c27('0x9a')));_0x3f12fe+=0x1;_0x386445[_0x3c27('0x90')](new Extension(_0x59eb15,_0x3f12fe,_0x3c27('0x9b'),_0x3c27('0x9c')));_0x3f12fe=0x0;return _0x386445;}exports['addAccountApplications']=function(_0x381cc3,_0x560789,_0x2dd246){var _0x5717c0;return db[_0x3c27('0x81')][_0x3c27('0x82')](function(_0x19104c){return db[_0x3c27('0x55')][_0x3c27('0x5b')](_0x381cc3[_0x3c27('0x5c')],{'transaction':_0x19104c})[_0x3c27('0x20')](function(_0x3e3876){_0x5717c0=_0x3e3876[_0x3c27('0x36')]({'plain':!![]});return db[_0x3c27('0x9d')][_0x3c27('0x9e')](createExtensionsReciveFax(_0x5717c0),{'transaction':_0x19104c});});})[_0x3c27('0x20')](function(){return _0x5717c0;})[_0x3c27('0x20')](respondWithResult(_0x560789,null))[_0x3c27('0x2a')](handleError(_0x560789,null));};exports[_0x3c27('0x9f')]=function(_0x116db6,_0x25412f,_0x3efb46){var _0x3576ce;return db[_0x3c27('0x81')][_0x3c27('0x82')](function(_0x2277ab){return db[_0x3c27('0x55')]['update'](_0x116db6[_0x3c27('0x5c')],{'where':{'id':_0x116db6[_0x3c27('0x5c')]['id']},'transaction':_0x2277ab})['then'](function(_0x17a18a){return db[_0x3c27('0x9d')]['destroy']({'where':{'FaxAccountId':_0x116db6[_0x3c27('0x5c')]['id']},'transaction':_0x2277ab})[_0x3c27('0x20')](function(_0xd8f1a2){return db[_0x3c27('0x9d')]['bulkCreate'](createExtensionsReciveFax(_['omit'](_0x116db6[_0x3c27('0x5c')],[_0x3c27('0xa0'),'key','createdAt',_0x3c27('0xa1'),'TrunkId',_0x3c27('0xa2')])),{'transaction':_0x2277ab});});});})[_0x3c27('0x20')](function(){return db['FaxAccount'][_0x3c27('0xa3')](_0x116db6[_0x3c27('0x5c')]['id']);})[_0x3c27('0x20')](respondWithResult(_0x25412f,null))[_0x3c27('0x2a')](handleError(_0x25412f,null));};exports[_0x3c27('0xa4')]=function(_0x2026cc,_0x3c2967,_0x307a7c){var _0x589abd={'raw':!![],'where':{}};var _0x4a5354={};var _0x50fcf6={'count':0x0,'rows':[]};return db[_0x3c27('0x55')][_0x3c27('0x72')]({'where':{'id':_0x2026cc['params']['id']}})[_0x3c27('0x20')](handleEntityNotFound(_0x3c2967,null))[_0x3c27('0x20')](function(_0x4f46ec){if(_0x4f46ec){_0x4a5354[_0x3c27('0x44')]=_[_0x3c27('0x46')](db['FaxMessage']['rawAttributes']);_0x4a5354[_0x3c27('0x45')]=_[_0x3c27('0x46')](_0x2026cc['query']);_0x4a5354[_0x3c27('0x4e')]=_[_0x3c27('0x47')](_0x4a5354['model'],_0x4a5354['query']);_0x589abd[_0x3c27('0x48')]=_['intersection'](_0x4a5354['model'],qs[_0x3c27('0x49')](_0x2026cc['query'][_0x3c27('0x49')]));_0x589abd[_0x3c27('0x48')]=_0x589abd[_0x3c27('0x48')][_0x3c27('0x4a')]?_0x589abd['attributes']:_0x4a5354[_0x3c27('0x44')];if(!_0x2026cc[_0x3c27('0x45')]['hasOwnProperty'](_0x3c27('0x4c'))){_0x589abd[_0x3c27('0x2f')]=qs[_0x3c27('0x2f')](_0x2026cc[_0x3c27('0x45')][_0x3c27('0x2f')]);_0x589abd[_0x3c27('0x2d')]=qs[_0x3c27('0x2d')](_0x2026cc['query'][_0x3c27('0x2d')]);}_0x589abd[_0x3c27('0x6c')]=qs[_0x3c27('0x4d')](_0x2026cc[_0x3c27('0x45')][_0x3c27('0x4d')]);_0x589abd['where']=qs[_0x3c27('0x4e')](_[_0x3c27('0x4f')](_0x2026cc[_0x3c27('0x45')],_0x4a5354['filters']));_0x589abd[_0x3c27('0x50')][_0x3c27('0x69')]=_0x4f46ec['id'];if(_0x2026cc[_0x3c27('0x45')][_0x3c27('0x53')]){_0x589abd[_0x3c27('0x50')]=_[_0x3c27('0x51')](_0x589abd[_0x3c27('0x50')],{'$or':_[_0x3c27('0x3f')](_0x589abd[_0x3c27('0x48')],function(_0x200931){var _0x2ab553={};_0x2ab553[_0x200931]={'$like':'%'+_0x2026cc[_0x3c27('0x45')]['filter']+'%'};return _0x2ab553;})});}if(_0x2026cc[_0x3c27('0x45')]['$gte']){var _0x199c84=_0x2026cc['query'][_0x3c27('0xa5')][_0x3c27('0xa6')](',');var _0x2752ce={};_0x2752ce[_0x199c84[0x0]]={'$gte':moment(_0x199c84[0x1])[_0x3c27('0xa7')](_0x3c27('0xa8'))};_0x589abd['where']=_[_0x3c27('0x51')](_0x589abd[_0x3c27('0x50')],_0x2752ce);}_0x589abd=_[_0x3c27('0x51')]({},_0x589abd,_0x2026cc[_0x3c27('0x54')]);return db[_0x3c27('0xa9')][_0x3c27('0x30')]({'where':_0x589abd[_0x3c27('0x50')]})[_0x3c27('0x20')](function(_0x194d7f){_0x50fcf6['count']=_0x194d7f;if(_0x2026cc['query'][_0x3c27('0x73')]){_0x589abd[_0x3c27('0x56')]=[{'all':!![]}];}return db[_0x3c27('0xa9')][_0x3c27('0x57')](_0x589abd);})[_0x3c27('0x20')](function(_0x4f6e14){_0x50fcf6[_0x3c27('0x58')]=_0x4f6e14;return _0x50fcf6;});}})['then'](respondWithFilteredResult(_0x3c2967,_0x589abd))['catch'](handleError(_0x3c2967,null));};exports[_0x3c27('0x88')]=function(_0x279056,_0x35cb0e,_0x409dea){var _0x16c591,_0x5c69bc={},_0x341321;if(_0x279056[_0x3c27('0x5c')]['to']){_0x341321=_0x279056[_0x3c27('0x5c')]['to'][0x0];}return db[_0x3c27('0x55')][_0x3c27('0x66')]({'where':{'id':_0x279056['params']['id']},'include':[{'model':db[_0x3c27('0xaa')],'as':'List','include':[{'model':db['CmContact'],'as':_0x3c27('0xab'),'where':{'fax':_0x341321},'limit':0x1,'order':[['updatedAt',_0x3c27('0xac')]]}]}]})['then'](handleEntityNotFound(_0x35cb0e,null))[_0x3c27('0x20')](function(_0x500fa1){_0x16c591=_0x500fa1;if(_0x279056[_0x3c27('0x5c')][_0x3c27('0xad')]&&_0x279056[_0x3c27('0x5c')]['attachments'][_0x3c27('0x4a')]){for(var _0x406103=0x0;_0x406103<_0x279056[_0x3c27('0x5c')][_0x3c27('0xad')][_0x3c27('0x4a')];_0x406103+=0x1){_0x279056[_0x3c27('0x5c')][_0x3c27('0xad')][_0x406103]={'filename':_0x279056[_0x3c27('0x5c')][_0x3c27('0xad')][_0x406103][_0x3c27('0x3b')],'id':_0x279056[_0x3c27('0x5c')][_0x3c27('0xad')][_0x406103]['id'],'path':path[_0x3c27('0xae')](config[_0x3c27('0xaf')],_0x3c27('0xb0'),_0x279056[_0x3c27('0x5c')][_0x3c27('0xad')][_0x406103][_0x3c27('0xb1')])};}}return respondWithRpcPromise(_0x3c27('0xb2'),'CheckAfterSend',{'FaxAccountId':_[_0x3c27('0xb3')](_0x279056[_0x3c27('0x5a')]['id'])?undefined:_0x279056[_0x3c27('0x5a')]['id'],'path':_['isNil'](_0x279056[_0x3c27('0x5c')][_0x3c27('0xad')][0x0][_0x3c27('0x7')])?undefined:_0x279056['body']['attachments'][0x0][_0x3c27('0x7')],'fax':_[_0x3c27('0xb3')](_0x279056[_0x3c27('0x5c')]['to'][0x0])?undefined:_0x279056['body']['to'][0x0]},client9002);})[_0x3c27('0x20')](function(){if(_0x16c591){if(_[_0x3c27('0xb3')](_0x279056[_0x3c27('0x5c')][_0x3c27('0xb4')])){_0x279056[_0x3c27('0x5c')]['from']=util['format'](_0x3c27('0xb5'),_0x16c591[_0x3c27('0x3b')],_0x16c591[_0x3c27('0xb6')]);}if(_0x16c591[_0x3c27('0xb7')]){if(_0x16c591[_0x3c27('0xb7')]['Contacts']['length']){return _0x16c591[_0x3c27('0xb7')][_0x3c27('0xab')][0x0];}else{return db[_0x3c27('0xb8')][_0x3c27('0x5b')](_['defaults'](_0x279056[_0x3c27('0x5c')],{'firstName':_0x279056[_0x3c27('0x5c')]['to'][0x0],'phone':_0x279056[_0x3c27('0x5c')]['to'][0x0],'fax':_0x279056[_0x3c27('0x5c')]['to'][0x0],'ListId':_0x16c591[_0x3c27('0xa2')]}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error(_0x3c27('0xb9'));}})[_0x3c27('0x20')](function(_0x10ecc0){if(_0x10ecc0){return db['FaxInteraction'][_0x3c27('0x66')]({'where':{'ContactId':_0x10ecc0['id'],'closed':![],'FaxAccountId':_0x16c591['id']}})[_0x3c27('0x20')](function(_0x2c83fe){if(_0x2c83fe){return[_0x2c83fe,![]];}return db[_0x3c27('0x76')][_0x3c27('0x5b')]({'UserId':_0x279056['user']['id'],'ContactId':_0x10ecc0['id'],'FaxAccountId':_0x16c591['id'],'fax':_0x279056[_0x3c27('0x5c')]['to'][0x0],'firstMsgDirection':'out','Messages':[_[_0x3c27('0x51')](_0x279056['body'],{'read':![],'body':_0x279056['body']['attachments'][0x0]['filename'],'FaxAccountId':_0x16c591['id'],'UserId':_0x279056[_0x3c27('0x5d')]['id'],'ContactId':_0x10ecc0['id'],'AttachmentId':_0x279056[_0x3c27('0x5c')][_0x3c27('0xad')][0x0]['id']})]},{'include':[{'model':db['FaxMessage'],'as':_0x3c27('0xba')}]})[_0x3c27('0x20')](function(_0x1cbde3){return[_0x1cbde3,!![]];});});}else{throw new Error(_0x3c27('0xbb'));}})[_0x3c27('0xbc')](function(_0x309d63,_0x27615a){if(_0x27615a){return _0x309d63;}return db[_0x3c27('0xa9')][_0x3c27('0x5b')]({'direction':'out','read':![],'body':_0x279056[_0x3c27('0x5c')][_0x3c27('0xad')][0x0]['filename'],'FaxAccountId':_0x16c591['id'],'FaxInteractionId':_0x309d63['id'],'UserId':_0x279056[_0x3c27('0x5d')]['id'],'ContactId':_0x309d63[_0x3c27('0xbd')],'AttachmentId':_0x279056['body'][_0x3c27('0xad')][0x0]['id']})['then'](function(_0x3a4fbe){_0x309d63[_0x3c27('0xbe')]['Messages']=[];_0x309d63[_0x3c27('0xbe')][_0x3c27('0xba')][_0x3c27('0x90')](_0x3a4fbe[_0x3c27('0xbe')]);return _0x309d63;});})[_0x3c27('0x20')](function(_0x385e9a){respondWithRpcPromise(_0x3c27('0xbf'),_0x3c27('0xbf'),{'FaxAccountId':_[_0x3c27('0xb3')](_0x279056[_0x3c27('0x5a')]['id'])?undefined:_0x279056[_0x3c27('0x5a')]['id'],'path':_[_0x3c27('0xb3')](_0x279056[_0x3c27('0x5c')][_0x3c27('0xad')][0x0]['path'])?undefined:_0x279056[_0x3c27('0x5c')]['attachments'][0x0][_0x3c27('0x7')],'fax':_[_0x3c27('0xb3')](_0x279056[_0x3c27('0x5c')]['to'][0x0])?undefined:_0x279056[_0x3c27('0x5c')]['to'][0x0],'AttachmentId':_0x279056[_0x3c27('0x5c')][_0x3c27('0xad')][0x0]['id']},client9002)[_0x3c27('0x20')](function(_0x31bdb2){logger[_0x3c27('0x21')](_0x3c27('0xc0'),_0x31bdb2);})[_0x3c27('0x2a')](function(_0x4ef047){logger[_0x3c27('0x21')](_0x3c27('0xc0'),_0x4ef047);});return _0x385e9a;})[_0x3c27('0x20')](respondWithResult(_0x35cb0e,null))[_0x3c27('0x2a')](handleError(_0x35cb0e,null));};exports[_0x3c27('0xc1')]=function(_0x1e78ec,_0x3f6abb,_0x2da218){return db['FaxAccount']['find']({'where':{'id':_0x1e78ec[_0x3c27('0x5a')]['id']}})[_0x3c27('0x20')](handleEntityNotFound(_0x3f6abb,null))[_0x3c27('0x20')](function(_0x1b3c16){if(_0x1b3c16){return _0x1b3c16[_0x3c27('0xc1')](_0x1e78ec[_0x3c27('0x5c')][_0x3c27('0x6e')],_['omit'](_0x1e78ec[_0x3c27('0x5c')],[_0x3c27('0x6e'),'id'])||{})[_0x3c27('0xbc')](function(_0x3d3293){for(var _0x3c84ce=0x0;_0x3c84ce<_0x1e78ec['body'][_0x3c27('0x6e')][_0x3c27('0x4a')];_0x3c84ce+=0x1){socket[_0x3c27('0xc2')](_0x3c27('0xc3'),{'UserId':Number(_0x1e78ec[_0x3c27('0x5c')]['ids'][_0x3c84ce]),'FaxAccountId':Number(_0x1e78ec['params']['id'])});}return _0x3d3293;});}})['then'](respondWithResult(_0x3f6abb,null))[_0x3c27('0x2a')](handleError(_0x3f6abb,null));};exports['removeAgents']=function(_0x2dedec,_0x15972d,_0x45eba0){return db[_0x3c27('0x55')][_0x3c27('0x66')]({'where':{'id':_0x2dedec[_0x3c27('0x5a')]['id']}})[_0x3c27('0x20')](handleEntityNotFound(_0x15972d,null))[_0x3c27('0x20')](function(_0x5568cf){if(_0x5568cf){return _0x5568cf[_0x3c27('0xc4')](_0x2dedec['query'][_0x3c27('0x6e')])[_0x3c27('0x20')](function(){if(_['isArray'](_0x2dedec[_0x3c27('0x45')][_0x3c27('0x6e')])){for(var _0x160271=0x0;_0x160271<_0x2dedec[_0x3c27('0x45')][_0x3c27('0x6e')][_0x3c27('0x4a')];_0x160271+=0x1){socket['emit'](_0x3c27('0xc5'),{'UserId':Number(_0x2dedec[_0x3c27('0x45')][_0x3c27('0x6e')][_0x160271]),'FaxAccountId':Number(_0x2dedec[_0x3c27('0x5a')]['id'])});}}else{socket[_0x3c27('0xc2')]('userFaxAccount:remove',{'UserId':Number(_0x2dedec['query'][_0x3c27('0x6e')]),'FaxAccountId':Number(_0x2dedec[_0x3c27('0x5a')]['id'])});}});}})[_0x3c27('0x20')](respondWithStatusCode(_0x15972d,null))[_0x3c27('0x2a')](handleError(_0x15972d,null));};exports[_0x3c27('0xc6')]=function(_0x582a13,_0x32c106,_0x301498){var _0x18a6f1={};var _0x4fd66c={};var _0x47e00f;var _0x33d1b6;return db[_0x3c27('0x55')][_0x3c27('0x72')]({'where':{'id':_0x582a13[_0x3c27('0x5a')]['id']}})['then'](handleEntityNotFound(_0x32c106,null))[_0x3c27('0x20')](function(_0x57cadc){if(_0x57cadc){_0x47e00f=_0x57cadc;_0x4fd66c[_0x3c27('0x44')]=_['keys'](db[_0x3c27('0x79')]['rawAttributes']);_0x4fd66c[_0x3c27('0x45')]=_[_0x3c27('0x46')](_0x582a13[_0x3c27('0x45')]);_0x4fd66c[_0x3c27('0x4e')]=_[_0x3c27('0x47')](_0x4fd66c[_0x3c27('0x44')],_0x4fd66c[_0x3c27('0x45')]);_0x18a6f1['attributes']=_[_0x3c27('0x47')](_0x4fd66c[_0x3c27('0x44')],qs[_0x3c27('0x49')](_0x582a13[_0x3c27('0x45')]['fields']));_0x18a6f1[_0x3c27('0x48')]=_0x18a6f1[_0x3c27('0x48')][_0x3c27('0x4a')]?_0x18a6f1[_0x3c27('0x48')]:_0x4fd66c[_0x3c27('0x44')];_0x18a6f1[_0x3c27('0x6c')]=qs[_0x3c27('0x4d')](_0x582a13['query'][_0x3c27('0x4d')]);_0x18a6f1[_0x3c27('0x50')]=qs[_0x3c27('0x4e')](_[_0x3c27('0x4f')](_0x582a13[_0x3c27('0x45')],_0x4fd66c[_0x3c27('0x4e')]));if(_0x582a13[_0x3c27('0x45')][_0x3c27('0x53')]){_0x18a6f1[_0x3c27('0x50')]=_[_0x3c27('0x51')](_0x18a6f1['where'],{'$or':_[_0x3c27('0x3f')](_0x18a6f1['attributes'],function(_0x5e5834){var _0x807cff={};_0x807cff[_0x5e5834]={'$like':'%'+_0x582a13['query'][_0x3c27('0x53')]+'%'};return _0x807cff;})});}_0x18a6f1=_[_0x3c27('0x51')]({},_0x18a6f1,_0x582a13['options']);return _0x47e00f[_0x3c27('0xc6')](_0x18a6f1);}})['then'](function(_0x2bc27a){if(_0x2bc27a){_0x33d1b6=_0x2bc27a[_0x3c27('0x4a')];if(!_0x582a13[_0x3c27('0x45')][_0x3c27('0x4b')](_0x3c27('0x4c'))){_0x18a6f1[_0x3c27('0x2f')]=qs[_0x3c27('0x2f')](_0x582a13[_0x3c27('0x45')][_0x3c27('0x2f')]);_0x18a6f1['offset']=qs['offset'](_0x582a13['query'][_0x3c27('0x2d')]);}return _0x47e00f[_0x3c27('0xc6')](_0x18a6f1);}})[_0x3c27('0x20')](function(_0x217fb0){if(_0x217fb0){return _0x217fb0?{'count':_0x33d1b6,'rows':_0x217fb0}:null;}})[_0x3c27('0x20')](respondWithResult(_0x32c106,null))[_0x3c27('0x2a')](handleError(_0x32c106,null));};
\ No newline at end of file
+var _0x24ed=['autoAssociation','params','describe','FaxAccountId','Disposition','getDispositions','order','pick','removeDispositions','addAnswer','CannedAnswer','findOne','removeAnswers','ids','FaxInteraction','addInteraction','omit','Contact','User','fullname','internal','Tag','Tags','color','tag','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','bulkCreate','findAndCountAll','priority','getApplications','context','from-voip-provider','localstationid','Answer','push','Set','gateway','faxdetect','headerinfo','maxrate','modem','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','transaction','tech','createdAt','updatedAt','TrunkId','ListId','getMessages','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','CmContact','Contacts','DESC','attachments','root','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','List','defaults','List\x20not\x20found','Send\x20Fax\x20failed','out','Messages','Contact\x20not\x20found','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','spread','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','register','jayson/promise','http','request','then','info','FaxAccount,\x20%s,\x20%s','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','destroy','FaxAccounts','UserProfileResource','end','sendStatus','stack','name','send','index','Pause','mandatoryDispositionPause','map','FaxAccount','rawAttributes','fieldName','type','key','model','query','keys','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','filters','filter','merge','options','includeAll','include','findAll','rows','show','intersection','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId'];(function(_0x26d121,_0x202320){var _0x5175ec=function(_0x354b37){while(--_0x354b37){_0x26d121['push'](_0x26d121['shift']());}};_0x5175ec(++_0x202320);}(_0x24ed,0x1d2));var _0xd24e=function(_0x3d9fb9,_0x120e76){_0x3d9fb9=_0x3d9fb9-0x0;var _0x5ea49a=_0x24ed[_0x3d9fb9];return _0x5ea49a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd24e('0x0'));var jsonpatch=require(_0xd24e('0x1'));var rp=require(_0xd24e('0x2'));var moment=require(_0xd24e('0x3'));var BPromise=require(_0xd24e('0x4'));var Mustache=require(_0xd24e('0x5'));var util=require('util');var path=require(_0xd24e('0x6'));var sox=require(_0xd24e('0x7'));var csv=require(_0xd24e('0x8'));var ejs=require(_0xd24e('0x9'));var fs=require('fs');var fs_extra=require(_0xd24e('0xa'));var _=require(_0xd24e('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xd24e('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd24e('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xd24e('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd24e('0xf'));var logger=require(_0xd24e('0x10'))('api');var utils=require(_0xd24e('0x11'));var config=require(_0xd24e('0x12'));var licenseUtil=require(_0xd24e('0x13'));var db=require('../../mysqldb')['db'];config[_0xd24e('0x14')]=_['defaults'](config[_0xd24e('0x14')],{'host':_0xd24e('0x15'),'port':0x18eb});var socket=require(_0xd24e('0x16'))(new Redis(config[_0xd24e('0x14')]));require('./faxAccount.socket')[_0xd24e('0x17')](socket);var jayson=require(_0xd24e('0x18'));var client=jayson['client'][_0xd24e('0x19')]({'port':0x232c});var client9002=jayson['client'][_0xd24e('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x1bfb3d,_0x1cda02,_0x4267aa,_0x54568f){return new BPromise(function(_0x4cf515,_0x1f4835){var _0x4e7003=_0x54568f||client;return _0x4e7003[_0xd24e('0x1a')](_0x1bfb3d,_0x4267aa)[_0xd24e('0x1b')](function(_0x244489){logger[_0xd24e('0x1c')](_0xd24e('0x1d'),_0x1cda02,'request\x20sent');logger[_0xd24e('0x1e')](_0xd24e('0x1f'),_0x1cda02,'request\x20sent',JSON['stringify'](_0x244489));if(_0x244489[_0xd24e('0x20')]){if(_0x244489[_0xd24e('0x20')][_0xd24e('0x21')]===0x1f4){logger['error']('FaxAccount,\x20%s,\x20%s',_0x1cda02,_0x244489['error']['message']);return _0x1f4835(_0x244489[_0xd24e('0x20')][_0xd24e('0x22')]);}logger['error']('FaxAccount,\x20%s,\x20%s',_0x1cda02,_0x244489[_0xd24e('0x20')][_0xd24e('0x22')]);return _0x4cf515(_0x244489[_0xd24e('0x20')][_0xd24e('0x22')]);}else{logger[_0xd24e('0x1c')](_0xd24e('0x1d'),_0x1cda02,_0xd24e('0x23'));_0x4cf515(_0x244489[_0xd24e('0x24')][_0xd24e('0x22')]);}})[_0xd24e('0x25')](function(_0x20f7bc){logger[_0xd24e('0x20')](_0xd24e('0x1d'),_0x1cda02,_0x20f7bc);_0x1f4835(_0x20f7bc);});});}function respondWithStatusCode(_0x322e81,_0x245505){_0x245505=_0x245505||0xcc;return function(_0x3a8ea4){if(_0x3a8ea4){return _0x322e81['sendStatus'](_0x245505);}return _0x322e81[_0xd24e('0x26')](_0x245505)['end']();};}function respondWithResult(_0x195ac4,_0x5d6857){_0x5d6857=_0x5d6857||0xc8;return function(_0x8707a){if(_0x8707a){return _0x195ac4['status'](_0x5d6857)[_0xd24e('0x27')](_0x8707a);}};}function respondWithFilteredResult(_0x987261,_0x147270){return function(_0x1a535a){if(_0x1a535a){var _0x18dc48=typeof _0x147270[_0xd24e('0x28')]===_0xd24e('0x29')&&typeof _0x147270['limit']===_0xd24e('0x29');var _0x543cc5=_0x1a535a['count'];var _0x387cda=_0x18dc48?0x0:_0x147270[_0xd24e('0x28')];var _0x9468e=_0x18dc48?_0x1a535a[_0xd24e('0x2a')]:_0x147270[_0xd24e('0x28')]+_0x147270['limit'];var _0x39559a;if(_0x9468e>=_0x543cc5){_0x9468e=_0x543cc5;_0x39559a=0xc8;}else{_0x39559a=0xce;}_0x987261[_0xd24e('0x26')](_0x39559a);return _0x987261[_0xd24e('0x2b')](_0xd24e('0x2c'),_0x387cda+'-'+_0x9468e+'/'+_0x543cc5)[_0xd24e('0x27')](_0x1a535a);}return null;};}function patchUpdates(_0x43826b){return function(_0x501fe3){try{jsonpatch[_0xd24e('0x2d')](_0x501fe3,_0x43826b,!![]);}catch(_0x401868){return BPromise[_0xd24e('0x2e')](_0x401868);}return _0x501fe3[_0xd24e('0x2f')]();};}function saveUpdates(_0x3c2915,_0x24342f){return function(_0x2774f6){if(_0x2774f6){return _0x2774f6[_0xd24e('0x30')](_0x3c2915)[_0xd24e('0x1b')](function(_0x4d9efe){return _0x4d9efe;});}return null;};}function removeEntity(_0x19f1b4,_0x54480d){return function(_0x6ad099){if(_0x6ad099){return _0x6ad099[_0xd24e('0x31')]()[_0xd24e('0x1b')](function(){var _0x4af954=_0x6ad099['get']({'plain':!![]});var _0x2cbdb9=_0xd24e('0x32');return db[_0xd24e('0x33')]['destroy']({'where':{'type':_0x2cbdb9,'resourceId':_0x4af954['id']}})['then'](function(){return _0x6ad099;});})['then'](function(){_0x19f1b4[_0xd24e('0x26')](0xcc)[_0xd24e('0x34')]();});}};}function handleEntityNotFound(_0x31b294,_0x595f1a){return function(_0x2b80ed){if(!_0x2b80ed){_0x31b294[_0xd24e('0x35')](0x194);}return _0x2b80ed;};}function handleError(_0x3e6be4,_0x4e97ae){_0x4e97ae=_0x4e97ae||0x1f4;return function(_0x835d27){logger['error'](_0x835d27[_0xd24e('0x36')]);if(_0x835d27[_0xd24e('0x37')]){delete _0x835d27[_0xd24e('0x37')];}_0x3e6be4[_0xd24e('0x26')](_0x4e97ae)[_0xd24e('0x38')](_0x835d27);};}exports[_0xd24e('0x39')]=function(_0x4c1a5f,_0x4901dc){var _0x1ea399={'include':[{'model':db[_0xd24e('0x3a')],'as':_0xd24e('0x3b')}]},_0x4eece8={},_0x3e98f4={'count':0x0,'rows':[]};var _0x47c4e9=_[_0xd24e('0x3c')](db[_0xd24e('0x3d')][_0xd24e('0x3e')],function(_0x439bc8){return{'name':_0x439bc8[_0xd24e('0x3f')],'type':_0x439bc8[_0xd24e('0x40')][_0xd24e('0x41')]};});_0x4eece8[_0xd24e('0x42')]=_[_0xd24e('0x3c')](_0x47c4e9,'name');_0x4eece8[_0xd24e('0x43')]=_[_0xd24e('0x44')](_0x4c1a5f[_0xd24e('0x43')]);_0x4eece8['filters']=_['intersection'](_0x4eece8[_0xd24e('0x42')],_0x4eece8[_0xd24e('0x43')]);_0x1ea399[_0xd24e('0x45')]=_['intersection'](_0x4eece8['model'],qs['fields'](_0x4c1a5f[_0xd24e('0x43')][_0xd24e('0x46')]));_0x1ea399[_0xd24e('0x45')]=_0x1ea399[_0xd24e('0x45')][_0xd24e('0x47')]?_0x1ea399[_0xd24e('0x45')]:_0x4eece8[_0xd24e('0x42')];if(!_0x4c1a5f[_0xd24e('0x43')][_0xd24e('0x48')](_0xd24e('0x49'))){_0x1ea399[_0xd24e('0x4a')]=qs['limit'](_0x4c1a5f[_0xd24e('0x43')][_0xd24e('0x4a')]);_0x1ea399[_0xd24e('0x28')]=qs[_0xd24e('0x28')](_0x4c1a5f['query'][_0xd24e('0x28')]);}_0x1ea399['order']=qs[_0xd24e('0x4b')](_0x4c1a5f[_0xd24e('0x43')][_0xd24e('0x4b')]);_0x1ea399[_0xd24e('0x4c')]=qs['filters'](_['pick'](_0x4c1a5f[_0xd24e('0x43')],_0x4eece8[_0xd24e('0x4d')]),_0x47c4e9);if(_0x4c1a5f[_0xd24e('0x43')][_0xd24e('0x4e')]){_0x1ea399[_0xd24e('0x4c')]=_['merge'](_0x1ea399[_0xd24e('0x4c')],{'$or':_[_0xd24e('0x3c')](_0x47c4e9,function(_0xca4b85){if(_0xca4b85[_0xd24e('0x40')]!=='VIRTUAL'){var _0x4025a3={};_0x4025a3[_0xca4b85[_0xd24e('0x37')]]={'$like':'%'+_0x4c1a5f[_0xd24e('0x43')]['filter']+'%'};return _0x4025a3;}})});}_0x1ea399=_[_0xd24e('0x4f')]({},_0x1ea399,_0x4c1a5f[_0xd24e('0x50')]);var _0x41f82e={'where':_0x1ea399['where']};return db[_0xd24e('0x3d')][_0xd24e('0x2a')](_0x41f82e)['then'](function(_0x402eb0){_0x3e98f4[_0xd24e('0x2a')]=_0x402eb0;if(_0x4c1a5f[_0xd24e('0x43')][_0xd24e('0x51')]){_0x1ea399[_0xd24e('0x52')]=[{'all':!![]}];}return db[_0xd24e('0x3d')][_0xd24e('0x53')](_0x1ea399);})[_0xd24e('0x1b')](function(_0x1fdf9e){_0x3e98f4[_0xd24e('0x54')]=_0x1fdf9e;return _0x3e98f4;})[_0xd24e('0x1b')](respondWithFilteredResult(_0x4901dc,_0x1ea399))[_0xd24e('0x25')](handleError(_0x4901dc,null));};exports[_0xd24e('0x55')]=function(_0x3d7af6,_0x5ba995){var _0x33fd4f={'raw':![],'where':{'id':_0x3d7af6['params']['id']},'include':[{'model':db[_0xd24e('0x3a')],'as':_0xd24e('0x3b')}]},_0x5919f1={};_0x5919f1[_0xd24e('0x42')]=_['keys'](db['FaxAccount']['rawAttributes']);_0x5919f1[_0xd24e('0x43')]=_[_0xd24e('0x44')](_0x3d7af6[_0xd24e('0x43')]);_0x5919f1[_0xd24e('0x4d')]=_[_0xd24e('0x56')](_0x5919f1[_0xd24e('0x42')],_0x5919f1[_0xd24e('0x43')]);_0x33fd4f['attributes']=_['intersection'](_0x5919f1['model'],qs[_0xd24e('0x46')](_0x3d7af6[_0xd24e('0x43')]['fields']));_0x33fd4f[_0xd24e('0x45')]=_0x33fd4f['attributes'][_0xd24e('0x47')]?_0x33fd4f[_0xd24e('0x45')]:_0x5919f1[_0xd24e('0x42')];if(_0x3d7af6['query'][_0xd24e('0x51')]){_0x33fd4f[_0xd24e('0x52')]=[{'all':!![]}];}_0x33fd4f=_[_0xd24e('0x4f')]({},_0x33fd4f,_0x3d7af6[_0xd24e('0x50')]);return db[_0xd24e('0x3d')][_0xd24e('0x57')](_0x33fd4f)['then'](handleEntityNotFound(_0x5ba995,null))[_0xd24e('0x1b')](respondWithResult(_0x5ba995,null))['catch'](handleError(_0x5ba995,null));};exports[_0xd24e('0x58')]=function(_0x3a8a98,_0x277a9d){return db[_0xd24e('0x3d')][_0xd24e('0x58')](_0x3a8a98[_0xd24e('0x59')],{})[_0xd24e('0x1b')](function(_0xece10b){var _0x45e9f4=_0x3a8a98[_0xd24e('0x5a')][_0xd24e('0x5b')]({'plain':!![]});if(!_0x45e9f4)throw new Error(_0xd24e('0x5c'));if(_0x45e9f4[_0xd24e('0x5d')]==='user'){var _0x1d4dc9=_0xece10b['get']({'plain':!![]});var _0x4c4322=_0xd24e('0x32');return db['UserProfileSection']['find']({'where':{'name':_0x4c4322,'userProfileId':_0x45e9f4[_0xd24e('0x5e')]},'raw':!![]})[_0xd24e('0x1b')](function(_0x4d287a){if(_0x4d287a&&_0x4d287a[_0xd24e('0x5f')]===0x0){return db[_0xd24e('0x33')][_0xd24e('0x58')]({'name':_0x1d4dc9[_0xd24e('0x37')],'resourceId':_0x1d4dc9['id'],'type':_0x4d287a['name'],'sectionId':_0x4d287a['id']},{})[_0xd24e('0x1b')](function(){return _0xece10b;});}else{return _0xece10b;}})[_0xd24e('0x25')](function(_0x3f6ef3){logger[_0xd24e('0x20')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3f6ef3);throw _0x3f6ef3;});}return _0xece10b;})[_0xd24e('0x1b')](respondWithResult(_0x277a9d,0xc9))['catch'](handleError(_0x277a9d,null));};exports[_0xd24e('0x30')]=function(_0x3b6a1e,_0x5d983a){if(_0x3b6a1e[_0xd24e('0x59')]['id']){delete _0x3b6a1e[_0xd24e('0x59')]['id'];}return db[_0xd24e('0x3d')][_0xd24e('0x57')]({'where':{'id':_0x3b6a1e['params']['id']},'include':[{'model':db[_0xd24e('0x3a')],'as':_0xd24e('0x3b')}]})['then'](handleEntityNotFound(_0x5d983a,null))[_0xd24e('0x1b')](saveUpdates(_0x3b6a1e[_0xd24e('0x59')],null))[_0xd24e('0x1b')](respondWithResult(_0x5d983a,null))['catch'](handleError(_0x5d983a,null));};exports[_0xd24e('0x31')]=function(_0x588f37,_0x1bdb30){return db[_0xd24e('0x3d')][_0xd24e('0x57')]({'where':{'id':_0x588f37[_0xd24e('0x60')]['id']}})[_0xd24e('0x1b')](handleEntityNotFound(_0x1bdb30,null))[_0xd24e('0x1b')](removeEntity(_0x1bdb30,null))[_0xd24e('0x25')](handleError(_0x1bdb30,null));};exports['describe']=function(_0x1e4137,_0x37f78c){return db[_0xd24e('0x3d')][_0xd24e('0x61')]()[_0xd24e('0x1b')](respondWithResult(_0x37f78c,null))[_0xd24e('0x25')](handleError(_0x37f78c,null));};exports['addDisposition']=function(_0xd332a0,_0x1a08ab,_0x46af52){if(_0xd332a0['body']['id']){delete _0xd332a0[_0xd24e('0x59')]['id'];}return db['FaxAccount'][_0xd24e('0x57')]({'where':{'id':_0xd332a0[_0xd24e('0x60')]['id']}})[_0xd24e('0x1b')](handleEntityNotFound(_0x1a08ab,null))[_0xd24e('0x1b')](function(_0x32a6e2){if(_0x32a6e2){_0xd332a0[_0xd24e('0x59')][_0xd24e('0x62')]=_0x32a6e2['id'];return db[_0xd24e('0x63')][_0xd24e('0x58')](_0xd332a0[_0xd24e('0x59')]);}})[_0xd24e('0x1b')](respondWithResult(_0x1a08ab,null))['catch'](handleError(_0x1a08ab,null));};exports[_0xd24e('0x64')]=function(_0x208fee,_0x5f38de,_0x1a727f){var _0xad9f6={'raw':![],'where':{}};var _0x6a59f7={};var _0x2dd935={'count':0x0,'rows':[]};return db[_0xd24e('0x3d')]['findOne']({'where':{'id':_0x208fee['params']['id']}})[_0xd24e('0x1b')](handleEntityNotFound(_0x5f38de,null))['then'](function(_0x1a6d3f){if(_0x1a6d3f){_0x6a59f7[_0xd24e('0x42')]=_[_0xd24e('0x44')](db[_0xd24e('0x63')][_0xd24e('0x3e')]);_0x6a59f7[_0xd24e('0x43')]=_['keys'](_0x208fee[_0xd24e('0x43')]);_0x6a59f7[_0xd24e('0x4d')]=_[_0xd24e('0x56')](_0x6a59f7[_0xd24e('0x42')],_0x6a59f7[_0xd24e('0x43')]);_0xad9f6[_0xd24e('0x45')]=_['intersection'](_0x6a59f7['model'],qs[_0xd24e('0x46')](_0x208fee[_0xd24e('0x43')]['fields']));_0xad9f6[_0xd24e('0x45')]=_0xad9f6[_0xd24e('0x45')][_0xd24e('0x47')]?_0xad9f6[_0xd24e('0x45')]:_0x6a59f7[_0xd24e('0x42')];if(!_0x208fee['query'][_0xd24e('0x48')](_0xd24e('0x49'))){_0xad9f6['limit']=qs['limit'](_0x208fee[_0xd24e('0x43')][_0xd24e('0x4a')]);_0xad9f6[_0xd24e('0x28')]=qs[_0xd24e('0x28')](_0x208fee['query'][_0xd24e('0x28')]);}_0xad9f6[_0xd24e('0x65')]=qs[_0xd24e('0x4b')](_0x208fee[_0xd24e('0x43')][_0xd24e('0x4b')]);_0xad9f6[_0xd24e('0x4c')]=qs[_0xd24e('0x4d')](_[_0xd24e('0x66')](_0x208fee['query'],_0x6a59f7[_0xd24e('0x4d')]));_0xad9f6[_0xd24e('0x4c')][_0xd24e('0x62')]=_0x1a6d3f['id'];if(_0x208fee[_0xd24e('0x43')]['filter']){_0xad9f6[_0xd24e('0x4c')]=_[_0xd24e('0x4f')](_0xad9f6['where'],{'$or':_['map'](_0xad9f6[_0xd24e('0x45')],function(_0x29c94f){var _0x146050={};_0x146050[_0x29c94f]={'$like':'%'+_0x208fee['query'][_0xd24e('0x4e')]+'%'};return _0x146050;})});}_0xad9f6=_[_0xd24e('0x4f')]({},_0xad9f6,_0x208fee[_0xd24e('0x50')]);return db['Disposition'][_0xd24e('0x2a')]({'where':_0xad9f6['where']})['then'](function(_0x1513e3){_0x2dd935['count']=_0x1513e3;if(_0x208fee[_0xd24e('0x43')]['includeAll']){_0xad9f6[_0xd24e('0x52')]=[{'all':!![]}];}return db['Disposition'][_0xd24e('0x53')](_0xad9f6);})[_0xd24e('0x1b')](function(_0x31ac74){_0x2dd935[_0xd24e('0x54')]=_0x31ac74;return _0x2dd935;});}})[_0xd24e('0x1b')](respondWithFilteredResult(_0x5f38de,_0xad9f6))['catch'](handleError(_0x5f38de,null));};exports[_0xd24e('0x67')]=function(_0x512b05,_0x4a72bd,_0x23b768){return db['FaxAccount'][_0xd24e('0x57')]({'where':{'id':_0x512b05[_0xd24e('0x60')]['id']}})[_0xd24e('0x1b')](handleEntityNotFound(_0x4a72bd,null))[_0xd24e('0x1b')](function(_0x380b2d){if(_0x380b2d){return _0x380b2d[_0xd24e('0x67')](_0x512b05[_0xd24e('0x43')]['ids']);}})[_0xd24e('0x1b')](respondWithStatusCode(_0x4a72bd,null))[_0xd24e('0x25')](handleError(_0x4a72bd,null));};exports[_0xd24e('0x68')]=function(_0x88dec6,_0x2ba2aa,_0x50a552){if(_0x88dec6['body']['id']){delete _0x88dec6[_0xd24e('0x59')]['id'];}return db[_0xd24e('0x3d')][_0xd24e('0x57')]({'where':{'id':_0x88dec6[_0xd24e('0x60')]['id']}})[_0xd24e('0x1b')](handleEntityNotFound(_0x2ba2aa,null))[_0xd24e('0x1b')](function(_0x719ff3){if(_0x719ff3){_0x88dec6['body'][_0xd24e('0x62')]=_0x719ff3['id'];return db[_0xd24e('0x69')][_0xd24e('0x58')](_0x88dec6[_0xd24e('0x59')]);}})[_0xd24e('0x1b')](respondWithResult(_0x2ba2aa,null))[_0xd24e('0x25')](handleError(_0x2ba2aa,null));};exports['getAnswers']=function(_0x1248e2,_0x50be6e,_0xf62576){var _0x37ba8c={'raw':![],'where':{}};var _0x311ee5={};var _0x3d62eb={'count':0x0,'rows':[]};return db[_0xd24e('0x3d')][_0xd24e('0x6a')]({'where':{'id':_0x1248e2[_0xd24e('0x60')]['id']}})[_0xd24e('0x1b')](handleEntityNotFound(_0x50be6e,null))[_0xd24e('0x1b')](function(_0x1c31b5){if(_0x1c31b5){_0x311ee5[_0xd24e('0x42')]=_[_0xd24e('0x44')](db['CannedAnswer'][_0xd24e('0x3e')]);_0x311ee5[_0xd24e('0x43')]=_['keys'](_0x1248e2[_0xd24e('0x43')]);_0x311ee5[_0xd24e('0x4d')]=_[_0xd24e('0x56')](_0x311ee5['model'],_0x311ee5[_0xd24e('0x43')]);_0x37ba8c[_0xd24e('0x45')]=_['intersection'](_0x311ee5['model'],qs[_0xd24e('0x46')](_0x1248e2[_0xd24e('0x43')]['fields']));_0x37ba8c['attributes']=_0x37ba8c['attributes']['length']?_0x37ba8c[_0xd24e('0x45')]:_0x311ee5[_0xd24e('0x42')];if(!_0x1248e2[_0xd24e('0x43')][_0xd24e('0x48')](_0xd24e('0x49'))){_0x37ba8c['limit']=qs['limit'](_0x1248e2[_0xd24e('0x43')]['limit']);_0x37ba8c[_0xd24e('0x28')]=qs[_0xd24e('0x28')](_0x1248e2[_0xd24e('0x43')][_0xd24e('0x28')]);}_0x37ba8c[_0xd24e('0x65')]=qs[_0xd24e('0x4b')](_0x1248e2['query']['sort']);_0x37ba8c[_0xd24e('0x4c')]=qs[_0xd24e('0x4d')](_[_0xd24e('0x66')](_0x1248e2[_0xd24e('0x43')],_0x311ee5[_0xd24e('0x4d')]));_0x37ba8c[_0xd24e('0x4c')][_0xd24e('0x62')]=_0x1c31b5['id'];if(_0x1248e2[_0xd24e('0x43')][_0xd24e('0x4e')]){_0x37ba8c[_0xd24e('0x4c')]=_['merge'](_0x37ba8c['where'],{'$or':_[_0xd24e('0x3c')](_0x37ba8c[_0xd24e('0x45')],function(_0x14dcc1){var _0x4e0666={};_0x4e0666[_0x14dcc1]={'$like':'%'+_0x1248e2['query'][_0xd24e('0x4e')]+'%'};return _0x4e0666;})});}_0x37ba8c=_[_0xd24e('0x4f')]({},_0x37ba8c,_0x1248e2['options']);return db[_0xd24e('0x69')]['count']({'where':_0x37ba8c[_0xd24e('0x4c')]})[_0xd24e('0x1b')](function(_0x2c22b9){_0x3d62eb['count']=_0x2c22b9;if(_0x1248e2['query'][_0xd24e('0x51')]){_0x37ba8c[_0xd24e('0x52')]=[{'all':!![]}];}return db[_0xd24e('0x69')][_0xd24e('0x53')](_0x37ba8c);})[_0xd24e('0x1b')](function(_0x2300aa){_0x3d62eb[_0xd24e('0x54')]=_0x2300aa;return _0x3d62eb;});}})[_0xd24e('0x1b')](respondWithFilteredResult(_0x50be6e,_0x37ba8c))[_0xd24e('0x25')](handleError(_0x50be6e,null));};exports[_0xd24e('0x6b')]=function(_0x117643,_0xe6e8dc,_0x5cfefe){return db['FaxAccount'][_0xd24e('0x57')]({'where':{'id':_0x117643[_0xd24e('0x60')]['id']}})[_0xd24e('0x1b')](handleEntityNotFound(_0xe6e8dc,null))['then'](function(_0x4dc6e9){if(_0x4dc6e9){return _0x4dc6e9[_0xd24e('0x6b')](_0x117643[_0xd24e('0x43')][_0xd24e('0x6c')]);}})[_0xd24e('0x1b')](respondWithStatusCode(_0xe6e8dc,null))[_0xd24e('0x25')](handleError(_0xe6e8dc,null));};exports['addInteraction']=function(_0x4fb87f,_0x5868d8,_0x49c3ea){return db[_0xd24e('0x6d')]['find']({'where':{'id':_0x4fb87f[_0xd24e('0x60')]['id']}})[_0xd24e('0x1b')](handleEntityNotFound(_0x5868d8,null))[_0xd24e('0x1b')](function(_0xd6e506){if(_0xd6e506){return _0xd6e506[_0xd24e('0x6e')](_0x4fb87f[_0xd24e('0x59')][_0xd24e('0x6c')],_[_0xd24e('0x6f')](_0x4fb87f[_0xd24e('0x59')],['ids','id'])||{});}})[_0xd24e('0x1b')](respondWithResult(_0x5868d8,null))[_0xd24e('0x25')](handleError(_0x5868d8,null));};exports['getInteractions']=function(_0x1d35dc,_0x58dff7,_0x4a3dd0){var _0x3dbf5e={'raw':![],'where':{}};var _0x310a95={};var _0x22854f={'count':0x0,'rows':[]};return db[_0xd24e('0x3d')]['findOne']({'where':{'id':_0x1d35dc[_0xd24e('0x60')]['id']}})[_0xd24e('0x1b')](handleEntityNotFound(_0x58dff7,null))[_0xd24e('0x1b')](function(_0x2c7e8f){if(_0x2c7e8f){_0x310a95[_0xd24e('0x42')]=_[_0xd24e('0x44')](db[_0xd24e('0x6d')][_0xd24e('0x3e')]);_0x310a95['query']=_['keys'](_0x1d35dc[_0xd24e('0x43')]);_0x310a95[_0xd24e('0x4d')]=_[_0xd24e('0x56')](_0x310a95[_0xd24e('0x42')],_0x310a95[_0xd24e('0x43')]);_0x3dbf5e['attributes']=_[_0xd24e('0x56')](_0x310a95['model'],qs['fields'](_0x1d35dc[_0xd24e('0x43')]['fields']));_0x3dbf5e[_0xd24e('0x45')]=_0x3dbf5e[_0xd24e('0x45')]['length']?_0x3dbf5e[_0xd24e('0x45')]:_0x310a95[_0xd24e('0x42')];if(!_0x1d35dc[_0xd24e('0x43')]['hasOwnProperty']('nolimit')){_0x3dbf5e[_0xd24e('0x4a')]=qs['limit'](_0x1d35dc[_0xd24e('0x43')][_0xd24e('0x4a')]);_0x3dbf5e[_0xd24e('0x28')]=qs[_0xd24e('0x28')](_0x1d35dc['query'][_0xd24e('0x28')]);}_0x3dbf5e[_0xd24e('0x65')]=qs['sort'](_0x1d35dc[_0xd24e('0x43')]['sort']);_0x3dbf5e[_0xd24e('0x4c')]=qs[_0xd24e('0x4d')](_['pick'](_0x1d35dc[_0xd24e('0x43')],_0x310a95['filters']));_0x3dbf5e['where'][_0xd24e('0x62')]=_0x2c7e8f['id'];if(_0x1d35dc['query'][_0xd24e('0x4e')]){_0x3dbf5e[_0xd24e('0x4c')]=_[_0xd24e('0x4f')](_0x3dbf5e['where'],{'$or':_[_0xd24e('0x3c')](_0x3dbf5e[_0xd24e('0x45')],function(_0xfae200){var _0x1cc188={};_0x1cc188[_0xfae200]={'$like':'%'+_0x1d35dc[_0xd24e('0x43')][_0xd24e('0x4e')]+'%'};return _0x1cc188;})});}_0x3dbf5e=_[_0xd24e('0x4f')]({},_0x3dbf5e,_0x1d35dc[_0xd24e('0x50')]);return db[_0xd24e('0x6d')]['count']({'where':_0x3dbf5e['where']})[_0xd24e('0x1b')](function(_0x2296aa){_0x22854f[_0xd24e('0x2a')]=_0x2296aa;if(_0x1d35dc[_0xd24e('0x43')][_0xd24e('0x51')]){_0x3dbf5e[_0xd24e('0x52')]=[{'model':db['CmContact'],'as':_0xd24e('0x70'),'required':![]},{'model':db[_0xd24e('0x71')],'as':'Owner','attributes':[_0xd24e('0x37'),_0xd24e('0x72'),_0xd24e('0x73')],'required':![]},{'model':db[_0xd24e('0x74')],'as':_0xd24e('0x75'),'attributes':['id',_0xd24e('0x37'),_0xd24e('0x76')],'where':_0x1d35dc[_0xd24e('0x43')][_0xd24e('0x77')]?{'id':_0x1d35dc[_0xd24e('0x43')]['tag']}:undefined,'required':_0x1d35dc[_0xd24e('0x43')][_0xd24e('0x77')]?!![]:![]}];}return db[_0xd24e('0x6d')][_0xd24e('0x53')](_0x3dbf5e);})[_0xd24e('0x1b')](function(_0x262197){_0x22854f['rows']=_0x262197;return _0x22854f;});}})['then'](respondWithFilteredResult(_0x58dff7,_0x3dbf5e))[_0xd24e('0x25')](handleError(_0x58dff7,null));};exports['addApplications']=function(_0x1c0ed4,_0x2e113c){var _0x282917=_0x1c0ed4[_0xd24e('0x60')]['id'];var _0x133cfd=_0x1c0ed4[_0xd24e('0x59')];var _0x234da4=0xc8;var _0x1057b7=null;return db['sequelize']['transaction']({'isolationLevel':db[_0xd24e('0x78')][_0xd24e('0x79')][_0xd24e('0x7a')][_0xd24e('0x7b')]},function(_0x55bf3c){return db['FaxAccount'][_0xd24e('0x6a')]({'where':{'id':_0x282917},'transaction':_0x55bf3c})[_0xd24e('0x1b')](function(_0x2379e4){if(_0x2379e4){return db[_0xd24e('0x7c')][_0xd24e('0x31')]({'where':{'FaxAccountId':_0x282917},'transaction':_0x55bf3c})[_0xd24e('0x1b')](function(){var _0xecbca4=_['map'](_0x133cfd,function(_0x4c7c9f){_0x4c7c9f['FaxAccountId']=_0x282917;return _0x4c7c9f;});return db[_0xd24e('0x7c')][_0xd24e('0x7d')](_0xecbca4,{'transaction':_0x55bf3c});});}else{_0x234da4=0x194;_0x1057b7=[];}});})[_0xd24e('0x1b')](function(){if(_0x234da4!==0x194){return db[_0xd24e('0x7c')][_0xd24e('0x7e')]({'where':{'FaxAccountId':_0x282917},'order':_0xd24e('0x7f')})['then'](function(_0x383607){_0x1057b7=_0x383607;});}})[_0xd24e('0x25')](function(_0x3c828e){_0x234da4=0x1f4;logger['error'](_0x3c828e[_0xd24e('0x36')]);if(_0x3c828e[_0xd24e('0x37')]){delete _0x3c828e[_0xd24e('0x37')];}_0x1057b7=_0x3c828e;})['finally'](function(){if(_0x1057b7===null){_0x2e113c[_0xd24e('0x35')](_0x234da4);}else{if(_0x234da4===0x1f4){_0x2e113c['status'](_0x234da4)[_0xd24e('0x38')](_0x1057b7);}else{_0x2e113c[_0xd24e('0x26')](_0x234da4)[_0xd24e('0x27')](_0x1057b7);}}});};exports[_0xd24e('0x80')]=function(_0x3d7003,_0x4bf2ac,_0x3fc207){var _0x48393b={};var _0xdf1cb={};var _0x43f27e;var _0x915857;return db[_0xd24e('0x3d')][_0xd24e('0x6a')]({'where':{'id':_0x3d7003[_0xd24e('0x60')]['id']}})[_0xd24e('0x1b')](handleEntityNotFound(_0x4bf2ac,null))[_0xd24e('0x1b')](function(_0x28ca23){if(_0x28ca23){_0x43f27e=_0x28ca23;_0xdf1cb[_0xd24e('0x42')]=_[_0xd24e('0x44')](db[_0xd24e('0x7c')][_0xd24e('0x3e')]);_0xdf1cb[_0xd24e('0x43')]=_[_0xd24e('0x44')](_0x3d7003[_0xd24e('0x43')]);_0xdf1cb[_0xd24e('0x4d')]=_[_0xd24e('0x56')](_0xdf1cb[_0xd24e('0x42')],_0xdf1cb['query']);_0x48393b['attributes']=_[_0xd24e('0x56')](_0xdf1cb['model'],qs[_0xd24e('0x46')](_0x3d7003[_0xd24e('0x43')][_0xd24e('0x46')]));_0x48393b[_0xd24e('0x45')]=_0x48393b[_0xd24e('0x45')][_0xd24e('0x47')]?_0x48393b[_0xd24e('0x45')]:_0xdf1cb[_0xd24e('0x42')];_0x48393b['order']=qs['sort'](_0x3d7003[_0xd24e('0x43')]['sort']);_0x48393b[_0xd24e('0x4c')]=qs[_0xd24e('0x4d')](_[_0xd24e('0x66')](_0x3d7003[_0xd24e('0x43')],_0xdf1cb[_0xd24e('0x4d')]));if(_0x3d7003[_0xd24e('0x43')][_0xd24e('0x4e')]){_0x48393b[_0xd24e('0x4c')]=_[_0xd24e('0x4f')](_0x48393b[_0xd24e('0x4c')],{'$or':_[_0xd24e('0x3c')](_0x48393b[_0xd24e('0x45')],function(_0x5e6a7f){var _0xbae752={};_0xbae752[_0x5e6a7f]={'$like':'%'+_0x3d7003[_0xd24e('0x43')][_0xd24e('0x4e')]+'%'};return _0xbae752;})});}_0x48393b=_[_0xd24e('0x4f')]({},_0x48393b,_0x3d7003['options']);return _0x43f27e[_0xd24e('0x80')](_0x48393b);}})[_0xd24e('0x1b')](function(_0x5e230b){if(_0x5e230b){_0x915857=_0x5e230b[_0xd24e('0x47')];if(!_0x3d7003[_0xd24e('0x43')]['hasOwnProperty'](_0xd24e('0x49'))){_0x48393b[_0xd24e('0x4a')]=qs[_0xd24e('0x4a')](_0x3d7003[_0xd24e('0x43')][_0xd24e('0x4a')]);_0x48393b[_0xd24e('0x28')]=qs[_0xd24e('0x28')](_0x3d7003['query'][_0xd24e('0x28')]);}return _0x43f27e['getApplications'](_0x48393b);}})[_0xd24e('0x1b')](function(_0x5654ec){if(_0x5654ec){return _0x5654ec?{'count':_0x915857,'rows':_0x5654ec}:null;}})['then'](respondWithResult(_0x4bf2ac,null))[_0xd24e('0x25')](handleError(_0x4bf2ac,null));};function Extension(_0x278d1c,_0x3848fe,_0x593263,_0x235372){this[_0xd24e('0x81')]=_0xd24e('0x82');this['exten']=_0x278d1c[_0xd24e('0x83')];this['app']=_0x235372;this[_0xd24e('0x40')]='system';this['description']='Fax\x20Extension';this['FaxAccountId']=_0x278d1c['id'];this[_0xd24e('0x7f')]=_0x3848fe;this['appdata']=_0x593263;}function createExtensionsReciveFax(_0x1e8ac1){var _0x40031b=0x1;var _0x581415=[];_0x581415['push'](new Extension(_0x1e8ac1,_0x40031b,'',_0xd24e('0x84')));_0x40031b+=0x1;_0x581415[_0xd24e('0x85')](new Extension(_0x1e8ac1,_0x40031b,'CDR(type)=inbound-fax',_0xd24e('0x86')));_0x40031b+=0x1;for(var _0x405a71 in _0x1e8ac1){if(_0x1e8ac1[_0xd24e('0x48')](_0x405a71)&&(_0x405a71==='ecm'||_0x405a71===_0xd24e('0x83')||_0x405a71===_0xd24e('0x87')||_0x405a71===_0xd24e('0x88')||_0x405a71===_0xd24e('0x89')||_0x405a71===_0xd24e('0x8a')||_0x405a71==='minrate'||_0x405a71===_0xd24e('0x8b')||_0x405a71==='t38timeout')){_0x581415[_0xd24e('0x85')](new Extension(_0x1e8ac1,_0x40031b,'FAXOPT('+_0x405a71+')='+_0x1e8ac1[_0x405a71],_0xd24e('0x86')));_0x40031b+=0x1;}}_0x581415[_0xd24e('0x85')](new Extension(_0x1e8ac1,_0x40031b,'6',_0xd24e('0x8c')));_0x40031b+=0x1;_0x581415[_0xd24e('0x85')](new Extension(_0x1e8ac1,_0x40031b,_0xd24e('0x8d'),_0xd24e('0x8e')));_0x40031b=0x0;return _0x581415;}exports[_0xd24e('0x8f')]=function(_0x2fd48c,_0x730301,_0x2b8bbc){var _0x3b488e;return db['sequelize']['transaction'](function(_0x5b5671){return db[_0xd24e('0x3d')]['create'](_0x2fd48c['body'],{'transaction':_0x5b5671})[_0xd24e('0x1b')](function(_0x5ccd3c){_0x3b488e=_0x5ccd3c['get']({'plain':!![]});return db[_0xd24e('0x90')]['bulkCreate'](createExtensionsReciveFax(_0x3b488e),{'transaction':_0x5b5671});});})[_0xd24e('0x1b')](function(){return _0x3b488e;})[_0xd24e('0x1b')](respondWithResult(_0x730301,null))[_0xd24e('0x25')](handleError(_0x730301,null));};exports[_0xd24e('0x91')]=function(_0x7ddaa6,_0x5005be,_0x42e88f){var _0x13a9b0;return db[_0xd24e('0x78')][_0xd24e('0x92')](function(_0x5a6334){return db[_0xd24e('0x3d')][_0xd24e('0x30')](_0x7ddaa6['body'],{'where':{'id':_0x7ddaa6[_0xd24e('0x59')]['id']},'transaction':_0x5a6334})[_0xd24e('0x1b')](function(_0x14f668){return db[_0xd24e('0x90')][_0xd24e('0x31')]({'where':{'FaxAccountId':_0x7ddaa6[_0xd24e('0x59')]['id']},'transaction':_0x5a6334})['then'](function(_0x80146e){return db[_0xd24e('0x90')][_0xd24e('0x7d')](createExtensionsReciveFax(_[_0xd24e('0x6f')](_0x7ddaa6[_0xd24e('0x59')],[_0xd24e('0x93'),_0xd24e('0x41'),_0xd24e('0x94'),_0xd24e('0x95'),_0xd24e('0x96'),_0xd24e('0x97')])),{'transaction':_0x5a6334});});});})[_0xd24e('0x1b')](function(){return db['FaxAccount']['findById'](_0x7ddaa6[_0xd24e('0x59')]['id']);})['then'](respondWithResult(_0x5005be,null))['catch'](handleError(_0x5005be,null));};exports[_0xd24e('0x98')]=function(_0x1031f6,_0x11f063,_0x293ac4){var _0x58b41b={'raw':!![],'where':{}};var _0x5e37ac={};var _0xcbf8e4={'count':0x0,'rows':[]};return db[_0xd24e('0x3d')]['findOne']({'where':{'id':_0x1031f6[_0xd24e('0x60')]['id']}})[_0xd24e('0x1b')](handleEntityNotFound(_0x11f063,null))[_0xd24e('0x1b')](function(_0x57ccc4){if(_0x57ccc4){_0x5e37ac[_0xd24e('0x42')]=_['keys'](db[_0xd24e('0x99')][_0xd24e('0x3e')]);_0x5e37ac[_0xd24e('0x43')]=_[_0xd24e('0x44')](_0x1031f6[_0xd24e('0x43')]);_0x5e37ac[_0xd24e('0x4d')]=_[_0xd24e('0x56')](_0x5e37ac['model'],_0x5e37ac[_0xd24e('0x43')]);_0x58b41b[_0xd24e('0x45')]=_[_0xd24e('0x56')](_0x5e37ac[_0xd24e('0x42')],qs[_0xd24e('0x46')](_0x1031f6['query']['fields']));_0x58b41b['attributes']=_0x58b41b[_0xd24e('0x45')][_0xd24e('0x47')]?_0x58b41b[_0xd24e('0x45')]:_0x5e37ac[_0xd24e('0x42')];if(!_0x1031f6[_0xd24e('0x43')][_0xd24e('0x48')](_0xd24e('0x49'))){_0x58b41b[_0xd24e('0x4a')]=qs[_0xd24e('0x4a')](_0x1031f6['query']['limit']);_0x58b41b[_0xd24e('0x28')]=qs[_0xd24e('0x28')](_0x1031f6[_0xd24e('0x43')][_0xd24e('0x28')]);}_0x58b41b['order']=qs['sort'](_0x1031f6['query'][_0xd24e('0x4b')]);_0x58b41b[_0xd24e('0x4c')]=qs['filters'](_[_0xd24e('0x66')](_0x1031f6[_0xd24e('0x43')],_0x5e37ac[_0xd24e('0x4d')]));_0x58b41b['where'][_0xd24e('0x62')]=_0x57ccc4['id'];if(_0x1031f6[_0xd24e('0x43')][_0xd24e('0x4e')]){_0x58b41b[_0xd24e('0x4c')]=_['merge'](_0x58b41b[_0xd24e('0x4c')],{'$or':_['map'](_0x58b41b[_0xd24e('0x45')],function(_0x2ff682){var _0x56b60a={};_0x56b60a[_0x2ff682]={'$like':'%'+_0x1031f6[_0xd24e('0x43')][_0xd24e('0x4e')]+'%'};return _0x56b60a;})});}if(_0x1031f6[_0xd24e('0x43')][_0xd24e('0x9a')]){var _0xbc6e26=_0x1031f6['query']['$gte'][_0xd24e('0x9b')](',');var _0x4b193b={};_0x4b193b[_0xbc6e26[0x0]]={'$gte':moment(_0xbc6e26[0x1])[_0xd24e('0x9c')](_0xd24e('0x9d'))};_0x58b41b[_0xd24e('0x4c')]=_[_0xd24e('0x4f')](_0x58b41b[_0xd24e('0x4c')],_0x4b193b);}_0x58b41b=_[_0xd24e('0x4f')]({},_0x58b41b,_0x1031f6['options']);return db[_0xd24e('0x99')][_0xd24e('0x2a')]({'where':_0x58b41b['where']})[_0xd24e('0x1b')](function(_0x19e966){_0xcbf8e4[_0xd24e('0x2a')]=_0x19e966;if(_0x1031f6['query'][_0xd24e('0x51')]){_0x58b41b[_0xd24e('0x52')]=[{'all':!![]}];}return db['FaxMessage'][_0xd24e('0x53')](_0x58b41b);})[_0xd24e('0x1b')](function(_0x24143d){_0xcbf8e4['rows']=_0x24143d;return _0xcbf8e4;});}})[_0xd24e('0x1b')](respondWithFilteredResult(_0x11f063,_0x58b41b))[_0xd24e('0x25')](handleError(_0x11f063,null));};exports[_0xd24e('0x38')]=function(_0x65ea84,_0x23274a,_0x84dc3c){var _0x2e2adf,_0x1da0b4={},_0x555a02;if(_0x65ea84[_0xd24e('0x59')]['to']){_0x555a02=_0x65ea84['body']['to'][0x0];}return db[_0xd24e('0x3d')][_0xd24e('0x57')]({'where':{'id':_0x65ea84[_0xd24e('0x60')]['id']},'include':[{'model':db[_0xd24e('0x9e')],'as':'List','include':[{'model':db[_0xd24e('0x9f')],'as':_0xd24e('0xa0'),'where':{'fax':_0x555a02},'limit':0x1,'order':[['updatedAt',_0xd24e('0xa1')]]}]}]})[_0xd24e('0x1b')](handleEntityNotFound(_0x23274a,null))[_0xd24e('0x1b')](function(_0x155050){_0x2e2adf=_0x155050;if(_0x65ea84['body'][_0xd24e('0xa2')]&&_0x65ea84['body']['attachments']['length']){for(var _0x239192=0x0;_0x239192<_0x65ea84['body']['attachments'][_0xd24e('0x47')];_0x239192+=0x1){_0x65ea84[_0xd24e('0x59')][_0xd24e('0xa2')][_0x239192]={'filename':_0x65ea84[_0xd24e('0x59')][_0xd24e('0xa2')][_0x239192][_0xd24e('0x37')],'id':_0x65ea84[_0xd24e('0x59')][_0xd24e('0xa2')][_0x239192]['id'],'path':path['join'](config[_0xd24e('0xa3')],'server/files/attachments',_0x65ea84[_0xd24e('0x59')][_0xd24e('0xa2')][_0x239192]['basename'])};}}return respondWithRpcPromise(_0xd24e('0xa4'),_0xd24e('0xa4'),{'FaxAccountId':_[_0xd24e('0xa5')](_0x65ea84[_0xd24e('0x60')]['id'])?undefined:_0x65ea84[_0xd24e('0x60')]['id'],'path':_[_0xd24e('0xa5')](_0x65ea84[_0xd24e('0x59')]['attachments'][0x0][_0xd24e('0x6')])?undefined:_0x65ea84['body'][_0xd24e('0xa2')][0x0]['path'],'fax':_['isNil'](_0x65ea84['body']['to'][0x0])?undefined:_0x65ea84[_0xd24e('0x59')]['to'][0x0]},client9002);})[_0xd24e('0x1b')](function(){if(_0x2e2adf){if(_[_0xd24e('0xa5')](_0x65ea84[_0xd24e('0x59')]['from'])){_0x65ea84['body'][_0xd24e('0xa6')]=util[_0xd24e('0x9c')](_0xd24e('0xa7'),_0x2e2adf[_0xd24e('0x37')],_0x2e2adf['fax']);}if(_0x2e2adf[_0xd24e('0xa8')]){if(_0x2e2adf[_0xd24e('0xa8')][_0xd24e('0xa0')][_0xd24e('0x47')]){return _0x2e2adf['List'][_0xd24e('0xa0')][0x0];}else{return db[_0xd24e('0x9f')][_0xd24e('0x58')](_[_0xd24e('0xa9')](_0x65ea84[_0xd24e('0x59')],{'firstName':_0x65ea84[_0xd24e('0x59')]['to'][0x0],'phone':_0x65ea84['body']['to'][0x0],'fax':_0x65ea84[_0xd24e('0x59')]['to'][0x0],'ListId':_0x2e2adf[_0xd24e('0x97')]}));}}else{throw new Error(_0xd24e('0xaa'));}}else{throw new Error(_0xd24e('0xab'));}})[_0xd24e('0x1b')](function(_0x348548){if(_0x348548){return db[_0xd24e('0x6d')][_0xd24e('0x57')]({'where':{'ContactId':_0x348548['id'],'closed':![],'FaxAccountId':_0x2e2adf['id']}})[_0xd24e('0x1b')](function(_0x547a28){if(_0x547a28){return[_0x547a28,![]];}return db[_0xd24e('0x6d')][_0xd24e('0x58')]({'UserId':_0x65ea84[_0xd24e('0x5a')]['id'],'ContactId':_0x348548['id'],'FaxAccountId':_0x2e2adf['id'],'fax':_0x65ea84[_0xd24e('0x59')]['to'][0x0],'firstMsgDirection':_0xd24e('0xac'),'Messages':[_[_0xd24e('0x4f')](_0x65ea84['body'],{'read':![],'body':_0x65ea84['body'][_0xd24e('0xa2')][0x0]['filename'],'FaxAccountId':_0x2e2adf['id'],'UserId':_0x65ea84[_0xd24e('0x5a')]['id'],'ContactId':_0x348548['id'],'AttachmentId':_0x65ea84[_0xd24e('0x59')][_0xd24e('0xa2')][0x0]['id']})]},{'include':[{'model':db['FaxMessage'],'as':_0xd24e('0xad')}]})[_0xd24e('0x1b')](function(_0x5836b1){return[_0x5836b1,!![]];});});}else{throw new Error(_0xd24e('0xae'));}})['spread'](function(_0x14324a,_0x2a04a1){if(_0x2a04a1){return _0x14324a;}return db[_0xd24e('0x99')][_0xd24e('0x58')]({'direction':'out','read':![],'body':_0x65ea84[_0xd24e('0x59')][_0xd24e('0xa2')][0x0]['filename'],'FaxAccountId':_0x2e2adf['id'],'FaxInteractionId':_0x14324a['id'],'UserId':_0x65ea84[_0xd24e('0x5a')]['id'],'ContactId':_0x14324a[_0xd24e('0xaf')],'AttachmentId':_0x65ea84[_0xd24e('0x59')][_0xd24e('0xa2')][0x0]['id']})[_0xd24e('0x1b')](function(_0x1157c6){_0x14324a[_0xd24e('0xb0')][_0xd24e('0xad')]=[];_0x14324a['dataValues'][_0xd24e('0xad')][_0xd24e('0x85')](_0x1157c6['dataValues']);return _0x14324a;});})[_0xd24e('0x1b')](function(_0x32c08c){respondWithRpcPromise(_0xd24e('0xb1'),'SendFax',{'FaxAccountId':_['isNil'](_0x65ea84[_0xd24e('0x60')]['id'])?undefined:_0x65ea84[_0xd24e('0x60')]['id'],'path':_['isNil'](_0x65ea84[_0xd24e('0x59')][_0xd24e('0xa2')][0x0][_0xd24e('0x6')])?undefined:_0x65ea84[_0xd24e('0x59')][_0xd24e('0xa2')][0x0][_0xd24e('0x6')],'fax':_[_0xd24e('0xa5')](_0x65ea84[_0xd24e('0x59')]['to'][0x0])?undefined:_0x65ea84[_0xd24e('0x59')]['to'][0x0],'AttachmentId':_0x65ea84['body'][_0xd24e('0xa2')][0x0]['id']},client9002)[_0xd24e('0x1b')](function(_0x530da2){logger[_0xd24e('0x1c')]('SendFaxRpc,\x20%s',_0x530da2);})[_0xd24e('0x25')](function(_0x6a69bf){logger[_0xd24e('0x1c')](_0xd24e('0xb2'),_0x6a69bf);});return _0x32c08c;})[_0xd24e('0x1b')](respondWithResult(_0x23274a,null))[_0xd24e('0x25')](handleError(_0x23274a,null));};exports[_0xd24e('0xb3')]=function(_0x4b30d4,_0x4230be,_0x366a7f){return db[_0xd24e('0x3d')][_0xd24e('0x57')]({'where':{'id':_0x4b30d4[_0xd24e('0x60')]['id']}})[_0xd24e('0x1b')](handleEntityNotFound(_0x4230be,null))[_0xd24e('0x1b')](function(_0x1a0a6e){if(_0x1a0a6e){return _0x1a0a6e['addAgents'](_0x4b30d4[_0xd24e('0x59')][_0xd24e('0x6c')],_[_0xd24e('0x6f')](_0x4b30d4['body'],['ids','id'])||{})[_0xd24e('0xb4')](function(_0x5ef8ec){for(var _0x16f474=0x0;_0x16f474<_0x4b30d4[_0xd24e('0x59')][_0xd24e('0x6c')][_0xd24e('0x47')];_0x16f474+=0x1){socket[_0xd24e('0xb5')](_0xd24e('0xb6'),{'UserId':Number(_0x4b30d4[_0xd24e('0x59')][_0xd24e('0x6c')][_0x16f474]),'FaxAccountId':Number(_0x4b30d4[_0xd24e('0x60')]['id'])});}return _0x5ef8ec;});}})[_0xd24e('0x1b')](respondWithResult(_0x4230be,null))[_0xd24e('0x25')](handleError(_0x4230be,null));};exports[_0xd24e('0xb7')]=function(_0x3060b9,_0x51f128,_0x4d4873){return db[_0xd24e('0x3d')]['find']({'where':{'id':_0x3060b9[_0xd24e('0x60')]['id']}})[_0xd24e('0x1b')](handleEntityNotFound(_0x51f128,null))[_0xd24e('0x1b')](function(_0x29a0ae){if(_0x29a0ae){return _0x29a0ae['removeAgents'](_0x3060b9[_0xd24e('0x43')][_0xd24e('0x6c')])['then'](function(){if(_[_0xd24e('0xb8')](_0x3060b9[_0xd24e('0x43')][_0xd24e('0x6c')])){for(var _0x338f25=0x0;_0x338f25<_0x3060b9[_0xd24e('0x43')][_0xd24e('0x6c')][_0xd24e('0x47')];_0x338f25+=0x1){socket['emit'](_0xd24e('0xb9'),{'UserId':Number(_0x3060b9[_0xd24e('0x43')][_0xd24e('0x6c')][_0x338f25]),'FaxAccountId':Number(_0x3060b9[_0xd24e('0x60')]['id'])});}}else{socket[_0xd24e('0xb5')](_0xd24e('0xb9'),{'UserId':Number(_0x3060b9[_0xd24e('0x43')][_0xd24e('0x6c')]),'FaxAccountId':Number(_0x3060b9[_0xd24e('0x60')]['id'])});}});}})[_0xd24e('0x1b')](respondWithStatusCode(_0x51f128,null))[_0xd24e('0x25')](handleError(_0x51f128,null));};exports[_0xd24e('0xba')]=function(_0x5e99eb,_0x1fd110,_0x441978){var _0x299c22={};var _0x3ef8e4={};var _0x445b83;var _0x500486;return db[_0xd24e('0x3d')][_0xd24e('0x6a')]({'where':{'id':_0x5e99eb['params']['id']}})[_0xd24e('0x1b')](handleEntityNotFound(_0x1fd110,null))[_0xd24e('0x1b')](function(_0x28e6a4){if(_0x28e6a4){_0x445b83=_0x28e6a4;_0x3ef8e4[_0xd24e('0x42')]=_['keys'](db[_0xd24e('0x71')][_0xd24e('0x3e')]);_0x3ef8e4[_0xd24e('0x43')]=_[_0xd24e('0x44')](_0x5e99eb[_0xd24e('0x43')]);_0x3ef8e4[_0xd24e('0x4d')]=_[_0xd24e('0x56')](_0x3ef8e4[_0xd24e('0x42')],_0x3ef8e4[_0xd24e('0x43')]);_0x299c22['attributes']=_[_0xd24e('0x56')](_0x3ef8e4[_0xd24e('0x42')],qs[_0xd24e('0x46')](_0x5e99eb['query'][_0xd24e('0x46')]));_0x299c22[_0xd24e('0x45')]=_0x299c22[_0xd24e('0x45')]['length']?_0x299c22[_0xd24e('0x45')]:_0x3ef8e4['model'];_0x299c22[_0xd24e('0x65')]=qs['sort'](_0x5e99eb[_0xd24e('0x43')][_0xd24e('0x4b')]);_0x299c22[_0xd24e('0x4c')]=qs['filters'](_[_0xd24e('0x66')](_0x5e99eb[_0xd24e('0x43')],_0x3ef8e4[_0xd24e('0x4d')]));if(_0x5e99eb[_0xd24e('0x43')]['filter']){_0x299c22['where']=_[_0xd24e('0x4f')](_0x299c22[_0xd24e('0x4c')],{'$or':_[_0xd24e('0x3c')](_0x299c22['attributes'],function(_0x2ff94d){var _0x4c5a1d={};_0x4c5a1d[_0x2ff94d]={'$like':'%'+_0x5e99eb['query']['filter']+'%'};return _0x4c5a1d;})});}_0x299c22=_[_0xd24e('0x4f')]({},_0x299c22,_0x5e99eb[_0xd24e('0x50')]);return _0x445b83['getAgents'](_0x299c22);}})['then'](function(_0x31da0a){if(_0x31da0a){_0x500486=_0x31da0a[_0xd24e('0x47')];if(!_0x5e99eb[_0xd24e('0x43')][_0xd24e('0x48')](_0xd24e('0x49'))){_0x299c22[_0xd24e('0x4a')]=qs[_0xd24e('0x4a')](_0x5e99eb[_0xd24e('0x43')][_0xd24e('0x4a')]);_0x299c22[_0xd24e('0x28')]=qs['offset'](_0x5e99eb['query'][_0xd24e('0x28')]);}return _0x445b83[_0xd24e('0xba')](_0x299c22);}})[_0xd24e('0x1b')](function(_0x4ac68d){if(_0x4ac68d){return _0x4ac68d?{'count':_0x500486,'rows':_0x4ac68d}:null;}})['then'](respondWithResult(_0x1fd110,null))[_0xd24e('0x25')](handleError(_0x1fd110,null));};
\ No newline at end of file
index 9143844..9bfa8fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96ff=['hasOwnProperty','FaxAccount','update','remove','emit'];(function(_0x5b273d,_0x5260f9){var _0x173962=function(_0x2e69dd){while(--_0x2e69dd){_0x5b273d['push'](_0x5b273d['shift']());}};_0x173962(++_0x5260f9);}(_0x96ff,0xd8));var _0xf96f=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x96ff[_0xfae23b];return _0x200640;};'use strict';var EventEmitter=require('events');var FaxAccount=require('../../mysqldb')['db'][_0xf96f('0x0')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xf96f('0x1'),'afterDestroy':_0xf96f('0x2')};function emitEvent(_0xa5230d){return function(_0x349a4e,_0x1f7419,_0x1ba41d){FaxAccountEvents[_0xf96f('0x3')](_0xa5230d+':'+_0x349a4e['id'],_0x349a4e);FaxAccountEvents[_0xf96f('0x3')](_0xa5230d,_0x349a4e);_0x1ba41d(null);};}for(var e in events){if(events[_0xf96f('0x4')](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module['exports']=FaxAccountEvents;
\ No newline at end of file
+var _0x4965=['FaxAccount','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x978971,_0x4ca3cb){var _0x48572f=function(_0x58fdd6){while(--_0x58fdd6){_0x978971['push'](_0x978971['shift']());}};_0x48572f(++_0x4ca3cb);}(_0x4965,0x16e));var _0x5496=function(_0x39c084,_0xbc0456){_0x39c084=_0x39c084-0x0;var _0x5e6575=_0x4965[_0x39c084];return _0x5e6575;};'use strict';var EventEmitter=require(_0x5496('0x0'));var FaxAccount=require(_0x5496('0x1'))['db'][_0x5496('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x5496('0x3')};function emitEvent(_0x510ce7){return function(_0x2b3ea1,_0x1f2e5a,_0x9afbc2){FaxAccountEvents['emit'](_0x510ce7+':'+_0x2b3ea1['id'],_0x2b3ea1);FaxAccountEvents[_0x5496('0x4')](_0x510ce7,_0x2b3ea1);_0x9afbc2(null);};}for(var e in events){if(events[_0x5496('0x5')](e)){var event=events[e];FaxAccount[_0x5496('0x6')](e,emitEvent(event));}}module[_0x5496('0x7')]=FaxAccountEvents;
\ No newline at end of file
index a416c40..1dee8dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9021=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./faxAccount.attributes','exports','define','fax_accounts','lodash'];(function(_0x245bb4,_0xad6f54){var _0x13be0d=function(_0x443996){while(--_0x443996){_0x245bb4['push'](_0x245bb4['shift']());}};_0x13be0d(++_0xad6f54);}(_0x9021,0x185));var _0x1902=function(_0x1a30ea,_0x22bf39){_0x1a30ea=_0x1a30ea-0x0;var _0x36b8f2=_0x9021[_0x1a30ea];return _0x36b8f2;};'use strict';var _=require(_0x1902('0x0'));var util=require(_0x1902('0x1'));var logger=require(_0x1902('0x2'))(_0x1902('0x3'));var moment=require(_0x1902('0x4'));var BPromise=require(_0x1902('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1902('0x6'));var rimraf=require(_0x1902('0x7'));var config=require(_0x1902('0x8'));var attributes=require(_0x1902('0x9'));module[_0x1902('0xa')]=function(_0x12837a,_0x29c997){return _0x12837a[_0x1902('0xb')]('FaxAccount',attributes,{'tableName':_0x1902('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfd1c=['request-promise','path','rimraf','../../config/environment','./faxAccount.attributes','exports','FaxAccount','fax_accounts','lodash','util','../../config/logger','moment'];(function(_0x5575cd,_0x73ab7a){var _0x4979a0=function(_0x1ac744){while(--_0x1ac744){_0x5575cd['push'](_0x5575cd['shift']());}};_0x4979a0(++_0x73ab7a);}(_0xfd1c,0xf8));var _0xcfd1=function(_0x3d00db,_0x3692b3){_0x3d00db=_0x3d00db-0x0;var _0x41f115=_0xfd1c[_0x3d00db];return _0x41f115;};'use strict';var _=require(_0xcfd1('0x0'));var util=require(_0xcfd1('0x1'));var logger=require(_0xcfd1('0x2'))('api');var moment=require(_0xcfd1('0x3'));var BPromise=require('bluebird');var rp=require(_0xcfd1('0x4'));var fs=require('fs');var path=require(_0xcfd1('0x5'));var rimraf=require(_0xcfd1('0x6'));var config=require(_0xcfd1('0x7'));var attributes=require(_0xcfd1('0x8'));module[_0xcfd1('0x9')]=function(_0x3ee28b,_0x2d936a){return _0x3ee28b['define'](_0xcfd1('0xa'),attributes,{'tableName':_0xcfd1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0b4c27b..671b1b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d53=['User','name','agent','waitForTheAssignedAgent','Start','startRouting','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','request\x20sent','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','info','catch','GetFaxAccount','FaxAccount','findAll','options','where','limit','include','model','attributes','map','debug','body','CmContact','describe','Sequelize','ValidationError','difference','keys','createdAt','updatedAt','CompanyId','ListId','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','List','Contacts','DESC','FaxApplication','Applications','applications','list','orderBy','asc','length','from','create','contact','fax','FaxInteraction','Contact\x20not\x20found','spread','get','push','close','unmanaged','*,*,*,*','created','interaction','FaxMessage','ContactId','AttachmentId'];(function(_0x47b08e,_0x49a182){var _0x233afa=function(_0x3bed5e){while(--_0x3bed5e){_0x47b08e['push'](_0x47b08e['shift']());}};_0x233afa(++_0x49a182);}(_0x4d53,0x16e));var _0x34d5=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0x4d53[_0x433a86];return _0x23000c;};'use strict';var _=require('lodash');var util=require(_0x34d5('0x0'));var moment=require(_0x34d5('0x1'));var BPromise=require(_0x34d5('0x2'));var rs=require(_0x34d5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x34d5('0x4'))['db'];var utils=require(_0x34d5('0x5'));var logger=require(_0x34d5('0x6'))(_0x34d5('0x7'));var config=require(_0x34d5('0x8'));var jayson=require(_0x34d5('0x9'));var client=jayson[_0x34d5('0xa')][_0x34d5('0xb')]({'port':0x232c});config[_0x34d5('0xc')]=_[_0x34d5('0xd')](config[_0x34d5('0xc')],{'host':_0x34d5('0xe'),'port':0x18eb});var socket=require(_0x34d5('0xf'))(new Redis(config[_0x34d5('0xc')]));require('./faxAccount.socket')[_0x34d5('0x10')](socket);function respondWithRpcPromise(_0x2f45cd,_0x3cb0ec,_0x22a67f){return new BPromise(function(_0x183d01,_0x23c79a){return client[_0x34d5('0x11')](_0x2f45cd,_0x22a67f)[_0x34d5('0x12')](function(_0xe02933){logger['info']('FaxAccount,\x20%s,\x20%s',_0x3cb0ec,_0x34d5('0x13'));logger['debug'](_0x34d5('0x14'),_0x3cb0ec,_0x34d5('0x13'),JSON[_0x34d5('0x15')](_0xe02933));if(_0xe02933[_0x34d5('0x16')]){if(_0xe02933[_0x34d5('0x16')][_0x34d5('0x17')]===0x1f4){logger[_0x34d5('0x16')](_0x34d5('0x18'),_0x3cb0ec,_0xe02933[_0x34d5('0x16')][_0x34d5('0x19')]);return _0x23c79a(_0xe02933[_0x34d5('0x16')][_0x34d5('0x19')]);}logger[_0x34d5('0x16')](_0x34d5('0x18'),_0x3cb0ec,_0xe02933[_0x34d5('0x16')][_0x34d5('0x19')]);return _0x183d01(_0xe02933[_0x34d5('0x16')][_0x34d5('0x19')]);}else{logger[_0x34d5('0x1a')](_0x34d5('0x18'),_0x3cb0ec,_0x34d5('0x13'));_0x183d01(_0xe02933['result'][_0x34d5('0x19')]);}})[_0x34d5('0x1b')](function(_0x16a791){logger[_0x34d5('0x16')](_0x34d5('0x18'),_0x3cb0ec,_0x16a791);_0x23c79a(_0x16a791);});});}exports[_0x34d5('0x1c')]=function(_0x2ed144){var _0x1ded4d=this;return new Promise(function(_0x561adf,_0x205d30){return db[_0x34d5('0x1d')][_0x34d5('0x1e')]({'raw':_0x2ed144[_0x34d5('0x1f')]?_0x2ed144[_0x34d5('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x2ed144[_0x34d5('0x1f')]?_0x2ed144['options'][_0x34d5('0x20')]||null:null,'attributes':_0x2ed144[_0x34d5('0x1f')]?_0x2ed144['options']['attributes']||null:null,'limit':_0x2ed144[_0x34d5('0x1f')]?_0x2ed144[_0x34d5('0x1f')][_0x34d5('0x21')]||null:null,'include':_0x2ed144[_0x34d5('0x1f')]?_0x2ed144[_0x34d5('0x1f')][_0x34d5('0x22')]?_['map'](_0x2ed144[_0x34d5('0x1f')]['include'],function(_0x4be02b){return{'model':db[_0x4be02b[_0x34d5('0x23')]],'as':_0x4be02b['as'],'attributes':_0x4be02b[_0x34d5('0x24')],'include':_0x4be02b[_0x34d5('0x22')]?_[_0x34d5('0x25')](_0x4be02b[_0x34d5('0x22')],function(_0x171c8b){return{'model':db[_0x171c8b[_0x34d5('0x23')]],'as':_0x171c8b['as'],'attributes':_0x171c8b['attributes'],'include':_0x171c8b[_0x34d5('0x22')]?_[_0x34d5('0x25')](_0x171c8b['include'],function(_0x44288b){return{'model':db[_0x44288b['model']],'as':_0x44288b['as'],'attributes':_0x44288b['attributes']};}):[]};}):[]};}):[]:[]})[_0x34d5('0x12')](function(_0xe14249){logger[_0x34d5('0x1a')](_0x34d5('0x1c'),_0x2ed144);logger[_0x34d5('0x26')](_0x34d5('0x1c'),_0x2ed144,JSON[_0x34d5('0x15')](_0xe14249));_0x561adf(_0xe14249);})['catch'](function(_0x13c6c9){logger[_0x34d5('0x16')](_0x34d5('0x1c'),_0x13c6c9[_0x34d5('0x19')],_0x2ed144);_0x205d30(_0x1ded4d['error'](0x1f4,_0x13c6c9[_0x34d5('0x19')]));});});};exports['NotifyFaxAccount']=function(_0x3021e0,_0x21553d,_0x529378){var _0x184dc4=this;return new Promise(function(_0x3149ef,_0x5b322c){var _0x266810={'body':_0x3021e0[_0x34d5('0x27')],'channel':'fax'};var _0xf5e872=[];var _0x1aded8=[];var _0x1a50de={};return db[_0x34d5('0x28')][_0x34d5('0x29')]()['then'](function(_0x13239){if(!_0x13239){throw new db[(_0x34d5('0x2a'))][(_0x34d5('0x2b'))]('no\x20available\x20attributes');}_0xf5e872=_[_0x34d5('0x2c')](_[_0x34d5('0x2d')](_0x13239),[_0x34d5('0x2e'),_0x34d5('0x2f')]);_0x1aded8=_[_0x34d5('0x2c')](_['keys'](_0x13239),[_0x34d5('0x2e'),_0x34d5('0x2f'),_0x34d5('0x30'),_0x34d5('0x31')]);if(_0x3021e0[_0x34d5('0x27')]['id']){delete _0x3021e0[_0x34d5('0x27')]['id'];}if(_['isNil'](_0x3021e0[_0x34d5('0x27')]['from'])){throw new db[(_0x34d5('0x2a'))][(_0x34d5('0x2b'))]('from\x20is\x20mandatory');}if(_['isNil'](_0x3021e0[_0x34d5('0x27')]['body'])||_0x3021e0['body'][_0x34d5('0x27')]===''){throw new db[(_0x34d5('0x2a'))][(_0x34d5('0x2b'))](_0x34d5('0x32'));}if(_['isNil'](_0x3021e0[_0x34d5('0x27')][_0x34d5('0x33')])){throw new db[(_0x34d5('0x2a'))][(_0x34d5('0x2b'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x1aded8);}if(!_[_0x34d5('0x34')](_0x1aded8,_0x3021e0[_0x34d5('0x27')][_0x34d5('0x33')])){throw new db[(_0x34d5('0x2a'))][(_0x34d5('0x2b'))](_0x34d5('0x35')+_0x1aded8);}_0x1a50de[_0x3021e0[_0x34d5('0x27')]['mapKey']]=_0x3021e0[_0x34d5('0x27')]['from'];})['then'](function(){return db[_0x34d5('0x1d')][_0x34d5('0x36')]({'where':{'id':_0x3021e0[_0x34d5('0x37')]['id']},'include':[{'model':db[_0x34d5('0x38')],'as':_0x34d5('0x39'),'include':[{'model':db['CmContact'],'as':_0x34d5('0x3a'),'where':_0x1a50de,'limit':0x1,'order':[[_0x34d5('0x2f'),_0x34d5('0x3b')]]}]},{'model':db[_0x34d5('0x3c')],'as':_0x34d5('0x3d')}]});})[_0x34d5('0x12')](function(_0x353c33){if(_0x353c33&&_0x353c33[_0x34d5('0x39')]){var _0x6ad182=_0x353c33['get']({'plain':!![]});_0x266810[_0x34d5('0x37')]=_0x6ad182;_0x266810[_0x34d5('0x3e')]=_0x6ad182[_0x34d5('0x3d')];_0x266810[_0x34d5('0x3f')]=_0x6ad182[_0x34d5('0x39')];_0x266810['applications']=_[_0x34d5('0x40')](_0x266810[_0x34d5('0x3e')],['priority'],[_0x34d5('0x41')]);if(_0x266810[_0x34d5('0x37')][_0x34d5('0x3d')]){delete _0x266810['account']['Applications'];}if(_0x266810[_0x34d5('0x37')]['List']&&_0x266810['account'][_0x34d5('0x39')][_0x34d5('0x3a')][_0x34d5('0x42')]){return _0x266810['account'][_0x34d5('0x39')][_0x34d5('0x3a')][0x0];}var _0x3e4cbc=_[_0x34d5('0xd')](_0x3021e0[_0x34d5('0x27')],{'firstName':_0x3021e0[_0x34d5('0x27')]['from'],'ListId':_0x6ad182[_0x34d5('0x31')]});_0x3e4cbc[_0x3021e0[_0x34d5('0x27')][_0x34d5('0x33')]]=_0x3021e0[_0x34d5('0x27')][_0x34d5('0x43')];return db['CmContact'][_0x34d5('0x44')](_0x3e4cbc,{'fields':_0xf5e872,'raw':!![]});}})[_0x34d5('0x12')](function(_0x36fc4e){_0x266810[_0x34d5('0x45')]=_0x36fc4e;if(_0x36fc4e){var _0x40b0cd={'ContactId':_0x36fc4e['id'],'FaxAccountId':_0x3021e0[_0x34d5('0x37')]['id'],'fax':_0x36fc4e[_0x34d5('0x46')]};return db[_0x34d5('0x47')][_0x34d5('0x36')]({'where':{'ContactId':_0x36fc4e['id'],'closed':![],'FaxAccountId':_0x3021e0[_0x34d5('0x37')]['id']}})['then'](function(_0x18c2e5){if(_0x18c2e5){return[_0x18c2e5,![]];}return db['FaxInteraction'][_0x34d5('0x44')](_0x40b0cd)['then'](function(_0x1333f9){return[_0x1333f9,!![]];});});}else{throw new Error(_0x34d5('0x48'));}})[_0x34d5('0x49')](function(_0x4968a4,_0x4d847c){var _0x40b479=_0x4968a4[_0x34d5('0x4a')]({'plain':!![]});if(_0x4d847c){if(_0x266810[_0x34d5('0x37')]['autoclose']){_0x266810[_0x34d5('0x3e')][_0x34d5('0x4b')]({'id':0x0,'priority':_0x266810[_0x34d5('0x3e')][_0x34d5('0x42')]+0x1,'app':_0x34d5('0x4c'),'appdata':_0x34d5('0x4d'),'interval':_0x34d5('0x4e')});}_0x40b479['created']=!![];}else{_0x40b479[_0x34d5('0x4f')]=![];}_0x266810[_0x34d5('0x50')]=_0x40b479;return db[_0x34d5('0x51')][_0x34d5('0x44')]({'body':_0x3021e0['body']['body'],'FaxAccountId':_0x3021e0[_0x34d5('0x37')]['id'],'FaxInteractionId':_0x4968a4['id'],'direction':'in','ContactId':_0x4968a4[_0x34d5('0x52')],'AttachmentId':_0x3021e0[_0x34d5('0x27')][_0x34d5('0x53')]});})[_0x34d5('0x12')](function(_0x11a90e){_0x266810['message']=_0x11a90e;if(_0x266810[_0x34d5('0x50')]['UserId']){return db[_0x34d5('0x54')]['find']({'attributes':['id',_0x34d5('0x55')],'where':{'id':_0x266810[_0x34d5('0x50')]['UserId']}})[_0x34d5('0x12')](function(_0x18fb6e){if(_0x18fb6e){_0x266810['applications']['unshift']({'id':0x0,'priority':0x0,'app':_0x34d5('0x56'),'appdata':_0x18fb6e[_0x34d5('0x55')]+','+(_0x266810[_0x34d5('0x37')][_0x34d5('0x57')]||0xa),'interval':_0x34d5('0x4e')});}return respondWithRpcPromise(_0x34d5('0x58'),'startRouting',_0x266810);});}return respondWithRpcPromise('Start',_0x34d5('0x59'),_0x266810);})['then'](function(_0x35361c){_0x3149ef(_0x35361c);})[_0x34d5('0x1b')](function(_0xc87eaa){_0x5b322c(_0x184dc4[_0x34d5('0x16')](0x1f4,_0xc87eaa[_0x34d5('0x19')]));});});};
\ No newline at end of file
+var _0xe878=['catch','GetFaxAccount','FaxAccount','findAll','options','raw','where','attributes','limit','map','include','model','debug','body','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','Contacts','DESC','FaxApplication','Applications','List','get','applications','list','orderBy','asc','length','from','create','contact','fax','FaxInteraction','autoclose','push','unmanaged','*,*,*,*','created','ContactId','AttachmentId','interaction','UserId','User','name','unshift','agent','Start','startRouting','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result'];(function(_0x305486,_0x24acd4){var _0xa04940=function(_0x29e866){while(--_0x29e866){_0x305486['push'](_0x305486['shift']());}};_0xa04940(++_0x24acd4);}(_0xe878,0x14a));var _0x8e87=function(_0x5d8048,_0x445203){_0x5d8048=_0x5d8048-0x0;var _0x3affba=_0xe878[_0x5d8048];return _0x3affba;};'use strict';var _=require(_0x8e87('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x8e87('0x1'));var rs=require(_0x8e87('0x2'));var fs=require('fs');var Redis=require(_0x8e87('0x3'));var db=require(_0x8e87('0x4'))['db'];var utils=require(_0x8e87('0x5'));var logger=require(_0x8e87('0x6'))(_0x8e87('0x7'));var config=require(_0x8e87('0x8'));var jayson=require(_0x8e87('0x9'));var client=jayson[_0x8e87('0xa')][_0x8e87('0xb')]({'port':0x232c});config[_0x8e87('0xc')]=_[_0x8e87('0xd')](config[_0x8e87('0xc')],{'host':_0x8e87('0xe'),'port':0x18eb});var socket=require(_0x8e87('0xf'))(new Redis(config[_0x8e87('0xc')]));require('./faxAccount.socket')[_0x8e87('0x10')](socket);function respondWithRpcPromise(_0xa0efef,_0x39da18,_0x17b0c4){return new BPromise(function(_0x393eff,_0x3e1b9d){return client['request'](_0xa0efef,_0x17b0c4)[_0x8e87('0x11')](function(_0x54d146){logger[_0x8e87('0x12')](_0x8e87('0x13'),_0x39da18,_0x8e87('0x14'));logger['debug']('FaxAccount,\x20%s,\x20%s,\x20%s',_0x39da18,_0x8e87('0x14'),JSON[_0x8e87('0x15')](_0x54d146));if(_0x54d146[_0x8e87('0x16')]){if(_0x54d146[_0x8e87('0x16')][_0x8e87('0x17')]===0x1f4){logger[_0x8e87('0x16')](_0x8e87('0x13'),_0x39da18,_0x54d146[_0x8e87('0x16')][_0x8e87('0x18')]);return _0x3e1b9d(_0x54d146[_0x8e87('0x16')]['message']);}logger['error'](_0x8e87('0x13'),_0x39da18,_0x54d146[_0x8e87('0x16')][_0x8e87('0x18')]);return _0x393eff(_0x54d146[_0x8e87('0x16')][_0x8e87('0x18')]);}else{logger[_0x8e87('0x12')]('FaxAccount,\x20%s,\x20%s',_0x39da18,'request\x20sent');_0x393eff(_0x54d146[_0x8e87('0x19')]['message']);}})[_0x8e87('0x1a')](function(_0x149046){logger[_0x8e87('0x16')]('FaxAccount,\x20%s,\x20%s',_0x39da18,_0x149046);_0x3e1b9d(_0x149046);});});}exports[_0x8e87('0x1b')]=function(_0x360ac7){var _0x7c1504=this;return new Promise(function(_0x5b7eeb,_0xbe563b){return db[_0x8e87('0x1c')][_0x8e87('0x1d')]({'raw':_0x360ac7[_0x8e87('0x1e')]?_0x360ac7[_0x8e87('0x1e')][_0x8e87('0x1f')]===undefined?!![]:![]:!![],'where':_0x360ac7[_0x8e87('0x1e')]?_0x360ac7[_0x8e87('0x1e')][_0x8e87('0x20')]||null:null,'attributes':_0x360ac7[_0x8e87('0x1e')]?_0x360ac7[_0x8e87('0x1e')][_0x8e87('0x21')]||null:null,'limit':_0x360ac7[_0x8e87('0x1e')]?_0x360ac7[_0x8e87('0x1e')][_0x8e87('0x22')]||null:null,'include':_0x360ac7[_0x8e87('0x1e')]?_0x360ac7[_0x8e87('0x1e')]['include']?_[_0x8e87('0x23')](_0x360ac7[_0x8e87('0x1e')][_0x8e87('0x24')],function(_0x1be360){return{'model':db[_0x1be360['model']],'as':_0x1be360['as'],'attributes':_0x1be360[_0x8e87('0x21')],'include':_0x1be360[_0x8e87('0x24')]?_['map'](_0x1be360[_0x8e87('0x24')],function(_0x1dc924){return{'model':db[_0x1dc924['model']],'as':_0x1dc924['as'],'attributes':_0x1dc924[_0x8e87('0x21')],'include':_0x1dc924['include']?_[_0x8e87('0x23')](_0x1dc924[_0x8e87('0x24')],function(_0x2e4e84){return{'model':db[_0x2e4e84[_0x8e87('0x25')]],'as':_0x2e4e84['as'],'attributes':_0x2e4e84['attributes']};}):[]};}):[]};}):[]:[]})[_0x8e87('0x11')](function(_0x104196){logger[_0x8e87('0x12')](_0x8e87('0x1b'),_0x360ac7);logger[_0x8e87('0x26')](_0x8e87('0x1b'),_0x360ac7,JSON[_0x8e87('0x15')](_0x104196));_0x5b7eeb(_0x104196);})['catch'](function(_0x5e7a80){logger[_0x8e87('0x16')](_0x8e87('0x1b'),_0x5e7a80[_0x8e87('0x18')],_0x360ac7);_0xbe563b(_0x7c1504[_0x8e87('0x16')](0x1f4,_0x5e7a80[_0x8e87('0x18')]));});});};exports['NotifyFaxAccount']=function(_0x520e2b,_0x56b8ec,_0x20776e){var _0x208cdd=this;return new Promise(function(_0x561fd4,_0x51f51f){var _0xa79b7b={'body':_0x520e2b[_0x8e87('0x27')],'channel':'fax'};var _0x41df16=[];var _0x5baa7c=[];var _0x4d9309={};return db[_0x8e87('0x28')][_0x8e87('0x29')]()['then'](function(_0xcf29b5){if(!_0xcf29b5){throw new db[(_0x8e87('0x2a'))][(_0x8e87('0x2b'))](_0x8e87('0x2c'));}_0x41df16=_[_0x8e87('0x2d')](_[_0x8e87('0x2e')](_0xcf29b5),[_0x8e87('0x2f'),_0x8e87('0x30')]);_0x5baa7c=_['difference'](_['keys'](_0xcf29b5),[_0x8e87('0x2f'),_0x8e87('0x30'),_0x8e87('0x31'),'ListId']);if(_0x520e2b[_0x8e87('0x27')]['id']){delete _0x520e2b[_0x8e87('0x27')]['id'];}if(_[_0x8e87('0x32')](_0x520e2b['body']['from'])){throw new db[(_0x8e87('0x2a'))][(_0x8e87('0x2b'))]('from\x20is\x20mandatory');}if(_[_0x8e87('0x32')](_0x520e2b[_0x8e87('0x27')]['body'])||_0x520e2b[_0x8e87('0x27')][_0x8e87('0x27')]===''){throw new db['Sequelize'][(_0x8e87('0x2b'))](_0x8e87('0x33'));}if(_[_0x8e87('0x32')](_0x520e2b[_0x8e87('0x27')][_0x8e87('0x34')])){throw new db['Sequelize'][(_0x8e87('0x2b'))](_0x8e87('0x35')+_0x5baa7c);}if(!_['includes'](_0x5baa7c,_0x520e2b[_0x8e87('0x27')][_0x8e87('0x34')])){throw new db[(_0x8e87('0x2a'))][(_0x8e87('0x2b'))](_0x8e87('0x36')+_0x5baa7c);}_0x4d9309[_0x520e2b[_0x8e87('0x27')][_0x8e87('0x34')]]=_0x520e2b[_0x8e87('0x27')]['from'];})['then'](function(){return db['FaxAccount'][_0x8e87('0x37')]({'where':{'id':_0x520e2b[_0x8e87('0x38')]['id']},'include':[{'model':db[_0x8e87('0x39')],'as':'List','include':[{'model':db['CmContact'],'as':_0x8e87('0x3a'),'where':_0x4d9309,'limit':0x1,'order':[[_0x8e87('0x30'),_0x8e87('0x3b')]]}]},{'model':db[_0x8e87('0x3c')],'as':_0x8e87('0x3d')}]});})[_0x8e87('0x11')](function(_0x19e9b3){if(_0x19e9b3&&_0x19e9b3[_0x8e87('0x3e')]){var _0x516548=_0x19e9b3[_0x8e87('0x3f')]({'plain':!![]});_0xa79b7b[_0x8e87('0x38')]=_0x516548;_0xa79b7b[_0x8e87('0x40')]=_0x516548[_0x8e87('0x3d')];_0xa79b7b[_0x8e87('0x41')]=_0x516548[_0x8e87('0x3e')];_0xa79b7b[_0x8e87('0x40')]=_[_0x8e87('0x42')](_0xa79b7b[_0x8e87('0x40')],['priority'],[_0x8e87('0x43')]);if(_0xa79b7b[_0x8e87('0x38')][_0x8e87('0x3d')]){delete _0xa79b7b[_0x8e87('0x38')][_0x8e87('0x3d')];}if(_0xa79b7b[_0x8e87('0x38')][_0x8e87('0x3e')]&&_0xa79b7b[_0x8e87('0x38')]['List'][_0x8e87('0x3a')][_0x8e87('0x44')]){return _0xa79b7b[_0x8e87('0x38')][_0x8e87('0x3e')]['Contacts'][0x0];}var _0x53636b=_[_0x8e87('0xd')](_0x520e2b[_0x8e87('0x27')],{'firstName':_0x520e2b[_0x8e87('0x27')][_0x8e87('0x45')],'ListId':_0x516548['ListId']});_0x53636b[_0x520e2b['body'][_0x8e87('0x34')]]=_0x520e2b[_0x8e87('0x27')][_0x8e87('0x45')];return db['CmContact'][_0x8e87('0x46')](_0x53636b,{'fields':_0x41df16,'raw':!![]});}})['then'](function(_0x28dae3){_0xa79b7b[_0x8e87('0x47')]=_0x28dae3;if(_0x28dae3){var _0x4b1353={'ContactId':_0x28dae3['id'],'FaxAccountId':_0x520e2b['account']['id'],'fax':_0x28dae3[_0x8e87('0x48')]};return db[_0x8e87('0x49')][_0x8e87('0x37')]({'where':{'ContactId':_0x28dae3['id'],'closed':![],'FaxAccountId':_0x520e2b['account']['id']}})[_0x8e87('0x11')](function(_0x13f595){if(_0x13f595){return[_0x13f595,![]];}return db[_0x8e87('0x49')][_0x8e87('0x46')](_0x4b1353)['then'](function(_0x5d503f){return[_0x5d503f,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})['spread'](function(_0x39d7f8,_0x461ebf){var _0x2a8f10=_0x39d7f8[_0x8e87('0x3f')]({'plain':!![]});if(_0x461ebf){if(_0xa79b7b[_0x8e87('0x38')][_0x8e87('0x4a')]){_0xa79b7b[_0x8e87('0x40')][_0x8e87('0x4b')]({'id':0x0,'priority':_0xa79b7b[_0x8e87('0x40')]['length']+0x1,'app':'close','appdata':_0x8e87('0x4c'),'interval':_0x8e87('0x4d')});}_0x2a8f10[_0x8e87('0x4e')]=!![];}else{_0x2a8f10[_0x8e87('0x4e')]=![];}_0xa79b7b['interaction']=_0x2a8f10;return db['FaxMessage'][_0x8e87('0x46')]({'body':_0x520e2b[_0x8e87('0x27')][_0x8e87('0x27')],'FaxAccountId':_0x520e2b['account']['id'],'FaxInteractionId':_0x39d7f8['id'],'direction':'in','ContactId':_0x39d7f8[_0x8e87('0x4f')],'AttachmentId':_0x520e2b[_0x8e87('0x27')][_0x8e87('0x50')]});})[_0x8e87('0x11')](function(_0x29d4f0){_0xa79b7b[_0x8e87('0x18')]=_0x29d4f0;if(_0xa79b7b[_0x8e87('0x51')][_0x8e87('0x52')]){return db[_0x8e87('0x53')][_0x8e87('0x37')]({'attributes':['id',_0x8e87('0x54')],'where':{'id':_0xa79b7b[_0x8e87('0x51')][_0x8e87('0x52')]}})[_0x8e87('0x11')](function(_0x2530c6){if(_0x2530c6){_0xa79b7b[_0x8e87('0x40')][_0x8e87('0x55')]({'id':0x0,'priority':0x0,'app':_0x8e87('0x56'),'appdata':_0x2530c6[_0x8e87('0x54')]+','+(_0xa79b7b['account']['waitForTheAssignedAgent']||0xa),'interval':_0x8e87('0x4d')});}return respondWithRpcPromise('Start','startRouting',_0xa79b7b);});}return respondWithRpcPromise(_0x8e87('0x57'),_0x8e87('0x58'),_0xa79b7b);})[_0x8e87('0x11')](function(_0x549884){_0x561fd4(_0x549884);})[_0x8e87('0x1a')](function(_0x25f27b){_0x51f51f(_0x208cdd[_0x8e87('0x16')](0x1f4,_0x25f27b['message']));});});};
\ No newline at end of file
index 7b78937..72175a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb175=['removeListener','register','length','faxAccount:','./faxAccount.events','save','remove','update','emit'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xb175,0x67));var _0x5b17=function(_0xe59f59,_0x345c82){_0xe59f59=_0xe59f59-0x0;var _0x47b06e=_0xb175[_0xe59f59];return _0x47b06e;};'use strict';var FaxAccountEvents=require(_0x5b17('0x0'));var events=[_0x5b17('0x1'),_0x5b17('0x2'),_0x5b17('0x3')];function createListener(_0x18cac1,_0x548b68){return function(_0x1660e4){_0x548b68[_0x5b17('0x4')](_0x18cac1,_0x1660e4);};}function removeListener(_0x236ffa,_0x515d40){return function(){FaxAccountEvents[_0x5b17('0x5')](_0x236ffa,_0x515d40);};}exports[_0x5b17('0x6')]=function(_0x405333){for(var _0xe3b514=0x0,_0x122c82=events[_0x5b17('0x7')];_0xe3b514<_0x122c82;_0xe3b514++){var _0x46c8ba=events[_0xe3b514];var _0x3c90bb=createListener(_0x5b17('0x8')+_0x46c8ba,_0x405333);FaxAccountEvents['on'](_0x46c8ba,_0x3c90bb);}};
\ No newline at end of file
+var _0x3a38=['update','emit','removeListener','length','faxAccount:','save','remove'];(function(_0x411017,_0x4a8117){var _0x2adeea=function(_0x545222){while(--_0x545222){_0x411017['push'](_0x411017['shift']());}};_0x2adeea(++_0x4a8117);}(_0x3a38,0x83));var _0x83a3=function(_0x14da3c,_0x2daa0f){_0x14da3c=_0x14da3c-0x0;var _0x19d852=_0x3a38[_0x14da3c];return _0x19d852;};'use strict';var FaxAccountEvents=require('./faxAccount.events');var events=[_0x83a3('0x0'),_0x83a3('0x1'),_0x83a3('0x2')];function createListener(_0x556802,_0x18b0d3){return function(_0x44a58b){_0x18b0d3[_0x83a3('0x3')](_0x556802,_0x44a58b);};}function removeListener(_0x3a0232,_0x18283b){return function(){FaxAccountEvents[_0x83a3('0x4')](_0x3a0232,_0x18283b);};}exports['register']=function(_0x7d246d){for(var _0x155cc9=0x0,_0x5252b5=events[_0x83a3('0x5')];_0x155cc9<_0x5252b5;_0x155cc9++){var _0x3f0100=events[_0x155cc9];var _0x14ea62=createListener(_0x83a3('0x6')+_0x3f0100,_0x7d246d);FaxAccountEvents['on'](_0x3f0100,_0x14ea62);}};
\ No newline at end of file
index 6c10a97..ef14649 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(_0x392e38,_0x25a564){var _0x44d727=function(_0x2a1931){while(--_0x2a1931){_0x392e38['push'](_0x392e38['shift']());}};_0x44d727(++_0x25a564);}(_0xa9e0,0x123));var _0x0a9e=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0xa9e0[_0x387777];return _0x3f84c0;};'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(_0x5463e5,_0x5b34cb){var _0x5d5811=function(_0xe0a408){while(--_0xe0a408){_0x5463e5['push'](_0x5463e5['shift']());}};_0x5d5811(++_0x5b34cb);}(_0xa9e0,0x123));var _0x0a9e=function(_0x373dee,_0x1a8c45){_0x373dee=_0x373dee-0x0;var _0x46798f=_0xa9e0[_0x373dee];return _0x46798f;};'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 f00701f..dedd205 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9d7=['TEXT','sequelize','exports','STRING','noop'];(function(_0x34d4e0,_0x3558b0){var _0x3f2246=function(_0x579d5f){while(--_0x579d5f){_0x34d4e0['push'](_0x34d4e0['shift']());}};_0x3f2246(++_0x3558b0);}(_0xf9d7,0x164));var _0x7f9d=function(_0x3c24e7,_0x2031f6){_0x3c24e7=_0x3c24e7-0x0;var _0x41cbe9=_0xf9d7[_0x3c24e7];return _0x41cbe9;};'use strict';var Sequelize=require(_0x7f9d('0x0'));module[_0x7f9d('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x7f9d('0x2')],'allowNull':![],'defaultValue':_0x7f9d('0x3')},'appdata':{'type':Sequelize[_0x7f9d('0x4')]()},'description':{'type':Sequelize[_0x7f9d('0x2')]},'interval':{'type':Sequelize[_0x7f9d('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x57a0=['noop','TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x34843e,_0x4c4224){var _0x598f7f=function(_0x12a44c){while(--_0x12a44c){_0x34843e['push'](_0x34843e['shift']());}};_0x598f7f(++_0x4c4224);}(_0x57a0,0x1a7));var _0x057a=function(_0x470f2b,_0x49a29e){_0x470f2b=_0x470f2b-0x0;var _0x3160c0=_0x57a0[_0x470f2b];return _0x3160c0;};'use strict';var Sequelize=require(_0x057a('0x0'));module[_0x057a('0x1')]={'priority':{'type':Sequelize[_0x057a('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x057a('0x3')],'allowNull':![],'defaultValue':_0x057a('0x4')},'appdata':{'type':Sequelize[_0x057a('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x057a('0x6')}};
\ No newline at end of file
index 413cfb8..a2670a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c7d=['sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','name','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','map','filter','merge','options','FaxApplication','includeAll','include','findAll','rows','show','params','find','catch','create','body','destroy','eml-format','moment','util','fs-extra','lodash','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/environment'];(function(_0x4e922f,_0x26bb76){var _0x52b818=function(_0x1f6d49){while(--_0x1f6d49){_0x4e922f['push'](_0x4e922f['shift']());}};_0x52b818(++_0x26bb76);}(_0x7c7d,0x1b4));var _0xd7c7=function(_0x487257,_0x44edbf){_0x487257=_0x487257-0x0;var _0x38cac8=_0x7c7d[_0x487257];return _0x38cac8;};'use strict';var emlformat=require(_0xd7c7('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd7c7('0x1'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd7c7('0x2'));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(_0xd7c7('0x3'));var _=require(_0xd7c7('0x4'));var squel=require(_0xd7c7('0x5'));var crypto=require(_0xd7c7('0x6'));var jsforce=require(_0xd7c7('0x7'));var deskjs=require(_0xd7c7('0x8'));var toCsv=require(_0xd7c7('0x9'));var querystring=require('querystring');var Papa=require(_0xd7c7('0xa'));var Redis=require(_0xd7c7('0xb'));var authService=require(_0xd7c7('0xc'));var qs=require(_0xd7c7('0xd'));var as=require(_0xd7c7('0xe'));var hardwareService=require(_0xd7c7('0xf'));var logger=require(_0xd7c7('0x10'))(_0xd7c7('0x11'));var utils=require('../../config/utils');var config=require(_0xd7c7('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x47c82f,_0x3452e1){_0x3452e1=_0x3452e1||0xcc;return function(_0x5e5d7c){if(_0x5e5d7c){return _0x47c82f[_0xd7c7('0x13')](_0x3452e1);}return _0x47c82f[_0xd7c7('0x14')](_0x3452e1)[_0xd7c7('0x15')]();};}function respondWithResult(_0x4456bb,_0x32ddf5){_0x32ddf5=_0x32ddf5||0xc8;return function(_0x5bd0e5){if(_0x5bd0e5){return _0x4456bb[_0xd7c7('0x14')](_0x32ddf5)[_0xd7c7('0x16')](_0x5bd0e5);}};}function respondWithFilteredResult(_0x1a9f15,_0x5494cb){return function(_0x1c7c95){if(_0x1c7c95){var _0x52d1e7=typeof _0x5494cb[_0xd7c7('0x17')]===_0xd7c7('0x18')&&typeof _0x5494cb[_0xd7c7('0x19')]===_0xd7c7('0x18');var _0x22b0ba=_0x1c7c95['count'];var _0x23ab4a=_0x52d1e7?0x0:_0x5494cb['offset'];var _0x268a17=_0x52d1e7?_0x1c7c95[_0xd7c7('0x1a')]:_0x5494cb[_0xd7c7('0x17')]+_0x5494cb[_0xd7c7('0x19')];var _0x41108b;if(_0x268a17>=_0x22b0ba){_0x268a17=_0x22b0ba;_0x41108b=0xc8;}else{_0x41108b=0xce;}_0x1a9f15['status'](_0x41108b);return _0x1a9f15[_0xd7c7('0x1b')](_0xd7c7('0x1c'),_0x23ab4a+'-'+_0x268a17+'/'+_0x22b0ba)['json'](_0x1c7c95);}return null;};}function patchUpdates(_0x50ba49){return function(_0x58eebd){try{jsonpatch[_0xd7c7('0x1d')](_0x58eebd,_0x50ba49,!![]);}catch(_0x5cf5c8){return BPromise['reject'](_0x5cf5c8);}return _0x58eebd[_0xd7c7('0x1e')]();};}function saveUpdates(_0x469ecb,_0x34d92a){return function(_0x1c3f3f){if(_0x1c3f3f){return _0x1c3f3f[_0xd7c7('0x1f')](_0x469ecb)[_0xd7c7('0x20')](function(_0x1935df){return _0x1935df;});}return null;};}function removeEntity(_0x25d785,_0x10ba0e){return function(_0x41949f){if(_0x41949f){return _0x41949f['destroy']()['then'](function(){_0x25d785['status'](0xcc)[_0xd7c7('0x15')]();});}};}function handleEntityNotFound(_0x2a432c,_0x16481f){return function(_0x371fc4){if(!_0x371fc4){_0x2a432c[_0xd7c7('0x13')](0x194);}return _0x371fc4;};}function handleError(_0x16a8c1,_0x1f44de){_0x1f44de=_0x1f44de||0x1f4;return function(_0x536ea5){logger['error'](_0x536ea5['stack']);if(_0x536ea5['name']){delete _0x536ea5[_0xd7c7('0x21')];}_0x16a8c1[_0xd7c7('0x14')](_0x1f44de)['send'](_0x536ea5);};}exports['index']=function(_0x482ae3,_0x579c98){var _0x280f97={},_0x2846d9={},_0x7f58f={'count':0x0,'rows':[]};var _0x2e002f=_['map'](db['FaxApplication'][_0xd7c7('0x22')],function(_0x3fff89){return{'name':_0x3fff89[_0xd7c7('0x23')],'type':_0x3fff89[_0xd7c7('0x24')]['key']};});_0x2846d9[_0xd7c7('0x25')]=_['map'](_0x2e002f,_0xd7c7('0x21'));_0x2846d9[_0xd7c7('0x26')]=_[_0xd7c7('0x27')](_0x482ae3[_0xd7c7('0x26')]);_0x2846d9[_0xd7c7('0x28')]=_[_0xd7c7('0x29')](_0x2846d9[_0xd7c7('0x25')],_0x2846d9[_0xd7c7('0x26')]);_0x280f97[_0xd7c7('0x2a')]=_['intersection'](_0x2846d9[_0xd7c7('0x25')],qs[_0xd7c7('0x2b')](_0x482ae3['query'][_0xd7c7('0x2b')]));_0x280f97[_0xd7c7('0x2a')]=_0x280f97[_0xd7c7('0x2a')][_0xd7c7('0x2c')]?_0x280f97['attributes']:_0x2846d9[_0xd7c7('0x25')];if(!_0x482ae3['query'][_0xd7c7('0x2d')]('nolimit')){_0x280f97[_0xd7c7('0x19')]=qs['limit'](_0x482ae3[_0xd7c7('0x26')][_0xd7c7('0x19')]);_0x280f97['offset']=qs[_0xd7c7('0x17')](_0x482ae3[_0xd7c7('0x26')][_0xd7c7('0x17')]);}_0x280f97[_0xd7c7('0x2e')]=qs[_0xd7c7('0x2f')](_0x482ae3[_0xd7c7('0x26')][_0xd7c7('0x2f')]);_0x280f97[_0xd7c7('0x30')]=qs['filters'](_['pick'](_0x482ae3[_0xd7c7('0x26')],_0x2846d9[_0xd7c7('0x28')]),_0x2e002f);if(_0x482ae3[_0xd7c7('0x26')]['filter']){_0x280f97['where']=_['merge'](_0x280f97[_0xd7c7('0x30')],{'$or':_[_0xd7c7('0x31')](_0x2e002f,function(_0x381fe6){if(_0x381fe6[_0xd7c7('0x24')]!=='VIRTUAL'){var _0x3d5b1a={};_0x3d5b1a[_0x381fe6[_0xd7c7('0x21')]]={'$like':'%'+_0x482ae3[_0xd7c7('0x26')][_0xd7c7('0x32')]+'%'};return _0x3d5b1a;}})});}_0x280f97=_[_0xd7c7('0x33')]({},_0x280f97,_0x482ae3[_0xd7c7('0x34')]);var _0x1a816b={'where':_0x280f97[_0xd7c7('0x30')]};return db[_0xd7c7('0x35')][_0xd7c7('0x1a')](_0x1a816b)['then'](function(_0x5a5a01){_0x7f58f[_0xd7c7('0x1a')]=_0x5a5a01;if(_0x482ae3[_0xd7c7('0x26')][_0xd7c7('0x36')]){_0x280f97[_0xd7c7('0x37')]=[{'all':!![]}];}return db['FaxApplication'][_0xd7c7('0x38')](_0x280f97);})[_0xd7c7('0x20')](function(_0x3e27a2){_0x7f58f[_0xd7c7('0x39')]=_0x3e27a2;return _0x7f58f;})[_0xd7c7('0x20')](respondWithFilteredResult(_0x579c98,_0x280f97))['catch'](handleError(_0x579c98,null));};exports[_0xd7c7('0x3a')]=function(_0x293a2d,_0x5abcd5){var _0x20396c={'raw':!![],'where':{'id':_0x293a2d[_0xd7c7('0x3b')]['id']}},_0x2fa5bb={};_0x2fa5bb['model']=_[_0xd7c7('0x27')](db[_0xd7c7('0x35')]['rawAttributes']);_0x2fa5bb['query']=_[_0xd7c7('0x27')](_0x293a2d[_0xd7c7('0x26')]);_0x2fa5bb[_0xd7c7('0x28')]=_[_0xd7c7('0x29')](_0x2fa5bb[_0xd7c7('0x25')],_0x2fa5bb[_0xd7c7('0x26')]);_0x20396c['attributes']=_[_0xd7c7('0x29')](_0x2fa5bb['model'],qs['fields'](_0x293a2d['query'][_0xd7c7('0x2b')]));_0x20396c['attributes']=_0x20396c['attributes']['length']?_0x20396c['attributes']:_0x2fa5bb[_0xd7c7('0x25')];if(_0x293a2d['query'][_0xd7c7('0x36')]){_0x20396c[_0xd7c7('0x37')]=[{'all':!![]}];}_0x20396c=_[_0xd7c7('0x33')]({},_0x20396c,_0x293a2d[_0xd7c7('0x34')]);return db[_0xd7c7('0x35')][_0xd7c7('0x3c')](_0x20396c)['then'](handleEntityNotFound(_0x5abcd5,null))[_0xd7c7('0x20')](respondWithResult(_0x5abcd5,null))[_0xd7c7('0x3d')](handleError(_0x5abcd5,null));};exports[_0xd7c7('0x3e')]=function(_0x2cffa5,_0x441971){return db[_0xd7c7('0x35')][_0xd7c7('0x3e')](_0x2cffa5[_0xd7c7('0x3f')],{})[_0xd7c7('0x20')](respondWithResult(_0x441971,0xc9))['catch'](handleError(_0x441971,null));};exports[_0xd7c7('0x1f')]=function(_0x1e5636,_0x957699){if(_0x1e5636[_0xd7c7('0x3f')]['id']){delete _0x1e5636[_0xd7c7('0x3f')]['id'];}return db[_0xd7c7('0x35')][_0xd7c7('0x3c')]({'where':{'id':_0x1e5636[_0xd7c7('0x3b')]['id']}})[_0xd7c7('0x20')](handleEntityNotFound(_0x957699,null))[_0xd7c7('0x20')](saveUpdates(_0x1e5636[_0xd7c7('0x3f')],null))[_0xd7c7('0x20')](respondWithResult(_0x957699,null))['catch'](handleError(_0x957699,null));};exports[_0xd7c7('0x40')]=function(_0x48ec10,_0xfcdf87){return db[_0xd7c7('0x35')][_0xd7c7('0x3c')]({'where':{'id':_0x48ec10['params']['id']}})[_0xd7c7('0x20')](handleEntityNotFound(_0xfcdf87,null))[_0xd7c7('0x20')](removeEntity(_0xfcdf87,null))[_0xd7c7('0x3d')](handleError(_0xfcdf87,null));};
\ No newline at end of file
+var _0x149f=['reject','save','then','sendStatus','name','send','map','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','FaxApplication','findAll','rows','catch','show','rawAttributes','options','find','create','body','update','params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','status','end','json','undefined','offset','count','limit','set','Content-Range'];(function(_0x5a85f1,_0x1f3676){var _0x3c7077=function(_0x3e6e11){while(--_0x3e6e11){_0x5a85f1['push'](_0x5a85f1['shift']());}};_0x3c7077(++_0x1f3676);}(_0x149f,0x1a5));var _0xf149=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0x149f[_0x50007c];return _0x5c1ec7;};'use strict';var emlformat=require(_0xf149('0x0'));var rimraf=require(_0xf149('0x1'));var zipdir=require(_0xf149('0x2'));var jsonpatch=require(_0xf149('0x3'));var rp=require(_0xf149('0x4'));var moment=require('moment');var BPromise=require(_0xf149('0x5'));var Mustache=require(_0xf149('0x6'));var util=require(_0xf149('0x7'));var path=require(_0xf149('0x8'));var sox=require(_0xf149('0x9'));var csv=require(_0xf149('0xa'));var ejs=require(_0xf149('0xb'));var fs=require('fs');var fs_extra=require(_0xf149('0xc'));var _=require(_0xf149('0xd'));var squel=require('squel');var crypto=require(_0xf149('0xe'));var jsforce=require(_0xf149('0xf'));var deskjs=require(_0xf149('0x10'));var toCsv=require(_0xf149('0xa'));var querystring=require(_0xf149('0x11'));var Papa=require(_0xf149('0x12'));var Redis=require(_0xf149('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf149('0x14'));var hardwareService=require(_0xf149('0x15'));var logger=require(_0xf149('0x16'))(_0xf149('0x17'));var utils=require('../../config/utils');var config=require(_0xf149('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xf149('0x19'))['db'];function respondWithStatusCode(_0x45a688,_0xf38848){_0xf38848=_0xf38848||0xcc;return function(_0x586d11){if(_0x586d11){return _0x45a688['sendStatus'](_0xf38848);}return _0x45a688[_0xf149('0x1a')](_0xf38848)[_0xf149('0x1b')]();};}function respondWithResult(_0x5f09ff,_0x1ebe6b){_0x1ebe6b=_0x1ebe6b||0xc8;return function(_0x4040df){if(_0x4040df){return _0x5f09ff[_0xf149('0x1a')](_0x1ebe6b)[_0xf149('0x1c')](_0x4040df);}};}function respondWithFilteredResult(_0x100779,_0x58c3e8){return function(_0x26f758){if(_0x26f758){var _0x22108c=typeof _0x58c3e8['offset']===_0xf149('0x1d')&&typeof _0x58c3e8['limit']==='undefined';var _0x22b56a=_0x26f758['count'];var _0x3fe6e8=_0x22108c?0x0:_0x58c3e8[_0xf149('0x1e')];var _0x33e6d4=_0x22108c?_0x26f758[_0xf149('0x1f')]:_0x58c3e8[_0xf149('0x1e')]+_0x58c3e8[_0xf149('0x20')];var _0x4932e3;if(_0x33e6d4>=_0x22b56a){_0x33e6d4=_0x22b56a;_0x4932e3=0xc8;}else{_0x4932e3=0xce;}_0x100779['status'](_0x4932e3);return _0x100779[_0xf149('0x21')](_0xf149('0x22'),_0x3fe6e8+'-'+_0x33e6d4+'/'+_0x22b56a)[_0xf149('0x1c')](_0x26f758);}return null;};}function patchUpdates(_0x10ff9c){return function(_0x572a11){try{jsonpatch['apply'](_0x572a11,_0x10ff9c,!![]);}catch(_0x572fbd){return BPromise[_0xf149('0x23')](_0x572fbd);}return _0x572a11[_0xf149('0x24')]();};}function saveUpdates(_0x4ec674,_0x5cc9a5){return function(_0x6eb562){if(_0x6eb562){return _0x6eb562['update'](_0x4ec674)[_0xf149('0x25')](function(_0x14bc7f){return _0x14bc7f;});}return null;};}function removeEntity(_0x5927a5,_0x324438){return function(_0x3277d4){if(_0x3277d4){return _0x3277d4['destroy']()[_0xf149('0x25')](function(){_0x5927a5[_0xf149('0x1a')](0xcc)[_0xf149('0x1b')]();});}};}function handleEntityNotFound(_0x102732,_0x29d71c){return function(_0x1e39a5){if(!_0x1e39a5){_0x102732[_0xf149('0x26')](0x194);}return _0x1e39a5;};}function handleError(_0x1c4c66,_0x5d8180){_0x5d8180=_0x5d8180||0x1f4;return function(_0x3d1cd4){logger['error'](_0x3d1cd4['stack']);if(_0x3d1cd4[_0xf149('0x27')]){delete _0x3d1cd4[_0xf149('0x27')];}_0x1c4c66[_0xf149('0x1a')](_0x5d8180)[_0xf149('0x28')](_0x3d1cd4);};}exports['index']=function(_0x4e713e,_0x48e820){var _0x30ea69={},_0x393e7d={},_0x1898c2={'count':0x0,'rows':[]};var _0x1d6132=_[_0xf149('0x29')](db['FaxApplication']['rawAttributes'],function(_0x54dfac){return{'name':_0x54dfac['fieldName'],'type':_0x54dfac[_0xf149('0x2a')][_0xf149('0x2b')]};});_0x393e7d['model']=_[_0xf149('0x29')](_0x1d6132,_0xf149('0x27'));_0x393e7d[_0xf149('0x2c')]=_[_0xf149('0x2d')](_0x4e713e['query']);_0x393e7d[_0xf149('0x2e')]=_[_0xf149('0x2f')](_0x393e7d[_0xf149('0x30')],_0x393e7d[_0xf149('0x2c')]);_0x30ea69['attributes']=_[_0xf149('0x2f')](_0x393e7d[_0xf149('0x30')],qs[_0xf149('0x31')](_0x4e713e[_0xf149('0x2c')]['fields']));_0x30ea69[_0xf149('0x32')]=_0x30ea69[_0xf149('0x32')][_0xf149('0x33')]?_0x30ea69[_0xf149('0x32')]:_0x393e7d[_0xf149('0x30')];if(!_0x4e713e[_0xf149('0x2c')][_0xf149('0x34')](_0xf149('0x35'))){_0x30ea69[_0xf149('0x20')]=qs[_0xf149('0x20')](_0x4e713e['query'][_0xf149('0x20')]);_0x30ea69[_0xf149('0x1e')]=qs['offset'](_0x4e713e[_0xf149('0x2c')]['offset']);}_0x30ea69[_0xf149('0x36')]=qs[_0xf149('0x37')](_0x4e713e[_0xf149('0x2c')][_0xf149('0x37')]);_0x30ea69[_0xf149('0x38')]=qs[_0xf149('0x2e')](_[_0xf149('0x39')](_0x4e713e[_0xf149('0x2c')],_0x393e7d[_0xf149('0x2e')]),_0x1d6132);if(_0x4e713e[_0xf149('0x2c')][_0xf149('0x3a')]){_0x30ea69[_0xf149('0x38')]=_['merge'](_0x30ea69[_0xf149('0x38')],{'$or':_['map'](_0x1d6132,function(_0x15f7bb){if(_0x15f7bb[_0xf149('0x2a')]!==_0xf149('0x3b')){var _0xf68acc={};_0xf68acc[_0x15f7bb[_0xf149('0x27')]]={'$like':'%'+_0x4e713e['query']['filter']+'%'};return _0xf68acc;}})});}_0x30ea69=_[_0xf149('0x3c')]({},_0x30ea69,_0x4e713e['options']);var _0x42f27e={'where':_0x30ea69[_0xf149('0x38')]};return db['FaxApplication'][_0xf149('0x1f')](_0x42f27e)[_0xf149('0x25')](function(_0x11b2ab){_0x1898c2[_0xf149('0x1f')]=_0x11b2ab;if(_0x4e713e['query'][_0xf149('0x3d')]){_0x30ea69[_0xf149('0x3e')]=[{'all':!![]}];}return db[_0xf149('0x3f')][_0xf149('0x40')](_0x30ea69);})[_0xf149('0x25')](function(_0x2b74b6){_0x1898c2[_0xf149('0x41')]=_0x2b74b6;return _0x1898c2;})[_0xf149('0x25')](respondWithFilteredResult(_0x48e820,_0x30ea69))[_0xf149('0x42')](handleError(_0x48e820,null));};exports[_0xf149('0x43')]=function(_0x27bd98,_0xea323a){var _0x1292af={'raw':!![],'where':{'id':_0x27bd98['params']['id']}},_0x20b387={};_0x20b387['model']=_[_0xf149('0x2d')](db[_0xf149('0x3f')][_0xf149('0x44')]);_0x20b387[_0xf149('0x2c')]=_['keys'](_0x27bd98['query']);_0x20b387['filters']=_[_0xf149('0x2f')](_0x20b387[_0xf149('0x30')],_0x20b387[_0xf149('0x2c')]);_0x1292af[_0xf149('0x32')]=_[_0xf149('0x2f')](_0x20b387[_0xf149('0x30')],qs[_0xf149('0x31')](_0x27bd98[_0xf149('0x2c')][_0xf149('0x31')]));_0x1292af[_0xf149('0x32')]=_0x1292af[_0xf149('0x32')][_0xf149('0x33')]?_0x1292af['attributes']:_0x20b387['model'];if(_0x27bd98[_0xf149('0x2c')][_0xf149('0x3d')]){_0x1292af['include']=[{'all':!![]}];}_0x1292af=_[_0xf149('0x3c')]({},_0x1292af,_0x27bd98[_0xf149('0x45')]);return db[_0xf149('0x3f')][_0xf149('0x46')](_0x1292af)[_0xf149('0x25')](handleEntityNotFound(_0xea323a,null))['then'](respondWithResult(_0xea323a,null))[_0xf149('0x42')](handleError(_0xea323a,null));};exports[_0xf149('0x47')]=function(_0x4a3829,_0x54d119){return db[_0xf149('0x3f')][_0xf149('0x47')](_0x4a3829[_0xf149('0x48')],{})[_0xf149('0x25')](respondWithResult(_0x54d119,0xc9))[_0xf149('0x42')](handleError(_0x54d119,null));};exports[_0xf149('0x49')]=function(_0x2962e8,_0xc50e41){if(_0x2962e8['body']['id']){delete _0x2962e8[_0xf149('0x48')]['id'];}return db[_0xf149('0x3f')][_0xf149('0x46')]({'where':{'id':_0x2962e8[_0xf149('0x4a')]['id']}})[_0xf149('0x25')](handleEntityNotFound(_0xc50e41,null))['then'](saveUpdates(_0x2962e8[_0xf149('0x48')],null))[_0xf149('0x25')](respondWithResult(_0xc50e41,null))[_0xf149('0x42')](handleError(_0xc50e41,null));};exports[_0xf149('0x4b')]=function(_0x52a68f,_0x636166){return db[_0xf149('0x3f')]['find']({'where':{'id':_0x52a68f[_0xf149('0x4a')]['id']}})['then'](handleEntityNotFound(_0x636166,null))[_0xf149('0x25')](removeEntity(_0x636166,null))[_0xf149('0x42')](handleError(_0x636166,null));};
\ No newline at end of file
index 7d9706b..88f250e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd06d=['./faxApplication.attributes','exports','lodash','util','../../config/logger','api','moment','bluebird','../../config/environment'];(function(_0x4c0ac8,_0x1dfe73){var _0x8fd00=function(_0x3b34c3){while(--_0x3b34c3){_0x4c0ac8['push'](_0x4c0ac8['shift']());}};_0x8fd00(++_0x1dfe73);}(_0xd06d,0xbf));var _0xdd06=function(_0x59c5e8,_0x482de4){_0x59c5e8=_0x59c5e8-0x0;var _0x220a95=_0xd06d[_0x59c5e8];return _0x220a95;};'use strict';var _=require(_0xdd06('0x0'));var util=require(_0xdd06('0x1'));var logger=require(_0xdd06('0x2'))(_0xdd06('0x3'));var moment=require(_0xdd06('0x4'));var BPromise=require(_0xdd06('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xdd06('0x6'));var attributes=require(_0xdd06('0x7'));module[_0xdd06('0x8')]=function(_0x1b6129,_0x281323){return _0x1b6129['define']('FaxApplication',attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xc3f2=['rimraf','../../config/environment','./faxApplication.attributes','exports','FaxApplication','fax_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','bluebird','request-promise','path'];(function(_0x3ce6c1,_0x3ab7a7){var _0xecc97d=function(_0x4d06d7){while(--_0x4d06d7){_0x3ce6c1['push'](_0x3ce6c1['shift']());}};_0xecc97d(++_0x3ab7a7);}(_0xc3f2,0x14a));var _0x2c3f=function(_0xfea1be,_0x19e3b3){_0xfea1be=_0xfea1be-0x0;var _0x2199d4=_0xc3f2[_0xfea1be];return _0x2199d4;};'use strict';var _=require(_0x2c3f('0x0'));var util=require(_0x2c3f('0x1'));var logger=require('../../config/logger')(_0x2c3f('0x2'));var moment=require('moment');var BPromise=require(_0x2c3f('0x3'));var rp=require(_0x2c3f('0x4'));var fs=require('fs');var path=require(_0x2c3f('0x5'));var rimraf=require(_0x2c3f('0x6'));var config=require(_0x2c3f('0x7'));var attributes=require(_0x2c3f('0x8'));module[_0x2c3f('0x9')]=function(_0x8e0f71,_0x4ec40e){return _0x8e0f71['define'](_0x2c3f('0xa'),attributes,{'tableName':_0x2c3f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2c3f('0xc'),'collate':_0x2c3f('0xd')});};
\ No newline at end of file
index 34bc20e..3c27815 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x655d=['options','where','attributes','limit','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','error','code','FaxApplication,\x20%s,\x20%s','message','result','catch','UpdateFaxApplication','FaxApplication','update'];(function(_0x4599b6,_0x40c254){var _0x2e014c=function(_0x3c4d90){while(--_0x3c4d90){_0x4599b6['push'](_0x4599b6['shift']());}};_0x2e014c(++_0x40c254);}(_0x655d,0x13b));var _0xd655=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x655d[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0xd655('0x0'));var util=require(_0xd655('0x1'));var moment=require(_0xd655('0x2'));var BPromise=require(_0xd655('0x3'));var rs=require(_0xd655('0x4'));var fs=require('fs');var Redis=require(_0xd655('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xd655('0x6'));var logger=require(_0xd655('0x7'))('rpc');var config=require(_0xd655('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd655('0x9')][_0xd655('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x13b981,_0x346b7e,_0x4541ad){return new BPromise(function(_0x4e9c8b,_0x268bdc){return client[_0xd655('0xb')](_0x13b981,_0x4541ad)[_0xd655('0xc')](function(_0x285995){logger[_0xd655('0xd')]('FaxApplication,\x20%s,\x20%s',_0x346b7e,_0xd655('0xe'));logger[_0xd655('0xf')](_0xd655('0x10'),_0x346b7e,_0xd655('0xe'),JSON['stringify'](_0x285995));if(_0x285995[_0xd655('0x11')]){if(_0x285995[_0xd655('0x11')][_0xd655('0x12')]===0x1f4){logger[_0xd655('0x11')](_0xd655('0x13'),_0x346b7e,_0x285995[_0xd655('0x11')]['message']);return _0x268bdc(_0x285995['error']['message']);}logger[_0xd655('0x11')](_0xd655('0x13'),_0x346b7e,_0x285995['error'][_0xd655('0x14')]);return _0x4e9c8b(_0x285995['error'][_0xd655('0x14')]);}else{logger[_0xd655('0xd')](_0xd655('0x13'),_0x346b7e,_0xd655('0xe'));_0x4e9c8b(_0x285995[_0xd655('0x15')][_0xd655('0x14')]);}})[_0xd655('0x16')](function(_0x5c6f30){logger[_0xd655('0x11')](_0xd655('0x13'),_0x346b7e,_0x5c6f30);_0x268bdc(_0x5c6f30);});});}exports[_0xd655('0x17')]=function(_0x432e6e){var _0x278fd5=this;return new Promise(function(_0x337e7f,_0x5ef173){return db[_0xd655('0x18')][_0xd655('0x19')](_0x432e6e['body'],{'raw':_0x432e6e[_0xd655('0x1a')]?_0x432e6e[_0xd655('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x432e6e[_0xd655('0x1a')]?_0x432e6e[_0xd655('0x1a')][_0xd655('0x1b')]||null:null,'attributes':_0x432e6e['options']?_0x432e6e[_0xd655('0x1a')][_0xd655('0x1c')]||null:null,'limit':_0x432e6e[_0xd655('0x1a')]?_0x432e6e[_0xd655('0x1a')][_0xd655('0x1d')]||null:null})[_0xd655('0xc')](function(_0x55d172){logger[_0xd655('0xd')]('UpdateFaxApplication',_0x432e6e);logger[_0xd655('0xf')](_0xd655('0x17'),_0x432e6e,JSON[_0xd655('0x1e')](_0x55d172));_0x337e7f(_0x55d172);})[_0xd655('0x16')](function(_0x615443){logger['error'](_0xd655('0x17'),_0x615443['message'],_0x432e6e);_0x5ef173(_0x278fd5[_0xd655('0x11')](0x1f4,_0x615443[_0xd655('0x14')]));});});};
\ No newline at end of file
+var _0x4ce1=['stringify','error','code','message','result','catch','UpdateFaxApplication','FaxApplication','update','body','options','raw','where','attributes','limit','then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x124616,_0x1b86ab){var _0x27097d=function(_0x599fc1){while(--_0x599fc1){_0x124616['push'](_0x124616['shift']());}};_0x27097d(++_0x1b86ab);}(_0x4ce1,0xba));var _0x14ce=function(_0x322614,_0x323f38){_0x322614=_0x322614-0x0;var _0x916d65=_0x4ce1[_0x322614];return _0x916d65;};'use strict';var _=require(_0x14ce('0x0'));var util=require(_0x14ce('0x1'));var moment=require(_0x14ce('0x2'));var BPromise=require(_0x14ce('0x3'));var rs=require(_0x14ce('0x4'));var fs=require('fs');var Redis=require(_0x14ce('0x5'));var db=require(_0x14ce('0x6'))['db'];var utils=require(_0x14ce('0x7'));var logger=require(_0x14ce('0x8'))(_0x14ce('0x9'));var config=require('../../config/environment');var jayson=require(_0x14ce('0xa'));var client=jayson[_0x14ce('0xb')][_0x14ce('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x539441,_0x257b4c,_0x2f8b11){return new BPromise(function(_0x14f41b,_0x336401){return client[_0x14ce('0xd')](_0x539441,_0x2f8b11)['then'](function(_0x2ae2dc){logger[_0x14ce('0xe')](_0x14ce('0xf'),_0x257b4c,_0x14ce('0x10'));logger[_0x14ce('0x11')]('FaxApplication,\x20%s,\x20%s,\x20%s',_0x257b4c,'request\x20sent',JSON[_0x14ce('0x12')](_0x2ae2dc));if(_0x2ae2dc[_0x14ce('0x13')]){if(_0x2ae2dc[_0x14ce('0x13')][_0x14ce('0x14')]===0x1f4){logger['error'](_0x14ce('0xf'),_0x257b4c,_0x2ae2dc[_0x14ce('0x13')][_0x14ce('0x15')]);return _0x336401(_0x2ae2dc[_0x14ce('0x13')][_0x14ce('0x15')]);}logger[_0x14ce('0x13')](_0x14ce('0xf'),_0x257b4c,_0x2ae2dc['error']['message']);return _0x14f41b(_0x2ae2dc[_0x14ce('0x13')][_0x14ce('0x15')]);}else{logger[_0x14ce('0xe')](_0x14ce('0xf'),_0x257b4c,_0x14ce('0x10'));_0x14f41b(_0x2ae2dc[_0x14ce('0x16')]['message']);}})[_0x14ce('0x17')](function(_0x405a01){logger[_0x14ce('0x13')](_0x14ce('0xf'),_0x257b4c,_0x405a01);_0x336401(_0x405a01);});});}exports[_0x14ce('0x18')]=function(_0x1224fa){var _0x15bc50=this;return new Promise(function(_0xfde016,_0xb5bcb1){return db[_0x14ce('0x19')][_0x14ce('0x1a')](_0x1224fa[_0x14ce('0x1b')],{'raw':_0x1224fa[_0x14ce('0x1c')]?_0x1224fa[_0x14ce('0x1c')][_0x14ce('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1224fa['options']?_0x1224fa['options'][_0x14ce('0x1e')]||null:null,'attributes':_0x1224fa[_0x14ce('0x1c')]?_0x1224fa[_0x14ce('0x1c')][_0x14ce('0x1f')]||null:null,'limit':_0x1224fa[_0x14ce('0x1c')]?_0x1224fa[_0x14ce('0x1c')][_0x14ce('0x20')]||null:null})[_0x14ce('0x21')](function(_0x23999e){logger[_0x14ce('0xe')](_0x14ce('0x18'),_0x1224fa);logger[_0x14ce('0x11')]('UpdateFaxApplication',_0x1224fa,JSON[_0x14ce('0x12')](_0x23999e));_0xfde016(_0x23999e);})[_0x14ce('0x17')](function(_0x4e2027){logger[_0x14ce('0x13')]('UpdateFaxApplication',_0x4e2027[_0x14ce('0x15')],_0x1224fa);_0xb5bcb1(_0x15bc50['error'](0x1f4,_0x4e2027[_0x14ce('0x15')]));});});};
\ No newline at end of file
index f4d699a..58fadd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe511=['/:id','isAuthenticated','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','index','show','post','put'];(function(_0x156503,_0x535608){var _0x31bc30=function(_0x21643a){while(--_0x21643a){_0x156503['push'](_0x156503['shift']());}};_0x31bc30(++_0x535608);}(_0xe511,0x16f));var _0x1e51=function(_0x27694f,_0x150986){_0x27694f=_0x27694f-0x0;var _0xce032d=_0xe511[_0x27694f];return _0xce032d;};'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')]('/:id',auth['isAuthenticated'](),controller[_0x1e51('0xa')]);router[_0x1e51('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x1e51('0xc')](_0x1e51('0xd'),auth[_0x1e51('0xe')](),controller[_0x1e51('0xf')]);router[_0x1e51('0x10')](_0x1e51('0xd'),auth['isAuthenticated'](),controller[_0x1e51('0x11')]);module[_0x1e51('0x12')]=router;
\ No newline at end of file
+var _0x9c00=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util'];(function(_0x4bb688,_0x407d64){var _0x4bd776=function(_0x47a214){while(--_0x47a214){_0x4bb688['push'](_0x4bb688['shift']());}};_0x4bd776(++_0x407d64);}(_0x9c00,0x1a0));var _0x09c0=function(_0x5c280d,_0xd67fa0){_0x5c280d=_0x5c280d-0x0;var _0x460137=_0x9c00[_0x5c280d];return _0x460137;};'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('0xc')]('/',auth['isAuthenticated'](),controller[_0x09c0('0xd')]);router[_0x09c0('0xe')](_0x09c0('0x9'),auth[_0x09c0('0xa')](),controller[_0x09c0('0xf')]);router[_0x09c0('0x10')](_0x09c0('0x9'),auth[_0x09c0('0xa')](),controller[_0x09c0('0x11')]);module[_0x09c0('0x12')]=router;
\ No newline at end of file
index d40a6b2..e22401f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa323=['out','sequelize','exports','BOOLEAN','DATE','STRING','ENUM'];(function(_0x12005c,_0x32a7d5){var _0x164528=function(_0x22257f){while(--_0x22257f){_0x12005c['push'](_0x12005c['shift']());}};_0x164528(++_0x32a7d5);}(_0xa323,0x1cf));var _0x3a32=function(_0x406b98,_0x3dea6d){_0x406b98=_0x406b98-0x0;var _0x10545f=_0xa323[_0x406b98];return _0x10545f;};'use strict';var Sequelize=require(_0x3a32('0x0'));module[_0x3a32('0x1')]={'closed':{'type':Sequelize[_0x3a32('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x3a32('0x3')]},'disposition':{'type':Sequelize[_0x3a32('0x4')]},'secondDisposition':{'type':Sequelize[_0x3a32('0x4')]},'thirdDisposition':{'type':Sequelize[_0x3a32('0x4')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x3a32('0x3')]},'fax':{'type':Sequelize[_0x3a32('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x3a32('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x3a32('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x3a32('0x6')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0xbcf1=['ENUM','sequelize','BOOLEAN','DATE','STRING','out'];(function(_0x308eb3,_0x4bc21b){var _0x2fbf0a=function(_0xd77619){while(--_0xd77619){_0x308eb3['push'](_0x308eb3['shift']());}};_0x2fbf0a(++_0x4bc21b);}(_0xbcf1,0x97));var _0x1bcf=function(_0x289a67,_0x1e5a3c){_0x289a67=_0x289a67-0x0;var _0x572b49=_0xbcf1[_0x289a67];return _0x572b49;};'use strict';var Sequelize=require(_0x1bcf('0x0'));module['exports']={'closed':{'type':Sequelize[_0x1bcf('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x1bcf('0x2')]},'disposition':{'type':Sequelize[_0x1bcf('0x3')]},'secondDisposition':{'type':Sequelize[_0x1bcf('0x3')]},'thirdDisposition':{'type':Sequelize[_0x1bcf('0x3')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x1bcf('0x2')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x1bcf('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x1bcf('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x1bcf('0x5')]('in',_0x1bcf('0x4')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 74ed1cf..4714186 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa659=['server','files','tmp','attachments','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','basename','existsSync','pipe','createWriteStream','err','eml-format','rimraf','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','status','end','undefined','limit','count','offset','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','error','stack','Users','map','fullname','TagIds','split','forEach','Tags','push','talking','answered','unmanaged','closed','waiting','UserId','total','index','FaxInteraction','rawAttributes','type','keys','filters','model','attributes','query','fields','hasOwnProperty','order','sort','where','pick','select','field','name','color','from','tools_tags','u.id','ui.FaxInteractionId','user_has_fax_interactions','left_join','users','u.id\x20=\x20ui.UserId','fax_interactions','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','fax_interaction_has_tags','expr','parseSearch','search','sqlOperator','conditions','length','find','unreadMessages','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','value','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','buildExpression','start','some','compact','i.FaxAccountId\x20IN\x20?','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','DESC','isEmpty','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','FaxAccountId','sequelize','toString','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','o.internal','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','all','rows','catch','show','intersection','include','merge','options','create','body','params','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','nolimit','$gte','format','includeAll','findAll','addTags','setTags','spread','emit','faxInteractionTags:save','removeTags','download','unix','join','root'];(function(_0x332f68,_0x4d12c7){var _0x3c1038=function(_0x17b1b6){while(--_0x17b1b6){_0x332f68['push'](_0x332f68['shift']());}};_0x3c1038(++_0x4d12c7);}(_0xa659,0xf4));var _0x9a65=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa659[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x9a65('0x0'));var rimraf=require(_0x9a65('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x9a65('0x2'));var moment=require(_0x9a65('0x3'));var BPromise=require(_0x9a65('0x4'));var Mustache=require('mustache');var util=require(_0x9a65('0x5'));var path=require(_0x9a65('0x6'));var sox=require(_0x9a65('0x7'));var csv=require(_0x9a65('0x8'));var ejs=require(_0x9a65('0x9'));var fs=require('fs');var fs_extra=require(_0x9a65('0xa'));var _=require(_0x9a65('0xb'));var squel=require(_0x9a65('0xc'));var crypto=require('crypto');var jsforce=require(_0x9a65('0xd'));var deskjs=require(_0x9a65('0xe'));var toCsv=require(_0x9a65('0x8'));var querystring=require('querystring');var Papa=require(_0x9a65('0xf'));var Redis=require(_0x9a65('0x10'));var authService=require(_0x9a65('0x11'));var qs=require(_0x9a65('0x12'));var as=require(_0x9a65('0x13'));var hardwareService=require(_0x9a65('0x14'));var logger=require('../../config/logger')(_0x9a65('0x15'));var utils=require(_0x9a65('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x9a65('0x17')]=_[_0x9a65('0x18')](config[_0x9a65('0x17')],{'host':_0x9a65('0x19'),'port':0x18eb});var socket=require(_0x9a65('0x1a'))(new Redis(config['redis']));require(_0x9a65('0x1b'))[_0x9a65('0x1c')](socket);function respondWithStatusCode(_0x4fd051,_0x21870f){_0x21870f=_0x21870f||0xcc;return function(_0x8df32a){if(_0x8df32a){return _0x4fd051['sendStatus'](_0x21870f);}return _0x4fd051[_0x9a65('0x1d')](_0x21870f)[_0x9a65('0x1e')]();};}function respondWithResult(_0x1c71a3,_0x40f623){_0x40f623=_0x40f623||0xc8;return function(_0x166505){if(_0x166505){return _0x1c71a3['status'](_0x40f623)['json'](_0x166505);}};}function respondWithFilteredResult(_0x31fd4d,_0x3e3704){return function(_0x402007){if(_0x402007){var _0x5480e7=typeof _0x3e3704['offset']===_0x9a65('0x1f')&&typeof _0x3e3704[_0x9a65('0x20')]===_0x9a65('0x1f');var _0x51bc71=_0x402007[_0x9a65('0x21')];var _0x4596b4=_0x5480e7?0x0:_0x3e3704[_0x9a65('0x22')];var _0x2fbaf5=_0x5480e7?_0x402007[_0x9a65('0x21')]:_0x3e3704[_0x9a65('0x22')]+_0x3e3704[_0x9a65('0x20')];var _0x4e8baf;if(_0x2fbaf5>=_0x51bc71){_0x2fbaf5=_0x51bc71;_0x4e8baf=0xc8;}else{_0x4e8baf=0xce;}_0x31fd4d[_0x9a65('0x1d')](_0x4e8baf);return _0x31fd4d['set'](_0x9a65('0x23'),_0x4596b4+'-'+_0x2fbaf5+'/'+_0x51bc71)[_0x9a65('0x24')](_0x402007);}return null;};}function patchUpdates(_0x1c78dd){return function(_0x300015){try{jsonpatch[_0x9a65('0x25')](_0x300015,_0x1c78dd,!![]);}catch(_0x1d5c19){return BPromise[_0x9a65('0x26')](_0x1d5c19);}return _0x300015[_0x9a65('0x27')]();};}function saveUpdates(_0xcac053,_0x5065fb){return function(_0x202534){if(_0x202534){return _0x202534[_0x9a65('0x28')](_0xcac053)[_0x9a65('0x29')](function(_0x2c1f47){return _0x2c1f47;});}return null;};}function removeEntity(_0x4fc689,_0x3431dd){return function(_0x46f749){if(_0x46f749){return _0x46f749[_0x9a65('0x2a')]()[_0x9a65('0x29')](function(){_0x4fc689[_0x9a65('0x1d')](0xcc)[_0x9a65('0x1e')]();});}};}function handleEntityNotFound(_0x3ed513,_0x2cba93){return function(_0x5c633d){if(!_0x5c633d){_0x3ed513[_0x9a65('0x2b')](0x194);}return _0x5c633d;};}function handleError(_0x1f0fa0,_0x2e3a3f){_0x2e3a3f=_0x2e3a3f||0x1f4;return function(_0x84f949){logger[_0x9a65('0x2c')](_0x84f949[_0x9a65('0x2d')]);if(_0x84f949['name']){delete _0x84f949['name'];}_0x1f0fa0[_0x9a65('0x1d')](_0x2e3a3f)['send'](_0x84f949);};}function getInteractionUsers(_0xd1c847,_0x2aa7df){return new BPromise(function(_0x3d2008,_0x135eba){try{if(_0x2aa7df[_0xd1c847['id']]){_0xd1c847[_0x9a65('0x2e')]=_[_0x9a65('0x2f')](_0x2aa7df[_0xd1c847['id']],function(_0x230d57){return{'id':_0x230d57['id'],'fullname':_0x230d57[_0x9a65('0x30')]};});}}catch(_0x429a77){_0x135eba(_0x429a77);}_0x3d2008(_0xd1c847);});}function getInteractionTags(_0x2be008,_0xaa0634){return new BPromise(function(_0x28b91e,_0x1bbaa7){try{if(_0x2be008['TagIds']){_0x2be008['Tags']=[];_0x2be008[_0x9a65('0x31')][_0x9a65('0x32')](',')[_0x9a65('0x33')](function(_0x26825c){_0x2be008[_0x9a65('0x34')][_0x9a65('0x35')](_0xaa0634[_0x26825c]);});}delete _0x2be008[_0x9a65('0x31')];}catch(_0x1a220e){_0x1bbaa7(_0x1a220e);}_0x28b91e(_0x2be008);});}function updateFaxInteraction(_0x45b046,_0x34690b,_0x4d33d9){return new BPromise(function(_0x56d266,_0x4f1060){return getInteractionUsers(_0x45b046,_0x4d33d9)[_0x9a65('0x29')](function(_0x48e773){return getInteractionTags(_0x48e773,_0x34690b);})[_0x9a65('0x29')](function(_0x1c6012){return getStateInteraction(_0x1c6012);})['then'](function(_0x131880){_0x56d266(_0x131880);})['catch'](function(_0x376cef){_0x4f1060(_0x376cef);});});}function getStateInteraction(_0x4c0aed){return new BPromise(function(_0x105329){_0x4c0aed['waiting']=0x0;_0x4c0aed[_0x9a65('0x36')]=0x0;_0x4c0aed[_0x9a65('0x37')]=0x0;_0x4c0aed[_0x9a65('0x38')]=0x0;_0x4c0aed['total']=0x0;if(!_0x4c0aed[_0x9a65('0x39')]&&!_0x4c0aed['UserId']){_0x4c0aed[_0x9a65('0x3a')]+=0x1;}if(!_0x4c0aed['closed']&&_0x4c0aed[_0x9a65('0x3b')]){_0x4c0aed[_0x9a65('0x36')]+=0x1;if(_0x4c0aed[_0x9a65('0x3a')]){_0x4c0aed[_0x9a65('0x3a')]-=0x1;}}if(_0x4c0aed[_0x9a65('0x39')]&&_0x4c0aed[_0x9a65('0x3b')]){_0x4c0aed[_0x9a65('0x37')]+=0x1;if(_0x4c0aed[_0x9a65('0x36')]){_0x4c0aed[_0x9a65('0x36')]-=0x1;}}if(_0x4c0aed[_0x9a65('0x39')]&&!_0x4c0aed[_0x9a65('0x3b')]){_0x4c0aed[_0x9a65('0x38')]+=0x1;if(_0x4c0aed[_0x9a65('0x3a')]){_0x4c0aed[_0x9a65('0x3a')]-=0x1;}}_0x4c0aed[_0x9a65('0x3c')]+=0x1;_0x105329(_0x4c0aed);});}exports[_0x9a65('0x3d')]=function(_0x4e609f,_0x461dcd){var _0x2d2d59={},_0x4642a6={},_0x110cae={'count':0x0,'rows':[]};var _0x620412=_[_0x9a65('0x2f')](db[_0x9a65('0x3e')][_0x9a65('0x3f')],function(_0x312826){return{'name':_0x312826['fieldName'],'type':_0x312826[_0x9a65('0x40')]['key']};});_0x4642a6['model']=_['map'](_0x620412,'name');_0x4642a6['query']=_[_0x9a65('0x41')](_0x4e609f['query']);_0x4642a6[_0x9a65('0x42')]=_['intersection'](_0x4642a6[_0x9a65('0x43')],_0x4642a6['query']);_0x2d2d59[_0x9a65('0x44')]=_['intersection'](_0x4642a6[_0x9a65('0x43')],qs['fields'](_0x4e609f[_0x9a65('0x45')][_0x9a65('0x46')]));_0x2d2d59[_0x9a65('0x44')]=_0x2d2d59['attributes']['length']?_0x2d2d59[_0x9a65('0x44')]:_0x4642a6[_0x9a65('0x43')];if(!_0x4e609f['query'][_0x9a65('0x47')]('nolimit')){_0x2d2d59[_0x9a65('0x20')]=qs['limit'](_0x4e609f[_0x9a65('0x45')][_0x9a65('0x20')]);_0x2d2d59[_0x9a65('0x22')]=qs[_0x9a65('0x22')](_0x4e609f[_0x9a65('0x45')]['offset']);}_0x2d2d59[_0x9a65('0x48')]=qs[_0x9a65('0x49')](_0x4e609f['query']['sort']);_0x2d2d59[_0x9a65('0x4a')]=qs[_0x9a65('0x42')](_[_0x9a65('0x4b')](_0x4e609f['query'],_0x4642a6[_0x9a65('0x42')]),_0x620412);var _0x241b42=[];var _0x352590=squel[_0x9a65('0x4c')]()[_0x9a65('0x4d')]('id')[_0x9a65('0x4d')](_0x9a65('0x4e'))[_0x9a65('0x4d')](_0x9a65('0x4f'))[_0x9a65('0x50')](_0x9a65('0x51'));var _0x4f0839=squel['select']()['field'](_0x9a65('0x52'))[_0x9a65('0x4d')]('u.fullname')[_0x9a65('0x4d')](_0x9a65('0x53'))['from'](_0x9a65('0x54'),'ui')[_0x9a65('0x55')](_0x9a65('0x56'),'u',_0x9a65('0x57'));var _0xddd2b3=squel[_0x9a65('0x4c')]()[_0x9a65('0x50')](_0x9a65('0x58'),'i')[_0x9a65('0x55')](_0x9a65('0x59'),'c',_0x9a65('0x5a'))[_0x9a65('0x55')]('users','o',_0x9a65('0x5b'))[_0x9a65('0x55')](_0x9a65('0x5c'),'a','a.id\x20=\x20i.FaxAccountId')['left_join'](_0x9a65('0x5d'),'me',_0x9a65('0x5e'))[_0x9a65('0x55')](_0x9a65('0x5f'),'it','it.FaxInteractionId\x20=\x20i.id')[_0x9a65('0x55')](_0x9a65('0x51'),'t','t.id\x20=\x20it.TagId');var _0x531fd2=squel[_0x9a65('0x60')]();var _0x9d1b19=[];var _0x406f80=squel[_0x9a65('0x60')]();var _0x2bd1a6;if(_0x4e609f[_0x9a65('0x45')]['search']){_0x2bd1a6=as[_0x9a65('0x61')](_0x4e609f[_0x9a65('0x45')][_0x9a65('0x62')]);var _0x416add=_0x2bd1a6[_0x9a65('0x63')];for(var _0x1b0f8d=0x0;_0x1b0f8d<_0x2bd1a6[_0x9a65('0x64')][_0x9a65('0x65')];_0x1b0f8d++){var _0x273d94=_0x2bd1a6[_0x9a65('0x64')][_0x1b0f8d];var _0x35c0bb='i';var _0x630a56=_[_0x9a65('0x66')](_0x620412,[_0x9a65('0x4e'),_0x273d94['field']]);if(!_0x630a56){switch(_0x273d94['field']){case _0x9a65('0x67'):if(_0x273d94['value']==0x1){_0xddd2b3[_0x9a65('0x68')]('`'+_0x273d94[_0x9a65('0x4d')]+_0x9a65('0x69'));}else{_0xddd2b3[_0x9a65('0x68')]('`'+_0x273d94[_0x9a65('0x4d')]+_0x9a65('0x6a'));}break;case _0x9a65('0x6b'):if(_0x273d94[_0x9a65('0x6c')]===_0x9a65('0x6d')){if(_0x273d94['value']['split']('\x20')[_0x9a65('0x65')]>0x1){_0x531fd2[_0x416add](_0x9a65('0x6e'),qs[_0x9a65('0x6f')](_0x273d94['value']),null);}else{var _0x182daa='%'+_0x273d94[_0x9a65('0x70')]+'%';_0x531fd2[_0x416add](_0x9a65('0x71'),_0x182daa,_0x182daa,_0x182daa);}}else{_0x630a56=_[_0x9a65('0x66')](_0x620412,[_0x9a65('0x4e'),_0x9a65('0x72')]);_0x273d94[_0x9a65('0x4d')]=_0x9a65('0x72');_0x3d957a=as['buildExpression'](_0x35c0bb,_0x630a56['type'],_0x273d94);_0x531fd2[_0x416add](_0x3d957a[_0x9a65('0x73')],_0x3d957a['value']['start'],_0x3d957a[_0x9a65('0x70')][_0x9a65('0x1e')]);}break;case _0x9a65('0x74'):var _0x156a15=_0x273d94[_0x9a65('0x70')][_0x9a65('0x32')](',')[_0x9a65('0x2f')](function(_0x50ce7b){return Number(_0x50ce7b);});_0x156a15[_0x9a65('0x33')](function(_0x14604b){_0x406f80['or'](_0x9a65('0x75'),'%,'+_0x14604b+',%');});_0x9d1b19=_[_0x9a65('0x76')](_0x9d1b19,_0x156a15);break;case _0x9a65('0x77'):if(_0x273d94[_0x9a65('0x6c')]===_0x9a65('0x6d')){_0x531fd2[_0x416add]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x273d94[_0x9a65('0x70')]+'%',null);}else{_0x630a56=_['find'](_0x620412,[_0x9a65('0x4e'),_0x9a65('0x3b')]);_0x273d94[_0x9a65('0x4d')]=_0x9a65('0x3b');_0x3d957a=as[_0x9a65('0x78')](_0x35c0bb,_0x630a56[_0x9a65('0x40')],_0x273d94);_0x531fd2[_0x416add](_0x3d957a[_0x9a65('0x73')],_0x3d957a[_0x9a65('0x70')]['start'],_0x3d957a[_0x9a65('0x70')][_0x9a65('0x1e')]);}break;case'body':_0x3d957a=as['buildExpression']('me',null,_0x273d94);_0x531fd2[_0x416add](_0x3d957a[_0x9a65('0x73')],_0x3d957a[_0x9a65('0x70')]['start'],_0x3d957a[_0x9a65('0x70')]['end']);break;}}else{var _0x3d957a=as[_0x9a65('0x78')](_0x35c0bb,_0x630a56[_0x9a65('0x40')],_0x273d94);_0x531fd2[_0x416add](_0x3d957a['text'],_0x3d957a[_0x9a65('0x70')][_0x9a65('0x79')],_0x3d957a[_0x9a65('0x70')][_0x9a65('0x1e')]);}}}else{var _0x382768=_(_0x4e609f[_0x9a65('0x45')])[_0x9a65('0x41')]()[_0x9a65('0x2f')](function(_0x3797f7){return _[_0x9a65('0x7a')](_0x620412,[_0x9a65('0x4e'),_0x3797f7])?_0x3797f7:undefined;})[_0x9a65('0x7b')]()['value']();if(!_['isEmpty'](_0x382768)){_0x382768[_0x9a65('0x33')](function(_0x543210){if(_0x543210==='FaxAccountId'){_0xddd2b3[_0x9a65('0x4a')](_0x9a65('0x7c'),[][_0x9a65('0x7d')](_0x4e609f[_0x9a65('0x45')][_0x543210]));}else if(_0x543210===_0x9a65('0x7e')){var _0xe258d=JSON[_0x9a65('0x7f')](_0x4e609f['query'][_0x543210])['$gte'];var _0x21ba70=JSON[_0x9a65('0x7f')](_0x4e609f[_0x9a65('0x45')][_0x543210])[_0x9a65('0x80')];_0xddd2b3[_0x9a65('0x4a')](_0x9a65('0x81'),_0xe258d,_0x21ba70);}else{if(_0x4e609f[_0x9a65('0x45')][_0x543210]===_0x9a65('0x82')){_0xddd2b3[_0x9a65('0x4a')]('i.'+_0x543210+_0x9a65('0x83'));}else{_0xddd2b3['where']('i.'+_0x543210+_0x9a65('0x84'),_0x4e609f[_0x9a65('0x45')][_0x543210]);}}});}if(_0x4e609f['query'][_0x9a65('0x85')]){if(_0x4e609f[_0x9a65('0x45')][_0x9a65('0x85')]==0x1){_0xddd2b3['having']('`unreadMessages`\x20=\x200');}else{_0xddd2b3[_0x9a65('0x68')](_0x9a65('0x86'));}}if(_0x4e609f[_0x9a65('0x45')][_0x9a65('0x87')]){_0x9d1b19=_[_0x9a65('0x88')](_0x4e609f[_0x9a65('0x45')][_0x9a65('0x87')])?_0x4e609f[_0x9a65('0x45')][_0x9a65('0x87')]:new Array(_0x4e609f[_0x9a65('0x45')][_0x9a65('0x87')]);_0x9d1b19['forEach'](function(_0x1be0b7){_0x406f80['or'](_0x9a65('0x75'),'%,'+_0x1be0b7+',%');});}if(_0x4e609f[_0x9a65('0x45')][_0x9a65('0x89')]){var _0x25a4a1=_0x4e609f['query'][_0x9a65('0x89')][_0x9a65('0x8a')]('\x5c','\x5c\x5c')[_0x9a65('0x8a')](/'/g,'\x27\x27');if(qs[_0x9a65('0x8b')](_0x25a4a1)){_0x531fd2['or'](_0x9a65('0x8c'),_0x25a4a1+'%')['or'](_0x9a65('0x8d'),_0x25a4a1+'%');}_0x531fd2['or'](_0x9a65('0x8e'),_0x25a4a1+'%');}}_0xddd2b3['where'](_0x531fd2);_0xddd2b3[_0x9a65('0x8f')](_0x9a65('0x90'));var _0x2ffe85={'type':db[_0x9a65('0x91')][_0x9a65('0x92')][_0x9a65('0x93')],'raw':!![]};var _0x1ba065=_0xddd2b3[_0x9a65('0x94')]();_0x1ba065[_0x9a65('0x4d')]('i.id');_0x1ba065['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x9a65('0x67'));if(_0x2d2d59[_0x9a65('0x48')]){_0x2d2d59[_0x9a65('0x48')]['forEach'](function(_0x1f81b0){var _0x1fb0d4=_0x1f81b0[0x0]==='contactName'?_0x1f81b0[0x0]:'i.'+_0x1f81b0[0x0];_0xddd2b3[_0x9a65('0x48')](_0x1fb0d4,_0x1f81b0[0x1]===_0x9a65('0x95')?![]:!![]);});}if(!_[_0x9a65('0x96')](_0x9d1b19)){_0xddd2b3[_0x9a65('0x68')](_0x406f80);_0x1ba065['where']('t.id\x20IN\x20?',_0x9d1b19);}BPromise[_0x9a65('0x97')]()[_0x9a65('0x29')](function(){if(!_0x2bd1a6){if(_0x4e609f[_0x9a65('0x45')]['FaxAccountId'])return;_0x1ba065[_0x9a65('0x4a')]('i.FaxAccountId\x20IS\x20NOT\x20NULL');_0xddd2b3[_0x9a65('0x4a')](_0x9a65('0x98'));return;}if(_0x4e609f[_0x9a65('0x99')][_0x9a65('0x9a')]!==_0x9a65('0x9b'))return;return _0x4e609f[_0x9a65('0x99')][_0x9a65('0x9c')]({'attributes':['id'],'raw':!![]})['then'](function(_0x22a0b7){if(_[_0x9a65('0x96')](_0x22a0b7)){_0x1ba065[_0x9a65('0x4a')](_0x9a65('0x9d'));_0xddd2b3[_0x9a65('0x4a')]('i.FaxAccountId\x20IS\x20NULL');}else{_0x1ba065['where'](_0x9a65('0x7c'),_['map'](_0x22a0b7,'id'));_0xddd2b3['where']('i.FaxAccountId\x20IN\x20?',_[_0x9a65('0x2f')](_0x22a0b7,'id'));}});})[_0x9a65('0x29')](function(){if(_0x4e609f[_0x9a65('0x99')]['role']===_0x9a65('0x9b')&&!_0x2bd1a6&&!_0x4e609f[_0x9a65('0x45')][_0x9a65('0x9e')])return[];return db[_0x9a65('0x9f')][_0x9a65('0x45')](_0x1ba065['toString'](),_0x2ffe85);})['then'](function(_0x135a91){_0x110cae[_0x9a65('0x21')]=_0x135a91['length'];if(_0x110cae[_0x9a65('0x21')]===0x0)return[];return db['sequelize'][_0x9a65('0x45')](_0x352590[_0x9a65('0xa0')](),_0x2ffe85)[_0x9a65('0x29')](function(_0x5e1799){_0x241b42=_['keyBy'](_0x5e1799,'id');_0x2ffe85=_['merge'](_0x2ffe85,{'model':db[_0x9a65('0x3e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4e609f[_0x9a65('0x45')][_0x9a65('0x46')]){_0x2d2d59[_0x9a65('0x44')][_0x9a65('0x33')](function(_0x463c20){_0xddd2b3['field']('i.'+_0x463c20);});}else{_0xddd2b3['field'](_0x9a65('0xa1'),_0x9a65('0x67'));_0xddd2b3[_0x9a65('0x4d')](_0x9a65('0xa2'),_0x9a65('0xa3'));_0xddd2b3[_0x9a65('0x4d')](_0x9a65('0xa4'),_0x9a65('0xa5'));_0xddd2b3[_0x9a65('0x4d')](_0x9a65('0xa6'),_0x9a65('0xa7'));_0xddd2b3[_0x9a65('0x4d')](_0x9a65('0xa8'));_0xddd2b3[_0x9a65('0x4d')](_0x9a65('0xa9'),'Contact.firstName');_0xddd2b3[_0x9a65('0x4d')](_0x9a65('0xaa'),_0x9a65('0xab'));_0xddd2b3['field'](_0x9a65('0xac'),_0x9a65('0xad'));_0xddd2b3[_0x9a65('0x4d')]('c.phone',_0x9a65('0xae'));_0xddd2b3['field'](_0x9a65('0xaf'),_0x9a65('0xb0'));_0xddd2b3[_0x9a65('0x4d')](_0x9a65('0xb1'),'Contact.fax');_0xddd2b3['field'](_0x9a65('0xb2'),'Owner.fullname');_0xddd2b3[_0x9a65('0x4d')](_0x9a65('0xb3'),'Owner.internal');_0xddd2b3['field']('GROUP_CONCAT(DISTINCT\x20t.id)',_0x9a65('0x31'));}if(_0x2d2d59[_0x9a65('0x20')])_0xddd2b3[_0x9a65('0x20')](_0x2d2d59[_0x9a65('0x20')]);if(_0x2d2d59[_0x9a65('0x22')])_0xddd2b3['offset'](_0x2d2d59[_0x9a65('0x22')]);return db[_0x9a65('0x9f')][_0x9a65('0x45')](_0xddd2b3[_0x9a65('0xa0')](),_0x2ffe85);})[_0x9a65('0x29')](function(_0x4edff9){if(_0x4edff9['length']>0x0)_0x4f0839[_0x9a65('0x4a')](_0x9a65('0xb4'),_[_0x9a65('0x2f')](_0x4edff9,'id'));return db[_0x9a65('0x9f')][_0x9a65('0x45')](_0x4f0839['toString'](),_0x2ffe85)[_0x9a65('0x29')](function(_0x1a8445){var _0x1c0dc9=_[_0x9a65('0xb5')](_0x1a8445,_0x9a65('0xb6'));var _0x1cadad=[];_0x4edff9[_0x9a65('0x33')](function(_0x3c4d1d){_0x1cadad['push'](updateFaxInteraction(_0x3c4d1d,_0x241b42,_0x1c0dc9));});return BPromise[_0x9a65('0xb7')](_0x1cadad);});});})[_0x9a65('0x29')](function(_0x4b1470){_0x110cae[_0x9a65('0xb8')]=_0x4b1470;return _0x110cae;})['then'](respondWithFilteredResult(_0x461dcd,_0x2d2d59))[_0x9a65('0xb9')](handleError(_0x461dcd,null));};exports[_0x9a65('0xba')]=function(_0x6c91c2,_0x223916){var _0x14912a={'raw':![],'where':{'id':_0x6c91c2['params']['id']}},_0x1e3121={};_0x1e3121['model']=_[_0x9a65('0x41')](db[_0x9a65('0x3e')][_0x9a65('0x3f')]);_0x1e3121[_0x9a65('0x45')]=_[_0x9a65('0x41')](_0x6c91c2[_0x9a65('0x45')]);_0x1e3121[_0x9a65('0x42')]=_[_0x9a65('0xbb')](_0x1e3121[_0x9a65('0x43')],_0x1e3121[_0x9a65('0x45')]);_0x14912a[_0x9a65('0x44')]=_['intersection'](_0x1e3121['model'],qs['fields'](_0x6c91c2[_0x9a65('0x45')]['fields']));_0x14912a['attributes']=_0x14912a[_0x9a65('0x44')]['length']?_0x14912a[_0x9a65('0x44')]:_0x1e3121[_0x9a65('0x43')];if(_0x6c91c2[_0x9a65('0x45')]['includeAll']){_0x14912a[_0x9a65('0xbc')]=[{'all':!![]}];}_0x14912a=_[_0x9a65('0xbd')]({},_0x14912a,_0x6c91c2[_0x9a65('0xbe')]);return db[_0x9a65('0x3e')]['find'](_0x14912a)['then'](handleEntityNotFound(_0x223916,null))[_0x9a65('0x29')](respondWithResult(_0x223916,null))['catch'](handleError(_0x223916,null));};exports['create']=function(_0x29a738,_0x1059ab){return db['FaxInteraction'][_0x9a65('0xbf')](_0x29a738[_0x9a65('0xc0')],{})['then'](respondWithResult(_0x1059ab,0xc9))['catch'](handleError(_0x1059ab,null));};exports[_0x9a65('0x28')]=function(_0x5e0af3,_0x5c64c9){if(_0x5e0af3[_0x9a65('0xc0')]['id']){delete _0x5e0af3['body']['id'];}return db[_0x9a65('0x3e')][_0x9a65('0x66')]({'where':{'id':_0x5e0af3[_0x9a65('0xc1')]['id']}})[_0x9a65('0x29')](handleEntityNotFound(_0x5c64c9,null))[_0x9a65('0x29')](saveUpdates(_0x5e0af3[_0x9a65('0xc0')],null))[_0x9a65('0x29')](respondWithResult(_0x5c64c9,null))[_0x9a65('0xb9')](handleError(_0x5c64c9,null));};exports['destroy']=function(_0x545d31,_0x5ce633){return db[_0x9a65('0x3e')][_0x9a65('0x66')]({'where':{'id':_0x545d31[_0x9a65('0xc1')]['id']}})[_0x9a65('0x29')](handleEntityNotFound(_0x5ce633,null))[_0x9a65('0x29')](removeEntity(_0x5ce633,null))[_0x9a65('0xb9')](handleError(_0x5ce633,null));};exports['describe']=function(_0xbeaf48,_0x2ccf7c){return db[_0x9a65('0x3e')][_0x9a65('0xc2')]()[_0x9a65('0x29')](respondWithResult(_0x2ccf7c,null))['catch'](handleError(_0x2ccf7c,null));};exports[_0x9a65('0xc3')]=function(_0x3a1cf8,_0x4d11d0,_0x3277cb){return db[_0x9a65('0xc4')]['find']({'where':{'id':_0x3a1cf8['params']['id']}})[_0x9a65('0x29')](handleEntityNotFound(_0x4d11d0,null))[_0x9a65('0x29')](function(_0x2f2152){if(_0x2f2152){return _0x2f2152[_0x9a65('0xc3')](_0x3a1cf8[_0x9a65('0xc0')][_0x9a65('0xc5')],_[_0x9a65('0xc6')](_0x3a1cf8['body'],[_0x9a65('0xc5'),'id'])||{});}})[_0x9a65('0x29')](respondWithResult(_0x4d11d0,null))['catch'](handleError(_0x4d11d0,null));};exports[_0x9a65('0xc7')]=function(_0x4ccdeb,_0x2fe518,_0x3abc3c){var _0x3b7403={'raw':![],'where':{}};var _0x3162d4={};var _0x20d35a={'count':0x0,'rows':[]};return db[_0x9a65('0x3e')][_0x9a65('0xc8')]({'where':{'id':_0x4ccdeb[_0x9a65('0xc1')]['id']}})[_0x9a65('0x29')](handleEntityNotFound(_0x2fe518,null))[_0x9a65('0x29')](function(_0x21995d){if(_0x21995d){_0x3162d4[_0x9a65('0x43')]=_[_0x9a65('0x41')](db[_0x9a65('0xc4')][_0x9a65('0x3f')]);_0x3162d4[_0x9a65('0x45')]=_[_0x9a65('0x41')](_0x4ccdeb[_0x9a65('0x45')]);_0x3162d4[_0x9a65('0x42')]=_[_0x9a65('0xbb')](_0x3162d4[_0x9a65('0x43')],_0x3162d4[_0x9a65('0x45')]);_0x3b7403[_0x9a65('0x44')]=_[_0x9a65('0xbb')](_0x3162d4['model'],qs[_0x9a65('0x46')](_0x4ccdeb[_0x9a65('0x45')][_0x9a65('0x46')]));_0x3b7403[_0x9a65('0x44')]=_0x3b7403[_0x9a65('0x44')]['length']?_0x3b7403[_0x9a65('0x44')]:_0x3162d4[_0x9a65('0x43')];if(!_0x4ccdeb[_0x9a65('0x45')][_0x9a65('0x47')](_0x9a65('0xc9'))){_0x3b7403[_0x9a65('0x20')]=qs[_0x9a65('0x20')](_0x4ccdeb[_0x9a65('0x45')]['limit']);_0x3b7403[_0x9a65('0x22')]=qs['offset'](_0x4ccdeb[_0x9a65('0x45')]['offset']);}_0x3b7403[_0x9a65('0x48')]=qs[_0x9a65('0x49')](_0x4ccdeb['query'][_0x9a65('0x49')]);_0x3b7403[_0x9a65('0x4a')]=qs[_0x9a65('0x42')](_[_0x9a65('0x4b')](_0x4ccdeb['query'],_0x3162d4['filters']));_0x3b7403[_0x9a65('0x4a')]['FaxInteractionId']=_0x21995d['id'];if(_0x4ccdeb[_0x9a65('0x45')]['filter']){_0x3b7403[_0x9a65('0x4a')]=_[_0x9a65('0xbd')](_0x3b7403[_0x9a65('0x4a')],{'$or':_[_0x9a65('0x2f')](_0x3b7403[_0x9a65('0x44')],function(_0x5c8b8e){var _0x4f45b3={};_0x4f45b3[_0x5c8b8e]={'$like':'%'+_0x4ccdeb[_0x9a65('0x45')][_0x9a65('0x89')]+'%'};return _0x4f45b3;})});}if(_0x4ccdeb[_0x9a65('0x45')][_0x9a65('0xca')]){var _0x5a3cca=_0x4ccdeb['query'][_0x9a65('0xca')]['split'](',');var _0x308780={};_0x308780[_0x5a3cca[0x0]]={'$gte':moment(_0x5a3cca[0x1])[_0x9a65('0xcb')]('YYYY-MM-DD\x20HH:mm:ss')};_0x3b7403[_0x9a65('0x4a')]=_[_0x9a65('0xbd')](_0x3b7403[_0x9a65('0x4a')],_0x308780);}_0x3b7403=_[_0x9a65('0xbd')]({},_0x3b7403,_0x4ccdeb['options']);return db[_0x9a65('0xc4')][_0x9a65('0x21')]({'where':_0x3b7403[_0x9a65('0x4a')]})[_0x9a65('0x29')](function(_0x518f95){_0x20d35a[_0x9a65('0x21')]=_0x518f95;if(_0x4ccdeb[_0x9a65('0x45')][_0x9a65('0xcc')]){_0x3b7403[_0x9a65('0xbc')]=[{'all':!![]}];}return db[_0x9a65('0xc4')][_0x9a65('0xcd')](_0x3b7403);})[_0x9a65('0x29')](function(_0x1d2ef3){_0x20d35a[_0x9a65('0xb8')]=_0x1d2ef3;return _0x20d35a;});}})[_0x9a65('0x29')](respondWithFilteredResult(_0x2fe518,_0x3b7403))['catch'](handleError(_0x2fe518,null));};exports[_0x9a65('0xce')]=function(_0x3c0852,_0x2f9780,_0x4020cc){return db[_0x9a65('0x3e')]['find']({'where':{'id':_0x3c0852[_0x9a65('0xc1')]['id']}})['then'](handleEntityNotFound(_0x2f9780,null))['then'](function(_0x55a65e){if(_0x55a65e){return _0x55a65e[_0x9a65('0xcf')](_0x3c0852[_0x9a65('0xc0')]['ids'],_[_0x9a65('0xc6')](_0x3c0852[_0x9a65('0xc0')],[_0x9a65('0xc5'),'id'])||{})[_0x9a65('0xd0')](function(){return db['Tag'][_0x9a65('0xcd')]({'attributes':['id',_0x9a65('0x4e'),'color'],'where':{'id':_0x3c0852[_0x9a65('0xc0')][_0x9a65('0xc5')]}});})[_0x9a65('0x29')](function(_0x44ff8f){socket[_0x9a65('0xd1')](_0x9a65('0xd2'),{'id':Number(_0x3c0852[_0x9a65('0xc1')]['id']),'tags':_0x44ff8f||[]});return{'id':Number(_0x3c0852[_0x9a65('0xc1')]['id']),'tags':_0x44ff8f||[]};});}})[_0x9a65('0x29')](respondWithResult(_0x2f9780,null))[_0x9a65('0xb9')](handleError(_0x2f9780,null));};exports[_0x9a65('0xd3')]=function(_0x5a3024,_0x25a1d8,_0x964328){return db[_0x9a65('0x3e')][_0x9a65('0x66')]({'where':{'id':_0x5a3024[_0x9a65('0xc1')]['id']}})[_0x9a65('0x29')](handleEntityNotFound(_0x25a1d8,null))[_0x9a65('0x29')](function(_0x5a3ae5){if(_0x5a3ae5){return _0x5a3ae5[_0x9a65('0xd3')](_0x5a3024[_0x9a65('0x45')][_0x9a65('0xc5')]);}})[_0x9a65('0x29')](respondWithStatusCode(_0x25a1d8,null))['catch'](handleError(_0x25a1d8,null));};exports[_0x9a65('0xd4')]=function(_0x174412,_0x45aa7f){var _0x267980=moment()[_0x9a65('0xd5')]()[_0x9a65('0xa0')]();var _0x3c79e2=path[_0x9a65('0xd6')](config[_0x9a65('0xd7')],_0x9a65('0xd8'),_0x9a65('0xd9'),_0x9a65('0xda'));var _0x470924=path[_0x9a65('0xd6')](config[_0x9a65('0xd7')],_0x9a65('0xd8'),_0x9a65('0xd9'),_0x9a65('0xdb'));var _0xba5775=path['join'](_0x3c79e2,_0x267980);var _0x3aa587=util[_0x9a65('0xcb')](_0x9a65('0xdc'),_0x174412[_0x9a65('0xc1')]['id'],_0x267980);var _0x2a8a6b=path[_0x9a65('0xd6')](_0x3c79e2,_0x3aa587);var _0xac392=[];_0xac392[_0x9a65('0x35')]({'model':db[_0x9a65('0xdd')],'as':_0x9a65('0xdd'),'raw':!![]});var _0x2b8a72=[{'model':db['FaxMessage'],'as':_0x9a65('0xde'),'attributes':['id',_0x9a65('0xc0'),_0x9a65('0x7e')],'include':_0xac392}];return db['FaxInteraction'][_0x9a65('0x66')]({'where':{'id':_0x174412[_0x9a65('0xc1')]['id']},'include':_0x2b8a72})[_0x9a65('0x29')](handleEntityNotFound(_0x45aa7f,null))[_0x9a65('0x29')](function(_0x4fa78){if(_0x4fa78&&_0x4fa78['Messages']){var _0x43d38a=_0x4fa78[_0x9a65('0xdf')]({'plain':!![]});fs[_0x9a65('0xe0')](_0xba5775);for(var _0x414656=0x0;_0x414656<_0x43d38a['Messages']['length'];_0x414656++){var _0x48efff=_0x43d38a[_0x9a65('0xde')][_0x414656][_0x9a65('0xdd')];if(_0x48efff){var _0xf17b73=path[_0x9a65('0xd6')](_0x470924,_0x48efff[_0x9a65('0xe1')]);if(fs[_0x9a65('0xe2')](_0xf17b73)){fs['createReadStream'](_0xf17b73)[_0x9a65('0xe3')](fs[_0x9a65('0xe4')](path[_0x9a65('0xd6')](_0xba5775,_0x48efff['basename'])));}}}return BPromise[_0x9a65('0x97')]()['then'](function(){return new BPromise(function(_0x3d4fa8,_0x23a868){zipdir(_0xba5775,{'saveTo':_0x2a8a6b},function(_0x40b24e,_0xc09862){if(_0x40b24e)return _0x23a868(_0x40b24e);return _0x3d4fa8(_0xc09862);});})['then'](function(){return new BPromise(function(_0x44d19a,_0x4ea399){rimraf(_0xba5775,function(_0x2ca1b8){if(_0x2ca1b8)_0x4ea399(_0x2ca1b8);return _0x44d19a();});});})[_0x9a65('0x29')](function(){return _0x45aa7f[_0x9a65('0xd4')](_0x2a8a6b,_0x3aa587,function(_0xed0cbc){if(_0xed0cbc){console['log'](_0x9a65('0xe5'),_0xed0cbc);}else{fs['unlinkSync'](_0x2a8a6b);}});});});}else{return _0x45aa7f[_0x9a65('0x2b')](0xc8);}})['catch'](handleError(_0x45aa7f,null));};
\ No newline at end of file
+var _0x2d16=['get','mkdirSync','Attachment','basename','existsSync','pipe','createWriteStream','err','unlinkSync','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','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','sendStatus','end','status','offset','undefined','limit','set','apply','destroy','then','name','send','Users','map','fullname','Tags','TagIds','split','push','catch','talking','answered','unmanaged','closed','UserId','waiting','total','index','FaxInteraction','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','field','tools_tags','u.id','u.fullname','ui.FaxInteractionId','from','user_has_fax_interactions','left_join','users','u.id\x20=\x20ui.UserId','select','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','fax_accounts','a.id\x20=\x20i.FaxAccountId','fax_messages','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','Tag','forEach','User','start','body','some','compact','isEmpty','i.FaxAccountId\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','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','clone','contactName','DESC','t.id\x20IN\x20?','FaxAccountId','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','i.FaxAccountId\x20IS\x20NULL','role','sequelize','toString','keyBy','merge','fields','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','Account.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','groupBy','rows','params','includeAll','options','create','describe','addMessage','ids','getMessages','findOne','FaxMessage','FaxInteractionId','$gte','YYYY-MM-DD\x20HH:mm:ss','count','findAll','setTags','omit','spread','emit','removeTags','download','unix','server','files','tmp','join','root','attachments','format','transcript-%d-%s.zip','Messages'];(function(_0x3d7eee,_0x2a954d){var _0x36e40c=function(_0xda63e3){while(--_0xda63e3){_0x3d7eee['push'](_0x3d7eee['shift']());}};_0x36e40c(++_0x2a954d);}(_0x2d16,0xec));var _0x62d1=function(_0x2ad6e4,_0x544768){_0x2ad6e4=_0x2ad6e4-0x0;var _0x20006c=_0x2d16[_0x2ad6e4];return _0x20006c;};'use strict';var emlformat=require(_0x62d1('0x0'));var rimraf=require(_0x62d1('0x1'));var zipdir=require(_0x62d1('0x2'));var jsonpatch=require(_0x62d1('0x3'));var rp=require(_0x62d1('0x4'));var moment=require(_0x62d1('0x5'));var BPromise=require(_0x62d1('0x6'));var Mustache=require(_0x62d1('0x7'));var util=require(_0x62d1('0x8'));var path=require('path');var sox=require(_0x62d1('0x9'));var csv=require(_0x62d1('0xa'));var ejs=require(_0x62d1('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x62d1('0xc'));var squel=require(_0x62d1('0xd'));var crypto=require(_0x62d1('0xe'));var jsforce=require(_0x62d1('0xf'));var deskjs=require(_0x62d1('0x10'));var toCsv=require(_0x62d1('0xa'));var querystring=require(_0x62d1('0x11'));var Papa=require(_0x62d1('0x12'));var Redis=require('ioredis');var authService=require(_0x62d1('0x13'));var qs=require(_0x62d1('0x14'));var as=require(_0x62d1('0x15'));var hardwareService=require(_0x62d1('0x16'));var logger=require(_0x62d1('0x17'))(_0x62d1('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x62d1('0x19'));var db=require(_0x62d1('0x1a'))['db'];config['redis']=_[_0x62d1('0x1b')](config[_0x62d1('0x1c')],{'host':_0x62d1('0x1d'),'port':0x18eb});var socket=require(_0x62d1('0x1e'))(new Redis(config['redis']));require('./faxInteraction.socket')['register'](socket);function respondWithStatusCode(_0x2704ee,_0x24eae1){_0x24eae1=_0x24eae1||0xcc;return function(_0x40f2ff){if(_0x40f2ff){return _0x2704ee[_0x62d1('0x1f')](_0x24eae1);}return _0x2704ee['status'](_0x24eae1)[_0x62d1('0x20')]();};}function respondWithResult(_0x465a72,_0x15c7ab){_0x15c7ab=_0x15c7ab||0xc8;return function(_0x415c0f){if(_0x415c0f){return _0x465a72[_0x62d1('0x21')](_0x15c7ab)['json'](_0x415c0f);}};}function respondWithFilteredResult(_0x13eec0,_0x22144c){return function(_0x200b30){if(_0x200b30){var _0x315be7=typeof _0x22144c[_0x62d1('0x22')]===_0x62d1('0x23')&&typeof _0x22144c[_0x62d1('0x24')]==='undefined';var _0x45fa14=_0x200b30['count'];var _0xe85f93=_0x315be7?0x0:_0x22144c[_0x62d1('0x22')];var _0x156490=_0x315be7?_0x200b30['count']:_0x22144c[_0x62d1('0x22')]+_0x22144c[_0x62d1('0x24')];var _0x2670c0;if(_0x156490>=_0x45fa14){_0x156490=_0x45fa14;_0x2670c0=0xc8;}else{_0x2670c0=0xce;}_0x13eec0[_0x62d1('0x21')](_0x2670c0);return _0x13eec0[_0x62d1('0x25')]('Content-Range',_0xe85f93+'-'+_0x156490+'/'+_0x45fa14)['json'](_0x200b30);}return null;};}function patchUpdates(_0x557d3c){return function(_0x5c425){try{jsonpatch[_0x62d1('0x26')](_0x5c425,_0x557d3c,!![]);}catch(_0x191034){return BPromise['reject'](_0x191034);}return _0x5c425['save']();};}function saveUpdates(_0x13b86d,_0x2868){return function(_0xa9c1c0){if(_0xa9c1c0){return _0xa9c1c0['update'](_0x13b86d)['then'](function(_0x4c4edf){return _0x4c4edf;});}return null;};}function removeEntity(_0xe00aff,_0x345732){return function(_0x3671a5){if(_0x3671a5){return _0x3671a5[_0x62d1('0x27')]()[_0x62d1('0x28')](function(){_0xe00aff[_0x62d1('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x10f9e7,_0x576460){return function(_0x364c66){if(!_0x364c66){_0x10f9e7[_0x62d1('0x1f')](0x194);}return _0x364c66;};}function handleError(_0x41c545,_0xf4109d){_0xf4109d=_0xf4109d||0x1f4;return function(_0x41f682){logger['error'](_0x41f682['stack']);if(_0x41f682[_0x62d1('0x29')]){delete _0x41f682['name'];}_0x41c545['status'](_0xf4109d)[_0x62d1('0x2a')](_0x41f682);};}function getInteractionUsers(_0x536ac2,_0x51efc7){return new BPromise(function(_0x5db541,_0x2924bd){try{if(_0x51efc7[_0x536ac2['id']]){_0x536ac2[_0x62d1('0x2b')]=_[_0x62d1('0x2c')](_0x51efc7[_0x536ac2['id']],function(_0x20e5eb){return{'id':_0x20e5eb['id'],'fullname':_0x20e5eb[_0x62d1('0x2d')]};});}}catch(_0x4bff63){_0x2924bd(_0x4bff63);}_0x5db541(_0x536ac2);});}function getInteractionTags(_0x179aa7,_0x24eb8f){return new BPromise(function(_0x2856f,_0x2febea){try{if(_0x179aa7['TagIds']){_0x179aa7[_0x62d1('0x2e')]=[];_0x179aa7[_0x62d1('0x2f')][_0x62d1('0x30')](',')['forEach'](function(_0x43b7b2){_0x179aa7['Tags'][_0x62d1('0x31')](_0x24eb8f[_0x43b7b2]);});}delete _0x179aa7[_0x62d1('0x2f')];}catch(_0x43e86c){_0x2febea(_0x43e86c);}_0x2856f(_0x179aa7);});}function updateFaxInteraction(_0x4d2bf1,_0x1a3b29,_0x4e2cdf){return new BPromise(function(_0x1341b8,_0x540e65){return getInteractionUsers(_0x4d2bf1,_0x4e2cdf)[_0x62d1('0x28')](function(_0x5c7f99){return getInteractionTags(_0x5c7f99,_0x1a3b29);})['then'](function(_0x3622b8){return getStateInteraction(_0x3622b8);})[_0x62d1('0x28')](function(_0x5d842b){_0x1341b8(_0x5d842b);})[_0x62d1('0x32')](function(_0x4b700d){_0x540e65(_0x4b700d);});});}function getStateInteraction(_0x1ea997){return new BPromise(function(_0x327ce2){_0x1ea997['waiting']=0x0;_0x1ea997[_0x62d1('0x33')]=0x0;_0x1ea997[_0x62d1('0x34')]=0x0;_0x1ea997[_0x62d1('0x35')]=0x0;_0x1ea997['total']=0x0;if(!_0x1ea997[_0x62d1('0x36')]&&!_0x1ea997[_0x62d1('0x37')]){_0x1ea997[_0x62d1('0x38')]+=0x1;}if(!_0x1ea997[_0x62d1('0x36')]&&_0x1ea997['UserId']){_0x1ea997[_0x62d1('0x33')]+=0x1;if(_0x1ea997['waiting']){_0x1ea997['waiting']-=0x1;}}if(_0x1ea997[_0x62d1('0x36')]&&_0x1ea997[_0x62d1('0x37')]){_0x1ea997[_0x62d1('0x34')]+=0x1;if(_0x1ea997[_0x62d1('0x33')]){_0x1ea997[_0x62d1('0x33')]-=0x1;}}if(_0x1ea997[_0x62d1('0x36')]&&!_0x1ea997[_0x62d1('0x37')]){_0x1ea997[_0x62d1('0x35')]+=0x1;if(_0x1ea997[_0x62d1('0x38')]){_0x1ea997[_0x62d1('0x38')]-=0x1;}}_0x1ea997[_0x62d1('0x39')]+=0x1;_0x327ce2(_0x1ea997);});}exports[_0x62d1('0x3a')]=function(_0x4df451,_0x11e3c9){var _0x58181d={},_0x1bf801={},_0x264703={'count':0x0,'rows':[]};var _0x58d011=_[_0x62d1('0x2c')](db[_0x62d1('0x3b')][_0x62d1('0x3c')],function(_0x2dfccd){return{'name':_0x2dfccd[_0x62d1('0x3d')],'type':_0x2dfccd['type'][_0x62d1('0x3e')]};});_0x1bf801[_0x62d1('0x3f')]=_['map'](_0x58d011,'name');_0x1bf801['query']=_[_0x62d1('0x40')](_0x4df451[_0x62d1('0x41')]);_0x1bf801[_0x62d1('0x42')]=_[_0x62d1('0x43')](_0x1bf801[_0x62d1('0x3f')],_0x1bf801[_0x62d1('0x41')]);_0x58181d['attributes']=_[_0x62d1('0x43')](_0x1bf801[_0x62d1('0x3f')],qs['fields'](_0x4df451[_0x62d1('0x41')]['fields']));_0x58181d[_0x62d1('0x44')]=_0x58181d[_0x62d1('0x44')][_0x62d1('0x45')]?_0x58181d[_0x62d1('0x44')]:_0x1bf801[_0x62d1('0x3f')];if(!_0x4df451[_0x62d1('0x41')][_0x62d1('0x46')](_0x62d1('0x47'))){_0x58181d[_0x62d1('0x24')]=qs[_0x62d1('0x24')](_0x4df451[_0x62d1('0x41')][_0x62d1('0x24')]);_0x58181d['offset']=qs[_0x62d1('0x22')](_0x4df451[_0x62d1('0x41')][_0x62d1('0x22')]);}_0x58181d[_0x62d1('0x48')]=qs[_0x62d1('0x49')](_0x4df451[_0x62d1('0x41')][_0x62d1('0x49')]);_0x58181d[_0x62d1('0x4a')]=qs[_0x62d1('0x42')](_[_0x62d1('0x4b')](_0x4df451[_0x62d1('0x41')],_0x1bf801[_0x62d1('0x42')]),_0x58d011);var _0x158983=[];var _0x54e8ac=squel['select']()[_0x62d1('0x4c')]('id')['field'](_0x62d1('0x29'))[_0x62d1('0x4c')]('color')['from'](_0x62d1('0x4d'));var _0x39643e=squel['select']()['field'](_0x62d1('0x4e'))['field'](_0x62d1('0x4f'))[_0x62d1('0x4c')](_0x62d1('0x50'))[_0x62d1('0x51')](_0x62d1('0x52'),'ui')[_0x62d1('0x53')](_0x62d1('0x54'),'u',_0x62d1('0x55'));var _0x36363b=squel[_0x62d1('0x56')]()['from'](_0x62d1('0x57'),'i')['left_join'](_0x62d1('0x58'),'c',_0x62d1('0x59'))[_0x62d1('0x53')](_0x62d1('0x54'),'o',_0x62d1('0x5a'))[_0x62d1('0x53')](_0x62d1('0x5b'),'a',_0x62d1('0x5c'))[_0x62d1('0x53')](_0x62d1('0x5d'),'me','me.FaxInteractionId\x20=\x20i.id')['left_join'](_0x62d1('0x5e'),'it',_0x62d1('0x5f'))[_0x62d1('0x53')](_0x62d1('0x4d'),'t',_0x62d1('0x60'));var _0x42d4d4=squel[_0x62d1('0x61')]();var _0x5880e7=[];var _0x4c4391=squel[_0x62d1('0x61')]();var _0xe4be37;if(_0x4df451[_0x62d1('0x41')][_0x62d1('0x62')]){_0xe4be37=as['parseSearch'](_0x4df451[_0x62d1('0x41')][_0x62d1('0x62')]);var _0x5e9f45=_0xe4be37[_0x62d1('0x63')];for(var _0x82466a=0x0;_0x82466a<_0xe4be37['conditions'][_0x62d1('0x45')];_0x82466a++){var _0x432d70=_0xe4be37[_0x62d1('0x64')][_0x82466a];var _0x207d68='i';var _0x14eba6=_[_0x62d1('0x65')](_0x58d011,['name',_0x432d70[_0x62d1('0x4c')]]);if(!_0x14eba6){switch(_0x432d70['field']){case _0x62d1('0x66'):if(_0x432d70[_0x62d1('0x67')]==0x1){_0x36363b[_0x62d1('0x68')]('`'+_0x432d70[_0x62d1('0x4c')]+_0x62d1('0x69'));}else{_0x36363b[_0x62d1('0x68')]('`'+_0x432d70['field']+_0x62d1('0x6a'));}break;case _0x62d1('0x6b'):if(_0x432d70[_0x62d1('0x6c')]===_0x62d1('0x6d')){if(_0x432d70['value']['split']('\x20')[_0x62d1('0x45')]>0x1){_0x42d4d4[_0x5e9f45](_0x62d1('0x6e'),qs[_0x62d1('0x6f')](_0x432d70[_0x62d1('0x67')]),null);}else{var _0x4d6e7a='%'+_0x432d70[_0x62d1('0x67')]+'%';_0x42d4d4[_0x5e9f45](_0x62d1('0x70'),_0x4d6e7a,_0x4d6e7a,_0x4d6e7a);}}else{_0x14eba6=_[_0x62d1('0x65')](_0x58d011,[_0x62d1('0x29'),_0x62d1('0x71')]);_0x432d70[_0x62d1('0x4c')]='ContactId';_0x4593da=as[_0x62d1('0x72')](_0x207d68,_0x14eba6[_0x62d1('0x73')],_0x432d70);_0x42d4d4[_0x5e9f45](_0x4593da[_0x62d1('0x74')],_0x4593da[_0x62d1('0x67')]['start'],_0x4593da[_0x62d1('0x67')]['end']);}break;case _0x62d1('0x75'):var _0x232656=_0x432d70[_0x62d1('0x67')][_0x62d1('0x30')](',')['map'](function(_0xb1787){return Number(_0xb1787);});_0x232656[_0x62d1('0x76')](function(_0x1bd364){_0x4c4391['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x1bd364+',%');});_0x5880e7=_['union'](_0x5880e7,_0x232656);break;case _0x62d1('0x77'):if(_0x432d70[_0x62d1('0x6c')]==='$substring'){_0x42d4d4[_0x5e9f45]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x432d70['value']+'%',null);}else{_0x14eba6=_[_0x62d1('0x65')](_0x58d011,[_0x62d1('0x29'),_0x62d1('0x37')]);_0x432d70[_0x62d1('0x4c')]='UserId';_0x4593da=as['buildExpression'](_0x207d68,_0x14eba6[_0x62d1('0x73')],_0x432d70);_0x42d4d4[_0x5e9f45](_0x4593da['text'],_0x4593da[_0x62d1('0x67')][_0x62d1('0x78')],_0x4593da[_0x62d1('0x67')][_0x62d1('0x20')]);}break;case _0x62d1('0x79'):_0x4593da=as['buildExpression']('me',null,_0x432d70);_0x42d4d4[_0x5e9f45](_0x4593da[_0x62d1('0x74')],_0x4593da[_0x62d1('0x67')]['start'],_0x4593da[_0x62d1('0x67')]['end']);break;}}else{var _0x4593da=as['buildExpression'](_0x207d68,_0x14eba6[_0x62d1('0x73')],_0x432d70);_0x42d4d4[_0x5e9f45](_0x4593da[_0x62d1('0x74')],_0x4593da['value'][_0x62d1('0x78')],_0x4593da[_0x62d1('0x67')][_0x62d1('0x20')]);}}}else{var _0x35c694=_(_0x4df451[_0x62d1('0x41')])[_0x62d1('0x40')]()[_0x62d1('0x2c')](function(_0xc381d9){return _[_0x62d1('0x7a')](_0x58d011,[_0x62d1('0x29'),_0xc381d9])?_0xc381d9:undefined;})[_0x62d1('0x7b')]()[_0x62d1('0x67')]();if(!_[_0x62d1('0x7c')](_0x35c694)){_0x35c694[_0x62d1('0x76')](function(_0x21bb26){if(_0x21bb26==='FaxAccountId'){_0x36363b['where'](_0x62d1('0x7d'),[][_0x62d1('0x7e')](_0x4df451[_0x62d1('0x41')][_0x21bb26]));}else if(_0x21bb26===_0x62d1('0x7f')){var _0x19d3e5=JSON[_0x62d1('0x80')](_0x4df451[_0x62d1('0x41')][_0x21bb26])['$gte'];var _0x3b8fb5=JSON[_0x62d1('0x80')](_0x4df451[_0x62d1('0x41')][_0x21bb26])[_0x62d1('0x81')];_0x36363b[_0x62d1('0x4a')](_0x62d1('0x82'),_0x19d3e5,_0x3b8fb5);}else{if(_0x4df451[_0x62d1('0x41')][_0x21bb26]===_0x62d1('0x83')){_0x36363b['where']('i.'+_0x21bb26+_0x62d1('0x84'));}else{_0x36363b[_0x62d1('0x4a')]('i.'+_0x21bb26+_0x62d1('0x85'),_0x4df451[_0x62d1('0x41')][_0x21bb26]);}}});}if(_0x4df451['query'][_0x62d1('0x86')]){if(_0x4df451[_0x62d1('0x41')][_0x62d1('0x86')]==0x1){_0x36363b[_0x62d1('0x68')](_0x62d1('0x87'));}else{_0x36363b[_0x62d1('0x68')](_0x62d1('0x88'));}}if(_0x4df451['query'][_0x62d1('0x89')]){_0x5880e7=_[_0x62d1('0x8a')](_0x4df451[_0x62d1('0x41')]['tag'])?_0x4df451['query'][_0x62d1('0x89')]:new Array(_0x4df451[_0x62d1('0x41')][_0x62d1('0x89')]);_0x5880e7[_0x62d1('0x76')](function(_0x45c39d){_0x4c4391['or'](_0x62d1('0x8b'),'%,'+_0x45c39d+',%');});}if(_0x4df451['query']['filter']){var _0x446451=_0x4df451[_0x62d1('0x41')][_0x62d1('0x8c')]['replace']('\x5c','\x5c\x5c')[_0x62d1('0x8d')](/'/g,'\x27\x27');if(qs[_0x62d1('0x8e')](_0x446451)){_0x42d4d4['or'](_0x62d1('0x8f'),_0x446451+'%')['or'](_0x62d1('0x90'),_0x446451+'%');}_0x42d4d4['or'](_0x62d1('0x91'),_0x446451+'%');}}_0x36363b['where'](_0x42d4d4);_0x36363b[_0x62d1('0x92')]('i.id');var _0x12cf2c={'type':db[_0x62d1('0x93')][_0x62d1('0x94')][_0x62d1('0x95')],'raw':!![]};var _0x4868ab=_0x36363b[_0x62d1('0x96')]();_0x4868ab[_0x62d1('0x4c')]('i.id');_0x4868ab[_0x62d1('0x4c')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x62d1('0x66'));if(_0x58181d[_0x62d1('0x48')]){_0x58181d['order'][_0x62d1('0x76')](function(_0x51413b){var _0x12f39c=_0x51413b[0x0]===_0x62d1('0x97')?_0x51413b[0x0]:'i.'+_0x51413b[0x0];_0x36363b['order'](_0x12f39c,_0x51413b[0x1]===_0x62d1('0x98')?![]:!![]);});}if(!_[_0x62d1('0x7c')](_0x5880e7)){_0x36363b['having'](_0x4c4391);_0x4868ab[_0x62d1('0x4a')](_0x62d1('0x99'),_0x5880e7);}BPromise['resolve']()[_0x62d1('0x28')](function(){if(!_0xe4be37){if(_0x4df451[_0x62d1('0x41')][_0x62d1('0x9a')])return;_0x4868ab[_0x62d1('0x4a')]('i.FaxAccountId\x20IS\x20NOT\x20NULL');_0x36363b['where'](_0x62d1('0x9b'));return;}if(_0x4df451[_0x62d1('0x9c')]['role']!=='agent')return;return _0x4df451[_0x62d1('0x9c')]['getFaxAccounts']({'attributes':['id'],'raw':!![]})[_0x62d1('0x28')](function(_0xea2254){if(_['isEmpty'](_0xea2254)){_0x4868ab[_0x62d1('0x4a')](_0x62d1('0x9d'));_0x36363b[_0x62d1('0x4a')]('i.FaxAccountId\x20IS\x20NULL');}else{_0x4868ab[_0x62d1('0x4a')]('i.FaxAccountId\x20IN\x20?',_[_0x62d1('0x2c')](_0xea2254,'id'));_0x36363b[_0x62d1('0x4a')]('i.FaxAccountId\x20IN\x20?',_[_0x62d1('0x2c')](_0xea2254,'id'));}});})[_0x62d1('0x28')](function(){if(_0x4df451['user'][_0x62d1('0x9e')]==='agent'&&!_0xe4be37&&!_0x4df451[_0x62d1('0x41')]['FaxAccountId'])return[];return db[_0x62d1('0x9f')][_0x62d1('0x41')](_0x4868ab['toString'](),_0x12cf2c);})['then'](function(_0x485d39){_0x264703['count']=_0x485d39[_0x62d1('0x45')];if(_0x264703['count']===0x0)return[];return db['sequelize']['query'](_0x54e8ac[_0x62d1('0xa0')](),_0x12cf2c)[_0x62d1('0x28')](function(_0xadab37){_0x158983=_[_0x62d1('0xa1')](_0xadab37,'id');_0x12cf2c=_[_0x62d1('0xa2')](_0x12cf2c,{'model':db[_0x62d1('0x3b')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4df451[_0x62d1('0x41')][_0x62d1('0xa3')]){_0x58181d[_0x62d1('0x44')][_0x62d1('0x76')](function(_0x251236){_0x36363b[_0x62d1('0x4c')]('i.'+_0x251236);});}else{_0x36363b['field'](_0x62d1('0xa4'),'unreadMessages');_0x36363b[_0x62d1('0x4c')]('a.key',_0x62d1('0xa5'));_0x36363b['field'](_0x62d1('0xa6'),'Account.mandatoryDisposition');_0x36363b[_0x62d1('0x4c')](_0x62d1('0xa7'),_0x62d1('0x97'));_0x36363b['field'](_0x62d1('0xa8'));_0x36363b[_0x62d1('0x4c')](_0x62d1('0xa9'),'Contact.firstName');_0x36363b['field'](_0x62d1('0xaa'),_0x62d1('0xab'));_0x36363b[_0x62d1('0x4c')](_0x62d1('0xac'),_0x62d1('0xad'));_0x36363b[_0x62d1('0x4c')](_0x62d1('0xae'),_0x62d1('0xaf'));_0x36363b['field'](_0x62d1('0xb0'),_0x62d1('0xb1'));_0x36363b[_0x62d1('0x4c')](_0x62d1('0xb2'),_0x62d1('0xb3'));_0x36363b[_0x62d1('0x4c')](_0x62d1('0xb4'),_0x62d1('0xb5'));_0x36363b[_0x62d1('0x4c')](_0x62d1('0xb6'),'Owner.internal');_0x36363b[_0x62d1('0x4c')](_0x62d1('0xb7'),_0x62d1('0x2f'));}if(_0x58181d[_0x62d1('0x24')])_0x36363b[_0x62d1('0x24')](_0x58181d[_0x62d1('0x24')]);if(_0x58181d[_0x62d1('0x22')])_0x36363b[_0x62d1('0x22')](_0x58181d[_0x62d1('0x22')]);return db[_0x62d1('0x9f')][_0x62d1('0x41')](_0x36363b[_0x62d1('0xa0')](),_0x12cf2c);})[_0x62d1('0x28')](function(_0x338497){if(_0x338497[_0x62d1('0x45')]>0x0)_0x39643e[_0x62d1('0x4a')](_0x62d1('0xb8'),_[_0x62d1('0x2c')](_0x338497,'id'));return db[_0x62d1('0x9f')][_0x62d1('0x41')](_0x39643e['toString'](),_0x12cf2c)[_0x62d1('0x28')](function(_0x542309){var _0x28b147=_[_0x62d1('0xb9')](_0x542309,'FaxInteractionId');var _0x42d213=[];_0x338497[_0x62d1('0x76')](function(_0x190cd5){_0x42d213['push'](updateFaxInteraction(_0x190cd5,_0x158983,_0x28b147));});return BPromise['all'](_0x42d213);});});})[_0x62d1('0x28')](function(_0x17ceb5){_0x264703[_0x62d1('0xba')]=_0x17ceb5;return _0x264703;})[_0x62d1('0x28')](respondWithFilteredResult(_0x11e3c9,_0x58181d))[_0x62d1('0x32')](handleError(_0x11e3c9,null));};exports['show']=function(_0x4f6922,_0x4bda4d){var _0x2837a5={'raw':![],'where':{'id':_0x4f6922[_0x62d1('0xbb')]['id']}},_0x2adcb3={};_0x2adcb3[_0x62d1('0x3f')]=_[_0x62d1('0x40')](db[_0x62d1('0x3b')][_0x62d1('0x3c')]);_0x2adcb3[_0x62d1('0x41')]=_[_0x62d1('0x40')](_0x4f6922[_0x62d1('0x41')]);_0x2adcb3[_0x62d1('0x42')]=_[_0x62d1('0x43')](_0x2adcb3[_0x62d1('0x3f')],_0x2adcb3[_0x62d1('0x41')]);_0x2837a5[_0x62d1('0x44')]=_[_0x62d1('0x43')](_0x2adcb3['model'],qs[_0x62d1('0xa3')](_0x4f6922[_0x62d1('0x41')]['fields']));_0x2837a5['attributes']=_0x2837a5['attributes'][_0x62d1('0x45')]?_0x2837a5['attributes']:_0x2adcb3['model'];if(_0x4f6922[_0x62d1('0x41')][_0x62d1('0xbc')]){_0x2837a5['include']=[{'all':!![]}];}_0x2837a5=_[_0x62d1('0xa2')]({},_0x2837a5,_0x4f6922[_0x62d1('0xbd')]);return db['FaxInteraction'][_0x62d1('0x65')](_0x2837a5)[_0x62d1('0x28')](handleEntityNotFound(_0x4bda4d,null))[_0x62d1('0x28')](respondWithResult(_0x4bda4d,null))['catch'](handleError(_0x4bda4d,null));};exports[_0x62d1('0xbe')]=function(_0xfa7539,_0x5e7b71){return db[_0x62d1('0x3b')][_0x62d1('0xbe')](_0xfa7539[_0x62d1('0x79')],{})[_0x62d1('0x28')](respondWithResult(_0x5e7b71,0xc9))['catch'](handleError(_0x5e7b71,null));};exports['update']=function(_0x102226,_0x422bd7){if(_0x102226[_0x62d1('0x79')]['id']){delete _0x102226['body']['id'];}return db[_0x62d1('0x3b')][_0x62d1('0x65')]({'where':{'id':_0x102226[_0x62d1('0xbb')]['id']}})[_0x62d1('0x28')](handleEntityNotFound(_0x422bd7,null))[_0x62d1('0x28')](saveUpdates(_0x102226[_0x62d1('0x79')],null))[_0x62d1('0x28')](respondWithResult(_0x422bd7,null))[_0x62d1('0x32')](handleError(_0x422bd7,null));};exports['destroy']=function(_0x73517b,_0x67cb1f){return db[_0x62d1('0x3b')][_0x62d1('0x65')]({'where':{'id':_0x73517b[_0x62d1('0xbb')]['id']}})[_0x62d1('0x28')](handleEntityNotFound(_0x67cb1f,null))[_0x62d1('0x28')](removeEntity(_0x67cb1f,null))[_0x62d1('0x32')](handleError(_0x67cb1f,null));};exports[_0x62d1('0xbf')]=function(_0x227f35,_0x35e80e){return db[_0x62d1('0x3b')][_0x62d1('0xbf')]()[_0x62d1('0x28')](respondWithResult(_0x35e80e,null))[_0x62d1('0x32')](handleError(_0x35e80e,null));};exports['addMessage']=function(_0x578acc,_0x4c098b,_0x563008){return db['FaxMessage'][_0x62d1('0x65')]({'where':{'id':_0x578acc[_0x62d1('0xbb')]['id']}})['then'](handleEntityNotFound(_0x4c098b,null))[_0x62d1('0x28')](function(_0x576361){if(_0x576361){return _0x576361[_0x62d1('0xc0')](_0x578acc['body'][_0x62d1('0xc1')],_['omit'](_0x578acc[_0x62d1('0x79')],['ids','id'])||{});}})[_0x62d1('0x28')](respondWithResult(_0x4c098b,null))[_0x62d1('0x32')](handleError(_0x4c098b,null));};exports[_0x62d1('0xc2')]=function(_0x3d3df5,_0x297f65,_0x78ac47){var _0x30bf9d={'raw':![],'where':{}};var _0x10f7c7={};var _0x56233a={'count':0x0,'rows':[]};return db[_0x62d1('0x3b')][_0x62d1('0xc3')]({'where':{'id':_0x3d3df5['params']['id']}})[_0x62d1('0x28')](handleEntityNotFound(_0x297f65,null))['then'](function(_0x2a6582){if(_0x2a6582){_0x10f7c7[_0x62d1('0x3f')]=_[_0x62d1('0x40')](db[_0x62d1('0xc4')][_0x62d1('0x3c')]);_0x10f7c7['query']=_['keys'](_0x3d3df5[_0x62d1('0x41')]);_0x10f7c7['filters']=_[_0x62d1('0x43')](_0x10f7c7[_0x62d1('0x3f')],_0x10f7c7[_0x62d1('0x41')]);_0x30bf9d['attributes']=_[_0x62d1('0x43')](_0x10f7c7[_0x62d1('0x3f')],qs[_0x62d1('0xa3')](_0x3d3df5['query'][_0x62d1('0xa3')]));_0x30bf9d[_0x62d1('0x44')]=_0x30bf9d[_0x62d1('0x44')][_0x62d1('0x45')]?_0x30bf9d[_0x62d1('0x44')]:_0x10f7c7[_0x62d1('0x3f')];if(!_0x3d3df5[_0x62d1('0x41')]['hasOwnProperty'](_0x62d1('0x47'))){_0x30bf9d['limit']=qs[_0x62d1('0x24')](_0x3d3df5[_0x62d1('0x41')][_0x62d1('0x24')]);_0x30bf9d['offset']=qs[_0x62d1('0x22')](_0x3d3df5[_0x62d1('0x41')][_0x62d1('0x22')]);}_0x30bf9d['order']=qs[_0x62d1('0x49')](_0x3d3df5[_0x62d1('0x41')][_0x62d1('0x49')]);_0x30bf9d[_0x62d1('0x4a')]=qs[_0x62d1('0x42')](_[_0x62d1('0x4b')](_0x3d3df5[_0x62d1('0x41')],_0x10f7c7[_0x62d1('0x42')]));_0x30bf9d[_0x62d1('0x4a')][_0x62d1('0xc5')]=_0x2a6582['id'];if(_0x3d3df5['query']['filter']){_0x30bf9d[_0x62d1('0x4a')]=_['merge'](_0x30bf9d['where'],{'$or':_[_0x62d1('0x2c')](_0x30bf9d[_0x62d1('0x44')],function(_0x59a822){var _0x5875bf={};_0x5875bf[_0x59a822]={'$like':'%'+_0x3d3df5[_0x62d1('0x41')][_0x62d1('0x8c')]+'%'};return _0x5875bf;})});}if(_0x3d3df5[_0x62d1('0x41')][_0x62d1('0xc6')]){var _0x321d04=_0x3d3df5[_0x62d1('0x41')]['$gte'][_0x62d1('0x30')](',');var _0x157ccc={};_0x157ccc[_0x321d04[0x0]]={'$gte':moment(_0x321d04[0x1])['format'](_0x62d1('0xc7'))};_0x30bf9d[_0x62d1('0x4a')]=_['merge'](_0x30bf9d[_0x62d1('0x4a')],_0x157ccc);}_0x30bf9d=_[_0x62d1('0xa2')]({},_0x30bf9d,_0x3d3df5[_0x62d1('0xbd')]);return db[_0x62d1('0xc4')][_0x62d1('0xc8')]({'where':_0x30bf9d['where']})[_0x62d1('0x28')](function(_0x2578c6){_0x56233a[_0x62d1('0xc8')]=_0x2578c6;if(_0x3d3df5[_0x62d1('0x41')][_0x62d1('0xbc')]){_0x30bf9d['include']=[{'all':!![]}];}return db[_0x62d1('0xc4')][_0x62d1('0xc9')](_0x30bf9d);})['then'](function(_0x3a8156){_0x56233a['rows']=_0x3a8156;return _0x56233a;});}})['then'](respondWithFilteredResult(_0x297f65,_0x30bf9d))[_0x62d1('0x32')](handleError(_0x297f65,null));};exports['addTags']=function(_0x3a69e0,_0xc0f916,_0x5ca992){return db[_0x62d1('0x3b')][_0x62d1('0x65')]({'where':{'id':_0x3a69e0[_0x62d1('0xbb')]['id']}})[_0x62d1('0x28')](handleEntityNotFound(_0xc0f916,null))[_0x62d1('0x28')](function(_0xa12eec){if(_0xa12eec){return _0xa12eec[_0x62d1('0xca')](_0x3a69e0[_0x62d1('0x79')][_0x62d1('0xc1')],_[_0x62d1('0xcb')](_0x3a69e0[_0x62d1('0x79')],[_0x62d1('0xc1'),'id'])||{})[_0x62d1('0xcc')](function(){return db[_0x62d1('0x75')][_0x62d1('0xc9')]({'attributes':['id',_0x62d1('0x29'),'color'],'where':{'id':_0x3a69e0[_0x62d1('0x79')][_0x62d1('0xc1')]}});})[_0x62d1('0x28')](function(_0x3b4384){socket[_0x62d1('0xcd')]('faxInteractionTags:save',{'id':Number(_0x3a69e0[_0x62d1('0xbb')]['id']),'tags':_0x3b4384||[]});return{'id':Number(_0x3a69e0['params']['id']),'tags':_0x3b4384||[]};});}})[_0x62d1('0x28')](respondWithResult(_0xc0f916,null))[_0x62d1('0x32')](handleError(_0xc0f916,null));};exports['removeTags']=function(_0x3fdeea,_0x35831c,_0x5ae5a1){return db[_0x62d1('0x3b')][_0x62d1('0x65')]({'where':{'id':_0x3fdeea[_0x62d1('0xbb')]['id']}})[_0x62d1('0x28')](handleEntityNotFound(_0x35831c,null))[_0x62d1('0x28')](function(_0x2284ef){if(_0x2284ef){return _0x2284ef[_0x62d1('0xce')](_0x3fdeea['query']['ids']);}})['then'](respondWithStatusCode(_0x35831c,null))[_0x62d1('0x32')](handleError(_0x35831c,null));};exports[_0x62d1('0xcf')]=function(_0xf07080,_0x388db1){var _0x55092c=moment()[_0x62d1('0xd0')]()[_0x62d1('0xa0')]();var _0x8a1471=path['join'](config['root'],_0x62d1('0xd1'),_0x62d1('0xd2'),_0x62d1('0xd3'));var _0x2b9708=path[_0x62d1('0xd4')](config[_0x62d1('0xd5')],_0x62d1('0xd1'),'files',_0x62d1('0xd6'));var _0x313ce9=path[_0x62d1('0xd4')](_0x8a1471,_0x55092c);var _0x1876d9=util[_0x62d1('0xd7')](_0x62d1('0xd8'),_0xf07080[_0x62d1('0xbb')]['id'],_0x55092c);var _0x53ecc2=path['join'](_0x8a1471,_0x1876d9);var _0x1cd6ab=[];_0x1cd6ab[_0x62d1('0x31')]({'model':db['Attachment'],'as':'Attachment','raw':!![]});var _0xb68880=[{'model':db[_0x62d1('0xc4')],'as':_0x62d1('0xd9'),'attributes':['id',_0x62d1('0x79'),_0x62d1('0x7f')],'include':_0x1cd6ab}];return db['FaxInteraction'][_0x62d1('0x65')]({'where':{'id':_0xf07080[_0x62d1('0xbb')]['id']},'include':_0xb68880})[_0x62d1('0x28')](handleEntityNotFound(_0x388db1,null))[_0x62d1('0x28')](function(_0x163380){if(_0x163380&&_0x163380[_0x62d1('0xd9')]){var _0x54e695=_0x163380[_0x62d1('0xda')]({'plain':!![]});fs[_0x62d1('0xdb')](_0x313ce9);for(var _0x3412f6=0x0;_0x3412f6<_0x54e695[_0x62d1('0xd9')][_0x62d1('0x45')];_0x3412f6++){var _0x3b9047=_0x54e695[_0x62d1('0xd9')][_0x3412f6][_0x62d1('0xdc')];if(_0x3b9047){var _0x127dd3=path['join'](_0x2b9708,_0x3b9047[_0x62d1('0xdd')]);if(fs[_0x62d1('0xde')](_0x127dd3)){fs['createReadStream'](_0x127dd3)[_0x62d1('0xdf')](fs[_0x62d1('0xe0')](path[_0x62d1('0xd4')](_0x313ce9,_0x3b9047[_0x62d1('0xdd')])));}}}return BPromise['resolve']()[_0x62d1('0x28')](function(){return new BPromise(function(_0x3857ec,_0x2dc287){zipdir(_0x313ce9,{'saveTo':_0x53ecc2},function(_0x1d5024,_0x3a7905){if(_0x1d5024)return _0x2dc287(_0x1d5024);return _0x3857ec(_0x3a7905);});})[_0x62d1('0x28')](function(){return new BPromise(function(_0x208043,_0x1646c1){rimraf(_0x313ce9,function(_0x4ca533){if(_0x4ca533)_0x1646c1(_0x4ca533);return _0x208043();});});})[_0x62d1('0x28')](function(){return _0x388db1['download'](_0x53ecc2,_0x1876d9,function(_0x26bef2){if(_0x26bef2){console['log'](_0x62d1('0xe1'),_0x26bef2);}else{fs[_0x62d1('0xe2')](_0x53ecc2);}});});});}else{return _0x388db1['sendStatus'](0xc8);}})[_0x62d1('0x32')](handleError(_0x388db1,null));};
\ No newline at end of file
index 7f7441d..7f065b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e4=['catch','hasOwnProperty','hook','events','../../mysqldb','FaxInteraction','FaxMessage','setMaxListeners','save','update','remove','then','Users','map','findAll','setDataValue','length','emit'];(function(_0x269049,_0x200882){var _0xe407a4=function(_0x2eb692){while(--_0x2eb692){_0x269049['push'](_0x269049['shift']());}};_0xe407a4(++_0x200882);}(_0xb7e4,0x17d));var _0x4b7e=function(_0x21d68e,_0x9ffbb8){_0x21d68e=_0x21d68e-0x0;var _0x50a7da=_0xb7e4[_0x21d68e];return _0x50a7da;};'use strict';var EventEmitter=require(_0x4b7e('0x0'));var FaxInteraction=require(_0x4b7e('0x1'))['db'][_0x4b7e('0x2')];var FaxMessage=require('../../mysqldb')['db'][_0x4b7e('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x4b7e('0x4')](0x0);var events={'afterCreate':_0x4b7e('0x5'),'afterUpdate':_0x4b7e('0x6'),'afterDestroy':_0x4b7e('0x7')};function emitEvent(_0x5225ed){return function(_0x512221,_0x412024,_0x483204){_0x512221['getUsers']({'attributes':['id'],'raw':!![]})[_0x4b7e('0x8')](function(_0x117a05){_0x512221['setDataValue'](_0x4b7e('0x9'),_0x117a05[_0x4b7e('0xa')](function(_0x3e9cf2){return{'id':_0x3e9cf2['id']};}));return FaxMessage[_0x4b7e('0xb')]({'where':{'FaxInteractionId':_0x512221['id'],'direction':'in','read':![]},'raw':!![]});})[_0x4b7e('0x8')](function(_0x220dd5){_0x512221[_0x4b7e('0xc')]('unreadMessages',_0x220dd5[_0x4b7e('0xd')]);FaxInteractionEvents[_0x4b7e('0xe')](_0x5225ed+':'+_0x512221['id'],_0x512221);FaxInteractionEvents['emit'](_0x5225ed,_0x512221);_0x483204(null);})[_0x4b7e('0xf')](_0x483204(null));};}for(var e in events){if(events[_0x4b7e('0x10')](e)){var event=events[e];FaxInteraction[_0x4b7e('0x11')](e,emitEvent(event));}}module['exports']=FaxInteractionEvents;
\ No newline at end of file
+var _0x336e=['FaxInteraction','save','remove','getUsers','then','map','findAll','setDataValue','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x40abfd,_0x19b6af){var _0x59c6aa=function(_0x444770){while(--_0x444770){_0x40abfd['push'](_0x40abfd['shift']());}};_0x59c6aa(++_0x19b6af);}(_0x336e,0x1ed));var _0xe336=function(_0x39096d,_0x51f8a0){_0x39096d=_0x39096d-0x0;var _0x13da4f=_0x336e[_0x39096d];return _0x13da4f;};'use strict';var EventEmitter=require(_0xe336('0x0'));var FaxInteraction=require(_0xe336('0x1'))['db'][_0xe336('0x2')];var FaxMessage=require(_0xe336('0x1'))['db']['FaxMessage'];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe336('0x3'),'afterUpdate':'update','afterDestroy':_0xe336('0x4')};function emitEvent(_0x193b75){return function(_0x196ecc,_0xd8c77c,_0xc67d6f){_0x196ecc[_0xe336('0x5')]({'attributes':['id'],'raw':!![]})[_0xe336('0x6')](function(_0x27f340){_0x196ecc['setDataValue']('Users',_0x27f340[_0xe336('0x7')](function(_0x57c09f){return{'id':_0x57c09f['id']};}));return FaxMessage[_0xe336('0x8')]({'where':{'FaxInteractionId':_0x196ecc['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe336('0x6')](function(_0x23741c){_0x196ecc[_0xe336('0x9')]('unreadMessages',_0x23741c['length']);FaxInteractionEvents[_0xe336('0xa')](_0x193b75+':'+_0x196ecc['id'],_0x196ecc);FaxInteractionEvents[_0xe336('0xa')](_0x193b75,_0x196ecc);_0xc67d6f(null);})[_0xe336('0xb')](_0xc67d6f(null));};}for(var e in events){if(events[_0xe336('0xc')](e)){var event=events[e];FaxInteraction[_0xe336('0xd')](e,emitEvent(event));}}module[_0xe336('0xe')]=FaxInteractionEvents;
\ No newline at end of file
index edc8032..646b0f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1279=['exports','define','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./faxInteraction.attributes'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1279,0x1b9));var _0x9127=function(_0xa68dfe,_0x49e7a7){_0xa68dfe=_0xa68dfe-0x0;var _0x121ca0=_0x1279[_0xa68dfe];return _0x121ca0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9127('0x0'))(_0x9127('0x1'));var moment=require('moment');var BPromise=require(_0x9127('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9127('0x3'));var rimraf=require(_0x9127('0x4'));var config=require(_0x9127('0x5'));var attributes=require(_0x9127('0x6'));module[_0x9127('0x7')]=function(_0x5eb983,_0x3e9e12){return _0x5eb983[_0x9127('0x8')]('FaxInteraction',attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4be4e9,_0x23f7b0,_0x403f04){if(_0x4be4e9[_0x9127('0x9')](_0x9127('0xa'))){_0x4be4e9[_0x9127('0xb')]=moment()[_0x9127('0xc')](_0x9127('0xd'));}_0x403f04(null,_0x4be4e9);}}});};
\ No newline at end of file
+var _0x3ab0=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','FaxInteraction','fax_interactions','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment'];(function(_0x128e36,_0x33e657){var _0x19a65e=function(_0x1761fc){while(--_0x1761fc){_0x128e36['push'](_0x128e36['shift']());}};_0x19a65e(++_0x33e657);}(_0x3ab0,0xb6));var _0x03ab=function(_0x3baf99,_0x43034b){_0x3baf99=_0x3baf99-0x0;var _0x51acc5=_0x3ab0[_0x3baf99];return _0x51acc5;};'use strict';var _=require(_0x03ab('0x0'));var util=require(_0x03ab('0x1'));var logger=require(_0x03ab('0x2'))(_0x03ab('0x3'));var moment=require(_0x03ab('0x4'));var BPromise=require(_0x03ab('0x5'));var rp=require(_0x03ab('0x6'));var fs=require('fs');var path=require(_0x03ab('0x7'));var rimraf=require(_0x03ab('0x8'));var config=require(_0x03ab('0x9'));var attributes=require('./faxInteraction.attributes');module[_0x03ab('0xa')]=function(_0x24e6fb,_0x367129){return _0x24e6fb[_0x03ab('0xb')](_0x03ab('0xc'),attributes,{'tableName':_0x03ab('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x12492b,_0x83f969,_0x1866ee){if(_0x12492b['changed']('closed')){_0x12492b[_0x03ab('0xe')]=moment()[_0x03ab('0xf')](_0x03ab('0x10'));}_0x1866ee(null,_0x12492b);}}});};
\ No newline at end of file
index d418bc0..4816c36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03db=['../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','./faxInteraction.socket','request','then','info','FaxInteraction,\x20%s,\x20%s','FaxInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','FaxInteraction','update','options','raw','attributes','limit','UpdateFaxInteraction','debug','find','where','addTags','body','ids','spread','AddTags','util','bluebird','ioredis','../../mysqldb'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x03db,0x10d));var _0xb03d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x03db[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xb03d('0x0'));var moment=require('moment');var BPromise=require(_0xb03d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb03d('0x2'));var db=require(_0xb03d('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xb03d('0x4'))(_0xb03d('0x5'));var config=require(_0xb03d('0x6'));var jayson=require(_0xb03d('0x7'));var client=jayson[_0xb03d('0x8')]['http']({'port':0x232a});config[_0xb03d('0x9')]=_['defaults'](config[_0xb03d('0x9')],{'host':_0xb03d('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb03d('0x9')]));require(_0xb03d('0xb'))['register'](socket);function respondWithRpcPromise(_0x4a8d65,_0x4b401,_0x4c0d26){return new BPromise(function(_0x3246e6,_0x371c9c){return client[_0xb03d('0xc')](_0x4a8d65,_0x4c0d26)[_0xb03d('0xd')](function(_0x342481){logger[_0xb03d('0xe')](_0xb03d('0xf'),_0x4b401,'request\x20sent');logger['debug'](_0xb03d('0x10'),_0x4b401,_0xb03d('0x11'),JSON[_0xb03d('0x12')](_0x342481));if(_0x342481[_0xb03d('0x13')]){if(_0x342481['error'][_0xb03d('0x14')]===0x1f4){logger[_0xb03d('0x13')](_0xb03d('0xf'),_0x4b401,_0x342481['error'][_0xb03d('0x15')]);return _0x371c9c(_0x342481[_0xb03d('0x13')][_0xb03d('0x15')]);}logger[_0xb03d('0x13')](_0xb03d('0xf'),_0x4b401,_0x342481[_0xb03d('0x13')][_0xb03d('0x15')]);return _0x3246e6(_0x342481['error'][_0xb03d('0x15')]);}else{logger[_0xb03d('0xe')](_0xb03d('0xf'),_0x4b401,'request\x20sent');_0x3246e6(_0x342481[_0xb03d('0x16')]['message']);}})[_0xb03d('0x17')](function(_0x55da73){logger[_0xb03d('0x13')](_0xb03d('0xf'),_0x4b401,_0x55da73);_0x371c9c(_0x55da73);});});}exports['UpdateFaxInteraction']=function(_0xebe2e4){var _0x5ed538=this;return new Promise(function(_0xcb2321,_0x24af89){return db[_0xb03d('0x18')][_0xb03d('0x19')](_0xebe2e4['body'],{'raw':_0xebe2e4[_0xb03d('0x1a')]?_0xebe2e4[_0xb03d('0x1a')][_0xb03d('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xebe2e4[_0xb03d('0x1a')]?_0xebe2e4[_0xb03d('0x1a')]['where']||null:null,'attributes':_0xebe2e4['options']?_0xebe2e4['options'][_0xb03d('0x1c')]||null:null,'limit':_0xebe2e4[_0xb03d('0x1a')]?_0xebe2e4[_0xb03d('0x1a')][_0xb03d('0x1d')]||null:null})[_0xb03d('0xd')](function(_0x410a0f){logger[_0xb03d('0xe')](_0xb03d('0x1e'),_0xebe2e4);logger[_0xb03d('0x1f')](_0xb03d('0x1e'),_0xebe2e4,JSON[_0xb03d('0x12')](_0x410a0f));_0xcb2321(_0x410a0f);})[_0xb03d('0x17')](function(_0x3d2213){logger[_0xb03d('0x13')](_0xb03d('0x1e'),_0x3d2213['message'],_0xebe2e4);_0x24af89(_0x5ed538[_0xb03d('0x13')](0x1f4,_0x3d2213[_0xb03d('0x15')]));});});};exports['AddTagsToFaxInteraction']=function(_0x2f6b13){return new Promise(function(_0x2b0dfb,_0x19ad5d){return db[_0xb03d('0x18')][_0xb03d('0x20')]({'where':_0x2f6b13[_0xb03d('0x1a')]?_0x2f6b13[_0xb03d('0x1a')][_0xb03d('0x21')]||null:null})[_0xb03d('0xd')](function(_0x2e09e7){if(_0x2e09e7){return _0x2e09e7[_0xb03d('0x22')](_0x2f6b13[_0xb03d('0x23')][_0xb03d('0x24')],_['omit'](_0x2f6b13[_0xb03d('0x23')],[_0xb03d('0x24'),'id'])||{});}})[_0xb03d('0x25')](function(_0x1fb271){logger[_0xb03d('0xe')]('AddTags',_0x2f6b13);logger[_0xb03d('0x1f')]('AddTags',_0x2f6b13,JSON[_0xb03d('0x12')](_0x1fb271));_0x2b0dfb(_0x1fb271);})[_0xb03d('0x17')](function(_0x31d40c){logger[_0xb03d('0x13')](_0xb03d('0x26'),_0x31d40c[_0xb03d('0x15')],_0x2f6b13);_0x19ad5d(_this['error'](0x1f4,_0x31d40c['message']));});});};
\ No newline at end of file
+var _0x1db7=['message','info','catch','UpdateFaxInteraction','FaxInteraction','update','options','raw','where','AddTagsToFaxInteraction','find','then','ids','omit','AddTags','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','defaults','localhost','socket.io-emitter','redis','register','request','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0x1db7,0x12f));var _0x71db=function(_0x4354cd,_0x37d12a){_0x4354cd=_0x4354cd-0x0;var _0x29aedc=_0x1db7[_0x4354cd];return _0x29aedc;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x71db('0x0'));var rs=require(_0x71db('0x1'));var fs=require('fs');var Redis=require(_0x71db('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x71db('0x3'));var logger=require(_0x71db('0x4'))(_0x71db('0x5'));var config=require(_0x71db('0x6'));var jayson=require(_0x71db('0x7'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x71db('0x8')](config['redis'],{'host':_0x71db('0x9'),'port':0x18eb});var socket=require(_0x71db('0xa'))(new Redis(config[_0x71db('0xb')]));require('./faxInteraction.socket')[_0x71db('0xc')](socket);function respondWithRpcPromise(_0x4c2a9c,_0x1d41fc,_0x29ade9){return new BPromise(function(_0xec3851,_0x115581){return client[_0x71db('0xd')](_0x4c2a9c,_0x29ade9)['then'](function(_0x50d552){logger['info'](_0x71db('0xe'),_0x1d41fc,_0x71db('0xf'));logger[_0x71db('0x10')](_0x71db('0x11'),_0x1d41fc,_0x71db('0xf'),JSON[_0x71db('0x12')](_0x50d552));if(_0x50d552[_0x71db('0x13')]){if(_0x50d552['error'][_0x71db('0x14')]===0x1f4){logger[_0x71db('0x13')]('FaxInteraction,\x20%s,\x20%s',_0x1d41fc,_0x50d552['error']['message']);return _0x115581(_0x50d552['error'][_0x71db('0x15')]);}logger[_0x71db('0x13')](_0x71db('0xe'),_0x1d41fc,_0x50d552[_0x71db('0x13')]['message']);return _0xec3851(_0x50d552[_0x71db('0x13')]['message']);}else{logger[_0x71db('0x16')](_0x71db('0xe'),_0x1d41fc,'request\x20sent');_0xec3851(_0x50d552['result'][_0x71db('0x15')]);}})[_0x71db('0x17')](function(_0x465149){logger['error']('FaxInteraction,\x20%s,\x20%s',_0x1d41fc,_0x465149);_0x115581(_0x465149);});});}exports[_0x71db('0x18')]=function(_0x46fe17){var _0x3f8e69=this;return new Promise(function(_0x144f8c,_0x4be05a){return db[_0x71db('0x19')][_0x71db('0x1a')](_0x46fe17['body'],{'raw':_0x46fe17[_0x71db('0x1b')]?_0x46fe17[_0x71db('0x1b')][_0x71db('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x46fe17[_0x71db('0x1b')]?_0x46fe17[_0x71db('0x1b')][_0x71db('0x1d')]||null:null,'attributes':_0x46fe17[_0x71db('0x1b')]?_0x46fe17[_0x71db('0x1b')]['attributes']||null:null,'limit':_0x46fe17[_0x71db('0x1b')]?_0x46fe17[_0x71db('0x1b')]['limit']||null:null})['then'](function(_0x3f60d3){logger['info'](_0x71db('0x18'),_0x46fe17);logger[_0x71db('0x10')](_0x71db('0x18'),_0x46fe17,JSON[_0x71db('0x12')](_0x3f60d3));_0x144f8c(_0x3f60d3);})[_0x71db('0x17')](function(_0xb1f0a2){logger[_0x71db('0x13')]('UpdateFaxInteraction',_0xb1f0a2[_0x71db('0x15')],_0x46fe17);_0x4be05a(_0x3f8e69[_0x71db('0x13')](0x1f4,_0xb1f0a2[_0x71db('0x15')]));});});};exports[_0x71db('0x1e')]=function(_0xd1dea4){return new Promise(function(_0x14d96a,_0x2b1ced){return db[_0x71db('0x19')][_0x71db('0x1f')]({'where':_0xd1dea4[_0x71db('0x1b')]?_0xd1dea4[_0x71db('0x1b')][_0x71db('0x1d')]||null:null})[_0x71db('0x20')](function(_0x33bc62){if(_0x33bc62){return _0x33bc62['addTags'](_0xd1dea4['body'][_0x71db('0x21')],_[_0x71db('0x22')](_0xd1dea4['body'],['ids','id'])||{});}})['spread'](function(_0x2c9800){logger[_0x71db('0x16')](_0x71db('0x23'),_0xd1dea4);logger[_0x71db('0x10')](_0x71db('0x23'),_0xd1dea4,JSON[_0x71db('0x12')](_0x2c9800));_0x14d96a(_0x2c9800);})[_0x71db('0x17')](function(_0x5c3a5e){logger[_0x71db('0x13')]('AddTags',_0x5c3a5e[_0x71db('0x15')],_0xd1dea4);_0x2b1ced(_this[_0x71db('0x13')](0x1f4,_0x5c3a5e[_0x71db('0x15')]));});});};
\ No newline at end of file
index 86df631..e77eac4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6f7=['removeListener','register','length','faxInteraction:','./faxInteraction.events','remove','update','emit'];(function(_0x38826e,_0x27ba43){var _0x4b7c14=function(_0x27e02c){while(--_0x27e02c){_0x38826e['push'](_0x38826e['shift']());}};_0x4b7c14(++_0x27ba43);}(_0xf6f7,0xcc));var _0x7f6f=function(_0x1778e1,_0x3e1727){_0x1778e1=_0x1778e1-0x0;var _0x2bc4c6=_0xf6f7[_0x1778e1];return _0x2bc4c6;};'use strict';var FaxInteractionEvents=require(_0x7f6f('0x0'));var events=['save',_0x7f6f('0x1'),_0x7f6f('0x2')];function createListener(_0x5cf237,_0x3a71e7){return function(_0x3d11e9){_0x3a71e7[_0x7f6f('0x3')](_0x5cf237,_0x3d11e9);};}function removeListener(_0x42c366,_0x134d58){return function(){FaxInteractionEvents[_0x7f6f('0x4')](_0x42c366,_0x134d58);};}exports[_0x7f6f('0x5')]=function(_0x1ddecf){for(var _0xefbc6b=0x0,_0x8ca3d8=events[_0x7f6f('0x6')];_0xefbc6b<_0x8ca3d8;_0xefbc6b++){var _0x5b8508=events[_0xefbc6b];var _0x59c940=createListener(_0x7f6f('0x7')+_0x5b8508,_0x1ddecf);FaxInteractionEvents['on'](_0x5b8508,_0x59c940);}};
\ No newline at end of file
+var _0x8df6=['./faxInteraction.events','save','remove','update','emit','removeListener','register','length','faxInteraction:'];(function(_0x565438,_0x52f592){var _0x2f3809=function(_0x59404a){while(--_0x59404a){_0x565438['push'](_0x565438['shift']());}};_0x2f3809(++_0x52f592);}(_0x8df6,0x15f));var _0x68df=function(_0x15cee7,_0x2019fa){_0x15cee7=_0x15cee7-0x0;var _0x1da8ab=_0x8df6[_0x15cee7];return _0x1da8ab;};'use strict';var FaxInteractionEvents=require(_0x68df('0x0'));var events=[_0x68df('0x1'),_0x68df('0x2'),_0x68df('0x3')];function createListener(_0xe713e1,_0x390a24){return function(_0x300a3f){_0x390a24[_0x68df('0x4')](_0xe713e1,_0x300a3f);};}function removeListener(_0xb59c44,_0x5466b6){return function(){FaxInteractionEvents[_0x68df('0x5')](_0xb59c44,_0x5466b6);};}exports[_0x68df('0x6')]=function(_0x5cf360){for(var _0xdfa478=0x0,_0x276173=events[_0x68df('0x7')];_0xdfa478<_0x276173;_0xdfa478++){var _0x248dc2=events[_0xdfa478];var _0x50042f=createListener(_0x68df('0x8')+_0x248dc2,_0x5cf360);FaxInteractionEvents['on'](_0x248dc2,_0x50042f);}};
\ No newline at end of file
index be325d8..eee6021 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b90=['put','tracked','faxinteraction:update','delete','faxinteraction:destroy','destroy','removeTags','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','index','get','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','download','post','create','/:id/tags','fax','faxinteraction:addtags','addTags'];(function(_0x3477a5,_0x1a7a0f){var _0x297a55=function(_0x1d5e5f){while(--_0x1d5e5f){_0x3477a5['push'](_0x3477a5['shift']());}};_0x297a55(++_0x1a7a0f);}(_0x3b90,0xb6));var _0x03b9=function(_0x9d639c,_0x524dbe){_0x9d639c=_0x9d639c-0x0;var _0x1671de=_0x3b90[_0x9d639c];return _0x1671de;};'use strict';var multer=require(_0x03b9('0x0'));var util=require('util');var path=require(_0x03b9('0x1'));var timeout=require('connect-timeout');var express=require(_0x03b9('0x2'));var router=express[_0x03b9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x03b9('0x4'));var interaction=require(_0x03b9('0x5'));var config=require('../../config/environment');var controller=require('./faxInteraction.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x03b9('0x6')]);router[_0x03b9('0x7')]('/describe',auth[_0x03b9('0x8')](),controller[_0x03b9('0x9')]);router[_0x03b9('0x7')](_0x03b9('0xa'),auth[_0x03b9('0x8')](),controller[_0x03b9('0xb')]);router[_0x03b9('0x7')](_0x03b9('0xc'),auth[_0x03b9('0x8')](),controller[_0x03b9('0xd')]);router[_0x03b9('0x7')]('/:id/download',auth[_0x03b9('0x8')](),controller[_0x03b9('0xe')]);router[_0x03b9('0xf')]('/',auth[_0x03b9('0x8')](),controller[_0x03b9('0x10')]);router['post']('/:id/messages',auth[_0x03b9('0x8')](),controller['addMessage']);router[_0x03b9('0xf')](_0x03b9('0x11'),auth[_0x03b9('0x8')](),interaction['tracked'](_0x03b9('0x12'),_0x03b9('0x13')),controller[_0x03b9('0x14')]);router[_0x03b9('0x15')](_0x03b9('0xa'),auth[_0x03b9('0x8')](),interaction[_0x03b9('0x16')](_0x03b9('0x12'),_0x03b9('0x17')),controller['update']);router[_0x03b9('0x18')](_0x03b9('0xa'),auth[_0x03b9('0x8')](),interaction[_0x03b9('0x16')](_0x03b9('0x12'),_0x03b9('0x19')),controller[_0x03b9('0x1a')]);router[_0x03b9('0x18')](_0x03b9('0x11'),auth[_0x03b9('0x8')](),controller[_0x03b9('0x1b')]);module[_0x03b9('0x1c')]=router;
\ No newline at end of file
+var _0xc737=['removeTags','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','show','/:id/messages','download','post','create','addMessage','/:id/tags','fax','faxinteraction:addtags','/:id','faxinteraction:update','update','delete'];(function(_0x26f7df,_0x473491){var _0x76cae=function(_0x42c882){while(--_0x42c882){_0x26f7df['push'](_0x26f7df['shift']());}};_0x76cae(++_0x473491);}(_0xc737,0x8e));var _0x7c73=function(_0x59c478,_0x51f9ca){_0x59c478=_0x59c478-0x0;var _0x3727ce=_0xc737[_0x59c478];return _0x3727ce;};'use strict';var multer=require(_0x7c73('0x0'));var util=require(_0x7c73('0x1'));var path=require('path');var timeout=require(_0x7c73('0x2'));var express=require(_0x7c73('0x3'));var router=express[_0x7c73('0x4')]();var fs_extra=require(_0x7c73('0x5'));var auth=require(_0x7c73('0x6'));var interaction=require(_0x7c73('0x7'));var config=require(_0x7c73('0x8'));var controller=require('./faxInteraction.controller');router['get']('/',auth[_0x7c73('0x9')](),controller[_0x7c73('0xa')]);router[_0x7c73('0xb')](_0x7c73('0xc'),auth['isAuthenticated'](),controller['describe']);router['get']('/:id',auth['isAuthenticated'](),controller[_0x7c73('0xd')]);router[_0x7c73('0xb')](_0x7c73('0xe'),auth[_0x7c73('0x9')](),controller['getMessages']);router[_0x7c73('0xb')]('/:id/download',auth[_0x7c73('0x9')](),controller[_0x7c73('0xf')]);router[_0x7c73('0x10')]('/',auth['isAuthenticated'](),controller[_0x7c73('0x11')]);router[_0x7c73('0x10')](_0x7c73('0xe'),auth[_0x7c73('0x9')](),controller[_0x7c73('0x12')]);router[_0x7c73('0x10')](_0x7c73('0x13'),auth[_0x7c73('0x9')](),interaction['tracked'](_0x7c73('0x14'),_0x7c73('0x15')),controller['addTags']);router['put'](_0x7c73('0x16'),auth[_0x7c73('0x9')](),interaction['tracked'](_0x7c73('0x14'),_0x7c73('0x17')),controller[_0x7c73('0x18')]);router[_0x7c73('0x19')]('/:id',auth[_0x7c73('0x9')](),interaction['tracked'](_0x7c73('0x14'),'faxinteraction:destroy'),controller['destroy']);router[_0x7c73('0x19')](_0x7c73('0x13'),auth[_0x7c73('0x9')](),controller[_0x7c73('0x1a')]);module[_0x7c73('0x1b')]=router;
\ No newline at end of file
index 14291fa..4268060 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf725=['TEXT','medium','BOOLEAN','ENUM','out','DATE','sequelize','exports'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xf725,0x7e));var _0x5f72=function(_0xc8b960,_0x202bd9){_0xc8b960=_0xc8b960-0x0;var _0x5df3f8=_0xf725[_0xc8b960];return _0x5df3f8;};'use strict';var Sequelize=require(_0x5f72('0x0'));module[_0x5f72('0x1')]={'body':{'type':Sequelize[_0x5f72('0x2')](_0x5f72('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x5f72('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x5f72('0x5')]('in',_0x5f72('0x6')),'defaultValue':_0x5f72('0x6'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x5f72('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0x5f72('0x7')]}};
\ No newline at end of file
+var _0xed95=['DATE','sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x581871,_0xff4ab2){var _0x36e73c=function(_0x442f2d){while(--_0x442f2d){_0x581871['push'](_0x581871['shift']());}};_0x36e73c(++_0xff4ab2);}(_0xed95,0xb9));var _0x5ed9=function(_0x2edbfb,_0x4b1513){_0x2edbfb=_0x2edbfb-0x0;var _0x5333c0=_0xed95[_0x2edbfb];return _0x5333c0;};'use strict';var Sequelize=require(_0x5ed9('0x0'));module[_0x5ed9('0x1')]={'body':{'type':Sequelize[_0x5ed9('0x2')](_0x5ed9('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x5ed9('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x5ed9('0x5')]('in',_0x5ed9('0x6')),'defaultValue':_0x5ed9('0x6'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x5ed9('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0x5ed9('0x7')]}};
\ No newline at end of file
index 1d93790..7ad4953 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa175=['read','format','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','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','email','internal','interface','SIP/%s','channel','EventManager','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','User','fullname','rejectmessage','create','Attachment','findOne','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','root','attachments','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','redis','localhost','socket.io-emitter','./faxMessage.socket','register','jayson/promise','client','http','request','then','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','FaxMessage,\x20%s,\x20%s','message','info','result','catch','json','offset','undefined','limit','count','status','set','apply','reject','save','update','destroy','end','sendStatus','stack','name','index','map','FaxMessage','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','keys','rawAttributes','include','find','body','describe','fax-interactions','accept','fax'];(function(_0x580d0e,_0x1e5f43){var _0xb51111=function(_0x4718e7){while(--_0x4718e7){_0x580d0e['push'](_0x580d0e['shift']());}};_0xb51111(++_0x1e5f43);}(_0xa175,0x148));var _0x5a17=function(_0x52aea8,_0x1c47df){_0x52aea8=_0x52aea8-0x0;var _0x50c070=_0xa175[_0x52aea8];return _0x50c070;};'use strict';var emlformat=require(_0x5a17('0x0'));var rimraf=require(_0x5a17('0x1'));var zipdir=require(_0x5a17('0x2'));var jsonpatch=require(_0x5a17('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5a17('0x4'));var Mustache=require(_0x5a17('0x5'));var util=require(_0x5a17('0x6'));var path=require('path');var sox=require(_0x5a17('0x7'));var csv=require(_0x5a17('0x8'));var ejs=require(_0x5a17('0x9'));var fs=require('fs');var fs_extra=require(_0x5a17('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x5a17('0xb'));var jsforce=require(_0x5a17('0xc'));var deskjs=require(_0x5a17('0xd'));var toCsv=require('to-csv');var querystring=require(_0x5a17('0xe'));var Papa=require(_0x5a17('0xf'));var Redis=require(_0x5a17('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x5a17('0x11'));var as=require(_0x5a17('0x12'));var hardwareService=require(_0x5a17('0x13'));var logger=require(_0x5a17('0x14'))('api');var utils=require(_0x5a17('0x15'));var config=require(_0x5a17('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x5a17('0x17')]=_['defaults'](config[_0x5a17('0x17')],{'host':_0x5a17('0x18'),'port':0x18eb});var socket=require(_0x5a17('0x19'))(new Redis(config['redis']));require(_0x5a17('0x1a'))[_0x5a17('0x1b')](socket);var jayson=require(_0x5a17('0x1c'));var client=jayson[_0x5a17('0x1d')][_0x5a17('0x1e')]({'port':0x232c});var client9002=jayson[_0x5a17('0x1d')][_0x5a17('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0xd0b756,_0x34bb9b,_0x9c690d,_0x4361b8){return new BPromise(function(_0x547011,_0x37ccd2){var _0x49699b=_0x4361b8||client;return _0x49699b[_0x5a17('0x1f')](_0xd0b756,_0x9c690d)[_0x5a17('0x20')](function(_0x26af3e){logger['info']('FaxMessage,\x20%s,\x20%s',_0x34bb9b,_0x5a17('0x21'));logger[_0x5a17('0x22')](_0x5a17('0x23'),_0x34bb9b,_0x5a17('0x21'),JSON[_0x5a17('0x24')](_0x26af3e));if(_0x26af3e['error']){if(_0x26af3e[_0x5a17('0x25')]['code']===0x1f4){logger[_0x5a17('0x25')](_0x5a17('0x26'),_0x34bb9b,_0x26af3e['error'][_0x5a17('0x27')]);return _0x37ccd2(_0x26af3e['error']['message']);}logger['error'](_0x5a17('0x26'),_0x34bb9b,_0x26af3e['error'][_0x5a17('0x27')]);return _0x547011(_0x26af3e[_0x5a17('0x25')][_0x5a17('0x27')]);}else{logger[_0x5a17('0x28')](_0x5a17('0x26'),_0x34bb9b,_0x5a17('0x21'));_0x547011(_0x26af3e[_0x5a17('0x29')][_0x5a17('0x27')]);}})[_0x5a17('0x2a')](function(_0x38df26){logger[_0x5a17('0x25')]('FaxMessage,\x20%s,\x20%s',_0x34bb9b,_0x38df26);_0x37ccd2(_0x38df26);});});}function respondWithStatusCode(_0x13504e,_0xb60878){_0xb60878=_0xb60878||0xcc;return function(_0x2392ae){if(_0x2392ae){return _0x13504e['sendStatus'](_0xb60878);}return _0x13504e['status'](_0xb60878)['end']();};}function respondWithResult(_0x5c4918,_0x3c0814){_0x3c0814=_0x3c0814||0xc8;return function(_0xd3276b){if(_0xd3276b){return _0x5c4918['status'](_0x3c0814)[_0x5a17('0x2b')](_0xd3276b);}};}function respondWithFilteredResult(_0x58c968,_0x28dfe3){return function(_0x2c039c){if(_0x2c039c){var _0x532e83=typeof _0x28dfe3[_0x5a17('0x2c')]===_0x5a17('0x2d')&&typeof _0x28dfe3[_0x5a17('0x2e')]==='undefined';var _0x1dce8c=_0x2c039c[_0x5a17('0x2f')];var _0x38a98=_0x532e83?0x0:_0x28dfe3['offset'];var _0x2eb44a=_0x532e83?_0x2c039c[_0x5a17('0x2f')]:_0x28dfe3[_0x5a17('0x2c')]+_0x28dfe3[_0x5a17('0x2e')];var _0x154c9a;if(_0x2eb44a>=_0x1dce8c){_0x2eb44a=_0x1dce8c;_0x154c9a=0xc8;}else{_0x154c9a=0xce;}_0x58c968[_0x5a17('0x30')](_0x154c9a);return _0x58c968[_0x5a17('0x31')]('Content-Range',_0x38a98+'-'+_0x2eb44a+'/'+_0x1dce8c)[_0x5a17('0x2b')](_0x2c039c);}return null;};}function patchUpdates(_0x3465b3){return function(_0x58a446){try{jsonpatch[_0x5a17('0x32')](_0x58a446,_0x3465b3,!![]);}catch(_0x4ed564){return BPromise[_0x5a17('0x33')](_0x4ed564);}return _0x58a446[_0x5a17('0x34')]();};}function saveUpdates(_0x43b3e7,_0x36f95c){return function(_0x2b68cb){if(_0x2b68cb){return _0x2b68cb[_0x5a17('0x35')](_0x43b3e7)[_0x5a17('0x20')](function(_0x152ff3){return _0x152ff3;});}return null;};}function removeEntity(_0xf948bb,_0x4df583){return function(_0xc294ad){if(_0xc294ad){return _0xc294ad[_0x5a17('0x36')]()[_0x5a17('0x20')](function(){_0xf948bb[_0x5a17('0x30')](0xcc)[_0x5a17('0x37')]();});}};}function handleEntityNotFound(_0x16a0ec,_0x1d531f){return function(_0x12a464){if(!_0x12a464){_0x16a0ec[_0x5a17('0x38')](0x194);}return _0x12a464;};}function handleError(_0xedbdc2,_0x2c69b1){_0x2c69b1=_0x2c69b1||0x1f4;return function(_0x5055a3){logger[_0x5a17('0x25')](_0x5055a3[_0x5a17('0x39')]);if(_0x5055a3[_0x5a17('0x3a')]){delete _0x5055a3[_0x5a17('0x3a')];}_0xedbdc2[_0x5a17('0x30')](_0x2c69b1)['send'](_0x5055a3);};}exports[_0x5a17('0x3b')]=function(_0x5a6923,_0x276325){var _0x25bf4e={},_0x1e530b={},_0x3ab724={'count':0x0,'rows':[]};var _0x5633c3=_[_0x5a17('0x3c')](db[_0x5a17('0x3d')]['rawAttributes'],function(_0x21e7b7){return{'name':_0x21e7b7[_0x5a17('0x3e')],'type':_0x21e7b7[_0x5a17('0x3f')][_0x5a17('0x40')]};});_0x1e530b[_0x5a17('0x41')]=_[_0x5a17('0x3c')](_0x5633c3,_0x5a17('0x3a'));_0x1e530b[_0x5a17('0x42')]=_['keys'](_0x5a6923[_0x5a17('0x42')]);_0x1e530b[_0x5a17('0x43')]=_[_0x5a17('0x44')](_0x1e530b['model'],_0x1e530b[_0x5a17('0x42')]);_0x25bf4e[_0x5a17('0x45')]=_[_0x5a17('0x44')](_0x1e530b[_0x5a17('0x41')],qs[_0x5a17('0x46')](_0x5a6923[_0x5a17('0x42')][_0x5a17('0x46')]));_0x25bf4e['attributes']=_0x25bf4e[_0x5a17('0x45')][_0x5a17('0x47')]?_0x25bf4e[_0x5a17('0x45')]:_0x1e530b[_0x5a17('0x41')];if(!_0x5a6923['query'][_0x5a17('0x48')]('nolimit')){_0x25bf4e[_0x5a17('0x2e')]=qs[_0x5a17('0x2e')](_0x5a6923[_0x5a17('0x42')][_0x5a17('0x2e')]);_0x25bf4e['offset']=qs[_0x5a17('0x2c')](_0x5a6923[_0x5a17('0x42')][_0x5a17('0x2c')]);}_0x25bf4e[_0x5a17('0x49')]=qs[_0x5a17('0x4a')](_0x5a6923['query'][_0x5a17('0x4a')]);_0x25bf4e[_0x5a17('0x4b')]=qs[_0x5a17('0x43')](_[_0x5a17('0x4c')](_0x5a6923['query'],_0x1e530b[_0x5a17('0x43')]),_0x5633c3);if(_0x5a6923[_0x5a17('0x42')][_0x5a17('0x4d')]){_0x25bf4e[_0x5a17('0x4b')]=_[_0x5a17('0x4e')](_0x25bf4e[_0x5a17('0x4b')],{'$or':_[_0x5a17('0x3c')](_0x5633c3,function(_0xb75d4e){if(_0xb75d4e[_0x5a17('0x3f')]!==_0x5a17('0x4f')){var _0xa9d199={};_0xa9d199[_0xb75d4e[_0x5a17('0x3a')]]={'$like':'%'+_0x5a6923['query']['filter']+'%'};return _0xa9d199;}})});}_0x25bf4e=_[_0x5a17('0x4e')]({},_0x25bf4e,_0x5a6923[_0x5a17('0x50')]);var _0x394e80={'where':_0x25bf4e[_0x5a17('0x4b')]};return db[_0x5a17('0x3d')][_0x5a17('0x2f')](_0x394e80)[_0x5a17('0x20')](function(_0x1d6305){_0x3ab724['count']=_0x1d6305;if(_0x5a6923['query'][_0x5a17('0x51')]){_0x25bf4e['include']=[{'all':!![]}];}return db[_0x5a17('0x3d')][_0x5a17('0x52')](_0x25bf4e);})[_0x5a17('0x20')](function(_0x3f7c3a){_0x3ab724[_0x5a17('0x53')]=_0x3f7c3a;return _0x3ab724;})['then'](respondWithFilteredResult(_0x276325,_0x25bf4e))[_0x5a17('0x2a')](handleError(_0x276325,null));};exports[_0x5a17('0x54')]=function(_0x50d825,_0x165acf){var _0x1d5976={'raw':!![],'where':{'id':_0x50d825[_0x5a17('0x55')]['id']}},_0x2066cf={};_0x2066cf['model']=_[_0x5a17('0x56')](db['FaxMessage'][_0x5a17('0x57')]);_0x2066cf[_0x5a17('0x42')]=_['keys'](_0x50d825['query']);_0x2066cf[_0x5a17('0x43')]=_[_0x5a17('0x44')](_0x2066cf['model'],_0x2066cf[_0x5a17('0x42')]);_0x1d5976[_0x5a17('0x45')]=_['intersection'](_0x2066cf[_0x5a17('0x41')],qs[_0x5a17('0x46')](_0x50d825['query']['fields']));_0x1d5976[_0x5a17('0x45')]=_0x1d5976[_0x5a17('0x45')][_0x5a17('0x47')]?_0x1d5976[_0x5a17('0x45')]:_0x2066cf[_0x5a17('0x41')];if(_0x50d825[_0x5a17('0x42')][_0x5a17('0x51')]){_0x1d5976[_0x5a17('0x58')]=[{'all':!![]}];}_0x1d5976=_[_0x5a17('0x4e')]({},_0x1d5976,_0x50d825[_0x5a17('0x50')]);return db['FaxMessage'][_0x5a17('0x59')](_0x1d5976)['then'](handleEntityNotFound(_0x165acf,null))[_0x5a17('0x20')](respondWithResult(_0x165acf,null))[_0x5a17('0x2a')](handleError(_0x165acf,null));};exports[_0x5a17('0x35')]=function(_0x128124,_0x1b47ed){if(_0x128124['body']['id']){delete _0x128124[_0x5a17('0x5a')]['id'];}return db[_0x5a17('0x3d')]['find']({'where':{'id':_0x128124[_0x5a17('0x55')]['id']}})[_0x5a17('0x20')](handleEntityNotFound(_0x1b47ed,null))['then'](saveUpdates(_0x128124[_0x5a17('0x5a')],null))[_0x5a17('0x20')](respondWithResult(_0x1b47ed,null))['catch'](handleError(_0x1b47ed,null));};exports[_0x5a17('0x36')]=function(_0x14376e,_0x17b639){return db[_0x5a17('0x3d')][_0x5a17('0x59')]({'where':{'id':_0x14376e[_0x5a17('0x55')]['id']}})[_0x5a17('0x20')](handleEntityNotFound(_0x17b639,null))['then'](removeEntity(_0x17b639,null))['catch'](handleError(_0x17b639,null));};exports[_0x5a17('0x5b')]=function(_0x598e30,_0x276ccb){return db[_0x5a17('0x3d')][_0x5a17('0x5b')]()[_0x5a17('0x20')](respondWithResult(_0x276ccb,null))[_0x5a17('0x2a')](handleError(_0x276ccb,null));};var interaction_log=require(_0x5a17('0x14'))(_0x5a17('0x5c'));exports[_0x5a17('0x5d')]=function(_0x32310d,_0x224116,_0x4e2156){var _0x14cbcc={'agent':{},'channel':_0x5a17('0x5e')};if(_0x32310d[_0x5a17('0x5a')]['id']){delete _0x32310d[_0x5a17('0x5a')]['id'];}_0x32310d[_0x5a17('0x5a')][_0x5a17('0x5f')]=!![];_0x32310d[_0x5a17('0x5a')]['readAt']=moment()[_0x5a17('0x60')](_0x5a17('0x61'));_0x32310d['body'][_0x5a17('0x62')]=_0x32310d['body']['UserId']||_0x32310d['user']['id'];_0x14cbcc[_0x5a17('0x63')]['id']=_0x32310d[_0x5a17('0x5a')][_0x5a17('0x62')];return db[_0x5a17('0x3d')]['find']({'where':{'id':_0x32310d[_0x5a17('0x55')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x224116,null))[_0x5a17('0x20')](saveUpdates(_0x32310d[_0x5a17('0x5a')],null))[_0x5a17('0x20')](function(_0x7a56e0){if(_0x7a56e0){_0x14cbcc[_0x5a17('0x27')]=_0x7a56e0[_0x5a17('0x64')]({'plain':!![]});return db[_0x5a17('0x65')]['find']({'where':{'id':_0x7a56e0[_0x5a17('0x66')]}});}return null;})['then'](handleEntityNotFound(_0x224116,null))[_0x5a17('0x20')](function(_0x36d418){if(_0x36d418){return _0x36d418[_0x5a17('0x35')]({'UserId':_0x32310d[_0x5a17('0x5a')][_0x5a17('0x62')],'read1stAt':_[_0x5a17('0x67')](_0x36d418[_0x5a17('0x68')])?moment()[_0x5a17('0x60')](_0x5a17('0x61')):undefined});}return null;})[_0x5a17('0x20')](function(_0x4c417a){if(_0x4c417a){_0x14cbcc[_0x5a17('0x69')]=_0x4c417a[_0x5a17('0x64')]({'plain':!![]});interaction_log[_0x5a17('0x28')](_0x5a17('0x6a'),_0x32310d[_0x5a17('0x6b')]['id'],_0x32310d['user'][_0x5a17('0x3a')],_0x32310d['user'][_0x5a17('0x6c')],_0x14cbcc['interaction']['id'],_0x32310d['body']?JSON[_0x5a17('0x24')](_0x32310d[_0x5a17('0x5a')]):_0x5a17('0x6d'));return respondWithRpcPromise(_0x5a17('0x6e'),'acceptMessage',_0x14cbcc);}return null;})[_0x5a17('0x20')](function(_0x30c330){var _0x3cd2a4=_0x5a17('0x6f')+_0x30c330[_0x5a17('0x27')]['ContactId'];return db[_0x5a17('0x70')]['query'](_0x3cd2a4,{'type':db[_0x5a17('0x71')][_0x5a17('0x72')][_0x5a17('0x73')],'raw':!![]})[_0x5a17('0x20')](function(_0x38d535){return _0x38d535;});})[_0x5a17('0x20')](function(_0x35ce4f){if(_0x35ce4f){_0x14cbcc[_0x5a17('0x27')][_0x5a17('0x74')]=_0x35ce4f[0x0];if(!_0x32310d[_0x5a17('0x5a')][_0x5a17('0x62')])return;return db['User']['find']({'where':{'id':_0x32310d[_0x5a17('0x5a')][_0x5a17('0x62')],'role':_0x5a17('0x63')},'attributes':['id','name','fullname',_0x5a17('0x75'),_0x5a17('0x76')],'raw':!![]});}return null;})[_0x5a17('0x20')](function(_0x5815db){if(!_0x5815db)return null;_0x14cbcc[_0x5a17('0x27')][_0x5a17('0x63')]=_0x5815db;return _0x14cbcc;})['then'](function(_0x20688b){if(_0x20688b){if(_0x32310d[_0x5a17('0x5a')]['manual']){_0x14cbcc[_0x5a17('0x27')][_0x5a17('0x77')]=util[_0x5a17('0x60')](_0x5a17('0x78'),_0x32310d['user'][_0x5a17('0x3a')]);_0x14cbcc[_0x5a17('0x27')][_0x5a17('0x79')]=_0x14cbcc[_0x5a17('0x79')];_0x14cbcc[_0x5a17('0x27')]['motionChannel']=_0x14cbcc[_0x5a17('0x79')];_0x14cbcc[_0x5a17('0x27')]['event']=_0x5a17('0x5d');return respondWithRpcPromise(_0x5a17('0x7a'),_0x5a17('0x7a'),{'event':'acceptmessage','message':_0x14cbcc[_0x5a17('0x27')]},client9002)[_0x5a17('0x20')](function(){return _0x14cbcc;});}return _0x14cbcc;}return null;})[_0x5a17('0x20')](respondWithResult(_0x224116,null))['catch'](handleError(_0x224116,null));};var interaction_log=require('../../config/logger')(_0x5a17('0x5c'));exports['reject']=function(_0xf5a583,_0x31152f,_0x290f98){var _0x37354d={'agent':{},'channel':_0x5a17('0x5e')};if(_0xf5a583['body']['id']){delete _0xf5a583[_0x5a17('0x5a')]['id'];}_0xf5a583[_0x5a17('0x5a')][_0x5a17('0x62')]=_0xf5a583[_0x5a17('0x5a')][_0x5a17('0x62')]||_0xf5a583[_0x5a17('0x6b')]['id'];_0x37354d[_0x5a17('0x63')]['id']=_0xf5a583[_0x5a17('0x5a')]['UserId'];return db['FaxMessage']['find']({'where':{'id':_0xf5a583['params']['id'],'UserId':null}})[_0x5a17('0x20')](handleEntityNotFound(_0x31152f,null))[_0x5a17('0x20')](function(_0x1a84fb){if(_0x1a84fb){_0x37354d[_0x5a17('0x27')]=_0x1a84fb[_0x5a17('0x64')]({'plain':!![]});return db[_0x5a17('0x65')][_0x5a17('0x59')]({'where':{'id':_0x1a84fb[_0x5a17('0x66')]}});}return null;})[_0x5a17('0x20')](handleEntityNotFound(_0x31152f,null))['then'](function(_0x795ca7){if(_0x795ca7){_0x37354d[_0x5a17('0x69')]=_0x795ca7[_0x5a17('0x64')]({'plain':!![]});interaction_log['info'](_0x5a17('0x7b'),_0xf5a583[_0x5a17('0x6b')]['id'],_0xf5a583['user'][_0x5a17('0x3a')],_0xf5a583[_0x5a17('0x6b')][_0x5a17('0x6c')],_0x37354d[_0x5a17('0x69')]['id'],_0xf5a583[_0x5a17('0x5a')]?JSON[_0x5a17('0x24')](_0xf5a583[_0x5a17('0x5a')]):_0x5a17('0x6d'));return respondWithRpcPromise(_0x5a17('0x7c'),_0x5a17('0x7d'),_0x37354d);}return null;})['then'](function(_0xcc16df){var _0x369a0f=_0x5a17('0x6f')+_0xcc16df[_0x5a17('0x27')][_0x5a17('0x7e')];return db['sequelize'][_0x5a17('0x42')](_0x369a0f,{'type':db['Sequelize'][_0x5a17('0x72')]['SELECT'],'raw':!![]})[_0x5a17('0x20')](function(_0x5a816d){return _0x5a816d;});})[_0x5a17('0x20')](function(_0x2604ae){if(_0x2604ae){_0x37354d['message']['contact']=_0x2604ae[0x0];if(!_0xf5a583[_0x5a17('0x5a')][_0x5a17('0x62')])return;return db[_0x5a17('0x7f')][_0x5a17('0x59')]({'where':{'id':_0xf5a583[_0x5a17('0x5a')][_0x5a17('0x62')],'role':'agent'},'attributes':['id','name',_0x5a17('0x80'),_0x5a17('0x75'),_0x5a17('0x76')],'raw':!![]});}return null;})['then'](function(_0x5b1c3d){if(!_0x5b1c3d)return null;_0x37354d['message'][_0x5a17('0x63')]=_0x5b1c3d;return _0x37354d;})[_0x5a17('0x20')](function(_0x7a5291){if(_0x7a5291){_0x7a5291['message'][_0x5a17('0x77')]=util['format']('SIP/%s',_0xf5a583[_0x5a17('0x6b')]['name']);_0x7a5291[_0x5a17('0x27')]['channel']=_0x37354d[_0x5a17('0x79')];_0x7a5291[_0x5a17('0x27')]['motionChannel']=_0x37354d['channel'];_0x7a5291[_0x5a17('0x27')]['event']=_0x5a17('0x33');respondWithRpcPromise('EventManager',_0x5a17('0x7a'),{'event':_0x5a17('0x81'),'message':_0x7a5291[_0x5a17('0x27')]},client9002);return _0x37354d;}return null;})[_0x5a17('0x20')](respondWithResult(_0x31152f,null))[_0x5a17('0x2a')](handleError(_0x31152f,null));};exports['create']=function(_0xb02d7b,_0x1371ab){var _0x10999d;return db['FaxMessage'][_0x5a17('0x82')](_0xb02d7b[_0x5a17('0x5a')],{})[_0x5a17('0x20')](function(_0x3d008d){_0x10999d=_0x3d008d;return db['CmContact']['findOne']({'where':{'id':_0x10999d[_0x5a17('0x7e')]}});})[_0x5a17('0x20')](function(_0x10ec35){if(_[_0x5a17('0x67')](_0x10ec35)){return;}else{_0x10999d['fax']=_0x10ec35[_0x5a17('0x5e')];return db[_0x5a17('0x83')][_0x5a17('0x84')]({'where':{'id':_0x10999d[_0x5a17('0x85')]}});}})['then'](function(_0x48baab){return respondWithRpcPromise(_0x5a17('0x86'),'SendFax',{'FaxAccountId':_[_0x5a17('0x67')](_0xb02d7b['body'])?undefined:_0xb02d7b[_0x5a17('0x5a')][_0x5a17('0x87')],'path':_[_0x5a17('0x67')](_0x48baab)?undefined:util[_0x5a17('0x60')](_0x5a17('0x88'),_0x48baab[_0x5a17('0x89')]),'fax':_[_0x5a17('0x67')](_0x10999d['fax'])?undefined:_0x10999d[_0x5a17('0x5e')],'AttachmentId':_0x10999d[_0x5a17('0x85')]},client9002);})[_0x5a17('0x20')](respondWithResult(_0x1371ab,0xc9))[_0x5a17('0x2a')](handleError(_0x1371ab,null));};exports[_0x5a17('0x8a')]=function(_0x209bd9,_0x145a12){var _0x27192b=path['join'](config[_0x5a17('0x8b')],'server','files',_0x5a17('0x8c'));return db[_0x5a17('0x3d')][_0x5a17('0x59')]({'where':{'id':_0x209bd9[_0x5a17('0x55')]['id']},'include':[{'model':db[_0x5a17('0x83')],'as':'Attachment'}]})['then'](handleEntityNotFound(_0x145a12,null))[_0x5a17('0x20')](function(_0x441112){if(_0x441112){return _0x145a12[_0x5a17('0x8a')](path['join'](_0x27192b,_0x441112[_0x5a17('0x83')][_0x5a17('0x89')]));}})[_0x5a17('0x2a')](handleError(_0x145a12,null));};
\ No newline at end of file
+var _0xcc1d=['basename','join','root','files','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','ejs','lodash','crypto','desk.js','to-csv','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','http','request','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','stack','send','map','FaxMessage','rawAttributes','fieldName','type','model','name','query','filters','intersection','fields','attributes','length','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','keys','find','catch','params','describe','fax-interactions','fax','body','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','contact','User','fullname','email','internal','interface','SIP/%s','channel','motionChannel','event','accept','EventManager','acceptmessage','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','QueryTypes','format','rejectmessage','create','findOne','Attachment','AttachmentId','FaxAccountId','/var/opt/motion2/server/files/attachments/%s'];(function(_0x2da3fe,_0x55ad2d){var _0x564b34=function(_0x1c0510){while(--_0x1c0510){_0x2da3fe['push'](_0x2da3fe['shift']());}};_0x564b34(++_0x55ad2d);}(_0xcc1d,0x89));var _0xdcc1=function(_0x5cbfad,_0x11e79b){_0x5cbfad=_0x5cbfad-0x0;var _0x1c0187=_0xcc1d[_0x5cbfad];return _0x1c0187;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdcc1('0x0'));var zipdir=require(_0xdcc1('0x1'));var jsonpatch=require(_0xdcc1('0x2'));var rp=require('request-promise');var moment=require(_0xdcc1('0x3'));var BPromise=require(_0xdcc1('0x4'));var Mustache=require('mustache');var util=require(_0xdcc1('0x5'));var path=require(_0xdcc1('0x6'));var sox=require(_0xdcc1('0x7'));var csv=require('to-csv');var ejs=require(_0xdcc1('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdcc1('0x9'));var squel=require('squel');var crypto=require(_0xdcc1('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xdcc1('0xb'));var toCsv=require(_0xdcc1('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xdcc1('0xd'));var authService=require(_0xdcc1('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdcc1('0xf'));var logger=require(_0xdcc1('0x10'))(_0xdcc1('0x11'));var utils=require(_0xdcc1('0x12'));var config=require(_0xdcc1('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xdcc1('0x14'))['db'];config[_0xdcc1('0x15')]=_[_0xdcc1('0x16')](config[_0xdcc1('0x15')],{'host':_0xdcc1('0x17'),'port':0x18eb});var socket=require(_0xdcc1('0x18'))(new Redis(config['redis']));require('./faxMessage.socket')[_0xdcc1('0x19')](socket);var jayson=require(_0xdcc1('0x1a'));var client=jayson['client'][_0xdcc1('0x1b')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x437440,_0x5d6014,_0x586da0,_0x1b17e7){return new BPromise(function(_0x308e7e,_0x30e862){var _0x233ea1=_0x1b17e7||client;return _0x233ea1[_0xdcc1('0x1c')](_0x437440,_0x586da0)['then'](function(_0x1734b1){logger['info'](_0xdcc1('0x1d'),_0x5d6014,_0xdcc1('0x1e'));logger[_0xdcc1('0x1f')]('FaxMessage,\x20%s,\x20%s,\x20%s',_0x5d6014,_0xdcc1('0x1e'),JSON[_0xdcc1('0x20')](_0x1734b1));if(_0x1734b1[_0xdcc1('0x21')]){if(_0x1734b1['error']['code']===0x1f4){logger[_0xdcc1('0x21')](_0xdcc1('0x1d'),_0x5d6014,_0x1734b1[_0xdcc1('0x21')]['message']);return _0x30e862(_0x1734b1[_0xdcc1('0x21')]['message']);}logger['error'](_0xdcc1('0x1d'),_0x5d6014,_0x1734b1[_0xdcc1('0x21')][_0xdcc1('0x22')]);return _0x308e7e(_0x1734b1[_0xdcc1('0x21')][_0xdcc1('0x22')]);}else{logger[_0xdcc1('0x23')](_0xdcc1('0x1d'),_0x5d6014,_0xdcc1('0x1e'));_0x308e7e(_0x1734b1[_0xdcc1('0x24')][_0xdcc1('0x22')]);}})['catch'](function(_0x40a0d2){logger[_0xdcc1('0x21')](_0xdcc1('0x1d'),_0x5d6014,_0x40a0d2);_0x30e862(_0x40a0d2);});});}function respondWithStatusCode(_0x31432d,_0x531c5d){_0x531c5d=_0x531c5d||0xcc;return function(_0x1fe8cc){if(_0x1fe8cc){return _0x31432d[_0xdcc1('0x25')](_0x531c5d);}return _0x31432d[_0xdcc1('0x26')](_0x531c5d)['end']();};}function respondWithResult(_0x1f4add,_0x56e336){_0x56e336=_0x56e336||0xc8;return function(_0xf6847d){if(_0xf6847d){return _0x1f4add[_0xdcc1('0x26')](_0x56e336)[_0xdcc1('0x27')](_0xf6847d);}};}function respondWithFilteredResult(_0x499649,_0x34bf8c){return function(_0x3ba01b){if(_0x3ba01b){var _0xc96f65=typeof _0x34bf8c[_0xdcc1('0x28')]===_0xdcc1('0x29')&&typeof _0x34bf8c[_0xdcc1('0x2a')]==='undefined';var _0x33ca87=_0x3ba01b[_0xdcc1('0x2b')];var _0x332ecc=_0xc96f65?0x0:_0x34bf8c['offset'];var _0x54ef54=_0xc96f65?_0x3ba01b[_0xdcc1('0x2b')]:_0x34bf8c['offset']+_0x34bf8c[_0xdcc1('0x2a')];var _0x48fbcb;if(_0x54ef54>=_0x33ca87){_0x54ef54=_0x33ca87;_0x48fbcb=0xc8;}else{_0x48fbcb=0xce;}_0x499649[_0xdcc1('0x26')](_0x48fbcb);return _0x499649[_0xdcc1('0x2c')](_0xdcc1('0x2d'),_0x332ecc+'-'+_0x54ef54+'/'+_0x33ca87)[_0xdcc1('0x27')](_0x3ba01b);}return null;};}function patchUpdates(_0x554b21){return function(_0x4b21fb){try{jsonpatch[_0xdcc1('0x2e')](_0x4b21fb,_0x554b21,!![]);}catch(_0x1f58db){return BPromise[_0xdcc1('0x2f')](_0x1f58db);}return _0x4b21fb[_0xdcc1('0x30')]();};}function saveUpdates(_0x5740e9,_0x49d9a7){return function(_0x1b1b7e){if(_0x1b1b7e){return _0x1b1b7e[_0xdcc1('0x31')](_0x5740e9)['then'](function(_0x51c1b4){return _0x51c1b4;});}return null;};}function removeEntity(_0x47466a,_0xf35b01){return function(_0x6b90f){if(_0x6b90f){return _0x6b90f[_0xdcc1('0x32')]()[_0xdcc1('0x33')](function(){_0x47466a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3e771f,_0x53adae){return function(_0x27c380){if(!_0x27c380){_0x3e771f[_0xdcc1('0x25')](0x194);}return _0x27c380;};}function handleError(_0x48742b,_0x19f047){_0x19f047=_0x19f047||0x1f4;return function(_0x353971){logger[_0xdcc1('0x21')](_0x353971[_0xdcc1('0x34')]);if(_0x353971['name']){delete _0x353971['name'];}_0x48742b[_0xdcc1('0x26')](_0x19f047)[_0xdcc1('0x35')](_0x353971);};}exports['index']=function(_0x769683,_0x3d52a3){var _0x52043e={},_0x1650cd={},_0x18f1d6={'count':0x0,'rows':[]};var _0x8ee728=_[_0xdcc1('0x36')](db[_0xdcc1('0x37')][_0xdcc1('0x38')],function(_0x59d31f){return{'name':_0x59d31f[_0xdcc1('0x39')],'type':_0x59d31f[_0xdcc1('0x3a')]['key']};});_0x1650cd[_0xdcc1('0x3b')]=_['map'](_0x8ee728,_0xdcc1('0x3c'));_0x1650cd[_0xdcc1('0x3d')]=_['keys'](_0x769683[_0xdcc1('0x3d')]);_0x1650cd[_0xdcc1('0x3e')]=_[_0xdcc1('0x3f')](_0x1650cd['model'],_0x1650cd['query']);_0x52043e['attributes']=_[_0xdcc1('0x3f')](_0x1650cd[_0xdcc1('0x3b')],qs[_0xdcc1('0x40')](_0x769683[_0xdcc1('0x3d')]['fields']));_0x52043e[_0xdcc1('0x41')]=_0x52043e[_0xdcc1('0x41')][_0xdcc1('0x42')]?_0x52043e['attributes']:_0x1650cd[_0xdcc1('0x3b')];if(!_0x769683[_0xdcc1('0x3d')]['hasOwnProperty']('nolimit')){_0x52043e['limit']=qs[_0xdcc1('0x2a')](_0x769683['query'][_0xdcc1('0x2a')]);_0x52043e['offset']=qs[_0xdcc1('0x28')](_0x769683[_0xdcc1('0x3d')][_0xdcc1('0x28')]);}_0x52043e['order']=qs[_0xdcc1('0x43')](_0x769683['query'][_0xdcc1('0x43')]);_0x52043e['where']=qs[_0xdcc1('0x3e')](_[_0xdcc1('0x44')](_0x769683[_0xdcc1('0x3d')],_0x1650cd[_0xdcc1('0x3e')]),_0x8ee728);if(_0x769683[_0xdcc1('0x3d')]['filter']){_0x52043e[_0xdcc1('0x45')]=_[_0xdcc1('0x46')](_0x52043e[_0xdcc1('0x45')],{'$or':_[_0xdcc1('0x36')](_0x8ee728,function(_0x111f9d){if(_0x111f9d[_0xdcc1('0x3a')]!==_0xdcc1('0x47')){var _0x35ad35={};_0x35ad35[_0x111f9d['name']]={'$like':'%'+_0x769683[_0xdcc1('0x3d')][_0xdcc1('0x48')]+'%'};return _0x35ad35;}})});}_0x52043e=_[_0xdcc1('0x46')]({},_0x52043e,_0x769683[_0xdcc1('0x49')]);var _0x36683f={'where':_0x52043e[_0xdcc1('0x45')]};return db[_0xdcc1('0x37')][_0xdcc1('0x2b')](_0x36683f)[_0xdcc1('0x33')](function(_0x3bffc3){_0x18f1d6[_0xdcc1('0x2b')]=_0x3bffc3;if(_0x769683[_0xdcc1('0x3d')][_0xdcc1('0x4a')]){_0x52043e[_0xdcc1('0x4b')]=[{'all':!![]}];}return db['FaxMessage'][_0xdcc1('0x4c')](_0x52043e);})[_0xdcc1('0x33')](function(_0x454fea){_0x18f1d6['rows']=_0x454fea;return _0x18f1d6;})[_0xdcc1('0x33')](respondWithFilteredResult(_0x3d52a3,_0x52043e))['catch'](handleError(_0x3d52a3,null));};exports['show']=function(_0x55eff6,_0x1b7665){var _0x44e8c4={'raw':!![],'where':{'id':_0x55eff6['params']['id']}},_0x1d9165={};_0x1d9165[_0xdcc1('0x3b')]=_['keys'](db[_0xdcc1('0x37')]['rawAttributes']);_0x1d9165[_0xdcc1('0x3d')]=_[_0xdcc1('0x4d')](_0x55eff6[_0xdcc1('0x3d')]);_0x1d9165[_0xdcc1('0x3e')]=_[_0xdcc1('0x3f')](_0x1d9165[_0xdcc1('0x3b')],_0x1d9165['query']);_0x44e8c4['attributes']=_[_0xdcc1('0x3f')](_0x1d9165[_0xdcc1('0x3b')],qs['fields'](_0x55eff6[_0xdcc1('0x3d')][_0xdcc1('0x40')]));_0x44e8c4[_0xdcc1('0x41')]=_0x44e8c4[_0xdcc1('0x41')][_0xdcc1('0x42')]?_0x44e8c4[_0xdcc1('0x41')]:_0x1d9165[_0xdcc1('0x3b')];if(_0x55eff6['query']['includeAll']){_0x44e8c4[_0xdcc1('0x4b')]=[{'all':!![]}];}_0x44e8c4=_[_0xdcc1('0x46')]({},_0x44e8c4,_0x55eff6[_0xdcc1('0x49')]);return db['FaxMessage'][_0xdcc1('0x4e')](_0x44e8c4)[_0xdcc1('0x33')](handleEntityNotFound(_0x1b7665,null))[_0xdcc1('0x33')](respondWithResult(_0x1b7665,null))[_0xdcc1('0x4f')](handleError(_0x1b7665,null));};exports[_0xdcc1('0x31')]=function(_0x5b8ae6,_0x453c8d){if(_0x5b8ae6['body']['id']){delete _0x5b8ae6['body']['id'];}return db[_0xdcc1('0x37')]['find']({'where':{'id':_0x5b8ae6[_0xdcc1('0x50')]['id']}})[_0xdcc1('0x33')](handleEntityNotFound(_0x453c8d,null))['then'](saveUpdates(_0x5b8ae6['body'],null))[_0xdcc1('0x33')](respondWithResult(_0x453c8d,null))[_0xdcc1('0x4f')](handleError(_0x453c8d,null));};exports[_0xdcc1('0x32')]=function(_0x2b1532,_0x3a7e81){return db['FaxMessage'][_0xdcc1('0x4e')]({'where':{'id':_0x2b1532['params']['id']}})[_0xdcc1('0x33')](handleEntityNotFound(_0x3a7e81,null))['then'](removeEntity(_0x3a7e81,null))[_0xdcc1('0x4f')](handleError(_0x3a7e81,null));};exports[_0xdcc1('0x51')]=function(_0x263c91,_0x4e3129){return db[_0xdcc1('0x37')][_0xdcc1('0x51')]()[_0xdcc1('0x33')](respondWithResult(_0x4e3129,null))[_0xdcc1('0x4f')](handleError(_0x4e3129,null));};var interaction_log=require(_0xdcc1('0x10'))(_0xdcc1('0x52'));exports['accept']=function(_0x76c4f9,_0x480678,_0x51d46e){var _0x3b23b5={'agent':{},'channel':_0xdcc1('0x53')};if(_0x76c4f9[_0xdcc1('0x54')]['id']){delete _0x76c4f9['body']['id'];}_0x76c4f9[_0xdcc1('0x54')]['read']=!![];_0x76c4f9[_0xdcc1('0x54')][_0xdcc1('0x55')]=moment()['format'](_0xdcc1('0x56'));_0x76c4f9[_0xdcc1('0x54')][_0xdcc1('0x57')]=_0x76c4f9[_0xdcc1('0x54')]['UserId']||_0x76c4f9[_0xdcc1('0x58')]['id'];_0x3b23b5[_0xdcc1('0x59')]['id']=_0x76c4f9['body']['UserId'];return db[_0xdcc1('0x37')][_0xdcc1('0x4e')]({'where':{'id':_0x76c4f9[_0xdcc1('0x50')]['id'],'UserId':null}})[_0xdcc1('0x33')](handleEntityNotFound(_0x480678,null))[_0xdcc1('0x33')](saveUpdates(_0x76c4f9['body'],null))[_0xdcc1('0x33')](function(_0x4423da){if(_0x4423da){_0x3b23b5[_0xdcc1('0x22')]=_0x4423da[_0xdcc1('0x5a')]({'plain':!![]});return db[_0xdcc1('0x5b')][_0xdcc1('0x4e')]({'where':{'id':_0x4423da[_0xdcc1('0x5c')]}});}return null;})[_0xdcc1('0x33')](handleEntityNotFound(_0x480678,null))[_0xdcc1('0x33')](function(_0x25a906){if(_0x25a906){return _0x25a906['update']({'UserId':_0x76c4f9[_0xdcc1('0x54')][_0xdcc1('0x57')],'read1stAt':_[_0xdcc1('0x5d')](_0x25a906[_0xdcc1('0x5e')])?moment()['format'](_0xdcc1('0x56')):undefined});}return null;})['then'](function(_0x5eb4e4){if(_0x5eb4e4){_0x3b23b5[_0xdcc1('0x5f')]=_0x5eb4e4['get']({'plain':!![]});interaction_log[_0xdcc1('0x23')](_0xdcc1('0x60'),_0x76c4f9[_0xdcc1('0x58')]['id'],_0x76c4f9[_0xdcc1('0x58')]['name'],_0x76c4f9['user'][_0xdcc1('0x61')],_0x3b23b5[_0xdcc1('0x5f')]['id'],_0x76c4f9['body']?JSON[_0xdcc1('0x20')](_0x76c4f9['body']):_0xdcc1('0x62'));return respondWithRpcPromise(_0xdcc1('0x63'),_0xdcc1('0x64'),_0x3b23b5);}return null;})[_0xdcc1('0x33')](function(_0x496dcf){var _0x5befef=_0xdcc1('0x65')+_0x496dcf['message']['ContactId'];return db[_0xdcc1('0x66')]['query'](_0x5befef,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x328a0b){return _0x328a0b;});})[_0xdcc1('0x33')](function(_0x2d8471){if(_0x2d8471){_0x3b23b5[_0xdcc1('0x22')][_0xdcc1('0x67')]=_0x2d8471[0x0];if(!_0x76c4f9[_0xdcc1('0x54')]['UserId'])return;return db[_0xdcc1('0x68')][_0xdcc1('0x4e')]({'where':{'id':_0x76c4f9[_0xdcc1('0x54')][_0xdcc1('0x57')],'role':'agent'},'attributes':['id',_0xdcc1('0x3c'),_0xdcc1('0x69'),_0xdcc1('0x6a'),_0xdcc1('0x6b')],'raw':!![]});}return null;})[_0xdcc1('0x33')](function(_0x556e19){if(!_0x556e19)return null;_0x3b23b5[_0xdcc1('0x22')][_0xdcc1('0x59')]=_0x556e19;return _0x3b23b5;})[_0xdcc1('0x33')](function(_0x2235cb){if(_0x2235cb){if(_0x76c4f9[_0xdcc1('0x54')]['manual']){_0x3b23b5[_0xdcc1('0x22')][_0xdcc1('0x6c')]=util['format'](_0xdcc1('0x6d'),_0x76c4f9['user']['name']);_0x3b23b5[_0xdcc1('0x22')][_0xdcc1('0x6e')]=_0x3b23b5[_0xdcc1('0x6e')];_0x3b23b5['message'][_0xdcc1('0x6f')]=_0x3b23b5[_0xdcc1('0x6e')];_0x3b23b5['message'][_0xdcc1('0x70')]=_0xdcc1('0x71');return respondWithRpcPromise(_0xdcc1('0x72'),_0xdcc1('0x72'),{'event':_0xdcc1('0x73'),'message':_0x3b23b5[_0xdcc1('0x22')]},client9002)['then'](function(){return _0x3b23b5;});}return _0x3b23b5;}return null;})['then'](respondWithResult(_0x480678,null))[_0xdcc1('0x4f')](handleError(_0x480678,null));};var interaction_log=require(_0xdcc1('0x10'))('fax-interactions');exports[_0xdcc1('0x2f')]=function(_0x21c2b4,_0x10cf6a,_0x1e4784){var _0x5c9909={'agent':{},'channel':_0xdcc1('0x53')};if(_0x21c2b4[_0xdcc1('0x54')]['id']){delete _0x21c2b4[_0xdcc1('0x54')]['id'];}_0x21c2b4['body'][_0xdcc1('0x57')]=_0x21c2b4['body'][_0xdcc1('0x57')]||_0x21c2b4[_0xdcc1('0x58')]['id'];_0x5c9909['agent']['id']=_0x21c2b4[_0xdcc1('0x54')]['UserId'];return db['FaxMessage']['find']({'where':{'id':_0x21c2b4[_0xdcc1('0x50')]['id'],'UserId':null}})[_0xdcc1('0x33')](handleEntityNotFound(_0x10cf6a,null))[_0xdcc1('0x33')](function(_0x128d48){if(_0x128d48){_0x5c9909[_0xdcc1('0x22')]=_0x128d48[_0xdcc1('0x5a')]({'plain':!![]});return db[_0xdcc1('0x5b')][_0xdcc1('0x4e')]({'where':{'id':_0x128d48['FaxInteractionId']}});}return null;})[_0xdcc1('0x33')](handleEntityNotFound(_0x10cf6a,null))[_0xdcc1('0x33')](function(_0x3652f7){if(_0x3652f7){_0x5c9909['interaction']=_0x3652f7[_0xdcc1('0x5a')]({'plain':!![]});interaction_log[_0xdcc1('0x23')](_0xdcc1('0x74'),_0x21c2b4['user']['id'],_0x21c2b4['user']['name'],_0x21c2b4[_0xdcc1('0x58')][_0xdcc1('0x61')],_0x5c9909[_0xdcc1('0x5f')]['id'],_0x21c2b4[_0xdcc1('0x54')]?JSON[_0xdcc1('0x20')](_0x21c2b4['body']):_0xdcc1('0x62'));return respondWithRpcPromise(_0xdcc1('0x75'),_0xdcc1('0x76'),_0x5c9909);}return null;})['then'](function(_0x32075d){var _0x555dbc=_0xdcc1('0x65')+_0x32075d['message'][_0xdcc1('0x77')];return db[_0xdcc1('0x66')][_0xdcc1('0x3d')](_0x555dbc,{'type':db['Sequelize'][_0xdcc1('0x78')]['SELECT'],'raw':!![]})[_0xdcc1('0x33')](function(_0xc027aa){return _0xc027aa;});})[_0xdcc1('0x33')](function(_0x2fb678){if(_0x2fb678){_0x5c9909[_0xdcc1('0x22')][_0xdcc1('0x67')]=_0x2fb678[0x0];if(!_0x21c2b4[_0xdcc1('0x54')][_0xdcc1('0x57')])return;return db[_0xdcc1('0x68')][_0xdcc1('0x4e')]({'where':{'id':_0x21c2b4[_0xdcc1('0x54')][_0xdcc1('0x57')],'role':_0xdcc1('0x59')},'attributes':['id',_0xdcc1('0x3c'),'fullname',_0xdcc1('0x6a'),'internal'],'raw':!![]});}return null;})[_0xdcc1('0x33')](function(_0x4788db){if(!_0x4788db)return null;_0x5c9909[_0xdcc1('0x22')][_0xdcc1('0x59')]=_0x4788db;return _0x5c9909;})['then'](function(_0x283a90){if(_0x283a90){_0x283a90[_0xdcc1('0x22')]['interface']=util[_0xdcc1('0x79')]('SIP/%s',_0x21c2b4[_0xdcc1('0x58')]['name']);_0x283a90[_0xdcc1('0x22')][_0xdcc1('0x6e')]=_0x5c9909[_0xdcc1('0x6e')];_0x283a90[_0xdcc1('0x22')][_0xdcc1('0x6f')]=_0x5c9909[_0xdcc1('0x6e')];_0x283a90[_0xdcc1('0x22')][_0xdcc1('0x70')]=_0xdcc1('0x2f');respondWithRpcPromise(_0xdcc1('0x72'),_0xdcc1('0x72'),{'event':_0xdcc1('0x7a'),'message':_0x283a90[_0xdcc1('0x22')]},client9002);return _0x5c9909;}return null;})[_0xdcc1('0x33')](respondWithResult(_0x10cf6a,null))[_0xdcc1('0x4f')](handleError(_0x10cf6a,null));};exports[_0xdcc1('0x7b')]=function(_0x395b22,_0x3d7d65){var _0x11ccf3;return db[_0xdcc1('0x37')][_0xdcc1('0x7b')](_0x395b22['body'],{})['then'](function(_0x3678dd){_0x11ccf3=_0x3678dd;return db['CmContact'][_0xdcc1('0x7c')]({'where':{'id':_0x11ccf3[_0xdcc1('0x77')]}});})[_0xdcc1('0x33')](function(_0x367c61){if(_[_0xdcc1('0x5d')](_0x367c61)){return;}else{_0x11ccf3['fax']=_0x367c61[_0xdcc1('0x53')];return db[_0xdcc1('0x7d')]['findOne']({'where':{'id':_0x11ccf3[_0xdcc1('0x7e')]}});}})[_0xdcc1('0x33')](function(_0x5243cf){return respondWithRpcPromise('SendFax','SendFax',{'FaxAccountId':_[_0xdcc1('0x5d')](_0x395b22[_0xdcc1('0x54')])?undefined:_0x395b22[_0xdcc1('0x54')][_0xdcc1('0x7f')],'path':_['isNil'](_0x5243cf)?undefined:util[_0xdcc1('0x79')](_0xdcc1('0x80'),_0x5243cf[_0xdcc1('0x81')]),'fax':_[_0xdcc1('0x5d')](_0x11ccf3[_0xdcc1('0x53')])?undefined:_0x11ccf3[_0xdcc1('0x53')],'AttachmentId':_0x11ccf3[_0xdcc1('0x7e')]},client9002);})[_0xdcc1('0x33')](respondWithResult(_0x3d7d65,0xc9))[_0xdcc1('0x4f')](handleError(_0x3d7d65,null));};exports['download']=function(_0x22f558,_0x2548b6){var _0x1d8df0=path[_0xdcc1('0x82')](config[_0xdcc1('0x83')],'server',_0xdcc1('0x84'),'attachments');return db[_0xdcc1('0x37')][_0xdcc1('0x4e')]({'where':{'id':_0x22f558[_0xdcc1('0x50')]['id']},'include':[{'model':db[_0xdcc1('0x7d')],'as':_0xdcc1('0x7d')}]})[_0xdcc1('0x33')](handleEntityNotFound(_0x2548b6,null))[_0xdcc1('0x33')](function(_0x289197){if(_0x289197){return _0x2548b6['download'](path[_0xdcc1('0x82')](_0x1d8df0,_0x289197[_0xdcc1('0x7d')][_0xdcc1('0x81')]));}})[_0xdcc1('0x4f')](handleError(_0x2548b6,null));};
\ No newline at end of file
index 9e5c844..b9c7a74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f8a=['../../mysqldb','FaxMessage','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x31f4a1,_0x4ceff7){var _0x5b5f51=function(_0x3de61e){while(--_0x3de61e){_0x31f4a1['push'](_0x31f4a1['shift']());}};_0x5b5f51(++_0x4ceff7);}(_0x3f8a,0x1d5));var _0xa3f8=function(_0x348078,_0xf50ea7){_0x348078=_0x348078-0x0;var _0xf071bb=_0x3f8a[_0x348078];return _0xf071bb;};'use strict';var EventEmitter=require(_0xa3f8('0x0'));var FaxMessage=require(_0xa3f8('0x1'))['db'][_0xa3f8('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xa3f8('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa3f8('0x4'),'afterDestroy':_0xa3f8('0x5')};function emitEvent(_0x928738){return function(_0x15b6aa,_0x2553fd,_0x2847b4){FaxMessageEvents[_0xa3f8('0x6')](_0x928738+':'+_0x15b6aa['id'],_0x15b6aa);FaxMessageEvents[_0xa3f8('0x6')](_0x928738,_0x15b6aa);_0x2847b4(null);};}for(var e in events){if(events[_0xa3f8('0x7')](e)){var event=events[e];FaxMessage[_0xa3f8('0x8')](e,emitEvent(event));}}module[_0xa3f8('0x9')]=FaxMessageEvents;
\ No newline at end of file
+var _0x3e94=['../../mysqldb','setMaxListeners','save','update','emit','hasOwnProperty','exports','events'];(function(_0x346645,_0x3e9d9c){var _0x32f590=function(_0x5b1bb5){while(--_0x5b1bb5){_0x346645['push'](_0x346645['shift']());}};_0x32f590(++_0x3e9d9c);}(_0x3e94,0x67));var _0x43e9=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x3e94[_0x126558];return _0x1f6d14;};'use strict';var EventEmitter=require(_0x43e9('0x0'));var FaxMessage=require(_0x43e9('0x1'))['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x43e9('0x2')](0x0);var events={'afterCreate':_0x43e9('0x3'),'afterUpdate':_0x43e9('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2e3b33){return function(_0x42c806,_0x2fac0f,_0x50eacc){FaxMessageEvents[_0x43e9('0x5')](_0x2e3b33+':'+_0x42c806['id'],_0x42c806);FaxMessageEvents['emit'](_0x2e3b33,_0x42c806);_0x50eacc(null);};}for(var e in events){if(events[_0x43e9('0x6')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module[_0x43e9('0x7')]=FaxMessageEvents;
\ No newline at end of file
index 5d4b20c..6c8c5e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb767=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxMessage.attributes','exports','define','fax_messages','fti_fax_messages','body','FULLTEXT','models','direction','toLowerCase','secret','UserId','FaxInteraction','then','update','createdAt','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','api'];(function(_0x2cf2e9,_0xd58ea1){var _0xd3670d=function(_0x272868){while(--_0x272868){_0x2cf2e9['push'](_0x2cf2e9['shift']());}};_0xd3670d(++_0xd58ea1);}(_0xb767,0x169));var _0x7b76=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xb767[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x7b76('0x0'));var util=require(_0x7b76('0x1'));var logger=require('../../config/logger')(_0x7b76('0x2'));var moment=require(_0x7b76('0x3'));var BPromise=require(_0x7b76('0x4'));var rp=require(_0x7b76('0x5'));var fs=require('fs');var path=require(_0x7b76('0x6'));var rimraf=require(_0x7b76('0x7'));var config=require(_0x7b76('0x8'));var attributes=require(_0x7b76('0x9'));module[_0x7b76('0xa')]=function(_0x430bd2,_0x27b3f4){return _0x430bd2[_0x7b76('0xb')]('FaxMessage',attributes,{'tableName':_0x7b76('0xc'),'paranoid':![],'indexes':[{'name':_0x7b76('0xd'),'fields':[_0x7b76('0xe')],'type':_0x7b76('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x544d8b,_0x541624,_0x39aeb6){var _0x55463a=_0x430bd2[_0x7b76('0x10')];var _0x241620=_0x544d8b['get']({'plain':!![]});if(_0x241620[_0x7b76('0x11')][_0x7b76('0x12')]()==='in'||_0x241620['direction']['toLowerCase']()==='out'&&!_0x241620[_0x7b76('0x13')]&&!_['isNil'](_0x241620[_0x7b76('0x14')])){_0x55463a[_0x7b76('0x15')]['findOne']({'where':{'id':_0x241620['FaxInteractionId']}})[_0x7b76('0x16')](function(_0x1810a7){if(_0x1810a7){_0x1810a7[_0x7b76('0x17')]({'lastMsgAt':_0x241620[_0x7b76('0x18')],'lastMsgDirection':_0x241620[_0x7b76('0x11')]['toLowerCase']()});}})['catch'](function(_0x4f4bbb){console[_0x7b76('0x19')](_0x4f4bbb);});}_0x39aeb6();}},'charset':_0x7b76('0x1a'),'collate':_0x7b76('0x1b')});};
\ No newline at end of file
+var _0x4486=['error','utf8mb4','lodash','../../config/logger','api','request-promise','rimraf','../../config/environment','./faxMessage.attributes','exports','define','fax_messages','fti_fax_messages','body','FULLTEXT','models','get','toLowerCase','direction','out','secret','isNil','FaxInteraction','findOne','FaxInteractionId','then','createdAt','catch'];(function(_0x3e200b,_0x1dc0bd){var _0xbee440=function(_0x18247e){while(--_0x18247e){_0x3e200b['push'](_0x3e200b['shift']());}};_0xbee440(++_0x1dc0bd);}(_0x4486,0x1de));var _0x6448=function(_0x39a2d6,_0x477459){_0x39a2d6=_0x39a2d6-0x0;var _0x23af66=_0x4486[_0x39a2d6];return _0x23af66;};'use strict';var _=require(_0x6448('0x0'));var util=require('util');var logger=require(_0x6448('0x1'))(_0x6448('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6448('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6448('0x4'));var config=require(_0x6448('0x5'));var attributes=require(_0x6448('0x6'));module[_0x6448('0x7')]=function(_0x1e1757,_0x25d838){return _0x1e1757[_0x6448('0x8')]('FaxMessage',attributes,{'tableName':_0x6448('0x9'),'paranoid':![],'indexes':[{'name':_0x6448('0xa'),'fields':[_0x6448('0xb')],'type':_0x6448('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4a2ada,_0x56e732,_0xbe61aa){var _0x5db422=_0x1e1757[_0x6448('0xd')];var _0x1b0987=_0x4a2ada[_0x6448('0xe')]({'plain':!![]});if(_0x1b0987['direction'][_0x6448('0xf')]()==='in'||_0x1b0987[_0x6448('0x10')][_0x6448('0xf')]()===_0x6448('0x11')&&!_0x1b0987[_0x6448('0x12')]&&!_[_0x6448('0x13')](_0x1b0987['UserId'])){_0x5db422[_0x6448('0x14')][_0x6448('0x15')]({'where':{'id':_0x1b0987[_0x6448('0x16')]}})[_0x6448('0x17')](function(_0x3a1802){if(_0x3a1802){_0x3a1802['update']({'lastMsgAt':_0x1b0987[_0x6448('0x18')],'lastMsgDirection':_0x1b0987['direction'][_0x6448('0xf')]()});}})[_0x6448('0x19')](function(_0x1df691){console[_0x6448('0x1a')](_0x1df691);});}_0xbe61aa();}},'charset':_0x6448('0x1b'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 52a4ee9..8c8e07e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x668b=['./faxMessage.socket','register','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateFaxMessage','FaxMessage','create','body','raw','UpdateFaxMessage','update','options','where','attributes','limit','lodash','util','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost'];(function(_0x5d63b7,_0x14e6ce){var _0x44d512=function(_0x2189c6){while(--_0x2189c6){_0x5d63b7['push'](_0x5d63b7['shift']());}};_0x44d512(++_0x14e6ce);}(_0x668b,0x140));var _0xb668=function(_0xd39959,_0x302d09){_0xd39959=_0xd39959-0x0;var _0x1ff69c=_0x668b[_0xd39959];return _0x1ff69c;};'use strict';var _=require(_0xb668('0x0'));var util=require(_0xb668('0x1'));var moment=require('moment');var BPromise=require(_0xb668('0x2'));var rs=require(_0xb668('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb668('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xb668('0x5'))(_0xb668('0x6'));var config=require(_0xb668('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xb668('0x8')][_0xb668('0x9')]({'port':0x232a});config[_0xb668('0xa')]=_[_0xb668('0xb')](config[_0xb668('0xa')],{'host':_0xb668('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb668('0xa')]));require(_0xb668('0xd'))[_0xb668('0xe')](socket);function respondWithRpcPromise(_0x16d50d,_0x39b79c,_0x3606a7){return new BPromise(function(_0x45bc39,_0x3616e9){return client['request'](_0x16d50d,_0x3606a7)[_0xb668('0xf')](function(_0x27dbf7){logger[_0xb668('0x10')](_0xb668('0x11'),_0x39b79c,_0xb668('0x12'));logger[_0xb668('0x13')](_0xb668('0x14'),_0x39b79c,_0xb668('0x12'),JSON[_0xb668('0x15')](_0x27dbf7));if(_0x27dbf7[_0xb668('0x16')]){if(_0x27dbf7[_0xb668('0x16')][_0xb668('0x17')]===0x1f4){logger[_0xb668('0x16')](_0xb668('0x11'),_0x39b79c,_0x27dbf7[_0xb668('0x16')][_0xb668('0x18')]);return _0x3616e9(_0x27dbf7[_0xb668('0x16')][_0xb668('0x18')]);}logger[_0xb668('0x16')](_0xb668('0x11'),_0x39b79c,_0x27dbf7[_0xb668('0x16')][_0xb668('0x18')]);return _0x45bc39(_0x27dbf7['error'][_0xb668('0x18')]);}else{logger['info'](_0xb668('0x11'),_0x39b79c,_0xb668('0x12'));_0x45bc39(_0x27dbf7['result'][_0xb668('0x18')]);}})[_0xb668('0x19')](function(_0x53ff78){logger[_0xb668('0x16')]('FaxMessage,\x20%s,\x20%s',_0x39b79c,_0x53ff78);_0x3616e9(_0x53ff78);});});}exports[_0xb668('0x1a')]=function(_0x178a5d){var _0x253ba5=this;return new Promise(function(_0x12805a,_0x5d33ae){return db[_0xb668('0x1b')][_0xb668('0x1c')](_0x178a5d[_0xb668('0x1d')],{'raw':_0x178a5d['options']?_0x178a5d['options'][_0xb668('0x1e')]===undefined?!![]:![]:!![]})[_0xb668('0xf')](function(_0x517eee){logger[_0xb668('0x10')]('CreateFaxMessage',_0x178a5d);logger[_0xb668('0x13')]('CreateFaxMessage',_0x178a5d,JSON[_0xb668('0x15')](_0x517eee));_0x12805a(_0x517eee);})[_0xb668('0x19')](function(_0x3f84c7){logger[_0xb668('0x16')](_0xb668('0x1a'),_0x3f84c7[_0xb668('0x18')],_0x178a5d);_0x5d33ae(_0x253ba5['error'](0x1f4,_0x3f84c7[_0xb668('0x18')]));});});};exports[_0xb668('0x1f')]=function(_0x2ab8c2){var _0x49abfd=this;return new Promise(function(_0x5e0cee,_0xe62fce){return db[_0xb668('0x1b')][_0xb668('0x20')](_0x2ab8c2['body'],{'raw':_0x2ab8c2[_0xb668('0x21')]?_0x2ab8c2[_0xb668('0x21')][_0xb668('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2ab8c2['options']?_0x2ab8c2['options'][_0xb668('0x22')]||null:null,'attributes':_0x2ab8c2[_0xb668('0x21')]?_0x2ab8c2['options'][_0xb668('0x23')]||null:null,'limit':_0x2ab8c2[_0xb668('0x21')]?_0x2ab8c2[_0xb668('0x21')][_0xb668('0x24')]||null:null})[_0xb668('0xf')](function(_0x5f36b5){logger[_0xb668('0x10')](_0xb668('0x1f'),_0x2ab8c2);logger['debug'](_0xb668('0x1f'),_0x2ab8c2,JSON['stringify'](_0x5f36b5));_0x5e0cee(_0x5f36b5);})[_0xb668('0x19')](function(_0x406cc5){logger[_0xb668('0x16')](_0xb668('0x1f'),_0x406cc5[_0xb668('0x18')],_0x2ab8c2);_0xe62fce(_0x49abfd[_0xb668('0x16')](0x1f4,_0x406cc5[_0xb668('0x18')]));});});};
\ No newline at end of file
+var _0x84ab=['code','message','result','catch','FaxMessage','create','body','raw','CreateFaxMessage','debug','UpdateFaxMessage','update','options','where','attributes','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','defaults','localhost','socket.io-emitter','./faxMessage.socket','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x589112,_0x18e625){var _0x1e7e39=function(_0x5b40fe){while(--_0x5b40fe){_0x589112['push'](_0x589112['shift']());}};_0x1e7e39(++_0x18e625);}(_0x84ab,0x12f));var _0xb84a=function(_0x11e05d,_0x3a4491){_0x11e05d=_0x11e05d-0x0;var _0x335588=_0x84ab[_0x11e05d];return _0x335588;};'use strict';var _=require(_0xb84a('0x0'));var util=require(_0xb84a('0x1'));var moment=require(_0xb84a('0x2'));var BPromise=require(_0xb84a('0x3'));var rs=require(_0xb84a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb84a('0x5'))['db'];var utils=require(_0xb84a('0x6'));var logger=require('../../config/logger')(_0xb84a('0x7'));var config=require(_0xb84a('0x8'));var jayson=require(_0xb84a('0x9'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0xb84a('0xa')](config['redis'],{'host':_0xb84a('0xb'),'port':0x18eb});var socket=require(_0xb84a('0xc'))(new Redis(config['redis']));require(_0xb84a('0xd'))['register'](socket);function respondWithRpcPromise(_0x2e6a71,_0x1886e0,_0x42daf5){return new BPromise(function(_0x5d3b29,_0x5a34f7){return client['request'](_0x2e6a71,_0x42daf5)[_0xb84a('0xe')](function(_0x17379b){logger[_0xb84a('0xf')](_0xb84a('0x10'),_0x1886e0,_0xb84a('0x11'));logger['debug'](_0xb84a('0x12'),_0x1886e0,_0xb84a('0x11'),JSON[_0xb84a('0x13')](_0x17379b));if(_0x17379b[_0xb84a('0x14')]){if(_0x17379b[_0xb84a('0x14')][_0xb84a('0x15')]===0x1f4){logger[_0xb84a('0x14')](_0xb84a('0x10'),_0x1886e0,_0x17379b[_0xb84a('0x14')][_0xb84a('0x16')]);return _0x5a34f7(_0x17379b[_0xb84a('0x14')][_0xb84a('0x16')]);}logger['error'](_0xb84a('0x10'),_0x1886e0,_0x17379b[_0xb84a('0x14')][_0xb84a('0x16')]);return _0x5d3b29(_0x17379b[_0xb84a('0x14')][_0xb84a('0x16')]);}else{logger[_0xb84a('0xf')](_0xb84a('0x10'),_0x1886e0,_0xb84a('0x11'));_0x5d3b29(_0x17379b[_0xb84a('0x17')][_0xb84a('0x16')]);}})[_0xb84a('0x18')](function(_0x2de49c){logger[_0xb84a('0x14')](_0xb84a('0x10'),_0x1886e0,_0x2de49c);_0x5a34f7(_0x2de49c);});});}exports['CreateFaxMessage']=function(_0x1a0056){var _0x319216=this;return new Promise(function(_0x55a633,_0xac76d3){return db[_0xb84a('0x19')][_0xb84a('0x1a')](_0x1a0056[_0xb84a('0x1b')],{'raw':_0x1a0056['options']?_0x1a0056['options'][_0xb84a('0x1c')]===undefined?!![]:![]:!![]})[_0xb84a('0xe')](function(_0x2d70fd){logger[_0xb84a('0xf')](_0xb84a('0x1d'),_0x1a0056);logger[_0xb84a('0x1e')](_0xb84a('0x1d'),_0x1a0056,JSON[_0xb84a('0x13')](_0x2d70fd));_0x55a633(_0x2d70fd);})[_0xb84a('0x18')](function(_0x26fe42){logger[_0xb84a('0x14')](_0xb84a('0x1d'),_0x26fe42[_0xb84a('0x16')],_0x1a0056);_0xac76d3(_0x319216[_0xb84a('0x14')](0x1f4,_0x26fe42[_0xb84a('0x16')]));});});};exports[_0xb84a('0x1f')]=function(_0x378ce1){var _0x3ff0bc=this;return new Promise(function(_0x3b6805,_0xd468c3){return db[_0xb84a('0x19')][_0xb84a('0x20')](_0x378ce1[_0xb84a('0x1b')],{'raw':_0x378ce1[_0xb84a('0x21')]?_0x378ce1[_0xb84a('0x21')][_0xb84a('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x378ce1['options']?_0x378ce1['options'][_0xb84a('0x22')]||null:null,'attributes':_0x378ce1[_0xb84a('0x21')]?_0x378ce1['options'][_0xb84a('0x23')]||null:null,'limit':_0x378ce1[_0xb84a('0x21')]?_0x378ce1['options']['limit']||null:null})[_0xb84a('0xe')](function(_0x8e9319){logger['info'](_0xb84a('0x1f'),_0x378ce1);logger[_0xb84a('0x1e')](_0xb84a('0x1f'),_0x378ce1,JSON[_0xb84a('0x13')](_0x8e9319));_0x3b6805(_0x8e9319);})[_0xb84a('0x18')](function(_0x144c25){logger[_0xb84a('0x14')](_0xb84a('0x1f'),_0x144c25['message'],_0x378ce1);_0xd468c3(_0x3ff0bc[_0xb84a('0x14')](0x1f4,_0x144c25['message']));});});};
\ No newline at end of file
index 57e6ba3..ff5bc06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1b9=['length','faxMessage:','./faxMessage.events','save','remove','update','emit','removeListener','register'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0xb1b9,0xf5));var _0x9b1b=function(_0x24ec2c,_0x2b4e6c){_0x24ec2c=_0x24ec2c-0x0;var _0x35bccc=_0xb1b9[_0x24ec2c];return _0x35bccc;};'use strict';var FaxMessageEvents=require(_0x9b1b('0x0'));var events=[_0x9b1b('0x1'),_0x9b1b('0x2'),_0x9b1b('0x3')];function createListener(_0x2f4935,_0x3d6880){return function(_0x471658){_0x3d6880[_0x9b1b('0x4')](_0x2f4935,_0x471658);};}function removeListener(_0x2edc7d,_0x1e73bb){return function(){FaxMessageEvents[_0x9b1b('0x5')](_0x2edc7d,_0x1e73bb);};}exports[_0x9b1b('0x6')]=function(_0x51a217){for(var _0x59a1ed=0x0,_0x21ac82=events[_0x9b1b('0x7')];_0x59a1ed<_0x21ac82;_0x59a1ed++){var _0x5ade84=events[_0x59a1ed];var _0x12cd22=createListener(_0x9b1b('0x8')+_0x5ade84,_0x51a217);FaxMessageEvents['on'](_0x5ade84,_0x12cd22);}};
\ No newline at end of file
+var _0x832b=['removeListener','register','faxMessage:','./faxMessage.events','save','remove','update','emit'];(function(_0x244665,_0x2b1e4a){var _0xf5a802=function(_0x48ec1f){while(--_0x48ec1f){_0x244665['push'](_0x244665['shift']());}};_0xf5a802(++_0x2b1e4a);}(_0x832b,0x14b));var _0xb832=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x832b[_0x3dd15e];return _0x231fd0;};'use strict';var FaxMessageEvents=require(_0xb832('0x0'));var events=[_0xb832('0x1'),_0xb832('0x2'),_0xb832('0x3')];function createListener(_0x29e8fc,_0x2cf439){return function(_0x119f8a){_0x2cf439[_0xb832('0x4')](_0x29e8fc,_0x119f8a);};}function removeListener(_0xb77b2d,_0x25f6f1){return function(){FaxMessageEvents[_0xb832('0x5')](_0xb77b2d,_0x25f6f1);};}exports[_0xb832('0x6')]=function(_0x1ebba5){for(var _0x1174db=0x0,_0x5b86c6=events['length'];_0x1174db<_0x5b86c6;_0x1174db++){var _0x2397e5=events[_0x1174db];var _0x56b20f=createListener(_0xb832('0x7')+_0x2397e5,_0x1ebba5);FaxMessageEvents['on'](_0x2397e5,_0x56b20f);}};
\ No newline at end of file
index 33f4cef..a2a3839 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae60=['/:id/reject','reject','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','show','/:id/download','download','post','tracked','fax','faxmessage:create','create','put','/:id','update','/:id/accept'];(function(_0xe9d4ff,_0x22c4a9){var _0xe04c26=function(_0x139486){while(--_0x139486){_0xe9d4ff['push'](_0xe9d4ff['shift']());}};_0xe04c26(++_0x22c4a9);}(_0xae60,0x1c7));var _0x0ae6=function(_0x500419,_0x549162){_0x500419=_0x500419-0x0;var _0x241c1a=_0xae60[_0x500419];return _0x241c1a;};'use strict';var multer=require(_0x0ae6('0x0'));var util=require(_0x0ae6('0x1'));var path=require(_0x0ae6('0x2'));var timeout=require('connect-timeout');var express=require(_0x0ae6('0x3'));var router=express[_0x0ae6('0x4')]();var fs_extra=require(_0x0ae6('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0ae6('0x6'));var config=require(_0x0ae6('0x7'));var controller=require('./faxMessage.controller');router[_0x0ae6('0x8')]('/',auth[_0x0ae6('0x9')](),controller[_0x0ae6('0xa')]);router[_0x0ae6('0x8')](_0x0ae6('0xb'),auth[_0x0ae6('0x9')](),controller[_0x0ae6('0xc')]);router[_0x0ae6('0x8')]('/:id',auth[_0x0ae6('0x9')](),controller[_0x0ae6('0xd')]);router[_0x0ae6('0x8')](_0x0ae6('0xe'),auth['isAuthenticated'](),controller[_0x0ae6('0xf')]);router[_0x0ae6('0x10')]('/',auth[_0x0ae6('0x9')](),interaction[_0x0ae6('0x11')](_0x0ae6('0x12'),_0x0ae6('0x13')),controller[_0x0ae6('0x14')]);router[_0x0ae6('0x15')](_0x0ae6('0x16'),auth[_0x0ae6('0x9')](),controller[_0x0ae6('0x17')]);router[_0x0ae6('0x15')](_0x0ae6('0x18'),auth[_0x0ae6('0x9')](),controller['accept']);router[_0x0ae6('0x15')](_0x0ae6('0x19'),auth[_0x0ae6('0x9')](),controller[_0x0ae6('0x1a')]);router[_0x0ae6('0x1b')](_0x0ae6('0x16'),auth[_0x0ae6('0x9')](),controller[_0x0ae6('0x1c')]);module[_0x0ae6('0x1d')]=router;
\ No newline at end of file
+var _0x4522=['destroy','exports','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','tracked','fax','faxmessage:create','create','put','reject'];(function(_0x1d131b,_0x160842){var _0x5bd9aa=function(_0x4bcb49){while(--_0x4bcb49){_0x1d131b['push'](_0x1d131b['shift']());}};_0x5bd9aa(++_0x160842);}(_0x4522,0x1a0));var _0x2452=function(_0x4ee845,_0x554bd4){_0x4ee845=_0x4ee845-0x0;var _0x230b07=_0x4522[_0x4ee845];return _0x230b07;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2452('0x0'));var timeout=require(_0x2452('0x1'));var express=require(_0x2452('0x2'));var router=express['Router']();var fs_extra=require(_0x2452('0x3'));var auth=require(_0x2452('0x4'));var interaction=require(_0x2452('0x5'));var config=require(_0x2452('0x6'));var controller=require(_0x2452('0x7'));router[_0x2452('0x8')]('/',auth[_0x2452('0x9')](),controller[_0x2452('0xa')]);router[_0x2452('0x8')](_0x2452('0xb'),auth[_0x2452('0x9')](),controller[_0x2452('0xc')]);router[_0x2452('0x8')](_0x2452('0xd'),auth[_0x2452('0x9')](),controller[_0x2452('0xe')]);router['get']('/:id/download',auth[_0x2452('0x9')](),controller['download']);router['post']('/',auth[_0x2452('0x9')](),interaction[_0x2452('0xf')](_0x2452('0x10'),_0x2452('0x11')),controller[_0x2452('0x12')]);router[_0x2452('0x13')](_0x2452('0xd'),auth[_0x2452('0x9')](),controller['update']);router['put']('/:id/accept',auth[_0x2452('0x9')](),controller['accept']);router[_0x2452('0x13')]('/:id/reject',auth[_0x2452('0x9')](),controller[_0x2452('0x14')]);router['delete'](_0x2452('0xd'),auth['isAuthenticated'](),controller[_0x2452('0x15')]);module[_0x2452('0x16')]=router;
\ No newline at end of file
index 894efbf..dcc6880 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0c8=['rrmemory','beepall','INTEGER','exports','STRING','name','ENUM'];(function(_0x44bcb0,_0x235aa9){var _0xfaf881=function(_0x25d81d){while(--_0x25d81d){_0x44bcb0['push'](_0x44bcb0['shift']());}};_0xfaf881(++_0x235aa9);}(_0xb0c8,0x168));var _0x8b0c=function(_0x2d5516,_0xf91e07){_0x2d5516=_0x2d5516-0x0;var _0x2f6075=_0xb0c8[_0x2d5516];return _0x2f6075;};'use strict';var Sequelize=require('sequelize');module[_0x8b0c('0x0')]={'name':{'type':Sequelize[_0x8b0c('0x1')],'unique':_0x8b0c('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x8b0c('0x3')](_0x8b0c('0x4'),_0x8b0c('0x5'),'roundrobin'),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x8b0c('0x6')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb158=['sequelize','exports','name','INTEGER','ENUM','rrmemory','beepall'];(function(_0x19361e,_0x2852d5){var _0x54849d=function(_0x55e2a3){while(--_0x55e2a3){_0x19361e['push'](_0x19361e['shift']());}};_0x54849d(++_0x2852d5);}(_0xb158,0xfc));var _0x8b15=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xb158[_0x4154a6];return _0x3b2786;};'use strict';var Sequelize=require(_0x8b15('0x0'));module[_0x8b15('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x8b15('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x8b15('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x8b15('0x4')](_0x8b15('0x5'),_0x8b15('0x6'),'roundrobin'),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x8b15('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index f8fc16f..1a0e3c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x220c=['SIP','faxPause','getTeams','findOne','Team','addTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','findOrCreate','forEach','emit','userFaxQueue:save','removeTeams','select','tq.TeamId','team_has_fax_queues','join','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','every','TeamId','all','union','isEmpty','removeAgents','userFaxQueue:remove','omit','spread','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','status','end','json','offset','undefined','count','limit','set','apply','reject','update','then','get','FaxQueues','UserProfileResource','destroy','error','name','send','map','type','key','query','keys','intersection','model','attributes','fields','length','sort','where','pick','filters','filter','merge','VIRTUAL','options','FaxQueue','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','hasOwnProperty','nolimit','order','UserFaxQueue','User','findAndCountAll','UserId','agent','updatedAt','createdAt','format','%s/%s'];(function(_0x4b02ad,_0x881c12){var _0x2ab02a=function(_0x4e5fa0){while(--_0x4e5fa0){_0x4b02ad['push'](_0x4b02ad['shift']());}};_0x2ab02a(++_0x881c12);}(_0x220c,0x1bc));var _0xc220=function(_0x50e2fa,_0x41e13d){_0x50e2fa=_0x50e2fa-0x0;var _0x5d1f91=_0x220c[_0x50e2fa];return _0x5d1f91;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc220('0x0'));var zipdir=require(_0xc220('0x1'));var jsonpatch=require(_0xc220('0x2'));var rp=require(_0xc220('0x3'));var moment=require(_0xc220('0x4'));var BPromise=require(_0xc220('0x5'));var Mustache=require('mustache');var util=require(_0xc220('0x6'));var path=require(_0xc220('0x7'));var sox=require(_0xc220('0x8'));var csv=require(_0xc220('0x9'));var ejs=require(_0xc220('0xa'));var fs=require('fs');var fs_extra=require(_0xc220('0xb'));var _=require('lodash');var squel=require(_0xc220('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc220('0xd'));var toCsv=require(_0xc220('0x9'));var querystring=require('querystring');var Papa=require(_0xc220('0xe'));var Redis=require(_0xc220('0xf'));var authService=require(_0xc220('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xc220('0x11'))('api');var utils=require(_0xc220('0x12'));var config=require(_0xc220('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xc220('0x14'))['db'];config[_0xc220('0x15')]=_[_0xc220('0x16')](config[_0xc220('0x15')],{'host':_0xc220('0x17'),'port':0x18eb});var socket=require(_0xc220('0x18'))(new Redis(config[_0xc220('0x15')]));require(_0xc220('0x19'))[_0xc220('0x1a')](socket);function respondWithStatusCode(_0x2f2688,_0x45bb0c){_0x45bb0c=_0x45bb0c||0xcc;return function(_0x363857){if(_0x363857){return _0x2f2688['sendStatus'](_0x45bb0c);}return _0x2f2688[_0xc220('0x1b')](_0x45bb0c)[_0xc220('0x1c')]();};}function respondWithResult(_0xb2b4f9,_0x4e03ff){_0x4e03ff=_0x4e03ff||0xc8;return function(_0x1f2331){if(_0x1f2331){return _0xb2b4f9['status'](_0x4e03ff)[_0xc220('0x1d')](_0x1f2331);}};}function respondWithFilteredResult(_0x5d5d4f,_0x306489){return function(_0x2c29be){if(_0x2c29be){var _0x39d44f=typeof _0x306489[_0xc220('0x1e')]===_0xc220('0x1f')&&typeof _0x306489['limit']===_0xc220('0x1f');var _0x3984c1=_0x2c29be[_0xc220('0x20')];var _0x39795a=_0x39d44f?0x0:_0x306489[_0xc220('0x1e')];var _0x132da4=_0x39d44f?_0x2c29be[_0xc220('0x20')]:_0x306489[_0xc220('0x1e')]+_0x306489[_0xc220('0x21')];var _0x517da2;if(_0x132da4>=_0x3984c1){_0x132da4=_0x3984c1;_0x517da2=0xc8;}else{_0x517da2=0xce;}_0x5d5d4f[_0xc220('0x1b')](_0x517da2);return _0x5d5d4f[_0xc220('0x22')]('Content-Range',_0x39795a+'-'+_0x132da4+'/'+_0x3984c1)[_0xc220('0x1d')](_0x2c29be);}return null;};}function patchUpdates(_0x330482){return function(_0x9ef168){try{jsonpatch[_0xc220('0x23')](_0x9ef168,_0x330482,!![]);}catch(_0x38072c){return BPromise[_0xc220('0x24')](_0x38072c);}return _0x9ef168['save']();};}function saveUpdates(_0x26ebff,_0x57f771){return function(_0xc4266f){if(_0xc4266f){return _0xc4266f[_0xc220('0x25')](_0x26ebff)['then'](function(_0x1d9ae3){return _0x1d9ae3;});}return null;};}function removeEntity(_0x48a288,_0x461a97){return function(_0xffd898){if(_0xffd898){return _0xffd898['destroy']()[_0xc220('0x26')](function(){var _0x120b88=_0xffd898[_0xc220('0x27')]({'plain':!![]});var _0x26010e=_0xc220('0x28');return db[_0xc220('0x29')][_0xc220('0x2a')]({'where':{'type':_0x26010e,'resourceId':_0x120b88['id']}})[_0xc220('0x26')](function(){return _0xffd898;});})[_0xc220('0x26')](function(){_0x48a288[_0xc220('0x1b')](0xcc)[_0xc220('0x1c')]();});}};}function handleEntityNotFound(_0x1dc052,_0x403914){return function(_0x483029){if(!_0x483029){_0x1dc052['sendStatus'](0x194);}return _0x483029;};}function handleError(_0x30511a,_0xaa5d99){_0xaa5d99=_0xaa5d99||0x1f4;return function(_0x49f49d){logger[_0xc220('0x2b')](_0x49f49d['stack']);if(_0x49f49d[_0xc220('0x2c')]){delete _0x49f49d[_0xc220('0x2c')];}_0x30511a[_0xc220('0x1b')](_0xaa5d99)[_0xc220('0x2d')](_0x49f49d);};}exports['index']=function(_0x428d11,_0x1b00f7){var _0x2e2dc2={},_0x47780d={},_0x1e625d={'count':0x0,'rows':[]};var _0x41d762=_[_0xc220('0x2e')](db['FaxQueue']['rawAttributes'],function(_0x5603df){return{'name':_0x5603df['fieldName'],'type':_0x5603df[_0xc220('0x2f')][_0xc220('0x30')]};});_0x47780d['model']=_[_0xc220('0x2e')](_0x41d762,'name');_0x47780d[_0xc220('0x31')]=_[_0xc220('0x32')](_0x428d11[_0xc220('0x31')]);_0x47780d['filters']=_[_0xc220('0x33')](_0x47780d[_0xc220('0x34')],_0x47780d[_0xc220('0x31')]);_0x2e2dc2[_0xc220('0x35')]=_['intersection'](_0x47780d[_0xc220('0x34')],qs[_0xc220('0x36')](_0x428d11[_0xc220('0x31')]['fields']));_0x2e2dc2[_0xc220('0x35')]=_0x2e2dc2[_0xc220('0x35')][_0xc220('0x37')]?_0x2e2dc2[_0xc220('0x35')]:_0x47780d[_0xc220('0x34')];if(!_0x428d11[_0xc220('0x31')]['hasOwnProperty']('nolimit')){_0x2e2dc2[_0xc220('0x21')]=qs[_0xc220('0x21')](_0x428d11[_0xc220('0x31')][_0xc220('0x21')]);_0x2e2dc2[_0xc220('0x1e')]=qs[_0xc220('0x1e')](_0x428d11[_0xc220('0x31')][_0xc220('0x1e')]);}_0x2e2dc2['order']=qs[_0xc220('0x38')](_0x428d11['query']['sort']);_0x2e2dc2[_0xc220('0x39')]=qs['filters'](_[_0xc220('0x3a')](_0x428d11[_0xc220('0x31')],_0x47780d[_0xc220('0x3b')]),_0x41d762);if(_0x428d11[_0xc220('0x31')][_0xc220('0x3c')]){_0x2e2dc2[_0xc220('0x39')]=_[_0xc220('0x3d')](_0x2e2dc2[_0xc220('0x39')],{'$or':_['map'](_0x41d762,function(_0x4a8b59){if(_0x4a8b59[_0xc220('0x2f')]!==_0xc220('0x3e')){var _0x3c95a3={};_0x3c95a3[_0x4a8b59[_0xc220('0x2c')]]={'$like':'%'+_0x428d11[_0xc220('0x31')][_0xc220('0x3c')]+'%'};return _0x3c95a3;}})});}_0x2e2dc2=_[_0xc220('0x3d')]({},_0x2e2dc2,_0x428d11[_0xc220('0x3f')]);var _0x9ea202={'where':_0x2e2dc2[_0xc220('0x39')]};return db[_0xc220('0x40')][_0xc220('0x20')](_0x9ea202)[_0xc220('0x26')](function(_0x2b7280){_0x1e625d['count']=_0x2b7280;if(_0x428d11['query'][_0xc220('0x41')]){_0x2e2dc2[_0xc220('0x42')]=[{'all':!![]}];}return db[_0xc220('0x40')][_0xc220('0x43')](_0x2e2dc2);})[_0xc220('0x26')](function(_0x5be77e){_0x1e625d[_0xc220('0x44')]=_0x5be77e;return _0x1e625d;})[_0xc220('0x26')](respondWithFilteredResult(_0x1b00f7,_0x2e2dc2))[_0xc220('0x45')](handleError(_0x1b00f7,null));};exports[_0xc220('0x46')]=function(_0x4e8f04,_0x12ffd1){var _0x5b0d39={'raw':!![],'where':{'id':_0x4e8f04[_0xc220('0x47')]['id']}},_0x3f6723={};_0x3f6723[_0xc220('0x34')]=_[_0xc220('0x32')](db['FaxQueue'][_0xc220('0x48')]);_0x3f6723['query']=_[_0xc220('0x32')](_0x4e8f04[_0xc220('0x31')]);_0x3f6723[_0xc220('0x3b')]=_[_0xc220('0x33')](_0x3f6723[_0xc220('0x34')],_0x3f6723[_0xc220('0x31')]);_0x5b0d39[_0xc220('0x35')]=_[_0xc220('0x33')](_0x3f6723[_0xc220('0x34')],qs[_0xc220('0x36')](_0x4e8f04['query'][_0xc220('0x36')]));_0x5b0d39['attributes']=_0x5b0d39[_0xc220('0x35')][_0xc220('0x37')]?_0x5b0d39[_0xc220('0x35')]:_0x3f6723[_0xc220('0x34')];if(_0x4e8f04[_0xc220('0x31')][_0xc220('0x41')]){_0x5b0d39[_0xc220('0x42')]=[{'all':!![]}];}_0x5b0d39=_[_0xc220('0x3d')]({},_0x5b0d39,_0x4e8f04[_0xc220('0x3f')]);return db[_0xc220('0x40')][_0xc220('0x49')](_0x5b0d39)['then'](handleEntityNotFound(_0x12ffd1,null))[_0xc220('0x26')](respondWithResult(_0x12ffd1,null))[_0xc220('0x45')](handleError(_0x12ffd1,null));};exports[_0xc220('0x4a')]=function(_0x409bdf,_0x19f97f){return db[_0xc220('0x40')][_0xc220('0x4a')](_0x409bdf[_0xc220('0x4b')],{})[_0xc220('0x26')](function(_0x3ae392){var _0x253f66=_0x409bdf[_0xc220('0x4c')][_0xc220('0x27')]({'plain':!![]});if(!_0x253f66)throw new Error(_0xc220('0x4d'));if(_0x253f66[_0xc220('0x4e')]==='user'){var _0x1c62ea=_0x3ae392[_0xc220('0x27')]({'plain':!![]});var _0x22a179='FaxQueues';return db['UserProfileSection'][_0xc220('0x49')]({'where':{'name':_0x22a179,'userProfileId':_0x253f66[_0xc220('0x4f')]},'raw':!![]})[_0xc220('0x26')](function(_0xf737c7){if(_0xf737c7&&_0xf737c7[_0xc220('0x50')]===0x0){return db[_0xc220('0x29')][_0xc220('0x4a')]({'name':_0x1c62ea[_0xc220('0x2c')],'resourceId':_0x1c62ea['id'],'type':_0xf737c7[_0xc220('0x2c')],'sectionId':_0xf737c7['id']},{})['then'](function(){return _0x3ae392;});}else{return _0x3ae392;}})[_0xc220('0x45')](function(_0x4fc845){logger[_0xc220('0x2b')](_0xc220('0x51'),_0x4fc845);throw _0x4fc845;});}return _0x3ae392;})[_0xc220('0x26')](respondWithResult(_0x19f97f,0xc9))[_0xc220('0x45')](handleError(_0x19f97f,null));};exports[_0xc220('0x25')]=function(_0xe1f75e,_0xeefa18){if(_0xe1f75e[_0xc220('0x4b')]['id']){delete _0xe1f75e[_0xc220('0x4b')]['id'];}return db[_0xc220('0x40')][_0xc220('0x49')]({'where':{'id':_0xe1f75e[_0xc220('0x47')]['id']}})[_0xc220('0x26')](handleEntityNotFound(_0xeefa18,null))[_0xc220('0x26')](saveUpdates(_0xe1f75e['body'],null))[_0xc220('0x26')](respondWithResult(_0xeefa18,null))[_0xc220('0x45')](handleError(_0xeefa18,null));};exports[_0xc220('0x2a')]=function(_0x2d8784,_0x4a6379){return db['FaxQueue'][_0xc220('0x49')]({'where':{'id':_0x2d8784[_0xc220('0x47')]['id']}})[_0xc220('0x26')](handleEntityNotFound(_0x4a6379,null))[_0xc220('0x26')](removeEntity(_0x4a6379,null))[_0xc220('0x45')](handleError(_0x4a6379,null));};exports[_0xc220('0x52')]=function(_0x51eb75,_0x13abc4){return db[_0xc220('0x40')][_0xc220('0x52')]()['then'](respondWithResult(_0x13abc4,null))[_0xc220('0x45')](handleError(_0x13abc4,null));};exports[_0xc220('0x53')]=function(_0x2531d7,_0x4e18c8,_0x56a7bf){var _0x11aa1c={'raw':!![],'where':{}},_0xfbb13e={},_0x134b1f;return db[_0xc220('0x40')]['findOne']({'where':{'id':_0x2531d7['params']['id']}})[_0xc220('0x26')](handleEntityNotFound(_0x4e18c8,null))[_0xc220('0x26')](function(_0x49df8b){if(_0x49df8b){_0x134b1f=_0x49df8b[_0xc220('0x27')]({'plain':!![]});_0xfbb13e[_0xc220('0x34')]=_[_0xc220('0x32')](db['UserFaxQueue'][_0xc220('0x48')]);_0xfbb13e[_0xc220('0x31')]=_[_0xc220('0x32')](_0x2531d7['query']);_0xfbb13e[_0xc220('0x3b')]=_[_0xc220('0x33')](_0xfbb13e[_0xc220('0x34')],_0xfbb13e[_0xc220('0x31')]);_0x11aa1c['attributes']=_[_0xc220('0x33')](_0xfbb13e[_0xc220('0x34')],qs[_0xc220('0x36')](_0x2531d7[_0xc220('0x31')][_0xc220('0x36')]));_0x11aa1c['attributes']=_0x11aa1c[_0xc220('0x35')][_0xc220('0x37')]?_0x11aa1c[_0xc220('0x35')]:_0xfbb13e['model'];if(!_0x2531d7[_0xc220('0x31')][_0xc220('0x54')](_0xc220('0x55'))){_0x11aa1c['limit']=qs[_0xc220('0x21')](_0x2531d7[_0xc220('0x31')][_0xc220('0x21')]);_0x11aa1c['offset']=qs[_0xc220('0x1e')](_0x2531d7[_0xc220('0x31')][_0xc220('0x1e')]);}_0x11aa1c[_0xc220('0x56')]=qs[_0xc220('0x38')](_0x2531d7[_0xc220('0x31')][_0xc220('0x38')]);_0x11aa1c[_0xc220('0x39')]=qs[_0xc220('0x3b')](_[_0xc220('0x3a')](_0x2531d7[_0xc220('0x31')],_0xfbb13e[_0xc220('0x3b')]));_0x11aa1c[_0xc220('0x39')]['FaxQueueId']=_0x49df8b['id'];if(_0x2531d7[_0xc220('0x31')][_0xc220('0x3c')]){_0x11aa1c['where']=_[_0xc220('0x3d')](_0x11aa1c[_0xc220('0x39')],{'$or':_['map'](_0x11aa1c[_0xc220('0x35')],function(_0x51d8f3){var _0x22bd32={};_0x22bd32[_0x51d8f3]={'$like':'%'+_0x2531d7['query'][_0xc220('0x3c')]+'%'};return _0x22bd32;})});}_0x11aa1c=_['merge']({},_0x11aa1c,_0x2531d7[_0xc220('0x3f')]);return db[_0xc220('0x57')]['findAll'](_0x11aa1c);}})[_0xc220('0x26')](function(_0x10937d){if(_0x10937d){return db[_0xc220('0x58')][_0xc220('0x59')]({'where':{'id':_['map'](_0x10937d,_0xc220('0x5a')),'role':_0xc220('0x5b')},'attributes':['id',_0xc220('0x2c'),'faxPause',_0xc220('0x5c'),_0xc220('0x5d')]});}})['then'](function(_0x3b820c){if(_0x3b820c){return{'count':_0x3b820c['count'],'rows':_[_0xc220('0x2e')](_0x3b820c[_0xc220('0x44')],function(_0x11efbf){return{'membername':_0x11efbf[_0xc220('0x2c')],'UserId':_0x11efbf['id'],'queue_name':_0x134b1f[_0xc220('0x2c')],'FaxQueueId':_0x134b1f['id'],'interface':util[_0xc220('0x5e')](_0xc220('0x5f'),_0xc220('0x60'),_0x11efbf['name']),'penalty':0x0,'paused':_0x11efbf[_0xc220('0x61')],'createdAt':_0x11efbf[_0xc220('0x5d')],'updatedAt':_0x11efbf[_0xc220('0x5c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xc220('0x26')](respondWithFilteredResult(_0x4e18c8,_0x11aa1c))[_0xc220('0x45')](handleError(_0x4e18c8,null));};exports[_0xc220('0x62')]=function(_0x4d3214,_0x260125,_0xfae312){var _0x35b706={};var _0x304739={};var _0x5eeb60;var _0x5412e4;return db[_0xc220('0x40')][_0xc220('0x63')]({'where':{'id':_0x4d3214[_0xc220('0x47')]['id']}})[_0xc220('0x26')](handleEntityNotFound(_0x260125,null))[_0xc220('0x26')](function(_0x414045){if(_0x414045){_0x5eeb60=_0x414045;_0x304739[_0xc220('0x34')]=_[_0xc220('0x32')](db[_0xc220('0x64')][_0xc220('0x48')]);_0x304739[_0xc220('0x31')]=_[_0xc220('0x32')](_0x4d3214[_0xc220('0x31')]);_0x304739[_0xc220('0x3b')]=_['intersection'](_0x304739['model'],_0x304739['query']);_0x35b706[_0xc220('0x35')]=_[_0xc220('0x33')](_0x304739['model'],qs[_0xc220('0x36')](_0x4d3214[_0xc220('0x31')][_0xc220('0x36')]));_0x35b706[_0xc220('0x35')]=_0x35b706[_0xc220('0x35')][_0xc220('0x37')]?_0x35b706[_0xc220('0x35')]:_0x304739[_0xc220('0x34')];_0x35b706[_0xc220('0x56')]=qs[_0xc220('0x38')](_0x4d3214[_0xc220('0x31')][_0xc220('0x38')]);_0x35b706[_0xc220('0x39')]=qs[_0xc220('0x3b')](_[_0xc220('0x3a')](_0x4d3214[_0xc220('0x31')],_0x304739['filters']));if(_0x4d3214[_0xc220('0x31')][_0xc220('0x3c')]){_0x35b706[_0xc220('0x39')]=_[_0xc220('0x3d')](_0x35b706['where'],{'$or':_[_0xc220('0x2e')](_0x35b706['attributes'],function(_0x73a6d6){var _0x34d112={};_0x34d112[_0x73a6d6]={'$like':'%'+_0x4d3214[_0xc220('0x31')][_0xc220('0x3c')]+'%'};return _0x34d112;})});}_0x35b706=_[_0xc220('0x3d')]({},_0x35b706,_0x4d3214['options']);return _0x5eeb60['getTeams'](_0x35b706);}})['then'](function(_0x450f1b){if(_0x450f1b){_0x5412e4=_0x450f1b[_0xc220('0x37')];if(!_0x4d3214[_0xc220('0x31')][_0xc220('0x54')](_0xc220('0x55'))){_0x35b706[_0xc220('0x21')]=qs[_0xc220('0x21')](_0x4d3214[_0xc220('0x31')][_0xc220('0x21')]);_0x35b706[_0xc220('0x1e')]=qs[_0xc220('0x1e')](_0x4d3214[_0xc220('0x31')][_0xc220('0x1e')]);}return _0x5eeb60[_0xc220('0x62')](_0x35b706);}})[_0xc220('0x26')](function(_0x33bac6){if(_0x33bac6){return _0x33bac6?{'count':_0x5412e4,'rows':_0x33bac6}:null;}})[_0xc220('0x26')](respondWithResult(_0x260125,null))['catch'](handleError(_0x260125,null));};exports[_0xc220('0x65')]=function(_0x7bc24d,_0x27ec90,_0x12c567){var _0x27557b=_0x7bc24d[_0xc220('0x4b')][_0xc220('0x66')];return db[_0xc220('0x64')][_0xc220('0x43')]({'where':{'id':_0x27557b},'attributes':['id'],'include':[{'model':db[_0xc220('0x58')],'as':_0xc220('0x67'),'attributes':['id',_0xc220('0x2c'),_0xc220('0x68'),_0xc220('0x69'),_0xc220('0x6a')],'raw':!![]}]})[_0xc220('0x26')](function(_0x4f23ab){if(_0x4f23ab){var _0x386c35=_[_0xc220('0x6b')](_0x4f23ab,function(_0x30c909){var _0x1e2784=_0x30c909[_0xc220('0x27')]({'plain':!![]});return _0x1e2784[_0xc220('0x67')];});return db[_0xc220('0x40')]['find']({'where':{'id':_0x7bc24d['params']['id']}})[_0xc220('0x26')](function(_0x4def2e){return db[_0xc220('0x6c')][_0xc220('0x6d')](function(_0x479fcd){return _0x4def2e[_0xc220('0x65')](_0x27557b,{'transaction':_0x479fcd})['then'](function(){return BPromise['each'](_0x386c35,function(_0x3153a9){return db[_0xc220('0x57')][_0xc220('0x6e')]({'where':{'UserId':_0x3153a9['id'],'FaxQueueId':_0x7bc24d[_0xc220('0x47')]['id']},'transaction':_0x479fcd});});})[_0xc220('0x26')](function(){_0x386c35[_0xc220('0x6f')](function(_0x3fa395){socket[_0xc220('0x70')](_0xc220('0x71'),{'UserId':_0x3fa395['id'],'FaxQueueId':_0x4def2e['id']});});});});});}})[_0xc220('0x26')](respondWithStatusCode(_0x27ec90,null))[_0xc220('0x45')](handleError(_0x27ec90,null));};exports[_0xc220('0x72')]=function(_0x15bfb2,_0x3517d6,_0x2307b9){return db[_0xc220('0x64')][_0xc220('0x43')]({'where':{'id':_0x15bfb2[_0xc220('0x31')][_0xc220('0x66')]},'attributes':['id'],'include':[{'model':db[_0xc220('0x58')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xc220('0x26')](handleEntityNotFound(_0x3517d6,null))[_0xc220('0x26')](function(_0x5e4b21){var _0x79f9d2=_[_0xc220('0x2e')](_0x5e4b21,'id');var _0x4b8af9=[];var _0x1d6ba4=[];var _0x3cd7d4=squel[_0xc220('0x73')]();_0x3cd7d4['field'](_0xc220('0x74'))['from'](_0xc220('0x75'),'tq')[_0xc220('0x76')]('user_has_teams','ut',_0xc220('0x77'))['where'](_0xc220('0x78'),_0x15bfb2[_0xc220('0x47')]['id']);for(var _0x16f8c8=0x0;_0x16f8c8<_0x5e4b21['length'];_0x16f8c8+=0x1){let _0x399817=_0x5e4b21[_0x16f8c8];for(var _0x31119f=0x0;_0x31119f<_0x399817[_0xc220('0x67')]['length'];_0x31119f+=0x1){let _0x8960f0=_0x399817[_0xc220('0x67')][_0x31119f];var _0xa7c0c6=_0x3cd7d4['clone']();_0xa7c0c6[_0xc220('0x39')](_0xc220('0x79'),_0x8960f0['id']);_0x1d6ba4['push'](db['sequelize'][_0xc220('0x31')](_0xa7c0c6[_0xc220('0x7a')](),{'type':db[_0xc220('0x6c')][_0xc220('0x7b')]['SELECT']})[_0xc220('0x26')](function(_0x40cde5){if(_0x40cde5[_0xc220('0x37')]===0x1){return _0x8960f0['id'];}else{var _0x103008=_[_0xc220('0x7c')](_[_0xc220('0x2e')](_0x40cde5,_0xc220('0x7d')),function(_0x243c49){return _['includes'](_0x79f9d2,_0x243c49);});if(_0x103008){return _0x8960f0['id'];}}}));}}return BPromise[_0xc220('0x7e')](_0x1d6ba4)[_0xc220('0x26')](function(_0x5e6d3c){_0x4b8af9=_(_0x4b8af9)[_0xc220('0x7f')](_0x5e6d3c)['compact']()['value']();return db['FaxQueue'][_0xc220('0x49')]({'where':{'id':_0x15bfb2[_0xc220('0x47')]['id']}})[_0xc220('0x26')](function(_0x53d329){return db[_0xc220('0x6c')]['transaction'](function(_0x1d95a3){return _0x53d329[_0xc220('0x72')](_0x15bfb2[_0xc220('0x31')]['ids'],{'transaction':_0x1d95a3})[_0xc220('0x26')](function(){if(!_[_0xc220('0x80')](_0x4b8af9)){return _0x53d329[_0xc220('0x81')](_0x4b8af9,{'transaction':_0x1d95a3});}})['then'](function(){_0x4b8af9['forEach'](function(_0x4b3b89){socket[_0xc220('0x70')](_0xc220('0x82'),{'UserId':_0x4b3b89,'FaxQueueId':_0x53d329['id']});});});});});});})['then'](respondWithStatusCode(_0x3517d6,null))[_0xc220('0x45')](handleError(_0x3517d6,null));};exports['addAgents']=function(_0x39f585,_0x493e7b,_0x1f66a1){return db[_0xc220('0x40')][_0xc220('0x49')]({'where':{'id':_0x39f585['params']['id']}})[_0xc220('0x26')](handleEntityNotFound(_0x493e7b,null))[_0xc220('0x26')](function(_0x5a7111){if(_0x5a7111){return _0x5a7111['addAgents'](_0x39f585['body'][_0xc220('0x66')],_[_0xc220('0x83')](_0x39f585['body'],[_0xc220('0x66'),'id'])||{})[_0xc220('0x84')](function(_0x276ad7){for(var _0x6a1e62=0x0;_0x6a1e62<_0x39f585[_0xc220('0x4b')][_0xc220('0x66')]['length'];_0x6a1e62+=0x1){socket[_0xc220('0x70')](_0xc220('0x71'),{'UserId':Number(_0x39f585[_0xc220('0x4b')][_0xc220('0x66')][_0x6a1e62]),'FaxQueueId':Number(_0x39f585['params']['id'])});}return _0x276ad7;});}})[_0xc220('0x26')](respondWithResult(_0x493e7b,null))[_0xc220('0x45')](handleError(_0x493e7b,null));};exports[_0xc220('0x81')]=function(_0x3107ca,_0x16263f,_0x3c0a3d){return db['FaxQueue']['find']({'where':{'id':_0x3107ca['params']['id']}})['then'](handleEntityNotFound(_0x16263f,null))[_0xc220('0x26')](function(_0x4b7854){if(_0x4b7854){return _0x4b7854[_0xc220('0x81')](_0x3107ca[_0xc220('0x31')][_0xc220('0x66')])[_0xc220('0x26')](function(){if(_[_0xc220('0x85')](_0x3107ca[_0xc220('0x31')][_0xc220('0x66')])){for(var _0x1e45b8=0x0;_0x1e45b8<_0x3107ca['query']['ids']['length'];_0x1e45b8+=0x1){socket[_0xc220('0x70')](_0xc220('0x82'),{'UserId':Number(_0x3107ca[_0xc220('0x31')][_0xc220('0x66')][_0x1e45b8]),'FaxQueueId':Number(_0x3107ca[_0xc220('0x47')]['id'])});}}else{socket[_0xc220('0x70')](_0xc220('0x82'),{'UserId':Number(_0x3107ca[_0xc220('0x31')][_0xc220('0x66')]),'FaxQueueId':Number(_0x3107ca['params']['id'])});}});}})[_0xc220('0x26')](respondWithStatusCode(_0x16263f,null))[_0xc220('0x45')](handleError(_0x16263f,null));};exports[_0xc220('0x86')]=function(_0x546b74,_0x4cf318,_0x25c58b){var _0x5169cf={};var _0x22c128={};var _0x3d09ee;var _0x394b8a;return db[_0xc220('0x40')][_0xc220('0x63')]({'where':{'id':_0x546b74[_0xc220('0x47')]['id']}})[_0xc220('0x26')](handleEntityNotFound(_0x4cf318,null))[_0xc220('0x26')](function(_0x5c1d73){if(_0x5c1d73){_0x3d09ee=_0x5c1d73;_0x22c128[_0xc220('0x34')]=_[_0xc220('0x32')](db[_0xc220('0x58')][_0xc220('0x48')]);_0x22c128[_0xc220('0x31')]=_[_0xc220('0x32')](_0x546b74[_0xc220('0x31')]);_0x22c128['filters']=_[_0xc220('0x33')](_0x22c128[_0xc220('0x34')],_0x22c128[_0xc220('0x31')]);_0x5169cf['attributes']=_['intersection'](_0x22c128['model'],qs[_0xc220('0x36')](_0x546b74['query']['fields']));_0x5169cf[_0xc220('0x35')]=_0x5169cf['attributes']['length']?_0x5169cf['attributes']:_0x22c128[_0xc220('0x34')];_0x5169cf['order']=qs['sort'](_0x546b74[_0xc220('0x31')][_0xc220('0x38')]);_0x5169cf[_0xc220('0x39')]=qs['filters'](_['pick'](_0x546b74[_0xc220('0x31')],_0x22c128[_0xc220('0x3b')]));if(_0x546b74[_0xc220('0x31')]['filter']){_0x5169cf[_0xc220('0x39')]=_['merge'](_0x5169cf['where'],{'$or':_[_0xc220('0x2e')](_0x5169cf[_0xc220('0x35')],function(_0x240da4){var _0x490a68={};_0x490a68[_0x240da4]={'$like':'%'+_0x546b74['query']['filter']+'%'};return _0x490a68;})});}_0x5169cf=_[_0xc220('0x3d')]({},_0x5169cf,_0x546b74[_0xc220('0x3f')]);return _0x3d09ee[_0xc220('0x86')](_0x5169cf);}})['then'](function(_0x248580){if(_0x248580){_0x394b8a=_0x248580[_0xc220('0x37')];if(!_0x546b74[_0xc220('0x31')][_0xc220('0x54')](_0xc220('0x55'))){_0x5169cf[_0xc220('0x21')]=qs[_0xc220('0x21')](_0x546b74[_0xc220('0x31')][_0xc220('0x21')]);_0x5169cf[_0xc220('0x1e')]=qs[_0xc220('0x1e')](_0x546b74[_0xc220('0x31')][_0xc220('0x1e')]);}return _0x3d09ee['getAgents'](_0x5169cf);}})[_0xc220('0x26')](function(_0x6acdd6){if(_0x6acdd6){return _0x6acdd6?{'count':_0x394b8a,'rows':_0x6acdd6}:null;}})['then'](respondWithResult(_0x4cf318,null))[_0xc220('0x45')](handleError(_0x4cf318,null));};
\ No newline at end of file
+var _0xf264=['agent','faxPause','updatedAt','createdAt','format','%s/%s','getTeams','Team','addTeams','findAll','User','Agents','online','voicePause','interface','flatMap','transaction','each','findOrCreate','forEach','emit','removeTeams','ids','field','tq.TeamId','from','team_has_fax_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','push','sequelize','toString','QueryTypes','every','TeamId','all','union','compact','value','isEmpty','userFaxQueue:remove','addAgents','spread','userFaxQueue:save','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','end','limit','undefined','count','offset','set','Content-Range','json','reject','save','then','destroy','get','FaxQueues','UserProfileResource','error','stack','name','send','index','map','FaxQueue','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge','filter','options','include','rows','catch','show','params','rawAttributes','includeAll','find','create','body','user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','getMembers','findOne','UserFaxQueue','nolimit','FaxQueueId','findAndCountAll','UserId'];(function(_0x42bdad,_0x12836c){var _0x122626=function(_0x2eb29c){while(--_0x2eb29c){_0x42bdad['push'](_0x42bdad['shift']());}};_0x122626(++_0x12836c);}(_0xf264,0xc2));var _0x4f26=function(_0x3b25ef,_0x4a116a){_0x3b25ef=_0x3b25ef-0x0;var _0x22c489=_0xf264[_0x3b25ef];return _0x22c489;};'use strict';var emlformat=require(_0x4f26('0x0'));var rimraf=require(_0x4f26('0x1'));var zipdir=require(_0x4f26('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4f26('0x3'));var Mustache=require(_0x4f26('0x4'));var util=require(_0x4f26('0x5'));var path=require('path');var sox=require(_0x4f26('0x6'));var csv=require(_0x4f26('0x7'));var ejs=require(_0x4f26('0x8'));var fs=require('fs');var fs_extra=require(_0x4f26('0x9'));var _=require(_0x4f26('0xa'));var squel=require(_0x4f26('0xb'));var crypto=require('crypto');var jsforce=require(_0x4f26('0xc'));var deskjs=require(_0x4f26('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4f26('0xe'));var Redis=require(_0x4f26('0xf'));var authService=require(_0x4f26('0x10'));var qs=require(_0x4f26('0x11'));var as=require(_0x4f26('0x12'));var hardwareService=require(_0x4f26('0x13'));var logger=require(_0x4f26('0x14'))('api');var utils=require(_0x4f26('0x15'));var config=require(_0x4f26('0x16'));var licenseUtil=require(_0x4f26('0x17'));var db=require(_0x4f26('0x18'))['db'];config[_0x4f26('0x19')]=_[_0x4f26('0x1a')](config[_0x4f26('0x19')],{'host':_0x4f26('0x1b'),'port':0x18eb});var socket=require(_0x4f26('0x1c'))(new Redis(config[_0x4f26('0x19')]));require(_0x4f26('0x1d'))[_0x4f26('0x1e')](socket);function respondWithStatusCode(_0x55e141,_0x47516e){_0x47516e=_0x47516e||0xcc;return function(_0x231dbb){if(_0x231dbb){return _0x55e141[_0x4f26('0x1f')](_0x47516e);}return _0x55e141[_0x4f26('0x20')](_0x47516e)[_0x4f26('0x21')]();};}function respondWithResult(_0x575b4b,_0x40aff0){_0x40aff0=_0x40aff0||0xc8;return function(_0x24681f){if(_0x24681f){return _0x575b4b['status'](_0x40aff0)['json'](_0x24681f);}};}function respondWithFilteredResult(_0x3ff205,_0x59e285){return function(_0x374a36){if(_0x374a36){var _0xab7c8b=typeof _0x59e285['offset']==='undefined'&&typeof _0x59e285[_0x4f26('0x22')]===_0x4f26('0x23');var _0x236ec0=_0x374a36[_0x4f26('0x24')];var _0x2c0a30=_0xab7c8b?0x0:_0x59e285[_0x4f26('0x25')];var _0xd7a230=_0xab7c8b?_0x374a36[_0x4f26('0x24')]:_0x59e285[_0x4f26('0x25')]+_0x59e285['limit'];var _0x369499;if(_0xd7a230>=_0x236ec0){_0xd7a230=_0x236ec0;_0x369499=0xc8;}else{_0x369499=0xce;}_0x3ff205[_0x4f26('0x20')](_0x369499);return _0x3ff205[_0x4f26('0x26')](_0x4f26('0x27'),_0x2c0a30+'-'+_0xd7a230+'/'+_0x236ec0)[_0x4f26('0x28')](_0x374a36);}return null;};}function patchUpdates(_0x5dffa8){return function(_0x5e71a3){try{jsonpatch['apply'](_0x5e71a3,_0x5dffa8,!![]);}catch(_0x16fa33){return BPromise[_0x4f26('0x29')](_0x16fa33);}return _0x5e71a3[_0x4f26('0x2a')]();};}function saveUpdates(_0x1e4cb1,_0x2c9fc6){return function(_0x4ca0e3){if(_0x4ca0e3){return _0x4ca0e3['update'](_0x1e4cb1)[_0x4f26('0x2b')](function(_0x2f96fd){return _0x2f96fd;});}return null;};}function removeEntity(_0x20b990,_0xefb00a){return function(_0x15dc2f){if(_0x15dc2f){return _0x15dc2f[_0x4f26('0x2c')]()['then'](function(){var _0x4cfd65=_0x15dc2f[_0x4f26('0x2d')]({'plain':!![]});var _0x5da285=_0x4f26('0x2e');return db[_0x4f26('0x2f')][_0x4f26('0x2c')]({'where':{'type':_0x5da285,'resourceId':_0x4cfd65['id']}})[_0x4f26('0x2b')](function(){return _0x15dc2f;});})[_0x4f26('0x2b')](function(){_0x20b990[_0x4f26('0x20')](0xcc)[_0x4f26('0x21')]();});}};}function handleEntityNotFound(_0x23fefd,_0x2196ef){return function(_0x2b411c){if(!_0x2b411c){_0x23fefd[_0x4f26('0x1f')](0x194);}return _0x2b411c;};}function handleError(_0x3dd1ff,_0x1f99d7){_0x1f99d7=_0x1f99d7||0x1f4;return function(_0x179f4c){logger[_0x4f26('0x30')](_0x179f4c[_0x4f26('0x31')]);if(_0x179f4c[_0x4f26('0x32')]){delete _0x179f4c[_0x4f26('0x32')];}_0x3dd1ff[_0x4f26('0x20')](_0x1f99d7)[_0x4f26('0x33')](_0x179f4c);};}exports[_0x4f26('0x34')]=function(_0x386049,_0x48c08a){var _0x40afe2={},_0x2a8d5e={},_0x42941c={'count':0x0,'rows':[]};var _0x5c41dc=_[_0x4f26('0x35')](db[_0x4f26('0x36')]['rawAttributes'],function(_0x52b0e7){return{'name':_0x52b0e7[_0x4f26('0x37')],'type':_0x52b0e7[_0x4f26('0x38')][_0x4f26('0x39')]};});_0x2a8d5e['model']=_[_0x4f26('0x35')](_0x5c41dc,_0x4f26('0x32'));_0x2a8d5e[_0x4f26('0x3a')]=_[_0x4f26('0x3b')](_0x386049['query']);_0x2a8d5e[_0x4f26('0x3c')]=_[_0x4f26('0x3d')](_0x2a8d5e[_0x4f26('0x3e')],_0x2a8d5e[_0x4f26('0x3a')]);_0x40afe2['attributes']=_['intersection'](_0x2a8d5e[_0x4f26('0x3e')],qs[_0x4f26('0x3f')](_0x386049[_0x4f26('0x3a')][_0x4f26('0x3f')]));_0x40afe2[_0x4f26('0x40')]=_0x40afe2['attributes'][_0x4f26('0x41')]?_0x40afe2['attributes']:_0x2a8d5e[_0x4f26('0x3e')];if(!_0x386049['query'][_0x4f26('0x42')]('nolimit')){_0x40afe2['limit']=qs[_0x4f26('0x22')](_0x386049[_0x4f26('0x3a')][_0x4f26('0x22')]);_0x40afe2[_0x4f26('0x25')]=qs['offset'](_0x386049[_0x4f26('0x3a')][_0x4f26('0x25')]);}_0x40afe2[_0x4f26('0x43')]=qs['sort'](_0x386049[_0x4f26('0x3a')][_0x4f26('0x44')]);_0x40afe2[_0x4f26('0x45')]=qs['filters'](_[_0x4f26('0x46')](_0x386049[_0x4f26('0x3a')],_0x2a8d5e[_0x4f26('0x3c')]),_0x5c41dc);if(_0x386049[_0x4f26('0x3a')]['filter']){_0x40afe2[_0x4f26('0x45')]=_[_0x4f26('0x47')](_0x40afe2[_0x4f26('0x45')],{'$or':_[_0x4f26('0x35')](_0x5c41dc,function(_0xfae072){if(_0xfae072[_0x4f26('0x38')]!=='VIRTUAL'){var _0x457eac={};_0x457eac[_0xfae072[_0x4f26('0x32')]]={'$like':'%'+_0x386049[_0x4f26('0x3a')][_0x4f26('0x48')]+'%'};return _0x457eac;}})});}_0x40afe2=_['merge']({},_0x40afe2,_0x386049[_0x4f26('0x49')]);var _0x2440ee={'where':_0x40afe2[_0x4f26('0x45')]};return db[_0x4f26('0x36')][_0x4f26('0x24')](_0x2440ee)[_0x4f26('0x2b')](function(_0x2c78c5){_0x42941c[_0x4f26('0x24')]=_0x2c78c5;if(_0x386049[_0x4f26('0x3a')]['includeAll']){_0x40afe2[_0x4f26('0x4a')]=[{'all':!![]}];}return db[_0x4f26('0x36')]['findAll'](_0x40afe2);})['then'](function(_0x57036c){_0x42941c[_0x4f26('0x4b')]=_0x57036c;return _0x42941c;})['then'](respondWithFilteredResult(_0x48c08a,_0x40afe2))[_0x4f26('0x4c')](handleError(_0x48c08a,null));};exports[_0x4f26('0x4d')]=function(_0x1b516c,_0x3dd50f){var _0x551c5d={'raw':!![],'where':{'id':_0x1b516c[_0x4f26('0x4e')]['id']}},_0x51744c={};_0x51744c['model']=_[_0x4f26('0x3b')](db[_0x4f26('0x36')][_0x4f26('0x4f')]);_0x51744c[_0x4f26('0x3a')]=_['keys'](_0x1b516c[_0x4f26('0x3a')]);_0x51744c['filters']=_[_0x4f26('0x3d')](_0x51744c[_0x4f26('0x3e')],_0x51744c[_0x4f26('0x3a')]);_0x551c5d[_0x4f26('0x40')]=_[_0x4f26('0x3d')](_0x51744c[_0x4f26('0x3e')],qs[_0x4f26('0x3f')](_0x1b516c[_0x4f26('0x3a')][_0x4f26('0x3f')]));_0x551c5d['attributes']=_0x551c5d[_0x4f26('0x40')][_0x4f26('0x41')]?_0x551c5d['attributes']:_0x51744c[_0x4f26('0x3e')];if(_0x1b516c['query'][_0x4f26('0x50')]){_0x551c5d[_0x4f26('0x4a')]=[{'all':!![]}];}_0x551c5d=_['merge']({},_0x551c5d,_0x1b516c[_0x4f26('0x49')]);return db[_0x4f26('0x36')][_0x4f26('0x51')](_0x551c5d)[_0x4f26('0x2b')](handleEntityNotFound(_0x3dd50f,null))[_0x4f26('0x2b')](respondWithResult(_0x3dd50f,null))[_0x4f26('0x4c')](handleError(_0x3dd50f,null));};exports[_0x4f26('0x52')]=function(_0x12968a,_0xb9aa2c){return db[_0x4f26('0x36')][_0x4f26('0x52')](_0x12968a[_0x4f26('0x53')],{})['then'](function(_0x2e081d){var _0x1231cd=_0x12968a[_0x4f26('0x54')][_0x4f26('0x2d')]({'plain':!![]});if(!_0x1231cd)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1231cd[_0x4f26('0x55')]===_0x4f26('0x54')){var _0xb33415=_0x2e081d['get']({'plain':!![]});var _0x475482=_0x4f26('0x2e');return db[_0x4f26('0x56')][_0x4f26('0x51')]({'where':{'name':_0x475482,'userProfileId':_0x1231cd[_0x4f26('0x57')]},'raw':!![]})[_0x4f26('0x2b')](function(_0x4cbdef){if(_0x4cbdef&&_0x4cbdef['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0xb33415[_0x4f26('0x32')],'resourceId':_0xb33415['id'],'type':_0x4cbdef[_0x4f26('0x32')],'sectionId':_0x4cbdef['id']},{})[_0x4f26('0x2b')](function(){return _0x2e081d;});}else{return _0x2e081d;}})[_0x4f26('0x4c')](function(_0x41a699){logger['error'](_0x4f26('0x58'),_0x41a699);throw _0x41a699;});}return _0x2e081d;})[_0x4f26('0x2b')](respondWithResult(_0xb9aa2c,0xc9))[_0x4f26('0x4c')](handleError(_0xb9aa2c,null));};exports[_0x4f26('0x59')]=function(_0x37ef22,_0x4ed0ec){if(_0x37ef22[_0x4f26('0x53')]['id']){delete _0x37ef22[_0x4f26('0x53')]['id'];}return db[_0x4f26('0x36')]['find']({'where':{'id':_0x37ef22['params']['id']}})[_0x4f26('0x2b')](handleEntityNotFound(_0x4ed0ec,null))[_0x4f26('0x2b')](saveUpdates(_0x37ef22[_0x4f26('0x53')],null))[_0x4f26('0x2b')](respondWithResult(_0x4ed0ec,null))[_0x4f26('0x4c')](handleError(_0x4ed0ec,null));};exports[_0x4f26('0x2c')]=function(_0x3b31ea,_0x4ed535){return db[_0x4f26('0x36')][_0x4f26('0x51')]({'where':{'id':_0x3b31ea[_0x4f26('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4ed535,null))['then'](removeEntity(_0x4ed535,null))[_0x4f26('0x4c')](handleError(_0x4ed535,null));};exports[_0x4f26('0x5a')]=function(_0x595675,_0x3a7b81){return db[_0x4f26('0x36')]['describe']()[_0x4f26('0x2b')](respondWithResult(_0x3a7b81,null))['catch'](handleError(_0x3a7b81,null));};exports[_0x4f26('0x5b')]=function(_0x2ec2ee,_0x525cf6,_0x5de12e){var _0x1ac8e2={'raw':!![],'where':{}},_0x570c6f={},_0x197d8f;return db[_0x4f26('0x36')][_0x4f26('0x5c')]({'where':{'id':_0x2ec2ee['params']['id']}})[_0x4f26('0x2b')](handleEntityNotFound(_0x525cf6,null))[_0x4f26('0x2b')](function(_0x3daaaa){if(_0x3daaaa){_0x197d8f=_0x3daaaa[_0x4f26('0x2d')]({'plain':!![]});_0x570c6f['model']=_['keys'](db[_0x4f26('0x5d')][_0x4f26('0x4f')]);_0x570c6f[_0x4f26('0x3a')]=_[_0x4f26('0x3b')](_0x2ec2ee['query']);_0x570c6f['filters']=_[_0x4f26('0x3d')](_0x570c6f[_0x4f26('0x3e')],_0x570c6f[_0x4f26('0x3a')]);_0x1ac8e2[_0x4f26('0x40')]=_['intersection'](_0x570c6f['model'],qs[_0x4f26('0x3f')](_0x2ec2ee[_0x4f26('0x3a')][_0x4f26('0x3f')]));_0x1ac8e2[_0x4f26('0x40')]=_0x1ac8e2[_0x4f26('0x40')][_0x4f26('0x41')]?_0x1ac8e2[_0x4f26('0x40')]:_0x570c6f[_0x4f26('0x3e')];if(!_0x2ec2ee['query'][_0x4f26('0x42')](_0x4f26('0x5e'))){_0x1ac8e2['limit']=qs[_0x4f26('0x22')](_0x2ec2ee[_0x4f26('0x3a')][_0x4f26('0x22')]);_0x1ac8e2[_0x4f26('0x25')]=qs[_0x4f26('0x25')](_0x2ec2ee[_0x4f26('0x3a')][_0x4f26('0x25')]);}_0x1ac8e2['order']=qs['sort'](_0x2ec2ee[_0x4f26('0x3a')][_0x4f26('0x44')]);_0x1ac8e2[_0x4f26('0x45')]=qs[_0x4f26('0x3c')](_[_0x4f26('0x46')](_0x2ec2ee[_0x4f26('0x3a')],_0x570c6f[_0x4f26('0x3c')]));_0x1ac8e2[_0x4f26('0x45')][_0x4f26('0x5f')]=_0x3daaaa['id'];if(_0x2ec2ee[_0x4f26('0x3a')][_0x4f26('0x48')]){_0x1ac8e2['where']=_[_0x4f26('0x47')](_0x1ac8e2[_0x4f26('0x45')],{'$or':_['map'](_0x1ac8e2[_0x4f26('0x40')],function(_0x485b6b){var _0x5df764={};_0x5df764[_0x485b6b]={'$like':'%'+_0x2ec2ee[_0x4f26('0x3a')][_0x4f26('0x48')]+'%'};return _0x5df764;})});}_0x1ac8e2=_[_0x4f26('0x47')]({},_0x1ac8e2,_0x2ec2ee[_0x4f26('0x49')]);return db[_0x4f26('0x5d')]['findAll'](_0x1ac8e2);}})[_0x4f26('0x2b')](function(_0x7fad6c){if(_0x7fad6c){return db['User'][_0x4f26('0x60')]({'where':{'id':_[_0x4f26('0x35')](_0x7fad6c,_0x4f26('0x61')),'role':_0x4f26('0x62')},'attributes':['id','name',_0x4f26('0x63'),_0x4f26('0x64'),_0x4f26('0x65')]});}})[_0x4f26('0x2b')](function(_0x54c863){if(_0x54c863){return{'count':_0x54c863['count'],'rows':_['map'](_0x54c863[_0x4f26('0x4b')],function(_0x59ad4d){return{'membername':_0x59ad4d[_0x4f26('0x32')],'UserId':_0x59ad4d['id'],'queue_name':_0x197d8f[_0x4f26('0x32')],'FaxQueueId':_0x197d8f['id'],'interface':util[_0x4f26('0x66')](_0x4f26('0x67'),'SIP',_0x59ad4d[_0x4f26('0x32')]),'penalty':0x0,'paused':_0x59ad4d[_0x4f26('0x63')],'createdAt':_0x59ad4d[_0x4f26('0x65')],'updatedAt':_0x59ad4d['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x4f26('0x2b')](respondWithFilteredResult(_0x525cf6,_0x1ac8e2))[_0x4f26('0x4c')](handleError(_0x525cf6,null));};exports[_0x4f26('0x68')]=function(_0x458110,_0x561e0b,_0xfb6959){var _0x40201b={};var _0x24bfe7={};var _0x266087;var _0x204a56;return db[_0x4f26('0x36')]['findOne']({'where':{'id':_0x458110[_0x4f26('0x4e')]['id']}})[_0x4f26('0x2b')](handleEntityNotFound(_0x561e0b,null))['then'](function(_0x48bee5){if(_0x48bee5){_0x266087=_0x48bee5;_0x24bfe7[_0x4f26('0x3e')]=_['keys'](db[_0x4f26('0x69')]['rawAttributes']);_0x24bfe7[_0x4f26('0x3a')]=_[_0x4f26('0x3b')](_0x458110['query']);_0x24bfe7[_0x4f26('0x3c')]=_[_0x4f26('0x3d')](_0x24bfe7['model'],_0x24bfe7['query']);_0x40201b['attributes']=_[_0x4f26('0x3d')](_0x24bfe7['model'],qs[_0x4f26('0x3f')](_0x458110['query'][_0x4f26('0x3f')]));_0x40201b[_0x4f26('0x40')]=_0x40201b[_0x4f26('0x40')][_0x4f26('0x41')]?_0x40201b[_0x4f26('0x40')]:_0x24bfe7[_0x4f26('0x3e')];_0x40201b['order']=qs['sort'](_0x458110[_0x4f26('0x3a')][_0x4f26('0x44')]);_0x40201b[_0x4f26('0x45')]=qs[_0x4f26('0x3c')](_[_0x4f26('0x46')](_0x458110[_0x4f26('0x3a')],_0x24bfe7[_0x4f26('0x3c')]));if(_0x458110['query'][_0x4f26('0x48')]){_0x40201b[_0x4f26('0x45')]=_[_0x4f26('0x47')](_0x40201b[_0x4f26('0x45')],{'$or':_['map'](_0x40201b[_0x4f26('0x40')],function(_0x49efb2){var _0x4c5def={};_0x4c5def[_0x49efb2]={'$like':'%'+_0x458110[_0x4f26('0x3a')][_0x4f26('0x48')]+'%'};return _0x4c5def;})});}_0x40201b=_[_0x4f26('0x47')]({},_0x40201b,_0x458110[_0x4f26('0x49')]);return _0x266087[_0x4f26('0x68')](_0x40201b);}})[_0x4f26('0x2b')](function(_0x568fed){if(_0x568fed){_0x204a56=_0x568fed['length'];if(!_0x458110['query']['hasOwnProperty']('nolimit')){_0x40201b['limit']=qs[_0x4f26('0x22')](_0x458110[_0x4f26('0x3a')][_0x4f26('0x22')]);_0x40201b[_0x4f26('0x25')]=qs[_0x4f26('0x25')](_0x458110['query'][_0x4f26('0x25')]);}return _0x266087[_0x4f26('0x68')](_0x40201b);}})[_0x4f26('0x2b')](function(_0x594c46){if(_0x594c46){return _0x594c46?{'count':_0x204a56,'rows':_0x594c46}:null;}})[_0x4f26('0x2b')](respondWithResult(_0x561e0b,null))['catch'](handleError(_0x561e0b,null));};exports[_0x4f26('0x6a')]=function(_0x1642d2,_0x39f61c,_0x5aab20){var _0x653f68=_0x1642d2['body']['ids'];return db[_0x4f26('0x69')][_0x4f26('0x6b')]({'where':{'id':_0x653f68},'attributes':['id'],'include':[{'model':db[_0x4f26('0x6c')],'as':_0x4f26('0x6d'),'attributes':['id','name',_0x4f26('0x6e'),_0x4f26('0x6f'),_0x4f26('0x70')],'raw':!![]}]})['then'](function(_0x11ec7c){if(_0x11ec7c){var _0x3844f3=_[_0x4f26('0x71')](_0x11ec7c,function(_0x22b36f){var _0x4d72d1=_0x22b36f['get']({'plain':!![]});return _0x4d72d1[_0x4f26('0x6d')];});return db['FaxQueue'][_0x4f26('0x51')]({'where':{'id':_0x1642d2[_0x4f26('0x4e')]['id']}})[_0x4f26('0x2b')](function(_0x339036){return db['sequelize'][_0x4f26('0x72')](function(_0x478485){return _0x339036['addTeams'](_0x653f68,{'transaction':_0x478485})['then'](function(){return BPromise[_0x4f26('0x73')](_0x3844f3,function(_0x1e2c77){return db[_0x4f26('0x5d')][_0x4f26('0x74')]({'where':{'UserId':_0x1e2c77['id'],'FaxQueueId':_0x1642d2[_0x4f26('0x4e')]['id']},'transaction':_0x478485});});})[_0x4f26('0x2b')](function(){_0x3844f3[_0x4f26('0x75')](function(_0x2cb464){socket[_0x4f26('0x76')]('userFaxQueue:save',{'UserId':_0x2cb464['id'],'FaxQueueId':_0x339036['id']});});});});});}})['then'](respondWithStatusCode(_0x39f61c,null))['catch'](handleError(_0x39f61c,null));};exports[_0x4f26('0x77')]=function(_0x1cf428,_0x3850c4,_0x5bc47d){return db[_0x4f26('0x69')][_0x4f26('0x6b')]({'where':{'id':_0x1cf428['query'][_0x4f26('0x78')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x4f26('0x6d'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x3850c4,null))[_0x4f26('0x2b')](function(_0x1713e1){var _0x5898af=_['map'](_0x1713e1,'id');var _0x5cbaa3=[];var _0x45149b=[];var _0x462bd5=squel['select']();_0x462bd5[_0x4f26('0x79')](_0x4f26('0x7a'))[_0x4f26('0x7b')](_0x4f26('0x7c'),'tq')['join'](_0x4f26('0x7d'),'ut',_0x4f26('0x7e'))[_0x4f26('0x45')]('FaxQueueId\x20=\x20?',_0x1cf428[_0x4f26('0x4e')]['id']);for(var _0x6798e8=0x0;_0x6798e8<_0x1713e1['length'];_0x6798e8+=0x1){let _0x2eee61=_0x1713e1[_0x6798e8];for(var _0x51ba26=0x0;_0x51ba26<_0x2eee61[_0x4f26('0x6d')][_0x4f26('0x41')];_0x51ba26+=0x1){let _0xb7f5dd=_0x2eee61[_0x4f26('0x6d')][_0x51ba26];var _0x3a446a=_0x462bd5[_0x4f26('0x7f')]();_0x3a446a[_0x4f26('0x45')]('ut.UserId\x20=\x20?',_0xb7f5dd['id']);_0x45149b[_0x4f26('0x80')](db[_0x4f26('0x81')][_0x4f26('0x3a')](_0x3a446a[_0x4f26('0x82')](),{'type':db[_0x4f26('0x81')][_0x4f26('0x83')]['SELECT']})['then'](function(_0x2573ba){if(_0x2573ba[_0x4f26('0x41')]===0x1){return _0xb7f5dd['id'];}else{var _0x45864d=_[_0x4f26('0x84')](_['map'](_0x2573ba,_0x4f26('0x85')),function(_0x45c31e){return _['includes'](_0x5898af,_0x45c31e);});if(_0x45864d){return _0xb7f5dd['id'];}}}));}}return BPromise[_0x4f26('0x86')](_0x45149b)['then'](function(_0x6a772d){_0x5cbaa3=_(_0x5cbaa3)[_0x4f26('0x87')](_0x6a772d)[_0x4f26('0x88')]()[_0x4f26('0x89')]();return db[_0x4f26('0x36')][_0x4f26('0x51')]({'where':{'id':_0x1cf428[_0x4f26('0x4e')]['id']}})[_0x4f26('0x2b')](function(_0x330dc1){return db[_0x4f26('0x81')][_0x4f26('0x72')](function(_0x4f900d){return _0x330dc1[_0x4f26('0x77')](_0x1cf428[_0x4f26('0x3a')][_0x4f26('0x78')],{'transaction':_0x4f900d})[_0x4f26('0x2b')](function(){if(!_[_0x4f26('0x8a')](_0x5cbaa3)){return _0x330dc1['removeAgents'](_0x5cbaa3,{'transaction':_0x4f900d});}})[_0x4f26('0x2b')](function(){_0x5cbaa3[_0x4f26('0x75')](function(_0x23d63b){socket[_0x4f26('0x76')](_0x4f26('0x8b'),{'UserId':_0x23d63b,'FaxQueueId':_0x330dc1['id']});});});});});});})[_0x4f26('0x2b')](respondWithStatusCode(_0x3850c4,null))['catch'](handleError(_0x3850c4,null));};exports[_0x4f26('0x8c')]=function(_0x24ef2b,_0x1c8c94,_0x5bea19){return db[_0x4f26('0x36')][_0x4f26('0x51')]({'where':{'id':_0x24ef2b[_0x4f26('0x4e')]['id']}})[_0x4f26('0x2b')](handleEntityNotFound(_0x1c8c94,null))[_0x4f26('0x2b')](function(_0x31eb65){if(_0x31eb65){return _0x31eb65[_0x4f26('0x8c')](_0x24ef2b[_0x4f26('0x53')][_0x4f26('0x78')],_['omit'](_0x24ef2b[_0x4f26('0x53')],[_0x4f26('0x78'),'id'])||{})[_0x4f26('0x8d')](function(_0x27db){for(var _0x540eca=0x0;_0x540eca<_0x24ef2b['body'][_0x4f26('0x78')][_0x4f26('0x41')];_0x540eca+=0x1){socket[_0x4f26('0x76')](_0x4f26('0x8e'),{'UserId':Number(_0x24ef2b[_0x4f26('0x53')][_0x4f26('0x78')][_0x540eca]),'FaxQueueId':Number(_0x24ef2b[_0x4f26('0x4e')]['id'])});}return _0x27db;});}})[_0x4f26('0x2b')](respondWithResult(_0x1c8c94,null))[_0x4f26('0x4c')](handleError(_0x1c8c94,null));};exports[_0x4f26('0x8f')]=function(_0x44e69e,_0x3e105d,_0x1cc943){return db[_0x4f26('0x36')][_0x4f26('0x51')]({'where':{'id':_0x44e69e[_0x4f26('0x4e')]['id']}})[_0x4f26('0x2b')](handleEntityNotFound(_0x3e105d,null))[_0x4f26('0x2b')](function(_0x203593){if(_0x203593){return _0x203593[_0x4f26('0x8f')](_0x44e69e['query'][_0x4f26('0x78')])[_0x4f26('0x2b')](function(){if(_[_0x4f26('0x90')](_0x44e69e[_0x4f26('0x3a')][_0x4f26('0x78')])){for(var _0x4f3b86=0x0;_0x4f3b86<_0x44e69e[_0x4f26('0x3a')][_0x4f26('0x78')][_0x4f26('0x41')];_0x4f3b86+=0x1){socket[_0x4f26('0x76')](_0x4f26('0x8b'),{'UserId':Number(_0x44e69e['query'][_0x4f26('0x78')][_0x4f3b86]),'FaxQueueId':Number(_0x44e69e['params']['id'])});}}else{socket['emit']('userFaxQueue:remove',{'UserId':Number(_0x44e69e[_0x4f26('0x3a')][_0x4f26('0x78')]),'FaxQueueId':Number(_0x44e69e[_0x4f26('0x4e')]['id'])});}});}})[_0x4f26('0x2b')](respondWithStatusCode(_0x3e105d,null))['catch'](handleError(_0x3e105d,null));};exports[_0x4f26('0x91')]=function(_0x594d4b,_0x33ab90,_0x4f99eb){var _0x2be3a5={};var _0x472bf0={};var _0x2b35d8;var _0x340575;return db[_0x4f26('0x36')]['findOne']({'where':{'id':_0x594d4b['params']['id']}})[_0x4f26('0x2b')](handleEntityNotFound(_0x33ab90,null))[_0x4f26('0x2b')](function(_0x51dadd){if(_0x51dadd){_0x2b35d8=_0x51dadd;_0x472bf0[_0x4f26('0x3e')]=_[_0x4f26('0x3b')](db[_0x4f26('0x6c')][_0x4f26('0x4f')]);_0x472bf0[_0x4f26('0x3a')]=_[_0x4f26('0x3b')](_0x594d4b[_0x4f26('0x3a')]);_0x472bf0[_0x4f26('0x3c')]=_[_0x4f26('0x3d')](_0x472bf0[_0x4f26('0x3e')],_0x472bf0[_0x4f26('0x3a')]);_0x2be3a5[_0x4f26('0x40')]=_[_0x4f26('0x3d')](_0x472bf0[_0x4f26('0x3e')],qs['fields'](_0x594d4b[_0x4f26('0x3a')][_0x4f26('0x3f')]));_0x2be3a5['attributes']=_0x2be3a5[_0x4f26('0x40')]['length']?_0x2be3a5['attributes']:_0x472bf0[_0x4f26('0x3e')];_0x2be3a5[_0x4f26('0x43')]=qs[_0x4f26('0x44')](_0x594d4b[_0x4f26('0x3a')][_0x4f26('0x44')]);_0x2be3a5['where']=qs[_0x4f26('0x3c')](_[_0x4f26('0x46')](_0x594d4b['query'],_0x472bf0[_0x4f26('0x3c')]));if(_0x594d4b['query'][_0x4f26('0x48')]){_0x2be3a5[_0x4f26('0x45')]=_['merge'](_0x2be3a5[_0x4f26('0x45')],{'$or':_[_0x4f26('0x35')](_0x2be3a5[_0x4f26('0x40')],function(_0x5b0218){var _0x1bbd81={};_0x1bbd81[_0x5b0218]={'$like':'%'+_0x594d4b[_0x4f26('0x3a')][_0x4f26('0x48')]+'%'};return _0x1bbd81;})});}_0x2be3a5=_[_0x4f26('0x47')]({},_0x2be3a5,_0x594d4b[_0x4f26('0x49')]);return _0x2b35d8[_0x4f26('0x91')](_0x2be3a5);}})['then'](function(_0x513c3d){if(_0x513c3d){_0x340575=_0x513c3d['length'];if(!_0x594d4b[_0x4f26('0x3a')]['hasOwnProperty']('nolimit')){_0x2be3a5['limit']=qs[_0x4f26('0x22')](_0x594d4b[_0x4f26('0x3a')][_0x4f26('0x22')]);_0x2be3a5['offset']=qs[_0x4f26('0x25')](_0x594d4b[_0x4f26('0x3a')]['offset']);}return _0x2b35d8['getAgents'](_0x2be3a5);}})[_0x4f26('0x2b')](function(_0x15f721){if(_0x15f721){return _0x15f721?{'count':_0x340575,'rows':_0x15f721}:null;}})[_0x4f26('0x2b')](respondWithResult(_0x33ab90,null))[_0x4f26('0x4c')](handleError(_0x33ab90,null));};
\ No newline at end of file
index 924b961..ec50130 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58fb=['../../mysqldb','setMaxListeners','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x2e04ef,_0x31a596){var _0x5722b0=function(_0x386fbd){while(--_0x386fbd){_0x2e04ef['push'](_0x2e04ef['shift']());}};_0x5722b0(++_0x31a596);}(_0x58fb,0x10f));var _0xb58f=function(_0x25936c,_0x101867){_0x25936c=_0x25936c-0x0;var _0x579026=_0x58fb[_0x25936c];return _0x579026;};'use strict';var EventEmitter=require(_0xb58f('0x0'));var FaxQueue=require(_0xb58f('0x1'))['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xb58f('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xb58f('0x3'),'afterDestroy':_0xb58f('0x4')};function emitEvent(_0x4f5f05){return function(_0x25d8e7,_0xe9f15d,_0x33bdfd){FaxQueueEvents[_0xb58f('0x5')](_0x4f5f05+':'+_0x25d8e7['id'],_0x25d8e7);FaxQueueEvents[_0xb58f('0x5')](_0x4f5f05,_0x25d8e7);_0x33bdfd(null);};}for(var e in events){if(events[_0xb58f('0x6')](e)){var event=events[e];FaxQueue[_0xb58f('0x7')](e,emitEvent(event));}}module['exports']=FaxQueueEvents;
\ No newline at end of file
+var _0x2cc5=['hasOwnProperty','hook','exports','../../mysqldb','FaxQueue','setMaxListeners','save','remove','emit'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0x2cc5,0x8a));var _0x52cc=function(_0x565c25,_0x415b42){_0x565c25=_0x565c25-0x0;var _0x166dc3=_0x2cc5[_0x565c25];return _0x166dc3;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0x52cc('0x0'))['db'][_0x52cc('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x52cc('0x2')](0x0);var events={'afterCreate':_0x52cc('0x3'),'afterUpdate':'update','afterDestroy':_0x52cc('0x4')};function emitEvent(_0x295705){return function(_0x5a962b,_0x8a1897,_0x13a5d6){FaxQueueEvents[_0x52cc('0x5')](_0x295705+':'+_0x5a962b['id'],_0x5a962b);FaxQueueEvents[_0x52cc('0x5')](_0x295705,_0x5a962b);_0x13a5d6(null);};}for(var e in events){if(events[_0x52cc('0x6')](e)){var event=events[e];FaxQueue[_0x52cc('0x7')](e,emitEvent(event));}}module[_0x52cc('0x8')]=FaxQueueEvents;
\ No newline at end of file
index 457b7a9..d9a08d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a6e=['./faxQueue.attributes','exports','FaxQueue','fax_queues','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x547328,_0x4a6ff0){var _0x1a428c=function(_0x2efabd){while(--_0x2efabd){_0x547328['push'](_0x547328['shift']());}};_0x1a428c(++_0x4a6ff0);}(_0x2a6e,0x1cc));var _0xe2a6=function(_0x5b2d4d,_0x434cf9){_0x5b2d4d=_0x5b2d4d-0x0;var _0x5a48b4=_0x2a6e[_0x5b2d4d];return _0x5a48b4;};'use strict';var _=require(_0xe2a6('0x0'));var util=require(_0xe2a6('0x1'));var logger=require(_0xe2a6('0x2'))('api');var moment=require(_0xe2a6('0x3'));var BPromise=require(_0xe2a6('0x4'));var rp=require(_0xe2a6('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe2a6('0x6'));var config=require(_0xe2a6('0x7'));var attributes=require(_0xe2a6('0x8'));module[_0xe2a6('0x9')]=function(_0x4dee7c,_0x4567bb){return _0x4dee7c['define'](_0xe2a6('0xa'),attributes,{'tableName':_0xe2a6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa54d=['fax_queues','lodash','moment','request-promise','path','rimraf','../../config/environment','./faxQueue.attributes','exports','define','FaxQueue'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xa54d,0x1c4));var _0xda54=function(_0x4836c1,_0x36608e){_0x4836c1=_0x4836c1-0x0;var _0x437987=_0xa54d[_0x4836c1];return _0x437987;};'use strict';var _=require(_0xda54('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xda54('0x1'));var BPromise=require('bluebird');var rp=require(_0xda54('0x2'));var fs=require('fs');var path=require(_0xda54('0x3'));var rimraf=require(_0xda54('0x4'));var config=require(_0xda54('0x5'));var attributes=require(_0xda54('0x6'));module[_0xda54('0x7')]=function(_0x4163fd,_0x5ba1c1){return _0x4163fd[_0xda54('0x8')](_0xda54('0x9'),attributes,{'tableName':_0xda54('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1df16b5..caccdf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57d4=['request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxQueue,\x20%s,\x20%s','message','result','catch','GetFaxQueue','FaxQueue','findAll','options','raw','where','attributes','limit','map','include','model','then','ShowFaxQueue','find','moment','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./faxQueue.socket','register','request','info'];(function(_0x3a2a27,_0x2cf57d){var _0xd339e3=function(_0x5e1efb){while(--_0x5e1efb){_0x3a2a27['push'](_0x3a2a27['shift']());}};_0xd339e3(++_0x2cf57d);}(_0x57d4,0x194));var _0x457d=function(_0x121967,_0x179300){_0x121967=_0x121967-0x0;var _0xef71d9=_0x57d4[_0x121967];return _0xef71d9;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x457d('0x0'));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(_0x457d('0x1'))(_0x457d('0x2'));var config=require(_0x457d('0x3'));var jayson=require(_0x457d('0x4'));var client=jayson[_0x457d('0x5')][_0x457d('0x6')]({'port':0x232a});config['redis']=_['defaults'](config[_0x457d('0x7')],{'host':_0x457d('0x8'),'port':0x18eb});var socket=require(_0x457d('0x9'))(new Redis(config[_0x457d('0x7')]));require(_0x457d('0xa'))[_0x457d('0xb')](socket);function respondWithRpcPromise(_0x5ec0ea,_0x4d1bed,_0x2cf682){return new BPromise(function(_0x4f199f,_0x481202){return client[_0x457d('0xc')](_0x5ec0ea,_0x2cf682)['then'](function(_0x2925bd){logger[_0x457d('0xd')]('FaxQueue,\x20%s,\x20%s',_0x4d1bed,_0x457d('0xe'));logger[_0x457d('0xf')](_0x457d('0x10'),_0x4d1bed,'request\x20sent',JSON[_0x457d('0x11')](_0x2925bd));if(_0x2925bd[_0x457d('0x12')]){if(_0x2925bd['error'][_0x457d('0x13')]===0x1f4){logger[_0x457d('0x12')](_0x457d('0x14'),_0x4d1bed,_0x2925bd[_0x457d('0x12')][_0x457d('0x15')]);return _0x481202(_0x2925bd['error'][_0x457d('0x15')]);}logger['error'](_0x457d('0x14'),_0x4d1bed,_0x2925bd[_0x457d('0x12')][_0x457d('0x15')]);return _0x4f199f(_0x2925bd[_0x457d('0x12')][_0x457d('0x15')]);}else{logger[_0x457d('0xd')]('FaxQueue,\x20%s,\x20%s',_0x4d1bed,'request\x20sent');_0x4f199f(_0x2925bd[_0x457d('0x16')]['message']);}})[_0x457d('0x17')](function(_0x27e332){logger[_0x457d('0x12')](_0x457d('0x14'),_0x4d1bed,_0x27e332);_0x481202(_0x27e332);});});}exports[_0x457d('0x18')]=function(_0x950be0){var _0x992feb=this;return new Promise(function(_0x7a6a9e,_0x1c1feb){return db[_0x457d('0x19')][_0x457d('0x1a')]({'raw':_0x950be0['options']?_0x950be0[_0x457d('0x1b')][_0x457d('0x1c')]===undefined?!![]:![]:!![],'where':_0x950be0[_0x457d('0x1b')]?_0x950be0[_0x457d('0x1b')][_0x457d('0x1d')]||null:null,'attributes':_0x950be0['options']?_0x950be0[_0x457d('0x1b')][_0x457d('0x1e')]||null:null,'limit':_0x950be0[_0x457d('0x1b')]?_0x950be0[_0x457d('0x1b')][_0x457d('0x1f')]||null:null,'include':_0x950be0[_0x457d('0x1b')]?_0x950be0[_0x457d('0x1b')]['include']?_[_0x457d('0x20')](_0x950be0['options'][_0x457d('0x21')],function(_0x5c6e38){return{'model':db[_0x5c6e38[_0x457d('0x22')]],'as':_0x5c6e38['as'],'attributes':_0x5c6e38[_0x457d('0x1e')],'include':_0x5c6e38[_0x457d('0x21')]?_['map'](_0x5c6e38['include'],function(_0x4d6b23){return{'model':db[_0x4d6b23[_0x457d('0x22')]],'as':_0x4d6b23['as'],'attributes':_0x4d6b23[_0x457d('0x1e')],'include':_0x4d6b23[_0x457d('0x21')]?_[_0x457d('0x20')](_0x4d6b23[_0x457d('0x21')],function(_0x1df465){return{'model':db[_0x1df465['model']],'as':_0x1df465['as'],'attributes':_0x1df465[_0x457d('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x457d('0x23')](function(_0x57d749){logger['info']('GetFaxQueue',_0x950be0);logger['debug']('GetFaxQueue',_0x950be0,JSON['stringify'](_0x57d749));_0x7a6a9e(_0x57d749);})[_0x457d('0x17')](function(_0x40544d){logger['error'](_0x457d('0x18'),_0x40544d[_0x457d('0x15')],_0x950be0);_0x1c1feb(_0x992feb[_0x457d('0x12')](0x1f4,_0x40544d[_0x457d('0x15')]));});});};exports[_0x457d('0x24')]=function(_0xde555){var _0x574245=this;return new Promise(function(_0x406d17,_0x3a5a83){return db[_0x457d('0x19')][_0x457d('0x25')]({'raw':_0xde555[_0x457d('0x1b')]?_0xde555['options'][_0x457d('0x1c')]===undefined?!![]:![]:!![],'where':_0xde555[_0x457d('0x1b')]?_0xde555[_0x457d('0x1b')]['where']||null:null,'attributes':_0xde555[_0x457d('0x1b')]?_0xde555[_0x457d('0x1b')]['attributes']||null:null,'include':_0xde555[_0x457d('0x1b')]?_0xde555['options'][_0x457d('0x21')]?_[_0x457d('0x20')](_0xde555['options'][_0x457d('0x21')],function(_0x156340){return{'model':db[_0x156340['model']],'as':_0x156340['as'],'attributes':_0x156340[_0x457d('0x1e')],'include':_0x156340[_0x457d('0x21')]?_[_0x457d('0x20')](_0x156340['include'],function(_0x2f187c){return{'model':db[_0x2f187c[_0x457d('0x22')]],'as':_0x2f187c['as'],'attributes':_0x2f187c[_0x457d('0x1e')],'include':_0x2f187c[_0x457d('0x21')]?_[_0x457d('0x20')](_0x2f187c[_0x457d('0x21')],function(_0x19829c){return{'model':db[_0x19829c['model']],'as':_0x19829c['as'],'attributes':_0x19829c[_0x457d('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x457d('0x23')](function(_0x3a587b){logger[_0x457d('0xd')](_0x457d('0x24'),_0xde555);logger['debug'](_0x457d('0x24'),_0xde555,JSON['stringify'](_0x3a587b));_0x406d17(_0x3a587b);})[_0x457d('0x17')](function(_0xeb139f){logger[_0x457d('0x12')](_0x457d('0x24'),_0xeb139f[_0x457d('0x15')],_0xde555);_0x3a5a83(_0x574245[_0x457d('0x12')](0x1f4,_0xeb139f[_0x457d('0x15')]));});});};
\ No newline at end of file
+var _0x25bf=['find','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','request','info','debug','request\x20sent','stringify','error','code','FaxQueue,\x20%s,\x20%s','message','findAll','options','raw','where','limit','include','model','attributes','map','then','GetFaxQueue','catch','ShowFaxQueue','FaxQueue'];(function(_0x56916d,_0x37b935){var _0x2b7f1f=function(_0x206eb1){while(--_0x206eb1){_0x56916d['push'](_0x56916d['shift']());}};_0x2b7f1f(++_0x37b935);}(_0x25bf,0x119));var _0xf25b=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x25bf[_0x59ee6f];return _0x4c0979;};'use strict';var _=require('lodash');var util=require(_0xf25b('0x0'));var moment=require(_0xf25b('0x1'));var BPromise=require(_0xf25b('0x2'));var rs=require(_0xf25b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf25b('0x4'))['db'];var utils=require(_0xf25b('0x5'));var logger=require(_0xf25b('0x6'))(_0xf25b('0x7'));var config=require(_0xf25b('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xf25b('0x9')][_0xf25b('0xa')]({'port':0x232a});config[_0xf25b('0xb')]=_[_0xf25b('0xc')](config[_0xf25b('0xb')],{'host':_0xf25b('0xd'),'port':0x18eb});var socket=require(_0xf25b('0xe'))(new Redis(config['redis']));require(_0xf25b('0xf'))['register'](socket);function respondWithRpcPromise(_0x5bb637,_0x2b1b8c,_0x3ef7c8){return new BPromise(function(_0x5d14de,_0x57a18d){return client[_0xf25b('0x10')](_0x5bb637,_0x3ef7c8)['then'](function(_0x2f8773){logger[_0xf25b('0x11')]('FaxQueue,\x20%s,\x20%s',_0x2b1b8c,'request\x20sent');logger[_0xf25b('0x12')]('FaxQueue,\x20%s,\x20%s,\x20%s',_0x2b1b8c,_0xf25b('0x13'),JSON[_0xf25b('0x14')](_0x2f8773));if(_0x2f8773['error']){if(_0x2f8773[_0xf25b('0x15')][_0xf25b('0x16')]===0x1f4){logger[_0xf25b('0x15')](_0xf25b('0x17'),_0x2b1b8c,_0x2f8773[_0xf25b('0x15')]['message']);return _0x57a18d(_0x2f8773['error'][_0xf25b('0x18')]);}logger['error'](_0xf25b('0x17'),_0x2b1b8c,_0x2f8773[_0xf25b('0x15')][_0xf25b('0x18')]);return _0x5d14de(_0x2f8773['error'][_0xf25b('0x18')]);}else{logger[_0xf25b('0x11')]('FaxQueue,\x20%s,\x20%s',_0x2b1b8c,_0xf25b('0x13'));_0x5d14de(_0x2f8773['result']['message']);}})['catch'](function(_0x448f1c){logger[_0xf25b('0x15')](_0xf25b('0x17'),_0x2b1b8c,_0x448f1c);_0x57a18d(_0x448f1c);});});}exports['GetFaxQueue']=function(_0x445864){var _0x59b1f6=this;return new Promise(function(_0x16ba66,_0x55475a){return db['FaxQueue'][_0xf25b('0x19')]({'raw':_0x445864[_0xf25b('0x1a')]?_0x445864[_0xf25b('0x1a')][_0xf25b('0x1b')]===undefined?!![]:![]:!![],'where':_0x445864[_0xf25b('0x1a')]?_0x445864[_0xf25b('0x1a')][_0xf25b('0x1c')]||null:null,'attributes':_0x445864['options']?_0x445864[_0xf25b('0x1a')]['attributes']||null:null,'limit':_0x445864[_0xf25b('0x1a')]?_0x445864[_0xf25b('0x1a')][_0xf25b('0x1d')]||null:null,'include':_0x445864[_0xf25b('0x1a')]?_0x445864['options'][_0xf25b('0x1e')]?_['map'](_0x445864[_0xf25b('0x1a')][_0xf25b('0x1e')],function(_0x3c47cc){return{'model':db[_0x3c47cc[_0xf25b('0x1f')]],'as':_0x3c47cc['as'],'attributes':_0x3c47cc[_0xf25b('0x20')],'include':_0x3c47cc[_0xf25b('0x1e')]?_[_0xf25b('0x21')](_0x3c47cc[_0xf25b('0x1e')],function(_0x1e743c){return{'model':db[_0x1e743c['model']],'as':_0x1e743c['as'],'attributes':_0x1e743c[_0xf25b('0x20')],'include':_0x1e743c[_0xf25b('0x1e')]?_['map'](_0x1e743c[_0xf25b('0x1e')],function(_0xe49c06){return{'model':db[_0xe49c06[_0xf25b('0x1f')]],'as':_0xe49c06['as'],'attributes':_0xe49c06[_0xf25b('0x20')]};}):[]};}):[]};}):[]:[]})[_0xf25b('0x22')](function(_0x2e2394){logger[_0xf25b('0x11')](_0xf25b('0x23'),_0x445864);logger[_0xf25b('0x12')](_0xf25b('0x23'),_0x445864,JSON[_0xf25b('0x14')](_0x2e2394));_0x16ba66(_0x2e2394);})[_0xf25b('0x24')](function(_0x571045){logger['error'](_0xf25b('0x23'),_0x571045[_0xf25b('0x18')],_0x445864);_0x55475a(_0x59b1f6[_0xf25b('0x15')](0x1f4,_0x571045[_0xf25b('0x18')]));});});};exports[_0xf25b('0x25')]=function(_0x4c4ee1){var _0x15754b=this;return new Promise(function(_0x2623fe,_0x5da1ed){return db[_0xf25b('0x26')][_0xf25b('0x27')]({'raw':_0x4c4ee1[_0xf25b('0x1a')]?_0x4c4ee1[_0xf25b('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x4c4ee1[_0xf25b('0x1a')]?_0x4c4ee1[_0xf25b('0x1a')][_0xf25b('0x1c')]||null:null,'attributes':_0x4c4ee1[_0xf25b('0x1a')]?_0x4c4ee1[_0xf25b('0x1a')][_0xf25b('0x20')]||null:null,'include':_0x4c4ee1[_0xf25b('0x1a')]?_0x4c4ee1[_0xf25b('0x1a')][_0xf25b('0x1e')]?_[_0xf25b('0x21')](_0x4c4ee1['options'][_0xf25b('0x1e')],function(_0x16e431){return{'model':db[_0x16e431['model']],'as':_0x16e431['as'],'attributes':_0x16e431[_0xf25b('0x20')],'include':_0x16e431[_0xf25b('0x1e')]?_[_0xf25b('0x21')](_0x16e431[_0xf25b('0x1e')],function(_0x5d7c85){return{'model':db[_0x5d7c85['model']],'as':_0x5d7c85['as'],'attributes':_0x5d7c85['attributes'],'include':_0x5d7c85[_0xf25b('0x1e')]?_[_0xf25b('0x21')](_0x5d7c85[_0xf25b('0x1e')],function(_0x3110c1){return{'model':db[_0x3110c1[_0xf25b('0x1f')]],'as':_0x3110c1['as'],'attributes':_0x3110c1[_0xf25b('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5d847b){logger[_0xf25b('0x11')](_0xf25b('0x25'),_0x4c4ee1);logger[_0xf25b('0x12')]('ShowFaxQueue',_0x4c4ee1,JSON[_0xf25b('0x14')](_0x5d847b));_0x2623fe(_0x5d847b);})[_0xf25b('0x24')](function(_0x4b73f4){logger[_0xf25b('0x15')]('ShowFaxQueue',_0x4b73f4[_0xf25b('0x18')],_0x4c4ee1);_0x5da1ed(_0x15754b['error'](0x1f4,_0x4b73f4[_0xf25b('0x18')]));});});};
\ No newline at end of file
index 8d7d8dc..c47b04f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6a1=['emit','register','faxQueue:','remove','update'];(function(_0x184f0c,_0x536866){var _0x3b87fc=function(_0x3d747b){while(--_0x3d747b){_0x184f0c['push'](_0x184f0c['shift']());}};_0x3b87fc(++_0x536866);}(_0xd6a1,0x7b));var _0x1d6a=function(_0x14bc01,_0x27e6af){_0x14bc01=_0x14bc01-0x0;var _0x2cc409=_0xd6a1[_0x14bc01];return _0x2cc409;};'use strict';var FaxQueueEvents=require('./faxQueue.events');var events=['save',_0x1d6a('0x0'),_0x1d6a('0x1')];function createListener(_0x4c8665,_0x189232){return function(_0x53aafb){_0x189232[_0x1d6a('0x2')](_0x4c8665,_0x53aafb);};}function removeListener(_0xa04401,_0x5b1316){return function(){FaxQueueEvents['removeListener'](_0xa04401,_0x5b1316);};}exports[_0x1d6a('0x3')]=function(_0x4c54f4){for(var _0x400097=0x0,_0x5707bc=events['length'];_0x400097<_0x5707bc;_0x400097++){var _0x523bfa=events[_0x400097];var _0x261bed=createListener(_0x1d6a('0x4')+_0x523bfa,_0x4c54f4);FaxQueueEvents['on'](_0x523bfa,_0x261bed);}};
\ No newline at end of file
+var _0xef4b=['emit','removeListener','length','faxQueue:','save'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xef4b,0x86));var _0xbef4=function(_0x431ac5,_0x5e319f){_0x431ac5=_0x431ac5-0x0;var _0x235779=_0xef4b[_0x431ac5];return _0x235779;};'use strict';var FaxQueueEvents=require('./faxQueue.events');var events=[_0xbef4('0x0'),'remove','update'];function createListener(_0x501b49,_0x4fdd38){return function(_0x3084a6){_0x4fdd38[_0xbef4('0x1')](_0x501b49,_0x3084a6);};}function removeListener(_0x289021,_0x4a2ed8){return function(){FaxQueueEvents[_0xbef4('0x2')](_0x289021,_0x4a2ed8);};}exports['register']=function(_0x362d32){for(var _0x12b9bc=0x0,_0x31a9fb=events[_0xbef4('0x3')];_0x12b9bc<_0x31a9fb;_0x12b9bc++){var _0x5d88d9=events[_0x12b9bc];var _0x4b1409=createListener(_0xbef4('0x4')+_0x5d88d9,_0x362d32);FaxQueueEvents['on'](_0x5d88d9,_0x4b1409);}};
\ No newline at end of file
index 4b25f94..c4b2c58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36c3=['/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','create','addTeams','post','addAgents','update','destroy','delete','removeTeams','removeAgents','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x2e67a4,_0x281041){var _0x4cb738=function(_0x3f9243){while(--_0x3f9243){_0x2e67a4['push'](_0x2e67a4['shift']());}};_0x4cb738(++_0x281041);}(_0x36c3,0x1a6));var _0x336c=function(_0x272156,_0x5e4b0d){_0x272156=_0x272156-0x0;var _0x1071d0=_0x36c3[_0x272156];return _0x1071d0;};'use strict';var multer=require(_0x336c('0x0'));var util=require(_0x336c('0x1'));var path=require('path');var timeout=require(_0x336c('0x2'));var express=require(_0x336c('0x3'));var router=express[_0x336c('0x4')]();var fs_extra=require(_0x336c('0x5'));var auth=require(_0x336c('0x6'));var interaction=require(_0x336c('0x7'));var config=require(_0x336c('0x8'));var controller=require('./faxQueue.controller');router[_0x336c('0x9')]('/',auth[_0x336c('0xa')](),controller[_0x336c('0xb')]);router[_0x336c('0x9')](_0x336c('0xc'),auth['isAuthenticated'](),controller[_0x336c('0xd')]);router[_0x336c('0x9')](_0x336c('0xe'),auth[_0x336c('0xa')](),controller[_0x336c('0xf')]);router[_0x336c('0x9')](_0x336c('0x10'),auth[_0x336c('0xa')](),controller[_0x336c('0x11')]);router[_0x336c('0x9')](_0x336c('0x12'),auth[_0x336c('0xa')](),controller[_0x336c('0x13')]);router[_0x336c('0x9')](_0x336c('0x14'),auth[_0x336c('0xa')](),controller[_0x336c('0x15')]);router['post']('/',auth['isAuthenticated'](),controller[_0x336c('0x16')]);router['post'](_0x336c('0x12'),auth[_0x336c('0xa')](),controller[_0x336c('0x17')]);router[_0x336c('0x18')]('/:id/users',auth[_0x336c('0xa')](),controller[_0x336c('0x19')]);router['put'](_0x336c('0xe'),auth['isAuthenticated'](),controller[_0x336c('0x1a')]);router['delete'](_0x336c('0xe'),auth['isAuthenticated'](),controller[_0x336c('0x1b')]);router[_0x336c('0x1c')]('/:id/teams',auth['isAuthenticated'](),controller[_0x336c('0x1d')]);router[_0x336c('0x1c')](_0x336c('0x14'),auth[_0x336c('0xa')](),controller[_0x336c('0x1e')]);module['exports']=router;
\ No newline at end of file
+var _0xaa64=['../../components/auth/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','addAgents','put','update','delete','removeTeams','removeAgents','exports','multer','util','connect-timeout','Router','fs-extra'];(function(_0x1cc196,_0x43fe1a){var _0x14241c=function(_0x196599){while(--_0x196599){_0x1cc196['push'](_0x1cc196['shift']());}};_0x14241c(++_0x43fe1a);}(_0xaa64,0xf7));var _0x4aa6=function(_0x53bf6c,_0x54f366){_0x53bf6c=_0x53bf6c-0x0;var _0x5aae3e=_0xaa64[_0x53bf6c];return _0x5aae3e;};'use strict';var multer=require(_0x4aa6('0x0'));var util=require(_0x4aa6('0x1'));var path=require('path');var timeout=require(_0x4aa6('0x2'));var express=require('express');var router=express[_0x4aa6('0x3')]();var fs_extra=require(_0x4aa6('0x4'));var auth=require(_0x4aa6('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4aa6('0x6'));var controller=require(_0x4aa6('0x7'));router[_0x4aa6('0x8')]('/',auth[_0x4aa6('0x9')](),controller[_0x4aa6('0xa')]);router[_0x4aa6('0x8')](_0x4aa6('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0x4aa6('0x8')](_0x4aa6('0xc'),auth['isAuthenticated'](),controller[_0x4aa6('0xd')]);router['get'](_0x4aa6('0xe'),auth[_0x4aa6('0x9')](),controller[_0x4aa6('0xf')]);router[_0x4aa6('0x8')]('/:id/teams',auth[_0x4aa6('0x9')](),controller[_0x4aa6('0x10')]);router[_0x4aa6('0x8')](_0x4aa6('0x11'),auth[_0x4aa6('0x9')](),controller[_0x4aa6('0x12')]);router[_0x4aa6('0x13')]('/',auth[_0x4aa6('0x9')](),controller[_0x4aa6('0x14')]);router[_0x4aa6('0x13')]('/:id/teams',auth[_0x4aa6('0x9')](),controller['addTeams']);router['post'](_0x4aa6('0x11'),auth[_0x4aa6('0x9')](),controller[_0x4aa6('0x15')]);router[_0x4aa6('0x16')](_0x4aa6('0xc'),auth[_0x4aa6('0x9')](),controller[_0x4aa6('0x17')]);router[_0x4aa6('0x18')]('/:id',auth[_0x4aa6('0x9')](),controller['destroy']);router[_0x4aa6('0x18')]('/:id/teams',auth['isAuthenticated'](),controller[_0x4aa6('0x19')]);router[_0x4aa6('0x18')](_0x4aa6('0x11'),auth[_0x4aa6('0x9')](),controller[_0x4aa6('0x1a')]);module[_0x4aa6('0x1b')]=router;
\ No newline at end of file
index 973585b..dfbe903 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05eb=['moment','STRING','DATE'];(function(_0x506260,_0x369b89){var _0x35f071=function(_0x586a3e){while(--_0x586a3e){_0x506260['push'](_0x506260['shift']());}};_0x35f071(++_0x369b89);}(_0x05eb,0x1bc));var _0xb05e=function(_0x1cb04e,_0x391e93){_0x1cb04e=_0x1cb04e-0x0;var _0xd81cdf=_0x05eb[_0x1cb04e];return _0xd81cdf;};'use strict';var moment=require(_0xb05e('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xb05e('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0xb05e('0x1')]},'joinAt':{'type':Sequelize[_0xb05e('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xb05e('0x2')]},'exitAt':{'type':Sequelize[_0xb05e('0x2')]},'reason':{'type':Sequelize[_0xb05e('0x1')]}};
\ No newline at end of file
+var _0x5c0b=['sequelize','exports','STRING','DATE','moment'];(function(_0x31ca31,_0x6833a2){var _0x31ac48=function(_0x4e4c3e){while(--_0x4e4c3e){_0x31ca31['push'](_0x31ca31['shift']());}};_0x31ac48(++_0x6833a2);}(_0x5c0b,0x77));var _0xb5c0=function(_0x2527e1,_0x41ba9b){_0x2527e1=_0x2527e1-0x0;var _0x521745=_0x5c0b[_0x2527e1];return _0x521745;};'use strict';var moment=require(_0xb5c0('0x0'));var Sequelize=require(_0xb5c0('0x1'));module[_0xb5c0('0x2')]={'uniqueid':{'type':Sequelize[_0xb5c0('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xb5c0('0x3')]},'joinAt':{'type':Sequelize[_0xb5c0('0x4')]},'leaveAt':{'type':Sequelize[_0xb5c0('0x4')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 33d4f8f..3209462 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x257e=['papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','limit','save','update','then','sendStatus','error','name','send','index','FaxQueueReport','fieldName','key','map','keys','filters','intersection','model','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','desk.js','querystring'];(function(_0x4ebf38,_0x56549b){var _0x506ea9=function(_0x34782a){while(--_0x34782a){_0x4ebf38['push'](_0x4ebf38['shift']());}};_0x506ea9(++_0x56549b);}(_0x257e,0x1dc));var _0xe257=function(_0x3ea913,_0x255df2){_0x3ea913=_0x3ea913-0x0;var _0x2b4f28=_0x257e[_0x3ea913];return _0x2b4f28;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe257('0x0'));var zipdir=require(_0xe257('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe257('0x2'));var moment=require('moment');var BPromise=require(_0xe257('0x3'));var Mustache=require(_0xe257('0x4'));var util=require(_0xe257('0x5'));var path=require(_0xe257('0x6'));var sox=require('sox');var csv=require(_0xe257('0x7'));var ejs=require(_0xe257('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe257('0x9'));var squel=require(_0xe257('0xa'));var crypto=require(_0xe257('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xe257('0xc'));var toCsv=require(_0xe257('0x7'));var querystring=require(_0xe257('0xd'));var Papa=require(_0xe257('0xe'));var Redis=require(_0xe257('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe257('0x10'));var hardwareService=require(_0xe257('0x11'));var logger=require('../../config/logger')(_0xe257('0x12'));var utils=require(_0xe257('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xe257('0x14'));var db=require(_0xe257('0x15'))['db'];function respondWithStatusCode(_0x8d4cee,_0x41b454){_0x41b454=_0x41b454||0xcc;return function(_0x2bc9a3){if(_0x2bc9a3){return _0x8d4cee['sendStatus'](_0x41b454);}return _0x8d4cee[_0xe257('0x16')](_0x41b454)[_0xe257('0x17')]();};}function respondWithResult(_0x49afa3,_0x273854){_0x273854=_0x273854||0xc8;return function(_0x441cde){if(_0x441cde){return _0x49afa3[_0xe257('0x16')](_0x273854)[_0xe257('0x18')](_0x441cde);}};}function respondWithFilteredResult(_0x1e34db,_0x44f6d8){return function(_0x44a016){if(_0x44a016){var _0x396be4=typeof _0x44f6d8[_0xe257('0x19')]==='undefined'&&typeof _0x44f6d8[_0xe257('0x1a')]==='undefined';var _0x2a1a10=_0x44a016['count'];var _0x481419=_0x396be4?0x0:_0x44f6d8[_0xe257('0x19')];var _0x56f1dc=_0x396be4?_0x44a016['count']:_0x44f6d8[_0xe257('0x19')]+_0x44f6d8['limit'];var _0x3d62ce;if(_0x56f1dc>=_0x2a1a10){_0x56f1dc=_0x2a1a10;_0x3d62ce=0xc8;}else{_0x3d62ce=0xce;}_0x1e34db[_0xe257('0x16')](_0x3d62ce);return _0x1e34db['set']('Content-Range',_0x481419+'-'+_0x56f1dc+'/'+_0x2a1a10)['json'](_0x44a016);}return null;};}function patchUpdates(_0x34033d){return function(_0x5ca40f){try{jsonpatch['apply'](_0x5ca40f,_0x34033d,!![]);}catch(_0x56fd6f){return BPromise['reject'](_0x56fd6f);}return _0x5ca40f[_0xe257('0x1b')]();};}function saveUpdates(_0x47f1ed,_0x2a2816){return function(_0x3a8bc6){if(_0x3a8bc6){return _0x3a8bc6[_0xe257('0x1c')](_0x47f1ed)[_0xe257('0x1d')](function(_0x5382ca){return _0x5382ca;});}return null;};}function removeEntity(_0x580365,_0x3bc026){return function(_0x11b467){if(_0x11b467){return _0x11b467['destroy']()['then'](function(){_0x580365[_0xe257('0x16')](0xcc)[_0xe257('0x17')]();});}};}function handleEntityNotFound(_0x301fd4,_0x155ddb){return function(_0x511f88){if(!_0x511f88){_0x301fd4[_0xe257('0x1e')](0x194);}return _0x511f88;};}function handleError(_0x1281c9,_0x1222cc){_0x1222cc=_0x1222cc||0x1f4;return function(_0x214c1d){logger[_0xe257('0x1f')](_0x214c1d['stack']);if(_0x214c1d[_0xe257('0x20')]){delete _0x214c1d[_0xe257('0x20')];}_0x1281c9['status'](_0x1222cc)[_0xe257('0x21')](_0x214c1d);};}exports[_0xe257('0x22')]=function(_0x39a0f2,_0x59ff61){var _0xac6714={},_0x3b3b32={},_0x25d1bd={'count':0x0,'rows':[]};var _0x4f6fb6=_['map'](db[_0xe257('0x23')]['rawAttributes'],function(_0x57812a){return{'name':_0x57812a[_0xe257('0x24')],'type':_0x57812a['type'][_0xe257('0x25')]};});_0x3b3b32['model']=_[_0xe257('0x26')](_0x4f6fb6,_0xe257('0x20'));_0x3b3b32['query']=_[_0xe257('0x27')](_0x39a0f2['query']);_0x3b3b32[_0xe257('0x28')]=_[_0xe257('0x29')](_0x3b3b32[_0xe257('0x2a')],_0x3b3b32[_0xe257('0x2b')]);_0xac6714[_0xe257('0x2c')]=_['intersection'](_0x3b3b32['model'],qs['fields'](_0x39a0f2[_0xe257('0x2b')][_0xe257('0x2d')]));_0xac6714['attributes']=_0xac6714[_0xe257('0x2c')][_0xe257('0x2e')]?_0xac6714[_0xe257('0x2c')]:_0x3b3b32[_0xe257('0x2a')];if(!_0x39a0f2[_0xe257('0x2b')][_0xe257('0x2f')](_0xe257('0x30'))){_0xac6714[_0xe257('0x1a')]=qs[_0xe257('0x1a')](_0x39a0f2[_0xe257('0x2b')][_0xe257('0x1a')]);_0xac6714[_0xe257('0x19')]=qs[_0xe257('0x19')](_0x39a0f2['query']['offset']);}_0xac6714[_0xe257('0x31')]=qs[_0xe257('0x32')](_0x39a0f2['query']['sort']);_0xac6714[_0xe257('0x33')]=qs[_0xe257('0x28')](_[_0xe257('0x34')](_0x39a0f2[_0xe257('0x2b')],_0x3b3b32[_0xe257('0x28')]),_0x4f6fb6);if(_0x39a0f2[_0xe257('0x2b')][_0xe257('0x35')]){_0xac6714[_0xe257('0x33')]=_[_0xe257('0x36')](_0xac6714[_0xe257('0x33')],{'$or':_[_0xe257('0x26')](_0x4f6fb6,function(_0x528386){if(_0x528386[_0xe257('0x37')]!==_0xe257('0x38')){var _0x550908={};_0x550908[_0x528386[_0xe257('0x20')]]={'$like':'%'+_0x39a0f2[_0xe257('0x2b')]['filter']+'%'};return _0x550908;}})});}_0xac6714=_[_0xe257('0x36')]({},_0xac6714,_0x39a0f2[_0xe257('0x39')]);var _0xab5b00={'where':_0xac6714[_0xe257('0x33')]};return db[_0xe257('0x23')][_0xe257('0x3a')](_0xab5b00)[_0xe257('0x1d')](function(_0xba367d){_0x25d1bd[_0xe257('0x3a')]=_0xba367d;if(_0x39a0f2[_0xe257('0x2b')][_0xe257('0x3b')]){_0xac6714[_0xe257('0x3c')]=[{'all':!![]}];}return db[_0xe257('0x23')][_0xe257('0x3d')](_0xac6714);})[_0xe257('0x1d')](function(_0x54efe0){_0x25d1bd[_0xe257('0x3e')]=_0x54efe0;return _0x25d1bd;})[_0xe257('0x1d')](respondWithFilteredResult(_0x59ff61,_0xac6714))[_0xe257('0x3f')](handleError(_0x59ff61,null));};exports[_0xe257('0x40')]=function(_0x104baa,_0x1edbb1){var _0x58b590={'raw':!![],'where':{'id':_0x104baa[_0xe257('0x41')]['id']}},_0x4b9316={};_0x4b9316[_0xe257('0x2a')]=_['keys'](db['FaxQueueReport']['rawAttributes']);_0x4b9316[_0xe257('0x2b')]=_['keys'](_0x104baa['query']);_0x4b9316[_0xe257('0x28')]=_[_0xe257('0x29')](_0x4b9316[_0xe257('0x2a')],_0x4b9316['query']);_0x58b590['attributes']=_[_0xe257('0x29')](_0x4b9316['model'],qs[_0xe257('0x2d')](_0x104baa['query'][_0xe257('0x2d')]));_0x58b590[_0xe257('0x2c')]=_0x58b590[_0xe257('0x2c')][_0xe257('0x2e')]?_0x58b590['attributes']:_0x4b9316['model'];if(_0x104baa[_0xe257('0x2b')][_0xe257('0x3b')]){_0x58b590[_0xe257('0x3c')]=[{'all':!![]}];}_0x58b590=_[_0xe257('0x36')]({},_0x58b590,_0x104baa['options']);return db[_0xe257('0x23')][_0xe257('0x42')](_0x58b590)[_0xe257('0x1d')](handleEntityNotFound(_0x1edbb1,null))['then'](respondWithResult(_0x1edbb1,null))[_0xe257('0x3f')](handleError(_0x1edbb1,null));};exports[_0xe257('0x43')]=function(_0x4ca2ca,_0x4b58e5){return db[_0xe257('0x23')][_0xe257('0x43')](_0x4ca2ca[_0xe257('0x44')],{})[_0xe257('0x1d')](respondWithResult(_0x4b58e5,0xc9))[_0xe257('0x3f')](handleError(_0x4b58e5,null));};exports[_0xe257('0x1c')]=function(_0x3aef54,_0x228b4b){if(_0x3aef54[_0xe257('0x44')]['id']){delete _0x3aef54[_0xe257('0x44')]['id'];}return db[_0xe257('0x23')]['find']({'where':{'id':_0x3aef54[_0xe257('0x41')]['id']}})['then'](handleEntityNotFound(_0x228b4b,null))[_0xe257('0x1d')](saveUpdates(_0x3aef54[_0xe257('0x44')],null))[_0xe257('0x1d')](respondWithResult(_0x228b4b,null))[_0xe257('0x3f')](handleError(_0x228b4b,null));};exports[_0xe257('0x45')]=function(_0x4b8a7b,_0x5ad26f){return db[_0xe257('0x23')]['find']({'where':{'id':_0x4b8a7b['params']['id']}})[_0xe257('0x1d')](handleEntityNotFound(_0x5ad26f,null))['then'](removeEntity(_0x5ad26f,null))[_0xe257('0x3f')](handleError(_0x5ad26f,null));};exports['describe']=function(_0x4bed88,_0x4ccf46){return db['FaxQueueReport']['describe']()[_0xe257('0x1d')](respondWithResult(_0x4ccf46,null))[_0xe257('0x3f')](handleError(_0x4ccf46,null));};
\ No newline at end of file
+var _0x2bbb=['ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','reject','update','then','sendStatus','error','stack','name','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','FaxQueueReport','include','rows','find','catch','create','body','params','destroy','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox'];(function(_0x4ac48d,_0x171a68){var _0x7537af=function(_0x1c6ca6){while(--_0x1c6ca6){_0x4ac48d['push'](_0x4ac48d['shift']());}};_0x7537af(++_0x171a68);}(_0x2bbb,0x85));var _0xb2bb=function(_0x366c8d,_0x2e1eb9){_0x366c8d=_0x366c8d-0x0;var _0x146a96=_0x2bbb[_0x366c8d];return _0x146a96;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb2bb('0x0'));var zipdir=require(_0xb2bb('0x1'));var jsonpatch=require(_0xb2bb('0x2'));var rp=require('request-promise');var moment=require(_0xb2bb('0x3'));var BPromise=require(_0xb2bb('0x4'));var Mustache=require(_0xb2bb('0x5'));var util=require(_0xb2bb('0x6'));var path=require(_0xb2bb('0x7'));var sox=require(_0xb2bb('0x8'));var csv=require('to-csv');var ejs=require(_0xb2bb('0x9'));var fs=require('fs');var fs_extra=require(_0xb2bb('0xa'));var _=require('lodash');var squel=require(_0xb2bb('0xb'));var crypto=require(_0xb2bb('0xc'));var jsforce=require(_0xb2bb('0xd'));var deskjs=require(_0xb2bb('0xe'));var toCsv=require('to-csv');var querystring=require(_0xb2bb('0xf'));var Papa=require('papaparse');var Redis=require(_0xb2bb('0x10'));var authService=require(_0xb2bb('0x11'));var qs=require(_0xb2bb('0x12'));var as=require(_0xb2bb('0x13'));var hardwareService=require(_0xb2bb('0x14'));var logger=require('../../config/logger')(_0xb2bb('0x15'));var utils=require('../../config/utils');var config=require(_0xb2bb('0x16'));var licenseUtil=require(_0xb2bb('0x17'));var db=require(_0xb2bb('0x18'))['db'];function respondWithStatusCode(_0x43950f,_0x38ea15){_0x38ea15=_0x38ea15||0xcc;return function(_0x14c05e){if(_0x14c05e){return _0x43950f['sendStatus'](_0x38ea15);}return _0x43950f[_0xb2bb('0x19')](_0x38ea15)[_0xb2bb('0x1a')]();};}function respondWithResult(_0x332903,_0x2905e2){_0x2905e2=_0x2905e2||0xc8;return function(_0x50a32e){if(_0x50a32e){return _0x332903[_0xb2bb('0x19')](_0x2905e2)[_0xb2bb('0x1b')](_0x50a32e);}};}function respondWithFilteredResult(_0x3bb017,_0x28b73c){return function(_0x367c6f){if(_0x367c6f){var _0x48d630=typeof _0x28b73c[_0xb2bb('0x1c')]===_0xb2bb('0x1d')&&typeof _0x28b73c[_0xb2bb('0x1e')]===_0xb2bb('0x1d');var _0x2dcb2d=_0x367c6f[_0xb2bb('0x1f')];var _0x35c4de=_0x48d630?0x0:_0x28b73c[_0xb2bb('0x1c')];var _0x8d2033=_0x48d630?_0x367c6f[_0xb2bb('0x1f')]:_0x28b73c[_0xb2bb('0x1c')]+_0x28b73c[_0xb2bb('0x1e')];var _0x5e8d6a;if(_0x8d2033>=_0x2dcb2d){_0x8d2033=_0x2dcb2d;_0x5e8d6a=0xc8;}else{_0x5e8d6a=0xce;}_0x3bb017[_0xb2bb('0x19')](_0x5e8d6a);return _0x3bb017['set'](_0xb2bb('0x20'),_0x35c4de+'-'+_0x8d2033+'/'+_0x2dcb2d)['json'](_0x367c6f);}return null;};}function patchUpdates(_0x3e7028){return function(_0x8f37d9){try{jsonpatch['apply'](_0x8f37d9,_0x3e7028,!![]);}catch(_0x302cd4){return BPromise[_0xb2bb('0x21')](_0x302cd4);}return _0x8f37d9['save']();};}function saveUpdates(_0x5ab483,_0x4a428f){return function(_0x2f1e0f){if(_0x2f1e0f){return _0x2f1e0f[_0xb2bb('0x22')](_0x5ab483)[_0xb2bb('0x23')](function(_0x494344){return _0x494344;});}return null;};}function removeEntity(_0x297d52,_0x2b1f94){return function(_0x250c3f){if(_0x250c3f){return _0x250c3f['destroy']()[_0xb2bb('0x23')](function(){_0x297d52[_0xb2bb('0x19')](0xcc)[_0xb2bb('0x1a')]();});}};}function handleEntityNotFound(_0x14aba5,_0x4b77e7){return function(_0x467b79){if(!_0x467b79){_0x14aba5[_0xb2bb('0x24')](0x194);}return _0x467b79;};}function handleError(_0x3d7890,_0x4a47ab){_0x4a47ab=_0x4a47ab||0x1f4;return function(_0xa09168){logger[_0xb2bb('0x25')](_0xa09168[_0xb2bb('0x26')]);if(_0xa09168[_0xb2bb('0x27')]){delete _0xa09168[_0xb2bb('0x27')];}_0x3d7890[_0xb2bb('0x19')](_0x4a47ab)['send'](_0xa09168);};}exports[_0xb2bb('0x28')]=function(_0x48d96f,_0xf1ed22){var _0x53e6aa={},_0x3d82c8={},_0x2b8ae3={'count':0x0,'rows':[]};var _0x5719f3=_[_0xb2bb('0x29')](db['FaxQueueReport'][_0xb2bb('0x2a')],function(_0x115202){return{'name':_0x115202['fieldName'],'type':_0x115202[_0xb2bb('0x2b')][_0xb2bb('0x2c')]};});_0x3d82c8[_0xb2bb('0x2d')]=_[_0xb2bb('0x29')](_0x5719f3,_0xb2bb('0x27'));_0x3d82c8[_0xb2bb('0x2e')]=_[_0xb2bb('0x2f')](_0x48d96f[_0xb2bb('0x2e')]);_0x3d82c8[_0xb2bb('0x30')]=_[_0xb2bb('0x31')](_0x3d82c8[_0xb2bb('0x2d')],_0x3d82c8['query']);_0x53e6aa[_0xb2bb('0x32')]=_[_0xb2bb('0x31')](_0x3d82c8[_0xb2bb('0x2d')],qs[_0xb2bb('0x33')](_0x48d96f[_0xb2bb('0x2e')]['fields']));_0x53e6aa[_0xb2bb('0x32')]=_0x53e6aa[_0xb2bb('0x32')][_0xb2bb('0x34')]?_0x53e6aa[_0xb2bb('0x32')]:_0x3d82c8[_0xb2bb('0x2d')];if(!_0x48d96f['query']['hasOwnProperty'](_0xb2bb('0x35'))){_0x53e6aa[_0xb2bb('0x1e')]=qs['limit'](_0x48d96f[_0xb2bb('0x2e')][_0xb2bb('0x1e')]);_0x53e6aa['offset']=qs[_0xb2bb('0x1c')](_0x48d96f['query'][_0xb2bb('0x1c')]);}_0x53e6aa[_0xb2bb('0x36')]=qs['sort'](_0x48d96f[_0xb2bb('0x2e')][_0xb2bb('0x37')]);_0x53e6aa[_0xb2bb('0x38')]=qs[_0xb2bb('0x30')](_['pick'](_0x48d96f[_0xb2bb('0x2e')],_0x3d82c8[_0xb2bb('0x30')]),_0x5719f3);if(_0x48d96f[_0xb2bb('0x2e')][_0xb2bb('0x39')]){_0x53e6aa[_0xb2bb('0x38')]=_[_0xb2bb('0x3a')](_0x53e6aa[_0xb2bb('0x38')],{'$or':_[_0xb2bb('0x29')](_0x5719f3,function(_0xa8e622){if(_0xa8e622['type']!==_0xb2bb('0x3b')){var _0x3e1ab8={};_0x3e1ab8[_0xa8e622[_0xb2bb('0x27')]]={'$like':'%'+_0x48d96f[_0xb2bb('0x2e')][_0xb2bb('0x39')]+'%'};return _0x3e1ab8;}})});}_0x53e6aa=_[_0xb2bb('0x3a')]({},_0x53e6aa,_0x48d96f[_0xb2bb('0x3c')]);var _0x185c68={'where':_0x53e6aa['where']};return db[_0xb2bb('0x3d')]['count'](_0x185c68)[_0xb2bb('0x23')](function(_0x18d464){_0x2b8ae3[_0xb2bb('0x1f')]=_0x18d464;if(_0x48d96f[_0xb2bb('0x2e')]['includeAll']){_0x53e6aa[_0xb2bb('0x3e')]=[{'all':!![]}];}return db['FaxQueueReport']['findAll'](_0x53e6aa);})[_0xb2bb('0x23')](function(_0x51c19b){_0x2b8ae3[_0xb2bb('0x3f')]=_0x51c19b;return _0x2b8ae3;})['then'](respondWithFilteredResult(_0xf1ed22,_0x53e6aa))['catch'](handleError(_0xf1ed22,null));};exports['show']=function(_0x3a1220,_0x2fc06e){var _0x37dee5={'raw':!![],'where':{'id':_0x3a1220['params']['id']}},_0x5dab12={};_0x5dab12[_0xb2bb('0x2d')]=_[_0xb2bb('0x2f')](db['FaxQueueReport'][_0xb2bb('0x2a')]);_0x5dab12[_0xb2bb('0x2e')]=_['keys'](_0x3a1220[_0xb2bb('0x2e')]);_0x5dab12[_0xb2bb('0x30')]=_['intersection'](_0x5dab12['model'],_0x5dab12[_0xb2bb('0x2e')]);_0x37dee5[_0xb2bb('0x32')]=_[_0xb2bb('0x31')](_0x5dab12[_0xb2bb('0x2d')],qs['fields'](_0x3a1220[_0xb2bb('0x2e')][_0xb2bb('0x33')]));_0x37dee5[_0xb2bb('0x32')]=_0x37dee5[_0xb2bb('0x32')][_0xb2bb('0x34')]?_0x37dee5[_0xb2bb('0x32')]:_0x5dab12['model'];if(_0x3a1220[_0xb2bb('0x2e')]['includeAll']){_0x37dee5[_0xb2bb('0x3e')]=[{'all':!![]}];}_0x37dee5=_[_0xb2bb('0x3a')]({},_0x37dee5,_0x3a1220[_0xb2bb('0x3c')]);return db[_0xb2bb('0x3d')][_0xb2bb('0x40')](_0x37dee5)[_0xb2bb('0x23')](handleEntityNotFound(_0x2fc06e,null))[_0xb2bb('0x23')](respondWithResult(_0x2fc06e,null))[_0xb2bb('0x41')](handleError(_0x2fc06e,null));};exports['create']=function(_0x764d07,_0x4e70e3){return db[_0xb2bb('0x3d')][_0xb2bb('0x42')](_0x764d07[_0xb2bb('0x43')],{})['then'](respondWithResult(_0x4e70e3,0xc9))[_0xb2bb('0x41')](handleError(_0x4e70e3,null));};exports[_0xb2bb('0x22')]=function(_0x4a3fb2,_0x47ac7d){if(_0x4a3fb2['body']['id']){delete _0x4a3fb2[_0xb2bb('0x43')]['id'];}return db['FaxQueueReport'][_0xb2bb('0x40')]({'where':{'id':_0x4a3fb2[_0xb2bb('0x44')]['id']}})['then'](handleEntityNotFound(_0x47ac7d,null))[_0xb2bb('0x23')](saveUpdates(_0x4a3fb2[_0xb2bb('0x43')],null))[_0xb2bb('0x23')](respondWithResult(_0x47ac7d,null))[_0xb2bb('0x41')](handleError(_0x47ac7d,null));};exports[_0xb2bb('0x45')]=function(_0xb883ef,_0x127666){return db['FaxQueueReport'][_0xb2bb('0x40')]({'where':{'id':_0xb883ef[_0xb2bb('0x44')]['id']}})[_0xb2bb('0x23')](handleEntityNotFound(_0x127666,null))[_0xb2bb('0x23')](removeEntity(_0x127666,null))['catch'](handleError(_0x127666,null));};exports[_0xb2bb('0x46')]=function(_0x44e406,_0x59a1be){return db[_0xb2bb('0x3d')][_0xb2bb('0x46')]()[_0xb2bb('0x23')](respondWithResult(_0x59a1be,null))[_0xb2bb('0x41')](handleError(_0x59a1be,null));};
\ No newline at end of file
index 9644d91..cedf54a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['api','moment','bluebird','request-promise','../../config/environment','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','uniqueid','lodash','../../config/logger'];(function(_0x3f1076,_0x23b6c1){var _0x21d34f=function(_0x3af4f4){while(--_0x3af4f4){_0x3f1076['push'](_0x3f1076['shift']());}};_0x21d34f(++_0x23b6c1);}(_0x7217,0x19e));var _0x7721=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0x7217[_0x40ac5e];return _0x2839d6;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var logger=require(_0x7721('0x1'))(_0x7721('0x2'));var moment=require(_0x7721('0x3'));var BPromise=require(_0x7721('0x4'));var rp=require(_0x7721('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7721('0x6'));var attributes=require(_0x7721('0x7'));module[_0x7721('0x8')]=function(_0x3fe47c,_0xb239e0){return _0x3fe47c[_0x7721('0x9')](_0x7721('0xa'),attributes,{'tableName':_0x7721('0xb'),'paranoid':![],'indexes':[{'name':_0x7721('0xc'),'fields':[_0x7721('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf494=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','uniqueid','lodash'];(function(_0x534b13,_0x3b0a7f){var _0x2d4bd5=function(_0x17b4a4){while(--_0x17b4a4){_0x534b13['push'](_0x534b13['shift']());}};_0x2d4bd5(++_0x3b0a7f);}(_0xf494,0x1c6));var _0x4f49=function(_0x40852f,_0x8c0481){_0x40852f=_0x40852f-0x0;var _0x5df7eb=_0xf494[_0x40852f];return _0x5df7eb;};'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')]('FaxQueueReport',attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0x4f49('0xc'),'fields':[_0x4f49('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index a772d86..ac1bbe2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ddd=['code','message','info','result','catch','CreateFaxQueueReport','FaxQueueReport','create','body','raw','UpdateFaxQueueReport','update','options','where','attributes','limit','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x3ddd,0x1a8));var _0xd3dd=function(_0x4da4ec,_0x1233f9){_0x4da4ec=_0x4da4ec-0x0;var _0x2056d6=_0x3ddd[_0x4da4ec];return _0x2056d6;};'use strict';var _=require('lodash');var util=require(_0xd3dd('0x0'));var moment=require('moment');var BPromise=require(_0xd3dd('0x1'));var rs=require(_0xd3dd('0x2'));var fs=require('fs');var Redis=require(_0xd3dd('0x3'));var db=require(_0xd3dd('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd3dd('0x5'))(_0xd3dd('0x6'));var config=require(_0xd3dd('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xd3dd('0x8')][_0xd3dd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5f0f8d,_0x1f5d33,_0x10fc39){return new BPromise(function(_0x44f4f7,_0x5e69b3){return client[_0xd3dd('0xa')](_0x5f0f8d,_0x10fc39)[_0xd3dd('0xb')](function(_0x4a662e){logger['info'](_0xd3dd('0xc'),_0x1f5d33,_0xd3dd('0xd'));logger[_0xd3dd('0xe')](_0xd3dd('0xf'),_0x1f5d33,_0xd3dd('0xd'),JSON[_0xd3dd('0x10')](_0x4a662e));if(_0x4a662e[_0xd3dd('0x11')]){if(_0x4a662e[_0xd3dd('0x11')][_0xd3dd('0x12')]===0x1f4){logger[_0xd3dd('0x11')]('FaxQueueReport,\x20%s,\x20%s',_0x1f5d33,_0x4a662e[_0xd3dd('0x11')]['message']);return _0x5e69b3(_0x4a662e[_0xd3dd('0x11')][_0xd3dd('0x13')]);}logger[_0xd3dd('0x11')](_0xd3dd('0xc'),_0x1f5d33,_0x4a662e[_0xd3dd('0x11')]['message']);return _0x44f4f7(_0x4a662e[_0xd3dd('0x11')][_0xd3dd('0x13')]);}else{logger[_0xd3dd('0x14')]('FaxQueueReport,\x20%s,\x20%s',_0x1f5d33,_0xd3dd('0xd'));_0x44f4f7(_0x4a662e[_0xd3dd('0x15')][_0xd3dd('0x13')]);}})[_0xd3dd('0x16')](function(_0x4a4295){logger[_0xd3dd('0x11')](_0xd3dd('0xc'),_0x1f5d33,_0x4a4295);_0x5e69b3(_0x4a4295);});});}exports[_0xd3dd('0x17')]=function(_0x644133){var _0x22fdce=this;return new Promise(function(_0x4c6ba8,_0x2ad5ac){return db[_0xd3dd('0x18')][_0xd3dd('0x19')](_0x644133[_0xd3dd('0x1a')],{'raw':_0x644133['options']?_0x644133['options'][_0xd3dd('0x1b')]===undefined?!![]:![]:!![]})[_0xd3dd('0xb')](function(_0x191add){logger[_0xd3dd('0x14')]('CreateFaxQueueReport',_0x644133);logger[_0xd3dd('0xe')](_0xd3dd('0x17'),_0x644133,JSON['stringify'](_0x191add));_0x4c6ba8(_0x191add);})['catch'](function(_0x20f085){logger[_0xd3dd('0x11')](_0xd3dd('0x17'),_0x20f085[_0xd3dd('0x13')],_0x644133);_0x2ad5ac(_0x22fdce[_0xd3dd('0x11')](0x1f4,_0x20f085[_0xd3dd('0x13')]));});});};exports[_0xd3dd('0x1c')]=function(_0x97031){var _0xb6926e=this;return new Promise(function(_0x2ef68d,_0x1c044f){return db[_0xd3dd('0x18')][_0xd3dd('0x1d')](_0x97031[_0xd3dd('0x1a')],{'raw':_0x97031[_0xd3dd('0x1e')]?_0x97031[_0xd3dd('0x1e')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x97031['options']?_0x97031[_0xd3dd('0x1e')][_0xd3dd('0x1f')]||null:null,'attributes':_0x97031[_0xd3dd('0x1e')]?_0x97031[_0xd3dd('0x1e')][_0xd3dd('0x20')]||null:null,'limit':_0x97031[_0xd3dd('0x1e')]?_0x97031['options'][_0xd3dd('0x21')]||null:null})[_0xd3dd('0xb')](function(_0x164d24){logger[_0xd3dd('0x14')](_0xd3dd('0x1c'),_0x97031);logger[_0xd3dd('0xe')]('UpdateFaxQueueReport',_0x97031,JSON[_0xd3dd('0x10')](_0x164d24));_0x2ef68d(_0x164d24);})[_0xd3dd('0x16')](function(_0x57251c){logger['error']('UpdateFaxQueueReport',_0x57251c[_0xd3dd('0x13')],_0x97031);_0x1c044f(_0xb6926e[_0xd3dd('0x11')](0x1f4,_0x57251c[_0xd3dd('0x13')]));});});};
\ No newline at end of file
+var _0xe09d=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','request\x20sent','debug','error','code','FaxQueueReport,\x20%s,\x20%s','message','info','result','catch','CreateFaxQueueReport','body','options','raw','stringify','UpdateFaxQueueReport','FaxQueueReport','update','attributes','limit','lodash'];(function(_0x2d5bb4,_0xe37868){var _0x170e41=function(_0x2ffebb){while(--_0x2ffebb){_0x2d5bb4['push'](_0x2d5bb4['shift']());}};_0x170e41(++_0xe37868);}(_0xe09d,0x11f));var _0xde09=function(_0x46d1dc,_0x33b012){_0x46d1dc=_0x46d1dc-0x0;var _0x1fe81b=_0xe09d[_0x46d1dc];return _0x1fe81b;};'use strict';var _=require(_0xde09('0x0'));var util=require(_0xde09('0x1'));var moment=require('moment');var BPromise=require(_0xde09('0x2'));var rs=require(_0xde09('0x3'));var fs=require('fs');var Redis=require(_0xde09('0x4'));var db=require(_0xde09('0x5'))['db'];var utils=require(_0xde09('0x6'));var logger=require(_0xde09('0x7'))('rpc');var config=require(_0xde09('0x8'));var jayson=require(_0xde09('0x9'));var client=jayson['client'][_0xde09('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x6473c5,_0x54c971,_0x349fe3){return new BPromise(function(_0x36e941,_0x4c7f5a){return client[_0xde09('0xb')](_0x6473c5,_0x349fe3)[_0xde09('0xc')](function(_0x27a760){logger['info']('FaxQueueReport,\x20%s,\x20%s',_0x54c971,_0xde09('0xd'));logger[_0xde09('0xe')]('FaxQueueReport,\x20%s,\x20%s,\x20%s',_0x54c971,_0xde09('0xd'),JSON['stringify'](_0x27a760));if(_0x27a760[_0xde09('0xf')]){if(_0x27a760[_0xde09('0xf')][_0xde09('0x10')]===0x1f4){logger['error'](_0xde09('0x11'),_0x54c971,_0x27a760['error']['message']);return _0x4c7f5a(_0x27a760[_0xde09('0xf')][_0xde09('0x12')]);}logger[_0xde09('0xf')]('FaxQueueReport,\x20%s,\x20%s',_0x54c971,_0x27a760[_0xde09('0xf')][_0xde09('0x12')]);return _0x36e941(_0x27a760[_0xde09('0xf')][_0xde09('0x12')]);}else{logger[_0xde09('0x13')](_0xde09('0x11'),_0x54c971,_0xde09('0xd'));_0x36e941(_0x27a760[_0xde09('0x14')][_0xde09('0x12')]);}})[_0xde09('0x15')](function(_0x2abb1c){logger[_0xde09('0xf')]('FaxQueueReport,\x20%s,\x20%s',_0x54c971,_0x2abb1c);_0x4c7f5a(_0x2abb1c);});});}exports[_0xde09('0x16')]=function(_0x46612c){var _0x321c51=this;return new Promise(function(_0xada488,_0x1c388d){return db['FaxQueueReport']['create'](_0x46612c[_0xde09('0x17')],{'raw':_0x46612c['options']?_0x46612c[_0xde09('0x18')][_0xde09('0x19')]===undefined?!![]:![]:!![]})[_0xde09('0xc')](function(_0x3b277d){logger[_0xde09('0x13')](_0xde09('0x16'),_0x46612c);logger[_0xde09('0xe')](_0xde09('0x16'),_0x46612c,JSON[_0xde09('0x1a')](_0x3b277d));_0xada488(_0x3b277d);})[_0xde09('0x15')](function(_0x3be03e){logger[_0xde09('0xf')](_0xde09('0x16'),_0x3be03e[_0xde09('0x12')],_0x46612c);_0x1c388d(_0x321c51[_0xde09('0xf')](0x1f4,_0x3be03e[_0xde09('0x12')]));});});};exports[_0xde09('0x1b')]=function(_0x42e9f9){var _0x20c9d2=this;return new Promise(function(_0x28538c,_0x681ecc){return db[_0xde09('0x1c')][_0xde09('0x1d')](_0x42e9f9[_0xde09('0x17')],{'raw':_0x42e9f9[_0xde09('0x18')]?_0x42e9f9[_0xde09('0x18')][_0xde09('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x42e9f9[_0xde09('0x18')]?_0x42e9f9[_0xde09('0x18')]['where']||null:null,'attributes':_0x42e9f9[_0xde09('0x18')]?_0x42e9f9[_0xde09('0x18')][_0xde09('0x1e')]||null:null,'limit':_0x42e9f9[_0xde09('0x18')]?_0x42e9f9[_0xde09('0x18')][_0xde09('0x1f')]||null:null})[_0xde09('0xc')](function(_0x2d72dc){logger[_0xde09('0x13')]('UpdateFaxQueueReport',_0x42e9f9);logger[_0xde09('0xe')](_0xde09('0x1b'),_0x42e9f9,JSON['stringify'](_0x2d72dc));_0x28538c(_0x2d72dc);})['catch'](function(_0x1d5012){logger[_0xde09('0xf')](_0xde09('0x1b'),_0x1d5012[_0xde09('0x12')],_0x42e9f9);_0x681ecc(_0x20c9d2[_0xde09('0xf')](0x1f4,_0x1d5012['message']));});});};
\ No newline at end of file
index 01aa47f..ee53339 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b09=['../../components/interaction/service','./faxQueueReport.controller','isAuthenticated','/describe','describe','get','create','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service'];(function(_0x491a7f,_0x28bb80){var _0x3d8f44=function(_0xdaa716){while(--_0xdaa716){_0x491a7f['push'](_0x491a7f['shift']());}};_0x3d8f44(++_0x28bb80);}(_0x5b09,0x174));var _0x95b0=function(_0x62b6cb,_0x63868f){_0x62b6cb=_0x62b6cb-0x0;var _0x510112=_0x5b09[_0x62b6cb];return _0x510112;};'use strict';var multer=require(_0x95b0('0x0'));var util=require(_0x95b0('0x1'));var path=require(_0x95b0('0x2'));var timeout=require(_0x95b0('0x3'));var express=require('express');var router=express[_0x95b0('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x95b0('0x5'));var interaction=require(_0x95b0('0x6'));var config=require('../../config/environment');var controller=require(_0x95b0('0x7'));router['get']('/',auth[_0x95b0('0x8')](),controller['index']);router['get'](_0x95b0('0x9'),auth[_0x95b0('0x8')](),controller[_0x95b0('0xa')]);router[_0x95b0('0xb')]('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x95b0('0x8')](),controller[_0x95b0('0xc')]);router[_0x95b0('0xd')](_0x95b0('0xe'),auth[_0x95b0('0x8')](),controller[_0x95b0('0xf')]);router['delete'](_0x95b0('0xe'),auth[_0x95b0('0x8')](),controller[_0x95b0('0x10')]);module[_0x95b0('0x11')]=router;
\ No newline at end of file
+var _0xa257=['get','isAuthenticated','/describe','describe','/:id','show','put','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxQueueReport.controller'];(function(_0x54ddb3,_0x5115a9){var _0x59acde=function(_0x4605d5){while(--_0x4605d5){_0x54ddb3['push'](_0x54ddb3['shift']());}};_0x59acde(++_0x5115a9);}(_0xa257,0x199));var _0x7a25=function(_0x124eaf,_0x5170c0){_0x124eaf=_0x124eaf-0x0;var _0x49a798=_0xa257[_0x124eaf];return _0x49a798;};'use strict';var multer=require('multer');var util=require(_0x7a25('0x0'));var path=require(_0x7a25('0x1'));var timeout=require(_0x7a25('0x2'));var express=require(_0x7a25('0x3'));var router=express[_0x7a25('0x4')]();var fs_extra=require(_0x7a25('0x5'));var auth=require(_0x7a25('0x6'));var interaction=require(_0x7a25('0x7'));var config=require('../../config/environment');var controller=require(_0x7a25('0x8'));router[_0x7a25('0x9')]('/',auth[_0x7a25('0xa')](),controller['index']);router[_0x7a25('0x9')](_0x7a25('0xb'),auth[_0x7a25('0xa')](),controller[_0x7a25('0xc')]);router['get'](_0x7a25('0xd'),auth['isAuthenticated'](),controller[_0x7a25('0xe')]);router['post']('/',auth[_0x7a25('0xa')](),controller['create']);router[_0x7a25('0xf')](_0x7a25('0xd'),auth[_0x7a25('0xa')](),controller[_0x7a25('0x10')]);router[_0x7a25('0x11')](_0x7a25('0xd'),auth[_0x7a25('0xa')](),controller['destroy']);module[_0x7a25('0x12')]=router;
\ No newline at end of file
index 5d7e7af..e41afa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x4cbc49,_0x5beaac){var _0x1fbc59=function(_0x672437){while(--_0x672437){_0x4cbc49['push'](_0x4cbc49['shift']());}};_0x1fbc59(++_0x5beaac);}(_0xf4eb,0xec));var _0xbf4e=function(_0x480629,_0x18c2c5){_0x480629=_0x480629-0x0;var _0x25aaf2=_0xf4eb[_0x480629];return _0x25aaf2;};'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
+var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x344fb7,_0x2e4100){var _0x377124=function(_0x6d6bf9){while(--_0x6d6bf9){_0x344fb7['push'](_0x344fb7['shift']());}};_0x377124(++_0x2e4100);}(_0xf4eb,0xec));var _0xbf4e=function(_0x369302,_0x47499b){_0x369302=_0x369302-0x0;var _0x1bce48=_0xf4eb[_0x369302];return _0x1bce48;};'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 9b28335..e0b582b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1924=['update','destroy','then','end','error','stack','name','send','index','map','FaxTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','nolimit','order','sort','pick','filter','where','merge','options','includeAll','rows','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','reject','save'];(function(_0xeb67cb,_0x3facda){var _0xc8fe96=function(_0x4074a2){while(--_0x4074a2){_0xeb67cb['push'](_0xeb67cb['shift']());}};_0xc8fe96(++_0x3facda);}(_0x1924,0x6f));var _0x4192=function(_0xd8b2aa,_0x3b5e2c){_0xd8b2aa=_0xd8b2aa-0x0;var _0x5255c5=_0x1924[_0xd8b2aa];return _0x5255c5;};'use strict';var emlformat=require(_0x4192('0x0'));var rimraf=require(_0x4192('0x1'));var zipdir=require(_0x4192('0x2'));var jsonpatch=require(_0x4192('0x3'));var rp=require(_0x4192('0x4'));var moment=require(_0x4192('0x5'));var BPromise=require(_0x4192('0x6'));var Mustache=require(_0x4192('0x7'));var util=require(_0x4192('0x8'));var path=require(_0x4192('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4192('0xa'));var fs=require('fs');var fs_extra=require(_0x4192('0xb'));var _=require(_0x4192('0xc'));var squel=require(_0x4192('0xd'));var crypto=require(_0x4192('0xe'));var jsforce=require(_0x4192('0xf'));var deskjs=require(_0x4192('0x10'));var toCsv=require(_0x4192('0x11'));var querystring=require('querystring');var Papa=require(_0x4192('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x4192('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4192('0x14'));var logger=require(_0x4192('0x15'))('api');var utils=require(_0x4192('0x16'));var config=require(_0x4192('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x255ce7,_0xe6f404){_0xe6f404=_0xe6f404||0xcc;return function(_0x1f5172){if(_0x1f5172){return _0x255ce7[_0x4192('0x18')](_0xe6f404);}return _0x255ce7[_0x4192('0x19')](_0xe6f404)['end']();};}function respondWithResult(_0x479106,_0x2640c1){_0x2640c1=_0x2640c1||0xc8;return function(_0x5cf80b){if(_0x5cf80b){return _0x479106[_0x4192('0x19')](_0x2640c1)['json'](_0x5cf80b);}};}function respondWithFilteredResult(_0x28a969,_0x45e008){return function(_0x12b151){if(_0x12b151){var _0x320cfc=typeof _0x45e008[_0x4192('0x1a')]===_0x4192('0x1b')&&typeof _0x45e008[_0x4192('0x1c')]===_0x4192('0x1b');var _0x20d01b=_0x12b151['count'];var _0x41f301=_0x320cfc?0x0:_0x45e008[_0x4192('0x1a')];var _0x2c0b69=_0x320cfc?_0x12b151[_0x4192('0x1d')]:_0x45e008[_0x4192('0x1a')]+_0x45e008['limit'];var _0x31e5b5;if(_0x2c0b69>=_0x20d01b){_0x2c0b69=_0x20d01b;_0x31e5b5=0xc8;}else{_0x31e5b5=0xce;}_0x28a969[_0x4192('0x19')](_0x31e5b5);return _0x28a969[_0x4192('0x1e')](_0x4192('0x1f'),_0x41f301+'-'+_0x2c0b69+'/'+_0x20d01b)[_0x4192('0x20')](_0x12b151);}return null;};}function patchUpdates(_0x38082c){return function(_0xd5ae95){try{jsonpatch['apply'](_0xd5ae95,_0x38082c,!![]);}catch(_0x1772f3){return BPromise[_0x4192('0x21')](_0x1772f3);}return _0xd5ae95[_0x4192('0x22')]();};}function saveUpdates(_0x5f2032,_0x3daf07){return function(_0x50ec10){if(_0x50ec10){return _0x50ec10[_0x4192('0x23')](_0x5f2032)['then'](function(_0x478832){return _0x478832;});}return null;};}function removeEntity(_0x3c1ece,_0x51fec1){return function(_0x24ab59){if(_0x24ab59){return _0x24ab59[_0x4192('0x24')]()[_0x4192('0x25')](function(){_0x3c1ece[_0x4192('0x19')](0xcc)[_0x4192('0x26')]();});}};}function handleEntityNotFound(_0xd0f44e,_0x3103aa){return function(_0x4bcdfa){if(!_0x4bcdfa){_0xd0f44e[_0x4192('0x18')](0x194);}return _0x4bcdfa;};}function handleError(_0x338a32,_0x20ae18){_0x20ae18=_0x20ae18||0x1f4;return function(_0x60b47b){logger[_0x4192('0x27')](_0x60b47b[_0x4192('0x28')]);if(_0x60b47b[_0x4192('0x29')]){delete _0x60b47b[_0x4192('0x29')];}_0x338a32['status'](_0x20ae18)[_0x4192('0x2a')](_0x60b47b);};}exports[_0x4192('0x2b')]=function(_0x35b47c,_0x1bdc7a){var _0x2397e0={},_0x408122={},_0x9c56be={'count':0x0,'rows':[]};var _0x1dc8e0=_[_0x4192('0x2c')](db[_0x4192('0x2d')][_0x4192('0x2e')],function(_0x1ef0ef){return{'name':_0x1ef0ef[_0x4192('0x2f')],'type':_0x1ef0ef[_0x4192('0x30')][_0x4192('0x31')]};});_0x408122[_0x4192('0x32')]=_[_0x4192('0x2c')](_0x1dc8e0,_0x4192('0x29'));_0x408122[_0x4192('0x33')]=_[_0x4192('0x34')](_0x35b47c[_0x4192('0x33')]);_0x408122[_0x4192('0x35')]=_[_0x4192('0x36')](_0x408122[_0x4192('0x32')],_0x408122[_0x4192('0x33')]);_0x2397e0['attributes']=_['intersection'](_0x408122[_0x4192('0x32')],qs[_0x4192('0x37')](_0x35b47c[_0x4192('0x33')][_0x4192('0x37')]));_0x2397e0[_0x4192('0x38')]=_0x2397e0[_0x4192('0x38')]['length']?_0x2397e0['attributes']:_0x408122[_0x4192('0x32')];if(!_0x35b47c[_0x4192('0x33')]['hasOwnProperty'](_0x4192('0x39'))){_0x2397e0[_0x4192('0x1c')]=qs[_0x4192('0x1c')](_0x35b47c['query'][_0x4192('0x1c')]);_0x2397e0['offset']=qs['offset'](_0x35b47c[_0x4192('0x33')][_0x4192('0x1a')]);}_0x2397e0[_0x4192('0x3a')]=qs[_0x4192('0x3b')](_0x35b47c[_0x4192('0x33')][_0x4192('0x3b')]);_0x2397e0['where']=qs['filters'](_[_0x4192('0x3c')](_0x35b47c[_0x4192('0x33')],_0x408122[_0x4192('0x35')]),_0x1dc8e0);if(_0x35b47c[_0x4192('0x33')][_0x4192('0x3d')]){_0x2397e0[_0x4192('0x3e')]=_[_0x4192('0x3f')](_0x2397e0[_0x4192('0x3e')],{'$or':_[_0x4192('0x2c')](_0x1dc8e0,function(_0x26ddfc){if(_0x26ddfc[_0x4192('0x30')]!=='VIRTUAL'){var _0x56ccb3={};_0x56ccb3[_0x26ddfc[_0x4192('0x29')]]={'$like':'%'+_0x35b47c[_0x4192('0x33')][_0x4192('0x3d')]+'%'};return _0x56ccb3;}})});}_0x2397e0=_[_0x4192('0x3f')]({},_0x2397e0,_0x35b47c[_0x4192('0x40')]);var _0x196347={'where':_0x2397e0[_0x4192('0x3e')]};return db[_0x4192('0x2d')][_0x4192('0x1d')](_0x196347)[_0x4192('0x25')](function(_0x68e04a){_0x9c56be['count']=_0x68e04a;if(_0x35b47c[_0x4192('0x33')][_0x4192('0x41')]){_0x2397e0['include']=[{'all':!![]}];}return db[_0x4192('0x2d')]['findAll'](_0x2397e0);})['then'](function(_0x34b192){_0x9c56be[_0x4192('0x42')]=_0x34b192;return _0x9c56be;})[_0x4192('0x25')](respondWithFilteredResult(_0x1bdc7a,_0x2397e0))[_0x4192('0x43')](handleError(_0x1bdc7a,null));};exports[_0x4192('0x44')]=function(_0x17af28,_0x586d63){var _0x30f82d={'raw':!![],'where':{'id':_0x17af28[_0x4192('0x45')]['id']}},_0x3ed762={};_0x3ed762[_0x4192('0x32')]=_['keys'](db[_0x4192('0x2d')][_0x4192('0x2e')]);_0x3ed762[_0x4192('0x33')]=_[_0x4192('0x34')](_0x17af28[_0x4192('0x33')]);_0x3ed762[_0x4192('0x35')]=_[_0x4192('0x36')](_0x3ed762['model'],_0x3ed762[_0x4192('0x33')]);_0x30f82d[_0x4192('0x38')]=_[_0x4192('0x36')](_0x3ed762[_0x4192('0x32')],qs[_0x4192('0x37')](_0x17af28['query']['fields']));_0x30f82d[_0x4192('0x38')]=_0x30f82d[_0x4192('0x38')]['length']?_0x30f82d[_0x4192('0x38')]:_0x3ed762[_0x4192('0x32')];if(_0x17af28[_0x4192('0x33')][_0x4192('0x41')]){_0x30f82d['include']=[{'all':!![]}];}_0x30f82d=_[_0x4192('0x3f')]({},_0x30f82d,_0x17af28[_0x4192('0x40')]);return db['FaxTransferReport'][_0x4192('0x46')](_0x30f82d)[_0x4192('0x25')](handleEntityNotFound(_0x586d63,null))[_0x4192('0x25')](respondWithResult(_0x586d63,null))[_0x4192('0x43')](handleError(_0x586d63,null));};exports[_0x4192('0x47')]=function(_0x3d1316,_0x9d92f4){return db[_0x4192('0x2d')][_0x4192('0x47')](_0x3d1316[_0x4192('0x48')],{})['then'](respondWithResult(_0x9d92f4,0xc9))[_0x4192('0x43')](handleError(_0x9d92f4,null));};exports[_0x4192('0x23')]=function(_0x4fb1c5,_0x6e45ab){if(_0x4fb1c5[_0x4192('0x48')]['id']){delete _0x4fb1c5['body']['id'];}return db[_0x4192('0x2d')][_0x4192('0x46')]({'where':{'id':_0x4fb1c5[_0x4192('0x45')]['id']}})[_0x4192('0x25')](handleEntityNotFound(_0x6e45ab,null))[_0x4192('0x25')](saveUpdates(_0x4fb1c5[_0x4192('0x48')],null))['then'](respondWithResult(_0x6e45ab,null))[_0x4192('0x43')](handleError(_0x6e45ab,null));};exports[_0x4192('0x24')]=function(_0x15e6e7,_0x21e604){return db['FaxTransferReport'][_0x4192('0x46')]({'where':{'id':_0x15e6e7[_0x4192('0x45')]['id']}})['then'](handleEntityNotFound(_0x21e604,null))['then'](removeEntity(_0x21e604,null))[_0x4192('0x43')](handleError(_0x21e604,null));};exports['describe']=function(_0x360105,_0x38e5e9){return db[_0x4192('0x2d')]['describe']()['then'](respondWithResult(_0x38e5e9,null))[_0x4192('0x43')](handleError(_0x38e5e9,null));};
\ No newline at end of file
+var _0x08f5=['filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','keys','find','create','body','params','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','reject','update','destroy','then','error','stack','name','send','index','map','FaxTransferReport','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick'];(function(_0x232b67,_0x3dc89e){var _0x39fcc0=function(_0x3e20c6){while(--_0x3e20c6){_0x232b67['push'](_0x232b67['shift']());}};_0x39fcc0(++_0x3dc89e);}(_0x08f5,0x1bf));var _0x508f=function(_0x133fe4,_0x1f473b){_0x133fe4=_0x133fe4-0x0;var _0x4c4017=_0x08f5[_0x133fe4];return _0x4c4017;};'use strict';var emlformat=require(_0x508f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x508f('0x1'));var jsonpatch=require(_0x508f('0x2'));var rp=require(_0x508f('0x3'));var moment=require(_0x508f('0x4'));var BPromise=require(_0x508f('0x5'));var Mustache=require(_0x508f('0x6'));var util=require(_0x508f('0x7'));var path=require('path');var sox=require(_0x508f('0x8'));var csv=require(_0x508f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x508f('0xa'));var _=require(_0x508f('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x508f('0xc'));var toCsv=require(_0x508f('0x9'));var querystring=require('querystring');var Papa=require(_0x508f('0xd'));var Redis=require(_0x508f('0xe'));var authService=require(_0x508f('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x508f('0x10'));var hardwareService=require(_0x508f('0x11'));var logger=require(_0x508f('0x12'))(_0x508f('0x13'));var utils=require(_0x508f('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x508f('0x15'))['db'];function respondWithStatusCode(_0x5455da,_0x436eff){_0x436eff=_0x436eff||0xcc;return function(_0x26c526){if(_0x26c526){return _0x5455da[_0x508f('0x16')](_0x436eff);}return _0x5455da['status'](_0x436eff)[_0x508f('0x17')]();};}function respondWithResult(_0x2eff3e,_0x13ca22){_0x13ca22=_0x13ca22||0xc8;return function(_0x5bc255){if(_0x5bc255){return _0x2eff3e[_0x508f('0x18')](_0x13ca22)[_0x508f('0x19')](_0x5bc255);}};}function respondWithFilteredResult(_0x3b69af,_0x4f3baa){return function(_0x478cce){if(_0x478cce){var _0x1ce665=typeof _0x4f3baa[_0x508f('0x1a')]===_0x508f('0x1b')&&typeof _0x4f3baa[_0x508f('0x1c')]===_0x508f('0x1b');var _0x1947f1=_0x478cce['count'];var _0x272ac1=_0x1ce665?0x0:_0x4f3baa['offset'];var _0x2ab144=_0x1ce665?_0x478cce[_0x508f('0x1d')]:_0x4f3baa[_0x508f('0x1a')]+_0x4f3baa[_0x508f('0x1c')];var _0x528854;if(_0x2ab144>=_0x1947f1){_0x2ab144=_0x1947f1;_0x528854=0xc8;}else{_0x528854=0xce;}_0x3b69af[_0x508f('0x18')](_0x528854);return _0x3b69af['set'](_0x508f('0x1e'),_0x272ac1+'-'+_0x2ab144+'/'+_0x1947f1)[_0x508f('0x19')](_0x478cce);}return null;};}function patchUpdates(_0x448ad1){return function(_0x182262){try{jsonpatch['apply'](_0x182262,_0x448ad1,!![]);}catch(_0x1d134c){return BPromise[_0x508f('0x1f')](_0x1d134c);}return _0x182262['save']();};}function saveUpdates(_0xf518b2,_0x401327){return function(_0x44847d){if(_0x44847d){return _0x44847d[_0x508f('0x20')](_0xf518b2)['then'](function(_0x4f6811){return _0x4f6811;});}return null;};}function removeEntity(_0x2f9183,_0x28d2d8){return function(_0x3a75ef){if(_0x3a75ef){return _0x3a75ef[_0x508f('0x21')]()[_0x508f('0x22')](function(){_0x2f9183[_0x508f('0x18')](0xcc)[_0x508f('0x17')]();});}};}function handleEntityNotFound(_0xdf202e,_0x3eb567){return function(_0x5ac7bc){if(!_0x5ac7bc){_0xdf202e[_0x508f('0x16')](0x194);}return _0x5ac7bc;};}function handleError(_0x5add7a,_0xa10e87){_0xa10e87=_0xa10e87||0x1f4;return function(_0x41c663){logger[_0x508f('0x23')](_0x41c663[_0x508f('0x24')]);if(_0x41c663[_0x508f('0x25')]){delete _0x41c663[_0x508f('0x25')];}_0x5add7a[_0x508f('0x18')](_0xa10e87)[_0x508f('0x26')](_0x41c663);};}exports[_0x508f('0x27')]=function(_0x463cc5,_0x2e0ac4){var _0x304385={},_0x240501={},_0x5c3aa0={'count':0x0,'rows':[]};var _0x5d9394=_[_0x508f('0x28')](db[_0x508f('0x29')][_0x508f('0x2a')],function(_0x32360c){return{'name':_0x32360c[_0x508f('0x2b')],'type':_0x32360c[_0x508f('0x2c')]['key']};});_0x240501[_0x508f('0x2d')]=_[_0x508f('0x28')](_0x5d9394,_0x508f('0x25'));_0x240501[_0x508f('0x2e')]=_['keys'](_0x463cc5['query']);_0x240501[_0x508f('0x2f')]=_[_0x508f('0x30')](_0x240501[_0x508f('0x2d')],_0x240501[_0x508f('0x2e')]);_0x304385[_0x508f('0x31')]=_['intersection'](_0x240501[_0x508f('0x2d')],qs[_0x508f('0x32')](_0x463cc5[_0x508f('0x2e')][_0x508f('0x32')]));_0x304385[_0x508f('0x31')]=_0x304385[_0x508f('0x31')][_0x508f('0x33')]?_0x304385[_0x508f('0x31')]:_0x240501['model'];if(!_0x463cc5['query'][_0x508f('0x34')]('nolimit')){_0x304385[_0x508f('0x1c')]=qs[_0x508f('0x1c')](_0x463cc5[_0x508f('0x2e')][_0x508f('0x1c')]);_0x304385['offset']=qs[_0x508f('0x1a')](_0x463cc5[_0x508f('0x2e')][_0x508f('0x1a')]);}_0x304385[_0x508f('0x35')]=qs[_0x508f('0x36')](_0x463cc5[_0x508f('0x2e')][_0x508f('0x36')]);_0x304385[_0x508f('0x37')]=qs[_0x508f('0x2f')](_[_0x508f('0x38')](_0x463cc5[_0x508f('0x2e')],_0x240501[_0x508f('0x2f')]),_0x5d9394);if(_0x463cc5['query'][_0x508f('0x39')]){_0x304385[_0x508f('0x37')]=_['merge'](_0x304385[_0x508f('0x37')],{'$or':_[_0x508f('0x28')](_0x5d9394,function(_0x362833){if(_0x362833[_0x508f('0x2c')]!==_0x508f('0x3a')){var _0x4cb04b={};_0x4cb04b[_0x362833[_0x508f('0x25')]]={'$like':'%'+_0x463cc5[_0x508f('0x2e')]['filter']+'%'};return _0x4cb04b;}})});}_0x304385=_['merge']({},_0x304385,_0x463cc5[_0x508f('0x3b')]);var _0x4d98f8={'where':_0x304385[_0x508f('0x37')]};return db[_0x508f('0x29')]['count'](_0x4d98f8)['then'](function(_0x1aee93){_0x5c3aa0[_0x508f('0x1d')]=_0x1aee93;if(_0x463cc5['query'][_0x508f('0x3c')]){_0x304385[_0x508f('0x3d')]=[{'all':!![]}];}return db['FaxTransferReport'][_0x508f('0x3e')](_0x304385);})[_0x508f('0x22')](function(_0x23d5fa){_0x5c3aa0[_0x508f('0x3f')]=_0x23d5fa;return _0x5c3aa0;})[_0x508f('0x22')](respondWithFilteredResult(_0x2e0ac4,_0x304385))[_0x508f('0x40')](handleError(_0x2e0ac4,null));};exports[_0x508f('0x41')]=function(_0x2b0e54,_0x48cd30){var _0x1edb44={'raw':!![],'where':{'id':_0x2b0e54['params']['id']}},_0x3857e2={};_0x3857e2[_0x508f('0x2d')]=_[_0x508f('0x42')](db[_0x508f('0x29')]['rawAttributes']);_0x3857e2['query']=_[_0x508f('0x42')](_0x2b0e54[_0x508f('0x2e')]);_0x3857e2[_0x508f('0x2f')]=_[_0x508f('0x30')](_0x3857e2[_0x508f('0x2d')],_0x3857e2[_0x508f('0x2e')]);_0x1edb44[_0x508f('0x31')]=_['intersection'](_0x3857e2[_0x508f('0x2d')],qs[_0x508f('0x32')](_0x2b0e54[_0x508f('0x2e')]['fields']));_0x1edb44[_0x508f('0x31')]=_0x1edb44[_0x508f('0x31')][_0x508f('0x33')]?_0x1edb44['attributes']:_0x3857e2[_0x508f('0x2d')];if(_0x2b0e54[_0x508f('0x2e')][_0x508f('0x3c')]){_0x1edb44[_0x508f('0x3d')]=[{'all':!![]}];}_0x1edb44=_['merge']({},_0x1edb44,_0x2b0e54[_0x508f('0x3b')]);return db[_0x508f('0x29')][_0x508f('0x43')](_0x1edb44)[_0x508f('0x22')](handleEntityNotFound(_0x48cd30,null))[_0x508f('0x22')](respondWithResult(_0x48cd30,null))[_0x508f('0x40')](handleError(_0x48cd30,null));};exports[_0x508f('0x44')]=function(_0x57dda9,_0x38471d){return db[_0x508f('0x29')][_0x508f('0x44')](_0x57dda9['body'],{})[_0x508f('0x22')](respondWithResult(_0x38471d,0xc9))[_0x508f('0x40')](handleError(_0x38471d,null));};exports['update']=function(_0x4ec183,_0x31fb0d){if(_0x4ec183[_0x508f('0x45')]['id']){delete _0x4ec183[_0x508f('0x45')]['id'];}return db[_0x508f('0x29')][_0x508f('0x43')]({'where':{'id':_0x4ec183[_0x508f('0x46')]['id']}})[_0x508f('0x22')](handleEntityNotFound(_0x31fb0d,null))[_0x508f('0x22')](saveUpdates(_0x4ec183['body'],null))[_0x508f('0x22')](respondWithResult(_0x31fb0d,null))[_0x508f('0x40')](handleError(_0x31fb0d,null));};exports[_0x508f('0x21')]=function(_0x4d5ce4,_0x21a406){return db[_0x508f('0x29')][_0x508f('0x43')]({'where':{'id':_0x4d5ce4[_0x508f('0x46')]['id']}})[_0x508f('0x22')](handleEntityNotFound(_0x21a406,null))[_0x508f('0x22')](removeEntity(_0x21a406,null))[_0x508f('0x40')](handleError(_0x21a406,null));};exports[_0x508f('0x47')]=function(_0x1af65b,_0x4d711d){return db[_0x508f('0x29')][_0x508f('0x47')]()['then'](respondWithResult(_0x4d711d,null))['catch'](handleError(_0x4d711d,null));};
\ No newline at end of file
index 6e6398e..018210b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55e7=['define','FaxTransferReport','report_fax_transfer','uniqueid','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./faxTransferReport.attributes'];(function(_0xe90b40,_0x104c74){var _0x2d6e7f=function(_0xe541f2){while(--_0xe541f2){_0xe90b40['push'](_0xe90b40['shift']());}};_0x2d6e7f(++_0x104c74);}(_0x55e7,0x138));var _0x755e=function(_0x54347e,_0x16d679){_0x54347e=_0x54347e-0x0;var _0x6082c6=_0x55e7[_0x54347e];return _0x6082c6;};'use strict';var _=require(_0x755e('0x0'));var util=require(_0x755e('0x1'));var logger=require(_0x755e('0x2'))(_0x755e('0x3'));var moment=require(_0x755e('0x4'));var BPromise=require('bluebird');var rp=require(_0x755e('0x5'));var fs=require('fs');var path=require(_0x755e('0x6'));var rimraf=require(_0x755e('0x7'));var config=require(_0x755e('0x8'));var attributes=require(_0x755e('0x9'));module['exports']=function(_0xaa2010,_0x3afef9){return _0xaa2010[_0x755e('0xa')](_0x755e('0xb'),attributes,{'tableName':_0x755e('0xc'),'paranoid':![],'indexes':[{'name':_0x755e('0xd'),'fields':[_0x755e('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xefe2=['request-promise','rimraf','../../config/environment','./faxTransferReport.attributes','exports','define','FaxTransferReport','report_fax_transfer','uniqueid','lodash','util','api','moment'];(function(_0x1969a7,_0x5a133a){var _0x3d665f=function(_0x39c64b){while(--_0x39c64b){_0x1969a7['push'](_0x1969a7['shift']());}};_0x3d665f(++_0x5a133a);}(_0xefe2,0xd9));var _0x2efe=function(_0x5dfacb,_0x112487){_0x5dfacb=_0x5dfacb-0x0;var _0x367f33=_0xefe2[_0x5dfacb];return _0x367f33;};'use strict';var _=require(_0x2efe('0x0'));var util=require(_0x2efe('0x1'));var logger=require('../../config/logger')(_0x2efe('0x2'));var moment=require(_0x2efe('0x3'));var BPromise=require('bluebird');var rp=require(_0x2efe('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2efe('0x5'));var config=require(_0x2efe('0x6'));var attributes=require(_0x2efe('0x7'));module[_0x2efe('0x8')]=function(_0x3a7cd3,_0x570264){return _0x3a7cd3[_0x2efe('0x9')](_0x2efe('0xa'),attributes,{'tableName':_0x2efe('0xb'),'paranoid':![],'indexes':[{'name':_0x2efe('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 1f3fe60..6f5ced5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9d5=['../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','bluebird','ioredis'];(function(_0x2ca459,_0x39abc7){var _0x25d704=function(_0x32b46e){while(--_0x32b46e){_0x2ca459['push'](_0x2ca459['shift']());}};_0x25d704(++_0x39abc7);}(_0xc9d5,0x18a));var _0x5c9d=function(_0x351b36,_0x56462e){_0x351b36=_0x351b36-0x0;var _0x2b56de=_0xc9d5[_0x351b36];return _0x2b56de;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x5c9d('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5c9d('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x5c9d('0x2'));var logger=require(_0x5c9d('0x3'))(_0x5c9d('0x4'));var config=require(_0x5c9d('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x5c9d('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x25c52b,_0x10f686,_0x4ba4d7){return new BPromise(function(_0xe60fcf,_0x4b0d5e){return client[_0x5c9d('0x7')](_0x25c52b,_0x4ba4d7)[_0x5c9d('0x8')](function(_0x4457eb){logger[_0x5c9d('0x9')](_0x5c9d('0xa'),_0x10f686,_0x5c9d('0xb'));logger['debug'](_0x5c9d('0xc'),_0x10f686,_0x5c9d('0xb'),JSON[_0x5c9d('0xd')](_0x4457eb));if(_0x4457eb[_0x5c9d('0xe')]){if(_0x4457eb[_0x5c9d('0xe')]['code']===0x1f4){logger[_0x5c9d('0xe')]('FaxTransferReport,\x20%s,\x20%s',_0x10f686,_0x4457eb[_0x5c9d('0xe')][_0x5c9d('0xf')]);return _0x4b0d5e(_0x4457eb[_0x5c9d('0xe')][_0x5c9d('0xf')]);}logger[_0x5c9d('0xe')](_0x5c9d('0xa'),_0x10f686,_0x4457eb[_0x5c9d('0xe')][_0x5c9d('0xf')]);return _0xe60fcf(_0x4457eb['error'][_0x5c9d('0xf')]);}else{logger[_0x5c9d('0x9')](_0x5c9d('0xa'),_0x10f686,'request\x20sent');_0xe60fcf(_0x4457eb[_0x5c9d('0x10')][_0x5c9d('0xf')]);}})[_0x5c9d('0x11')](function(_0x5015bc){logger[_0x5c9d('0xe')]('FaxTransferReport,\x20%s,\x20%s',_0x10f686,_0x5015bc);_0x4b0d5e(_0x5015bc);});});}
\ No newline at end of file
+var _0x61f0=['bluebird','ioredis','rpc','../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','error','code','FaxTransferReport,\x20%s,\x20%s','message','lodash','moment'];(function(_0x55c1f0,_0x4f574f){var _0x1530fa=function(_0x631542){while(--_0x631542){_0x55c1f0['push'](_0x55c1f0['shift']());}};_0x1530fa(++_0x4f574f);}(_0x61f0,0x141));var _0x061f=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x61f0[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x061f('0x0'));var util=require('util');var moment=require(_0x061f('0x1'));var BPromise=require(_0x061f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x061f('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x061f('0x4'));var config=require(_0x061f('0x5'));var jayson=require(_0x061f('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2974cb,_0x383b85,_0x1e20e4){return new BPromise(function(_0x507fac,_0x1f5526){return client[_0x061f('0x7')](_0x2974cb,_0x1e20e4)[_0x061f('0x8')](function(_0x4368ff){logger[_0x061f('0x9')]('FaxTransferReport,\x20%s,\x20%s',_0x383b85,_0x061f('0xa'));logger[_0x061f('0xb')](_0x061f('0xc'),_0x383b85,'request\x20sent',JSON['stringify'](_0x4368ff));if(_0x4368ff[_0x061f('0xd')]){if(_0x4368ff[_0x061f('0xd')][_0x061f('0xe')]===0x1f4){logger[_0x061f('0xd')](_0x061f('0xf'),_0x383b85,_0x4368ff[_0x061f('0xd')][_0x061f('0x10')]);return _0x1f5526(_0x4368ff['error']['message']);}logger['error'](_0x061f('0xf'),_0x383b85,_0x4368ff[_0x061f('0xd')][_0x061f('0x10')]);return _0x507fac(_0x4368ff['error'][_0x061f('0x10')]);}else{logger[_0x061f('0x9')](_0x061f('0xf'),_0x383b85,'request\x20sent');_0x507fac(_0x4368ff['result']['message']);}})['catch'](function(_0x2681c6){logger[_0x061f('0xd')](_0x061f('0xf'),_0x383b85,_0x2681c6);_0x1f5526(_0x2681c6);});});}
\ No newline at end of file
index c67cd53..e0788f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9116=['create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x343841,_0x14ae93){var _0x143746=function(_0x1c29c7){while(--_0x1c29c7){_0x343841['push'](_0x343841['shift']());}};_0x143746(++_0x14ae93);}(_0x9116,0x92));var _0x6911=function(_0x2acd24,_0xf315ac){_0x2acd24=_0x2acd24-0x0;var _0x546099=_0x9116[_0x2acd24];return _0x546099;};'use strict';var multer=require(_0x6911('0x0'));var util=require(_0x6911('0x1'));var path=require('path');var timeout=require(_0x6911('0x2'));var express=require(_0x6911('0x3'));var router=express[_0x6911('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6911('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x6911('0x6'));var controller=require('./faxTransferReport.controller');router[_0x6911('0x7')]('/',auth[_0x6911('0x8')](),controller[_0x6911('0x9')]);router[_0x6911('0x7')](_0x6911('0xa'),auth[_0x6911('0x8')](),controller[_0x6911('0xb')]);router['get'](_0x6911('0xc'),auth[_0x6911('0x8')](),controller[_0x6911('0xd')]);router['post']('/',auth[_0x6911('0x8')](),controller[_0x6911('0xe')]);router[_0x6911('0xf')](_0x6911('0xc'),auth[_0x6911('0x8')](),controller[_0x6911('0x10')]);router[_0x6911('0x11')](_0x6911('0xc'),auth[_0x6911('0x8')](),controller[_0x6911('0x12')]);module[_0x6911('0x13')]=router;
\ No newline at end of file
+var _0x4e57=['isAuthenticated','index','get','describe','post','create','put','update','delete','/:id','destroy','exports','multer','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller'];(function(_0x5dafe0,_0xbca213){var _0x36e997=function(_0x4a0fbd){while(--_0x4a0fbd){_0x5dafe0['push'](_0x5dafe0['shift']());}};_0x36e997(++_0xbca213);}(_0x4e57,0x138));var _0x74e5=function(_0x3e5acd,_0x171201){_0x3e5acd=_0x3e5acd-0x0;var _0x18de8f=_0x4e57[_0x3e5acd];return _0x18de8f;};'use strict';var multer=require(_0x74e5('0x0'));var util=require(_0x74e5('0x1'));var path=require(_0x74e5('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x74e5('0x3'));var auth=require(_0x74e5('0x4'));var interaction=require(_0x74e5('0x5'));var config=require(_0x74e5('0x6'));var controller=require(_0x74e5('0x7'));router['get']('/',auth[_0x74e5('0x8')](),controller[_0x74e5('0x9')]);router[_0x74e5('0xa')]('/describe',auth[_0x74e5('0x8')](),controller[_0x74e5('0xb')]);router[_0x74e5('0xa')]('/:id',auth[_0x74e5('0x8')](),controller['show']);router[_0x74e5('0xc')]('/',auth[_0x74e5('0x8')](),controller[_0x74e5('0xd')]);router[_0x74e5('0xe')]('/:id',auth[_0x74e5('0x8')](),controller[_0x74e5('0xf')]);router[_0x74e5('0x10')](_0x74e5('0x11'),auth[_0x74e5('0x8')](),controller[_0x74e5('0x12')]);module[_0x74e5('0x13')]=router;
\ No newline at end of file
index 7c0716d..5f157db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7146=['show','/:id/configurations','/:id/fields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','index','/:id'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x7146,0xba));var _0x6714=function(_0xfb0cfd,_0x500179){_0xfb0cfd=_0xfb0cfd-0x0;var _0x2fd8aa=_0x7146[_0xfb0cfd];return _0x2fd8aa;};'use strict';var multer=require(_0x6714('0x0'));var util=require(_0x6714('0x1'));var path=require(_0x6714('0x2'));var timeout=require(_0x6714('0x3'));var express=require(_0x6714('0x4'));var router=express[_0x6714('0x5')]();var fs_extra=require(_0x6714('0x6'));var auth=require(_0x6714('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x6714('0x8'));var controller=require(_0x6714('0x9'));router[_0x6714('0xa')]('/',auth[_0x6714('0xb')](),controller[_0x6714('0xc')]);router[_0x6714('0xa')](_0x6714('0xd'),auth[_0x6714('0xb')](),controller[_0x6714('0xe')]);router[_0x6714('0xa')](_0x6714('0xf'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0x6714('0xa')](_0x6714('0x10'),auth[_0x6714('0xb')](),controller['getFields']);router[_0x6714('0x11')]('/',auth[_0x6714('0xb')](),controller[_0x6714('0x12')]);router[_0x6714('0x11')](_0x6714('0xf'),auth[_0x6714('0xb')](),controller[_0x6714('0x13')]);router[_0x6714('0x14')](_0x6714('0xd'),auth['isAuthenticated'](),controller[_0x6714('0x15')]);router[_0x6714('0x16')]('/:id',auth[_0x6714('0xb')](),controller[_0x6714('0x17')]);module[_0x6714('0x18')]=router;
\ No newline at end of file
+var _0x695e=['./intDeskAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0xa03e32,_0x28e118){var _0x2a001d=function(_0x46fb70){while(--_0x46fb70){_0xa03e32['push'](_0xa03e32['shift']());}};_0x2a001d(++_0x28e118);}(_0x695e,0x79));var _0xe695=function(_0x25d2fb,_0x18a774){_0x25d2fb=_0x25d2fb-0x0;var _0x1ded53=_0x695e[_0x25d2fb];return _0x1ded53;};'use strict';var multer=require(_0xe695('0x0'));var util=require(_0xe695('0x1'));var path=require(_0xe695('0x2'));var timeout=require(_0xe695('0x3'));var express=require(_0xe695('0x4'));var router=express[_0xe695('0x5')]();var fs_extra=require(_0xe695('0x6'));var auth=require(_0xe695('0x7'));var interaction=require(_0xe695('0x8'));var config=require('../../config/environment');var controller=require(_0xe695('0x9'));router[_0xe695('0xa')]('/',auth[_0xe695('0xb')](),controller[_0xe695('0xc')]);router['get']('/:id',auth[_0xe695('0xb')](),controller[_0xe695('0xd')]);router['get'](_0xe695('0xe'),auth[_0xe695('0xb')](),controller[_0xe695('0xf')]);router[_0xe695('0xa')](_0xe695('0x10'),auth[_0xe695('0xb')](),controller[_0xe695('0x11')]);router[_0xe695('0x12')]('/',auth[_0xe695('0xb')](),controller['create']);router['post'](_0xe695('0xe'),auth[_0xe695('0xb')](),controller[_0xe695('0x13')]);router[_0xe695('0x14')](_0xe695('0x15'),auth[_0xe695('0xb')](),controller[_0xe695('0x16')]);router[_0xe695('0x17')](_0xe695('0x15'),auth[_0xe695('0xb')](),controller[_0xe695('0x18')]);module[_0xe695('0x19')]=router;
\ No newline at end of file
index 1c4bab0..f940d16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15f1=['exports','STRING','basic','ENUM','integrationTab','newTab','sequelize'];(function(_0x16a244,_0x3b94f2){var _0x3b395e=function(_0x7e18c1){while(--_0x7e18c1){_0x16a244['push'](_0x16a244['shift']());}};_0x3b395e(++_0x3b94f2);}(_0x15f1,0x84));var _0x115f=function(_0x563dff,_0x5e1a3a){_0x563dff=_0x563dff-0x0;var _0x26191f=_0x15f1[_0x563dff];return _0x26191f;};'use strict';var Sequelize=require(_0x115f('0x0'));module[_0x115f('0x1')]={'name':{'type':Sequelize[_0x115f('0x2')]},'description':{'type':Sequelize[_0x115f('0x2')]},'username':{'type':Sequelize[_0x115f('0x2')]},'remoteUri':{'type':Sequelize[_0x115f('0x2')]},'authType':{'type':Sequelize['ENUM'](_0x115f('0x3')),'defaultValue':_0x115f('0x3')},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize[_0x115f('0x2')]},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x115f('0x2')]},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x115f('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x115f('0x4')](_0x115f('0x5'),_0x115f('0x6')),'defaultValue':_0x115f('0x5')}};
\ No newline at end of file
+var _0x7668=['integrationTab','sequelize','exports','STRING','ENUM','basic'];(function(_0x28db6a,_0x5c583a){var _0x2c66b3=function(_0x57ccde){while(--_0x57ccde){_0x28db6a['push'](_0x28db6a['shift']());}};_0x2c66b3(++_0x5c583a);}(_0x7668,0x85));var _0x8766=function(_0x2263ea,_0x2530d2){_0x2263ea=_0x2263ea-0x0;var _0x159687=_0x7668[_0x2263ea];return _0x159687;};'use strict';var Sequelize=require(_0x8766('0x0'));module[_0x8766('0x1')]={'name':{'type':Sequelize[_0x8766('0x2')]},'description':{'type':Sequelize[_0x8766('0x2')]},'username':{'type':Sequelize[_0x8766('0x2')]},'remoteUri':{'type':Sequelize[_0x8766('0x2')]},'authType':{'type':Sequelize[_0x8766('0x3')](_0x8766('0x4')),'defaultValue':_0x8766('0x4')},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize['STRING']},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x8766('0x2')]},'tokenSecret':{'type':Sequelize[_0x8766('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x8766('0x3')](_0x8766('0x5'),'newTab'),'defaultValue':_0x8766('0x5')}};
\ No newline at end of file
index 394cf40..6b45747 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6be7=['ejs','fs-extra','lodash','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','../../components/integrations/configuration','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','DeskAccount','includeAll','include','findAll','rows','catch','show','params','options','find','body','getConfigurations','findOne','DeskConfiguration','AccountId','Subjects','getSubjects','channel','create','DeskField','Descriptions','getFields','priority','remoteUri','username','consumerKey','consumerSecret','token','tokenSecret','slice','substring','lastIndexOf','GET','format','%s/custom_fields','application/json','authType','basic','Authorization','Basic\x20%s','password','toString','concat','_embedded','entries','active','label','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path'];(function(_0x5f0501,_0x19196e){var _0x3c2c45=function(_0x107fe6){while(--_0x107fe6){_0x5f0501['push'](_0x5f0501['shift']());}};_0x3c2c45(++_0x19196e);}(_0x6be7,0x1cc));var _0x76be=function(_0x371705,_0x54acf0){_0x371705=_0x371705-0x0;var _0x4e0c5b=_0x6be7[_0x371705];return _0x4e0c5b;};'use strict';var emlformat=require(_0x76be('0x0'));var rimraf=require(_0x76be('0x1'));var zipdir=require(_0x76be('0x2'));var jsonpatch=require(_0x76be('0x3'));var rp=require(_0x76be('0x4'));var moment=require('moment');var BPromise=require(_0x76be('0x5'));var Mustache=require('mustache');var util=require(_0x76be('0x6'));var path=require(_0x76be('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x76be('0x8'));var fs=require('fs');var fs_extra=require(_0x76be('0x9'));var _=require(_0x76be('0xa'));var squel=require('squel');var crypto=require(_0x76be('0xb'));var jsforce=require(_0x76be('0xc'));var deskjs=require(_0x76be('0xd'));var toCsv=require('to-csv');var querystring=require(_0x76be('0xe'));var Papa=require(_0x76be('0xf'));var Redis=require(_0x76be('0x10'));var authService=require(_0x76be('0x11'));var qs=require(_0x76be('0x12'));var as=require(_0x76be('0x13'));var hardwareService=require(_0x76be('0x14'));var logger=require('../../config/logger')(_0x76be('0x15'));var utils=require(_0x76be('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x76be('0x17'));var db=require(_0x76be('0x18'))['db'];var integrations=require(_0x76be('0x19'));function respondWithStatusCode(_0x5b15b8,_0x15d16d){_0x15d16d=_0x15d16d||0xcc;return function(_0x429222){if(_0x429222){return _0x5b15b8['sendStatus'](_0x15d16d);}return _0x5b15b8[_0x76be('0x1a')](_0x15d16d)['end']();};}function respondWithResult(_0x2e6144,_0x6a9a8f){_0x6a9a8f=_0x6a9a8f||0xc8;return function(_0x356345){if(_0x356345){return _0x2e6144[_0x76be('0x1a')](_0x6a9a8f)[_0x76be('0x1b')](_0x356345);}};}function respondWithFilteredResult(_0x4c92cf,_0x2ac9fe){return function(_0x234302){if(_0x234302){var _0x1943cf=typeof _0x2ac9fe[_0x76be('0x1c')]===_0x76be('0x1d')&&typeof _0x2ac9fe[_0x76be('0x1e')]===_0x76be('0x1d');var _0x2a9524=_0x234302[_0x76be('0x1f')];var _0x2591d8=_0x1943cf?0x0:_0x2ac9fe[_0x76be('0x1c')];var _0x310853=_0x1943cf?_0x234302[_0x76be('0x1f')]:_0x2ac9fe[_0x76be('0x1c')]+_0x2ac9fe[_0x76be('0x1e')];var _0x1fb512;if(_0x310853>=_0x2a9524){_0x310853=_0x2a9524;_0x1fb512=0xc8;}else{_0x1fb512=0xce;}_0x4c92cf[_0x76be('0x1a')](_0x1fb512);return _0x4c92cf[_0x76be('0x20')](_0x76be('0x21'),_0x2591d8+'-'+_0x310853+'/'+_0x2a9524)[_0x76be('0x1b')](_0x234302);}return null;};}function patchUpdates(_0x3953a2){return function(_0x507191){try{jsonpatch['apply'](_0x507191,_0x3953a2,!![]);}catch(_0x464c40){return BPromise['reject'](_0x464c40);}return _0x507191[_0x76be('0x22')]();};}function saveUpdates(_0xf899b2,_0x5d54b8){return function(_0xaad72a){if(_0xaad72a){return _0xaad72a[_0x76be('0x23')](_0xf899b2)[_0x76be('0x24')](function(_0x464183){return _0x464183;});}return null;};}function removeEntity(_0x4ed722,_0x58d445){return function(_0x1e9fd8){if(_0x1e9fd8){return _0x1e9fd8[_0x76be('0x25')]()[_0x76be('0x24')](function(){_0x4ed722[_0x76be('0x1a')](0xcc)[_0x76be('0x26')]();});}};}function handleEntityNotFound(_0x1f6792,_0x3700d6){return function(_0x100259){if(!_0x100259){_0x1f6792['sendStatus'](0x194);}return _0x100259;};}function handleError(_0x2c6623,_0x431d59){_0x431d59=_0x431d59||0x1f4;return function(_0x35c266){logger[_0x76be('0x27')](_0x35c266[_0x76be('0x28')]);if(_0x35c266['name']){delete _0x35c266[_0x76be('0x29')];}_0x2c6623['status'](_0x431d59)[_0x76be('0x2a')](_0x35c266);};}exports[_0x76be('0x2b')]=function(_0x7a22f1,_0x2e1bb9){var _0x27d6c4={},_0x30b44a={},_0x4044cb={'count':0x0,'rows':[]};var _0x24b1ff=_[_0x76be('0x2c')](db['DeskAccount'][_0x76be('0x2d')],function(_0x4135ef){return{'name':_0x4135ef['fieldName'],'type':_0x4135ef['type'][_0x76be('0x2e')]};});_0x30b44a[_0x76be('0x2f')]=_['map'](_0x24b1ff,'name');_0x30b44a[_0x76be('0x30')]=_[_0x76be('0x31')](_0x7a22f1[_0x76be('0x30')]);_0x30b44a[_0x76be('0x32')]=_[_0x76be('0x33')](_0x30b44a[_0x76be('0x2f')],_0x30b44a['query']);_0x27d6c4[_0x76be('0x34')]=_[_0x76be('0x33')](_0x30b44a[_0x76be('0x2f')],qs[_0x76be('0x35')](_0x7a22f1[_0x76be('0x30')]['fields']));_0x27d6c4[_0x76be('0x34')]=_0x27d6c4['attributes'][_0x76be('0x36')]?_0x27d6c4[_0x76be('0x34')]:_0x30b44a[_0x76be('0x2f')];if(!_0x7a22f1[_0x76be('0x30')][_0x76be('0x37')](_0x76be('0x38'))){_0x27d6c4['limit']=qs['limit'](_0x7a22f1[_0x76be('0x30')][_0x76be('0x1e')]);_0x27d6c4[_0x76be('0x1c')]=qs[_0x76be('0x1c')](_0x7a22f1[_0x76be('0x30')][_0x76be('0x1c')]);}_0x27d6c4[_0x76be('0x39')]=qs[_0x76be('0x3a')](_0x7a22f1[_0x76be('0x30')][_0x76be('0x3a')]);_0x27d6c4[_0x76be('0x3b')]=qs[_0x76be('0x32')](_[_0x76be('0x3c')](_0x7a22f1[_0x76be('0x30')],_0x30b44a[_0x76be('0x32')]),_0x24b1ff);if(_0x7a22f1[_0x76be('0x30')][_0x76be('0x3d')]){_0x27d6c4[_0x76be('0x3b')]=_[_0x76be('0x3e')](_0x27d6c4['where'],{'$or':_['map'](_0x24b1ff,function(_0x35bbe4){if(_0x35bbe4[_0x76be('0x3f')]!==_0x76be('0x40')){var _0x1d9e5b={};_0x1d9e5b[_0x35bbe4[_0x76be('0x29')]]={'$like':'%'+_0x7a22f1['query'][_0x76be('0x3d')]+'%'};return _0x1d9e5b;}})});}_0x27d6c4=_[_0x76be('0x3e')]({},_0x27d6c4,_0x7a22f1['options']);var _0x292d01={'where':_0x27d6c4[_0x76be('0x3b')]};return db[_0x76be('0x41')][_0x76be('0x1f')](_0x292d01)[_0x76be('0x24')](function(_0x5b0967){_0x4044cb['count']=_0x5b0967;if(_0x7a22f1[_0x76be('0x30')][_0x76be('0x42')]){_0x27d6c4[_0x76be('0x43')]=[{'all':!![]}];}return db['DeskAccount'][_0x76be('0x44')](_0x27d6c4);})[_0x76be('0x24')](function(_0xc33b5b){_0x4044cb[_0x76be('0x45')]=_0xc33b5b;return _0x4044cb;})['then'](respondWithFilteredResult(_0x2e1bb9,_0x27d6c4))[_0x76be('0x46')](handleError(_0x2e1bb9,null));};exports[_0x76be('0x47')]=function(_0x299831,_0x3283c8){var _0x279f97={'raw':![],'where':{'id':_0x299831[_0x76be('0x48')]['id']}},_0x4b76b7={};_0x4b76b7['model']=_[_0x76be('0x31')](db['DeskAccount'][_0x76be('0x2d')]);_0x4b76b7[_0x76be('0x30')]=_[_0x76be('0x31')](_0x299831[_0x76be('0x30')]);_0x4b76b7['filters']=_[_0x76be('0x33')](_0x4b76b7[_0x76be('0x2f')],_0x4b76b7[_0x76be('0x30')]);_0x279f97['attributes']=_['intersection'](_0x4b76b7[_0x76be('0x2f')],qs[_0x76be('0x35')](_0x299831['query'][_0x76be('0x35')]));_0x279f97[_0x76be('0x34')]=_0x279f97['attributes'][_0x76be('0x36')]?_0x279f97[_0x76be('0x34')]:_0x4b76b7[_0x76be('0x2f')];if(_0x299831[_0x76be('0x30')][_0x76be('0x42')]){_0x279f97['include']=[{'all':!![]}];}_0x279f97=_['merge']({},_0x279f97,_0x299831[_0x76be('0x49')]);return db[_0x76be('0x41')][_0x76be('0x4a')](_0x279f97)['then'](handleEntityNotFound(_0x3283c8,null))[_0x76be('0x24')](respondWithResult(_0x3283c8,null))['catch'](handleError(_0x3283c8,null));};exports['create']=function(_0x54b799,_0x4dcf4f){return db[_0x76be('0x41')]['create'](_0x54b799[_0x76be('0x4b')],{})[_0x76be('0x24')](respondWithResult(_0x4dcf4f,0xc9))[_0x76be('0x46')](handleError(_0x4dcf4f,null));};exports[_0x76be('0x23')]=function(_0x322c11,_0x4a4419){if(_0x322c11[_0x76be('0x4b')]['id']){delete _0x322c11[_0x76be('0x4b')]['id'];}return db[_0x76be('0x41')][_0x76be('0x4a')]({'where':{'id':_0x322c11[_0x76be('0x48')]['id']}})[_0x76be('0x24')](handleEntityNotFound(_0x4a4419,null))[_0x76be('0x24')](saveUpdates(_0x322c11[_0x76be('0x4b')],null))[_0x76be('0x24')](respondWithResult(_0x4a4419,null))[_0x76be('0x46')](handleError(_0x4a4419,null));};exports[_0x76be('0x25')]=function(_0x524143,_0x52bac1){return db[_0x76be('0x41')][_0x76be('0x4a')]({'where':{'id':_0x524143[_0x76be('0x48')]['id']}})[_0x76be('0x24')](handleEntityNotFound(_0x52bac1,null))[_0x76be('0x24')](removeEntity(_0x52bac1,null))[_0x76be('0x46')](handleError(_0x52bac1,null));};exports[_0x76be('0x4c')]=function(_0x3be9ba,_0x21830e,_0xae73e6){var _0x5c9a92={};var _0x5b72fe={};var _0x65943a;var _0x41d0b7;return db[_0x76be('0x41')][_0x76be('0x4d')]({'where':{'id':_0x3be9ba[_0x76be('0x48')]['id']}})[_0x76be('0x24')](handleEntityNotFound(_0x21830e,null))[_0x76be('0x24')](function(_0x15c4bc){if(_0x15c4bc){_0x65943a=_0x15c4bc;_0x5b72fe[_0x76be('0x2f')]=_[_0x76be('0x31')](db[_0x76be('0x4e')][_0x76be('0x2d')]);_0x5b72fe[_0x76be('0x30')]=_[_0x76be('0x31')](_0x3be9ba[_0x76be('0x30')]);_0x5b72fe[_0x76be('0x32')]=_[_0x76be('0x33')](_0x5b72fe[_0x76be('0x2f')],_0x5b72fe[_0x76be('0x30')]);_0x5c9a92[_0x76be('0x34')]=_[_0x76be('0x33')](_0x5b72fe[_0x76be('0x2f')],qs['fields'](_0x3be9ba[_0x76be('0x30')][_0x76be('0x35')]));_0x5c9a92['attributes']=_0x5c9a92[_0x76be('0x34')][_0x76be('0x36')]?_0x5c9a92[_0x76be('0x34')]:_0x5b72fe['model'];_0x5c9a92[_0x76be('0x39')]=qs['sort'](_0x3be9ba[_0x76be('0x30')]['sort']);_0x5c9a92[_0x76be('0x3b')]=qs[_0x76be('0x32')](_[_0x76be('0x3c')](_0x3be9ba[_0x76be('0x30')],_0x5b72fe[_0x76be('0x32')]));if(_0x3be9ba['query'][_0x76be('0x3d')]){_0x5c9a92['where']=_['merge'](_0x5c9a92[_0x76be('0x3b')],{'$or':_[_0x76be('0x2c')](_0x5c9a92[_0x76be('0x34')],function(_0x2114b1){var _0x4fad92={};_0x4fad92[_0x2114b1]={'$like':'%'+_0x3be9ba[_0x76be('0x30')][_0x76be('0x3d')]+'%'};return _0x4fad92;})});}_0x5c9a92=_[_0x76be('0x3e')]({},_0x5c9a92,_0x3be9ba[_0x76be('0x49')]);return _0x65943a['getConfigurations'](_0x5c9a92);}})[_0x76be('0x24')](function(_0x5c2142){if(_0x5c2142){_0x41d0b7=_0x5c2142[_0x76be('0x36')];if(!_0x3be9ba[_0x76be('0x30')][_0x76be('0x37')](_0x76be('0x38'))){_0x5c9a92['limit']=qs[_0x76be('0x1e')](_0x3be9ba[_0x76be('0x30')]['limit']);_0x5c9a92[_0x76be('0x1c')]=qs[_0x76be('0x1c')](_0x3be9ba[_0x76be('0x30')][_0x76be('0x1c')]);}return _0x65943a[_0x76be('0x4c')](_0x5c9a92);}})[_0x76be('0x24')](function(_0xbdb16c){if(_0xbdb16c){return _0xbdb16c?{'count':_0x41d0b7,'rows':_0xbdb16c}:null;}})[_0x76be('0x24')](respondWithResult(_0x21830e,null))['catch'](handleError(_0x21830e,null));};exports['addConfiguration']=function(_0x543881,_0x21f8dc,_0x5dccd9){if(_0x543881[_0x76be('0x4b')]['id']){delete _0x543881[_0x76be('0x4b')]['id'];}return db[_0x76be('0x41')][_0x76be('0x4d')]({'where':{'id':_0x543881[_0x76be('0x48')]['id']}})['then'](handleEntityNotFound(_0x21f8dc,null))[_0x76be('0x24')](function(_0x263fff){if(_0x263fff){_0x543881['body'][_0x76be('0x4f')]=_0x263fff['id'];_0x543881[_0x76be('0x4b')][_0x76be('0x50')]=integrations[_0x76be('0x51')](_0x543881[_0x76be('0x4b')][_0x76be('0x52')],_0x543881[_0x76be('0x4b')]['type']);_0x543881[_0x76be('0x4b')]['Descriptions']=integrations['getDescriptions'](_0x543881[_0x76be('0x4b')][_0x76be('0x52')],_0x543881[_0x76be('0x4b')][_0x76be('0x3f')]);return db['DeskConfiguration'][_0x76be('0x53')](_0x543881[_0x76be('0x4b')],{'include':[{'model':db['DeskField'],'as':_0x76be('0x50')},{'model':db[_0x76be('0x54')],'as':_0x76be('0x55')}]});}return null;})[_0x76be('0x24')](respondWithResult(_0x21f8dc,null))[_0x76be('0x46')](handleError(_0x21f8dc,null));};exports[_0x76be('0x56')]=function(_0x195fc1,_0x7533bd,_0x232934){var _0x3a833f=[{'name':'priority','label':_0x76be('0x57'),'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 _0x3dbc11='';return db[_0x76be('0x41')][_0x76be('0x4d')]({'where':{'id':_0x195fc1['params']['id']},'attributes':['id',_0x76be('0x58'),'authType',_0x76be('0x59'),'password',_0x76be('0x5a'),_0x76be('0x5b'),_0x76be('0x5c'),_0x76be('0x5d')]})[_0x76be('0x24')](handleEntityNotFound(_0x7533bd,null))['then'](function(_0x48581b){if(_0x48581b){_0x3dbc11=_0x48581b[_0x76be('0x58')];var _0x2af6da=_0x3dbc11[_0x76be('0x5e')](-0x1);if(_0x2af6da==='/'){_0x3dbc11=_0x3dbc11[_0x76be('0x5f')](0x0,_0x3dbc11[_0x76be('0x60')](_0x2af6da));}var _0x1cc339={'method':_0x76be('0x61'),'uri':util[_0x76be('0x62')](_0x76be('0x63'),_0x3dbc11),'headers':{'Content-Type':_0x76be('0x64'),'Accept':_0x76be('0x64')},'json':!![]};if(_0x48581b[_0x76be('0x65')]===_0x76be('0x66')){_0x1cc339['headers'][_0x76be('0x67')]=util[_0x76be('0x62')](_0x76be('0x68'),new Buffer(util[_0x76be('0x62')]('%s:%s',_0x48581b[_0x76be('0x59')],_0x48581b[_0x76be('0x69')]))[_0x76be('0x6a')]('base64'));}return rp(_0x1cc339)[_0x76be('0x24')](function(_0x303114){return _0x3a833f[_0x76be('0x6b')](_[_0x76be('0x2c')](_0x303114[_0x76be('0x6c')][_0x76be('0x6d')],function(_0x18464f){return{'id':_0x18464f[_0x76be('0x29')],'name':_0x18464f[_0x76be('0x29')],'type':_0x18464f[_0x76be('0x3f')],'active':_0x18464f[_0x76be('0x6e')],'label':_0x18464f[_0x76be('0x6f')],'custom':!![]};}));});}})[_0x76be('0x24')](function(_0x3b980c){return{'count':_0x3b980c[_0x76be('0x36')],'rows':_0x3b980c};})[_0x76be('0x24')](respondWithResult(_0x7533bd,null))['catch'](function(_0x46c437){var _0x11fac6=_0x195fc1[_0x76be('0x30')][_0x76be('0x70')]?0x1f4:_0x46c437[_0x76be('0x71')]||0x1f4;logger[_0x76be('0x27')](_0x76be('0x72'),_0x76be('0x56'),_0x11fac6,JSON[_0x76be('0x73')](_0x46c437));delete _0x46c437[_0x76be('0x29')];if(_0x11fac6===0x191){_0x11fac6=0x190;}_0x7533bd[_0x76be('0x1a')](_0x11fac6)[_0x76be('0x2a')](_0x195fc1[_0x76be('0x30')][_0x76be('0x70')]?{'message':_0x76be('0x74'),'statusCode':_0x46c437[_0x76be('0x71')]}:_0x46c437);});};
\ No newline at end of file
+var _0x57af=['sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','name','index','map','DeskAccount','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','filter','where','merge','options','includeAll','include','rows','catch','params','rawAttributes','find','body','findOne','pick','getConfigurations','hasOwnProperty','addConfiguration','AccountId','channel','Descriptions','DeskConfiguration','DeskField','Subjects','getFields','priority','authType','username','password','consumerKey','consumerSecret','token','remoteUri','substring','GET','%s/custom_fields','application/json','headers','Authorization','format','Basic\x20%s','%s:%s','toString','base64','concat','_embedded','entries','active','label','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','send','eml-format','zip-dir','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration'];(function(_0x283a20,_0xa25a33){var _0x2dcfa9=function(_0x1c5e65){while(--_0x1c5e65){_0x283a20['push'](_0x283a20['shift']());}};_0x2dcfa9(++_0xa25a33);}(_0x57af,0x138));var _0xf57a=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0x57af[_0x13ea00];return _0x1f7347;};'use strict';var emlformat=require(_0xf57a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf57a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xf57a('0x2'));var BPromise=require(_0xf57a('0x3'));var Mustache=require(_0xf57a('0x4'));var util=require(_0xf57a('0x5'));var path=require('path');var sox=require(_0xf57a('0x6'));var csv=require(_0xf57a('0x7'));var ejs=require(_0xf57a('0x8'));var fs=require('fs');var fs_extra=require(_0xf57a('0x9'));var _=require(_0xf57a('0xa'));var squel=require('squel');var crypto=require(_0xf57a('0xb'));var jsforce=require(_0xf57a('0xc'));var deskjs=require(_0xf57a('0xd'));var toCsv=require(_0xf57a('0x7'));var querystring=require('querystring');var Papa=require(_0xf57a('0xe'));var Redis=require('ioredis');var authService=require(_0xf57a('0xf'));var qs=require(_0xf57a('0x10'));var as=require(_0xf57a('0x11'));var hardwareService=require(_0xf57a('0x12'));var logger=require('../../config/logger')(_0xf57a('0x13'));var utils=require(_0xf57a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xf57a('0x15'));var db=require(_0xf57a('0x16'))['db'];var integrations=require(_0xf57a('0x17'));function respondWithStatusCode(_0x8c0f35,_0x3a6a7f){_0x3a6a7f=_0x3a6a7f||0xcc;return function(_0x54838f){if(_0x54838f){return _0x8c0f35[_0xf57a('0x18')](_0x3a6a7f);}return _0x8c0f35[_0xf57a('0x19')](_0x3a6a7f)[_0xf57a('0x1a')]();};}function respondWithResult(_0x338249,_0x578689){_0x578689=_0x578689||0xc8;return function(_0x2332c8){if(_0x2332c8){return _0x338249[_0xf57a('0x19')](_0x578689)[_0xf57a('0x1b')](_0x2332c8);}};}function respondWithFilteredResult(_0x214265,_0xeb3e6d){return function(_0x162672){if(_0x162672){var _0x2e74ad=typeof _0xeb3e6d[_0xf57a('0x1c')]==='undefined'&&typeof _0xeb3e6d[_0xf57a('0x1d')]===_0xf57a('0x1e');var _0x3a021e=_0x162672[_0xf57a('0x1f')];var _0x2eefe1=_0x2e74ad?0x0:_0xeb3e6d[_0xf57a('0x1c')];var _0xd5b075=_0x2e74ad?_0x162672['count']:_0xeb3e6d[_0xf57a('0x1c')]+_0xeb3e6d[_0xf57a('0x1d')];var _0x462354;if(_0xd5b075>=_0x3a021e){_0xd5b075=_0x3a021e;_0x462354=0xc8;}else{_0x462354=0xce;}_0x214265[_0xf57a('0x19')](_0x462354);return _0x214265[_0xf57a('0x20')](_0xf57a('0x21'),_0x2eefe1+'-'+_0xd5b075+'/'+_0x3a021e)['json'](_0x162672);}return null;};}function patchUpdates(_0x442ac3){return function(_0x463525){try{jsonpatch[_0xf57a('0x22')](_0x463525,_0x442ac3,!![]);}catch(_0x41906a){return BPromise[_0xf57a('0x23')](_0x41906a);}return _0x463525[_0xf57a('0x24')]();};}function saveUpdates(_0x18f7c0,_0x7bdf7c){return function(_0x2a7e4d){if(_0x2a7e4d){return _0x2a7e4d[_0xf57a('0x25')](_0x18f7c0)[_0xf57a('0x26')](function(_0x16ee03){return _0x16ee03;});}return null;};}function removeEntity(_0x2e037e,_0x2d7f53){return function(_0xd3a98){if(_0xd3a98){return _0xd3a98[_0xf57a('0x27')]()[_0xf57a('0x26')](function(){_0x2e037e[_0xf57a('0x19')](0xcc)[_0xf57a('0x1a')]();});}};}function handleEntityNotFound(_0x4e06e8,_0x4fad38){return function(_0x606f7a){if(!_0x606f7a){_0x4e06e8[_0xf57a('0x18')](0x194);}return _0x606f7a;};}function handleError(_0x2eb9e2,_0x48de25){_0x48de25=_0x48de25||0x1f4;return function(_0x3e9297){logger['error'](_0x3e9297['stack']);if(_0x3e9297['name']){delete _0x3e9297[_0xf57a('0x28')];}_0x2eb9e2['status'](_0x48de25)['send'](_0x3e9297);};}exports[_0xf57a('0x29')]=function(_0x396e44,_0x2860f8){var _0x24e9fa={},_0x11fe4f={},_0x2a9d52={'count':0x0,'rows':[]};var _0x1d1f93=_[_0xf57a('0x2a')](db[_0xf57a('0x2b')]['rawAttributes'],function(_0x4c27dc){return{'name':_0x4c27dc[_0xf57a('0x2c')],'type':_0x4c27dc[_0xf57a('0x2d')][_0xf57a('0x2e')]};});_0x11fe4f[_0xf57a('0x2f')]=_['map'](_0x1d1f93,_0xf57a('0x28'));_0x11fe4f[_0xf57a('0x30')]=_[_0xf57a('0x31')](_0x396e44[_0xf57a('0x30')]);_0x11fe4f[_0xf57a('0x32')]=_[_0xf57a('0x33')](_0x11fe4f[_0xf57a('0x2f')],_0x11fe4f[_0xf57a('0x30')]);_0x24e9fa[_0xf57a('0x34')]=_['intersection'](_0x11fe4f['model'],qs[_0xf57a('0x35')](_0x396e44[_0xf57a('0x30')][_0xf57a('0x35')]));_0x24e9fa[_0xf57a('0x34')]=_0x24e9fa[_0xf57a('0x34')][_0xf57a('0x36')]?_0x24e9fa[_0xf57a('0x34')]:_0x11fe4f[_0xf57a('0x2f')];if(!_0x396e44[_0xf57a('0x30')]['hasOwnProperty'](_0xf57a('0x37'))){_0x24e9fa[_0xf57a('0x1d')]=qs[_0xf57a('0x1d')](_0x396e44[_0xf57a('0x30')]['limit']);_0x24e9fa[_0xf57a('0x1c')]=qs['offset'](_0x396e44['query'][_0xf57a('0x1c')]);}_0x24e9fa[_0xf57a('0x38')]=qs[_0xf57a('0x39')](_0x396e44[_0xf57a('0x30')]['sort']);_0x24e9fa['where']=qs[_0xf57a('0x32')](_['pick'](_0x396e44[_0xf57a('0x30')],_0x11fe4f[_0xf57a('0x32')]),_0x1d1f93);if(_0x396e44[_0xf57a('0x30')][_0xf57a('0x3a')]){_0x24e9fa[_0xf57a('0x3b')]=_[_0xf57a('0x3c')](_0x24e9fa[_0xf57a('0x3b')],{'$or':_[_0xf57a('0x2a')](_0x1d1f93,function(_0x1cfc2c){if(_0x1cfc2c[_0xf57a('0x2d')]!=='VIRTUAL'){var _0xc690f0={};_0xc690f0[_0x1cfc2c[_0xf57a('0x28')]]={'$like':'%'+_0x396e44['query']['filter']+'%'};return _0xc690f0;}})});}_0x24e9fa=_[_0xf57a('0x3c')]({},_0x24e9fa,_0x396e44[_0xf57a('0x3d')]);var _0x1290f8={'where':_0x24e9fa[_0xf57a('0x3b')]};return db[_0xf57a('0x2b')][_0xf57a('0x1f')](_0x1290f8)[_0xf57a('0x26')](function(_0x326d31){_0x2a9d52[_0xf57a('0x1f')]=_0x326d31;if(_0x396e44[_0xf57a('0x30')][_0xf57a('0x3e')]){_0x24e9fa[_0xf57a('0x3f')]=[{'all':!![]}];}return db['DeskAccount']['findAll'](_0x24e9fa);})[_0xf57a('0x26')](function(_0x24f448){_0x2a9d52[_0xf57a('0x40')]=_0x24f448;return _0x2a9d52;})[_0xf57a('0x26')](respondWithFilteredResult(_0x2860f8,_0x24e9fa))[_0xf57a('0x41')](handleError(_0x2860f8,null));};exports['show']=function(_0x279b06,_0xc16dda){var _0x4ab860={'raw':![],'where':{'id':_0x279b06[_0xf57a('0x42')]['id']}},_0x11def8={};_0x11def8[_0xf57a('0x2f')]=_[_0xf57a('0x31')](db[_0xf57a('0x2b')][_0xf57a('0x43')]);_0x11def8['query']=_[_0xf57a('0x31')](_0x279b06[_0xf57a('0x30')]);_0x11def8[_0xf57a('0x32')]=_[_0xf57a('0x33')](_0x11def8[_0xf57a('0x2f')],_0x11def8[_0xf57a('0x30')]);_0x4ab860[_0xf57a('0x34')]=_[_0xf57a('0x33')](_0x11def8[_0xf57a('0x2f')],qs['fields'](_0x279b06['query']['fields']));_0x4ab860[_0xf57a('0x34')]=_0x4ab860[_0xf57a('0x34')][_0xf57a('0x36')]?_0x4ab860[_0xf57a('0x34')]:_0x11def8[_0xf57a('0x2f')];if(_0x279b06[_0xf57a('0x30')]['includeAll']){_0x4ab860[_0xf57a('0x3f')]=[{'all':!![]}];}_0x4ab860=_['merge']({},_0x4ab860,_0x279b06[_0xf57a('0x3d')]);return db['DeskAccount'][_0xf57a('0x44')](_0x4ab860)['then'](handleEntityNotFound(_0xc16dda,null))[_0xf57a('0x26')](respondWithResult(_0xc16dda,null))[_0xf57a('0x41')](handleError(_0xc16dda,null));};exports['create']=function(_0xcb8710,_0x4bc981){return db[_0xf57a('0x2b')]['create'](_0xcb8710['body'],{})['then'](respondWithResult(_0x4bc981,0xc9))[_0xf57a('0x41')](handleError(_0x4bc981,null));};exports[_0xf57a('0x25')]=function(_0x5dc274,_0x2cf046){if(_0x5dc274[_0xf57a('0x45')]['id']){delete _0x5dc274[_0xf57a('0x45')]['id'];}return db[_0xf57a('0x2b')][_0xf57a('0x44')]({'where':{'id':_0x5dc274[_0xf57a('0x42')]['id']}})['then'](handleEntityNotFound(_0x2cf046,null))[_0xf57a('0x26')](saveUpdates(_0x5dc274[_0xf57a('0x45')],null))[_0xf57a('0x26')](respondWithResult(_0x2cf046,null))[_0xf57a('0x41')](handleError(_0x2cf046,null));};exports[_0xf57a('0x27')]=function(_0x56ac43,_0xb5ac9){return db[_0xf57a('0x2b')]['find']({'where':{'id':_0x56ac43[_0xf57a('0x42')]['id']}})[_0xf57a('0x26')](handleEntityNotFound(_0xb5ac9,null))[_0xf57a('0x26')](removeEntity(_0xb5ac9,null))[_0xf57a('0x41')](handleError(_0xb5ac9,null));};exports['getConfigurations']=function(_0x34f657,_0xee58bb,_0xc719d3){var _0x4bc04f={};var _0x37ba5e={};var _0x54cf39;var _0x5e7dfe;return db[_0xf57a('0x2b')][_0xf57a('0x46')]({'where':{'id':_0x34f657['params']['id']}})[_0xf57a('0x26')](handleEntityNotFound(_0xee58bb,null))[_0xf57a('0x26')](function(_0x28f3e4){if(_0x28f3e4){_0x54cf39=_0x28f3e4;_0x37ba5e['model']=_[_0xf57a('0x31')](db['DeskConfiguration'][_0xf57a('0x43')]);_0x37ba5e['query']=_['keys'](_0x34f657[_0xf57a('0x30')]);_0x37ba5e[_0xf57a('0x32')]=_[_0xf57a('0x33')](_0x37ba5e['model'],_0x37ba5e[_0xf57a('0x30')]);_0x4bc04f[_0xf57a('0x34')]=_['intersection'](_0x37ba5e[_0xf57a('0x2f')],qs[_0xf57a('0x35')](_0x34f657[_0xf57a('0x30')]['fields']));_0x4bc04f['attributes']=_0x4bc04f[_0xf57a('0x34')][_0xf57a('0x36')]?_0x4bc04f[_0xf57a('0x34')]:_0x37ba5e[_0xf57a('0x2f')];_0x4bc04f['order']=qs[_0xf57a('0x39')](_0x34f657[_0xf57a('0x30')][_0xf57a('0x39')]);_0x4bc04f['where']=qs[_0xf57a('0x32')](_[_0xf57a('0x47')](_0x34f657[_0xf57a('0x30')],_0x37ba5e['filters']));if(_0x34f657[_0xf57a('0x30')]['filter']){_0x4bc04f[_0xf57a('0x3b')]=_[_0xf57a('0x3c')](_0x4bc04f['where'],{'$or':_[_0xf57a('0x2a')](_0x4bc04f[_0xf57a('0x34')],function(_0x532d11){var _0x153258={};_0x153258[_0x532d11]={'$like':'%'+_0x34f657[_0xf57a('0x30')]['filter']+'%'};return _0x153258;})});}_0x4bc04f=_['merge']({},_0x4bc04f,_0x34f657[_0xf57a('0x3d')]);return _0x54cf39[_0xf57a('0x48')](_0x4bc04f);}})['then'](function(_0x306e34){if(_0x306e34){_0x5e7dfe=_0x306e34[_0xf57a('0x36')];if(!_0x34f657[_0xf57a('0x30')][_0xf57a('0x49')](_0xf57a('0x37'))){_0x4bc04f[_0xf57a('0x1d')]=qs[_0xf57a('0x1d')](_0x34f657[_0xf57a('0x30')]['limit']);_0x4bc04f['offset']=qs['offset'](_0x34f657[_0xf57a('0x30')][_0xf57a('0x1c')]);}return _0x54cf39['getConfigurations'](_0x4bc04f);}})[_0xf57a('0x26')](function(_0x5ca844){if(_0x5ca844){return _0x5ca844?{'count':_0x5e7dfe,'rows':_0x5ca844}:null;}})[_0xf57a('0x26')](respondWithResult(_0xee58bb,null))[_0xf57a('0x41')](handleError(_0xee58bb,null));};exports[_0xf57a('0x4a')]=function(_0x444551,_0x258e45,_0x50b1d9){if(_0x444551[_0xf57a('0x45')]['id']){delete _0x444551[_0xf57a('0x45')]['id'];}return db['DeskAccount'][_0xf57a('0x46')]({'where':{'id':_0x444551[_0xf57a('0x42')]['id']}})[_0xf57a('0x26')](handleEntityNotFound(_0x258e45,null))[_0xf57a('0x26')](function(_0x21acd8){if(_0x21acd8){_0x444551[_0xf57a('0x45')][_0xf57a('0x4b')]=_0x21acd8['id'];_0x444551[_0xf57a('0x45')]['Subjects']=integrations['getSubjects'](_0x444551[_0xf57a('0x45')][_0xf57a('0x4c')],_0x444551[_0xf57a('0x45')][_0xf57a('0x2d')]);_0x444551[_0xf57a('0x45')][_0xf57a('0x4d')]=integrations['getDescriptions'](_0x444551[_0xf57a('0x45')]['channel'],_0x444551['body']['type']);return db[_0xf57a('0x4e')]['create'](_0x444551[_0xf57a('0x45')],{'include':[{'model':db[_0xf57a('0x4f')],'as':_0xf57a('0x50')},{'model':db[_0xf57a('0x4f')],'as':_0xf57a('0x4d')}]});}return null;})[_0xf57a('0x26')](respondWithResult(_0x258e45,null))['catch'](handleError(_0x258e45,null));};exports[_0xf57a('0x51')]=function(_0x395394,_0x1a65b7,_0x4a0666){var _0x3e94a6=[{'name':_0xf57a('0x52'),'label':_0xf57a('0x52'),'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 _0x19fd47='';return db['DeskAccount'][_0xf57a('0x46')]({'where':{'id':_0x395394[_0xf57a('0x42')]['id']},'attributes':['id','remoteUri',_0xf57a('0x53'),_0xf57a('0x54'),_0xf57a('0x55'),_0xf57a('0x56'),_0xf57a('0x57'),_0xf57a('0x58'),'tokenSecret']})[_0xf57a('0x26')](handleEntityNotFound(_0x1a65b7,null))[_0xf57a('0x26')](function(_0x10b830){if(_0x10b830){_0x19fd47=_0x10b830[_0xf57a('0x59')];var _0x79efdc=_0x19fd47['slice'](-0x1);if(_0x79efdc==='/'){_0x19fd47=_0x19fd47[_0xf57a('0x5a')](0x0,_0x19fd47['lastIndexOf'](_0x79efdc));}var _0x118ed0={'method':_0xf57a('0x5b'),'uri':util['format'](_0xf57a('0x5c'),_0x19fd47),'headers':{'Content-Type':_0xf57a('0x5d'),'Accept':_0xf57a('0x5d')},'json':!![]};if(_0x10b830[_0xf57a('0x53')]==='basic'){_0x118ed0[_0xf57a('0x5e')][_0xf57a('0x5f')]=util[_0xf57a('0x60')](_0xf57a('0x61'),new Buffer(util[_0xf57a('0x60')](_0xf57a('0x62'),_0x10b830[_0xf57a('0x54')],_0x10b830[_0xf57a('0x55')]))[_0xf57a('0x63')](_0xf57a('0x64')));}return rp(_0x118ed0)[_0xf57a('0x26')](function(_0x558e6e){return _0x3e94a6[_0xf57a('0x65')](_['map'](_0x558e6e[_0xf57a('0x66')][_0xf57a('0x67')],function(_0x4b4c13){return{'id':_0x4b4c13[_0xf57a('0x28')],'name':_0x4b4c13[_0xf57a('0x28')],'type':_0x4b4c13[_0xf57a('0x2d')],'active':_0x4b4c13[_0xf57a('0x68')],'label':_0x4b4c13[_0xf57a('0x69')],'custom':!![]};}));});}})[_0xf57a('0x26')](function(_0x615889){return{'count':_0x615889['length'],'rows':_0x615889};})[_0xf57a('0x26')](respondWithResult(_0x1a65b7,null))[_0xf57a('0x41')](function(_0x2a46d5){var _0x371a09=_0x395394[_0xf57a('0x30')][_0xf57a('0x6a')]?0x1f4:_0x2a46d5[_0xf57a('0x6b')]||0x1f4;logger[_0xf57a('0x6c')](_0xf57a('0x6d'),_0xf57a('0x51'),_0x371a09,JSON[_0xf57a('0x6e')](_0x2a46d5));delete _0x2a46d5[_0xf57a('0x28')];if(_0x371a09===0x191){_0x371a09=0x190;}_0x1a65b7['status'](_0x371a09)[_0xf57a('0x6f')](_0x395394['query'][_0xf57a('0x6a')]?{'message':'Wrong\x20credentials','statusCode':_0x2a46d5[_0xf57a('0x6b')]}:_0x2a46d5);});};
\ No newline at end of file
index 07d8206..ba7a7df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6226=['int_desk_accounts','lodash','util','api','moment','bluebird','path','../../config/environment','../../components/integrations/configuration','define','DeskAccount'];(function(_0x51b1fc,_0x34e3de){var _0x2f43c7=function(_0x537542){while(--_0x537542){_0x51b1fc['push'](_0x51b1fc['shift']());}};_0x2f43c7(++_0x34e3de);}(_0x6226,0xbc));var _0x6622=function(_0x3d6591,_0x3f0085){_0x3d6591=_0x3d6591-0x0;var _0x57e3ea=_0x6226[_0x3d6591];return _0x57e3ea;};'use strict';var _=require(_0x6622('0x0'));var util=require(_0x6622('0x1'));var logger=require('../../config/logger')(_0x6622('0x2'));var moment=require(_0x6622('0x3'));var BPromise=require(_0x6622('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6622('0x5'));var rimraf=require('rimraf');var config=require(_0x6622('0x6'));var attributes=require('./intDeskAccount.attributes');var integrations=require(_0x6622('0x7'));module['exports']=function(_0x5e02c6,_0x41c231){return _0x5e02c6[_0x6622('0x8')](_0x6622('0x9'),attributes,{'tableName':_0x6622('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd0fa=['../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','exports','define','DeskAccount','int_desk_accounts','lodash','util','../../config/logger','moment','path','rimraf'];(function(_0x534092,_0x5f5901){var _0x20c499=function(_0x9be126){while(--_0x9be126){_0x534092['push'](_0x534092['shift']());}};_0x20c499(++_0x5f5901);}(_0xd0fa,0xfe));var _0xad0f=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0xd0fa[_0x565c49];return _0x20ca34;};'use strict';var _=require(_0xad0f('0x0'));var util=require(_0xad0f('0x1'));var logger=require(_0xad0f('0x2'))('api');var moment=require(_0xad0f('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xad0f('0x4'));var rimraf=require(_0xad0f('0x5'));var config=require(_0xad0f('0x6'));var attributes=require(_0xad0f('0x7'));var integrations=require(_0xad0f('0x8'));module[_0xad0f('0x9')]=function(_0x103775,_0x12795a){return _0x103775[_0xad0f('0xa')](_0xad0f('0xb'),attributes,{'tableName':_0xad0f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0320814..5242e0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb89b=['DeskAccount,\x20%s,\x20%s,\x20%s','error','code','message','DeskAccount,\x20%s,\x20%s','request\x20sent','result','GetDeskAccount','options','where','attributes','include','model','catch','ShowDeskAccount','DeskAccount','raw','map','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','debug'];(function(_0x33f79b,_0x2acfe8){var _0x1404a7=function(_0x5a2b50){while(--_0x5a2b50){_0x33f79b['push'](_0x33f79b['shift']());}};_0x1404a7(++_0x2acfe8);}(_0xb89b,0xbd));var _0xbb89=function(_0x4ffdc4,_0x34a28a){_0x4ffdc4=_0x4ffdc4-0x0;var _0x3b010c=_0xb89b[_0x4ffdc4];return _0x3b010c;};'use strict';var _=require(_0xbb89('0x0'));var util=require(_0xbb89('0x1'));var moment=require(_0xbb89('0x2'));var BPromise=require(_0xbb89('0x3'));var rs=require(_0xbb89('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb89('0x5'))['db'];var utils=require(_0xbb89('0x6'));var logger=require('../../config/logger')(_0xbb89('0x7'));var config=require(_0xbb89('0x8'));var jayson=require(_0xbb89('0x9'));var client=jayson['client'][_0xbb89('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3ece2a,_0x226594,_0x514999){return new BPromise(function(_0x5e53ad,_0x15c871){return client[_0xbb89('0xb')](_0x3ece2a,_0x514999)[_0xbb89('0xc')](function(_0x4ab2b4){logger[_0xbb89('0xd')]('DeskAccount,\x20%s,\x20%s',_0x226594,'request\x20sent');logger[_0xbb89('0xe')](_0xbb89('0xf'),_0x226594,'request\x20sent',JSON['stringify'](_0x4ab2b4));if(_0x4ab2b4[_0xbb89('0x10')]){if(_0x4ab2b4[_0xbb89('0x10')][_0xbb89('0x11')]===0x1f4){logger['error']('DeskAccount,\x20%s,\x20%s',_0x226594,_0x4ab2b4['error']['message']);return _0x15c871(_0x4ab2b4[_0xbb89('0x10')][_0xbb89('0x12')]);}logger[_0xbb89('0x10')](_0xbb89('0x13'),_0x226594,_0x4ab2b4['error'][_0xbb89('0x12')]);return _0x5e53ad(_0x4ab2b4['error'][_0xbb89('0x12')]);}else{logger[_0xbb89('0xd')](_0xbb89('0x13'),_0x226594,_0xbb89('0x14'));_0x5e53ad(_0x4ab2b4[_0xbb89('0x15')][_0xbb89('0x12')]);}})['catch'](function(_0x15dee3){logger[_0xbb89('0x10')]('DeskAccount,\x20%s,\x20%s',_0x226594,_0x15dee3);_0x15c871(_0x15dee3);});});}exports[_0xbb89('0x16')]=function(_0x3ff271){var _0x355dcd=this;return new Promise(function(_0x326475,_0x31ffb0){return db['DeskAccount']['findAll']({'raw':_0x3ff271['options']?_0x3ff271[_0xbb89('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x3ff271['options']?_0x3ff271[_0xbb89('0x17')][_0xbb89('0x18')]||null:null,'attributes':_0x3ff271['options']?_0x3ff271[_0xbb89('0x17')][_0xbb89('0x19')]||null:null,'limit':_0x3ff271[_0xbb89('0x17')]?_0x3ff271[_0xbb89('0x17')]['limit']||null:null,'include':_0x3ff271[_0xbb89('0x17')]?_0x3ff271[_0xbb89('0x17')][_0xbb89('0x1a')]?_['map'](_0x3ff271[_0xbb89('0x17')][_0xbb89('0x1a')],function(_0x4f58fe){return{'model':db[_0x4f58fe['model']],'as':_0x4f58fe['as'],'attributes':_0x4f58fe[_0xbb89('0x19')],'include':_0x4f58fe[_0xbb89('0x1a')]?_['map'](_0x4f58fe[_0xbb89('0x1a')],function(_0x10aea4){return{'model':db[_0x10aea4[_0xbb89('0x1b')]],'as':_0x10aea4['as'],'attributes':_0x10aea4[_0xbb89('0x19')],'include':_0x10aea4[_0xbb89('0x1a')]?_['map'](_0x10aea4[_0xbb89('0x1a')],function(_0x50e901){return{'model':db[_0x50e901[_0xbb89('0x1b')]],'as':_0x50e901['as'],'attributes':_0x50e901[_0xbb89('0x19')]};}):[]};}):[]};}):[]:[]})[_0xbb89('0xc')](function(_0x3ebe06){logger[_0xbb89('0xd')](_0xbb89('0x16'),_0x3ff271);logger[_0xbb89('0xe')](_0xbb89('0x16'),_0x3ff271,JSON['stringify'](_0x3ebe06));_0x326475(_0x3ebe06);})[_0xbb89('0x1c')](function(_0x55707c){logger[_0xbb89('0x10')](_0xbb89('0x16'),_0x55707c[_0xbb89('0x12')],_0x3ff271);_0x31ffb0(_0x355dcd[_0xbb89('0x10')](0x1f4,_0x55707c[_0xbb89('0x12')]));});});};exports[_0xbb89('0x1d')]=function(_0x44cef8){var _0x2934fb=this;return new Promise(function(_0x3cb03c,_0x4ecd8e){return db[_0xbb89('0x1e')]['find']({'raw':_0x44cef8[_0xbb89('0x17')]?_0x44cef8[_0xbb89('0x17')][_0xbb89('0x1f')]===undefined?!![]:![]:!![],'where':_0x44cef8[_0xbb89('0x17')]?_0x44cef8[_0xbb89('0x17')][_0xbb89('0x18')]||null:null,'attributes':_0x44cef8['options']?_0x44cef8[_0xbb89('0x17')]['attributes']||null:null,'include':_0x44cef8[_0xbb89('0x17')]?_0x44cef8['options']['include']?_[_0xbb89('0x20')](_0x44cef8[_0xbb89('0x17')][_0xbb89('0x1a')],function(_0x53a038){return{'model':db[_0x53a038[_0xbb89('0x1b')]],'as':_0x53a038['as'],'attributes':_0x53a038[_0xbb89('0x19')],'include':_0x53a038[_0xbb89('0x1a')]?_[_0xbb89('0x20')](_0x53a038[_0xbb89('0x1a')],function(_0x40fe41){return{'model':db[_0x40fe41[_0xbb89('0x1b')]],'as':_0x40fe41['as'],'attributes':_0x40fe41[_0xbb89('0x19')],'include':_0x40fe41[_0xbb89('0x1a')]?_[_0xbb89('0x20')](_0x40fe41[_0xbb89('0x1a')],function(_0x548192){return{'model':db[_0x548192[_0xbb89('0x1b')]],'as':_0x548192['as'],'attributes':_0x548192[_0xbb89('0x19')]};}):[]};}):[]};}):[]:[]})[_0xbb89('0xc')](function(_0x49f5f7){logger['info'](_0xbb89('0x1d'),_0x44cef8);logger[_0xbb89('0xe')]('ShowDeskAccount',_0x44cef8,JSON[_0xbb89('0x21')](_0x49f5f7));_0x3cb03c(_0x49f5f7);})[_0xbb89('0x1c')](function(_0x24df65){logger[_0xbb89('0x10')](_0xbb89('0x1d'),_0x24df65[_0xbb89('0x12')],_0x44cef8);_0x4ecd8e(_0x2934fb[_0xbb89('0x10')](0x1f4,_0x24df65[_0xbb89('0x12')]));});});};
\ No newline at end of file
+var _0x0826=['DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','DeskAccount','options','raw','where','attributes','limit','include','map','model','GetDeskAccount','ShowDeskAccount','find','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x1a4ff2,_0x279137){var _0x266999=function(_0x22d9e1){while(--_0x22d9e1){_0x1a4ff2['push'](_0x1a4ff2['shift']());}};_0x266999(++_0x279137);}(_0x0826,0x171));var _0x6082=function(_0x143ccf,_0x2aa561){_0x143ccf=_0x143ccf-0x0;var _0x23331a=_0x0826[_0x143ccf];return _0x23331a;};'use strict';var _=require(_0x6082('0x0'));var util=require(_0x6082('0x1'));var moment=require('moment');var BPromise=require(_0x6082('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6082('0x3'));var db=require(_0x6082('0x4'))['db'];var utils=require(_0x6082('0x5'));var logger=require(_0x6082('0x6'))(_0x6082('0x7'));var config=require(_0x6082('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x6082('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4af848,_0x4d7dc6,_0x2878a2){return new BPromise(function(_0x4c9445,_0x5353a6){return client[_0x6082('0xa')](_0x4af848,_0x2878a2)[_0x6082('0xb')](function(_0x14bbad){logger[_0x6082('0xc')](_0x6082('0xd'),_0x4d7dc6,_0x6082('0xe'));logger[_0x6082('0xf')](_0x6082('0x10'),_0x4d7dc6,_0x6082('0xe'),JSON[_0x6082('0x11')](_0x14bbad));if(_0x14bbad[_0x6082('0x12')]){if(_0x14bbad[_0x6082('0x12')][_0x6082('0x13')]===0x1f4){logger['error']('DeskAccount,\x20%s,\x20%s',_0x4d7dc6,_0x14bbad[_0x6082('0x12')][_0x6082('0x14')]);return _0x5353a6(_0x14bbad[_0x6082('0x12')][_0x6082('0x14')]);}logger[_0x6082('0x12')](_0x6082('0xd'),_0x4d7dc6,_0x14bbad[_0x6082('0x12')][_0x6082('0x14')]);return _0x4c9445(_0x14bbad['error'][_0x6082('0x14')]);}else{logger[_0x6082('0xc')]('DeskAccount,\x20%s,\x20%s',_0x4d7dc6,_0x6082('0xe'));_0x4c9445(_0x14bbad[_0x6082('0x15')][_0x6082('0x14')]);}})[_0x6082('0x16')](function(_0x81c83f){logger[_0x6082('0x12')](_0x6082('0xd'),_0x4d7dc6,_0x81c83f);_0x5353a6(_0x81c83f);});});}exports['GetDeskAccount']=function(_0x50831a){var _0x8d91d5=this;return new Promise(function(_0x12c5b3,_0x1e06e4){return db[_0x6082('0x17')]['findAll']({'raw':_0x50831a[_0x6082('0x18')]?_0x50831a[_0x6082('0x18')][_0x6082('0x19')]===undefined?!![]:![]:!![],'where':_0x50831a[_0x6082('0x18')]?_0x50831a[_0x6082('0x18')][_0x6082('0x1a')]||null:null,'attributes':_0x50831a[_0x6082('0x18')]?_0x50831a[_0x6082('0x18')][_0x6082('0x1b')]||null:null,'limit':_0x50831a[_0x6082('0x18')]?_0x50831a[_0x6082('0x18')][_0x6082('0x1c')]||null:null,'include':_0x50831a['options']?_0x50831a[_0x6082('0x18')][_0x6082('0x1d')]?_[_0x6082('0x1e')](_0x50831a[_0x6082('0x18')]['include'],function(_0x5bc514){return{'model':db[_0x5bc514['model']],'as':_0x5bc514['as'],'attributes':_0x5bc514[_0x6082('0x1b')],'include':_0x5bc514['include']?_[_0x6082('0x1e')](_0x5bc514[_0x6082('0x1d')],function(_0x4f862c){return{'model':db[_0x4f862c[_0x6082('0x1f')]],'as':_0x4f862c['as'],'attributes':_0x4f862c[_0x6082('0x1b')],'include':_0x4f862c[_0x6082('0x1d')]?_[_0x6082('0x1e')](_0x4f862c['include'],function(_0x2f0d62){return{'model':db[_0x2f0d62[_0x6082('0x1f')]],'as':_0x2f0d62['as'],'attributes':_0x2f0d62[_0x6082('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x6082('0xb')](function(_0x4ac08){logger[_0x6082('0xc')]('GetDeskAccount',_0x50831a);logger[_0x6082('0xf')](_0x6082('0x20'),_0x50831a,JSON[_0x6082('0x11')](_0x4ac08));_0x12c5b3(_0x4ac08);})['catch'](function(_0x131ded){logger[_0x6082('0x12')]('GetDeskAccount',_0x131ded['message'],_0x50831a);_0x1e06e4(_0x8d91d5[_0x6082('0x12')](0x1f4,_0x131ded['message']));});});};exports[_0x6082('0x21')]=function(_0x43e5b7){var _0x1c4428=this;return new Promise(function(_0x4648b5,_0x1ab753){return db[_0x6082('0x17')][_0x6082('0x22')]({'raw':_0x43e5b7[_0x6082('0x18')]?_0x43e5b7[_0x6082('0x18')][_0x6082('0x19')]===undefined?!![]:![]:!![],'where':_0x43e5b7[_0x6082('0x18')]?_0x43e5b7[_0x6082('0x18')][_0x6082('0x1a')]||null:null,'attributes':_0x43e5b7['options']?_0x43e5b7[_0x6082('0x18')][_0x6082('0x1b')]||null:null,'include':_0x43e5b7[_0x6082('0x18')]?_0x43e5b7[_0x6082('0x18')]['include']?_['map'](_0x43e5b7[_0x6082('0x18')][_0x6082('0x1d')],function(_0x3bbf29){return{'model':db[_0x3bbf29[_0x6082('0x1f')]],'as':_0x3bbf29['as'],'attributes':_0x3bbf29[_0x6082('0x1b')],'include':_0x3bbf29[_0x6082('0x1d')]?_['map'](_0x3bbf29[_0x6082('0x1d')],function(_0x28ce71){return{'model':db[_0x28ce71[_0x6082('0x1f')]],'as':_0x28ce71['as'],'attributes':_0x28ce71['attributes'],'include':_0x28ce71['include']?_['map'](_0x28ce71[_0x6082('0x1d')],function(_0x2900c3){return{'model':db[_0x2900c3['model']],'as':_0x2900c3['as'],'attributes':_0x2900c3[_0x6082('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xfd27cc){logger[_0x6082('0xc')](_0x6082('0x21'),_0x43e5b7);logger[_0x6082('0xf')]('ShowDeskAccount',_0x43e5b7,JSON[_0x6082('0x11')](_0xfd27cc));_0x4648b5(_0xfd27cc);})[_0x6082('0x16')](function(_0x142a3c){logger[_0x6082('0x12')](_0x6082('0x21'),_0x142a3c[_0x6082('0x14')],_0x43e5b7);_0x1ab753(_0x1c4428[_0x6082('0x12')](0x1f4,_0x142a3c[_0x6082('0x14')]));});});};
\ No newline at end of file
index 735a52e..87d6d29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x5e3839,_0x2ed605){var _0x22a6ca=function(_0x3203db){while(--_0x3203db){_0x5e3839['push'](_0x5e3839['shift']());}};_0x22a6ca(++_0x2ed605);}(_0x008c,0x188));var _0xc008=function(_0x4491d9,_0x5856ec){_0x4491d9=_0x4491d9-0x0;var _0x3e9dba=_0x008c[_0x4491d9];return _0x3e9dba;};'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
+var _0x55ca=['../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','setTags','put','/:id','update','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service'];(function(_0x2283dc,_0x2fcfc5){var _0x16db90=function(_0x376c35){while(--_0x376c35){_0x2283dc['push'](_0x2283dc['shift']());}};_0x16db90(++_0x2fcfc5);}(_0x55ca,0x126));var _0xa55c=function(_0x4fc80b,_0xfe1b3d){_0x4fc80b=_0x4fc80b-0x0;var _0x119dba=_0x55ca[_0x4fc80b];return _0x119dba;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['get'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller['getFields']);router['get'](_0xa55c('0xc'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xd')]);router[_0xa55c('0x7')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);router[_0xa55c('0x7')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller['getTags']);router['post']('/',auth[_0xa55c('0x8')](),controller['create']);router['post']('/:id/tags',auth[_0xa55c('0x8')](),controller[_0xa55c('0x11')]);router[_0xa55c('0x12')](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x14')]);router['delete'](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x15')]);module[_0xa55c('0x16')]=router;
\ No newline at end of file
index fcf28ad..a1eedf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e22=['STRING'];(function(_0x3394a6,_0x7b1ede){var _0x4a7909=function(_0x20451f){while(--_0x20451f){_0x3394a6['push'](_0x3394a6['shift']());}};_0x4a7909(++_0x7b1ede);}(_0x5e22,0xc3));var _0x25e2=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x5e22[_0x46698a];return _0x356db0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x25e2('0x0')]},'description':{'type':Sequelize[_0x25e2('0x0')]}};
\ No newline at end of file
+var _0xfc1e=['exports','STRING','sequelize'];(function(_0x211a6a,_0xf7eb1f){var _0x28dbae=function(_0x2a868a){while(--_0x2a868a){_0x211a6a['push'](_0x211a6a['shift']());}};_0x28dbae(++_0xf7eb1f);}(_0xfc1e,0x1df));var _0xefc1=function(_0x868b7c,_0xfa438b){_0x868b7c=_0x868b7c-0x0;var _0x21683c=_0xfc1e[_0x868b7c];return _0x21683c;};'use strict';var Sequelize=require(_0xefc1('0x0'));module[_0xefc1('0x1')]={'name':{'type':Sequelize[_0xefc1('0x2')]},'description':{'type':Sequelize[_0xefc1('0x2')]}};
\ No newline at end of file
index a9b8f70..8330002 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b15=['options','DeskConfiguration','includeAll','include','findAll','then','rows','catch','show','params','rawAttributes','merge','find','create','body','findOne','DeskField','hasOwnProperty','getFields','getSubjects','getDescriptions','getTags','setTags','ids','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','offset','undefined','count','limit','set','Content-Range','json','apply','save','update','destroy','end','sendStatus','error','name','index','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','map','VIRTUAL'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x2b15,0x168));var _0x52b1=function(_0x41e2af,_0x3662f8){_0x41e2af=_0x41e2af-0x0;var _0x41df19=_0x2b15[_0x41e2af];return _0x41df19;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x52b1('0x0'));var jsonpatch=require(_0x52b1('0x1'));var rp=require(_0x52b1('0x2'));var moment=require(_0x52b1('0x3'));var BPromise=require(_0x52b1('0x4'));var Mustache=require(_0x52b1('0x5'));var util=require('util');var path=require(_0x52b1('0x6'));var sox=require(_0x52b1('0x7'));var csv=require(_0x52b1('0x8'));var ejs=require(_0x52b1('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x52b1('0xa'));var squel=require(_0x52b1('0xb'));var crypto=require(_0x52b1('0xc'));var jsforce=require(_0x52b1('0xd'));var deskjs=require(_0x52b1('0xe'));var toCsv=require(_0x52b1('0x8'));var querystring=require(_0x52b1('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x52b1('0x10'));var qs=require(_0x52b1('0x11'));var as=require(_0x52b1('0x12'));var hardwareService=require(_0x52b1('0x13'));var logger=require(_0x52b1('0x14'))(_0x52b1('0x15'));var utils=require(_0x52b1('0x16'));var config=require(_0x52b1('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x52b1('0x18'))['db'];function respondWithStatusCode(_0x121f12,_0x37c338){_0x37c338=_0x37c338||0xcc;return function(_0x1a47e4){if(_0x1a47e4){return _0x121f12['sendStatus'](_0x37c338);}return _0x121f12['status'](_0x37c338)['end']();};}function respondWithResult(_0x44afc4,_0x12b406){_0x12b406=_0x12b406||0xc8;return function(_0x3f60dd){if(_0x3f60dd){return _0x44afc4[_0x52b1('0x19')](_0x12b406)['json'](_0x3f60dd);}};}function respondWithFilteredResult(_0x5571b7,_0x110280){return function(_0x158ca1){if(_0x158ca1){var _0x3badfa=typeof _0x110280[_0x52b1('0x1a')]==='undefined'&&typeof _0x110280['limit']===_0x52b1('0x1b');var _0x199222=_0x158ca1[_0x52b1('0x1c')];var _0x2e5ace=_0x3badfa?0x0:_0x110280[_0x52b1('0x1a')];var _0x359360=_0x3badfa?_0x158ca1[_0x52b1('0x1c')]:_0x110280['offset']+_0x110280[_0x52b1('0x1d')];var _0x5ac819;if(_0x359360>=_0x199222){_0x359360=_0x199222;_0x5ac819=0xc8;}else{_0x5ac819=0xce;}_0x5571b7[_0x52b1('0x19')](_0x5ac819);return _0x5571b7[_0x52b1('0x1e')](_0x52b1('0x1f'),_0x2e5ace+'-'+_0x359360+'/'+_0x199222)[_0x52b1('0x20')](_0x158ca1);}return null;};}function patchUpdates(_0x1bf61){return function(_0x3d44b8){try{jsonpatch[_0x52b1('0x21')](_0x3d44b8,_0x1bf61,!![]);}catch(_0x407529){return BPromise['reject'](_0x407529);}return _0x3d44b8[_0x52b1('0x22')]();};}function saveUpdates(_0x36c4eb,_0x482496){return function(_0x3410f6){if(_0x3410f6){return _0x3410f6[_0x52b1('0x23')](_0x36c4eb)['then'](function(_0x33edbe){return _0x33edbe;});}return null;};}function removeEntity(_0x530082,_0x217995){return function(_0x45d716){if(_0x45d716){return _0x45d716[_0x52b1('0x24')]()['then'](function(){_0x530082[_0x52b1('0x19')](0xcc)[_0x52b1('0x25')]();});}};}function handleEntityNotFound(_0x13a527,_0x338328){return function(_0x4a3f90){if(!_0x4a3f90){_0x13a527[_0x52b1('0x26')](0x194);}return _0x4a3f90;};}function handleError(_0x2acffc,_0x1f4764){_0x1f4764=_0x1f4764||0x1f4;return function(_0x28e5b0){logger[_0x52b1('0x27')](_0x28e5b0['stack']);if(_0x28e5b0[_0x52b1('0x28')]){delete _0x28e5b0[_0x52b1('0x28')];}_0x2acffc[_0x52b1('0x19')](_0x1f4764)['send'](_0x28e5b0);};}exports[_0x52b1('0x29')]=function(_0xdbcfbc,_0x391229){var _0x20f3b5={},_0x2cb035={},_0x492e02={'count':0x0,'rows':[]};var _0x3b5b0e=_['map'](db['DeskConfiguration']['rawAttributes'],function(_0x1ff011){return{'name':_0x1ff011[_0x52b1('0x2a')],'type':_0x1ff011[_0x52b1('0x2b')]['key']};});_0x2cb035[_0x52b1('0x2c')]=_['map'](_0x3b5b0e,_0x52b1('0x28'));_0x2cb035[_0x52b1('0x2d')]=_[_0x52b1('0x2e')](_0xdbcfbc['query']);_0x2cb035[_0x52b1('0x2f')]=_[_0x52b1('0x30')](_0x2cb035['model'],_0x2cb035['query']);_0x20f3b5[_0x52b1('0x31')]=_[_0x52b1('0x30')](_0x2cb035['model'],qs[_0x52b1('0x32')](_0xdbcfbc[_0x52b1('0x2d')][_0x52b1('0x32')]));_0x20f3b5[_0x52b1('0x31')]=_0x20f3b5[_0x52b1('0x31')][_0x52b1('0x33')]?_0x20f3b5[_0x52b1('0x31')]:_0x2cb035[_0x52b1('0x2c')];if(!_0xdbcfbc[_0x52b1('0x2d')]['hasOwnProperty'](_0x52b1('0x34'))){_0x20f3b5[_0x52b1('0x1d')]=qs[_0x52b1('0x1d')](_0xdbcfbc['query'][_0x52b1('0x1d')]);_0x20f3b5[_0x52b1('0x1a')]=qs['offset'](_0xdbcfbc[_0x52b1('0x2d')][_0x52b1('0x1a')]);}_0x20f3b5[_0x52b1('0x35')]=qs[_0x52b1('0x36')](_0xdbcfbc[_0x52b1('0x2d')][_0x52b1('0x36')]);_0x20f3b5[_0x52b1('0x37')]=qs['filters'](_[_0x52b1('0x38')](_0xdbcfbc[_0x52b1('0x2d')],_0x2cb035['filters']),_0x3b5b0e);if(_0xdbcfbc['query'][_0x52b1('0x39')]){_0x20f3b5[_0x52b1('0x37')]=_['merge'](_0x20f3b5[_0x52b1('0x37')],{'$or':_[_0x52b1('0x3a')](_0x3b5b0e,function(_0x252642){if(_0x252642[_0x52b1('0x2b')]!==_0x52b1('0x3b')){var _0x4147c8={};_0x4147c8[_0x252642['name']]={'$like':'%'+_0xdbcfbc[_0x52b1('0x2d')]['filter']+'%'};return _0x4147c8;}})});}_0x20f3b5=_['merge']({},_0x20f3b5,_0xdbcfbc[_0x52b1('0x3c')]);var _0x558445={'where':_0x20f3b5[_0x52b1('0x37')]};return db[_0x52b1('0x3d')][_0x52b1('0x1c')](_0x558445)['then'](function(_0x409224){_0x492e02[_0x52b1('0x1c')]=_0x409224;if(_0xdbcfbc[_0x52b1('0x2d')][_0x52b1('0x3e')]){_0x20f3b5[_0x52b1('0x3f')]=[{'all':!![]}];}return db[_0x52b1('0x3d')][_0x52b1('0x40')](_0x20f3b5);})[_0x52b1('0x41')](function(_0x10c96e){_0x492e02[_0x52b1('0x42')]=_0x10c96e;return _0x492e02;})[_0x52b1('0x41')](respondWithFilteredResult(_0x391229,_0x20f3b5))[_0x52b1('0x43')](handleError(_0x391229,null));};exports[_0x52b1('0x44')]=function(_0xb9b046,_0x435401){var _0x546ac7={'raw':![],'where':{'id':_0xb9b046[_0x52b1('0x45')]['id']}},_0x54becd={};_0x54becd[_0x52b1('0x2c')]=_[_0x52b1('0x2e')](db['DeskConfiguration'][_0x52b1('0x46')]);_0x54becd[_0x52b1('0x2d')]=_[_0x52b1('0x2e')](_0xb9b046[_0x52b1('0x2d')]);_0x54becd[_0x52b1('0x2f')]=_['intersection'](_0x54becd['model'],_0x54becd[_0x52b1('0x2d')]);_0x546ac7['attributes']=_[_0x52b1('0x30')](_0x54becd[_0x52b1('0x2c')],qs['fields'](_0xb9b046[_0x52b1('0x2d')][_0x52b1('0x32')]));_0x546ac7[_0x52b1('0x31')]=_0x546ac7[_0x52b1('0x31')][_0x52b1('0x33')]?_0x546ac7['attributes']:_0x54becd[_0x52b1('0x2c')];if(_0xb9b046[_0x52b1('0x2d')][_0x52b1('0x3e')]){_0x546ac7['include']=[{'all':!![]}];}_0x546ac7=_[_0x52b1('0x47')]({},_0x546ac7,_0xb9b046[_0x52b1('0x3c')]);return db[_0x52b1('0x3d')][_0x52b1('0x48')](_0x546ac7)[_0x52b1('0x41')](handleEntityNotFound(_0x435401,null))['then'](respondWithResult(_0x435401,null))[_0x52b1('0x43')](handleError(_0x435401,null));};exports[_0x52b1('0x49')]=function(_0x2acd29,_0x3caa42){return db[_0x52b1('0x3d')][_0x52b1('0x49')](_0x2acd29[_0x52b1('0x4a')],{})[_0x52b1('0x41')](respondWithResult(_0x3caa42,0xc9))[_0x52b1('0x43')](handleError(_0x3caa42,null));};exports[_0x52b1('0x23')]=function(_0xe51847,_0x53c0bc){if(_0xe51847[_0x52b1('0x4a')]['id']){delete _0xe51847['body']['id'];}return db[_0x52b1('0x3d')][_0x52b1('0x48')]({'where':{'id':_0xe51847['params']['id']}})[_0x52b1('0x41')](handleEntityNotFound(_0x53c0bc,null))[_0x52b1('0x41')](saveUpdates(_0xe51847[_0x52b1('0x4a')],null))[_0x52b1('0x41')](respondWithResult(_0x53c0bc,null))[_0x52b1('0x43')](handleError(_0x53c0bc,null));};exports[_0x52b1('0x24')]=function(_0x58fae0,_0x4fcc7e){return db[_0x52b1('0x3d')][_0x52b1('0x48')]({'where':{'id':_0x58fae0[_0x52b1('0x45')]['id']}})[_0x52b1('0x41')](handleEntityNotFound(_0x4fcc7e,null))[_0x52b1('0x41')](removeEntity(_0x4fcc7e,null))[_0x52b1('0x43')](handleError(_0x4fcc7e,null));};exports['getFields']=function(_0x1c6f29,_0xd4269f,_0x517173){var _0x35a991={};var _0x25e93f={};var _0x2327c3;var _0x5482b3;return db[_0x52b1('0x3d')][_0x52b1('0x4b')]({'where':{'id':_0x1c6f29[_0x52b1('0x45')]['id']}})[_0x52b1('0x41')](handleEntityNotFound(_0xd4269f,null))[_0x52b1('0x41')](function(_0x3916e0){if(_0x3916e0){_0x2327c3=_0x3916e0;_0x25e93f[_0x52b1('0x2c')]=_['keys'](db[_0x52b1('0x4c')][_0x52b1('0x46')]);_0x25e93f['query']=_[_0x52b1('0x2e')](_0x1c6f29[_0x52b1('0x2d')]);_0x25e93f[_0x52b1('0x2f')]=_[_0x52b1('0x30')](_0x25e93f[_0x52b1('0x2c')],_0x25e93f['query']);_0x35a991['attributes']=_[_0x52b1('0x30')](_0x25e93f[_0x52b1('0x2c')],qs[_0x52b1('0x32')](_0x1c6f29[_0x52b1('0x2d')]['fields']));_0x35a991['attributes']=_0x35a991[_0x52b1('0x31')]['length']?_0x35a991['attributes']:_0x25e93f[_0x52b1('0x2c')];_0x35a991[_0x52b1('0x35')]=qs[_0x52b1('0x36')](_0x1c6f29['query'][_0x52b1('0x36')]);_0x35a991[_0x52b1('0x37')]=qs[_0x52b1('0x2f')](_[_0x52b1('0x38')](_0x1c6f29['query'],_0x25e93f['filters']));if(_0x1c6f29[_0x52b1('0x2d')]['filter']){_0x35a991[_0x52b1('0x37')]=_[_0x52b1('0x47')](_0x35a991[_0x52b1('0x37')],{'$or':_['map'](_0x35a991[_0x52b1('0x31')],function(_0x275cd9){var _0x25f6c4={};_0x25f6c4[_0x275cd9]={'$like':'%'+_0x1c6f29[_0x52b1('0x2d')]['filter']+'%'};return _0x25f6c4;})});}_0x35a991=_[_0x52b1('0x47')]({},_0x35a991,_0x1c6f29[_0x52b1('0x3c')]);return _0x2327c3['getFields'](_0x35a991);}})[_0x52b1('0x41')](function(_0x237fce){if(_0x237fce){_0x5482b3=_0x237fce[_0x52b1('0x33')];if(!_0x1c6f29[_0x52b1('0x2d')][_0x52b1('0x4d')](_0x52b1('0x34'))){_0x35a991[_0x52b1('0x1d')]=qs['limit'](_0x1c6f29[_0x52b1('0x2d')]['limit']);_0x35a991[_0x52b1('0x1a')]=qs[_0x52b1('0x1a')](_0x1c6f29[_0x52b1('0x2d')][_0x52b1('0x1a')]);}return _0x2327c3[_0x52b1('0x4e')](_0x35a991);}})[_0x52b1('0x41')](function(_0x41c7fe){if(_0x41c7fe){return _0x41c7fe?{'count':_0x5482b3,'rows':_0x41c7fe}:null;}})[_0x52b1('0x41')](respondWithResult(_0xd4269f,null))['catch'](handleError(_0xd4269f,null));};exports['getSubjects']=function(_0x45a439,_0x1289b5,_0x5de36b){var _0x1d20dd={};var _0x2da47d={};var _0x4ff914;var _0x1562df;return db['DeskConfiguration'][_0x52b1('0x4b')]({'where':{'id':_0x45a439['params']['id']}})[_0x52b1('0x41')](handleEntityNotFound(_0x1289b5,null))['then'](function(_0x12eadc){if(_0x12eadc){_0x4ff914=_0x12eadc;_0x2da47d[_0x52b1('0x2c')]=_[_0x52b1('0x2e')](db[_0x52b1('0x4c')]['rawAttributes']);_0x2da47d[_0x52b1('0x2d')]=_[_0x52b1('0x2e')](_0x45a439[_0x52b1('0x2d')]);_0x2da47d[_0x52b1('0x2f')]=_[_0x52b1('0x30')](_0x2da47d[_0x52b1('0x2c')],_0x2da47d[_0x52b1('0x2d')]);_0x1d20dd[_0x52b1('0x31')]=_[_0x52b1('0x30')](_0x2da47d[_0x52b1('0x2c')],qs['fields'](_0x45a439[_0x52b1('0x2d')]['fields']));_0x1d20dd[_0x52b1('0x31')]=_0x1d20dd[_0x52b1('0x31')][_0x52b1('0x33')]?_0x1d20dd[_0x52b1('0x31')]:_0x2da47d[_0x52b1('0x2c')];_0x1d20dd['order']=qs[_0x52b1('0x36')](_0x45a439[_0x52b1('0x2d')][_0x52b1('0x36')]);_0x1d20dd['where']=qs[_0x52b1('0x2f')](_[_0x52b1('0x38')](_0x45a439[_0x52b1('0x2d')],_0x2da47d[_0x52b1('0x2f')]));if(_0x45a439[_0x52b1('0x2d')][_0x52b1('0x39')]){_0x1d20dd['where']=_[_0x52b1('0x47')](_0x1d20dd[_0x52b1('0x37')],{'$or':_['map'](_0x1d20dd['attributes'],function(_0x372ec9){var _0x49f69a={};_0x49f69a[_0x372ec9]={'$like':'%'+_0x45a439[_0x52b1('0x2d')]['filter']+'%'};return _0x49f69a;})});}_0x1d20dd=_[_0x52b1('0x47')]({},_0x1d20dd,_0x45a439[_0x52b1('0x3c')]);return _0x4ff914['getSubjects'](_0x1d20dd);}})[_0x52b1('0x41')](function(_0x48f0ca){if(_0x48f0ca){_0x1562df=_0x48f0ca[_0x52b1('0x33')];if(!_0x45a439[_0x52b1('0x2d')][_0x52b1('0x4d')](_0x52b1('0x34'))){_0x1d20dd[_0x52b1('0x1d')]=qs['limit'](_0x45a439[_0x52b1('0x2d')][_0x52b1('0x1d')]);_0x1d20dd[_0x52b1('0x1a')]=qs['offset'](_0x45a439['query']['offset']);}return _0x4ff914[_0x52b1('0x4f')](_0x1d20dd);}})['then'](function(_0x36f442){if(_0x36f442){return _0x36f442?{'count':_0x1562df,'rows':_0x36f442}:null;}})[_0x52b1('0x41')](respondWithResult(_0x1289b5,null))[_0x52b1('0x43')](handleError(_0x1289b5,null));};exports['getDescriptions']=function(_0xf56c43,_0x15aece,_0x3715f2){var _0x969b7e={};var _0x28487f={};var _0x40879a;var _0x3194e1;return db[_0x52b1('0x3d')][_0x52b1('0x4b')]({'where':{'id':_0xf56c43['params']['id']}})['then'](handleEntityNotFound(_0x15aece,null))['then'](function(_0x51bbdb){if(_0x51bbdb){_0x40879a=_0x51bbdb;_0x28487f[_0x52b1('0x2c')]=_[_0x52b1('0x2e')](db[_0x52b1('0x4c')][_0x52b1('0x46')]);_0x28487f[_0x52b1('0x2d')]=_[_0x52b1('0x2e')](_0xf56c43[_0x52b1('0x2d')]);_0x28487f[_0x52b1('0x2f')]=_[_0x52b1('0x30')](_0x28487f[_0x52b1('0x2c')],_0x28487f[_0x52b1('0x2d')]);_0x969b7e[_0x52b1('0x31')]=_['intersection'](_0x28487f[_0x52b1('0x2c')],qs['fields'](_0xf56c43[_0x52b1('0x2d')][_0x52b1('0x32')]));_0x969b7e[_0x52b1('0x31')]=_0x969b7e['attributes']['length']?_0x969b7e[_0x52b1('0x31')]:_0x28487f['model'];_0x969b7e[_0x52b1('0x35')]=qs[_0x52b1('0x36')](_0xf56c43[_0x52b1('0x2d')][_0x52b1('0x36')]);_0x969b7e[_0x52b1('0x37')]=qs[_0x52b1('0x2f')](_['pick'](_0xf56c43['query'],_0x28487f[_0x52b1('0x2f')]));if(_0xf56c43['query'][_0x52b1('0x39')]){_0x969b7e['where']=_[_0x52b1('0x47')](_0x969b7e[_0x52b1('0x37')],{'$or':_[_0x52b1('0x3a')](_0x969b7e[_0x52b1('0x31')],function(_0x3dd39e){var _0x13dab0={};_0x13dab0[_0x3dd39e]={'$like':'%'+_0xf56c43[_0x52b1('0x2d')][_0x52b1('0x39')]+'%'};return _0x13dab0;})});}_0x969b7e=_[_0x52b1('0x47')]({},_0x969b7e,_0xf56c43[_0x52b1('0x3c')]);return _0x40879a[_0x52b1('0x50')](_0x969b7e);}})[_0x52b1('0x41')](function(_0x530a4a){if(_0x530a4a){_0x3194e1=_0x530a4a['length'];if(!_0xf56c43['query'][_0x52b1('0x4d')]('nolimit')){_0x969b7e[_0x52b1('0x1d')]=qs[_0x52b1('0x1d')](_0xf56c43['query'][_0x52b1('0x1d')]);_0x969b7e[_0x52b1('0x1a')]=qs[_0x52b1('0x1a')](_0xf56c43[_0x52b1('0x2d')][_0x52b1('0x1a')]);}return _0x40879a[_0x52b1('0x50')](_0x969b7e);}})[_0x52b1('0x41')](function(_0x59e255){if(_0x59e255){return _0x59e255?{'count':_0x3194e1,'rows':_0x59e255}:null;}})[_0x52b1('0x41')](respondWithResult(_0x15aece,null))[_0x52b1('0x43')](handleError(_0x15aece,null));};exports[_0x52b1('0x51')]=function(_0x56aba3,_0x1f4bce,_0x47b7cb){var _0x34a053={};var _0x855772={};var _0x48a622;var _0x40d749;return db[_0x52b1('0x3d')]['findOne']({'where':{'id':_0x56aba3['params']['id']}})['then'](handleEntityNotFound(_0x1f4bce,null))['then'](function(_0x3f607a){if(_0x3f607a){_0x48a622=_0x3f607a;_0x855772['model']=_[_0x52b1('0x2e')](db['Tag'][_0x52b1('0x46')]);_0x855772['query']=_[_0x52b1('0x2e')](_0x56aba3[_0x52b1('0x2d')]);_0x855772['filters']=_[_0x52b1('0x30')](_0x855772[_0x52b1('0x2c')],_0x855772[_0x52b1('0x2d')]);_0x34a053[_0x52b1('0x31')]=_[_0x52b1('0x30')](_0x855772[_0x52b1('0x2c')],qs[_0x52b1('0x32')](_0x56aba3[_0x52b1('0x2d')][_0x52b1('0x32')]));_0x34a053['attributes']=_0x34a053[_0x52b1('0x31')][_0x52b1('0x33')]?_0x34a053[_0x52b1('0x31')]:_0x855772[_0x52b1('0x2c')];_0x34a053[_0x52b1('0x35')]=qs[_0x52b1('0x36')](_0x56aba3[_0x52b1('0x2d')][_0x52b1('0x36')]);_0x34a053[_0x52b1('0x37')]=qs[_0x52b1('0x2f')](_['pick'](_0x56aba3['query'],_0x855772[_0x52b1('0x2f')]));if(_0x56aba3[_0x52b1('0x2d')][_0x52b1('0x39')]){_0x34a053[_0x52b1('0x37')]=_[_0x52b1('0x47')](_0x34a053[_0x52b1('0x37')],{'$or':_[_0x52b1('0x3a')](_0x34a053[_0x52b1('0x31')],function(_0x543f46){var _0x51f8d6={};_0x51f8d6[_0x543f46]={'$like':'%'+_0x56aba3['query']['filter']+'%'};return _0x51f8d6;})});}_0x34a053=_[_0x52b1('0x47')]({},_0x34a053,_0x56aba3[_0x52b1('0x3c')]);return _0x48a622[_0x52b1('0x51')](_0x34a053);}})[_0x52b1('0x41')](function(_0x11f239){if(_0x11f239){_0x40d749=_0x11f239[_0x52b1('0x33')];if(!_0x56aba3[_0x52b1('0x2d')][_0x52b1('0x4d')](_0x52b1('0x34'))){_0x34a053[_0x52b1('0x1d')]=qs[_0x52b1('0x1d')](_0x56aba3[_0x52b1('0x2d')]['limit']);_0x34a053['offset']=qs[_0x52b1('0x1a')](_0x56aba3[_0x52b1('0x2d')][_0x52b1('0x1a')]);}return _0x48a622[_0x52b1('0x51')](_0x34a053);}})[_0x52b1('0x41')](function(_0x511bfa){if(_0x511bfa){return _0x511bfa?{'count':_0x40d749,'rows':_0x511bfa}:null;}})[_0x52b1('0x41')](respondWithResult(_0x1f4bce,null))[_0x52b1('0x43')](handleError(_0x1f4bce,null));};exports[_0x52b1('0x52')]=function(_0x367432,_0x22f41f,_0x36c5d0){if(_0x367432['body']['id']){delete _0x367432[_0x52b1('0x4a')]['id'];}return db[_0x52b1('0x3d')]['findOne']({'where':{'id':_0x367432[_0x52b1('0x45')]['id']}})[_0x52b1('0x41')](handleEntityNotFound(_0x22f41f,null))['then'](function(_0x244e34){if(_0x244e34){return _0x244e34[_0x52b1('0x52')](_0x367432[_0x52b1('0x4a')][_0x52b1('0x53')]||[]);}return null;})[_0x52b1('0x41')](respondWithResult(_0x22f41f,null))[_0x52b1('0x43')](handleError(_0x22f41f,null));};
\ No newline at end of file
+var _0xfed0=['VIRTUAL','merge','options','rows','catch','params','rawAttributes','includeAll','find','body','DeskField','nolimit','getFields','getSubjects','findOne','getDescriptions','Tag','getTags','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','stack','send','index','map','DeskConfiguration','type','key','model','name','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','filters','pick','filter','where'];(function(_0x479159,_0x5c5933){var _0x36dacc=function(_0x5940c5){while(--_0x5940c5){_0x479159['push'](_0x479159['shift']());}};_0x36dacc(++_0x5c5933);}(_0xfed0,0x103));var _0x0fed=function(_0xa03ec8,_0x1370b1){_0xa03ec8=_0xa03ec8-0x0;var _0x2c1d23=_0xfed0[_0xa03ec8];return _0x2c1d23;};'use strict';var emlformat=require(_0x0fed('0x0'));var rimraf=require(_0x0fed('0x1'));var zipdir=require(_0x0fed('0x2'));var jsonpatch=require(_0x0fed('0x3'));var rp=require(_0x0fed('0x4'));var moment=require(_0x0fed('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x0fed('0x6'));var sox=require(_0x0fed('0x7'));var csv=require(_0x0fed('0x8'));var ejs=require(_0x0fed('0x9'));var fs=require('fs');var fs_extra=require(_0x0fed('0xa'));var _=require(_0x0fed('0xb'));var squel=require(_0x0fed('0xc'));var crypto=require('crypto');var jsforce=require(_0x0fed('0xd'));var deskjs=require(_0x0fed('0xe'));var toCsv=require(_0x0fed('0x8'));var querystring=require(_0x0fed('0xf'));var Papa=require('papaparse');var Redis=require(_0x0fed('0x10'));var authService=require(_0x0fed('0x11'));var qs=require(_0x0fed('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0fed('0x13'));var logger=require(_0x0fed('0x14'))(_0x0fed('0x15'));var utils=require(_0x0fed('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0fed('0x17'));var db=require(_0x0fed('0x18'))['db'];function respondWithStatusCode(_0x4d9ba9,_0x4a5f72){_0x4a5f72=_0x4a5f72||0xcc;return function(_0x595e18){if(_0x595e18){return _0x4d9ba9[_0x0fed('0x19')](_0x4a5f72);}return _0x4d9ba9[_0x0fed('0x1a')](_0x4a5f72)[_0x0fed('0x1b')]();};}function respondWithResult(_0x41c011,_0x5016a8){_0x5016a8=_0x5016a8||0xc8;return function(_0x120f50){if(_0x120f50){return _0x41c011[_0x0fed('0x1a')](_0x5016a8)[_0x0fed('0x1c')](_0x120f50);}};}function respondWithFilteredResult(_0x2dba51,_0x5b1662){return function(_0x55a7b){if(_0x55a7b){var _0x555a34=typeof _0x5b1662[_0x0fed('0x1d')]==='undefined'&&typeof _0x5b1662[_0x0fed('0x1e')]===_0x0fed('0x1f');var _0x355d2b=_0x55a7b['count'];var _0x5a918e=_0x555a34?0x0:_0x5b1662['offset'];var _0x2566b6=_0x555a34?_0x55a7b[_0x0fed('0x20')]:_0x5b1662[_0x0fed('0x1d')]+_0x5b1662[_0x0fed('0x1e')];var _0x1bda26;if(_0x2566b6>=_0x355d2b){_0x2566b6=_0x355d2b;_0x1bda26=0xc8;}else{_0x1bda26=0xce;}_0x2dba51[_0x0fed('0x1a')](_0x1bda26);return _0x2dba51[_0x0fed('0x21')](_0x0fed('0x22'),_0x5a918e+'-'+_0x2566b6+'/'+_0x355d2b)['json'](_0x55a7b);}return null;};}function patchUpdates(_0x1e100e){return function(_0x24ed36){try{jsonpatch['apply'](_0x24ed36,_0x1e100e,!![]);}catch(_0x150c0b){return BPromise[_0x0fed('0x23')](_0x150c0b);}return _0x24ed36[_0x0fed('0x24')]();};}function saveUpdates(_0x3c8deb,_0x499fb9){return function(_0x3a3339){if(_0x3a3339){return _0x3a3339[_0x0fed('0x25')](_0x3c8deb)['then'](function(_0x5e7d67){return _0x5e7d67;});}return null;};}function removeEntity(_0x54b62b,_0x2e16ca){return function(_0xfb9223){if(_0xfb9223){return _0xfb9223['destroy']()[_0x0fed('0x26')](function(){_0x54b62b['status'](0xcc)[_0x0fed('0x1b')]();});}};}function handleEntityNotFound(_0x1c44be,_0x32c33e){return function(_0x289549){if(!_0x289549){_0x1c44be[_0x0fed('0x19')](0x194);}return _0x289549;};}function handleError(_0x463bbd,_0x4ef08f){_0x4ef08f=_0x4ef08f||0x1f4;return function(_0xe853d2){logger['error'](_0xe853d2[_0x0fed('0x27')]);if(_0xe853d2['name']){delete _0xe853d2['name'];}_0x463bbd['status'](_0x4ef08f)[_0x0fed('0x28')](_0xe853d2);};}exports[_0x0fed('0x29')]=function(_0x3138bb,_0x8ca69c){var _0x1c3564={},_0x210a9b={},_0x541739={'count':0x0,'rows':[]};var _0x1f3e63=_[_0x0fed('0x2a')](db[_0x0fed('0x2b')]['rawAttributes'],function(_0x10ec60){return{'name':_0x10ec60['fieldName'],'type':_0x10ec60[_0x0fed('0x2c')][_0x0fed('0x2d')]};});_0x210a9b[_0x0fed('0x2e')]=_['map'](_0x1f3e63,_0x0fed('0x2f'));_0x210a9b[_0x0fed('0x30')]=_[_0x0fed('0x31')](_0x3138bb[_0x0fed('0x30')]);_0x210a9b['filters']=_[_0x0fed('0x32')](_0x210a9b[_0x0fed('0x2e')],_0x210a9b[_0x0fed('0x30')]);_0x1c3564[_0x0fed('0x33')]=_['intersection'](_0x210a9b[_0x0fed('0x2e')],qs['fields'](_0x3138bb[_0x0fed('0x30')][_0x0fed('0x34')]));_0x1c3564[_0x0fed('0x33')]=_0x1c3564[_0x0fed('0x33')][_0x0fed('0x35')]?_0x1c3564[_0x0fed('0x33')]:_0x210a9b[_0x0fed('0x2e')];if(!_0x3138bb[_0x0fed('0x30')][_0x0fed('0x36')]('nolimit')){_0x1c3564['limit']=qs['limit'](_0x3138bb[_0x0fed('0x30')][_0x0fed('0x1e')]);_0x1c3564[_0x0fed('0x1d')]=qs[_0x0fed('0x1d')](_0x3138bb[_0x0fed('0x30')]['offset']);}_0x1c3564[_0x0fed('0x37')]=qs[_0x0fed('0x38')](_0x3138bb[_0x0fed('0x30')][_0x0fed('0x38')]);_0x1c3564['where']=qs[_0x0fed('0x39')](_[_0x0fed('0x3a')](_0x3138bb[_0x0fed('0x30')],_0x210a9b[_0x0fed('0x39')]),_0x1f3e63);if(_0x3138bb[_0x0fed('0x30')][_0x0fed('0x3b')]){_0x1c3564[_0x0fed('0x3c')]=_['merge'](_0x1c3564[_0x0fed('0x3c')],{'$or':_['map'](_0x1f3e63,function(_0x27fd5e){if(_0x27fd5e[_0x0fed('0x2c')]!==_0x0fed('0x3d')){var _0x1a38c1={};_0x1a38c1[_0x27fd5e['name']]={'$like':'%'+_0x3138bb[_0x0fed('0x30')][_0x0fed('0x3b')]+'%'};return _0x1a38c1;}})});}_0x1c3564=_[_0x0fed('0x3e')]({},_0x1c3564,_0x3138bb[_0x0fed('0x3f')]);var _0x59377a={'where':_0x1c3564[_0x0fed('0x3c')]};return db['DeskConfiguration'][_0x0fed('0x20')](_0x59377a)[_0x0fed('0x26')](function(_0x51d06c){_0x541739[_0x0fed('0x20')]=_0x51d06c;if(_0x3138bb[_0x0fed('0x30')]['includeAll']){_0x1c3564['include']=[{'all':!![]}];}return db[_0x0fed('0x2b')]['findAll'](_0x1c3564);})[_0x0fed('0x26')](function(_0x57186c){_0x541739[_0x0fed('0x40')]=_0x57186c;return _0x541739;})[_0x0fed('0x26')](respondWithFilteredResult(_0x8ca69c,_0x1c3564))[_0x0fed('0x41')](handleError(_0x8ca69c,null));};exports['show']=function(_0x266294,_0x28565a){var _0x5cafa2={'raw':![],'where':{'id':_0x266294[_0x0fed('0x42')]['id']}},_0x593b91={};_0x593b91['model']=_['keys'](db['DeskConfiguration'][_0x0fed('0x43')]);_0x593b91[_0x0fed('0x30')]=_[_0x0fed('0x31')](_0x266294[_0x0fed('0x30')]);_0x593b91[_0x0fed('0x39')]=_[_0x0fed('0x32')](_0x593b91['model'],_0x593b91[_0x0fed('0x30')]);_0x5cafa2[_0x0fed('0x33')]=_['intersection'](_0x593b91[_0x0fed('0x2e')],qs['fields'](_0x266294[_0x0fed('0x30')][_0x0fed('0x34')]));_0x5cafa2[_0x0fed('0x33')]=_0x5cafa2[_0x0fed('0x33')][_0x0fed('0x35')]?_0x5cafa2[_0x0fed('0x33')]:_0x593b91[_0x0fed('0x2e')];if(_0x266294[_0x0fed('0x30')][_0x0fed('0x44')]){_0x5cafa2['include']=[{'all':!![]}];}_0x5cafa2=_['merge']({},_0x5cafa2,_0x266294['options']);return db[_0x0fed('0x2b')][_0x0fed('0x45')](_0x5cafa2)[_0x0fed('0x26')](handleEntityNotFound(_0x28565a,null))['then'](respondWithResult(_0x28565a,null))[_0x0fed('0x41')](handleError(_0x28565a,null));};exports['create']=function(_0xf4b41a,_0x4b7eec){return db[_0x0fed('0x2b')]['create'](_0xf4b41a[_0x0fed('0x46')],{})[_0x0fed('0x26')](respondWithResult(_0x4b7eec,0xc9))[_0x0fed('0x41')](handleError(_0x4b7eec,null));};exports[_0x0fed('0x25')]=function(_0x396659,_0x551b4e){if(_0x396659[_0x0fed('0x46')]['id']){delete _0x396659[_0x0fed('0x46')]['id'];}return db[_0x0fed('0x2b')][_0x0fed('0x45')]({'where':{'id':_0x396659[_0x0fed('0x42')]['id']}})[_0x0fed('0x26')](handleEntityNotFound(_0x551b4e,null))['then'](saveUpdates(_0x396659[_0x0fed('0x46')],null))['then'](respondWithResult(_0x551b4e,null))[_0x0fed('0x41')](handleError(_0x551b4e,null));};exports['destroy']=function(_0xa3500d,_0x72f930){return db[_0x0fed('0x2b')]['find']({'where':{'id':_0xa3500d[_0x0fed('0x42')]['id']}})['then'](handleEntityNotFound(_0x72f930,null))[_0x0fed('0x26')](removeEntity(_0x72f930,null))['catch'](handleError(_0x72f930,null));};exports['getFields']=function(_0x583acc,_0x5d69d4,_0x56547a){var _0x58e07f={};var _0x6b9eda={};var _0x9458ec;var _0x1f8b1d;return db['DeskConfiguration']['findOne']({'where':{'id':_0x583acc[_0x0fed('0x42')]['id']}})[_0x0fed('0x26')](handleEntityNotFound(_0x5d69d4,null))[_0x0fed('0x26')](function(_0x848cab){if(_0x848cab){_0x9458ec=_0x848cab;_0x6b9eda['model']=_[_0x0fed('0x31')](db[_0x0fed('0x47')][_0x0fed('0x43')]);_0x6b9eda['query']=_[_0x0fed('0x31')](_0x583acc['query']);_0x6b9eda['filters']=_['intersection'](_0x6b9eda[_0x0fed('0x2e')],_0x6b9eda[_0x0fed('0x30')]);_0x58e07f[_0x0fed('0x33')]=_['intersection'](_0x6b9eda['model'],qs[_0x0fed('0x34')](_0x583acc['query'][_0x0fed('0x34')]));_0x58e07f['attributes']=_0x58e07f[_0x0fed('0x33')]['length']?_0x58e07f['attributes']:_0x6b9eda[_0x0fed('0x2e')];_0x58e07f[_0x0fed('0x37')]=qs[_0x0fed('0x38')](_0x583acc['query'][_0x0fed('0x38')]);_0x58e07f[_0x0fed('0x3c')]=qs[_0x0fed('0x39')](_[_0x0fed('0x3a')](_0x583acc[_0x0fed('0x30')],_0x6b9eda['filters']));if(_0x583acc[_0x0fed('0x30')][_0x0fed('0x3b')]){_0x58e07f[_0x0fed('0x3c')]=_[_0x0fed('0x3e')](_0x58e07f[_0x0fed('0x3c')],{'$or':_[_0x0fed('0x2a')](_0x58e07f[_0x0fed('0x33')],function(_0xef3d74){var _0x2c7f0d={};_0x2c7f0d[_0xef3d74]={'$like':'%'+_0x583acc['query'][_0x0fed('0x3b')]+'%'};return _0x2c7f0d;})});}_0x58e07f=_[_0x0fed('0x3e')]({},_0x58e07f,_0x583acc[_0x0fed('0x3f')]);return _0x9458ec['getFields'](_0x58e07f);}})[_0x0fed('0x26')](function(_0x2abfe4){if(_0x2abfe4){_0x1f8b1d=_0x2abfe4['length'];if(!_0x583acc[_0x0fed('0x30')]['hasOwnProperty'](_0x0fed('0x48'))){_0x58e07f[_0x0fed('0x1e')]=qs['limit'](_0x583acc['query'][_0x0fed('0x1e')]);_0x58e07f[_0x0fed('0x1d')]=qs[_0x0fed('0x1d')](_0x583acc[_0x0fed('0x30')][_0x0fed('0x1d')]);}return _0x9458ec[_0x0fed('0x49')](_0x58e07f);}})['then'](function(_0x3a582a){if(_0x3a582a){return _0x3a582a?{'count':_0x1f8b1d,'rows':_0x3a582a}:null;}})[_0x0fed('0x26')](respondWithResult(_0x5d69d4,null))[_0x0fed('0x41')](handleError(_0x5d69d4,null));};exports[_0x0fed('0x4a')]=function(_0x521bd0,_0x24dbb4,_0x3c072a){var _0x1adc4a={};var _0x455b53={};var _0x3c1898;var _0x1d6a60;return db['DeskConfiguration'][_0x0fed('0x4b')]({'where':{'id':_0x521bd0[_0x0fed('0x42')]['id']}})[_0x0fed('0x26')](handleEntityNotFound(_0x24dbb4,null))[_0x0fed('0x26')](function(_0x3a8c43){if(_0x3a8c43){_0x3c1898=_0x3a8c43;_0x455b53[_0x0fed('0x2e')]=_[_0x0fed('0x31')](db[_0x0fed('0x47')][_0x0fed('0x43')]);_0x455b53[_0x0fed('0x30')]=_['keys'](_0x521bd0[_0x0fed('0x30')]);_0x455b53[_0x0fed('0x39')]=_[_0x0fed('0x32')](_0x455b53[_0x0fed('0x2e')],_0x455b53[_0x0fed('0x30')]);_0x1adc4a[_0x0fed('0x33')]=_[_0x0fed('0x32')](_0x455b53[_0x0fed('0x2e')],qs[_0x0fed('0x34')](_0x521bd0[_0x0fed('0x30')]['fields']));_0x1adc4a[_0x0fed('0x33')]=_0x1adc4a[_0x0fed('0x33')]['length']?_0x1adc4a['attributes']:_0x455b53[_0x0fed('0x2e')];_0x1adc4a[_0x0fed('0x37')]=qs[_0x0fed('0x38')](_0x521bd0['query'][_0x0fed('0x38')]);_0x1adc4a[_0x0fed('0x3c')]=qs['filters'](_[_0x0fed('0x3a')](_0x521bd0[_0x0fed('0x30')],_0x455b53['filters']));if(_0x521bd0[_0x0fed('0x30')][_0x0fed('0x3b')]){_0x1adc4a[_0x0fed('0x3c')]=_[_0x0fed('0x3e')](_0x1adc4a[_0x0fed('0x3c')],{'$or':_[_0x0fed('0x2a')](_0x1adc4a[_0x0fed('0x33')],function(_0x32a925){var _0x1d24ed={};_0x1d24ed[_0x32a925]={'$like':'%'+_0x521bd0[_0x0fed('0x30')]['filter']+'%'};return _0x1d24ed;})});}_0x1adc4a=_[_0x0fed('0x3e')]({},_0x1adc4a,_0x521bd0[_0x0fed('0x3f')]);return _0x3c1898[_0x0fed('0x4a')](_0x1adc4a);}})[_0x0fed('0x26')](function(_0x5cdab3){if(_0x5cdab3){_0x1d6a60=_0x5cdab3[_0x0fed('0x35')];if(!_0x521bd0[_0x0fed('0x30')][_0x0fed('0x36')](_0x0fed('0x48'))){_0x1adc4a[_0x0fed('0x1e')]=qs['limit'](_0x521bd0[_0x0fed('0x30')]['limit']);_0x1adc4a['offset']=qs['offset'](_0x521bd0[_0x0fed('0x30')]['offset']);}return _0x3c1898[_0x0fed('0x4a')](_0x1adc4a);}})['then'](function(_0x242f40){if(_0x242f40){return _0x242f40?{'count':_0x1d6a60,'rows':_0x242f40}:null;}})[_0x0fed('0x26')](respondWithResult(_0x24dbb4,null))['catch'](handleError(_0x24dbb4,null));};exports['getDescriptions']=function(_0x2721a7,_0x13c9e4,_0x4d3082){var _0x5289ca={};var _0x1f9df1={};var _0x11e421;var _0x5a2c72;return db[_0x0fed('0x2b')][_0x0fed('0x4b')]({'where':{'id':_0x2721a7[_0x0fed('0x42')]['id']}})[_0x0fed('0x26')](handleEntityNotFound(_0x13c9e4,null))['then'](function(_0x11a98c){if(_0x11a98c){_0x11e421=_0x11a98c;_0x1f9df1[_0x0fed('0x2e')]=_[_0x0fed('0x31')](db[_0x0fed('0x47')][_0x0fed('0x43')]);_0x1f9df1[_0x0fed('0x30')]=_[_0x0fed('0x31')](_0x2721a7['query']);_0x1f9df1[_0x0fed('0x39')]=_[_0x0fed('0x32')](_0x1f9df1['model'],_0x1f9df1['query']);_0x5289ca[_0x0fed('0x33')]=_[_0x0fed('0x32')](_0x1f9df1[_0x0fed('0x2e')],qs[_0x0fed('0x34')](_0x2721a7['query'][_0x0fed('0x34')]));_0x5289ca['attributes']=_0x5289ca['attributes']['length']?_0x5289ca['attributes']:_0x1f9df1[_0x0fed('0x2e')];_0x5289ca[_0x0fed('0x37')]=qs[_0x0fed('0x38')](_0x2721a7['query'][_0x0fed('0x38')]);_0x5289ca['where']=qs[_0x0fed('0x39')](_['pick'](_0x2721a7[_0x0fed('0x30')],_0x1f9df1[_0x0fed('0x39')]));if(_0x2721a7[_0x0fed('0x30')][_0x0fed('0x3b')]){_0x5289ca[_0x0fed('0x3c')]=_[_0x0fed('0x3e')](_0x5289ca[_0x0fed('0x3c')],{'$or':_[_0x0fed('0x2a')](_0x5289ca[_0x0fed('0x33')],function(_0x13bef9){var _0x3818d1={};_0x3818d1[_0x13bef9]={'$like':'%'+_0x2721a7['query'][_0x0fed('0x3b')]+'%'};return _0x3818d1;})});}_0x5289ca=_[_0x0fed('0x3e')]({},_0x5289ca,_0x2721a7[_0x0fed('0x3f')]);return _0x11e421[_0x0fed('0x4c')](_0x5289ca);}})['then'](function(_0x56cd50){if(_0x56cd50){_0x5a2c72=_0x56cd50[_0x0fed('0x35')];if(!_0x2721a7[_0x0fed('0x30')][_0x0fed('0x36')](_0x0fed('0x48'))){_0x5289ca['limit']=qs['limit'](_0x2721a7[_0x0fed('0x30')][_0x0fed('0x1e')]);_0x5289ca[_0x0fed('0x1d')]=qs[_0x0fed('0x1d')](_0x2721a7[_0x0fed('0x30')]['offset']);}return _0x11e421[_0x0fed('0x4c')](_0x5289ca);}})[_0x0fed('0x26')](function(_0x16d1a5){if(_0x16d1a5){return _0x16d1a5?{'count':_0x5a2c72,'rows':_0x16d1a5}:null;}})[_0x0fed('0x26')](respondWithResult(_0x13c9e4,null))['catch'](handleError(_0x13c9e4,null));};exports['getTags']=function(_0x4edcf2,_0x1224ce,_0x33ae66){var _0x432e3a={};var _0x39bd74={};var _0x513f9b;var _0x24cbb4;return db['DeskConfiguration'][_0x0fed('0x4b')]({'where':{'id':_0x4edcf2['params']['id']}})[_0x0fed('0x26')](handleEntityNotFound(_0x1224ce,null))[_0x0fed('0x26')](function(_0x28991c){if(_0x28991c){_0x513f9b=_0x28991c;_0x39bd74[_0x0fed('0x2e')]=_[_0x0fed('0x31')](db[_0x0fed('0x4d')][_0x0fed('0x43')]);_0x39bd74[_0x0fed('0x30')]=_[_0x0fed('0x31')](_0x4edcf2[_0x0fed('0x30')]);_0x39bd74['filters']=_['intersection'](_0x39bd74[_0x0fed('0x2e')],_0x39bd74['query']);_0x432e3a[_0x0fed('0x33')]=_[_0x0fed('0x32')](_0x39bd74['model'],qs[_0x0fed('0x34')](_0x4edcf2[_0x0fed('0x30')][_0x0fed('0x34')]));_0x432e3a[_0x0fed('0x33')]=_0x432e3a[_0x0fed('0x33')]['length']?_0x432e3a[_0x0fed('0x33')]:_0x39bd74[_0x0fed('0x2e')];_0x432e3a[_0x0fed('0x37')]=qs[_0x0fed('0x38')](_0x4edcf2[_0x0fed('0x30')][_0x0fed('0x38')]);_0x432e3a[_0x0fed('0x3c')]=qs[_0x0fed('0x39')](_[_0x0fed('0x3a')](_0x4edcf2[_0x0fed('0x30')],_0x39bd74[_0x0fed('0x39')]));if(_0x4edcf2[_0x0fed('0x30')][_0x0fed('0x3b')]){_0x432e3a[_0x0fed('0x3c')]=_[_0x0fed('0x3e')](_0x432e3a['where'],{'$or':_[_0x0fed('0x2a')](_0x432e3a[_0x0fed('0x33')],function(_0x42e22c){var _0x43d6a7={};_0x43d6a7[_0x42e22c]={'$like':'%'+_0x4edcf2[_0x0fed('0x30')][_0x0fed('0x3b')]+'%'};return _0x43d6a7;})});}_0x432e3a=_[_0x0fed('0x3e')]({},_0x432e3a,_0x4edcf2['options']);return _0x513f9b[_0x0fed('0x4e')](_0x432e3a);}})[_0x0fed('0x26')](function(_0x14211b){if(_0x14211b){_0x24cbb4=_0x14211b[_0x0fed('0x35')];if(!_0x4edcf2[_0x0fed('0x30')][_0x0fed('0x36')](_0x0fed('0x48'))){_0x432e3a[_0x0fed('0x1e')]=qs[_0x0fed('0x1e')](_0x4edcf2[_0x0fed('0x30')][_0x0fed('0x1e')]);_0x432e3a['offset']=qs[_0x0fed('0x1d')](_0x4edcf2[_0x0fed('0x30')][_0x0fed('0x1d')]);}return _0x513f9b[_0x0fed('0x4e')](_0x432e3a);}})[_0x0fed('0x26')](function(_0x4807dc){if(_0x4807dc){return _0x4807dc?{'count':_0x24cbb4,'rows':_0x4807dc}:null;}})[_0x0fed('0x26')](respondWithResult(_0x1224ce,null))[_0x0fed('0x41')](handleError(_0x1224ce,null));};exports[_0x0fed('0x4f')]=function(_0x32d21b,_0x36e48b,_0x10f605){if(_0x32d21b[_0x0fed('0x46')]['id']){delete _0x32d21b[_0x0fed('0x46')]['id'];}return db[_0x0fed('0x2b')]['findOne']({'where':{'id':_0x32d21b['params']['id']}})[_0x0fed('0x26')](handleEntityNotFound(_0x36e48b,null))[_0x0fed('0x26')](function(_0x54dd2d){if(_0x54dd2d){return _0x54dd2d['setTags'](_0x32d21b[_0x0fed('0x46')]['ids']||[]);}return null;})[_0x0fed('0x26')](respondWithResult(_0x36e48b,null))[_0x0fed('0x41')](handleError(_0x36e48b,null));};
\ No newline at end of file
index 24b81a2..1df5779 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2560=['../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','DeskConfiguration','lodash'];(function(_0x2cdbdc,_0x1a2ec6){var _0x2e6b9b=function(_0x2c74fa){while(--_0x2c74fa){_0x2cdbdc['push'](_0x2cdbdc['shift']());}};_0x2e6b9b(++_0x1a2ec6);}(_0x2560,0x103));var _0x0256=function(_0x52082a,_0x1f7b05){_0x52082a=_0x52082a-0x0;var _0x43441b=_0x2560[_0x52082a];return _0x43441b;};'use strict';var _=require(_0x0256('0x0'));var util=require('util');var logger=require(_0x0256('0x1'))('api');var moment=require(_0x0256('0x2'));var BPromise=require(_0x0256('0x3'));var rp=require(_0x0256('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0256('0x5'));var config=require(_0x0256('0x6'));var attributes=require('./intDeskConfiguration.attributes');module[_0x0256('0x7')]=function(_0x1430de,_0x3b0348){return _0x1430de[_0x0256('0x8')](_0x0256('0x9'),attributes,{'tableName':'int_desk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x175f=['request-promise','path','rimraf','../../config/environment','./intDeskConfiguration.attributes','exports','define','util','api','moment'];(function(_0x44e00a,_0x248bbc){var _0x2bdfba=function(_0x5e66c4){while(--_0x5e66c4){_0x44e00a['push'](_0x44e00a['shift']());}};_0x2bdfba(++_0x248bbc);}(_0x175f,0x1ab));var _0xf175=function(_0x10e831,_0x4eff29){_0x10e831=_0x10e831-0x0;var _0x2e2e6d=_0x175f[_0x10e831];return _0x2e2e6d;};'use strict';var _=require('lodash');var util=require(_0xf175('0x0'));var logger=require('../../config/logger')(_0xf175('0x1'));var moment=require(_0xf175('0x2'));var BPromise=require('bluebird');var rp=require(_0xf175('0x3'));var fs=require('fs');var path=require(_0xf175('0x4'));var rimraf=require(_0xf175('0x5'));var config=require(_0xf175('0x6'));var attributes=require(_0xf175('0x7'));module[_0xf175('0x8')]=function(_0x6641aa,_0x3c13f0){return _0x6641aa[_0xf175('0x9')]('DeskConfiguration',attributes,{'tableName':'int_desk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ec148c0..e42770c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ccd=['catch','lodash','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','DeskConfiguration,\x20%s,\x20%s','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x290ef7,_0xa522f1){var _0xd88752=function(_0x167a1c){while(--_0x167a1c){_0x290ef7['push'](_0x290ef7['shift']());}};_0xd88752(++_0xa522f1);}(_0x9ccd,0x1a3));var _0xd9cc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9ccd[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xd9cc('0x0'));var util=require('util');var moment=require(_0xd9cc('0x1'));var BPromise=require(_0xd9cc('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd9cc('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xd9cc('0x4'))(_0xd9cc('0x5'));var config=require(_0xd9cc('0x6'));var jayson=require(_0xd9cc('0x7'));var client=jayson[_0xd9cc('0x8')][_0xd9cc('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1f7b2b,_0x23b70a,_0x9e1e10){return new BPromise(function(_0x1a1bd1,_0x20282c){return client[_0xd9cc('0xa')](_0x1f7b2b,_0x9e1e10)[_0xd9cc('0xb')](function(_0x1737e5){logger[_0xd9cc('0xc')](_0xd9cc('0xd'),_0x23b70a,'request\x20sent');logger[_0xd9cc('0xe')](_0xd9cc('0xf'),_0x23b70a,_0xd9cc('0x10'),JSON[_0xd9cc('0x11')](_0x1737e5));if(_0x1737e5[_0xd9cc('0x12')]){if(_0x1737e5[_0xd9cc('0x12')][_0xd9cc('0x13')]===0x1f4){logger[_0xd9cc('0x12')]('DeskConfiguration,\x20%s,\x20%s',_0x23b70a,_0x1737e5[_0xd9cc('0x12')]['message']);return _0x20282c(_0x1737e5['error']['message']);}logger['error']('DeskConfiguration,\x20%s,\x20%s',_0x23b70a,_0x1737e5[_0xd9cc('0x12')][_0xd9cc('0x14')]);return _0x1a1bd1(_0x1737e5[_0xd9cc('0x12')][_0xd9cc('0x14')]);}else{logger[_0xd9cc('0xc')](_0xd9cc('0xd'),_0x23b70a,_0xd9cc('0x10'));_0x1a1bd1(_0x1737e5['result'][_0xd9cc('0x14')]);}})[_0xd9cc('0x15')](function(_0x513635){logger[_0xd9cc('0x12')](_0xd9cc('0xd'),_0x23b70a,_0x513635);_0x20282c(_0x513635);});});}
\ No newline at end of file
+var _0x21ad=['jayson/promise','client','request','info','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','DeskConfiguration,\x20%s,\x20%s','catch','lodash','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment'];(function(_0x22868f,_0x450f48){var _0x97bc75=function(_0x447cb4){while(--_0x447cb4){_0x22868f['push'](_0x22868f['shift']());}};_0x97bc75(++_0x450f48);}(_0x21ad,0x85));var _0xd21a=function(_0x4fde08,_0x463a36){_0x4fde08=_0x4fde08-0x0;var _0x12e725=_0x21ad[_0x4fde08];return _0x12e725;};'use strict';var _=require(_0xd21a('0x0'));var util=require('util');var moment=require(_0xd21a('0x1'));var BPromise=require(_0xd21a('0x2'));var rs=require(_0xd21a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd21a('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd21a('0x5'));var config=require(_0xd21a('0x6'));var jayson=require(_0xd21a('0x7'));var client=jayson[_0xd21a('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x25e0e4,_0x1c7fe9,_0xd4ad66){return new BPromise(function(_0x5f2195,_0x210f2f){return client[_0xd21a('0x9')](_0x25e0e4,_0xd4ad66)['then'](function(_0xf51795){logger[_0xd21a('0xa')]('DeskConfiguration,\x20%s,\x20%s',_0x1c7fe9,_0xd21a('0xb'));logger[_0xd21a('0xc')](_0xd21a('0xd'),_0x1c7fe9,_0xd21a('0xb'),JSON[_0xd21a('0xe')](_0xf51795));if(_0xf51795[_0xd21a('0xf')]){if(_0xf51795['error'][_0xd21a('0x10')]===0x1f4){logger[_0xd21a('0xf')]('DeskConfiguration,\x20%s,\x20%s',_0x1c7fe9,_0xf51795[_0xd21a('0xf')][_0xd21a('0x11')]);return _0x210f2f(_0xf51795[_0xd21a('0xf')][_0xd21a('0x11')]);}logger[_0xd21a('0xf')](_0xd21a('0x12'),_0x1c7fe9,_0xf51795[_0xd21a('0xf')]['message']);return _0x5f2195(_0xf51795['error'][_0xd21a('0x11')]);}else{logger[_0xd21a('0xa')](_0xd21a('0x12'),_0x1c7fe9,_0xd21a('0xb'));_0x5f2195(_0xf51795['result'][_0xd21a('0x11')]);}})[_0xd21a('0x13')](function(_0x4c6258){logger[_0xd21a('0xf')](_0xd21a('0x12'),_0x1c7fe9,_0x4c6258);_0x210f2f(_0x4c6258);});});}
\ No newline at end of file
index 00216da..06d953b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x186d=['delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDeskField.controller','index','get','/:id','show','post','isAuthenticated','put','update'];(function(_0x343b56,_0x27ebbf){var _0x4bdc57=function(_0x46cccd){while(--_0x46cccd){_0x343b56['push'](_0x343b56['shift']());}};_0x4bdc57(++_0x27ebbf);}(_0x186d,0x1ca));var _0xd186=function(_0x4934e3,_0x124098){_0x4934e3=_0x4934e3-0x0;var _0x86a0c3=_0x186d[_0x4934e3];return _0x86a0c3;};'use strict';var multer=require('multer');var util=require(_0xd186('0x0'));var path=require(_0xd186('0x1'));var timeout=require(_0xd186('0x2'));var express=require(_0xd186('0x3'));var router=express[_0xd186('0x4')]();var fs_extra=require(_0xd186('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xd186('0x6'));var config=require(_0xd186('0x7'));var controller=require(_0xd186('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xd186('0x9')]);router[_0xd186('0xa')](_0xd186('0xb'),auth['isAuthenticated'](),controller[_0xd186('0xc')]);router[_0xd186('0xd')]('/',auth[_0xd186('0xe')](),controller['create']);router[_0xd186('0xf')](_0xd186('0xb'),auth[_0xd186('0xe')](),controller[_0xd186('0x10')]);router[_0xd186('0x11')](_0xd186('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0xd186('0x12')]=router;
\ No newline at end of file
+var _0x22d2=['/:id','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intDeskField.controller','get','isAuthenticated','post','create','update'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x22d2,0x92));var _0x222d=function(_0x1bf86e,_0x5a4256){_0x1bf86e=_0x1bf86e-0x0;var _0x4a51a8=_0x22d2[_0x1bf86e];return _0x4a51a8;};'use strict';var multer=require(_0x222d('0x0'));var util=require('util');var path=require(_0x222d('0x1'));var timeout=require(_0x222d('0x2'));var express=require(_0x222d('0x3'));var router=express[_0x222d('0x4')]();var fs_extra=require(_0x222d('0x5'));var auth=require(_0x222d('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x222d('0x7'));var controller=require(_0x222d('0x8'));router[_0x222d('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x222d('0x9')]('/:id',auth[_0x222d('0xa')](),controller['show']);router[_0x222d('0xb')]('/',auth[_0x222d('0xa')](),controller[_0x222d('0xc')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x222d('0xd')]);router['delete'](_0x222d('0xe'),auth[_0x222d('0xa')](),controller['destroy']);module[_0x222d('0xf')]=router;
\ No newline at end of file
index c172f7a..3d9ac75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebb2=['BOOLEAN','sequelize','exports','ENUM','variable','keyValue','picklist','string','STRING'];(function(_0x428774,_0x383962){var _0x53a01c=function(_0x2d62da){while(--_0x2d62da){_0x428774['push'](_0x428774['shift']());}};_0x53a01c(++_0x383962);}(_0xebb2,0xb5));var _0x2ebb=function(_0x4552ec,_0x45323f){_0x4552ec=_0x4552ec-0x0;var _0x52913b=_0xebb2[_0x4552ec];return _0x52913b;};'use strict';var Sequelize=require(_0x2ebb('0x0'));module[_0x2ebb('0x1')]={'type':{'type':Sequelize[_0x2ebb('0x2')]('string',_0x2ebb('0x3'),'customVariable',_0x2ebb('0x4'),_0x2ebb('0x5')),'defaultValue':_0x2ebb('0x6')},'content':{'type':Sequelize[_0x2ebb('0x7')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x2ebb('0x2')](_0x2ebb('0x6'),_0x2ebb('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x2ebb('0x7')]},'idField':{'type':Sequelize[_0x2ebb('0x7')]},'nameField':{'type':Sequelize[_0x2ebb('0x7')]},'customField':{'type':Sequelize[_0x2ebb('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x35fe=['sequelize','exports','string','variable','keyValue','picklist','STRING','ENUM','customVariable','BOOLEAN'];(function(_0x1d83db,_0x89d115){var _0x2dc1d1=function(_0x13fdc3){while(--_0x13fdc3){_0x1d83db['push'](_0x1d83db['shift']());}};_0x2dc1d1(++_0x89d115);}(_0x35fe,0x14a));var _0xe35f=function(_0x42f009,_0x5e27b1){_0x42f009=_0x42f009-0x0;var _0x22a1e0=_0x35fe[_0x42f009];return _0x22a1e0;};'use strict';var Sequelize=require(_0xe35f('0x0'));module[_0xe35f('0x1')]={'type':{'type':Sequelize['ENUM'](_0xe35f('0x2'),_0xe35f('0x3'),'customVariable',_0xe35f('0x4'),_0xe35f('0x5')),'defaultValue':_0xe35f('0x2')},'content':{'type':Sequelize[_0xe35f('0x6')]},'key':{'type':Sequelize[_0xe35f('0x6')]},'keyType':{'type':Sequelize[_0xe35f('0x7')](_0xe35f('0x2'),_0xe35f('0x3'),_0xe35f('0x8'))},'keyContent':{'type':Sequelize[_0xe35f('0x6')]},'idField':{'type':Sequelize[_0xe35f('0x6')]},'nameField':{'type':Sequelize[_0xe35f('0x6')]},'customField':{'type':Sequelize[_0xe35f('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 6403488..7c9c7d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4932=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','update','destroy','then','sendStatus','stack','name','send','index','map','DeskField','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','options','includeAll','include','catch','show','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto'];(function(_0x189f6b,_0x3cb219){var _0x20eafe=function(_0x5c0b6e){while(--_0x5c0b6e){_0x189f6b['push'](_0x189f6b['shift']());}};_0x20eafe(++_0x3cb219);}(_0x4932,0x164));var _0x2493=function(_0x2c2249,_0x454e88){_0x2c2249=_0x2c2249-0x0;var _0x938dc6=_0x4932[_0x2c2249];return _0x938dc6;};'use strict';var emlformat=require(_0x2493('0x0'));var rimraf=require(_0x2493('0x1'));var zipdir=require(_0x2493('0x2'));var jsonpatch=require(_0x2493('0x3'));var rp=require('request-promise');var moment=require(_0x2493('0x4'));var BPromise=require(_0x2493('0x5'));var Mustache=require(_0x2493('0x6'));var util=require(_0x2493('0x7'));var path=require(_0x2493('0x8'));var sox=require(_0x2493('0x9'));var csv=require(_0x2493('0xa'));var ejs=require(_0x2493('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2493('0xc'));var squel=require('squel');var crypto=require(_0x2493('0xd'));var jsforce=require(_0x2493('0xe'));var deskjs=require(_0x2493('0xf'));var toCsv=require(_0x2493('0xa'));var querystring=require(_0x2493('0x10'));var Papa=require(_0x2493('0x11'));var Redis=require(_0x2493('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x2493('0x13'));var as=require(_0x2493('0x14'));var hardwareService=require(_0x2493('0x15'));var logger=require(_0x2493('0x16'))(_0x2493('0x17'));var utils=require(_0x2493('0x18'));var config=require(_0x2493('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x2493('0x1a'))['db'];function respondWithStatusCode(_0x404711,_0x450a7b){_0x450a7b=_0x450a7b||0xcc;return function(_0x12c220){if(_0x12c220){return _0x404711['sendStatus'](_0x450a7b);}return _0x404711[_0x2493('0x1b')](_0x450a7b)[_0x2493('0x1c')]();};}function respondWithResult(_0x3ba9a8,_0x568e56){_0x568e56=_0x568e56||0xc8;return function(_0x1c1608){if(_0x1c1608){return _0x3ba9a8[_0x2493('0x1b')](_0x568e56)[_0x2493('0x1d')](_0x1c1608);}};}function respondWithFilteredResult(_0x48b3dc,_0x113687){return function(_0xef8a33){if(_0xef8a33){var _0x1f6bf3=typeof _0x113687['offset']===_0x2493('0x1e')&&typeof _0x113687[_0x2493('0x1f')]===_0x2493('0x1e');var _0x4737b7=_0xef8a33[_0x2493('0x20')];var _0x5bc7f0=_0x1f6bf3?0x0:_0x113687[_0x2493('0x21')];var _0x4a2bb3=_0x1f6bf3?_0xef8a33[_0x2493('0x20')]:_0x113687['offset']+_0x113687['limit'];var _0xf31955;if(_0x4a2bb3>=_0x4737b7){_0x4a2bb3=_0x4737b7;_0xf31955=0xc8;}else{_0xf31955=0xce;}_0x48b3dc[_0x2493('0x1b')](_0xf31955);return _0x48b3dc['set'](_0x2493('0x22'),_0x5bc7f0+'-'+_0x4a2bb3+'/'+_0x4737b7)['json'](_0xef8a33);}return null;};}function patchUpdates(_0x409ddd){return function(_0x5c310c){try{jsonpatch[_0x2493('0x23')](_0x5c310c,_0x409ddd,!![]);}catch(_0x1c76d7){return BPromise[_0x2493('0x24')](_0x1c76d7);}return _0x5c310c['save']();};}function saveUpdates(_0xe80548,_0x5c6614){return function(_0xfbc724){if(_0xfbc724){return _0xfbc724[_0x2493('0x25')](_0xe80548)['then'](function(_0x58f062){return _0x58f062;});}return null;};}function removeEntity(_0xa09f86,_0x27ad3c){return function(_0xa5dc4e){if(_0xa5dc4e){return _0xa5dc4e[_0x2493('0x26')]()[_0x2493('0x27')](function(){_0xa09f86['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x201353,_0x27cd19){return function(_0x5caafe){if(!_0x5caafe){_0x201353[_0x2493('0x28')](0x194);}return _0x5caafe;};}function handleError(_0xbfa3ec,_0x1e5a24){_0x1e5a24=_0x1e5a24||0x1f4;return function(_0x576f3c){logger['error'](_0x576f3c[_0x2493('0x29')]);if(_0x576f3c[_0x2493('0x2a')]){delete _0x576f3c['name'];}_0xbfa3ec[_0x2493('0x1b')](_0x1e5a24)[_0x2493('0x2b')](_0x576f3c);};}exports[_0x2493('0x2c')]=function(_0x1f1095,_0xb8ba2f){var _0x3aa730={},_0x150c5f={},_0x5445e6={'count':0x0,'rows':[]};var _0xdf25b0=_[_0x2493('0x2d')](db[_0x2493('0x2e')][_0x2493('0x2f')],function(_0x350b24){return{'name':_0x350b24[_0x2493('0x30')],'type':_0x350b24[_0x2493('0x31')][_0x2493('0x32')]};});_0x150c5f[_0x2493('0x33')]=_[_0x2493('0x2d')](_0xdf25b0,_0x2493('0x2a'));_0x150c5f['query']=_[_0x2493('0x34')](_0x1f1095[_0x2493('0x35')]);_0x150c5f[_0x2493('0x36')]=_[_0x2493('0x37')](_0x150c5f[_0x2493('0x33')],_0x150c5f['query']);_0x3aa730[_0x2493('0x38')]=_['intersection'](_0x150c5f[_0x2493('0x33')],qs[_0x2493('0x39')](_0x1f1095[_0x2493('0x35')]['fields']));_0x3aa730[_0x2493('0x38')]=_0x3aa730['attributes'][_0x2493('0x3a')]?_0x3aa730[_0x2493('0x38')]:_0x150c5f['model'];if(!_0x1f1095[_0x2493('0x35')][_0x2493('0x3b')](_0x2493('0x3c'))){_0x3aa730['limit']=qs['limit'](_0x1f1095['query'][_0x2493('0x1f')]);_0x3aa730[_0x2493('0x21')]=qs['offset'](_0x1f1095['query'][_0x2493('0x21')]);}_0x3aa730['order']=qs['sort'](_0x1f1095['query'][_0x2493('0x3d')]);_0x3aa730[_0x2493('0x3e')]=qs[_0x2493('0x36')](_['pick'](_0x1f1095['query'],_0x150c5f[_0x2493('0x36')]),_0xdf25b0);if(_0x1f1095[_0x2493('0x35')][_0x2493('0x3f')]){_0x3aa730[_0x2493('0x3e')]=_[_0x2493('0x40')](_0x3aa730[_0x2493('0x3e')],{'$or':_['map'](_0xdf25b0,function(_0x1b1a36){if(_0x1b1a36[_0x2493('0x31')]!=='VIRTUAL'){var _0x22b529={};_0x22b529[_0x1b1a36[_0x2493('0x2a')]]={'$like':'%'+_0x1f1095[_0x2493('0x35')][_0x2493('0x3f')]+'%'};return _0x22b529;}})});}_0x3aa730=_[_0x2493('0x40')]({},_0x3aa730,_0x1f1095[_0x2493('0x41')]);var _0x8e9af6={'where':_0x3aa730[_0x2493('0x3e')]};return db[_0x2493('0x2e')][_0x2493('0x20')](_0x8e9af6)[_0x2493('0x27')](function(_0x436589){_0x5445e6[_0x2493('0x20')]=_0x436589;if(_0x1f1095[_0x2493('0x35')][_0x2493('0x42')]){_0x3aa730[_0x2493('0x43')]=[{'all':!![]}];}return db[_0x2493('0x2e')]['findAll'](_0x3aa730);})[_0x2493('0x27')](function(_0x5ad4c9){_0x5445e6['rows']=_0x5ad4c9;return _0x5445e6;})[_0x2493('0x27')](respondWithFilteredResult(_0xb8ba2f,_0x3aa730))[_0x2493('0x44')](handleError(_0xb8ba2f,null));};exports[_0x2493('0x45')]=function(_0x34ea30,_0x58f4ff){var _0x1ab75d={'raw':!![],'where':{'id':_0x34ea30['params']['id']}},_0x57f3fb={};_0x57f3fb[_0x2493('0x33')]=_['keys'](db['DeskField'][_0x2493('0x2f')]);_0x57f3fb[_0x2493('0x35')]=_[_0x2493('0x34')](_0x34ea30[_0x2493('0x35')]);_0x57f3fb[_0x2493('0x36')]=_[_0x2493('0x37')](_0x57f3fb['model'],_0x57f3fb[_0x2493('0x35')]);_0x1ab75d[_0x2493('0x38')]=_[_0x2493('0x37')](_0x57f3fb[_0x2493('0x33')],qs[_0x2493('0x39')](_0x34ea30[_0x2493('0x35')][_0x2493('0x39')]));_0x1ab75d[_0x2493('0x38')]=_0x1ab75d['attributes'][_0x2493('0x3a')]?_0x1ab75d[_0x2493('0x38')]:_0x57f3fb['model'];if(_0x34ea30[_0x2493('0x35')]['includeAll']){_0x1ab75d[_0x2493('0x43')]=[{'all':!![]}];}_0x1ab75d=_['merge']({},_0x1ab75d,_0x34ea30['options']);return db[_0x2493('0x2e')][_0x2493('0x46')](_0x1ab75d)[_0x2493('0x27')](handleEntityNotFound(_0x58f4ff,null))[_0x2493('0x27')](respondWithResult(_0x58f4ff,null))[_0x2493('0x44')](handleError(_0x58f4ff,null));};exports[_0x2493('0x47')]=function(_0xfb28c8,_0x417030){return db['DeskField'][_0x2493('0x47')](_0xfb28c8[_0x2493('0x48')],{})[_0x2493('0x27')](respondWithResult(_0x417030,0xc9))[_0x2493('0x44')](handleError(_0x417030,null));};exports[_0x2493('0x25')]=function(_0x3cc303,_0x3ec5d3){if(_0x3cc303[_0x2493('0x48')]['id']){delete _0x3cc303[_0x2493('0x48')]['id'];}return db[_0x2493('0x2e')][_0x2493('0x46')]({'where':{'id':_0x3cc303[_0x2493('0x49')]['id']}})[_0x2493('0x27')](handleEntityNotFound(_0x3ec5d3,null))[_0x2493('0x27')](saveUpdates(_0x3cc303[_0x2493('0x48')],null))['then'](respondWithResult(_0x3ec5d3,null))[_0x2493('0x44')](handleError(_0x3ec5d3,null));};exports[_0x2493('0x26')]=function(_0x334dad,_0x15ae93){return db[_0x2493('0x2e')][_0x2493('0x46')]({'where':{'id':_0x334dad[_0x2493('0x49')]['id']}})[_0x2493('0x27')](handleEntityNotFound(_0x15ae93,null))[_0x2493('0x27')](removeEntity(_0x15ae93,null))[_0x2493('0x44')](handleError(_0x15ae93,null));};
\ No newline at end of file
+var _0xc55e=['rawAttributes','type','key','model','keys','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','filters','find','create','body','update','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','Content-Range','reject','save','destroy','then','end','error','stack','name','send','index','map','DeskField'];(function(_0x53d940,_0x3e2765){var _0x350b74=function(_0x5bc3a3){while(--_0x5bc3a3){_0x53d940['push'](_0x53d940['shift']());}};_0x350b74(++_0x3e2765);}(_0xc55e,0x146));var _0xec55=function(_0x200a14,_0xdf1fc9){_0x200a14=_0x200a14-0x0;var _0x1ce437=_0xc55e[_0x200a14];return _0x1ce437;};'use strict';var emlformat=require(_0xec55('0x0'));var rimraf=require(_0xec55('0x1'));var zipdir=require(_0xec55('0x2'));var jsonpatch=require(_0xec55('0x3'));var rp=require(_0xec55('0x4'));var moment=require('moment');var BPromise=require(_0xec55('0x5'));var Mustache=require(_0xec55('0x6'));var util=require(_0xec55('0x7'));var path=require(_0xec55('0x8'));var sox=require(_0xec55('0x9'));var csv=require('to-csv');var ejs=require(_0xec55('0xa'));var fs=require('fs');var fs_extra=require(_0xec55('0xb'));var _=require(_0xec55('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xec55('0xd'));var toCsv=require(_0xec55('0xe'));var querystring=require(_0xec55('0xf'));var Papa=require(_0xec55('0x10'));var Redis=require(_0xec55('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xec55('0x12'));var as=require(_0xec55('0x13'));var hardwareService=require(_0xec55('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xec55('0x15'));var licenseUtil=require(_0xec55('0x16'));var db=require(_0xec55('0x17'))['db'];function respondWithStatusCode(_0x5dc831,_0x32042f){_0x32042f=_0x32042f||0xcc;return function(_0x12a687){if(_0x12a687){return _0x5dc831[_0xec55('0x18')](_0x32042f);}return _0x5dc831[_0xec55('0x19')](_0x32042f)['end']();};}function respondWithResult(_0x308c39,_0x5f0a85){_0x5f0a85=_0x5f0a85||0xc8;return function(_0x2faa9d){if(_0x2faa9d){return _0x308c39[_0xec55('0x19')](_0x5f0a85)[_0xec55('0x1a')](_0x2faa9d);}};}function respondWithFilteredResult(_0x5747e7,_0x23916a){return function(_0x10de6a){if(_0x10de6a){var _0x249f73=typeof _0x23916a['offset']===_0xec55('0x1b')&&typeof _0x23916a[_0xec55('0x1c')]===_0xec55('0x1b');var _0x3b471c=_0x10de6a[_0xec55('0x1d')];var _0x5abb76=_0x249f73?0x0:_0x23916a[_0xec55('0x1e')];var _0x1ab4d2=_0x249f73?_0x10de6a[_0xec55('0x1d')]:_0x23916a['offset']+_0x23916a[_0xec55('0x1c')];var _0x25adea;if(_0x1ab4d2>=_0x3b471c){_0x1ab4d2=_0x3b471c;_0x25adea=0xc8;}else{_0x25adea=0xce;}_0x5747e7[_0xec55('0x19')](_0x25adea);return _0x5747e7['set'](_0xec55('0x1f'),_0x5abb76+'-'+_0x1ab4d2+'/'+_0x3b471c)[_0xec55('0x1a')](_0x10de6a);}return null;};}function patchUpdates(_0x5c1b03){return function(_0x3c8871){try{jsonpatch['apply'](_0x3c8871,_0x5c1b03,!![]);}catch(_0x568a36){return BPromise[_0xec55('0x20')](_0x568a36);}return _0x3c8871[_0xec55('0x21')]();};}function saveUpdates(_0x2c9eb1,_0x9a9d38){return function(_0x21f335){if(_0x21f335){return _0x21f335['update'](_0x2c9eb1)['then'](function(_0x368d09){return _0x368d09;});}return null;};}function removeEntity(_0x43aca0,_0x5ce959){return function(_0x18b5d6){if(_0x18b5d6){return _0x18b5d6[_0xec55('0x22')]()[_0xec55('0x23')](function(){_0x43aca0[_0xec55('0x19')](0xcc)[_0xec55('0x24')]();});}};}function handleEntityNotFound(_0x197cc9,_0xce18df){return function(_0x3264ab){if(!_0x3264ab){_0x197cc9['sendStatus'](0x194);}return _0x3264ab;};}function handleError(_0x5d19d5,_0xeeccba){_0xeeccba=_0xeeccba||0x1f4;return function(_0x26e9dd){logger[_0xec55('0x25')](_0x26e9dd[_0xec55('0x26')]);if(_0x26e9dd['name']){delete _0x26e9dd[_0xec55('0x27')];}_0x5d19d5[_0xec55('0x19')](_0xeeccba)[_0xec55('0x28')](_0x26e9dd);};}exports[_0xec55('0x29')]=function(_0x3fd7ef,_0x5a74df){var _0x7df662={},_0x4820b2={},_0x27e363={'count':0x0,'rows':[]};var _0xab8283=_[_0xec55('0x2a')](db[_0xec55('0x2b')][_0xec55('0x2c')],function(_0x1830a4){return{'name':_0x1830a4['fieldName'],'type':_0x1830a4[_0xec55('0x2d')][_0xec55('0x2e')]};});_0x4820b2[_0xec55('0x2f')]=_['map'](_0xab8283,'name');_0x4820b2['query']=_[_0xec55('0x30')](_0x3fd7ef['query']);_0x4820b2['filters']=_[_0xec55('0x31')](_0x4820b2['model'],_0x4820b2[_0xec55('0x32')]);_0x7df662['attributes']=_[_0xec55('0x31')](_0x4820b2[_0xec55('0x2f')],qs[_0xec55('0x33')](_0x3fd7ef[_0xec55('0x32')][_0xec55('0x33')]));_0x7df662['attributes']=_0x7df662[_0xec55('0x34')][_0xec55('0x35')]?_0x7df662[_0xec55('0x34')]:_0x4820b2['model'];if(!_0x3fd7ef[_0xec55('0x32')][_0xec55('0x36')](_0xec55('0x37'))){_0x7df662[_0xec55('0x1c')]=qs[_0xec55('0x1c')](_0x3fd7ef[_0xec55('0x32')][_0xec55('0x1c')]);_0x7df662[_0xec55('0x1e')]=qs['offset'](_0x3fd7ef[_0xec55('0x32')]['offset']);}_0x7df662[_0xec55('0x38')]=qs['sort'](_0x3fd7ef[_0xec55('0x32')][_0xec55('0x39')]);_0x7df662[_0xec55('0x3a')]=qs['filters'](_[_0xec55('0x3b')](_0x3fd7ef['query'],_0x4820b2['filters']),_0xab8283);if(_0x3fd7ef['query']['filter']){_0x7df662[_0xec55('0x3a')]=_[_0xec55('0x3c')](_0x7df662[_0xec55('0x3a')],{'$or':_[_0xec55('0x2a')](_0xab8283,function(_0x37c60e){if(_0x37c60e[_0xec55('0x2d')]!==_0xec55('0x3d')){var _0x1c65b2={};_0x1c65b2[_0x37c60e[_0xec55('0x27')]]={'$like':'%'+_0x3fd7ef['query']['filter']+'%'};return _0x1c65b2;}})});}_0x7df662=_['merge']({},_0x7df662,_0x3fd7ef['options']);var _0x2f4716={'where':_0x7df662[_0xec55('0x3a')]};return db[_0xec55('0x2b')]['count'](_0x2f4716)[_0xec55('0x23')](function(_0x51008d){_0x27e363[_0xec55('0x1d')]=_0x51008d;if(_0x3fd7ef['query'][_0xec55('0x3e')]){_0x7df662[_0xec55('0x3f')]=[{'all':!![]}];}return db[_0xec55('0x2b')][_0xec55('0x40')](_0x7df662);})[_0xec55('0x23')](function(_0x152168){_0x27e363[_0xec55('0x41')]=_0x152168;return _0x27e363;})[_0xec55('0x23')](respondWithFilteredResult(_0x5a74df,_0x7df662))[_0xec55('0x42')](handleError(_0x5a74df,null));};exports[_0xec55('0x43')]=function(_0x571ea9,_0x1e40c1){var _0x1e0c60={'raw':!![],'where':{'id':_0x571ea9['params']['id']}},_0x459f28={};_0x459f28[_0xec55('0x2f')]=_[_0xec55('0x30')](db[_0xec55('0x2b')]['rawAttributes']);_0x459f28['query']=_[_0xec55('0x30')](_0x571ea9['query']);_0x459f28[_0xec55('0x44')]=_['intersection'](_0x459f28[_0xec55('0x2f')],_0x459f28[_0xec55('0x32')]);_0x1e0c60[_0xec55('0x34')]=_[_0xec55('0x31')](_0x459f28['model'],qs['fields'](_0x571ea9[_0xec55('0x32')][_0xec55('0x33')]));_0x1e0c60['attributes']=_0x1e0c60[_0xec55('0x34')]['length']?_0x1e0c60[_0xec55('0x34')]:_0x459f28[_0xec55('0x2f')];if(_0x571ea9[_0xec55('0x32')]['includeAll']){_0x1e0c60[_0xec55('0x3f')]=[{'all':!![]}];}_0x1e0c60=_['merge']({},_0x1e0c60,_0x571ea9['options']);return db[_0xec55('0x2b')][_0xec55('0x45')](_0x1e0c60)[_0xec55('0x23')](handleEntityNotFound(_0x1e40c1,null))['then'](respondWithResult(_0x1e40c1,null))['catch'](handleError(_0x1e40c1,null));};exports['create']=function(_0x2e5a5f,_0x26f516){return db[_0xec55('0x2b')][_0xec55('0x46')](_0x2e5a5f[_0xec55('0x47')],{})[_0xec55('0x23')](respondWithResult(_0x26f516,0xc9))[_0xec55('0x42')](handleError(_0x26f516,null));};exports[_0xec55('0x48')]=function(_0x1cb602,_0x4d54db){if(_0x1cb602['body']['id']){delete _0x1cb602[_0xec55('0x47')]['id'];}return db[_0xec55('0x2b')]['find']({'where':{'id':_0x1cb602[_0xec55('0x49')]['id']}})[_0xec55('0x23')](handleEntityNotFound(_0x4d54db,null))['then'](saveUpdates(_0x1cb602[_0xec55('0x47')],null))[_0xec55('0x23')](respondWithResult(_0x4d54db,null))[_0xec55('0x42')](handleError(_0x4d54db,null));};exports[_0xec55('0x22')]=function(_0x2b0812,_0x297f2d){return db[_0xec55('0x2b')]['find']({'where':{'id':_0x2b0812[_0xec55('0x49')]['id']}})[_0xec55('0x23')](handleEntityNotFound(_0x297f2d,null))['then'](removeEntity(_0x297f2d,null))[_0xec55('0x42')](handleError(_0x297f2d,null));};
\ No newline at end of file
index bbd51b2..820cc52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5340=['util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./intDeskField.attributes','define','DeskField','int_desk_fields','idField','FieldId','lodash'];(function(_0x1f5c9d,_0x3bfc84){var _0x4dc76d=function(_0x42b818){while(--_0x42b818){_0x1f5c9d['push'](_0x1f5c9d['shift']());}};_0x4dc76d(++_0x3bfc84);}(_0x5340,0x125));var _0x0534=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5340[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0534('0x0'));var util=require(_0x0534('0x1'));var logger=require(_0x0534('0x2'))('api');var moment=require(_0x0534('0x3'));var BPromise=require(_0x0534('0x4'));var rp=require(_0x0534('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0534('0x6'));var config=require(_0x0534('0x7'));var attributes=require(_0x0534('0x8'));module['exports']=function(_0x13291e,_0x2ef91c){return _0x13291e[_0x0534('0x9')](_0x0534('0xa'),attributes,{'tableName':_0x0534('0xb'),'paranoid':![],'indexes':[{'name':'desk_unique_index','fields':[_0x0534('0xc'),_0x0534('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd514=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDeskField.attributes','exports','DeskField','int_desk_fields','FieldId','lodash','util'];(function(_0x4d5d0e,_0x12fe8f){var _0x5d9652=function(_0x137d1c){while(--_0x137d1c){_0x4d5d0e['push'](_0x4d5d0e['shift']());}};_0x5d9652(++_0x12fe8f);}(_0xd514,0xb4));var _0x4d51=function(_0x5cb982,_0xb9fe24){_0x5cb982=_0x5cb982-0x0;var _0x29a4be=_0xd514[_0x5cb982];return _0x29a4be;};'use strict';var _=require(_0x4d51('0x0'));var util=require(_0x4d51('0x1'));var logger=require('../../config/logger')(_0x4d51('0x2'));var moment=require(_0x4d51('0x3'));var BPromise=require(_0x4d51('0x4'));var rp=require(_0x4d51('0x5'));var fs=require('fs');var path=require(_0x4d51('0x6'));var rimraf=require(_0x4d51('0x7'));var config=require(_0x4d51('0x8'));var attributes=require(_0x4d51('0x9'));module[_0x4d51('0xa')]=function(_0x4b4afd,_0x59312e){return _0x4b4afd['define'](_0x4d51('0xb'),attributes,{'tableName':_0x4d51('0xc'),'paranoid':![],'indexes':[{'name':'desk_unique_index','fields':['idField',_0x4d51('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 1669750..4bab98b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf05f=['request\x20sent','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','then','DeskField,\x20%s,\x20%s','debug'];(function(_0x1488cd,_0x25a893){var _0x63fa13=function(_0x57dd1c){while(--_0x57dd1c){_0x1488cd['push'](_0x1488cd['shift']());}};_0x63fa13(++_0x25a893);}(_0xf05f,0x64));var _0xff05=function(_0x5dd449,_0x4c64a9){_0x5dd449=_0x5dd449-0x0;var _0x45fcc7=_0xf05f[_0x5dd449];return _0x45fcc7;};'use strict';var _=require(_0xff05('0x0'));var util=require(_0xff05('0x1'));var moment=require(_0xff05('0x2'));var BPromise=require(_0xff05('0x3'));var rs=require(_0xff05('0x4'));var fs=require('fs');var Redis=require(_0xff05('0x5'));var db=require(_0xff05('0x6'))['db'];var utils=require(_0xff05('0x7'));var logger=require('../../config/logger')(_0xff05('0x8'));var config=require(_0xff05('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xff05('0xa')][_0xff05('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1b0c2a,_0xf206a0,_0x22ab26){return new BPromise(function(_0x59b0ce,_0x9f4061){return client['request'](_0x1b0c2a,_0x22ab26)[_0xff05('0xc')](function(_0x32c57d){logger['info'](_0xff05('0xd'),_0xf206a0,'request\x20sent');logger[_0xff05('0xe')]('DeskField,\x20%s,\x20%s,\x20%s',_0xf206a0,_0xff05('0xf'),JSON[_0xff05('0x10')](_0x32c57d));if(_0x32c57d[_0xff05('0x11')]){if(_0x32c57d['error'][_0xff05('0x12')]===0x1f4){logger[_0xff05('0x11')](_0xff05('0xd'),_0xf206a0,_0x32c57d['error'][_0xff05('0x13')]);return _0x9f4061(_0x32c57d['error']['message']);}logger[_0xff05('0x11')](_0xff05('0xd'),_0xf206a0,_0x32c57d[_0xff05('0x11')][_0xff05('0x13')]);return _0x59b0ce(_0x32c57d[_0xff05('0x11')][_0xff05('0x13')]);}else{logger[_0xff05('0x14')](_0xff05('0xd'),_0xf206a0,_0xff05('0xf'));_0x59b0ce(_0x32c57d[_0xff05('0x15')][_0xff05('0x13')]);}})[_0xff05('0x16')](function(_0x4a79c4){logger[_0xff05('0x11')](_0xff05('0xd'),_0xf206a0,_0x4a79c4);_0x9f4061(_0x4a79c4);});});}
\ No newline at end of file
+var _0xb4a4=['lodash','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','DeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result'];(function(_0x17ce59,_0x1fd7d7){var _0x4cbedc=function(_0x5a20cb){while(--_0x5a20cb){_0x17ce59['push'](_0x17ce59['shift']());}};_0x4cbedc(++_0x1fd7d7);}(_0xb4a4,0xd2));var _0x4b4a=function(_0x24e4c5,_0x16f23f){_0x24e4c5=_0x24e4c5-0x0;var _0x2558f5=_0xb4a4[_0x24e4c5];return _0x2558f5;};'use strict';var _=require(_0x4b4a('0x0'));var util=require(_0x4b4a('0x1'));var moment=require(_0x4b4a('0x2'));var BPromise=require('bluebird');var rs=require(_0x4b4a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4b4a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4b4a('0x5'))(_0x4b4a('0x6'));var config=require(_0x4b4a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x4b4a('0x8')][_0x4b4a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x11f3de,_0x59cb1a,_0x57191a){return new BPromise(function(_0x2838ef,_0x1f7871){return client[_0x4b4a('0xa')](_0x11f3de,_0x57191a)[_0x4b4a('0xb')](function(_0x237553){logger['info'](_0x4b4a('0xc'),_0x59cb1a,_0x4b4a('0xd'));logger[_0x4b4a('0xe')]('DeskField,\x20%s,\x20%s,\x20%s',_0x59cb1a,_0x4b4a('0xd'),JSON[_0x4b4a('0xf')](_0x237553));if(_0x237553[_0x4b4a('0x10')]){if(_0x237553['error'][_0x4b4a('0x11')]===0x1f4){logger[_0x4b4a('0x10')](_0x4b4a('0xc'),_0x59cb1a,_0x237553['error'][_0x4b4a('0x12')]);return _0x1f7871(_0x237553['error'][_0x4b4a('0x12')]);}logger[_0x4b4a('0x10')](_0x4b4a('0xc'),_0x59cb1a,_0x237553[_0x4b4a('0x10')][_0x4b4a('0x12')]);return _0x2838ef(_0x237553[_0x4b4a('0x10')][_0x4b4a('0x12')]);}else{logger[_0x4b4a('0x13')](_0x4b4a('0xc'),_0x59cb1a,'request\x20sent');_0x2838ef(_0x237553[_0x4b4a('0x14')][_0x4b4a('0x12')]);}})['catch'](function(_0x5225aa){logger[_0x4b4a('0x10')](_0x4b4a('0xc'),_0x59cb1a,_0x5225aa);_0x1f7871(_0x5225aa);});});}
\ No newline at end of file
index ce00b79..6ae2900 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9250=['update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','isAuthenticated','index','get','/:id','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration'];(function(_0x5bdb2b,_0x45a14f){var _0x10a395=function(_0x286616){while(--_0x286616){_0x5bdb2b['push'](_0x5bdb2b['shift']());}};_0x10a395(++_0x45a14f);}(_0x9250,0x16b));var _0x0925=function(_0x10f35d,_0x4c24aa){_0x10f35d=_0x10f35d-0x0;var _0x5395f1=_0x9250[_0x10f35d];return _0x5395f1;};'use strict';var multer=require(_0x0925('0x0'));var util=require(_0x0925('0x1'));var path=require(_0x0925('0x2'));var timeout=require(_0x0925('0x3'));var express=require(_0x0925('0x4'));var router=express[_0x0925('0x5')]();var fs_extra=require(_0x0925('0x6'));var auth=require(_0x0925('0x7'));var interaction=require(_0x0925('0x8'));var config=require(_0x0925('0x9'));var controller=require(_0x0925('0xa'));router['get']('/',auth[_0x0925('0xb')](),controller[_0x0925('0xc')]);router[_0x0925('0xd')](_0x0925('0xe'),auth[_0x0925('0xb')](),controller['show']);router[_0x0925('0xd')](_0x0925('0xf'),auth[_0x0925('0xb')](),controller[_0x0925('0x10')]);router[_0x0925('0xd')]('/:id/fields',auth['isAuthenticated'](),controller[_0x0925('0x11')]);router[_0x0925('0x12')]('/',auth[_0x0925('0xb')](),controller[_0x0925('0x13')]);router['post'](_0x0925('0xf'),auth[_0x0925('0xb')](),controller[_0x0925('0x14')]);router['put'](_0x0925('0xe'),auth[_0x0925('0xb')](),controller[_0x0925('0x15')]);router[_0x0925('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x0925('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x714b=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router'];(function(_0x7d62cb,_0x7622c){var _0x3a6266=function(_0x1cc5fa){while(--_0x1cc5fa){_0x7d62cb['push'](_0x7d62cb['shift']());}};_0x3a6266(++_0x7622c);}(_0x714b,0xcb));var _0xb714=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x714b[_0x167cc1];return _0x10bc4b;};'use strict';var multer=require(_0xb714('0x0'));var util=require(_0xb714('0x1'));var path=require(_0xb714('0x2'));var timeout=require(_0xb714('0x3'));var express=require('express');var router=express[_0xb714('0x4')]();var fs_extra=require(_0xb714('0x5'));var auth=require(_0xb714('0x6'));var interaction=require(_0xb714('0x7'));var config=require(_0xb714('0x8'));var controller=require(_0xb714('0x9'));router[_0xb714('0xa')]('/',auth[_0xb714('0xb')](),controller[_0xb714('0xc')]);router[_0xb714('0xa')](_0xb714('0xd'),auth[_0xb714('0xb')](),controller[_0xb714('0xe')]);router[_0xb714('0xa')](_0xb714('0xf'),auth['isAuthenticated'](),controller[_0xb714('0x10')]);router[_0xb714('0xa')](_0xb714('0x11'),auth[_0xb714('0xb')](),controller[_0xb714('0x12')]);router[_0xb714('0x13')]('/',auth[_0xb714('0xb')](),controller[_0xb714('0x14')]);router[_0xb714('0x13')](_0xb714('0xf'),auth[_0xb714('0xb')](),controller['addConfiguration']);router[_0xb714('0x15')](_0xb714('0xd'),auth[_0xb714('0xb')](),controller[_0xb714('0x16')]);router[_0xb714('0x17')](_0xb714('0xd'),auth[_0xb714('0xb')](),controller[_0xb714('0x18')]);module[_0xb714('0x19')]=router;
\ No newline at end of file
index 56e3f42..331a2c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1247=['STRING','BOOLEAN','sequelize','exports'];(function(_0x416eed,_0x3a2a24){var _0x325487=function(_0x45656c){while(--_0x45656c){_0x416eed['push'](_0x416eed['shift']());}};_0x325487(++_0x3a2a24);}(_0x1247,0xb6));var _0x7124=function(_0x5933fb,_0x9115ad){_0x5933fb=_0x5933fb-0x0;var _0x44d988=_0x1247[_0x5933fb];return _0x44d988;};'use strict';var Sequelize=require(_0x7124('0x0'));module[_0x7124('0x1')]={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x7124('0x2')]},'remoteUri':{'type':Sequelize[_0x7124('0x2')]},'tenantId':{'type':Sequelize[_0x7124('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0x7124('0x2')]},'serverUrl':{'type':Sequelize[_0x7124('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x7124('0x2')]},'modernAuthentication':{'type':Sequelize[_0x7124('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x09f4=['STRING','BOOLEAN'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x09f4,0xe4));var _0x409f=function(_0x7efc9b,_0x532093){_0x7efc9b=_0x7efc9b-0x0;var _0x280d=_0x09f4[_0x7efc9b];return _0x280d;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x409f('0x0')]},'username':{'type':Sequelize[_0x409f('0x0')]},'password':{'type':Sequelize[_0x409f('0x0')]},'remoteUri':{'type':Sequelize[_0x409f('0x0')]},'tenantId':{'type':Sequelize[_0x409f('0x0')]},'clientId':{'type':Sequelize[_0x409f('0x0')]},'clientSecret':{'type':Sequelize[_0x409f('0x0')]},'serverUrl':{'type':Sequelize[_0x409f('0x0')],'allowNull':![]},'description':{'type':Sequelize[_0x409f('0x0')]},'modernAuthentication':{'type':Sequelize[_0x409f('0x1')],'defaultValue':!![]}};
\ No newline at end of file
index 4f5a2aa..fa11841 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0187=['name','send','map','Dynamics365Account','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','keys','create','body','update','find','getConfigurations','Dynamics365Configuration','AccountId','Subjects','getSubjects','channel','Descriptions','Dynamics365Field','slice','substring','lastIndexOf','format','%s/api/data/v9.0/','getFields','ticketType','incident','title','description','customerid','ownerid','caseorigincode','subject','phonenumber','regardingobjectid','directioncode','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyname','createdon','customeridtype','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','firstresponsebykpiidname','followupby','importsequencenumber','kbarticleidname','lastonholdtime','modifiedbyyominame','msdyn_incidenttypename','msdyn_iotalertname','onholdtime','overriddencreatedon','owneridname','owneridtype','primarycontactidname','primarycontactidyominame','prioritycodename','productidname','productserialnumber','resolveby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','statecode','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','concat','username','password','tenantId','clientId','clientSecret','modernAuthentication','CloudProvider','data5','data7','access_token','remoteUri','POST','https://login.microsoftonline.com/','/oauth2/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','includes','LogicalName','forEach','@odata.type','push','all','isNil','BooleanAttributeMetadata','StringAttributeMetadata','IntegerAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','statusCode','error','test','Wrong\x20credentials',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','UserLocalizedLabel','Value',')/Attributes(','TrueOption','true','false',')/Microsoft.Dynamics.CRM.','DisplayName','request-promise','util','lodash','../../mysqldb','../../components/integrations/configuration','offset','limit','undefined','count','status','set','Content-Range','json','then','destroy','end','sendStatus','stack'];(function(_0x1bd822,_0x1c8078){var _0x3c3a69=function(_0x565eb3){while(--_0x565eb3){_0x1bd822['push'](_0x1bd822['shift']());}};_0x3c3a69(++_0x1c8078);}(_0x0187,0x158));var _0x7018=function(_0x10004e,_0xd701e6){_0x10004e=_0x10004e-0x0;var _0x5af990=_0x0187[_0x10004e];return _0x5af990;};'use strict';var rp=require(_0x7018('0x0'));var util=require(_0x7018('0x1'));var _=require(_0x7018('0x2'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')('api');var db=require(_0x7018('0x3'))['db'];var integrations=require(_0x7018('0x4'));function respondWithResult(_0x12a72a,_0x49e960){_0x49e960=_0x49e960||0xc8;return function(_0x55db45){if(_0x55db45){return _0x12a72a['status'](_0x49e960)['json'](_0x55db45);}};}function respondWithFilteredResult(_0x41fb5d,_0xadb814){return function(_0x4162f7){if(_0x4162f7){var _0x14f0f1=typeof _0xadb814[_0x7018('0x5')]==='undefined'&&typeof _0xadb814[_0x7018('0x6')]===_0x7018('0x7');var _0x4d1da2=_0x4162f7[_0x7018('0x8')];var _0x35ff33=_0x14f0f1?0x0:_0xadb814[_0x7018('0x5')];var _0x42f6e0=_0x14f0f1?_0x4162f7[_0x7018('0x8')]:_0xadb814[_0x7018('0x5')]+_0xadb814[_0x7018('0x6')];var _0x100041;if(_0x42f6e0>=_0x4d1da2){_0x42f6e0=_0x4d1da2;_0x100041=0xc8;}else{_0x100041=0xce;}_0x41fb5d[_0x7018('0x9')](_0x100041);return _0x41fb5d[_0x7018('0xa')](_0x7018('0xb'),_0x35ff33+'-'+_0x42f6e0+'/'+_0x4d1da2)[_0x7018('0xc')](_0x4162f7);}return null;};}function saveUpdates(_0x362406){return function(_0x154f79){if(_0x154f79){return _0x154f79['update'](_0x362406)[_0x7018('0xd')](function(_0x536b83){return _0x536b83;});}return null;};}function removeEntity(_0x3263a5){return function(_0x1a16dc){if(_0x1a16dc){return _0x1a16dc[_0x7018('0xe')]()[_0x7018('0xd')](function(){_0x3263a5[_0x7018('0x9')](0xcc)[_0x7018('0xf')]();});}};}function handleEntityNotFound(_0x3e06a2){return function(_0x5901b0){if(!_0x5901b0){_0x3e06a2[_0x7018('0x10')](0x194);}return _0x5901b0;};}function handleError(_0x21fbf9,_0x2efa1b){_0x2efa1b=_0x2efa1b||0x1f4;return function(_0xf623c9){logger['error'](_0xf623c9[_0x7018('0x11')]);if(_0xf623c9[_0x7018('0x12')]){delete _0xf623c9[_0x7018('0x12')];}_0x21fbf9['status'](_0x2efa1b)[_0x7018('0x13')](_0xf623c9);};}exports['index']=function(_0x5843f1,_0x2adf5b){var _0x5e44a4={},_0x316017={},_0x45b118={'count':0x0,'rows':[]};var _0x258b28=_[_0x7018('0x14')](db[_0x7018('0x15')][_0x7018('0x16')],function(_0x39dccc){return{'name':_0x39dccc[_0x7018('0x17')],'type':_0x39dccc['type'][_0x7018('0x18')]};});_0x316017[_0x7018('0x19')]=_['map'](_0x258b28,_0x7018('0x12'));_0x316017[_0x7018('0x1a')]=_['keys'](_0x5843f1[_0x7018('0x1a')]);_0x316017[_0x7018('0x1b')]=_[_0x7018('0x1c')](_0x316017['model'],_0x316017[_0x7018('0x1a')]);_0x5e44a4[_0x7018('0x1d')]=_['intersection'](_0x316017['model'],qs[_0x7018('0x1e')](_0x5843f1[_0x7018('0x1a')][_0x7018('0x1e')]));_0x5e44a4[_0x7018('0x1d')]=_0x5e44a4['attributes'][_0x7018('0x1f')]?_0x5e44a4['attributes']:_0x316017['model'];if(!_0x5843f1[_0x7018('0x1a')][_0x7018('0x20')](_0x7018('0x21'))){_0x5e44a4[_0x7018('0x6')]=qs['limit'](_0x5843f1['query'][_0x7018('0x6')]);_0x5e44a4[_0x7018('0x5')]=qs['offset'](_0x5843f1[_0x7018('0x1a')][_0x7018('0x5')]);}_0x5e44a4[_0x7018('0x22')]=qs['sort'](_0x5843f1[_0x7018('0x1a')][_0x7018('0x23')]);_0x5e44a4[_0x7018('0x24')]=qs[_0x7018('0x1b')](_[_0x7018('0x25')](_0x5843f1[_0x7018('0x1a')],_0x316017[_0x7018('0x1b')]),_0x258b28);if(_0x5843f1[_0x7018('0x1a')][_0x7018('0x26')]){_0x5e44a4[_0x7018('0x24')]=_['merge'](_0x5e44a4[_0x7018('0x24')],{'$or':_[_0x7018('0x14')](_0x258b28,function(_0x32258d){if(_0x32258d[_0x7018('0x27')]!==_0x7018('0x28')){var _0x41bec1={};_0x41bec1[_0x32258d[_0x7018('0x12')]]={'$like':'%'+_0x5843f1[_0x7018('0x1a')]['filter']+'%'};return _0x41bec1;}})});}_0x5e44a4=_[_0x7018('0x29')]({},_0x5e44a4,_0x5843f1[_0x7018('0x2a')]);var _0x223f04={'where':_0x5e44a4[_0x7018('0x24')]};return db[_0x7018('0x15')][_0x7018('0x8')](_0x223f04)['then'](function(_0x224539){_0x45b118[_0x7018('0x8')]=_0x224539;if(_0x5843f1['query'][_0x7018('0x2b')]){_0x5e44a4[_0x7018('0x2c')]=[{'all':!![]}];}return db[_0x7018('0x15')][_0x7018('0x2d')](_0x5e44a4);})['then'](function(_0x2cf7ee){_0x45b118['rows']=_0x2cf7ee;return _0x45b118;})[_0x7018('0xd')](respondWithFilteredResult(_0x2adf5b,_0x5e44a4))[_0x7018('0x2e')](handleError(_0x2adf5b,null));};exports[_0x7018('0x2f')]=function(_0x2c4da9,_0x377927){var _0x146fd1={'raw':![],'where':{'id':_0x2c4da9[_0x7018('0x30')]['id']}},_0x4acb8d={};_0x4acb8d[_0x7018('0x19')]=_[_0x7018('0x31')](db['Dynamics365Account'][_0x7018('0x16')]);_0x4acb8d[_0x7018('0x1a')]=_[_0x7018('0x31')](_0x2c4da9['query']);_0x4acb8d[_0x7018('0x1b')]=_[_0x7018('0x1c')](_0x4acb8d[_0x7018('0x19')],_0x4acb8d[_0x7018('0x1a')]);_0x146fd1['attributes']=_[_0x7018('0x1c')](_0x4acb8d[_0x7018('0x19')],qs['fields'](_0x2c4da9[_0x7018('0x1a')][_0x7018('0x1e')]));_0x146fd1[_0x7018('0x1d')]=_0x146fd1[_0x7018('0x1d')]['length']?_0x146fd1[_0x7018('0x1d')]:_0x4acb8d[_0x7018('0x19')];if(_0x2c4da9[_0x7018('0x1a')][_0x7018('0x2b')]){_0x146fd1[_0x7018('0x2c')]=[{'all':!![]}];}_0x146fd1=_[_0x7018('0x29')]({},_0x146fd1,_0x2c4da9[_0x7018('0x2a')]);return db['Dynamics365Account']['find'](_0x146fd1)[_0x7018('0xd')](handleEntityNotFound(_0x377927,null))[_0x7018('0xd')](respondWithResult(_0x377927,null))[_0x7018('0x2e')](handleError(_0x377927,null));};exports[_0x7018('0x32')]=function(_0x2b2270,_0x5ae99d){return db[_0x7018('0x15')][_0x7018('0x32')](_0x2b2270[_0x7018('0x33')],{})['then'](respondWithResult(_0x5ae99d,0xc9))['catch'](handleError(_0x5ae99d,null));};exports[_0x7018('0x34')]=function(_0x2c2c62,_0x355949){if(_0x2c2c62[_0x7018('0x33')]['id']){delete _0x2c2c62['body']['id'];}return db[_0x7018('0x15')]['find']({'where':{'id':_0x2c2c62[_0x7018('0x30')]['id']}})['then'](handleEntityNotFound(_0x355949,null))[_0x7018('0xd')](saveUpdates(_0x2c2c62['body'],null))[_0x7018('0xd')](respondWithResult(_0x355949,null))[_0x7018('0x2e')](handleError(_0x355949,null));};exports[_0x7018('0xe')]=function(_0x198f3,_0x5ae96e){return db[_0x7018('0x15')][_0x7018('0x35')]({'where':{'id':_0x198f3['params']['id']}})[_0x7018('0xd')](handleEntityNotFound(_0x5ae96e,null))[_0x7018('0xd')](removeEntity(_0x5ae96e,null))['catch'](handleError(_0x5ae96e,null));};exports[_0x7018('0x36')]=function(_0x187b43,_0x134616){var _0x1df6ee={};var _0x2397c7={};var _0x50210f;var _0x3ce036;return db[_0x7018('0x15')]['findOne']({'where':{'id':_0x187b43['params']['id']}})['then'](handleEntityNotFound(_0x134616,null))[_0x7018('0xd')](function(_0x4ead72){if(_0x4ead72){_0x50210f=_0x4ead72;_0x2397c7['model']=_[_0x7018('0x31')](db[_0x7018('0x37')]['rawAttributes']);_0x2397c7['query']=_['keys'](_0x187b43['query']);_0x2397c7[_0x7018('0x1b')]=_[_0x7018('0x1c')](_0x2397c7[_0x7018('0x19')],_0x2397c7[_0x7018('0x1a')]);_0x1df6ee['attributes']=_[_0x7018('0x1c')](_0x2397c7[_0x7018('0x19')],qs['fields'](_0x187b43[_0x7018('0x1a')][_0x7018('0x1e')]));_0x1df6ee[_0x7018('0x1d')]=_0x1df6ee[_0x7018('0x1d')][_0x7018('0x1f')]?_0x1df6ee[_0x7018('0x1d')]:_0x2397c7['model'];_0x1df6ee[_0x7018('0x22')]=qs[_0x7018('0x23')](_0x187b43[_0x7018('0x1a')]['sort']);_0x1df6ee[_0x7018('0x24')]=qs['filters'](_[_0x7018('0x25')](_0x187b43['query'],_0x2397c7[_0x7018('0x1b')]));if(_0x187b43['query']['filter']){_0x1df6ee[_0x7018('0x24')]=_[_0x7018('0x29')](_0x1df6ee[_0x7018('0x24')],{'$or':_[_0x7018('0x14')](_0x1df6ee[_0x7018('0x1d')],function(_0x1a42b0){var _0x631c72={};_0x631c72[_0x1a42b0]={'$like':'%'+_0x187b43['query'][_0x7018('0x26')]+'%'};return _0x631c72;})});}_0x1df6ee=_[_0x7018('0x29')]({},_0x1df6ee,_0x187b43[_0x7018('0x2a')]);return _0x50210f[_0x7018('0x36')](_0x1df6ee);}})[_0x7018('0xd')](function(_0x3138e8){if(_0x3138e8){_0x3ce036=_0x3138e8[_0x7018('0x1f')];if(!_0x187b43[_0x7018('0x1a')][_0x7018('0x20')](_0x7018('0x21'))){_0x1df6ee[_0x7018('0x6')]=qs['limit'](_0x187b43[_0x7018('0x1a')]['limit']);_0x1df6ee[_0x7018('0x5')]=qs['offset'](_0x187b43[_0x7018('0x1a')][_0x7018('0x5')]);}return _0x50210f[_0x7018('0x36')](_0x1df6ee);}})[_0x7018('0xd')](function(_0x520952){if(_0x520952){return _0x520952?{'count':_0x3ce036,'rows':_0x520952}:null;}})[_0x7018('0xd')](respondWithResult(_0x134616,null))[_0x7018('0x2e')](handleError(_0x134616,null));};exports['addConfiguration']=function(_0x4aa2f4,_0x2efd2b){if(_0x4aa2f4[_0x7018('0x33')]['id']){delete _0x4aa2f4[_0x7018('0x33')]['id'];}return db['Dynamics365Account']['findOne']({'where':{'id':_0x4aa2f4['params']['id']}})[_0x7018('0xd')](handleEntityNotFound(_0x2efd2b,null))['then'](function(_0x131db4){if(_0x131db4){_0x4aa2f4[_0x7018('0x33')][_0x7018('0x38')]=_0x131db4['id'];_0x4aa2f4[_0x7018('0x33')][_0x7018('0x39')]=integrations[_0x7018('0x3a')](_0x4aa2f4[_0x7018('0x33')][_0x7018('0x3b')],_0x4aa2f4[_0x7018('0x33')][_0x7018('0x27')]);_0x4aa2f4[_0x7018('0x33')][_0x7018('0x3c')]=integrations['getDescriptions'](_0x4aa2f4[_0x7018('0x33')][_0x7018('0x3b')],_0x4aa2f4[_0x7018('0x33')]['type']);return db['Dynamics365Configuration']['create'](_0x4aa2f4[_0x7018('0x33')],{'include':[{'model':db['Dynamics365Field'],'as':_0x7018('0x39')},{'model':db[_0x7018('0x3d')],'as':'Descriptions'}]});}return null;})[_0x7018('0xd')](respondWithResult(_0x2efd2b,null))[_0x7018('0x2e')](handleError(_0x2efd2b,null));};function sanitizeRemoteUri(_0xfe6391){var _0x3db5e1=_0xfe6391[_0x7018('0x3e')](-0x1);if(_0x3db5e1==='/')return _0xfe6391[_0x7018('0x3f')](0x0,_0xfe6391[_0x7018('0x40')](_0x3db5e1));return _0xfe6391;}function getWebApiUrl(_0x429e5e){return util[_0x7018('0x41')](_0x7018('0x42'),_0x429e5e);}exports[_0x7018('0x43')]=function(_0x4ca984,_0x4ba562){var _0x512d63=_0x4ca984[_0x7018('0x1a')][_0x7018('0x44')];var _0x1355a1=_0x512d63===_0x7018('0x45')?'Incident':'PhoneCall';var _0x238f39='';var _0x171d17='';var _0x298c01='';var _0x4df0c1='';var _0x48d982='';var _0x11cd54='';var _0x4fa476='';var _0x321e04='';var _0x5d9c9d=[_0x7018('0x46'),_0x7018('0x47'),_0x7018('0x48'),_0x7018('0x49'),_0x7018('0x4a'),_0x7018('0x4b'),_0x7018('0x4c'),_0x7018('0x4d'),_0x7018('0x4e'),'phonecall_activity_parties'];var _0x30893b=['accountidname',_0x7018('0x4f'),_0x7018('0x50'),_0x7018('0x51'),_0x7018('0x52'),_0x7018('0x53'),_0x7018('0x54'),_0x7018('0x55'),_0x7018('0x56'),'createdbyexternalpartyyominame',_0x7018('0x57'),'createdbyyominame',_0x7018('0x58'),'createdonbehalfbyname','createdonbehalfbyyominame','customeridname',_0x7018('0x59'),'customeridyominame',_0x7018('0x5a'),_0x7018('0x5b'),_0x7018('0x5c'),_0x7018('0x5d'),'escalatedon','exchangerate',_0x7018('0x5e'),_0x7018('0x5f'),_0x7018('0x60'),'influencescore',_0x7018('0x61'),_0x7018('0x62'),'masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname',_0x7018('0x63'),'modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame',_0x7018('0x64'),_0x7018('0x65'),'numberofchildincidents',_0x7018('0x66'),_0x7018('0x67'),_0x7018('0x68'),_0x7018('0x69'),'owneridyominame','parentcaseidname',_0x7018('0x6a'),_0x7018('0x6b'),_0x7018('0x6c'),_0x7018('0x6d'),_0x7018('0x6e'),_0x7018('0x6f'),'resolvebykpiidname','responseby',_0x7018('0x70'),_0x7018('0x71'),_0x7018('0x72'),_0x7018('0x73'),_0x7018('0x74'),'socialprofileidname',_0x7018('0x75'),'statuscode',_0x7018('0x76'),_0x7018('0x77'),_0x7018('0x78'),_0x7018('0x79'),_0x7018('0x7a'),_0x7018('0x7b'),_0x7018('0x7c')];var _0x3eab22=_0x5d9c9d[_0x7018('0x7d')](_0x30893b);return db[_0x7018('0x15')]['findOne']({'where':{'id':_0x4ca984['params']['id']},'attributes':['id',_0x7018('0x7e'),_0x7018('0x7f'),'remoteUri',_0x7018('0x80'),_0x7018('0x81'),_0x7018('0x82'),_0x7018('0x83')],'include':[{'model':db['CloudProvider'],'as':_0x7018('0x84'),'attributes':['id',_0x7018('0x85'),_0x7018('0x86')]}]})[_0x7018('0xd')](handleEntityNotFound(_0x4ba562,null))[_0x7018('0xd')](function(_0x28a4fa){if(_0x28a4fa){if(_0x28a4fa[_0x7018('0x83')]){_0x28a4fa[_0x7018('0x87')]=_0x28a4fa['CloudProvider']['data5'];_0x321e04=sanitizeRemoteUri(_0x28a4fa['CloudProvider'][_0x7018('0x86')]);_0x4fa476=getWebApiUrl(_0x321e04);return _0x28a4fa;}_0x321e04=sanitizeRemoteUri(_0x28a4fa[_0x7018('0x88')]);_0x4fa476=getWebApiUrl(_0x321e04);var _0xc6e6be={'method':_0x7018('0x89'),'uri':_0x7018('0x8a')+_0x28a4fa['tenantId']+_0x7018('0x8b'),'form':{'client_id':_0x28a4fa[_0x7018('0x81')],'resource':_0x321e04,'username':_0x28a4fa[_0x7018('0x7e')],'password':_0x28a4fa[_0x7018('0x7f')],'grant_type':'password','client_secret':_0x28a4fa['clientSecret']},'json':!![]};return rp(_0xc6e6be);}})[_0x7018('0xd')](function(_0x376202){_0x11cd54=_0x376202[_0x7018('0x87')];var _0x3c1c3c={'method':_0x7018('0x8c'),'uri':encodeURI(_0x4fa476+_0x7018('0x8d')+_0x1355a1+'\x27'),'headers':{'Authorization':_0x7018('0x8e')+_0x11cd54,'If-None-Match':null,'OData-Version':_0x7018('0x8f')},'json':!![]};return rp(_0x3c1c3c);})['then'](function(_0x1d7e86){var _0x1467ed=_0x1d7e86[_0x7018('0x90')][0x0];var _0x3479d0=_0x1467ed[_0x7018('0x91')];var _0x6563e1={'method':_0x7018('0x8c'),'uri':_0x4fa476+_0x7018('0x92')+_0x3479d0+_0x7018('0x93'),'headers':{'Authorization':_0x7018('0x8e')+_0x11cd54,'If-None-Match':null,'OData-Version':_0x7018('0x8f')},'json':!![]};return rp(_0x6563e1);})[_0x7018('0xd')](function(_0xfaffb5){_0x238f39=_0xfaffb5;_0x171d17=_0x238f39[_0x7018('0x94')];_0x171d17=_['remove'](_0x171d17,function(_0x23561f){return!_0x3eab22[_0x7018('0x95')](_0x23561f[_0x7018('0x96')]);});var _0x3ffb4b=[];var _0x4dd0bd=[];_0x171d17[_0x7018('0x97')](function(_0x2631fe){if(_0x2631fe[_0x7018('0x98')]){var _0x26d6d5=_0x2631fe[_0x7018('0x98')][_0x7018('0x3f')](_0x2631fe[_0x7018('0x98')]['lastIndexOf']('.')+0x1);if(_0x26d6d5==='PicklistAttributeMetadata'){_0x3ffb4b[_0x7018('0x99')](getSelectList(_0x4fa476,_0x512d63,_0x4dd0bd,_0x238f39[_0x7018('0x91')],_0x2631fe[_0x7018('0x91')],_0x11cd54));}}});return Promise[_0x7018('0x9a')](_0x3ffb4b);})[_0x7018('0xd')](function(_0x13fed4){_0x298c01=_0x13fed4[0x0];var _0x3bc763=[];var _0x518bf6=[];_0x171d17[_0x7018('0x97')](function(_0x3fec6c){if(!_[_0x7018('0x9b')](_0x3fec6c[_0x7018('0x98')])){var _0x152700=_0x3fec6c[_0x7018('0x98')][_0x7018('0x3f')](_0x3fec6c[_0x7018('0x98')][_0x7018('0x40')]('.')+0x1);if(_0x152700===_0x7018('0x9c')){_0x3bc763['push'](getBooleanList(_0x4fa476,_0x512d63,_0x518bf6,_0x238f39['MetadataId'],_0x3fec6c[_0x7018('0x91')],_0x11cd54));}}});return Promise['all'](_0x3bc763);})[_0x7018('0xd')](function(_0x252ccb){_0x4df0c1=_0x252ccb[0x0];var _0x2afd14=[];var _0x2e8e05=[];_0x171d17['forEach'](function(_0x480a8e){if(_0x480a8e[_0x7018('0x98')]){var _0x5833fc=_0x480a8e['@odata.type'][_0x7018('0x3f')](_0x480a8e['@odata.type'][_0x7018('0x40')]('.')+0x1);if(_0x5833fc===_0x7018('0x9d')||_0x5833fc==='DoubleAttributeMetadata'||_0x5833fc==='BigIntAttributeMetadata'||_0x5833fc===_0x7018('0x9e')||_0x5833fc==='MemoAttributeMetadata'||_0x5833fc===_0x7018('0x9f')||_0x5833fc===_0x7018('0xa0')||_0x5833fc===_0x7018('0xa1')||_0x5833fc===_0x7018('0xa2')||_0x5833fc===_0x7018('0xa3')){_0x2afd14[_0x7018('0x99')](getInputList(_0x4fa476,_0x512d63,_0x5833fc,_0x2e8e05,_0x238f39['MetadataId'],_0x480a8e['MetadataId'],_0x11cd54));}}});return Promise[_0x7018('0x9a')](_0x2afd14);})['then'](function(_0x4a2229){_0x48d982=_0x4a2229[0x0];var _0x1f25ce=_0x298c01['concat'](_0x4df0c1)['concat'](_0x48d982);var _0x175bd4={'count':_0x1f25ce[_0x7018('0x1f')],'rows':_0x1f25ce};return _0x175bd4;})[_0x7018('0xd')](respondWithResult(_0x4ba562,null))[_0x7018('0x2e')](function(_0x1d0f12){var _0x16d035=_0x4ca984[_0x7018('0x1a')]['test']?0x1f4:_0x1d0f12[_0x7018('0xa4')]||0x1f4;logger[_0x7018('0xa5')](_0x1d0f12[_0x7018('0x11')]);delete _0x1d0f12['name'];if(_0x16d035===0x191){_0x16d035=0x190;}_0x4ba562[_0x7018('0x9')](_0x16d035)[_0x7018('0x13')](_0x4ca984[_0x7018('0x1a')][_0x7018('0xa6')]?{'message':_0x7018('0xa7'),'statusCode':_0x1d0f12['statusCode']}:_0x1d0f12);});};function getSelectList(_0x339289,_0x15dedb,_0x2a059d,_0x31d18a,_0x1d81a4,_0x25f26c){var _0xa23a2={'method':_0x7018('0x8c'),'uri':_0x339289+_0x7018('0x92')+_0x31d18a+')/Attributes('+_0x1d81a4+_0x7018('0xa8')+_0x7018('0xa9'),'headers':{'Authorization':_0x7018('0x8e')+_0x25f26c,'If-None-Match':null,'OData-Version':_0x7018('0x8f')},'json':!![]};return rp(_0xa23a2)[_0x7018('0xd')](function(_0x72fcc4){var _0x2ea190=[];var _0xf9f04e=_0x72fcc4[_0x7018('0xaa')][_0x7018('0xab')];_0xf9f04e[_0x7018('0x97')](function(_0x481a33){_0x2ea190[_0x7018('0x99')]({'name':_0x481a33[_0x7018('0xac')][_0x7018('0xad')][_0x7018('0xac')],'value':String(_0x481a33[_0x7018('0xae')])});});var _0x26a1c2={'id':_0x15dedb+'_'+_0x72fcc4[_0x7018('0x96')],'name':_0x72fcc4['DisplayName'][_0x7018('0xad')][_0x7018('0xac')],'custom':![],'options':_0x2ea190};_0x2a059d[_0x7018('0x99')](_0x26a1c2);return _0x2a059d;});}function getBooleanList(_0x38a4ea,_0x23de16,_0x162306,_0x45109f,_0x2074d2,_0x330157){var _0x55f271={'method':_0x7018('0x8c'),'uri':_0x38a4ea+_0x7018('0x92')+_0x45109f+_0x7018('0xaf')+_0x2074d2+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':_0x7018('0x8e')+_0x330157,'If-None-Match':null,'OData-Version':_0x7018('0x8f')},'json':!![]};return rp(_0x55f271)[_0x7018('0xd')](function(_0x4c9476){var _0x3318a7=[];_0x3318a7[_0x7018('0x99')]({'name':_0x4c9476['OptionSet'][_0x7018('0xb0')]['Label'][_0x7018('0xad')][_0x7018('0xac')],'value':_0x7018('0xb1')},{'name':_0x4c9476['OptionSet']['FalseOption'][_0x7018('0xac')][_0x7018('0xad')][_0x7018('0xac')],'value':_0x7018('0xb2')});var _0x4c85a4={'id':_0x23de16+'_'+_0x4c9476[_0x7018('0x96')],'name':_0x4c9476['DisplayName'][_0x7018('0xad')]['Label'],'custom':![],'options':_0x3318a7};_0x162306[_0x7018('0x99')](_0x4c85a4);return _0x162306;});}function getInputList(_0xeb1345,_0x1777c0,_0x5df8a0,_0x4bc960,_0x3973a8,_0x42b35d,_0x3caeca){var _0x402630={'method':'GET','uri':_0xeb1345+'EntityDefinitions('+_0x3973a8+_0x7018('0xaf')+_0x42b35d+_0x7018('0xb3')+_0x5df8a0+'?$select=DisplayName,LogicalName','headers':{'Authorization':_0x7018('0x8e')+_0x3caeca,'If-None-Match':null,'OData-Version':_0x7018('0x8f')},'json':!![]};return rp(_0x402630)[_0x7018('0xd')](function(_0x144ff8){var _0x427125={'id':_0x1777c0+'_'+_0x144ff8[_0x7018('0x96')],'name':_0x144ff8[_0x7018('0xb4')][_0x7018('0xad')]?_0x144ff8[_0x7018('0xb4')][_0x7018('0xad')][_0x7018('0xac')]:_0x144ff8[_0x7018('0x96')],'custom':![],'options':[]};_0x4bc960['push'](_0x427125);return _0x4bc960;});}
\ No newline at end of file
+var _0xa61c=['POST','https://login.microsoftonline.com/','tenantId','/oauth2/token','clientSecret','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','4.0','Attributes','includes','LogicalName','forEach','@odata.type','PicklistAttributeMetadata','isNil','BooleanAttributeMetadata','push','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','DecimalAttributeMetadata','all','test','statusCode',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Label','Value','OptionSet','TrueOption','UserLocalizedLabel','FalseOption','false','DisplayName',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','util','lodash','../../components/parsers/qs','../../config/logger','api','../../mysqldb','../../components/integrations/configuration','status','json','undefined','count','offset','limit','set','destroy','then','end','sendStatus','error','stack','send','map','rawAttributes','fieldName','type','model','name','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','filter','VIRTUAL','merge','options','Dynamics365Account','findAll','rows','catch','show','params','keys','includeAll','include','find','create','body','update','findOne','Dynamics365Configuration','getConfigurations','AccountId','getSubjects','channel','getDescriptions','Dynamics365Field','Subjects','Descriptions','slice','substring','lastIndexOf','format','getFields','ticketType','Incident','PhoneCall','title','description','ownerid','caseorigincode','subject','phonenumber','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','billedserviceunits','contactidyominame','contractdetailidname','contractidname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entityimage_url','escalatedon','exchangerate','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridtype','parentcaseidname','prioritycodename','productidname','productserialnumber','resolveby','responseby','responsiblecontactidyominame','sentimentvalue','slaname','socialprofileidname','statecode','statuscode','ticketnumber','transactioncurrencyidname','traversedpath','versionnumber','concat','username','password','remoteUri','clientId','modernAuthentication','CloudProvider','data5','data7'];(function(_0x1fb6c9,_0x29e3ef){var _0x399d6b=function(_0x447cec){while(--_0x447cec){_0x1fb6c9['push'](_0x1fb6c9['shift']());}};_0x399d6b(++_0x29e3ef);}(_0xa61c,0x1ab));var _0xca61=function(_0x4fa54b,_0x29511c){_0x4fa54b=_0x4fa54b-0x0;var _0x47419e=_0xa61c[_0x4fa54b];return _0x47419e;};'use strict';var rp=require('request-promise');var util=require(_0xca61('0x0'));var _=require(_0xca61('0x1'));var qs=require(_0xca61('0x2'));var logger=require(_0xca61('0x3'))(_0xca61('0x4'));var db=require(_0xca61('0x5'))['db'];var integrations=require(_0xca61('0x6'));function respondWithResult(_0x157fcd,_0x2ba7df){_0x2ba7df=_0x2ba7df||0xc8;return function(_0x2332ae){if(_0x2332ae){return _0x157fcd[_0xca61('0x7')](_0x2ba7df)[_0xca61('0x8')](_0x2332ae);}};}function respondWithFilteredResult(_0x4f97b7,_0x1a85a0){return function(_0x2f52a0){if(_0x2f52a0){var _0x111c2e=typeof _0x1a85a0['offset']===_0xca61('0x9')&&typeof _0x1a85a0['limit']===_0xca61('0x9');var _0x20021c=_0x2f52a0[_0xca61('0xa')];var _0x279486=_0x111c2e?0x0:_0x1a85a0[_0xca61('0xb')];var _0x1eed36=_0x111c2e?_0x2f52a0[_0xca61('0xa')]:_0x1a85a0[_0xca61('0xb')]+_0x1a85a0[_0xca61('0xc')];var _0x1cf0b4;if(_0x1eed36>=_0x20021c){_0x1eed36=_0x20021c;_0x1cf0b4=0xc8;}else{_0x1cf0b4=0xce;}_0x4f97b7['status'](_0x1cf0b4);return _0x4f97b7[_0xca61('0xd')]('Content-Range',_0x279486+'-'+_0x1eed36+'/'+_0x20021c)[_0xca61('0x8')](_0x2f52a0);}return null;};}function saveUpdates(_0x61f9c0){return function(_0x2c15bf){if(_0x2c15bf){return _0x2c15bf['update'](_0x61f9c0)['then'](function(_0x446f65){return _0x446f65;});}return null;};}function removeEntity(_0x24885e){return function(_0x2a8424){if(_0x2a8424){return _0x2a8424[_0xca61('0xe')]()[_0xca61('0xf')](function(){_0x24885e['status'](0xcc)[_0xca61('0x10')]();});}};}function handleEntityNotFound(_0x12152f){return function(_0x2fa76c){if(!_0x2fa76c){_0x12152f[_0xca61('0x11')](0x194);}return _0x2fa76c;};}function handleError(_0x2fab2,_0xf3b6d0){_0xf3b6d0=_0xf3b6d0||0x1f4;return function(_0x35675d){logger[_0xca61('0x12')](_0x35675d[_0xca61('0x13')]);if(_0x35675d['name']){delete _0x35675d['name'];}_0x2fab2[_0xca61('0x7')](_0xf3b6d0)[_0xca61('0x14')](_0x35675d);};}exports['index']=function(_0x3d81cc,_0x599b32){var _0x2470c0={},_0x2761c6={},_0x249c08={'count':0x0,'rows':[]};var _0x29bfd1=_[_0xca61('0x15')](db['Dynamics365Account'][_0xca61('0x16')],function(_0x31d040){return{'name':_0x31d040[_0xca61('0x17')],'type':_0x31d040[_0xca61('0x18')]['key']};});_0x2761c6[_0xca61('0x19')]=_[_0xca61('0x15')](_0x29bfd1,_0xca61('0x1a'));_0x2761c6['query']=_['keys'](_0x3d81cc[_0xca61('0x1b')]);_0x2761c6[_0xca61('0x1c')]=_[_0xca61('0x1d')](_0x2761c6['model'],_0x2761c6['query']);_0x2470c0[_0xca61('0x1e')]=_[_0xca61('0x1d')](_0x2761c6[_0xca61('0x19')],qs[_0xca61('0x1f')](_0x3d81cc[_0xca61('0x1b')][_0xca61('0x1f')]));_0x2470c0[_0xca61('0x1e')]=_0x2470c0['attributes'][_0xca61('0x20')]?_0x2470c0[_0xca61('0x1e')]:_0x2761c6[_0xca61('0x19')];if(!_0x3d81cc[_0xca61('0x1b')][_0xca61('0x21')](_0xca61('0x22'))){_0x2470c0[_0xca61('0xc')]=qs['limit'](_0x3d81cc[_0xca61('0x1b')][_0xca61('0xc')]);_0x2470c0[_0xca61('0xb')]=qs[_0xca61('0xb')](_0x3d81cc['query']['offset']);}_0x2470c0[_0xca61('0x23')]=qs['sort'](_0x3d81cc[_0xca61('0x1b')]['sort']);_0x2470c0[_0xca61('0x24')]=qs['filters'](_['pick'](_0x3d81cc[_0xca61('0x1b')],_0x2761c6[_0xca61('0x1c')]),_0x29bfd1);if(_0x3d81cc[_0xca61('0x1b')][_0xca61('0x25')]){_0x2470c0[_0xca61('0x24')]=_['merge'](_0x2470c0[_0xca61('0x24')],{'$or':_[_0xca61('0x15')](_0x29bfd1,function(_0x240771){if(_0x240771['type']!==_0xca61('0x26')){var _0x3571e5={};_0x3571e5[_0x240771['name']]={'$like':'%'+_0x3d81cc[_0xca61('0x1b')][_0xca61('0x25')]+'%'};return _0x3571e5;}})});}_0x2470c0=_[_0xca61('0x27')]({},_0x2470c0,_0x3d81cc[_0xca61('0x28')]);var _0x4e57a7={'where':_0x2470c0[_0xca61('0x24')]};return db[_0xca61('0x29')][_0xca61('0xa')](_0x4e57a7)[_0xca61('0xf')](function(_0x2cb192){_0x249c08['count']=_0x2cb192;if(_0x3d81cc['query']['includeAll']){_0x2470c0['include']=[{'all':!![]}];}return db[_0xca61('0x29')][_0xca61('0x2a')](_0x2470c0);})[_0xca61('0xf')](function(_0x45905a){_0x249c08[_0xca61('0x2b')]=_0x45905a;return _0x249c08;})[_0xca61('0xf')](respondWithFilteredResult(_0x599b32,_0x2470c0))[_0xca61('0x2c')](handleError(_0x599b32,null));};exports[_0xca61('0x2d')]=function(_0x52b020,_0x5982a0){var _0x27be47={'raw':![],'where':{'id':_0x52b020[_0xca61('0x2e')]['id']}},_0xf2d44a={};_0xf2d44a['model']=_[_0xca61('0x2f')](db[_0xca61('0x29')][_0xca61('0x16')]);_0xf2d44a['query']=_[_0xca61('0x2f')](_0x52b020[_0xca61('0x1b')]);_0xf2d44a[_0xca61('0x1c')]=_['intersection'](_0xf2d44a[_0xca61('0x19')],_0xf2d44a[_0xca61('0x1b')]);_0x27be47[_0xca61('0x1e')]=_[_0xca61('0x1d')](_0xf2d44a['model'],qs[_0xca61('0x1f')](_0x52b020[_0xca61('0x1b')][_0xca61('0x1f')]));_0x27be47[_0xca61('0x1e')]=_0x27be47['attributes'][_0xca61('0x20')]?_0x27be47['attributes']:_0xf2d44a[_0xca61('0x19')];if(_0x52b020[_0xca61('0x1b')][_0xca61('0x30')]){_0x27be47[_0xca61('0x31')]=[{'all':!![]}];}_0x27be47=_[_0xca61('0x27')]({},_0x27be47,_0x52b020[_0xca61('0x28')]);return db['Dynamics365Account'][_0xca61('0x32')](_0x27be47)[_0xca61('0xf')](handleEntityNotFound(_0x5982a0,null))[_0xca61('0xf')](respondWithResult(_0x5982a0,null))[_0xca61('0x2c')](handleError(_0x5982a0,null));};exports[_0xca61('0x33')]=function(_0x36fb6f,_0x4d726b){return db['Dynamics365Account'][_0xca61('0x33')](_0x36fb6f[_0xca61('0x34')],{})[_0xca61('0xf')](respondWithResult(_0x4d726b,0xc9))[_0xca61('0x2c')](handleError(_0x4d726b,null));};exports[_0xca61('0x35')]=function(_0x507583,_0x106579){if(_0x507583[_0xca61('0x34')]['id']){delete _0x507583[_0xca61('0x34')]['id'];}return db['Dynamics365Account'][_0xca61('0x32')]({'where':{'id':_0x507583[_0xca61('0x2e')]['id']}})[_0xca61('0xf')](handleEntityNotFound(_0x106579,null))['then'](saveUpdates(_0x507583[_0xca61('0x34')],null))['then'](respondWithResult(_0x106579,null))['catch'](handleError(_0x106579,null));};exports['destroy']=function(_0x2893b5,_0x31dff0){return db[_0xca61('0x29')][_0xca61('0x32')]({'where':{'id':_0x2893b5['params']['id']}})[_0xca61('0xf')](handleEntityNotFound(_0x31dff0,null))['then'](removeEntity(_0x31dff0,null))[_0xca61('0x2c')](handleError(_0x31dff0,null));};exports['getConfigurations']=function(_0x9e7e22,_0x1b2a11){var _0x6fb327={};var _0x438271={};var _0x406d30;var _0x4384a6;return db[_0xca61('0x29')][_0xca61('0x36')]({'where':{'id':_0x9e7e22[_0xca61('0x2e')]['id']}})['then'](handleEntityNotFound(_0x1b2a11,null))[_0xca61('0xf')](function(_0x31030d){if(_0x31030d){_0x406d30=_0x31030d;_0x438271['model']=_[_0xca61('0x2f')](db[_0xca61('0x37')][_0xca61('0x16')]);_0x438271[_0xca61('0x1b')]=_['keys'](_0x9e7e22[_0xca61('0x1b')]);_0x438271[_0xca61('0x1c')]=_[_0xca61('0x1d')](_0x438271['model'],_0x438271[_0xca61('0x1b')]);_0x6fb327['attributes']=_[_0xca61('0x1d')](_0x438271[_0xca61('0x19')],qs[_0xca61('0x1f')](_0x9e7e22[_0xca61('0x1b')][_0xca61('0x1f')]));_0x6fb327[_0xca61('0x1e')]=_0x6fb327[_0xca61('0x1e')][_0xca61('0x20')]?_0x6fb327[_0xca61('0x1e')]:_0x438271[_0xca61('0x19')];_0x6fb327['order']=qs['sort'](_0x9e7e22[_0xca61('0x1b')]['sort']);_0x6fb327[_0xca61('0x24')]=qs[_0xca61('0x1c')](_['pick'](_0x9e7e22['query'],_0x438271[_0xca61('0x1c')]));if(_0x9e7e22['query'][_0xca61('0x25')]){_0x6fb327[_0xca61('0x24')]=_['merge'](_0x6fb327[_0xca61('0x24')],{'$or':_[_0xca61('0x15')](_0x6fb327[_0xca61('0x1e')],function(_0x1fc16e){var _0x22600a={};_0x22600a[_0x1fc16e]={'$like':'%'+_0x9e7e22[_0xca61('0x1b')]['filter']+'%'};return _0x22600a;})});}_0x6fb327=_[_0xca61('0x27')]({},_0x6fb327,_0x9e7e22[_0xca61('0x28')]);return _0x406d30['getConfigurations'](_0x6fb327);}})[_0xca61('0xf')](function(_0x5448ed){if(_0x5448ed){_0x4384a6=_0x5448ed[_0xca61('0x20')];if(!_0x9e7e22[_0xca61('0x1b')][_0xca61('0x21')](_0xca61('0x22'))){_0x6fb327[_0xca61('0xc')]=qs[_0xca61('0xc')](_0x9e7e22['query'][_0xca61('0xc')]);_0x6fb327[_0xca61('0xb')]=qs['offset'](_0x9e7e22[_0xca61('0x1b')][_0xca61('0xb')]);}return _0x406d30[_0xca61('0x38')](_0x6fb327);}})[_0xca61('0xf')](function(_0x5b6605){if(_0x5b6605){return _0x5b6605?{'count':_0x4384a6,'rows':_0x5b6605}:null;}})['then'](respondWithResult(_0x1b2a11,null))[_0xca61('0x2c')](handleError(_0x1b2a11,null));};exports['addConfiguration']=function(_0x374fb1,_0x72acfa){if(_0x374fb1['body']['id']){delete _0x374fb1['body']['id'];}return db[_0xca61('0x29')][_0xca61('0x36')]({'where':{'id':_0x374fb1[_0xca61('0x2e')]['id']}})['then'](handleEntityNotFound(_0x72acfa,null))[_0xca61('0xf')](function(_0x5c2776){if(_0x5c2776){_0x374fb1[_0xca61('0x34')][_0xca61('0x39')]=_0x5c2776['id'];_0x374fb1[_0xca61('0x34')]['Subjects']=integrations[_0xca61('0x3a')](_0x374fb1[_0xca61('0x34')][_0xca61('0x3b')],_0x374fb1['body']['type']);_0x374fb1['body']['Descriptions']=integrations[_0xca61('0x3c')](_0x374fb1[_0xca61('0x34')][_0xca61('0x3b')],_0x374fb1[_0xca61('0x34')][_0xca61('0x18')]);return db[_0xca61('0x37')][_0xca61('0x33')](_0x374fb1[_0xca61('0x34')],{'include':[{'model':db[_0xca61('0x3d')],'as':_0xca61('0x3e')},{'model':db['Dynamics365Field'],'as':_0xca61('0x3f')}]});}return null;})[_0xca61('0xf')](respondWithResult(_0x72acfa,null))[_0xca61('0x2c')](handleError(_0x72acfa,null));};function sanitizeRemoteUri(_0x5dbc87){var _0x106568=_0x5dbc87[_0xca61('0x40')](-0x1);if(_0x106568==='/')return _0x5dbc87[_0xca61('0x41')](0x0,_0x5dbc87[_0xca61('0x42')](_0x106568));return _0x5dbc87;}function getWebApiUrl(_0x5cf1fd){return util[_0xca61('0x43')]('%s/api/data/v9.0/',_0x5cf1fd);}exports[_0xca61('0x44')]=function(_0x582d10,_0x1dfbb3){var _0x5ea963=_0x582d10[_0xca61('0x1b')][_0xca61('0x45')];var _0x353974=_0x5ea963==='incident'?_0xca61('0x46'):_0xca61('0x47');var _0x3ea842='';var _0x4205e0='';var _0x278e41='';var _0x31322f='';var _0x1c0ec5='';var _0x4c4cc4='';var _0x3b6f63='';var _0x207656='';var _0x566440=[_0xca61('0x48'),_0xca61('0x49'),'customerid',_0xca61('0x4a'),_0xca61('0x4b'),_0xca61('0x4c'),_0xca61('0x4d'),_0xca61('0x4e'),_0xca61('0x4f'),_0xca61('0x50')];var _0x10478f=[_0xca61('0x51'),_0xca61('0x52'),'actualserviceunits',_0xca61('0x53'),'contactidname',_0xca61('0x54'),_0xca61('0x55'),_0xca61('0x56'),'createdbyexternalpartyname',_0xca61('0x57'),_0xca61('0x58'),_0xca61('0x59'),_0xca61('0x5a'),_0xca61('0x5b'),_0xca61('0x5c'),_0xca61('0x5d'),_0xca61('0x5e'),_0xca61('0x5f'),_0xca61('0x60'),'entitlementidname','entityimage_timestamp',_0xca61('0x61'),_0xca61('0x62'),_0xca61('0x63'),'firstresponsebykpiidname',_0xca61('0x64'),_0xca61('0x65'),_0xca61('0x66'),_0xca61('0x67'),_0xca61('0x68'),_0xca61('0x69'),_0xca61('0x6a'),_0xca61('0x6b'),'modifiedbyname','modifiedbyyominame',_0xca61('0x6c'),_0xca61('0x6d'),_0xca61('0x6e'),_0xca61('0x6f'),_0xca61('0x70'),_0xca61('0x71'),_0xca61('0x72'),_0xca61('0x73'),_0xca61('0x74'),_0xca61('0x75'),'owneridyominame',_0xca61('0x76'),'primarycontactidname','primarycontactidyominame',_0xca61('0x77'),_0xca61('0x78'),_0xca61('0x79'),_0xca61('0x7a'),'resolvebykpiidname',_0xca61('0x7b'),'responsiblecontactidname',_0xca61('0x7c'),_0xca61('0x7d'),'slainvokedidname',_0xca61('0x7e'),_0xca61('0x7f'),_0xca61('0x80'),_0xca61('0x81'),'subjectidname',_0xca61('0x82'),'timezoneruleversionnumber',_0xca61('0x83'),_0xca61('0x84'),'utcconversiontimezonecode',_0xca61('0x85')];var _0x1467fa=_0x566440[_0xca61('0x86')](_0x10478f);return db[_0xca61('0x29')][_0xca61('0x36')]({'where':{'id':_0x582d10[_0xca61('0x2e')]['id']},'attributes':['id',_0xca61('0x87'),_0xca61('0x88'),_0xca61('0x89'),'tenantId',_0xca61('0x8a'),'clientSecret',_0xca61('0x8b')],'include':[{'model':db[_0xca61('0x8c')],'as':'CloudProvider','attributes':['id',_0xca61('0x8d'),_0xca61('0x8e')]}]})['then'](handleEntityNotFound(_0x1dfbb3,null))[_0xca61('0xf')](function(_0x34ed0a){if(_0x34ed0a){if(_0x34ed0a[_0xca61('0x8b')]){_0x34ed0a['access_token']=_0x34ed0a[_0xca61('0x8c')][_0xca61('0x8d')];_0x207656=sanitizeRemoteUri(_0x34ed0a[_0xca61('0x8c')][_0xca61('0x8e')]);_0x3b6f63=getWebApiUrl(_0x207656);return _0x34ed0a;}_0x207656=sanitizeRemoteUri(_0x34ed0a[_0xca61('0x89')]);_0x3b6f63=getWebApiUrl(_0x207656);var _0x536152={'method':_0xca61('0x8f'),'uri':_0xca61('0x90')+_0x34ed0a[_0xca61('0x91')]+_0xca61('0x92'),'form':{'client_id':_0x34ed0a[_0xca61('0x8a')],'resource':_0x207656,'username':_0x34ed0a['username'],'password':_0x34ed0a[_0xca61('0x88')],'grant_type':_0xca61('0x88'),'client_secret':_0x34ed0a[_0xca61('0x93')]},'json':!![]};return rp(_0x536152);}})[_0xca61('0xf')](function(_0x15c099){_0x4c4cc4=_0x15c099['access_token'];var _0xd82f2c={'method':_0xca61('0x94'),'uri':encodeURI(_0x3b6f63+_0xca61('0x95')+_0x353974+'\x27'),'headers':{'Authorization':_0xca61('0x96')+_0x4c4cc4,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0xd82f2c);})[_0xca61('0xf')](function(_0x185cbb){var _0x3bfa36=_0x185cbb[_0xca61('0x97')][0x0];var _0x3a68c0=_0x3bfa36[_0xca61('0x98')];var _0x2f862d={'method':'GET','uri':_0x3b6f63+_0xca61('0x99')+_0x3a68c0+_0xca61('0x9a'),'headers':{'Authorization':'Bearer\x20'+_0x4c4cc4,'If-None-Match':null,'OData-Version':_0xca61('0x9b')},'json':!![]};return rp(_0x2f862d);})[_0xca61('0xf')](function(_0x5c5ed3){_0x3ea842=_0x5c5ed3;_0x4205e0=_0x3ea842[_0xca61('0x9c')];_0x4205e0=_['remove'](_0x4205e0,function(_0x448553){return!_0x1467fa[_0xca61('0x9d')](_0x448553[_0xca61('0x9e')]);});var _0x50a050=[];var _0x4f1bc5=[];_0x4205e0[_0xca61('0x9f')](function(_0x165d1f){if(_0x165d1f[_0xca61('0xa0')]){var _0x556c99=_0x165d1f['@odata.type']['substring'](_0x165d1f[_0xca61('0xa0')][_0xca61('0x42')]('.')+0x1);if(_0x556c99===_0xca61('0xa1')){_0x50a050['push'](getSelectList(_0x3b6f63,_0x5ea963,_0x4f1bc5,_0x3ea842[_0xca61('0x98')],_0x165d1f[_0xca61('0x98')],_0x4c4cc4));}}});return Promise['all'](_0x50a050);})[_0xca61('0xf')](function(_0x47cd40){_0x278e41=_0x47cd40[0x0];var _0x1392f5=[];var _0x5027eb=[];_0x4205e0['forEach'](function(_0x300011){if(!_[_0xca61('0xa2')](_0x300011[_0xca61('0xa0')])){var _0x4afd21=_0x300011[_0xca61('0xa0')][_0xca61('0x41')](_0x300011[_0xca61('0xa0')]['lastIndexOf']('.')+0x1);if(_0x4afd21===_0xca61('0xa3')){_0x1392f5[_0xca61('0xa4')](getBooleanList(_0x3b6f63,_0x5ea963,_0x5027eb,_0x3ea842[_0xca61('0x98')],_0x300011[_0xca61('0x98')],_0x4c4cc4));}}});return Promise['all'](_0x1392f5);})[_0xca61('0xf')](function(_0x2d1eb6){_0x31322f=_0x2d1eb6[0x0];var _0x5c9b72=[];var _0x233251=[];_0x4205e0[_0xca61('0x9f')](function(_0x713eae){if(_0x713eae[_0xca61('0xa0')]){var _0x39b71e=_0x713eae['@odata.type'][_0xca61('0x41')](_0x713eae[_0xca61('0xa0')][_0xca61('0x42')]('.')+0x1);if(_0x39b71e===_0xca61('0xa5')||_0x39b71e===_0xca61('0xa6')||_0x39b71e===_0xca61('0xa7')||_0x39b71e===_0xca61('0xa8')||_0x39b71e===_0xca61('0xa9')||_0x39b71e===_0xca61('0xaa')||_0x39b71e===_0xca61('0xab')||_0x39b71e===_0xca61('0xac')||_0x39b71e==='StateAttributeMetadata'||_0x39b71e===_0xca61('0xad')){_0x5c9b72[_0xca61('0xa4')](getInputList(_0x3b6f63,_0x5ea963,_0x39b71e,_0x233251,_0x3ea842[_0xca61('0x98')],_0x713eae[_0xca61('0x98')],_0x4c4cc4));}}});return Promise[_0xca61('0xae')](_0x5c9b72);})[_0xca61('0xf')](function(_0x39fad0){_0x1c0ec5=_0x39fad0[0x0];var _0x4877c6=_0x278e41['concat'](_0x31322f)[_0xca61('0x86')](_0x1c0ec5);var _0xd02d79={'count':_0x4877c6[_0xca61('0x20')],'rows':_0x4877c6};return _0xd02d79;})['then'](respondWithResult(_0x1dfbb3,null))['catch'](function(_0x3973a2){var _0x464b10=_0x582d10[_0xca61('0x1b')][_0xca61('0xaf')]?0x1f4:_0x3973a2[_0xca61('0xb0')]||0x1f4;logger[_0xca61('0x12')](_0x3973a2[_0xca61('0x13')]);delete _0x3973a2[_0xca61('0x1a')];if(_0x464b10===0x191){_0x464b10=0x190;}_0x1dfbb3[_0xca61('0x7')](_0x464b10)[_0xca61('0x14')](_0x582d10['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x3973a2[_0xca61('0xb0')]}:_0x3973a2);});};function getSelectList(_0x2c96b9,_0x4ab0c5,_0x17acf9,_0x582c51,_0x5e8384,_0x67c324){var _0x1cd9cb={'method':_0xca61('0x94'),'uri':_0x2c96b9+_0xca61('0x99')+_0x582c51+_0xca61('0xb1')+_0x5e8384+_0xca61('0xb2')+_0xca61('0xb3'),'headers':{'Authorization':_0xca61('0x96')+_0x67c324,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x1cd9cb)[_0xca61('0xf')](function(_0x332f39){var _0xbffc7b=[];var _0x1d1776=_0x332f39['OptionSet']['Options'];_0x1d1776[_0xca61('0x9f')](function(_0xb2e7e5){_0xbffc7b['push']({'name':_0xb2e7e5[_0xca61('0xb4')]['UserLocalizedLabel'][_0xca61('0xb4')],'value':String(_0xb2e7e5[_0xca61('0xb5')])});});var _0x245798={'id':_0x4ab0c5+'_'+_0x332f39[_0xca61('0x9e')],'name':_0x332f39['DisplayName']['UserLocalizedLabel']['Label'],'custom':![],'options':_0xbffc7b};_0x17acf9['push'](_0x245798);return _0x17acf9;});}function getBooleanList(_0x1f288b,_0x46f219,_0x4bd1cd,_0x23d6fa,_0x273f85,_0x167102){var _0x1cdd56={'method':_0xca61('0x94'),'uri':_0x1f288b+'EntityDefinitions('+_0x23d6fa+_0xca61('0xb1')+_0x273f85+')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','headers':{'Authorization':_0xca61('0x96')+_0x167102,'If-None-Match':null,'OData-Version':_0xca61('0x9b')},'json':!![]};return rp(_0x1cdd56)[_0xca61('0xf')](function(_0x303bc2){var _0x5a8055=[];_0x5a8055[_0xca61('0xa4')]({'name':_0x303bc2[_0xca61('0xb6')][_0xca61('0xb7')][_0xca61('0xb4')][_0xca61('0xb8')]['Label'],'value':'true'},{'name':_0x303bc2[_0xca61('0xb6')][_0xca61('0xb9')]['Label'][_0xca61('0xb8')]['Label'],'value':_0xca61('0xba')});var _0x1728f8={'id':_0x46f219+'_'+_0x303bc2[_0xca61('0x9e')],'name':_0x303bc2[_0xca61('0xbb')][_0xca61('0xb8')][_0xca61('0xb4')],'custom':![],'options':_0x5a8055};_0x4bd1cd[_0xca61('0xa4')](_0x1728f8);return _0x4bd1cd;});}function getInputList(_0x1b338c,_0x19cca1,_0x14ea33,_0x9e255b,_0x12f63b,_0x451aef,_0x458f96){var _0x8af7d5={'method':_0xca61('0x94'),'uri':_0x1b338c+_0xca61('0x99')+_0x12f63b+_0xca61('0xb1')+_0x451aef+_0xca61('0xbc')+_0x14ea33+_0xca61('0xbd'),'headers':{'Authorization':_0xca61('0x96')+_0x458f96,'If-None-Match':null,'OData-Version':_0xca61('0x9b')},'json':!![]};return rp(_0x8af7d5)[_0xca61('0xf')](function(_0x4c47d5){var _0x552b3d={'id':_0x19cca1+'_'+_0x4c47d5[_0xca61('0x9e')],'name':_0x4c47d5[_0xca61('0xbb')][_0xca61('0xb8')]?_0x4c47d5[_0xca61('0xbb')][_0xca61('0xb8')][_0xca61('0xb4')]:_0x4c47d5['LogicalName'],'custom':![],'options':[]};_0x9e255b[_0xca61('0xa4')](_0x552b3d);return _0x9e255b;});}
\ No newline at end of file
index fd2bd21..bc60a8e 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(_0x5a42d0,_0x5ba5ea){var _0x548d61=function(_0x41a35c){while(--_0x41a35c){_0x5a42d0['push'](_0x5a42d0['shift']());}};_0x548d61(++_0x5ba5ea);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'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(_0xd319ad,_0x452a11){var _0x3ac337=function(_0x356a33){while(--_0x356a33){_0xd319ad['push'](_0xd319ad['shift']());}};_0x3ac337(++_0x452a11);}(_0xe706,0xa3));var _0x6e70=function(_0x680b65,_0x5b2e9c){_0x680b65=_0x680b65-0x0;var _0x1c2053=_0xe706[_0x680b65];return _0x1c2053;};'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 198df92..c68755f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5fd=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Dynamics365Account,\x20%s,\x20%s','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','stringify','error','message','info','request\x20sent','result','catch','GetDynamics365Account','findAll','options','raw','where','limit','include','map','model','attributes','ShowDynamics365Account','Dynamics365Account','find','moment','bluebird','randomstring','ioredis'];(function(_0x9fd887,_0x47f76c){var _0x1a54ab=function(_0xb65c08){while(--_0xb65c08){_0x9fd887['push'](_0x9fd887['shift']());}};_0x1a54ab(++_0x47f76c);}(_0xc5fd,0xf8));var _0xdc5f=function(_0x547ff4,_0x416fa1){_0x547ff4=_0x547ff4-0x0;var _0xe41057=_0xc5fd[_0x547ff4];return _0xe41057;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xdc5f('0x0'));var BPromise=require(_0xdc5f('0x1'));var rs=require(_0xdc5f('0x2'));var fs=require('fs');var Redis=require(_0xdc5f('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xdc5f('0x4'));var logger=require(_0xdc5f('0x5'))(_0xdc5f('0x6'));var config=require(_0xdc5f('0x7'));var jayson=require(_0xdc5f('0x8'));var client=jayson[_0xdc5f('0x9')][_0xdc5f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5aa0d5,_0x52ba0a,_0x1d7157){return new BPromise(function(_0x4983fe,_0xeec91c){return client[_0xdc5f('0xb')](_0x5aa0d5,_0x1d7157)[_0xdc5f('0xc')](function(_0x48ec32){logger['info'](_0xdc5f('0xd'),_0x52ba0a,'request\x20sent');logger[_0xdc5f('0xe')](_0xdc5f('0xf'),_0x52ba0a,'request\x20sent',JSON[_0xdc5f('0x10')](_0x48ec32));if(_0x48ec32['error']){if(_0x48ec32[_0xdc5f('0x11')]['code']===0x1f4){logger[_0xdc5f('0x11')](_0xdc5f('0xd'),_0x52ba0a,_0x48ec32[_0xdc5f('0x11')][_0xdc5f('0x12')]);return _0xeec91c(_0x48ec32[_0xdc5f('0x11')][_0xdc5f('0x12')]);}logger[_0xdc5f('0x11')](_0xdc5f('0xd'),_0x52ba0a,_0x48ec32[_0xdc5f('0x11')]['message']);return _0x4983fe(_0x48ec32['error'][_0xdc5f('0x12')]);}else{logger[_0xdc5f('0x13')](_0xdc5f('0xd'),_0x52ba0a,_0xdc5f('0x14'));_0x4983fe(_0x48ec32[_0xdc5f('0x15')][_0xdc5f('0x12')]);}})[_0xdc5f('0x16')](function(_0x2b4dca){logger['error']('Dynamics365Account,\x20%s,\x20%s',_0x52ba0a,_0x2b4dca);_0xeec91c(_0x2b4dca);});});}exports[_0xdc5f('0x17')]=function(_0xe985a4){var _0x5271df=this;return new Promise(function(_0x142f6f,_0x528a17){return db['Dynamics365Account'][_0xdc5f('0x18')]({'raw':_0xe985a4[_0xdc5f('0x19')]?_0xe985a4[_0xdc5f('0x19')][_0xdc5f('0x1a')]===undefined?!![]:![]:!![],'where':_0xe985a4[_0xdc5f('0x19')]?_0xe985a4['options'][_0xdc5f('0x1b')]||null:null,'attributes':_0xe985a4['options']?_0xe985a4[_0xdc5f('0x19')]['attributes']||null:null,'limit':_0xe985a4[_0xdc5f('0x19')]?_0xe985a4['options'][_0xdc5f('0x1c')]||null:null,'include':_0xe985a4[_0xdc5f('0x19')]?_0xe985a4[_0xdc5f('0x19')]['include']?_['map'](_0xe985a4['options'][_0xdc5f('0x1d')],function(_0x132773){return{'model':db[_0x132773['model']],'as':_0x132773['as'],'attributes':_0x132773['attributes'],'include':_0x132773[_0xdc5f('0x1d')]?_[_0xdc5f('0x1e')](_0x132773[_0xdc5f('0x1d')],function(_0x18ba19){return{'model':db[_0x18ba19[_0xdc5f('0x1f')]],'as':_0x18ba19['as'],'attributes':_0x18ba19[_0xdc5f('0x20')],'include':_0x18ba19[_0xdc5f('0x1d')]?_[_0xdc5f('0x1e')](_0x18ba19[_0xdc5f('0x1d')],function(_0x56eece){return{'model':db[_0x56eece[_0xdc5f('0x1f')]],'as':_0x56eece['as'],'attributes':_0x56eece['attributes']};}):[]};}):[]};}):[]:[]})[_0xdc5f('0xc')](function(_0x45a254){logger[_0xdc5f('0x13')](_0xdc5f('0x17'),_0xe985a4);logger[_0xdc5f('0xe')]('GetDynamics365Account',_0xe985a4,JSON['stringify'](_0x45a254));_0x142f6f(_0x45a254);})[_0xdc5f('0x16')](function(_0x2eb886){logger[_0xdc5f('0x11')]('GetDynamics365Account',_0x2eb886[_0xdc5f('0x12')],_0xe985a4);_0x528a17(_0x5271df[_0xdc5f('0x11')](0x1f4,_0x2eb886[_0xdc5f('0x12')]));});});};exports[_0xdc5f('0x21')]=function(_0x5bb531){var _0xf68c34=this;return new Promise(function(_0x1cb85d,_0x25af80){return db[_0xdc5f('0x22')][_0xdc5f('0x23')]({'raw':_0x5bb531['options']?_0x5bb531[_0xdc5f('0x19')][_0xdc5f('0x1a')]===undefined?!![]:![]:!![],'where':_0x5bb531['options']?_0x5bb531[_0xdc5f('0x19')][_0xdc5f('0x1b')]||null:null,'attributes':_0x5bb531[_0xdc5f('0x19')]?_0x5bb531[_0xdc5f('0x19')][_0xdc5f('0x20')]||null:null,'include':_0x5bb531[_0xdc5f('0x19')]?_0x5bb531[_0xdc5f('0x19')]['include']?_['map'](_0x5bb531[_0xdc5f('0x19')][_0xdc5f('0x1d')],function(_0x3617e6){return{'model':db[_0x3617e6['model']],'as':_0x3617e6['as'],'attributes':_0x3617e6[_0xdc5f('0x20')],'include':_0x3617e6['include']?_[_0xdc5f('0x1e')](_0x3617e6[_0xdc5f('0x1d')],function(_0x200d75){return{'model':db[_0x200d75['model']],'as':_0x200d75['as'],'attributes':_0x200d75[_0xdc5f('0x20')],'include':_0x200d75['include']?_[_0xdc5f('0x1e')](_0x200d75[_0xdc5f('0x1d')],function(_0x5101ea){return{'model':db[_0x5101ea[_0xdc5f('0x1f')]],'as':_0x5101ea['as'],'attributes':_0x5101ea[_0xdc5f('0x20')]};}):[]};}):[]};}):[]:[]})[_0xdc5f('0xc')](function(_0x1f5034){logger[_0xdc5f('0x13')](_0xdc5f('0x21'),_0x5bb531);logger[_0xdc5f('0xe')](_0xdc5f('0x21'),_0x5bb531,JSON['stringify'](_0x1f5034));_0x1cb85d(_0x1f5034);})[_0xdc5f('0x16')](function(_0x2be90b){logger[_0xdc5f('0x11')](_0xdc5f('0x21'),_0x2be90b[_0xdc5f('0x12')],_0x5bb531);_0x25af80(_0xf68c34[_0xdc5f('0x11')](0x1f4,_0x2be90b[_0xdc5f('0x12')]));});});};
\ No newline at end of file
+var _0x73d7=['util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Account,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','attributes','limit','map','model','include','find','ShowDynamics365Account'];(function(_0x25f847,_0x21a961){var _0x11d8e2=function(_0x52bcb6){while(--_0x52bcb6){_0x25f847['push'](_0x25f847['shift']());}};_0x11d8e2(++_0x21a961);}(_0x73d7,0x120));var _0x773d=function(_0x528efa,_0x3b9498){_0x528efa=_0x528efa-0x0;var _0x1f6322=_0x73d7[_0x528efa];return _0x1f6322;};'use strict';var _=require('lodash');var util=require(_0x773d('0x0'));var moment=require(_0x773d('0x1'));var BPromise=require('bluebird');var rs=require(_0x773d('0x2'));var fs=require('fs');var Redis=require(_0x773d('0x3'));var db=require(_0x773d('0x4'))['db'];var utils=require(_0x773d('0x5'));var logger=require('../../config/logger')(_0x773d('0x6'));var config=require(_0x773d('0x7'));var jayson=require(_0x773d('0x8'));var client=jayson[_0x773d('0x9')][_0x773d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x17d259,_0x44a7e0,_0x1cbfb7){return new BPromise(function(_0xc3f74c,_0x54f566){return client[_0x773d('0xb')](_0x17d259,_0x1cbfb7)[_0x773d('0xc')](function(_0x4d51b6){logger[_0x773d('0xd')](_0x773d('0xe'),_0x44a7e0,'request\x20sent');logger[_0x773d('0xf')]('Dynamics365Account,\x20%s,\x20%s,\x20%s',_0x44a7e0,_0x773d('0x10'),JSON[_0x773d('0x11')](_0x4d51b6));if(_0x4d51b6['error']){if(_0x4d51b6[_0x773d('0x12')][_0x773d('0x13')]===0x1f4){logger[_0x773d('0x12')]('Dynamics365Account,\x20%s,\x20%s',_0x44a7e0,_0x4d51b6[_0x773d('0x12')][_0x773d('0x14')]);return _0x54f566(_0x4d51b6[_0x773d('0x12')]['message']);}logger[_0x773d('0x12')](_0x773d('0xe'),_0x44a7e0,_0x4d51b6['error'][_0x773d('0x14')]);return _0xc3f74c(_0x4d51b6['error'][_0x773d('0x14')]);}else{logger['info']('Dynamics365Account,\x20%s,\x20%s',_0x44a7e0,_0x773d('0x10'));_0xc3f74c(_0x4d51b6[_0x773d('0x15')]['message']);}})[_0x773d('0x16')](function(_0x2cfca0){logger[_0x773d('0x12')](_0x773d('0xe'),_0x44a7e0,_0x2cfca0);_0x54f566(_0x2cfca0);});});}exports[_0x773d('0x17')]=function(_0x30119f){var _0x182baa=this;return new Promise(function(_0x439e1a,_0x1c951a){return db[_0x773d('0x18')][_0x773d('0x19')]({'raw':_0x30119f['options']?_0x30119f[_0x773d('0x1a')][_0x773d('0x1b')]===undefined?!![]:![]:!![],'where':_0x30119f['options']?_0x30119f[_0x773d('0x1a')][_0x773d('0x1c')]||null:null,'attributes':_0x30119f['options']?_0x30119f[_0x773d('0x1a')][_0x773d('0x1d')]||null:null,'limit':_0x30119f[_0x773d('0x1a')]?_0x30119f['options'][_0x773d('0x1e')]||null:null,'include':_0x30119f[_0x773d('0x1a')]?_0x30119f[_0x773d('0x1a')]['include']?_[_0x773d('0x1f')](_0x30119f[_0x773d('0x1a')]['include'],function(_0x9f0140){return{'model':db[_0x9f0140[_0x773d('0x20')]],'as':_0x9f0140['as'],'attributes':_0x9f0140[_0x773d('0x1d')],'include':_0x9f0140['include']?_[_0x773d('0x1f')](_0x9f0140[_0x773d('0x21')],function(_0x4d4f54){return{'model':db[_0x4d4f54[_0x773d('0x20')]],'as':_0x4d4f54['as'],'attributes':_0x4d4f54[_0x773d('0x1d')],'include':_0x4d4f54['include']?_[_0x773d('0x1f')](_0x4d4f54[_0x773d('0x21')],function(_0x2d56c5){return{'model':db[_0x2d56c5[_0x773d('0x20')]],'as':_0x2d56c5['as'],'attributes':_0x2d56c5[_0x773d('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5e0179){logger[_0x773d('0xd')](_0x773d('0x17'),_0x30119f);logger[_0x773d('0xf')](_0x773d('0x17'),_0x30119f,JSON[_0x773d('0x11')](_0x5e0179));_0x439e1a(_0x5e0179);})[_0x773d('0x16')](function(_0x1c5d6c){logger['error'](_0x773d('0x17'),_0x1c5d6c[_0x773d('0x14')],_0x30119f);_0x1c951a(_0x182baa[_0x773d('0x12')](0x1f4,_0x1c5d6c['message']));});});};exports['ShowDynamics365Account']=function(_0x76dfda){var _0x5319c3=this;return new Promise(function(_0x55defa,_0x2a32ae){return db[_0x773d('0x18')][_0x773d('0x22')]({'raw':_0x76dfda[_0x773d('0x1a')]?_0x76dfda['options']['raw']===undefined?!![]:![]:!![],'where':_0x76dfda[_0x773d('0x1a')]?_0x76dfda[_0x773d('0x1a')][_0x773d('0x1c')]||null:null,'attributes':_0x76dfda[_0x773d('0x1a')]?_0x76dfda['options']['attributes']||null:null,'include':_0x76dfda[_0x773d('0x1a')]?_0x76dfda['options'][_0x773d('0x21')]?_['map'](_0x76dfda['options'][_0x773d('0x21')],function(_0x4c8e5c){return{'model':db[_0x4c8e5c[_0x773d('0x20')]],'as':_0x4c8e5c['as'],'attributes':_0x4c8e5c[_0x773d('0x1d')],'include':_0x4c8e5c[_0x773d('0x21')]?_['map'](_0x4c8e5c[_0x773d('0x21')],function(_0x5d52dc){return{'model':db[_0x5d52dc[_0x773d('0x20')]],'as':_0x5d52dc['as'],'attributes':_0x5d52dc['attributes'],'include':_0x5d52dc[_0x773d('0x21')]?_['map'](_0x5d52dc['include'],function(_0x42a438){return{'model':db[_0x42a438['model']],'as':_0x42a438['as'],'attributes':_0x42a438[_0x773d('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x773d('0xc')](function(_0x236688){logger['info'](_0x773d('0x23'),_0x76dfda);logger[_0x773d('0xf')](_0x773d('0x23'),_0x76dfda,JSON[_0x773d('0x11')](_0x236688));_0x55defa(_0x236688);})['catch'](function(_0x4f5a38){logger[_0x773d('0x12')]('ShowDynamics365Account',_0x4f5a38[_0x773d('0x14')],_0x76dfda);_0x2a32ae(_0x5319c3['error'](0x1f4,_0x4f5a38[_0x773d('0x14')]));});});};
\ No newline at end of file
index d1bed0d..a33d689 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeca8=['./intDynamics365Configuration.controller','get','index','/:id','isAuthenticated','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment'];(function(_0x5e9018,_0x5d3a28){var _0x2062e2=function(_0x4aa0d8){while(--_0x4aa0d8){_0x5e9018['push'](_0x5e9018['shift']());}};_0x2062e2(++_0x5d3a28);}(_0xeca8,0x1f2));var _0x8eca=function(_0x2566b4,_0x54a177){_0x2566b4=_0x2566b4-0x0;var _0x200c45=_0xeca8[_0x2566b4];return _0x200c45;};'use strict';var multer=require(_0x8eca('0x0'));var util=require(_0x8eca('0x1'));var path=require(_0x8eca('0x2'));var timeout=require(_0x8eca('0x3'));var express=require(_0x8eca('0x4'));var router=express[_0x8eca('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x8eca('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8eca('0x7'));var controller=require(_0x8eca('0x8'));router[_0x8eca('0x9')]('/',auth['isAuthenticated'](),controller[_0x8eca('0xa')]);router[_0x8eca('0x9')](_0x8eca('0xb'),auth[_0x8eca('0xc')](),controller[_0x8eca('0xd')]);router[_0x8eca('0x9')]('/:id/fields',auth[_0x8eca('0xc')](),controller[_0x8eca('0xe')]);router[_0x8eca('0x9')](_0x8eca('0xf'),auth[_0x8eca('0xc')](),controller[_0x8eca('0x10')]);router[_0x8eca('0x9')](_0x8eca('0x11'),auth[_0x8eca('0xc')](),controller[_0x8eca('0x12')]);router['post']('/',auth[_0x8eca('0xc')](),controller['create']);router[_0x8eca('0x13')](_0x8eca('0xb'),auth['isAuthenticated'](),controller[_0x8eca('0x14')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x8eca('0x15')]);module[_0x8eca('0x16')]=router;
\ No newline at end of file
+var _0xfbf7=['../../components/auth/service','../../components/interaction/service','./intDynamics365Configuration.controller','get','isAuthenticated','index','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','create','/:id','delete','destroy','exports','util','path','express','Router','fs-extra'];(function(_0x15a301,_0x2e3a4d){var _0x3e7ad3=function(_0x5b78d9){while(--_0x5b78d9){_0x15a301['push'](_0x15a301['shift']());}};_0x3e7ad3(++_0x2e3a4d);}(_0xfbf7,0x14b));var _0x7fbf=function(_0x22def6,_0x2c4546){_0x22def6=_0x22def6-0x0;var _0x2c83f5=_0xfbf7[_0x22def6];return _0x2c83f5;};'use strict';var multer=require('multer');var util=require(_0x7fbf('0x0'));var path=require(_0x7fbf('0x1'));var timeout=require('connect-timeout');var express=require(_0x7fbf('0x2'));var router=express[_0x7fbf('0x3')]();var fs_extra=require(_0x7fbf('0x4'));var auth=require(_0x7fbf('0x5'));var interaction=require(_0x7fbf('0x6'));var config=require('../../config/environment');var controller=require(_0x7fbf('0x7'));router[_0x7fbf('0x8')]('/',auth[_0x7fbf('0x9')](),controller[_0x7fbf('0xa')]);router[_0x7fbf('0x8')]('/:id',auth[_0x7fbf('0x9')](),controller['show']);router[_0x7fbf('0x8')](_0x7fbf('0xb'),auth[_0x7fbf('0x9')](),controller[_0x7fbf('0xc')]);router['get'](_0x7fbf('0xd'),auth[_0x7fbf('0x9')](),controller[_0x7fbf('0xe')]);router[_0x7fbf('0x8')](_0x7fbf('0xf'),auth[_0x7fbf('0x9')](),controller['getDescriptions']);router['post']('/',auth[_0x7fbf('0x9')](),controller[_0x7fbf('0x10')]);router['put'](_0x7fbf('0x11'),auth[_0x7fbf('0x9')](),controller['update']);router[_0x7fbf('0x12')](_0x7fbf('0x11'),auth[_0x7fbf('0x9')](),controller[_0x7fbf('0x13')]);module[_0x7fbf('0x14')]=router;
\ No newline at end of file
index f5f3fac..9efed08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b10=['STRING','ENUM','phonecall','incident','contact','nothing','sequelize','exports'];(function(_0x20bca4,_0x30d106){var _0x47b397=function(_0x366632){while(--_0x366632){_0x20bca4['push'](_0x20bca4['shift']());}};_0x47b397(++_0x30d106);}(_0x0b10,0x1d6));var _0x00b1=function(_0xddb2f9,_0x2bdca1){_0xddb2f9=_0xddb2f9-0x0;var _0x2180bc=_0x0b10[_0xddb2f9];return _0x2180bc;};'use strict';var Sequelize=require(_0x00b1('0x0'));module[_0x00b1('0x1')]={'name':{'type':Sequelize[_0x00b1('0x2')]},'description':{'type':Sequelize[_0x00b1('0x2')]},'ticketType':{'type':Sequelize[_0x00b1('0x3')]('incident',_0x00b1('0x4')),'defaultValue':_0x00b1('0x5')},'moduleCreate':{'type':Sequelize[_0x00b1('0x3')](_0x00b1('0x6'),_0x00b1('0x7')),'defaultValue':_0x00b1('0x6'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0x4c41=['STRING','ENUM','incident','phonecall','contact','sequelize'];(function(_0x352b44,_0x4a91a1){var _0x3e8baa=function(_0xed4bc3){while(--_0xed4bc3){_0x352b44['push'](_0x352b44['shift']());}};_0x3e8baa(++_0x4a91a1);}(_0x4c41,0x9b));var _0x14c4=function(_0x5c65d9,_0x5004f0){_0x5c65d9=_0x5c65d9-0x0;var _0x1c22d7=_0x4c41[_0x5c65d9];return _0x1c22d7;};'use strict';var Sequelize=require(_0x14c4('0x0'));module['exports']={'name':{'type':Sequelize[_0x14c4('0x1')]},'description':{'type':Sequelize[_0x14c4('0x1')]},'ticketType':{'type':Sequelize[_0x14c4('0x2')](_0x14c4('0x3'),_0x14c4('0x4')),'defaultValue':'incident'},'moduleCreate':{'type':Sequelize[_0x14c4('0x2')](_0x14c4('0x5'),'nothing'),'defaultValue':_0x14c4('0x5'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0x14c4('0x1')],'allowNull':!![]}};
\ No newline at end of file
index bb2453c..eefaeb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b06=['ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','limit','undefined','count','Content-Range','apply','update','then','sendStatus','error','stack','send','index','map','fieldName','type','key','name','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','merge','VIRTUAL','Dynamics365Configuration','includeAll','include','findAll','rows','catch','params','rawAttributes','options','find','create','body','destroy','getFields','findOne','Dynamics365Field','nolimit','getSubjects','filter','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv'];(function(_0x31a727,_0x57aad2){var _0x537e91=function(_0x5ecfb5){while(--_0x5ecfb5){_0x31a727['push'](_0x31a727['shift']());}};_0x537e91(++_0x57aad2);}(_0x6b06,0x18a));var _0x66b0=function(_0x20d389,_0x4b7640){_0x20d389=_0x20d389-0x0;var _0x53a957=_0x6b06[_0x20d389];return _0x53a957;};'use strict';var emlformat=require(_0x66b0('0x0'));var rimraf=require(_0x66b0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x66b0('0x2'));var rp=require(_0x66b0('0x3'));var moment=require(_0x66b0('0x4'));var BPromise=require(_0x66b0('0x5'));var Mustache=require(_0x66b0('0x6'));var util=require(_0x66b0('0x7'));var path=require(_0x66b0('0x8'));var sox=require(_0x66b0('0x9'));var csv=require(_0x66b0('0xa'));var ejs=require(_0x66b0('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x66b0('0xc'));var squel=require(_0x66b0('0xd'));var crypto=require(_0x66b0('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x66b0('0xf'));var toCsv=require('to-csv');var querystring=require(_0x66b0('0x10'));var Papa=require('papaparse');var Redis=require(_0x66b0('0x11'));var authService=require(_0x66b0('0x12'));var qs=require(_0x66b0('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x66b0('0x14'));var logger=require(_0x66b0('0x15'))('api');var utils=require(_0x66b0('0x16'));var config=require(_0x66b0('0x17'));var licenseUtil=require(_0x66b0('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x26ba37,_0x596b98){_0x596b98=_0x596b98||0xcc;return function(_0x488b68){if(_0x488b68){return _0x26ba37['sendStatus'](_0x596b98);}return _0x26ba37[_0x66b0('0x19')](_0x596b98)[_0x66b0('0x1a')]();};}function respondWithResult(_0x5d107d,_0x456db1){_0x456db1=_0x456db1||0xc8;return function(_0x269f65){if(_0x269f65){return _0x5d107d[_0x66b0('0x19')](_0x456db1)[_0x66b0('0x1b')](_0x269f65);}};}function respondWithFilteredResult(_0x42a1c2,_0x2a35ae){return function(_0x40f393){if(_0x40f393){var _0x4a66c9=typeof _0x2a35ae[_0x66b0('0x1c')]==='undefined'&&typeof _0x2a35ae[_0x66b0('0x1d')]===_0x66b0('0x1e');var _0x4539eb=_0x40f393[_0x66b0('0x1f')];var _0x1d5e44=_0x4a66c9?0x0:_0x2a35ae['offset'];var _0x35c97a=_0x4a66c9?_0x40f393[_0x66b0('0x1f')]:_0x2a35ae[_0x66b0('0x1c')]+_0x2a35ae[_0x66b0('0x1d')];var _0xb95b28;if(_0x35c97a>=_0x4539eb){_0x35c97a=_0x4539eb;_0xb95b28=0xc8;}else{_0xb95b28=0xce;}_0x42a1c2[_0x66b0('0x19')](_0xb95b28);return _0x42a1c2['set'](_0x66b0('0x20'),_0x1d5e44+'-'+_0x35c97a+'/'+_0x4539eb)[_0x66b0('0x1b')](_0x40f393);}return null;};}function patchUpdates(_0x383594){return function(_0x3f2c65){try{jsonpatch[_0x66b0('0x21')](_0x3f2c65,_0x383594,!![]);}catch(_0x11700a){return BPromise['reject'](_0x11700a);}return _0x3f2c65['save']();};}function saveUpdates(_0x52f0d0,_0x8557c9){return function(_0x5d3292){if(_0x5d3292){return _0x5d3292[_0x66b0('0x22')](_0x52f0d0)[_0x66b0('0x23')](function(_0x1c46f4){return _0x1c46f4;});}return null;};}function removeEntity(_0x3b4ec7,_0x1300e){return function(_0x48aefc){if(_0x48aefc){return _0x48aefc['destroy']()[_0x66b0('0x23')](function(){_0x3b4ec7[_0x66b0('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2586d5,_0x1be8b6){return function(_0x4255d4){if(!_0x4255d4){_0x2586d5[_0x66b0('0x24')](0x194);}return _0x4255d4;};}function handleError(_0xd4858c,_0x306fbb){_0x306fbb=_0x306fbb||0x1f4;return function(_0x51c024){logger[_0x66b0('0x25')](_0x51c024[_0x66b0('0x26')]);if(_0x51c024['name']){delete _0x51c024['name'];}_0xd4858c[_0x66b0('0x19')](_0x306fbb)[_0x66b0('0x27')](_0x51c024);};}exports[_0x66b0('0x28')]=function(_0x7c086f,_0x1b2655){var _0xa455={},_0x22a9c2={},_0x4829df={'count':0x0,'rows':[]};var _0x2930b8=_[_0x66b0('0x29')](db['Dynamics365Configuration']['rawAttributes'],function(_0x17e25c){return{'name':_0x17e25c[_0x66b0('0x2a')],'type':_0x17e25c[_0x66b0('0x2b')][_0x66b0('0x2c')]};});_0x22a9c2['model']=_[_0x66b0('0x29')](_0x2930b8,_0x66b0('0x2d'));_0x22a9c2[_0x66b0('0x2e')]=_[_0x66b0('0x2f')](_0x7c086f[_0x66b0('0x2e')]);_0x22a9c2['filters']=_[_0x66b0('0x30')](_0x22a9c2[_0x66b0('0x31')],_0x22a9c2[_0x66b0('0x2e')]);_0xa455[_0x66b0('0x32')]=_[_0x66b0('0x30')](_0x22a9c2[_0x66b0('0x31')],qs[_0x66b0('0x33')](_0x7c086f['query'][_0x66b0('0x33')]));_0xa455[_0x66b0('0x32')]=_0xa455['attributes'][_0x66b0('0x34')]?_0xa455[_0x66b0('0x32')]:_0x22a9c2['model'];if(!_0x7c086f[_0x66b0('0x2e')][_0x66b0('0x35')]('nolimit')){_0xa455[_0x66b0('0x1d')]=qs[_0x66b0('0x1d')](_0x7c086f['query'][_0x66b0('0x1d')]);_0xa455[_0x66b0('0x1c')]=qs[_0x66b0('0x1c')](_0x7c086f[_0x66b0('0x2e')]['offset']);}_0xa455[_0x66b0('0x36')]=qs[_0x66b0('0x37')](_0x7c086f['query'][_0x66b0('0x37')]);_0xa455[_0x66b0('0x38')]=qs[_0x66b0('0x39')](_[_0x66b0('0x3a')](_0x7c086f[_0x66b0('0x2e')],_0x22a9c2['filters']),_0x2930b8);if(_0x7c086f[_0x66b0('0x2e')]['filter']){_0xa455[_0x66b0('0x38')]=_[_0x66b0('0x3b')](_0xa455[_0x66b0('0x38')],{'$or':_[_0x66b0('0x29')](_0x2930b8,function(_0x29b4bd){if(_0x29b4bd[_0x66b0('0x2b')]!==_0x66b0('0x3c')){var _0x3df49a={};_0x3df49a[_0x29b4bd[_0x66b0('0x2d')]]={'$like':'%'+_0x7c086f[_0x66b0('0x2e')]['filter']+'%'};return _0x3df49a;}})});}_0xa455=_[_0x66b0('0x3b')]({},_0xa455,_0x7c086f['options']);var _0x3efa3f={'where':_0xa455[_0x66b0('0x38')]};return db[_0x66b0('0x3d')][_0x66b0('0x1f')](_0x3efa3f)[_0x66b0('0x23')](function(_0xa5092b){_0x4829df[_0x66b0('0x1f')]=_0xa5092b;if(_0x7c086f[_0x66b0('0x2e')][_0x66b0('0x3e')]){_0xa455[_0x66b0('0x3f')]=[{'all':!![]}];}return db[_0x66b0('0x3d')][_0x66b0('0x40')](_0xa455);})['then'](function(_0xc53d91){_0x4829df[_0x66b0('0x41')]=_0xc53d91;return _0x4829df;})[_0x66b0('0x23')](respondWithFilteredResult(_0x1b2655,_0xa455))[_0x66b0('0x42')](handleError(_0x1b2655,null));};exports['show']=function(_0x4eb0ba,_0x9b3b42){var _0x568925={'raw':![],'where':{'id':_0x4eb0ba[_0x66b0('0x43')]['id']}},_0x69ac42={};_0x69ac42[_0x66b0('0x31')]=_[_0x66b0('0x2f')](db[_0x66b0('0x3d')][_0x66b0('0x44')]);_0x69ac42['query']=_[_0x66b0('0x2f')](_0x4eb0ba['query']);_0x69ac42[_0x66b0('0x39')]=_[_0x66b0('0x30')](_0x69ac42[_0x66b0('0x31')],_0x69ac42[_0x66b0('0x2e')]);_0x568925[_0x66b0('0x32')]=_[_0x66b0('0x30')](_0x69ac42['model'],qs['fields'](_0x4eb0ba[_0x66b0('0x2e')][_0x66b0('0x33')]));_0x568925[_0x66b0('0x32')]=_0x568925[_0x66b0('0x32')]['length']?_0x568925['attributes']:_0x69ac42[_0x66b0('0x31')];if(_0x4eb0ba[_0x66b0('0x2e')][_0x66b0('0x3e')]){_0x568925['include']=[{'all':!![]}];}_0x568925=_[_0x66b0('0x3b')]({},_0x568925,_0x4eb0ba[_0x66b0('0x45')]);return db['Dynamics365Configuration'][_0x66b0('0x46')](_0x568925)[_0x66b0('0x23')](handleEntityNotFound(_0x9b3b42,null))[_0x66b0('0x23')](respondWithResult(_0x9b3b42,null))[_0x66b0('0x42')](handleError(_0x9b3b42,null));};exports[_0x66b0('0x47')]=function(_0x3d1595,_0x2d9cd4){return db[_0x66b0('0x3d')][_0x66b0('0x47')](_0x3d1595[_0x66b0('0x48')],{})[_0x66b0('0x23')](respondWithResult(_0x2d9cd4,0xc9))[_0x66b0('0x42')](handleError(_0x2d9cd4,null));};exports[_0x66b0('0x22')]=function(_0x291720,_0x8c3d6e){if(_0x291720['body']['id']){delete _0x291720['body']['id'];}return db['Dynamics365Configuration'][_0x66b0('0x46')]({'where':{'id':_0x291720['params']['id']}})[_0x66b0('0x23')](handleEntityNotFound(_0x8c3d6e,null))['then'](saveUpdates(_0x291720[_0x66b0('0x48')],null))[_0x66b0('0x23')](respondWithResult(_0x8c3d6e,null))[_0x66b0('0x42')](handleError(_0x8c3d6e,null));};exports[_0x66b0('0x49')]=function(_0x8025e7,_0x563874){return db[_0x66b0('0x3d')]['find']({'where':{'id':_0x8025e7[_0x66b0('0x43')]['id']}})[_0x66b0('0x23')](handleEntityNotFound(_0x563874,null))[_0x66b0('0x23')](removeEntity(_0x563874,null))[_0x66b0('0x42')](handleError(_0x563874,null));};exports[_0x66b0('0x4a')]=function(_0x31762a,_0x326ccd,_0x186783){var _0x3b2277={};var _0x16eb68={};var _0x17478d;var _0x52204e;return db[_0x66b0('0x3d')][_0x66b0('0x4b')]({'where':{'id':_0x31762a[_0x66b0('0x43')]['id']}})['then'](handleEntityNotFound(_0x326ccd,null))[_0x66b0('0x23')](function(_0x27c8f8){if(_0x27c8f8){_0x17478d=_0x27c8f8;_0x16eb68[_0x66b0('0x31')]=_[_0x66b0('0x2f')](db[_0x66b0('0x4c')][_0x66b0('0x44')]);_0x16eb68['query']=_[_0x66b0('0x2f')](_0x31762a[_0x66b0('0x2e')]);_0x16eb68[_0x66b0('0x39')]=_[_0x66b0('0x30')](_0x16eb68[_0x66b0('0x31')],_0x16eb68[_0x66b0('0x2e')]);_0x3b2277[_0x66b0('0x32')]=_[_0x66b0('0x30')](_0x16eb68[_0x66b0('0x31')],qs[_0x66b0('0x33')](_0x31762a['query'][_0x66b0('0x33')]));_0x3b2277[_0x66b0('0x32')]=_0x3b2277[_0x66b0('0x32')][_0x66b0('0x34')]?_0x3b2277['attributes']:_0x16eb68['model'];_0x3b2277[_0x66b0('0x36')]=qs[_0x66b0('0x37')](_0x31762a[_0x66b0('0x2e')][_0x66b0('0x37')]);_0x3b2277[_0x66b0('0x38')]=qs[_0x66b0('0x39')](_['pick'](_0x31762a[_0x66b0('0x2e')],_0x16eb68[_0x66b0('0x39')]));if(_0x31762a[_0x66b0('0x2e')]['filter']){_0x3b2277['where']=_[_0x66b0('0x3b')](_0x3b2277[_0x66b0('0x38')],{'$or':_[_0x66b0('0x29')](_0x3b2277['attributes'],function(_0x13241a){var _0x40ef48={};_0x40ef48[_0x13241a]={'$like':'%'+_0x31762a[_0x66b0('0x2e')]['filter']+'%'};return _0x40ef48;})});}_0x3b2277=_[_0x66b0('0x3b')]({},_0x3b2277,_0x31762a[_0x66b0('0x45')]);return _0x17478d[_0x66b0('0x4a')](_0x3b2277);}})[_0x66b0('0x23')](function(_0x232767){if(_0x232767){_0x52204e=_0x232767['length'];if(!_0x31762a[_0x66b0('0x2e')][_0x66b0('0x35')](_0x66b0('0x4d'))){_0x3b2277[_0x66b0('0x1d')]=qs[_0x66b0('0x1d')](_0x31762a[_0x66b0('0x2e')]['limit']);_0x3b2277[_0x66b0('0x1c')]=qs['offset'](_0x31762a[_0x66b0('0x2e')]['offset']);}return _0x17478d[_0x66b0('0x4a')](_0x3b2277);}})[_0x66b0('0x23')](function(_0x5a1317){if(_0x5a1317){return _0x5a1317?{'count':_0x52204e,'rows':_0x5a1317}:null;}})['then'](respondWithResult(_0x326ccd,null))[_0x66b0('0x42')](handleError(_0x326ccd,null));};exports[_0x66b0('0x4e')]=function(_0x1f80fb,_0x4378ea,_0x2f07ff){var _0x1ecbc1={};var _0x1f5584={};var _0x424965;var _0x269078;return db[_0x66b0('0x3d')][_0x66b0('0x4b')]({'where':{'id':_0x1f80fb[_0x66b0('0x43')]['id']}})[_0x66b0('0x23')](handleEntityNotFound(_0x4378ea,null))[_0x66b0('0x23')](function(_0x2f3832){if(_0x2f3832){_0x424965=_0x2f3832;_0x1f5584[_0x66b0('0x31')]=_[_0x66b0('0x2f')](db[_0x66b0('0x4c')][_0x66b0('0x44')]);_0x1f5584[_0x66b0('0x2e')]=_[_0x66b0('0x2f')](_0x1f80fb['query']);_0x1f5584[_0x66b0('0x39')]=_[_0x66b0('0x30')](_0x1f5584[_0x66b0('0x31')],_0x1f5584[_0x66b0('0x2e')]);_0x1ecbc1[_0x66b0('0x32')]=_[_0x66b0('0x30')](_0x1f5584[_0x66b0('0x31')],qs[_0x66b0('0x33')](_0x1f80fb[_0x66b0('0x2e')][_0x66b0('0x33')]));_0x1ecbc1[_0x66b0('0x32')]=_0x1ecbc1[_0x66b0('0x32')][_0x66b0('0x34')]?_0x1ecbc1['attributes']:_0x1f5584['model'];_0x1ecbc1['order']=qs[_0x66b0('0x37')](_0x1f80fb['query']['sort']);_0x1ecbc1[_0x66b0('0x38')]=qs[_0x66b0('0x39')](_[_0x66b0('0x3a')](_0x1f80fb[_0x66b0('0x2e')],_0x1f5584['filters']));if(_0x1f80fb[_0x66b0('0x2e')][_0x66b0('0x4f')]){_0x1ecbc1['where']=_['merge'](_0x1ecbc1[_0x66b0('0x38')],{'$or':_[_0x66b0('0x29')](_0x1ecbc1['attributes'],function(_0x50767c){var _0x331b16={};_0x331b16[_0x50767c]={'$like':'%'+_0x1f80fb[_0x66b0('0x2e')][_0x66b0('0x4f')]+'%'};return _0x331b16;})});}_0x1ecbc1=_[_0x66b0('0x3b')]({},_0x1ecbc1,_0x1f80fb[_0x66b0('0x45')]);return _0x424965[_0x66b0('0x4e')](_0x1ecbc1);}})[_0x66b0('0x23')](function(_0x3d3cd9){if(_0x3d3cd9){_0x269078=_0x3d3cd9[_0x66b0('0x34')];if(!_0x1f80fb[_0x66b0('0x2e')][_0x66b0('0x35')]('nolimit')){_0x1ecbc1[_0x66b0('0x1d')]=qs[_0x66b0('0x1d')](_0x1f80fb['query'][_0x66b0('0x1d')]);_0x1ecbc1[_0x66b0('0x1c')]=qs[_0x66b0('0x1c')](_0x1f80fb['query'][_0x66b0('0x1c')]);}return _0x424965[_0x66b0('0x4e')](_0x1ecbc1);}})[_0x66b0('0x23')](function(_0x384160){if(_0x384160){return _0x384160?{'count':_0x269078,'rows':_0x384160}:null;}})[_0x66b0('0x23')](respondWithResult(_0x4378ea,null))['catch'](handleError(_0x4378ea,null));};exports[_0x66b0('0x50')]=function(_0x4df341,_0x14f76c,_0x2dd75c){var _0x2422b2={};var _0x4eb739={};var _0x20b1a2;var _0x1ea465;return db[_0x66b0('0x3d')][_0x66b0('0x4b')]({'where':{'id':_0x4df341[_0x66b0('0x43')]['id']}})['then'](handleEntityNotFound(_0x14f76c,null))[_0x66b0('0x23')](function(_0x1212fb){if(_0x1212fb){_0x20b1a2=_0x1212fb;_0x4eb739['model']=_[_0x66b0('0x2f')](db['Dynamics365Field']['rawAttributes']);_0x4eb739[_0x66b0('0x2e')]=_[_0x66b0('0x2f')](_0x4df341[_0x66b0('0x2e')]);_0x4eb739[_0x66b0('0x39')]=_[_0x66b0('0x30')](_0x4eb739[_0x66b0('0x31')],_0x4eb739['query']);_0x2422b2[_0x66b0('0x32')]=_[_0x66b0('0x30')](_0x4eb739[_0x66b0('0x31')],qs[_0x66b0('0x33')](_0x4df341[_0x66b0('0x2e')][_0x66b0('0x33')]));_0x2422b2['attributes']=_0x2422b2[_0x66b0('0x32')][_0x66b0('0x34')]?_0x2422b2[_0x66b0('0x32')]:_0x4eb739[_0x66b0('0x31')];_0x2422b2['order']=qs['sort'](_0x4df341[_0x66b0('0x2e')][_0x66b0('0x37')]);_0x2422b2[_0x66b0('0x38')]=qs[_0x66b0('0x39')](_[_0x66b0('0x3a')](_0x4df341[_0x66b0('0x2e')],_0x4eb739[_0x66b0('0x39')]));if(_0x4df341[_0x66b0('0x2e')][_0x66b0('0x4f')]){_0x2422b2[_0x66b0('0x38')]=_[_0x66b0('0x3b')](_0x2422b2['where'],{'$or':_[_0x66b0('0x29')](_0x2422b2[_0x66b0('0x32')],function(_0x28aeda){var _0x5ba269={};_0x5ba269[_0x28aeda]={'$like':'%'+_0x4df341[_0x66b0('0x2e')]['filter']+'%'};return _0x5ba269;})});}_0x2422b2=_['merge']({},_0x2422b2,_0x4df341[_0x66b0('0x45')]);return _0x20b1a2['getDescriptions'](_0x2422b2);}})['then'](function(_0x4cd532){if(_0x4cd532){_0x1ea465=_0x4cd532[_0x66b0('0x34')];if(!_0x4df341[_0x66b0('0x2e')][_0x66b0('0x35')](_0x66b0('0x4d'))){_0x2422b2[_0x66b0('0x1d')]=qs[_0x66b0('0x1d')](_0x4df341[_0x66b0('0x2e')][_0x66b0('0x1d')]);_0x2422b2['offset']=qs['offset'](_0x4df341[_0x66b0('0x2e')][_0x66b0('0x1c')]);}return _0x20b1a2[_0x66b0('0x50')](_0x2422b2);}})[_0x66b0('0x23')](function(_0x1c2558){if(_0x1c2558){return _0x1c2558?{'count':_0x1ea465,'rows':_0x1c2558}:null;}})['then'](respondWithResult(_0x14f76c,null))['catch'](handleError(_0x14f76c,null));};
\ No newline at end of file
+var _0x1c2e=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','set','Content-Range','apply','save','then','destroy','name','index','Dynamics365Configuration','rawAttributes','type','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','merge','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','update','getFields','findOne','Dynamics365Field','pick','getSubjects','getDescriptions','eml-format','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis'];(function(_0x209680,_0x5ac80c){var _0x212de3=function(_0x260765){while(--_0x260765){_0x209680['push'](_0x209680['shift']());}};_0x212de3(++_0x5ac80c);}(_0x1c2e,0x1b3));var _0xe1c2=function(_0x11995a,_0x1373de){_0x11995a=_0x11995a-0x0;var _0x3d6af0=_0x1c2e[_0x11995a];return _0x3d6af0;};'use strict';var emlformat=require(_0xe1c2('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xe1c2('0x1'));var BPromise=require(_0xe1c2('0x2'));var Mustache=require(_0xe1c2('0x3'));var util=require(_0xe1c2('0x4'));var path=require(_0xe1c2('0x5'));var sox=require(_0xe1c2('0x6'));var csv=require(_0xe1c2('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe1c2('0x8'));var _=require('lodash');var squel=require(_0xe1c2('0x9'));var crypto=require(_0xe1c2('0xa'));var jsforce=require(_0xe1c2('0xb'));var deskjs=require(_0xe1c2('0xc'));var toCsv=require(_0xe1c2('0x7'));var querystring=require(_0xe1c2('0xd'));var Papa=require('papaparse');var Redis=require(_0xe1c2('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xe1c2('0xf'));var as=require(_0xe1c2('0x10'));var hardwareService=require(_0xe1c2('0x11'));var logger=require('../../config/logger')(_0xe1c2('0x12'));var utils=require(_0xe1c2('0x13'));var config=require(_0xe1c2('0x14'));var licenseUtil=require(_0xe1c2('0x15'));var db=require(_0xe1c2('0x16'))['db'];function respondWithStatusCode(_0x2e7363,_0x563755){_0x563755=_0x563755||0xcc;return function(_0x526331){if(_0x526331){return _0x2e7363[_0xe1c2('0x17')](_0x563755);}return _0x2e7363[_0xe1c2('0x18')](_0x563755)[_0xe1c2('0x19')]();};}function respondWithResult(_0x1be7c0,_0xda22dc){_0xda22dc=_0xda22dc||0xc8;return function(_0x19c29d){if(_0x19c29d){return _0x1be7c0['status'](_0xda22dc)['json'](_0x19c29d);}};}function respondWithFilteredResult(_0xade7a7,_0x206656){return function(_0x2769a0){if(_0x2769a0){var _0x3bb8f3=typeof _0x206656[_0xe1c2('0x1a')]==='undefined'&&typeof _0x206656['limit']===_0xe1c2('0x1b');var _0x1bd605=_0x2769a0[_0xe1c2('0x1c')];var _0x263347=_0x3bb8f3?0x0:_0x206656[_0xe1c2('0x1a')];var _0x3a6568=_0x3bb8f3?_0x2769a0[_0xe1c2('0x1c')]:_0x206656['offset']+_0x206656['limit'];var _0x19a545;if(_0x3a6568>=_0x1bd605){_0x3a6568=_0x1bd605;_0x19a545=0xc8;}else{_0x19a545=0xce;}_0xade7a7[_0xe1c2('0x18')](_0x19a545);return _0xade7a7[_0xe1c2('0x1d')](_0xe1c2('0x1e'),_0x263347+'-'+_0x3a6568+'/'+_0x1bd605)['json'](_0x2769a0);}return null;};}function patchUpdates(_0x135ced){return function(_0x2e58ed){try{jsonpatch[_0xe1c2('0x1f')](_0x2e58ed,_0x135ced,!![]);}catch(_0x331e95){return BPromise['reject'](_0x331e95);}return _0x2e58ed[_0xe1c2('0x20')]();};}function saveUpdates(_0x1ebb9c,_0x51652f){return function(_0x3d12fd){if(_0x3d12fd){return _0x3d12fd['update'](_0x1ebb9c)[_0xe1c2('0x21')](function(_0x1fd6f5){return _0x1fd6f5;});}return null;};}function removeEntity(_0x5b7628,_0x36024c){return function(_0x374fc5){if(_0x374fc5){return _0x374fc5[_0xe1c2('0x22')]()[_0xe1c2('0x21')](function(){_0x5b7628[_0xe1c2('0x18')](0xcc)[_0xe1c2('0x19')]();});}};}function handleEntityNotFound(_0x16722f,_0x2ace9a){return function(_0x39e768){if(!_0x39e768){_0x16722f['sendStatus'](0x194);}return _0x39e768;};}function handleError(_0x8ccbac,_0x4f94a4){_0x4f94a4=_0x4f94a4||0x1f4;return function(_0x4645e3){logger['error'](_0x4645e3['stack']);if(_0x4645e3[_0xe1c2('0x23')]){delete _0x4645e3[_0xe1c2('0x23')];}_0x8ccbac[_0xe1c2('0x18')](_0x4f94a4)['send'](_0x4645e3);};}exports[_0xe1c2('0x24')]=function(_0x22cb2b,_0x27d0b5){var _0x2c5992={},_0x24be17={},_0x2c813b={'count':0x0,'rows':[]};var _0x270db1=_['map'](db[_0xe1c2('0x25')][_0xe1c2('0x26')],function(_0x5d489f){return{'name':_0x5d489f['fieldName'],'type':_0x5d489f[_0xe1c2('0x27')]['key']};});_0x24be17[_0xe1c2('0x28')]=_[_0xe1c2('0x29')](_0x270db1,_0xe1c2('0x23'));_0x24be17[_0xe1c2('0x2a')]=_['keys'](_0x22cb2b['query']);_0x24be17[_0xe1c2('0x2b')]=_[_0xe1c2('0x2c')](_0x24be17[_0xe1c2('0x28')],_0x24be17[_0xe1c2('0x2a')]);_0x2c5992[_0xe1c2('0x2d')]=_[_0xe1c2('0x2c')](_0x24be17[_0xe1c2('0x28')],qs[_0xe1c2('0x2e')](_0x22cb2b[_0xe1c2('0x2a')][_0xe1c2('0x2e')]));_0x2c5992[_0xe1c2('0x2d')]=_0x2c5992[_0xe1c2('0x2d')][_0xe1c2('0x2f')]?_0x2c5992[_0xe1c2('0x2d')]:_0x24be17['model'];if(!_0x22cb2b[_0xe1c2('0x2a')][_0xe1c2('0x30')](_0xe1c2('0x31'))){_0x2c5992[_0xe1c2('0x32')]=qs[_0xe1c2('0x32')](_0x22cb2b['query'][_0xe1c2('0x32')]);_0x2c5992['offset']=qs[_0xe1c2('0x1a')](_0x22cb2b[_0xe1c2('0x2a')][_0xe1c2('0x1a')]);}_0x2c5992[_0xe1c2('0x33')]=qs['sort'](_0x22cb2b[_0xe1c2('0x2a')][_0xe1c2('0x34')]);_0x2c5992[_0xe1c2('0x35')]=qs[_0xe1c2('0x2b')](_['pick'](_0x22cb2b[_0xe1c2('0x2a')],_0x24be17[_0xe1c2('0x2b')]),_0x270db1);if(_0x22cb2b[_0xe1c2('0x2a')]['filter']){_0x2c5992[_0xe1c2('0x35')]=_[_0xe1c2('0x36')](_0x2c5992['where'],{'$or':_[_0xe1c2('0x29')](_0x270db1,function(_0x357d14){if(_0x357d14[_0xe1c2('0x27')]!=='VIRTUAL'){var _0x495851={};_0x495851[_0x357d14[_0xe1c2('0x23')]]={'$like':'%'+_0x22cb2b['query'][_0xe1c2('0x37')]+'%'};return _0x495851;}})});}_0x2c5992=_['merge']({},_0x2c5992,_0x22cb2b[_0xe1c2('0x38')]);var _0x4eb2e1={'where':_0x2c5992[_0xe1c2('0x35')]};return db[_0xe1c2('0x25')][_0xe1c2('0x1c')](_0x4eb2e1)['then'](function(_0x17d8ca){_0x2c813b[_0xe1c2('0x1c')]=_0x17d8ca;if(_0x22cb2b['query'][_0xe1c2('0x39')]){_0x2c5992[_0xe1c2('0x3a')]=[{'all':!![]}];}return db[_0xe1c2('0x25')][_0xe1c2('0x3b')](_0x2c5992);})[_0xe1c2('0x21')](function(_0x3c3dea){_0x2c813b[_0xe1c2('0x3c')]=_0x3c3dea;return _0x2c813b;})['then'](respondWithFilteredResult(_0x27d0b5,_0x2c5992))[_0xe1c2('0x3d')](handleError(_0x27d0b5,null));};exports[_0xe1c2('0x3e')]=function(_0x491187,_0x447859){var _0x295e4f={'raw':![],'where':{'id':_0x491187[_0xe1c2('0x3f')]['id']}},_0x3d1d2d={};_0x3d1d2d[_0xe1c2('0x28')]=_[_0xe1c2('0x40')](db[_0xe1c2('0x25')][_0xe1c2('0x26')]);_0x3d1d2d[_0xe1c2('0x2a')]=_[_0xe1c2('0x40')](_0x491187[_0xe1c2('0x2a')]);_0x3d1d2d[_0xe1c2('0x2b')]=_[_0xe1c2('0x2c')](_0x3d1d2d[_0xe1c2('0x28')],_0x3d1d2d[_0xe1c2('0x2a')]);_0x295e4f['attributes']=_[_0xe1c2('0x2c')](_0x3d1d2d['model'],qs[_0xe1c2('0x2e')](_0x491187[_0xe1c2('0x2a')]['fields']));_0x295e4f[_0xe1c2('0x2d')]=_0x295e4f['attributes'][_0xe1c2('0x2f')]?_0x295e4f['attributes']:_0x3d1d2d[_0xe1c2('0x28')];if(_0x491187['query'][_0xe1c2('0x39')]){_0x295e4f[_0xe1c2('0x3a')]=[{'all':!![]}];}_0x295e4f=_[_0xe1c2('0x36')]({},_0x295e4f,_0x491187[_0xe1c2('0x38')]);return db[_0xe1c2('0x25')][_0xe1c2('0x41')](_0x295e4f)[_0xe1c2('0x21')](handleEntityNotFound(_0x447859,null))['then'](respondWithResult(_0x447859,null))['catch'](handleError(_0x447859,null));};exports[_0xe1c2('0x42')]=function(_0x3eef41,_0x1eb5d1){return db[_0xe1c2('0x25')][_0xe1c2('0x42')](_0x3eef41[_0xe1c2('0x43')],{})[_0xe1c2('0x21')](respondWithResult(_0x1eb5d1,0xc9))[_0xe1c2('0x3d')](handleError(_0x1eb5d1,null));};exports[_0xe1c2('0x44')]=function(_0x235e95,_0x444ae5){if(_0x235e95['body']['id']){delete _0x235e95['body']['id'];}return db[_0xe1c2('0x25')][_0xe1c2('0x41')]({'where':{'id':_0x235e95['params']['id']}})['then'](handleEntityNotFound(_0x444ae5,null))[_0xe1c2('0x21')](saveUpdates(_0x235e95[_0xe1c2('0x43')],null))[_0xe1c2('0x21')](respondWithResult(_0x444ae5,null))['catch'](handleError(_0x444ae5,null));};exports[_0xe1c2('0x22')]=function(_0x196c45,_0x48e514){return db['Dynamics365Configuration'][_0xe1c2('0x41')]({'where':{'id':_0x196c45[_0xe1c2('0x3f')]['id']}})[_0xe1c2('0x21')](handleEntityNotFound(_0x48e514,null))['then'](removeEntity(_0x48e514,null))[_0xe1c2('0x3d')](handleError(_0x48e514,null));};exports[_0xe1c2('0x45')]=function(_0xe8d9fa,_0x1c1cf8,_0x17a365){var _0x59e5cc={};var _0x13bda1={};var _0x565932;var _0x399242;return db[_0xe1c2('0x25')][_0xe1c2('0x46')]({'where':{'id':_0xe8d9fa[_0xe1c2('0x3f')]['id']}})[_0xe1c2('0x21')](handleEntityNotFound(_0x1c1cf8,null))[_0xe1c2('0x21')](function(_0x4beac3){if(_0x4beac3){_0x565932=_0x4beac3;_0x13bda1[_0xe1c2('0x28')]=_[_0xe1c2('0x40')](db[_0xe1c2('0x47')][_0xe1c2('0x26')]);_0x13bda1[_0xe1c2('0x2a')]=_[_0xe1c2('0x40')](_0xe8d9fa['query']);_0x13bda1['filters']=_[_0xe1c2('0x2c')](_0x13bda1['model'],_0x13bda1['query']);_0x59e5cc['attributes']=_[_0xe1c2('0x2c')](_0x13bda1[_0xe1c2('0x28')],qs['fields'](_0xe8d9fa[_0xe1c2('0x2a')][_0xe1c2('0x2e')]));_0x59e5cc[_0xe1c2('0x2d')]=_0x59e5cc[_0xe1c2('0x2d')][_0xe1c2('0x2f')]?_0x59e5cc['attributes']:_0x13bda1[_0xe1c2('0x28')];_0x59e5cc[_0xe1c2('0x33')]=qs[_0xe1c2('0x34')](_0xe8d9fa[_0xe1c2('0x2a')][_0xe1c2('0x34')]);_0x59e5cc[_0xe1c2('0x35')]=qs[_0xe1c2('0x2b')](_[_0xe1c2('0x48')](_0xe8d9fa[_0xe1c2('0x2a')],_0x13bda1['filters']));if(_0xe8d9fa[_0xe1c2('0x2a')][_0xe1c2('0x37')]){_0x59e5cc[_0xe1c2('0x35')]=_[_0xe1c2('0x36')](_0x59e5cc[_0xe1c2('0x35')],{'$or':_[_0xe1c2('0x29')](_0x59e5cc[_0xe1c2('0x2d')],function(_0x32039e){var _0x48bbb8={};_0x48bbb8[_0x32039e]={'$like':'%'+_0xe8d9fa[_0xe1c2('0x2a')][_0xe1c2('0x37')]+'%'};return _0x48bbb8;})});}_0x59e5cc=_[_0xe1c2('0x36')]({},_0x59e5cc,_0xe8d9fa[_0xe1c2('0x38')]);return _0x565932[_0xe1c2('0x45')](_0x59e5cc);}})['then'](function(_0x81b5be){if(_0x81b5be){_0x399242=_0x81b5be[_0xe1c2('0x2f')];if(!_0xe8d9fa['query']['hasOwnProperty'](_0xe1c2('0x31'))){_0x59e5cc['limit']=qs[_0xe1c2('0x32')](_0xe8d9fa[_0xe1c2('0x2a')][_0xe1c2('0x32')]);_0x59e5cc['offset']=qs[_0xe1c2('0x1a')](_0xe8d9fa['query'][_0xe1c2('0x1a')]);}return _0x565932[_0xe1c2('0x45')](_0x59e5cc);}})[_0xe1c2('0x21')](function(_0x4e3d43){if(_0x4e3d43){return _0x4e3d43?{'count':_0x399242,'rows':_0x4e3d43}:null;}})[_0xe1c2('0x21')](respondWithResult(_0x1c1cf8,null))[_0xe1c2('0x3d')](handleError(_0x1c1cf8,null));};exports[_0xe1c2('0x49')]=function(_0x599097,_0x2b5dc1,_0x2a4e59){var _0x2c78bd={};var _0xf016cd={};var _0x249d9e;var _0x9e46f7;return db[_0xe1c2('0x25')]['findOne']({'where':{'id':_0x599097[_0xe1c2('0x3f')]['id']}})[_0xe1c2('0x21')](handleEntityNotFound(_0x2b5dc1,null))[_0xe1c2('0x21')](function(_0x220263){if(_0x220263){_0x249d9e=_0x220263;_0xf016cd[_0xe1c2('0x28')]=_['keys'](db['Dynamics365Field'][_0xe1c2('0x26')]);_0xf016cd[_0xe1c2('0x2a')]=_[_0xe1c2('0x40')](_0x599097[_0xe1c2('0x2a')]);_0xf016cd[_0xe1c2('0x2b')]=_[_0xe1c2('0x2c')](_0xf016cd[_0xe1c2('0x28')],_0xf016cd[_0xe1c2('0x2a')]);_0x2c78bd[_0xe1c2('0x2d')]=_[_0xe1c2('0x2c')](_0xf016cd['model'],qs['fields'](_0x599097[_0xe1c2('0x2a')][_0xe1c2('0x2e')]));_0x2c78bd[_0xe1c2('0x2d')]=_0x2c78bd[_0xe1c2('0x2d')][_0xe1c2('0x2f')]?_0x2c78bd[_0xe1c2('0x2d')]:_0xf016cd[_0xe1c2('0x28')];_0x2c78bd[_0xe1c2('0x33')]=qs[_0xe1c2('0x34')](_0x599097[_0xe1c2('0x2a')][_0xe1c2('0x34')]);_0x2c78bd['where']=qs['filters'](_[_0xe1c2('0x48')](_0x599097[_0xe1c2('0x2a')],_0xf016cd['filters']));if(_0x599097[_0xe1c2('0x2a')]['filter']){_0x2c78bd[_0xe1c2('0x35')]=_[_0xe1c2('0x36')](_0x2c78bd[_0xe1c2('0x35')],{'$or':_[_0xe1c2('0x29')](_0x2c78bd['attributes'],function(_0x6a074a){var _0x5e5db1={};_0x5e5db1[_0x6a074a]={'$like':'%'+_0x599097[_0xe1c2('0x2a')][_0xe1c2('0x37')]+'%'};return _0x5e5db1;})});}_0x2c78bd=_[_0xe1c2('0x36')]({},_0x2c78bd,_0x599097[_0xe1c2('0x38')]);return _0x249d9e[_0xe1c2('0x49')](_0x2c78bd);}})[_0xe1c2('0x21')](function(_0x57c620){if(_0x57c620){_0x9e46f7=_0x57c620[_0xe1c2('0x2f')];if(!_0x599097['query'][_0xe1c2('0x30')](_0xe1c2('0x31'))){_0x2c78bd[_0xe1c2('0x32')]=qs[_0xe1c2('0x32')](_0x599097['query'][_0xe1c2('0x32')]);_0x2c78bd[_0xe1c2('0x1a')]=qs['offset'](_0x599097[_0xe1c2('0x2a')][_0xe1c2('0x1a')]);}return _0x249d9e['getSubjects'](_0x2c78bd);}})[_0xe1c2('0x21')](function(_0x18d2f5){if(_0x18d2f5){return _0x18d2f5?{'count':_0x9e46f7,'rows':_0x18d2f5}:null;}})[_0xe1c2('0x21')](respondWithResult(_0x2b5dc1,null))[_0xe1c2('0x3d')](handleError(_0x2b5dc1,null));};exports[_0xe1c2('0x4a')]=function(_0x12ddc1,_0x540a5b,_0x22a500){var _0x222fc9={};var _0x441f0e={};var _0x72cade;var _0x1ca878;return db['Dynamics365Configuration']['findOne']({'where':{'id':_0x12ddc1[_0xe1c2('0x3f')]['id']}})[_0xe1c2('0x21')](handleEntityNotFound(_0x540a5b,null))['then'](function(_0x25af3b){if(_0x25af3b){_0x72cade=_0x25af3b;_0x441f0e['model']=_[_0xe1c2('0x40')](db[_0xe1c2('0x47')][_0xe1c2('0x26')]);_0x441f0e['query']=_[_0xe1c2('0x40')](_0x12ddc1[_0xe1c2('0x2a')]);_0x441f0e[_0xe1c2('0x2b')]=_[_0xe1c2('0x2c')](_0x441f0e['model'],_0x441f0e[_0xe1c2('0x2a')]);_0x222fc9[_0xe1c2('0x2d')]=_[_0xe1c2('0x2c')](_0x441f0e['model'],qs[_0xe1c2('0x2e')](_0x12ddc1[_0xe1c2('0x2a')][_0xe1c2('0x2e')]));_0x222fc9['attributes']=_0x222fc9[_0xe1c2('0x2d')][_0xe1c2('0x2f')]?_0x222fc9[_0xe1c2('0x2d')]:_0x441f0e['model'];_0x222fc9[_0xe1c2('0x33')]=qs[_0xe1c2('0x34')](_0x12ddc1[_0xe1c2('0x2a')][_0xe1c2('0x34')]);_0x222fc9['where']=qs[_0xe1c2('0x2b')](_[_0xe1c2('0x48')](_0x12ddc1['query'],_0x441f0e[_0xe1c2('0x2b')]));if(_0x12ddc1[_0xe1c2('0x2a')]['filter']){_0x222fc9[_0xe1c2('0x35')]=_['merge'](_0x222fc9['where'],{'$or':_[_0xe1c2('0x29')](_0x222fc9[_0xe1c2('0x2d')],function(_0x1fbda3){var _0x2c2736={};_0x2c2736[_0x1fbda3]={'$like':'%'+_0x12ddc1[_0xe1c2('0x2a')][_0xe1c2('0x37')]+'%'};return _0x2c2736;})});}_0x222fc9=_[_0xe1c2('0x36')]({},_0x222fc9,_0x12ddc1[_0xe1c2('0x38')]);return _0x72cade[_0xe1c2('0x4a')](_0x222fc9);}})['then'](function(_0x3813d6){if(_0x3813d6){_0x1ca878=_0x3813d6[_0xe1c2('0x2f')];if(!_0x12ddc1[_0xe1c2('0x2a')]['hasOwnProperty'](_0xe1c2('0x31'))){_0x222fc9[_0xe1c2('0x32')]=qs[_0xe1c2('0x32')](_0x12ddc1['query'][_0xe1c2('0x32')]);_0x222fc9[_0xe1c2('0x1a')]=qs['offset'](_0x12ddc1[_0xe1c2('0x2a')][_0xe1c2('0x1a')]);}return _0x72cade[_0xe1c2('0x4a')](_0x222fc9);}})['then'](function(_0x59dd0f){if(_0x59dd0f){return _0x59dd0f?{'count':_0x1ca878,'rows':_0x59dd0f}:null;}})[_0xe1c2('0x21')](respondWithResult(_0x540a5b,null))[_0xe1c2('0x3d')](handleError(_0x540a5b,null));};
\ No newline at end of file
index 10c1114..504f8d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d6=['path','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x87534e,_0x374286){var _0x2a3b94=function(_0x526ad7){while(--_0x526ad7){_0x87534e['push'](_0x87534e['shift']());}};_0x2a3b94(++_0x374286);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x448c1a,_0x15e52e){_0x448c1a=_0x448c1a-0x0;var _0x21aaba=_0xd6d6[_0x448c1a];return _0x21aaba;};'use strict';var _=require(_0x6d6d('0x0'));var util=require(_0x6d6d('0x1'));var logger=require(_0x6d6d('0x2'))(_0x6d6d('0x3'));var moment=require('moment');var BPromise=require(_0x6d6d('0x4'));var rp=require(_0x6d6d('0x5'));var fs=require('fs');var path=require(_0x6d6d('0x6'));var rimraf=require(_0x6d6d('0x7'));var config=require(_0x6d6d('0x8'));var attributes=require(_0x6d6d('0x9'));module[_0x6d6d('0xa')]=function(_0x5702dc,_0x210ff7){return _0x5702dc[_0x6d6d('0xb')](_0x6d6d('0xc'),attributes,{'tableName':_0x6d6d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xedd9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intDynamics365Configuration.attributes','exports','Dynamics365Configuration','util'];(function(_0x303906,_0x295f74){var _0x46ef24=function(_0x52e775){while(--_0x52e775){_0x303906['push'](_0x303906['shift']());}};_0x46ef24(++_0x295f74);}(_0xedd9,0xfc));var _0x9edd=function(_0x2b1cac,_0x31933e){_0x2b1cac=_0x2b1cac-0x0;var _0x4a8186=_0xedd9[_0x2b1cac];return _0x4a8186;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var logger=require(_0x9edd('0x1'))(_0x9edd('0x2'));var moment=require(_0x9edd('0x3'));var BPromise=require(_0x9edd('0x4'));var rp=require(_0x9edd('0x5'));var fs=require('fs');var path=require(_0x9edd('0x6'));var rimraf=require(_0x9edd('0x7'));var config=require('../../config/environment');var attributes=require(_0x9edd('0x8'));module[_0x9edd('0x9')]=function(_0x268f9e,_0x34c1a7){return _0x268f9e['define'](_0x9edd('0xa'),attributes,{'tableName':'int_dynamics365_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0d8d0fc..ee733cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1819=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','ioredis'];(function(_0x13d267,_0x1d3652){var _0x40d074=function(_0x309786){while(--_0x309786){_0x13d267['push'](_0x13d267['shift']());}};_0x40d074(++_0x1d3652);}(_0x1819,0x19a));var _0x9181=function(_0x5d9867,_0x5e9030){_0x5d9867=_0x5d9867-0x0;var _0x7d2118=_0x1819[_0x5d9867];return _0x7d2118;};'use strict';var _=require('lodash');var util=require(_0x9181('0x0'));var moment=require(_0x9181('0x1'));var BPromise=require(_0x9181('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9181('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x9181('0x4'));var logger=require(_0x9181('0x5'))(_0x9181('0x6'));var config=require(_0x9181('0x7'));var jayson=require(_0x9181('0x8'));var client=jayson['client'][_0x9181('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x157ebb,_0x13ad25,_0x3f76dd){return new BPromise(function(_0x110ed5,_0xb0f9ff){return client[_0x9181('0xa')](_0x157ebb,_0x3f76dd)[_0x9181('0xb')](function(_0x128368){logger[_0x9181('0xc')](_0x9181('0xd'),_0x13ad25,_0x9181('0xe'));logger[_0x9181('0xf')](_0x9181('0x10'),_0x13ad25,'request\x20sent',JSON[_0x9181('0x11')](_0x128368));if(_0x128368[_0x9181('0x12')]){if(_0x128368[_0x9181('0x12')][_0x9181('0x13')]===0x1f4){logger['error'](_0x9181('0xd'),_0x13ad25,_0x128368[_0x9181('0x12')][_0x9181('0x14')]);return _0xb0f9ff(_0x128368[_0x9181('0x12')][_0x9181('0x14')]);}logger[_0x9181('0x12')](_0x9181('0xd'),_0x13ad25,_0x128368[_0x9181('0x12')][_0x9181('0x14')]);return _0x110ed5(_0x128368[_0x9181('0x12')][_0x9181('0x14')]);}else{logger[_0x9181('0xc')]('Dynamics365Configuration,\x20%s,\x20%s',_0x13ad25,_0x9181('0xe'));_0x110ed5(_0x128368[_0x9181('0x15')]['message']);}})[_0x9181('0x16')](function(_0x4ecc2d){logger['error']('Dynamics365Configuration,\x20%s,\x20%s',_0x13ad25,_0x4ecc2d);_0xb0f9ff(_0x4ecc2d);});});}
\ No newline at end of file
+var _0x5439=['Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Dynamics365Configuration,\x20%s,\x20%s','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','request\x20sent'];(function(_0x192357,_0x4b18e6){var _0x433258=function(_0x4a8ed4){while(--_0x4a8ed4){_0x192357['push'](_0x192357['shift']());}};_0x433258(++_0x4b18e6);}(_0x5439,0x1e2));var _0x9543=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x5439[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9543('0x0'));var BPromise=require(_0x9543('0x1'));var rs=require(_0x9543('0x2'));var fs=require('fs');var Redis=require(_0x9543('0x3'));var db=require(_0x9543('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x9543('0x5'))('rpc');var config=require(_0x9543('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x9543('0x7')][_0x9543('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x36891c,_0x56a967,_0x163200){return new BPromise(function(_0x2eeda6,_0x6a25cc){return client[_0x9543('0x9')](_0x36891c,_0x163200)[_0x9543('0xa')](function(_0x5f13fe){logger['info']('Dynamics365Configuration,\x20%s,\x20%s',_0x56a967,_0x9543('0xb'));logger['debug'](_0x9543('0xc'),_0x56a967,_0x9543('0xb'),JSON[_0x9543('0xd')](_0x5f13fe));if(_0x5f13fe[_0x9543('0xe')]){if(_0x5f13fe['error'][_0x9543('0xf')]===0x1f4){logger[_0x9543('0xe')]('Dynamics365Configuration,\x20%s,\x20%s',_0x56a967,_0x5f13fe[_0x9543('0xe')][_0x9543('0x10')]);return _0x6a25cc(_0x5f13fe[_0x9543('0xe')][_0x9543('0x10')]);}logger[_0x9543('0xe')](_0x9543('0x11'),_0x56a967,_0x5f13fe[_0x9543('0xe')][_0x9543('0x10')]);return _0x2eeda6(_0x5f13fe[_0x9543('0xe')][_0x9543('0x10')]);}else{logger['info'](_0x9543('0x11'),_0x56a967,_0x9543('0xb'));_0x2eeda6(_0x5f13fe['result'][_0x9543('0x10')]);}})[_0x9543('0x12')](function(_0x57b6ba){logger[_0x9543('0xe')](_0x9543('0x11'),_0x56a967,_0x57b6ba);_0x6a25cc(_0x57b6ba);});});}
\ No newline at end of file
index 2b0665f..3380bf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa315=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','index','/:id','show','post','create','delete','destroy','exports'];(function(_0x379827,_0x5022cd){var _0x88d22b=function(_0x4654a0){while(--_0x4654a0){_0x379827['push'](_0x379827['shift']());}};_0x88d22b(++_0x5022cd);}(_0xa315,0xf7));var _0x5a31=function(_0x3f6c29,_0x370d86){_0x3f6c29=_0x3f6c29-0x0;var _0x4af959=_0xa315[_0x3f6c29];return _0x4af959;};'use strict';var multer=require(_0x5a31('0x0'));var util=require('util');var path=require(_0x5a31('0x1'));var timeout=require(_0x5a31('0x2'));var express=require(_0x5a31('0x3'));var router=express[_0x5a31('0x4')]();var fs_extra=require(_0x5a31('0x5'));var auth=require(_0x5a31('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5a31('0x7'));var controller=require(_0x5a31('0x8'));router[_0x5a31('0x9')]('/',auth[_0x5a31('0xa')](),controller[_0x5a31('0xb')]);router[_0x5a31('0x9')](_0x5a31('0xc'),auth[_0x5a31('0xa')](),controller[_0x5a31('0xd')]);router[_0x5a31('0xe')]('/',auth[_0x5a31('0xa')](),controller[_0x5a31('0xf')]);router['put'](_0x5a31('0xc'),auth[_0x5a31('0xa')](),controller['update']);router[_0x5a31('0x10')]('/:id',auth[_0x5a31('0xa')](),controller[_0x5a31('0x11')]);module[_0x5a31('0x12')]=router;
\ No newline at end of file
+var _0xbe6d=['post','create','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','/:id','show'];(function(_0x37f4e5,_0x2ab541){var _0x4895eb=function(_0x501cde){while(--_0x501cde){_0x37f4e5['push'](_0x37f4e5['shift']());}};_0x4895eb(++_0x2ab541);}(_0xbe6d,0x65));var _0xdbe6=function(_0x57aad9,_0x2cceaf){_0x57aad9=_0x57aad9-0x0;var _0x237671=_0xbe6d[_0x57aad9];return _0x237671;};'use strict';var multer=require(_0xdbe6('0x0'));var util=require(_0xdbe6('0x1'));var path=require('path');var timeout=require(_0xdbe6('0x2'));var express=require(_0xdbe6('0x3'));var router=express[_0xdbe6('0x4')]();var fs_extra=require(_0xdbe6('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xdbe6('0x6'));var config=require('../../config/environment');var controller=require('./intDynamics365Field.controller');router[_0xdbe6('0x7')]('/',auth[_0xdbe6('0x8')](),controller['index']);router[_0xdbe6('0x7')](_0xdbe6('0x9'),auth[_0xdbe6('0x8')](),controller[_0xdbe6('0xa')]);router[_0xdbe6('0xb')]('/',auth[_0xdbe6('0x8')](),controller[_0xdbe6('0xc')]);router['put'](_0xdbe6('0x9'),auth[_0xdbe6('0x8')](),controller['update']);router[_0xdbe6('0xd')](_0xdbe6('0x9'),auth[_0xdbe6('0x8')](),controller[_0xdbe6('0xe')]);module[_0xdbe6('0xf')]=router;
\ No newline at end of file
index f52f5b7..299619a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd8b=['ENUM','string','customVariable','picklist','STRING','variable','BOOLEAN','sequelize','exports'];(function(_0x4e0b3a,_0x2b791c){var _0x60e1de=function(_0x109f11){while(--_0x109f11){_0x4e0b3a['push'](_0x4e0b3a['shift']());}};_0x60e1de(++_0x2b791c);}(_0xfd8b,0xdf));var _0xbfd8=function(_0x44fd8f,_0x8bd741){_0x44fd8f=_0x44fd8f-0x0;var _0x4acfad=_0xfd8b[_0x44fd8f];return _0x4acfad;};'use strict';var Sequelize=require(_0xbfd8('0x0'));module[_0xbfd8('0x1')]={'type':{'type':Sequelize[_0xbfd8('0x2')](_0xbfd8('0x3'),'variable',_0xbfd8('0x4'),'keyValue',_0xbfd8('0x5')),'defaultValue':_0xbfd8('0x3')},'content':{'type':Sequelize[_0xbfd8('0x6')]},'key':{'type':Sequelize[_0xbfd8('0x6')]},'keyType':{'type':Sequelize[_0xbfd8('0x2')](_0xbfd8('0x3'),_0xbfd8('0x7'),'customVariable')},'keyContent':{'type':Sequelize[_0xbfd8('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xbfd8('0x6')]},'customField':{'type':Sequelize[_0xbfd8('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x30f9=['exports','variable','customVariable','keyValue','picklist','STRING','ENUM','string','BOOLEAN','sequelize'];(function(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0x30f9,0xa9));var _0x930f=function(_0x284506,_0x191316){_0x284506=_0x284506-0x0;var _0x1e9ee5=_0x30f9[_0x284506];return _0x1e9ee5;};'use strict';var Sequelize=require(_0x930f('0x0'));module[_0x930f('0x1')]={'type':{'type':Sequelize['ENUM']('string',_0x930f('0x2'),_0x930f('0x3'),_0x930f('0x4'),_0x930f('0x5')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x930f('0x6')]},'keyType':{'type':Sequelize[_0x930f('0x7')](_0x930f('0x8'),_0x930f('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0x930f('0x6')]},'idField':{'type':Sequelize[_0x930f('0x6')]},'nameField':{'type':Sequelize[_0x930f('0x6')]},'customField':{'type':Sequelize[_0x930f('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x930f('0x6')]}};
\ No newline at end of file
index 135fbb6..3333716 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fa7=['json','reject','update','then','destroy','sendStatus','error','stack','name','Dynamics365Field','fieldName','type','key','map','keys','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','count','includeAll','findAll','rows','show','params','rawAttributes','include','find','catch','create','body','eml-format','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','status','end','offset','limit','undefined','set','Content-Range'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x9fa7,0xba));var _0x79fa=function(_0x26b693,_0x4024c8){_0x26b693=_0x26b693-0x0;var _0x12e439=_0x9fa7[_0x26b693];return _0x12e439;};'use strict';var emlformat=require(_0x79fa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x79fa('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x79fa('0x2'));var moment=require('moment');var BPromise=require(_0x79fa('0x3'));var Mustache=require(_0x79fa('0x4'));var util=require(_0x79fa('0x5'));var path=require('path');var sox=require(_0x79fa('0x6'));var csv=require(_0x79fa('0x7'));var ejs=require(_0x79fa('0x8'));var fs=require('fs');var fs_extra=require(_0x79fa('0x9'));var _=require(_0x79fa('0xa'));var squel=require('squel');var crypto=require(_0x79fa('0xb'));var jsforce=require(_0x79fa('0xc'));var deskjs=require(_0x79fa('0xd'));var toCsv=require(_0x79fa('0x7'));var querystring=require(_0x79fa('0xe'));var Papa=require('papaparse');var Redis=require(_0x79fa('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x79fa('0x10'));var as=require(_0x79fa('0x11'));var hardwareService=require(_0x79fa('0x12'));var logger=require(_0x79fa('0x13'))(_0x79fa('0x14'));var utils=require(_0x79fa('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x79fa('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x243759,_0x484a62){_0x484a62=_0x484a62||0xcc;return function(_0x160023){if(_0x160023){return _0x243759['sendStatus'](_0x484a62);}return _0x243759[_0x79fa('0x17')](_0x484a62)[_0x79fa('0x18')]();};}function respondWithResult(_0x17783b,_0x25ec08){_0x25ec08=_0x25ec08||0xc8;return function(_0xae128d){if(_0xae128d){return _0x17783b[_0x79fa('0x17')](_0x25ec08)['json'](_0xae128d);}};}function respondWithFilteredResult(_0xe07cdf,_0x1e0d32){return function(_0x4363fe){if(_0x4363fe){var _0x2caf62=typeof _0x1e0d32[_0x79fa('0x19')]==='undefined'&&typeof _0x1e0d32[_0x79fa('0x1a')]===_0x79fa('0x1b');var _0x1daf4b=_0x4363fe['count'];var _0x5f1a86=_0x2caf62?0x0:_0x1e0d32[_0x79fa('0x19')];var _0x28a321=_0x2caf62?_0x4363fe['count']:_0x1e0d32['offset']+_0x1e0d32[_0x79fa('0x1a')];var _0xfb4477;if(_0x28a321>=_0x1daf4b){_0x28a321=_0x1daf4b;_0xfb4477=0xc8;}else{_0xfb4477=0xce;}_0xe07cdf[_0x79fa('0x17')](_0xfb4477);return _0xe07cdf[_0x79fa('0x1c')](_0x79fa('0x1d'),_0x5f1a86+'-'+_0x28a321+'/'+_0x1daf4b)[_0x79fa('0x1e')](_0x4363fe);}return null;};}function patchUpdates(_0x3eeccc){return function(_0x1283a6){try{jsonpatch['apply'](_0x1283a6,_0x3eeccc,!![]);}catch(_0xd65b56){return BPromise[_0x79fa('0x1f')](_0xd65b56);}return _0x1283a6['save']();};}function saveUpdates(_0x35b796,_0x25ea37){return function(_0xacdb14){if(_0xacdb14){return _0xacdb14[_0x79fa('0x20')](_0x35b796)[_0x79fa('0x21')](function(_0x4762da){return _0x4762da;});}return null;};}function removeEntity(_0x514ea5,_0x45100b){return function(_0x40a99a){if(_0x40a99a){return _0x40a99a[_0x79fa('0x22')]()[_0x79fa('0x21')](function(){_0x514ea5[_0x79fa('0x17')](0xcc)[_0x79fa('0x18')]();});}};}function handleEntityNotFound(_0x544fe9,_0x449351){return function(_0x433140){if(!_0x433140){_0x544fe9[_0x79fa('0x23')](0x194);}return _0x433140;};}function handleError(_0x199a34,_0x1ea68c){_0x1ea68c=_0x1ea68c||0x1f4;return function(_0x3f9a3c){logger[_0x79fa('0x24')](_0x3f9a3c[_0x79fa('0x25')]);if(_0x3f9a3c[_0x79fa('0x26')]){delete _0x3f9a3c['name'];}_0x199a34[_0x79fa('0x17')](_0x1ea68c)['send'](_0x3f9a3c);};}exports['index']=function(_0x2ffb83,_0x22a889){var _0x50afc0={},_0x50f85c={},_0x29765b={'count':0x0,'rows':[]};var _0x245683=_['map'](db[_0x79fa('0x27')]['rawAttributes'],function(_0xdb8e2a){return{'name':_0xdb8e2a[_0x79fa('0x28')],'type':_0xdb8e2a[_0x79fa('0x29')][_0x79fa('0x2a')]};});_0x50f85c['model']=_[_0x79fa('0x2b')](_0x245683,'name');_0x50f85c['query']=_[_0x79fa('0x2c')](_0x2ffb83[_0x79fa('0x2d')]);_0x50f85c[_0x79fa('0x2e')]=_[_0x79fa('0x2f')](_0x50f85c[_0x79fa('0x30')],_0x50f85c[_0x79fa('0x2d')]);_0x50afc0[_0x79fa('0x31')]=_[_0x79fa('0x2f')](_0x50f85c[_0x79fa('0x30')],qs[_0x79fa('0x32')](_0x2ffb83['query']['fields']));_0x50afc0['attributes']=_0x50afc0[_0x79fa('0x31')][_0x79fa('0x33')]?_0x50afc0[_0x79fa('0x31')]:_0x50f85c[_0x79fa('0x30')];if(!_0x2ffb83[_0x79fa('0x2d')]['hasOwnProperty'](_0x79fa('0x34'))){_0x50afc0[_0x79fa('0x1a')]=qs['limit'](_0x2ffb83[_0x79fa('0x2d')][_0x79fa('0x1a')]);_0x50afc0[_0x79fa('0x19')]=qs[_0x79fa('0x19')](_0x2ffb83[_0x79fa('0x2d')][_0x79fa('0x19')]);}_0x50afc0[_0x79fa('0x35')]=qs[_0x79fa('0x36')](_0x2ffb83['query'][_0x79fa('0x36')]);_0x50afc0[_0x79fa('0x37')]=qs[_0x79fa('0x2e')](_[_0x79fa('0x38')](_0x2ffb83[_0x79fa('0x2d')],_0x50f85c[_0x79fa('0x2e')]),_0x245683);if(_0x2ffb83[_0x79fa('0x2d')][_0x79fa('0x39')]){_0x50afc0[_0x79fa('0x37')]=_['merge'](_0x50afc0[_0x79fa('0x37')],{'$or':_[_0x79fa('0x2b')](_0x245683,function(_0x3ffb19){if(_0x3ffb19[_0x79fa('0x29')]!==_0x79fa('0x3a')){var _0x21d278={};_0x21d278[_0x3ffb19[_0x79fa('0x26')]]={'$like':'%'+_0x2ffb83[_0x79fa('0x2d')][_0x79fa('0x39')]+'%'};return _0x21d278;}})});}_0x50afc0=_[_0x79fa('0x3b')]({},_0x50afc0,_0x2ffb83['options']);var _0x146666={'where':_0x50afc0[_0x79fa('0x37')]};return db[_0x79fa('0x27')][_0x79fa('0x3c')](_0x146666)[_0x79fa('0x21')](function(_0x1ad218){_0x29765b['count']=_0x1ad218;if(_0x2ffb83['query'][_0x79fa('0x3d')]){_0x50afc0['include']=[{'all':!![]}];}return db['Dynamics365Field'][_0x79fa('0x3e')](_0x50afc0);})[_0x79fa('0x21')](function(_0x2b12dd){_0x29765b[_0x79fa('0x3f')]=_0x2b12dd;return _0x29765b;})[_0x79fa('0x21')](respondWithFilteredResult(_0x22a889,_0x50afc0))['catch'](handleError(_0x22a889,null));};exports[_0x79fa('0x40')]=function(_0x2c63a0,_0x1e7d08){var _0x59abc3={'raw':!![],'where':{'id':_0x2c63a0[_0x79fa('0x41')]['id']}},_0x505927={};_0x505927[_0x79fa('0x30')]=_['keys'](db['Dynamics365Field'][_0x79fa('0x42')]);_0x505927['query']=_['keys'](_0x2c63a0[_0x79fa('0x2d')]);_0x505927[_0x79fa('0x2e')]=_[_0x79fa('0x2f')](_0x505927[_0x79fa('0x30')],_0x505927[_0x79fa('0x2d')]);_0x59abc3[_0x79fa('0x31')]=_[_0x79fa('0x2f')](_0x505927[_0x79fa('0x30')],qs['fields'](_0x2c63a0[_0x79fa('0x2d')][_0x79fa('0x32')]));_0x59abc3['attributes']=_0x59abc3[_0x79fa('0x31')][_0x79fa('0x33')]?_0x59abc3[_0x79fa('0x31')]:_0x505927[_0x79fa('0x30')];if(_0x2c63a0['query'][_0x79fa('0x3d')]){_0x59abc3[_0x79fa('0x43')]=[{'all':!![]}];}_0x59abc3=_[_0x79fa('0x3b')]({},_0x59abc3,_0x2c63a0['options']);return db[_0x79fa('0x27')][_0x79fa('0x44')](_0x59abc3)[_0x79fa('0x21')](handleEntityNotFound(_0x1e7d08,null))['then'](respondWithResult(_0x1e7d08,null))[_0x79fa('0x45')](handleError(_0x1e7d08,null));};exports['create']=function(_0x35b601,_0x227158){return db['Dynamics365Field'][_0x79fa('0x46')](_0x35b601[_0x79fa('0x47')],{})[_0x79fa('0x21')](respondWithResult(_0x227158,0xc9))[_0x79fa('0x45')](handleError(_0x227158,null));};exports[_0x79fa('0x20')]=function(_0x5a871b,_0xf96f5){if(_0x5a871b['body']['id']){delete _0x5a871b[_0x79fa('0x47')]['id'];}return db[_0x79fa('0x27')][_0x79fa('0x44')]({'where':{'id':_0x5a871b[_0x79fa('0x41')]['id']}})['then'](handleEntityNotFound(_0xf96f5,null))['then'](saveUpdates(_0x5a871b['body'],null))[_0x79fa('0x21')](respondWithResult(_0xf96f5,null))['catch'](handleError(_0xf96f5,null));};exports['destroy']=function(_0x3f6558,_0x1cc999){return db[_0x79fa('0x27')][_0x79fa('0x44')]({'where':{'id':_0x3f6558[_0x79fa('0x41')]['id']}})[_0x79fa('0x21')](handleEntityNotFound(_0x1cc999,null))['then'](removeEntity(_0x1cc999,null))[_0x79fa('0x45')](handleError(_0x1cc999,null));};
\ No newline at end of file
+var _0xc9ca=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','update','then','destroy','error','name','send','index','map','rawAttributes','type','key','model','filters','query','attributes','intersection','fields','hasOwnProperty','nolimit','where','filter','VIRTUAL','merge','options','Dynamics365Field','includeAll','include','rows','catch','show','keys','find','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis'];(function(_0x1943d9,_0x245bb8){var _0x4b4f3f=function(_0x3bba90){while(--_0x3bba90){_0x1943d9['push'](_0x1943d9['shift']());}};_0x4b4f3f(++_0x245bb8);}(_0xc9ca,0x1cc));var _0xac9c=function(_0x20229e,_0xa59f8a){_0x20229e=_0x20229e-0x0;var _0x317377=_0xc9ca[_0x20229e];return _0x317377;};'use strict';var emlformat=require(_0xac9c('0x0'));var rimraf=require(_0xac9c('0x1'));var zipdir=require(_0xac9c('0x2'));var jsonpatch=require(_0xac9c('0x3'));var rp=require(_0xac9c('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xac9c('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(_0xac9c('0x6'));var _=require(_0xac9c('0x7'));var squel=require(_0xac9c('0x8'));var crypto=require(_0xac9c('0x9'));var jsforce=require(_0xac9c('0xa'));var deskjs=require(_0xac9c('0xb'));var toCsv=require(_0xac9c('0xc'));var querystring=require(_0xac9c('0xd'));var Papa=require(_0xac9c('0xe'));var Redis=require(_0xac9c('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xac9c('0x10'));var as=require(_0xac9c('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xac9c('0x12'))(_0xac9c('0x13'));var utils=require(_0xac9c('0x14'));var config=require(_0xac9c('0x15'));var licenseUtil=require(_0xac9c('0x16'));var db=require(_0xac9c('0x17'))['db'];function respondWithStatusCode(_0x6b7dfa,_0x52c41a){_0x52c41a=_0x52c41a||0xcc;return function(_0x5433d7){if(_0x5433d7){return _0x6b7dfa[_0xac9c('0x18')](_0x52c41a);}return _0x6b7dfa[_0xac9c('0x19')](_0x52c41a)[_0xac9c('0x1a')]();};}function respondWithResult(_0x46c4e9,_0x3996bb){_0x3996bb=_0x3996bb||0xc8;return function(_0x5d072){if(_0x5d072){return _0x46c4e9[_0xac9c('0x19')](_0x3996bb)[_0xac9c('0x1b')](_0x5d072);}};}function respondWithFilteredResult(_0x5b6fc9,_0x472a04){return function(_0x30361e){if(_0x30361e){var _0x1150fa=typeof _0x472a04['offset']===_0xac9c('0x1c')&&typeof _0x472a04[_0xac9c('0x1d')]===_0xac9c('0x1c');var _0x375053=_0x30361e[_0xac9c('0x1e')];var _0x1691e8=_0x1150fa?0x0:_0x472a04[_0xac9c('0x1f')];var _0x85115a=_0x1150fa?_0x30361e[_0xac9c('0x1e')]:_0x472a04[_0xac9c('0x1f')]+_0x472a04[_0xac9c('0x1d')];var _0x42af0b;if(_0x85115a>=_0x375053){_0x85115a=_0x375053;_0x42af0b=0xc8;}else{_0x42af0b=0xce;}_0x5b6fc9[_0xac9c('0x19')](_0x42af0b);return _0x5b6fc9['set'](_0xac9c('0x20'),_0x1691e8+'-'+_0x85115a+'/'+_0x375053)[_0xac9c('0x1b')](_0x30361e);}return null;};}function patchUpdates(_0x5600f0){return function(_0x2f20b5){try{jsonpatch[_0xac9c('0x21')](_0x2f20b5,_0x5600f0,!![]);}catch(_0x7d9123){return BPromise['reject'](_0x7d9123);}return _0x2f20b5['save']();};}function saveUpdates(_0x586581,_0x22afdd){return function(_0x2144b3){if(_0x2144b3){return _0x2144b3[_0xac9c('0x22')](_0x586581)[_0xac9c('0x23')](function(_0xa9ce0c){return _0xa9ce0c;});}return null;};}function removeEntity(_0x3fdef3,_0x1fd56f){return function(_0x303d3a){if(_0x303d3a){return _0x303d3a[_0xac9c('0x24')]()[_0xac9c('0x23')](function(){_0x3fdef3['status'](0xcc)[_0xac9c('0x1a')]();});}};}function handleEntityNotFound(_0x15e824,_0x506c0f){return function(_0x459790){if(!_0x459790){_0x15e824['sendStatus'](0x194);}return _0x459790;};}function handleError(_0x1a47db,_0x45be96){_0x45be96=_0x45be96||0x1f4;return function(_0x5db786){logger[_0xac9c('0x25')](_0x5db786['stack']);if(_0x5db786[_0xac9c('0x26')]){delete _0x5db786['name'];}_0x1a47db[_0xac9c('0x19')](_0x45be96)[_0xac9c('0x27')](_0x5db786);};}exports[_0xac9c('0x28')]=function(_0x3a564f,_0x25c701){var _0x208065={},_0x39722a={},_0x2407cf={'count':0x0,'rows':[]};var _0x1783c7=_[_0xac9c('0x29')](db['Dynamics365Field'][_0xac9c('0x2a')],function(_0x202d17){return{'name':_0x202d17['fieldName'],'type':_0x202d17[_0xac9c('0x2b')][_0xac9c('0x2c')]};});_0x39722a[_0xac9c('0x2d')]=_[_0xac9c('0x29')](_0x1783c7,'name');_0x39722a['query']=_['keys'](_0x3a564f['query']);_0x39722a[_0xac9c('0x2e')]=_['intersection'](_0x39722a[_0xac9c('0x2d')],_0x39722a[_0xac9c('0x2f')]);_0x208065[_0xac9c('0x30')]=_[_0xac9c('0x31')](_0x39722a[_0xac9c('0x2d')],qs[_0xac9c('0x32')](_0x3a564f[_0xac9c('0x2f')]['fields']));_0x208065[_0xac9c('0x30')]=_0x208065[_0xac9c('0x30')]['length']?_0x208065[_0xac9c('0x30')]:_0x39722a['model'];if(!_0x3a564f[_0xac9c('0x2f')][_0xac9c('0x33')](_0xac9c('0x34'))){_0x208065['limit']=qs[_0xac9c('0x1d')](_0x3a564f[_0xac9c('0x2f')]['limit']);_0x208065[_0xac9c('0x1f')]=qs[_0xac9c('0x1f')](_0x3a564f[_0xac9c('0x2f')][_0xac9c('0x1f')]);}_0x208065['order']=qs['sort'](_0x3a564f['query']['sort']);_0x208065[_0xac9c('0x35')]=qs[_0xac9c('0x2e')](_['pick'](_0x3a564f[_0xac9c('0x2f')],_0x39722a['filters']),_0x1783c7);if(_0x3a564f[_0xac9c('0x2f')][_0xac9c('0x36')]){_0x208065[_0xac9c('0x35')]=_['merge'](_0x208065[_0xac9c('0x35')],{'$or':_[_0xac9c('0x29')](_0x1783c7,function(_0x5315c1){if(_0x5315c1[_0xac9c('0x2b')]!==_0xac9c('0x37')){var _0x4f2e31={};_0x4f2e31[_0x5315c1[_0xac9c('0x26')]]={'$like':'%'+_0x3a564f[_0xac9c('0x2f')][_0xac9c('0x36')]+'%'};return _0x4f2e31;}})});}_0x208065=_[_0xac9c('0x38')]({},_0x208065,_0x3a564f[_0xac9c('0x39')]);var _0x2e615e={'where':_0x208065[_0xac9c('0x35')]};return db[_0xac9c('0x3a')][_0xac9c('0x1e')](_0x2e615e)[_0xac9c('0x23')](function(_0x40301f){_0x2407cf[_0xac9c('0x1e')]=_0x40301f;if(_0x3a564f['query'][_0xac9c('0x3b')]){_0x208065[_0xac9c('0x3c')]=[{'all':!![]}];}return db['Dynamics365Field']['findAll'](_0x208065);})[_0xac9c('0x23')](function(_0x2713dc){_0x2407cf[_0xac9c('0x3d')]=_0x2713dc;return _0x2407cf;})[_0xac9c('0x23')](respondWithFilteredResult(_0x25c701,_0x208065))[_0xac9c('0x3e')](handleError(_0x25c701,null));};exports[_0xac9c('0x3f')]=function(_0x48f58e,_0x1863c4){var _0x1872cd={'raw':!![],'where':{'id':_0x48f58e['params']['id']}},_0x5d2337={};_0x5d2337[_0xac9c('0x2d')]=_[_0xac9c('0x40')](db[_0xac9c('0x3a')][_0xac9c('0x2a')]);_0x5d2337[_0xac9c('0x2f')]=_['keys'](_0x48f58e[_0xac9c('0x2f')]);_0x5d2337[_0xac9c('0x2e')]=_[_0xac9c('0x31')](_0x5d2337[_0xac9c('0x2d')],_0x5d2337[_0xac9c('0x2f')]);_0x1872cd[_0xac9c('0x30')]=_[_0xac9c('0x31')](_0x5d2337[_0xac9c('0x2d')],qs[_0xac9c('0x32')](_0x48f58e[_0xac9c('0x2f')][_0xac9c('0x32')]));_0x1872cd[_0xac9c('0x30')]=_0x1872cd[_0xac9c('0x30')]['length']?_0x1872cd[_0xac9c('0x30')]:_0x5d2337['model'];if(_0x48f58e[_0xac9c('0x2f')][_0xac9c('0x3b')]){_0x1872cd[_0xac9c('0x3c')]=[{'all':!![]}];}_0x1872cd=_[_0xac9c('0x38')]({},_0x1872cd,_0x48f58e[_0xac9c('0x39')]);return db['Dynamics365Field'][_0xac9c('0x41')](_0x1872cd)[_0xac9c('0x23')](handleEntityNotFound(_0x1863c4,null))['then'](respondWithResult(_0x1863c4,null))[_0xac9c('0x3e')](handleError(_0x1863c4,null));};exports['create']=function(_0x394692,_0x4ee6fc){return db[_0xac9c('0x3a')]['create'](_0x394692[_0xac9c('0x42')],{})[_0xac9c('0x23')](respondWithResult(_0x4ee6fc,0xc9))['catch'](handleError(_0x4ee6fc,null));};exports[_0xac9c('0x22')]=function(_0x1e1582,_0x442412){if(_0x1e1582[_0xac9c('0x42')]['id']){delete _0x1e1582['body']['id'];}return db[_0xac9c('0x3a')][_0xac9c('0x41')]({'where':{'id':_0x1e1582[_0xac9c('0x43')]['id']}})['then'](handleEntityNotFound(_0x442412,null))[_0xac9c('0x23')](saveUpdates(_0x1e1582[_0xac9c('0x42')],null))[_0xac9c('0x23')](respondWithResult(_0x442412,null))[_0xac9c('0x3e')](handleError(_0x442412,null));};exports[_0xac9c('0x24')]=function(_0x14e014,_0x2cb693){return db[_0xac9c('0x3a')][_0xac9c('0x41')]({'where':{'id':_0x14e014[_0xac9c('0x43')]['id']}})[_0xac9c('0x23')](handleEntityNotFound(_0x2cb693,null))[_0xac9c('0x23')](removeEntity(_0x2cb693,null))['catch'](handleError(_0x2cb693,null));};
\ No newline at end of file
index d7214d3..432b0bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf43=['define','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x42450b,_0xd31d7e){var _0x3f3145=function(_0x5bf17a){while(--_0x5bf17a){_0x42450b['push'](_0x42450b['shift']());}};_0x3f3145(++_0xd31d7e);}(_0xbf43,0x17d));var _0x3bf4=function(_0x48411c,_0x94779b){_0x48411c=_0x48411c-0x0;var _0x30de80=_0xbf43[_0x48411c];return _0x30de80;};'use strict';var _=require(_0x3bf4('0x0'));var util=require(_0x3bf4('0x1'));var logger=require(_0x3bf4('0x2'))(_0x3bf4('0x3'));var moment=require(_0x3bf4('0x4'));var BPromise=require(_0x3bf4('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3bf4('0x6'));var rimraf=require(_0x3bf4('0x7'));var config=require(_0x3bf4('0x8'));var attributes=require('./intDynamics365Field.attributes');module['exports']=function(_0x529811,_0x24a1a3){return _0x529811[_0x3bf4('0x9')](_0x3bf4('0xa'),attributes,{'tableName':_0x3bf4('0xb'),'paranoid':![],'indexes':[{'name':_0x3bf4('0xc'),'fields':[_0x3bf4('0xd'),_0x3bf4('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6df4=['rimraf','../../config/environment','./intDynamics365Field.attributes','exports','define','int_dynamics365_fields','dynamics365_unique_index','idField','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0xefb0b3,_0x5dcf05){var _0x5320ed=function(_0x272cd0){while(--_0x272cd0){_0xefb0b3['push'](_0xefb0b3['shift']());}};_0x5320ed(++_0x5dcf05);}(_0x6df4,0x182));var _0x46df=function(_0x2bda14,_0x4fab1b){_0x2bda14=_0x2bda14-0x0;var _0xb5dd49=_0x6df4[_0x2bda14];return _0xb5dd49;};'use strict';var _=require('lodash');var util=require(_0x46df('0x0'));var logger=require(_0x46df('0x1'))(_0x46df('0x2'));var moment=require('moment');var BPromise=require(_0x46df('0x3'));var rp=require(_0x46df('0x4'));var fs=require('fs');var path=require(_0x46df('0x5'));var rimraf=require(_0x46df('0x6'));var config=require(_0x46df('0x7'));var attributes=require(_0x46df('0x8'));module[_0x46df('0x9')]=function(_0x2d422a,_0x340702){return _0x2d422a[_0x46df('0xa')]('Dynamics365Field',attributes,{'tableName':_0x46df('0xb'),'paranoid':![],'indexes':[{'name':_0x46df('0xc'),'fields':[_0x46df('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 3cd65f4..420102f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98a8=['util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','error','message','result','catch','lodash'];(function(_0x350182,_0x2a9feb){var _0x4a0892=function(_0x2c994d){while(--_0x2c994d){_0x350182['push'](_0x350182['shift']());}};_0x4a0892(++_0x2a9feb);}(_0x98a8,0x11c));var _0x898a=function(_0x5195c4,_0x5d1898){_0x5195c4=_0x5195c4-0x0;var _0x3f965e=_0x98a8[_0x5195c4];return _0x3f965e;};'use strict';var _=require(_0x898a('0x0'));var util=require(_0x898a('0x1'));var moment=require(_0x898a('0x2'));var BPromise=require(_0x898a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x898a('0x4'))['db'];var utils=require(_0x898a('0x5'));var logger=require('../../config/logger')(_0x898a('0x6'));var config=require(_0x898a('0x7'));var jayson=require(_0x898a('0x8'));var client=jayson[_0x898a('0x9')][_0x898a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1c9231,_0x501d45,_0x183b46){return new BPromise(function(_0x82483b,_0x1cfed3){return client['request'](_0x1c9231,_0x183b46)[_0x898a('0xb')](function(_0x25c072){logger[_0x898a('0xc')](_0x898a('0xd'),_0x501d45,_0x898a('0xe'));logger['debug']('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0x501d45,'request\x20sent',JSON['stringify'](_0x25c072));if(_0x25c072[_0x898a('0xf')]){if(_0x25c072['error']['code']===0x1f4){logger['error']('Dynamics365Field,\x20%s,\x20%s',_0x501d45,_0x25c072['error'][_0x898a('0x10')]);return _0x1cfed3(_0x25c072[_0x898a('0xf')][_0x898a('0x10')]);}logger['error']('Dynamics365Field,\x20%s,\x20%s',_0x501d45,_0x25c072[_0x898a('0xf')]['message']);return _0x82483b(_0x25c072[_0x898a('0xf')][_0x898a('0x10')]);}else{logger[_0x898a('0xc')]('Dynamics365Field,\x20%s,\x20%s',_0x501d45,_0x898a('0xe'));_0x82483b(_0x25c072[_0x898a('0x11')][_0x898a('0x10')]);}})[_0x898a('0x12')](function(_0x9e55d8){logger['error']('Dynamics365Field,\x20%s,\x20%s',_0x501d45,_0x9e55d8);_0x1cfed3(_0x9e55d8);});});}
\ No newline at end of file
+var _0xe4c5=['catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','Dynamics365Field,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','info','result'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe4c5,0x112));var _0x5e4c=function(_0x9aad88,_0x4ac840){_0x9aad88=_0x9aad88-0x0;var _0x2a6940=_0xe4c5[_0x9aad88];return _0x2a6940;};'use strict';var _=require('lodash');var util=require(_0x5e4c('0x0'));var moment=require('moment');var BPromise=require(_0x5e4c('0x1'));var rs=require(_0x5e4c('0x2'));var fs=require('fs');var Redis=require(_0x5e4c('0x3'));var db=require(_0x5e4c('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x5e4c('0x5'))(_0x5e4c('0x6'));var config=require('../../config/environment');var jayson=require(_0x5e4c('0x7'));var client=jayson[_0x5e4c('0x8')][_0x5e4c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2b8934,_0x405aa0,_0x5eb983){return new BPromise(function(_0x2e17da,_0x566a31){return client[_0x5e4c('0xa')](_0x2b8934,_0x5eb983)[_0x5e4c('0xb')](function(_0x3941d9){logger['info'](_0x5e4c('0xc'),_0x405aa0,'request\x20sent');logger[_0x5e4c('0xd')]('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0x405aa0,_0x5e4c('0xe'),JSON[_0x5e4c('0xf')](_0x3941d9));if(_0x3941d9[_0x5e4c('0x10')]){if(_0x3941d9[_0x5e4c('0x10')]['code']===0x1f4){logger['error']('Dynamics365Field,\x20%s,\x20%s',_0x405aa0,_0x3941d9[_0x5e4c('0x10')][_0x5e4c('0x11')]);return _0x566a31(_0x3941d9[_0x5e4c('0x10')][_0x5e4c('0x11')]);}logger[_0x5e4c('0x10')](_0x5e4c('0xc'),_0x405aa0,_0x3941d9[_0x5e4c('0x10')][_0x5e4c('0x11')]);return _0x2e17da(_0x3941d9[_0x5e4c('0x10')][_0x5e4c('0x11')]);}else{logger[_0x5e4c('0x12')](_0x5e4c('0xc'),_0x405aa0,'request\x20sent');_0x2e17da(_0x3941d9[_0x5e4c('0x13')][_0x5e4c('0x11')]);}})[_0x5e4c('0x14')](function(_0x2ce87b){logger['error'](_0x5e4c('0xc'),_0x405aa0,_0x2ce87b);_0x566a31(_0x2ce87b);});});}
\ No newline at end of file
index 4c6f8cf..ab0291b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9306=['isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','post','create','addConfiguration','put','update','destroy','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','./intFreshdeskAccount.controller','get'];(function(_0x24c11d,_0x9b9727){var _0x1f7841=function(_0x51b1d1){while(--_0x51b1d1){_0x24c11d['push'](_0x24c11d['shift']());}};_0x1f7841(++_0x9b9727);}(_0x9306,0x8b));var _0x6930=function(_0x5b518f,_0x5b44f4){_0x5b518f=_0x5b518f-0x0;var _0x1ebacb=_0x9306[_0x5b518f];return _0x1ebacb;};'use strict';var multer=require(_0x6930('0x0'));var util=require(_0x6930('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6930('0x2'));var router=express[_0x6930('0x3')]();var fs_extra=require(_0x6930('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x6930('0x5'));var config=require('../../config/environment');var controller=require(_0x6930('0x6'));router[_0x6930('0x7')]('/',auth[_0x6930('0x8')](),controller[_0x6930('0x9')]);router['get'](_0x6930('0xa'),auth[_0x6930('0x8')](),controller[_0x6930('0xb')]);router[_0x6930('0x7')](_0x6930('0xc'),auth[_0x6930('0x8')](),controller[_0x6930('0xd')]);router[_0x6930('0x7')]('/:id/fields',auth[_0x6930('0x8')](),controller['getFields']);router[_0x6930('0xe')]('/',auth[_0x6930('0x8')](),controller[_0x6930('0xf')]);router['post'](_0x6930('0xc'),auth['isAuthenticated'](),controller[_0x6930('0x10')]);router[_0x6930('0x11')]('/:id',auth[_0x6930('0x8')](),controller[_0x6930('0x12')]);router['delete'](_0x6930('0xa'),auth[_0x6930('0x8')](),controller[_0x6930('0x13')]);module[_0x6930('0x14')]=router;
\ No newline at end of file
+var _0x5b34=['update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service','./intFreshdeskAccount.controller','get','isAuthenticated','/:id','/:id/configurations','getConfigurations','/:id/fields','post','addConfiguration','put'];(function(_0x2e759c,_0x4fe4b6){var _0x549c1c=function(_0x38161d){while(--_0x38161d){_0x2e759c['push'](_0x2e759c['shift']());}};_0x549c1c(++_0x4fe4b6);}(_0x5b34,0xe0));var _0x45b3=function(_0x62aecf,_0x2f9d5f){_0x62aecf=_0x62aecf-0x0;var _0x767e56=_0x5b34[_0x62aecf];return _0x767e56;};'use strict';var multer=require(_0x45b3('0x0'));var util=require(_0x45b3('0x1'));var path=require(_0x45b3('0x2'));var timeout=require(_0x45b3('0x3'));var express=require('express');var router=express[_0x45b3('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x45b3('0x5'));var config=require('../../config/environment');var controller=require(_0x45b3('0x6'));router[_0x45b3('0x7')]('/',auth[_0x45b3('0x8')](),controller['index']);router['get'](_0x45b3('0x9'),auth['isAuthenticated'](),controller['show']);router['get'](_0x45b3('0xa'),auth[_0x45b3('0x8')](),controller[_0x45b3('0xb')]);router['get'](_0x45b3('0xc'),auth[_0x45b3('0x8')](),controller['getFields']);router['post']('/',auth[_0x45b3('0x8')](),controller['create']);router[_0x45b3('0xd')](_0x45b3('0xa'),auth['isAuthenticated'](),controller[_0x45b3('0xe')]);router[_0x45b3('0xf')]('/:id',auth[_0x45b3('0x8')](),controller[_0x45b3('0x10')]);router[_0x45b3('0x11')](_0x45b3('0x9'),auth[_0x45b3('0x8')](),controller[_0x45b3('0x12')]);module[_0x45b3('0x13')]=router;
\ No newline at end of file
index a5481f2..57c5034 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524e=['username','remoteUri','STRING'];(function(_0x4ed4d2,_0x47acf7){var _0x15ae2e=function(_0x3199f0){while(--_0x3199f0){_0x4ed4d2['push'](_0x4ed4d2['shift']());}};_0x15ae2e(++_0x47acf7);}(_0x524e,0x15e));var _0xe524=function(_0x4b65e7,_0xfd7211){_0x4b65e7=_0x4b65e7-0x0;var _0x41dbff=_0x524e[_0x4b65e7];return _0x41dbff;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xe524('0x0')]},'description':{'type':Sequelize[_0xe524('0x0')]},'username':{'type':Sequelize[_0xe524('0x0')],'unique':_0xe524('0x1')},'apiKey':{'type':Sequelize[_0xe524('0x0')]},'remoteUri':{'type':Sequelize[_0xe524('0x0')],'unique':_0xe524('0x2')},'serverUrl':{'type':Sequelize[_0xe524('0x0')],'allowNull':![]}};
\ No newline at end of file
+var _0xcf2f=['exports','STRING','remoteUri','sequelize'];(function(_0x18a841,_0x17c9d7){var _0x13343f=function(_0x55e6d6){while(--_0x55e6d6){_0x18a841['push'](_0x18a841['shift']());}};_0x13343f(++_0x17c9d7);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x12ebf8,_0x5b0ba5){_0x12ebf8=_0x12ebf8-0x0;var _0x570ee0=_0xcf2f[_0x12ebf8];return _0x570ee0;};'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 7e86173..540a97e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57f8=['map','FreshdeskAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','update','getConfigurations','findOne','FreshdeskConfiguration','hasOwnProperty','addConfiguration','AccountId','channel','Descriptions','FreshdeskField','Subjects','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','Basic\x20%s','%s:X','toString','agent','priority','group','ticket_type','remove','includes','default','custom_text','custom_dropdown','choices','capitalize','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','then','destroy','end','error','name','send'];(function(_0x2d14a4,_0x4a2bcc){var _0x2c5a29=function(_0x36fcf8){while(--_0x36fcf8){_0x2d14a4['push'](_0x2d14a4['shift']());}};_0x2c5a29(++_0x4a2bcc);}(_0x57f8,0x198));var _0x857f=function(_0x33c090,_0x184b69){_0x33c090=_0x33c090-0x0;var _0x4081df=_0x57f8[_0x33c090];return _0x4081df;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x857f('0x0'));var zipdir=require(_0x857f('0x1'));var jsonpatch=require(_0x857f('0x2'));var rp=require(_0x857f('0x3'));var moment=require(_0x857f('0x4'));var BPromise=require(_0x857f('0x5'));var Mustache=require(_0x857f('0x6'));var util=require(_0x857f('0x7'));var path=require(_0x857f('0x8'));var sox=require(_0x857f('0x9'));var csv=require(_0x857f('0xa'));var ejs=require(_0x857f('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x857f('0xc'));var squel=require(_0x857f('0xd'));var crypto=require(_0x857f('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x857f('0xf'));var toCsv=require(_0x857f('0xa'));var querystring=require(_0x857f('0x10'));var Papa=require('papaparse');var Redis=require(_0x857f('0x11'));var authService=require(_0x857f('0x12'));var qs=require(_0x857f('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x857f('0x14'));var logger=require(_0x857f('0x15'))(_0x857f('0x16'));var utils=require(_0x857f('0x17'));var config=require(_0x857f('0x18'));var licenseUtil=require(_0x857f('0x19'));var db=require(_0x857f('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2e1eda,_0x2d5e26){_0x2d5e26=_0x2d5e26||0xcc;return function(_0x373333){if(_0x373333){return _0x2e1eda[_0x857f('0x1b')](_0x2d5e26);}return _0x2e1eda[_0x857f('0x1c')](_0x2d5e26)['end']();};}function respondWithResult(_0x4bc590,_0x3b09d9){_0x3b09d9=_0x3b09d9||0xc8;return function(_0x5f27b2){if(_0x5f27b2){return _0x4bc590[_0x857f('0x1c')](_0x3b09d9)['json'](_0x5f27b2);}};}function respondWithFilteredResult(_0x1d47bf,_0x134a4f){return function(_0x5c3a69){if(_0x5c3a69){var _0x27e8f1=typeof _0x134a4f[_0x857f('0x1d')]===_0x857f('0x1e')&&typeof _0x134a4f[_0x857f('0x1f')]===_0x857f('0x1e');var _0x38a3c2=_0x5c3a69[_0x857f('0x20')];var _0x429e23=_0x27e8f1?0x0:_0x134a4f[_0x857f('0x1d')];var _0x38a242=_0x27e8f1?_0x5c3a69[_0x857f('0x20')]:_0x134a4f['offset']+_0x134a4f[_0x857f('0x1f')];var _0x1e8fd4;if(_0x38a242>=_0x38a3c2){_0x38a242=_0x38a3c2;_0x1e8fd4=0xc8;}else{_0x1e8fd4=0xce;}_0x1d47bf['status'](_0x1e8fd4);return _0x1d47bf[_0x857f('0x21')](_0x857f('0x22'),_0x429e23+'-'+_0x38a242+'/'+_0x38a3c2)[_0x857f('0x23')](_0x5c3a69);}return null;};}function patchUpdates(_0x484035){return function(_0x57fa8b){try{jsonpatch[_0x857f('0x24')](_0x57fa8b,_0x484035,!![]);}catch(_0x8f278){return BPromise[_0x857f('0x25')](_0x8f278);}return _0x57fa8b['save']();};}function saveUpdates(_0x118237,_0x17a98e){return function(_0xdf8ac3){if(_0xdf8ac3){return _0xdf8ac3['update'](_0x118237)[_0x857f('0x26')](function(_0x14a8ce){return _0x14a8ce;});}return null;};}function removeEntity(_0x50bfb7,_0x3bc543){return function(_0x1a651f){if(_0x1a651f){return _0x1a651f[_0x857f('0x27')]()[_0x857f('0x26')](function(){_0x50bfb7[_0x857f('0x1c')](0xcc)[_0x857f('0x28')]();});}};}function handleEntityNotFound(_0x233a68,_0x2a89ba){return function(_0x181a9e){if(!_0x181a9e){_0x233a68[_0x857f('0x1b')](0x194);}return _0x181a9e;};}function handleError(_0x72f0aa,_0x4782ab){_0x4782ab=_0x4782ab||0x1f4;return function(_0x250731){logger[_0x857f('0x29')](_0x250731['stack']);if(_0x250731[_0x857f('0x2a')]){delete _0x250731[_0x857f('0x2a')];}_0x72f0aa[_0x857f('0x1c')](_0x4782ab)[_0x857f('0x2b')](_0x250731);};}exports['index']=function(_0x40c306,_0x57ceaa){var _0x1b405a={},_0x234048={},_0x45a37f={'count':0x0,'rows':[]};var _0x2ab814=_[_0x857f('0x2c')](db[_0x857f('0x2d')][_0x857f('0x2e')],function(_0xe79241){return{'name':_0xe79241[_0x857f('0x2f')],'type':_0xe79241[_0x857f('0x30')][_0x857f('0x31')]};});_0x234048[_0x857f('0x32')]=_[_0x857f('0x2c')](_0x2ab814,'name');_0x234048[_0x857f('0x33')]=_[_0x857f('0x34')](_0x40c306['query']);_0x234048[_0x857f('0x35')]=_[_0x857f('0x36')](_0x234048['model'],_0x234048[_0x857f('0x33')]);_0x1b405a[_0x857f('0x37')]=_['intersection'](_0x234048[_0x857f('0x32')],qs[_0x857f('0x38')](_0x40c306[_0x857f('0x33')][_0x857f('0x38')]));_0x1b405a['attributes']=_0x1b405a['attributes'][_0x857f('0x39')]?_0x1b405a[_0x857f('0x37')]:_0x234048['model'];if(!_0x40c306[_0x857f('0x33')]['hasOwnProperty'](_0x857f('0x3a'))){_0x1b405a[_0x857f('0x1f')]=qs[_0x857f('0x1f')](_0x40c306[_0x857f('0x33')][_0x857f('0x1f')]);_0x1b405a['offset']=qs['offset'](_0x40c306[_0x857f('0x33')]['offset']);}_0x1b405a[_0x857f('0x3b')]=qs[_0x857f('0x3c')](_0x40c306[_0x857f('0x33')]['sort']);_0x1b405a[_0x857f('0x3d')]=qs[_0x857f('0x35')](_[_0x857f('0x3e')](_0x40c306[_0x857f('0x33')],_0x234048[_0x857f('0x35')]),_0x2ab814);if(_0x40c306[_0x857f('0x33')][_0x857f('0x3f')]){_0x1b405a['where']=_[_0x857f('0x40')](_0x1b405a[_0x857f('0x3d')],{'$or':_[_0x857f('0x2c')](_0x2ab814,function(_0x28ffe4){if(_0x28ffe4[_0x857f('0x30')]!==_0x857f('0x41')){var _0x447f28={};_0x447f28[_0x28ffe4['name']]={'$like':'%'+_0x40c306[_0x857f('0x33')][_0x857f('0x3f')]+'%'};return _0x447f28;}})});}_0x1b405a=_[_0x857f('0x40')]({},_0x1b405a,_0x40c306[_0x857f('0x42')]);var _0x196c95={'where':_0x1b405a[_0x857f('0x3d')]};return db['FreshdeskAccount'][_0x857f('0x20')](_0x196c95)[_0x857f('0x26')](function(_0x167e9d){_0x45a37f[_0x857f('0x20')]=_0x167e9d;if(_0x40c306[_0x857f('0x33')][_0x857f('0x43')]){_0x1b405a[_0x857f('0x44')]=[{'all':!![]}];}return db[_0x857f('0x2d')]['findAll'](_0x1b405a);})[_0x857f('0x26')](function(_0x223095){_0x45a37f[_0x857f('0x45')]=_0x223095;return _0x45a37f;})[_0x857f('0x26')](respondWithFilteredResult(_0x57ceaa,_0x1b405a))[_0x857f('0x46')](handleError(_0x57ceaa,null));};exports[_0x857f('0x47')]=function(_0x374b9f,_0x42d922){var _0xb4d7c2={'raw':![],'where':{'id':_0x374b9f[_0x857f('0x48')]['id']}},_0x3e2079={};_0x3e2079[_0x857f('0x32')]=_[_0x857f('0x34')](db[_0x857f('0x2d')]['rawAttributes']);_0x3e2079[_0x857f('0x33')]=_['keys'](_0x374b9f[_0x857f('0x33')]);_0x3e2079[_0x857f('0x35')]=_[_0x857f('0x36')](_0x3e2079[_0x857f('0x32')],_0x3e2079[_0x857f('0x33')]);_0xb4d7c2[_0x857f('0x37')]=_[_0x857f('0x36')](_0x3e2079[_0x857f('0x32')],qs[_0x857f('0x38')](_0x374b9f[_0x857f('0x33')][_0x857f('0x38')]));_0xb4d7c2['attributes']=_0xb4d7c2['attributes'][_0x857f('0x39')]?_0xb4d7c2['attributes']:_0x3e2079[_0x857f('0x32')];if(_0x374b9f['query'][_0x857f('0x43')]){_0xb4d7c2[_0x857f('0x44')]=[{'all':!![]}];}_0xb4d7c2=_[_0x857f('0x40')]({},_0xb4d7c2,_0x374b9f[_0x857f('0x42')]);return db[_0x857f('0x2d')][_0x857f('0x49')](_0xb4d7c2)[_0x857f('0x26')](handleEntityNotFound(_0x42d922,null))[_0x857f('0x26')](respondWithResult(_0x42d922,null))['catch'](handleError(_0x42d922,null));};exports[_0x857f('0x4a')]=function(_0x3b431d,_0x3806d4){return db[_0x857f('0x2d')]['create'](_0x3b431d[_0x857f('0x4b')],{})[_0x857f('0x26')](respondWithResult(_0x3806d4,0xc9))[_0x857f('0x46')](handleError(_0x3806d4,null));};exports[_0x857f('0x4c')]=function(_0x67563,_0x53baae){if(_0x67563[_0x857f('0x4b')]['id']){delete _0x67563[_0x857f('0x4b')]['id'];}return db['FreshdeskAccount'][_0x857f('0x49')]({'where':{'id':_0x67563[_0x857f('0x48')]['id']}})['then'](handleEntityNotFound(_0x53baae,null))[_0x857f('0x26')](saveUpdates(_0x67563['body'],null))[_0x857f('0x26')](respondWithResult(_0x53baae,null))[_0x857f('0x46')](handleError(_0x53baae,null));};exports[_0x857f('0x27')]=function(_0x2008d5,_0x58bf27){return db[_0x857f('0x2d')][_0x857f('0x49')]({'where':{'id':_0x2008d5[_0x857f('0x48')]['id']}})[_0x857f('0x26')](handleEntityNotFound(_0x58bf27,null))[_0x857f('0x26')](removeEntity(_0x58bf27,null))['catch'](handleError(_0x58bf27,null));};exports[_0x857f('0x4d')]=function(_0x13ef75,_0x9d8273,_0x2670e6){var _0x3e24a5={};var _0x9edee5={};var _0x12712a;var _0x59164a;return db[_0x857f('0x2d')][_0x857f('0x4e')]({'where':{'id':_0x13ef75[_0x857f('0x48')]['id']}})[_0x857f('0x26')](handleEntityNotFound(_0x9d8273,null))[_0x857f('0x26')](function(_0x153e4e){if(_0x153e4e){_0x12712a=_0x153e4e;_0x9edee5['model']=_[_0x857f('0x34')](db[_0x857f('0x4f')][_0x857f('0x2e')]);_0x9edee5[_0x857f('0x33')]=_[_0x857f('0x34')](_0x13ef75[_0x857f('0x33')]);_0x9edee5[_0x857f('0x35')]=_[_0x857f('0x36')](_0x9edee5['model'],_0x9edee5['query']);_0x3e24a5[_0x857f('0x37')]=_[_0x857f('0x36')](_0x9edee5[_0x857f('0x32')],qs[_0x857f('0x38')](_0x13ef75[_0x857f('0x33')][_0x857f('0x38')]));_0x3e24a5['attributes']=_0x3e24a5[_0x857f('0x37')][_0x857f('0x39')]?_0x3e24a5['attributes']:_0x9edee5[_0x857f('0x32')];_0x3e24a5['order']=qs[_0x857f('0x3c')](_0x13ef75[_0x857f('0x33')]['sort']);_0x3e24a5[_0x857f('0x3d')]=qs[_0x857f('0x35')](_[_0x857f('0x3e')](_0x13ef75[_0x857f('0x33')],_0x9edee5[_0x857f('0x35')]));if(_0x13ef75[_0x857f('0x33')][_0x857f('0x3f')]){_0x3e24a5[_0x857f('0x3d')]=_['merge'](_0x3e24a5[_0x857f('0x3d')],{'$or':_[_0x857f('0x2c')](_0x3e24a5[_0x857f('0x37')],function(_0x7cc7f7){var _0x3c612f={};_0x3c612f[_0x7cc7f7]={'$like':'%'+_0x13ef75[_0x857f('0x33')][_0x857f('0x3f')]+'%'};return _0x3c612f;})});}_0x3e24a5=_[_0x857f('0x40')]({},_0x3e24a5,_0x13ef75[_0x857f('0x42')]);return _0x12712a[_0x857f('0x4d')](_0x3e24a5);}})[_0x857f('0x26')](function(_0x5631fb){if(_0x5631fb){_0x59164a=_0x5631fb[_0x857f('0x39')];if(!_0x13ef75[_0x857f('0x33')][_0x857f('0x50')](_0x857f('0x3a'))){_0x3e24a5['limit']=qs[_0x857f('0x1f')](_0x13ef75['query'][_0x857f('0x1f')]);_0x3e24a5[_0x857f('0x1d')]=qs[_0x857f('0x1d')](_0x13ef75[_0x857f('0x33')]['offset']);}return _0x12712a['getConfigurations'](_0x3e24a5);}})[_0x857f('0x26')](function(_0x3ee981){if(_0x3ee981){return _0x3ee981?{'count':_0x59164a,'rows':_0x3ee981}:null;}})[_0x857f('0x26')](respondWithResult(_0x9d8273,null))['catch'](handleError(_0x9d8273,null));};exports[_0x857f('0x51')]=function(_0x5e42bc,_0x5b505,_0x1d6c1c){if(_0x5e42bc[_0x857f('0x4b')]['id']){delete _0x5e42bc['body']['id'];}return db['FreshdeskAccount'][_0x857f('0x4e')]({'where':{'id':_0x5e42bc[_0x857f('0x48')]['id']}})[_0x857f('0x26')](handleEntityNotFound(_0x5b505,null))[_0x857f('0x26')](function(_0x41f9d8){if(_0x41f9d8){_0x5e42bc[_0x857f('0x4b')][_0x857f('0x52')]=_0x41f9d8['id'];_0x5e42bc[_0x857f('0x4b')]['Subjects']=integrations['getSubjects'](_0x5e42bc[_0x857f('0x4b')][_0x857f('0x53')],_0x5e42bc[_0x857f('0x4b')][_0x857f('0x30')]);_0x5e42bc[_0x857f('0x4b')][_0x857f('0x54')]=integrations['getDescriptions'](_0x5e42bc[_0x857f('0x4b')][_0x857f('0x53')],_0x5e42bc[_0x857f('0x4b')][_0x857f('0x30')]);return db[_0x857f('0x4f')][_0x857f('0x4a')](_0x5e42bc[_0x857f('0x4b')],{'include':[{'model':db[_0x857f('0x55')],'as':_0x857f('0x56')},{'model':db[_0x857f('0x55')],'as':'Descriptions'}]});}return null;})[_0x857f('0x26')](respondWithResult(_0x5b505,null))['catch'](handleError(_0x5b505,null));};exports['getFields']=function(_0x35cd3e,_0x48e588,_0x5e5fd9){var _0x2e2cf3='';return db['FreshdeskAccount'][_0x857f('0x4e')]({'where':{'id':_0x35cd3e['params']['id']},'attributes':['id',_0x857f('0x57'),_0x857f('0x58')]})[_0x857f('0x26')](handleEntityNotFound(_0x48e588,null))[_0x857f('0x26')](function(_0x49fb1d){if(_0x49fb1d){_0x2e2cf3=_0x49fb1d[_0x857f('0x57')];var _0xe79902=_0x2e2cf3[_0x857f('0x59')](-0x1);if(_0xe79902==='/'){_0x2e2cf3=_0x2e2cf3[_0x857f('0x5a')](0x0,_0x2e2cf3[_0x857f('0x5b')](_0xe79902));}return rp({'method':_0x857f('0x5c'),'uri':util[_0x857f('0x5d')]('%s/%s',_0x2e2cf3,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0x857f('0x5d')](_0x857f('0x5e'),new Buffer(util[_0x857f('0x5d')](_0x857f('0x5f'),_0x49fb1d[_0x857f('0x58')]))[_0x857f('0x60')]('base64'))},'json':!![]});}})[_0x857f('0x26')](function(_0x21c0b6){if(_0x21c0b6){var _0x2ee2ae=['requester','subject',_0x857f('0x61'),'description','status',_0x857f('0x62'),_0x857f('0x63'),'source',_0x857f('0x64'),_0x857f('0x63'),'company'];_[_0x857f('0x65')](_0x21c0b6,function(_0x21cc84){return _0x2ee2ae[_0x857f('0x66')](_0x21cc84[_0x857f('0x2a')])||!_0x21cc84[_0x857f('0x67')]&&_0x21cc84[_0x857f('0x30')]!==_0x857f('0x68')&&_0x21cc84[_0x857f('0x30')]!==_0x857f('0x69');});return{'count':_0x21c0b6[_0x857f('0x39')],'rows':_[_0x857f('0x2c')](_0x21c0b6,function(_0x17522d){return{'id':_0x17522d['name'],'name':_0x17522d['label'],'custom':!_0x17522d['default'],'options':_0x17522d[_0x857f('0x6a')]?_[_0x857f('0x2c')](_0x17522d[_0x857f('0x6a')],function(_0x1f3c92){return{'name':_[_0x857f('0x6b')](_0x1f3c92),'value':_0x1f3c92};}):[]};})};}})[_0x857f('0x26')](respondWithResult(_0x48e588,null))[_0x857f('0x46')](function(_0x5e6f27){var _0x40077e=_0x35cd3e['query'][_0x857f('0x6c')]?0x1f4:_0x5e6f27['statusCode']||0x1f4;logger['error'](_0x857f('0x6d'),'getFields',_0x40077e,JSON[_0x857f('0x6e')](_0x5e6f27));delete _0x5e6f27[_0x857f('0x2a')];if(_0x40077e===0x191){_0x40077e=0x190;}_0x48e588[_0x857f('0x1c')](_0x40077e)['send'](_0x35cd3e[_0x857f('0x33')][_0x857f('0x6c')]?{'message':_0x857f('0x6f'),'statusCode':_0x5e6f27[_0x857f('0x70')]}:_0x5e6f27);});};
\ No newline at end of file
+var _0x9090=['type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','filter','where','merge','options','FreshdeskAccount','includeAll','rows','show','include','catch','create','body','find','params','findOne','FreshdeskConfiguration','getConfigurations','hasOwnProperty','AccountId','getSubjects','Descriptions','getDescriptions','channel','FreshdeskField','getFields','remoteUri','substring','format','%s/%s','apiKey','base64','requester','subject','agent','description','priority','group','source','default','custom_text','custom_dropdown','label','choices','capitalize','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','update','then','destroy','name','send','index','map','rawAttributes','fieldName'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9090,0x17f));var _0x0909=function(_0x1f22ee,_0xd384d0){_0x1f22ee=_0x1f22ee-0x0;var _0x109811=_0x9090[_0x1f22ee];return _0x109811;};'use strict';var emlformat=require(_0x0909('0x0'));var rimraf=require(_0x0909('0x1'));var zipdir=require(_0x0909('0x2'));var jsonpatch=require(_0x0909('0x3'));var rp=require(_0x0909('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x0909('0x5'));var util=require(_0x0909('0x6'));var path=require(_0x0909('0x7'));var sox=require('sox');var csv=require(_0x0909('0x8'));var ejs=require(_0x0909('0x9'));var fs=require('fs');var fs_extra=require(_0x0909('0xa'));var _=require(_0x0909('0xb'));var squel=require(_0x0909('0xc'));var crypto=require(_0x0909('0xd'));var jsforce=require(_0x0909('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x0909('0x8'));var querystring=require(_0x0909('0xf'));var Papa=require('papaparse');var Redis=require(_0x0909('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x0909('0x11'));var as=require(_0x0909('0x12'));var hardwareService=require(_0x0909('0x13'));var logger=require(_0x0909('0x14'))('api');var utils=require(_0x0909('0x15'));var config=require(_0x0909('0x16'));var licenseUtil=require(_0x0909('0x17'));var db=require(_0x0909('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x32f71a,_0x18c223){_0x18c223=_0x18c223||0xcc;return function(_0x2b75d){if(_0x2b75d){return _0x32f71a[_0x0909('0x19')](_0x18c223);}return _0x32f71a[_0x0909('0x1a')](_0x18c223)[_0x0909('0x1b')]();};}function respondWithResult(_0x3bdd30,_0x1811da){_0x1811da=_0x1811da||0xc8;return function(_0x1c56f3){if(_0x1c56f3){return _0x3bdd30[_0x0909('0x1a')](_0x1811da)['json'](_0x1c56f3);}};}function respondWithFilteredResult(_0x2c5892,_0x1eb8be){return function(_0x96edb6){if(_0x96edb6){var _0x2b4a82=typeof _0x1eb8be[_0x0909('0x1c')]===_0x0909('0x1d')&&typeof _0x1eb8be[_0x0909('0x1e')]===_0x0909('0x1d');var _0x592326=_0x96edb6[_0x0909('0x1f')];var _0x36dcad=_0x2b4a82?0x0:_0x1eb8be[_0x0909('0x1c')];var _0x498389=_0x2b4a82?_0x96edb6[_0x0909('0x1f')]:_0x1eb8be[_0x0909('0x1c')]+_0x1eb8be[_0x0909('0x1e')];var _0x5553ea;if(_0x498389>=_0x592326){_0x498389=_0x592326;_0x5553ea=0xc8;}else{_0x5553ea=0xce;}_0x2c5892['status'](_0x5553ea);return _0x2c5892[_0x0909('0x20')]('Content-Range',_0x36dcad+'-'+_0x498389+'/'+_0x592326)[_0x0909('0x21')](_0x96edb6);}return null;};}function patchUpdates(_0x2ccf21){return function(_0x26a2e3){try{jsonpatch[_0x0909('0x22')](_0x26a2e3,_0x2ccf21,!![]);}catch(_0x30fbfe){return BPromise[_0x0909('0x23')](_0x30fbfe);}return _0x26a2e3['save']();};}function saveUpdates(_0x46b384,_0x519c9f){return function(_0x85be47){if(_0x85be47){return _0x85be47[_0x0909('0x24')](_0x46b384)[_0x0909('0x25')](function(_0x3e71b9){return _0x3e71b9;});}return null;};}function removeEntity(_0x332b07,_0x510ba6){return function(_0x359706){if(_0x359706){return _0x359706[_0x0909('0x26')]()[_0x0909('0x25')](function(){_0x332b07[_0x0909('0x1a')](0xcc)[_0x0909('0x1b')]();});}};}function handleEntityNotFound(_0x53d139,_0x17d9a7){return function(_0x189ede){if(!_0x189ede){_0x53d139[_0x0909('0x19')](0x194);}return _0x189ede;};}function handleError(_0x165847,_0x59bee7){_0x59bee7=_0x59bee7||0x1f4;return function(_0x13784b){logger['error'](_0x13784b['stack']);if(_0x13784b[_0x0909('0x27')]){delete _0x13784b[_0x0909('0x27')];}_0x165847['status'](_0x59bee7)[_0x0909('0x28')](_0x13784b);};}exports[_0x0909('0x29')]=function(_0x28daaf,_0x512d7e){var _0x3c7d32={},_0x2775a4={},_0xbc1276={'count':0x0,'rows':[]};var _0xeaa356=_[_0x0909('0x2a')](db['FreshdeskAccount'][_0x0909('0x2b')],function(_0x569ef9){return{'name':_0x569ef9[_0x0909('0x2c')],'type':_0x569ef9[_0x0909('0x2d')]['key']};});_0x2775a4[_0x0909('0x2e')]=_[_0x0909('0x2a')](_0xeaa356,'name');_0x2775a4[_0x0909('0x2f')]=_[_0x0909('0x30')](_0x28daaf[_0x0909('0x2f')]);_0x2775a4[_0x0909('0x31')]=_[_0x0909('0x32')](_0x2775a4['model'],_0x2775a4[_0x0909('0x2f')]);_0x3c7d32[_0x0909('0x33')]=_[_0x0909('0x32')](_0x2775a4[_0x0909('0x2e')],qs['fields'](_0x28daaf[_0x0909('0x2f')][_0x0909('0x34')]));_0x3c7d32[_0x0909('0x33')]=_0x3c7d32[_0x0909('0x33')][_0x0909('0x35')]?_0x3c7d32[_0x0909('0x33')]:_0x2775a4[_0x0909('0x2e')];if(!_0x28daaf['query']['hasOwnProperty'](_0x0909('0x36'))){_0x3c7d32[_0x0909('0x1e')]=qs[_0x0909('0x1e')](_0x28daaf[_0x0909('0x2f')][_0x0909('0x1e')]);_0x3c7d32['offset']=qs[_0x0909('0x1c')](_0x28daaf['query'][_0x0909('0x1c')]);}_0x3c7d32[_0x0909('0x37')]=qs[_0x0909('0x38')](_0x28daaf[_0x0909('0x2f')][_0x0909('0x38')]);_0x3c7d32['where']=qs[_0x0909('0x31')](_['pick'](_0x28daaf[_0x0909('0x2f')],_0x2775a4[_0x0909('0x31')]),_0xeaa356);if(_0x28daaf[_0x0909('0x2f')][_0x0909('0x39')]){_0x3c7d32[_0x0909('0x3a')]=_[_0x0909('0x3b')](_0x3c7d32[_0x0909('0x3a')],{'$or':_[_0x0909('0x2a')](_0xeaa356,function(_0xd8bdab){if(_0xd8bdab[_0x0909('0x2d')]!=='VIRTUAL'){var _0x43155f={};_0x43155f[_0xd8bdab['name']]={'$like':'%'+_0x28daaf[_0x0909('0x2f')]['filter']+'%'};return _0x43155f;}})});}_0x3c7d32=_[_0x0909('0x3b')]({},_0x3c7d32,_0x28daaf[_0x0909('0x3c')]);var _0x195970={'where':_0x3c7d32[_0x0909('0x3a')]};return db[_0x0909('0x3d')][_0x0909('0x1f')](_0x195970)[_0x0909('0x25')](function(_0x29089a){_0xbc1276[_0x0909('0x1f')]=_0x29089a;if(_0x28daaf['query'][_0x0909('0x3e')]){_0x3c7d32['include']=[{'all':!![]}];}return db[_0x0909('0x3d')]['findAll'](_0x3c7d32);})[_0x0909('0x25')](function(_0x8e3b61){_0xbc1276[_0x0909('0x3f')]=_0x8e3b61;return _0xbc1276;})[_0x0909('0x25')](respondWithFilteredResult(_0x512d7e,_0x3c7d32))['catch'](handleError(_0x512d7e,null));};exports[_0x0909('0x40')]=function(_0x196b13,_0x1ea9f9){var _0x3e808e={'raw':![],'where':{'id':_0x196b13['params']['id']}},_0x1fcfa7={};_0x1fcfa7[_0x0909('0x2e')]=_[_0x0909('0x30')](db['FreshdeskAccount'][_0x0909('0x2b')]);_0x1fcfa7['query']=_[_0x0909('0x30')](_0x196b13['query']);_0x1fcfa7['filters']=_[_0x0909('0x32')](_0x1fcfa7[_0x0909('0x2e')],_0x1fcfa7['query']);_0x3e808e['attributes']=_[_0x0909('0x32')](_0x1fcfa7['model'],qs[_0x0909('0x34')](_0x196b13[_0x0909('0x2f')]['fields']));_0x3e808e['attributes']=_0x3e808e['attributes'][_0x0909('0x35')]?_0x3e808e[_0x0909('0x33')]:_0x1fcfa7[_0x0909('0x2e')];if(_0x196b13[_0x0909('0x2f')]['includeAll']){_0x3e808e[_0x0909('0x41')]=[{'all':!![]}];}_0x3e808e=_[_0x0909('0x3b')]({},_0x3e808e,_0x196b13[_0x0909('0x3c')]);return db[_0x0909('0x3d')]['find'](_0x3e808e)['then'](handleEntityNotFound(_0x1ea9f9,null))[_0x0909('0x25')](respondWithResult(_0x1ea9f9,null))[_0x0909('0x42')](handleError(_0x1ea9f9,null));};exports[_0x0909('0x43')]=function(_0x285863,_0x1f3eff){return db[_0x0909('0x3d')][_0x0909('0x43')](_0x285863[_0x0909('0x44')],{})['then'](respondWithResult(_0x1f3eff,0xc9))[_0x0909('0x42')](handleError(_0x1f3eff,null));};exports[_0x0909('0x24')]=function(_0x5e8f34,_0x190741){if(_0x5e8f34['body']['id']){delete _0x5e8f34[_0x0909('0x44')]['id'];}return db[_0x0909('0x3d')][_0x0909('0x45')]({'where':{'id':_0x5e8f34[_0x0909('0x46')]['id']}})[_0x0909('0x25')](handleEntityNotFound(_0x190741,null))[_0x0909('0x25')](saveUpdates(_0x5e8f34[_0x0909('0x44')],null))['then'](respondWithResult(_0x190741,null))[_0x0909('0x42')](handleError(_0x190741,null));};exports[_0x0909('0x26')]=function(_0x16c20a,_0x3ca8cf){return db[_0x0909('0x3d')][_0x0909('0x45')]({'where':{'id':_0x16c20a['params']['id']}})[_0x0909('0x25')](handleEntityNotFound(_0x3ca8cf,null))['then'](removeEntity(_0x3ca8cf,null))['catch'](handleError(_0x3ca8cf,null));};exports['getConfigurations']=function(_0x5cf171,_0x27eedd,_0x12924a){var _0x558e06={};var _0x4e5563={};var _0x3d45c8;var _0x14b649;return db[_0x0909('0x3d')][_0x0909('0x47')]({'where':{'id':_0x5cf171[_0x0909('0x46')]['id']}})[_0x0909('0x25')](handleEntityNotFound(_0x27eedd,null))[_0x0909('0x25')](function(_0x3502b6){if(_0x3502b6){_0x3d45c8=_0x3502b6;_0x4e5563['model']=_['keys'](db[_0x0909('0x48')]['rawAttributes']);_0x4e5563['query']=_[_0x0909('0x30')](_0x5cf171[_0x0909('0x2f')]);_0x4e5563[_0x0909('0x31')]=_[_0x0909('0x32')](_0x4e5563[_0x0909('0x2e')],_0x4e5563[_0x0909('0x2f')]);_0x558e06[_0x0909('0x33')]=_[_0x0909('0x32')](_0x4e5563[_0x0909('0x2e')],qs[_0x0909('0x34')](_0x5cf171['query'][_0x0909('0x34')]));_0x558e06[_0x0909('0x33')]=_0x558e06[_0x0909('0x33')][_0x0909('0x35')]?_0x558e06['attributes']:_0x4e5563[_0x0909('0x2e')];_0x558e06['order']=qs['sort'](_0x5cf171['query'][_0x0909('0x38')]);_0x558e06[_0x0909('0x3a')]=qs['filters'](_['pick'](_0x5cf171['query'],_0x4e5563['filters']));if(_0x5cf171['query'][_0x0909('0x39')]){_0x558e06['where']=_[_0x0909('0x3b')](_0x558e06[_0x0909('0x3a')],{'$or':_['map'](_0x558e06[_0x0909('0x33')],function(_0x2b7471){var _0x1b1fd3={};_0x1b1fd3[_0x2b7471]={'$like':'%'+_0x5cf171[_0x0909('0x2f')][_0x0909('0x39')]+'%'};return _0x1b1fd3;})});}_0x558e06=_['merge']({},_0x558e06,_0x5cf171[_0x0909('0x3c')]);return _0x3d45c8[_0x0909('0x49')](_0x558e06);}})[_0x0909('0x25')](function(_0xb42f){if(_0xb42f){_0x14b649=_0xb42f['length'];if(!_0x5cf171[_0x0909('0x2f')][_0x0909('0x4a')]('nolimit')){_0x558e06[_0x0909('0x1e')]=qs[_0x0909('0x1e')](_0x5cf171[_0x0909('0x2f')][_0x0909('0x1e')]);_0x558e06[_0x0909('0x1c')]=qs[_0x0909('0x1c')](_0x5cf171[_0x0909('0x2f')][_0x0909('0x1c')]);}return _0x3d45c8['getConfigurations'](_0x558e06);}})[_0x0909('0x25')](function(_0x45dfd1){if(_0x45dfd1){return _0x45dfd1?{'count':_0x14b649,'rows':_0x45dfd1}:null;}})['then'](respondWithResult(_0x27eedd,null))[_0x0909('0x42')](handleError(_0x27eedd,null));};exports['addConfiguration']=function(_0x99ca59,_0x5c7bae,_0x19c249){if(_0x99ca59[_0x0909('0x44')]['id']){delete _0x99ca59[_0x0909('0x44')]['id'];}return db[_0x0909('0x3d')][_0x0909('0x47')]({'where':{'id':_0x99ca59[_0x0909('0x46')]['id']}})[_0x0909('0x25')](handleEntityNotFound(_0x5c7bae,null))['then'](function(_0x145903){if(_0x145903){_0x99ca59['body'][_0x0909('0x4b')]=_0x145903['id'];_0x99ca59[_0x0909('0x44')]['Subjects']=integrations[_0x0909('0x4c')](_0x99ca59[_0x0909('0x44')]['channel'],_0x99ca59[_0x0909('0x44')]['type']);_0x99ca59[_0x0909('0x44')][_0x0909('0x4d')]=integrations[_0x0909('0x4e')](_0x99ca59[_0x0909('0x44')][_0x0909('0x4f')],_0x99ca59[_0x0909('0x44')]['type']);return db[_0x0909('0x48')]['create'](_0x99ca59[_0x0909('0x44')],{'include':[{'model':db[_0x0909('0x50')],'as':'Subjects'},{'model':db[_0x0909('0x50')],'as':_0x0909('0x4d')}]});}return null;})['then'](respondWithResult(_0x5c7bae,null))[_0x0909('0x42')](handleError(_0x5c7bae,null));};exports[_0x0909('0x51')]=function(_0x25af55,_0x436a3d,_0x2bd77d){var _0x2cddbf='';return db[_0x0909('0x3d')][_0x0909('0x47')]({'where':{'id':_0x25af55[_0x0909('0x46')]['id']},'attributes':['id',_0x0909('0x52'),'apiKey']})[_0x0909('0x25')](handleEntityNotFound(_0x436a3d,null))[_0x0909('0x25')](function(_0x3bc4ff){if(_0x3bc4ff){_0x2cddbf=_0x3bc4ff[_0x0909('0x52')];var _0x30d203=_0x2cddbf['slice'](-0x1);if(_0x30d203==='/'){_0x2cddbf=_0x2cddbf[_0x0909('0x53')](0x0,_0x2cddbf['lastIndexOf'](_0x30d203));}return rp({'method':'GET','uri':util[_0x0909('0x54')](_0x0909('0x55'),_0x2cddbf,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0x0909('0x54')]('Basic\x20%s',new Buffer(util[_0x0909('0x54')]('%s:X',_0x3bc4ff[_0x0909('0x56')]))['toString'](_0x0909('0x57')))},'json':!![]});}})['then'](function(_0xe6b52){if(_0xe6b52){var _0x1e22e7=[_0x0909('0x58'),_0x0909('0x59'),_0x0909('0x5a'),_0x0909('0x5b'),'status',_0x0909('0x5c'),_0x0909('0x5d'),_0x0909('0x5e'),'ticket_type',_0x0909('0x5d'),'company'];_['remove'](_0xe6b52,function(_0x464d7){return _0x1e22e7['includes'](_0x464d7[_0x0909('0x27')])||!_0x464d7[_0x0909('0x5f')]&&_0x464d7['type']!==_0x0909('0x60')&&_0x464d7[_0x0909('0x2d')]!==_0x0909('0x61');});return{'count':_0xe6b52[_0x0909('0x35')],'rows':_[_0x0909('0x2a')](_0xe6b52,function(_0x2e9013){return{'id':_0x2e9013[_0x0909('0x27')],'name':_0x2e9013[_0x0909('0x62')],'custom':!_0x2e9013['default'],'options':_0x2e9013[_0x0909('0x63')]?_[_0x0909('0x2a')](_0x2e9013[_0x0909('0x63')],function(_0xccb9c){return{'name':_[_0x0909('0x64')](_0xccb9c),'value':_0xccb9c};}):[]};})};}})['then'](respondWithResult(_0x436a3d,null))[_0x0909('0x42')](function(_0xd45dcf){var _0x1242fb=_0x25af55[_0x0909('0x2f')][_0x0909('0x65')]?0x1f4:_0xd45dcf[_0x0909('0x66')]||0x1f4;logger[_0x0909('0x67')](_0x0909('0x68'),'getFields',_0x1242fb,JSON[_0x0909('0x69')](_0xd45dcf));delete _0xd45dcf['name'];if(_0x1242fb===0x191){_0x1242fb=0x190;}_0x436a3d[_0x0909('0x1a')](_0x1242fb)[_0x0909('0x28')](_0x25af55[_0x0909('0x2f')][_0x0909('0x65')]?{'message':_0x0909('0x6a'),'statusCode':_0xd45dcf['statusCode']}:_0xd45dcf);});};
\ No newline at end of file
index 0caa716..e4c93a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77bb=['request-promise','path','rimraf','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports','define','FreshdeskAccount','int_freshdesk_accounts','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x5ae66a,_0x5d034a){var _0x195485=function(_0x53ecea){while(--_0x53ecea){_0x5ae66a['push'](_0x5ae66a['shift']());}};_0x195485(++_0x5d034a);}(_0x77bb,0xea));var _0xb77b=function(_0x3f9f22,_0x9fd1f8){_0x3f9f22=_0x3f9f22-0x0;var _0x201093=_0x77bb[_0x3f9f22];return _0x201093;};'use strict';var _=require(_0xb77b('0x0'));var util=require(_0xb77b('0x1'));var logger=require(_0xb77b('0x2'))(_0xb77b('0x3'));var moment=require(_0xb77b('0x4'));var BPromise=require(_0xb77b('0x5'));var rp=require(_0xb77b('0x6'));var fs=require('fs');var path=require(_0xb77b('0x7'));var rimraf=require(_0xb77b('0x8'));var config=require('../../config/environment');var attributes=require(_0xb77b('0x9'));var integrations=require(_0xb77b('0xa'));module[_0xb77b('0xb')]=function(_0x27484c,_0x19ed75){return _0x27484c[_0xb77b('0xc')](_0xb77b('0xd'),attributes,{'tableName':_0xb77b('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5f78=['../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','define','FreshdeskAccount','int_freshdesk_accounts','lodash','util'];(function(_0x33e8d9,_0x41738f){var _0x2d47d7=function(_0x1a8955){while(--_0x1a8955){_0x33e8d9['push'](_0x33e8d9['shift']());}};_0x2d47d7(++_0x41738f);}(_0x5f78,0x66));var _0x85f7=function(_0x5f12fd,_0x33c70d){_0x5f12fd=_0x5f12fd-0x0;var _0x58bd80=_0x5f78[_0x5f12fd];return _0x58bd80;};'use strict';var _=require(_0x85f7('0x0'));var util=require(_0x85f7('0x1'));var logger=require(_0x85f7('0x2'))(_0x85f7('0x3'));var moment=require('moment');var BPromise=require(_0x85f7('0x4'));var rp=require(_0x85f7('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x85f7('0x6'));var config=require(_0x85f7('0x7'));var attributes=require(_0x85f7('0x8'));var integrations=require(_0x85f7('0x9'));module['exports']=function(_0x5a68c2,_0x21ed49){return _0x5a68c2[_0x85f7('0xa')](_0x85f7('0xb'),attributes,{'tableName':_0x85f7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b28aa3e..756bec7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x827b=['limit','include','map','attributes','model','GetFreshdeskAccount','debug','find','ShowFreshdeskAccount','util','moment','bluebird','randomstring','ioredis','../../config/environment','http','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','FreshdeskAccount','options','raw','where'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0x827b,0x90));var _0xb827=function(_0x571c91,_0x5aff63){_0x571c91=_0x571c91-0x0;var _0x5dbfd0=_0x827b[_0x571c91];return _0x5dbfd0;};'use strict';var _=require('lodash');var util=require(_0xb827('0x0'));var moment=require(_0xb827('0x1'));var BPromise=require(_0xb827('0x2'));var rs=require(_0xb827('0x3'));var fs=require('fs');var Redis=require(_0xb827('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xb827('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb827('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x31f81f,_0x3636db,_0x43363e){return new BPromise(function(_0x301a63,_0x52905e){return client['request'](_0x31f81f,_0x43363e)['then'](function(_0x43b450){logger[_0xb827('0x7')](_0xb827('0x8'),_0x3636db,'request\x20sent');logger['debug']('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x3636db,_0xb827('0x9'),JSON[_0xb827('0xa')](_0x43b450));if(_0x43b450[_0xb827('0xb')]){if(_0x43b450[_0xb827('0xb')]['code']===0x1f4){logger['error'](_0xb827('0x8'),_0x3636db,_0x43b450[_0xb827('0xb')][_0xb827('0xc')]);return _0x52905e(_0x43b450[_0xb827('0xb')]['message']);}logger[_0xb827('0xb')](_0xb827('0x8'),_0x3636db,_0x43b450[_0xb827('0xb')][_0xb827('0xc')]);return _0x301a63(_0x43b450[_0xb827('0xb')][_0xb827('0xc')]);}else{logger[_0xb827('0x7')](_0xb827('0x8'),_0x3636db,_0xb827('0x9'));_0x301a63(_0x43b450['result'][_0xb827('0xc')]);}})[_0xb827('0xd')](function(_0x56f546){logger[_0xb827('0xb')](_0xb827('0x8'),_0x3636db,_0x56f546);_0x52905e(_0x56f546);});});}exports['GetFreshdeskAccount']=function(_0x58b75f){var _0xfeaac5=this;return new Promise(function(_0x476c39,_0x12bb8d){return db[_0xb827('0xe')]['findAll']({'raw':_0x58b75f[_0xb827('0xf')]?_0x58b75f[_0xb827('0xf')][_0xb827('0x10')]===undefined?!![]:![]:!![],'where':_0x58b75f[_0xb827('0xf')]?_0x58b75f[_0xb827('0xf')][_0xb827('0x11')]||null:null,'attributes':_0x58b75f['options']?_0x58b75f[_0xb827('0xf')]['attributes']||null:null,'limit':_0x58b75f[_0xb827('0xf')]?_0x58b75f[_0xb827('0xf')][_0xb827('0x12')]||null:null,'include':_0x58b75f[_0xb827('0xf')]?_0x58b75f[_0xb827('0xf')][_0xb827('0x13')]?_[_0xb827('0x14')](_0x58b75f[_0xb827('0xf')]['include'],function(_0x3c9bdc){return{'model':db[_0x3c9bdc['model']],'as':_0x3c9bdc['as'],'attributes':_0x3c9bdc[_0xb827('0x15')],'include':_0x3c9bdc[_0xb827('0x13')]?_[_0xb827('0x14')](_0x3c9bdc['include'],function(_0x22d857){return{'model':db[_0x22d857[_0xb827('0x16')]],'as':_0x22d857['as'],'attributes':_0x22d857[_0xb827('0x15')],'include':_0x22d857[_0xb827('0x13')]?_[_0xb827('0x14')](_0x22d857['include'],function(_0x3929a7){return{'model':db[_0x3929a7[_0xb827('0x16')]],'as':_0x3929a7['as'],'attributes':_0x3929a7['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x549f26){logger[_0xb827('0x7')](_0xb827('0x17'),_0x58b75f);logger[_0xb827('0x18')](_0xb827('0x17'),_0x58b75f,JSON[_0xb827('0xa')](_0x549f26));_0x476c39(_0x549f26);})[_0xb827('0xd')](function(_0x1532a9){logger[_0xb827('0xb')](_0xb827('0x17'),_0x1532a9[_0xb827('0xc')],_0x58b75f);_0x12bb8d(_0xfeaac5['error'](0x1f4,_0x1532a9['message']));});});};exports['ShowFreshdeskAccount']=function(_0x384a36){var _0x3d5cd5=this;return new Promise(function(_0x53baf2,_0x20e911){return db[_0xb827('0xe')][_0xb827('0x19')]({'raw':_0x384a36[_0xb827('0xf')]?_0x384a36[_0xb827('0xf')][_0xb827('0x10')]===undefined?!![]:![]:!![],'where':_0x384a36['options']?_0x384a36[_0xb827('0xf')]['where']||null:null,'attributes':_0x384a36['options']?_0x384a36[_0xb827('0xf')][_0xb827('0x15')]||null:null,'include':_0x384a36[_0xb827('0xf')]?_0x384a36[_0xb827('0xf')][_0xb827('0x13')]?_[_0xb827('0x14')](_0x384a36['options'][_0xb827('0x13')],function(_0x1d7170){return{'model':db[_0x1d7170[_0xb827('0x16')]],'as':_0x1d7170['as'],'attributes':_0x1d7170['attributes'],'include':_0x1d7170[_0xb827('0x13')]?_['map'](_0x1d7170[_0xb827('0x13')],function(_0x2b40d4){return{'model':db[_0x2b40d4[_0xb827('0x16')]],'as':_0x2b40d4['as'],'attributes':_0x2b40d4[_0xb827('0x15')],'include':_0x2b40d4[_0xb827('0x13')]?_['map'](_0x2b40d4[_0xb827('0x13')],function(_0x1fe8f9){return{'model':db[_0x1fe8f9[_0xb827('0x16')]],'as':_0x1fe8f9['as'],'attributes':_0x1fe8f9[_0xb827('0x15')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x84ed20){logger[_0xb827('0x7')]('ShowFreshdeskAccount',_0x384a36);logger[_0xb827('0x18')](_0xb827('0x1a'),_0x384a36,JSON[_0xb827('0xa')](_0x84ed20));_0x53baf2(_0x84ed20);})[_0xb827('0xd')](function(_0x57914f){logger[_0xb827('0xb')]('ShowFreshdeskAccount',_0x57914f[_0xb827('0xc')],_0x384a36);_0x20e911(_0x3d5cd5[_0xb827('0xb')](0x1f4,_0x57914f[_0xb827('0xc')]));});});};
\ No newline at end of file
+var _0x1f5c=['debug','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','FreshdeskAccount,\x20%s,\x20%s','FreshdeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','FreshdeskAccount','findAll','options','raw','attributes','include','model','map','GetFreshdeskAccount','ShowFreshdeskAccount','find','where'];(function(_0x592201,_0x9f3fdd){var _0x248ad8=function(_0x349247){while(--_0x349247){_0x592201['push'](_0x592201['shift']());}};_0x248ad8(++_0x9f3fdd);}(_0x1f5c,0xb0));var _0xc1f5=function(_0x1fe081,_0x4654fd){_0x1fe081=_0x1fe081-0x0;var _0x39f2ad=_0x1f5c[_0x1fe081];return _0x39f2ad;};'use strict';var _=require(_0xc1f5('0x0'));var util=require(_0xc1f5('0x1'));var moment=require(_0xc1f5('0x2'));var BPromise=require(_0xc1f5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc1f5('0x4'));var db=require(_0xc1f5('0x5'))['db'];var utils=require(_0xc1f5('0x6'));var logger=require('../../config/logger')(_0xc1f5('0x7'));var config=require('../../config/environment');var jayson=require(_0xc1f5('0x8'));var client=jayson[_0xc1f5('0x9')][_0xc1f5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x17910d,_0x1a0ee5,_0x45cd04){return new BPromise(function(_0x24a1df,_0x50af43){return client[_0xc1f5('0xb')](_0x17910d,_0x45cd04)[_0xc1f5('0xc')](function(_0x38854b){logger['info'](_0xc1f5('0xd'),_0x1a0ee5,'request\x20sent');logger['debug'](_0xc1f5('0xe'),_0x1a0ee5,_0xc1f5('0xf'),JSON[_0xc1f5('0x10')](_0x38854b));if(_0x38854b['error']){if(_0x38854b[_0xc1f5('0x11')]['code']===0x1f4){logger['error'](_0xc1f5('0xd'),_0x1a0ee5,_0x38854b[_0xc1f5('0x11')][_0xc1f5('0x12')]);return _0x50af43(_0x38854b[_0xc1f5('0x11')][_0xc1f5('0x12')]);}logger[_0xc1f5('0x11')](_0xc1f5('0xd'),_0x1a0ee5,_0x38854b[_0xc1f5('0x11')][_0xc1f5('0x12')]);return _0x24a1df(_0x38854b[_0xc1f5('0x11')]['message']);}else{logger[_0xc1f5('0x13')](_0xc1f5('0xd'),_0x1a0ee5,_0xc1f5('0xf'));_0x24a1df(_0x38854b[_0xc1f5('0x14')][_0xc1f5('0x12')]);}})[_0xc1f5('0x15')](function(_0x4a7ce7){logger[_0xc1f5('0x11')]('FreshdeskAccount,\x20%s,\x20%s',_0x1a0ee5,_0x4a7ce7);_0x50af43(_0x4a7ce7);});});}exports['GetFreshdeskAccount']=function(_0x27e5d9){var _0x177a68=this;return new Promise(function(_0x542861,_0x31d69f){return db[_0xc1f5('0x16')][_0xc1f5('0x17')]({'raw':_0x27e5d9[_0xc1f5('0x18')]?_0x27e5d9['options'][_0xc1f5('0x19')]===undefined?!![]:![]:!![],'where':_0x27e5d9['options']?_0x27e5d9[_0xc1f5('0x18')]['where']||null:null,'attributes':_0x27e5d9[_0xc1f5('0x18')]?_0x27e5d9[_0xc1f5('0x18')][_0xc1f5('0x1a')]||null:null,'limit':_0x27e5d9[_0xc1f5('0x18')]?_0x27e5d9[_0xc1f5('0x18')]['limit']||null:null,'include':_0x27e5d9[_0xc1f5('0x18')]?_0x27e5d9[_0xc1f5('0x18')][_0xc1f5('0x1b')]?_['map'](_0x27e5d9[_0xc1f5('0x18')][_0xc1f5('0x1b')],function(_0x3167a1){return{'model':db[_0x3167a1[_0xc1f5('0x1c')]],'as':_0x3167a1['as'],'attributes':_0x3167a1[_0xc1f5('0x1a')],'include':_0x3167a1[_0xc1f5('0x1b')]?_[_0xc1f5('0x1d')](_0x3167a1[_0xc1f5('0x1b')],function(_0x411d73){return{'model':db[_0x411d73[_0xc1f5('0x1c')]],'as':_0x411d73['as'],'attributes':_0x411d73['attributes'],'include':_0x411d73['include']?_[_0xc1f5('0x1d')](_0x411d73[_0xc1f5('0x1b')],function(_0x4999cb){return{'model':db[_0x4999cb['model']],'as':_0x4999cb['as'],'attributes':_0x4999cb[_0xc1f5('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xc1f5('0xc')](function(_0x27c535){logger[_0xc1f5('0x13')](_0xc1f5('0x1e'),_0x27e5d9);logger['debug'](_0xc1f5('0x1e'),_0x27e5d9,JSON['stringify'](_0x27c535));_0x542861(_0x27c535);})[_0xc1f5('0x15')](function(_0x4ccb96){logger['error']('GetFreshdeskAccount',_0x4ccb96[_0xc1f5('0x12')],_0x27e5d9);_0x31d69f(_0x177a68[_0xc1f5('0x11')](0x1f4,_0x4ccb96['message']));});});};exports[_0xc1f5('0x1f')]=function(_0x1a3be5){var _0x2b8b36=this;return new Promise(function(_0x49c327,_0x36ba98){return db['FreshdeskAccount'][_0xc1f5('0x20')]({'raw':_0x1a3be5[_0xc1f5('0x18')]?_0x1a3be5[_0xc1f5('0x18')][_0xc1f5('0x19')]===undefined?!![]:![]:!![],'where':_0x1a3be5[_0xc1f5('0x18')]?_0x1a3be5[_0xc1f5('0x18')][_0xc1f5('0x21')]||null:null,'attributes':_0x1a3be5[_0xc1f5('0x18')]?_0x1a3be5['options'][_0xc1f5('0x1a')]||null:null,'include':_0x1a3be5[_0xc1f5('0x18')]?_0x1a3be5[_0xc1f5('0x18')][_0xc1f5('0x1b')]?_[_0xc1f5('0x1d')](_0x1a3be5['options'][_0xc1f5('0x1b')],function(_0x28570e){return{'model':db[_0x28570e['model']],'as':_0x28570e['as'],'attributes':_0x28570e[_0xc1f5('0x1a')],'include':_0x28570e[_0xc1f5('0x1b')]?_[_0xc1f5('0x1d')](_0x28570e[_0xc1f5('0x1b')],function(_0x533d55){return{'model':db[_0x533d55[_0xc1f5('0x1c')]],'as':_0x533d55['as'],'attributes':_0x533d55['attributes'],'include':_0x533d55['include']?_['map'](_0x533d55['include'],function(_0x4d022c){return{'model':db[_0x4d022c[_0xc1f5('0x1c')]],'as':_0x4d022c['as'],'attributes':_0x4d022c[_0xc1f5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4f890e){logger[_0xc1f5('0x13')](_0xc1f5('0x1f'),_0x1a3be5);logger[_0xc1f5('0x22')](_0xc1f5('0x1f'),_0x1a3be5,JSON['stringify'](_0x4f890e));_0x49c327(_0x4f890e);})[_0xc1f5('0x15')](function(_0x57f1bc){logger[_0xc1f5('0x11')](_0xc1f5('0x1f'),_0x57f1bc[_0xc1f5('0x12')],_0x1a3be5);_0x36ba98(_0x2b8b36[_0xc1f5('0x11')](0x1f4,_0x57f1bc[_0xc1f5('0x12')]));});});};
\ No newline at end of file
index 0191a50..958b0bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4fb=['setTags','delete','multer','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','create'];(function(_0xddf83a,_0x5b6885){var _0x1b619f=function(_0xbee7e8){while(--_0xbee7e8){_0xddf83a['push'](_0xddf83a['shift']());}};_0x1b619f(++_0x5b6885);}(_0xa4fb,0xb1));var _0xba4f=function(_0x4b0290,_0x188c34){_0x4b0290=_0x4b0290-0x0;var _0x4bd9f4=_0xa4fb[_0x4b0290];return _0x4bd9f4;};'use strict';var multer=require(_0xba4f('0x0'));var util=require('util');var path=require(_0xba4f('0x1'));var timeout=require('connect-timeout');var express=require(_0xba4f('0x2'));var router=express[_0xba4f('0x3')]();var fs_extra=require(_0xba4f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xba4f('0x5'));var config=require(_0xba4f('0x6'));var controller=require(_0xba4f('0x7'));router[_0xba4f('0x8')]('/',auth[_0xba4f('0x9')](),controller[_0xba4f('0xa')]);router[_0xba4f('0x8')](_0xba4f('0xb'),auth[_0xba4f('0x9')](),controller[_0xba4f('0xc')]);router[_0xba4f('0x8')](_0xba4f('0xd'),auth[_0xba4f('0x9')](),controller[_0xba4f('0xe')]);router[_0xba4f('0x8')](_0xba4f('0xf'),auth[_0xba4f('0x9')](),controller[_0xba4f('0x10')]);router[_0xba4f('0x8')](_0xba4f('0x11'),auth['isAuthenticated'](),controller[_0xba4f('0x12')]);router[_0xba4f('0x8')](_0xba4f('0x13'),auth['isAuthenticated'](),controller[_0xba4f('0x14')]);router[_0xba4f('0x15')]('/',auth[_0xba4f('0x9')](),controller[_0xba4f('0x16')]);router[_0xba4f('0x15')](_0xba4f('0x13'),auth[_0xba4f('0x9')](),controller[_0xba4f('0x17')]);router['put'](_0xba4f('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xba4f('0x18')]('/:id',auth[_0xba4f('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xc9e9=['show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','getTags','post','create','/:id/tags','setTags','update','destroy','exports','multer','path','connect-timeout','Router','../../components/auth/service','./intFreshdeskConfiguration.controller','get','isAuthenticated','/:id'];(function(_0x421c56,_0x4efd00){var _0x49b244=function(_0x5cd079){while(--_0x5cd079){_0x421c56['push'](_0x421c56['shift']());}};_0x49b244(++_0x4efd00);}(_0xc9e9,0xcf));var _0x9c9e=function(_0x3ad7ad,_0x291a8d){_0x3ad7ad=_0x3ad7ad-0x0;var _0x225a60=_0xc9e9[_0x3ad7ad];return _0x225a60;};'use strict';var multer=require(_0x9c9e('0x0'));var util=require('util');var path=require(_0x9c9e('0x1'));var timeout=require(_0x9c9e('0x2'));var express=require('express');var router=express[_0x9c9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x9c9e('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x9c9e('0x5'));router[_0x9c9e('0x6')]('/',auth[_0x9c9e('0x7')](),controller['index']);router[_0x9c9e('0x6')](_0x9c9e('0x8'),auth[_0x9c9e('0x7')](),controller[_0x9c9e('0x9')]);router[_0x9c9e('0x6')](_0x9c9e('0xa'),auth[_0x9c9e('0x7')](),controller[_0x9c9e('0xb')]);router['get'](_0x9c9e('0xc'),auth[_0x9c9e('0x7')](),controller[_0x9c9e('0xd')]);router[_0x9c9e('0x6')](_0x9c9e('0xe'),auth['isAuthenticated'](),controller[_0x9c9e('0xf')]);router[_0x9c9e('0x6')]('/:id/tags',auth[_0x9c9e('0x7')](),controller[_0x9c9e('0x10')]);router[_0x9c9e('0x11')]('/',auth['isAuthenticated'](),controller[_0x9c9e('0x12')]);router[_0x9c9e('0x11')](_0x9c9e('0x13'),auth[_0x9c9e('0x7')](),controller[_0x9c9e('0x14')]);router['put'](_0x9c9e('0x8'),auth[_0x9c9e('0x7')](),controller[_0x9c9e('0x15')]);router['delete'](_0x9c9e('0x8'),auth[_0x9c9e('0x7')](),controller[_0x9c9e('0x16')]);module[_0x9c9e('0x17')]=router;
\ No newline at end of file
index 1217341..88468f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8355=['exports','STRING','sequelize'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x8355,0x1d3));var _0x5835=function(_0x5a76fd,_0x411087){_0x5a76fd=_0x5a76fd-0x0;var _0x335fd8=_0x8355[_0x5a76fd];return _0x335fd8;};'use strict';var Sequelize=require(_0x5835('0x0'));module[_0x5835('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x5835('0x2')]}};
\ No newline at end of file
+var _0xb6ee=['STRING','sequelize','exports'];(function(_0x15ad02,_0x56ace9){var _0x3c87da=function(_0x32ced0){while(--_0x32ced0){_0x15ad02['push'](_0x15ad02['shift']());}};_0x3c87da(++_0x56ace9);}(_0xb6ee,0x12d));var _0xeb6e=function(_0x373b66,_0x4fcde7){_0x373b66=_0x373b66-0x0;var _0x4f2eca=_0xb6ee[_0x373b66];return _0x4f2eca;};'use strict';var Sequelize=require(_0xeb6e('0x0'));module[_0xeb6e('0x1')]={'name':{'type':Sequelize[_0xeb6e('0x2')]},'description':{'type':Sequelize[_0xeb6e('0x2')]}};
\ No newline at end of file
index a3ea256..67c1cb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c30=['sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','update','then','error','stack','name','send','index','map','FreshdeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','catch','show','params','length','find','create','body','getFields','findOne','FreshdeskField','nolimit','getSubjects','getDescriptions','getTags','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','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/license/util','../../mysqldb'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x8c30,0x138));var _0x08c3=function(_0x15a88e,_0xbcde16){_0x15a88e=_0x15a88e-0x0;var _0x53d95a=_0x8c30[_0x15a88e];return _0x53d95a;};'use strict';var emlformat=require(_0x08c3('0x0'));var rimraf=require(_0x08c3('0x1'));var zipdir=require(_0x08c3('0x2'));var jsonpatch=require(_0x08c3('0x3'));var rp=require(_0x08c3('0x4'));var moment=require(_0x08c3('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x08c3('0x6'));var util=require(_0x08c3('0x7'));var path=require('path');var sox=require(_0x08c3('0x8'));var csv=require(_0x08c3('0x9'));var ejs=require(_0x08c3('0xa'));var fs=require('fs');var fs_extra=require(_0x08c3('0xb'));var _=require(_0x08c3('0xc'));var squel=require(_0x08c3('0xd'));var crypto=require(_0x08c3('0xe'));var jsforce=require(_0x08c3('0xf'));var deskjs=require(_0x08c3('0x10'));var toCsv=require(_0x08c3('0x9'));var querystring=require(_0x08c3('0x11'));var Papa=require(_0x08c3('0x12'));var Redis=require('ioredis');var authService=require(_0x08c3('0x13'));var qs=require(_0x08c3('0x14'));var as=require(_0x08c3('0x15'));var hardwareService=require(_0x08c3('0x16'));var logger=require(_0x08c3('0x17'))(_0x08c3('0x18'));var utils=require(_0x08c3('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x08c3('0x1a'));var db=require(_0x08c3('0x1b'))['db'];function respondWithStatusCode(_0x533108,_0xb0babb){_0xb0babb=_0xb0babb||0xcc;return function(_0x56ac4b){if(_0x56ac4b){return _0x533108[_0x08c3('0x1c')](_0xb0babb);}return _0x533108['status'](_0xb0babb)['end']();};}function respondWithResult(_0xaf7427,_0xee85fe){_0xee85fe=_0xee85fe||0xc8;return function(_0x938bac){if(_0x938bac){return _0xaf7427[_0x08c3('0x1d')](_0xee85fe)[_0x08c3('0x1e')](_0x938bac);}};}function respondWithFilteredResult(_0x5ddce6,_0x201a9a){return function(_0x380222){if(_0x380222){var _0x512ec5=typeof _0x201a9a[_0x08c3('0x1f')]==='undefined'&&typeof _0x201a9a['limit']===_0x08c3('0x20');var _0x40977e=_0x380222['count'];var _0x16242c=_0x512ec5?0x0:_0x201a9a[_0x08c3('0x1f')];var _0x46ca75=_0x512ec5?_0x380222[_0x08c3('0x21')]:_0x201a9a[_0x08c3('0x1f')]+_0x201a9a[_0x08c3('0x22')];var _0x6596e9;if(_0x46ca75>=_0x40977e){_0x46ca75=_0x40977e;_0x6596e9=0xc8;}else{_0x6596e9=0xce;}_0x5ddce6[_0x08c3('0x1d')](_0x6596e9);return _0x5ddce6[_0x08c3('0x23')](_0x08c3('0x24'),_0x16242c+'-'+_0x46ca75+'/'+_0x40977e)[_0x08c3('0x1e')](_0x380222);}return null;};}function patchUpdates(_0x24c50b){return function(_0x2b62dc){try{jsonpatch[_0x08c3('0x25')](_0x2b62dc,_0x24c50b,!![]);}catch(_0x45ad66){return BPromise['reject'](_0x45ad66);}return _0x2b62dc['save']();};}function saveUpdates(_0x210757,_0x36eb36){return function(_0x319ebd){if(_0x319ebd){return _0x319ebd[_0x08c3('0x26')](_0x210757)['then'](function(_0x5ee24f){return _0x5ee24f;});}return null;};}function removeEntity(_0x2fe552,_0x2aec4b){return function(_0x54a7c9){if(_0x54a7c9){return _0x54a7c9['destroy']()[_0x08c3('0x27')](function(){_0x2fe552[_0x08c3('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x271a8b,_0x558be9){return function(_0x359a65){if(!_0x359a65){_0x271a8b[_0x08c3('0x1c')](0x194);}return _0x359a65;};}function handleError(_0x2ee225,_0x48deeb){_0x48deeb=_0x48deeb||0x1f4;return function(_0x53fa34){logger[_0x08c3('0x28')](_0x53fa34[_0x08c3('0x29')]);if(_0x53fa34[_0x08c3('0x2a')]){delete _0x53fa34[_0x08c3('0x2a')];}_0x2ee225[_0x08c3('0x1d')](_0x48deeb)[_0x08c3('0x2b')](_0x53fa34);};}exports[_0x08c3('0x2c')]=function(_0x4d68a3,_0x1bd681){var _0x5df90b={},_0x533fd7={},_0x384a8d={'count':0x0,'rows':[]};var _0x2c2395=_[_0x08c3('0x2d')](db[_0x08c3('0x2e')][_0x08c3('0x2f')],function(_0x5bef83){return{'name':_0x5bef83[_0x08c3('0x30')],'type':_0x5bef83[_0x08c3('0x31')][_0x08c3('0x32')]};});_0x533fd7[_0x08c3('0x33')]=_[_0x08c3('0x2d')](_0x2c2395,_0x08c3('0x2a'));_0x533fd7[_0x08c3('0x34')]=_[_0x08c3('0x35')](_0x4d68a3['query']);_0x533fd7[_0x08c3('0x36')]=_[_0x08c3('0x37')](_0x533fd7[_0x08c3('0x33')],_0x533fd7['query']);_0x5df90b['attributes']=_[_0x08c3('0x37')](_0x533fd7[_0x08c3('0x33')],qs['fields'](_0x4d68a3[_0x08c3('0x34')][_0x08c3('0x38')]));_0x5df90b[_0x08c3('0x39')]=_0x5df90b[_0x08c3('0x39')]['length']?_0x5df90b[_0x08c3('0x39')]:_0x533fd7['model'];if(!_0x4d68a3[_0x08c3('0x34')][_0x08c3('0x3a')]('nolimit')){_0x5df90b[_0x08c3('0x22')]=qs['limit'](_0x4d68a3[_0x08c3('0x34')][_0x08c3('0x22')]);_0x5df90b[_0x08c3('0x1f')]=qs['offset'](_0x4d68a3[_0x08c3('0x34')][_0x08c3('0x1f')]);}_0x5df90b[_0x08c3('0x3b')]=qs['sort'](_0x4d68a3[_0x08c3('0x34')][_0x08c3('0x3c')]);_0x5df90b[_0x08c3('0x3d')]=qs[_0x08c3('0x36')](_[_0x08c3('0x3e')](_0x4d68a3[_0x08c3('0x34')],_0x533fd7[_0x08c3('0x36')]),_0x2c2395);if(_0x4d68a3[_0x08c3('0x34')]['filter']){_0x5df90b[_0x08c3('0x3d')]=_[_0x08c3('0x3f')](_0x5df90b[_0x08c3('0x3d')],{'$or':_[_0x08c3('0x2d')](_0x2c2395,function(_0x34abd7){if(_0x34abd7[_0x08c3('0x31')]!==_0x08c3('0x40')){var _0x4dedc5={};_0x4dedc5[_0x34abd7[_0x08c3('0x2a')]]={'$like':'%'+_0x4d68a3[_0x08c3('0x34')][_0x08c3('0x41')]+'%'};return _0x4dedc5;}})});}_0x5df90b=_[_0x08c3('0x3f')]({},_0x5df90b,_0x4d68a3[_0x08c3('0x42')]);var _0x58ce80={'where':_0x5df90b[_0x08c3('0x3d')]};return db[_0x08c3('0x2e')][_0x08c3('0x21')](_0x58ce80)[_0x08c3('0x27')](function(_0x5588c1){_0x384a8d[_0x08c3('0x21')]=_0x5588c1;if(_0x4d68a3[_0x08c3('0x34')][_0x08c3('0x43')]){_0x5df90b[_0x08c3('0x44')]=[{'all':!![]}];}return db[_0x08c3('0x2e')]['findAll'](_0x5df90b);})['then'](function(_0x118deb){_0x384a8d['rows']=_0x118deb;return _0x384a8d;})['then'](respondWithFilteredResult(_0x1bd681,_0x5df90b))[_0x08c3('0x45')](handleError(_0x1bd681,null));};exports[_0x08c3('0x46')]=function(_0x2b4391,_0x2e6a4e){var _0x2b9cf0={'raw':![],'where':{'id':_0x2b4391[_0x08c3('0x47')]['id']}},_0x3cf212={};_0x3cf212[_0x08c3('0x33')]=_['keys'](db['FreshdeskConfiguration'][_0x08c3('0x2f')]);_0x3cf212[_0x08c3('0x34')]=_['keys'](_0x2b4391[_0x08c3('0x34')]);_0x3cf212[_0x08c3('0x36')]=_[_0x08c3('0x37')](_0x3cf212[_0x08c3('0x33')],_0x3cf212[_0x08c3('0x34')]);_0x2b9cf0[_0x08c3('0x39')]=_[_0x08c3('0x37')](_0x3cf212[_0x08c3('0x33')],qs['fields'](_0x2b4391[_0x08c3('0x34')]['fields']));_0x2b9cf0['attributes']=_0x2b9cf0[_0x08c3('0x39')][_0x08c3('0x48')]?_0x2b9cf0['attributes']:_0x3cf212[_0x08c3('0x33')];if(_0x2b4391['query'][_0x08c3('0x43')]){_0x2b9cf0[_0x08c3('0x44')]=[{'all':!![]}];}_0x2b9cf0=_[_0x08c3('0x3f')]({},_0x2b9cf0,_0x2b4391['options']);return db[_0x08c3('0x2e')][_0x08c3('0x49')](_0x2b9cf0)[_0x08c3('0x27')](handleEntityNotFound(_0x2e6a4e,null))[_0x08c3('0x27')](respondWithResult(_0x2e6a4e,null))['catch'](handleError(_0x2e6a4e,null));};exports[_0x08c3('0x4a')]=function(_0x29946c,_0x31e9d0){return db[_0x08c3('0x2e')][_0x08c3('0x4a')](_0x29946c[_0x08c3('0x4b')],{})['then'](respondWithResult(_0x31e9d0,0xc9))[_0x08c3('0x45')](handleError(_0x31e9d0,null));};exports[_0x08c3('0x26')]=function(_0x3a304d,_0x5ea51c){if(_0x3a304d[_0x08c3('0x4b')]['id']){delete _0x3a304d[_0x08c3('0x4b')]['id'];}return db['FreshdeskConfiguration'][_0x08c3('0x49')]({'where':{'id':_0x3a304d[_0x08c3('0x47')]['id']}})[_0x08c3('0x27')](handleEntityNotFound(_0x5ea51c,null))['then'](saveUpdates(_0x3a304d['body'],null))[_0x08c3('0x27')](respondWithResult(_0x5ea51c,null))['catch'](handleError(_0x5ea51c,null));};exports['destroy']=function(_0x44d0ef,_0x144419){return db[_0x08c3('0x2e')][_0x08c3('0x49')]({'where':{'id':_0x44d0ef[_0x08c3('0x47')]['id']}})['then'](handleEntityNotFound(_0x144419,null))[_0x08c3('0x27')](removeEntity(_0x144419,null))[_0x08c3('0x45')](handleError(_0x144419,null));};exports[_0x08c3('0x4c')]=function(_0x4eefb8,_0x512c73,_0xc80832){var _0x5026e6={};var _0x14161a={};var _0x1e62b1;var _0x1fb478;return db[_0x08c3('0x2e')][_0x08c3('0x4d')]({'where':{'id':_0x4eefb8[_0x08c3('0x47')]['id']}})[_0x08c3('0x27')](handleEntityNotFound(_0x512c73,null))[_0x08c3('0x27')](function(_0x1169af){if(_0x1169af){_0x1e62b1=_0x1169af;_0x14161a['model']=_[_0x08c3('0x35')](db[_0x08c3('0x4e')][_0x08c3('0x2f')]);_0x14161a['query']=_[_0x08c3('0x35')](_0x4eefb8[_0x08c3('0x34')]);_0x14161a[_0x08c3('0x36')]=_[_0x08c3('0x37')](_0x14161a[_0x08c3('0x33')],_0x14161a['query']);_0x5026e6[_0x08c3('0x39')]=_['intersection'](_0x14161a[_0x08c3('0x33')],qs['fields'](_0x4eefb8[_0x08c3('0x34')][_0x08c3('0x38')]));_0x5026e6['attributes']=_0x5026e6[_0x08c3('0x39')]['length']?_0x5026e6['attributes']:_0x14161a[_0x08c3('0x33')];_0x5026e6[_0x08c3('0x3b')]=qs[_0x08c3('0x3c')](_0x4eefb8[_0x08c3('0x34')][_0x08c3('0x3c')]);_0x5026e6[_0x08c3('0x3d')]=qs['filters'](_['pick'](_0x4eefb8['query'],_0x14161a['filters']));if(_0x4eefb8[_0x08c3('0x34')][_0x08c3('0x41')]){_0x5026e6[_0x08c3('0x3d')]=_['merge'](_0x5026e6[_0x08c3('0x3d')],{'$or':_[_0x08c3('0x2d')](_0x5026e6['attributes'],function(_0x3e4644){var _0x1cf749={};_0x1cf749[_0x3e4644]={'$like':'%'+_0x4eefb8[_0x08c3('0x34')]['filter']+'%'};return _0x1cf749;})});}_0x5026e6=_[_0x08c3('0x3f')]({},_0x5026e6,_0x4eefb8[_0x08c3('0x42')]);return _0x1e62b1['getFields'](_0x5026e6);}})[_0x08c3('0x27')](function(_0x3deb50){if(_0x3deb50){_0x1fb478=_0x3deb50['length'];if(!_0x4eefb8[_0x08c3('0x34')][_0x08c3('0x3a')](_0x08c3('0x4f'))){_0x5026e6[_0x08c3('0x22')]=qs[_0x08c3('0x22')](_0x4eefb8[_0x08c3('0x34')][_0x08c3('0x22')]);_0x5026e6[_0x08c3('0x1f')]=qs[_0x08c3('0x1f')](_0x4eefb8[_0x08c3('0x34')][_0x08c3('0x1f')]);}return _0x1e62b1['getFields'](_0x5026e6);}})[_0x08c3('0x27')](function(_0x28a544){if(_0x28a544){return _0x28a544?{'count':_0x1fb478,'rows':_0x28a544}:null;}})[_0x08c3('0x27')](respondWithResult(_0x512c73,null))[_0x08c3('0x45')](handleError(_0x512c73,null));};exports[_0x08c3('0x50')]=function(_0x55646a,_0x3d7cff,_0x30a105){var _0x381149={};var _0x44bf21={};var _0x1dbb93;var _0x3d1f80;return db[_0x08c3('0x2e')][_0x08c3('0x4d')]({'where':{'id':_0x55646a[_0x08c3('0x47')]['id']}})[_0x08c3('0x27')](handleEntityNotFound(_0x3d7cff,null))[_0x08c3('0x27')](function(_0x4f66f4){if(_0x4f66f4){_0x1dbb93=_0x4f66f4;_0x44bf21[_0x08c3('0x33')]=_[_0x08c3('0x35')](db[_0x08c3('0x4e')][_0x08c3('0x2f')]);_0x44bf21[_0x08c3('0x34')]=_[_0x08c3('0x35')](_0x55646a['query']);_0x44bf21[_0x08c3('0x36')]=_['intersection'](_0x44bf21[_0x08c3('0x33')],_0x44bf21[_0x08c3('0x34')]);_0x381149[_0x08c3('0x39')]=_['intersection'](_0x44bf21['model'],qs[_0x08c3('0x38')](_0x55646a[_0x08c3('0x34')][_0x08c3('0x38')]));_0x381149['attributes']=_0x381149[_0x08c3('0x39')][_0x08c3('0x48')]?_0x381149[_0x08c3('0x39')]:_0x44bf21['model'];_0x381149[_0x08c3('0x3b')]=qs[_0x08c3('0x3c')](_0x55646a[_0x08c3('0x34')][_0x08c3('0x3c')]);_0x381149['where']=qs[_0x08c3('0x36')](_[_0x08c3('0x3e')](_0x55646a[_0x08c3('0x34')],_0x44bf21[_0x08c3('0x36')]));if(_0x55646a[_0x08c3('0x34')]['filter']){_0x381149[_0x08c3('0x3d')]=_[_0x08c3('0x3f')](_0x381149['where'],{'$or':_['map'](_0x381149[_0x08c3('0x39')],function(_0x2149d9){var _0x872836={};_0x872836[_0x2149d9]={'$like':'%'+_0x55646a[_0x08c3('0x34')][_0x08c3('0x41')]+'%'};return _0x872836;})});}_0x381149=_[_0x08c3('0x3f')]({},_0x381149,_0x55646a['options']);return _0x1dbb93[_0x08c3('0x50')](_0x381149);}})['then'](function(_0x182ecd){if(_0x182ecd){_0x3d1f80=_0x182ecd[_0x08c3('0x48')];if(!_0x55646a[_0x08c3('0x34')][_0x08c3('0x3a')](_0x08c3('0x4f'))){_0x381149[_0x08c3('0x22')]=qs[_0x08c3('0x22')](_0x55646a[_0x08c3('0x34')][_0x08c3('0x22')]);_0x381149['offset']=qs[_0x08c3('0x1f')](_0x55646a[_0x08c3('0x34')][_0x08c3('0x1f')]);}return _0x1dbb93[_0x08c3('0x50')](_0x381149);}})[_0x08c3('0x27')](function(_0x1ed417){if(_0x1ed417){return _0x1ed417?{'count':_0x3d1f80,'rows':_0x1ed417}:null;}})[_0x08c3('0x27')](respondWithResult(_0x3d7cff,null))[_0x08c3('0x45')](handleError(_0x3d7cff,null));};exports['getDescriptions']=function(_0x35e8df,_0x819954,_0x47289e){var _0xb0653c={};var _0x38dcea={};var _0xc67f72;var _0x2941da;return db['FreshdeskConfiguration'][_0x08c3('0x4d')]({'where':{'id':_0x35e8df[_0x08c3('0x47')]['id']}})[_0x08c3('0x27')](handleEntityNotFound(_0x819954,null))[_0x08c3('0x27')](function(_0x55cc02){if(_0x55cc02){_0xc67f72=_0x55cc02;_0x38dcea[_0x08c3('0x33')]=_[_0x08c3('0x35')](db[_0x08c3('0x4e')]['rawAttributes']);_0x38dcea[_0x08c3('0x34')]=_['keys'](_0x35e8df[_0x08c3('0x34')]);_0x38dcea[_0x08c3('0x36')]=_[_0x08c3('0x37')](_0x38dcea[_0x08c3('0x33')],_0x38dcea['query']);_0xb0653c['attributes']=_[_0x08c3('0x37')](_0x38dcea[_0x08c3('0x33')],qs['fields'](_0x35e8df[_0x08c3('0x34')][_0x08c3('0x38')]));_0xb0653c['attributes']=_0xb0653c[_0x08c3('0x39')][_0x08c3('0x48')]?_0xb0653c[_0x08c3('0x39')]:_0x38dcea[_0x08c3('0x33')];_0xb0653c[_0x08c3('0x3b')]=qs[_0x08c3('0x3c')](_0x35e8df[_0x08c3('0x34')][_0x08c3('0x3c')]);_0xb0653c['where']=qs[_0x08c3('0x36')](_['pick'](_0x35e8df['query'],_0x38dcea['filters']));if(_0x35e8df['query'][_0x08c3('0x41')]){_0xb0653c[_0x08c3('0x3d')]=_[_0x08c3('0x3f')](_0xb0653c['where'],{'$or':_[_0x08c3('0x2d')](_0xb0653c[_0x08c3('0x39')],function(_0x40c917){var _0x32d7cc={};_0x32d7cc[_0x40c917]={'$like':'%'+_0x35e8df[_0x08c3('0x34')]['filter']+'%'};return _0x32d7cc;})});}_0xb0653c=_[_0x08c3('0x3f')]({},_0xb0653c,_0x35e8df[_0x08c3('0x42')]);return _0xc67f72[_0x08c3('0x51')](_0xb0653c);}})[_0x08c3('0x27')](function(_0x319233){if(_0x319233){_0x2941da=_0x319233['length'];if(!_0x35e8df['query'][_0x08c3('0x3a')](_0x08c3('0x4f'))){_0xb0653c[_0x08c3('0x22')]=qs[_0x08c3('0x22')](_0x35e8df['query']['limit']);_0xb0653c[_0x08c3('0x1f')]=qs[_0x08c3('0x1f')](_0x35e8df['query'][_0x08c3('0x1f')]);}return _0xc67f72[_0x08c3('0x51')](_0xb0653c);}})[_0x08c3('0x27')](function(_0x5c0964){if(_0x5c0964){return _0x5c0964?{'count':_0x2941da,'rows':_0x5c0964}:null;}})[_0x08c3('0x27')](respondWithResult(_0x819954,null))['catch'](handleError(_0x819954,null));};exports[_0x08c3('0x52')]=function(_0x203ba5,_0x374541,_0x56c3cd){var _0x28492b={};var _0x501f99={};var _0x235461;var _0x5eb721;return db[_0x08c3('0x2e')][_0x08c3('0x4d')]({'where':{'id':_0x203ba5[_0x08c3('0x47')]['id']}})[_0x08c3('0x27')](handleEntityNotFound(_0x374541,null))['then'](function(_0x2c1b4){if(_0x2c1b4){_0x235461=_0x2c1b4;_0x501f99[_0x08c3('0x33')]=_[_0x08c3('0x35')](db['Tag']['rawAttributes']);_0x501f99[_0x08c3('0x34')]=_['keys'](_0x203ba5['query']);_0x501f99[_0x08c3('0x36')]=_[_0x08c3('0x37')](_0x501f99[_0x08c3('0x33')],_0x501f99[_0x08c3('0x34')]);_0x28492b[_0x08c3('0x39')]=_[_0x08c3('0x37')](_0x501f99['model'],qs[_0x08c3('0x38')](_0x203ba5[_0x08c3('0x34')][_0x08c3('0x38')]));_0x28492b[_0x08c3('0x39')]=_0x28492b['attributes'][_0x08c3('0x48')]?_0x28492b[_0x08c3('0x39')]:_0x501f99[_0x08c3('0x33')];_0x28492b[_0x08c3('0x3b')]=qs[_0x08c3('0x3c')](_0x203ba5[_0x08c3('0x34')]['sort']);_0x28492b['where']=qs[_0x08c3('0x36')](_[_0x08c3('0x3e')](_0x203ba5[_0x08c3('0x34')],_0x501f99['filters']));if(_0x203ba5[_0x08c3('0x34')][_0x08c3('0x41')]){_0x28492b[_0x08c3('0x3d')]=_[_0x08c3('0x3f')](_0x28492b[_0x08c3('0x3d')],{'$or':_['map'](_0x28492b[_0x08c3('0x39')],function(_0x10ac9c){var _0x10c3b2={};_0x10c3b2[_0x10ac9c]={'$like':'%'+_0x203ba5[_0x08c3('0x34')][_0x08c3('0x41')]+'%'};return _0x10c3b2;})});}_0x28492b=_[_0x08c3('0x3f')]({},_0x28492b,_0x203ba5[_0x08c3('0x42')]);return _0x235461[_0x08c3('0x52')](_0x28492b);}})['then'](function(_0xca8d9f){if(_0xca8d9f){_0x5eb721=_0xca8d9f[_0x08c3('0x48')];if(!_0x203ba5[_0x08c3('0x34')][_0x08c3('0x3a')](_0x08c3('0x4f'))){_0x28492b['limit']=qs[_0x08c3('0x22')](_0x203ba5[_0x08c3('0x34')]['limit']);_0x28492b['offset']=qs[_0x08c3('0x1f')](_0x203ba5[_0x08c3('0x34')][_0x08c3('0x1f')]);}return _0x235461[_0x08c3('0x52')](_0x28492b);}})['then'](function(_0x630d6){if(_0x630d6){return _0x630d6?{'count':_0x5eb721,'rows':_0x630d6}:null;}})[_0x08c3('0x27')](respondWithResult(_0x374541,null))[_0x08c3('0x45')](handleError(_0x374541,null));};exports[_0x08c3('0x53')]=function(_0x37f198,_0x2994cd,_0xa9fbda){if(_0x37f198[_0x08c3('0x4b')]['id']){delete _0x37f198[_0x08c3('0x4b')]['id'];}return db['FreshdeskConfiguration'][_0x08c3('0x4d')]({'where':{'id':_0x37f198['params']['id']}})[_0x08c3('0x27')](handleEntityNotFound(_0x2994cd,null))[_0x08c3('0x27')](function(_0x13e5f8){if(_0x13e5f8){return _0x13e5f8[_0x08c3('0x53')](_0x37f198[_0x08c3('0x4b')][_0x08c3('0x54')]||[]);}return null;})[_0x08c3('0x27')](respondWithResult(_0x2994cd,null))[_0x08c3('0x45')](handleError(_0x2994cd,null));};
\ No newline at end of file
+var _0x19b8=['fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','end','error','stack','name','send','index','FreshdeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','map','VIRTUAL','options','include','findAll','rows','catch','show','length','includeAll','find','body','params','getFields','findOne','FreshdeskField','getSubjects','pick','getDescriptions','getTags','Tag','setTags','ids','eml-format','zip-dir'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x19b8,0x1a2));var _0x819b=function(_0xc21440,_0x1580bc){_0xc21440=_0xc21440-0x0;var _0x1dee0f=_0x19b8[_0xc21440];return _0x1dee0f;};'use strict';var emlformat=require(_0x819b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x819b('0x1'));var jsonpatch=require(_0x819b('0x2'));var rp=require('request-promise');var moment=require(_0x819b('0x3'));var BPromise=require(_0x819b('0x4'));var Mustache=require(_0x819b('0x5'));var util=require(_0x819b('0x6'));var path=require(_0x819b('0x7'));var sox=require(_0x819b('0x8'));var csv=require(_0x819b('0x9'));var ejs=require(_0x819b('0xa'));var fs=require('fs');var fs_extra=require(_0x819b('0xb'));var _=require(_0x819b('0xc'));var squel=require(_0x819b('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x819b('0xe'));var Papa=require(_0x819b('0xf'));var Redis=require('ioredis');var authService=require(_0x819b('0x10'));var qs=require(_0x819b('0x11'));var as=require(_0x819b('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x819b('0x13'));var config=require(_0x819b('0x14'));var licenseUtil=require(_0x819b('0x15'));var db=require(_0x819b('0x16'))['db'];function respondWithStatusCode(_0x13f1fa,_0x3650e7){_0x3650e7=_0x3650e7||0xcc;return function(_0x4fa941){if(_0x4fa941){return _0x13f1fa[_0x819b('0x17')](_0x3650e7);}return _0x13f1fa[_0x819b('0x18')](_0x3650e7)['end']();};}function respondWithResult(_0x39ed7a,_0x359088){_0x359088=_0x359088||0xc8;return function(_0x1ac873){if(_0x1ac873){return _0x39ed7a[_0x819b('0x18')](_0x359088)[_0x819b('0x19')](_0x1ac873);}};}function respondWithFilteredResult(_0x4df242,_0x292edb){return function(_0x236b89){if(_0x236b89){var _0x472805=typeof _0x292edb[_0x819b('0x1a')]===_0x819b('0x1b')&&typeof _0x292edb[_0x819b('0x1c')]===_0x819b('0x1b');var _0x585e26=_0x236b89[_0x819b('0x1d')];var _0x43a6be=_0x472805?0x0:_0x292edb['offset'];var _0xc832b0=_0x472805?_0x236b89[_0x819b('0x1d')]:_0x292edb[_0x819b('0x1a')]+_0x292edb[_0x819b('0x1c')];var _0x39e4b0;if(_0xc832b0>=_0x585e26){_0xc832b0=_0x585e26;_0x39e4b0=0xc8;}else{_0x39e4b0=0xce;}_0x4df242[_0x819b('0x18')](_0x39e4b0);return _0x4df242[_0x819b('0x1e')](_0x819b('0x1f'),_0x43a6be+'-'+_0xc832b0+'/'+_0x585e26)[_0x819b('0x19')](_0x236b89);}return null;};}function patchUpdates(_0x445a9f){return function(_0x3b8758){try{jsonpatch[_0x819b('0x20')](_0x3b8758,_0x445a9f,!![]);}catch(_0x5d9eb8){return BPromise[_0x819b('0x21')](_0x5d9eb8);}return _0x3b8758['save']();};}function saveUpdates(_0x349772,_0x4fd1c5){return function(_0x175a69){if(_0x175a69){return _0x175a69[_0x819b('0x22')](_0x349772)['then'](function(_0x4046dd){return _0x4046dd;});}return null;};}function removeEntity(_0x162264,_0x57116f){return function(_0x565877){if(_0x565877){return _0x565877['destroy']()[_0x819b('0x23')](function(){_0x162264[_0x819b('0x18')](0xcc)[_0x819b('0x24')]();});}};}function handleEntityNotFound(_0x5c3daf,_0x388c9e){return function(_0xd93e68){if(!_0xd93e68){_0x5c3daf[_0x819b('0x17')](0x194);}return _0xd93e68;};}function handleError(_0x59fd60,_0x4fe69f){_0x4fe69f=_0x4fe69f||0x1f4;return function(_0x29e552){logger[_0x819b('0x25')](_0x29e552[_0x819b('0x26')]);if(_0x29e552[_0x819b('0x27')]){delete _0x29e552[_0x819b('0x27')];}_0x59fd60['status'](_0x4fe69f)[_0x819b('0x28')](_0x29e552);};}exports[_0x819b('0x29')]=function(_0x584893,_0x5942cf){var _0x43b28c={},_0x139932={},_0x4474a6={'count':0x0,'rows':[]};var _0x4543f3=_['map'](db[_0x819b('0x2a')][_0x819b('0x2b')],function(_0x343087){return{'name':_0x343087[_0x819b('0x2c')],'type':_0x343087[_0x819b('0x2d')][_0x819b('0x2e')]};});_0x139932[_0x819b('0x2f')]=_['map'](_0x4543f3,_0x819b('0x27'));_0x139932[_0x819b('0x30')]=_[_0x819b('0x31')](_0x584893[_0x819b('0x30')]);_0x139932[_0x819b('0x32')]=_[_0x819b('0x33')](_0x139932['model'],_0x139932[_0x819b('0x30')]);_0x43b28c[_0x819b('0x34')]=_[_0x819b('0x33')](_0x139932[_0x819b('0x2f')],qs[_0x819b('0x35')](_0x584893[_0x819b('0x30')]['fields']));_0x43b28c['attributes']=_0x43b28c[_0x819b('0x34')]['length']?_0x43b28c[_0x819b('0x34')]:_0x139932['model'];if(!_0x584893['query'][_0x819b('0x36')](_0x819b('0x37'))){_0x43b28c[_0x819b('0x1c')]=qs['limit'](_0x584893['query']['limit']);_0x43b28c[_0x819b('0x1a')]=qs[_0x819b('0x1a')](_0x584893[_0x819b('0x30')][_0x819b('0x1a')]);}_0x43b28c[_0x819b('0x38')]=qs[_0x819b('0x39')](_0x584893[_0x819b('0x30')][_0x819b('0x39')]);_0x43b28c[_0x819b('0x3a')]=qs['filters'](_['pick'](_0x584893[_0x819b('0x30')],_0x139932[_0x819b('0x32')]),_0x4543f3);if(_0x584893['query'][_0x819b('0x3b')]){_0x43b28c[_0x819b('0x3a')]=_[_0x819b('0x3c')](_0x43b28c[_0x819b('0x3a')],{'$or':_[_0x819b('0x3d')](_0x4543f3,function(_0x513de9){if(_0x513de9[_0x819b('0x2d')]!==_0x819b('0x3e')){var _0x51231e={};_0x51231e[_0x513de9[_0x819b('0x27')]]={'$like':'%'+_0x584893[_0x819b('0x30')][_0x819b('0x3b')]+'%'};return _0x51231e;}})});}_0x43b28c=_['merge']({},_0x43b28c,_0x584893[_0x819b('0x3f')]);var _0x41b808={'where':_0x43b28c[_0x819b('0x3a')]};return db[_0x819b('0x2a')][_0x819b('0x1d')](_0x41b808)[_0x819b('0x23')](function(_0x1eb866){_0x4474a6[_0x819b('0x1d')]=_0x1eb866;if(_0x584893['query']['includeAll']){_0x43b28c[_0x819b('0x40')]=[{'all':!![]}];}return db[_0x819b('0x2a')][_0x819b('0x41')](_0x43b28c);})[_0x819b('0x23')](function(_0x4d0bfb){_0x4474a6[_0x819b('0x42')]=_0x4d0bfb;return _0x4474a6;})[_0x819b('0x23')](respondWithFilteredResult(_0x5942cf,_0x43b28c))[_0x819b('0x43')](handleError(_0x5942cf,null));};exports[_0x819b('0x44')]=function(_0xb8826c,_0x21d6f7){var _0x2f4bea={'raw':![],'where':{'id':_0xb8826c['params']['id']}},_0x428564={};_0x428564[_0x819b('0x2f')]=_[_0x819b('0x31')](db['FreshdeskConfiguration']['rawAttributes']);_0x428564['query']=_[_0x819b('0x31')](_0xb8826c['query']);_0x428564[_0x819b('0x32')]=_['intersection'](_0x428564[_0x819b('0x2f')],_0x428564['query']);_0x2f4bea[_0x819b('0x34')]=_[_0x819b('0x33')](_0x428564[_0x819b('0x2f')],qs[_0x819b('0x35')](_0xb8826c[_0x819b('0x30')][_0x819b('0x35')]));_0x2f4bea[_0x819b('0x34')]=_0x2f4bea[_0x819b('0x34')][_0x819b('0x45')]?_0x2f4bea[_0x819b('0x34')]:_0x428564['model'];if(_0xb8826c[_0x819b('0x30')][_0x819b('0x46')]){_0x2f4bea[_0x819b('0x40')]=[{'all':!![]}];}_0x2f4bea=_[_0x819b('0x3c')]({},_0x2f4bea,_0xb8826c[_0x819b('0x3f')]);return db[_0x819b('0x2a')][_0x819b('0x47')](_0x2f4bea)[_0x819b('0x23')](handleEntityNotFound(_0x21d6f7,null))[_0x819b('0x23')](respondWithResult(_0x21d6f7,null))[_0x819b('0x43')](handleError(_0x21d6f7,null));};exports['create']=function(_0x2b65e8,_0xb17554){return db[_0x819b('0x2a')]['create'](_0x2b65e8[_0x819b('0x48')],{})[_0x819b('0x23')](respondWithResult(_0xb17554,0xc9))[_0x819b('0x43')](handleError(_0xb17554,null));};exports[_0x819b('0x22')]=function(_0x1d215f,_0x3f40cf){if(_0x1d215f[_0x819b('0x48')]['id']){delete _0x1d215f[_0x819b('0x48')]['id'];}return db[_0x819b('0x2a')][_0x819b('0x47')]({'where':{'id':_0x1d215f[_0x819b('0x49')]['id']}})[_0x819b('0x23')](handleEntityNotFound(_0x3f40cf,null))[_0x819b('0x23')](saveUpdates(_0x1d215f[_0x819b('0x48')],null))['then'](respondWithResult(_0x3f40cf,null))[_0x819b('0x43')](handleError(_0x3f40cf,null));};exports['destroy']=function(_0x3adf87,_0x4ef5aa){return db[_0x819b('0x2a')][_0x819b('0x47')]({'where':{'id':_0x3adf87[_0x819b('0x49')]['id']}})[_0x819b('0x23')](handleEntityNotFound(_0x4ef5aa,null))[_0x819b('0x23')](removeEntity(_0x4ef5aa,null))[_0x819b('0x43')](handleError(_0x4ef5aa,null));};exports[_0x819b('0x4a')]=function(_0x53b34f,_0x10769a,_0x151959){var _0x246478={};var _0x5cf36a={};var _0x40c884;var _0x2482dc;return db['FreshdeskConfiguration'][_0x819b('0x4b')]({'where':{'id':_0x53b34f['params']['id']}})['then'](handleEntityNotFound(_0x10769a,null))['then'](function(_0x5b7eb7){if(_0x5b7eb7){_0x40c884=_0x5b7eb7;_0x5cf36a[_0x819b('0x2f')]=_[_0x819b('0x31')](db[_0x819b('0x4c')][_0x819b('0x2b')]);_0x5cf36a[_0x819b('0x30')]=_['keys'](_0x53b34f[_0x819b('0x30')]);_0x5cf36a[_0x819b('0x32')]=_[_0x819b('0x33')](_0x5cf36a[_0x819b('0x2f')],_0x5cf36a[_0x819b('0x30')]);_0x246478['attributes']=_['intersection'](_0x5cf36a[_0x819b('0x2f')],qs['fields'](_0x53b34f[_0x819b('0x30')][_0x819b('0x35')]));_0x246478['attributes']=_0x246478[_0x819b('0x34')][_0x819b('0x45')]?_0x246478['attributes']:_0x5cf36a['model'];_0x246478[_0x819b('0x38')]=qs[_0x819b('0x39')](_0x53b34f[_0x819b('0x30')][_0x819b('0x39')]);_0x246478['where']=qs[_0x819b('0x32')](_['pick'](_0x53b34f[_0x819b('0x30')],_0x5cf36a[_0x819b('0x32')]));if(_0x53b34f[_0x819b('0x30')][_0x819b('0x3b')]){_0x246478[_0x819b('0x3a')]=_[_0x819b('0x3c')](_0x246478['where'],{'$or':_[_0x819b('0x3d')](_0x246478[_0x819b('0x34')],function(_0x1b17e2){var _0x35bd46={};_0x35bd46[_0x1b17e2]={'$like':'%'+_0x53b34f[_0x819b('0x30')][_0x819b('0x3b')]+'%'};return _0x35bd46;})});}_0x246478=_[_0x819b('0x3c')]({},_0x246478,_0x53b34f[_0x819b('0x3f')]);return _0x40c884[_0x819b('0x4a')](_0x246478);}})['then'](function(_0x3fa724){if(_0x3fa724){_0x2482dc=_0x3fa724[_0x819b('0x45')];if(!_0x53b34f[_0x819b('0x30')]['hasOwnProperty']('nolimit')){_0x246478[_0x819b('0x1c')]=qs[_0x819b('0x1c')](_0x53b34f[_0x819b('0x30')]['limit']);_0x246478['offset']=qs[_0x819b('0x1a')](_0x53b34f[_0x819b('0x30')][_0x819b('0x1a')]);}return _0x40c884[_0x819b('0x4a')](_0x246478);}})[_0x819b('0x23')](function(_0x353bd7){if(_0x353bd7){return _0x353bd7?{'count':_0x2482dc,'rows':_0x353bd7}:null;}})[_0x819b('0x23')](respondWithResult(_0x10769a,null))[_0x819b('0x43')](handleError(_0x10769a,null));};exports[_0x819b('0x4d')]=function(_0x1f30a0,_0x341ca9,_0x5ba7bf){var _0x2f5646={};var _0x13e7a1={};var _0x403488;var _0x45259e;return db[_0x819b('0x2a')]['findOne']({'where':{'id':_0x1f30a0['params']['id']}})[_0x819b('0x23')](handleEntityNotFound(_0x341ca9,null))[_0x819b('0x23')](function(_0xcaf903){if(_0xcaf903){_0x403488=_0xcaf903;_0x13e7a1['model']=_[_0x819b('0x31')](db[_0x819b('0x4c')][_0x819b('0x2b')]);_0x13e7a1[_0x819b('0x30')]=_[_0x819b('0x31')](_0x1f30a0['query']);_0x13e7a1[_0x819b('0x32')]=_[_0x819b('0x33')](_0x13e7a1['model'],_0x13e7a1[_0x819b('0x30')]);_0x2f5646[_0x819b('0x34')]=_['intersection'](_0x13e7a1[_0x819b('0x2f')],qs['fields'](_0x1f30a0[_0x819b('0x30')]['fields']));_0x2f5646['attributes']=_0x2f5646[_0x819b('0x34')][_0x819b('0x45')]?_0x2f5646['attributes']:_0x13e7a1[_0x819b('0x2f')];_0x2f5646['order']=qs[_0x819b('0x39')](_0x1f30a0[_0x819b('0x30')][_0x819b('0x39')]);_0x2f5646[_0x819b('0x3a')]=qs[_0x819b('0x32')](_[_0x819b('0x4e')](_0x1f30a0['query'],_0x13e7a1['filters']));if(_0x1f30a0[_0x819b('0x30')][_0x819b('0x3b')]){_0x2f5646[_0x819b('0x3a')]=_['merge'](_0x2f5646[_0x819b('0x3a')],{'$or':_[_0x819b('0x3d')](_0x2f5646[_0x819b('0x34')],function(_0x21f9f3){var _0x1f9f48={};_0x1f9f48[_0x21f9f3]={'$like':'%'+_0x1f30a0[_0x819b('0x30')][_0x819b('0x3b')]+'%'};return _0x1f9f48;})});}_0x2f5646=_[_0x819b('0x3c')]({},_0x2f5646,_0x1f30a0[_0x819b('0x3f')]);return _0x403488[_0x819b('0x4d')](_0x2f5646);}})[_0x819b('0x23')](function(_0x4d8c80){if(_0x4d8c80){_0x45259e=_0x4d8c80[_0x819b('0x45')];if(!_0x1f30a0[_0x819b('0x30')][_0x819b('0x36')](_0x819b('0x37'))){_0x2f5646['limit']=qs['limit'](_0x1f30a0['query'][_0x819b('0x1c')]);_0x2f5646['offset']=qs[_0x819b('0x1a')](_0x1f30a0['query']['offset']);}return _0x403488[_0x819b('0x4d')](_0x2f5646);}})[_0x819b('0x23')](function(_0x19d107){if(_0x19d107){return _0x19d107?{'count':_0x45259e,'rows':_0x19d107}:null;}})['then'](respondWithResult(_0x341ca9,null))[_0x819b('0x43')](handleError(_0x341ca9,null));};exports[_0x819b('0x4f')]=function(_0x49c427,_0x171b06,_0x39ed6c){var _0x30dfd5={};var _0x15bc7b={};var _0x3916d5;var _0x245525;return db[_0x819b('0x2a')][_0x819b('0x4b')]({'where':{'id':_0x49c427[_0x819b('0x49')]['id']}})['then'](handleEntityNotFound(_0x171b06,null))[_0x819b('0x23')](function(_0x439d3c){if(_0x439d3c){_0x3916d5=_0x439d3c;_0x15bc7b['model']=_[_0x819b('0x31')](db[_0x819b('0x4c')][_0x819b('0x2b')]);_0x15bc7b[_0x819b('0x30')]=_['keys'](_0x49c427[_0x819b('0x30')]);_0x15bc7b['filters']=_[_0x819b('0x33')](_0x15bc7b[_0x819b('0x2f')],_0x15bc7b[_0x819b('0x30')]);_0x30dfd5['attributes']=_[_0x819b('0x33')](_0x15bc7b[_0x819b('0x2f')],qs[_0x819b('0x35')](_0x49c427[_0x819b('0x30')][_0x819b('0x35')]));_0x30dfd5[_0x819b('0x34')]=_0x30dfd5[_0x819b('0x34')][_0x819b('0x45')]?_0x30dfd5[_0x819b('0x34')]:_0x15bc7b[_0x819b('0x2f')];_0x30dfd5[_0x819b('0x38')]=qs['sort'](_0x49c427[_0x819b('0x30')][_0x819b('0x39')]);_0x30dfd5[_0x819b('0x3a')]=qs['filters'](_[_0x819b('0x4e')](_0x49c427[_0x819b('0x30')],_0x15bc7b['filters']));if(_0x49c427['query'][_0x819b('0x3b')]){_0x30dfd5[_0x819b('0x3a')]=_[_0x819b('0x3c')](_0x30dfd5[_0x819b('0x3a')],{'$or':_[_0x819b('0x3d')](_0x30dfd5[_0x819b('0x34')],function(_0x285128){var _0x5ab921={};_0x5ab921[_0x285128]={'$like':'%'+_0x49c427['query'][_0x819b('0x3b')]+'%'};return _0x5ab921;})});}_0x30dfd5=_['merge']({},_0x30dfd5,_0x49c427[_0x819b('0x3f')]);return _0x3916d5['getDescriptions'](_0x30dfd5);}})[_0x819b('0x23')](function(_0x46ffa8){if(_0x46ffa8){_0x245525=_0x46ffa8['length'];if(!_0x49c427[_0x819b('0x30')][_0x819b('0x36')](_0x819b('0x37'))){_0x30dfd5['limit']=qs[_0x819b('0x1c')](_0x49c427['query'][_0x819b('0x1c')]);_0x30dfd5[_0x819b('0x1a')]=qs[_0x819b('0x1a')](_0x49c427[_0x819b('0x30')][_0x819b('0x1a')]);}return _0x3916d5[_0x819b('0x4f')](_0x30dfd5);}})[_0x819b('0x23')](function(_0x5a410c){if(_0x5a410c){return _0x5a410c?{'count':_0x245525,'rows':_0x5a410c}:null;}})[_0x819b('0x23')](respondWithResult(_0x171b06,null))[_0x819b('0x43')](handleError(_0x171b06,null));};exports[_0x819b('0x50')]=function(_0x4b8ef6,_0x609c5,_0x852b62){var _0x59a2ec={};var _0x3adc06={};var _0x1dcb82;var _0x4a43d2;return db[_0x819b('0x2a')][_0x819b('0x4b')]({'where':{'id':_0x4b8ef6['params']['id']}})[_0x819b('0x23')](handleEntityNotFound(_0x609c5,null))[_0x819b('0x23')](function(_0x31955f){if(_0x31955f){_0x1dcb82=_0x31955f;_0x3adc06['model']=_[_0x819b('0x31')](db[_0x819b('0x51')][_0x819b('0x2b')]);_0x3adc06['query']=_[_0x819b('0x31')](_0x4b8ef6[_0x819b('0x30')]);_0x3adc06[_0x819b('0x32')]=_[_0x819b('0x33')](_0x3adc06[_0x819b('0x2f')],_0x3adc06[_0x819b('0x30')]);_0x59a2ec['attributes']=_[_0x819b('0x33')](_0x3adc06['model'],qs[_0x819b('0x35')](_0x4b8ef6[_0x819b('0x30')][_0x819b('0x35')]));_0x59a2ec['attributes']=_0x59a2ec[_0x819b('0x34')][_0x819b('0x45')]?_0x59a2ec[_0x819b('0x34')]:_0x3adc06[_0x819b('0x2f')];_0x59a2ec[_0x819b('0x38')]=qs[_0x819b('0x39')](_0x4b8ef6[_0x819b('0x30')][_0x819b('0x39')]);_0x59a2ec[_0x819b('0x3a')]=qs[_0x819b('0x32')](_['pick'](_0x4b8ef6[_0x819b('0x30')],_0x3adc06[_0x819b('0x32')]));if(_0x4b8ef6[_0x819b('0x30')][_0x819b('0x3b')]){_0x59a2ec[_0x819b('0x3a')]=_[_0x819b('0x3c')](_0x59a2ec['where'],{'$or':_['map'](_0x59a2ec[_0x819b('0x34')],function(_0x1443b3){var _0x2bee72={};_0x2bee72[_0x1443b3]={'$like':'%'+_0x4b8ef6[_0x819b('0x30')][_0x819b('0x3b')]+'%'};return _0x2bee72;})});}_0x59a2ec=_[_0x819b('0x3c')]({},_0x59a2ec,_0x4b8ef6[_0x819b('0x3f')]);return _0x1dcb82[_0x819b('0x50')](_0x59a2ec);}})[_0x819b('0x23')](function(_0x17eb1c){if(_0x17eb1c){_0x4a43d2=_0x17eb1c[_0x819b('0x45')];if(!_0x4b8ef6[_0x819b('0x30')][_0x819b('0x36')](_0x819b('0x37'))){_0x59a2ec[_0x819b('0x1c')]=qs[_0x819b('0x1c')](_0x4b8ef6[_0x819b('0x30')][_0x819b('0x1c')]);_0x59a2ec[_0x819b('0x1a')]=qs['offset'](_0x4b8ef6[_0x819b('0x30')]['offset']);}return _0x1dcb82[_0x819b('0x50')](_0x59a2ec);}})['then'](function(_0x5e6f5f){if(_0x5e6f5f){return _0x5e6f5f?{'count':_0x4a43d2,'rows':_0x5e6f5f}:null;}})[_0x819b('0x23')](respondWithResult(_0x609c5,null))[_0x819b('0x43')](handleError(_0x609c5,null));};exports[_0x819b('0x52')]=function(_0x34c616,_0x279fb9,_0xc664b9){if(_0x34c616['body']['id']){delete _0x34c616['body']['id'];}return db[_0x819b('0x2a')][_0x819b('0x4b')]({'where':{'id':_0x34c616['params']['id']}})[_0x819b('0x23')](handleEntityNotFound(_0x279fb9,null))['then'](function(_0xca270c){if(_0xca270c){return _0xca270c[_0x819b('0x52')](_0x34c616['body'][_0x819b('0x53')]||[]);}return null;})['then'](respondWithResult(_0x279fb9,null))[_0x819b('0x43')](handleError(_0x279fb9,null));};
\ No newline at end of file
index 2f6511d..2b76852 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a8e=['lodash','moment','bluebird','request-promise','path','rimraf','./intFreshdeskConfiguration.attributes','define','FreshdeskConfiguration','int_freshdesk_configurations'];(function(_0x4516b1,_0xbd4c9d){var _0x2beefe=function(_0x5c9c17){while(--_0x5c9c17){_0x4516b1['push'](_0x4516b1['shift']());}};_0x2beefe(++_0xbd4c9d);}(_0x6a8e,0x17c));var _0xe6a8=function(_0x5d1d99,_0x10ca23){_0x5d1d99=_0x5d1d99-0x0;var _0x2957ec=_0x6a8e[_0x5d1d99];return _0x2957ec;};'use strict';var _=require(_0xe6a8('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xe6a8('0x1'));var BPromise=require(_0xe6a8('0x2'));var rp=require(_0xe6a8('0x3'));var fs=require('fs');var path=require(_0xe6a8('0x4'));var rimraf=require(_0xe6a8('0x5'));var config=require('../../config/environment');var attributes=require(_0xe6a8('0x6'));module['exports']=function(_0x26debe,_0x24ee69){return _0x26debe[_0xe6a8('0x7')](_0xe6a8('0x8'),attributes,{'tableName':_0xe6a8('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc305=['./intFreshdeskConfiguration.attributes','exports','FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0xe21378,_0x5412f0){var _0x418348=function(_0x340c18){while(--_0x340c18){_0xe21378['push'](_0xe21378['shift']());}};_0x418348(++_0x5412f0);}(_0xc305,0x149));var _0x5c30=function(_0x1e393b,_0x355f6b){_0x1e393b=_0x1e393b-0x0;var _0x3d0bfe=_0xc305[_0x1e393b];return _0x3d0bfe;};'use strict';var _=require(_0x5c30('0x0'));var util=require(_0x5c30('0x1'));var logger=require(_0x5c30('0x2'))('api');var moment=require(_0x5c30('0x3'));var BPromise=require(_0x5c30('0x4'));var rp=require(_0x5c30('0x5'));var fs=require('fs');var path=require(_0x5c30('0x6'));var rimraf=require(_0x5c30('0x7'));var config=require(_0x5c30('0x8'));var attributes=require(_0x5c30('0x9'));module[_0x5c30('0xa')]=function(_0x3009af,_0x22aa18){return _0x3009af['define'](_0x5c30('0xb'),attributes,{'tableName':_0x5c30('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 29ea9f5..215b04d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a97=['request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','FreshdeskConfiguration,\x20%s,\x20%s'];(function(_0x32ac69,_0x238110){var _0x312a48=function(_0x169921){while(--_0x169921){_0x32ac69['push'](_0x32ac69['shift']());}};_0x312a48(++_0x238110);}(_0x2a97,0xd7));var _0x72a9=function(_0x294ed0,_0xece6ca){_0x294ed0=_0x294ed0-0x0;var _0x4549f8=_0x2a97[_0x294ed0];return _0x4549f8;};'use strict';var _=require(_0x72a9('0x0'));var util=require('util');var moment=require(_0x72a9('0x1'));var BPromise=require(_0x72a9('0x2'));var rs=require(_0x72a9('0x3'));var fs=require('fs');var Redis=require(_0x72a9('0x4'));var db=require(_0x72a9('0x5'))['db'];var utils=require(_0x72a9('0x6'));var logger=require(_0x72a9('0x7'))('rpc');var config=require(_0x72a9('0x8'));var jayson=require(_0x72a9('0x9'));var client=jayson[_0x72a9('0xa')][_0x72a9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x331e25,_0x14c2ee,_0x3be058){return new BPromise(function(_0x22114e,_0x48a5c2){return client[_0x72a9('0xc')](_0x331e25,_0x3be058)[_0x72a9('0xd')](function(_0x5bb055){logger['info'](_0x72a9('0xe'),_0x14c2ee,_0x72a9('0xf'));logger[_0x72a9('0x10')](_0x72a9('0x11'),_0x14c2ee,_0x72a9('0xf'),JSON[_0x72a9('0x12')](_0x5bb055));if(_0x5bb055[_0x72a9('0x13')]){if(_0x5bb055[_0x72a9('0x13')][_0x72a9('0x14')]===0x1f4){logger['error'](_0x72a9('0xe'),_0x14c2ee,_0x5bb055[_0x72a9('0x13')][_0x72a9('0x15')]);return _0x48a5c2(_0x5bb055[_0x72a9('0x13')][_0x72a9('0x15')]);}logger[_0x72a9('0x13')](_0x72a9('0xe'),_0x14c2ee,_0x5bb055[_0x72a9('0x13')][_0x72a9('0x15')]);return _0x22114e(_0x5bb055[_0x72a9('0x13')][_0x72a9('0x15')]);}else{logger['info']('FreshdeskConfiguration,\x20%s,\x20%s',_0x14c2ee,_0x72a9('0xf'));_0x22114e(_0x5bb055['result'][_0x72a9('0x15')]);}})[_0x72a9('0x16')](function(_0x382b53){logger[_0x72a9('0x13')](_0x72a9('0xe'),_0x14c2ee,_0x382b53);_0x48a5c2(_0x382b53);});});}
\ No newline at end of file
+var _0x0013=['../../config/logger','rpc','jayson/promise','http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x1bc58f,_0x3a43b8){var _0x3ca675=function(_0x13d3f2){while(--_0x13d3f2){_0x1bc58f['push'](_0x1bc58f['shift']());}};_0x3ca675(++_0x3a43b8);}(_0x0013,0xa3));var _0x3001=function(_0x2a8b07,_0x4a056a){_0x2a8b07=_0x2a8b07-0x0;var _0x3159be=_0x0013[_0x2a8b07];return _0x3159be;};'use strict';var _=require(_0x3001('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3001('0x1'));var rs=require(_0x3001('0x2'));var fs=require('fs');var Redis=require(_0x3001('0x3'));var db=require(_0x3001('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3001('0x5'))(_0x3001('0x6'));var config=require('../../config/environment');var jayson=require(_0x3001('0x7'));var client=jayson['client'][_0x3001('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x16f6d6,_0x5a5208,_0x124502){return new BPromise(function(_0x42c76c,_0x2b76b1){return client[_0x3001('0x9')](_0x16f6d6,_0x124502)[_0x3001('0xa')](function(_0x23c63e){logger[_0x3001('0xb')](_0x3001('0xc'),_0x5a5208,_0x3001('0xd'));logger[_0x3001('0xe')](_0x3001('0xf'),_0x5a5208,'request\x20sent',JSON['stringify'](_0x23c63e));if(_0x23c63e[_0x3001('0x10')]){if(_0x23c63e[_0x3001('0x10')][_0x3001('0x11')]===0x1f4){logger[_0x3001('0x10')](_0x3001('0xc'),_0x5a5208,_0x23c63e['error']['message']);return _0x2b76b1(_0x23c63e['error'][_0x3001('0x12')]);}logger['error'](_0x3001('0xc'),_0x5a5208,_0x23c63e[_0x3001('0x10')]['message']);return _0x42c76c(_0x23c63e[_0x3001('0x10')][_0x3001('0x12')]);}else{logger['info']('FreshdeskConfiguration,\x20%s,\x20%s',_0x5a5208,_0x3001('0xd'));_0x42c76c(_0x23c63e[_0x3001('0x13')][_0x3001('0x12')]);}})[_0x3001('0x14')](function(_0x3bfb88){logger[_0x3001('0x10')](_0x3001('0xc'),_0x5a5208,_0x3bfb88);_0x2b76b1(_0x3bfb88);});});}
\ No newline at end of file
index 16cb789..bc0b3b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe504=['../../config/environment','./intFreshdeskField.controller','isAuthenticated','index','get','/:id','show','create','put','update','delete','destroy','exports','path','fs-extra','../../components/interaction/service'];(function(_0xc23a57,_0x21d26f){var _0x4ba038=function(_0x42be44){while(--_0x42be44){_0xc23a57['push'](_0xc23a57['shift']());}};_0x4ba038(++_0x21d26f);}(_0xe504,0x6d));var _0x4e50=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xe504[_0x2c91e9];return _0x13f0ff;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4e50('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x4e50('0x1'));var auth=require('../../components/auth/service');var interaction=require(_0x4e50('0x2'));var config=require(_0x4e50('0x3'));var controller=require(_0x4e50('0x4'));router['get']('/',auth[_0x4e50('0x5')](),controller[_0x4e50('0x6')]);router[_0x4e50('0x7')](_0x4e50('0x8'),auth[_0x4e50('0x5')](),controller[_0x4e50('0x9')]);router['post']('/',auth[_0x4e50('0x5')](),controller[_0x4e50('0xa')]);router[_0x4e50('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x4e50('0xc')]);router[_0x4e50('0xd')]('/:id',auth[_0x4e50('0x5')](),controller[_0x4e50('0xe')]);module[_0x4e50('0xf')]=router;
\ No newline at end of file
+var _0xdbbc=['/:id','update','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','show','post','create','put'];(function(_0xe946d,_0x4aa539){var _0x5dc823=function(_0x9903bc){while(--_0x9903bc){_0xe946d['push'](_0xe946d['shift']());}};_0x5dc823(++_0x4aa539);}(_0xdbbc,0x1d7));var _0xcdbb=function(_0x500dd2,_0x23bd28){_0x500dd2=_0x500dd2-0x0;var _0xa7c859=_0xdbbc[_0x500dd2];return _0xa7c859;};'use strict';var multer=require(_0xcdbb('0x0'));var util=require(_0xcdbb('0x1'));var path=require('path');var timeout=require(_0xcdbb('0x2'));var express=require(_0xcdbb('0x3'));var router=express[_0xcdbb('0x4')]();var fs_extra=require(_0xcdbb('0x5'));var auth=require(_0xcdbb('0x6'));var interaction=require(_0xcdbb('0x7'));var config=require(_0xcdbb('0x8'));var controller=require('./intFreshdeskField.controller');router[_0xcdbb('0x9')]('/',auth[_0xcdbb('0xa')](),controller['index']);router['get']('/:id',auth[_0xcdbb('0xa')](),controller[_0xcdbb('0xb')]);router[_0xcdbb('0xc')]('/',auth['isAuthenticated'](),controller[_0xcdbb('0xd')]);router[_0xcdbb('0xe')](_0xcdbb('0xf'),auth[_0xcdbb('0xa')](),controller[_0xcdbb('0x10')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xcdbb('0x11')]);module['exports']=router;
\ No newline at end of file
index c55c8b1..f25afd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97a5=['STRING','customVariable','BOOLEAN','exports','ENUM','string','variable','keyValue','picklist'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x97a5,0xc9));var _0x597a=function(_0x1ab99c,_0x55f5a5){_0x1ab99c=_0x1ab99c-0x0;var _0x3cc83c=_0x97a5[_0x1ab99c];return _0x3cc83c;};'use strict';var Sequelize=require('sequelize');module[_0x597a('0x0')]={'type':{'type':Sequelize[_0x597a('0x1')](_0x597a('0x2'),_0x597a('0x3'),'customVariable',_0x597a('0x4'),_0x597a('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x597a('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x597a('0x1')]('string',_0x597a('0x3'),_0x597a('0x7'))},'keyContent':{'type':Sequelize[_0x597a('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x597a('0x6')]},'customField':{'type':Sequelize[_0x597a('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x597a('0x6')]}};
\ No newline at end of file
+var _0x24e9=['picklist','STRING','ENUM','BOOLEAN','exports','string','variable','customVariable','keyValue'];(function(_0x43bb4a,_0x1e3caa){var _0x58dd5e=function(_0xa4b74a){while(--_0xa4b74a){_0x43bb4a['push'](_0x43bb4a['shift']());}};_0x58dd5e(++_0x1e3caa);}(_0x24e9,0x1a2));var _0x924e=function(_0x11f249,_0x4ca4a8){_0x11f249=_0x11f249-0x0;var _0x5c3656=_0x24e9[_0x11f249];return _0x5c3656;};'use strict';var Sequelize=require('sequelize');module[_0x924e('0x0')]={'type':{'type':Sequelize['ENUM'](_0x924e('0x1'),_0x924e('0x2'),_0x924e('0x3'),_0x924e('0x4'),_0x924e('0x5')),'defaultValue':_0x924e('0x1')},'content':{'type':Sequelize[_0x924e('0x6')]},'key':{'type':Sequelize[_0x924e('0x6')]},'keyType':{'type':Sequelize[_0x924e('0x7')](_0x924e('0x1'),_0x924e('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0x924e('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x924e('0x6')]},'customField':{'type':Sequelize[_0x924e('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 74ee734..42eb0dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e5c=['options','catch','body','find','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','end','error','name','send','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','order','sort','where','pick','map','VIRTUAL','filter','FreshdeskField','includeAll','findAll','rows','params','include','merge'];(function(_0x5e851b,_0x4067f9){var _0x222bb8=function(_0x568937){while(--_0x568937){_0x5e851b['push'](_0x5e851b['shift']());}};_0x222bb8(++_0x4067f9);}(_0x3e5c,0x9a));var _0xc3e5=function(_0xe61f37,_0xc48f78){_0xe61f37=_0xe61f37-0x0;var _0x1dcd0b=_0x3e5c[_0xe61f37];return _0x1dcd0b;};'use strict';var emlformat=require(_0xc3e5('0x0'));var rimraf=require(_0xc3e5('0x1'));var zipdir=require(_0xc3e5('0x2'));var jsonpatch=require(_0xc3e5('0x3'));var rp=require('request-promise');var moment=require(_0xc3e5('0x4'));var BPromise=require(_0xc3e5('0x5'));var Mustache=require(_0xc3e5('0x6'));var util=require(_0xc3e5('0x7'));var path=require(_0xc3e5('0x8'));var sox=require(_0xc3e5('0x9'));var csv=require('to-csv');var ejs=require(_0xc3e5('0xa'));var fs=require('fs');var fs_extra=require(_0xc3e5('0xb'));var _=require(_0xc3e5('0xc'));var squel=require(_0xc3e5('0xd'));var crypto=require(_0xc3e5('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc3e5('0xf'));var toCsv=require(_0xc3e5('0x10'));var querystring=require(_0xc3e5('0x11'));var Papa=require(_0xc3e5('0x12'));var Redis=require(_0xc3e5('0x13'));var authService=require(_0xc3e5('0x14'));var qs=require(_0xc3e5('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc3e5('0x16'));var logger=require(_0xc3e5('0x17'))(_0xc3e5('0x18'));var utils=require(_0xc3e5('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xc3e5('0x1a'));var db=require(_0xc3e5('0x1b'))['db'];function respondWithStatusCode(_0x36193e,_0x3f0395){_0x3f0395=_0x3f0395||0xcc;return function(_0x3b7441){if(_0x3b7441){return _0x36193e[_0xc3e5('0x1c')](_0x3f0395);}return _0x36193e['status'](_0x3f0395)['end']();};}function respondWithResult(_0x52cca7,_0x27c226){_0x27c226=_0x27c226||0xc8;return function(_0x5a52f1){if(_0x5a52f1){return _0x52cca7[_0xc3e5('0x1d')](_0x27c226)[_0xc3e5('0x1e')](_0x5a52f1);}};}function respondWithFilteredResult(_0x4d1ad9,_0x353dc0){return function(_0x3e3eaa){if(_0x3e3eaa){var _0x2cc476=typeof _0x353dc0[_0xc3e5('0x1f')]===_0xc3e5('0x20')&&typeof _0x353dc0['limit']===_0xc3e5('0x20');var _0x277063=_0x3e3eaa[_0xc3e5('0x21')];var _0xa33d84=_0x2cc476?0x0:_0x353dc0[_0xc3e5('0x1f')];var _0x1e1eea=_0x2cc476?_0x3e3eaa['count']:_0x353dc0[_0xc3e5('0x1f')]+_0x353dc0[_0xc3e5('0x22')];var _0x4a1d86;if(_0x1e1eea>=_0x277063){_0x1e1eea=_0x277063;_0x4a1d86=0xc8;}else{_0x4a1d86=0xce;}_0x4d1ad9[_0xc3e5('0x1d')](_0x4a1d86);return _0x4d1ad9['set'](_0xc3e5('0x23'),_0xa33d84+'-'+_0x1e1eea+'/'+_0x277063)[_0xc3e5('0x1e')](_0x3e3eaa);}return null;};}function patchUpdates(_0x2d551b){return function(_0xebf6dc){try{jsonpatch[_0xc3e5('0x24')](_0xebf6dc,_0x2d551b,!![]);}catch(_0x4a7806){return BPromise[_0xc3e5('0x25')](_0x4a7806);}return _0xebf6dc[_0xc3e5('0x26')]();};}function saveUpdates(_0x2d8c6f,_0x3eb513){return function(_0x414ba9){if(_0x414ba9){return _0x414ba9[_0xc3e5('0x27')](_0x2d8c6f)[_0xc3e5('0x28')](function(_0x47f344){return _0x47f344;});}return null;};}function removeEntity(_0x3a2800,_0x430cb4){return function(_0x43d01e){if(_0x43d01e){return _0x43d01e[_0xc3e5('0x29')]()[_0xc3e5('0x28')](function(){_0x3a2800[_0xc3e5('0x1d')](0xcc)[_0xc3e5('0x2a')]();});}};}function handleEntityNotFound(_0x45556e,_0x564748){return function(_0x25d3a3){if(!_0x25d3a3){_0x45556e['sendStatus'](0x194);}return _0x25d3a3;};}function handleError(_0x4c0cf4,_0x8815af){_0x8815af=_0x8815af||0x1f4;return function(_0x12ad6e){logger[_0xc3e5('0x2b')](_0x12ad6e['stack']);if(_0x12ad6e[_0xc3e5('0x2c')]){delete _0x12ad6e[_0xc3e5('0x2c')];}_0x4c0cf4[_0xc3e5('0x1d')](_0x8815af)[_0xc3e5('0x2d')](_0x12ad6e);};}exports['index']=function(_0xa6766d,_0x497ecf){var _0x45ca6d={},_0xc0e6e7={},_0xc58f2b={'count':0x0,'rows':[]};var _0x5a2d41=_['map'](db['FreshdeskField'][_0xc3e5('0x2e')],function(_0x45cd9c){return{'name':_0x45cd9c[_0xc3e5('0x2f')],'type':_0x45cd9c[_0xc3e5('0x30')][_0xc3e5('0x31')]};});_0xc0e6e7[_0xc3e5('0x32')]=_['map'](_0x5a2d41,_0xc3e5('0x2c'));_0xc0e6e7[_0xc3e5('0x33')]=_[_0xc3e5('0x34')](_0xa6766d[_0xc3e5('0x33')]);_0xc0e6e7[_0xc3e5('0x35')]=_[_0xc3e5('0x36')](_0xc0e6e7[_0xc3e5('0x32')],_0xc0e6e7[_0xc3e5('0x33')]);_0x45ca6d[_0xc3e5('0x37')]=_[_0xc3e5('0x36')](_0xc0e6e7[_0xc3e5('0x32')],qs['fields'](_0xa6766d[_0xc3e5('0x33')]['fields']));_0x45ca6d[_0xc3e5('0x37')]=_0x45ca6d[_0xc3e5('0x37')][_0xc3e5('0x38')]?_0x45ca6d[_0xc3e5('0x37')]:_0xc0e6e7['model'];if(!_0xa6766d[_0xc3e5('0x33')]['hasOwnProperty']('nolimit')){_0x45ca6d[_0xc3e5('0x22')]=qs['limit'](_0xa6766d[_0xc3e5('0x33')][_0xc3e5('0x22')]);_0x45ca6d[_0xc3e5('0x1f')]=qs[_0xc3e5('0x1f')](_0xa6766d[_0xc3e5('0x33')]['offset']);}_0x45ca6d[_0xc3e5('0x39')]=qs[_0xc3e5('0x3a')](_0xa6766d[_0xc3e5('0x33')][_0xc3e5('0x3a')]);_0x45ca6d[_0xc3e5('0x3b')]=qs['filters'](_[_0xc3e5('0x3c')](_0xa6766d['query'],_0xc0e6e7[_0xc3e5('0x35')]),_0x5a2d41);if(_0xa6766d[_0xc3e5('0x33')]['filter']){_0x45ca6d[_0xc3e5('0x3b')]=_['merge'](_0x45ca6d[_0xc3e5('0x3b')],{'$or':_[_0xc3e5('0x3d')](_0x5a2d41,function(_0x3e7333){if(_0x3e7333['type']!==_0xc3e5('0x3e')){var _0x3c496f={};_0x3c496f[_0x3e7333[_0xc3e5('0x2c')]]={'$like':'%'+_0xa6766d[_0xc3e5('0x33')][_0xc3e5('0x3f')]+'%'};return _0x3c496f;}})});}_0x45ca6d=_['merge']({},_0x45ca6d,_0xa6766d['options']);var _0x5ebe00={'where':_0x45ca6d[_0xc3e5('0x3b')]};return db[_0xc3e5('0x40')]['count'](_0x5ebe00)[_0xc3e5('0x28')](function(_0x5b100d){_0xc58f2b[_0xc3e5('0x21')]=_0x5b100d;if(_0xa6766d['query'][_0xc3e5('0x41')]){_0x45ca6d['include']=[{'all':!![]}];}return db[_0xc3e5('0x40')][_0xc3e5('0x42')](_0x45ca6d);})[_0xc3e5('0x28')](function(_0x1c5177){_0xc58f2b[_0xc3e5('0x43')]=_0x1c5177;return _0xc58f2b;})[_0xc3e5('0x28')](respondWithFilteredResult(_0x497ecf,_0x45ca6d))['catch'](handleError(_0x497ecf,null));};exports['show']=function(_0x3213d3,_0x5f4328){var _0x3f0887={'raw':!![],'where':{'id':_0x3213d3[_0xc3e5('0x44')]['id']}},_0x27354c={};_0x27354c[_0xc3e5('0x32')]=_[_0xc3e5('0x34')](db[_0xc3e5('0x40')]['rawAttributes']);_0x27354c[_0xc3e5('0x33')]=_[_0xc3e5('0x34')](_0x3213d3[_0xc3e5('0x33')]);_0x27354c[_0xc3e5('0x35')]=_[_0xc3e5('0x36')](_0x27354c[_0xc3e5('0x32')],_0x27354c[_0xc3e5('0x33')]);_0x3f0887[_0xc3e5('0x37')]=_[_0xc3e5('0x36')](_0x27354c[_0xc3e5('0x32')],qs['fields'](_0x3213d3['query']['fields']));_0x3f0887[_0xc3e5('0x37')]=_0x3f0887['attributes'][_0xc3e5('0x38')]?_0x3f0887[_0xc3e5('0x37')]:_0x27354c[_0xc3e5('0x32')];if(_0x3213d3[_0xc3e5('0x33')]['includeAll']){_0x3f0887[_0xc3e5('0x45')]=[{'all':!![]}];}_0x3f0887=_[_0xc3e5('0x46')]({},_0x3f0887,_0x3213d3[_0xc3e5('0x47')]);return db[_0xc3e5('0x40')]['find'](_0x3f0887)['then'](handleEntityNotFound(_0x5f4328,null))[_0xc3e5('0x28')](respondWithResult(_0x5f4328,null))[_0xc3e5('0x48')](handleError(_0x5f4328,null));};exports['create']=function(_0x12cc80,_0x4c9b0b){return db[_0xc3e5('0x40')]['create'](_0x12cc80[_0xc3e5('0x49')],{})['then'](respondWithResult(_0x4c9b0b,0xc9))['catch'](handleError(_0x4c9b0b,null));};exports['update']=function(_0x87855d,_0x11da7e){if(_0x87855d[_0xc3e5('0x49')]['id']){delete _0x87855d['body']['id'];}return db['FreshdeskField'][_0xc3e5('0x4a')]({'where':{'id':_0x87855d['params']['id']}})[_0xc3e5('0x28')](handleEntityNotFound(_0x11da7e,null))[_0xc3e5('0x28')](saveUpdates(_0x87855d[_0xc3e5('0x49')],null))[_0xc3e5('0x28')](respondWithResult(_0x11da7e,null))[_0xc3e5('0x48')](handleError(_0x11da7e,null));};exports[_0xc3e5('0x29')]=function(_0x5cd31c,_0x27924f){return db['FreshdeskField']['find']({'where':{'id':_0x5cd31c[_0xc3e5('0x44')]['id']}})['then'](handleEntityNotFound(_0x27924f,null))[_0xc3e5('0x28')](removeEntity(_0x27924f,null))['catch'](handleError(_0x27924f,null));};
\ No newline at end of file
+var _0x6f0d=['params','find','catch','body','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','json','reject','update','destroy','then','error','stack','name','index','map','FreshdeskField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show'];(function(_0x341e0f,_0x4a09d0){var _0x59555a=function(_0x4343a8){while(--_0x4343a8){_0x341e0f['push'](_0x341e0f['shift']());}};_0x59555a(++_0x4a09d0);}(_0x6f0d,0x16c));var _0xd6f0=function(_0xde634,_0xbcee9b){_0xde634=_0xde634-0x0;var _0x232588=_0x6f0d[_0xde634];return _0x232588;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd6f0('0x0'));var zipdir=require(_0xd6f0('0x1'));var jsonpatch=require(_0xd6f0('0x2'));var rp=require(_0xd6f0('0x3'));var moment=require('moment');var BPromise=require(_0xd6f0('0x4'));var Mustache=require(_0xd6f0('0x5'));var util=require(_0xd6f0('0x6'));var path=require(_0xd6f0('0x7'));var sox=require(_0xd6f0('0x8'));var csv=require('to-csv');var ejs=require(_0xd6f0('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd6f0('0xa'));var squel=require(_0xd6f0('0xb'));var crypto=require(_0xd6f0('0xc'));var jsforce=require(_0xd6f0('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd6f0('0xe'));var Papa=require(_0xd6f0('0xf'));var Redis=require(_0xd6f0('0x10'));var authService=require(_0xd6f0('0x11'));var qs=require(_0xd6f0('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd6f0('0x13'));var logger=require(_0xd6f0('0x14'))(_0xd6f0('0x15'));var utils=require(_0xd6f0('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xd6f0('0x17'));var db=require(_0xd6f0('0x18'))['db'];function respondWithStatusCode(_0x306aad,_0x45973d){_0x45973d=_0x45973d||0xcc;return function(_0x109655){if(_0x109655){return _0x306aad[_0xd6f0('0x19')](_0x45973d);}return _0x306aad[_0xd6f0('0x1a')](_0x45973d)[_0xd6f0('0x1b')]();};}function respondWithResult(_0x246dad,_0x4ab979){_0x4ab979=_0x4ab979||0xc8;return function(_0x2b3f32){if(_0x2b3f32){return _0x246dad[_0xd6f0('0x1a')](_0x4ab979)['json'](_0x2b3f32);}};}function respondWithFilteredResult(_0x419b7e,_0x593abe){return function(_0x3f4851){if(_0x3f4851){var _0x154e3e=typeof _0x593abe[_0xd6f0('0x1c')]===_0xd6f0('0x1d')&&typeof _0x593abe[_0xd6f0('0x1e')]===_0xd6f0('0x1d');var _0x25da0c=_0x3f4851[_0xd6f0('0x1f')];var _0x2e71bd=_0x154e3e?0x0:_0x593abe[_0xd6f0('0x1c')];var _0x23ab6c=_0x154e3e?_0x3f4851[_0xd6f0('0x1f')]:_0x593abe[_0xd6f0('0x1c')]+_0x593abe[_0xd6f0('0x1e')];var _0x1f43d7;if(_0x23ab6c>=_0x25da0c){_0x23ab6c=_0x25da0c;_0x1f43d7=0xc8;}else{_0x1f43d7=0xce;}_0x419b7e[_0xd6f0('0x1a')](_0x1f43d7);return _0x419b7e['set']('Content-Range',_0x2e71bd+'-'+_0x23ab6c+'/'+_0x25da0c)[_0xd6f0('0x20')](_0x3f4851);}return null;};}function patchUpdates(_0x264104){return function(_0x1158dc){try{jsonpatch['apply'](_0x1158dc,_0x264104,!![]);}catch(_0x67afa7){return BPromise[_0xd6f0('0x21')](_0x67afa7);}return _0x1158dc['save']();};}function saveUpdates(_0x86dde0,_0x515687){return function(_0x1ee584){if(_0x1ee584){return _0x1ee584[_0xd6f0('0x22')](_0x86dde0)['then'](function(_0xb9e820){return _0xb9e820;});}return null;};}function removeEntity(_0x45e99c,_0x5ea2dd){return function(_0x3dbdc3){if(_0x3dbdc3){return _0x3dbdc3[_0xd6f0('0x23')]()[_0xd6f0('0x24')](function(){_0x45e99c['status'](0xcc)[_0xd6f0('0x1b')]();});}};}function handleEntityNotFound(_0x3dc166,_0x5ecb16){return function(_0xcea0ae){if(!_0xcea0ae){_0x3dc166['sendStatus'](0x194);}return _0xcea0ae;};}function handleError(_0x2042d5,_0x3fb5c3){_0x3fb5c3=_0x3fb5c3||0x1f4;return function(_0x1630dc){logger[_0xd6f0('0x25')](_0x1630dc[_0xd6f0('0x26')]);if(_0x1630dc[_0xd6f0('0x27')]){delete _0x1630dc[_0xd6f0('0x27')];}_0x2042d5[_0xd6f0('0x1a')](_0x3fb5c3)['send'](_0x1630dc);};}exports[_0xd6f0('0x28')]=function(_0x1982d3,_0x55656c){var _0x38a3e9={},_0x385947={},_0x27db5e={'count':0x0,'rows':[]};var _0xb61222=_[_0xd6f0('0x29')](db[_0xd6f0('0x2a')][_0xd6f0('0x2b')],function(_0x3151f8){return{'name':_0x3151f8[_0xd6f0('0x2c')],'type':_0x3151f8[_0xd6f0('0x2d')][_0xd6f0('0x2e')]};});_0x385947[_0xd6f0('0x2f')]=_[_0xd6f0('0x29')](_0xb61222,_0xd6f0('0x27'));_0x385947[_0xd6f0('0x30')]=_[_0xd6f0('0x31')](_0x1982d3[_0xd6f0('0x30')]);_0x385947[_0xd6f0('0x32')]=_[_0xd6f0('0x33')](_0x385947[_0xd6f0('0x2f')],_0x385947[_0xd6f0('0x30')]);_0x38a3e9[_0xd6f0('0x34')]=_['intersection'](_0x385947[_0xd6f0('0x2f')],qs['fields'](_0x1982d3['query'][_0xd6f0('0x35')]));_0x38a3e9[_0xd6f0('0x34')]=_0x38a3e9[_0xd6f0('0x34')][_0xd6f0('0x36')]?_0x38a3e9[_0xd6f0('0x34')]:_0x385947['model'];if(!_0x1982d3[_0xd6f0('0x30')]['hasOwnProperty'](_0xd6f0('0x37'))){_0x38a3e9[_0xd6f0('0x1e')]=qs[_0xd6f0('0x1e')](_0x1982d3[_0xd6f0('0x30')][_0xd6f0('0x1e')]);_0x38a3e9['offset']=qs['offset'](_0x1982d3[_0xd6f0('0x30')][_0xd6f0('0x1c')]);}_0x38a3e9['order']=qs[_0xd6f0('0x38')](_0x1982d3['query'][_0xd6f0('0x38')]);_0x38a3e9[_0xd6f0('0x39')]=qs[_0xd6f0('0x32')](_[_0xd6f0('0x3a')](_0x1982d3[_0xd6f0('0x30')],_0x385947[_0xd6f0('0x32')]),_0xb61222);if(_0x1982d3[_0xd6f0('0x30')]['filter']){_0x38a3e9['where']=_[_0xd6f0('0x3b')](_0x38a3e9[_0xd6f0('0x39')],{'$or':_[_0xd6f0('0x29')](_0xb61222,function(_0x5c2d9a){if(_0x5c2d9a['type']!==_0xd6f0('0x3c')){var _0x2def01={};_0x2def01[_0x5c2d9a[_0xd6f0('0x27')]]={'$like':'%'+_0x1982d3[_0xd6f0('0x30')][_0xd6f0('0x3d')]+'%'};return _0x2def01;}})});}_0x38a3e9=_[_0xd6f0('0x3b')]({},_0x38a3e9,_0x1982d3[_0xd6f0('0x3e')]);var _0x64359c={'where':_0x38a3e9['where']};return db[_0xd6f0('0x2a')][_0xd6f0('0x1f')](_0x64359c)[_0xd6f0('0x24')](function(_0x3964e6){_0x27db5e['count']=_0x3964e6;if(_0x1982d3[_0xd6f0('0x30')][_0xd6f0('0x3f')]){_0x38a3e9[_0xd6f0('0x40')]=[{'all':!![]}];}return db[_0xd6f0('0x2a')][_0xd6f0('0x41')](_0x38a3e9);})['then'](function(_0x332809){_0x27db5e[_0xd6f0('0x42')]=_0x332809;return _0x27db5e;})[_0xd6f0('0x24')](respondWithFilteredResult(_0x55656c,_0x38a3e9))['catch'](handleError(_0x55656c,null));};exports[_0xd6f0('0x43')]=function(_0x1ddc40,_0x4b8cc7){var _0x516ffd={'raw':!![],'where':{'id':_0x1ddc40[_0xd6f0('0x44')]['id']}},_0x9cffd4={};_0x9cffd4[_0xd6f0('0x2f')]=_['keys'](db[_0xd6f0('0x2a')][_0xd6f0('0x2b')]);_0x9cffd4['query']=_[_0xd6f0('0x31')](_0x1ddc40[_0xd6f0('0x30')]);_0x9cffd4[_0xd6f0('0x32')]=_[_0xd6f0('0x33')](_0x9cffd4['model'],_0x9cffd4[_0xd6f0('0x30')]);_0x516ffd[_0xd6f0('0x34')]=_[_0xd6f0('0x33')](_0x9cffd4[_0xd6f0('0x2f')],qs[_0xd6f0('0x35')](_0x1ddc40[_0xd6f0('0x30')][_0xd6f0('0x35')]));_0x516ffd[_0xd6f0('0x34')]=_0x516ffd['attributes'][_0xd6f0('0x36')]?_0x516ffd[_0xd6f0('0x34')]:_0x9cffd4['model'];if(_0x1ddc40[_0xd6f0('0x30')][_0xd6f0('0x3f')]){_0x516ffd[_0xd6f0('0x40')]=[{'all':!![]}];}_0x516ffd=_[_0xd6f0('0x3b')]({},_0x516ffd,_0x1ddc40['options']);return db[_0xd6f0('0x2a')][_0xd6f0('0x45')](_0x516ffd)['then'](handleEntityNotFound(_0x4b8cc7,null))['then'](respondWithResult(_0x4b8cc7,null))[_0xd6f0('0x46')](handleError(_0x4b8cc7,null));};exports['create']=function(_0x35a8f5,_0x61b354){return db[_0xd6f0('0x2a')]['create'](_0x35a8f5[_0xd6f0('0x47')],{})[_0xd6f0('0x24')](respondWithResult(_0x61b354,0xc9))[_0xd6f0('0x46')](handleError(_0x61b354,null));};exports[_0xd6f0('0x22')]=function(_0xc4147e,_0x4c42ce){if(_0xc4147e[_0xd6f0('0x47')]['id']){delete _0xc4147e['body']['id'];}return db[_0xd6f0('0x2a')][_0xd6f0('0x45')]({'where':{'id':_0xc4147e[_0xd6f0('0x44')]['id']}})[_0xd6f0('0x24')](handleEntityNotFound(_0x4c42ce,null))['then'](saveUpdates(_0xc4147e['body'],null))[_0xd6f0('0x24')](respondWithResult(_0x4c42ce,null))[_0xd6f0('0x46')](handleError(_0x4c42ce,null));};exports['destroy']=function(_0xa68b18,_0x56c448){return db[_0xd6f0('0x2a')][_0xd6f0('0x45')]({'where':{'id':_0xa68b18[_0xd6f0('0x44')]['id']}})[_0xd6f0('0x24')](handleEntityNotFound(_0x56c448,null))[_0xd6f0('0x24')](removeEntity(_0x56c448,null))['catch'](handleError(_0x56c448,null));};
\ No newline at end of file
index 3579dea..cc25068 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19ea=['exports','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','FieldId','lodash','api','bluebird','request-promise','path','./intFreshdeskField.attributes'];(function(_0x2ad94a,_0x3dd8cd){var _0x32433e=function(_0x4da729){while(--_0x4da729){_0x2ad94a['push'](_0x2ad94a['shift']());}};_0x32433e(++_0x3dd8cd);}(_0x19ea,0xfe));var _0xa19e=function(_0xe8129c,_0x2fb03c){_0xe8129c=_0xe8129c-0x0;var _0x709fc5=_0x19ea[_0xe8129c];return _0x709fc5;};'use strict';var _=require(_0xa19e('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xa19e('0x1'));var moment=require('moment');var BPromise=require(_0xa19e('0x2'));var rp=require(_0xa19e('0x3'));var fs=require('fs');var path=require(_0xa19e('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xa19e('0x5'));module[_0xa19e('0x6')]=function(_0x29fe52,_0x2713e9){return _0x29fe52[_0xa19e('0x7')](_0xa19e('0x8'),attributes,{'tableName':_0xa19e('0x9'),'paranoid':![],'indexes':[{'name':_0xa19e('0xa'),'fields':[_0xa19e('0xb'),_0xa19e('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x45e4=['path','../../config/environment','./intFreshdeskField.attributes','exports','FreshdeskField','freshdesk_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','bluebird'];(function(_0x5de9ab,_0x2b4175){var _0x5ee8e0=function(_0x58677b){while(--_0x58677b){_0x5de9ab['push'](_0x5de9ab['shift']());}};_0x5ee8e0(++_0x2b4175);}(_0x45e4,0x18e));var _0x445e=function(_0x445cb7,_0x3df369){_0x445cb7=_0x445cb7-0x0;var _0x3b5d87=_0x45e4[_0x445cb7];return _0x3b5d87;};'use strict';var _=require(_0x445e('0x0'));var util=require(_0x445e('0x1'));var logger=require(_0x445e('0x2'))('api');var moment=require(_0x445e('0x3'));var BPromise=require(_0x445e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x445e('0x5'));var rimraf=require('rimraf');var config=require(_0x445e('0x6'));var attributes=require(_0x445e('0x7'));module[_0x445e('0x8')]=function(_0x45d74a,_0x348bd1){return _0x45d74a['define'](_0x445e('0x9'),attributes,{'tableName':'int_freshdesk_fields','paranoid':![],'indexes':[{'name':_0x445e('0xa'),'fields':[_0x445e('0xb'),_0x445e('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 6b07608..714af73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8767=['FreshdeskField,\x20%s,\x20%s','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x4f9446,_0x47ed8f){var _0x23c80a=function(_0x17421b){while(--_0x17421b){_0x4f9446['push'](_0x4f9446['shift']());}};_0x23c80a(++_0x47ed8f);}(_0x8767,0xff));var _0x7876=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8767[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7876('0x0'));var util=require(_0x7876('0x1'));var moment=require(_0x7876('0x2'));var BPromise=require(_0x7876('0x3'));var rs=require(_0x7876('0x4'));var fs=require('fs');var Redis=require(_0x7876('0x5'));var db=require(_0x7876('0x6'))['db'];var utils=require(_0x7876('0x7'));var logger=require(_0x7876('0x8'))('rpc');var config=require(_0x7876('0x9'));var jayson=require(_0x7876('0xa'));var client=jayson[_0x7876('0xb')][_0x7876('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x41430f,_0xc31e7a,_0x297f94){return new BPromise(function(_0x1e387f,_0x52f0a6){return client[_0x7876('0xd')](_0x41430f,_0x297f94)[_0x7876('0xe')](function(_0x290a5c){logger[_0x7876('0xf')]('FreshdeskField,\x20%s,\x20%s',_0xc31e7a,_0x7876('0x10'));logger['debug'](_0x7876('0x11'),_0xc31e7a,_0x7876('0x10'),JSON[_0x7876('0x12')](_0x290a5c));if(_0x290a5c[_0x7876('0x13')]){if(_0x290a5c[_0x7876('0x13')]['code']===0x1f4){logger['error']('FreshdeskField,\x20%s,\x20%s',_0xc31e7a,_0x290a5c[_0x7876('0x13')][_0x7876('0x14')]);return _0x52f0a6(_0x290a5c['error'][_0x7876('0x14')]);}logger[_0x7876('0x13')](_0x7876('0x15'),_0xc31e7a,_0x290a5c[_0x7876('0x13')][_0x7876('0x14')]);return _0x1e387f(_0x290a5c[_0x7876('0x13')][_0x7876('0x14')]);}else{logger[_0x7876('0xf')]('FreshdeskField,\x20%s,\x20%s',_0xc31e7a,_0x7876('0x10'));_0x1e387f(_0x290a5c[_0x7876('0x16')][_0x7876('0x14')]);}})['catch'](function(_0x2f2c32){logger[_0x7876('0x13')](_0x7876('0x15'),_0xc31e7a,_0x2f2c32);_0x52f0a6(_0x2f2c32);});});}
\ No newline at end of file
+var _0xcc89=['error','code','message','info','result','catch','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xcc89,0x141));var _0x9cc8=function(_0x48cb09,_0x160e61){_0x48cb09=_0x48cb09-0x0;var _0x3080cd=_0xcc89[_0x48cb09];return _0x3080cd;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9cc8('0x0'));var BPromise=require('bluebird');var rs=require(_0x9cc8('0x1'));var fs=require('fs');var Redis=require(_0x9cc8('0x2'));var db=require(_0x9cc8('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9cc8('0x4'));var config=require(_0x9cc8('0x5'));var jayson=require(_0x9cc8('0x6'));var client=jayson[_0x9cc8('0x7')][_0x9cc8('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1f153a,_0x46e910,_0x4ea767){return new BPromise(function(_0x128248,_0x48171b){return client[_0x9cc8('0x9')](_0x1f153a,_0x4ea767)[_0x9cc8('0xa')](function(_0x441e09){logger['info'](_0x9cc8('0xb'),_0x46e910,_0x9cc8('0xc'));logger[_0x9cc8('0xd')](_0x9cc8('0xe'),_0x46e910,'request\x20sent',JSON['stringify'](_0x441e09));if(_0x441e09[_0x9cc8('0xf')]){if(_0x441e09[_0x9cc8('0xf')][_0x9cc8('0x10')]===0x1f4){logger[_0x9cc8('0xf')](_0x9cc8('0xb'),_0x46e910,_0x441e09[_0x9cc8('0xf')][_0x9cc8('0x11')]);return _0x48171b(_0x441e09[_0x9cc8('0xf')][_0x9cc8('0x11')]);}logger[_0x9cc8('0xf')](_0x9cc8('0xb'),_0x46e910,_0x441e09[_0x9cc8('0xf')]['message']);return _0x128248(_0x441e09[_0x9cc8('0xf')]['message']);}else{logger[_0x9cc8('0x12')](_0x9cc8('0xb'),_0x46e910,_0x9cc8('0xc'));_0x128248(_0x441e09[_0x9cc8('0x13')][_0x9cc8('0x11')]);}})[_0x9cc8('0x14')](function(_0x2e9d70){logger[_0x9cc8('0xf')](_0x9cc8('0xb'),_0x46e910,_0x2e9d70);_0x48171b(_0x2e9d70);});});}
\ No newline at end of file
index eff09e2..219d70f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4f4=['destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','update'];(function(_0x2f33cb,_0x371a5e){var _0x14114f=function(_0x13e9fc){while(--_0x13e9fc){_0x2f33cb['push'](_0x2f33cb['shift']());}};_0x14114f(++_0x371a5e);}(_0xd4f4,0x8b));var _0x4d4f=function(_0x474c2b,_0x31861a){_0x474c2b=_0x474c2b-0x0;var _0x3a434b=_0xd4f4[_0x474c2b];return _0x3a434b;};'use strict';var multer=require(_0x4d4f('0x0'));var util=require(_0x4d4f('0x1'));var path=require(_0x4d4f('0x2'));var timeout=require(_0x4d4f('0x3'));var express=require(_0x4d4f('0x4'));var router=express[_0x4d4f('0x5')]();var fs_extra=require(_0x4d4f('0x6'));var auth=require(_0x4d4f('0x7'));var interaction=require(_0x4d4f('0x8'));var config=require(_0x4d4f('0x9'));var controller=require(_0x4d4f('0xa'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x4d4f('0xb')](_0x4d4f('0xc'),auth[_0x4d4f('0xd')](),controller[_0x4d4f('0xe')]);router[_0x4d4f('0xb')](_0x4d4f('0xf'),auth[_0x4d4f('0xd')](),controller[_0x4d4f('0x10')]);router[_0x4d4f('0xb')](_0x4d4f('0x11'),auth[_0x4d4f('0xd')](),controller[_0x4d4f('0x12')]);router[_0x4d4f('0x13')]('/',auth[_0x4d4f('0xd')](),controller[_0x4d4f('0x14')]);router[_0x4d4f('0x13')](_0x4d4f('0xf'),auth[_0x4d4f('0xd')](),controller['addConfiguration']);router['put']('/:id',auth[_0x4d4f('0xd')](),controller[_0x4d4f('0x15')]);router['delete'](_0x4d4f('0xc'),auth[_0x4d4f('0xd')](),controller[_0x4d4f('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x84a0=['isAuthenticated','index','get','/:id','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment','./intFreshsalesAccount.controller'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x84a0,0x66));var _0x084a=function(_0x25d403,_0x5612bb){_0x25d403=_0x25d403-0x0;var _0x3f3b24=_0x84a0[_0x25d403];return _0x3f3b24;};'use strict';var multer=require(_0x084a('0x0'));var util=require(_0x084a('0x1'));var path=require(_0x084a('0x2'));var timeout=require(_0x084a('0x3'));var express=require('express');var router=express[_0x084a('0x4')]();var fs_extra=require(_0x084a('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x084a('0x6'));var controller=require(_0x084a('0x7'));router['get']('/',auth[_0x084a('0x8')](),controller[_0x084a('0x9')]);router[_0x084a('0xa')](_0x084a('0xb'),auth[_0x084a('0x8')](),controller['show']);router[_0x084a('0xa')](_0x084a('0xc'),auth[_0x084a('0x8')](),controller[_0x084a('0xd')]);router[_0x084a('0xa')]('/:id/fields',auth['isAuthenticated'](),controller[_0x084a('0xe')]);router[_0x084a('0xf')]('/',auth[_0x084a('0x8')](),controller[_0x084a('0x10')]);router[_0x084a('0xf')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x084a('0x11')]);router[_0x084a('0x12')](_0x084a('0xb'),auth[_0x084a('0x8')](),controller[_0x084a('0x13')]);router[_0x084a('0x14')](_0x084a('0xb'),auth[_0x084a('0x8')](),controller['destroy']);module[_0x084a('0x15')]=router;
\ No newline at end of file
index 21c137e..396aba9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x583c=['exports','STRING','username','sequelize'];(function(_0x54fa68,_0x4e6e5c){var _0x5399e1=function(_0x251084){while(--_0x251084){_0x54fa68['push'](_0x54fa68['shift']());}};_0x5399e1(++_0x4e6e5c);}(_0x583c,0x12b));var _0xc583=function(_0x2cef86,_0xbae0a6){_0x2cef86=_0x2cef86-0x0;var _0x46dfd6=_0x583c[_0x2cef86];return _0x46dfd6;};'use strict';var Sequelize=require(_0xc583('0x0'));module[_0xc583('0x1')]={'name':{'type':Sequelize[_0xc583('0x2')]},'description':{'type':Sequelize[_0xc583('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0xc583('0x3')},'apiKey':{'type':Sequelize[_0xc583('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xc583('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xf61e=['remoteUri','sequelize','exports','STRING','username'];(function(_0x296612,_0xbc1fb4){var _0x22dd3c=function(_0x3c6c6c){while(--_0x3c6c6c){_0x296612['push'](_0x296612['shift']());}};_0x22dd3c(++_0xbc1fb4);}(_0xf61e,0x191));var _0xef61=function(_0x1ce8e7,_0x568154){_0x1ce8e7=_0x1ce8e7-0x0;var _0x2728b3=_0xf61e[_0x1ce8e7];return _0x2728b3;};'use strict';var Sequelize=require(_0xef61('0x0'));module[_0xef61('0x1')]={'name':{'type':Sequelize[_0xef61('0x2')]},'description':{'type':Sequelize[_0xef61('0x2')]},'username':{'type':Sequelize[_0xef61('0x2')],'unique':_0xef61('0x3')},'apiKey':{'type':Sequelize[_0xef61('0x2')]},'remoteUri':{'type':Sequelize[_0xef61('0x2')],'unique':_0xef61('0x4')},'serverUrl':{'type':Sequelize[_0xef61('0x2')],'allowNull':![]}};
\ No newline at end of file
index 1896e7f..e7f5eee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f1d=['status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','send','FreshsalesAccount','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','find','catch','create','body','FreshsalesConfiguration','order','getConfigurations','nolimit','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshsalesField','getFields','username','remoteUri','apiKey','slice','lastIndexOf','format','%s%s','/api/selector/owners','Token\x20token=','users','email','test','statusCode','stringify','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','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/environment','../../config/license/util'];(function(_0x36e1b0,_0x14c518){var _0x1db6b4=function(_0x1b477f){while(--_0x1b477f){_0x36e1b0['push'](_0x36e1b0['shift']());}};_0x1db6b4(++_0x14c518);}(_0x4f1d,0x1e4));var _0xd4f1=function(_0x2be104,_0x4bf5d0){_0x2be104=_0x2be104-0x0;var _0x31c115=_0x4f1d[_0x2be104];return _0x31c115;};'use strict';var emlformat=require(_0xd4f1('0x0'));var rimraf=require(_0xd4f1('0x1'));var zipdir=require(_0xd4f1('0x2'));var jsonpatch=require(_0xd4f1('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd4f1('0x4'));var Mustache=require('mustache');var util=require(_0xd4f1('0x5'));var path=require(_0xd4f1('0x6'));var sox=require('sox');var csv=require(_0xd4f1('0x7'));var ejs=require(_0xd4f1('0x8'));var fs=require('fs');var fs_extra=require(_0xd4f1('0x9'));var _=require(_0xd4f1('0xa'));var squel=require(_0xd4f1('0xb'));var crypto=require('crypto');var jsforce=require(_0xd4f1('0xc'));var deskjs=require(_0xd4f1('0xd'));var toCsv=require('to-csv');var querystring=require(_0xd4f1('0xe'));var Papa=require(_0xd4f1('0xf'));var Redis=require(_0xd4f1('0x10'));var authService=require(_0xd4f1('0x11'));var qs=require(_0xd4f1('0x12'));var as=require(_0xd4f1('0x13'));var hardwareService=require(_0xd4f1('0x14'));var logger=require(_0xd4f1('0x15'))(_0xd4f1('0x16'));var utils=require(_0xd4f1('0x17'));var config=require(_0xd4f1('0x18'));var licenseUtil=require(_0xd4f1('0x19'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x119b64,_0x24a73c){_0x24a73c=_0x24a73c||0xcc;return function(_0x27f5b8){if(_0x27f5b8){return _0x119b64['sendStatus'](_0x24a73c);}return _0x119b64[_0xd4f1('0x1a')](_0x24a73c)[_0xd4f1('0x1b')]();};}function respondWithResult(_0x4b0019,_0x4a598d){_0x4a598d=_0x4a598d||0xc8;return function(_0x5b12ac){if(_0x5b12ac){return _0x4b0019[_0xd4f1('0x1a')](_0x4a598d)[_0xd4f1('0x1c')](_0x5b12ac);}};}function respondWithFilteredResult(_0x573600,_0x33aebf){return function(_0x41e91f){if(_0x41e91f){var _0x5007a2=typeof _0x33aebf[_0xd4f1('0x1d')]===_0xd4f1('0x1e')&&typeof _0x33aebf[_0xd4f1('0x1f')]==='undefined';var _0x95054e=_0x41e91f[_0xd4f1('0x20')];var _0x431b3a=_0x5007a2?0x0:_0x33aebf[_0xd4f1('0x1d')];var _0x3c6c68=_0x5007a2?_0x41e91f[_0xd4f1('0x20')]:_0x33aebf[_0xd4f1('0x1d')]+_0x33aebf['limit'];var _0x13f126;if(_0x3c6c68>=_0x95054e){_0x3c6c68=_0x95054e;_0x13f126=0xc8;}else{_0x13f126=0xce;}_0x573600[_0xd4f1('0x1a')](_0x13f126);return _0x573600[_0xd4f1('0x21')](_0xd4f1('0x22'),_0x431b3a+'-'+_0x3c6c68+'/'+_0x95054e)[_0xd4f1('0x1c')](_0x41e91f);}return null;};}function patchUpdates(_0x736c25){return function(_0x313a39){try{jsonpatch[_0xd4f1('0x23')](_0x313a39,_0x736c25,!![]);}catch(_0x185f56){return BPromise['reject'](_0x185f56);}return _0x313a39[_0xd4f1('0x24')]();};}function saveUpdates(_0x303736,_0x3a3b16){return function(_0x38279d){if(_0x38279d){return _0x38279d[_0xd4f1('0x25')](_0x303736)[_0xd4f1('0x26')](function(_0x5bf2eb){return _0x5bf2eb;});}return null;};}function removeEntity(_0x323a32,_0x2914b5){return function(_0x4ca8e2){if(_0x4ca8e2){return _0x4ca8e2[_0xd4f1('0x27')]()[_0xd4f1('0x26')](function(){_0x323a32['status'](0xcc)[_0xd4f1('0x1b')]();});}};}function handleEntityNotFound(_0x22b802,_0x14fd3a){return function(_0x21b990){if(!_0x21b990){_0x22b802[_0xd4f1('0x28')](0x194);}return _0x21b990;};}function handleError(_0x433454,_0x264352){_0x264352=_0x264352||0x1f4;return function(_0x329e37){logger[_0xd4f1('0x29')](_0x329e37[_0xd4f1('0x2a')]);if(_0x329e37[_0xd4f1('0x2b')]){delete _0x329e37[_0xd4f1('0x2b')];}_0x433454[_0xd4f1('0x1a')](_0x264352)[_0xd4f1('0x2c')](_0x329e37);};}exports['index']=function(_0x34ed2b,_0x12ed64){var _0x23ac06={},_0x3af603={},_0xd4d521={'count':0x0,'rows':[]};var _0x30a9f7=_['map'](db[_0xd4f1('0x2d')]['rawAttributes'],function(_0x50c86e){return{'name':_0x50c86e[_0xd4f1('0x2e')],'type':_0x50c86e[_0xd4f1('0x2f')][_0xd4f1('0x30')]};});_0x3af603[_0xd4f1('0x31')]=_[_0xd4f1('0x32')](_0x30a9f7,_0xd4f1('0x2b'));_0x3af603[_0xd4f1('0x33')]=_[_0xd4f1('0x34')](_0x34ed2b[_0xd4f1('0x33')]);_0x3af603['filters']=_[_0xd4f1('0x35')](_0x3af603[_0xd4f1('0x31')],_0x3af603[_0xd4f1('0x33')]);_0x23ac06[_0xd4f1('0x36')]=_[_0xd4f1('0x35')](_0x3af603[_0xd4f1('0x31')],qs[_0xd4f1('0x37')](_0x34ed2b['query'][_0xd4f1('0x37')]));_0x23ac06[_0xd4f1('0x36')]=_0x23ac06[_0xd4f1('0x36')][_0xd4f1('0x38')]?_0x23ac06[_0xd4f1('0x36')]:_0x3af603[_0xd4f1('0x31')];if(!_0x34ed2b[_0xd4f1('0x33')][_0xd4f1('0x39')]('nolimit')){_0x23ac06[_0xd4f1('0x1f')]=qs[_0xd4f1('0x1f')](_0x34ed2b[_0xd4f1('0x33')][_0xd4f1('0x1f')]);_0x23ac06[_0xd4f1('0x1d')]=qs[_0xd4f1('0x1d')](_0x34ed2b[_0xd4f1('0x33')]['offset']);}_0x23ac06['order']=qs['sort'](_0x34ed2b['query'][_0xd4f1('0x3a')]);_0x23ac06[_0xd4f1('0x3b')]=qs[_0xd4f1('0x3c')](_[_0xd4f1('0x3d')](_0x34ed2b[_0xd4f1('0x33')],_0x3af603[_0xd4f1('0x3c')]),_0x30a9f7);if(_0x34ed2b[_0xd4f1('0x33')][_0xd4f1('0x3e')]){_0x23ac06[_0xd4f1('0x3b')]=_[_0xd4f1('0x3f')](_0x23ac06[_0xd4f1('0x3b')],{'$or':_[_0xd4f1('0x32')](_0x30a9f7,function(_0x556add){if(_0x556add[_0xd4f1('0x2f')]!==_0xd4f1('0x40')){var _0x14aa95={};_0x14aa95[_0x556add[_0xd4f1('0x2b')]]={'$like':'%'+_0x34ed2b[_0xd4f1('0x33')][_0xd4f1('0x3e')]+'%'};return _0x14aa95;}})});}_0x23ac06=_[_0xd4f1('0x3f')]({},_0x23ac06,_0x34ed2b[_0xd4f1('0x41')]);var _0x380386={'where':_0x23ac06[_0xd4f1('0x3b')]};return db['FreshsalesAccount'][_0xd4f1('0x20')](_0x380386)[_0xd4f1('0x26')](function(_0xf978d7){_0xd4d521[_0xd4f1('0x20')]=_0xf978d7;if(_0x34ed2b[_0xd4f1('0x33')][_0xd4f1('0x42')]){_0x23ac06[_0xd4f1('0x43')]=[{'all':!![]}];}return db['FreshsalesAccount'][_0xd4f1('0x44')](_0x23ac06);})[_0xd4f1('0x26')](function(_0xa5961c){_0xd4d521['rows']=_0xa5961c;return _0xd4d521;})[_0xd4f1('0x26')](respondWithFilteredResult(_0x12ed64,_0x23ac06))['catch'](handleError(_0x12ed64,null));};exports[_0xd4f1('0x45')]=function(_0xb25bfe,_0x15a542){var _0x558b74={'raw':![],'where':{'id':_0xb25bfe[_0xd4f1('0x46')]['id']}},_0xc490fd={};_0xc490fd[_0xd4f1('0x31')]=_['keys'](db['FreshsalesAccount']['rawAttributes']);_0xc490fd[_0xd4f1('0x33')]=_[_0xd4f1('0x34')](_0xb25bfe[_0xd4f1('0x33')]);_0xc490fd['filters']=_['intersection'](_0xc490fd['model'],_0xc490fd[_0xd4f1('0x33')]);_0x558b74['attributes']=_[_0xd4f1('0x35')](_0xc490fd[_0xd4f1('0x31')],qs['fields'](_0xb25bfe[_0xd4f1('0x33')]['fields']));_0x558b74['attributes']=_0x558b74['attributes']['length']?_0x558b74[_0xd4f1('0x36')]:_0xc490fd[_0xd4f1('0x31')];if(_0xb25bfe[_0xd4f1('0x33')][_0xd4f1('0x42')]){_0x558b74['include']=[{'all':!![]}];}_0x558b74=_['merge']({},_0x558b74,_0xb25bfe['options']);return db[_0xd4f1('0x2d')][_0xd4f1('0x47')](_0x558b74)['then'](handleEntityNotFound(_0x15a542,null))[_0xd4f1('0x26')](respondWithResult(_0x15a542,null))[_0xd4f1('0x48')](handleError(_0x15a542,null));};exports[_0xd4f1('0x49')]=function(_0x51d54b,_0x35a779){return db[_0xd4f1('0x2d')][_0xd4f1('0x49')](_0x51d54b['body'],{})[_0xd4f1('0x26')](respondWithResult(_0x35a779,0xc9))[_0xd4f1('0x48')](handleError(_0x35a779,null));};exports['update']=function(_0x894ce2,_0x5bc7fa){if(_0x894ce2[_0xd4f1('0x4a')]['id']){delete _0x894ce2['body']['id'];}return db[_0xd4f1('0x2d')]['find']({'where':{'id':_0x894ce2[_0xd4f1('0x46')]['id']}})['then'](handleEntityNotFound(_0x5bc7fa,null))['then'](saveUpdates(_0x894ce2[_0xd4f1('0x4a')],null))[_0xd4f1('0x26')](respondWithResult(_0x5bc7fa,null))['catch'](handleError(_0x5bc7fa,null));};exports[_0xd4f1('0x27')]=function(_0xce98b,_0x4a307b){return db[_0xd4f1('0x2d')][_0xd4f1('0x47')]({'where':{'id':_0xce98b[_0xd4f1('0x46')]['id']}})[_0xd4f1('0x26')](handleEntityNotFound(_0x4a307b,null))[_0xd4f1('0x26')](removeEntity(_0x4a307b,null))[_0xd4f1('0x48')](handleError(_0x4a307b,null));};exports['getConfigurations']=function(_0x54e869,_0x3973ff,_0x3c6e53){var _0x2ed262={};var _0x70fa7f={};var _0xc0ff2c;var _0x2c803a;return db[_0xd4f1('0x2d')]['findOne']({'where':{'id':_0x54e869[_0xd4f1('0x46')]['id']}})[_0xd4f1('0x26')](handleEntityNotFound(_0x3973ff,null))[_0xd4f1('0x26')](function(_0x2c629a){if(_0x2c629a){_0xc0ff2c=_0x2c629a;_0x70fa7f[_0xd4f1('0x31')]=_[_0xd4f1('0x34')](db[_0xd4f1('0x4b')]['rawAttributes']);_0x70fa7f[_0xd4f1('0x33')]=_[_0xd4f1('0x34')](_0x54e869[_0xd4f1('0x33')]);_0x70fa7f[_0xd4f1('0x3c')]=_['intersection'](_0x70fa7f[_0xd4f1('0x31')],_0x70fa7f['query']);_0x2ed262[_0xd4f1('0x36')]=_[_0xd4f1('0x35')](_0x70fa7f['model'],qs['fields'](_0x54e869[_0xd4f1('0x33')][_0xd4f1('0x37')]));_0x2ed262[_0xd4f1('0x36')]=_0x2ed262[_0xd4f1('0x36')][_0xd4f1('0x38')]?_0x2ed262[_0xd4f1('0x36')]:_0x70fa7f[_0xd4f1('0x31')];_0x2ed262[_0xd4f1('0x4c')]=qs[_0xd4f1('0x3a')](_0x54e869[_0xd4f1('0x33')][_0xd4f1('0x3a')]);_0x2ed262[_0xd4f1('0x3b')]=qs[_0xd4f1('0x3c')](_[_0xd4f1('0x3d')](_0x54e869[_0xd4f1('0x33')],_0x70fa7f[_0xd4f1('0x3c')]));if(_0x54e869['query'][_0xd4f1('0x3e')]){_0x2ed262['where']=_[_0xd4f1('0x3f')](_0x2ed262[_0xd4f1('0x3b')],{'$or':_[_0xd4f1('0x32')](_0x2ed262[_0xd4f1('0x36')],function(_0x4d517c){var _0x233f56={};_0x233f56[_0x4d517c]={'$like':'%'+_0x54e869[_0xd4f1('0x33')][_0xd4f1('0x3e')]+'%'};return _0x233f56;})});}_0x2ed262=_[_0xd4f1('0x3f')]({},_0x2ed262,_0x54e869[_0xd4f1('0x41')]);return _0xc0ff2c[_0xd4f1('0x4d')](_0x2ed262);}})['then'](function(_0x1ecbc8){if(_0x1ecbc8){_0x2c803a=_0x1ecbc8[_0xd4f1('0x38')];if(!_0x54e869[_0xd4f1('0x33')][_0xd4f1('0x39')](_0xd4f1('0x4e'))){_0x2ed262[_0xd4f1('0x1f')]=qs[_0xd4f1('0x1f')](_0x54e869[_0xd4f1('0x33')][_0xd4f1('0x1f')]);_0x2ed262[_0xd4f1('0x1d')]=qs['offset'](_0x54e869[_0xd4f1('0x33')][_0xd4f1('0x1d')]);}return _0xc0ff2c[_0xd4f1('0x4d')](_0x2ed262);}})[_0xd4f1('0x26')](function(_0x28a32d){if(_0x28a32d){return _0x28a32d?{'count':_0x2c803a,'rows':_0x28a32d}:null;}})[_0xd4f1('0x26')](respondWithResult(_0x3973ff,null))['catch'](handleError(_0x3973ff,null));};exports['addConfiguration']=function(_0x379787,_0x5327fe,_0x4773e3){if(_0x379787[_0xd4f1('0x4a')]['id']){delete _0x379787['body']['id'];}return db[_0xd4f1('0x2d')][_0xd4f1('0x4f')]({'where':{'id':_0x379787['params']['id']}})['then'](handleEntityNotFound(_0x5327fe,null))[_0xd4f1('0x26')](function(_0x41359e){if(_0x41359e){_0x379787[_0xd4f1('0x4a')][_0xd4f1('0x50')]=_0x41359e['id'];_0x379787['body'][_0xd4f1('0x51')]=integrations[_0xd4f1('0x52')](_0x379787[_0xd4f1('0x4a')][_0xd4f1('0x53')],_0x379787[_0xd4f1('0x4a')]['type']);_0x379787[_0xd4f1('0x4a')][_0xd4f1('0x54')]=integrations[_0xd4f1('0x55')](_0x379787['body'][_0xd4f1('0x53')],_0x379787[_0xd4f1('0x4a')]['type']);return db[_0xd4f1('0x4b')][_0xd4f1('0x49')](_0x379787[_0xd4f1('0x4a')],{'include':[{'model':db[_0xd4f1('0x56')],'as':_0xd4f1('0x51')},{'model':db[_0xd4f1('0x56')],'as':_0xd4f1('0x54')}]});}return null;})[_0xd4f1('0x26')](respondWithResult(_0x5327fe,null))[_0xd4f1('0x48')](handleError(_0x5327fe,null));};exports[_0xd4f1('0x57')]=function(_0xa4cd08,_0x4770b6,_0x8fe809){var _0xa1842='';var _0x833e1e='';return db[_0xd4f1('0x2d')][_0xd4f1('0x4f')]({'where':{'id':_0xa4cd08[_0xd4f1('0x46')]['id']},'attributes':['id',_0xd4f1('0x58'),_0xd4f1('0x59'),_0xd4f1('0x5a')]})[_0xd4f1('0x26')](handleEntityNotFound(_0x4770b6,null))[_0xd4f1('0x26')](function(_0x329b69){if(_0x329b69){_0x833e1e=_0x329b69['username'];_0xa1842=_0x329b69['remoteUri'];var _0x3edd26=_0x329b69[_0xd4f1('0x59')][_0xd4f1('0x5b')](-0x1);if(_0x3edd26==='/'){_0xa1842=_0xa1842['substring'](0x0,_0xa1842[_0xd4f1('0x5c')](_0x3edd26));}return rp({'method':'GET','uri':util[_0xd4f1('0x5d')](_0xd4f1('0x5e'),_0xa1842,_0xd4f1('0x5f')),'headers':{'Authorization':_0xd4f1('0x60')+_0x329b69[_0xd4f1('0x5a')]},'json':!![]});}})[_0xd4f1('0x26')](function(_0x4c1a91){if(_0x4c1a91){var _0x26acd4=_0x4c1a91[_0xd4f1('0x61')];var _0x257e0f=![];var _0x3b4046=null;for(_0x3b4046=0x0;_0x3b4046<_0x26acd4[_0xd4f1('0x38')];_0x3b4046++){if(_0x26acd4[_0x3b4046][_0xd4f1('0x62')]===_0x833e1e){_0x257e0f=!![];}}if(_0x257e0f){return!![];}else{throw new Error({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}})[_0xd4f1('0x26')](respondWithResult(_0x4770b6,null))['catch'](function(_0x405621){var _0x4f5ec0=_0xa4cd08[_0xd4f1('0x33')][_0xd4f1('0x63')]?0x1f4:_0x405621[_0xd4f1('0x64')]||0x1f4;logger[_0xd4f1('0x29')]('getFields,\x20%s,\x20%s,\x20%s',_0xd4f1('0x57'),_0x4f5ec0,JSON[_0xd4f1('0x65')](_0x405621));delete _0x405621[_0xd4f1('0x2b')];if(_0x4f5ec0===0x191){_0x4f5ec0=0x190;}_0x4770b6[_0xd4f1('0x1a')](_0x4f5ec0)[_0xd4f1('0x2c')](_0xa4cd08['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x405621[_0xd4f1('0x64')]}:_0x405621);});};
\ No newline at end of file
+var _0xefc4=['util','path','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','limit','count','Content-Range','save','update','then','destroy','error','stack','name','send','map','FreshsalesAccount','rawAttributes','type','key','model','query','intersection','fields','attributes','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','keys','length','includeAll','find','create','body','getConfigurations','findOne','AccountId','Subjects','channel','getDescriptions','FreshsalesField','getFields','apiKey','username','remoteUri','substring','lastIndexOf','GET','format','/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache'];(function(_0x4b2863,_0x494899){var _0x567d67=function(_0x751f03){while(--_0x751f03){_0x4b2863['push'](_0x4b2863['shift']());}};_0x567d67(++_0x494899);}(_0xefc4,0x1e8));var _0x4efc=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xefc4[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x4efc('0x0'));var rimraf=require(_0x4efc('0x1'));var zipdir=require(_0x4efc('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4efc('0x3'));var moment=require(_0x4efc('0x4'));var BPromise=require(_0x4efc('0x5'));var Mustache=require(_0x4efc('0x6'));var util=require(_0x4efc('0x7'));var path=require(_0x4efc('0x8'));var sox=require('sox');var csv=require(_0x4efc('0x9'));var ejs=require(_0x4efc('0xa'));var fs=require('fs');var fs_extra=require(_0x4efc('0xb'));var _=require(_0x4efc('0xc'));var squel=require(_0x4efc('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4efc('0xe'));var toCsv=require('to-csv');var querystring=require(_0x4efc('0xf'));var Papa=require('papaparse');var Redis=require(_0x4efc('0x10'));var authService=require(_0x4efc('0x11'));var qs=require(_0x4efc('0x12'));var as=require(_0x4efc('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4efc('0x14'))(_0x4efc('0x15'));var utils=require(_0x4efc('0x16'));var config=require(_0x4efc('0x17'));var licenseUtil=require(_0x4efc('0x18'));var db=require(_0x4efc('0x19'))['db'];var integrations=require(_0x4efc('0x1a'));function respondWithStatusCode(_0x4a8bb0,_0x2f2522){_0x2f2522=_0x2f2522||0xcc;return function(_0x361d24){if(_0x361d24){return _0x4a8bb0['sendStatus'](_0x2f2522);}return _0x4a8bb0[_0x4efc('0x1b')](_0x2f2522)[_0x4efc('0x1c')]();};}function respondWithResult(_0x3aa101,_0x3c02d5){_0x3c02d5=_0x3c02d5||0xc8;return function(_0x2388ed){if(_0x2388ed){return _0x3aa101['status'](_0x3c02d5)[_0x4efc('0x1d')](_0x2388ed);}};}function respondWithFilteredResult(_0x4bbd15,_0x18a02d){return function(_0x1d88b9){if(_0x1d88b9){var _0x49cef5=typeof _0x18a02d[_0x4efc('0x1e')]===_0x4efc('0x1f')&&typeof _0x18a02d[_0x4efc('0x20')]===_0x4efc('0x1f');var _0x1e5614=_0x1d88b9[_0x4efc('0x21')];var _0x3b1868=_0x49cef5?0x0:_0x18a02d[_0x4efc('0x1e')];var _0x34b6fa=_0x49cef5?_0x1d88b9[_0x4efc('0x21')]:_0x18a02d[_0x4efc('0x1e')]+_0x18a02d[_0x4efc('0x20')];var _0x52c49c;if(_0x34b6fa>=_0x1e5614){_0x34b6fa=_0x1e5614;_0x52c49c=0xc8;}else{_0x52c49c=0xce;}_0x4bbd15[_0x4efc('0x1b')](_0x52c49c);return _0x4bbd15['set'](_0x4efc('0x22'),_0x3b1868+'-'+_0x34b6fa+'/'+_0x1e5614)[_0x4efc('0x1d')](_0x1d88b9);}return null;};}function patchUpdates(_0x1ea175){return function(_0x29d87c){try{jsonpatch['apply'](_0x29d87c,_0x1ea175,!![]);}catch(_0x3c13c0){return BPromise['reject'](_0x3c13c0);}return _0x29d87c[_0x4efc('0x23')]();};}function saveUpdates(_0x1a42f5,_0x2d6707){return function(_0x244e78){if(_0x244e78){return _0x244e78[_0x4efc('0x24')](_0x1a42f5)[_0x4efc('0x25')](function(_0x200015){return _0x200015;});}return null;};}function removeEntity(_0x41f4f2,_0x5ef62f){return function(_0x4bad03){if(_0x4bad03){return _0x4bad03[_0x4efc('0x26')]()[_0x4efc('0x25')](function(){_0x41f4f2[_0x4efc('0x1b')](0xcc)[_0x4efc('0x1c')]();});}};}function handleEntityNotFound(_0x30c98d,_0x49c151){return function(_0x5e524c){if(!_0x5e524c){_0x30c98d['sendStatus'](0x194);}return _0x5e524c;};}function handleError(_0x1520bd,_0x13525d){_0x13525d=_0x13525d||0x1f4;return function(_0x3d400e){logger[_0x4efc('0x27')](_0x3d400e[_0x4efc('0x28')]);if(_0x3d400e[_0x4efc('0x29')]){delete _0x3d400e[_0x4efc('0x29')];}_0x1520bd[_0x4efc('0x1b')](_0x13525d)[_0x4efc('0x2a')](_0x3d400e);};}exports['index']=function(_0xfb28e3,_0x4c8d93){var _0x56aa1f={},_0x27036d={},_0x30d82d={'count':0x0,'rows':[]};var _0x46d84c=_[_0x4efc('0x2b')](db[_0x4efc('0x2c')][_0x4efc('0x2d')],function(_0x4a12d2){return{'name':_0x4a12d2['fieldName'],'type':_0x4a12d2[_0x4efc('0x2e')][_0x4efc('0x2f')]};});_0x27036d[_0x4efc('0x30')]=_['map'](_0x46d84c,_0x4efc('0x29'));_0x27036d['query']=_['keys'](_0xfb28e3[_0x4efc('0x31')]);_0x27036d['filters']=_['intersection'](_0x27036d[_0x4efc('0x30')],_0x27036d['query']);_0x56aa1f['attributes']=_[_0x4efc('0x32')](_0x27036d[_0x4efc('0x30')],qs[_0x4efc('0x33')](_0xfb28e3[_0x4efc('0x31')][_0x4efc('0x33')]));_0x56aa1f['attributes']=_0x56aa1f['attributes']['length']?_0x56aa1f[_0x4efc('0x34')]:_0x27036d['model'];if(!_0xfb28e3[_0x4efc('0x31')][_0x4efc('0x35')]('nolimit')){_0x56aa1f[_0x4efc('0x20')]=qs['limit'](_0xfb28e3['query'][_0x4efc('0x20')]);_0x56aa1f['offset']=qs[_0x4efc('0x1e')](_0xfb28e3[_0x4efc('0x31')][_0x4efc('0x1e')]);}_0x56aa1f[_0x4efc('0x36')]=qs[_0x4efc('0x37')](_0xfb28e3[_0x4efc('0x31')]['sort']);_0x56aa1f[_0x4efc('0x38')]=qs[_0x4efc('0x39')](_[_0x4efc('0x3a')](_0xfb28e3['query'],_0x27036d['filters']),_0x46d84c);if(_0xfb28e3['query'][_0x4efc('0x3b')]){_0x56aa1f[_0x4efc('0x38')]=_[_0x4efc('0x3c')](_0x56aa1f[_0x4efc('0x38')],{'$or':_['map'](_0x46d84c,function(_0x4b1686){if(_0x4b1686['type']!==_0x4efc('0x3d')){var _0x350b01={};_0x350b01[_0x4b1686[_0x4efc('0x29')]]={'$like':'%'+_0xfb28e3[_0x4efc('0x31')][_0x4efc('0x3b')]+'%'};return _0x350b01;}})});}_0x56aa1f=_[_0x4efc('0x3c')]({},_0x56aa1f,_0xfb28e3[_0x4efc('0x3e')]);var _0x2735fd={'where':_0x56aa1f[_0x4efc('0x38')]};return db[_0x4efc('0x2c')]['count'](_0x2735fd)['then'](function(_0x42cbc4){_0x30d82d[_0x4efc('0x21')]=_0x42cbc4;if(_0xfb28e3['query']['includeAll']){_0x56aa1f[_0x4efc('0x3f')]=[{'all':!![]}];}return db[_0x4efc('0x2c')][_0x4efc('0x40')](_0x56aa1f);})[_0x4efc('0x25')](function(_0x276bd9){_0x30d82d[_0x4efc('0x41')]=_0x276bd9;return _0x30d82d;})['then'](respondWithFilteredResult(_0x4c8d93,_0x56aa1f))[_0x4efc('0x42')](handleError(_0x4c8d93,null));};exports[_0x4efc('0x43')]=function(_0x5ae31f,_0x43ab45){var _0x285469={'raw':![],'where':{'id':_0x5ae31f[_0x4efc('0x44')]['id']}},_0x1d1b89={};_0x1d1b89['model']=_[_0x4efc('0x45')](db[_0x4efc('0x2c')][_0x4efc('0x2d')]);_0x1d1b89[_0x4efc('0x31')]=_[_0x4efc('0x45')](_0x5ae31f[_0x4efc('0x31')]);_0x1d1b89['filters']=_['intersection'](_0x1d1b89['model'],_0x1d1b89['query']);_0x285469['attributes']=_[_0x4efc('0x32')](_0x1d1b89[_0x4efc('0x30')],qs[_0x4efc('0x33')](_0x5ae31f[_0x4efc('0x31')]['fields']));_0x285469['attributes']=_0x285469[_0x4efc('0x34')][_0x4efc('0x46')]?_0x285469[_0x4efc('0x34')]:_0x1d1b89['model'];if(_0x5ae31f[_0x4efc('0x31')][_0x4efc('0x47')]){_0x285469[_0x4efc('0x3f')]=[{'all':!![]}];}_0x285469=_[_0x4efc('0x3c')]({},_0x285469,_0x5ae31f[_0x4efc('0x3e')]);return db[_0x4efc('0x2c')][_0x4efc('0x48')](_0x285469)[_0x4efc('0x25')](handleEntityNotFound(_0x43ab45,null))[_0x4efc('0x25')](respondWithResult(_0x43ab45,null))[_0x4efc('0x42')](handleError(_0x43ab45,null));};exports['create']=function(_0x265cbb,_0x14943f){return db[_0x4efc('0x2c')][_0x4efc('0x49')](_0x265cbb[_0x4efc('0x4a')],{})['then'](respondWithResult(_0x14943f,0xc9))[_0x4efc('0x42')](handleError(_0x14943f,null));};exports[_0x4efc('0x24')]=function(_0x50832d,_0x2a8627){if(_0x50832d['body']['id']){delete _0x50832d[_0x4efc('0x4a')]['id'];}return db['FreshsalesAccount']['find']({'where':{'id':_0x50832d[_0x4efc('0x44')]['id']}})[_0x4efc('0x25')](handleEntityNotFound(_0x2a8627,null))[_0x4efc('0x25')](saveUpdates(_0x50832d['body'],null))[_0x4efc('0x25')](respondWithResult(_0x2a8627,null))['catch'](handleError(_0x2a8627,null));};exports[_0x4efc('0x26')]=function(_0x59fa7e,_0x2726ab){return db[_0x4efc('0x2c')]['find']({'where':{'id':_0x59fa7e[_0x4efc('0x44')]['id']}})[_0x4efc('0x25')](handleEntityNotFound(_0x2726ab,null))[_0x4efc('0x25')](removeEntity(_0x2726ab,null))[_0x4efc('0x42')](handleError(_0x2726ab,null));};exports[_0x4efc('0x4b')]=function(_0x3884ec,_0x1ea649,_0xfadba9){var _0xe3b699={};var _0x2f30b4={};var _0x8b56ba;var _0x7b0b63;return db[_0x4efc('0x2c')][_0x4efc('0x4c')]({'where':{'id':_0x3884ec[_0x4efc('0x44')]['id']}})[_0x4efc('0x25')](handleEntityNotFound(_0x1ea649,null))['then'](function(_0x2291ae){if(_0x2291ae){_0x8b56ba=_0x2291ae;_0x2f30b4[_0x4efc('0x30')]=_['keys'](db['FreshsalesConfiguration'][_0x4efc('0x2d')]);_0x2f30b4[_0x4efc('0x31')]=_[_0x4efc('0x45')](_0x3884ec[_0x4efc('0x31')]);_0x2f30b4[_0x4efc('0x39')]=_[_0x4efc('0x32')](_0x2f30b4[_0x4efc('0x30')],_0x2f30b4['query']);_0xe3b699[_0x4efc('0x34')]=_[_0x4efc('0x32')](_0x2f30b4['model'],qs[_0x4efc('0x33')](_0x3884ec[_0x4efc('0x31')][_0x4efc('0x33')]));_0xe3b699[_0x4efc('0x34')]=_0xe3b699[_0x4efc('0x34')][_0x4efc('0x46')]?_0xe3b699[_0x4efc('0x34')]:_0x2f30b4[_0x4efc('0x30')];_0xe3b699['order']=qs[_0x4efc('0x37')](_0x3884ec[_0x4efc('0x31')][_0x4efc('0x37')]);_0xe3b699[_0x4efc('0x38')]=qs['filters'](_[_0x4efc('0x3a')](_0x3884ec[_0x4efc('0x31')],_0x2f30b4['filters']));if(_0x3884ec[_0x4efc('0x31')][_0x4efc('0x3b')]){_0xe3b699[_0x4efc('0x38')]=_[_0x4efc('0x3c')](_0xe3b699[_0x4efc('0x38')],{'$or':_[_0x4efc('0x2b')](_0xe3b699[_0x4efc('0x34')],function(_0x2709ed){var _0x38a617={};_0x38a617[_0x2709ed]={'$like':'%'+_0x3884ec['query'][_0x4efc('0x3b')]+'%'};return _0x38a617;})});}_0xe3b699=_['merge']({},_0xe3b699,_0x3884ec[_0x4efc('0x3e')]);return _0x8b56ba['getConfigurations'](_0xe3b699);}})[_0x4efc('0x25')](function(_0xe92eda){if(_0xe92eda){_0x7b0b63=_0xe92eda[_0x4efc('0x46')];if(!_0x3884ec[_0x4efc('0x31')]['hasOwnProperty']('nolimit')){_0xe3b699['limit']=qs['limit'](_0x3884ec[_0x4efc('0x31')][_0x4efc('0x20')]);_0xe3b699[_0x4efc('0x1e')]=qs[_0x4efc('0x1e')](_0x3884ec['query']['offset']);}return _0x8b56ba[_0x4efc('0x4b')](_0xe3b699);}})[_0x4efc('0x25')](function(_0x49d5a0){if(_0x49d5a0){return _0x49d5a0?{'count':_0x7b0b63,'rows':_0x49d5a0}:null;}})['then'](respondWithResult(_0x1ea649,null))[_0x4efc('0x42')](handleError(_0x1ea649,null));};exports['addConfiguration']=function(_0xd3af6a,_0x136070,_0x54a052){if(_0xd3af6a[_0x4efc('0x4a')]['id']){delete _0xd3af6a[_0x4efc('0x4a')]['id'];}return db[_0x4efc('0x2c')][_0x4efc('0x4c')]({'where':{'id':_0xd3af6a[_0x4efc('0x44')]['id']}})[_0x4efc('0x25')](handleEntityNotFound(_0x136070,null))['then'](function(_0x4f31cc){if(_0x4f31cc){_0xd3af6a['body'][_0x4efc('0x4d')]=_0x4f31cc['id'];_0xd3af6a['body'][_0x4efc('0x4e')]=integrations['getSubjects'](_0xd3af6a[_0x4efc('0x4a')][_0x4efc('0x4f')],_0xd3af6a['body'][_0x4efc('0x2e')]);_0xd3af6a[_0x4efc('0x4a')]['Descriptions']=integrations[_0x4efc('0x50')](_0xd3af6a['body'][_0x4efc('0x4f')],_0xd3af6a[_0x4efc('0x4a')][_0x4efc('0x2e')]);return db['FreshsalesConfiguration'][_0x4efc('0x49')](_0xd3af6a[_0x4efc('0x4a')],{'include':[{'model':db[_0x4efc('0x51')],'as':_0x4efc('0x4e')},{'model':db[_0x4efc('0x51')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x136070,null))[_0x4efc('0x42')](handleError(_0x136070,null));};exports[_0x4efc('0x52')]=function(_0x5a6e92,_0x53955f,_0x649ba6){var _0x2c6690='';var _0x1d1afa='';return db[_0x4efc('0x2c')][_0x4efc('0x4c')]({'where':{'id':_0x5a6e92[_0x4efc('0x44')]['id']},'attributes':['id','username','remoteUri',_0x4efc('0x53')]})[_0x4efc('0x25')](handleEntityNotFound(_0x53955f,null))[_0x4efc('0x25')](function(_0x13b589){if(_0x13b589){_0x1d1afa=_0x13b589[_0x4efc('0x54')];_0x2c6690=_0x13b589[_0x4efc('0x55')];var _0x258890=_0x13b589[_0x4efc('0x55')]['slice'](-0x1);if(_0x258890==='/'){_0x2c6690=_0x2c6690[_0x4efc('0x56')](0x0,_0x2c6690[_0x4efc('0x57')](_0x258890));}return rp({'method':_0x4efc('0x58'),'uri':util[_0x4efc('0x59')]('%s%s',_0x2c6690,_0x4efc('0x5a')),'headers':{'Authorization':_0x4efc('0x5b')+_0x13b589[_0x4efc('0x53')]},'json':!![]});}})[_0x4efc('0x25')](function(_0x259574){if(_0x259574){var _0x280ac4=_0x259574[_0x4efc('0x5c')];var _0xd5fde6=![];var _0x710019=null;for(_0x710019=0x0;_0x710019<_0x280ac4[_0x4efc('0x46')];_0x710019++){if(_0x280ac4[_0x710019][_0x4efc('0x5d')]===_0x1d1afa){_0xd5fde6=!![];}}if(_0xd5fde6){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x4efc('0x5e')});}}})[_0x4efc('0x25')](respondWithResult(_0x53955f,null))[_0x4efc('0x42')](function(_0x4feba0){var _0x5e0bc0=_0x5a6e92[_0x4efc('0x31')][_0x4efc('0x5f')]?0x1f4:_0x4feba0[_0x4efc('0x60')]||0x1f4;logger['error'](_0x4efc('0x61'),_0x4efc('0x52'),_0x5e0bc0,JSON['stringify'](_0x4feba0));delete _0x4feba0[_0x4efc('0x29')];if(_0x5e0bc0===0x191){_0x5e0bc0=0x190;}_0x53955f[_0x4efc('0x1b')](_0x5e0bc0)[_0x4efc('0x2a')](_0x5a6e92[_0x4efc('0x31')]['test']?{'message':_0x4efc('0x62'),'statusCode':_0x4feba0[_0x4efc('0x60')]}:_0x4feba0);});};
\ No newline at end of file
index bfcb316..a52992b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['../../config/logger','api','moment','bluebird','request-promise','path','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','int_freshsales_accounts','lodash','util'];(function(_0x1abd5b,_0x3c7c53){var _0x3c4add=function(_0x1068cf){while(--_0x1068cf){_0x1abd5b['push'](_0x1abd5b['shift']());}};_0x3c4add(++_0x3c7c53);}(_0x5f2f,0x73));var _0xf5f2=function(_0x18e453,_0x47dbcb){_0x18e453=_0x18e453-0x0;var _0x310615=_0x5f2f[_0x18e453];return _0x310615;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var logger=require(_0xf5f2('0x2'))(_0xf5f2('0x3'));var moment=require(_0xf5f2('0x4'));var BPromise=require(_0xf5f2('0x5'));var rp=require(_0xf5f2('0x6'));var fs=require('fs');var path=require(_0xf5f2('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf5f2('0x8'));var integrations=require(_0xf5f2('0x9'));module[_0xf5f2('0xa')]=function(_0x3eebf6,_0x3133bc){return _0x3eebf6[_0xf5f2('0xb')]('FreshsalesAccount',attributes,{'tableName':_0xf5f2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2d72=['exports','define','FreshsalesAccount','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration'];(function(_0x4ca333,_0x1218a3){var _0x13b2e1=function(_0x1eaf45){while(--_0x1eaf45){_0x4ca333['push'](_0x4ca333['shift']());}};_0x13b2e1(++_0x1218a3);}(_0x2d72,0xa8));var _0x22d7=function(_0x566e6a,_0x140448){_0x566e6a=_0x566e6a-0x0;var _0x294464=_0x2d72[_0x566e6a];return _0x294464;};'use strict';var _=require(_0x22d7('0x0'));var util=require(_0x22d7('0x1'));var logger=require(_0x22d7('0x2'))(_0x22d7('0x3'));var moment=require(_0x22d7('0x4'));var BPromise=require(_0x22d7('0x5'));var rp=require(_0x22d7('0x6'));var fs=require('fs');var path=require(_0x22d7('0x7'));var rimraf=require(_0x22d7('0x8'));var config=require(_0x22d7('0x9'));var attributes=require(_0x22d7('0xa'));var integrations=require(_0x22d7('0xb'));module[_0x22d7('0xc')]=function(_0x100426,_0x52a3e3){return _0x100426[_0x22d7('0xd')](_0x22d7('0xe'),attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4402056..8d53c6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5430=['map','model','find','ShowFreshsalesAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','FreshsalesAccount,\x20%s,\x20%s','message','result','GetFreshsalesAccount','FreshsalesAccount','options','raw','where','attributes','limit','include'];(function(_0x51c056,_0x1921a5){var _0x5827d0=function(_0x3e5792){while(--_0x3e5792){_0x51c056['push'](_0x51c056['shift']());}};_0x5827d0(++_0x1921a5);}(_0x5430,0x10c));var _0x0543=function(_0x32ea1b,_0x105491){_0x32ea1b=_0x32ea1b-0x0;var _0x14ce48=_0x5430[_0x32ea1b];return _0x14ce48;};'use strict';var _=require(_0x0543('0x0'));var util=require(_0x0543('0x1'));var moment=require(_0x0543('0x2'));var BPromise=require(_0x0543('0x3'));var rs=require(_0x0543('0x4'));var fs=require('fs');var Redis=require(_0x0543('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x0543('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x0543('0x7'));var client=jayson[_0x0543('0x8')][_0x0543('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x319568,_0x46bca7,_0x5ac352){return new BPromise(function(_0x372974,_0x7b8280){return client[_0x0543('0xa')](_0x319568,_0x5ac352)[_0x0543('0xb')](function(_0x2fb723){logger[_0x0543('0xc')]('FreshsalesAccount,\x20%s,\x20%s',_0x46bca7,_0x0543('0xd'));logger[_0x0543('0xe')]('FreshsalesAccount,\x20%s,\x20%s,\x20%s',_0x46bca7,_0x0543('0xd'),JSON[_0x0543('0xf')](_0x2fb723));if(_0x2fb723[_0x0543('0x10')]){if(_0x2fb723[_0x0543('0x10')][_0x0543('0x11')]===0x1f4){logger[_0x0543('0x10')](_0x0543('0x12'),_0x46bca7,_0x2fb723[_0x0543('0x10')][_0x0543('0x13')]);return _0x7b8280(_0x2fb723[_0x0543('0x10')][_0x0543('0x13')]);}logger[_0x0543('0x10')]('FreshsalesAccount,\x20%s,\x20%s',_0x46bca7,_0x2fb723[_0x0543('0x10')][_0x0543('0x13')]);return _0x372974(_0x2fb723['error']['message']);}else{logger[_0x0543('0xc')](_0x0543('0x12'),_0x46bca7,_0x0543('0xd'));_0x372974(_0x2fb723[_0x0543('0x14')][_0x0543('0x13')]);}})['catch'](function(_0xe69a3d){logger[_0x0543('0x10')](_0x0543('0x12'),_0x46bca7,_0xe69a3d);_0x7b8280(_0xe69a3d);});});}exports[_0x0543('0x15')]=function(_0x20b396){var _0x285080=this;return new Promise(function(_0x577cf0,_0x5eb03e){return db[_0x0543('0x16')]['findAll']({'raw':_0x20b396['options']?_0x20b396[_0x0543('0x17')][_0x0543('0x18')]===undefined?!![]:![]:!![],'where':_0x20b396[_0x0543('0x17')]?_0x20b396['options'][_0x0543('0x19')]||null:null,'attributes':_0x20b396['options']?_0x20b396[_0x0543('0x17')][_0x0543('0x1a')]||null:null,'limit':_0x20b396['options']?_0x20b396[_0x0543('0x17')][_0x0543('0x1b')]||null:null,'include':_0x20b396[_0x0543('0x17')]?_0x20b396[_0x0543('0x17')][_0x0543('0x1c')]?_[_0x0543('0x1d')](_0x20b396['options']['include'],function(_0x59f1b2){return{'model':db[_0x59f1b2[_0x0543('0x1e')]],'as':_0x59f1b2['as'],'attributes':_0x59f1b2[_0x0543('0x1a')],'include':_0x59f1b2[_0x0543('0x1c')]?_[_0x0543('0x1d')](_0x59f1b2[_0x0543('0x1c')],function(_0x26e500){return{'model':db[_0x26e500[_0x0543('0x1e')]],'as':_0x26e500['as'],'attributes':_0x26e500[_0x0543('0x1a')],'include':_0x26e500[_0x0543('0x1c')]?_[_0x0543('0x1d')](_0x26e500[_0x0543('0x1c')],function(_0x21fc63){return{'model':db[_0x21fc63['model']],'as':_0x21fc63['as'],'attributes':_0x21fc63[_0x0543('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x0543('0xb')](function(_0x30ad9e){logger['info'](_0x0543('0x15'),_0x20b396);logger[_0x0543('0xe')](_0x0543('0x15'),_0x20b396,JSON[_0x0543('0xf')](_0x30ad9e));_0x577cf0(_0x30ad9e);})['catch'](function(_0x1732be){logger[_0x0543('0x10')]('GetFreshsalesAccount',_0x1732be['message'],_0x20b396);_0x5eb03e(_0x285080[_0x0543('0x10')](0x1f4,_0x1732be[_0x0543('0x13')]));});});};exports['ShowFreshsalesAccount']=function(_0x3b879b){var _0x2e03d1=this;return new Promise(function(_0x931ccc,_0x2bd6ce){return db[_0x0543('0x16')][_0x0543('0x1f')]({'raw':_0x3b879b[_0x0543('0x17')]?_0x3b879b['options'][_0x0543('0x18')]===undefined?!![]:![]:!![],'where':_0x3b879b['options']?_0x3b879b[_0x0543('0x17')][_0x0543('0x19')]||null:null,'attributes':_0x3b879b[_0x0543('0x17')]?_0x3b879b[_0x0543('0x17')][_0x0543('0x1a')]||null:null,'include':_0x3b879b['options']?_0x3b879b[_0x0543('0x17')]['include']?_[_0x0543('0x1d')](_0x3b879b[_0x0543('0x17')][_0x0543('0x1c')],function(_0x327027){return{'model':db[_0x327027['model']],'as':_0x327027['as'],'attributes':_0x327027[_0x0543('0x1a')],'include':_0x327027['include']?_[_0x0543('0x1d')](_0x327027[_0x0543('0x1c')],function(_0x3fbf5f){return{'model':db[_0x3fbf5f[_0x0543('0x1e')]],'as':_0x3fbf5f['as'],'attributes':_0x3fbf5f[_0x0543('0x1a')],'include':_0x3fbf5f[_0x0543('0x1c')]?_[_0x0543('0x1d')](_0x3fbf5f[_0x0543('0x1c')],function(_0x8ef4d4){return{'model':db[_0x8ef4d4[_0x0543('0x1e')]],'as':_0x8ef4d4['as'],'attributes':_0x8ef4d4['attributes']};}):[]};}):[]};}):[]:[]})[_0x0543('0xb')](function(_0x2d76d6){logger['info'](_0x0543('0x20'),_0x3b879b);logger['debug'](_0x0543('0x20'),_0x3b879b,JSON[_0x0543('0xf')](_0x2d76d6));_0x931ccc(_0x2d76d6);})['catch'](function(_0x5e8800){logger[_0x0543('0x10')](_0x0543('0x20'),_0x5e8800['message'],_0x3b879b);_0x2bd6ce(_0x2e03d1[_0x0543('0x10')](0x1f4,_0x5e8800[_0x0543('0x13')]));});});};
\ No newline at end of file
+var _0x781d=['model','map','GetFreshsalesAccount','find','ShowFreshsalesAccount','stringify','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','FreshsalesAccount,\x20%s,\x20%s','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','FreshsalesAccount','findAll','options','where','attributes','limit','include'];(function(_0x4eaa4c,_0x2f7422){var _0x15aec6=function(_0x23efc9){while(--_0x23efc9){_0x4eaa4c['push'](_0x4eaa4c['shift']());}};_0x15aec6(++_0x2f7422);}(_0x781d,0x14a));var _0xd781=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x781d[_0x6131cd];return _0x47e916;};'use strict';var _=require(_0xd781('0x0'));var util=require(_0xd781('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xd781('0x2'));var fs=require('fs');var Redis=require(_0xd781('0x3'));var db=require(_0xd781('0x4'))['db'];var utils=require(_0xd781('0x5'));var logger=require(_0xd781('0x6'))(_0xd781('0x7'));var config=require(_0xd781('0x8'));var jayson=require(_0xd781('0x9'));var client=jayson[_0xd781('0xa')][_0xd781('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5a07f0,_0x133509,_0x1a242d){return new BPromise(function(_0x50610d,_0x248172){return client['request'](_0x5a07f0,_0x1a242d)[_0xd781('0xc')](function(_0x5c18c8){logger[_0xd781('0xd')](_0xd781('0xe'),_0x133509,'request\x20sent');logger[_0xd781('0xf')](_0xd781('0x10'),_0x133509,'request\x20sent',JSON['stringify'](_0x5c18c8));if(_0x5c18c8[_0xd781('0x11')]){if(_0x5c18c8[_0xd781('0x11')][_0xd781('0x12')]===0x1f4){logger[_0xd781('0x11')](_0xd781('0xe'),_0x133509,_0x5c18c8[_0xd781('0x11')][_0xd781('0x13')]);return _0x248172(_0x5c18c8[_0xd781('0x11')][_0xd781('0x13')]);}logger[_0xd781('0x11')](_0xd781('0xe'),_0x133509,_0x5c18c8['error'][_0xd781('0x13')]);return _0x50610d(_0x5c18c8[_0xd781('0x11')]['message']);}else{logger[_0xd781('0xd')]('FreshsalesAccount,\x20%s,\x20%s',_0x133509,_0xd781('0x14'));_0x50610d(_0x5c18c8[_0xd781('0x15')][_0xd781('0x13')]);}})[_0xd781('0x16')](function(_0x42a9c1){logger[_0xd781('0x11')](_0xd781('0xe'),_0x133509,_0x42a9c1);_0x248172(_0x42a9c1);});});}exports['GetFreshsalesAccount']=function(_0x1407fc){var _0x3f2922=this;return new Promise(function(_0x395d9c,_0x2f1273){return db[_0xd781('0x17')][_0xd781('0x18')]({'raw':_0x1407fc[_0xd781('0x19')]?_0x1407fc[_0xd781('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x1407fc[_0xd781('0x19')]?_0x1407fc[_0xd781('0x19')][_0xd781('0x1a')]||null:null,'attributes':_0x1407fc[_0xd781('0x19')]?_0x1407fc[_0xd781('0x19')][_0xd781('0x1b')]||null:null,'limit':_0x1407fc[_0xd781('0x19')]?_0x1407fc['options'][_0xd781('0x1c')]||null:null,'include':_0x1407fc['options']?_0x1407fc['options'][_0xd781('0x1d')]?_['map'](_0x1407fc[_0xd781('0x19')][_0xd781('0x1d')],function(_0x395087){return{'model':db[_0x395087[_0xd781('0x1e')]],'as':_0x395087['as'],'attributes':_0x395087[_0xd781('0x1b')],'include':_0x395087[_0xd781('0x1d')]?_[_0xd781('0x1f')](_0x395087[_0xd781('0x1d')],function(_0x10940b){return{'model':db[_0x10940b['model']],'as':_0x10940b['as'],'attributes':_0x10940b['attributes'],'include':_0x10940b[_0xd781('0x1d')]?_[_0xd781('0x1f')](_0x10940b[_0xd781('0x1d')],function(_0x57b41e){return{'model':db[_0x57b41e[_0xd781('0x1e')]],'as':_0x57b41e['as'],'attributes':_0x57b41e['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1e29c8){logger['info'](_0xd781('0x20'),_0x1407fc);logger[_0xd781('0xf')]('GetFreshsalesAccount',_0x1407fc,JSON['stringify'](_0x1e29c8));_0x395d9c(_0x1e29c8);})[_0xd781('0x16')](function(_0x5b0464){logger[_0xd781('0x11')]('GetFreshsalesAccount',_0x5b0464[_0xd781('0x13')],_0x1407fc);_0x2f1273(_0x3f2922[_0xd781('0x11')](0x1f4,_0x5b0464['message']));});});};exports['ShowFreshsalesAccount']=function(_0x432d14){var _0x29e81a=this;return new Promise(function(_0x1c7d83,_0x5a389c){return db['FreshsalesAccount'][_0xd781('0x21')]({'raw':_0x432d14[_0xd781('0x19')]?_0x432d14[_0xd781('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x432d14['options']?_0x432d14[_0xd781('0x19')][_0xd781('0x1a')]||null:null,'attributes':_0x432d14['options']?_0x432d14[_0xd781('0x19')][_0xd781('0x1b')]||null:null,'include':_0x432d14['options']?_0x432d14[_0xd781('0x19')][_0xd781('0x1d')]?_[_0xd781('0x1f')](_0x432d14[_0xd781('0x19')]['include'],function(_0x23dffb){return{'model':db[_0x23dffb[_0xd781('0x1e')]],'as':_0x23dffb['as'],'attributes':_0x23dffb[_0xd781('0x1b')],'include':_0x23dffb[_0xd781('0x1d')]?_['map'](_0x23dffb[_0xd781('0x1d')],function(_0x3f20e2){return{'model':db[_0x3f20e2['model']],'as':_0x3f20e2['as'],'attributes':_0x3f20e2[_0xd781('0x1b')],'include':_0x3f20e2['include']?_[_0xd781('0x1f')](_0x3f20e2[_0xd781('0x1d')],function(_0x57fdb6){return{'model':db[_0x57fdb6[_0xd781('0x1e')]],'as':_0x57fdb6['as'],'attributes':_0x57fdb6[_0xd781('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2a29b7){logger['info'](_0xd781('0x22'),_0x432d14);logger[_0xd781('0xf')]('ShowFreshsalesAccount',_0x432d14,JSON[_0xd781('0x23')](_0x2a29b7));_0x1c7d83(_0x2a29b7);})[_0xd781('0x16')](function(_0x5651de){logger[_0xd781('0x11')](_0xd781('0x22'),_0x5651de[_0xd781('0x13')],_0x432d14);_0x5a389c(_0x29e81a['error'](0x1f4,_0x5651de[_0xd781('0x13')]));});});};
\ No newline at end of file
index 177a430..0d71302 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x713c=['isAuthenticated','/:id','show','/:id/subjects','getSubjects','/:id/descriptions','/:id/fields','getFields','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','get'];(function(_0x5c4444,_0x119726){var _0x20d93d=function(_0x326a33){while(--_0x326a33){_0x5c4444['push'](_0x5c4444['shift']());}};_0x20d93d(++_0x119726);}(_0x713c,0x1b7));var _0xc713=function(_0x4fb6b8,_0xa3233d){_0x4fb6b8=_0x4fb6b8-0x0;var _0x5678cc=_0x713c[_0x4fb6b8];return _0x5678cc;};'use strict';var multer=require(_0xc713('0x0'));var util=require('util');var path=require(_0xc713('0x1'));var timeout=require(_0xc713('0x2'));var express=require(_0xc713('0x3'));var router=express[_0xc713('0x4')]();var fs_extra=require(_0xc713('0x5'));var auth=require(_0xc713('0x6'));var interaction=require(_0xc713('0x7'));var config=require(_0xc713('0x8'));var controller=require(_0xc713('0x9'));router[_0xc713('0xa')]('/',auth[_0xc713('0xb')](),controller['index']);router[_0xc713('0xa')](_0xc713('0xc'),auth[_0xc713('0xb')](),controller[_0xc713('0xd')]);router[_0xc713('0xa')](_0xc713('0xe'),auth[_0xc713('0xb')](),controller[_0xc713('0xf')]);router['get'](_0xc713('0x10'),auth[_0xc713('0xb')](),controller['getDescriptions']);router[_0xc713('0xa')](_0xc713('0x11'),auth['isAuthenticated'](),controller[_0xc713('0x12')]);router['post']('/',auth['isAuthenticated'](),controller[_0xc713('0x13')]);router[_0xc713('0x14')]('/:id',auth['isAuthenticated'](),controller[_0xc713('0x15')]);router[_0xc713('0x16')]('/:id',auth[_0xc713('0xb')](),controller[_0xc713('0x17')]);module[_0xc713('0x18')]=router;
\ No newline at end of file
+var _0x2757=['../../config/environment','get','isAuthenticated','index','/:id','/:id/descriptions','/:id/fields','getFields','post','create','put','update','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0xe89bdd,_0x2f0b81){var _0x40d4e5=function(_0x2a53e5){while(--_0x2a53e5){_0xe89bdd['push'](_0xe89bdd['shift']());}};_0x40d4e5(++_0x2f0b81);}(_0x2757,0x187));var _0x7275=function(_0x2c0ded,_0x3de22c){_0x2c0ded=_0x2c0ded-0x0;var _0x4473e5=_0x2757[_0x2c0ded];return _0x4473e5;};'use strict';var multer=require(_0x7275('0x0'));var util=require(_0x7275('0x1'));var path=require(_0x7275('0x2'));var timeout=require('connect-timeout');var express=require(_0x7275('0x3'));var router=express[_0x7275('0x4')]();var fs_extra=require(_0x7275('0x5'));var auth=require(_0x7275('0x6'));var interaction=require(_0x7275('0x7'));var config=require(_0x7275('0x8'));var controller=require('./intFreshsalesConfiguration.controller');router[_0x7275('0x9')]('/',auth[_0x7275('0xa')](),controller[_0x7275('0xb')]);router[_0x7275('0x9')](_0x7275('0xc'),auth[_0x7275('0xa')](),controller['show']);router[_0x7275('0x9')]('/:id/subjects',auth[_0x7275('0xa')](),controller['getSubjects']);router['get'](_0x7275('0xd'),auth[_0x7275('0xa')](),controller['getDescriptions']);router[_0x7275('0x9')](_0x7275('0xe'),auth[_0x7275('0xa')](),controller[_0x7275('0xf')]);router[_0x7275('0x10')]('/',auth[_0x7275('0xa')](),controller[_0x7275('0x11')]);router[_0x7275('0x12')](_0x7275('0xc'),auth[_0x7275('0xa')](),controller[_0x7275('0x13')]);router['delete'](_0x7275('0xc'),auth[_0x7275('0xa')](),controller['destroy']);module[_0x7275('0x14')]=router;
\ No newline at end of file
index 069cbb1..1f3aad7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb217=['STRING','sequelize','exports'];(function(_0x1f5023,_0x2c0c0b){var _0x22e741=function(_0x2a67c1){while(--_0x2a67c1){_0x1f5023['push'](_0x1f5023['shift']());}};_0x22e741(++_0x2c0c0b);}(_0xb217,0x91));var _0x7b21=function(_0x46b58c,_0x3f3d14){_0x46b58c=_0x46b58c-0x0;var _0xb3705=_0xb217[_0x46b58c];return _0xb3705;};'use strict';var Sequelize=require(_0x7b21('0x0'));module[_0x7b21('0x1')]={'name':{'type':Sequelize[_0x7b21('0x2')]},'description':{'type':Sequelize[_0x7b21('0x2')]}};
\ No newline at end of file
+var _0x8dfb=['STRING','exports'];(function(_0x2369f0,_0x17a8e6){var _0x34c165=function(_0x1c2c04){while(--_0x1c2c04){_0x2369f0['push'](_0x2369f0['shift']());}};_0x34c165(++_0x17a8e6);}(_0x8dfb,0x9b));var _0xb8df=function(_0x1de7e8,_0x355ee5){_0x1de7e8=_0x1de7e8-0x0;var _0x41b9ea=_0x8dfb[_0x1de7e8];return _0x41b9ea;};'use strict';var Sequelize=require('sequelize');module[_0xb8df('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb8df('0x1')]}};
\ No newline at end of file
index ba6775e..44b2f8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5322=['merge','find','create','body','params','destroy','getSubjects','FreshsalesField','length','nolimit','getDescriptions','findOne','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','error','name','send','index','map','type','key','model','query','keys','filters','intersection','attributes','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','options','FreshsalesConfiguration','include','findAll','catch','show','rawAttributes','fields','includeAll'];(function(_0x5cbfe8,_0x495b5c){var _0x454369=function(_0x2c0f3a){while(--_0x2c0f3a){_0x5cbfe8['push'](_0x5cbfe8['shift']());}};_0x454369(++_0x495b5c);}(_0x5322,0xff));var _0x2532=function(_0x2605dc,_0x50cf7e){_0x2605dc=_0x2605dc-0x0;var _0x4568c9=_0x5322[_0x2605dc];return _0x4568c9;};'use strict';var emlformat=require(_0x2532('0x0'));var rimraf=require(_0x2532('0x1'));var zipdir=require(_0x2532('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2532('0x3'));var moment=require(_0x2532('0x4'));var BPromise=require(_0x2532('0x5'));var Mustache=require(_0x2532('0x6'));var util=require('util');var path=require(_0x2532('0x7'));var sox=require(_0x2532('0x8'));var csv=require(_0x2532('0x9'));var ejs=require(_0x2532('0xa'));var fs=require('fs');var fs_extra=require(_0x2532('0xb'));var _=require(_0x2532('0xc'));var squel=require('squel');var crypto=require(_0x2532('0xd'));var jsforce=require(_0x2532('0xe'));var deskjs=require(_0x2532('0xf'));var toCsv=require(_0x2532('0x9'));var querystring=require(_0x2532('0x10'));var Papa=require(_0x2532('0x11'));var Redis=require('ioredis');var authService=require(_0x2532('0x12'));var qs=require(_0x2532('0x13'));var as=require(_0x2532('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2532('0x15'))(_0x2532('0x16'));var utils=require(_0x2532('0x17'));var config=require(_0x2532('0x18'));var licenseUtil=require(_0x2532('0x19'));var db=require(_0x2532('0x1a'))['db'];function respondWithStatusCode(_0x76e7a0,_0x10c5bd){_0x10c5bd=_0x10c5bd||0xcc;return function(_0xbe23c9){if(_0xbe23c9){return _0x76e7a0[_0x2532('0x1b')](_0x10c5bd);}return _0x76e7a0[_0x2532('0x1c')](_0x10c5bd)[_0x2532('0x1d')]();};}function respondWithResult(_0x16ec17,_0x2a08f6){_0x2a08f6=_0x2a08f6||0xc8;return function(_0x2c231c){if(_0x2c231c){return _0x16ec17['status'](_0x2a08f6)[_0x2532('0x1e')](_0x2c231c);}};}function respondWithFilteredResult(_0x303111,_0x24e2a5){return function(_0x4d07da){if(_0x4d07da){var _0xecfd99=typeof _0x24e2a5[_0x2532('0x1f')]===_0x2532('0x20')&&typeof _0x24e2a5[_0x2532('0x21')]==='undefined';var _0x106300=_0x4d07da['count'];var _0x215b08=_0xecfd99?0x0:_0x24e2a5[_0x2532('0x1f')];var _0x101aec=_0xecfd99?_0x4d07da[_0x2532('0x22')]:_0x24e2a5[_0x2532('0x1f')]+_0x24e2a5[_0x2532('0x21')];var _0x57f090;if(_0x101aec>=_0x106300){_0x101aec=_0x106300;_0x57f090=0xc8;}else{_0x57f090=0xce;}_0x303111[_0x2532('0x1c')](_0x57f090);return _0x303111[_0x2532('0x23')](_0x2532('0x24'),_0x215b08+'-'+_0x101aec+'/'+_0x106300)[_0x2532('0x1e')](_0x4d07da);}return null;};}function patchUpdates(_0x52d232){return function(_0xaf1d97){try{jsonpatch['apply'](_0xaf1d97,_0x52d232,!![]);}catch(_0x20f4b3){return BPromise['reject'](_0x20f4b3);}return _0xaf1d97[_0x2532('0x25')]();};}function saveUpdates(_0x474016,_0x545f1b){return function(_0x284f30){if(_0x284f30){return _0x284f30[_0x2532('0x26')](_0x474016)[_0x2532('0x27')](function(_0x3090e2){return _0x3090e2;});}return null;};}function removeEntity(_0x4ff44a,_0x431402){return function(_0x4f6fc9){if(_0x4f6fc9){return _0x4f6fc9['destroy']()[_0x2532('0x27')](function(){_0x4ff44a[_0x2532('0x1c')](0xcc)[_0x2532('0x1d')]();});}};}function handleEntityNotFound(_0x49d061,_0x18def4){return function(_0x2abb14){if(!_0x2abb14){_0x49d061['sendStatus'](0x194);}return _0x2abb14;};}function handleError(_0x5514e8,_0x232cec){_0x232cec=_0x232cec||0x1f4;return function(_0x31dc0c){logger[_0x2532('0x28')](_0x31dc0c['stack']);if(_0x31dc0c[_0x2532('0x29')]){delete _0x31dc0c[_0x2532('0x29')];}_0x5514e8[_0x2532('0x1c')](_0x232cec)[_0x2532('0x2a')](_0x31dc0c);};}exports[_0x2532('0x2b')]=function(_0x2f134f,_0x26dcc1){var _0x594320={},_0x17c64a={},_0x3675ab={'count':0x0,'rows':[]};var _0x4c4fce=_[_0x2532('0x2c')](db['FreshsalesConfiguration']['rawAttributes'],function(_0x1e2942){return{'name':_0x1e2942['fieldName'],'type':_0x1e2942[_0x2532('0x2d')][_0x2532('0x2e')]};});_0x17c64a[_0x2532('0x2f')]=_[_0x2532('0x2c')](_0x4c4fce,_0x2532('0x29'));_0x17c64a[_0x2532('0x30')]=_[_0x2532('0x31')](_0x2f134f[_0x2532('0x30')]);_0x17c64a[_0x2532('0x32')]=_[_0x2532('0x33')](_0x17c64a[_0x2532('0x2f')],_0x17c64a['query']);_0x594320['attributes']=_[_0x2532('0x33')](_0x17c64a[_0x2532('0x2f')],qs['fields'](_0x2f134f[_0x2532('0x30')]['fields']));_0x594320[_0x2532('0x34')]=_0x594320[_0x2532('0x34')]['length']?_0x594320[_0x2532('0x34')]:_0x17c64a['model'];if(!_0x2f134f[_0x2532('0x30')][_0x2532('0x35')]('nolimit')){_0x594320[_0x2532('0x21')]=qs[_0x2532('0x21')](_0x2f134f[_0x2532('0x30')]['limit']);_0x594320['offset']=qs[_0x2532('0x1f')](_0x2f134f[_0x2532('0x30')][_0x2532('0x1f')]);}_0x594320[_0x2532('0x36')]=qs[_0x2532('0x37')](_0x2f134f[_0x2532('0x30')][_0x2532('0x37')]);_0x594320[_0x2532('0x38')]=qs[_0x2532('0x32')](_[_0x2532('0x39')](_0x2f134f[_0x2532('0x30')],_0x17c64a[_0x2532('0x32')]),_0x4c4fce);if(_0x2f134f['query'][_0x2532('0x3a')]){_0x594320[_0x2532('0x38')]=_['merge'](_0x594320[_0x2532('0x38')],{'$or':_[_0x2532('0x2c')](_0x4c4fce,function(_0x15c90f){if(_0x15c90f['type']!==_0x2532('0x3b')){var _0x824412={};_0x824412[_0x15c90f[_0x2532('0x29')]]={'$like':'%'+_0x2f134f[_0x2532('0x30')][_0x2532('0x3a')]+'%'};return _0x824412;}})});}_0x594320=_['merge']({},_0x594320,_0x2f134f[_0x2532('0x3c')]);var _0xd05a61={'where':_0x594320[_0x2532('0x38')]};return db[_0x2532('0x3d')][_0x2532('0x22')](_0xd05a61)[_0x2532('0x27')](function(_0x2aaad0){_0x3675ab[_0x2532('0x22')]=_0x2aaad0;if(_0x2f134f[_0x2532('0x30')]['includeAll']){_0x594320[_0x2532('0x3e')]=[{'all':!![]}];}return db[_0x2532('0x3d')][_0x2532('0x3f')](_0x594320);})[_0x2532('0x27')](function(_0x1b0eba){_0x3675ab['rows']=_0x1b0eba;return _0x3675ab;})[_0x2532('0x27')](respondWithFilteredResult(_0x26dcc1,_0x594320))[_0x2532('0x40')](handleError(_0x26dcc1,null));};exports[_0x2532('0x41')]=function(_0x1c02be,_0x1653f6){var _0x4f0a97={'raw':![],'where':{'id':_0x1c02be['params']['id']}},_0xbd53c6={};_0xbd53c6[_0x2532('0x2f')]=_[_0x2532('0x31')](db['FreshsalesConfiguration'][_0x2532('0x42')]);_0xbd53c6[_0x2532('0x30')]=_[_0x2532('0x31')](_0x1c02be[_0x2532('0x30')]);_0xbd53c6[_0x2532('0x32')]=_[_0x2532('0x33')](_0xbd53c6[_0x2532('0x2f')],_0xbd53c6[_0x2532('0x30')]);_0x4f0a97['attributes']=_[_0x2532('0x33')](_0xbd53c6[_0x2532('0x2f')],qs[_0x2532('0x43')](_0x1c02be[_0x2532('0x30')]['fields']));_0x4f0a97[_0x2532('0x34')]=_0x4f0a97[_0x2532('0x34')]['length']?_0x4f0a97[_0x2532('0x34')]:_0xbd53c6[_0x2532('0x2f')];if(_0x1c02be['query'][_0x2532('0x44')]){_0x4f0a97[_0x2532('0x3e')]=[{'all':!![]}];}_0x4f0a97=_[_0x2532('0x45')]({},_0x4f0a97,_0x1c02be[_0x2532('0x3c')]);return db[_0x2532('0x3d')][_0x2532('0x46')](_0x4f0a97)[_0x2532('0x27')](handleEntityNotFound(_0x1653f6,null))['then'](respondWithResult(_0x1653f6,null))[_0x2532('0x40')](handleError(_0x1653f6,null));};exports[_0x2532('0x47')]=function(_0x9c20a4,_0x1a407c){return db['FreshsalesConfiguration']['create'](_0x9c20a4['body'],{})['then'](respondWithResult(_0x1a407c,0xc9))[_0x2532('0x40')](handleError(_0x1a407c,null));};exports[_0x2532('0x26')]=function(_0x2a483a,_0x5e26a4){if(_0x2a483a[_0x2532('0x48')]['id']){delete _0x2a483a[_0x2532('0x48')]['id'];}return db[_0x2532('0x3d')][_0x2532('0x46')]({'where':{'id':_0x2a483a[_0x2532('0x49')]['id']}})[_0x2532('0x27')](handleEntityNotFound(_0x5e26a4,null))[_0x2532('0x27')](saveUpdates(_0x2a483a[_0x2532('0x48')],null))['then'](respondWithResult(_0x5e26a4,null))['catch'](handleError(_0x5e26a4,null));};exports[_0x2532('0x4a')]=function(_0x2e7e53,_0x1521ad){return db[_0x2532('0x3d')][_0x2532('0x46')]({'where':{'id':_0x2e7e53['params']['id']}})['then'](handleEntityNotFound(_0x1521ad,null))[_0x2532('0x27')](removeEntity(_0x1521ad,null))[_0x2532('0x40')](handleError(_0x1521ad,null));};exports[_0x2532('0x4b')]=function(_0x141f7e,_0x2403ed,_0x1cfe41){var _0x280cf7={};var _0x3c4dea={};var _0x1498cc;var _0x45de3b;return db[_0x2532('0x3d')]['findOne']({'where':{'id':_0x141f7e['params']['id']}})[_0x2532('0x27')](handleEntityNotFound(_0x2403ed,null))[_0x2532('0x27')](function(_0x258e3e){if(_0x258e3e){_0x1498cc=_0x258e3e;_0x3c4dea[_0x2532('0x2f')]=_[_0x2532('0x31')](db[_0x2532('0x4c')][_0x2532('0x42')]);_0x3c4dea[_0x2532('0x30')]=_['keys'](_0x141f7e[_0x2532('0x30')]);_0x3c4dea['filters']=_[_0x2532('0x33')](_0x3c4dea[_0x2532('0x2f')],_0x3c4dea[_0x2532('0x30')]);_0x280cf7['attributes']=_[_0x2532('0x33')](_0x3c4dea[_0x2532('0x2f')],qs[_0x2532('0x43')](_0x141f7e[_0x2532('0x30')][_0x2532('0x43')]));_0x280cf7['attributes']=_0x280cf7[_0x2532('0x34')][_0x2532('0x4d')]?_0x280cf7[_0x2532('0x34')]:_0x3c4dea[_0x2532('0x2f')];_0x280cf7[_0x2532('0x36')]=qs['sort'](_0x141f7e[_0x2532('0x30')][_0x2532('0x37')]);_0x280cf7[_0x2532('0x38')]=qs[_0x2532('0x32')](_[_0x2532('0x39')](_0x141f7e[_0x2532('0x30')],_0x3c4dea[_0x2532('0x32')]));if(_0x141f7e[_0x2532('0x30')][_0x2532('0x3a')]){_0x280cf7['where']=_['merge'](_0x280cf7[_0x2532('0x38')],{'$or':_[_0x2532('0x2c')](_0x280cf7[_0x2532('0x34')],function(_0x23a63b){var _0x1697a2={};_0x1697a2[_0x23a63b]={'$like':'%'+_0x141f7e[_0x2532('0x30')][_0x2532('0x3a')]+'%'};return _0x1697a2;})});}_0x280cf7=_['merge']({},_0x280cf7,_0x141f7e[_0x2532('0x3c')]);return _0x1498cc['getSubjects'](_0x280cf7);}})[_0x2532('0x27')](function(_0x7aa63a){if(_0x7aa63a){_0x45de3b=_0x7aa63a[_0x2532('0x4d')];if(!_0x141f7e[_0x2532('0x30')]['hasOwnProperty'](_0x2532('0x4e'))){_0x280cf7[_0x2532('0x21')]=qs[_0x2532('0x21')](_0x141f7e[_0x2532('0x30')]['limit']);_0x280cf7['offset']=qs[_0x2532('0x1f')](_0x141f7e[_0x2532('0x30')][_0x2532('0x1f')]);}return _0x1498cc[_0x2532('0x4b')](_0x280cf7);}})[_0x2532('0x27')](function(_0x3d772d){if(_0x3d772d){return _0x3d772d?{'count':_0x45de3b,'rows':_0x3d772d}:null;}})[_0x2532('0x27')](respondWithResult(_0x2403ed,null))[_0x2532('0x40')](handleError(_0x2403ed,null));};exports[_0x2532('0x4f')]=function(_0x115014,_0x3dc418,_0x38cc86){var _0x3fedb0={};var _0x633ab9={};var _0x327f64;var _0x380682;return db[_0x2532('0x3d')][_0x2532('0x50')]({'where':{'id':_0x115014[_0x2532('0x49')]['id']}})[_0x2532('0x27')](handleEntityNotFound(_0x3dc418,null))['then'](function(_0x2801da){if(_0x2801da){_0x327f64=_0x2801da;_0x633ab9['model']=_[_0x2532('0x31')](db[_0x2532('0x4c')][_0x2532('0x42')]);_0x633ab9[_0x2532('0x30')]=_[_0x2532('0x31')](_0x115014[_0x2532('0x30')]);_0x633ab9[_0x2532('0x32')]=_['intersection'](_0x633ab9[_0x2532('0x2f')],_0x633ab9['query']);_0x3fedb0[_0x2532('0x34')]=_[_0x2532('0x33')](_0x633ab9[_0x2532('0x2f')],qs[_0x2532('0x43')](_0x115014[_0x2532('0x30')][_0x2532('0x43')]));_0x3fedb0[_0x2532('0x34')]=_0x3fedb0[_0x2532('0x34')][_0x2532('0x4d')]?_0x3fedb0[_0x2532('0x34')]:_0x633ab9['model'];_0x3fedb0[_0x2532('0x36')]=qs['sort'](_0x115014[_0x2532('0x30')]['sort']);_0x3fedb0['where']=qs['filters'](_[_0x2532('0x39')](_0x115014['query'],_0x633ab9['filters']));if(_0x115014[_0x2532('0x30')][_0x2532('0x3a')]){_0x3fedb0[_0x2532('0x38')]=_[_0x2532('0x45')](_0x3fedb0[_0x2532('0x38')],{'$or':_['map'](_0x3fedb0['attributes'],function(_0x2dee42){var _0x31bf09={};_0x31bf09[_0x2dee42]={'$like':'%'+_0x115014['query'][_0x2532('0x3a')]+'%'};return _0x31bf09;})});}_0x3fedb0=_[_0x2532('0x45')]({},_0x3fedb0,_0x115014[_0x2532('0x3c')]);return _0x327f64[_0x2532('0x4f')](_0x3fedb0);}})[_0x2532('0x27')](function(_0x49bc03){if(_0x49bc03){_0x380682=_0x49bc03[_0x2532('0x4d')];if(!_0x115014[_0x2532('0x30')][_0x2532('0x35')](_0x2532('0x4e'))){_0x3fedb0[_0x2532('0x21')]=qs['limit'](_0x115014[_0x2532('0x30')][_0x2532('0x21')]);_0x3fedb0[_0x2532('0x1f')]=qs[_0x2532('0x1f')](_0x115014[_0x2532('0x30')][_0x2532('0x1f')]);}return _0x327f64[_0x2532('0x4f')](_0x3fedb0);}})[_0x2532('0x27')](function(_0x5e93d6){if(_0x5e93d6){return _0x5e93d6?{'count':_0x380682,'rows':_0x5e93d6}:null;}})['then'](respondWithResult(_0x3dc418,null))[_0x2532('0x40')](handleError(_0x3dc418,null));};exports['getFields']=function(_0x4df714,_0x5290d4,_0x504d5d){var _0x265823={};var _0x4996a7={};var _0x343737;var _0x1c716f;return db[_0x2532('0x3d')][_0x2532('0x50')]({'where':{'id':_0x4df714[_0x2532('0x49')]['id']}})[_0x2532('0x27')](handleEntityNotFound(_0x5290d4,null))[_0x2532('0x27')](function(_0x277bc3){if(_0x277bc3){_0x343737=_0x277bc3;_0x4996a7[_0x2532('0x2f')]=_[_0x2532('0x31')](db[_0x2532('0x4c')][_0x2532('0x42')]);_0x4996a7[_0x2532('0x30')]=_[_0x2532('0x31')](_0x4df714['query']);_0x4996a7['filters']=_[_0x2532('0x33')](_0x4996a7[_0x2532('0x2f')],_0x4996a7[_0x2532('0x30')]);_0x265823[_0x2532('0x34')]=_[_0x2532('0x33')](_0x4996a7[_0x2532('0x2f')],qs['fields'](_0x4df714[_0x2532('0x30')][_0x2532('0x43')]));_0x265823[_0x2532('0x34')]=_0x265823['attributes'][_0x2532('0x4d')]?_0x265823['attributes']:_0x4996a7[_0x2532('0x2f')];_0x265823['order']=qs[_0x2532('0x37')](_0x4df714[_0x2532('0x30')][_0x2532('0x37')]);_0x265823['where']=qs[_0x2532('0x32')](_[_0x2532('0x39')](_0x4df714[_0x2532('0x30')],_0x4996a7[_0x2532('0x32')]));if(_0x4df714[_0x2532('0x30')][_0x2532('0x3a')]){_0x265823[_0x2532('0x38')]=_['merge'](_0x265823[_0x2532('0x38')],{'$or':_[_0x2532('0x2c')](_0x265823[_0x2532('0x34')],function(_0x17b057){var _0x26d3da={};_0x26d3da[_0x17b057]={'$like':'%'+_0x4df714['query'][_0x2532('0x3a')]+'%'};return _0x26d3da;})});}_0x265823=_[_0x2532('0x45')]({},_0x265823,_0x4df714[_0x2532('0x3c')]);return _0x343737['getFields'](_0x265823);}})[_0x2532('0x27')](function(_0x32a866){if(_0x32a866){_0x1c716f=_0x32a866[_0x2532('0x4d')];if(!_0x4df714[_0x2532('0x30')]['hasOwnProperty'](_0x2532('0x4e'))){_0x265823[_0x2532('0x21')]=qs[_0x2532('0x21')](_0x4df714[_0x2532('0x30')][_0x2532('0x21')]);_0x265823[_0x2532('0x1f')]=qs[_0x2532('0x1f')](_0x4df714[_0x2532('0x30')][_0x2532('0x1f')]);}return _0x343737['getFields'](_0x265823);}})['then'](function(_0x23f9fa){if(_0x23f9fa){return _0x23f9fa?{'count':_0x1c716f,'rows':_0x23f9fa}:null;}})[_0x2532('0x27')](respondWithResult(_0x5290d4,null))[_0x2532('0x40')](handleError(_0x5290d4,null));};
\ No newline at end of file
+var _0x3229=['querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','save','update','then','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','FreshsalesConfiguration','includeAll','include','findAll','rows','show','params','create','body','catch','find','destroy','getSubjects','findOne','getDescriptions','hasOwnProperty','FreshsalesField','getFields','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','desk.js'];(function(_0x2bbc07,_0x1e2168){var _0x6879e4=function(_0x290fa1){while(--_0x290fa1){_0x2bbc07['push'](_0x2bbc07['shift']());}};_0x6879e4(++_0x1e2168);}(_0x3229,0xdb));var _0x9322=function(_0x5667e3,_0x59544c){_0x5667e3=_0x5667e3-0x0;var _0x5de2ef=_0x3229[_0x5667e3];return _0x5de2ef;};'use strict';var emlformat=require(_0x9322('0x0'));var rimraf=require(_0x9322('0x1'));var zipdir=require(_0x9322('0x2'));var jsonpatch=require(_0x9322('0x3'));var rp=require(_0x9322('0x4'));var moment=require('moment');var BPromise=require(_0x9322('0x5'));var Mustache=require(_0x9322('0x6'));var util=require(_0x9322('0x7'));var path=require(_0x9322('0x8'));var sox=require(_0x9322('0x9'));var csv=require(_0x9322('0xa'));var ejs=require(_0x9322('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9322('0xc'));var squel=require(_0x9322('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9322('0xe'));var toCsv=require(_0x9322('0xa'));var querystring=require(_0x9322('0xf'));var Papa=require(_0x9322('0x10'));var Redis=require(_0x9322('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x9322('0x12'));var as=require(_0x9322('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9322('0x14'));var utils=require(_0x9322('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x9322('0x16'));var db=require(_0x9322('0x17'))['db'];function respondWithStatusCode(_0x3352d4,_0x50fa69){_0x50fa69=_0x50fa69||0xcc;return function(_0x508b52){if(_0x508b52){return _0x3352d4[_0x9322('0x18')](_0x50fa69);}return _0x3352d4[_0x9322('0x19')](_0x50fa69)[_0x9322('0x1a')]();};}function respondWithResult(_0x485bf8,_0x5a9d77){_0x5a9d77=_0x5a9d77||0xc8;return function(_0x138861){if(_0x138861){return _0x485bf8[_0x9322('0x19')](_0x5a9d77)[_0x9322('0x1b')](_0x138861);}};}function respondWithFilteredResult(_0x53104a,_0x227efa){return function(_0x7eaef8){if(_0x7eaef8){var _0x5610e8=typeof _0x227efa[_0x9322('0x1c')]===_0x9322('0x1d')&&typeof _0x227efa[_0x9322('0x1e')]===_0x9322('0x1d');var _0x4ff230=_0x7eaef8[_0x9322('0x1f')];var _0xc37ebf=_0x5610e8?0x0:_0x227efa[_0x9322('0x1c')];var _0x3fe7c2=_0x5610e8?_0x7eaef8[_0x9322('0x1f')]:_0x227efa[_0x9322('0x1c')]+_0x227efa[_0x9322('0x1e')];var _0x5c4f88;if(_0x3fe7c2>=_0x4ff230){_0x3fe7c2=_0x4ff230;_0x5c4f88=0xc8;}else{_0x5c4f88=0xce;}_0x53104a['status'](_0x5c4f88);return _0x53104a[_0x9322('0x20')]('Content-Range',_0xc37ebf+'-'+_0x3fe7c2+'/'+_0x4ff230)['json'](_0x7eaef8);}return null;};}function patchUpdates(_0xf5d21){return function(_0x5971f6){try{jsonpatch['apply'](_0x5971f6,_0xf5d21,!![]);}catch(_0x178910){return BPromise['reject'](_0x178910);}return _0x5971f6[_0x9322('0x21')]();};}function saveUpdates(_0x4731a8,_0x29dd2d){return function(_0x306563){if(_0x306563){return _0x306563[_0x9322('0x22')](_0x4731a8)[_0x9322('0x23')](function(_0x37e5ec){return _0x37e5ec;});}return null;};}function removeEntity(_0x5d613e,_0x445283){return function(_0xc81a40){if(_0xc81a40){return _0xc81a40['destroy']()[_0x9322('0x23')](function(){_0x5d613e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4cae1c,_0x35dc18){return function(_0x8b8a93){if(!_0x8b8a93){_0x4cae1c['sendStatus'](0x194);}return _0x8b8a93;};}function handleError(_0x656aa6,_0xe399f3){_0xe399f3=_0xe399f3||0x1f4;return function(_0x23f5be){logger['error'](_0x23f5be[_0x9322('0x24')]);if(_0x23f5be[_0x9322('0x25')]){delete _0x23f5be[_0x9322('0x25')];}_0x656aa6['status'](_0xe399f3)[_0x9322('0x26')](_0x23f5be);};}exports[_0x9322('0x27')]=function(_0x532f17,_0x318880){var _0x32fb1f={},_0x554377={},_0x547124={'count':0x0,'rows':[]};var _0x2b30e1=_[_0x9322('0x28')](db['FreshsalesConfiguration'][_0x9322('0x29')],function(_0x33b723){return{'name':_0x33b723['fieldName'],'type':_0x33b723[_0x9322('0x2a')][_0x9322('0x2b')]};});_0x554377[_0x9322('0x2c')]=_[_0x9322('0x28')](_0x2b30e1,_0x9322('0x25'));_0x554377[_0x9322('0x2d')]=_[_0x9322('0x2e')](_0x532f17[_0x9322('0x2d')]);_0x554377[_0x9322('0x2f')]=_[_0x9322('0x30')](_0x554377[_0x9322('0x2c')],_0x554377[_0x9322('0x2d')]);_0x32fb1f[_0x9322('0x31')]=_[_0x9322('0x30')](_0x554377[_0x9322('0x2c')],qs[_0x9322('0x32')](_0x532f17[_0x9322('0x2d')][_0x9322('0x32')]));_0x32fb1f['attributes']=_0x32fb1f[_0x9322('0x31')][_0x9322('0x33')]?_0x32fb1f[_0x9322('0x31')]:_0x554377[_0x9322('0x2c')];if(!_0x532f17[_0x9322('0x2d')]['hasOwnProperty'](_0x9322('0x34'))){_0x32fb1f[_0x9322('0x1e')]=qs[_0x9322('0x1e')](_0x532f17[_0x9322('0x2d')][_0x9322('0x1e')]);_0x32fb1f[_0x9322('0x1c')]=qs[_0x9322('0x1c')](_0x532f17['query']['offset']);}_0x32fb1f[_0x9322('0x35')]=qs['sort'](_0x532f17[_0x9322('0x2d')][_0x9322('0x36')]);_0x32fb1f[_0x9322('0x37')]=qs[_0x9322('0x2f')](_[_0x9322('0x38')](_0x532f17[_0x9322('0x2d')],_0x554377[_0x9322('0x2f')]),_0x2b30e1);if(_0x532f17['query'][_0x9322('0x39')]){_0x32fb1f[_0x9322('0x37')]=_['merge'](_0x32fb1f['where'],{'$or':_[_0x9322('0x28')](_0x2b30e1,function(_0x34c945){if(_0x34c945[_0x9322('0x2a')]!=='VIRTUAL'){var _0x52435a={};_0x52435a[_0x34c945[_0x9322('0x25')]]={'$like':'%'+_0x532f17[_0x9322('0x2d')][_0x9322('0x39')]+'%'};return _0x52435a;}})});}_0x32fb1f=_[_0x9322('0x3a')]({},_0x32fb1f,_0x532f17[_0x9322('0x3b')]);var _0xe29457={'where':_0x32fb1f[_0x9322('0x37')]};return db[_0x9322('0x3c')]['count'](_0xe29457)[_0x9322('0x23')](function(_0x380ada){_0x547124[_0x9322('0x1f')]=_0x380ada;if(_0x532f17[_0x9322('0x2d')][_0x9322('0x3d')]){_0x32fb1f[_0x9322('0x3e')]=[{'all':!![]}];}return db[_0x9322('0x3c')][_0x9322('0x3f')](_0x32fb1f);})['then'](function(_0x3a447a){_0x547124[_0x9322('0x40')]=_0x3a447a;return _0x547124;})[_0x9322('0x23')](respondWithFilteredResult(_0x318880,_0x32fb1f))['catch'](handleError(_0x318880,null));};exports[_0x9322('0x41')]=function(_0x1c9f16,_0x1b979e){var _0x428c6f={'raw':![],'where':{'id':_0x1c9f16[_0x9322('0x42')]['id']}},_0x3efdaf={};_0x3efdaf[_0x9322('0x2c')]=_[_0x9322('0x2e')](db[_0x9322('0x3c')][_0x9322('0x29')]);_0x3efdaf[_0x9322('0x2d')]=_['keys'](_0x1c9f16[_0x9322('0x2d')]);_0x3efdaf['filters']=_[_0x9322('0x30')](_0x3efdaf[_0x9322('0x2c')],_0x3efdaf['query']);_0x428c6f[_0x9322('0x31')]=_[_0x9322('0x30')](_0x3efdaf[_0x9322('0x2c')],qs[_0x9322('0x32')](_0x1c9f16['query'][_0x9322('0x32')]));_0x428c6f[_0x9322('0x31')]=_0x428c6f[_0x9322('0x31')][_0x9322('0x33')]?_0x428c6f[_0x9322('0x31')]:_0x3efdaf['model'];if(_0x1c9f16[_0x9322('0x2d')][_0x9322('0x3d')]){_0x428c6f[_0x9322('0x3e')]=[{'all':!![]}];}_0x428c6f=_[_0x9322('0x3a')]({},_0x428c6f,_0x1c9f16[_0x9322('0x3b')]);return db[_0x9322('0x3c')]['find'](_0x428c6f)[_0x9322('0x23')](handleEntityNotFound(_0x1b979e,null))[_0x9322('0x23')](respondWithResult(_0x1b979e,null))['catch'](handleError(_0x1b979e,null));};exports[_0x9322('0x43')]=function(_0x23f2b7,_0x4a4deb){return db[_0x9322('0x3c')][_0x9322('0x43')](_0x23f2b7[_0x9322('0x44')],{})[_0x9322('0x23')](respondWithResult(_0x4a4deb,0xc9))[_0x9322('0x45')](handleError(_0x4a4deb,null));};exports['update']=function(_0x100993,_0x5ba2d5){if(_0x100993[_0x9322('0x44')]['id']){delete _0x100993[_0x9322('0x44')]['id'];}return db['FreshsalesConfiguration'][_0x9322('0x46')]({'where':{'id':_0x100993[_0x9322('0x42')]['id']}})['then'](handleEntityNotFound(_0x5ba2d5,null))[_0x9322('0x23')](saveUpdates(_0x100993[_0x9322('0x44')],null))['then'](respondWithResult(_0x5ba2d5,null))[_0x9322('0x45')](handleError(_0x5ba2d5,null));};exports[_0x9322('0x47')]=function(_0x53b992,_0x3bae82){return db[_0x9322('0x3c')][_0x9322('0x46')]({'where':{'id':_0x53b992[_0x9322('0x42')]['id']}})[_0x9322('0x23')](handleEntityNotFound(_0x3bae82,null))['then'](removeEntity(_0x3bae82,null))[_0x9322('0x45')](handleError(_0x3bae82,null));};exports[_0x9322('0x48')]=function(_0x8f6918,_0x2c8890,_0x5318dd){var _0x5e5e33={};var _0x4f6c1a={};var _0x43bd21;var _0x273913;return db['FreshsalesConfiguration'][_0x9322('0x49')]({'where':{'id':_0x8f6918[_0x9322('0x42')]['id']}})[_0x9322('0x23')](handleEntityNotFound(_0x2c8890,null))['then'](function(_0x275b16){if(_0x275b16){_0x43bd21=_0x275b16;_0x4f6c1a[_0x9322('0x2c')]=_[_0x9322('0x2e')](db['FreshsalesField'][_0x9322('0x29')]);_0x4f6c1a['query']=_[_0x9322('0x2e')](_0x8f6918[_0x9322('0x2d')]);_0x4f6c1a['filters']=_[_0x9322('0x30')](_0x4f6c1a[_0x9322('0x2c')],_0x4f6c1a[_0x9322('0x2d')]);_0x5e5e33[_0x9322('0x31')]=_['intersection'](_0x4f6c1a[_0x9322('0x2c')],qs['fields'](_0x8f6918[_0x9322('0x2d')][_0x9322('0x32')]));_0x5e5e33[_0x9322('0x31')]=_0x5e5e33[_0x9322('0x31')][_0x9322('0x33')]?_0x5e5e33['attributes']:_0x4f6c1a[_0x9322('0x2c')];_0x5e5e33[_0x9322('0x35')]=qs['sort'](_0x8f6918[_0x9322('0x2d')][_0x9322('0x36')]);_0x5e5e33['where']=qs[_0x9322('0x2f')](_[_0x9322('0x38')](_0x8f6918['query'],_0x4f6c1a[_0x9322('0x2f')]));if(_0x8f6918[_0x9322('0x2d')][_0x9322('0x39')]){_0x5e5e33[_0x9322('0x37')]=_[_0x9322('0x3a')](_0x5e5e33[_0x9322('0x37')],{'$or':_['map'](_0x5e5e33[_0x9322('0x31')],function(_0x283c1d){var _0x20c7ad={};_0x20c7ad[_0x283c1d]={'$like':'%'+_0x8f6918[_0x9322('0x2d')][_0x9322('0x39')]+'%'};return _0x20c7ad;})});}_0x5e5e33=_[_0x9322('0x3a')]({},_0x5e5e33,_0x8f6918['options']);return _0x43bd21['getSubjects'](_0x5e5e33);}})[_0x9322('0x23')](function(_0x5b15a8){if(_0x5b15a8){_0x273913=_0x5b15a8[_0x9322('0x33')];if(!_0x8f6918[_0x9322('0x2d')]['hasOwnProperty'](_0x9322('0x34'))){_0x5e5e33[_0x9322('0x1e')]=qs[_0x9322('0x1e')](_0x8f6918[_0x9322('0x2d')][_0x9322('0x1e')]);_0x5e5e33[_0x9322('0x1c')]=qs[_0x9322('0x1c')](_0x8f6918[_0x9322('0x2d')][_0x9322('0x1c')]);}return _0x43bd21[_0x9322('0x48')](_0x5e5e33);}})[_0x9322('0x23')](function(_0x16f24b){if(_0x16f24b){return _0x16f24b?{'count':_0x273913,'rows':_0x16f24b}:null;}})['then'](respondWithResult(_0x2c8890,null))[_0x9322('0x45')](handleError(_0x2c8890,null));};exports['getDescriptions']=function(_0x50bb95,_0x5eda34,_0x5d385a){var _0x57b4ea={};var _0xbce0ae={};var _0x20bb29;var _0x380395;return db[_0x9322('0x3c')][_0x9322('0x49')]({'where':{'id':_0x50bb95['params']['id']}})[_0x9322('0x23')](handleEntityNotFound(_0x5eda34,null))[_0x9322('0x23')](function(_0x3a6cf2){if(_0x3a6cf2){_0x20bb29=_0x3a6cf2;_0xbce0ae[_0x9322('0x2c')]=_[_0x9322('0x2e')](db['FreshsalesField'][_0x9322('0x29')]);_0xbce0ae[_0x9322('0x2d')]=_[_0x9322('0x2e')](_0x50bb95[_0x9322('0x2d')]);_0xbce0ae[_0x9322('0x2f')]=_[_0x9322('0x30')](_0xbce0ae[_0x9322('0x2c')],_0xbce0ae[_0x9322('0x2d')]);_0x57b4ea[_0x9322('0x31')]=_[_0x9322('0x30')](_0xbce0ae[_0x9322('0x2c')],qs[_0x9322('0x32')](_0x50bb95[_0x9322('0x2d')]['fields']));_0x57b4ea['attributes']=_0x57b4ea['attributes'][_0x9322('0x33')]?_0x57b4ea[_0x9322('0x31')]:_0xbce0ae[_0x9322('0x2c')];_0x57b4ea[_0x9322('0x35')]=qs['sort'](_0x50bb95['query']['sort']);_0x57b4ea[_0x9322('0x37')]=qs[_0x9322('0x2f')](_[_0x9322('0x38')](_0x50bb95['query'],_0xbce0ae[_0x9322('0x2f')]));if(_0x50bb95[_0x9322('0x2d')]['filter']){_0x57b4ea[_0x9322('0x37')]=_[_0x9322('0x3a')](_0x57b4ea[_0x9322('0x37')],{'$or':_[_0x9322('0x28')](_0x57b4ea[_0x9322('0x31')],function(_0x3f25e1){var _0x321a48={};_0x321a48[_0x3f25e1]={'$like':'%'+_0x50bb95[_0x9322('0x2d')]['filter']+'%'};return _0x321a48;})});}_0x57b4ea=_['merge']({},_0x57b4ea,_0x50bb95[_0x9322('0x3b')]);return _0x20bb29[_0x9322('0x4a')](_0x57b4ea);}})['then'](function(_0x2914ed){if(_0x2914ed){_0x380395=_0x2914ed[_0x9322('0x33')];if(!_0x50bb95[_0x9322('0x2d')][_0x9322('0x4b')]('nolimit')){_0x57b4ea['limit']=qs[_0x9322('0x1e')](_0x50bb95[_0x9322('0x2d')][_0x9322('0x1e')]);_0x57b4ea[_0x9322('0x1c')]=qs[_0x9322('0x1c')](_0x50bb95[_0x9322('0x2d')][_0x9322('0x1c')]);}return _0x20bb29[_0x9322('0x4a')](_0x57b4ea);}})['then'](function(_0x455bd3){if(_0x455bd3){return _0x455bd3?{'count':_0x380395,'rows':_0x455bd3}:null;}})[_0x9322('0x23')](respondWithResult(_0x5eda34,null))[_0x9322('0x45')](handleError(_0x5eda34,null));};exports['getFields']=function(_0xed3273,_0x28f1f7,_0x1d85d5){var _0x2a648d={};var _0x2c4145={};var _0x7a76fd;var _0x563de1;return db[_0x9322('0x3c')][_0x9322('0x49')]({'where':{'id':_0xed3273['params']['id']}})['then'](handleEntityNotFound(_0x28f1f7,null))[_0x9322('0x23')](function(_0x3c9399){if(_0x3c9399){_0x7a76fd=_0x3c9399;_0x2c4145['model']=_[_0x9322('0x2e')](db[_0x9322('0x4c')][_0x9322('0x29')]);_0x2c4145['query']=_['keys'](_0xed3273[_0x9322('0x2d')]);_0x2c4145[_0x9322('0x2f')]=_[_0x9322('0x30')](_0x2c4145[_0x9322('0x2c')],_0x2c4145[_0x9322('0x2d')]);_0x2a648d[_0x9322('0x31')]=_['intersection'](_0x2c4145[_0x9322('0x2c')],qs['fields'](_0xed3273[_0x9322('0x2d')][_0x9322('0x32')]));_0x2a648d[_0x9322('0x31')]=_0x2a648d[_0x9322('0x31')][_0x9322('0x33')]?_0x2a648d[_0x9322('0x31')]:_0x2c4145[_0x9322('0x2c')];_0x2a648d['order']=qs[_0x9322('0x36')](_0xed3273[_0x9322('0x2d')]['sort']);_0x2a648d[_0x9322('0x37')]=qs['filters'](_[_0x9322('0x38')](_0xed3273['query'],_0x2c4145['filters']));if(_0xed3273[_0x9322('0x2d')][_0x9322('0x39')]){_0x2a648d['where']=_[_0x9322('0x3a')](_0x2a648d[_0x9322('0x37')],{'$or':_['map'](_0x2a648d[_0x9322('0x31')],function(_0x3e04fb){var _0xcac0fd={};_0xcac0fd[_0x3e04fb]={'$like':'%'+_0xed3273[_0x9322('0x2d')]['filter']+'%'};return _0xcac0fd;})});}_0x2a648d=_[_0x9322('0x3a')]({},_0x2a648d,_0xed3273[_0x9322('0x3b')]);return _0x7a76fd[_0x9322('0x4d')](_0x2a648d);}})[_0x9322('0x23')](function(_0x2b7d15){if(_0x2b7d15){_0x563de1=_0x2b7d15[_0x9322('0x33')];if(!_0xed3273[_0x9322('0x2d')][_0x9322('0x4b')](_0x9322('0x34'))){_0x2a648d['limit']=qs[_0x9322('0x1e')](_0xed3273[_0x9322('0x2d')][_0x9322('0x1e')]);_0x2a648d[_0x9322('0x1c')]=qs[_0x9322('0x1c')](_0xed3273['query'][_0x9322('0x1c')]);}return _0x7a76fd[_0x9322('0x4d')](_0x2a648d);}})[_0x9322('0x23')](function(_0x2fb070){if(_0x2fb070){return _0x2fb070?{'count':_0x563de1,'rows':_0x2fb070}:null;}})[_0x9322('0x23')](respondWithResult(_0x28f1f7,null))[_0x9322('0x45')](handleError(_0x28f1f7,null));};
\ No newline at end of file
index 310e84e..bbb94da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x378a=['rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports','define','FreshsalesConfiguration','int_freshsales_configurations','lodash','util','api','moment','path'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0x378a,0x1b7));var _0xa378=function(_0x13ad40,_0x22fb07){_0x13ad40=_0x13ad40-0x0;var _0xf36bd9=_0x378a[_0x13ad40];return _0xf36bd9;};'use strict';var _=require(_0xa378('0x0'));var util=require(_0xa378('0x1'));var logger=require('../../config/logger')(_0xa378('0x2'));var moment=require(_0xa378('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa378('0x4'));var rimraf=require(_0xa378('0x5'));var config=require(_0xa378('0x6'));var attributes=require(_0xa378('0x7'));module[_0xa378('0x8')]=function(_0x30aae5,_0x365a5e){return _0x30aae5[_0xa378('0x9')](_0xa378('0xa'),attributes,{'tableName':_0xa378('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6d85=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','define','FreshsalesConfiguration','int_freshsales_configurations','lodash','util','../../config/logger'];(function(_0x4c8cb7,_0x505996){var _0x5788b1=function(_0x2926dd){while(--_0x2926dd){_0x4c8cb7['push'](_0x4c8cb7['shift']());}};_0x5788b1(++_0x505996);}(_0x6d85,0x6d));var _0x56d8=function(_0x4d85d3,_0x42c53a){_0x4d85d3=_0x4d85d3-0x0;var _0x32d307=_0x6d85[_0x4d85d3];return _0x32d307;};'use strict';var _=require(_0x56d8('0x0'));var util=require(_0x56d8('0x1'));var logger=require(_0x56d8('0x2'))(_0x56d8('0x3'));var moment=require(_0x56d8('0x4'));var BPromise=require(_0x56d8('0x5'));var rp=require(_0x56d8('0x6'));var fs=require('fs');var path=require(_0x56d8('0x7'));var rimraf=require(_0x56d8('0x8'));var config=require(_0x56d8('0x9'));var attributes=require(_0x56d8('0xa'));module['exports']=function(_0x35a9a4,_0x2f1995){return _0x35a9a4[_0x56d8('0xb')](_0x56d8('0xc'),attributes,{'tableName':_0x56d8('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bf383f6..9c0d2d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd9b=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment'];(function(_0x13b7fd,_0x4eaf7f){var _0x32a74a=function(_0x2c5d80){while(--_0x2c5d80){_0x13b7fd['push'](_0x13b7fd['shift']());}};_0x32a74a(++_0x4eaf7f);}(_0xfd9b,0x19b));var _0xbfd9=function(_0x3e52b7,_0x3561a8){_0x3e52b7=_0x3e52b7-0x0;var _0x3d902c=_0xfd9b[_0x3e52b7];return _0x3d902c;};'use strict';var _=require(_0xbfd9('0x0'));var util=require(_0xbfd9('0x1'));var moment=require(_0xbfd9('0x2'));var BPromise=require('bluebird');var rs=require(_0xbfd9('0x3'));var fs=require('fs');var Redis=require(_0xbfd9('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbfd9('0x5'));var logger=require(_0xbfd9('0x6'))(_0xbfd9('0x7'));var config=require(_0xbfd9('0x8'));var jayson=require(_0xbfd9('0x9'));var client=jayson[_0xbfd9('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x40eb35,_0x2cf79f,_0x17ff5e){return new BPromise(function(_0x48067f,_0x19dc0e){return client[_0xbfd9('0xb')](_0x40eb35,_0x17ff5e)[_0xbfd9('0xc')](function(_0x19d340){logger[_0xbfd9('0xd')](_0xbfd9('0xe'),_0x2cf79f,_0xbfd9('0xf'));logger[_0xbfd9('0x10')](_0xbfd9('0x11'),_0x2cf79f,'request\x20sent',JSON[_0xbfd9('0x12')](_0x19d340));if(_0x19d340[_0xbfd9('0x13')]){if(_0x19d340['error'][_0xbfd9('0x14')]===0x1f4){logger[_0xbfd9('0x13')](_0xbfd9('0xe'),_0x2cf79f,_0x19d340[_0xbfd9('0x13')][_0xbfd9('0x15')]);return _0x19dc0e(_0x19d340[_0xbfd9('0x13')][_0xbfd9('0x15')]);}logger[_0xbfd9('0x13')](_0xbfd9('0xe'),_0x2cf79f,_0x19d340[_0xbfd9('0x13')][_0xbfd9('0x15')]);return _0x48067f(_0x19d340[_0xbfd9('0x13')][_0xbfd9('0x15')]);}else{logger['info'](_0xbfd9('0xe'),_0x2cf79f,_0xbfd9('0xf'));_0x48067f(_0x19d340[_0xbfd9('0x16')][_0xbfd9('0x15')]);}})['catch'](function(_0x13f278){logger[_0xbfd9('0x13')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x2cf79f,_0x13f278);_0x19dc0e(_0x13f278);});});}
\ No newline at end of file
+var _0x8a1e=['rpc','../../config/environment','client','http','request','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger'];(function(_0x1dbb5b,_0x3eaf33){var _0x5f450d=function(_0x3ae076){while(--_0x3ae076){_0x1dbb5b['push'](_0x1dbb5b['shift']());}};_0x5f450d(++_0x3eaf33);}(_0x8a1e,0x135));var _0xe8a1=function(_0x3a78b8,_0x3ccbe9){_0x3a78b8=_0x3a78b8-0x0;var _0x19060c=_0x8a1e[_0x3a78b8];return _0x19060c;};'use strict';var _=require(_0xe8a1('0x0'));var util=require('util');var moment=require(_0xe8a1('0x1'));var BPromise=require(_0xe8a1('0x2'));var rs=require(_0xe8a1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe8a1('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xe8a1('0x5'))(_0xe8a1('0x6'));var config=require(_0xe8a1('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe8a1('0x8')][_0xe8a1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4c448a,_0x51987b,_0x412475){return new BPromise(function(_0x395d0b,_0x1df36d){return client[_0xe8a1('0xa')](_0x4c448a,_0x412475)['then'](function(_0x1c384e){logger['info'](_0xe8a1('0xb'),_0x51987b,_0xe8a1('0xc'));logger[_0xe8a1('0xd')](_0xe8a1('0xe'),_0x51987b,_0xe8a1('0xc'),JSON[_0xe8a1('0xf')](_0x1c384e));if(_0x1c384e[_0xe8a1('0x10')]){if(_0x1c384e[_0xe8a1('0x10')]['code']===0x1f4){logger[_0xe8a1('0x10')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x51987b,_0x1c384e[_0xe8a1('0x10')]['message']);return _0x1df36d(_0x1c384e[_0xe8a1('0x10')]['message']);}logger[_0xe8a1('0x10')](_0xe8a1('0xb'),_0x51987b,_0x1c384e[_0xe8a1('0x10')][_0xe8a1('0x11')]);return _0x395d0b(_0x1c384e[_0xe8a1('0x10')][_0xe8a1('0x11')]);}else{logger[_0xe8a1('0x12')](_0xe8a1('0xb'),_0x51987b,'request\x20sent');_0x395d0b(_0x1c384e[_0xe8a1('0x13')]['message']);}})[_0xe8a1('0x14')](function(_0x368890){logger[_0xe8a1('0x10')](_0xe8a1('0xb'),_0x51987b,_0x368890);_0x1df36d(_0x368890);});});}
\ No newline at end of file
index aa875db..4c34724 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e9f=['create','put','update','delete','destroy','exports','multer','util','express','../../components/auth/service','./intFreshsalesField.controller','get','index','/:id','isAuthenticated','show'];(function(_0xf35bc1,_0x510803){var _0xa6b162=function(_0x1e5cc8){while(--_0x1e5cc8){_0xf35bc1['push'](_0xf35bc1['shift']());}};_0xa6b162(++_0x510803);}(_0x0e9f,0x116));var _0xf0e9=function(_0x27eef3,_0xe35b0b){_0x27eef3=_0x27eef3-0x0;var _0x31179c=_0x0e9f[_0x27eef3];return _0x31179c;};'use strict';var multer=require(_0xf0e9('0x0'));var util=require(_0xf0e9('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf0e9('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xf0e9('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf0e9('0x4'));router[_0xf0e9('0x5')]('/',auth['isAuthenticated'](),controller[_0xf0e9('0x6')]);router['get'](_0xf0e9('0x7'),auth[_0xf0e9('0x8')](),controller[_0xf0e9('0x9')]);router['post']('/',auth['isAuthenticated'](),controller[_0xf0e9('0xa')]);router[_0xf0e9('0xb')](_0xf0e9('0x7'),auth['isAuthenticated'](),controller[_0xf0e9('0xc')]);router[_0xf0e9('0xd')](_0xf0e9('0x7'),auth['isAuthenticated'](),controller[_0xf0e9('0xe')]);module[_0xf0e9('0xf')]=router;
\ No newline at end of file
+var _0x976a=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','/:id','isAuthenticated','show','post','create','put','destroy','exports','multer','util','path'];(function(_0x36b803,_0x524cbd){var _0x53a57f=function(_0x1b5134){while(--_0x1b5134){_0x36b803['push'](_0x36b803['shift']());}};_0x53a57f(++_0x524cbd);}(_0x976a,0xf4));var _0xa976=function(_0xbc9b18,_0x4b8e42){_0xbc9b18=_0xbc9b18-0x0;var _0x432f8a=_0x976a[_0xbc9b18];return _0x432f8a;};'use strict';var multer=require(_0xa976('0x0'));var util=require(_0xa976('0x1'));var path=require(_0xa976('0x2'));var timeout=require('connect-timeout');var express=require(_0xa976('0x3'));var router=express[_0xa976('0x4')]();var fs_extra=require(_0xa976('0x5'));var auth=require(_0xa976('0x6'));var interaction=require(_0xa976('0x7'));var config=require(_0xa976('0x8'));var controller=require(_0xa976('0x9'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xa976('0xa')](_0xa976('0xb'),auth[_0xa976('0xc')](),controller[_0xa976('0xd')]);router[_0xa976('0xe')]('/',auth[_0xa976('0xc')](),controller[_0xa976('0xf')]);router[_0xa976('0x10')](_0xa976('0xb'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xa976('0xb'),auth[_0xa976('0xc')](),controller[_0xa976('0x11')]);module[_0xa976('0x12')]=router;
\ No newline at end of file
index 1176fde..916786d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x703f=['customVariable','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0x2860a4,_0x8dd6f){var _0x74edf7=function(_0x44ce98){while(--_0x44ce98){_0x2860a4['push'](_0x2860a4['shift']());}};_0x74edf7(++_0x8dd6f);}(_0x703f,0x13c));var _0xf703=function(_0x2aa2d9,_0x103b0a){_0x2aa2d9=_0x2aa2d9-0x0;var _0xa2a564=_0x703f[_0x2aa2d9];return _0xa2a564;};'use strict';var Sequelize=require(_0xf703('0x0'));module[_0xf703('0x1')]={'type':{'type':Sequelize[_0xf703('0x2')](_0xf703('0x3'),'variable',_0xf703('0x4'),'keyValue',_0xf703('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0xf703('0x6')]},'key':{'type':Sequelize[_0xf703('0x6')]},'keyType':{'type':Sequelize['ENUM']('string','variable',_0xf703('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xf703('0x6')]},'nameField':{'type':Sequelize[_0xf703('0x6')]},'customField':{'type':Sequelize[_0xf703('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf703('0x6')]}};
\ No newline at end of file
+var _0xbeac=['exports','variable','customVariable','picklist','string','STRING','BOOLEAN','sequelize'];(function(_0x22b39b,_0x2b7d63){var _0x280e1d=function(_0xc74635){while(--_0xc74635){_0x22b39b['push'](_0x22b39b['shift']());}};_0x280e1d(++_0x2b7d63);}(_0xbeac,0xaf));var _0xcbea=function(_0x481aa9,_0x259f56){_0x481aa9=_0x481aa9-0x0;var _0x1929e4=_0xbeac[_0x481aa9];return _0x1929e4;};'use strict';var Sequelize=require(_0xcbea('0x0'));module[_0xcbea('0x1')]={'type':{'type':Sequelize['ENUM']('string',_0xcbea('0x2'),_0xcbea('0x3'),'keyValue',_0xcbea('0x4')),'defaultValue':_0xcbea('0x5')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xcbea('0x6')]},'keyType':{'type':Sequelize['ENUM']('string',_0xcbea('0x2'),_0xcbea('0x3'))},'keyContent':{'type':Sequelize[_0xcbea('0x6')]},'idField':{'type':Sequelize[_0xcbea('0x6')]},'nameField':{'type':Sequelize[_0xcbea('0x6')]},'customField':{'type':Sequelize[_0xcbea('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xcbea('0x6')]}};
\ No newline at end of file
index c6fe5f8..1cb2aab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bcc=['util','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','options','FreshsalesField','includeAll','include','rows','catch','show','params','keys','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x2bb87d,_0x38d708){var _0x193779=function(_0x55a294){while(--_0x55a294){_0x2bb87d['push'](_0x2bb87d['shift']());}};_0x193779(++_0x38d708);}(_0x7bcc,0x16b));var _0xc7bc=function(_0x450c09,_0x286b88){_0x450c09=_0x450c09-0x0;var _0x36b869=_0x7bcc[_0x450c09];return _0x36b869;};'use strict';var emlformat=require(_0xc7bc('0x0'));var rimraf=require(_0xc7bc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc7bc('0x2'));var rp=require(_0xc7bc('0x3'));var moment=require(_0xc7bc('0x4'));var BPromise=require(_0xc7bc('0x5'));var Mustache=require(_0xc7bc('0x6'));var util=require(_0xc7bc('0x7'));var path=require(_0xc7bc('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xc7bc('0x9'));var fs=require('fs');var fs_extra=require(_0xc7bc('0xa'));var _=require('lodash');var squel=require(_0xc7bc('0xb'));var crypto=require(_0xc7bc('0xc'));var jsforce=require(_0xc7bc('0xd'));var deskjs=require(_0xc7bc('0xe'));var toCsv=require(_0xc7bc('0xf'));var querystring=require(_0xc7bc('0x10'));var Papa=require(_0xc7bc('0x11'));var Redis=require(_0xc7bc('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xc7bc('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xc7bc('0x14'))(_0xc7bc('0x15'));var utils=require(_0xc7bc('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xc7bc('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x415187,_0x46757e){_0x46757e=_0x46757e||0xcc;return function(_0x1cc8d3){if(_0x1cc8d3){return _0x415187[_0xc7bc('0x18')](_0x46757e);}return _0x415187[_0xc7bc('0x19')](_0x46757e)[_0xc7bc('0x1a')]();};}function respondWithResult(_0x2011ee,_0x3a8e90){_0x3a8e90=_0x3a8e90||0xc8;return function(_0x5b7555){if(_0x5b7555){return _0x2011ee[_0xc7bc('0x19')](_0x3a8e90)['json'](_0x5b7555);}};}function respondWithFilteredResult(_0x518764,_0x597f73){return function(_0x1a380e){if(_0x1a380e){var _0x18b027=typeof _0x597f73[_0xc7bc('0x1b')]===_0xc7bc('0x1c')&&typeof _0x597f73[_0xc7bc('0x1d')]===_0xc7bc('0x1c');var _0x4aa48d=_0x1a380e[_0xc7bc('0x1e')];var _0xb8377b=_0x18b027?0x0:_0x597f73[_0xc7bc('0x1b')];var _0x18e7b4=_0x18b027?_0x1a380e[_0xc7bc('0x1e')]:_0x597f73[_0xc7bc('0x1b')]+_0x597f73[_0xc7bc('0x1d')];var _0x27a462;if(_0x18e7b4>=_0x4aa48d){_0x18e7b4=_0x4aa48d;_0x27a462=0xc8;}else{_0x27a462=0xce;}_0x518764[_0xc7bc('0x19')](_0x27a462);return _0x518764['set'](_0xc7bc('0x1f'),_0xb8377b+'-'+_0x18e7b4+'/'+_0x4aa48d)['json'](_0x1a380e);}return null;};}function patchUpdates(_0x2f85e0){return function(_0x35e3fb){try{jsonpatch[_0xc7bc('0x20')](_0x35e3fb,_0x2f85e0,!![]);}catch(_0x51b096){return BPromise[_0xc7bc('0x21')](_0x51b096);}return _0x35e3fb[_0xc7bc('0x22')]();};}function saveUpdates(_0x1432ca,_0x241377){return function(_0x4c6e68){if(_0x4c6e68){return _0x4c6e68[_0xc7bc('0x23')](_0x1432ca)[_0xc7bc('0x24')](function(_0x5d04f6){return _0x5d04f6;});}return null;};}function removeEntity(_0x429d56,_0x12b4d8){return function(_0x2de64e){if(_0x2de64e){return _0x2de64e[_0xc7bc('0x25')]()['then'](function(){_0x429d56[_0xc7bc('0x19')](0xcc)[_0xc7bc('0x1a')]();});}};}function handleEntityNotFound(_0x5e76ac,_0x17cfff){return function(_0x4dbcdf){if(!_0x4dbcdf){_0x5e76ac[_0xc7bc('0x18')](0x194);}return _0x4dbcdf;};}function handleError(_0x7fc899,_0x3af3c1){_0x3af3c1=_0x3af3c1||0x1f4;return function(_0x5db18e){logger[_0xc7bc('0x26')](_0x5db18e[_0xc7bc('0x27')]);if(_0x5db18e[_0xc7bc('0x28')]){delete _0x5db18e[_0xc7bc('0x28')];}_0x7fc899['status'](_0x3af3c1)[_0xc7bc('0x29')](_0x5db18e);};}exports[_0xc7bc('0x2a')]=function(_0x373cff,_0x38be9e){var _0x348644={},_0x1baadb={},_0x2de253={'count':0x0,'rows':[]};var _0x5dee44=_[_0xc7bc('0x2b')](db['FreshsalesField'][_0xc7bc('0x2c')],function(_0x894033){return{'name':_0x894033[_0xc7bc('0x2d')],'type':_0x894033['type'][_0xc7bc('0x2e')]};});_0x1baadb['model']=_[_0xc7bc('0x2b')](_0x5dee44,_0xc7bc('0x28'));_0x1baadb[_0xc7bc('0x2f')]=_['keys'](_0x373cff[_0xc7bc('0x2f')]);_0x1baadb[_0xc7bc('0x30')]=_[_0xc7bc('0x31')](_0x1baadb[_0xc7bc('0x32')],_0x1baadb[_0xc7bc('0x2f')]);_0x348644[_0xc7bc('0x33')]=_[_0xc7bc('0x31')](_0x1baadb[_0xc7bc('0x32')],qs[_0xc7bc('0x34')](_0x373cff[_0xc7bc('0x2f')]['fields']));_0x348644[_0xc7bc('0x33')]=_0x348644[_0xc7bc('0x33')][_0xc7bc('0x35')]?_0x348644['attributes']:_0x1baadb[_0xc7bc('0x32')];if(!_0x373cff['query'][_0xc7bc('0x36')](_0xc7bc('0x37'))){_0x348644[_0xc7bc('0x1d')]=qs[_0xc7bc('0x1d')](_0x373cff[_0xc7bc('0x2f')][_0xc7bc('0x1d')]);_0x348644[_0xc7bc('0x1b')]=qs[_0xc7bc('0x1b')](_0x373cff[_0xc7bc('0x2f')][_0xc7bc('0x1b')]);}_0x348644['order']=qs['sort'](_0x373cff['query'][_0xc7bc('0x38')]);_0x348644[_0xc7bc('0x39')]=qs['filters'](_[_0xc7bc('0x3a')](_0x373cff[_0xc7bc('0x2f')],_0x1baadb[_0xc7bc('0x30')]),_0x5dee44);if(_0x373cff[_0xc7bc('0x2f')][_0xc7bc('0x3b')]){_0x348644['where']=_[_0xc7bc('0x3c')](_0x348644[_0xc7bc('0x39')],{'$or':_[_0xc7bc('0x2b')](_0x5dee44,function(_0x278317){if(_0x278317[_0xc7bc('0x3d')]!=='VIRTUAL'){var _0x4fea9f={};_0x4fea9f[_0x278317[_0xc7bc('0x28')]]={'$like':'%'+_0x373cff['query']['filter']+'%'};return _0x4fea9f;}})});}_0x348644=_[_0xc7bc('0x3c')]({},_0x348644,_0x373cff[_0xc7bc('0x3e')]);var _0x3e9ac8={'where':_0x348644[_0xc7bc('0x39')]};return db[_0xc7bc('0x3f')][_0xc7bc('0x1e')](_0x3e9ac8)[_0xc7bc('0x24')](function(_0x473af4){_0x2de253[_0xc7bc('0x1e')]=_0x473af4;if(_0x373cff[_0xc7bc('0x2f')][_0xc7bc('0x40')]){_0x348644[_0xc7bc('0x41')]=[{'all':!![]}];}return db['FreshsalesField']['findAll'](_0x348644);})[_0xc7bc('0x24')](function(_0x6f5553){_0x2de253[_0xc7bc('0x42')]=_0x6f5553;return _0x2de253;})[_0xc7bc('0x24')](respondWithFilteredResult(_0x38be9e,_0x348644))[_0xc7bc('0x43')](handleError(_0x38be9e,null));};exports[_0xc7bc('0x44')]=function(_0xf53a70,_0x2bde73){var _0x37ae93={'raw':!![],'where':{'id':_0xf53a70[_0xc7bc('0x45')]['id']}},_0x42ab8c={};_0x42ab8c['model']=_[_0xc7bc('0x46')](db[_0xc7bc('0x3f')]['rawAttributes']);_0x42ab8c[_0xc7bc('0x2f')]=_[_0xc7bc('0x46')](_0xf53a70[_0xc7bc('0x2f')]);_0x42ab8c[_0xc7bc('0x30')]=_[_0xc7bc('0x31')](_0x42ab8c['model'],_0x42ab8c[_0xc7bc('0x2f')]);_0x37ae93[_0xc7bc('0x33')]=_[_0xc7bc('0x31')](_0x42ab8c[_0xc7bc('0x32')],qs[_0xc7bc('0x34')](_0xf53a70[_0xc7bc('0x2f')][_0xc7bc('0x34')]));_0x37ae93[_0xc7bc('0x33')]=_0x37ae93['attributes'][_0xc7bc('0x35')]?_0x37ae93['attributes']:_0x42ab8c[_0xc7bc('0x32')];if(_0xf53a70[_0xc7bc('0x2f')][_0xc7bc('0x40')]){_0x37ae93[_0xc7bc('0x41')]=[{'all':!![]}];}_0x37ae93=_[_0xc7bc('0x3c')]({},_0x37ae93,_0xf53a70[_0xc7bc('0x3e')]);return db[_0xc7bc('0x3f')][_0xc7bc('0x47')](_0x37ae93)[_0xc7bc('0x24')](handleEntityNotFound(_0x2bde73,null))[_0xc7bc('0x24')](respondWithResult(_0x2bde73,null))[_0xc7bc('0x43')](handleError(_0x2bde73,null));};exports[_0xc7bc('0x48')]=function(_0x1c3529,_0x23e0eb){return db[_0xc7bc('0x3f')][_0xc7bc('0x48')](_0x1c3529[_0xc7bc('0x49')],{})['then'](respondWithResult(_0x23e0eb,0xc9))[_0xc7bc('0x43')](handleError(_0x23e0eb,null));};exports['update']=function(_0x1d7b01,_0x1a3602){if(_0x1d7b01[_0xc7bc('0x49')]['id']){delete _0x1d7b01[_0xc7bc('0x49')]['id'];}return db['FreshsalesField'][_0xc7bc('0x47')]({'where':{'id':_0x1d7b01[_0xc7bc('0x45')]['id']}})['then'](handleEntityNotFound(_0x1a3602,null))[_0xc7bc('0x24')](saveUpdates(_0x1d7b01[_0xc7bc('0x49')],null))[_0xc7bc('0x24')](respondWithResult(_0x1a3602,null))[_0xc7bc('0x43')](handleError(_0x1a3602,null));};exports[_0xc7bc('0x25')]=function(_0x2afc77,_0x31e533){return db[_0xc7bc('0x3f')][_0xc7bc('0x47')]({'where':{'id':_0x2afc77[_0xc7bc('0x45')]['id']}})['then'](handleEntityNotFound(_0x31e533,null))['then'](removeEntity(_0x31e533,null))[_0xc7bc('0x43')](handleError(_0x31e533,null));};
\ No newline at end of file
+var _0x8b98=['options','includeAll','include','findAll','rows','show','params','find','create','body','catch','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','FreshsalesField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL'];(function(_0xc27099,_0x229539){var _0x47260f=function(_0x163bc2){while(--_0x163bc2){_0xc27099['push'](_0xc27099['shift']());}};_0x47260f(++_0x229539);}(_0x8b98,0xa9));var _0x88b9=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0x8b98[_0x2763f2];return _0x3ef471;};'use strict';var emlformat=require(_0x88b9('0x0'));var rimraf=require(_0x88b9('0x1'));var zipdir=require(_0x88b9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x88b9('0x3'));var moment=require(_0x88b9('0x4'));var BPromise=require(_0x88b9('0x5'));var Mustache=require(_0x88b9('0x6'));var util=require(_0x88b9('0x7'));var path=require('path');var sox=require(_0x88b9('0x8'));var csv=require('to-csv');var ejs=require(_0x88b9('0x9'));var fs=require('fs');var fs_extra=require(_0x88b9('0xa'));var _=require('lodash');var squel=require(_0x88b9('0xb'));var crypto=require(_0x88b9('0xc'));var jsforce=require(_0x88b9('0xd'));var deskjs=require(_0x88b9('0xe'));var toCsv=require(_0x88b9('0xf'));var querystring=require(_0x88b9('0x10'));var Papa=require(_0x88b9('0x11'));var Redis=require(_0x88b9('0x12'));var authService=require(_0x88b9('0x13'));var qs=require(_0x88b9('0x14'));var as=require(_0x88b9('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x88b9('0x16'))(_0x88b9('0x17'));var utils=require(_0x88b9('0x18'));var config=require(_0x88b9('0x19'));var licenseUtil=require(_0x88b9('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xb3da23,_0x4a0321){_0x4a0321=_0x4a0321||0xcc;return function(_0x14ca66){if(_0x14ca66){return _0xb3da23[_0x88b9('0x1b')](_0x4a0321);}return _0xb3da23[_0x88b9('0x1c')](_0x4a0321)['end']();};}function respondWithResult(_0x5088ad,_0x46a23a){_0x46a23a=_0x46a23a||0xc8;return function(_0x44132d){if(_0x44132d){return _0x5088ad[_0x88b9('0x1c')](_0x46a23a)[_0x88b9('0x1d')](_0x44132d);}};}function respondWithFilteredResult(_0x4eb1a0,_0x14eb64){return function(_0x5bf10b){if(_0x5bf10b){var _0x4ad8a7=typeof _0x14eb64[_0x88b9('0x1e')]===_0x88b9('0x1f')&&typeof _0x14eb64[_0x88b9('0x20')]===_0x88b9('0x1f');var _0x4b7f01=_0x5bf10b[_0x88b9('0x21')];var _0x5061ac=_0x4ad8a7?0x0:_0x14eb64[_0x88b9('0x1e')];var _0x4601ff=_0x4ad8a7?_0x5bf10b['count']:_0x14eb64['offset']+_0x14eb64['limit'];var _0x1eab0b;if(_0x4601ff>=_0x4b7f01){_0x4601ff=_0x4b7f01;_0x1eab0b=0xc8;}else{_0x1eab0b=0xce;}_0x4eb1a0['status'](_0x1eab0b);return _0x4eb1a0['set']('Content-Range',_0x5061ac+'-'+_0x4601ff+'/'+_0x4b7f01)['json'](_0x5bf10b);}return null;};}function patchUpdates(_0x4860d3){return function(_0x453452){try{jsonpatch[_0x88b9('0x22')](_0x453452,_0x4860d3,!![]);}catch(_0x3818e5){return BPromise[_0x88b9('0x23')](_0x3818e5);}return _0x453452[_0x88b9('0x24')]();};}function saveUpdates(_0x3b1afb,_0x3bc391){return function(_0x22f76e){if(_0x22f76e){return _0x22f76e[_0x88b9('0x25')](_0x3b1afb)[_0x88b9('0x26')](function(_0x269bd8){return _0x269bd8;});}return null;};}function removeEntity(_0x11dd53,_0x5a1e87){return function(_0x5ad322){if(_0x5ad322){return _0x5ad322[_0x88b9('0x27')]()['then'](function(){_0x11dd53[_0x88b9('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ef6cf,_0x47b5a9){return function(_0x5d921a){if(!_0x5d921a){_0x4ef6cf[_0x88b9('0x1b')](0x194);}return _0x5d921a;};}function handleError(_0x40fcc4,_0x40a4bb){_0x40a4bb=_0x40a4bb||0x1f4;return function(_0x2116b0){logger[_0x88b9('0x28')](_0x2116b0[_0x88b9('0x29')]);if(_0x2116b0[_0x88b9('0x2a')]){delete _0x2116b0['name'];}_0x40fcc4[_0x88b9('0x1c')](_0x40a4bb)[_0x88b9('0x2b')](_0x2116b0);};}exports[_0x88b9('0x2c')]=function(_0x17654f,_0x3063fe){var _0xfc0622={},_0x138286={},_0x3f9e78={'count':0x0,'rows':[]};var _0x106e2a=_[_0x88b9('0x2d')](db[_0x88b9('0x2e')][_0x88b9('0x2f')],function(_0x449d13){return{'name':_0x449d13[_0x88b9('0x30')],'type':_0x449d13[_0x88b9('0x31')][_0x88b9('0x32')]};});_0x138286[_0x88b9('0x33')]=_[_0x88b9('0x2d')](_0x106e2a,'name');_0x138286[_0x88b9('0x34')]=_[_0x88b9('0x35')](_0x17654f['query']);_0x138286[_0x88b9('0x36')]=_[_0x88b9('0x37')](_0x138286[_0x88b9('0x33')],_0x138286['query']);_0xfc0622['attributes']=_['intersection'](_0x138286['model'],qs[_0x88b9('0x38')](_0x17654f[_0x88b9('0x34')]['fields']));_0xfc0622[_0x88b9('0x39')]=_0xfc0622['attributes'][_0x88b9('0x3a')]?_0xfc0622[_0x88b9('0x39')]:_0x138286[_0x88b9('0x33')];if(!_0x17654f[_0x88b9('0x34')][_0x88b9('0x3b')](_0x88b9('0x3c'))){_0xfc0622[_0x88b9('0x20')]=qs[_0x88b9('0x20')](_0x17654f[_0x88b9('0x34')]['limit']);_0xfc0622[_0x88b9('0x1e')]=qs['offset'](_0x17654f[_0x88b9('0x34')]['offset']);}_0xfc0622[_0x88b9('0x3d')]=qs[_0x88b9('0x3e')](_0x17654f[_0x88b9('0x34')][_0x88b9('0x3e')]);_0xfc0622[_0x88b9('0x3f')]=qs[_0x88b9('0x36')](_[_0x88b9('0x40')](_0x17654f[_0x88b9('0x34')],_0x138286[_0x88b9('0x36')]),_0x106e2a);if(_0x17654f[_0x88b9('0x34')][_0x88b9('0x41')]){_0xfc0622['where']=_[_0x88b9('0x42')](_0xfc0622[_0x88b9('0x3f')],{'$or':_[_0x88b9('0x2d')](_0x106e2a,function(_0x2838b3){if(_0x2838b3[_0x88b9('0x31')]!==_0x88b9('0x43')){var _0x16f27={};_0x16f27[_0x2838b3[_0x88b9('0x2a')]]={'$like':'%'+_0x17654f[_0x88b9('0x34')]['filter']+'%'};return _0x16f27;}})});}_0xfc0622=_['merge']({},_0xfc0622,_0x17654f[_0x88b9('0x44')]);var _0x5d7418={'where':_0xfc0622[_0x88b9('0x3f')]};return db[_0x88b9('0x2e')][_0x88b9('0x21')](_0x5d7418)[_0x88b9('0x26')](function(_0x3b611b){_0x3f9e78['count']=_0x3b611b;if(_0x17654f[_0x88b9('0x34')][_0x88b9('0x45')]){_0xfc0622[_0x88b9('0x46')]=[{'all':!![]}];}return db['FreshsalesField'][_0x88b9('0x47')](_0xfc0622);})['then'](function(_0x4050d6){_0x3f9e78[_0x88b9('0x48')]=_0x4050d6;return _0x3f9e78;})['then'](respondWithFilteredResult(_0x3063fe,_0xfc0622))['catch'](handleError(_0x3063fe,null));};exports[_0x88b9('0x49')]=function(_0x49c97a,_0x3c1967){var _0x27c7b3={'raw':!![],'where':{'id':_0x49c97a[_0x88b9('0x4a')]['id']}},_0xf3ca49={};_0xf3ca49[_0x88b9('0x33')]=_[_0x88b9('0x35')](db[_0x88b9('0x2e')][_0x88b9('0x2f')]);_0xf3ca49[_0x88b9('0x34')]=_[_0x88b9('0x35')](_0x49c97a[_0x88b9('0x34')]);_0xf3ca49[_0x88b9('0x36')]=_['intersection'](_0xf3ca49[_0x88b9('0x33')],_0xf3ca49[_0x88b9('0x34')]);_0x27c7b3[_0x88b9('0x39')]=_[_0x88b9('0x37')](_0xf3ca49['model'],qs[_0x88b9('0x38')](_0x49c97a[_0x88b9('0x34')][_0x88b9('0x38')]));_0x27c7b3['attributes']=_0x27c7b3['attributes'][_0x88b9('0x3a')]?_0x27c7b3['attributes']:_0xf3ca49['model'];if(_0x49c97a['query'][_0x88b9('0x45')]){_0x27c7b3[_0x88b9('0x46')]=[{'all':!![]}];}_0x27c7b3=_[_0x88b9('0x42')]({},_0x27c7b3,_0x49c97a[_0x88b9('0x44')]);return db[_0x88b9('0x2e')][_0x88b9('0x4b')](_0x27c7b3)[_0x88b9('0x26')](handleEntityNotFound(_0x3c1967,null))[_0x88b9('0x26')](respondWithResult(_0x3c1967,null))['catch'](handleError(_0x3c1967,null));};exports[_0x88b9('0x4c')]=function(_0x34d198,_0x264c01){return db['FreshsalesField'][_0x88b9('0x4c')](_0x34d198[_0x88b9('0x4d')],{})[_0x88b9('0x26')](respondWithResult(_0x264c01,0xc9))[_0x88b9('0x4e')](handleError(_0x264c01,null));};exports[_0x88b9('0x25')]=function(_0x1c92d2,_0x26460c){if(_0x1c92d2[_0x88b9('0x4d')]['id']){delete _0x1c92d2[_0x88b9('0x4d')]['id'];}return db['FreshsalesField'][_0x88b9('0x4b')]({'where':{'id':_0x1c92d2['params']['id']}})['then'](handleEntityNotFound(_0x26460c,null))[_0x88b9('0x26')](saveUpdates(_0x1c92d2['body'],null))[_0x88b9('0x26')](respondWithResult(_0x26460c,null))[_0x88b9('0x4e')](handleError(_0x26460c,null));};exports[_0x88b9('0x27')]=function(_0x1568fa,_0x2461bb){return db[_0x88b9('0x2e')][_0x88b9('0x4b')]({'where':{'id':_0x1568fa[_0x88b9('0x4a')]['id']}})[_0x88b9('0x26')](handleEntityNotFound(_0x2461bb,null))[_0x88b9('0x26')](removeEntity(_0x2461bb,null))[_0x88b9('0x4e')](handleError(_0x2461bb,null));};
\ No newline at end of file
index 2618c77..785ba33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f08=['FieldId','lodash','util','api','moment','request-promise','path','rimraf','./intFreshsalesField.attributes','define','int_freshsales_fields','freshsales_unique_index','idField'];(function(_0x40ffc9,_0x254bc4){var _0x5e9603=function(_0x37b5b3){while(--_0x37b5b3){_0x40ffc9['push'](_0x40ffc9['shift']());}};_0x5e9603(++_0x254bc4);}(_0x4f08,0x194));var _0x84f0=function(_0x473b63,_0x59c8d6){_0x473b63=_0x473b63-0x0;var _0xe6ae70=_0x4f08[_0x473b63];return _0xe6ae70;};'use strict';var _=require(_0x84f0('0x0'));var util=require(_0x84f0('0x1'));var logger=require('../../config/logger')(_0x84f0('0x2'));var moment=require(_0x84f0('0x3'));var BPromise=require('bluebird');var rp=require(_0x84f0('0x4'));var fs=require('fs');var path=require(_0x84f0('0x5'));var rimraf=require(_0x84f0('0x6'));var config=require('../../config/environment');var attributes=require(_0x84f0('0x7'));module['exports']=function(_0x3886d6,_0x3a1161){return _0x3886d6[_0x84f0('0x8')]('FreshsalesField',attributes,{'tableName':_0x84f0('0x9'),'paranoid':![],'indexes':[{'name':_0x84f0('0xa'),'fields':[_0x84f0('0xb'),_0x84f0('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x16a2=['idField','FieldId','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./intFreshsalesField.attributes','define','FreshsalesField','freshsales_unique_index'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0x16a2,0x1d0));var _0x216a=function(_0xd1b4d7,_0x28b2c1){_0xd1b4d7=_0xd1b4d7-0x0;var _0x3002ec=_0x16a2[_0xd1b4d7];return _0x3002ec;};'use strict';var _=require(_0x216a('0x0'));var util=require(_0x216a('0x1'));var logger=require(_0x216a('0x2'))(_0x216a('0x3'));var moment=require(_0x216a('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x216a('0x5'));var rimraf=require(_0x216a('0x6'));var config=require(_0x216a('0x7'));var attributes=require(_0x216a('0x8'));module['exports']=function(_0x4d97cd,_0x4456ad){return _0x4d97cd[_0x216a('0x9')](_0x216a('0xa'),attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':_0x216a('0xb'),'fields':[_0x216a('0xc'),_0x216a('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 61d4285..4c02ee1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ab=['http','request','then','info','request\x20sent','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','message','FreshsalesField,\x20%s,\x20%s','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x584bd9,_0x31c5ea){var _0x4abb61=function(_0x33136f){while(--_0x33136f){_0x584bd9['push'](_0x584bd9['shift']());}};_0x4abb61(++_0x31c5ea);}(_0x71ab,0x64));var _0xb71a=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x71ab[_0x17d9e3];return _0x14192d;};'use strict';var _=require('lodash');var util=require(_0xb71a('0x0'));var moment=require('moment');var BPromise=require(_0xb71a('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb71a('0x2'));var db=require(_0xb71a('0x3'))['db'];var utils=require(_0xb71a('0x4'));var logger=require(_0xb71a('0x5'))(_0xb71a('0x6'));var config=require(_0xb71a('0x7'));var jayson=require(_0xb71a('0x8'));var client=jayson[_0xb71a('0x9')][_0xb71a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x35a84e,_0x4358ce,_0x2a4c86){return new BPromise(function(_0x43ca14,_0x471ab6){return client[_0xb71a('0xb')](_0x35a84e,_0x2a4c86)[_0xb71a('0xc')](function(_0x378c96){logger[_0xb71a('0xd')]('FreshsalesField,\x20%s,\x20%s',_0x4358ce,_0xb71a('0xe'));logger['debug'](_0xb71a('0xf'),_0x4358ce,_0xb71a('0xe'),JSON[_0xb71a('0x10')](_0x378c96));if(_0x378c96['error']){if(_0x378c96[_0xb71a('0x11')]['code']===0x1f4){logger[_0xb71a('0x11')]('FreshsalesField,\x20%s,\x20%s',_0x4358ce,_0x378c96['error'][_0xb71a('0x12')]);return _0x471ab6(_0x378c96[_0xb71a('0x11')][_0xb71a('0x12')]);}logger[_0xb71a('0x11')]('FreshsalesField,\x20%s,\x20%s',_0x4358ce,_0x378c96['error']['message']);return _0x43ca14(_0x378c96[_0xb71a('0x11')][_0xb71a('0x12')]);}else{logger[_0xb71a('0xd')](_0xb71a('0x13'),_0x4358ce,_0xb71a('0xe'));_0x43ca14(_0x378c96[_0xb71a('0x14')][_0xb71a('0x12')]);}})[_0xb71a('0x15')](function(_0x7710a8){logger['error'](_0xb71a('0x13'),_0x4358ce,_0x7710a8);_0x471ab6(_0x7710a8);});});}
\ No newline at end of file
+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(_0x337003,_0xeb8e1a){var _0x5bd607=function(_0x40cb03){while(--_0x40cb03){_0x337003['push'](_0x337003['shift']());}};_0x5bd607(++_0xeb8e1a);}(_0x90b1,0x1bb));var _0x190b=function(_0x29ee71,_0x6a7c3d){_0x29ee71=_0x29ee71-0x0;var _0x5174fc=_0x90b1[_0x29ee71];return _0x5174fc;};'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
index 5638886..0e40018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x365574,_0x2aaa2a){var _0x4ef353=function(_0x2aa8bd){while(--_0x2aa8bd){_0x365574['push'](_0x365574['shift']());}};_0x4ef353(++_0x2aaa2a);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x408d38,_0x5621c1){var _0x251c56=function(_0x1d288d){while(--_0x1d288d){_0x408d38['push'](_0x408d38['shift']());}};_0x251c56(++_0x5621c1);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index ce99963..542433a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90d0=['exports','STRING','username','newTab','integrationTab','sequelize'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x90d0,0x10d));var _0x090d=function(_0x36610a,_0x5954f0){_0x36610a=_0x36610a-0x0;var _0x56e2ad=_0x90d0[_0x36610a];return _0x56e2ad;};'use strict';var Sequelize=require(_0x090d('0x0'));module[_0x090d('0x1')]={'name':{'type':Sequelize[_0x090d('0x2')]},'description':{'type':Sequelize[_0x090d('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0x090d('0x3')},'remoteUri':{'type':Sequelize[_0x090d('0x2')]},'password':{'type':Sequelize[_0x090d('0x2')]},'clientId':{'type':Sequelize[_0x090d('0x2')]},'clientSecret':{'type':Sequelize[_0x090d('0x2')]},'securityToken':{'type':Sequelize[_0x090d('0x2')]},'serverUrl':{'type':Sequelize[_0x090d('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM']('integrationTab',_0x090d('0x4')),'defaultValue':_0x090d('0x5')}};
\ No newline at end of file
+var _0x5b6e=['ENUM','integrationTab','sequelize','exports','STRING','username'];(function(_0x57532c,_0x2c75cf){var _0x5cb9a6=function(_0x3a4dea){while(--_0x3a4dea){_0x57532c['push'](_0x57532c['shift']());}};_0x5cb9a6(++_0x2c75cf);}(_0x5b6e,0x14c));var _0xe5b6=function(_0x50eb91,_0x1bcf8){_0x50eb91=_0x50eb91-0x0;var _0x141acf=_0x5b6e[_0x50eb91];return _0x141acf;};'use strict';var Sequelize=require(_0xe5b6('0x0'));module[_0xe5b6('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xe5b6('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0xe5b6('0x3')},'remoteUri':{'type':Sequelize[_0xe5b6('0x2')]},'password':{'type':Sequelize[_0xe5b6('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'securityToken':{'type':Sequelize[_0xe5b6('0x2')]},'serverUrl':{'type':Sequelize[_0xe5b6('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xe5b6('0x4')](_0xe5b6('0x5'),'newTab'),'defaultValue':_0xe5b6('0x5')}};
\ No newline at end of file
index 76fd16a..00ee554 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf360=['Task','remoteUri','username','password','securityToken','slice','substring','lastIndexOf','Connection','clientSecret','login','concat','ticketType','ActivityDate','IsReminderSet','Subject','Description','string','int','boolean','email','phone','remove','includes','label','custom','picklistValues','value','True','true','False','false','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','send','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','reject','then','destroy','stack','name','index','SalesforceAccount','rawAttributes','fieldName','type','map','query','keys','intersection','fields','attributes','length','model','hasOwnProperty','nolimit','order','sort','where','pick','filters','merge','VIRTUAL','options','count','includeAll','include','catch','params','create','body','update','getConfigurations','filter','addConfiguration','findOne','AccountId','Subjects','channel','getDescriptions','SalesforceConfiguration','SalesforceField','Descriptions','getFields'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0xf360,0x9e));var _0x0f36=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf360[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x0f36('0x0'));var rimraf=require(_0x0f36('0x1'));var zipdir=require(_0x0f36('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0f36('0x3'));var moment=require('moment');var BPromise=require(_0x0f36('0x4'));var Mustache=require(_0x0f36('0x5'));var util=require(_0x0f36('0x6'));var path=require('path');var sox=require(_0x0f36('0x7'));var csv=require(_0x0f36('0x8'));var ejs=require(_0x0f36('0x9'));var fs=require('fs');var fs_extra=require(_0x0f36('0xa'));var _=require(_0x0f36('0xb'));var squel=require(_0x0f36('0xc'));var crypto=require(_0x0f36('0xd'));var jsforce=require(_0x0f36('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x0f36('0x8'));var querystring=require(_0x0f36('0xf'));var Papa=require(_0x0f36('0x10'));var Redis=require(_0x0f36('0x11'));var authService=require(_0x0f36('0x12'));var qs=require(_0x0f36('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0f36('0x14'));var logger=require(_0x0f36('0x15'))(_0x0f36('0x16'));var utils=require('../../config/utils');var config=require(_0x0f36('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0x0f36('0x18'));function respondWithStatusCode(_0xea1040,_0x4e30cc){_0x4e30cc=_0x4e30cc||0xcc;return function(_0x1e6cda){if(_0x1e6cda){return _0xea1040[_0x0f36('0x19')](_0x4e30cc);}return _0xea1040[_0x0f36('0x1a')](_0x4e30cc)[_0x0f36('0x1b')]();};}function respondWithResult(_0x5dee19,_0x1a06cc){_0x1a06cc=_0x1a06cc||0xc8;return function(_0x5e85c6){if(_0x5e85c6){return _0x5dee19[_0x0f36('0x1a')](_0x1a06cc)[_0x0f36('0x1c')](_0x5e85c6);}};}function respondWithFilteredResult(_0x420baf,_0x38e64a){return function(_0x167825){if(_0x167825){var _0x41a800=typeof _0x38e64a[_0x0f36('0x1d')]==='undefined'&&typeof _0x38e64a['limit']===_0x0f36('0x1e');var _0x3cbe2b=_0x167825['count'];var _0x592029=_0x41a800?0x0:_0x38e64a[_0x0f36('0x1d')];var _0xe76509=_0x41a800?_0x167825['count']:_0x38e64a[_0x0f36('0x1d')]+_0x38e64a[_0x0f36('0x1f')];var _0x5255df;if(_0xe76509>=_0x3cbe2b){_0xe76509=_0x3cbe2b;_0x5255df=0xc8;}else{_0x5255df=0xce;}_0x420baf[_0x0f36('0x1a')](_0x5255df);return _0x420baf['set']('Content-Range',_0x592029+'-'+_0xe76509+'/'+_0x3cbe2b)[_0x0f36('0x1c')](_0x167825);}return null;};}function patchUpdates(_0x1b365a){return function(_0x47cfe8){try{jsonpatch['apply'](_0x47cfe8,_0x1b365a,!![]);}catch(_0x20968f){return BPromise[_0x0f36('0x20')](_0x20968f);}return _0x47cfe8['save']();};}function saveUpdates(_0x249b7a,_0x567814){return function(_0x1f5692){if(_0x1f5692){return _0x1f5692['update'](_0x249b7a)[_0x0f36('0x21')](function(_0x21837e){return _0x21837e;});}return null;};}function removeEntity(_0x15722f,_0x552d90){return function(_0x44c08d){if(_0x44c08d){return _0x44c08d[_0x0f36('0x22')]()[_0x0f36('0x21')](function(){_0x15722f['status'](0xcc)[_0x0f36('0x1b')]();});}};}function handleEntityNotFound(_0x23050c,_0x264639){return function(_0x2357cc){if(!_0x2357cc){_0x23050c['sendStatus'](0x194);}return _0x2357cc;};}function handleError(_0x20c2e7,_0x5aaa73){_0x5aaa73=_0x5aaa73||0x1f4;return function(_0x2563c9){logger['error'](_0x2563c9[_0x0f36('0x23')]);if(_0x2563c9[_0x0f36('0x24')]){delete _0x2563c9[_0x0f36('0x24')];}_0x20c2e7[_0x0f36('0x1a')](_0x5aaa73)['send'](_0x2563c9);};}exports[_0x0f36('0x25')]=function(_0x597c6c,_0x1eacbb){var _0x438e29={},_0xc7772d={},_0xb6d1d7={'count':0x0,'rows':[]};var _0xec35f0=_['map'](db[_0x0f36('0x26')][_0x0f36('0x27')],function(_0x43974a){return{'name':_0x43974a[_0x0f36('0x28')],'type':_0x43974a[_0x0f36('0x29')]['key']};});_0xc7772d['model']=_[_0x0f36('0x2a')](_0xec35f0,_0x0f36('0x24'));_0xc7772d[_0x0f36('0x2b')]=_[_0x0f36('0x2c')](_0x597c6c[_0x0f36('0x2b')]);_0xc7772d['filters']=_[_0x0f36('0x2d')](_0xc7772d['model'],_0xc7772d[_0x0f36('0x2b')]);_0x438e29['attributes']=_[_0x0f36('0x2d')](_0xc7772d['model'],qs[_0x0f36('0x2e')](_0x597c6c[_0x0f36('0x2b')][_0x0f36('0x2e')]));_0x438e29[_0x0f36('0x2f')]=_0x438e29[_0x0f36('0x2f')][_0x0f36('0x30')]?_0x438e29[_0x0f36('0x2f')]:_0xc7772d[_0x0f36('0x31')];if(!_0x597c6c[_0x0f36('0x2b')][_0x0f36('0x32')](_0x0f36('0x33'))){_0x438e29[_0x0f36('0x1f')]=qs[_0x0f36('0x1f')](_0x597c6c[_0x0f36('0x2b')][_0x0f36('0x1f')]);_0x438e29[_0x0f36('0x1d')]=qs['offset'](_0x597c6c[_0x0f36('0x2b')]['offset']);}_0x438e29[_0x0f36('0x34')]=qs[_0x0f36('0x35')](_0x597c6c['query'][_0x0f36('0x35')]);_0x438e29[_0x0f36('0x36')]=qs['filters'](_[_0x0f36('0x37')](_0x597c6c[_0x0f36('0x2b')],_0xc7772d[_0x0f36('0x38')]),_0xec35f0);if(_0x597c6c['query']['filter']){_0x438e29[_0x0f36('0x36')]=_[_0x0f36('0x39')](_0x438e29[_0x0f36('0x36')],{'$or':_[_0x0f36('0x2a')](_0xec35f0,function(_0x169b1e){if(_0x169b1e['type']!==_0x0f36('0x3a')){var _0x5bc223={};_0x5bc223[_0x169b1e['name']]={'$like':'%'+_0x597c6c[_0x0f36('0x2b')]['filter']+'%'};return _0x5bc223;}})});}_0x438e29=_[_0x0f36('0x39')]({},_0x438e29,_0x597c6c[_0x0f36('0x3b')]);var _0x500412={'where':_0x438e29['where']};return db['SalesforceAccount'][_0x0f36('0x3c')](_0x500412)[_0x0f36('0x21')](function(_0x952cd1){_0xb6d1d7[_0x0f36('0x3c')]=_0x952cd1;if(_0x597c6c[_0x0f36('0x2b')][_0x0f36('0x3d')]){_0x438e29[_0x0f36('0x3e')]=[{'all':!![]}];}return db[_0x0f36('0x26')]['findAll'](_0x438e29);})[_0x0f36('0x21')](function(_0x474752){_0xb6d1d7['rows']=_0x474752;return _0xb6d1d7;})[_0x0f36('0x21')](respondWithFilteredResult(_0x1eacbb,_0x438e29))[_0x0f36('0x3f')](handleError(_0x1eacbb,null));};exports['show']=function(_0xfe43ce,_0x29edae){var _0xfd3189={'raw':![],'where':{'id':_0xfe43ce[_0x0f36('0x40')]['id']}},_0x53acf6={};_0x53acf6[_0x0f36('0x31')]=_['keys'](db[_0x0f36('0x26')][_0x0f36('0x27')]);_0x53acf6[_0x0f36('0x2b')]=_[_0x0f36('0x2c')](_0xfe43ce[_0x0f36('0x2b')]);_0x53acf6['filters']=_['intersection'](_0x53acf6['model'],_0x53acf6['query']);_0xfd3189[_0x0f36('0x2f')]=_[_0x0f36('0x2d')](_0x53acf6['model'],qs[_0x0f36('0x2e')](_0xfe43ce[_0x0f36('0x2b')][_0x0f36('0x2e')]));_0xfd3189['attributes']=_0xfd3189['attributes'][_0x0f36('0x30')]?_0xfd3189[_0x0f36('0x2f')]:_0x53acf6['model'];if(_0xfe43ce[_0x0f36('0x2b')]['includeAll']){_0xfd3189[_0x0f36('0x3e')]=[{'all':!![]}];}_0xfd3189=_[_0x0f36('0x39')]({},_0xfd3189,_0xfe43ce[_0x0f36('0x3b')]);return db['SalesforceAccount']['find'](_0xfd3189)[_0x0f36('0x21')](handleEntityNotFound(_0x29edae,null))[_0x0f36('0x21')](respondWithResult(_0x29edae,null))[_0x0f36('0x3f')](handleError(_0x29edae,null));};exports['create']=function(_0x4ee09c,_0x2895c0){return db[_0x0f36('0x26')][_0x0f36('0x41')](_0x4ee09c[_0x0f36('0x42')],{})['then'](respondWithResult(_0x2895c0,0xc9))[_0x0f36('0x3f')](handleError(_0x2895c0,null));};exports[_0x0f36('0x43')]=function(_0x11e8e1,_0x19cfd5){if(_0x11e8e1[_0x0f36('0x42')]['id']){delete _0x11e8e1[_0x0f36('0x42')]['id'];}return db[_0x0f36('0x26')]['find']({'where':{'id':_0x11e8e1[_0x0f36('0x40')]['id']}})[_0x0f36('0x21')](handleEntityNotFound(_0x19cfd5,null))[_0x0f36('0x21')](saveUpdates(_0x11e8e1[_0x0f36('0x42')],null))[_0x0f36('0x21')](respondWithResult(_0x19cfd5,null))[_0x0f36('0x3f')](handleError(_0x19cfd5,null));};exports[_0x0f36('0x22')]=function(_0x2a6974,_0x51ce28){return db[_0x0f36('0x26')]['find']({'where':{'id':_0x2a6974[_0x0f36('0x40')]['id']}})[_0x0f36('0x21')](handleEntityNotFound(_0x51ce28,null))[_0x0f36('0x21')](removeEntity(_0x51ce28,null))[_0x0f36('0x3f')](handleError(_0x51ce28,null));};exports[_0x0f36('0x44')]=function(_0x259812,_0x5a796f,_0x45f277){var _0x522d47={};var _0x5ca148={};var _0x4c1866;var _0x270104;return db['SalesforceAccount']['findOne']({'where':{'id':_0x259812[_0x0f36('0x40')]['id']}})[_0x0f36('0x21')](handleEntityNotFound(_0x5a796f,null))[_0x0f36('0x21')](function(_0x2a5217){if(_0x2a5217){_0x4c1866=_0x2a5217;_0x5ca148[_0x0f36('0x31')]=_[_0x0f36('0x2c')](db['SalesforceConfiguration']['rawAttributes']);_0x5ca148['query']=_[_0x0f36('0x2c')](_0x259812[_0x0f36('0x2b')]);_0x5ca148[_0x0f36('0x38')]=_[_0x0f36('0x2d')](_0x5ca148[_0x0f36('0x31')],_0x5ca148[_0x0f36('0x2b')]);_0x522d47[_0x0f36('0x2f')]=_[_0x0f36('0x2d')](_0x5ca148[_0x0f36('0x31')],qs['fields'](_0x259812[_0x0f36('0x2b')][_0x0f36('0x2e')]));_0x522d47['attributes']=_0x522d47[_0x0f36('0x2f')][_0x0f36('0x30')]?_0x522d47[_0x0f36('0x2f')]:_0x5ca148[_0x0f36('0x31')];_0x522d47[_0x0f36('0x34')]=qs[_0x0f36('0x35')](_0x259812[_0x0f36('0x2b')]['sort']);_0x522d47['where']=qs[_0x0f36('0x38')](_[_0x0f36('0x37')](_0x259812[_0x0f36('0x2b')],_0x5ca148['filters']));if(_0x259812[_0x0f36('0x2b')][_0x0f36('0x45')]){_0x522d47[_0x0f36('0x36')]=_['merge'](_0x522d47[_0x0f36('0x36')],{'$or':_[_0x0f36('0x2a')](_0x522d47[_0x0f36('0x2f')],function(_0x583b3a){var _0x1a6ac4={};_0x1a6ac4[_0x583b3a]={'$like':'%'+_0x259812[_0x0f36('0x2b')][_0x0f36('0x45')]+'%'};return _0x1a6ac4;})});}_0x522d47=_[_0x0f36('0x39')]({},_0x522d47,_0x259812[_0x0f36('0x3b')]);return _0x4c1866[_0x0f36('0x44')](_0x522d47);}})['then'](function(_0x20f2a3){if(_0x20f2a3){_0x270104=_0x20f2a3[_0x0f36('0x30')];if(!_0x259812['query'][_0x0f36('0x32')](_0x0f36('0x33'))){_0x522d47[_0x0f36('0x1f')]=qs[_0x0f36('0x1f')](_0x259812[_0x0f36('0x2b')][_0x0f36('0x1f')]);_0x522d47[_0x0f36('0x1d')]=qs[_0x0f36('0x1d')](_0x259812[_0x0f36('0x2b')][_0x0f36('0x1d')]);}return _0x4c1866[_0x0f36('0x44')](_0x522d47);}})[_0x0f36('0x21')](function(_0x50d7e3){if(_0x50d7e3){return _0x50d7e3?{'count':_0x270104,'rows':_0x50d7e3}:null;}})['then'](respondWithResult(_0x5a796f,null))[_0x0f36('0x3f')](handleError(_0x5a796f,null));};exports[_0x0f36('0x46')]=function(_0x5e4ea3,_0x6899fa,_0x64c7fa){if(_0x5e4ea3[_0x0f36('0x42')]['id']){delete _0x5e4ea3[_0x0f36('0x42')]['id'];}return db['SalesforceAccount'][_0x0f36('0x47')]({'where':{'id':_0x5e4ea3[_0x0f36('0x40')]['id']}})[_0x0f36('0x21')](handleEntityNotFound(_0x6899fa,null))[_0x0f36('0x21')](function(_0x13ed60){if(_0x13ed60){_0x5e4ea3[_0x0f36('0x42')][_0x0f36('0x48')]=_0x13ed60['id'];_0x5e4ea3[_0x0f36('0x42')][_0x0f36('0x49')]=integrations['getSubjects'](_0x5e4ea3[_0x0f36('0x42')][_0x0f36('0x4a')],_0x5e4ea3[_0x0f36('0x42')][_0x0f36('0x29')]);_0x5e4ea3[_0x0f36('0x42')]['Descriptions']=integrations[_0x0f36('0x4b')](_0x5e4ea3[_0x0f36('0x42')]['channel'],_0x5e4ea3['body'][_0x0f36('0x29')]);return db[_0x0f36('0x4c')]['create'](_0x5e4ea3[_0x0f36('0x42')],{'include':[{'model':db[_0x0f36('0x4d')],'as':_0x0f36('0x49')},{'model':db[_0x0f36('0x4d')],'as':_0x0f36('0x4e')}]});}return null;})[_0x0f36('0x21')](respondWithResult(_0x6899fa,null))['catch'](handleError(_0x6899fa,null));};exports[_0x0f36('0x4f')]=function(_0x5dd026,_0x4c0341,_0x373596){var _0x1e7982;var _0x48d4c8='';var _0x260831=_0x0f36('0x50');return db[_0x0f36('0x26')][_0x0f36('0x47')]({'where':{'id':_0x5dd026[_0x0f36('0x40')]['id']},'attributes':['id',_0x0f36('0x51'),'clientId','clientSecret',_0x0f36('0x52'),_0x0f36('0x53'),_0x0f36('0x54')]})['then'](handleEntityNotFound(_0x4c0341,null))[_0x0f36('0x21')](function(_0x136f7a){if(_0x136f7a){_0x48d4c8=_0x136f7a['remoteUri'];var _0x21445a=_0x48d4c8[_0x0f36('0x55')](-0x1);if(_0x21445a==='/'){_0x48d4c8=_0x48d4c8[_0x0f36('0x56')](0x0,_0x48d4c8[_0x0f36('0x57')](_0x21445a));}_0x1e7982=new jsforce[(_0x0f36('0x58'))]({'oauth2':{'loginUrl':_0x48d4c8,'clientId':_0x136f7a['clientId'],'clientSecret':_0x136f7a[_0x0f36('0x59')]}});return _0x1e7982[_0x0f36('0x5a')](_0x136f7a[_0x0f36('0x52')],_0x136f7a[_0x0f36('0x53')][_0x0f36('0x5b')](_0x136f7a[_0x0f36('0x54')]));}})['then'](function(_0x287d55){if(_0x287d55){if(!_['isNil'](_0x5dd026['query'][_0x0f36('0x5c')])){_0x260831=_0x5dd026[_0x0f36('0x2b')][_0x0f36('0x5c')];}return _0x1e7982['sobject'](_0x260831)['describe']();}})[_0x0f36('0x21')](function(_0x2f98b4){var _0x11ce27=['OwnerId',_0x0f36('0x5d'),_0x0f36('0x5e'),'IsRecurrence',_0x0f36('0x5f'),_0x0f36('0x60')];var _0x1b34bc=[_0x0f36('0x61'),_0x0f36('0x62'),'picklist',_0x0f36('0x63'),_0x0f36('0x64'),'textarea',_0x0f36('0x65')];if(_0x2f98b4){_[_0x0f36('0x66')](_0x2f98b4[_0x0f36('0x2e')],function(_0xff585a){return _0x11ce27[_0x0f36('0x67')](_0xff585a[_0x0f36('0x24')])||!_0x1b34bc['includes'](_0xff585a[_0x0f36('0x29')]);});return{'count':_0x2f98b4[_0x0f36('0x2e')][_0x0f36('0x30')],'rows':_[_0x0f36('0x2a')](_0x2f98b4[_0x0f36('0x2e')],function(_0x4901d5){return{'id':_0x4901d5[_0x0f36('0x24')],'name':_0x4901d5[_0x0f36('0x68')],'custom':_0x4901d5[_0x0f36('0x69')],'options':_0x4901d5[_0x0f36('0x6a')]['length']>0x0?_[_0x0f36('0x2a')](_0x4901d5[_0x0f36('0x6a')],function(_0x2a5e05){return{'name':_0x2a5e05[_0x0f36('0x68')],'value':_0x2a5e05[_0x0f36('0x6b')]};}):_0x4901d5[_0x0f36('0x29')]==_0x0f36('0x63')?[{'name':_0x0f36('0x6c'),'value':_0x0f36('0x6d')},{'name':_0x0f36('0x6e'),'value':_0x0f36('0x6f')}]:[]};})};}})[_0x0f36('0x21')](respondWithResult(_0x4c0341,null))[_0x0f36('0x3f')](function(_0x5f572c){var _0x5dfe2a=_0x5dd026[_0x0f36('0x2b')]['test']?0x1f4:_0x5f572c[_0x0f36('0x70')]||0x1f4;logger[_0x0f36('0x71')](_0x0f36('0x72'),_0x0f36('0x4f'),_0x5dfe2a,JSON[_0x0f36('0x73')](_0x5f572c));delete _0x5f572c[_0x0f36('0x24')];if(_0x5dfe2a===0x191){_0x5dfe2a=0x190;}_0x4c0341[_0x0f36('0x1a')](_0x5dfe2a)[_0x0f36('0x74')](_0x5dd026['query'][_0x0f36('0x75')]?{'message':_0x0f36('0x76'),'statusCode':_0x5f572c[_0x0f36('0x70')]}:_0x5f572c);});};
\ No newline at end of file
+var _0xeb49=['remoteUri','clientId','clientSecret','username','password','securityToken','slice','substring','lastIndexOf','Connection','concat','isNil','ticketType','sobject','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','int','boolean','email','textarea','remove','includes','label','custom','picklistValues','value','True','true','False','false','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','end','offset','undefined','count','status','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','map','SalesforceAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','sort','where','pick','merge','VIRTUAL','filter','options','include','rows','catch','show','params','includeAll','find','create','body','getConfigurations','findOne','SalesforceConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','SalesforceField','Descriptions','getFields','Task'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xeb49,0x122));var _0x9eb4=function(_0x5877c2,_0x2092c2){_0x5877c2=_0x5877c2-0x0;var _0x33fe6e=_0xeb49[_0x5877c2];return _0x33fe6e;};'use strict';var emlformat=require(_0x9eb4('0x0'));var rimraf=require(_0x9eb4('0x1'));var zipdir=require(_0x9eb4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x9eb4('0x3'));var Mustache=require('mustache');var util=require(_0x9eb4('0x4'));var path=require('path');var sox=require(_0x9eb4('0x5'));var csv=require(_0x9eb4('0x6'));var ejs=require(_0x9eb4('0x7'));var fs=require('fs');var fs_extra=require(_0x9eb4('0x8'));var _=require(_0x9eb4('0x9'));var squel=require(_0x9eb4('0xa'));var crypto=require('crypto');var jsforce=require(_0x9eb4('0xb'));var deskjs=require(_0x9eb4('0xc'));var toCsv=require(_0x9eb4('0x6'));var querystring=require(_0x9eb4('0xd'));var Papa=require(_0x9eb4('0xe'));var Redis=require('ioredis');var authService=require(_0x9eb4('0xf'));var qs=require(_0x9eb4('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9eb4('0x11'))(_0x9eb4('0x12'));var utils=require(_0x9eb4('0x13'));var config=require(_0x9eb4('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x9eb4('0x15'))['db'];var integrations=require(_0x9eb4('0x16'));function respondWithStatusCode(_0x43e413,_0x3a0cc2){_0x3a0cc2=_0x3a0cc2||0xcc;return function(_0x331089){if(_0x331089){return _0x43e413[_0x9eb4('0x17')](_0x3a0cc2);}return _0x43e413['status'](_0x3a0cc2)[_0x9eb4('0x18')]();};}function respondWithResult(_0x46c1b7,_0x273d49){_0x273d49=_0x273d49||0xc8;return function(_0x33955a){if(_0x33955a){return _0x46c1b7['status'](_0x273d49)['json'](_0x33955a);}};}function respondWithFilteredResult(_0x45bd5b,_0x5358c5){return function(_0x562419){if(_0x562419){var _0x319f79=typeof _0x5358c5[_0x9eb4('0x19')]==='undefined'&&typeof _0x5358c5['limit']===_0x9eb4('0x1a');var _0x4590a6=_0x562419[_0x9eb4('0x1b')];var _0x5c775f=_0x319f79?0x0:_0x5358c5['offset'];var _0x1a9c88=_0x319f79?_0x562419[_0x9eb4('0x1b')]:_0x5358c5[_0x9eb4('0x19')]+_0x5358c5['limit'];var _0x3a1409;if(_0x1a9c88>=_0x4590a6){_0x1a9c88=_0x4590a6;_0x3a1409=0xc8;}else{_0x3a1409=0xce;}_0x45bd5b[_0x9eb4('0x1c')](_0x3a1409);return _0x45bd5b[_0x9eb4('0x1d')](_0x9eb4('0x1e'),_0x5c775f+'-'+_0x1a9c88+'/'+_0x4590a6)[_0x9eb4('0x1f')](_0x562419);}return null;};}function patchUpdates(_0x35f13a){return function(_0x35c236){try{jsonpatch[_0x9eb4('0x20')](_0x35c236,_0x35f13a,!![]);}catch(_0xe92546){return BPromise[_0x9eb4('0x21')](_0xe92546);}return _0x35c236[_0x9eb4('0x22')]();};}function saveUpdates(_0x3f5c98,_0x149a7f){return function(_0x5038de){if(_0x5038de){return _0x5038de[_0x9eb4('0x23')](_0x3f5c98)[_0x9eb4('0x24')](function(_0x4ee094){return _0x4ee094;});}return null;};}function removeEntity(_0x3ad6d7,_0x58ce79){return function(_0x57ee77){if(_0x57ee77){return _0x57ee77[_0x9eb4('0x25')]()['then'](function(){_0x3ad6d7[_0x9eb4('0x1c')](0xcc)[_0x9eb4('0x18')]();});}};}function handleEntityNotFound(_0xd0ced6,_0x4acba0){return function(_0x28f9d0){if(!_0x28f9d0){_0xd0ced6[_0x9eb4('0x17')](0x194);}return _0x28f9d0;};}function handleError(_0x44944b,_0x16049c){_0x16049c=_0x16049c||0x1f4;return function(_0x427c3){logger[_0x9eb4('0x26')](_0x427c3[_0x9eb4('0x27')]);if(_0x427c3[_0x9eb4('0x28')]){delete _0x427c3[_0x9eb4('0x28')];}_0x44944b[_0x9eb4('0x1c')](_0x16049c)[_0x9eb4('0x29')](_0x427c3);};}exports['index']=function(_0x3a0b6a,_0xd277cc){var _0x88c4c1={},_0x2a3e0c={},_0x4f0098={'count':0x0,'rows':[]};var _0x53e664=_[_0x9eb4('0x2a')](db[_0x9eb4('0x2b')][_0x9eb4('0x2c')],function(_0x57d573){return{'name':_0x57d573[_0x9eb4('0x2d')],'type':_0x57d573[_0x9eb4('0x2e')][_0x9eb4('0x2f')]};});_0x2a3e0c[_0x9eb4('0x30')]=_[_0x9eb4('0x2a')](_0x53e664,_0x9eb4('0x28'));_0x2a3e0c[_0x9eb4('0x31')]=_[_0x9eb4('0x32')](_0x3a0b6a[_0x9eb4('0x31')]);_0x2a3e0c[_0x9eb4('0x33')]=_[_0x9eb4('0x34')](_0x2a3e0c[_0x9eb4('0x30')],_0x2a3e0c[_0x9eb4('0x31')]);_0x88c4c1['attributes']=_[_0x9eb4('0x34')](_0x2a3e0c['model'],qs['fields'](_0x3a0b6a['query'][_0x9eb4('0x35')]));_0x88c4c1[_0x9eb4('0x36')]=_0x88c4c1['attributes'][_0x9eb4('0x37')]?_0x88c4c1[_0x9eb4('0x36')]:_0x2a3e0c[_0x9eb4('0x30')];if(!_0x3a0b6a[_0x9eb4('0x31')][_0x9eb4('0x38')](_0x9eb4('0x39'))){_0x88c4c1[_0x9eb4('0x3a')]=qs[_0x9eb4('0x3a')](_0x3a0b6a[_0x9eb4('0x31')]['limit']);_0x88c4c1[_0x9eb4('0x19')]=qs[_0x9eb4('0x19')](_0x3a0b6a[_0x9eb4('0x31')][_0x9eb4('0x19')]);}_0x88c4c1['order']=qs[_0x9eb4('0x3b')](_0x3a0b6a[_0x9eb4('0x31')][_0x9eb4('0x3b')]);_0x88c4c1[_0x9eb4('0x3c')]=qs[_0x9eb4('0x33')](_[_0x9eb4('0x3d')](_0x3a0b6a[_0x9eb4('0x31')],_0x2a3e0c[_0x9eb4('0x33')]),_0x53e664);if(_0x3a0b6a['query']['filter']){_0x88c4c1['where']=_[_0x9eb4('0x3e')](_0x88c4c1[_0x9eb4('0x3c')],{'$or':_[_0x9eb4('0x2a')](_0x53e664,function(_0xee4b18){if(_0xee4b18['type']!==_0x9eb4('0x3f')){var _0xf08302={};_0xf08302[_0xee4b18[_0x9eb4('0x28')]]={'$like':'%'+_0x3a0b6a[_0x9eb4('0x31')][_0x9eb4('0x40')]+'%'};return _0xf08302;}})});}_0x88c4c1=_[_0x9eb4('0x3e')]({},_0x88c4c1,_0x3a0b6a[_0x9eb4('0x41')]);var _0x1dc905={'where':_0x88c4c1[_0x9eb4('0x3c')]};return db['SalesforceAccount'][_0x9eb4('0x1b')](_0x1dc905)['then'](function(_0x3915d4){_0x4f0098[_0x9eb4('0x1b')]=_0x3915d4;if(_0x3a0b6a[_0x9eb4('0x31')]['includeAll']){_0x88c4c1[_0x9eb4('0x42')]=[{'all':!![]}];}return db[_0x9eb4('0x2b')]['findAll'](_0x88c4c1);})[_0x9eb4('0x24')](function(_0x4b474e){_0x4f0098[_0x9eb4('0x43')]=_0x4b474e;return _0x4f0098;})[_0x9eb4('0x24')](respondWithFilteredResult(_0xd277cc,_0x88c4c1))[_0x9eb4('0x44')](handleError(_0xd277cc,null));};exports[_0x9eb4('0x45')]=function(_0x5f2e0e,_0x3999e0){var _0x513c49={'raw':![],'where':{'id':_0x5f2e0e[_0x9eb4('0x46')]['id']}},_0xda3283={};_0xda3283[_0x9eb4('0x30')]=_[_0x9eb4('0x32')](db['SalesforceAccount'][_0x9eb4('0x2c')]);_0xda3283[_0x9eb4('0x31')]=_[_0x9eb4('0x32')](_0x5f2e0e[_0x9eb4('0x31')]);_0xda3283[_0x9eb4('0x33')]=_[_0x9eb4('0x34')](_0xda3283[_0x9eb4('0x30')],_0xda3283['query']);_0x513c49['attributes']=_[_0x9eb4('0x34')](_0xda3283['model'],qs[_0x9eb4('0x35')](_0x5f2e0e[_0x9eb4('0x31')]['fields']));_0x513c49[_0x9eb4('0x36')]=_0x513c49[_0x9eb4('0x36')][_0x9eb4('0x37')]?_0x513c49[_0x9eb4('0x36')]:_0xda3283[_0x9eb4('0x30')];if(_0x5f2e0e[_0x9eb4('0x31')][_0x9eb4('0x47')]){_0x513c49['include']=[{'all':!![]}];}_0x513c49=_[_0x9eb4('0x3e')]({},_0x513c49,_0x5f2e0e[_0x9eb4('0x41')]);return db[_0x9eb4('0x2b')][_0x9eb4('0x48')](_0x513c49)[_0x9eb4('0x24')](handleEntityNotFound(_0x3999e0,null))[_0x9eb4('0x24')](respondWithResult(_0x3999e0,null))[_0x9eb4('0x44')](handleError(_0x3999e0,null));};exports[_0x9eb4('0x49')]=function(_0xafcc46,_0x2ec3c3){return db[_0x9eb4('0x2b')][_0x9eb4('0x49')](_0xafcc46[_0x9eb4('0x4a')],{})['then'](respondWithResult(_0x2ec3c3,0xc9))[_0x9eb4('0x44')](handleError(_0x2ec3c3,null));};exports['update']=function(_0x1fc176,_0x2948f7){if(_0x1fc176[_0x9eb4('0x4a')]['id']){delete _0x1fc176[_0x9eb4('0x4a')]['id'];}return db[_0x9eb4('0x2b')][_0x9eb4('0x48')]({'where':{'id':_0x1fc176[_0x9eb4('0x46')]['id']}})['then'](handleEntityNotFound(_0x2948f7,null))[_0x9eb4('0x24')](saveUpdates(_0x1fc176[_0x9eb4('0x4a')],null))[_0x9eb4('0x24')](respondWithResult(_0x2948f7,null))['catch'](handleError(_0x2948f7,null));};exports[_0x9eb4('0x25')]=function(_0x2c47fb,_0x5435e9){return db[_0x9eb4('0x2b')][_0x9eb4('0x48')]({'where':{'id':_0x2c47fb[_0x9eb4('0x46')]['id']}})['then'](handleEntityNotFound(_0x5435e9,null))['then'](removeEntity(_0x5435e9,null))[_0x9eb4('0x44')](handleError(_0x5435e9,null));};exports[_0x9eb4('0x4b')]=function(_0x356a00,_0x179814,_0x47d9d6){var _0x5c584c={};var _0x6f6572={};var _0x200e51;var _0x39417e;return db[_0x9eb4('0x2b')][_0x9eb4('0x4c')]({'where':{'id':_0x356a00[_0x9eb4('0x46')]['id']}})[_0x9eb4('0x24')](handleEntityNotFound(_0x179814,null))[_0x9eb4('0x24')](function(_0x2adcc2){if(_0x2adcc2){_0x200e51=_0x2adcc2;_0x6f6572['model']=_['keys'](db[_0x9eb4('0x4d')][_0x9eb4('0x2c')]);_0x6f6572[_0x9eb4('0x31')]=_['keys'](_0x356a00[_0x9eb4('0x31')]);_0x6f6572['filters']=_[_0x9eb4('0x34')](_0x6f6572[_0x9eb4('0x30')],_0x6f6572[_0x9eb4('0x31')]);_0x5c584c[_0x9eb4('0x36')]=_[_0x9eb4('0x34')](_0x6f6572[_0x9eb4('0x30')],qs['fields'](_0x356a00['query'][_0x9eb4('0x35')]));_0x5c584c[_0x9eb4('0x36')]=_0x5c584c[_0x9eb4('0x36')][_0x9eb4('0x37')]?_0x5c584c[_0x9eb4('0x36')]:_0x6f6572['model'];_0x5c584c['order']=qs[_0x9eb4('0x3b')](_0x356a00[_0x9eb4('0x31')][_0x9eb4('0x3b')]);_0x5c584c[_0x9eb4('0x3c')]=qs[_0x9eb4('0x33')](_[_0x9eb4('0x3d')](_0x356a00['query'],_0x6f6572[_0x9eb4('0x33')]));if(_0x356a00['query']['filter']){_0x5c584c[_0x9eb4('0x3c')]=_['merge'](_0x5c584c['where'],{'$or':_[_0x9eb4('0x2a')](_0x5c584c[_0x9eb4('0x36')],function(_0x23ed4f){var _0x495578={};_0x495578[_0x23ed4f]={'$like':'%'+_0x356a00[_0x9eb4('0x31')][_0x9eb4('0x40')]+'%'};return _0x495578;})});}_0x5c584c=_[_0x9eb4('0x3e')]({},_0x5c584c,_0x356a00[_0x9eb4('0x41')]);return _0x200e51['getConfigurations'](_0x5c584c);}})[_0x9eb4('0x24')](function(_0x3715fd){if(_0x3715fd){_0x39417e=_0x3715fd[_0x9eb4('0x37')];if(!_0x356a00[_0x9eb4('0x31')][_0x9eb4('0x38')](_0x9eb4('0x39'))){_0x5c584c[_0x9eb4('0x3a')]=qs[_0x9eb4('0x3a')](_0x356a00[_0x9eb4('0x31')]['limit']);_0x5c584c[_0x9eb4('0x19')]=qs[_0x9eb4('0x19')](_0x356a00[_0x9eb4('0x31')][_0x9eb4('0x19')]);}return _0x200e51['getConfigurations'](_0x5c584c);}})[_0x9eb4('0x24')](function(_0x4e93f5){if(_0x4e93f5){return _0x4e93f5?{'count':_0x39417e,'rows':_0x4e93f5}:null;}})[_0x9eb4('0x24')](respondWithResult(_0x179814,null))[_0x9eb4('0x44')](handleError(_0x179814,null));};exports[_0x9eb4('0x4e')]=function(_0x164348,_0x269207,_0x16123e){if(_0x164348[_0x9eb4('0x4a')]['id']){delete _0x164348[_0x9eb4('0x4a')]['id'];}return db[_0x9eb4('0x2b')][_0x9eb4('0x4c')]({'where':{'id':_0x164348[_0x9eb4('0x46')]['id']}})['then'](handleEntityNotFound(_0x269207,null))['then'](function(_0x1524f9){if(_0x1524f9){_0x164348['body'][_0x9eb4('0x4f')]=_0x1524f9['id'];_0x164348[_0x9eb4('0x4a')][_0x9eb4('0x50')]=integrations[_0x9eb4('0x51')](_0x164348[_0x9eb4('0x4a')][_0x9eb4('0x52')],_0x164348[_0x9eb4('0x4a')]['type']);_0x164348['body']['Descriptions']=integrations[_0x9eb4('0x53')](_0x164348['body'][_0x9eb4('0x52')],_0x164348[_0x9eb4('0x4a')][_0x9eb4('0x2e')]);return db[_0x9eb4('0x4d')]['create'](_0x164348[_0x9eb4('0x4a')],{'include':[{'model':db[_0x9eb4('0x54')],'as':_0x9eb4('0x50')},{'model':db[_0x9eb4('0x54')],'as':_0x9eb4('0x55')}]});}return null;})[_0x9eb4('0x24')](respondWithResult(_0x269207,null))[_0x9eb4('0x44')](handleError(_0x269207,null));};exports[_0x9eb4('0x56')]=function(_0x4e4c03,_0x3cd618,_0x5ba8d6){var _0x1d053e;var _0x62484='';var _0x3bbce9=_0x9eb4('0x57');return db[_0x9eb4('0x2b')][_0x9eb4('0x4c')]({'where':{'id':_0x4e4c03[_0x9eb4('0x46')]['id']},'attributes':['id',_0x9eb4('0x58'),_0x9eb4('0x59'),_0x9eb4('0x5a'),_0x9eb4('0x5b'),_0x9eb4('0x5c'),_0x9eb4('0x5d')]})[_0x9eb4('0x24')](handleEntityNotFound(_0x3cd618,null))[_0x9eb4('0x24')](function(_0x50d513){if(_0x50d513){_0x62484=_0x50d513[_0x9eb4('0x58')];var _0x2fb004=_0x62484[_0x9eb4('0x5e')](-0x1);if(_0x2fb004==='/'){_0x62484=_0x62484[_0x9eb4('0x5f')](0x0,_0x62484[_0x9eb4('0x60')](_0x2fb004));}_0x1d053e=new jsforce[(_0x9eb4('0x61'))]({'oauth2':{'loginUrl':_0x62484,'clientId':_0x50d513[_0x9eb4('0x59')],'clientSecret':_0x50d513[_0x9eb4('0x5a')]}});return _0x1d053e['login'](_0x50d513['username'],_0x50d513[_0x9eb4('0x5c')][_0x9eb4('0x62')](_0x50d513['securityToken']));}})[_0x9eb4('0x24')](function(_0x3d18db){if(_0x3d18db){if(!_[_0x9eb4('0x63')](_0x4e4c03[_0x9eb4('0x31')][_0x9eb4('0x64')])){_0x3bbce9=_0x4e4c03[_0x9eb4('0x31')][_0x9eb4('0x64')];}return _0x1d053e[_0x9eb4('0x65')](_0x3bbce9)['describe']();}})[_0x9eb4('0x24')](function(_0x30dd84){var _0x2cde43=['OwnerId',_0x9eb4('0x66'),_0x9eb4('0x67'),_0x9eb4('0x68'),_0x9eb4('0x69'),_0x9eb4('0x6a')];var _0x54b40a=['string',_0x9eb4('0x6b'),'picklist',_0x9eb4('0x6c'),_0x9eb4('0x6d'),_0x9eb4('0x6e'),'phone'];if(_0x30dd84){_[_0x9eb4('0x6f')](_0x30dd84[_0x9eb4('0x35')],function(_0x1ccdea){return _0x2cde43[_0x9eb4('0x70')](_0x1ccdea['name'])||!_0x54b40a[_0x9eb4('0x70')](_0x1ccdea['type']);});return{'count':_0x30dd84['fields'][_0x9eb4('0x37')],'rows':_[_0x9eb4('0x2a')](_0x30dd84[_0x9eb4('0x35')],function(_0x5a86e1){return{'id':_0x5a86e1[_0x9eb4('0x28')],'name':_0x5a86e1[_0x9eb4('0x71')],'custom':_0x5a86e1[_0x9eb4('0x72')],'options':_0x5a86e1['picklistValues'][_0x9eb4('0x37')]>0x0?_['map'](_0x5a86e1[_0x9eb4('0x73')],function(_0x516d61){return{'name':_0x516d61['label'],'value':_0x516d61[_0x9eb4('0x74')]};}):_0x5a86e1[_0x9eb4('0x2e')]==_0x9eb4('0x6c')?[{'name':_0x9eb4('0x75'),'value':_0x9eb4('0x76')},{'name':_0x9eb4('0x77'),'value':_0x9eb4('0x78')}]:[]};})};}})[_0x9eb4('0x24')](respondWithResult(_0x3cd618,null))[_0x9eb4('0x44')](function(_0x21de1e){var _0x23b87d=_0x4e4c03[_0x9eb4('0x31')][_0x9eb4('0x79')]?0x1f4:_0x21de1e[_0x9eb4('0x7a')]||0x1f4;logger[_0x9eb4('0x26')](_0x9eb4('0x7b'),'getFields',_0x23b87d,JSON[_0x9eb4('0x7c')](_0x21de1e));delete _0x21de1e[_0x9eb4('0x28')];if(_0x23b87d===0x191){_0x23b87d=0x190;}_0x3cd618[_0x9eb4('0x1c')](_0x23b87d)[_0x9eb4('0x29')](_0x4e4c03[_0x9eb4('0x31')]['test']?{'message':_0x9eb4('0x7d'),'statusCode':_0x21de1e[_0x9eb4('0x7a')]}:_0x21de1e);});};
\ No newline at end of file
index 0a63da8..8855fec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe827=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','int_salesforce_accounts','lodash','util','../../config/logger'];(function(_0x974501,_0x529369){var _0x2cf104=function(_0x489b7c){while(--_0x489b7c){_0x974501['push'](_0x974501['shift']());}};_0x2cf104(++_0x529369);}(_0xe827,0x1dd));var _0x7e82=function(_0x28211f,_0x509af7){_0x28211f=_0x28211f-0x0;var _0x4e4ab7=_0xe827[_0x28211f];return _0x4e4ab7;};'use strict';var _=require(_0x7e82('0x0'));var util=require(_0x7e82('0x1'));var logger=require(_0x7e82('0x2'))('api');var moment=require(_0x7e82('0x3'));var BPromise=require(_0x7e82('0x4'));var rp=require(_0x7e82('0x5'));var fs=require('fs');var path=require(_0x7e82('0x6'));var rimraf=require(_0x7e82('0x7'));var config=require(_0x7e82('0x8'));var attributes=require('./intSalesforceAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0x7e82('0x9')]=function(_0x111fb8,_0x2e3ad6){return _0x111fb8[_0x7e82('0xa')]('SalesforceAccount',attributes,{'tableName':_0x7e82('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x45e4=['define','int_salesforce_accounts','lodash','util','../../config/logger','moment','bluebird','path','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports'];(function(_0x287e36,_0x2e3d86){var _0x476eaa=function(_0x2509a6){while(--_0x2509a6){_0x287e36['push'](_0x287e36['shift']());}};_0x476eaa(++_0x2e3d86);}(_0x45e4,0x18e));var _0x445e=function(_0x2a9942,_0x393e97){_0x2a9942=_0x2a9942-0x0;var _0xe20043=_0x45e4[_0x2a9942];return _0xe20043;};'use strict';var _=require(_0x445e('0x0'));var util=require(_0x445e('0x1'));var logger=require(_0x445e('0x2'))('api');var moment=require(_0x445e('0x3'));var BPromise=require(_0x445e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x445e('0x5'));var rimraf=require('rimraf');var config=require(_0x445e('0x6'));var attributes=require(_0x445e('0x7'));var integrations=require(_0x445e('0x8'));module[_0x445e('0x9')]=function(_0x348bd1,_0x5ba14c){return _0x348bd1[_0x445e('0xa')]('SalesforceAccount',attributes,{'tableName':_0x445e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c9f93f6..d89cadb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x534b=['SalesforceAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','GetSalesforceAccount','SalesforceAccount','findAll','options','attributes','limit','include','model','map','ShowSalesforceAccount','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','SalesforceAccount,\x20%s,\x20%s','debug'];(function(_0xfe0d96,_0x595dd0){var _0x4ffd30=function(_0x4a83d8){while(--_0x4a83d8){_0xfe0d96['push'](_0xfe0d96['shift']());}};_0x4ffd30(++_0x595dd0);}(_0x534b,0xbd));var _0xb534=function(_0x5a4a52,_0x1f7213){_0x5a4a52=_0x5a4a52-0x0;var _0x12d387=_0x534b[_0x5a4a52];return _0x12d387;};'use strict';var _=require(_0xb534('0x0'));var util=require(_0xb534('0x1'));var moment=require('moment');var BPromise=require(_0xb534('0x2'));var rs=require(_0xb534('0x3'));var fs=require('fs');var Redis=require(_0xb534('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xb534('0x5'));var logger=require('../../config/logger')(_0xb534('0x6'));var config=require(_0xb534('0x7'));var jayson=require(_0xb534('0x8'));var client=jayson[_0xb534('0x9')][_0xb534('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x54ea55,_0x23383c,_0x2c0b7f){return new BPromise(function(_0x446a52,_0x4637f6){return client[_0xb534('0xb')](_0x54ea55,_0x2c0b7f)[_0xb534('0xc')](function(_0x43a29e){logger['info'](_0xb534('0xd'),_0x23383c,'request\x20sent');logger[_0xb534('0xe')](_0xb534('0xf'),_0x23383c,_0xb534('0x10'),JSON[_0xb534('0x11')](_0x43a29e));if(_0x43a29e['error']){if(_0x43a29e[_0xb534('0x12')][_0xb534('0x13')]===0x1f4){logger['error'](_0xb534('0xd'),_0x23383c,_0x43a29e[_0xb534('0x12')][_0xb534('0x14')]);return _0x4637f6(_0x43a29e['error'][_0xb534('0x14')]);}logger[_0xb534('0x12')]('SalesforceAccount,\x20%s,\x20%s',_0x23383c,_0x43a29e['error'][_0xb534('0x14')]);return _0x446a52(_0x43a29e[_0xb534('0x12')][_0xb534('0x14')]);}else{logger[_0xb534('0x15')](_0xb534('0xd'),_0x23383c,_0xb534('0x10'));_0x446a52(_0x43a29e[_0xb534('0x16')][_0xb534('0x14')]);}})[_0xb534('0x17')](function(_0x15d352){logger['error'](_0xb534('0xd'),_0x23383c,_0x15d352);_0x4637f6(_0x15d352);});});}exports[_0xb534('0x18')]=function(_0x3c609b){var _0x2f90dc=this;return new Promise(function(_0x15cdff,_0x2f7d36){return db[_0xb534('0x19')][_0xb534('0x1a')]({'raw':_0x3c609b[_0xb534('0x1b')]?_0x3c609b['options']['raw']===undefined?!![]:![]:!![],'where':_0x3c609b[_0xb534('0x1b')]?_0x3c609b[_0xb534('0x1b')]['where']||null:null,'attributes':_0x3c609b[_0xb534('0x1b')]?_0x3c609b['options'][_0xb534('0x1c')]||null:null,'limit':_0x3c609b[_0xb534('0x1b')]?_0x3c609b[_0xb534('0x1b')][_0xb534('0x1d')]||null:null,'include':_0x3c609b[_0xb534('0x1b')]?_0x3c609b[_0xb534('0x1b')][_0xb534('0x1e')]?_['map'](_0x3c609b[_0xb534('0x1b')]['include'],function(_0x1a72da){return{'model':db[_0x1a72da[_0xb534('0x1f')]],'as':_0x1a72da['as'],'attributes':_0x1a72da[_0xb534('0x1c')],'include':_0x1a72da[_0xb534('0x1e')]?_[_0xb534('0x20')](_0x1a72da[_0xb534('0x1e')],function(_0x2a6f23){return{'model':db[_0x2a6f23[_0xb534('0x1f')]],'as':_0x2a6f23['as'],'attributes':_0x2a6f23[_0xb534('0x1c')],'include':_0x2a6f23['include']?_[_0xb534('0x20')](_0x2a6f23[_0xb534('0x1e')],function(_0x79f9e1){return{'model':db[_0x79f9e1['model']],'as':_0x79f9e1['as'],'attributes':_0x79f9e1[_0xb534('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xb534('0xc')](function(_0x3ee0fa){logger[_0xb534('0x15')](_0xb534('0x18'),_0x3c609b);logger[_0xb534('0xe')](_0xb534('0x18'),_0x3c609b,JSON['stringify'](_0x3ee0fa));_0x15cdff(_0x3ee0fa);})[_0xb534('0x17')](function(_0x285ee6){logger[_0xb534('0x12')](_0xb534('0x18'),_0x285ee6[_0xb534('0x14')],_0x3c609b);_0x2f7d36(_0x2f90dc[_0xb534('0x12')](0x1f4,_0x285ee6[_0xb534('0x14')]));});});};exports[_0xb534('0x21')]=function(_0xf1a00a){var _0x39f8e1=this;return new Promise(function(_0x5dc9c8,_0x16b55d){return db[_0xb534('0x19')]['find']({'raw':_0xf1a00a[_0xb534('0x1b')]?_0xf1a00a[_0xb534('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0xf1a00a['options']?_0xf1a00a[_0xb534('0x1b')]['where']||null:null,'attributes':_0xf1a00a['options']?_0xf1a00a[_0xb534('0x1b')][_0xb534('0x1c')]||null:null,'include':_0xf1a00a['options']?_0xf1a00a[_0xb534('0x1b')][_0xb534('0x1e')]?_[_0xb534('0x20')](_0xf1a00a[_0xb534('0x1b')][_0xb534('0x1e')],function(_0x2e546f){return{'model':db[_0x2e546f[_0xb534('0x1f')]],'as':_0x2e546f['as'],'attributes':_0x2e546f[_0xb534('0x1c')],'include':_0x2e546f['include']?_[_0xb534('0x20')](_0x2e546f[_0xb534('0x1e')],function(_0x4f9d0e){return{'model':db[_0x4f9d0e[_0xb534('0x1f')]],'as':_0x4f9d0e['as'],'attributes':_0x4f9d0e[_0xb534('0x1c')],'include':_0x4f9d0e[_0xb534('0x1e')]?_[_0xb534('0x20')](_0x4f9d0e[_0xb534('0x1e')],function(_0x5c3cb5){return{'model':db[_0x5c3cb5[_0xb534('0x1f')]],'as':_0x5c3cb5['as'],'attributes':_0x5c3cb5[_0xb534('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xb534('0xc')](function(_0x1b5e68){logger[_0xb534('0x15')](_0xb534('0x21'),_0xf1a00a);logger[_0xb534('0xe')](_0xb534('0x21'),_0xf1a00a,JSON[_0xb534('0x11')](_0x1b5e68));_0x5dc9c8(_0x1b5e68);})[_0xb534('0x17')](function(_0x503564){logger[_0xb534('0x12')](_0xb534('0x21'),_0x503564[_0xb534('0x14')],_0xf1a00a);_0x16b55d(_0x39f8e1['error'](0x1f4,_0x503564[_0xb534('0x14')]));});});};
\ No newline at end of file
+var _0x792a=['then','info','SalesforceAccount,\x20%s,\x20%s','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','GetSalesforceAccount','SalesforceAccount','findAll','options','where','attributes','limit','include','map','model','ShowSalesforceAccount','find','raw','lodash','util','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0x792a,0x131));var _0xa792=function(_0x1ea177,_0x58d38c){_0x1ea177=_0x1ea177-0x0;var _0x294c27=_0x792a[_0x1ea177];return _0x294c27;};'use strict';var _=require(_0xa792('0x0'));var util=require(_0xa792('0x1'));var moment=require('moment');var BPromise=require(_0xa792('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa792('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa792('0x4'))(_0xa792('0x5'));var config=require(_0xa792('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xa792('0x7')][_0xa792('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4c3f26,_0xe6df27,_0x10e8df){return new BPromise(function(_0x22eead,_0x479732){return client[_0xa792('0x9')](_0x4c3f26,_0x10e8df)[_0xa792('0xa')](function(_0x52eb2e){logger[_0xa792('0xb')](_0xa792('0xc'),_0xe6df27,'request\x20sent');logger[_0xa792('0xd')](_0xa792('0xe'),_0xe6df27,'request\x20sent',JSON[_0xa792('0xf')](_0x52eb2e));if(_0x52eb2e[_0xa792('0x10')]){if(_0x52eb2e['error'][_0xa792('0x11')]===0x1f4){logger['error']('SalesforceAccount,\x20%s,\x20%s',_0xe6df27,_0x52eb2e[_0xa792('0x10')]['message']);return _0x479732(_0x52eb2e['error'][_0xa792('0x12')]);}logger['error'](_0xa792('0xc'),_0xe6df27,_0x52eb2e[_0xa792('0x10')][_0xa792('0x12')]);return _0x22eead(_0x52eb2e[_0xa792('0x10')][_0xa792('0x12')]);}else{logger['info'](_0xa792('0xc'),_0xe6df27,_0xa792('0x13'));_0x22eead(_0x52eb2e[_0xa792('0x14')][_0xa792('0x12')]);}})[_0xa792('0x15')](function(_0x24ba94){logger[_0xa792('0x10')](_0xa792('0xc'),_0xe6df27,_0x24ba94);_0x479732(_0x24ba94);});});}exports[_0xa792('0x16')]=function(_0x5ab926){var _0x1b2425=this;return new Promise(function(_0x12d0ce,_0xfab809){return db[_0xa792('0x17')][_0xa792('0x18')]({'raw':_0x5ab926[_0xa792('0x19')]?_0x5ab926[_0xa792('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x5ab926[_0xa792('0x19')]?_0x5ab926[_0xa792('0x19')][_0xa792('0x1a')]||null:null,'attributes':_0x5ab926[_0xa792('0x19')]?_0x5ab926[_0xa792('0x19')][_0xa792('0x1b')]||null:null,'limit':_0x5ab926[_0xa792('0x19')]?_0x5ab926[_0xa792('0x19')][_0xa792('0x1c')]||null:null,'include':_0x5ab926['options']?_0x5ab926[_0xa792('0x19')][_0xa792('0x1d')]?_['map'](_0x5ab926['options'][_0xa792('0x1d')],function(_0x46e952){return{'model':db[_0x46e952['model']],'as':_0x46e952['as'],'attributes':_0x46e952[_0xa792('0x1b')],'include':_0x46e952[_0xa792('0x1d')]?_[_0xa792('0x1e')](_0x46e952[_0xa792('0x1d')],function(_0x593d78){return{'model':db[_0x593d78['model']],'as':_0x593d78['as'],'attributes':_0x593d78[_0xa792('0x1b')],'include':_0x593d78[_0xa792('0x1d')]?_[_0xa792('0x1e')](_0x593d78[_0xa792('0x1d')],function(_0x463242){return{'model':db[_0x463242[_0xa792('0x1f')]],'as':_0x463242['as'],'attributes':_0x463242[_0xa792('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xa792('0xa')](function(_0x17f937){logger['info'](_0xa792('0x16'),_0x5ab926);logger[_0xa792('0xd')]('GetSalesforceAccount',_0x5ab926,JSON[_0xa792('0xf')](_0x17f937));_0x12d0ce(_0x17f937);})['catch'](function(_0x494a98){logger[_0xa792('0x10')]('GetSalesforceAccount',_0x494a98[_0xa792('0x12')],_0x5ab926);_0xfab809(_0x1b2425[_0xa792('0x10')](0x1f4,_0x494a98[_0xa792('0x12')]));});});};exports[_0xa792('0x20')]=function(_0x44c770){var _0x798c1c=this;return new Promise(function(_0x3bde25,_0x2a8d33){return db[_0xa792('0x17')][_0xa792('0x21')]({'raw':_0x44c770[_0xa792('0x19')]?_0x44c770[_0xa792('0x19')][_0xa792('0x22')]===undefined?!![]:![]:!![],'where':_0x44c770['options']?_0x44c770[_0xa792('0x19')][_0xa792('0x1a')]||null:null,'attributes':_0x44c770[_0xa792('0x19')]?_0x44c770[_0xa792('0x19')][_0xa792('0x1b')]||null:null,'include':_0x44c770[_0xa792('0x19')]?_0x44c770[_0xa792('0x19')][_0xa792('0x1d')]?_[_0xa792('0x1e')](_0x44c770[_0xa792('0x19')][_0xa792('0x1d')],function(_0x55d803){return{'model':db[_0x55d803[_0xa792('0x1f')]],'as':_0x55d803['as'],'attributes':_0x55d803[_0xa792('0x1b')],'include':_0x55d803[_0xa792('0x1d')]?_['map'](_0x55d803['include'],function(_0x76e462){return{'model':db[_0x76e462[_0xa792('0x1f')]],'as':_0x76e462['as'],'attributes':_0x76e462[_0xa792('0x1b')],'include':_0x76e462['include']?_[_0xa792('0x1e')](_0x76e462['include'],function(_0x43dfe3){return{'model':db[_0x43dfe3[_0xa792('0x1f')]],'as':_0x43dfe3['as'],'attributes':_0x43dfe3['attributes']};}):[]};}):[]};}):[]:[]})[_0xa792('0xa')](function(_0x30e054){logger[_0xa792('0xb')](_0xa792('0x20'),_0x44c770);logger[_0xa792('0xd')](_0xa792('0x20'),_0x44c770,JSON[_0xa792('0xf')](_0x30e054));_0x3bde25(_0x30e054);})[_0xa792('0x15')](function(_0x1dbb9a){logger[_0xa792('0x10')](_0xa792('0x20'),_0x1dbb9a[_0xa792('0x12')],_0x44c770);_0x2a8d33(_0x798c1c[_0xa792('0x10')](0x1f4,_0x1dbb9a[_0xa792('0x12')]));});});};
\ No newline at end of file
index 534016c..450d66d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['getSubjects','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','index','/:id','isAuthenticated','/:id/subjects'];(function(_0x47a226,_0x4b6f7a){var _0x16a00c=function(_0x2c1dce){while(--_0x2c1dce){_0x47a226['push'](_0x47a226['shift']());}};_0x16a00c(++_0x4b6f7a);}(_0x7a54,0x106));var _0x47a5=function(_0x9b812f,_0xa1bce2){_0x9b812f=_0x9b812f-0x0;var _0x15f8cc=_0x7a54[_0x9b812f];return _0x15f8cc;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0x9')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x47a5('0x9')](_0x47a5('0xd'),auth['isAuthenticated'](),controller[_0x47a5('0xe')]);router['get']('/:id/descriptions',auth[_0x47a5('0xc')](),controller[_0x47a5('0xf')]);router[_0x47a5('0x10')]('/',auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);router[_0x47a5('0x12')](_0x47a5('0xb'),auth['isAuthenticated'](),controller[_0x47a5('0x13')]);router[_0x47a5('0x14')](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x15')]);module[_0x47a5('0x16')]=router;
\ No newline at end of file
+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(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x2032,0xd9));var _0x2203=function(_0x3ef7a0,_0x2385ca){_0x3ef7a0=_0x3ef7a0-0x0;var _0x31e692=_0x2032[_0x3ef7a0];return _0x31e692;};'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
index 9dd4eaa..d3d6831 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e99=['account','nothing','sequelize','exports','STRING','ENUM','Case','Task','contact_lead','contact','lead'];(function(_0xa6cc5c,_0x239c99){var _0x44803d=function(_0x515b6e){while(--_0x515b6e){_0xa6cc5c['push'](_0xa6cc5c['shift']());}};_0x44803d(++_0x239c99);}(_0x9e99,0x162));var _0x99e9=function(_0x21090f,_0x5b73cc){_0x21090f=_0x21090f-0x0;var _0x5cbfe7=_0x9e99[_0x21090f];return _0x5cbfe7;};'use strict';var Sequelize=require(_0x99e9('0x0'));module[_0x99e9('0x1')]={'name':{'type':Sequelize[_0x99e9('0x2')]},'description':{'type':Sequelize[_0x99e9('0x2')]},'ticketType':{'type':Sequelize[_0x99e9('0x3')]('Task',_0x99e9('0x4')),'defaultValue':_0x99e9('0x5')},'moduleSearch':{'type':Sequelize[_0x99e9('0x3')](_0x99e9('0x6'),_0x99e9('0x7'),_0x99e9('0x8'),'account_contact_lead',_0x99e9('0x9')),'defaultValue':_0x99e9('0x6')},'moduleCreate':{'type':Sequelize[_0x99e9('0x3')](_0x99e9('0xa'),_0x99e9('0x7'),'lead',_0x99e9('0x9')),'defaultValue':_0x99e9('0x8')},'leadId':{'type':Sequelize[_0x99e9('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0x99e9('0x2')]},'additionalSearchContact':{'type':Sequelize[_0x99e9('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x99e9('0x2')]}};
\ No newline at end of file
+var _0x8689=['ENUM','Task','Case','contact','lead','account_contact_lead','account','contact_lead','nothing','sequelize','exports','STRING'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x8689,0xa5));var _0x9868=function(_0x31da9f,_0x35608e){_0x31da9f=_0x31da9f-0x0;var _0x1f6730=_0x8689[_0x31da9f];return _0x1f6730;};'use strict';var Sequelize=require(_0x9868('0x0'));module[_0x9868('0x1')]={'name':{'type':Sequelize[_0x9868('0x2')]},'description':{'type':Sequelize[_0x9868('0x2')]},'ticketType':{'type':Sequelize[_0x9868('0x3')](_0x9868('0x4'),_0x9868('0x5')),'defaultValue':'Task'},'moduleSearch':{'type':Sequelize['ENUM']('contact_lead',_0x9868('0x6'),_0x9868('0x7'),_0x9868('0x8'),_0x9868('0x9')),'defaultValue':_0x9868('0xa')},'moduleCreate':{'type':Sequelize['ENUM'](_0x9868('0xb'),_0x9868('0x6'),_0x9868('0x7'),_0x9868('0x9')),'defaultValue':_0x9868('0x7')},'leadId':{'type':Sequelize[_0x9868('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0x9868('0x2')]},'additionalSearchContact':{'type':Sequelize[_0x9868('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x9868('0x2')]}};
\ No newline at end of file
index 505ebde..6aee6b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x028a=['zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','error','name','send','index','map','SalesforceConfiguration','rawAttributes','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','VIRTUAL','options','includeAll','include','rows','show','keys','catch','create','body','find','params','destroy','getFields','findOne','pick','filter','getSubjects','SalesforceField','getDescriptions','eml-format','rimraf'];(function(_0x37bd54,_0xcd6035){var _0x5ac029=function(_0x18cd85){while(--_0x18cd85){_0x37bd54['push'](_0x37bd54['shift']());}};_0x5ac029(++_0xcd6035);}(_0x028a,0x1c0));var _0xa028=function(_0x5b3c01,_0x2f5546){_0x5b3c01=_0x5b3c01-0x0;var _0x22f1da=_0x028a[_0x5b3c01];return _0x22f1da;};'use strict';var emlformat=require(_0xa028('0x0'));var rimraf=require(_0xa028('0x1'));var zipdir=require(_0xa028('0x2'));var jsonpatch=require(_0xa028('0x3'));var rp=require(_0xa028('0x4'));var moment=require(_0xa028('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xa028('0x6'));var util=require(_0xa028('0x7'));var path=require('path');var sox=require(_0xa028('0x8'));var csv=require(_0xa028('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa028('0xa'));var _=require(_0xa028('0xb'));var squel=require(_0xa028('0xc'));var crypto=require(_0xa028('0xd'));var jsforce=require(_0xa028('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xa028('0x9'));var querystring=require(_0xa028('0xf'));var Papa=require(_0xa028('0x10'));var Redis=require('ioredis');var authService=require(_0xa028('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa028('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa028('0x13'))(_0xa028('0x14'));var utils=require('../../config/utils');var config=require(_0xa028('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xcb26e,_0x1094d7){_0x1094d7=_0x1094d7||0xcc;return function(_0x4e9444){if(_0x4e9444){return _0xcb26e[_0xa028('0x16')](_0x1094d7);}return _0xcb26e[_0xa028('0x17')](_0x1094d7)[_0xa028('0x18')]();};}function respondWithResult(_0x1dd72f,_0x47d122){_0x47d122=_0x47d122||0xc8;return function(_0x7c9293){if(_0x7c9293){return _0x1dd72f[_0xa028('0x17')](_0x47d122)[_0xa028('0x19')](_0x7c9293);}};}function respondWithFilteredResult(_0x588cce,_0x1904c9){return function(_0x32b6f1){if(_0x32b6f1){var _0xb1db4b=typeof _0x1904c9[_0xa028('0x1a')]===_0xa028('0x1b')&&typeof _0x1904c9[_0xa028('0x1c')]===_0xa028('0x1b');var _0x576465=_0x32b6f1[_0xa028('0x1d')];var _0x14e3ce=_0xb1db4b?0x0:_0x1904c9[_0xa028('0x1a')];var _0x47cd08=_0xb1db4b?_0x32b6f1['count']:_0x1904c9[_0xa028('0x1a')]+_0x1904c9[_0xa028('0x1c')];var _0x45273e;if(_0x47cd08>=_0x576465){_0x47cd08=_0x576465;_0x45273e=0xc8;}else{_0x45273e=0xce;}_0x588cce[_0xa028('0x17')](_0x45273e);return _0x588cce[_0xa028('0x1e')]('Content-Range',_0x14e3ce+'-'+_0x47cd08+'/'+_0x576465)[_0xa028('0x19')](_0x32b6f1);}return null;};}function patchUpdates(_0x412f5c){return function(_0x576686){try{jsonpatch[_0xa028('0x1f')](_0x576686,_0x412f5c,!![]);}catch(_0x89ac6f){return BPromise['reject'](_0x89ac6f);}return _0x576686[_0xa028('0x20')]();};}function saveUpdates(_0x2ea40a,_0x5c52f1){return function(_0x530808){if(_0x530808){return _0x530808[_0xa028('0x21')](_0x2ea40a)['then'](function(_0x13e9f8){return _0x13e9f8;});}return null;};}function removeEntity(_0x3edd0d,_0x7e8dd9){return function(_0x2360e0){if(_0x2360e0){return _0x2360e0['destroy']()[_0xa028('0x22')](function(){_0x3edd0d[_0xa028('0x17')](0xcc)[_0xa028('0x18')]();});}};}function handleEntityNotFound(_0x1bea19,_0x18bd42){return function(_0x5cd3c3){if(!_0x5cd3c3){_0x1bea19[_0xa028('0x16')](0x194);}return _0x5cd3c3;};}function handleError(_0x35f55b,_0x46b2fa){_0x46b2fa=_0x46b2fa||0x1f4;return function(_0x5973a1){logger[_0xa028('0x23')](_0x5973a1['stack']);if(_0x5973a1[_0xa028('0x24')]){delete _0x5973a1[_0xa028('0x24')];}_0x35f55b[_0xa028('0x17')](_0x46b2fa)[_0xa028('0x25')](_0x5973a1);};}exports[_0xa028('0x26')]=function(_0x5cfc6b,_0x320fdd){var _0x344800={},_0x49235f={},_0x5d36d5={'count':0x0,'rows':[]};var _0xcf6593=_[_0xa028('0x27')](db[_0xa028('0x28')][_0xa028('0x29')],function(_0x27c15b){return{'name':_0x27c15b['fieldName'],'type':_0x27c15b['type']['key']};});_0x49235f[_0xa028('0x2a')]=_[_0xa028('0x27')](_0xcf6593,_0xa028('0x24'));_0x49235f[_0xa028('0x2b')]=_['keys'](_0x5cfc6b[_0xa028('0x2b')]);_0x49235f['filters']=_[_0xa028('0x2c')](_0x49235f[_0xa028('0x2a')],_0x49235f[_0xa028('0x2b')]);_0x344800['attributes']=_[_0xa028('0x2c')](_0x49235f['model'],qs[_0xa028('0x2d')](_0x5cfc6b[_0xa028('0x2b')][_0xa028('0x2d')]));_0x344800['attributes']=_0x344800[_0xa028('0x2e')][_0xa028('0x2f')]?_0x344800[_0xa028('0x2e')]:_0x49235f['model'];if(!_0x5cfc6b[_0xa028('0x2b')][_0xa028('0x30')](_0xa028('0x31'))){_0x344800[_0xa028('0x1c')]=qs['limit'](_0x5cfc6b[_0xa028('0x2b')]['limit']);_0x344800['offset']=qs[_0xa028('0x1a')](_0x5cfc6b[_0xa028('0x2b')][_0xa028('0x1a')]);}_0x344800[_0xa028('0x32')]=qs[_0xa028('0x33')](_0x5cfc6b[_0xa028('0x2b')][_0xa028('0x33')]);_0x344800[_0xa028('0x34')]=qs[_0xa028('0x35')](_['pick'](_0x5cfc6b[_0xa028('0x2b')],_0x49235f[_0xa028('0x35')]),_0xcf6593);if(_0x5cfc6b[_0xa028('0x2b')]['filter']){_0x344800[_0xa028('0x34')]=_[_0xa028('0x36')](_0x344800['where'],{'$or':_[_0xa028('0x27')](_0xcf6593,function(_0x448041){if(_0x448041['type']!==_0xa028('0x37')){var _0x18358f={};_0x18358f[_0x448041[_0xa028('0x24')]]={'$like':'%'+_0x5cfc6b['query']['filter']+'%'};return _0x18358f;}})});}_0x344800=_[_0xa028('0x36')]({},_0x344800,_0x5cfc6b[_0xa028('0x38')]);var _0x1e234a={'where':_0x344800[_0xa028('0x34')]};return db[_0xa028('0x28')]['count'](_0x1e234a)[_0xa028('0x22')](function(_0xc9d8c5){_0x5d36d5[_0xa028('0x1d')]=_0xc9d8c5;if(_0x5cfc6b[_0xa028('0x2b')][_0xa028('0x39')]){_0x344800[_0xa028('0x3a')]=[{'all':!![]}];}return db[_0xa028('0x28')]['findAll'](_0x344800);})['then'](function(_0x462104){_0x5d36d5[_0xa028('0x3b')]=_0x462104;return _0x5d36d5;})[_0xa028('0x22')](respondWithFilteredResult(_0x320fdd,_0x344800))['catch'](handleError(_0x320fdd,null));};exports[_0xa028('0x3c')]=function(_0x114e9a,_0xd7e325){var _0x2a16c7={'raw':![],'where':{'id':_0x114e9a['params']['id']}},_0x3dc0ca={};_0x3dc0ca['model']=_['keys'](db[_0xa028('0x28')]['rawAttributes']);_0x3dc0ca[_0xa028('0x2b')]=_[_0xa028('0x3d')](_0x114e9a[_0xa028('0x2b')]);_0x3dc0ca[_0xa028('0x35')]=_[_0xa028('0x2c')](_0x3dc0ca[_0xa028('0x2a')],_0x3dc0ca['query']);_0x2a16c7[_0xa028('0x2e')]=_[_0xa028('0x2c')](_0x3dc0ca['model'],qs['fields'](_0x114e9a['query'][_0xa028('0x2d')]));_0x2a16c7['attributes']=_0x2a16c7['attributes'][_0xa028('0x2f')]?_0x2a16c7[_0xa028('0x2e')]:_0x3dc0ca['model'];if(_0x114e9a[_0xa028('0x2b')][_0xa028('0x39')]){_0x2a16c7[_0xa028('0x3a')]=[{'all':!![]}];}_0x2a16c7=_[_0xa028('0x36')]({},_0x2a16c7,_0x114e9a[_0xa028('0x38')]);return db[_0xa028('0x28')]['find'](_0x2a16c7)[_0xa028('0x22')](handleEntityNotFound(_0xd7e325,null))[_0xa028('0x22')](respondWithResult(_0xd7e325,null))[_0xa028('0x3e')](handleError(_0xd7e325,null));};exports[_0xa028('0x3f')]=function(_0x5c5d60,_0x3576cf){return db[_0xa028('0x28')][_0xa028('0x3f')](_0x5c5d60[_0xa028('0x40')],{})['then'](respondWithResult(_0x3576cf,0xc9))['catch'](handleError(_0x3576cf,null));};exports[_0xa028('0x21')]=function(_0x46fa25,_0x3b2bf1){if(_0x46fa25[_0xa028('0x40')]['id']){delete _0x46fa25[_0xa028('0x40')]['id'];}return db[_0xa028('0x28')][_0xa028('0x41')]({'where':{'id':_0x46fa25[_0xa028('0x42')]['id']}})[_0xa028('0x22')](handleEntityNotFound(_0x3b2bf1,null))[_0xa028('0x22')](saveUpdates(_0x46fa25['body'],null))[_0xa028('0x22')](respondWithResult(_0x3b2bf1,null))[_0xa028('0x3e')](handleError(_0x3b2bf1,null));};exports[_0xa028('0x43')]=function(_0x51c31a,_0x5d3025){return db[_0xa028('0x28')]['find']({'where':{'id':_0x51c31a[_0xa028('0x42')]['id']}})[_0xa028('0x22')](handleEntityNotFound(_0x5d3025,null))[_0xa028('0x22')](removeEntity(_0x5d3025,null))[_0xa028('0x3e')](handleError(_0x5d3025,null));};exports[_0xa028('0x44')]=function(_0x104f81,_0x58079d,_0x25fe32){var _0x3af8d5={};var _0x511a1c={};var _0x40f5bc;var _0x382c9b;return db[_0xa028('0x28')][_0xa028('0x45')]({'where':{'id':_0x104f81[_0xa028('0x42')]['id']}})[_0xa028('0x22')](handleEntityNotFound(_0x58079d,null))['then'](function(_0x2017d0){if(_0x2017d0){_0x40f5bc=_0x2017d0;_0x511a1c[_0xa028('0x2a')]=_['keys'](db['SalesforceField'][_0xa028('0x29')]);_0x511a1c[_0xa028('0x2b')]=_[_0xa028('0x3d')](_0x104f81[_0xa028('0x2b')]);_0x511a1c[_0xa028('0x35')]=_['intersection'](_0x511a1c[_0xa028('0x2a')],_0x511a1c[_0xa028('0x2b')]);_0x3af8d5[_0xa028('0x2e')]=_[_0xa028('0x2c')](_0x511a1c[_0xa028('0x2a')],qs[_0xa028('0x2d')](_0x104f81[_0xa028('0x2b')]['fields']));_0x3af8d5[_0xa028('0x2e')]=_0x3af8d5['attributes'][_0xa028('0x2f')]?_0x3af8d5[_0xa028('0x2e')]:_0x511a1c[_0xa028('0x2a')];_0x3af8d5[_0xa028('0x32')]=qs[_0xa028('0x33')](_0x104f81['query']['sort']);_0x3af8d5[_0xa028('0x34')]=qs[_0xa028('0x35')](_[_0xa028('0x46')](_0x104f81['query'],_0x511a1c[_0xa028('0x35')]));if(_0x104f81[_0xa028('0x2b')][_0xa028('0x47')]){_0x3af8d5[_0xa028('0x34')]=_[_0xa028('0x36')](_0x3af8d5[_0xa028('0x34')],{'$or':_[_0xa028('0x27')](_0x3af8d5[_0xa028('0x2e')],function(_0x1112ca){var _0x9f51b4={};_0x9f51b4[_0x1112ca]={'$like':'%'+_0x104f81[_0xa028('0x2b')][_0xa028('0x47')]+'%'};return _0x9f51b4;})});}_0x3af8d5=_[_0xa028('0x36')]({},_0x3af8d5,_0x104f81[_0xa028('0x38')]);return _0x40f5bc[_0xa028('0x44')](_0x3af8d5);}})[_0xa028('0x22')](function(_0x3dce6a){if(_0x3dce6a){_0x382c9b=_0x3dce6a['length'];if(!_0x104f81[_0xa028('0x2b')][_0xa028('0x30')](_0xa028('0x31'))){_0x3af8d5[_0xa028('0x1c')]=qs[_0xa028('0x1c')](_0x104f81['query'][_0xa028('0x1c')]);_0x3af8d5['offset']=qs[_0xa028('0x1a')](_0x104f81[_0xa028('0x2b')][_0xa028('0x1a')]);}return _0x40f5bc[_0xa028('0x44')](_0x3af8d5);}})[_0xa028('0x22')](function(_0x2eb995){if(_0x2eb995){return _0x2eb995?{'count':_0x382c9b,'rows':_0x2eb995}:null;}})[_0xa028('0x22')](respondWithResult(_0x58079d,null))[_0xa028('0x3e')](handleError(_0x58079d,null));};exports[_0xa028('0x48')]=function(_0x32d671,_0x3dd78c,_0x204570){var _0x5e0512={};var _0x53d265={};var _0x57e555;var _0x4b5b18;return db['SalesforceConfiguration'][_0xa028('0x45')]({'where':{'id':_0x32d671[_0xa028('0x42')]['id']}})[_0xa028('0x22')](handleEntityNotFound(_0x3dd78c,null))['then'](function(_0x25e4aa){if(_0x25e4aa){_0x57e555=_0x25e4aa;_0x53d265['model']=_['keys'](db[_0xa028('0x49')][_0xa028('0x29')]);_0x53d265['query']=_['keys'](_0x32d671[_0xa028('0x2b')]);_0x53d265['filters']=_[_0xa028('0x2c')](_0x53d265[_0xa028('0x2a')],_0x53d265[_0xa028('0x2b')]);_0x5e0512[_0xa028('0x2e')]=_['intersection'](_0x53d265[_0xa028('0x2a')],qs[_0xa028('0x2d')](_0x32d671['query'][_0xa028('0x2d')]));_0x5e0512[_0xa028('0x2e')]=_0x5e0512[_0xa028('0x2e')][_0xa028('0x2f')]?_0x5e0512['attributes']:_0x53d265[_0xa028('0x2a')];_0x5e0512[_0xa028('0x32')]=qs['sort'](_0x32d671[_0xa028('0x2b')]['sort']);_0x5e0512[_0xa028('0x34')]=qs[_0xa028('0x35')](_['pick'](_0x32d671[_0xa028('0x2b')],_0x53d265['filters']));if(_0x32d671[_0xa028('0x2b')][_0xa028('0x47')]){_0x5e0512[_0xa028('0x34')]=_[_0xa028('0x36')](_0x5e0512[_0xa028('0x34')],{'$or':_[_0xa028('0x27')](_0x5e0512[_0xa028('0x2e')],function(_0x3fe291){var _0x5c982e={};_0x5c982e[_0x3fe291]={'$like':'%'+_0x32d671['query'][_0xa028('0x47')]+'%'};return _0x5c982e;})});}_0x5e0512=_[_0xa028('0x36')]({},_0x5e0512,_0x32d671[_0xa028('0x38')]);return _0x57e555['getSubjects'](_0x5e0512);}})[_0xa028('0x22')](function(_0x2968ee){if(_0x2968ee){_0x4b5b18=_0x2968ee[_0xa028('0x2f')];if(!_0x32d671['query'][_0xa028('0x30')]('nolimit')){_0x5e0512[_0xa028('0x1c')]=qs[_0xa028('0x1c')](_0x32d671[_0xa028('0x2b')][_0xa028('0x1c')]);_0x5e0512['offset']=qs['offset'](_0x32d671[_0xa028('0x2b')]['offset']);}return _0x57e555[_0xa028('0x48')](_0x5e0512);}})['then'](function(_0x54139b){if(_0x54139b){return _0x54139b?{'count':_0x4b5b18,'rows':_0x54139b}:null;}})[_0xa028('0x22')](respondWithResult(_0x3dd78c,null))[_0xa028('0x3e')](handleError(_0x3dd78c,null));};exports['getDescriptions']=function(_0x2f3d7f,_0x1c6cdf,_0x5a3c1d){var _0x2c2fd5={};var _0x510180={};var _0x1a0b35;var _0x1b0db0;return db['SalesforceConfiguration'][_0xa028('0x45')]({'where':{'id':_0x2f3d7f[_0xa028('0x42')]['id']}})[_0xa028('0x22')](handleEntityNotFound(_0x1c6cdf,null))[_0xa028('0x22')](function(_0x662b5a){if(_0x662b5a){_0x1a0b35=_0x662b5a;_0x510180[_0xa028('0x2a')]=_['keys'](db[_0xa028('0x49')][_0xa028('0x29')]);_0x510180[_0xa028('0x2b')]=_[_0xa028('0x3d')](_0x2f3d7f[_0xa028('0x2b')]);_0x510180[_0xa028('0x35')]=_[_0xa028('0x2c')](_0x510180[_0xa028('0x2a')],_0x510180['query']);_0x2c2fd5[_0xa028('0x2e')]=_[_0xa028('0x2c')](_0x510180[_0xa028('0x2a')],qs[_0xa028('0x2d')](_0x2f3d7f[_0xa028('0x2b')][_0xa028('0x2d')]));_0x2c2fd5[_0xa028('0x2e')]=_0x2c2fd5[_0xa028('0x2e')][_0xa028('0x2f')]?_0x2c2fd5[_0xa028('0x2e')]:_0x510180[_0xa028('0x2a')];_0x2c2fd5['order']=qs['sort'](_0x2f3d7f[_0xa028('0x2b')][_0xa028('0x33')]);_0x2c2fd5[_0xa028('0x34')]=qs[_0xa028('0x35')](_[_0xa028('0x46')](_0x2f3d7f['query'],_0x510180[_0xa028('0x35')]));if(_0x2f3d7f[_0xa028('0x2b')][_0xa028('0x47')]){_0x2c2fd5[_0xa028('0x34')]=_[_0xa028('0x36')](_0x2c2fd5['where'],{'$or':_[_0xa028('0x27')](_0x2c2fd5[_0xa028('0x2e')],function(_0x43147e){var _0x4b4112={};_0x4b4112[_0x43147e]={'$like':'%'+_0x2f3d7f[_0xa028('0x2b')][_0xa028('0x47')]+'%'};return _0x4b4112;})});}_0x2c2fd5=_[_0xa028('0x36')]({},_0x2c2fd5,_0x2f3d7f[_0xa028('0x38')]);return _0x1a0b35[_0xa028('0x4a')](_0x2c2fd5);}})[_0xa028('0x22')](function(_0x4e08e9){if(_0x4e08e9){_0x1b0db0=_0x4e08e9['length'];if(!_0x2f3d7f['query']['hasOwnProperty'](_0xa028('0x31'))){_0x2c2fd5[_0xa028('0x1c')]=qs[_0xa028('0x1c')](_0x2f3d7f['query'][_0xa028('0x1c')]);_0x2c2fd5[_0xa028('0x1a')]=qs[_0xa028('0x1a')](_0x2f3d7f['query'][_0xa028('0x1a')]);}return _0x1a0b35[_0xa028('0x4a')](_0x2c2fd5);}})[_0xa028('0x22')](function(_0x4a160d){if(_0x4a160d){return _0x4a160d?{'count':_0x1b0db0,'rows':_0x4a160d}:null;}})[_0xa028('0x22')](respondWithResult(_0x1c6cdf,null))[_0xa028('0x3e')](handleError(_0x1c6cdf,null));};
\ No newline at end of file
+var _0xcb79=['jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','count','offset','limit','update','then','destroy','stack','name','index','map','SalesforceConfiguration','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','merge','options','includeAll','include','rows','catch','show','params','rawAttributes','find','create','body','getFields','findOne','SalesforceField','pick','filter','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel'];(function(_0x62edef,_0x38b086){var _0x17fabe=function(_0x47d103){while(--_0x47d103){_0x62edef['push'](_0x62edef['shift']());}};_0x17fabe(++_0x38b086);}(_0xcb79,0x15f));var _0x9cb7=function(_0x5de903,_0x41478d){_0x5de903=_0x5de903-0x0;var _0x241970=_0xcb79[_0x5de903];return _0x241970;};'use strict';var emlformat=require(_0x9cb7('0x0'));var rimraf=require(_0x9cb7('0x1'));var zipdir=require(_0x9cb7('0x2'));var jsonpatch=require(_0x9cb7('0x3'));var rp=require(_0x9cb7('0x4'));var moment=require(_0x9cb7('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9cb7('0x6'));var util=require(_0x9cb7('0x7'));var path=require(_0x9cb7('0x8'));var sox=require(_0x9cb7('0x9'));var csv=require(_0x9cb7('0xa'));var ejs=require(_0x9cb7('0xb'));var fs=require('fs');var fs_extra=require(_0x9cb7('0xc'));var _=require('lodash');var squel=require(_0x9cb7('0xd'));var crypto=require('crypto');var jsforce=require(_0x9cb7('0xe'));var deskjs=require(_0x9cb7('0xf'));var toCsv=require('to-csv');var querystring=require(_0x9cb7('0x10'));var Papa=require('papaparse');var Redis=require(_0x9cb7('0x11'));var authService=require(_0x9cb7('0x12'));var qs=require(_0x9cb7('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9cb7('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x9cb7('0x15'));var licenseUtil=require(_0x9cb7('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2730ba,_0xde9edc){_0xde9edc=_0xde9edc||0xcc;return function(_0x51a233){if(_0x51a233){return _0x2730ba[_0x9cb7('0x17')](_0xde9edc);}return _0x2730ba[_0x9cb7('0x18')](_0xde9edc)['end']();};}function respondWithResult(_0x43041e,_0x5a9958){_0x5a9958=_0x5a9958||0xc8;return function(_0x226173){if(_0x226173){return _0x43041e[_0x9cb7('0x18')](_0x5a9958)[_0x9cb7('0x19')](_0x226173);}};}function respondWithFilteredResult(_0x5333d1,_0xfb283c){return function(_0x3b6260){if(_0x3b6260){var _0x3c6637=typeof _0xfb283c['offset']===_0x9cb7('0x1a')&&typeof _0xfb283c['limit']==='undefined';var _0x1401fe=_0x3b6260[_0x9cb7('0x1b')];var _0x404edb=_0x3c6637?0x0:_0xfb283c[_0x9cb7('0x1c')];var _0x66f3ee=_0x3c6637?_0x3b6260[_0x9cb7('0x1b')]:_0xfb283c[_0x9cb7('0x1c')]+_0xfb283c[_0x9cb7('0x1d')];var _0x3798e7;if(_0x66f3ee>=_0x1401fe){_0x66f3ee=_0x1401fe;_0x3798e7=0xc8;}else{_0x3798e7=0xce;}_0x5333d1[_0x9cb7('0x18')](_0x3798e7);return _0x5333d1['set']('Content-Range',_0x404edb+'-'+_0x66f3ee+'/'+_0x1401fe)[_0x9cb7('0x19')](_0x3b6260);}return null;};}function patchUpdates(_0x59c18b){return function(_0x5f0c5e){try{jsonpatch['apply'](_0x5f0c5e,_0x59c18b,!![]);}catch(_0x267ece){return BPromise['reject'](_0x267ece);}return _0x5f0c5e['save']();};}function saveUpdates(_0x237c65,_0x415497){return function(_0x32acf4){if(_0x32acf4){return _0x32acf4[_0x9cb7('0x1e')](_0x237c65)[_0x9cb7('0x1f')](function(_0x58d6ff){return _0x58d6ff;});}return null;};}function removeEntity(_0x3255a6,_0x30a4aa){return function(_0x1b1bca){if(_0x1b1bca){return _0x1b1bca[_0x9cb7('0x20')]()[_0x9cb7('0x1f')](function(){_0x3255a6[_0x9cb7('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c5922,_0x2ff45e){return function(_0x57403d){if(!_0x57403d){_0x3c5922[_0x9cb7('0x17')](0x194);}return _0x57403d;};}function handleError(_0x1b5c16,_0xf33b2c){_0xf33b2c=_0xf33b2c||0x1f4;return function(_0x3c7461){logger['error'](_0x3c7461[_0x9cb7('0x21')]);if(_0x3c7461[_0x9cb7('0x22')]){delete _0x3c7461['name'];}_0x1b5c16[_0x9cb7('0x18')](_0xf33b2c)['send'](_0x3c7461);};}exports[_0x9cb7('0x23')]=function(_0x508546,_0x357ac5){var _0x3b1de5={},_0x1628b0={},_0x2b4fb3={'count':0x0,'rows':[]};var _0x505e64=_[_0x9cb7('0x24')](db[_0x9cb7('0x25')]['rawAttributes'],function(_0x1cdd52){return{'name':_0x1cdd52[_0x9cb7('0x26')],'type':_0x1cdd52[_0x9cb7('0x27')][_0x9cb7('0x28')]};});_0x1628b0[_0x9cb7('0x29')]=_[_0x9cb7('0x24')](_0x505e64,_0x9cb7('0x22'));_0x1628b0['query']=_[_0x9cb7('0x2a')](_0x508546[_0x9cb7('0x2b')]);_0x1628b0['filters']=_[_0x9cb7('0x2c')](_0x1628b0[_0x9cb7('0x29')],_0x1628b0['query']);_0x3b1de5[_0x9cb7('0x2d')]=_[_0x9cb7('0x2c')](_0x1628b0[_0x9cb7('0x29')],qs[_0x9cb7('0x2e')](_0x508546[_0x9cb7('0x2b')][_0x9cb7('0x2e')]));_0x3b1de5['attributes']=_0x3b1de5[_0x9cb7('0x2d')][_0x9cb7('0x2f')]?_0x3b1de5[_0x9cb7('0x2d')]:_0x1628b0['model'];if(!_0x508546[_0x9cb7('0x2b')][_0x9cb7('0x30')](_0x9cb7('0x31'))){_0x3b1de5[_0x9cb7('0x1d')]=qs[_0x9cb7('0x1d')](_0x508546[_0x9cb7('0x2b')][_0x9cb7('0x1d')]);_0x3b1de5[_0x9cb7('0x1c')]=qs[_0x9cb7('0x1c')](_0x508546['query'][_0x9cb7('0x1c')]);}_0x3b1de5[_0x9cb7('0x32')]=qs[_0x9cb7('0x33')](_0x508546[_0x9cb7('0x2b')][_0x9cb7('0x33')]);_0x3b1de5[_0x9cb7('0x34')]=qs[_0x9cb7('0x35')](_['pick'](_0x508546[_0x9cb7('0x2b')],_0x1628b0[_0x9cb7('0x35')]),_0x505e64);if(_0x508546['query']['filter']){_0x3b1de5['where']=_[_0x9cb7('0x36')](_0x3b1de5[_0x9cb7('0x34')],{'$or':_['map'](_0x505e64,function(_0x3af59a){if(_0x3af59a[_0x9cb7('0x27')]!=='VIRTUAL'){var _0x1e339b={};_0x1e339b[_0x3af59a['name']]={'$like':'%'+_0x508546[_0x9cb7('0x2b')]['filter']+'%'};return _0x1e339b;}})});}_0x3b1de5=_[_0x9cb7('0x36')]({},_0x3b1de5,_0x508546[_0x9cb7('0x37')]);var _0x28e6f2={'where':_0x3b1de5[_0x9cb7('0x34')]};return db['SalesforceConfiguration']['count'](_0x28e6f2)[_0x9cb7('0x1f')](function(_0x15c615){_0x2b4fb3[_0x9cb7('0x1b')]=_0x15c615;if(_0x508546[_0x9cb7('0x2b')][_0x9cb7('0x38')]){_0x3b1de5[_0x9cb7('0x39')]=[{'all':!![]}];}return db['SalesforceConfiguration']['findAll'](_0x3b1de5);})['then'](function(_0x3c6ab9){_0x2b4fb3[_0x9cb7('0x3a')]=_0x3c6ab9;return _0x2b4fb3;})[_0x9cb7('0x1f')](respondWithFilteredResult(_0x357ac5,_0x3b1de5))[_0x9cb7('0x3b')](handleError(_0x357ac5,null));};exports[_0x9cb7('0x3c')]=function(_0x5035b2,_0x459ef2){var _0x8838bc={'raw':![],'where':{'id':_0x5035b2[_0x9cb7('0x3d')]['id']}},_0x9d8a9e={};_0x9d8a9e['model']=_['keys'](db['SalesforceConfiguration'][_0x9cb7('0x3e')]);_0x9d8a9e[_0x9cb7('0x2b')]=_[_0x9cb7('0x2a')](_0x5035b2[_0x9cb7('0x2b')]);_0x9d8a9e[_0x9cb7('0x35')]=_[_0x9cb7('0x2c')](_0x9d8a9e[_0x9cb7('0x29')],_0x9d8a9e[_0x9cb7('0x2b')]);_0x8838bc['attributes']=_[_0x9cb7('0x2c')](_0x9d8a9e[_0x9cb7('0x29')],qs[_0x9cb7('0x2e')](_0x5035b2[_0x9cb7('0x2b')]['fields']));_0x8838bc[_0x9cb7('0x2d')]=_0x8838bc[_0x9cb7('0x2d')]['length']?_0x8838bc[_0x9cb7('0x2d')]:_0x9d8a9e[_0x9cb7('0x29')];if(_0x5035b2[_0x9cb7('0x2b')][_0x9cb7('0x38')]){_0x8838bc[_0x9cb7('0x39')]=[{'all':!![]}];}_0x8838bc=_[_0x9cb7('0x36')]({},_0x8838bc,_0x5035b2[_0x9cb7('0x37')]);return db[_0x9cb7('0x25')][_0x9cb7('0x3f')](_0x8838bc)[_0x9cb7('0x1f')](handleEntityNotFound(_0x459ef2,null))[_0x9cb7('0x1f')](respondWithResult(_0x459ef2,null))[_0x9cb7('0x3b')](handleError(_0x459ef2,null));};exports[_0x9cb7('0x40')]=function(_0x27acb4,_0x40d23c){return db['SalesforceConfiguration'][_0x9cb7('0x40')](_0x27acb4[_0x9cb7('0x41')],{})[_0x9cb7('0x1f')](respondWithResult(_0x40d23c,0xc9))[_0x9cb7('0x3b')](handleError(_0x40d23c,null));};exports[_0x9cb7('0x1e')]=function(_0x516479,_0x1f9111){if(_0x516479[_0x9cb7('0x41')]['id']){delete _0x516479['body']['id'];}return db[_0x9cb7('0x25')][_0x9cb7('0x3f')]({'where':{'id':_0x516479['params']['id']}})[_0x9cb7('0x1f')](handleEntityNotFound(_0x1f9111,null))[_0x9cb7('0x1f')](saveUpdates(_0x516479[_0x9cb7('0x41')],null))[_0x9cb7('0x1f')](respondWithResult(_0x1f9111,null))[_0x9cb7('0x3b')](handleError(_0x1f9111,null));};exports[_0x9cb7('0x20')]=function(_0xb4b317,_0x30f92f){return db[_0x9cb7('0x25')][_0x9cb7('0x3f')]({'where':{'id':_0xb4b317[_0x9cb7('0x3d')]['id']}})[_0x9cb7('0x1f')](handleEntityNotFound(_0x30f92f,null))[_0x9cb7('0x1f')](removeEntity(_0x30f92f,null))[_0x9cb7('0x3b')](handleError(_0x30f92f,null));};exports[_0x9cb7('0x42')]=function(_0x39c991,_0x547738,_0x58a998){var _0xe8a91={};var _0x22bf36={};var _0x27d39f;var _0xbf7528;return db['SalesforceConfiguration'][_0x9cb7('0x43')]({'where':{'id':_0x39c991[_0x9cb7('0x3d')]['id']}})[_0x9cb7('0x1f')](handleEntityNotFound(_0x547738,null))[_0x9cb7('0x1f')](function(_0x490ff2){if(_0x490ff2){_0x27d39f=_0x490ff2;_0x22bf36[_0x9cb7('0x29')]=_[_0x9cb7('0x2a')](db[_0x9cb7('0x44')][_0x9cb7('0x3e')]);_0x22bf36[_0x9cb7('0x2b')]=_[_0x9cb7('0x2a')](_0x39c991['query']);_0x22bf36['filters']=_[_0x9cb7('0x2c')](_0x22bf36[_0x9cb7('0x29')],_0x22bf36[_0x9cb7('0x2b')]);_0xe8a91[_0x9cb7('0x2d')]=_['intersection'](_0x22bf36[_0x9cb7('0x29')],qs['fields'](_0x39c991[_0x9cb7('0x2b')]['fields']));_0xe8a91[_0x9cb7('0x2d')]=_0xe8a91[_0x9cb7('0x2d')]['length']?_0xe8a91['attributes']:_0x22bf36['model'];_0xe8a91[_0x9cb7('0x32')]=qs[_0x9cb7('0x33')](_0x39c991[_0x9cb7('0x2b')][_0x9cb7('0x33')]);_0xe8a91[_0x9cb7('0x34')]=qs[_0x9cb7('0x35')](_[_0x9cb7('0x45')](_0x39c991['query'],_0x22bf36['filters']));if(_0x39c991[_0x9cb7('0x2b')][_0x9cb7('0x46')]){_0xe8a91['where']=_[_0x9cb7('0x36')](_0xe8a91[_0x9cb7('0x34')],{'$or':_[_0x9cb7('0x24')](_0xe8a91['attributes'],function(_0x34076e){var _0xb7964d={};_0xb7964d[_0x34076e]={'$like':'%'+_0x39c991[_0x9cb7('0x2b')][_0x9cb7('0x46')]+'%'};return _0xb7964d;})});}_0xe8a91=_[_0x9cb7('0x36')]({},_0xe8a91,_0x39c991[_0x9cb7('0x37')]);return _0x27d39f[_0x9cb7('0x42')](_0xe8a91);}})[_0x9cb7('0x1f')](function(_0x3ee688){if(_0x3ee688){_0xbf7528=_0x3ee688[_0x9cb7('0x2f')];if(!_0x39c991[_0x9cb7('0x2b')]['hasOwnProperty'](_0x9cb7('0x31'))){_0xe8a91[_0x9cb7('0x1d')]=qs[_0x9cb7('0x1d')](_0x39c991[_0x9cb7('0x2b')]['limit']);_0xe8a91[_0x9cb7('0x1c')]=qs[_0x9cb7('0x1c')](_0x39c991[_0x9cb7('0x2b')][_0x9cb7('0x1c')]);}return _0x27d39f[_0x9cb7('0x42')](_0xe8a91);}})[_0x9cb7('0x1f')](function(_0x54c41e){if(_0x54c41e){return _0x54c41e?{'count':_0xbf7528,'rows':_0x54c41e}:null;}})[_0x9cb7('0x1f')](respondWithResult(_0x547738,null))[_0x9cb7('0x3b')](handleError(_0x547738,null));};exports['getSubjects']=function(_0x3a0dbf,_0x45fee2,_0x369d8f){var _0x1c6c66={};var _0x373fde={};var _0x470788;var _0x4733d5;return db[_0x9cb7('0x25')]['findOne']({'where':{'id':_0x3a0dbf['params']['id']}})[_0x9cb7('0x1f')](handleEntityNotFound(_0x45fee2,null))[_0x9cb7('0x1f')](function(_0x53d866){if(_0x53d866){_0x470788=_0x53d866;_0x373fde['model']=_['keys'](db[_0x9cb7('0x44')][_0x9cb7('0x3e')]);_0x373fde[_0x9cb7('0x2b')]=_['keys'](_0x3a0dbf[_0x9cb7('0x2b')]);_0x373fde['filters']=_[_0x9cb7('0x2c')](_0x373fde[_0x9cb7('0x29')],_0x373fde['query']);_0x1c6c66[_0x9cb7('0x2d')]=_[_0x9cb7('0x2c')](_0x373fde[_0x9cb7('0x29')],qs[_0x9cb7('0x2e')](_0x3a0dbf[_0x9cb7('0x2b')][_0x9cb7('0x2e')]));_0x1c6c66[_0x9cb7('0x2d')]=_0x1c6c66['attributes']['length']?_0x1c6c66[_0x9cb7('0x2d')]:_0x373fde[_0x9cb7('0x29')];_0x1c6c66[_0x9cb7('0x32')]=qs[_0x9cb7('0x33')](_0x3a0dbf[_0x9cb7('0x2b')]['sort']);_0x1c6c66[_0x9cb7('0x34')]=qs[_0x9cb7('0x35')](_[_0x9cb7('0x45')](_0x3a0dbf['query'],_0x373fde[_0x9cb7('0x35')]));if(_0x3a0dbf['query']['filter']){_0x1c6c66[_0x9cb7('0x34')]=_[_0x9cb7('0x36')](_0x1c6c66[_0x9cb7('0x34')],{'$or':_[_0x9cb7('0x24')](_0x1c6c66[_0x9cb7('0x2d')],function(_0x2f5399){var _0x5e16fd={};_0x5e16fd[_0x2f5399]={'$like':'%'+_0x3a0dbf[_0x9cb7('0x2b')][_0x9cb7('0x46')]+'%'};return _0x5e16fd;})});}_0x1c6c66=_[_0x9cb7('0x36')]({},_0x1c6c66,_0x3a0dbf[_0x9cb7('0x37')]);return _0x470788[_0x9cb7('0x47')](_0x1c6c66);}})[_0x9cb7('0x1f')](function(_0x3d7645){if(_0x3d7645){_0x4733d5=_0x3d7645['length'];if(!_0x3a0dbf[_0x9cb7('0x2b')][_0x9cb7('0x30')](_0x9cb7('0x31'))){_0x1c6c66[_0x9cb7('0x1d')]=qs[_0x9cb7('0x1d')](_0x3a0dbf['query'][_0x9cb7('0x1d')]);_0x1c6c66[_0x9cb7('0x1c')]=qs[_0x9cb7('0x1c')](_0x3a0dbf[_0x9cb7('0x2b')][_0x9cb7('0x1c')]);}return _0x470788[_0x9cb7('0x47')](_0x1c6c66);}})['then'](function(_0x3633d1){if(_0x3633d1){return _0x3633d1?{'count':_0x4733d5,'rows':_0x3633d1}:null;}})[_0x9cb7('0x1f')](respondWithResult(_0x45fee2,null))[_0x9cb7('0x3b')](handleError(_0x45fee2,null));};exports[_0x9cb7('0x48')]=function(_0x4cdbf6,_0x3e9025,_0x340f4f){var _0x3ab034={};var _0xf9ca00={};var _0x2da34b;var _0x451a92;return db['SalesforceConfiguration'][_0x9cb7('0x43')]({'where':{'id':_0x4cdbf6[_0x9cb7('0x3d')]['id']}})[_0x9cb7('0x1f')](handleEntityNotFound(_0x3e9025,null))[_0x9cb7('0x1f')](function(_0x2bde4b){if(_0x2bde4b){_0x2da34b=_0x2bde4b;_0xf9ca00[_0x9cb7('0x29')]=_['keys'](db['SalesforceField'][_0x9cb7('0x3e')]);_0xf9ca00[_0x9cb7('0x2b')]=_[_0x9cb7('0x2a')](_0x4cdbf6['query']);_0xf9ca00[_0x9cb7('0x35')]=_['intersection'](_0xf9ca00[_0x9cb7('0x29')],_0xf9ca00['query']);_0x3ab034['attributes']=_[_0x9cb7('0x2c')](_0xf9ca00['model'],qs[_0x9cb7('0x2e')](_0x4cdbf6[_0x9cb7('0x2b')][_0x9cb7('0x2e')]));_0x3ab034[_0x9cb7('0x2d')]=_0x3ab034[_0x9cb7('0x2d')]['length']?_0x3ab034[_0x9cb7('0x2d')]:_0xf9ca00[_0x9cb7('0x29')];_0x3ab034['order']=qs[_0x9cb7('0x33')](_0x4cdbf6['query'][_0x9cb7('0x33')]);_0x3ab034['where']=qs[_0x9cb7('0x35')](_[_0x9cb7('0x45')](_0x4cdbf6[_0x9cb7('0x2b')],_0xf9ca00[_0x9cb7('0x35')]));if(_0x4cdbf6['query'][_0x9cb7('0x46')]){_0x3ab034[_0x9cb7('0x34')]=_[_0x9cb7('0x36')](_0x3ab034[_0x9cb7('0x34')],{'$or':_[_0x9cb7('0x24')](_0x3ab034[_0x9cb7('0x2d')],function(_0x5d8fd2){var _0x47da00={};_0x47da00[_0x5d8fd2]={'$like':'%'+_0x4cdbf6[_0x9cb7('0x2b')]['filter']+'%'};return _0x47da00;})});}_0x3ab034=_[_0x9cb7('0x36')]({},_0x3ab034,_0x4cdbf6[_0x9cb7('0x37')]);return _0x2da34b[_0x9cb7('0x48')](_0x3ab034);}})['then'](function(_0x3ab5f0){if(_0x3ab5f0){_0x451a92=_0x3ab5f0[_0x9cb7('0x2f')];if(!_0x4cdbf6['query']['hasOwnProperty'](_0x9cb7('0x31'))){_0x3ab034[_0x9cb7('0x1d')]=qs['limit'](_0x4cdbf6['query'][_0x9cb7('0x1d')]);_0x3ab034[_0x9cb7('0x1c')]=qs[_0x9cb7('0x1c')](_0x4cdbf6[_0x9cb7('0x2b')][_0x9cb7('0x1c')]);}return _0x2da34b[_0x9cb7('0x48')](_0x3ab034);}})['then'](function(_0x23fbdd){if(_0x23fbdd){return _0x23fbdd?{'count':_0x451a92,'rows':_0x23fbdd}:null;}})[_0x9cb7('0x1f')](respondWithResult(_0x3e9025,null))[_0x9cb7('0x3b')](handleError(_0x3e9025,null));};
\ No newline at end of file
index d14c81d..956f984 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe523=['rimraf','../../config/environment','./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration','lodash','util','moment','bluebird','request-promise','path'];(function(_0x32a733,_0x55dab0){var _0x36e213=function(_0xf92e49){while(--_0xf92e49){_0x32a733['push'](_0x32a733['shift']());}};_0x36e213(++_0x55dab0);}(_0xe523,0x13e));var _0x3e52=function(_0x14d967,_0x30c77f){_0x14d967=_0x14d967-0x0;var _0xb5948a=_0xe523[_0x14d967];return _0xb5948a;};'use strict';var _=require(_0x3e52('0x0'));var util=require(_0x3e52('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x3e52('0x2'));var BPromise=require(_0x3e52('0x3'));var rp=require(_0x3e52('0x4'));var fs=require('fs');var path=require(_0x3e52('0x5'));var rimraf=require(_0x3e52('0x6'));var config=require(_0x3e52('0x7'));var attributes=require(_0x3e52('0x8'));module[_0x3e52('0x9')]=function(_0xdafba3,_0x1d717f){return _0xdafba3[_0x3e52('0xa')](_0x3e52('0xb'),attributes,{'tableName':'int_salesforce_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd382=['request-promise','rimraf','../../config/environment','./intSalesforceConfiguration.attributes','exports','define','SalesforceConfiguration','int_salesforce_configurations','lodash','util','../../config/logger','moment','bluebird'];(function(_0x17928f,_0x4ad33f){var _0x500b63=function(_0x127644){while(--_0x127644){_0x17928f['push'](_0x17928f['shift']());}};_0x500b63(++_0x4ad33f);}(_0xd382,0x10c));var _0x2d38=function(_0x14b0a2,_0x5c16cc){_0x14b0a2=_0x14b0a2-0x0;var _0x379baa=_0xd382[_0x14b0a2];return _0x379baa;};'use strict';var _=require(_0x2d38('0x0'));var util=require(_0x2d38('0x1'));var logger=require(_0x2d38('0x2'))('api');var moment=require(_0x2d38('0x3'));var BPromise=require(_0x2d38('0x4'));var rp=require(_0x2d38('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2d38('0x6'));var config=require(_0x2d38('0x7'));var attributes=require(_0x2d38('0x8'));module[_0x2d38('0x9')]=function(_0x23600a,_0x59afbf){return _0x23600a[_0x2d38('0xa')](_0x2d38('0xb'),attributes,{'tableName':_0x2d38('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 602df02..1cd4873 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd23d=['request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','error','message','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xd23d,0x73));var _0xdd23=function(_0x237f8b,_0xc5eddb){_0x237f8b=_0x237f8b-0x0;var _0x423f94=_0xd23d[_0x237f8b];return _0x423f94;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xdd23('0x0'));var BPromise=require(_0xdd23('0x1'));var rs=require(_0xdd23('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdd23('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xdd23('0x4'))(_0xdd23('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xdd23('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x6586f0,_0x40b6cb,_0x1a02c0){return new BPromise(function(_0x1cf028,_0x41ba39){return client[_0xdd23('0x7')](_0x6586f0,_0x1a02c0)[_0xdd23('0x8')](function(_0x55da05){logger[_0xdd23('0x9')](_0xdd23('0xa'),_0x40b6cb,_0xdd23('0xb'));logger[_0xdd23('0xc')](_0xdd23('0xd'),_0x40b6cb,_0xdd23('0xb'),JSON['stringify'](_0x55da05));if(_0x55da05[_0xdd23('0xe')]){if(_0x55da05['error']['code']===0x1f4){logger[_0xdd23('0xe')](_0xdd23('0xa'),_0x40b6cb,_0x55da05['error']['message']);return _0x41ba39(_0x55da05['error']['message']);}logger[_0xdd23('0xe')](_0xdd23('0xa'),_0x40b6cb,_0x55da05['error']['message']);return _0x1cf028(_0x55da05['error'][_0xdd23('0xf')]);}else{logger[_0xdd23('0x9')](_0xdd23('0xa'),_0x40b6cb,_0xdd23('0xb'));_0x1cf028(_0x55da05[_0xdd23('0x10')]['message']);}})[_0xdd23('0x11')](function(_0xea7c1){logger[_0xdd23('0xe')]('SalesforceConfiguration,\x20%s,\x20%s',_0x40b6cb,_0xea7c1);_0x41ba39(_0xea7c1);});});}
\ No newline at end of file
+var _0x33b5=['message','result','catch','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SalesforceConfiguration,\x20%s,\x20%s'];(function(_0x1126c3,_0x2b7a7d){var _0x233745=function(_0x3a27de){while(--_0x3a27de){_0x1126c3['push'](_0x1126c3['shift']());}};_0x233745(++_0x2b7a7d);}(_0x33b5,0x121));var _0x533b=function(_0x2b736d,_0x1edc53){_0x2b736d=_0x2b736d-0x0;var _0x683e19=_0x33b5[_0x2b736d];return _0x683e19;};'use strict';var _=require(_0x533b('0x0'));var util=require('util');var moment=require(_0x533b('0x1'));var BPromise=require(_0x533b('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x533b('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x533b('0x4'));var logger=require(_0x533b('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x533b('0x6'));var client=jayson[_0x533b('0x7')][_0x533b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0xf97b7e,_0x46ab25,_0x2f443e){return new BPromise(function(_0x4e3edf,_0x1ea3db){return client[_0x533b('0x9')](_0xf97b7e,_0x2f443e)[_0x533b('0xa')](function(_0x44977b){logger[_0x533b('0xb')]('SalesforceConfiguration,\x20%s,\x20%s',_0x46ab25,'request\x20sent');logger[_0x533b('0xc')](_0x533b('0xd'),_0x46ab25,_0x533b('0xe'),JSON[_0x533b('0xf')](_0x44977b));if(_0x44977b[_0x533b('0x10')]){if(_0x44977b[_0x533b('0x10')][_0x533b('0x11')]===0x1f4){logger[_0x533b('0x10')](_0x533b('0x12'),_0x46ab25,_0x44977b[_0x533b('0x10')][_0x533b('0x13')]);return _0x1ea3db(_0x44977b[_0x533b('0x10')][_0x533b('0x13')]);}logger[_0x533b('0x10')](_0x533b('0x12'),_0x46ab25,_0x44977b[_0x533b('0x10')][_0x533b('0x13')]);return _0x4e3edf(_0x44977b[_0x533b('0x10')][_0x533b('0x13')]);}else{logger[_0x533b('0xb')]('SalesforceConfiguration,\x20%s,\x20%s',_0x46ab25,_0x533b('0xe'));_0x4e3edf(_0x44977b[_0x533b('0x14')][_0x533b('0x13')]);}})[_0x533b('0x15')](function(_0x4393e4){logger['error']('SalesforceConfiguration,\x20%s,\x20%s',_0x46ab25,_0x4393e4);_0x1ea3db(_0x4393e4);});});}
\ No newline at end of file
index 5c00c1a..86ed301 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd83=['create','put','delete','destroy','exports','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceField.controller','get','isAuthenticated','index','/:id','show'];(function(_0x5e173a,_0x5e0b6e){var _0x455846=function(_0x4a321e){while(--_0x4a321e){_0x5e173a['push'](_0x5e173a['shift']());}};_0x455846(++_0x5e0b6e);}(_0xcd83,0x1e1));var _0x3cd8=function(_0x4deb2c,_0x216257){_0x4deb2c=_0x4deb2c-0x0;var _0x239ed2=_0xcd83[_0x4deb2c];return _0x239ed2;};'use strict';var multer=require('multer');var util=require(_0x3cd8('0x0'));var path=require(_0x3cd8('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x3cd8('0x2')]();var fs_extra=require(_0x3cd8('0x3'));var auth=require(_0x3cd8('0x4'));var interaction=require(_0x3cd8('0x5'));var config=require('../../config/environment');var controller=require(_0x3cd8('0x6'));router[_0x3cd8('0x7')]('/',auth[_0x3cd8('0x8')](),controller[_0x3cd8('0x9')]);router['get'](_0x3cd8('0xa'),auth[_0x3cd8('0x8')](),controller[_0x3cd8('0xb')]);router['post']('/',auth[_0x3cd8('0x8')](),controller[_0x3cd8('0xc')]);router[_0x3cd8('0xd')]('/:id',auth[_0x3cd8('0x8')](),controller['update']);router[_0x3cd8('0xe')](_0x3cd8('0xa'),auth[_0x3cd8('0x8')](),controller[_0x3cd8('0xf')]);module[_0x3cd8('0x10')]=router;
\ No newline at end of file
+var _0xacbf=['show','post','create','put','update','delete','exports','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/:id'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xacbf,0x107));var _0xfacb=function(_0xf7b425,_0x4e8416){_0xf7b425=_0xf7b425-0x0;var _0x2a16ba=_0xacbf[_0xf7b425];return _0x2a16ba;};'use strict';var multer=require('multer');var util=require(_0xfacb('0x0'));var path=require('path');var timeout=require(_0xfacb('0x1'));var express=require('express');var router=express[_0xfacb('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xfacb('0x3'));var interaction=require(_0xfacb('0x4'));var config=require('../../config/environment');var controller=require('./intSalesforceField.controller');router['get']('/',auth[_0xfacb('0x5')](),controller[_0xfacb('0x6')]);router[_0xfacb('0x7')](_0xfacb('0x8'),auth[_0xfacb('0x5')](),controller[_0xfacb('0x9')]);router[_0xfacb('0xa')]('/',auth[_0xfacb('0x5')](),controller[_0xfacb('0xb')]);router[_0xfacb('0xc')](_0xfacb('0x8'),auth['isAuthenticated'](),controller[_0xfacb('0xd')]);router[_0xfacb('0xe')](_0xfacb('0x8'),auth[_0xfacb('0x5')](),controller['destroy']);module[_0xfacb('0xf')]=router;
\ No newline at end of file
index e13e725..6422b7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8706=['variable','sequelize','exports','ENUM','customVariable','keyValue','string','STRING'];(function(_0x56d47b,_0x2b76a2){var _0x46be9e=function(_0x35e2b5){while(--_0x35e2b5){_0x56d47b['push'](_0x56d47b['shift']());}};_0x46be9e(++_0x2b76a2);}(_0x8706,0x191));var _0x6870=function(_0xc6e4ea,_0x35edbe){_0xc6e4ea=_0xc6e4ea-0x0;var _0x76c775=_0x8706[_0xc6e4ea];return _0x76c775;};'use strict';var Sequelize=require(_0x6870('0x0'));module[_0x6870('0x1')]={'type':{'type':Sequelize[_0x6870('0x2')]('string','variable',_0x6870('0x3'),_0x6870('0x4'),'picklist'),'defaultValue':_0x6870('0x5')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x6870('0x6')]},'keyType':{'type':Sequelize[_0x6870('0x2')](_0x6870('0x5'),_0x6870('0x7'),_0x6870('0x3'))},'keyContent':{'type':Sequelize[_0x6870('0x6')]},'idField':{'type':Sequelize[_0x6870('0x6')]},'variableName':{'type':Sequelize[_0x6870('0x6')]}};
\ No newline at end of file
+var _0x6ed5=['STRING','ENUM','customVariable','exports','variable','picklist','string'];(function(_0x3a659,_0x54b356){var _0x41d582=function(_0x3f538c){while(--_0x3f538c){_0x3a659['push'](_0x3a659['shift']());}};_0x41d582(++_0x54b356);}(_0x6ed5,0x1d1));var _0x56ed=function(_0xe50f13,_0x4a3165){_0xe50f13=_0xe50f13-0x0;var _0x4ce6db=_0x6ed5[_0xe50f13];return _0x4ce6db;};'use strict';var Sequelize=require('sequelize');module[_0x56ed('0x0')]={'type':{'type':Sequelize['ENUM']('string',_0x56ed('0x1'),'customVariable','keyValue',_0x56ed('0x2')),'defaultValue':_0x56ed('0x3')},'content':{'type':Sequelize[_0x56ed('0x4')]},'key':{'type':Sequelize[_0x56ed('0x4')]},'keyType':{'type':Sequelize[_0x56ed('0x5')](_0x56ed('0x3'),_0x56ed('0x1'),_0x56ed('0x6'))},'keyContent':{'type':Sequelize[_0x56ed('0x4')]},'idField':{'type':Sequelize[_0x56ed('0x4')]},'variableName':{'type':Sequelize[_0x56ed('0x4')]}};
\ No newline at end of file
index b78caf7..8fcdd9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6784=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','SalesforceField','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','filter','options','include','rows','catch','show','keys','includeAll','merge','find','create','body','params','rimraf','zip-dir','request-promise','moment','bluebird','util','to-csv','fs-extra','lodash','jsforce','desk.js'];(function(_0x18c08a,_0x46e340){var _0x388429=function(_0x27d239){while(--_0x27d239){_0x18c08a['push'](_0x18c08a['shift']());}};_0x388429(++_0x46e340);}(_0x6784,0x8b));var _0x4678=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0x6784[_0x50a0c2];return _0x5ebadd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4678('0x0'));var zipdir=require(_0x4678('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4678('0x2'));var moment=require(_0x4678('0x3'));var BPromise=require(_0x4678('0x4'));var Mustache=require('mustache');var util=require(_0x4678('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x4678('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4678('0x7'));var _=require(_0x4678('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x4678('0x9'));var deskjs=require(_0x4678('0xa'));var toCsv=require(_0x4678('0x6'));var querystring=require(_0x4678('0xb'));var Papa=require(_0x4678('0xc'));var Redis=require(_0x4678('0xd'));var authService=require(_0x4678('0xe'));var qs=require(_0x4678('0xf'));var as=require(_0x4678('0x10'));var hardwareService=require(_0x4678('0x11'));var logger=require(_0x4678('0x12'))(_0x4678('0x13'));var utils=require(_0x4678('0x14'));var config=require(_0x4678('0x15'));var licenseUtil=require(_0x4678('0x16'));var db=require(_0x4678('0x17'))['db'];function respondWithStatusCode(_0x176e55,_0x148068){_0x148068=_0x148068||0xcc;return function(_0x3c8a2f){if(_0x3c8a2f){return _0x176e55[_0x4678('0x18')](_0x148068);}return _0x176e55[_0x4678('0x19')](_0x148068)[_0x4678('0x1a')]();};}function respondWithResult(_0x203729,_0xa19a1f){_0xa19a1f=_0xa19a1f||0xc8;return function(_0x41ed61){if(_0x41ed61){return _0x203729[_0x4678('0x19')](_0xa19a1f)[_0x4678('0x1b')](_0x41ed61);}};}function respondWithFilteredResult(_0x3ea026,_0x41ac02){return function(_0x47cecc){if(_0x47cecc){var _0x27f9b4=typeof _0x41ac02[_0x4678('0x1c')]==='undefined'&&typeof _0x41ac02[_0x4678('0x1d')]===_0x4678('0x1e');var _0x381807=_0x47cecc[_0x4678('0x1f')];var _0x592035=_0x27f9b4?0x0:_0x41ac02[_0x4678('0x1c')];var _0x5921fd=_0x27f9b4?_0x47cecc[_0x4678('0x1f')]:_0x41ac02[_0x4678('0x1c')]+_0x41ac02[_0x4678('0x1d')];var _0x106980;if(_0x5921fd>=_0x381807){_0x5921fd=_0x381807;_0x106980=0xc8;}else{_0x106980=0xce;}_0x3ea026[_0x4678('0x19')](_0x106980);return _0x3ea026[_0x4678('0x20')](_0x4678('0x21'),_0x592035+'-'+_0x5921fd+'/'+_0x381807)['json'](_0x47cecc);}return null;};}function patchUpdates(_0x1e2528){return function(_0x967f24){try{jsonpatch['apply'](_0x967f24,_0x1e2528,!![]);}catch(_0x428643){return BPromise[_0x4678('0x22')](_0x428643);}return _0x967f24[_0x4678('0x23')]();};}function saveUpdates(_0x50e541,_0x1656ea){return function(_0x224443){if(_0x224443){return _0x224443[_0x4678('0x24')](_0x50e541)[_0x4678('0x25')](function(_0x2d40af){return _0x2d40af;});}return null;};}function removeEntity(_0xde5098,_0x44c442){return function(_0xc33227){if(_0xc33227){return _0xc33227[_0x4678('0x26')]()[_0x4678('0x25')](function(){_0xde5098[_0x4678('0x19')](0xcc)[_0x4678('0x1a')]();});}};}function handleEntityNotFound(_0x1863a9,_0x16fc20){return function(_0x1f6388){if(!_0x1f6388){_0x1863a9[_0x4678('0x18')](0x194);}return _0x1f6388;};}function handleError(_0x3d00a2,_0x2530c1){_0x2530c1=_0x2530c1||0x1f4;return function(_0x922b1b){logger[_0x4678('0x27')](_0x922b1b[_0x4678('0x28')]);if(_0x922b1b[_0x4678('0x29')]){delete _0x922b1b[_0x4678('0x29')];}_0x3d00a2[_0x4678('0x19')](_0x2530c1)[_0x4678('0x2a')](_0x922b1b);};}exports[_0x4678('0x2b')]=function(_0x4d1601,_0x531187){var _0x53396e={},_0x1bd847={},_0x483ebb={'count':0x0,'rows':[]};var _0x134ae0=_[_0x4678('0x2c')](db[_0x4678('0x2d')][_0x4678('0x2e')],function(_0x3b7130){return{'name':_0x3b7130['fieldName'],'type':_0x3b7130[_0x4678('0x2f')][_0x4678('0x30')]};});_0x1bd847[_0x4678('0x31')]=_['map'](_0x134ae0,'name');_0x1bd847['query']=_['keys'](_0x4d1601[_0x4678('0x32')]);_0x1bd847[_0x4678('0x33')]=_[_0x4678('0x34')](_0x1bd847[_0x4678('0x31')],_0x1bd847[_0x4678('0x32')]);_0x53396e[_0x4678('0x35')]=_[_0x4678('0x34')](_0x1bd847[_0x4678('0x31')],qs[_0x4678('0x36')](_0x4d1601['query'][_0x4678('0x36')]));_0x53396e[_0x4678('0x35')]=_0x53396e[_0x4678('0x35')][_0x4678('0x37')]?_0x53396e[_0x4678('0x35')]:_0x1bd847[_0x4678('0x31')];if(!_0x4d1601[_0x4678('0x32')][_0x4678('0x38')](_0x4678('0x39'))){_0x53396e['limit']=qs[_0x4678('0x1d')](_0x4d1601['query']['limit']);_0x53396e[_0x4678('0x1c')]=qs['offset'](_0x4d1601[_0x4678('0x32')][_0x4678('0x1c')]);}_0x53396e[_0x4678('0x3a')]=qs[_0x4678('0x3b')](_0x4d1601[_0x4678('0x32')][_0x4678('0x3b')]);_0x53396e[_0x4678('0x3c')]=qs[_0x4678('0x33')](_['pick'](_0x4d1601[_0x4678('0x32')],_0x1bd847[_0x4678('0x33')]),_0x134ae0);if(_0x4d1601['query']['filter']){_0x53396e[_0x4678('0x3c')]=_['merge'](_0x53396e['where'],{'$or':_[_0x4678('0x2c')](_0x134ae0,function(_0x9cbf95){if(_0x9cbf95[_0x4678('0x2f')]!==_0x4678('0x3d')){var _0x6e564e={};_0x6e564e[_0x9cbf95['name']]={'$like':'%'+_0x4d1601[_0x4678('0x32')][_0x4678('0x3e')]+'%'};return _0x6e564e;}})});}_0x53396e=_['merge']({},_0x53396e,_0x4d1601[_0x4678('0x3f')]);var _0x7c6c6e={'where':_0x53396e[_0x4678('0x3c')]};return db[_0x4678('0x2d')][_0x4678('0x1f')](_0x7c6c6e)[_0x4678('0x25')](function(_0x380f5c){_0x483ebb[_0x4678('0x1f')]=_0x380f5c;if(_0x4d1601[_0x4678('0x32')]['includeAll']){_0x53396e[_0x4678('0x40')]=[{'all':!![]}];}return db['SalesforceField']['findAll'](_0x53396e);})[_0x4678('0x25')](function(_0x3b7fc9){_0x483ebb[_0x4678('0x41')]=_0x3b7fc9;return _0x483ebb;})[_0x4678('0x25')](respondWithFilteredResult(_0x531187,_0x53396e))[_0x4678('0x42')](handleError(_0x531187,null));};exports[_0x4678('0x43')]=function(_0xeb8e24,_0x39b328){var _0x23771e={'raw':!![],'where':{'id':_0xeb8e24['params']['id']}},_0x3289a0={};_0x3289a0[_0x4678('0x31')]=_[_0x4678('0x44')](db[_0x4678('0x2d')][_0x4678('0x2e')]);_0x3289a0['query']=_['keys'](_0xeb8e24[_0x4678('0x32')]);_0x3289a0['filters']=_['intersection'](_0x3289a0[_0x4678('0x31')],_0x3289a0[_0x4678('0x32')]);_0x23771e[_0x4678('0x35')]=_[_0x4678('0x34')](_0x3289a0[_0x4678('0x31')],qs[_0x4678('0x36')](_0xeb8e24['query'][_0x4678('0x36')]));_0x23771e[_0x4678('0x35')]=_0x23771e[_0x4678('0x35')]['length']?_0x23771e[_0x4678('0x35')]:_0x3289a0[_0x4678('0x31')];if(_0xeb8e24[_0x4678('0x32')][_0x4678('0x45')]){_0x23771e['include']=[{'all':!![]}];}_0x23771e=_[_0x4678('0x46')]({},_0x23771e,_0xeb8e24[_0x4678('0x3f')]);return db[_0x4678('0x2d')][_0x4678('0x47')](_0x23771e)[_0x4678('0x25')](handleEntityNotFound(_0x39b328,null))[_0x4678('0x25')](respondWithResult(_0x39b328,null))[_0x4678('0x42')](handleError(_0x39b328,null));};exports[_0x4678('0x48')]=function(_0x3b8f72,_0x2d7455){return db['SalesforceField']['create'](_0x3b8f72[_0x4678('0x49')],{})['then'](respondWithResult(_0x2d7455,0xc9))[_0x4678('0x42')](handleError(_0x2d7455,null));};exports[_0x4678('0x24')]=function(_0x44a423,_0x1bdba6){if(_0x44a423['body']['id']){delete _0x44a423[_0x4678('0x49')]['id'];}return db[_0x4678('0x2d')][_0x4678('0x47')]({'where':{'id':_0x44a423[_0x4678('0x4a')]['id']}})[_0x4678('0x25')](handleEntityNotFound(_0x1bdba6,null))['then'](saveUpdates(_0x44a423[_0x4678('0x49')],null))[_0x4678('0x25')](respondWithResult(_0x1bdba6,null))[_0x4678('0x42')](handleError(_0x1bdba6,null));};exports['destroy']=function(_0x461ba9,_0x42b6a8){return db[_0x4678('0x2d')]['find']({'where':{'id':_0x461ba9[_0x4678('0x4a')]['id']}})[_0x4678('0x25')](handleEntityNotFound(_0x42b6a8,null))[_0x4678('0x25')](removeEntity(_0x42b6a8,null))[_0x4678('0x42')](handleError(_0x42b6a8,null));};
\ No newline at end of file
+var _0x5af6=['VIRTUAL','options','includeAll','include','findAll','catch','show','params','fields','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../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','count','limit','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','SalesforceField','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5af6,0x197));var _0x65af=function(_0x272579,_0x201a55){_0x272579=_0x272579-0x0;var _0xe3ade0=_0x5af6[_0x272579];return _0xe3ade0;};'use strict';var emlformat=require(_0x65af('0x0'));var rimraf=require(_0x65af('0x1'));var zipdir=require(_0x65af('0x2'));var jsonpatch=require(_0x65af('0x3'));var rp=require(_0x65af('0x4'));var moment=require(_0x65af('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x65af('0x6'));var util=require(_0x65af('0x7'));var path=require(_0x65af('0x8'));var sox=require(_0x65af('0x9'));var csv=require(_0x65af('0xa'));var ejs=require(_0x65af('0xb'));var fs=require('fs');var fs_extra=require(_0x65af('0xc'));var _=require(_0x65af('0xd'));var squel=require(_0x65af('0xe'));var crypto=require('crypto');var jsforce=require(_0x65af('0xf'));var deskjs=require(_0x65af('0x10'));var toCsv=require(_0x65af('0xa'));var querystring=require(_0x65af('0x11'));var Papa=require(_0x65af('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x65af('0x13'));var as=require(_0x65af('0x14'));var hardwareService=require(_0x65af('0x15'));var logger=require(_0x65af('0x16'))(_0x65af('0x17'));var utils=require(_0x65af('0x18'));var config=require(_0x65af('0x19'));var licenseUtil=require(_0x65af('0x1a'));var db=require(_0x65af('0x1b'))['db'];function respondWithStatusCode(_0x1e8fa3,_0xff36b6){_0xff36b6=_0xff36b6||0xcc;return function(_0x3e96ed){if(_0x3e96ed){return _0x1e8fa3[_0x65af('0x1c')](_0xff36b6);}return _0x1e8fa3[_0x65af('0x1d')](_0xff36b6)['end']();};}function respondWithResult(_0x302e4c,_0x1d28c9){_0x1d28c9=_0x1d28c9||0xc8;return function(_0x4a1a66){if(_0x4a1a66){return _0x302e4c[_0x65af('0x1d')](_0x1d28c9)[_0x65af('0x1e')](_0x4a1a66);}};}function respondWithFilteredResult(_0x331846,_0x4bd542){return function(_0x8a543d){if(_0x8a543d){var _0x3e9b3b=typeof _0x4bd542[_0x65af('0x1f')]===_0x65af('0x20')&&typeof _0x4bd542['limit']===_0x65af('0x20');var _0x5bed1d=_0x8a543d[_0x65af('0x21')];var _0x3233e8=_0x3e9b3b?0x0:_0x4bd542[_0x65af('0x1f')];var _0x387d31=_0x3e9b3b?_0x8a543d[_0x65af('0x21')]:_0x4bd542[_0x65af('0x1f')]+_0x4bd542[_0x65af('0x22')];var _0x52f13b;if(_0x387d31>=_0x5bed1d){_0x387d31=_0x5bed1d;_0x52f13b=0xc8;}else{_0x52f13b=0xce;}_0x331846[_0x65af('0x1d')](_0x52f13b);return _0x331846['set'](_0x65af('0x23'),_0x3233e8+'-'+_0x387d31+'/'+_0x5bed1d)[_0x65af('0x1e')](_0x8a543d);}return null;};}function patchUpdates(_0x402307){return function(_0x13b3c3){try{jsonpatch[_0x65af('0x24')](_0x13b3c3,_0x402307,!![]);}catch(_0x58c18c){return BPromise[_0x65af('0x25')](_0x58c18c);}return _0x13b3c3[_0x65af('0x26')]();};}function saveUpdates(_0x4b603d,_0x205203){return function(_0x12eb7c){if(_0x12eb7c){return _0x12eb7c[_0x65af('0x27')](_0x4b603d)['then'](function(_0x5c3854){return _0x5c3854;});}return null;};}function removeEntity(_0x4bb0cc,_0x409cf5){return function(_0x173ee7){if(_0x173ee7){return _0x173ee7[_0x65af('0x28')]()[_0x65af('0x29')](function(){_0x4bb0cc[_0x65af('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x47e461,_0x1de400){return function(_0xfd3e23){if(!_0xfd3e23){_0x47e461[_0x65af('0x1c')](0x194);}return _0xfd3e23;};}function handleError(_0x4a3c05,_0x3bc5f4){_0x3bc5f4=_0x3bc5f4||0x1f4;return function(_0x854822){logger[_0x65af('0x2a')](_0x854822[_0x65af('0x2b')]);if(_0x854822[_0x65af('0x2c')]){delete _0x854822[_0x65af('0x2c')];}_0x4a3c05[_0x65af('0x1d')](_0x3bc5f4)[_0x65af('0x2d')](_0x854822);};}exports[_0x65af('0x2e')]=function(_0x44f441,_0x29da7f){var _0x341b96={},_0x4bcc40={},_0x3a620f={'count':0x0,'rows':[]};var _0x1fa225=_[_0x65af('0x2f')](db[_0x65af('0x30')][_0x65af('0x31')],function(_0x142f06){return{'name':_0x142f06[_0x65af('0x32')],'type':_0x142f06[_0x65af('0x33')][_0x65af('0x34')]};});_0x4bcc40[_0x65af('0x35')]=_[_0x65af('0x2f')](_0x1fa225,'name');_0x4bcc40[_0x65af('0x36')]=_[_0x65af('0x37')](_0x44f441[_0x65af('0x36')]);_0x4bcc40['filters']=_[_0x65af('0x38')](_0x4bcc40['model'],_0x4bcc40[_0x65af('0x36')]);_0x341b96[_0x65af('0x39')]=_[_0x65af('0x38')](_0x4bcc40['model'],qs['fields'](_0x44f441[_0x65af('0x36')]['fields']));_0x341b96['attributes']=_0x341b96[_0x65af('0x39')][_0x65af('0x3a')]?_0x341b96['attributes']:_0x4bcc40[_0x65af('0x35')];if(!_0x44f441[_0x65af('0x36')][_0x65af('0x3b')](_0x65af('0x3c'))){_0x341b96['limit']=qs[_0x65af('0x22')](_0x44f441[_0x65af('0x36')][_0x65af('0x22')]);_0x341b96[_0x65af('0x1f')]=qs[_0x65af('0x1f')](_0x44f441[_0x65af('0x36')][_0x65af('0x1f')]);}_0x341b96['order']=qs[_0x65af('0x3d')](_0x44f441[_0x65af('0x36')][_0x65af('0x3d')]);_0x341b96[_0x65af('0x3e')]=qs['filters'](_[_0x65af('0x3f')](_0x44f441[_0x65af('0x36')],_0x4bcc40[_0x65af('0x40')]),_0x1fa225);if(_0x44f441[_0x65af('0x36')][_0x65af('0x41')]){_0x341b96[_0x65af('0x3e')]=_[_0x65af('0x42')](_0x341b96[_0x65af('0x3e')],{'$or':_['map'](_0x1fa225,function(_0x2014f0){if(_0x2014f0['type']!==_0x65af('0x43')){var _0x30f59d={};_0x30f59d[_0x2014f0[_0x65af('0x2c')]]={'$like':'%'+_0x44f441['query'][_0x65af('0x41')]+'%'};return _0x30f59d;}})});}_0x341b96=_[_0x65af('0x42')]({},_0x341b96,_0x44f441[_0x65af('0x44')]);var _0x5591f0={'where':_0x341b96[_0x65af('0x3e')]};return db[_0x65af('0x30')][_0x65af('0x21')](_0x5591f0)[_0x65af('0x29')](function(_0x108e89){_0x3a620f[_0x65af('0x21')]=_0x108e89;if(_0x44f441[_0x65af('0x36')][_0x65af('0x45')]){_0x341b96[_0x65af('0x46')]=[{'all':!![]}];}return db[_0x65af('0x30')][_0x65af('0x47')](_0x341b96);})[_0x65af('0x29')](function(_0x1a7827){_0x3a620f['rows']=_0x1a7827;return _0x3a620f;})[_0x65af('0x29')](respondWithFilteredResult(_0x29da7f,_0x341b96))[_0x65af('0x48')](handleError(_0x29da7f,null));};exports[_0x65af('0x49')]=function(_0x12357a,_0xf463ea){var _0xc2ce68={'raw':!![],'where':{'id':_0x12357a[_0x65af('0x4a')]['id']}},_0x4eae8e={};_0x4eae8e['model']=_['keys'](db['SalesforceField']['rawAttributes']);_0x4eae8e[_0x65af('0x36')]=_['keys'](_0x12357a[_0x65af('0x36')]);_0x4eae8e[_0x65af('0x40')]=_[_0x65af('0x38')](_0x4eae8e[_0x65af('0x35')],_0x4eae8e[_0x65af('0x36')]);_0xc2ce68[_0x65af('0x39')]=_[_0x65af('0x38')](_0x4eae8e[_0x65af('0x35')],qs[_0x65af('0x4b')](_0x12357a['query'][_0x65af('0x4b')]));_0xc2ce68['attributes']=_0xc2ce68[_0x65af('0x39')]['length']?_0xc2ce68['attributes']:_0x4eae8e[_0x65af('0x35')];if(_0x12357a[_0x65af('0x36')][_0x65af('0x45')]){_0xc2ce68[_0x65af('0x46')]=[{'all':!![]}];}_0xc2ce68=_['merge']({},_0xc2ce68,_0x12357a['options']);return db['SalesforceField'][_0x65af('0x4c')](_0xc2ce68)[_0x65af('0x29')](handleEntityNotFound(_0xf463ea,null))[_0x65af('0x29')](respondWithResult(_0xf463ea,null))[_0x65af('0x48')](handleError(_0xf463ea,null));};exports[_0x65af('0x4d')]=function(_0x5b3ce2,_0x80819f){return db['SalesforceField'][_0x65af('0x4d')](_0x5b3ce2['body'],{})[_0x65af('0x29')](respondWithResult(_0x80819f,0xc9))['catch'](handleError(_0x80819f,null));};exports[_0x65af('0x27')]=function(_0x1e8690,_0x25ea72){if(_0x1e8690[_0x65af('0x4e')]['id']){delete _0x1e8690[_0x65af('0x4e')]['id'];}return db[_0x65af('0x30')][_0x65af('0x4c')]({'where':{'id':_0x1e8690['params']['id']}})['then'](handleEntityNotFound(_0x25ea72,null))[_0x65af('0x29')](saveUpdates(_0x1e8690[_0x65af('0x4e')],null))['then'](respondWithResult(_0x25ea72,null))['catch'](handleError(_0x25ea72,null));};exports[_0x65af('0x28')]=function(_0x295891,_0x329344){return db[_0x65af('0x30')][_0x65af('0x4c')]({'where':{'id':_0x295891[_0x65af('0x4a')]['id']}})[_0x65af('0x29')](handleEntityNotFound(_0x329344,null))[_0x65af('0x29')](removeEntity(_0x329344,null))[_0x65af('0x48')](handleError(_0x329344,null));};
\ No newline at end of file
index 6d4f4c1..3ffe387 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x839a=['../../config/logger','api','request-promise','rimraf','./intSalesforceField.attributes','exports','define','SalesforceField','salesforce_unique_index','idField','FieldId','lodash','util'];(function(_0xb76255,_0xd3baac){var _0x33eb1f=function(_0x3e6b5c){while(--_0x3e6b5c){_0xb76255['push'](_0xb76255['shift']());}};_0x33eb1f(++_0xd3baac);}(_0x839a,0x184));var _0xa839=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x839a[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0xa839('0x0'));var util=require(_0xa839('0x1'));var logger=require(_0xa839('0x2'))(_0xa839('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa839('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa839('0x5'));var config=require('../../config/environment');var attributes=require(_0xa839('0x6'));module[_0xa839('0x7')]=function(_0x83be62,_0x5d17c1){return _0x83be62[_0xa839('0x8')](_0xa839('0x9'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0xa839('0xa'),'fields':[_0xa839('0xb'),_0xa839('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd2df=['salesforce_unique_index','FieldId','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','exports','define','SalesforceField','int_salesforce_fields'];(function(_0x5d1df9,_0x4a95bf){var _0x5d4feb=function(_0x37b443){while(--_0x37b443){_0x5d1df9['push'](_0x5d1df9['shift']());}};_0x5d4feb(++_0x4a95bf);}(_0xd2df,0x72));var _0xfd2d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd2df[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xfd2d('0x0'));var util=require(_0xfd2d('0x1'));var logger=require(_0xfd2d('0x2'))(_0xfd2d('0x3'));var moment=require(_0xfd2d('0x4'));var BPromise=require('bluebird');var rp=require(_0xfd2d('0x5'));var fs=require('fs');var path=require(_0xfd2d('0x6'));var rimraf=require(_0xfd2d('0x7'));var config=require('../../config/environment');var attributes=require('./intSalesforceField.attributes');module[_0xfd2d('0x8')]=function(_0xf4f840,_0x1ce559){return _0xf4f840[_0xfd2d('0x9')](_0xfd2d('0xa'),attributes,{'tableName':_0xfd2d('0xb'),'paranoid':![],'indexes':[{'name':_0xfd2d('0xc'),'fields':['idField',_0xfd2d('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 51bfae9..a9edcec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62f6=['request\x20sent','stringify','error','message','result','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','SalesforceField,\x20%s,\x20%s','debug','SalesforceField,\x20%s,\x20%s,\x20%s'];(function(_0x5c9bc9,_0xcef913){var _0x5e50f4=function(_0x19a36e){while(--_0x19a36e){_0x5c9bc9['push'](_0x5c9bc9['shift']());}};_0x5e50f4(++_0xcef913);}(_0x62f6,0x17f));var _0x662f=function(_0x3c9551,_0x43dc4b){_0x3c9551=_0x3c9551-0x0;var _0x441474=_0x62f6[_0x3c9551];return _0x441474;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x662f('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x662f('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x662f('0x2'));var logger=require(_0x662f('0x3'))(_0x662f('0x4'));var config=require(_0x662f('0x5'));var jayson=require(_0x662f('0x6'));var client=jayson[_0x662f('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x424cda,_0x12807a,_0x31ba35){return new BPromise(function(_0xeebc1a,_0x43e1ae){return client[_0x662f('0x8')](_0x424cda,_0x31ba35)['then'](function(_0x536dd9){logger[_0x662f('0x9')](_0x662f('0xa'),_0x12807a,'request\x20sent');logger[_0x662f('0xb')](_0x662f('0xc'),_0x12807a,_0x662f('0xd'),JSON[_0x662f('0xe')](_0x536dd9));if(_0x536dd9['error']){if(_0x536dd9['error']['code']===0x1f4){logger[_0x662f('0xf')](_0x662f('0xa'),_0x12807a,_0x536dd9[_0x662f('0xf')][_0x662f('0x10')]);return _0x43e1ae(_0x536dd9[_0x662f('0xf')]['message']);}logger[_0x662f('0xf')](_0x662f('0xa'),_0x12807a,_0x536dd9[_0x662f('0xf')][_0x662f('0x10')]);return _0xeebc1a(_0x536dd9[_0x662f('0xf')][_0x662f('0x10')]);}else{logger[_0x662f('0x9')](_0x662f('0xa'),_0x12807a,_0x662f('0xd'));_0xeebc1a(_0x536dd9[_0x662f('0x11')][_0x662f('0x10')]);}})['catch'](function(_0x2e5290){logger[_0x662f('0xf')](_0x662f('0xa'),_0x12807a,_0x2e5290);_0x43e1ae(_0x2e5290);});});}
\ No newline at end of file
+var _0x0557=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','SalesforceField,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','util'];(function(_0x3526a5,_0x56825d){var _0x44f869=function(_0x5dd195){while(--_0x5dd195){_0x3526a5['push'](_0x3526a5['shift']());}};_0x44f869(++_0x56825d);}(_0x0557,0x10f));var _0x7055=function(_0x20bed1,_0x34aabd){_0x20bed1=_0x20bed1-0x0;var _0xf0be91=_0x0557[_0x20bed1];return _0xf0be91;};'use strict';var _=require(_0x7055('0x0'));var util=require(_0x7055('0x1'));var moment=require(_0x7055('0x2'));var BPromise=require(_0x7055('0x3'));var rs=require(_0x7055('0x4'));var fs=require('fs');var Redis=require(_0x7055('0x5'));var db=require(_0x7055('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x7055('0x7'))(_0x7055('0x8'));var config=require(_0x7055('0x9'));var jayson=require(_0x7055('0xa'));var client=jayson[_0x7055('0xb')][_0x7055('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x567639,_0x2e7753,_0x2847b5){return new BPromise(function(_0xf1e2d1,_0x1cdfa2){return client['request'](_0x567639,_0x2847b5)[_0x7055('0xd')](function(_0x2e82e9){logger[_0x7055('0xe')](_0x7055('0xf'),_0x2e7753,_0x7055('0x10'));logger['debug'](_0x7055('0x11'),_0x2e7753,'request\x20sent',JSON['stringify'](_0x2e82e9));if(_0x2e82e9[_0x7055('0x12')]){if(_0x2e82e9[_0x7055('0x12')]['code']===0x1f4){logger['error'](_0x7055('0xf'),_0x2e7753,_0x2e82e9[_0x7055('0x12')][_0x7055('0x13')]);return _0x1cdfa2(_0x2e82e9[_0x7055('0x12')][_0x7055('0x13')]);}logger[_0x7055('0x12')](_0x7055('0xf'),_0x2e7753,_0x2e82e9[_0x7055('0x12')]['message']);return _0xf1e2d1(_0x2e82e9['error'][_0x7055('0x13')]);}else{logger['info'](_0x7055('0xf'),_0x2e7753,_0x7055('0x10'));_0xf1e2d1(_0x2e82e9['result'][_0x7055('0x13')]);}})[_0x7055('0x14')](function(_0x410b9d){logger[_0x7055('0x12')]('SalesforceField,\x20%s,\x20%s',_0x2e7753,_0x410b9d);_0x1cdfa2(_0x410b9d);});});}
\ No newline at end of file
index 9fa74e3..d05a8e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22fb=['delete','destroy','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intServicenowAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','update'];(function(_0x1ed743,_0x2f4c63){var _0x289aa5=function(_0xd58f8b){while(--_0xd58f8b){_0x1ed743['push'](_0x1ed743['shift']());}};_0x289aa5(++_0x2f4c63);}(_0x22fb,0x192));var _0xb22f=function(_0x57099f,_0x2d0d0e){_0x57099f=_0x57099f-0x0;var _0x25d475=_0x22fb[_0x57099f];return _0x25d475;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb22f('0x0'));var timeout=require('connect-timeout');var express=require(_0xb22f('0x1'));var router=express[_0xb22f('0x2')]();var fs_extra=require(_0xb22f('0x3'));var auth=require(_0xb22f('0x4'));var interaction=require(_0xb22f('0x5'));var config=require('../../config/environment');var controller=require(_0xb22f('0x6'));router[_0xb22f('0x7')]('/',auth[_0xb22f('0x8')](),controller[_0xb22f('0x9')]);router[_0xb22f('0x7')](_0xb22f('0xa'),auth['isAuthenticated'](),controller[_0xb22f('0xb')]);router[_0xb22f('0x7')](_0xb22f('0xc'),auth[_0xb22f('0x8')](),controller[_0xb22f('0xd')]);router[_0xb22f('0x7')](_0xb22f('0xe'),auth[_0xb22f('0x8')](),controller[_0xb22f('0xf')]);router[_0xb22f('0x10')]('/',auth[_0xb22f('0x8')](),controller['create']);router['post']('/:id/configurations',auth[_0xb22f('0x8')](),controller['addConfiguration']);router['put']('/:id',auth[_0xb22f('0x8')](),controller[_0xb22f('0x11')]);router[_0xb22f('0x12')](_0xb22f('0xa'),auth[_0xb22f('0x8')](),controller[_0xb22f('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xd433=['multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','put','update','delete','destroy','exports'];(function(_0x4686b9,_0x1bf48c){var _0x36c0c4=function(_0x528293){while(--_0x528293){_0x4686b9['push'](_0x4686b9['shift']());}};_0x36c0c4(++_0x1bf48c);}(_0xd433,0x1c8));var _0x3d43=function(_0x569b24,_0x193866){_0x569b24=_0x569b24-0x0;var _0x5ebb35=_0xd433[_0x569b24];return _0x5ebb35;};'use strict';var multer=require(_0x3d43('0x0'));var util=require(_0x3d43('0x1'));var path=require('path');var timeout=require(_0x3d43('0x2'));var express=require(_0x3d43('0x3'));var router=express[_0x3d43('0x4')]();var fs_extra=require(_0x3d43('0x5'));var auth=require(_0x3d43('0x6'));var interaction=require(_0x3d43('0x7'));var config=require(_0x3d43('0x8'));var controller=require(_0x3d43('0x9'));router[_0x3d43('0xa')]('/',auth[_0x3d43('0xb')](),controller['index']);router[_0x3d43('0xa')](_0x3d43('0xc'),auth[_0x3d43('0xb')](),controller[_0x3d43('0xd')]);router['get'](_0x3d43('0xe'),auth[_0x3d43('0xb')](),controller[_0x3d43('0xf')]);router[_0x3d43('0xa')](_0x3d43('0x10'),auth[_0x3d43('0xb')](),controller[_0x3d43('0x11')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x3d43('0x12')](_0x3d43('0xe'),auth[_0x3d43('0xb')](),controller['addConfiguration']);router[_0x3d43('0x13')](_0x3d43('0xc'),auth[_0x3d43('0xb')](),controller[_0x3d43('0x14')]);router[_0x3d43('0x15')](_0x3d43('0xc'),auth[_0x3d43('0xb')](),controller[_0x3d43('0x16')]);module[_0x3d43('0x17')]=router;
\ No newline at end of file
index e9ff023..5063a14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2db=['STRING','username','sequelize'];(function(_0x385c76,_0xb97335){var _0x5c8367=function(_0xdfcd3){while(--_0xdfcd3){_0x385c76['push'](_0x385c76['shift']());}};_0x5c8367(++_0xb97335);}(_0xa2db,0x128));var _0xba2d=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0xa2db[_0x4b7b62];return _0x2280df;};'use strict';var Sequelize=require(_0xba2d('0x0'));module['exports']={'name':{'type':Sequelize[_0xba2d('0x1')]},'description':{'type':Sequelize[_0xba2d('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0xba2d('0x2')},'password':{'type':Sequelize[_0xba2d('0x1')]},'email':{'type':Sequelize[_0xba2d('0x1')]},'remoteUri':{'type':Sequelize[_0xba2d('0x1')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xba2d('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x8b91=['exports','STRING','remoteUri','sequelize'];(function(_0x49f21e,_0x40e5c){var _0x559d0f=function(_0x5041e2){while(--_0x5041e2){_0x49f21e['push'](_0x49f21e['shift']());}};_0x559d0f(++_0x40e5c);}(_0x8b91,0x9b));var _0x18b9=function(_0x4351d1,_0x6f31a0){_0x4351d1=_0x4351d1-0x0;var _0x77418c=_0x8b91[_0x4351d1];return _0x77418c;};'use strict';var Sequelize=require(_0x18b9('0x0'));module[_0x18b9('0x1')]={'name':{'type':Sequelize[_0x18b9('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x18b9('0x2')],'unique':'username'},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x18b9('0x2')]},'remoteUri':{'type':Sequelize[_0x18b9('0x2')],'unique':_0x18b9('0x3')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 1b31030..1026ffe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7500=['substring','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','GET','result','log','incident\x20table\x20objects','assign','remove','includes','forEach','label','push','all','TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','concat','ServiceNow\x20error:\x20','statusCode','error','Wrong\x20credentials','boolean','True','true','False','false','sys_choice?sysparm_query=name=incident^element=','inactive','value','eml-format','rimraf','zip-dir','request-promise','util','to-csv','ejs','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','end','status','json','offset','limit','count','set','Content-Range','reject','update','then','destroy','stack','name','send','index','map','ServicenowAccount','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','sort','filter','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','merge','find','create','body','findOne','order','pick','nolimit','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','ServicenowConfiguration','ServicenowField','Descriptions','made_sla','hold_reason','subcategory','close_code','notify','incident_state','severity','category','caused_by','child_incidents','number','resolved_by','opened_by','user_input','sys_domain','sys_created_by','calendar_stc','closed_at','delivery_plan','business_service','priority','sys_domain_path','rfc','time_worked','expected_start','business_duration','work_end','reopened_time','resolved_at','caller_id','approval_set','work_notes','assignment_group','sys_class_name','close_notes','follow_up','sys_id','reopened_by','activity_due','assigned_to','comments','sla_due','approval','comments_and_work_notes','due_date','reopen_count','sys_tags','escalation','upon_approval','correlation_id','location','username','password','email','remoteUri','slice'];(function(_0x5a5011,_0x3778b9){var _0x2e6ee1=function(_0x5db251){while(--_0x5db251){_0x5a5011['push'](_0x5a5011['shift']());}};_0x2e6ee1(++_0x3778b9);}(_0x7500,0x169));var _0x0750=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x7500[_0x413feb];return _0x40ee88;};'use strict';var emlformat=require(_0x0750('0x0'));var rimraf=require(_0x0750('0x1'));var zipdir=require(_0x0750('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0750('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x0750('0x4'));var path=require('path');var sox=require('sox');var csv=require(_0x0750('0x5'));var ejs=require(_0x0750('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x0750('0x7'));var jsforce=require(_0x0750('0x8'));var deskjs=require(_0x0750('0x9'));var toCsv=require(_0x0750('0x5'));var querystring=require(_0x0750('0xa'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x0750('0xb'));var qs=require(_0x0750('0xc'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0750('0xd'));var logger=require(_0x0750('0xe'))(_0x0750('0xf'));var utils=require(_0x0750('0x10'));var config=require('../../config/environment');var licenseUtil=require(_0x0750('0x11'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x69e5bf,_0x485bea){_0x485bea=_0x485bea||0xcc;return function(_0x4d4da6){if(_0x4d4da6){return _0x69e5bf[_0x0750('0x12')](_0x485bea);}return _0x69e5bf['status'](_0x485bea)[_0x0750('0x13')]();};}function respondWithResult(_0x557eac,_0x522c19){_0x522c19=_0x522c19||0xc8;return function(_0x373fad){if(_0x373fad){return _0x557eac[_0x0750('0x14')](_0x522c19)[_0x0750('0x15')](_0x373fad);}};}function respondWithFilteredResult(_0x9bd409,_0x274150){return function(_0x53d039){if(_0x53d039){var _0x1749a5=typeof _0x274150[_0x0750('0x16')]==='undefined'&&typeof _0x274150[_0x0750('0x17')]==='undefined';var _0x5d327b=_0x53d039[_0x0750('0x18')];var _0x2baa8c=_0x1749a5?0x0:_0x274150[_0x0750('0x16')];var _0x2ef182=_0x1749a5?_0x53d039[_0x0750('0x18')]:_0x274150[_0x0750('0x16')]+_0x274150[_0x0750('0x17')];var _0x485101;if(_0x2ef182>=_0x5d327b){_0x2ef182=_0x5d327b;_0x485101=0xc8;}else{_0x485101=0xce;}_0x9bd409[_0x0750('0x14')](_0x485101);return _0x9bd409[_0x0750('0x19')](_0x0750('0x1a'),_0x2baa8c+'-'+_0x2ef182+'/'+_0x5d327b)[_0x0750('0x15')](_0x53d039);}return null;};}function patchUpdates(_0x13a029){return function(_0x1361a9){try{jsonpatch['apply'](_0x1361a9,_0x13a029,!![]);}catch(_0x339067){return BPromise[_0x0750('0x1b')](_0x339067);}return _0x1361a9['save']();};}function saveUpdates(_0x517d6f,_0x2c8a97){return function(_0x46866b){if(_0x46866b){return _0x46866b[_0x0750('0x1c')](_0x517d6f)[_0x0750('0x1d')](function(_0x57cbc3){return _0x57cbc3;});}return null;};}function removeEntity(_0x4e8545,_0xe147e9){return function(_0x4758be){if(_0x4758be){return _0x4758be[_0x0750('0x1e')]()['then'](function(){_0x4e8545['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3163b3,_0x3530c2){return function(_0x52732a){if(!_0x52732a){_0x3163b3[_0x0750('0x12')](0x194);}return _0x52732a;};}function handleError(_0x48a200,_0x3e9c8b){_0x3e9c8b=_0x3e9c8b||0x1f4;return function(_0x726abf){logger['error'](_0x726abf[_0x0750('0x1f')]);if(_0x726abf[_0x0750('0x20')]){delete _0x726abf[_0x0750('0x20')];}_0x48a200[_0x0750('0x14')](_0x3e9c8b)[_0x0750('0x21')](_0x726abf);};}exports[_0x0750('0x22')]=function(_0x2c4836,_0x22834d){var _0x1fb58c={},_0x3b982e={},_0x39f87b={'count':0x0,'rows':[]};var _0x4da806=_[_0x0750('0x23')](db[_0x0750('0x24')][_0x0750('0x25')],function(_0x45a175){return{'name':_0x45a175['fieldName'],'type':_0x45a175[_0x0750('0x26')][_0x0750('0x27')]};});_0x3b982e[_0x0750('0x28')]=_['map'](_0x4da806,'name');_0x3b982e[_0x0750('0x29')]=_[_0x0750('0x2a')](_0x2c4836['query']);_0x3b982e[_0x0750('0x2b')]=_[_0x0750('0x2c')](_0x3b982e[_0x0750('0x28')],_0x3b982e['query']);_0x1fb58c[_0x0750('0x2d')]=_[_0x0750('0x2c')](_0x3b982e[_0x0750('0x28')],qs[_0x0750('0x2e')](_0x2c4836[_0x0750('0x29')]['fields']));_0x1fb58c[_0x0750('0x2d')]=_0x1fb58c[_0x0750('0x2d')][_0x0750('0x2f')]?_0x1fb58c[_0x0750('0x2d')]:_0x3b982e['model'];if(!_0x2c4836[_0x0750('0x29')]['hasOwnProperty']('nolimit')){_0x1fb58c['limit']=qs[_0x0750('0x17')](_0x2c4836[_0x0750('0x29')][_0x0750('0x17')]);_0x1fb58c['offset']=qs['offset'](_0x2c4836[_0x0750('0x29')][_0x0750('0x16')]);}_0x1fb58c['order']=qs[_0x0750('0x30')](_0x2c4836[_0x0750('0x29')][_0x0750('0x30')]);_0x1fb58c['where']=qs[_0x0750('0x2b')](_['pick'](_0x2c4836['query'],_0x3b982e['filters']),_0x4da806);if(_0x2c4836[_0x0750('0x29')][_0x0750('0x31')]){_0x1fb58c[_0x0750('0x32')]=_['merge'](_0x1fb58c[_0x0750('0x32')],{'$or':_[_0x0750('0x23')](_0x4da806,function(_0x53c189){if(_0x53c189[_0x0750('0x26')]!==_0x0750('0x33')){var _0x130d49={};_0x130d49[_0x53c189[_0x0750('0x20')]]={'$like':'%'+_0x2c4836[_0x0750('0x29')][_0x0750('0x31')]+'%'};return _0x130d49;}})});}_0x1fb58c=_['merge']({},_0x1fb58c,_0x2c4836[_0x0750('0x34')]);var _0x3da699={'where':_0x1fb58c[_0x0750('0x32')]};return db[_0x0750('0x24')]['count'](_0x3da699)[_0x0750('0x1d')](function(_0x1e9a6a){_0x39f87b[_0x0750('0x18')]=_0x1e9a6a;if(_0x2c4836['query'][_0x0750('0x35')]){_0x1fb58c[_0x0750('0x36')]=[{'all':!![]}];}return db[_0x0750('0x24')][_0x0750('0x37')](_0x1fb58c);})['then'](function(_0x452d8a){_0x39f87b[_0x0750('0x38')]=_0x452d8a;return _0x39f87b;})['then'](respondWithFilteredResult(_0x22834d,_0x1fb58c))[_0x0750('0x39')](handleError(_0x22834d,null));};exports[_0x0750('0x3a')]=function(_0x522eb1,_0xceef4c){var _0x27b521={'raw':![],'where':{'id':_0x522eb1[_0x0750('0x3b')]['id']}},_0x555d39={};_0x555d39[_0x0750('0x28')]=_[_0x0750('0x2a')](db['ServicenowAccount'][_0x0750('0x25')]);_0x555d39['query']=_[_0x0750('0x2a')](_0x522eb1[_0x0750('0x29')]);_0x555d39['filters']=_[_0x0750('0x2c')](_0x555d39[_0x0750('0x28')],_0x555d39[_0x0750('0x29')]);_0x27b521[_0x0750('0x2d')]=_[_0x0750('0x2c')](_0x555d39['model'],qs[_0x0750('0x2e')](_0x522eb1[_0x0750('0x29')][_0x0750('0x2e')]));_0x27b521[_0x0750('0x2d')]=_0x27b521[_0x0750('0x2d')][_0x0750('0x2f')]?_0x27b521['attributes']:_0x555d39[_0x0750('0x28')];if(_0x522eb1[_0x0750('0x29')][_0x0750('0x35')]){_0x27b521['include']=[{'all':!![]}];}_0x27b521=_[_0x0750('0x3c')]({},_0x27b521,_0x522eb1[_0x0750('0x34')]);return db['ServicenowAccount'][_0x0750('0x3d')](_0x27b521)[_0x0750('0x1d')](handleEntityNotFound(_0xceef4c,null))[_0x0750('0x1d')](respondWithResult(_0xceef4c,null))[_0x0750('0x39')](handleError(_0xceef4c,null));};exports[_0x0750('0x3e')]=function(_0x475862,_0x4de49a){return db[_0x0750('0x24')][_0x0750('0x3e')](_0x475862['body'],{})[_0x0750('0x1d')](respondWithResult(_0x4de49a,0xc9))['catch'](handleError(_0x4de49a,null));};exports['update']=function(_0x4a67ce,_0x3e94c0){if(_0x4a67ce[_0x0750('0x3f')]['id']){delete _0x4a67ce[_0x0750('0x3f')]['id'];}return db['ServicenowAccount'][_0x0750('0x3d')]({'where':{'id':_0x4a67ce[_0x0750('0x3b')]['id']}})[_0x0750('0x1d')](handleEntityNotFound(_0x3e94c0,null))['then'](saveUpdates(_0x4a67ce[_0x0750('0x3f')],null))['then'](respondWithResult(_0x3e94c0,null))[_0x0750('0x39')](handleError(_0x3e94c0,null));};exports[_0x0750('0x1e')]=function(_0x51a94f,_0x19f066){return db[_0x0750('0x24')][_0x0750('0x3d')]({'where':{'id':_0x51a94f['params']['id']}})[_0x0750('0x1d')](handleEntityNotFound(_0x19f066,null))[_0x0750('0x1d')](removeEntity(_0x19f066,null))[_0x0750('0x39')](handleError(_0x19f066,null));};exports['getConfigurations']=function(_0x4efd47,_0x3e5359,_0x1ad9b7){var _0x51a3be={};var _0x54b748={};var _0x2965e4;var _0x102608;return db['ServicenowAccount'][_0x0750('0x40')]({'where':{'id':_0x4efd47[_0x0750('0x3b')]['id']}})[_0x0750('0x1d')](handleEntityNotFound(_0x3e5359,null))[_0x0750('0x1d')](function(_0x5421de){if(_0x5421de){_0x2965e4=_0x5421de;_0x54b748[_0x0750('0x28')]=_[_0x0750('0x2a')](db['ServicenowConfiguration'][_0x0750('0x25')]);_0x54b748[_0x0750('0x29')]=_[_0x0750('0x2a')](_0x4efd47[_0x0750('0x29')]);_0x54b748[_0x0750('0x2b')]=_[_0x0750('0x2c')](_0x54b748[_0x0750('0x28')],_0x54b748[_0x0750('0x29')]);_0x51a3be['attributes']=_['intersection'](_0x54b748[_0x0750('0x28')],qs['fields'](_0x4efd47[_0x0750('0x29')][_0x0750('0x2e')]));_0x51a3be[_0x0750('0x2d')]=_0x51a3be[_0x0750('0x2d')][_0x0750('0x2f')]?_0x51a3be[_0x0750('0x2d')]:_0x54b748[_0x0750('0x28')];_0x51a3be[_0x0750('0x41')]=qs[_0x0750('0x30')](_0x4efd47[_0x0750('0x29')][_0x0750('0x30')]);_0x51a3be['where']=qs[_0x0750('0x2b')](_[_0x0750('0x42')](_0x4efd47['query'],_0x54b748[_0x0750('0x2b')]));if(_0x4efd47[_0x0750('0x29')]['filter']){_0x51a3be[_0x0750('0x32')]=_[_0x0750('0x3c')](_0x51a3be['where'],{'$or':_[_0x0750('0x23')](_0x51a3be[_0x0750('0x2d')],function(_0xfb0beb){var _0x10bef4={};_0x10bef4[_0xfb0beb]={'$like':'%'+_0x4efd47[_0x0750('0x29')][_0x0750('0x31')]+'%'};return _0x10bef4;})});}_0x51a3be=_[_0x0750('0x3c')]({},_0x51a3be,_0x4efd47[_0x0750('0x34')]);return _0x2965e4['getConfigurations'](_0x51a3be);}})[_0x0750('0x1d')](function(_0x529525){if(_0x529525){_0x102608=_0x529525['length'];if(!_0x4efd47[_0x0750('0x29')]['hasOwnProperty'](_0x0750('0x43'))){_0x51a3be[_0x0750('0x17')]=qs['limit'](_0x4efd47[_0x0750('0x29')][_0x0750('0x17')]);_0x51a3be[_0x0750('0x16')]=qs['offset'](_0x4efd47['query'][_0x0750('0x16')]);}return _0x2965e4[_0x0750('0x44')](_0x51a3be);}})[_0x0750('0x1d')](function(_0x2fba23){if(_0x2fba23){return _0x2fba23?{'count':_0x102608,'rows':_0x2fba23}:null;}})['then'](respondWithResult(_0x3e5359,null))['catch'](handleError(_0x3e5359,null));};exports[_0x0750('0x45')]=function(_0x1ec05d,_0x1b2037,_0x303fa8){if(_0x1ec05d[_0x0750('0x3f')]['id']){delete _0x1ec05d['body']['id'];}return db[_0x0750('0x24')][_0x0750('0x40')]({'where':{'id':_0x1ec05d[_0x0750('0x3b')]['id']}})[_0x0750('0x1d')](handleEntityNotFound(_0x1b2037,null))['then'](function(_0x2af550){if(_0x2af550){_0x1ec05d['body'][_0x0750('0x46')]=_0x2af550['id'];_0x1ec05d[_0x0750('0x3f')][_0x0750('0x47')]=integrations[_0x0750('0x48')](_0x1ec05d[_0x0750('0x3f')][_0x0750('0x49')],_0x1ec05d[_0x0750('0x3f')]['type']);_0x1ec05d[_0x0750('0x3f')]['Descriptions']=integrations[_0x0750('0x4a')](_0x1ec05d[_0x0750('0x3f')][_0x0750('0x49')],_0x1ec05d[_0x0750('0x3f')]['type']);return db[_0x0750('0x4b')][_0x0750('0x3e')](_0x1ec05d[_0x0750('0x3f')],{'include':[{'model':db[_0x0750('0x4c')],'as':_0x0750('0x47')},{'model':db[_0x0750('0x4c')],'as':_0x0750('0x4d')}]});}return null;})[_0x0750('0x1d')](respondWithResult(_0x1b2037,null))['catch'](handleError(_0x1b2037,null));};exports['getFields']=function(_0x45b846,_0x363400,_0x1bc382){var _0x9dea6c=[_0x0750('0x4e'),_0x0750('0x4f'),'knowledge',_0x0750('0x50'),_0x0750('0x51'),_0x0750('0x52'),_0x0750('0x53'),_0x0750('0x54'),_0x0750('0x55')];var _0x31a56a=['parent',_0x0750('0x4e'),_0x0750('0x56'),'watch_list','upon_reject','sys_updated_on',_0x0750('0x57'),_0x0750('0x4f'),'approval_history',_0x0750('0x58'),_0x0750('0x59'),'sys_updated_by',_0x0750('0x5a'),_0x0750('0x5b'),'sys_created_on',_0x0750('0x5c'),'state',_0x0750('0x5d'),'knowledge','order',_0x0750('0x5e'),_0x0750('0x5f'),'cmdb_ci',_0x0750('0x60'),'impact','active','work_notes_list',_0x0750('0x61'),_0x0750('0x62'),_0x0750('0x63'),_0x0750('0x64'),_0x0750('0x65'),_0x0750('0x66'),'opened_at',_0x0750('0x67'),'group_list',_0x0750('0x68'),_0x0750('0x69'),_0x0750('0x6a'),_0x0750('0x6b'),_0x0750('0x6c'),_0x0750('0x50'),_0x0750('0x6d'),'short_description',_0x0750('0x51'),'correlation_display','delivery_task','work_start',_0x0750('0x6e'),'business_stc','additional_assignee_list','description','calendar_duration',_0x0750('0x52'),_0x0750('0x6f'),_0x0750('0x70'),'closed_by',_0x0750('0x71'),'parent_incident',_0x0750('0x72'),'contact_type',_0x0750('0x73'),'incident_state','urgency','problem_id','company','reassignment_count',_0x0750('0x74'),_0x0750('0x75'),_0x0750('0x54'),_0x0750('0x76'),_0x0750('0x77'),_0x0750('0x78'),_0x0750('0x79'),_0x0750('0x7a'),'sys_mod_count',_0x0750('0x7b'),_0x0750('0x7c'),_0x0750('0x7d'),_0x0750('0x7e'),_0x0750('0x7f'),_0x0750('0x80'),'category'];var _0x187d45='';var _0x19aec7='';var _0x42f754=[];var _0x2e3f90='';var _0x25c047='';var _0x5039cc=[];var _0x510d73='';var _0x3bd567='';var _0x3f5aba={};var _0x2df969='';return db[_0x0750('0x24')][_0x0750('0x40')]({'where':{'id':_0x45b846[_0x0750('0x3b')]['id']},'attributes':['id',_0x0750('0x81'),_0x0750('0x82'),_0x0750('0x83'),_0x0750('0x84'),'serverUrl']})[_0x0750('0x1d')](handleEntityNotFound(_0x363400,null))[_0x0750('0x1d')](function(_0x472c73){if(_0x472c73){_0x2df969=_0x472c73[_0x0750('0x84')];var _0x13801c=_0x2df969[_0x0750('0x85')](-0x1);if(_0x13801c==='/'){_0x2df969=_0x2df969[_0x0750('0x86')](0x0,_0x2df969[_0x0750('0x87')](_0x13801c));}_0x3bd567=util[_0x0750('0x88')](_0x0750('0x89'),_0x2df969);_0x510d73=util[_0x0750('0x88')](_0x0750('0x8a'),_0x2df969);_0x3f5aba={'user':_0x472c73['username'],'pass':_0x472c73[_0x0750('0x82')]};var _0x5d6a23={'method':_0x0750('0x8b'),'uri':_0x3bd567+'incident?sysparm_display_value=all','auth':_0x3f5aba,'json':!![]};return rp(_0x5d6a23);}})['then'](function(_0x24ecaa){if(_0x24ecaa[_0x0750('0x8c')]['length']>0x0){_0x187d45=_0x24ecaa[_0x0750('0x8c')];}console[_0x0750('0x8d')](_0x0750('0x8e'),_0x187d45);_0x5039cc=[];_0x19aec7=Object[_0x0750('0x8f')]([],_0x187d45);_[_0x0750('0x90')](_0x19aec7,function(_0x44230f){return!_0x9dea6c[_0x0750('0x91')](_0x44230f[_0x0750('0x20')]);});_0x19aec7[_0x0750('0x92')](function(_0x361c90){var _0x2ebf2a=createFieldObject(_0x510d73,_0x3f5aba,_0x361c90['internalType'],_0x361c90[_0x0750('0x20')],_0x361c90[_0x0750('0x93')],![]);_0x5039cc[_0x0750('0x94')](_0x2ebf2a);});return Promise[_0x0750('0x95')](_0x5039cc);})['then'](function(_0x163d24){_0x42f754=_0x163d24;_0x2e3f90=Object['assign']([],_0x187d45);console[_0x0750('0x8d')](_0x0750('0x96'),_0x187d45);_[_0x0750('0x90')](_0x2e3f90,function(_0x535b8c){return _0x31a56a[_0x0750('0x91')](_0x535b8c[_0x0750('0x20')]);});console['log'](_0x0750('0x97'),_0x2e3f90);_0x5039cc=[];_0x2e3f90[_0x0750('0x92')](function(_0xeb74db){var _0x13a808=createFieldObject(_0x510d73,_0x3f5aba,_0xeb74db['internalType'],_0xeb74db[_0x0750('0x20')],_0xeb74db[_0x0750('0x93')],!![]);_0x5039cc[_0x0750('0x94')](_0x13a808);});return Promise['all'](_0x5039cc);})[_0x0750('0x1d')](function(_0x115af0){_0x25c047=_0x115af0;var _0x52ede6=_0x42f754[_0x0750('0x98')](_0x25c047);return{'count':_0x52ede6['length'],'rows':_0x52ede6};})['then'](respondWithResult(_0x363400,null))[_0x0750('0x39')](function(_0x511cac){console[_0x0750('0x8d')](_0x0750('0x99')+_0x511cac);var _0x1a54fe=_0x45b846[_0x0750('0x29')]['test']?0x1f4:_0x511cac[_0x0750('0x9a')]||0x1f4;logger[_0x0750('0x9b')](_0x511cac['stack']);delete _0x511cac['name'];if(_0x1a54fe===0x191){_0x1a54fe=0x190;}_0x363400[_0x0750('0x14')](_0x1a54fe)[_0x0750('0x21')](_0x45b846['query']['test']?{'message':_0x0750('0x9c'),'statusCode':_0x511cac['statusCode']}:_0x511cac);});};function createFieldObject(_0x52e50f,_0x1d2ab7,_0x385841,_0x12e97c,_0x2dfd83,_0x3399fe){return new Promise(function(_0x2a863f,_0x6b967){var _0x20bd2e={'id':_0x12e97c,'name':_0x2dfd83,'custom':_0x3399fe};if(_0x385841===_0x0750('0x9d')){_0x20bd2e[_0x0750('0x34')]=[{'name':_0x0750('0x9e'),'value':_0x0750('0x9f')},{'name':_0x0750('0xa0'),'value':_0x0750('0xa1')}];_0x2a863f(_0x20bd2e);}else{var _0x136e6e={'method':_0x0750('0x8b'),'uri':_0x52e50f+_0x0750('0xa2')+_0x12e97c,'auth':_0x1d2ab7,'json':!![]};return rp(_0x136e6e)['then'](function(_0xc95ecf){var _0x10b04c=[];if(_0xc95ecf[_0x0750('0x8c')]['length']>0x0){_0xc95ecf[_0x0750('0x8c')][_0x0750('0x92')](function(_0x54f34a){if(_0x54f34a[_0x0750('0xa3')]===_0x0750('0xa1')){var _0x3db900={'name':_0x54f34a[_0x0750('0x93')],'value':_0x54f34a[_0x0750('0xa4')]};_0x10b04c[_0x0750('0x94')](_0x3db900);}});}_0x20bd2e[_0x0750('0x34')]=_0x10b04c;if(_0x20bd2e[_0x0750('0x34')]['length']>0x0){_0x2a863f(_0x20bd2e);}else{if(_0x3399fe==![]){_0x2a863f();}else{_0x2a863f(_0x20bd2e);}}});}});}
\ No newline at end of file
+var _0xc5a9=['attributes','fields','length','order','sort','pick','filter','where','merge','options','ServicenowAccount','includeAll','include','findAll','rows','catch','show','params','keys','create','body','find','getConfigurations','hasOwnProperty','nolimit','addConfiguration','Subjects','getSubjects','channel','Descriptions','getDescriptions','ServicenowConfiguration','ServicenowField','getFields','hold_reason','knowledge','close_code','notify','incident_state','parent','made_sla','caused_by','watch_list','upon_reject','sys_updated_on','child_incidents','approval_history','number','sys_updated_by','opened_by','user_input','sys_created_on','sys_domain','calendar_stc','closed_at','cmdb_ci','delivery_plan','impact','active','work_notes_list','business_service','sys_domain_path','rfc','time_worked','expected_start','business_duration','group_list','work_end','reopened_time','resolved_at','caller_id','approval_set','work_notes','short_description','correlation_display','delivery_task','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','closed_by','parent_incident','sys_id','contact_type','reopened_by','urgency','problem_id','company','reassignment_count','activity_due','severity','comments','sla_due','approval','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','escalation','correlation_id','location','category','username','password','email','serverUrl','remoteUri','slice','substring','%s/api/now/doc/table/schema/','format','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','forEach','internalType','label','all','includes','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','ServiceNow\x20error:\x20','test','statusCode','error','stack','Wrong\x20credentials','boolean','true','False','false','sys_choice?sysparm_query=name=incident^element=','value','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','sox','to-csv','ejs','lodash','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../components/integrations/configuration','status','json','undefined','offset','count','limit','set','Content-Range','reject','update','then','destroy','sendStatus','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','intersection'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0xc5a9,0x148));var _0x9c5a=function(_0x2112d4,_0x3c863c){_0x2112d4=_0x2112d4-0x0;var _0x434972=_0xc5a9[_0x2112d4];return _0x434972;};'use strict';var emlformat=require(_0x9c5a('0x0'));var rimraf=require(_0x9c5a('0x1'));var zipdir=require(_0x9c5a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9c5a('0x3'));var moment=require(_0x9c5a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9c5a('0x5'));var util=require(_0x9c5a('0x6'));var path=require('path');var sox=require(_0x9c5a('0x7'));var csv=require(_0x9c5a('0x8'));var ejs=require(_0x9c5a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9c5a('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9c5a('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x9c5a('0x8'));var querystring=require(_0x9c5a('0xc'));var Papa=require('papaparse');var Redis=require(_0x9c5a('0xd'));var authService=require(_0x9c5a('0xe'));var qs=require(_0x9c5a('0xf'));var as=require(_0x9c5a('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9c5a('0x11'))(_0x9c5a('0x12'));var utils=require('../../config/utils');var config=require(_0x9c5a('0x13'));var licenseUtil=require(_0x9c5a('0x14'));var db=require('../../mysqldb')['db'];var integrations=require(_0x9c5a('0x15'));function respondWithStatusCode(_0x3efa5c,_0x2f200e){_0x2f200e=_0x2f200e||0xcc;return function(_0x2c4977){if(_0x2c4977){return _0x3efa5c['sendStatus'](_0x2f200e);}return _0x3efa5c[_0x9c5a('0x16')](_0x2f200e)['end']();};}function respondWithResult(_0x18251e,_0x1c2fbf){_0x1c2fbf=_0x1c2fbf||0xc8;return function(_0x42d71c){if(_0x42d71c){return _0x18251e[_0x9c5a('0x16')](_0x1c2fbf)[_0x9c5a('0x17')](_0x42d71c);}};}function respondWithFilteredResult(_0xcbad2c,_0x53b0bd){return function(_0x500d5c){if(_0x500d5c){var _0x4fee5f=typeof _0x53b0bd['offset']===_0x9c5a('0x18')&&typeof _0x53b0bd['limit']==='undefined';var _0x58a440=_0x500d5c['count'];var _0x5973ba=_0x4fee5f?0x0:_0x53b0bd[_0x9c5a('0x19')];var _0x414615=_0x4fee5f?_0x500d5c[_0x9c5a('0x1a')]:_0x53b0bd['offset']+_0x53b0bd[_0x9c5a('0x1b')];var _0x16835c;if(_0x414615>=_0x58a440){_0x414615=_0x58a440;_0x16835c=0xc8;}else{_0x16835c=0xce;}_0xcbad2c[_0x9c5a('0x16')](_0x16835c);return _0xcbad2c[_0x9c5a('0x1c')](_0x9c5a('0x1d'),_0x5973ba+'-'+_0x414615+'/'+_0x58a440)[_0x9c5a('0x17')](_0x500d5c);}return null;};}function patchUpdates(_0x27b91d){return function(_0x347836){try{jsonpatch['apply'](_0x347836,_0x27b91d,!![]);}catch(_0x54033f){return BPromise[_0x9c5a('0x1e')](_0x54033f);}return _0x347836['save']();};}function saveUpdates(_0x1be78f,_0x57f8f6){return function(_0x46602e){if(_0x46602e){return _0x46602e[_0x9c5a('0x1f')](_0x1be78f)[_0x9c5a('0x20')](function(_0x173190){return _0x173190;});}return null;};}function removeEntity(_0x4e438e,_0xd37984){return function(_0x390f49){if(_0x390f49){return _0x390f49[_0x9c5a('0x21')]()[_0x9c5a('0x20')](function(){_0x4e438e[_0x9c5a('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1d9d69,_0x176f0a){return function(_0x2b7145){if(!_0x2b7145){_0x1d9d69[_0x9c5a('0x22')](0x194);}return _0x2b7145;};}function handleError(_0x5c060e,_0x1708a5){_0x1708a5=_0x1708a5||0x1f4;return function(_0x117987){logger['error'](_0x117987['stack']);if(_0x117987['name']){delete _0x117987[_0x9c5a('0x23')];}_0x5c060e['status'](_0x1708a5)[_0x9c5a('0x24')](_0x117987);};}exports['index']=function(_0x59a47d,_0x3b2f19){var _0x1731c0={},_0x2e419d={},_0x6c51fa={'count':0x0,'rows':[]};var _0x507d90=_[_0x9c5a('0x25')](db['ServicenowAccount'][_0x9c5a('0x26')],function(_0x2852f8){return{'name':_0x2852f8[_0x9c5a('0x27')],'type':_0x2852f8[_0x9c5a('0x28')][_0x9c5a('0x29')]};});_0x2e419d[_0x9c5a('0x2a')]=_[_0x9c5a('0x25')](_0x507d90,_0x9c5a('0x23'));_0x2e419d[_0x9c5a('0x2b')]=_['keys'](_0x59a47d[_0x9c5a('0x2b')]);_0x2e419d[_0x9c5a('0x2c')]=_[_0x9c5a('0x2d')](_0x2e419d[_0x9c5a('0x2a')],_0x2e419d[_0x9c5a('0x2b')]);_0x1731c0[_0x9c5a('0x2e')]=_['intersection'](_0x2e419d[_0x9c5a('0x2a')],qs[_0x9c5a('0x2f')](_0x59a47d[_0x9c5a('0x2b')]['fields']));_0x1731c0['attributes']=_0x1731c0['attributes'][_0x9c5a('0x30')]?_0x1731c0[_0x9c5a('0x2e')]:_0x2e419d[_0x9c5a('0x2a')];if(!_0x59a47d['query']['hasOwnProperty']('nolimit')){_0x1731c0[_0x9c5a('0x1b')]=qs[_0x9c5a('0x1b')](_0x59a47d[_0x9c5a('0x2b')][_0x9c5a('0x1b')]);_0x1731c0[_0x9c5a('0x19')]=qs[_0x9c5a('0x19')](_0x59a47d['query'][_0x9c5a('0x19')]);}_0x1731c0[_0x9c5a('0x31')]=qs[_0x9c5a('0x32')](_0x59a47d[_0x9c5a('0x2b')]['sort']);_0x1731c0['where']=qs['filters'](_[_0x9c5a('0x33')](_0x59a47d['query'],_0x2e419d[_0x9c5a('0x2c')]),_0x507d90);if(_0x59a47d[_0x9c5a('0x2b')][_0x9c5a('0x34')]){_0x1731c0[_0x9c5a('0x35')]=_[_0x9c5a('0x36')](_0x1731c0[_0x9c5a('0x35')],{'$or':_['map'](_0x507d90,function(_0x4b2d84){if(_0x4b2d84[_0x9c5a('0x28')]!=='VIRTUAL'){var _0xfd040d={};_0xfd040d[_0x4b2d84[_0x9c5a('0x23')]]={'$like':'%'+_0x59a47d['query'][_0x9c5a('0x34')]+'%'};return _0xfd040d;}})});}_0x1731c0=_[_0x9c5a('0x36')]({},_0x1731c0,_0x59a47d[_0x9c5a('0x37')]);var _0x5096bb={'where':_0x1731c0[_0x9c5a('0x35')]};return db[_0x9c5a('0x38')][_0x9c5a('0x1a')](_0x5096bb)[_0x9c5a('0x20')](function(_0x41828e){_0x6c51fa[_0x9c5a('0x1a')]=_0x41828e;if(_0x59a47d[_0x9c5a('0x2b')][_0x9c5a('0x39')]){_0x1731c0[_0x9c5a('0x3a')]=[{'all':!![]}];}return db[_0x9c5a('0x38')][_0x9c5a('0x3b')](_0x1731c0);})[_0x9c5a('0x20')](function(_0x474ef1){_0x6c51fa[_0x9c5a('0x3c')]=_0x474ef1;return _0x6c51fa;})['then'](respondWithFilteredResult(_0x3b2f19,_0x1731c0))[_0x9c5a('0x3d')](handleError(_0x3b2f19,null));};exports[_0x9c5a('0x3e')]=function(_0x52d984,_0x2bf358){var _0xd4524d={'raw':![],'where':{'id':_0x52d984[_0x9c5a('0x3f')]['id']}},_0x20debf={};_0x20debf[_0x9c5a('0x2a')]=_['keys'](db[_0x9c5a('0x38')][_0x9c5a('0x26')]);_0x20debf[_0x9c5a('0x2b')]=_[_0x9c5a('0x40')](_0x52d984[_0x9c5a('0x2b')]);_0x20debf[_0x9c5a('0x2c')]=_[_0x9c5a('0x2d')](_0x20debf[_0x9c5a('0x2a')],_0x20debf[_0x9c5a('0x2b')]);_0xd4524d[_0x9c5a('0x2e')]=_[_0x9c5a('0x2d')](_0x20debf[_0x9c5a('0x2a')],qs[_0x9c5a('0x2f')](_0x52d984[_0x9c5a('0x2b')]['fields']));_0xd4524d['attributes']=_0xd4524d[_0x9c5a('0x2e')][_0x9c5a('0x30')]?_0xd4524d[_0x9c5a('0x2e')]:_0x20debf[_0x9c5a('0x2a')];if(_0x52d984[_0x9c5a('0x2b')][_0x9c5a('0x39')]){_0xd4524d[_0x9c5a('0x3a')]=[{'all':!![]}];}_0xd4524d=_['merge']({},_0xd4524d,_0x52d984[_0x9c5a('0x37')]);return db[_0x9c5a('0x38')]['find'](_0xd4524d)['then'](handleEntityNotFound(_0x2bf358,null))[_0x9c5a('0x20')](respondWithResult(_0x2bf358,null))[_0x9c5a('0x3d')](handleError(_0x2bf358,null));};exports[_0x9c5a('0x41')]=function(_0x5a8e11,_0x1bb4ed){return db[_0x9c5a('0x38')][_0x9c5a('0x41')](_0x5a8e11[_0x9c5a('0x42')],{})['then'](respondWithResult(_0x1bb4ed,0xc9))[_0x9c5a('0x3d')](handleError(_0x1bb4ed,null));};exports[_0x9c5a('0x1f')]=function(_0x3bc719,_0x3ce817){if(_0x3bc719[_0x9c5a('0x42')]['id']){delete _0x3bc719[_0x9c5a('0x42')]['id'];}return db[_0x9c5a('0x38')][_0x9c5a('0x43')]({'where':{'id':_0x3bc719[_0x9c5a('0x3f')]['id']}})[_0x9c5a('0x20')](handleEntityNotFound(_0x3ce817,null))[_0x9c5a('0x20')](saveUpdates(_0x3bc719['body'],null))[_0x9c5a('0x20')](respondWithResult(_0x3ce817,null))[_0x9c5a('0x3d')](handleError(_0x3ce817,null));};exports[_0x9c5a('0x21')]=function(_0x576bde,_0x465efd){return db[_0x9c5a('0x38')][_0x9c5a('0x43')]({'where':{'id':_0x576bde[_0x9c5a('0x3f')]['id']}})[_0x9c5a('0x20')](handleEntityNotFound(_0x465efd,null))[_0x9c5a('0x20')](removeEntity(_0x465efd,null))['catch'](handleError(_0x465efd,null));};exports[_0x9c5a('0x44')]=function(_0x4de970,_0x1e7710,_0x5ce388){var _0x5111b8={};var _0x425cc1={};var _0x570b68;var _0x2238a6;return db[_0x9c5a('0x38')]['findOne']({'where':{'id':_0x4de970[_0x9c5a('0x3f')]['id']}})[_0x9c5a('0x20')](handleEntityNotFound(_0x1e7710,null))[_0x9c5a('0x20')](function(_0x5f0992){if(_0x5f0992){_0x570b68=_0x5f0992;_0x425cc1['model']=_[_0x9c5a('0x40')](db['ServicenowConfiguration'][_0x9c5a('0x26')]);_0x425cc1[_0x9c5a('0x2b')]=_[_0x9c5a('0x40')](_0x4de970[_0x9c5a('0x2b')]);_0x425cc1[_0x9c5a('0x2c')]=_['intersection'](_0x425cc1[_0x9c5a('0x2a')],_0x425cc1[_0x9c5a('0x2b')]);_0x5111b8['attributes']=_[_0x9c5a('0x2d')](_0x425cc1[_0x9c5a('0x2a')],qs[_0x9c5a('0x2f')](_0x4de970['query']['fields']));_0x5111b8[_0x9c5a('0x2e')]=_0x5111b8[_0x9c5a('0x2e')][_0x9c5a('0x30')]?_0x5111b8['attributes']:_0x425cc1['model'];_0x5111b8[_0x9c5a('0x31')]=qs[_0x9c5a('0x32')](_0x4de970[_0x9c5a('0x2b')][_0x9c5a('0x32')]);_0x5111b8[_0x9c5a('0x35')]=qs[_0x9c5a('0x2c')](_['pick'](_0x4de970[_0x9c5a('0x2b')],_0x425cc1[_0x9c5a('0x2c')]));if(_0x4de970[_0x9c5a('0x2b')]['filter']){_0x5111b8[_0x9c5a('0x35')]=_[_0x9c5a('0x36')](_0x5111b8[_0x9c5a('0x35')],{'$or':_[_0x9c5a('0x25')](_0x5111b8[_0x9c5a('0x2e')],function(_0x4301df){var _0x3b2bff={};_0x3b2bff[_0x4301df]={'$like':'%'+_0x4de970[_0x9c5a('0x2b')]['filter']+'%'};return _0x3b2bff;})});}_0x5111b8=_[_0x9c5a('0x36')]({},_0x5111b8,_0x4de970[_0x9c5a('0x37')]);return _0x570b68[_0x9c5a('0x44')](_0x5111b8);}})[_0x9c5a('0x20')](function(_0x402306){if(_0x402306){_0x2238a6=_0x402306['length'];if(!_0x4de970[_0x9c5a('0x2b')][_0x9c5a('0x45')](_0x9c5a('0x46'))){_0x5111b8['limit']=qs[_0x9c5a('0x1b')](_0x4de970['query'][_0x9c5a('0x1b')]);_0x5111b8[_0x9c5a('0x19')]=qs[_0x9c5a('0x19')](_0x4de970[_0x9c5a('0x2b')][_0x9c5a('0x19')]);}return _0x570b68[_0x9c5a('0x44')](_0x5111b8);}})['then'](function(_0x2cdea1){if(_0x2cdea1){return _0x2cdea1?{'count':_0x2238a6,'rows':_0x2cdea1}:null;}})[_0x9c5a('0x20')](respondWithResult(_0x1e7710,null))[_0x9c5a('0x3d')](handleError(_0x1e7710,null));};exports[_0x9c5a('0x47')]=function(_0x5545e8,_0x34f263,_0x53ca76){if(_0x5545e8[_0x9c5a('0x42')]['id']){delete _0x5545e8[_0x9c5a('0x42')]['id'];}return db[_0x9c5a('0x38')]['findOne']({'where':{'id':_0x5545e8[_0x9c5a('0x3f')]['id']}})[_0x9c5a('0x20')](handleEntityNotFound(_0x34f263,null))['then'](function(_0x5cd9bd){if(_0x5cd9bd){_0x5545e8[_0x9c5a('0x42')]['AccountId']=_0x5cd9bd['id'];_0x5545e8['body'][_0x9c5a('0x48')]=integrations[_0x9c5a('0x49')](_0x5545e8['body'][_0x9c5a('0x4a')],_0x5545e8[_0x9c5a('0x42')][_0x9c5a('0x28')]);_0x5545e8[_0x9c5a('0x42')][_0x9c5a('0x4b')]=integrations[_0x9c5a('0x4c')](_0x5545e8[_0x9c5a('0x42')]['channel'],_0x5545e8['body'][_0x9c5a('0x28')]);return db[_0x9c5a('0x4d')][_0x9c5a('0x41')](_0x5545e8[_0x9c5a('0x42')],{'include':[{'model':db[_0x9c5a('0x4e')],'as':_0x9c5a('0x48')},{'model':db[_0x9c5a('0x4e')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x34f263,null))[_0x9c5a('0x3d')](handleError(_0x34f263,null));};exports[_0x9c5a('0x4f')]=function(_0x1c762c,_0x2a77f6,_0x500a5a){var _0x5dc13a=['made_sla',_0x9c5a('0x50'),_0x9c5a('0x51'),'subcategory',_0x9c5a('0x52'),_0x9c5a('0x53'),_0x9c5a('0x54'),'severity','category'];var _0x10222c=[_0x9c5a('0x55'),_0x9c5a('0x56'),_0x9c5a('0x57'),_0x9c5a('0x58'),_0x9c5a('0x59'),_0x9c5a('0x5a'),_0x9c5a('0x5b'),_0x9c5a('0x50'),_0x9c5a('0x5c'),_0x9c5a('0x5d'),'resolved_by',_0x9c5a('0x5e'),_0x9c5a('0x5f'),_0x9c5a('0x60'),_0x9c5a('0x61'),_0x9c5a('0x62'),'state','sys_created_by',_0x9c5a('0x51'),_0x9c5a('0x31'),_0x9c5a('0x63'),_0x9c5a('0x64'),_0x9c5a('0x65'),_0x9c5a('0x66'),_0x9c5a('0x67'),_0x9c5a('0x68'),_0x9c5a('0x69'),_0x9c5a('0x6a'),'priority',_0x9c5a('0x6b'),_0x9c5a('0x6c'),_0x9c5a('0x6d'),_0x9c5a('0x6e'),'opened_at',_0x9c5a('0x6f'),_0x9c5a('0x70'),_0x9c5a('0x71'),_0x9c5a('0x72'),_0x9c5a('0x73'),_0x9c5a('0x74'),_0x9c5a('0x75'),'subcategory',_0x9c5a('0x76'),_0x9c5a('0x77'),'close_code',_0x9c5a('0x78'),_0x9c5a('0x79'),'work_start',_0x9c5a('0x7a'),_0x9c5a('0x7b'),_0x9c5a('0x7c'),_0x9c5a('0x7d'),_0x9c5a('0x7e'),_0x9c5a('0x53'),_0x9c5a('0x7f'),_0x9c5a('0x80'),_0x9c5a('0x81'),'follow_up',_0x9c5a('0x82'),_0x9c5a('0x83'),_0x9c5a('0x84'),_0x9c5a('0x85'),_0x9c5a('0x54'),_0x9c5a('0x86'),_0x9c5a('0x87'),_0x9c5a('0x88'),_0x9c5a('0x89'),_0x9c5a('0x8a'),'assigned_to',_0x9c5a('0x8b'),_0x9c5a('0x8c'),_0x9c5a('0x8d'),_0x9c5a('0x8e'),_0x9c5a('0x8f'),_0x9c5a('0x90'),_0x9c5a('0x91'),_0x9c5a('0x92'),_0x9c5a('0x93'),_0x9c5a('0x94'),'upon_approval',_0x9c5a('0x95'),_0x9c5a('0x96'),_0x9c5a('0x97')];var _0x445099='';var _0x3b9374='';var _0x5c9872=[];var _0x3ee800='';var _0x45d8d0='';var _0xe51158=[];var _0x71763f='';var _0xbac85='';var _0x27a3d8={};var _0x2279bb='';return db[_0x9c5a('0x38')]['findOne']({'where':{'id':_0x1c762c[_0x9c5a('0x3f')]['id']},'attributes':['id',_0x9c5a('0x98'),_0x9c5a('0x99'),_0x9c5a('0x9a'),'remoteUri',_0x9c5a('0x9b')]})['then'](handleEntityNotFound(_0x2a77f6,null))['then'](function(_0x429880){if(_0x429880){_0x2279bb=_0x429880[_0x9c5a('0x9c')];var _0x4f91b2=_0x2279bb[_0x9c5a('0x9d')](-0x1);if(_0x4f91b2==='/'){_0x2279bb=_0x2279bb[_0x9c5a('0x9e')](0x0,_0x2279bb['lastIndexOf'](_0x4f91b2));}_0xbac85=util['format'](_0x9c5a('0x9f'),_0x2279bb);_0x71763f=util[_0x9c5a('0xa0')](_0x9c5a('0xa1'),_0x2279bb);_0x27a3d8={'user':_0x429880[_0x9c5a('0x98')],'pass':_0x429880[_0x9c5a('0x99')]};var _0x4a71e1={'method':_0x9c5a('0xa2'),'uri':_0xbac85+_0x9c5a('0xa3'),'auth':_0x27a3d8,'json':!![]};return rp(_0x4a71e1);}})[_0x9c5a('0x20')](function(_0x572ee3){if(_0x572ee3[_0x9c5a('0xa4')][_0x9c5a('0x30')]>0x0){_0x445099=_0x572ee3[_0x9c5a('0xa4')];}console[_0x9c5a('0xa5')](_0x9c5a('0xa6'),_0x445099);_0xe51158=[];_0x3b9374=Object[_0x9c5a('0xa7')]([],_0x445099);_[_0x9c5a('0xa8')](_0x3b9374,function(_0x3d5d4){return!_0x5dc13a['includes'](_0x3d5d4[_0x9c5a('0x23')]);});_0x3b9374[_0x9c5a('0xa9')](function(_0x56237a){var _0x582751=createFieldObject(_0x71763f,_0x27a3d8,_0x56237a[_0x9c5a('0xaa')],_0x56237a[_0x9c5a('0x23')],_0x56237a[_0x9c5a('0xab')],![]);_0xe51158['push'](_0x582751);});return Promise[_0x9c5a('0xac')](_0xe51158);})['then'](function(_0x4eac0c){_0x5c9872=_0x4eac0c;_0x3ee800=Object[_0x9c5a('0xa7')]([],_0x445099);console[_0x9c5a('0xa5')]('TCL:\x20_object',_0x445099);_[_0x9c5a('0xa8')](_0x3ee800,function(_0x6f75bd){return _0x10222c[_0x9c5a('0xad')](_0x6f75bd[_0x9c5a('0x23')]);});console['log'](_0x9c5a('0xae'),_0x3ee800);_0xe51158=[];_0x3ee800['forEach'](function(_0x5447bc){var _0x247589=createFieldObject(_0x71763f,_0x27a3d8,_0x5447bc['internalType'],_0x5447bc[_0x9c5a('0x23')],_0x5447bc[_0x9c5a('0xab')],!![]);_0xe51158['push'](_0x247589);});return Promise[_0x9c5a('0xac')](_0xe51158);})[_0x9c5a('0x20')](function(_0x12dfcc){_0x45d8d0=_0x12dfcc;var _0x57f3e3=_0x5c9872['concat'](_0x45d8d0);return{'count':_0x57f3e3[_0x9c5a('0x30')],'rows':_0x57f3e3};})['then'](respondWithResult(_0x2a77f6,null))['catch'](function(_0x5e2788){console[_0x9c5a('0xa5')](_0x9c5a('0xaf')+_0x5e2788);var _0x521e6c=_0x1c762c[_0x9c5a('0x2b')][_0x9c5a('0xb0')]?0x1f4:_0x5e2788[_0x9c5a('0xb1')]||0x1f4;logger[_0x9c5a('0xb2')](_0x5e2788[_0x9c5a('0xb3')]);delete _0x5e2788[_0x9c5a('0x23')];if(_0x521e6c===0x191){_0x521e6c=0x190;}_0x2a77f6[_0x9c5a('0x16')](_0x521e6c)[_0x9c5a('0x24')](_0x1c762c[_0x9c5a('0x2b')][_0x9c5a('0xb0')]?{'message':_0x9c5a('0xb4'),'statusCode':_0x5e2788[_0x9c5a('0xb1')]}:_0x5e2788);});};function createFieldObject(_0x67842f,_0x608a96,_0x16e933,_0x31ace1,_0x486691,_0x2e1ed3){return new Promise(function(_0x46e9ae,_0xd4eedf){var _0x4f155c={'id':_0x31ace1,'name':_0x486691,'custom':_0x2e1ed3};if(_0x16e933===_0x9c5a('0xb5')){_0x4f155c[_0x9c5a('0x37')]=[{'name':'True','value':_0x9c5a('0xb6')},{'name':_0x9c5a('0xb7'),'value':_0x9c5a('0xb8')}];_0x46e9ae(_0x4f155c);}else{var _0x48bb85={'method':_0x9c5a('0xa2'),'uri':_0x67842f+_0x9c5a('0xb9')+_0x31ace1,'auth':_0x608a96,'json':!![]};return rp(_0x48bb85)['then'](function(_0x1af4c6){var _0x1cb945=[];if(_0x1af4c6[_0x9c5a('0xa4')][_0x9c5a('0x30')]>0x0){_0x1af4c6[_0x9c5a('0xa4')][_0x9c5a('0xa9')](function(_0x5e14dc){if(_0x5e14dc['inactive']===_0x9c5a('0xb8')){var _0x23fe70={'name':_0x5e14dc[_0x9c5a('0xab')],'value':_0x5e14dc[_0x9c5a('0xba')]};_0x1cb945['push'](_0x23fe70);}});}_0x4f155c[_0x9c5a('0x37')]=_0x1cb945;if(_0x4f155c[_0x9c5a('0x37')]['length']>0x0){_0x46e9ae(_0x4f155c);}else{if(_0x2e1ed3==![]){_0x46e9ae();}else{_0x46e9ae(_0x4f155c);}}});}});}
\ No newline at end of file
index 858b3ac..f9fb977 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x038b=['path','rimraf','./intServicenowAccount.attributes','../../components/integrations/configuration','define','ServicenowAccount','util','../../config/logger','api','bluebird'];(function(_0x4d1305,_0x1a0ac8){var _0x54e9c8=function(_0x5ac135){while(--_0x5ac135){_0x4d1305['push'](_0x4d1305['shift']());}};_0x54e9c8(++_0x1a0ac8);}(_0x038b,0x114));var _0xb038=function(_0x52b6ff,_0xa8ff9e){_0x52b6ff=_0x52b6ff-0x0;var _0x433b34=_0x038b[_0x52b6ff];return _0x433b34;};'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'));var integrations=require(_0xb038('0x7'));module['exports']=function(_0x54e1e7,_0x2e3e64){return _0x54e1e7[_0xb038('0x8')](_0xb038('0x9'),attributes,{'tableName':'int_servicenow_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7217=['api','moment','bluebird','request-promise','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','ServicenowAccount','int_servicenow_accounts','lodash','../../config/logger'];(function(_0x456b0a,_0x415edb){var _0x541d9e=function(_0x6852ca){while(--_0x6852ca){_0x456b0a['push'](_0x456b0a['shift']());}};_0x541d9e(++_0x415edb);}(_0x7217,0x19e));var _0x7721=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0x7217[_0xa1e3e3];return _0xc980e9;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var logger=require(_0x7721('0x1'))(_0x7721('0x2'));var moment=require(_0x7721('0x3'));var BPromise=require(_0x7721('0x4'));var rp=require(_0x7721('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7721('0x6'));var attributes=require(_0x7721('0x7'));var integrations=require(_0x7721('0x8'));module[_0x7721('0x9')]=function(_0xb239e0,_0xf7ff37){return _0xb239e0[_0x7721('0xa')](_0x7721('0xb'),attributes,{'tableName':_0x7721('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c0c5950..645003e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa61c=['options','raw','where','attributes','include','map','model','GetServicenowAccount','find','ShowServicenowAccount','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','request','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','ServicenowAccount','findAll'];(function(_0x1abb09,_0x18ee91){var _0xea1c07=function(_0x38f42c){while(--_0x38f42c){_0x1abb09['push'](_0x1abb09['shift']());}};_0xea1c07(++_0x18ee91);}(_0xa61c,0x1bc));var _0xca61=function(_0x24499a,_0x226e12){_0x24499a=_0x24499a-0x0;var _0x328a56=_0xa61c[_0x24499a];return _0x328a56;};'use strict';var _=require(_0xca61('0x0'));var util=require(_0xca61('0x1'));var moment=require(_0xca61('0x2'));var BPromise=require('bluebird');var rs=require(_0xca61('0x3'));var fs=require('fs');var Redis=require(_0xca61('0x4'));var db=require(_0xca61('0x5'))['db'];var utils=require(_0xca61('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xca61('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1a16b3,_0x43f532,_0x376743){return new BPromise(function(_0x59bec1,_0x1e4c8f){return client[_0xca61('0x8')](_0x1a16b3,_0x376743)[_0xca61('0x9')](function(_0x255836){logger[_0xca61('0xa')](_0xca61('0xb'),_0x43f532,_0xca61('0xc'));logger[_0xca61('0xd')]('ServicenowAccount,\x20%s,\x20%s,\x20%s',_0x43f532,'request\x20sent',JSON[_0xca61('0xe')](_0x255836));if(_0x255836[_0xca61('0xf')]){if(_0x255836['error']['code']===0x1f4){logger['error'](_0xca61('0xb'),_0x43f532,_0x255836['error']['message']);return _0x1e4c8f(_0x255836[_0xca61('0xf')]['message']);}logger['error'](_0xca61('0xb'),_0x43f532,_0x255836[_0xca61('0xf')][_0xca61('0x10')]);return _0x59bec1(_0x255836[_0xca61('0xf')][_0xca61('0x10')]);}else{logger['info']('ServicenowAccount,\x20%s,\x20%s',_0x43f532,'request\x20sent');_0x59bec1(_0x255836[_0xca61('0x11')][_0xca61('0x10')]);}})[_0xca61('0x12')](function(_0x46b25c){logger[_0xca61('0xf')](_0xca61('0xb'),_0x43f532,_0x46b25c);_0x1e4c8f(_0x46b25c);});});}exports['GetServicenowAccount']=function(_0x3803d8){var _0xfef648=this;return new Promise(function(_0x3d62f2,_0x58de2a){return db[_0xca61('0x13')][_0xca61('0x14')]({'raw':_0x3803d8[_0xca61('0x15')]?_0x3803d8[_0xca61('0x15')][_0xca61('0x16')]===undefined?!![]:![]:!![],'where':_0x3803d8[_0xca61('0x15')]?_0x3803d8['options'][_0xca61('0x17')]||null:null,'attributes':_0x3803d8[_0xca61('0x15')]?_0x3803d8[_0xca61('0x15')][_0xca61('0x18')]||null:null,'limit':_0x3803d8[_0xca61('0x15')]?_0x3803d8[_0xca61('0x15')]['limit']||null:null,'include':_0x3803d8[_0xca61('0x15')]?_0x3803d8[_0xca61('0x15')][_0xca61('0x19')]?_[_0xca61('0x1a')](_0x3803d8[_0xca61('0x15')]['include'],function(_0xed0fb8){return{'model':db[_0xed0fb8[_0xca61('0x1b')]],'as':_0xed0fb8['as'],'attributes':_0xed0fb8[_0xca61('0x18')],'include':_0xed0fb8[_0xca61('0x19')]?_[_0xca61('0x1a')](_0xed0fb8[_0xca61('0x19')],function(_0x1cc19f){return{'model':db[_0x1cc19f['model']],'as':_0x1cc19f['as'],'attributes':_0x1cc19f[_0xca61('0x18')],'include':_0x1cc19f[_0xca61('0x19')]?_[_0xca61('0x1a')](_0x1cc19f[_0xca61('0x19')],function(_0x1d98ae){return{'model':db[_0x1d98ae['model']],'as':_0x1d98ae['as'],'attributes':_0x1d98ae[_0xca61('0x18')]};}):[]};}):[]};}):[]:[]})[_0xca61('0x9')](function(_0x415e16){logger[_0xca61('0xa')](_0xca61('0x1c'),_0x3803d8);logger[_0xca61('0xd')](_0xca61('0x1c'),_0x3803d8,JSON[_0xca61('0xe')](_0x415e16));_0x3d62f2(_0x415e16);})[_0xca61('0x12')](function(_0x483eed){logger['error'](_0xca61('0x1c'),_0x483eed[_0xca61('0x10')],_0x3803d8);_0x58de2a(_0xfef648[_0xca61('0xf')](0x1f4,_0x483eed[_0xca61('0x10')]));});});};exports['ShowServicenowAccount']=function(_0x3dbb88){var _0x4c40f0=this;return new Promise(function(_0x48228b,_0x4eadfe){return db['ServicenowAccount'][_0xca61('0x1d')]({'raw':_0x3dbb88['options']?_0x3dbb88[_0xca61('0x15')][_0xca61('0x16')]===undefined?!![]:![]:!![],'where':_0x3dbb88[_0xca61('0x15')]?_0x3dbb88[_0xca61('0x15')][_0xca61('0x17')]||null:null,'attributes':_0x3dbb88[_0xca61('0x15')]?_0x3dbb88[_0xca61('0x15')][_0xca61('0x18')]||null:null,'include':_0x3dbb88['options']?_0x3dbb88[_0xca61('0x15')]['include']?_[_0xca61('0x1a')](_0x3dbb88[_0xca61('0x15')]['include'],function(_0x4c754c){return{'model':db[_0x4c754c[_0xca61('0x1b')]],'as':_0x4c754c['as'],'attributes':_0x4c754c[_0xca61('0x18')],'include':_0x4c754c[_0xca61('0x19')]?_['map'](_0x4c754c['include'],function(_0x1741ca){return{'model':db[_0x1741ca[_0xca61('0x1b')]],'as':_0x1741ca['as'],'attributes':_0x1741ca[_0xca61('0x18')],'include':_0x1741ca[_0xca61('0x19')]?_['map'](_0x1741ca[_0xca61('0x19')],function(_0x30cbb6){return{'model':db[_0x30cbb6[_0xca61('0x1b')]],'as':_0x30cbb6['as'],'attributes':_0x30cbb6[_0xca61('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x38507a){logger[_0xca61('0xa')]('ShowServicenowAccount',_0x3dbb88);logger[_0xca61('0xd')](_0xca61('0x1e'),_0x3dbb88,JSON['stringify'](_0x38507a));_0x48228b(_0x38507a);})[_0xca61('0x12')](function(_0x28e0f5){logger[_0xca61('0xf')](_0xca61('0x1e'),_0x28e0f5[_0xca61('0x10')],_0x3dbb88);_0x4eadfe(_0x4c40f0[_0xca61('0xf')](0x1f4,_0x28e0f5[_0xca61('0x10')]));});});};
\ No newline at end of file
+var _0xaf26=['find','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ServicenowAccount,\x20%s,\x20%s','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetServicenowAccount','findAll','options','raw','attributes','include','map','model','ShowServicenowAccount','ServicenowAccount'];(function(_0x6ea9c6,_0x3cb3cb){var _0x3a4b74=function(_0x4f8126){while(--_0x4f8126){_0x6ea9c6['push'](_0x6ea9c6['shift']());}};_0x3a4b74(++_0x3cb3cb);}(_0xaf26,0x182));var _0x6af2=function(_0x2984d0,_0x1a7211){_0x2984d0=_0x2984d0-0x0;var _0x2885f2=_0xaf26[_0x2984d0];return _0x2885f2;};'use strict';var _=require(_0x6af2('0x0'));var util=require(_0x6af2('0x1'));var moment=require('moment');var BPromise=require(_0x6af2('0x2'));var rs=require(_0x6af2('0x3'));var fs=require('fs');var Redis=require(_0x6af2('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6af2('0x5'));var logger=require(_0x6af2('0x6'))(_0x6af2('0x7'));var config=require(_0x6af2('0x8'));var jayson=require(_0x6af2('0x9'));var client=jayson[_0x6af2('0xa')][_0x6af2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x310679,_0x32cd2c,_0x15f122){return new BPromise(function(_0x17c25f,_0x3b0453){return client['request'](_0x310679,_0x15f122)[_0x6af2('0xc')](function(_0x29eeb8){logger[_0x6af2('0xd')](_0x6af2('0xe'),_0x32cd2c,'request\x20sent');logger[_0x6af2('0xf')](_0x6af2('0x10'),_0x32cd2c,_0x6af2('0x11'),JSON[_0x6af2('0x12')](_0x29eeb8));if(_0x29eeb8[_0x6af2('0x13')]){if(_0x29eeb8['error'][_0x6af2('0x14')]===0x1f4){logger['error'](_0x6af2('0xe'),_0x32cd2c,_0x29eeb8[_0x6af2('0x13')]['message']);return _0x3b0453(_0x29eeb8[_0x6af2('0x13')][_0x6af2('0x15')]);}logger[_0x6af2('0x13')]('ServicenowAccount,\x20%s,\x20%s',_0x32cd2c,_0x29eeb8[_0x6af2('0x13')][_0x6af2('0x15')]);return _0x17c25f(_0x29eeb8[_0x6af2('0x13')][_0x6af2('0x15')]);}else{logger[_0x6af2('0xd')](_0x6af2('0xe'),_0x32cd2c,'request\x20sent');_0x17c25f(_0x29eeb8[_0x6af2('0x16')][_0x6af2('0x15')]);}})[_0x6af2('0x17')](function(_0x5ec77d){logger[_0x6af2('0x13')](_0x6af2('0xe'),_0x32cd2c,_0x5ec77d);_0x3b0453(_0x5ec77d);});});}exports[_0x6af2('0x18')]=function(_0x5e291f){var _0x4ab009=this;return new Promise(function(_0x449858,_0x4f34fc){return db['ServicenowAccount'][_0x6af2('0x19')]({'raw':_0x5e291f[_0x6af2('0x1a')]?_0x5e291f[_0x6af2('0x1a')][_0x6af2('0x1b')]===undefined?!![]:![]:!![],'where':_0x5e291f[_0x6af2('0x1a')]?_0x5e291f[_0x6af2('0x1a')]['where']||null:null,'attributes':_0x5e291f[_0x6af2('0x1a')]?_0x5e291f['options'][_0x6af2('0x1c')]||null:null,'limit':_0x5e291f[_0x6af2('0x1a')]?_0x5e291f[_0x6af2('0x1a')]['limit']||null:null,'include':_0x5e291f[_0x6af2('0x1a')]?_0x5e291f[_0x6af2('0x1a')][_0x6af2('0x1d')]?_[_0x6af2('0x1e')](_0x5e291f[_0x6af2('0x1a')][_0x6af2('0x1d')],function(_0x1e87a1){return{'model':db[_0x1e87a1[_0x6af2('0x1f')]],'as':_0x1e87a1['as'],'attributes':_0x1e87a1[_0x6af2('0x1c')],'include':_0x1e87a1[_0x6af2('0x1d')]?_[_0x6af2('0x1e')](_0x1e87a1[_0x6af2('0x1d')],function(_0x266ee5){return{'model':db[_0x266ee5[_0x6af2('0x1f')]],'as':_0x266ee5['as'],'attributes':_0x266ee5[_0x6af2('0x1c')],'include':_0x266ee5['include']?_[_0x6af2('0x1e')](_0x266ee5['include'],function(_0x2efb16){return{'model':db[_0x2efb16[_0x6af2('0x1f')]],'as':_0x2efb16['as'],'attributes':_0x2efb16['attributes']};}):[]};}):[]};}):[]:[]})[_0x6af2('0xc')](function(_0x2d61f9){logger[_0x6af2('0xd')]('GetServicenowAccount',_0x5e291f);logger[_0x6af2('0xf')](_0x6af2('0x18'),_0x5e291f,JSON['stringify'](_0x2d61f9));_0x449858(_0x2d61f9);})[_0x6af2('0x17')](function(_0x27afdc){logger[_0x6af2('0x13')]('GetServicenowAccount',_0x27afdc['message'],_0x5e291f);_0x4f34fc(_0x4ab009[_0x6af2('0x13')](0x1f4,_0x27afdc[_0x6af2('0x15')]));});});};exports[_0x6af2('0x20')]=function(_0x2aeada){var _0x5d339b=this;return new Promise(function(_0x1f7d7f,_0x239202){return db[_0x6af2('0x21')][_0x6af2('0x22')]({'raw':_0x2aeada['options']?_0x2aeada[_0x6af2('0x1a')][_0x6af2('0x1b')]===undefined?!![]:![]:!![],'where':_0x2aeada[_0x6af2('0x1a')]?_0x2aeada[_0x6af2('0x1a')]['where']||null:null,'attributes':_0x2aeada[_0x6af2('0x1a')]?_0x2aeada[_0x6af2('0x1a')][_0x6af2('0x1c')]||null:null,'include':_0x2aeada[_0x6af2('0x1a')]?_0x2aeada[_0x6af2('0x1a')]['include']?_[_0x6af2('0x1e')](_0x2aeada['options'][_0x6af2('0x1d')],function(_0x21ff72){return{'model':db[_0x21ff72[_0x6af2('0x1f')]],'as':_0x21ff72['as'],'attributes':_0x21ff72[_0x6af2('0x1c')],'include':_0x21ff72[_0x6af2('0x1d')]?_['map'](_0x21ff72['include'],function(_0x1d456a){return{'model':db[_0x1d456a[_0x6af2('0x1f')]],'as':_0x1d456a['as'],'attributes':_0x1d456a['attributes'],'include':_0x1d456a[_0x6af2('0x1d')]?_[_0x6af2('0x1e')](_0x1d456a[_0x6af2('0x1d')],function(_0x35dbc4){return{'model':db[_0x35dbc4[_0x6af2('0x1f')]],'as':_0x35dbc4['as'],'attributes':_0x35dbc4['attributes']};}):[]};}):[]};}):[]:[]})[_0x6af2('0xc')](function(_0xab03e3){logger[_0x6af2('0xd')](_0x6af2('0x20'),_0x2aeada);logger[_0x6af2('0xf')](_0x6af2('0x20'),_0x2aeada,JSON['stringify'](_0xab03e3));_0x1f7d7f(_0xab03e3);})[_0x6af2('0x17')](function(_0x1a0cb1){logger[_0x6af2('0x13')](_0x6af2('0x20'),_0x1a0cb1[_0x6af2('0x15')],_0x2aeada);_0x239202(_0x5d339b[_0x6af2('0x13')](0x1f4,_0x1a0cb1[_0x6af2('0x15')]));});});};
\ No newline at end of file
index 9c97df6..604a3f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5949=['/:id/descriptions','getDescriptions','post','create','put','update','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','index','get','isAuthenticated','show','/:id/fields','getFields'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x5949,0x14a));var _0x9594=function(_0x285c85,_0x132c21){_0x285c85=_0x285c85-0x0;var _0x2f81cd=_0x5949[_0x285c85];return _0x2f81cd;};'use strict';var multer=require(_0x9594('0x0'));var util=require('util');var path=require(_0x9594('0x1'));var timeout=require('connect-timeout');var express=require(_0x9594('0x2'));var router=express[_0x9594('0x3')]();var fs_extra=require(_0x9594('0x4'));var auth=require(_0x9594('0x5'));var interaction=require(_0x9594('0x6'));var config=require(_0x9594('0x7'));var controller=require(_0x9594('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x9594('0x9')]);router[_0x9594('0xa')]('/:id',auth[_0x9594('0xb')](),controller[_0x9594('0xc')]);router[_0x9594('0xa')](_0x9594('0xd'),auth[_0x9594('0xb')](),controller[_0x9594('0xe')]);router[_0x9594('0xa')]('/:id/subjects',auth[_0x9594('0xb')](),controller['getSubjects']);router['get'](_0x9594('0xf'),auth[_0x9594('0xb')](),controller[_0x9594('0x10')]);router[_0x9594('0x11')]('/',auth[_0x9594('0xb')](),controller[_0x9594('0x12')]);router[_0x9594('0x13')]('/:id',auth[_0x9594('0xb')](),controller[_0x9594('0x14')]);router[_0x9594('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x9594('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xeb0e=['multer','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get','/:id','/:id/fields','isAuthenticated','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','create','put','update','delete','destroy','exports'];(function(_0xba802c,_0x28f371){var _0x1a81ad=function(_0x2d3dc8){while(--_0x2d3dc8){_0xba802c['push'](_0xba802c['shift']());}};_0x1a81ad(++_0x28f371);}(_0xeb0e,0xf2));var _0xeeb0=function(_0x499796,_0x3d0416){_0x499796=_0x499796-0x0;var _0x243a4f=_0xeb0e[_0x499796];return _0x243a4f;};'use strict';var multer=require(_0xeeb0('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xeeb0('0x1'));var express=require(_0xeeb0('0x2'));var router=express[_0xeeb0('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xeeb0('0x4'));var config=require(_0xeeb0('0x5'));var controller=require(_0xeeb0('0x6'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xeeb0('0x7')](_0xeeb0('0x8'),auth['isAuthenticated'](),controller['show']);router[_0xeeb0('0x7')](_0xeeb0('0x9'),auth[_0xeeb0('0xa')](),controller[_0xeeb0('0xb')]);router[_0xeeb0('0x7')](_0xeeb0('0xc'),auth[_0xeeb0('0xa')](),controller['getSubjects']);router['get'](_0xeeb0('0xd'),auth[_0xeeb0('0xa')](),controller[_0xeeb0('0xe')]);router[_0xeeb0('0xf')]('/',auth[_0xeeb0('0xa')](),controller[_0xeeb0('0x10')]);router[_0xeeb0('0x11')]('/:id',auth[_0xeeb0('0xa')](),controller[_0xeeb0('0x12')]);router[_0xeeb0('0x13')](_0xeeb0('0x8'),auth[_0xeeb0('0xa')](),controller[_0xeeb0('0x14')]);module[_0xeeb0('0x15')]=router;
\ No newline at end of file
index a48c011..049f491 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc514=['STRING','exports'];(function(_0x3b58da,_0x4559e7){var _0x1b8e7d=function(_0x390340){while(--_0x390340){_0x3b58da['push'](_0x3b58da['shift']());}};_0x1b8e7d(++_0x4559e7);}(_0xc514,0x127));var _0x4c51=function(_0x1ee938,_0x22267f){_0x1ee938=_0x1ee938-0x0;var _0x3ebf3b=_0xc514[_0x1ee938];return _0x3ebf3b;};'use strict';var Sequelize=require('sequelize');module[_0x4c51('0x0')]={'name':{'type':Sequelize[_0x4c51('0x1')]},'description':{'type':Sequelize[_0x4c51('0x1')]}};
\ No newline at end of file
+var _0x9d86=['sequelize','exports','STRING'];(function(_0xf363f0,_0x3b5eeb){var _0x55a386=function(_0x548349){while(--_0x548349){_0xf363f0['push'](_0xf363f0['shift']());}};_0x55a386(++_0x3b5eeb);}(_0x9d86,0x1a1));var _0x69d8=function(_0x2510e5,_0x51b145){_0x2510e5=_0x2510e5-0x0;var _0x53e8e8=_0x9d86[_0x2510e5];return _0x53e8e8;};'use strict';var Sequelize=require(_0x69d8('0x0'));module[_0x69d8('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x69d8('0x2')]}};
\ No newline at end of file
index 6886bb1..ea03943 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd1b=['ServicenowConfiguration','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','catch','show','params','find','create','body','getFields','findOne','ServicenowField','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','status','end','offset','limit','count','set','json','apply','reject','update','then','destroy','sendStatus','error','stack','send','map'];(function(_0x34f545,_0x2bd2ee){var _0x1ff6b8=function(_0x582e3b){while(--_0x582e3b){_0x34f545['push'](_0x34f545['shift']());}};_0x1ff6b8(++_0x2bd2ee);}(_0xcd1b,0x72));var _0xbcd1=function(_0x246c42,_0x38f740){_0x246c42=_0x246c42-0x0;var _0x3d2eef=_0xcd1b[_0x246c42];return _0x3d2eef;};'use strict';var emlformat=require(_0xbcd1('0x0'));var rimraf=require(_0xbcd1('0x1'));var zipdir=require(_0xbcd1('0x2'));var jsonpatch=require(_0xbcd1('0x3'));var rp=require(_0xbcd1('0x4'));var moment=require('moment');var BPromise=require(_0xbcd1('0x5'));var Mustache=require(_0xbcd1('0x6'));var util=require(_0xbcd1('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xbcd1('0x8'));var ejs=require(_0xbcd1('0x9'));var fs=require('fs');var fs_extra=require(_0xbcd1('0xa'));var _=require(_0xbcd1('0xb'));var squel=require(_0xbcd1('0xc'));var crypto=require(_0xbcd1('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xbcd1('0xe'));var toCsv=require(_0xbcd1('0x8'));var querystring=require('querystring');var Papa=require(_0xbcd1('0xf'));var Redis=require(_0xbcd1('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xbcd1('0x11'));var as=require(_0xbcd1('0x12'));var hardwareService=require(_0xbcd1('0x13'));var logger=require(_0xbcd1('0x14'))('api');var utils=require(_0xbcd1('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xbcd1('0x16'))['db'];function respondWithStatusCode(_0x107a5b,_0x1e1029){_0x1e1029=_0x1e1029||0xcc;return function(_0x2e7445){if(_0x2e7445){return _0x107a5b['sendStatus'](_0x1e1029);}return _0x107a5b[_0xbcd1('0x17')](_0x1e1029)[_0xbcd1('0x18')]();};}function respondWithResult(_0x1e2883,_0x526677){_0x526677=_0x526677||0xc8;return function(_0x382712){if(_0x382712){return _0x1e2883[_0xbcd1('0x17')](_0x526677)['json'](_0x382712);}};}function respondWithFilteredResult(_0x2ac863,_0x1cddee){return function(_0x50ad4f){if(_0x50ad4f){var _0x2ad6ca=typeof _0x1cddee[_0xbcd1('0x19')]==='undefined'&&typeof _0x1cddee[_0xbcd1('0x1a')]==='undefined';var _0x59b530=_0x50ad4f[_0xbcd1('0x1b')];var _0x2bfcd8=_0x2ad6ca?0x0:_0x1cddee[_0xbcd1('0x19')];var _0x1e32e3=_0x2ad6ca?_0x50ad4f[_0xbcd1('0x1b')]:_0x1cddee['offset']+_0x1cddee['limit'];var _0x20fe20;if(_0x1e32e3>=_0x59b530){_0x1e32e3=_0x59b530;_0x20fe20=0xc8;}else{_0x20fe20=0xce;}_0x2ac863['status'](_0x20fe20);return _0x2ac863[_0xbcd1('0x1c')]('Content-Range',_0x2bfcd8+'-'+_0x1e32e3+'/'+_0x59b530)[_0xbcd1('0x1d')](_0x50ad4f);}return null;};}function patchUpdates(_0x310b7d){return function(_0x11a785){try{jsonpatch[_0xbcd1('0x1e')](_0x11a785,_0x310b7d,!![]);}catch(_0x1294f3){return BPromise[_0xbcd1('0x1f')](_0x1294f3);}return _0x11a785['save']();};}function saveUpdates(_0x347143,_0xe20454){return function(_0x3257a8){if(_0x3257a8){return _0x3257a8[_0xbcd1('0x20')](_0x347143)[_0xbcd1('0x21')](function(_0x283dfb){return _0x283dfb;});}return null;};}function removeEntity(_0x29a434,_0xa6879b){return function(_0xf65efb){if(_0xf65efb){return _0xf65efb[_0xbcd1('0x22')]()['then'](function(){_0x29a434[_0xbcd1('0x17')](0xcc)[_0xbcd1('0x18')]();});}};}function handleEntityNotFound(_0x4f787d,_0x37e59a){return function(_0x54d084){if(!_0x54d084){_0x4f787d[_0xbcd1('0x23')](0x194);}return _0x54d084;};}function handleError(_0x2ab56a,_0x20a866){_0x20a866=_0x20a866||0x1f4;return function(_0x15639c){logger[_0xbcd1('0x24')](_0x15639c[_0xbcd1('0x25')]);if(_0x15639c['name']){delete _0x15639c['name'];}_0x2ab56a['status'](_0x20a866)[_0xbcd1('0x26')](_0x15639c);};}exports['index']=function(_0x4e2cd2,_0x36b0b7){var _0x226612={},_0x32f102={},_0x294e1c={'count':0x0,'rows':[]};var _0x1d81c4=_[_0xbcd1('0x27')](db[_0xbcd1('0x28')][_0xbcd1('0x29')],function(_0x4d273c){return{'name':_0x4d273c[_0xbcd1('0x2a')],'type':_0x4d273c[_0xbcd1('0x2b')][_0xbcd1('0x2c')]};});_0x32f102[_0xbcd1('0x2d')]=_[_0xbcd1('0x27')](_0x1d81c4,_0xbcd1('0x2e'));_0x32f102[_0xbcd1('0x2f')]=_[_0xbcd1('0x30')](_0x4e2cd2[_0xbcd1('0x2f')]);_0x32f102[_0xbcd1('0x31')]=_[_0xbcd1('0x32')](_0x32f102[_0xbcd1('0x2d')],_0x32f102[_0xbcd1('0x2f')]);_0x226612[_0xbcd1('0x33')]=_[_0xbcd1('0x32')](_0x32f102[_0xbcd1('0x2d')],qs[_0xbcd1('0x34')](_0x4e2cd2[_0xbcd1('0x2f')][_0xbcd1('0x34')]));_0x226612[_0xbcd1('0x33')]=_0x226612[_0xbcd1('0x33')][_0xbcd1('0x35')]?_0x226612[_0xbcd1('0x33')]:_0x32f102[_0xbcd1('0x2d')];if(!_0x4e2cd2[_0xbcd1('0x2f')][_0xbcd1('0x36')](_0xbcd1('0x37'))){_0x226612[_0xbcd1('0x1a')]=qs[_0xbcd1('0x1a')](_0x4e2cd2[_0xbcd1('0x2f')]['limit']);_0x226612[_0xbcd1('0x19')]=qs[_0xbcd1('0x19')](_0x4e2cd2[_0xbcd1('0x2f')][_0xbcd1('0x19')]);}_0x226612[_0xbcd1('0x38')]=qs['sort'](_0x4e2cd2['query'][_0xbcd1('0x39')]);_0x226612['where']=qs['filters'](_[_0xbcd1('0x3a')](_0x4e2cd2[_0xbcd1('0x2f')],_0x32f102[_0xbcd1('0x31')]),_0x1d81c4);if(_0x4e2cd2[_0xbcd1('0x2f')][_0xbcd1('0x3b')]){_0x226612[_0xbcd1('0x3c')]=_['merge'](_0x226612[_0xbcd1('0x3c')],{'$or':_[_0xbcd1('0x27')](_0x1d81c4,function(_0x575aa8){if(_0x575aa8[_0xbcd1('0x2b')]!=='VIRTUAL'){var _0x394bd5={};_0x394bd5[_0x575aa8[_0xbcd1('0x2e')]]={'$like':'%'+_0x4e2cd2[_0xbcd1('0x2f')][_0xbcd1('0x3b')]+'%'};return _0x394bd5;}})});}_0x226612=_[_0xbcd1('0x3d')]({},_0x226612,_0x4e2cd2[_0xbcd1('0x3e')]);var _0x7dc773={'where':_0x226612['where']};return db[_0xbcd1('0x28')][_0xbcd1('0x1b')](_0x7dc773)[_0xbcd1('0x21')](function(_0x3bb0c1){_0x294e1c[_0xbcd1('0x1b')]=_0x3bb0c1;if(_0x4e2cd2['query'][_0xbcd1('0x3f')]){_0x226612[_0xbcd1('0x40')]=[{'all':!![]}];}return db['ServicenowConfiguration'][_0xbcd1('0x41')](_0x226612);})[_0xbcd1('0x21')](function(_0x38414c){_0x294e1c['rows']=_0x38414c;return _0x294e1c;})[_0xbcd1('0x21')](respondWithFilteredResult(_0x36b0b7,_0x226612))[_0xbcd1('0x42')](handleError(_0x36b0b7,null));};exports[_0xbcd1('0x43')]=function(_0x42ccd4,_0x5248b5){var _0x24ed84={'raw':![],'where':{'id':_0x42ccd4[_0xbcd1('0x44')]['id']}},_0x1bc856={};_0x1bc856[_0xbcd1('0x2d')]=_[_0xbcd1('0x30')](db[_0xbcd1('0x28')]['rawAttributes']);_0x1bc856[_0xbcd1('0x2f')]=_['keys'](_0x42ccd4[_0xbcd1('0x2f')]);_0x1bc856[_0xbcd1('0x31')]=_[_0xbcd1('0x32')](_0x1bc856['model'],_0x1bc856[_0xbcd1('0x2f')]);_0x24ed84['attributes']=_[_0xbcd1('0x32')](_0x1bc856[_0xbcd1('0x2d')],qs[_0xbcd1('0x34')](_0x42ccd4[_0xbcd1('0x2f')]['fields']));_0x24ed84[_0xbcd1('0x33')]=_0x24ed84['attributes'][_0xbcd1('0x35')]?_0x24ed84[_0xbcd1('0x33')]:_0x1bc856[_0xbcd1('0x2d')];if(_0x42ccd4[_0xbcd1('0x2f')][_0xbcd1('0x3f')]){_0x24ed84[_0xbcd1('0x40')]=[{'all':!![]}];}_0x24ed84=_[_0xbcd1('0x3d')]({},_0x24ed84,_0x42ccd4[_0xbcd1('0x3e')]);return db[_0xbcd1('0x28')][_0xbcd1('0x45')](_0x24ed84)[_0xbcd1('0x21')](handleEntityNotFound(_0x5248b5,null))['then'](respondWithResult(_0x5248b5,null))[_0xbcd1('0x42')](handleError(_0x5248b5,null));};exports['create']=function(_0x178da5,_0x305c9d){return db['ServicenowConfiguration'][_0xbcd1('0x46')](_0x178da5[_0xbcd1('0x47')],{})[_0xbcd1('0x21')](respondWithResult(_0x305c9d,0xc9))[_0xbcd1('0x42')](handleError(_0x305c9d,null));};exports[_0xbcd1('0x20')]=function(_0x157014,_0x134b69){if(_0x157014['body']['id']){delete _0x157014[_0xbcd1('0x47')]['id'];}return db[_0xbcd1('0x28')][_0xbcd1('0x45')]({'where':{'id':_0x157014[_0xbcd1('0x44')]['id']}})[_0xbcd1('0x21')](handleEntityNotFound(_0x134b69,null))[_0xbcd1('0x21')](saveUpdates(_0x157014[_0xbcd1('0x47')],null))[_0xbcd1('0x21')](respondWithResult(_0x134b69,null))[_0xbcd1('0x42')](handleError(_0x134b69,null));};exports[_0xbcd1('0x22')]=function(_0x250d25,_0x2f1c2a){return db[_0xbcd1('0x28')]['find']({'where':{'id':_0x250d25['params']['id']}})[_0xbcd1('0x21')](handleEntityNotFound(_0x2f1c2a,null))[_0xbcd1('0x21')](removeEntity(_0x2f1c2a,null))[_0xbcd1('0x42')](handleError(_0x2f1c2a,null));};exports[_0xbcd1('0x48')]=function(_0x58950e,_0x2c0362,_0xd24520){var _0x291156={};var _0x460e66={};var _0x226d2f;var _0x5325c1;return db['ServicenowConfiguration'][_0xbcd1('0x49')]({'where':{'id':_0x58950e[_0xbcd1('0x44')]['id']}})['then'](handleEntityNotFound(_0x2c0362,null))['then'](function(_0x5828d6){if(_0x5828d6){_0x226d2f=_0x5828d6;_0x460e66['model']=_[_0xbcd1('0x30')](db[_0xbcd1('0x4a')][_0xbcd1('0x29')]);_0x460e66['query']=_[_0xbcd1('0x30')](_0x58950e['query']);_0x460e66[_0xbcd1('0x31')]=_[_0xbcd1('0x32')](_0x460e66[_0xbcd1('0x2d')],_0x460e66['query']);_0x291156['attributes']=_['intersection'](_0x460e66[_0xbcd1('0x2d')],qs[_0xbcd1('0x34')](_0x58950e[_0xbcd1('0x2f')]['fields']));_0x291156[_0xbcd1('0x33')]=_0x291156[_0xbcd1('0x33')][_0xbcd1('0x35')]?_0x291156[_0xbcd1('0x33')]:_0x460e66[_0xbcd1('0x2d')];_0x291156['order']=qs[_0xbcd1('0x39')](_0x58950e[_0xbcd1('0x2f')][_0xbcd1('0x39')]);_0x291156['where']=qs[_0xbcd1('0x31')](_[_0xbcd1('0x3a')](_0x58950e['query'],_0x460e66[_0xbcd1('0x31')]));if(_0x58950e['query']['filter']){_0x291156[_0xbcd1('0x3c')]=_[_0xbcd1('0x3d')](_0x291156[_0xbcd1('0x3c')],{'$or':_[_0xbcd1('0x27')](_0x291156[_0xbcd1('0x33')],function(_0x54d0d){var _0x462f6f={};_0x462f6f[_0x54d0d]={'$like':'%'+_0x58950e['query'][_0xbcd1('0x3b')]+'%'};return _0x462f6f;})});}_0x291156=_[_0xbcd1('0x3d')]({},_0x291156,_0x58950e[_0xbcd1('0x3e')]);return _0x226d2f[_0xbcd1('0x48')](_0x291156);}})[_0xbcd1('0x21')](function(_0x17d4a0){if(_0x17d4a0){_0x5325c1=_0x17d4a0['length'];if(!_0x58950e['query'][_0xbcd1('0x36')](_0xbcd1('0x37'))){_0x291156[_0xbcd1('0x1a')]=qs[_0xbcd1('0x1a')](_0x58950e['query'][_0xbcd1('0x1a')]);_0x291156['offset']=qs[_0xbcd1('0x19')](_0x58950e[_0xbcd1('0x2f')]['offset']);}return _0x226d2f['getFields'](_0x291156);}})[_0xbcd1('0x21')](function(_0x114c96){if(_0x114c96){return _0x114c96?{'count':_0x5325c1,'rows':_0x114c96}:null;}})['then'](respondWithResult(_0x2c0362,null))[_0xbcd1('0x42')](handleError(_0x2c0362,null));};exports[_0xbcd1('0x4b')]=function(_0x553d26,_0x1a0044,_0x236ecf){var _0x213b56={};var _0xc40d55={};var _0x23d83b;var _0x2bdd2b;return db[_0xbcd1('0x28')][_0xbcd1('0x49')]({'where':{'id':_0x553d26['params']['id']}})[_0xbcd1('0x21')](handleEntityNotFound(_0x1a0044,null))[_0xbcd1('0x21')](function(_0x56ed14){if(_0x56ed14){_0x23d83b=_0x56ed14;_0xc40d55[_0xbcd1('0x2d')]=_[_0xbcd1('0x30')](db[_0xbcd1('0x4a')][_0xbcd1('0x29')]);_0xc40d55[_0xbcd1('0x2f')]=_[_0xbcd1('0x30')](_0x553d26[_0xbcd1('0x2f')]);_0xc40d55[_0xbcd1('0x31')]=_[_0xbcd1('0x32')](_0xc40d55[_0xbcd1('0x2d')],_0xc40d55[_0xbcd1('0x2f')]);_0x213b56[_0xbcd1('0x33')]=_[_0xbcd1('0x32')](_0xc40d55[_0xbcd1('0x2d')],qs[_0xbcd1('0x34')](_0x553d26[_0xbcd1('0x2f')][_0xbcd1('0x34')]));_0x213b56[_0xbcd1('0x33')]=_0x213b56[_0xbcd1('0x33')][_0xbcd1('0x35')]?_0x213b56[_0xbcd1('0x33')]:_0xc40d55[_0xbcd1('0x2d')];_0x213b56['order']=qs[_0xbcd1('0x39')](_0x553d26[_0xbcd1('0x2f')][_0xbcd1('0x39')]);_0x213b56['where']=qs[_0xbcd1('0x31')](_[_0xbcd1('0x3a')](_0x553d26[_0xbcd1('0x2f')],_0xc40d55[_0xbcd1('0x31')]));if(_0x553d26[_0xbcd1('0x2f')][_0xbcd1('0x3b')]){_0x213b56[_0xbcd1('0x3c')]=_[_0xbcd1('0x3d')](_0x213b56[_0xbcd1('0x3c')],{'$or':_[_0xbcd1('0x27')](_0x213b56[_0xbcd1('0x33')],function(_0x8ac97e){var _0x51905a={};_0x51905a[_0x8ac97e]={'$like':'%'+_0x553d26[_0xbcd1('0x2f')][_0xbcd1('0x3b')]+'%'};return _0x51905a;})});}_0x213b56=_['merge']({},_0x213b56,_0x553d26[_0xbcd1('0x3e')]);return _0x23d83b[_0xbcd1('0x4b')](_0x213b56);}})[_0xbcd1('0x21')](function(_0x7ea153){if(_0x7ea153){_0x2bdd2b=_0x7ea153[_0xbcd1('0x35')];if(!_0x553d26[_0xbcd1('0x2f')][_0xbcd1('0x36')]('nolimit')){_0x213b56[_0xbcd1('0x1a')]=qs[_0xbcd1('0x1a')](_0x553d26[_0xbcd1('0x2f')][_0xbcd1('0x1a')]);_0x213b56[_0xbcd1('0x19')]=qs[_0xbcd1('0x19')](_0x553d26[_0xbcd1('0x2f')][_0xbcd1('0x19')]);}return _0x23d83b['getSubjects'](_0x213b56);}})['then'](function(_0x29efe9){if(_0x29efe9){return _0x29efe9?{'count':_0x2bdd2b,'rows':_0x29efe9}:null;}})['then'](respondWithResult(_0x1a0044,null))[_0xbcd1('0x42')](handleError(_0x1a0044,null));};exports[_0xbcd1('0x4c')]=function(_0x39c4f9,_0x589122,_0x2b730c){var _0x30c1ca={};var _0x3cc728={};var _0x200aeb;var _0x4334b0;return db[_0xbcd1('0x28')][_0xbcd1('0x49')]({'where':{'id':_0x39c4f9[_0xbcd1('0x44')]['id']}})[_0xbcd1('0x21')](handleEntityNotFound(_0x589122,null))[_0xbcd1('0x21')](function(_0x18d6db){if(_0x18d6db){_0x200aeb=_0x18d6db;_0x3cc728[_0xbcd1('0x2d')]=_['keys'](db[_0xbcd1('0x4a')][_0xbcd1('0x29')]);_0x3cc728[_0xbcd1('0x2f')]=_[_0xbcd1('0x30')](_0x39c4f9['query']);_0x3cc728[_0xbcd1('0x31')]=_[_0xbcd1('0x32')](_0x3cc728[_0xbcd1('0x2d')],_0x3cc728['query']);_0x30c1ca[_0xbcd1('0x33')]=_[_0xbcd1('0x32')](_0x3cc728[_0xbcd1('0x2d')],qs[_0xbcd1('0x34')](_0x39c4f9['query'][_0xbcd1('0x34')]));_0x30c1ca[_0xbcd1('0x33')]=_0x30c1ca[_0xbcd1('0x33')][_0xbcd1('0x35')]?_0x30c1ca[_0xbcd1('0x33')]:_0x3cc728[_0xbcd1('0x2d')];_0x30c1ca[_0xbcd1('0x38')]=qs[_0xbcd1('0x39')](_0x39c4f9['query'][_0xbcd1('0x39')]);_0x30c1ca[_0xbcd1('0x3c')]=qs['filters'](_[_0xbcd1('0x3a')](_0x39c4f9[_0xbcd1('0x2f')],_0x3cc728[_0xbcd1('0x31')]));if(_0x39c4f9[_0xbcd1('0x2f')][_0xbcd1('0x3b')]){_0x30c1ca['where']=_[_0xbcd1('0x3d')](_0x30c1ca[_0xbcd1('0x3c')],{'$or':_[_0xbcd1('0x27')](_0x30c1ca[_0xbcd1('0x33')],function(_0x5b2326){var _0x38e04d={};_0x38e04d[_0x5b2326]={'$like':'%'+_0x39c4f9[_0xbcd1('0x2f')][_0xbcd1('0x3b')]+'%'};return _0x38e04d;})});}_0x30c1ca=_[_0xbcd1('0x3d')]({},_0x30c1ca,_0x39c4f9[_0xbcd1('0x3e')]);return _0x200aeb[_0xbcd1('0x4c')](_0x30c1ca);}})[_0xbcd1('0x21')](function(_0x1be40f){if(_0x1be40f){_0x4334b0=_0x1be40f['length'];if(!_0x39c4f9[_0xbcd1('0x2f')][_0xbcd1('0x36')](_0xbcd1('0x37'))){_0x30c1ca['limit']=qs[_0xbcd1('0x1a')](_0x39c4f9['query'][_0xbcd1('0x1a')]);_0x30c1ca[_0xbcd1('0x19')]=qs[_0xbcd1('0x19')](_0x39c4f9[_0xbcd1('0x2f')][_0xbcd1('0x19')]);}return _0x200aeb[_0xbcd1('0x4c')](_0x30c1ca);}})['then'](function(_0x40eea1){if(_0x40eea1){return _0x40eea1?{'count':_0x4334b0,'rows':_0x40eea1}:null;}})['then'](respondWithResult(_0x589122,null))[_0xbcd1('0x42')](handleError(_0x589122,null));};
\ No newline at end of file
+var _0xcf3c=['desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','then','destroy','sendStatus','stack','name','send','index','rawAttributes','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','options','ServicenowConfiguration','includeAll','rows','catch','params','create','body','find','findOne','keys','ServicenowField','filter','getFields','getSubjects','order','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce'];(function(_0x496842,_0x56479f){var _0x589c0f=function(_0x158566){while(--_0x158566){_0x496842['push'](_0x496842['shift']());}};_0x589c0f(++_0x56479f);}(_0xcf3c,0xe3));var _0xccf3=function(_0x51cf76,_0x2cfe43){_0x51cf76=_0x51cf76-0x0;var _0x3f0e40=_0xcf3c[_0x51cf76];return _0x3f0e40;};'use strict';var emlformat=require(_0xccf3('0x0'));var rimraf=require(_0xccf3('0x1'));var zipdir=require(_0xccf3('0x2'));var jsonpatch=require(_0xccf3('0x3'));var rp=require(_0xccf3('0x4'));var moment=require(_0xccf3('0x5'));var BPromise=require(_0xccf3('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0xccf3('0x7'));var sox=require(_0xccf3('0x8'));var csv=require(_0xccf3('0x9'));var ejs=require(_0xccf3('0xa'));var fs=require('fs');var fs_extra=require(_0xccf3('0xb'));var _=require(_0xccf3('0xc'));var squel=require(_0xccf3('0xd'));var crypto=require(_0xccf3('0xe'));var jsforce=require(_0xccf3('0xf'));var deskjs=require(_0xccf3('0x10'));var toCsv=require(_0xccf3('0x9'));var querystring=require(_0xccf3('0x11'));var Papa=require(_0xccf3('0x12'));var Redis=require(_0xccf3('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xccf3('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xccf3('0x15'));var logger=require(_0xccf3('0x16'))(_0xccf3('0x17'));var utils=require(_0xccf3('0x18'));var config=require(_0xccf3('0x19'));var licenseUtil=require(_0xccf3('0x1a'));var db=require(_0xccf3('0x1b'))['db'];function respondWithStatusCode(_0x33ed7d,_0x1ac8f4){_0x1ac8f4=_0x1ac8f4||0xcc;return function(_0x475990){if(_0x475990){return _0x33ed7d['sendStatus'](_0x1ac8f4);}return _0x33ed7d[_0xccf3('0x1c')](_0x1ac8f4)[_0xccf3('0x1d')]();};}function respondWithResult(_0x4ed236,_0x2ab7b0){_0x2ab7b0=_0x2ab7b0||0xc8;return function(_0x183d39){if(_0x183d39){return _0x4ed236[_0xccf3('0x1c')](_0x2ab7b0)[_0xccf3('0x1e')](_0x183d39);}};}function respondWithFilteredResult(_0x572f00,_0x420c8b){return function(_0x207708){if(_0x207708){var _0x2fc3b4=typeof _0x420c8b['offset']==='undefined'&&typeof _0x420c8b['limit']===_0xccf3('0x1f');var _0x4a9712=_0x207708[_0xccf3('0x20')];var _0x4d2beb=_0x2fc3b4?0x0:_0x420c8b[_0xccf3('0x21')];var _0xc42623=_0x2fc3b4?_0x207708[_0xccf3('0x20')]:_0x420c8b['offset']+_0x420c8b[_0xccf3('0x22')];var _0x2e36ae;if(_0xc42623>=_0x4a9712){_0xc42623=_0x4a9712;_0x2e36ae=0xc8;}else{_0x2e36ae=0xce;}_0x572f00[_0xccf3('0x1c')](_0x2e36ae);return _0x572f00[_0xccf3('0x23')](_0xccf3('0x24'),_0x4d2beb+'-'+_0xc42623+'/'+_0x4a9712)[_0xccf3('0x1e')](_0x207708);}return null;};}function patchUpdates(_0x4e3638){return function(_0x569536){try{jsonpatch[_0xccf3('0x25')](_0x569536,_0x4e3638,!![]);}catch(_0x207c6d){return BPromise['reject'](_0x207c6d);}return _0x569536[_0xccf3('0x26')]();};}function saveUpdates(_0x4904e0,_0x41705b){return function(_0x1759b9){if(_0x1759b9){return _0x1759b9[_0xccf3('0x27')](_0x4904e0)[_0xccf3('0x28')](function(_0x37e20d){return _0x37e20d;});}return null;};}function removeEntity(_0x33ecae,_0x11da84){return function(_0x453785){if(_0x453785){return _0x453785[_0xccf3('0x29')]()[_0xccf3('0x28')](function(){_0x33ecae['status'](0xcc)[_0xccf3('0x1d')]();});}};}function handleEntityNotFound(_0x7005bb,_0x56e4b7){return function(_0x82441f){if(!_0x82441f){_0x7005bb[_0xccf3('0x2a')](0x194);}return _0x82441f;};}function handleError(_0x395ae9,_0x133d69){_0x133d69=_0x133d69||0x1f4;return function(_0x5ba312){logger['error'](_0x5ba312[_0xccf3('0x2b')]);if(_0x5ba312[_0xccf3('0x2c')]){delete _0x5ba312[_0xccf3('0x2c')];}_0x395ae9[_0xccf3('0x1c')](_0x133d69)[_0xccf3('0x2d')](_0x5ba312);};}exports[_0xccf3('0x2e')]=function(_0x1b30ad,_0x2d16e2){var _0x3002a9={},_0x2b0cbe={},_0x410f70={'count':0x0,'rows':[]};var _0x125bf8=_['map'](db['ServicenowConfiguration'][_0xccf3('0x2f')],function(_0x3ed272){return{'name':_0x3ed272['fieldName'],'type':_0x3ed272[_0xccf3('0x30')][_0xccf3('0x31')]};});_0x2b0cbe[_0xccf3('0x32')]=_[_0xccf3('0x33')](_0x125bf8,'name');_0x2b0cbe[_0xccf3('0x34')]=_['keys'](_0x1b30ad['query']);_0x2b0cbe[_0xccf3('0x35')]=_[_0xccf3('0x36')](_0x2b0cbe[_0xccf3('0x32')],_0x2b0cbe[_0xccf3('0x34')]);_0x3002a9[_0xccf3('0x37')]=_[_0xccf3('0x36')](_0x2b0cbe[_0xccf3('0x32')],qs['fields'](_0x1b30ad['query'][_0xccf3('0x38')]));_0x3002a9['attributes']=_0x3002a9['attributes'][_0xccf3('0x39')]?_0x3002a9[_0xccf3('0x37')]:_0x2b0cbe[_0xccf3('0x32')];if(!_0x1b30ad['query'][_0xccf3('0x3a')](_0xccf3('0x3b'))){_0x3002a9['limit']=qs[_0xccf3('0x22')](_0x1b30ad[_0xccf3('0x34')]['limit']);_0x3002a9[_0xccf3('0x21')]=qs[_0xccf3('0x21')](_0x1b30ad[_0xccf3('0x34')][_0xccf3('0x21')]);}_0x3002a9['order']=qs[_0xccf3('0x3c')](_0x1b30ad[_0xccf3('0x34')][_0xccf3('0x3c')]);_0x3002a9[_0xccf3('0x3d')]=qs[_0xccf3('0x35')](_[_0xccf3('0x3e')](_0x1b30ad[_0xccf3('0x34')],_0x2b0cbe[_0xccf3('0x35')]),_0x125bf8);if(_0x1b30ad[_0xccf3('0x34')]['filter']){_0x3002a9['where']=_[_0xccf3('0x3f')](_0x3002a9['where'],{'$or':_[_0xccf3('0x33')](_0x125bf8,function(_0x5605f9){if(_0x5605f9[_0xccf3('0x30')]!=='VIRTUAL'){var _0x6a2a37={};_0x6a2a37[_0x5605f9['name']]={'$like':'%'+_0x1b30ad[_0xccf3('0x34')]['filter']+'%'};return _0x6a2a37;}})});}_0x3002a9=_['merge']({},_0x3002a9,_0x1b30ad[_0xccf3('0x40')]);var _0x3397de={'where':_0x3002a9[_0xccf3('0x3d')]};return db[_0xccf3('0x41')][_0xccf3('0x20')](_0x3397de)['then'](function(_0x15e13c){_0x410f70[_0xccf3('0x20')]=_0x15e13c;if(_0x1b30ad[_0xccf3('0x34')][_0xccf3('0x42')]){_0x3002a9['include']=[{'all':!![]}];}return db[_0xccf3('0x41')]['findAll'](_0x3002a9);})['then'](function(_0x333c67){_0x410f70[_0xccf3('0x43')]=_0x333c67;return _0x410f70;})['then'](respondWithFilteredResult(_0x2d16e2,_0x3002a9))[_0xccf3('0x44')](handleError(_0x2d16e2,null));};exports['show']=function(_0x356f02,_0x14ee7f){var _0x506b37={'raw':![],'where':{'id':_0x356f02[_0xccf3('0x45')]['id']}},_0x2f7bf6={};_0x2f7bf6['model']=_['keys'](db[_0xccf3('0x41')][_0xccf3('0x2f')]);_0x2f7bf6[_0xccf3('0x34')]=_['keys'](_0x356f02[_0xccf3('0x34')]);_0x2f7bf6[_0xccf3('0x35')]=_[_0xccf3('0x36')](_0x2f7bf6[_0xccf3('0x32')],_0x2f7bf6[_0xccf3('0x34')]);_0x506b37[_0xccf3('0x37')]=_[_0xccf3('0x36')](_0x2f7bf6[_0xccf3('0x32')],qs[_0xccf3('0x38')](_0x356f02['query'][_0xccf3('0x38')]));_0x506b37['attributes']=_0x506b37[_0xccf3('0x37')][_0xccf3('0x39')]?_0x506b37['attributes']:_0x2f7bf6[_0xccf3('0x32')];if(_0x356f02[_0xccf3('0x34')]['includeAll']){_0x506b37['include']=[{'all':!![]}];}_0x506b37=_[_0xccf3('0x3f')]({},_0x506b37,_0x356f02[_0xccf3('0x40')]);return db[_0xccf3('0x41')]['find'](_0x506b37)[_0xccf3('0x28')](handleEntityNotFound(_0x14ee7f,null))['then'](respondWithResult(_0x14ee7f,null))[_0xccf3('0x44')](handleError(_0x14ee7f,null));};exports['create']=function(_0x27899e,_0x4e15d3){return db[_0xccf3('0x41')][_0xccf3('0x46')](_0x27899e['body'],{})[_0xccf3('0x28')](respondWithResult(_0x4e15d3,0xc9))['catch'](handleError(_0x4e15d3,null));};exports['update']=function(_0x5083b8,_0x4a53b1){if(_0x5083b8[_0xccf3('0x47')]['id']){delete _0x5083b8[_0xccf3('0x47')]['id'];}return db[_0xccf3('0x41')][_0xccf3('0x48')]({'where':{'id':_0x5083b8['params']['id']}})['then'](handleEntityNotFound(_0x4a53b1,null))['then'](saveUpdates(_0x5083b8[_0xccf3('0x47')],null))['then'](respondWithResult(_0x4a53b1,null))['catch'](handleError(_0x4a53b1,null));};exports[_0xccf3('0x29')]=function(_0x24491c,_0x251788){return db[_0xccf3('0x41')][_0xccf3('0x48')]({'where':{'id':_0x24491c[_0xccf3('0x45')]['id']}})['then'](handleEntityNotFound(_0x251788,null))[_0xccf3('0x28')](removeEntity(_0x251788,null))[_0xccf3('0x44')](handleError(_0x251788,null));};exports['getFields']=function(_0x5768bb,_0x229bcd,_0x3baadb){var _0x94ee37={};var _0x7df16b={};var _0x4af8a1;var _0xbe1d5d;return db[_0xccf3('0x41')][_0xccf3('0x49')]({'where':{'id':_0x5768bb[_0xccf3('0x45')]['id']}})['then'](handleEntityNotFound(_0x229bcd,null))['then'](function(_0x2899e1){if(_0x2899e1){_0x4af8a1=_0x2899e1;_0x7df16b['model']=_[_0xccf3('0x4a')](db[_0xccf3('0x4b')]['rawAttributes']);_0x7df16b[_0xccf3('0x34')]=_[_0xccf3('0x4a')](_0x5768bb[_0xccf3('0x34')]);_0x7df16b['filters']=_[_0xccf3('0x36')](_0x7df16b['model'],_0x7df16b[_0xccf3('0x34')]);_0x94ee37[_0xccf3('0x37')]=_[_0xccf3('0x36')](_0x7df16b[_0xccf3('0x32')],qs['fields'](_0x5768bb[_0xccf3('0x34')][_0xccf3('0x38')]));_0x94ee37[_0xccf3('0x37')]=_0x94ee37[_0xccf3('0x37')]['length']?_0x94ee37[_0xccf3('0x37')]:_0x7df16b[_0xccf3('0x32')];_0x94ee37['order']=qs[_0xccf3('0x3c')](_0x5768bb[_0xccf3('0x34')][_0xccf3('0x3c')]);_0x94ee37[_0xccf3('0x3d')]=qs[_0xccf3('0x35')](_['pick'](_0x5768bb[_0xccf3('0x34')],_0x7df16b['filters']));if(_0x5768bb[_0xccf3('0x34')][_0xccf3('0x4c')]){_0x94ee37[_0xccf3('0x3d')]=_[_0xccf3('0x3f')](_0x94ee37[_0xccf3('0x3d')],{'$or':_['map'](_0x94ee37[_0xccf3('0x37')],function(_0x3583c1){var _0x31d7ce={};_0x31d7ce[_0x3583c1]={'$like':'%'+_0x5768bb[_0xccf3('0x34')]['filter']+'%'};return _0x31d7ce;})});}_0x94ee37=_['merge']({},_0x94ee37,_0x5768bb[_0xccf3('0x40')]);return _0x4af8a1[_0xccf3('0x4d')](_0x94ee37);}})['then'](function(_0x70bfea){if(_0x70bfea){_0xbe1d5d=_0x70bfea['length'];if(!_0x5768bb[_0xccf3('0x34')][_0xccf3('0x3a')](_0xccf3('0x3b'))){_0x94ee37[_0xccf3('0x22')]=qs[_0xccf3('0x22')](_0x5768bb[_0xccf3('0x34')][_0xccf3('0x22')]);_0x94ee37[_0xccf3('0x21')]=qs['offset'](_0x5768bb[_0xccf3('0x34')]['offset']);}return _0x4af8a1[_0xccf3('0x4d')](_0x94ee37);}})['then'](function(_0x23dab5){if(_0x23dab5){return _0x23dab5?{'count':_0xbe1d5d,'rows':_0x23dab5}:null;}})[_0xccf3('0x28')](respondWithResult(_0x229bcd,null))['catch'](handleError(_0x229bcd,null));};exports[_0xccf3('0x4e')]=function(_0x35f2a2,_0x35e7a6,_0x15688c){var _0x1893ba={};var _0x1e708f={};var _0x26f66d;var _0x27ad6b;return db['ServicenowConfiguration'][_0xccf3('0x49')]({'where':{'id':_0x35f2a2[_0xccf3('0x45')]['id']}})['then'](handleEntityNotFound(_0x35e7a6,null))[_0xccf3('0x28')](function(_0x3b923c){if(_0x3b923c){_0x26f66d=_0x3b923c;_0x1e708f[_0xccf3('0x32')]=_[_0xccf3('0x4a')](db[_0xccf3('0x4b')][_0xccf3('0x2f')]);_0x1e708f[_0xccf3('0x34')]=_['keys'](_0x35f2a2[_0xccf3('0x34')]);_0x1e708f[_0xccf3('0x35')]=_['intersection'](_0x1e708f[_0xccf3('0x32')],_0x1e708f[_0xccf3('0x34')]);_0x1893ba[_0xccf3('0x37')]=_[_0xccf3('0x36')](_0x1e708f[_0xccf3('0x32')],qs[_0xccf3('0x38')](_0x35f2a2[_0xccf3('0x34')][_0xccf3('0x38')]));_0x1893ba[_0xccf3('0x37')]=_0x1893ba[_0xccf3('0x37')][_0xccf3('0x39')]?_0x1893ba[_0xccf3('0x37')]:_0x1e708f[_0xccf3('0x32')];_0x1893ba[_0xccf3('0x4f')]=qs[_0xccf3('0x3c')](_0x35f2a2[_0xccf3('0x34')][_0xccf3('0x3c')]);_0x1893ba[_0xccf3('0x3d')]=qs[_0xccf3('0x35')](_[_0xccf3('0x3e')](_0x35f2a2[_0xccf3('0x34')],_0x1e708f[_0xccf3('0x35')]));if(_0x35f2a2[_0xccf3('0x34')][_0xccf3('0x4c')]){_0x1893ba[_0xccf3('0x3d')]=_['merge'](_0x1893ba[_0xccf3('0x3d')],{'$or':_['map'](_0x1893ba['attributes'],function(_0x1ffdaf){var _0x58eb43={};_0x58eb43[_0x1ffdaf]={'$like':'%'+_0x35f2a2[_0xccf3('0x34')][_0xccf3('0x4c')]+'%'};return _0x58eb43;})});}_0x1893ba=_[_0xccf3('0x3f')]({},_0x1893ba,_0x35f2a2['options']);return _0x26f66d[_0xccf3('0x4e')](_0x1893ba);}})[_0xccf3('0x28')](function(_0x44586d){if(_0x44586d){_0x27ad6b=_0x44586d[_0xccf3('0x39')];if(!_0x35f2a2['query'][_0xccf3('0x3a')](_0xccf3('0x3b'))){_0x1893ba[_0xccf3('0x22')]=qs[_0xccf3('0x22')](_0x35f2a2['query']['limit']);_0x1893ba[_0xccf3('0x21')]=qs['offset'](_0x35f2a2[_0xccf3('0x34')]['offset']);}return _0x26f66d['getSubjects'](_0x1893ba);}})[_0xccf3('0x28')](function(_0x2acb79){if(_0x2acb79){return _0x2acb79?{'count':_0x27ad6b,'rows':_0x2acb79}:null;}})[_0xccf3('0x28')](respondWithResult(_0x35e7a6,null))['catch'](handleError(_0x35e7a6,null));};exports['getDescriptions']=function(_0xbabe8,_0x4d3a2f,_0xccefd7){var _0x430ae0={};var _0x1006f0={};var _0x562431;var _0x286da0;return db[_0xccf3('0x41')][_0xccf3('0x49')]({'where':{'id':_0xbabe8['params']['id']}})[_0xccf3('0x28')](handleEntityNotFound(_0x4d3a2f,null))[_0xccf3('0x28')](function(_0xf6569b){if(_0xf6569b){_0x562431=_0xf6569b;_0x1006f0[_0xccf3('0x32')]=_[_0xccf3('0x4a')](db[_0xccf3('0x4b')][_0xccf3('0x2f')]);_0x1006f0['query']=_[_0xccf3('0x4a')](_0xbabe8[_0xccf3('0x34')]);_0x1006f0[_0xccf3('0x35')]=_[_0xccf3('0x36')](_0x1006f0[_0xccf3('0x32')],_0x1006f0[_0xccf3('0x34')]);_0x430ae0[_0xccf3('0x37')]=_[_0xccf3('0x36')](_0x1006f0[_0xccf3('0x32')],qs['fields'](_0xbabe8[_0xccf3('0x34')][_0xccf3('0x38')]));_0x430ae0['attributes']=_0x430ae0['attributes']['length']?_0x430ae0[_0xccf3('0x37')]:_0x1006f0[_0xccf3('0x32')];_0x430ae0['order']=qs[_0xccf3('0x3c')](_0xbabe8[_0xccf3('0x34')][_0xccf3('0x3c')]);_0x430ae0[_0xccf3('0x3d')]=qs[_0xccf3('0x35')](_[_0xccf3('0x3e')](_0xbabe8[_0xccf3('0x34')],_0x1006f0[_0xccf3('0x35')]));if(_0xbabe8[_0xccf3('0x34')]['filter']){_0x430ae0['where']=_[_0xccf3('0x3f')](_0x430ae0[_0xccf3('0x3d')],{'$or':_['map'](_0x430ae0['attributes'],function(_0x29c87c){var _0x488869={};_0x488869[_0x29c87c]={'$like':'%'+_0xbabe8[_0xccf3('0x34')]['filter']+'%'};return _0x488869;})});}_0x430ae0=_['merge']({},_0x430ae0,_0xbabe8[_0xccf3('0x40')]);return _0x562431[_0xccf3('0x50')](_0x430ae0);}})[_0xccf3('0x28')](function(_0x45edec){if(_0x45edec){_0x286da0=_0x45edec[_0xccf3('0x39')];if(!_0xbabe8[_0xccf3('0x34')][_0xccf3('0x3a')]('nolimit')){_0x430ae0['limit']=qs[_0xccf3('0x22')](_0xbabe8[_0xccf3('0x34')][_0xccf3('0x22')]);_0x430ae0[_0xccf3('0x21')]=qs[_0xccf3('0x21')](_0xbabe8[_0xccf3('0x34')][_0xccf3('0x21')]);}return _0x562431[_0xccf3('0x50')](_0x430ae0);}})['then'](function(_0x3f3609){if(_0x3f3609){return _0x3f3609?{'count':_0x286da0,'rows':_0x3f3609}:null;}})[_0xccf3('0x28')](respondWithResult(_0x4d3a2f,null))[_0xccf3('0x44')](handleError(_0x4d3a2f,null));};
\ No newline at end of file
index 1203d98..73ff277 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98d8=['moment','bluebird','request-promise','../../config/environment','define','int_servicenow_configurations','lodash','util','../../config/logger','api'];(function(_0x206162,_0x30078d){var _0x55ab78=function(_0x4cd532){while(--_0x4cd532){_0x206162['push'](_0x206162['shift']());}};_0x55ab78(++_0x30078d);}(_0x98d8,0xce));var _0x898d=function(_0x4c0619,_0x58dd6b){_0x4c0619=_0x4c0619-0x0;var _0x40ee84=_0x98d8[_0x4c0619];return _0x40ee84;};'use strict';var _=require(_0x898d('0x0'));var util=require(_0x898d('0x1'));var logger=require(_0x898d('0x2'))(_0x898d('0x3'));var moment=require(_0x898d('0x4'));var BPromise=require(_0x898d('0x5'));var rp=require(_0x898d('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x898d('0x7'));var attributes=require('./intServicenowConfiguration.attributes');module['exports']=function(_0x4047bd,_0x5215bf){return _0x4047bd[_0x898d('0x8')]('ServicenowConfiguration',attributes,{'tableName':_0x898d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x69af=['ServicenowConfiguration','int_servicenow_configurations','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intServicenowConfiguration.attributes','exports','define'];(function(_0x453036,_0x521770){var _0x203aa2=function(_0x2d383a){while(--_0x2d383a){_0x453036['push'](_0x453036['shift']());}};_0x203aa2(++_0x521770);}(_0x69af,0x17b));var _0xf69a=function(_0x53dd65,_0x571a4c){_0x53dd65=_0x53dd65-0x0;var _0x3414e0=_0x69af[_0x53dd65];return _0x3414e0;};'use strict';var _=require('lodash');var util=require(_0xf69a('0x0'));var logger=require(_0xf69a('0x1'))(_0xf69a('0x2'));var moment=require(_0xf69a('0x3'));var BPromise=require(_0xf69a('0x4'));var rp=require(_0xf69a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf69a('0x6'));var config=require(_0xf69a('0x7'));var attributes=require(_0xf69a('0x8'));module[_0xf69a('0x9')]=function(_0x723700,_0x5953c9){return _0x723700[_0xf69a('0xa')](_0xf69a('0xb'),attributes,{'tableName':_0xf69a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8ae9464..c561003 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b3d=['lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','then','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','result'];(function(_0x1b6555,_0x346f76){var _0x3ba6=function(_0x241c97){while(--_0x241c97){_0x1b6555['push'](_0x1b6555['shift']());}};_0x3ba6(++_0x346f76);}(_0x8b3d,0x1b0));var _0xd8b3=function(_0x1a7d20,_0x10ff88){_0x1a7d20=_0x1a7d20-0x0;var _0x3de0b2=_0x8b3d[_0x1a7d20];return _0x3de0b2;};'use strict';var _=require(_0xd8b3('0x0'));var util=require('util');var moment=require(_0xd8b3('0x1'));var BPromise=require(_0xd8b3('0x2'));var rs=require(_0xd8b3('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd8b3('0x4'))['db'];var utils=require(_0xd8b3('0x5'));var logger=require(_0xd8b3('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd8b3('0x7'));var client=jayson[_0xd8b3('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x540f4e,_0x1d9a7a,_0x1fc19e){return new BPromise(function(_0x359e73,_0x515e18){return client['request'](_0x540f4e,_0x1fc19e)[_0xd8b3('0x9')](function(_0x504233){logger['info'](_0xd8b3('0xa'),_0x1d9a7a,_0xd8b3('0xb'));logger[_0xd8b3('0xc')]('ServicenowConfiguration,\x20%s,\x20%s,\x20%s',_0x1d9a7a,_0xd8b3('0xb'),JSON['stringify'](_0x504233));if(_0x504233[_0xd8b3('0xd')]){if(_0x504233[_0xd8b3('0xd')][_0xd8b3('0xe')]===0x1f4){logger['error'](_0xd8b3('0xa'),_0x1d9a7a,_0x504233[_0xd8b3('0xd')][_0xd8b3('0xf')]);return _0x515e18(_0x504233[_0xd8b3('0xd')][_0xd8b3('0xf')]);}logger[_0xd8b3('0xd')](_0xd8b3('0xa'),_0x1d9a7a,_0x504233[_0xd8b3('0xd')][_0xd8b3('0xf')]);return _0x359e73(_0x504233[_0xd8b3('0xd')][_0xd8b3('0xf')]);}else{logger[_0xd8b3('0x10')](_0xd8b3('0xa'),_0x1d9a7a,'request\x20sent');_0x359e73(_0x504233[_0xd8b3('0x11')][_0xd8b3('0xf')]);}})['catch'](function(_0x3264bb){logger[_0xd8b3('0xd')](_0xd8b3('0xa'),_0x1d9a7a,_0x3264bb);_0x515e18(_0x3264bb);});});}
\ No newline at end of file
+var _0x139e=['catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x139e,0xe7));var _0xe139=function(_0x52e4c5,_0x4610d4){_0x52e4c5=_0x52e4c5-0x0;var _0x161252=_0x139e[_0x52e4c5];return _0x161252;};'use strict';var _=require(_0xe139('0x0'));var util=require('util');var moment=require(_0xe139('0x1'));var BPromise=require(_0xe139('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe139('0x3'));var db=require(_0xe139('0x4'))['db'];var utils=require(_0xe139('0x5'));var logger=require(_0xe139('0x6'))('rpc');var config=require(_0xe139('0x7'));var jayson=require(_0xe139('0x8'));var client=jayson[_0xe139('0x9')][_0xe139('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2169a8,_0x227c38,_0x23a8e6){return new BPromise(function(_0x114823,_0x1152e6){return client[_0xe139('0xb')](_0x2169a8,_0x23a8e6)[_0xe139('0xc')](function(_0x4479cd){logger[_0xe139('0xd')](_0xe139('0xe'),_0x227c38,_0xe139('0xf'));logger[_0xe139('0x10')](_0xe139('0x11'),_0x227c38,_0xe139('0xf'),JSON[_0xe139('0x12')](_0x4479cd));if(_0x4479cd['error']){if(_0x4479cd[_0xe139('0x13')][_0xe139('0x14')]===0x1f4){logger[_0xe139('0x13')](_0xe139('0xe'),_0x227c38,_0x4479cd[_0xe139('0x13')][_0xe139('0x15')]);return _0x1152e6(_0x4479cd[_0xe139('0x13')][_0xe139('0x15')]);}logger[_0xe139('0x13')]('ServicenowConfiguration,\x20%s,\x20%s',_0x227c38,_0x4479cd[_0xe139('0x13')]['message']);return _0x114823(_0x4479cd[_0xe139('0x13')]['message']);}else{logger[_0xe139('0xd')](_0xe139('0xe'),_0x227c38,_0xe139('0xf'));_0x114823(_0x4479cd['result'][_0xe139('0x15')]);}})[_0xe139('0x16')](function(_0xa7db07){logger[_0xe139('0x13')](_0xe139('0xe'),_0x227c38,_0xa7db07);_0x1152e6(_0xa7db07);});});}
\ No newline at end of file
index 6661a7a..718a27b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fa2=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy'];(function(_0x49c6ff,_0x330fb8){var _0x21d1dc=function(_0x215809){while(--_0x215809){_0x49c6ff['push'](_0x49c6ff['shift']());}};_0x21d1dc(++_0x330fb8);}(_0x6fa2,0x1a2));var _0x26fa=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x6fa2[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x26fa('0x0'));var util=require(_0x26fa('0x1'));var path=require(_0x26fa('0x2'));var timeout=require(_0x26fa('0x3'));var express=require('express');var router=express[_0x26fa('0x4')]();var fs_extra=require(_0x26fa('0x5'));var auth=require(_0x26fa('0x6'));var interaction=require(_0x26fa('0x7'));var config=require(_0x26fa('0x8'));var controller=require('./intServicenowField.controller');router[_0x26fa('0x9')]('/',auth[_0x26fa('0xa')](),controller['index']);router[_0x26fa('0x9')](_0x26fa('0xb'),auth[_0x26fa('0xa')](),controller[_0x26fa('0xc')]);router[_0x26fa('0xd')]('/',auth[_0x26fa('0xa')](),controller[_0x26fa('0xe')]);router[_0x26fa('0xf')]('/:id',auth[_0x26fa('0xa')](),controller[_0x26fa('0x10')]);router[_0x26fa('0x11')](_0x26fa('0xb'),auth[_0x26fa('0xa')](),controller[_0x26fa('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x5491=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','post','create','put','update','destroy','multer','util','path','connect-timeout','express'];(function(_0x10ee7a,_0x18e41b){var _0x2901cf=function(_0xfe8347){while(--_0xfe8347){_0x10ee7a['push'](_0x10ee7a['shift']());}};_0x2901cf(++_0x18e41b);}(_0x5491,0x1bd));var _0x1549=function(_0x8e8811,_0xb2bae0){_0x8e8811=_0x8e8811-0x0;var _0x28cb0b=_0x5491[_0x8e8811];return _0x28cb0b;};'use strict';var multer=require(_0x1549('0x0'));var util=require(_0x1549('0x1'));var path=require(_0x1549('0x2'));var timeout=require(_0x1549('0x3'));var express=require(_0x1549('0x4'));var router=express['Router']();var fs_extra=require(_0x1549('0x5'));var auth=require(_0x1549('0x6'));var interaction=require(_0x1549('0x7'));var config=require(_0x1549('0x8'));var controller=require('./intServicenowField.controller');router[_0x1549('0x9')]('/',auth[_0x1549('0xa')](),controller[_0x1549('0xb')]);router['get'](_0x1549('0xc'),auth[_0x1549('0xa')](),controller['show']);router[_0x1549('0xd')]('/',auth['isAuthenticated'](),controller[_0x1549('0xe')]);router[_0x1549('0xf')](_0x1549('0xc'),auth['isAuthenticated'](),controller[_0x1549('0x10')]);router['delete'](_0x1549('0xc'),auth[_0x1549('0xa')](),controller[_0x1549('0x11')]);module['exports']=router;
\ No newline at end of file
index 3d26835..3c95563 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c12=['string','variable','customVariable','keyValue','picklist','STRING','ENUM','BOOLEAN','sequelize'];(function(_0x47dff0,_0x19c0f1){var _0x4cbdcd=function(_0x498e5f){while(--_0x498e5f){_0x47dff0['push'](_0x47dff0['shift']());}};_0x4cbdcd(++_0x19c0f1);}(_0x4c12,0x104));var _0x24c1=function(_0x580647,_0x43d2c3){_0x580647=_0x580647-0x0;var _0x5f0792=_0x4c12[_0x580647];return _0x5f0792;};'use strict';var Sequelize=require(_0x24c1('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x24c1('0x1'),_0x24c1('0x2'),_0x24c1('0x3'),_0x24c1('0x4'),_0x24c1('0x5')),'defaultValue':_0x24c1('0x1')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x24c1('0x6')]},'keyType':{'type':Sequelize[_0x24c1('0x7')](_0x24c1('0x1'),'variable',_0x24c1('0x3'))},'keyContent':{'type':Sequelize[_0x24c1('0x6')]},'idField':{'type':Sequelize[_0x24c1('0x6')]},'nameField':{'type':Sequelize[_0x24c1('0x6')]},'customField':{'type':Sequelize[_0x24c1('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x24c1('0x6')]}};
\ No newline at end of file
+var _0xb4b2=['customVariable','BOOLEAN','sequelize','exports','ENUM','string','variable','keyValue','STRING'];(function(_0x820bf2,_0x5c6e3a){var _0x2962c1=function(_0x1938fb){while(--_0x1938fb){_0x820bf2['push'](_0x820bf2['shift']());}};_0x2962c1(++_0x5c6e3a);}(_0xb4b2,0x65));var _0x2b4b=function(_0x10ac63,_0x2be6ec){_0x10ac63=_0x10ac63-0x0;var _0x457848=_0xb4b2[_0x10ac63];return _0x457848;};'use strict';var Sequelize=require(_0x2b4b('0x0'));module[_0x2b4b('0x1')]={'type':{'type':Sequelize[_0x2b4b('0x2')](_0x2b4b('0x3'),_0x2b4b('0x4'),'customVariable',_0x2b4b('0x5'),'picklist'),'defaultValue':_0x2b4b('0x3')},'content':{'type':Sequelize[_0x2b4b('0x6')]},'key':{'type':Sequelize[_0x2b4b('0x6')]},'keyType':{'type':Sequelize[_0x2b4b('0x2')](_0x2b4b('0x3'),_0x2b4b('0x4'),_0x2b4b('0x7'))},'keyContent':{'type':Sequelize[_0x2b4b('0x6')]},'idField':{'type':Sequelize[_0x2b4b('0x6')]},'nameField':{'type':Sequelize[_0x2b4b('0x6')]},'customField':{'type':Sequelize[_0x2b4b('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2b4b('0x6')]}};
\ No newline at end of file
index 3b203a6..2bd6a56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f82=['path','sox','ejs','fs-extra','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','end','error','stack','name','map','ServicenowField','rawAttributes','key','model','keys','query','intersection','attributes','fields','length','nolimit','sort','filters','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util'];(function(_0x49c52b,_0x4619d0){var _0x912b86=function(_0x1d3588){while(--_0x1d3588){_0x49c52b['push'](_0x49c52b['shift']());}};_0x912b86(++_0x4619d0);}(_0x6f82,0x83));var _0x26f8=function(_0x456bd2,_0x156c79){_0x456bd2=_0x456bd2-0x0;var _0x2218c1=_0x6f82[_0x456bd2];return _0x2218c1;};'use strict';var emlformat=require(_0x26f8('0x0'));var rimraf=require(_0x26f8('0x1'));var zipdir=require(_0x26f8('0x2'));var jsonpatch=require(_0x26f8('0x3'));var rp=require(_0x26f8('0x4'));var moment=require(_0x26f8('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x26f8('0x6'));var path=require(_0x26f8('0x7'));var sox=require(_0x26f8('0x8'));var csv=require('to-csv');var ejs=require(_0x26f8('0x9'));var fs=require('fs');var fs_extra=require(_0x26f8('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x26f8('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x26f8('0xc'));var Papa=require(_0x26f8('0xd'));var Redis=require(_0x26f8('0xe'));var authService=require(_0x26f8('0xf'));var qs=require(_0x26f8('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x26f8('0x11'));var logger=require(_0x26f8('0x12'))(_0x26f8('0x13'));var utils=require(_0x26f8('0x14'));var config=require(_0x26f8('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2df4e2,_0x38b067){_0x38b067=_0x38b067||0xcc;return function(_0x530606){if(_0x530606){return _0x2df4e2['sendStatus'](_0x38b067);}return _0x2df4e2[_0x26f8('0x16')](_0x38b067)['end']();};}function respondWithResult(_0x56984c,_0x23c17f){_0x23c17f=_0x23c17f||0xc8;return function(_0x168e3e){if(_0x168e3e){return _0x56984c[_0x26f8('0x16')](_0x23c17f)[_0x26f8('0x17')](_0x168e3e);}};}function respondWithFilteredResult(_0x3ad7f2,_0x1651d3){return function(_0x29ed6b){if(_0x29ed6b){var _0x564ec6=typeof _0x1651d3[_0x26f8('0x18')]===_0x26f8('0x19')&&typeof _0x1651d3[_0x26f8('0x1a')]===_0x26f8('0x19');var _0x31a82e=_0x29ed6b[_0x26f8('0x1b')];var _0x4d5662=_0x564ec6?0x0:_0x1651d3[_0x26f8('0x18')];var _0x304263=_0x564ec6?_0x29ed6b[_0x26f8('0x1b')]:_0x1651d3[_0x26f8('0x18')]+_0x1651d3[_0x26f8('0x1a')];var _0xfc02af;if(_0x304263>=_0x31a82e){_0x304263=_0x31a82e;_0xfc02af=0xc8;}else{_0xfc02af=0xce;}_0x3ad7f2[_0x26f8('0x16')](_0xfc02af);return _0x3ad7f2[_0x26f8('0x1c')]('Content-Range',_0x4d5662+'-'+_0x304263+'/'+_0x31a82e)[_0x26f8('0x17')](_0x29ed6b);}return null;};}function patchUpdates(_0x1c8ec0){return function(_0x5cf436){try{jsonpatch[_0x26f8('0x1d')](_0x5cf436,_0x1c8ec0,!![]);}catch(_0x5a1f56){return BPromise[_0x26f8('0x1e')](_0x5a1f56);}return _0x5cf436[_0x26f8('0x1f')]();};}function saveUpdates(_0x435392,_0x2f7fcf){return function(_0x3a1293){if(_0x3a1293){return _0x3a1293[_0x26f8('0x20')](_0x435392)[_0x26f8('0x21')](function(_0x519fe8){return _0x519fe8;});}return null;};}function removeEntity(_0x5a8b37,_0x556ca5){return function(_0x4b1dec){if(_0x4b1dec){return _0x4b1dec[_0x26f8('0x22')]()[_0x26f8('0x21')](function(){_0x5a8b37[_0x26f8('0x16')](0xcc)[_0x26f8('0x23')]();});}};}function handleEntityNotFound(_0x40859f,_0x4ba750){return function(_0x493901){if(!_0x493901){_0x40859f['sendStatus'](0x194);}return _0x493901;};}function handleError(_0x2c2488,_0x338ab3){_0x338ab3=_0x338ab3||0x1f4;return function(_0x16b4e5){logger[_0x26f8('0x24')](_0x16b4e5[_0x26f8('0x25')]);if(_0x16b4e5[_0x26f8('0x26')]){delete _0x16b4e5[_0x26f8('0x26')];}_0x2c2488[_0x26f8('0x16')](_0x338ab3)['send'](_0x16b4e5);};}exports['index']=function(_0xc74e78,_0x3e0d1a){var _0xdc6e3e={},_0x2a9276={},_0x601d8a={'count':0x0,'rows':[]};var _0x32a006=_[_0x26f8('0x27')](db[_0x26f8('0x28')][_0x26f8('0x29')],function(_0x3839bd){return{'name':_0x3839bd['fieldName'],'type':_0x3839bd['type'][_0x26f8('0x2a')]};});_0x2a9276[_0x26f8('0x2b')]=_['map'](_0x32a006,_0x26f8('0x26'));_0x2a9276['query']=_[_0x26f8('0x2c')](_0xc74e78[_0x26f8('0x2d')]);_0x2a9276['filters']=_[_0x26f8('0x2e')](_0x2a9276['model'],_0x2a9276[_0x26f8('0x2d')]);_0xdc6e3e[_0x26f8('0x2f')]=_[_0x26f8('0x2e')](_0x2a9276[_0x26f8('0x2b')],qs[_0x26f8('0x30')](_0xc74e78[_0x26f8('0x2d')]['fields']));_0xdc6e3e[_0x26f8('0x2f')]=_0xdc6e3e['attributes'][_0x26f8('0x31')]?_0xdc6e3e[_0x26f8('0x2f')]:_0x2a9276[_0x26f8('0x2b')];if(!_0xc74e78[_0x26f8('0x2d')]['hasOwnProperty'](_0x26f8('0x32'))){_0xdc6e3e[_0x26f8('0x1a')]=qs[_0x26f8('0x1a')](_0xc74e78['query'][_0x26f8('0x1a')]);_0xdc6e3e[_0x26f8('0x18')]=qs[_0x26f8('0x18')](_0xc74e78['query'][_0x26f8('0x18')]);}_0xdc6e3e['order']=qs[_0x26f8('0x33')](_0xc74e78[_0x26f8('0x2d')][_0x26f8('0x33')]);_0xdc6e3e['where']=qs['filters'](_['pick'](_0xc74e78['query'],_0x2a9276[_0x26f8('0x34')]),_0x32a006);if(_0xc74e78['query'][_0x26f8('0x35')]){_0xdc6e3e[_0x26f8('0x36')]=_[_0x26f8('0x37')](_0xdc6e3e['where'],{'$or':_[_0x26f8('0x27')](_0x32a006,function(_0x2d63cc){if(_0x2d63cc[_0x26f8('0x38')]!==_0x26f8('0x39')){var _0xaaa625={};_0xaaa625[_0x2d63cc['name']]={'$like':'%'+_0xc74e78[_0x26f8('0x2d')][_0x26f8('0x35')]+'%'};return _0xaaa625;}})});}_0xdc6e3e=_[_0x26f8('0x37')]({},_0xdc6e3e,_0xc74e78[_0x26f8('0x3a')]);var _0x2201fa={'where':_0xdc6e3e[_0x26f8('0x36')]};return db['ServicenowField'][_0x26f8('0x1b')](_0x2201fa)['then'](function(_0x59424b){_0x601d8a['count']=_0x59424b;if(_0xc74e78['query'][_0x26f8('0x3b')]){_0xdc6e3e[_0x26f8('0x3c')]=[{'all':!![]}];}return db[_0x26f8('0x28')][_0x26f8('0x3d')](_0xdc6e3e);})[_0x26f8('0x21')](function(_0x4caafa){_0x601d8a[_0x26f8('0x3e')]=_0x4caafa;return _0x601d8a;})[_0x26f8('0x21')](respondWithFilteredResult(_0x3e0d1a,_0xdc6e3e))[_0x26f8('0x3f')](handleError(_0x3e0d1a,null));};exports[_0x26f8('0x40')]=function(_0x170635,_0x4ea664){var _0x44dc56={'raw':!![],'where':{'id':_0x170635[_0x26f8('0x41')]['id']}},_0x326997={};_0x326997['model']=_[_0x26f8('0x2c')](db[_0x26f8('0x28')][_0x26f8('0x29')]);_0x326997[_0x26f8('0x2d')]=_[_0x26f8('0x2c')](_0x170635['query']);_0x326997[_0x26f8('0x34')]=_[_0x26f8('0x2e')](_0x326997[_0x26f8('0x2b')],_0x326997[_0x26f8('0x2d')]);_0x44dc56['attributes']=_['intersection'](_0x326997[_0x26f8('0x2b')],qs[_0x26f8('0x30')](_0x170635[_0x26f8('0x2d')][_0x26f8('0x30')]));_0x44dc56['attributes']=_0x44dc56[_0x26f8('0x2f')]['length']?_0x44dc56[_0x26f8('0x2f')]:_0x326997['model'];if(_0x170635['query']['includeAll']){_0x44dc56[_0x26f8('0x3c')]=[{'all':!![]}];}_0x44dc56=_[_0x26f8('0x37')]({},_0x44dc56,_0x170635[_0x26f8('0x3a')]);return db[_0x26f8('0x28')][_0x26f8('0x42')](_0x44dc56)[_0x26f8('0x21')](handleEntityNotFound(_0x4ea664,null))[_0x26f8('0x21')](respondWithResult(_0x4ea664,null))['catch'](handleError(_0x4ea664,null));};exports[_0x26f8('0x43')]=function(_0xc61f4b,_0x11787b){return db[_0x26f8('0x28')][_0x26f8('0x43')](_0xc61f4b[_0x26f8('0x44')],{})['then'](respondWithResult(_0x11787b,0xc9))[_0x26f8('0x3f')](handleError(_0x11787b,null));};exports['update']=function(_0xab0e78,_0x5a1272){if(_0xab0e78[_0x26f8('0x44')]['id']){delete _0xab0e78[_0x26f8('0x44')]['id'];}return db[_0x26f8('0x28')][_0x26f8('0x42')]({'where':{'id':_0xab0e78['params']['id']}})[_0x26f8('0x21')](handleEntityNotFound(_0x5a1272,null))[_0x26f8('0x21')](saveUpdates(_0xab0e78[_0x26f8('0x44')],null))[_0x26f8('0x21')](respondWithResult(_0x5a1272,null))[_0x26f8('0x3f')](handleError(_0x5a1272,null));};exports[_0x26f8('0x22')]=function(_0x847c9a,_0x580a3b){return db[_0x26f8('0x28')][_0x26f8('0x42')]({'where':{'id':_0x847c9a[_0x26f8('0x41')]['id']}})[_0x26f8('0x21')](handleEntityNotFound(_0x580a3b,null))[_0x26f8('0x21')](removeEntity(_0x580a3b,null))[_0x26f8('0x3f')](handleError(_0x580a3b,null));};
\ No newline at end of file
+var _0xb42b=['order','sort','where','pick','filter','merge','options','includeAll','ServicenowField','rows','catch','params','include','find','body','eml-format','rimraf','request-promise','moment','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','limit','undefined','count','set','Content-Range','save','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit'];(function(_0x537ae2,_0x170aa8){var _0x3db4b8=function(_0x3e3bd3){while(--_0x3e3bd3){_0x537ae2['push'](_0x537ae2['shift']());}};_0x3db4b8(++_0x170aa8);}(_0xb42b,0x177));var _0xbb42=function(_0x7dd003,_0x2366a1){_0x7dd003=_0x7dd003-0x0;var _0x2ccbd4=_0xb42b[_0x7dd003];return _0x2ccbd4;};'use strict';var emlformat=require(_0xbb42('0x0'));var rimraf=require(_0xbb42('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xbb42('0x2'));var moment=require(_0xbb42('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbb42('0x4'));var path=require(_0xbb42('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xbb42('0x6'));var fs=require('fs');var fs_extra=require(_0xbb42('0x7'));var _=require(_0xbb42('0x8'));var squel=require(_0xbb42('0x9'));var crypto=require(_0xbb42('0xa'));var jsforce=require(_0xbb42('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xbb42('0xc'));var querystring=require('querystring');var Papa=require(_0xbb42('0xd'));var Redis=require(_0xbb42('0xe'));var authService=require(_0xbb42('0xf'));var qs=require(_0xbb42('0x10'));var as=require(_0xbb42('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbb42('0x12'))(_0xbb42('0x13'));var utils=require(_0xbb42('0x14'));var config=require(_0xbb42('0x15'));var licenseUtil=require(_0xbb42('0x16'));var db=require(_0xbb42('0x17'))['db'];function respondWithStatusCode(_0x3c0c1f,_0x33f733){_0x33f733=_0x33f733||0xcc;return function(_0x57bdaa){if(_0x57bdaa){return _0x3c0c1f['sendStatus'](_0x33f733);}return _0x3c0c1f[_0xbb42('0x18')](_0x33f733)['end']();};}function respondWithResult(_0x46b348,_0x28519c){_0x28519c=_0x28519c||0xc8;return function(_0x15fce0){if(_0x15fce0){return _0x46b348['status'](_0x28519c)[_0xbb42('0x19')](_0x15fce0);}};}function respondWithFilteredResult(_0x10641d,_0x2246cc){return function(_0x4cf927){if(_0x4cf927){var _0x32a51e=typeof _0x2246cc[_0xbb42('0x1a')]==='undefined'&&typeof _0x2246cc[_0xbb42('0x1b')]===_0xbb42('0x1c');var _0x44fd67=_0x4cf927[_0xbb42('0x1d')];var _0x2021fb=_0x32a51e?0x0:_0x2246cc[_0xbb42('0x1a')];var _0x4648b1=_0x32a51e?_0x4cf927[_0xbb42('0x1d')]:_0x2246cc[_0xbb42('0x1a')]+_0x2246cc['limit'];var _0x9e7140;if(_0x4648b1>=_0x44fd67){_0x4648b1=_0x44fd67;_0x9e7140=0xc8;}else{_0x9e7140=0xce;}_0x10641d[_0xbb42('0x18')](_0x9e7140);return _0x10641d[_0xbb42('0x1e')](_0xbb42('0x1f'),_0x2021fb+'-'+_0x4648b1+'/'+_0x44fd67)[_0xbb42('0x19')](_0x4cf927);}return null;};}function patchUpdates(_0x421e98){return function(_0x1b27bf){try{jsonpatch['apply'](_0x1b27bf,_0x421e98,!![]);}catch(_0x57bccf){return BPromise['reject'](_0x57bccf);}return _0x1b27bf[_0xbb42('0x20')]();};}function saveUpdates(_0x5893c0,_0x2c0ae7){return function(_0x2727ab){if(_0x2727ab){return _0x2727ab[_0xbb42('0x21')](_0x5893c0)[_0xbb42('0x22')](function(_0x6ae9eb){return _0x6ae9eb;});}return null;};}function removeEntity(_0x212754,_0xce71){return function(_0x358140){if(_0x358140){return _0x358140[_0xbb42('0x23')]()[_0xbb42('0x22')](function(){_0x212754[_0xbb42('0x18')](0xcc)[_0xbb42('0x24')]();});}};}function handleEntityNotFound(_0x30a141,_0x57548a){return function(_0x369522){if(!_0x369522){_0x30a141[_0xbb42('0x25')](0x194);}return _0x369522;};}function handleError(_0x1a2e10,_0xebf7d){_0xebf7d=_0xebf7d||0x1f4;return function(_0x4c6690){logger[_0xbb42('0x26')](_0x4c6690[_0xbb42('0x27')]);if(_0x4c6690[_0xbb42('0x28')]){delete _0x4c6690[_0xbb42('0x28')];}_0x1a2e10['status'](_0xebf7d)[_0xbb42('0x29')](_0x4c6690);};}exports[_0xbb42('0x2a')]=function(_0x2c305c,_0x255f65){var _0x159a8d={},_0x3c17e4={},_0x2ccfa7={'count':0x0,'rows':[]};var _0x5df602=_[_0xbb42('0x2b')](db['ServicenowField'][_0xbb42('0x2c')],function(_0xbe85f8){return{'name':_0xbe85f8[_0xbb42('0x2d')],'type':_0xbe85f8[_0xbb42('0x2e')][_0xbb42('0x2f')]};});_0x3c17e4[_0xbb42('0x30')]=_['map'](_0x5df602,_0xbb42('0x28'));_0x3c17e4[_0xbb42('0x31')]=_[_0xbb42('0x32')](_0x2c305c['query']);_0x3c17e4[_0xbb42('0x33')]=_[_0xbb42('0x34')](_0x3c17e4[_0xbb42('0x30')],_0x3c17e4[_0xbb42('0x31')]);_0x159a8d[_0xbb42('0x35')]=_[_0xbb42('0x34')](_0x3c17e4[_0xbb42('0x30')],qs[_0xbb42('0x36')](_0x2c305c[_0xbb42('0x31')]['fields']));_0x159a8d[_0xbb42('0x35')]=_0x159a8d[_0xbb42('0x35')][_0xbb42('0x37')]?_0x159a8d['attributes']:_0x3c17e4[_0xbb42('0x30')];if(!_0x2c305c['query']['hasOwnProperty'](_0xbb42('0x38'))){_0x159a8d['limit']=qs[_0xbb42('0x1b')](_0x2c305c[_0xbb42('0x31')][_0xbb42('0x1b')]);_0x159a8d[_0xbb42('0x1a')]=qs[_0xbb42('0x1a')](_0x2c305c[_0xbb42('0x31')]['offset']);}_0x159a8d[_0xbb42('0x39')]=qs[_0xbb42('0x3a')](_0x2c305c[_0xbb42('0x31')][_0xbb42('0x3a')]);_0x159a8d[_0xbb42('0x3b')]=qs[_0xbb42('0x33')](_[_0xbb42('0x3c')](_0x2c305c['query'],_0x3c17e4[_0xbb42('0x33')]),_0x5df602);if(_0x2c305c[_0xbb42('0x31')][_0xbb42('0x3d')]){_0x159a8d[_0xbb42('0x3b')]=_['merge'](_0x159a8d['where'],{'$or':_[_0xbb42('0x2b')](_0x5df602,function(_0x1e974c){if(_0x1e974c[_0xbb42('0x2e')]!=='VIRTUAL'){var _0x575049={};_0x575049[_0x1e974c[_0xbb42('0x28')]]={'$like':'%'+_0x2c305c[_0xbb42('0x31')][_0xbb42('0x3d')]+'%'};return _0x575049;}})});}_0x159a8d=_[_0xbb42('0x3e')]({},_0x159a8d,_0x2c305c[_0xbb42('0x3f')]);var _0x480e78={'where':_0x159a8d[_0xbb42('0x3b')]};return db['ServicenowField'][_0xbb42('0x1d')](_0x480e78)[_0xbb42('0x22')](function(_0x89d530){_0x2ccfa7[_0xbb42('0x1d')]=_0x89d530;if(_0x2c305c[_0xbb42('0x31')][_0xbb42('0x40')]){_0x159a8d['include']=[{'all':!![]}];}return db[_0xbb42('0x41')]['findAll'](_0x159a8d);})[_0xbb42('0x22')](function(_0x22a70f){_0x2ccfa7[_0xbb42('0x42')]=_0x22a70f;return _0x2ccfa7;})[_0xbb42('0x22')](respondWithFilteredResult(_0x255f65,_0x159a8d))[_0xbb42('0x43')](handleError(_0x255f65,null));};exports['show']=function(_0xf3c2b3,_0x1a7bb9){var _0x1fc07a={'raw':!![],'where':{'id':_0xf3c2b3[_0xbb42('0x44')]['id']}},_0x569dab={};_0x569dab[_0xbb42('0x30')]=_[_0xbb42('0x32')](db[_0xbb42('0x41')]['rawAttributes']);_0x569dab['query']=_['keys'](_0xf3c2b3[_0xbb42('0x31')]);_0x569dab[_0xbb42('0x33')]=_['intersection'](_0x569dab['model'],_0x569dab['query']);_0x1fc07a[_0xbb42('0x35')]=_['intersection'](_0x569dab[_0xbb42('0x30')],qs[_0xbb42('0x36')](_0xf3c2b3['query'][_0xbb42('0x36')]));_0x1fc07a[_0xbb42('0x35')]=_0x1fc07a['attributes'][_0xbb42('0x37')]?_0x1fc07a[_0xbb42('0x35')]:_0x569dab[_0xbb42('0x30')];if(_0xf3c2b3[_0xbb42('0x31')]['includeAll']){_0x1fc07a[_0xbb42('0x45')]=[{'all':!![]}];}_0x1fc07a=_[_0xbb42('0x3e')]({},_0x1fc07a,_0xf3c2b3[_0xbb42('0x3f')]);return db[_0xbb42('0x41')][_0xbb42('0x46')](_0x1fc07a)['then'](handleEntityNotFound(_0x1a7bb9,null))[_0xbb42('0x22')](respondWithResult(_0x1a7bb9,null))['catch'](handleError(_0x1a7bb9,null));};exports['create']=function(_0x2cecf7,_0x2144e0){return db[_0xbb42('0x41')]['create'](_0x2cecf7[_0xbb42('0x47')],{})[_0xbb42('0x22')](respondWithResult(_0x2144e0,0xc9))[_0xbb42('0x43')](handleError(_0x2144e0,null));};exports['update']=function(_0x2fc740,_0x2991c1){if(_0x2fc740[_0xbb42('0x47')]['id']){delete _0x2fc740['body']['id'];}return db[_0xbb42('0x41')][_0xbb42('0x46')]({'where':{'id':_0x2fc740[_0xbb42('0x44')]['id']}})['then'](handleEntityNotFound(_0x2991c1,null))[_0xbb42('0x22')](saveUpdates(_0x2fc740['body'],null))[_0xbb42('0x22')](respondWithResult(_0x2991c1,null))['catch'](handleError(_0x2991c1,null));};exports[_0xbb42('0x23')]=function(_0x1299bc,_0x1ea67d){return db[_0xbb42('0x41')][_0xbb42('0x46')]({'where':{'id':_0x1299bc[_0xbb42('0x44')]['id']}})[_0xbb42('0x22')](handleEntityNotFound(_0x1ea67d,null))['then'](removeEntity(_0x1ea67d,null))[_0xbb42('0x43')](handleError(_0x1ea67d,null));};
\ No newline at end of file
index 9d1035b..c1b0d65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e14=['util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','define','ServicenowField','int_servicenow_fields','idField','FieldId','lodash'];(function(_0x5c6fcb,_0x58dc0f){var _0x49866d=function(_0x1d05db){while(--_0x1d05db){_0x5c6fcb['push'](_0x5c6fcb['shift']());}};_0x49866d(++_0x58dc0f);}(_0x7e14,0x1e0));var _0x47e1=function(_0x5dd145,_0x157231){_0x5dd145=_0x5dd145-0x0;var _0x538535=_0x7e14[_0x5dd145];return _0x538535;};'use strict';var _=require(_0x47e1('0x0'));var util=require(_0x47e1('0x1'));var logger=require(_0x47e1('0x2'))(_0x47e1('0x3'));var moment=require(_0x47e1('0x4'));var BPromise=require(_0x47e1('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x47e1('0x6'));var config=require(_0x47e1('0x7'));var attributes=require('./intServicenowField.attributes');module['exports']=function(_0x1469b5,_0x497b57){return _0x1469b5[_0x47e1('0x8')](_0x47e1('0x9'),attributes,{'tableName':_0x47e1('0xa'),'paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':[_0x47e1('0xb'),_0x47e1('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4a93=['idField','FieldId','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','exports','define','ServicenowField'];(function(_0x5eeadc,_0x17f42c){var _0x19781b=function(_0x188ed3){while(--_0x188ed3){_0x5eeadc['push'](_0x5eeadc['shift']());}};_0x19781b(++_0x17f42c);}(_0x4a93,0x1c9));var _0x34a9=function(_0x25d386,_0x108d0d){_0x25d386=_0x25d386-0x0;var _0x857f4a=_0x4a93[_0x25d386];return _0x857f4a;};'use strict';var _=require(_0x34a9('0x0'));var util=require(_0x34a9('0x1'));var logger=require(_0x34a9('0x2'))(_0x34a9('0x3'));var moment=require(_0x34a9('0x4'));var BPromise=require('bluebird');var rp=require(_0x34a9('0x5'));var fs=require('fs');var path=require(_0x34a9('0x6'));var rimraf=require(_0x34a9('0x7'));var config=require('../../config/environment');var attributes=require('./intServicenowField.attributes');module[_0x34a9('0x8')]=function(_0x51aec2,_0x3605d3){return _0x51aec2[_0x34a9('0x9')](_0x34a9('0xa'),attributes,{'tableName':'int_servicenow_fields','paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':[_0x34a9('0xb'),_0x34a9('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 970c7d1..7acf9a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s'];(function(_0x53957a,_0x5a813e){var _0x40c39f=function(_0x485f88){while(--_0x485f88){_0x53957a['push'](_0x53957a['shift']());}};_0x40c39f(++_0x5a813e);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0xcb91[_0x18ab2a];return _0x16dcee;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var BPromise=require(_0x1cb9('0x1'));var rs=require(_0x1cb9('0x2'));var fs=require('fs');var Redis=require(_0x1cb9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cb9('0x4'));var logger=require(_0x1cb9('0x5'))('rpc');var config=require(_0x1cb9('0x6'));var jayson=require(_0x1cb9('0x7'));var client=jayson['client'][_0x1cb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f7deb,_0x4ffe20,_0x38737d){return new BPromise(function(_0x12567c,_0x59d1be){return client[_0x1cb9('0x9')](_0x3f7deb,_0x38737d)['then'](function(_0x567139){logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,_0x1cb9('0xc'));logger[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x4ffe20,'request\x20sent',JSON[_0x1cb9('0xf')](_0x567139));if(_0x567139[_0x1cb9('0x10')]){if(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x11')]===0x1f4){logger[_0x1cb9('0x10')]('ServicenowField,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
+var _0xb7e7=['ServicenowField,\x20%s,\x20%s','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','then','info'];(function(_0x577259,_0x329f09){var _0x185cc7=function(_0x180e90){while(--_0x180e90){_0x577259['push'](_0x577259['shift']());}};_0x185cc7(++_0x329f09);}(_0xb7e7,0x121));var _0x7b7e=function(_0x2aec52,_0x59d962){_0x2aec52=_0x2aec52-0x0;var _0x3b8835=_0xb7e7[_0x2aec52];return _0x3b8835;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var moment=require(_0x7b7e('0x1'));var BPromise=require('bluebird');var rs=require(_0x7b7e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7b7e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x7b7e('0x4'))(_0x7b7e('0x5'));var config=require(_0x7b7e('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7b7e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x372bde,_0x7f87e0,_0x55ce81){return new BPromise(function(_0x42b871,_0x223587){return client[_0x7b7e('0x8')](_0x372bde,_0x55ce81)[_0x7b7e('0x9')](function(_0x148964){logger[_0x7b7e('0xa')](_0x7b7e('0xb'),_0x7f87e0,'request\x20sent');logger[_0x7b7e('0xc')](_0x7b7e('0xd'),_0x7f87e0,_0x7b7e('0xe'),JSON[_0x7b7e('0xf')](_0x148964));if(_0x148964[_0x7b7e('0x10')]){if(_0x148964[_0x7b7e('0x10')][_0x7b7e('0x11')]===0x1f4){logger[_0x7b7e('0x10')](_0x7b7e('0xb'),_0x7f87e0,_0x148964['error'][_0x7b7e('0x12')]);return _0x223587(_0x148964[_0x7b7e('0x10')]['message']);}logger[_0x7b7e('0x10')]('ServicenowField,\x20%s,\x20%s',_0x7f87e0,_0x148964['error'][_0x7b7e('0x12')]);return _0x42b871(_0x148964[_0x7b7e('0x10')][_0x7b7e('0x12')]);}else{logger[_0x7b7e('0xa')](_0x7b7e('0xb'),_0x7f87e0,'request\x20sent');_0x42b871(_0x148964['result'][_0x7b7e('0x12')]);}})[_0x7b7e('0x13')](function(_0x27f999){logger[_0x7b7e('0x10')](_0x7b7e('0xb'),_0x7f87e0,_0x27f999);_0x223587(_0x27f999);});});}
\ No newline at end of file
index d1bfc3d..54fd9b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x346028,_0x522d40){var _0x1794e1=function(_0x48c5a5){while(--_0x48c5a5){_0x346028['push'](_0x346028['shift']());}};_0x1794e1(++_0x522d40);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _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(_0x584fe3,_0x54db54){var _0x1a3f02=function(_0x1a1649){while(--_0x1a1649){_0x584fe3['push'](_0x584fe3['shift']());}};_0x1a3f02(++_0x54db54);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'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 dfe40ac..0facb56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x5bc2a5,_0x20b456){var _0x1b9e9a=function(_0x441630){while(--_0x441630){_0x5bc2a5['push'](_0x5bc2a5['shift']());}};_0x1b9e9a(++_0x20b456);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xa9e0[_0x1da04e];return _0xdd8c41;};'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(_0x34a97f,_0x272327){var _0x103e80=function(_0xe96523){while(--_0xe96523){_0x34a97f['push'](_0x34a97f['shift']());}};_0x103e80(++_0x272327);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'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 0103de6..e9c9eae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa584=['direction','username','remoteUri','slice','substring','lastIndexOf','POST','%s%s','/service/v4_1/rest.php','login','JSON','stringify','password','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','get_module_fields','values','includes','label','endsWith','value','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','destroy','end','stack','name','send','index','map','SugarcrmAccount','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','order','sort','filter','merge','VIRTUAL','where','then','include','catch','show','keys','options','create','update','body','find','params','getConfigurations','findOne','SugarcrmConfiguration','pick','hasOwnProperty','nolimit','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','SugarcrmField','getFields','assigned_user_id','created_by','description','date_start','duration_hours','duration_minutes','parent_type','parent_name'];(function(_0x333eb1,_0x3915c7){var _0xb20662=function(_0x2e6754){while(--_0x2e6754){_0x333eb1['push'](_0x333eb1['shift']());}};_0xb20662(++_0x3915c7);}(_0xa584,0x18c));var _0x4a58=function(_0x44ca44,_0x47432b){_0x44ca44=_0x44ca44-0x0;var _0x5efddb=_0xa584[_0x44ca44];return _0x5efddb;};'use strict';var emlformat=require(_0x4a58('0x0'));var rimraf=require(_0x4a58('0x1'));var zipdir=require(_0x4a58('0x2'));var jsonpatch=require(_0x4a58('0x3'));var rp=require('request-promise');var moment=require(_0x4a58('0x4'));var BPromise=require(_0x4a58('0x5'));var Mustache=require(_0x4a58('0x6'));var util=require('util');var path=require(_0x4a58('0x7'));var sox=require(_0x4a58('0x8'));var csv=require(_0x4a58('0x9'));var ejs=require(_0x4a58('0xa'));var fs=require('fs');var fs_extra=require(_0x4a58('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x4a58('0xc'));var jsforce=require(_0x4a58('0xd'));var deskjs=require(_0x4a58('0xe'));var toCsv=require(_0x4a58('0x9'));var querystring=require(_0x4a58('0xf'));var Papa=require(_0x4a58('0x10'));var Redis=require('ioredis');var authService=require(_0x4a58('0x11'));var qs=require(_0x4a58('0x12'));var as=require(_0x4a58('0x13'));var hardwareService=require(_0x4a58('0x14'));var logger=require(_0x4a58('0x15'))(_0x4a58('0x16'));var utils=require(_0x4a58('0x17'));var config=require(_0x4a58('0x18'));var licenseUtil=require(_0x4a58('0x19'));var db=require(_0x4a58('0x1a'))['db'];var integrations=require(_0x4a58('0x1b'));function respondWithStatusCode(_0x404ef0,_0x4818d2){_0x4818d2=_0x4818d2||0xcc;return function(_0x5ea7d3){if(_0x5ea7d3){return _0x404ef0[_0x4a58('0x1c')](_0x4818d2);}return _0x404ef0[_0x4a58('0x1d')](_0x4818d2)['end']();};}function respondWithResult(_0x5a88ad,_0x2d3ac9){_0x2d3ac9=_0x2d3ac9||0xc8;return function(_0x1c2dd1){if(_0x1c2dd1){return _0x5a88ad[_0x4a58('0x1d')](_0x2d3ac9)[_0x4a58('0x1e')](_0x1c2dd1);}};}function respondWithFilteredResult(_0x3349be,_0x52b557){return function(_0xb1080b){if(_0xb1080b){var _0x2f9807=typeof _0x52b557[_0x4a58('0x1f')]==='undefined'&&typeof _0x52b557['limit']===_0x4a58('0x20');var _0x2e5cc9=_0xb1080b[_0x4a58('0x21')];var _0x6e6f0=_0x2f9807?0x0:_0x52b557[_0x4a58('0x1f')];var _0x21c0e1=_0x2f9807?_0xb1080b[_0x4a58('0x21')]:_0x52b557[_0x4a58('0x1f')]+_0x52b557[_0x4a58('0x22')];var _0x3ffec1;if(_0x21c0e1>=_0x2e5cc9){_0x21c0e1=_0x2e5cc9;_0x3ffec1=0xc8;}else{_0x3ffec1=0xce;}_0x3349be['status'](_0x3ffec1);return _0x3349be['set'](_0x4a58('0x23'),_0x6e6f0+'-'+_0x21c0e1+'/'+_0x2e5cc9)[_0x4a58('0x1e')](_0xb1080b);}return null;};}function patchUpdates(_0x130deb){return function(_0x5c68d8){try{jsonpatch[_0x4a58('0x24')](_0x5c68d8,_0x130deb,!![]);}catch(_0x3df821){return BPromise[_0x4a58('0x25')](_0x3df821);}return _0x5c68d8[_0x4a58('0x26')]();};}function saveUpdates(_0x2e2afb,_0x21b69e){return function(_0x2eb3c7){if(_0x2eb3c7){return _0x2eb3c7['update'](_0x2e2afb)['then'](function(_0x16fb2c){return _0x16fb2c;});}return null;};}function removeEntity(_0x231961,_0x439c33){return function(_0x4c098f){if(_0x4c098f){return _0x4c098f[_0x4a58('0x27')]()['then'](function(){_0x231961[_0x4a58('0x1d')](0xcc)[_0x4a58('0x28')]();});}};}function handleEntityNotFound(_0x304433,_0x3ccf23){return function(_0x4d4fc3){if(!_0x4d4fc3){_0x304433[_0x4a58('0x1c')](0x194);}return _0x4d4fc3;};}function handleError(_0x5da758,_0x5afdf9){_0x5afdf9=_0x5afdf9||0x1f4;return function(_0x4e2cf7){logger['error'](_0x4e2cf7[_0x4a58('0x29')]);if(_0x4e2cf7[_0x4a58('0x2a')]){delete _0x4e2cf7[_0x4a58('0x2a')];}_0x5da758['status'](_0x5afdf9)[_0x4a58('0x2b')](_0x4e2cf7);};}exports[_0x4a58('0x2c')]=function(_0x5791af,_0x4a9db8){var _0x2562af={},_0x418d0f={},_0x757578={'count':0x0,'rows':[]};var _0x398721=_[_0x4a58('0x2d')](db[_0x4a58('0x2e')][_0x4a58('0x2f')],function(_0x114612){return{'name':_0x114612[_0x4a58('0x30')],'type':_0x114612[_0x4a58('0x31')]['key']};});_0x418d0f[_0x4a58('0x32')]=_[_0x4a58('0x2d')](_0x398721,_0x4a58('0x2a'));_0x418d0f[_0x4a58('0x33')]=_['keys'](_0x5791af['query']);_0x418d0f[_0x4a58('0x34')]=_[_0x4a58('0x35')](_0x418d0f['model'],_0x418d0f['query']);_0x2562af[_0x4a58('0x36')]=_[_0x4a58('0x35')](_0x418d0f['model'],qs['fields'](_0x5791af['query'][_0x4a58('0x37')]));_0x2562af[_0x4a58('0x36')]=_0x2562af[_0x4a58('0x36')][_0x4a58('0x38')]?_0x2562af[_0x4a58('0x36')]:_0x418d0f[_0x4a58('0x32')];if(!_0x5791af[_0x4a58('0x33')]['hasOwnProperty']('nolimit')){_0x2562af[_0x4a58('0x22')]=qs['limit'](_0x5791af[_0x4a58('0x33')]['limit']);_0x2562af[_0x4a58('0x1f')]=qs[_0x4a58('0x1f')](_0x5791af[_0x4a58('0x33')][_0x4a58('0x1f')]);}_0x2562af[_0x4a58('0x39')]=qs[_0x4a58('0x3a')](_0x5791af[_0x4a58('0x33')]['sort']);_0x2562af['where']=qs['filters'](_['pick'](_0x5791af[_0x4a58('0x33')],_0x418d0f[_0x4a58('0x34')]),_0x398721);if(_0x5791af['query'][_0x4a58('0x3b')]){_0x2562af['where']=_[_0x4a58('0x3c')](_0x2562af['where'],{'$or':_[_0x4a58('0x2d')](_0x398721,function(_0xa24572){if(_0xa24572[_0x4a58('0x31')]!==_0x4a58('0x3d')){var _0x4ff28e={};_0x4ff28e[_0xa24572[_0x4a58('0x2a')]]={'$like':'%'+_0x5791af[_0x4a58('0x33')]['filter']+'%'};return _0x4ff28e;}})});}_0x2562af=_[_0x4a58('0x3c')]({},_0x2562af,_0x5791af['options']);var _0x34b2b9={'where':_0x2562af[_0x4a58('0x3e')]};return db[_0x4a58('0x2e')]['count'](_0x34b2b9)[_0x4a58('0x3f')](function(_0x1ea567){_0x757578[_0x4a58('0x21')]=_0x1ea567;if(_0x5791af['query']['includeAll']){_0x2562af[_0x4a58('0x40')]=[{'all':!![]}];}return db[_0x4a58('0x2e')]['findAll'](_0x2562af);})[_0x4a58('0x3f')](function(_0x102c21){_0x757578['rows']=_0x102c21;return _0x757578;})[_0x4a58('0x3f')](respondWithFilteredResult(_0x4a9db8,_0x2562af))[_0x4a58('0x41')](handleError(_0x4a9db8,null));};exports[_0x4a58('0x42')]=function(_0x38f242,_0x2b25de){var _0x271973={'raw':![],'where':{'id':_0x38f242['params']['id']}},_0x51040d={};_0x51040d[_0x4a58('0x32')]=_[_0x4a58('0x43')](db[_0x4a58('0x2e')][_0x4a58('0x2f')]);_0x51040d[_0x4a58('0x33')]=_[_0x4a58('0x43')](_0x38f242[_0x4a58('0x33')]);_0x51040d['filters']=_[_0x4a58('0x35')](_0x51040d[_0x4a58('0x32')],_0x51040d[_0x4a58('0x33')]);_0x271973['attributes']=_[_0x4a58('0x35')](_0x51040d[_0x4a58('0x32')],qs[_0x4a58('0x37')](_0x38f242[_0x4a58('0x33')][_0x4a58('0x37')]));_0x271973[_0x4a58('0x36')]=_0x271973['attributes'][_0x4a58('0x38')]?_0x271973[_0x4a58('0x36')]:_0x51040d['model'];if(_0x38f242[_0x4a58('0x33')]['includeAll']){_0x271973[_0x4a58('0x40')]=[{'all':!![]}];}_0x271973=_[_0x4a58('0x3c')]({},_0x271973,_0x38f242[_0x4a58('0x44')]);return db[_0x4a58('0x2e')]['find'](_0x271973)['then'](handleEntityNotFound(_0x2b25de,null))[_0x4a58('0x3f')](respondWithResult(_0x2b25de,null))[_0x4a58('0x41')](handleError(_0x2b25de,null));};exports[_0x4a58('0x45')]=function(_0x4c30e3,_0x47323b){return db[_0x4a58('0x2e')][_0x4a58('0x45')](_0x4c30e3['body'],{})[_0x4a58('0x3f')](respondWithResult(_0x47323b,0xc9))[_0x4a58('0x41')](handleError(_0x47323b,null));};exports[_0x4a58('0x46')]=function(_0xaf2b75,_0x346f9c){if(_0xaf2b75[_0x4a58('0x47')]['id']){delete _0xaf2b75['body']['id'];}return db[_0x4a58('0x2e')][_0x4a58('0x48')]({'where':{'id':_0xaf2b75[_0x4a58('0x49')]['id']}})[_0x4a58('0x3f')](handleEntityNotFound(_0x346f9c,null))['then'](saveUpdates(_0xaf2b75[_0x4a58('0x47')],null))[_0x4a58('0x3f')](respondWithResult(_0x346f9c,null))[_0x4a58('0x41')](handleError(_0x346f9c,null));};exports[_0x4a58('0x27')]=function(_0x496383,_0x573a55){return db[_0x4a58('0x2e')][_0x4a58('0x48')]({'where':{'id':_0x496383['params']['id']}})['then'](handleEntityNotFound(_0x573a55,null))[_0x4a58('0x3f')](removeEntity(_0x573a55,null))[_0x4a58('0x41')](handleError(_0x573a55,null));};exports[_0x4a58('0x4a')]=function(_0xea9522,_0x254d0e,_0x34a9e3){var _0x3bcc1d={};var _0x216ea3={};var _0x2e9a77;var _0x1ed4fb;return db['SugarcrmAccount'][_0x4a58('0x4b')]({'where':{'id':_0xea9522[_0x4a58('0x49')]['id']}})[_0x4a58('0x3f')](handleEntityNotFound(_0x254d0e,null))[_0x4a58('0x3f')](function(_0x2535e8){if(_0x2535e8){_0x2e9a77=_0x2535e8;_0x216ea3[_0x4a58('0x32')]=_['keys'](db[_0x4a58('0x4c')][_0x4a58('0x2f')]);_0x216ea3[_0x4a58('0x33')]=_[_0x4a58('0x43')](_0xea9522['query']);_0x216ea3[_0x4a58('0x34')]=_[_0x4a58('0x35')](_0x216ea3['model'],_0x216ea3[_0x4a58('0x33')]);_0x3bcc1d[_0x4a58('0x36')]=_[_0x4a58('0x35')](_0x216ea3[_0x4a58('0x32')],qs[_0x4a58('0x37')](_0xea9522[_0x4a58('0x33')][_0x4a58('0x37')]));_0x3bcc1d['attributes']=_0x3bcc1d['attributes'][_0x4a58('0x38')]?_0x3bcc1d[_0x4a58('0x36')]:_0x216ea3['model'];_0x3bcc1d[_0x4a58('0x39')]=qs[_0x4a58('0x3a')](_0xea9522[_0x4a58('0x33')]['sort']);_0x3bcc1d[_0x4a58('0x3e')]=qs[_0x4a58('0x34')](_[_0x4a58('0x4d')](_0xea9522['query'],_0x216ea3[_0x4a58('0x34')]));if(_0xea9522[_0x4a58('0x33')][_0x4a58('0x3b')]){_0x3bcc1d[_0x4a58('0x3e')]=_[_0x4a58('0x3c')](_0x3bcc1d[_0x4a58('0x3e')],{'$or':_[_0x4a58('0x2d')](_0x3bcc1d[_0x4a58('0x36')],function(_0x5aaa9f){var _0x555ff9={};_0x555ff9[_0x5aaa9f]={'$like':'%'+_0xea9522[_0x4a58('0x33')][_0x4a58('0x3b')]+'%'};return _0x555ff9;})});}_0x3bcc1d=_[_0x4a58('0x3c')]({},_0x3bcc1d,_0xea9522[_0x4a58('0x44')]);return _0x2e9a77['getConfigurations'](_0x3bcc1d);}})[_0x4a58('0x3f')](function(_0x2162f3){if(_0x2162f3){_0x1ed4fb=_0x2162f3[_0x4a58('0x38')];if(!_0xea9522[_0x4a58('0x33')][_0x4a58('0x4e')](_0x4a58('0x4f'))){_0x3bcc1d['limit']=qs[_0x4a58('0x22')](_0xea9522[_0x4a58('0x33')][_0x4a58('0x22')]);_0x3bcc1d[_0x4a58('0x1f')]=qs[_0x4a58('0x1f')](_0xea9522[_0x4a58('0x33')][_0x4a58('0x1f')]);}return _0x2e9a77[_0x4a58('0x4a')](_0x3bcc1d);}})[_0x4a58('0x3f')](function(_0x1b3f56){if(_0x1b3f56){return _0x1b3f56?{'count':_0x1ed4fb,'rows':_0x1b3f56}:null;}})[_0x4a58('0x3f')](respondWithResult(_0x254d0e,null))[_0x4a58('0x41')](handleError(_0x254d0e,null));};exports[_0x4a58('0x50')]=function(_0x116f61,_0x10d745,_0x4b11f8){if(_0x116f61[_0x4a58('0x47')]['id']){delete _0x116f61[_0x4a58('0x47')]['id'];}return db['SugarcrmAccount'][_0x4a58('0x4b')]({'where':{'id':_0x116f61[_0x4a58('0x49')]['id']}})[_0x4a58('0x3f')](handleEntityNotFound(_0x10d745,null))[_0x4a58('0x3f')](function(_0x1f31f2){if(_0x1f31f2){_0x116f61[_0x4a58('0x47')][_0x4a58('0x51')]=_0x1f31f2['id'];_0x116f61[_0x4a58('0x47')]['Subjects']=integrations[_0x4a58('0x52')](_0x116f61['body'][_0x4a58('0x53')],_0x116f61[_0x4a58('0x47')][_0x4a58('0x31')]);_0x116f61[_0x4a58('0x47')][_0x4a58('0x54')]=integrations[_0x4a58('0x55')](_0x116f61['body'][_0x4a58('0x53')],_0x116f61[_0x4a58('0x47')][_0x4a58('0x31')]);return db['SugarcrmConfiguration'][_0x4a58('0x45')](_0x116f61[_0x4a58('0x47')],{'include':[{'model':db[_0x4a58('0x56')],'as':'Subjects'},{'model':db[_0x4a58('0x56')],'as':_0x4a58('0x54')}]});}return null;})[_0x4a58('0x3f')](respondWithResult(_0x10d745,null))[_0x4a58('0x41')](handleError(_0x10d745,null));};exports[_0x4a58('0x57')]=function(_0x46add4,_0x666211,_0x13819b){var _0x245836='';var _0x3028f2=['id',_0x4a58('0x2a'),_0x4a58('0x58'),_0x4a58('0x59'),_0x4a58('0x5a'),_0x4a58('0x5b'),_0x4a58('0x5c'),_0x4a58('0x5d'),'parent_id',_0x4a58('0x5e'),_0x4a58('0x5f'),_0x4a58('0x60')];return db[_0x4a58('0x2e')][_0x4a58('0x4b')]({'where':{'id':_0x46add4[_0x4a58('0x49')]['id']},'attributes':['id',_0x4a58('0x61'),'password',_0x4a58('0x62')]})['then'](handleEntityNotFound(_0x666211,null))[_0x4a58('0x3f')](function(_0x19684b){if(_0x19684b){_0x245836=_0x19684b[_0x4a58('0x62')];var _0x1ad52a=_0x245836[_0x4a58('0x63')](-0x1);if(_0x1ad52a==='/'){_0x245836=_0x245836[_0x4a58('0x64')](0x0,_0x245836[_0x4a58('0x65')](_0x1ad52a));}return rp({'method':_0x4a58('0x66'),'uri':util['format'](_0x4a58('0x67'),_0x245836,_0x4a58('0x68')),'json':!![],'form':{'method':_0x4a58('0x69'),'input_type':'JSON','response_type':_0x4a58('0x6a'),'rest_data':JSON[_0x4a58('0x6b')]({'user_auth':{'user_name':_0x19684b[_0x4a58('0x61')],'password':_0x19684b[_0x4a58('0x6c')],'encryption':_0x4a58('0x6d')},'application':_0x4a58('0x6e')})}});}})[_0x4a58('0x3f')](function(_0x108677){if(_0x108677&&_0x108677[_0x4a58('0x2a')]!==_0x4a58('0x6f')&&_0x108677[_0x4a58('0x2a')]!==_0x4a58('0x70')){return rp({'method':_0x4a58('0x66'),'uri':util['format'](_0x4a58('0x67'),_0x245836,_0x4a58('0x68')),'json':!![],'form':{'method':_0x4a58('0x71'),'input_type':_0x4a58('0x6a'),'response_type':_0x4a58('0x6a'),'rest_data':JSON[_0x4a58('0x6b')]({'session':_0x108677['id'],'module_name':'Calls'})}})[_0x4a58('0x3f')](function(_0x488fc9){if(_0x488fc9){var _0x22fb57=_[_0x4a58('0x72')](_0x488fc9['module_fields']);_['remove'](_0x22fb57,function(_0x5e86c7){return _0x3028f2[_0x4a58('0x73')](_0x5e86c7[_0x4a58('0x2a')]);});return{'count':_0x22fb57['length'],'rows':_['map'](_0x22fb57,function(_0x404e00){return{'id':_0x404e00['name'],'name':_0x404e00[_0x4a58('0x74')],'custom':_[_0x4a58('0x75')](_0x404e00[_0x4a58('0x2a')],'_c')?!![]:![],'options':_0x404e00[_0x4a58('0x44')]?_[_0x4a58('0x2d')](_['values'](_0x404e00['options']),function(_0x1a7ab8){return{'name':_0x1a7ab8[_0x4a58('0x76')],'value':_0x1a7ab8[_0x4a58('0x2a')]};}):[]};})};}})[_0x4a58('0x3f')](respondWithResult(_0x666211,null))[_0x4a58('0x41')](function(_0xee1dc3){var _0x375482=_0x46add4[_0x4a58('0x33')][_0x4a58('0x77')]?0x1f4:_0xee1dc3[_0x4a58('0x78')]||0x1f4;logger['error'](_0x4a58('0x79'),_0x4a58('0x57'),_0x375482,JSON[_0x4a58('0x6b')](_0xee1dc3));delete _0xee1dc3[_0x4a58('0x2a')];if(_0x375482===0x191){_0x375482=0x190;}_0x666211[_0x4a58('0x1d')](_0x375482)['send'](_0x46add4['query'][_0x4a58('0x77')]?{'message':_0x4a58('0x7a'),'statusCode':_0xee1dc3['statusCode']}:_0xee1dc3);});}else{var _0x8a6833=0x1f4;_0x666211[_0x4a58('0x1d')](_0x8a6833)[_0x4a58('0x2b')]({'message':_0x4a58('0x7a'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0xfa5d=['../../components/integrations/configuration','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','map','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','SugarcrmAccount','count','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','getConfigurations','findOne','SugarcrmConfiguration','rawAttributes','hasOwnProperty','Subjects','getSubjects','channel','SugarcrmField','Descriptions','getFields','assigned_user_id','description','date_start','duration_hours','duration_minutes','parent_id','parent_type','parent_name','direction','username','remoteUri','slice','substring','lastIndexOf','POST','format','/service/v4_1/rest.php','login','JSON','stringify','password','Invalid\x20Login','%s%s','get_module_fields','Calls','values','includes','label','endsWith','value','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','rimraf','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','../../config/license/hardware','api','../../config/license/util'];(function(_0x255193,_0x151b38){var _0x25cb1a=function(_0x5c4427){while(--_0x5c4427){_0x255193['push'](_0x255193['shift']());}};_0x25cb1a(++_0x151b38);}(_0xfa5d,0x152));var _0xdfa5=function(_0x55f235,_0x2c6f5b){_0x55f235=_0x55f235-0x0;var _0x2abb47=_0xfa5d[_0x55f235];return _0x2abb47;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdfa5('0x0'));var zipdir=require(_0xdfa5('0x1'));var jsonpatch=require(_0xdfa5('0x2'));var rp=require(_0xdfa5('0x3'));var moment=require(_0xdfa5('0x4'));var BPromise=require(_0xdfa5('0x5'));var Mustache=require(_0xdfa5('0x6'));var util=require(_0xdfa5('0x7'));var path=require(_0xdfa5('0x8'));var sox=require(_0xdfa5('0x9'));var csv=require(_0xdfa5('0xa'));var ejs=require(_0xdfa5('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdfa5('0xc'));var squel=require(_0xdfa5('0xd'));var crypto=require(_0xdfa5('0xe'));var jsforce=require(_0xdfa5('0xf'));var deskjs=require(_0xdfa5('0x10'));var toCsv=require('to-csv');var querystring=require(_0xdfa5('0x11'));var Papa=require(_0xdfa5('0x12'));var Redis=require(_0xdfa5('0x13'));var authService=require(_0xdfa5('0x14'));var qs=require(_0xdfa5('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdfa5('0x16'));var logger=require('../../config/logger')(_0xdfa5('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xdfa5('0x18'));var db=require('../../mysqldb')['db'];var integrations=require(_0xdfa5('0x19'));function respondWithStatusCode(_0x4dc7cd,_0x5cc173){_0x5cc173=_0x5cc173||0xcc;return function(_0xdcd482){if(_0xdcd482){return _0x4dc7cd['sendStatus'](_0x5cc173);}return _0x4dc7cd[_0xdfa5('0x1a')](_0x5cc173)[_0xdfa5('0x1b')]();};}function respondWithResult(_0x1ee4f7,_0x3ab2fa){_0x3ab2fa=_0x3ab2fa||0xc8;return function(_0x38eadd){if(_0x38eadd){return _0x1ee4f7[_0xdfa5('0x1a')](_0x3ab2fa)[_0xdfa5('0x1c')](_0x38eadd);}};}function respondWithFilteredResult(_0x49cf70,_0x36b338){return function(_0x3143b8){if(_0x3143b8){var _0x24da5b=typeof _0x36b338[_0xdfa5('0x1d')]==='undefined'&&typeof _0x36b338['limit']===_0xdfa5('0x1e');var _0x3f4bd8=_0x3143b8['count'];var _0x2ae8c3=_0x24da5b?0x0:_0x36b338[_0xdfa5('0x1d')];var _0x52ed0c=_0x24da5b?_0x3143b8['count']:_0x36b338[_0xdfa5('0x1d')]+_0x36b338[_0xdfa5('0x1f')];var _0x7b8ed3;if(_0x52ed0c>=_0x3f4bd8){_0x52ed0c=_0x3f4bd8;_0x7b8ed3=0xc8;}else{_0x7b8ed3=0xce;}_0x49cf70[_0xdfa5('0x1a')](_0x7b8ed3);return _0x49cf70[_0xdfa5('0x20')](_0xdfa5('0x21'),_0x2ae8c3+'-'+_0x52ed0c+'/'+_0x3f4bd8)[_0xdfa5('0x1c')](_0x3143b8);}return null;};}function patchUpdates(_0x138736){return function(_0x46b284){try{jsonpatch[_0xdfa5('0x22')](_0x46b284,_0x138736,!![]);}catch(_0x1c832b){return BPromise[_0xdfa5('0x23')](_0x1c832b);}return _0x46b284[_0xdfa5('0x24')]();};}function saveUpdates(_0x21a441,_0x3cff05){return function(_0x50a2f2){if(_0x50a2f2){return _0x50a2f2[_0xdfa5('0x25')](_0x21a441)[_0xdfa5('0x26')](function(_0x19826a){return _0x19826a;});}return null;};}function removeEntity(_0x1b9d6d,_0x4d5b66){return function(_0x29db7e){if(_0x29db7e){return _0x29db7e[_0xdfa5('0x27')]()[_0xdfa5('0x26')](function(){_0x1b9d6d['status'](0xcc)[_0xdfa5('0x1b')]();});}};}function handleEntityNotFound(_0x1a4873,_0x3ba123){return function(_0x30f0c4){if(!_0x30f0c4){_0x1a4873[_0xdfa5('0x28')](0x194);}return _0x30f0c4;};}function handleError(_0x5ca104,_0xdbb720){_0xdbb720=_0xdbb720||0x1f4;return function(_0x1cd4b9){logger[_0xdfa5('0x29')](_0x1cd4b9[_0xdfa5('0x2a')]);if(_0x1cd4b9[_0xdfa5('0x2b')]){delete _0x1cd4b9[_0xdfa5('0x2b')];}_0x5ca104[_0xdfa5('0x1a')](_0xdbb720)[_0xdfa5('0x2c')](_0x1cd4b9);};}exports['index']=function(_0x320256,_0x23429f){var _0x55fdf6={},_0x48e28a={},_0x5c6e6e={'count':0x0,'rows':[]};var _0x56b441=_[_0xdfa5('0x2d')](db['SugarcrmAccount']['rawAttributes'],function(_0x344eab){return{'name':_0x344eab['fieldName'],'type':_0x344eab[_0xdfa5('0x2e')][_0xdfa5('0x2f')]};});_0x48e28a[_0xdfa5('0x30')]=_[_0xdfa5('0x2d')](_0x56b441,'name');_0x48e28a[_0xdfa5('0x31')]=_[_0xdfa5('0x32')](_0x320256[_0xdfa5('0x31')]);_0x48e28a[_0xdfa5('0x33')]=_[_0xdfa5('0x34')](_0x48e28a['model'],_0x48e28a[_0xdfa5('0x31')]);_0x55fdf6[_0xdfa5('0x35')]=_[_0xdfa5('0x34')](_0x48e28a[_0xdfa5('0x30')],qs[_0xdfa5('0x36')](_0x320256['query'][_0xdfa5('0x36')]));_0x55fdf6[_0xdfa5('0x35')]=_0x55fdf6[_0xdfa5('0x35')][_0xdfa5('0x37')]?_0x55fdf6[_0xdfa5('0x35')]:_0x48e28a[_0xdfa5('0x30')];if(!_0x320256['query']['hasOwnProperty'](_0xdfa5('0x38'))){_0x55fdf6[_0xdfa5('0x1f')]=qs[_0xdfa5('0x1f')](_0x320256[_0xdfa5('0x31')][_0xdfa5('0x1f')]);_0x55fdf6[_0xdfa5('0x1d')]=qs['offset'](_0x320256[_0xdfa5('0x31')]['offset']);}_0x55fdf6['order']=qs['sort'](_0x320256[_0xdfa5('0x31')][_0xdfa5('0x39')]);_0x55fdf6[_0xdfa5('0x3a')]=qs[_0xdfa5('0x33')](_[_0xdfa5('0x3b')](_0x320256[_0xdfa5('0x31')],_0x48e28a[_0xdfa5('0x33')]),_0x56b441);if(_0x320256[_0xdfa5('0x31')]['filter']){_0x55fdf6[_0xdfa5('0x3a')]=_[_0xdfa5('0x3c')](_0x55fdf6[_0xdfa5('0x3a')],{'$or':_['map'](_0x56b441,function(_0x311922){if(_0x311922[_0xdfa5('0x2e')]!==_0xdfa5('0x3d')){var _0xdcfcc1={};_0xdcfcc1[_0x311922[_0xdfa5('0x2b')]]={'$like':'%'+_0x320256[_0xdfa5('0x31')][_0xdfa5('0x3e')]+'%'};return _0xdcfcc1;}})});}_0x55fdf6=_[_0xdfa5('0x3c')]({},_0x55fdf6,_0x320256['options']);var _0x3460e1={'where':_0x55fdf6[_0xdfa5('0x3a')]};return db[_0xdfa5('0x3f')][_0xdfa5('0x40')](_0x3460e1)[_0xdfa5('0x26')](function(_0x9fc8bf){_0x5c6e6e[_0xdfa5('0x40')]=_0x9fc8bf;if(_0x320256['query'][_0xdfa5('0x41')]){_0x55fdf6[_0xdfa5('0x42')]=[{'all':!![]}];}return db['SugarcrmAccount'][_0xdfa5('0x43')](_0x55fdf6);})[_0xdfa5('0x26')](function(_0x4f135d){_0x5c6e6e[_0xdfa5('0x44')]=_0x4f135d;return _0x5c6e6e;})[_0xdfa5('0x26')](respondWithFilteredResult(_0x23429f,_0x55fdf6))[_0xdfa5('0x45')](handleError(_0x23429f,null));};exports[_0xdfa5('0x46')]=function(_0x143a30,_0x229e8d){var _0xb1c9bc={'raw':![],'where':{'id':_0x143a30[_0xdfa5('0x47')]['id']}},_0x505c2f={};_0x505c2f[_0xdfa5('0x30')]=_[_0xdfa5('0x32')](db['SugarcrmAccount']['rawAttributes']);_0x505c2f[_0xdfa5('0x31')]=_[_0xdfa5('0x32')](_0x143a30[_0xdfa5('0x31')]);_0x505c2f[_0xdfa5('0x33')]=_[_0xdfa5('0x34')](_0x505c2f[_0xdfa5('0x30')],_0x505c2f[_0xdfa5('0x31')]);_0xb1c9bc[_0xdfa5('0x35')]=_[_0xdfa5('0x34')](_0x505c2f[_0xdfa5('0x30')],qs[_0xdfa5('0x36')](_0x143a30[_0xdfa5('0x31')][_0xdfa5('0x36')]));_0xb1c9bc['attributes']=_0xb1c9bc[_0xdfa5('0x35')][_0xdfa5('0x37')]?_0xb1c9bc[_0xdfa5('0x35')]:_0x505c2f['model'];if(_0x143a30[_0xdfa5('0x31')]['includeAll']){_0xb1c9bc[_0xdfa5('0x42')]=[{'all':!![]}];}_0xb1c9bc=_[_0xdfa5('0x3c')]({},_0xb1c9bc,_0x143a30[_0xdfa5('0x48')]);return db[_0xdfa5('0x3f')][_0xdfa5('0x49')](_0xb1c9bc)[_0xdfa5('0x26')](handleEntityNotFound(_0x229e8d,null))[_0xdfa5('0x26')](respondWithResult(_0x229e8d,null))[_0xdfa5('0x45')](handleError(_0x229e8d,null));};exports[_0xdfa5('0x4a')]=function(_0x41c416,_0x5355c2){return db['SugarcrmAccount'][_0xdfa5('0x4a')](_0x41c416[_0xdfa5('0x4b')],{})[_0xdfa5('0x26')](respondWithResult(_0x5355c2,0xc9))[_0xdfa5('0x45')](handleError(_0x5355c2,null));};exports[_0xdfa5('0x25')]=function(_0x43d3b4,_0x3f186a){if(_0x43d3b4['body']['id']){delete _0x43d3b4[_0xdfa5('0x4b')]['id'];}return db[_0xdfa5('0x3f')][_0xdfa5('0x49')]({'where':{'id':_0x43d3b4[_0xdfa5('0x47')]['id']}})['then'](handleEntityNotFound(_0x3f186a,null))[_0xdfa5('0x26')](saveUpdates(_0x43d3b4[_0xdfa5('0x4b')],null))[_0xdfa5('0x26')](respondWithResult(_0x3f186a,null))['catch'](handleError(_0x3f186a,null));};exports[_0xdfa5('0x27')]=function(_0x4d1b18,_0x2e8572){return db[_0xdfa5('0x3f')][_0xdfa5('0x49')]({'where':{'id':_0x4d1b18[_0xdfa5('0x47')]['id']}})[_0xdfa5('0x26')](handleEntityNotFound(_0x2e8572,null))[_0xdfa5('0x26')](removeEntity(_0x2e8572,null))[_0xdfa5('0x45')](handleError(_0x2e8572,null));};exports[_0xdfa5('0x4c')]=function(_0x5bd919,_0x2331e3,_0x43a047){var _0x551d75={};var _0xf180f4={};var _0x9dd8de;var _0x48115d;return db[_0xdfa5('0x3f')][_0xdfa5('0x4d')]({'where':{'id':_0x5bd919[_0xdfa5('0x47')]['id']}})[_0xdfa5('0x26')](handleEntityNotFound(_0x2331e3,null))[_0xdfa5('0x26')](function(_0x379a6b){if(_0x379a6b){_0x9dd8de=_0x379a6b;_0xf180f4[_0xdfa5('0x30')]=_[_0xdfa5('0x32')](db[_0xdfa5('0x4e')][_0xdfa5('0x4f')]);_0xf180f4[_0xdfa5('0x31')]=_[_0xdfa5('0x32')](_0x5bd919[_0xdfa5('0x31')]);_0xf180f4[_0xdfa5('0x33')]=_[_0xdfa5('0x34')](_0xf180f4[_0xdfa5('0x30')],_0xf180f4[_0xdfa5('0x31')]);_0x551d75[_0xdfa5('0x35')]=_[_0xdfa5('0x34')](_0xf180f4['model'],qs[_0xdfa5('0x36')](_0x5bd919[_0xdfa5('0x31')][_0xdfa5('0x36')]));_0x551d75[_0xdfa5('0x35')]=_0x551d75[_0xdfa5('0x35')][_0xdfa5('0x37')]?_0x551d75['attributes']:_0xf180f4[_0xdfa5('0x30')];_0x551d75['order']=qs[_0xdfa5('0x39')](_0x5bd919[_0xdfa5('0x31')][_0xdfa5('0x39')]);_0x551d75[_0xdfa5('0x3a')]=qs['filters'](_[_0xdfa5('0x3b')](_0x5bd919['query'],_0xf180f4[_0xdfa5('0x33')]));if(_0x5bd919[_0xdfa5('0x31')][_0xdfa5('0x3e')]){_0x551d75[_0xdfa5('0x3a')]=_[_0xdfa5('0x3c')](_0x551d75[_0xdfa5('0x3a')],{'$or':_['map'](_0x551d75[_0xdfa5('0x35')],function(_0x44598d){var _0x23d341={};_0x23d341[_0x44598d]={'$like':'%'+_0x5bd919['query'][_0xdfa5('0x3e')]+'%'};return _0x23d341;})});}_0x551d75=_[_0xdfa5('0x3c')]({},_0x551d75,_0x5bd919[_0xdfa5('0x48')]);return _0x9dd8de['getConfigurations'](_0x551d75);}})[_0xdfa5('0x26')](function(_0x530a02){if(_0x530a02){_0x48115d=_0x530a02['length'];if(!_0x5bd919[_0xdfa5('0x31')][_0xdfa5('0x50')](_0xdfa5('0x38'))){_0x551d75[_0xdfa5('0x1f')]=qs[_0xdfa5('0x1f')](_0x5bd919['query']['limit']);_0x551d75['offset']=qs[_0xdfa5('0x1d')](_0x5bd919[_0xdfa5('0x31')]['offset']);}return _0x9dd8de['getConfigurations'](_0x551d75);}})[_0xdfa5('0x26')](function(_0x1f91f9){if(_0x1f91f9){return _0x1f91f9?{'count':_0x48115d,'rows':_0x1f91f9}:null;}})[_0xdfa5('0x26')](respondWithResult(_0x2331e3,null))['catch'](handleError(_0x2331e3,null));};exports['addConfiguration']=function(_0x5ab82d,_0x4a4970,_0x2c010c){if(_0x5ab82d[_0xdfa5('0x4b')]['id']){delete _0x5ab82d['body']['id'];}return db[_0xdfa5('0x3f')][_0xdfa5('0x4d')]({'where':{'id':_0x5ab82d['params']['id']}})[_0xdfa5('0x26')](handleEntityNotFound(_0x4a4970,null))[_0xdfa5('0x26')](function(_0xf23436){if(_0xf23436){_0x5ab82d['body']['AccountId']=_0xf23436['id'];_0x5ab82d[_0xdfa5('0x4b')][_0xdfa5('0x51')]=integrations[_0xdfa5('0x52')](_0x5ab82d['body'][_0xdfa5('0x53')],_0x5ab82d[_0xdfa5('0x4b')][_0xdfa5('0x2e')]);_0x5ab82d[_0xdfa5('0x4b')]['Descriptions']=integrations['getDescriptions'](_0x5ab82d[_0xdfa5('0x4b')][_0xdfa5('0x53')],_0x5ab82d[_0xdfa5('0x4b')][_0xdfa5('0x2e')]);return db[_0xdfa5('0x4e')]['create'](_0x5ab82d['body'],{'include':[{'model':db[_0xdfa5('0x54')],'as':_0xdfa5('0x51')},{'model':db[_0xdfa5('0x54')],'as':_0xdfa5('0x55')}]});}return null;})['then'](respondWithResult(_0x4a4970,null))['catch'](handleError(_0x4a4970,null));};exports[_0xdfa5('0x56')]=function(_0x1607ae,_0x4a621b,_0x4ac3bc){var _0x24f649='';var _0x523a1f=['id','name',_0xdfa5('0x57'),'created_by',_0xdfa5('0x58'),_0xdfa5('0x59'),_0xdfa5('0x5a'),_0xdfa5('0x5b'),_0xdfa5('0x5c'),_0xdfa5('0x5d'),_0xdfa5('0x5e'),_0xdfa5('0x5f')];return db['SugarcrmAccount']['findOne']({'where':{'id':_0x1607ae[_0xdfa5('0x47')]['id']},'attributes':['id',_0xdfa5('0x60'),'password',_0xdfa5('0x61')]})[_0xdfa5('0x26')](handleEntityNotFound(_0x4a621b,null))[_0xdfa5('0x26')](function(_0x59d624){if(_0x59d624){_0x24f649=_0x59d624[_0xdfa5('0x61')];var _0x13b636=_0x24f649[_0xdfa5('0x62')](-0x1);if(_0x13b636==='/'){_0x24f649=_0x24f649[_0xdfa5('0x63')](0x0,_0x24f649[_0xdfa5('0x64')](_0x13b636));}return rp({'method':_0xdfa5('0x65'),'uri':util[_0xdfa5('0x66')]('%s%s',_0x24f649,_0xdfa5('0x67')),'json':!![],'form':{'method':_0xdfa5('0x68'),'input_type':_0xdfa5('0x69'),'response_type':_0xdfa5('0x69'),'rest_data':JSON[_0xdfa5('0x6a')]({'user_auth':{'user_name':_0x59d624['username'],'password':_0x59d624[_0xdfa5('0x6b')],'encryption':'PLAIN'},'application':'xCALLY\x20Motion\x20Integration'})}});}})[_0xdfa5('0x26')](function(_0x14ea91){if(_0x14ea91&&_0x14ea91[_0xdfa5('0x2b')]!==_0xdfa5('0x6c')&&_0x14ea91[_0xdfa5('0x2b')]!=='Password\x20Expired'){return rp({'method':_0xdfa5('0x65'),'uri':util[_0xdfa5('0x66')](_0xdfa5('0x6d'),_0x24f649,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0xdfa5('0x6e'),'input_type':_0xdfa5('0x69'),'response_type':_0xdfa5('0x69'),'rest_data':JSON['stringify']({'session':_0x14ea91['id'],'module_name':_0xdfa5('0x6f')})}})[_0xdfa5('0x26')](function(_0x19ace5){if(_0x19ace5){var _0xc99544=_[_0xdfa5('0x70')](_0x19ace5['module_fields']);_['remove'](_0xc99544,function(_0x376c81){return _0x523a1f[_0xdfa5('0x71')](_0x376c81[_0xdfa5('0x2b')]);});return{'count':_0xc99544[_0xdfa5('0x37')],'rows':_[_0xdfa5('0x2d')](_0xc99544,function(_0x148695){return{'id':_0x148695['name'],'name':_0x148695[_0xdfa5('0x72')],'custom':_[_0xdfa5('0x73')](_0x148695[_0xdfa5('0x2b')],'_c')?!![]:![],'options':_0x148695[_0xdfa5('0x48')]?_[_0xdfa5('0x2d')](_[_0xdfa5('0x70')](_0x148695[_0xdfa5('0x48')]),function(_0x1d69b0){return{'name':_0x1d69b0[_0xdfa5('0x74')],'value':_0x1d69b0['name']};}):[]};})};}})[_0xdfa5('0x26')](respondWithResult(_0x4a621b,null))[_0xdfa5('0x45')](function(_0x25a285){var _0x50dd0f=_0x1607ae[_0xdfa5('0x31')][_0xdfa5('0x75')]?0x1f4:_0x25a285[_0xdfa5('0x76')]||0x1f4;logger[_0xdfa5('0x29')](_0xdfa5('0x77'),_0xdfa5('0x56'),_0x50dd0f,JSON[_0xdfa5('0x6a')](_0x25a285));delete _0x25a285['name'];if(_0x50dd0f===0x191){_0x50dd0f=0x190;}_0x4a621b['status'](_0x50dd0f)['send'](_0x1607ae[_0xdfa5('0x31')][_0xdfa5('0x75')]?{'message':'Wrong\x20credentials','statusCode':_0x25a285[_0xdfa5('0x76')]}:_0x25a285);});}else{var _0x413ea6=0x1f4;_0x4a621b[_0xdfa5('0x1a')](_0x413ea6)[_0xdfa5('0x2c')]({'message':_0xdfa5('0x78'),'statusCode':0x190});}});};
\ No newline at end of file
index 1375e21..aa990b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x133d=['lodash','util','api','moment','request-promise','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','SugarcrmAccount','int_sugarcrm_accounts'];(function(_0x3145a1,_0x2664da){var _0x2f3c20=function(_0x1f2fd9){while(--_0x1f2fd9){_0x3145a1['push'](_0x3145a1['shift']());}};_0x2f3c20(++_0x2664da);}(_0x133d,0x193));var _0xd133=function(_0x5f584a,_0x47f064){_0x5f584a=_0x5f584a-0x0;var _0x3788d9=_0x133d[_0x5f584a];return _0x3788d9;};'use strict';var _=require(_0xd133('0x0'));var util=require(_0xd133('0x1'));var logger=require('../../config/logger')(_0xd133('0x2'));var moment=require(_0xd133('0x3'));var BPromise=require('bluebird');var rp=require(_0xd133('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd133('0x5'));var config=require(_0xd133('0x6'));var attributes=require(_0xd133('0x7'));var integrations=require(_0xd133('0x8'));module[_0xd133('0x9')]=function(_0x3e7f6b,_0x35cf38){return _0x3e7f6b[_0xd133('0xa')](_0xd133('0xb'),attributes,{'tableName':_0xd133('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x11b1=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','define','SugarcrmAccount','int_sugarcrm_accounts','util'];(function(_0x16bd0a,_0x2e61e6){var _0x5bd086=function(_0x48ca90){while(--_0x48ca90){_0x16bd0a['push'](_0x16bd0a['shift']());}};_0x5bd086(++_0x2e61e6);}(_0x11b1,0x1ed));var _0x111b=function(_0x2c09b1,_0x36d69b){_0x2c09b1=_0x2c09b1-0x0;var _0x573253=_0x11b1[_0x2c09b1];return _0x573253;};'use strict';var _=require('lodash');var util=require(_0x111b('0x0'));var logger=require(_0x111b('0x1'))(_0x111b('0x2'));var moment=require(_0x111b('0x3'));var BPromise=require(_0x111b('0x4'));var rp=require(_0x111b('0x5'));var fs=require('fs');var path=require(_0x111b('0x6'));var rimraf=require(_0x111b('0x7'));var config=require(_0x111b('0x8'));var attributes=require('./intSugarcrmAccount.attributes');var integrations=require(_0x111b('0x9'));module['exports']=function(_0x549abb,_0x148c3b){return _0x549abb[_0x111b('0xa')](_0x111b('0xb'),attributes,{'tableName':_0x111b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5054104..f158013 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb30b=['../../config/environment','jayson/promise','http','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','include','map','model','attributes','then','catch','ShowSugarcrmAccount','find','where','debug','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x51ba41,_0x58ff3c){var _0x40ca8d=function(_0x2caa97){while(--_0x2caa97){_0x51ba41['push'](_0x51ba41['shift']());}};_0x40ca8d(++_0x58ff3c);}(_0xb30b,0xbf));var _0xbb30=function(_0x15482e,_0x25b23c){_0x15482e=_0x15482e-0x0;var _0x4a0651=_0xb30b[_0x15482e];return _0x4a0651;};'use strict';var _=require(_0xbb30('0x0'));var util=require('util');var moment=require(_0xbb30('0x1'));var BPromise=require(_0xbb30('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbb30('0x3'));var db=require(_0xbb30('0x4'))['db'];var utils=require(_0xbb30('0x5'));var logger=require(_0xbb30('0x6'))('rpc');var config=require(_0xbb30('0x7'));var jayson=require(_0xbb30('0x8'));var client=jayson['client'][_0xbb30('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x35a86d,_0x2284e9,_0x3d7edd){return new BPromise(function(_0x147bd9,_0x51298a){return client['request'](_0x35a86d,_0x3d7edd)['then'](function(_0x92271b){logger[_0xbb30('0xa')](_0xbb30('0xb'),_0x2284e9,_0xbb30('0xc'));logger['debug'](_0xbb30('0xd'),_0x2284e9,'request\x20sent',JSON[_0xbb30('0xe')](_0x92271b));if(_0x92271b[_0xbb30('0xf')]){if(_0x92271b[_0xbb30('0xf')]['code']===0x1f4){logger[_0xbb30('0xf')]('SugarcrmAccount,\x20%s,\x20%s',_0x2284e9,_0x92271b[_0xbb30('0xf')][_0xbb30('0x10')]);return _0x51298a(_0x92271b[_0xbb30('0xf')][_0xbb30('0x10')]);}logger[_0xbb30('0xf')](_0xbb30('0xb'),_0x2284e9,_0x92271b[_0xbb30('0xf')][_0xbb30('0x10')]);return _0x147bd9(_0x92271b['error']['message']);}else{logger[_0xbb30('0xa')](_0xbb30('0xb'),_0x2284e9,_0xbb30('0xc'));_0x147bd9(_0x92271b[_0xbb30('0x11')]['message']);}})['catch'](function(_0x2737b3){logger[_0xbb30('0xf')](_0xbb30('0xb'),_0x2284e9,_0x2737b3);_0x51298a(_0x2737b3);});});}exports[_0xbb30('0x12')]=function(_0x13b695){var _0x9aec25=this;return new Promise(function(_0x49f4d0,_0x243561){return db[_0xbb30('0x13')][_0xbb30('0x14')]({'raw':_0x13b695[_0xbb30('0x15')]?_0x13b695[_0xbb30('0x15')][_0xbb30('0x16')]===undefined?!![]:![]:!![],'where':_0x13b695['options']?_0x13b695['options']['where']||null:null,'attributes':_0x13b695[_0xbb30('0x15')]?_0x13b695[_0xbb30('0x15')]['attributes']||null:null,'limit':_0x13b695['options']?_0x13b695[_0xbb30('0x15')]['limit']||null:null,'include':_0x13b695[_0xbb30('0x15')]?_0x13b695[_0xbb30('0x15')][_0xbb30('0x17')]?_[_0xbb30('0x18')](_0x13b695[_0xbb30('0x15')][_0xbb30('0x17')],function(_0x320265){return{'model':db[_0x320265[_0xbb30('0x19')]],'as':_0x320265['as'],'attributes':_0x320265[_0xbb30('0x1a')],'include':_0x320265[_0xbb30('0x17')]?_[_0xbb30('0x18')](_0x320265[_0xbb30('0x17')],function(_0x2a190a){return{'model':db[_0x2a190a[_0xbb30('0x19')]],'as':_0x2a190a['as'],'attributes':_0x2a190a[_0xbb30('0x1a')],'include':_0x2a190a['include']?_[_0xbb30('0x18')](_0x2a190a[_0xbb30('0x17')],function(_0x26381a){return{'model':db[_0x26381a[_0xbb30('0x19')]],'as':_0x26381a['as'],'attributes':_0x26381a[_0xbb30('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xbb30('0x1b')](function(_0x3befb5){logger[_0xbb30('0xa')](_0xbb30('0x12'),_0x13b695);logger['debug']('GetSugarcrmAccount',_0x13b695,JSON['stringify'](_0x3befb5));_0x49f4d0(_0x3befb5);})[_0xbb30('0x1c')](function(_0x4ffbcc){logger[_0xbb30('0xf')](_0xbb30('0x12'),_0x4ffbcc[_0xbb30('0x10')],_0x13b695);_0x243561(_0x9aec25['error'](0x1f4,_0x4ffbcc[_0xbb30('0x10')]));});});};exports[_0xbb30('0x1d')]=function(_0x20d82a){var _0x45c15d=this;return new Promise(function(_0x348d07,_0x50bf19){return db[_0xbb30('0x13')][_0xbb30('0x1e')]({'raw':_0x20d82a[_0xbb30('0x15')]?_0x20d82a[_0xbb30('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x20d82a['options']?_0x20d82a['options'][_0xbb30('0x1f')]||null:null,'attributes':_0x20d82a['options']?_0x20d82a[_0xbb30('0x15')]['attributes']||null:null,'include':_0x20d82a['options']?_0x20d82a[_0xbb30('0x15')][_0xbb30('0x17')]?_[_0xbb30('0x18')](_0x20d82a[_0xbb30('0x15')]['include'],function(_0x292f37){return{'model':db[_0x292f37[_0xbb30('0x19')]],'as':_0x292f37['as'],'attributes':_0x292f37[_0xbb30('0x1a')],'include':_0x292f37[_0xbb30('0x17')]?_[_0xbb30('0x18')](_0x292f37['include'],function(_0x3f227b){return{'model':db[_0x3f227b['model']],'as':_0x3f227b['as'],'attributes':_0x3f227b[_0xbb30('0x1a')],'include':_0x3f227b[_0xbb30('0x17')]?_[_0xbb30('0x18')](_0x3f227b[_0xbb30('0x17')],function(_0x3e9055){return{'model':db[_0x3e9055[_0xbb30('0x19')]],'as':_0x3e9055['as'],'attributes':_0x3e9055['attributes']};}):[]};}):[]};}):[]:[]})[_0xbb30('0x1b')](function(_0x4fe19d){logger[_0xbb30('0xa')](_0xbb30('0x1d'),_0x20d82a);logger[_0xbb30('0x20')](_0xbb30('0x1d'),_0x20d82a,JSON[_0xbb30('0xe')](_0x4fe19d));_0x348d07(_0x4fe19d);})[_0xbb30('0x1c')](function(_0x12af42){logger[_0xbb30('0xf')](_0xbb30('0x1d'),_0x12af42[_0xbb30('0x10')],_0x20d82a);_0x50bf19(_0x45c15d[_0xbb30('0xf')](0x1f4,_0x12af42[_0xbb30('0x10')]));});});};
\ No newline at end of file
+var _0x5252=['options','raw','limit','include','map','attributes','model','ShowSugarcrmAccount','find','where','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','then','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetSugarcrmAccount','SugarcrmAccount'];(function(_0x546ca4,_0x2f0016){var _0x47e1bd=function(_0x1fbb51){while(--_0x1fbb51){_0x546ca4['push'](_0x546ca4['shift']());}};_0x47e1bd(++_0x2f0016);}(_0x5252,0xb4));var _0x2525=function(_0x2a935d,_0x3e4846){_0x2a935d=_0x2a935d-0x0;var _0xdf2193=_0x5252[_0x2a935d];return _0xdf2193;};'use strict';var _=require(_0x2525('0x0'));var util=require(_0x2525('0x1'));var moment=require(_0x2525('0x2'));var BPromise=require(_0x2525('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2525('0x4'));var db=require(_0x2525('0x5'))['db'];var utils=require(_0x2525('0x6'));var logger=require(_0x2525('0x7'))(_0x2525('0x8'));var config=require(_0x2525('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x2525('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1fa4e5,_0x145097,_0x2a8366){return new BPromise(function(_0x57b0f1,_0xb52ad8){return client['request'](_0x1fa4e5,_0x2a8366)[_0x2525('0xb')](function(_0x11fa99){logger['info'](_0x2525('0xc'),_0x145097,_0x2525('0xd'));logger[_0x2525('0xe')](_0x2525('0xf'),_0x145097,_0x2525('0xd'),JSON[_0x2525('0x10')](_0x11fa99));if(_0x11fa99[_0x2525('0x11')]){if(_0x11fa99[_0x2525('0x11')][_0x2525('0x12')]===0x1f4){logger[_0x2525('0x11')](_0x2525('0xc'),_0x145097,_0x11fa99[_0x2525('0x11')]['message']);return _0xb52ad8(_0x11fa99[_0x2525('0x11')][_0x2525('0x13')]);}logger[_0x2525('0x11')](_0x2525('0xc'),_0x145097,_0x11fa99[_0x2525('0x11')][_0x2525('0x13')]);return _0x57b0f1(_0x11fa99[_0x2525('0x11')][_0x2525('0x13')]);}else{logger['info'](_0x2525('0xc'),_0x145097,_0x2525('0xd'));_0x57b0f1(_0x11fa99[_0x2525('0x14')][_0x2525('0x13')]);}})[_0x2525('0x15')](function(_0x4347f0){logger[_0x2525('0x11')]('SugarcrmAccount,\x20%s,\x20%s',_0x145097,_0x4347f0);_0xb52ad8(_0x4347f0);});});}exports[_0x2525('0x16')]=function(_0x2aaa57){var _0x4e9516=this;return new Promise(function(_0x406656,_0x52f941){return db[_0x2525('0x17')]['findAll']({'raw':_0x2aaa57[_0x2525('0x18')]?_0x2aaa57[_0x2525('0x18')][_0x2525('0x19')]===undefined?!![]:![]:!![],'where':_0x2aaa57[_0x2525('0x18')]?_0x2aaa57[_0x2525('0x18')]['where']||null:null,'attributes':_0x2aaa57[_0x2525('0x18')]?_0x2aaa57[_0x2525('0x18')]['attributes']||null:null,'limit':_0x2aaa57[_0x2525('0x18')]?_0x2aaa57[_0x2525('0x18')][_0x2525('0x1a')]||null:null,'include':_0x2aaa57[_0x2525('0x18')]?_0x2aaa57[_0x2525('0x18')][_0x2525('0x1b')]?_[_0x2525('0x1c')](_0x2aaa57[_0x2525('0x18')][_0x2525('0x1b')],function(_0x58317f){return{'model':db[_0x58317f['model']],'as':_0x58317f['as'],'attributes':_0x58317f[_0x2525('0x1d')],'include':_0x58317f[_0x2525('0x1b')]?_['map'](_0x58317f[_0x2525('0x1b')],function(_0x4164e5){return{'model':db[_0x4164e5[_0x2525('0x1e')]],'as':_0x4164e5['as'],'attributes':_0x4164e5[_0x2525('0x1d')],'include':_0x4164e5[_0x2525('0x1b')]?_[_0x2525('0x1c')](_0x4164e5[_0x2525('0x1b')],function(_0x361323){return{'model':db[_0x361323[_0x2525('0x1e')]],'as':_0x361323['as'],'attributes':_0x361323[_0x2525('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x183be5){logger['info'](_0x2525('0x16'),_0x2aaa57);logger[_0x2525('0xe')](_0x2525('0x16'),_0x2aaa57,JSON[_0x2525('0x10')](_0x183be5));_0x406656(_0x183be5);})[_0x2525('0x15')](function(_0x2e637e){logger[_0x2525('0x11')](_0x2525('0x16'),_0x2e637e[_0x2525('0x13')],_0x2aaa57);_0x52f941(_0x4e9516['error'](0x1f4,_0x2e637e[_0x2525('0x13')]));});});};exports[_0x2525('0x1f')]=function(_0x75dca1){var _0x5320a5=this;return new Promise(function(_0x55f827,_0x49ef16){return db[_0x2525('0x17')][_0x2525('0x20')]({'raw':_0x75dca1['options']?_0x75dca1['options'][_0x2525('0x19')]===undefined?!![]:![]:!![],'where':_0x75dca1[_0x2525('0x18')]?_0x75dca1[_0x2525('0x18')][_0x2525('0x21')]||null:null,'attributes':_0x75dca1[_0x2525('0x18')]?_0x75dca1[_0x2525('0x18')][_0x2525('0x1d')]||null:null,'include':_0x75dca1[_0x2525('0x18')]?_0x75dca1[_0x2525('0x18')][_0x2525('0x1b')]?_[_0x2525('0x1c')](_0x75dca1[_0x2525('0x18')][_0x2525('0x1b')],function(_0x53ff02){return{'model':db[_0x53ff02[_0x2525('0x1e')]],'as':_0x53ff02['as'],'attributes':_0x53ff02[_0x2525('0x1d')],'include':_0x53ff02['include']?_[_0x2525('0x1c')](_0x53ff02[_0x2525('0x1b')],function(_0x278bce){return{'model':db[_0x278bce[_0x2525('0x1e')]],'as':_0x278bce['as'],'attributes':_0x278bce[_0x2525('0x1d')],'include':_0x278bce[_0x2525('0x1b')]?_[_0x2525('0x1c')](_0x278bce[_0x2525('0x1b')],function(_0x10e1ba){return{'model':db[_0x10e1ba[_0x2525('0x1e')]],'as':_0x10e1ba['as'],'attributes':_0x10e1ba['attributes']};}):[]};}):[]};}):[]:[]})[_0x2525('0xb')](function(_0x368ba2){logger['info'](_0x2525('0x1f'),_0x75dca1);logger[_0x2525('0xe')]('ShowSugarcrmAccount',_0x75dca1,JSON[_0x2525('0x10')](_0x368ba2));_0x55f827(_0x368ba2);})[_0x2525('0x15')](function(_0x59be98){logger[_0x2525('0x11')](_0x2525('0x1f'),_0x59be98[_0x2525('0x13')],_0x75dca1);_0x49ef16(_0x5320a5[_0x2525('0x11')](0x1f4,_0x59be98[_0x2525('0x13')]));});});};
\ No newline at end of file
index 3c6c84c..767f83d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bb3=['/:id/subjects','/:id/descriptions','post','create','/:id','update','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','index','show','isAuthenticated','getFields'];(function(_0x50537c,_0x31945b){var _0x2a9900=function(_0x2bab4a){while(--_0x2bab4a){_0x50537c['push'](_0x50537c['shift']());}};_0x2a9900(++_0x31945b);}(_0x6bb3,0x1aa));var _0x36bb=function(_0x213000,_0x159d84){_0x213000=_0x213000-0x0;var _0x493fa5=_0x6bb3[_0x213000];return _0x493fa5;};'use strict';var multer=require(_0x36bb('0x0'));var util=require('util');var path=require(_0x36bb('0x1'));var timeout=require('connect-timeout');var express=require(_0x36bb('0x2'));var router=express[_0x36bb('0x3')]();var fs_extra=require(_0x36bb('0x4'));var auth=require(_0x36bb('0x5'));var interaction=require(_0x36bb('0x6'));var config=require(_0x36bb('0x7'));var controller=require(_0x36bb('0x8'));router[_0x36bb('0x9')]('/',auth['isAuthenticated'](),controller[_0x36bb('0xa')]);router[_0x36bb('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x36bb('0xb')]);router['get']('/:id/fields',auth[_0x36bb('0xc')](),controller[_0x36bb('0xd')]);router[_0x36bb('0x9')](_0x36bb('0xe'),auth[_0x36bb('0xc')](),controller['getSubjects']);router['get'](_0x36bb('0xf'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x36bb('0x10')]('/',auth[_0x36bb('0xc')](),controller[_0x36bb('0x11')]);router['put'](_0x36bb('0x12'),auth['isAuthenticated'](),controller[_0x36bb('0x13')]);router[_0x36bb('0x14')]('/:id',auth[_0x36bb('0xc')](),controller[_0x36bb('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xeb57=['post','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/subjects','getSubjects','/:id/descriptions'];(function(_0x102e98,_0x451eac){var _0x367adb=function(_0x440a5b){while(--_0x440a5b){_0x102e98['push'](_0x102e98['shift']());}};_0x367adb(++_0x451eac);}(_0xeb57,0x133));var _0x7eb5=function(_0x4676ef,_0x2bd43c){_0x4676ef=_0x4676ef-0x0;var _0x1c58e9=_0xeb57[_0x4676ef];return _0x1c58e9;};'use strict';var multer=require('multer');var util=require(_0x7eb5('0x0'));var path=require(_0x7eb5('0x1'));var timeout=require(_0x7eb5('0x2'));var express=require(_0x7eb5('0x3'));var router=express[_0x7eb5('0x4')]();var fs_extra=require(_0x7eb5('0x5'));var auth=require(_0x7eb5('0x6'));var interaction=require(_0x7eb5('0x7'));var config=require(_0x7eb5('0x8'));var controller=require(_0x7eb5('0x9'));router[_0x7eb5('0xa')]('/',auth[_0x7eb5('0xb')](),controller[_0x7eb5('0xc')]);router[_0x7eb5('0xa')](_0x7eb5('0xd'),auth[_0x7eb5('0xb')](),controller[_0x7eb5('0xe')]);router[_0x7eb5('0xa')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router['get'](_0x7eb5('0xf'),auth[_0x7eb5('0xb')](),controller[_0x7eb5('0x10')]);router[_0x7eb5('0xa')](_0x7eb5('0x11'),auth[_0x7eb5('0xb')](),controller['getDescriptions']);router[_0x7eb5('0x12')]('/',auth[_0x7eb5('0xb')](),controller[_0x7eb5('0x13')]);router[_0x7eb5('0x14')](_0x7eb5('0xd'),auth[_0x7eb5('0xb')](),controller[_0x7eb5('0x15')]);router[_0x7eb5('0x16')](_0x7eb5('0xd'),auth[_0x7eb5('0xb')](),controller[_0x7eb5('0x17')]);module[_0x7eb5('0x18')]=router;
\ No newline at end of file
index d079228..64ed6b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94c8=['sequelize','STRING'];(function(_0x3dab96,_0x9ad0af){var _0x377a20=function(_0x30495b){while(--_0x30495b){_0x3dab96['push'](_0x3dab96['shift']());}};_0x377a20(++_0x9ad0af);}(_0x94c8,0x12c));var _0x894c=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x94c8[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require(_0x894c('0x0'));module['exports']={'name':{'type':Sequelize[_0x894c('0x1')]},'description':{'type':Sequelize[_0x894c('0x1')]}};
\ No newline at end of file
+var _0x8aa6=['exports','STRING','sequelize'];(function(_0x7d62cb,_0x7622c){var _0x3a6266=function(_0x1cc5fa){while(--_0x1cc5fa){_0x7d62cb['push'](_0x7d62cb['shift']());}};_0x3a6266(++_0x7622c);}(_0x8aa6,0xe3));var _0x68aa=function(_0x53f715,_0x52587b){_0x53f715=_0x53f715-0x0;var _0x16c757=_0x8aa6[_0x53f715];return _0x16c757;};'use strict';var Sequelize=require(_0x68aa('0x0'));module[_0x68aa('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x68aa('0x2')]}};
\ No newline at end of file
index 462ac67..95113fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2477=['map','SugarcrmConfiguration','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','nolimit','limit','order','sort','filter','where','VIRTUAL','merge','options','include','findAll','rows','catch','params','keys','rawAttributes','includeAll','find','create','body','destroy','getFields','SugarcrmField','pick','hasOwnProperty','getSubjects','findOne','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','apply','reject','save','update','then','error','name','send'];(function(_0x49ae12,_0x2b949d){var _0x46924f=function(_0x1f811e){while(--_0x1f811e){_0x49ae12['push'](_0x49ae12['shift']());}};_0x46924f(++_0x2b949d);}(_0x2477,0x1c2));var _0x7247=function(_0x2ac5f8,_0x4c3a9f){_0x2ac5f8=_0x2ac5f8-0x0;var _0x3b8229=_0x2477[_0x2ac5f8];return _0x3b8229;};'use strict';var emlformat=require(_0x7247('0x0'));var rimraf=require(_0x7247('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7247('0x2'));var rp=require(_0x7247('0x3'));var moment=require('moment');var BPromise=require(_0x7247('0x4'));var Mustache=require(_0x7247('0x5'));var util=require(_0x7247('0x6'));var path=require(_0x7247('0x7'));var sox=require(_0x7247('0x8'));var csv=require('to-csv');var ejs=require(_0x7247('0x9'));var fs=require('fs');var fs_extra=require(_0x7247('0xa'));var _=require(_0x7247('0xb'));var squel=require(_0x7247('0xc'));var crypto=require(_0x7247('0xd'));var jsforce=require(_0x7247('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x7247('0xf'));var Papa=require(_0x7247('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x7247('0x11'));var as=require(_0x7247('0x12'));var hardwareService=require(_0x7247('0x13'));var logger=require('../../config/logger')(_0x7247('0x14'));var utils=require(_0x7247('0x15'));var config=require(_0x7247('0x16'));var licenseUtil=require(_0x7247('0x17'));var db=require(_0x7247('0x18'))['db'];function respondWithStatusCode(_0x4b0d01,_0x1eca66){_0x1eca66=_0x1eca66||0xcc;return function(_0xead507){if(_0xead507){return _0x4b0d01[_0x7247('0x19')](_0x1eca66);}return _0x4b0d01[_0x7247('0x1a')](_0x1eca66)[_0x7247('0x1b')]();};}function respondWithResult(_0x20ab9b,_0x4e231e){_0x4e231e=_0x4e231e||0xc8;return function(_0x2c93ff){if(_0x2c93ff){return _0x20ab9b['status'](_0x4e231e)['json'](_0x2c93ff);}};}function respondWithFilteredResult(_0x40e239,_0x214b42){return function(_0x35f362){if(_0x35f362){var _0x4e6581=typeof _0x214b42[_0x7247('0x1c')]===_0x7247('0x1d')&&typeof _0x214b42['limit']===_0x7247('0x1d');var _0x4a37f3=_0x35f362[_0x7247('0x1e')];var _0x49b152=_0x4e6581?0x0:_0x214b42[_0x7247('0x1c')];var _0x42c12e=_0x4e6581?_0x35f362[_0x7247('0x1e')]:_0x214b42[_0x7247('0x1c')]+_0x214b42['limit'];var _0x29d608;if(_0x42c12e>=_0x4a37f3){_0x42c12e=_0x4a37f3;_0x29d608=0xc8;}else{_0x29d608=0xce;}_0x40e239[_0x7247('0x1a')](_0x29d608);return _0x40e239[_0x7247('0x1f')](_0x7247('0x20'),_0x49b152+'-'+_0x42c12e+'/'+_0x4a37f3)[_0x7247('0x21')](_0x35f362);}return null;};}function patchUpdates(_0x28bb72){return function(_0x147844){try{jsonpatch[_0x7247('0x22')](_0x147844,_0x28bb72,!![]);}catch(_0x33ddf8){return BPromise[_0x7247('0x23')](_0x33ddf8);}return _0x147844[_0x7247('0x24')]();};}function saveUpdates(_0x2102ff,_0x5613ef){return function(_0x4707ec){if(_0x4707ec){return _0x4707ec[_0x7247('0x25')](_0x2102ff)[_0x7247('0x26')](function(_0x20715e){return _0x20715e;});}return null;};}function removeEntity(_0x4c7546,_0x3013be){return function(_0x5adff6){if(_0x5adff6){return _0x5adff6['destroy']()['then'](function(){_0x4c7546['status'](0xcc)[_0x7247('0x1b')]();});}};}function handleEntityNotFound(_0x360682,_0x1e9c0b){return function(_0x391ad8){if(!_0x391ad8){_0x360682[_0x7247('0x19')](0x194);}return _0x391ad8;};}function handleError(_0x3de4d5,_0xaf8450){_0xaf8450=_0xaf8450||0x1f4;return function(_0x5abafb){logger[_0x7247('0x27')](_0x5abafb['stack']);if(_0x5abafb[_0x7247('0x28')]){delete _0x5abafb[_0x7247('0x28')];}_0x3de4d5['status'](_0xaf8450)[_0x7247('0x29')](_0x5abafb);};}exports['index']=function(_0x5a74a6,_0x4ed7fc){var _0x3c3283={},_0x4e8e8c={},_0x56b0b5={'count':0x0,'rows':[]};var _0x364b76=_[_0x7247('0x2a')](db[_0x7247('0x2b')]['rawAttributes'],function(_0xb16d82){return{'name':_0xb16d82[_0x7247('0x2c')],'type':_0xb16d82[_0x7247('0x2d')][_0x7247('0x2e')]};});_0x4e8e8c[_0x7247('0x2f')]=_[_0x7247('0x2a')](_0x364b76,_0x7247('0x28'));_0x4e8e8c[_0x7247('0x30')]=_['keys'](_0x5a74a6[_0x7247('0x30')]);_0x4e8e8c[_0x7247('0x31')]=_['intersection'](_0x4e8e8c[_0x7247('0x2f')],_0x4e8e8c[_0x7247('0x30')]);_0x3c3283[_0x7247('0x32')]=_[_0x7247('0x33')](_0x4e8e8c['model'],qs[_0x7247('0x34')](_0x5a74a6['query'][_0x7247('0x34')]));_0x3c3283[_0x7247('0x32')]=_0x3c3283['attributes'][_0x7247('0x35')]?_0x3c3283[_0x7247('0x32')]:_0x4e8e8c[_0x7247('0x2f')];if(!_0x5a74a6['query']['hasOwnProperty'](_0x7247('0x36'))){_0x3c3283['limit']=qs[_0x7247('0x37')](_0x5a74a6[_0x7247('0x30')][_0x7247('0x37')]);_0x3c3283[_0x7247('0x1c')]=qs['offset'](_0x5a74a6['query'][_0x7247('0x1c')]);}_0x3c3283[_0x7247('0x38')]=qs[_0x7247('0x39')](_0x5a74a6[_0x7247('0x30')]['sort']);_0x3c3283['where']=qs['filters'](_['pick'](_0x5a74a6['query'],_0x4e8e8c['filters']),_0x364b76);if(_0x5a74a6['query'][_0x7247('0x3a')]){_0x3c3283[_0x7247('0x3b')]=_['merge'](_0x3c3283['where'],{'$or':_[_0x7247('0x2a')](_0x364b76,function(_0x2975f2){if(_0x2975f2['type']!==_0x7247('0x3c')){var _0x576a69={};_0x576a69[_0x2975f2[_0x7247('0x28')]]={'$like':'%'+_0x5a74a6[_0x7247('0x30')][_0x7247('0x3a')]+'%'};return _0x576a69;}})});}_0x3c3283=_[_0x7247('0x3d')]({},_0x3c3283,_0x5a74a6[_0x7247('0x3e')]);var _0x19fb99={'where':_0x3c3283[_0x7247('0x3b')]};return db[_0x7247('0x2b')][_0x7247('0x1e')](_0x19fb99)['then'](function(_0x36f52a){_0x56b0b5['count']=_0x36f52a;if(_0x5a74a6[_0x7247('0x30')]['includeAll']){_0x3c3283[_0x7247('0x3f')]=[{'all':!![]}];}return db[_0x7247('0x2b')][_0x7247('0x40')](_0x3c3283);})[_0x7247('0x26')](function(_0x3e371){_0x56b0b5[_0x7247('0x41')]=_0x3e371;return _0x56b0b5;})[_0x7247('0x26')](respondWithFilteredResult(_0x4ed7fc,_0x3c3283))[_0x7247('0x42')](handleError(_0x4ed7fc,null));};exports['show']=function(_0x568a13,_0x1d6524){var _0x17c43e={'raw':![],'where':{'id':_0x568a13[_0x7247('0x43')]['id']}},_0x608790={};_0x608790[_0x7247('0x2f')]=_[_0x7247('0x44')](db['SugarcrmConfiguration'][_0x7247('0x45')]);_0x608790['query']=_[_0x7247('0x44')](_0x568a13[_0x7247('0x30')]);_0x608790[_0x7247('0x31')]=_[_0x7247('0x33')](_0x608790['model'],_0x608790[_0x7247('0x30')]);_0x17c43e[_0x7247('0x32')]=_[_0x7247('0x33')](_0x608790[_0x7247('0x2f')],qs[_0x7247('0x34')](_0x568a13[_0x7247('0x30')][_0x7247('0x34')]));_0x17c43e[_0x7247('0x32')]=_0x17c43e[_0x7247('0x32')]['length']?_0x17c43e[_0x7247('0x32')]:_0x608790[_0x7247('0x2f')];if(_0x568a13[_0x7247('0x30')][_0x7247('0x46')]){_0x17c43e[_0x7247('0x3f')]=[{'all':!![]}];}_0x17c43e=_[_0x7247('0x3d')]({},_0x17c43e,_0x568a13['options']);return db[_0x7247('0x2b')][_0x7247('0x47')](_0x17c43e)[_0x7247('0x26')](handleEntityNotFound(_0x1d6524,null))[_0x7247('0x26')](respondWithResult(_0x1d6524,null))[_0x7247('0x42')](handleError(_0x1d6524,null));};exports[_0x7247('0x48')]=function(_0x4f7b92,_0x112325){return db[_0x7247('0x2b')][_0x7247('0x48')](_0x4f7b92[_0x7247('0x49')],{})[_0x7247('0x26')](respondWithResult(_0x112325,0xc9))[_0x7247('0x42')](handleError(_0x112325,null));};exports[_0x7247('0x25')]=function(_0x4c81b9,_0x53ded7){if(_0x4c81b9[_0x7247('0x49')]['id']){delete _0x4c81b9[_0x7247('0x49')]['id'];}return db[_0x7247('0x2b')][_0x7247('0x47')]({'where':{'id':_0x4c81b9[_0x7247('0x43')]['id']}})[_0x7247('0x26')](handleEntityNotFound(_0x53ded7,null))['then'](saveUpdates(_0x4c81b9[_0x7247('0x49')],null))[_0x7247('0x26')](respondWithResult(_0x53ded7,null))[_0x7247('0x42')](handleError(_0x53ded7,null));};exports[_0x7247('0x4a')]=function(_0x4e11f8,_0x8e6c46){return db[_0x7247('0x2b')][_0x7247('0x47')]({'where':{'id':_0x4e11f8[_0x7247('0x43')]['id']}})[_0x7247('0x26')](handleEntityNotFound(_0x8e6c46,null))[_0x7247('0x26')](removeEntity(_0x8e6c46,null))[_0x7247('0x42')](handleError(_0x8e6c46,null));};exports[_0x7247('0x4b')]=function(_0x54d315,_0x325139,_0x2c2208){var _0x34ef59={};var _0x4dc31={};var _0x235611;var _0x283a9d;return db['SugarcrmConfiguration']['findOne']({'where':{'id':_0x54d315[_0x7247('0x43')]['id']}})['then'](handleEntityNotFound(_0x325139,null))[_0x7247('0x26')](function(_0x489e19){if(_0x489e19){_0x235611=_0x489e19;_0x4dc31[_0x7247('0x2f')]=_['keys'](db[_0x7247('0x4c')][_0x7247('0x45')]);_0x4dc31[_0x7247('0x30')]=_['keys'](_0x54d315[_0x7247('0x30')]);_0x4dc31[_0x7247('0x31')]=_['intersection'](_0x4dc31[_0x7247('0x2f')],_0x4dc31[_0x7247('0x30')]);_0x34ef59[_0x7247('0x32')]=_[_0x7247('0x33')](_0x4dc31[_0x7247('0x2f')],qs[_0x7247('0x34')](_0x54d315[_0x7247('0x30')][_0x7247('0x34')]));_0x34ef59[_0x7247('0x32')]=_0x34ef59[_0x7247('0x32')][_0x7247('0x35')]?_0x34ef59[_0x7247('0x32')]:_0x4dc31['model'];_0x34ef59[_0x7247('0x38')]=qs['sort'](_0x54d315[_0x7247('0x30')][_0x7247('0x39')]);_0x34ef59[_0x7247('0x3b')]=qs[_0x7247('0x31')](_[_0x7247('0x4d')](_0x54d315[_0x7247('0x30')],_0x4dc31['filters']));if(_0x54d315['query'][_0x7247('0x3a')]){_0x34ef59[_0x7247('0x3b')]=_[_0x7247('0x3d')](_0x34ef59[_0x7247('0x3b')],{'$or':_[_0x7247('0x2a')](_0x34ef59[_0x7247('0x32')],function(_0x2dbf91){var _0x39344d={};_0x39344d[_0x2dbf91]={'$like':'%'+_0x54d315[_0x7247('0x30')]['filter']+'%'};return _0x39344d;})});}_0x34ef59=_[_0x7247('0x3d')]({},_0x34ef59,_0x54d315[_0x7247('0x3e')]);return _0x235611[_0x7247('0x4b')](_0x34ef59);}})['then'](function(_0x4347dc){if(_0x4347dc){_0x283a9d=_0x4347dc[_0x7247('0x35')];if(!_0x54d315[_0x7247('0x30')][_0x7247('0x4e')](_0x7247('0x36'))){_0x34ef59[_0x7247('0x37')]=qs[_0x7247('0x37')](_0x54d315[_0x7247('0x30')][_0x7247('0x37')]);_0x34ef59[_0x7247('0x1c')]=qs[_0x7247('0x1c')](_0x54d315[_0x7247('0x30')][_0x7247('0x1c')]);}return _0x235611[_0x7247('0x4b')](_0x34ef59);}})[_0x7247('0x26')](function(_0x1562ab){if(_0x1562ab){return _0x1562ab?{'count':_0x283a9d,'rows':_0x1562ab}:null;}})['then'](respondWithResult(_0x325139,null))[_0x7247('0x42')](handleError(_0x325139,null));};exports[_0x7247('0x4f')]=function(_0x498e9f,_0x5893dd,_0x46fdf2){var _0x565d2c={};var _0xd17925={};var _0x19cfd6;var _0x332b31;return db[_0x7247('0x2b')][_0x7247('0x50')]({'where':{'id':_0x498e9f[_0x7247('0x43')]['id']}})[_0x7247('0x26')](handleEntityNotFound(_0x5893dd,null))[_0x7247('0x26')](function(_0x350100){if(_0x350100){_0x19cfd6=_0x350100;_0xd17925[_0x7247('0x2f')]=_['keys'](db['SugarcrmField'][_0x7247('0x45')]);_0xd17925[_0x7247('0x30')]=_[_0x7247('0x44')](_0x498e9f['query']);_0xd17925[_0x7247('0x31')]=_[_0x7247('0x33')](_0xd17925[_0x7247('0x2f')],_0xd17925[_0x7247('0x30')]);_0x565d2c[_0x7247('0x32')]=_[_0x7247('0x33')](_0xd17925['model'],qs['fields'](_0x498e9f[_0x7247('0x30')]['fields']));_0x565d2c[_0x7247('0x32')]=_0x565d2c[_0x7247('0x32')][_0x7247('0x35')]?_0x565d2c[_0x7247('0x32')]:_0xd17925[_0x7247('0x2f')];_0x565d2c['order']=qs[_0x7247('0x39')](_0x498e9f[_0x7247('0x30')][_0x7247('0x39')]);_0x565d2c['where']=qs[_0x7247('0x31')](_[_0x7247('0x4d')](_0x498e9f['query'],_0xd17925[_0x7247('0x31')]));if(_0x498e9f[_0x7247('0x30')][_0x7247('0x3a')]){_0x565d2c[_0x7247('0x3b')]=_[_0x7247('0x3d')](_0x565d2c['where'],{'$or':_['map'](_0x565d2c[_0x7247('0x32')],function(_0x5cab6a){var _0x52eaae={};_0x52eaae[_0x5cab6a]={'$like':'%'+_0x498e9f[_0x7247('0x30')][_0x7247('0x3a')]+'%'};return _0x52eaae;})});}_0x565d2c=_[_0x7247('0x3d')]({},_0x565d2c,_0x498e9f[_0x7247('0x3e')]);return _0x19cfd6[_0x7247('0x4f')](_0x565d2c);}})[_0x7247('0x26')](function(_0x24e0a2){if(_0x24e0a2){_0x332b31=_0x24e0a2[_0x7247('0x35')];if(!_0x498e9f[_0x7247('0x30')][_0x7247('0x4e')]('nolimit')){_0x565d2c[_0x7247('0x37')]=qs['limit'](_0x498e9f[_0x7247('0x30')][_0x7247('0x37')]);_0x565d2c[_0x7247('0x1c')]=qs['offset'](_0x498e9f[_0x7247('0x30')][_0x7247('0x1c')]);}return _0x19cfd6[_0x7247('0x4f')](_0x565d2c);}})[_0x7247('0x26')](function(_0x485ed9){if(_0x485ed9){return _0x485ed9?{'count':_0x332b31,'rows':_0x485ed9}:null;}})[_0x7247('0x26')](respondWithResult(_0x5893dd,null))['catch'](handleError(_0x5893dd,null));};exports['getDescriptions']=function(_0x4a3711,_0x17d00d,_0x293f64){var _0x13f592={};var _0x4009b2={};var _0x17c1cd;var _0x1fa501;return db[_0x7247('0x2b')][_0x7247('0x50')]({'where':{'id':_0x4a3711[_0x7247('0x43')]['id']}})[_0x7247('0x26')](handleEntityNotFound(_0x17d00d,null))[_0x7247('0x26')](function(_0x2edd39){if(_0x2edd39){_0x17c1cd=_0x2edd39;_0x4009b2[_0x7247('0x2f')]=_[_0x7247('0x44')](db[_0x7247('0x4c')]['rawAttributes']);_0x4009b2[_0x7247('0x30')]=_[_0x7247('0x44')](_0x4a3711[_0x7247('0x30')]);_0x4009b2['filters']=_[_0x7247('0x33')](_0x4009b2[_0x7247('0x2f')],_0x4009b2[_0x7247('0x30')]);_0x13f592[_0x7247('0x32')]=_[_0x7247('0x33')](_0x4009b2[_0x7247('0x2f')],qs[_0x7247('0x34')](_0x4a3711[_0x7247('0x30')][_0x7247('0x34')]));_0x13f592[_0x7247('0x32')]=_0x13f592[_0x7247('0x32')][_0x7247('0x35')]?_0x13f592[_0x7247('0x32')]:_0x4009b2['model'];_0x13f592[_0x7247('0x38')]=qs['sort'](_0x4a3711[_0x7247('0x30')][_0x7247('0x39')]);_0x13f592[_0x7247('0x3b')]=qs[_0x7247('0x31')](_[_0x7247('0x4d')](_0x4a3711[_0x7247('0x30')],_0x4009b2[_0x7247('0x31')]));if(_0x4a3711[_0x7247('0x30')][_0x7247('0x3a')]){_0x13f592['where']=_['merge'](_0x13f592[_0x7247('0x3b')],{'$or':_['map'](_0x13f592['attributes'],function(_0x5368a0){var _0x28612f={};_0x28612f[_0x5368a0]={'$like':'%'+_0x4a3711[_0x7247('0x30')][_0x7247('0x3a')]+'%'};return _0x28612f;})});}_0x13f592=_['merge']({},_0x13f592,_0x4a3711[_0x7247('0x3e')]);return _0x17c1cd[_0x7247('0x51')](_0x13f592);}})['then'](function(_0x3a9443){if(_0x3a9443){_0x1fa501=_0x3a9443[_0x7247('0x35')];if(!_0x4a3711[_0x7247('0x30')][_0x7247('0x4e')](_0x7247('0x36'))){_0x13f592[_0x7247('0x37')]=qs['limit'](_0x4a3711[_0x7247('0x30')][_0x7247('0x37')]);_0x13f592[_0x7247('0x1c')]=qs[_0x7247('0x1c')](_0x4a3711[_0x7247('0x30')]['offset']);}return _0x17c1cd[_0x7247('0x51')](_0x13f592);}})[_0x7247('0x26')](function(_0x3f41af){if(_0x3f41af){return _0x3f41af?{'count':_0x1fa501,'rows':_0x3f41af}:null;}})[_0x7247('0x26')](respondWithResult(_0x17d00d,null))[_0x7247('0x42')](handleError(_0x17d00d,null));};
\ No newline at end of file
+var _0x4930=['pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','getFields','findOne','SugarcrmField','getSubjects','order','getDescriptions','rimraf','moment','bluebird','path','to-csv','ejs','fs-extra','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','apply','save','update','destroy','then','end','error','name','send','index','map','SugarcrmConfiguration','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters'];(function(_0x21ff2c,_0x147f39){var _0x895a61=function(_0xe49051){while(--_0xe49051){_0x21ff2c['push'](_0x21ff2c['shift']());}};_0x895a61(++_0x147f39);}(_0x4930,0x17d));var _0x0493=function(_0x45ab47,_0x57ae2f){_0x45ab47=_0x45ab47-0x0;var _0x2af8cf=_0x4930[_0x45ab47];return _0x2af8cf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0493('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0493('0x1'));var BPromise=require(_0x0493('0x2'));var Mustache=require('mustache');var util=require('util');var path=require(_0x0493('0x3'));var sox=require('sox');var csv=require(_0x0493('0x4'));var ejs=require(_0x0493('0x5'));var fs=require('fs');var fs_extra=require(_0x0493('0x6'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x0493('0x7'));var jsforce=require('jsforce');var deskjs=require(_0x0493('0x8'));var toCsv=require(_0x0493('0x4'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x0493('0x9'));var authService=require(_0x0493('0xa'));var qs=require(_0x0493('0xb'));var as=require(_0x0493('0xc'));var hardwareService=require(_0x0493('0xd'));var logger=require('../../config/logger')(_0x0493('0xe'));var utils=require(_0x0493('0xf'));var config=require('../../config/environment');var licenseUtil=require(_0x0493('0x10'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x392e1a,_0x1e4979){_0x1e4979=_0x1e4979||0xcc;return function(_0x13cf4b){if(_0x13cf4b){return _0x392e1a[_0x0493('0x11')](_0x1e4979);}return _0x392e1a['status'](_0x1e4979)['end']();};}function respondWithResult(_0x56f31d,_0x3aed9f){_0x3aed9f=_0x3aed9f||0xc8;return function(_0x420166){if(_0x420166){return _0x56f31d[_0x0493('0x12')](_0x3aed9f)[_0x0493('0x13')](_0x420166);}};}function respondWithFilteredResult(_0x2f1b19,_0x252192){return function(_0x5b5bb7){if(_0x5b5bb7){var _0x142e96=typeof _0x252192[_0x0493('0x14')]===_0x0493('0x15')&&typeof _0x252192['limit']===_0x0493('0x15');var _0x2c7398=_0x5b5bb7[_0x0493('0x16')];var _0x1d7dc9=_0x142e96?0x0:_0x252192['offset'];var _0x522b62=_0x142e96?_0x5b5bb7[_0x0493('0x16')]:_0x252192[_0x0493('0x14')]+_0x252192[_0x0493('0x17')];var _0xf56db2;if(_0x522b62>=_0x2c7398){_0x522b62=_0x2c7398;_0xf56db2=0xc8;}else{_0xf56db2=0xce;}_0x2f1b19[_0x0493('0x12')](_0xf56db2);return _0x2f1b19['set']('Content-Range',_0x1d7dc9+'-'+_0x522b62+'/'+_0x2c7398)[_0x0493('0x13')](_0x5b5bb7);}return null;};}function patchUpdates(_0x10a532){return function(_0x485a73){try{jsonpatch[_0x0493('0x18')](_0x485a73,_0x10a532,!![]);}catch(_0x200123){return BPromise['reject'](_0x200123);}return _0x485a73[_0x0493('0x19')]();};}function saveUpdates(_0x2ccece,_0x559d99){return function(_0x276171){if(_0x276171){return _0x276171[_0x0493('0x1a')](_0x2ccece)['then'](function(_0x132c33){return _0x132c33;});}return null;};}function removeEntity(_0x33b06f,_0x2eb589){return function(_0x218780){if(_0x218780){return _0x218780[_0x0493('0x1b')]()[_0x0493('0x1c')](function(){_0x33b06f[_0x0493('0x12')](0xcc)[_0x0493('0x1d')]();});}};}function handleEntityNotFound(_0xd860c4,_0x1b0da1){return function(_0x3effd4){if(!_0x3effd4){_0xd860c4[_0x0493('0x11')](0x194);}return _0x3effd4;};}function handleError(_0x4ef2c1,_0x58e063){_0x58e063=_0x58e063||0x1f4;return function(_0x2a780f){logger[_0x0493('0x1e')](_0x2a780f['stack']);if(_0x2a780f[_0x0493('0x1f')]){delete _0x2a780f[_0x0493('0x1f')];}_0x4ef2c1[_0x0493('0x12')](_0x58e063)[_0x0493('0x20')](_0x2a780f);};}exports[_0x0493('0x21')]=function(_0x3125f0,_0x44d026){var _0x2e3138={},_0x1efb79={},_0x1fff39={'count':0x0,'rows':[]};var _0x168abd=_[_0x0493('0x22')](db[_0x0493('0x23')][_0x0493('0x24')],function(_0x3d615a){return{'name':_0x3d615a[_0x0493('0x25')],'type':_0x3d615a[_0x0493('0x26')]['key']};});_0x1efb79[_0x0493('0x27')]=_[_0x0493('0x22')](_0x168abd,'name');_0x1efb79[_0x0493('0x28')]=_[_0x0493('0x29')](_0x3125f0[_0x0493('0x28')]);_0x1efb79['filters']=_[_0x0493('0x2a')](_0x1efb79[_0x0493('0x27')],_0x1efb79[_0x0493('0x28')]);_0x2e3138[_0x0493('0x2b')]=_[_0x0493('0x2a')](_0x1efb79[_0x0493('0x27')],qs['fields'](_0x3125f0['query'][_0x0493('0x2c')]));_0x2e3138['attributes']=_0x2e3138['attributes'][_0x0493('0x2d')]?_0x2e3138[_0x0493('0x2b')]:_0x1efb79[_0x0493('0x27')];if(!_0x3125f0[_0x0493('0x28')][_0x0493('0x2e')](_0x0493('0x2f'))){_0x2e3138[_0x0493('0x17')]=qs[_0x0493('0x17')](_0x3125f0[_0x0493('0x28')][_0x0493('0x17')]);_0x2e3138[_0x0493('0x14')]=qs['offset'](_0x3125f0['query']['offset']);}_0x2e3138['order']=qs[_0x0493('0x30')](_0x3125f0[_0x0493('0x28')][_0x0493('0x30')]);_0x2e3138[_0x0493('0x31')]=qs[_0x0493('0x32')](_[_0x0493('0x33')](_0x3125f0[_0x0493('0x28')],_0x1efb79[_0x0493('0x32')]),_0x168abd);if(_0x3125f0[_0x0493('0x28')][_0x0493('0x34')]){_0x2e3138[_0x0493('0x31')]=_[_0x0493('0x35')](_0x2e3138['where'],{'$or':_[_0x0493('0x22')](_0x168abd,function(_0x99fd91){if(_0x99fd91[_0x0493('0x26')]!==_0x0493('0x36')){var _0x5e719c={};_0x5e719c[_0x99fd91[_0x0493('0x1f')]]={'$like':'%'+_0x3125f0[_0x0493('0x28')]['filter']+'%'};return _0x5e719c;}})});}_0x2e3138=_[_0x0493('0x35')]({},_0x2e3138,_0x3125f0[_0x0493('0x37')]);var _0x5eb946={'where':_0x2e3138['where']};return db[_0x0493('0x23')][_0x0493('0x16')](_0x5eb946)[_0x0493('0x1c')](function(_0x47c34a){_0x1fff39[_0x0493('0x16')]=_0x47c34a;if(_0x3125f0[_0x0493('0x28')][_0x0493('0x38')]){_0x2e3138['include']=[{'all':!![]}];}return db[_0x0493('0x23')][_0x0493('0x39')](_0x2e3138);})[_0x0493('0x1c')](function(_0x568c91){_0x1fff39[_0x0493('0x3a')]=_0x568c91;return _0x1fff39;})[_0x0493('0x1c')](respondWithFilteredResult(_0x44d026,_0x2e3138))[_0x0493('0x3b')](handleError(_0x44d026,null));};exports[_0x0493('0x3c')]=function(_0x4886e4,_0x19e589){var _0x5008de={'raw':![],'where':{'id':_0x4886e4[_0x0493('0x3d')]['id']}},_0x107762={};_0x107762[_0x0493('0x27')]=_['keys'](db[_0x0493('0x23')][_0x0493('0x24')]);_0x107762[_0x0493('0x28')]=_[_0x0493('0x29')](_0x4886e4[_0x0493('0x28')]);_0x107762[_0x0493('0x32')]=_[_0x0493('0x2a')](_0x107762[_0x0493('0x27')],_0x107762[_0x0493('0x28')]);_0x5008de[_0x0493('0x2b')]=_[_0x0493('0x2a')](_0x107762[_0x0493('0x27')],qs[_0x0493('0x2c')](_0x4886e4[_0x0493('0x28')]['fields']));_0x5008de['attributes']=_0x5008de[_0x0493('0x2b')][_0x0493('0x2d')]?_0x5008de[_0x0493('0x2b')]:_0x107762[_0x0493('0x27')];if(_0x4886e4[_0x0493('0x28')]['includeAll']){_0x5008de[_0x0493('0x3e')]=[{'all':!![]}];}_0x5008de=_[_0x0493('0x35')]({},_0x5008de,_0x4886e4[_0x0493('0x37')]);return db['SugarcrmConfiguration'][_0x0493('0x3f')](_0x5008de)['then'](handleEntityNotFound(_0x19e589,null))['then'](respondWithResult(_0x19e589,null))[_0x0493('0x3b')](handleError(_0x19e589,null));};exports[_0x0493('0x40')]=function(_0x49738c,_0x70e35d){return db[_0x0493('0x23')][_0x0493('0x40')](_0x49738c[_0x0493('0x41')],{})[_0x0493('0x1c')](respondWithResult(_0x70e35d,0xc9))[_0x0493('0x3b')](handleError(_0x70e35d,null));};exports[_0x0493('0x1a')]=function(_0x428f62,_0x5b1edf){if(_0x428f62['body']['id']){delete _0x428f62[_0x0493('0x41')]['id'];}return db[_0x0493('0x23')][_0x0493('0x3f')]({'where':{'id':_0x428f62['params']['id']}})['then'](handleEntityNotFound(_0x5b1edf,null))['then'](saveUpdates(_0x428f62[_0x0493('0x41')],null))[_0x0493('0x1c')](respondWithResult(_0x5b1edf,null))[_0x0493('0x3b')](handleError(_0x5b1edf,null));};exports['destroy']=function(_0x52be06,_0x244fdb){return db[_0x0493('0x23')][_0x0493('0x3f')]({'where':{'id':_0x52be06['params']['id']}})[_0x0493('0x1c')](handleEntityNotFound(_0x244fdb,null))[_0x0493('0x1c')](removeEntity(_0x244fdb,null))[_0x0493('0x3b')](handleError(_0x244fdb,null));};exports[_0x0493('0x42')]=function(_0x520908,_0x3a8b9e,_0x4b9258){var _0x5365eb={};var _0x15ff27={};var _0x32c6ff;var _0x46c1a4;return db[_0x0493('0x23')][_0x0493('0x43')]({'where':{'id':_0x520908[_0x0493('0x3d')]['id']}})[_0x0493('0x1c')](handleEntityNotFound(_0x3a8b9e,null))[_0x0493('0x1c')](function(_0xe54860){if(_0xe54860){_0x32c6ff=_0xe54860;_0x15ff27['model']=_[_0x0493('0x29')](db[_0x0493('0x44')][_0x0493('0x24')]);_0x15ff27[_0x0493('0x28')]=_[_0x0493('0x29')](_0x520908[_0x0493('0x28')]);_0x15ff27[_0x0493('0x32')]=_['intersection'](_0x15ff27[_0x0493('0x27')],_0x15ff27[_0x0493('0x28')]);_0x5365eb[_0x0493('0x2b')]=_[_0x0493('0x2a')](_0x15ff27['model'],qs[_0x0493('0x2c')](_0x520908[_0x0493('0x28')][_0x0493('0x2c')]));_0x5365eb[_0x0493('0x2b')]=_0x5365eb[_0x0493('0x2b')][_0x0493('0x2d')]?_0x5365eb['attributes']:_0x15ff27[_0x0493('0x27')];_0x5365eb['order']=qs[_0x0493('0x30')](_0x520908[_0x0493('0x28')]['sort']);_0x5365eb[_0x0493('0x31')]=qs[_0x0493('0x32')](_[_0x0493('0x33')](_0x520908[_0x0493('0x28')],_0x15ff27[_0x0493('0x32')]));if(_0x520908[_0x0493('0x28')]['filter']){_0x5365eb[_0x0493('0x31')]=_[_0x0493('0x35')](_0x5365eb['where'],{'$or':_[_0x0493('0x22')](_0x5365eb[_0x0493('0x2b')],function(_0x4423ef){var _0x3e5b7c={};_0x3e5b7c[_0x4423ef]={'$like':'%'+_0x520908['query'][_0x0493('0x34')]+'%'};return _0x3e5b7c;})});}_0x5365eb=_[_0x0493('0x35')]({},_0x5365eb,_0x520908[_0x0493('0x37')]);return _0x32c6ff[_0x0493('0x42')](_0x5365eb);}})[_0x0493('0x1c')](function(_0x25d880){if(_0x25d880){_0x46c1a4=_0x25d880[_0x0493('0x2d')];if(!_0x520908['query']['hasOwnProperty'](_0x0493('0x2f'))){_0x5365eb[_0x0493('0x17')]=qs[_0x0493('0x17')](_0x520908[_0x0493('0x28')][_0x0493('0x17')]);_0x5365eb[_0x0493('0x14')]=qs[_0x0493('0x14')](_0x520908[_0x0493('0x28')][_0x0493('0x14')]);}return _0x32c6ff[_0x0493('0x42')](_0x5365eb);}})['then'](function(_0x4706ad){if(_0x4706ad){return _0x4706ad?{'count':_0x46c1a4,'rows':_0x4706ad}:null;}})['then'](respondWithResult(_0x3a8b9e,null))[_0x0493('0x3b')](handleError(_0x3a8b9e,null));};exports[_0x0493('0x45')]=function(_0x4963af,_0x371a87,_0x4f1abe){var _0x5e8033={};var _0x3d8553={};var _0x12c62d;var _0x3b193e;return db[_0x0493('0x23')]['findOne']({'where':{'id':_0x4963af[_0x0493('0x3d')]['id']}})[_0x0493('0x1c')](handleEntityNotFound(_0x371a87,null))[_0x0493('0x1c')](function(_0x13378d){if(_0x13378d){_0x12c62d=_0x13378d;_0x3d8553[_0x0493('0x27')]=_[_0x0493('0x29')](db[_0x0493('0x44')][_0x0493('0x24')]);_0x3d8553['query']=_[_0x0493('0x29')](_0x4963af['query']);_0x3d8553[_0x0493('0x32')]=_[_0x0493('0x2a')](_0x3d8553[_0x0493('0x27')],_0x3d8553[_0x0493('0x28')]);_0x5e8033[_0x0493('0x2b')]=_[_0x0493('0x2a')](_0x3d8553[_0x0493('0x27')],qs[_0x0493('0x2c')](_0x4963af[_0x0493('0x28')][_0x0493('0x2c')]));_0x5e8033[_0x0493('0x2b')]=_0x5e8033[_0x0493('0x2b')][_0x0493('0x2d')]?_0x5e8033[_0x0493('0x2b')]:_0x3d8553[_0x0493('0x27')];_0x5e8033[_0x0493('0x46')]=qs[_0x0493('0x30')](_0x4963af[_0x0493('0x28')][_0x0493('0x30')]);_0x5e8033[_0x0493('0x31')]=qs[_0x0493('0x32')](_['pick'](_0x4963af[_0x0493('0x28')],_0x3d8553[_0x0493('0x32')]));if(_0x4963af[_0x0493('0x28')][_0x0493('0x34')]){_0x5e8033[_0x0493('0x31')]=_[_0x0493('0x35')](_0x5e8033[_0x0493('0x31')],{'$or':_[_0x0493('0x22')](_0x5e8033[_0x0493('0x2b')],function(_0x49a6de){var _0x59f793={};_0x59f793[_0x49a6de]={'$like':'%'+_0x4963af[_0x0493('0x28')][_0x0493('0x34')]+'%'};return _0x59f793;})});}_0x5e8033=_[_0x0493('0x35')]({},_0x5e8033,_0x4963af[_0x0493('0x37')]);return _0x12c62d['getSubjects'](_0x5e8033);}})['then'](function(_0x4f060e){if(_0x4f060e){_0x3b193e=_0x4f060e['length'];if(!_0x4963af[_0x0493('0x28')][_0x0493('0x2e')](_0x0493('0x2f'))){_0x5e8033[_0x0493('0x17')]=qs[_0x0493('0x17')](_0x4963af['query'][_0x0493('0x17')]);_0x5e8033['offset']=qs[_0x0493('0x14')](_0x4963af[_0x0493('0x28')][_0x0493('0x14')]);}return _0x12c62d[_0x0493('0x45')](_0x5e8033);}})[_0x0493('0x1c')](function(_0x2d76fc){if(_0x2d76fc){return _0x2d76fc?{'count':_0x3b193e,'rows':_0x2d76fc}:null;}})[_0x0493('0x1c')](respondWithResult(_0x371a87,null))['catch'](handleError(_0x371a87,null));};exports[_0x0493('0x47')]=function(_0x4f45a6,_0x30bd06,_0x14e26d){var _0x57d6dd={};var _0x5d089f={};var _0xd4f45a;var _0x21edc4;return db[_0x0493('0x23')]['findOne']({'where':{'id':_0x4f45a6[_0x0493('0x3d')]['id']}})[_0x0493('0x1c')](handleEntityNotFound(_0x30bd06,null))[_0x0493('0x1c')](function(_0xc45a98){if(_0xc45a98){_0xd4f45a=_0xc45a98;_0x5d089f[_0x0493('0x27')]=_['keys'](db[_0x0493('0x44')][_0x0493('0x24')]);_0x5d089f[_0x0493('0x28')]=_[_0x0493('0x29')](_0x4f45a6['query']);_0x5d089f[_0x0493('0x32')]=_['intersection'](_0x5d089f[_0x0493('0x27')],_0x5d089f[_0x0493('0x28')]);_0x57d6dd[_0x0493('0x2b')]=_[_0x0493('0x2a')](_0x5d089f[_0x0493('0x27')],qs[_0x0493('0x2c')](_0x4f45a6[_0x0493('0x28')][_0x0493('0x2c')]));_0x57d6dd[_0x0493('0x2b')]=_0x57d6dd[_0x0493('0x2b')][_0x0493('0x2d')]?_0x57d6dd[_0x0493('0x2b')]:_0x5d089f['model'];_0x57d6dd[_0x0493('0x46')]=qs[_0x0493('0x30')](_0x4f45a6[_0x0493('0x28')][_0x0493('0x30')]);_0x57d6dd['where']=qs[_0x0493('0x32')](_[_0x0493('0x33')](_0x4f45a6[_0x0493('0x28')],_0x5d089f[_0x0493('0x32')]));if(_0x4f45a6[_0x0493('0x28')][_0x0493('0x34')]){_0x57d6dd[_0x0493('0x31')]=_[_0x0493('0x35')](_0x57d6dd[_0x0493('0x31')],{'$or':_[_0x0493('0x22')](_0x57d6dd['attributes'],function(_0x42f6c0){var _0x1cd97d={};_0x1cd97d[_0x42f6c0]={'$like':'%'+_0x4f45a6['query']['filter']+'%'};return _0x1cd97d;})});}_0x57d6dd=_[_0x0493('0x35')]({},_0x57d6dd,_0x4f45a6['options']);return _0xd4f45a[_0x0493('0x47')](_0x57d6dd);}})[_0x0493('0x1c')](function(_0x3d15d5){if(_0x3d15d5){_0x21edc4=_0x3d15d5[_0x0493('0x2d')];if(!_0x4f45a6[_0x0493('0x28')][_0x0493('0x2e')](_0x0493('0x2f'))){_0x57d6dd[_0x0493('0x17')]=qs[_0x0493('0x17')](_0x4f45a6[_0x0493('0x28')]['limit']);_0x57d6dd[_0x0493('0x14')]=qs[_0x0493('0x14')](_0x4f45a6[_0x0493('0x28')][_0x0493('0x14')]);}return _0xd4f45a['getDescriptions'](_0x57d6dd);}})[_0x0493('0x1c')](function(_0x1a73df){if(_0x1a73df){return _0x1a73df?{'count':_0x21edc4,'rows':_0x1a73df}:null;}})[_0x0493('0x1c')](respondWithResult(_0x30bd06,null))[_0x0493('0x3b')](handleError(_0x30bd06,null));};
\ No newline at end of file
index d570af9..597e20e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x103d=['api','moment','request-promise','rimraf','./intSugarcrmConfiguration.attributes','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','../../config/logger'];(function(_0x111fde,_0x3974ca){var _0x5d1b4e=function(_0x4d0b30){while(--_0x4d0b30){_0x111fde['push'](_0x111fde['shift']());}};_0x5d1b4e(++_0x3974ca);}(_0x103d,0xd9));var _0xd103=function(_0x45f951,_0x2750c8){_0x45f951=_0x45f951-0x0;var _0x24756c=_0x103d[_0x45f951];return _0x24756c;};'use strict';var _=require(_0xd103('0x0'));var util=require(_0xd103('0x1'));var logger=require(_0xd103('0x2'))(_0xd103('0x3'));var moment=require(_0xd103('0x4'));var BPromise=require('bluebird');var rp=require(_0xd103('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd103('0x6'));var config=require('../../config/environment');var attributes=require(_0xd103('0x7'));module['exports']=function(_0x1b8953,_0x530cf8){return _0x1b8953[_0xd103('0x8')](_0xd103('0x9'),attributes,{'tableName':_0xd103('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc77e=['request-promise','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc77e,0xda));var _0xec77=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xc77e[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0xec77('0x0'));var util=require(_0xec77('0x1'));var logger=require(_0xec77('0x2'))(_0xec77('0x3'));var moment=require(_0xec77('0x4'));var BPromise=require(_0xec77('0x5'));var rp=require(_0xec77('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xec77('0x7'));var config=require(_0xec77('0x8'));var attributes=require(_0xec77('0x9'));module[_0xec77('0xa')]=function(_0x340952,_0x217fdc){return _0x340952[_0xec77('0xb')](_0xec77('0xc'),attributes,{'tableName':_0xec77('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0efa395..dcac781 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58fa=['SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0xd341b,_0x3100ba){var _0x86bd5a=function(_0x325140){while(--_0x325140){_0xd341b['push'](_0xd341b['shift']());}};_0x86bd5a(++_0x3100ba);}(_0x58fa,0x16c));var _0xa58f=function(_0x91810f,_0x19f003){_0x91810f=_0x91810f-0x0;var _0x4864d3=_0x58fa[_0x91810f];return _0x4864d3;};'use strict';var _=require(_0xa58f('0x0'));var util=require('util');var moment=require(_0xa58f('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa58f('0x2'));var db=require(_0xa58f('0x3'))['db'];var utils=require(_0xa58f('0x4'));var logger=require(_0xa58f('0x5'))(_0xa58f('0x6'));var config=require('../../config/environment');var jayson=require(_0xa58f('0x7'));var client=jayson['client'][_0xa58f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1a2305,_0x2ae0a4,_0x285fac){return new BPromise(function(_0x51ebc2,_0x416f80){return client[_0xa58f('0x9')](_0x1a2305,_0x285fac)[_0xa58f('0xa')](function(_0x14a4a7){logger['info'](_0xa58f('0xb'),_0x2ae0a4,_0xa58f('0xc'));logger[_0xa58f('0xd')](_0xa58f('0xe'),_0x2ae0a4,_0xa58f('0xc'),JSON[_0xa58f('0xf')](_0x14a4a7));if(_0x14a4a7[_0xa58f('0x10')]){if(_0x14a4a7[_0xa58f('0x10')][_0xa58f('0x11')]===0x1f4){logger[_0xa58f('0x10')](_0xa58f('0xb'),_0x2ae0a4,_0x14a4a7[_0xa58f('0x10')]['message']);return _0x416f80(_0x14a4a7['error'][_0xa58f('0x12')]);}logger[_0xa58f('0x10')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x2ae0a4,_0x14a4a7[_0xa58f('0x10')][_0xa58f('0x12')]);return _0x51ebc2(_0x14a4a7[_0xa58f('0x10')]['message']);}else{logger['info'](_0xa58f('0xb'),_0x2ae0a4,_0xa58f('0xc'));_0x51ebc2(_0x14a4a7[_0xa58f('0x13')][_0xa58f('0x12')]);}})[_0xa58f('0x14')](function(_0x2f1030){logger[_0xa58f('0x10')](_0xa58f('0xb'),_0x2ae0a4,_0x2f1030);_0x416f80(_0x2f1030);});});}
\ No newline at end of file
+var _0x26b6=['request\x20sent','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x26b6,0xa8));var _0x626b=function(_0x324c6a,_0x515837){_0x324c6a=_0x324c6a-0x0;var _0x593241=_0x26b6[_0x324c6a];return _0x593241;};'use strict';var _=require(_0x626b('0x0'));var util=require(_0x626b('0x1'));var moment=require(_0x626b('0x2'));var BPromise=require(_0x626b('0x3'));var rs=require(_0x626b('0x4'));var fs=require('fs');var Redis=require(_0x626b('0x5'));var db=require(_0x626b('0x6'))['db'];var utils=require(_0x626b('0x7'));var logger=require(_0x626b('0x8'))(_0x626b('0x9'));var config=require(_0x626b('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x626b('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x155f59,_0x36f1aa,_0x424a28){return new BPromise(function(_0x5c6722,_0x4b0a0f){return client[_0x626b('0xc')](_0x155f59,_0x424a28)[_0x626b('0xd')](function(_0x11a1f6){logger[_0x626b('0xe')](_0x626b('0xf'),_0x36f1aa,_0x626b('0x10'));logger['debug'](_0x626b('0x11'),_0x36f1aa,_0x626b('0x10'),JSON[_0x626b('0x12')](_0x11a1f6));if(_0x11a1f6[_0x626b('0x13')]){if(_0x11a1f6[_0x626b('0x13')][_0x626b('0x14')]===0x1f4){logger['error'](_0x626b('0xf'),_0x36f1aa,_0x11a1f6[_0x626b('0x13')][_0x626b('0x15')]);return _0x4b0a0f(_0x11a1f6[_0x626b('0x13')][_0x626b('0x15')]);}logger['error']('SugarcrmConfiguration,\x20%s,\x20%s',_0x36f1aa,_0x11a1f6['error'][_0x626b('0x15')]);return _0x5c6722(_0x11a1f6[_0x626b('0x13')][_0x626b('0x15')]);}else{logger[_0x626b('0xe')](_0x626b('0xf'),_0x36f1aa,_0x626b('0x10'));_0x5c6722(_0x11a1f6['result'][_0x626b('0x15')]);}})[_0x626b('0x16')](function(_0x352796){logger['error']('SugarcrmConfiguration,\x20%s,\x20%s',_0x36f1aa,_0x352796);_0x4b0a0f(_0x352796);});});}
\ No newline at end of file
index 33c371d..8e63eaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x555f=['/:id','delete','destroy','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmField.controller','get','isAuthenticated','index','show','post','put'];(function(_0x4b2436,_0x452299){var _0x4f5ab2=function(_0x5c6679){while(--_0x5c6679){_0x4b2436['push'](_0x4b2436['shift']());}};_0x4f5ab2(++_0x452299);}(_0x555f,0xbe));var _0xf555=function(_0x3c8c38,_0x277bc6){_0x3c8c38=_0x3c8c38-0x0;var _0x1edcab=_0x555f[_0x3c8c38];return _0x1edcab;};'use strict';var multer=require(_0xf555('0x0'));var util=require(_0xf555('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf555('0x2'));var router=express[_0xf555('0x3')]();var fs_extra=require(_0xf555('0x4'));var auth=require(_0xf555('0x5'));var interaction=require(_0xf555('0x6'));var config=require('../../config/environment');var controller=require(_0xf555('0x7'));router[_0xf555('0x8')]('/',auth[_0xf555('0x9')](),controller[_0xf555('0xa')]);router[_0xf555('0x8')]('/:id',auth[_0xf555('0x9')](),controller[_0xf555('0xb')]);router[_0xf555('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0xf555('0xd')](_0xf555('0xe'),auth[_0xf555('0x9')](),controller['update']);router[_0xf555('0xf')](_0xf555('0xe'),auth[_0xf555('0x9')](),controller[_0xf555('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xf41a=['delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmField.controller','get','isAuthenticated','index','show','post','create','put','/:id','update'];(function(_0x4727f1,_0x2ff773){var _0x2977ce=function(_0x29be89){while(--_0x29be89){_0x4727f1['push'](_0x4727f1['shift']());}};_0x2977ce(++_0x2ff773);}(_0xf41a,0xd5));var _0xaf41=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0xf41a[_0x4c12ec];return _0x3ae42c;};'use strict';var multer=require(_0xaf41('0x0'));var util=require('util');var path=require(_0xaf41('0x1'));var timeout=require(_0xaf41('0x2'));var express=require(_0xaf41('0x3'));var router=express[_0xaf41('0x4')]();var fs_extra=require(_0xaf41('0x5'));var auth=require(_0xaf41('0x6'));var interaction=require(_0xaf41('0x7'));var config=require('../../config/environment');var controller=require(_0xaf41('0x8'));router[_0xaf41('0x9')]('/',auth[_0xaf41('0xa')](),controller[_0xaf41('0xb')]);router['get']('/:id',auth[_0xaf41('0xa')](),controller[_0xaf41('0xc')]);router[_0xaf41('0xd')]('/',auth['isAuthenticated'](),controller[_0xaf41('0xe')]);router[_0xaf41('0xf')](_0xaf41('0x10'),auth[_0xaf41('0xa')](),controller[_0xaf41('0x11')]);router[_0xaf41('0x12')](_0xaf41('0x10'),auth['isAuthenticated'](),controller[_0xaf41('0x13')]);module[_0xaf41('0x14')]=router;
\ No newline at end of file
index b190325..2952f80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c07=['ENUM','variable','customVariable','keyValue','string','STRING','BOOLEAN','sequelize'];(function(_0x27e811,_0x20137c){var _0x1627fa=function(_0x4498ca){while(--_0x4498ca){_0x27e811['push'](_0x27e811['shift']());}};_0x1627fa(++_0x20137c);}(_0x2c07,0x137));var _0x72c0=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x2c07[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require(_0x72c0('0x0'));module['exports']={'type':{'type':Sequelize[_0x72c0('0x1')]('string',_0x72c0('0x2'),_0x72c0('0x3'),_0x72c0('0x4'),'picklist'),'defaultValue':_0x72c0('0x5')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x72c0('0x6')]},'keyType':{'type':Sequelize[_0x72c0('0x1')](_0x72c0('0x5'),'variable',_0x72c0('0x3'))},'keyContent':{'type':Sequelize[_0x72c0('0x6')]},'idField':{'type':Sequelize[_0x72c0('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x72c0('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x72c0('0x6')]}};
\ No newline at end of file
+var _0xde31=['BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue','STRING'];(function(_0xa80908,_0x1fbb08){var _0x1e8bed=function(_0x4e45b7){while(--_0x4e45b7){_0xa80908['push'](_0xa80908['shift']());}};_0x1e8bed(++_0x1fbb08);}(_0xde31,0x172));var _0x1de3=function(_0x32b30c,_0x2d5ec8){_0x32b30c=_0x32b30c-0x0;var _0xcfc212=_0xde31[_0x32b30c];return _0xcfc212;};'use strict';var Sequelize=require(_0x1de3('0x0'));module[_0x1de3('0x1')]={'type':{'type':Sequelize[_0x1de3('0x2')](_0x1de3('0x3'),_0x1de3('0x4'),_0x1de3('0x5'),_0x1de3('0x6'),'picklist'),'defaultValue':_0x1de3('0x3')},'content':{'type':Sequelize[_0x1de3('0x7')]},'key':{'type':Sequelize[_0x1de3('0x7')]},'keyType':{'type':Sequelize[_0x1de3('0x2')](_0x1de3('0x3'),_0x1de3('0x4'),_0x1de3('0x5'))},'keyContent':{'type':Sequelize[_0x1de3('0x7')]},'idField':{'type':Sequelize[_0x1de3('0x7')]},'nameField':{'type':Sequelize[_0x1de3('0x7')]},'customField':{'type':Sequelize[_0x1de3('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 691f042..98288d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d31=['catch','show','params','keys','find','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','index','rawAttributes','fieldName','type','key','model','map','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','SugarcrmField','includeAll','include','findAll'];(function(_0x49c68e,_0x1c1673){var _0x33032b=function(_0x42ac31){while(--_0x42ac31){_0x49c68e['push'](_0x49c68e['shift']());}};_0x33032b(++_0x1c1673);}(_0x7d31,0x188));var _0x17d3=function(_0x2bd9db,_0x2f6076){_0x2bd9db=_0x2bd9db-0x0;var _0x28441e=_0x7d31[_0x2bd9db];return _0x28441e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x17d3('0x0'));var zipdir=require(_0x17d3('0x1'));var jsonpatch=require(_0x17d3('0x2'));var rp=require(_0x17d3('0x3'));var moment=require(_0x17d3('0x4'));var BPromise=require(_0x17d3('0x5'));var Mustache=require(_0x17d3('0x6'));var util=require('util');var path=require(_0x17d3('0x7'));var sox=require(_0x17d3('0x8'));var csv=require('to-csv');var ejs=require(_0x17d3('0x9'));var fs=require('fs');var fs_extra=require(_0x17d3('0xa'));var _=require('lodash');var squel=require(_0x17d3('0xb'));var crypto=require('crypto');var jsforce=require(_0x17d3('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x17d3('0xd'));var querystring=require(_0x17d3('0xe'));var Papa=require(_0x17d3('0xf'));var Redis=require(_0x17d3('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x17d3('0x11'));var as=require(_0x17d3('0x12'));var hardwareService=require(_0x17d3('0x13'));var logger=require('../../config/logger')(_0x17d3('0x14'));var utils=require(_0x17d3('0x15'));var config=require(_0x17d3('0x16'));var licenseUtil=require(_0x17d3('0x17'));var db=require(_0x17d3('0x18'))['db'];function respondWithStatusCode(_0x5c8325,_0x4d037d){_0x4d037d=_0x4d037d||0xcc;return function(_0x1430f0){if(_0x1430f0){return _0x5c8325[_0x17d3('0x19')](_0x4d037d);}return _0x5c8325[_0x17d3('0x1a')](_0x4d037d)[_0x17d3('0x1b')]();};}function respondWithResult(_0x3a5458,_0x1bdc34){_0x1bdc34=_0x1bdc34||0xc8;return function(_0x47b02a){if(_0x47b02a){return _0x3a5458[_0x17d3('0x1a')](_0x1bdc34)[_0x17d3('0x1c')](_0x47b02a);}};}function respondWithFilteredResult(_0x4dfd85,_0x440cb9){return function(_0x4a388f){if(_0x4a388f){var _0x44f0cf=typeof _0x440cb9['offset']===_0x17d3('0x1d')&&typeof _0x440cb9[_0x17d3('0x1e')]===_0x17d3('0x1d');var _0x3b13bb=_0x4a388f[_0x17d3('0x1f')];var _0x465b4e=_0x44f0cf?0x0:_0x440cb9['offset'];var _0x403075=_0x44f0cf?_0x4a388f[_0x17d3('0x1f')]:_0x440cb9[_0x17d3('0x20')]+_0x440cb9[_0x17d3('0x1e')];var _0x4182dc;if(_0x403075>=_0x3b13bb){_0x403075=_0x3b13bb;_0x4182dc=0xc8;}else{_0x4182dc=0xce;}_0x4dfd85[_0x17d3('0x1a')](_0x4182dc);return _0x4dfd85['set'](_0x17d3('0x21'),_0x465b4e+'-'+_0x403075+'/'+_0x3b13bb)[_0x17d3('0x1c')](_0x4a388f);}return null;};}function patchUpdates(_0x666e1){return function(_0x285f44){try{jsonpatch[_0x17d3('0x22')](_0x285f44,_0x666e1,!![]);}catch(_0x5baf25){return BPromise[_0x17d3('0x23')](_0x5baf25);}return _0x285f44[_0x17d3('0x24')]();};}function saveUpdates(_0x5b4fa6,_0x414ff5){return function(_0x16aa71){if(_0x16aa71){return _0x16aa71[_0x17d3('0x25')](_0x5b4fa6)['then'](function(_0x271776){return _0x271776;});}return null;};}function removeEntity(_0x3cdcc9,_0x11119a){return function(_0x6be865){if(_0x6be865){return _0x6be865[_0x17d3('0x26')]()[_0x17d3('0x27')](function(){_0x3cdcc9[_0x17d3('0x1a')](0xcc)[_0x17d3('0x1b')]();});}};}function handleEntityNotFound(_0x134123,_0x24585d){return function(_0x1535ef){if(!_0x1535ef){_0x134123[_0x17d3('0x19')](0x194);}return _0x1535ef;};}function handleError(_0x471d61,_0x49c1eb){_0x49c1eb=_0x49c1eb||0x1f4;return function(_0x344f59){logger[_0x17d3('0x28')](_0x344f59[_0x17d3('0x29')]);if(_0x344f59[_0x17d3('0x2a')]){delete _0x344f59['name'];}_0x471d61[_0x17d3('0x1a')](_0x49c1eb)['send'](_0x344f59);};}exports[_0x17d3('0x2b')]=function(_0x13d72f,_0x303dca){var _0x6e0f0={},_0x247975={},_0xcd8077={'count':0x0,'rows':[]};var _0xe9496e=_['map'](db['SugarcrmField'][_0x17d3('0x2c')],function(_0x3ca42f){return{'name':_0x3ca42f[_0x17d3('0x2d')],'type':_0x3ca42f[_0x17d3('0x2e')][_0x17d3('0x2f')]};});_0x247975[_0x17d3('0x30')]=_[_0x17d3('0x31')](_0xe9496e,'name');_0x247975[_0x17d3('0x32')]=_['keys'](_0x13d72f[_0x17d3('0x32')]);_0x247975[_0x17d3('0x33')]=_['intersection'](_0x247975[_0x17d3('0x30')],_0x247975['query']);_0x6e0f0[_0x17d3('0x34')]=_[_0x17d3('0x35')](_0x247975[_0x17d3('0x30')],qs[_0x17d3('0x36')](_0x13d72f['query']['fields']));_0x6e0f0['attributes']=_0x6e0f0['attributes'][_0x17d3('0x37')]?_0x6e0f0[_0x17d3('0x34')]:_0x247975['model'];if(!_0x13d72f['query'][_0x17d3('0x38')](_0x17d3('0x39'))){_0x6e0f0[_0x17d3('0x1e')]=qs[_0x17d3('0x1e')](_0x13d72f[_0x17d3('0x32')][_0x17d3('0x1e')]);_0x6e0f0[_0x17d3('0x20')]=qs[_0x17d3('0x20')](_0x13d72f[_0x17d3('0x32')]['offset']);}_0x6e0f0[_0x17d3('0x3a')]=qs[_0x17d3('0x3b')](_0x13d72f['query'][_0x17d3('0x3b')]);_0x6e0f0[_0x17d3('0x3c')]=qs[_0x17d3('0x33')](_[_0x17d3('0x3d')](_0x13d72f[_0x17d3('0x32')],_0x247975['filters']),_0xe9496e);if(_0x13d72f['query'][_0x17d3('0x3e')]){_0x6e0f0[_0x17d3('0x3c')]=_[_0x17d3('0x3f')](_0x6e0f0[_0x17d3('0x3c')],{'$or':_[_0x17d3('0x31')](_0xe9496e,function(_0x73ed39){if(_0x73ed39[_0x17d3('0x2e')]!==_0x17d3('0x40')){var _0x1441fe={};_0x1441fe[_0x73ed39[_0x17d3('0x2a')]]={'$like':'%'+_0x13d72f[_0x17d3('0x32')][_0x17d3('0x3e')]+'%'};return _0x1441fe;}})});}_0x6e0f0=_[_0x17d3('0x3f')]({},_0x6e0f0,_0x13d72f[_0x17d3('0x41')]);var _0x317f7a={'where':_0x6e0f0[_0x17d3('0x3c')]};return db[_0x17d3('0x42')][_0x17d3('0x1f')](_0x317f7a)['then'](function(_0xad5d8b){_0xcd8077[_0x17d3('0x1f')]=_0xad5d8b;if(_0x13d72f[_0x17d3('0x32')][_0x17d3('0x43')]){_0x6e0f0[_0x17d3('0x44')]=[{'all':!![]}];}return db['SugarcrmField'][_0x17d3('0x45')](_0x6e0f0);})[_0x17d3('0x27')](function(_0x27bfd7){_0xcd8077['rows']=_0x27bfd7;return _0xcd8077;})[_0x17d3('0x27')](respondWithFilteredResult(_0x303dca,_0x6e0f0))[_0x17d3('0x46')](handleError(_0x303dca,null));};exports[_0x17d3('0x47')]=function(_0x4df98b,_0x58a392){var _0x3d8ffb={'raw':!![],'where':{'id':_0x4df98b[_0x17d3('0x48')]['id']}},_0x29e3e8={};_0x29e3e8[_0x17d3('0x30')]=_[_0x17d3('0x49')](db[_0x17d3('0x42')][_0x17d3('0x2c')]);_0x29e3e8['query']=_['keys'](_0x4df98b[_0x17d3('0x32')]);_0x29e3e8[_0x17d3('0x33')]=_['intersection'](_0x29e3e8[_0x17d3('0x30')],_0x29e3e8['query']);_0x3d8ffb[_0x17d3('0x34')]=_[_0x17d3('0x35')](_0x29e3e8[_0x17d3('0x30')],qs[_0x17d3('0x36')](_0x4df98b[_0x17d3('0x32')]['fields']));_0x3d8ffb[_0x17d3('0x34')]=_0x3d8ffb['attributes'][_0x17d3('0x37')]?_0x3d8ffb[_0x17d3('0x34')]:_0x29e3e8['model'];if(_0x4df98b[_0x17d3('0x32')]['includeAll']){_0x3d8ffb[_0x17d3('0x44')]=[{'all':!![]}];}_0x3d8ffb=_['merge']({},_0x3d8ffb,_0x4df98b[_0x17d3('0x41')]);return db[_0x17d3('0x42')][_0x17d3('0x4a')](_0x3d8ffb)[_0x17d3('0x27')](handleEntityNotFound(_0x58a392,null))[_0x17d3('0x27')](respondWithResult(_0x58a392,null))[_0x17d3('0x46')](handleError(_0x58a392,null));};exports[_0x17d3('0x4b')]=function(_0x2cf4c3,_0x32f481){return db[_0x17d3('0x42')][_0x17d3('0x4b')](_0x2cf4c3[_0x17d3('0x4c')],{})['then'](respondWithResult(_0x32f481,0xc9))['catch'](handleError(_0x32f481,null));};exports['update']=function(_0x1a9480,_0x43fcb3){if(_0x1a9480[_0x17d3('0x4c')]['id']){delete _0x1a9480['body']['id'];}return db['SugarcrmField'][_0x17d3('0x4a')]({'where':{'id':_0x1a9480[_0x17d3('0x48')]['id']}})[_0x17d3('0x27')](handleEntityNotFound(_0x43fcb3,null))[_0x17d3('0x27')](saveUpdates(_0x1a9480[_0x17d3('0x4c')],null))['then'](respondWithResult(_0x43fcb3,null))[_0x17d3('0x46')](handleError(_0x43fcb3,null));};exports[_0x17d3('0x26')]=function(_0x1de755,_0x437981){return db[_0x17d3('0x42')][_0x17d3('0x4a')]({'where':{'id':_0x1de755['params']['id']}})[_0x17d3('0x27')](handleEntityNotFound(_0x437981,null))[_0x17d3('0x27')](removeEntity(_0x437981,null))['catch'](handleError(_0x437981,null));};
\ No newline at end of file
+var _0x7bd1=['save','update','destroy','end','stack','name','send','index','map','SugarcrmField','fieldName','key','query','keys','filters','intersection','model','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','then','includeAll','include','rows','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','util','path','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','reject'];(function(_0x3ddd02,_0x254b39){var _0x16013c=function(_0x346b15){while(--_0x346b15){_0x3ddd02['push'](_0x3ddd02['shift']());}};_0x16013c(++_0x254b39);}(_0x7bd1,0xb9));var _0x17bd=function(_0x35ced9,_0x22cc84){_0x35ced9=_0x35ced9-0x0;var _0x34f74a=_0x7bd1[_0x35ced9];return _0x34f74a;};'use strict';var emlformat=require(_0x17bd('0x0'));var rimraf=require(_0x17bd('0x1'));var zipdir=require(_0x17bd('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x17bd('0x3'));var moment=require(_0x17bd('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x17bd('0x5'));var path=require(_0x17bd('0x6'));var sox=require('sox');var csv=require(_0x17bd('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x17bd('0x8'));var squel=require(_0x17bd('0x9'));var crypto=require(_0x17bd('0xa'));var jsforce=require(_0x17bd('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x17bd('0xc'));var Papa=require(_0x17bd('0xd'));var Redis=require('ioredis');var authService=require(_0x17bd('0xe'));var qs=require(_0x17bd('0xf'));var as=require(_0x17bd('0x10'));var hardwareService=require(_0x17bd('0x11'));var logger=require(_0x17bd('0x12'))('api');var utils=require(_0x17bd('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x17bd('0x14'));var db=require(_0x17bd('0x15'))['db'];function respondWithStatusCode(_0x3ffbc6,_0x1bb366){_0x1bb366=_0x1bb366||0xcc;return function(_0x2d925a){if(_0x2d925a){return _0x3ffbc6[_0x17bd('0x16')](_0x1bb366);}return _0x3ffbc6[_0x17bd('0x17')](_0x1bb366)['end']();};}function respondWithResult(_0x453504,_0x54e47a){_0x54e47a=_0x54e47a||0xc8;return function(_0x277eca){if(_0x277eca){return _0x453504[_0x17bd('0x17')](_0x54e47a)[_0x17bd('0x18')](_0x277eca);}};}function respondWithFilteredResult(_0x1a82d3,_0x502941){return function(_0x2db8b4){if(_0x2db8b4){var _0x4ffdc9=typeof _0x502941[_0x17bd('0x19')]===_0x17bd('0x1a')&&typeof _0x502941[_0x17bd('0x1b')]===_0x17bd('0x1a');var _0x17cfa2=_0x2db8b4[_0x17bd('0x1c')];var _0x51e935=_0x4ffdc9?0x0:_0x502941[_0x17bd('0x19')];var _0x50139e=_0x4ffdc9?_0x2db8b4['count']:_0x502941[_0x17bd('0x19')]+_0x502941[_0x17bd('0x1b')];var _0x2409c8;if(_0x50139e>=_0x17cfa2){_0x50139e=_0x17cfa2;_0x2409c8=0xc8;}else{_0x2409c8=0xce;}_0x1a82d3[_0x17bd('0x17')](_0x2409c8);return _0x1a82d3['set'](_0x17bd('0x1d'),_0x51e935+'-'+_0x50139e+'/'+_0x17cfa2)[_0x17bd('0x18')](_0x2db8b4);}return null;};}function patchUpdates(_0x24c11c){return function(_0x1e9868){try{jsonpatch['apply'](_0x1e9868,_0x24c11c,!![]);}catch(_0x54ba30){return BPromise[_0x17bd('0x1e')](_0x54ba30);}return _0x1e9868[_0x17bd('0x1f')]();};}function saveUpdates(_0x44bcce,_0x306a59){return function(_0x256213){if(_0x256213){return _0x256213[_0x17bd('0x20')](_0x44bcce)['then'](function(_0x493741){return _0x493741;});}return null;};}function removeEntity(_0x364d03,_0x4f2826){return function(_0x1906bd){if(_0x1906bd){return _0x1906bd[_0x17bd('0x21')]()['then'](function(){_0x364d03['status'](0xcc)[_0x17bd('0x22')]();});}};}function handleEntityNotFound(_0x2747f6,_0x20a3fe){return function(_0xb60ed2){if(!_0xb60ed2){_0x2747f6[_0x17bd('0x16')](0x194);}return _0xb60ed2;};}function handleError(_0x9f7964,_0x1e91fa){_0x1e91fa=_0x1e91fa||0x1f4;return function(_0xc71c60){logger['error'](_0xc71c60[_0x17bd('0x23')]);if(_0xc71c60[_0x17bd('0x24')]){delete _0xc71c60['name'];}_0x9f7964['status'](_0x1e91fa)[_0x17bd('0x25')](_0xc71c60);};}exports[_0x17bd('0x26')]=function(_0x538976,_0x499067){var _0x18aeff={},_0xa53726={},_0x186396={'count':0x0,'rows':[]};var _0x32bfef=_[_0x17bd('0x27')](db[_0x17bd('0x28')]['rawAttributes'],function(_0x300581){return{'name':_0x300581[_0x17bd('0x29')],'type':_0x300581['type'][_0x17bd('0x2a')]};});_0xa53726['model']=_[_0x17bd('0x27')](_0x32bfef,_0x17bd('0x24'));_0xa53726[_0x17bd('0x2b')]=_[_0x17bd('0x2c')](_0x538976['query']);_0xa53726[_0x17bd('0x2d')]=_[_0x17bd('0x2e')](_0xa53726[_0x17bd('0x2f')],_0xa53726[_0x17bd('0x2b')]);_0x18aeff['attributes']=_[_0x17bd('0x2e')](_0xa53726['model'],qs['fields'](_0x538976[_0x17bd('0x2b')][_0x17bd('0x30')]));_0x18aeff['attributes']=_0x18aeff['attributes'][_0x17bd('0x31')]?_0x18aeff[_0x17bd('0x32')]:_0xa53726[_0x17bd('0x2f')];if(!_0x538976['query'][_0x17bd('0x33')](_0x17bd('0x34'))){_0x18aeff[_0x17bd('0x1b')]=qs[_0x17bd('0x1b')](_0x538976[_0x17bd('0x2b')][_0x17bd('0x1b')]);_0x18aeff[_0x17bd('0x19')]=qs[_0x17bd('0x19')](_0x538976[_0x17bd('0x2b')]['offset']);}_0x18aeff[_0x17bd('0x35')]=qs[_0x17bd('0x36')](_0x538976[_0x17bd('0x2b')][_0x17bd('0x36')]);_0x18aeff[_0x17bd('0x37')]=qs[_0x17bd('0x2d')](_[_0x17bd('0x38')](_0x538976[_0x17bd('0x2b')],_0xa53726[_0x17bd('0x2d')]),_0x32bfef);if(_0x538976[_0x17bd('0x2b')][_0x17bd('0x39')]){_0x18aeff['where']=_[_0x17bd('0x3a')](_0x18aeff[_0x17bd('0x37')],{'$or':_[_0x17bd('0x27')](_0x32bfef,function(_0x52225a){if(_0x52225a[_0x17bd('0x3b')]!==_0x17bd('0x3c')){var _0x2e9937={};_0x2e9937[_0x52225a[_0x17bd('0x24')]]={'$like':'%'+_0x538976['query'][_0x17bd('0x39')]+'%'};return _0x2e9937;}})});}_0x18aeff=_['merge']({},_0x18aeff,_0x538976[_0x17bd('0x3d')]);var _0x2b8421={'where':_0x18aeff[_0x17bd('0x37')]};return db['SugarcrmField'][_0x17bd('0x1c')](_0x2b8421)[_0x17bd('0x3e')](function(_0x3a4cae){_0x186396[_0x17bd('0x1c')]=_0x3a4cae;if(_0x538976[_0x17bd('0x2b')][_0x17bd('0x3f')]){_0x18aeff[_0x17bd('0x40')]=[{'all':!![]}];}return db[_0x17bd('0x28')]['findAll'](_0x18aeff);})[_0x17bd('0x3e')](function(_0x2a3141){_0x186396[_0x17bd('0x41')]=_0x2a3141;return _0x186396;})[_0x17bd('0x3e')](respondWithFilteredResult(_0x499067,_0x18aeff))[_0x17bd('0x42')](handleError(_0x499067,null));};exports[_0x17bd('0x43')]=function(_0x1b97e5,_0x2731d1){var _0x556813={'raw':!![],'where':{'id':_0x1b97e5[_0x17bd('0x44')]['id']}},_0x216c6a={};_0x216c6a[_0x17bd('0x2f')]=_[_0x17bd('0x2c')](db['SugarcrmField']['rawAttributes']);_0x216c6a[_0x17bd('0x2b')]=_[_0x17bd('0x2c')](_0x1b97e5['query']);_0x216c6a[_0x17bd('0x2d')]=_['intersection'](_0x216c6a[_0x17bd('0x2f')],_0x216c6a[_0x17bd('0x2b')]);_0x556813[_0x17bd('0x32')]=_[_0x17bd('0x2e')](_0x216c6a['model'],qs[_0x17bd('0x30')](_0x1b97e5[_0x17bd('0x2b')][_0x17bd('0x30')]));_0x556813[_0x17bd('0x32')]=_0x556813[_0x17bd('0x32')]['length']?_0x556813['attributes']:_0x216c6a[_0x17bd('0x2f')];if(_0x1b97e5['query'][_0x17bd('0x3f')]){_0x556813[_0x17bd('0x40')]=[{'all':!![]}];}_0x556813=_[_0x17bd('0x3a')]({},_0x556813,_0x1b97e5['options']);return db[_0x17bd('0x28')][_0x17bd('0x45')](_0x556813)['then'](handleEntityNotFound(_0x2731d1,null))['then'](respondWithResult(_0x2731d1,null))[_0x17bd('0x42')](handleError(_0x2731d1,null));};exports[_0x17bd('0x46')]=function(_0x2c14f4,_0x34f543){return db[_0x17bd('0x28')][_0x17bd('0x46')](_0x2c14f4['body'],{})[_0x17bd('0x3e')](respondWithResult(_0x34f543,0xc9))[_0x17bd('0x42')](handleError(_0x34f543,null));};exports[_0x17bd('0x20')]=function(_0x2ddaac,_0x39b31b){if(_0x2ddaac[_0x17bd('0x47')]['id']){delete _0x2ddaac['body']['id'];}return db['SugarcrmField'][_0x17bd('0x45')]({'where':{'id':_0x2ddaac[_0x17bd('0x44')]['id']}})[_0x17bd('0x3e')](handleEntityNotFound(_0x39b31b,null))[_0x17bd('0x3e')](saveUpdates(_0x2ddaac[_0x17bd('0x47')],null))[_0x17bd('0x3e')](respondWithResult(_0x39b31b,null))['catch'](handleError(_0x39b31b,null));};exports[_0x17bd('0x21')]=function(_0x200a12,_0x1e065c){return db[_0x17bd('0x28')][_0x17bd('0x45')]({'where':{'id':_0x200a12['params']['id']}})[_0x17bd('0x3e')](handleEntityNotFound(_0x1e065c,null))[_0x17bd('0x3e')](removeEntity(_0x1e065c,null))['catch'](handleError(_0x1e065c,null));};
\ No newline at end of file
index 5b09454..d6e123f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14e0=['int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','define','SugarcrmField'];(function(_0x1bb8a5,_0x30e170){var _0x32d0ed=function(_0x541325){while(--_0x541325){_0x1bb8a5['push'](_0x1bb8a5['shift']());}};_0x32d0ed(++_0x30e170);}(_0x14e0,0x103));var _0x014e=function(_0x2442b9,_0x3d87e9){_0x2442b9=_0x2442b9-0x0;var _0x31b571=_0x14e0[_0x2442b9];return _0x31b571;};'use strict';var _=require(_0x014e('0x0'));var util=require(_0x014e('0x1'));var logger=require(_0x014e('0x2'))(_0x014e('0x3'));var moment=require(_0x014e('0x4'));var BPromise=require(_0x014e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x014e('0x6'));var rimraf=require(_0x014e('0x7'));var config=require(_0x014e('0x8'));var attributes=require(_0x014e('0x9'));module[_0x014e('0xa')]=function(_0x4de222,_0x46a526){return _0x4de222[_0x014e('0xb')](_0x014e('0xc'),attributes,{'tableName':_0x014e('0xd'),'paranoid':![],'indexes':[{'name':_0x014e('0xe'),'fields':[_0x014e('0xf'),_0x014e('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0066=['SugarcrmField','int_sugarcrm_fields','FieldId','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intSugarcrmField.attributes','exports'];(function(_0x548f42,_0x4a8a30){var _0x31b49d=function(_0x716d4e){while(--_0x716d4e){_0x548f42['push'](_0x548f42['shift']());}};_0x31b49d(++_0x4a8a30);}(_0x0066,0x92));var _0x6006=function(_0x359bb9,_0x5da145){_0x359bb9=_0x359bb9-0x0;var _0x44441d=_0x0066[_0x359bb9];return _0x44441d;};'use strict';var _=require('lodash');var util=require(_0x6006('0x0'));var logger=require(_0x6006('0x1'))(_0x6006('0x2'));var moment=require(_0x6006('0x3'));var BPromise=require(_0x6006('0x4'));var rp=require(_0x6006('0x5'));var fs=require('fs');var path=require(_0x6006('0x6'));var rimraf=require('rimraf');var config=require(_0x6006('0x7'));var attributes=require(_0x6006('0x8'));module[_0x6006('0x9')]=function(_0x175f95,_0x5890d5){return _0x175f95['define'](_0x6006('0xa'),attributes,{'tableName':_0x6006('0xb'),'paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':['idField',_0x6006('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 425c59c..539517c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacc0=['request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','code','error','SugarcrmField,\x20%s,\x20%s','message','result','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info'];(function(_0x40015a,_0x415db5){var _0x42f8a4=function(_0x5685ad){while(--_0x5685ad){_0x40015a['push'](_0x40015a['shift']());}};_0x42f8a4(++_0x415db5);}(_0xacc0,0x198));var _0x0acc=function(_0x29fbb7,_0x25fbbf){_0x29fbb7=_0x29fbb7-0x0;var _0x16afcd=_0xacc0[_0x29fbb7];return _0x16afcd;};'use strict';var _=require('lodash');var util=require(_0x0acc('0x0'));var moment=require('moment');var BPromise=require(_0x0acc('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0acc('0x2'));var db=require(_0x0acc('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x0acc('0x4'))(_0x0acc('0x5'));var config=require(_0x0acc('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x0acc('0x7')][_0x0acc('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x394c37,_0x203d87,_0x44888e){return new BPromise(function(_0x3c7ebe,_0x23b380){return client[_0x0acc('0x9')](_0x394c37,_0x44888e)[_0x0acc('0xa')](function(_0x38ded5){logger[_0x0acc('0xb')]('SugarcrmField,\x20%s,\x20%s',_0x203d87,_0x0acc('0xc'));logger[_0x0acc('0xd')](_0x0acc('0xe'),_0x203d87,_0x0acc('0xc'),JSON['stringify'](_0x38ded5));if(_0x38ded5['error']){if(_0x38ded5['error'][_0x0acc('0xf')]===0x1f4){logger[_0x0acc('0x10')](_0x0acc('0x11'),_0x203d87,_0x38ded5[_0x0acc('0x10')][_0x0acc('0x12')]);return _0x23b380(_0x38ded5[_0x0acc('0x10')][_0x0acc('0x12')]);}logger['error'](_0x0acc('0x11'),_0x203d87,_0x38ded5['error'][_0x0acc('0x12')]);return _0x3c7ebe(_0x38ded5[_0x0acc('0x10')][_0x0acc('0x12')]);}else{logger[_0x0acc('0xb')]('SugarcrmField,\x20%s,\x20%s',_0x203d87,_0x0acc('0xc'));_0x3c7ebe(_0x38ded5[_0x0acc('0x13')][_0x0acc('0x12')]);}})['catch'](function(_0x5611c6){logger[_0x0acc('0x10')](_0x0acc('0x11'),_0x203d87,_0x5611c6);_0x23b380(_0x5611c6);});});}
\ No newline at end of file
+var _0xab63=['error','code','message','catch','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s'];(function(_0x24aba8,_0x821685){var _0x330e43=function(_0x25b76e){while(--_0x25b76e){_0x24aba8['push'](_0x24aba8['shift']());}};_0x330e43(++_0x821685);}(_0xab63,0x1e7));var _0x3ab6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xab63[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3ab6('0x0'));var util=require('util');var moment=require(_0x3ab6('0x1'));var BPromise=require(_0x3ab6('0x2'));var rs=require(_0x3ab6('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3ab6('0x4'));var logger=require(_0x3ab6('0x5'))(_0x3ab6('0x6'));var config=require(_0x3ab6('0x7'));var jayson=require(_0x3ab6('0x8'));var client=jayson[_0x3ab6('0x9')][_0x3ab6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x56f3e3,_0x24baa4,_0x1026e5){return new BPromise(function(_0x2aaa87,_0xa67d74){return client['request'](_0x56f3e3,_0x1026e5)[_0x3ab6('0xb')](function(_0x1162dc){logger[_0x3ab6('0xc')](_0x3ab6('0xd'),_0x24baa4,_0x3ab6('0xe'));logger[_0x3ab6('0xf')](_0x3ab6('0x10'),_0x24baa4,_0x3ab6('0xe'),JSON['stringify'](_0x1162dc));if(_0x1162dc[_0x3ab6('0x11')]){if(_0x1162dc[_0x3ab6('0x11')][_0x3ab6('0x12')]===0x1f4){logger['error']('SugarcrmField,\x20%s,\x20%s',_0x24baa4,_0x1162dc['error']['message']);return _0xa67d74(_0x1162dc[_0x3ab6('0x11')][_0x3ab6('0x13')]);}logger[_0x3ab6('0x11')](_0x3ab6('0xd'),_0x24baa4,_0x1162dc[_0x3ab6('0x11')][_0x3ab6('0x13')]);return _0x2aaa87(_0x1162dc[_0x3ab6('0x11')]['message']);}else{logger[_0x3ab6('0xc')](_0x3ab6('0xd'),_0x24baa4,_0x3ab6('0xe'));_0x2aaa87(_0x1162dc['result'][_0x3ab6('0x13')]);}})[_0x3ab6('0x14')](function(_0x2f04bc){logger[_0x3ab6('0x11')](_0x3ab6('0xd'),_0x24baa4,_0x2f04bc);_0xa67d74(_0x2f04bc);});});}
\ No newline at end of file
index e3f9935..2a82e69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fc2=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','/:id/fields','post','create','addConfiguration','put','delete','exports','multer','util','path','connect-timeout','Router'];(function(_0x480a51,_0x3aecea){var _0x19673b=function(_0x28a612){while(--_0x28a612){_0x480a51['push'](_0x480a51['shift']());}};_0x19673b(++_0x3aecea);}(_0x0fc2,0x6e));var _0x20fc=function(_0x41e8d1,_0x9ffbf9){_0x41e8d1=_0x41e8d1-0x0;var _0x1d3c74=_0x0fc2[_0x41e8d1];return _0x1d3c74;};'use strict';var multer=require(_0x20fc('0x0'));var util=require(_0x20fc('0x1'));var path=require(_0x20fc('0x2'));var timeout=require(_0x20fc('0x3'));var express=require('express');var router=express[_0x20fc('0x4')]();var fs_extra=require(_0x20fc('0x5'));var auth=require(_0x20fc('0x6'));var interaction=require(_0x20fc('0x7'));var config=require(_0x20fc('0x8'));var controller=require(_0x20fc('0x9'));router[_0x20fc('0xa')]('/',auth[_0x20fc('0xb')](),controller[_0x20fc('0xc')]);router[_0x20fc('0xa')](_0x20fc('0xd'),auth[_0x20fc('0xb')](),controller[_0x20fc('0xe')]);router[_0x20fc('0xa')](_0x20fc('0xf'),auth[_0x20fc('0xb')](),controller['getConfigurations']);router[_0x20fc('0xa')](_0x20fc('0x10'),auth[_0x20fc('0xb')](),controller['getFields']);router[_0x20fc('0x11')]('/',auth[_0x20fc('0xb')](),controller[_0x20fc('0x12')]);router[_0x20fc('0x11')](_0x20fc('0xf'),auth[_0x20fc('0xb')](),controller[_0x20fc('0x13')]);router[_0x20fc('0x14')]('/:id',auth[_0x20fc('0xb')](),controller['update']);router[_0x20fc('0x15')]('/:id',auth[_0x20fc('0xb')](),controller['destroy']);module[_0x20fc('0x16')]=router;
\ No newline at end of file
+var _0x9e3f=['./intVtigerAccount.controller','get','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','getFields','create','post','addConfiguration','put','update','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x13b625,_0xad1c5e){var _0x56a1de=function(_0x2fafb8){while(--_0x2fafb8){_0x13b625['push'](_0x13b625['shift']());}};_0x56a1de(++_0xad1c5e);}(_0x9e3f,0x1f0));var _0xf9e3=function(_0x39fea2,_0x19abc3){_0x39fea2=_0x39fea2-0x0;var _0x596693=_0x9e3f[_0x39fea2];return _0x596693;};'use strict';var multer=require(_0xf9e3('0x0'));var util=require('util');var path=require(_0xf9e3('0x1'));var timeout=require(_0xf9e3('0x2'));var express=require(_0xf9e3('0x3'));var router=express[_0xf9e3('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xf9e3('0x5'));var interaction=require(_0xf9e3('0x6'));var config=require(_0xf9e3('0x7'));var controller=require(_0xf9e3('0x8'));router[_0xf9e3('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xf9e3('0x9')](_0xf9e3('0xa'),auth[_0xf9e3('0xb')](),controller[_0xf9e3('0xc')]);router['get'](_0xf9e3('0xd'),auth[_0xf9e3('0xb')](),controller[_0xf9e3('0xe')]);router[_0xf9e3('0x9')]('/:id/fields',auth['isAuthenticated'](),controller[_0xf9e3('0xf')]);router['post']('/',auth[_0xf9e3('0xb')](),controller[_0xf9e3('0x10')]);router[_0xf9e3('0x11')](_0xf9e3('0xd'),auth['isAuthenticated'](),controller[_0xf9e3('0x12')]);router[_0xf9e3('0x13')](_0xf9e3('0xa'),auth['isAuthenticated'](),controller[_0xf9e3('0x14')]);router['delete'](_0xf9e3('0xa'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 6840195..91c8758 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd280=['sequelize','exports','STRING'];(function(_0x2b6667,_0x29cf4f){var _0x4a9c0a=function(_0x1239b5){while(--_0x1239b5){_0x2b6667['push'](_0x2b6667['shift']());}};_0x4a9c0a(++_0x29cf4f);}(_0xd280,0xcf));var _0x0d28=function(_0x51b073,_0xf2592b){_0x51b073=_0x51b073-0x0;var _0x44349c=_0xd280[_0x51b073];return _0x44349c;};'use strict';var Sequelize=require(_0x0d28('0x0'));module[_0x0d28('0x1')]={'name':{'type':Sequelize[_0x0d28('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x0d28('0x2')]},'username':{'type':Sequelize[_0x0d28('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x0d28('0x2')],'allowNull':![],'defaultValue':'HelpDesk'},'remoteUri':{'type':Sequelize[_0x0d28('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x0d28('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x940e=['STRING','HelpDesk','sequelize'];(function(_0x3b794c,_0x182065){var _0x3d7e4b=function(_0x7c02fa){while(--_0x7c02fa){_0x3b794c['push'](_0x3b794c['shift']());}};_0x3d7e4b(++_0x182065);}(_0x940e,0xb6));var _0xe940=function(_0x122e9b,_0x391bf4){_0x122e9b=_0x122e9b-0x0;var _0x22c247=_0x940e[_0x122e9b];return _0x22c247;};'use strict';var Sequelize=require(_0xe940('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xe940('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize[_0xe940('0x1')],'allowNull':![],'defaultValue':_0xe940('0x2')},'remoteUri':{'type':Sequelize[_0xe940('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'accessKey':{'type':Sequelize[_0xe940('0x1')],'allowNull':![]}};
\ No newline at end of file
index fdb82e0..4c63e58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2b4=['end','offset','limit','count','set','Content-Range','json','reject','save','then','error','stack','name','send','index','map','VtigerAccount','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge','includeAll','include','findAll','rows','show','params','keys','length','options','find','body','catch','update','destroy','getConfigurations','findOne','VtigerConfiguration','order','Subjects','getSubjects','channel','getDescriptions','create','VtigerField','Descriptions','md5','getFields','username','description','moduleName','remoteUri','accessKey','slice','substring','lastIndexOf','format','%s/webservice.php','GET','getchallenge','POST','login','result','token','describe','sessionName','success','autogenerated','owner','remove','label','startsWith','picklist','picklistValues','value','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','lodash','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','../../components/integrations/configuration','sendStatus','status'];(function(_0x1850ea,_0x4b0708){var _0x4d43d9=function(_0x38d231){while(--_0x38d231){_0x1850ea['push'](_0x1850ea['shift']());}};_0x4d43d9(++_0x4b0708);}(_0xf2b4,0x1cf));var _0x4f2b=function(_0x56f613,_0x1a631c){_0x56f613=_0x56f613-0x0;var _0x4a8ade=_0xf2b4[_0x56f613];return _0x4a8ade;};'use strict';var emlformat=require(_0x4f2b('0x0'));var rimraf=require(_0x4f2b('0x1'));var zipdir=require(_0x4f2b('0x2'));var jsonpatch=require(_0x4f2b('0x3'));var rp=require(_0x4f2b('0x4'));var moment=require(_0x4f2b('0x5'));var BPromise=require(_0x4f2b('0x6'));var Mustache=require(_0x4f2b('0x7'));var util=require('util');var path=require('path');var sox=require(_0x4f2b('0x8'));var csv=require(_0x4f2b('0x9'));var ejs=require(_0x4f2b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4f2b('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x4f2b('0xc'));var toCsv=require('to-csv');var querystring=require(_0x4f2b('0xd'));var Papa=require(_0x4f2b('0xe'));var Redis=require(_0x4f2b('0xf'));var authService=require(_0x4f2b('0x10'));var qs=require(_0x4f2b('0x11'));var as=require(_0x4f2b('0x12'));var hardwareService=require(_0x4f2b('0x13'));var logger=require(_0x4f2b('0x14'))(_0x4f2b('0x15'));var utils=require(_0x4f2b('0x16'));var config=require(_0x4f2b('0x17'));var licenseUtil=require(_0x4f2b('0x18'));var db=require(_0x4f2b('0x19'))['db'];var integrations=require(_0x4f2b('0x1a'));function respondWithStatusCode(_0x30f599,_0x143e32){_0x143e32=_0x143e32||0xcc;return function(_0x28685c){if(_0x28685c){return _0x30f599[_0x4f2b('0x1b')](_0x143e32);}return _0x30f599[_0x4f2b('0x1c')](_0x143e32)[_0x4f2b('0x1d')]();};}function respondWithResult(_0x14d1f0,_0x1b35d5){_0x1b35d5=_0x1b35d5||0xc8;return function(_0xf2e57){if(_0xf2e57){return _0x14d1f0[_0x4f2b('0x1c')](_0x1b35d5)['json'](_0xf2e57);}};}function respondWithFilteredResult(_0x220125,_0x4b1115){return function(_0x57e7ca){if(_0x57e7ca){var _0x4512dc=typeof _0x4b1115[_0x4f2b('0x1e')]==='undefined'&&typeof _0x4b1115[_0x4f2b('0x1f')]==='undefined';var _0xb92f8c=_0x57e7ca[_0x4f2b('0x20')];var _0x2d4b55=_0x4512dc?0x0:_0x4b1115['offset'];var _0x43121c=_0x4512dc?_0x57e7ca[_0x4f2b('0x20')]:_0x4b1115[_0x4f2b('0x1e')]+_0x4b1115[_0x4f2b('0x1f')];var _0x465a8e;if(_0x43121c>=_0xb92f8c){_0x43121c=_0xb92f8c;_0x465a8e=0xc8;}else{_0x465a8e=0xce;}_0x220125[_0x4f2b('0x1c')](_0x465a8e);return _0x220125[_0x4f2b('0x21')](_0x4f2b('0x22'),_0x2d4b55+'-'+_0x43121c+'/'+_0xb92f8c)[_0x4f2b('0x23')](_0x57e7ca);}return null;};}function patchUpdates(_0x1f2a6b){return function(_0x4cd368){try{jsonpatch['apply'](_0x4cd368,_0x1f2a6b,!![]);}catch(_0x4ba593){return BPromise[_0x4f2b('0x24')](_0x4ba593);}return _0x4cd368[_0x4f2b('0x25')]();};}function saveUpdates(_0x3e4f7c,_0x4f5a67){return function(_0xc4692){if(_0xc4692){return _0xc4692['update'](_0x3e4f7c)[_0x4f2b('0x26')](function(_0x23f609){return _0x23f609;});}return null;};}function removeEntity(_0x5620fb,_0x2db3de){return function(_0x374f70){if(_0x374f70){return _0x374f70['destroy']()['then'](function(){_0x5620fb[_0x4f2b('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x502686,_0x5269ca){return function(_0x5ba6c2){if(!_0x5ba6c2){_0x502686['sendStatus'](0x194);}return _0x5ba6c2;};}function handleError(_0x4351e0,_0x5a721c){_0x5a721c=_0x5a721c||0x1f4;return function(_0x79f657){logger[_0x4f2b('0x27')](_0x79f657[_0x4f2b('0x28')]);if(_0x79f657[_0x4f2b('0x29')]){delete _0x79f657[_0x4f2b('0x29')];}_0x4351e0['status'](_0x5a721c)[_0x4f2b('0x2a')](_0x79f657);};}exports[_0x4f2b('0x2b')]=function(_0x50abb6,_0x5dbd05){var _0x1f0fbb={},_0x14ccb7={},_0xb31e49={'count':0x0,'rows':[]};var _0xa70e37=_[_0x4f2b('0x2c')](db[_0x4f2b('0x2d')][_0x4f2b('0x2e')],function(_0x2425bb){return{'name':_0x2425bb[_0x4f2b('0x2f')],'type':_0x2425bb[_0x4f2b('0x30')][_0x4f2b('0x31')]};});_0x14ccb7[_0x4f2b('0x32')]=_[_0x4f2b('0x2c')](_0xa70e37,_0x4f2b('0x29'));_0x14ccb7['query']=_['keys'](_0x50abb6[_0x4f2b('0x33')]);_0x14ccb7['filters']=_[_0x4f2b('0x34')](_0x14ccb7[_0x4f2b('0x32')],_0x14ccb7[_0x4f2b('0x33')]);_0x1f0fbb[_0x4f2b('0x35')]=_['intersection'](_0x14ccb7[_0x4f2b('0x32')],qs[_0x4f2b('0x36')](_0x50abb6[_0x4f2b('0x33')][_0x4f2b('0x36')]));_0x1f0fbb[_0x4f2b('0x35')]=_0x1f0fbb[_0x4f2b('0x35')]['length']?_0x1f0fbb[_0x4f2b('0x35')]:_0x14ccb7[_0x4f2b('0x32')];if(!_0x50abb6['query'][_0x4f2b('0x37')](_0x4f2b('0x38'))){_0x1f0fbb[_0x4f2b('0x1f')]=qs['limit'](_0x50abb6[_0x4f2b('0x33')][_0x4f2b('0x1f')]);_0x1f0fbb[_0x4f2b('0x1e')]=qs[_0x4f2b('0x1e')](_0x50abb6[_0x4f2b('0x33')][_0x4f2b('0x1e')]);}_0x1f0fbb['order']=qs['sort'](_0x50abb6[_0x4f2b('0x33')][_0x4f2b('0x39')]);_0x1f0fbb[_0x4f2b('0x3a')]=qs['filters'](_[_0x4f2b('0x3b')](_0x50abb6['query'],_0x14ccb7[_0x4f2b('0x3c')]),_0xa70e37);if(_0x50abb6['query'][_0x4f2b('0x3d')]){_0x1f0fbb['where']=_['merge'](_0x1f0fbb[_0x4f2b('0x3a')],{'$or':_[_0x4f2b('0x2c')](_0xa70e37,function(_0x45a169){if(_0x45a169['type']!=='VIRTUAL'){var _0x3e69da={};_0x3e69da[_0x45a169['name']]={'$like':'%'+_0x50abb6[_0x4f2b('0x33')]['filter']+'%'};return _0x3e69da;}})});}_0x1f0fbb=_[_0x4f2b('0x3e')]({},_0x1f0fbb,_0x50abb6['options']);var _0x49c85a={'where':_0x1f0fbb[_0x4f2b('0x3a')]};return db[_0x4f2b('0x2d')][_0x4f2b('0x20')](_0x49c85a)[_0x4f2b('0x26')](function(_0xd818e8){_0xb31e49[_0x4f2b('0x20')]=_0xd818e8;if(_0x50abb6['query'][_0x4f2b('0x3f')]){_0x1f0fbb[_0x4f2b('0x40')]=[{'all':!![]}];}return db[_0x4f2b('0x2d')][_0x4f2b('0x41')](_0x1f0fbb);})[_0x4f2b('0x26')](function(_0x1e9d09){_0xb31e49[_0x4f2b('0x42')]=_0x1e9d09;return _0xb31e49;})[_0x4f2b('0x26')](respondWithFilteredResult(_0x5dbd05,_0x1f0fbb))['catch'](handleError(_0x5dbd05,null));};exports[_0x4f2b('0x43')]=function(_0x311a90,_0x1e5319){var _0x1679c7={'raw':![],'where':{'id':_0x311a90[_0x4f2b('0x44')]['id']}},_0x3781ee={};_0x3781ee[_0x4f2b('0x32')]=_['keys'](db[_0x4f2b('0x2d')][_0x4f2b('0x2e')]);_0x3781ee['query']=_[_0x4f2b('0x45')](_0x311a90[_0x4f2b('0x33')]);_0x3781ee['filters']=_['intersection'](_0x3781ee[_0x4f2b('0x32')],_0x3781ee[_0x4f2b('0x33')]);_0x1679c7[_0x4f2b('0x35')]=_[_0x4f2b('0x34')](_0x3781ee[_0x4f2b('0x32')],qs[_0x4f2b('0x36')](_0x311a90[_0x4f2b('0x33')][_0x4f2b('0x36')]));_0x1679c7[_0x4f2b('0x35')]=_0x1679c7[_0x4f2b('0x35')][_0x4f2b('0x46')]?_0x1679c7[_0x4f2b('0x35')]:_0x3781ee[_0x4f2b('0x32')];if(_0x311a90[_0x4f2b('0x33')][_0x4f2b('0x3f')]){_0x1679c7[_0x4f2b('0x40')]=[{'all':!![]}];}_0x1679c7=_[_0x4f2b('0x3e')]({},_0x1679c7,_0x311a90[_0x4f2b('0x47')]);return db['VtigerAccount'][_0x4f2b('0x48')](_0x1679c7)['then'](handleEntityNotFound(_0x1e5319,null))[_0x4f2b('0x26')](respondWithResult(_0x1e5319,null))['catch'](handleError(_0x1e5319,null));};exports['create']=function(_0x5a93d1,_0x4e67dd){return db[_0x4f2b('0x2d')]['create'](_0x5a93d1[_0x4f2b('0x49')],{})[_0x4f2b('0x26')](respondWithResult(_0x4e67dd,0xc9))[_0x4f2b('0x4a')](handleError(_0x4e67dd,null));};exports[_0x4f2b('0x4b')]=function(_0x8d38fa,_0x1d3588){if(_0x8d38fa['body']['id']){delete _0x8d38fa['body']['id'];}return db[_0x4f2b('0x2d')][_0x4f2b('0x48')]({'where':{'id':_0x8d38fa['params']['id']}})[_0x4f2b('0x26')](handleEntityNotFound(_0x1d3588,null))['then'](saveUpdates(_0x8d38fa['body'],null))['then'](respondWithResult(_0x1d3588,null))['catch'](handleError(_0x1d3588,null));};exports[_0x4f2b('0x4c')]=function(_0x22c2b4,_0x349625){return db[_0x4f2b('0x2d')][_0x4f2b('0x48')]({'where':{'id':_0x22c2b4[_0x4f2b('0x44')]['id']}})[_0x4f2b('0x26')](handleEntityNotFound(_0x349625,null))[_0x4f2b('0x26')](removeEntity(_0x349625,null))[_0x4f2b('0x4a')](handleError(_0x349625,null));};exports[_0x4f2b('0x4d')]=function(_0x942d01,_0x5212be,_0x4c162a){var _0x7e55ce={};var _0x274d69={};var _0x1c210b;var _0x218742;return db[_0x4f2b('0x2d')][_0x4f2b('0x4e')]({'where':{'id':_0x942d01[_0x4f2b('0x44')]['id']}})['then'](handleEntityNotFound(_0x5212be,null))[_0x4f2b('0x26')](function(_0x185b29){if(_0x185b29){_0x1c210b=_0x185b29;_0x274d69['model']=_['keys'](db[_0x4f2b('0x4f')][_0x4f2b('0x2e')]);_0x274d69[_0x4f2b('0x33')]=_[_0x4f2b('0x45')](_0x942d01[_0x4f2b('0x33')]);_0x274d69['filters']=_[_0x4f2b('0x34')](_0x274d69['model'],_0x274d69[_0x4f2b('0x33')]);_0x7e55ce[_0x4f2b('0x35')]=_[_0x4f2b('0x34')](_0x274d69[_0x4f2b('0x32')],qs[_0x4f2b('0x36')](_0x942d01[_0x4f2b('0x33')][_0x4f2b('0x36')]));_0x7e55ce[_0x4f2b('0x35')]=_0x7e55ce[_0x4f2b('0x35')][_0x4f2b('0x46')]?_0x7e55ce['attributes']:_0x274d69[_0x4f2b('0x32')];_0x7e55ce[_0x4f2b('0x50')]=qs['sort'](_0x942d01[_0x4f2b('0x33')][_0x4f2b('0x39')]);_0x7e55ce[_0x4f2b('0x3a')]=qs[_0x4f2b('0x3c')](_['pick'](_0x942d01[_0x4f2b('0x33')],_0x274d69[_0x4f2b('0x3c')]));if(_0x942d01['query'][_0x4f2b('0x3d')]){_0x7e55ce[_0x4f2b('0x3a')]=_[_0x4f2b('0x3e')](_0x7e55ce['where'],{'$or':_[_0x4f2b('0x2c')](_0x7e55ce[_0x4f2b('0x35')],function(_0x813295){var _0x1a9483={};_0x1a9483[_0x813295]={'$like':'%'+_0x942d01[_0x4f2b('0x33')][_0x4f2b('0x3d')]+'%'};return _0x1a9483;})});}_0x7e55ce=_['merge']({},_0x7e55ce,_0x942d01['options']);return _0x1c210b[_0x4f2b('0x4d')](_0x7e55ce);}})[_0x4f2b('0x26')](function(_0x26860f){if(_0x26860f){_0x218742=_0x26860f[_0x4f2b('0x46')];if(!_0x942d01[_0x4f2b('0x33')]['hasOwnProperty'](_0x4f2b('0x38'))){_0x7e55ce[_0x4f2b('0x1f')]=qs[_0x4f2b('0x1f')](_0x942d01['query'][_0x4f2b('0x1f')]);_0x7e55ce[_0x4f2b('0x1e')]=qs[_0x4f2b('0x1e')](_0x942d01['query'][_0x4f2b('0x1e')]);}return _0x1c210b[_0x4f2b('0x4d')](_0x7e55ce);}})[_0x4f2b('0x26')](function(_0x3d493d){if(_0x3d493d){return _0x3d493d?{'count':_0x218742,'rows':_0x3d493d}:null;}})[_0x4f2b('0x26')](respondWithResult(_0x5212be,null))[_0x4f2b('0x4a')](handleError(_0x5212be,null));};exports['addConfiguration']=function(_0x59d1f0,_0x4d1dd5,_0x340b3f){if(_0x59d1f0[_0x4f2b('0x49')]['id']){delete _0x59d1f0[_0x4f2b('0x49')]['id'];}return db[_0x4f2b('0x2d')][_0x4f2b('0x4e')]({'where':{'id':_0x59d1f0[_0x4f2b('0x44')]['id']}})[_0x4f2b('0x26')](handleEntityNotFound(_0x4d1dd5,null))[_0x4f2b('0x26')](function(_0x4e7417){if(_0x4e7417){_0x59d1f0[_0x4f2b('0x49')]['AccountId']=_0x4e7417['id'];_0x59d1f0['body'][_0x4f2b('0x51')]=integrations[_0x4f2b('0x52')](_0x59d1f0[_0x4f2b('0x49')][_0x4f2b('0x53')],_0x59d1f0[_0x4f2b('0x49')][_0x4f2b('0x30')]);_0x59d1f0[_0x4f2b('0x49')]['Descriptions']=integrations[_0x4f2b('0x54')](_0x59d1f0[_0x4f2b('0x49')][_0x4f2b('0x53')],_0x59d1f0['body'][_0x4f2b('0x30')]);return db[_0x4f2b('0x4f')][_0x4f2b('0x55')](_0x59d1f0['body'],{'include':[{'model':db[_0x4f2b('0x56')],'as':_0x4f2b('0x51')},{'model':db[_0x4f2b('0x56')],'as':_0x4f2b('0x57')}]});}return null;})[_0x4f2b('0x26')](respondWithResult(_0x4d1dd5,null))[_0x4f2b('0x4a')](handleError(_0x4d1dd5,null));};var md5=require(_0x4f2b('0x58'));exports[_0x4f2b('0x59')]=function(_0x2a6b4d,_0x38be8d,_0x413f3d){var _0x28184f=null;var _0x5835c0=null;var _0x406beb=null;var _0x57286a=null;var _0x6fea61='';return db[_0x4f2b('0x2d')]['findOne']({'where':{'id':_0x2a6b4d[_0x4f2b('0x44')]['id']},'attributes':['id',_0x4f2b('0x29'),_0x4f2b('0x5a'),_0x4f2b('0x5b'),_0x4f2b('0x5c'),_0x4f2b('0x5d'),'serverUrl',_0x4f2b('0x5e')]})[_0x4f2b('0x26')](handleEntityNotFound(_0x38be8d,null))[_0x4f2b('0x26')](function(_0x1f5093){if(_0x1f5093){_0x28184f=_0x1f5093[_0x4f2b('0x5a')];_0x5835c0=_0x1f5093[_0x4f2b('0x5e')];_0x406beb=_0x1f5093[_0x4f2b('0x5c')];_0x6fea61=_0x1f5093[_0x4f2b('0x5d')];var _0x33f6db=_0x6fea61[_0x4f2b('0x5f')](-0x1);if(_0x33f6db==='/'){_0x6fea61=_0x6fea61[_0x4f2b('0x60')](0x0,_0x6fea61[_0x4f2b('0x61')](_0x33f6db));}_0x57286a=util[_0x4f2b('0x62')](_0x4f2b('0x63'),_0x6fea61);var _0x22014d={'method':_0x4f2b('0x64'),'uri':_0x57286a,'qs':{'operation':_0x4f2b('0x65'),'username':_0x1f5093['username']},'json':!![]};return rp(_0x22014d);}})[_0x4f2b('0x26')](function(_0x531c14){if(_0x531c14['success']){var _0x17ad85={'method':_0x4f2b('0x66'),'uri':_0x57286a,'form':{'operation':_0x4f2b('0x67'),'username':_0x28184f,'accessKey':md5(_0x531c14[_0x4f2b('0x68')][_0x4f2b('0x69')]+_0x5835c0)},'json':!![]};return rp(_0x17ad85);}})[_0x4f2b('0x26')](function(_0x9766c6){if(_0x9766c6['success']){var _0x15686a={'method':_0x4f2b('0x64'),'uri':_0x57286a,'qs':{'operation':_0x4f2b('0x6a'),'username':_0x28184f,'sessionName':_0x9766c6[_0x4f2b('0x68')][_0x4f2b('0x6b')],'elementType':_0x406beb},'json':!![]};return rp(_0x15686a);}})[_0x4f2b('0x26')](function(_0x213572){if(_0x213572[_0x4f2b('0x6c')]){var _0x5d7ea0=[_0x4f2b('0x6d'),'reference',_0x4f2b('0x6e')];_[_0x4f2b('0x6f')](_0x213572[_0x4f2b('0x68')][_0x4f2b('0x36')],function(_0x3d9611){return _0x5d7ea0['includes'](_0x3d9611[_0x4f2b('0x30')][_0x4f2b('0x29')]);});_[_0x4f2b('0x6f')](_0x213572[_0x4f2b('0x68')][_0x4f2b('0x36')],function(_0x32112b){return _0x32112b['editable']==='false';});return{'count':_0x213572['result'][_0x4f2b('0x36')]['length'],'rows':_['map'](_0x213572[_0x4f2b('0x68')][_0x4f2b('0x36')],function(_0xccb1d){return{'id':_0xccb1d[_0x4f2b('0x29')],'name':_0xccb1d[_0x4f2b('0x70')],'custom':_[_0x4f2b('0x71')](_0xccb1d[_0x4f2b('0x29')],'cf_')?!![]:![],'options':_0xccb1d[_0x4f2b('0x30')][_0x4f2b('0x29')]===_0x4f2b('0x72')&&_0xccb1d[_0x4f2b('0x30')][_0x4f2b('0x73')]['length']>0x0?_[_0x4f2b('0x2c')](_0xccb1d[_0x4f2b('0x30')][_0x4f2b('0x73')],function(_0x48f8e2){return{'name':_0x48f8e2[_0x4f2b('0x70')],'value':_0x48f8e2[_0x4f2b('0x74')]};}):[]};})};}})['then'](respondWithResult(_0x38be8d,null))['catch'](function(_0x833690){console['log'](_0x4f2b('0x75')+_0x833690);var _0x1e2d91=_0x2a6b4d[_0x4f2b('0x33')][_0x4f2b('0x76')]?0x1f4:_0x833690[_0x4f2b('0x77')]||0x1f4;logger[_0x4f2b('0x27')](_0x4f2b('0x78'),_0x4f2b('0x59'),_0x1e2d91,JSON[_0x4f2b('0x79')](_0x833690));delete _0x833690[_0x4f2b('0x29')];if(_0x1e2d91===0x191){_0x1e2d91=0x190;}_0x38be8d['status'](_0x1e2d91)['send'](_0x2a6b4d['query'][_0x4f2b('0x76')]?{'message':_0x4f2b('0x7a'),'statusCode':_0x833690[_0x4f2b('0x77')]}:_0x833690);});};
\ No newline at end of file
+var _0x6e22=['sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','where','pick','filter','map','VIRTUAL','options','VtigerAccount','include','findAll','rows','show','params','merge','find','catch','body','getConfigurations','findOne','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','VtigerConfiguration','create','VtigerField','md5','getFields','username','description','moduleName','remoteUri','serverUrl','accessKey','slice','substring','format','getchallenge','success','POST','login','result','token','GET','describe','autogenerated','owner','remove','editable','false','label','startsWith','cf_','picklist','picklistValues','log','vTiger\x20error:\x20','statusCode','stringify','test','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path'];(function(_0x5f1013,_0x4f03d4){var _0x20a5bc=function(_0x5e6066){while(--_0x5e6066){_0x5f1013['push'](_0x5f1013['shift']());}};_0x20a5bc(++_0x4f03d4);}(_0x6e22,0xee));var _0x26e2=function(_0x5bb3e6,_0x13ad9b){_0x5bb3e6=_0x5bb3e6-0x0;var _0xbd27e=_0x6e22[_0x5bb3e6];return _0xbd27e;};'use strict';var emlformat=require(_0x26e2('0x0'));var rimraf=require(_0x26e2('0x1'));var zipdir=require(_0x26e2('0x2'));var jsonpatch=require(_0x26e2('0x3'));var rp=require(_0x26e2('0x4'));var moment=require(_0x26e2('0x5'));var BPromise=require(_0x26e2('0x6'));var Mustache=require(_0x26e2('0x7'));var util=require(_0x26e2('0x8'));var path=require(_0x26e2('0x9'));var sox=require(_0x26e2('0xa'));var csv=require(_0x26e2('0xb'));var ejs=require(_0x26e2('0xc'));var fs=require('fs');var fs_extra=require(_0x26e2('0xd'));var _=require(_0x26e2('0xe'));var squel=require(_0x26e2('0xf'));var crypto=require(_0x26e2('0x10'));var jsforce=require(_0x26e2('0x11'));var deskjs=require(_0x26e2('0x12'));var toCsv=require(_0x26e2('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x26e2('0x13'));var authService=require(_0x26e2('0x14'));var qs=require(_0x26e2('0x15'));var as=require(_0x26e2('0x16'));var hardwareService=require(_0x26e2('0x17'));var logger=require(_0x26e2('0x18'))('api');var utils=require(_0x26e2('0x19'));var config=require(_0x26e2('0x1a'));var licenseUtil=require(_0x26e2('0x1b'));var db=require(_0x26e2('0x1c'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x629bcf,_0x4904c3){_0x4904c3=_0x4904c3||0xcc;return function(_0x162db3){if(_0x162db3){return _0x629bcf['sendStatus'](_0x4904c3);}return _0x629bcf[_0x26e2('0x1d')](_0x4904c3)[_0x26e2('0x1e')]();};}function respondWithResult(_0x244091,_0x432cb0){_0x432cb0=_0x432cb0||0xc8;return function(_0x10611b){if(_0x10611b){return _0x244091[_0x26e2('0x1d')](_0x432cb0)[_0x26e2('0x1f')](_0x10611b);}};}function respondWithFilteredResult(_0x8a9974,_0x1488ef){return function(_0x3c0a88){if(_0x3c0a88){var _0x2f0ff2=typeof _0x1488ef['offset']===_0x26e2('0x20')&&typeof _0x1488ef[_0x26e2('0x21')]==='undefined';var _0x5a08a2=_0x3c0a88[_0x26e2('0x22')];var _0x34a273=_0x2f0ff2?0x0:_0x1488ef[_0x26e2('0x23')];var _0x50e249=_0x2f0ff2?_0x3c0a88[_0x26e2('0x22')]:_0x1488ef[_0x26e2('0x23')]+_0x1488ef['limit'];var _0x573bd2;if(_0x50e249>=_0x5a08a2){_0x50e249=_0x5a08a2;_0x573bd2=0xc8;}else{_0x573bd2=0xce;}_0x8a9974['status'](_0x573bd2);return _0x8a9974['set'](_0x26e2('0x24'),_0x34a273+'-'+_0x50e249+'/'+_0x5a08a2)[_0x26e2('0x1f')](_0x3c0a88);}return null;};}function patchUpdates(_0x271fcc){return function(_0x5154ad){try{jsonpatch[_0x26e2('0x25')](_0x5154ad,_0x271fcc,!![]);}catch(_0xdd7f76){return BPromise[_0x26e2('0x26')](_0xdd7f76);}return _0x5154ad[_0x26e2('0x27')]();};}function saveUpdates(_0x578ef7,_0x1338d4){return function(_0x20fccd){if(_0x20fccd){return _0x20fccd[_0x26e2('0x28')](_0x578ef7)[_0x26e2('0x29')](function(_0x36670f){return _0x36670f;});}return null;};}function removeEntity(_0x2ddf3a,_0x2b5bc1){return function(_0x50e72b){if(_0x50e72b){return _0x50e72b[_0x26e2('0x2a')]()['then'](function(){_0x2ddf3a[_0x26e2('0x1d')](0xcc)[_0x26e2('0x1e')]();});}};}function handleEntityNotFound(_0x42723a,_0xf2d0df){return function(_0x4ed8e5){if(!_0x4ed8e5){_0x42723a[_0x26e2('0x2b')](0x194);}return _0x4ed8e5;};}function handleError(_0x4bccaa,_0x32cf63){_0x32cf63=_0x32cf63||0x1f4;return function(_0x54af0d){logger[_0x26e2('0x2c')](_0x54af0d[_0x26e2('0x2d')]);if(_0x54af0d[_0x26e2('0x2e')]){delete _0x54af0d[_0x26e2('0x2e')];}_0x4bccaa[_0x26e2('0x1d')](_0x32cf63)[_0x26e2('0x2f')](_0x54af0d);};}exports[_0x26e2('0x30')]=function(_0x5bf4b5,_0x585e7f){var _0x3bb217={},_0x3518de={},_0x320ed0={'count':0x0,'rows':[]};var _0x247f75=_['map'](db['VtigerAccount'][_0x26e2('0x31')],function(_0x33d165){return{'name':_0x33d165[_0x26e2('0x32')],'type':_0x33d165[_0x26e2('0x33')][_0x26e2('0x34')]};});_0x3518de[_0x26e2('0x35')]=_['map'](_0x247f75,_0x26e2('0x2e'));_0x3518de['query']=_[_0x26e2('0x36')](_0x5bf4b5[_0x26e2('0x37')]);_0x3518de[_0x26e2('0x38')]=_[_0x26e2('0x39')](_0x3518de['model'],_0x3518de[_0x26e2('0x37')]);_0x3bb217['attributes']=_[_0x26e2('0x39')](_0x3518de[_0x26e2('0x35')],qs[_0x26e2('0x3a')](_0x5bf4b5['query'][_0x26e2('0x3a')]));_0x3bb217['attributes']=_0x3bb217[_0x26e2('0x3b')][_0x26e2('0x3c')]?_0x3bb217[_0x26e2('0x3b')]:_0x3518de[_0x26e2('0x35')];if(!_0x5bf4b5[_0x26e2('0x37')][_0x26e2('0x3d')](_0x26e2('0x3e'))){_0x3bb217['limit']=qs[_0x26e2('0x21')](_0x5bf4b5[_0x26e2('0x37')][_0x26e2('0x21')]);_0x3bb217['offset']=qs[_0x26e2('0x23')](_0x5bf4b5[_0x26e2('0x37')][_0x26e2('0x23')]);}_0x3bb217['order']=qs['sort'](_0x5bf4b5[_0x26e2('0x37')]['sort']);_0x3bb217[_0x26e2('0x3f')]=qs['filters'](_[_0x26e2('0x40')](_0x5bf4b5['query'],_0x3518de[_0x26e2('0x38')]),_0x247f75);if(_0x5bf4b5[_0x26e2('0x37')][_0x26e2('0x41')]){_0x3bb217[_0x26e2('0x3f')]=_['merge'](_0x3bb217[_0x26e2('0x3f')],{'$or':_[_0x26e2('0x42')](_0x247f75,function(_0x437cb3){if(_0x437cb3[_0x26e2('0x33')]!==_0x26e2('0x43')){var _0x2c4927={};_0x2c4927[_0x437cb3[_0x26e2('0x2e')]]={'$like':'%'+_0x5bf4b5[_0x26e2('0x37')][_0x26e2('0x41')]+'%'};return _0x2c4927;}})});}_0x3bb217=_['merge']({},_0x3bb217,_0x5bf4b5[_0x26e2('0x44')]);var _0x454f7e={'where':_0x3bb217[_0x26e2('0x3f')]};return db[_0x26e2('0x45')][_0x26e2('0x22')](_0x454f7e)['then'](function(_0x804221){_0x320ed0[_0x26e2('0x22')]=_0x804221;if(_0x5bf4b5[_0x26e2('0x37')]['includeAll']){_0x3bb217[_0x26e2('0x46')]=[{'all':!![]}];}return db[_0x26e2('0x45')][_0x26e2('0x47')](_0x3bb217);})[_0x26e2('0x29')](function(_0x11521d){_0x320ed0[_0x26e2('0x48')]=_0x11521d;return _0x320ed0;})[_0x26e2('0x29')](respondWithFilteredResult(_0x585e7f,_0x3bb217))['catch'](handleError(_0x585e7f,null));};exports[_0x26e2('0x49')]=function(_0x15cce5,_0x290a91){var _0x102fa9={'raw':![],'where':{'id':_0x15cce5[_0x26e2('0x4a')]['id']}},_0x2de198={};_0x2de198[_0x26e2('0x35')]=_[_0x26e2('0x36')](db[_0x26e2('0x45')][_0x26e2('0x31')]);_0x2de198[_0x26e2('0x37')]=_['keys'](_0x15cce5[_0x26e2('0x37')]);_0x2de198[_0x26e2('0x38')]=_['intersection'](_0x2de198['model'],_0x2de198[_0x26e2('0x37')]);_0x102fa9[_0x26e2('0x3b')]=_[_0x26e2('0x39')](_0x2de198[_0x26e2('0x35')],qs[_0x26e2('0x3a')](_0x15cce5['query'][_0x26e2('0x3a')]));_0x102fa9[_0x26e2('0x3b')]=_0x102fa9[_0x26e2('0x3b')]['length']?_0x102fa9[_0x26e2('0x3b')]:_0x2de198[_0x26e2('0x35')];if(_0x15cce5[_0x26e2('0x37')]['includeAll']){_0x102fa9[_0x26e2('0x46')]=[{'all':!![]}];}_0x102fa9=_[_0x26e2('0x4b')]({},_0x102fa9,_0x15cce5[_0x26e2('0x44')]);return db['VtigerAccount'][_0x26e2('0x4c')](_0x102fa9)[_0x26e2('0x29')](handleEntityNotFound(_0x290a91,null))[_0x26e2('0x29')](respondWithResult(_0x290a91,null))[_0x26e2('0x4d')](handleError(_0x290a91,null));};exports['create']=function(_0x5f35f3,_0xba0802){return db[_0x26e2('0x45')]['create'](_0x5f35f3[_0x26e2('0x4e')],{})['then'](respondWithResult(_0xba0802,0xc9))['catch'](handleError(_0xba0802,null));};exports['update']=function(_0x26b704,_0x20bf38){if(_0x26b704[_0x26e2('0x4e')]['id']){delete _0x26b704[_0x26e2('0x4e')]['id'];}return db[_0x26e2('0x45')][_0x26e2('0x4c')]({'where':{'id':_0x26b704[_0x26e2('0x4a')]['id']}})[_0x26e2('0x29')](handleEntityNotFound(_0x20bf38,null))[_0x26e2('0x29')](saveUpdates(_0x26b704[_0x26e2('0x4e')],null))['then'](respondWithResult(_0x20bf38,null))[_0x26e2('0x4d')](handleError(_0x20bf38,null));};exports[_0x26e2('0x2a')]=function(_0x29d1b1,_0x29b9b9){return db[_0x26e2('0x45')][_0x26e2('0x4c')]({'where':{'id':_0x29d1b1['params']['id']}})[_0x26e2('0x29')](handleEntityNotFound(_0x29b9b9,null))['then'](removeEntity(_0x29b9b9,null))[_0x26e2('0x4d')](handleError(_0x29b9b9,null));};exports[_0x26e2('0x4f')]=function(_0x246965,_0x219337,_0x595c0c){var _0x840004={};var _0xc223c9={};var _0x5ec546;var _0x88912f;return db[_0x26e2('0x45')][_0x26e2('0x50')]({'where':{'id':_0x246965[_0x26e2('0x4a')]['id']}})[_0x26e2('0x29')](handleEntityNotFound(_0x219337,null))['then'](function(_0x5ec51c){if(_0x5ec51c){_0x5ec546=_0x5ec51c;_0xc223c9[_0x26e2('0x35')]=_[_0x26e2('0x36')](db['VtigerConfiguration']['rawAttributes']);_0xc223c9[_0x26e2('0x37')]=_[_0x26e2('0x36')](_0x246965[_0x26e2('0x37')]);_0xc223c9[_0x26e2('0x38')]=_['intersection'](_0xc223c9[_0x26e2('0x35')],_0xc223c9['query']);_0x840004[_0x26e2('0x3b')]=_[_0x26e2('0x39')](_0xc223c9[_0x26e2('0x35')],qs[_0x26e2('0x3a')](_0x246965[_0x26e2('0x37')][_0x26e2('0x3a')]));_0x840004[_0x26e2('0x3b')]=_0x840004['attributes'][_0x26e2('0x3c')]?_0x840004[_0x26e2('0x3b')]:_0xc223c9['model'];_0x840004['order']=qs['sort'](_0x246965[_0x26e2('0x37')]['sort']);_0x840004['where']=qs['filters'](_[_0x26e2('0x40')](_0x246965['query'],_0xc223c9[_0x26e2('0x38')]));if(_0x246965[_0x26e2('0x37')]['filter']){_0x840004['where']=_[_0x26e2('0x4b')](_0x840004['where'],{'$or':_['map'](_0x840004[_0x26e2('0x3b')],function(_0xb5cf63){var _0x580baa={};_0x580baa[_0xb5cf63]={'$like':'%'+_0x246965[_0x26e2('0x37')][_0x26e2('0x41')]+'%'};return _0x580baa;})});}_0x840004=_[_0x26e2('0x4b')]({},_0x840004,_0x246965[_0x26e2('0x44')]);return _0x5ec546['getConfigurations'](_0x840004);}})[_0x26e2('0x29')](function(_0xfb9706){if(_0xfb9706){_0x88912f=_0xfb9706[_0x26e2('0x3c')];if(!_0x246965[_0x26e2('0x37')]['hasOwnProperty'](_0x26e2('0x3e'))){_0x840004[_0x26e2('0x21')]=qs[_0x26e2('0x21')](_0x246965[_0x26e2('0x37')]['limit']);_0x840004['offset']=qs[_0x26e2('0x23')](_0x246965[_0x26e2('0x37')][_0x26e2('0x23')]);}return _0x5ec546[_0x26e2('0x4f')](_0x840004);}})[_0x26e2('0x29')](function(_0x244630){if(_0x244630){return _0x244630?{'count':_0x88912f,'rows':_0x244630}:null;}})['then'](respondWithResult(_0x219337,null))['catch'](handleError(_0x219337,null));};exports['addConfiguration']=function(_0x21ac35,_0x54fa4f,_0x30ecb9){if(_0x21ac35[_0x26e2('0x4e')]['id']){delete _0x21ac35[_0x26e2('0x4e')]['id'];}return db[_0x26e2('0x45')]['findOne']({'where':{'id':_0x21ac35[_0x26e2('0x4a')]['id']}})[_0x26e2('0x29')](handleEntityNotFound(_0x54fa4f,null))[_0x26e2('0x29')](function(_0x40eefe){if(_0x40eefe){_0x21ac35[_0x26e2('0x4e')][_0x26e2('0x51')]=_0x40eefe['id'];_0x21ac35[_0x26e2('0x4e')][_0x26e2('0x52')]=integrations[_0x26e2('0x53')](_0x21ac35[_0x26e2('0x4e')][_0x26e2('0x54')],_0x21ac35[_0x26e2('0x4e')][_0x26e2('0x33')]);_0x21ac35[_0x26e2('0x4e')][_0x26e2('0x55')]=integrations[_0x26e2('0x56')](_0x21ac35[_0x26e2('0x4e')][_0x26e2('0x54')],_0x21ac35[_0x26e2('0x4e')]['type']);return db[_0x26e2('0x57')][_0x26e2('0x58')](_0x21ac35['body'],{'include':[{'model':db[_0x26e2('0x59')],'as':_0x26e2('0x52')},{'model':db['VtigerField'],'as':'Descriptions'}]});}return null;})[_0x26e2('0x29')](respondWithResult(_0x54fa4f,null))[_0x26e2('0x4d')](handleError(_0x54fa4f,null));};var md5=require(_0x26e2('0x5a'));exports[_0x26e2('0x5b')]=function(_0x2db70c,_0x426d83,_0x85ce0f){var _0x12aa75=null;var _0x5492aa=null;var _0x3cf39b=null;var _0x136fa9=null;var _0x395f4b='';return db[_0x26e2('0x45')][_0x26e2('0x50')]({'where':{'id':_0x2db70c[_0x26e2('0x4a')]['id']},'attributes':['id',_0x26e2('0x2e'),_0x26e2('0x5c'),_0x26e2('0x5d'),_0x26e2('0x5e'),_0x26e2('0x5f'),_0x26e2('0x60'),_0x26e2('0x61')]})[_0x26e2('0x29')](handleEntityNotFound(_0x426d83,null))['then'](function(_0x3d70eb){if(_0x3d70eb){_0x12aa75=_0x3d70eb[_0x26e2('0x5c')];_0x5492aa=_0x3d70eb[_0x26e2('0x61')];_0x3cf39b=_0x3d70eb[_0x26e2('0x5e')];_0x395f4b=_0x3d70eb['remoteUri'];var _0x57b329=_0x395f4b[_0x26e2('0x62')](-0x1);if(_0x57b329==='/'){_0x395f4b=_0x395f4b[_0x26e2('0x63')](0x0,_0x395f4b['lastIndexOf'](_0x57b329));}_0x136fa9=util[_0x26e2('0x64')]('%s/webservice.php',_0x395f4b);var _0xf57b62={'method':'GET','uri':_0x136fa9,'qs':{'operation':_0x26e2('0x65'),'username':_0x3d70eb[_0x26e2('0x5c')]},'json':!![]};return rp(_0xf57b62);}})[_0x26e2('0x29')](function(_0xf123a9){if(_0xf123a9[_0x26e2('0x66')]){var _0x287613={'method':_0x26e2('0x67'),'uri':_0x136fa9,'form':{'operation':_0x26e2('0x68'),'username':_0x12aa75,'accessKey':md5(_0xf123a9[_0x26e2('0x69')][_0x26e2('0x6a')]+_0x5492aa)},'json':!![]};return rp(_0x287613);}})[_0x26e2('0x29')](function(_0xc8699b){if(_0xc8699b['success']){var _0x284b1e={'method':_0x26e2('0x6b'),'uri':_0x136fa9,'qs':{'operation':_0x26e2('0x6c'),'username':_0x12aa75,'sessionName':_0xc8699b[_0x26e2('0x69')]['sessionName'],'elementType':_0x3cf39b},'json':!![]};return rp(_0x284b1e);}})['then'](function(_0x3bc6ef){if(_0x3bc6ef[_0x26e2('0x66')]){var _0x416323=[_0x26e2('0x6d'),'reference',_0x26e2('0x6e')];_[_0x26e2('0x6f')](_0x3bc6ef[_0x26e2('0x69')]['fields'],function(_0x22cd41){return _0x416323['includes'](_0x22cd41[_0x26e2('0x33')]['name']);});_['remove'](_0x3bc6ef[_0x26e2('0x69')][_0x26e2('0x3a')],function(_0x52b6c4){return _0x52b6c4[_0x26e2('0x70')]===_0x26e2('0x71');});return{'count':_0x3bc6ef[_0x26e2('0x69')]['fields'][_0x26e2('0x3c')],'rows':_[_0x26e2('0x42')](_0x3bc6ef[_0x26e2('0x69')][_0x26e2('0x3a')],function(_0x2044bc){return{'id':_0x2044bc['name'],'name':_0x2044bc[_0x26e2('0x72')],'custom':_[_0x26e2('0x73')](_0x2044bc[_0x26e2('0x2e')],_0x26e2('0x74'))?!![]:![],'options':_0x2044bc['type'][_0x26e2('0x2e')]===_0x26e2('0x75')&&_0x2044bc[_0x26e2('0x33')][_0x26e2('0x76')][_0x26e2('0x3c')]>0x0?_[_0x26e2('0x42')](_0x2044bc[_0x26e2('0x33')][_0x26e2('0x76')],function(_0xaeecae){return{'name':_0xaeecae[_0x26e2('0x72')],'value':_0xaeecae['value']};}):[]};})};}})[_0x26e2('0x29')](respondWithResult(_0x426d83,null))[_0x26e2('0x4d')](function(_0x5479ae){console[_0x26e2('0x77')](_0x26e2('0x78')+_0x5479ae);var _0x55e762=_0x2db70c[_0x26e2('0x37')]['test']?0x1f4:_0x5479ae[_0x26e2('0x79')]||0x1f4;logger[_0x26e2('0x2c')]('getFields,\x20%s,\x20%s,\x20%s',_0x26e2('0x5b'),_0x55e762,JSON[_0x26e2('0x7a')](_0x5479ae));delete _0x5479ae[_0x26e2('0x2e')];if(_0x55e762===0x191){_0x55e762=0x190;}_0x426d83[_0x26e2('0x1d')](_0x55e762)[_0x26e2('0x2f')](_0x2db70c[_0x26e2('0x37')][_0x26e2('0x7b')]?{'message':'Wrong\x20credentials','statusCode':_0x5479ae[_0x26e2('0x79')]}:_0x5479ae);});};
\ No newline at end of file
index d40a4c7..b56fa10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b6f=['exports','define','VtigerAccount','int_vtiger_accounts','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment'];(function(_0x235217,_0x4c7c01){var _0x59da3a=function(_0x332cb7){while(--_0x332cb7){_0x235217['push'](_0x235217['shift']());}};_0x59da3a(++_0x4c7c01);}(_0x3b6f,0x124));var _0xf3b6=function(_0x34d967,_0x53f169){_0x34d967=_0x34d967-0x0;var _0x2e7654=_0x3b6f[_0x34d967];return _0x2e7654;};'use strict';var _=require(_0xf3b6('0x0'));var util=require(_0xf3b6('0x1'));var logger=require(_0xf3b6('0x2'))(_0xf3b6('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xf3b6('0x4'));var fs=require('fs');var path=require(_0xf3b6('0x5'));var rimraf=require(_0xf3b6('0x6'));var config=require(_0xf3b6('0x7'));var attributes=require('./intVtigerAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0xf3b6('0x8')]=function(_0x2e53fa,_0x2581f2){return _0x2e53fa[_0xf3b6('0x9')](_0xf3b6('0xa'),attributes,{'tableName':_0xf3b6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3b1a=['exports','define','VtigerAccount','int_vtiger_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intVtigerAccount.attributes'];(function(_0x1e76ca,_0x44517c){var _0x548150=function(_0x34ad49){while(--_0x34ad49){_0x1e76ca['push'](_0x1e76ca['shift']());}};_0x548150(++_0x44517c);}(_0x3b1a,0x9e));var _0xa3b1=function(_0x5cf8bb,_0x462e9c){_0x5cf8bb=_0x5cf8bb-0x0;var _0x28cc44=_0x3b1a[_0x5cf8bb];return _0x28cc44;};'use strict';var _=require(_0xa3b1('0x0'));var util=require(_0xa3b1('0x1'));var logger=require(_0xa3b1('0x2'))(_0xa3b1('0x3'));var moment=require(_0xa3b1('0x4'));var BPromise=require(_0xa3b1('0x5'));var rp=require(_0xa3b1('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa3b1('0x7'));var config=require(_0xa3b1('0x8'));var attributes=require(_0xa3b1('0x9'));var integrations=require('../../components/integrations/configuration');module[_0xa3b1('0xa')]=function(_0x1c2c61,_0x17f30e){return _0x1c2c61[_0xa3b1('0xb')](_0xa3b1('0xc'),attributes,{'tableName':_0xa3b1('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 55efbaa..7e9561c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb688=['request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','VtigerAccount','findAll','options','where','attributes','limit','include','map','model','GetVtigerAccount','stringify','ShowVtigerAccount','find','raw','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VtigerAccount,\x20%s,\x20%s'];(function(_0x17b0d4,_0x377add){var _0x2d02c7=function(_0x56e627){while(--_0x56e627){_0x17b0d4['push'](_0x17b0d4['shift']());}};_0x2d02c7(++_0x377add);}(_0xb688,0xcf));var _0x8b68=function(_0x3d5678,_0x2dfc54){_0x3d5678=_0x3d5678-0x0;var _0x39dfed=_0xb688[_0x3d5678];return _0x39dfed;};'use strict';var _=require('lodash');var util=require(_0x8b68('0x0'));var moment=require(_0x8b68('0x1'));var BPromise=require(_0x8b68('0x2'));var rs=require(_0x8b68('0x3'));var fs=require('fs');var Redis=require(_0x8b68('0x4'));var db=require(_0x8b68('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8b68('0x6'))(_0x8b68('0x7'));var config=require(_0x8b68('0x8'));var jayson=require(_0x8b68('0x9'));var client=jayson['client'][_0x8b68('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x57ee56,_0x37677d,_0x2bbffd){return new BPromise(function(_0x130892,_0xa5571b){return client[_0x8b68('0xb')](_0x57ee56,_0x2bbffd)[_0x8b68('0xc')](function(_0x261753){logger[_0x8b68('0xd')](_0x8b68('0xe'),_0x37677d,_0x8b68('0xf'));logger[_0x8b68('0x10')](_0x8b68('0x11'),_0x37677d,_0x8b68('0xf'),JSON['stringify'](_0x261753));if(_0x261753[_0x8b68('0x12')]){if(_0x261753[_0x8b68('0x12')][_0x8b68('0x13')]===0x1f4){logger[_0x8b68('0x12')](_0x8b68('0xe'),_0x37677d,_0x261753[_0x8b68('0x12')][_0x8b68('0x14')]);return _0xa5571b(_0x261753[_0x8b68('0x12')][_0x8b68('0x14')]);}logger['error'](_0x8b68('0xe'),_0x37677d,_0x261753['error']['message']);return _0x130892(_0x261753[_0x8b68('0x12')][_0x8b68('0x14')]);}else{logger[_0x8b68('0xd')]('VtigerAccount,\x20%s,\x20%s',_0x37677d,'request\x20sent');_0x130892(_0x261753[_0x8b68('0x15')]['message']);}})[_0x8b68('0x16')](function(_0xb44923){logger[_0x8b68('0x12')](_0x8b68('0xe'),_0x37677d,_0xb44923);_0xa5571b(_0xb44923);});});}exports['GetVtigerAccount']=function(_0xd17693){var _0x203dd4=this;return new Promise(function(_0x4a68c7,_0x42b3bd){return db[_0x8b68('0x17')][_0x8b68('0x18')]({'raw':_0xd17693[_0x8b68('0x19')]?_0xd17693[_0x8b68('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0xd17693[_0x8b68('0x19')]?_0xd17693[_0x8b68('0x19')][_0x8b68('0x1a')]||null:null,'attributes':_0xd17693[_0x8b68('0x19')]?_0xd17693[_0x8b68('0x19')][_0x8b68('0x1b')]||null:null,'limit':_0xd17693['options']?_0xd17693['options'][_0x8b68('0x1c')]||null:null,'include':_0xd17693['options']?_0xd17693[_0x8b68('0x19')][_0x8b68('0x1d')]?_[_0x8b68('0x1e')](_0xd17693[_0x8b68('0x19')][_0x8b68('0x1d')],function(_0x173524){return{'model':db[_0x173524['model']],'as':_0x173524['as'],'attributes':_0x173524[_0x8b68('0x1b')],'include':_0x173524[_0x8b68('0x1d')]?_['map'](_0x173524[_0x8b68('0x1d')],function(_0x3cf8d2){return{'model':db[_0x3cf8d2[_0x8b68('0x1f')]],'as':_0x3cf8d2['as'],'attributes':_0x3cf8d2['attributes'],'include':_0x3cf8d2['include']?_['map'](_0x3cf8d2[_0x8b68('0x1d')],function(_0x448e43){return{'model':db[_0x448e43[_0x8b68('0x1f')]],'as':_0x448e43['as'],'attributes':_0x448e43['attributes']};}):[]};}):[]};}):[]:[]})[_0x8b68('0xc')](function(_0x53aaa2){logger['info'](_0x8b68('0x20'),_0xd17693);logger['debug'](_0x8b68('0x20'),_0xd17693,JSON[_0x8b68('0x21')](_0x53aaa2));_0x4a68c7(_0x53aaa2);})['catch'](function(_0x494ce4){logger[_0x8b68('0x12')](_0x8b68('0x20'),_0x494ce4[_0x8b68('0x14')],_0xd17693);_0x42b3bd(_0x203dd4[_0x8b68('0x12')](0x1f4,_0x494ce4[_0x8b68('0x14')]));});});};exports[_0x8b68('0x22')]=function(_0x460c37){var _0x5b7ed1=this;return new Promise(function(_0x3b6d1b,_0x50a1e9){return db[_0x8b68('0x17')][_0x8b68('0x23')]({'raw':_0x460c37['options']?_0x460c37[_0x8b68('0x19')][_0x8b68('0x24')]===undefined?!![]:![]:!![],'where':_0x460c37[_0x8b68('0x19')]?_0x460c37['options']['where']||null:null,'attributes':_0x460c37[_0x8b68('0x19')]?_0x460c37[_0x8b68('0x19')][_0x8b68('0x1b')]||null:null,'include':_0x460c37[_0x8b68('0x19')]?_0x460c37[_0x8b68('0x19')][_0x8b68('0x1d')]?_[_0x8b68('0x1e')](_0x460c37[_0x8b68('0x19')][_0x8b68('0x1d')],function(_0x7fe301){return{'model':db[_0x7fe301[_0x8b68('0x1f')]],'as':_0x7fe301['as'],'attributes':_0x7fe301[_0x8b68('0x1b')],'include':_0x7fe301[_0x8b68('0x1d')]?_[_0x8b68('0x1e')](_0x7fe301[_0x8b68('0x1d')],function(_0x151277){return{'model':db[_0x151277[_0x8b68('0x1f')]],'as':_0x151277['as'],'attributes':_0x151277[_0x8b68('0x1b')],'include':_0x151277[_0x8b68('0x1d')]?_[_0x8b68('0x1e')](_0x151277[_0x8b68('0x1d')],function(_0x43b971){return{'model':db[_0x43b971['model']],'as':_0x43b971['as'],'attributes':_0x43b971['attributes']};}):[]};}):[]};}):[]:[]})[_0x8b68('0xc')](function(_0x262d6c){logger[_0x8b68('0xd')](_0x8b68('0x22'),_0x460c37);logger[_0x8b68('0x10')](_0x8b68('0x22'),_0x460c37,JSON[_0x8b68('0x21')](_0x262d6c));_0x3b6d1b(_0x262d6c);})[_0x8b68('0x16')](function(_0x5b628e){logger[_0x8b68('0x12')](_0x8b68('0x22'),_0x5b628e[_0x8b68('0x14')],_0x460c37);_0x50a1e9(_0x5b7ed1[_0x8b68('0x12')](0x1f4,_0x5b628e[_0x8b68('0x14')]));});});};
\ No newline at end of file
+var _0xd914=['raw','where','attributes','limit','include','map','model','then','ShowVtigerAccount','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetVtigerAccount','VtigerAccount','options'];(function(_0x18fb16,_0x45edbc){var _0x147b0d=function(_0x5b1b00){while(--_0x5b1b00){_0x18fb16['push'](_0x18fb16['shift']());}};_0x147b0d(++_0x45edbc);}(_0xd914,0x17f));var _0x4d91=function(_0x229128,_0x273558){_0x229128=_0x229128-0x0;var _0x1875b9=_0xd914[_0x229128];return _0x1875b9;};'use strict';var _=require(_0x4d91('0x0'));var util=require(_0x4d91('0x1'));var moment=require('moment');var BPromise=require(_0x4d91('0x2'));var rs=require(_0x4d91('0x3'));var fs=require('fs');var Redis=require(_0x4d91('0x4'));var db=require(_0x4d91('0x5'))['db'];var utils=require(_0x4d91('0x6'));var logger=require(_0x4d91('0x7'))('rpc');var config=require(_0x4d91('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x4d91('0x9')][_0x4d91('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x175ce3,_0x27c0d5,_0x22f2a4){return new BPromise(function(_0x150767,_0x3016c0){return client[_0x4d91('0xb')](_0x175ce3,_0x22f2a4)['then'](function(_0x37bde4){logger[_0x4d91('0xc')](_0x4d91('0xd'),_0x27c0d5,_0x4d91('0xe'));logger[_0x4d91('0xf')](_0x4d91('0x10'),_0x27c0d5,'request\x20sent',JSON['stringify'](_0x37bde4));if(_0x37bde4[_0x4d91('0x11')]){if(_0x37bde4[_0x4d91('0x11')][_0x4d91('0x12')]===0x1f4){logger[_0x4d91('0x11')](_0x4d91('0xd'),_0x27c0d5,_0x37bde4[_0x4d91('0x11')]['message']);return _0x3016c0(_0x37bde4['error'][_0x4d91('0x13')]);}logger[_0x4d91('0x11')](_0x4d91('0xd'),_0x27c0d5,_0x37bde4[_0x4d91('0x11')][_0x4d91('0x13')]);return _0x150767(_0x37bde4[_0x4d91('0x11')][_0x4d91('0x13')]);}else{logger['info'](_0x4d91('0xd'),_0x27c0d5,_0x4d91('0xe'));_0x150767(_0x37bde4[_0x4d91('0x14')][_0x4d91('0x13')]);}})[_0x4d91('0x15')](function(_0x554ca8){logger[_0x4d91('0x11')](_0x4d91('0xd'),_0x27c0d5,_0x554ca8);_0x3016c0(_0x554ca8);});});}exports[_0x4d91('0x16')]=function(_0x44b9a7){var _0x4cfa40=this;return new Promise(function(_0x350e23,_0x3b579b){return db[_0x4d91('0x17')]['findAll']({'raw':_0x44b9a7[_0x4d91('0x18')]?_0x44b9a7[_0x4d91('0x18')][_0x4d91('0x19')]===undefined?!![]:![]:!![],'where':_0x44b9a7[_0x4d91('0x18')]?_0x44b9a7[_0x4d91('0x18')][_0x4d91('0x1a')]||null:null,'attributes':_0x44b9a7[_0x4d91('0x18')]?_0x44b9a7[_0x4d91('0x18')][_0x4d91('0x1b')]||null:null,'limit':_0x44b9a7[_0x4d91('0x18')]?_0x44b9a7['options'][_0x4d91('0x1c')]||null:null,'include':_0x44b9a7['options']?_0x44b9a7['options'][_0x4d91('0x1d')]?_[_0x4d91('0x1e')](_0x44b9a7[_0x4d91('0x18')][_0x4d91('0x1d')],function(_0x7d8cbf){return{'model':db[_0x7d8cbf[_0x4d91('0x1f')]],'as':_0x7d8cbf['as'],'attributes':_0x7d8cbf[_0x4d91('0x1b')],'include':_0x7d8cbf[_0x4d91('0x1d')]?_['map'](_0x7d8cbf['include'],function(_0x1ee6b3){return{'model':db[_0x1ee6b3[_0x4d91('0x1f')]],'as':_0x1ee6b3['as'],'attributes':_0x1ee6b3[_0x4d91('0x1b')],'include':_0x1ee6b3[_0x4d91('0x1d')]?_[_0x4d91('0x1e')](_0x1ee6b3[_0x4d91('0x1d')],function(_0x14bdb4){return{'model':db[_0x14bdb4['model']],'as':_0x14bdb4['as'],'attributes':_0x14bdb4[_0x4d91('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x4d91('0x20')](function(_0x12ac74){logger['info']('GetVtigerAccount',_0x44b9a7);logger[_0x4d91('0xf')](_0x4d91('0x16'),_0x44b9a7,JSON['stringify'](_0x12ac74));_0x350e23(_0x12ac74);})['catch'](function(_0x42d5a0){logger[_0x4d91('0x11')](_0x4d91('0x16'),_0x42d5a0[_0x4d91('0x13')],_0x44b9a7);_0x3b579b(_0x4cfa40['error'](0x1f4,_0x42d5a0[_0x4d91('0x13')]));});});};exports[_0x4d91('0x21')]=function(_0x468e95){var _0xee7535=this;return new Promise(function(_0xa63422,_0x3466f3){return db[_0x4d91('0x17')]['find']({'raw':_0x468e95[_0x4d91('0x18')]?_0x468e95['options']['raw']===undefined?!![]:![]:!![],'where':_0x468e95[_0x4d91('0x18')]?_0x468e95[_0x4d91('0x18')]['where']||null:null,'attributes':_0x468e95[_0x4d91('0x18')]?_0x468e95[_0x4d91('0x18')][_0x4d91('0x1b')]||null:null,'include':_0x468e95[_0x4d91('0x18')]?_0x468e95[_0x4d91('0x18')]['include']?_[_0x4d91('0x1e')](_0x468e95[_0x4d91('0x18')][_0x4d91('0x1d')],function(_0x2b8131){return{'model':db[_0x2b8131[_0x4d91('0x1f')]],'as':_0x2b8131['as'],'attributes':_0x2b8131[_0x4d91('0x1b')],'include':_0x2b8131['include']?_[_0x4d91('0x1e')](_0x2b8131[_0x4d91('0x1d')],function(_0x5c2247){return{'model':db[_0x5c2247[_0x4d91('0x1f')]],'as':_0x5c2247['as'],'attributes':_0x5c2247[_0x4d91('0x1b')],'include':_0x5c2247[_0x4d91('0x1d')]?_['map'](_0x5c2247[_0x4d91('0x1d')],function(_0x2c8b54){return{'model':db[_0x2c8b54[_0x4d91('0x1f')]],'as':_0x2c8b54['as'],'attributes':_0x2c8b54[_0x4d91('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x64cee3){logger[_0x4d91('0xc')](_0x4d91('0x21'),_0x468e95);logger[_0x4d91('0xf')]('ShowVtigerAccount',_0x468e95,JSON['stringify'](_0x64cee3));_0xa63422(_0x64cee3);})[_0x4d91('0x15')](function(_0x3dac76){logger['error'](_0x4d91('0x21'),_0x3dac76[_0x4d91('0x13')],_0x468e95);_0x3466f3(_0xee7535[_0x4d91('0x11')](0x1f4,_0x3dac76[_0x4d91('0x13')]));});});};
\ No newline at end of file
index bfda1c8..5ac4c02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ce2=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','post','put','update','destroy','multer','util'];(function(_0x1b58c4,_0x5102d6){var _0xd78391=function(_0x2946dd){while(--_0x2946dd){_0x1b58c4['push'](_0x1b58c4['shift']());}};_0xd78391(++_0x5102d6);}(_0x6ce2,0x157));var _0x26ce=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x6ce2[_0x24061a];return _0x82054e;};'use strict';var multer=require(_0x26ce('0x0'));var util=require(_0x26ce('0x1'));var path=require(_0x26ce('0x2'));var timeout=require(_0x26ce('0x3'));var express=require(_0x26ce('0x4'));var router=express[_0x26ce('0x5')]();var fs_extra=require(_0x26ce('0x6'));var auth=require(_0x26ce('0x7'));var interaction=require(_0x26ce('0x8'));var config=require(_0x26ce('0x9'));var controller=require('./intVtigerConfiguration.controller');router[_0x26ce('0xa')]('/',auth[_0x26ce('0xb')](),controller[_0x26ce('0xc')]);router[_0x26ce('0xa')](_0x26ce('0xd'),auth[_0x26ce('0xb')](),controller[_0x26ce('0xe')]);router[_0x26ce('0xa')](_0x26ce('0xf'),auth[_0x26ce('0xb')](),controller[_0x26ce('0x10')]);router[_0x26ce('0xa')](_0x26ce('0x11'),auth[_0x26ce('0xb')](),controller['getSubjects']);router[_0x26ce('0xa')](_0x26ce('0x12'),auth[_0x26ce('0xb')](),controller['getDescriptions']);router[_0x26ce('0x13')]('/',auth[_0x26ce('0xb')](),controller['create']);router[_0x26ce('0x14')]('/:id',auth[_0x26ce('0xb')](),controller[_0x26ce('0x15')]);router['delete'](_0x26ce('0xd'),auth[_0x26ce('0xb')](),controller[_0x26ce('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xf7e2=['/:id','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intVtigerConfiguration.controller','isAuthenticated','index','show','/:id/fields','getFields','get','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','put'];(function(_0x468b0f,_0x408566){var _0x3e74d9=function(_0x27a545){while(--_0x27a545){_0x468b0f['push'](_0x468b0f['shift']());}};_0x3e74d9(++_0x408566);}(_0xf7e2,0x7c));var _0x2f7e=function(_0x36e64e,_0x3a5e9a){_0x36e64e=_0x36e64e-0x0;var _0x3e9125=_0xf7e2[_0x36e64e];return _0x3e9125;};'use strict';var multer=require(_0x2f7e('0x0'));var util=require(_0x2f7e('0x1'));var path=require(_0x2f7e('0x2'));var timeout=require(_0x2f7e('0x3'));var express=require('express');var router=express[_0x2f7e('0x4')]();var fs_extra=require(_0x2f7e('0x5'));var auth=require(_0x2f7e('0x6'));var interaction=require(_0x2f7e('0x7'));var config=require('../../config/environment');var controller=require(_0x2f7e('0x8'));router['get']('/',auth[_0x2f7e('0x9')](),controller[_0x2f7e('0xa')]);router['get']('/:id',auth[_0x2f7e('0x9')](),controller[_0x2f7e('0xb')]);router['get'](_0x2f7e('0xc'),auth[_0x2f7e('0x9')](),controller[_0x2f7e('0xd')]);router[_0x2f7e('0xe')](_0x2f7e('0xf'),auth['isAuthenticated'](),controller[_0x2f7e('0x10')]);router[_0x2f7e('0xe')](_0x2f7e('0x11'),auth[_0x2f7e('0x9')](),controller[_0x2f7e('0x12')]);router['post']('/',auth[_0x2f7e('0x9')](),controller['create']);router[_0x2f7e('0x13')](_0x2f7e('0x14'),auth[_0x2f7e('0x9')](),controller['update']);router[_0x2f7e('0x15')]('/:id',auth[_0x2f7e('0x9')](),controller[_0x2f7e('0x16')]);module[_0x2f7e('0x17')]=router;
\ No newline at end of file
index 80bf0c5..3d053da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b53=['sequelize','STRING'];(function(_0x4a8c28,_0x2b0254){var _0x1ee153=function(_0xb8cf9e){while(--_0xb8cf9e){_0x4a8c28['push'](_0x4a8c28['shift']());}};_0x1ee153(++_0x2b0254);}(_0x3b53,0x146));var _0x33b5=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x3b53[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0x33b5('0x0'));module['exports']={'name':{'type':Sequelize[_0x33b5('0x1')]},'description':{'type':Sequelize[_0x33b5('0x1')]}};
\ No newline at end of file
+var _0x20bf=['sequelize','exports','STRING'];(function(_0x109e1d,_0x4474f0){var _0x549e93=function(_0x214d66){while(--_0x214d66){_0x109e1d['push'](_0x109e1d['shift']());}};_0x549e93(++_0x4474f0);}(_0x20bf,0x162));var _0xf20b=function(_0x14b541,_0x579ab2){_0x14b541=_0x14b541-0x0;var _0x5aa79d=_0x20bf[_0x14b541];return _0x5aa79d;};'use strict';var Sequelize=require(_0xf20b('0x0'));module[_0xf20b('0x1')]={'name':{'type':Sequelize[_0xf20b('0x2')]},'description':{'type':Sequelize[_0xf20b('0x2')]}};
\ No newline at end of file
index 08de912..6ad793a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb844=['name','send','VtigerConfiguration','rawAttributes','fieldName','type','key','model','map','query','intersection','fields','attributes','nolimit','order','sort','filters','pick','where','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','keys','length','merge','find','create','body','getFields','findOne','VtigerField','hasOwnProperty','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','destroy','error','stack'];(function(_0x165718,_0x49ae0b){var _0x2e57b2=function(_0x544f09){while(--_0x544f09){_0x165718['push'](_0x165718['shift']());}};_0x2e57b2(++_0x49ae0b);}(_0xb844,0x78));var _0x4b84=function(_0x42d3a8,_0x27ecf0){_0x42d3a8=_0x42d3a8-0x0;var _0x2a1e60=_0xb844[_0x42d3a8];return _0x2a1e60;};'use strict';var emlformat=require(_0x4b84('0x0'));var rimraf=require(_0x4b84('0x1'));var zipdir=require(_0x4b84('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4b84('0x3'));var moment=require(_0x4b84('0x4'));var BPromise=require(_0x4b84('0x5'));var Mustache=require(_0x4b84('0x6'));var util=require('util');var path=require(_0x4b84('0x7'));var sox=require(_0x4b84('0x8'));var csv=require('to-csv');var ejs=require(_0x4b84('0x9'));var fs=require('fs');var fs_extra=require(_0x4b84('0xa'));var _=require(_0x4b84('0xb'));var squel=require(_0x4b84('0xc'));var crypto=require(_0x4b84('0xd'));var jsforce=require(_0x4b84('0xe'));var deskjs=require(_0x4b84('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4b84('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x4b84('0x11'));var hardwareService=require(_0x4b84('0x12'));var logger=require(_0x4b84('0x13'))(_0x4b84('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x4b84('0x15'));var db=require(_0x4b84('0x16'))['db'];function respondWithStatusCode(_0x57bcbf,_0x5da5ff){_0x5da5ff=_0x5da5ff||0xcc;return function(_0x21858c){if(_0x21858c){return _0x57bcbf[_0x4b84('0x17')](_0x5da5ff);}return _0x57bcbf[_0x4b84('0x18')](_0x5da5ff)[_0x4b84('0x19')]();};}function respondWithResult(_0x1a044a,_0x33960d){_0x33960d=_0x33960d||0xc8;return function(_0x2f8c2f){if(_0x2f8c2f){return _0x1a044a['status'](_0x33960d)[_0x4b84('0x1a')](_0x2f8c2f);}};}function respondWithFilteredResult(_0x28ab09,_0x1bf7cf){return function(_0x3bb6c7){if(_0x3bb6c7){var _0x21a92e=typeof _0x1bf7cf['offset']===_0x4b84('0x1b')&&typeof _0x1bf7cf[_0x4b84('0x1c')]===_0x4b84('0x1b');var _0x18dd72=_0x3bb6c7[_0x4b84('0x1d')];var _0x1a2ae1=_0x21a92e?0x0:_0x1bf7cf[_0x4b84('0x1e')];var _0x390e12=_0x21a92e?_0x3bb6c7[_0x4b84('0x1d')]:_0x1bf7cf['offset']+_0x1bf7cf[_0x4b84('0x1c')];var _0x38e98d;if(_0x390e12>=_0x18dd72){_0x390e12=_0x18dd72;_0x38e98d=0xc8;}else{_0x38e98d=0xce;}_0x28ab09[_0x4b84('0x18')](_0x38e98d);return _0x28ab09[_0x4b84('0x1f')](_0x4b84('0x20'),_0x1a2ae1+'-'+_0x390e12+'/'+_0x18dd72)[_0x4b84('0x1a')](_0x3bb6c7);}return null;};}function patchUpdates(_0x4bf3dd){return function(_0x518b2c){try{jsonpatch[_0x4b84('0x21')](_0x518b2c,_0x4bf3dd,!![]);}catch(_0x40157f){return BPromise['reject'](_0x40157f);}return _0x518b2c[_0x4b84('0x22')]();};}function saveUpdates(_0x461b5b,_0x379e94){return function(_0xe343fa){if(_0xe343fa){return _0xe343fa[_0x4b84('0x23')](_0x461b5b)[_0x4b84('0x24')](function(_0xd2df32){return _0xd2df32;});}return null;};}function removeEntity(_0x357698,_0x4e16da){return function(_0xb6f9d2){if(_0xb6f9d2){return _0xb6f9d2[_0x4b84('0x25')]()['then'](function(){_0x357698['status'](0xcc)[_0x4b84('0x19')]();});}};}function handleEntityNotFound(_0x2e1761,_0x1d3861){return function(_0x3dd468){if(!_0x3dd468){_0x2e1761['sendStatus'](0x194);}return _0x3dd468;};}function handleError(_0x320553,_0x14b49d){_0x14b49d=_0x14b49d||0x1f4;return function(_0x34f3b2){logger[_0x4b84('0x26')](_0x34f3b2[_0x4b84('0x27')]);if(_0x34f3b2[_0x4b84('0x28')]){delete _0x34f3b2[_0x4b84('0x28')];}_0x320553[_0x4b84('0x18')](_0x14b49d)[_0x4b84('0x29')](_0x34f3b2);};}exports['index']=function(_0x33e0f2,_0x4e2920){var _0x403fba={},_0x5abd39={},_0x28deae={'count':0x0,'rows':[]};var _0x2a5536=_['map'](db[_0x4b84('0x2a')][_0x4b84('0x2b')],function(_0x5a1ab2){return{'name':_0x5a1ab2[_0x4b84('0x2c')],'type':_0x5a1ab2[_0x4b84('0x2d')][_0x4b84('0x2e')]};});_0x5abd39[_0x4b84('0x2f')]=_[_0x4b84('0x30')](_0x2a5536,'name');_0x5abd39[_0x4b84('0x31')]=_['keys'](_0x33e0f2[_0x4b84('0x31')]);_0x5abd39['filters']=_[_0x4b84('0x32')](_0x5abd39[_0x4b84('0x2f')],_0x5abd39[_0x4b84('0x31')]);_0x403fba['attributes']=_[_0x4b84('0x32')](_0x5abd39[_0x4b84('0x2f')],qs[_0x4b84('0x33')](_0x33e0f2[_0x4b84('0x31')]['fields']));_0x403fba['attributes']=_0x403fba[_0x4b84('0x34')]['length']?_0x403fba[_0x4b84('0x34')]:_0x5abd39[_0x4b84('0x2f')];if(!_0x33e0f2[_0x4b84('0x31')]['hasOwnProperty'](_0x4b84('0x35'))){_0x403fba[_0x4b84('0x1c')]=qs[_0x4b84('0x1c')](_0x33e0f2[_0x4b84('0x31')][_0x4b84('0x1c')]);_0x403fba['offset']=qs[_0x4b84('0x1e')](_0x33e0f2['query'][_0x4b84('0x1e')]);}_0x403fba[_0x4b84('0x36')]=qs[_0x4b84('0x37')](_0x33e0f2[_0x4b84('0x31')]['sort']);_0x403fba['where']=qs[_0x4b84('0x38')](_[_0x4b84('0x39')](_0x33e0f2[_0x4b84('0x31')],_0x5abd39[_0x4b84('0x38')]),_0x2a5536);if(_0x33e0f2[_0x4b84('0x31')]['filter']){_0x403fba[_0x4b84('0x3a')]=_['merge'](_0x403fba[_0x4b84('0x3a')],{'$or':_[_0x4b84('0x30')](_0x2a5536,function(_0x171852){if(_0x171852[_0x4b84('0x2d')]!==_0x4b84('0x3b')){var _0x517fe0={};_0x517fe0[_0x171852['name']]={'$like':'%'+_0x33e0f2[_0x4b84('0x31')][_0x4b84('0x3c')]+'%'};return _0x517fe0;}})});}_0x403fba=_['merge']({},_0x403fba,_0x33e0f2[_0x4b84('0x3d')]);var _0x538bd1={'where':_0x403fba[_0x4b84('0x3a')]};return db[_0x4b84('0x2a')][_0x4b84('0x1d')](_0x538bd1)[_0x4b84('0x24')](function(_0x5a747c){_0x28deae[_0x4b84('0x1d')]=_0x5a747c;if(_0x33e0f2[_0x4b84('0x31')][_0x4b84('0x3e')]){_0x403fba[_0x4b84('0x3f')]=[{'all':!![]}];}return db[_0x4b84('0x2a')][_0x4b84('0x40')](_0x403fba);})[_0x4b84('0x24')](function(_0x171314){_0x28deae['rows']=_0x171314;return _0x28deae;})['then'](respondWithFilteredResult(_0x4e2920,_0x403fba))[_0x4b84('0x41')](handleError(_0x4e2920,null));};exports[_0x4b84('0x42')]=function(_0x4ef8d0,_0x5aa97c){var _0x48ac5c={'raw':![],'where':{'id':_0x4ef8d0[_0x4b84('0x43')]['id']}},_0x265d01={};_0x265d01[_0x4b84('0x2f')]=_[_0x4b84('0x44')](db[_0x4b84('0x2a')][_0x4b84('0x2b')]);_0x265d01['query']=_['keys'](_0x4ef8d0[_0x4b84('0x31')]);_0x265d01[_0x4b84('0x38')]=_['intersection'](_0x265d01[_0x4b84('0x2f')],_0x265d01['query']);_0x48ac5c[_0x4b84('0x34')]=_[_0x4b84('0x32')](_0x265d01['model'],qs['fields'](_0x4ef8d0[_0x4b84('0x31')][_0x4b84('0x33')]));_0x48ac5c[_0x4b84('0x34')]=_0x48ac5c[_0x4b84('0x34')][_0x4b84('0x45')]?_0x48ac5c['attributes']:_0x265d01[_0x4b84('0x2f')];if(_0x4ef8d0[_0x4b84('0x31')][_0x4b84('0x3e')]){_0x48ac5c['include']=[{'all':!![]}];}_0x48ac5c=_[_0x4b84('0x46')]({},_0x48ac5c,_0x4ef8d0[_0x4b84('0x3d')]);return db[_0x4b84('0x2a')][_0x4b84('0x47')](_0x48ac5c)['then'](handleEntityNotFound(_0x5aa97c,null))['then'](respondWithResult(_0x5aa97c,null))[_0x4b84('0x41')](handleError(_0x5aa97c,null));};exports[_0x4b84('0x48')]=function(_0x2e8bc9,_0x36a5e0){return db[_0x4b84('0x2a')]['create'](_0x2e8bc9[_0x4b84('0x49')],{})['then'](respondWithResult(_0x36a5e0,0xc9))['catch'](handleError(_0x36a5e0,null));};exports[_0x4b84('0x23')]=function(_0x1ee31a,_0x5c46ba){if(_0x1ee31a[_0x4b84('0x49')]['id']){delete _0x1ee31a['body']['id'];}return db['VtigerConfiguration'][_0x4b84('0x47')]({'where':{'id':_0x1ee31a['params']['id']}})[_0x4b84('0x24')](handleEntityNotFound(_0x5c46ba,null))[_0x4b84('0x24')](saveUpdates(_0x1ee31a[_0x4b84('0x49')],null))[_0x4b84('0x24')](respondWithResult(_0x5c46ba,null))[_0x4b84('0x41')](handleError(_0x5c46ba,null));};exports[_0x4b84('0x25')]=function(_0x28f2ed,_0x4a9c2c){return db['VtigerConfiguration'][_0x4b84('0x47')]({'where':{'id':_0x28f2ed[_0x4b84('0x43')]['id']}})['then'](handleEntityNotFound(_0x4a9c2c,null))[_0x4b84('0x24')](removeEntity(_0x4a9c2c,null))[_0x4b84('0x41')](handleError(_0x4a9c2c,null));};exports[_0x4b84('0x4a')]=function(_0x2ae672,_0x385562,_0x20b3d6){var _0x13bfe6={};var _0x3b5ef9={};var _0x4737ea;var _0x212b40;return db[_0x4b84('0x2a')][_0x4b84('0x4b')]({'where':{'id':_0x2ae672[_0x4b84('0x43')]['id']}})[_0x4b84('0x24')](handleEntityNotFound(_0x385562,null))[_0x4b84('0x24')](function(_0xc5b9ff){if(_0xc5b9ff){_0x4737ea=_0xc5b9ff;_0x3b5ef9[_0x4b84('0x2f')]=_[_0x4b84('0x44')](db[_0x4b84('0x4c')][_0x4b84('0x2b')]);_0x3b5ef9[_0x4b84('0x31')]=_[_0x4b84('0x44')](_0x2ae672[_0x4b84('0x31')]);_0x3b5ef9[_0x4b84('0x38')]=_['intersection'](_0x3b5ef9[_0x4b84('0x2f')],_0x3b5ef9[_0x4b84('0x31')]);_0x13bfe6[_0x4b84('0x34')]=_[_0x4b84('0x32')](_0x3b5ef9[_0x4b84('0x2f')],qs['fields'](_0x2ae672[_0x4b84('0x31')][_0x4b84('0x33')]));_0x13bfe6[_0x4b84('0x34')]=_0x13bfe6[_0x4b84('0x34')][_0x4b84('0x45')]?_0x13bfe6[_0x4b84('0x34')]:_0x3b5ef9[_0x4b84('0x2f')];_0x13bfe6[_0x4b84('0x36')]=qs['sort'](_0x2ae672['query'][_0x4b84('0x37')]);_0x13bfe6[_0x4b84('0x3a')]=qs[_0x4b84('0x38')](_[_0x4b84('0x39')](_0x2ae672[_0x4b84('0x31')],_0x3b5ef9['filters']));if(_0x2ae672[_0x4b84('0x31')]['filter']){_0x13bfe6[_0x4b84('0x3a')]=_['merge'](_0x13bfe6[_0x4b84('0x3a')],{'$or':_[_0x4b84('0x30')](_0x13bfe6[_0x4b84('0x34')],function(_0x312db0){var _0x5c869e={};_0x5c869e[_0x312db0]={'$like':'%'+_0x2ae672[_0x4b84('0x31')][_0x4b84('0x3c')]+'%'};return _0x5c869e;})});}_0x13bfe6=_[_0x4b84('0x46')]({},_0x13bfe6,_0x2ae672[_0x4b84('0x3d')]);return _0x4737ea[_0x4b84('0x4a')](_0x13bfe6);}})[_0x4b84('0x24')](function(_0x26e22d){if(_0x26e22d){_0x212b40=_0x26e22d[_0x4b84('0x45')];if(!_0x2ae672[_0x4b84('0x31')][_0x4b84('0x4d')]('nolimit')){_0x13bfe6[_0x4b84('0x1c')]=qs[_0x4b84('0x1c')](_0x2ae672[_0x4b84('0x31')]['limit']);_0x13bfe6[_0x4b84('0x1e')]=qs[_0x4b84('0x1e')](_0x2ae672[_0x4b84('0x31')][_0x4b84('0x1e')]);}return _0x4737ea[_0x4b84('0x4a')](_0x13bfe6);}})[_0x4b84('0x24')](function(_0x73ea2a){if(_0x73ea2a){return _0x73ea2a?{'count':_0x212b40,'rows':_0x73ea2a}:null;}})[_0x4b84('0x24')](respondWithResult(_0x385562,null))['catch'](handleError(_0x385562,null));};exports['getSubjects']=function(_0x37458d,_0x384997,_0x4ccc15){var _0x2075c7={};var _0x20f3a1={};var _0x328662;var _0x442b30;return db['VtigerConfiguration']['findOne']({'where':{'id':_0x37458d['params']['id']}})['then'](handleEntityNotFound(_0x384997,null))[_0x4b84('0x24')](function(_0xddb1ba){if(_0xddb1ba){_0x328662=_0xddb1ba;_0x20f3a1[_0x4b84('0x2f')]=_[_0x4b84('0x44')](db['VtigerField'][_0x4b84('0x2b')]);_0x20f3a1[_0x4b84('0x31')]=_[_0x4b84('0x44')](_0x37458d[_0x4b84('0x31')]);_0x20f3a1['filters']=_['intersection'](_0x20f3a1['model'],_0x20f3a1[_0x4b84('0x31')]);_0x2075c7[_0x4b84('0x34')]=_[_0x4b84('0x32')](_0x20f3a1[_0x4b84('0x2f')],qs[_0x4b84('0x33')](_0x37458d[_0x4b84('0x31')][_0x4b84('0x33')]));_0x2075c7[_0x4b84('0x34')]=_0x2075c7['attributes'][_0x4b84('0x45')]?_0x2075c7[_0x4b84('0x34')]:_0x20f3a1[_0x4b84('0x2f')];_0x2075c7[_0x4b84('0x36')]=qs[_0x4b84('0x37')](_0x37458d[_0x4b84('0x31')][_0x4b84('0x37')]);_0x2075c7['where']=qs[_0x4b84('0x38')](_[_0x4b84('0x39')](_0x37458d[_0x4b84('0x31')],_0x20f3a1[_0x4b84('0x38')]));if(_0x37458d[_0x4b84('0x31')]['filter']){_0x2075c7[_0x4b84('0x3a')]=_['merge'](_0x2075c7['where'],{'$or':_['map'](_0x2075c7[_0x4b84('0x34')],function(_0x51908b){var _0x404789={};_0x404789[_0x51908b]={'$like':'%'+_0x37458d[_0x4b84('0x31')][_0x4b84('0x3c')]+'%'};return _0x404789;})});}_0x2075c7=_['merge']({},_0x2075c7,_0x37458d['options']);return _0x328662['getSubjects'](_0x2075c7);}})[_0x4b84('0x24')](function(_0x26c8c5){if(_0x26c8c5){_0x442b30=_0x26c8c5[_0x4b84('0x45')];if(!_0x37458d[_0x4b84('0x31')][_0x4b84('0x4d')](_0x4b84('0x35'))){_0x2075c7['limit']=qs[_0x4b84('0x1c')](_0x37458d[_0x4b84('0x31')][_0x4b84('0x1c')]);_0x2075c7[_0x4b84('0x1e')]=qs['offset'](_0x37458d[_0x4b84('0x31')][_0x4b84('0x1e')]);}return _0x328662[_0x4b84('0x4e')](_0x2075c7);}})[_0x4b84('0x24')](function(_0x44db62){if(_0x44db62){return _0x44db62?{'count':_0x442b30,'rows':_0x44db62}:null;}})['then'](respondWithResult(_0x384997,null))['catch'](handleError(_0x384997,null));};exports['getDescriptions']=function(_0x204a67,_0x473fab,_0x53c618){var _0x410c93={};var _0x576858={};var _0x15a16a;var _0x13dc1e;return db[_0x4b84('0x2a')][_0x4b84('0x4b')]({'where':{'id':_0x204a67[_0x4b84('0x43')]['id']}})[_0x4b84('0x24')](handleEntityNotFound(_0x473fab,null))[_0x4b84('0x24')](function(_0xa27f5){if(_0xa27f5){_0x15a16a=_0xa27f5;_0x576858[_0x4b84('0x2f')]=_[_0x4b84('0x44')](db['VtigerField'][_0x4b84('0x2b')]);_0x576858[_0x4b84('0x31')]=_[_0x4b84('0x44')](_0x204a67[_0x4b84('0x31')]);_0x576858[_0x4b84('0x38')]=_[_0x4b84('0x32')](_0x576858['model'],_0x576858[_0x4b84('0x31')]);_0x410c93[_0x4b84('0x34')]=_[_0x4b84('0x32')](_0x576858['model'],qs[_0x4b84('0x33')](_0x204a67[_0x4b84('0x31')][_0x4b84('0x33')]));_0x410c93[_0x4b84('0x34')]=_0x410c93['attributes']['length']?_0x410c93[_0x4b84('0x34')]:_0x576858[_0x4b84('0x2f')];_0x410c93[_0x4b84('0x36')]=qs['sort'](_0x204a67[_0x4b84('0x31')][_0x4b84('0x37')]);_0x410c93['where']=qs[_0x4b84('0x38')](_['pick'](_0x204a67[_0x4b84('0x31')],_0x576858[_0x4b84('0x38')]));if(_0x204a67['query'][_0x4b84('0x3c')]){_0x410c93[_0x4b84('0x3a')]=_[_0x4b84('0x46')](_0x410c93['where'],{'$or':_['map'](_0x410c93[_0x4b84('0x34')],function(_0x11b6e8){var _0x11198d={};_0x11198d[_0x11b6e8]={'$like':'%'+_0x204a67[_0x4b84('0x31')][_0x4b84('0x3c')]+'%'};return _0x11198d;})});}_0x410c93=_[_0x4b84('0x46')]({},_0x410c93,_0x204a67[_0x4b84('0x3d')]);return _0x15a16a[_0x4b84('0x4f')](_0x410c93);}})[_0x4b84('0x24')](function(_0x32fd14){if(_0x32fd14){_0x13dc1e=_0x32fd14[_0x4b84('0x45')];if(!_0x204a67[_0x4b84('0x31')][_0x4b84('0x4d')](_0x4b84('0x35'))){_0x410c93[_0x4b84('0x1c')]=qs['limit'](_0x204a67[_0x4b84('0x31')][_0x4b84('0x1c')]);_0x410c93['offset']=qs['offset'](_0x204a67['query'][_0x4b84('0x1e')]);}return _0x15a16a[_0x4b84('0x4f')](_0x410c93);}})[_0x4b84('0x24')](function(_0x42daf1){if(_0x42daf1){return _0x42daf1?{'count':_0x13dc1e,'rows':_0x42daf1}:null;}})[_0x4b84('0x24')](respondWithResult(_0x473fab,null))[_0x4b84('0x41')](handleError(_0x473fab,null));};
\ No newline at end of file
+var _0x40b5=['limit','count','set','Content-Range','json','apply','save','update','then','sendStatus','error','stack','name','index','map','VtigerConfiguration','rawAttributes','fieldName','type','model','keys','query','filters','attributes','fields','length','nolimit','order','sort','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','intersection','options','create','body','destroy','find','getFields','VtigerField','pick','hasOwnProperty','getSubjects','findOne','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined'];(function(_0x717bbe,_0x3399c5){var _0x26d47e=function(_0x3c52b0){while(--_0x3c52b0){_0x717bbe['push'](_0x717bbe['shift']());}};_0x26d47e(++_0x3399c5);}(_0x40b5,0x12b));var _0x540b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x40b5[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x540b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x540b('0x1'));var jsonpatch=require(_0x540b('0x2'));var rp=require(_0x540b('0x3'));var moment=require(_0x540b('0x4'));var BPromise=require(_0x540b('0x5'));var Mustache=require(_0x540b('0x6'));var util=require(_0x540b('0x7'));var path=require(_0x540b('0x8'));var sox=require(_0x540b('0x9'));var csv=require(_0x540b('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x540b('0xb'));var _=require(_0x540b('0xc'));var squel=require(_0x540b('0xd'));var crypto=require('crypto');var jsforce=require(_0x540b('0xe'));var deskjs=require(_0x540b('0xf'));var toCsv=require(_0x540b('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x540b('0x10'));var authService=require(_0x540b('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x540b('0x12'));var hardwareService=require(_0x540b('0x13'));var logger=require(_0x540b('0x14'))('api');var utils=require(_0x540b('0x15'));var config=require(_0x540b('0x16'));var licenseUtil=require(_0x540b('0x17'));var db=require(_0x540b('0x18'))['db'];function respondWithStatusCode(_0x449007,_0xc8bbaf){_0xc8bbaf=_0xc8bbaf||0xcc;return function(_0xc64054){if(_0xc64054){return _0x449007['sendStatus'](_0xc8bbaf);}return _0x449007[_0x540b('0x19')](_0xc8bbaf)[_0x540b('0x1a')]();};}function respondWithResult(_0x4a36ad,_0x39e7f7){_0x39e7f7=_0x39e7f7||0xc8;return function(_0x5ce9ce){if(_0x5ce9ce){return _0x4a36ad[_0x540b('0x19')](_0x39e7f7)['json'](_0x5ce9ce);}};}function respondWithFilteredResult(_0x3c39db,_0x58cd22){return function(_0x56f592){if(_0x56f592){var _0x222ded=typeof _0x58cd22[_0x540b('0x1b')]===_0x540b('0x1c')&&typeof _0x58cd22[_0x540b('0x1d')]===_0x540b('0x1c');var _0xb31c8f=_0x56f592[_0x540b('0x1e')];var _0x4fff02=_0x222ded?0x0:_0x58cd22[_0x540b('0x1b')];var _0x42d02b=_0x222ded?_0x56f592[_0x540b('0x1e')]:_0x58cd22[_0x540b('0x1b')]+_0x58cd22[_0x540b('0x1d')];var _0x1416d2;if(_0x42d02b>=_0xb31c8f){_0x42d02b=_0xb31c8f;_0x1416d2=0xc8;}else{_0x1416d2=0xce;}_0x3c39db['status'](_0x1416d2);return _0x3c39db[_0x540b('0x1f')](_0x540b('0x20'),_0x4fff02+'-'+_0x42d02b+'/'+_0xb31c8f)[_0x540b('0x21')](_0x56f592);}return null;};}function patchUpdates(_0x22fc50){return function(_0x1fb9d1){try{jsonpatch[_0x540b('0x22')](_0x1fb9d1,_0x22fc50,!![]);}catch(_0x53035c){return BPromise['reject'](_0x53035c);}return _0x1fb9d1[_0x540b('0x23')]();};}function saveUpdates(_0x2930de,_0x3cb27a){return function(_0x656a8){if(_0x656a8){return _0x656a8[_0x540b('0x24')](_0x2930de)[_0x540b('0x25')](function(_0x4b094f){return _0x4b094f;});}return null;};}function removeEntity(_0x1190c9,_0x49898a){return function(_0x19fbed){if(_0x19fbed){return _0x19fbed['destroy']()[_0x540b('0x25')](function(){_0x1190c9[_0x540b('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5688d1,_0x505bb3){return function(_0x3f9c8c){if(!_0x3f9c8c){_0x5688d1[_0x540b('0x26')](0x194);}return _0x3f9c8c;};}function handleError(_0xb582b,_0x3b1f5a){_0x3b1f5a=_0x3b1f5a||0x1f4;return function(_0x15ebcc){logger[_0x540b('0x27')](_0x15ebcc[_0x540b('0x28')]);if(_0x15ebcc[_0x540b('0x29')]){delete _0x15ebcc['name'];}_0xb582b[_0x540b('0x19')](_0x3b1f5a)['send'](_0x15ebcc);};}exports[_0x540b('0x2a')]=function(_0x2ef191,_0xf3188d){var _0x1564e0={},_0x20fc14={},_0x196f98={'count':0x0,'rows':[]};var _0x466db8=_[_0x540b('0x2b')](db[_0x540b('0x2c')][_0x540b('0x2d')],function(_0x2e9cd8){return{'name':_0x2e9cd8[_0x540b('0x2e')],'type':_0x2e9cd8[_0x540b('0x2f')]['key']};});_0x20fc14[_0x540b('0x30')]=_[_0x540b('0x2b')](_0x466db8,_0x540b('0x29'));_0x20fc14['query']=_[_0x540b('0x31')](_0x2ef191[_0x540b('0x32')]);_0x20fc14[_0x540b('0x33')]=_['intersection'](_0x20fc14[_0x540b('0x30')],_0x20fc14[_0x540b('0x32')]);_0x1564e0[_0x540b('0x34')]=_['intersection'](_0x20fc14[_0x540b('0x30')],qs[_0x540b('0x35')](_0x2ef191[_0x540b('0x32')][_0x540b('0x35')]));_0x1564e0[_0x540b('0x34')]=_0x1564e0['attributes'][_0x540b('0x36')]?_0x1564e0[_0x540b('0x34')]:_0x20fc14[_0x540b('0x30')];if(!_0x2ef191[_0x540b('0x32')]['hasOwnProperty'](_0x540b('0x37'))){_0x1564e0[_0x540b('0x1d')]=qs[_0x540b('0x1d')](_0x2ef191[_0x540b('0x32')]['limit']);_0x1564e0[_0x540b('0x1b')]=qs['offset'](_0x2ef191[_0x540b('0x32')]['offset']);}_0x1564e0[_0x540b('0x38')]=qs[_0x540b('0x39')](_0x2ef191[_0x540b('0x32')][_0x540b('0x39')]);_0x1564e0['where']=qs[_0x540b('0x33')](_['pick'](_0x2ef191[_0x540b('0x32')],_0x20fc14[_0x540b('0x33')]),_0x466db8);if(_0x2ef191[_0x540b('0x32')][_0x540b('0x3a')]){_0x1564e0[_0x540b('0x3b')]=_[_0x540b('0x3c')](_0x1564e0[_0x540b('0x3b')],{'$or':_[_0x540b('0x2b')](_0x466db8,function(_0x50ee64){if(_0x50ee64[_0x540b('0x2f')]!==_0x540b('0x3d')){var _0x4f66fd={};_0x4f66fd[_0x50ee64['name']]={'$like':'%'+_0x2ef191[_0x540b('0x32')]['filter']+'%'};return _0x4f66fd;}})});}_0x1564e0=_['merge']({},_0x1564e0,_0x2ef191['options']);var _0x1c6b1b={'where':_0x1564e0[_0x540b('0x3b')]};return db[_0x540b('0x2c')]['count'](_0x1c6b1b)['then'](function(_0x2df5a2){_0x196f98[_0x540b('0x1e')]=_0x2df5a2;if(_0x2ef191[_0x540b('0x32')][_0x540b('0x3e')]){_0x1564e0[_0x540b('0x3f')]=[{'all':!![]}];}return db[_0x540b('0x2c')][_0x540b('0x40')](_0x1564e0);})['then'](function(_0x50ba83){_0x196f98[_0x540b('0x41')]=_0x50ba83;return _0x196f98;})[_0x540b('0x25')](respondWithFilteredResult(_0xf3188d,_0x1564e0))[_0x540b('0x42')](handleError(_0xf3188d,null));};exports[_0x540b('0x43')]=function(_0x33cf31,_0x5c140b){var _0x1763f8={'raw':![],'where':{'id':_0x33cf31[_0x540b('0x44')]['id']}},_0x2ca876={};_0x2ca876['model']=_['keys'](db[_0x540b('0x2c')][_0x540b('0x2d')]);_0x2ca876[_0x540b('0x32')]=_[_0x540b('0x31')](_0x33cf31['query']);_0x2ca876[_0x540b('0x33')]=_['intersection'](_0x2ca876[_0x540b('0x30')],_0x2ca876[_0x540b('0x32')]);_0x1763f8[_0x540b('0x34')]=_[_0x540b('0x45')](_0x2ca876['model'],qs['fields'](_0x33cf31[_0x540b('0x32')][_0x540b('0x35')]));_0x1763f8[_0x540b('0x34')]=_0x1763f8[_0x540b('0x34')]['length']?_0x1763f8[_0x540b('0x34')]:_0x2ca876[_0x540b('0x30')];if(_0x33cf31[_0x540b('0x32')][_0x540b('0x3e')]){_0x1763f8[_0x540b('0x3f')]=[{'all':!![]}];}_0x1763f8=_[_0x540b('0x3c')]({},_0x1763f8,_0x33cf31[_0x540b('0x46')]);return db['VtigerConfiguration']['find'](_0x1763f8)[_0x540b('0x25')](handleEntityNotFound(_0x5c140b,null))[_0x540b('0x25')](respondWithResult(_0x5c140b,null))[_0x540b('0x42')](handleError(_0x5c140b,null));};exports[_0x540b('0x47')]=function(_0x356bb8,_0x4a353f){return db[_0x540b('0x2c')][_0x540b('0x47')](_0x356bb8['body'],{})[_0x540b('0x25')](respondWithResult(_0x4a353f,0xc9))[_0x540b('0x42')](handleError(_0x4a353f,null));};exports[_0x540b('0x24')]=function(_0x14136f,_0x1cf1c1){if(_0x14136f[_0x540b('0x48')]['id']){delete _0x14136f[_0x540b('0x48')]['id'];}return db['VtigerConfiguration']['find']({'where':{'id':_0x14136f['params']['id']}})['then'](handleEntityNotFound(_0x1cf1c1,null))[_0x540b('0x25')](saveUpdates(_0x14136f[_0x540b('0x48')],null))['then'](respondWithResult(_0x1cf1c1,null))[_0x540b('0x42')](handleError(_0x1cf1c1,null));};exports[_0x540b('0x49')]=function(_0x371446,_0x169edb){return db[_0x540b('0x2c')][_0x540b('0x4a')]({'where':{'id':_0x371446[_0x540b('0x44')]['id']}})[_0x540b('0x25')](handleEntityNotFound(_0x169edb,null))['then'](removeEntity(_0x169edb,null))['catch'](handleError(_0x169edb,null));};exports[_0x540b('0x4b')]=function(_0x4213d9,_0x3833be,_0x59492d){var _0x230580={};var _0x3d78dd={};var _0x33b4de;var _0x5b2d31;return db[_0x540b('0x2c')]['findOne']({'where':{'id':_0x4213d9[_0x540b('0x44')]['id']}})['then'](handleEntityNotFound(_0x3833be,null))[_0x540b('0x25')](function(_0x2cbf73){if(_0x2cbf73){_0x33b4de=_0x2cbf73;_0x3d78dd['model']=_['keys'](db[_0x540b('0x4c')][_0x540b('0x2d')]);_0x3d78dd[_0x540b('0x32')]=_['keys'](_0x4213d9[_0x540b('0x32')]);_0x3d78dd['filters']=_[_0x540b('0x45')](_0x3d78dd[_0x540b('0x30')],_0x3d78dd[_0x540b('0x32')]);_0x230580[_0x540b('0x34')]=_[_0x540b('0x45')](_0x3d78dd[_0x540b('0x30')],qs[_0x540b('0x35')](_0x4213d9[_0x540b('0x32')][_0x540b('0x35')]));_0x230580[_0x540b('0x34')]=_0x230580[_0x540b('0x34')][_0x540b('0x36')]?_0x230580[_0x540b('0x34')]:_0x3d78dd[_0x540b('0x30')];_0x230580[_0x540b('0x38')]=qs[_0x540b('0x39')](_0x4213d9[_0x540b('0x32')][_0x540b('0x39')]);_0x230580[_0x540b('0x3b')]=qs[_0x540b('0x33')](_[_0x540b('0x4d')](_0x4213d9[_0x540b('0x32')],_0x3d78dd[_0x540b('0x33')]));if(_0x4213d9[_0x540b('0x32')]['filter']){_0x230580['where']=_[_0x540b('0x3c')](_0x230580[_0x540b('0x3b')],{'$or':_[_0x540b('0x2b')](_0x230580[_0x540b('0x34')],function(_0x3f1457){var _0x4f8b1f={};_0x4f8b1f[_0x3f1457]={'$like':'%'+_0x4213d9[_0x540b('0x32')][_0x540b('0x3a')]+'%'};return _0x4f8b1f;})});}_0x230580=_[_0x540b('0x3c')]({},_0x230580,_0x4213d9[_0x540b('0x46')]);return _0x33b4de[_0x540b('0x4b')](_0x230580);}})[_0x540b('0x25')](function(_0x1ae707){if(_0x1ae707){_0x5b2d31=_0x1ae707['length'];if(!_0x4213d9['query'][_0x540b('0x4e')](_0x540b('0x37'))){_0x230580[_0x540b('0x1d')]=qs[_0x540b('0x1d')](_0x4213d9['query'][_0x540b('0x1d')]);_0x230580[_0x540b('0x1b')]=qs['offset'](_0x4213d9[_0x540b('0x32')][_0x540b('0x1b')]);}return _0x33b4de['getFields'](_0x230580);}})[_0x540b('0x25')](function(_0x2c6a53){if(_0x2c6a53){return _0x2c6a53?{'count':_0x5b2d31,'rows':_0x2c6a53}:null;}})[_0x540b('0x25')](respondWithResult(_0x3833be,null))[_0x540b('0x42')](handleError(_0x3833be,null));};exports[_0x540b('0x4f')]=function(_0x1c79fc,_0x17d953,_0x5527dd){var _0x2c5c78={};var _0x1739f5={};var _0x39c5cc;var _0x2d152c;return db[_0x540b('0x2c')][_0x540b('0x50')]({'where':{'id':_0x1c79fc['params']['id']}})['then'](handleEntityNotFound(_0x17d953,null))[_0x540b('0x25')](function(_0x221f8f){if(_0x221f8f){_0x39c5cc=_0x221f8f;_0x1739f5[_0x540b('0x30')]=_['keys'](db[_0x540b('0x4c')][_0x540b('0x2d')]);_0x1739f5[_0x540b('0x32')]=_['keys'](_0x1c79fc[_0x540b('0x32')]);_0x1739f5['filters']=_[_0x540b('0x45')](_0x1739f5['model'],_0x1739f5[_0x540b('0x32')]);_0x2c5c78[_0x540b('0x34')]=_[_0x540b('0x45')](_0x1739f5[_0x540b('0x30')],qs['fields'](_0x1c79fc[_0x540b('0x32')]['fields']));_0x2c5c78[_0x540b('0x34')]=_0x2c5c78['attributes'][_0x540b('0x36')]?_0x2c5c78[_0x540b('0x34')]:_0x1739f5[_0x540b('0x30')];_0x2c5c78[_0x540b('0x38')]=qs['sort'](_0x1c79fc[_0x540b('0x32')][_0x540b('0x39')]);_0x2c5c78['where']=qs['filters'](_[_0x540b('0x4d')](_0x1c79fc[_0x540b('0x32')],_0x1739f5[_0x540b('0x33')]));if(_0x1c79fc[_0x540b('0x32')][_0x540b('0x3a')]){_0x2c5c78[_0x540b('0x3b')]=_[_0x540b('0x3c')](_0x2c5c78[_0x540b('0x3b')],{'$or':_['map'](_0x2c5c78[_0x540b('0x34')],function(_0x4fc56e){var _0x29c6c2={};_0x29c6c2[_0x4fc56e]={'$like':'%'+_0x1c79fc[_0x540b('0x32')][_0x540b('0x3a')]+'%'};return _0x29c6c2;})});}_0x2c5c78=_[_0x540b('0x3c')]({},_0x2c5c78,_0x1c79fc['options']);return _0x39c5cc[_0x540b('0x4f')](_0x2c5c78);}})['then'](function(_0x1c161f){if(_0x1c161f){_0x2d152c=_0x1c161f[_0x540b('0x36')];if(!_0x1c79fc[_0x540b('0x32')][_0x540b('0x4e')]('nolimit')){_0x2c5c78[_0x540b('0x1d')]=qs[_0x540b('0x1d')](_0x1c79fc['query'][_0x540b('0x1d')]);_0x2c5c78[_0x540b('0x1b')]=qs['offset'](_0x1c79fc[_0x540b('0x32')]['offset']);}return _0x39c5cc['getSubjects'](_0x2c5c78);}})[_0x540b('0x25')](function(_0x25f163){if(_0x25f163){return _0x25f163?{'count':_0x2d152c,'rows':_0x25f163}:null;}})['then'](respondWithResult(_0x17d953,null))[_0x540b('0x42')](handleError(_0x17d953,null));};exports[_0x540b('0x51')]=function(_0xcdfa7f,_0x53ce4b,_0x3da297){var _0x22e6b7={};var _0x10a437={};var _0x10a0ae;var _0x3fd6fb;return db[_0x540b('0x2c')][_0x540b('0x50')]({'where':{'id':_0xcdfa7f[_0x540b('0x44')]['id']}})['then'](handleEntityNotFound(_0x53ce4b,null))[_0x540b('0x25')](function(_0xf00d55){if(_0xf00d55){_0x10a0ae=_0xf00d55;_0x10a437[_0x540b('0x30')]=_[_0x540b('0x31')](db[_0x540b('0x4c')][_0x540b('0x2d')]);_0x10a437[_0x540b('0x32')]=_[_0x540b('0x31')](_0xcdfa7f[_0x540b('0x32')]);_0x10a437['filters']=_['intersection'](_0x10a437[_0x540b('0x30')],_0x10a437[_0x540b('0x32')]);_0x22e6b7[_0x540b('0x34')]=_[_0x540b('0x45')](_0x10a437['model'],qs['fields'](_0xcdfa7f[_0x540b('0x32')][_0x540b('0x35')]));_0x22e6b7[_0x540b('0x34')]=_0x22e6b7[_0x540b('0x34')]['length']?_0x22e6b7['attributes']:_0x10a437[_0x540b('0x30')];_0x22e6b7['order']=qs[_0x540b('0x39')](_0xcdfa7f[_0x540b('0x32')][_0x540b('0x39')]);_0x22e6b7[_0x540b('0x3b')]=qs[_0x540b('0x33')](_[_0x540b('0x4d')](_0xcdfa7f[_0x540b('0x32')],_0x10a437[_0x540b('0x33')]));if(_0xcdfa7f[_0x540b('0x32')]['filter']){_0x22e6b7[_0x540b('0x3b')]=_[_0x540b('0x3c')](_0x22e6b7['where'],{'$or':_[_0x540b('0x2b')](_0x22e6b7[_0x540b('0x34')],function(_0x58d62f){var _0x13ae9e={};_0x13ae9e[_0x58d62f]={'$like':'%'+_0xcdfa7f[_0x540b('0x32')]['filter']+'%'};return _0x13ae9e;})});}_0x22e6b7=_['merge']({},_0x22e6b7,_0xcdfa7f[_0x540b('0x46')]);return _0x10a0ae['getDescriptions'](_0x22e6b7);}})['then'](function(_0x132b33){if(_0x132b33){_0x3fd6fb=_0x132b33[_0x540b('0x36')];if(!_0xcdfa7f['query']['hasOwnProperty'](_0x540b('0x37'))){_0x22e6b7['limit']=qs[_0x540b('0x1d')](_0xcdfa7f[_0x540b('0x32')][_0x540b('0x1d')]);_0x22e6b7[_0x540b('0x1b')]=qs[_0x540b('0x1b')](_0xcdfa7f[_0x540b('0x32')]['offset']);}return _0x10a0ae['getDescriptions'](_0x22e6b7);}})[_0x540b('0x25')](function(_0x4a56e4){if(_0x4a56e4){return _0x4a56e4?{'count':_0x3fd6fb,'rows':_0x4a56e4}:null;}})[_0x540b('0x25')](respondWithResult(_0x53ce4b,null))[_0x540b('0x42')](handleError(_0x53ce4b,null));};
\ No newline at end of file
index 02876e8..d5f0121 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf24a=['util','api','moment','path','../../config/environment','exports','define','VtigerConfiguration','lodash'];(function(_0x63a69b,_0x296888){var _0x425fa1=function(_0x117642){while(--_0x117642){_0x63a69b['push'](_0x63a69b['shift']());}};_0x425fa1(++_0x296888);}(_0xf24a,0x167));var _0xaf24=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xf24a[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xaf24('0x0'));var util=require(_0xaf24('0x1'));var logger=require('../../config/logger')(_0xaf24('0x2'));var moment=require(_0xaf24('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xaf24('0x4'));var rimraf=require('rimraf');var config=require(_0xaf24('0x5'));var attributes=require('./intVtigerConfiguration.attributes');module[_0xaf24('0x6')]=function(_0x38eb55,_0x5a9cf4){return _0x38eb55[_0xaf24('0x7')](_0xaf24('0x8'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2e4b=['exports','define','VtigerConfiguration','int_vtiger_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intVtigerConfiguration.attributes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2e4b,0xd6));var _0xb2e4=function(_0x1ab180,_0x382b2c){_0x1ab180=_0x1ab180-0x0;var _0xfb2c2d=_0x2e4b[_0x1ab180];return _0xfb2c2d;};'use strict';var _=require(_0xb2e4('0x0'));var util=require(_0xb2e4('0x1'));var logger=require(_0xb2e4('0x2'))(_0xb2e4('0x3'));var moment=require(_0xb2e4('0x4'));var BPromise=require(_0xb2e4('0x5'));var rp=require(_0xb2e4('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb2e4('0x7'));var config=require(_0xb2e4('0x8'));var attributes=require(_0xb2e4('0x9'));module[_0xb2e4('0xa')]=function(_0x5cd84d,_0x4931f2){return _0x5cd84d[_0xb2e4('0xb')](_0xb2e4('0xc'),attributes,{'tableName':_0xb2e4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1781cb5..5a6c572 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff9a=['util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash'];(function(_0x5a0d6b,_0x52c59f){var _0x5ee128=function(_0x162205){while(--_0x162205){_0x5a0d6b['push'](_0x5a0d6b['shift']());}};_0x5ee128(++_0x52c59f);}(_0xff9a,0x1b7));var _0xaff9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xff9a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xaff9('0x0'));var util=require(_0xaff9('0x1'));var moment=require(_0xaff9('0x2'));var BPromise=require(_0xaff9('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xaff9('0x4'));var db=require(_0xaff9('0x5'))['db'];var utils=require(_0xaff9('0x6'));var logger=require(_0xaff9('0x7'))(_0xaff9('0x8'));var config=require('../../config/environment');var jayson=require(_0xaff9('0x9'));var client=jayson[_0xaff9('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f5f54,_0x253fff,_0x410ce5){return new BPromise(function(_0x5ba4f8,_0x3d4390){return client[_0xaff9('0xb')](_0x1f5f54,_0x410ce5)['then'](function(_0x4008d7){logger[_0xaff9('0xc')](_0xaff9('0xd'),_0x253fff,_0xaff9('0xe'));logger['debug']('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x253fff,_0xaff9('0xe'),JSON['stringify'](_0x4008d7));if(_0x4008d7[_0xaff9('0xf')]){if(_0x4008d7[_0xaff9('0xf')][_0xaff9('0x10')]===0x1f4){logger[_0xaff9('0xf')](_0xaff9('0xd'),_0x253fff,_0x4008d7['error'][_0xaff9('0x11')]);return _0x3d4390(_0x4008d7[_0xaff9('0xf')][_0xaff9('0x11')]);}logger[_0xaff9('0xf')]('VtigerConfiguration,\x20%s,\x20%s',_0x253fff,_0x4008d7[_0xaff9('0xf')][_0xaff9('0x11')]);return _0x5ba4f8(_0x4008d7[_0xaff9('0xf')][_0xaff9('0x11')]);}else{logger['info']('VtigerConfiguration,\x20%s,\x20%s',_0x253fff,'request\x20sent');_0x5ba4f8(_0x4008d7[_0xaff9('0x12')]['message']);}})[_0xaff9('0x13')](function(_0x51bca4){logger[_0xaff9('0xf')](_0xaff9('0xd'),_0x253fff,_0x51bca4);_0x3d4390(_0x51bca4);});});}
\ No newline at end of file
+var _0xd8da=['client','http','request','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x848209,_0x7c875){var _0x3cf73c=function(_0x51d2b7){while(--_0x51d2b7){_0x848209['push'](_0x848209['shift']());}};_0x3cf73c(++_0x7c875);}(_0xd8da,0x120));var _0xad8d=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xd8da[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0xad8d('0x0'));var util=require(_0xad8d('0x1'));var moment=require(_0xad8d('0x2'));var BPromise=require(_0xad8d('0x3'));var rs=require(_0xad8d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xad8d('0x5'))['db'];var utils=require(_0xad8d('0x6'));var logger=require(_0xad8d('0x7'))(_0xad8d('0x8'));var config=require(_0xad8d('0x9'));var jayson=require(_0xad8d('0xa'));var client=jayson[_0xad8d('0xb')][_0xad8d('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x41ca1d,_0x2cc5c4,_0x1e105c){return new BPromise(function(_0x19bc99,_0x11981b){return client[_0xad8d('0xd')](_0x41ca1d,_0x1e105c)['then'](function(_0x13683f){logger['info'](_0xad8d('0xe'),_0x2cc5c4,_0xad8d('0xf'));logger[_0xad8d('0x10')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x2cc5c4,'request\x20sent',JSON[_0xad8d('0x11')](_0x13683f));if(_0x13683f[_0xad8d('0x12')]){if(_0x13683f['error']['code']===0x1f4){logger[_0xad8d('0x12')]('VtigerConfiguration,\x20%s,\x20%s',_0x2cc5c4,_0x13683f[_0xad8d('0x12')][_0xad8d('0x13')]);return _0x11981b(_0x13683f[_0xad8d('0x12')]['message']);}logger[_0xad8d('0x12')]('VtigerConfiguration,\x20%s,\x20%s',_0x2cc5c4,_0x13683f['error'][_0xad8d('0x13')]);return _0x19bc99(_0x13683f[_0xad8d('0x12')][_0xad8d('0x13')]);}else{logger[_0xad8d('0x14')](_0xad8d('0xe'),_0x2cc5c4,_0xad8d('0xf'));_0x19bc99(_0x13683f[_0xad8d('0x15')][_0xad8d('0x13')]);}})[_0xad8d('0x16')](function(_0x5c6de9){logger[_0xad8d('0x12')](_0xad8d('0xe'),_0x2cc5c4,_0x5c6de9);_0x11981b(_0x5c6de9);});});}
\ No newline at end of file
index b285638..4d96b85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x944e=['show','post','isAuthenticated','create','/:id','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','get','index'];(function(_0x4cefd7,_0x3ac808){var _0xf3d6c5=function(_0x5502f1){while(--_0x5502f1){_0x4cefd7['push'](_0x4cefd7['shift']());}};_0xf3d6c5(++_0x3ac808);}(_0x944e,0xe5));var _0xe944=function(_0x536e78,_0x434558){_0x536e78=_0x536e78-0x0;var _0x3f32c7=_0x944e[_0x536e78];return _0x3f32c7;};'use strict';var multer=require(_0xe944('0x0'));var util=require('util');var path=require(_0xe944('0x1'));var timeout=require(_0xe944('0x2'));var express=require('express');var router=express[_0xe944('0x3')]();var fs_extra=require(_0xe944('0x4'));var auth=require(_0xe944('0x5'));var interaction=require(_0xe944('0x6'));var config=require(_0xe944('0x7'));var controller=require(_0xe944('0x8'));router[_0xe944('0x9')]('/',auth['isAuthenticated'](),controller[_0xe944('0xa')]);router[_0xe944('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe944('0xb')]);router[_0xe944('0xc')]('/',auth[_0xe944('0xd')](),controller[_0xe944('0xe')]);router['put'](_0xe944('0xf'),auth[_0xe944('0xd')](),controller[_0xe944('0x10')]);router[_0xe944('0x11')](_0xe944('0xf'),auth['isAuthenticated'](),controller[_0xe944('0x12')]);module[_0xe944('0x13')]=router;
\ No newline at end of file
+var _0xb439=['post','isAuthenticated','put','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intVtigerField.controller','index','get','/:id','show'];(function(_0x653b97,_0x586d26){var _0x1dbbd3=function(_0x48a77b){while(--_0x48a77b){_0x653b97['push'](_0x653b97['shift']());}};_0x1dbbd3(++_0x586d26);}(_0xb439,0x78));var _0x9b43=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0xb439[_0x1928c9];return _0x51b5fb;};'use strict';var multer=require('multer');var util=require(_0x9b43('0x0'));var path=require(_0x9b43('0x1'));var timeout=require(_0x9b43('0x2'));var express=require(_0x9b43('0x3'));var router=express[_0x9b43('0x4')]();var fs_extra=require(_0x9b43('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9b43('0x6'));var config=require(_0x9b43('0x7'));var controller=require(_0x9b43('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x9b43('0x9')]);router[_0x9b43('0xa')](_0x9b43('0xb'),auth['isAuthenticated'](),controller[_0x9b43('0xc')]);router[_0x9b43('0xd')]('/',auth[_0x9b43('0xe')](),controller['create']);router[_0x9b43('0xf')](_0x9b43('0xb'),auth[_0x9b43('0xe')](),controller['update']);router[_0x9b43('0x10')](_0x9b43('0xb'),auth[_0x9b43('0xe')](),controller[_0x9b43('0x11')]);module[_0x9b43('0x12')]=router;
\ No newline at end of file
index aadd513..7049234 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b85=['sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING'];(function(_0x1ce831,_0x5a94f4){var _0x259f98=function(_0x52b9b6){while(--_0x52b9b6){_0x1ce831['push'](_0x1ce831['shift']());}};_0x259f98(++_0x5a94f4);}(_0x8b85,0x120));var _0x58b8=function(_0x272d90,_0x5e70ff){_0x272d90=_0x272d90-0x0;var _0x2bf4a2=_0x8b85[_0x272d90];return _0x2bf4a2;};'use strict';var Sequelize=require(_0x58b8('0x0'));module[_0x58b8('0x1')]={'type':{'type':Sequelize[_0x58b8('0x2')](_0x58b8('0x3'),_0x58b8('0x4'),_0x58b8('0x5'),_0x58b8('0x6'),_0x58b8('0x7')),'defaultValue':_0x58b8('0x3')},'content':{'type':Sequelize[_0x58b8('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x58b8('0x2')](_0x58b8('0x3'),_0x58b8('0x4'),_0x58b8('0x5'))},'keyContent':{'type':Sequelize[_0x58b8('0x8')]},'idField':{'type':Sequelize[_0x58b8('0x8')]},'nameField':{'type':Sequelize[_0x58b8('0x8')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0789=['exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0x0789,0x13b));var _0x9078=function(_0x1557e2,_0x108137){_0x1557e2=_0x1557e2-0x0;var _0x565caa=_0x0789[_0x1557e2];return _0x565caa;};'use strict';var Sequelize=require('sequelize');module[_0x9078('0x0')]={'type':{'type':Sequelize[_0x9078('0x1')](_0x9078('0x2'),_0x9078('0x3'),_0x9078('0x4'),_0x9078('0x5'),_0x9078('0x6')),'defaultValue':_0x9078('0x2')},'content':{'type':Sequelize[_0x9078('0x7')]},'key':{'type':Sequelize[_0x9078('0x7')]},'keyType':{'type':Sequelize[_0x9078('0x1')](_0x9078('0x2'),_0x9078('0x3'),_0x9078('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x9078('0x7')]},'nameField':{'type':Sequelize[_0x9078('0x7')]},'customField':{'type':Sequelize[_0x9078('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index dabe2c9..f075c24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb22=['count','set','reject','save','then','destroy','error','stack','name','send','index','VtigerField','fieldName','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','include','findAll','rows','show','params','includeAll','options','find','catch','create','body','update','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit'];(function(_0x44d997,_0x50ccba){var _0x36710b=function(_0x44d5af){while(--_0x44d5af){_0x44d997['push'](_0x44d997['shift']());}};_0x36710b(++_0x50ccba);}(_0xbb22,0xbd));var _0x2bb2=function(_0x1f5eb9,_0x326ba0){_0x1f5eb9=_0x1f5eb9-0x0;var _0x46decf=_0xbb22[_0x1f5eb9];return _0x46decf;};'use strict';var emlformat=require(_0x2bb2('0x0'));var rimraf=require(_0x2bb2('0x1'));var zipdir=require(_0x2bb2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x2bb2('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x2bb2('0x4'));var util=require(_0x2bb2('0x5'));var path=require(_0x2bb2('0x6'));var sox=require(_0x2bb2('0x7'));var csv=require('to-csv');var ejs=require(_0x2bb2('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2bb2('0x9'));var squel=require(_0x2bb2('0xa'));var crypto=require('crypto');var jsforce=require(_0x2bb2('0xb'));var deskjs=require(_0x2bb2('0xc'));var toCsv=require('to-csv');var querystring=require(_0x2bb2('0xd'));var Papa=require(_0x2bb2('0xe'));var Redis=require(_0x2bb2('0xf'));var authService=require(_0x2bb2('0x10'));var qs=require(_0x2bb2('0x11'));var as=require(_0x2bb2('0x12'));var hardwareService=require(_0x2bb2('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x2bb2('0x14'));var config=require(_0x2bb2('0x15'));var licenseUtil=require(_0x2bb2('0x16'));var db=require(_0x2bb2('0x17'))['db'];function respondWithStatusCode(_0x4dace4,_0x102f0c){_0x102f0c=_0x102f0c||0xcc;return function(_0x1f55f4){if(_0x1f55f4){return _0x4dace4['sendStatus'](_0x102f0c);}return _0x4dace4[_0x2bb2('0x18')](_0x102f0c)[_0x2bb2('0x19')]();};}function respondWithResult(_0x56f411,_0x521fcf){_0x521fcf=_0x521fcf||0xc8;return function(_0x34dfe9){if(_0x34dfe9){return _0x56f411['status'](_0x521fcf)[_0x2bb2('0x1a')](_0x34dfe9);}};}function respondWithFilteredResult(_0x508efc,_0x1a9b9a){return function(_0x4b5828){if(_0x4b5828){var _0xed72dc=typeof _0x1a9b9a[_0x2bb2('0x1b')]===_0x2bb2('0x1c')&&typeof _0x1a9b9a[_0x2bb2('0x1d')]===_0x2bb2('0x1c');var _0x3270f8=_0x4b5828[_0x2bb2('0x1e')];var _0x53582b=_0xed72dc?0x0:_0x1a9b9a[_0x2bb2('0x1b')];var _0x5a6878=_0xed72dc?_0x4b5828[_0x2bb2('0x1e')]:_0x1a9b9a[_0x2bb2('0x1b')]+_0x1a9b9a['limit'];var _0x3207d0;if(_0x5a6878>=_0x3270f8){_0x5a6878=_0x3270f8;_0x3207d0=0xc8;}else{_0x3207d0=0xce;}_0x508efc[_0x2bb2('0x18')](_0x3207d0);return _0x508efc[_0x2bb2('0x1f')]('Content-Range',_0x53582b+'-'+_0x5a6878+'/'+_0x3270f8)['json'](_0x4b5828);}return null;};}function patchUpdates(_0x36d334){return function(_0x25ce88){try{jsonpatch['apply'](_0x25ce88,_0x36d334,!![]);}catch(_0x453151){return BPromise[_0x2bb2('0x20')](_0x453151);}return _0x25ce88[_0x2bb2('0x21')]();};}function saveUpdates(_0x4c4b54,_0x5aa150){return function(_0x50065e){if(_0x50065e){return _0x50065e['update'](_0x4c4b54)[_0x2bb2('0x22')](function(_0x3855d4){return _0x3855d4;});}return null;};}function removeEntity(_0x5c5572,_0x136531){return function(_0x4b5515){if(_0x4b5515){return _0x4b5515[_0x2bb2('0x23')]()[_0x2bb2('0x22')](function(){_0x5c5572[_0x2bb2('0x18')](0xcc)[_0x2bb2('0x19')]();});}};}function handleEntityNotFound(_0x52e235,_0x34c359){return function(_0x1216c5){if(!_0x1216c5){_0x52e235['sendStatus'](0x194);}return _0x1216c5;};}function handleError(_0x283882,_0x10956a){_0x10956a=_0x10956a||0x1f4;return function(_0x29c0dd){logger[_0x2bb2('0x24')](_0x29c0dd[_0x2bb2('0x25')]);if(_0x29c0dd['name']){delete _0x29c0dd[_0x2bb2('0x26')];}_0x283882[_0x2bb2('0x18')](_0x10956a)[_0x2bb2('0x27')](_0x29c0dd);};}exports[_0x2bb2('0x28')]=function(_0x149633,_0x5291c9){var _0x4cd424={},_0x1a5a46={},_0x4fb636={'count':0x0,'rows':[]};var _0x25fff4=_['map'](db[_0x2bb2('0x29')]['rawAttributes'],function(_0x345494){return{'name':_0x345494[_0x2bb2('0x2a')],'type':_0x345494['type']['key']};});_0x1a5a46[_0x2bb2('0x2b')]=_[_0x2bb2('0x2c')](_0x25fff4,_0x2bb2('0x26'));_0x1a5a46['query']=_[_0x2bb2('0x2d')](_0x149633[_0x2bb2('0x2e')]);_0x1a5a46[_0x2bb2('0x2f')]=_[_0x2bb2('0x30')](_0x1a5a46[_0x2bb2('0x2b')],_0x1a5a46[_0x2bb2('0x2e')]);_0x4cd424[_0x2bb2('0x31')]=_[_0x2bb2('0x30')](_0x1a5a46[_0x2bb2('0x2b')],qs[_0x2bb2('0x32')](_0x149633[_0x2bb2('0x2e')][_0x2bb2('0x32')]));_0x4cd424[_0x2bb2('0x31')]=_0x4cd424[_0x2bb2('0x31')][_0x2bb2('0x33')]?_0x4cd424[_0x2bb2('0x31')]:_0x1a5a46[_0x2bb2('0x2b')];if(!_0x149633[_0x2bb2('0x2e')][_0x2bb2('0x34')](_0x2bb2('0x35'))){_0x4cd424[_0x2bb2('0x1d')]=qs[_0x2bb2('0x1d')](_0x149633[_0x2bb2('0x2e')][_0x2bb2('0x1d')]);_0x4cd424[_0x2bb2('0x1b')]=qs[_0x2bb2('0x1b')](_0x149633[_0x2bb2('0x2e')][_0x2bb2('0x1b')]);}_0x4cd424['order']=qs[_0x2bb2('0x36')](_0x149633[_0x2bb2('0x2e')][_0x2bb2('0x36')]);_0x4cd424[_0x2bb2('0x37')]=qs['filters'](_[_0x2bb2('0x38')](_0x149633[_0x2bb2('0x2e')],_0x1a5a46['filters']),_0x25fff4);if(_0x149633[_0x2bb2('0x2e')][_0x2bb2('0x39')]){_0x4cd424[_0x2bb2('0x37')]=_[_0x2bb2('0x3a')](_0x4cd424['where'],{'$or':_[_0x2bb2('0x2c')](_0x25fff4,function(_0x39e689){if(_0x39e689[_0x2bb2('0x3b')]!==_0x2bb2('0x3c')){var _0x5e3676={};_0x5e3676[_0x39e689[_0x2bb2('0x26')]]={'$like':'%'+_0x149633['query']['filter']+'%'};return _0x5e3676;}})});}_0x4cd424=_[_0x2bb2('0x3a')]({},_0x4cd424,_0x149633['options']);var _0x4fcd8a={'where':_0x4cd424[_0x2bb2('0x37')]};return db['VtigerField'][_0x2bb2('0x1e')](_0x4fcd8a)[_0x2bb2('0x22')](function(_0x5e5d7a){_0x4fb636[_0x2bb2('0x1e')]=_0x5e5d7a;if(_0x149633['query']['includeAll']){_0x4cd424[_0x2bb2('0x3d')]=[{'all':!![]}];}return db['VtigerField'][_0x2bb2('0x3e')](_0x4cd424);})['then'](function(_0x36bf73){_0x4fb636[_0x2bb2('0x3f')]=_0x36bf73;return _0x4fb636;})[_0x2bb2('0x22')](respondWithFilteredResult(_0x5291c9,_0x4cd424))['catch'](handleError(_0x5291c9,null));};exports[_0x2bb2('0x40')]=function(_0x163be6,_0x5a4fe3){var _0x3e86d5={'raw':!![],'where':{'id':_0x163be6[_0x2bb2('0x41')]['id']}},_0x30d953={};_0x30d953['model']=_[_0x2bb2('0x2d')](db[_0x2bb2('0x29')]['rawAttributes']);_0x30d953[_0x2bb2('0x2e')]=_[_0x2bb2('0x2d')](_0x163be6[_0x2bb2('0x2e')]);_0x30d953[_0x2bb2('0x2f')]=_[_0x2bb2('0x30')](_0x30d953[_0x2bb2('0x2b')],_0x30d953[_0x2bb2('0x2e')]);_0x3e86d5[_0x2bb2('0x31')]=_['intersection'](_0x30d953['model'],qs[_0x2bb2('0x32')](_0x163be6[_0x2bb2('0x2e')][_0x2bb2('0x32')]));_0x3e86d5['attributes']=_0x3e86d5[_0x2bb2('0x31')][_0x2bb2('0x33')]?_0x3e86d5['attributes']:_0x30d953[_0x2bb2('0x2b')];if(_0x163be6[_0x2bb2('0x2e')][_0x2bb2('0x42')]){_0x3e86d5[_0x2bb2('0x3d')]=[{'all':!![]}];}_0x3e86d5=_[_0x2bb2('0x3a')]({},_0x3e86d5,_0x163be6[_0x2bb2('0x43')]);return db[_0x2bb2('0x29')][_0x2bb2('0x44')](_0x3e86d5)[_0x2bb2('0x22')](handleEntityNotFound(_0x5a4fe3,null))[_0x2bb2('0x22')](respondWithResult(_0x5a4fe3,null))[_0x2bb2('0x45')](handleError(_0x5a4fe3,null));};exports[_0x2bb2('0x46')]=function(_0x5d539a,_0x89c438){return db['VtigerField']['create'](_0x5d539a[_0x2bb2('0x47')],{})[_0x2bb2('0x22')](respondWithResult(_0x89c438,0xc9))[_0x2bb2('0x45')](handleError(_0x89c438,null));};exports[_0x2bb2('0x48')]=function(_0x34b4d2,_0x1b7a69){if(_0x34b4d2[_0x2bb2('0x47')]['id']){delete _0x34b4d2[_0x2bb2('0x47')]['id'];}return db[_0x2bb2('0x29')][_0x2bb2('0x44')]({'where':{'id':_0x34b4d2[_0x2bb2('0x41')]['id']}})[_0x2bb2('0x22')](handleEntityNotFound(_0x1b7a69,null))[_0x2bb2('0x22')](saveUpdates(_0x34b4d2[_0x2bb2('0x47')],null))[_0x2bb2('0x22')](respondWithResult(_0x1b7a69,null))[_0x2bb2('0x45')](handleError(_0x1b7a69,null));};exports[_0x2bb2('0x23')]=function(_0x3ec95d,_0x4e6ca4){return db[_0x2bb2('0x29')][_0x2bb2('0x44')]({'where':{'id':_0x3ec95d[_0x2bb2('0x41')]['id']}})[_0x2bb2('0x22')](handleEntityNotFound(_0x4e6ca4,null))['then'](removeEntity(_0x4e6ca4,null))[_0x2bb2('0x45')](handleError(_0x4e6ca4,null));};
\ No newline at end of file
+var _0x7062=['end','error','stack','name','send','index','VtigerField','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','order','sort','where','filter','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','create','body','find','rimraf','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy'];(function(_0x22d601,_0x59850e){var _0x25b4bd=function(_0x9c95fc){while(--_0x9c95fc){_0x22d601['push'](_0x22d601['shift']());}};_0x25b4bd(++_0x59850e);}(_0x7062,0x13b));var _0x2706=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x7062[_0x4b369d];return _0x571a98;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2706('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2706('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2706('0x2'));var Mustache=require(_0x2706('0x3'));var util=require(_0x2706('0x4'));var path=require(_0x2706('0x5'));var sox=require(_0x2706('0x6'));var csv=require(_0x2706('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2706('0x8'));var _=require(_0x2706('0x9'));var squel=require(_0x2706('0xa'));var crypto=require(_0x2706('0xb'));var jsforce=require(_0x2706('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x2706('0x7'));var querystring=require(_0x2706('0xd'));var Papa=require(_0x2706('0xe'));var Redis=require(_0x2706('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2706('0x10'));var logger=require(_0x2706('0x11'))(_0x2706('0x12'));var utils=require(_0x2706('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x2706('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xf026da,_0x11f202){_0x11f202=_0x11f202||0xcc;return function(_0x4974eb){if(_0x4974eb){return _0xf026da[_0x2706('0x15')](_0x11f202);}return _0xf026da[_0x2706('0x16')](_0x11f202)['end']();};}function respondWithResult(_0xe2e602,_0x5793b5){_0x5793b5=_0x5793b5||0xc8;return function(_0x16e15b){if(_0x16e15b){return _0xe2e602[_0x2706('0x16')](_0x5793b5)[_0x2706('0x17')](_0x16e15b);}};}function respondWithFilteredResult(_0xc57929,_0x1df04a){return function(_0x5da7ca){if(_0x5da7ca){var _0x5297b3=typeof _0x1df04a[_0x2706('0x18')]===_0x2706('0x19')&&typeof _0x1df04a[_0x2706('0x1a')]===_0x2706('0x19');var _0x36a013=_0x5da7ca[_0x2706('0x1b')];var _0xafc7e3=_0x5297b3?0x0:_0x1df04a[_0x2706('0x18')];var _0x109c42=_0x5297b3?_0x5da7ca[_0x2706('0x1b')]:_0x1df04a[_0x2706('0x18')]+_0x1df04a[_0x2706('0x1a')];var _0xd6036c;if(_0x109c42>=_0x36a013){_0x109c42=_0x36a013;_0xd6036c=0xc8;}else{_0xd6036c=0xce;}_0xc57929[_0x2706('0x16')](_0xd6036c);return _0xc57929[_0x2706('0x1c')](_0x2706('0x1d'),_0xafc7e3+'-'+_0x109c42+'/'+_0x36a013)[_0x2706('0x17')](_0x5da7ca);}return null;};}function patchUpdates(_0x2f48b5){return function(_0x2f59f3){try{jsonpatch[_0x2706('0x1e')](_0x2f59f3,_0x2f48b5,!![]);}catch(_0x9607f5){return BPromise['reject'](_0x9607f5);}return _0x2f59f3[_0x2706('0x1f')]();};}function saveUpdates(_0x5a34eb,_0x2f3756){return function(_0x24e619){if(_0x24e619){return _0x24e619[_0x2706('0x20')](_0x5a34eb)[_0x2706('0x21')](function(_0x4732bc){return _0x4732bc;});}return null;};}function removeEntity(_0xf98e0a,_0x1233ce){return function(_0x479d1a){if(_0x479d1a){return _0x479d1a[_0x2706('0x22')]()[_0x2706('0x21')](function(){_0xf98e0a[_0x2706('0x16')](0xcc)[_0x2706('0x23')]();});}};}function handleEntityNotFound(_0xef07ec,_0x3a41fe){return function(_0x20467e){if(!_0x20467e){_0xef07ec['sendStatus'](0x194);}return _0x20467e;};}function handleError(_0x41e3b7,_0x5bcccd){_0x5bcccd=_0x5bcccd||0x1f4;return function(_0x42e37c){logger[_0x2706('0x24')](_0x42e37c[_0x2706('0x25')]);if(_0x42e37c[_0x2706('0x26')]){delete _0x42e37c[_0x2706('0x26')];}_0x41e3b7[_0x2706('0x16')](_0x5bcccd)[_0x2706('0x27')](_0x42e37c);};}exports[_0x2706('0x28')]=function(_0x456421,_0x330e2a){var _0x4329f0={},_0x1fd465={},_0x28be5e={'count':0x0,'rows':[]};var _0x4abcf9=_['map'](db[_0x2706('0x29')][_0x2706('0x2a')],function(_0x31cb01){return{'name':_0x31cb01[_0x2706('0x2b')],'type':_0x31cb01[_0x2706('0x2c')]['key']};});_0x1fd465[_0x2706('0x2d')]=_[_0x2706('0x2e')](_0x4abcf9,'name');_0x1fd465[_0x2706('0x2f')]=_[_0x2706('0x30')](_0x456421['query']);_0x1fd465[_0x2706('0x31')]=_[_0x2706('0x32')](_0x1fd465[_0x2706('0x2d')],_0x1fd465[_0x2706('0x2f')]);_0x4329f0[_0x2706('0x33')]=_['intersection'](_0x1fd465[_0x2706('0x2d')],qs[_0x2706('0x34')](_0x456421[_0x2706('0x2f')][_0x2706('0x34')]));_0x4329f0[_0x2706('0x33')]=_0x4329f0[_0x2706('0x33')][_0x2706('0x35')]?_0x4329f0[_0x2706('0x33')]:_0x1fd465[_0x2706('0x2d')];if(!_0x456421[_0x2706('0x2f')]['hasOwnProperty']('nolimit')){_0x4329f0[_0x2706('0x1a')]=qs[_0x2706('0x1a')](_0x456421[_0x2706('0x2f')][_0x2706('0x1a')]);_0x4329f0[_0x2706('0x18')]=qs[_0x2706('0x18')](_0x456421['query'][_0x2706('0x18')]);}_0x4329f0[_0x2706('0x36')]=qs[_0x2706('0x37')](_0x456421[_0x2706('0x2f')][_0x2706('0x37')]);_0x4329f0[_0x2706('0x38')]=qs[_0x2706('0x31')](_['pick'](_0x456421[_0x2706('0x2f')],_0x1fd465[_0x2706('0x31')]),_0x4abcf9);if(_0x456421[_0x2706('0x2f')][_0x2706('0x39')]){_0x4329f0[_0x2706('0x38')]=_['merge'](_0x4329f0[_0x2706('0x38')],{'$or':_[_0x2706('0x2e')](_0x4abcf9,function(_0x118c2d){if(_0x118c2d['type']!==_0x2706('0x3a')){var _0x594ee6={};_0x594ee6[_0x118c2d[_0x2706('0x26')]]={'$like':'%'+_0x456421[_0x2706('0x2f')][_0x2706('0x39')]+'%'};return _0x594ee6;}})});}_0x4329f0=_[_0x2706('0x3b')]({},_0x4329f0,_0x456421[_0x2706('0x3c')]);var _0x445354={'where':_0x4329f0[_0x2706('0x38')]};return db['VtigerField'][_0x2706('0x1b')](_0x445354)[_0x2706('0x21')](function(_0x14f86f){_0x28be5e[_0x2706('0x1b')]=_0x14f86f;if(_0x456421[_0x2706('0x2f')][_0x2706('0x3d')]){_0x4329f0['include']=[{'all':!![]}];}return db[_0x2706('0x29')][_0x2706('0x3e')](_0x4329f0);})['then'](function(_0x44c70b){_0x28be5e[_0x2706('0x3f')]=_0x44c70b;return _0x28be5e;})[_0x2706('0x21')](respondWithFilteredResult(_0x330e2a,_0x4329f0))[_0x2706('0x40')](handleError(_0x330e2a,null));};exports[_0x2706('0x41')]=function(_0x9f4037,_0x3cf730){var _0x5c5f58={'raw':!![],'where':{'id':_0x9f4037[_0x2706('0x42')]['id']}},_0x1b7150={};_0x1b7150[_0x2706('0x2d')]=_[_0x2706('0x30')](db[_0x2706('0x29')][_0x2706('0x2a')]);_0x1b7150['query']=_[_0x2706('0x30')](_0x9f4037['query']);_0x1b7150[_0x2706('0x31')]=_[_0x2706('0x32')](_0x1b7150[_0x2706('0x2d')],_0x1b7150[_0x2706('0x2f')]);_0x5c5f58[_0x2706('0x33')]=_['intersection'](_0x1b7150['model'],qs['fields'](_0x9f4037['query']['fields']));_0x5c5f58[_0x2706('0x33')]=_0x5c5f58[_0x2706('0x33')][_0x2706('0x35')]?_0x5c5f58[_0x2706('0x33')]:_0x1b7150[_0x2706('0x2d')];if(_0x9f4037['query'][_0x2706('0x3d')]){_0x5c5f58['include']=[{'all':!![]}];}_0x5c5f58=_[_0x2706('0x3b')]({},_0x5c5f58,_0x9f4037['options']);return db[_0x2706('0x29')]['find'](_0x5c5f58)[_0x2706('0x21')](handleEntityNotFound(_0x3cf730,null))[_0x2706('0x21')](respondWithResult(_0x3cf730,null))['catch'](handleError(_0x3cf730,null));};exports[_0x2706('0x43')]=function(_0x4f58d8,_0x36557a){return db[_0x2706('0x29')][_0x2706('0x43')](_0x4f58d8[_0x2706('0x44')],{})[_0x2706('0x21')](respondWithResult(_0x36557a,0xc9))[_0x2706('0x40')](handleError(_0x36557a,null));};exports[_0x2706('0x20')]=function(_0x5ee9a0,_0x181140){if(_0x5ee9a0['body']['id']){delete _0x5ee9a0[_0x2706('0x44')]['id'];}return db['VtigerField'][_0x2706('0x45')]({'where':{'id':_0x5ee9a0[_0x2706('0x42')]['id']}})['then'](handleEntityNotFound(_0x181140,null))[_0x2706('0x21')](saveUpdates(_0x5ee9a0[_0x2706('0x44')],null))[_0x2706('0x21')](respondWithResult(_0x181140,null))['catch'](handleError(_0x181140,null));};exports['destroy']=function(_0x45a1ba,_0x528feb){return db[_0x2706('0x29')]['find']({'where':{'id':_0x45a1ba[_0x2706('0x42')]['id']}})['then'](handleEntityNotFound(_0x528feb,null))[_0x2706('0x21')](removeEntity(_0x528feb,null))[_0x2706('0x40')](handleError(_0x528feb,null));};
\ No newline at end of file
index 637c29c..522c1a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x268c=['path','rimraf','../../config/environment','./intVtigerField.attributes','exports','define','VtigerField','vtiger_unique_index','idField','FieldId','lodash','util','../../config/logger','api'];(function(_0x5a1a21,_0x1d165d){var _0x48567a=function(_0x43e51f){while(--_0x43e51f){_0x5a1a21['push'](_0x5a1a21['shift']());}};_0x48567a(++_0x1d165d);}(_0x268c,0x130));var _0xc268=function(_0x1c7137,_0x4c7c26){_0x1c7137=_0x1c7137-0x0;var _0xeb4432=_0x268c[_0x1c7137];return _0xeb4432;};'use strict';var _=require(_0xc268('0x0'));var util=require(_0xc268('0x1'));var logger=require(_0xc268('0x2'))(_0xc268('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xc268('0x4'));var rimraf=require(_0xc268('0x5'));var config=require(_0xc268('0x6'));var attributes=require(_0xc268('0x7'));module[_0xc268('0x8')]=function(_0x46c426,_0x58af82){return _0x46c426[_0xc268('0x9')](_0xc268('0xa'),attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':_0xc268('0xb'),'fields':[_0xc268('0xc'),_0xc268('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7e62=['util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerField.attributes','define','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','lodash'];(function(_0x2d7091,_0xd038cd){var _0x549bcc=function(_0x27c18d){while(--_0x27c18d){_0x2d7091['push'](_0x2d7091['shift']());}};_0x549bcc(++_0xd038cd);}(_0x7e62,0x1b2));var _0x27e6=function(_0x58ab89,_0xf01b2d){_0x58ab89=_0x58ab89-0x0;var _0xb93c04=_0x7e62[_0x58ab89];return _0xb93c04;};'use strict';var _=require(_0x27e6('0x0'));var util=require(_0x27e6('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x27e6('0x2'));var BPromise=require(_0x27e6('0x3'));var rp=require(_0x27e6('0x4'));var fs=require('fs');var path=require(_0x27e6('0x5'));var rimraf=require(_0x27e6('0x6'));var config=require(_0x27e6('0x7'));var attributes=require(_0x27e6('0x8'));module['exports']=function(_0x156e45,_0x2180a8){return _0x156e45[_0x27e6('0x9')](_0x27e6('0xa'),attributes,{'tableName':_0x27e6('0xb'),'paranoid':![],'indexes':[{'name':_0x27e6('0xc'),'fields':[_0x27e6('0xd'),_0x27e6('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 4c28d5d..8b45d80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f20=['result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','error','code','message','info'];(function(_0x1b1881,_0x3229ac){var _0x569774=function(_0x4eeb1f){while(--_0x4eeb1f){_0x1b1881['push'](_0x1b1881['shift']());}};_0x569774(++_0x3229ac);}(_0x4f20,0x86));var _0x04f2=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x4f20[_0x465a0c];return _0x1e202e;};'use strict';var _=require('lodash');var util=require(_0x04f2('0x0'));var moment=require(_0x04f2('0x1'));var BPromise=require(_0x04f2('0x2'));var rs=require(_0x04f2('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x04f2('0x4'))['db'];var utils=require(_0x04f2('0x5'));var logger=require(_0x04f2('0x6'))(_0x04f2('0x7'));var config=require(_0x04f2('0x8'));var jayson=require(_0x04f2('0x9'));var client=jayson['client'][_0x04f2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xbd87f,_0xf9f124,_0x586a0d){return new BPromise(function(_0x3d2827,_0x5e8cb2){return client['request'](_0xbd87f,_0x586a0d)[_0x04f2('0xb')](function(_0x3a2814){logger['info'](_0x04f2('0xc'),_0xf9f124,_0x04f2('0xd'));logger[_0x04f2('0xe')](_0x04f2('0xf'),_0xf9f124,_0x04f2('0xd'),JSON['stringify'](_0x3a2814));if(_0x3a2814[_0x04f2('0x10')]){if(_0x3a2814['error'][_0x04f2('0x11')]===0x1f4){logger[_0x04f2('0x10')](_0x04f2('0xc'),_0xf9f124,_0x3a2814['error']['message']);return _0x5e8cb2(_0x3a2814['error'][_0x04f2('0x12')]);}logger[_0x04f2('0x10')]('VtigerField,\x20%s,\x20%s',_0xf9f124,_0x3a2814[_0x04f2('0x10')][_0x04f2('0x12')]);return _0x3d2827(_0x3a2814['error'][_0x04f2('0x12')]);}else{logger[_0x04f2('0x13')](_0x04f2('0xc'),_0xf9f124,'request\x20sent');_0x3d2827(_0x3a2814[_0x04f2('0x14')]['message']);}})[_0x04f2('0x15')](function(_0x47e3b9){logger[_0x04f2('0x10')]('VtigerField,\x20%s,\x20%s',_0xf9f124,_0x47e3b9);_0x5e8cb2(_0x47e3b9);});});}
\ No newline at end of file
+var _0x5490=['../../config/logger','rpc','jayson/promise','client','http','request','then','info','VtigerField,\x20%s,\x20%s','debug','VtigerField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x5216e0,_0x4f8cb9){var _0x5b3f40=function(_0x30c832){while(--_0x30c832){_0x5216e0['push'](_0x5216e0['shift']());}};_0x5b3f40(++_0x4f8cb9);}(_0x5490,0x1ed));var _0x0549=function(_0x152bf7,_0xca78c8){_0x152bf7=_0x152bf7-0x0;var _0x55250a=_0x5490[_0x152bf7];return _0x55250a;};'use strict';var _=require(_0x0549('0x0'));var util=require(_0x0549('0x1'));var moment=require(_0x0549('0x2'));var BPromise=require(_0x0549('0x3'));var rs=require(_0x0549('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0549('0x5'))['db'];var utils=require(_0x0549('0x6'));var logger=require(_0x0549('0x7'))(_0x0549('0x8'));var config=require('../../config/environment');var jayson=require(_0x0549('0x9'));var client=jayson[_0x0549('0xa')][_0x0549('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x301976,_0x4bfbb4,_0x55200b){return new BPromise(function(_0x45354c,_0x2adae1){return client[_0x0549('0xc')](_0x301976,_0x55200b)[_0x0549('0xd')](function(_0x3ac1ed){logger[_0x0549('0xe')](_0x0549('0xf'),_0x4bfbb4,'request\x20sent');logger[_0x0549('0x10')](_0x0549('0x11'),_0x4bfbb4,_0x0549('0x12'),JSON[_0x0549('0x13')](_0x3ac1ed));if(_0x3ac1ed[_0x0549('0x14')]){if(_0x3ac1ed[_0x0549('0x14')][_0x0549('0x15')]===0x1f4){logger[_0x0549('0x14')](_0x0549('0xf'),_0x4bfbb4,_0x3ac1ed[_0x0549('0x14')][_0x0549('0x16')]);return _0x2adae1(_0x3ac1ed[_0x0549('0x14')][_0x0549('0x16')]);}logger[_0x0549('0x14')](_0x0549('0xf'),_0x4bfbb4,_0x3ac1ed[_0x0549('0x14')][_0x0549('0x16')]);return _0x45354c(_0x3ac1ed[_0x0549('0x14')][_0x0549('0x16')]);}else{logger[_0x0549('0xe')](_0x0549('0xf'),_0x4bfbb4,_0x0549('0x12'));_0x45354c(_0x3ac1ed[_0x0549('0x17')][_0x0549('0x16')]);}})[_0x0549('0x18')](function(_0x1c15fb){logger[_0x0549('0x14')]('VtigerField,\x20%s,\x20%s',_0x4bfbb4,_0x1c15fb);_0x2adae1(_0x1c15fb);});});}
\ No newline at end of file
index 051c678..d645a91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bf5=['update','destroy','multer','util','connect-timeout','express','fs-extra','../../config/environment','./intZendeskAccount.controller','get','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','post','create','put'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x3bf5,0x17e));var _0x53bf=function(_0x596c43,_0x28647a){_0x596c43=_0x596c43-0x0;var _0x4e1315=_0x3bf5[_0x596c43];return _0x4e1315;};'use strict';var multer=require(_0x53bf('0x0'));var util=require(_0x53bf('0x1'));var path=require('path');var timeout=require(_0x53bf('0x2'));var express=require(_0x53bf('0x3'));var router=express['Router']();var fs_extra=require(_0x53bf('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x53bf('0x5'));var controller=require(_0x53bf('0x6'));router[_0x53bf('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x53bf('0x7')](_0x53bf('0x8'),auth[_0x53bf('0x9')](),controller[_0x53bf('0xa')]);router['get'](_0x53bf('0xb'),auth[_0x53bf('0x9')](),controller[_0x53bf('0xc')]);router['get'](_0x53bf('0xd'),auth[_0x53bf('0x9')](),controller['getFields']);router[_0x53bf('0xe')]('/',auth[_0x53bf('0x9')](),controller[_0x53bf('0xf')]);router[_0x53bf('0xe')]('/:id/configurations',auth[_0x53bf('0x9')](),controller['addConfiguration']);router[_0x53bf('0x10')](_0x53bf('0x8'),auth[_0x53bf('0x9')](),controller[_0x53bf('0x11')]);router['delete'](_0x53bf('0x8'),auth[_0x53bf('0x9')](),controller[_0x53bf('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x1d9f=['/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','get','isAuthenticated','/:id'];(function(_0x917274,_0x389a04){var _0x2a971e=function(_0x5a7f3f){while(--_0x5a7f3f){_0x917274['push'](_0x917274['shift']());}};_0x2a971e(++_0x389a04);}(_0x1d9f,0x174));var _0xf1d9=function(_0x4d6c87,_0x3ec771){_0x4d6c87=_0x4d6c87-0x0;var _0x2988fb=_0x1d9f[_0x4d6c87];return _0x2988fb;};'use strict';var multer=require(_0xf1d9('0x0'));var util=require('util');var path=require(_0xf1d9('0x1'));var timeout=require(_0xf1d9('0x2'));var express=require('express');var router=express[_0xf1d9('0x3')]();var fs_extra=require(_0xf1d9('0x4'));var auth=require(_0xf1d9('0x5'));var interaction=require(_0xf1d9('0x6'));var config=require(_0xf1d9('0x7'));var controller=require(_0xf1d9('0x8'));router[_0xf1d9('0x9')]('/',auth[_0xf1d9('0xa')](),controller['index']);router['get'](_0xf1d9('0xb'),auth['isAuthenticated'](),controller['show']);router['get'](_0xf1d9('0xc'),auth[_0xf1d9('0xa')](),controller[_0xf1d9('0xd')]);router[_0xf1d9('0x9')](_0xf1d9('0xe'),auth[_0xf1d9('0xa')](),controller[_0xf1d9('0xf')]);router['post']('/',auth[_0xf1d9('0xa')](),controller[_0xf1d9('0x10')]);router[_0xf1d9('0x11')](_0xf1d9('0xc'),auth['isAuthenticated'](),controller[_0xf1d9('0x12')]);router[_0xf1d9('0x13')](_0xf1d9('0xb'),auth[_0xf1d9('0xa')](),controller[_0xf1d9('0x14')]);router[_0xf1d9('0x15')](_0xf1d9('0xb'),auth[_0xf1d9('0xa')](),controller[_0xf1d9('0x16')]);module[_0xf1d9('0x17')]=router;
\ No newline at end of file
index 4335093..350ba31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07d7=['STRING','username','remoteUri','ENUM','password','token','integrationTab','sequelize','exports'];(function(_0x10df31,_0xe84645){var _0x4152a8=function(_0x126134){while(--_0x126134){_0x10df31['push'](_0x10df31['shift']());}};_0x4152a8(++_0xe84645);}(_0x07d7,0x85));var _0x707d=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x07d7[_0x413feb];return _0x40ee88;};'use strict';var Sequelize=require(_0x707d('0x0'));module[_0x707d('0x1')]={'name':{'type':Sequelize[_0x707d('0x2')]},'description':{'type':Sequelize[_0x707d('0x2')]},'username':{'type':Sequelize[_0x707d('0x2')],'unique':_0x707d('0x3')},'password':{'type':Sequelize[_0x707d('0x2')]},'token':{'type':Sequelize[_0x707d('0x2')]},'remoteUri':{'type':Sequelize[_0x707d('0x2')],'unique':_0x707d('0x4')},'authType':{'type':Sequelize[_0x707d('0x5')](_0x707d('0x6'),_0x707d('0x7')),'defaultValue':_0x707d('0x6')},'serverUrl':{'type':Sequelize[_0x707d('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x707d('0x5')]('integrationTab','newTab'),'defaultValue':_0x707d('0x8')}};
\ No newline at end of file
+var _0xf69c=['token','ENUM','newTab','integrationTab','sequelize','STRING','username','remoteUri','password'];(function(_0x21e32b,_0x37eaa2){var _0x37c0d0=function(_0x183b7d){while(--_0x183b7d){_0x21e32b['push'](_0x21e32b['shift']());}};_0x37c0d0(++_0x37eaa2);}(_0xf69c,0x151));var _0xcf69=function(_0x3a7722,_0x5d6f9f){_0x3a7722=_0x3a7722-0x0;var _0x2755aa=_0xf69c[_0x3a7722];return _0x2755aa;};'use strict';var Sequelize=require(_0xcf69('0x0'));module['exports']={'name':{'type':Sequelize[_0xcf69('0x1')]},'description':{'type':Sequelize[_0xcf69('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0xcf69('0x2')},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0xcf69('0x1')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xcf69('0x3')},'authType':{'type':Sequelize['ENUM'](_0xcf69('0x4'),_0xcf69('0x5')),'defaultValue':_0xcf69('0x4')},'serverUrl':{'type':Sequelize[_0xcf69('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xcf69('0x6')]('integrationTab',_0xcf69('0x7')),'defaultValue':_0xcf69('0x8')}};
\ No newline at end of file
index e1f9dcd..54552a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa902=['%s:%s','base64','%s/token:%s','token','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','description','group','assignee','remove','includes','position','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','limit','set','Content-Range','json','apply','reject','update','destroy','then','end','error','stack','ZendeskAccount','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','fields','attributes','length','nolimit','order','where','pick','merge','VIRTUAL','filter','options','count','includeAll','include','findAll','rows','show','params','find','catch','create','body','sort','map','getConfigurations','hasOwnProperty','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions','ZendeskConfiguration','ZendeskField','getFields','findOne','username','password','remoteUri','slice','GET','format','%s/%s','ticket_fields','authType','headers','Basic\x20%s'];(function(_0xf29869,_0x137d16){var _0x47f2b1=function(_0x5340e2){while(--_0x5340e2){_0xf29869['push'](_0xf29869['shift']());}};_0x47f2b1(++_0x137d16);}(_0xa902,0x8d));var _0x2a90=function(_0x5550e0,_0x573729){_0x5550e0=_0x5550e0-0x0;var _0x2833e1=_0xa902[_0x5550e0];return _0x2833e1;};'use strict';var emlformat=require(_0x2a90('0x0'));var rimraf=require(_0x2a90('0x1'));var zipdir=require(_0x2a90('0x2'));var jsonpatch=require(_0x2a90('0x3'));var rp=require(_0x2a90('0x4'));var moment=require('moment');var BPromise=require(_0x2a90('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x2a90('0x6'));var sox=require(_0x2a90('0x7'));var csv=require(_0x2a90('0x8'));var ejs=require(_0x2a90('0x9'));var fs=require('fs');var fs_extra=require(_0x2a90('0xa'));var _=require(_0x2a90('0xb'));var squel=require('squel');var crypto=require(_0x2a90('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2a90('0x8'));var querystring=require(_0x2a90('0xd'));var Papa=require(_0x2a90('0xe'));var Redis=require(_0x2a90('0xf'));var authService=require(_0x2a90('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x2a90('0x11'));var hardwareService=require(_0x2a90('0x12'));var logger=require(_0x2a90('0x13'))(_0x2a90('0x14'));var utils=require('../../config/utils');var config=require(_0x2a90('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x2a90('0x16'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x1f6953,_0x57aee3){_0x57aee3=_0x57aee3||0xcc;return function(_0x407ce5){if(_0x407ce5){return _0x1f6953[_0x2a90('0x17')](_0x57aee3);}return _0x1f6953[_0x2a90('0x18')](_0x57aee3)['end']();};}function respondWithResult(_0x56d1b8,_0x57227c){_0x57227c=_0x57227c||0xc8;return function(_0x46cb32){if(_0x46cb32){return _0x56d1b8[_0x2a90('0x18')](_0x57227c)['json'](_0x46cb32);}};}function respondWithFilteredResult(_0x1ff63d,_0x21c648){return function(_0x312782){if(_0x312782){var _0x25bd0e=typeof _0x21c648[_0x2a90('0x19')]===_0x2a90('0x1a')&&typeof _0x21c648[_0x2a90('0x1b')]===_0x2a90('0x1a');var _0x43eea5=_0x312782['count'];var _0x162f0b=_0x25bd0e?0x0:_0x21c648[_0x2a90('0x19')];var _0x4190ff=_0x25bd0e?_0x312782['count']:_0x21c648[_0x2a90('0x19')]+_0x21c648[_0x2a90('0x1b')];var _0x148d18;if(_0x4190ff>=_0x43eea5){_0x4190ff=_0x43eea5;_0x148d18=0xc8;}else{_0x148d18=0xce;}_0x1ff63d[_0x2a90('0x18')](_0x148d18);return _0x1ff63d[_0x2a90('0x1c')](_0x2a90('0x1d'),_0x162f0b+'-'+_0x4190ff+'/'+_0x43eea5)[_0x2a90('0x1e')](_0x312782);}return null;};}function patchUpdates(_0x114d42){return function(_0xf97adb){try{jsonpatch[_0x2a90('0x1f')](_0xf97adb,_0x114d42,!![]);}catch(_0x1340b9){return BPromise[_0x2a90('0x20')](_0x1340b9);}return _0xf97adb['save']();};}function saveUpdates(_0x3da7d0,_0x217873){return function(_0x2955a9){if(_0x2955a9){return _0x2955a9[_0x2a90('0x21')](_0x3da7d0)['then'](function(_0x180485){return _0x180485;});}return null;};}function removeEntity(_0xd033d,_0x4ed9e6){return function(_0x1bcfd7){if(_0x1bcfd7){return _0x1bcfd7[_0x2a90('0x22')]()[_0x2a90('0x23')](function(){_0xd033d[_0x2a90('0x18')](0xcc)[_0x2a90('0x24')]();});}};}function handleEntityNotFound(_0x1303d9,_0x29ed73){return function(_0x24a6d3){if(!_0x24a6d3){_0x1303d9['sendStatus'](0x194);}return _0x24a6d3;};}function handleError(_0x27f883,_0x17f978){_0x17f978=_0x17f978||0x1f4;return function(_0x3934d4){logger[_0x2a90('0x25')](_0x3934d4[_0x2a90('0x26')]);if(_0x3934d4['name']){delete _0x3934d4['name'];}_0x27f883[_0x2a90('0x18')](_0x17f978)['send'](_0x3934d4);};}exports['index']=function(_0x4969c3,_0x2d83b3){var _0x3c78f5={},_0x595638={},_0x5bd700={'count':0x0,'rows':[]};var _0x1add9a=_['map'](db[_0x2a90('0x27')][_0x2a90('0x28')],function(_0x3b580f){return{'name':_0x3b580f[_0x2a90('0x29')],'type':_0x3b580f[_0x2a90('0x2a')][_0x2a90('0x2b')]};});_0x595638[_0x2a90('0x2c')]=_['map'](_0x1add9a,_0x2a90('0x2d'));_0x595638[_0x2a90('0x2e')]=_[_0x2a90('0x2f')](_0x4969c3['query']);_0x595638[_0x2a90('0x30')]=_[_0x2a90('0x31')](_0x595638[_0x2a90('0x2c')],_0x595638[_0x2a90('0x2e')]);_0x3c78f5['attributes']=_[_0x2a90('0x31')](_0x595638[_0x2a90('0x2c')],qs[_0x2a90('0x32')](_0x4969c3[_0x2a90('0x2e')][_0x2a90('0x32')]));_0x3c78f5[_0x2a90('0x33')]=_0x3c78f5['attributes'][_0x2a90('0x34')]?_0x3c78f5[_0x2a90('0x33')]:_0x595638[_0x2a90('0x2c')];if(!_0x4969c3[_0x2a90('0x2e')]['hasOwnProperty'](_0x2a90('0x35'))){_0x3c78f5[_0x2a90('0x1b')]=qs['limit'](_0x4969c3[_0x2a90('0x2e')][_0x2a90('0x1b')]);_0x3c78f5['offset']=qs['offset'](_0x4969c3[_0x2a90('0x2e')][_0x2a90('0x19')]);}_0x3c78f5[_0x2a90('0x36')]=qs['sort'](_0x4969c3[_0x2a90('0x2e')]['sort']);_0x3c78f5[_0x2a90('0x37')]=qs['filters'](_[_0x2a90('0x38')](_0x4969c3['query'],_0x595638['filters']),_0x1add9a);if(_0x4969c3[_0x2a90('0x2e')]['filter']){_0x3c78f5[_0x2a90('0x37')]=_[_0x2a90('0x39')](_0x3c78f5[_0x2a90('0x37')],{'$or':_['map'](_0x1add9a,function(_0x57a2a5){if(_0x57a2a5[_0x2a90('0x2a')]!==_0x2a90('0x3a')){var _0x4eb7d9={};_0x4eb7d9[_0x57a2a5[_0x2a90('0x2d')]]={'$like':'%'+_0x4969c3[_0x2a90('0x2e')][_0x2a90('0x3b')]+'%'};return _0x4eb7d9;}})});}_0x3c78f5=_['merge']({},_0x3c78f5,_0x4969c3[_0x2a90('0x3c')]);var _0x1db9d8={'where':_0x3c78f5['where']};return db[_0x2a90('0x27')][_0x2a90('0x3d')](_0x1db9d8)[_0x2a90('0x23')](function(_0x28f289){_0x5bd700[_0x2a90('0x3d')]=_0x28f289;if(_0x4969c3[_0x2a90('0x2e')][_0x2a90('0x3e')]){_0x3c78f5[_0x2a90('0x3f')]=[{'all':!![]}];}return db[_0x2a90('0x27')][_0x2a90('0x40')](_0x3c78f5);})[_0x2a90('0x23')](function(_0x3dba8a){_0x5bd700[_0x2a90('0x41')]=_0x3dba8a;return _0x5bd700;})[_0x2a90('0x23')](respondWithFilteredResult(_0x2d83b3,_0x3c78f5))['catch'](handleError(_0x2d83b3,null));};exports[_0x2a90('0x42')]=function(_0x3a70fe,_0x528b41){var _0x1045bb={'raw':![],'where':{'id':_0x3a70fe[_0x2a90('0x43')]['id']}},_0x1e971c={};_0x1e971c[_0x2a90('0x2c')]=_[_0x2a90('0x2f')](db['ZendeskAccount'][_0x2a90('0x28')]);_0x1e971c['query']=_[_0x2a90('0x2f')](_0x3a70fe['query']);_0x1e971c[_0x2a90('0x30')]=_[_0x2a90('0x31')](_0x1e971c[_0x2a90('0x2c')],_0x1e971c[_0x2a90('0x2e')]);_0x1045bb[_0x2a90('0x33')]=_[_0x2a90('0x31')](_0x1e971c[_0x2a90('0x2c')],qs['fields'](_0x3a70fe['query'][_0x2a90('0x32')]));_0x1045bb[_0x2a90('0x33')]=_0x1045bb[_0x2a90('0x33')][_0x2a90('0x34')]?_0x1045bb[_0x2a90('0x33')]:_0x1e971c[_0x2a90('0x2c')];if(_0x3a70fe[_0x2a90('0x2e')][_0x2a90('0x3e')]){_0x1045bb['include']=[{'all':!![]}];}_0x1045bb=_[_0x2a90('0x39')]({},_0x1045bb,_0x3a70fe['options']);return db[_0x2a90('0x27')][_0x2a90('0x44')](_0x1045bb)['then'](handleEntityNotFound(_0x528b41,null))[_0x2a90('0x23')](respondWithResult(_0x528b41,null))[_0x2a90('0x45')](handleError(_0x528b41,null));};exports[_0x2a90('0x46')]=function(_0x1d55db,_0x175d59){return db[_0x2a90('0x27')][_0x2a90('0x46')](_0x1d55db['body'],{})['then'](respondWithResult(_0x175d59,0xc9))[_0x2a90('0x45')](handleError(_0x175d59,null));};exports[_0x2a90('0x21')]=function(_0x42c890,_0x43266a){if(_0x42c890[_0x2a90('0x47')]['id']){delete _0x42c890['body']['id'];}return db['ZendeskAccount'][_0x2a90('0x44')]({'where':{'id':_0x42c890[_0x2a90('0x43')]['id']}})['then'](handleEntityNotFound(_0x43266a,null))['then'](saveUpdates(_0x42c890['body'],null))[_0x2a90('0x23')](respondWithResult(_0x43266a,null))['catch'](handleError(_0x43266a,null));};exports[_0x2a90('0x22')]=function(_0x3dfe72,_0x272d07){return db[_0x2a90('0x27')][_0x2a90('0x44')]({'where':{'id':_0x3dfe72[_0x2a90('0x43')]['id']}})['then'](handleEntityNotFound(_0x272d07,null))[_0x2a90('0x23')](removeEntity(_0x272d07,null))[_0x2a90('0x45')](handleError(_0x272d07,null));};exports['getConfigurations']=function(_0x265769,_0x4d1303,_0x4c8bae){var _0x46f687={};var _0xe47c6b={};var _0x5819ab;var _0x4c0cb2;return db[_0x2a90('0x27')]['findOne']({'where':{'id':_0x265769[_0x2a90('0x43')]['id']}})[_0x2a90('0x23')](handleEntityNotFound(_0x4d1303,null))['then'](function(_0x366429){if(_0x366429){_0x5819ab=_0x366429;_0xe47c6b[_0x2a90('0x2c')]=_[_0x2a90('0x2f')](db['ZendeskConfiguration'][_0x2a90('0x28')]);_0xe47c6b[_0x2a90('0x2e')]=_['keys'](_0x265769['query']);_0xe47c6b[_0x2a90('0x30')]=_[_0x2a90('0x31')](_0xe47c6b['model'],_0xe47c6b[_0x2a90('0x2e')]);_0x46f687['attributes']=_[_0x2a90('0x31')](_0xe47c6b['model'],qs[_0x2a90('0x32')](_0x265769[_0x2a90('0x2e')][_0x2a90('0x32')]));_0x46f687['attributes']=_0x46f687['attributes']['length']?_0x46f687[_0x2a90('0x33')]:_0xe47c6b[_0x2a90('0x2c')];_0x46f687[_0x2a90('0x36')]=qs[_0x2a90('0x48')](_0x265769[_0x2a90('0x2e')][_0x2a90('0x48')]);_0x46f687[_0x2a90('0x37')]=qs[_0x2a90('0x30')](_[_0x2a90('0x38')](_0x265769[_0x2a90('0x2e')],_0xe47c6b[_0x2a90('0x30')]));if(_0x265769[_0x2a90('0x2e')][_0x2a90('0x3b')]){_0x46f687['where']=_['merge'](_0x46f687['where'],{'$or':_[_0x2a90('0x49')](_0x46f687[_0x2a90('0x33')],function(_0x13270d){var _0x400aca={};_0x400aca[_0x13270d]={'$like':'%'+_0x265769[_0x2a90('0x2e')][_0x2a90('0x3b')]+'%'};return _0x400aca;})});}_0x46f687=_[_0x2a90('0x39')]({},_0x46f687,_0x265769[_0x2a90('0x3c')]);return _0x5819ab[_0x2a90('0x4a')](_0x46f687);}})[_0x2a90('0x23')](function(_0x50973b){if(_0x50973b){_0x4c0cb2=_0x50973b[_0x2a90('0x34')];if(!_0x265769[_0x2a90('0x2e')][_0x2a90('0x4b')](_0x2a90('0x35'))){_0x46f687[_0x2a90('0x1b')]=qs['limit'](_0x265769[_0x2a90('0x2e')]['limit']);_0x46f687[_0x2a90('0x19')]=qs[_0x2a90('0x19')](_0x265769[_0x2a90('0x2e')][_0x2a90('0x19')]);}return _0x5819ab[_0x2a90('0x4a')](_0x46f687);}})[_0x2a90('0x23')](function(_0x44b211){if(_0x44b211){return _0x44b211?{'count':_0x4c0cb2,'rows':_0x44b211}:null;}})['then'](respondWithResult(_0x4d1303,null))[_0x2a90('0x45')](handleError(_0x4d1303,null));};exports[_0x2a90('0x4c')]=function(_0xf88bbb,_0x48f9fa,_0xa1234a){if(_0xf88bbb[_0x2a90('0x47')]['id']){delete _0xf88bbb[_0x2a90('0x47')]['id'];}return db[_0x2a90('0x27')]['findOne']({'where':{'id':_0xf88bbb[_0x2a90('0x43')]['id']}})['then'](handleEntityNotFound(_0x48f9fa,null))[_0x2a90('0x23')](function(_0x94e9fb){if(_0x94e9fb){_0xf88bbb[_0x2a90('0x47')][_0x2a90('0x4d')]=_0x94e9fb['id'];_0xf88bbb[_0x2a90('0x47')][_0x2a90('0x4e')]=integrations['getSubjects'](_0xf88bbb[_0x2a90('0x47')][_0x2a90('0x4f')],_0xf88bbb[_0x2a90('0x47')][_0x2a90('0x2a')]);_0xf88bbb[_0x2a90('0x47')][_0x2a90('0x50')]=integrations[_0x2a90('0x51')](_0xf88bbb[_0x2a90('0x47')][_0x2a90('0x4f')],_0xf88bbb['body'][_0x2a90('0x2a')]);return db[_0x2a90('0x52')][_0x2a90('0x46')](_0xf88bbb['body'],{'include':[{'model':db[_0x2a90('0x53')],'as':_0x2a90('0x4e')},{'model':db[_0x2a90('0x53')],'as':_0x2a90('0x50')}]});}return null;})[_0x2a90('0x23')](respondWithResult(_0x48f9fa,null))['catch'](handleError(_0x48f9fa,null));};exports[_0x2a90('0x54')]=function(_0x5e0bf2,_0x5a770b,_0x9fafd){var _0x4e1dcd='';return db['ZendeskAccount'][_0x2a90('0x55')]({'where':{'id':_0x5e0bf2['params']['id']},'attributes':['id',_0x2a90('0x56'),_0x2a90('0x57'),'token','authType',_0x2a90('0x58')]})['then'](handleEntityNotFound(_0x5a770b,null))['then'](function(_0xd52ae2){if(_0xd52ae2){_0x4e1dcd=_0xd52ae2[_0x2a90('0x58')];var _0x1db063=_0x4e1dcd[_0x2a90('0x59')](-0x1);if(_0x1db063==='/'){_0x4e1dcd=_0x4e1dcd['substring'](0x0,_0x4e1dcd['lastIndexOf'](_0x1db063));}var _0x370144={'method':_0x2a90('0x5a'),'uri':util[_0x2a90('0x5b')](_0x2a90('0x5c'),_0x4e1dcd,_0x2a90('0x5d')),'json':!![]};switch(_0xd52ae2[_0x2a90('0x5e')]){case _0x2a90('0x57'):_0x370144[_0x2a90('0x5f')]={'Authorization':util[_0x2a90('0x5b')](_0x2a90('0x60'),new Buffer(util[_0x2a90('0x5b')](_0x2a90('0x61'),_0xd52ae2['username'],_0xd52ae2[_0x2a90('0x57')]))['toString'](_0x2a90('0x62')))};break;case'token':_0x370144[_0x2a90('0x5f')]={'Authorization':util['format']('Basic\x20%s',new Buffer(util[_0x2a90('0x5b')](_0x2a90('0x63'),_0xd52ae2[_0x2a90('0x56')],_0xd52ae2[_0x2a90('0x64')]))['toString']('base64'))};break;default:throw new db[(_0x2a90('0x65'))][(_0x2a90('0x66'))](_0x2a90('0x67'));}return rp(_0x370144);}})[_0x2a90('0x23')](function(_0x59b9e6){if(_0x59b9e6){var _0x3b0d5e=[_0x2a90('0x68'),_0x2a90('0x69'),_0x2a90('0x6a'),_0x2a90('0x6b')];_[_0x2a90('0x6c')](_0x59b9e6[_0x2a90('0x5d')],function(_0x4d46f5){return _0x3b0d5e[_0x2a90('0x6d')](_0x4d46f5[_0x2a90('0x2a')]);});return{'count':_0x59b9e6[_0x2a90('0x5d')][_0x2a90('0x34')],'rows':_[_0x2a90('0x49')](_0x59b9e6[_0x2a90('0x5d')],function(_0x1bbadd){return{'id':_0x1bbadd['id'],'name':_0x1bbadd[_0x2a90('0x6e')]>0x7?_0x1bbadd['title']:_0x1bbadd[_0x2a90('0x2a')],'custom':_0x1bbadd[_0x2a90('0x6e')]>0x7?!![]:![],'options':_0x1bbadd['system_field_options']?_0x1bbadd[_0x2a90('0x6f')]:_0x1bbadd[_0x2a90('0x70')]?_0x1bbadd[_0x2a90('0x70')]:[]};})};}})[_0x2a90('0x23')](respondWithResult(_0x5a770b,null))[_0x2a90('0x45')](function(_0x16e9e7){var _0x4b4a47=_0x5e0bf2[_0x2a90('0x2e')][_0x2a90('0x71')]?0x1f4:_0x16e9e7[_0x2a90('0x72')]||0x1f4;logger[_0x2a90('0x25')](_0x2a90('0x73'),_0x2a90('0x54'),_0x4b4a47,JSON[_0x2a90('0x74')](_0x16e9e7));delete _0x16e9e7[_0x2a90('0x2d')];if(_0x4b4a47===0x191){_0x4b4a47=0x190;}_0x5a770b['status'](_0x4b4a47)[_0x2a90('0x75')](_0x5e0bf2[_0x2a90('0x2e')][_0x2a90('0x71')]?{'message':_0x2a90('0x76'),'statusCode':_0x16e9e7[_0x2a90('0x72')]}:_0x16e9e7);});};
\ No newline at end of file
+var _0xda3f=['description','group','assignee','remove','includes','position','title','system_field_options','custom_field_options','getFields','stringify','send','test','statusCode','rimraf','zip-dir','bluebird','util','path','to-csv','ejs','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','../../config/license/util','../../mysqldb','sendStatus','offset','undefined','limit','count','status','set','Content-Range','apply','save','update','then','destroy','error','stack','name','index','rawAttributes','type','key','model','map','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','ZendeskAccount','includeAll','include','params','length','find','catch','create','body','getConfigurations','findOne','ZendeskConfiguration','options','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','username','password','remoteUri','slice','lastIndexOf','GET','format','ticket_fields','headers','Basic\x20%s','%s:%s','toString','base64','token','%s/token:%s','ValidationError','Unknown\x20authentication\x20type','subject'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0xda3f,0xec));var _0xfda3=function(_0x156859,_0x1a5ee1){_0x156859=_0x156859-0x0;var _0x5c20b6=_0xda3f[_0x156859];return _0x5c20b6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfda3('0x0'));var zipdir=require(_0xfda3('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfda3('0x2'));var Mustache=require('mustache');var util=require(_0xfda3('0x3'));var path=require(_0xfda3('0x4'));var sox=require('sox');var csv=require(_0xfda3('0x5'));var ejs=require(_0xfda3('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfda3('0x7'));var crypto=require(_0xfda3('0x8'));var jsforce=require(_0xfda3('0x9'));var deskjs=require(_0xfda3('0xa'));var toCsv=require(_0xfda3('0x5'));var querystring=require(_0xfda3('0xb'));var Papa=require(_0xfda3('0xc'));var Redis=require(_0xfda3('0xd'));var authService=require(_0xfda3('0xe'));var qs=require(_0xfda3('0xf'));var as=require(_0xfda3('0x10'));var hardwareService=require(_0xfda3('0x11'));var logger=require('../../config/logger')(_0xfda3('0x12'));var utils=require(_0xfda3('0x13'));var config=require(_0xfda3('0x14'));var licenseUtil=require(_0xfda3('0x15'));var db=require(_0xfda3('0x16'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x583125,_0x5d7d5b){_0x5d7d5b=_0x5d7d5b||0xcc;return function(_0x3fd031){if(_0x3fd031){return _0x583125[_0xfda3('0x17')](_0x5d7d5b);}return _0x583125['status'](_0x5d7d5b)['end']();};}function respondWithResult(_0x587e9b,_0x227d72){_0x227d72=_0x227d72||0xc8;return function(_0x477fc0){if(_0x477fc0){return _0x587e9b['status'](_0x227d72)['json'](_0x477fc0);}};}function respondWithFilteredResult(_0x533365,_0x80ea80){return function(_0x474707){if(_0x474707){var _0x249dc6=typeof _0x80ea80[_0xfda3('0x18')]===_0xfda3('0x19')&&typeof _0x80ea80[_0xfda3('0x1a')]===_0xfda3('0x19');var _0x93c8ef=_0x474707[_0xfda3('0x1b')];var _0xc62ae6=_0x249dc6?0x0:_0x80ea80['offset'];var _0x15ddb9=_0x249dc6?_0x474707[_0xfda3('0x1b')]:_0x80ea80[_0xfda3('0x18')]+_0x80ea80[_0xfda3('0x1a')];var _0x59a887;if(_0x15ddb9>=_0x93c8ef){_0x15ddb9=_0x93c8ef;_0x59a887=0xc8;}else{_0x59a887=0xce;}_0x533365[_0xfda3('0x1c')](_0x59a887);return _0x533365[_0xfda3('0x1d')](_0xfda3('0x1e'),_0xc62ae6+'-'+_0x15ddb9+'/'+_0x93c8ef)['json'](_0x474707);}return null;};}function patchUpdates(_0x5ad52a){return function(_0xa0449d){try{jsonpatch[_0xfda3('0x1f')](_0xa0449d,_0x5ad52a,!![]);}catch(_0x4ea9f5){return BPromise['reject'](_0x4ea9f5);}return _0xa0449d[_0xfda3('0x20')]();};}function saveUpdates(_0xef2535,_0x1e15a8){return function(_0x2c0ae9){if(_0x2c0ae9){return _0x2c0ae9[_0xfda3('0x21')](_0xef2535)[_0xfda3('0x22')](function(_0x2677f6){return _0x2677f6;});}return null;};}function removeEntity(_0xc6fb9a,_0x16eaa6){return function(_0x5499f5){if(_0x5499f5){return _0x5499f5[_0xfda3('0x23')]()[_0xfda3('0x22')](function(){_0xc6fb9a[_0xfda3('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x45a977,_0x39e246){return function(_0x172cfb){if(!_0x172cfb){_0x45a977[_0xfda3('0x17')](0x194);}return _0x172cfb;};}function handleError(_0x1cb831,_0xad9f7b){_0xad9f7b=_0xad9f7b||0x1f4;return function(_0x514d2a){logger[_0xfda3('0x24')](_0x514d2a[_0xfda3('0x25')]);if(_0x514d2a[_0xfda3('0x26')]){delete _0x514d2a[_0xfda3('0x26')];}_0x1cb831[_0xfda3('0x1c')](_0xad9f7b)['send'](_0x514d2a);};}exports[_0xfda3('0x27')]=function(_0x4101b1,_0x301509){var _0x474992={},_0xe21ec6={},_0x3cfeb2={'count':0x0,'rows':[]};var _0x26e544=_['map'](db['ZendeskAccount'][_0xfda3('0x28')],function(_0x4fd277){return{'name':_0x4fd277['fieldName'],'type':_0x4fd277[_0xfda3('0x29')][_0xfda3('0x2a')]};});_0xe21ec6[_0xfda3('0x2b')]=_[_0xfda3('0x2c')](_0x26e544,_0xfda3('0x26'));_0xe21ec6[_0xfda3('0x2d')]=_[_0xfda3('0x2e')](_0x4101b1[_0xfda3('0x2d')]);_0xe21ec6[_0xfda3('0x2f')]=_['intersection'](_0xe21ec6[_0xfda3('0x2b')],_0xe21ec6[_0xfda3('0x2d')]);_0x474992[_0xfda3('0x30')]=_[_0xfda3('0x31')](_0xe21ec6[_0xfda3('0x2b')],qs[_0xfda3('0x32')](_0x4101b1[_0xfda3('0x2d')][_0xfda3('0x32')]));_0x474992[_0xfda3('0x30')]=_0x474992['attributes']['length']?_0x474992[_0xfda3('0x30')]:_0xe21ec6[_0xfda3('0x2b')];if(!_0x4101b1['query'][_0xfda3('0x33')](_0xfda3('0x34'))){_0x474992[_0xfda3('0x1a')]=qs['limit'](_0x4101b1[_0xfda3('0x2d')][_0xfda3('0x1a')]);_0x474992[_0xfda3('0x18')]=qs[_0xfda3('0x18')](_0x4101b1[_0xfda3('0x2d')]['offset']);}_0x474992[_0xfda3('0x35')]=qs[_0xfda3('0x36')](_0x4101b1[_0xfda3('0x2d')]['sort']);_0x474992[_0xfda3('0x37')]=qs['filters'](_[_0xfda3('0x38')](_0x4101b1[_0xfda3('0x2d')],_0xe21ec6[_0xfda3('0x2f')]),_0x26e544);if(_0x4101b1[_0xfda3('0x2d')][_0xfda3('0x39')]){_0x474992[_0xfda3('0x37')]=_[_0xfda3('0x3a')](_0x474992[_0xfda3('0x37')],{'$or':_['map'](_0x26e544,function(_0x24c7ad){if(_0x24c7ad[_0xfda3('0x29')]!==_0xfda3('0x3b')){var _0x8ed2ba={};_0x8ed2ba[_0x24c7ad['name']]={'$like':'%'+_0x4101b1[_0xfda3('0x2d')][_0xfda3('0x39')]+'%'};return _0x8ed2ba;}})});}_0x474992=_[_0xfda3('0x3a')]({},_0x474992,_0x4101b1['options']);var _0x5ac61e={'where':_0x474992[_0xfda3('0x37')]};return db[_0xfda3('0x3c')][_0xfda3('0x1b')](_0x5ac61e)[_0xfda3('0x22')](function(_0x2b415d){_0x3cfeb2[_0xfda3('0x1b')]=_0x2b415d;if(_0x4101b1[_0xfda3('0x2d')][_0xfda3('0x3d')]){_0x474992[_0xfda3('0x3e')]=[{'all':!![]}];}return db[_0xfda3('0x3c')]['findAll'](_0x474992);})[_0xfda3('0x22')](function(_0x22b848){_0x3cfeb2['rows']=_0x22b848;return _0x3cfeb2;})[_0xfda3('0x22')](respondWithFilteredResult(_0x301509,_0x474992))['catch'](handleError(_0x301509,null));};exports['show']=function(_0x4e6886,_0x2208bc){var _0x107fb1={'raw':![],'where':{'id':_0x4e6886[_0xfda3('0x3f')]['id']}},_0x260977={};_0x260977['model']=_[_0xfda3('0x2e')](db[_0xfda3('0x3c')][_0xfda3('0x28')]);_0x260977[_0xfda3('0x2d')]=_['keys'](_0x4e6886[_0xfda3('0x2d')]);_0x260977[_0xfda3('0x2f')]=_[_0xfda3('0x31')](_0x260977['model'],_0x260977['query']);_0x107fb1[_0xfda3('0x30')]=_[_0xfda3('0x31')](_0x260977[_0xfda3('0x2b')],qs[_0xfda3('0x32')](_0x4e6886[_0xfda3('0x2d')][_0xfda3('0x32')]));_0x107fb1[_0xfda3('0x30')]=_0x107fb1[_0xfda3('0x30')][_0xfda3('0x40')]?_0x107fb1[_0xfda3('0x30')]:_0x260977[_0xfda3('0x2b')];if(_0x4e6886[_0xfda3('0x2d')][_0xfda3('0x3d')]){_0x107fb1[_0xfda3('0x3e')]=[{'all':!![]}];}_0x107fb1=_['merge']({},_0x107fb1,_0x4e6886['options']);return db[_0xfda3('0x3c')][_0xfda3('0x41')](_0x107fb1)[_0xfda3('0x22')](handleEntityNotFound(_0x2208bc,null))[_0xfda3('0x22')](respondWithResult(_0x2208bc,null))[_0xfda3('0x42')](handleError(_0x2208bc,null));};exports[_0xfda3('0x43')]=function(_0x192133,_0x125f5a){return db[_0xfda3('0x3c')][_0xfda3('0x43')](_0x192133['body'],{})[_0xfda3('0x22')](respondWithResult(_0x125f5a,0xc9))[_0xfda3('0x42')](handleError(_0x125f5a,null));};exports[_0xfda3('0x21')]=function(_0x36aa3a,_0x26496a){if(_0x36aa3a['body']['id']){delete _0x36aa3a[_0xfda3('0x44')]['id'];}return db[_0xfda3('0x3c')][_0xfda3('0x41')]({'where':{'id':_0x36aa3a['params']['id']}})[_0xfda3('0x22')](handleEntityNotFound(_0x26496a,null))[_0xfda3('0x22')](saveUpdates(_0x36aa3a[_0xfda3('0x44')],null))['then'](respondWithResult(_0x26496a,null))[_0xfda3('0x42')](handleError(_0x26496a,null));};exports[_0xfda3('0x23')]=function(_0x2f54eb,_0x2f6e62){return db[_0xfda3('0x3c')]['find']({'where':{'id':_0x2f54eb[_0xfda3('0x3f')]['id']}})['then'](handleEntityNotFound(_0x2f6e62,null))[_0xfda3('0x22')](removeEntity(_0x2f6e62,null))['catch'](handleError(_0x2f6e62,null));};exports[_0xfda3('0x45')]=function(_0x6447,_0x322b66,_0x26ffee){var _0x574f02={};var _0x244c24={};var _0x3b430d;var _0x2f2c32;return db[_0xfda3('0x3c')][_0xfda3('0x46')]({'where':{'id':_0x6447[_0xfda3('0x3f')]['id']}})[_0xfda3('0x22')](handleEntityNotFound(_0x322b66,null))['then'](function(_0x4b1410){if(_0x4b1410){_0x3b430d=_0x4b1410;_0x244c24[_0xfda3('0x2b')]=_[_0xfda3('0x2e')](db[_0xfda3('0x47')]['rawAttributes']);_0x244c24['query']=_[_0xfda3('0x2e')](_0x6447[_0xfda3('0x2d')]);_0x244c24[_0xfda3('0x2f')]=_[_0xfda3('0x31')](_0x244c24[_0xfda3('0x2b')],_0x244c24['query']);_0x574f02[_0xfda3('0x30')]=_[_0xfda3('0x31')](_0x244c24[_0xfda3('0x2b')],qs[_0xfda3('0x32')](_0x6447[_0xfda3('0x2d')][_0xfda3('0x32')]));_0x574f02[_0xfda3('0x30')]=_0x574f02[_0xfda3('0x30')][_0xfda3('0x40')]?_0x574f02[_0xfda3('0x30')]:_0x244c24[_0xfda3('0x2b')];_0x574f02[_0xfda3('0x35')]=qs['sort'](_0x6447[_0xfda3('0x2d')][_0xfda3('0x36')]);_0x574f02[_0xfda3('0x37')]=qs[_0xfda3('0x2f')](_[_0xfda3('0x38')](_0x6447[_0xfda3('0x2d')],_0x244c24[_0xfda3('0x2f')]));if(_0x6447['query']['filter']){_0x574f02[_0xfda3('0x37')]=_[_0xfda3('0x3a')](_0x574f02['where'],{'$or':_[_0xfda3('0x2c')](_0x574f02[_0xfda3('0x30')],function(_0x2a5efe){var _0x38dbc7={};_0x38dbc7[_0x2a5efe]={'$like':'%'+_0x6447['query']['filter']+'%'};return _0x38dbc7;})});}_0x574f02=_[_0xfda3('0x3a')]({},_0x574f02,_0x6447[_0xfda3('0x48')]);return _0x3b430d[_0xfda3('0x45')](_0x574f02);}})['then'](function(_0x23fd20){if(_0x23fd20){_0x2f2c32=_0x23fd20['length'];if(!_0x6447[_0xfda3('0x2d')][_0xfda3('0x33')](_0xfda3('0x34'))){_0x574f02[_0xfda3('0x1a')]=qs[_0xfda3('0x1a')](_0x6447[_0xfda3('0x2d')]['limit']);_0x574f02[_0xfda3('0x18')]=qs[_0xfda3('0x18')](_0x6447[_0xfda3('0x2d')][_0xfda3('0x18')]);}return _0x3b430d[_0xfda3('0x45')](_0x574f02);}})['then'](function(_0x5e9309){if(_0x5e9309){return _0x5e9309?{'count':_0x2f2c32,'rows':_0x5e9309}:null;}})[_0xfda3('0x22')](respondWithResult(_0x322b66,null))[_0xfda3('0x42')](handleError(_0x322b66,null));};exports['addConfiguration']=function(_0x550822,_0x512d7b,_0x248174){if(_0x550822[_0xfda3('0x44')]['id']){delete _0x550822['body']['id'];}return db[_0xfda3('0x3c')][_0xfda3('0x46')]({'where':{'id':_0x550822[_0xfda3('0x3f')]['id']}})[_0xfda3('0x22')](handleEntityNotFound(_0x512d7b,null))['then'](function(_0x1cd818){if(_0x1cd818){_0x550822[_0xfda3('0x44')][_0xfda3('0x49')]=_0x1cd818['id'];_0x550822[_0xfda3('0x44')][_0xfda3('0x4a')]=integrations[_0xfda3('0x4b')](_0x550822['body']['channel'],_0x550822[_0xfda3('0x44')]['type']);_0x550822[_0xfda3('0x44')][_0xfda3('0x4c')]=integrations[_0xfda3('0x4d')](_0x550822[_0xfda3('0x44')][_0xfda3('0x4e')],_0x550822[_0xfda3('0x44')][_0xfda3('0x29')]);return db[_0xfda3('0x47')][_0xfda3('0x43')](_0x550822[_0xfda3('0x44')],{'include':[{'model':db['ZendeskField'],'as':_0xfda3('0x4a')},{'model':db['ZendeskField'],'as':'Descriptions'}]});}return null;})[_0xfda3('0x22')](respondWithResult(_0x512d7b,null))[_0xfda3('0x42')](handleError(_0x512d7b,null));};exports['getFields']=function(_0xa3b2e0,_0x26e1f5,_0x42e387){var _0x589c7a='';return db[_0xfda3('0x3c')][_0xfda3('0x46')]({'where':{'id':_0xa3b2e0[_0xfda3('0x3f')]['id']},'attributes':['id',_0xfda3('0x4f'),_0xfda3('0x50'),'token','authType','remoteUri']})[_0xfda3('0x22')](handleEntityNotFound(_0x26e1f5,null))[_0xfda3('0x22')](function(_0x4768dc){if(_0x4768dc){_0x589c7a=_0x4768dc[_0xfda3('0x51')];var _0x4407e8=_0x589c7a[_0xfda3('0x52')](-0x1);if(_0x4407e8==='/'){_0x589c7a=_0x589c7a['substring'](0x0,_0x589c7a[_0xfda3('0x53')](_0x4407e8));}var _0x6c5e9d={'method':_0xfda3('0x54'),'uri':util[_0xfda3('0x55')]('%s/%s',_0x589c7a,_0xfda3('0x56')),'json':!![]};switch(_0x4768dc['authType']){case _0xfda3('0x50'):_0x6c5e9d[_0xfda3('0x57')]={'Authorization':util[_0xfda3('0x55')](_0xfda3('0x58'),new Buffer(util[_0xfda3('0x55')](_0xfda3('0x59'),_0x4768dc[_0xfda3('0x4f')],_0x4768dc['password']))[_0xfda3('0x5a')](_0xfda3('0x5b')))};break;case _0xfda3('0x5c'):_0x6c5e9d[_0xfda3('0x57')]={'Authorization':util[_0xfda3('0x55')](_0xfda3('0x58'),new Buffer(util['format'](_0xfda3('0x5d'),_0x4768dc[_0xfda3('0x4f')],_0x4768dc[_0xfda3('0x5c')]))[_0xfda3('0x5a')](_0xfda3('0x5b')))};break;default:throw new db['Sequelize'][(_0xfda3('0x5e'))](_0xfda3('0x5f'));}return rp(_0x6c5e9d);}})[_0xfda3('0x22')](function(_0x42a092){if(_0x42a092){var _0xcb7ff4=[_0xfda3('0x60'),_0xfda3('0x61'),_0xfda3('0x62'),_0xfda3('0x63')];_[_0xfda3('0x64')](_0x42a092['ticket_fields'],function(_0x1c0e07){return _0xcb7ff4[_0xfda3('0x65')](_0x1c0e07[_0xfda3('0x29')]);});return{'count':_0x42a092[_0xfda3('0x56')][_0xfda3('0x40')],'rows':_['map'](_0x42a092['ticket_fields'],function(_0x232cd2){return{'id':_0x232cd2['id'],'name':_0x232cd2[_0xfda3('0x66')]>0x7?_0x232cd2[_0xfda3('0x67')]:_0x232cd2[_0xfda3('0x29')],'custom':_0x232cd2[_0xfda3('0x66')]>0x7?!![]:![],'options':_0x232cd2[_0xfda3('0x68')]?_0x232cd2[_0xfda3('0x68')]:_0x232cd2[_0xfda3('0x69')]?_0x232cd2[_0xfda3('0x69')]:[]};})};}})[_0xfda3('0x22')](respondWithResult(_0x26e1f5,null))[_0xfda3('0x42')](function(_0x593270){var _0x1ee8f4=_0xa3b2e0['query']['test']?0x1f4:_0x593270['statusCode']||0x1f4;logger[_0xfda3('0x24')]('getFields,\x20%s,\x20%s,\x20%s',_0xfda3('0x6a'),_0x1ee8f4,JSON[_0xfda3('0x6b')](_0x593270));delete _0x593270['name'];if(_0x1ee8f4===0x191){_0x1ee8f4=0x190;}_0x26e1f5[_0xfda3('0x1c')](_0x1ee8f4)[_0xfda3('0x6c')](_0xa3b2e0['query'][_0xfda3('0x6d')]?{'message':'Wrong\x20credentials','statusCode':_0x593270[_0xfda3('0x6e')]}:_0x593270);});};
\ No newline at end of file
index a5bba10..a959aef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8b1=['rimraf','../../config/environment','../../components/integrations/configuration','exports','define','int_zendesk_accounts','lodash','util','../../config/logger','api','request-promise','path'];(function(_0x42ad36,_0x4f7e9c){var _0x659bbd=function(_0x5f95b){while(--_0x5f95b){_0x42ad36['push'](_0x42ad36['shift']());}};_0x659bbd(++_0x4f7e9c);}(_0xf8b1,0x102));var _0x1f8b=function(_0x18ca6b,_0x50c529){_0x18ca6b=_0x18ca6b-0x0;var _0x10d784=_0xf8b1[_0x18ca6b];return _0x10d784;};'use strict';var _=require(_0x1f8b('0x0'));var util=require(_0x1f8b('0x1'));var logger=require(_0x1f8b('0x2'))(_0x1f8b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1f8b('0x4'));var fs=require('fs');var path=require(_0x1f8b('0x5'));var rimraf=require(_0x1f8b('0x6'));var config=require(_0x1f8b('0x7'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0x1f8b('0x8'));module[_0x1f8b('0x9')]=function(_0x46a474,_0x39d7e3){return _0x46a474[_0x1f8b('0xa')]('ZendeskAccount',attributes,{'tableName':_0x1f8b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x419b=['bluebird','rimraf','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration','exports','define','ZendeskAccount','int_zendesk_accounts','lodash','api','moment'];(function(_0x3fa54b,_0x455fcb){var _0x52b8a7=function(_0x4e8bee){while(--_0x4e8bee){_0x3fa54b['push'](_0x3fa54b['shift']());}};_0x52b8a7(++_0x455fcb);}(_0x419b,0x1dd));var _0xb419=function(_0x47cfde,_0x4f3a90){_0x47cfde=_0x47cfde-0x0;var _0x234cf5=_0x419b[_0x47cfde];return _0x234cf5;};'use strict';var _=require(_0xb419('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb419('0x1'));var moment=require(_0xb419('0x2'));var BPromise=require(_0xb419('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb419('0x4'));var config=require(_0xb419('0x5'));var attributes=require(_0xb419('0x6'));var integrations=require(_0xb419('0x7'));module[_0xb419('0x8')]=function(_0x3db4c6,_0xe6f8f5){return _0x3db4c6[_0xb419('0x9')](_0xb419('0xa'),attributes,{'tableName':_0xb419('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a5c7fbd..a4f68f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bcb=['message','catch','GetZendeskAccount','findAll','options','where','attributes','limit','include','model','map','debug','stringify','ShowZendeskAccount','find','raw','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','error'];(function(_0x2630a5,_0x4ef7cd){var _0x4c4247=function(_0x46c336){while(--_0x46c336){_0x2630a5['push'](_0x2630a5['shift']());}};_0x4c4247(++_0x4ef7cd);}(_0x0bcb,0x118));var _0xb0bc=function(_0x469150,_0x3cf2b5){_0x469150=_0x469150-0x0;var _0x1220da=_0x0bcb[_0x469150];return _0x1220da;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xb0bc('0x0'));var BPromise=require(_0xb0bc('0x1'));var rs=require(_0xb0bc('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb0bc('0x3'))['db'];var utils=require(_0xb0bc('0x4'));var logger=require(_0xb0bc('0x5'))(_0xb0bc('0x6'));var config=require(_0xb0bc('0x7'));var jayson=require(_0xb0bc('0x8'));var client=jayson[_0xb0bc('0x9')][_0xb0bc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2dc663,_0x35e0a0,_0x48d931){return new BPromise(function(_0x36a086,_0x56af88){return client[_0xb0bc('0xb')](_0x2dc663,_0x48d931)[_0xb0bc('0xc')](function(_0x20662c){logger[_0xb0bc('0xd')](_0xb0bc('0xe'),_0x35e0a0,_0xb0bc('0xf'));logger['debug']('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x35e0a0,_0xb0bc('0xf'),JSON['stringify'](_0x20662c));if(_0x20662c['error']){if(_0x20662c[_0xb0bc('0x10')]['code']===0x1f4){logger[_0xb0bc('0x10')]('ZendeskAccount,\x20%s,\x20%s',_0x35e0a0,_0x20662c[_0xb0bc('0x10')][_0xb0bc('0x11')]);return _0x56af88(_0x20662c[_0xb0bc('0x10')][_0xb0bc('0x11')]);}logger[_0xb0bc('0x10')](_0xb0bc('0xe'),_0x35e0a0,_0x20662c[_0xb0bc('0x10')][_0xb0bc('0x11')]);return _0x36a086(_0x20662c[_0xb0bc('0x10')]['message']);}else{logger[_0xb0bc('0xd')]('ZendeskAccount,\x20%s,\x20%s',_0x35e0a0,_0xb0bc('0xf'));_0x36a086(_0x20662c['result']['message']);}})[_0xb0bc('0x12')](function(_0x30ccdc){logger[_0xb0bc('0x10')](_0xb0bc('0xe'),_0x35e0a0,_0x30ccdc);_0x56af88(_0x30ccdc);});});}exports[_0xb0bc('0x13')]=function(_0x55c498){var _0x2c5541=this;return new Promise(function(_0xa26efa,_0x30f579){return db['ZendeskAccount'][_0xb0bc('0x14')]({'raw':_0x55c498['options']?_0x55c498['options']['raw']===undefined?!![]:![]:!![],'where':_0x55c498[_0xb0bc('0x15')]?_0x55c498[_0xb0bc('0x15')][_0xb0bc('0x16')]||null:null,'attributes':_0x55c498[_0xb0bc('0x15')]?_0x55c498[_0xb0bc('0x15')][_0xb0bc('0x17')]||null:null,'limit':_0x55c498[_0xb0bc('0x15')]?_0x55c498['options'][_0xb0bc('0x18')]||null:null,'include':_0x55c498[_0xb0bc('0x15')]?_0x55c498[_0xb0bc('0x15')][_0xb0bc('0x19')]?_['map'](_0x55c498[_0xb0bc('0x15')][_0xb0bc('0x19')],function(_0x5b8abe){return{'model':db[_0x5b8abe[_0xb0bc('0x1a')]],'as':_0x5b8abe['as'],'attributes':_0x5b8abe['attributes'],'include':_0x5b8abe['include']?_[_0xb0bc('0x1b')](_0x5b8abe[_0xb0bc('0x19')],function(_0x157d02){return{'model':db[_0x157d02[_0xb0bc('0x1a')]],'as':_0x157d02['as'],'attributes':_0x157d02[_0xb0bc('0x17')],'include':_0x157d02[_0xb0bc('0x19')]?_['map'](_0x157d02[_0xb0bc('0x19')],function(_0x44ab00){return{'model':db[_0x44ab00[_0xb0bc('0x1a')]],'as':_0x44ab00['as'],'attributes':_0x44ab00[_0xb0bc('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x44f237){logger[_0xb0bc('0xd')](_0xb0bc('0x13'),_0x55c498);logger[_0xb0bc('0x1c')](_0xb0bc('0x13'),_0x55c498,JSON[_0xb0bc('0x1d')](_0x44f237));_0xa26efa(_0x44f237);})[_0xb0bc('0x12')](function(_0x7b9ba4){logger[_0xb0bc('0x10')](_0xb0bc('0x13'),_0x7b9ba4[_0xb0bc('0x11')],_0x55c498);_0x30f579(_0x2c5541[_0xb0bc('0x10')](0x1f4,_0x7b9ba4[_0xb0bc('0x11')]));});});};exports[_0xb0bc('0x1e')]=function(_0x5e9d67){var _0x111c34=this;return new Promise(function(_0x2bd9b6,_0x3a551e){return db['ZendeskAccount'][_0xb0bc('0x1f')]({'raw':_0x5e9d67['options']?_0x5e9d67[_0xb0bc('0x15')][_0xb0bc('0x20')]===undefined?!![]:![]:!![],'where':_0x5e9d67['options']?_0x5e9d67[_0xb0bc('0x15')][_0xb0bc('0x16')]||null:null,'attributes':_0x5e9d67[_0xb0bc('0x15')]?_0x5e9d67[_0xb0bc('0x15')][_0xb0bc('0x17')]||null:null,'include':_0x5e9d67[_0xb0bc('0x15')]?_0x5e9d67[_0xb0bc('0x15')][_0xb0bc('0x19')]?_[_0xb0bc('0x1b')](_0x5e9d67[_0xb0bc('0x15')][_0xb0bc('0x19')],function(_0x4f72f4){return{'model':db[_0x4f72f4['model']],'as':_0x4f72f4['as'],'attributes':_0x4f72f4[_0xb0bc('0x17')],'include':_0x4f72f4[_0xb0bc('0x19')]?_['map'](_0x4f72f4[_0xb0bc('0x19')],function(_0x32a04f){return{'model':db[_0x32a04f['model']],'as':_0x32a04f['as'],'attributes':_0x32a04f[_0xb0bc('0x17')],'include':_0x32a04f[_0xb0bc('0x19')]?_['map'](_0x32a04f[_0xb0bc('0x19')],function(_0x483856){return{'model':db[_0x483856['model']],'as':_0x483856['as'],'attributes':_0x483856[_0xb0bc('0x17')]};}):[]};}):[]};}):[]:[]})[_0xb0bc('0xc')](function(_0x2020aa){logger[_0xb0bc('0xd')](_0xb0bc('0x1e'),_0x5e9d67);logger[_0xb0bc('0x1c')](_0xb0bc('0x1e'),_0x5e9d67,JSON['stringify'](_0x2020aa));_0x2bd9b6(_0x2020aa);})['catch'](function(_0x4c9fe7){logger[_0xb0bc('0x10')](_0xb0bc('0x1e'),_0x4c9fe7[_0xb0bc('0x11')],_0x5e9d67);_0x3a551e(_0x111c34[_0xb0bc('0x10')](0x1f4,_0x4c9fe7[_0xb0bc('0x11')]));});});};
\ No newline at end of file
+var _0xec14=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','request\x20sent','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','ZendeskAccount,\x20%s,\x20%s','message','result','GetZendeskAccount','ZendeskAccount','findAll','options','raw','include','map','model','attributes','where','ShowZendeskAccount','catch','util','moment','bluebird','ioredis','../../mysqldb'];(function(_0x330e96,_0x469d7){var _0x295b97=function(_0x50522f){while(--_0x50522f){_0x330e96['push'](_0x330e96['shift']());}};_0x295b97(++_0x469d7);}(_0xec14,0x131));var _0x4ec1=function(_0x581af1,_0x4f02c5){_0x581af1=_0x581af1-0x0;var _0x54c22e=_0xec14[_0x581af1];return _0x54c22e;};'use strict';var _=require('lodash');var util=require(_0x4ec1('0x0'));var moment=require(_0x4ec1('0x1'));var BPromise=require(_0x4ec1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4ec1('0x3'));var db=require(_0x4ec1('0x4'))['db'];var utils=require(_0x4ec1('0x5'));var logger=require(_0x4ec1('0x6'))(_0x4ec1('0x7'));var config=require(_0x4ec1('0x8'));var jayson=require(_0x4ec1('0x9'));var client=jayson[_0x4ec1('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1aeb98,_0x4b77bc,_0x595148){return new BPromise(function(_0x5cfc7d,_0x310aa1){return client['request'](_0x1aeb98,_0x595148)['then'](function(_0x598407){logger[_0x4ec1('0xb')]('ZendeskAccount,\x20%s,\x20%s',_0x4b77bc,_0x4ec1('0xc'));logger['debug'](_0x4ec1('0xd'),_0x4b77bc,_0x4ec1('0xc'),JSON[_0x4ec1('0xe')](_0x598407));if(_0x598407['error']){if(_0x598407[_0x4ec1('0xf')]['code']===0x1f4){logger['error'](_0x4ec1('0x10'),_0x4b77bc,_0x598407['error'][_0x4ec1('0x11')]);return _0x310aa1(_0x598407[_0x4ec1('0xf')][_0x4ec1('0x11')]);}logger['error'](_0x4ec1('0x10'),_0x4b77bc,_0x598407['error']['message']);return _0x5cfc7d(_0x598407['error'][_0x4ec1('0x11')]);}else{logger[_0x4ec1('0xb')]('ZendeskAccount,\x20%s,\x20%s',_0x4b77bc,_0x4ec1('0xc'));_0x5cfc7d(_0x598407[_0x4ec1('0x12')][_0x4ec1('0x11')]);}})['catch'](function(_0x4f15f9){logger[_0x4ec1('0xf')](_0x4ec1('0x10'),_0x4b77bc,_0x4f15f9);_0x310aa1(_0x4f15f9);});});}exports[_0x4ec1('0x13')]=function(_0x543a76){var _0x2bd1ec=this;return new Promise(function(_0x54ab7a,_0x258983){return db[_0x4ec1('0x14')][_0x4ec1('0x15')]({'raw':_0x543a76['options']?_0x543a76[_0x4ec1('0x16')][_0x4ec1('0x17')]===undefined?!![]:![]:!![],'where':_0x543a76[_0x4ec1('0x16')]?_0x543a76[_0x4ec1('0x16')]['where']||null:null,'attributes':_0x543a76[_0x4ec1('0x16')]?_0x543a76[_0x4ec1('0x16')]['attributes']||null:null,'limit':_0x543a76[_0x4ec1('0x16')]?_0x543a76['options']['limit']||null:null,'include':_0x543a76[_0x4ec1('0x16')]?_0x543a76[_0x4ec1('0x16')][_0x4ec1('0x18')]?_[_0x4ec1('0x19')](_0x543a76[_0x4ec1('0x16')][_0x4ec1('0x18')],function(_0x482b32){return{'model':db[_0x482b32[_0x4ec1('0x1a')]],'as':_0x482b32['as'],'attributes':_0x482b32[_0x4ec1('0x1b')],'include':_0x482b32[_0x4ec1('0x18')]?_[_0x4ec1('0x19')](_0x482b32[_0x4ec1('0x18')],function(_0x15eec1){return{'model':db[_0x15eec1[_0x4ec1('0x1a')]],'as':_0x15eec1['as'],'attributes':_0x15eec1[_0x4ec1('0x1b')],'include':_0x15eec1[_0x4ec1('0x18')]?_[_0x4ec1('0x19')](_0x15eec1[_0x4ec1('0x18')],function(_0x1acd1f){return{'model':db[_0x1acd1f['model']],'as':_0x1acd1f['as'],'attributes':_0x1acd1f['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x2af3d3){logger['info']('GetZendeskAccount',_0x543a76);logger['debug'](_0x4ec1('0x13'),_0x543a76,JSON[_0x4ec1('0xe')](_0x2af3d3));_0x54ab7a(_0x2af3d3);})['catch'](function(_0x1f56e5){logger[_0x4ec1('0xf')](_0x4ec1('0x13'),_0x1f56e5[_0x4ec1('0x11')],_0x543a76);_0x258983(_0x2bd1ec['error'](0x1f4,_0x1f56e5[_0x4ec1('0x11')]));});});};exports['ShowZendeskAccount']=function(_0x3d008e){var _0xcbfefe=this;return new Promise(function(_0x48166e,_0x40d2ab){return db[_0x4ec1('0x14')]['find']({'raw':_0x3d008e[_0x4ec1('0x16')]?_0x3d008e[_0x4ec1('0x16')][_0x4ec1('0x17')]===undefined?!![]:![]:!![],'where':_0x3d008e['options']?_0x3d008e[_0x4ec1('0x16')][_0x4ec1('0x1c')]||null:null,'attributes':_0x3d008e[_0x4ec1('0x16')]?_0x3d008e[_0x4ec1('0x16')][_0x4ec1('0x1b')]||null:null,'include':_0x3d008e[_0x4ec1('0x16')]?_0x3d008e[_0x4ec1('0x16')][_0x4ec1('0x18')]?_[_0x4ec1('0x19')](_0x3d008e[_0x4ec1('0x16')][_0x4ec1('0x18')],function(_0x3470d3){return{'model':db[_0x3470d3[_0x4ec1('0x1a')]],'as':_0x3470d3['as'],'attributes':_0x3470d3[_0x4ec1('0x1b')],'include':_0x3470d3[_0x4ec1('0x18')]?_['map'](_0x3470d3[_0x4ec1('0x18')],function(_0x1b43ab){return{'model':db[_0x1b43ab[_0x4ec1('0x1a')]],'as':_0x1b43ab['as'],'attributes':_0x1b43ab[_0x4ec1('0x1b')],'include':_0x1b43ab[_0x4ec1('0x18')]?_['map'](_0x1b43ab[_0x4ec1('0x18')],function(_0x8b4a9){return{'model':db[_0x8b4a9[_0x4ec1('0x1a')]],'as':_0x8b4a9['as'],'attributes':_0x8b4a9['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x527a02){logger[_0x4ec1('0xb')]('ShowZendeskAccount',_0x3d008e);logger['debug'](_0x4ec1('0x1d'),_0x3d008e,JSON['stringify'](_0x527a02));_0x48166e(_0x527a02);})[_0x4ec1('0x1e')](function(_0x223506){logger['error'](_0x4ec1('0x1d'),_0x223506['message'],_0x3d008e);_0x40d2ab(_0xcbfefe[_0x4ec1('0xf')](0x1f4,_0x223506[_0x4ec1('0x11')]));});});};
\ No newline at end of file
index f9af902..e92003c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4024=['util','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id/fields','getDescriptions','/:id/tags','getTags','create','post','setTags','put','/:id','update','delete','destroy','exports','multer'];(function(_0x5b27da,_0x4a6532){var _0x3254f4=function(_0x4194c6){while(--_0x4194c6){_0x5b27da['push'](_0x5b27da['shift']());}};_0x3254f4(++_0x4a6532);}(_0x4024,0x89));var _0x4402=function(_0x103c0a,_0x2572fd){_0x103c0a=_0x103c0a-0x0;var _0x197c85=_0x4024[_0x103c0a];return _0x197c85;};'use strict';var multer=require(_0x4402('0x0'));var util=require(_0x4402('0x1'));var path=require('path');var timeout=require(_0x4402('0x2'));var express=require(_0x4402('0x3'));var router=express['Router']();var fs_extra=require(_0x4402('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x4402('0x5'));var config=require(_0x4402('0x6'));var controller=require('./intZendeskConfiguration.controller');router['get']('/',auth[_0x4402('0x7')](),controller[_0x4402('0x8')]);router[_0x4402('0x9')]('/:id',auth[_0x4402('0x7')](),controller['show']);router['get'](_0x4402('0xa'),auth['isAuthenticated'](),controller['getFields']);router[_0x4402('0x9')]('/:id/subjects',auth[_0x4402('0x7')](),controller['getSubjects']);router[_0x4402('0x9')]('/:id/descriptions',auth[_0x4402('0x7')](),controller[_0x4402('0xb')]);router['get'](_0x4402('0xc'),auth[_0x4402('0x7')](),controller[_0x4402('0xd')]);router['post']('/',auth[_0x4402('0x7')](),controller[_0x4402('0xe')]);router[_0x4402('0xf')](_0x4402('0xc'),auth[_0x4402('0x7')](),controller[_0x4402('0x10')]);router[_0x4402('0x11')](_0x4402('0x12'),auth[_0x4402('0x7')](),controller[_0x4402('0x13')]);router[_0x4402('0x14')](_0x4402('0x12'),auth[_0x4402('0x7')](),controller[_0x4402('0x15')]);module[_0x4402('0x16')]=router;
\ No newline at end of file
+var _0x0bb5=['put','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','/:id','isAuthenticated','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','create','post','setTags'];(function(_0x2c90a0,_0x119351){var _0x1da564=function(_0x22004e){while(--_0x22004e){_0x2c90a0['push'](_0x2c90a0['shift']());}};_0x1da564(++_0x119351);}(_0x0bb5,0x148));var _0x50bb=function(_0x467c52,_0x4a024d){_0x467c52=_0x467c52-0x0;var _0x421f73=_0x0bb5[_0x467c52];return _0x421f73;};'use strict';var multer=require(_0x50bb('0x0'));var util=require(_0x50bb('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x50bb('0x2'));var router=express[_0x50bb('0x3')]();var fs_extra=require(_0x50bb('0x4'));var auth=require(_0x50bb('0x5'));var interaction=require(_0x50bb('0x6'));var config=require(_0x50bb('0x7'));var controller=require(_0x50bb('0x8'));router[_0x50bb('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x50bb('0x9')](_0x50bb('0xa'),auth[_0x50bb('0xb')](),controller[_0x50bb('0xc')]);router['get']('/:id/fields',auth[_0x50bb('0xb')](),controller[_0x50bb('0xd')]);router[_0x50bb('0x9')](_0x50bb('0xe'),auth['isAuthenticated'](),controller[_0x50bb('0xf')]);router[_0x50bb('0x9')](_0x50bb('0x10'),auth[_0x50bb('0xb')](),controller[_0x50bb('0x11')]);router[_0x50bb('0x9')](_0x50bb('0x12'),auth['isAuthenticated'](),controller[_0x50bb('0x13')]);router['post']('/',auth[_0x50bb('0xb')](),controller[_0x50bb('0x14')]);router[_0x50bb('0x15')]('/:id/tags',auth[_0x50bb('0xb')](),controller[_0x50bb('0x16')]);router[_0x50bb('0x17')]('/:id',auth[_0x50bb('0xb')](),controller['update']);router[_0x50bb('0x18')](_0x50bb('0xa'),auth[_0x50bb('0xb')](),controller[_0x50bb('0x19')]);module[_0x50bb('0x1a')]=router;
\ No newline at end of file
index 35e8673..9ea0fb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bd2=['exports','STRING','sequelize'];(function(_0x3a7810,_0x377b8f){var _0x429b8e=function(_0x166bc7){while(--_0x166bc7){_0x3a7810['push'](_0x3a7810['shift']());}};_0x429b8e(++_0x377b8f);}(_0x2bd2,0xb6));var _0x22bd=function(_0x2092c3,_0x363137){_0x2092c3=_0x2092c3-0x0;var _0x1566fd=_0x2bd2[_0x2092c3];return _0x1566fd;};'use strict';var Sequelize=require(_0x22bd('0x0'));module[_0x22bd('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x22bd('0x2')]}};
\ No newline at end of file
+var _0xdd65=['STRING','sequelize','exports'];(function(_0x489db4,_0x1ad4fc){var _0x21add1=function(_0xa9dc73){while(--_0xa9dc73){_0x489db4['push'](_0x489db4['shift']());}};_0x21add1(++_0x1ad4fc);}(_0xdd65,0xd6));var _0x5dd6=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xdd65[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require(_0x5dd6('0x0'));module[_0x5dd6('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x5dd6('0x2')]}};
\ No newline at end of file
index 7295296..ff54fd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34d5=['where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','create','body','update','find','getFields','findOne','order','hasOwnProperty','getSubjects','ZendeskField','getDescriptions','Tag','getTags','setTags','ids','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','path','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','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','index','map','ZendeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','sort'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x34d5,0x73));var _0x534d=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x34d5[_0x57b54c];return _0x59cc19;};'use strict';var emlformat=require(_0x534d('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x534d('0x1'));var rp=require(_0x534d('0x2'));var moment=require(_0x534d('0x3'));var BPromise=require(_0x534d('0x4'));var Mustache=require(_0x534d('0x5'));var util=require('util');var path=require(_0x534d('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x534d('0x7'));var fs=require('fs');var fs_extra=require(_0x534d('0x8'));var _=require(_0x534d('0x9'));var squel=require(_0x534d('0xa'));var crypto=require(_0x534d('0xb'));var jsforce=require(_0x534d('0xc'));var deskjs=require(_0x534d('0xd'));var toCsv=require('to-csv');var querystring=require(_0x534d('0xe'));var Papa=require(_0x534d('0xf'));var Redis=require(_0x534d('0x10'));var authService=require(_0x534d('0x11'));var qs=require(_0x534d('0x12'));var as=require(_0x534d('0x13'));var hardwareService=require(_0x534d('0x14'));var logger=require('../../config/logger')(_0x534d('0x15'));var utils=require(_0x534d('0x16'));var config=require(_0x534d('0x17'));var licenseUtil=require(_0x534d('0x18'));var db=require(_0x534d('0x19'))['db'];function respondWithStatusCode(_0x1df748,_0x35322e){_0x35322e=_0x35322e||0xcc;return function(_0x7b7f4d){if(_0x7b7f4d){return _0x1df748[_0x534d('0x1a')](_0x35322e);}return _0x1df748['status'](_0x35322e)[_0x534d('0x1b')]();};}function respondWithResult(_0x358023,_0x1768ec){_0x1768ec=_0x1768ec||0xc8;return function(_0xd0e88){if(_0xd0e88){return _0x358023[_0x534d('0x1c')](_0x1768ec)[_0x534d('0x1d')](_0xd0e88);}};}function respondWithFilteredResult(_0x15d6dd,_0x2ba7dc){return function(_0x55a2d6){if(_0x55a2d6){var _0x41c2f7=typeof _0x2ba7dc[_0x534d('0x1e')]===_0x534d('0x1f')&&typeof _0x2ba7dc[_0x534d('0x20')]===_0x534d('0x1f');var _0x3ef0e2=_0x55a2d6[_0x534d('0x21')];var _0x4bec85=_0x41c2f7?0x0:_0x2ba7dc[_0x534d('0x1e')];var _0x58ebcb=_0x41c2f7?_0x55a2d6['count']:_0x2ba7dc[_0x534d('0x1e')]+_0x2ba7dc[_0x534d('0x20')];var _0x598612;if(_0x58ebcb>=_0x3ef0e2){_0x58ebcb=_0x3ef0e2;_0x598612=0xc8;}else{_0x598612=0xce;}_0x15d6dd[_0x534d('0x1c')](_0x598612);return _0x15d6dd[_0x534d('0x22')](_0x534d('0x23'),_0x4bec85+'-'+_0x58ebcb+'/'+_0x3ef0e2)[_0x534d('0x1d')](_0x55a2d6);}return null;};}function patchUpdates(_0x32fe64){return function(_0x5466a4){try{jsonpatch[_0x534d('0x24')](_0x5466a4,_0x32fe64,!![]);}catch(_0x1166de){return BPromise[_0x534d('0x25')](_0x1166de);}return _0x5466a4[_0x534d('0x26')]();};}function saveUpdates(_0x1c83bf,_0x4aa485){return function(_0x1fe6d9){if(_0x1fe6d9){return _0x1fe6d9['update'](_0x1c83bf)[_0x534d('0x27')](function(_0x2df8df){return _0x2df8df;});}return null;};}function removeEntity(_0x11dda8,_0x64fd9f){return function(_0x164b3a){if(_0x164b3a){return _0x164b3a[_0x534d('0x28')]()[_0x534d('0x27')](function(){_0x11dda8[_0x534d('0x1c')](0xcc)[_0x534d('0x1b')]();});}};}function handleEntityNotFound(_0x881afa,_0x55fe6e){return function(_0x27eab9){if(!_0x27eab9){_0x881afa[_0x534d('0x1a')](0x194);}return _0x27eab9;};}function handleError(_0x530468,_0xc10b32){_0xc10b32=_0xc10b32||0x1f4;return function(_0x181c19){logger[_0x534d('0x29')](_0x181c19[_0x534d('0x2a')]);if(_0x181c19[_0x534d('0x2b')]){delete _0x181c19['name'];}_0x530468[_0x534d('0x1c')](_0xc10b32)['send'](_0x181c19);};}exports[_0x534d('0x2c')]=function(_0x50cb36,_0x36fd29){var _0x5cd539={},_0x59b1f6={},_0x2d9aae={'count':0x0,'rows':[]};var _0x6b0b1c=_[_0x534d('0x2d')](db[_0x534d('0x2e')][_0x534d('0x2f')],function(_0x245380){return{'name':_0x245380[_0x534d('0x30')],'type':_0x245380[_0x534d('0x31')][_0x534d('0x32')]};});_0x59b1f6[_0x534d('0x33')]=_[_0x534d('0x2d')](_0x6b0b1c,'name');_0x59b1f6[_0x534d('0x34')]=_[_0x534d('0x35')](_0x50cb36[_0x534d('0x34')]);_0x59b1f6[_0x534d('0x36')]=_['intersection'](_0x59b1f6[_0x534d('0x33')],_0x59b1f6[_0x534d('0x34')]);_0x5cd539['attributes']=_[_0x534d('0x37')](_0x59b1f6[_0x534d('0x33')],qs[_0x534d('0x38')](_0x50cb36[_0x534d('0x34')][_0x534d('0x38')]));_0x5cd539['attributes']=_0x5cd539[_0x534d('0x39')][_0x534d('0x3a')]?_0x5cd539[_0x534d('0x39')]:_0x59b1f6['model'];if(!_0x50cb36[_0x534d('0x34')]['hasOwnProperty'](_0x534d('0x3b'))){_0x5cd539['limit']=qs[_0x534d('0x20')](_0x50cb36[_0x534d('0x34')][_0x534d('0x20')]);_0x5cd539[_0x534d('0x1e')]=qs[_0x534d('0x1e')](_0x50cb36[_0x534d('0x34')][_0x534d('0x1e')]);}_0x5cd539['order']=qs[_0x534d('0x3c')](_0x50cb36['query'][_0x534d('0x3c')]);_0x5cd539[_0x534d('0x3d')]=qs['filters'](_[_0x534d('0x3e')](_0x50cb36[_0x534d('0x34')],_0x59b1f6['filters']),_0x6b0b1c);if(_0x50cb36[_0x534d('0x34')][_0x534d('0x3f')]){_0x5cd539[_0x534d('0x3d')]=_[_0x534d('0x40')](_0x5cd539[_0x534d('0x3d')],{'$or':_[_0x534d('0x2d')](_0x6b0b1c,function(_0x4e8c1b){if(_0x4e8c1b[_0x534d('0x31')]!==_0x534d('0x41')){var _0x47c973={};_0x47c973[_0x4e8c1b[_0x534d('0x2b')]]={'$like':'%'+_0x50cb36[_0x534d('0x34')][_0x534d('0x3f')]+'%'};return _0x47c973;}})});}_0x5cd539=_[_0x534d('0x40')]({},_0x5cd539,_0x50cb36[_0x534d('0x42')]);var _0x591914={'where':_0x5cd539['where']};return db[_0x534d('0x2e')]['count'](_0x591914)['then'](function(_0x35c226){_0x2d9aae[_0x534d('0x21')]=_0x35c226;if(_0x50cb36[_0x534d('0x34')][_0x534d('0x43')]){_0x5cd539[_0x534d('0x44')]=[{'all':!![]}];}return db[_0x534d('0x2e')][_0x534d('0x45')](_0x5cd539);})[_0x534d('0x27')](function(_0x323c5a){_0x2d9aae[_0x534d('0x46')]=_0x323c5a;return _0x2d9aae;})[_0x534d('0x27')](respondWithFilteredResult(_0x36fd29,_0x5cd539))[_0x534d('0x47')](handleError(_0x36fd29,null));};exports['show']=function(_0x5f2b3a,_0x469eb5){var _0x4f5c39={'raw':![],'where':{'id':_0x5f2b3a[_0x534d('0x48')]['id']}},_0x536615={};_0x536615[_0x534d('0x33')]=_['keys'](db[_0x534d('0x2e')]['rawAttributes']);_0x536615[_0x534d('0x34')]=_[_0x534d('0x35')](_0x5f2b3a[_0x534d('0x34')]);_0x536615[_0x534d('0x36')]=_['intersection'](_0x536615[_0x534d('0x33')],_0x536615[_0x534d('0x34')]);_0x4f5c39[_0x534d('0x39')]=_[_0x534d('0x37')](_0x536615['model'],qs[_0x534d('0x38')](_0x5f2b3a[_0x534d('0x34')][_0x534d('0x38')]));_0x4f5c39[_0x534d('0x39')]=_0x4f5c39['attributes']['length']?_0x4f5c39['attributes']:_0x536615[_0x534d('0x33')];if(_0x5f2b3a[_0x534d('0x34')]['includeAll']){_0x4f5c39[_0x534d('0x44')]=[{'all':!![]}];}_0x4f5c39=_['merge']({},_0x4f5c39,_0x5f2b3a[_0x534d('0x42')]);return db['ZendeskConfiguration']['find'](_0x4f5c39)[_0x534d('0x27')](handleEntityNotFound(_0x469eb5,null))[_0x534d('0x27')](respondWithResult(_0x469eb5,null))[_0x534d('0x47')](handleError(_0x469eb5,null));};exports[_0x534d('0x49')]=function(_0x5e5bb0,_0xc2c57f){return db[_0x534d('0x2e')][_0x534d('0x49')](_0x5e5bb0[_0x534d('0x4a')],{})['then'](respondWithResult(_0xc2c57f,0xc9))[_0x534d('0x47')](handleError(_0xc2c57f,null));};exports[_0x534d('0x4b')]=function(_0x5167fa,_0x7a226f){if(_0x5167fa[_0x534d('0x4a')]['id']){delete _0x5167fa[_0x534d('0x4a')]['id'];}return db[_0x534d('0x2e')][_0x534d('0x4c')]({'where':{'id':_0x5167fa[_0x534d('0x48')]['id']}})[_0x534d('0x27')](handleEntityNotFound(_0x7a226f,null))[_0x534d('0x27')](saveUpdates(_0x5167fa[_0x534d('0x4a')],null))['then'](respondWithResult(_0x7a226f,null))[_0x534d('0x47')](handleError(_0x7a226f,null));};exports[_0x534d('0x28')]=function(_0x508610,_0x5c22c0){return db[_0x534d('0x2e')][_0x534d('0x4c')]({'where':{'id':_0x508610[_0x534d('0x48')]['id']}})[_0x534d('0x27')](handleEntityNotFound(_0x5c22c0,null))[_0x534d('0x27')](removeEntity(_0x5c22c0,null))[_0x534d('0x47')](handleError(_0x5c22c0,null));};exports[_0x534d('0x4d')]=function(_0x26c0b8,_0x5a27ea,_0x8ec4f0){var _0x3dd4fc={};var _0x2130d5={};var _0x2c4295;var _0x574584;return db[_0x534d('0x2e')][_0x534d('0x4e')]({'where':{'id':_0x26c0b8[_0x534d('0x48')]['id']}})[_0x534d('0x27')](handleEntityNotFound(_0x5a27ea,null))[_0x534d('0x27')](function(_0x2cd955){if(_0x2cd955){_0x2c4295=_0x2cd955;_0x2130d5['model']=_[_0x534d('0x35')](db['ZendeskField'][_0x534d('0x2f')]);_0x2130d5[_0x534d('0x34')]=_['keys'](_0x26c0b8['query']);_0x2130d5['filters']=_[_0x534d('0x37')](_0x2130d5['model'],_0x2130d5[_0x534d('0x34')]);_0x3dd4fc[_0x534d('0x39')]=_[_0x534d('0x37')](_0x2130d5[_0x534d('0x33')],qs[_0x534d('0x38')](_0x26c0b8[_0x534d('0x34')][_0x534d('0x38')]));_0x3dd4fc['attributes']=_0x3dd4fc['attributes'][_0x534d('0x3a')]?_0x3dd4fc[_0x534d('0x39')]:_0x2130d5['model'];_0x3dd4fc[_0x534d('0x4f')]=qs[_0x534d('0x3c')](_0x26c0b8[_0x534d('0x34')][_0x534d('0x3c')]);_0x3dd4fc['where']=qs[_0x534d('0x36')](_[_0x534d('0x3e')](_0x26c0b8[_0x534d('0x34')],_0x2130d5[_0x534d('0x36')]));if(_0x26c0b8[_0x534d('0x34')][_0x534d('0x3f')]){_0x3dd4fc['where']=_[_0x534d('0x40')](_0x3dd4fc[_0x534d('0x3d')],{'$or':_[_0x534d('0x2d')](_0x3dd4fc['attributes'],function(_0x30011c){var _0x35a535={};_0x35a535[_0x30011c]={'$like':'%'+_0x26c0b8[_0x534d('0x34')][_0x534d('0x3f')]+'%'};return _0x35a535;})});}_0x3dd4fc=_[_0x534d('0x40')]({},_0x3dd4fc,_0x26c0b8['options']);return _0x2c4295['getFields'](_0x3dd4fc);}})['then'](function(_0x558b17){if(_0x558b17){_0x574584=_0x558b17[_0x534d('0x3a')];if(!_0x26c0b8[_0x534d('0x34')][_0x534d('0x50')](_0x534d('0x3b'))){_0x3dd4fc['limit']=qs['limit'](_0x26c0b8[_0x534d('0x34')][_0x534d('0x20')]);_0x3dd4fc[_0x534d('0x1e')]=qs[_0x534d('0x1e')](_0x26c0b8[_0x534d('0x34')][_0x534d('0x1e')]);}return _0x2c4295[_0x534d('0x4d')](_0x3dd4fc);}})[_0x534d('0x27')](function(_0x4c7c46){if(_0x4c7c46){return _0x4c7c46?{'count':_0x574584,'rows':_0x4c7c46}:null;}})['then'](respondWithResult(_0x5a27ea,null))[_0x534d('0x47')](handleError(_0x5a27ea,null));};exports['getSubjects']=function(_0x4d7bf1,_0x2b6e8a,_0x322fbb){var _0x58379f={};var _0x5891fc={};var _0x2039d9;var _0x19d845;return db[_0x534d('0x2e')][_0x534d('0x4e')]({'where':{'id':_0x4d7bf1['params']['id']}})[_0x534d('0x27')](handleEntityNotFound(_0x2b6e8a,null))[_0x534d('0x27')](function(_0x1a839e){if(_0x1a839e){_0x2039d9=_0x1a839e;_0x5891fc[_0x534d('0x33')]=_[_0x534d('0x35')](db['ZendeskField'][_0x534d('0x2f')]);_0x5891fc[_0x534d('0x34')]=_[_0x534d('0x35')](_0x4d7bf1[_0x534d('0x34')]);_0x5891fc['filters']=_[_0x534d('0x37')](_0x5891fc[_0x534d('0x33')],_0x5891fc[_0x534d('0x34')]);_0x58379f['attributes']=_[_0x534d('0x37')](_0x5891fc[_0x534d('0x33')],qs['fields'](_0x4d7bf1['query'][_0x534d('0x38')]));_0x58379f['attributes']=_0x58379f[_0x534d('0x39')]['length']?_0x58379f[_0x534d('0x39')]:_0x5891fc[_0x534d('0x33')];_0x58379f[_0x534d('0x4f')]=qs['sort'](_0x4d7bf1[_0x534d('0x34')][_0x534d('0x3c')]);_0x58379f[_0x534d('0x3d')]=qs[_0x534d('0x36')](_['pick'](_0x4d7bf1[_0x534d('0x34')],_0x5891fc[_0x534d('0x36')]));if(_0x4d7bf1[_0x534d('0x34')]['filter']){_0x58379f[_0x534d('0x3d')]=_[_0x534d('0x40')](_0x58379f['where'],{'$or':_[_0x534d('0x2d')](_0x58379f[_0x534d('0x39')],function(_0x51dcfa){var _0x37ccb4={};_0x37ccb4[_0x51dcfa]={'$like':'%'+_0x4d7bf1['query'][_0x534d('0x3f')]+'%'};return _0x37ccb4;})});}_0x58379f=_['merge']({},_0x58379f,_0x4d7bf1[_0x534d('0x42')]);return _0x2039d9[_0x534d('0x51')](_0x58379f);}})[_0x534d('0x27')](function(_0xadeb1a){if(_0xadeb1a){_0x19d845=_0xadeb1a[_0x534d('0x3a')];if(!_0x4d7bf1[_0x534d('0x34')]['hasOwnProperty'](_0x534d('0x3b'))){_0x58379f[_0x534d('0x20')]=qs[_0x534d('0x20')](_0x4d7bf1['query']['limit']);_0x58379f[_0x534d('0x1e')]=qs['offset'](_0x4d7bf1[_0x534d('0x34')]['offset']);}return _0x2039d9['getSubjects'](_0x58379f);}})['then'](function(_0x46e7e9){if(_0x46e7e9){return _0x46e7e9?{'count':_0x19d845,'rows':_0x46e7e9}:null;}})[_0x534d('0x27')](respondWithResult(_0x2b6e8a,null))[_0x534d('0x47')](handleError(_0x2b6e8a,null));};exports['getDescriptions']=function(_0x519933,_0x1a02fa,_0x3ffa0e){var _0x13e4ef={};var _0x34a064={};var _0x5465b3;var _0x57d11e;return db[_0x534d('0x2e')][_0x534d('0x4e')]({'where':{'id':_0x519933[_0x534d('0x48')]['id']}})[_0x534d('0x27')](handleEntityNotFound(_0x1a02fa,null))['then'](function(_0xa11af7){if(_0xa11af7){_0x5465b3=_0xa11af7;_0x34a064[_0x534d('0x33')]=_[_0x534d('0x35')](db[_0x534d('0x52')][_0x534d('0x2f')]);_0x34a064[_0x534d('0x34')]=_[_0x534d('0x35')](_0x519933[_0x534d('0x34')]);_0x34a064[_0x534d('0x36')]=_[_0x534d('0x37')](_0x34a064[_0x534d('0x33')],_0x34a064[_0x534d('0x34')]);_0x13e4ef[_0x534d('0x39')]=_[_0x534d('0x37')](_0x34a064[_0x534d('0x33')],qs[_0x534d('0x38')](_0x519933[_0x534d('0x34')][_0x534d('0x38')]));_0x13e4ef['attributes']=_0x13e4ef[_0x534d('0x39')][_0x534d('0x3a')]?_0x13e4ef[_0x534d('0x39')]:_0x34a064[_0x534d('0x33')];_0x13e4ef[_0x534d('0x4f')]=qs[_0x534d('0x3c')](_0x519933[_0x534d('0x34')][_0x534d('0x3c')]);_0x13e4ef[_0x534d('0x3d')]=qs[_0x534d('0x36')](_[_0x534d('0x3e')](_0x519933[_0x534d('0x34')],_0x34a064[_0x534d('0x36')]));if(_0x519933['query'][_0x534d('0x3f')]){_0x13e4ef[_0x534d('0x3d')]=_[_0x534d('0x40')](_0x13e4ef[_0x534d('0x3d')],{'$or':_[_0x534d('0x2d')](_0x13e4ef[_0x534d('0x39')],function(_0x34ca62){var _0x5c8f06={};_0x5c8f06[_0x34ca62]={'$like':'%'+_0x519933[_0x534d('0x34')][_0x534d('0x3f')]+'%'};return _0x5c8f06;})});}_0x13e4ef=_[_0x534d('0x40')]({},_0x13e4ef,_0x519933['options']);return _0x5465b3['getDescriptions'](_0x13e4ef);}})['then'](function(_0x3e5816){if(_0x3e5816){_0x57d11e=_0x3e5816[_0x534d('0x3a')];if(!_0x519933['query']['hasOwnProperty'](_0x534d('0x3b'))){_0x13e4ef[_0x534d('0x20')]=qs[_0x534d('0x20')](_0x519933['query'][_0x534d('0x20')]);_0x13e4ef[_0x534d('0x1e')]=qs[_0x534d('0x1e')](_0x519933[_0x534d('0x34')]['offset']);}return _0x5465b3[_0x534d('0x53')](_0x13e4ef);}})['then'](function(_0x1105f8){if(_0x1105f8){return _0x1105f8?{'count':_0x57d11e,'rows':_0x1105f8}:null;}})[_0x534d('0x27')](respondWithResult(_0x1a02fa,null))[_0x534d('0x47')](handleError(_0x1a02fa,null));};exports['getTags']=function(_0x1e6d49,_0x144e1b,_0x13ae9c){var _0x17f88c={};var _0x50101d={};var _0x183033;var _0xf9a5e3;return db[_0x534d('0x2e')][_0x534d('0x4e')]({'where':{'id':_0x1e6d49[_0x534d('0x48')]['id']}})[_0x534d('0x27')](handleEntityNotFound(_0x144e1b,null))['then'](function(_0x321b3b){if(_0x321b3b){_0x183033=_0x321b3b;_0x50101d[_0x534d('0x33')]=_[_0x534d('0x35')](db[_0x534d('0x54')][_0x534d('0x2f')]);_0x50101d[_0x534d('0x34')]=_['keys'](_0x1e6d49[_0x534d('0x34')]);_0x50101d['filters']=_['intersection'](_0x50101d['model'],_0x50101d[_0x534d('0x34')]);_0x17f88c[_0x534d('0x39')]=_[_0x534d('0x37')](_0x50101d[_0x534d('0x33')],qs[_0x534d('0x38')](_0x1e6d49[_0x534d('0x34')]['fields']));_0x17f88c[_0x534d('0x39')]=_0x17f88c[_0x534d('0x39')]['length']?_0x17f88c[_0x534d('0x39')]:_0x50101d[_0x534d('0x33')];_0x17f88c[_0x534d('0x4f')]=qs[_0x534d('0x3c')](_0x1e6d49[_0x534d('0x34')][_0x534d('0x3c')]);_0x17f88c[_0x534d('0x3d')]=qs[_0x534d('0x36')](_[_0x534d('0x3e')](_0x1e6d49[_0x534d('0x34')],_0x50101d[_0x534d('0x36')]));if(_0x1e6d49[_0x534d('0x34')][_0x534d('0x3f')]){_0x17f88c['where']=_[_0x534d('0x40')](_0x17f88c[_0x534d('0x3d')],{'$or':_[_0x534d('0x2d')](_0x17f88c[_0x534d('0x39')],function(_0x2ae047){var _0x5d4b22={};_0x5d4b22[_0x2ae047]={'$like':'%'+_0x1e6d49['query']['filter']+'%'};return _0x5d4b22;})});}_0x17f88c=_[_0x534d('0x40')]({},_0x17f88c,_0x1e6d49[_0x534d('0x42')]);return _0x183033[_0x534d('0x55')](_0x17f88c);}})[_0x534d('0x27')](function(_0x3a7bae){if(_0x3a7bae){_0xf9a5e3=_0x3a7bae['length'];if(!_0x1e6d49[_0x534d('0x34')][_0x534d('0x50')](_0x534d('0x3b'))){_0x17f88c[_0x534d('0x20')]=qs[_0x534d('0x20')](_0x1e6d49['query'][_0x534d('0x20')]);_0x17f88c['offset']=qs['offset'](_0x1e6d49[_0x534d('0x34')][_0x534d('0x1e')]);}return _0x183033[_0x534d('0x55')](_0x17f88c);}})[_0x534d('0x27')](function(_0x177964){if(_0x177964){return _0x177964?{'count':_0xf9a5e3,'rows':_0x177964}:null;}})[_0x534d('0x27')](respondWithResult(_0x144e1b,null))[_0x534d('0x47')](handleError(_0x144e1b,null));};exports[_0x534d('0x56')]=function(_0x3ecec8,_0x3c9e68,_0x250eb5){if(_0x3ecec8[_0x534d('0x4a')]['id']){delete _0x3ecec8[_0x534d('0x4a')]['id'];}return db['ZendeskConfiguration'][_0x534d('0x4e')]({'where':{'id':_0x3ecec8[_0x534d('0x48')]['id']}})[_0x534d('0x27')](handleEntityNotFound(_0x3c9e68,null))['then'](function(_0x1ae5e3){if(_0x1ae5e3){return _0x1ae5e3[_0x534d('0x56')](_0x3ecec8[_0x534d('0x4a')][_0x534d('0x57')]||[]);}return null;})[_0x534d('0x27')](respondWithResult(_0x3c9e68,null))[_0x534d('0x47')](handleError(_0x3c9e68,null));};
\ No newline at end of file
+var _0xc68d=['nolimit','getSubjects','getDescriptions','Tag','getTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','map','ZendeskConfiguration','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','getFields','findOne','ZendeskField','keys','pick','filter'];(function(_0x111557,_0x4671f4){var _0xc99165=function(_0x24fbac){while(--_0x24fbac){_0x111557['push'](_0x111557['shift']());}};_0xc99165(++_0x4671f4);}(_0xc68d,0xfe));var _0xdc68=function(_0x11f54a,_0x5e7559){_0x11f54a=_0x11f54a-0x0;var _0x2465a9=_0xc68d[_0x11f54a];return _0x2465a9;};'use strict';var emlformat=require(_0xdc68('0x0'));var rimraf=require(_0xdc68('0x1'));var zipdir=require(_0xdc68('0x2'));var jsonpatch=require(_0xdc68('0x3'));var rp=require(_0xdc68('0x4'));var moment=require(_0xdc68('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xdc68('0x6'));var util=require(_0xdc68('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xdc68('0x8'));var ejs=require(_0xdc68('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdc68('0xa'));var squel=require('squel');var crypto=require(_0xdc68('0xb'));var jsforce=require(_0xdc68('0xc'));var deskjs=require(_0xdc68('0xd'));var toCsv=require(_0xdc68('0x8'));var querystring=require('querystring');var Papa=require(_0xdc68('0xe'));var Redis=require('ioredis');var authService=require(_0xdc68('0xf'));var qs=require(_0xdc68('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdc68('0x11'));var logger=require(_0xdc68('0x12'))(_0xdc68('0x13'));var utils=require(_0xdc68('0x14'));var config=require(_0xdc68('0x15'));var licenseUtil=require(_0xdc68('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x58530e,_0x27f070){_0x27f070=_0x27f070||0xcc;return function(_0x5bf86e){if(_0x5bf86e){return _0x58530e[_0xdc68('0x17')](_0x27f070);}return _0x58530e[_0xdc68('0x18')](_0x27f070)[_0xdc68('0x19')]();};}function respondWithResult(_0x4e3899,_0x31333e){_0x31333e=_0x31333e||0xc8;return function(_0x96eb9){if(_0x96eb9){return _0x4e3899[_0xdc68('0x18')](_0x31333e)[_0xdc68('0x1a')](_0x96eb9);}};}function respondWithFilteredResult(_0x3e85e5,_0x108582){return function(_0x4e2649){if(_0x4e2649){var _0x320f57=typeof _0x108582[_0xdc68('0x1b')]===_0xdc68('0x1c')&&typeof _0x108582[_0xdc68('0x1d')]===_0xdc68('0x1c');var _0x1c6a14=_0x4e2649[_0xdc68('0x1e')];var _0x314258=_0x320f57?0x0:_0x108582[_0xdc68('0x1b')];var _0x5bde91=_0x320f57?_0x4e2649['count']:_0x108582[_0xdc68('0x1b')]+_0x108582[_0xdc68('0x1d')];var _0x27a12b;if(_0x5bde91>=_0x1c6a14){_0x5bde91=_0x1c6a14;_0x27a12b=0xc8;}else{_0x27a12b=0xce;}_0x3e85e5[_0xdc68('0x18')](_0x27a12b);return _0x3e85e5[_0xdc68('0x1f')](_0xdc68('0x20'),_0x314258+'-'+_0x5bde91+'/'+_0x1c6a14)[_0xdc68('0x1a')](_0x4e2649);}return null;};}function patchUpdates(_0x7cfb92){return function(_0x43cbf5){try{jsonpatch[_0xdc68('0x21')](_0x43cbf5,_0x7cfb92,!![]);}catch(_0x4fcb83){return BPromise[_0xdc68('0x22')](_0x4fcb83);}return _0x43cbf5[_0xdc68('0x23')]();};}function saveUpdates(_0x9e9e22,_0x34e596){return function(_0x7efe46){if(_0x7efe46){return _0x7efe46[_0xdc68('0x24')](_0x9e9e22)[_0xdc68('0x25')](function(_0x558cf9){return _0x558cf9;});}return null;};}function removeEntity(_0x53c8a9,_0x260569){return function(_0x40956b){if(_0x40956b){return _0x40956b['destroy']()[_0xdc68('0x25')](function(){_0x53c8a9['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x13e2f2,_0x1290d5){return function(_0x47dbe3){if(!_0x47dbe3){_0x13e2f2['sendStatus'](0x194);}return _0x47dbe3;};}function handleError(_0x562475,_0x2d2140){_0x2d2140=_0x2d2140||0x1f4;return function(_0x4e2818){logger[_0xdc68('0x26')](_0x4e2818[_0xdc68('0x27')]);if(_0x4e2818[_0xdc68('0x28')]){delete _0x4e2818[_0xdc68('0x28')];}_0x562475['status'](_0x2d2140)[_0xdc68('0x29')](_0x4e2818);};}exports['index']=function(_0x274a32,_0x8b1814){var _0x350c18={},_0x474509={},_0x347c4d={'count':0x0,'rows':[]};var _0x3e2335=_[_0xdc68('0x2a')](db[_0xdc68('0x2b')][_0xdc68('0x2c')],function(_0x55ddc4){return{'name':_0x55ddc4['fieldName'],'type':_0x55ddc4[_0xdc68('0x2d')][_0xdc68('0x2e')]};});_0x474509[_0xdc68('0x2f')]=_[_0xdc68('0x2a')](_0x3e2335,_0xdc68('0x28'));_0x474509[_0xdc68('0x30')]=_['keys'](_0x274a32[_0xdc68('0x30')]);_0x474509[_0xdc68('0x31')]=_[_0xdc68('0x32')](_0x474509[_0xdc68('0x2f')],_0x474509['query']);_0x350c18[_0xdc68('0x33')]=_['intersection'](_0x474509[_0xdc68('0x2f')],qs[_0xdc68('0x34')](_0x274a32[_0xdc68('0x30')][_0xdc68('0x34')]));_0x350c18['attributes']=_0x350c18[_0xdc68('0x33')][_0xdc68('0x35')]?_0x350c18['attributes']:_0x474509[_0xdc68('0x2f')];if(!_0x274a32[_0xdc68('0x30')][_0xdc68('0x36')]('nolimit')){_0x350c18[_0xdc68('0x1d')]=qs['limit'](_0x274a32[_0xdc68('0x30')][_0xdc68('0x1d')]);_0x350c18[_0xdc68('0x1b')]=qs[_0xdc68('0x1b')](_0x274a32[_0xdc68('0x30')][_0xdc68('0x1b')]);}_0x350c18[_0xdc68('0x37')]=qs[_0xdc68('0x38')](_0x274a32[_0xdc68('0x30')][_0xdc68('0x38')]);_0x350c18['where']=qs['filters'](_['pick'](_0x274a32['query'],_0x474509[_0xdc68('0x31')]),_0x3e2335);if(_0x274a32[_0xdc68('0x30')]['filter']){_0x350c18[_0xdc68('0x39')]=_[_0xdc68('0x3a')](_0x350c18[_0xdc68('0x39')],{'$or':_[_0xdc68('0x2a')](_0x3e2335,function(_0x49c664){if(_0x49c664[_0xdc68('0x2d')]!==_0xdc68('0x3b')){var _0x7c4a31={};_0x7c4a31[_0x49c664[_0xdc68('0x28')]]={'$like':'%'+_0x274a32['query']['filter']+'%'};return _0x7c4a31;}})});}_0x350c18=_[_0xdc68('0x3a')]({},_0x350c18,_0x274a32[_0xdc68('0x3c')]);var _0x446488={'where':_0x350c18['where']};return db[_0xdc68('0x2b')][_0xdc68('0x1e')](_0x446488)['then'](function(_0x515d57){_0x347c4d['count']=_0x515d57;if(_0x274a32['query'][_0xdc68('0x3d')]){_0x350c18[_0xdc68('0x3e')]=[{'all':!![]}];}return db['ZendeskConfiguration'][_0xdc68('0x3f')](_0x350c18);})[_0xdc68('0x25')](function(_0x6bf69){_0x347c4d[_0xdc68('0x40')]=_0x6bf69;return _0x347c4d;})['then'](respondWithFilteredResult(_0x8b1814,_0x350c18))[_0xdc68('0x41')](handleError(_0x8b1814,null));};exports[_0xdc68('0x42')]=function(_0x36107f,_0x536844){var _0x1a66d1={'raw':![],'where':{'id':_0x36107f[_0xdc68('0x43')]['id']}},_0xf7760d={};_0xf7760d[_0xdc68('0x2f')]=_['keys'](db[_0xdc68('0x2b')][_0xdc68('0x2c')]);_0xf7760d[_0xdc68('0x30')]=_['keys'](_0x36107f[_0xdc68('0x30')]);_0xf7760d[_0xdc68('0x31')]=_['intersection'](_0xf7760d[_0xdc68('0x2f')],_0xf7760d[_0xdc68('0x30')]);_0x1a66d1[_0xdc68('0x33')]=_[_0xdc68('0x32')](_0xf7760d['model'],qs['fields'](_0x36107f[_0xdc68('0x30')][_0xdc68('0x34')]));_0x1a66d1[_0xdc68('0x33')]=_0x1a66d1[_0xdc68('0x33')][_0xdc68('0x35')]?_0x1a66d1[_0xdc68('0x33')]:_0xf7760d[_0xdc68('0x2f')];if(_0x36107f[_0xdc68('0x30')]['includeAll']){_0x1a66d1[_0xdc68('0x3e')]=[{'all':!![]}];}_0x1a66d1=_['merge']({},_0x1a66d1,_0x36107f[_0xdc68('0x3c')]);return db[_0xdc68('0x2b')][_0xdc68('0x44')](_0x1a66d1)['then'](handleEntityNotFound(_0x536844,null))[_0xdc68('0x25')](respondWithResult(_0x536844,null))[_0xdc68('0x41')](handleError(_0x536844,null));};exports[_0xdc68('0x45')]=function(_0x200fcd,_0x2d11ec){return db[_0xdc68('0x2b')][_0xdc68('0x45')](_0x200fcd[_0xdc68('0x46')],{})['then'](respondWithResult(_0x2d11ec,0xc9))['catch'](handleError(_0x2d11ec,null));};exports['update']=function(_0x175751,_0x1d2de1){if(_0x175751[_0xdc68('0x46')]['id']){delete _0x175751[_0xdc68('0x46')]['id'];}return db[_0xdc68('0x2b')][_0xdc68('0x44')]({'where':{'id':_0x175751['params']['id']}})[_0xdc68('0x25')](handleEntityNotFound(_0x1d2de1,null))[_0xdc68('0x25')](saveUpdates(_0x175751[_0xdc68('0x46')],null))['then'](respondWithResult(_0x1d2de1,null))[_0xdc68('0x41')](handleError(_0x1d2de1,null));};exports[_0xdc68('0x47')]=function(_0x46f2eb,_0x3bd05e){return db[_0xdc68('0x2b')][_0xdc68('0x44')]({'where':{'id':_0x46f2eb[_0xdc68('0x43')]['id']}})['then'](handleEntityNotFound(_0x3bd05e,null))[_0xdc68('0x25')](removeEntity(_0x3bd05e,null))['catch'](handleError(_0x3bd05e,null));};exports[_0xdc68('0x48')]=function(_0x429840,_0x596e99,_0x31de49){var _0x3dc9ee={};var _0x5d4bfc={};var _0x366621;var _0xf6d51c;return db['ZendeskConfiguration'][_0xdc68('0x49')]({'where':{'id':_0x429840[_0xdc68('0x43')]['id']}})[_0xdc68('0x25')](handleEntityNotFound(_0x596e99,null))[_0xdc68('0x25')](function(_0x5ec732){if(_0x5ec732){_0x366621=_0x5ec732;_0x5d4bfc[_0xdc68('0x2f')]=_['keys'](db[_0xdc68('0x4a')][_0xdc68('0x2c')]);_0x5d4bfc[_0xdc68('0x30')]=_[_0xdc68('0x4b')](_0x429840[_0xdc68('0x30')]);_0x5d4bfc[_0xdc68('0x31')]=_[_0xdc68('0x32')](_0x5d4bfc['model'],_0x5d4bfc['query']);_0x3dc9ee[_0xdc68('0x33')]=_[_0xdc68('0x32')](_0x5d4bfc[_0xdc68('0x2f')],qs[_0xdc68('0x34')](_0x429840[_0xdc68('0x30')][_0xdc68('0x34')]));_0x3dc9ee[_0xdc68('0x33')]=_0x3dc9ee[_0xdc68('0x33')][_0xdc68('0x35')]?_0x3dc9ee[_0xdc68('0x33')]:_0x5d4bfc['model'];_0x3dc9ee[_0xdc68('0x37')]=qs[_0xdc68('0x38')](_0x429840[_0xdc68('0x30')][_0xdc68('0x38')]);_0x3dc9ee['where']=qs[_0xdc68('0x31')](_[_0xdc68('0x4c')](_0x429840[_0xdc68('0x30')],_0x5d4bfc[_0xdc68('0x31')]));if(_0x429840[_0xdc68('0x30')][_0xdc68('0x4d')]){_0x3dc9ee['where']=_['merge'](_0x3dc9ee[_0xdc68('0x39')],{'$or':_[_0xdc68('0x2a')](_0x3dc9ee[_0xdc68('0x33')],function(_0x30982a){var _0x596f46={};_0x596f46[_0x30982a]={'$like':'%'+_0x429840[_0xdc68('0x30')][_0xdc68('0x4d')]+'%'};return _0x596f46;})});}_0x3dc9ee=_[_0xdc68('0x3a')]({},_0x3dc9ee,_0x429840['options']);return _0x366621[_0xdc68('0x48')](_0x3dc9ee);}})[_0xdc68('0x25')](function(_0x37d365){if(_0x37d365){_0xf6d51c=_0x37d365[_0xdc68('0x35')];if(!_0x429840['query'][_0xdc68('0x36')](_0xdc68('0x4e'))){_0x3dc9ee['limit']=qs[_0xdc68('0x1d')](_0x429840[_0xdc68('0x30')][_0xdc68('0x1d')]);_0x3dc9ee[_0xdc68('0x1b')]=qs[_0xdc68('0x1b')](_0x429840[_0xdc68('0x30')]['offset']);}return _0x366621[_0xdc68('0x48')](_0x3dc9ee);}})[_0xdc68('0x25')](function(_0x4bed65){if(_0x4bed65){return _0x4bed65?{'count':_0xf6d51c,'rows':_0x4bed65}:null;}})[_0xdc68('0x25')](respondWithResult(_0x596e99,null))[_0xdc68('0x41')](handleError(_0x596e99,null));};exports[_0xdc68('0x4f')]=function(_0x196592,_0x8ad6a7,_0x26db4c){var _0x32a8ea={};var _0x4411f2={};var _0x2f2262;var _0x7f21ef;return db[_0xdc68('0x2b')][_0xdc68('0x49')]({'where':{'id':_0x196592['params']['id']}})['then'](handleEntityNotFound(_0x8ad6a7,null))['then'](function(_0xb7d697){if(_0xb7d697){_0x2f2262=_0xb7d697;_0x4411f2['model']=_['keys'](db['ZendeskField'][_0xdc68('0x2c')]);_0x4411f2['query']=_[_0xdc68('0x4b')](_0x196592['query']);_0x4411f2['filters']=_[_0xdc68('0x32')](_0x4411f2[_0xdc68('0x2f')],_0x4411f2[_0xdc68('0x30')]);_0x32a8ea['attributes']=_[_0xdc68('0x32')](_0x4411f2[_0xdc68('0x2f')],qs['fields'](_0x196592[_0xdc68('0x30')]['fields']));_0x32a8ea[_0xdc68('0x33')]=_0x32a8ea['attributes'][_0xdc68('0x35')]?_0x32a8ea[_0xdc68('0x33')]:_0x4411f2[_0xdc68('0x2f')];_0x32a8ea['order']=qs[_0xdc68('0x38')](_0x196592[_0xdc68('0x30')][_0xdc68('0x38')]);_0x32a8ea[_0xdc68('0x39')]=qs[_0xdc68('0x31')](_[_0xdc68('0x4c')](_0x196592[_0xdc68('0x30')],_0x4411f2[_0xdc68('0x31')]));if(_0x196592['query']['filter']){_0x32a8ea[_0xdc68('0x39')]=_[_0xdc68('0x3a')](_0x32a8ea[_0xdc68('0x39')],{'$or':_['map'](_0x32a8ea[_0xdc68('0x33')],function(_0x323029){var _0x2f3ebf={};_0x2f3ebf[_0x323029]={'$like':'%'+_0x196592[_0xdc68('0x30')]['filter']+'%'};return _0x2f3ebf;})});}_0x32a8ea=_[_0xdc68('0x3a')]({},_0x32a8ea,_0x196592[_0xdc68('0x3c')]);return _0x2f2262[_0xdc68('0x4f')](_0x32a8ea);}})[_0xdc68('0x25')](function(_0x262c8a){if(_0x262c8a){_0x7f21ef=_0x262c8a['length'];if(!_0x196592['query']['hasOwnProperty'](_0xdc68('0x4e'))){_0x32a8ea[_0xdc68('0x1d')]=qs[_0xdc68('0x1d')](_0x196592[_0xdc68('0x30')][_0xdc68('0x1d')]);_0x32a8ea[_0xdc68('0x1b')]=qs[_0xdc68('0x1b')](_0x196592['query'][_0xdc68('0x1b')]);}return _0x2f2262[_0xdc68('0x4f')](_0x32a8ea);}})['then'](function(_0x3a1503){if(_0x3a1503){return _0x3a1503?{'count':_0x7f21ef,'rows':_0x3a1503}:null;}})[_0xdc68('0x25')](respondWithResult(_0x8ad6a7,null))[_0xdc68('0x41')](handleError(_0x8ad6a7,null));};exports[_0xdc68('0x50')]=function(_0xcb8bd8,_0x266600,_0x1aebbb){var _0x2f525d={};var _0x486d17={};var _0x29ab6c;var _0x44c220;return db[_0xdc68('0x2b')][_0xdc68('0x49')]({'where':{'id':_0xcb8bd8[_0xdc68('0x43')]['id']}})['then'](handleEntityNotFound(_0x266600,null))[_0xdc68('0x25')](function(_0x58c2c4){if(_0x58c2c4){_0x29ab6c=_0x58c2c4;_0x486d17['model']=_[_0xdc68('0x4b')](db[_0xdc68('0x4a')][_0xdc68('0x2c')]);_0x486d17[_0xdc68('0x30')]=_['keys'](_0xcb8bd8[_0xdc68('0x30')]);_0x486d17[_0xdc68('0x31')]=_[_0xdc68('0x32')](_0x486d17['model'],_0x486d17[_0xdc68('0x30')]);_0x2f525d['attributes']=_[_0xdc68('0x32')](_0x486d17[_0xdc68('0x2f')],qs[_0xdc68('0x34')](_0xcb8bd8[_0xdc68('0x30')][_0xdc68('0x34')]));_0x2f525d[_0xdc68('0x33')]=_0x2f525d[_0xdc68('0x33')][_0xdc68('0x35')]?_0x2f525d[_0xdc68('0x33')]:_0x486d17[_0xdc68('0x2f')];_0x2f525d['order']=qs[_0xdc68('0x38')](_0xcb8bd8[_0xdc68('0x30')][_0xdc68('0x38')]);_0x2f525d[_0xdc68('0x39')]=qs[_0xdc68('0x31')](_['pick'](_0xcb8bd8['query'],_0x486d17['filters']));if(_0xcb8bd8['query']['filter']){_0x2f525d[_0xdc68('0x39')]=_[_0xdc68('0x3a')](_0x2f525d['where'],{'$or':_[_0xdc68('0x2a')](_0x2f525d[_0xdc68('0x33')],function(_0x309010){var _0x39b700={};_0x39b700[_0x309010]={'$like':'%'+_0xcb8bd8[_0xdc68('0x30')][_0xdc68('0x4d')]+'%'};return _0x39b700;})});}_0x2f525d=_[_0xdc68('0x3a')]({},_0x2f525d,_0xcb8bd8[_0xdc68('0x3c')]);return _0x29ab6c['getDescriptions'](_0x2f525d);}})[_0xdc68('0x25')](function(_0x423fa8){if(_0x423fa8){_0x44c220=_0x423fa8[_0xdc68('0x35')];if(!_0xcb8bd8[_0xdc68('0x30')]['hasOwnProperty']('nolimit')){_0x2f525d['limit']=qs[_0xdc68('0x1d')](_0xcb8bd8[_0xdc68('0x30')][_0xdc68('0x1d')]);_0x2f525d[_0xdc68('0x1b')]=qs[_0xdc68('0x1b')](_0xcb8bd8['query'][_0xdc68('0x1b')]);}return _0x29ab6c[_0xdc68('0x50')](_0x2f525d);}})[_0xdc68('0x25')](function(_0x39cf4c){if(_0x39cf4c){return _0x39cf4c?{'count':_0x44c220,'rows':_0x39cf4c}:null;}})[_0xdc68('0x25')](respondWithResult(_0x266600,null))[_0xdc68('0x41')](handleError(_0x266600,null));};exports['getTags']=function(_0x10849b,_0xd25c59,_0x545641){var _0x3e1e1b={};var _0x15b730={};var _0x46d69c;var _0x74924a;return db[_0xdc68('0x2b')][_0xdc68('0x49')]({'where':{'id':_0x10849b[_0xdc68('0x43')]['id']}})[_0xdc68('0x25')](handleEntityNotFound(_0xd25c59,null))[_0xdc68('0x25')](function(_0x4f8e09){if(_0x4f8e09){_0x46d69c=_0x4f8e09;_0x15b730[_0xdc68('0x2f')]=_[_0xdc68('0x4b')](db[_0xdc68('0x51')]['rawAttributes']);_0x15b730['query']=_[_0xdc68('0x4b')](_0x10849b['query']);_0x15b730[_0xdc68('0x31')]=_[_0xdc68('0x32')](_0x15b730[_0xdc68('0x2f')],_0x15b730[_0xdc68('0x30')]);_0x3e1e1b[_0xdc68('0x33')]=_[_0xdc68('0x32')](_0x15b730[_0xdc68('0x2f')],qs[_0xdc68('0x34')](_0x10849b[_0xdc68('0x30')][_0xdc68('0x34')]));_0x3e1e1b[_0xdc68('0x33')]=_0x3e1e1b['attributes'][_0xdc68('0x35')]?_0x3e1e1b[_0xdc68('0x33')]:_0x15b730[_0xdc68('0x2f')];_0x3e1e1b[_0xdc68('0x37')]=qs['sort'](_0x10849b[_0xdc68('0x30')]['sort']);_0x3e1e1b[_0xdc68('0x39')]=qs[_0xdc68('0x31')](_[_0xdc68('0x4c')](_0x10849b[_0xdc68('0x30')],_0x15b730[_0xdc68('0x31')]));if(_0x10849b[_0xdc68('0x30')][_0xdc68('0x4d')]){_0x3e1e1b[_0xdc68('0x39')]=_['merge'](_0x3e1e1b[_0xdc68('0x39')],{'$or':_[_0xdc68('0x2a')](_0x3e1e1b['attributes'],function(_0x517f9c){var _0x1430c0={};_0x1430c0[_0x517f9c]={'$like':'%'+_0x10849b['query'][_0xdc68('0x4d')]+'%'};return _0x1430c0;})});}_0x3e1e1b=_['merge']({},_0x3e1e1b,_0x10849b[_0xdc68('0x3c')]);return _0x46d69c[_0xdc68('0x52')](_0x3e1e1b);}})[_0xdc68('0x25')](function(_0x14a696){if(_0x14a696){_0x74924a=_0x14a696[_0xdc68('0x35')];if(!_0x10849b[_0xdc68('0x30')][_0xdc68('0x36')]('nolimit')){_0x3e1e1b[_0xdc68('0x1d')]=qs[_0xdc68('0x1d')](_0x10849b[_0xdc68('0x30')][_0xdc68('0x1d')]);_0x3e1e1b['offset']=qs[_0xdc68('0x1b')](_0x10849b[_0xdc68('0x30')][_0xdc68('0x1b')]);}return _0x46d69c[_0xdc68('0x52')](_0x3e1e1b);}})['then'](function(_0x1a255a){if(_0x1a255a){return _0x1a255a?{'count':_0x74924a,'rows':_0x1a255a}:null;}})['then'](respondWithResult(_0xd25c59,null))[_0xdc68('0x41')](handleError(_0xd25c59,null));};exports['setTags']=function(_0x1357cf,_0xcdb28,_0x567fce){if(_0x1357cf['body']['id']){delete _0x1357cf[_0xdc68('0x46')]['id'];}return db[_0xdc68('0x2b')][_0xdc68('0x49')]({'where':{'id':_0x1357cf['params']['id']}})[_0xdc68('0x25')](handleEntityNotFound(_0xcdb28,null))[_0xdc68('0x25')](function(_0xaa248c){if(_0xaa248c){return _0xaa248c['setTags'](_0x1357cf['body']['ids']||[]);}return null;})[_0xdc68('0x25')](respondWithResult(_0xcdb28,null))[_0xdc68('0x41')](handleError(_0xcdb28,null));};
\ No newline at end of file
index 1882d6d..e22d851 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3423=['ZendeskConfiguration','int_zendesk_configurations','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes','exports','define'];(function(_0xf8ca48,_0xdf121){var _0x536825=function(_0x4027b8){while(--_0x4027b8){_0xf8ca48['push'](_0xf8ca48['shift']());}};_0x536825(++_0xdf121);}(_0x3423,0x188));var _0x3342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3423[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3342('0x0'))(_0x3342('0x1'));var moment=require(_0x3342('0x2'));var BPromise=require(_0x3342('0x3'));var rp=require(_0x3342('0x4'));var fs=require('fs');var path=require(_0x3342('0x5'));var rimraf=require(_0x3342('0x6'));var config=require(_0x3342('0x7'));var attributes=require(_0x3342('0x8'));module[_0x3342('0x9')]=function(_0x467453,_0x2ccbe0){return _0x467453[_0x3342('0xa')](_0x3342('0xb'),attributes,{'tableName':_0x3342('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5204=['request-promise','path','../../config/environment','exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash','util','api','moment','bluebird'];(function(_0x393bf5,_0x225cac){var _0xcb023=function(_0x4e671d){while(--_0x4e671d){_0x393bf5['push'](_0x393bf5['shift']());}};_0xcb023(++_0x225cac);}(_0x5204,0xdf));var _0x4520=function(_0x174ef5,_0x256e8e){_0x174ef5=_0x174ef5-0x0;var _0x1cc379=_0x5204[_0x174ef5];return _0x1cc379;};'use strict';var _=require(_0x4520('0x0'));var util=require(_0x4520('0x1'));var logger=require('../../config/logger')(_0x4520('0x2'));var moment=require(_0x4520('0x3'));var BPromise=require(_0x4520('0x4'));var rp=require(_0x4520('0x5'));var fs=require('fs');var path=require(_0x4520('0x6'));var rimraf=require('rimraf');var config=require(_0x4520('0x7'));var attributes=require('./intZendeskConfiguration.attributes');module[_0x4520('0x8')]=function(_0x209381,_0xe0a256){return _0x209381[_0x4520('0x9')](_0x4520('0xa'),attributes,{'tableName':_0x4520('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6e458d7..afb4c27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa35a=['../../config/logger','client','http','request','info','ZendeskConfiguration,\x20%s,\x20%s','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x1bb286,_0x3c6f56){var _0x366dba=function(_0x207ac5){while(--_0x207ac5){_0x1bb286['push'](_0x1bb286['shift']());}};_0x366dba(++_0x3c6f56);}(_0xa35a,0x161));var _0xaa35=function(_0x36884e,_0x48008f){_0x36884e=_0x36884e-0x0;var _0x1cc367=_0xa35a[_0x36884e];return _0x1cc367;};'use strict';var _=require(_0xaa35('0x0'));var util=require('util');var moment=require(_0xaa35('0x1'));var BPromise=require(_0xaa35('0x2'));var rs=require(_0xaa35('0x3'));var fs=require('fs');var Redis=require(_0xaa35('0x4'));var db=require(_0xaa35('0x5'))['db'];var utils=require(_0xaa35('0x6'));var logger=require(_0xaa35('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xaa35('0x8')][_0xaa35('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1fa3e8,_0x4cfb5f,_0x3e862f){return new BPromise(function(_0xd305c,_0xe957a5){return client[_0xaa35('0xa')](_0x1fa3e8,_0x3e862f)['then'](function(_0x8fbb6c){logger[_0xaa35('0xb')](_0xaa35('0xc'),_0x4cfb5f,'request\x20sent');logger['debug'](_0xaa35('0xd'),_0x4cfb5f,'request\x20sent',JSON['stringify'](_0x8fbb6c));if(_0x8fbb6c[_0xaa35('0xe')]){if(_0x8fbb6c[_0xaa35('0xe')][_0xaa35('0xf')]===0x1f4){logger[_0xaa35('0xe')]('ZendeskConfiguration,\x20%s,\x20%s',_0x4cfb5f,_0x8fbb6c[_0xaa35('0xe')]['message']);return _0xe957a5(_0x8fbb6c[_0xaa35('0xe')]['message']);}logger[_0xaa35('0xe')](_0xaa35('0xc'),_0x4cfb5f,_0x8fbb6c[_0xaa35('0xe')][_0xaa35('0x10')]);return _0xd305c(_0x8fbb6c[_0xaa35('0xe')][_0xaa35('0x10')]);}else{logger[_0xaa35('0xb')](_0xaa35('0xc'),_0x4cfb5f,_0xaa35('0x11'));_0xd305c(_0x8fbb6c[_0xaa35('0x12')][_0xaa35('0x10')]);}})[_0xaa35('0x13')](function(_0x455cf4){logger[_0xaa35('0xe')](_0xaa35('0xc'),_0x4cfb5f,_0x455cf4);_0xe957a5(_0x455cf4);});});}
\ No newline at end of file
+var _0xe0f8=['result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','request','info','request\x20sent','debug','error','code','message','ZendeskConfiguration,\x20%s,\x20%s'];(function(_0x27eaa2,_0x145c97){var _0x2d9619=function(_0x49678c){while(--_0x49678c){_0x27eaa2['push'](_0x27eaa2['shift']());}};_0x2d9619(++_0x145c97);}(_0xe0f8,0x1a4));var _0x8e0f=function(_0x34843e,_0x4c4224){_0x34843e=_0x34843e-0x0;var _0x598f7f=_0xe0f8[_0x34843e];return _0x598f7f;};'use strict';var _=require('lodash');var util=require(_0x8e0f('0x0'));var moment=require(_0x8e0f('0x1'));var BPromise=require(_0x8e0f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8e0f('0x3'));var db=require(_0x8e0f('0x4'))['db'];var utils=require(_0x8e0f('0x5'));var logger=require(_0x8e0f('0x6'))(_0x8e0f('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x8e0f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1a7cd8,_0x3d39c1,_0x3f0cb4){return new BPromise(function(_0x497383,_0x46e28c){return client[_0x8e0f('0x9')](_0x1a7cd8,_0x3f0cb4)['then'](function(_0x2a4fd2){logger[_0x8e0f('0xa')]('ZendeskConfiguration,\x20%s,\x20%s',_0x3d39c1,_0x8e0f('0xb'));logger[_0x8e0f('0xc')]('ZendeskConfiguration,\x20%s,\x20%s,\x20%s',_0x3d39c1,_0x8e0f('0xb'),JSON['stringify'](_0x2a4fd2));if(_0x2a4fd2[_0x8e0f('0xd')]){if(_0x2a4fd2[_0x8e0f('0xd')][_0x8e0f('0xe')]===0x1f4){logger[_0x8e0f('0xd')]('ZendeskConfiguration,\x20%s,\x20%s',_0x3d39c1,_0x2a4fd2[_0x8e0f('0xd')][_0x8e0f('0xf')]);return _0x46e28c(_0x2a4fd2[_0x8e0f('0xd')][_0x8e0f('0xf')]);}logger[_0x8e0f('0xd')]('ZendeskConfiguration,\x20%s,\x20%s',_0x3d39c1,_0x2a4fd2['error']['message']);return _0x497383(_0x2a4fd2[_0x8e0f('0xd')][_0x8e0f('0xf')]);}else{logger[_0x8e0f('0xa')](_0x8e0f('0x10'),_0x3d39c1,_0x8e0f('0xb'));_0x497383(_0x2a4fd2[_0x8e0f('0x11')]['message']);}})[_0x8e0f('0x12')](function(_0x52a47c){logger[_0x8e0f('0xd')]('ZendeskConfiguration,\x20%s,\x20%s',_0x3d39c1,_0x52a47c);_0x46e28c(_0x52a47c);});});}
\ No newline at end of file
index 0d5390a..44fd3b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc6a=['fs-extra','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','index','/:id','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x4aea1c,_0x5669f1){var _0xe407d7=function(_0x1c6307){while(--_0x1c6307){_0x4aea1c['push'](_0x4aea1c['shift']());}};_0xe407d7(++_0x5669f1);}(_0xbc6a,0x1b2));var _0xabc6=function(_0x580da0,_0x858d15){_0x580da0=_0x580da0-0x0;var _0x31d33c=_0xbc6a[_0x580da0];return _0x31d33c;};'use strict';var multer=require(_0xabc6('0x0'));var util=require(_0xabc6('0x1'));var path=require(_0xabc6('0x2'));var timeout=require(_0xabc6('0x3'));var express=require(_0xabc6('0x4'));var router=express[_0xabc6('0x5')]();var fs_extra=require(_0xabc6('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xabc6('0x7'));var config=require(_0xabc6('0x8'));var controller=require(_0xabc6('0x9'));router[_0xabc6('0xa')]('/',auth[_0xabc6('0xb')](),controller[_0xabc6('0xc')]);router[_0xabc6('0xa')](_0xabc6('0xd'),auth[_0xabc6('0xb')](),controller['show']);router['post']('/',auth[_0xabc6('0xb')](),controller[_0xabc6('0xe')]);router[_0xabc6('0xf')](_0xabc6('0xd'),auth[_0xabc6('0xb')](),controller[_0xabc6('0x10')]);router[_0xabc6('0x11')](_0xabc6('0xd'),auth[_0xabc6('0xb')](),controller[_0xabc6('0x12')]);module[_0xabc6('0x13')]=router;
\ No newline at end of file
+var _0xc9e8=['isAuthenticated','index','create','put','delete','/:id','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get'];(function(_0x39b0ec,_0x427e86){var _0xddf040=function(_0x40b968){while(--_0x40b968){_0x39b0ec['push'](_0x39b0ec['shift']());}};_0xddf040(++_0x427e86);}(_0xc9e8,0xf5));var _0x8c9e=function(_0x377f50,_0x5589ba){_0x377f50=_0x377f50-0x0;var _0x14a9d2=_0xc9e8[_0x377f50];return _0x14a9d2;};'use strict';var multer=require('multer');var util=require(_0x8c9e('0x0'));var path=require('path');var timeout=require(_0x8c9e('0x1'));var express=require(_0x8c9e('0x2'));var router=express[_0x8c9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x8c9e('0x4'));var interaction=require(_0x8c9e('0x5'));var config=require('../../config/environment');var controller=require('./intZendeskField.controller');router[_0x8c9e('0x6')]('/',auth[_0x8c9e('0x7')](),controller[_0x8c9e('0x8')]);router[_0x8c9e('0x6')]('/:id',auth[_0x8c9e('0x7')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x8c9e('0x9')]);router[_0x8c9e('0xa')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x8c9e('0xb')](_0x8c9e('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x8c9e('0xd')]=router;
\ No newline at end of file
index c4865de..50ed9d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98a3=['sequelize','exports','ENUM','string','variable','customVariable','keyValue','STRING'];(function(_0x5da739,_0x4d6744){var _0x17ad93=function(_0x438b83){while(--_0x438b83){_0x5da739['push'](_0x5da739['shift']());}};_0x17ad93(++_0x4d6744);}(_0x98a3,0x1b0));var _0x398a=function(_0x410480,_0x4d525e){_0x410480=_0x410480-0x0;var _0x2c7667=_0x98a3[_0x410480];return _0x2c7667;};'use strict';var Sequelize=require(_0x398a('0x0'));module[_0x398a('0x1')]={'type':{'type':Sequelize[_0x398a('0x2')](_0x398a('0x3'),_0x398a('0x4'),_0x398a('0x5'),_0x398a('0x6'),'picklist'),'defaultValue':_0x398a('0x3')},'content':{'type':Sequelize[_0x398a('0x7')]},'key':{'type':Sequelize[_0x398a('0x7')]},'keyType':{'type':Sequelize['ENUM']('string','variable','customVariable')},'keyContent':{'type':Sequelize[_0x398a('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x398a('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x398a('0x7')]}};
\ No newline at end of file
+var _0xc570=['STRING','sequelize','exports','ENUM','string','variable','customVariable','picklist'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc570,0x119));var _0x0c57=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xc570[_0x25bea7];return _0x175952;};'use strict';var Sequelize=require(_0x0c57('0x0'));module[_0x0c57('0x1')]={'type':{'type':Sequelize[_0x0c57('0x2')](_0x0c57('0x3'),_0x0c57('0x4'),_0x0c57('0x5'),'keyValue',_0x0c57('0x6')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x0c57('0x2')](_0x0c57('0x3'),_0x0c57('0x4'),_0x0c57('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x0c57('0x7')]},'nameField':{'type':Sequelize[_0x0c57('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0c57('0x7')]}};
\ No newline at end of file
index 63ea45a..ae3c62c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47cc=['count','Content-Range','save','then','destroy','stack','name','send','index','ZendeskField','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','rows','catch','params','rawAttributes','include','find','create','body','update','zip-dir','request-promise','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x47cc,0x181));var _0xc47c=function(_0x92b3b2,_0x385152){_0x92b3b2=_0x92b3b2-0x0;var _0x145702=_0x47cc[_0x92b3b2];return _0x145702;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc47c('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc47c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc47c('0x2'));var util=require(_0xc47c('0x3'));var path=require(_0xc47c('0x4'));var sox=require('sox');var csv=require(_0xc47c('0x5'));var ejs=require(_0xc47c('0x6'));var fs=require('fs');var fs_extra=require(_0xc47c('0x7'));var _=require(_0xc47c('0x8'));var squel=require(_0xc47c('0x9'));var crypto=require(_0xc47c('0xa'));var jsforce=require(_0xc47c('0xb'));var deskjs=require(_0xc47c('0xc'));var toCsv=require(_0xc47c('0x5'));var querystring=require(_0xc47c('0xd'));var Papa=require(_0xc47c('0xe'));var Redis=require(_0xc47c('0xf'));var authService=require(_0xc47c('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xc47c('0x11'));var hardwareService=require(_0xc47c('0x12'));var logger=require(_0xc47c('0x13'))('api');var utils=require(_0xc47c('0x14'));var config=require(_0xc47c('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xc47c('0x16'))['db'];function respondWithStatusCode(_0x494fb3,_0x560de3){_0x560de3=_0x560de3||0xcc;return function(_0x5161a7){if(_0x5161a7){return _0x494fb3[_0xc47c('0x17')](_0x560de3);}return _0x494fb3[_0xc47c('0x18')](_0x560de3)['end']();};}function respondWithResult(_0x37e1a1,_0x187fc1){_0x187fc1=_0x187fc1||0xc8;return function(_0x5e090f){if(_0x5e090f){return _0x37e1a1['status'](_0x187fc1)[_0xc47c('0x19')](_0x5e090f);}};}function respondWithFilteredResult(_0x26f563,_0x368879){return function(_0x49299a){if(_0x49299a){var _0x3395e9=typeof _0x368879[_0xc47c('0x1a')]===_0xc47c('0x1b')&&typeof _0x368879[_0xc47c('0x1c')]===_0xc47c('0x1b');var _0x2169f7=_0x49299a[_0xc47c('0x1d')];var _0x1f7422=_0x3395e9?0x0:_0x368879[_0xc47c('0x1a')];var _0x297f0d=_0x3395e9?_0x49299a[_0xc47c('0x1d')]:_0x368879['offset']+_0x368879['limit'];var _0x1b549b;if(_0x297f0d>=_0x2169f7){_0x297f0d=_0x2169f7;_0x1b549b=0xc8;}else{_0x1b549b=0xce;}_0x26f563[_0xc47c('0x18')](_0x1b549b);return _0x26f563['set'](_0xc47c('0x1e'),_0x1f7422+'-'+_0x297f0d+'/'+_0x2169f7)['json'](_0x49299a);}return null;};}function patchUpdates(_0x2001a5){return function(_0x33ae1b){try{jsonpatch['apply'](_0x33ae1b,_0x2001a5,!![]);}catch(_0x3f2e96){return BPromise['reject'](_0x3f2e96);}return _0x33ae1b[_0xc47c('0x1f')]();};}function saveUpdates(_0x5693a0,_0x4d5881){return function(_0x56452){if(_0x56452){return _0x56452['update'](_0x5693a0)[_0xc47c('0x20')](function(_0x17b696){return _0x17b696;});}return null;};}function removeEntity(_0x1043ad,_0x1895c0){return function(_0x2ee2d3){if(_0x2ee2d3){return _0x2ee2d3[_0xc47c('0x21')]()[_0xc47c('0x20')](function(){_0x1043ad[_0xc47c('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x49e218,_0x4f93ac){return function(_0x58753a){if(!_0x58753a){_0x49e218[_0xc47c('0x17')](0x194);}return _0x58753a;};}function handleError(_0x557c22,_0x527340){_0x527340=_0x527340||0x1f4;return function(_0xf7f6a4){logger['error'](_0xf7f6a4[_0xc47c('0x22')]);if(_0xf7f6a4[_0xc47c('0x23')]){delete _0xf7f6a4[_0xc47c('0x23')];}_0x557c22[_0xc47c('0x18')](_0x527340)[_0xc47c('0x24')](_0xf7f6a4);};}exports[_0xc47c('0x25')]=function(_0x4de088,_0x4e3e47){var _0x3a2171={},_0x41962b={},_0x5c3abb={'count':0x0,'rows':[]};var _0x446c7c=_['map'](db[_0xc47c('0x26')]['rawAttributes'],function(_0x5af1b4){return{'name':_0x5af1b4['fieldName'],'type':_0x5af1b4[_0xc47c('0x27')][_0xc47c('0x28')]};});_0x41962b[_0xc47c('0x29')]=_[_0xc47c('0x2a')](_0x446c7c,'name');_0x41962b[_0xc47c('0x2b')]=_[_0xc47c('0x2c')](_0x4de088['query']);_0x41962b[_0xc47c('0x2d')]=_[_0xc47c('0x2e')](_0x41962b['model'],_0x41962b['query']);_0x3a2171[_0xc47c('0x2f')]=_[_0xc47c('0x2e')](_0x41962b[_0xc47c('0x29')],qs['fields'](_0x4de088[_0xc47c('0x2b')][_0xc47c('0x30')]));_0x3a2171[_0xc47c('0x2f')]=_0x3a2171[_0xc47c('0x2f')][_0xc47c('0x31')]?_0x3a2171[_0xc47c('0x2f')]:_0x41962b[_0xc47c('0x29')];if(!_0x4de088[_0xc47c('0x2b')][_0xc47c('0x32')](_0xc47c('0x33'))){_0x3a2171[_0xc47c('0x1c')]=qs['limit'](_0x4de088[_0xc47c('0x2b')][_0xc47c('0x1c')]);_0x3a2171[_0xc47c('0x1a')]=qs[_0xc47c('0x1a')](_0x4de088['query'][_0xc47c('0x1a')]);}_0x3a2171[_0xc47c('0x34')]=qs[_0xc47c('0x35')](_0x4de088[_0xc47c('0x2b')][_0xc47c('0x35')]);_0x3a2171[_0xc47c('0x36')]=qs[_0xc47c('0x2d')](_[_0xc47c('0x37')](_0x4de088[_0xc47c('0x2b')],_0x41962b[_0xc47c('0x2d')]),_0x446c7c);if(_0x4de088[_0xc47c('0x2b')][_0xc47c('0x38')]){_0x3a2171[_0xc47c('0x36')]=_[_0xc47c('0x39')](_0x3a2171[_0xc47c('0x36')],{'$or':_[_0xc47c('0x2a')](_0x446c7c,function(_0x1c9e7e){if(_0x1c9e7e[_0xc47c('0x27')]!=='VIRTUAL'){var _0x9ac07={};_0x9ac07[_0x1c9e7e[_0xc47c('0x23')]]={'$like':'%'+_0x4de088[_0xc47c('0x2b')][_0xc47c('0x38')]+'%'};return _0x9ac07;}})});}_0x3a2171=_[_0xc47c('0x39')]({},_0x3a2171,_0x4de088[_0xc47c('0x3a')]);var _0x30a0c4={'where':_0x3a2171[_0xc47c('0x36')]};return db[_0xc47c('0x26')][_0xc47c('0x1d')](_0x30a0c4)[_0xc47c('0x20')](function(_0x4b0beb){_0x5c3abb[_0xc47c('0x1d')]=_0x4b0beb;if(_0x4de088[_0xc47c('0x2b')][_0xc47c('0x3b')]){_0x3a2171['include']=[{'all':!![]}];}return db[_0xc47c('0x26')]['findAll'](_0x3a2171);})[_0xc47c('0x20')](function(_0x1b2ad8){_0x5c3abb[_0xc47c('0x3c')]=_0x1b2ad8;return _0x5c3abb;})[_0xc47c('0x20')](respondWithFilteredResult(_0x4e3e47,_0x3a2171))[_0xc47c('0x3d')](handleError(_0x4e3e47,null));};exports['show']=function(_0x3ac3bc,_0x279832){var _0x29cb4a={'raw':!![],'where':{'id':_0x3ac3bc[_0xc47c('0x3e')]['id']}},_0x390b3f={};_0x390b3f[_0xc47c('0x29')]=_[_0xc47c('0x2c')](db[_0xc47c('0x26')][_0xc47c('0x3f')]);_0x390b3f[_0xc47c('0x2b')]=_[_0xc47c('0x2c')](_0x3ac3bc['query']);_0x390b3f[_0xc47c('0x2d')]=_[_0xc47c('0x2e')](_0x390b3f['model'],_0x390b3f[_0xc47c('0x2b')]);_0x29cb4a['attributes']=_[_0xc47c('0x2e')](_0x390b3f[_0xc47c('0x29')],qs[_0xc47c('0x30')](_0x3ac3bc[_0xc47c('0x2b')]['fields']));_0x29cb4a[_0xc47c('0x2f')]=_0x29cb4a[_0xc47c('0x2f')][_0xc47c('0x31')]?_0x29cb4a[_0xc47c('0x2f')]:_0x390b3f[_0xc47c('0x29')];if(_0x3ac3bc['query'][_0xc47c('0x3b')]){_0x29cb4a[_0xc47c('0x40')]=[{'all':!![]}];}_0x29cb4a=_['merge']({},_0x29cb4a,_0x3ac3bc[_0xc47c('0x3a')]);return db['ZendeskField'][_0xc47c('0x41')](_0x29cb4a)[_0xc47c('0x20')](handleEntityNotFound(_0x279832,null))[_0xc47c('0x20')](respondWithResult(_0x279832,null))[_0xc47c('0x3d')](handleError(_0x279832,null));};exports[_0xc47c('0x42')]=function(_0x4ed508,_0x1285e5){return db[_0xc47c('0x26')][_0xc47c('0x42')](_0x4ed508[_0xc47c('0x43')],{})[_0xc47c('0x20')](respondWithResult(_0x1285e5,0xc9))[_0xc47c('0x3d')](handleError(_0x1285e5,null));};exports[_0xc47c('0x44')]=function(_0x245bd0,_0x5eefb5){if(_0x245bd0[_0xc47c('0x43')]['id']){delete _0x245bd0[_0xc47c('0x43')]['id'];}return db[_0xc47c('0x26')][_0xc47c('0x41')]({'where':{'id':_0x245bd0['params']['id']}})[_0xc47c('0x20')](handleEntityNotFound(_0x5eefb5,null))[_0xc47c('0x20')](saveUpdates(_0x245bd0[_0xc47c('0x43')],null))[_0xc47c('0x20')](respondWithResult(_0x5eefb5,null))[_0xc47c('0x3d')](handleError(_0x5eefb5,null));};exports['destroy']=function(_0x2b4949,_0x10f909){return db[_0xc47c('0x26')][_0xc47c('0x41')]({'where':{'id':_0x2b4949[_0xc47c('0x3e')]['id']}})['then'](handleEntityNotFound(_0x10f909,null))[_0xc47c('0x20')](removeEntity(_0x10f909,null))['catch'](handleError(_0x10f909,null));};
\ No newline at end of file
+var _0x2557=['mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','stack','name','send','index','map','ZendeskField','rawAttributes','fieldName','type','key','query','filters','intersection','model','fields','attributes','length','nolimit','order','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','params','keys','options','create','body','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x46d87a,_0x5183db){var _0x115296=function(_0x880a1c){while(--_0x880a1c){_0x46d87a['push'](_0x46d87a['shift']());}};_0x115296(++_0x5183db);}(_0x2557,0x11e));var _0x7255=function(_0x52cabe,_0x2cbfb6){_0x52cabe=_0x52cabe-0x0;var _0x41e549=_0x2557[_0x52cabe];return _0x41e549;};'use strict';var emlformat=require(_0x7255('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7255('0x1'));var jsonpatch=require(_0x7255('0x2'));var rp=require(_0x7255('0x3'));var moment=require(_0x7255('0x4'));var BPromise=require(_0x7255('0x5'));var Mustache=require(_0x7255('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x7255('0x7'));var ejs=require(_0x7255('0x8'));var fs=require('fs');var fs_extra=require(_0x7255('0x9'));var _=require(_0x7255('0xa'));var squel=require(_0x7255('0xb'));var crypto=require(_0x7255('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x7255('0xd'));var toCsv=require(_0x7255('0x7'));var querystring=require(_0x7255('0xe'));var Papa=require('papaparse');var Redis=require(_0x7255('0xf'));var authService=require(_0x7255('0x10'));var qs=require(_0x7255('0x11'));var as=require(_0x7255('0x12'));var hardwareService=require(_0x7255('0x13'));var logger=require(_0x7255('0x14'))(_0x7255('0x15'));var utils=require('../../config/utils');var config=require(_0x7255('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x502367,_0x18de71){_0x18de71=_0x18de71||0xcc;return function(_0x3f9415){if(_0x3f9415){return _0x502367[_0x7255('0x17')](_0x18de71);}return _0x502367[_0x7255('0x18')](_0x18de71)[_0x7255('0x19')]();};}function respondWithResult(_0x2e2378,_0x44a4de){_0x44a4de=_0x44a4de||0xc8;return function(_0x5d2777){if(_0x5d2777){return _0x2e2378[_0x7255('0x18')](_0x44a4de)[_0x7255('0x1a')](_0x5d2777);}};}function respondWithFilteredResult(_0x1c565b,_0x3c5573){return function(_0x26e52b){if(_0x26e52b){var _0xc2c1f5=typeof _0x3c5573[_0x7255('0x1b')]===_0x7255('0x1c')&&typeof _0x3c5573[_0x7255('0x1d')]===_0x7255('0x1c');var _0x2e6489=_0x26e52b[_0x7255('0x1e')];var _0x19dac1=_0xc2c1f5?0x0:_0x3c5573[_0x7255('0x1b')];var _0x3db713=_0xc2c1f5?_0x26e52b[_0x7255('0x1e')]:_0x3c5573[_0x7255('0x1b')]+_0x3c5573['limit'];var _0x4f26da;if(_0x3db713>=_0x2e6489){_0x3db713=_0x2e6489;_0x4f26da=0xc8;}else{_0x4f26da=0xce;}_0x1c565b[_0x7255('0x18')](_0x4f26da);return _0x1c565b[_0x7255('0x1f')](_0x7255('0x20'),_0x19dac1+'-'+_0x3db713+'/'+_0x2e6489)[_0x7255('0x1a')](_0x26e52b);}return null;};}function patchUpdates(_0x4bff12){return function(_0x3cef55){try{jsonpatch[_0x7255('0x21')](_0x3cef55,_0x4bff12,!![]);}catch(_0x1be0c4){return BPromise[_0x7255('0x22')](_0x1be0c4);}return _0x3cef55[_0x7255('0x23')]();};}function saveUpdates(_0xc13135,_0x38f9eb){return function(_0x9fdfea){if(_0x9fdfea){return _0x9fdfea['update'](_0xc13135)[_0x7255('0x24')](function(_0x172e5a){return _0x172e5a;});}return null;};}function removeEntity(_0x3f6fea,_0x358e87){return function(_0x153113){if(_0x153113){return _0x153113[_0x7255('0x25')]()[_0x7255('0x24')](function(){_0x3f6fea['status'](0xcc)[_0x7255('0x19')]();});}};}function handleEntityNotFound(_0x455098,_0x1a9619){return function(_0x568068){if(!_0x568068){_0x455098[_0x7255('0x17')](0x194);}return _0x568068;};}function handleError(_0x5378ca,_0x3bfcc7){_0x3bfcc7=_0x3bfcc7||0x1f4;return function(_0x193e69){logger['error'](_0x193e69[_0x7255('0x26')]);if(_0x193e69[_0x7255('0x27')]){delete _0x193e69[_0x7255('0x27')];}_0x5378ca[_0x7255('0x18')](_0x3bfcc7)[_0x7255('0x28')](_0x193e69);};}exports[_0x7255('0x29')]=function(_0x54e53a,_0x4260cb){var _0x439501={},_0x563233={},_0x56dee8={'count':0x0,'rows':[]};var _0x22cc6e=_[_0x7255('0x2a')](db[_0x7255('0x2b')][_0x7255('0x2c')],function(_0x25cc20){return{'name':_0x25cc20[_0x7255('0x2d')],'type':_0x25cc20[_0x7255('0x2e')][_0x7255('0x2f')]};});_0x563233['model']=_[_0x7255('0x2a')](_0x22cc6e,'name');_0x563233[_0x7255('0x30')]=_['keys'](_0x54e53a[_0x7255('0x30')]);_0x563233[_0x7255('0x31')]=_[_0x7255('0x32')](_0x563233['model'],_0x563233['query']);_0x439501['attributes']=_[_0x7255('0x32')](_0x563233[_0x7255('0x33')],qs[_0x7255('0x34')](_0x54e53a[_0x7255('0x30')][_0x7255('0x34')]));_0x439501[_0x7255('0x35')]=_0x439501[_0x7255('0x35')][_0x7255('0x36')]?_0x439501['attributes']:_0x563233[_0x7255('0x33')];if(!_0x54e53a[_0x7255('0x30')]['hasOwnProperty'](_0x7255('0x37'))){_0x439501[_0x7255('0x1d')]=qs[_0x7255('0x1d')](_0x54e53a[_0x7255('0x30')][_0x7255('0x1d')]);_0x439501[_0x7255('0x1b')]=qs['offset'](_0x54e53a[_0x7255('0x30')][_0x7255('0x1b')]);}_0x439501[_0x7255('0x38')]=qs['sort'](_0x54e53a[_0x7255('0x30')]['sort']);_0x439501[_0x7255('0x39')]=qs[_0x7255('0x31')](_[_0x7255('0x3a')](_0x54e53a[_0x7255('0x30')],_0x563233[_0x7255('0x31')]),_0x22cc6e);if(_0x54e53a[_0x7255('0x30')][_0x7255('0x3b')]){_0x439501['where']=_[_0x7255('0x3c')](_0x439501[_0x7255('0x39')],{'$or':_[_0x7255('0x2a')](_0x22cc6e,function(_0x39981b){if(_0x39981b[_0x7255('0x2e')]!==_0x7255('0x3d')){var _0x5a00a7={};_0x5a00a7[_0x39981b[_0x7255('0x27')]]={'$like':'%'+_0x54e53a[_0x7255('0x30')][_0x7255('0x3b')]+'%'};return _0x5a00a7;}})});}_0x439501=_[_0x7255('0x3c')]({},_0x439501,_0x54e53a['options']);var _0x449396={'where':_0x439501['where']};return db['ZendeskField'][_0x7255('0x1e')](_0x449396)['then'](function(_0x3e4d4b){_0x56dee8[_0x7255('0x1e')]=_0x3e4d4b;if(_0x54e53a['query'][_0x7255('0x3e')]){_0x439501[_0x7255('0x3f')]=[{'all':!![]}];}return db['ZendeskField'][_0x7255('0x40')](_0x439501);})[_0x7255('0x24')](function(_0x359a45){_0x56dee8[_0x7255('0x41')]=_0x359a45;return _0x56dee8;})[_0x7255('0x24')](respondWithFilteredResult(_0x4260cb,_0x439501))[_0x7255('0x42')](handleError(_0x4260cb,null));};exports['show']=function(_0x2c6cf5,_0x43d5de){var _0x2f111b={'raw':!![],'where':{'id':_0x2c6cf5[_0x7255('0x43')]['id']}},_0x1d4611={};_0x1d4611[_0x7255('0x33')]=_[_0x7255('0x44')](db[_0x7255('0x2b')][_0x7255('0x2c')]);_0x1d4611[_0x7255('0x30')]=_['keys'](_0x2c6cf5[_0x7255('0x30')]);_0x1d4611['filters']=_[_0x7255('0x32')](_0x1d4611[_0x7255('0x33')],_0x1d4611[_0x7255('0x30')]);_0x2f111b['attributes']=_[_0x7255('0x32')](_0x1d4611[_0x7255('0x33')],qs[_0x7255('0x34')](_0x2c6cf5[_0x7255('0x30')][_0x7255('0x34')]));_0x2f111b[_0x7255('0x35')]=_0x2f111b[_0x7255('0x35')][_0x7255('0x36')]?_0x2f111b[_0x7255('0x35')]:_0x1d4611['model'];if(_0x2c6cf5[_0x7255('0x30')][_0x7255('0x3e')]){_0x2f111b[_0x7255('0x3f')]=[{'all':!![]}];}_0x2f111b=_[_0x7255('0x3c')]({},_0x2f111b,_0x2c6cf5[_0x7255('0x45')]);return db[_0x7255('0x2b')]['find'](_0x2f111b)['then'](handleEntityNotFound(_0x43d5de,null))[_0x7255('0x24')](respondWithResult(_0x43d5de,null))[_0x7255('0x42')](handleError(_0x43d5de,null));};exports['create']=function(_0x562fa9,_0x4f6c51){return db[_0x7255('0x2b')][_0x7255('0x46')](_0x562fa9[_0x7255('0x47')],{})[_0x7255('0x24')](respondWithResult(_0x4f6c51,0xc9))['catch'](handleError(_0x4f6c51,null));};exports['update']=function(_0x4d2e39,_0x415878){if(_0x4d2e39['body']['id']){delete _0x4d2e39[_0x7255('0x47')]['id'];}return db[_0x7255('0x2b')][_0x7255('0x48')]({'where':{'id':_0x4d2e39['params']['id']}})[_0x7255('0x24')](handleEntityNotFound(_0x415878,null))[_0x7255('0x24')](saveUpdates(_0x4d2e39['body'],null))['then'](respondWithResult(_0x415878,null))[_0x7255('0x42')](handleError(_0x415878,null));};exports[_0x7255('0x25')]=function(_0x4e9636,_0x2172f0){return db['ZendeskField'][_0x7255('0x48')]({'where':{'id':_0x4e9636['params']['id']}})[_0x7255('0x24')](handleEntityNotFound(_0x2172f0,null))[_0x7255('0x24')](removeEntity(_0x2172f0,null))[_0x7255('0x42')](handleError(_0x2172f0,null));};
\ No newline at end of file
index e760016..6b0e572 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5826=['api','moment','bluebird','request-promise','path','rimraf','exports','define','int_zendesk_fields','zendesk_unique_index','idField','FieldId','util'];(function(_0x374459,_0x49ea0a){var _0x3da4ab=function(_0x1a2f6c){while(--_0x1a2f6c){_0x374459['push'](_0x374459['shift']());}};_0x3da4ab(++_0x49ea0a);}(_0x5826,0x151));var _0x6582=function(_0x27229d,_0x5e56fd){_0x27229d=_0x27229d-0x0;var _0x367793=_0x5826[_0x27229d];return _0x367793;};'use strict';var _=require('lodash');var util=require(_0x6582('0x0'));var logger=require('../../config/logger')(_0x6582('0x1'));var moment=require(_0x6582('0x2'));var BPromise=require(_0x6582('0x3'));var rp=require(_0x6582('0x4'));var fs=require('fs');var path=require(_0x6582('0x5'));var rimraf=require(_0x6582('0x6'));var config=require('../../config/environment');var attributes=require('./intZendeskField.attributes');module[_0x6582('0x7')]=function(_0x57ecb6,_0x3e5131){return _0x57ecb6[_0x6582('0x8')]('ZendeskField',attributes,{'tableName':_0x6582('0x9'),'paranoid':![],'indexes':[{'name':_0x6582('0xa'),'fields':[_0x6582('0xb'),_0x6582('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x011e=['zendesk_unique_index','idField','FieldId','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskField.attributes','exports','define','int_zendesk_fields'];(function(_0x5e0c96,_0x21ec18){var _0x1f20fa=function(_0x5a711f){while(--_0x5a711f){_0x5e0c96['push'](_0x5e0c96['shift']());}};_0x1f20fa(++_0x21ec18);}(_0x011e,0x123));var _0xe011=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0x011e[_0x521929];return _0x632436;};'use strict';var _=require(_0xe011('0x0'));var util=require('util');var logger=require(_0xe011('0x1'))(_0xe011('0x2'));var moment=require(_0xe011('0x3'));var BPromise=require(_0xe011('0x4'));var rp=require(_0xe011('0x5'));var fs=require('fs');var path=require(_0xe011('0x6'));var rimraf=require(_0xe011('0x7'));var config=require(_0xe011('0x8'));var attributes=require(_0xe011('0x9'));module[_0xe011('0xa')]=function(_0x84079e,_0x178ede){return _0x84079e[_0xe011('0xb')]('ZendeskField',attributes,{'tableName':_0xe011('0xc'),'paranoid':![],'indexes':[{'name':_0xe011('0xd'),'fields':[_0xe011('0xe'),_0xe011('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index abff63c..d36cc70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4357=['message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','ZendeskField,\x20%s,\x20%s'];(function(_0x451402,_0x561cb8){var _0x4ffb7f=function(_0x1c263a){while(--_0x1c263a){_0x451402['push'](_0x451402['shift']());}};_0x4ffb7f(++_0x561cb8);}(_0x4357,0x9a));var _0x7435=function(_0x5eeb0b,_0x293c14){_0x5eeb0b=_0x5eeb0b-0x0;var _0x270295=_0x4357[_0x5eeb0b];return _0x270295;};'use strict';var _=require(_0x7435('0x0'));var util=require(_0x7435('0x1'));var moment=require(_0x7435('0x2'));var BPromise=require(_0x7435('0x3'));var rs=require(_0x7435('0x4'));var fs=require('fs');var Redis=require(_0x7435('0x5'));var db=require(_0x7435('0x6'))['db'];var utils=require(_0x7435('0x7'));var logger=require(_0x7435('0x8'))(_0x7435('0x9'));var config=require(_0x7435('0xa'));var jayson=require(_0x7435('0xb'));var client=jayson['client'][_0x7435('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xfd9c68,_0x5cc6b2,_0x22533c){return new BPromise(function(_0xcad62b,_0x3cfe25){return client[_0x7435('0xd')](_0xfd9c68,_0x22533c)[_0x7435('0xe')](function(_0x530206){logger[_0x7435('0xf')]('ZendeskField,\x20%s,\x20%s',_0x5cc6b2,'request\x20sent');logger[_0x7435('0x10')](_0x7435('0x11'),_0x5cc6b2,'request\x20sent',JSON[_0x7435('0x12')](_0x530206));if(_0x530206['error']){if(_0x530206[_0x7435('0x13')]['code']===0x1f4){logger[_0x7435('0x13')](_0x7435('0x14'),_0x5cc6b2,_0x530206[_0x7435('0x13')][_0x7435('0x15')]);return _0x3cfe25(_0x530206[_0x7435('0x13')][_0x7435('0x15')]);}logger[_0x7435('0x13')](_0x7435('0x14'),_0x5cc6b2,_0x530206[_0x7435('0x13')][_0x7435('0x15')]);return _0xcad62b(_0x530206['error']['message']);}else{logger['info'](_0x7435('0x14'),_0x5cc6b2,_0x7435('0x16'));_0xcad62b(_0x530206[_0x7435('0x17')][_0x7435('0x15')]);}})[_0x7435('0x18')](function(_0x1605ec){logger[_0x7435('0x13')](_0x7435('0x14'),_0x5cc6b2,_0x1605ec);_0x3cfe25(_0x1605ec);});});}
\ No newline at end of file
+var _0x0fd7=['message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','ZendeskField,\x20%s,\x20%s','request\x20sent','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4acffd,_0x43f43f){var _0x29d15b=function(_0x3789a8){while(--_0x3789a8){_0x4acffd['push'](_0x4acffd['shift']());}};_0x29d15b(++_0x43f43f);}(_0x0fd7,0xff));var _0x70fd=function(_0x49a703,_0x2b9dae){_0x49a703=_0x49a703-0x0;var _0x59eb87=_0x0fd7[_0x49a703];return _0x59eb87;};'use strict';var _=require(_0x70fd('0x0'));var util=require(_0x70fd('0x1'));var moment=require(_0x70fd('0x2'));var BPromise=require(_0x70fd('0x3'));var rs=require(_0x70fd('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x70fd('0x5'))['db'];var utils=require(_0x70fd('0x6'));var logger=require('../../config/logger')(_0x70fd('0x7'));var config=require(_0x70fd('0x8'));var jayson=require(_0x70fd('0x9'));var client=jayson[_0x70fd('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3a3eae,_0x1a3906,_0x2edb7d){return new BPromise(function(_0x26cc03,_0x4bf418){return client[_0x70fd('0xb')](_0x3a3eae,_0x2edb7d)[_0x70fd('0xc')](function(_0x31a91d){logger['info'](_0x70fd('0xd'),_0x1a3906,_0x70fd('0xe'));logger['debug'](_0x70fd('0xf'),_0x1a3906,'request\x20sent',JSON[_0x70fd('0x10')](_0x31a91d));if(_0x31a91d[_0x70fd('0x11')]){if(_0x31a91d[_0x70fd('0x11')]['code']===0x1f4){logger[_0x70fd('0x11')](_0x70fd('0xd'),_0x1a3906,_0x31a91d[_0x70fd('0x11')][_0x70fd('0x12')]);return _0x4bf418(_0x31a91d[_0x70fd('0x11')][_0x70fd('0x12')]);}logger[_0x70fd('0x11')](_0x70fd('0xd'),_0x1a3906,_0x31a91d[_0x70fd('0x11')][_0x70fd('0x12')]);return _0x26cc03(_0x31a91d[_0x70fd('0x11')][_0x70fd('0x12')]);}else{logger['info'](_0x70fd('0xd'),_0x1a3906,_0x70fd('0xe'));_0x26cc03(_0x31a91d[_0x70fd('0x13')][_0x70fd('0x12')]);}})[_0x70fd('0x14')](function(_0x33ef21){logger[_0x70fd('0x11')](_0x70fd('0xd'),_0x1a3906,_0x33ef21);_0x4bf418(_0x33ef21);});});}
\ No newline at end of file
index 8b30953..b59816c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5a3=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','index','/:id','isAuthenticated','show','/:id/configurations','/:id/fields','getFields','post','create','put','delete','destroy','exports','multer','util'];(function(_0x13e2f6,_0x46e9e7){var _0x8c027e=function(_0x498ca4){while(--_0x498ca4){_0x13e2f6['push'](_0x13e2f6['shift']());}};_0x8c027e(++_0x46e9e7);}(_0xc5a3,0x94));var _0x3c5a=function(_0x17d8d4,_0x55274d){_0x17d8d4=_0x17d8d4-0x0;var _0x199c6c=_0xc5a3[_0x17d8d4];return _0x199c6c;};'use strict';var multer=require(_0x3c5a('0x0'));var util=require(_0x3c5a('0x1'));var path=require(_0x3c5a('0x2'));var timeout=require(_0x3c5a('0x3'));var express=require(_0x3c5a('0x4'));var router=express[_0x3c5a('0x5')]();var fs_extra=require(_0x3c5a('0x6'));var auth=require(_0x3c5a('0x7'));var interaction=require(_0x3c5a('0x8'));var config=require(_0x3c5a('0x9'));var controller=require(_0x3c5a('0xa'));router[_0x3c5a('0xb')]('/',auth['isAuthenticated'](),controller[_0x3c5a('0xc')]);router['get'](_0x3c5a('0xd'),auth[_0x3c5a('0xe')](),controller[_0x3c5a('0xf')]);router['get'](_0x3c5a('0x10'),auth[_0x3c5a('0xe')](),controller['getConfigurations']);router[_0x3c5a('0xb')](_0x3c5a('0x11'),auth[_0x3c5a('0xe')](),controller[_0x3c5a('0x12')]);router[_0x3c5a('0x13')]('/',auth[_0x3c5a('0xe')](),controller[_0x3c5a('0x14')]);router[_0x3c5a('0x13')](_0x3c5a('0x10'),auth[_0x3c5a('0xe')](),controller['addConfiguration']);router[_0x3c5a('0x15')](_0x3c5a('0xd'),auth[_0x3c5a('0xe')](),controller['update']);router[_0x3c5a('0x16')](_0x3c5a('0xd'),auth[_0x3c5a('0xe')](),controller[_0x3c5a('0x17')]);module[_0x3c5a('0x18')]=router;
\ No newline at end of file
+var _0x46a4=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','update','delete','destroy','exports','multer','path'];(function(_0x2c5d82,_0x5a8801){var _0x45c0a3=function(_0x6fdcb0){while(--_0x6fdcb0){_0x2c5d82['push'](_0x2c5d82['shift']());}};_0x45c0a3(++_0x5a8801);}(_0x46a4,0xa6));var _0x446a=function(_0x3b2138,_0x3a877d){_0x3b2138=_0x3b2138-0x0;var _0x3fd8fa=_0x46a4[_0x3b2138];return _0x3fd8fa;};'use strict';var multer=require(_0x446a('0x0'));var util=require('util');var path=require(_0x446a('0x1'));var timeout=require(_0x446a('0x2'));var express=require(_0x446a('0x3'));var router=express[_0x446a('0x4')]();var fs_extra=require(_0x446a('0x5'));var auth=require(_0x446a('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x446a('0x7'));var controller=require(_0x446a('0x8'));router[_0x446a('0x9')]('/',auth[_0x446a('0xa')](),controller[_0x446a('0xb')]);router[_0x446a('0x9')](_0x446a('0xc'),auth[_0x446a('0xa')](),controller[_0x446a('0xd')]);router['get'](_0x446a('0xe'),auth['isAuthenticated'](),controller[_0x446a('0xf')]);router['get'](_0x446a('0x10'),auth[_0x446a('0xa')](),controller[_0x446a('0x11')]);router[_0x446a('0x12')]('/',auth[_0x446a('0xa')](),controller['create']);router['post']('/:id/configurations',auth[_0x446a('0xa')](),controller[_0x446a('0x13')]);router['put'](_0x446a('0xc'),auth['isAuthenticated'](),controller[_0x446a('0x14')]);router[_0x446a('0x15')](_0x446a('0xc'),auth['isAuthenticated'](),controller[_0x446a('0x16')]);module[_0x446a('0x17')]=router;
\ No newline at end of file
index 462d3ca..c5ac12e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99e9=['exports','STRING'];(function(_0x5b0102,_0xc0178a){var _0x26326d=function(_0x4a267e){while(--_0x4a267e){_0x5b0102['push'](_0x5b0102['shift']());}};_0x26326d(++_0xc0178a);}(_0x99e9,0xb4));var _0x999e=function(_0x169a8a,_0x3526b1){_0x169a8a=_0x169a8a-0x0;var _0x2e8502=_0x99e9[_0x169a8a];return _0x2e8502;};'use strict';var Sequelize=require('sequelize');module[_0x999e('0x0')]={'name':{'type':Sequelize[_0x999e('0x1')]},'description':{'type':Sequelize[_0x999e('0x1')]},'host':{'type':Sequelize[_0x999e('0x1')]},'zone':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0x999e('0x1')]},'clientSecret':{'type':Sequelize[_0x999e('0x1')]},'serverUrl':{'type':Sequelize[_0x999e('0x1')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x999e('0x1')]}};
\ No newline at end of file
+var _0xf3cd=['exports','STRING','sequelize'];(function(_0x6c9e83,_0x541064){var _0x35b064=function(_0x1bf2e7){while(--_0x1bf2e7){_0x6c9e83['push'](_0x6c9e83['shift']());}};_0x35b064(++_0x541064);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x4b0290,_0x188c34){_0x4b0290=_0x4b0290-0x0;var _0x4bd9f4=_0xf3cd[_0x4b0290];return _0x4bd9f4;};'use strict';var Sequelize=require(_0xdf3c('0x0'));module[_0xdf3c('0x1')]={'name':{'type':Sequelize[_0xdf3c('0x2')]},'description':{'type':Sequelize[_0xdf3c('0x2')]},'host':{'type':Sequelize[_0xdf3c('0x2')]},'zone':{'type':Sequelize[_0xdf3c('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0xdf3c('0x2')]},'serverUrl':{'type':Sequelize[_0xdf3c('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0xdf3c('0x2')]},'refreshToken':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 5319dc5..70fea52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x467e=['send','rawAttributes','fieldName','type','map','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','pick','filter','merge','where','options','includeAll','ZohoAccount','rows','catch','show','params','keys','include','find','create','body','getConfigurations','sort','addConfiguration','findOne','AccountId','getSubjects','channel','Descriptions','ZohoConfiguration','Subjects','zone','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','getFields','host','serverUrl','code','zoho.eu','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','https://www.zohoapis.%s/crm/v2/settings/fields','Zoho-oauthtoken\x20','response','message','Owner','Subject','Description','Call_Duration','Call_Start_Time','includes','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','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','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/license/util','../../mysqldb','../../components/integrations/configuration','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','error','name'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x467e,0xce));var _0xe467=function(_0x4a3e45,_0x1e8ef3){_0x4a3e45=_0x4a3e45-0x0;var _0x48db76=_0x467e[_0x4a3e45];return _0x48db76;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe467('0x0'));var zipdir=require(_0xe467('0x1'));var jsonpatch=require(_0xe467('0x2'));var rp=require('request-promise');var moment=require(_0xe467('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xe467('0x4'));var util=require(_0xe467('0x5'));var path=require(_0xe467('0x6'));var sox=require('sox');var csv=require(_0xe467('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe467('0x8'));var _=require(_0xe467('0x9'));var squel=require(_0xe467('0xa'));var crypto=require(_0xe467('0xb'));var jsforce=require(_0xe467('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xe467('0xd'));var Redis=require(_0xe467('0xe'));var authService=require(_0xe467('0xf'));var qs=require(_0xe467('0x10'));var as=require(_0xe467('0x11'));var hardwareService=require(_0xe467('0x12'));var logger=require(_0xe467('0x13'))(_0xe467('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe467('0x15'));var db=require(_0xe467('0x16'))['db'];var integrations=require(_0xe467('0x17'));function respondWithStatusCode(_0x56a70f,_0x5995a5){_0x5995a5=_0x5995a5||0xcc;return function(_0x48aa0c){if(_0x48aa0c){return _0x56a70f['sendStatus'](_0x5995a5);}return _0x56a70f['status'](_0x5995a5)[_0xe467('0x18')]();};}function respondWithResult(_0x107c46,_0x482ce9){_0x482ce9=_0x482ce9||0xc8;return function(_0x2b8a9f){if(_0x2b8a9f){return _0x107c46[_0xe467('0x19')](_0x482ce9)[_0xe467('0x1a')](_0x2b8a9f);}};}function respondWithFilteredResult(_0x2608d4,_0x14be33){return function(_0x3e7b8c){if(_0x3e7b8c){var _0x111427=typeof _0x14be33[_0xe467('0x1b')]===_0xe467('0x1c')&&typeof _0x14be33['limit']===_0xe467('0x1c');var _0x44062b=_0x3e7b8c['count'];var _0x164573=_0x111427?0x0:_0x14be33[_0xe467('0x1b')];var _0x11fd3e=_0x111427?_0x3e7b8c[_0xe467('0x1d')]:_0x14be33[_0xe467('0x1b')]+_0x14be33[_0xe467('0x1e')];var _0x10c911;if(_0x11fd3e>=_0x44062b){_0x11fd3e=_0x44062b;_0x10c911=0xc8;}else{_0x10c911=0xce;}_0x2608d4[_0xe467('0x19')](_0x10c911);return _0x2608d4[_0xe467('0x1f')](_0xe467('0x20'),_0x164573+'-'+_0x11fd3e+'/'+_0x44062b)[_0xe467('0x1a')](_0x3e7b8c);}return null;};}function patchUpdates(_0x2e35d5){return function(_0x523768){try{jsonpatch[_0xe467('0x21')](_0x523768,_0x2e35d5,!![]);}catch(_0x5b7956){return BPromise[_0xe467('0x22')](_0x5b7956);}return _0x523768['save']();};}function saveUpdates(_0x1bda42,_0x306d1f){return function(_0x29a1cc){if(_0x29a1cc){return _0x29a1cc[_0xe467('0x23')](_0x1bda42)[_0xe467('0x24')](function(_0x58f48b){return _0x58f48b;});}return null;};}function removeEntity(_0x3b64f7,_0x1495c0){return function(_0x172b8c){if(_0x172b8c){return _0x172b8c[_0xe467('0x25')]()[_0xe467('0x24')](function(){_0x3b64f7[_0xe467('0x19')](0xcc)[_0xe467('0x18')]();});}};}function handleEntityNotFound(_0x17de01,_0x2791af){return function(_0x2f4f1e){if(!_0x2f4f1e){_0x17de01['sendStatus'](0x194);}return _0x2f4f1e;};}function handleError(_0x7e14ca,_0x51733f){_0x51733f=_0x51733f||0x1f4;return function(_0x567731){logger[_0xe467('0x26')](_0x567731['stack']);if(_0x567731[_0xe467('0x27')]){delete _0x567731['name'];}_0x7e14ca[_0xe467('0x19')](_0x51733f)[_0xe467('0x28')](_0x567731);};}exports['index']=function(_0xd47ce8,_0x5036dc){var _0x58ad62={},_0x379655={},_0x5735d0={'count':0x0,'rows':[]};var _0x1dacf8=_['map'](db['ZohoAccount'][_0xe467('0x29')],function(_0x396b7b){return{'name':_0x396b7b[_0xe467('0x2a')],'type':_0x396b7b[_0xe467('0x2b')]['key']};});_0x379655['model']=_[_0xe467('0x2c')](_0x1dacf8,_0xe467('0x27'));_0x379655['query']=_['keys'](_0xd47ce8[_0xe467('0x2d')]);_0x379655[_0xe467('0x2e')]=_[_0xe467('0x2f')](_0x379655[_0xe467('0x30')],_0x379655[_0xe467('0x2d')]);_0x58ad62['attributes']=_[_0xe467('0x2f')](_0x379655[_0xe467('0x30')],qs['fields'](_0xd47ce8[_0xe467('0x2d')][_0xe467('0x31')]));_0x58ad62['attributes']=_0x58ad62[_0xe467('0x32')][_0xe467('0x33')]?_0x58ad62[_0xe467('0x32')]:_0x379655[_0xe467('0x30')];if(!_0xd47ce8['query'][_0xe467('0x34')](_0xe467('0x35'))){_0x58ad62[_0xe467('0x1e')]=qs[_0xe467('0x1e')](_0xd47ce8['query'][_0xe467('0x1e')]);_0x58ad62['offset']=qs[_0xe467('0x1b')](_0xd47ce8[_0xe467('0x2d')][_0xe467('0x1b')]);}_0x58ad62[_0xe467('0x36')]=qs['sort'](_0xd47ce8[_0xe467('0x2d')]['sort']);_0x58ad62['where']=qs[_0xe467('0x2e')](_[_0xe467('0x37')](_0xd47ce8[_0xe467('0x2d')],_0x379655['filters']),_0x1dacf8);if(_0xd47ce8[_0xe467('0x2d')][_0xe467('0x38')]){_0x58ad62['where']=_[_0xe467('0x39')](_0x58ad62[_0xe467('0x3a')],{'$or':_[_0xe467('0x2c')](_0x1dacf8,function(_0x1d07d6){if(_0x1d07d6[_0xe467('0x2b')]!=='VIRTUAL'){var _0x2b3509={};_0x2b3509[_0x1d07d6[_0xe467('0x27')]]={'$like':'%'+_0xd47ce8[_0xe467('0x2d')][_0xe467('0x38')]+'%'};return _0x2b3509;}})});}_0x58ad62=_[_0xe467('0x39')]({},_0x58ad62,_0xd47ce8[_0xe467('0x3b')]);var _0xe819a8={'where':_0x58ad62['where']};return db['ZohoAccount'][_0xe467('0x1d')](_0xe819a8)[_0xe467('0x24')](function(_0x6529b8){_0x5735d0[_0xe467('0x1d')]=_0x6529b8;if(_0xd47ce8['query'][_0xe467('0x3c')]){_0x58ad62['include']=[{'all':!![]}];}return db[_0xe467('0x3d')]['findAll'](_0x58ad62);})[_0xe467('0x24')](function(_0x37884c){_0x5735d0[_0xe467('0x3e')]=_0x37884c;return _0x5735d0;})[_0xe467('0x24')](respondWithFilteredResult(_0x5036dc,_0x58ad62))[_0xe467('0x3f')](handleError(_0x5036dc,null));};exports[_0xe467('0x40')]=function(_0x5820bc,_0x57bb80){var _0x28d900={'raw':![],'where':{'id':_0x5820bc[_0xe467('0x41')]['id']}},_0x387eb3={};_0x387eb3['model']=_[_0xe467('0x42')](db[_0xe467('0x3d')][_0xe467('0x29')]);_0x387eb3[_0xe467('0x2d')]=_[_0xe467('0x42')](_0x5820bc[_0xe467('0x2d')]);_0x387eb3[_0xe467('0x2e')]=_[_0xe467('0x2f')](_0x387eb3[_0xe467('0x30')],_0x387eb3[_0xe467('0x2d')]);_0x28d900[_0xe467('0x32')]=_[_0xe467('0x2f')](_0x387eb3[_0xe467('0x30')],qs[_0xe467('0x31')](_0x5820bc[_0xe467('0x2d')]['fields']));_0x28d900['attributes']=_0x28d900[_0xe467('0x32')]['length']?_0x28d900[_0xe467('0x32')]:_0x387eb3[_0xe467('0x30')];if(_0x5820bc[_0xe467('0x2d')][_0xe467('0x3c')]){_0x28d900[_0xe467('0x43')]=[{'all':!![]}];}_0x28d900=_[_0xe467('0x39')]({},_0x28d900,_0x5820bc[_0xe467('0x3b')]);return db['ZohoAccount'][_0xe467('0x44')](_0x28d900)[_0xe467('0x24')](handleEntityNotFound(_0x57bb80,null))[_0xe467('0x24')](respondWithResult(_0x57bb80,null))[_0xe467('0x3f')](handleError(_0x57bb80,null));};exports[_0xe467('0x45')]=function(_0x3b3a99,_0x27663f){return db[_0xe467('0x3d')][_0xe467('0x45')](_0x3b3a99[_0xe467('0x46')],{})['then'](respondWithResult(_0x27663f,0xc9))[_0xe467('0x3f')](handleError(_0x27663f,null));};exports['update']=function(_0x4878de,_0xdcc263){if(_0x4878de[_0xe467('0x46')]['id']){delete _0x4878de[_0xe467('0x46')]['id'];}return db[_0xe467('0x3d')]['find']({'where':{'id':_0x4878de['params']['id']}})[_0xe467('0x24')](handleEntityNotFound(_0xdcc263,null))[_0xe467('0x24')](saveUpdates(_0x4878de[_0xe467('0x46')],null))[_0xe467('0x24')](respondWithResult(_0xdcc263,null))[_0xe467('0x3f')](handleError(_0xdcc263,null));};exports[_0xe467('0x25')]=function(_0x2f9675,_0x50b2fc){return db[_0xe467('0x3d')][_0xe467('0x44')]({'where':{'id':_0x2f9675[_0xe467('0x41')]['id']}})[_0xe467('0x24')](handleEntityNotFound(_0x50b2fc,null))['then'](removeEntity(_0x50b2fc,null))[_0xe467('0x3f')](handleError(_0x50b2fc,null));};exports[_0xe467('0x47')]=function(_0x353c00,_0xc4303e,_0x28d40e){var _0x5282d4={};var _0x201880={};var _0x463c0e;var _0xf79de;return db[_0xe467('0x3d')]['findOne']({'where':{'id':_0x353c00['params']['id']}})['then'](handleEntityNotFound(_0xc4303e,null))[_0xe467('0x24')](function(_0x46dceb){if(_0x46dceb){_0x463c0e=_0x46dceb;_0x201880[_0xe467('0x30')]=_[_0xe467('0x42')](db['ZohoConfiguration'][_0xe467('0x29')]);_0x201880['query']=_[_0xe467('0x42')](_0x353c00[_0xe467('0x2d')]);_0x201880[_0xe467('0x2e')]=_['intersection'](_0x201880[_0xe467('0x30')],_0x201880[_0xe467('0x2d')]);_0x5282d4[_0xe467('0x32')]=_[_0xe467('0x2f')](_0x201880[_0xe467('0x30')],qs[_0xe467('0x31')](_0x353c00[_0xe467('0x2d')][_0xe467('0x31')]));_0x5282d4['attributes']=_0x5282d4[_0xe467('0x32')][_0xe467('0x33')]?_0x5282d4['attributes']:_0x201880[_0xe467('0x30')];_0x5282d4[_0xe467('0x36')]=qs[_0xe467('0x48')](_0x353c00[_0xe467('0x2d')]['sort']);_0x5282d4[_0xe467('0x3a')]=qs[_0xe467('0x2e')](_[_0xe467('0x37')](_0x353c00[_0xe467('0x2d')],_0x201880[_0xe467('0x2e')]));if(_0x353c00['query'][_0xe467('0x38')]){_0x5282d4[_0xe467('0x3a')]=_[_0xe467('0x39')](_0x5282d4[_0xe467('0x3a')],{'$or':_[_0xe467('0x2c')](_0x5282d4[_0xe467('0x32')],function(_0x237431){var _0x10d83f={};_0x10d83f[_0x237431]={'$like':'%'+_0x353c00['query']['filter']+'%'};return _0x10d83f;})});}_0x5282d4=_['merge']({},_0x5282d4,_0x353c00['options']);return _0x463c0e['getConfigurations'](_0x5282d4);}})[_0xe467('0x24')](function(_0x1c69b8){if(_0x1c69b8){_0xf79de=_0x1c69b8[_0xe467('0x33')];if(!_0x353c00['query'][_0xe467('0x34')](_0xe467('0x35'))){_0x5282d4[_0xe467('0x1e')]=qs[_0xe467('0x1e')](_0x353c00['query']['limit']);_0x5282d4['offset']=qs[_0xe467('0x1b')](_0x353c00['query'][_0xe467('0x1b')]);}return _0x463c0e['getConfigurations'](_0x5282d4);}})['then'](function(_0x1f7724){if(_0x1f7724){return _0x1f7724?{'count':_0xf79de,'rows':_0x1f7724}:null;}})[_0xe467('0x24')](respondWithResult(_0xc4303e,null))[_0xe467('0x3f')](handleError(_0xc4303e,null));};exports[_0xe467('0x49')]=function(_0x56a785,_0x3bd061,_0x429d34){if(_0x56a785[_0xe467('0x46')]['id']){delete _0x56a785['body']['id'];}return db[_0xe467('0x3d')][_0xe467('0x4a')]({'where':{'id':_0x56a785[_0xe467('0x41')]['id']}})[_0xe467('0x24')](handleEntityNotFound(_0x3bd061,null))[_0xe467('0x24')](function(_0x2d0e4f){if(_0x2d0e4f){_0x56a785[_0xe467('0x46')][_0xe467('0x4b')]=_0x2d0e4f['id'];_0x56a785[_0xe467('0x46')]['Subjects']=integrations[_0xe467('0x4c')](_0x56a785[_0xe467('0x46')][_0xe467('0x4d')],_0x56a785[_0xe467('0x46')][_0xe467('0x2b')]);_0x56a785['body'][_0xe467('0x4e')]=integrations['getDescriptions'](_0x56a785[_0xe467('0x46')][_0xe467('0x4d')],_0x56a785['body'][_0xe467('0x2b')]);return db[_0xe467('0x4f')][_0xe467('0x45')](_0x56a785[_0xe467('0x46')],{'include':[{'model':db['ZohoField'],'as':_0xe467('0x50')},{'model':db['ZohoField'],'as':_0xe467('0x4e')}]});}return null;})[_0xe467('0x24')](respondWithResult(_0x3bd061,null))[_0xe467('0x3f')](handleError(_0x3bd061,null));};function getAccessToken(_0x3bfe8f){return new Promise(function(_0x123d7b,_0x1eb38b){var _0x3a9631;switch(_0x3bfe8f[_0xe467('0x51')]){case'US':_0x3a9631=_0xe467('0x52');break;case'AU':_0x3a9631='https://accounts.zoho.com.au';break;case'EU':_0x3a9631=_0xe467('0x53');break;case'IN':_0x3a9631=_0xe467('0x54');break;case'CN':_0x3a9631='https://accounts.zoho.com.cn';break;default:_0x3a9631=_0xe467('0x53');break;}var _0x3f39ee={'method':'POST','uri':_0x3a9631+_0xe467('0x55'),'qs':{'refresh_token':_0x3bfe8f[_0xe467('0x56')],'client_id':_0x3bfe8f[_0xe467('0x57')],'client_secret':_0x3bfe8f[_0xe467('0x58')],'grant_type':_0xe467('0x59')},'json':!![]};return rp(_0x3f39ee)['then'](function(_0x16a0a0){if(_0x16a0a0[_0xe467('0x5a')]){_0x123d7b(_0x16a0a0[_0xe467('0x5a')]);}else{_0x1eb38b('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0xe467('0x3f')](function(_0x264510){_0x1eb38b(_0x264510);});});}exports[_0xe467('0x5b')]=function(_0x51f1a3,_0x52ab4c,_0x4f8442){var _0x34df0d,_0x184fbc,_0x3456ad,_0x36fe40,_0x1b62aa;return db[_0xe467('0x3d')][_0xe467('0x4a')]({'where':{'id':_0x51f1a3['params']['id']},'attributes':['id',_0xe467('0x5c'),'zone',_0xe467('0x57'),'clientSecret',_0xe467('0x5d'),_0xe467('0x5e'),_0xe467('0x56')]})['then'](handleEntityNotFound(_0x52ab4c,null))[_0xe467('0x24')](function(_0x42c7c0){_0x1b62aa=_0x42c7c0;_0x34df0d=_0x1b62aa['host'];_0x184fbc=_0x34df0d===_0xe467('0x5f')?'eu':'com';_0x3456ad=_0x1b62aa[_0xe467('0x5d')];var _0x307d4e=_0x3456ad[_0xe467('0x60')](-0x1);if(_0x307d4e==='/'||_0x307d4e==='\x5c'||_0x307d4e===':'){_0x3456ad=_0x3456ad[_0xe467('0x61')](0x0,_0x3456ad[_0xe467('0x62')](_0x307d4e));}if(!_0x1b62aa[_0xe467('0x56')]){throw new Error(_0xe467('0x63'));}return getAccessToken(_0x1b62aa);})[_0xe467('0x24')](function(_0x3c05d5){if(_0x3c05d5){return rp({'method':'GET','uri':util['format'](_0xe467('0x64'),_0x184fbc),'qs':{'module':'Calls'},'headers':{'Authorization':_0xe467('0x65')+_0x3c05d5},'json':!![]});}})['then'](function(_0x357cf5){if(_0x357cf5){if(_0x357cf5[_0xe467('0x66')]&&_0x357cf5[_0xe467('0x66')][_0xe467('0x26')]){throw new Error(_0x357cf5[_0xe467('0x66')][_0xe467('0x26')][_0xe467('0x67')]);}var _0x1c2e5b=[];var _0x475fc0=[];var _0x344de0=[_0xe467('0x68'),_0xe467('0x69'),_0xe467('0x6a'),'WhoId',_0xe467('0x6b'),'Call_Result',_0xe467('0x6c'),'Call_Type'];_0x475fc0=_['remove'](_0x357cf5[_0xe467('0x31')],function(_0x1da747){return _0x344de0[_0xe467('0x6d')](_0x1da747[_0xe467('0x6e')]);});for(var _0x5987c0=0x0;_0x5987c0<_0x475fc0[_0xe467('0x33')];_0x5987c0++){if(_0x475fc0[_0x5987c0][_0xe467('0x6f')]===![]){_0x1c2e5b[_0xe467('0x70')]({'id':_0x475fc0[_0x5987c0]['id'],'name':_0x475fc0[_0x5987c0][_0xe467('0x71')],'custom':_0x475fc0[_0x5987c0][_0xe467('0x72')],'options':_0x475fc0[_0x5987c0][_0xe467('0x73')]===_0xe467('0x74')&&_0x475fc0[_0x5987c0][_0xe467('0x75')][_0xe467('0x33')]>-0x1?_['map'](_0x475fc0[_0x5987c0][_0xe467('0x75')],function(_0x9b9a20){return{'name':_0x9b9a20,'value':_0x9b9a20};}):[]});}}return{'count':_0x1c2e5b[_0xe467('0x33')],'rows':_0x1c2e5b};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x52ab4c,null))[_0xe467('0x3f')](function(_0x2951b3){var _0x395bcc=_0x51f1a3[_0xe467('0x2d')][_0xe467('0x76')]?0x1f4:_0x2951b3[_0xe467('0x77')]||0x1f4;logger[_0xe467('0x26')](_0xe467('0x78'),'getFields',_0x395bcc,JSON[_0xe467('0x79')](_0x2951b3));delete _0x2951b3[_0xe467('0x27')];if(_0x395bcc===0x191){_0x395bcc=0x190;}_0x52ab4c[_0xe467('0x19')](_0x395bcc)[_0xe467('0x28')](_0x51f1a3['query'][_0xe467('0x76')]?{'message':_0xe467('0x7a'),'statusCode':_0x2951b3[_0xe467('0x77')]}:_0x2951b3);});};
\ No newline at end of file
+var _0xb8ed=['Wrong\x20credentials','statusCode','eml-format','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','error','name','send','map','ZohoAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','then','includeAll','include','rows','catch','show','params','create','body','find','getConfigurations','findOne','ZohoConfiguration','options','Subjects','channel','Descriptions','ZohoField','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','clientId','clientSecret','refresh_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','zone','serverUrl','code','refreshToken','zoho.eu','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','push','display_label','custom_field','data_type','picklist','pick_list_values','test','getFields,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x870fb3,_0x416610){var _0x1d2813=function(_0x2b8074){while(--_0x2b8074){_0x870fb3['push'](_0x870fb3['shift']());}};_0x1d2813(++_0x416610);}(_0xb8ed,0x1f2));var _0xdb8e=function(_0x36fbc9,_0x1a05a9){_0x36fbc9=_0x36fbc9-0x0;var _0x29eb29=_0xb8ed[_0x36fbc9];return _0x29eb29;};'use strict';var emlformat=require(_0xdb8e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xdb8e('0x1'));var moment=require(_0xdb8e('0x2'));var BPromise=require(_0xdb8e('0x3'));var Mustache=require(_0xdb8e('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xdb8e('0x5'));var ejs=require(_0xdb8e('0x6'));var fs=require('fs');var fs_extra=require(_0xdb8e('0x7'));var _=require('lodash');var squel=require(_0xdb8e('0x8'));var crypto=require(_0xdb8e('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xdb8e('0x5'));var querystring=require(_0xdb8e('0xa'));var Papa=require(_0xdb8e('0xb'));var Redis=require('ioredis');var authService=require(_0xdb8e('0xc'));var qs=require(_0xdb8e('0xd'));var as=require(_0xdb8e('0xe'));var hardwareService=require(_0xdb8e('0xf'));var logger=require('../../config/logger')(_0xdb8e('0x10'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xdb8e('0x11'));var db=require(_0xdb8e('0x12'))['db'];var integrations=require(_0xdb8e('0x13'));function respondWithStatusCode(_0x1de29d,_0x16e253){_0x16e253=_0x16e253||0xcc;return function(_0x54a776){if(_0x54a776){return _0x1de29d[_0xdb8e('0x14')](_0x16e253);}return _0x1de29d[_0xdb8e('0x15')](_0x16e253)[_0xdb8e('0x16')]();};}function respondWithResult(_0x345aca,_0x346595){_0x346595=_0x346595||0xc8;return function(_0x17193d){if(_0x17193d){return _0x345aca[_0xdb8e('0x15')](_0x346595)[_0xdb8e('0x17')](_0x17193d);}};}function respondWithFilteredResult(_0x132c25,_0x345e62){return function(_0x38252b){if(_0x38252b){var _0x9aba2f=typeof _0x345e62[_0xdb8e('0x18')]==='undefined'&&typeof _0x345e62['limit']===_0xdb8e('0x19');var _0x530f17=_0x38252b['count'];var _0x2b0968=_0x9aba2f?0x0:_0x345e62[_0xdb8e('0x18')];var _0x88ffb0=_0x9aba2f?_0x38252b[_0xdb8e('0x1a')]:_0x345e62[_0xdb8e('0x18')]+_0x345e62[_0xdb8e('0x1b')];var _0x1adc10;if(_0x88ffb0>=_0x530f17){_0x88ffb0=_0x530f17;_0x1adc10=0xc8;}else{_0x1adc10=0xce;}_0x132c25['status'](_0x1adc10);return _0x132c25[_0xdb8e('0x1c')](_0xdb8e('0x1d'),_0x2b0968+'-'+_0x88ffb0+'/'+_0x530f17)[_0xdb8e('0x17')](_0x38252b);}return null;};}function patchUpdates(_0xcba0d2){return function(_0x21b6b4){try{jsonpatch[_0xdb8e('0x1e')](_0x21b6b4,_0xcba0d2,!![]);}catch(_0x113dcf){return BPromise[_0xdb8e('0x1f')](_0x113dcf);}return _0x21b6b4[_0xdb8e('0x20')]();};}function saveUpdates(_0x19ae0f,_0x4180e9){return function(_0x3f818a){if(_0x3f818a){return _0x3f818a[_0xdb8e('0x21')](_0x19ae0f)['then'](function(_0x33ed6f){return _0x33ed6f;});}return null;};}function removeEntity(_0x49a021,_0x5e8a2a){return function(_0x50ea6f){if(_0x50ea6f){return _0x50ea6f[_0xdb8e('0x22')]()['then'](function(){_0x49a021[_0xdb8e('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x50a038,_0x1a7bbd){return function(_0x4ef953){if(!_0x4ef953){_0x50a038['sendStatus'](0x194);}return _0x4ef953;};}function handleError(_0x32ec6a,_0x7c26dc){_0x7c26dc=_0x7c26dc||0x1f4;return function(_0x4eb465){logger[_0xdb8e('0x23')](_0x4eb465['stack']);if(_0x4eb465[_0xdb8e('0x24')]){delete _0x4eb465['name'];}_0x32ec6a['status'](_0x7c26dc)[_0xdb8e('0x25')](_0x4eb465);};}exports['index']=function(_0x4062f6,_0x31d78a){var _0x52846d={},_0x260848={},_0x1c41eb={'count':0x0,'rows':[]};var _0x51dbdd=_[_0xdb8e('0x26')](db[_0xdb8e('0x27')][_0xdb8e('0x28')],function(_0x1d82a6){return{'name':_0x1d82a6[_0xdb8e('0x29')],'type':_0x1d82a6[_0xdb8e('0x2a')]['key']};});_0x260848[_0xdb8e('0x2b')]=_[_0xdb8e('0x26')](_0x51dbdd,_0xdb8e('0x24'));_0x260848[_0xdb8e('0x2c')]=_[_0xdb8e('0x2d')](_0x4062f6[_0xdb8e('0x2c')]);_0x260848[_0xdb8e('0x2e')]=_[_0xdb8e('0x2f')](_0x260848[_0xdb8e('0x2b')],_0x260848[_0xdb8e('0x2c')]);_0x52846d[_0xdb8e('0x30')]=_[_0xdb8e('0x2f')](_0x260848[_0xdb8e('0x2b')],qs[_0xdb8e('0x31')](_0x4062f6['query'][_0xdb8e('0x31')]));_0x52846d[_0xdb8e('0x30')]=_0x52846d['attributes'][_0xdb8e('0x32')]?_0x52846d[_0xdb8e('0x30')]:_0x260848[_0xdb8e('0x2b')];if(!_0x4062f6[_0xdb8e('0x2c')][_0xdb8e('0x33')](_0xdb8e('0x34'))){_0x52846d[_0xdb8e('0x1b')]=qs[_0xdb8e('0x1b')](_0x4062f6[_0xdb8e('0x2c')][_0xdb8e('0x1b')]);_0x52846d[_0xdb8e('0x18')]=qs['offset'](_0x4062f6[_0xdb8e('0x2c')][_0xdb8e('0x18')]);}_0x52846d[_0xdb8e('0x35')]=qs[_0xdb8e('0x36')](_0x4062f6[_0xdb8e('0x2c')][_0xdb8e('0x36')]);_0x52846d[_0xdb8e('0x37')]=qs[_0xdb8e('0x2e')](_[_0xdb8e('0x38')](_0x4062f6[_0xdb8e('0x2c')],_0x260848[_0xdb8e('0x2e')]),_0x51dbdd);if(_0x4062f6[_0xdb8e('0x2c')][_0xdb8e('0x39')]){_0x52846d['where']=_[_0xdb8e('0x3a')](_0x52846d[_0xdb8e('0x37')],{'$or':_[_0xdb8e('0x26')](_0x51dbdd,function(_0x4efe15){if(_0x4efe15['type']!==_0xdb8e('0x3b')){var _0x2051fc={};_0x2051fc[_0x4efe15[_0xdb8e('0x24')]]={'$like':'%'+_0x4062f6[_0xdb8e('0x2c')][_0xdb8e('0x39')]+'%'};return _0x2051fc;}})});}_0x52846d=_['merge']({},_0x52846d,_0x4062f6['options']);var _0x58ddb8={'where':_0x52846d['where']};return db[_0xdb8e('0x27')][_0xdb8e('0x1a')](_0x58ddb8)[_0xdb8e('0x3c')](function(_0x5d2171){_0x1c41eb[_0xdb8e('0x1a')]=_0x5d2171;if(_0x4062f6[_0xdb8e('0x2c')][_0xdb8e('0x3d')]){_0x52846d[_0xdb8e('0x3e')]=[{'all':!![]}];}return db[_0xdb8e('0x27')]['findAll'](_0x52846d);})['then'](function(_0x4ebce){_0x1c41eb[_0xdb8e('0x3f')]=_0x4ebce;return _0x1c41eb;})[_0xdb8e('0x3c')](respondWithFilteredResult(_0x31d78a,_0x52846d))[_0xdb8e('0x40')](handleError(_0x31d78a,null));};exports[_0xdb8e('0x41')]=function(_0x4945ad,_0x270ab4){var _0x1f75bd={'raw':![],'where':{'id':_0x4945ad[_0xdb8e('0x42')]['id']}},_0x5c4643={};_0x5c4643[_0xdb8e('0x2b')]=_['keys'](db[_0xdb8e('0x27')][_0xdb8e('0x28')]);_0x5c4643[_0xdb8e('0x2c')]=_[_0xdb8e('0x2d')](_0x4945ad[_0xdb8e('0x2c')]);_0x5c4643[_0xdb8e('0x2e')]=_[_0xdb8e('0x2f')](_0x5c4643[_0xdb8e('0x2b')],_0x5c4643['query']);_0x1f75bd[_0xdb8e('0x30')]=_[_0xdb8e('0x2f')](_0x5c4643['model'],qs[_0xdb8e('0x31')](_0x4945ad[_0xdb8e('0x2c')][_0xdb8e('0x31')]));_0x1f75bd[_0xdb8e('0x30')]=_0x1f75bd[_0xdb8e('0x30')][_0xdb8e('0x32')]?_0x1f75bd['attributes']:_0x5c4643[_0xdb8e('0x2b')];if(_0x4945ad[_0xdb8e('0x2c')]['includeAll']){_0x1f75bd['include']=[{'all':!![]}];}_0x1f75bd=_[_0xdb8e('0x3a')]({},_0x1f75bd,_0x4945ad['options']);return db[_0xdb8e('0x27')]['find'](_0x1f75bd)[_0xdb8e('0x3c')](handleEntityNotFound(_0x270ab4,null))[_0xdb8e('0x3c')](respondWithResult(_0x270ab4,null))['catch'](handleError(_0x270ab4,null));};exports[_0xdb8e('0x43')]=function(_0x348d83,_0x4f27ba){return db[_0xdb8e('0x27')][_0xdb8e('0x43')](_0x348d83['body'],{})['then'](respondWithResult(_0x4f27ba,0xc9))[_0xdb8e('0x40')](handleError(_0x4f27ba,null));};exports['update']=function(_0x647a73,_0x5a6a81){if(_0x647a73[_0xdb8e('0x44')]['id']){delete _0x647a73[_0xdb8e('0x44')]['id'];}return db[_0xdb8e('0x27')][_0xdb8e('0x45')]({'where':{'id':_0x647a73[_0xdb8e('0x42')]['id']}})['then'](handleEntityNotFound(_0x5a6a81,null))[_0xdb8e('0x3c')](saveUpdates(_0x647a73[_0xdb8e('0x44')],null))[_0xdb8e('0x3c')](respondWithResult(_0x5a6a81,null))[_0xdb8e('0x40')](handleError(_0x5a6a81,null));};exports[_0xdb8e('0x22')]=function(_0x13c600,_0x1bf11e){return db['ZohoAccount'][_0xdb8e('0x45')]({'where':{'id':_0x13c600[_0xdb8e('0x42')]['id']}})[_0xdb8e('0x3c')](handleEntityNotFound(_0x1bf11e,null))[_0xdb8e('0x3c')](removeEntity(_0x1bf11e,null))[_0xdb8e('0x40')](handleError(_0x1bf11e,null));};exports[_0xdb8e('0x46')]=function(_0x37f31c,_0x365adb,_0x1b482d){var _0x3c98f4={};var _0x3efb94={};var _0x1a7336;var _0x492fc2;return db[_0xdb8e('0x27')][_0xdb8e('0x47')]({'where':{'id':_0x37f31c[_0xdb8e('0x42')]['id']}})[_0xdb8e('0x3c')](handleEntityNotFound(_0x365adb,null))[_0xdb8e('0x3c')](function(_0x140656){if(_0x140656){_0x1a7336=_0x140656;_0x3efb94[_0xdb8e('0x2b')]=_['keys'](db[_0xdb8e('0x48')][_0xdb8e('0x28')]);_0x3efb94[_0xdb8e('0x2c')]=_[_0xdb8e('0x2d')](_0x37f31c['query']);_0x3efb94[_0xdb8e('0x2e')]=_[_0xdb8e('0x2f')](_0x3efb94[_0xdb8e('0x2b')],_0x3efb94[_0xdb8e('0x2c')]);_0x3c98f4[_0xdb8e('0x30')]=_[_0xdb8e('0x2f')](_0x3efb94[_0xdb8e('0x2b')],qs['fields'](_0x37f31c[_0xdb8e('0x2c')][_0xdb8e('0x31')]));_0x3c98f4['attributes']=_0x3c98f4[_0xdb8e('0x30')][_0xdb8e('0x32')]?_0x3c98f4[_0xdb8e('0x30')]:_0x3efb94[_0xdb8e('0x2b')];_0x3c98f4['order']=qs['sort'](_0x37f31c[_0xdb8e('0x2c')]['sort']);_0x3c98f4[_0xdb8e('0x37')]=qs[_0xdb8e('0x2e')](_['pick'](_0x37f31c[_0xdb8e('0x2c')],_0x3efb94[_0xdb8e('0x2e')]));if(_0x37f31c['query'][_0xdb8e('0x39')]){_0x3c98f4[_0xdb8e('0x37')]=_[_0xdb8e('0x3a')](_0x3c98f4['where'],{'$or':_[_0xdb8e('0x26')](_0x3c98f4['attributes'],function(_0x55478e){var _0x22cf7a={};_0x22cf7a[_0x55478e]={'$like':'%'+_0x37f31c[_0xdb8e('0x2c')]['filter']+'%'};return _0x22cf7a;})});}_0x3c98f4=_[_0xdb8e('0x3a')]({},_0x3c98f4,_0x37f31c[_0xdb8e('0x49')]);return _0x1a7336[_0xdb8e('0x46')](_0x3c98f4);}})[_0xdb8e('0x3c')](function(_0x4088ba){if(_0x4088ba){_0x492fc2=_0x4088ba[_0xdb8e('0x32')];if(!_0x37f31c['query'][_0xdb8e('0x33')](_0xdb8e('0x34'))){_0x3c98f4[_0xdb8e('0x1b')]=qs[_0xdb8e('0x1b')](_0x37f31c[_0xdb8e('0x2c')][_0xdb8e('0x1b')]);_0x3c98f4[_0xdb8e('0x18')]=qs['offset'](_0x37f31c[_0xdb8e('0x2c')]['offset']);}return _0x1a7336[_0xdb8e('0x46')](_0x3c98f4);}})[_0xdb8e('0x3c')](function(_0xe430dc){if(_0xe430dc){return _0xe430dc?{'count':_0x492fc2,'rows':_0xe430dc}:null;}})[_0xdb8e('0x3c')](respondWithResult(_0x365adb,null))['catch'](handleError(_0x365adb,null));};exports['addConfiguration']=function(_0x56abac,_0x3648fc,_0x590fcc){if(_0x56abac[_0xdb8e('0x44')]['id']){delete _0x56abac[_0xdb8e('0x44')]['id'];}return db[_0xdb8e('0x27')]['findOne']({'where':{'id':_0x56abac['params']['id']}})['then'](handleEntityNotFound(_0x3648fc,null))[_0xdb8e('0x3c')](function(_0xc7f914){if(_0xc7f914){_0x56abac[_0xdb8e('0x44')]['AccountId']=_0xc7f914['id'];_0x56abac[_0xdb8e('0x44')][_0xdb8e('0x4a')]=integrations['getSubjects'](_0x56abac['body'][_0xdb8e('0x4b')],_0x56abac[_0xdb8e('0x44')][_0xdb8e('0x2a')]);_0x56abac['body'][_0xdb8e('0x4c')]=integrations['getDescriptions'](_0x56abac[_0xdb8e('0x44')][_0xdb8e('0x4b')],_0x56abac[_0xdb8e('0x44')][_0xdb8e('0x2a')]);return db[_0xdb8e('0x48')]['create'](_0x56abac['body'],{'include':[{'model':db[_0xdb8e('0x4d')],'as':_0xdb8e('0x4a')},{'model':db[_0xdb8e('0x4d')],'as':_0xdb8e('0x4c')}]});}return null;})[_0xdb8e('0x3c')](respondWithResult(_0x3648fc,null))[_0xdb8e('0x40')](handleError(_0x3648fc,null));};function getAccessToken(_0x109404){return new Promise(function(_0x422cec,_0x394772){var _0x2ad037;switch(_0x109404['zone']){case'US':_0x2ad037=_0xdb8e('0x4e');break;case'AU':_0x2ad037='https://accounts.zoho.com.au';break;case'EU':_0x2ad037='https://accounts.zoho.eu';break;case'IN':_0x2ad037=_0xdb8e('0x4f');break;case'CN':_0x2ad037=_0xdb8e('0x50');break;default:_0x2ad037=_0xdb8e('0x51');break;}var _0x3ddee2={'method':'POST','uri':_0x2ad037+'/oauth/v2/token','qs':{'refresh_token':_0x109404['refreshToken'],'client_id':_0x109404[_0xdb8e('0x52')],'client_secret':_0x109404[_0xdb8e('0x53')],'grant_type':_0xdb8e('0x54')},'json':!![]};return rp(_0x3ddee2)[_0xdb8e('0x3c')](function(_0x5cc7b6){if(_0x5cc7b6['access_token']){_0x422cec(_0x5cc7b6['access_token']);}else{_0x394772(_0xdb8e('0x55'));}})[_0xdb8e('0x40')](function(_0x2f50f3){_0x394772(_0x2f50f3);});});}exports[_0xdb8e('0x56')]=function(_0x343146,_0x1931ce,_0x3c6605){var _0x33cb9f,_0x5ea8e9,_0x628601,_0x32a3ec,_0x10e9ce;return db[_0xdb8e('0x27')][_0xdb8e('0x47')]({'where':{'id':_0x343146[_0xdb8e('0x42')]['id']},'attributes':['id',_0xdb8e('0x57'),_0xdb8e('0x58'),_0xdb8e('0x52'),_0xdb8e('0x53'),_0xdb8e('0x59'),_0xdb8e('0x5a'),_0xdb8e('0x5b')]})[_0xdb8e('0x3c')](handleEntityNotFound(_0x1931ce,null))[_0xdb8e('0x3c')](function(_0x55b813){_0x10e9ce=_0x55b813;_0x33cb9f=_0x10e9ce['host'];_0x5ea8e9=_0x33cb9f===_0xdb8e('0x5c')?'eu':'com';_0x628601=_0x10e9ce['serverUrl'];var _0x526b95=_0x628601['slice'](-0x1);if(_0x526b95==='/'||_0x526b95==='\x5c'||_0x526b95===':'){_0x628601=_0x628601[_0xdb8e('0x5d')](0x0,_0x628601[_0xdb8e('0x5e')](_0x526b95));}if(!_0x10e9ce['refreshToken']){throw new Error(_0xdb8e('0x5f'));}return getAccessToken(_0x10e9ce);})[_0xdb8e('0x3c')](function(_0x2e3a77){if(_0x2e3a77){return rp({'method':_0xdb8e('0x60'),'uri':util[_0xdb8e('0x61')](_0xdb8e('0x62'),_0x5ea8e9),'qs':{'module':_0xdb8e('0x63')},'headers':{'Authorization':_0xdb8e('0x64')+_0x2e3a77},'json':!![]});}})[_0xdb8e('0x3c')](function(_0x499db9){if(_0x499db9){if(_0x499db9['response']&&_0x499db9[_0xdb8e('0x65')][_0xdb8e('0x23')]){throw new Error(_0x499db9['response'][_0xdb8e('0x23')]['message']);}var _0x4016e5=[];var _0x5f55fc=[];var _0x196194=['Owner',_0xdb8e('0x66'),_0xdb8e('0x67'),_0xdb8e('0x68'),_0xdb8e('0x69'),_0xdb8e('0x6a'),_0xdb8e('0x6b'),_0xdb8e('0x6c')];_0x5f55fc=_[_0xdb8e('0x6d')](_0x499db9[_0xdb8e('0x31')],function(_0x299e59){return _0x196194[_0xdb8e('0x6e')](_0x299e59[_0xdb8e('0x6f')]);});for(var _0x9c31ea=0x0;_0x9c31ea<_0x5f55fc['length'];_0x9c31ea++){if(_0x5f55fc[_0x9c31ea][_0xdb8e('0x70')]===![]){_0x4016e5[_0xdb8e('0x71')]({'id':_0x5f55fc[_0x9c31ea]['id'],'name':_0x5f55fc[_0x9c31ea][_0xdb8e('0x72')],'custom':_0x5f55fc[_0x9c31ea][_0xdb8e('0x73')],'options':_0x5f55fc[_0x9c31ea][_0xdb8e('0x74')]===_0xdb8e('0x75')&&_0x5f55fc[_0x9c31ea][_0xdb8e('0x76')]['length']>-0x1?_[_0xdb8e('0x26')](_0x5f55fc[_0x9c31ea]['pick_list_values'],function(_0x486f86){return{'name':_0x486f86,'value':_0x486f86};}):[]});}}return{'count':_0x4016e5[_0xdb8e('0x32')],'rows':_0x4016e5};}else{return{'count':0x0,'rows':[]};}})[_0xdb8e('0x3c')](respondWithResult(_0x1931ce,null))['catch'](function(_0x14879a){var _0x57519e=_0x343146['query'][_0xdb8e('0x77')]?0x1f4:_0x14879a['statusCode']||0x1f4;logger[_0xdb8e('0x23')](_0xdb8e('0x78'),_0xdb8e('0x56'),_0x57519e,JSON[_0xdb8e('0x79')](_0x14879a));delete _0x14879a[_0xdb8e('0x24')];if(_0x57519e===0x191){_0x57519e=0x190;}_0x1931ce[_0xdb8e('0x15')](_0x57519e)['send'](_0x343146['query'][_0xdb8e('0x77')]?{'message':_0xdb8e('0x7a'),'statusCode':_0x14879a[_0xdb8e('0x7b')]}:_0x14879a);});};
\ No newline at end of file
index f041675..26dcb39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5602=['slice','substring','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','/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','name','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','lastIndexOf','application/x-www-form-urlencoded','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intZohoAccount.attributes','../../components/integrations/configuration','exports','ZohoAccount','int_zoho_accounts','zone','serverUrl','changed','clientId','clientSecret','code'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x5602,0xb0));var _0x2560=function(_0x29d4a0,_0x21d321){_0x29d4a0=_0x29d4a0-0x0;var _0x4b5c1f=_0x5602[_0x29d4a0];return _0x4b5c1f;};'use strict';var _=require(_0x2560('0x0'));var util=require('util');var logger=require(_0x2560('0x1'))(_0x2560('0x2'));var moment=require(_0x2560('0x3'));var BPromise=require(_0x2560('0x4'));var rp=require(_0x2560('0x5'));var fs=require('fs');var path=require(_0x2560('0x6'));var rimraf=require(_0x2560('0x7'));var config=require('../../config/environment');var attributes=require(_0x2560('0x8'));var integrations=require(_0x2560('0x9'));module[_0x2560('0xa')]=function(_0x587b86,_0x24f078){return _0x587b86['define'](_0x2560('0xb'),attributes,{'tableName':_0x2560('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5b1b80,_0xeb02f0,_0x25dc68){if(_0x5b1b80['changed'](_0x2560('0xd'))||_0x5b1b80['changed'](_0x2560('0xe'))||_0x5b1b80[_0x2560('0xf')](_0x2560('0x10'))||_0x5b1b80[_0x2560('0xf')](_0x2560('0x11'))||_0x5b1b80[_0x2560('0xf')](_0x2560('0x12'))||_0x5b1b80[_0x2560('0xf')]('host')){var _0x3d6c47,_0x51b49b;_0x3d6c47=_0x5b1b80[_0x2560('0xe')];var _0x56ec7a=_0x3d6c47[_0x2560('0x13')](-0x1);if(_0x56ec7a==='/'||_0x56ec7a==='\x5c'||_0x56ec7a===':'){_0x3d6c47=_0x3d6c47[_0x2560('0x14')](0x0,_0x3d6c47['lastIndexOf'](_0x56ec7a));}switch(_0x5b1b80[_0x2560('0xd')]){case'US':_0x51b49b=_0x2560('0x15');break;case'AU':_0x51b49b=_0x2560('0x16');break;case'IN':_0x51b49b=_0x2560('0x17');break;case'CN':_0x51b49b='https://accounts.zoho.com.cn';break;default:_0x51b49b='https://accounts.zoho.eu';break;}var _0x3d812f={'method':'POST','uri':_0x51b49b+_0x2560('0x18'),'form':{'grant_type':_0x2560('0x19'),'client_id':_0x5b1b80[_0x2560('0x10')],'client_secret':_0x5b1b80[_0x2560('0x11')],'redirect_uri':_0x5b1b80[_0x2560('0xe')],'code':_0x5b1b80[_0x2560('0x12')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x3d812f)[_0x2560('0x1a')](function(_0x5bece2){var _0x2d0b3e=JSON[_0x2560('0x1b')](_0x5bece2);if(_0x2d0b3e[_0x2560('0x1c')]){_0x5b1b80[_0x2560('0x1d')]=_0x2d0b3e[_0x2560('0x1c')];logger[_0x2560('0x1e')](util[_0x2560('0x1f')](_0x2560('0x20'),_0x5b1b80[_0x2560('0x21')],_0x5b1b80['id']));}else{logger[_0x2560('0x22')](util[_0x2560('0x1f')](_0x2560('0x23'),_0x5b1b80[_0x2560('0x21')],_0x5b1b80['id']),util[_0x2560('0x24')](_0x2d0b3e,{'showHidden':![],'depth':null}));}return _0x25dc68(null,_0xeb02f0);})['catch'](function(_0x35f887){logger[_0x2560('0x22')](util[_0x2560('0x1f')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x5b1b80[_0x2560('0x21')],_0x5b1b80['id']),util[_0x2560('0x24')](parsedResult,{'showHidden':![],'depth':null}));return _0x25dc68(_0x35f887);});}else{return _0x25dc68(null,_0xeb02f0);}},'beforeUpdate':function(_0x1b32b4,_0x1529fe,_0x2dfa35){if(_0x1b32b4[_0x2560('0xf')](_0x2560('0xd'))||_0x1b32b4[_0x2560('0xf')](_0x2560('0xe'))||_0x1b32b4[_0x2560('0xf')]('clientId')||_0x1b32b4['changed'](_0x2560('0x11'))||_0x1b32b4[_0x2560('0xf')]('code')||_0x1b32b4['changed']('host')){var _0x14f2a7,_0x3f03ad;_0x14f2a7=_0x1b32b4[_0x2560('0xe')];var _0x39d112=_0x14f2a7[_0x2560('0x13')](-0x1);if(_0x39d112==='/'||_0x39d112==='\x5c'||_0x39d112===':'){_0x14f2a7=_0x14f2a7[_0x2560('0x14')](0x0,_0x14f2a7[_0x2560('0x25')](_0x39d112));}switch(_0x1b32b4[_0x2560('0xd')]){case'US':_0x3f03ad=_0x2560('0x15');break;case'AU':_0x3f03ad='https://accounts.zoho.com.au';break;case'IN':_0x3f03ad=_0x2560('0x17');break;case'CN':_0x3f03ad='https://accounts.zoho.com.cn';break;default:_0x3f03ad='https://accounts.zoho.eu';break;}var _0x3515ad={'method':'POST','uri':_0x3f03ad+_0x2560('0x18'),'form':{'grant_type':_0x2560('0x19'),'client_id':_0x1b32b4[_0x2560('0x10')],'client_secret':_0x1b32b4[_0x2560('0x11')],'redirect_uri':_0x1b32b4[_0x2560('0xe')],'code':_0x1b32b4[_0x2560('0x12')]},'headers':{'Content-Type':_0x2560('0x26')}};return rp(_0x3515ad)[_0x2560('0x1a')](function(_0x55741c){var _0x4a58e0=JSON[_0x2560('0x1b')](_0x55741c);if(_0x4a58e0[_0x2560('0x1c')]){_0x1b32b4[_0x2560('0x1d')]=_0x4a58e0[_0x2560('0x1c')];logger[_0x2560('0x1e')](util[_0x2560('0x1f')](_0x2560('0x20'),_0x1b32b4[_0x2560('0x21')],_0x1b32b4['id']));}else{logger[_0x2560('0x22')](util['format'](_0x2560('0x23'),_0x1b32b4['name'],_0x1b32b4['id']),util['inspect'](_0x4a58e0,{'showHidden':![],'depth':null}));}return _0x2dfa35(null,_0x1529fe);})['catch'](function(_0x27721e){logger[_0x2560('0x22')](util[_0x2560('0x1f')](_0x2560('0x23'),_0x1b32b4[_0x2560('0x21')],_0x1b32b4['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x2dfa35(_0x27721e);});}else{return _0x2dfa35(null,_0x1529fe);}}}});};
\ No newline at end of file
+var _0xb0e5=['refreshToken','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','error','format','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','name','inspect','parse','info','lodash','util','../../config/logger','api','moment','path','../../config/environment','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','changed','zone','clientSecret','code','host','serverUrl','slice','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','clientId','application/x-www-form-urlencoded','then','refresh_token'];(function(_0x1904cb,_0x31cd0d){var _0x3b7fc6=function(_0xa35efb){while(--_0xa35efb){_0x1904cb['push'](_0x1904cb['shift']());}};_0x3b7fc6(++_0x31cd0d);}(_0xb0e5,0x1ad));var _0x5b0e=function(_0x5aa374,_0x3362d1){_0x5aa374=_0x5aa374-0x0;var _0x53d31f=_0xb0e5[_0x5aa374];return _0x53d31f;};'use strict';var _=require(_0x5b0e('0x0'));var util=require(_0x5b0e('0x1'));var logger=require(_0x5b0e('0x2'))(_0x5b0e('0x3'));var moment=require(_0x5b0e('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x5b0e('0x5'));var rimraf=require('rimraf');var config=require(_0x5b0e('0x6'));var attributes=require('./intZohoAccount.attributes');var integrations=require(_0x5b0e('0x7'));module[_0x5b0e('0x8')]=function(_0x5222fe,_0x598ede){return _0x5222fe[_0x5b0e('0x9')](_0x5b0e('0xa'),attributes,{'tableName':_0x5b0e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0xb3ec8d,_0x7a7cfe,_0x41ce46){if(_0xb3ec8d[_0x5b0e('0xc')](_0x5b0e('0xd'))||_0xb3ec8d[_0x5b0e('0xc')]('serverUrl')||_0xb3ec8d[_0x5b0e('0xc')]('clientId')||_0xb3ec8d['changed'](_0x5b0e('0xe'))||_0xb3ec8d[_0x5b0e('0xc')](_0x5b0e('0xf'))||_0xb3ec8d['changed'](_0x5b0e('0x10'))){var _0x47ee76,_0x4e37dd;_0x47ee76=_0xb3ec8d[_0x5b0e('0x11')];var _0x406789=_0x47ee76[_0x5b0e('0x12')](-0x1);if(_0x406789==='/'||_0x406789==='\x5c'||_0x406789===':'){_0x47ee76=_0x47ee76[_0x5b0e('0x13')](0x0,_0x47ee76[_0x5b0e('0x14')](_0x406789));}switch(_0xb3ec8d[_0x5b0e('0xd')]){case'US':_0x4e37dd=_0x5b0e('0x15');break;case'AU':_0x4e37dd=_0x5b0e('0x16');break;case'IN':_0x4e37dd=_0x5b0e('0x17');break;case'CN':_0x4e37dd=_0x5b0e('0x18');break;default:_0x4e37dd=_0x5b0e('0x19');break;}var _0xb8e854={'method':_0x5b0e('0x1a'),'uri':_0x4e37dd+_0x5b0e('0x1b'),'form':{'grant_type':_0x5b0e('0x1c'),'client_id':_0xb3ec8d[_0x5b0e('0x1d')],'client_secret':_0xb3ec8d[_0x5b0e('0xe')],'redirect_uri':_0xb3ec8d[_0x5b0e('0x11')],'code':_0xb3ec8d[_0x5b0e('0xf')]},'headers':{'Content-Type':_0x5b0e('0x1e')}};return rp(_0xb8e854)[_0x5b0e('0x1f')](function(_0x17ac8f){var _0x4c769a=JSON['parse'](_0x17ac8f);if(_0x4c769a[_0x5b0e('0x20')]){_0xb3ec8d[_0x5b0e('0x21')]=_0x4c769a[_0x5b0e('0x20')];logger['info'](util['format'](_0x5b0e('0x22'),_0xb3ec8d['name'],_0xb3ec8d['id']));}else{logger[_0x5b0e('0x23')](util[_0x5b0e('0x24')](_0x5b0e('0x25'),_0xb3ec8d[_0x5b0e('0x26')],_0xb3ec8d['id']),util['inspect'](_0x4c769a,{'showHidden':![],'depth':null}));}return _0x41ce46(null,_0x7a7cfe);})['catch'](function(_0x48c484){logger['error'](util[_0x5b0e('0x24')](_0x5b0e('0x25'),_0xb3ec8d[_0x5b0e('0x26')],_0xb3ec8d['id']),util[_0x5b0e('0x27')](parsedResult,{'showHidden':![],'depth':null}));return _0x41ce46(_0x48c484);});}else{return _0x41ce46(null,_0x7a7cfe);}},'beforeUpdate':function(_0x80c8f9,_0x496624,_0x35b954){if(_0x80c8f9['changed'](_0x5b0e('0xd'))||_0x80c8f9[_0x5b0e('0xc')](_0x5b0e('0x11'))||_0x80c8f9[_0x5b0e('0xc')](_0x5b0e('0x1d'))||_0x80c8f9[_0x5b0e('0xc')](_0x5b0e('0xe'))||_0x80c8f9[_0x5b0e('0xc')](_0x5b0e('0xf'))||_0x80c8f9[_0x5b0e('0xc')](_0x5b0e('0x10'))){var _0x1a64f3,_0x2f8137;_0x1a64f3=_0x80c8f9[_0x5b0e('0x11')];var _0x303e28=_0x1a64f3[_0x5b0e('0x12')](-0x1);if(_0x303e28==='/'||_0x303e28==='\x5c'||_0x303e28===':'){_0x1a64f3=_0x1a64f3[_0x5b0e('0x13')](0x0,_0x1a64f3[_0x5b0e('0x14')](_0x303e28));}switch(_0x80c8f9[_0x5b0e('0xd')]){case'US':_0x2f8137=_0x5b0e('0x15');break;case'AU':_0x2f8137='https://accounts.zoho.com.au';break;case'IN':_0x2f8137=_0x5b0e('0x17');break;case'CN':_0x2f8137=_0x5b0e('0x18');break;default:_0x2f8137=_0x5b0e('0x19');break;}var _0x1883ef={'method':_0x5b0e('0x1a'),'uri':_0x2f8137+'/oauth/v2/token','form':{'grant_type':_0x5b0e('0x1c'),'client_id':_0x80c8f9[_0x5b0e('0x1d')],'client_secret':_0x80c8f9[_0x5b0e('0xe')],'redirect_uri':_0x80c8f9[_0x5b0e('0x11')],'code':_0x80c8f9[_0x5b0e('0xf')]},'headers':{'Content-Type':_0x5b0e('0x1e')}};return rp(_0x1883ef)[_0x5b0e('0x1f')](function(_0x506d0c){var _0x154f0d=JSON[_0x5b0e('0x28')](_0x506d0c);if(_0x154f0d['refresh_token']){_0x80c8f9[_0x5b0e('0x21')]=_0x154f0d[_0x5b0e('0x20')];logger[_0x5b0e('0x29')](util[_0x5b0e('0x24')](_0x5b0e('0x22'),_0x80c8f9[_0x5b0e('0x26')],_0x80c8f9['id']));}else{logger[_0x5b0e('0x23')](util[_0x5b0e('0x24')](_0x5b0e('0x25'),_0x80c8f9[_0x5b0e('0x26')],_0x80c8f9['id']),util[_0x5b0e('0x27')](_0x154f0d,{'showHidden':![],'depth':null}));}return _0x35b954(null,_0x496624);})['catch'](function(_0x414d13){logger[_0x5b0e('0x23')](util[_0x5b0e('0x24')](_0x5b0e('0x25'),_0x80c8f9[_0x5b0e('0x26')],_0x80c8f9['id']),util[_0x5b0e('0x27')](parsedResult,{'showHidden':![],'depth':null}));return _0x35b954(_0x414d13);});}else{return _0x35b954(null,_0x496624);}}}});};
\ No newline at end of file
index 8be9102..56d3445 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6822=['ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetZohoAccount','ZohoAccount','options','raw','where','attributes','include','map','model','ShowZohoAccount','find','info','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then'];(function(_0x4e1d40,_0xf3ae46){var _0x59bdc0=function(_0xccf5ef){while(--_0xccf5ef){_0x4e1d40['push'](_0x4e1d40['shift']());}};_0x59bdc0(++_0xf3ae46);}(_0x6822,0xca));var _0x2682=function(_0x741e13,_0x241f19){_0x741e13=_0x741e13-0x0;var _0x3401e4=_0x6822[_0x741e13];return _0x3401e4;};'use strict';var _=require(_0x2682('0x0'));var util=require(_0x2682('0x1'));var moment=require(_0x2682('0x2'));var BPromise=require(_0x2682('0x3'));var rs=require(_0x2682('0x4'));var fs=require('fs');var Redis=require(_0x2682('0x5'));var db=require(_0x2682('0x6'))['db'];var utils=require(_0x2682('0x7'));var logger=require(_0x2682('0x8'))('rpc');var config=require(_0x2682('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x2682('0xa')][_0x2682('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x45e895,_0x4be417,_0x5bfb13){return new BPromise(function(_0x582d30,_0x2699f0){return client[_0x2682('0xc')](_0x45e895,_0x5bfb13)[_0x2682('0xd')](function(_0x13fef8){logger['info'](_0x2682('0xe'),_0x4be417,_0x2682('0xf'));logger[_0x2682('0x10')](_0x2682('0x11'),_0x4be417,'request\x20sent',JSON[_0x2682('0x12')](_0x13fef8));if(_0x13fef8[_0x2682('0x13')]){if(_0x13fef8[_0x2682('0x13')][_0x2682('0x14')]===0x1f4){logger['error'](_0x2682('0xe'),_0x4be417,_0x13fef8[_0x2682('0x13')][_0x2682('0x15')]);return _0x2699f0(_0x13fef8[_0x2682('0x13')][_0x2682('0x15')]);}logger['error'](_0x2682('0xe'),_0x4be417,_0x13fef8[_0x2682('0x13')][_0x2682('0x15')]);return _0x582d30(_0x13fef8[_0x2682('0x13')][_0x2682('0x15')]);}else{logger['info'](_0x2682('0xe'),_0x4be417,'request\x20sent');_0x582d30(_0x13fef8[_0x2682('0x16')]['message']);}})[_0x2682('0x17')](function(_0x38b7e6){logger[_0x2682('0x13')]('ZohoAccount,\x20%s,\x20%s',_0x4be417,_0x38b7e6);_0x2699f0(_0x38b7e6);});});}exports[_0x2682('0x18')]=function(_0x33e227){var _0x14e590=this;return new Promise(function(_0x349499,_0x550b93){return db[_0x2682('0x19')]['findAll']({'raw':_0x33e227[_0x2682('0x1a')]?_0x33e227['options'][_0x2682('0x1b')]===undefined?!![]:![]:!![],'where':_0x33e227[_0x2682('0x1a')]?_0x33e227[_0x2682('0x1a')][_0x2682('0x1c')]||null:null,'attributes':_0x33e227['options']?_0x33e227[_0x2682('0x1a')][_0x2682('0x1d')]||null:null,'limit':_0x33e227[_0x2682('0x1a')]?_0x33e227[_0x2682('0x1a')]['limit']||null:null,'include':_0x33e227['options']?_0x33e227['options'][_0x2682('0x1e')]?_[_0x2682('0x1f')](_0x33e227[_0x2682('0x1a')][_0x2682('0x1e')],function(_0x4729f1){return{'model':db[_0x4729f1[_0x2682('0x20')]],'as':_0x4729f1['as'],'attributes':_0x4729f1[_0x2682('0x1d')],'include':_0x4729f1[_0x2682('0x1e')]?_[_0x2682('0x1f')](_0x4729f1[_0x2682('0x1e')],function(_0x15d4c6){return{'model':db[_0x15d4c6[_0x2682('0x20')]],'as':_0x15d4c6['as'],'attributes':_0x15d4c6['attributes'],'include':_0x15d4c6[_0x2682('0x1e')]?_[_0x2682('0x1f')](_0x15d4c6[_0x2682('0x1e')],function(_0x37149e){return{'model':db[_0x37149e[_0x2682('0x20')]],'as':_0x37149e['as'],'attributes':_0x37149e['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1730ab){logger['info'](_0x2682('0x18'),_0x33e227);logger['debug']('GetZohoAccount',_0x33e227,JSON[_0x2682('0x12')](_0x1730ab));_0x349499(_0x1730ab);})[_0x2682('0x17')](function(_0x162d2b){logger[_0x2682('0x13')](_0x2682('0x18'),_0x162d2b[_0x2682('0x15')],_0x33e227);_0x550b93(_0x14e590['error'](0x1f4,_0x162d2b[_0x2682('0x15')]));});});};exports[_0x2682('0x21')]=function(_0x79ee00){var _0x465e5f=this;return new Promise(function(_0x1f1d70,_0x15f392){return db['ZohoAccount'][_0x2682('0x22')]({'raw':_0x79ee00[_0x2682('0x1a')]?_0x79ee00[_0x2682('0x1a')][_0x2682('0x1b')]===undefined?!![]:![]:!![],'where':_0x79ee00[_0x2682('0x1a')]?_0x79ee00[_0x2682('0x1a')]['where']||null:null,'attributes':_0x79ee00['options']?_0x79ee00['options']['attributes']||null:null,'include':_0x79ee00[_0x2682('0x1a')]?_0x79ee00[_0x2682('0x1a')]['include']?_[_0x2682('0x1f')](_0x79ee00[_0x2682('0x1a')]['include'],function(_0x4fd57b){return{'model':db[_0x4fd57b['model']],'as':_0x4fd57b['as'],'attributes':_0x4fd57b[_0x2682('0x1d')],'include':_0x4fd57b[_0x2682('0x1e')]?_[_0x2682('0x1f')](_0x4fd57b[_0x2682('0x1e')],function(_0x1d596b){return{'model':db[_0x1d596b['model']],'as':_0x1d596b['as'],'attributes':_0x1d596b[_0x2682('0x1d')],'include':_0x1d596b[_0x2682('0x1e')]?_[_0x2682('0x1f')](_0x1d596b[_0x2682('0x1e')],function(_0x3a8c20){return{'model':db[_0x3a8c20[_0x2682('0x20')]],'as':_0x3a8c20['as'],'attributes':_0x3a8c20['attributes']};}):[]};}):[]};}):[]:[]})[_0x2682('0xd')](function(_0x5b357e){logger[_0x2682('0x23')](_0x2682('0x21'),_0x79ee00);logger[_0x2682('0x10')](_0x2682('0x21'),_0x79ee00,JSON['stringify'](_0x5b357e));_0x1f1d70(_0x5b357e);})[_0x2682('0x17')](function(_0x32718b){logger[_0x2682('0x13')](_0x2682('0x21'),_0x32718b['message'],_0x79ee00);_0x15f392(_0x465e5f[_0x2682('0x13')](0x1f4,_0x32718b[_0x2682('0x15')]));});});};
\ No newline at end of file
+var _0xe056=['stringify','error','code','message','info','ZohoAccount','options','where','attributes','include','map','model','GetZohoAccount','ShowZohoAccount','raw','catch','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','http','request','then','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s'];(function(_0x5833c2,_0x56e6ea){var _0x12b127=function(_0x3868a3){while(--_0x3868a3){_0x5833c2['push'](_0x5833c2['shift']());}};_0x12b127(++_0x56e6ea);}(_0xe056,0xdb));var _0x6e05=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0xe056[_0x550d12];return _0x12103d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6e05('0x0'));var BPromise=require(_0x6e05('0x1'));var rs=require(_0x6e05('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6e05('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x6e05('0x4'))(_0x6e05('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x6e05('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x390bb6,_0x1c78eb,_0x5dacb2){return new BPromise(function(_0x1a54b7,_0x177b2c){return client[_0x6e05('0x7')](_0x390bb6,_0x5dacb2)[_0x6e05('0x8')](function(_0x13af56){logger['info'](_0x6e05('0x9'),_0x1c78eb,_0x6e05('0xa'));logger[_0x6e05('0xb')](_0x6e05('0xc'),_0x1c78eb,_0x6e05('0xa'),JSON[_0x6e05('0xd')](_0x13af56));if(_0x13af56['error']){if(_0x13af56[_0x6e05('0xe')][_0x6e05('0xf')]===0x1f4){logger[_0x6e05('0xe')]('ZohoAccount,\x20%s,\x20%s',_0x1c78eb,_0x13af56[_0x6e05('0xe')][_0x6e05('0x10')]);return _0x177b2c(_0x13af56[_0x6e05('0xe')][_0x6e05('0x10')]);}logger[_0x6e05('0xe')]('ZohoAccount,\x20%s,\x20%s',_0x1c78eb,_0x13af56[_0x6e05('0xe')][_0x6e05('0x10')]);return _0x1a54b7(_0x13af56['error']['message']);}else{logger[_0x6e05('0x11')](_0x6e05('0x9'),_0x1c78eb,_0x6e05('0xa'));_0x1a54b7(_0x13af56['result'][_0x6e05('0x10')]);}})['catch'](function(_0x3c3ef0){logger[_0x6e05('0xe')]('ZohoAccount,\x20%s,\x20%s',_0x1c78eb,_0x3c3ef0);_0x177b2c(_0x3c3ef0);});});}exports['GetZohoAccount']=function(_0x9d1e04){var _0x1aa378=this;return new Promise(function(_0x4418c6,_0x3862bb){return db[_0x6e05('0x12')]['findAll']({'raw':_0x9d1e04[_0x6e05('0x13')]?_0x9d1e04['options']['raw']===undefined?!![]:![]:!![],'where':_0x9d1e04[_0x6e05('0x13')]?_0x9d1e04[_0x6e05('0x13')][_0x6e05('0x14')]||null:null,'attributes':_0x9d1e04[_0x6e05('0x13')]?_0x9d1e04[_0x6e05('0x13')][_0x6e05('0x15')]||null:null,'limit':_0x9d1e04[_0x6e05('0x13')]?_0x9d1e04[_0x6e05('0x13')]['limit']||null:null,'include':_0x9d1e04[_0x6e05('0x13')]?_0x9d1e04['options'][_0x6e05('0x16')]?_[_0x6e05('0x17')](_0x9d1e04[_0x6e05('0x13')]['include'],function(_0x5dc6dc){return{'model':db[_0x5dc6dc[_0x6e05('0x18')]],'as':_0x5dc6dc['as'],'attributes':_0x5dc6dc['attributes'],'include':_0x5dc6dc[_0x6e05('0x16')]?_[_0x6e05('0x17')](_0x5dc6dc[_0x6e05('0x16')],function(_0x3444ea){return{'model':db[_0x3444ea[_0x6e05('0x18')]],'as':_0x3444ea['as'],'attributes':_0x3444ea[_0x6e05('0x15')],'include':_0x3444ea[_0x6e05('0x16')]?_['map'](_0x3444ea[_0x6e05('0x16')],function(_0x3bdfef){return{'model':db[_0x3bdfef['model']],'as':_0x3bdfef['as'],'attributes':_0x3bdfef[_0x6e05('0x15')]};}):[]};}):[]};}):[]:[]})[_0x6e05('0x8')](function(_0x578270){logger['info'](_0x6e05('0x19'),_0x9d1e04);logger['debug'](_0x6e05('0x19'),_0x9d1e04,JSON[_0x6e05('0xd')](_0x578270));_0x4418c6(_0x578270);})['catch'](function(_0x4e15c7){logger[_0x6e05('0xe')](_0x6e05('0x19'),_0x4e15c7[_0x6e05('0x10')],_0x9d1e04);_0x3862bb(_0x1aa378[_0x6e05('0xe')](0x1f4,_0x4e15c7['message']));});});};exports[_0x6e05('0x1a')]=function(_0x2791ee){var _0x8fa8b1=this;return new Promise(function(_0x5bf3ca,_0x1a4609){return db['ZohoAccount']['find']({'raw':_0x2791ee['options']?_0x2791ee[_0x6e05('0x13')][_0x6e05('0x1b')]===undefined?!![]:![]:!![],'where':_0x2791ee[_0x6e05('0x13')]?_0x2791ee[_0x6e05('0x13')][_0x6e05('0x14')]||null:null,'attributes':_0x2791ee[_0x6e05('0x13')]?_0x2791ee[_0x6e05('0x13')]['attributes']||null:null,'include':_0x2791ee[_0x6e05('0x13')]?_0x2791ee['options'][_0x6e05('0x16')]?_['map'](_0x2791ee[_0x6e05('0x13')]['include'],function(_0xeaeade){return{'model':db[_0xeaeade['model']],'as':_0xeaeade['as'],'attributes':_0xeaeade[_0x6e05('0x15')],'include':_0xeaeade['include']?_[_0x6e05('0x17')](_0xeaeade[_0x6e05('0x16')],function(_0x1cb3d7){return{'model':db[_0x1cb3d7[_0x6e05('0x18')]],'as':_0x1cb3d7['as'],'attributes':_0x1cb3d7[_0x6e05('0x15')],'include':_0x1cb3d7[_0x6e05('0x16')]?_['map'](_0x1cb3d7[_0x6e05('0x16')],function(_0x122ca4){return{'model':db[_0x122ca4[_0x6e05('0x18')]],'as':_0x122ca4['as'],'attributes':_0x122ca4[_0x6e05('0x15')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4a1c20){logger[_0x6e05('0x11')]('ShowZohoAccount',_0x2791ee);logger[_0x6e05('0xb')](_0x6e05('0x1a'),_0x2791ee,JSON[_0x6e05('0xd')](_0x4a1c20));_0x5bf3ca(_0x4a1c20);})[_0x6e05('0x1c')](function(_0x4ade51){logger[_0x6e05('0xe')]('ShowZohoAccount',_0x4ade51['message'],_0x2791ee);_0x1a4609(_0x8fa8b1[_0x6e05('0xe')](0x1f4,_0x4ade51['message']));});});};
\ No newline at end of file
index 0667fef..f78292f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3b7=['put','/:id','delete','destroy','exports','util','fs-extra','../../components/auth/service','../../config/environment','./intZohoConfiguration.controller','get','index','isAuthenticated','show','getFields','getSubjects','/:id/descriptions','getDescriptions','post','create'];(function(_0x3877c1,_0x238c29){var _0x59056a=function(_0x3567cd){while(--_0x3567cd){_0x3877c1['push'](_0x3877c1['shift']());}};_0x59056a(++_0x238c29);}(_0xf3b7,0x7d));var _0x7f3b=function(_0x348e47,_0x56c186){_0x348e47=_0x348e47-0x0;var _0x48e15b=_0xf3b7[_0x348e47];return _0x48e15b;};'use strict';var multer=require('multer');var util=require(_0x7f3b('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x7f3b('0x1'));var auth=require(_0x7f3b('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0x7f3b('0x3'));var controller=require(_0x7f3b('0x4'));router[_0x7f3b('0x5')]('/',auth['isAuthenticated'](),controller[_0x7f3b('0x6')]);router[_0x7f3b('0x5')]('/:id',auth[_0x7f3b('0x7')](),controller[_0x7f3b('0x8')]);router[_0x7f3b('0x5')]('/:id/fields',auth[_0x7f3b('0x7')](),controller[_0x7f3b('0x9')]);router[_0x7f3b('0x5')]('/:id/subjects',auth[_0x7f3b('0x7')](),controller[_0x7f3b('0xa')]);router[_0x7f3b('0x5')](_0x7f3b('0xb'),auth[_0x7f3b('0x7')](),controller[_0x7f3b('0xc')]);router[_0x7f3b('0xd')]('/',auth[_0x7f3b('0x7')](),controller[_0x7f3b('0xe')]);router[_0x7f3b('0xf')](_0x7f3b('0x10'),auth[_0x7f3b('0x7')](),controller['update']);router[_0x7f3b('0x11')](_0x7f3b('0x10'),auth[_0x7f3b('0x7')](),controller[_0x7f3b('0x12')]);module[_0x7f3b('0x13')]=router;
\ No newline at end of file
+var _0x8297=['put','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','/:id','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x8297,0xea));var _0x7829=function(_0x19afaa,_0x19e3af){_0x19afaa=_0x19afaa-0x0;var _0x117531=_0x8297[_0x19afaa];return _0x117531;};'use strict';var multer=require(_0x7829('0x0'));var util=require(_0x7829('0x1'));var path=require(_0x7829('0x2'));var timeout=require(_0x7829('0x3'));var express=require('express');var router=express[_0x7829('0x4')]();var fs_extra=require(_0x7829('0x5'));var auth=require(_0x7829('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x7829('0x7'));var controller=require(_0x7829('0x8'));router[_0x7829('0x9')]('/',auth[_0x7829('0xa')](),controller['index']);router[_0x7829('0x9')](_0x7829('0xb'),auth[_0x7829('0xa')](),controller['show']);router[_0x7829('0x9')](_0x7829('0xc'),auth[_0x7829('0xa')](),controller[_0x7829('0xd')]);router['get'](_0x7829('0xe'),auth[_0x7829('0xa')](),controller[_0x7829('0xf')]);router[_0x7829('0x9')](_0x7829('0x10'),auth[_0x7829('0xa')](),controller[_0x7829('0x11')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x7829('0x12')](_0x7829('0xb'),auth[_0x7829('0xa')](),controller['update']);router[_0x7829('0x13')](_0x7829('0xb'),auth['isAuthenticated'](),controller[_0x7829('0x14')]);module['exports']=router;
\ No newline at end of file
index b2e0ba8..318e77f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b96=['lead','contact_lead','exports','STRING','ENUM','contact','nothing'];(function(_0x457a10,_0xcd91b4){var _0x114e1b=function(_0xefb051){while(--_0xefb051){_0x457a10['push'](_0x457a10['shift']());}};_0x114e1b(++_0xcd91b4);}(_0x9b96,0x18a));var _0x69b9=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9b96[_0x6131cd];return _0x47e916;};'use strict';var Sequelize=require('sequelize');module[_0x69b9('0x0')]={'name':{'type':Sequelize[_0x69b9('0x1')]},'moduleCreate':{'type':Sequelize[_0x69b9('0x2')]('lead',_0x69b9('0x3'),_0x69b9('0x4')),'defaultValue':_0x69b9('0x5')},'moduleSearch':{'type':Sequelize['ENUM'](_0x69b9('0x6'),_0x69b9('0x3'),_0x69b9('0x5')),'defaultValue':'contact_lead'},'description':{'type':Sequelize[_0x69b9('0x1')]}};
\ No newline at end of file
+var _0x7603=['lead','contact','nothing','contact_lead','sequelize','exports','STRING','ENUM'];(function(_0x217c2e,_0x358f06){var _0x22b7d8=function(_0x111c48){while(--_0x111c48){_0x217c2e['push'](_0x217c2e['shift']());}};_0x22b7d8(++_0x358f06);}(_0x7603,0x134));var _0x3760=function(_0x1de173,_0x339edf){_0x1de173=_0x1de173-0x0;var _0x49ee94=_0x7603[_0x1de173];return _0x49ee94;};'use strict';var Sequelize=require(_0x3760('0x0'));module[_0x3760('0x1')]={'name':{'type':Sequelize[_0x3760('0x2')]},'moduleCreate':{'type':Sequelize[_0x3760('0x3')](_0x3760('0x4'),_0x3760('0x5'),_0x3760('0x6')),'defaultValue':_0x3760('0x4')},'moduleSearch':{'type':Sequelize[_0x3760('0x3')](_0x3760('0x7'),_0x3760('0x5'),_0x3760('0x4')),'defaultValue':_0x3760('0x7')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 603e1ac..9c1b082 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a0f=['undefined','count','Content-Range','apply','reject','update','then','destroy','error','stack','send','rawAttributes','type','model','name','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','map','VIRTUAL','filter','merge','options','ZohoConfiguration','include','catch','show','params','length','includeAll','find','create','body','getFields','ZohoField','pick','findOne','getSubjects','hasOwnProperty','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit'];(function(_0x261522,_0x1adc1f){var _0x98a25a=function(_0x1b0f9c){while(--_0x1b0f9c){_0x261522['push'](_0x261522['shift']());}};_0x98a25a(++_0x1adc1f);}(_0x2a0f,0x116));var _0xf2a0=function(_0x375e19,_0x2c6701){_0x375e19=_0x375e19-0x0;var _0x41bcdd=_0x2a0f[_0x375e19];return _0x41bcdd;};'use strict';var emlformat=require(_0xf2a0('0x0'));var rimraf=require(_0xf2a0('0x1'));var zipdir=require(_0xf2a0('0x2'));var jsonpatch=require(_0xf2a0('0x3'));var rp=require(_0xf2a0('0x4'));var moment=require('moment');var BPromise=require(_0xf2a0('0x5'));var Mustache=require(_0xf2a0('0x6'));var util=require(_0xf2a0('0x7'));var path=require(_0xf2a0('0x8'));var sox=require(_0xf2a0('0x9'));var csv=require('to-csv');var ejs=require(_0xf2a0('0xa'));var fs=require('fs');var fs_extra=require(_0xf2a0('0xb'));var _=require(_0xf2a0('0xc'));var squel=require('squel');var crypto=require(_0xf2a0('0xd'));var jsforce=require(_0xf2a0('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xf2a0('0xf'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf2a0('0x10'));var authService=require(_0xf2a0('0x11'));var qs=require(_0xf2a0('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf2a0('0x13'));var logger=require(_0xf2a0('0x14'))(_0xf2a0('0x15'));var utils=require('../../config/utils');var config=require(_0xf2a0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xf2a0('0x17'))['db'];function respondWithStatusCode(_0x41e632,_0x494c9e){_0x494c9e=_0x494c9e||0xcc;return function(_0x27abf3){if(_0x27abf3){return _0x41e632[_0xf2a0('0x18')](_0x494c9e);}return _0x41e632[_0xf2a0('0x19')](_0x494c9e)[_0xf2a0('0x1a')]();};}function respondWithResult(_0x372dc8,_0x1a4188){_0x1a4188=_0x1a4188||0xc8;return function(_0xd4a974){if(_0xd4a974){return _0x372dc8[_0xf2a0('0x19')](_0x1a4188)[_0xf2a0('0x1b')](_0xd4a974);}};}function respondWithFilteredResult(_0x385274,_0x1aac17){return function(_0x2ee4f6){if(_0x2ee4f6){var _0x15e6cb=typeof _0x1aac17[_0xf2a0('0x1c')]==='undefined'&&typeof _0x1aac17[_0xf2a0('0x1d')]===_0xf2a0('0x1e');var _0xef4f1=_0x2ee4f6[_0xf2a0('0x1f')];var _0x992896=_0x15e6cb?0x0:_0x1aac17[_0xf2a0('0x1c')];var _0x4190f8=_0x15e6cb?_0x2ee4f6[_0xf2a0('0x1f')]:_0x1aac17['offset']+_0x1aac17[_0xf2a0('0x1d')];var _0x2babf0;if(_0x4190f8>=_0xef4f1){_0x4190f8=_0xef4f1;_0x2babf0=0xc8;}else{_0x2babf0=0xce;}_0x385274[_0xf2a0('0x19')](_0x2babf0);return _0x385274['set'](_0xf2a0('0x20'),_0x992896+'-'+_0x4190f8+'/'+_0xef4f1)[_0xf2a0('0x1b')](_0x2ee4f6);}return null;};}function patchUpdates(_0x2a4697){return function(_0x1a6017){try{jsonpatch[_0xf2a0('0x21')](_0x1a6017,_0x2a4697,!![]);}catch(_0x4c912c){return BPromise[_0xf2a0('0x22')](_0x4c912c);}return _0x1a6017['save']();};}function saveUpdates(_0x588e61,_0x2d97f2){return function(_0x3bf736){if(_0x3bf736){return _0x3bf736[_0xf2a0('0x23')](_0x588e61)[_0xf2a0('0x24')](function(_0xec8297){return _0xec8297;});}return null;};}function removeEntity(_0x51642c,_0x5caab8){return function(_0xf541b4){if(_0xf541b4){return _0xf541b4[_0xf2a0('0x25')]()[_0xf2a0('0x24')](function(){_0x51642c[_0xf2a0('0x19')](0xcc)[_0xf2a0('0x1a')]();});}};}function handleEntityNotFound(_0x1c26b8,_0x223b7f){return function(_0x14a9c9){if(!_0x14a9c9){_0x1c26b8[_0xf2a0('0x18')](0x194);}return _0x14a9c9;};}function handleError(_0x48317d,_0x11896a){_0x11896a=_0x11896a||0x1f4;return function(_0x1574b8){logger[_0xf2a0('0x26')](_0x1574b8[_0xf2a0('0x27')]);if(_0x1574b8['name']){delete _0x1574b8['name'];}_0x48317d[_0xf2a0('0x19')](_0x11896a)[_0xf2a0('0x28')](_0x1574b8);};}exports['index']=function(_0x3a4e2d,_0x52d972){var _0xd8e13a={},_0xfdf225={},_0x25d49d={'count':0x0,'rows':[]};var _0x33f36e=_['map'](db['ZohoConfiguration'][_0xf2a0('0x29')],function(_0x44e29d){return{'name':_0x44e29d['fieldName'],'type':_0x44e29d[_0xf2a0('0x2a')]['key']};});_0xfdf225[_0xf2a0('0x2b')]=_['map'](_0x33f36e,_0xf2a0('0x2c'));_0xfdf225[_0xf2a0('0x2d')]=_[_0xf2a0('0x2e')](_0x3a4e2d[_0xf2a0('0x2d')]);_0xfdf225[_0xf2a0('0x2f')]=_[_0xf2a0('0x30')](_0xfdf225[_0xf2a0('0x2b')],_0xfdf225['query']);_0xd8e13a[_0xf2a0('0x31')]=_[_0xf2a0('0x30')](_0xfdf225['model'],qs[_0xf2a0('0x32')](_0x3a4e2d[_0xf2a0('0x2d')][_0xf2a0('0x32')]));_0xd8e13a[_0xf2a0('0x31')]=_0xd8e13a[_0xf2a0('0x31')]['length']?_0xd8e13a[_0xf2a0('0x31')]:_0xfdf225['model'];if(!_0x3a4e2d['query']['hasOwnProperty'](_0xf2a0('0x33'))){_0xd8e13a[_0xf2a0('0x1d')]=qs[_0xf2a0('0x1d')](_0x3a4e2d['query'][_0xf2a0('0x1d')]);_0xd8e13a[_0xf2a0('0x1c')]=qs[_0xf2a0('0x1c')](_0x3a4e2d['query'][_0xf2a0('0x1c')]);}_0xd8e13a[_0xf2a0('0x34')]=qs[_0xf2a0('0x35')](_0x3a4e2d[_0xf2a0('0x2d')]['sort']);_0xd8e13a[_0xf2a0('0x36')]=qs[_0xf2a0('0x2f')](_['pick'](_0x3a4e2d[_0xf2a0('0x2d')],_0xfdf225['filters']),_0x33f36e);if(_0x3a4e2d[_0xf2a0('0x2d')]['filter']){_0xd8e13a['where']=_['merge'](_0xd8e13a[_0xf2a0('0x36')],{'$or':_[_0xf2a0('0x37')](_0x33f36e,function(_0x379998){if(_0x379998[_0xf2a0('0x2a')]!==_0xf2a0('0x38')){var _0x39b8cb={};_0x39b8cb[_0x379998[_0xf2a0('0x2c')]]={'$like':'%'+_0x3a4e2d[_0xf2a0('0x2d')][_0xf2a0('0x39')]+'%'};return _0x39b8cb;}})});}_0xd8e13a=_[_0xf2a0('0x3a')]({},_0xd8e13a,_0x3a4e2d[_0xf2a0('0x3b')]);var _0x1cae7a={'where':_0xd8e13a[_0xf2a0('0x36')]};return db[_0xf2a0('0x3c')][_0xf2a0('0x1f')](_0x1cae7a)[_0xf2a0('0x24')](function(_0x9de386){_0x25d49d[_0xf2a0('0x1f')]=_0x9de386;if(_0x3a4e2d['query']['includeAll']){_0xd8e13a[_0xf2a0('0x3d')]=[{'all':!![]}];}return db['ZohoConfiguration']['findAll'](_0xd8e13a);})[_0xf2a0('0x24')](function(_0x37149d){_0x25d49d['rows']=_0x37149d;return _0x25d49d;})[_0xf2a0('0x24')](respondWithFilteredResult(_0x52d972,_0xd8e13a))[_0xf2a0('0x3e')](handleError(_0x52d972,null));};exports[_0xf2a0('0x3f')]=function(_0x1d9a46,_0x3ebe7c){var _0x2c25e9={'raw':![],'where':{'id':_0x1d9a46[_0xf2a0('0x40')]['id']}},_0x250023={};_0x250023[_0xf2a0('0x2b')]=_[_0xf2a0('0x2e')](db['ZohoConfiguration'][_0xf2a0('0x29')]);_0x250023[_0xf2a0('0x2d')]=_[_0xf2a0('0x2e')](_0x1d9a46[_0xf2a0('0x2d')]);_0x250023[_0xf2a0('0x2f')]=_[_0xf2a0('0x30')](_0x250023['model'],_0x250023[_0xf2a0('0x2d')]);_0x2c25e9[_0xf2a0('0x31')]=_[_0xf2a0('0x30')](_0x250023[_0xf2a0('0x2b')],qs[_0xf2a0('0x32')](_0x1d9a46[_0xf2a0('0x2d')][_0xf2a0('0x32')]));_0x2c25e9['attributes']=_0x2c25e9[_0xf2a0('0x31')][_0xf2a0('0x41')]?_0x2c25e9['attributes']:_0x250023[_0xf2a0('0x2b')];if(_0x1d9a46[_0xf2a0('0x2d')][_0xf2a0('0x42')]){_0x2c25e9[_0xf2a0('0x3d')]=[{'all':!![]}];}_0x2c25e9=_[_0xf2a0('0x3a')]({},_0x2c25e9,_0x1d9a46[_0xf2a0('0x3b')]);return db[_0xf2a0('0x3c')][_0xf2a0('0x43')](_0x2c25e9)[_0xf2a0('0x24')](handleEntityNotFound(_0x3ebe7c,null))[_0xf2a0('0x24')](respondWithResult(_0x3ebe7c,null))[_0xf2a0('0x3e')](handleError(_0x3ebe7c,null));};exports[_0xf2a0('0x44')]=function(_0x1f6616,_0x50967f){return db[_0xf2a0('0x3c')][_0xf2a0('0x44')](_0x1f6616[_0xf2a0('0x45')],{})[_0xf2a0('0x24')](respondWithResult(_0x50967f,0xc9))[_0xf2a0('0x3e')](handleError(_0x50967f,null));};exports[_0xf2a0('0x23')]=function(_0x409f2f,_0x65edd2){if(_0x409f2f[_0xf2a0('0x45')]['id']){delete _0x409f2f[_0xf2a0('0x45')]['id'];}return db['ZohoConfiguration'][_0xf2a0('0x43')]({'where':{'id':_0x409f2f['params']['id']}})[_0xf2a0('0x24')](handleEntityNotFound(_0x65edd2,null))[_0xf2a0('0x24')](saveUpdates(_0x409f2f[_0xf2a0('0x45')],null))[_0xf2a0('0x24')](respondWithResult(_0x65edd2,null))[_0xf2a0('0x3e')](handleError(_0x65edd2,null));};exports[_0xf2a0('0x25')]=function(_0x3ca535,_0x3e86e5){return db[_0xf2a0('0x3c')]['find']({'where':{'id':_0x3ca535[_0xf2a0('0x40')]['id']}})[_0xf2a0('0x24')](handleEntityNotFound(_0x3e86e5,null))[_0xf2a0('0x24')](removeEntity(_0x3e86e5,null))[_0xf2a0('0x3e')](handleError(_0x3e86e5,null));};exports[_0xf2a0('0x46')]=function(_0x1d8cdd,_0x4ecf8d,_0x40f036){var _0x2e1695={};var _0x25bc88={};var _0x3a28c7;var _0x25bfb4;return db[_0xf2a0('0x3c')]['findOne']({'where':{'id':_0x1d8cdd[_0xf2a0('0x40')]['id']}})['then'](handleEntityNotFound(_0x4ecf8d,null))[_0xf2a0('0x24')](function(_0x56dc1a){if(_0x56dc1a){_0x3a28c7=_0x56dc1a;_0x25bc88[_0xf2a0('0x2b')]=_[_0xf2a0('0x2e')](db[_0xf2a0('0x47')][_0xf2a0('0x29')]);_0x25bc88[_0xf2a0('0x2d')]=_[_0xf2a0('0x2e')](_0x1d8cdd[_0xf2a0('0x2d')]);_0x25bc88[_0xf2a0('0x2f')]=_[_0xf2a0('0x30')](_0x25bc88[_0xf2a0('0x2b')],_0x25bc88[_0xf2a0('0x2d')]);_0x2e1695[_0xf2a0('0x31')]=_['intersection'](_0x25bc88[_0xf2a0('0x2b')],qs[_0xf2a0('0x32')](_0x1d8cdd[_0xf2a0('0x2d')][_0xf2a0('0x32')]));_0x2e1695['attributes']=_0x2e1695[_0xf2a0('0x31')]['length']?_0x2e1695[_0xf2a0('0x31')]:_0x25bc88[_0xf2a0('0x2b')];_0x2e1695[_0xf2a0('0x34')]=qs[_0xf2a0('0x35')](_0x1d8cdd['query']['sort']);_0x2e1695[_0xf2a0('0x36')]=qs[_0xf2a0('0x2f')](_[_0xf2a0('0x48')](_0x1d8cdd['query'],_0x25bc88['filters']));if(_0x1d8cdd[_0xf2a0('0x2d')][_0xf2a0('0x39')]){_0x2e1695[_0xf2a0('0x36')]=_[_0xf2a0('0x3a')](_0x2e1695['where'],{'$or':_[_0xf2a0('0x37')](_0x2e1695['attributes'],function(_0x4c4892){var _0xdc8ef4={};_0xdc8ef4[_0x4c4892]={'$like':'%'+_0x1d8cdd[_0xf2a0('0x2d')][_0xf2a0('0x39')]+'%'};return _0xdc8ef4;})});}_0x2e1695=_['merge']({},_0x2e1695,_0x1d8cdd['options']);return _0x3a28c7[_0xf2a0('0x46')](_0x2e1695);}})[_0xf2a0('0x24')](function(_0x16a2fc){if(_0x16a2fc){_0x25bfb4=_0x16a2fc[_0xf2a0('0x41')];if(!_0x1d8cdd[_0xf2a0('0x2d')]['hasOwnProperty'](_0xf2a0('0x33'))){_0x2e1695['limit']=qs[_0xf2a0('0x1d')](_0x1d8cdd['query'][_0xf2a0('0x1d')]);_0x2e1695[_0xf2a0('0x1c')]=qs[_0xf2a0('0x1c')](_0x1d8cdd['query'][_0xf2a0('0x1c')]);}return _0x3a28c7[_0xf2a0('0x46')](_0x2e1695);}})['then'](function(_0x1b1356){if(_0x1b1356){return _0x1b1356?{'count':_0x25bfb4,'rows':_0x1b1356}:null;}})['then'](respondWithResult(_0x4ecf8d,null))['catch'](handleError(_0x4ecf8d,null));};exports['getSubjects']=function(_0x8213bf,_0x20256c,_0x407e73){var _0x393c71={};var _0x24cf35={};var _0x29ce4c;var _0xa81a19;return db[_0xf2a0('0x3c')][_0xf2a0('0x49')]({'where':{'id':_0x8213bf[_0xf2a0('0x40')]['id']}})[_0xf2a0('0x24')](handleEntityNotFound(_0x20256c,null))['then'](function(_0x1c79fd){if(_0x1c79fd){_0x29ce4c=_0x1c79fd;_0x24cf35[_0xf2a0('0x2b')]=_[_0xf2a0('0x2e')](db[_0xf2a0('0x47')][_0xf2a0('0x29')]);_0x24cf35[_0xf2a0('0x2d')]=_[_0xf2a0('0x2e')](_0x8213bf[_0xf2a0('0x2d')]);_0x24cf35[_0xf2a0('0x2f')]=_[_0xf2a0('0x30')](_0x24cf35[_0xf2a0('0x2b')],_0x24cf35['query']);_0x393c71[_0xf2a0('0x31')]=_[_0xf2a0('0x30')](_0x24cf35[_0xf2a0('0x2b')],qs[_0xf2a0('0x32')](_0x8213bf[_0xf2a0('0x2d')][_0xf2a0('0x32')]));_0x393c71[_0xf2a0('0x31')]=_0x393c71[_0xf2a0('0x31')][_0xf2a0('0x41')]?_0x393c71[_0xf2a0('0x31')]:_0x24cf35[_0xf2a0('0x2b')];_0x393c71[_0xf2a0('0x34')]=qs[_0xf2a0('0x35')](_0x8213bf[_0xf2a0('0x2d')][_0xf2a0('0x35')]);_0x393c71[_0xf2a0('0x36')]=qs[_0xf2a0('0x2f')](_[_0xf2a0('0x48')](_0x8213bf[_0xf2a0('0x2d')],_0x24cf35[_0xf2a0('0x2f')]));if(_0x8213bf[_0xf2a0('0x2d')][_0xf2a0('0x39')]){_0x393c71['where']=_['merge'](_0x393c71[_0xf2a0('0x36')],{'$or':_[_0xf2a0('0x37')](_0x393c71[_0xf2a0('0x31')],function(_0x53f986){var _0xabe8ef={};_0xabe8ef[_0x53f986]={'$like':'%'+_0x8213bf['query'][_0xf2a0('0x39')]+'%'};return _0xabe8ef;})});}_0x393c71=_['merge']({},_0x393c71,_0x8213bf[_0xf2a0('0x3b')]);return _0x29ce4c[_0xf2a0('0x4a')](_0x393c71);}})[_0xf2a0('0x24')](function(_0x4279d1){if(_0x4279d1){_0xa81a19=_0x4279d1[_0xf2a0('0x41')];if(!_0x8213bf[_0xf2a0('0x2d')][_0xf2a0('0x4b')]('nolimit')){_0x393c71[_0xf2a0('0x1d')]=qs[_0xf2a0('0x1d')](_0x8213bf[_0xf2a0('0x2d')][_0xf2a0('0x1d')]);_0x393c71[_0xf2a0('0x1c')]=qs[_0xf2a0('0x1c')](_0x8213bf[_0xf2a0('0x2d')]['offset']);}return _0x29ce4c[_0xf2a0('0x4a')](_0x393c71);}})[_0xf2a0('0x24')](function(_0x13b662){if(_0x13b662){return _0x13b662?{'count':_0xa81a19,'rows':_0x13b662}:null;}})[_0xf2a0('0x24')](respondWithResult(_0x20256c,null))[_0xf2a0('0x3e')](handleError(_0x20256c,null));};exports['getDescriptions']=function(_0x59bb3f,_0x22a0c2,_0x504715){var _0x2cf4e5={};var _0x4b3b0f={};var _0x1eec3a;var _0x5e304f;return db[_0xf2a0('0x3c')][_0xf2a0('0x49')]({'where':{'id':_0x59bb3f[_0xf2a0('0x40')]['id']}})[_0xf2a0('0x24')](handleEntityNotFound(_0x22a0c2,null))['then'](function(_0xd35255){if(_0xd35255){_0x1eec3a=_0xd35255;_0x4b3b0f[_0xf2a0('0x2b')]=_[_0xf2a0('0x2e')](db[_0xf2a0('0x47')][_0xf2a0('0x29')]);_0x4b3b0f[_0xf2a0('0x2d')]=_['keys'](_0x59bb3f[_0xf2a0('0x2d')]);_0x4b3b0f[_0xf2a0('0x2f')]=_[_0xf2a0('0x30')](_0x4b3b0f[_0xf2a0('0x2b')],_0x4b3b0f['query']);_0x2cf4e5['attributes']=_[_0xf2a0('0x30')](_0x4b3b0f[_0xf2a0('0x2b')],qs[_0xf2a0('0x32')](_0x59bb3f[_0xf2a0('0x2d')][_0xf2a0('0x32')]));_0x2cf4e5[_0xf2a0('0x31')]=_0x2cf4e5[_0xf2a0('0x31')][_0xf2a0('0x41')]?_0x2cf4e5['attributes']:_0x4b3b0f[_0xf2a0('0x2b')];_0x2cf4e5[_0xf2a0('0x34')]=qs[_0xf2a0('0x35')](_0x59bb3f[_0xf2a0('0x2d')][_0xf2a0('0x35')]);_0x2cf4e5[_0xf2a0('0x36')]=qs['filters'](_[_0xf2a0('0x48')](_0x59bb3f[_0xf2a0('0x2d')],_0x4b3b0f[_0xf2a0('0x2f')]));if(_0x59bb3f[_0xf2a0('0x2d')][_0xf2a0('0x39')]){_0x2cf4e5[_0xf2a0('0x36')]=_[_0xf2a0('0x3a')](_0x2cf4e5['where'],{'$or':_['map'](_0x2cf4e5[_0xf2a0('0x31')],function(_0x4c721f){var _0x432110={};_0x432110[_0x4c721f]={'$like':'%'+_0x59bb3f[_0xf2a0('0x2d')][_0xf2a0('0x39')]+'%'};return _0x432110;})});}_0x2cf4e5=_[_0xf2a0('0x3a')]({},_0x2cf4e5,_0x59bb3f[_0xf2a0('0x3b')]);return _0x1eec3a[_0xf2a0('0x4c')](_0x2cf4e5);}})[_0xf2a0('0x24')](function(_0x2b85f6){if(_0x2b85f6){_0x5e304f=_0x2b85f6[_0xf2a0('0x41')];if(!_0x59bb3f['query'][_0xf2a0('0x4b')](_0xf2a0('0x33'))){_0x2cf4e5[_0xf2a0('0x1d')]=qs[_0xf2a0('0x1d')](_0x59bb3f[_0xf2a0('0x2d')][_0xf2a0('0x1d')]);_0x2cf4e5[_0xf2a0('0x1c')]=qs[_0xf2a0('0x1c')](_0x59bb3f[_0xf2a0('0x2d')][_0xf2a0('0x1c')]);}return _0x1eec3a['getDescriptions'](_0x2cf4e5);}})[_0xf2a0('0x24')](function(_0x3ac5b1){if(_0x3ac5b1){return _0x3ac5b1?{'count':_0x5e304f,'rows':_0x3ac5b1}:null;}})['then'](respondWithResult(_0x22a0c2,null))[_0xf2a0('0x3e')](handleError(_0x22a0c2,null));};
\ No newline at end of file
+var _0xff9d=['getDescriptions','eml-format','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','lodash','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','Content-Range','json','reject','save','update','then','end','error','stack','name','index','map','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','where','filters','merge','filter','options','ZohoConfiguration','includeAll','include','findAll','rows','catch','show','params','create','body','find','destroy','getFields','findOne','ZohoField','length','nolimit','getSubjects','pick'];(function(_0xbaa248,_0x13a188){var _0x49ebdf=function(_0x842126){while(--_0x842126){_0xbaa248['push'](_0xbaa248['shift']());}};_0x49ebdf(++_0x13a188);}(_0xff9d,0xe2));var _0xdff9=function(_0x58cbe3,_0x2638c9){_0x58cbe3=_0x58cbe3-0x0;var _0x922098=_0xff9d[_0x58cbe3];return _0x922098;};'use strict';var emlformat=require(_0xdff9('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xdff9('0x1'));var rp=require(_0xdff9('0x2'));var moment=require(_0xdff9('0x3'));var BPromise=require(_0xdff9('0x4'));var Mustache=require('mustache');var util=require(_0xdff9('0x5'));var path=require('path');var sox=require(_0xdff9('0x6'));var csv=require(_0xdff9('0x7'));var ejs=require(_0xdff9('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdff9('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xdff9('0xa'));var deskjs=require(_0xdff9('0xb'));var toCsv=require(_0xdff9('0x7'));var querystring=require('querystring');var Papa=require(_0xdff9('0xc'));var Redis=require(_0xdff9('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xdff9('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdff9('0xf'));var logger=require(_0xdff9('0x10'))('api');var utils=require(_0xdff9('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xdff9('0x12'));var db=require(_0xdff9('0x13'))['db'];function respondWithStatusCode(_0xa4635,_0x19919e){_0x19919e=_0x19919e||0xcc;return function(_0x37c005){if(_0x37c005){return _0xa4635[_0xdff9('0x14')](_0x19919e);}return _0xa4635[_0xdff9('0x15')](_0x19919e)['end']();};}function respondWithResult(_0x5a50a8,_0x129bd9){_0x129bd9=_0x129bd9||0xc8;return function(_0x3c6e1b){if(_0x3c6e1b){return _0x5a50a8[_0xdff9('0x15')](_0x129bd9)['json'](_0x3c6e1b);}};}function respondWithFilteredResult(_0x2b21b9,_0x54d125){return function(_0xc48d86){if(_0xc48d86){var _0x50b379=typeof _0x54d125[_0xdff9('0x16')]===_0xdff9('0x17')&&typeof _0x54d125['limit']===_0xdff9('0x17');var _0x464397=_0xc48d86[_0xdff9('0x18')];var _0x488dbb=_0x50b379?0x0:_0x54d125['offset'];var _0x57f131=_0x50b379?_0xc48d86[_0xdff9('0x18')]:_0x54d125[_0xdff9('0x16')]+_0x54d125[_0xdff9('0x19')];var _0x12825c;if(_0x57f131>=_0x464397){_0x57f131=_0x464397;_0x12825c=0xc8;}else{_0x12825c=0xce;}_0x2b21b9[_0xdff9('0x15')](_0x12825c);return _0x2b21b9['set'](_0xdff9('0x1a'),_0x488dbb+'-'+_0x57f131+'/'+_0x464397)[_0xdff9('0x1b')](_0xc48d86);}return null;};}function patchUpdates(_0x1719e0){return function(_0x2ec1c0){try{jsonpatch['apply'](_0x2ec1c0,_0x1719e0,!![]);}catch(_0x1116e2){return BPromise[_0xdff9('0x1c')](_0x1116e2);}return _0x2ec1c0[_0xdff9('0x1d')]();};}function saveUpdates(_0x3c7808,_0x286925){return function(_0x43c4ae){if(_0x43c4ae){return _0x43c4ae[_0xdff9('0x1e')](_0x3c7808)[_0xdff9('0x1f')](function(_0x44d2b1){return _0x44d2b1;});}return null;};}function removeEntity(_0x3e4bef,_0xe61ed5){return function(_0x3929c3){if(_0x3929c3){return _0x3929c3['destroy']()[_0xdff9('0x1f')](function(){_0x3e4bef[_0xdff9('0x15')](0xcc)[_0xdff9('0x20')]();});}};}function handleEntityNotFound(_0x3c1384,_0x94050e){return function(_0x598d0e){if(!_0x598d0e){_0x3c1384[_0xdff9('0x14')](0x194);}return _0x598d0e;};}function handleError(_0x5ba6ea,_0x578d9d){_0x578d9d=_0x578d9d||0x1f4;return function(_0x210786){logger[_0xdff9('0x21')](_0x210786[_0xdff9('0x22')]);if(_0x210786[_0xdff9('0x23')]){delete _0x210786[_0xdff9('0x23')];}_0x5ba6ea['status'](_0x578d9d)['send'](_0x210786);};}exports[_0xdff9('0x24')]=function(_0x2fa85c,_0x13f640){var _0x4acdd7={},_0x34c136={},_0x1a37d3={'count':0x0,'rows':[]};var _0x2e1f8a=_[_0xdff9('0x25')](db['ZohoConfiguration'][_0xdff9('0x26')],function(_0x272883){return{'name':_0x272883['fieldName'],'type':_0x272883[_0xdff9('0x27')][_0xdff9('0x28')]};});_0x34c136[_0xdff9('0x29')]=_[_0xdff9('0x25')](_0x2e1f8a,_0xdff9('0x23'));_0x34c136[_0xdff9('0x2a')]=_[_0xdff9('0x2b')](_0x2fa85c[_0xdff9('0x2a')]);_0x34c136['filters']=_[_0xdff9('0x2c')](_0x34c136[_0xdff9('0x29')],_0x34c136[_0xdff9('0x2a')]);_0x4acdd7[_0xdff9('0x2d')]=_[_0xdff9('0x2c')](_0x34c136[_0xdff9('0x29')],qs[_0xdff9('0x2e')](_0x2fa85c[_0xdff9('0x2a')][_0xdff9('0x2e')]));_0x4acdd7['attributes']=_0x4acdd7['attributes']['length']?_0x4acdd7['attributes']:_0x34c136[_0xdff9('0x29')];if(!_0x2fa85c[_0xdff9('0x2a')][_0xdff9('0x2f')]('nolimit')){_0x4acdd7[_0xdff9('0x19')]=qs[_0xdff9('0x19')](_0x2fa85c[_0xdff9('0x2a')][_0xdff9('0x19')]);_0x4acdd7[_0xdff9('0x16')]=qs[_0xdff9('0x16')](_0x2fa85c[_0xdff9('0x2a')][_0xdff9('0x16')]);}_0x4acdd7[_0xdff9('0x30')]=qs[_0xdff9('0x31')](_0x2fa85c[_0xdff9('0x2a')]['sort']);_0x4acdd7[_0xdff9('0x32')]=qs[_0xdff9('0x33')](_['pick'](_0x2fa85c['query'],_0x34c136['filters']),_0x2e1f8a);if(_0x2fa85c[_0xdff9('0x2a')]['filter']){_0x4acdd7[_0xdff9('0x32')]=_[_0xdff9('0x34')](_0x4acdd7[_0xdff9('0x32')],{'$or':_['map'](_0x2e1f8a,function(_0x79149f){if(_0x79149f['type']!=='VIRTUAL'){var _0x5e72d1={};_0x5e72d1[_0x79149f[_0xdff9('0x23')]]={'$like':'%'+_0x2fa85c[_0xdff9('0x2a')][_0xdff9('0x35')]+'%'};return _0x5e72d1;}})});}_0x4acdd7=_[_0xdff9('0x34')]({},_0x4acdd7,_0x2fa85c[_0xdff9('0x36')]);var _0x58f030={'where':_0x4acdd7['where']};return db[_0xdff9('0x37')][_0xdff9('0x18')](_0x58f030)['then'](function(_0x3e7e41){_0x1a37d3[_0xdff9('0x18')]=_0x3e7e41;if(_0x2fa85c[_0xdff9('0x2a')][_0xdff9('0x38')]){_0x4acdd7[_0xdff9('0x39')]=[{'all':!![]}];}return db[_0xdff9('0x37')][_0xdff9('0x3a')](_0x4acdd7);})[_0xdff9('0x1f')](function(_0x14a1b2){_0x1a37d3[_0xdff9('0x3b')]=_0x14a1b2;return _0x1a37d3;})[_0xdff9('0x1f')](respondWithFilteredResult(_0x13f640,_0x4acdd7))[_0xdff9('0x3c')](handleError(_0x13f640,null));};exports[_0xdff9('0x3d')]=function(_0x32c2c0,_0x2dce8c){var _0x5d231b={'raw':![],'where':{'id':_0x32c2c0[_0xdff9('0x3e')]['id']}},_0xaed3ea={};_0xaed3ea[_0xdff9('0x29')]=_['keys'](db[_0xdff9('0x37')][_0xdff9('0x26')]);_0xaed3ea['query']=_[_0xdff9('0x2b')](_0x32c2c0[_0xdff9('0x2a')]);_0xaed3ea[_0xdff9('0x33')]=_['intersection'](_0xaed3ea[_0xdff9('0x29')],_0xaed3ea[_0xdff9('0x2a')]);_0x5d231b[_0xdff9('0x2d')]=_['intersection'](_0xaed3ea[_0xdff9('0x29')],qs[_0xdff9('0x2e')](_0x32c2c0['query'][_0xdff9('0x2e')]));_0x5d231b[_0xdff9('0x2d')]=_0x5d231b[_0xdff9('0x2d')]['length']?_0x5d231b['attributes']:_0xaed3ea[_0xdff9('0x29')];if(_0x32c2c0[_0xdff9('0x2a')][_0xdff9('0x38')]){_0x5d231b[_0xdff9('0x39')]=[{'all':!![]}];}_0x5d231b=_[_0xdff9('0x34')]({},_0x5d231b,_0x32c2c0[_0xdff9('0x36')]);return db['ZohoConfiguration']['find'](_0x5d231b)['then'](handleEntityNotFound(_0x2dce8c,null))[_0xdff9('0x1f')](respondWithResult(_0x2dce8c,null))[_0xdff9('0x3c')](handleError(_0x2dce8c,null));};exports[_0xdff9('0x3f')]=function(_0x4ec7ae,_0x3e9d73){return db['ZohoConfiguration'][_0xdff9('0x3f')](_0x4ec7ae[_0xdff9('0x40')],{})[_0xdff9('0x1f')](respondWithResult(_0x3e9d73,0xc9))[_0xdff9('0x3c')](handleError(_0x3e9d73,null));};exports[_0xdff9('0x1e')]=function(_0x2f23c9,_0x49a947){if(_0x2f23c9[_0xdff9('0x40')]['id']){delete _0x2f23c9[_0xdff9('0x40')]['id'];}return db[_0xdff9('0x37')][_0xdff9('0x41')]({'where':{'id':_0x2f23c9['params']['id']}})[_0xdff9('0x1f')](handleEntityNotFound(_0x49a947,null))[_0xdff9('0x1f')](saveUpdates(_0x2f23c9[_0xdff9('0x40')],null))['then'](respondWithResult(_0x49a947,null))[_0xdff9('0x3c')](handleError(_0x49a947,null));};exports[_0xdff9('0x42')]=function(_0x45aa6f,_0x2b0d21){return db[_0xdff9('0x37')]['find']({'where':{'id':_0x45aa6f['params']['id']}})[_0xdff9('0x1f')](handleEntityNotFound(_0x2b0d21,null))[_0xdff9('0x1f')](removeEntity(_0x2b0d21,null))[_0xdff9('0x3c')](handleError(_0x2b0d21,null));};exports[_0xdff9('0x43')]=function(_0x5e5491,_0x274a66,_0x560907){var _0x93ebd0={};var _0x37fd93={};var _0x54adcf;var _0x500bfb;return db[_0xdff9('0x37')][_0xdff9('0x44')]({'where':{'id':_0x5e5491['params']['id']}})[_0xdff9('0x1f')](handleEntityNotFound(_0x274a66,null))[_0xdff9('0x1f')](function(_0x2bb5e3){if(_0x2bb5e3){_0x54adcf=_0x2bb5e3;_0x37fd93[_0xdff9('0x29')]=_['keys'](db[_0xdff9('0x45')][_0xdff9('0x26')]);_0x37fd93[_0xdff9('0x2a')]=_[_0xdff9('0x2b')](_0x5e5491[_0xdff9('0x2a')]);_0x37fd93[_0xdff9('0x33')]=_[_0xdff9('0x2c')](_0x37fd93['model'],_0x37fd93[_0xdff9('0x2a')]);_0x93ebd0[_0xdff9('0x2d')]=_['intersection'](_0x37fd93[_0xdff9('0x29')],qs['fields'](_0x5e5491[_0xdff9('0x2a')][_0xdff9('0x2e')]));_0x93ebd0[_0xdff9('0x2d')]=_0x93ebd0[_0xdff9('0x2d')][_0xdff9('0x46')]?_0x93ebd0[_0xdff9('0x2d')]:_0x37fd93['model'];_0x93ebd0[_0xdff9('0x30')]=qs[_0xdff9('0x31')](_0x5e5491[_0xdff9('0x2a')][_0xdff9('0x31')]);_0x93ebd0[_0xdff9('0x32')]=qs[_0xdff9('0x33')](_['pick'](_0x5e5491[_0xdff9('0x2a')],_0x37fd93['filters']));if(_0x5e5491[_0xdff9('0x2a')][_0xdff9('0x35')]){_0x93ebd0[_0xdff9('0x32')]=_[_0xdff9('0x34')](_0x93ebd0['where'],{'$or':_[_0xdff9('0x25')](_0x93ebd0[_0xdff9('0x2d')],function(_0x728db8){var _0x42545e={};_0x42545e[_0x728db8]={'$like':'%'+_0x5e5491[_0xdff9('0x2a')][_0xdff9('0x35')]+'%'};return _0x42545e;})});}_0x93ebd0=_[_0xdff9('0x34')]({},_0x93ebd0,_0x5e5491[_0xdff9('0x36')]);return _0x54adcf[_0xdff9('0x43')](_0x93ebd0);}})[_0xdff9('0x1f')](function(_0x213b0a){if(_0x213b0a){_0x500bfb=_0x213b0a[_0xdff9('0x46')];if(!_0x5e5491[_0xdff9('0x2a')][_0xdff9('0x2f')](_0xdff9('0x47'))){_0x93ebd0[_0xdff9('0x19')]=qs['limit'](_0x5e5491[_0xdff9('0x2a')][_0xdff9('0x19')]);_0x93ebd0[_0xdff9('0x16')]=qs[_0xdff9('0x16')](_0x5e5491[_0xdff9('0x2a')][_0xdff9('0x16')]);}return _0x54adcf[_0xdff9('0x43')](_0x93ebd0);}})[_0xdff9('0x1f')](function(_0x430e3a){if(_0x430e3a){return _0x430e3a?{'count':_0x500bfb,'rows':_0x430e3a}:null;}})[_0xdff9('0x1f')](respondWithResult(_0x274a66,null))['catch'](handleError(_0x274a66,null));};exports[_0xdff9('0x48')]=function(_0x551300,_0xad69c3,_0x415c67){var _0x4794cb={};var _0x51761f={};var _0x60d68d;var _0x3e7eae;return db[_0xdff9('0x37')][_0xdff9('0x44')]({'where':{'id':_0x551300[_0xdff9('0x3e')]['id']}})[_0xdff9('0x1f')](handleEntityNotFound(_0xad69c3,null))['then'](function(_0x1a86f3){if(_0x1a86f3){_0x60d68d=_0x1a86f3;_0x51761f[_0xdff9('0x29')]=_[_0xdff9('0x2b')](db[_0xdff9('0x45')][_0xdff9('0x26')]);_0x51761f[_0xdff9('0x2a')]=_[_0xdff9('0x2b')](_0x551300['query']);_0x51761f[_0xdff9('0x33')]=_['intersection'](_0x51761f['model'],_0x51761f[_0xdff9('0x2a')]);_0x4794cb[_0xdff9('0x2d')]=_[_0xdff9('0x2c')](_0x51761f['model'],qs['fields'](_0x551300[_0xdff9('0x2a')][_0xdff9('0x2e')]));_0x4794cb[_0xdff9('0x2d')]=_0x4794cb[_0xdff9('0x2d')]['length']?_0x4794cb['attributes']:_0x51761f['model'];_0x4794cb[_0xdff9('0x30')]=qs[_0xdff9('0x31')](_0x551300[_0xdff9('0x2a')][_0xdff9('0x31')]);_0x4794cb['where']=qs[_0xdff9('0x33')](_[_0xdff9('0x49')](_0x551300[_0xdff9('0x2a')],_0x51761f['filters']));if(_0x551300[_0xdff9('0x2a')][_0xdff9('0x35')]){_0x4794cb['where']=_[_0xdff9('0x34')](_0x4794cb['where'],{'$or':_[_0xdff9('0x25')](_0x4794cb[_0xdff9('0x2d')],function(_0x38b249){var _0x21638a={};_0x21638a[_0x38b249]={'$like':'%'+_0x551300[_0xdff9('0x2a')][_0xdff9('0x35')]+'%'};return _0x21638a;})});}_0x4794cb=_['merge']({},_0x4794cb,_0x551300[_0xdff9('0x36')]);return _0x60d68d[_0xdff9('0x48')](_0x4794cb);}})[_0xdff9('0x1f')](function(_0x3694a1){if(_0x3694a1){_0x3e7eae=_0x3694a1[_0xdff9('0x46')];if(!_0x551300[_0xdff9('0x2a')]['hasOwnProperty'](_0xdff9('0x47'))){_0x4794cb[_0xdff9('0x19')]=qs['limit'](_0x551300[_0xdff9('0x2a')][_0xdff9('0x19')]);_0x4794cb[_0xdff9('0x16')]=qs[_0xdff9('0x16')](_0x551300[_0xdff9('0x2a')]['offset']);}return _0x60d68d[_0xdff9('0x48')](_0x4794cb);}})[_0xdff9('0x1f')](function(_0x2336ff){if(_0x2336ff){return _0x2336ff?{'count':_0x3e7eae,'rows':_0x2336ff}:null;}})[_0xdff9('0x1f')](respondWithResult(_0xad69c3,null))['catch'](handleError(_0xad69c3,null));};exports[_0xdff9('0x4a')]=function(_0x329d46,_0x40c8ec,_0x1f046b){var _0x602049={};var _0x2a21e8={};var _0x5ab5be;var _0xc36d40;return db[_0xdff9('0x37')]['findOne']({'where':{'id':_0x329d46[_0xdff9('0x3e')]['id']}})[_0xdff9('0x1f')](handleEntityNotFound(_0x40c8ec,null))[_0xdff9('0x1f')](function(_0x1788dc){if(_0x1788dc){_0x5ab5be=_0x1788dc;_0x2a21e8[_0xdff9('0x29')]=_[_0xdff9('0x2b')](db[_0xdff9('0x45')]['rawAttributes']);_0x2a21e8[_0xdff9('0x2a')]=_['keys'](_0x329d46[_0xdff9('0x2a')]);_0x2a21e8['filters']=_[_0xdff9('0x2c')](_0x2a21e8[_0xdff9('0x29')],_0x2a21e8[_0xdff9('0x2a')]);_0x602049[_0xdff9('0x2d')]=_['intersection'](_0x2a21e8[_0xdff9('0x29')],qs[_0xdff9('0x2e')](_0x329d46[_0xdff9('0x2a')][_0xdff9('0x2e')]));_0x602049['attributes']=_0x602049[_0xdff9('0x2d')][_0xdff9('0x46')]?_0x602049[_0xdff9('0x2d')]:_0x2a21e8[_0xdff9('0x29')];_0x602049['order']=qs[_0xdff9('0x31')](_0x329d46[_0xdff9('0x2a')][_0xdff9('0x31')]);_0x602049[_0xdff9('0x32')]=qs[_0xdff9('0x33')](_[_0xdff9('0x49')](_0x329d46[_0xdff9('0x2a')],_0x2a21e8[_0xdff9('0x33')]));if(_0x329d46[_0xdff9('0x2a')]['filter']){_0x602049['where']=_['merge'](_0x602049[_0xdff9('0x32')],{'$or':_[_0xdff9('0x25')](_0x602049[_0xdff9('0x2d')],function(_0x2ed4c7){var _0x5a9a04={};_0x5a9a04[_0x2ed4c7]={'$like':'%'+_0x329d46[_0xdff9('0x2a')]['filter']+'%'};return _0x5a9a04;})});}_0x602049=_[_0xdff9('0x34')]({},_0x602049,_0x329d46[_0xdff9('0x36')]);return _0x5ab5be[_0xdff9('0x4a')](_0x602049);}})[_0xdff9('0x1f')](function(_0x1b5785){if(_0x1b5785){_0xc36d40=_0x1b5785[_0xdff9('0x46')];if(!_0x329d46[_0xdff9('0x2a')][_0xdff9('0x2f')](_0xdff9('0x47'))){_0x602049[_0xdff9('0x19')]=qs['limit'](_0x329d46[_0xdff9('0x2a')][_0xdff9('0x19')]);_0x602049['offset']=qs[_0xdff9('0x16')](_0x329d46[_0xdff9('0x2a')]['offset']);}return _0x5ab5be['getDescriptions'](_0x602049);}})[_0xdff9('0x1f')](function(_0x2e2d59){if(_0x2e2d59){return _0x2e2d59?{'count':_0xc36d40,'rows':_0x2e2d59}:null;}})[_0xdff9('0x1f')](respondWithResult(_0x40c8ec,null))[_0xdff9('0x3c')](handleError(_0x40c8ec,null));};
\ No newline at end of file
index 5070b0f..614c441 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ef6=['ZohoConfiguration','lodash','../../config/logger','api','moment','bluebird','request-promise','path','exports','define'];(function(_0x59dde7,_0x4ae31e){var _0x418de5=function(_0x16fe5a){while(--_0x16fe5a){_0x59dde7['push'](_0x59dde7['shift']());}};_0x418de5(++_0x4ae31e);}(_0x5ef6,0x1cd));var _0x65ef=function(_0x5a5395,_0x5361f6){_0x5a5395=_0x5a5395-0x0;var _0x4da43d=_0x5ef6[_0x5a5395];return _0x4da43d;};'use strict';var _=require(_0x65ef('0x0'));var util=require('util');var logger=require(_0x65ef('0x1'))(_0x65ef('0x2'));var moment=require(_0x65ef('0x3'));var BPromise=require(_0x65ef('0x4'));var rp=require(_0x65ef('0x5'));var fs=require('fs');var path=require(_0x65ef('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intZohoConfiguration.attributes');module[_0x65ef('0x7')]=function(_0x4d6abe,_0x1563dc){return _0x4d6abe[_0x65ef('0x8')](_0x65ef('0x9'),attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4de8=['define','ZohoConfiguration','int_zoho_configurations','lodash','../../config/logger','api','request-promise','rimraf','./intZohoConfiguration.attributes'];(function(_0x227774,_0x37bc98){var _0x51c5fd=function(_0x3bdc23){while(--_0x3bdc23){_0x227774['push'](_0x227774['shift']());}};_0x51c5fd(++_0x37bc98);}(_0x4de8,0x1d7));var _0x84de=function(_0x44d499,_0x31af8c){_0x44d499=_0x44d499-0x0;var _0x5f59bf=_0x4de8[_0x44d499];return _0x5f59bf;};'use strict';var _=require(_0x84de('0x0'));var util=require('util');var logger=require(_0x84de('0x1'))(_0x84de('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x84de('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x84de('0x4'));var config=require('../../config/environment');var attributes=require(_0x84de('0x5'));module['exports']=function(_0x545161,_0x53a3c6){return _0x545161[_0x84de('0x6')](_0x84de('0x7'),attributes,{'tableName':_0x84de('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 94ab75e..72d38c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52b1=['jayson/promise','http','request','info','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','message','error','ZohoConfiguration,\x20%s,\x20%s','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x3b5ab7,_0x2bd0de){var _0x370f11=function(_0x1d9cd7){while(--_0x1d9cd7){_0x3b5ab7['push'](_0x3b5ab7['shift']());}};_0x370f11(++_0x2bd0de);}(_0x52b1,0x125));var _0x152b=function(_0x10ba27,_0x26632e){_0x10ba27=_0x10ba27-0x0;var _0xb05715=_0x52b1[_0x10ba27];return _0xb05715;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x152b('0x0'));var BPromise=require(_0x152b('0x1'));var rs=require(_0x152b('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x152b('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x152b('0x4'))(_0x152b('0x5'));var config=require(_0x152b('0x6'));var jayson=require(_0x152b('0x7'));var client=jayson['client'][_0x152b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2dad3d,_0x1bd01b,_0x2bc6b9){return new BPromise(function(_0x292725,_0xadccab){return client[_0x152b('0x9')](_0x2dad3d,_0x2bc6b9)['then'](function(_0x3149ad){logger[_0x152b('0xa')]('ZohoConfiguration,\x20%s,\x20%s',_0x1bd01b,_0x152b('0xb'));logger[_0x152b('0xc')](_0x152b('0xd'),_0x1bd01b,_0x152b('0xb'),JSON[_0x152b('0xe')](_0x3149ad));if(_0x3149ad['error']){if(_0x3149ad['error']['code']===0x1f4){logger['error']('ZohoConfiguration,\x20%s,\x20%s',_0x1bd01b,_0x3149ad['error'][_0x152b('0xf')]);return _0xadccab(_0x3149ad[_0x152b('0x10')]['message']);}logger[_0x152b('0x10')](_0x152b('0x11'),_0x1bd01b,_0x3149ad[_0x152b('0x10')][_0x152b('0xf')]);return _0x292725(_0x3149ad[_0x152b('0x10')][_0x152b('0xf')]);}else{logger['info']('ZohoConfiguration,\x20%s,\x20%s',_0x1bd01b,_0x152b('0xb'));_0x292725(_0x3149ad[_0x152b('0x12')][_0x152b('0xf')]);}})[_0x152b('0x13')](function(_0x210bde){logger[_0x152b('0x10')](_0x152b('0x11'),_0x1bd01b,_0x210bde);_0xadccab(_0x210bde);});});}
\ No newline at end of file
+var _0x0ab3=['moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','util'];(function(_0x56fb73,_0x491492){var _0xa9dd3=function(_0x3411dc){while(--_0x3411dc){_0x56fb73['push'](_0x56fb73['shift']());}};_0xa9dd3(++_0x491492);}(_0x0ab3,0x1e2));var _0x30ab=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x0ab3[_0x53ccf2];return _0x5a2964;};'use strict';var _=require(_0x30ab('0x0'));var util=require(_0x30ab('0x1'));var moment=require(_0x30ab('0x2'));var BPromise=require(_0x30ab('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x30ab('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x30ab('0x5'));var logger=require(_0x30ab('0x6'))('rpc');var config=require(_0x30ab('0x7'));var jayson=require(_0x30ab('0x8'));var client=jayson[_0x30ab('0x9')][_0x30ab('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4d846f,_0x23e7eb,_0x1c6911){return new BPromise(function(_0x344974,_0x1db23c){return client[_0x30ab('0xb')](_0x4d846f,_0x1c6911)['then'](function(_0x50595d){logger['info'](_0x30ab('0xc'),_0x23e7eb,_0x30ab('0xd'));logger[_0x30ab('0xe')](_0x30ab('0xf'),_0x23e7eb,_0x30ab('0xd'),JSON['stringify'](_0x50595d));if(_0x50595d[_0x30ab('0x10')]){if(_0x50595d[_0x30ab('0x10')][_0x30ab('0x11')]===0x1f4){logger[_0x30ab('0x10')](_0x30ab('0xc'),_0x23e7eb,_0x50595d[_0x30ab('0x10')][_0x30ab('0x12')]);return _0x1db23c(_0x50595d[_0x30ab('0x10')][_0x30ab('0x12')]);}logger[_0x30ab('0x10')](_0x30ab('0xc'),_0x23e7eb,_0x50595d['error'][_0x30ab('0x12')]);return _0x344974(_0x50595d[_0x30ab('0x10')][_0x30ab('0x12')]);}else{logger[_0x30ab('0x13')](_0x30ab('0xc'),_0x23e7eb,_0x30ab('0xd'));_0x344974(_0x50595d[_0x30ab('0x14')][_0x30ab('0x12')]);}})[_0x30ab('0x15')](function(_0x500115){logger[_0x30ab('0x10')](_0x30ab('0xc'),_0x23e7eb,_0x500115);_0x1db23c(_0x500115);});});}
\ No newline at end of file
index 62f9dae..79b51f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x770e=['destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update'];(function(_0x4852ee,_0x34b103){var _0x45021e=function(_0x5c3f82){while(--_0x5c3f82){_0x4852ee['push'](_0x4852ee['shift']());}};_0x45021e(++_0x34b103);}(_0x770e,0xc9));var _0xe770=function(_0x28d18d,_0x55896b){_0x28d18d=_0x28d18d-0x0;var _0x470640=_0x770e[_0x28d18d];return _0x470640;};'use strict';var multer=require(_0xe770('0x0'));var util=require(_0xe770('0x1'));var path=require(_0xe770('0x2'));var timeout=require('connect-timeout');var express=require(_0xe770('0x3'));var router=express[_0xe770('0x4')]();var fs_extra=require(_0xe770('0x5'));var auth=require(_0xe770('0x6'));var interaction=require(_0xe770('0x7'));var config=require(_0xe770('0x8'));var controller=require(_0xe770('0x9'));router[_0xe770('0xa')]('/',auth[_0xe770('0xb')](),controller[_0xe770('0xc')]);router['get'](_0xe770('0xd'),auth['isAuthenticated'](),controller[_0xe770('0xe')]);router[_0xe770('0xf')]('/',auth['isAuthenticated'](),controller[_0xe770('0x10')]);router[_0xe770('0x11')](_0xe770('0xd'),auth[_0xe770('0xb')](),controller[_0xe770('0x12')]);router['delete'](_0xe770('0xd'),auth['isAuthenticated'](),controller[_0xe770('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x2f68=['show','post','create','put','update','delete','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2f68,0x14b));var _0x82f6=function(_0x334e55,_0x283d81){_0x334e55=_0x334e55-0x0;var _0x558d79=_0x2f68[_0x334e55];return _0x558d79;};'use strict';var multer=require(_0x82f6('0x0'));var util=require(_0x82f6('0x1'));var path=require(_0x82f6('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x82f6('0x3')]();var fs_extra=require(_0x82f6('0x4'));var auth=require(_0x82f6('0x5'));var interaction=require(_0x82f6('0x6'));var config=require(_0x82f6('0x7'));var controller=require('./intZohoField.controller');router[_0x82f6('0x8')]('/',auth[_0x82f6('0x9')](),controller['index']);router[_0x82f6('0x8')](_0x82f6('0xa'),auth[_0x82f6('0x9')](),controller[_0x82f6('0xb')]);router[_0x82f6('0xc')]('/',auth[_0x82f6('0x9')](),controller[_0x82f6('0xd')]);router[_0x82f6('0xe')](_0x82f6('0xa'),auth['isAuthenticated'](),controller[_0x82f6('0xf')]);router[_0x82f6('0x10')](_0x82f6('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x82f6('0x11')]=router;
\ No newline at end of file
index cc77052..91fe92c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82f3=['STRING','BOOLEAN','sequelize','exports','variable','customVariable','keyValue','picklist','string'];(function(_0x3f8a03,_0x319b9c){var _0x147fb2=function(_0x523c1c){while(--_0x523c1c){_0x3f8a03['push'](_0x3f8a03['shift']());}};_0x147fb2(++_0x319b9c);}(_0x82f3,0xad));var _0x382f=function(_0x3fe15f,_0x35b2f8){_0x3fe15f=_0x3fe15f-0x0;var _0x27c596=_0x82f3[_0x3fe15f];return _0x27c596;};'use strict';var Sequelize=require(_0x382f('0x0'));module[_0x382f('0x1')]={'type':{'type':Sequelize['ENUM']('string',_0x382f('0x2'),_0x382f('0x3'),_0x382f('0x4'),_0x382f('0x5')),'defaultValue':_0x382f('0x6')},'content':{'type':Sequelize[_0x382f('0x7')]},'key':{'type':Sequelize[_0x382f('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0x382f('0x6'),_0x382f('0x2'),_0x382f('0x3'))},'keyContent':{'type':Sequelize[_0x382f('0x7')]},'idField':{'type':Sequelize[_0x382f('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x382f('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1c94=['keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable'];(function(_0x5e217c,_0x30b7bb){var _0x31844d=function(_0x3808b4){while(--_0x3808b4){_0x5e217c['push'](_0x5e217c['shift']());}};_0x31844d(++_0x30b7bb);}(_0x1c94,0x90));var _0x41c9=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x1c94[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x41c9('0x0'));module[_0x41c9('0x1')]={'type':{'type':Sequelize[_0x41c9('0x2')](_0x41c9('0x3'),_0x41c9('0x4'),_0x41c9('0x5'),_0x41c9('0x6'),_0x41c9('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0x41c9('0x8')]},'key':{'type':Sequelize[_0x41c9('0x8')]},'keyType':{'type':Sequelize[_0x41c9('0x2')](_0x41c9('0x3'),_0x41c9('0x4'),_0x41c9('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x41c9('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x41c9('0x8')]}};
\ No newline at end of file
index 99c249b..554f7bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef82=['options','include','catch','show','params','intersection','includeAll','find','create','body','rimraf','zip-dir','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end','error','stack','name','send','ZohoField','rawAttributes','model','map','query','keys','filters','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL'];(function(_0x811d00,_0x1fbccc){var _0x2a1975=function(_0x23a6ca){while(--_0x23a6ca){_0x811d00['push'](_0x811d00['shift']());}};_0x2a1975(++_0x1fbccc);}(_0xef82,0x98));var _0x2ef8=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0xef82[_0x36ed48];return _0x51c63a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2ef8('0x0'));var zipdir=require(_0x2ef8('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2ef8('0x2'));var Mustache=require(_0x2ef8('0x3'));var util=require(_0x2ef8('0x4'));var path=require(_0x2ef8('0x5'));var sox=require('sox');var csv=require(_0x2ef8('0x6'));var ejs=require(_0x2ef8('0x7'));var fs=require('fs');var fs_extra=require(_0x2ef8('0x8'));var _=require(_0x2ef8('0x9'));var squel=require(_0x2ef8('0xa'));var crypto=require('crypto');var jsforce=require(_0x2ef8('0xb'));var deskjs=require(_0x2ef8('0xc'));var toCsv=require(_0x2ef8('0x6'));var querystring=require(_0x2ef8('0xd'));var Papa=require(_0x2ef8('0xe'));var Redis=require(_0x2ef8('0xf'));var authService=require(_0x2ef8('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x2ef8('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2ef8('0x12'))(_0x2ef8('0x13'));var utils=require(_0x2ef8('0x14'));var config=require(_0x2ef8('0x15'));var licenseUtil=require(_0x2ef8('0x16'));var db=require(_0x2ef8('0x17'))['db'];function respondWithStatusCode(_0xedab2f,_0x17ca04){_0x17ca04=_0x17ca04||0xcc;return function(_0x3ea033){if(_0x3ea033){return _0xedab2f[_0x2ef8('0x18')](_0x17ca04);}return _0xedab2f[_0x2ef8('0x19')](_0x17ca04)['end']();};}function respondWithResult(_0x45534c,_0x1b6fe6){_0x1b6fe6=_0x1b6fe6||0xc8;return function(_0x49a3e6){if(_0x49a3e6){return _0x45534c[_0x2ef8('0x19')](_0x1b6fe6)['json'](_0x49a3e6);}};}function respondWithFilteredResult(_0x170532,_0x259107){return function(_0x24e463){if(_0x24e463){var _0x3b7908=typeof _0x259107[_0x2ef8('0x1a')]===_0x2ef8('0x1b')&&typeof _0x259107[_0x2ef8('0x1c')]===_0x2ef8('0x1b');var _0x193ab3=_0x24e463[_0x2ef8('0x1d')];var _0xd8570c=_0x3b7908?0x0:_0x259107[_0x2ef8('0x1a')];var _0x11f874=_0x3b7908?_0x24e463[_0x2ef8('0x1d')]:_0x259107[_0x2ef8('0x1a')]+_0x259107[_0x2ef8('0x1c')];var _0x4d7bcb;if(_0x11f874>=_0x193ab3){_0x11f874=_0x193ab3;_0x4d7bcb=0xc8;}else{_0x4d7bcb=0xce;}_0x170532[_0x2ef8('0x19')](_0x4d7bcb);return _0x170532[_0x2ef8('0x1e')](_0x2ef8('0x1f'),_0xd8570c+'-'+_0x11f874+'/'+_0x193ab3)[_0x2ef8('0x20')](_0x24e463);}return null;};}function patchUpdates(_0x5858ec){return function(_0x452d7d){try{jsonpatch[_0x2ef8('0x21')](_0x452d7d,_0x5858ec,!![]);}catch(_0x29d849){return BPromise[_0x2ef8('0x22')](_0x29d849);}return _0x452d7d[_0x2ef8('0x23')]();};}function saveUpdates(_0x70712a,_0x5389b7){return function(_0x805e13){if(_0x805e13){return _0x805e13[_0x2ef8('0x24')](_0x70712a)[_0x2ef8('0x25')](function(_0x4339b9){return _0x4339b9;});}return null;};}function removeEntity(_0x188489,_0x44b6a0){return function(_0x41bbb1){if(_0x41bbb1){return _0x41bbb1[_0x2ef8('0x26')]()['then'](function(){_0x188489[_0x2ef8('0x19')](0xcc)[_0x2ef8('0x27')]();});}};}function handleEntityNotFound(_0x1da482,_0x550a38){return function(_0x86afac){if(!_0x86afac){_0x1da482[_0x2ef8('0x18')](0x194);}return _0x86afac;};}function handleError(_0x47d0ff,_0xf1cb70){_0xf1cb70=_0xf1cb70||0x1f4;return function(_0x1357cf){logger[_0x2ef8('0x28')](_0x1357cf[_0x2ef8('0x29')]);if(_0x1357cf[_0x2ef8('0x2a')]){delete _0x1357cf[_0x2ef8('0x2a')];}_0x47d0ff['status'](_0xf1cb70)[_0x2ef8('0x2b')](_0x1357cf);};}exports['index']=function(_0x3075a9,_0x488f62){var _0x257754={},_0x347c34={},_0x95117a={'count':0x0,'rows':[]};var _0x3895b5=_['map'](db[_0x2ef8('0x2c')][_0x2ef8('0x2d')],function(_0x3025d3){return{'name':_0x3025d3['fieldName'],'type':_0x3025d3['type']['key']};});_0x347c34[_0x2ef8('0x2e')]=_[_0x2ef8('0x2f')](_0x3895b5,_0x2ef8('0x2a'));_0x347c34[_0x2ef8('0x30')]=_[_0x2ef8('0x31')](_0x3075a9[_0x2ef8('0x30')]);_0x347c34[_0x2ef8('0x32')]=_['intersection'](_0x347c34['model'],_0x347c34[_0x2ef8('0x30')]);_0x257754[_0x2ef8('0x33')]=_['intersection'](_0x347c34[_0x2ef8('0x2e')],qs[_0x2ef8('0x34')](_0x3075a9[_0x2ef8('0x30')][_0x2ef8('0x34')]));_0x257754[_0x2ef8('0x33')]=_0x257754[_0x2ef8('0x33')][_0x2ef8('0x35')]?_0x257754[_0x2ef8('0x33')]:_0x347c34[_0x2ef8('0x2e')];if(!_0x3075a9[_0x2ef8('0x30')][_0x2ef8('0x36')]('nolimit')){_0x257754[_0x2ef8('0x1c')]=qs[_0x2ef8('0x1c')](_0x3075a9[_0x2ef8('0x30')][_0x2ef8('0x1c')]);_0x257754[_0x2ef8('0x1a')]=qs[_0x2ef8('0x1a')](_0x3075a9[_0x2ef8('0x30')][_0x2ef8('0x1a')]);}_0x257754['order']=qs[_0x2ef8('0x37')](_0x3075a9[_0x2ef8('0x30')]['sort']);_0x257754[_0x2ef8('0x38')]=qs[_0x2ef8('0x32')](_[_0x2ef8('0x39')](_0x3075a9['query'],_0x347c34[_0x2ef8('0x32')]),_0x3895b5);if(_0x3075a9[_0x2ef8('0x30')][_0x2ef8('0x3a')]){_0x257754['where']=_[_0x2ef8('0x3b')](_0x257754[_0x2ef8('0x38')],{'$or':_[_0x2ef8('0x2f')](_0x3895b5,function(_0xc3f36d){if(_0xc3f36d['type']!==_0x2ef8('0x3c')){var _0x2931fb={};_0x2931fb[_0xc3f36d[_0x2ef8('0x2a')]]={'$like':'%'+_0x3075a9[_0x2ef8('0x30')][_0x2ef8('0x3a')]+'%'};return _0x2931fb;}})});}_0x257754=_[_0x2ef8('0x3b')]({},_0x257754,_0x3075a9[_0x2ef8('0x3d')]);var _0x4dcc33={'where':_0x257754[_0x2ef8('0x38')]};return db[_0x2ef8('0x2c')][_0x2ef8('0x1d')](_0x4dcc33)[_0x2ef8('0x25')](function(_0x167ca5){_0x95117a[_0x2ef8('0x1d')]=_0x167ca5;if(_0x3075a9['query']['includeAll']){_0x257754[_0x2ef8('0x3e')]=[{'all':!![]}];}return db[_0x2ef8('0x2c')]['findAll'](_0x257754);})[_0x2ef8('0x25')](function(_0x4eab79){_0x95117a['rows']=_0x4eab79;return _0x95117a;})[_0x2ef8('0x25')](respondWithFilteredResult(_0x488f62,_0x257754))[_0x2ef8('0x3f')](handleError(_0x488f62,null));};exports[_0x2ef8('0x40')]=function(_0x4b02cc,_0x371b06){var _0x17a3ed={'raw':!![],'where':{'id':_0x4b02cc[_0x2ef8('0x41')]['id']}},_0x5b7895={};_0x5b7895[_0x2ef8('0x2e')]=_[_0x2ef8('0x31')](db[_0x2ef8('0x2c')]['rawAttributes']);_0x5b7895[_0x2ef8('0x30')]=_[_0x2ef8('0x31')](_0x4b02cc['query']);_0x5b7895[_0x2ef8('0x32')]=_['intersection'](_0x5b7895[_0x2ef8('0x2e')],_0x5b7895[_0x2ef8('0x30')]);_0x17a3ed[_0x2ef8('0x33')]=_[_0x2ef8('0x42')](_0x5b7895[_0x2ef8('0x2e')],qs[_0x2ef8('0x34')](_0x4b02cc[_0x2ef8('0x30')][_0x2ef8('0x34')]));_0x17a3ed[_0x2ef8('0x33')]=_0x17a3ed['attributes']['length']?_0x17a3ed[_0x2ef8('0x33')]:_0x5b7895[_0x2ef8('0x2e')];if(_0x4b02cc[_0x2ef8('0x30')][_0x2ef8('0x43')]){_0x17a3ed[_0x2ef8('0x3e')]=[{'all':!![]}];}_0x17a3ed=_[_0x2ef8('0x3b')]({},_0x17a3ed,_0x4b02cc['options']);return db[_0x2ef8('0x2c')][_0x2ef8('0x44')](_0x17a3ed)[_0x2ef8('0x25')](handleEntityNotFound(_0x371b06,null))['then'](respondWithResult(_0x371b06,null))[_0x2ef8('0x3f')](handleError(_0x371b06,null));};exports[_0x2ef8('0x45')]=function(_0x278859,_0x2c3dd9){return db['ZohoField']['create'](_0x278859[_0x2ef8('0x46')],{})[_0x2ef8('0x25')](respondWithResult(_0x2c3dd9,0xc9))[_0x2ef8('0x3f')](handleError(_0x2c3dd9,null));};exports[_0x2ef8('0x24')]=function(_0x138319,_0x4f11f4){if(_0x138319[_0x2ef8('0x46')]['id']){delete _0x138319[_0x2ef8('0x46')]['id'];}return db[_0x2ef8('0x2c')][_0x2ef8('0x44')]({'where':{'id':_0x138319[_0x2ef8('0x41')]['id']}})[_0x2ef8('0x25')](handleEntityNotFound(_0x4f11f4,null))[_0x2ef8('0x25')](saveUpdates(_0x138319['body'],null))[_0x2ef8('0x25')](respondWithResult(_0x4f11f4,null))[_0x2ef8('0x3f')](handleError(_0x4f11f4,null));};exports[_0x2ef8('0x26')]=function(_0x540ff3,_0x18d774){return db[_0x2ef8('0x2c')]['find']({'where':{'id':_0x540ff3[_0x2ef8('0x41')]['id']}})['then'](handleEntityNotFound(_0x18d774,null))[_0x2ef8('0x25')](removeEntity(_0x18d774,null))['catch'](handleError(_0x18d774,null));};
\ No newline at end of file
+var _0x8226=['rawAttributes','include','find','create','body','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','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','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','stack','name','send','index','map','ZohoField','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','catch'];(function(_0x5ba834,_0x39a9c4){var _0x2e2795=function(_0x33a7b0){while(--_0x33a7b0){_0x5ba834['push'](_0x5ba834['shift']());}};_0x2e2795(++_0x39a9c4);}(_0x8226,0xe7));var _0x6822=function(_0x44497f,_0x528bdc){_0x44497f=_0x44497f-0x0;var _0x37a190=_0x8226[_0x44497f];return _0x37a190;};'use strict';var emlformat=require(_0x6822('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6822('0x1'));var jsonpatch=require(_0x6822('0x2'));var rp=require(_0x6822('0x3'));var moment=require(_0x6822('0x4'));var BPromise=require(_0x6822('0x5'));var Mustache=require(_0x6822('0x6'));var util=require(_0x6822('0x7'));var path=require(_0x6822('0x8'));var sox=require(_0x6822('0x9'));var csv=require(_0x6822('0xa'));var ejs=require(_0x6822('0xb'));var fs=require('fs');var fs_extra=require(_0x6822('0xc'));var _=require('lodash');var squel=require(_0x6822('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6822('0xe'));var toCsv=require(_0x6822('0xa'));var querystring=require(_0x6822('0xf'));var Papa=require(_0x6822('0x10'));var Redis=require(_0x6822('0x11'));var authService=require(_0x6822('0x12'));var qs=require(_0x6822('0x13'));var as=require(_0x6822('0x14'));var hardwareService=require(_0x6822('0x15'));var logger=require('../../config/logger')(_0x6822('0x16'));var utils=require(_0x6822('0x17'));var config=require(_0x6822('0x18'));var licenseUtil=require(_0x6822('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2cc1a0,_0x4ab306){_0x4ab306=_0x4ab306||0xcc;return function(_0x456ed5){if(_0x456ed5){return _0x2cc1a0[_0x6822('0x1a')](_0x4ab306);}return _0x2cc1a0[_0x6822('0x1b')](_0x4ab306)[_0x6822('0x1c')]();};}function respondWithResult(_0x229113,_0x1aa6dd){_0x1aa6dd=_0x1aa6dd||0xc8;return function(_0x22dc1d){if(_0x22dc1d){return _0x229113[_0x6822('0x1b')](_0x1aa6dd)[_0x6822('0x1d')](_0x22dc1d);}};}function respondWithFilteredResult(_0x1e4aac,_0x31cac4){return function(_0x188b4a){if(_0x188b4a){var _0x13f274=typeof _0x31cac4[_0x6822('0x1e')]===_0x6822('0x1f')&&typeof _0x31cac4[_0x6822('0x20')]===_0x6822('0x1f');var _0x232c28=_0x188b4a[_0x6822('0x21')];var _0x4c8380=_0x13f274?0x0:_0x31cac4[_0x6822('0x1e')];var _0x518dd5=_0x13f274?_0x188b4a[_0x6822('0x21')]:_0x31cac4[_0x6822('0x1e')]+_0x31cac4[_0x6822('0x20')];var _0x3ba2e6;if(_0x518dd5>=_0x232c28){_0x518dd5=_0x232c28;_0x3ba2e6=0xc8;}else{_0x3ba2e6=0xce;}_0x1e4aac[_0x6822('0x1b')](_0x3ba2e6);return _0x1e4aac[_0x6822('0x22')](_0x6822('0x23'),_0x4c8380+'-'+_0x518dd5+'/'+_0x232c28)['json'](_0x188b4a);}return null;};}function patchUpdates(_0x4dfe38){return function(_0x10118f){try{jsonpatch[_0x6822('0x24')](_0x10118f,_0x4dfe38,!![]);}catch(_0x1750af){return BPromise['reject'](_0x1750af);}return _0x10118f[_0x6822('0x25')]();};}function saveUpdates(_0x37caa5,_0x27b767){return function(_0x32a376){if(_0x32a376){return _0x32a376[_0x6822('0x26')](_0x37caa5)[_0x6822('0x27')](function(_0x257bec){return _0x257bec;});}return null;};}function removeEntity(_0x46661b,_0x4be594){return function(_0x1beff7){if(_0x1beff7){return _0x1beff7['destroy']()[_0x6822('0x27')](function(){_0x46661b[_0x6822('0x1b')](0xcc)[_0x6822('0x1c')]();});}};}function handleEntityNotFound(_0x7b54c4,_0x56675d){return function(_0x3d77fa){if(!_0x3d77fa){_0x7b54c4[_0x6822('0x1a')](0x194);}return _0x3d77fa;};}function handleError(_0x8c9ea1,_0x5082c5){_0x5082c5=_0x5082c5||0x1f4;return function(_0x4bc264){logger['error'](_0x4bc264[_0x6822('0x28')]);if(_0x4bc264[_0x6822('0x29')]){delete _0x4bc264['name'];}_0x8c9ea1['status'](_0x5082c5)[_0x6822('0x2a')](_0x4bc264);};}exports[_0x6822('0x2b')]=function(_0x177490,_0x4e80e1){var _0x3efa29={},_0x1d50ad={},_0x424e79={'count':0x0,'rows':[]};var _0x499c54=_[_0x6822('0x2c')](db[_0x6822('0x2d')]['rawAttributes'],function(_0x501761){return{'name':_0x501761['fieldName'],'type':_0x501761[_0x6822('0x2e')][_0x6822('0x2f')]};});_0x1d50ad[_0x6822('0x30')]=_[_0x6822('0x2c')](_0x499c54,'name');_0x1d50ad[_0x6822('0x31')]=_[_0x6822('0x32')](_0x177490['query']);_0x1d50ad[_0x6822('0x33')]=_['intersection'](_0x1d50ad['model'],_0x1d50ad['query']);_0x3efa29[_0x6822('0x34')]=_[_0x6822('0x35')](_0x1d50ad[_0x6822('0x30')],qs[_0x6822('0x36')](_0x177490[_0x6822('0x31')][_0x6822('0x36')]));_0x3efa29[_0x6822('0x34')]=_0x3efa29[_0x6822('0x34')][_0x6822('0x37')]?_0x3efa29[_0x6822('0x34')]:_0x1d50ad[_0x6822('0x30')];if(!_0x177490['query'][_0x6822('0x38')](_0x6822('0x39'))){_0x3efa29[_0x6822('0x20')]=qs[_0x6822('0x20')](_0x177490[_0x6822('0x31')][_0x6822('0x20')]);_0x3efa29[_0x6822('0x1e')]=qs[_0x6822('0x1e')](_0x177490[_0x6822('0x31')][_0x6822('0x1e')]);}_0x3efa29[_0x6822('0x3a')]=qs[_0x6822('0x3b')](_0x177490[_0x6822('0x31')][_0x6822('0x3b')]);_0x3efa29['where']=qs[_0x6822('0x33')](_[_0x6822('0x3c')](_0x177490[_0x6822('0x31')],_0x1d50ad[_0x6822('0x33')]),_0x499c54);if(_0x177490[_0x6822('0x31')][_0x6822('0x3d')]){_0x3efa29[_0x6822('0x3e')]=_[_0x6822('0x3f')](_0x3efa29[_0x6822('0x3e')],{'$or':_[_0x6822('0x2c')](_0x499c54,function(_0x1b62e4){if(_0x1b62e4['type']!==_0x6822('0x40')){var _0x35f18f={};_0x35f18f[_0x1b62e4[_0x6822('0x29')]]={'$like':'%'+_0x177490[_0x6822('0x31')][_0x6822('0x3d')]+'%'};return _0x35f18f;}})});}_0x3efa29=_['merge']({},_0x3efa29,_0x177490[_0x6822('0x41')]);var _0x168566={'where':_0x3efa29[_0x6822('0x3e')]};return db[_0x6822('0x2d')]['count'](_0x168566)['then'](function(_0x152f7f){_0x424e79[_0x6822('0x21')]=_0x152f7f;if(_0x177490['query'][_0x6822('0x42')]){_0x3efa29['include']=[{'all':!![]}];}return db[_0x6822('0x2d')][_0x6822('0x43')](_0x3efa29);})[_0x6822('0x27')](function(_0x2c0ed4){_0x424e79['rows']=_0x2c0ed4;return _0x424e79;})[_0x6822('0x27')](respondWithFilteredResult(_0x4e80e1,_0x3efa29))[_0x6822('0x44')](handleError(_0x4e80e1,null));};exports['show']=function(_0x257133,_0x106072){var _0x53b7b0={'raw':!![],'where':{'id':_0x257133['params']['id']}},_0x422e06={};_0x422e06[_0x6822('0x30')]=_[_0x6822('0x32')](db[_0x6822('0x2d')][_0x6822('0x45')]);_0x422e06['query']=_[_0x6822('0x32')](_0x257133[_0x6822('0x31')]);_0x422e06['filters']=_['intersection'](_0x422e06[_0x6822('0x30')],_0x422e06['query']);_0x53b7b0[_0x6822('0x34')]=_[_0x6822('0x35')](_0x422e06[_0x6822('0x30')],qs[_0x6822('0x36')](_0x257133[_0x6822('0x31')]['fields']));_0x53b7b0['attributes']=_0x53b7b0[_0x6822('0x34')][_0x6822('0x37')]?_0x53b7b0[_0x6822('0x34')]:_0x422e06[_0x6822('0x30')];if(_0x257133['query'][_0x6822('0x42')]){_0x53b7b0[_0x6822('0x46')]=[{'all':!![]}];}_0x53b7b0=_['merge']({},_0x53b7b0,_0x257133[_0x6822('0x41')]);return db['ZohoField'][_0x6822('0x47')](_0x53b7b0)[_0x6822('0x27')](handleEntityNotFound(_0x106072,null))[_0x6822('0x27')](respondWithResult(_0x106072,null))[_0x6822('0x44')](handleError(_0x106072,null));};exports[_0x6822('0x48')]=function(_0x57533c,_0x45c20f){return db['ZohoField'][_0x6822('0x48')](_0x57533c[_0x6822('0x49')],{})[_0x6822('0x27')](respondWithResult(_0x45c20f,0xc9))[_0x6822('0x44')](handleError(_0x45c20f,null));};exports['update']=function(_0x111ae4,_0x3e83b4){if(_0x111ae4[_0x6822('0x49')]['id']){delete _0x111ae4[_0x6822('0x49')]['id'];}return db[_0x6822('0x2d')][_0x6822('0x47')]({'where':{'id':_0x111ae4[_0x6822('0x4a')]['id']}})[_0x6822('0x27')](handleEntityNotFound(_0x3e83b4,null))['then'](saveUpdates(_0x111ae4[_0x6822('0x49')],null))['then'](respondWithResult(_0x3e83b4,null))[_0x6822('0x44')](handleError(_0x3e83b4,null));};exports['destroy']=function(_0x16e28f,_0x37d8b1){return db[_0x6822('0x2d')][_0x6822('0x47')]({'where':{'id':_0x16e28f['params']['id']}})['then'](handleEntityNotFound(_0x37d8b1,null))['then'](removeEntity(_0x37d8b1,null))['catch'](handleError(_0x37d8b1,null));};
\ No newline at end of file
index 81cbd6c..efd6b7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2c7=['bluebird','request-promise','path','rimraf','exports','zoho_unique_index','idField','FieldId','util','../../config/logger','api','moment'];(function(_0x33d581,_0x2da6d0){var _0x3320da=function(_0x17d76a){while(--_0x17d76a){_0x33d581['push'](_0x33d581['shift']());}};_0x3320da(++_0x2da6d0);}(_0xc2c7,0x134));var _0x7c2c=function(_0x25c871,_0x1a4710){_0x25c871=_0x25c871-0x0;var _0x172af3=_0xc2c7[_0x25c871];return _0x172af3;};'use strict';var _=require('lodash');var util=require(_0x7c2c('0x0'));var logger=require(_0x7c2c('0x1'))(_0x7c2c('0x2'));var moment=require(_0x7c2c('0x3'));var BPromise=require(_0x7c2c('0x4'));var rp=require(_0x7c2c('0x5'));var fs=require('fs');var path=require(_0x7c2c('0x6'));var rimraf=require(_0x7c2c('0x7'));var config=require('../../config/environment');var attributes=require('./intZohoField.attributes');module[_0x7c2c('0x8')]=function(_0x42ecc9,_0x23c038){return _0x42ecc9['define']('ZohoField',attributes,{'tableName':'int_zoho_fields','paranoid':![],'indexes':[{'name':_0x7c2c('0x9'),'fields':[_0x7c2c('0xa'),_0x7c2c('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf61e=['idField','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZohoField.attributes','exports','define','int_zoho_fields','zoho_unique_index'];(function(_0x4ca7c7,_0x5d16ee){var _0x456a87=function(_0x11c8fc){while(--_0x11c8fc){_0x4ca7c7['push'](_0x4ca7c7['shift']());}};_0x456a87(++_0x5d16ee);}(_0xf61e,0x191));var _0xef61=function(_0x5332ba,_0xe2d32c){_0x5332ba=_0x5332ba-0x0;var _0x105a42=_0xf61e[_0x5332ba];return _0x105a42;};'use strict';var _=require(_0xef61('0x0'));var util=require(_0xef61('0x1'));var logger=require(_0xef61('0x2'))(_0xef61('0x3'));var moment=require(_0xef61('0x4'));var BPromise=require(_0xef61('0x5'));var rp=require(_0xef61('0x6'));var fs=require('fs');var path=require(_0xef61('0x7'));var rimraf=require(_0xef61('0x8'));var config=require(_0xef61('0x9'));var attributes=require(_0xef61('0xa'));module[_0xef61('0xb')]=function(_0x5b00b2,_0x9e17f4){return _0x5b00b2[_0xef61('0xc')]('ZohoField',attributes,{'tableName':_0xef61('0xd'),'paranoid':![],'indexes':[{'name':_0xef61('0xe'),'fields':[_0xef61('0xf'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 60a4c3c..d8582f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa016=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','randomstring','../../mysqldb'];(function(_0x120136,_0x5c2723){var _0x259f44=function(_0x20660c){while(--_0x20660c){_0x120136['push'](_0x120136['shift']());}};_0x259f44(++_0x5c2723);}(_0xa016,0x85));var _0x6a01=function(_0x2b9af5,_0x4672c2){_0x2b9af5=_0x2b9af5-0x0;var _0xab235f=_0xa016[_0x2b9af5];return _0xab235f;};'use strict';var _=require(_0x6a01('0x0'));var util=require(_0x6a01('0x1'));var moment=require(_0x6a01('0x2'));var BPromise=require('bluebird');var rs=require(_0x6a01('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6a01('0x4'))['db'];var utils=require(_0x6a01('0x5'));var logger=require(_0x6a01('0x6'))(_0x6a01('0x7'));var config=require(_0x6a01('0x8'));var jayson=require(_0x6a01('0x9'));var client=jayson['client'][_0x6a01('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2a44d2,_0x7e8f47,_0x1acba5){return new BPromise(function(_0xc70807,_0x21873d){return client[_0x6a01('0xb')](_0x2a44d2,_0x1acba5)[_0x6a01('0xc')](function(_0xf6a573){logger[_0x6a01('0xd')](_0x6a01('0xe'),_0x7e8f47,_0x6a01('0xf'));logger[_0x6a01('0x10')](_0x6a01('0x11'),_0x7e8f47,_0x6a01('0xf'),JSON[_0x6a01('0x12')](_0xf6a573));if(_0xf6a573[_0x6a01('0x13')]){if(_0xf6a573[_0x6a01('0x13')][_0x6a01('0x14')]===0x1f4){logger[_0x6a01('0x13')](_0x6a01('0xe'),_0x7e8f47,_0xf6a573[_0x6a01('0x13')][_0x6a01('0x15')]);return _0x21873d(_0xf6a573[_0x6a01('0x13')][_0x6a01('0x15')]);}logger[_0x6a01('0x13')](_0x6a01('0xe'),_0x7e8f47,_0xf6a573[_0x6a01('0x13')][_0x6a01('0x15')]);return _0xc70807(_0xf6a573[_0x6a01('0x13')][_0x6a01('0x15')]);}else{logger[_0x6a01('0xd')]('ZohoField,\x20%s,\x20%s',_0x7e8f47,_0x6a01('0xf'));_0xc70807(_0xf6a573[_0x6a01('0x16')][_0x6a01('0x15')]);}})['catch'](function(_0x11bbfb){logger['error'](_0x6a01('0xe'),_0x7e8f47,_0x11bbfb);_0x21873d(_0x11bbfb);});});}
\ No newline at end of file
+var _0x6f0a=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x6f0a,0x8f));var _0xa6f0=function(_0x1765c4,_0x151565){_0x1765c4=_0x1765c4-0x0;var _0x56645f=_0x6f0a[_0x1765c4];return _0x56645f;};'use strict';var _=require(_0xa6f0('0x0'));var util=require(_0xa6f0('0x1'));var moment=require(_0xa6f0('0x2'));var BPromise=require(_0xa6f0('0x3'));var rs=require(_0xa6f0('0x4'));var fs=require('fs');var Redis=require(_0xa6f0('0x5'));var db=require(_0xa6f0('0x6'))['db'];var utils=require(_0xa6f0('0x7'));var logger=require(_0xa6f0('0x8'))(_0xa6f0('0x9'));var config=require(_0xa6f0('0xa'));var jayson=require(_0xa6f0('0xb'));var client=jayson[_0xa6f0('0xc')][_0xa6f0('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x2ecb68,_0x514295,_0x440354){return new BPromise(function(_0xbf3575,_0x3c247f){return client[_0xa6f0('0xe')](_0x2ecb68,_0x440354)[_0xa6f0('0xf')](function(_0x44b7ad){logger[_0xa6f0('0x10')](_0xa6f0('0x11'),_0x514295,_0xa6f0('0x12'));logger[_0xa6f0('0x13')]('ZohoField,\x20%s,\x20%s,\x20%s',_0x514295,_0xa6f0('0x12'),JSON[_0xa6f0('0x14')](_0x44b7ad));if(_0x44b7ad['error']){if(_0x44b7ad[_0xa6f0('0x15')]['code']===0x1f4){logger[_0xa6f0('0x15')]('ZohoField,\x20%s,\x20%s',_0x514295,_0x44b7ad[_0xa6f0('0x15')][_0xa6f0('0x16')]);return _0x3c247f(_0x44b7ad[_0xa6f0('0x15')]['message']);}logger[_0xa6f0('0x15')](_0xa6f0('0x11'),_0x514295,_0x44b7ad[_0xa6f0('0x15')][_0xa6f0('0x16')]);return _0xbf3575(_0x44b7ad[_0xa6f0('0x15')][_0xa6f0('0x16')]);}else{logger[_0xa6f0('0x10')]('ZohoField,\x20%s,\x20%s',_0x514295,_0xa6f0('0x12'));_0xbf3575(_0x44b7ad[_0xa6f0('0x17')][_0xa6f0('0x16')]);}})[_0xa6f0('0x18')](function(_0x44a8b0){logger[_0xa6f0('0x15')](_0xa6f0('0x11'),_0x514295,_0x44a8b0);_0x3c247f(_0x44a8b0);});});}
\ No newline at end of file
index 81fa173..f8b269e 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(_0x23a49a,_0x45fd99){var _0x2e0cb8=function(_0x11a7e4){while(--_0x11a7e4){_0x23a49a['push'](_0x23a49a['shift']());}};_0x2e0cb8(++_0x45fd99);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0xa9e0[_0x5e3b04];return _0x1fc44d;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x20ae3b,_0x23a21c){var _0x391475=function(_0x590776){while(--_0x590776){_0x20ae3b['push'](_0x20ae3b['shift']());}};_0x391475(++_0x23a21c);}(_0x9c44,0x178));var _0x49c4=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0x9c44[_0xdea41a];return _0x15d0d8;};'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 1126705..6170c40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa49e=['app.js','INTEGER','BOOLEAN','sequelize','STRING','unique_name_and_version'];(function(_0x296d3e,_0x1852ec){var _0x284ad8=function(_0xedba35){while(--_0xedba35){_0x296d3e['push'](_0x296d3e['shift']());}};_0x284ad8(++_0x1852ec);}(_0xa49e,0x147));var _0xea49=function(_0x1f15d4,_0x547ee1){_0x1f15d4=_0x1f15d4-0x0;var _0x407670=_0xa49e[_0x1f15d4];return _0x407670;};'use strict';var Sequelize=require(_0xea49('0x0'));module['exports']={'name':{'type':Sequelize[_0xea49('0x1')],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize[_0xea49('0x1')],'allowNull':![],'unique':_0xea49('0x2')},'main':{'type':Sequelize[_0xea49('0x1')],'defaultValue':_0xea49('0x3')},'filename':{'type':Sequelize[_0xea49('0x1')]},'path':{'type':Sequelize[_0xea49('0x1')]},'type':{'type':Sequelize[_0xea49('0x1')]},'size':{'type':Sequelize[_0xea49('0x4')]},'active':{'type':Sequelize[_0xea49('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0xea49('0x1')]},'logo':{'type':Sequelize[_0xea49('0x1')]},'state':{'type':Sequelize[_0xea49('0x1')],'unique':'state'},'description':{'type':Sequelize[_0xea49('0x1')]},'title':{'type':Sequelize[_0xea49('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize[_0xea49('0x1')],'defaultValue':'#'}};
\ No newline at end of file
+var _0xc2af=['STRING','unique_name_and_version','app.js','INTEGER','sequelize'];(function(_0x3d6bd9,_0x577251){var _0x43f2f8=function(_0x451870){while(--_0x451870){_0x3d6bd9['push'](_0x3d6bd9['shift']());}};_0x43f2f8(++_0x577251);}(_0xc2af,0x1bc));var _0xfc2a=function(_0x2808a3,_0x5acf1f){_0x2808a3=_0x2808a3-0x0;var _0x3d41c1=_0xc2af[_0x2808a3];return _0x3d41c1;};'use strict';var Sequelize=require(_0xfc2a('0x0'));module['exports']={'name':{'type':Sequelize[_0xfc2a('0x1')],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize[_0xfc2a('0x1')],'allowNull':![],'unique':_0xfc2a('0x2')},'main':{'type':Sequelize[_0xfc2a('0x1')],'defaultValue':_0xfc2a('0x3')},'filename':{'type':Sequelize[_0xfc2a('0x1')]},'path':{'type':Sequelize[_0xfc2a('0x1')]},'type':{'type':Sequelize[_0xfc2a('0x1')]},'size':{'type':Sequelize[_0xfc2a('0x4')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'author':{'type':Sequelize[_0xfc2a('0x1')]},'logo':{'type':Sequelize['STRING']},'state':{'type':Sequelize[_0xfc2a('0x1')],'unique':'state'},'description':{'type':Sequelize[_0xfc2a('0x1')]},'title':{'type':Sequelize[_0xfc2a('0x1')]},'remoteUri':{'type':Sequelize[_0xfc2a('0x1')]},'link':{'type':Sequelize[_0xfc2a('0x1')],'defaultValue':'#'}};
\ No newline at end of file
index 0e9c3f1..02028fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb016=['eml-format','rimraf','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','error','name','send','index','map','Integration','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','update','find','body'];(function(_0x3cf976,_0x506983){var _0x201ada=function(_0xb22a62){while(--_0xb22a62){_0x3cf976['push'](_0x3cf976['shift']());}};_0x201ada(++_0x506983);}(_0xb016,0x159));var _0x6b01=function(_0x4aa1b9,_0x43bb5f){_0x4aa1b9=_0x4aa1b9-0x0;var _0x8ac6ee=_0xb016[_0x4aa1b9];return _0x8ac6ee;};'use strict';var emlformat=require(_0x6b01('0x0'));var rimraf=require(_0x6b01('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6b01('0x2'));var moment=require('moment');var BPromise=require(_0x6b01('0x3'));var Mustache=require(_0x6b01('0x4'));var util=require(_0x6b01('0x5'));var path=require(_0x6b01('0x6'));var sox=require('sox');var csv=require(_0x6b01('0x7'));var ejs=require(_0x6b01('0x8'));var fs=require('fs');var fs_extra=require(_0x6b01('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x6b01('0xa'));var jsforce=require(_0x6b01('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6b01('0xc'));var Papa=require(_0x6b01('0xd'));var Redis=require(_0x6b01('0xe'));var authService=require(_0x6b01('0xf'));var qs=require(_0x6b01('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6b01('0x11'))(_0x6b01('0x12'));var utils=require(_0x6b01('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x6b01('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x51f976,_0x26f2a0){_0x26f2a0=_0x26f2a0||0xcc;return function(_0x4fa826){if(_0x4fa826){return _0x51f976[_0x6b01('0x15')](_0x26f2a0);}return _0x51f976[_0x6b01('0x16')](_0x26f2a0)['end']();};}function respondWithResult(_0x2c305e,_0x4ea5fa){_0x4ea5fa=_0x4ea5fa||0xc8;return function(_0x50d778){if(_0x50d778){return _0x2c305e['status'](_0x4ea5fa)[_0x6b01('0x17')](_0x50d778);}};}function respondWithFilteredResult(_0x4cbd38,_0x5b2f60){return function(_0x3a259f){if(_0x3a259f){var _0x327e86=typeof _0x5b2f60[_0x6b01('0x18')]===_0x6b01('0x19')&&typeof _0x5b2f60[_0x6b01('0x1a')]===_0x6b01('0x19');var _0x122769=_0x3a259f[_0x6b01('0x1b')];var _0x9c6571=_0x327e86?0x0:_0x5b2f60[_0x6b01('0x18')];var _0x18f336=_0x327e86?_0x3a259f['count']:_0x5b2f60[_0x6b01('0x18')]+_0x5b2f60[_0x6b01('0x1a')];var _0x3b0bab;if(_0x18f336>=_0x122769){_0x18f336=_0x122769;_0x3b0bab=0xc8;}else{_0x3b0bab=0xce;}_0x4cbd38[_0x6b01('0x16')](_0x3b0bab);return _0x4cbd38[_0x6b01('0x1c')](_0x6b01('0x1d'),_0x9c6571+'-'+_0x18f336+'/'+_0x122769)[_0x6b01('0x17')](_0x3a259f);}return null;};}function patchUpdates(_0x3c0573){return function(_0x54a942){try{jsonpatch[_0x6b01('0x1e')](_0x54a942,_0x3c0573,!![]);}catch(_0xc1f453){return BPromise[_0x6b01('0x1f')](_0xc1f453);}return _0x54a942[_0x6b01('0x20')]();};}function saveUpdates(_0x1fced4,_0x181b09){return function(_0x2cea6e){if(_0x2cea6e){return _0x2cea6e['update'](_0x1fced4)[_0x6b01('0x21')](function(_0xcf9200){return _0xcf9200;});}return null;};}function removeEntity(_0x42c990,_0x51243c){return function(_0x399808){if(_0x399808){return _0x399808[_0x6b01('0x22')]()[_0x6b01('0x21')](function(){_0x42c990[_0x6b01('0x16')](0xcc)[_0x6b01('0x23')]();});}};}function handleEntityNotFound(_0x2456e9,_0x1b46fb){return function(_0x136452){if(!_0x136452){_0x2456e9[_0x6b01('0x15')](0x194);}return _0x136452;};}function handleError(_0x152dda,_0x3c0607){_0x3c0607=_0x3c0607||0x1f4;return function(_0xa846d8){logger[_0x6b01('0x24')](_0xa846d8['stack']);if(_0xa846d8[_0x6b01('0x25')]){delete _0xa846d8[_0x6b01('0x25')];}_0x152dda[_0x6b01('0x16')](_0x3c0607)[_0x6b01('0x26')](_0xa846d8);};}exports[_0x6b01('0x27')]=function(_0x528cbd,_0x54f030){var _0x3fae61={},_0x3df3d4={},_0xc574c={'count':0x0,'rows':[]};var _0x8883d1=_[_0x6b01('0x28')](db[_0x6b01('0x29')]['rawAttributes'],function(_0x39f193){return{'name':_0x39f193['fieldName'],'type':_0x39f193[_0x6b01('0x2a')]['key']};});_0x3df3d4[_0x6b01('0x2b')]=_[_0x6b01('0x28')](_0x8883d1,_0x6b01('0x25'));_0x3df3d4[_0x6b01('0x2c')]=_[_0x6b01('0x2d')](_0x528cbd['query']);_0x3df3d4[_0x6b01('0x2e')]=_[_0x6b01('0x2f')](_0x3df3d4[_0x6b01('0x2b')],_0x3df3d4['query']);_0x3fae61['attributes']=_[_0x6b01('0x2f')](_0x3df3d4['model'],qs[_0x6b01('0x30')](_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x30')]));_0x3fae61['attributes']=_0x3fae61[_0x6b01('0x31')][_0x6b01('0x32')]?_0x3fae61[_0x6b01('0x31')]:_0x3df3d4['model'];if(!_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x33')](_0x6b01('0x34'))){_0x3fae61[_0x6b01('0x1a')]=qs[_0x6b01('0x1a')](_0x528cbd['query'][_0x6b01('0x1a')]);_0x3fae61[_0x6b01('0x18')]=qs[_0x6b01('0x18')](_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x18')]);}_0x3fae61[_0x6b01('0x35')]=qs[_0x6b01('0x36')](_0x528cbd[_0x6b01('0x2c')]['sort']);_0x3fae61[_0x6b01('0x37')]=qs['filters'](_[_0x6b01('0x38')](_0x528cbd[_0x6b01('0x2c')],_0x3df3d4[_0x6b01('0x2e')]),_0x8883d1);if(_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x39')]){_0x3fae61[_0x6b01('0x37')]=_[_0x6b01('0x3a')](_0x3fae61['where'],{'$or':_[_0x6b01('0x28')](_0x8883d1,function(_0x15f274){if(_0x15f274[_0x6b01('0x2a')]!==_0x6b01('0x3b')){var _0x1ca3aa={};_0x1ca3aa[_0x15f274[_0x6b01('0x25')]]={'$like':'%'+_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x39')]+'%'};return _0x1ca3aa;}})});}_0x3fae61=_['merge']({},_0x3fae61,_0x528cbd[_0x6b01('0x3c')]);var _0x55907f={'where':_0x3fae61[_0x6b01('0x37')]};return db[_0x6b01('0x29')]['count'](_0x55907f)[_0x6b01('0x21')](function(_0x2e661b){_0xc574c[_0x6b01('0x1b')]=_0x2e661b;if(_0x528cbd[_0x6b01('0x2c')][_0x6b01('0x3d')]){_0x3fae61[_0x6b01('0x3e')]=[{'all':!![]}];}return db[_0x6b01('0x29')][_0x6b01('0x3f')](_0x3fae61);})[_0x6b01('0x21')](function(_0x17f335){_0xc574c['rows']=_0x17f335;return _0xc574c;})[_0x6b01('0x21')](respondWithFilteredResult(_0x54f030,_0x3fae61))[_0x6b01('0x40')](handleError(_0x54f030,null));};exports['show']=function(_0x52cec0,_0x32b9ec){var _0xd11195={'raw':![],'where':{'id':_0x52cec0[_0x6b01('0x41')]['id']}},_0x558ec1={};_0x558ec1[_0x6b01('0x2b')]=_['keys'](db[_0x6b01('0x29')]['rawAttributes']);_0x558ec1[_0x6b01('0x2c')]=_[_0x6b01('0x2d')](_0x52cec0[_0x6b01('0x2c')]);_0x558ec1['filters']=_[_0x6b01('0x2f')](_0x558ec1[_0x6b01('0x2b')],_0x558ec1['query']);_0xd11195['attributes']=_['intersection'](_0x558ec1[_0x6b01('0x2b')],qs[_0x6b01('0x30')](_0x52cec0[_0x6b01('0x2c')][_0x6b01('0x30')]));_0xd11195[_0x6b01('0x31')]=_0xd11195[_0x6b01('0x31')]['length']?_0xd11195[_0x6b01('0x31')]:_0x558ec1[_0x6b01('0x2b')];if(_0x52cec0[_0x6b01('0x2c')][_0x6b01('0x3d')]){_0xd11195[_0x6b01('0x3e')]=[{'all':!![]}];}_0xd11195=_[_0x6b01('0x3a')]({},_0xd11195,_0x52cec0['options']);return db[_0x6b01('0x29')]['find'](_0xd11195)['then'](handleEntityNotFound(_0x32b9ec,null))[_0x6b01('0x21')](respondWithResult(_0x32b9ec,null))[_0x6b01('0x40')](handleError(_0x32b9ec,null));};exports['create']=function(_0x408bb0,_0x27442e){return db[_0x6b01('0x29')]['create'](_0x408bb0['body'],{})['then'](respondWithResult(_0x27442e,0xc9))[_0x6b01('0x40')](handleError(_0x27442e,null));};exports[_0x6b01('0x42')]=function(_0x518d94,_0x34cef6){if(_0x518d94['body']['id']){delete _0x518d94['body']['id'];}return db['Integration'][_0x6b01('0x43')]({'where':{'id':_0x518d94[_0x6b01('0x41')]['id']}})['then'](handleEntityNotFound(_0x34cef6,null))['then'](saveUpdates(_0x518d94[_0x6b01('0x44')],null))['then'](respondWithResult(_0x34cef6,null))[_0x6b01('0x40')](handleError(_0x34cef6,null));};exports[_0x6b01('0x22')]=function(_0x32d446,_0x172a56){return db[_0x6b01('0x29')]['find']({'where':{'id':_0x32d446[_0x6b01('0x41')]['id']}})[_0x6b01('0x21')](handleEntityNotFound(_0x172a56,null))[_0x6b01('0x21')](removeEntity(_0x172a56,null))['catch'](handleError(_0x172a56,null));};
\ No newline at end of file
+var _0xdb28=['error','stack','name','send','index','Integration','fieldName','type','key','map','query','keys','model','fields','attributes','length','nolimit','order','sort','filters','filter','where','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','intersection','include','find','create','body','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'];(function(_0x50b9bd,_0x5d074f){var _0x4a969e=function(_0x5b8d2c){while(--_0x5b8d2c){_0x50b9bd['push'](_0x50b9bd['shift']());}};_0x4a969e(++_0x5d074f);}(_0xdb28,0x106));var _0x8db2=function(_0x504980,_0x2fa010){_0x504980=_0x504980-0x0;var _0x12b974=_0xdb28[_0x504980];return _0x12b974;};'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']=[{'all':!![]}];}return db[_0x8db2('0x2b')][_0x8db2('0x40')](_0x21bae5);})['then'](function(_0x49a7ae){_0x3124d5[_0x8db2('0x41')]=_0x49a7ae;return _0x3124d5;})['then'](respondWithFilteredResult(_0xbe5ece,_0x21bae5))[_0x8db2('0x42')](handleError(_0xbe5ece,null));};exports[_0x8db2('0x43')]=function(_0x313130,_0x307783){var _0xb4fe2c={'raw':![],'where':{'id':_0x313130[_0x8db2('0x44')]['id']}},_0x30d606={};_0x30d606['model']=_[_0x8db2('0x31')](db[_0x8db2('0x2b')][_0x8db2('0x45')]);_0x30d606[_0x8db2('0x30')]=_['keys'](_0x313130[_0x8db2('0x30')]);_0x30d606[_0x8db2('0x39')]=_[_0x8db2('0x46')](_0x30d606[_0x8db2('0x32')],_0x30d606['query']);_0xb4fe2c[_0x8db2('0x34')]=_['intersection'](_0x30d606[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x313130[_0x8db2('0x30')]['fields']));_0xb4fe2c['attributes']=_0xb4fe2c[_0x8db2('0x34')]['length']?_0xb4fe2c[_0x8db2('0x34')]:_0x30d606[_0x8db2('0x32')];if(_0x313130[_0x8db2('0x30')][_0x8db2('0x3f')]){_0xb4fe2c[_0x8db2('0x47')]=[{'all':!![]}];}_0xb4fe2c=_[_0x8db2('0x3d')]({},_0xb4fe2c,_0x313130[_0x8db2('0x3e')]);return db[_0x8db2('0x2b')][_0x8db2('0x48')](_0xb4fe2c)[_0x8db2('0x24')](handleEntityNotFound(_0x307783,null))[_0x8db2('0x24')](respondWithResult(_0x307783,null))[_0x8db2('0x42')](handleError(_0x307783,null));};exports['create']=function(_0x449109,_0x2ada52){return db[_0x8db2('0x2b')][_0x8db2('0x49')](_0x449109['body'],{})['then'](respondWithResult(_0x2ada52,0xc9))[_0x8db2('0x42')](handleError(_0x2ada52,null));};exports[_0x8db2('0x23')]=function(_0x164020,_0x4c66e5){if(_0x164020['body']['id']){delete _0x164020['body']['id'];}return db[_0x8db2('0x2b')][_0x8db2('0x48')]({'where':{'id':_0x164020[_0x8db2('0x44')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x4c66e5,null))[_0x8db2('0x24')](saveUpdates(_0x164020[_0x8db2('0x4a')],null))[_0x8db2('0x24')](respondWithResult(_0x4c66e5,null))['catch'](handleError(_0x4c66e5,null));};exports['destroy']=function(_0x3d29bc,_0x18c6ef){return db[_0x8db2('0x2b')][_0x8db2('0x48')]({'where':{'id':_0x3d29bc[_0x8db2('0x44')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x18c6ef,null))[_0x8db2('0x24')](removeEntity(_0x18c6ef,null))[_0x8db2('0x42')](handleError(_0x18c6ef,null));};
\ No newline at end of file
index 9ef0491..1f9a738 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf31=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','Integration','integrations'];(function(_0x1074f8,_0x88983c){var _0x319bbf=function(_0x37991c){while(--_0x37991c){_0x1074f8['push'](_0x1074f8['shift']());}};_0x319bbf(++_0x88983c);}(_0xcf31,0xf7));var _0x1cf3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcf31[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x1cf3('0x0'));var util=require(_0x1cf3('0x1'));var logger=require(_0x1cf3('0x2'))(_0x1cf3('0x3'));var moment=require('moment');var BPromise=require(_0x1cf3('0x4'));var rp=require(_0x1cf3('0x5'));var fs=require('fs');var path=require(_0x1cf3('0x6'));var rimraf=require(_0x1cf3('0x7'));var config=require(_0x1cf3('0x8'));var attributes=require('./integration.attributes');module[_0x1cf3('0x9')]=function(_0x320627,_0x36afe9){return _0x320627[_0x1cf3('0xa')](_0x1cf3('0xb'),attributes,{'tableName':_0x1cf3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3571=['bluebird','rimraf','../../config/environment','./integration.attributes','define','integrations','../../config/logger','api','moment'];(function(_0x244c97,_0x50bfb8){var _0x4893a9=function(_0x1bf8ae){while(--_0x1bf8ae){_0x244c97['push'](_0x244c97['shift']());}};_0x4893a9(++_0x50bfb8);}(_0x3571,0xde));var _0x1357=function(_0xd63e3a,_0x1bd6eb){_0xd63e3a=_0xd63e3a-0x0;var _0x19c178=_0x3571[_0xd63e3a];return _0x19c178;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1357('0x0'))(_0x1357('0x1'));var moment=require(_0x1357('0x2'));var BPromise=require(_0x1357('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1357('0x4'));var config=require(_0x1357('0x5'));var attributes=require(_0x1357('0x6'));module['exports']=function(_0x5134b1,_0x3feaf7){return _0x5134b1[_0x1357('0x7')]('Integration',attributes,{'tableName':_0x1357('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 594e999..1392026 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','Integration,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x5132d0,_0x53d12a){var _0x5af41f=function(_0x20518a){while(--_0x20518a){_0x5132d0['push'](_0x5132d0['shift']());}};_0x5af41f(++_0x53d12a);}(_0x5f2f,0x73));var _0xf5f2=function(_0x386552,_0x5ac843){_0x386552=_0x386552-0x0;var _0x2c4b26=_0x5f2f[_0x386552];return _0x2c4b26;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3133bc,_0x473100,_0x5907aa){return new BPromise(function(_0x466882,_0x46cd9c){return client[_0xf5f2('0xc')](_0x3133bc,_0x5907aa)['then'](function(_0x375da4){logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,'request\x20sent');logger[_0xf5f2('0xf')]('Integration,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}
\ No newline at end of file
+var _0x7880=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x2250ab,_0x32ed7b){var _0x16e742=function(_0x367a86){while(--_0x367a86){_0x2250ab['push'](_0x2250ab['shift']());}};_0x16e742(++_0x32ed7b);}(_0x7880,0x1f4));var _0x0788=function(_0x5e6aad,_0x3cdddd){_0x5e6aad=_0x5e6aad-0x0;var _0x55deab=_0x7880[_0x5e6aad];return _0x55deab;};'use strict';var _=require('lodash');var util=require(_0x0788('0x0'));var moment=require(_0x0788('0x1'));var BPromise=require(_0x0788('0x2'));var rs=require(_0x0788('0x3'));var fs=require('fs');var Redis=require(_0x0788('0x4'));var db=require(_0x0788('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0788('0x6'))(_0x0788('0x7'));var config=require(_0x0788('0x8'));var jayson=require(_0x0788('0x9'));var client=jayson[_0x0788('0xa')][_0x0788('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3f9cb8,_0x44bbb5,_0x3c29f3){return new BPromise(function(_0x422f8b,_0x55e48a){return client[_0x0788('0xc')](_0x3f9cb8,_0x3c29f3)['then'](function(_0xabaf81){logger['info'](_0x0788('0xd'),_0x44bbb5,_0x0788('0xe'));logger[_0x0788('0xf')](_0x0788('0x10'),_0x44bbb5,_0x0788('0xe'),JSON['stringify'](_0xabaf81));if(_0xabaf81[_0x0788('0x11')]){if(_0xabaf81[_0x0788('0x11')][_0x0788('0x12')]===0x1f4){logger[_0x0788('0x11')](_0x0788('0xd'),_0x44bbb5,_0xabaf81[_0x0788('0x11')][_0x0788('0x13')]);return _0x55e48a(_0xabaf81['error'][_0x0788('0x13')]);}logger[_0x0788('0x11')](_0x0788('0xd'),_0x44bbb5,_0xabaf81[_0x0788('0x11')]['message']);return _0x422f8b(_0xabaf81[_0x0788('0x11')]['message']);}else{logger[_0x0788('0x14')](_0x0788('0xd'),_0x44bbb5,_0x0788('0xe'));_0x422f8b(_0xabaf81[_0x0788('0x15')][_0x0788('0x13')]);}})[_0x0788('0x16')](function(_0x5e1a29){logger['error'](_0x0788('0xd'),_0x44bbb5,_0x5e1a29);_0x55e48a(_0x5e1a29);});});}
\ No newline at end of file
index e05a71e..fe35ad4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6ac=['./integrationReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','put','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2d9415,_0x128f1f){var _0xc527fd=function(_0x4e2603){while(--_0x4e2603){_0x2d9415['push'](_0x2d9415['shift']());}};_0xc527fd(++_0x128f1f);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x196f44,_0x986c58){_0x196f44=_0x196f44-0x0;var _0x40c2fc=_0xc6ac[_0x196f44];return _0x40c2fc;};'use strict';var multer=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var path=require(_0xcc6a('0x2'));var timeout=require(_0xcc6a('0x3'));var express=require(_0xcc6a('0x4'));var router=express[_0xcc6a('0x5')]();var fs_extra=require(_0xcc6a('0x6'));var auth=require(_0xcc6a('0x7'));var interaction=require(_0xcc6a('0x8'));var config=require(_0xcc6a('0x9'));var controller=require(_0xcc6a('0xa'));router[_0xcc6a('0xb')]('/',auth[_0xcc6a('0xc')](),controller[_0xcc6a('0xd')]);router['get'](_0xcc6a('0xe'),auth[_0xcc6a('0xc')](),controller[_0xcc6a('0xf')]);router['get'](_0xcc6a('0x10'),auth[_0xcc6a('0xc')](),controller[_0xcc6a('0x11')]);router[_0xcc6a('0x12')]('/',auth[_0xcc6a('0xc')](),controller['create']);router[_0xcc6a('0x13')](_0xcc6a('0x10'),auth[_0xcc6a('0xc')](),controller['update']);router[_0xcc6a('0x14')](_0xcc6a('0x10'),auth[_0xcc6a('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x2542=['put','update','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post'];(function(_0x44944b,_0x234da0){var _0xef8f4=function(_0x57a8a5){while(--_0x57a8a5){_0x44944b['push'](_0x44944b['shift']());}};_0xef8f4(++_0x234da0);}(_0x2542,0x169));var _0x2254=function(_0x4f122c,_0x2128ff){_0x4f122c=_0x4f122c-0x0;var _0x5512d7=_0x2542[_0x4f122c];return _0x5512d7;};'use strict';var multer=require(_0x2254('0x0'));var util=require(_0x2254('0x1'));var path=require(_0x2254('0x2'));var timeout=require(_0x2254('0x3'));var express=require('express');var router=express[_0x2254('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2254('0x5'));var interaction=require(_0x2254('0x6'));var config=require(_0x2254('0x7'));var controller=require(_0x2254('0x8'));router[_0x2254('0x9')]('/',auth['isAuthenticated'](),controller[_0x2254('0xa')]);router[_0x2254('0x9')](_0x2254('0xb'),auth[_0x2254('0xc')](),controller[_0x2254('0xd')]);router[_0x2254('0x9')](_0x2254('0xe'),auth[_0x2254('0xc')](),controller[_0x2254('0xf')]);router[_0x2254('0x10')]('/',auth[_0x2254('0xc')](),controller['create']);router[_0x2254('0x11')](_0x2254('0xe'),auth[_0x2254('0xc')](),controller[_0x2254('0x12')]);router['delete']('/:id',auth[_0x2254('0xc')](),controller[_0x2254('0x13')]);module[_0x2254('0x14')]=router;
\ No newline at end of file
index ee47817..9e9098d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83c8=['sequelize','exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENDING','FAILED'];(function(_0x425ae0,_0x2eacf3){var _0x257d2e=function(_0x24de63){while(--_0x24de63){_0x425ae0['push'](_0x425ae0['shift']());}};_0x257d2e(++_0x2eacf3);}(_0x83c8,0x1b8));var _0x883c=function(_0x1ce834,_0x48dac9){_0x1ce834=_0x1ce834-0x0;var _0x248554=_0x83c8[_0x1ce834];return _0x248554;};'use strict';var Sequelize=require(_0x883c('0x0'));module[_0x883c('0x1')]={'integration':{'type':Sequelize[_0x883c('0x2')]},'eventChannel':{'type':Sequelize[_0x883c('0x2')]},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize[_0x883c('0x2')]},'integrationId':{'type':Sequelize[_0x883c('0x3')]},'contacts':{'type':Sequelize[_0x883c('0x2')]},'uniqueid':{'type':Sequelize[_0x883c('0x2')]},'calleridnum':{'type':Sequelize[_0x883c('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x883c('0x2')]},'interface':{'type':Sequelize[_0x883c('0x2')]},'membername':{'type':Sequelize[_0x883c('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x883c('0x4')]},'holdtime':{'type':Sequelize[_0x883c('0x3')]},'agentcomplete':{'type':Sequelize[_0x883c('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x883c('0x4')]},'talktime':{'type':Sequelize[_0x883c('0x3')]},'agentacw':{'type':Sequelize[_0x883c('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x883c('0x3')]},'reason':{'type':Sequelize[_0x883c('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x883c('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x883c('0x4')]},'agentdump':{'type':Sequelize[_0x883c('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x883c('0x4')]},'lastevent':{'type':Sequelize[_0x883c('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x883c('0x2')]},'connectedlinename':{'type':Sequelize[_0x883c('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x883c('0x2')]},'context':{'type':Sequelize[_0x883c('0x2')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x883c('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x883c('0x3')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x883c('0x2')]},'destlanguage':{'type':Sequelize[_0x883c('0x2')]},'destaccountcode':{'type':Sequelize[_0x883c('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x883c('0x2')]},'destpriority':{'type':Sequelize[_0x883c('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x883c('0x2')]},'subject':{'type':Sequelize[_0x883c('0x2')]},'from':{'type':Sequelize[_0x883c('0x2')]},'to':{'type':Sequelize[_0x883c('0x2')]},'cc':{'type':Sequelize[_0x883c('0x2')]},'attachment':{'type':Sequelize[_0x883c('0x6')]},'html':{'type':Sequelize[_0x883c('0x6')]},'text':{'type':Sequelize[_0x883c('0x6')]},'status':{'type':Sequelize[_0x883c('0x7')]('SENT',_0x883c('0x8'),'RECEIVED',_0x883c('0x9'))},'url':{'type':Sequelize[_0x883c('0x2')]},'app':{'type':Sequelize[_0x883c('0x2')]},'appdata':{'type':Sequelize[_0x883c('0x2')]},'projectId':{'type':Sequelize[_0x883c('0x3')]}};
\ No newline at end of file
+var _0x8a1b=['STRING','DATE','INTEGER','BOOLEAN','TEXT','ENUM','SENT','FAILED','sequelize','exports'];(function(_0x56e05d,_0x4753bf){var _0x215420=function(_0x58c76b){while(--_0x58c76b){_0x56e05d['push'](_0x56e05d['shift']());}};_0x215420(++_0x4753bf);}(_0x8a1b,0xf8));var _0xb8a1=function(_0x25db26,_0x1b8f6c){_0x25db26=_0x25db26-0x0;var _0x41a4b3=_0x8a1b[_0x25db26];return _0x41a4b3;};'use strict';var Sequelize=require(_0xb8a1('0x0'));module[_0xb8a1('0x1')]={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize[_0xb8a1('0x2')]},'exitStatus':{'type':Sequelize[_0xb8a1('0x2')]},'ticketId':{'type':Sequelize['STRING']},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0xb8a1('0x2')]},'uniqueid':{'type':Sequelize[_0xb8a1('0x2')]},'calleridnum':{'type':Sequelize[_0xb8a1('0x2')]},'calleridname':{'type':Sequelize[_0xb8a1('0x2')]},'queue':{'type':Sequelize[_0xb8a1('0x2')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xb8a1('0x2')]},'agentcalledAt':{'type':Sequelize[_0xb8a1('0x3')]},'agentconnectAt':{'type':Sequelize[_0xb8a1('0x3')]},'holdtime':{'type':Sequelize[_0xb8a1('0x4')]},'agentcomplete':{'type':Sequelize[_0xb8a1('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize[_0xb8a1('0x4')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0xb8a1('0x2')]},'agentringnoanswer':{'type':Sequelize[_0xb8a1('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize[_0xb8a1('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0xb8a1('0x2')]},'channel':{'type':Sequelize[_0xb8a1('0x2')]},'channelstate':{'type':Sequelize[_0xb8a1('0x4')]},'channelstatedesc':{'type':Sequelize[_0xb8a1('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0xb8a1('0x2')]},'language':{'type':Sequelize[_0xb8a1('0x2')]},'accountcode':{'type':Sequelize[_0xb8a1('0x2')]},'context':{'type':Sequelize[_0xb8a1('0x2')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xb8a1('0x2')]},'destchannel':{'type':Sequelize[_0xb8a1('0x2')]},'destchannelstate':{'type':Sequelize[_0xb8a1('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0xb8a1('0x2')]},'destcalleridnum':{'type':Sequelize[_0xb8a1('0x2')]},'destcalleridname':{'type':Sequelize[_0xb8a1('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xb8a1('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xb8a1('0x2')]},'destlanguage':{'type':Sequelize[_0xb8a1('0x2')]},'destaccountcode':{'type':Sequelize[_0xb8a1('0x2')]},'destcontext':{'type':Sequelize[_0xb8a1('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0xb8a1('0x2')]},'destuniqueid':{'type':Sequelize[_0xb8a1('0x2')]},'messageId':{'type':Sequelize[_0xb8a1('0x2')]},'inReplyTo':{'type':Sequelize[_0xb8a1('0x2')]},'subject':{'type':Sequelize[_0xb8a1('0x2')]},'from':{'type':Sequelize[_0xb8a1('0x2')]},'to':{'type':Sequelize[_0xb8a1('0x2')]},'cc':{'type':Sequelize[_0xb8a1('0x2')]},'attachment':{'type':Sequelize[_0xb8a1('0x6')]},'html':{'type':Sequelize[_0xb8a1('0x6')]},'text':{'type':Sequelize[_0xb8a1('0x6')]},'status':{'type':Sequelize[_0xb8a1('0x7')](_0xb8a1('0x8'),'SENDING','RECEIVED',_0xb8a1('0x9'))},'url':{'type':Sequelize[_0xb8a1('0x2')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize[_0xb8a1('0x2')]},'projectId':{'type':Sequelize[_0xb8a1('0x4')]}};
\ No newline at end of file
index 78712b0..ce41148 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5448=['stack','name','index','rawAttributes','fieldName','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','type','filter','options','IntegrationReport','includeAll','include','findAll','rows','catch','show','keys','find','create','body','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','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','json','offset','undefined','limit','count','Content-Range','reject','save','update','then'];(function(_0x5b5d87,_0x2c769b){var _0x334ed6=function(_0x2dce4e){while(--_0x2dce4e){_0x5b5d87['push'](_0x5b5d87['shift']());}};_0x334ed6(++_0x2c769b);}(_0x5448,0x192));var _0x8544=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x5448[_0x138adb];return _0x1b27f2;};'use strict';var emlformat=require(_0x8544('0x0'));var rimraf=require(_0x8544('0x1'));var zipdir=require(_0x8544('0x2'));var jsonpatch=require(_0x8544('0x3'));var rp=require(_0x8544('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x8544('0x5'));var util=require(_0x8544('0x6'));var path=require('path');var sox=require(_0x8544('0x7'));var csv=require(_0x8544('0x8'));var ejs=require(_0x8544('0x9'));var fs=require('fs');var fs_extra=require(_0x8544('0xa'));var _=require(_0x8544('0xb'));var squel=require(_0x8544('0xc'));var crypto=require(_0x8544('0xd'));var jsforce=require(_0x8544('0xe'));var deskjs=require(_0x8544('0xf'));var toCsv=require(_0x8544('0x8'));var querystring=require(_0x8544('0x10'));var Papa=require('papaparse');var Redis=require(_0x8544('0x11'));var authService=require(_0x8544('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x8544('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8544('0x14'));var utils=require(_0x8544('0x15'));var config=require(_0x8544('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4d138b,_0x60f382){_0x60f382=_0x60f382||0xcc;return function(_0x5bb6ab){if(_0x5bb6ab){return _0x4d138b[_0x8544('0x17')](_0x60f382);}return _0x4d138b[_0x8544('0x18')](_0x60f382)[_0x8544('0x19')]();};}function respondWithResult(_0x46af4e,_0x1b0111){_0x1b0111=_0x1b0111||0xc8;return function(_0x97a8b5){if(_0x97a8b5){return _0x46af4e[_0x8544('0x18')](_0x1b0111)[_0x8544('0x1a')](_0x97a8b5);}};}function respondWithFilteredResult(_0x13200f,_0x2b7625){return function(_0x21f919){if(_0x21f919){var _0x17773c=typeof _0x2b7625[_0x8544('0x1b')]===_0x8544('0x1c')&&typeof _0x2b7625[_0x8544('0x1d')]===_0x8544('0x1c');var _0x262208=_0x21f919[_0x8544('0x1e')];var _0x556589=_0x17773c?0x0:_0x2b7625[_0x8544('0x1b')];var _0x28e211=_0x17773c?_0x21f919[_0x8544('0x1e')]:_0x2b7625[_0x8544('0x1b')]+_0x2b7625[_0x8544('0x1d')];var _0x49eab8;if(_0x28e211>=_0x262208){_0x28e211=_0x262208;_0x49eab8=0xc8;}else{_0x49eab8=0xce;}_0x13200f[_0x8544('0x18')](_0x49eab8);return _0x13200f['set'](_0x8544('0x1f'),_0x556589+'-'+_0x28e211+'/'+_0x262208)['json'](_0x21f919);}return null;};}function patchUpdates(_0x4aab05){return function(_0x28f639){try{jsonpatch['apply'](_0x28f639,_0x4aab05,!![]);}catch(_0xed81ac){return BPromise[_0x8544('0x20')](_0xed81ac);}return _0x28f639[_0x8544('0x21')]();};}function saveUpdates(_0x28abe7,_0x10919e){return function(_0x311cbd){if(_0x311cbd){return _0x311cbd[_0x8544('0x22')](_0x28abe7)[_0x8544('0x23')](function(_0x411e3b){return _0x411e3b;});}return null;};}function removeEntity(_0x4d4e4f,_0x19d9fa){return function(_0xb4b6f4){if(_0xb4b6f4){return _0xb4b6f4['destroy']()[_0x8544('0x23')](function(){_0x4d4e4f[_0x8544('0x18')](0xcc)[_0x8544('0x19')]();});}};}function handleEntityNotFound(_0x82f2ed,_0x12a29f){return function(_0x35e7d6){if(!_0x35e7d6){_0x82f2ed['sendStatus'](0x194);}return _0x35e7d6;};}function handleError(_0x920d8b,_0x2e4d16){_0x2e4d16=_0x2e4d16||0x1f4;return function(_0x4bb378){logger['error'](_0x4bb378[_0x8544('0x24')]);if(_0x4bb378[_0x8544('0x25')]){delete _0x4bb378[_0x8544('0x25')];}_0x920d8b[_0x8544('0x18')](_0x2e4d16)['send'](_0x4bb378);};}exports[_0x8544('0x26')]=function(_0x565358,_0x3b5d5e){var _0x55a214={},_0xb95005={},_0x453b3d={'count':0x0,'rows':[]};var _0x9245f3=_['map'](db['IntegrationReport'][_0x8544('0x27')],function(_0x2cfc20){return{'name':_0x2cfc20[_0x8544('0x28')],'type':_0x2cfc20['type'][_0x8544('0x29')]};});_0xb95005[_0x8544('0x2a')]=_[_0x8544('0x2b')](_0x9245f3,_0x8544('0x25'));_0xb95005[_0x8544('0x2c')]=_['keys'](_0x565358[_0x8544('0x2c')]);_0xb95005[_0x8544('0x2d')]=_[_0x8544('0x2e')](_0xb95005[_0x8544('0x2a')],_0xb95005['query']);_0x55a214['attributes']=_['intersection'](_0xb95005['model'],qs[_0x8544('0x2f')](_0x565358[_0x8544('0x2c')]['fields']));_0x55a214['attributes']=_0x55a214[_0x8544('0x30')][_0x8544('0x31')]?_0x55a214[_0x8544('0x30')]:_0xb95005[_0x8544('0x2a')];if(!_0x565358[_0x8544('0x2c')][_0x8544('0x32')](_0x8544('0x33'))){_0x55a214[_0x8544('0x1d')]=qs[_0x8544('0x1d')](_0x565358[_0x8544('0x2c')][_0x8544('0x1d')]);_0x55a214[_0x8544('0x1b')]=qs[_0x8544('0x1b')](_0x565358['query']['offset']);}_0x55a214[_0x8544('0x34')]=qs['sort'](_0x565358['query'][_0x8544('0x35')]);_0x55a214[_0x8544('0x36')]=qs[_0x8544('0x2d')](_['pick'](_0x565358[_0x8544('0x2c')],_0xb95005[_0x8544('0x2d')]),_0x9245f3);if(_0x565358[_0x8544('0x2c')]['filter']){_0x55a214[_0x8544('0x36')]=_[_0x8544('0x37')](_0x55a214[_0x8544('0x36')],{'$or':_[_0x8544('0x2b')](_0x9245f3,function(_0x1377b1){if(_0x1377b1[_0x8544('0x38')]!=='VIRTUAL'){var _0x3ac954={};_0x3ac954[_0x1377b1[_0x8544('0x25')]]={'$like':'%'+_0x565358[_0x8544('0x2c')][_0x8544('0x39')]+'%'};return _0x3ac954;}})});}_0x55a214=_[_0x8544('0x37')]({},_0x55a214,_0x565358[_0x8544('0x3a')]);var _0x372cef={'where':_0x55a214['where']};return db[_0x8544('0x3b')][_0x8544('0x1e')](_0x372cef)[_0x8544('0x23')](function(_0x37ca1d){_0x453b3d[_0x8544('0x1e')]=_0x37ca1d;if(_0x565358['query'][_0x8544('0x3c')]){_0x55a214[_0x8544('0x3d')]=[{'all':!![]}];}return db[_0x8544('0x3b')][_0x8544('0x3e')](_0x55a214);})[_0x8544('0x23')](function(_0x5b7f4f){_0x453b3d[_0x8544('0x3f')]=_0x5b7f4f;return _0x453b3d;})[_0x8544('0x23')](respondWithFilteredResult(_0x3b5d5e,_0x55a214))[_0x8544('0x40')](handleError(_0x3b5d5e,null));};exports[_0x8544('0x41')]=function(_0x18e0a2,_0x5b82a1){var _0x1e5d68={'raw':![],'where':{'id':_0x18e0a2['params']['id']}},_0x433a9f={};_0x433a9f[_0x8544('0x2a')]=_[_0x8544('0x42')](db[_0x8544('0x3b')][_0x8544('0x27')]);_0x433a9f[_0x8544('0x2c')]=_[_0x8544('0x42')](_0x18e0a2['query']);_0x433a9f['filters']=_[_0x8544('0x2e')](_0x433a9f['model'],_0x433a9f[_0x8544('0x2c')]);_0x1e5d68[_0x8544('0x30')]=_[_0x8544('0x2e')](_0x433a9f[_0x8544('0x2a')],qs[_0x8544('0x2f')](_0x18e0a2[_0x8544('0x2c')][_0x8544('0x2f')]));_0x1e5d68[_0x8544('0x30')]=_0x1e5d68[_0x8544('0x30')][_0x8544('0x31')]?_0x1e5d68[_0x8544('0x30')]:_0x433a9f[_0x8544('0x2a')];if(_0x18e0a2[_0x8544('0x2c')][_0x8544('0x3c')]){_0x1e5d68[_0x8544('0x3d')]=[{'all':!![]}];}_0x1e5d68=_[_0x8544('0x37')]({},_0x1e5d68,_0x18e0a2['options']);return db[_0x8544('0x3b')][_0x8544('0x43')](_0x1e5d68)[_0x8544('0x23')](handleEntityNotFound(_0x5b82a1,null))['then'](respondWithResult(_0x5b82a1,null))['catch'](handleError(_0x5b82a1,null));};exports[_0x8544('0x44')]=function(_0x26e90a,_0x53142c){return db[_0x8544('0x3b')][_0x8544('0x44')](_0x26e90a[_0x8544('0x45')],{})['then'](respondWithResult(_0x53142c,0xc9))[_0x8544('0x40')](handleError(_0x53142c,null));};exports[_0x8544('0x22')]=function(_0xcec2a0,_0x53d9f5){if(_0xcec2a0['body']['id']){delete _0xcec2a0[_0x8544('0x45')]['id'];}return db[_0x8544('0x3b')][_0x8544('0x43')]({'where':{'id':_0xcec2a0[_0x8544('0x46')]['id']}})[_0x8544('0x23')](handleEntityNotFound(_0x53d9f5,null))[_0x8544('0x23')](saveUpdates(_0xcec2a0[_0x8544('0x45')],null))['then'](respondWithResult(_0x53d9f5,null))[_0x8544('0x40')](handleError(_0x53d9f5,null));};exports[_0x8544('0x47')]=function(_0x40a633,_0x177832){return db[_0x8544('0x3b')][_0x8544('0x43')]({'where':{'id':_0x40a633[_0x8544('0x46')]['id']}})[_0x8544('0x23')](handleEntityNotFound(_0x177832,null))[_0x8544('0x23')](removeEntity(_0x177832,null))[_0x8544('0x40')](handleError(_0x177832,null));};exports[_0x8544('0x48')]=function(_0x12ed9c,_0x35fba1){return db['IntegrationReport'][_0x8544('0x48')]()[_0x8544('0x23')](respondWithResult(_0x35fba1,null))['catch'](handleError(_0x35fba1,null));};
\ No newline at end of file
+var _0xec58=['where','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','options','find','body','update','describe','eml-format','moment','bluebird','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','IntegrationReport','rawAttributes','fieldName','key','model','map','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','filter'];(function(_0xc5ae74,_0x2ac05b){var _0x3be7ee=function(_0x4e424a){while(--_0x4e424a){_0xc5ae74['push'](_0xc5ae74['shift']());}};_0x3be7ee(++_0x2ac05b);}(_0xec58,0x13d));var _0x8ec5=function(_0x44b827,_0x1bb1aa){_0x44b827=_0x44b827-0x0;var _0x527342=_0xec58[_0x44b827];return _0x527342;};'use strict';var emlformat=require(_0x8ec5('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8ec5('0x1'));var BPromise=require(_0x8ec5('0x2'));var Mustache=require('mustache');var util=require(_0x8ec5('0x3'));var path=require(_0x8ec5('0x4'));var sox=require(_0x8ec5('0x5'));var csv=require(_0x8ec5('0x6'));var ejs=require(_0x8ec5('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8ec5('0x8'));var crypto=require(_0x8ec5('0x9'));var jsforce=require(_0x8ec5('0xa'));var deskjs=require(_0x8ec5('0xb'));var toCsv=require(_0x8ec5('0x6'));var querystring=require(_0x8ec5('0xc'));var Papa=require(_0x8ec5('0xd'));var Redis=require(_0x8ec5('0xe'));var authService=require(_0x8ec5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x8ec5('0x10'));var hardwareService=require(_0x8ec5('0x11'));var logger=require(_0x8ec5('0x12'))('api');var utils=require(_0x8ec5('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x8ec5('0x14'));var db=require(_0x8ec5('0x15'))['db'];function respondWithStatusCode(_0x2410b2,_0x8585a4){_0x8585a4=_0x8585a4||0xcc;return function(_0x16d7f7){if(_0x16d7f7){return _0x2410b2[_0x8ec5('0x16')](_0x8585a4);}return _0x2410b2[_0x8ec5('0x17')](_0x8585a4)[_0x8ec5('0x18')]();};}function respondWithResult(_0x198e3b,_0x197fb6){_0x197fb6=_0x197fb6||0xc8;return function(_0x17270e){if(_0x17270e){return _0x198e3b[_0x8ec5('0x17')](_0x197fb6)[_0x8ec5('0x19')](_0x17270e);}};}function respondWithFilteredResult(_0x3cfa22,_0x2531cf){return function(_0x2b5d10){if(_0x2b5d10){var _0x45a6f3=typeof _0x2531cf[_0x8ec5('0x1a')]===_0x8ec5('0x1b')&&typeof _0x2531cf['limit']===_0x8ec5('0x1b');var _0xb802cb=_0x2b5d10['count'];var _0x4f9be9=_0x45a6f3?0x0:_0x2531cf[_0x8ec5('0x1a')];var _0xdfbc07=_0x45a6f3?_0x2b5d10[_0x8ec5('0x1c')]:_0x2531cf[_0x8ec5('0x1a')]+_0x2531cf[_0x8ec5('0x1d')];var _0x27ed1f;if(_0xdfbc07>=_0xb802cb){_0xdfbc07=_0xb802cb;_0x27ed1f=0xc8;}else{_0x27ed1f=0xce;}_0x3cfa22['status'](_0x27ed1f);return _0x3cfa22[_0x8ec5('0x1e')](_0x8ec5('0x1f'),_0x4f9be9+'-'+_0xdfbc07+'/'+_0xb802cb)[_0x8ec5('0x19')](_0x2b5d10);}return null;};}function patchUpdates(_0x263cca){return function(_0x411ea7){try{jsonpatch[_0x8ec5('0x20')](_0x411ea7,_0x263cca,!![]);}catch(_0x3a5790){return BPromise[_0x8ec5('0x21')](_0x3a5790);}return _0x411ea7[_0x8ec5('0x22')]();};}function saveUpdates(_0x34755a,_0x39e2a1){return function(_0xdbf7de){if(_0xdbf7de){return _0xdbf7de['update'](_0x34755a)[_0x8ec5('0x23')](function(_0x130367){return _0x130367;});}return null;};}function removeEntity(_0x56a45d,_0x5580ca){return function(_0x1a5258){if(_0x1a5258){return _0x1a5258[_0x8ec5('0x24')]()[_0x8ec5('0x23')](function(){_0x56a45d[_0x8ec5('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5da79d,_0x57c0c8){return function(_0x4ef403){if(!_0x4ef403){_0x5da79d[_0x8ec5('0x16')](0x194);}return _0x4ef403;};}function handleError(_0x193c7d,_0x10ad30){_0x10ad30=_0x10ad30||0x1f4;return function(_0x1ee760){logger[_0x8ec5('0x25')](_0x1ee760[_0x8ec5('0x26')]);if(_0x1ee760[_0x8ec5('0x27')]){delete _0x1ee760[_0x8ec5('0x27')];}_0x193c7d['status'](_0x10ad30)[_0x8ec5('0x28')](_0x1ee760);};}exports[_0x8ec5('0x29')]=function(_0x3068bc,_0xc432d1){var _0x24e525={},_0x29d610={},_0x2878e2={'count':0x0,'rows':[]};var _0xca7623=_['map'](db[_0x8ec5('0x2a')][_0x8ec5('0x2b')],function(_0xad0f13){return{'name':_0xad0f13[_0x8ec5('0x2c')],'type':_0xad0f13['type'][_0x8ec5('0x2d')]};});_0x29d610[_0x8ec5('0x2e')]=_[_0x8ec5('0x2f')](_0xca7623,_0x8ec5('0x27'));_0x29d610[_0x8ec5('0x30')]=_['keys'](_0x3068bc['query']);_0x29d610[_0x8ec5('0x31')]=_['intersection'](_0x29d610[_0x8ec5('0x2e')],_0x29d610[_0x8ec5('0x30')]);_0x24e525[_0x8ec5('0x32')]=_[_0x8ec5('0x33')](_0x29d610[_0x8ec5('0x2e')],qs[_0x8ec5('0x34')](_0x3068bc[_0x8ec5('0x30')][_0x8ec5('0x34')]));_0x24e525[_0x8ec5('0x32')]=_0x24e525[_0x8ec5('0x32')][_0x8ec5('0x35')]?_0x24e525[_0x8ec5('0x32')]:_0x29d610[_0x8ec5('0x2e')];if(!_0x3068bc[_0x8ec5('0x30')][_0x8ec5('0x36')]('nolimit')){_0x24e525['limit']=qs['limit'](_0x3068bc['query'][_0x8ec5('0x1d')]);_0x24e525[_0x8ec5('0x1a')]=qs['offset'](_0x3068bc[_0x8ec5('0x30')][_0x8ec5('0x1a')]);}_0x24e525[_0x8ec5('0x37')]=qs['sort'](_0x3068bc['query'][_0x8ec5('0x38')]);_0x24e525['where']=qs['filters'](_['pick'](_0x3068bc[_0x8ec5('0x30')],_0x29d610[_0x8ec5('0x31')]),_0xca7623);if(_0x3068bc['query'][_0x8ec5('0x39')]){_0x24e525[_0x8ec5('0x3a')]=_[_0x8ec5('0x3b')](_0x24e525['where'],{'$or':_['map'](_0xca7623,function(_0x22d032){if(_0x22d032[_0x8ec5('0x3c')]!==_0x8ec5('0x3d')){var _0x4ad432={};_0x4ad432[_0x22d032['name']]={'$like':'%'+_0x3068bc[_0x8ec5('0x30')][_0x8ec5('0x39')]+'%'};return _0x4ad432;}})});}_0x24e525=_[_0x8ec5('0x3b')]({},_0x24e525,_0x3068bc['options']);var _0x4ff11d={'where':_0x24e525[_0x8ec5('0x3a')]};return db[_0x8ec5('0x2a')][_0x8ec5('0x1c')](_0x4ff11d)[_0x8ec5('0x23')](function(_0x2b18b6){_0x2878e2['count']=_0x2b18b6;if(_0x3068bc[_0x8ec5('0x30')][_0x8ec5('0x3e')]){_0x24e525[_0x8ec5('0x3f')]=[{'all':!![]}];}return db[_0x8ec5('0x2a')][_0x8ec5('0x40')](_0x24e525);})[_0x8ec5('0x23')](function(_0x1dc4e1){_0x2878e2[_0x8ec5('0x41')]=_0x1dc4e1;return _0x2878e2;})['then'](respondWithFilteredResult(_0xc432d1,_0x24e525))[_0x8ec5('0x42')](handleError(_0xc432d1,null));};exports[_0x8ec5('0x43')]=function(_0x3559fe,_0x5548bf){var _0x50b646={'raw':![],'where':{'id':_0x3559fe[_0x8ec5('0x44')]['id']}},_0x5792ca={};_0x5792ca[_0x8ec5('0x2e')]=_[_0x8ec5('0x45')](db[_0x8ec5('0x2a')][_0x8ec5('0x2b')]);_0x5792ca[_0x8ec5('0x30')]=_[_0x8ec5('0x45')](_0x3559fe[_0x8ec5('0x30')]);_0x5792ca[_0x8ec5('0x31')]=_[_0x8ec5('0x33')](_0x5792ca[_0x8ec5('0x2e')],_0x5792ca[_0x8ec5('0x30')]);_0x50b646[_0x8ec5('0x32')]=_[_0x8ec5('0x33')](_0x5792ca[_0x8ec5('0x2e')],qs[_0x8ec5('0x34')](_0x3559fe['query']['fields']));_0x50b646[_0x8ec5('0x32')]=_0x50b646[_0x8ec5('0x32')][_0x8ec5('0x35')]?_0x50b646[_0x8ec5('0x32')]:_0x5792ca[_0x8ec5('0x2e')];if(_0x3559fe[_0x8ec5('0x30')][_0x8ec5('0x3e')]){_0x50b646['include']=[{'all':!![]}];}_0x50b646=_[_0x8ec5('0x3b')]({},_0x50b646,_0x3559fe[_0x8ec5('0x46')]);return db['IntegrationReport'][_0x8ec5('0x47')](_0x50b646)[_0x8ec5('0x23')](handleEntityNotFound(_0x5548bf,null))['then'](respondWithResult(_0x5548bf,null))[_0x8ec5('0x42')](handleError(_0x5548bf,null));};exports['create']=function(_0x2f0ea7,_0x372583){return db[_0x8ec5('0x2a')]['create'](_0x2f0ea7[_0x8ec5('0x48')],{})[_0x8ec5('0x23')](respondWithResult(_0x372583,0xc9))[_0x8ec5('0x42')](handleError(_0x372583,null));};exports[_0x8ec5('0x49')]=function(_0x376363,_0x45c312){if(_0x376363[_0x8ec5('0x48')]['id']){delete _0x376363['body']['id'];}return db[_0x8ec5('0x2a')][_0x8ec5('0x47')]({'where':{'id':_0x376363[_0x8ec5('0x44')]['id']}})[_0x8ec5('0x23')](handleEntityNotFound(_0x45c312,null))[_0x8ec5('0x23')](saveUpdates(_0x376363['body'],null))['then'](respondWithResult(_0x45c312,null))[_0x8ec5('0x42')](handleError(_0x45c312,null));};exports[_0x8ec5('0x24')]=function(_0x3b24ec,_0x38da6b){return db[_0x8ec5('0x2a')][_0x8ec5('0x47')]({'where':{'id':_0x3b24ec[_0x8ec5('0x44')]['id']}})['then'](handleEntityNotFound(_0x38da6b,null))[_0x8ec5('0x23')](removeEntity(_0x38da6b,null))[_0x8ec5('0x42')](handleError(_0x38da6b,null));};exports[_0x8ec5('0x4a')]=function(_0x432a59,_0x3bddfe){return db['IntegrationReport'][_0x8ec5('0x4a')]()[_0x8ec5('0x23')](respondWithResult(_0x3bddfe,null))[_0x8ec5('0x42')](handleError(_0x3bddfe,null));};
\ No newline at end of file
index 4c76344..15cae8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5647=['request-promise','path','rimraf','./integrationReport.attributes','exports','define','IntegrationReport','report_integration','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x426fb9,_0x73b8ed){var _0x2d1760=function(_0x10d531){while(--_0x10d531){_0x426fb9['push'](_0x426fb9['shift']());}};_0x2d1760(++_0x73b8ed);}(_0x5647,0xda));var _0x7564=function(_0x348eb9,_0x31c7ec){_0x348eb9=_0x348eb9-0x0;var _0x20675a=_0x5647[_0x348eb9];return _0x20675a;};'use strict';var _=require(_0x7564('0x0'));var util=require(_0x7564('0x1'));var logger=require(_0x7564('0x2'))(_0x7564('0x3'));var moment=require(_0x7564('0x4'));var BPromise=require(_0x7564('0x5'));var rp=require(_0x7564('0x6'));var fs=require('fs');var path=require(_0x7564('0x7'));var rimraf=require(_0x7564('0x8'));var config=require('../../config/environment');var attributes=require(_0x7564('0x9'));module[_0x7564('0xa')]=function(_0x8dc51b,_0x3a6572){return _0x8dc51b[_0x7564('0xb')](_0x7564('0xc'),attributes,{'tableName':_0x7564('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0af1=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','IntegrationReport','report_integration','lodash','util','api'];(function(_0x7ca381,_0x4ddbe0){var _0x386e27=function(_0x1a6c75){while(--_0x1a6c75){_0x7ca381['push'](_0x7ca381['shift']());}};_0x386e27(++_0x4ddbe0);}(_0x0af1,0xa6));var _0x10af=function(_0x43aeeb,_0x58a455){_0x43aeeb=_0x43aeeb-0x0;var _0xf5c1e7=_0x0af1[_0x43aeeb];return _0xf5c1e7;};'use strict';var _=require(_0x10af('0x0'));var util=require(_0x10af('0x1'));var logger=require('../../config/logger')(_0x10af('0x2'));var moment=require(_0x10af('0x3'));var BPromise=require(_0x10af('0x4'));var rp=require(_0x10af('0x5'));var fs=require('fs');var path=require(_0x10af('0x6'));var rimraf=require(_0x10af('0x7'));var config=require(_0x10af('0x8'));var attributes=require('./integrationReport.attributes');module[_0x10af('0x9')]=function(_0x4a082c,_0x145d9f){return _0x4a082c[_0x10af('0xa')](_0x10af('0xb'),attributes,{'tableName':_0x10af('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c193b97..dad416d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x187d=['lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','message','catch'];(function(_0x3fe52d,_0x2c1f6d){var _0x31a995=function(_0x5c4486){while(--_0x5c4486){_0x3fe52d['push'](_0x3fe52d['shift']());}};_0x31a995(++_0x2c1f6d);}(_0x187d,0x93));var _0xd187=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0x187d[_0x4b7b62];return _0x2280df;};'use strict';var _=require(_0xd187('0x0'));var util=require('util');var moment=require(_0xd187('0x1'));var BPromise=require(_0xd187('0x2'));var rs=require(_0xd187('0x3'));var fs=require('fs');var Redis=require(_0xd187('0x4'));var db=require(_0xd187('0x5'))['db'];var utils=require(_0xd187('0x6'));var logger=require('../../config/logger')(_0xd187('0x7'));var config=require(_0xd187('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd187('0x9')][_0xd187('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x444a60,_0x1d3fe4,_0x28ce2f){return new BPromise(function(_0x2d6992,_0x358c45){return client[_0xd187('0xb')](_0x444a60,_0x28ce2f)['then'](function(_0x342539){logger[_0xd187('0xc')](_0xd187('0xd'),_0x1d3fe4,_0xd187('0xe'));logger[_0xd187('0xf')](_0xd187('0x10'),_0x1d3fe4,'request\x20sent',JSON[_0xd187('0x11')](_0x342539));if(_0x342539[_0xd187('0x12')]){if(_0x342539[_0xd187('0x12')]['code']===0x1f4){logger[_0xd187('0x12')](_0xd187('0xd'),_0x1d3fe4,_0x342539[_0xd187('0x12')]['message']);return _0x358c45(_0x342539[_0xd187('0x12')][_0xd187('0x13')]);}logger[_0xd187('0x12')](_0xd187('0xd'),_0x1d3fe4,_0x342539['error'][_0xd187('0x13')]);return _0x2d6992(_0x342539[_0xd187('0x12')][_0xd187('0x13')]);}else{logger[_0xd187('0xc')]('IntegrationReport,\x20%s,\x20%s',_0x1d3fe4,_0xd187('0xe'));_0x2d6992(_0x342539['result']['message']);}})[_0xd187('0x14')](function(_0x5a4986){logger['error'](_0xd187('0xd'),_0x1d3fe4,_0x5a4986);_0x358c45(_0x5a4986);});});}
\ No newline at end of file
+var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x16ee48,_0x4e660d){var _0x23f7bf=function(_0x31464e){while(--_0x31464e){_0x16ee48['push'](_0x16ee48['shift']());}};_0x23f7bf(++_0x4e660d);}(_0xadb5,0xad));var _0x5adb=function(_0x3e3555,_0x5b3112){_0x3e3555=_0x3e3555-0x0;var _0x491599=_0xadb5[_0x3e3555];return _0x491599;};'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']('IntegrationReport,\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);});});}
\ No newline at end of file
index 9c77e09..e013a60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9de8=['fs-extra','../../components/auth/service','../../components/interaction/service','get','/:id','show','/:id/sub_intervals','isAuthenticated','post','create','addInterval','/:id/sub_intervals/create_many','addIntervals','put','delete','exports','multer','path','connect-timeout','Router'];(function(_0xf364d3,_0x42ce52){var _0xe0abc6=function(_0x27412c){while(--_0x27412c){_0xf364d3['push'](_0xf364d3['shift']());}};_0xe0abc6(++_0x42ce52);}(_0x9de8,0x88));var _0x89de=function(_0xc9c69b,_0x58dbf9){_0xc9c69b=_0xc9c69b-0x0;var _0x16f3aa=_0x9de8[_0xc9c69b];return _0x16f3aa;};'use strict';var multer=require(_0x89de('0x0'));var util=require('util');var path=require(_0x89de('0x1'));var timeout=require(_0x89de('0x2'));var express=require('express');var router=express[_0x89de('0x3')]();var fs_extra=require(_0x89de('0x4'));var auth=require(_0x89de('0x5'));var interaction=require(_0x89de('0x6'));var config=require('../../config/environment');var controller=require('./interval.controller');router[_0x89de('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x89de('0x8'),auth['isAuthenticated'](),controller[_0x89de('0x9')]);router[_0x89de('0x7')](_0x89de('0xa'),auth[_0x89de('0xb')](),controller['getIntervals']);router[_0x89de('0xc')]('/',auth[_0x89de('0xb')](),controller[_0x89de('0xd')]);router[_0x89de('0xc')](_0x89de('0xa'),auth[_0x89de('0xb')](),controller[_0x89de('0xe')]);router[_0x89de('0xc')](_0x89de('0xf'),auth[_0x89de('0xb')](),controller[_0x89de('0x10')]);router[_0x89de('0x11')](_0x89de('0x8'),auth[_0x89de('0xb')](),controller['update']);router[_0x89de('0x12')]('/:id',auth[_0x89de('0xb')](),controller['destroy']);module[_0x89de('0x13')]=router;
\ No newline at end of file
+var _0x848e=['destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./interval.controller','get','isAuthenticated','/:id','/:id/sub_intervals','getIntervals','post','create','addInterval','/:id/sub_intervals/create_many','addIntervals','put','update','delete'];(function(_0x2cd19,_0x5f4e46){var _0x19c8fe=function(_0x3bc2f3){while(--_0x3bc2f3){_0x2cd19['push'](_0x2cd19['shift']());}};_0x19c8fe(++_0x5f4e46);}(_0x848e,0x1e2));var _0xe848=function(_0x40d5c8,_0x411c6e){_0x40d5c8=_0x40d5c8-0x0;var _0x5f294f=_0x848e[_0x40d5c8];return _0x5f294f;};'use strict';var multer=require(_0xe848('0x0'));var util=require('util');var path=require(_0xe848('0x1'));var timeout=require(_0xe848('0x2'));var express=require('express');var router=express[_0xe848('0x3')]();var fs_extra=require(_0xe848('0x4'));var auth=require(_0xe848('0x5'));var interaction=require(_0xe848('0x6'));var config=require(_0xe848('0x7'));var controller=require(_0xe848('0x8'));router[_0xe848('0x9')]('/',auth[_0xe848('0xa')](),controller['index']);router[_0xe848('0x9')](_0xe848('0xb'),auth[_0xe848('0xa')](),controller['show']);router['get'](_0xe848('0xc'),auth[_0xe848('0xa')](),controller[_0xe848('0xd')]);router[_0xe848('0xe')]('/',auth['isAuthenticated'](),controller[_0xe848('0xf')]);router[_0xe848('0xe')]('/:id/sub_intervals',auth[_0xe848('0xa')](),controller[_0xe848('0x10')]);router[_0xe848('0xe')](_0xe848('0x11'),auth[_0xe848('0xa')](),controller[_0xe848('0x12')]);router[_0xe848('0x13')](_0xe848('0xb'),auth['isAuthenticated'](),controller[_0xe848('0x14')]);router[_0xe848('0x15')](_0xe848('0xb'),auth[_0xe848('0xa')](),controller[_0xe848('0x16')]);module[_0xe848('0x17')]=router;
\ No newline at end of file
index beb46ce..790180a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0767=['STRING','sequelize','exports'];(function(_0x5155fd,_0xaa956f){var _0x1bf312=function(_0x1e8a0e){while(--_0x1e8a0e){_0x5155fd['push'](_0x5155fd['shift']());}};_0x1bf312(++_0xaa956f);}(_0x0767,0x169));var _0x7076=function(_0x1e42cc,_0x129b05){_0x1e42cc=_0x1e42cc-0x0;var _0x145a9d=_0x0767[_0x1e42cc];return _0x145a9d;};'use strict';var Sequelize=require(_0x7076('0x0'));module[_0x7076('0x1')]={'name':{'type':Sequelize[_0x7076('0x2')]},'description':{'type':Sequelize[_0x7076('0x2')]},'interval':{'type':Sequelize[_0x7076('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xd764=['sequelize','exports','STRING'];(function(_0x116322,_0x388496){var _0x1aea71=function(_0x52577e){while(--_0x52577e){_0x116322['push'](_0x116322['shift']());}};_0x1aea71(++_0x388496);}(_0xd764,0x1d1));var _0x4d76=function(_0x6864cc,_0x255258){_0x6864cc=_0x6864cc-0x0;var _0x3a776c=_0xd764[_0x6864cc];return _0x3a776c;};'use strict';var Sequelize=require(_0x4d76('0x0'));module[_0x4d76('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x4d76('0x2')]},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
index c8bf431..bff66b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec18=['includeAll','include','catch','show','params','rawAttributes','intersection','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','addInterval','IntervalId','getIntervals','addIntervals','findOne','sequelize','transaction','findAll','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','save','then','get','Intervals','UserProfileResource','destroy','error','name','send','index','map','Interval','fieldName','type','key','model','query','keys','fields','attributes','hasOwnProperty','nolimit','order','sort','filters','pick','filter','merge','where','VIRTUAL','options'];(function(_0x92c450,_0x41f1e3){var _0x2a9599=function(_0x4f27df){while(--_0x4f27df){_0x92c450['push'](_0x92c450['shift']());}};_0x2a9599(++_0x41f1e3);}(_0xec18,0xcc));var _0x8ec1=function(_0x12f2f1,_0x13fcd5){_0x12f2f1=_0x12f2f1-0x0;var _0x2d699b=_0xec18[_0x12f2f1];return _0x2d699b;};'use strict';var emlformat=require(_0x8ec1('0x0'));var rimraf=require(_0x8ec1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8ec1('0x2'));var rp=require('request-promise');var moment=require(_0x8ec1('0x3'));var BPromise=require(_0x8ec1('0x4'));var Mustache=require(_0x8ec1('0x5'));var util=require(_0x8ec1('0x6'));var path=require(_0x8ec1('0x7'));var sox=require(_0x8ec1('0x8'));var csv=require(_0x8ec1('0x9'));var ejs=require(_0x8ec1('0xa'));var fs=require('fs');var fs_extra=require(_0x8ec1('0xb'));var _=require(_0x8ec1('0xc'));var squel=require('squel');var crypto=require(_0x8ec1('0xd'));var jsforce=require(_0x8ec1('0xe'));var deskjs=require(_0x8ec1('0xf'));var toCsv=require(_0x8ec1('0x9'));var querystring=require(_0x8ec1('0x10'));var Papa=require(_0x8ec1('0x11'));var Redis=require('ioredis');var authService=require(_0x8ec1('0x12'));var qs=require(_0x8ec1('0x13'));var as=require(_0x8ec1('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8ec1('0x15'))('api');var utils=require(_0x8ec1('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x8ec1('0x17'))['db'];var extensions=require('../../components/extensions/rewrite');function respondWithStatusCode(_0x138221,_0x3a61ef){_0x3a61ef=_0x3a61ef||0xcc;return function(_0x50856b){if(_0x50856b){return _0x138221[_0x8ec1('0x18')](_0x3a61ef);}return _0x138221[_0x8ec1('0x19')](_0x3a61ef)[_0x8ec1('0x1a')]();};}function respondWithResult(_0x4fbaec,_0x1786f2){_0x1786f2=_0x1786f2||0xc8;return function(_0x4ccfb4){if(_0x4ccfb4){return _0x4fbaec[_0x8ec1('0x19')](_0x1786f2)['json'](_0x4ccfb4);}};}function respondWithFilteredResult(_0x17473a,_0x1ba88d){return function(_0x53fb64){if(_0x53fb64){var _0x18d285=typeof _0x1ba88d[_0x8ec1('0x1b')]==='undefined'&&typeof _0x1ba88d[_0x8ec1('0x1c')]===_0x8ec1('0x1d');var _0xab4df8=_0x53fb64[_0x8ec1('0x1e')];var _0x1840ef=_0x18d285?0x0:_0x1ba88d['offset'];var _0x5bfcd4=_0x18d285?_0x53fb64[_0x8ec1('0x1e')]:_0x1ba88d[_0x8ec1('0x1b')]+_0x1ba88d[_0x8ec1('0x1c')];var _0x536328;if(_0x5bfcd4>=_0xab4df8){_0x5bfcd4=_0xab4df8;_0x536328=0xc8;}else{_0x536328=0xce;}_0x17473a[_0x8ec1('0x19')](_0x536328);return _0x17473a[_0x8ec1('0x1f')](_0x8ec1('0x20'),_0x1840ef+'-'+_0x5bfcd4+'/'+_0xab4df8)[_0x8ec1('0x21')](_0x53fb64);}return null;};}function patchUpdates(_0x58926d){return function(_0x1b27a4){try{jsonpatch[_0x8ec1('0x22')](_0x1b27a4,_0x58926d,!![]);}catch(_0x5df1ad){return BPromise['reject'](_0x5df1ad);}return _0x1b27a4[_0x8ec1('0x23')]();};}function saveUpdates(_0x515c88,_0x2fdadf){return function(_0x190623){if(_0x190623){return _0x190623['update'](_0x515c88)[_0x8ec1('0x24')](function(_0x30f0ce){return _0x30f0ce;});}return null;};}function removeEntity(_0x530da2,_0x37d175){return function(_0xc62dad){if(_0xc62dad){return _0xc62dad['destroy']()[_0x8ec1('0x24')](function(){var _0x1b390b=_0xc62dad[_0x8ec1('0x25')]({'plain':!![]});var _0x41162f=_0x8ec1('0x26');return db[_0x8ec1('0x27')][_0x8ec1('0x28')]({'where':{'type':_0x41162f,'resourceId':_0x1b390b['id']}})[_0x8ec1('0x24')](function(){return _0xc62dad;});})['then'](function(){_0x530da2[_0x8ec1('0x19')](0xcc)[_0x8ec1('0x1a')]();});}};}function handleEntityNotFound(_0x5e71ed,_0xfb6e5f){return function(_0x38945b){if(!_0x38945b){_0x5e71ed['sendStatus'](0x194);}return _0x38945b;};}function handleError(_0x179797,_0x5d87be){_0x5d87be=_0x5d87be||0x1f4;return function(_0x234d04){logger[_0x8ec1('0x29')](_0x234d04['stack']);if(_0x234d04['name']){delete _0x234d04[_0x8ec1('0x2a')];}_0x179797['status'](_0x5d87be)[_0x8ec1('0x2b')](_0x234d04);};}exports[_0x8ec1('0x2c')]=function(_0x1de3b7,_0x164899){var _0x5ddbd2={},_0x401856={},_0x35edae={'count':0x0,'rows':[]};var _0x58d7fc=_[_0x8ec1('0x2d')](db[_0x8ec1('0x2e')]['rawAttributes'],function(_0x5d8833){return{'name':_0x5d8833[_0x8ec1('0x2f')],'type':_0x5d8833[_0x8ec1('0x30')][_0x8ec1('0x31')]};});_0x401856[_0x8ec1('0x32')]=_[_0x8ec1('0x2d')](_0x58d7fc,_0x8ec1('0x2a'));_0x401856[_0x8ec1('0x33')]=_[_0x8ec1('0x34')](_0x1de3b7['query']);_0x401856['filters']=_['intersection'](_0x401856[_0x8ec1('0x32')],_0x401856[_0x8ec1('0x33')]);_0x5ddbd2['attributes']=_['intersection'](_0x401856[_0x8ec1('0x32')],qs[_0x8ec1('0x35')](_0x1de3b7['query'][_0x8ec1('0x35')]));_0x5ddbd2[_0x8ec1('0x36')]=_0x5ddbd2[_0x8ec1('0x36')]['length']?_0x5ddbd2['attributes']:_0x401856['model'];if(!_0x1de3b7[_0x8ec1('0x33')][_0x8ec1('0x37')](_0x8ec1('0x38'))){_0x5ddbd2['limit']=qs[_0x8ec1('0x1c')](_0x1de3b7[_0x8ec1('0x33')]['limit']);_0x5ddbd2[_0x8ec1('0x1b')]=qs[_0x8ec1('0x1b')](_0x1de3b7[_0x8ec1('0x33')][_0x8ec1('0x1b')]);}_0x5ddbd2[_0x8ec1('0x39')]=qs['sort'](_0x1de3b7['query'][_0x8ec1('0x3a')]);_0x5ddbd2['where']=qs[_0x8ec1('0x3b')](_[_0x8ec1('0x3c')](_0x1de3b7[_0x8ec1('0x33')],_0x401856[_0x8ec1('0x3b')]),_0x58d7fc);if(_0x1de3b7['query'][_0x8ec1('0x3d')]){_0x5ddbd2['where']=_[_0x8ec1('0x3e')](_0x5ddbd2[_0x8ec1('0x3f')],{'$or':_['map'](_0x58d7fc,function(_0x37e210){if(_0x37e210[_0x8ec1('0x30')]!==_0x8ec1('0x40')){var _0x4cc692={};_0x4cc692[_0x37e210[_0x8ec1('0x2a')]]={'$like':'%'+_0x1de3b7[_0x8ec1('0x33')]['filter']+'%'};return _0x4cc692;}})});}_0x5ddbd2=_[_0x8ec1('0x3e')]({},_0x5ddbd2,_0x1de3b7[_0x8ec1('0x41')]);var _0x130573={'where':_0x5ddbd2['where']};return db[_0x8ec1('0x2e')]['count'](_0x130573)[_0x8ec1('0x24')](function(_0x300dc2){_0x35edae[_0x8ec1('0x1e')]=_0x300dc2;if(_0x1de3b7[_0x8ec1('0x33')][_0x8ec1('0x42')]){_0x5ddbd2[_0x8ec1('0x43')]=[{'all':!![]}];}return db[_0x8ec1('0x2e')]['findAll'](_0x5ddbd2);})['then'](function(_0x1c26df){_0x35edae['rows']=_0x1c26df;return _0x35edae;})[_0x8ec1('0x24')](respondWithFilteredResult(_0x164899,_0x5ddbd2))[_0x8ec1('0x44')](handleError(_0x164899,null));};exports[_0x8ec1('0x45')]=function(_0xc8833,_0x11afa2){var _0x26db5c={'raw':!![],'where':{'id':_0xc8833[_0x8ec1('0x46')]['id']}},_0x5b41e9={};_0x5b41e9[_0x8ec1('0x32')]=_[_0x8ec1('0x34')](db[_0x8ec1('0x2e')][_0x8ec1('0x47')]);_0x5b41e9['query']=_['keys'](_0xc8833['query']);_0x5b41e9['filters']=_[_0x8ec1('0x48')](_0x5b41e9[_0x8ec1('0x32')],_0x5b41e9['query']);_0x26db5c[_0x8ec1('0x36')]=_[_0x8ec1('0x48')](_0x5b41e9[_0x8ec1('0x32')],qs[_0x8ec1('0x35')](_0xc8833[_0x8ec1('0x33')][_0x8ec1('0x35')]));_0x26db5c['attributes']=_0x26db5c[_0x8ec1('0x36')][_0x8ec1('0x49')]?_0x26db5c['attributes']:_0x5b41e9[_0x8ec1('0x32')];if(_0xc8833[_0x8ec1('0x33')][_0x8ec1('0x42')]){_0x26db5c[_0x8ec1('0x43')]=[{'all':!![]}];}_0x26db5c=_['merge']({},_0x26db5c,_0xc8833[_0x8ec1('0x41')]);return db[_0x8ec1('0x2e')]['find'](_0x26db5c)[_0x8ec1('0x24')](handleEntityNotFound(_0x11afa2,null))[_0x8ec1('0x24')](respondWithResult(_0x11afa2,null))[_0x8ec1('0x44')](handleError(_0x11afa2,null));};exports['create']=function(_0x56eecc,_0x4c9720){return db['Interval'][_0x8ec1('0x4a')](_0x56eecc[_0x8ec1('0x4b')],{})[_0x8ec1('0x24')](function(_0x1abea1){var _0x1a0fcd=_0x56eecc[_0x8ec1('0x4c')]['get']({'plain':!![]});if(!_0x1a0fcd)throw new Error(_0x8ec1('0x4d'));if(_0x1a0fcd['role']===_0x8ec1('0x4c')){var _0x36562b=_0x1abea1[_0x8ec1('0x25')]({'plain':!![]});var _0x299dc5='Intervals';return db['UserProfileSection'][_0x8ec1('0x4e')]({'where':{'name':_0x299dc5,'userProfileId':_0x1a0fcd[_0x8ec1('0x4f')]},'raw':!![]})[_0x8ec1('0x24')](function(_0xe43130){if(_0xe43130&&_0xe43130['autoAssociation']===0x0){return db[_0x8ec1('0x27')]['create']({'name':_0x36562b['name'],'resourceId':_0x36562b['id'],'type':_0xe43130[_0x8ec1('0x2a')],'sectionId':_0xe43130['id']},{})[_0x8ec1('0x24')](function(){return _0x1abea1;});}else{return _0x1abea1;}})['catch'](function(_0x986ca1){logger['error'](_0x8ec1('0x50'),_0x986ca1);throw _0x986ca1;});}return _0x1abea1;})[_0x8ec1('0x24')](respondWithResult(_0x4c9720,0xc9))[_0x8ec1('0x44')](handleError(_0x4c9720,null));};exports[_0x8ec1('0x51')]=function(_0x35360d,_0x57957c){if(_0x35360d[_0x8ec1('0x4b')]['id']){delete _0x35360d[_0x8ec1('0x4b')]['id'];}return db[_0x8ec1('0x2e')]['find']({'where':{'id':_0x35360d[_0x8ec1('0x46')]['id']}})['then'](handleEntityNotFound(_0x57957c,null))[_0x8ec1('0x24')](saveUpdates(_0x35360d[_0x8ec1('0x4b')],null))[_0x8ec1('0x24')](respondWithResult(_0x57957c,null))[_0x8ec1('0x44')](handleError(_0x57957c,null));};exports[_0x8ec1('0x28')]=function(_0x59f4d5,_0x23809f){return db[_0x8ec1('0x2e')][_0x8ec1('0x4e')]({'where':{'id':_0x59f4d5[_0x8ec1('0x46')]['id']}})[_0x8ec1('0x24')](handleEntityNotFound(_0x23809f,null))['then'](removeEntity(_0x23809f,null))[_0x8ec1('0x44')](handleError(_0x23809f,null));};exports[_0x8ec1('0x52')]=function(_0xe67ac7,_0x55173b,_0x23f97a){if(_0xe67ac7[_0x8ec1('0x4b')]['id']){delete _0xe67ac7['body']['id'];}return db[_0x8ec1('0x2e')][_0x8ec1('0x4e')]({'where':{'id':_0xe67ac7[_0x8ec1('0x46')]['id']}})['then'](handleEntityNotFound(_0x55173b,null))[_0x8ec1('0x24')](function(_0x16534d){if(_0x16534d){_0xe67ac7[_0x8ec1('0x4b')][_0x8ec1('0x53')]=_0x16534d['id'];return db[_0x8ec1('0x2e')][_0x8ec1('0x4a')](_0xe67ac7['body']);}})[_0x8ec1('0x24')](respondWithResult(_0x55173b,null))[_0x8ec1('0x44')](handleError(_0x55173b,null));};exports[_0x8ec1('0x54')]=function(_0x5064f0,_0x359e3a,_0x492cd1){var _0x13f077={};var _0x43c1d8={};var _0x2e5cb7;var _0x3566e0;return db[_0x8ec1('0x2e')]['findOne']({'where':{'id':_0x5064f0['params']['id']}})[_0x8ec1('0x24')](handleEntityNotFound(_0x359e3a,null))[_0x8ec1('0x24')](function(_0x27d105){if(_0x27d105){_0x2e5cb7=_0x27d105;_0x43c1d8[_0x8ec1('0x32')]=_['keys'](db['Interval'][_0x8ec1('0x47')]);_0x43c1d8[_0x8ec1('0x33')]=_[_0x8ec1('0x34')](_0x5064f0['query']);_0x43c1d8[_0x8ec1('0x3b')]=_[_0x8ec1('0x48')](_0x43c1d8[_0x8ec1('0x32')],_0x43c1d8[_0x8ec1('0x33')]);_0x13f077[_0x8ec1('0x36')]=_[_0x8ec1('0x48')](_0x43c1d8[_0x8ec1('0x32')],qs['fields'](_0x5064f0[_0x8ec1('0x33')][_0x8ec1('0x35')]));_0x13f077['attributes']=_0x13f077[_0x8ec1('0x36')][_0x8ec1('0x49')]?_0x13f077[_0x8ec1('0x36')]:_0x43c1d8[_0x8ec1('0x32')];_0x13f077[_0x8ec1('0x39')]=qs['sort'](_0x5064f0[_0x8ec1('0x33')]['sort']);_0x13f077[_0x8ec1('0x3f')]=qs[_0x8ec1('0x3b')](_['pick'](_0x5064f0['query'],_0x43c1d8['filters']));if(_0x5064f0[_0x8ec1('0x33')][_0x8ec1('0x3d')]){_0x13f077['where']=_['merge'](_0x13f077[_0x8ec1('0x3f')],{'$or':_['map'](_0x13f077['attributes'],function(_0x24c918){var _0x16807f={};_0x16807f[_0x24c918]={'$like':'%'+_0x5064f0['query'][_0x8ec1('0x3d')]+'%'};return _0x16807f;})});}_0x13f077=_['merge']({},_0x13f077,_0x5064f0[_0x8ec1('0x41')]);return _0x2e5cb7[_0x8ec1('0x54')](_0x13f077);}})[_0x8ec1('0x24')](function(_0x4b312b){if(_0x4b312b){_0x3566e0=_0x4b312b[_0x8ec1('0x49')];if(!_0x5064f0[_0x8ec1('0x33')][_0x8ec1('0x37')](_0x8ec1('0x38'))){_0x13f077[_0x8ec1('0x1c')]=qs[_0x8ec1('0x1c')](_0x5064f0[_0x8ec1('0x33')][_0x8ec1('0x1c')]);_0x13f077[_0x8ec1('0x1b')]=qs[_0x8ec1('0x1b')](_0x5064f0[_0x8ec1('0x33')][_0x8ec1('0x1b')]);}return _0x2e5cb7[_0x8ec1('0x54')](_0x13f077);}})[_0x8ec1('0x24')](function(_0x3d4003){if(_0x3d4003){return _0x3d4003?{'count':_0x3566e0,'rows':_0x3d4003}:null;}})['then'](respondWithResult(_0x359e3a,null))[_0x8ec1('0x44')](handleError(_0x359e3a,null));};exports[_0x8ec1('0x55')]=function(_0x4d9229,_0x8a7610,_0x8d5321){return db[_0x8ec1('0x2e')][_0x8ec1('0x56')]({'where':{'id':_0x4d9229[_0x8ec1('0x46')]['id']}})[_0x8ec1('0x24')](handleEntityNotFound(_0x8a7610,null))[_0x8ec1('0x24')](function(_0x279309){if(_0x279309){return db[_0x8ec1('0x57')][_0x8ec1('0x58')](function(_0x59c647){return db[_0x8ec1('0x2e')][_0x8ec1('0x28')]({'where':{'IntervalId':_0x4d9229[_0x8ec1('0x46')]['id']},'transaction':_0x59c647})[_0x8ec1('0x24')](function(_0x3dbb42){var _0x1037e4=_['map'](_0x4d9229['body'],function(_0x579946){delete _0x579946['id'];_0x579946['IntervalId']=_0x4d9229['params']['id'];return _0x579946;});return db[_0x8ec1('0x2e')]['bulkCreate'](_0x1037e4,{'transaction':_0x59c647});});})[_0x8ec1('0x24')](function(){return db[_0x8ec1('0x2e')][_0x8ec1('0x59')]({'where':{'IntervalId':_0x4d9229[_0x8ec1('0x46')]['id']}});});}})[_0x8ec1('0x24')](respondWithResult(_0x8a7610,null))[_0x8ec1('0x44')](handleError(_0x8a7610,null));};
\ No newline at end of file
+var _0xe740=['save','update','then','destroy','get','Intervals','UserProfileResource','error','name','send','index','map','fieldName','key','model','keys','filters','intersection','attributes','fields','length','query','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','merge','options','Interval','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','role','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addInterval','IntervalId','getIntervals','findOne','addIntervals','sequelize','bulkCreate','request-promise','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject'];(function(_0x4e2fa1,_0x305851){var _0x22f85d=function(_0x451192){while(--_0x451192){_0x4e2fa1['push'](_0x4e2fa1['shift']());}};_0x22f85d(++_0x305851);}(_0xe740,0x143));var _0x0e74=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xe740[_0x13d07a];return _0x5ee0ee;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0e74('0x0'));var moment=require('moment');var BPromise=require(_0x0e74('0x1'));var Mustache=require('mustache');var util=require(_0x0e74('0x2'));var path=require(_0x0e74('0x3'));var sox=require('sox');var csv=require(_0x0e74('0x4'));var ejs=require(_0x0e74('0x5'));var fs=require('fs');var fs_extra=require(_0x0e74('0x6'));var _=require(_0x0e74('0x7'));var squel=require(_0x0e74('0x8'));var crypto=require(_0x0e74('0x9'));var jsforce=require(_0x0e74('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0e74('0xb'));var Papa=require(_0x0e74('0xc'));var Redis=require(_0x0e74('0xd'));var authService=require(_0x0e74('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x0e74('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x0e74('0x10'));var utils=require(_0x0e74('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x0e74('0x12'));var db=require(_0x0e74('0x13'))['db'];var extensions=require(_0x0e74('0x14'));function respondWithStatusCode(_0x3867bc,_0x557e58){_0x557e58=_0x557e58||0xcc;return function(_0xfedf9c){if(_0xfedf9c){return _0x3867bc[_0x0e74('0x15')](_0x557e58);}return _0x3867bc[_0x0e74('0x16')](_0x557e58)[_0x0e74('0x17')]();};}function respondWithResult(_0x1df0c3,_0xa2236f){_0xa2236f=_0xa2236f||0xc8;return function(_0x796026){if(_0x796026){return _0x1df0c3[_0x0e74('0x16')](_0xa2236f)[_0x0e74('0x18')](_0x796026);}};}function respondWithFilteredResult(_0x5cd0ee,_0x8039f9){return function(_0x43832a){if(_0x43832a){var _0xb405e5=typeof _0x8039f9[_0x0e74('0x19')]===_0x0e74('0x1a')&&typeof _0x8039f9[_0x0e74('0x1b')]===_0x0e74('0x1a');var _0x33a4cd=_0x43832a[_0x0e74('0x1c')];var _0x28d5a2=_0xb405e5?0x0:_0x8039f9['offset'];var _0x40f3b=_0xb405e5?_0x43832a[_0x0e74('0x1c')]:_0x8039f9[_0x0e74('0x19')]+_0x8039f9['limit'];var _0x48f7c2;if(_0x40f3b>=_0x33a4cd){_0x40f3b=_0x33a4cd;_0x48f7c2=0xc8;}else{_0x48f7c2=0xce;}_0x5cd0ee[_0x0e74('0x16')](_0x48f7c2);return _0x5cd0ee[_0x0e74('0x1d')](_0x0e74('0x1e'),_0x28d5a2+'-'+_0x40f3b+'/'+_0x33a4cd)[_0x0e74('0x18')](_0x43832a);}return null;};}function patchUpdates(_0x78363f){return function(_0x1f9d71){try{jsonpatch[_0x0e74('0x1f')](_0x1f9d71,_0x78363f,!![]);}catch(_0x16620e){return BPromise[_0x0e74('0x20')](_0x16620e);}return _0x1f9d71[_0x0e74('0x21')]();};}function saveUpdates(_0x16d176,_0x3dc3ec){return function(_0x3e6114){if(_0x3e6114){return _0x3e6114[_0x0e74('0x22')](_0x16d176)[_0x0e74('0x23')](function(_0x5ac5e9){return _0x5ac5e9;});}return null;};}function removeEntity(_0x48b609,_0x288eed){return function(_0x271073){if(_0x271073){return _0x271073[_0x0e74('0x24')]()['then'](function(){var _0x2d1cb9=_0x271073[_0x0e74('0x25')]({'plain':!![]});var _0x239616=_0x0e74('0x26');return db[_0x0e74('0x27')][_0x0e74('0x24')]({'where':{'type':_0x239616,'resourceId':_0x2d1cb9['id']}})[_0x0e74('0x23')](function(){return _0x271073;});})[_0x0e74('0x23')](function(){_0x48b609[_0x0e74('0x16')](0xcc)[_0x0e74('0x17')]();});}};}function handleEntityNotFound(_0x10fcd5,_0x2cab8f){return function(_0x5691d9){if(!_0x5691d9){_0x10fcd5[_0x0e74('0x15')](0x194);}return _0x5691d9;};}function handleError(_0x5474bd,_0x35db76){_0x35db76=_0x35db76||0x1f4;return function(_0x27fcad){logger[_0x0e74('0x28')](_0x27fcad['stack']);if(_0x27fcad[_0x0e74('0x29')]){delete _0x27fcad['name'];}_0x5474bd[_0x0e74('0x16')](_0x35db76)[_0x0e74('0x2a')](_0x27fcad);};}exports[_0x0e74('0x2b')]=function(_0x2dd871,_0x55d5d1){var _0x5cc102={},_0x3df022={},_0x17a64a={'count':0x0,'rows':[]};var _0x35fd3c=_[_0x0e74('0x2c')](db['Interval']['rawAttributes'],function(_0x40d623){return{'name':_0x40d623[_0x0e74('0x2d')],'type':_0x40d623['type'][_0x0e74('0x2e')]};});_0x3df022[_0x0e74('0x2f')]=_['map'](_0x35fd3c,'name');_0x3df022['query']=_[_0x0e74('0x30')](_0x2dd871['query']);_0x3df022[_0x0e74('0x31')]=_[_0x0e74('0x32')](_0x3df022[_0x0e74('0x2f')],_0x3df022['query']);_0x5cc102[_0x0e74('0x33')]=_[_0x0e74('0x32')](_0x3df022[_0x0e74('0x2f')],qs[_0x0e74('0x34')](_0x2dd871['query'][_0x0e74('0x34')]));_0x5cc102[_0x0e74('0x33')]=_0x5cc102['attributes'][_0x0e74('0x35')]?_0x5cc102['attributes']:_0x3df022[_0x0e74('0x2f')];if(!_0x2dd871[_0x0e74('0x36')][_0x0e74('0x37')](_0x0e74('0x38'))){_0x5cc102['limit']=qs[_0x0e74('0x1b')](_0x2dd871['query'][_0x0e74('0x1b')]);_0x5cc102[_0x0e74('0x19')]=qs[_0x0e74('0x19')](_0x2dd871[_0x0e74('0x36')]['offset']);}_0x5cc102[_0x0e74('0x39')]=qs['sort'](_0x2dd871[_0x0e74('0x36')][_0x0e74('0x3a')]);_0x5cc102[_0x0e74('0x3b')]=qs[_0x0e74('0x31')](_[_0x0e74('0x3c')](_0x2dd871[_0x0e74('0x36')],_0x3df022[_0x0e74('0x31')]),_0x35fd3c);if(_0x2dd871[_0x0e74('0x36')][_0x0e74('0x3d')]){_0x5cc102[_0x0e74('0x3b')]=_['merge'](_0x5cc102[_0x0e74('0x3b')],{'$or':_[_0x0e74('0x2c')](_0x35fd3c,function(_0x4c6330){if(_0x4c6330[_0x0e74('0x3e')]!=='VIRTUAL'){var _0x143ac9={};_0x143ac9[_0x4c6330[_0x0e74('0x29')]]={'$like':'%'+_0x2dd871[_0x0e74('0x36')][_0x0e74('0x3d')]+'%'};return _0x143ac9;}})});}_0x5cc102=_[_0x0e74('0x3f')]({},_0x5cc102,_0x2dd871[_0x0e74('0x40')]);var _0x297a6a={'where':_0x5cc102[_0x0e74('0x3b')]};return db[_0x0e74('0x41')][_0x0e74('0x1c')](_0x297a6a)[_0x0e74('0x23')](function(_0x373239){_0x17a64a[_0x0e74('0x1c')]=_0x373239;if(_0x2dd871[_0x0e74('0x36')][_0x0e74('0x42')]){_0x5cc102[_0x0e74('0x43')]=[{'all':!![]}];}return db[_0x0e74('0x41')][_0x0e74('0x44')](_0x5cc102);})[_0x0e74('0x23')](function(_0x124ab0){_0x17a64a[_0x0e74('0x45')]=_0x124ab0;return _0x17a64a;})['then'](respondWithFilteredResult(_0x55d5d1,_0x5cc102))[_0x0e74('0x46')](handleError(_0x55d5d1,null));};exports[_0x0e74('0x47')]=function(_0xa0a752,_0x300fad){var _0x2b8668={'raw':!![],'where':{'id':_0xa0a752[_0x0e74('0x48')]['id']}},_0x2550df={};_0x2550df['model']=_[_0x0e74('0x30')](db[_0x0e74('0x41')][_0x0e74('0x49')]);_0x2550df[_0x0e74('0x36')]=_['keys'](_0xa0a752[_0x0e74('0x36')]);_0x2550df[_0x0e74('0x31')]=_['intersection'](_0x2550df['model'],_0x2550df[_0x0e74('0x36')]);_0x2b8668['attributes']=_['intersection'](_0x2550df[_0x0e74('0x2f')],qs[_0x0e74('0x34')](_0xa0a752[_0x0e74('0x36')][_0x0e74('0x34')]));_0x2b8668[_0x0e74('0x33')]=_0x2b8668[_0x0e74('0x33')][_0x0e74('0x35')]?_0x2b8668['attributes']:_0x2550df[_0x0e74('0x2f')];if(_0xa0a752['query'][_0x0e74('0x42')]){_0x2b8668[_0x0e74('0x43')]=[{'all':!![]}];}_0x2b8668=_[_0x0e74('0x3f')]({},_0x2b8668,_0xa0a752[_0x0e74('0x40')]);return db[_0x0e74('0x41')][_0x0e74('0x4a')](_0x2b8668)[_0x0e74('0x23')](handleEntityNotFound(_0x300fad,null))[_0x0e74('0x23')](respondWithResult(_0x300fad,null))['catch'](handleError(_0x300fad,null));};exports[_0x0e74('0x4b')]=function(_0x530d39,_0x19ab70){return db[_0x0e74('0x41')][_0x0e74('0x4b')](_0x530d39[_0x0e74('0x4c')],{})[_0x0e74('0x23')](function(_0x49e769){var _0xaa974=_0x530d39['user'][_0x0e74('0x25')]({'plain':!![]});if(!_0xaa974)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xaa974[_0x0e74('0x4d')]===_0x0e74('0x4e')){var _0xaf281e=_0x49e769['get']({'plain':!![]});var _0x13c1b0=_0x0e74('0x26');return db[_0x0e74('0x4f')][_0x0e74('0x4a')]({'where':{'name':_0x13c1b0,'userProfileId':_0xaa974[_0x0e74('0x50')]},'raw':!![]})[_0x0e74('0x23')](function(_0x1f9912){if(_0x1f9912&&_0x1f9912['autoAssociation']===0x0){return db[_0x0e74('0x27')][_0x0e74('0x4b')]({'name':_0xaf281e[_0x0e74('0x29')],'resourceId':_0xaf281e['id'],'type':_0x1f9912[_0x0e74('0x29')],'sectionId':_0x1f9912['id']},{})[_0x0e74('0x23')](function(){return _0x49e769;});}else{return _0x49e769;}})['catch'](function(_0x1f3ce3){logger[_0x0e74('0x28')](_0x0e74('0x51'),_0x1f3ce3);throw _0x1f3ce3;});}return _0x49e769;})['then'](respondWithResult(_0x19ab70,0xc9))[_0x0e74('0x46')](handleError(_0x19ab70,null));};exports[_0x0e74('0x22')]=function(_0x227a44,_0x57059d){if(_0x227a44[_0x0e74('0x4c')]['id']){delete _0x227a44['body']['id'];}return db[_0x0e74('0x41')]['find']({'where':{'id':_0x227a44[_0x0e74('0x48')]['id']}})[_0x0e74('0x23')](handleEntityNotFound(_0x57059d,null))['then'](saveUpdates(_0x227a44['body'],null))['then'](respondWithResult(_0x57059d,null))[_0x0e74('0x46')](handleError(_0x57059d,null));};exports['destroy']=function(_0x4d5d61,_0x16e78a){return db[_0x0e74('0x41')][_0x0e74('0x4a')]({'where':{'id':_0x4d5d61['params']['id']}})['then'](handleEntityNotFound(_0x16e78a,null))[_0x0e74('0x23')](removeEntity(_0x16e78a,null))['catch'](handleError(_0x16e78a,null));};exports[_0x0e74('0x52')]=function(_0x360925,_0x1f7335,_0x762871){if(_0x360925[_0x0e74('0x4c')]['id']){delete _0x360925['body']['id'];}return db['Interval']['find']({'where':{'id':_0x360925[_0x0e74('0x48')]['id']}})['then'](handleEntityNotFound(_0x1f7335,null))[_0x0e74('0x23')](function(_0x4e3cbb){if(_0x4e3cbb){_0x360925[_0x0e74('0x4c')][_0x0e74('0x53')]=_0x4e3cbb['id'];return db['Interval']['create'](_0x360925[_0x0e74('0x4c')]);}})[_0x0e74('0x23')](respondWithResult(_0x1f7335,null))[_0x0e74('0x46')](handleError(_0x1f7335,null));};exports[_0x0e74('0x54')]=function(_0x477318,_0x4edbbb,_0x3cb928){var _0x312dea={};var _0x225de4={};var _0x36f0f5;var _0x1419bc;return db[_0x0e74('0x41')][_0x0e74('0x55')]({'where':{'id':_0x477318[_0x0e74('0x48')]['id']}})['then'](handleEntityNotFound(_0x4edbbb,null))[_0x0e74('0x23')](function(_0xd325d4){if(_0xd325d4){_0x36f0f5=_0xd325d4;_0x225de4[_0x0e74('0x2f')]=_[_0x0e74('0x30')](db[_0x0e74('0x41')][_0x0e74('0x49')]);_0x225de4['query']=_[_0x0e74('0x30')](_0x477318[_0x0e74('0x36')]);_0x225de4['filters']=_['intersection'](_0x225de4[_0x0e74('0x2f')],_0x225de4[_0x0e74('0x36')]);_0x312dea[_0x0e74('0x33')]=_['intersection'](_0x225de4['model'],qs[_0x0e74('0x34')](_0x477318[_0x0e74('0x36')][_0x0e74('0x34')]));_0x312dea[_0x0e74('0x33')]=_0x312dea['attributes'][_0x0e74('0x35')]?_0x312dea[_0x0e74('0x33')]:_0x225de4[_0x0e74('0x2f')];_0x312dea[_0x0e74('0x39')]=qs[_0x0e74('0x3a')](_0x477318['query']['sort']);_0x312dea['where']=qs[_0x0e74('0x31')](_[_0x0e74('0x3c')](_0x477318[_0x0e74('0x36')],_0x225de4['filters']));if(_0x477318[_0x0e74('0x36')][_0x0e74('0x3d')]){_0x312dea['where']=_[_0x0e74('0x3f')](_0x312dea[_0x0e74('0x3b')],{'$or':_[_0x0e74('0x2c')](_0x312dea['attributes'],function(_0x53edeb){var _0xe9ef59={};_0xe9ef59[_0x53edeb]={'$like':'%'+_0x477318[_0x0e74('0x36')][_0x0e74('0x3d')]+'%'};return _0xe9ef59;})});}_0x312dea=_[_0x0e74('0x3f')]({},_0x312dea,_0x477318['options']);return _0x36f0f5[_0x0e74('0x54')](_0x312dea);}})[_0x0e74('0x23')](function(_0x1ab8b2){if(_0x1ab8b2){_0x1419bc=_0x1ab8b2[_0x0e74('0x35')];if(!_0x477318[_0x0e74('0x36')][_0x0e74('0x37')](_0x0e74('0x38'))){_0x312dea['limit']=qs[_0x0e74('0x1b')](_0x477318['query'][_0x0e74('0x1b')]);_0x312dea[_0x0e74('0x19')]=qs[_0x0e74('0x19')](_0x477318['query'][_0x0e74('0x19')]);}return _0x36f0f5['getIntervals'](_0x312dea);}})[_0x0e74('0x23')](function(_0x5bdd6e){if(_0x5bdd6e){return _0x5bdd6e?{'count':_0x1419bc,'rows':_0x5bdd6e}:null;}})[_0x0e74('0x23')](respondWithResult(_0x4edbbb,null))[_0x0e74('0x46')](handleError(_0x4edbbb,null));};exports[_0x0e74('0x56')]=function(_0x5e7726,_0x16059b,_0x1705ff){return db[_0x0e74('0x41')]['findOne']({'where':{'id':_0x5e7726[_0x0e74('0x48')]['id']}})[_0x0e74('0x23')](handleEntityNotFound(_0x16059b,null))[_0x0e74('0x23')](function(_0x18bdbe){if(_0x18bdbe){return db[_0x0e74('0x57')]['transaction'](function(_0x2e49ba){return db[_0x0e74('0x41')][_0x0e74('0x24')]({'where':{'IntervalId':_0x5e7726[_0x0e74('0x48')]['id']},'transaction':_0x2e49ba})[_0x0e74('0x23')](function(_0x4d34a0){var _0x47b0e9=_[_0x0e74('0x2c')](_0x5e7726[_0x0e74('0x4c')],function(_0xc0ebf1){delete _0xc0ebf1['id'];_0xc0ebf1['IntervalId']=_0x5e7726['params']['id'];return _0xc0ebf1;});return db[_0x0e74('0x41')][_0x0e74('0x58')](_0x47b0e9,{'transaction':_0x2e49ba});});})['then'](function(){return db[_0x0e74('0x41')][_0x0e74('0x44')]({'where':{'IntervalId':_0x5e7726[_0x0e74('0x48')]['id']}});});}})['then'](respondWithResult(_0x16059b,null))[_0x0e74('0x46')](handleError(_0x16059b,null));};
\ No newline at end of file
index 0607d8a..b2d5f22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ba2=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./interval.attributes','exports','define','Interval','tools_intervals','rewrite','lodash'];(function(_0x22aca6,_0x1c2dc0){var _0x2a76d6=function(_0x55cfff){while(--_0x55cfff){_0x22aca6['push'](_0x22aca6['shift']());}};_0x2a76d6(++_0x1c2dc0);}(_0x0ba2,0x11c));var _0x20ba=function(_0x4c6c66,_0x7764f5){_0x4c6c66=_0x4c6c66-0x0;var _0x1c7e6b=_0x0ba2[_0x4c6c66];return _0x1c7e6b;};'use strict';var _=require(_0x20ba('0x0'));var util=require(_0x20ba('0x1'));var logger=require(_0x20ba('0x2'))(_0x20ba('0x3'));var moment=require('moment');var BPromise=require(_0x20ba('0x4'));var rp=require(_0x20ba('0x5'));var fs=require('fs');var path=require(_0x20ba('0x6'));var rimraf=require(_0x20ba('0x7'));var config=require(_0x20ba('0x8'));var attributes=require(_0x20ba('0x9'));var extensions=require('../../components/extensions/rewrite');module[_0x20ba('0xa')]=function(_0xabcf60,_0x33d25c){return _0xabcf60[_0x20ba('0xb')](_0x20ba('0xc'),attributes,{'tableName':_0x20ba('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x1f6f6d,_0x16b603){extensions['rewrite'](_0xabcf60,_0x1f6f6d);},'afterBulkCreate':function(_0x40ea90,_0x8faee1,_0xd9a0a1){_0xd9a0a1();extensions[_0x20ba('0xe')](_0xabcf60,_0x40ea90[0x0]);},'afterUpdate':function(_0x5d4871,_0x32e6e9){extensions[_0x20ba('0xe')](_0xabcf60,_0x5d4871);},'afterDestroy':function(_0x14d2a0,_0xc73008){extensions[_0x20ba('0xe')](_0xabcf60,_0x14d2a0);}}});};
\ No newline at end of file
+var _0xe774=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./interval.attributes','exports','tools_intervals','rewrite','lodash','util','../../config/logger'];(function(_0x308f2b,_0x1d6a9c){var _0x4e44ac=function(_0x321746){while(--_0x321746){_0x308f2b['push'](_0x308f2b['shift']());}};_0x4e44ac(++_0x1d6a9c);}(_0xe774,0x135));var _0x4e77=function(_0x939ec4,_0x582043){_0x939ec4=_0x939ec4-0x0;var _0x368089=_0xe774[_0x939ec4];return _0x368089;};'use strict';var _=require(_0x4e77('0x0'));var util=require(_0x4e77('0x1'));var logger=require(_0x4e77('0x2'))('api');var moment=require(_0x4e77('0x3'));var BPromise=require(_0x4e77('0x4'));var rp=require(_0x4e77('0x5'));var fs=require('fs');var path=require(_0x4e77('0x6'));var rimraf=require(_0x4e77('0x7'));var config=require(_0x4e77('0x8'));var attributes=require(_0x4e77('0x9'));var extensions=require('../../components/extensions/rewrite');module[_0x4e77('0xa')]=function(_0x234a55,_0x291686){return _0x234a55['define']('Interval',attributes,{'tableName':_0x4e77('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x2ac601,_0x25bd02){extensions['rewrite'](_0x234a55,_0x2ac601);},'afterBulkCreate':function(_0x5d56e6,_0x948797,_0x2519ed){_0x2519ed();extensions['rewrite'](_0x234a55,_0x5d56e6[0x0]);},'afterUpdate':function(_0x216add,_0x56312c){extensions['rewrite'](_0x234a55,_0x216add);},'afterDestroy':function(_0x524ce1,_0x3d3bcc){extensions[_0x4e77('0xc')](_0x234a55,_0x524ce1);}}});};
\ No newline at end of file
index 423bf9b..39b600e 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(_0x1f7201,_0x141b79){var _0x289fd2=function(_0x20ce23){while(--_0x20ce23){_0x1f7201['push'](_0x1f7201['shift']());}};_0x289fd2(++_0x141b79);}(_0xa9e0,0x123));var _0x0a9e=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0xa9e0[_0x387777];return _0x3f84c0;};'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(_0x54eab6,_0x5e262f){var _0x1e7435=function(_0x468c91){while(--_0x468c91){_0x54eab6['push'](_0x54eab6['shift']());}};_0x1e7435(++_0x5e262f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'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 a066eb1..2c87226 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['post','isAuthenticated','exports','Router','./jira.controller'];(function(_0x3d17aa,_0x132f4d){var _0x541e31=function(_0x33ebaa){while(--_0x33ebaa){_0x3d17aa['push'](_0x3d17aa['shift']());}};_0x541e31(++_0x132f4d);}(_0xadb5,0xad));var _0x5adb=function(_0x3f421a,_0x5336d9){_0x3f421a=_0x3f421a-0x0;var _0x29cde9=_0xadb5[_0x3f421a];return _0x29cde9;};'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 _0xadb5=['post','isAuthenticated','exports','Router','./jira.controller'];(function(_0x55b4b2,_0x55301f){var _0x8ea87e=function(_0x4180a4){while(--_0x4180a4){_0x55b4b2['push'](_0x55b4b2['shift']());}};_0x8ea87e(++_0x55301f);}(_0xadb5,0xad));var _0x5adb=function(_0x50eacc,_0x3f59d4){_0x50eacc=_0x50eacc-0x0;var _0x46b299=_0xadb5[_0x50eacc];return _0x46b299;};'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
index 3a345c7..86618b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb11=['bluebird','https','../../config/logger','support','3eAmWpBVP0','MOTGUI','Report','\x20from\x20','description','stringify','issuetype','Bug','fields','email','customfield_11501','customfield_11503','name','customfield_11504','customfield_10102','/rest/api/2/issue','application/json','Basic\x20','toString','request','setEncoding','utf8','data','end','status','statusCode','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','openIssue','send','body','x-forwarded-for','connection','remoteAddress','socket'];(function(_0x164563,_0x1be6af){var _0x292411=function(_0xc8ad96){while(--_0xc8ad96){_0x164563['push'](_0x164563['shift']());}};_0x292411(++_0x1be6af);}(_0xbb11,0x1a4));var _0x1bb1=function(_0x5479e5,_0x3c94bb){_0x5479e5=_0x5479e5-0x0;var _0x9bdc58=_0xbb11[_0x5479e5];return _0x9bdc58;};'use strict';var BPromise=require(_0x1bb1('0x0'));var https=require(_0x1bb1('0x1'));var logger=require(_0x1bb1('0x2'))('api');var USERNAME=_0x1bb1('0x3');var PASSWORD=_0x1bb1('0x4');function openIssue(_0x508358,_0x5babb7){var _0x494660={'fields':{'project':{'key':_0x508358['key']||_0x1bb1('0x5')},'summary':(_0x508358['summary']||_0x1bb1('0x6'))+_0x1bb1('0x7')+_0x508358['ip'],'description':_0x508358[_0x1bb1('0x8')]||JSON[_0x1bb1('0x9')](_0x508358),'issuetype':{'name':_0x508358[_0x1bb1('0xa')]||_0x1bb1('0xb')}}};_0x494660[_0x1bb1('0xc')]['customfield_11500']=_0x508358[_0x1bb1('0xd')];_0x494660[_0x1bb1('0xc')][_0x1bb1('0xe')]=_0x508358['oldToken'];_0x494660['fields']['customfield_11502']=_0x508358['newToken'];_0x494660['fields'][_0x1bb1('0xf')]=_0x508358[_0x1bb1('0x10')];_0x494660[_0x1bb1('0xc')][_0x1bb1('0x11')]=_0x508358['reason'];_0x494660[_0x1bb1('0xc')][_0x1bb1('0x12')]=_0x508358['ip'];var _0x4c41c1={'host':'track.xcallymotion.com','port':0x1bb,'path':_0x1bb1('0x13'),'method':'POST','timeout':0x4e20,'headers':{'Content-Type':_0x1bb1('0x14'),'Authorization':_0x1bb1('0x15')+new Buffer(USERNAME+':'+PASSWORD)[_0x1bb1('0x16')]('base64')}};var _0xb5b249=JSON[_0x1bb1('0x9')](_0x494660);var _0x1d1e11=https[_0x1bb1('0x17')](_0x4c41c1,function(_0x5a0b6b){_0x5a0b6b[_0x1bb1('0x18')](_0x1bb1('0x19'));var _0x2db1ca='';_0x5a0b6b['on'](_0x1bb1('0x1a'),function(_0x5f2092){_0x2db1ca+=_0x5f2092;});_0x5a0b6b['on'](_0x1bb1('0x1b'),function(){if(_0x5babb7){return _0x5babb7[_0x1bb1('0x1c')](_0x5a0b6b[_0x1bb1('0x1d')])['json'](JSON[_0x1bb1('0x1e')](_0x2db1ca));}});});_0x1d1e11['on'](_0x1bb1('0x1f'),function(_0x1ad747){if(_0x5babb7){return _0x5babb7[_0x1bb1('0x1c')](0x1f4)['json']({'errors':[{'message':_0x1bb1('0x20'),'type':_0x1bb1('0x21')}]});}});_0x1d1e11[_0x1bb1('0x22')](_0xb5b249);_0x1d1e11[_0x1bb1('0x1b')]();}exports[_0x1bb1('0x23')]=openIssue;exports[_0x1bb1('0x24')]=function(_0x260424,_0x407edb){_0x260424[_0x1bb1('0x25')]['ip']=_0x260424['headers'][_0x1bb1('0x26')]||_0x260424[_0x1bb1('0x27')][_0x1bb1('0x28')]||_0x260424[_0x1bb1('0x29')][_0x1bb1('0x28')]||_0x260424[_0x1bb1('0x27')][_0x1bb1('0x29')][_0x1bb1('0x28')];return openIssue(_0x260424[_0x1bb1('0x25')],_0x407edb);};
\ No newline at end of file
+var _0xfc65=['customfield_10102','track.xcallymotion.com','POST','application/json','base64','request','utf8','data','status','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','end','openIssue','send','body','connection','remoteAddress','socket','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','key','MOTGUI','summary','Report','\x20from\x20','description','stringify','issuetype','Bug','customfield_11500','email','fields','customfield_11501','oldToken','customfield_11502','customfield_11503','reason'];(function(_0x4ce855,_0x4a0141){var _0x12de23=function(_0x1eac5e){while(--_0x1eac5e){_0x4ce855['push'](_0x4ce855['shift']());}};_0x12de23(++_0x4a0141);}(_0xfc65,0x70));var _0x5fc6=function(_0x3c33a1,_0x596dec){_0x3c33a1=_0x3c33a1-0x0;var _0x5987ba=_0xfc65[_0x3c33a1];return _0x5987ba;};'use strict';var BPromise=require(_0x5fc6('0x0'));var https=require(_0x5fc6('0x1'));var logger=require(_0x5fc6('0x2'))(_0x5fc6('0x3'));var USERNAME=_0x5fc6('0x4');var PASSWORD=_0x5fc6('0x5');function openIssue(_0xe95383,_0x4675be){var _0x529069={'fields':{'project':{'key':_0xe95383[_0x5fc6('0x6')]||_0x5fc6('0x7')},'summary':(_0xe95383[_0x5fc6('0x8')]||_0x5fc6('0x9'))+_0x5fc6('0xa')+_0xe95383['ip'],'description':_0xe95383[_0x5fc6('0xb')]||JSON[_0x5fc6('0xc')](_0xe95383),'issuetype':{'name':_0xe95383[_0x5fc6('0xd')]||_0x5fc6('0xe')}}};_0x529069['fields'][_0x5fc6('0xf')]=_0xe95383[_0x5fc6('0x10')];_0x529069[_0x5fc6('0x11')][_0x5fc6('0x12')]=_0xe95383[_0x5fc6('0x13')];_0x529069[_0x5fc6('0x11')][_0x5fc6('0x14')]=_0xe95383['newToken'];_0x529069[_0x5fc6('0x11')][_0x5fc6('0x15')]=_0xe95383['name'];_0x529069[_0x5fc6('0x11')]['customfield_11504']=_0xe95383[_0x5fc6('0x16')];_0x529069[_0x5fc6('0x11')][_0x5fc6('0x17')]=_0xe95383['ip'];var _0x5c3900={'host':_0x5fc6('0x18'),'port':0x1bb,'path':'/rest/api/2/issue','method':_0x5fc6('0x19'),'timeout':0x4e20,'headers':{'Content-Type':_0x5fc6('0x1a'),'Authorization':'Basic\x20'+new Buffer(USERNAME+':'+PASSWORD)['toString'](_0x5fc6('0x1b'))}};var _0x25c649=JSON[_0x5fc6('0xc')](_0x529069);var _0x43158a=https[_0x5fc6('0x1c')](_0x5c3900,function(_0x3ae53a){_0x3ae53a['setEncoding'](_0x5fc6('0x1d'));var _0x5aece2='';_0x3ae53a['on'](_0x5fc6('0x1e'),function(_0x5aacff){_0x5aece2+=_0x5aacff;});_0x3ae53a['on']('end',function(){if(_0x4675be){return _0x4675be[_0x5fc6('0x1f')](_0x3ae53a['statusCode'])[_0x5fc6('0x20')](JSON[_0x5fc6('0x21')](_0x5aece2));}});});_0x43158a['on'](_0x5fc6('0x22'),function(_0x5a7e8a){if(_0x4675be){return _0x4675be[_0x5fc6('0x1f')](0x1f4)['json']({'errors':[{'message':_0x5fc6('0x23'),'type':_0x5fc6('0x24')}]});}});_0x43158a[_0x5fc6('0x25')](_0x25c649);_0x43158a[_0x5fc6('0x26')]();}exports[_0x5fc6('0x27')]=openIssue;exports[_0x5fc6('0x28')]=function(_0xa0e798,_0x3ce584){_0xa0e798[_0x5fc6('0x29')]['ip']=_0xa0e798['headers']['x-forwarded-for']||_0xa0e798[_0x5fc6('0x2a')][_0x5fc6('0x2b')]||_0xa0e798[_0x5fc6('0x2c')][_0x5fc6('0x2b')]||_0xa0e798[_0x5fc6('0x2a')][_0x5fc6('0x2c')]['remoteAddress'];return openIssue(_0xa0e798[_0x5fc6('0x29')],_0x3ce584);};
\ No newline at end of file
index 4432cc0..3454f45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['/describe','describe','/:id','isAuthenticated','post','create','put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','index','get'];(function(_0x4743b1,_0x5048c5){var _0x4db2b7=function(_0x4bcb93){while(--_0x4bcb93){_0x4743b1['push'](_0x4743b1['shift']());}};_0x4db2b7(++_0x5048c5);}(_0x54ef,0x112));var _0xf54e=function(_0x58f2f3,_0x1fe125){_0x58f2f3=_0x58f2f3-0x0;var _0x107593=_0x54ef[_0x58f2f3];return _0x107593;};'use strict';var multer=require(_0xf54e('0x0'));var util=require(_0xf54e('0x1'));var path=require(_0xf54e('0x2'));var timeout=require('connect-timeout');var express=require(_0xf54e('0x3'));var router=express[_0xf54e('0x4')]();var fs_extra=require(_0xf54e('0x5'));var auth=require(_0xf54e('0x6'));var interaction=require(_0xf54e('0x7'));var config=require(_0xf54e('0x8'));var controller=require(_0xf54e('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xf54e('0xa')]);router[_0xf54e('0xb')](_0xf54e('0xc'),auth['isAuthenticated'](),controller[_0xf54e('0xd')]);router['get'](_0xf54e('0xe'),auth[_0xf54e('0xf')](),controller['show']);router[_0xf54e('0x10')]('/',auth[_0xf54e('0xf')](),controller[_0xf54e('0x11')]);router[_0xf54e('0x12')]('/:id',auth[_0xf54e('0xf')](),controller[_0xf54e('0x13')]);router[_0xf54e('0x14')](_0xf54e('0xe'),auth['isAuthenticated'](),controller[_0xf54e('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x4483=['exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','get','isAuthenticated','index','/describe','describe','show','post','create','put','/:id','update','delete'];(function(_0x34843e,_0x4c4224){var _0x598f7f=function(_0x12a44c){while(--_0x12a44c){_0x34843e['push'](_0x34843e['shift']());}};_0x598f7f(++_0x4c4224);}(_0x4483,0x1a3));var _0x3448=function(_0x2d4ffc,_0x2b5d88){_0x2d4ffc=_0x2d4ffc-0x0;var _0x1d591d=_0x4483[_0x2d4ffc];return _0x1d591d;};'use strict';var multer=require(_0x3448('0x0'));var util=require(_0x3448('0x1'));var path=require(_0x3448('0x2'));var timeout=require('connect-timeout');var express=require(_0x3448('0x3'));var router=express[_0x3448('0x4')]();var fs_extra=require(_0x3448('0x5'));var auth=require(_0x3448('0x6'));var interaction=require(_0x3448('0x7'));var config=require('../../config/environment');var controller=require(_0x3448('0x8'));router[_0x3448('0x9')]('/',auth[_0x3448('0xa')](),controller[_0x3448('0xb')]);router[_0x3448('0x9')](_0x3448('0xc'),auth[_0x3448('0xa')](),controller[_0x3448('0xd')]);router['get']('/:id',auth[_0x3448('0xa')](),controller[_0x3448('0xe')]);router[_0x3448('0xf')]('/',auth[_0x3448('0xa')](),controller[_0x3448('0x10')]);router[_0x3448('0x11')](_0x3448('0x12'),auth[_0x3448('0xa')](),controller[_0x3448('0x13')]);router[_0x3448('0x14')](_0x3448('0x12'),auth['isAuthenticated'](),controller['destroy']);module[_0x3448('0x15')]=router;
\ No newline at end of file
index c3d4946..5946c1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x7a54,0x106));var _0x47a5=function(_0x368290,_0x274768){_0x368290=_0x368290-0x0;var _0x25159c=_0x7a54[_0x368290];return _0x25159c;};'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(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0x7a54,0x106));var _0x47a5=function(_0xbd5ed9,_0x19ef15){_0xbd5ed9=_0xbd5ed9-0x0;var _0x5f3951=_0x7a54[_0xbd5ed9];return _0x5f3951;};'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 d5b375d..3788b2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c46=['filter','VIRTUAL','merge','options','include','JscriptyAnswerReport','rows','catch','includeAll','find','create','body','params','describe','eml-format','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','limit','undefined','count','offset','set','Content-Range','reject','save','update','destroy','then','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','sort','where','pick'];(function(_0x13fab7,_0x16ab88){var _0x81eaec=function(_0x26ecf9){while(--_0x26ecf9){_0x13fab7['push'](_0x13fab7['shift']());}};_0x81eaec(++_0x16ab88);}(_0x8c46,0x171));var _0x68c4=function(_0x29435a,_0x39ff5a){_0x29435a=_0x29435a-0x0;var _0x172422=_0x8c46[_0x29435a];return _0x172422;};'use strict';var emlformat=require(_0x68c4('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x68c4('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x68c4('0x2'));var Mustache=require(_0x68c4('0x3'));var util=require(_0x68c4('0x4'));var path=require(_0x68c4('0x5'));var sox=require(_0x68c4('0x6'));var csv=require(_0x68c4('0x7'));var ejs=require(_0x68c4('0x8'));var fs=require('fs');var fs_extra=require(_0x68c4('0x9'));var _=require(_0x68c4('0xa'));var squel=require(_0x68c4('0xb'));var crypto=require('crypto');var jsforce=require(_0x68c4('0xc'));var deskjs=require(_0x68c4('0xd'));var toCsv=require(_0x68c4('0x7'));var querystring=require('querystring');var Papa=require(_0x68c4('0xe'));var Redis=require(_0x68c4('0xf'));var authService=require(_0x68c4('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x68c4('0x11'));var logger=require(_0x68c4('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x68c4('0x13'));var licenseUtil=require(_0x68c4('0x14'));var db=require(_0x68c4('0x15'))['db'];function respondWithStatusCode(_0x48783b,_0x3a432a){_0x3a432a=_0x3a432a||0xcc;return function(_0x1f5f42){if(_0x1f5f42){return _0x48783b[_0x68c4('0x16')](_0x3a432a);}return _0x48783b['status'](_0x3a432a)[_0x68c4('0x17')]();};}function respondWithResult(_0x14919c,_0x5e1341){_0x5e1341=_0x5e1341||0xc8;return function(_0x52f031){if(_0x52f031){return _0x14919c[_0x68c4('0x18')](_0x5e1341)[_0x68c4('0x19')](_0x52f031);}};}function respondWithFilteredResult(_0x5be0de,_0xc25f7b){return function(_0x4ea2a4){if(_0x4ea2a4){var _0x1a7045=typeof _0xc25f7b['offset']==='undefined'&&typeof _0xc25f7b[_0x68c4('0x1a')]===_0x68c4('0x1b');var _0x4f4797=_0x4ea2a4[_0x68c4('0x1c')];var _0x1d757c=_0x1a7045?0x0:_0xc25f7b[_0x68c4('0x1d')];var _0x33c5c5=_0x1a7045?_0x4ea2a4[_0x68c4('0x1c')]:_0xc25f7b[_0x68c4('0x1d')]+_0xc25f7b[_0x68c4('0x1a')];var _0x415ef2;if(_0x33c5c5>=_0x4f4797){_0x33c5c5=_0x4f4797;_0x415ef2=0xc8;}else{_0x415ef2=0xce;}_0x5be0de[_0x68c4('0x18')](_0x415ef2);return _0x5be0de[_0x68c4('0x1e')](_0x68c4('0x1f'),_0x1d757c+'-'+_0x33c5c5+'/'+_0x4f4797)['json'](_0x4ea2a4);}return null;};}function patchUpdates(_0x398a71){return function(_0x4edf9f){try{jsonpatch['apply'](_0x4edf9f,_0x398a71,!![]);}catch(_0x34d3a6){return BPromise[_0x68c4('0x20')](_0x34d3a6);}return _0x4edf9f[_0x68c4('0x21')]();};}function saveUpdates(_0x42f0bc,_0x5b8135){return function(_0x35e865){if(_0x35e865){return _0x35e865[_0x68c4('0x22')](_0x42f0bc)['then'](function(_0x201742){return _0x201742;});}return null;};}function removeEntity(_0x392ccf,_0x45f9be){return function(_0x10278e){if(_0x10278e){return _0x10278e[_0x68c4('0x23')]()[_0x68c4('0x24')](function(){_0x392ccf[_0x68c4('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ff4a5,_0x55355d){return function(_0xf16a78){if(!_0xf16a78){_0x2ff4a5[_0x68c4('0x16')](0x194);}return _0xf16a78;};}function handleError(_0x57f32,_0x4f9d32){_0x4f9d32=_0x4f9d32||0x1f4;return function(_0x1e14db){logger[_0x68c4('0x25')](_0x1e14db[_0x68c4('0x26')]);if(_0x1e14db[_0x68c4('0x27')]){delete _0x1e14db[_0x68c4('0x27')];}_0x57f32[_0x68c4('0x18')](_0x4f9d32)[_0x68c4('0x28')](_0x1e14db);};}exports['index']=function(_0x26d56b,_0x4b4634){var _0x3772b3={},_0x1442ba={},_0x56ed70={'count':0x0,'rows':[]};var _0x2847d1=_[_0x68c4('0x29')](db['JscriptyAnswerReport'][_0x68c4('0x2a')],function(_0x3a1b69){return{'name':_0x3a1b69[_0x68c4('0x2b')],'type':_0x3a1b69[_0x68c4('0x2c')][_0x68c4('0x2d')]};});_0x1442ba[_0x68c4('0x2e')]=_[_0x68c4('0x29')](_0x2847d1,_0x68c4('0x27'));_0x1442ba[_0x68c4('0x2f')]=_[_0x68c4('0x30')](_0x26d56b[_0x68c4('0x2f')]);_0x1442ba[_0x68c4('0x31')]=_[_0x68c4('0x32')](_0x1442ba[_0x68c4('0x2e')],_0x1442ba[_0x68c4('0x2f')]);_0x3772b3[_0x68c4('0x33')]=_[_0x68c4('0x32')](_0x1442ba[_0x68c4('0x2e')],qs['fields'](_0x26d56b[_0x68c4('0x2f')][_0x68c4('0x34')]));_0x3772b3[_0x68c4('0x33')]=_0x3772b3[_0x68c4('0x33')][_0x68c4('0x35')]?_0x3772b3['attributes']:_0x1442ba[_0x68c4('0x2e')];if(!_0x26d56b['query']['hasOwnProperty']('nolimit')){_0x3772b3[_0x68c4('0x1a')]=qs[_0x68c4('0x1a')](_0x26d56b[_0x68c4('0x2f')][_0x68c4('0x1a')]);_0x3772b3['offset']=qs[_0x68c4('0x1d')](_0x26d56b[_0x68c4('0x2f')][_0x68c4('0x1d')]);}_0x3772b3['order']=qs[_0x68c4('0x36')](_0x26d56b[_0x68c4('0x2f')][_0x68c4('0x36')]);_0x3772b3[_0x68c4('0x37')]=qs[_0x68c4('0x31')](_[_0x68c4('0x38')](_0x26d56b[_0x68c4('0x2f')],_0x1442ba[_0x68c4('0x31')]),_0x2847d1);if(_0x26d56b[_0x68c4('0x2f')][_0x68c4('0x39')]){_0x3772b3['where']=_['merge'](_0x3772b3[_0x68c4('0x37')],{'$or':_[_0x68c4('0x29')](_0x2847d1,function(_0x460e11){if(_0x460e11[_0x68c4('0x2c')]!==_0x68c4('0x3a')){var _0x13386d={};_0x13386d[_0x460e11[_0x68c4('0x27')]]={'$like':'%'+_0x26d56b[_0x68c4('0x2f')][_0x68c4('0x39')]+'%'};return _0x13386d;}})});}_0x3772b3=_[_0x68c4('0x3b')]({},_0x3772b3,_0x26d56b[_0x68c4('0x3c')]);var _0x30a1cd={'where':_0x3772b3[_0x68c4('0x37')]};return db['JscriptyAnswerReport']['count'](_0x30a1cd)[_0x68c4('0x24')](function(_0x2785b4){_0x56ed70[_0x68c4('0x1c')]=_0x2785b4;if(_0x26d56b[_0x68c4('0x2f')]['includeAll']){_0x3772b3[_0x68c4('0x3d')]=[{'all':!![]}];}return db[_0x68c4('0x3e')]['findAll'](_0x3772b3);})['then'](function(_0x4c564a){_0x56ed70[_0x68c4('0x3f')]=_0x4c564a;return _0x56ed70;})['then'](respondWithFilteredResult(_0x4b4634,_0x3772b3))[_0x68c4('0x40')](handleError(_0x4b4634,null));};exports['show']=function(_0x18da6f,_0x2406b1){var _0xbd848f={'raw':!![],'where':{'id':_0x18da6f['params']['id']}},_0xefe68d={};_0xefe68d[_0x68c4('0x2e')]=_[_0x68c4('0x30')](db[_0x68c4('0x3e')][_0x68c4('0x2a')]);_0xefe68d['query']=_[_0x68c4('0x30')](_0x18da6f[_0x68c4('0x2f')]);_0xefe68d[_0x68c4('0x31')]=_[_0x68c4('0x32')](_0xefe68d[_0x68c4('0x2e')],_0xefe68d['query']);_0xbd848f['attributes']=_['intersection'](_0xefe68d[_0x68c4('0x2e')],qs[_0x68c4('0x34')](_0x18da6f[_0x68c4('0x2f')][_0x68c4('0x34')]));_0xbd848f['attributes']=_0xbd848f[_0x68c4('0x33')][_0x68c4('0x35')]?_0xbd848f[_0x68c4('0x33')]:_0xefe68d[_0x68c4('0x2e')];if(_0x18da6f[_0x68c4('0x2f')][_0x68c4('0x41')]){_0xbd848f[_0x68c4('0x3d')]=[{'all':!![]}];}_0xbd848f=_[_0x68c4('0x3b')]({},_0xbd848f,_0x18da6f[_0x68c4('0x3c')]);return db[_0x68c4('0x3e')][_0x68c4('0x42')](_0xbd848f)['then'](handleEntityNotFound(_0x2406b1,null))[_0x68c4('0x24')](respondWithResult(_0x2406b1,null))['catch'](handleError(_0x2406b1,null));};exports[_0x68c4('0x43')]=function(_0x44e3c9,_0x463a6b){return db[_0x68c4('0x3e')]['create'](_0x44e3c9[_0x68c4('0x44')],{})['then'](respondWithResult(_0x463a6b,0xc9))[_0x68c4('0x40')](handleError(_0x463a6b,null));};exports[_0x68c4('0x22')]=function(_0x570e25,_0x250941){if(_0x570e25[_0x68c4('0x44')]['id']){delete _0x570e25[_0x68c4('0x44')]['id'];}return db[_0x68c4('0x3e')][_0x68c4('0x42')]({'where':{'id':_0x570e25[_0x68c4('0x45')]['id']}})['then'](handleEntityNotFound(_0x250941,null))[_0x68c4('0x24')](saveUpdates(_0x570e25[_0x68c4('0x44')],null))[_0x68c4('0x24')](respondWithResult(_0x250941,null))[_0x68c4('0x40')](handleError(_0x250941,null));};exports['destroy']=function(_0x40ecf6,_0x19aec2){return db[_0x68c4('0x3e')][_0x68c4('0x42')]({'where':{'id':_0x40ecf6[_0x68c4('0x45')]['id']}})[_0x68c4('0x24')](handleEntityNotFound(_0x19aec2,null))['then'](removeEntity(_0x19aec2,null))[_0x68c4('0x40')](handleError(_0x19aec2,null));};exports[_0x68c4('0x46')]=function(_0x3db854,_0x51db14){return db[_0x68c4('0x3e')][_0x68c4('0x46')]()['then'](respondWithResult(_0x51db14,null))['catch'](handleError(_0x51db14,null));};
\ No newline at end of file
+var _0x0734=['Content-Range','apply','reject','save','then','destroy','sendStatus','error','name','index','map','JscriptyAnswerReport','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','offset','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','params','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','ejs','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','status','end','json','undefined','limit','count','set'];(function(_0x5314e3,_0x29cf62){var _0x4e4515=function(_0x59f85d){while(--_0x59f85d){_0x5314e3['push'](_0x5314e3['shift']());}};_0x4e4515(++_0x29cf62);}(_0x0734,0xba));var _0x4073=function(_0x5b956a,_0x10dfe8){_0x5b956a=_0x5b956a-0x0;var _0x87835c=_0x0734[_0x5b956a];return _0x87835c;};'use strict';var emlformat=require(_0x4073('0x0'));var rimraf=require(_0x4073('0x1'));var zipdir=require(_0x4073('0x2'));var jsonpatch=require(_0x4073('0x3'));var rp=require(_0x4073('0x4'));var moment=require('moment');var BPromise=require(_0x4073('0x5'));var Mustache=require(_0x4073('0x6'));var util=require(_0x4073('0x7'));var path=require(_0x4073('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4073('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4073('0xa'));var squel=require(_0x4073('0xb'));var crypto=require(_0x4073('0xc'));var jsforce=require(_0x4073('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x4073('0xe'));var querystring=require('querystring');var Papa=require(_0x4073('0xf'));var Redis=require(_0x4073('0x10'));var authService=require(_0x4073('0x11'));var qs=require(_0x4073('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x4073('0x13'))(_0x4073('0x14'));var utils=require('../../config/utils');var config=require(_0x4073('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x4073('0x16'))['db'];function respondWithStatusCode(_0x4c496c,_0x1778d8){_0x1778d8=_0x1778d8||0xcc;return function(_0x48e6eb){if(_0x48e6eb){return _0x4c496c['sendStatus'](_0x1778d8);}return _0x4c496c[_0x4073('0x17')](_0x1778d8)[_0x4073('0x18')]();};}function respondWithResult(_0x565576,_0x416322){_0x416322=_0x416322||0xc8;return function(_0x1355f5){if(_0x1355f5){return _0x565576[_0x4073('0x17')](_0x416322)[_0x4073('0x19')](_0x1355f5);}};}function respondWithFilteredResult(_0x3e29e9,_0x45238f){return function(_0x592c8c){if(_0x592c8c){var _0x2bc7c5=typeof _0x45238f['offset']===_0x4073('0x1a')&&typeof _0x45238f[_0x4073('0x1b')]==='undefined';var _0x1339b2=_0x592c8c[_0x4073('0x1c')];var _0x7a6e37=_0x2bc7c5?0x0:_0x45238f['offset'];var _0x35e397=_0x2bc7c5?_0x592c8c[_0x4073('0x1c')]:_0x45238f['offset']+_0x45238f['limit'];var _0x44aa71;if(_0x35e397>=_0x1339b2){_0x35e397=_0x1339b2;_0x44aa71=0xc8;}else{_0x44aa71=0xce;}_0x3e29e9['status'](_0x44aa71);return _0x3e29e9[_0x4073('0x1d')](_0x4073('0x1e'),_0x7a6e37+'-'+_0x35e397+'/'+_0x1339b2)[_0x4073('0x19')](_0x592c8c);}return null;};}function patchUpdates(_0x56d196){return function(_0xa87289){try{jsonpatch[_0x4073('0x1f')](_0xa87289,_0x56d196,!![]);}catch(_0x37b4f3){return BPromise[_0x4073('0x20')](_0x37b4f3);}return _0xa87289[_0x4073('0x21')]();};}function saveUpdates(_0x523c11,_0x1b36b7){return function(_0x5b5977){if(_0x5b5977){return _0x5b5977['update'](_0x523c11)[_0x4073('0x22')](function(_0x3dfed2){return _0x3dfed2;});}return null;};}function removeEntity(_0x37fd2d,_0x531bf4){return function(_0x48c8eb){if(_0x48c8eb){return _0x48c8eb[_0x4073('0x23')]()[_0x4073('0x22')](function(){_0x37fd2d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x765754,_0x477cf6){return function(_0x259234){if(!_0x259234){_0x765754[_0x4073('0x24')](0x194);}return _0x259234;};}function handleError(_0x19a118,_0x20d4a8){_0x20d4a8=_0x20d4a8||0x1f4;return function(_0xf3faf4){logger[_0x4073('0x25')](_0xf3faf4['stack']);if(_0xf3faf4[_0x4073('0x26')]){delete _0xf3faf4[_0x4073('0x26')];}_0x19a118[_0x4073('0x17')](_0x20d4a8)['send'](_0xf3faf4);};}exports[_0x4073('0x27')]=function(_0x35b8d5,_0x512f69){var _0x57fcfd={},_0x465c67={},_0x429f8d={'count':0x0,'rows':[]};var _0x5e958d=_[_0x4073('0x28')](db[_0x4073('0x29')][_0x4073('0x2a')],function(_0x45a36e){return{'name':_0x45a36e['fieldName'],'type':_0x45a36e[_0x4073('0x2b')][_0x4073('0x2c')]};});_0x465c67[_0x4073('0x2d')]=_['map'](_0x5e958d,_0x4073('0x26'));_0x465c67[_0x4073('0x2e')]=_[_0x4073('0x2f')](_0x35b8d5[_0x4073('0x2e')]);_0x465c67[_0x4073('0x30')]=_['intersection'](_0x465c67[_0x4073('0x2d')],_0x465c67[_0x4073('0x2e')]);_0x57fcfd[_0x4073('0x31')]=_[_0x4073('0x32')](_0x465c67[_0x4073('0x2d')],qs['fields'](_0x35b8d5[_0x4073('0x2e')][_0x4073('0x33')]));_0x57fcfd[_0x4073('0x31')]=_0x57fcfd[_0x4073('0x31')][_0x4073('0x34')]?_0x57fcfd[_0x4073('0x31')]:_0x465c67[_0x4073('0x2d')];if(!_0x35b8d5['query'][_0x4073('0x35')](_0x4073('0x36'))){_0x57fcfd[_0x4073('0x1b')]=qs[_0x4073('0x1b')](_0x35b8d5[_0x4073('0x2e')][_0x4073('0x1b')]);_0x57fcfd['offset']=qs['offset'](_0x35b8d5[_0x4073('0x2e')][_0x4073('0x37')]);}_0x57fcfd['order']=qs['sort'](_0x35b8d5['query'][_0x4073('0x38')]);_0x57fcfd[_0x4073('0x39')]=qs['filters'](_[_0x4073('0x3a')](_0x35b8d5[_0x4073('0x2e')],_0x465c67[_0x4073('0x30')]),_0x5e958d);if(_0x35b8d5[_0x4073('0x2e')][_0x4073('0x3b')]){_0x57fcfd[_0x4073('0x39')]=_[_0x4073('0x3c')](_0x57fcfd[_0x4073('0x39')],{'$or':_[_0x4073('0x28')](_0x5e958d,function(_0x4e93a6){if(_0x4e93a6[_0x4073('0x2b')]!==_0x4073('0x3d')){var _0xce192c={};_0xce192c[_0x4e93a6['name']]={'$like':'%'+_0x35b8d5['query'][_0x4073('0x3b')]+'%'};return _0xce192c;}})});}_0x57fcfd=_[_0x4073('0x3c')]({},_0x57fcfd,_0x35b8d5['options']);var _0x5eb108={'where':_0x57fcfd[_0x4073('0x39')]};return db['JscriptyAnswerReport'][_0x4073('0x1c')](_0x5eb108)[_0x4073('0x22')](function(_0x4499ad){_0x429f8d[_0x4073('0x1c')]=_0x4499ad;if(_0x35b8d5[_0x4073('0x2e')][_0x4073('0x3e')]){_0x57fcfd[_0x4073('0x3f')]=[{'all':!![]}];}return db[_0x4073('0x29')][_0x4073('0x40')](_0x57fcfd);})[_0x4073('0x22')](function(_0x214635){_0x429f8d['rows']=_0x214635;return _0x429f8d;})[_0x4073('0x22')](respondWithFilteredResult(_0x512f69,_0x57fcfd))[_0x4073('0x41')](handleError(_0x512f69,null));};exports[_0x4073('0x42')]=function(_0x288055,_0x4d026c){var _0x4d4baf={'raw':!![],'where':{'id':_0x288055[_0x4073('0x43')]['id']}},_0x2d577e={};_0x2d577e[_0x4073('0x2d')]=_[_0x4073('0x2f')](db['JscriptyAnswerReport']['rawAttributes']);_0x2d577e[_0x4073('0x2e')]=_[_0x4073('0x2f')](_0x288055[_0x4073('0x2e')]);_0x2d577e[_0x4073('0x30')]=_[_0x4073('0x32')](_0x2d577e[_0x4073('0x2d')],_0x2d577e[_0x4073('0x2e')]);_0x4d4baf[_0x4073('0x31')]=_[_0x4073('0x32')](_0x2d577e[_0x4073('0x2d')],qs['fields'](_0x288055[_0x4073('0x2e')][_0x4073('0x33')]));_0x4d4baf[_0x4073('0x31')]=_0x4d4baf[_0x4073('0x31')][_0x4073('0x34')]?_0x4d4baf['attributes']:_0x2d577e[_0x4073('0x2d')];if(_0x288055[_0x4073('0x2e')][_0x4073('0x3e')]){_0x4d4baf[_0x4073('0x3f')]=[{'all':!![]}];}_0x4d4baf=_[_0x4073('0x3c')]({},_0x4d4baf,_0x288055['options']);return db[_0x4073('0x29')]['find'](_0x4d4baf)[_0x4073('0x22')](handleEntityNotFound(_0x4d026c,null))[_0x4073('0x22')](respondWithResult(_0x4d026c,null))[_0x4073('0x41')](handleError(_0x4d026c,null));};exports[_0x4073('0x44')]=function(_0x51093e,_0x5a0143){return db['JscriptyAnswerReport'][_0x4073('0x44')](_0x51093e[_0x4073('0x45')],{})[_0x4073('0x22')](respondWithResult(_0x5a0143,0xc9))[_0x4073('0x41')](handleError(_0x5a0143,null));};exports['update']=function(_0x4deee7,_0x49b366){if(_0x4deee7[_0x4073('0x45')]['id']){delete _0x4deee7[_0x4073('0x45')]['id'];}return db[_0x4073('0x29')]['find']({'where':{'id':_0x4deee7[_0x4073('0x43')]['id']}})[_0x4073('0x22')](handleEntityNotFound(_0x49b366,null))[_0x4073('0x22')](saveUpdates(_0x4deee7[_0x4073('0x45')],null))[_0x4073('0x22')](respondWithResult(_0x49b366,null))['catch'](handleError(_0x49b366,null));};exports['destroy']=function(_0x45fd98,_0x104983){return db[_0x4073('0x29')][_0x4073('0x46')]({'where':{'id':_0x45fd98['params']['id']}})[_0x4073('0x22')](handleEntityNotFound(_0x104983,null))[_0x4073('0x22')](removeEntity(_0x104983,null))[_0x4073('0x41')](handleError(_0x104983,null));};exports[_0x4073('0x47')]=function(_0x4ad4ee,_0x58588c){return db['JscriptyAnswerReport'][_0x4073('0x47')]()[_0x4073('0x22')](respondWithResult(_0x58588c,null))[_0x4073('0x41')](handleError(_0x58588c,null));};
\ No newline at end of file
index 37af5d3..d9977ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65ef=['JscriptyAnswerReport','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define'];(function(_0x1c879f,_0x5736f6){var _0x4aa45f=function(_0x1219a3){while(--_0x1219a3){_0x1c879f['push'](_0x1c879f['shift']());}};_0x4aa45f(++_0x5736f6);}(_0x65ef,0x9b));var _0xf65e=function(_0x488f6f,_0x25f1c3){_0x488f6f=_0x488f6f-0x0;var _0x52c79f=_0x65ef[_0x488f6f];return _0x52c79f;};'use strict';var _=require('lodash');var util=require(_0xf65e('0x0'));var logger=require(_0xf65e('0x1'))(_0xf65e('0x2'));var moment=require(_0xf65e('0x3'));var BPromise=require(_0xf65e('0x4'));var rp=require(_0xf65e('0x5'));var fs=require('fs');var path=require(_0xf65e('0x6'));var rimraf=require('rimraf');var config=require(_0xf65e('0x7'));var attributes=require('./jscriptyAnswerReport.attributes');module[_0xf65e('0x8')]=function(_0x569825,_0x589b02){return _0x569825[_0xf65e('0x9')](_0xf65e('0xa'),attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3983=['lodash','util','../../config/logger','api','moment','request-promise','rimraf','./jscriptyAnswerReport.attributes','exports','JscriptyAnswerReport'];(function(_0x282ec0,_0x23d5a7){var _0x483a49=function(_0x43f15c){while(--_0x43f15c){_0x282ec0['push'](_0x282ec0['shift']());}};_0x483a49(++_0x23d5a7);}(_0x3983,0x190));var _0x3398=function(_0x864504,_0x3afa1c){_0x864504=_0x864504-0x0;var _0x1685bf=_0x3983[_0x864504];return _0x1685bf;};'use strict';var _=require(_0x3398('0x0'));var util=require(_0x3398('0x1'));var logger=require(_0x3398('0x2'))(_0x3398('0x3'));var moment=require(_0x3398('0x4'));var BPromise=require('bluebird');var rp=require(_0x3398('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3398('0x6'));var config=require('../../config/environment');var attributes=require(_0x3398('0x7'));module[_0x3398('0x8')]=function(_0x5a6d6b,_0x1dc7e1){return _0x5a6d6b['define'](_0x3398('0x9'),attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 189ace6..f3ac9a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ee2=['debug','request\x20sent','stringify','error','code','JscriptyAnswerReport,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info'];(function(_0x7a319d,_0x235959){var _0x5c6b4e=function(_0x2e5b17){while(--_0x2e5b17){_0x7a319d['push'](_0x7a319d['shift']());}};_0x5c6b4e(++_0x235959);}(_0x0ee2,0x76));var _0x20ee=function(_0x20a07b,_0x2903fa){_0x20a07b=_0x20a07b-0x0;var _0x443163=_0x0ee2[_0x20a07b];return _0x443163;};'use strict';var _=require(_0x20ee('0x0'));var util=require(_0x20ee('0x1'));var moment=require(_0x20ee('0x2'));var BPromise=require(_0x20ee('0x3'));var rs=require(_0x20ee('0x4'));var fs=require('fs');var Redis=require(_0x20ee('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x20ee('0x6'));var logger=require('../../config/logger')(_0x20ee('0x7'));var config=require(_0x20ee('0x8'));var jayson=require(_0x20ee('0x9'));var client=jayson[_0x20ee('0xa')][_0x20ee('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x46621d,_0x3cb054,_0x330b31){return new BPromise(function(_0x4e0f28,_0x368f3f){return client[_0x20ee('0xc')](_0x46621d,_0x330b31)['then'](function(_0x4f71ae){logger[_0x20ee('0xd')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x3cb054,'request\x20sent');logger[_0x20ee('0xe')]('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x3cb054,_0x20ee('0xf'),JSON[_0x20ee('0x10')](_0x4f71ae));if(_0x4f71ae[_0x20ee('0x11')]){if(_0x4f71ae[_0x20ee('0x11')][_0x20ee('0x12')]===0x1f4){logger[_0x20ee('0x11')](_0x20ee('0x13'),_0x3cb054,_0x4f71ae['error'][_0x20ee('0x14')]);return _0x368f3f(_0x4f71ae[_0x20ee('0x11')]['message']);}logger['error'](_0x20ee('0x13'),_0x3cb054,_0x4f71ae[_0x20ee('0x11')][_0x20ee('0x14')]);return _0x4e0f28(_0x4f71ae[_0x20ee('0x11')][_0x20ee('0x14')]);}else{logger[_0x20ee('0xd')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x3cb054,_0x20ee('0xf'));_0x4e0f28(_0x4f71ae[_0x20ee('0x15')][_0x20ee('0x14')]);}})['catch'](function(_0x127d85){logger[_0x20ee('0x11')](_0x20ee('0x13'),_0x3cb054,_0x127d85);_0x368f3f(_0x127d85);});});}
\ No newline at end of file
+var _0xff25=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','JscriptyAnswerReport,\x20%s,\x20%s','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring'];(function(_0x59e86b,_0x2fa033){var _0x203dc2=function(_0x27cfce){while(--_0x27cfce){_0x59e86b['push'](_0x59e86b['shift']());}};_0x203dc2(++_0x2fa033);}(_0xff25,0x19a));var _0x5ff2=function(_0x142e17,_0x5d1ca0){_0x142e17=_0x142e17-0x0;var _0x306336=_0xff25[_0x142e17];return _0x306336;};'use strict';var _=require(_0x5ff2('0x0'));var util=require('util');var moment=require(_0x5ff2('0x1'));var BPromise=require(_0x5ff2('0x2'));var rs=require(_0x5ff2('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5ff2('0x4'))['db'];var utils=require(_0x5ff2('0x5'));var logger=require(_0x5ff2('0x6'))('rpc');var config=require(_0x5ff2('0x7'));var jayson=require(_0x5ff2('0x8'));var client=jayson[_0x5ff2('0x9')][_0x5ff2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4aaecc,_0x314d00,_0x1411eb){return new BPromise(function(_0x49e4c0,_0x4a949f){return client[_0x5ff2('0xb')](_0x4aaecc,_0x1411eb)[_0x5ff2('0xc')](function(_0x1a8ae7){logger['info'](_0x5ff2('0xd'),_0x314d00,'request\x20sent');logger['debug'](_0x5ff2('0xe'),_0x314d00,_0x5ff2('0xf'),JSON[_0x5ff2('0x10')](_0x1a8ae7));if(_0x1a8ae7[_0x5ff2('0x11')]){if(_0x1a8ae7[_0x5ff2('0x11')][_0x5ff2('0x12')]===0x1f4){logger[_0x5ff2('0x11')](_0x5ff2('0xd'),_0x314d00,_0x1a8ae7[_0x5ff2('0x11')][_0x5ff2('0x13')]);return _0x4a949f(_0x1a8ae7[_0x5ff2('0x11')]['message']);}logger[_0x5ff2('0x11')](_0x5ff2('0xd'),_0x314d00,_0x1a8ae7[_0x5ff2('0x11')][_0x5ff2('0x13')]);return _0x49e4c0(_0x1a8ae7['error'][_0x5ff2('0x13')]);}else{logger[_0x5ff2('0x14')](_0x5ff2('0xd'),_0x314d00,_0x5ff2('0xf'));_0x49e4c0(_0x1a8ae7[_0x5ff2('0x15')]['message']);}})[_0x5ff2('0x16')](function(_0x4d5a1d){logger[_0x5ff2('0x11')](_0x5ff2('0xd'),_0x314d00,_0x4d5a1d);_0x4a949f(_0x4d5a1d);});});}
\ No newline at end of file
index e559d40..c40824c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5377=['clone','put','update','delete','destroy','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','get','isAuthenticated','index','/:id','show','/:id/sessions','/:id/answers','getAnswers','/:id/summary','30s','post','create','/:id/clone'];(function(_0x29885b,_0x13ee63){var _0x503acb=function(_0x15db15){while(--_0x15db15){_0x29885b['push'](_0x29885b['shift']());}};_0x503acb(++_0x13ee63);}(_0x5377,0x17f));var _0x7537=function(_0x229450,_0x4b8b9e){_0x229450=_0x229450-0x0;var _0x2788b3=_0x5377[_0x229450];return _0x2788b3;};'use strict';var multer=require('multer');var util=require(_0x7537('0x0'));var path=require(_0x7537('0x1'));var timeout=require(_0x7537('0x2'));var express=require('express');var router=express[_0x7537('0x3')]();var fs_extra=require(_0x7537('0x4'));var auth=require(_0x7537('0x5'));var interaction=require(_0x7537('0x6'));var config=require(_0x7537('0x7'));var controller=require(_0x7537('0x8'));router[_0x7537('0x9')]('/',auth[_0x7537('0xa')](),controller[_0x7537('0xb')]);router[_0x7537('0x9')](_0x7537('0xc'),auth[_0x7537('0xa')](),controller[_0x7537('0xd')]);router[_0x7537('0x9')](_0x7537('0xe'),auth[_0x7537('0xa')](),controller['getSessions']);router['get'](_0x7537('0xf'),auth[_0x7537('0xa')](),controller[_0x7537('0x10')]);router[_0x7537('0x9')](_0x7537('0x11'),auth['isAuthenticated'](),timeout(_0x7537('0x12')),controller['getSummary']);router[_0x7537('0x13')]('/',auth['isAuthenticated'](),controller[_0x7537('0x14')]);router[_0x7537('0x13')](_0x7537('0x15'),auth[_0x7537('0xa')](),controller[_0x7537('0x16')]);router[_0x7537('0x17')](_0x7537('0xc'),auth[_0x7537('0xa')](),controller[_0x7537('0x18')]);router[_0x7537('0x19')](_0x7537('0xc'),auth[_0x7537('0xa')](),controller[_0x7537('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0xdb09=['../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','get','index','/:id','isAuthenticated','/:id/sessions','/:id/answers','/:id/summary','post','create','clone','update','delete','destroy','path','connect-timeout','express','Router','fs-extra'];(function(_0x5d5aa4,_0x2a560a){var _0x2e6533=function(_0x27b6d2){while(--_0x27b6d2){_0x5d5aa4['push'](_0x5d5aa4['shift']());}};_0x2e6533(++_0x2a560a);}(_0xdb09,0x95));var _0x9db0=function(_0x28c648,_0x2fe756){_0x28c648=_0x28c648-0x0;var _0x11e77e=_0xdb09[_0x28c648];return _0x11e77e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x9db0('0x0'));var timeout=require(_0x9db0('0x1'));var express=require(_0x9db0('0x2'));var router=express[_0x9db0('0x3')]();var fs_extra=require(_0x9db0('0x4'));var auth=require(_0x9db0('0x5'));var interaction=require(_0x9db0('0x6'));var config=require(_0x9db0('0x7'));var controller=require(_0x9db0('0x8'));router[_0x9db0('0x9')]('/',auth['isAuthenticated'](),controller[_0x9db0('0xa')]);router[_0x9db0('0x9')](_0x9db0('0xb'),auth[_0x9db0('0xc')](),controller['show']);router[_0x9db0('0x9')](_0x9db0('0xd'),auth[_0x9db0('0xc')](),controller['getSessions']);router['get'](_0x9db0('0xe'),auth[_0x9db0('0xc')](),controller['getAnswers']);router[_0x9db0('0x9')](_0x9db0('0xf'),auth[_0x9db0('0xc')](),timeout('30s'),controller['getSummary']);router[_0x9db0('0x10')]('/',auth['isAuthenticated'](),controller[_0x9db0('0x11')]);router[_0x9db0('0x10')]('/:id/clone',auth[_0x9db0('0xc')](),controller[_0x9db0('0x12')]);router['put'](_0x9db0('0xb'),auth[_0x9db0('0xc')](),controller[_0x9db0('0x13')]);router[_0x9db0('0x14')](_0x9db0('0xb'),auth[_0x9db0('0xc')](),controller[_0x9db0('0x15')]);module['exports']=router;
\ No newline at end of file
index ca8a709..59d950c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5f0=['{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','name','description','BOOLEAN','sequelize','lodash','exports','STRING','TEXT','long','isObjectLike','setDataValue','formData','stringify','format'];(function(_0x10b7d7,_0x29e8d5){var _0x145ec7=function(_0xe01902){while(--_0xe01902){_0x10b7d7['push'](_0x10b7d7['shift']());}};_0x145ec7(++_0x29e8d5);}(_0xc5f0,0x65));var _0x0c5f=function(_0x4ed4d2,_0x47acf7){_0x4ed4d2=_0x4ed4d2-0x0;var _0x15ae2e=_0xc5f0[_0x4ed4d2];return _0x15ae2e;};'use strict';var Sequelize=require(_0x0c5f('0x0'));var _=require(_0x0c5f('0x1'));var util=require('util');module[_0x0c5f('0x2')]={'name':{'type':Sequelize[_0x0c5f('0x3')],'unique':'name'},'description':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0x0c5f('0x4')](_0x0c5f('0x5')),'set':function(_0xe9cf89){if(_[_0x0c5f('0x6')](_0xe9cf89)){this[_0x0c5f('0x7')](_0x0c5f('0x8'),JSON[_0x0c5f('0x9')](_0xe9cf89));}else if(_['isString'](_0xe9cf89)){this[_0x0c5f('0x7')](_0x0c5f('0x8'),_0xe9cf89);}else{this[_0x0c5f('0x7')](_0x0c5f('0x8'),util[_0x0c5f('0xa')](_0x0c5f('0xb'),this[_0x0c5f('0xc')](_0x0c5f('0xd'))||'',this[_0x0c5f('0xc')](_0x0c5f('0xe'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x0c5f('0xf')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0c18=['description','BOOLEAN','sequelize','lodash','util','exports','TEXT','long','isObjectLike','setDataValue','formData','stringify','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue'];(function(_0x375241,_0x585fb7){var _0x368519=function(_0x4f8547){while(--_0x4f8547){_0x375241['push'](_0x375241['shift']());}};_0x368519(++_0x585fb7);}(_0x0c18,0xd4));var _0x80c1=function(_0x10004e,_0xd701e6){_0x10004e=_0x10004e-0x0;var _0x5af990=_0x0c18[_0x10004e];return _0x5af990;};'use strict';var Sequelize=require(_0x80c1('0x0'));var _=require(_0x80c1('0x1'));var util=require(_0x80c1('0x2'));module[_0x80c1('0x3')]={'name':{'type':Sequelize['STRING'],'unique':'name'},'description':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0x80c1('0x4')](_0x80c1('0x5')),'set':function(_0x3b4631){if(_[_0x80c1('0x6')](_0x3b4631)){this[_0x80c1('0x7')](_0x80c1('0x8'),JSON[_0x80c1('0x9')](_0x3b4631));}else if(_['isString'](_0x3b4631)){this[_0x80c1('0x7')]('formData',_0x3b4631);}else{this['setDataValue'](_0x80c1('0x8'),util['format'](_0x80c1('0xa'),this[_0x80c1('0xb')]('name')||'',this[_0x80c1('0xb')](_0x80c1('0xc'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x80c1('0xd')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x80c1('0xd')],'defaultValue':![]}};
\ No newline at end of file
index 77a1217..c6128e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5078=['../../components/auth/service','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','then','destroy','Projects','UserProfileResource','error','stack','name','index','map','JscriptyProject','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','userProfileId','omit','createdAt','updatedAt','body','UserProfileSection','update','getSessions','findOne','JscriptySessionReport','order','ProjectId','getAnswers','JscriptyAnswerReport','number','toString','indexOf','replace','getSummary','startTime','starttime','JscriptyQuestionReport','-createdAt','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','isEmpty','now','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','attachment;\x20filename=','text/csv','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse'];(function(_0x16a43c,_0x462e8e){var _0x27e2e5=function(_0x143498){while(--_0x143498){_0x16a43c['push'](_0x16a43c['shift']());}};_0x27e2e5(++_0x462e8e);}(_0x5078,0x147));var _0x8507=function(_0x4f66c2,_0x47d4ed){_0x4f66c2=_0x4f66c2-0x0;var _0x447633=_0x5078[_0x4f66c2];return _0x447633;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8507('0x0'));var zipdir=require(_0x8507('0x1'));var jsonpatch=require(_0x8507('0x2'));var rp=require(_0x8507('0x3'));var moment=require(_0x8507('0x4'));var BPromise=require(_0x8507('0x5'));var Mustache=require('mustache');var util=require(_0x8507('0x6'));var path=require(_0x8507('0x7'));var sox=require(_0x8507('0x8'));var csv=require('to-csv');var ejs=require(_0x8507('0x9'));var fs=require('fs');var fs_extra=require(_0x8507('0xa'));var _=require(_0x8507('0xb'));var squel=require(_0x8507('0xc'));var crypto=require('crypto');var jsforce=require(_0x8507('0xd'));var deskjs=require(_0x8507('0xe'));var toCsv=require(_0x8507('0xf'));var querystring=require(_0x8507('0x10'));var Papa=require(_0x8507('0x11'));var Redis=require('ioredis');var authService=require(_0x8507('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8507('0x13'));var logger=require('../../config/logger')(_0x8507('0x14'));var utils=require('../../config/utils');var config=require(_0x8507('0x15'));var licenseUtil=require(_0x8507('0x16'));var db=require(_0x8507('0x17'))['db'];function respondWithStatusCode(_0x3d3d38,_0x1768bd){_0x1768bd=_0x1768bd||0xcc;return function(_0x1eeed5){if(_0x1eeed5){return _0x3d3d38[_0x8507('0x18')](_0x1768bd);}return _0x3d3d38[_0x8507('0x19')](_0x1768bd)[_0x8507('0x1a')]();};}function respondWithResult(_0x488d94,_0x58d009){_0x58d009=_0x58d009||0xc8;return function(_0x433839){if(_0x433839){return _0x488d94[_0x8507('0x19')](_0x58d009)[_0x8507('0x1b')](_0x433839);}};}function respondWithFilteredResult(_0x4819c2,_0x202537){return function(_0x412801){if(_0x412801){var _0x3247af=typeof _0x202537['offset']===_0x8507('0x1c')&&typeof _0x202537[_0x8507('0x1d')]===_0x8507('0x1c');var _0x14d963=_0x412801['count'];var _0x530283=_0x3247af?0x0:_0x202537['offset'];var _0xeac6ba=_0x3247af?_0x412801[_0x8507('0x1e')]:_0x202537[_0x8507('0x1f')]+_0x202537[_0x8507('0x1d')];var _0x5731da;if(_0xeac6ba>=_0x14d963){_0xeac6ba=_0x14d963;_0x5731da=0xc8;}else{_0x5731da=0xce;}_0x4819c2[_0x8507('0x19')](_0x5731da);return _0x4819c2[_0x8507('0x20')]('Content-Range',_0x530283+'-'+_0xeac6ba+'/'+_0x14d963)['json'](_0x412801);}return null;};}function patchUpdates(_0x16bf1c){return function(_0x14fd45){try{jsonpatch[_0x8507('0x21')](_0x14fd45,_0x16bf1c,!![]);}catch(_0x545ec3){return BPromise[_0x8507('0x22')](_0x545ec3);}return _0x14fd45['save']();};}function saveUpdates(_0x39fb1b,_0x34db01){return function(_0x51d88e){if(_0x51d88e){return _0x51d88e['update'](_0x39fb1b)[_0x8507('0x23')](function(_0x5a806b){return _0x5a806b;});}return null;};}function removeEntity(_0x399987,_0x245efd){return function(_0x4b5454){if(_0x4b5454){return _0x4b5454[_0x8507('0x24')]()[_0x8507('0x23')](function(){var _0x1c9a2a=_0x4b5454['get']({'plain':!![]});var _0x350145=_0x8507('0x25');return db[_0x8507('0x26')][_0x8507('0x24')]({'where':{'type':_0x350145,'resourceId':_0x1c9a2a['id']}})[_0x8507('0x23')](function(){return _0x4b5454;});})[_0x8507('0x23')](function(){_0x399987[_0x8507('0x19')](0xcc)[_0x8507('0x1a')]();});}};}function handleEntityNotFound(_0x24e6f2,_0x18238a){return function(_0x41599a){if(!_0x41599a){_0x24e6f2['sendStatus'](0x194);}return _0x41599a;};}function handleError(_0x4a854f,_0x5e3e6f){_0x5e3e6f=_0x5e3e6f||0x1f4;return function(_0x18a3af){logger[_0x8507('0x27')](_0x18a3af[_0x8507('0x28')]);if(_0x18a3af[_0x8507('0x29')]){delete _0x18a3af[_0x8507('0x29')];}_0x4a854f[_0x8507('0x19')](_0x5e3e6f)['send'](_0x18a3af);};}exports[_0x8507('0x2a')]=function(_0x2f6fa6,_0x3bd460){var _0x3e31b5={},_0x341639={},_0x4641eb={'count':0x0,'rows':[]};var _0x3f6604=_[_0x8507('0x2b')](db[_0x8507('0x2c')][_0x8507('0x2d')],function(_0x2a6e52){return{'name':_0x2a6e52[_0x8507('0x2e')],'type':_0x2a6e52[_0x8507('0x2f')][_0x8507('0x30')]};});_0x341639[_0x8507('0x31')]=_[_0x8507('0x2b')](_0x3f6604,'name');_0x341639['query']=_[_0x8507('0x32')](_0x2f6fa6['query']);_0x341639[_0x8507('0x33')]=_[_0x8507('0x34')](_0x341639[_0x8507('0x31')],_0x341639[_0x8507('0x35')]);_0x3e31b5[_0x8507('0x36')]=_[_0x8507('0x34')](_0x341639['model'],qs['fields'](_0x2f6fa6[_0x8507('0x35')][_0x8507('0x37')]));_0x3e31b5['attributes']=_0x3e31b5[_0x8507('0x36')][_0x8507('0x38')]?_0x3e31b5[_0x8507('0x36')]:_0x341639[_0x8507('0x31')];if(!_0x2f6fa6[_0x8507('0x35')][_0x8507('0x39')](_0x8507('0x3a'))){_0x3e31b5['limit']=qs[_0x8507('0x1d')](_0x2f6fa6[_0x8507('0x35')]['limit']);_0x3e31b5['offset']=qs[_0x8507('0x1f')](_0x2f6fa6[_0x8507('0x35')]['offset']);}_0x3e31b5['order']=qs[_0x8507('0x3b')](_0x2f6fa6['query']['sort']);_0x3e31b5['where']=qs[_0x8507('0x33')](_[_0x8507('0x3c')](_0x2f6fa6[_0x8507('0x35')],_0x341639[_0x8507('0x33')]),_0x3f6604);if(_0x2f6fa6[_0x8507('0x35')][_0x8507('0x3d')]){_0x3e31b5['where']=_[_0x8507('0x3e')](_0x3e31b5[_0x8507('0x3f')],{'$or':_[_0x8507('0x2b')](_0x3f6604,function(_0x4575b6){if(_0x4575b6['type']!==_0x8507('0x40')){var _0x533979={};_0x533979[_0x4575b6[_0x8507('0x29')]]={'$like':'%'+_0x2f6fa6[_0x8507('0x35')][_0x8507('0x3d')]+'%'};return _0x533979;}})});}_0x3e31b5=_['merge']({},_0x3e31b5,_0x2f6fa6[_0x8507('0x41')]);var _0x3118bd={'where':_0x3e31b5[_0x8507('0x3f')]};return db[_0x8507('0x2c')]['count'](_0x3118bd)[_0x8507('0x23')](function(_0x18c513){_0x4641eb['count']=_0x18c513;if(_0x2f6fa6[_0x8507('0x35')][_0x8507('0x42')]){_0x3e31b5[_0x8507('0x43')]=[{'all':!![]}];}return db[_0x8507('0x2c')][_0x8507('0x44')](_0x3e31b5);})[_0x8507('0x23')](function(_0x4f77c5){_0x4641eb[_0x8507('0x45')]=_0x4f77c5;return _0x4641eb;})[_0x8507('0x23')](respondWithFilteredResult(_0x3bd460,_0x3e31b5))[_0x8507('0x46')](handleError(_0x3bd460,null));};exports[_0x8507('0x47')]=function(_0x2786b2,_0x44ec08){var _0x230c4e={'raw':![],'where':{'id':_0x2786b2[_0x8507('0x48')]['id']}},_0x45093f={};_0x45093f[_0x8507('0x31')]=_[_0x8507('0x32')](db['JscriptyProject'][_0x8507('0x2d')]);_0x45093f[_0x8507('0x35')]=_[_0x8507('0x32')](_0x2786b2['query']);_0x45093f['filters']=_['intersection'](_0x45093f['model'],_0x45093f[_0x8507('0x35')]);_0x230c4e[_0x8507('0x36')]=_[_0x8507('0x34')](_0x45093f['model'],qs['fields'](_0x2786b2[_0x8507('0x35')][_0x8507('0x37')]));_0x230c4e[_0x8507('0x36')]=_0x230c4e['attributes'][_0x8507('0x38')]?_0x230c4e[_0x8507('0x36')]:_0x45093f[_0x8507('0x31')];if(_0x2786b2[_0x8507('0x35')]['includeAll']){_0x230c4e[_0x8507('0x43')]=[{'all':!![]}];}_0x230c4e=_[_0x8507('0x3e')]({},_0x230c4e,_0x2786b2['options']);return db[_0x8507('0x2c')][_0x8507('0x49')](_0x230c4e)[_0x8507('0x23')](handleEntityNotFound(_0x44ec08,null))[_0x8507('0x23')](respondWithResult(_0x44ec08,null))[_0x8507('0x46')](handleError(_0x44ec08,null));};exports[_0x8507('0x4a')]=function(_0x333545,_0x3f0271){return db[_0x8507('0x2c')][_0x8507('0x4a')](_0x333545['body'],{})['then'](function(_0x4455a8){var _0x292ecc=_0x333545[_0x8507('0x4b')]['get']({'plain':!![]});if(!_0x292ecc)throw new Error(_0x8507('0x4c'));if(_0x292ecc[_0x8507('0x4d')]===_0x8507('0x4b')){var _0xd828be=_0x4455a8[_0x8507('0x4e')]({'plain':!![]});var _0x234f19=_0x8507('0x25');return db['UserProfileSection']['find']({'where':{'name':_0x234f19,'userProfileId':_0x292ecc[_0x8507('0x4f')]},'raw':!![]})[_0x8507('0x23')](function(_0x18aa1b){if(_0x18aa1b&&_0x18aa1b['autoAssociation']===0x0){return db[_0x8507('0x26')][_0x8507('0x4a')]({'name':_0xd828be[_0x8507('0x29')],'resourceId':_0xd828be['id'],'type':_0x18aa1b[_0x8507('0x29')],'sectionId':_0x18aa1b['id']},{})['then'](function(){return _0x4455a8;});}else{return _0x4455a8;}})[_0x8507('0x46')](function(_0x3cff85){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3cff85);throw _0x3cff85;});}return _0x4455a8;})['then'](respondWithResult(_0x3f0271,0xc9))[_0x8507('0x46')](handleError(_0x3f0271,null));};exports['clone']=function(_0x15d07a,_0x49ce94){var _0x4b8ca8={'where':{'id':_0x15d07a[_0x8507('0x48')]['id']}},_0x4fefa8={};_0x4fefa8[_0x8507('0x31')]=_[_0x8507('0x32')](db['JscriptyProject'][_0x8507('0x2d')]);_0x4b8ca8[_0x8507('0x36')]=_['intersection'](_0x4fefa8[_0x8507('0x31')],qs['fields'](_0x15d07a[_0x8507('0x35')]['fields']));_0x4b8ca8[_0x8507('0x36')]=_0x4b8ca8[_0x8507('0x36')]['length']?_0x4b8ca8[_0x8507('0x36')]:_0x4fefa8[_0x8507('0x31')];if(_0x15d07a['query'][_0x8507('0x42')]){_0x4b8ca8[_0x8507('0x43')]=[{'all':!![]}];}_0x4b8ca8=_[_0x8507('0x3e')]({},_0x4b8ca8,_0x15d07a[_0x8507('0x41')]);return db[_0x8507('0x2c')][_0x8507('0x49')](_0x4b8ca8)[_0x8507('0x23')](handleEntityNotFound(_0x49ce94,null))[_0x8507('0x23')](function(_0x188ffe){if(_0x188ffe){var _0x29b214=_0x188ffe[_0x8507('0x4e')]({'plain':!![]});_0x29b214=qs[_0x8507('0x50')](_0x29b214,['id',_0x8507('0x51'),_0x8507('0x52')]);_0x15d07a['body']=_[_0x8507('0x50')](_0x15d07a[_0x8507('0x53')],['id','createdAt',_0x8507('0x52')]);return db[_0x8507('0x2c')][_0x8507('0x4a')](_['merge'](_0x29b214,_0x15d07a[_0x8507('0x53')]),{'include':_0x15d07a[_0x8507('0x35')][_0x8507('0x42')]?[{'all':!![]}]:undefined})[_0x8507('0x23')](function(_0x18745f){var _0x14849e=_0x15d07a[_0x8507('0x4b')][_0x8507('0x4e')]({'plain':!![]});if(!_0x14849e)throw new Error(_0x8507('0x4c'));if(_0x14849e[_0x8507('0x4d')]===_0x8507('0x4b')){var _0x26c125=_0x18745f['get']({'plain':!![]});var _0x257fd4=_0x8507('0x25');return db[_0x8507('0x54')]['find']({'where':{'name':_0x257fd4,'userProfileId':_0x14849e['userProfileId']},'raw':!![]})['then'](function(_0x5a68a1){if(_0x5a68a1&&_0x5a68a1['autoAssociation']===0x0){return db[_0x8507('0x26')][_0x8507('0x4a')]({'name':_0x26c125['name'],'resourceId':_0x26c125['id'],'type':_0x5a68a1[_0x8507('0x29')],'sectionId':_0x5a68a1['id']},{})[_0x8507('0x23')](function(){return _0x18745f;});}else{return _0x18745f;}})[_0x8507('0x46')](function(_0x38de10){logger[_0x8507('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x38de10);throw _0x38de10;});}return _0x18745f;});}})['then'](respondWithResult(_0x49ce94,0xc9))['catch'](handleError(_0x49ce94,null));};exports[_0x8507('0x55')]=function(_0xea1ac4,_0x4bb6e9){if(_0xea1ac4['body']['id']){delete _0xea1ac4[_0x8507('0x53')]['id'];}return db[_0x8507('0x2c')][_0x8507('0x49')]({'where':{'id':_0xea1ac4[_0x8507('0x48')]['id']}})['then'](handleEntityNotFound(_0x4bb6e9,null))[_0x8507('0x23')](saveUpdates(_0xea1ac4[_0x8507('0x53')],null))[_0x8507('0x23')](respondWithResult(_0x4bb6e9,null))[_0x8507('0x46')](handleError(_0x4bb6e9,null));};exports[_0x8507('0x24')]=function(_0x5317a4,_0x342898){return db['JscriptyProject'][_0x8507('0x49')]({'where':{'id':_0x5317a4[_0x8507('0x48')]['id']}})[_0x8507('0x23')](handleEntityNotFound(_0x342898,null))[_0x8507('0x23')](removeEntity(_0x342898,null))[_0x8507('0x46')](handleError(_0x342898,null));};exports[_0x8507('0x56')]=function(_0x39848d,_0x3283e0,_0x4d03a9){var _0x4ba4d1={'raw':!![],'where':{}};var _0x35e18d={};var _0x25c367={'count':0x0,'rows':[]};return db[_0x8507('0x2c')][_0x8507('0x57')]({'where':{'id':_0x39848d[_0x8507('0x48')]['id']}})[_0x8507('0x23')](handleEntityNotFound(_0x3283e0,null))['then'](function(_0x52f639){if(_0x52f639){_0x35e18d[_0x8507('0x31')]=_[_0x8507('0x32')](db[_0x8507('0x58')]['rawAttributes']);_0x35e18d[_0x8507('0x35')]=_[_0x8507('0x32')](_0x39848d[_0x8507('0x35')]);_0x35e18d[_0x8507('0x33')]=_[_0x8507('0x34')](_0x35e18d[_0x8507('0x31')],_0x35e18d[_0x8507('0x35')]);_0x4ba4d1[_0x8507('0x36')]=_['intersection'](_0x35e18d[_0x8507('0x31')],qs['fields'](_0x39848d['query'][_0x8507('0x37')]));_0x4ba4d1[_0x8507('0x36')]=_0x4ba4d1['attributes'][_0x8507('0x38')]?_0x4ba4d1[_0x8507('0x36')]:_0x35e18d[_0x8507('0x31')];if(!_0x39848d[_0x8507('0x35')]['hasOwnProperty'](_0x8507('0x3a'))){_0x4ba4d1[_0x8507('0x1d')]=qs[_0x8507('0x1d')](_0x39848d[_0x8507('0x35')][_0x8507('0x1d')]);_0x4ba4d1[_0x8507('0x1f')]=qs[_0x8507('0x1f')](_0x39848d[_0x8507('0x35')][_0x8507('0x1f')]);}_0x4ba4d1[_0x8507('0x59')]=qs[_0x8507('0x3b')](_0x39848d[_0x8507('0x35')][_0x8507('0x3b')]);_0x4ba4d1['where']=qs[_0x8507('0x33')](_[_0x8507('0x3c')](_0x39848d[_0x8507('0x35')],_0x35e18d[_0x8507('0x33')]));_0x4ba4d1[_0x8507('0x3f')][_0x8507('0x5a')]=_0x52f639['id'];if(_0x39848d['query'][_0x8507('0x3d')]){_0x4ba4d1[_0x8507('0x3f')]=_[_0x8507('0x3e')](_0x4ba4d1[_0x8507('0x3f')],{'$or':_['map'](_0x4ba4d1[_0x8507('0x36')],function(_0x337ccc){var _0x3ebe73={};_0x3ebe73[_0x337ccc]={'$like':'%'+_0x39848d[_0x8507('0x35')]['filter']+'%'};return _0x3ebe73;})});}_0x4ba4d1=_[_0x8507('0x3e')]({},_0x4ba4d1,_0x39848d[_0x8507('0x41')]);return db[_0x8507('0x58')][_0x8507('0x1e')]({'where':_0x4ba4d1[_0x8507('0x3f')]})[_0x8507('0x23')](function(_0x5e4293){_0x25c367['count']=_0x5e4293;if(_0x39848d[_0x8507('0x35')][_0x8507('0x42')]){_0x4ba4d1[_0x8507('0x43')]=[{'all':!![]}];}return db[_0x8507('0x58')][_0x8507('0x44')](_0x4ba4d1);})['then'](function(_0x651b63){_0x25c367[_0x8507('0x45')]=_0x651b63;return _0x25c367;});}})['then'](respondWithFilteredResult(_0x3283e0,_0x4ba4d1))[_0x8507('0x46')](handleError(_0x3283e0,null));};exports[_0x8507('0x5b')]=function(_0x144aef,_0x58c6b8,_0x10fa36){var _0x135cd0={'raw':!![],'where':{}};var _0x2b7942={};var _0x2edc1e={'count':0x0,'rows':[]};return db[_0x8507('0x2c')][_0x8507('0x57')]({'where':{'id':_0x144aef[_0x8507('0x48')]['id']}})[_0x8507('0x23')](handleEntityNotFound(_0x58c6b8,null))[_0x8507('0x23')](function(_0x22bd2d){if(_0x22bd2d){_0x2b7942[_0x8507('0x31')]=_['keys'](db[_0x8507('0x5c')][_0x8507('0x2d')]);_0x2b7942[_0x8507('0x35')]=_[_0x8507('0x32')](_0x144aef[_0x8507('0x35')]);_0x2b7942[_0x8507('0x33')]=_[_0x8507('0x34')](_0x2b7942[_0x8507('0x31')],_0x2b7942['query']);_0x135cd0[_0x8507('0x36')]=_[_0x8507('0x34')](_0x2b7942[_0x8507('0x31')],qs[_0x8507('0x37')](_0x144aef['query'][_0x8507('0x37')]));_0x135cd0[_0x8507('0x36')]=_0x135cd0[_0x8507('0x36')][_0x8507('0x38')]?_0x135cd0[_0x8507('0x36')]:_0x2b7942['model'];if(!_0x144aef['query'][_0x8507('0x39')]('nolimit')){_0x135cd0[_0x8507('0x1d')]=qs[_0x8507('0x1d')](_0x144aef['query'][_0x8507('0x1d')]);_0x135cd0[_0x8507('0x1f')]=qs[_0x8507('0x1f')](_0x144aef['query'][_0x8507('0x1f')]);}_0x135cd0[_0x8507('0x59')]=qs[_0x8507('0x3b')](_0x144aef['query']['sort']);_0x135cd0['where']=qs['filters'](_[_0x8507('0x3c')](_0x144aef[_0x8507('0x35')],_0x2b7942[_0x8507('0x33')]));_0x135cd0['where'][_0x8507('0x5a')]=_0x22bd2d['id'];if(_0x144aef[_0x8507('0x35')][_0x8507('0x3d')]){_0x135cd0[_0x8507('0x3f')]=_[_0x8507('0x3e')](_0x135cd0['where'],{'$or':_[_0x8507('0x2b')](_0x135cd0[_0x8507('0x36')],function(_0x290905){var _0x19790e={};_0x19790e[_0x290905]={'$like':'%'+_0x144aef[_0x8507('0x35')]['filter']+'%'};return _0x19790e;})});}_0x135cd0=_['merge']({},_0x135cd0,_0x144aef['options']);return db[_0x8507('0x5c')][_0x8507('0x1e')]({'where':_0x135cd0[_0x8507('0x3f')]})[_0x8507('0x23')](function(_0x181c37){_0x2edc1e[_0x8507('0x1e')]=_0x181c37;if(_0x144aef[_0x8507('0x35')][_0x8507('0x42')]){_0x135cd0[_0x8507('0x43')]=[{'all':!![]}];}return db[_0x8507('0x5c')]['findAll'](_0x135cd0);})['then'](function(_0x151166){_0x2edc1e[_0x8507('0x45')]=_0x151166;return _0x2edc1e;});}})[_0x8507('0x23')](respondWithFilteredResult(_0x58c6b8,_0x135cd0))['catch'](handleError(_0x58c6b8,null));};function char(_0x50f222){return _0x8507('0x5d')===typeof _0x50f222?String['fromCharCode'][_0x8507('0x21')](null,arguments):_0x50f222;}function needsEncapsulation(_0x2b2fe1){return!!_0x2b2fe1&&(_0x2b2fe1[_0x8507('0x5e')]()[_0x8507('0x5f')](char(0xd))>=0x0||_0x2b2fe1[_0x8507('0x5e')]()[_0x8507('0x5f')](char(0xa))>=0x0||_0x2b2fe1[_0x8507('0x5e')]()[_0x8507('0x5f')](char(0x2c))>=0x0||_0x2b2fe1['toString']()[_0x8507('0x5f')](char(0x22))>=0x0);}function encapsulate(_0x569720){var _0x2c54a0=char(0x22),_0x527db1='\x5c'+char(0x22),_0x4dbe6f=_0x569720[_0x8507('0x5e')]()[_0x8507('0x60')](new RegExp(_0x2c54a0,'g'),_0x527db1);return _0x2c54a0+_0x4dbe6f+_0x2c54a0;}exports[_0x8507('0x61')]=function(_0x484b33,_0x50efe2,_0x3bd268){var _0x333e8b,_0x314526;var _0x1566d1={'where':{'ProjectId':_0x484b33[_0x8507('0x48')]['id']}};if(_0x484b33[_0x8507('0x35')][_0x8507('0x62')]){_0x1566d1[_0x8507('0x3f')][_0x8507('0x63')]=JSON['parse'](_0x484b33[_0x8507('0x35')][_0x8507('0x62')]);}return db['JscriptySessionReport'][_0x8507('0x44')](_0x1566d1)[_0x8507('0x23')](handleEntityNotFound(_0x50efe2,null))['then'](function(_0x33960e){if(_0x33960e){_0x333e8b=_0x33960e;return db[_0x8507('0x64')]['findAll']({'where':{'SessionId':{'$in':_[_0x8507('0x2b')](_0x333e8b,'id')},'ProjectId':_0x484b33[_0x8507('0x48')]['id']},'order':_0x8507('0x65')});}})[_0x8507('0x23')](handleEntityNotFound(_0x50efe2,null))['then'](function(_0x396b67){if(_0x396b67){_0x314526=_0x396b67;var _0x45eaa4={};for(var _0x507aa0=0x0,_0x5e43c8=_0x314526[_0x8507('0x38')];_0x507aa0<_0x5e43c8;_0x507aa0++){if(!_0x45eaa4['hasOwnProperty'](_0x314526[_0x507aa0][_0x8507('0x66')])){_0x45eaa4[_0x314526[_0x507aa0][_0x8507('0x66')]]=needsEncapsulation(_0x314526[_0x507aa0]['question'])?encapsulate(_0x314526[_0x507aa0][_0x8507('0x67')]):_0x314526[_0x507aa0][_0x8507('0x67')];}}var _0x562a88=[],_0x474d2f={};for(var _0x56871f=0x0,_0x95bc37=_0x333e8b['length'];_0x56871f<_0x95bc37;_0x56871f++){_0x474d2f={'ProjectId':_0x484b33[_0x8507('0x48')]['id'],'SessionId':_0x333e8b[_0x56871f]['id'],'StartTime':moment(_0x333e8b[_0x56871f][_0x8507('0x63')])[_0x8507('0x68')](_0x8507('0x69'))};for(var _0x3451ef=0x0,_0x3816ea=_0x314526[_0x8507('0x38')];_0x3451ef<_0x3816ea;_0x3451ef++){if(_0x314526[_0x3451ef][_0x8507('0x6a')]==_0x333e8b[_0x56871f]['id']&&_0x45eaa4['hasOwnProperty'](_0x314526[_0x3451ef][_0x8507('0x66')])){_0x474d2f[_0x45eaa4[_0x314526[_0x3451ef]['questionId']]]=_0x314526[_0x3451ef][_0x8507('0x6b')];}}for(var _0x588e80 in _0x45eaa4){if(!_0x474d2f[_0x8507('0x39')](_0x45eaa4[_0x588e80])){_0x474d2f[_0x45eaa4[_0x588e80]]=null;}}_0x562a88[_0x8507('0x6c')](_0x474d2f);}return _0x562a88;}})[_0x8507('0x23')](function(_0x1d6cf6){if(!_[_0x8507('0x6d')](_0x1d6cf6)){var _0x6413fc=toCsv(_0x1d6cf6);var _0x4467b0=Date[_0x8507('0x6e')]();fs['writeFileSync'](util['format'](_0x8507('0x6f'),_0x484b33[_0x8507('0x48')]['id'],_0x4467b0),_0x6413fc);_0x50efe2[_0x8507('0x70')]('Content-disposition',_0x8507('0x71')+util[_0x8507('0x68')]('Jscripty_Project_%d_Summary_%s.csv',_0x484b33[_0x8507('0x48')]['id'],_0x4467b0));_0x50efe2[_0x8507('0x70')]('Content-type',_0x8507('0x72'));return _0x50efe2['download'](util[_0x8507('0x68')](_0x8507('0x6f'),_0x484b33['params']['id'],_0x4467b0));}else{return _0x50efe2[_0x8507('0x18')](0xcc);}})['catch'](handleError(_0x50efe2,null));};
\ No newline at end of file
+var _0xa7b5=['querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','status','set','Content-Range','reject','save','get','Projects','UserProfileResource','destroy','then','error','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','JscriptyProject','includeAll','include','rows','catch','params','length','create','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','find','omit','createdAt','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','getSessions','findOne','hasOwnProperty','JscriptySessionReport','getAnswers','JscriptyAnswerReport','ProjectId','findAll','number','fromCharCode','apply','indexOf','toString','replace','getSummary','startTime','starttime','parse','JscriptyQuestionReport','questionId','question','format','SessionId','answer','push','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','text/csv','download','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js'];(function(_0x568496,_0x565afd){var _0x26c5c1=function(_0x4d251e){while(--_0x4d251e){_0x568496['push'](_0x568496['shift']());}};_0x26c5c1(++_0x565afd);}(_0xa7b5,0x15a));var _0x5a7b=function(_0x36cd33,_0x264631){_0x36cd33=_0x36cd33-0x0;var _0x26d402=_0xa7b5[_0x36cd33];return _0x26d402;};'use strict';var emlformat=require(_0x5a7b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5a7b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5a7b('0x2'));var moment=require(_0x5a7b('0x3'));var BPromise=require(_0x5a7b('0x4'));var Mustache=require(_0x5a7b('0x5'));var util=require(_0x5a7b('0x6'));var path=require(_0x5a7b('0x7'));var sox=require(_0x5a7b('0x8'));var csv=require(_0x5a7b('0x9'));var ejs=require(_0x5a7b('0xa'));var fs=require('fs');var fs_extra=require(_0x5a7b('0xb'));var _=require(_0x5a7b('0xc'));var squel=require(_0x5a7b('0xd'));var crypto=require(_0x5a7b('0xe'));var jsforce=require(_0x5a7b('0xf'));var deskjs=require(_0x5a7b('0x10'));var toCsv=require(_0x5a7b('0x9'));var querystring=require(_0x5a7b('0x11'));var Papa=require(_0x5a7b('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x5a7b('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5a7b('0x14'));var logger=require(_0x5a7b('0x15'))(_0x5a7b('0x16'));var utils=require(_0x5a7b('0x17'));var config=require(_0x5a7b('0x18'));var licenseUtil=require(_0x5a7b('0x19'));var db=require(_0x5a7b('0x1a'))['db'];function respondWithStatusCode(_0x156031,_0x11ac57){_0x11ac57=_0x11ac57||0xcc;return function(_0x388176){if(_0x388176){return _0x156031[_0x5a7b('0x1b')](_0x11ac57);}return _0x156031['status'](_0x11ac57)[_0x5a7b('0x1c')]();};}function respondWithResult(_0x43f889,_0x1a217e){_0x1a217e=_0x1a217e||0xc8;return function(_0x292a44){if(_0x292a44){return _0x43f889['status'](_0x1a217e)[_0x5a7b('0x1d')](_0x292a44);}};}function respondWithFilteredResult(_0x2ca1d6,_0x599bb8){return function(_0x3e922e){if(_0x3e922e){var _0x4d2e57=typeof _0x599bb8[_0x5a7b('0x1e')]==='undefined'&&typeof _0x599bb8[_0x5a7b('0x1f')]===_0x5a7b('0x20');var _0x2fc1fa=_0x3e922e['count'];var _0x33b996=_0x4d2e57?0x0:_0x599bb8['offset'];var _0x192009=_0x4d2e57?_0x3e922e[_0x5a7b('0x21')]:_0x599bb8[_0x5a7b('0x1e')]+_0x599bb8[_0x5a7b('0x1f')];var _0x550b9a;if(_0x192009>=_0x2fc1fa){_0x192009=_0x2fc1fa;_0x550b9a=0xc8;}else{_0x550b9a=0xce;}_0x2ca1d6[_0x5a7b('0x22')](_0x550b9a);return _0x2ca1d6[_0x5a7b('0x23')](_0x5a7b('0x24'),_0x33b996+'-'+_0x192009+'/'+_0x2fc1fa)['json'](_0x3e922e);}return null;};}function patchUpdates(_0x4126a5){return function(_0x6695e1){try{jsonpatch['apply'](_0x6695e1,_0x4126a5,!![]);}catch(_0x49a892){return BPromise[_0x5a7b('0x25')](_0x49a892);}return _0x6695e1[_0x5a7b('0x26')]();};}function saveUpdates(_0x2ebf51,_0x8b05ef){return function(_0x285369){if(_0x285369){return _0x285369['update'](_0x2ebf51)['then'](function(_0x1ad9cc){return _0x1ad9cc;});}return null;};}function removeEntity(_0x342a23,_0x26442f){return function(_0x2a0550){if(_0x2a0550){return _0x2a0550['destroy']()['then'](function(){var _0x51928c=_0x2a0550[_0x5a7b('0x27')]({'plain':!![]});var _0x3fbff6=_0x5a7b('0x28');return db[_0x5a7b('0x29')][_0x5a7b('0x2a')]({'where':{'type':_0x3fbff6,'resourceId':_0x51928c['id']}})['then'](function(){return _0x2a0550;});})[_0x5a7b('0x2b')](function(){_0x342a23['status'](0xcc)[_0x5a7b('0x1c')]();});}};}function handleEntityNotFound(_0x547e82,_0x3beaa5){return function(_0x277ce7){if(!_0x277ce7){_0x547e82[_0x5a7b('0x1b')](0x194);}return _0x277ce7;};}function handleError(_0x4adbf0,_0x10f221){_0x10f221=_0x10f221||0x1f4;return function(_0x449cc7){logger[_0x5a7b('0x2c')](_0x449cc7['stack']);if(_0x449cc7[_0x5a7b('0x2d')]){delete _0x449cc7[_0x5a7b('0x2d')];}_0x4adbf0[_0x5a7b('0x22')](_0x10f221)[_0x5a7b('0x2e')](_0x449cc7);};}exports[_0x5a7b('0x2f')]=function(_0x55a0ec,_0x2032d3){var _0x3bb53b={},_0x401bfd={},_0xc4272e={'count':0x0,'rows':[]};var _0x35aa13=_[_0x5a7b('0x30')](db['JscriptyProject'][_0x5a7b('0x31')],function(_0x550eec){return{'name':_0x550eec[_0x5a7b('0x32')],'type':_0x550eec['type'][_0x5a7b('0x33')]};});_0x401bfd[_0x5a7b('0x34')]=_[_0x5a7b('0x30')](_0x35aa13,_0x5a7b('0x2d'));_0x401bfd[_0x5a7b('0x35')]=_[_0x5a7b('0x36')](_0x55a0ec[_0x5a7b('0x35')]);_0x401bfd['filters']=_[_0x5a7b('0x37')](_0x401bfd['model'],_0x401bfd[_0x5a7b('0x35')]);_0x3bb53b[_0x5a7b('0x38')]=_[_0x5a7b('0x37')](_0x401bfd[_0x5a7b('0x34')],qs['fields'](_0x55a0ec[_0x5a7b('0x35')][_0x5a7b('0x39')]));_0x3bb53b[_0x5a7b('0x38')]=_0x3bb53b[_0x5a7b('0x38')]['length']?_0x3bb53b[_0x5a7b('0x38')]:_0x401bfd[_0x5a7b('0x34')];if(!_0x55a0ec[_0x5a7b('0x35')]['hasOwnProperty'](_0x5a7b('0x3a'))){_0x3bb53b[_0x5a7b('0x1f')]=qs[_0x5a7b('0x1f')](_0x55a0ec[_0x5a7b('0x35')]['limit']);_0x3bb53b[_0x5a7b('0x1e')]=qs['offset'](_0x55a0ec[_0x5a7b('0x35')][_0x5a7b('0x1e')]);}_0x3bb53b[_0x5a7b('0x3b')]=qs['sort'](_0x55a0ec[_0x5a7b('0x35')][_0x5a7b('0x3c')]);_0x3bb53b[_0x5a7b('0x3d')]=qs[_0x5a7b('0x3e')](_[_0x5a7b('0x3f')](_0x55a0ec[_0x5a7b('0x35')],_0x401bfd[_0x5a7b('0x3e')]),_0x35aa13);if(_0x55a0ec[_0x5a7b('0x35')][_0x5a7b('0x40')]){_0x3bb53b[_0x5a7b('0x3d')]=_['merge'](_0x3bb53b['where'],{'$or':_['map'](_0x35aa13,function(_0x340a66){if(_0x340a66['type']!==_0x5a7b('0x41')){var _0x539ae1={};_0x539ae1[_0x340a66[_0x5a7b('0x2d')]]={'$like':'%'+_0x55a0ec[_0x5a7b('0x35')][_0x5a7b('0x40')]+'%'};return _0x539ae1;}})});}_0x3bb53b=_[_0x5a7b('0x42')]({},_0x3bb53b,_0x55a0ec[_0x5a7b('0x43')]);var _0x5e245d={'where':_0x3bb53b[_0x5a7b('0x3d')]};return db[_0x5a7b('0x44')][_0x5a7b('0x21')](_0x5e245d)['then'](function(_0x959137){_0xc4272e[_0x5a7b('0x21')]=_0x959137;if(_0x55a0ec[_0x5a7b('0x35')][_0x5a7b('0x45')]){_0x3bb53b[_0x5a7b('0x46')]=[{'all':!![]}];}return db[_0x5a7b('0x44')]['findAll'](_0x3bb53b);})[_0x5a7b('0x2b')](function(_0x56aeca){_0xc4272e[_0x5a7b('0x47')]=_0x56aeca;return _0xc4272e;})['then'](respondWithFilteredResult(_0x2032d3,_0x3bb53b))[_0x5a7b('0x48')](handleError(_0x2032d3,null));};exports['show']=function(_0x176f97,_0x1bfe48){var _0x5779d1={'raw':![],'where':{'id':_0x176f97[_0x5a7b('0x49')]['id']}},_0x5dcc35={};_0x5dcc35['model']=_[_0x5a7b('0x36')](db['JscriptyProject']['rawAttributes']);_0x5dcc35['query']=_[_0x5a7b('0x36')](_0x176f97[_0x5a7b('0x35')]);_0x5dcc35[_0x5a7b('0x3e')]=_['intersection'](_0x5dcc35[_0x5a7b('0x34')],_0x5dcc35[_0x5a7b('0x35')]);_0x5779d1['attributes']=_[_0x5a7b('0x37')](_0x5dcc35['model'],qs[_0x5a7b('0x39')](_0x176f97['query']['fields']));_0x5779d1[_0x5a7b('0x38')]=_0x5779d1[_0x5a7b('0x38')][_0x5a7b('0x4a')]?_0x5779d1[_0x5a7b('0x38')]:_0x5dcc35[_0x5a7b('0x34')];if(_0x176f97['query'][_0x5a7b('0x45')]){_0x5779d1[_0x5a7b('0x46')]=[{'all':!![]}];}_0x5779d1=_[_0x5a7b('0x42')]({},_0x5779d1,_0x176f97[_0x5a7b('0x43')]);return db['JscriptyProject']['find'](_0x5779d1)[_0x5a7b('0x2b')](handleEntityNotFound(_0x1bfe48,null))['then'](respondWithResult(_0x1bfe48,null))[_0x5a7b('0x48')](handleError(_0x1bfe48,null));};exports[_0x5a7b('0x4b')]=function(_0x34bd82,_0x52759c){return db['JscriptyProject'][_0x5a7b('0x4b')](_0x34bd82['body'],{})['then'](function(_0xcff7be){var _0x418fb3=_0x34bd82['user']['get']({'plain':!![]});if(!_0x418fb3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x418fb3[_0x5a7b('0x4c')]===_0x5a7b('0x4d')){var _0x5968bb=_0xcff7be[_0x5a7b('0x27')]({'plain':!![]});var _0x3a20e5='Projects';return db[_0x5a7b('0x4e')]['find']({'where':{'name':_0x3a20e5,'userProfileId':_0x418fb3[_0x5a7b('0x4f')]},'raw':!![]})[_0x5a7b('0x2b')](function(_0x2dc860){if(_0x2dc860&&_0x2dc860[_0x5a7b('0x50')]===0x0){return db[_0x5a7b('0x29')]['create']({'name':_0x5968bb[_0x5a7b('0x2d')],'resourceId':_0x5968bb['id'],'type':_0x2dc860[_0x5a7b('0x2d')],'sectionId':_0x2dc860['id']},{})[_0x5a7b('0x2b')](function(){return _0xcff7be;});}else{return _0xcff7be;}})['catch'](function(_0x2576dc){logger[_0x5a7b('0x2c')](_0x5a7b('0x51'),_0x2576dc);throw _0x2576dc;});}return _0xcff7be;})['then'](respondWithResult(_0x52759c,0xc9))[_0x5a7b('0x48')](handleError(_0x52759c,null));};exports[_0x5a7b('0x52')]=function(_0x4f1919,_0x48ba05){var _0x25a50e={'where':{'id':_0x4f1919[_0x5a7b('0x49')]['id']}},_0x568ece={};_0x568ece[_0x5a7b('0x34')]=_['keys'](db[_0x5a7b('0x44')][_0x5a7b('0x31')]);_0x25a50e[_0x5a7b('0x38')]=_[_0x5a7b('0x37')](_0x568ece['model'],qs[_0x5a7b('0x39')](_0x4f1919[_0x5a7b('0x35')][_0x5a7b('0x39')]));_0x25a50e['attributes']=_0x25a50e['attributes'][_0x5a7b('0x4a')]?_0x25a50e['attributes']:_0x568ece[_0x5a7b('0x34')];if(_0x4f1919[_0x5a7b('0x35')][_0x5a7b('0x45')]){_0x25a50e['include']=[{'all':!![]}];}_0x25a50e=_[_0x5a7b('0x42')]({},_0x25a50e,_0x4f1919[_0x5a7b('0x43')]);return db[_0x5a7b('0x44')][_0x5a7b('0x53')](_0x25a50e)[_0x5a7b('0x2b')](handleEntityNotFound(_0x48ba05,null))['then'](function(_0x39a07a){if(_0x39a07a){var _0x1f4849=_0x39a07a['get']({'plain':!![]});_0x1f4849=qs[_0x5a7b('0x54')](_0x1f4849,['id',_0x5a7b('0x55'),_0x5a7b('0x56')]);_0x4f1919[_0x5a7b('0x57')]=_['omit'](_0x4f1919[_0x5a7b('0x57')],['id',_0x5a7b('0x55'),_0x5a7b('0x56')]);return db[_0x5a7b('0x44')][_0x5a7b('0x4b')](_[_0x5a7b('0x42')](_0x1f4849,_0x4f1919[_0x5a7b('0x57')]),{'include':_0x4f1919[_0x5a7b('0x35')][_0x5a7b('0x45')]?[{'all':!![]}]:undefined})[_0x5a7b('0x2b')](function(_0x25817e){var _0x578f42=_0x4f1919['user'][_0x5a7b('0x27')]({'plain':!![]});if(!_0x578f42)throw new Error(_0x5a7b('0x58'));if(_0x578f42[_0x5a7b('0x4c')]==='user'){var _0x21fa1a=_0x25817e[_0x5a7b('0x27')]({'plain':!![]});var _0x82b94=_0x5a7b('0x28');return db[_0x5a7b('0x4e')][_0x5a7b('0x53')]({'where':{'name':_0x82b94,'userProfileId':_0x578f42[_0x5a7b('0x4f')]},'raw':!![]})[_0x5a7b('0x2b')](function(_0x38b48a){if(_0x38b48a&&_0x38b48a[_0x5a7b('0x50')]===0x0){return db[_0x5a7b('0x29')]['create']({'name':_0x21fa1a[_0x5a7b('0x2d')],'resourceId':_0x21fa1a['id'],'type':_0x38b48a['name'],'sectionId':_0x38b48a['id']},{})[_0x5a7b('0x2b')](function(){return _0x25817e;});}else{return _0x25817e;}})['catch'](function(_0x118c4d){logger[_0x5a7b('0x2c')](_0x5a7b('0x51'),_0x118c4d);throw _0x118c4d;});}return _0x25817e;});}})[_0x5a7b('0x2b')](respondWithResult(_0x48ba05,0xc9))[_0x5a7b('0x48')](handleError(_0x48ba05,null));};exports['update']=function(_0x3d95e2,_0x28de29){if(_0x3d95e2[_0x5a7b('0x57')]['id']){delete _0x3d95e2['body']['id'];}return db['JscriptyProject'][_0x5a7b('0x53')]({'where':{'id':_0x3d95e2[_0x5a7b('0x49')]['id']}})[_0x5a7b('0x2b')](handleEntityNotFound(_0x28de29,null))[_0x5a7b('0x2b')](saveUpdates(_0x3d95e2[_0x5a7b('0x57')],null))['then'](respondWithResult(_0x28de29,null))[_0x5a7b('0x48')](handleError(_0x28de29,null));};exports[_0x5a7b('0x2a')]=function(_0x1acc7c,_0x86159e){return db[_0x5a7b('0x44')][_0x5a7b('0x53')]({'where':{'id':_0x1acc7c['params']['id']}})[_0x5a7b('0x2b')](handleEntityNotFound(_0x86159e,null))[_0x5a7b('0x2b')](removeEntity(_0x86159e,null))[_0x5a7b('0x48')](handleError(_0x86159e,null));};exports[_0x5a7b('0x59')]=function(_0x598e46,_0x56dffe,_0x2b9945){var _0xa2472f={'raw':!![],'where':{}};var _0x20ec4e={};var _0xd0a82a={'count':0x0,'rows':[]};return db[_0x5a7b('0x44')][_0x5a7b('0x5a')]({'where':{'id':_0x598e46[_0x5a7b('0x49')]['id']}})[_0x5a7b('0x2b')](handleEntityNotFound(_0x56dffe,null))[_0x5a7b('0x2b')](function(_0x7ab08e){if(_0x7ab08e){_0x20ec4e[_0x5a7b('0x34')]=_[_0x5a7b('0x36')](db['JscriptySessionReport'][_0x5a7b('0x31')]);_0x20ec4e['query']=_['keys'](_0x598e46[_0x5a7b('0x35')]);_0x20ec4e[_0x5a7b('0x3e')]=_[_0x5a7b('0x37')](_0x20ec4e[_0x5a7b('0x34')],_0x20ec4e[_0x5a7b('0x35')]);_0xa2472f['attributes']=_[_0x5a7b('0x37')](_0x20ec4e[_0x5a7b('0x34')],qs[_0x5a7b('0x39')](_0x598e46['query'][_0x5a7b('0x39')]));_0xa2472f[_0x5a7b('0x38')]=_0xa2472f[_0x5a7b('0x38')][_0x5a7b('0x4a')]?_0xa2472f['attributes']:_0x20ec4e[_0x5a7b('0x34')];if(!_0x598e46[_0x5a7b('0x35')][_0x5a7b('0x5b')](_0x5a7b('0x3a'))){_0xa2472f[_0x5a7b('0x1f')]=qs[_0x5a7b('0x1f')](_0x598e46[_0x5a7b('0x35')]['limit']);_0xa2472f[_0x5a7b('0x1e')]=qs['offset'](_0x598e46[_0x5a7b('0x35')][_0x5a7b('0x1e')]);}_0xa2472f['order']=qs['sort'](_0x598e46[_0x5a7b('0x35')][_0x5a7b('0x3c')]);_0xa2472f[_0x5a7b('0x3d')]=qs[_0x5a7b('0x3e')](_[_0x5a7b('0x3f')](_0x598e46[_0x5a7b('0x35')],_0x20ec4e[_0x5a7b('0x3e')]));_0xa2472f[_0x5a7b('0x3d')]['ProjectId']=_0x7ab08e['id'];if(_0x598e46[_0x5a7b('0x35')][_0x5a7b('0x40')]){_0xa2472f['where']=_[_0x5a7b('0x42')](_0xa2472f[_0x5a7b('0x3d')],{'$or':_[_0x5a7b('0x30')](_0xa2472f[_0x5a7b('0x38')],function(_0x45b889){var _0x396c47={};_0x396c47[_0x45b889]={'$like':'%'+_0x598e46[_0x5a7b('0x35')][_0x5a7b('0x40')]+'%'};return _0x396c47;})});}_0xa2472f=_[_0x5a7b('0x42')]({},_0xa2472f,_0x598e46[_0x5a7b('0x43')]);return db['JscriptySessionReport'][_0x5a7b('0x21')]({'where':_0xa2472f[_0x5a7b('0x3d')]})[_0x5a7b('0x2b')](function(_0x47e569){_0xd0a82a[_0x5a7b('0x21')]=_0x47e569;if(_0x598e46[_0x5a7b('0x35')][_0x5a7b('0x45')]){_0xa2472f[_0x5a7b('0x46')]=[{'all':!![]}];}return db[_0x5a7b('0x5c')]['findAll'](_0xa2472f);})[_0x5a7b('0x2b')](function(_0x4bd838){_0xd0a82a[_0x5a7b('0x47')]=_0x4bd838;return _0xd0a82a;});}})['then'](respondWithFilteredResult(_0x56dffe,_0xa2472f))[_0x5a7b('0x48')](handleError(_0x56dffe,null));};exports[_0x5a7b('0x5d')]=function(_0x181fb6,_0x30c2ac,_0x2ea371){var _0x7922d2={'raw':!![],'where':{}};var _0x21219b={};var _0x2bf48f={'count':0x0,'rows':[]};return db[_0x5a7b('0x44')][_0x5a7b('0x5a')]({'where':{'id':_0x181fb6[_0x5a7b('0x49')]['id']}})[_0x5a7b('0x2b')](handleEntityNotFound(_0x30c2ac,null))['then'](function(_0x3181bb){if(_0x3181bb){_0x21219b[_0x5a7b('0x34')]=_['keys'](db[_0x5a7b('0x5e')]['rawAttributes']);_0x21219b[_0x5a7b('0x35')]=_[_0x5a7b('0x36')](_0x181fb6['query']);_0x21219b[_0x5a7b('0x3e')]=_[_0x5a7b('0x37')](_0x21219b[_0x5a7b('0x34')],_0x21219b[_0x5a7b('0x35')]);_0x7922d2[_0x5a7b('0x38')]=_[_0x5a7b('0x37')](_0x21219b[_0x5a7b('0x34')],qs['fields'](_0x181fb6['query'][_0x5a7b('0x39')]));_0x7922d2[_0x5a7b('0x38')]=_0x7922d2[_0x5a7b('0x38')][_0x5a7b('0x4a')]?_0x7922d2[_0x5a7b('0x38')]:_0x21219b[_0x5a7b('0x34')];if(!_0x181fb6[_0x5a7b('0x35')][_0x5a7b('0x5b')](_0x5a7b('0x3a'))){_0x7922d2[_0x5a7b('0x1f')]=qs[_0x5a7b('0x1f')](_0x181fb6['query'][_0x5a7b('0x1f')]);_0x7922d2[_0x5a7b('0x1e')]=qs[_0x5a7b('0x1e')](_0x181fb6[_0x5a7b('0x35')][_0x5a7b('0x1e')]);}_0x7922d2[_0x5a7b('0x3b')]=qs[_0x5a7b('0x3c')](_0x181fb6[_0x5a7b('0x35')]['sort']);_0x7922d2[_0x5a7b('0x3d')]=qs[_0x5a7b('0x3e')](_['pick'](_0x181fb6[_0x5a7b('0x35')],_0x21219b[_0x5a7b('0x3e')]));_0x7922d2[_0x5a7b('0x3d')][_0x5a7b('0x5f')]=_0x3181bb['id'];if(_0x181fb6[_0x5a7b('0x35')][_0x5a7b('0x40')]){_0x7922d2[_0x5a7b('0x3d')]=_[_0x5a7b('0x42')](_0x7922d2[_0x5a7b('0x3d')],{'$or':_[_0x5a7b('0x30')](_0x7922d2[_0x5a7b('0x38')],function(_0x539547){var _0x4c32f6={};_0x4c32f6[_0x539547]={'$like':'%'+_0x181fb6['query'][_0x5a7b('0x40')]+'%'};return _0x4c32f6;})});}_0x7922d2=_[_0x5a7b('0x42')]({},_0x7922d2,_0x181fb6['options']);return db[_0x5a7b('0x5e')][_0x5a7b('0x21')]({'where':_0x7922d2[_0x5a7b('0x3d')]})['then'](function(_0x34581c){_0x2bf48f[_0x5a7b('0x21')]=_0x34581c;if(_0x181fb6['query'][_0x5a7b('0x45')]){_0x7922d2[_0x5a7b('0x46')]=[{'all':!![]}];}return db[_0x5a7b('0x5e')][_0x5a7b('0x60')](_0x7922d2);})[_0x5a7b('0x2b')](function(_0x1a6b99){_0x2bf48f[_0x5a7b('0x47')]=_0x1a6b99;return _0x2bf48f;});}})[_0x5a7b('0x2b')](respondWithFilteredResult(_0x30c2ac,_0x7922d2))[_0x5a7b('0x48')](handleError(_0x30c2ac,null));};function char(_0x20b288){return _0x5a7b('0x61')===typeof _0x20b288?String[_0x5a7b('0x62')][_0x5a7b('0x63')](null,arguments):_0x20b288;}function needsEncapsulation(_0x42a419){return!!_0x42a419&&(_0x42a419['toString']()[_0x5a7b('0x64')](char(0xd))>=0x0||_0x42a419['toString']()[_0x5a7b('0x64')](char(0xa))>=0x0||_0x42a419[_0x5a7b('0x65')]()[_0x5a7b('0x64')](char(0x2c))>=0x0||_0x42a419['toString']()[_0x5a7b('0x64')](char(0x22))>=0x0);}function encapsulate(_0x264675){var _0x12bcbf=char(0x22),_0xda7685='\x5c'+char(0x22),_0x490106=_0x264675[_0x5a7b('0x65')]()[_0x5a7b('0x66')](new RegExp(_0x12bcbf,'g'),_0xda7685);return _0x12bcbf+_0x490106+_0x12bcbf;}exports[_0x5a7b('0x67')]=function(_0x228c98,_0x270a7f,_0x3be4db){var _0x2808d8,_0x1f32ae;var _0x38d44a={'where':{'ProjectId':_0x228c98[_0x5a7b('0x49')]['id']}};if(_0x228c98[_0x5a7b('0x35')][_0x5a7b('0x68')]){_0x38d44a['where'][_0x5a7b('0x69')]=JSON[_0x5a7b('0x6a')](_0x228c98['query']['startTime']);}return db[_0x5a7b('0x5c')][_0x5a7b('0x60')](_0x38d44a)[_0x5a7b('0x2b')](handleEntityNotFound(_0x270a7f,null))['then'](function(_0x49b5d3){if(_0x49b5d3){_0x2808d8=_0x49b5d3;return db[_0x5a7b('0x6b')][_0x5a7b('0x60')]({'where':{'SessionId':{'$in':_[_0x5a7b('0x30')](_0x2808d8,'id')},'ProjectId':_0x228c98['params']['id']},'order':'-createdAt'});}})[_0x5a7b('0x2b')](handleEntityNotFound(_0x270a7f,null))[_0x5a7b('0x2b')](function(_0x19e26d){if(_0x19e26d){_0x1f32ae=_0x19e26d;var _0xc8d07e={};for(var _0x300c40=0x0,_0xd3eb5=_0x1f32ae[_0x5a7b('0x4a')];_0x300c40<_0xd3eb5;_0x300c40++){if(!_0xc8d07e[_0x5a7b('0x5b')](_0x1f32ae[_0x300c40][_0x5a7b('0x6c')])){_0xc8d07e[_0x1f32ae[_0x300c40][_0x5a7b('0x6c')]]=needsEncapsulation(_0x1f32ae[_0x300c40][_0x5a7b('0x6d')])?encapsulate(_0x1f32ae[_0x300c40][_0x5a7b('0x6d')]):_0x1f32ae[_0x300c40][_0x5a7b('0x6d')];}}var _0x14c817=[],_0x564f6a={};for(var _0x30c228=0x0,_0x50c82c=_0x2808d8[_0x5a7b('0x4a')];_0x30c228<_0x50c82c;_0x30c228++){_0x564f6a={'ProjectId':_0x228c98[_0x5a7b('0x49')]['id'],'SessionId':_0x2808d8[_0x30c228]['id'],'StartTime':moment(_0x2808d8[_0x30c228]['starttime'])[_0x5a7b('0x6e')]('YYYY-MM-DD\x20HH:mm:ss')};for(var _0x73801a=0x0,_0x2de624=_0x1f32ae[_0x5a7b('0x4a')];_0x73801a<_0x2de624;_0x73801a++){if(_0x1f32ae[_0x73801a][_0x5a7b('0x6f')]==_0x2808d8[_0x30c228]['id']&&_0xc8d07e[_0x5a7b('0x5b')](_0x1f32ae[_0x73801a][_0x5a7b('0x6c')])){_0x564f6a[_0xc8d07e[_0x1f32ae[_0x73801a][_0x5a7b('0x6c')]]]=_0x1f32ae[_0x73801a][_0x5a7b('0x70')];}}for(var _0x4b18c4 in _0xc8d07e){if(!_0x564f6a[_0x5a7b('0x5b')](_0xc8d07e[_0x4b18c4])){_0x564f6a[_0xc8d07e[_0x4b18c4]]=null;}}_0x14c817[_0x5a7b('0x71')](_0x564f6a);}return _0x14c817;}})[_0x5a7b('0x2b')](function(_0x35fade){if(!_['isEmpty'](_0x35fade)){var _0x2434ec=toCsv(_0x35fade);var _0x30cb2=Date[_0x5a7b('0x72')]();fs[_0x5a7b('0x73')](util['format'](_0x5a7b('0x74'),_0x228c98[_0x5a7b('0x49')]['id'],_0x30cb2),_0x2434ec);_0x270a7f[_0x5a7b('0x75')](_0x5a7b('0x76'),'attachment;\x20filename='+util['format']('Jscripty_Project_%d_Summary_%s.csv',_0x228c98[_0x5a7b('0x49')]['id'],_0x30cb2));_0x270a7f[_0x5a7b('0x75')]('Content-type',_0x5a7b('0x77'));return _0x270a7f[_0x5a7b('0x78')](util['format'](_0x5a7b('0x74'),_0x228c98[_0x5a7b('0x49')]['id'],_0x30cb2));}else{return _0x270a7f[_0x5a7b('0x1b')](0xcc);}})[_0x5a7b('0x48')](handleError(_0x270a7f,null));};
\ No newline at end of file
index 2b69c40..3adb921 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c7=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./jscriptyProject.attributes','define','jscripty_projects','lodash','util'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0xa35b48,_0x5b2afc){_0xa35b48=_0xa35b48-0x0;var _0x1e071d=_0xb4c7[_0xa35b48];return _0x1e071d;};'use strict';var _=require(_0x7b4c('0x0'));var util=require(_0x7b4c('0x1'));var logger=require(_0x7b4c('0x2'))(_0x7b4c('0x3'));var moment=require(_0x7b4c('0x4'));var BPromise=require('bluebird');var rp=require(_0x7b4c('0x5'));var fs=require('fs');var path=require(_0x7b4c('0x6'));var rimraf=require(_0x7b4c('0x7'));var config=require(_0x7b4c('0x8'));var attributes=require(_0x7b4c('0x9'));module['exports']=function(_0x1b0f57,_0x10e197){return _0x1b0f57[_0x7b4c('0xa')]('JscriptyProject',attributes,{'tableName':_0x7b4c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1670=['lodash','util','api','bluebird','request-promise','path','rimraf','exports','define','JscriptyProject','jscripty_projects'];(function(_0x2df1f2,_0x58d388){var _0x38652b=function(_0x18e322){while(--_0x18e322){_0x2df1f2['push'](_0x2df1f2['shift']());}};_0x38652b(++_0x58d388);}(_0x1670,0x9a));var _0x0167=function(_0x3c1351,_0xc938db){_0x3c1351=_0x3c1351-0x0;var _0xda476a=_0x1670[_0x3c1351];return _0xda476a;};'use strict';var _=require(_0x0167('0x0'));var util=require(_0x0167('0x1'));var logger=require('../../config/logger')(_0x0167('0x2'));var moment=require('moment');var BPromise=require(_0x0167('0x3'));var rp=require(_0x0167('0x4'));var fs=require('fs');var path=require(_0x0167('0x5'));var rimraf=require(_0x0167('0x6'));var config=require('../../config/environment');var attributes=require('./jscriptyProject.attributes');module[_0x0167('0x7')]=function(_0x1ae650,_0x295e51){return _0x1ae650[_0x0167('0x8')](_0x0167('0x9'),attributes,{'tableName':_0x0167('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f11fa7a..d65ba77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\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(_0x1f3dfa,_0xff75bd){var _0x37ce78=function(_0x2e41c7){while(--_0x2e41c7){_0x1f3dfa['push'](_0x1f3dfa['shift']());}};_0x37ce78(++_0xff75bd);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'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 _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s'];(function(_0x59bb77,_0x1dce13){var _0xce96a4=function(_0x48defe){while(--_0x48defe){_0x59bb77['push'](_0x59bb77['shift']());}};_0xce96a4(++_0x1dce13);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2d460c,_0x4f08c0){_0x2d460c=_0x2d460c-0x0;var _0xf6fc4c=_0xcb91[_0x2d460c];return _0xf6fc4c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1cb9('0x0'));var BPromise=require(_0x1cb9('0x1'));var rs=require(_0x1cb9('0x2'));var fs=require('fs');var Redis=require(_0x1cb9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x1cb9('0x4'));var logger=require(_0x1cb9('0x5'))('rpc');var config=require(_0x1cb9('0x6'));var jayson=require(_0x1cb9('0x7'));var client=jayson['client'][_0x1cb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3f7deb,_0x4ffe20,_0x38737d){return new BPromise(function(_0x12567c,_0x59d1be){return client[_0x1cb9('0x9')](_0x3f7deb,_0x38737d)['then'](function(_0x567139){logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,_0x1cb9('0xc'));logger[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x4ffe20,'request\x20sent',JSON[_0x1cb9('0xf')](_0x567139));if(_0x567139[_0x1cb9('0x10')]){if(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x11')]===0x1f4){logger[_0x1cb9('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
index 71b308f..a7157b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53f5=['isAuthenticated','/:id','show','update','destroy','exports','path','connect-timeout','express','fs-extra','../../components/interaction/service','./jscriptyQuestionReport.controller','get','index','/describe'];(function(_0x3ebe5c,_0x55c485){var _0x1fc9c5=function(_0x34f4d8){while(--_0x34f4d8){_0x3ebe5c['push'](_0x3ebe5c['shift']());}};_0x1fc9c5(++_0x55c485);}(_0x53f5,0x132));var _0x553f=function(_0x8ed477,_0x5996f6){_0x8ed477=_0x8ed477-0x0;var _0xf73679=_0x53f5[_0x8ed477];return _0xf73679;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x553f('0x0'));var timeout=require(_0x553f('0x1'));var express=require(_0x553f('0x2'));var router=express['Router']();var fs_extra=require(_0x553f('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x553f('0x4'));var config=require('../../config/environment');var controller=require(_0x553f('0x5'));router[_0x553f('0x6')]('/',auth['isAuthenticated'](),controller[_0x553f('0x7')]);router['get'](_0x553f('0x8'),auth[_0x553f('0x9')](),controller['describe']);router['get'](_0x553f('0xa'),auth[_0x553f('0x9')](),controller[_0x553f('0xb')]);router['post']('/',auth[_0x553f('0x9')](),controller['create']);router['put'](_0x553f('0xa'),auth['isAuthenticated'](),controller[_0x553f('0xc')]);router['delete']('/:id',auth[_0x553f('0x9')](),controller[_0x553f('0xd')]);module[_0x553f('0xe')]=router;
\ No newline at end of file
+var _0xf0fb=['./jscriptyQuestionReport.controller','get','isAuthenticated','index','/describe','describe','show','post','create','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x24059d,_0x1fb57f){var _0x43e7ea=function(_0x5cdcf8){while(--_0x5cdcf8){_0x24059d['push'](_0x24059d['shift']());}};_0x43e7ea(++_0x1fb57f);}(_0xf0fb,0xde));var _0xbf0f=function(_0x46c865,_0x154b2f){_0x46c865=_0x46c865-0x0;var _0x200973=_0xf0fb[_0x46c865];return _0x200973;};'use strict';var multer=require('multer');var util=require(_0xbf0f('0x0'));var path=require(_0xbf0f('0x1'));var timeout=require(_0xbf0f('0x2'));var express=require(_0xbf0f('0x3'));var router=express[_0xbf0f('0x4')]();var fs_extra=require(_0xbf0f('0x5'));var auth=require(_0xbf0f('0x6'));var interaction=require(_0xbf0f('0x7'));var config=require('../../config/environment');var controller=require(_0xbf0f('0x8'));router[_0xbf0f('0x9')]('/',auth[_0xbf0f('0xa')](),controller[_0xbf0f('0xb')]);router[_0xbf0f('0x9')](_0xbf0f('0xc'),auth['isAuthenticated'](),controller[_0xbf0f('0xd')]);router[_0xbf0f('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xbf0f('0xe')]);router[_0xbf0f('0xf')]('/',auth[_0xbf0f('0xa')](),controller[_0xbf0f('0x10')]);router[_0xbf0f('0x11')](_0xbf0f('0x12'),auth[_0xbf0f('0xa')](),controller[_0xbf0f('0x13')]);router[_0xbf0f('0x14')](_0xbf0f('0x12'),auth[_0xbf0f('0xa')](),controller[_0xbf0f('0x15')]);module[_0xbf0f('0x16')]=router;
\ No newline at end of file
index f1a4782..a3f4531 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0x7a54,0x106));var _0x47a5=function(_0x55bcf2,_0x18a06e){_0x55bcf2=_0x55bcf2-0x0;var _0x3d8eaf=_0x7a54[_0x55bcf2];return _0x3d8eaf;};'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(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x7a54,0x106));var _0x47a5=function(_0x22cbe8,_0x5a6cee){_0x22cbe8=_0x22cbe8-0x0;var _0x3d56c5=_0x7a54[_0x22cbe8];return _0x3d56c5;};'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 e235cb6..1f4444c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd526=['key','model','map','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','then','includeAll','include','show','params','options','find','create','body','catch','describe','eml-format','rimraf','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','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','sendStatus','status','end','json','undefined','count','offset','limit','apply','save','update','destroy','stack','name','send','index','JscriptyQuestionReport','rawAttributes','fieldName','type'];(function(_0x59d7a8,_0x5d5692){var _0x2e5731=function(_0x445924){while(--_0x445924){_0x59d7a8['push'](_0x59d7a8['shift']());}};_0x2e5731(++_0x5d5692);}(_0xd526,0x18e));var _0x6d52=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xd526[_0x4cf98e];return _0x1623ac;};'use strict';var emlformat=require(_0x6d52('0x0'));var rimraf=require(_0x6d52('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6d52('0x2'));var moment=require(_0x6d52('0x3'));var BPromise=require(_0x6d52('0x4'));var Mustache=require('mustache');var util=require(_0x6d52('0x5'));var path=require(_0x6d52('0x6'));var sox=require(_0x6d52('0x7'));var csv=require(_0x6d52('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6d52('0x9'));var _=require(_0x6d52('0xa'));var squel=require(_0x6d52('0xb'));var crypto=require(_0x6d52('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x6d52('0xd'));var toCsv=require(_0x6d52('0x8'));var querystring=require(_0x6d52('0xe'));var Papa=require(_0x6d52('0xf'));var Redis=require(_0x6d52('0x10'));var authService=require(_0x6d52('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x6d52('0x12'));var hardwareService=require(_0x6d52('0x13'));var logger=require(_0x6d52('0x14'))(_0x6d52('0x15'));var utils=require(_0x6d52('0x16'));var config=require(_0x6d52('0x17'));var licenseUtil=require(_0x6d52('0x18'));var db=require(_0x6d52('0x19'))['db'];function respondWithStatusCode(_0x46c585,_0x3a846d){_0x3a846d=_0x3a846d||0xcc;return function(_0x133b57){if(_0x133b57){return _0x46c585[_0x6d52('0x1a')](_0x3a846d);}return _0x46c585[_0x6d52('0x1b')](_0x3a846d)[_0x6d52('0x1c')]();};}function respondWithResult(_0x6a8204,_0x2e1c06){_0x2e1c06=_0x2e1c06||0xc8;return function(_0x40e8e5){if(_0x40e8e5){return _0x6a8204[_0x6d52('0x1b')](_0x2e1c06)[_0x6d52('0x1d')](_0x40e8e5);}};}function respondWithFilteredResult(_0x567d43,_0x4e7319){return function(_0x528c64){if(_0x528c64){var _0x58aa67=typeof _0x4e7319['offset']===_0x6d52('0x1e')&&typeof _0x4e7319['limit']===_0x6d52('0x1e');var _0x5ee65f=_0x528c64[_0x6d52('0x1f')];var _0x3a5972=_0x58aa67?0x0:_0x4e7319['offset'];var _0x4ce4bd=_0x58aa67?_0x528c64['count']:_0x4e7319[_0x6d52('0x20')]+_0x4e7319[_0x6d52('0x21')];var _0x866c24;if(_0x4ce4bd>=_0x5ee65f){_0x4ce4bd=_0x5ee65f;_0x866c24=0xc8;}else{_0x866c24=0xce;}_0x567d43[_0x6d52('0x1b')](_0x866c24);return _0x567d43['set']('Content-Range',_0x3a5972+'-'+_0x4ce4bd+'/'+_0x5ee65f)[_0x6d52('0x1d')](_0x528c64);}return null;};}function patchUpdates(_0x560d6b){return function(_0xbf3b8e){try{jsonpatch[_0x6d52('0x22')](_0xbf3b8e,_0x560d6b,!![]);}catch(_0x33d9fe){return BPromise['reject'](_0x33d9fe);}return _0xbf3b8e[_0x6d52('0x23')]();};}function saveUpdates(_0x3c99bd,_0x21e695){return function(_0x4746a0){if(_0x4746a0){return _0x4746a0[_0x6d52('0x24')](_0x3c99bd)['then'](function(_0x8c438f){return _0x8c438f;});}return null;};}function removeEntity(_0x190806,_0x33a9c7){return function(_0xa37af7){if(_0xa37af7){return _0xa37af7[_0x6d52('0x25')]()['then'](function(){_0x190806[_0x6d52('0x1b')](0xcc)[_0x6d52('0x1c')]();});}};}function handleEntityNotFound(_0x391a67,_0x2edc3f){return function(_0x515c7a){if(!_0x515c7a){_0x391a67['sendStatus'](0x194);}return _0x515c7a;};}function handleError(_0x4ef01c,_0x45adb3){_0x45adb3=_0x45adb3||0x1f4;return function(_0x3f00e6){logger['error'](_0x3f00e6[_0x6d52('0x26')]);if(_0x3f00e6[_0x6d52('0x27')]){delete _0x3f00e6[_0x6d52('0x27')];}_0x4ef01c[_0x6d52('0x1b')](_0x45adb3)[_0x6d52('0x28')](_0x3f00e6);};}exports[_0x6d52('0x29')]=function(_0x530110,_0x349060){var _0x586020={},_0x3cf46d={},_0x5c48f3={'count':0x0,'rows':[]};var _0x3a75e6=_['map'](db[_0x6d52('0x2a')][_0x6d52('0x2b')],function(_0x2639fa){return{'name':_0x2639fa[_0x6d52('0x2c')],'type':_0x2639fa[_0x6d52('0x2d')][_0x6d52('0x2e')]};});_0x3cf46d[_0x6d52('0x2f')]=_[_0x6d52('0x30')](_0x3a75e6,_0x6d52('0x27'));_0x3cf46d[_0x6d52('0x31')]=_[_0x6d52('0x32')](_0x530110[_0x6d52('0x31')]);_0x3cf46d[_0x6d52('0x33')]=_[_0x6d52('0x34')](_0x3cf46d[_0x6d52('0x2f')],_0x3cf46d[_0x6d52('0x31')]);_0x586020[_0x6d52('0x35')]=_['intersection'](_0x3cf46d['model'],qs[_0x6d52('0x36')](_0x530110[_0x6d52('0x31')][_0x6d52('0x36')]));_0x586020[_0x6d52('0x35')]=_0x586020[_0x6d52('0x35')][_0x6d52('0x37')]?_0x586020['attributes']:_0x3cf46d[_0x6d52('0x2f')];if(!_0x530110['query']['hasOwnProperty']('nolimit')){_0x586020[_0x6d52('0x21')]=qs[_0x6d52('0x21')](_0x530110[_0x6d52('0x31')][_0x6d52('0x21')]);_0x586020[_0x6d52('0x20')]=qs['offset'](_0x530110[_0x6d52('0x31')][_0x6d52('0x20')]);}_0x586020[_0x6d52('0x38')]=qs[_0x6d52('0x39')](_0x530110[_0x6d52('0x31')][_0x6d52('0x39')]);_0x586020[_0x6d52('0x3a')]=qs['filters'](_[_0x6d52('0x3b')](_0x530110['query'],_0x3cf46d[_0x6d52('0x33')]),_0x3a75e6);if(_0x530110[_0x6d52('0x31')][_0x6d52('0x3c')]){_0x586020[_0x6d52('0x3a')]=_[_0x6d52('0x3d')](_0x586020[_0x6d52('0x3a')],{'$or':_[_0x6d52('0x30')](_0x3a75e6,function(_0x13d562){if(_0x13d562['type']!==_0x6d52('0x3e')){var _0x52a36a={};_0x52a36a[_0x13d562['name']]={'$like':'%'+_0x530110[_0x6d52('0x31')][_0x6d52('0x3c')]+'%'};return _0x52a36a;}})});}_0x586020=_['merge']({},_0x586020,_0x530110['options']);var _0x8b25f5={'where':_0x586020[_0x6d52('0x3a')]};return db[_0x6d52('0x2a')]['count'](_0x8b25f5)[_0x6d52('0x3f')](function(_0x298a25){_0x5c48f3[_0x6d52('0x1f')]=_0x298a25;if(_0x530110[_0x6d52('0x31')][_0x6d52('0x40')]){_0x586020[_0x6d52('0x41')]=[{'all':!![]}];}return db[_0x6d52('0x2a')]['findAll'](_0x586020);})[_0x6d52('0x3f')](function(_0x4248fe){_0x5c48f3['rows']=_0x4248fe;return _0x5c48f3;})['then'](respondWithFilteredResult(_0x349060,_0x586020))['catch'](handleError(_0x349060,null));};exports[_0x6d52('0x42')]=function(_0x5ae593,_0x16027b){var _0x5a6c82={'raw':!![],'where':{'id':_0x5ae593[_0x6d52('0x43')]['id']}},_0x3e5193={};_0x3e5193[_0x6d52('0x2f')]=_['keys'](db[_0x6d52('0x2a')][_0x6d52('0x2b')]);_0x3e5193['query']=_[_0x6d52('0x32')](_0x5ae593['query']);_0x3e5193[_0x6d52('0x33')]=_['intersection'](_0x3e5193['model'],_0x3e5193[_0x6d52('0x31')]);_0x5a6c82[_0x6d52('0x35')]=_[_0x6d52('0x34')](_0x3e5193[_0x6d52('0x2f')],qs[_0x6d52('0x36')](_0x5ae593[_0x6d52('0x31')][_0x6d52('0x36')]));_0x5a6c82[_0x6d52('0x35')]=_0x5a6c82[_0x6d52('0x35')][_0x6d52('0x37')]?_0x5a6c82[_0x6d52('0x35')]:_0x3e5193[_0x6d52('0x2f')];if(_0x5ae593[_0x6d52('0x31')]['includeAll']){_0x5a6c82[_0x6d52('0x41')]=[{'all':!![]}];}_0x5a6c82=_[_0x6d52('0x3d')]({},_0x5a6c82,_0x5ae593[_0x6d52('0x44')]);return db[_0x6d52('0x2a')][_0x6d52('0x45')](_0x5a6c82)[_0x6d52('0x3f')](handleEntityNotFound(_0x16027b,null))['then'](respondWithResult(_0x16027b,null))['catch'](handleError(_0x16027b,null));};exports[_0x6d52('0x46')]=function(_0x4cd797,_0x15343c){return db[_0x6d52('0x2a')][_0x6d52('0x46')](_0x4cd797[_0x6d52('0x47')],{})['then'](respondWithResult(_0x15343c,0xc9))[_0x6d52('0x48')](handleError(_0x15343c,null));};exports[_0x6d52('0x24')]=function(_0x4b92a9,_0x2948a5){if(_0x4b92a9[_0x6d52('0x47')]['id']){delete _0x4b92a9['body']['id'];}return db[_0x6d52('0x2a')][_0x6d52('0x45')]({'where':{'id':_0x4b92a9[_0x6d52('0x43')]['id']}})[_0x6d52('0x3f')](handleEntityNotFound(_0x2948a5,null))[_0x6d52('0x3f')](saveUpdates(_0x4b92a9[_0x6d52('0x47')],null))[_0x6d52('0x3f')](respondWithResult(_0x2948a5,null))[_0x6d52('0x48')](handleError(_0x2948a5,null));};exports[_0x6d52('0x25')]=function(_0x2b0fc4,_0x16f1f7){return db[_0x6d52('0x2a')]['find']({'where':{'id':_0x2b0fc4[_0x6d52('0x43')]['id']}})[_0x6d52('0x3f')](handleEntityNotFound(_0x16f1f7,null))[_0x6d52('0x3f')](removeEntity(_0x16f1f7,null))[_0x6d52('0x48')](handleError(_0x16f1f7,null));};exports[_0x6d52('0x49')]=function(_0x5a48a9,_0x3ec9de){return db[_0x6d52('0x2a')][_0x6d52('0x49')]()['then'](respondWithResult(_0x3ec9de,null))[_0x6d52('0x48')](handleError(_0x3ec9de,null));};
\ No newline at end of file
+var _0xc64f=['api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','save','update','destroy','then','end','error','stack','name','send','index','map','JscriptyQuestionReport','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','merge','filter','options','includeAll','include','findAll','rows','catch','show','rawAttributes','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','to-csv','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x3bcb85,_0x51575f){var _0x555c22=function(_0x14c881){while(--_0x14c881){_0x3bcb85['push'](_0x3bcb85['shift']());}};_0x555c22(++_0x51575f);}(_0xc64f,0x118));var _0xfc64=function(_0x314847,_0x485bea){_0x314847=_0x314847-0x0;var _0x2ca8e5=_0xc64f[_0x314847];return _0x2ca8e5;};'use strict';var emlformat=require(_0xfc64('0x0'));var rimraf=require(_0xfc64('0x1'));var zipdir=require(_0xfc64('0x2'));var jsonpatch=require(_0xfc64('0x3'));var rp=require('request-promise');var moment=require(_0xfc64('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xfc64('0x5'));var util=require('util');var path=require(_0xfc64('0x6'));var sox=require(_0xfc64('0x7'));var csv=require(_0xfc64('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfc64('0x9'));var _=require('lodash');var squel=require(_0xfc64('0xa'));var crypto=require(_0xfc64('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xfc64('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xfc64('0xd'));var Redis=require(_0xfc64('0xe'));var authService=require(_0xfc64('0xf'));var qs=require(_0xfc64('0x10'));var as=require(_0xfc64('0x11'));var hardwareService=require(_0xfc64('0x12'));var logger=require(_0xfc64('0x13'))(_0xfc64('0x14'));var utils=require(_0xfc64('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xfc64('0x16'));var db=require(_0xfc64('0x17'))['db'];function respondWithStatusCode(_0x220364,_0x6966d4){_0x6966d4=_0x6966d4||0xcc;return function(_0x5a4d33){if(_0x5a4d33){return _0x220364[_0xfc64('0x18')](_0x6966d4);}return _0x220364[_0xfc64('0x19')](_0x6966d4)['end']();};}function respondWithResult(_0x4797ae,_0x579416){_0x579416=_0x579416||0xc8;return function(_0x65c4f1){if(_0x65c4f1){return _0x4797ae[_0xfc64('0x19')](_0x579416)[_0xfc64('0x1a')](_0x65c4f1);}};}function respondWithFilteredResult(_0x36e58c,_0x1ade8d){return function(_0x4caa20){if(_0x4caa20){var _0x2ff3fa=typeof _0x1ade8d[_0xfc64('0x1b')]===_0xfc64('0x1c')&&typeof _0x1ade8d['limit']===_0xfc64('0x1c');var _0x3bd51b=_0x4caa20[_0xfc64('0x1d')];var _0x3daca9=_0x2ff3fa?0x0:_0x1ade8d['offset'];var _0x31481b=_0x2ff3fa?_0x4caa20['count']:_0x1ade8d[_0xfc64('0x1b')]+_0x1ade8d[_0xfc64('0x1e')];var _0x15880e;if(_0x31481b>=_0x3bd51b){_0x31481b=_0x3bd51b;_0x15880e=0xc8;}else{_0x15880e=0xce;}_0x36e58c[_0xfc64('0x19')](_0x15880e);return _0x36e58c['set'](_0xfc64('0x1f'),_0x3daca9+'-'+_0x31481b+'/'+_0x3bd51b)[_0xfc64('0x1a')](_0x4caa20);}return null;};}function patchUpdates(_0x54718e){return function(_0x109812){try{jsonpatch[_0xfc64('0x20')](_0x109812,_0x54718e,!![]);}catch(_0x402e20){return BPromise['reject'](_0x402e20);}return _0x109812[_0xfc64('0x21')]();};}function saveUpdates(_0x13613b,_0x51efff){return function(_0x3c0fc9){if(_0x3c0fc9){return _0x3c0fc9[_0xfc64('0x22')](_0x13613b)['then'](function(_0xa8e5f2){return _0xa8e5f2;});}return null;};}function removeEntity(_0x33f53d,_0x331631){return function(_0x5b6e7f){if(_0x5b6e7f){return _0x5b6e7f[_0xfc64('0x23')]()[_0xfc64('0x24')](function(){_0x33f53d[_0xfc64('0x19')](0xcc)[_0xfc64('0x25')]();});}};}function handleEntityNotFound(_0x3017a6,_0x39eaa4){return function(_0x50563d){if(!_0x50563d){_0x3017a6[_0xfc64('0x18')](0x194);}return _0x50563d;};}function handleError(_0x475abf,_0x45afba){_0x45afba=_0x45afba||0x1f4;return function(_0x1d1963){logger[_0xfc64('0x26')](_0x1d1963[_0xfc64('0x27')]);if(_0x1d1963['name']){delete _0x1d1963[_0xfc64('0x28')];}_0x475abf[_0xfc64('0x19')](_0x45afba)[_0xfc64('0x29')](_0x1d1963);};}exports[_0xfc64('0x2a')]=function(_0x8ca616,_0x5689a7){var _0x2e5653={},_0x23b7e6={},_0x2e685b={'count':0x0,'rows':[]};var _0x18c511=_[_0xfc64('0x2b')](db[_0xfc64('0x2c')]['rawAttributes'],function(_0xd81fa9){return{'name':_0xd81fa9['fieldName'],'type':_0xd81fa9[_0xfc64('0x2d')][_0xfc64('0x2e')]};});_0x23b7e6['model']=_[_0xfc64('0x2b')](_0x18c511,_0xfc64('0x28'));_0x23b7e6[_0xfc64('0x2f')]=_[_0xfc64('0x30')](_0x8ca616[_0xfc64('0x2f')]);_0x23b7e6[_0xfc64('0x31')]=_[_0xfc64('0x32')](_0x23b7e6[_0xfc64('0x33')],_0x23b7e6[_0xfc64('0x2f')]);_0x2e5653[_0xfc64('0x34')]=_[_0xfc64('0x32')](_0x23b7e6[_0xfc64('0x33')],qs['fields'](_0x8ca616[_0xfc64('0x2f')][_0xfc64('0x35')]));_0x2e5653['attributes']=_0x2e5653[_0xfc64('0x34')][_0xfc64('0x36')]?_0x2e5653[_0xfc64('0x34')]:_0x23b7e6[_0xfc64('0x33')];if(!_0x8ca616['query']['hasOwnProperty'](_0xfc64('0x37'))){_0x2e5653[_0xfc64('0x1e')]=qs[_0xfc64('0x1e')](_0x8ca616[_0xfc64('0x2f')][_0xfc64('0x1e')]);_0x2e5653[_0xfc64('0x1b')]=qs['offset'](_0x8ca616[_0xfc64('0x2f')][_0xfc64('0x1b')]);}_0x2e5653[_0xfc64('0x38')]=qs[_0xfc64('0x39')](_0x8ca616[_0xfc64('0x2f')]['sort']);_0x2e5653[_0xfc64('0x3a')]=qs['filters'](_[_0xfc64('0x3b')](_0x8ca616[_0xfc64('0x2f')],_0x23b7e6[_0xfc64('0x31')]),_0x18c511);if(_0x8ca616[_0xfc64('0x2f')]['filter']){_0x2e5653[_0xfc64('0x3a')]=_[_0xfc64('0x3c')](_0x2e5653[_0xfc64('0x3a')],{'$or':_['map'](_0x18c511,function(_0x22f293){if(_0x22f293['type']!=='VIRTUAL'){var _0x36a46a={};_0x36a46a[_0x22f293['name']]={'$like':'%'+_0x8ca616['query'][_0xfc64('0x3d')]+'%'};return _0x36a46a;}})});}_0x2e5653=_['merge']({},_0x2e5653,_0x8ca616[_0xfc64('0x3e')]);var _0x536095={'where':_0x2e5653[_0xfc64('0x3a')]};return db[_0xfc64('0x2c')]['count'](_0x536095)[_0xfc64('0x24')](function(_0xaca440){_0x2e685b[_0xfc64('0x1d')]=_0xaca440;if(_0x8ca616[_0xfc64('0x2f')][_0xfc64('0x3f')]){_0x2e5653[_0xfc64('0x40')]=[{'all':!![]}];}return db[_0xfc64('0x2c')][_0xfc64('0x41')](_0x2e5653);})[_0xfc64('0x24')](function(_0x4bae03){_0x2e685b[_0xfc64('0x42')]=_0x4bae03;return _0x2e685b;})[_0xfc64('0x24')](respondWithFilteredResult(_0x5689a7,_0x2e5653))[_0xfc64('0x43')](handleError(_0x5689a7,null));};exports[_0xfc64('0x44')]=function(_0x5f64a0,_0x4b9de9){var _0x20d947={'raw':!![],'where':{'id':_0x5f64a0['params']['id']}},_0x1e3519={};_0x1e3519[_0xfc64('0x33')]=_['keys'](db[_0xfc64('0x2c')][_0xfc64('0x45')]);_0x1e3519['query']=_[_0xfc64('0x30')](_0x5f64a0[_0xfc64('0x2f')]);_0x1e3519['filters']=_[_0xfc64('0x32')](_0x1e3519[_0xfc64('0x33')],_0x1e3519[_0xfc64('0x2f')]);_0x20d947['attributes']=_[_0xfc64('0x32')](_0x1e3519[_0xfc64('0x33')],qs[_0xfc64('0x35')](_0x5f64a0[_0xfc64('0x2f')][_0xfc64('0x35')]));_0x20d947['attributes']=_0x20d947['attributes'][_0xfc64('0x36')]?_0x20d947['attributes']:_0x1e3519[_0xfc64('0x33')];if(_0x5f64a0['query'][_0xfc64('0x3f')]){_0x20d947['include']=[{'all':!![]}];}_0x20d947=_[_0xfc64('0x3c')]({},_0x20d947,_0x5f64a0['options']);return db[_0xfc64('0x2c')][_0xfc64('0x46')](_0x20d947)[_0xfc64('0x24')](handleEntityNotFound(_0x4b9de9,null))[_0xfc64('0x24')](respondWithResult(_0x4b9de9,null))['catch'](handleError(_0x4b9de9,null));};exports[_0xfc64('0x47')]=function(_0x215d89,_0x154bc0){return db[_0xfc64('0x2c')][_0xfc64('0x47')](_0x215d89[_0xfc64('0x48')],{})[_0xfc64('0x24')](respondWithResult(_0x154bc0,0xc9))[_0xfc64('0x43')](handleError(_0x154bc0,null));};exports['update']=function(_0x30c8cf,_0x24c671){if(_0x30c8cf['body']['id']){delete _0x30c8cf[_0xfc64('0x48')]['id'];}return db['JscriptyQuestionReport'][_0xfc64('0x46')]({'where':{'id':_0x30c8cf[_0xfc64('0x49')]['id']}})[_0xfc64('0x24')](handleEntityNotFound(_0x24c671,null))['then'](saveUpdates(_0x30c8cf[_0xfc64('0x48')],null))[_0xfc64('0x24')](respondWithResult(_0x24c671,null))[_0xfc64('0x43')](handleError(_0x24c671,null));};exports[_0xfc64('0x23')]=function(_0x3894a4,_0x357bb0){return db[_0xfc64('0x2c')][_0xfc64('0x46')]({'where':{'id':_0x3894a4['params']['id']}})[_0xfc64('0x24')](handleEntityNotFound(_0x357bb0,null))['then'](removeEntity(_0x357bb0,null))[_0xfc64('0x43')](handleError(_0x357bb0,null));};exports['describe']=function(_0xc98718,_0xb33c4f){return db[_0xfc64('0x2c')][_0xfc64('0x4a')]()[_0xfc64('0x24')](respondWithResult(_0xb33c4f,null))[_0xfc64('0x43')](handleError(_0xb33c4f,null));};
\ No newline at end of file
index 26963a9..d495cd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8db1=['report_jscripty_questions','lodash','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','JscriptyQuestionReport'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x8db1,0xf3));var _0x18db=function(_0x4ebb5d,_0x1e92b6){_0x4ebb5d=_0x4ebb5d-0x0;var _0x5abafd=_0x8db1[_0x4ebb5d];return _0x5abafd;};'use strict';var _=require(_0x18db('0x0'));var util=require(_0x18db('0x1'));var logger=require(_0x18db('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x18db('0x3'));var fs=require('fs');var path=require(_0x18db('0x4'));var rimraf=require(_0x18db('0x5'));var config=require(_0x18db('0x6'));var attributes=require(_0x18db('0x7'));module[_0x18db('0x8')]=function(_0x41ca5d,_0x349b63){return _0x41ca5d['define'](_0x18db('0x9'),attributes,{'tableName':_0x18db('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0c12=['../../config/environment','./jscriptyQuestionReport.attributes','define','JscriptyQuestionReport','report_jscripty_questions','lodash','util','api','request-promise','rimraf'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0x0c12,0x19f));var _0x20c1=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x0c12[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0x20c1('0x0'));var util=require(_0x20c1('0x1'));var logger=require('../../config/logger')(_0x20c1('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x20c1('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x20c1('0x4'));var config=require(_0x20c1('0x5'));var attributes=require(_0x20c1('0x6'));module['exports']=function(_0x371c69,_0x215580){return _0x371c69[_0x20c1('0x7')](_0x20c1('0x8'),attributes,{'tableName':_0x20c1('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 959654e..6580525 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x205d=['request\x20sent','error','code','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/environment','jayson/promise','client','http','request','then','info','JscriptyQuestionReport,\x20%s,\x20%s','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0x205d,0x16e));var _0xd205=function(_0xca6909,_0x31d421){_0xca6909=_0xca6909-0x0;var _0x44d08e=_0x205d[_0xca6909];return _0x44d08e;};'use strict';var _=require(_0xd205('0x0'));var util=require(_0xd205('0x1'));var moment=require(_0xd205('0x2'));var BPromise=require('bluebird');var rs=require(_0xd205('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd205('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xd205('0x5'));var jayson=require(_0xd205('0x6'));var client=jayson[_0xd205('0x7')][_0xd205('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x201b5b,_0x13a8f3,_0x4a4912){return new BPromise(function(_0x39c88d,_0x57d92d){return client[_0xd205('0x9')](_0x201b5b,_0x4a4912)[_0xd205('0xa')](function(_0x3de481){logger[_0xd205('0xb')](_0xd205('0xc'),_0x13a8f3,'request\x20sent');logger['debug'](_0xd205('0xd'),_0x13a8f3,_0xd205('0xe'),JSON['stringify'](_0x3de481));if(_0x3de481[_0xd205('0xf')]){if(_0x3de481[_0xd205('0xf')][_0xd205('0x10')]===0x1f4){logger[_0xd205('0xf')](_0xd205('0xc'),_0x13a8f3,_0x3de481[_0xd205('0xf')][_0xd205('0x11')]);return _0x57d92d(_0x3de481[_0xd205('0xf')][_0xd205('0x11')]);}logger[_0xd205('0xf')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x13a8f3,_0x3de481[_0xd205('0xf')]['message']);return _0x39c88d(_0x3de481[_0xd205('0xf')][_0xd205('0x11')]);}else{logger[_0xd205('0xb')](_0xd205('0xc'),_0x13a8f3,_0xd205('0xe'));_0x39c88d(_0x3de481[_0xd205('0x12')][_0xd205('0x11')]);}})[_0xd205('0x13')](function(_0x1ffe37){logger[_0xd205('0xf')](_0xd205('0xc'),_0x13a8f3,_0x1ffe37);_0x57d92d(_0x1ffe37);});});}
\ No newline at end of file
+var _0xe497=['result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x8145a7,_0x59c48e){var _0xfc7335=function(_0x21eec8){while(--_0x21eec8){_0x8145a7['push'](_0x8145a7['shift']());}};_0xfc7335(++_0x59c48e);}(_0xe497,0x7a));var _0x7e49=function(_0x416ab7,_0x33bb59){_0x416ab7=_0x416ab7-0x0;var _0x42f669=_0xe497[_0x416ab7];return _0x42f669;};'use strict';var _=require(_0x7e49('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x7e49('0x1'));var rs=require(_0x7e49('0x2'));var fs=require('fs');var Redis=require(_0x7e49('0x3'));var db=require(_0x7e49('0x4'))['db'];var utils=require(_0x7e49('0x5'));var logger=require(_0x7e49('0x6'))(_0x7e49('0x7'));var config=require(_0x7e49('0x8'));var jayson=require(_0x7e49('0x9'));var client=jayson[_0x7e49('0xa')][_0x7e49('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2d86b6,_0x311755,_0xf5eeee){return new BPromise(function(_0x4e7a27,_0x540bf6){return client[_0x7e49('0xc')](_0x2d86b6,_0xf5eeee)['then'](function(_0x2482d5){logger[_0x7e49('0xd')](_0x7e49('0xe'),_0x311755,_0x7e49('0xf'));logger[_0x7e49('0x10')](_0x7e49('0x11'),_0x311755,'request\x20sent',JSON[_0x7e49('0x12')](_0x2482d5));if(_0x2482d5[_0x7e49('0x13')]){if(_0x2482d5[_0x7e49('0x13')][_0x7e49('0x14')]===0x1f4){logger['error'](_0x7e49('0xe'),_0x311755,_0x2482d5[_0x7e49('0x13')][_0x7e49('0x15')]);return _0x540bf6(_0x2482d5[_0x7e49('0x13')][_0x7e49('0x15')]);}logger[_0x7e49('0x13')](_0x7e49('0xe'),_0x311755,_0x2482d5[_0x7e49('0x13')]['message']);return _0x4e7a27(_0x2482d5['error']['message']);}else{logger['info'](_0x7e49('0xe'),_0x311755,_0x7e49('0xf'));_0x4e7a27(_0x2482d5[_0x7e49('0x16')]['message']);}})[_0x7e49('0x17')](function(_0x5086fd){logger[_0x7e49('0x13')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x311755,_0x5086fd);_0x540bf6(_0x5086fd);});});}
\ No newline at end of file
index 48a23ca..c31033b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x476b=['get','/describe','describe','/:id','show','/:id/questions','getQuestions','post','create','put','update','delete','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./jscriptySessionReport.controller','isAuthenticated','index'];(function(_0x941c4a,_0x2b9c78){var _0x33e0a2=function(_0x3d3082){while(--_0x3d3082){_0x941c4a['push'](_0x941c4a['shift']());}};_0x33e0a2(++_0x2b9c78);}(_0x476b,0x17c));var _0xb476=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x476b[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0xb476('0x0'));var util=require(_0xb476('0x1'));var path=require(_0xb476('0x2'));var timeout=require('connect-timeout');var express=require(_0xb476('0x3'));var router=express[_0xb476('0x4')]();var fs_extra=require(_0xb476('0x5'));var auth=require(_0xb476('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xb476('0x7'));var controller=require(_0xb476('0x8'));router['get']('/',auth[_0xb476('0x9')](),controller[_0xb476('0xa')]);router[_0xb476('0xb')](_0xb476('0xc'),auth[_0xb476('0x9')](),controller[_0xb476('0xd')]);router[_0xb476('0xb')](_0xb476('0xe'),auth['isAuthenticated'](),controller[_0xb476('0xf')]);router[_0xb476('0xb')](_0xb476('0x10'),auth[_0xb476('0x9')](),controller[_0xb476('0x11')]);router[_0xb476('0x12')]('/',auth[_0xb476('0x9')](),controller[_0xb476('0x13')]);router[_0xb476('0x14')](_0xb476('0xe'),auth['isAuthenticated'](),controller[_0xb476('0x15')]);router[_0xb476('0x16')]('/:id',auth[_0xb476('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x558b=['put','update','delete','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptySessionReport.controller','isAuthenticated','/describe','describe','get','/:id','show','/:id/questions','getQuestions','post','create'];(function(_0x3b870d,_0x431a56){var _0x2ba01d=function(_0x336ee0){while(--_0x336ee0){_0x3b870d['push'](_0x3b870d['shift']());}};_0x2ba01d(++_0x431a56);}(_0x558b,0xb3));var _0xb558=function(_0x55507f,_0x544b89){_0x55507f=_0x55507f-0x0;var _0x551e3b=_0x558b[_0x55507f];return _0x551e3b;};'use strict';var multer=require(_0xb558('0x0'));var util=require(_0xb558('0x1'));var path=require(_0xb558('0x2'));var timeout=require(_0xb558('0x3'));var express=require(_0xb558('0x4'));var router=express['Router']();var fs_extra=require(_0xb558('0x5'));var auth=require(_0xb558('0x6'));var interaction=require(_0xb558('0x7'));var config=require('../../config/environment');var controller=require(_0xb558('0x8'));router['get']('/',auth[_0xb558('0x9')](),controller['index']);router['get'](_0xb558('0xa'),auth[_0xb558('0x9')](),controller[_0xb558('0xb')]);router[_0xb558('0xc')](_0xb558('0xd'),auth['isAuthenticated'](),controller[_0xb558('0xe')]);router['get'](_0xb558('0xf'),auth[_0xb558('0x9')](),controller[_0xb558('0x10')]);router[_0xb558('0x11')]('/',auth['isAuthenticated'](),controller[_0xb558('0x12')]);router[_0xb558('0x13')](_0xb558('0xd'),auth['isAuthenticated'](),controller[_0xb558('0x14')]);router[_0xb558('0x15')](_0xb558('0xd'),auth[_0xb558('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index bdc7203..440e412 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eee=['STRING','BOOLEAN','moment','sequelize','exports','setDataValue','starttime','endtime','YYYY-MM-DD\x20HH:mm:ss','DATE'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7eee,0x14c));var _0xe7ee=function(_0x5b1c1b,_0xf7cd16){_0x5b1c1b=_0x5b1c1b-0x0;var _0x8188f4=_0x7eee[_0x5b1c1b];return _0x8188f4;};'use strict';var moment=require(_0xe7ee('0x0'));var Sequelize=require(_0xe7ee('0x1'));module[_0xe7ee('0x2')]={'starttime':{'type':Sequelize['DATE'],'set':function(_0x1f6a54){this[_0xe7ee('0x3')](_0xe7ee('0x4'),_0x1f6a54);this[_0xe7ee('0x3')](_0xe7ee('0x5'),moment()['format'](_0xe7ee('0x6')));}},'endtime':{'type':Sequelize[_0xe7ee('0x7')]},'membername':{'type':Sequelize[_0xe7ee('0x8')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xe7ee('0x8')]},'uniqueid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xe7ee('0x8')]},'completed':{'type':Sequelize[_0xe7ee('0x9')],'defaultValue':![]}};
\ No newline at end of file
+var _0xc0e3=['moment','sequelize','exports','starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','DATE','STRING','BOOLEAN'];(function(_0x4da589,_0x12492b){var _0x2905ce=function(_0x5ac3a6){while(--_0x5ac3a6){_0x4da589['push'](_0x4da589['shift']());}};_0x2905ce(++_0x12492b);}(_0xc0e3,0x12c));var _0x3c0e=function(_0x49fb23,_0x5340d4){_0x49fb23=_0x49fb23-0x0;var _0x4ef27b=_0xc0e3[_0x49fb23];return _0x4ef27b;};'use strict';var moment=require(_0x3c0e('0x0'));var Sequelize=require(_0x3c0e('0x1'));module[_0x3c0e('0x2')]={'starttime':{'type':Sequelize['DATE'],'set':function(_0x1c66da){this['setDataValue'](_0x3c0e('0x3'),_0x1c66da);this['setDataValue'](_0x3c0e('0x4'),moment()[_0x3c0e('0x5')](_0x3c0e('0x6')));}},'endtime':{'type':Sequelize[_0x3c0e('0x7')]},'membername':{'type':Sequelize[_0x3c0e('0x8')]},'projectname':{'type':Sequelize[_0x3c0e('0x8')]},'queue':{'type':Sequelize[_0x3c0e('0x8')]},'uniqueid':{'type':Sequelize[_0x3c0e('0x8')]},'calleridname':{'type':Sequelize[_0x3c0e('0x8')]},'calleridnum':{'type':Sequelize[_0x3c0e('0x8')]},'completed':{'type':Sequelize[_0x3c0e('0x9')],'defaultValue':![]}};
\ No newline at end of file
index c94847e..401d1b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e2a=['find','describe','findOne','JscriptyQuestionReport','order','SessionId','merge','zip-dir','bluebird','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','map','JscriptySessionReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filters','pick','filter','where','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','create','body'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0x2e2a,0x9f));var _0xa2e2=function(_0x4193fc,_0x2b7bf5){_0x4193fc=_0x4193fc-0x0;var _0x541099=_0x2e2a[_0x4193fc];return _0x541099;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xa2e2('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa2e2('0x1'));var Mustache=require('mustache');var util=require(_0xa2e2('0x2'));var path=require(_0xa2e2('0x3'));var sox=require(_0xa2e2('0x4'));var csv=require(_0xa2e2('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa2e2('0x6'));var _=require('lodash');var squel=require(_0xa2e2('0x7'));var crypto=require(_0xa2e2('0x8'));var jsforce=require('jsforce');var deskjs=require(_0xa2e2('0x9'));var toCsv=require(_0xa2e2('0x5'));var querystring=require(_0xa2e2('0xa'));var Papa=require(_0xa2e2('0xb'));var Redis=require('ioredis');var authService=require(_0xa2e2('0xc'));var qs=require(_0xa2e2('0xd'));var as=require(_0xa2e2('0xe'));var hardwareService=require(_0xa2e2('0xf'));var logger=require(_0xa2e2('0x10'))('api');var utils=require(_0xa2e2('0x11'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa2e2('0x12'))['db'];function respondWithStatusCode(_0x3b0aa2,_0x3ee320){_0x3ee320=_0x3ee320||0xcc;return function(_0x3a1b11){if(_0x3a1b11){return _0x3b0aa2[_0xa2e2('0x13')](_0x3ee320);}return _0x3b0aa2[_0xa2e2('0x14')](_0x3ee320)[_0xa2e2('0x15')]();};}function respondWithResult(_0x3c025c,_0x314e7f){_0x314e7f=_0x314e7f||0xc8;return function(_0x203ca6){if(_0x203ca6){return _0x3c025c[_0xa2e2('0x14')](_0x314e7f)[_0xa2e2('0x16')](_0x203ca6);}};}function respondWithFilteredResult(_0x707692,_0x35d121){return function(_0x3672b0){if(_0x3672b0){var _0x11fea5=typeof _0x35d121['offset']===_0xa2e2('0x17')&&typeof _0x35d121[_0xa2e2('0x18')]===_0xa2e2('0x17');var _0x3a3fa5=_0x3672b0['count'];var _0x3ccfb3=_0x11fea5?0x0:_0x35d121[_0xa2e2('0x19')];var _0x51584a=_0x11fea5?_0x3672b0[_0xa2e2('0x1a')]:_0x35d121[_0xa2e2('0x19')]+_0x35d121[_0xa2e2('0x18')];var _0x93cdb7;if(_0x51584a>=_0x3a3fa5){_0x51584a=_0x3a3fa5;_0x93cdb7=0xc8;}else{_0x93cdb7=0xce;}_0x707692[_0xa2e2('0x14')](_0x93cdb7);return _0x707692[_0xa2e2('0x1b')](_0xa2e2('0x1c'),_0x3ccfb3+'-'+_0x51584a+'/'+_0x3a3fa5)[_0xa2e2('0x16')](_0x3672b0);}return null;};}function patchUpdates(_0x288238){return function(_0x4212fa){try{jsonpatch[_0xa2e2('0x1d')](_0x4212fa,_0x288238,!![]);}catch(_0x6b8bd8){return BPromise['reject'](_0x6b8bd8);}return _0x4212fa[_0xa2e2('0x1e')]();};}function saveUpdates(_0x1f770b,_0x387c8f){return function(_0x3ac2d2){if(_0x3ac2d2){return _0x3ac2d2[_0xa2e2('0x1f')](_0x1f770b)[_0xa2e2('0x20')](function(_0x2508e2){return _0x2508e2;});}return null;};}function removeEntity(_0x4f5632,_0x17d4e2){return function(_0x3a2f95){if(_0x3a2f95){return _0x3a2f95[_0xa2e2('0x21')]()['then'](function(){_0x4f5632[_0xa2e2('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1426d9,_0x555c94){return function(_0x127fbb){if(!_0x127fbb){_0x1426d9[_0xa2e2('0x13')](0x194);}return _0x127fbb;};}function handleError(_0x32a8e6,_0x1c4255){_0x1c4255=_0x1c4255||0x1f4;return function(_0x2f6304){logger[_0xa2e2('0x22')](_0x2f6304[_0xa2e2('0x23')]);if(_0x2f6304['name']){delete _0x2f6304[_0xa2e2('0x24')];}_0x32a8e6['status'](_0x1c4255)[_0xa2e2('0x25')](_0x2f6304);};}exports['index']=function(_0x2f9a81,_0x13de6a){var _0x47e9b3={},_0x5f2a6={},_0x5ce2ea={'count':0x0,'rows':[]};var _0x1d4aab=_[_0xa2e2('0x26')](db[_0xa2e2('0x27')][_0xa2e2('0x28')],function(_0x473085){return{'name':_0x473085[_0xa2e2('0x29')],'type':_0x473085[_0xa2e2('0x2a')][_0xa2e2('0x2b')]};});_0x5f2a6[_0xa2e2('0x2c')]=_[_0xa2e2('0x26')](_0x1d4aab,_0xa2e2('0x24'));_0x5f2a6[_0xa2e2('0x2d')]=_[_0xa2e2('0x2e')](_0x2f9a81[_0xa2e2('0x2d')]);_0x5f2a6['filters']=_[_0xa2e2('0x2f')](_0x5f2a6[_0xa2e2('0x2c')],_0x5f2a6[_0xa2e2('0x2d')]);_0x47e9b3[_0xa2e2('0x30')]=_['intersection'](_0x5f2a6[_0xa2e2('0x2c')],qs[_0xa2e2('0x31')](_0x2f9a81[_0xa2e2('0x2d')]['fields']));_0x47e9b3[_0xa2e2('0x30')]=_0x47e9b3[_0xa2e2('0x30')][_0xa2e2('0x32')]?_0x47e9b3[_0xa2e2('0x30')]:_0x5f2a6[_0xa2e2('0x2c')];if(!_0x2f9a81[_0xa2e2('0x2d')][_0xa2e2('0x33')](_0xa2e2('0x34'))){_0x47e9b3['limit']=qs['limit'](_0x2f9a81[_0xa2e2('0x2d')]['limit']);_0x47e9b3[_0xa2e2('0x19')]=qs[_0xa2e2('0x19')](_0x2f9a81['query'][_0xa2e2('0x19')]);}_0x47e9b3['order']=qs[_0xa2e2('0x35')](_0x2f9a81['query'][_0xa2e2('0x35')]);_0x47e9b3['where']=qs[_0xa2e2('0x36')](_[_0xa2e2('0x37')](_0x2f9a81[_0xa2e2('0x2d')],_0x5f2a6[_0xa2e2('0x36')]),_0x1d4aab);if(_0x2f9a81['query'][_0xa2e2('0x38')]){_0x47e9b3[_0xa2e2('0x39')]=_['merge'](_0x47e9b3['where'],{'$or':_['map'](_0x1d4aab,function(_0x795d5e){if(_0x795d5e['type']!==_0xa2e2('0x3a')){var _0x43e31a={};_0x43e31a[_0x795d5e[_0xa2e2('0x24')]]={'$like':'%'+_0x2f9a81['query']['filter']+'%'};return _0x43e31a;}})});}_0x47e9b3=_['merge']({},_0x47e9b3,_0x2f9a81['options']);var _0x32a4ea={'where':_0x47e9b3[_0xa2e2('0x39')]};return db[_0xa2e2('0x27')]['count'](_0x32a4ea)[_0xa2e2('0x20')](function(_0xaed80f){_0x5ce2ea['count']=_0xaed80f;if(_0x2f9a81[_0xa2e2('0x2d')][_0xa2e2('0x3b')]){_0x47e9b3[_0xa2e2('0x3c')]=[{'all':!![]}];}return db[_0xa2e2('0x27')][_0xa2e2('0x3d')](_0x47e9b3);})[_0xa2e2('0x20')](function(_0x32030b){_0x5ce2ea[_0xa2e2('0x3e')]=_0x32030b;return _0x5ce2ea;})[_0xa2e2('0x20')](respondWithFilteredResult(_0x13de6a,_0x47e9b3))[_0xa2e2('0x3f')](handleError(_0x13de6a,null));};exports[_0xa2e2('0x40')]=function(_0x18093b,_0x37614d){var _0x46518e={'raw':!![],'where':{'id':_0x18093b[_0xa2e2('0x41')]['id']}},_0x52200b={};_0x52200b[_0xa2e2('0x2c')]=_[_0xa2e2('0x2e')](db[_0xa2e2('0x27')][_0xa2e2('0x28')]);_0x52200b[_0xa2e2('0x2d')]=_[_0xa2e2('0x2e')](_0x18093b['query']);_0x52200b['filters']=_['intersection'](_0x52200b[_0xa2e2('0x2c')],_0x52200b['query']);_0x46518e[_0xa2e2('0x30')]=_['intersection'](_0x52200b[_0xa2e2('0x2c')],qs[_0xa2e2('0x31')](_0x18093b[_0xa2e2('0x2d')][_0xa2e2('0x31')]));_0x46518e[_0xa2e2('0x30')]=_0x46518e[_0xa2e2('0x30')][_0xa2e2('0x32')]?_0x46518e['attributes']:_0x52200b[_0xa2e2('0x2c')];if(_0x18093b['query']['includeAll']){_0x46518e['include']=[{'all':!![]}];}_0x46518e=_['merge']({},_0x46518e,_0x18093b[_0xa2e2('0x42')]);return db['JscriptySessionReport']['find'](_0x46518e)[_0xa2e2('0x20')](handleEntityNotFound(_0x37614d,null))[_0xa2e2('0x20')](respondWithResult(_0x37614d,null))[_0xa2e2('0x3f')](handleError(_0x37614d,null));};exports[_0xa2e2('0x43')]=function(_0x3fa50b,_0x4fa8b2){return db['JscriptySessionReport'][_0xa2e2('0x43')](_0x3fa50b[_0xa2e2('0x44')],{})[_0xa2e2('0x20')](respondWithResult(_0x4fa8b2,0xc9))[_0xa2e2('0x3f')](handleError(_0x4fa8b2,null));};exports[_0xa2e2('0x1f')]=function(_0x1a5655,_0x1fd691){if(_0x1a5655[_0xa2e2('0x44')]['id']){delete _0x1a5655[_0xa2e2('0x44')]['id'];}return db[_0xa2e2('0x27')][_0xa2e2('0x45')]({'where':{'id':_0x1a5655[_0xa2e2('0x41')]['id']}})[_0xa2e2('0x20')](handleEntityNotFound(_0x1fd691,null))['then'](saveUpdates(_0x1a5655[_0xa2e2('0x44')],null))[_0xa2e2('0x20')](respondWithResult(_0x1fd691,null))[_0xa2e2('0x3f')](handleError(_0x1fd691,null));};exports[_0xa2e2('0x21')]=function(_0x3fa9ce,_0x2670b0){return db[_0xa2e2('0x27')][_0xa2e2('0x45')]({'where':{'id':_0x3fa9ce[_0xa2e2('0x41')]['id']}})[_0xa2e2('0x20')](handleEntityNotFound(_0x2670b0,null))['then'](removeEntity(_0x2670b0,null))[_0xa2e2('0x3f')](handleError(_0x2670b0,null));};exports['describe']=function(_0x51547e,_0x1a9aee){return db[_0xa2e2('0x27')][_0xa2e2('0x46')]()[_0xa2e2('0x20')](respondWithResult(_0x1a9aee,null))[_0xa2e2('0x3f')](handleError(_0x1a9aee,null));};exports['getQuestions']=function(_0x1e278c,_0x52e358,_0x3c700a){var _0x13553a={'raw':!![],'where':{}};var _0x14d538={};var _0x53c0fd={'count':0x0,'rows':[]};return db[_0xa2e2('0x27')][_0xa2e2('0x47')]({'where':{'id':_0x1e278c['params']['id']}})[_0xa2e2('0x20')](handleEntityNotFound(_0x52e358,null))[_0xa2e2('0x20')](function(_0x84b44e){if(_0x84b44e){_0x14d538[_0xa2e2('0x2c')]=_[_0xa2e2('0x2e')](db[_0xa2e2('0x48')][_0xa2e2('0x28')]);_0x14d538['query']=_[_0xa2e2('0x2e')](_0x1e278c[_0xa2e2('0x2d')]);_0x14d538[_0xa2e2('0x36')]=_['intersection'](_0x14d538[_0xa2e2('0x2c')],_0x14d538[_0xa2e2('0x2d')]);_0x13553a[_0xa2e2('0x30')]=_[_0xa2e2('0x2f')](_0x14d538[_0xa2e2('0x2c')],qs[_0xa2e2('0x31')](_0x1e278c[_0xa2e2('0x2d')][_0xa2e2('0x31')]));_0x13553a[_0xa2e2('0x30')]=_0x13553a['attributes'][_0xa2e2('0x32')]?_0x13553a[_0xa2e2('0x30')]:_0x14d538[_0xa2e2('0x2c')];if(!_0x1e278c[_0xa2e2('0x2d')][_0xa2e2('0x33')]('nolimit')){_0x13553a['limit']=qs[_0xa2e2('0x18')](_0x1e278c[_0xa2e2('0x2d')]['limit']);_0x13553a[_0xa2e2('0x19')]=qs[_0xa2e2('0x19')](_0x1e278c[_0xa2e2('0x2d')][_0xa2e2('0x19')]);}_0x13553a[_0xa2e2('0x49')]=qs[_0xa2e2('0x35')](_0x1e278c[_0xa2e2('0x2d')][_0xa2e2('0x35')]);_0x13553a[_0xa2e2('0x39')]=qs[_0xa2e2('0x36')](_[_0xa2e2('0x37')](_0x1e278c[_0xa2e2('0x2d')],_0x14d538[_0xa2e2('0x36')]));_0x13553a[_0xa2e2('0x39')][_0xa2e2('0x4a')]=_0x84b44e['id'];if(_0x1e278c['query'][_0xa2e2('0x38')]){_0x13553a['where']=_[_0xa2e2('0x4b')](_0x13553a['where'],{'$or':_['map'](_0x13553a['attributes'],function(_0x5b9bad){var _0x4a3b4d={};_0x4a3b4d[_0x5b9bad]={'$like':'%'+_0x1e278c[_0xa2e2('0x2d')]['filter']+'%'};return _0x4a3b4d;})});}_0x13553a=_['merge']({},_0x13553a,_0x1e278c[_0xa2e2('0x42')]);return db['JscriptyQuestionReport'][_0xa2e2('0x1a')]({'where':_0x13553a[_0xa2e2('0x39')]})[_0xa2e2('0x20')](function(_0xd730dd){_0x53c0fd[_0xa2e2('0x1a')]=_0xd730dd;if(_0x1e278c[_0xa2e2('0x2d')]['includeAll']){_0x13553a[_0xa2e2('0x3c')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0xa2e2('0x3d')](_0x13553a);})[_0xa2e2('0x20')](function(_0x47ae9c){_0x53c0fd[_0xa2e2('0x3e')]=_0x47ae9c;return _0x53c0fd;});}})['then'](respondWithFilteredResult(_0x52e358,_0x13553a))[_0xa2e2('0x3f')](handleError(_0x52e358,null));};
\ No newline at end of file
+var _0x17c6=['../../config/environment','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','stack','name','send','index','map','JscriptySessionReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','params','keys','options','catch','create','body','update','find','describe','findOne','JscriptyQuestionReport','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils'];(function(_0x36f83b,_0x2eabfe){var _0x525f89=function(_0x154d08){while(--_0x154d08){_0x36f83b['push'](_0x36f83b['shift']());}};_0x525f89(++_0x2eabfe);}(_0x17c6,0x82));var _0x617c=function(_0x3c001a,_0x33814d){_0x3c001a=_0x3c001a-0x0;var _0x25b277=_0x17c6[_0x3c001a];return _0x25b277;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x617c('0x0'));var jsonpatch=require(_0x617c('0x1'));var rp=require(_0x617c('0x2'));var moment=require(_0x617c('0x3'));var BPromise=require(_0x617c('0x4'));var Mustache=require('mustache');var util=require(_0x617c('0x5'));var path=require(_0x617c('0x6'));var sox=require(_0x617c('0x7'));var csv=require(_0x617c('0x8'));var ejs=require(_0x617c('0x9'));var fs=require('fs');var fs_extra=require(_0x617c('0xa'));var _=require(_0x617c('0xb'));var squel=require(_0x617c('0xc'));var crypto=require(_0x617c('0xd'));var jsforce=require(_0x617c('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x617c('0xf'));var Papa=require(_0x617c('0x10'));var Redis=require('ioredis');var authService=require(_0x617c('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x617c('0x12'));var hardwareService=require(_0x617c('0x13'));var logger=require('../../config/logger')(_0x617c('0x14'));var utils=require(_0x617c('0x15'));var config=require(_0x617c('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4ca725,_0x2a3197){_0x2a3197=_0x2a3197||0xcc;return function(_0xdfe560){if(_0xdfe560){return _0x4ca725[_0x617c('0x17')](_0x2a3197);}return _0x4ca725[_0x617c('0x18')](_0x2a3197)[_0x617c('0x19')]();};}function respondWithResult(_0x5f2a1b,_0x9d599a){_0x9d599a=_0x9d599a||0xc8;return function(_0x3df1a9){if(_0x3df1a9){return _0x5f2a1b[_0x617c('0x18')](_0x9d599a)['json'](_0x3df1a9);}};}function respondWithFilteredResult(_0x53c011,_0x3ea1c2){return function(_0x2cac9e){if(_0x2cac9e){var _0x1431ff=typeof _0x3ea1c2[_0x617c('0x1a')]===_0x617c('0x1b')&&typeof _0x3ea1c2[_0x617c('0x1c')]===_0x617c('0x1b');var _0x5d84cd=_0x2cac9e['count'];var _0x3dafc7=_0x1431ff?0x0:_0x3ea1c2[_0x617c('0x1a')];var _0x531da5=_0x1431ff?_0x2cac9e[_0x617c('0x1d')]:_0x3ea1c2[_0x617c('0x1a')]+_0x3ea1c2['limit'];var _0xe2de01;if(_0x531da5>=_0x5d84cd){_0x531da5=_0x5d84cd;_0xe2de01=0xc8;}else{_0xe2de01=0xce;}_0x53c011[_0x617c('0x18')](_0xe2de01);return _0x53c011[_0x617c('0x1e')](_0x617c('0x1f'),_0x3dafc7+'-'+_0x531da5+'/'+_0x5d84cd)['json'](_0x2cac9e);}return null;};}function patchUpdates(_0x42e57c){return function(_0x2cab12){try{jsonpatch[_0x617c('0x20')](_0x2cab12,_0x42e57c,!![]);}catch(_0x2bbe00){return BPromise[_0x617c('0x21')](_0x2bbe00);}return _0x2cab12[_0x617c('0x22')]();};}function saveUpdates(_0x2bec6a,_0x2009c9){return function(_0x484688){if(_0x484688){return _0x484688['update'](_0x2bec6a)[_0x617c('0x23')](function(_0x35d8f7){return _0x35d8f7;});}return null;};}function removeEntity(_0x173e21,_0x5dce31){return function(_0x30e9c5){if(_0x30e9c5){return _0x30e9c5['destroy']()[_0x617c('0x23')](function(){_0x173e21['status'](0xcc)[_0x617c('0x19')]();});}};}function handleEntityNotFound(_0x24b992,_0x4f6b33){return function(_0x423bbc){if(!_0x423bbc){_0x24b992[_0x617c('0x17')](0x194);}return _0x423bbc;};}function handleError(_0x335f71,_0x58dfda){_0x58dfda=_0x58dfda||0x1f4;return function(_0x56b2c8){logger['error'](_0x56b2c8[_0x617c('0x24')]);if(_0x56b2c8[_0x617c('0x25')]){delete _0x56b2c8[_0x617c('0x25')];}_0x335f71[_0x617c('0x18')](_0x58dfda)[_0x617c('0x26')](_0x56b2c8);};}exports[_0x617c('0x27')]=function(_0xc845fa,_0x7c9afe){var _0x1f4ff5={},_0x3ead0d={},_0x5a9e07={'count':0x0,'rows':[]};var _0x982a9c=_[_0x617c('0x28')](db[_0x617c('0x29')][_0x617c('0x2a')],function(_0x46b73b){return{'name':_0x46b73b[_0x617c('0x2b')],'type':_0x46b73b[_0x617c('0x2c')][_0x617c('0x2d')]};});_0x3ead0d[_0x617c('0x2e')]=_['map'](_0x982a9c,'name');_0x3ead0d[_0x617c('0x2f')]=_['keys'](_0xc845fa[_0x617c('0x2f')]);_0x3ead0d[_0x617c('0x30')]=_[_0x617c('0x31')](_0x3ead0d[_0x617c('0x2e')],_0x3ead0d[_0x617c('0x2f')]);_0x1f4ff5[_0x617c('0x32')]=_['intersection'](_0x3ead0d[_0x617c('0x2e')],qs['fields'](_0xc845fa[_0x617c('0x2f')][_0x617c('0x33')]));_0x1f4ff5[_0x617c('0x32')]=_0x1f4ff5[_0x617c('0x32')][_0x617c('0x34')]?_0x1f4ff5['attributes']:_0x3ead0d[_0x617c('0x2e')];if(!_0xc845fa[_0x617c('0x2f')][_0x617c('0x35')](_0x617c('0x36'))){_0x1f4ff5[_0x617c('0x1c')]=qs[_0x617c('0x1c')](_0xc845fa['query'][_0x617c('0x1c')]);_0x1f4ff5[_0x617c('0x1a')]=qs[_0x617c('0x1a')](_0xc845fa[_0x617c('0x2f')]['offset']);}_0x1f4ff5[_0x617c('0x37')]=qs[_0x617c('0x38')](_0xc845fa['query']['sort']);_0x1f4ff5[_0x617c('0x39')]=qs[_0x617c('0x30')](_[_0x617c('0x3a')](_0xc845fa[_0x617c('0x2f')],_0x3ead0d[_0x617c('0x30')]),_0x982a9c);if(_0xc845fa[_0x617c('0x2f')][_0x617c('0x3b')]){_0x1f4ff5[_0x617c('0x39')]=_[_0x617c('0x3c')](_0x1f4ff5[_0x617c('0x39')],{'$or':_[_0x617c('0x28')](_0x982a9c,function(_0x1226a8){if(_0x1226a8['type']!=='VIRTUAL'){var _0x5e5ac4={};_0x5e5ac4[_0x1226a8[_0x617c('0x25')]]={'$like':'%'+_0xc845fa[_0x617c('0x2f')][_0x617c('0x3b')]+'%'};return _0x5e5ac4;}})});}_0x1f4ff5=_[_0x617c('0x3c')]({},_0x1f4ff5,_0xc845fa['options']);var _0x15fa2e={'where':_0x1f4ff5[_0x617c('0x39')]};return db[_0x617c('0x29')]['count'](_0x15fa2e)['then'](function(_0x38202d){_0x5a9e07[_0x617c('0x1d')]=_0x38202d;if(_0xc845fa[_0x617c('0x2f')][_0x617c('0x3d')]){_0x1f4ff5[_0x617c('0x3e')]=[{'all':!![]}];}return db[_0x617c('0x29')][_0x617c('0x3f')](_0x1f4ff5);})[_0x617c('0x23')](function(_0x59be0e){_0x5a9e07[_0x617c('0x40')]=_0x59be0e;return _0x5a9e07;})[_0x617c('0x23')](respondWithFilteredResult(_0x7c9afe,_0x1f4ff5))['catch'](handleError(_0x7c9afe,null));};exports['show']=function(_0x5e1584,_0x1a8967){var _0x30ef6b={'raw':!![],'where':{'id':_0x5e1584[_0x617c('0x41')]['id']}},_0x53ebc3={};_0x53ebc3[_0x617c('0x2e')]=_[_0x617c('0x42')](db[_0x617c('0x29')][_0x617c('0x2a')]);_0x53ebc3[_0x617c('0x2f')]=_['keys'](_0x5e1584[_0x617c('0x2f')]);_0x53ebc3['filters']=_[_0x617c('0x31')](_0x53ebc3[_0x617c('0x2e')],_0x53ebc3['query']);_0x30ef6b[_0x617c('0x32')]=_[_0x617c('0x31')](_0x53ebc3[_0x617c('0x2e')],qs['fields'](_0x5e1584[_0x617c('0x2f')][_0x617c('0x33')]));_0x30ef6b[_0x617c('0x32')]=_0x30ef6b['attributes'][_0x617c('0x34')]?_0x30ef6b[_0x617c('0x32')]:_0x53ebc3[_0x617c('0x2e')];if(_0x5e1584[_0x617c('0x2f')][_0x617c('0x3d')]){_0x30ef6b[_0x617c('0x3e')]=[{'all':!![]}];}_0x30ef6b=_[_0x617c('0x3c')]({},_0x30ef6b,_0x5e1584[_0x617c('0x43')]);return db[_0x617c('0x29')]['find'](_0x30ef6b)['then'](handleEntityNotFound(_0x1a8967,null))[_0x617c('0x23')](respondWithResult(_0x1a8967,null))[_0x617c('0x44')](handleError(_0x1a8967,null));};exports[_0x617c('0x45')]=function(_0x3c2f8a,_0x2ed0ca){return db[_0x617c('0x29')][_0x617c('0x45')](_0x3c2f8a[_0x617c('0x46')],{})[_0x617c('0x23')](respondWithResult(_0x2ed0ca,0xc9))['catch'](handleError(_0x2ed0ca,null));};exports[_0x617c('0x47')]=function(_0x1c6aeb,_0x2bf398){if(_0x1c6aeb[_0x617c('0x46')]['id']){delete _0x1c6aeb['body']['id'];}return db[_0x617c('0x29')][_0x617c('0x48')]({'where':{'id':_0x1c6aeb[_0x617c('0x41')]['id']}})['then'](handleEntityNotFound(_0x2bf398,null))[_0x617c('0x23')](saveUpdates(_0x1c6aeb['body'],null))[_0x617c('0x23')](respondWithResult(_0x2bf398,null))[_0x617c('0x44')](handleError(_0x2bf398,null));};exports['destroy']=function(_0x4a605a,_0x5472d2){return db[_0x617c('0x29')][_0x617c('0x48')]({'where':{'id':_0x4a605a['params']['id']}})[_0x617c('0x23')](handleEntityNotFound(_0x5472d2,null))[_0x617c('0x23')](removeEntity(_0x5472d2,null))[_0x617c('0x44')](handleError(_0x5472d2,null));};exports[_0x617c('0x49')]=function(_0x2db416,_0x50b604){return db['JscriptySessionReport'][_0x617c('0x49')]()['then'](respondWithResult(_0x50b604,null))[_0x617c('0x44')](handleError(_0x50b604,null));};exports['getQuestions']=function(_0x612ab9,_0x56462e,_0x152714){var _0x54c43e={'raw':!![],'where':{}};var _0x3aac6d={};var _0x12f74b={'count':0x0,'rows':[]};return db['JscriptySessionReport'][_0x617c('0x4a')]({'where':{'id':_0x612ab9['params']['id']}})[_0x617c('0x23')](handleEntityNotFound(_0x56462e,null))[_0x617c('0x23')](function(_0x40dacc){if(_0x40dacc){_0x3aac6d['model']=_[_0x617c('0x42')](db[_0x617c('0x4b')][_0x617c('0x2a')]);_0x3aac6d[_0x617c('0x2f')]=_[_0x617c('0x42')](_0x612ab9[_0x617c('0x2f')]);_0x3aac6d[_0x617c('0x30')]=_['intersection'](_0x3aac6d['model'],_0x3aac6d[_0x617c('0x2f')]);_0x54c43e['attributes']=_[_0x617c('0x31')](_0x3aac6d[_0x617c('0x2e')],qs[_0x617c('0x33')](_0x612ab9[_0x617c('0x2f')][_0x617c('0x33')]));_0x54c43e[_0x617c('0x32')]=_0x54c43e[_0x617c('0x32')][_0x617c('0x34')]?_0x54c43e[_0x617c('0x32')]:_0x3aac6d['model'];if(!_0x612ab9[_0x617c('0x2f')]['hasOwnProperty'](_0x617c('0x36'))){_0x54c43e[_0x617c('0x1c')]=qs[_0x617c('0x1c')](_0x612ab9[_0x617c('0x2f')][_0x617c('0x1c')]);_0x54c43e['offset']=qs['offset'](_0x612ab9[_0x617c('0x2f')]['offset']);}_0x54c43e[_0x617c('0x37')]=qs[_0x617c('0x38')](_0x612ab9[_0x617c('0x2f')]['sort']);_0x54c43e['where']=qs[_0x617c('0x30')](_[_0x617c('0x3a')](_0x612ab9[_0x617c('0x2f')],_0x3aac6d['filters']));_0x54c43e[_0x617c('0x39')]['SessionId']=_0x40dacc['id'];if(_0x612ab9[_0x617c('0x2f')][_0x617c('0x3b')]){_0x54c43e[_0x617c('0x39')]=_['merge'](_0x54c43e[_0x617c('0x39')],{'$or':_[_0x617c('0x28')](_0x54c43e[_0x617c('0x32')],function(_0x51bc9c){var _0x516357={};_0x516357[_0x51bc9c]={'$like':'%'+_0x612ab9[_0x617c('0x2f')][_0x617c('0x3b')]+'%'};return _0x516357;})});}_0x54c43e=_[_0x617c('0x3c')]({},_0x54c43e,_0x612ab9[_0x617c('0x43')]);return db['JscriptyQuestionReport'][_0x617c('0x1d')]({'where':_0x54c43e[_0x617c('0x39')]})[_0x617c('0x23')](function(_0x1b9e61){_0x12f74b[_0x617c('0x1d')]=_0x1b9e61;if(_0x612ab9[_0x617c('0x2f')][_0x617c('0x3d')]){_0x54c43e[_0x617c('0x3e')]=[{'all':!![]}];}return db[_0x617c('0x4b')][_0x617c('0x3f')](_0x54c43e);})[_0x617c('0x23')](function(_0x819e0a){_0x12f74b[_0x617c('0x40')]=_0x819e0a;return _0x12f74b;});}})[_0x617c('0x23')](respondWithFilteredResult(_0x56462e,_0x54c43e))[_0x617c('0x44')](handleError(_0x56462e,null));};
\ No newline at end of file
index 0977099..2475694 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5162=['bluebird','request-promise','path','rimraf','../../config/environment','./jscriptySessionReport.attributes','exports','JscriptySessionReport','report_jscripty_sessions','lodash'];(function(_0x2cce3c,_0x22c565){var _0x5a05ae=function(_0x4476bf){while(--_0x4476bf){_0x2cce3c['push'](_0x2cce3c['shift']());}};_0x5a05ae(++_0x22c565);}(_0x5162,0x103));var _0x2516=function(_0x794cdc,_0x59809d){_0x794cdc=_0x794cdc-0x0;var _0x4a65a6=_0x5162[_0x794cdc];return _0x4a65a6;};'use strict';var _=require(_0x2516('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x2516('0x1'));var rp=require(_0x2516('0x2'));var fs=require('fs');var path=require(_0x2516('0x3'));var rimraf=require(_0x2516('0x4'));var config=require(_0x2516('0x5'));var attributes=require(_0x2516('0x6'));module[_0x2516('0x7')]=function(_0x5b71b5,_0x48f411){return _0x5b71b5['define'](_0x2516('0x8'),attributes,{'tableName':_0x2516('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1db9=['JscriptySessionReport','report_jscripty_sessions','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','exports','define'];(function(_0x5f265e,_0x5f29c3){var _0x197592=function(_0x2b02d3){while(--_0x2b02d3){_0x5f265e['push'](_0x5f265e['shift']());}};_0x197592(++_0x5f29c3);}(_0x1db9,0x176));var _0x91db=function(_0x24ccee,_0x24f02f){_0x24ccee=_0x24ccee-0x0;var _0x3117c4=_0x1db9[_0x24ccee];return _0x3117c4;};'use strict';var _=require(_0x91db('0x0'));var util=require(_0x91db('0x1'));var logger=require(_0x91db('0x2'))(_0x91db('0x3'));var moment=require(_0x91db('0x4'));var BPromise=require(_0x91db('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x91db('0x6'));var rimraf=require(_0x91db('0x7'));var config=require('../../config/environment');var attributes=require('./jscriptySessionReport.attributes');module[_0x91db('0x8')]=function(_0x4b3f5c,_0x5e69d9){return _0x4b3f5c[_0x91db('0x9')](_0x91db('0xa'),attributes,{'tableName':_0x91db('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4dbf82d..c01d166 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1c6=['lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','then','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch'];(function(_0x4517c2,_0x30145e){var _0x99b69=function(_0x5bbce0){while(--_0x5bbce0){_0x4517c2['push'](_0x4517c2['shift']());}};_0x99b69(++_0x30145e);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x190e57,_0x5ce262){_0x190e57=_0x190e57-0x0;var _0x6997e1=_0xc1c6[_0x190e57];return _0x6997e1;};'use strict';var _=require(_0x6c1c('0x0'));var util=require(_0x6c1c('0x1'));var moment=require(_0x6c1c('0x2'));var BPromise=require('bluebird');var rs=require(_0x6c1c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6c1c('0x4'))['db'];var utils=require(_0x6c1c('0x5'));var logger=require(_0x6c1c('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6c1c('0x7'));var client=jayson['client'][_0x6c1c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x582bec,_0xe510ca,_0x2eb1ba){return new BPromise(function(_0x38369d,_0x2cec58){return client['request'](_0x582bec,_0x2eb1ba)[_0x6c1c('0x9')](function(_0x3ca985){logger['info'](_0x6c1c('0xa'),_0xe510ca,_0x6c1c('0xb'));logger[_0x6c1c('0xc')](_0x6c1c('0xd'),_0xe510ca,'request\x20sent',JSON[_0x6c1c('0xe')](_0x3ca985));if(_0x3ca985[_0x6c1c('0xf')]){if(_0x3ca985[_0x6c1c('0xf')]['code']===0x1f4){logger[_0x6c1c('0xf')](_0x6c1c('0xa'),_0xe510ca,_0x3ca985[_0x6c1c('0xf')]['message']);return _0x2cec58(_0x3ca985[_0x6c1c('0xf')]['message']);}logger[_0x6c1c('0xf')](_0x6c1c('0xa'),_0xe510ca,_0x3ca985[_0x6c1c('0xf')][_0x6c1c('0x10')]);return _0x38369d(_0x3ca985[_0x6c1c('0xf')][_0x6c1c('0x10')]);}else{logger[_0x6c1c('0x11')](_0x6c1c('0xa'),_0xe510ca,_0x6c1c('0xb'));_0x38369d(_0x3ca985['result'][_0x6c1c('0x10')]);}})[_0x6c1c('0x12')](function(_0x5214ee){logger[_0x6c1c('0xf')](_0x6c1c('0xa'),_0xe510ca,_0x5214ee);_0x2cec58(_0x5214ee);});});}
\ No newline at end of file
+var _0x5496=['../../mysqldb','../../config/logger','rpc','../../config/environment','http','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x1c1eee,_0x5a36ba){var _0x1ab9ac=function(_0x3173b2){while(--_0x3173b2){_0x1c1eee['push'](_0x1c1eee['shift']());}};_0x1ab9ac(++_0x5a36ba);}(_0x5496,0x175));var _0x6549=function(_0x305b0c,_0x35005e){_0x305b0c=_0x305b0c-0x0;var _0x416944=_0x5496[_0x305b0c];return _0x416944;};'use strict';var _=require(_0x6549('0x0'));var util=require(_0x6549('0x1'));var moment=require(_0x6549('0x2'));var BPromise=require(_0x6549('0x3'));var rs=require(_0x6549('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6549('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6549('0x6'))(_0x6549('0x7'));var config=require(_0x6549('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x6549('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1d8cea,_0x4fcffd,_0x1ca8fc){return new BPromise(function(_0x3442c3,_0x1ef2a6){return client['request'](_0x1d8cea,_0x1ca8fc)[_0x6549('0xa')](function(_0x35d008){logger[_0x6549('0xb')](_0x6549('0xc'),_0x4fcffd,_0x6549('0xd'));logger[_0x6549('0xe')]('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x4fcffd,'request\x20sent',JSON[_0x6549('0xf')](_0x35d008));if(_0x35d008[_0x6549('0x10')]){if(_0x35d008[_0x6549('0x10')][_0x6549('0x11')]===0x1f4){logger[_0x6549('0x10')]('JscriptySessionReport,\x20%s,\x20%s',_0x4fcffd,_0x35d008['error'][_0x6549('0x12')]);return _0x1ef2a6(_0x35d008[_0x6549('0x10')]['message']);}logger[_0x6549('0x10')](_0x6549('0xc'),_0x4fcffd,_0x35d008[_0x6549('0x10')][_0x6549('0x12')]);return _0x3442c3(_0x35d008[_0x6549('0x10')][_0x6549('0x12')]);}else{logger['info']('JscriptySessionReport,\x20%s,\x20%s',_0x4fcffd,_0x6549('0xd'));_0x3442c3(_0x35d008[_0x6549('0x13')]['message']);}})[_0x6549('0x14')](function(_0x67acc0){logger[_0x6549('0x10')](_0x6549('0xc'),_0x4fcffd,_0x67acc0);_0x1ef2a6(_0x67acc0);});});}
\ No newline at end of file
index df5999f..09a7946 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3878=['index','/:id','isAuthenticated','update','/download_log_file','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./license.controller','get'];(function(_0x3227c1,_0x4318c5){var _0x31fd48=function(_0x5c5850){while(--_0x5c5850){_0x3227c1['push'](_0x3227c1['shift']());}};_0x31fd48(++_0x4318c5);}(_0x3878,0x6c));var _0x8387=function(_0x43e885,_0x5700f1){_0x43e885=_0x43e885-0x0;var _0x18df65=_0x3878[_0x43e885];return _0x18df65;};'use strict';var multer=require(_0x8387('0x0'));var util=require(_0x8387('0x1'));var path=require(_0x8387('0x2'));var timeout=require(_0x8387('0x3'));var express=require(_0x8387('0x4'));var router=express['Router']();var fs_extra=require(_0x8387('0x5'));var auth=require(_0x8387('0x6'));var interaction=require(_0x8387('0x7'));var config=require(_0x8387('0x8'));var controller=require(_0x8387('0x9'));router[_0x8387('0xa')]('/',controller[_0x8387('0xb')]);router['put'](_0x8387('0xc'),auth[_0x8387('0xd')](),controller[_0x8387('0xe')]);router[_0x8387('0xa')](_0x8387('0xf'),auth[_0x8387('0xd')](),controller['downloadLogFile']);module[_0x8387('0x10')]=router;
\ No newline at end of file
+var _0x72e6=['exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./license.controller','get','index','/:id','isAuthenticated','/download_log_file','downloadLogFile'];(function(_0x59c6f8,_0x26ea70){var _0x4735d4=function(_0x193212){while(--_0x193212){_0x59c6f8['push'](_0x59c6f8['shift']());}};_0x4735d4(++_0x26ea70);}(_0x72e6,0x121));var _0x672e=function(_0xdbb71d,_0x1a20e7){_0xdbb71d=_0xdbb71d-0x0;var _0x3c1545=_0x72e6[_0xdbb71d];return _0x3c1545;};'use strict';var multer=require('multer');var util=require(_0x672e('0x0'));var path=require(_0x672e('0x1'));var timeout=require(_0x672e('0x2'));var express=require(_0x672e('0x3'));var router=express['Router']();var fs_extra=require(_0x672e('0x4'));var auth=require(_0x672e('0x5'));var interaction=require(_0x672e('0x6'));var config=require(_0x672e('0x7'));var controller=require(_0x672e('0x8'));router[_0x672e('0x9')]('/',controller[_0x672e('0xa')]);router['put'](_0x672e('0xb'),auth[_0x672e('0xc')](),controller['update']);router['get'](_0x672e('0xd'),auth[_0x672e('0xc')](),controller[_0x672e('0xe')]);module[_0x672e('0xf')]=router;
\ No newline at end of file
index f1e9784..807b6d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf436=['sequelize','exports','TEXT','STRING'];(function(_0x4baac8,_0x5f1dc7){var _0x56ebc5=function(_0x23d717){while(--_0x23d717){_0x4baac8['push'](_0x4baac8['shift']());}};_0x56ebc5(++_0x5f1dc7);}(_0xf436,0x88));var _0x6f43=function(_0x18453e,_0x1f321a){_0x18453e=_0x18453e-0x0;var _0x3b8306=_0xf436[_0x18453e];return _0x3b8306;};'use strict';var Sequelize=require(_0x6f43('0x0'));module[_0x6f43('0x1')]={'license':{'type':Sequelize[_0x6f43('0x2')]},'data1':{'type':Sequelize[_0x6f43('0x3')]},'data2':{'type':Sequelize[_0x6f43('0x3')]},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2d7e=['sequelize','STRING','INTEGER'];(function(_0x2f5598,_0x453f83){var _0x53fdd3=function(_0xd7f923){while(--_0xd7f923){_0x2f5598['push'](_0x2f5598['shift']());}};_0x53fdd3(++_0x453f83);}(_0x2d7e,0xc9));var _0xe2d7=function(_0x1e3671,_0x9ae4fc){_0x1e3671=_0x1e3671-0x0;var _0x48d5f5=_0x2d7e[_0x1e3671];return _0x48d5f5;};'use strict';var Sequelize=require(_0xe2d7('0x0'));module['exports']={'license':{'type':Sequelize['TEXT']},'data1':{'type':Sequelize[_0xe2d7('0x1')]},'data2':{'type':Sequelize[_0xe2d7('0x1')]},'chatLicenseExceeded':{'type':Sequelize[_0xe2d7('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 33813db..de46924 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4655=['api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','model','License','rawAttributes','query','keys','filters','intersection','attributes','fields','length','merge','getLicense','catch','body','find','params','checkLicense','key','downloadLogFile','join','/var','xcally','setHeader','Content-disposition','attachment;\x20filename=','text/plain','download','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','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'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4655,0xc2));var _0x5465=function(_0x3e6d3d,_0xd16f2e){_0x3e6d3d=_0x3e6d3d-0x0;var _0x34b4f0=_0x4655[_0x3e6d3d];return _0x34b4f0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5465('0x0'));var zipdir=require(_0x5465('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5465('0x2'));var moment=require(_0x5465('0x3'));var BPromise=require(_0x5465('0x4'));var Mustache=require(_0x5465('0x5'));var util=require(_0x5465('0x6'));var path=require(_0x5465('0x7'));var sox=require('sox');var csv=require(_0x5465('0x8'));var ejs=require(_0x5465('0x9'));var fs=require('fs');var fs_extra=require(_0x5465('0xa'));var _=require(_0x5465('0xb'));var squel=require(_0x5465('0xc'));var crypto=require('crypto');var jsforce=require(_0x5465('0xd'));var deskjs=require(_0x5465('0xe'));var toCsv=require(_0x5465('0x8'));var querystring=require(_0x5465('0xf'));var Papa=require(_0x5465('0x10'));var Redis=require(_0x5465('0x11'));var authService=require(_0x5465('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x5465('0x13'));var hardwareService=require(_0x5465('0x14'));var logger=require(_0x5465('0x15'))(_0x5465('0x16'));var utils=require(_0x5465('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x5465('0x18'));var db=require(_0x5465('0x19'))['db'];function respondWithStatusCode(_0x137c14,_0x28fc37){_0x28fc37=_0x28fc37||0xcc;return function(_0xf20563){if(_0xf20563){return _0x137c14[_0x5465('0x1a')](_0x28fc37);}return _0x137c14[_0x5465('0x1b')](_0x28fc37)[_0x5465('0x1c')]();};}function respondWithResult(_0x2a2b72,_0x4483e7){_0x4483e7=_0x4483e7||0xc8;return function(_0xbab9c5){if(_0xbab9c5){return _0x2a2b72[_0x5465('0x1b')](_0x4483e7)[_0x5465('0x1d')](_0xbab9c5);}};}function respondWithFilteredResult(_0x2f22f9,_0x4bf82e){return function(_0xf415b4){if(_0xf415b4){var _0x525dd0=typeof _0x4bf82e['offset']===_0x5465('0x1e')&&typeof _0x4bf82e['limit']==='undefined';var _0x494e32=_0xf415b4[_0x5465('0x1f')];var _0x484bf0=_0x525dd0?0x0:_0x4bf82e[_0x5465('0x20')];var _0x28dc20=_0x525dd0?_0xf415b4[_0x5465('0x1f')]:_0x4bf82e['offset']+_0x4bf82e[_0x5465('0x21')];var _0x191ba3;if(_0x28dc20>=_0x494e32){_0x28dc20=_0x494e32;_0x191ba3=0xc8;}else{_0x191ba3=0xce;}_0x2f22f9['status'](_0x191ba3);return _0x2f22f9['set'](_0x5465('0x22'),_0x484bf0+'-'+_0x28dc20+'/'+_0x494e32)[_0x5465('0x1d')](_0xf415b4);}return null;};}function patchUpdates(_0x498ce6){return function(_0x2e14d4){try{jsonpatch['apply'](_0x2e14d4,_0x498ce6,!![]);}catch(_0x2bd021){return BPromise[_0x5465('0x23')](_0x2bd021);}return _0x2e14d4[_0x5465('0x24')]();};}function saveUpdates(_0x167361,_0xcafc60){return function(_0x1d32c5){if(_0x1d32c5){return _0x1d32c5[_0x5465('0x25')](_0x167361)[_0x5465('0x26')](function(_0x176868){return _0x176868;});}return null;};}function removeEntity(_0x22d728,_0x203125){return function(_0x5197a4){if(_0x5197a4){return _0x5197a4[_0x5465('0x27')]()['then'](function(){_0x22d728[_0x5465('0x1b')](0xcc)[_0x5465('0x1c')]();});}};}function handleEntityNotFound(_0x3200aa,_0x4825c0){return function(_0x5ced6e){if(!_0x5ced6e){_0x3200aa['sendStatus'](0x194);}return _0x5ced6e;};}function handleError(_0x4e9d23,_0x28d755){_0x28d755=_0x28d755||0x1f4;return function(_0x2a0009){logger[_0x5465('0x28')](_0x2a0009[_0x5465('0x29')]);if(_0x2a0009[_0x5465('0x2a')]){delete _0x2a0009[_0x5465('0x2a')];}_0x4e9d23[_0x5465('0x1b')](_0x28d755)[_0x5465('0x2b')](_0x2a0009);};}var utilLicense=require('../../config/license/util');exports[_0x5465('0x2c')]=function(_0x21c72c,_0x227c2e){var _0x601e6c={'raw':!![],'where':{'id':0x1}},_0x8acea9={};_0x8acea9[_0x5465('0x2d')]=_['keys'](db[_0x5465('0x2e')][_0x5465('0x2f')]);_0x8acea9[_0x5465('0x30')]=_[_0x5465('0x31')](_0x21c72c['query']);_0x8acea9[_0x5465('0x32')]=_[_0x5465('0x33')](_0x8acea9[_0x5465('0x2d')],_0x8acea9[_0x5465('0x30')]);_0x601e6c[_0x5465('0x34')]=_['intersection'](_0x8acea9[_0x5465('0x2d')],qs[_0x5465('0x35')](_0x21c72c['query'][_0x5465('0x35')]));_0x601e6c[_0x5465('0x34')]=_0x601e6c[_0x5465('0x34')][_0x5465('0x36')]?_0x601e6c['attributes']:_0x8acea9['model'];_0x601e6c=_[_0x5465('0x37')]({},_0x601e6c,_0x21c72c['options']);return utilLicense[_0x5465('0x38')](_0x601e6c)[_0x5465('0x26')](respondWithResult(_0x227c2e,null))[_0x5465('0x39')](handleError(_0x227c2e,null));};exports[_0x5465('0x25')]=function(_0x32150b,_0x4dd06b){if(_0x32150b[_0x5465('0x3a')]['id']){delete _0x32150b['body']['id'];}return db[_0x5465('0x2e')][_0x5465('0x3b')]({'where':{'id':_0x32150b[_0x5465('0x3c')]['id']}})[_0x5465('0x26')](handleEntityNotFound(_0x4dd06b,null))['then'](function(_0x5f2960){var _0x10986e=_0x5f2960['get']({'plain':!![]});return utilLicense[_0x5465('0x3d')](_0x10986e,_0x32150b[_0x5465('0x3a')][_0x5465('0x3e')]);})[_0x5465('0x26')](function(_0x84fa6){if(!_0x84fa6['demo']){return saveUpdates(_0x32150b[_0x5465('0x3a')],null);}return _0x84fa6;})[_0x5465('0x26')](respondWithResult(_0x4dd06b,null))['catch'](handleError(_0x4dd06b,null));};exports[_0x5465('0x3f')]=function(_0x3e1028,_0x22bd96){var _0x333015='license-info.log';var _0x3d05d0=path[_0x5465('0x40')](_0x5465('0x41'),'log',_0x5465('0x42'),_0x333015);_0x22bd96[_0x5465('0x43')](_0x5465('0x44'),_0x5465('0x45')+_0x333015);_0x22bd96['set']('Content-Type',_0x5465('0x46'));_0x22bd96[_0x5465('0x47')](_0x3d05d0);};
\ No newline at end of file
+var _0x454f=['undefined','limit','count','set','json','apply','save','update','then','destroy','error','stack','name','send','index','model','keys','License','rawAttributes','query','filters','intersection','attributes','fields','length','options','getLicense','body','find','params','get','checkLicense','catch','downloadLogFile','license-info.log','join','/var','log','setHeader','Content-disposition','attachment;\x20filename=','text/plain','download','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset'];(function(_0x2e79f3,_0x1a3775){var _0x4f686b=function(_0x2ad232){while(--_0x2ad232){_0x2e79f3['push'](_0x2e79f3['shift']());}};_0x4f686b(++_0x1a3775);}(_0x454f,0x6e));var _0xf454=function(_0x4c24ef,_0x295b54){_0x4c24ef=_0x4c24ef-0x0;var _0x2409d4=_0x454f[_0x4c24ef];return _0x2409d4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf454('0x0'));var zipdir=require(_0xf454('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf454('0x2'));var moment=require(_0xf454('0x3'));var BPromise=require(_0xf454('0x4'));var Mustache=require(_0xf454('0x5'));var util=require(_0xf454('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xf454('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xf454('0x8'));var crypto=require(_0xf454('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xf454('0xa'));var toCsv=require(_0xf454('0x7'));var querystring=require(_0xf454('0xb'));var Papa=require('papaparse');var Redis=require(_0xf454('0xc'));var authService=require(_0xf454('0xd'));var qs=require(_0xf454('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf454('0xf'));var logger=require('../../config/logger')('api');var utils=require(_0xf454('0x10'));var config=require(_0xf454('0x11'));var licenseUtil=require(_0xf454('0x12'));var db=require(_0xf454('0x13'))['db'];function respondWithStatusCode(_0x55d19a,_0x206723){_0x206723=_0x206723||0xcc;return function(_0x4b04c7){if(_0x4b04c7){return _0x55d19a[_0xf454('0x14')](_0x206723);}return _0x55d19a[_0xf454('0x15')](_0x206723)[_0xf454('0x16')]();};}function respondWithResult(_0x4d6d42,_0x51ef88){_0x51ef88=_0x51ef88||0xc8;return function(_0x3e8103){if(_0x3e8103){return _0x4d6d42['status'](_0x51ef88)['json'](_0x3e8103);}};}function respondWithFilteredResult(_0x1c212c,_0x17cfa0){return function(_0x79f221){if(_0x79f221){var _0x277121=typeof _0x17cfa0[_0xf454('0x17')]===_0xf454('0x18')&&typeof _0x17cfa0[_0xf454('0x19')]===_0xf454('0x18');var _0x2ecfe5=_0x79f221[_0xf454('0x1a')];var _0x10cf27=_0x277121?0x0:_0x17cfa0[_0xf454('0x17')];var _0x42ea47=_0x277121?_0x79f221[_0xf454('0x1a')]:_0x17cfa0['offset']+_0x17cfa0[_0xf454('0x19')];var _0x9bb618;if(_0x42ea47>=_0x2ecfe5){_0x42ea47=_0x2ecfe5;_0x9bb618=0xc8;}else{_0x9bb618=0xce;}_0x1c212c[_0xf454('0x15')](_0x9bb618);return _0x1c212c[_0xf454('0x1b')]('Content-Range',_0x10cf27+'-'+_0x42ea47+'/'+_0x2ecfe5)[_0xf454('0x1c')](_0x79f221);}return null;};}function patchUpdates(_0x3e62f3){return function(_0x2ef1a1){try{jsonpatch[_0xf454('0x1d')](_0x2ef1a1,_0x3e62f3,!![]);}catch(_0x2421ac){return BPromise['reject'](_0x2421ac);}return _0x2ef1a1[_0xf454('0x1e')]();};}function saveUpdates(_0x3d25fe,_0x16ff3e){return function(_0x3a4d00){if(_0x3a4d00){return _0x3a4d00[_0xf454('0x1f')](_0x3d25fe)[_0xf454('0x20')](function(_0x1635c2){return _0x1635c2;});}return null;};}function removeEntity(_0x1a591a,_0x45808c){return function(_0x1e5774){if(_0x1e5774){return _0x1e5774[_0xf454('0x21')]()[_0xf454('0x20')](function(){_0x1a591a[_0xf454('0x15')](0xcc)[_0xf454('0x16')]();});}};}function handleEntityNotFound(_0x4f87e3,_0x350a57){return function(_0x2dea82){if(!_0x2dea82){_0x4f87e3[_0xf454('0x14')](0x194);}return _0x2dea82;};}function handleError(_0x59b7a4,_0x432a9c){_0x432a9c=_0x432a9c||0x1f4;return function(_0x43b775){logger[_0xf454('0x22')](_0x43b775[_0xf454('0x23')]);if(_0x43b775['name']){delete _0x43b775[_0xf454('0x24')];}_0x59b7a4[_0xf454('0x15')](_0x432a9c)[_0xf454('0x25')](_0x43b775);};}var utilLicense=require(_0xf454('0x12'));exports[_0xf454('0x26')]=function(_0x3146ce,_0x384dcf){var _0x55edcf={'raw':!![],'where':{'id':0x1}},_0x494f22={};_0x494f22[_0xf454('0x27')]=_[_0xf454('0x28')](db[_0xf454('0x29')][_0xf454('0x2a')]);_0x494f22[_0xf454('0x2b')]=_['keys'](_0x3146ce[_0xf454('0x2b')]);_0x494f22[_0xf454('0x2c')]=_[_0xf454('0x2d')](_0x494f22['model'],_0x494f22[_0xf454('0x2b')]);_0x55edcf[_0xf454('0x2e')]=_[_0xf454('0x2d')](_0x494f22[_0xf454('0x27')],qs['fields'](_0x3146ce[_0xf454('0x2b')][_0xf454('0x2f')]));_0x55edcf['attributes']=_0x55edcf[_0xf454('0x2e')][_0xf454('0x30')]?_0x55edcf['attributes']:_0x494f22[_0xf454('0x27')];_0x55edcf=_['merge']({},_0x55edcf,_0x3146ce[_0xf454('0x31')]);return utilLicense[_0xf454('0x32')](_0x55edcf)[_0xf454('0x20')](respondWithResult(_0x384dcf,null))['catch'](handleError(_0x384dcf,null));};exports[_0xf454('0x1f')]=function(_0x107fb1,_0xfc7708){if(_0x107fb1['body']['id']){delete _0x107fb1[_0xf454('0x33')]['id'];}return db['License'][_0xf454('0x34')]({'where':{'id':_0x107fb1[_0xf454('0x35')]['id']}})['then'](handleEntityNotFound(_0xfc7708,null))['then'](function(_0x2f0a6d){var _0x11114d=_0x2f0a6d[_0xf454('0x36')]({'plain':!![]});return utilLicense[_0xf454('0x37')](_0x11114d,_0x107fb1[_0xf454('0x33')]['key']);})[_0xf454('0x20')](function(_0x304c25){if(!_0x304c25['demo']){return saveUpdates(_0x107fb1[_0xf454('0x33')],null);}return _0x304c25;})[_0xf454('0x20')](respondWithResult(_0xfc7708,null))[_0xf454('0x38')](handleError(_0xfc7708,null));};exports[_0xf454('0x39')]=function(_0xf87847,_0x5df322){var _0x158ff1=_0xf454('0x3a');var _0x3b75fb=path[_0xf454('0x3b')](_0xf454('0x3c'),_0xf454('0x3d'),'xcally',_0x158ff1);_0x5df322[_0xf454('0x3e')](_0xf454('0x3f'),_0xf454('0x40')+_0x158ff1);_0x5df322['set']('Content-Type',_0xf454('0x41'));_0x5df322[_0xf454('0x42')](_0x3b75fb);};
\ No newline at end of file
index 0ab1ba9..6b417d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41b8=['./license.attributes','exports','define','License','license','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment'];(function(_0x3a3041,_0x2e6118){var _0x136988=function(_0x2b501c){while(--_0x2b501c){_0x3a3041['push'](_0x3a3041['shift']());}};_0x136988(++_0x2e6118);}(_0x41b8,0x94));var _0x841b=function(_0x362e87,_0x38d17c){_0x362e87=_0x362e87-0x0;var _0x334244=_0x41b8[_0x362e87];return _0x334244;};'use strict';var _=require(_0x841b('0x0'));var util=require(_0x841b('0x1'));var logger=require(_0x841b('0x2'))(_0x841b('0x3'));var moment=require(_0x841b('0x4'));var BPromise=require(_0x841b('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x841b('0x6'));var config=require(_0x841b('0x7'));var attributes=require(_0x841b('0x8'));module[_0x841b('0x9')]=function(_0x5f052c,_0x384b02){return _0x5f052c[_0x841b('0xa')](_0x841b('0xb'),attributes,{'tableName':_0x841b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2f9b=['lodash','moment','request-promise','path','rimraf','../../config/environment','./license.attributes','exports','define','License','license'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x2f9b,0x1b8));var _0xb2f9=function(_0x97624c,_0x4b5b52){_0x97624c=_0x97624c-0x0;var _0x3af835=_0x2f9b[_0x97624c];return _0x3af835;};'use strict';var _=require(_0xb2f9('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xb2f9('0x1'));var BPromise=require('bluebird');var rp=require(_0xb2f9('0x2'));var fs=require('fs');var path=require(_0xb2f9('0x3'));var rimraf=require(_0xb2f9('0x4'));var config=require(_0xb2f9('0x5'));var attributes=require(_0xb2f9('0x6'));module[_0xb2f9('0x7')]=function(_0x2e5807,_0x5e5068){return _0x2e5807[_0xb2f9('0x8')](_0xb2f9('0x9'),attributes,{'tableName':_0xb2f9('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1e4bdd2..b980f63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2f3=['stringify','error','code','message','info','result','catch','lodash','util','moment','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','License,\x20%s,\x20%s','debug','License,\x20%s,\x20%s,\x20%s'];(function(_0x3ef25e,_0x4d2eaf){var _0x2ec94c=function(_0xbcaa5d){while(--_0xbcaa5d){_0x3ef25e['push'](_0x3ef25e['shift']());}};_0x2ec94c(++_0x4d2eaf);}(_0xe2f3,0xe3));var _0x3e2f=function(_0x3fd50c,_0x1b41ed){_0x3fd50c=_0x3fd50c-0x0;var _0x4cebb2=_0xe2f3[_0x3fd50c];return _0x4cebb2;};'use strict';var _=require(_0x3e2f('0x0'));var util=require(_0x3e2f('0x1'));var moment=require(_0x3e2f('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(_0x3e2f('0x3'));var logger=require(_0x3e2f('0x4'))(_0x3e2f('0x5'));var config=require(_0x3e2f('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3e2f('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1df51c,_0x582017,_0x2f7daa){return new BPromise(function(_0x17285d,_0x27388e){return client[_0x3e2f('0x8')](_0x1df51c,_0x2f7daa)[_0x3e2f('0x9')](function(_0xcae9c6){logger['info'](_0x3e2f('0xa'),_0x582017,'request\x20sent');logger[_0x3e2f('0xb')](_0x3e2f('0xc'),_0x582017,'request\x20sent',JSON[_0x3e2f('0xd')](_0xcae9c6));if(_0xcae9c6[_0x3e2f('0xe')]){if(_0xcae9c6[_0x3e2f('0xe')][_0x3e2f('0xf')]===0x1f4){logger[_0x3e2f('0xe')]('License,\x20%s,\x20%s',_0x582017,_0xcae9c6[_0x3e2f('0xe')][_0x3e2f('0x10')]);return _0x27388e(_0xcae9c6[_0x3e2f('0xe')]['message']);}logger[_0x3e2f('0xe')](_0x3e2f('0xa'),_0x582017,_0xcae9c6[_0x3e2f('0xe')]['message']);return _0x17285d(_0xcae9c6[_0x3e2f('0xe')]['message']);}else{logger[_0x3e2f('0x11')]('License,\x20%s,\x20%s',_0x582017,'request\x20sent');_0x17285d(_0xcae9c6[_0x3e2f('0x12')][_0x3e2f('0x10')]);}})[_0x3e2f('0x13')](function(_0x47c3d5){logger['error'](_0x3e2f('0xa'),_0x582017,_0x47c3d5);_0x27388e(_0x47c3d5);});});}
\ No newline at end of file
+var _0x16ef=['message','catch','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','request','info','License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x511bd1,_0x223e5b){var _0x4c48ec=function(_0x31814e){while(--_0x31814e){_0x511bd1['push'](_0x511bd1['shift']());}};_0x4c48ec(++_0x223e5b);}(_0x16ef,0x80));var _0xf16e=function(_0x1e5cc0,_0x5260ec){_0x1e5cc0=_0x1e5cc0-0x0;var _0x3b6f1b=_0x16ef[_0x1e5cc0];return _0x3b6f1b;};'use strict';var _=require('lodash');var util=require(_0xf16e('0x0'));var moment=require(_0xf16e('0x1'));var BPromise=require(_0xf16e('0x2'));var rs=require(_0xf16e('0x3'));var fs=require('fs');var Redis=require(_0xf16e('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xf16e('0x5'))(_0xf16e('0x6'));var config=require(_0xf16e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf16e('0x8')][_0xf16e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x13a2ca,_0x5eec63,_0x443d69){return new BPromise(function(_0x41e0e9,_0x3990fc){return client[_0xf16e('0xa')](_0x13a2ca,_0x443d69)['then'](function(_0x2a8231){logger[_0xf16e('0xb')](_0xf16e('0xc'),_0x5eec63,_0xf16e('0xd'));logger[_0xf16e('0xe')](_0xf16e('0xf'),_0x5eec63,_0xf16e('0xd'),JSON[_0xf16e('0x10')](_0x2a8231));if(_0x2a8231[_0xf16e('0x11')]){if(_0x2a8231[_0xf16e('0x11')][_0xf16e('0x12')]===0x1f4){logger[_0xf16e('0x11')](_0xf16e('0xc'),_0x5eec63,_0x2a8231[_0xf16e('0x11')]['message']);return _0x3990fc(_0x2a8231[_0xf16e('0x11')][_0xf16e('0x13')]);}logger['error'](_0xf16e('0xc'),_0x5eec63,_0x2a8231[_0xf16e('0x11')][_0xf16e('0x13')]);return _0x41e0e9(_0x2a8231['error'][_0xf16e('0x13')]);}else{logger[_0xf16e('0xb')]('License,\x20%s,\x20%s',_0x5eec63,'request\x20sent');_0x41e0e9(_0x2a8231['result'][_0xf16e('0x13')]);}})[_0xf16e('0x14')](function(_0x11dfb2){logger[_0xf16e('0x11')](_0xf16e('0xc'),_0x5eec63,_0x11dfb2);_0x3990fc(_0x11dfb2);});});}
\ No newline at end of file
index 836628d..72be591 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8eb=['connect-timeout','express','fs-extra','../../components/interaction/service','./mailAccount.controller','get','isAuthenticated','describe','/:id','/:id/dispositions','getDispositions','getAnswers','getImap','/:id/out_servers','getSmtp','/:id/applications','/:id/messages','verifySmtp','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','/:id/in_servers','addImap','addSmtp','/:id/interactions','addInteraction','addApplications','/:id/send','send','addAgents','put','update','delete','removeDispositions','removeAnswers','removeSmtp','multer','util','path'];(function(_0xa1b0d4,_0xbeba0){var _0x19f06c=function(_0x172a9a){while(--_0x172a9a){_0xa1b0d4['push'](_0xa1b0d4['shift']());}};_0x19f06c(++_0xbeba0);}(_0xb8eb,0xf9));var _0xbb8e=function(_0x47a518,_0x5c9ca6){_0x47a518=_0x47a518-0x0;var _0x3f4cbf=_0xb8eb[_0x47a518];return _0x3f4cbf;};'use strict';var multer=require(_0xbb8e('0x0'));var util=require(_0xbb8e('0x1'));var path=require(_0xbb8e('0x2'));var timeout=require(_0xbb8e('0x3'));var express=require(_0xbb8e('0x4'));var router=express['Router']();var fs_extra=require(_0xbb8e('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xbb8e('0x6'));var config=require('../../config/environment');var controller=require(_0xbb8e('0x7'));router[_0xbb8e('0x8')]('/',auth[_0xbb8e('0x9')](),controller['index']);router[_0xbb8e('0x8')]('/describe',auth[_0xbb8e('0x9')](),controller[_0xbb8e('0xa')]);router[_0xbb8e('0x8')](_0xbb8e('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xbb8e('0x8')](_0xbb8e('0xc'),auth['isAuthenticated'](),controller[_0xbb8e('0xd')]);router[_0xbb8e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0xbb8e('0xe')]);router[_0xbb8e('0x8')]('/:id/in_servers',auth[_0xbb8e('0x9')](),controller[_0xbb8e('0xf')]);router[_0xbb8e('0x8')](_0xbb8e('0x10'),auth[_0xbb8e('0x9')](),controller[_0xbb8e('0x11')]);router[_0xbb8e('0x8')]('/:id/interactions',auth['isAuthenticated'](),controller['getInteractions']);router[_0xbb8e('0x8')](_0xbb8e('0x12'),auth[_0xbb8e('0x9')](),controller['getApplications']);router[_0xbb8e('0x8')](_0xbb8e('0x13'),auth[_0xbb8e('0x9')](),controller['getMessages']);router['get']('/:id/verify',auth[_0xbb8e('0x9')](),controller[_0xbb8e('0x14')]);router[_0xbb8e('0x8')](_0xbb8e('0x15'),auth[_0xbb8e('0x9')](),controller[_0xbb8e('0x16')]);router[_0xbb8e('0x17')](_0xbb8e('0xc'),auth[_0xbb8e('0x9')](),controller[_0xbb8e('0x18')]);router['post'](_0xbb8e('0x19'),auth['isAuthenticated'](),controller[_0xbb8e('0x1a')]);router[_0xbb8e('0x17')]('/',auth[_0xbb8e('0x9')](),controller['create']);router['post'](_0xbb8e('0x1b'),auth[_0xbb8e('0x9')](),controller[_0xbb8e('0x1c')]);router[_0xbb8e('0x17')](_0xbb8e('0x10'),auth[_0xbb8e('0x9')](),controller[_0xbb8e('0x1d')]);router[_0xbb8e('0x17')](_0xbb8e('0x1e'),auth[_0xbb8e('0x9')](),controller[_0xbb8e('0x1f')]);router['post']('/:id/applications',auth[_0xbb8e('0x9')](),controller[_0xbb8e('0x20')]);router[_0xbb8e('0x17')](_0xbb8e('0x21'),auth[_0xbb8e('0x9')](),controller[_0xbb8e('0x22')]);router[_0xbb8e('0x17')](_0xbb8e('0x15'),auth[_0xbb8e('0x9')](),controller[_0xbb8e('0x23')]);router[_0xbb8e('0x24')](_0xbb8e('0xb'),auth['isAuthenticated'](),controller[_0xbb8e('0x25')]);router[_0xbb8e('0x26')](_0xbb8e('0xc'),auth[_0xbb8e('0x9')](),controller[_0xbb8e('0x27')]);router[_0xbb8e('0x26')]('/:id/canned_answers',auth[_0xbb8e('0x9')](),controller[_0xbb8e('0x28')]);router[_0xbb8e('0x26')](_0xbb8e('0x1b'),auth['isAuthenticated'](),controller['removeImap']);router['delete'](_0xbb8e('0x10'),auth[_0xbb8e('0x9')](),controller[_0xbb8e('0x29')]);router[_0xbb8e('0x26')]('/:id',auth[_0xbb8e('0x9')](),controller['destroy']);router['delete']('/:id/users',auth[_0xbb8e('0x9')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x8770=['create','addInteraction','/:id/applications','addApplications','send','addAgents','/:id','delete','removeImap','removeSmtp','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailAccount.controller','isAuthenticated','index','/describe','describe','get','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/in_servers','getImap','/:id/out_servers','getSmtp','/:id/interactions','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp','/:id/users','getAgents','post','addAnswer'];(function(_0x491a7f,_0x28bb80){var _0x3d8f44=function(_0xdaa716){while(--_0xdaa716){_0x491a7f['push'](_0x491a7f['shift']());}};_0x3d8f44(++_0x28bb80);}(_0x8770,0x114));var _0x0877=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8770[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0877('0x0'));var util=require(_0x0877('0x1'));var path=require('path');var timeout=require(_0x0877('0x2'));var express=require(_0x0877('0x3'));var router=express[_0x0877('0x4')]();var fs_extra=require(_0x0877('0x5'));var auth=require(_0x0877('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x0877('0x7'));var controller=require(_0x0877('0x8'));router['get']('/',auth[_0x0877('0x9')](),controller[_0x0877('0xa')]);router['get'](_0x0877('0xb'),auth[_0x0877('0x9')](),controller[_0x0877('0xc')]);router[_0x0877('0xd')]('/:id',auth[_0x0877('0x9')](),controller[_0x0877('0xe')]);router[_0x0877('0xd')](_0x0877('0xf'),auth[_0x0877('0x9')](),controller['getDispositions']);router['get'](_0x0877('0x10'),auth['isAuthenticated'](),controller[_0x0877('0x11')]);router[_0x0877('0xd')](_0x0877('0x12'),auth[_0x0877('0x9')](),controller[_0x0877('0x13')]);router[_0x0877('0xd')](_0x0877('0x14'),auth['isAuthenticated'](),controller[_0x0877('0x15')]);router[_0x0877('0xd')](_0x0877('0x16'),auth[_0x0877('0x9')](),controller['getInteractions']);router[_0x0877('0xd')]('/:id/applications',auth[_0x0877('0x9')](),controller[_0x0877('0x17')]);router[_0x0877('0xd')](_0x0877('0x18'),auth[_0x0877('0x9')](),controller[_0x0877('0x19')]);router[_0x0877('0xd')](_0x0877('0x1a'),auth[_0x0877('0x9')](),controller[_0x0877('0x1b')]);router['get'](_0x0877('0x1c'),auth[_0x0877('0x9')](),controller[_0x0877('0x1d')]);router['post'](_0x0877('0xf'),auth[_0x0877('0x9')](),controller['addDisposition']);router[_0x0877('0x1e')](_0x0877('0x10'),auth['isAuthenticated'](),controller[_0x0877('0x1f')]);router[_0x0877('0x1e')]('/',auth[_0x0877('0x9')](),controller[_0x0877('0x20')]);router[_0x0877('0x1e')](_0x0877('0x12'),auth[_0x0877('0x9')](),controller['addImap']);router[_0x0877('0x1e')](_0x0877('0x14'),auth[_0x0877('0x9')](),controller['addSmtp']);router[_0x0877('0x1e')]('/:id/interactions',auth[_0x0877('0x9')](),controller[_0x0877('0x21')]);router[_0x0877('0x1e')](_0x0877('0x22'),auth[_0x0877('0x9')](),controller[_0x0877('0x23')]);router['post']('/:id/send',auth[_0x0877('0x9')](),controller[_0x0877('0x24')]);router[_0x0877('0x1e')](_0x0877('0x1c'),auth[_0x0877('0x9')](),controller[_0x0877('0x25')]);router['put'](_0x0877('0x26'),auth[_0x0877('0x9')](),controller['update']);router['delete'](_0x0877('0xf'),auth[_0x0877('0x9')](),controller['removeDispositions']);router[_0x0877('0x27')](_0x0877('0x10'),auth['isAuthenticated'](),controller['removeAnswers']);router[_0x0877('0x27')](_0x0877('0x12'),auth[_0x0877('0x9')](),controller[_0x0877('0x28')]);router[_0x0877('0x27')](_0x0877('0x14'),auth[_0x0877('0x9')](),controller[_0x0877('0x29')]);router[_0x0877('0x27')](_0x0877('0x26'),auth[_0x0877('0x9')](),controller['destroy']);router[_0x0877('0x27')](_0x0877('0x1c'),auth[_0x0877('0x9')](),controller[_0x0877('0x2a')]);module[_0x0877('0x2b')]=router;
\ No newline at end of file
index 3570331..5705736 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51fe=['Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','TEXT','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','mandatoryDispositionPauseId','mandatoryDisposition','ENUM','hotmail','yahoo','outlook365','getDataValue','custom','provider','sequelize','exports','STRING','BOOLEAN'];(function(_0x5a5109,_0x56a58e){var _0x4d270d=function(_0x10ec3e){while(--_0x10ec3e){_0x5a5109['push'](_0x5a5109['shift']());}};_0x4d270d(++_0x56a58e);}(_0x51fe,0x178));var _0xe51f=function(_0x458814,_0x2193c0){_0x458814=_0x458814-0x0;var _0x215495=_0x51fe[_0x458814];return _0x215495;};'use strict';var Sequelize=require(_0xe51f('0x0'));module[_0xe51f('0x1')]={'description':{'type':Sequelize[_0xe51f('0x2')]},'name':{'type':Sequelize[_0xe51f('0x2')],'allowNull':![]},'service':{'type':Sequelize[_0xe51f('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0xe51f('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize['TEXT']},'markAsUnread':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xe51f('0x4')},'fontSize':{'type':Sequelize[_0xe51f('0x5')](0x2)[_0xe51f('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0xe51f('0x7')],'defaultValue':function(){return _0xe51f('0x8');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xe51f('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xe51f('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xe51f('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xe51f('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xe51f('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xe51f('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xe51f('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0xe51f('0x9')},'mandatoryDisposition':{'type':Sequelize[_0xe51f('0x3')],'defaultValue':![],'comment':_0xe51f('0xa'),'set':function(_0x175821){if(!_0x175821)this['setDataValue'](_0xe51f('0xb'),null);this['setDataValue'](_0xe51f('0xc'),_0x175821);}},'provider':{'type':Sequelize[_0xe51f('0xd')]('gmail',_0xe51f('0xe'),_0xe51f('0xf'),_0xe51f('0x10')),'defaultValue':null,'get':function(){if(!this[_0xe51f('0x11')]('provider'))return _0xe51f('0x12');return this[_0xe51f('0x11')](_0xe51f('0x13'));},'set':function(_0xe26aaf){if(_0xe26aaf==='custom')_0xe26aaf=null;return this['setDataValue'](_0xe51f('0x13'),_0xe26aaf);}}};
\ No newline at end of file
+var _0x7538=['yahoo','outlook365','getDataValue','provider','custom','exports','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','hotmail'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7538,0x1a7));var _0x8753=function(_0x26c26c,_0x39f9cf){_0x26c26c=_0x26c26c-0x0;var _0x153b04=_0x7538[_0x26c26c];return _0x153b04;};'use strict';var Sequelize=require('sequelize');module[_0x8753('0x0')]={'description':{'type':Sequelize[_0x8753('0x1')]},'name':{'type':Sequelize[_0x8753('0x1')],'allowNull':![]},'service':{'type':Sequelize[_0x8753('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x8753('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize[_0x8753('0x3')]},'markAsUnread':{'type':Sequelize[_0x8753('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x8753('0x1')],'allowNull':![],'defaultValue':_0x8753('0x4')},'fontSize':{'type':Sequelize['INTEGER'](0x2)[_0x8753('0x5')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x8753('0x3')],'defaultValue':function(){return _0x8753('0x6');}},'notificationSound':{'type':Sequelize[_0x8753('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x8753('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x8753('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x8753('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x8753('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x8753('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x8753('0x8')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x8753('0x9'),'set':function(_0x3eb020){if(!_0x3eb020)this[_0x8753('0xa')](_0x8753('0xb'),null);this['setDataValue'](_0x8753('0xc'),_0x3eb020);}},'provider':{'type':Sequelize['ENUM']('gmail',_0x8753('0xd'),_0x8753('0xe'),_0x8753('0xf')),'defaultValue':null,'get':function(){if(!this[_0x8753('0x10')](_0x8753('0x11')))return _0x8753('0x12');return this[_0x8753('0x10')](_0x8753('0x11'));},'set':function(_0x19c61d){if(_0x19c61d===_0x8753('0x12'))_0x19c61d=null;return this[_0x8753('0xa')](_0x8753('0x11'),_0x19c61d);}}};
\ No newline at end of file
index 2ab6dca..86a6364 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a5f=['out','messageId','Interaction','Messages','verifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','User','getAgents','moment','bluebird','util','path','lodash','juice','ioredis','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','request','then','info','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','MailAccount,\x20%s,\x20%s','message','result','sendStatus','status','json','limit','count','offset','set','get','destroy','end','stack','name','send','gmail','yahoo','hotmail','outlook365','outlook.office365.com','Unknown\x20email\x20service\x20provider','smtp.gmail.com','smtp-mail.outlook.com','smtp.office365.com','user','username','password','pass','modernAuthentication','CloudProviderId','host','port','secure','service','authentication','Imap','Smtp','index','MailServerIn','MailServerOut','Pause','mandatoryDispositionPause','rawAttributes','fieldName','key','model','map','keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','MailAccount','findAll','rows','catch','show','includeAll','include','find','update','body','provider','Mail\x20Account\x20not\x20found','describe','addDisposition','MailAccountId','getDispositions','findOne','Disposition','hasOwnProperty','removeDispositions','params','addAnswer','create','getAnswers','CannedAnswer','removeAnswers','custom','email','ListId','isNil','active','description','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','MailAccounts','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','setImap','getSmtp','addSmtp','removeSmtp','setSmtp','addInteraction','ids','omit','getInteractions','MailInteraction','CmContact','Contact','fullname','internal','Tag','Tags','color','tag','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','MailApplication','bulkCreate','priority','finally','getApplications','getMessages','MailMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','split','CmList','List','Contacts','updatedAt','DESC','CloudProvider','Smtp\x20configuration\x20not\x20found','from','%s\x20<%s>','attachments','root','server/files/attachments','basename','getSmtpOptions','SendMail','List\x20not\x20found','subject','attach'];(function(_0x8ce506,_0x517f30){var _0x23c8e5=function(_0x1d048e){while(--_0x1d048e){_0x8ce506['push'](_0x8ce506['shift']());}};_0x23c8e5(++_0x517f30);}(_0x5a5f,0x1a1));var _0xf5a5=function(_0x11309c,_0xe18a74){_0x11309c=_0x11309c-0x0;var _0x3fea9c=_0x5a5f[_0x11309c];return _0x3fea9c;};'use strict';var moment=require(_0xf5a5('0x0'));var BPromise=require(_0xf5a5('0x1'));var util=require(_0xf5a5('0x2'));var path=require(_0xf5a5('0x3'));var _=require(_0xf5a5('0x4'));var juice=require(_0xf5a5('0x5'));var Redis=require(_0xf5a5('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0xf5a5('0x7'))('api');var config=require(_0xf5a5('0x8'));var db=require(_0xf5a5('0x9'))['db'];config[_0xf5a5('0xa')]=_[_0xf5a5('0xb')](config[_0xf5a5('0xa')],{'host':_0xf5a5('0xc'),'port':0x18eb});var socket=require(_0xf5a5('0xd'))(new Redis(config[_0xf5a5('0xa')]));require('./mailAccount.socket')[_0xf5a5('0xe')](socket);var jayson=require(_0xf5a5('0xf'));var client=jayson['client']['http']({'port':0x232b});function respondWithRpcPromise(_0xfbd655,_0x1ff020,_0x565d89,_0x87799b){return new BPromise(function(_0x5cf685,_0x361776){var _0x552aa6=_0x87799b||client;return _0x552aa6[_0xf5a5('0x10')](_0xfbd655,_0x565d89)[_0xf5a5('0x11')](function(_0x615b4d){logger[_0xf5a5('0x12')]('MailAccount,\x20%s,\x20%s',_0x1ff020,_0xf5a5('0x13'));logger[_0xf5a5('0x14')](_0xf5a5('0x15'),_0x1ff020,_0xf5a5('0x13'),JSON[_0xf5a5('0x16')](_0x615b4d));if(_0x615b4d[_0xf5a5('0x17')]){if(_0x615b4d[_0xf5a5('0x17')]['code']===0x1f4){logger[_0xf5a5('0x17')](_0xf5a5('0x18'),_0x1ff020,_0x615b4d[_0xf5a5('0x17')]['message']);return _0x361776(_0x615b4d[_0xf5a5('0x17')][_0xf5a5('0x19')]);}logger[_0xf5a5('0x17')](_0xf5a5('0x18'),_0x1ff020,_0x615b4d['error'][_0xf5a5('0x19')]);return _0x5cf685(_0x615b4d['error'][_0xf5a5('0x19')]);}else{logger[_0xf5a5('0x12')](_0xf5a5('0x18'),_0x1ff020,_0xf5a5('0x13'));_0x5cf685(_0x615b4d[_0xf5a5('0x1a')]['message']);}})['catch'](function(_0x1c05d8){logger['error'](_0xf5a5('0x18'),_0x1ff020,_0x1c05d8);_0x361776(_0x1c05d8);});});}function respondWithStatusCode(_0x1f9b86,_0x3faeb8){_0x3faeb8=_0x3faeb8||0xcc;return function(_0x6957fc){if(_0x6957fc){return _0x1f9b86[_0xf5a5('0x1b')](_0x3faeb8);}return _0x1f9b86['status'](_0x3faeb8)['end']();};}function respondWithResult(_0x1b9057,_0x1a9b27){_0x1a9b27=_0x1a9b27||0xc8;return function(_0x1517bc){if(_0x1517bc){return _0x1b9057[_0xf5a5('0x1c')](_0x1a9b27)[_0xf5a5('0x1d')](_0x1517bc);}};}function respondWithFilteredResult(_0x5d0eae,_0x344e87){return function(_0xb0fc8){if(_0xb0fc8){var _0x191857=typeof _0x344e87['offset']==='undefined'&&typeof _0x344e87[_0xf5a5('0x1e')]==='undefined';var _0x1a97de=_0xb0fc8[_0xf5a5('0x1f')];var _0x67afc1=_0x191857?0x0:_0x344e87[_0xf5a5('0x20')];var _0x26b6e3=_0x191857?_0xb0fc8['count']:_0x344e87['offset']+_0x344e87['limit'];var _0x1131ca;if(_0x26b6e3>=_0x1a97de){_0x26b6e3=_0x1a97de;_0x1131ca=0xc8;}else{_0x1131ca=0xce;}_0x5d0eae[_0xf5a5('0x1c')](_0x1131ca);return _0x5d0eae[_0xf5a5('0x21')]('Content-Range',_0x67afc1+'-'+_0x26b6e3+'/'+_0x1a97de)[_0xf5a5('0x1d')](_0xb0fc8);}return null;};}function saveUpdates(_0x52123e){return function(_0x1ac3d8){if(_0x1ac3d8){return _0x1ac3d8['update'](_0x52123e)[_0xf5a5('0x11')](function(_0x55b408){return _0x55b408;});}return null;};}function removeEntity(_0x335952){return function(_0x5e8a01){if(_0x5e8a01){return _0x5e8a01['destroy']()[_0xf5a5('0x11')](function(){var _0x2205a0=_0x5e8a01[_0xf5a5('0x22')]({'plain':!![]});var _0x388a15='MailAccounts';return db['UserProfileResource'][_0xf5a5('0x23')]({'where':{'type':_0x388a15,'resourceId':_0x2205a0['id']}})[_0xf5a5('0x11')](function(){return _0x5e8a01;});})['then'](function(){_0x335952['status'](0xcc)[_0xf5a5('0x24')]();});}};}function handleEntityNotFound(_0x5d0bbd){return function(_0x4caea4){if(!_0x4caea4){_0x5d0bbd[_0xf5a5('0x1b')](0x194);}return _0x4caea4;};}function handleError(_0x181c70,_0x5abc44){_0x5abc44=_0x5abc44||0x1f4;return function(_0x1d9138){logger['error'](_0x1d9138[_0xf5a5('0x25')]);if(_0x1d9138[_0xf5a5('0x26')]){delete _0x1d9138[_0xf5a5('0x26')];}_0x181c70[_0xf5a5('0x1c')](_0x5abc44)[_0xf5a5('0x27')](_0x1d9138);};}function getImapHost(_0x2821d6){switch(_0x2821d6){case _0xf5a5('0x28'):return'imap.gmail.com';case _0xf5a5('0x29'):return'imap.mail.yahoo.com';case _0xf5a5('0x2a'):return'imap-mail.outlook.com';case _0xf5a5('0x2b'):return _0xf5a5('0x2c');}throw new Error(_0xf5a5('0x2d'),_0x2821d6);}function getSmtpHost(_0x1788e2){switch(_0x1788e2){case _0xf5a5('0x28'):return _0xf5a5('0x2e');case _0xf5a5('0x29'):return'smtp.mail.yahoo.com';case _0xf5a5('0x2a'):return _0xf5a5('0x2f');case _0xf5a5('0x2b'):return _0xf5a5('0x30');}throw new Error(_0xf5a5('0x2d'),_0x1788e2);}function getAuthenticationOptions(_0x3fe642,_0x1789d3){var _0x10943f={};var _0x3bf57e={};if(_0x3fe642){_0x10943f[_0xf5a5('0x31')]=_0x3bf57e['user']=_0x1789d3[_0xf5a5('0x32')];_0x10943f[_0xf5a5('0x33')]=_0x3bf57e[_0xf5a5('0x34')]=_0x1789d3[_0xf5a5('0x33')];if(_0x1789d3[_0xf5a5('0x35')]){_0x10943f[_0xf5a5('0x35')]=_0x3bf57e[_0xf5a5('0x35')]=!![];_0x10943f[_0xf5a5('0x36')]=_0x3bf57e[_0xf5a5('0x36')]=_0x1789d3['CloudProviderId'];_0x10943f[_0xf5a5('0x33')]=_0x3bf57e[_0xf5a5('0x34')]=null;}else{_0x10943f[_0xf5a5('0x36')]=_0x3bf57e[_0xf5a5('0x36')]=null;}_0x10943f['host']=getImapHost(_0x3fe642);_0x10943f['port']=0x3e1;_0x3bf57e[_0xf5a5('0x37')]=getSmtpHost(_0x3fe642);_0x3bf57e[_0xf5a5('0x38')]=0x24b;_0x3bf57e[_0xf5a5('0x39')]=![];_0x10943f[_0xf5a5('0x3a')]=_0x3bf57e[_0xf5a5('0x3a')]=null;}else{if(_0x1789d3[_0xf5a5('0x3b')]){_0x10943f['user']=_0x3bf57e['user']=_0x1789d3[_0xf5a5('0x32')];_0x10943f[_0xf5a5('0x33')]=_0x3bf57e['pass']=_0x1789d3[_0xf5a5('0x33')];}else{_0x10943f['authentication']=_0x3bf57e[_0xf5a5('0x3b')]=![];_0x10943f[_0xf5a5('0x31')]=_0x3bf57e['user']=null;_0x10943f['password']=_0x3bf57e[_0xf5a5('0x34')]=null;}_0x10943f[_0xf5a5('0x37')]=_0x1789d3[_0xf5a5('0x3c')][_0xf5a5('0x37')];_0x10943f['port']=_0x1789d3[_0xf5a5('0x3c')][_0xf5a5('0x38')];_0x3bf57e[_0xf5a5('0x37')]=_0x1789d3[_0xf5a5('0x3d')]['host'];_0x3bf57e[_0xf5a5('0x38')]=_0x1789d3[_0xf5a5('0x3d')]['port'];}return{'Imap':_0x10943f,'Smtp':_0x3bf57e};}exports[_0xf5a5('0x3e')]=function(_0xbf1daa,_0x1864d7){var _0x56b1c6={'include':[{'model':db[_0xf5a5('0x3f')],'as':_0xf5a5('0x3c')},{'model':db[_0xf5a5('0x40')],'as':_0xf5a5('0x3d')},{'model':db[_0xf5a5('0x41')],'as':_0xf5a5('0x42')}]},_0x4c92bc={},_0x41be0f={'count':0x0,'rows':[]};var _0x63e8c=_['map'](db['MailAccount'][_0xf5a5('0x43')],function(_0x1a7876){return{'name':_0x1a7876[_0xf5a5('0x44')],'type':_0x1a7876['type'][_0xf5a5('0x45')]};});_0x4c92bc[_0xf5a5('0x46')]=_[_0xf5a5('0x47')](_0x63e8c,_0xf5a5('0x26'));_0x4c92bc['query']=_[_0xf5a5('0x48')](_0xbf1daa[_0xf5a5('0x49')]);_0x4c92bc[_0xf5a5('0x4a')]=_[_0xf5a5('0x4b')](_0x4c92bc[_0xf5a5('0x46')],_0x4c92bc[_0xf5a5('0x49')]);_0x56b1c6['attributes']=_[_0xf5a5('0x4b')](_0x4c92bc[_0xf5a5('0x46')],qs[_0xf5a5('0x4c')](_0xbf1daa[_0xf5a5('0x49')][_0xf5a5('0x4c')]));_0x56b1c6[_0xf5a5('0x4d')]=_0x56b1c6['attributes'][_0xf5a5('0x4e')]?_0x56b1c6[_0xf5a5('0x4d')]:_0x4c92bc[_0xf5a5('0x46')];if(!_0xbf1daa[_0xf5a5('0x49')]['hasOwnProperty'](_0xf5a5('0x4f'))){_0x56b1c6[_0xf5a5('0x1e')]=qs[_0xf5a5('0x1e')](_0xbf1daa[_0xf5a5('0x49')]['limit']);_0x56b1c6[_0xf5a5('0x20')]=qs[_0xf5a5('0x20')](_0xbf1daa[_0xf5a5('0x49')][_0xf5a5('0x20')]);}_0x56b1c6[_0xf5a5('0x50')]=qs[_0xf5a5('0x51')](_0xbf1daa['query']['sort']);_0x56b1c6[_0xf5a5('0x52')]=qs[_0xf5a5('0x4a')](_[_0xf5a5('0x53')](_0xbf1daa['query'],_0x4c92bc[_0xf5a5('0x4a')]),_0x63e8c);if(_0xbf1daa[_0xf5a5('0x49')][_0xf5a5('0x54')]){_0x56b1c6['where']=_[_0xf5a5('0x55')](_0x56b1c6[_0xf5a5('0x52')],{'$or':_[_0xf5a5('0x47')](_0x63e8c,function(_0x26b50b){if(_0x26b50b[_0xf5a5('0x56')]!==_0xf5a5('0x57')){var _0x505c69={};_0x505c69[_0x26b50b[_0xf5a5('0x26')]]={'$like':'%'+_0xbf1daa['query']['filter']+'%'};return _0x505c69;}})});}_0x56b1c6=_[_0xf5a5('0x55')]({},_0x56b1c6,_0xbf1daa[_0xf5a5('0x58')]);var _0x102002={'where':_0x56b1c6['where']};return db[_0xf5a5('0x59')][_0xf5a5('0x1f')](_0x102002)['then'](function(_0x284bfc){_0x41be0f['count']=_0x284bfc;if(_0xbf1daa[_0xf5a5('0x49')]['includeAll']){_0x56b1c6['include']=[{'all':!![]}];}return db[_0xf5a5('0x59')][_0xf5a5('0x5a')](_0x56b1c6);})[_0xf5a5('0x11')](function(_0x337a78){_0x41be0f[_0xf5a5('0x5b')]=_0x337a78;return _0x41be0f;})[_0xf5a5('0x11')](respondWithFilteredResult(_0x1864d7,_0x56b1c6))[_0xf5a5('0x5c')](handleError(_0x1864d7,null));};exports[_0xf5a5('0x5d')]=function(_0x26bcd7,_0x30c861){var _0x48e46a={'raw':![],'where':{'id':_0x26bcd7['params']['id']},'include':[{'model':db[_0xf5a5('0x3f')],'as':_0xf5a5('0x3c')},{'model':db['MailServerOut'],'as':_0xf5a5('0x3d')},{'model':db[_0xf5a5('0x41')],'as':_0xf5a5('0x42')}]},_0xaab2b8={};_0xaab2b8[_0xf5a5('0x46')]=_[_0xf5a5('0x48')](db[_0xf5a5('0x59')][_0xf5a5('0x43')]);_0xaab2b8['query']=_[_0xf5a5('0x48')](_0x26bcd7[_0xf5a5('0x49')]);_0xaab2b8[_0xf5a5('0x4a')]=_['intersection'](_0xaab2b8['model'],_0xaab2b8[_0xf5a5('0x49')]);_0x48e46a[_0xf5a5('0x4d')]=_['intersection'](_0xaab2b8[_0xf5a5('0x46')],qs[_0xf5a5('0x4c')](_0x26bcd7[_0xf5a5('0x49')][_0xf5a5('0x4c')]));_0x48e46a['attributes']=_0x48e46a[_0xf5a5('0x4d')][_0xf5a5('0x4e')]?_0x48e46a[_0xf5a5('0x4d')]:_0xaab2b8[_0xf5a5('0x46')];if(_0x26bcd7[_0xf5a5('0x49')][_0xf5a5('0x5e')]){_0x48e46a[_0xf5a5('0x5f')]=[{'all':!![]}];}_0x48e46a=_[_0xf5a5('0x55')]({},_0x48e46a,_0x26bcd7[_0xf5a5('0x58')]);return db[_0xf5a5('0x59')][_0xf5a5('0x60')](_0x48e46a)[_0xf5a5('0x11')](handleEntityNotFound(_0x30c861,null))[_0xf5a5('0x11')](respondWithResult(_0x30c861,null))[_0xf5a5('0x5c')](handleError(_0x30c861,null));};exports[_0xf5a5('0x61')]=function(_0x277935,_0x1f6f78){if(_0x277935[_0xf5a5('0x62')]['id']){delete _0x277935[_0xf5a5('0x62')]['id'];}var _0x2b1a7d=_0x277935['body'][_0xf5a5('0x63')]==='custom'?null:_0x277935[_0xf5a5('0x62')][_0xf5a5('0x63')];var _0x264ca4=_0x277935[_0xf5a5('0x62')]['Imap']||{};var _0xbd0d9a=_0x277935[_0xf5a5('0x62')][_0xf5a5('0x3d')]||{};if(_0x2b1a7d){_0x264ca4[_0xf5a5('0x37')]=getImapHost(_0x2b1a7d);_0x264ca4[_0xf5a5('0x38')]=0x3e1;_0xbd0d9a['host']=getSmtpHost(_0x2b1a7d);_0xbd0d9a[_0xf5a5('0x38')]=0x24b;_0xbd0d9a[_0xf5a5('0x39')]=![];}if(_0xbd0d9a[_0xf5a5('0x35')]){_0xbd0d9a['secure']=![];}else{_0xbd0d9a['CloudProviderId']=null;}if(!_0x264ca4['modernAuthentication'])_0x264ca4['CloudProviderId']=null;_0x277935[_0xf5a5('0x62')][_0xf5a5('0x3c')]=_0x264ca4;_0x277935['body'][_0xf5a5('0x3d')]=_0xbd0d9a;return db[_0xf5a5('0x59')][_0xf5a5('0x60')]({'where':{'id':_0x277935['params']['id']},'include':[{'model':db[_0xf5a5('0x3f')],'as':_0xf5a5('0x3c')},{'model':db[_0xf5a5('0x40')],'as':_0xf5a5('0x3d')},{'model':db['Pause'],'as':_0xf5a5('0x42')}]})[_0xf5a5('0x11')](handleEntityNotFound(_0x1f6f78,null))[_0xf5a5('0x11')](function(_0x14a3d6){if(!_0x14a3d6)throw new Error(_0xf5a5('0x64'));if(_0x14a3d6[_0xf5a5('0x3a')])delete _0x277935['body']['Imap'];return _0x14a3d6;})[_0xf5a5('0x11')](saveUpdates(_0x277935[_0xf5a5('0x62')],null))[_0xf5a5('0x11')](function(_0x33e68a){if(!_0x277935[_0xf5a5('0x62')][_0xf5a5('0x3c')])return _0x33e68a;return db[_0xf5a5('0x3f')][_0xf5a5('0x61')](_0x277935[_0xf5a5('0x62')][_0xf5a5('0x3c')],{'where':{'MailAccountId':_0x33e68a['id']}})[_0xf5a5('0x11')](function(){return _0x33e68a;});})[_0xf5a5('0x11')](function(_0x51b1a8){if(!_0x277935[_0xf5a5('0x62')][_0xf5a5('0x3d')])return _0x51b1a8;return db[_0xf5a5('0x40')][_0xf5a5('0x61')](_0x277935[_0xf5a5('0x62')]['Smtp'],{'where':{'MailAccountId':_0x51b1a8['id']}})['then'](function(){return _0x51b1a8;});})['then'](respondWithResult(_0x1f6f78,null))['catch'](handleError(_0x1f6f78,null));};exports[_0xf5a5('0x65')]=function(_0x460f46,_0x432ab9){return db['MailAccount'][_0xf5a5('0x65')]()[_0xf5a5('0x11')](respondWithResult(_0x432ab9,null))[_0xf5a5('0x5c')](handleError(_0x432ab9,null));};exports[_0xf5a5('0x66')]=function(_0x19a0eb,_0x18871d){if(_0x19a0eb['body']['id']){delete _0x19a0eb[_0xf5a5('0x62')]['id'];}return db['MailAccount'][_0xf5a5('0x60')]({'where':{'id':_0x19a0eb['params']['id']}})[_0xf5a5('0x11')](handleEntityNotFound(_0x18871d,null))['then'](function(_0x1a1567){if(_0x1a1567){_0x19a0eb[_0xf5a5('0x62')][_0xf5a5('0x67')]=_0x1a1567['id'];return db['Disposition']['create'](_0x19a0eb[_0xf5a5('0x62')]);}})['then'](respondWithResult(_0x18871d,null))[_0xf5a5('0x5c')](handleError(_0x18871d,null));};exports[_0xf5a5('0x68')]=function(_0x14174d,_0x50542d){var _0x114982={'raw':![],'where':{}};var _0x57f292={};var _0x4ca66d={'count':0x0,'rows':[]};return db[_0xf5a5('0x59')][_0xf5a5('0x69')]({'where':{'id':_0x14174d['params']['id']}})[_0xf5a5('0x11')](handleEntityNotFound(_0x50542d,null))[_0xf5a5('0x11')](function(_0x51cc66){if(_0x51cc66){_0x57f292[_0xf5a5('0x46')]=_['keys'](db[_0xf5a5('0x6a')][_0xf5a5('0x43')]);_0x57f292['query']=_[_0xf5a5('0x48')](_0x14174d[_0xf5a5('0x49')]);_0x57f292[_0xf5a5('0x4a')]=_['intersection'](_0x57f292['model'],_0x57f292[_0xf5a5('0x49')]);_0x114982[_0xf5a5('0x4d')]=_[_0xf5a5('0x4b')](_0x57f292[_0xf5a5('0x46')],qs[_0xf5a5('0x4c')](_0x14174d[_0xf5a5('0x49')]['fields']));_0x114982[_0xf5a5('0x4d')]=_0x114982[_0xf5a5('0x4d')][_0xf5a5('0x4e')]?_0x114982['attributes']:_0x57f292[_0xf5a5('0x46')];if(!_0x14174d[_0xf5a5('0x49')][_0xf5a5('0x6b')](_0xf5a5('0x4f'))){_0x114982['limit']=qs[_0xf5a5('0x1e')](_0x14174d[_0xf5a5('0x49')][_0xf5a5('0x1e')]);_0x114982['offset']=qs[_0xf5a5('0x20')](_0x14174d['query']['offset']);}_0x114982[_0xf5a5('0x50')]=qs[_0xf5a5('0x51')](_0x14174d[_0xf5a5('0x49')]['sort']);_0x114982[_0xf5a5('0x52')]=qs['filters'](_[_0xf5a5('0x53')](_0x14174d[_0xf5a5('0x49')],_0x57f292[_0xf5a5('0x4a')]));_0x114982[_0xf5a5('0x52')][_0xf5a5('0x67')]=_0x51cc66['id'];if(_0x14174d['query'][_0xf5a5('0x54')]){_0x114982[_0xf5a5('0x52')]=_[_0xf5a5('0x55')](_0x114982[_0xf5a5('0x52')],{'$or':_[_0xf5a5('0x47')](_0x114982['attributes'],function(_0x565765){var _0x4da799={};_0x4da799[_0x565765]={'$like':'%'+_0x14174d[_0xf5a5('0x49')][_0xf5a5('0x54')]+'%'};return _0x4da799;})});}_0x114982=_[_0xf5a5('0x55')]({},_0x114982,_0x14174d[_0xf5a5('0x58')]);return db['Disposition'][_0xf5a5('0x1f')]({'where':_0x114982['where']})[_0xf5a5('0x11')](function(_0x38c51a){_0x4ca66d[_0xf5a5('0x1f')]=_0x38c51a;if(_0x14174d[_0xf5a5('0x49')][_0xf5a5('0x5e')]){_0x114982[_0xf5a5('0x5f')]=[{'all':!![]}];}return db[_0xf5a5('0x6a')]['findAll'](_0x114982);})[_0xf5a5('0x11')](function(_0x514d51){_0x4ca66d['rows']=_0x514d51;return _0x4ca66d;});}})[_0xf5a5('0x11')](respondWithFilteredResult(_0x50542d,_0x114982))['catch'](handleError(_0x50542d,null));};exports[_0xf5a5('0x6c')]=function(_0x33dd96,_0x2f8c21){return db['MailAccount']['find']({'where':{'id':_0x33dd96[_0xf5a5('0x6d')]['id']}})[_0xf5a5('0x11')](handleEntityNotFound(_0x2f8c21,null))[_0xf5a5('0x11')](function(_0x246f7d){if(_0x246f7d){return _0x246f7d[_0xf5a5('0x6c')](_0x33dd96[_0xf5a5('0x49')]['ids']);}})[_0xf5a5('0x11')](respondWithStatusCode(_0x2f8c21,null))[_0xf5a5('0x5c')](handleError(_0x2f8c21,null));};exports[_0xf5a5('0x6e')]=function(_0x5a146c,_0x2af5b7){if(_0x5a146c[_0xf5a5('0x62')]['id']){delete _0x5a146c[_0xf5a5('0x62')]['id'];}return db[_0xf5a5('0x59')]['find']({'where':{'id':_0x5a146c[_0xf5a5('0x6d')]['id']}})[_0xf5a5('0x11')](handleEntityNotFound(_0x2af5b7,null))['then'](function(_0x39bfc6){if(_0x39bfc6){_0x5a146c[_0xf5a5('0x62')][_0xf5a5('0x67')]=_0x39bfc6['id'];return db['CannedAnswer'][_0xf5a5('0x6f')](_0x5a146c[_0xf5a5('0x62')]);}})[_0xf5a5('0x11')](respondWithResult(_0x2af5b7,null))[_0xf5a5('0x5c')](handleError(_0x2af5b7,null));};exports[_0xf5a5('0x70')]=function(_0x3f1887,_0x1f1397){var _0x35d3a0={'raw':![],'where':{}};var _0x24c49e={};var _0x55db42={'count':0x0,'rows':[]};return db[_0xf5a5('0x59')][_0xf5a5('0x69')]({'where':{'id':_0x3f1887['params']['id']}})[_0xf5a5('0x11')](handleEntityNotFound(_0x1f1397,null))['then'](function(_0x23c39e){if(_0x23c39e){_0x24c49e[_0xf5a5('0x46')]=_[_0xf5a5('0x48')](db[_0xf5a5('0x71')][_0xf5a5('0x43')]);_0x24c49e[_0xf5a5('0x49')]=_[_0xf5a5('0x48')](_0x3f1887[_0xf5a5('0x49')]);_0x24c49e['filters']=_[_0xf5a5('0x4b')](_0x24c49e['model'],_0x24c49e[_0xf5a5('0x49')]);_0x35d3a0[_0xf5a5('0x4d')]=_[_0xf5a5('0x4b')](_0x24c49e['model'],qs['fields'](_0x3f1887[_0xf5a5('0x49')][_0xf5a5('0x4c')]));_0x35d3a0['attributes']=_0x35d3a0[_0xf5a5('0x4d')]['length']?_0x35d3a0['attributes']:_0x24c49e[_0xf5a5('0x46')];if(!_0x3f1887[_0xf5a5('0x49')][_0xf5a5('0x6b')]('nolimit')){_0x35d3a0[_0xf5a5('0x1e')]=qs['limit'](_0x3f1887[_0xf5a5('0x49')][_0xf5a5('0x1e')]);_0x35d3a0[_0xf5a5('0x20')]=qs['offset'](_0x3f1887[_0xf5a5('0x49')][_0xf5a5('0x20')]);}_0x35d3a0[_0xf5a5('0x50')]=qs[_0xf5a5('0x51')](_0x3f1887[_0xf5a5('0x49')]['sort']);_0x35d3a0[_0xf5a5('0x52')]=qs[_0xf5a5('0x4a')](_[_0xf5a5('0x53')](_0x3f1887[_0xf5a5('0x49')],_0x24c49e['filters']));_0x35d3a0[_0xf5a5('0x52')]['MailAccountId']=_0x23c39e['id'];if(_0x3f1887[_0xf5a5('0x49')]['filter']){_0x35d3a0[_0xf5a5('0x52')]=_[_0xf5a5('0x55')](_0x35d3a0[_0xf5a5('0x52')],{'$or':_[_0xf5a5('0x47')](_0x35d3a0['attributes'],function(_0x29bbd0){var _0x5df777={};_0x5df777[_0x29bbd0]={'$like':'%'+_0x3f1887[_0xf5a5('0x49')][_0xf5a5('0x54')]+'%'};return _0x5df777;})});}_0x35d3a0=_[_0xf5a5('0x55')]({},_0x35d3a0,_0x3f1887[_0xf5a5('0x58')]);return db[_0xf5a5('0x71')][_0xf5a5('0x1f')]({'where':_0x35d3a0[_0xf5a5('0x52')]})[_0xf5a5('0x11')](function(_0xe0fe1d){_0x55db42['count']=_0xe0fe1d;if(_0x3f1887[_0xf5a5('0x49')][_0xf5a5('0x5e')]){_0x35d3a0[_0xf5a5('0x5f')]=[{'all':!![]}];}return db[_0xf5a5('0x71')][_0xf5a5('0x5a')](_0x35d3a0);})[_0xf5a5('0x11')](function(_0x539d73){_0x55db42['rows']=_0x539d73;return _0x55db42;});}})[_0xf5a5('0x11')](respondWithFilteredResult(_0x1f1397,_0x35d3a0))[_0xf5a5('0x5c')](handleError(_0x1f1397,null));};exports[_0xf5a5('0x72')]=function(_0x110962,_0x5bbc06){return db[_0xf5a5('0x59')][_0xf5a5('0x60')]({'where':{'id':_0x110962[_0xf5a5('0x6d')]['id']}})[_0xf5a5('0x11')](handleEntityNotFound(_0x5bbc06,null))['then'](function(_0x4bfefc){if(_0x4bfefc){return _0x4bfefc[_0xf5a5('0x72')](_0x110962[_0xf5a5('0x49')]['ids']);}})[_0xf5a5('0x11')](respondWithStatusCode(_0x5bbc06,null))['catch'](handleError(_0x5bbc06,null));};exports[_0xf5a5('0x6f')]=function(_0x40acf6,_0x43dbd4){var _0x23f52d={'name':_0x40acf6[_0xf5a5('0x62')][_0xf5a5('0x26')],'key':_0x40acf6[_0xf5a5('0x62')][_0xf5a5('0x45')],'provider':_0x40acf6[_0xf5a5('0x62')][_0xf5a5('0x63')]===_0xf5a5('0x73')?null:_0x40acf6['body'][_0xf5a5('0x63')],'email':_0x40acf6[_0xf5a5('0x62')][_0xf5a5('0x74')],'ListId':_0x40acf6['body'][_0xf5a5('0x75')],'active':!_[_0xf5a5('0x76')](_0x40acf6[_0xf5a5('0x62')][_0xf5a5('0x77')])?_0x40acf6[_0xf5a5('0x62')]['active']:!![],'description':_0x40acf6['body'][_0xf5a5('0x78')]||null};var _0x2fa1e5=getAuthenticationOptions(_0x23f52d[_0xf5a5('0x63')],_0x40acf6[_0xf5a5('0x62')]);_0x23f52d[_0xf5a5('0x3c')]=_0x2fa1e5[_0xf5a5('0x3c')];_0x23f52d[_0xf5a5('0x3d')]=_0x2fa1e5[_0xf5a5('0x3d')];return db[_0xf5a5('0x59')][_0xf5a5('0x6f')](_0x23f52d,{'include':[{'model':db[_0xf5a5('0x40')],'as':_0xf5a5('0x3d')},{'model':db[_0xf5a5('0x3f')],'as':_0xf5a5('0x3c')}]})[_0xf5a5('0x11')](function(_0x30fc15){var _0x5f0f6f=_0x40acf6[_0xf5a5('0x31')]['get']({'plain':!![]});if(!_0x5f0f6f)throw new Error(_0xf5a5('0x79'));if(_0x5f0f6f[_0xf5a5('0x7a')]===_0xf5a5('0x31')){var _0x15e6a7=_0x30fc15[_0xf5a5('0x22')]({'plain':!![]});return db['UserProfileSection'][_0xf5a5('0x60')]({'where':{'name':_0xf5a5('0x7b'),'userProfileId':_0x5f0f6f['userProfileId']},'raw':!![]})[_0xf5a5('0x11')](function(_0x56c21f){if(_0x56c21f&&_0x56c21f[_0xf5a5('0x7c')]===0x0){return db[_0xf5a5('0x7d')][_0xf5a5('0x6f')]({'name':_0x15e6a7[_0xf5a5('0x26')],'resourceId':_0x15e6a7['id'],'type':_0x56c21f[_0xf5a5('0x26')],'sectionId':_0x56c21f['id']},{})[_0xf5a5('0x11')](function(){return _0x30fc15;});}else{return _0x30fc15;}})[_0xf5a5('0x5c')](function(_0x157b31){logger[_0xf5a5('0x17')](_0xf5a5('0x7e'),_0x157b31);throw _0x157b31;});}return _0x30fc15;})['then'](respondWithResult(_0x43dbd4,0xc9))[_0xf5a5('0x5c')](handleError(_0x43dbd4,null));};exports[_0xf5a5('0x7f')]=function(_0x383920,_0x502a6d){return db[_0xf5a5('0x59')][_0xf5a5('0x69')]({'where':{'id':_0x383920[_0xf5a5('0x6d')]['id']}})[_0xf5a5('0x11')](handleEntityNotFound(_0x502a6d,null))[_0xf5a5('0x11')](function(_0x43fd55){if(_0x43fd55){return _0x43fd55['getImap']();}return null;})[_0xf5a5('0x11')](respondWithResult(_0x502a6d,null))[_0xf5a5('0x5c')](handleError(_0x502a6d,null));};exports['addImap']=function(_0x58570e,_0x180f82){if(_0x58570e[_0xf5a5('0x62')]['id']){delete _0x58570e[_0xf5a5('0x62')]['id'];}return db['MailAccount'][_0xf5a5('0x60')]({'where':{'id':_0x58570e[_0xf5a5('0x6d')]['id']}})[_0xf5a5('0x11')](handleEntityNotFound(_0x180f82,null))[_0xf5a5('0x11')](function(_0x5d6f0d){if(_0x5d6f0d){_0x58570e[_0xf5a5('0x62')][_0xf5a5('0x67')]=_0x5d6f0d['id'];return db[_0xf5a5('0x3f')][_0xf5a5('0x6f')](_0x58570e[_0xf5a5('0x62')]);}})[_0xf5a5('0x11')](respondWithResult(_0x180f82,null))[_0xf5a5('0x5c')](handleError(_0x180f82,null));};exports['removeImap']=function(_0x5e602e,_0xe70e3a){return db[_0xf5a5('0x59')]['findOne']({'where':{'id':_0x5e602e[_0xf5a5('0x6d')]['id']}})['then'](handleEntityNotFound(_0xe70e3a,null))[_0xf5a5('0x11')](function(_0x3b5194){if(_0x3b5194){return _0x3b5194[_0xf5a5('0x80')](null);}return null;})['then'](respondWithStatusCode(_0xe70e3a,null))[_0xf5a5('0x5c')](handleError(_0xe70e3a,null));};exports[_0xf5a5('0x81')]=function(_0x12a396,_0x34444c){return db[_0xf5a5('0x59')][_0xf5a5('0x69')]({'where':{'id':_0x12a396[_0xf5a5('0x6d')]['id']}})[_0xf5a5('0x11')](handleEntityNotFound(_0x34444c,null))[_0xf5a5('0x11')](function(_0x554ae3){if(_0x554ae3){return _0x554ae3['getSmtp']();}return null;})[_0xf5a5('0x11')](respondWithResult(_0x34444c,null))[_0xf5a5('0x5c')](handleError(_0x34444c,null));};exports[_0xf5a5('0x82')]=function(_0x2c1335,_0x3c1e34){if(_0x2c1335[_0xf5a5('0x62')]['id']){delete _0x2c1335[_0xf5a5('0x62')]['id'];}return db[_0xf5a5('0x59')][_0xf5a5('0x60')]({'where':{'id':_0x2c1335[_0xf5a5('0x6d')]['id']}})[_0xf5a5('0x11')](handleEntityNotFound(_0x3c1e34,null))['then'](function(_0x40e2fc){if(_0x40e2fc){_0x2c1335['body']['MailAccountId']=_0x40e2fc['id'];return db[_0xf5a5('0x40')]['create'](_0x2c1335['body']);}})[_0xf5a5('0x11')](respondWithResult(_0x3c1e34,null))[_0xf5a5('0x5c')](handleError(_0x3c1e34,null));};exports[_0xf5a5('0x83')]=function(_0x5a8626,_0xc0d2c4){return db[_0xf5a5('0x59')][_0xf5a5('0x69')]({'where':{'id':_0x5a8626[_0xf5a5('0x6d')]['id']}})[_0xf5a5('0x11')](handleEntityNotFound(_0xc0d2c4,null))[_0xf5a5('0x11')](function(_0x71dd0){if(_0x71dd0){return _0x71dd0[_0xf5a5('0x84')](null);}return null;})[_0xf5a5('0x11')](respondWithStatusCode(_0xc0d2c4,null))[_0xf5a5('0x5c')](handleError(_0xc0d2c4,null));};exports[_0xf5a5('0x85')]=function(_0x2ddfbc,_0xc997b7){return db['MailInteraction'][_0xf5a5('0x60')]({'where':{'id':_0x2ddfbc[_0xf5a5('0x6d')]['id']}})[_0xf5a5('0x11')](handleEntityNotFound(_0xc997b7,null))[_0xf5a5('0x11')](function(_0x19264a){if(_0x19264a){return _0x19264a[_0xf5a5('0x85')](_0x2ddfbc[_0xf5a5('0x62')][_0xf5a5('0x86')],_[_0xf5a5('0x87')](_0x2ddfbc[_0xf5a5('0x62')],[_0xf5a5('0x86'),'id'])||{});}})['then'](respondWithResult(_0xc997b7,null))[_0xf5a5('0x5c')](handleError(_0xc997b7,null));};exports[_0xf5a5('0x88')]=function(_0x7d82c9,_0x338311){var _0x1b6f45={'raw':![],'where':{}};var _0x28c1f0={};var _0x5dde8f={'count':0x0,'rows':[]};return db['MailAccount'][_0xf5a5('0x69')]({'where':{'id':_0x7d82c9[_0xf5a5('0x6d')]['id']}})[_0xf5a5('0x11')](handleEntityNotFound(_0x338311,null))[_0xf5a5('0x11')](function(_0x1d04b5){if(_0x1d04b5){_0x28c1f0['model']=_[_0xf5a5('0x48')](db[_0xf5a5('0x89')][_0xf5a5('0x43')]);_0x28c1f0[_0xf5a5('0x49')]=_[_0xf5a5('0x48')](_0x7d82c9[_0xf5a5('0x49')]);_0x28c1f0[_0xf5a5('0x4a')]=_[_0xf5a5('0x4b')](_0x28c1f0[_0xf5a5('0x46')],_0x28c1f0[_0xf5a5('0x49')]);_0x1b6f45[_0xf5a5('0x4d')]=_[_0xf5a5('0x4b')](_0x28c1f0['model'],qs['fields'](_0x7d82c9[_0xf5a5('0x49')][_0xf5a5('0x4c')]));_0x1b6f45[_0xf5a5('0x4d')]=_0x1b6f45[_0xf5a5('0x4d')][_0xf5a5('0x4e')]?_0x1b6f45[_0xf5a5('0x4d')]:_0x28c1f0[_0xf5a5('0x46')];if(!_0x7d82c9[_0xf5a5('0x49')]['hasOwnProperty'](_0xf5a5('0x4f'))){_0x1b6f45[_0xf5a5('0x1e')]=qs[_0xf5a5('0x1e')](_0x7d82c9[_0xf5a5('0x49')][_0xf5a5('0x1e')]);_0x1b6f45[_0xf5a5('0x20')]=qs[_0xf5a5('0x20')](_0x7d82c9[_0xf5a5('0x49')][_0xf5a5('0x20')]);}_0x1b6f45[_0xf5a5('0x50')]=qs[_0xf5a5('0x51')](_0x7d82c9[_0xf5a5('0x49')]['sort']);_0x1b6f45[_0xf5a5('0x52')]=qs['filters'](_['pick'](_0x7d82c9[_0xf5a5('0x49')],_0x28c1f0[_0xf5a5('0x4a')]));_0x1b6f45[_0xf5a5('0x52')]['MailAccountId']=_0x1d04b5['id'];if(_0x7d82c9[_0xf5a5('0x49')][_0xf5a5('0x54')]){_0x1b6f45['where']=_[_0xf5a5('0x55')](_0x1b6f45[_0xf5a5('0x52')],{'$or':_[_0xf5a5('0x47')](_0x1b6f45[_0xf5a5('0x4d')],function(_0x44dd66){var _0x387e0c={};_0x387e0c[_0x44dd66]={'$like':'%'+_0x7d82c9[_0xf5a5('0x49')][_0xf5a5('0x54')]+'%'};return _0x387e0c;})});}_0x1b6f45=_[_0xf5a5('0x55')]({},_0x1b6f45,_0x7d82c9['options']);return db['MailInteraction']['count']({'where':_0x1b6f45[_0xf5a5('0x52')]})[_0xf5a5('0x11')](function(_0x327966){_0x5dde8f['count']=_0x327966;if(_0x7d82c9['query']['includeAll']){_0x1b6f45['include']=[{'model':db[_0xf5a5('0x8a')],'as':_0xf5a5('0x8b'),'required':![]},{'model':db['User'],'as':'Owner','attributes':[_0xf5a5('0x26'),_0xf5a5('0x8c'),_0xf5a5('0x8d')],'required':![]},{'model':db[_0xf5a5('0x8e')],'as':_0xf5a5('0x8f'),'attributes':['id',_0xf5a5('0x26'),_0xf5a5('0x90')],'where':_0x7d82c9[_0xf5a5('0x49')][_0xf5a5('0x91')]?{'id':_0x7d82c9['query'][_0xf5a5('0x91')]}:undefined,'required':_0x7d82c9[_0xf5a5('0x49')][_0xf5a5('0x91')]?!![]:![]}];}return db[_0xf5a5('0x89')][_0xf5a5('0x5a')](_0x1b6f45);})[_0xf5a5('0x11')](function(_0x764d45){_0x5dde8f[_0xf5a5('0x5b')]=_0x764d45;return _0x5dde8f;});}})[_0xf5a5('0x11')](respondWithFilteredResult(_0x338311,_0x1b6f45))[_0xf5a5('0x5c')](handleError(_0x338311,null));};exports[_0xf5a5('0x92')]=function addApplications(_0x5ab464,_0x1a883a){var _0x155699=_0x5ab464[_0xf5a5('0x6d')]['id'];var _0x57dbd8=_0x5ab464[_0xf5a5('0x62')];var _0x3a1961=0xc8;var _0x9184bf=null;return db[_0xf5a5('0x93')][_0xf5a5('0x94')]({'isolationLevel':db[_0xf5a5('0x93')][_0xf5a5('0x95')][_0xf5a5('0x96')][_0xf5a5('0x97')]},function(_0x2a8f1d){return db[_0xf5a5('0x59')][_0xf5a5('0x69')]({'where':{'id':_0x155699},'transaction':_0x2a8f1d})[_0xf5a5('0x11')](function(_0x1dc4ac){if(_0x1dc4ac){return db[_0xf5a5('0x98')]['destroy']({'where':{'MailAccountId':_0x155699},'transaction':_0x2a8f1d})[_0xf5a5('0x11')](function(){var _0x574b2f=_['map'](_0x57dbd8,function(_0x1ec7e6){_0x1ec7e6['MailAccountId']=_0x155699;return _0x1ec7e6;});return db[_0xf5a5('0x98')][_0xf5a5('0x99')](_0x574b2f,{'transaction':_0x2a8f1d});});}else{_0x3a1961=0x194;_0x9184bf=[];}});})['then'](function(){if(_0x3a1961!==0x194){return db['MailApplication']['findAndCountAll']({'where':{'MailAccountId':_0x155699},'order':_0xf5a5('0x9a')})[_0xf5a5('0x11')](function(_0x94c4a5){_0x9184bf=_0x94c4a5;});}})[_0xf5a5('0x5c')](function(_0x5b3894){_0x3a1961=0x1f4;logger[_0xf5a5('0x17')](_0x5b3894[_0xf5a5('0x25')]);if(_0x5b3894['name']){delete _0x5b3894[_0xf5a5('0x26')];}_0x9184bf=_0x5b3894;})[_0xf5a5('0x9b')](function(){if(_0x9184bf===null){_0x1a883a[_0xf5a5('0x1b')](_0x3a1961);}else{if(_0x3a1961===0x1f4){_0x1a883a[_0xf5a5('0x1c')](_0x3a1961)[_0xf5a5('0x27')](_0x9184bf);}else{_0x1a883a[_0xf5a5('0x1c')](_0x3a1961)[_0xf5a5('0x1d')](_0x9184bf);}}});};exports['getApplications']=function(_0x125025,_0x3fd4f1){var _0x3d1bb2={};var _0x4f8f71={};var _0x2b50bb;var _0x2efc09;return db[_0xf5a5('0x59')]['findOne']({'where':{'id':_0x125025[_0xf5a5('0x6d')]['id']}})[_0xf5a5('0x11')](handleEntityNotFound(_0x3fd4f1,null))[_0xf5a5('0x11')](function(_0x2c1578){if(_0x2c1578){_0x2b50bb=_0x2c1578;_0x4f8f71['model']=_['keys'](db['MailApplication'][_0xf5a5('0x43')]);_0x4f8f71[_0xf5a5('0x49')]=_[_0xf5a5('0x48')](_0x125025[_0xf5a5('0x49')]);_0x4f8f71['filters']=_[_0xf5a5('0x4b')](_0x4f8f71['model'],_0x4f8f71[_0xf5a5('0x49')]);_0x3d1bb2[_0xf5a5('0x4d')]=_[_0xf5a5('0x4b')](_0x4f8f71[_0xf5a5('0x46')],qs[_0xf5a5('0x4c')](_0x125025[_0xf5a5('0x49')][_0xf5a5('0x4c')]));_0x3d1bb2[_0xf5a5('0x4d')]=_0x3d1bb2[_0xf5a5('0x4d')][_0xf5a5('0x4e')]?_0x3d1bb2[_0xf5a5('0x4d')]:_0x4f8f71[_0xf5a5('0x46')];_0x3d1bb2[_0xf5a5('0x50')]=qs[_0xf5a5('0x51')](_0x125025[_0xf5a5('0x49')][_0xf5a5('0x51')]);_0x3d1bb2['where']=qs[_0xf5a5('0x4a')](_[_0xf5a5('0x53')](_0x125025[_0xf5a5('0x49')],_0x4f8f71[_0xf5a5('0x4a')]));if(_0x125025[_0xf5a5('0x49')][_0xf5a5('0x54')]){_0x3d1bb2[_0xf5a5('0x52')]=_['merge'](_0x3d1bb2[_0xf5a5('0x52')],{'$or':_[_0xf5a5('0x47')](_0x3d1bb2[_0xf5a5('0x4d')],function(_0x4a0750){var _0x26d480={};_0x26d480[_0x4a0750]={'$like':'%'+_0x125025['query']['filter']+'%'};return _0x26d480;})});}_0x3d1bb2=_[_0xf5a5('0x55')]({},_0x3d1bb2,_0x125025[_0xf5a5('0x58')]);return _0x2b50bb[_0xf5a5('0x9c')](_0x3d1bb2);}})[_0xf5a5('0x11')](function(_0x1d3b2a){if(_0x1d3b2a){_0x2efc09=_0x1d3b2a[_0xf5a5('0x4e')];if(!_0x125025[_0xf5a5('0x49')][_0xf5a5('0x6b')]('nolimit')){_0x3d1bb2[_0xf5a5('0x1e')]=qs[_0xf5a5('0x1e')](_0x125025['query'][_0xf5a5('0x1e')]);_0x3d1bb2[_0xf5a5('0x20')]=qs[_0xf5a5('0x20')](_0x125025[_0xf5a5('0x49')][_0xf5a5('0x20')]);}return _0x2b50bb[_0xf5a5('0x9c')](_0x3d1bb2);}})[_0xf5a5('0x11')](function(_0x5f2f02){if(_0x5f2f02){return _0x5f2f02?{'count':_0x2efc09,'rows':_0x5f2f02}:null;}})[_0xf5a5('0x11')](respondWithResult(_0x3fd4f1,null))[_0xf5a5('0x5c')](handleError(_0x3fd4f1,null));};exports[_0xf5a5('0x9d')]=function(_0x364579,_0x14d3d5){var _0x44559b={'raw':!![],'where':{}};var _0x2df343={};var _0x4c3efd={'count':0x0,'rows':[]};return db[_0xf5a5('0x59')][_0xf5a5('0x69')]({'where':{'id':_0x364579['params']['id']}})['then'](handleEntityNotFound(_0x14d3d5,null))[_0xf5a5('0x11')](function(_0x32e99a){if(_0x32e99a){_0x2df343[_0xf5a5('0x46')]=_[_0xf5a5('0x48')](db[_0xf5a5('0x9e')][_0xf5a5('0x43')]);_0x2df343[_0xf5a5('0x49')]=_[_0xf5a5('0x48')](_0x364579[_0xf5a5('0x49')]);_0x2df343[_0xf5a5('0x4a')]=_['intersection'](_0x2df343['model'],_0x2df343[_0xf5a5('0x49')]);_0x44559b[_0xf5a5('0x4d')]=_[_0xf5a5('0x4b')](_0x2df343[_0xf5a5('0x46')],qs['fields'](_0x364579['query'][_0xf5a5('0x4c')]));_0x44559b['attributes']=_0x44559b[_0xf5a5('0x4d')][_0xf5a5('0x4e')]?_0x44559b[_0xf5a5('0x4d')]:_0x2df343[_0xf5a5('0x46')];if(!_0x364579[_0xf5a5('0x49')][_0xf5a5('0x6b')](_0xf5a5('0x4f'))){_0x44559b[_0xf5a5('0x1e')]=qs[_0xf5a5('0x1e')](_0x364579['query'][_0xf5a5('0x1e')]);_0x44559b[_0xf5a5('0x20')]=qs[_0xf5a5('0x20')](_0x364579[_0xf5a5('0x49')][_0xf5a5('0x20')]);}_0x44559b[_0xf5a5('0x50')]=qs[_0xf5a5('0x51')](_0x364579[_0xf5a5('0x49')]['sort']);_0x44559b[_0xf5a5('0x52')]=qs[_0xf5a5('0x4a')](_[_0xf5a5('0x53')](_0x364579['query'],_0x2df343[_0xf5a5('0x4a')]));_0x44559b[_0xf5a5('0x52')]['MailAccountId']=_0x32e99a['id'];if(_0x364579[_0xf5a5('0x49')][_0xf5a5('0x54')]){_0x44559b[_0xf5a5('0x52')]=_[_0xf5a5('0x55')](_0x44559b[_0xf5a5('0x52')],{'$or':_[_0xf5a5('0x47')](_0x44559b['attributes'],function(_0x19aa1e){var _0xafb193={};_0xafb193[_0x19aa1e]={'$like':'%'+_0x364579[_0xf5a5('0x49')][_0xf5a5('0x54')]+'%'};return _0xafb193;})});}if(_0x364579[_0xf5a5('0x49')][_0xf5a5('0x9f')]){var _0x4162a4=_0x364579[_0xf5a5('0x49')][_0xf5a5('0x9f')]['split'](',');var _0x581dea={};_0x581dea[_0x4162a4[0x0]]={'$gte':moment(_0x4162a4[0x1])[_0xf5a5('0xa0')](_0xf5a5('0xa1'))};_0x44559b[_0xf5a5('0x52')]=_[_0xf5a5('0x55')](_0x44559b['where'],_0x581dea);}_0x44559b=_[_0xf5a5('0x55')]({},_0x44559b,_0x364579['options']);return db[_0xf5a5('0x9e')][_0xf5a5('0x1f')]({'where':_0x44559b[_0xf5a5('0x52')]})['then'](function(_0x36648d){_0x4c3efd[_0xf5a5('0x1f')]=_0x36648d;if(_0x364579[_0xf5a5('0x49')][_0xf5a5('0x5e')]){_0x44559b['include']=[{'all':!![]}];}return db[_0xf5a5('0x9e')][_0xf5a5('0x5a')](_0x44559b);})[_0xf5a5('0x11')](function(_0x4e7275){if(_0x364579[_0xf5a5('0x49')][_0xf5a5('0xa2')]===_0xf5a5('0xa3')){for(var _0x430c7d=0x0;_0x430c7d<_0x4e7275[_0xf5a5('0x4e')];_0x430c7d++){_0x4e7275[_0x430c7d][_0xf5a5('0x62')]=juice(_0x4e7275[_0x430c7d]['body']);}}_0x4c3efd['rows']=_0x4e7275;return _0x4c3efd;});}})[_0xf5a5('0x11')](respondWithFilteredResult(_0x14d3d5,_0x44559b))[_0xf5a5('0x5c')](handleError(_0x14d3d5,null));};exports['send']=function(_0x231166,_0x275342){var _0x189c4e,_0x599c13={},_0x2ff57b;if(_0x231166['body']['to']){_0x2ff57b=_0x231166['body']['to'][_0xf5a5('0xa4')](',')[0x0];}return db[_0xf5a5('0x59')][_0xf5a5('0x60')]({'where':{'id':_0x231166[_0xf5a5('0x6d')]['id']},'include':[{'model':db[_0xf5a5('0xa5')],'as':_0xf5a5('0xa6'),'include':[{'model':db[_0xf5a5('0x8a')],'as':_0xf5a5('0xa7'),'where':{'email':_0x2ff57b},'limit':0x1,'order':[[_0xf5a5('0xa8'),_0xf5a5('0xa9')]]}]},{'model':db[_0xf5a5('0x40')],'as':_0xf5a5('0x3d'),'raw':!![],'include':[{'model':db[_0xf5a5('0xaa')],'as':_0xf5a5('0xaa'),'raw':!![]}]}]})['then'](handleEntityNotFound(_0x275342,null))[_0xf5a5('0x11')](function(_0x220dd8){if(!_0x220dd8)return;_0x189c4e=_0x220dd8;if(!_0x220dd8[_0xf5a5('0x3d')])throw new Error(_0xf5a5('0xab'));if(_[_0xf5a5('0x76')](_0x231166[_0xf5a5('0x62')][_0xf5a5('0xac')])){_0x231166['body'][_0xf5a5('0xac')]=util[_0xf5a5('0xa0')](_0xf5a5('0xad'),_0x220dd8[_0xf5a5('0x26')],_0x220dd8[_0xf5a5('0x74')]||_0x220dd8[_0xf5a5('0x3d')]['user']);}if(_0x231166[_0xf5a5('0x62')][_0xf5a5('0xae')]&&_0x231166['body'][_0xf5a5('0xae')][_0xf5a5('0x4e')]){for(var _0x4cc5e0=0x0;_0x4cc5e0<_0x231166['body'][_0xf5a5('0xae')]['length'];_0x4cc5e0+=0x1){_0x231166[_0xf5a5('0x62')]['attachments'][_0x4cc5e0]={'filename':_0x231166[_0xf5a5('0x62')][_0xf5a5('0xae')][_0x4cc5e0][_0xf5a5('0x26')],'path':path['join'](config[_0xf5a5('0xaf')],_0xf5a5('0xb0'),_0x231166[_0xf5a5('0x62')][_0xf5a5('0xae')][_0x4cc5e0][_0xf5a5('0xb1')])};}}var _0x2c1fe6=_0x220dd8[_0xf5a5('0xb2')]();return respondWithRpcPromise(_0xf5a5('0xb3'),'sendMail',{'account':_0x2c1fe6,'message':_0x231166[_0xf5a5('0x62')]});})[_0xf5a5('0x11')](function(_0x274c61){if(!_0x274c61)return;_0x599c13=_0x274c61;if(!_0x189c4e['List'])throw new Error(_0xf5a5('0xb4'));if(_0x189c4e[_0xf5a5('0xa6')][_0xf5a5('0xa7')][_0xf5a5('0x4e')])return _0x189c4e[_0xf5a5('0xa6')][_0xf5a5('0xa7')][0x0];return db['CmContact'][_0xf5a5('0x6f')](_['defaults'](_0x231166[_0xf5a5('0x62')],{'firstName':_0x231166[_0xf5a5('0x62')]['to'],'email':_0x231166[_0xf5a5('0x62')]['to'],'phone':_0x231166[_0xf5a5('0x62')]['to'],'ListId':_0x189c4e[_0xf5a5('0x75')]}));})[_0xf5a5('0x11')](function(_0x3d0c20){if(!_0x3d0c20)return;var _0x4c62c7={'UserId':_0x231166['user']['id'],'ContactId':_0x3d0c20['id'],'MailAccountId':_0x189c4e['id'],'inReplyTo':_0x599c13['messageId'],'to':_0x231166[_0xf5a5('0x62')][_0xf5a5('0xac')],'cc':_0x231166[_0xf5a5('0x62')]['cc'],'subject':_0x231166['body'][_0xf5a5('0xb5')],'attach':_0x231166[_0xf5a5('0x62')][_0xf5a5('0xb6')],'firstMsgDirection':_0xf5a5('0xb7'),'lastMsgAt':moment()[_0xf5a5('0xa0')](_0xf5a5('0xa1')),'lastMsgDirection':_0xf5a5('0xb7'),'Messages':[_['merge'](_0x231166[_0xf5a5('0x62')],{'messageId':_0x599c13[_0xf5a5('0xb8')],'sentAt':moment()[_0xf5a5('0xa0')]('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x189c4e['id'],'UserId':_0x231166[_0xf5a5('0x31')]['id'],'ContactId':_0x3d0c20['id']})]};if(_0x231166['body'][_0xf5a5('0xb9')]){_0x4c62c7=_['merge'](_0x4c62c7,_0x231166[_0xf5a5('0x62')][_0xf5a5('0xb9')]);}return db['MailInteraction']['create'](_0x4c62c7,{'include':[{'model':db['MailMessage'],'as':_0xf5a5('0xba')}]});})[_0xf5a5('0x11')](respondWithResult(_0x275342,null))[_0xf5a5('0x5c')](handleError(_0x275342,null));};exports['verifySmtp']=function(_0x58214d,_0x56e215){return db[_0xf5a5('0x59')][_0xf5a5('0x60')]({'where':{'id':_0x58214d['params']['id']},'include':[{'model':db[_0xf5a5('0x40')],'as':_0xf5a5('0x3d'),'raw':!![],'include':[{'model':db[_0xf5a5('0xaa')],'as':_0xf5a5('0xaa'),'raw':!![]}]}]})[_0xf5a5('0x11')](handleEntityNotFound(_0x56e215,null))[_0xf5a5('0x11')](function(_0x376e69){if(!_0x376e69[_0xf5a5('0x3d')])return;var _0x43abb3=_0x376e69[_0xf5a5('0xb2')]();return respondWithRpcPromise('VerifySmtp',_0xf5a5('0xbb'),{'account':_0x43abb3});})[_0xf5a5('0x11')](respondWithResult(_0x56e215,null))[_0xf5a5('0x5c')](handleError(_0x56e215,null));};exports[_0xf5a5('0x23')]=function(_0x5603fd,_0x186488){return db['MailAccount'][_0xf5a5('0x60')]({'where':{'id':_0x5603fd[_0xf5a5('0x6d')]['id']}})['then'](handleEntityNotFound(_0x186488,null))[_0xf5a5('0x11')](function(_0x1e44a7){if(_0x1e44a7&&_0x1e44a7[_0xf5a5('0x3a')]){throw new db[(_0xf5a5('0xbc'))][(_0xf5a5('0xbd'))](_0xf5a5('0xbe'));}return _0x1e44a7;})[_0xf5a5('0x11')](removeEntity(_0x186488,null))[_0xf5a5('0x5c')](handleError(_0x186488,null));};exports[_0xf5a5('0xbf')]=function(_0x45c429,_0x20302d){return db['MailAccount'][_0xf5a5('0x60')]({'where':{'id':_0x45c429[_0xf5a5('0x6d')]['id']}})['then'](handleEntityNotFound(_0x20302d,null))[_0xf5a5('0x11')](function(_0x1842d7){if(_0x1842d7){return _0x1842d7['addAgents'](_0x45c429[_0xf5a5('0x62')][_0xf5a5('0x86')],_['omit'](_0x45c429['body'],['ids','id'])||{})[_0xf5a5('0xc0')](function(_0x3d544c){for(var _0x1037d7=0x0;_0x1037d7<_0x45c429[_0xf5a5('0x62')][_0xf5a5('0x86')][_0xf5a5('0x4e')];_0x1037d7+=0x1){socket[_0xf5a5('0xc1')](_0xf5a5('0xc2'),{'UserId':Number(_0x45c429[_0xf5a5('0x62')]['ids'][_0x1037d7]),'MailAccountId':Number(_0x45c429[_0xf5a5('0x6d')]['id'])});}return _0x3d544c;});}})[_0xf5a5('0x11')](respondWithResult(_0x20302d,null))['catch'](handleError(_0x20302d,null));};exports[_0xf5a5('0xc3')]=function(_0x9adc2c,_0x36979f){return db[_0xf5a5('0x59')][_0xf5a5('0x60')]({'where':{'id':_0x9adc2c[_0xf5a5('0x6d')]['id']}})[_0xf5a5('0x11')](handleEntityNotFound(_0x36979f,null))[_0xf5a5('0x11')](function(_0x7b404d){if(_0x7b404d){return _0x7b404d['removeAgents'](_0x9adc2c[_0xf5a5('0x49')]['ids'])[_0xf5a5('0x11')](function(){if(_[_0xf5a5('0xc4')](_0x9adc2c[_0xf5a5('0x49')][_0xf5a5('0x86')])){for(var _0x427ea6=0x0;_0x427ea6<_0x9adc2c[_0xf5a5('0x49')][_0xf5a5('0x86')]['length'];_0x427ea6+=0x1){socket[_0xf5a5('0xc1')](_0xf5a5('0xc5'),{'UserId':Number(_0x9adc2c['query'][_0xf5a5('0x86')][_0x427ea6]),'MailAccountId':Number(_0x9adc2c[_0xf5a5('0x6d')]['id'])});}}else{socket[_0xf5a5('0xc1')](_0xf5a5('0xc5'),{'UserId':Number(_0x9adc2c[_0xf5a5('0x49')][_0xf5a5('0x86')]),'MailAccountId':Number(_0x9adc2c[_0xf5a5('0x6d')]['id'])});}});}})[_0xf5a5('0x11')](respondWithStatusCode(_0x36979f,null))['catch'](handleError(_0x36979f,null));};exports['getAgents']=function(_0xfbe816,_0x100c68){var _0x3dc131={};var _0x7070b1={};var _0x43f782;var _0x193106;return db[_0xf5a5('0x59')][_0xf5a5('0x69')]({'where':{'id':_0xfbe816['params']['id']}})[_0xf5a5('0x11')](handleEntityNotFound(_0x100c68,null))['then'](function(_0x594061){if(_0x594061){_0x43f782=_0x594061;_0x7070b1[_0xf5a5('0x46')]=_[_0xf5a5('0x48')](db[_0xf5a5('0xc6')][_0xf5a5('0x43')]);_0x7070b1['query']=_[_0xf5a5('0x48')](_0xfbe816['query']);_0x7070b1['filters']=_[_0xf5a5('0x4b')](_0x7070b1[_0xf5a5('0x46')],_0x7070b1[_0xf5a5('0x49')]);_0x3dc131[_0xf5a5('0x4d')]=_[_0xf5a5('0x4b')](_0x7070b1['model'],qs[_0xf5a5('0x4c')](_0xfbe816[_0xf5a5('0x49')][_0xf5a5('0x4c')]));_0x3dc131[_0xf5a5('0x4d')]=_0x3dc131[_0xf5a5('0x4d')][_0xf5a5('0x4e')]?_0x3dc131['attributes']:_0x7070b1[_0xf5a5('0x46')];_0x3dc131['order']=qs[_0xf5a5('0x51')](_0xfbe816[_0xf5a5('0x49')]['sort']);_0x3dc131[_0xf5a5('0x52')]=qs[_0xf5a5('0x4a')](_['pick'](_0xfbe816[_0xf5a5('0x49')],_0x7070b1['filters']));if(_0xfbe816[_0xf5a5('0x49')][_0xf5a5('0x54')]){_0x3dc131[_0xf5a5('0x52')]=_[_0xf5a5('0x55')](_0x3dc131['where'],{'$or':_[_0xf5a5('0x47')](_0x3dc131[_0xf5a5('0x4d')],function(_0x167602){var _0x2249e3={};_0x2249e3[_0x167602]={'$like':'%'+_0xfbe816[_0xf5a5('0x49')][_0xf5a5('0x54')]+'%'};return _0x2249e3;})});}_0x3dc131=_[_0xf5a5('0x55')]({},_0x3dc131,_0xfbe816[_0xf5a5('0x58')]);return _0x43f782[_0xf5a5('0xc7')](_0x3dc131);}})[_0xf5a5('0x11')](function(_0x4871ca){if(_0x4871ca){_0x193106=_0x4871ca[_0xf5a5('0x4e')];if(!_0xfbe816['query'][_0xf5a5('0x6b')]('nolimit')){_0x3dc131['limit']=qs[_0xf5a5('0x1e')](_0xfbe816['query'][_0xf5a5('0x1e')]);_0x3dc131[_0xf5a5('0x20')]=qs[_0xf5a5('0x20')](_0xfbe816[_0xf5a5('0x49')][_0xf5a5('0x20')]);}return _0x43f782[_0xf5a5('0xc7')](_0x3dc131);}})['then'](function(_0x31c8a0){if(_0x31c8a0){return _0x31c8a0?{'count':_0x193106,'rows':_0x31c8a0}:null;}})['then'](respondWithResult(_0x100c68,null))[_0xf5a5('0x5c')](handleError(_0x100c68,null));};
\ No newline at end of file
+var _0xfd1a=['smtp-mail.outlook.com','outlook365','smtp.office365.com','user','password','pass','modernAuthentication','CloudProviderId','host','port','secure','service','authentication','username','Imap','Smtp','index','MailServerIn','MailServerOut','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','length','order','sort','where','filters','pick','filter','merge','MailAccount','include','findAll','rows','show','params','fields','includeAll','options','find','update','body','provider','Mail\x20Account\x20not\x20found','describe','MailAccountId','Disposition','create','getDispositions','hasOwnProperty','nolimit','removeDispositions','ids','CannedAnswer','getAnswers','findOne','removeAnswers','custom','email','isNil','active','description','role','userProfileId','autoAssociation','getImap','addImap','setImap','getSmtp','addSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions','CmContact','Contact','User','Owner','fullname','internal','Tag','Tags','color','tag','addApplications','sequelize','transaction','Transaction','READ_COMMITTED','MailApplication','findAndCountAll','stack','finally','getApplications','MailMessage','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','CmList','List','Contacts','updatedAt','DESC','CloudProvider','Smtp\x20configuration\x20not\x20found','from','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','getSmtpOptions','SendMail','sendMail','List\x20not\x20found','ListId','messageId','out','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','userMailAccount:remove','getAgents','moment','bluebird','path','lodash','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','localhost','socket.io-emitter','./mailAccount.socket','client','http','request','then','info','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','end','status','offset','undefined','count','limit','destroy','get','MailAccounts','UserProfileResource','name','send','gmail','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook.office365.com','Unknown\x20email\x20service\x20provider','yahoo','smtp.mail.yahoo.com'];(function(_0x422904,_0x106eca){var _0x37212c=function(_0x5d0d1b){while(--_0x5d0d1b){_0x422904['push'](_0x422904['shift']());}};_0x37212c(++_0x106eca);}(_0xfd1a,0x154));var _0xafd1=function(_0x1048df,_0x4d21dc){_0x1048df=_0x1048df-0x0;var _0x22b6dd=_0xfd1a[_0x1048df];return _0x22b6dd;};'use strict';var moment=require(_0xafd1('0x0'));var BPromise=require(_0xafd1('0x1'));var util=require('util');var path=require(_0xafd1('0x2'));var _=require(_0xafd1('0x3'));var juice=require(_0xafd1('0x4'));var Redis=require(_0xafd1('0x5'));var qs=require(_0xafd1('0x6'));var logger=require(_0xafd1('0x7'))(_0xafd1('0x8'));var config=require(_0xafd1('0x9'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0xafd1('0xa')],{'host':_0xafd1('0xb'),'port':0x18eb});var socket=require(_0xafd1('0xc'))(new Redis(config['redis']));require(_0xafd1('0xd'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0xafd1('0xe')][_0xafd1('0xf')]({'port':0x232b});function respondWithRpcPromise(_0x2dadf2,_0x5538be,_0x40cb26,_0x2c3c61){return new BPromise(function(_0x4706d5,_0x51648c){var _0x5c38ca=_0x2c3c61||client;return _0x5c38ca[_0xafd1('0x10')](_0x2dadf2,_0x40cb26)[_0xafd1('0x11')](function(_0x1ef21f){logger[_0xafd1('0x12')](_0xafd1('0x13'),_0x5538be,'request\x20sent');logger[_0xafd1('0x14')](_0xafd1('0x15'),_0x5538be,_0xafd1('0x16'),JSON[_0xafd1('0x17')](_0x1ef21f));if(_0x1ef21f[_0xafd1('0x18')]){if(_0x1ef21f[_0xafd1('0x18')][_0xafd1('0x19')]===0x1f4){logger[_0xafd1('0x18')]('MailAccount,\x20%s,\x20%s',_0x5538be,_0x1ef21f[_0xafd1('0x18')][_0xafd1('0x1a')]);return _0x51648c(_0x1ef21f['error'][_0xafd1('0x1a')]);}logger[_0xafd1('0x18')](_0xafd1('0x13'),_0x5538be,_0x1ef21f[_0xafd1('0x18')][_0xafd1('0x1a')]);return _0x4706d5(_0x1ef21f[_0xafd1('0x18')][_0xafd1('0x1a')]);}else{logger['info'](_0xafd1('0x13'),_0x5538be,'request\x20sent');_0x4706d5(_0x1ef21f[_0xafd1('0x1b')]['message']);}})[_0xafd1('0x1c')](function(_0x6abbe5){logger[_0xafd1('0x18')]('MailAccount,\x20%s,\x20%s',_0x5538be,_0x6abbe5);_0x51648c(_0x6abbe5);});});}function respondWithStatusCode(_0x4ca9fb,_0x1d0fcf){_0x1d0fcf=_0x1d0fcf||0xcc;return function(_0xa11f89){if(_0xa11f89){return _0x4ca9fb[_0xafd1('0x1d')](_0x1d0fcf);}return _0x4ca9fb['status'](_0x1d0fcf)[_0xafd1('0x1e')]();};}function respondWithResult(_0x126623,_0x2c2701){_0x2c2701=_0x2c2701||0xc8;return function(_0x1a9d21){if(_0x1a9d21){return _0x126623[_0xafd1('0x1f')](_0x2c2701)['json'](_0x1a9d21);}};}function respondWithFilteredResult(_0xadb5ae,_0x68950c){return function(_0x169f52){if(_0x169f52){var _0x5a6eac=typeof _0x68950c[_0xafd1('0x20')]==='undefined'&&typeof _0x68950c['limit']===_0xafd1('0x21');var _0x32c983=_0x169f52['count'];var _0x2cfc51=_0x5a6eac?0x0:_0x68950c['offset'];var _0x3dd576=_0x5a6eac?_0x169f52[_0xafd1('0x22')]:_0x68950c[_0xafd1('0x20')]+_0x68950c[_0xafd1('0x23')];var _0x3a6aa6;if(_0x3dd576>=_0x32c983){_0x3dd576=_0x32c983;_0x3a6aa6=0xc8;}else{_0x3a6aa6=0xce;}_0xadb5ae[_0xafd1('0x1f')](_0x3a6aa6);return _0xadb5ae['set']('Content-Range',_0x2cfc51+'-'+_0x3dd576+'/'+_0x32c983)['json'](_0x169f52);}return null;};}function saveUpdates(_0x5b17ec){return function(_0x325ba9){if(_0x325ba9){return _0x325ba9['update'](_0x5b17ec)[_0xafd1('0x11')](function(_0x5e5a31){return _0x5e5a31;});}return null;};}function removeEntity(_0x4d9582){return function(_0x25d6ca){if(_0x25d6ca){return _0x25d6ca[_0xafd1('0x24')]()['then'](function(){var _0x3bd0d2=_0x25d6ca[_0xafd1('0x25')]({'plain':!![]});var _0x529057=_0xafd1('0x26');return db[_0xafd1('0x27')][_0xafd1('0x24')]({'where':{'type':_0x529057,'resourceId':_0x3bd0d2['id']}})[_0xafd1('0x11')](function(){return _0x25d6ca;});})['then'](function(){_0x4d9582[_0xafd1('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2a722c){return function(_0x159476){if(!_0x159476){_0x2a722c[_0xafd1('0x1d')](0x194);}return _0x159476;};}function handleError(_0x6c2fd8,_0x29fc5d){_0x29fc5d=_0x29fc5d||0x1f4;return function(_0x54ce77){logger[_0xafd1('0x18')](_0x54ce77['stack']);if(_0x54ce77[_0xafd1('0x28')]){delete _0x54ce77['name'];}_0x6c2fd8[_0xafd1('0x1f')](_0x29fc5d)[_0xafd1('0x29')](_0x54ce77);};}function getImapHost(_0x502f05){switch(_0x502f05){case _0xafd1('0x2a'):return'imap.gmail.com';case'yahoo':return _0xafd1('0x2b');case _0xafd1('0x2c'):return _0xafd1('0x2d');case'outlook365':return _0xafd1('0x2e');}throw new Error(_0xafd1('0x2f'),_0x502f05);}function getSmtpHost(_0x9c0bc3){switch(_0x9c0bc3){case _0xafd1('0x2a'):return'smtp.gmail.com';case _0xafd1('0x30'):return _0xafd1('0x31');case _0xafd1('0x2c'):return _0xafd1('0x32');case _0xafd1('0x33'):return _0xafd1('0x34');}throw new Error('Unknown\x20email\x20service\x20provider',_0x9c0bc3);}function getAuthenticationOptions(_0x2c060c,_0x47e114){var _0x364173={};var _0x2438ac={};if(_0x2c060c){_0x364173[_0xafd1('0x35')]=_0x2438ac[_0xafd1('0x35')]=_0x47e114['username'];_0x364173[_0xafd1('0x36')]=_0x2438ac[_0xafd1('0x37')]=_0x47e114[_0xafd1('0x36')];if(_0x47e114['modernAuthentication']){_0x364173[_0xafd1('0x38')]=_0x2438ac[_0xafd1('0x38')]=!![];_0x364173[_0xafd1('0x39')]=_0x2438ac['CloudProviderId']=_0x47e114['CloudProviderId'];_0x364173[_0xafd1('0x36')]=_0x2438ac['pass']=null;}else{_0x364173[_0xafd1('0x39')]=_0x2438ac[_0xafd1('0x39')]=null;}_0x364173[_0xafd1('0x3a')]=getImapHost(_0x2c060c);_0x364173['port']=0x3e1;_0x2438ac[_0xafd1('0x3a')]=getSmtpHost(_0x2c060c);_0x2438ac[_0xafd1('0x3b')]=0x24b;_0x2438ac[_0xafd1('0x3c')]=![];_0x364173[_0xafd1('0x3d')]=_0x2438ac[_0xafd1('0x3d')]=null;}else{if(_0x47e114[_0xafd1('0x3e')]){_0x364173[_0xafd1('0x35')]=_0x2438ac[_0xafd1('0x35')]=_0x47e114[_0xafd1('0x3f')];_0x364173['password']=_0x2438ac[_0xafd1('0x37')]=_0x47e114[_0xafd1('0x36')];}else{_0x364173['authentication']=_0x2438ac[_0xafd1('0x3e')]=![];_0x364173['user']=_0x2438ac[_0xafd1('0x35')]=null;_0x364173['password']=_0x2438ac['pass']=null;}_0x364173[_0xafd1('0x3a')]=_0x47e114['Imap'][_0xafd1('0x3a')];_0x364173[_0xafd1('0x3b')]=_0x47e114[_0xafd1('0x40')]['port'];_0x2438ac['host']=_0x47e114[_0xafd1('0x41')]['host'];_0x2438ac[_0xafd1('0x3b')]=_0x47e114[_0xafd1('0x41')][_0xafd1('0x3b')];}return{'Imap':_0x364173,'Smtp':_0x2438ac};}exports[_0xafd1('0x42')]=function(_0x22a281,_0x3687f9){var _0x3f40fe={'include':[{'model':db[_0xafd1('0x43')],'as':_0xafd1('0x40')},{'model':db[_0xafd1('0x44')],'as':'Smtp'},{'model':db[_0xafd1('0x45')],'as':_0xafd1('0x46')}]},_0x1bb119={},_0x5221f8={'count':0x0,'rows':[]};var _0x119b39=_[_0xafd1('0x47')](db['MailAccount'][_0xafd1('0x48')],function(_0x1a33a7){return{'name':_0x1a33a7[_0xafd1('0x49')],'type':_0x1a33a7[_0xafd1('0x4a')][_0xafd1('0x4b')]};});_0x1bb119[_0xafd1('0x4c')]=_[_0xafd1('0x47')](_0x119b39,_0xafd1('0x28'));_0x1bb119[_0xafd1('0x4d')]=_[_0xafd1('0x4e')](_0x22a281[_0xafd1('0x4d')]);_0x1bb119['filters']=_['intersection'](_0x1bb119[_0xafd1('0x4c')],_0x1bb119[_0xafd1('0x4d')]);_0x3f40fe[_0xafd1('0x4f')]=_[_0xafd1('0x50')](_0x1bb119['model'],qs['fields'](_0x22a281['query']['fields']));_0x3f40fe[_0xafd1('0x4f')]=_0x3f40fe[_0xafd1('0x4f')][_0xafd1('0x51')]?_0x3f40fe[_0xafd1('0x4f')]:_0x1bb119[_0xafd1('0x4c')];if(!_0x22a281[_0xafd1('0x4d')]['hasOwnProperty']('nolimit')){_0x3f40fe[_0xafd1('0x23')]=qs['limit'](_0x22a281[_0xafd1('0x4d')][_0xafd1('0x23')]);_0x3f40fe[_0xafd1('0x20')]=qs[_0xafd1('0x20')](_0x22a281['query'][_0xafd1('0x20')]);}_0x3f40fe[_0xafd1('0x52')]=qs[_0xafd1('0x53')](_0x22a281[_0xafd1('0x4d')]['sort']);_0x3f40fe[_0xafd1('0x54')]=qs[_0xafd1('0x55')](_[_0xafd1('0x56')](_0x22a281[_0xafd1('0x4d')],_0x1bb119[_0xafd1('0x55')]),_0x119b39);if(_0x22a281[_0xafd1('0x4d')][_0xafd1('0x57')]){_0x3f40fe['where']=_[_0xafd1('0x58')](_0x3f40fe[_0xafd1('0x54')],{'$or':_[_0xafd1('0x47')](_0x119b39,function(_0x3774a4){if(_0x3774a4[_0xafd1('0x4a')]!=='VIRTUAL'){var _0x40d1c4={};_0x40d1c4[_0x3774a4[_0xafd1('0x28')]]={'$like':'%'+_0x22a281['query'][_0xafd1('0x57')]+'%'};return _0x40d1c4;}})});}_0x3f40fe=_[_0xafd1('0x58')]({},_0x3f40fe,_0x22a281['options']);var _0x5ac194={'where':_0x3f40fe[_0xafd1('0x54')]};return db[_0xafd1('0x59')][_0xafd1('0x22')](_0x5ac194)['then'](function(_0x8c9f3b){_0x5221f8[_0xafd1('0x22')]=_0x8c9f3b;if(_0x22a281['query']['includeAll']){_0x3f40fe[_0xafd1('0x5a')]=[{'all':!![]}];}return db[_0xafd1('0x59')][_0xafd1('0x5b')](_0x3f40fe);})[_0xafd1('0x11')](function(_0x378b22){_0x5221f8[_0xafd1('0x5c')]=_0x378b22;return _0x5221f8;})[_0xafd1('0x11')](respondWithFilteredResult(_0x3687f9,_0x3f40fe))['catch'](handleError(_0x3687f9,null));};exports[_0xafd1('0x5d')]=function(_0x1c0d6b,_0x10b7d4){var _0x1833bd={'raw':![],'where':{'id':_0x1c0d6b[_0xafd1('0x5e')]['id']},'include':[{'model':db[_0xafd1('0x43')],'as':_0xafd1('0x40')},{'model':db[_0xafd1('0x44')],'as':'Smtp'},{'model':db[_0xafd1('0x45')],'as':_0xafd1('0x46')}]},_0x5474c0={};_0x5474c0[_0xafd1('0x4c')]=_[_0xafd1('0x4e')](db[_0xafd1('0x59')][_0xafd1('0x48')]);_0x5474c0[_0xafd1('0x4d')]=_[_0xafd1('0x4e')](_0x1c0d6b[_0xafd1('0x4d')]);_0x5474c0['filters']=_[_0xafd1('0x50')](_0x5474c0[_0xafd1('0x4c')],_0x5474c0['query']);_0x1833bd[_0xafd1('0x4f')]=_['intersection'](_0x5474c0[_0xafd1('0x4c')],qs[_0xafd1('0x5f')](_0x1c0d6b[_0xafd1('0x4d')]['fields']));_0x1833bd['attributes']=_0x1833bd['attributes']['length']?_0x1833bd['attributes']:_0x5474c0[_0xafd1('0x4c')];if(_0x1c0d6b[_0xafd1('0x4d')][_0xafd1('0x60')]){_0x1833bd[_0xafd1('0x5a')]=[{'all':!![]}];}_0x1833bd=_[_0xafd1('0x58')]({},_0x1833bd,_0x1c0d6b[_0xafd1('0x61')]);return db[_0xafd1('0x59')][_0xafd1('0x62')](_0x1833bd)['then'](handleEntityNotFound(_0x10b7d4,null))['then'](respondWithResult(_0x10b7d4,null))['catch'](handleError(_0x10b7d4,null));};exports[_0xafd1('0x63')]=function(_0x242839,_0x5c9397){if(_0x242839[_0xafd1('0x64')]['id']){delete _0x242839[_0xafd1('0x64')]['id'];}var _0x2f6543=_0x242839[_0xafd1('0x64')][_0xafd1('0x65')]==='custom'?null:_0x242839[_0xafd1('0x64')][_0xafd1('0x65')];var _0x4c06de=_0x242839[_0xafd1('0x64')][_0xafd1('0x40')]||{};var _0x14bb92=_0x242839[_0xafd1('0x64')][_0xafd1('0x41')]||{};if(_0x2f6543){_0x4c06de[_0xafd1('0x3a')]=getImapHost(_0x2f6543);_0x4c06de[_0xafd1('0x3b')]=0x3e1;_0x14bb92[_0xafd1('0x3a')]=getSmtpHost(_0x2f6543);_0x14bb92[_0xafd1('0x3b')]=0x24b;_0x14bb92[_0xafd1('0x3c')]=![];}if(_0x14bb92[_0xafd1('0x38')]){_0x14bb92['secure']=![];}else{_0x14bb92[_0xafd1('0x39')]=null;}if(!_0x4c06de[_0xafd1('0x38')])_0x4c06de['CloudProviderId']=null;_0x242839[_0xafd1('0x64')]['Imap']=_0x4c06de;_0x242839['body']['Smtp']=_0x14bb92;return db[_0xafd1('0x59')][_0xafd1('0x62')]({'where':{'id':_0x242839[_0xafd1('0x5e')]['id']},'include':[{'model':db[_0xafd1('0x43')],'as':'Imap'},{'model':db[_0xafd1('0x44')],'as':'Smtp'},{'model':db[_0xafd1('0x45')],'as':_0xafd1('0x46')}]})[_0xafd1('0x11')](handleEntityNotFound(_0x5c9397,null))[_0xafd1('0x11')](function(_0x3adef9){if(!_0x3adef9)throw new Error(_0xafd1('0x66'));if(_0x3adef9[_0xafd1('0x3d')])delete _0x242839[_0xafd1('0x64')][_0xafd1('0x40')];return _0x3adef9;})[_0xafd1('0x11')](saveUpdates(_0x242839[_0xafd1('0x64')],null))[_0xafd1('0x11')](function(_0xfbd2a){if(!_0x242839[_0xafd1('0x64')][_0xafd1('0x40')])return _0xfbd2a;return db[_0xafd1('0x43')][_0xafd1('0x63')](_0x242839[_0xafd1('0x64')][_0xafd1('0x40')],{'where':{'MailAccountId':_0xfbd2a['id']}})[_0xafd1('0x11')](function(){return _0xfbd2a;});})[_0xafd1('0x11')](function(_0x3f2400){if(!_0x242839[_0xafd1('0x64')][_0xafd1('0x41')])return _0x3f2400;return db[_0xafd1('0x44')][_0xafd1('0x63')](_0x242839[_0xafd1('0x64')][_0xafd1('0x41')],{'where':{'MailAccountId':_0x3f2400['id']}})[_0xafd1('0x11')](function(){return _0x3f2400;});})['then'](respondWithResult(_0x5c9397,null))[_0xafd1('0x1c')](handleError(_0x5c9397,null));};exports[_0xafd1('0x67')]=function(_0x3b93f0,_0x1f0519){return db[_0xafd1('0x59')]['describe']()[_0xafd1('0x11')](respondWithResult(_0x1f0519,null))[_0xafd1('0x1c')](handleError(_0x1f0519,null));};exports['addDisposition']=function(_0x56e6f3,_0x542f49){if(_0x56e6f3['body']['id']){delete _0x56e6f3[_0xafd1('0x64')]['id'];}return db['MailAccount'][_0xafd1('0x62')]({'where':{'id':_0x56e6f3['params']['id']}})[_0xafd1('0x11')](handleEntityNotFound(_0x542f49,null))[_0xafd1('0x11')](function(_0x229fd7){if(_0x229fd7){_0x56e6f3[_0xafd1('0x64')][_0xafd1('0x68')]=_0x229fd7['id'];return db[_0xafd1('0x69')][_0xafd1('0x6a')](_0x56e6f3[_0xafd1('0x64')]);}})[_0xafd1('0x11')](respondWithResult(_0x542f49,null))[_0xafd1('0x1c')](handleError(_0x542f49,null));};exports[_0xafd1('0x6b')]=function(_0x44eb31,_0xaaf00b){var _0x453fe5={'raw':![],'where':{}};var _0x62069c={};var _0x2694c7={'count':0x0,'rows':[]};return db[_0xafd1('0x59')]['findOne']({'where':{'id':_0x44eb31[_0xafd1('0x5e')]['id']}})['then'](handleEntityNotFound(_0xaaf00b,null))[_0xafd1('0x11')](function(_0x560da0){if(_0x560da0){_0x62069c['model']=_[_0xafd1('0x4e')](db[_0xafd1('0x69')][_0xafd1('0x48')]);_0x62069c[_0xafd1('0x4d')]=_['keys'](_0x44eb31[_0xafd1('0x4d')]);_0x62069c[_0xafd1('0x55')]=_[_0xafd1('0x50')](_0x62069c[_0xafd1('0x4c')],_0x62069c[_0xafd1('0x4d')]);_0x453fe5[_0xafd1('0x4f')]=_[_0xafd1('0x50')](_0x62069c[_0xafd1('0x4c')],qs['fields'](_0x44eb31[_0xafd1('0x4d')][_0xafd1('0x5f')]));_0x453fe5[_0xafd1('0x4f')]=_0x453fe5['attributes'][_0xafd1('0x51')]?_0x453fe5[_0xafd1('0x4f')]:_0x62069c['model'];if(!_0x44eb31[_0xafd1('0x4d')][_0xafd1('0x6c')](_0xafd1('0x6d'))){_0x453fe5[_0xafd1('0x23')]=qs[_0xafd1('0x23')](_0x44eb31['query']['limit']);_0x453fe5[_0xafd1('0x20')]=qs[_0xafd1('0x20')](_0x44eb31[_0xafd1('0x4d')]['offset']);}_0x453fe5[_0xafd1('0x52')]=qs[_0xafd1('0x53')](_0x44eb31['query'][_0xafd1('0x53')]);_0x453fe5[_0xafd1('0x54')]=qs['filters'](_[_0xafd1('0x56')](_0x44eb31[_0xafd1('0x4d')],_0x62069c[_0xafd1('0x55')]));_0x453fe5[_0xafd1('0x54')]['MailAccountId']=_0x560da0['id'];if(_0x44eb31[_0xafd1('0x4d')]['filter']){_0x453fe5[_0xafd1('0x54')]=_[_0xafd1('0x58')](_0x453fe5[_0xafd1('0x54')],{'$or':_[_0xafd1('0x47')](_0x453fe5[_0xafd1('0x4f')],function(_0x59a3e1){var _0x350bc1={};_0x350bc1[_0x59a3e1]={'$like':'%'+_0x44eb31['query'][_0xafd1('0x57')]+'%'};return _0x350bc1;})});}_0x453fe5=_[_0xafd1('0x58')]({},_0x453fe5,_0x44eb31[_0xafd1('0x61')]);return db[_0xafd1('0x69')][_0xafd1('0x22')]({'where':_0x453fe5[_0xafd1('0x54')]})[_0xafd1('0x11')](function(_0x183287){_0x2694c7['count']=_0x183287;if(_0x44eb31[_0xafd1('0x4d')][_0xafd1('0x60')]){_0x453fe5['include']=[{'all':!![]}];}return db['Disposition'][_0xafd1('0x5b')](_0x453fe5);})[_0xafd1('0x11')](function(_0x5ccfc6){_0x2694c7[_0xafd1('0x5c')]=_0x5ccfc6;return _0x2694c7;});}})[_0xafd1('0x11')](respondWithFilteredResult(_0xaaf00b,_0x453fe5))[_0xafd1('0x1c')](handleError(_0xaaf00b,null));};exports[_0xafd1('0x6e')]=function(_0x2bf6bf,_0xdcf577){return db['MailAccount'][_0xafd1('0x62')]({'where':{'id':_0x2bf6bf['params']['id']}})[_0xafd1('0x11')](handleEntityNotFound(_0xdcf577,null))['then'](function(_0x2217fa){if(_0x2217fa){return _0x2217fa[_0xafd1('0x6e')](_0x2bf6bf[_0xafd1('0x4d')][_0xafd1('0x6f')]);}})['then'](respondWithStatusCode(_0xdcf577,null))[_0xafd1('0x1c')](handleError(_0xdcf577,null));};exports['addAnswer']=function(_0x364f35,_0x5ec71d){if(_0x364f35[_0xafd1('0x64')]['id']){delete _0x364f35[_0xafd1('0x64')]['id'];}return db['MailAccount']['find']({'where':{'id':_0x364f35['params']['id']}})['then'](handleEntityNotFound(_0x5ec71d,null))[_0xafd1('0x11')](function(_0x3717ff){if(_0x3717ff){_0x364f35['body']['MailAccountId']=_0x3717ff['id'];return db[_0xafd1('0x70')]['create'](_0x364f35['body']);}})[_0xafd1('0x11')](respondWithResult(_0x5ec71d,null))[_0xafd1('0x1c')](handleError(_0x5ec71d,null));};exports[_0xafd1('0x71')]=function(_0x11d314,_0x3246f8){var _0x19e731={'raw':![],'where':{}};var _0x40a384={};var _0x458296={'count':0x0,'rows':[]};return db['MailAccount'][_0xafd1('0x72')]({'where':{'id':_0x11d314[_0xafd1('0x5e')]['id']}})['then'](handleEntityNotFound(_0x3246f8,null))[_0xafd1('0x11')](function(_0x78a189){if(_0x78a189){_0x40a384[_0xafd1('0x4c')]=_['keys'](db['CannedAnswer'][_0xafd1('0x48')]);_0x40a384[_0xafd1('0x4d')]=_['keys'](_0x11d314[_0xafd1('0x4d')]);_0x40a384[_0xafd1('0x55')]=_[_0xafd1('0x50')](_0x40a384[_0xafd1('0x4c')],_0x40a384[_0xafd1('0x4d')]);_0x19e731[_0xafd1('0x4f')]=_[_0xafd1('0x50')](_0x40a384[_0xafd1('0x4c')],qs[_0xafd1('0x5f')](_0x11d314['query'][_0xafd1('0x5f')]));_0x19e731[_0xafd1('0x4f')]=_0x19e731['attributes'][_0xafd1('0x51')]?_0x19e731['attributes']:_0x40a384['model'];if(!_0x11d314[_0xafd1('0x4d')]['hasOwnProperty'](_0xafd1('0x6d'))){_0x19e731['limit']=qs[_0xafd1('0x23')](_0x11d314[_0xafd1('0x4d')]['limit']);_0x19e731[_0xafd1('0x20')]=qs['offset'](_0x11d314[_0xafd1('0x4d')]['offset']);}_0x19e731[_0xafd1('0x52')]=qs[_0xafd1('0x53')](_0x11d314[_0xafd1('0x4d')]['sort']);_0x19e731['where']=qs[_0xafd1('0x55')](_['pick'](_0x11d314['query'],_0x40a384[_0xafd1('0x55')]));_0x19e731['where'][_0xafd1('0x68')]=_0x78a189['id'];if(_0x11d314[_0xafd1('0x4d')][_0xafd1('0x57')]){_0x19e731[_0xafd1('0x54')]=_[_0xafd1('0x58')](_0x19e731[_0xafd1('0x54')],{'$or':_['map'](_0x19e731['attributes'],function(_0x168842){var _0x170b26={};_0x170b26[_0x168842]={'$like':'%'+_0x11d314[_0xafd1('0x4d')][_0xafd1('0x57')]+'%'};return _0x170b26;})});}_0x19e731=_['merge']({},_0x19e731,_0x11d314[_0xafd1('0x61')]);return db[_0xafd1('0x70')][_0xafd1('0x22')]({'where':_0x19e731[_0xafd1('0x54')]})[_0xafd1('0x11')](function(_0x3b505a){_0x458296[_0xafd1('0x22')]=_0x3b505a;if(_0x11d314['query'][_0xafd1('0x60')]){_0x19e731[_0xafd1('0x5a')]=[{'all':!![]}];}return db['CannedAnswer'][_0xafd1('0x5b')](_0x19e731);})['then'](function(_0x245843){_0x458296[_0xafd1('0x5c')]=_0x245843;return _0x458296;});}})[_0xafd1('0x11')](respondWithFilteredResult(_0x3246f8,_0x19e731))[_0xafd1('0x1c')](handleError(_0x3246f8,null));};exports[_0xafd1('0x73')]=function(_0x51d5fe,_0x407864){return db['MailAccount']['find']({'where':{'id':_0x51d5fe['params']['id']}})[_0xafd1('0x11')](handleEntityNotFound(_0x407864,null))['then'](function(_0x536dc0){if(_0x536dc0){return _0x536dc0[_0xafd1('0x73')](_0x51d5fe[_0xafd1('0x4d')][_0xafd1('0x6f')]);}})[_0xafd1('0x11')](respondWithStatusCode(_0x407864,null))[_0xafd1('0x1c')](handleError(_0x407864,null));};exports['create']=function(_0x3b3caf,_0x5179e6){var _0x57be77={'name':_0x3b3caf[_0xafd1('0x64')][_0xafd1('0x28')],'key':_0x3b3caf['body']['key'],'provider':_0x3b3caf['body']['provider']===_0xafd1('0x74')?null:_0x3b3caf[_0xafd1('0x64')][_0xafd1('0x65')],'email':_0x3b3caf[_0xafd1('0x64')][_0xafd1('0x75')],'ListId':_0x3b3caf[_0xafd1('0x64')]['ListId'],'active':!_[_0xafd1('0x76')](_0x3b3caf['body'][_0xafd1('0x77')])?_0x3b3caf['body']['active']:!![],'description':_0x3b3caf[_0xafd1('0x64')][_0xafd1('0x78')]||null};var _0x144627=getAuthenticationOptions(_0x57be77[_0xafd1('0x65')],_0x3b3caf[_0xafd1('0x64')]);_0x57be77[_0xafd1('0x40')]=_0x144627['Imap'];_0x57be77[_0xafd1('0x41')]=_0x144627['Smtp'];return db[_0xafd1('0x59')][_0xafd1('0x6a')](_0x57be77,{'include':[{'model':db[_0xafd1('0x44')],'as':'Smtp'},{'model':db['MailServerIn'],'as':_0xafd1('0x40')}]})[_0xafd1('0x11')](function(_0x469769){var _0x428440=_0x3b3caf[_0xafd1('0x35')][_0xafd1('0x25')]({'plain':!![]});if(!_0x428440)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x428440[_0xafd1('0x79')]===_0xafd1('0x35')){var _0x3bbba8=_0x469769['get']({'plain':!![]});return db['UserProfileSection'][_0xafd1('0x62')]({'where':{'name':'MailAccounts','userProfileId':_0x428440[_0xafd1('0x7a')]},'raw':!![]})[_0xafd1('0x11')](function(_0x5a5b13){if(_0x5a5b13&&_0x5a5b13[_0xafd1('0x7b')]===0x0){return db[_0xafd1('0x27')][_0xafd1('0x6a')]({'name':_0x3bbba8[_0xafd1('0x28')],'resourceId':_0x3bbba8['id'],'type':_0x5a5b13[_0xafd1('0x28')],'sectionId':_0x5a5b13['id']},{})[_0xafd1('0x11')](function(){return _0x469769;});}else{return _0x469769;}})['catch'](function(_0xfb5f44){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xfb5f44);throw _0xfb5f44;});}return _0x469769;})['then'](respondWithResult(_0x5179e6,0xc9))[_0xafd1('0x1c')](handleError(_0x5179e6,null));};exports[_0xafd1('0x7c')]=function(_0x20b917,_0x1c1806){return db[_0xafd1('0x59')][_0xafd1('0x72')]({'where':{'id':_0x20b917['params']['id']}})[_0xafd1('0x11')](handleEntityNotFound(_0x1c1806,null))[_0xafd1('0x11')](function(_0x38c2b0){if(_0x38c2b0){return _0x38c2b0[_0xafd1('0x7c')]();}return null;})[_0xafd1('0x11')](respondWithResult(_0x1c1806,null))[_0xafd1('0x1c')](handleError(_0x1c1806,null));};exports[_0xafd1('0x7d')]=function(_0x3731f4,_0x25b22a){if(_0x3731f4[_0xafd1('0x64')]['id']){delete _0x3731f4[_0xafd1('0x64')]['id'];}return db[_0xafd1('0x59')][_0xafd1('0x62')]({'where':{'id':_0x3731f4[_0xafd1('0x5e')]['id']}})[_0xafd1('0x11')](handleEntityNotFound(_0x25b22a,null))[_0xafd1('0x11')](function(_0x2ef39f){if(_0x2ef39f){_0x3731f4[_0xafd1('0x64')]['MailAccountId']=_0x2ef39f['id'];return db[_0xafd1('0x43')][_0xafd1('0x6a')](_0x3731f4[_0xafd1('0x64')]);}})[_0xafd1('0x11')](respondWithResult(_0x25b22a,null))['catch'](handleError(_0x25b22a,null));};exports['removeImap']=function(_0x314293,_0x17328b){return db[_0xafd1('0x59')]['findOne']({'where':{'id':_0x314293[_0xafd1('0x5e')]['id']}})['then'](handleEntityNotFound(_0x17328b,null))[_0xafd1('0x11')](function(_0x490a25){if(_0x490a25){return _0x490a25[_0xafd1('0x7e')](null);}return null;})['then'](respondWithStatusCode(_0x17328b,null))['catch'](handleError(_0x17328b,null));};exports['getSmtp']=function(_0x17acf8,_0x4354f5){return db['MailAccount'][_0xafd1('0x72')]({'where':{'id':_0x17acf8[_0xafd1('0x5e')]['id']}})[_0xafd1('0x11')](handleEntityNotFound(_0x4354f5,null))['then'](function(_0x396905){if(_0x396905){return _0x396905[_0xafd1('0x7f')]();}return null;})[_0xafd1('0x11')](respondWithResult(_0x4354f5,null))[_0xafd1('0x1c')](handleError(_0x4354f5,null));};exports[_0xafd1('0x80')]=function(_0x464f97,_0x339eda){if(_0x464f97[_0xafd1('0x64')]['id']){delete _0x464f97['body']['id'];}return db['MailAccount']['find']({'where':{'id':_0x464f97[_0xafd1('0x5e')]['id']}})['then'](handleEntityNotFound(_0x339eda,null))[_0xafd1('0x11')](function(_0x3e2547){if(_0x3e2547){_0x464f97[_0xafd1('0x64')]['MailAccountId']=_0x3e2547['id'];return db[_0xafd1('0x44')][_0xafd1('0x6a')](_0x464f97['body']);}})[_0xafd1('0x11')](respondWithResult(_0x339eda,null))[_0xafd1('0x1c')](handleError(_0x339eda,null));};exports['removeSmtp']=function(_0xd1311,_0x554c67){return db[_0xafd1('0x59')][_0xafd1('0x72')]({'where':{'id':_0xd1311[_0xafd1('0x5e')]['id']}})[_0xafd1('0x11')](handleEntityNotFound(_0x554c67,null))['then'](function(_0x458030){if(_0x458030){return _0x458030[_0xafd1('0x81')](null);}return null;})[_0xafd1('0x11')](respondWithStatusCode(_0x554c67,null))[_0xafd1('0x1c')](handleError(_0x554c67,null));};exports[_0xafd1('0x82')]=function(_0x547a35,_0x2cdddb){return db[_0xafd1('0x83')][_0xafd1('0x62')]({'where':{'id':_0x547a35[_0xafd1('0x5e')]['id']}})[_0xafd1('0x11')](handleEntityNotFound(_0x2cdddb,null))[_0xafd1('0x11')](function(_0xaff46a){if(_0xaff46a){return _0xaff46a[_0xafd1('0x82')](_0x547a35[_0xafd1('0x64')][_0xafd1('0x6f')],_[_0xafd1('0x84')](_0x547a35[_0xafd1('0x64')],[_0xafd1('0x6f'),'id'])||{});}})[_0xafd1('0x11')](respondWithResult(_0x2cdddb,null))[_0xafd1('0x1c')](handleError(_0x2cdddb,null));};exports[_0xafd1('0x85')]=function(_0x43fb70,_0x29f691){var _0xa831f2={'raw':![],'where':{}};var _0x3a93a7={};var _0x4e3c23={'count':0x0,'rows':[]};return db[_0xafd1('0x59')][_0xafd1('0x72')]({'where':{'id':_0x43fb70[_0xafd1('0x5e')]['id']}})[_0xafd1('0x11')](handleEntityNotFound(_0x29f691,null))[_0xafd1('0x11')](function(_0x44e6a5){if(_0x44e6a5){_0x3a93a7['model']=_[_0xafd1('0x4e')](db['MailInteraction'][_0xafd1('0x48')]);_0x3a93a7['query']=_[_0xafd1('0x4e')](_0x43fb70[_0xafd1('0x4d')]);_0x3a93a7[_0xafd1('0x55')]=_['intersection'](_0x3a93a7[_0xafd1('0x4c')],_0x3a93a7[_0xafd1('0x4d')]);_0xa831f2[_0xafd1('0x4f')]=_[_0xafd1('0x50')](_0x3a93a7[_0xafd1('0x4c')],qs[_0xafd1('0x5f')](_0x43fb70[_0xafd1('0x4d')][_0xafd1('0x5f')]));_0xa831f2[_0xafd1('0x4f')]=_0xa831f2[_0xafd1('0x4f')][_0xafd1('0x51')]?_0xa831f2[_0xafd1('0x4f')]:_0x3a93a7[_0xafd1('0x4c')];if(!_0x43fb70[_0xafd1('0x4d')]['hasOwnProperty']('nolimit')){_0xa831f2[_0xafd1('0x23')]=qs[_0xafd1('0x23')](_0x43fb70['query'][_0xafd1('0x23')]);_0xa831f2[_0xafd1('0x20')]=qs[_0xafd1('0x20')](_0x43fb70[_0xafd1('0x4d')]['offset']);}_0xa831f2[_0xafd1('0x52')]=qs[_0xafd1('0x53')](_0x43fb70[_0xafd1('0x4d')]['sort']);_0xa831f2[_0xafd1('0x54')]=qs['filters'](_['pick'](_0x43fb70[_0xafd1('0x4d')],_0x3a93a7[_0xafd1('0x55')]));_0xa831f2['where'][_0xafd1('0x68')]=_0x44e6a5['id'];if(_0x43fb70['query']['filter']){_0xa831f2[_0xafd1('0x54')]=_['merge'](_0xa831f2[_0xafd1('0x54')],{'$or':_['map'](_0xa831f2['attributes'],function(_0x3fccb6){var _0x383e6c={};_0x383e6c[_0x3fccb6]={'$like':'%'+_0x43fb70[_0xafd1('0x4d')][_0xafd1('0x57')]+'%'};return _0x383e6c;})});}_0xa831f2=_['merge']({},_0xa831f2,_0x43fb70[_0xafd1('0x61')]);return db[_0xafd1('0x83')][_0xafd1('0x22')]({'where':_0xa831f2[_0xafd1('0x54')]})[_0xafd1('0x11')](function(_0x9868d1){_0x4e3c23[_0xafd1('0x22')]=_0x9868d1;if(_0x43fb70[_0xafd1('0x4d')]['includeAll']){_0xa831f2[_0xafd1('0x5a')]=[{'model':db[_0xafd1('0x86')],'as':_0xafd1('0x87'),'required':![]},{'model':db[_0xafd1('0x88')],'as':_0xafd1('0x89'),'attributes':['name',_0xafd1('0x8a'),_0xafd1('0x8b')],'required':![]},{'model':db[_0xafd1('0x8c')],'as':_0xafd1('0x8d'),'attributes':['id','name',_0xafd1('0x8e')],'where':_0x43fb70[_0xafd1('0x4d')][_0xafd1('0x8f')]?{'id':_0x43fb70[_0xafd1('0x4d')][_0xafd1('0x8f')]}:undefined,'required':_0x43fb70['query'][_0xafd1('0x8f')]?!![]:![]}];}return db[_0xafd1('0x83')][_0xafd1('0x5b')](_0xa831f2);})['then'](function(_0x24b45c){_0x4e3c23[_0xafd1('0x5c')]=_0x24b45c;return _0x4e3c23;});}})[_0xafd1('0x11')](respondWithFilteredResult(_0x29f691,_0xa831f2))[_0xafd1('0x1c')](handleError(_0x29f691,null));};exports[_0xafd1('0x90')]=function addApplications(_0x13a4d2,_0x329d0a){var _0x4c8e89=_0x13a4d2[_0xafd1('0x5e')]['id'];var _0x4a5eaf=_0x13a4d2['body'];var _0x33aef9=0xc8;var _0x4e559c=null;return db[_0xafd1('0x91')][_0xafd1('0x92')]({'isolationLevel':db['sequelize'][_0xafd1('0x93')]['ISOLATION_LEVELS'][_0xafd1('0x94')]},function(_0x429ea1){return db['MailAccount'][_0xafd1('0x72')]({'where':{'id':_0x4c8e89},'transaction':_0x429ea1})[_0xafd1('0x11')](function(_0x62548c){if(_0x62548c){return db['MailApplication'][_0xafd1('0x24')]({'where':{'MailAccountId':_0x4c8e89},'transaction':_0x429ea1})['then'](function(){var _0x41d809=_['map'](_0x4a5eaf,function(_0x85176b){_0x85176b['MailAccountId']=_0x4c8e89;return _0x85176b;});return db['MailApplication']['bulkCreate'](_0x41d809,{'transaction':_0x429ea1});});}else{_0x33aef9=0x194;_0x4e559c=[];}});})[_0xafd1('0x11')](function(){if(_0x33aef9!==0x194){return db[_0xafd1('0x95')][_0xafd1('0x96')]({'where':{'MailAccountId':_0x4c8e89},'order':'priority'})[_0xafd1('0x11')](function(_0x23d32c){_0x4e559c=_0x23d32c;});}})['catch'](function(_0x188328){_0x33aef9=0x1f4;logger[_0xafd1('0x18')](_0x188328[_0xafd1('0x97')]);if(_0x188328[_0xafd1('0x28')]){delete _0x188328[_0xafd1('0x28')];}_0x4e559c=_0x188328;})[_0xafd1('0x98')](function(){if(_0x4e559c===null){_0x329d0a['sendStatus'](_0x33aef9);}else{if(_0x33aef9===0x1f4){_0x329d0a[_0xafd1('0x1f')](_0x33aef9)[_0xafd1('0x29')](_0x4e559c);}else{_0x329d0a[_0xafd1('0x1f')](_0x33aef9)['json'](_0x4e559c);}}});};exports[_0xafd1('0x99')]=function(_0x5a9ccc,_0x3e1520){var _0xeab599={};var _0x2f9237={};var _0x9ab538;var _0x48a8ea;return db[_0xafd1('0x59')]['findOne']({'where':{'id':_0x5a9ccc['params']['id']}})[_0xafd1('0x11')](handleEntityNotFound(_0x3e1520,null))[_0xafd1('0x11')](function(_0x6cf761){if(_0x6cf761){_0x9ab538=_0x6cf761;_0x2f9237[_0xafd1('0x4c')]=_[_0xafd1('0x4e')](db[_0xafd1('0x95')]['rawAttributes']);_0x2f9237[_0xafd1('0x4d')]=_[_0xafd1('0x4e')](_0x5a9ccc['query']);_0x2f9237[_0xafd1('0x55')]=_[_0xafd1('0x50')](_0x2f9237[_0xafd1('0x4c')],_0x2f9237['query']);_0xeab599['attributes']=_[_0xafd1('0x50')](_0x2f9237[_0xafd1('0x4c')],qs['fields'](_0x5a9ccc[_0xafd1('0x4d')][_0xafd1('0x5f')]));_0xeab599[_0xafd1('0x4f')]=_0xeab599[_0xafd1('0x4f')][_0xafd1('0x51')]?_0xeab599[_0xafd1('0x4f')]:_0x2f9237['model'];_0xeab599[_0xafd1('0x52')]=qs['sort'](_0x5a9ccc[_0xafd1('0x4d')]['sort']);_0xeab599['where']=qs[_0xafd1('0x55')](_[_0xafd1('0x56')](_0x5a9ccc[_0xafd1('0x4d')],_0x2f9237['filters']));if(_0x5a9ccc[_0xafd1('0x4d')]['filter']){_0xeab599[_0xafd1('0x54')]=_[_0xafd1('0x58')](_0xeab599[_0xafd1('0x54')],{'$or':_[_0xafd1('0x47')](_0xeab599[_0xafd1('0x4f')],function(_0x74e23d){var _0x10305e={};_0x10305e[_0x74e23d]={'$like':'%'+_0x5a9ccc['query'][_0xafd1('0x57')]+'%'};return _0x10305e;})});}_0xeab599=_[_0xafd1('0x58')]({},_0xeab599,_0x5a9ccc[_0xafd1('0x61')]);return _0x9ab538[_0xafd1('0x99')](_0xeab599);}})['then'](function(_0x32dc30){if(_0x32dc30){_0x48a8ea=_0x32dc30[_0xafd1('0x51')];if(!_0x5a9ccc[_0xafd1('0x4d')]['hasOwnProperty'](_0xafd1('0x6d'))){_0xeab599[_0xafd1('0x23')]=qs[_0xafd1('0x23')](_0x5a9ccc[_0xafd1('0x4d')][_0xafd1('0x23')]);_0xeab599[_0xafd1('0x20')]=qs['offset'](_0x5a9ccc[_0xafd1('0x4d')]['offset']);}return _0x9ab538['getApplications'](_0xeab599);}})['then'](function(_0xf886e1){if(_0xf886e1){return _0xf886e1?{'count':_0x48a8ea,'rows':_0xf886e1}:null;}})[_0xafd1('0x11')](respondWithResult(_0x3e1520,null))[_0xafd1('0x1c')](handleError(_0x3e1520,null));};exports['getMessages']=function(_0x312dc2,_0x953354){var _0x3bba64={'raw':!![],'where':{}};var _0x2778c8={};var _0x52dbc9={'count':0x0,'rows':[]};return db['MailAccount'][_0xafd1('0x72')]({'where':{'id':_0x312dc2[_0xafd1('0x5e')]['id']}})['then'](handleEntityNotFound(_0x953354,null))['then'](function(_0x35da7f){if(_0x35da7f){_0x2778c8[_0xafd1('0x4c')]=_[_0xafd1('0x4e')](db[_0xafd1('0x9a')]['rawAttributes']);_0x2778c8[_0xafd1('0x4d')]=_[_0xafd1('0x4e')](_0x312dc2['query']);_0x2778c8['filters']=_[_0xafd1('0x50')](_0x2778c8[_0xafd1('0x4c')],_0x2778c8['query']);_0x3bba64[_0xafd1('0x4f')]=_[_0xafd1('0x50')](_0x2778c8[_0xafd1('0x4c')],qs[_0xafd1('0x5f')](_0x312dc2['query'][_0xafd1('0x5f')]));_0x3bba64[_0xafd1('0x4f')]=_0x3bba64[_0xafd1('0x4f')]['length']?_0x3bba64[_0xafd1('0x4f')]:_0x2778c8[_0xafd1('0x4c')];if(!_0x312dc2[_0xafd1('0x4d')][_0xafd1('0x6c')](_0xafd1('0x6d'))){_0x3bba64[_0xafd1('0x23')]=qs['limit'](_0x312dc2[_0xafd1('0x4d')][_0xafd1('0x23')]);_0x3bba64[_0xafd1('0x20')]=qs['offset'](_0x312dc2[_0xafd1('0x4d')]['offset']);}_0x3bba64[_0xafd1('0x52')]=qs[_0xafd1('0x53')](_0x312dc2[_0xafd1('0x4d')][_0xafd1('0x53')]);_0x3bba64['where']=qs[_0xafd1('0x55')](_[_0xafd1('0x56')](_0x312dc2[_0xafd1('0x4d')],_0x2778c8['filters']));_0x3bba64[_0xafd1('0x54')][_0xafd1('0x68')]=_0x35da7f['id'];if(_0x312dc2['query'][_0xafd1('0x57')]){_0x3bba64['where']=_[_0xafd1('0x58')](_0x3bba64[_0xafd1('0x54')],{'$or':_[_0xafd1('0x47')](_0x3bba64['attributes'],function(_0x1b73b9){var _0x317558={};_0x317558[_0x1b73b9]={'$like':'%'+_0x312dc2[_0xafd1('0x4d')][_0xafd1('0x57')]+'%'};return _0x317558;})});}if(_0x312dc2[_0xafd1('0x4d')]['$gte']){var _0x2ed6b7=_0x312dc2[_0xafd1('0x4d')]['$gte'][_0xafd1('0x9b')](',');var _0x56180e={};_0x56180e[_0x2ed6b7[0x0]]={'$gte':moment(_0x2ed6b7[0x1])[_0xafd1('0x9c')](_0xafd1('0x9d'))};_0x3bba64['where']=_['merge'](_0x3bba64['where'],_0x56180e);}_0x3bba64=_[_0xafd1('0x58')]({},_0x3bba64,_0x312dc2[_0xafd1('0x61')]);return db[_0xafd1('0x9a')][_0xafd1('0x22')]({'where':_0x3bba64[_0xafd1('0x54')]})[_0xafd1('0x11')](function(_0x4f8b3c){_0x52dbc9[_0xafd1('0x22')]=_0x4f8b3c;if(_0x312dc2[_0xafd1('0x4d')][_0xafd1('0x60')]){_0x3bba64['include']=[{'all':!![]}];}return db[_0xafd1('0x9a')][_0xafd1('0x5b')](_0x3bba64);})[_0xafd1('0x11')](function(_0x18a630){if(_0x312dc2[_0xafd1('0x4d')][_0xafd1('0x9e')]===_0xafd1('0x9f')){for(var _0x53af32=0x0;_0x53af32<_0x18a630['length'];_0x53af32++){_0x18a630[_0x53af32][_0xafd1('0x64')]=juice(_0x18a630[_0x53af32][_0xafd1('0x64')]);}}_0x52dbc9[_0xafd1('0x5c')]=_0x18a630;return _0x52dbc9;});}})['then'](respondWithFilteredResult(_0x953354,_0x3bba64))[_0xafd1('0x1c')](handleError(_0x953354,null));};exports[_0xafd1('0x29')]=function(_0x232e53,_0x2b7143){var _0x51e107,_0x89a0d6={},_0x133067;if(_0x232e53['body']['to']){_0x133067=_0x232e53[_0xafd1('0x64')]['to'][_0xafd1('0x9b')](',')[0x0];}return db[_0xafd1('0x59')][_0xafd1('0x62')]({'where':{'id':_0x232e53['params']['id']},'include':[{'model':db[_0xafd1('0xa0')],'as':_0xafd1('0xa1'),'include':[{'model':db[_0xafd1('0x86')],'as':_0xafd1('0xa2'),'where':{'email':_0x133067},'limit':0x1,'order':[[_0xafd1('0xa3'),_0xafd1('0xa4')]]}]},{'model':db[_0xafd1('0x44')],'as':_0xafd1('0x41'),'raw':!![],'include':[{'model':db[_0xafd1('0xa5')],'as':_0xafd1('0xa5'),'raw':!![]}]}]})[_0xafd1('0x11')](handleEntityNotFound(_0x2b7143,null))[_0xafd1('0x11')](function(_0x1617e8){if(!_0x1617e8)return;_0x51e107=_0x1617e8;if(!_0x1617e8[_0xafd1('0x41')])throw new Error(_0xafd1('0xa6'));if(_[_0xafd1('0x76')](_0x232e53[_0xafd1('0x64')]['from'])){_0x232e53['body'][_0xafd1('0xa7')]=util[_0xafd1('0x9c')](_0xafd1('0xa8'),_0x1617e8[_0xafd1('0x28')],_0x1617e8[_0xafd1('0x75')]||_0x1617e8[_0xafd1('0x41')][_0xafd1('0x35')]);}if(_0x232e53[_0xafd1('0x64')][_0xafd1('0xa9')]&&_0x232e53['body'][_0xafd1('0xa9')]['length']){for(var _0x2457ba=0x0;_0x2457ba<_0x232e53[_0xafd1('0x64')][_0xafd1('0xa9')][_0xafd1('0x51')];_0x2457ba+=0x1){_0x232e53[_0xafd1('0x64')][_0xafd1('0xa9')][_0x2457ba]={'filename':_0x232e53['body'][_0xafd1('0xa9')][_0x2457ba][_0xafd1('0x28')],'path':path[_0xafd1('0xaa')](config[_0xafd1('0xab')],_0xafd1('0xac'),_0x232e53[_0xafd1('0x64')][_0xafd1('0xa9')][_0x2457ba][_0xafd1('0xad')])};}}var _0x38469c=_0x1617e8[_0xafd1('0xae')]();return respondWithRpcPromise(_0xafd1('0xaf'),_0xafd1('0xb0'),{'account':_0x38469c,'message':_0x232e53[_0xafd1('0x64')]});})[_0xafd1('0x11')](function(_0x287d0e){if(!_0x287d0e)return;_0x89a0d6=_0x287d0e;if(!_0x51e107[_0xafd1('0xa1')])throw new Error(_0xafd1('0xb1'));if(_0x51e107[_0xafd1('0xa1')][_0xafd1('0xa2')][_0xafd1('0x51')])return _0x51e107[_0xafd1('0xa1')][_0xafd1('0xa2')][0x0];return db[_0xafd1('0x86')]['create'](_['defaults'](_0x232e53[_0xafd1('0x64')],{'firstName':_0x232e53[_0xafd1('0x64')]['to'],'email':_0x232e53['body']['to'],'phone':_0x232e53[_0xafd1('0x64')]['to'],'ListId':_0x51e107[_0xafd1('0xb2')]}));})['then'](function(_0x170df9){if(!_0x170df9)return;var _0x3cb23d={'UserId':_0x232e53[_0xafd1('0x35')]['id'],'ContactId':_0x170df9['id'],'MailAccountId':_0x51e107['id'],'inReplyTo':_0x89a0d6[_0xafd1('0xb3')],'to':_0x232e53[_0xafd1('0x64')][_0xafd1('0xa7')],'cc':_0x232e53[_0xafd1('0x64')]['cc'],'subject':_0x232e53[_0xafd1('0x64')]['subject'],'attach':_0x232e53[_0xafd1('0x64')]['attach'],'firstMsgDirection':'out','lastMsgAt':moment()[_0xafd1('0x9c')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':_0xafd1('0xb4'),'Messages':[_[_0xafd1('0x58')](_0x232e53[_0xafd1('0x64')],{'messageId':_0x89a0d6[_0xafd1('0xb3')],'sentAt':moment()['format'](_0xafd1('0x9d')),'read':!![],'MailAccountId':_0x51e107['id'],'UserId':_0x232e53[_0xafd1('0x35')]['id'],'ContactId':_0x170df9['id']})]};if(_0x232e53[_0xafd1('0x64')][_0xafd1('0xb5')]){_0x3cb23d=_['merge'](_0x3cb23d,_0x232e53[_0xafd1('0x64')][_0xafd1('0xb5')]);}return db[_0xafd1('0x83')][_0xafd1('0x6a')](_0x3cb23d,{'include':[{'model':db[_0xafd1('0x9a')],'as':_0xafd1('0xb6')}]});})[_0xafd1('0x11')](respondWithResult(_0x2b7143,null))['catch'](handleError(_0x2b7143,null));};exports[_0xafd1('0xb7')]=function(_0x1fc236,_0x546ac3){return db[_0xafd1('0x59')][_0xafd1('0x62')]({'where':{'id':_0x1fc236[_0xafd1('0x5e')]['id']},'include':[{'model':db[_0xafd1('0x44')],'as':'Smtp','raw':!![],'include':[{'model':db[_0xafd1('0xa5')],'as':'CloudProvider','raw':!![]}]}]})['then'](handleEntityNotFound(_0x546ac3,null))[_0xafd1('0x11')](function(_0x33a22f){if(!_0x33a22f['Smtp'])return;var _0x51f956=_0x33a22f['getSmtpOptions']();return respondWithRpcPromise(_0xafd1('0xb8'),'verifySmtp',{'account':_0x51f956});})[_0xafd1('0x11')](respondWithResult(_0x546ac3,null))[_0xafd1('0x1c')](handleError(_0x546ac3,null));};exports[_0xafd1('0x24')]=function(_0x5e1d2d,_0x5b9a00){return db[_0xafd1('0x59')][_0xafd1('0x62')]({'where':{'id':_0x5e1d2d[_0xafd1('0x5e')]['id']}})['then'](handleEntityNotFound(_0x5b9a00,null))['then'](function(_0x6a8755){if(_0x6a8755&&_0x6a8755['service']){throw new db[(_0xafd1('0xb9'))][(_0xafd1('0xba'))](_0xafd1('0xbb'));}return _0x6a8755;})[_0xafd1('0x11')](removeEntity(_0x5b9a00,null))[_0xafd1('0x1c')](handleError(_0x5b9a00,null));};exports[_0xafd1('0xbc')]=function(_0x327e90,_0x282227){return db['MailAccount'][_0xafd1('0x62')]({'where':{'id':_0x327e90['params']['id']}})[_0xafd1('0x11')](handleEntityNotFound(_0x282227,null))[_0xafd1('0x11')](function(_0x2106ad){if(_0x2106ad){return _0x2106ad['addAgents'](_0x327e90[_0xafd1('0x64')][_0xafd1('0x6f')],_[_0xafd1('0x84')](_0x327e90[_0xafd1('0x64')],['ids','id'])||{})[_0xafd1('0xbd')](function(_0x2dc3c3){for(var _0x5eddeb=0x0;_0x5eddeb<_0x327e90[_0xafd1('0x64')][_0xafd1('0x6f')]['length'];_0x5eddeb+=0x1){socket[_0xafd1('0xbe')](_0xafd1('0xbf'),{'UserId':Number(_0x327e90[_0xafd1('0x64')]['ids'][_0x5eddeb]),'MailAccountId':Number(_0x327e90[_0xafd1('0x5e')]['id'])});}return _0x2dc3c3;});}})[_0xafd1('0x11')](respondWithResult(_0x282227,null))[_0xafd1('0x1c')](handleError(_0x282227,null));};exports[_0xafd1('0xc0')]=function(_0x165a41,_0x1684ee){return db['MailAccount'][_0xafd1('0x62')]({'where':{'id':_0x165a41['params']['id']}})['then'](handleEntityNotFound(_0x1684ee,null))[_0xafd1('0x11')](function(_0x3c23ec){if(_0x3c23ec){return _0x3c23ec[_0xafd1('0xc0')](_0x165a41[_0xafd1('0x4d')][_0xafd1('0x6f')])[_0xafd1('0x11')](function(){if(_['isArray'](_0x165a41[_0xafd1('0x4d')]['ids'])){for(var _0x5c4f8d=0x0;_0x5c4f8d<_0x165a41['query'][_0xafd1('0x6f')][_0xafd1('0x51')];_0x5c4f8d+=0x1){socket[_0xafd1('0xbe')](_0xafd1('0xc1'),{'UserId':Number(_0x165a41[_0xafd1('0x4d')]['ids'][_0x5c4f8d]),'MailAccountId':Number(_0x165a41[_0xafd1('0x5e')]['id'])});}}else{socket[_0xafd1('0xbe')](_0xafd1('0xc1'),{'UserId':Number(_0x165a41[_0xafd1('0x4d')][_0xafd1('0x6f')]),'MailAccountId':Number(_0x165a41[_0xafd1('0x5e')]['id'])});}});}})[_0xafd1('0x11')](respondWithStatusCode(_0x1684ee,null))['catch'](handleError(_0x1684ee,null));};exports[_0xafd1('0xc2')]=function(_0x1b8579,_0x4d3718){var _0x46f924={};var _0xe28d32={};var _0x375264;var _0x297a3d;return db[_0xafd1('0x59')][_0xafd1('0x72')]({'where':{'id':_0x1b8579[_0xafd1('0x5e')]['id']}})['then'](handleEntityNotFound(_0x4d3718,null))[_0xafd1('0x11')](function(_0x5521e4){if(_0x5521e4){_0x375264=_0x5521e4;_0xe28d32[_0xafd1('0x4c')]=_[_0xafd1('0x4e')](db[_0xafd1('0x88')][_0xafd1('0x48')]);_0xe28d32['query']=_[_0xafd1('0x4e')](_0x1b8579['query']);_0xe28d32['filters']=_['intersection'](_0xe28d32[_0xafd1('0x4c')],_0xe28d32['query']);_0x46f924[_0xafd1('0x4f')]=_[_0xafd1('0x50')](_0xe28d32['model'],qs['fields'](_0x1b8579['query']['fields']));_0x46f924[_0xafd1('0x4f')]=_0x46f924[_0xafd1('0x4f')][_0xafd1('0x51')]?_0x46f924[_0xafd1('0x4f')]:_0xe28d32[_0xafd1('0x4c')];_0x46f924[_0xafd1('0x52')]=qs[_0xafd1('0x53')](_0x1b8579[_0xafd1('0x4d')][_0xafd1('0x53')]);_0x46f924[_0xafd1('0x54')]=qs[_0xafd1('0x55')](_['pick'](_0x1b8579['query'],_0xe28d32['filters']));if(_0x1b8579[_0xafd1('0x4d')][_0xafd1('0x57')]){_0x46f924[_0xafd1('0x54')]=_[_0xafd1('0x58')](_0x46f924['where'],{'$or':_[_0xafd1('0x47')](_0x46f924[_0xafd1('0x4f')],function(_0x557430){var _0x48abc0={};_0x48abc0[_0x557430]={'$like':'%'+_0x1b8579[_0xafd1('0x4d')][_0xafd1('0x57')]+'%'};return _0x48abc0;})});}_0x46f924=_['merge']({},_0x46f924,_0x1b8579[_0xafd1('0x61')]);return _0x375264[_0xafd1('0xc2')](_0x46f924);}})[_0xafd1('0x11')](function(_0x8dbee3){if(_0x8dbee3){_0x297a3d=_0x8dbee3[_0xafd1('0x51')];if(!_0x1b8579[_0xafd1('0x4d')]['hasOwnProperty'](_0xafd1('0x6d'))){_0x46f924[_0xafd1('0x23')]=qs[_0xafd1('0x23')](_0x1b8579[_0xafd1('0x4d')][_0xafd1('0x23')]);_0x46f924[_0xafd1('0x20')]=qs[_0xafd1('0x20')](_0x1b8579[_0xafd1('0x4d')]['offset']);}return _0x375264[_0xafd1('0xc2')](_0x46f924);}})[_0xafd1('0x11')](function(_0xcaf183){if(_0xcaf183){return _0xcaf183?{'count':_0x297a3d,'rows':_0xcaf183}:null;}})[_0xafd1('0x11')](respondWithResult(_0x4d3718,null))[_0xafd1('0x1c')](handleError(_0x4d3718,null));};
\ No newline at end of file
index 84d16d5..2c95d0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda42=['update','remove','hook','exports','events','../../mysqldb','MailAccount','setMaxListeners','save'];(function(_0x1296c4,_0x714b7c){var _0x2dd953=function(_0x25a731){while(--_0x25a731){_0x1296c4['push'](_0x1296c4['shift']());}};_0x2dd953(++_0x714b7c);}(_0xda42,0x1bd));var _0x2da4=function(_0x5fda9c,_0x50bb50){_0x5fda9c=_0x5fda9c-0x0;var _0x250df0=_0xda42[_0x5fda9c];return _0x250df0;};'use strict';var EventEmitter=require(_0x2da4('0x0'));var MailAccount=require(_0x2da4('0x1'))['db'][_0x2da4('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x2da4('0x3')](0x0);var events={'afterCreate':_0x2da4('0x4'),'afterUpdate':_0x2da4('0x5'),'afterDestroy':_0x2da4('0x6')};function emitEvent(_0x4d5ac9){return function(_0x412778,_0x518e05,_0x17f798){MailAccountEvents['emit'](_0x4d5ac9+':'+_0x412778['id'],_0x412778);MailAccountEvents['emit'](_0x4d5ac9,_0x412778);_0x17f798(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailAccount[_0x2da4('0x7')](e,emitEvent(event));}}module[_0x2da4('0x8')]=MailAccountEvents;
\ No newline at end of file
+var _0xc48d=['hasOwnProperty','hook','exports','events','../../mysqldb','save','update','remove','emit'];(function(_0x2701b1,_0x25ce96){var _0x310208=function(_0x4cd39f){while(--_0x4cd39f){_0x2701b1['push'](_0x2701b1['shift']());}};_0x310208(++_0x25ce96);}(_0xc48d,0x11a));var _0xdc48=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xc48d[_0x5c3c0b];return _0x52ecd2;};'use strict';var EventEmitter=require(_0xdc48('0x0'));var MailAccount=require(_0xdc48('0x1'))['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xdc48('0x2'),'afterUpdate':_0xdc48('0x3'),'afterDestroy':_0xdc48('0x4')};function emitEvent(_0x39ee61){return function(_0x3da692,_0x286809,_0x2faa2e){MailAccountEvents[_0xdc48('0x5')](_0x39ee61+':'+_0x3da692['id'],_0x3da692);MailAccountEvents[_0xdc48('0x5')](_0x39ee61,_0x3da692);_0x2faa2e(null);};}for(var e in events){if(events[_0xdc48('0x6')](e)){var event=events[e];MailAccount[_0xdc48('0x7')](e,emitEvent(event));}}module[_0xdc48('0x8')]=MailAccountEvents;
\ No newline at end of file
index 5b20505..213e6f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63a9=['auth','OAuth2','data5','user','pass','./mailAccount.attributes','exports','define','MailAccount','mail_accounts','service','provider','host','Smtp','port','secure','authentication','modernAuthentication','CloudProvider'];(function(_0x20571a,_0x5baac6){var _0x3f0d9b=function(_0x41dfa8){while(--_0x41dfa8){_0x20571a['push'](_0x20571a['shift']());}};_0x3f0d9b(++_0x5baac6);}(_0x63a9,0x1a7));var _0x963a=function(_0x3d642b,_0x5e0243){_0x3d642b=_0x3d642b-0x0;var _0x72108f=_0x63a9[_0x3d642b];return _0x72108f;};'use strict';var attributes=require(_0x963a('0x0'));module[_0x963a('0x1')]=function(_0x50eb0e){return _0x50eb0e[_0x963a('0x2')](_0x963a('0x3'),attributes,{'tableName':_0x963a('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x2daee3=this;var _0x5c6d4e={'id':_0x2daee3['id'],'tls':{'rejectUnauthorized':![]}};if(_0x2daee3['provider']!=='custom'){_0x5c6d4e[_0x963a('0x5')]=_0x2daee3[_0x963a('0x6')];}else{_0x5c6d4e[_0x963a('0x7')]=_0x2daee3['Smtp'][_0x963a('0x7')];_0x5c6d4e['port']=_0x2daee3[_0x963a('0x8')][_0x963a('0x9')];_0x5c6d4e['secure']=_0x2daee3['Smtp'][_0x963a('0xa')];}if(_0x2daee3[_0x963a('0x8')][_0x963a('0xb')]){if(_0x2daee3[_0x963a('0x8')][_0x963a('0xc')]){if(!_0x2daee3[_0x963a('0x8')][_0x963a('0xd')])throw new Error('Cloud\x20Provider\x20configuration\x20not\x20found');_0x5c6d4e[_0x963a('0xe')]={'type':_0x963a('0xf'),'user':_0x2daee3['Smtp']['user'],'accessToken':_0x2daee3[_0x963a('0x8')][_0x963a('0xd')][_0x963a('0x10')]};}else{_0x5c6d4e[_0x963a('0xe')]={'user':_0x2daee3['Smtp'][_0x963a('0x11')],'pass':_0x2daee3['Smtp'][_0x963a('0x12')]};}}return _0x5c6d4e;}}});};
\ No newline at end of file
+var _0x3923=['Smtp','port','secure','authentication','CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found','auth','./mailAccount.attributes','define','MailAccount','mail_accounts','provider','service','host'];(function(_0x2f0057,_0x448b27){var _0x17f2c3=function(_0x12efc3){while(--_0x12efc3){_0x2f0057['push'](_0x2f0057['shift']());}};_0x17f2c3(++_0x448b27);}(_0x3923,0x111));var _0x3392=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x3923[_0xa464c9];return _0x3d73c4;};'use strict';var attributes=require(_0x3392('0x0'));module['exports']=function(_0x2c2a86){return _0x2c2a86[_0x3392('0x1')](_0x3392('0x2'),attributes,{'tableName':_0x3392('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x1f18b9=this;var _0x9d8238={'id':_0x1f18b9['id'],'tls':{'rejectUnauthorized':![]}};if(_0x1f18b9[_0x3392('0x4')]!=='custom'){_0x9d8238[_0x3392('0x5')]=_0x1f18b9[_0x3392('0x4')];}else{_0x9d8238[_0x3392('0x6')]=_0x1f18b9[_0x3392('0x7')][_0x3392('0x6')];_0x9d8238[_0x3392('0x8')]=_0x1f18b9['Smtp'][_0x3392('0x8')];_0x9d8238[_0x3392('0x9')]=_0x1f18b9[_0x3392('0x7')][_0x3392('0x9')];}if(_0x1f18b9[_0x3392('0x7')][_0x3392('0xa')]){if(_0x1f18b9[_0x3392('0x7')]['modernAuthentication']){if(!_0x1f18b9[_0x3392('0x7')][_0x3392('0xb')])throw new Error(_0x3392('0xc'));_0x9d8238[_0x3392('0xd')]={'type':'OAuth2','user':_0x1f18b9[_0x3392('0x7')]['user'],'accessToken':_0x1f18b9[_0x3392('0x7')][_0x3392('0xb')]['data5']};}else{_0x9d8238[_0x3392('0xd')]={'user':_0x1f18b9[_0x3392('0x7')]['user'],'pass':_0x1f18b9['Smtp']['pass']};}}return _0x9d8238;}}});};
\ No newline at end of file
index 22ae466..1b3f4a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x187d=['account','List','Contacts','DESC','MailApplication','Applications','MailServerOut','CloudProvider','get','list','applications','orderBy','priority','autoclose','length','List\x20not\x20found','contact','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','Messages','inReplyTo','create','Contact\x20not\x20found','update','interaction','created','originTo','originCc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','User','unshift','agent','name','waitForTheAssignedAgent','Start','startRouting','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailAccount','MailAccount','options','raw','attributes','include','model','map','debug','ShowMailAccount','find','where','smtp','smtpOptions','getSmtpOptions','NotifyMailAccount','body','mail','difference','keys','CmContact','rawAttributes','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey'];(function(_0x1496c1,_0x23cf40){var _0x48abc0=function(_0x5337d6){while(--_0x5337d6){_0x1496c1['push'](_0x1496c1['shift']());}};_0x48abc0(++_0x23cf40);}(_0x187d,0x93));var _0xd187=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0x187d[_0x9aada2];return _0x196dff;};'use strict';var _=require(_0xd187('0x0'));var moment=require('moment');var BPromise=require(_0xd187('0x1'));var rs=require(_0xd187('0x2'));var Redis=require(_0xd187('0x3'));var db=require(_0xd187('0x4'))['db'];var logger=require(_0xd187('0x5'))(_0xd187('0x6'));var config=require('../../config/environment');var jayson=require(_0xd187('0x7'));var client=jayson[_0xd187('0x8')]['http']({'port':0x232c});config[_0xd187('0x9')]=_[_0xd187('0xa')](config[_0xd187('0x9')],{'host':_0xd187('0xb'),'port':0x18eb});var socket=require(_0xd187('0xc'))(new Redis(config[_0xd187('0x9')]));require(_0xd187('0xd'))[_0xd187('0xe')](socket);function respondWithRpcPromise(_0x5b480f,_0x342539,_0x42848b){return new BPromise(function(_0x4039f6,_0x473866){return client[_0xd187('0xf')](_0x5b480f,_0x42848b)[_0xd187('0x10')](function(_0x59c194){logger[_0xd187('0x11')](_0xd187('0x12'),_0x342539,_0xd187('0x13'));logger['debug'](_0xd187('0x14'),_0x342539,_0xd187('0x13'),JSON[_0xd187('0x15')](_0x59c194));if(_0x59c194['error']){if(_0x59c194[_0xd187('0x16')][_0xd187('0x17')]===0x1f4){logger[_0xd187('0x16')](_0xd187('0x12'),_0x342539,_0x59c194['error'][_0xd187('0x18')]);return _0x473866(_0x59c194[_0xd187('0x16')][_0xd187('0x18')]);}logger[_0xd187('0x16')]('MailAccount,\x20%s,\x20%s',_0x342539,_0x59c194[_0xd187('0x16')]['message']);return _0x4039f6(_0x59c194['error'][_0xd187('0x18')]);}else{logger['info']('MailAccount,\x20%s,\x20%s',_0x342539,_0xd187('0x13'));_0x4039f6(_0x59c194[_0xd187('0x19')][_0xd187('0x18')]);}})[_0xd187('0x1a')](function(_0x21df74){logger[_0xd187('0x16')](_0xd187('0x12'),_0x342539,_0x21df74);_0x473866(_0x21df74);});});}exports[_0xd187('0x1b')]=function(_0x4f2f88){var _0x46fca3=this;return new Promise(function(_0x170d5c,_0x11b2a1){return db[_0xd187('0x1c')]['findAll']({'raw':_0x4f2f88[_0xd187('0x1d')]?_0x4f2f88[_0xd187('0x1d')][_0xd187('0x1e')]===undefined?!![]:![]:!![],'where':_0x4f2f88['options']?_0x4f2f88['options']['where']||null:null,'attributes':_0x4f2f88[_0xd187('0x1d')]?_0x4f2f88[_0xd187('0x1d')][_0xd187('0x1f')]||null:null,'limit':_0x4f2f88['options']?_0x4f2f88[_0xd187('0x1d')]['limit']||null:null,'include':_0x4f2f88[_0xd187('0x1d')]?_0x4f2f88['options'][_0xd187('0x20')]?_['map'](_0x4f2f88['options'][_0xd187('0x20')],function(_0x4d992b){return{'model':db[_0x4d992b[_0xd187('0x21')]],'as':_0x4d992b['as'],'attributes':_0x4d992b[_0xd187('0x1f')],'include':_0x4d992b['include']?_['map'](_0x4d992b[_0xd187('0x20')],function(_0xeff822){return{'model':db[_0xeff822[_0xd187('0x21')]],'as':_0xeff822['as'],'attributes':_0xeff822[_0xd187('0x1f')],'include':_0xeff822['include']?_[_0xd187('0x22')](_0xeff822[_0xd187('0x20')],function(_0x5c8e52){return{'model':db[_0x5c8e52[_0xd187('0x21')]],'as':_0x5c8e52['as'],'attributes':_0x5c8e52[_0xd187('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xd187('0x10')](function(_0x4c50a5){logger[_0xd187('0x11')]('GetMailAccount',_0x4f2f88);logger[_0xd187('0x23')](_0xd187('0x1b'),_0x4f2f88,JSON[_0xd187('0x15')](_0x4c50a5));_0x170d5c(_0x4c50a5);})[_0xd187('0x1a')](function(_0x489f2e){logger[_0xd187('0x16')](_0xd187('0x1b'),_0x489f2e['message'],_0x4f2f88);_0x11b2a1(_0x46fca3['error'](0x1f4,_0x489f2e[_0xd187('0x18')]));});});};exports[_0xd187('0x24')]=function(_0x13f285){var _0x481346=this;return new Promise(function(_0x2874b2,_0x2d8843){return db[_0xd187('0x1c')][_0xd187('0x25')]({'raw':_0x13f285['options']?_0x13f285[_0xd187('0x1d')][_0xd187('0x1e')]===undefined?!![]:![]:!![],'where':_0x13f285[_0xd187('0x1d')]?_0x13f285['options'][_0xd187('0x26')]||null:null,'attributes':_0x13f285['options']?_0x13f285[_0xd187('0x1d')][_0xd187('0x1f')]||null:null,'include':_0x13f285[_0xd187('0x1d')]?_0x13f285['options']['include']?_[_0xd187('0x22')](_0x13f285[_0xd187('0x1d')]['include'],function(_0x4591e0){return{'model':db[_0x4591e0[_0xd187('0x21')]],'as':_0x4591e0['as'],'attributes':_0x4591e0[_0xd187('0x1f')],'include':_0x4591e0['include']?_['map'](_0x4591e0[_0xd187('0x20')],function(_0xf32da2){return{'model':db[_0xf32da2['model']],'as':_0xf32da2['as'],'attributes':_0xf32da2['attributes'],'include':_0xf32da2['include']?_[_0xd187('0x22')](_0xf32da2['include'],function(_0x28c252){return{'model':db[_0x28c252[_0xd187('0x21')]],'as':_0x28c252['as'],'attributes':_0x28c252['attributes']};}):[]};}):[]};}):[]:[]})[_0xd187('0x10')](function(_0x5674ca){if(_0x13f285[_0xd187('0x1d')][_0xd187('0x27')]===!![])_0x5674ca['setDataValue'](_0xd187('0x28'),_0x5674ca[_0xd187('0x29')]());logger['info'](_0xd187('0x24'),_0x13f285);logger['debug']('ShowMailAccount',_0x13f285,JSON[_0xd187('0x15')](_0x5674ca));_0x2874b2(_0x5674ca);})[_0xd187('0x1a')](function(_0xdecb24){logger[_0xd187('0x16')](_0xd187('0x24'),_0xdecb24['message'],_0x13f285);_0x2d8843(_0x481346[_0xd187('0x16')](0x1f4,_0xdecb24[_0xd187('0x18')]));});});};exports[_0xd187('0x2a')]=function(_0x4f3139){var _0x4b121c=this;return new Promise(function(_0x538c05,_0x595195){var _0x21bb3c={'body':_0x4f3139[_0xd187('0x2b')],'channel':_0xd187('0x2c')};var _0x367303=_[_0xd187('0x2d')](_[_0xd187('0x2e')](db[_0xd187('0x2f')][_0xd187('0x30')]),['createdAt',_0xd187('0x31'),_0xd187('0x32'),_0xd187('0x33')]);var _0x51c7fc=![];if(_0x4f3139[_0xd187('0x2b')]['id']){delete _0x4f3139['body']['id'];}if(_[_0xd187('0x34')](_0x4f3139[_0xd187('0x2b')][_0xd187('0x35')])){return _0x595195(_0x4b121c[_0xd187('0x16')](0x1f4,_0xd187('0x36')));}if(_['isNil'](_0x4f3139[_0xd187('0x2b')][_0xd187('0x2b')])||_0x4f3139[_0xd187('0x2b')][_0xd187('0x2b')]===''){return _0x595195(_0x4b121c['error'](0x1f4,_0xd187('0x37')));}if(_[_0xd187('0x34')](_0x4f3139['body'][_0xd187('0x38')])){return _0x595195(_0x4b121c[_0xd187('0x16')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x367303));}if(!_['includes'](_0x367303,_0x4f3139[_0xd187('0x2b')][_0xd187('0x38')])){return _0x595195(_0x4b121c['error'](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x367303));}var _0x4f616d={};_0x4f616d[_0x4f3139[_0xd187('0x2b')][_0xd187('0x38')]]=_0x4f3139[_0xd187('0x2b')][_0xd187('0x35')];return db[_0xd187('0x1c')][_0xd187('0x25')]({'where':{'id':_0x4f3139[_0xd187('0x39')]['id']},'include':[{'model':db['CmList'],'as':_0xd187('0x3a'),'include':[{'model':db[_0xd187('0x2f')],'as':_0xd187('0x3b'),'where':_0x4f616d,'limit':0x1,'order':[[_0xd187('0x31'),_0xd187('0x3c')]]}]},{'model':db[_0xd187('0x3d')],'as':_0xd187('0x3e')},{'model':db[_0xd187('0x3f')],'as':'Smtp','include':[{'model':db[_0xd187('0x40')],'as':_0xd187('0x40')}]}]})[_0xd187('0x10')](function(_0x1449d7){if(_0x1449d7&&_0x1449d7[_0xd187('0x3a')]){var _0x5ad646=_0x1449d7[_0xd187('0x41')]({'plain':!![]});_0x21bb3c[_0xd187('0x39')]=_['omit'](_0x5ad646,[_0xd187('0x3e'),_0xd187('0x3a')]);_0x21bb3c['account']['smtpOptions']=_0x1449d7['getSmtpOptions']();_0x21bb3c['applications']=_0x5ad646[_0xd187('0x3e')];_0x21bb3c[_0xd187('0x42')]=_0x5ad646[_0xd187('0x3a')];_0x21bb3c[_0xd187('0x43')]=_[_0xd187('0x44')](_0x21bb3c[_0xd187('0x43')],[_0xd187('0x45')],['asc']);if(_0x21bb3c[_0xd187('0x39')]&&_0x21bb3c[_0xd187('0x39')][_0xd187('0x46')]){_0x21bb3c[_0xd187('0x43')]['push']({'id':0x0,'priority':_0x21bb3c[_0xd187('0x43')]['length']+0x1,'app':'close','appdata':_0xd187('0x46'),'interval':'*,*,*,*'});}if(_0x21bb3c[_0xd187('0x39')][_0xd187('0x3e')]){delete _0x21bb3c[_0xd187('0x39')][_0xd187('0x3e')];}if(_0x21bb3c[_0xd187('0x39')][_0xd187('0x3a')]){delete _0x21bb3c[_0xd187('0x39')][_0xd187('0x3a')];}if(_0x5ad646[_0xd187('0x3a')]['Contacts'][_0xd187('0x47')]){return _0x5ad646[_0xd187('0x3a')]['Contacts'][0x0];}var _0x471f11=_[_0xd187('0xa')](_0x4f3139[_0xd187('0x2b')],{'firstName':_0x4f3139['body'][_0xd187('0x35')],'ListId':_0x5ad646[_0xd187('0x33')]});_0x471f11[_0x4f3139['body'][_0xd187('0x38')]]=_0x4f3139[_0xd187('0x2b')]['from'];return db[_0xd187('0x2f')]['create'](_0x471f11);}else{throw new Error(_0xd187('0x48'));}})[_0xd187('0x10')](function(_0x3a2a00){_0x21bb3c[_0xd187('0x49')]=_0x3a2a00;if(_0x3a2a00){if(!_0x4f3139[_0xd187('0x2b')][_0xd187('0x18')][_0xd187('0x4a')]){_0x4f3139['body'][_0xd187('0x18')][_0xd187('0x4a')]=rs[_0xd187('0x4b')]()+'\x20'+_0x4f3139['body'][_0xd187('0x18')][_0xd187('0x35')];}var _0x945810={'ContactId':_0x3a2a00['id'],'MailAccountId':_0x4f3139[_0xd187('0x39')]['id'],'inReplyTo':_0x4f3139[_0xd187('0x2b')][_0xd187('0x18')][_0xd187('0x4a')],'to':_0x4f3139[_0xd187('0x2b')][_0xd187('0x18')][_0xd187('0x35')],'cc':_0x4f3139[_0xd187('0x2b')][_0xd187('0x18')]['cc'],'subject':_0x4f3139[_0xd187('0x2b')][_0xd187('0x18')][_0xd187('0x4c')],'attach':_0x4f3139[_0xd187('0x2b')][_0xd187('0x18')][_0xd187('0x4d')],'lastMsgAt':moment()[_0xd187('0x4e')](_0xd187('0x4f')),'lastMsgDirection':'in'};return db['MailInteraction'][_0xd187('0x25')]({'where':{'closed':![],'MailAccountId':_0x4f3139['account']['id']},'include':[{'model':db[_0xd187('0x50')],'as':_0xd187('0x51'),'attributes':[_0xd187('0x4a')],'where':{'messageId':_0x4f3139[_0xd187('0x2b')]['message'][_0xd187('0x52')]}}]})[_0xd187('0x10')](function(_0x4f89a6){if(_0x4f89a6){return[_0x4f89a6,![]];}return db['MailInteraction'][_0xd187('0x53')](_0x945810)[_0xd187('0x10')](function(_0x2870ad){return[_0x2870ad,!![]];});});}else{throw new Error(_0xd187('0x54'));}})['spread'](function(_0x2c1df4,_0x49543f){if(_0x2c1df4){_0x51c7fc=_0x49543f;if(!_0x49543f){return _0x2c1df4[_0xd187('0x55')]({'inReplyTo':_0x4f3139[_0xd187('0x2b')][_0xd187('0x18')][_0xd187('0x4a')],'to':_0x4f3139['body'][_0xd187('0x18')][_0xd187('0x35')],'cc':_0x4f3139[_0xd187('0x2b')][_0xd187('0x18')]['cc'],'subject':_0x4f3139[_0xd187('0x2b')]['message']['subject'],'attach':_0x2c1df4[_0xd187('0x4d')]?_0x2c1df4[_0xd187('0x4d')]:_0x4f3139[_0xd187('0x2b')][_0xd187('0x18')][_0xd187('0x4d')],'substatus':null,'substatusAt':moment()[_0xd187('0x4e')](_0xd187('0x4f')),'lastMsgAt':moment()[_0xd187('0x4e')](_0xd187('0x4f')),'lastMsgDirection':'in'});}else{return _0x2c1df4;}}})[_0xd187('0x10')](function(_0x379e89){_0x21bb3c[_0xd187('0x56')]=_0x379e89['get']({'plain':!![]});_0x21bb3c[_0xd187('0x56')][_0xd187('0x57')]=_0x51c7fc;return db['MailMessage'][_0xd187('0x53')]({'body':_0x4f3139[_0xd187('0x2b')]['body'],'MailAccountId':_0x4f3139['account']['id'],'MailInteractionId':_0x379e89['id'],'direction':'in','ContactId':_0x21bb3c[_0xd187('0x49')]['id'],'messageId':_0x4f3139[_0xd187('0x2b')][_0xd187('0x18')][_0xd187('0x4a')],'from':_0x4f3139['body'][_0xd187('0x18')][_0xd187('0x35')],'to':_0x4f3139['body']['message']['to'],'cc':_0x4f3139[_0xd187('0x2b')]['message']['cc'],'subject':_0x4f3139[_0xd187('0x2b')][_0xd187('0x18')]['subject'],'attach':_0x4f3139[_0xd187('0x2b')]['message'][_0xd187('0x4d')],'Attachments':_0x4f3139['body']['message']['attachments'],'originTo':_0x4f3139[_0xd187('0x2b')][_0xd187('0x18')][_0xd187('0x58')],'originCc':_0x4f3139[_0xd187('0x2b')][_0xd187('0x18')][_0xd187('0x59')],'bcc':_0x4f3139[_0xd187('0x2b')][_0xd187('0x18')]['bcc'],'ChatWebsiteId':_0x4f3139[_0xd187('0x2b')][_0xd187('0x18')][_0xd187('0x5a')]||null,'originChannel':_0x4f3139['body'][_0xd187('0x18')][_0xd187('0x5b')]||_0xd187('0x5c'),'ChatOfflineMessageId':_0x4f3139[_0xd187('0x2b')]['message'][_0xd187('0x5d')]||null},{'include':[{'model':db[_0xd187('0x5e')],'as':'Attachments'}]});})[_0xd187('0x10')](function(_0x3afdd9){_0x21bb3c[_0xd187('0x18')]=_0x3afdd9;if(_0x21bb3c[_0xd187('0x56')]['UserId']){return db[_0xd187('0x5f')][_0xd187('0x25')]({'attributes':['id','name'],'where':{'id':_0x21bb3c[_0xd187('0x56')]['UserId']}})['then'](function(_0x506c53){if(_0x506c53){_0x21bb3c[_0xd187('0x43')][_0xd187('0x60')]({'id':0x0,'priority':0x0,'app':_0xd187('0x61'),'appdata':_0x506c53[_0xd187('0x62')]+','+(_0x21bb3c[_0xd187('0x39')][_0xd187('0x63')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xd187('0x64'),_0xd187('0x65'),_0x21bb3c);});}return respondWithRpcPromise('Start','startRouting',_0x21bb3c);})[_0xd187('0x10')](function(_0x3e1c19){_0x538c05(_0x3e1c19);})[_0xd187('0x1a')](function(_0x1f163a){_0x595195(_0x4b121c[_0xd187('0x16')](0x1f4,_0x1f163a[_0xd187('0x18')]));});});};
\ No newline at end of file
+var _0x1a85=['getSmtpOptions','NotifyMailAccount','mail','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','body','from','from\x20is\x20mandatory','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','List','DESC','MailApplication','Applications','MailServerOut','Smtp','CloudProvider','omit','smtpOptions','applications','orderBy','asc','autoclose','push','length','close','*,*,*,*','Contacts','ListId','create','List\x20not\x20found','contact','messageId','generate','subject','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','Messages','Contact\x20not\x20found','update','attach','interaction','get','created','attachments','originCc','bcc','ChatWebsiteId','ChatOfflineMessageId','Attachment','UserId','User','name','unshift','agent','startRouting','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','http','defaults','localhost','socket.io-emitter','./mailAccount.socket','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','MailAccount','findAll','options','where','attributes','map','include','model','GetMailAccount','ShowMailAccount','find','raw'];(function(_0xcb6c95,_0x2d63ac){var _0x43644d=function(_0x270bb0){while(--_0x270bb0){_0xcb6c95['push'](_0xcb6c95['shift']());}};_0x43644d(++_0x2d63ac);}(_0x1a85,0x178));var _0x51a8=function(_0x51e347,_0x1b565a){_0x51e347=_0x51e347-0x0;var _0x49ab46=_0x1a85[_0x51e347];return _0x49ab46;};'use strict';var _=require('lodash');var moment=require('moment');var BPromise=require(_0x51a8('0x0'));var rs=require(_0x51a8('0x1'));var Redis=require(_0x51a8('0x2'));var db=require('../../mysqldb')['db'];var logger=require('../../config/logger')(_0x51a8('0x3'));var config=require(_0x51a8('0x4'));var jayson=require(_0x51a8('0x5'));var client=jayson['client'][_0x51a8('0x6')]({'port':0x232c});config['redis']=_[_0x51a8('0x7')](config['redis'],{'host':_0x51a8('0x8'),'port':0x18eb});var socket=require(_0x51a8('0x9'))(new Redis(config['redis']));require(_0x51a8('0xa'))['register'](socket);function respondWithRpcPromise(_0x56e1b4,_0x39e06a,_0x2f276b){return new BPromise(function(_0x1a476d,_0x45a3f4){return client[_0x51a8('0xb')](_0x56e1b4,_0x2f276b)[_0x51a8('0xc')](function(_0x3f93c7){logger[_0x51a8('0xd')](_0x51a8('0xe'),_0x39e06a,_0x51a8('0xf'));logger[_0x51a8('0x10')](_0x51a8('0x11'),_0x39e06a,_0x51a8('0xf'),JSON[_0x51a8('0x12')](_0x3f93c7));if(_0x3f93c7[_0x51a8('0x13')]){if(_0x3f93c7[_0x51a8('0x13')][_0x51a8('0x14')]===0x1f4){logger['error'](_0x51a8('0xe'),_0x39e06a,_0x3f93c7[_0x51a8('0x13')][_0x51a8('0x15')]);return _0x45a3f4(_0x3f93c7['error'][_0x51a8('0x15')]);}logger['error'](_0x51a8('0xe'),_0x39e06a,_0x3f93c7[_0x51a8('0x13')][_0x51a8('0x15')]);return _0x1a476d(_0x3f93c7[_0x51a8('0x13')][_0x51a8('0x15')]);}else{logger[_0x51a8('0xd')](_0x51a8('0xe'),_0x39e06a,'request\x20sent');_0x1a476d(_0x3f93c7[_0x51a8('0x16')][_0x51a8('0x15')]);}})[_0x51a8('0x17')](function(_0x23539e){logger[_0x51a8('0x13')](_0x51a8('0xe'),_0x39e06a,_0x23539e);_0x45a3f4(_0x23539e);});});}exports['GetMailAccount']=function(_0x1df8c2){var _0x3b7e7e=this;return new Promise(function(_0x2217ce,_0x2f2681){return db[_0x51a8('0x18')][_0x51a8('0x19')]({'raw':_0x1df8c2[_0x51a8('0x1a')]?_0x1df8c2[_0x51a8('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x1df8c2[_0x51a8('0x1a')]?_0x1df8c2['options'][_0x51a8('0x1b')]||null:null,'attributes':_0x1df8c2[_0x51a8('0x1a')]?_0x1df8c2[_0x51a8('0x1a')][_0x51a8('0x1c')]||null:null,'limit':_0x1df8c2['options']?_0x1df8c2[_0x51a8('0x1a')]['limit']||null:null,'include':_0x1df8c2['options']?_0x1df8c2[_0x51a8('0x1a')]['include']?_[_0x51a8('0x1d')](_0x1df8c2[_0x51a8('0x1a')][_0x51a8('0x1e')],function(_0x18e2f3){return{'model':db[_0x18e2f3[_0x51a8('0x1f')]],'as':_0x18e2f3['as'],'attributes':_0x18e2f3[_0x51a8('0x1c')],'include':_0x18e2f3[_0x51a8('0x1e')]?_[_0x51a8('0x1d')](_0x18e2f3['include'],function(_0x273ce2){return{'model':db[_0x273ce2[_0x51a8('0x1f')]],'as':_0x273ce2['as'],'attributes':_0x273ce2[_0x51a8('0x1c')],'include':_0x273ce2[_0x51a8('0x1e')]?_[_0x51a8('0x1d')](_0x273ce2[_0x51a8('0x1e')],function(_0x1a886f){return{'model':db[_0x1a886f[_0x51a8('0x1f')]],'as':_0x1a886f['as'],'attributes':_0x1a886f[_0x51a8('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x51a8('0xc')](function(_0x20c6b5){logger[_0x51a8('0xd')]('GetMailAccount',_0x1df8c2);logger[_0x51a8('0x10')]('GetMailAccount',_0x1df8c2,JSON[_0x51a8('0x12')](_0x20c6b5));_0x2217ce(_0x20c6b5);})[_0x51a8('0x17')](function(_0x143f46){logger[_0x51a8('0x13')](_0x51a8('0x20'),_0x143f46['message'],_0x1df8c2);_0x2f2681(_0x3b7e7e[_0x51a8('0x13')](0x1f4,_0x143f46['message']));});});};exports[_0x51a8('0x21')]=function(_0x24b39a){var _0x253a59=this;return new Promise(function(_0x4b19c8,_0x2080a1){return db['MailAccount'][_0x51a8('0x22')]({'raw':_0x24b39a[_0x51a8('0x1a')]?_0x24b39a[_0x51a8('0x1a')][_0x51a8('0x23')]===undefined?!![]:![]:!![],'where':_0x24b39a[_0x51a8('0x1a')]?_0x24b39a['options'][_0x51a8('0x1b')]||null:null,'attributes':_0x24b39a['options']?_0x24b39a[_0x51a8('0x1a')][_0x51a8('0x1c')]||null:null,'include':_0x24b39a[_0x51a8('0x1a')]?_0x24b39a['options'][_0x51a8('0x1e')]?_[_0x51a8('0x1d')](_0x24b39a[_0x51a8('0x1a')][_0x51a8('0x1e')],function(_0x41c020){return{'model':db[_0x41c020['model']],'as':_0x41c020['as'],'attributes':_0x41c020['attributes'],'include':_0x41c020['include']?_[_0x51a8('0x1d')](_0x41c020[_0x51a8('0x1e')],function(_0x4ec1db){return{'model':db[_0x4ec1db[_0x51a8('0x1f')]],'as':_0x4ec1db['as'],'attributes':_0x4ec1db['attributes'],'include':_0x4ec1db[_0x51a8('0x1e')]?_[_0x51a8('0x1d')](_0x4ec1db[_0x51a8('0x1e')],function(_0x1eef9d){return{'model':db[_0x1eef9d[_0x51a8('0x1f')]],'as':_0x1eef9d['as'],'attributes':_0x1eef9d[_0x51a8('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4e5566){if(_0x24b39a[_0x51a8('0x1a')]['smtp']===!![])_0x4e5566['setDataValue']('smtpOptions',_0x4e5566[_0x51a8('0x24')]());logger[_0x51a8('0xd')](_0x51a8('0x21'),_0x24b39a);logger['debug'](_0x51a8('0x21'),_0x24b39a,JSON[_0x51a8('0x12')](_0x4e5566));_0x4b19c8(_0x4e5566);})[_0x51a8('0x17')](function(_0x310ad2){logger['error'](_0x51a8('0x21'),_0x310ad2[_0x51a8('0x15')],_0x24b39a);_0x2080a1(_0x253a59[_0x51a8('0x13')](0x1f4,_0x310ad2['message']));});});};exports[_0x51a8('0x25')]=function(_0x51d7bd){var _0x2032c0=this;return new Promise(function(_0x1e637a,_0x2a98bd){var _0x37d50b={'body':_0x51d7bd['body'],'channel':_0x51a8('0x26')};var _0x3da2cf=_[_0x51a8('0x27')](_[_0x51a8('0x28')](db[_0x51a8('0x29')][_0x51a8('0x2a')]),[_0x51a8('0x2b'),_0x51a8('0x2c'),_0x51a8('0x2d'),'ListId']);var _0x22e6e6=![];if(_0x51d7bd[_0x51a8('0x2e')]['id']){delete _0x51d7bd['body']['id'];}if(_['isNil'](_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x2f')])){return _0x2a98bd(_0x2032c0[_0x51a8('0x13')](0x1f4,_0x51a8('0x30')));}if(_[_0x51a8('0x31')](_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x2e')])||_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x2e')]===''){return _0x2a98bd(_0x2032c0[_0x51a8('0x13')](0x1f4,'body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_[_0x51a8('0x31')](_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x32')])){return _0x2a98bd(_0x2032c0[_0x51a8('0x13')](0x1f4,_0x51a8('0x33')+_0x3da2cf));}if(!_[_0x51a8('0x34')](_0x3da2cf,_0x51d7bd['body'][_0x51a8('0x32')])){return _0x2a98bd(_0x2032c0['error'](0x1f4,_0x51a8('0x35')+_0x3da2cf));}var _0x3a33f3={};_0x3a33f3[_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x32')]]=_0x51d7bd[_0x51a8('0x2e')]['from'];return db['MailAccount'][_0x51a8('0x22')]({'where':{'id':_0x51d7bd[_0x51a8('0x36')]['id']},'include':[{'model':db[_0x51a8('0x37')],'as':_0x51a8('0x38'),'include':[{'model':db[_0x51a8('0x29')],'as':'Contacts','where':_0x3a33f3,'limit':0x1,'order':[['updatedAt',_0x51a8('0x39')]]}]},{'model':db[_0x51a8('0x3a')],'as':_0x51a8('0x3b')},{'model':db[_0x51a8('0x3c')],'as':_0x51a8('0x3d'),'include':[{'model':db[_0x51a8('0x3e')],'as':_0x51a8('0x3e')}]}]})[_0x51a8('0xc')](function(_0x301578){if(_0x301578&&_0x301578['List']){var _0x5cb2cf=_0x301578['get']({'plain':!![]});_0x37d50b[_0x51a8('0x36')]=_[_0x51a8('0x3f')](_0x5cb2cf,[_0x51a8('0x3b'),'List']);_0x37d50b[_0x51a8('0x36')][_0x51a8('0x40')]=_0x301578['getSmtpOptions']();_0x37d50b[_0x51a8('0x41')]=_0x5cb2cf['Applications'];_0x37d50b['list']=_0x5cb2cf[_0x51a8('0x38')];_0x37d50b[_0x51a8('0x41')]=_[_0x51a8('0x42')](_0x37d50b['applications'],['priority'],[_0x51a8('0x43')]);if(_0x37d50b['account']&&_0x37d50b[_0x51a8('0x36')][_0x51a8('0x44')]){_0x37d50b[_0x51a8('0x41')][_0x51a8('0x45')]({'id':0x0,'priority':_0x37d50b[_0x51a8('0x41')][_0x51a8('0x46')]+0x1,'app':_0x51a8('0x47'),'appdata':_0x51a8('0x44'),'interval':_0x51a8('0x48')});}if(_0x37d50b['account'][_0x51a8('0x3b')]){delete _0x37d50b[_0x51a8('0x36')][_0x51a8('0x3b')];}if(_0x37d50b[_0x51a8('0x36')]['List']){delete _0x37d50b[_0x51a8('0x36')]['List'];}if(_0x5cb2cf[_0x51a8('0x38')][_0x51a8('0x49')]['length']){return _0x5cb2cf['List'][_0x51a8('0x49')][0x0];}var _0x16f124=_[_0x51a8('0x7')](_0x51d7bd[_0x51a8('0x2e')],{'firstName':_0x51d7bd[_0x51a8('0x2e')]['from'],'ListId':_0x5cb2cf[_0x51a8('0x4a')]});_0x16f124[_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x32')]]=_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x2f')];return db['CmContact'][_0x51a8('0x4b')](_0x16f124);}else{throw new Error(_0x51a8('0x4c'));}})[_0x51a8('0xc')](function(_0x3e43cc){_0x37d50b[_0x51a8('0x4d')]=_0x3e43cc;if(_0x3e43cc){if(!_0x51d7bd[_0x51a8('0x2e')]['message']['messageId']){_0x51d7bd['body']['message'][_0x51a8('0x4e')]=rs[_0x51a8('0x4f')]()+'\x20'+_0x51d7bd['body'][_0x51a8('0x15')]['from'];}var _0x41cc00={'ContactId':_0x3e43cc['id'],'MailAccountId':_0x51d7bd['account']['id'],'inReplyTo':_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x15')]['messageId'],'to':_0x51d7bd['body']['message'][_0x51a8('0x2f')],'cc':_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x15')]['cc'],'subject':_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x15')][_0x51a8('0x50')],'attach':_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x15')]['attach'],'lastMsgAt':moment()[_0x51a8('0x51')](_0x51a8('0x52')),'lastMsgDirection':'in'};return db['MailInteraction'][_0x51a8('0x22')]({'where':{'closed':![],'MailAccountId':_0x51d7bd[_0x51a8('0x36')]['id']},'include':[{'model':db[_0x51a8('0x53')],'as':_0x51a8('0x54'),'attributes':[_0x51a8('0x4e')],'where':{'messageId':_0x51d7bd[_0x51a8('0x2e')]['message']['inReplyTo']}}]})[_0x51a8('0xc')](function(_0x53f25e){if(_0x53f25e){return[_0x53f25e,![]];}return db['MailInteraction']['create'](_0x41cc00)['then'](function(_0x483a5a){return[_0x483a5a,!![]];});});}else{throw new Error(_0x51a8('0x55'));}})['spread'](function(_0x1477af,_0x4772cd){if(_0x1477af){_0x22e6e6=_0x4772cd;if(!_0x4772cd){return _0x1477af[_0x51a8('0x56')]({'inReplyTo':_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x15')][_0x51a8('0x4e')],'to':_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x15')][_0x51a8('0x2f')],'cc':_0x51d7bd[_0x51a8('0x2e')]['message']['cc'],'subject':_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x15')][_0x51a8('0x50')],'attach':_0x1477af['attach']?_0x1477af['attach']:_0x51d7bd['body'][_0x51a8('0x15')][_0x51a8('0x57')],'substatus':null,'substatusAt':moment()[_0x51a8('0x51')](_0x51a8('0x52')),'lastMsgAt':moment()[_0x51a8('0x51')](_0x51a8('0x52')),'lastMsgDirection':'in'});}else{return _0x1477af;}}})[_0x51a8('0xc')](function(_0x418445){_0x37d50b[_0x51a8('0x58')]=_0x418445[_0x51a8('0x59')]({'plain':!![]});_0x37d50b[_0x51a8('0x58')][_0x51a8('0x5a')]=_0x22e6e6;return db[_0x51a8('0x53')]['create']({'body':_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x2e')],'MailAccountId':_0x51d7bd['account']['id'],'MailInteractionId':_0x418445['id'],'direction':'in','ContactId':_0x37d50b[_0x51a8('0x4d')]['id'],'messageId':_0x51d7bd['body']['message']['messageId'],'from':_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x15')][_0x51a8('0x2f')],'to':_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x15')]['to'],'cc':_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x15')]['cc'],'subject':_0x51d7bd['body']['message']['subject'],'attach':_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x15')][_0x51a8('0x57')],'Attachments':_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x15')][_0x51a8('0x5b')],'originTo':_0x51d7bd['body'][_0x51a8('0x15')]['originTo'],'originCc':_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x15')][_0x51a8('0x5c')],'bcc':_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x15')][_0x51a8('0x5d')],'ChatWebsiteId':_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x15')][_0x51a8('0x5e')]||null,'originChannel':_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x15')]['originChannel']||'Email','ChatOfflineMessageId':_0x51d7bd[_0x51a8('0x2e')][_0x51a8('0x15')][_0x51a8('0x5f')]||null},{'include':[{'model':db[_0x51a8('0x60')],'as':'Attachments'}]});})[_0x51a8('0xc')](function(_0x4d418a){_0x37d50b[_0x51a8('0x15')]=_0x4d418a;if(_0x37d50b[_0x51a8('0x58')][_0x51a8('0x61')]){return db[_0x51a8('0x62')][_0x51a8('0x22')]({'attributes':['id',_0x51a8('0x63')],'where':{'id':_0x37d50b[_0x51a8('0x58')][_0x51a8('0x61')]}})[_0x51a8('0xc')](function(_0x53fc80){if(_0x53fc80){_0x37d50b[_0x51a8('0x41')][_0x51a8('0x64')]({'id':0x0,'priority':0x0,'app':_0x51a8('0x65'),'appdata':_0x53fc80[_0x51a8('0x63')]+','+(_0x37d50b['account']['waitForTheAssignedAgent']||0xa),'interval':_0x51a8('0x48')});}return respondWithRpcPromise('Start','startRouting',_0x37d50b);});}return respondWithRpcPromise('Start',_0x51a8('0x66'),_0x37d50b);})['then'](function(_0x5c7aca){_0x1e637a(_0x5c7aca);})[_0x51a8('0x17')](function(_0x23f82a){_0x2a98bd(_0x2032c0[_0x51a8('0x13')](0x1f4,_0x23f82a['message']));});});};
\ No newline at end of file
index 0a778cb..87d1a33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcbb=['save','remove','emit','length','mailAccount:','./mailAccount.events'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xfcbb,0x10d));var _0xbfcb=function(_0x1d36e1,_0xdbbca3){_0x1d36e1=_0x1d36e1-0x0;var _0x3c26e5=_0xfcbb[_0x1d36e1];return _0x3c26e5;};'use strict';var MailAccountEvents=require(_0xbfcb('0x0'));var events=[_0xbfcb('0x1'),_0xbfcb('0x2'),'update'];function createListener(_0x5747a4,_0x462349){return function(_0x280329){_0x462349[_0xbfcb('0x3')](_0x5747a4,_0x280329);};}function removeListener(_0x135741,_0x1d8b50){return function(){MailAccountEvents['removeListener'](_0x135741,_0x1d8b50);};}exports['register']=function(_0x32c2aa){for(var _0x4990c=0x0,_0x8d4e6a=events[_0xbfcb('0x4')];_0x4990c<_0x8d4e6a;_0x4990c++){var _0x288ee5=events[_0x4990c];var _0x2f875c=createListener(_0xbfcb('0x5')+_0x288ee5,_0x32c2aa);MailAccountEvents['on'](_0x288ee5,_0x2f875c);}};
\ No newline at end of file
+var _0x6257=['./mailAccount.events','remove','emit','removeListener','register','mailAccount:'];(function(_0x3c95bd,_0x14ef6d){var _0x5a67f5=function(_0x1eb542){while(--_0x1eb542){_0x3c95bd['push'](_0x3c95bd['shift']());}};_0x5a67f5(++_0x14ef6d);}(_0x6257,0x1d4));var _0x7625=function(_0x4bc11c,_0x584580){_0x4bc11c=_0x4bc11c-0x0;var _0x4da6e8=_0x6257[_0x4bc11c];return _0x4da6e8;};'use strict';var MailAccountEvents=require(_0x7625('0x0'));var events=['save',_0x7625('0x1'),'update'];function createListener(_0x52175a,_0x2078ab){return function(_0x15d0d9){_0x2078ab[_0x7625('0x2')](_0x52175a,_0x15d0d9);};}function removeListener(_0x2eefab,_0x182db5){return function(){MailAccountEvents[_0x7625('0x3')](_0x2eefab,_0x182db5);};}exports[_0x7625('0x4')]=function(_0x2ee215){for(var _0x2340ab=0x0,_0x427050=events['length'];_0x2340ab<_0x427050;_0x2340ab++){var _0x4b790d=events[_0x2340ab];var _0x287434=createListener(_0x7625('0x5')+_0x4b790d,_0x2ee215);MailAccountEvents['on'](_0x4b790d,_0x287434);}};
\ No newline at end of file
index f29a236..1398272 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3569=['/:id','show','put','isAuthenticated','update','exports','multer','util','connect-timeout','express','fs-extra','../../components/interaction/service'];(function(_0x29c56f,_0x1f7c02){var _0x44646b=function(_0x416330){while(--_0x416330){_0x29c56f['push'](_0x29c56f['shift']());}};_0x44646b(++_0x1f7c02);}(_0x3569,0x8a));var _0x9356=function(_0x261d9e,_0x4f0942){_0x261d9e=_0x261d9e-0x0;var _0x3f8a2c=_0x3569[_0x261d9e];return _0x3f8a2c;};'use strict';var multer=require(_0x9356('0x0'));var util=require(_0x9356('0x1'));var path=require('path');var timeout=require(_0x9356('0x2'));var express=require(_0x9356('0x3'));var router=express['Router']();var fs_extra=require(_0x9356('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x9356('0x5'));var config=require('../../config/environment');var controller=require('./mailApplication.controller');router['get'](_0x9356('0x6'),auth['isAuthenticated'](),controller[_0x9356('0x7')]);router[_0x9356('0x8')](_0x9356('0x6'),auth[_0x9356('0x9')](),controller[_0x9356('0xa')]);router['delete'](_0x9356('0x6'),auth['isAuthenticated'](),controller['destroy']);module[_0x9356('0xb')]=router;
\ No newline at end of file
+var _0xea31=['show','put','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated'];(function(_0x85c043,_0xbcb643){var _0x3cb29e=function(_0x4a4034){while(--_0x4a4034){_0x85c043['push'](_0x85c043['shift']());}};_0x3cb29e(++_0xbcb643);}(_0xea31,0xe3));var _0x1ea3=function(_0x520b0b,_0x41bd99){_0x520b0b=_0x520b0b-0x0;var _0x18596b=_0xea31[_0x520b0b];return _0x18596b;};'use strict';var multer=require(_0x1ea3('0x0'));var util=require('util');var path=require(_0x1ea3('0x1'));var timeout=require(_0x1ea3('0x2'));var express=require('express');var router=express[_0x1ea3('0x3')]();var fs_extra=require(_0x1ea3('0x4'));var auth=require(_0x1ea3('0x5'));var interaction=require(_0x1ea3('0x6'));var config=require(_0x1ea3('0x7'));var controller=require('./mailApplication.controller');router[_0x1ea3('0x8')](_0x1ea3('0x9'),auth[_0x1ea3('0xa')](),controller[_0x1ea3('0xb')]);router[_0x1ea3('0xc')](_0x1ea3('0x9'),auth[_0x1ea3('0xa')](),controller[_0x1ea3('0xd')]);router[_0x1ea3('0xe')](_0x1ea3('0x9'),auth[_0x1ea3('0xa')](),controller[_0x1ea3('0xf')]);module[_0x1ea3('0x10')]=router;
\ No newline at end of file
index b63ba23..d45ff21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e13=['STRING','exports','INTEGER','noop','TEXT'];(function(_0x50ab6e,_0x5b7682){var _0x40bdab=function(_0x4da99f){while(--_0x4da99f){_0x50ab6e['push'](_0x50ab6e['shift']());}};_0x40bdab(++_0x5b7682);}(_0x3e13,0x10a));var _0x33e1=function(_0x209fcd,_0x1ecccc){_0x209fcd=_0x209fcd-0x0;var _0x501d5e=_0x3e13[_0x209fcd];return _0x501d5e;};'use strict';var Sequelize=require('sequelize');module[_0x33e1('0x0')]={'priority':{'type':Sequelize[_0x33e1('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x33e1('0x2')},'appdata':{'type':Sequelize[_0x33e1('0x3')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x33e1('0x4')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x668a=['*,*,*,*','sequelize','exports','STRING','TEXT'];(function(_0xcafb2b,_0x2cc85e){var _0x539f9a=function(_0x9a96e6){while(--_0x9a96e6){_0xcafb2b['push'](_0xcafb2b['shift']());}};_0x539f9a(++_0x2cc85e);}(_0x668a,0x187));var _0xa668=function(_0x4db126,_0xa00e92){_0x4db126=_0x4db126-0x0;var _0x4710bd=_0x668a[_0x4db126];return _0x4710bd;};'use strict';var Sequelize=require(_0xa668('0x0'));module[_0xa668('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xa668('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xa668('0x3')]()},'description':{'type':Sequelize[_0xa668('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xa668('0x4')}};
\ No newline at end of file
index d7b2c87..1ec0f9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['includeAll','merge','options','find','catch','body','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','show','params','model','MailApplication','rawAttributes','query','keys','filters','intersection','attributes','fields','length'];(function(_0x215c90,_0x214007){var _0x5969ad=function(_0x4b9811){while(--_0x4b9811){_0x215c90['push'](_0x215c90['shift']());}};_0x5969ad(++_0x214007);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'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={'raw':!![],'where':{'id':_0x25fba9[_0x0a9e('0x28')]['id']}},_0x1538a4={};_0x1538a4[_0x0a9e('0x29')]=_['keys'](db[_0x0a9e('0x2a')][_0x0a9e('0x2b')]);_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x25fba9['query']);_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x1538a4[_0x0a9e('0x29')],_0x1538a4[_0x0a9e('0x2c')]);_0x140511[_0x0a9e('0x30')]=_[_0x0a9e('0x2f')](_0x1538a4[_0x0a9e('0x29')],qs[_0x0a9e('0x31')](_0x25fba9[_0x0a9e('0x2c')]['fields']));_0x140511[_0x0a9e('0x30')]=_0x140511['attributes'][_0x0a9e('0x32')]?_0x140511[_0x0a9e('0x30')]:_0x1538a4[_0x0a9e('0x29')];if(_0x25fba9[_0x0a9e('0x2c')][_0x0a9e('0x33')]){_0x140511['include']=[{'all':!![]}];}_0x140511=_[_0x0a9e('0x34')]({},_0x140511,_0x25fba9[_0x0a9e('0x35')]);return db[_0x0a9e('0x2a')][_0x0a9e('0x36')](_0x140511)[_0x0a9e('0x22')](handleEntityNotFound(_0x14433c,null))[_0x0a9e('0x22')](respondWithResult(_0x14433c,null))[_0x0a9e('0x37')](handleError(_0x14433c,null));};exports[_0x0a9e('0x21')]=function(_0x5583a4,_0x44295a){if(_0x5583a4['body']['id']){delete _0x5583a4[_0x0a9e('0x38')]['id'];}return db[_0x0a9e('0x2a')][_0x0a9e('0x36')]({'where':{'id':_0x5583a4[_0x0a9e('0x28')]['id']}})['then'](handleEntityNotFound(_0x44295a,null))[_0x0a9e('0x22')](saveUpdates(_0x5583a4[_0x0a9e('0x38')],null))[_0x0a9e('0x22')](respondWithResult(_0x44295a,null))[_0x0a9e('0x37')](handleError(_0x44295a,null));};exports['destroy']=function(_0x54135e,_0x1e8694){return db['MailApplication'][_0x0a9e('0x36')]({'where':{'id':_0x54135e[_0x0a9e('0x28')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x1e8694,null))[_0x0a9e('0x22')](removeEntity(_0x1e8694,null))['catch'](handleError(_0x1e8694,null));};
\ No newline at end of file
+var _0xa9e0=['includeAll','merge','options','find','catch','body','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','show','params','model','MailApplication','rawAttributes','query','keys','filters','intersection','attributes','fields','length'];(function(_0x2170d8,_0x31413b){var _0x561557=function(_0x2d22ff){while(--_0x2d22ff){_0x2170d8['push'](_0x2170d8['shift']());}};_0x561557(++_0x31413b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'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={'raw':!![],'where':{'id':_0x25fba9[_0x0a9e('0x28')]['id']}},_0x1538a4={};_0x1538a4[_0x0a9e('0x29')]=_['keys'](db[_0x0a9e('0x2a')][_0x0a9e('0x2b')]);_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x25fba9['query']);_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x1538a4[_0x0a9e('0x29')],_0x1538a4[_0x0a9e('0x2c')]);_0x140511[_0x0a9e('0x30')]=_[_0x0a9e('0x2f')](_0x1538a4[_0x0a9e('0x29')],qs[_0x0a9e('0x31')](_0x25fba9[_0x0a9e('0x2c')]['fields']));_0x140511[_0x0a9e('0x30')]=_0x140511['attributes'][_0x0a9e('0x32')]?_0x140511[_0x0a9e('0x30')]:_0x1538a4[_0x0a9e('0x29')];if(_0x25fba9[_0x0a9e('0x2c')][_0x0a9e('0x33')]){_0x140511['include']=[{'all':!![]}];}_0x140511=_[_0x0a9e('0x34')]({},_0x140511,_0x25fba9[_0x0a9e('0x35')]);return db[_0x0a9e('0x2a')][_0x0a9e('0x36')](_0x140511)[_0x0a9e('0x22')](handleEntityNotFound(_0x14433c,null))[_0x0a9e('0x22')](respondWithResult(_0x14433c,null))[_0x0a9e('0x37')](handleError(_0x14433c,null));};exports[_0x0a9e('0x21')]=function(_0x5583a4,_0x44295a){if(_0x5583a4['body']['id']){delete _0x5583a4[_0x0a9e('0x38')]['id'];}return db[_0x0a9e('0x2a')][_0x0a9e('0x36')]({'where':{'id':_0x5583a4[_0x0a9e('0x28')]['id']}})['then'](handleEntityNotFound(_0x44295a,null))[_0x0a9e('0x22')](saveUpdates(_0x5583a4[_0x0a9e('0x38')],null))[_0x0a9e('0x22')](respondWithResult(_0x44295a,null))[_0x0a9e('0x37')](handleError(_0x44295a,null));};exports['destroy']=function(_0x54135e,_0x1e8694){return db['MailApplication'][_0x0a9e('0x36')]({'where':{'id':_0x54135e[_0x0a9e('0x28')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x1e8694,null))[_0x0a9e('0x22')](removeEntity(_0x1e8694,null))['catch'](handleError(_0x1e8694,null));};
\ No newline at end of file
index 0d44027..7537641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9edf=['mail_applications','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./mailApplication.attributes','exports','define','MailApplication'];(function(_0x240406,_0x5c27a5){var _0x45edac=function(_0x13f9d7){while(--_0x13f9d7){_0x240406['push'](_0x240406['shift']());}};_0x45edac(++_0x5c27a5);}(_0x9edf,0x198));var _0xf9ed=function(_0x39cf23,_0x5ebada){_0x39cf23=_0x39cf23-0x0;var _0xb09c14=_0x9edf[_0x39cf23];return _0xb09c14;};'use strict';var _=require('lodash');var util=require(_0xf9ed('0x0'));var logger=require(_0xf9ed('0x1'))(_0xf9ed('0x2'));var moment=require(_0xf9ed('0x3'));var BPromise=require(_0xf9ed('0x4'));var rp=require(_0xf9ed('0x5'));var fs=require('fs');var path=require(_0xf9ed('0x6'));var rimraf=require(_0xf9ed('0x7'));var config=require('../../config/environment');var attributes=require(_0xf9ed('0x8'));module[_0xf9ed('0x9')]=function(_0x42fbcc,_0x22e98b){return _0x42fbcc[_0xf9ed('0xa')](_0xf9ed('0xb'),attributes,{'tableName':_0xf9ed('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf9ed('0xd'),'collate':_0xf9ed('0xe')});};
\ No newline at end of file
+var _0x4dfd=['exports','define','mail_applications','lodash','util','../../config/logger','api','bluebird','path'];(function(_0x1da298,_0x573f67){var _0x4f74a3=function(_0x42ce99){while(--_0x42ce99){_0x1da298['push'](_0x1da298['shift']());}};_0x4f74a3(++_0x573f67);}(_0x4dfd,0x13e));var _0xd4df=function(_0x418b9f,_0x3d43b1){_0x418b9f=_0x418b9f-0x0;var _0x3ccd4e=_0x4dfd[_0x418b9f];return _0x3ccd4e;};'use strict';var _=require(_0xd4df('0x0'));var util=require(_0xd4df('0x1'));var logger=require(_0xd4df('0x2'))(_0xd4df('0x3'));var moment=require('moment');var BPromise=require(_0xd4df('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd4df('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./mailApplication.attributes');module[_0xd4df('0x6')]=function(_0x1e2946,_0x3babb7){return _0x1e2946[_0xd4df('0x7')]('MailApplication',attributes,{'tableName':_0xd4df('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 4ba4b76..075f580 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47a2=['randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','request\x20sent','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','MailApplication,\x20%s,\x20%s','message','result','catch','UpdateMailApplication','body','options','raw','where','limit','debug','lodash','util','bluebird'];(function(_0x42857a,_0x22adfe){var _0x1bc606=function(_0x117818){while(--_0x117818){_0x42857a['push'](_0x42857a['shift']());}};_0x1bc606(++_0x22adfe);}(_0x47a2,0x169));var _0x247a=function(_0x1f68e5,_0x58607f){_0x1f68e5=_0x1f68e5-0x0;var _0x914ef9=_0x47a2[_0x1f68e5];return _0x914ef9;};'use strict';var _=require(_0x247a('0x0'));var util=require(_0x247a('0x1'));var moment=require('moment');var BPromise=require(_0x247a('0x2'));var rs=require(_0x247a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x247a('0x4'))['db'];var utils=require(_0x247a('0x5'));var logger=require(_0x247a('0x6'))('rpc');var config=require(_0x247a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x247a('0x8')][_0x247a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x46f77d,_0x9ddf26,_0x58fb4d){return new BPromise(function(_0x13fd88,_0x4479bf){return client[_0x247a('0xa')](_0x46f77d,_0x58fb4d)[_0x247a('0xb')](function(_0x5e3e20){logger[_0x247a('0xc')]('MailApplication,\x20%s,\x20%s',_0x9ddf26,_0x247a('0xd'));logger['debug'](_0x247a('0xe'),_0x9ddf26,_0x247a('0xd'),JSON[_0x247a('0xf')](_0x5e3e20));if(_0x5e3e20[_0x247a('0x10')]){if(_0x5e3e20[_0x247a('0x10')]['code']===0x1f4){logger[_0x247a('0x10')](_0x247a('0x11'),_0x9ddf26,_0x5e3e20[_0x247a('0x10')][_0x247a('0x12')]);return _0x4479bf(_0x5e3e20['error'][_0x247a('0x12')]);}logger[_0x247a('0x10')](_0x247a('0x11'),_0x9ddf26,_0x5e3e20['error'][_0x247a('0x12')]);return _0x13fd88(_0x5e3e20['error'][_0x247a('0x12')]);}else{logger[_0x247a('0xc')](_0x247a('0x11'),_0x9ddf26,_0x247a('0xd'));_0x13fd88(_0x5e3e20[_0x247a('0x13')][_0x247a('0x12')]);}})[_0x247a('0x14')](function(_0x1290db){logger[_0x247a('0x10')](_0x247a('0x11'),_0x9ddf26,_0x1290db);_0x4479bf(_0x1290db);});});}exports[_0x247a('0x15')]=function(_0x31526c){var _0x850817=this;return new Promise(function(_0x395cd9,_0x1ed33b){return db['MailApplication']['update'](_0x31526c[_0x247a('0x16')],{'raw':_0x31526c[_0x247a('0x17')]?_0x31526c[_0x247a('0x17')][_0x247a('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x31526c['options']?_0x31526c[_0x247a('0x17')][_0x247a('0x19')]||null:null,'attributes':_0x31526c['options']?_0x31526c[_0x247a('0x17')]['attributes']||null:null,'limit':_0x31526c['options']?_0x31526c['options'][_0x247a('0x1a')]||null:null})['then'](function(_0x16cccc){logger[_0x247a('0xc')](_0x247a('0x15'),_0x31526c);logger[_0x247a('0x1b')](_0x247a('0x15'),_0x31526c,JSON[_0x247a('0xf')](_0x16cccc));_0x395cd9(_0x16cccc);})[_0x247a('0x14')](function(_0x200c73){logger[_0x247a('0x10')](_0x247a('0x15'),_0x200c73[_0x247a('0x12')],_0x31526c);_0x1ed33b(_0x850817['error'](0x1f4,_0x200c73[_0x247a('0x12')]));});});};
\ No newline at end of file
+var _0x4a2f=['catch','UpdateMailApplication','MailApplication','update','body','options','then','debug','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','MailApplication,\x20%s,\x20%s','request\x20sent','MailApplication,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0x5608a3,_0x5b33c5){var _0x1ed50a=function(_0x959171){while(--_0x959171){_0x5608a3['push'](_0x5608a3['shift']());}};_0x1ed50a(++_0x5b33c5);}(_0x4a2f,0x8a));var _0xf4a2=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x4a2f[_0x3ab51d];return _0x29a04e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf4a2('0x0'));var BPromise=require(_0xf4a2('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xf4a2('0x2'));var logger=require(_0xf4a2('0x3'))(_0xf4a2('0x4'));var config=require(_0xf4a2('0x5'));var jayson=require(_0xf4a2('0x6'));var client=jayson[_0xf4a2('0x7')][_0xf4a2('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x10060f,_0x306b1c,_0x2952e6){return new BPromise(function(_0x5e3cd6,_0x48904b){return client[_0xf4a2('0x9')](_0x10060f,_0x2952e6)['then'](function(_0x4f72fd){logger[_0xf4a2('0xa')](_0xf4a2('0xb'),_0x306b1c,_0xf4a2('0xc'));logger['debug'](_0xf4a2('0xd'),_0x306b1c,_0xf4a2('0xc'),JSON['stringify'](_0x4f72fd));if(_0x4f72fd[_0xf4a2('0xe')]){if(_0x4f72fd[_0xf4a2('0xe')][_0xf4a2('0xf')]===0x1f4){logger['error'](_0xf4a2('0xb'),_0x306b1c,_0x4f72fd[_0xf4a2('0xe')]['message']);return _0x48904b(_0x4f72fd[_0xf4a2('0xe')]['message']);}logger[_0xf4a2('0xe')](_0xf4a2('0xb'),_0x306b1c,_0x4f72fd[_0xf4a2('0xe')][_0xf4a2('0x10')]);return _0x5e3cd6(_0x4f72fd['error'][_0xf4a2('0x10')]);}else{logger['info']('MailApplication,\x20%s,\x20%s',_0x306b1c,_0xf4a2('0xc'));_0x5e3cd6(_0x4f72fd[_0xf4a2('0x11')]['message']);}})[_0xf4a2('0x12')](function(_0x552517){logger[_0xf4a2('0xe')](_0xf4a2('0xb'),_0x306b1c,_0x552517);_0x48904b(_0x552517);});});}exports[_0xf4a2('0x13')]=function(_0x36c1ab){var _0x467235=this;return new Promise(function(_0x2646e6,_0x240720){return db[_0xf4a2('0x14')][_0xf4a2('0x15')](_0x36c1ab[_0xf4a2('0x16')],{'raw':_0x36c1ab['options']?_0x36c1ab[_0xf4a2('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x36c1ab[_0xf4a2('0x17')]?_0x36c1ab[_0xf4a2('0x17')]['where']||null:null,'attributes':_0x36c1ab[_0xf4a2('0x17')]?_0x36c1ab[_0xf4a2('0x17')]['attributes']||null:null,'limit':_0x36c1ab[_0xf4a2('0x17')]?_0x36c1ab[_0xf4a2('0x17')]['limit']||null:null})[_0xf4a2('0x18')](function(_0x139332){logger[_0xf4a2('0xa')](_0xf4a2('0x13'),_0x36c1ab);logger[_0xf4a2('0x19')]('UpdateMailApplication',_0x36c1ab,JSON['stringify'](_0x139332));_0x2646e6(_0x139332);})[_0xf4a2('0x12')](function(_0x469018){logger[_0xf4a2('0xe')](_0xf4a2('0x13'),_0x469018[_0xf4a2('0x10')],_0x36c1ab);_0x240720(_0x467235[_0xf4a2('0xe')](0x1f4,_0x469018[_0xf4a2('0x10')]));});});};
\ No newline at end of file
index f2f2726..9316f79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d6a=['post','create','addMessage','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','update','mailinteraction:destroy','destroy','delete','removeTags','exports','express','Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download'];(function(_0x3343e9,_0x32a345){var _0xd80870=function(_0x2e58fd){while(--_0x2e58fd){_0x3343e9['push'](_0x3343e9['shift']());}};_0xd80870(++_0x32a345);}(_0x2d6a,0x16a));var _0xa2d6=function(_0x4d0309,_0xbe0410){_0x4d0309=_0x4d0309-0x0;var _0x458037=_0x2d6a[_0x4d0309];return _0x458037;};'use strict';var express=require(_0xa2d6('0x0'));var router=express[_0xa2d6('0x1')]();var auth=require(_0xa2d6('0x2'));var interaction=require(_0xa2d6('0x3'));var controller=require(_0xa2d6('0x4'));router['get']('/',auth[_0xa2d6('0x5')](),controller[_0xa2d6('0x6')]);router[_0xa2d6('0x7')](_0xa2d6('0x8'),auth[_0xa2d6('0x5')](),controller[_0xa2d6('0x9')]);router[_0xa2d6('0x7')](_0xa2d6('0xa'),auth[_0xa2d6('0x5')](),controller[_0xa2d6('0xb')]);router[_0xa2d6('0x7')](_0xa2d6('0xc'),auth['isAuthenticated'](),controller[_0xa2d6('0xd')]);router[_0xa2d6('0x7')](_0xa2d6('0xe'),auth['isAuthenticated'](),controller['download']);router[_0xa2d6('0xf')]('/',auth['isAuthenticated'](),controller[_0xa2d6('0x10')]);router[_0xa2d6('0xf')]('/:id/messages',auth[_0xa2d6('0x5')](),controller[_0xa2d6('0x11')]);router[_0xa2d6('0xf')](_0xa2d6('0x12'),auth[_0xa2d6('0x5')](),interaction[_0xa2d6('0x13')](_0xa2d6('0x14'),_0xa2d6('0x15')),controller[_0xa2d6('0x16')]);router['put'](_0xa2d6('0xa'),auth[_0xa2d6('0x5')](),interaction[_0xa2d6('0x13')](_0xa2d6('0x14'),'mailinteraction:update'),controller[_0xa2d6('0x17')]);router['delete'](_0xa2d6('0xa'),auth['isAuthenticated'](),interaction[_0xa2d6('0x13')](_0xa2d6('0x14'),_0xa2d6('0x18')),controller[_0xa2d6('0x19')]);router[_0xa2d6('0x1a')]('/:id/tags',auth[_0xa2d6('0x5')](),controller[_0xa2d6('0x1b')]);module[_0xa2d6('0x1c')]=router;
\ No newline at end of file
+var _0x4b4e=['mailinteraction:update','update','delete','mailinteraction:destroy','destroy','removeTags','exports','express','../../components/interaction/service','./mailInteraction.controller','isAuthenticated','index','get','/describe','describe','/:id','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','mail','mailinteraction:addtags','addTags','put'];(function(_0x22a6a5,_0x45e387){var _0x20395e=function(_0x57ba63){while(--_0x57ba63){_0x22a6a5['push'](_0x22a6a5['shift']());}};_0x20395e(++_0x45e387);}(_0x4b4e,0x180));var _0xe4b4=function(_0x5d3890,_0x13f17c){_0x5d3890=_0x5d3890-0x0;var _0x803fa=_0x4b4e[_0x5d3890];return _0x803fa;};'use strict';var express=require(_0xe4b4('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var interaction=require(_0xe4b4('0x1'));var controller=require(_0xe4b4('0x2'));router['get']('/',auth[_0xe4b4('0x3')](),controller[_0xe4b4('0x4')]);router[_0xe4b4('0x5')](_0xe4b4('0x6'),auth[_0xe4b4('0x3')](),controller[_0xe4b4('0x7')]);router[_0xe4b4('0x5')](_0xe4b4('0x8'),auth[_0xe4b4('0x3')](),controller['show']);router[_0xe4b4('0x5')](_0xe4b4('0x9'),auth['isAuthenticated'](),controller[_0xe4b4('0xa')]);router[_0xe4b4('0x5')](_0xe4b4('0xb'),auth[_0xe4b4('0x3')](),controller[_0xe4b4('0xc')]);router[_0xe4b4('0xd')]('/',auth[_0xe4b4('0x3')](),controller[_0xe4b4('0xe')]);router['post'](_0xe4b4('0x9'),auth[_0xe4b4('0x3')](),controller[_0xe4b4('0xf')]);router[_0xe4b4('0xd')](_0xe4b4('0x10'),auth[_0xe4b4('0x3')](),interaction[_0xe4b4('0x11')](_0xe4b4('0x12'),_0xe4b4('0x13')),controller[_0xe4b4('0x14')]);router[_0xe4b4('0x15')](_0xe4b4('0x8'),auth[_0xe4b4('0x3')](),interaction[_0xe4b4('0x11')](_0xe4b4('0x12'),_0xe4b4('0x16')),controller[_0xe4b4('0x17')]);router[_0xe4b4('0x18')](_0xe4b4('0x8'),auth[_0xe4b4('0x3')](),interaction[_0xe4b4('0x11')](_0xe4b4('0x12'),_0xe4b4('0x19')),controller[_0xe4b4('0x1a')]);router['delete'](_0xe4b4('0x10'),auth[_0xe4b4('0x3')](),controller[_0xe4b4('0x1b')]);module[_0xe4b4('0x1c')]=router;
\ No newline at end of file
index da43649..0b07ef3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad69=['exports','BOOLEAN','DATE','STRING','out','ENUM','sequelize'];(function(_0x2aecb2,_0x343312){var _0x3ebb80=function(_0x19fab3){while(--_0x19fab3){_0x2aecb2['push'](_0x2aecb2['shift']());}};_0x3ebb80(++_0x343312);}(_0xad69,0x187));var _0x9ad6=function(_0x1e9e5f,_0x4940b3){_0x1e9e5f=_0x1e9e5f-0x0;var _0x372028=_0xad69[_0x1e9e5f];return _0x372028;};'use strict';var Sequelize=require(_0x9ad6('0x0'));var iconv=require('iconv');module[_0x9ad6('0x1')]={'closed':{'type':Sequelize[_0x9ad6('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x9ad6('0x3')]},'disposition':{'type':Sequelize[_0x9ad6('0x4')]},'secondDisposition':{'type':Sequelize[_0x9ad6('0x4')]},'thirdDisposition':{'type':Sequelize[_0x9ad6('0x4')]},'note':{'type':Sequelize[_0x9ad6('0x4')]},'inReplyTo':{'type':Sequelize[_0x9ad6('0x4')](0x1fe)},'to':{'type':Sequelize[_0x9ad6('0x4')]},'cc':{'type':Sequelize['TEXT']('long')},'subject':{'type':Sequelize['TEXT']()},'attach':{'type':Sequelize[_0x9ad6('0x2')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x9ad6('0x3')]},'substatus':{'type':Sequelize[_0x9ad6('0x4')](0x3c)},'substatusAt':{'type':Sequelize[_0x9ad6('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x9ad6('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x9ad6('0x6')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x9ad6('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x6086=['exports','BOOLEAN','DATE','STRING','long','ENUM','out','sequelize','iconv'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x6086,0xcd));var _0x6608=function(_0x3a3458,_0x668252){_0x3a3458=_0x3a3458-0x0;var _0x2471fc=_0x6086[_0x3a3458];return _0x2471fc;};'use strict';var Sequelize=require(_0x6608('0x0'));var iconv=require(_0x6608('0x1'));module[_0x6608('0x2')]={'closed':{'type':Sequelize[_0x6608('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x6608('0x4')]},'disposition':{'type':Sequelize[_0x6608('0x5')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x6608('0x5')](0x1fe)},'to':{'type':Sequelize[_0x6608('0x5')]},'cc':{'type':Sequelize['TEXT'](_0x6608('0x6'))},'subject':{'type':Sequelize['TEXT']()},'attach':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x6608('0x4')]},'substatus':{'type':Sequelize['STRING'](0x3c)},'substatusAt':{'type':Sequelize[_0x6608('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x6608('0x7')]('in',_0x6608('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x6608('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 5c378b2..eadae5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcde7=['`unreadMessages`\x20=\x200','tag','isArray','filter','replace','isNumeric','isEmail','c.email\x20LIKE\x20?','i.id','Sequelize','SELECT','clone','contactName','DESC','t.id\x20IN\x20?','resolve','i.MailAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getMailAccounts','i.MailAccountId\x20IS\x20NULL','sequelize','toString','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','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.updatedAt','i.closedAt','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.disposition','i.thirdDisposition','i.ContactId','i.MailAccountId','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','Setting','findOne','push','all','params','includeAll','include','options','create','body','describe','addMessage','omit','ids','format','findAll','addTags','setTags','emit','mailInteractionTags:save','removeTags','download','join','root','server','tmp','files','attachments','Attachment','Attachments','Messages','bcc','subject','mkdirSync','each','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','readFileSync','writeFileSync','unlinkSync','zip-dir','moment','bluebird','lodash','juice','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','redis','defaults','localhost','./mailInteraction.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','update','destroy','then','name','send','Users','fullname','TagIds','Tags','split','MailMessage','plainBody','-id','trimStart','catch','waiting','talking','answered','unmanaged','total','closed','UserId','index','MailInteraction','rawAttributes','key','query','keys','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','pick','select','field','color','tools_tags','u.id','ui.MailInteractionId','user_has_mail_interactions','left_join','users','u.id\x20=\x20ui.UserId','from','mail_interactions','cm_contacts','o.id\x20=\x20i.UserId','mail_messages','me.MailInteractionId\x20=\x20i.id','mail_interaction_has_tags','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','$substring','getFullTextValue','buildExpression','type','text','start','Tag','map','forEach','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','compact','isEmpty','MailAccountId','i.MailAccountId\x20IN\x20?','createdAt','$gte','parse','where','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read'];(function(_0x54be6d,_0x4d99df){var _0x469a00=function(_0x31c2c1){while(--_0x31c2c1){_0x54be6d['push'](_0x54be6d['shift']());}};_0x469a00(++_0x4d99df);}(_0xcde7,0x65));var _0x7cde=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xcde7[_0x4e676e];return _0x336a3c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7cde('0x0'));var moment=require(_0x7cde('0x1'));var BPromise=require(_0x7cde('0x2'));var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0x7cde('0x3'));var squel=require('squel');var juice=require(_0x7cde('0x4'));var Redis=require(_0x7cde('0x5'));var qs=require(_0x7cde('0x6'));var as=require(_0x7cde('0x7'));var logger=require(_0x7cde('0x8'))(_0x7cde('0x9'));var config=require('../../config/environment');var db=require(_0x7cde('0xa'))['db'];var htmlEntities=require('html-entities');config[_0x7cde('0xb')]=_[_0x7cde('0xc')](config[_0x7cde('0xb')],{'host':_0x7cde('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7cde('0xb')]));require(_0x7cde('0xe'))[_0x7cde('0xf')](socket);function respondWithStatusCode(_0x13d4f6,_0x2b0185){_0x2b0185=_0x2b0185||0xcc;return function(_0xde5f38){if(_0xde5f38){return _0x13d4f6[_0x7cde('0x10')](_0x2b0185);}return _0x13d4f6[_0x7cde('0x11')](_0x2b0185)[_0x7cde('0x12')]();};}function respondWithResult(_0x60c171,_0x5f127e){_0x5f127e=_0x5f127e||0xc8;return function(_0x1adc21){if(_0x1adc21){return _0x60c171[_0x7cde('0x11')](_0x5f127e)[_0x7cde('0x13')](_0x1adc21);}};}function respondWithFilteredResult(_0x1c51b2,_0x10ed91){return function(_0x27e8dc){if(_0x27e8dc){var _0x1905d0=typeof _0x10ed91[_0x7cde('0x14')]===_0x7cde('0x15')&&typeof _0x10ed91['limit']===_0x7cde('0x15');var _0x35b20a=_0x27e8dc[_0x7cde('0x16')];var _0x1bad92=_0x1905d0?0x0:_0x10ed91[_0x7cde('0x14')];var _0x21a230=_0x1905d0?_0x27e8dc[_0x7cde('0x16')]:_0x10ed91[_0x7cde('0x14')]+_0x10ed91[_0x7cde('0x17')];var _0x1d8924;if(_0x21a230>=_0x35b20a){_0x21a230=_0x35b20a;_0x1d8924=0xc8;}else{_0x1d8924=0xce;}_0x1c51b2[_0x7cde('0x11')](_0x1d8924);return _0x1c51b2[_0x7cde('0x18')](_0x7cde('0x19'),_0x1bad92+'-'+_0x21a230+'/'+_0x35b20a)['json'](_0x27e8dc);}return null;};}function saveUpdates(_0x1199f5){return function(_0x19c662){if(_0x19c662){return _0x19c662[_0x7cde('0x1a')](_0x1199f5)['then'](function(_0x248e95){return _0x248e95;});}return null;};}function removeEntity(_0x1a7eb0){return function(_0x5dbf34){if(_0x5dbf34){return _0x5dbf34[_0x7cde('0x1b')]()[_0x7cde('0x1c')](function(){_0x1a7eb0[_0x7cde('0x11')](0xcc)[_0x7cde('0x12')]();});}};}function handleEntityNotFound(_0x405031){return function(_0x42891f){if(!_0x42891f){_0x405031[_0x7cde('0x10')](0x194);}return _0x42891f;};}function handleError(_0x33b4d9,_0x4ee923){_0x4ee923=_0x4ee923||0x1f4;return function(_0x10ba0d){logger['error'](_0x10ba0d['stack']);if(_0x10ba0d['name']){delete _0x10ba0d[_0x7cde('0x1d')];}_0x33b4d9['status'](_0x4ee923)[_0x7cde('0x1e')](_0x10ba0d);};}function getInteractionUsers(_0x447a4e,_0x16439a){return new BPromise(function(_0x5596b3,_0x4b25e3){try{if(_0x16439a[_0x447a4e['id']]){_0x447a4e[_0x7cde('0x1f')]=_['map'](_0x16439a[_0x447a4e['id']],function(_0x44fc7e){return{'id':_0x44fc7e['id'],'fullname':_0x44fc7e[_0x7cde('0x20')]};});}}catch(_0x16be59){_0x4b25e3(_0x16be59);}_0x5596b3(_0x447a4e);});}function getInteractionTags(_0x4b28b2,_0x14b4b1){return new BPromise(function(_0x44d650,_0x4cf623){try{if(_0x4b28b2[_0x7cde('0x21')]){_0x4b28b2[_0x7cde('0x22')]=[];_0x4b28b2[_0x7cde('0x21')][_0x7cde('0x23')](',')['forEach'](function(_0x23f4c6){_0x4b28b2['Tags']['push'](_0x14b4b1[_0x23f4c6]);});}delete _0x4b28b2[_0x7cde('0x21')];}catch(_0x2b788f){_0x4cf623(_0x2b788f);}_0x44d650(_0x4b28b2);});}function getLastMessageText(_0x8088d1){return new BPromise(function(_0x360d31,_0x3ca89b){return db[_0x7cde('0x24')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x8088d1['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':'out'},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x7cde('0x25')],'order':_0x7cde('0x26'),'raw':!![]})[_0x7cde('0x1c')](function(_0x1f25f2){if(_0x1f25f2&&_0x1f25f2['plainBody']){_0x8088d1['lastMsgText']=_[_0x7cde('0x27')](_0x1f25f2[_0x7cde('0x25')]);}_0x360d31(_0x8088d1);})[_0x7cde('0x28')](function(_0x227e15){_0x3ca89b(_0x227e15);});});}function updateMailInteraction(_0x43b7af,_0x4b6566,_0x5d0969,_0x17d236){return new BPromise(function(_0x3abdc5,_0x2300c8){return getInteractionUsers(_0x43b7af,_0x5d0969)[_0x7cde('0x1c')](function(_0x3e6d62){return getInteractionTags(_0x3e6d62,_0x4b6566);})['then'](function(_0x270d32){return getStateInteraction(_0x270d32);})[_0x7cde('0x1c')](function(_0x446ef7){if(_0x17d236){_0x3abdc5(getLastMessageText(_0x446ef7));}else{_0x3abdc5(_0x446ef7);}})[_0x7cde('0x28')](function(_0xa0251d){_0x2300c8(_0xa0251d);});});}function getStateInteraction(_0x50ac2b){return new BPromise(function(_0x19a6c2){_0x50ac2b[_0x7cde('0x29')]=0x0;_0x50ac2b[_0x7cde('0x2a')]=0x0;_0x50ac2b[_0x7cde('0x2b')]=0x0;_0x50ac2b[_0x7cde('0x2c')]=0x0;_0x50ac2b[_0x7cde('0x2d')]=0x0;if(!_0x50ac2b[_0x7cde('0x2e')]&&!_0x50ac2b[_0x7cde('0x2f')]){_0x50ac2b[_0x7cde('0x29')]+=0x1;}if(!_0x50ac2b[_0x7cde('0x2e')]&&_0x50ac2b[_0x7cde('0x2f')]){_0x50ac2b[_0x7cde('0x2a')]+=0x1;if(_0x50ac2b[_0x7cde('0x29')]){_0x50ac2b['waiting']-=0x1;}}if(_0x50ac2b[_0x7cde('0x2e')]&&_0x50ac2b[_0x7cde('0x2f')]){_0x50ac2b[_0x7cde('0x2b')]+=0x1;if(_0x50ac2b[_0x7cde('0x2a')]){_0x50ac2b[_0x7cde('0x2a')]-=0x1;}}if(_0x50ac2b[_0x7cde('0x2e')]&&!_0x50ac2b[_0x7cde('0x2f')]){_0x50ac2b[_0x7cde('0x2c')]+=0x1;if(_0x50ac2b[_0x7cde('0x29')]){_0x50ac2b[_0x7cde('0x29')]-=0x1;}}_0x50ac2b[_0x7cde('0x2d')]+=0x1;_0x19a6c2(_0x50ac2b);});}exports[_0x7cde('0x30')]=function(_0x54800d,_0x41730c){var _0x3e9a8d={},_0x221423={},_0x2c48d8={'count':0x0,'rows':[]};var _0x465cd1=_['map'](db[_0x7cde('0x31')][_0x7cde('0x32')],function(_0x142016){return{'name':_0x142016['fieldName'],'type':_0x142016['type'][_0x7cde('0x33')]};});_0x221423['model']=_['map'](_0x465cd1,_0x7cde('0x1d'));_0x221423[_0x7cde('0x34')]=_[_0x7cde('0x35')](_0x54800d[_0x7cde('0x34')]);_0x221423[_0x7cde('0x36')]=_['intersection'](_0x221423['model'],_0x221423['query']);_0x3e9a8d[_0x7cde('0x37')]=_[_0x7cde('0x38')](_0x221423[_0x7cde('0x39')],qs['fields'](_0x54800d[_0x7cde('0x34')][_0x7cde('0x3a')]));_0x3e9a8d[_0x7cde('0x37')]=_0x3e9a8d[_0x7cde('0x37')][_0x7cde('0x3b')]?_0x3e9a8d[_0x7cde('0x37')]:_0x221423[_0x7cde('0x39')];if(!_0x54800d[_0x7cde('0x34')][_0x7cde('0x3c')](_0x7cde('0x3d'))){_0x3e9a8d[_0x7cde('0x17')]=qs[_0x7cde('0x17')](_0x54800d[_0x7cde('0x34')][_0x7cde('0x17')]);_0x3e9a8d['offset']=qs[_0x7cde('0x14')](_0x54800d[_0x7cde('0x34')]['offset']);}_0x3e9a8d[_0x7cde('0x3e')]=qs['sort'](_0x54800d['query'][_0x7cde('0x3f')]);_0x3e9a8d['where']=qs[_0x7cde('0x36')](_[_0x7cde('0x40')](_0x54800d[_0x7cde('0x34')],_0x221423[_0x7cde('0x36')]),_0x465cd1);var _0xd044d0=[];var _0x35213b=squel[_0x7cde('0x41')]()[_0x7cde('0x42')]('id')['field']('name')[_0x7cde('0x42')](_0x7cde('0x43'))['from'](_0x7cde('0x44'));var _0x10ed89=squel[_0x7cde('0x41')]()[_0x7cde('0x42')](_0x7cde('0x45'))[_0x7cde('0x42')]('u.fullname')[_0x7cde('0x42')](_0x7cde('0x46'))['from'](_0x7cde('0x47'),'ui')[_0x7cde('0x48')](_0x7cde('0x49'),'u',_0x7cde('0x4a'));var _0x300da1=squel[_0x7cde('0x41')]()[_0x7cde('0x4b')](_0x7cde('0x4c'),'i')['left_join'](_0x7cde('0x4d'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x7cde('0x48')](_0x7cde('0x49'),'o',_0x7cde('0x4e'))[_0x7cde('0x48')]('mail_accounts','a','a.id\x20=\x20i.MailAccountId')[_0x7cde('0x48')](_0x7cde('0x4f'),'me',_0x7cde('0x50'))['left_join'](_0x7cde('0x51'),'it','it.MailInteractionId\x20=\x20i.id')[_0x7cde('0x48')](_0x7cde('0x44'),'t',_0x7cde('0x52'));var _0x17f37a=squel[_0x7cde('0x53')]();var _0x33a62d=[];var _0xec2f76=squel[_0x7cde('0x53')]();var _0x131c8b;if(_0x54800d[_0x7cde('0x34')][_0x7cde('0x54')]){_0x131c8b=as['parseSearch'](_0x54800d['query'][_0x7cde('0x54')]);var _0x179035=_0x131c8b[_0x7cde('0x55')];for(var _0x53aa64=0x0;_0x53aa64<_0x131c8b[_0x7cde('0x56')]['length'];_0x53aa64++){var _0x49c1cf=_0x131c8b[_0x7cde('0x56')][_0x53aa64];var _0x34aef2='i';var _0x5e5b1d=_[_0x7cde('0x57')](_0x465cd1,[_0x7cde('0x1d'),_0x49c1cf[_0x7cde('0x42')]]);if(!_0x5e5b1d){switch(_0x49c1cf[_0x7cde('0x42')]){case _0x7cde('0x58'):if(_0x49c1cf[_0x7cde('0x59')]==0x1){_0x300da1[_0x7cde('0x5a')]('`'+_0x49c1cf[_0x7cde('0x42')]+_0x7cde('0x5b'));}else{_0x300da1['having']('`'+_0x49c1cf['field']+_0x7cde('0x5c'));}break;case'Contact':if(_0x49c1cf['operator']===_0x7cde('0x5d')){if(_0x49c1cf['value'][_0x7cde('0x23')]('\x20')[_0x7cde('0x3b')]>0x1){_0x17f37a[_0x179035]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x7cde('0x5e')](_0x49c1cf['value']),null);}else{var _0x3e0725='%'+_0x49c1cf[_0x7cde('0x59')]+'%';_0x17f37a[_0x179035]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x3e0725,_0x3e0725,_0x3e0725);}}else{_0x5e5b1d=_[_0x7cde('0x57')](_0x465cd1,['name','ContactId']);_0x49c1cf[_0x7cde('0x42')]='ContactId';_0x10768e=as[_0x7cde('0x5f')](_0x34aef2,_0x5e5b1d[_0x7cde('0x60')],_0x49c1cf);_0x17f37a[_0x179035](_0x10768e[_0x7cde('0x61')],_0x10768e['value'][_0x7cde('0x62')],_0x10768e[_0x7cde('0x59')][_0x7cde('0x12')]);}break;case _0x7cde('0x63'):var _0x393230=_0x49c1cf[_0x7cde('0x59')][_0x7cde('0x23')](',')[_0x7cde('0x64')](function(_0x48cf46){return Number(_0x48cf46);});_0x393230[_0x7cde('0x65')](function(_0xacfe0a){_0xec2f76['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0xacfe0a+',%');});_0x33a62d=_[_0x7cde('0x66')](_0x33a62d,_0x393230);break;case _0x7cde('0x67'):if(_0x49c1cf[_0x7cde('0x68')]===_0x7cde('0x5d')){_0x17f37a[_0x179035](_0x7cde('0x69'),'%'+_0x49c1cf[_0x7cde('0x59')]+'%',null);}else{_0x5e5b1d=_[_0x7cde('0x57')](_0x465cd1,[_0x7cde('0x1d'),'UserId']);_0x49c1cf['field']=_0x7cde('0x2f');_0x10768e=as[_0x7cde('0x5f')](_0x34aef2,_0x5e5b1d[_0x7cde('0x60')],_0x49c1cf);_0x17f37a[_0x179035](_0x10768e[_0x7cde('0x61')],_0x10768e[_0x7cde('0x59')][_0x7cde('0x62')],_0x10768e['value'][_0x7cde('0x12')]);}break;case _0x7cde('0x25'):_0x10768e=as[_0x7cde('0x5f')]('me',null,_0x49c1cf);_0x17f37a[_0x179035](_0x10768e[_0x7cde('0x61')],_0x10768e[_0x7cde('0x59')][_0x7cde('0x62')],_0x10768e[_0x7cde('0x59')]['end']);break;}}else{var _0x10768e=as['buildExpression'](_0x34aef2,_0x5e5b1d[_0x7cde('0x60')],_0x49c1cf);_0x17f37a[_0x179035](_0x10768e[_0x7cde('0x61')],_0x10768e[_0x7cde('0x59')][_0x7cde('0x62')],_0x10768e[_0x7cde('0x59')][_0x7cde('0x12')]);}}}else{var _0x296cc6=_(_0x54800d[_0x7cde('0x34')])[_0x7cde('0x35')]()[_0x7cde('0x64')](function(_0x2b8d2e){return _['some'](_0x465cd1,['name',_0x2b8d2e])?_0x2b8d2e:undefined;})[_0x7cde('0x6a')]()[_0x7cde('0x59')]();if(!_[_0x7cde('0x6b')](_0x296cc6)){_0x296cc6[_0x7cde('0x65')](function(_0x3148a4){if(_0x3148a4===_0x7cde('0x6c')){_0x300da1['where'](_0x7cde('0x6d'),[]['concat'](_0x54800d['query'][_0x3148a4]));}else if(_0x3148a4===_0x7cde('0x6e')){var _0x67e43b=JSON['parse'](_0x54800d[_0x7cde('0x34')][_0x3148a4])[_0x7cde('0x6f')];var _0x15f470=JSON[_0x7cde('0x70')](_0x54800d[_0x7cde('0x34')][_0x3148a4])['$lte'];_0x300da1[_0x7cde('0x71')](_0x7cde('0x72'),_0x67e43b,_0x15f470);}else{if(_0x54800d['query'][_0x3148a4]==='null'){_0x300da1[_0x7cde('0x71')]('i.'+_0x3148a4+_0x7cde('0x73'));}else{_0x300da1['where']('i.'+_0x3148a4+_0x7cde('0x74'),_0x54800d[_0x7cde('0x34')][_0x3148a4]);}}});}if(_0x54800d['query']['read']){if(_0x54800d[_0x7cde('0x34')][_0x7cde('0x75')]==0x1){_0x300da1[_0x7cde('0x5a')](_0x7cde('0x76'));}else{_0x300da1[_0x7cde('0x5a')]('`unreadMessages`\x20>\x200');}}if(_0x54800d[_0x7cde('0x34')][_0x7cde('0x77')]){_0x33a62d=_[_0x7cde('0x78')](_0x54800d[_0x7cde('0x34')][_0x7cde('0x77')])?_0x54800d[_0x7cde('0x34')][_0x7cde('0x77')]:new Array(_0x54800d[_0x7cde('0x34')][_0x7cde('0x77')]);_0x33a62d[_0x7cde('0x65')](function(_0x261d4b){_0xec2f76['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x261d4b+',%');});}if(_0x54800d[_0x7cde('0x34')]['filter']){var _0x12ff2f=_0x54800d[_0x7cde('0x34')][_0x7cde('0x79')][_0x7cde('0x7a')]('\x5c','\x5c\x5c')[_0x7cde('0x7a')](/'/g,'\x27\x27');if(qs[_0x7cde('0x7b')](_0x12ff2f)){_0x17f37a['or']('i.id\x20LIKE\x20?',_0x12ff2f+'%');}else if(qs[_0x7cde('0x7c')](_0x12ff2f)){_0x17f37a['or'](_0x7cde('0x7d'),_0x12ff2f+'%');}else{_0x17f37a['or']('MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x12ff2f))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x12ff2f));}}}_0x300da1['where'](_0x17f37a);_0x300da1['group'](_0x7cde('0x7e'));var _0x192c00={'type':db[_0x7cde('0x7f')]['QueryTypes'][_0x7cde('0x80')],'raw':!![]};var _0x447dc6=_0x300da1[_0x7cde('0x81')]();_0x447dc6[_0x7cde('0x42')]('i.id');_0x447dc6[_0x7cde('0x42')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x7cde('0x58'));if(_0x3e9a8d[_0x7cde('0x3e')]){_0x3e9a8d[_0x7cde('0x3e')][_0x7cde('0x65')](function(_0x4d244b){var _0x31258=_0x4d244b[0x0]===_0x7cde('0x82')?_0x4d244b[0x0]:'i.'+_0x4d244b[0x0];_0x300da1[_0x7cde('0x3e')](_0x31258,_0x4d244b[0x1]===_0x7cde('0x83')?![]:!![]);});}if(!_[_0x7cde('0x6b')](_0x33a62d)){_0x300da1[_0x7cde('0x5a')](_0xec2f76);_0x447dc6[_0x7cde('0x71')](_0x7cde('0x84'),_0x33a62d);}BPromise[_0x7cde('0x85')]()[_0x7cde('0x1c')](function(){if(!_0x131c8b){if(_0x54800d[_0x7cde('0x34')][_0x7cde('0x6c')])return;_0x447dc6[_0x7cde('0x71')](_0x7cde('0x86'));_0x300da1['where'](_0x7cde('0x86'));return;}if(_0x54800d['user'][_0x7cde('0x87')]!==_0x7cde('0x88'))return;return _0x54800d[_0x7cde('0x89')][_0x7cde('0x8a')]({'attributes':['id'],'raw':!![]})['then'](function(_0x538113){if(_[_0x7cde('0x6b')](_0x538113)){_0x447dc6['where']('i.MailAccountId\x20IS\x20NULL');_0x300da1[_0x7cde('0x71')](_0x7cde('0x8b'));}else{_0x447dc6[_0x7cde('0x71')](_0x7cde('0x6d'),_[_0x7cde('0x64')](_0x538113,'id'));_0x300da1['where']('i.MailAccountId\x20IN\x20?',_[_0x7cde('0x64')](_0x538113,'id'));}});})[_0x7cde('0x1c')](function(){if(_0x54800d[_0x7cde('0x89')][_0x7cde('0x87')]===_0x7cde('0x88')&&!_0x131c8b&&!_0x54800d[_0x7cde('0x34')][_0x7cde('0x6c')])return[];return db[_0x7cde('0x8c')]['query'](_0x447dc6['toString'](),_0x192c00);})[_0x7cde('0x1c')](function(_0x188698){_0x2c48d8['count']=_0x188698[_0x7cde('0x3b')];if(_0x2c48d8[_0x7cde('0x16')]===0x0)return[];return db[_0x7cde('0x8c')]['query'](_0x35213b[_0x7cde('0x8d')](),_0x192c00)[_0x7cde('0x1c')](function(_0x1b4cbe){_0xd044d0=_['keyBy'](_0x1b4cbe,'id');_0x192c00=_[_0x7cde('0x8e')](_0x192c00,{'model':db[_0x7cde('0x31')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x54800d[_0x7cde('0x34')][_0x7cde('0x3a')]){_0x3e9a8d['attributes']['forEach'](function(_0x5a384e){_0x300da1['field']('i.'+_0x5a384e);});}else{_0x300da1[_0x7cde('0x42')](_0x7cde('0x8f'),_0x7cde('0x58'));_0x300da1[_0x7cde('0x42')](_0x7cde('0x90'),_0x7cde('0x91'));_0x300da1[_0x7cde('0x42')](_0x7cde('0x92'),_0x7cde('0x93'));_0x300da1[_0x7cde('0x42')](_0x7cde('0x94'),_0x7cde('0x82'));_0x300da1[_0x7cde('0x42')](_0x7cde('0x7e'));_0x300da1[_0x7cde('0x42')](_0x7cde('0x95'));_0x300da1[_0x7cde('0x42')](_0x7cde('0x96'));_0x300da1[_0x7cde('0x42')]('i.closed');_0x300da1[_0x7cde('0x42')](_0x7cde('0x97'));_0x300da1[_0x7cde('0x42')](_0x7cde('0x98'));_0x300da1[_0x7cde('0x42')](_0x7cde('0x99'));_0x300da1[_0x7cde('0x42')](_0x7cde('0x9a'));_0x300da1[_0x7cde('0x42')](_0x7cde('0x9b'));_0x300da1[_0x7cde('0x42')](_0x7cde('0x9c'));_0x300da1[_0x7cde('0x42')]('i.secondDisposition');_0x300da1['field'](_0x7cde('0x9d'));_0x300da1[_0x7cde('0x42')]('i.substatus');_0x300da1['field']('i.to');_0x300da1['field'](_0x7cde('0x9e'));_0x300da1[_0x7cde('0x42')](_0x7cde('0x9f'));_0x300da1[_0x7cde('0x42')]('i.UserId');_0x300da1['field']('c.firstName','Contact.firstName');_0x300da1[_0x7cde('0x42')](_0x7cde('0xa0'),_0x7cde('0xa1'));_0x300da1[_0x7cde('0x42')](_0x7cde('0xa2'),_0x7cde('0xa3'));_0x300da1[_0x7cde('0x42')](_0x7cde('0xa4'),_0x7cde('0xa5'));_0x300da1['field']('c.mobile',_0x7cde('0xa6'));_0x300da1[_0x7cde('0x42')](_0x7cde('0xa7'),_0x7cde('0xa8'));_0x300da1['field'](_0x7cde('0xa9'),'Owner.fullname');_0x300da1[_0x7cde('0x42')](_0x7cde('0xaa'),_0x7cde('0xab'));_0x300da1[_0x7cde('0x42')](_0x7cde('0xac'),_0x7cde('0x21'));}if(_0x3e9a8d[_0x7cde('0x17')])_0x300da1['limit'](_0x3e9a8d[_0x7cde('0x17')]);if(_0x3e9a8d[_0x7cde('0x14')])_0x300da1[_0x7cde('0x14')](_0x3e9a8d[_0x7cde('0x14')]);return db[_0x7cde('0x8c')]['query'](_0x300da1[_0x7cde('0x8d')](),_0x192c00);})[_0x7cde('0x1c')](function(_0x114f82){if(_0x114f82[_0x7cde('0x3b')]>0x0)_0x10ed89[_0x7cde('0x71')](_0x7cde('0xad'),_[_0x7cde('0x64')](_0x114f82,'id'));return db['sequelize'][_0x7cde('0x34')](_0x10ed89['toString'](),_0x192c00)['then'](function(_0x1334d2){var _0x576ec5=_[_0x7cde('0xae')](_0x1334d2,_0x7cde('0xaf'));var _0x28207b=[];return db[_0x7cde('0xb0')][_0x7cde('0xb1')]({'attributes':['enableEmailPreview'],'raw':!![]})[_0x7cde('0x1c')](function(_0x46616f){var _0x1bce60=_0x46616f['enableEmailPreview'];_0x114f82[_0x7cde('0x65')](function(_0x578d5e){_0x28207b[_0x7cde('0xb2')](updateMailInteraction(_0x578d5e,_0xd044d0,_0x576ec5,_0x1bce60));});return BPromise[_0x7cde('0xb3')](_0x28207b);});});});})[_0x7cde('0x1c')](function(_0x2961d8){_0x2c48d8['rows']=_0x2961d8;return _0x2c48d8;})['then'](respondWithFilteredResult(_0x41730c,_0x3e9a8d))[_0x7cde('0x28')](handleError(_0x41730c,null));};exports['show']=function(_0x5426b6,_0x4669f8){var _0x1323bb={'raw':![],'where':{'id':_0x5426b6[_0x7cde('0xb4')]['id']}},_0x173862={};_0x173862[_0x7cde('0x39')]=_[_0x7cde('0x35')](db['MailInteraction'][_0x7cde('0x32')]);_0x173862[_0x7cde('0x34')]=_[_0x7cde('0x35')](_0x5426b6['query']);_0x173862[_0x7cde('0x36')]=_[_0x7cde('0x38')](_0x173862[_0x7cde('0x39')],_0x173862[_0x7cde('0x34')]);_0x1323bb['attributes']=_[_0x7cde('0x38')](_0x173862['model'],qs['fields'](_0x5426b6[_0x7cde('0x34')][_0x7cde('0x3a')]));_0x1323bb['attributes']=_0x1323bb[_0x7cde('0x37')][_0x7cde('0x3b')]?_0x1323bb[_0x7cde('0x37')]:_0x173862[_0x7cde('0x39')];if(_0x5426b6[_0x7cde('0x34')][_0x7cde('0xb5')]){_0x1323bb[_0x7cde('0xb6')]=[{'all':!![]}];}_0x1323bb=_[_0x7cde('0x8e')]({},_0x1323bb,_0x5426b6[_0x7cde('0xb7')]);return db[_0x7cde('0x31')][_0x7cde('0x57')](_0x1323bb)[_0x7cde('0x1c')](handleEntityNotFound(_0x4669f8,null))['then'](respondWithResult(_0x4669f8,null))[_0x7cde('0x28')](handleError(_0x4669f8,null));};exports['create']=function(_0x3d946e,_0x3b388d){return db[_0x7cde('0x31')][_0x7cde('0xb8')](_0x3d946e[_0x7cde('0xb9')],{})[_0x7cde('0x1c')](respondWithResult(_0x3b388d,0xc9))[_0x7cde('0x28')](handleError(_0x3b388d,null));};exports[_0x7cde('0x1a')]=function(_0x24bd3e,_0x375d4d){if(_0x24bd3e[_0x7cde('0xb9')]['id']){delete _0x24bd3e[_0x7cde('0xb9')]['id'];}return db['MailInteraction'][_0x7cde('0x57')]({'where':{'id':_0x24bd3e[_0x7cde('0xb4')]['id']}})[_0x7cde('0x1c')](handleEntityNotFound(_0x375d4d,null))[_0x7cde('0x1c')](saveUpdates(_0x24bd3e[_0x7cde('0xb9')],null))[_0x7cde('0x1c')](respondWithResult(_0x375d4d,null))[_0x7cde('0x28')](handleError(_0x375d4d,null));};exports[_0x7cde('0x1b')]=function(_0x2aac47,_0x3685be){return db[_0x7cde('0x31')]['find']({'where':{'id':_0x2aac47[_0x7cde('0xb4')]['id']}})[_0x7cde('0x1c')](handleEntityNotFound(_0x3685be,null))[_0x7cde('0x1c')](removeEntity(_0x3685be,null))[_0x7cde('0x28')](handleError(_0x3685be,null));};exports['describe']=function(_0x71d26a,_0x310ea5){return db[_0x7cde('0x31')][_0x7cde('0xba')]()[_0x7cde('0x1c')](respondWithResult(_0x310ea5,null))[_0x7cde('0x28')](handleError(_0x310ea5,null));};exports[_0x7cde('0xbb')]=function(_0x186012,_0x7c057a){return db[_0x7cde('0x24')][_0x7cde('0x57')]({'where':{'id':_0x186012[_0x7cde('0xb4')]['id']}})[_0x7cde('0x1c')](handleEntityNotFound(_0x7c057a,null))[_0x7cde('0x1c')](function(_0x4e4992){if(_0x4e4992){return _0x4e4992[_0x7cde('0xbb')](_0x186012[_0x7cde('0xb9')]['ids'],_[_0x7cde('0xbc')](_0x186012['body'],[_0x7cde('0xbd'),'id'])||{});}})[_0x7cde('0x1c')](respondWithResult(_0x7c057a,null))['catch'](handleError(_0x7c057a,null));};exports['getMessages']=function(_0x3b9609,_0x533d21){var _0x531865={'raw':![],'where':{}};var _0x340aa8={};var _0x239bf3={'count':0x0,'rows':[]};return db[_0x7cde('0x31')][_0x7cde('0xb1')]({'where':{'id':_0x3b9609[_0x7cde('0xb4')]['id']}})[_0x7cde('0x1c')](handleEntityNotFound(_0x533d21,null))[_0x7cde('0x1c')](function(_0x23b9a5){if(_0x23b9a5){_0x340aa8[_0x7cde('0x39')]=_[_0x7cde('0x35')](db['MailMessage']['rawAttributes']);_0x340aa8[_0x7cde('0x34')]=_[_0x7cde('0x35')](_0x3b9609[_0x7cde('0x34')]);_0x340aa8['filters']=_[_0x7cde('0x38')](_0x340aa8[_0x7cde('0x39')],_0x340aa8[_0x7cde('0x34')]);_0x531865[_0x7cde('0x37')]=_[_0x7cde('0x38')](_0x340aa8[_0x7cde('0x39')],qs['fields'](_0x3b9609[_0x7cde('0x34')][_0x7cde('0x3a')]));_0x531865[_0x7cde('0x37')]=_0x531865[_0x7cde('0x37')][_0x7cde('0x3b')]?_0x531865[_0x7cde('0x37')]:_0x340aa8['model'];if(!_0x3b9609[_0x7cde('0x34')]['hasOwnProperty'](_0x7cde('0x3d'))){_0x531865[_0x7cde('0x17')]=qs[_0x7cde('0x17')](_0x3b9609[_0x7cde('0x34')][_0x7cde('0x17')]);_0x531865[_0x7cde('0x14')]=qs['offset'](_0x3b9609[_0x7cde('0x34')][_0x7cde('0x14')]);}_0x531865[_0x7cde('0x3e')]=qs['sort'](_0x3b9609[_0x7cde('0x34')][_0x7cde('0x3f')]);_0x531865[_0x7cde('0x71')]=qs[_0x7cde('0x36')](_[_0x7cde('0x40')](_0x3b9609[_0x7cde('0x34')],_0x340aa8[_0x7cde('0x36')]));_0x531865[_0x7cde('0x71')][_0x7cde('0xaf')]=_0x23b9a5['id'];if(_0x3b9609[_0x7cde('0x34')][_0x7cde('0x79')]){_0x531865[_0x7cde('0x71')]=_[_0x7cde('0x8e')](_0x531865[_0x7cde('0x71')],{'$or':_[_0x7cde('0x64')](_0x531865[_0x7cde('0x37')],function(_0x360965){var _0xcae97={};_0xcae97[_0x360965]={'$like':'%'+_0x3b9609[_0x7cde('0x34')][_0x7cde('0x79')]+'%'};return _0xcae97;})});}if(_0x3b9609[_0x7cde('0x34')][_0x7cde('0x6f')]){var _0x5c4978=_0x3b9609[_0x7cde('0x34')]['$gte']['split'](',');var _0x476752={};_0x476752[_0x5c4978[0x0]]={'$gte':moment(_0x5c4978[0x1])[_0x7cde('0xbe')]('YYYY-MM-DD\x20HH:mm:ss')};_0x531865[_0x7cde('0x71')]=_[_0x7cde('0x8e')](_0x531865[_0x7cde('0x71')],_0x476752);}_0x531865=_['merge']({},_0x531865,_0x3b9609['options']);return db['MailMessage'][_0x7cde('0x16')]({'where':_0x531865[_0x7cde('0x71')]})[_0x7cde('0x1c')](function(_0x24e37e){_0x239bf3[_0x7cde('0x16')]=_0x24e37e;if(_0x3b9609[_0x7cde('0x34')][_0x7cde('0xb5')]){_0x531865['include']=[{'all':!![]}];}return db['MailMessage'][_0x7cde('0xbf')](_0x531865);})['then'](function(_0x209b74){if(_0x3b9609[_0x7cde('0x34')]['inlineCss']==='true'){for(var _0x121a40=0x0;_0x121a40<_0x209b74[_0x7cde('0x3b')];_0x121a40++){_0x209b74[_0x121a40]['body']=juice(_0x209b74[_0x121a40][_0x7cde('0xb9')]);}}_0x239bf3['rows']=_0x209b74;return _0x239bf3;});}})['then'](respondWithFilteredResult(_0x533d21,_0x531865))[_0x7cde('0x28')](handleError(_0x533d21,null));};exports[_0x7cde('0xc0')]=function(_0x2c242e,_0x1c056e){return db[_0x7cde('0x31')][_0x7cde('0x57')]({'where':{'id':_0x2c242e[_0x7cde('0xb4')]['id']}})[_0x7cde('0x1c')](handleEntityNotFound(_0x1c056e,null))['then'](function(_0x27e585){if(_0x27e585){return _0x27e585[_0x7cde('0xc1')](_0x2c242e[_0x7cde('0xb9')][_0x7cde('0xbd')],_[_0x7cde('0xbc')](_0x2c242e['body'],[_0x7cde('0xbd'),'id'])||{})['spread'](function(){return db[_0x7cde('0x63')][_0x7cde('0xbf')]({'attributes':['id',_0x7cde('0x1d'),_0x7cde('0x43')],'where':{'id':_0x2c242e[_0x7cde('0xb9')][_0x7cde('0xbd')]}});})[_0x7cde('0x1c')](function(_0x414651){socket[_0x7cde('0xc2')](_0x7cde('0xc3'),{'id':Number(_0x2c242e[_0x7cde('0xb4')]['id']),'tags':_0x414651||[]});return{'id':Number(_0x2c242e['params']['id']),'tags':_0x414651||[]};});}})[_0x7cde('0x1c')](respondWithResult(_0x1c056e,null))[_0x7cde('0x28')](handleError(_0x1c056e,null));};exports[_0x7cde('0xc4')]=function(_0x235518,_0x143771){return db[_0x7cde('0x31')]['find']({'where':{'id':_0x235518['params']['id']}})[_0x7cde('0x1c')](handleEntityNotFound(_0x143771,null))['then'](function(_0xba9393){if(_0xba9393){return _0xba9393[_0x7cde('0xc4')](_0x235518[_0x7cde('0x34')]['ids']);}})['then'](respondWithStatusCode(_0x143771,null))[_0x7cde('0x28')](handleError(_0x143771,null));};exports[_0x7cde('0xc5')]=function(_0x15b049,_0x16b4c9){var _0x42a54c=moment()['unix']()['toString']();var _0x5954b8=path[_0x7cde('0xc6')](config[_0x7cde('0xc7')],_0x7cde('0xc8'),'files',_0x7cde('0xc9'));var _0x27c481=path[_0x7cde('0xc6')](config[_0x7cde('0xc7')],_0x7cde('0xc8'),_0x7cde('0xca'),_0x7cde('0xcb'));var _0x196b92=path[_0x7cde('0xc6')](_0x5954b8,_0x42a54c);var _0x4b72f=util[_0x7cde('0xbe')]('transcript-%d-%s.zip',_0x15b049[_0x7cde('0xb4')]['id'],_0x42a54c);var _0x67ba5d=path[_0x7cde('0xc6')](_0x5954b8,_0x4b72f);var _0x3a5848=[];if(_0x15b049[_0x7cde('0x34')]['attachments']){_0x3a5848[_0x7cde('0xb2')]({'model':db[_0x7cde('0xcc')],'as':_0x7cde('0xcd'),'raw':!![]});}var _0x491bb8=[{'model':db[_0x7cde('0x24')],'as':_0x7cde('0xce'),'attributes':['id',_0x7cde('0xb9'),'from','to','cc',_0x7cde('0xcf'),_0x7cde('0xd0'),_0x7cde('0x6e')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x3a5848}];return db[_0x7cde('0x31')][_0x7cde('0x57')]({'where':{'id':_0x15b049['params']['id']},'include':_0x491bb8})[_0x7cde('0x1c')](handleEntityNotFound(_0x16b4c9,null))['then'](function(_0x166fca){if(_0x166fca&&_0x166fca[_0x7cde('0xce')]){var _0x1e479e=_0x166fca['get']({'plain':!![]});fs[_0x7cde('0xd1')](_0x196b92);return BPromise[_0x7cde('0xd2')](_0x1e479e[_0x7cde('0xce')],function(_0x304044,_0x1d87a2){var _0x1a9ecb={'from':_0x304044['from'],'to':_0x304044['to'],'subject':_0x304044[_0x7cde('0xd0')],'html':htmlEntities[_0x7cde('0xd3')](_0x304044[_0x7cde('0xb9')]),'headers':{'Date':moment(_0x304044[_0x7cde('0x6e')])['format'](_0x7cde('0xd4'))},'attachments':[]};if(_0x304044['cc']){_0x1a9ecb['headers']['Cc']=_0x304044['cc'];}if(_0x304044['bcc']){_0x1a9ecb[_0x7cde('0xd5')][_0x7cde('0xd6')]=_0x304044[_0x7cde('0xcf')];}return new BPromise(function(_0x1c1ce9,_0x12e644){if(_0x304044['Attachments']){for(var _0x218216=0x0;_0x218216<_0x304044[_0x7cde('0xcd')][_0x7cde('0x3b')];_0x218216++){var _0x2dd6f3=_0x304044[_0x7cde('0xcd')][_0x218216];var _0x3c289b=path['join'](_0x27c481,_0x2dd6f3[_0x7cde('0xd7')]);if(fs['existsSync'](_0x3c289b)){_0x1a9ecb[_0x7cde('0xcb')][_0x7cde('0xb2')]({'name':_0x2dd6f3['name'],'contentType':_0x2dd6f3[_0x7cde('0x60')],'data':fs[_0x7cde('0xd8')](_0x3c289b)});}}}emlformat['build'](_0x1a9ecb,function(_0x417fd9,_0x51fc59){if(_0x417fd9)return _0x12e644(_0x417fd9);fs[_0x7cde('0xd9')](path[_0x7cde('0xc6')](_0x196b92,util[_0x7cde('0xbe')]('message%d.eml',_0x1d87a2)),_0x51fc59);return _0x1c1ce9(_0x51fc59);});});})[_0x7cde('0x1c')](function(){return new BPromise(function(_0x2cd053,_0x110e37){zipdir(_0x196b92,{'saveTo':_0x67ba5d},function(_0x44f2c7,_0x2bbaed){if(_0x44f2c7)return _0x110e37(_0x44f2c7);return _0x2cd053(_0x2bbaed);});})['then'](function(){return new BPromise(function(_0x4695cb,_0x3d5c4b){rimraf(_0x196b92,function(_0x4abc67){if(_0x4abc67)_0x3d5c4b(_0x4abc67);return _0x4695cb();});});})[_0x7cde('0x1c')](function(){return _0x16b4c9[_0x7cde('0xc5')](_0x67ba5d,_0x4b72f,function(_0x47b7f1){if(!_0x47b7f1)fs[_0x7cde('0xda')](_0x67ba5d);});});});}else{return _0x16b4c9[_0x7cde('0x10')](0xc8);}})['catch'](handleError(_0x16b4c9,null));};
\ No newline at end of file
+var _0xba0d=['having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','buildExpression','text','start','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','some','compact','i.MailAccountId\x20IN\x20?','concat','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','i.id\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','isEmpty','t.id\x20IN\x20?','resolve','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getMailAccounts','i.MailAccountId\x20IS\x20NULL','toString','sequelize','a.key','Account.key','a.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.id','i.createdAt','i.updatedAt','i.closed','i.attach','i.lastMsgAt','i.lastMsgDirection','i.subject','i.secondDisposition','i.thirdDisposition','i.substatus','i.to','i.ContactId','i.UserId','c.firstName','Contact.firstName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','Setting','enableEmailPreview','all','rows','show','params','merge','options','create','body','addMessage','MailMessage','omit','ids','$gte','findAll','true','addTags','spread','Tag','emit','mailInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','format','transcript-%d-%s.zip','Attachment','Attachments','Messages','bcc','subject','createdAt','mkdirSync','each','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','existsSync','writeFileSync','message%d.eml','unlinkSync','eml-format','zip-dir','moment','bluebird','path','squel','juice','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','html-entities','defaults','socket.io-emitter','./mailInteraction.socket','sendStatus','status','end','json','offset','undefined','count','limit','set','update','then','error','stack','name','send','Users','fullname','TagIds','Tags','split','push','findOne','plainBody','-id','lastMsgText','trimStart','catch','waiting','talking','answered','unmanaged','total','UserId','closed','index','map','MailInteraction','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.MailInteractionId','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','o.id\x20=\x20i.UserId','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','unreadMessages','value'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xba0d,0x8e));var _0xdba0=function(_0x363a4e,_0x432423){_0x363a4e=_0x363a4e-0x0;var _0x34ffdb=_0xba0d[_0x363a4e];return _0x34ffdb;};'use strict';var emlformat=require(_0xdba0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdba0('0x1'));var moment=require(_0xdba0('0x2'));var BPromise=require(_0xdba0('0x3'));var util=require('util');var path=require(_0xdba0('0x4'));var fs=require('fs');var _=require('lodash');var squel=require(_0xdba0('0x5'));var juice=require(_0xdba0('0x6'));var Redis=require(_0xdba0('0x7'));var qs=require(_0xdba0('0x8'));var as=require('../../components/parsers/advancedSearch');var logger=require('../../config/logger')(_0xdba0('0x9'));var config=require(_0xdba0('0xa'));var db=require(_0xdba0('0xb'))['db'];var htmlEntities=require(_0xdba0('0xc'));config['redis']=_[_0xdba0('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xdba0('0xe'))(new Redis(config['redis']));require(_0xdba0('0xf'))['register'](socket);function respondWithStatusCode(_0x1b4dec,_0x357072){_0x357072=_0x357072||0xcc;return function(_0x25f9b7){if(_0x25f9b7){return _0x1b4dec[_0xdba0('0x10')](_0x357072);}return _0x1b4dec[_0xdba0('0x11')](_0x357072)[_0xdba0('0x12')]();};}function respondWithResult(_0x24bf36,_0x43ae3a){_0x43ae3a=_0x43ae3a||0xc8;return function(_0x4fe80c){if(_0x4fe80c){return _0x24bf36['status'](_0x43ae3a)[_0xdba0('0x13')](_0x4fe80c);}};}function respondWithFilteredResult(_0x2d9e50,_0x223797){return function(_0x1c7dbf){if(_0x1c7dbf){var _0x29f3f7=typeof _0x223797[_0xdba0('0x14')]===_0xdba0('0x15')&&typeof _0x223797['limit']===_0xdba0('0x15');var _0x722955=_0x1c7dbf[_0xdba0('0x16')];var _0xb0ffc4=_0x29f3f7?0x0:_0x223797[_0xdba0('0x14')];var _0x1aee2d=_0x29f3f7?_0x1c7dbf[_0xdba0('0x16')]:_0x223797[_0xdba0('0x14')]+_0x223797[_0xdba0('0x17')];var _0x167dbc;if(_0x1aee2d>=_0x722955){_0x1aee2d=_0x722955;_0x167dbc=0xc8;}else{_0x167dbc=0xce;}_0x2d9e50['status'](_0x167dbc);return _0x2d9e50[_0xdba0('0x18')]('Content-Range',_0xb0ffc4+'-'+_0x1aee2d+'/'+_0x722955)[_0xdba0('0x13')](_0x1c7dbf);}return null;};}function saveUpdates(_0x2915e6){return function(_0x30b049){if(_0x30b049){return _0x30b049[_0xdba0('0x19')](_0x2915e6)['then'](function(_0x4c954f){return _0x4c954f;});}return null;};}function removeEntity(_0x393c12){return function(_0x427dea){if(_0x427dea){return _0x427dea['destroy']()[_0xdba0('0x1a')](function(){_0x393c12[_0xdba0('0x11')](0xcc)[_0xdba0('0x12')]();});}};}function handleEntityNotFound(_0x591b0e){return function(_0x36adb3){if(!_0x36adb3){_0x591b0e[_0xdba0('0x10')](0x194);}return _0x36adb3;};}function handleError(_0x35a741,_0x11ded6){_0x11ded6=_0x11ded6||0x1f4;return function(_0x2fdeeb){logger[_0xdba0('0x1b')](_0x2fdeeb[_0xdba0('0x1c')]);if(_0x2fdeeb[_0xdba0('0x1d')]){delete _0x2fdeeb[_0xdba0('0x1d')];}_0x35a741[_0xdba0('0x11')](_0x11ded6)[_0xdba0('0x1e')](_0x2fdeeb);};}function getInteractionUsers(_0x47eab6,_0xdce58c){return new BPromise(function(_0x226d17,_0x4873de){try{if(_0xdce58c[_0x47eab6['id']]){_0x47eab6[_0xdba0('0x1f')]=_['map'](_0xdce58c[_0x47eab6['id']],function(_0x3600e6){return{'id':_0x3600e6['id'],'fullname':_0x3600e6[_0xdba0('0x20')]};});}}catch(_0x5d61e0){_0x4873de(_0x5d61e0);}_0x226d17(_0x47eab6);});}function getInteractionTags(_0x4ad40f,_0x3e8c41){return new BPromise(function(_0x2541a6,_0x331a07){try{if(_0x4ad40f[_0xdba0('0x21')]){_0x4ad40f[_0xdba0('0x22')]=[];_0x4ad40f[_0xdba0('0x21')][_0xdba0('0x23')](',')['forEach'](function(_0x4891e0){_0x4ad40f[_0xdba0('0x22')][_0xdba0('0x24')](_0x3e8c41[_0x4891e0]);});}delete _0x4ad40f[_0xdba0('0x21')];}catch(_0x1c99d4){_0x331a07(_0x1c99d4);}_0x2541a6(_0x4ad40f);});}function getLastMessageText(_0x502849){return new BPromise(function(_0x5544c3,_0x189373){return db['MailMessage'][_0xdba0('0x25')]({'where':{'$and':[{'MailInteractionId':_0x502849['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':'out'},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0xdba0('0x26')],'order':_0xdba0('0x27'),'raw':!![]})['then'](function(_0xafb45d){if(_0xafb45d&&_0xafb45d[_0xdba0('0x26')]){_0x502849[_0xdba0('0x28')]=_[_0xdba0('0x29')](_0xafb45d[_0xdba0('0x26')]);}_0x5544c3(_0x502849);})[_0xdba0('0x2a')](function(_0x2665bc){_0x189373(_0x2665bc);});});}function updateMailInteraction(_0x5ef82d,_0x572577,_0x467460,_0x308463){return new BPromise(function(_0xa3c59e,_0x45c743){return getInteractionUsers(_0x5ef82d,_0x467460)[_0xdba0('0x1a')](function(_0x54636b){return getInteractionTags(_0x54636b,_0x572577);})['then'](function(_0x34d450){return getStateInteraction(_0x34d450);})[_0xdba0('0x1a')](function(_0x5eacaf){if(_0x308463){_0xa3c59e(getLastMessageText(_0x5eacaf));}else{_0xa3c59e(_0x5eacaf);}})[_0xdba0('0x2a')](function(_0x4b7734){_0x45c743(_0x4b7734);});});}function getStateInteraction(_0x266ff2){return new BPromise(function(_0x9a2340){_0x266ff2[_0xdba0('0x2b')]=0x0;_0x266ff2[_0xdba0('0x2c')]=0x0;_0x266ff2[_0xdba0('0x2d')]=0x0;_0x266ff2[_0xdba0('0x2e')]=0x0;_0x266ff2[_0xdba0('0x2f')]=0x0;if(!_0x266ff2['closed']&&!_0x266ff2[_0xdba0('0x30')]){_0x266ff2['waiting']+=0x1;}if(!_0x266ff2['closed']&&_0x266ff2[_0xdba0('0x30')]){_0x266ff2[_0xdba0('0x2c')]+=0x1;if(_0x266ff2['waiting']){_0x266ff2[_0xdba0('0x2b')]-=0x1;}}if(_0x266ff2[_0xdba0('0x31')]&&_0x266ff2['UserId']){_0x266ff2['answered']+=0x1;if(_0x266ff2['talking']){_0x266ff2['talking']-=0x1;}}if(_0x266ff2[_0xdba0('0x31')]&&!_0x266ff2['UserId']){_0x266ff2['unmanaged']+=0x1;if(_0x266ff2[_0xdba0('0x2b')]){_0x266ff2['waiting']-=0x1;}}_0x266ff2[_0xdba0('0x2f')]+=0x1;_0x9a2340(_0x266ff2);});}exports[_0xdba0('0x32')]=function(_0x4121ac,_0xac0d82){var _0x3c4f82={},_0x2bc78e={},_0x1c5cdf={'count':0x0,'rows':[]};var _0x111d5f=_[_0xdba0('0x33')](db[_0xdba0('0x34')][_0xdba0('0x35')],function(_0x10c940){return{'name':_0x10c940['fieldName'],'type':_0x10c940[_0xdba0('0x36')][_0xdba0('0x37')]};});_0x2bc78e['model']=_[_0xdba0('0x33')](_0x111d5f,_0xdba0('0x1d'));_0x2bc78e[_0xdba0('0x38')]=_[_0xdba0('0x39')](_0x4121ac[_0xdba0('0x38')]);_0x2bc78e[_0xdba0('0x3a')]=_[_0xdba0('0x3b')](_0x2bc78e[_0xdba0('0x3c')],_0x2bc78e[_0xdba0('0x38')]);_0x3c4f82[_0xdba0('0x3d')]=_[_0xdba0('0x3b')](_0x2bc78e[_0xdba0('0x3c')],qs[_0xdba0('0x3e')](_0x4121ac['query'][_0xdba0('0x3e')]));_0x3c4f82['attributes']=_0x3c4f82[_0xdba0('0x3d')][_0xdba0('0x3f')]?_0x3c4f82['attributes']:_0x2bc78e['model'];if(!_0x4121ac['query']['hasOwnProperty'](_0xdba0('0x40'))){_0x3c4f82[_0xdba0('0x17')]=qs['limit'](_0x4121ac['query'][_0xdba0('0x17')]);_0x3c4f82[_0xdba0('0x14')]=qs[_0xdba0('0x14')](_0x4121ac[_0xdba0('0x38')][_0xdba0('0x14')]);}_0x3c4f82[_0xdba0('0x41')]=qs[_0xdba0('0x42')](_0x4121ac[_0xdba0('0x38')][_0xdba0('0x42')]);_0x3c4f82[_0xdba0('0x43')]=qs[_0xdba0('0x3a')](_[_0xdba0('0x44')](_0x4121ac[_0xdba0('0x38')],_0x2bc78e[_0xdba0('0x3a')]),_0x111d5f);var _0x23f035=[];var _0x57dd1e=squel[_0xdba0('0x45')]()[_0xdba0('0x46')]('id')[_0xdba0('0x46')]('name')[_0xdba0('0x46')](_0xdba0('0x47'))[_0xdba0('0x48')](_0xdba0('0x49'));var _0x494332=squel[_0xdba0('0x45')]()[_0xdba0('0x46')](_0xdba0('0x4a'))[_0xdba0('0x46')](_0xdba0('0x4b'))[_0xdba0('0x46')](_0xdba0('0x4c'))[_0xdba0('0x48')]('user_has_mail_interactions','ui')[_0xdba0('0x4d')](_0xdba0('0x4e'),'u',_0xdba0('0x4f'));var _0x3747a0=squel[_0xdba0('0x45')]()['from']('mail_interactions','i')[_0xdba0('0x4d')](_0xdba0('0x50'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xdba0('0x4d')](_0xdba0('0x4e'),'o',_0xdba0('0x51'))[_0xdba0('0x4d')]('mail_accounts','a',_0xdba0('0x52'))[_0xdba0('0x4d')](_0xdba0('0x53'),'me',_0xdba0('0x54'))['left_join']('mail_interaction_has_tags','it',_0xdba0('0x55'))['left_join'](_0xdba0('0x49'),'t',_0xdba0('0x56'));var _0x5f0df7=squel['expr']();var _0x1132da=[];var _0x25adee=squel[_0xdba0('0x57')]();var _0x4df8ce;if(_0x4121ac['query'][_0xdba0('0x58')]){_0x4df8ce=as['parseSearch'](_0x4121ac[_0xdba0('0x38')][_0xdba0('0x58')]);var _0x1f318a=_0x4df8ce[_0xdba0('0x59')];for(var _0x1a5fda=0x0;_0x1a5fda<_0x4df8ce[_0xdba0('0x5a')]['length'];_0x1a5fda++){var _0x2808ec=_0x4df8ce['conditions'][_0x1a5fda];var _0x5693fd='i';var _0xafe6a=_['find'](_0x111d5f,['name',_0x2808ec[_0xdba0('0x46')]]);if(!_0xafe6a){switch(_0x2808ec[_0xdba0('0x46')]){case _0xdba0('0x5b'):if(_0x2808ec[_0xdba0('0x5c')]==0x1){_0x3747a0[_0xdba0('0x5d')]('`'+_0x2808ec['field']+_0xdba0('0x5e'));}else{_0x3747a0['having']('`'+_0x2808ec[_0xdba0('0x46')]+_0xdba0('0x5f'));}break;case _0xdba0('0x60'):if(_0x2808ec[_0xdba0('0x61')]===_0xdba0('0x62')){if(_0x2808ec[_0xdba0('0x5c')][_0xdba0('0x23')]('\x20')[_0xdba0('0x3f')]>0x1){_0x5f0df7[_0x1f318a](_0xdba0('0x63'),qs[_0xdba0('0x64')](_0x2808ec[_0xdba0('0x5c')]),null);}else{var _0x335e38='%'+_0x2808ec[_0xdba0('0x5c')]+'%';_0x5f0df7[_0x1f318a](_0xdba0('0x65'),_0x335e38,_0x335e38,_0x335e38);}}else{_0xafe6a=_[_0xdba0('0x66')](_0x111d5f,[_0xdba0('0x1d'),_0xdba0('0x67')]);_0x2808ec['field']=_0xdba0('0x67');_0x1443ae=as[_0xdba0('0x68')](_0x5693fd,_0xafe6a[_0xdba0('0x36')],_0x2808ec);_0x5f0df7[_0x1f318a](_0x1443ae[_0xdba0('0x69')],_0x1443ae[_0xdba0('0x5c')][_0xdba0('0x6a')],_0x1443ae[_0xdba0('0x5c')]['end']);}break;case'Tag':var _0x319791=_0x2808ec['value'][_0xdba0('0x23')](',')[_0xdba0('0x33')](function(_0x4df64a){return Number(_0x4df64a);});_0x319791[_0xdba0('0x6b')](function(_0x4af2f2){_0x25adee['or'](_0xdba0('0x6c'),'%,'+_0x4af2f2+',%');});_0x1132da=_[_0xdba0('0x6d')](_0x1132da,_0x319791);break;case'User':if(_0x2808ec[_0xdba0('0x61')]==='$substring'){_0x5f0df7[_0x1f318a]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x2808ec[_0xdba0('0x5c')]+'%',null);}else{_0xafe6a=_[_0xdba0('0x66')](_0x111d5f,[_0xdba0('0x1d'),'UserId']);_0x2808ec[_0xdba0('0x46')]=_0xdba0('0x30');_0x1443ae=as[_0xdba0('0x68')](_0x5693fd,_0xafe6a[_0xdba0('0x36')],_0x2808ec);_0x5f0df7[_0x1f318a](_0x1443ae[_0xdba0('0x69')],_0x1443ae[_0xdba0('0x5c')]['start'],_0x1443ae[_0xdba0('0x5c')][_0xdba0('0x12')]);}break;case'plainBody':_0x1443ae=as['buildExpression']('me',null,_0x2808ec);_0x5f0df7[_0x1f318a](_0x1443ae[_0xdba0('0x69')],_0x1443ae[_0xdba0('0x5c')]['start'],_0x1443ae['value']['end']);break;}}else{var _0x1443ae=as[_0xdba0('0x68')](_0x5693fd,_0xafe6a[_0xdba0('0x36')],_0x2808ec);_0x5f0df7[_0x1f318a](_0x1443ae[_0xdba0('0x69')],_0x1443ae[_0xdba0('0x5c')][_0xdba0('0x6a')],_0x1443ae[_0xdba0('0x5c')]['end']);}}}else{var _0x312222=_(_0x4121ac[_0xdba0('0x38')])['keys']()[_0xdba0('0x33')](function(_0x11a8e6){return _[_0xdba0('0x6e')](_0x111d5f,[_0xdba0('0x1d'),_0x11a8e6])?_0x11a8e6:undefined;})[_0xdba0('0x6f')]()['value']();if(!_['isEmpty'](_0x312222)){_0x312222['forEach'](function(_0x373ca0){if(_0x373ca0==='MailAccountId'){_0x3747a0[_0xdba0('0x43')](_0xdba0('0x70'),[][_0xdba0('0x71')](_0x4121ac['query'][_0x373ca0]));}else if(_0x373ca0==='createdAt'){var _0x22ede4=JSON[_0xdba0('0x72')](_0x4121ac[_0xdba0('0x38')][_0x373ca0])['$gte'];var _0x3f3a04=JSON[_0xdba0('0x72')](_0x4121ac[_0xdba0('0x38')][_0x373ca0])[_0xdba0('0x73')];_0x3747a0[_0xdba0('0x43')](_0xdba0('0x74'),_0x22ede4,_0x3f3a04);}else{if(_0x4121ac[_0xdba0('0x38')][_0x373ca0]===_0xdba0('0x75')){_0x3747a0[_0xdba0('0x43')]('i.'+_0x373ca0+'\x20IS\x20NULL');}else{_0x3747a0[_0xdba0('0x43')]('i.'+_0x373ca0+_0xdba0('0x76'),_0x4121ac[_0xdba0('0x38')][_0x373ca0]);}}});}if(_0x4121ac[_0xdba0('0x38')][_0xdba0('0x77')]){if(_0x4121ac[_0xdba0('0x38')]['read']==0x1){_0x3747a0['having'](_0xdba0('0x78'));}else{_0x3747a0[_0xdba0('0x5d')](_0xdba0('0x79'));}}if(_0x4121ac[_0xdba0('0x38')][_0xdba0('0x7a')]){_0x1132da=_[_0xdba0('0x7b')](_0x4121ac[_0xdba0('0x38')][_0xdba0('0x7a')])?_0x4121ac[_0xdba0('0x38')][_0xdba0('0x7a')]:new Array(_0x4121ac['query'][_0xdba0('0x7a')]);_0x1132da['forEach'](function(_0x3e4b84){_0x25adee['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x3e4b84+',%');});}if(_0x4121ac[_0xdba0('0x38')][_0xdba0('0x7c')]){var _0x427e02=_0x4121ac['query']['filter'][_0xdba0('0x7d')]('\x5c','\x5c\x5c')[_0xdba0('0x7d')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x427e02)){_0x5f0df7['or'](_0xdba0('0x7e'),_0x427e02+'%');}else if(qs[_0xdba0('0x7f')](_0x427e02)){_0x5f0df7['or'](_0xdba0('0x80'),_0x427e02+'%');}else{_0x5f0df7['or'](_0xdba0('0x81'),qs['getFullTextValue'](_0x427e02))['or'](_0xdba0('0x82'),qs['getFullTextValue'](_0x427e02));}}}_0x3747a0['where'](_0x5f0df7);_0x3747a0[_0xdba0('0x83')]('i.id');var _0x27b78d={'type':db[_0xdba0('0x84')]['QueryTypes'][_0xdba0('0x85')],'raw':!![]};var _0x45cb21=_0x3747a0[_0xdba0('0x86')]();_0x45cb21[_0xdba0('0x46')]('i.id');_0x45cb21['field'](_0xdba0('0x87'),_0xdba0('0x5b'));if(_0x3c4f82[_0xdba0('0x41')]){_0x3c4f82['order']['forEach'](function(_0x2cf566){var _0x1d7e14=_0x2cf566[0x0]===_0xdba0('0x88')?_0x2cf566[0x0]:'i.'+_0x2cf566[0x0];_0x3747a0[_0xdba0('0x41')](_0x1d7e14,_0x2cf566[0x1]===_0xdba0('0x89')?![]:!![]);});}if(!_[_0xdba0('0x8a')](_0x1132da)){_0x3747a0[_0xdba0('0x5d')](_0x25adee);_0x45cb21[_0xdba0('0x43')](_0xdba0('0x8b'),_0x1132da);}BPromise[_0xdba0('0x8c')]()[_0xdba0('0x1a')](function(){if(!_0x4df8ce){if(_0x4121ac[_0xdba0('0x38')][_0xdba0('0x8d')])return;_0x45cb21[_0xdba0('0x43')](_0xdba0('0x8e'));_0x3747a0[_0xdba0('0x43')](_0xdba0('0x8e'));return;}if(_0x4121ac[_0xdba0('0x8f')][_0xdba0('0x90')]!==_0xdba0('0x91'))return;return _0x4121ac[_0xdba0('0x8f')][_0xdba0('0x92')]({'attributes':['id'],'raw':!![]})['then'](function(_0x48c9d2){if(_[_0xdba0('0x8a')](_0x48c9d2)){_0x45cb21[_0xdba0('0x43')](_0xdba0('0x93'));_0x3747a0['where'](_0xdba0('0x93'));}else{_0x45cb21[_0xdba0('0x43')](_0xdba0('0x70'),_[_0xdba0('0x33')](_0x48c9d2,'id'));_0x3747a0[_0xdba0('0x43')]('i.MailAccountId\x20IN\x20?',_[_0xdba0('0x33')](_0x48c9d2,'id'));}});})['then'](function(){if(_0x4121ac[_0xdba0('0x8f')]['role']===_0xdba0('0x91')&&!_0x4df8ce&&!_0x4121ac[_0xdba0('0x38')]['MailAccountId'])return[];return db['sequelize'][_0xdba0('0x38')](_0x45cb21[_0xdba0('0x94')](),_0x27b78d);})[_0xdba0('0x1a')](function(_0x13a070){_0x1c5cdf[_0xdba0('0x16')]=_0x13a070[_0xdba0('0x3f')];if(_0x1c5cdf[_0xdba0('0x16')]===0x0)return[];return db[_0xdba0('0x95')][_0xdba0('0x38')](_0x57dd1e[_0xdba0('0x94')](),_0x27b78d)[_0xdba0('0x1a')](function(_0x24c83a){_0x23f035=_['keyBy'](_0x24c83a,'id');_0x27b78d=_['merge'](_0x27b78d,{'model':db[_0xdba0('0x34')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4121ac[_0xdba0('0x38')][_0xdba0('0x3e')]){_0x3c4f82[_0xdba0('0x3d')]['forEach'](function(_0x27fbc1){_0x3747a0[_0xdba0('0x46')]('i.'+_0x27fbc1);});}else{_0x3747a0[_0xdba0('0x46')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xdba0('0x5b'));_0x3747a0[_0xdba0('0x46')](_0xdba0('0x96'),_0xdba0('0x97'));_0x3747a0[_0xdba0('0x46')](_0xdba0('0x98'),'Account.mandatoryDisposition');_0x3747a0[_0xdba0('0x46')](_0xdba0('0x99'),_0xdba0('0x88'));_0x3747a0[_0xdba0('0x46')](_0xdba0('0x9a'));_0x3747a0[_0xdba0('0x46')](_0xdba0('0x9b'));_0x3747a0[_0xdba0('0x46')](_0xdba0('0x9c'));_0x3747a0[_0xdba0('0x46')](_0xdba0('0x9d'));_0x3747a0[_0xdba0('0x46')]('i.closedAt');_0x3747a0[_0xdba0('0x46')](_0xdba0('0x9e'));_0x3747a0[_0xdba0('0x46')](_0xdba0('0x9f'));_0x3747a0[_0xdba0('0x46')](_0xdba0('0xa0'));_0x3747a0[_0xdba0('0x46')](_0xdba0('0xa1'));_0x3747a0[_0xdba0('0x46')]('i.disposition');_0x3747a0[_0xdba0('0x46')](_0xdba0('0xa2'));_0x3747a0[_0xdba0('0x46')](_0xdba0('0xa3'));_0x3747a0[_0xdba0('0x46')](_0xdba0('0xa4'));_0x3747a0[_0xdba0('0x46')](_0xdba0('0xa5'));_0x3747a0['field'](_0xdba0('0xa6'));_0x3747a0[_0xdba0('0x46')]('i.MailAccountId');_0x3747a0['field'](_0xdba0('0xa7'));_0x3747a0[_0xdba0('0x46')](_0xdba0('0xa8'),_0xdba0('0xa9'));_0x3747a0[_0xdba0('0x46')]('c.lastName',_0xdba0('0xaa'));_0x3747a0[_0xdba0('0x46')](_0xdba0('0xab'),_0xdba0('0xac'));_0x3747a0['field']('c.phone',_0xdba0('0xad'));_0x3747a0['field'](_0xdba0('0xae'),_0xdba0('0xaf'));_0x3747a0[_0xdba0('0x46')](_0xdba0('0xb0'),_0xdba0('0xb1'));_0x3747a0[_0xdba0('0x46')](_0xdba0('0xb2'),_0xdba0('0xb3'));_0x3747a0[_0xdba0('0x46')]('o.internal',_0xdba0('0xb4'));_0x3747a0['field'](_0xdba0('0xb5'),_0xdba0('0x21'));}if(_0x3c4f82[_0xdba0('0x17')])_0x3747a0[_0xdba0('0x17')](_0x3c4f82[_0xdba0('0x17')]);if(_0x3c4f82[_0xdba0('0x14')])_0x3747a0[_0xdba0('0x14')](_0x3c4f82[_0xdba0('0x14')]);return db[_0xdba0('0x95')]['query'](_0x3747a0[_0xdba0('0x94')](),_0x27b78d);})['then'](function(_0xde2ee9){if(_0xde2ee9[_0xdba0('0x3f')]>0x0)_0x494332[_0xdba0('0x43')](_0xdba0('0xb6'),_['map'](_0xde2ee9,'id'));return db[_0xdba0('0x95')][_0xdba0('0x38')](_0x494332[_0xdba0('0x94')](),_0x27b78d)[_0xdba0('0x1a')](function(_0x5b0be9){var _0x480273=_[_0xdba0('0xb7')](_0x5b0be9,_0xdba0('0xb8'));var _0x2d255b=[];return db[_0xdba0('0xb9')][_0xdba0('0x25')]({'attributes':[_0xdba0('0xba')],'raw':!![]})[_0xdba0('0x1a')](function(_0x43a4f8){var _0x14d988=_0x43a4f8['enableEmailPreview'];_0xde2ee9[_0xdba0('0x6b')](function(_0x4832f3){_0x2d255b[_0xdba0('0x24')](updateMailInteraction(_0x4832f3,_0x23f035,_0x480273,_0x14d988));});return BPromise[_0xdba0('0xbb')](_0x2d255b);});});});})[_0xdba0('0x1a')](function(_0x4203c6){_0x1c5cdf[_0xdba0('0xbc')]=_0x4203c6;return _0x1c5cdf;})[_0xdba0('0x1a')](respondWithFilteredResult(_0xac0d82,_0x3c4f82))[_0xdba0('0x2a')](handleError(_0xac0d82,null));};exports[_0xdba0('0xbd')]=function(_0x502ebb,_0x28a582){var _0x439d6d={'raw':![],'where':{'id':_0x502ebb[_0xdba0('0xbe')]['id']}},_0x8f48a1={};_0x8f48a1[_0xdba0('0x3c')]=_[_0xdba0('0x39')](db[_0xdba0('0x34')][_0xdba0('0x35')]);_0x8f48a1[_0xdba0('0x38')]=_['keys'](_0x502ebb[_0xdba0('0x38')]);_0x8f48a1[_0xdba0('0x3a')]=_[_0xdba0('0x3b')](_0x8f48a1[_0xdba0('0x3c')],_0x8f48a1['query']);_0x439d6d[_0xdba0('0x3d')]=_['intersection'](_0x8f48a1[_0xdba0('0x3c')],qs[_0xdba0('0x3e')](_0x502ebb['query'][_0xdba0('0x3e')]));_0x439d6d['attributes']=_0x439d6d[_0xdba0('0x3d')]['length']?_0x439d6d[_0xdba0('0x3d')]:_0x8f48a1[_0xdba0('0x3c')];if(_0x502ebb['query']['includeAll']){_0x439d6d['include']=[{'all':!![]}];}_0x439d6d=_[_0xdba0('0xbf')]({},_0x439d6d,_0x502ebb[_0xdba0('0xc0')]);return db[_0xdba0('0x34')][_0xdba0('0x66')](_0x439d6d)[_0xdba0('0x1a')](handleEntityNotFound(_0x28a582,null))[_0xdba0('0x1a')](respondWithResult(_0x28a582,null))['catch'](handleError(_0x28a582,null));};exports[_0xdba0('0xc1')]=function(_0x27f317,_0x5aba31){return db[_0xdba0('0x34')][_0xdba0('0xc1')](_0x27f317[_0xdba0('0xc2')],{})['then'](respondWithResult(_0x5aba31,0xc9))[_0xdba0('0x2a')](handleError(_0x5aba31,null));};exports['update']=function(_0x450a37,_0x223fb2){if(_0x450a37[_0xdba0('0xc2')]['id']){delete _0x450a37[_0xdba0('0xc2')]['id'];}return db[_0xdba0('0x34')][_0xdba0('0x66')]({'where':{'id':_0x450a37[_0xdba0('0xbe')]['id']}})['then'](handleEntityNotFound(_0x223fb2,null))['then'](saveUpdates(_0x450a37[_0xdba0('0xc2')],null))[_0xdba0('0x1a')](respondWithResult(_0x223fb2,null))[_0xdba0('0x2a')](handleError(_0x223fb2,null));};exports['destroy']=function(_0x15dba0,_0x52e543){return db[_0xdba0('0x34')]['find']({'where':{'id':_0x15dba0[_0xdba0('0xbe')]['id']}})[_0xdba0('0x1a')](handleEntityNotFound(_0x52e543,null))['then'](removeEntity(_0x52e543,null))[_0xdba0('0x2a')](handleError(_0x52e543,null));};exports['describe']=function(_0x52671b,_0x573ca1){return db[_0xdba0('0x34')]['describe']()[_0xdba0('0x1a')](respondWithResult(_0x573ca1,null))['catch'](handleError(_0x573ca1,null));};exports[_0xdba0('0xc3')]=function(_0x47f991,_0x2b6fa5){return db[_0xdba0('0xc4')][_0xdba0('0x66')]({'where':{'id':_0x47f991[_0xdba0('0xbe')]['id']}})[_0xdba0('0x1a')](handleEntityNotFound(_0x2b6fa5,null))['then'](function(_0x23e71d){if(_0x23e71d){return _0x23e71d['addMessage'](_0x47f991['body']['ids'],_[_0xdba0('0xc5')](_0x47f991[_0xdba0('0xc2')],[_0xdba0('0xc6'),'id'])||{});}})[_0xdba0('0x1a')](respondWithResult(_0x2b6fa5,null))[_0xdba0('0x2a')](handleError(_0x2b6fa5,null));};exports['getMessages']=function(_0x3f4e60,_0x30adea){var _0x3bd96f={'raw':![],'where':{}};var _0x3b94ee={};var _0x51b5dc={'count':0x0,'rows':[]};return db[_0xdba0('0x34')][_0xdba0('0x25')]({'where':{'id':_0x3f4e60[_0xdba0('0xbe')]['id']}})[_0xdba0('0x1a')](handleEntityNotFound(_0x30adea,null))['then'](function(_0x3f8de3){if(_0x3f8de3){_0x3b94ee['model']=_[_0xdba0('0x39')](db['MailMessage']['rawAttributes']);_0x3b94ee['query']=_[_0xdba0('0x39')](_0x3f4e60['query']);_0x3b94ee[_0xdba0('0x3a')]=_[_0xdba0('0x3b')](_0x3b94ee[_0xdba0('0x3c')],_0x3b94ee[_0xdba0('0x38')]);_0x3bd96f[_0xdba0('0x3d')]=_['intersection'](_0x3b94ee[_0xdba0('0x3c')],qs['fields'](_0x3f4e60[_0xdba0('0x38')]['fields']));_0x3bd96f[_0xdba0('0x3d')]=_0x3bd96f[_0xdba0('0x3d')][_0xdba0('0x3f')]?_0x3bd96f[_0xdba0('0x3d')]:_0x3b94ee[_0xdba0('0x3c')];if(!_0x3f4e60[_0xdba0('0x38')]['hasOwnProperty'](_0xdba0('0x40'))){_0x3bd96f['limit']=qs[_0xdba0('0x17')](_0x3f4e60['query'][_0xdba0('0x17')]);_0x3bd96f[_0xdba0('0x14')]=qs[_0xdba0('0x14')](_0x3f4e60[_0xdba0('0x38')][_0xdba0('0x14')]);}_0x3bd96f['order']=qs[_0xdba0('0x42')](_0x3f4e60[_0xdba0('0x38')][_0xdba0('0x42')]);_0x3bd96f['where']=qs[_0xdba0('0x3a')](_[_0xdba0('0x44')](_0x3f4e60[_0xdba0('0x38')],_0x3b94ee[_0xdba0('0x3a')]));_0x3bd96f[_0xdba0('0x43')][_0xdba0('0xb8')]=_0x3f8de3['id'];if(_0x3f4e60[_0xdba0('0x38')][_0xdba0('0x7c')]){_0x3bd96f[_0xdba0('0x43')]=_[_0xdba0('0xbf')](_0x3bd96f[_0xdba0('0x43')],{'$or':_[_0xdba0('0x33')](_0x3bd96f[_0xdba0('0x3d')],function(_0x4bf7d5){var _0x5b439b={};_0x5b439b[_0x4bf7d5]={'$like':'%'+_0x3f4e60['query'][_0xdba0('0x7c')]+'%'};return _0x5b439b;})});}if(_0x3f4e60['query'][_0xdba0('0xc7')]){var _0x417e19=_0x3f4e60[_0xdba0('0x38')][_0xdba0('0xc7')][_0xdba0('0x23')](',');var _0x5198a7={};_0x5198a7[_0x417e19[0x0]]={'$gte':moment(_0x417e19[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x3bd96f[_0xdba0('0x43')]=_[_0xdba0('0xbf')](_0x3bd96f[_0xdba0('0x43')],_0x5198a7);}_0x3bd96f=_[_0xdba0('0xbf')]({},_0x3bd96f,_0x3f4e60[_0xdba0('0xc0')]);return db['MailMessage']['count']({'where':_0x3bd96f[_0xdba0('0x43')]})[_0xdba0('0x1a')](function(_0x1d1880){_0x51b5dc[_0xdba0('0x16')]=_0x1d1880;if(_0x3f4e60[_0xdba0('0x38')]['includeAll']){_0x3bd96f['include']=[{'all':!![]}];}return db[_0xdba0('0xc4')][_0xdba0('0xc8')](_0x3bd96f);})[_0xdba0('0x1a')](function(_0xfaa2e6){if(_0x3f4e60[_0xdba0('0x38')]['inlineCss']===_0xdba0('0xc9')){for(var _0x2a8885=0x0;_0x2a8885<_0xfaa2e6[_0xdba0('0x3f')];_0x2a8885++){_0xfaa2e6[_0x2a8885]['body']=juice(_0xfaa2e6[_0x2a8885][_0xdba0('0xc2')]);}}_0x51b5dc[_0xdba0('0xbc')]=_0xfaa2e6;return _0x51b5dc;});}})[_0xdba0('0x1a')](respondWithFilteredResult(_0x30adea,_0x3bd96f))[_0xdba0('0x2a')](handleError(_0x30adea,null));};exports[_0xdba0('0xca')]=function(_0x32d590,_0x1f377c){return db['MailInteraction'][_0xdba0('0x66')]({'where':{'id':_0x32d590[_0xdba0('0xbe')]['id']}})[_0xdba0('0x1a')](handleEntityNotFound(_0x1f377c,null))[_0xdba0('0x1a')](function(_0x4023b6){if(_0x4023b6){return _0x4023b6['setTags'](_0x32d590[_0xdba0('0xc2')][_0xdba0('0xc6')],_[_0xdba0('0xc5')](_0x32d590['body'],[_0xdba0('0xc6'),'id'])||{})[_0xdba0('0xcb')](function(){return db[_0xdba0('0xcc')][_0xdba0('0xc8')]({'attributes':['id',_0xdba0('0x1d'),_0xdba0('0x47')],'where':{'id':_0x32d590['body'][_0xdba0('0xc6')]}});})['then'](function(_0x4a41e0){socket[_0xdba0('0xcd')](_0xdba0('0xce'),{'id':Number(_0x32d590[_0xdba0('0xbe')]['id']),'tags':_0x4a41e0||[]});return{'id':Number(_0x32d590[_0xdba0('0xbe')]['id']),'tags':_0x4a41e0||[]};});}})[_0xdba0('0x1a')](respondWithResult(_0x1f377c,null))[_0xdba0('0x2a')](handleError(_0x1f377c,null));};exports[_0xdba0('0xcf')]=function(_0x24a743,_0x3516a9){return db['MailInteraction'][_0xdba0('0x66')]({'where':{'id':_0x24a743[_0xdba0('0xbe')]['id']}})[_0xdba0('0x1a')](handleEntityNotFound(_0x3516a9,null))[_0xdba0('0x1a')](function(_0x21887e){if(_0x21887e){return _0x21887e['removeTags'](_0x24a743[_0xdba0('0x38')][_0xdba0('0xc6')]);}})[_0xdba0('0x1a')](respondWithStatusCode(_0x3516a9,null))[_0xdba0('0x2a')](handleError(_0x3516a9,null));};exports[_0xdba0('0xd0')]=function(_0x92bc42,_0x2fac9f){var _0x2e9c77=moment()[_0xdba0('0xd1')]()['toString']();var _0x531f25=path[_0xdba0('0xd2')](config[_0xdba0('0xd3')],_0xdba0('0xd4'),_0xdba0('0xd5'),_0xdba0('0xd6'));var _0x232f3f=path[_0xdba0('0xd2')](config[_0xdba0('0xd3')],'server',_0xdba0('0xd5'),_0xdba0('0xd7'));var _0x21d9e5=path[_0xdba0('0xd2')](_0x531f25,_0x2e9c77);var _0x27fe94=util[_0xdba0('0xd8')](_0xdba0('0xd9'),_0x92bc42[_0xdba0('0xbe')]['id'],_0x2e9c77);var _0x53ece3=path[_0xdba0('0xd2')](_0x531f25,_0x27fe94);var _0x17cde4=[];if(_0x92bc42[_0xdba0('0x38')][_0xdba0('0xd7')]){_0x17cde4[_0xdba0('0x24')]({'model':db[_0xdba0('0xda')],'as':_0xdba0('0xdb'),'raw':!![]});}var _0x392b4b=[{'model':db[_0xdba0('0xc4')],'as':_0xdba0('0xdc'),'attributes':['id',_0xdba0('0xc2'),_0xdba0('0x48'),'to','cc',_0xdba0('0xdd'),_0xdba0('0xde'),_0xdba0('0xdf')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x17cde4}];return db[_0xdba0('0x34')]['find']({'where':{'id':_0x92bc42['params']['id']},'include':_0x392b4b})[_0xdba0('0x1a')](handleEntityNotFound(_0x2fac9f,null))[_0xdba0('0x1a')](function(_0x4c1541){if(_0x4c1541&&_0x4c1541['Messages']){var _0x2297a8=_0x4c1541['get']({'plain':!![]});fs[_0xdba0('0xe0')](_0x21d9e5);return BPromise[_0xdba0('0xe1')](_0x2297a8['Messages'],function(_0x4031d5,_0x9eb349){var _0x26e96a={'from':_0x4031d5['from'],'to':_0x4031d5['to'],'subject':_0x4031d5['subject'],'html':htmlEntities[_0xdba0('0xe2')](_0x4031d5['body']),'headers':{'Date':moment(_0x4031d5[_0xdba0('0xdf')])[_0xdba0('0xd8')](_0xdba0('0xe3'))},'attachments':[]};if(_0x4031d5['cc']){_0x26e96a[_0xdba0('0xe4')]['Cc']=_0x4031d5['cc'];}if(_0x4031d5[_0xdba0('0xdd')]){_0x26e96a[_0xdba0('0xe4')][_0xdba0('0xe5')]=_0x4031d5[_0xdba0('0xdd')];}return new BPromise(function(_0x22601f,_0x4119bd){if(_0x4031d5[_0xdba0('0xdb')]){for(var _0x2dd7cf=0x0;_0x2dd7cf<_0x4031d5['Attachments'][_0xdba0('0x3f')];_0x2dd7cf++){var _0x3953eb=_0x4031d5[_0xdba0('0xdb')][_0x2dd7cf];var _0x480454=path['join'](_0x232f3f,_0x3953eb[_0xdba0('0xe6')]);if(fs[_0xdba0('0xe7')](_0x480454)){_0x26e96a['attachments'][_0xdba0('0x24')]({'name':_0x3953eb[_0xdba0('0x1d')],'contentType':_0x3953eb['type'],'data':fs['readFileSync'](_0x480454)});}}}emlformat['build'](_0x26e96a,function(_0x1b8d2e,_0x380439){if(_0x1b8d2e)return _0x4119bd(_0x1b8d2e);fs[_0xdba0('0xe8')](path[_0xdba0('0xd2')](_0x21d9e5,util[_0xdba0('0xd8')](_0xdba0('0xe9'),_0x9eb349)),_0x380439);return _0x22601f(_0x380439);});});})[_0xdba0('0x1a')](function(){return new BPromise(function(_0xba296,_0x59bff7){zipdir(_0x21d9e5,{'saveTo':_0x53ece3},function(_0x1f0044,_0x4d9b83){if(_0x1f0044)return _0x59bff7(_0x1f0044);return _0xba296(_0x4d9b83);});})[_0xdba0('0x1a')](function(){return new BPromise(function(_0x3871b1,_0x25d892){rimraf(_0x21d9e5,function(_0x4d2f67){if(_0x4d2f67)_0x25d892(_0x4d2f67);return _0x3871b1();});});})[_0xdba0('0x1a')](function(){return _0x2fac9f['download'](_0x53ece3,_0x27fe94,function(_0x540c77){if(!_0x540c77)fs[_0xdba0('0xea')](_0x53ece3);});});});}else{return _0x2fac9f['sendStatus'](0xc8);}})['catch'](handleError(_0x2fac9f,null));};
\ No newline at end of file
index 90ce097..2237fed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf533=['emit','hasOwnProperty','hook','exports','events','MailInteraction','../../mysqldb','setMaxListeners','save','remove','getUsers','then','setDataValue','map','findAll','unreadMessages'];(function(_0x24679e,_0x22d9d7){var _0x291f21=function(_0x329529){while(--_0x329529){_0x24679e['push'](_0x24679e['shift']());}};_0x291f21(++_0x22d9d7);}(_0xf533,0x144));var _0x3f53=function(_0x438578,_0xeccb24){_0x438578=_0x438578-0x0;var _0x55f90b=_0xf533[_0x438578];return _0x55f90b;};'use strict';var EventEmitter=require(_0x3f53('0x0'));var MailInteraction=require('../../mysqldb')['db'][_0x3f53('0x1')];var MailMessage=require(_0x3f53('0x2'))['db']['MailMessage'];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x3f53('0x3')](0x0);var events={'afterCreate':_0x3f53('0x4'),'afterUpdate':'update','afterDestroy':_0x3f53('0x5')};function emitEvent(_0x445bef){return function(_0x41bbe1,_0x5d52ca,_0x2ae5f1){_0x41bbe1[_0x3f53('0x6')]({'attributes':['id'],'raw':!![]})[_0x3f53('0x7')](function(_0x1cb631){_0x41bbe1[_0x3f53('0x8')]('Users',_0x1cb631[_0x3f53('0x9')](function(_0x5a9d17){return{'id':_0x5a9d17['id']};}));return MailMessage[_0x3f53('0xa')]({'where':{'MailInteractionId':_0x41bbe1['id'],'direction':'in','read':![]},'raw':!![]});})[_0x3f53('0x7')](function(_0x2be773){_0x41bbe1[_0x3f53('0x8')](_0x3f53('0xb'),_0x2be773['length']);MailInteractionEvents[_0x3f53('0xc')](_0x445bef+':'+_0x41bbe1['id'],_0x41bbe1);MailInteractionEvents[_0x3f53('0xc')](_0x445bef,_0x41bbe1);_0x2ae5f1(null);})['catch'](_0x2ae5f1(null));};}for(var e in events){if(events[_0x3f53('0xd')](e)){var event=events[e];MailInteraction[_0x3f53('0xe')](e,emitEvent(event));}}module[_0x3f53('0xf')]=MailInteractionEvents;
\ No newline at end of file
+var _0x6d06=['MailMessage','setMaxListeners','save','remove','getUsers','then','Users','map','findAll','setDataValue','unreadMessages','length','emit','catch','hook','../../mysqldb'];(function(_0x489275,_0x24f665){var _0x40d4ab=function(_0x1d2e42){while(--_0x1d2e42){_0x489275['push'](_0x489275['shift']());}};_0x40d4ab(++_0x24f665);}(_0x6d06,0x13f));var _0x66d0=function(_0x2dd390,_0x1bc894){_0x2dd390=_0x2dd390-0x0;var _0x3afe47=_0x6d06[_0x2dd390];return _0x3afe47;};'use strict';var EventEmitter=require('events');var MailInteraction=require('../../mysqldb')['db']['MailInteraction'];var MailMessage=require(_0x66d0('0x0'))['db'][_0x66d0('0x1')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x66d0('0x2')](0x0);var events={'afterCreate':_0x66d0('0x3'),'afterUpdate':'update','afterDestroy':_0x66d0('0x4')};function emitEvent(_0x3c3229){return function(_0x3c9bad,_0x1c6314,_0xc8a6ef){_0x3c9bad[_0x66d0('0x5')]({'attributes':['id'],'raw':!![]})[_0x66d0('0x6')](function(_0x5408a1){_0x3c9bad['setDataValue'](_0x66d0('0x7'),_0x5408a1[_0x66d0('0x8')](function(_0x1306fd){return{'id':_0x1306fd['id']};}));return MailMessage[_0x66d0('0x9')]({'where':{'MailInteractionId':_0x3c9bad['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x203274){_0x3c9bad[_0x66d0('0xa')](_0x66d0('0xb'),_0x203274[_0x66d0('0xc')]);MailInteractionEvents[_0x66d0('0xd')](_0x3c3229+':'+_0x3c9bad['id'],_0x3c9bad);MailInteractionEvents['emit'](_0x3c3229,_0x3c9bad);_0xc8a6ef(null);})[_0x66d0('0xe')](_0xc8a6ef(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction[_0x66d0('0xf')](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
index 961d31b..c735790 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebb2=['get','MailMessage','catch','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','rimraf','../../config/environment','./mailInteraction.attributes','exports','define','MailInteraction','subject','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','models'];(function(_0x3213fb,_0x52d75a){var _0x49273c=function(_0x56fd37){while(--_0x56fd37){_0x3213fb['push'](_0x3213fb['shift']());}};_0x49273c(++_0x52d75a);}(_0xebb2,0x125));var _0x2ebb=function(_0x992d55,_0x366f6a){_0x992d55=_0x992d55-0x0;var _0x1b47c7=_0xebb2[_0x992d55];return _0x1b47c7;};'use strict';var _=require(_0x2ebb('0x0'));var util=require(_0x2ebb('0x1'));var logger=require('../../config/logger')(_0x2ebb('0x2'));var moment=require(_0x2ebb('0x3'));var BPromise=require(_0x2ebb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x2ebb('0x5'));var config=require(_0x2ebb('0x6'));var attributes=require(_0x2ebb('0x7'));module[_0x2ebb('0x8')]=function(_0x52d5f2,_0x1d7502){return _0x52d5f2[_0x2ebb('0x9')](_0x2ebb('0xa'),attributes,{'tableName':'mail_interactions','paranoid':![],'indexes':[{'name':'fti_mail_interactions','fields':[_0x2ebb('0xb'),'to'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4a31f3,_0xc051d0,_0x34c9a7){if(_0x4a31f3[_0x2ebb('0xc')]){_0x4a31f3[_0x2ebb('0xd')]=moment()[_0x2ebb('0xe')](_0x2ebb('0xf'));}if(_0x4a31f3[_0x2ebb('0x10')]){_0x4a31f3[_0x2ebb('0x11')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x34c9a7(null,_0xc051d0);},'beforeUpdate':function(_0x1013be,_0x1fa32c,_0x44482d){if(_0x1013be['changed'](_0x2ebb('0xc'))){_0x1013be[_0x2ebb('0xd')]=_0x1013be[_0x2ebb('0xc')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x1013be['changed'](_0x2ebb('0x10'))){_0x1013be['closedAt']=moment()[_0x2ebb('0xe')](_0x2ebb('0xf'));_0x1013be[_0x2ebb('0xc')]=null;_0x1013be['substatusAt']=null;}_0x44482d(null,_0x1013be);},'afterUpdate':function(_0x2b47aa,_0x6fc3b6,_0x240030){var _0x13dc03=_0x52d5f2[_0x2ebb('0x12')];var _0x440915=_0x2b47aa[_0x2ebb('0x13')]({'plain':!![]});if(_0x440915[_0x2ebb('0x10')]){return _0x13dc03[_0x2ebb('0x14')]['update']({'read':!![]},{'where':{'MailInteractionId':_0x440915['id']}})['then'](function(){_0x240030();})[_0x2ebb('0x15')](function(_0x54bf01){_0x240030(_0x54bf01);});}else{_0x240030();}}},'charset':_0x2ebb('0x16'),'collate':_0x2ebb('0x17')});};
\ No newline at end of file
+var _0xc802=['path','rimraf','../../config/environment','./mailInteraction.attributes','define','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatus','format','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','changed','substatusAt','models','then','catch','lodash','util','api','moment','bluebird','request-promise'];(function(_0x588dd2,_0x5c8152){var _0x4f208e=function(_0x12c652){while(--_0x12c652){_0x588dd2['push'](_0x588dd2['shift']());}};_0x4f208e(++_0x5c8152);}(_0xc802,0x1bc));var _0x2c80=function(_0x4ef85a,_0x2e4883){_0x4ef85a=_0x4ef85a-0x0;var _0x25e777=_0xc802[_0x4ef85a];return _0x25e777;};'use strict';var _=require(_0x2c80('0x0'));var util=require(_0x2c80('0x1'));var logger=require('../../config/logger')(_0x2c80('0x2'));var moment=require(_0x2c80('0x3'));var BPromise=require(_0x2c80('0x4'));var rp=require(_0x2c80('0x5'));var fs=require('fs');var path=require(_0x2c80('0x6'));var rimraf=require(_0x2c80('0x7'));var config=require(_0x2c80('0x8'));var attributes=require(_0x2c80('0x9'));module['exports']=function(_0x399b27,_0x383990){return _0x399b27[_0x2c80('0xa')]('MailInteraction',attributes,{'tableName':_0x2c80('0xb'),'paranoid':![],'indexes':[{'name':_0x2c80('0xc'),'fields':[_0x2c80('0xd'),'to'],'type':_0x2c80('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x1bac7b,_0x41c516,_0x4bde24){if(_0x1bac7b[_0x2c80('0xf')]){_0x1bac7b['substatusAt']=moment()[_0x2c80('0x10')](_0x2c80('0x11'));}if(_0x1bac7b[_0x2c80('0x12')]){_0x1bac7b[_0x2c80('0x13')]=moment()['format'](_0x2c80('0x11'));}_0x4bde24(null,_0x41c516);},'beforeUpdate':function(_0x461266,_0x5d385f,_0xdcc4b9){if(_0x461266[_0x2c80('0x14')](_0x2c80('0xf'))){_0x461266['substatusAt']=_0x461266['substatus']?moment()[_0x2c80('0x10')](_0x2c80('0x11')):null;}if(_0x461266[_0x2c80('0x14')](_0x2c80('0x12'))){_0x461266[_0x2c80('0x13')]=moment()['format'](_0x2c80('0x11'));_0x461266[_0x2c80('0xf')]=null;_0x461266[_0x2c80('0x15')]=null;}_0xdcc4b9(null,_0x461266);},'afterUpdate':function(_0x14141e,_0x23586a,_0xe0f8ec){var _0x3e43f2=_0x399b27[_0x2c80('0x16')];var _0x573d5f=_0x14141e['get']({'plain':!![]});if(_0x573d5f[_0x2c80('0x12')]){return _0x3e43f2['MailMessage']['update']({'read':!![]},{'where':{'MailInteractionId':_0x573d5f['id']}})[_0x2c80('0x17')](function(){_0xe0f8ec();})[_0x2c80('0x18')](function(_0x773b57){_0xe0f8ec(_0x773b57);});}else{_0xe0f8ec();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 4585881..2c0fcdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cfc=['request\x20sent','debug','stringify','error','code','MailInteraction,\x20%s,\x20%s','message','catch','UpdateMailInteraction','update','body','options','raw','where','attributes','AddTagsToMailInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','defaults','redis','localhost','socket.io-emitter','./mailInteraction.socket','register','request','then','info'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x9cfc,0x1b0));var _0xc9cf=function(_0x159d40,_0x72b6c9){_0x159d40=_0x159d40-0x0;var _0x14df43=_0x9cfc[_0x159d40];return _0x14df43;};'use strict';var _=require(_0xc9cf('0x0'));var util=require(_0xc9cf('0x1'));var moment=require(_0xc9cf('0x2'));var BPromise=require(_0xc9cf('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc9cf('0x4'));var db=require(_0xc9cf('0x5'))['db'];var utils=require(_0xc9cf('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xc9cf('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xc9cf('0x8')][_0xc9cf('0x9')]({'port':0x232a});config['redis']=_[_0xc9cf('0xa')](config[_0xc9cf('0xb')],{'host':_0xc9cf('0xc'),'port':0x18eb});var socket=require(_0xc9cf('0xd'))(new Redis(config['redis']));require(_0xc9cf('0xe'))[_0xc9cf('0xf')](socket);function respondWithRpcPromise(_0x489e6b,_0x2013d6,_0x33e334){return new BPromise(function(_0x2f5df3,_0x3c2187){return client[_0xc9cf('0x10')](_0x489e6b,_0x33e334)[_0xc9cf('0x11')](function(_0x2e2c1c){logger[_0xc9cf('0x12')]('MailInteraction,\x20%s,\x20%s',_0x2013d6,_0xc9cf('0x13'));logger[_0xc9cf('0x14')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x2013d6,_0xc9cf('0x13'),JSON[_0xc9cf('0x15')](_0x2e2c1c));if(_0x2e2c1c[_0xc9cf('0x16')]){if(_0x2e2c1c[_0xc9cf('0x16')][_0xc9cf('0x17')]===0x1f4){logger[_0xc9cf('0x16')](_0xc9cf('0x18'),_0x2013d6,_0x2e2c1c[_0xc9cf('0x16')][_0xc9cf('0x19')]);return _0x3c2187(_0x2e2c1c[_0xc9cf('0x16')][_0xc9cf('0x19')]);}logger[_0xc9cf('0x16')](_0xc9cf('0x18'),_0x2013d6,_0x2e2c1c[_0xc9cf('0x16')][_0xc9cf('0x19')]);return _0x2f5df3(_0x2e2c1c[_0xc9cf('0x16')]['message']);}else{logger[_0xc9cf('0x12')](_0xc9cf('0x18'),_0x2013d6,_0xc9cf('0x13'));_0x2f5df3(_0x2e2c1c['result'][_0xc9cf('0x19')]);}})[_0xc9cf('0x1a')](function(_0x49b24b){logger[_0xc9cf('0x16')](_0xc9cf('0x18'),_0x2013d6,_0x49b24b);_0x3c2187(_0x49b24b);});});}exports[_0xc9cf('0x1b')]=function(_0x19341c){var _0x1249a1=this;return new Promise(function(_0x452568,_0xbf7928){return db['MailInteraction'][_0xc9cf('0x1c')](_0x19341c[_0xc9cf('0x1d')],{'raw':_0x19341c['options']?_0x19341c[_0xc9cf('0x1e')][_0xc9cf('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x19341c[_0xc9cf('0x1e')]?_0x19341c[_0xc9cf('0x1e')][_0xc9cf('0x20')]||null:null,'attributes':_0x19341c[_0xc9cf('0x1e')]?_0x19341c['options'][_0xc9cf('0x21')]||null:null,'limit':_0x19341c[_0xc9cf('0x1e')]?_0x19341c[_0xc9cf('0x1e')]['limit']||null:null})['then'](function(_0x47dc97){logger['info'](_0xc9cf('0x1b'),_0x19341c);logger[_0xc9cf('0x14')](_0xc9cf('0x1b'),_0x19341c,JSON['stringify'](_0x47dc97));_0x452568(_0x47dc97);})['catch'](function(_0xcb4c20){logger[_0xc9cf('0x16')](_0xc9cf('0x1b'),_0xcb4c20['message'],_0x19341c);_0xbf7928(_0x1249a1['error'](0x1f4,_0xcb4c20[_0xc9cf('0x19')]));});});};exports[_0xc9cf('0x22')]=function(_0x1db160){return new Promise(function(_0x1e53be,_0x9ea0d9){return db['MailInteraction'][_0xc9cf('0x23')]({'where':_0x1db160[_0xc9cf('0x1e')]?_0x1db160[_0xc9cf('0x1e')][_0xc9cf('0x20')]||null:null})['then'](function(_0x14b17e){if(_0x14b17e){return _0x14b17e[_0xc9cf('0x24')](_0x1db160['body'][_0xc9cf('0x25')],_[_0xc9cf('0x26')](_0x1db160[_0xc9cf('0x1d')],['ids','id'])||{});}})[_0xc9cf('0x27')](function(_0x4b6576){logger['info'](_0xc9cf('0x28'),_0x1db160);logger['debug']('AddTags',_0x1db160,JSON[_0xc9cf('0x15')](_0x4b6576));_0x1e53be(_0x4b6576);})[_0xc9cf('0x1a')](function(_0xb0df81){logger[_0xc9cf('0x16')](_0xc9cf('0x28'),_0xb0df81[_0xc9cf('0x19')],_0x1db160);_0x9ea0d9(_this[_0xc9cf('0x16')](0x1f4,_0xb0df81[_0xc9cf('0x19')]));});});};
\ No newline at end of file
+var _0x35a5=['rpc','../../config/environment','jayson/promise','defaults','redis','localhost','register','request','then','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','UpdateMailInteraction','update','body','options','where','attributes','limit','AddTagsToMailInteraction','MailInteraction','addTags','ids','spread','AddTags','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x117b08,_0x3582df){var _0x3736b2=function(_0x7be6f9){while(--_0x7be6f9){_0x117b08['push'](_0x117b08['shift']());}};_0x3736b2(++_0x3582df);}(_0x35a5,0x1b7));var _0x535a=function(_0x3a2bce,_0x1d45ab){_0x3a2bce=_0x3a2bce-0x0;var _0x27d397=_0x35a5[_0x3a2bce];return _0x27d397;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x535a('0x0'));var rs=require(_0x535a('0x1'));var fs=require('fs');var Redis=require(_0x535a('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x535a('0x3'));var logger=require(_0x535a('0x4'))(_0x535a('0x5'));var config=require(_0x535a('0x6'));var jayson=require(_0x535a('0x7'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x535a('0x8')](config[_0x535a('0x9')],{'host':_0x535a('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x535a('0x9')]));require('./mailInteraction.socket')[_0x535a('0xb')](socket);function respondWithRpcPromise(_0x4aeefa,_0x255844,_0x1f3cf5){return new BPromise(function(_0x3729e5,_0xa5793c){return client[_0x535a('0xc')](_0x4aeefa,_0x1f3cf5)[_0x535a('0xd')](function(_0x35a06a){logger['info'](_0x535a('0xe'),_0x255844,_0x535a('0xf'));logger[_0x535a('0x10')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x255844,_0x535a('0xf'),JSON[_0x535a('0x11')](_0x35a06a));if(_0x35a06a['error']){if(_0x35a06a[_0x535a('0x12')][_0x535a('0x13')]===0x1f4){logger['error'](_0x535a('0xe'),_0x255844,_0x35a06a['error'][_0x535a('0x14')]);return _0xa5793c(_0x35a06a[_0x535a('0x12')]['message']);}logger['error']('MailInteraction,\x20%s,\x20%s',_0x255844,_0x35a06a[_0x535a('0x12')][_0x535a('0x14')]);return _0x3729e5(_0x35a06a[_0x535a('0x12')][_0x535a('0x14')]);}else{logger[_0x535a('0x15')](_0x535a('0xe'),_0x255844,_0x535a('0xf'));_0x3729e5(_0x35a06a[_0x535a('0x16')][_0x535a('0x14')]);}})[_0x535a('0x17')](function(_0x50c176){logger[_0x535a('0x12')](_0x535a('0xe'),_0x255844,_0x50c176);_0xa5793c(_0x50c176);});});}exports[_0x535a('0x18')]=function(_0x539844){var _0x374e6f=this;return new Promise(function(_0xa77372,_0x2bf81b){return db['MailInteraction'][_0x535a('0x19')](_0x539844[_0x535a('0x1a')],{'raw':_0x539844[_0x535a('0x1b')]?_0x539844[_0x535a('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x539844[_0x535a('0x1b')]?_0x539844[_0x535a('0x1b')][_0x535a('0x1c')]||null:null,'attributes':_0x539844[_0x535a('0x1b')]?_0x539844['options'][_0x535a('0x1d')]||null:null,'limit':_0x539844[_0x535a('0x1b')]?_0x539844['options'][_0x535a('0x1e')]||null:null})[_0x535a('0xd')](function(_0x5810f5){logger[_0x535a('0x15')](_0x535a('0x18'),_0x539844);logger[_0x535a('0x10')]('UpdateMailInteraction',_0x539844,JSON[_0x535a('0x11')](_0x5810f5));_0xa77372(_0x5810f5);})[_0x535a('0x17')](function(_0x589264){logger[_0x535a('0x12')](_0x535a('0x18'),_0x589264[_0x535a('0x14')],_0x539844);_0x2bf81b(_0x374e6f['error'](0x1f4,_0x589264[_0x535a('0x14')]));});});};exports[_0x535a('0x1f')]=function(_0x527f5d){return new Promise(function(_0x199948,_0x2e0d40){return db[_0x535a('0x20')]['find']({'where':_0x527f5d['options']?_0x527f5d[_0x535a('0x1b')][_0x535a('0x1c')]||null:null})['then'](function(_0x5221b6){if(_0x5221b6){return _0x5221b6[_0x535a('0x21')](_0x527f5d['body'][_0x535a('0x22')],_['omit'](_0x527f5d[_0x535a('0x1a')],['ids','id'])||{});}})[_0x535a('0x23')](function(_0x116eda){logger[_0x535a('0x15')](_0x535a('0x24'),_0x527f5d);logger[_0x535a('0x10')](_0x535a('0x24'),_0x527f5d,JSON[_0x535a('0x11')](_0x116eda));_0x199948(_0x116eda);})[_0x535a('0x17')](function(_0x1800c8){logger[_0x535a('0x12')](_0x535a('0x24'),_0x1800c8['message'],_0x527f5d);_0x2e0d40(_this[_0x535a('0x12')](0x1f4,_0x1800c8[_0x535a('0x14')]));});});};
\ No newline at end of file
index 0b7b297..82984a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9101=['emit','removeListener','register','length','./mailInteraction.events','save','remove'];(function(_0x315aa0,_0x568f9d){var _0x9315d3=function(_0x2ee14a){while(--_0x2ee14a){_0x315aa0['push'](_0x315aa0['shift']());}};_0x9315d3(++_0x568f9d);}(_0x9101,0x185));var _0x1910=function(_0x565ed7,_0x398228){_0x565ed7=_0x565ed7-0x0;var _0x183ad7=_0x9101[_0x565ed7];return _0x183ad7;};'use strict';var MailInteractionEvents=require(_0x1910('0x0'));var events=[_0x1910('0x1'),_0x1910('0x2'),'update'];function createListener(_0x551a83,_0x6ff2ec){return function(_0x4c5460){_0x6ff2ec[_0x1910('0x3')](_0x551a83,_0x4c5460);};}function removeListener(_0x5722d9,_0x4ef05a){return function(){MailInteractionEvents[_0x1910('0x4')](_0x5722d9,_0x4ef05a);};}exports[_0x1910('0x5')]=function(_0x66f634){for(var _0xbedf98=0x0,_0x1fe5c5=events[_0x1910('0x6')];_0xbedf98<_0x1fe5c5;_0xbedf98++){var _0x4fc81b=events[_0xbedf98];var _0x34136b=createListener('mailInteraction:'+_0x4fc81b,_0x66f634);MailInteractionEvents['on'](_0x4fc81b,_0x34136b);}};
\ No newline at end of file
+var _0x6a14=['length','./mailInteraction.events','save','emit','removeListener'];(function(_0x540dcb,_0x4eacb6){var _0x49353c=function(_0x449bb1){while(--_0x449bb1){_0x540dcb['push'](_0x540dcb['shift']());}};_0x49353c(++_0x4eacb6);}(_0x6a14,0x1b9));var _0x46a1=function(_0x417d3e,_0x5050c4){_0x417d3e=_0x417d3e-0x0;var _0x4f91a3=_0x6a14[_0x417d3e];return _0x4f91a3;};'use strict';var MailInteractionEvents=require(_0x46a1('0x0'));var events=[_0x46a1('0x1'),'remove','update'];function createListener(_0x461aaf,_0x230568){return function(_0x57c80c){_0x230568[_0x46a1('0x2')](_0x461aaf,_0x57c80c);};}function removeListener(_0x5073a2,_0x186900){return function(){MailInteractionEvents[_0x46a1('0x3')](_0x5073a2,_0x186900);};}exports['register']=function(_0x4dcb5f){for(var _0x36beeb=0x0,_0x237a9a=events[_0x46a1('0x4')];_0x36beeb<_0x237a9a;_0x36beeb++){var _0x2b0335=events[_0x36beeb];var _0x7fba4b=createListener('mailInteraction:'+_0x2b0335,_0x4dcb5f);MailInteractionEvents['on'](_0x2b0335,_0x7fba4b);}};
\ No newline at end of file
index 9531cbe..3b2880a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf990=['Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','/:id/download','download','tracked','mail','mailmessage:create','update','put','/:id/accept','accept','destroy','exports','multer','path','connect-timeout'];(function(_0x529bd7,_0x5bef9f){var _0x55e36d=function(_0xe9f782){while(--_0xe9f782){_0x529bd7['push'](_0x529bd7['shift']());}};_0x55e36d(++_0x5bef9f);}(_0xf990,0x87));var _0x0f99=function(_0x11c212,_0x21e7c8){_0x11c212=_0x11c212-0x0;var _0x330a23=_0xf990[_0x11c212];return _0x330a23;};'use strict';var multer=require(_0x0f99('0x0'));var util=require('util');var path=require(_0x0f99('0x1'));var timeout=require(_0x0f99('0x2'));var express=require('express');var router=express[_0x0f99('0x3')]();var fs_extra=require(_0x0f99('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x0f99('0x5'));var config=require(_0x0f99('0x6'));var controller=require('./mailMessage.controller');router[_0x0f99('0x7')]('/',auth[_0x0f99('0x8')](),controller[_0x0f99('0x9')]);router[_0x0f99('0x7')]('/describe',auth['isAuthenticated'](),controller[_0x0f99('0xa')]);router[_0x0f99('0x7')](_0x0f99('0xb'),auth[_0x0f99('0x8')](),controller['show']);router[_0x0f99('0x7')](_0x0f99('0xc'),auth[_0x0f99('0x8')](),controller[_0x0f99('0xd')]);router['post']('/',auth[_0x0f99('0x8')](),interaction[_0x0f99('0xe')](_0x0f99('0xf'),_0x0f99('0x10')),controller['create']);router['put'](_0x0f99('0xb'),auth[_0x0f99('0x8')](),controller[_0x0f99('0x11')]);router[_0x0f99('0x12')](_0x0f99('0x13'),auth[_0x0f99('0x8')](),controller[_0x0f99('0x14')]);router[_0x0f99('0x12')]('/:id/reject',auth[_0x0f99('0x8')](),controller['reject']);router['delete'](_0x0f99('0xb'),auth[_0x0f99('0x8')](),controller[_0x0f99('0x15')]);module[_0x0f99('0x16')]=router;
\ No newline at end of file
+var _0x2750=['put','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','index','/describe','isAuthenticated','/:id','/:id/download','download','post','tracked','mail','create'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x2750,0x13b));var _0x0275=function(_0x35959b,_0x40acfa){_0x35959b=_0x35959b-0x0;var _0x327595=_0x2750[_0x35959b];return _0x327595;};'use strict';var multer=require(_0x0275('0x0'));var util=require('util');var path=require(_0x0275('0x1'));var timeout=require(_0x0275('0x2'));var express=require(_0x0275('0x3'));var router=express[_0x0275('0x4')]();var fs_extra=require(_0x0275('0x5'));var auth=require(_0x0275('0x6'));var interaction=require(_0x0275('0x7'));var config=require(_0x0275('0x8'));var controller=require(_0x0275('0x9'));router[_0x0275('0xa')]('/',auth['isAuthenticated'](),controller[_0x0275('0xb')]);router[_0x0275('0xa')](_0x0275('0xc'),auth[_0x0275('0xd')](),controller['describe']);router[_0x0275('0xa')](_0x0275('0xe'),auth[_0x0275('0xd')](),controller['show']);router['get'](_0x0275('0xf'),auth['isAuthenticated'](),controller[_0x0275('0x10')]);router[_0x0275('0x11')]('/',auth[_0x0275('0xd')](),interaction[_0x0275('0x12')](_0x0275('0x13'),'mailmessage:create'),controller[_0x0275('0x14')]);router[_0x0275('0x15')](_0x0275('0xe'),auth['isAuthenticated'](),controller['update']);router[_0x0275('0x15')](_0x0275('0x16'),auth[_0x0275('0xd')](),controller[_0x0275('0x17')]);router[_0x0275('0x15')](_0x0275('0x18'),auth['isAuthenticated'](),controller[_0x0275('0x19')]);router[_0x0275('0x1a')]('/:id',auth[_0x0275('0xd')](),controller[_0x0275('0x1b')]);module['exports']=router;
\ No newline at end of file
index ff0fb65..962d27a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe730=['sequelize','lodash','exports','TEXT','long','ENUM','out','STRING','INTEGER','Chat','Email'];(function(_0x2c6c73,_0x3d6ace){var _0x3fbf5f=function(_0xa55931){while(--_0xa55931){_0x2c6c73['push'](_0x2c6c73['shift']());}};_0x3fbf5f(++_0x3d6ace);}(_0xe730,0xf2));var _0x0e73=function(_0x437f59,_0x2e9342){_0x437f59=_0x437f59-0x0;var _0x2ba6a4=_0xe730[_0x437f59];return _0x2ba6a4;};'use strict';var Sequelize=require(_0x0e73('0x0'));var _=require(_0x0e73('0x1'));module[_0x0e73('0x2')]={'body':{'type':Sequelize[_0x0e73('0x3')](_0x0e73('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x0e73('0x3')]('medium')},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x0e73('0x5')]('in',_0x0e73('0x6')),'defaultValue':_0x0e73('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0x0e73('0x7')](0x1fe)},'from':{'type':Sequelize[_0x0e73('0x7')]},'to':{'type':Sequelize[_0x0e73('0x3')](_0x0e73('0x4'))},'cc':{'type':Sequelize[_0x0e73('0x3')](_0x0e73('0x4'))},'bcc':{'type':Sequelize[_0x0e73('0x3')](_0x0e73('0x4'))},'subject':{'type':Sequelize['TEXT']},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize[_0x0e73('0x8')],'defaultValue':0x0},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize[_0x0e73('0x3')](_0x0e73('0x4'))},'originCc':{'type':Sequelize[_0x0e73('0x3')](_0x0e73('0x4'))},'originChannel':{'type':Sequelize[_0x0e73('0x5')]('Email',_0x0e73('0x9')),'defaultValue':_0x0e73('0xa'),'allowNull':![]}};
\ No newline at end of file
+var _0x08ad=['sequelize','lodash','TEXT','long','medium','out','STRING','BOOLEAN','DATE','Email'];(function(_0x3c136f,_0x489f81){var _0x150ed2=function(_0x5e9b63){while(--_0x5e9b63){_0x3c136f['push'](_0x3c136f['shift']());}};_0x150ed2(++_0x489f81);}(_0x08ad,0x104));var _0xd08a=function(_0x1beef3,_0x57c4b8){_0x1beef3=_0x1beef3-0x0;var _0x5af964=_0x08ad[_0x1beef3];return _0x5af964;};'use strict';var Sequelize=require(_0xd08a('0x0'));var _=require(_0xd08a('0x1'));module['exports']={'body':{'type':Sequelize[_0xd08a('0x2')](_0xd08a('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xd08a('0x2')](_0xd08a('0x4'))},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xd08a('0x5')),'defaultValue':_0xd08a('0x5'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0x1fe)},'from':{'type':Sequelize[_0xd08a('0x6')]},'to':{'type':Sequelize[_0xd08a('0x2')](_0xd08a('0x3'))},'cc':{'type':Sequelize['TEXT'](_0xd08a('0x3'))},'bcc':{'type':Sequelize[_0xd08a('0x2')](_0xd08a('0x3'))},'subject':{'type':Sequelize[_0xd08a('0x2')]},'sentAt':{'type':Sequelize['DATE']},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0xd08a('0x7')],'defaultValue':![]},'readAt':{'type':Sequelize[_0xd08a('0x8')]},'originTo':{'type':Sequelize['TEXT'](_0xd08a('0x3'))},'originCc':{'type':Sequelize[_0xd08a('0x2')](_0xd08a('0x3'))},'originChannel':{'type':Sequelize['ENUM']('Email','Chat'),'defaultValue':_0xd08a('0x9'),'allowNull':![]}};
\ No newline at end of file
index 541ae17..5ac4d30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b41=['./mailMessage.socket','register','jayson/promise','client','http','request','info','MailMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','status','json','offset','undefined','limit','count','set','Content-Range','update','then','end','sendStatus','stack','name','index','map','MailMessage','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','show','params','length','include','body','find','describe','create','direction','out','secret','split','MailAccount','MailAccountId','CmList','CmContact','Contacts','updatedAt','MailServerOut','Smtp','CloudProvider','getSmtpOptions','attachments','join','root','server/files/attachments','basename','List','List\x20not\x20found','SendMail','sendMail','format','read','YYYY-MM-DD\x20HH:mm:ss','agent','UserId','MailInteractionId','isNil','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','interaction','acceptMessage','sequelize','Sequelize','SELECT','contact','User','fullname','manual','interface','SIP/%s','motionChannel','channel','event','EventManager','acceptmessage','mail','get','MailInteraction','role','null','RejectMessage','rejectMessage','ContactId','QueryTypes','internal','fromString','rejectmessage','download','unix','files','tmp','server','from','bcc','subject','Attachment','Attachments','decode','createdAt','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','existsSync','push','readFileSync','build','eml-format','util','path','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','mail-interactions','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter'];(function(_0x4e2f9e,_0x3c5ac0){var _0x2d9b49=function(_0x49dfaa){while(--_0x49dfaa){_0x4e2f9e['push'](_0x4e2f9e['shift']());}};_0x2d9b49(++_0x3c5ac0);}(_0x4b41,0x8d));var _0x14b4=function(_0x386fc7,_0xa54362){_0x386fc7=_0x386fc7-0x0;var _0x23efa9=_0x4b41[_0x386fc7];return _0x23efa9;};'use strict';var emlformat=require(_0x14b4('0x0'));var moment=require('moment');var BPromise=require('bluebird');var util=require(_0x14b4('0x1'));var path=require(_0x14b4('0x2'));var fs=require('fs');var _=require(_0x14b4('0x3'));var Redis=require(_0x14b4('0x4'));var htmlToText=require(_0x14b4('0x5'));var qs=require(_0x14b4('0x6'));var logger=require(_0x14b4('0x7'))('api');var interaction_log=require(_0x14b4('0x7'))(_0x14b4('0x8'));var config=require(_0x14b4('0x9'));var db=require(_0x14b4('0xa'))['db'];config['redis']=_[_0x14b4('0xb')](config[_0x14b4('0xc')],{'host':_0x14b4('0xd'),'port':0x18eb});var socket=require(_0x14b4('0xe'))(new Redis(config[_0x14b4('0xc')]));var htmlEntities=require('html-entities');require(_0x14b4('0xf'))[_0x14b4('0x10')](socket);var jayson=require(_0x14b4('0x11'));var client=jayson[_0x14b4('0x12')][_0x14b4('0x13')]({'port':0x232c});var client9003=jayson[_0x14b4('0x12')][_0x14b4('0x13')]({'port':0x232b});var client9002=jayson[_0x14b4('0x12')][_0x14b4('0x13')]({'port':0x232a});function respondWithRpcPromise(_0x1274ee,_0xa35e04,_0x258f58,_0x239d1a){return new BPromise(function(_0x1755b9,_0x500be3){var _0x552c67=_0x239d1a||client;return _0x552c67[_0x14b4('0x14')](_0x1274ee,_0x258f58)['then'](function(_0x399a28){logger[_0x14b4('0x15')](_0x14b4('0x16'),_0xa35e04,_0x14b4('0x17'));logger['debug']('MailMessage,\x20%s,\x20%s,\x20%s',_0xa35e04,'request\x20sent',JSON[_0x14b4('0x18')](_0x399a28));if(_0x399a28[_0x14b4('0x19')]){if(_0x399a28[_0x14b4('0x19')][_0x14b4('0x1a')]===0x1f4){logger[_0x14b4('0x19')](_0x14b4('0x16'),_0xa35e04,_0x399a28[_0x14b4('0x19')][_0x14b4('0x1b')]);return _0x500be3(_0x399a28['error'][_0x14b4('0x1b')]);}logger[_0x14b4('0x19')](_0x14b4('0x16'),_0xa35e04,_0x399a28['error'][_0x14b4('0x1b')]);return _0x1755b9(_0x399a28[_0x14b4('0x19')][_0x14b4('0x1b')]);}else{logger[_0x14b4('0x15')](_0x14b4('0x16'),_0xa35e04,_0x14b4('0x17'));_0x1755b9(_0x399a28[_0x14b4('0x1c')]['message']);}})[_0x14b4('0x1d')](function(_0x9bd070){logger[_0x14b4('0x19')](_0x14b4('0x16'),_0xa35e04,_0x9bd070);_0x500be3(_0x9bd070);});});}function respondWithResult(_0x3f3c54,_0x2c6d41){_0x2c6d41=_0x2c6d41||0xc8;return function(_0x3e9034){if(_0x3e9034){return _0x3f3c54[_0x14b4('0x1e')](_0x2c6d41)[_0x14b4('0x1f')](_0x3e9034);}};}function respondWithFilteredResult(_0x20b260,_0xdf7ec5){return function(_0x3a8b9f){if(_0x3a8b9f){var _0x4a9e17=typeof _0xdf7ec5[_0x14b4('0x20')]===_0x14b4('0x21')&&typeof _0xdf7ec5[_0x14b4('0x22')]==='undefined';var _0x3792b6=_0x3a8b9f[_0x14b4('0x23')];var _0x22e9a1=_0x4a9e17?0x0:_0xdf7ec5[_0x14b4('0x20')];var _0x46a314=_0x4a9e17?_0x3a8b9f[_0x14b4('0x23')]:_0xdf7ec5[_0x14b4('0x20')]+_0xdf7ec5['limit'];var _0x4920dc;if(_0x46a314>=_0x3792b6){_0x46a314=_0x3792b6;_0x4920dc=0xc8;}else{_0x4920dc=0xce;}_0x20b260[_0x14b4('0x1e')](_0x4920dc);return _0x20b260[_0x14b4('0x24')](_0x14b4('0x25'),_0x22e9a1+'-'+_0x46a314+'/'+_0x3792b6)[_0x14b4('0x1f')](_0x3a8b9f);}return null;};}function saveUpdates(_0x4e5aa3){return function(_0x5cd05a){if(_0x5cd05a){return _0x5cd05a[_0x14b4('0x26')](_0x4e5aa3)[_0x14b4('0x27')](function(_0x1c45b0){return _0x1c45b0;});}return null;};}function removeEntity(_0x211418){return function(_0x389ce4){if(_0x389ce4){return _0x389ce4['destroy']()[_0x14b4('0x27')](function(){_0x211418[_0x14b4('0x1e')](0xcc)[_0x14b4('0x28')]();});}};}function handleEntityNotFound(_0xf640a8){return function(_0x30d1a9){if(!_0x30d1a9){_0xf640a8[_0x14b4('0x29')](0x194);}return _0x30d1a9;};}function handleError(_0x4b71c4,_0x983007){_0x983007=_0x983007||0x1f4;return function(_0x4d12c2){logger[_0x14b4('0x19')](_0x4d12c2[_0x14b4('0x2a')]);if(_0x4d12c2[_0x14b4('0x2b')]){delete _0x4d12c2[_0x14b4('0x2b')];}_0x4b71c4['status'](_0x983007)['send'](_0x4d12c2);};}exports[_0x14b4('0x2c')]=function(_0x4ff885,_0x1180fe){var _0x3a7119={},_0x9fdc28={},_0x3c88d7={'count':0x0,'rows':[]};var _0x37c215=_[_0x14b4('0x2d')](db[_0x14b4('0x2e')][_0x14b4('0x2f')],function(_0x4d52a4){return{'name':_0x4d52a4[_0x14b4('0x30')],'type':_0x4d52a4[_0x14b4('0x31')][_0x14b4('0x32')]};});_0x9fdc28[_0x14b4('0x33')]=_['map'](_0x37c215,_0x14b4('0x2b'));_0x9fdc28['query']=_[_0x14b4('0x34')](_0x4ff885[_0x14b4('0x35')]);_0x9fdc28[_0x14b4('0x36')]=_[_0x14b4('0x37')](_0x9fdc28[_0x14b4('0x33')],_0x9fdc28[_0x14b4('0x35')]);_0x3a7119[_0x14b4('0x38')]=_['intersection'](_0x9fdc28[_0x14b4('0x33')],qs[_0x14b4('0x39')](_0x4ff885[_0x14b4('0x35')]['fields']));_0x3a7119[_0x14b4('0x38')]=_0x3a7119[_0x14b4('0x38')]['length']?_0x3a7119[_0x14b4('0x38')]:_0x9fdc28[_0x14b4('0x33')];if(!_0x4ff885[_0x14b4('0x35')][_0x14b4('0x3a')](_0x14b4('0x3b'))){_0x3a7119[_0x14b4('0x22')]=qs[_0x14b4('0x22')](_0x4ff885[_0x14b4('0x35')][_0x14b4('0x22')]);_0x3a7119['offset']=qs['offset'](_0x4ff885[_0x14b4('0x35')][_0x14b4('0x20')]);}_0x3a7119[_0x14b4('0x3c')]=qs[_0x14b4('0x3d')](_0x4ff885[_0x14b4('0x35')][_0x14b4('0x3d')]);_0x3a7119[_0x14b4('0x3e')]=qs[_0x14b4('0x36')](_[_0x14b4('0x3f')](_0x4ff885[_0x14b4('0x35')],_0x9fdc28[_0x14b4('0x36')]),_0x37c215);if(_0x4ff885[_0x14b4('0x35')][_0x14b4('0x40')]){_0x3a7119[_0x14b4('0x3e')]=_[_0x14b4('0x41')](_0x3a7119[_0x14b4('0x3e')],{'$or':_[_0x14b4('0x2d')](_0x37c215,function(_0x40a72a){if(_0x40a72a[_0x14b4('0x31')]!==_0x14b4('0x42')){var _0x45e475={};_0x45e475[_0x40a72a[_0x14b4('0x2b')]]={'$like':'%'+_0x4ff885[_0x14b4('0x35')]['filter']+'%'};return _0x45e475;}})});}_0x3a7119=_['merge']({},_0x3a7119,_0x4ff885[_0x14b4('0x43')]);var _0x4f1d01={'where':_0x3a7119[_0x14b4('0x3e')]};return db[_0x14b4('0x2e')][_0x14b4('0x23')](_0x4f1d01)[_0x14b4('0x27')](function(_0x530da0){_0x3c88d7[_0x14b4('0x23')]=_0x530da0;if(_0x4ff885[_0x14b4('0x35')][_0x14b4('0x44')]){_0x3a7119['include']=[{'all':!![]}];}return db[_0x14b4('0x2e')]['findAll'](_0x3a7119);})[_0x14b4('0x27')](function(_0x282c70){_0x3c88d7[_0x14b4('0x45')]=_0x282c70;return _0x3c88d7;})['then'](respondWithFilteredResult(_0x1180fe,_0x3a7119))[_0x14b4('0x1d')](handleError(_0x1180fe,null));};exports[_0x14b4('0x46')]=function(_0x53f464,_0x59e0a9){var _0x512f53={'raw':!![],'where':{'id':_0x53f464[_0x14b4('0x47')]['id']}},_0x1c6f24={};_0x1c6f24[_0x14b4('0x33')]=_[_0x14b4('0x34')](db['MailMessage'][_0x14b4('0x2f')]);_0x1c6f24[_0x14b4('0x35')]=_[_0x14b4('0x34')](_0x53f464[_0x14b4('0x35')]);_0x1c6f24[_0x14b4('0x36')]=_['intersection'](_0x1c6f24[_0x14b4('0x33')],_0x1c6f24[_0x14b4('0x35')]);_0x512f53[_0x14b4('0x38')]=_[_0x14b4('0x37')](_0x1c6f24[_0x14b4('0x33')],qs['fields'](_0x53f464['query'][_0x14b4('0x39')]));_0x512f53[_0x14b4('0x38')]=_0x512f53[_0x14b4('0x38')][_0x14b4('0x48')]?_0x512f53[_0x14b4('0x38')]:_0x1c6f24[_0x14b4('0x33')];if(_0x53f464['query'][_0x14b4('0x44')]){_0x512f53[_0x14b4('0x49')]=[{'all':!![]}];}_0x512f53=_['merge']({},_0x512f53,_0x53f464[_0x14b4('0x43')]);return db[_0x14b4('0x2e')]['find'](_0x512f53)[_0x14b4('0x27')](handleEntityNotFound(_0x59e0a9,null))[_0x14b4('0x27')](respondWithResult(_0x59e0a9,null))[_0x14b4('0x1d')](handleError(_0x59e0a9,null));};exports[_0x14b4('0x26')]=function(_0x20a337,_0x58284c){if(_0x20a337[_0x14b4('0x4a')]['id']){delete _0x20a337[_0x14b4('0x4a')]['id'];}return db[_0x14b4('0x2e')]['find']({'where':{'id':_0x20a337[_0x14b4('0x47')]['id']}})[_0x14b4('0x27')](handleEntityNotFound(_0x58284c,null))[_0x14b4('0x27')](saveUpdates(_0x20a337['body'],null))[_0x14b4('0x27')](respondWithResult(_0x58284c,null))['catch'](handleError(_0x58284c,null));};exports['destroy']=function(_0x4df604,_0x4d254d){return db['MailMessage'][_0x14b4('0x4b')]({'where':{'id':_0x4df604[_0x14b4('0x47')]['id']}})[_0x14b4('0x27')](handleEntityNotFound(_0x4d254d,null))['then'](removeEntity(_0x4d254d,null))[_0x14b4('0x1d')](handleError(_0x4d254d,null));};exports['describe']=function(_0x105c12,_0x5b026a){return db[_0x14b4('0x2e')][_0x14b4('0x4c')]()[_0x14b4('0x27')](respondWithResult(_0x5b026a,null))['catch'](handleError(_0x5b026a,null));};exports[_0x14b4('0x4d')]=function(_0x370900,_0x594f8e){return db['MailMessage'][_0x14b4('0x4d')](_0x370900['body'])[_0x14b4('0x27')](function(_0x259771){if(_0x259771){if(_0x259771[_0x14b4('0x4e')]===_0x14b4('0x4f')&&!_0x259771[_0x14b4('0x50')]){var _0x5bb9ca,_0x587f46,_0x642a5;if(_0x370900[_0x14b4('0x4a')]['to']){_0x587f46=_0x370900[_0x14b4('0x4a')]['to'][_0x14b4('0x51')](',')[0x0];}return db[_0x14b4('0x52')]['findOne']({'where':{'id':_0x259771[_0x14b4('0x53')]},'include':[{'model':db[_0x14b4('0x54')],'as':'List','include':[{'model':db[_0x14b4('0x55')],'as':_0x14b4('0x56'),'where':{'email':_0x587f46},'limit':0x1,'order':[[_0x14b4('0x57'),'DESC']]}]},{'model':db[_0x14b4('0x58')],'as':_0x14b4('0x59'),'raw':!![],'include':[{'model':db[_0x14b4('0x5a')],'as':_0x14b4('0x5a'),'raw':!![]}]}]})['then'](function(_0x340e18){_0x5bb9ca=_0x340e18;if(!_0x5bb9ca||!_0x5bb9ca[_0x14b4('0x59')])return;var _0x52668b=_0x5bb9ca[_0x14b4('0x5b')]();if(_0x370900[_0x14b4('0x4a')]['attachments']&&_0x370900['body'][_0x14b4('0x5c')][_0x14b4('0x48')]){for(var _0xd0dfa9=0x0;_0xd0dfa9<_0x370900[_0x14b4('0x4a')][_0x14b4('0x5c')][_0x14b4('0x48')];_0xd0dfa9+=0x1){_0x370900[_0x14b4('0x4a')][_0x14b4('0x5c')][_0xd0dfa9]={'filename':_0x370900[_0x14b4('0x4a')][_0x14b4('0x5c')][_0xd0dfa9][_0x14b4('0x2b')],'path':path[_0x14b4('0x5d')](config[_0x14b4('0x5e')],_0x14b4('0x5f'),_0x370900['body']['attachments'][_0xd0dfa9][_0x14b4('0x60')])};}}_0x642a5={'account':_0x52668b,'message':_0x370900['body']};return;})[_0x14b4('0x27')](function(){if(_0x5bb9ca[_0x14b4('0x61')]){if(_0x5bb9ca[_0x14b4('0x61')][_0x14b4('0x56')][_0x14b4('0x48')]){return _0x5bb9ca['List'][_0x14b4('0x56')][0x0];}else{return db[_0x14b4('0x55')][_0x14b4('0x4d')](_[_0x14b4('0xb')](_0x370900[_0x14b4('0x4a')],{'firstName':_0x370900['body']['to'],'email':_0x370900[_0x14b4('0x4a')]['to'],'phone':_0x370900[_0x14b4('0x4a')]['to'],'ListId':_0x5bb9ca['ListId']}));}}else{throw new Error(_0x14b4('0x62'));}})[_0x14b4('0x27')](function(){if(_0x642a5){return respondWithRpcPromise(_0x14b4('0x63'),_0x14b4('0x64'),_0x642a5,client9003)[_0x14b4('0x27')](function(_0x19c6d6){return _0x259771[_0x14b4('0x26')]({'read':!![],'messageId':_0x19c6d6['messageId'],'sentAt':moment()[_0x14b4('0x65')]('YYYY-MM-DD\x20HH:mm:ss')});})['catch'](function(_0x506a6d){logger[_0x14b4('0x19')]('%s',JSON[_0x14b4('0x18')](_0x506a6d));return _0x259771;});}return _0x259771;});}return _0x259771;}})[_0x14b4('0x27')](respondWithResult(_0x594f8e,0xc9))[_0x14b4('0x1d')](handleError(_0x594f8e,null));};exports['accept']=function(_0x1ebef8,_0x4b18be){var _0x514954={'agent':{},'channel':'mail'};if(_0x1ebef8[_0x14b4('0x4a')]['id']){delete _0x1ebef8[_0x14b4('0x4a')]['id'];}_0x1ebef8[_0x14b4('0x4a')][_0x14b4('0x66')]=!![];_0x1ebef8[_0x14b4('0x4a')]['readAt']=moment()[_0x14b4('0x65')](_0x14b4('0x67'));_0x1ebef8[_0x14b4('0x4a')]['UserId']=_0x1ebef8[_0x14b4('0x4a')]['UserId']||_0x1ebef8['user']['id'];_0x514954[_0x14b4('0x68')]['id']=_0x1ebef8[_0x14b4('0x4a')][_0x14b4('0x69')];return db['MailMessage'][_0x14b4('0x4b')]({'where':{'id':_0x1ebef8['params']['id'],'UserId':null}})[_0x14b4('0x27')](handleEntityNotFound(_0x4b18be,null))['then'](saveUpdates(_0x1ebef8[_0x14b4('0x4a')],null))[_0x14b4('0x27')](function(_0xd1af15){if(_0xd1af15){_0x514954[_0x14b4('0x1b')]=_0xd1af15['get']({'plain':!![]});return db['MailInteraction']['find']({'where':{'id':_0xd1af15[_0x14b4('0x6a')]}});}return null;})['then'](handleEntityNotFound(_0x4b18be,null))['then'](function(_0x1d43ea){if(_0x1d43ea){return _0x1d43ea[_0x14b4('0x26')]({'UserId':_0x1ebef8[_0x14b4('0x4a')][_0x14b4('0x69')],'read1stAt':_[_0x14b4('0x6b')](_0x1d43ea['read1stAt'])?moment()['format'](_0x14b4('0x67')):undefined});}return null;})[_0x14b4('0x27')](function(_0x2b02d5){if(_0x2b02d5){_0x514954['interaction']=_0x2b02d5['get']({'plain':!![]});interaction_log['info'](_0x14b4('0x6c'),_0x1ebef8['user']['id'],_0x1ebef8[_0x14b4('0x6d')][_0x14b4('0x2b')],_0x1ebef8[_0x14b4('0x6d')]['role'],_0x514954[_0x14b4('0x6e')]['id'],_0x1ebef8[_0x14b4('0x4a')]?JSON[_0x14b4('0x18')](_0x1ebef8[_0x14b4('0x4a')]):'null');return respondWithRpcPromise('AcceptMessage',_0x14b4('0x6f'),_0x514954);}return null;})[_0x14b4('0x27')](function(_0x1b0e01){var _0x41cc08='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1b0e01[_0x14b4('0x1b')]['ContactId'];return db[_0x14b4('0x70')][_0x14b4('0x35')](_0x41cc08,{'type':db[_0x14b4('0x71')]['QueryTypes'][_0x14b4('0x72')],'raw':!![]})[_0x14b4('0x27')](function(_0x124f52){return _0x124f52;});})[_0x14b4('0x27')](function(_0x4a1ef9){if(_0x4a1ef9){_0x514954['message'][_0x14b4('0x73')]=_0x4a1ef9[0x0];if(!_0x1ebef8[_0x14b4('0x4a')][_0x14b4('0x69')])return;return db[_0x14b4('0x74')][_0x14b4('0x4b')]({'where':{'id':_0x1ebef8[_0x14b4('0x4a')][_0x14b4('0x69')],'role':_0x14b4('0x68')},'attributes':['id',_0x14b4('0x2b'),_0x14b4('0x75'),'email','internal'],'raw':!![]});}return null;})[_0x14b4('0x27')](function(_0x3bf249){if(!_0x3bf249)return null;_0x514954[_0x14b4('0x1b')][_0x14b4('0x68')]=_0x3bf249;return _0x514954;})[_0x14b4('0x27')](function(_0x413275){if(_0x413275){if(_0x1ebef8[_0x14b4('0x4a')][_0x14b4('0x76')]){_0x514954[_0x14b4('0x1b')][_0x14b4('0x77')]=util[_0x14b4('0x65')](_0x14b4('0x78'),_0x1ebef8['user'][_0x14b4('0x2b')]);_0x514954[_0x14b4('0x1b')]['channel']=_0x514954['channel'];_0x514954['message'][_0x14b4('0x79')]=_0x514954[_0x14b4('0x7a')];_0x514954['message'][_0x14b4('0x7b')]='accept';_0x514954['message'][_0x14b4('0x4a')]=htmlToText['fromString'](_0x514954['message'][_0x14b4('0x4a')]);return respondWithRpcPromise(_0x14b4('0x7c'),'EventManager',{'event':_0x14b4('0x7d'),'message':_0x514954['message']},client9002)[_0x14b4('0x27')](function(){return _0x514954;});}return _0x514954;}return null;})['then'](respondWithResult(_0x4b18be,null))['catch'](handleError(_0x4b18be,null));};exports['reject']=function(_0x58c7ae,_0xa806b){var _0x19cc63={'agent':{},'channel':_0x14b4('0x7e')};if(_0x58c7ae[_0x14b4('0x4a')]['id']){delete _0x58c7ae[_0x14b4('0x4a')]['id'];}_0x58c7ae[_0x14b4('0x4a')][_0x14b4('0x69')]=_0x58c7ae[_0x14b4('0x4a')][_0x14b4('0x69')]||_0x58c7ae[_0x14b4('0x6d')]['id'];_0x19cc63[_0x14b4('0x68')]['id']=_0x58c7ae['body'][_0x14b4('0x69')];return db[_0x14b4('0x2e')]['find']({'where':{'id':_0x58c7ae[_0x14b4('0x47')]['id'],'UserId':null}})[_0x14b4('0x27')](handleEntityNotFound(_0xa806b,null))[_0x14b4('0x27')](function(_0xe527c0){if(_0xe527c0){_0x19cc63['message']=_0xe527c0[_0x14b4('0x7f')]({'plain':!![]});return db[_0x14b4('0x80')][_0x14b4('0x4b')]({'where':{'id':_0xe527c0[_0x14b4('0x6a')]}});}return null;})[_0x14b4('0x27')](handleEntityNotFound(_0xa806b,null))[_0x14b4('0x27')](function(_0x1a8c59){if(_0x1a8c59){_0x19cc63['interaction']=_0x1a8c59[_0x14b4('0x7f')]({'plain':!![]});interaction_log[_0x14b4('0x15')]('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x58c7ae[_0x14b4('0x6d')]['id'],_0x58c7ae[_0x14b4('0x6d')]['name'],_0x58c7ae[_0x14b4('0x6d')][_0x14b4('0x81')],_0x19cc63[_0x14b4('0x6e')]['id'],_0x58c7ae['body']?JSON[_0x14b4('0x18')](_0x58c7ae['body']):_0x14b4('0x82'));return respondWithRpcPromise(_0x14b4('0x83'),_0x14b4('0x84'),_0x19cc63);}return null;})[_0x14b4('0x27')](function(_0x4bd671){var _0x147df2='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4bd671[_0x14b4('0x1b')][_0x14b4('0x85')];return db['sequelize']['query'](_0x147df2,{'type':db['Sequelize'][_0x14b4('0x86')]['SELECT'],'raw':!![]})['then'](function(_0xaaaee1){return _0xaaaee1;});})[_0x14b4('0x27')](function(_0x23d7a2){if(_0x23d7a2){_0x19cc63['message'][_0x14b4('0x73')]=_0x23d7a2[0x0];if(!_0x58c7ae['body']['UserId'])return;return db[_0x14b4('0x74')][_0x14b4('0x4b')]({'where':{'id':_0x58c7ae[_0x14b4('0x4a')][_0x14b4('0x69')],'role':'agent'},'attributes':['id',_0x14b4('0x2b'),_0x14b4('0x75'),'email',_0x14b4('0x87')],'raw':!![]});}return null;})[_0x14b4('0x27')](function(_0x1e896a){if(!_0x1e896a)return null;_0x19cc63[_0x14b4('0x1b')]['agent']=_0x1e896a;return _0x19cc63;})[_0x14b4('0x27')](function(_0x97014c){if(_0x97014c){_0x97014c['message']['interface']=util['format'](_0x14b4('0x78'),_0x58c7ae[_0x14b4('0x6d')]['name']);_0x97014c['message']['channel']=_0x19cc63['channel'];_0x97014c[_0x14b4('0x1b')]['motionChannel']=_0x19cc63[_0x14b4('0x7a')];_0x97014c[_0x14b4('0x1b')][_0x14b4('0x7b')]='reject';_0x97014c[_0x14b4('0x1b')][_0x14b4('0x4a')]=htmlToText[_0x14b4('0x88')](_0x19cc63[_0x14b4('0x1b')][_0x14b4('0x4a')]);respondWithRpcPromise('EventManager',_0x14b4('0x7c'),{'event':_0x14b4('0x89'),'message':_0x97014c[_0x14b4('0x1b')]},client9002);return _0x19cc63;}return null;})[_0x14b4('0x27')](respondWithResult(_0xa806b,null))[_0x14b4('0x1d')](handleError(_0xa806b,null));};exports[_0x14b4('0x8a')]=function(_0x48a672,_0x5bdb5d){var _0x3a264a=moment()[_0x14b4('0x8b')]()['toString']();var _0x2fd983=path['join'](config[_0x14b4('0x5e')],'server',_0x14b4('0x8c'),_0x14b4('0x8d'));var _0x420b0d=path[_0x14b4('0x5d')](config[_0x14b4('0x5e')],_0x14b4('0x8e'),_0x14b4('0x8c'),_0x14b4('0x5c'));var _0x266ecb=util[_0x14b4('0x65')]('message-%s.eml',_0x3a264a);return db[_0x14b4('0x2e')][_0x14b4('0x4b')]({'where':{'id':_0x48a672[_0x14b4('0x47')]['id']},'attributes':['id','body',_0x14b4('0x8f'),'to','cc',_0x14b4('0x90'),_0x14b4('0x91'),'createdAt'],'include':_0x48a672[_0x14b4('0x35')][_0x14b4('0x5c')]?[{'model':db[_0x14b4('0x92')],'as':_0x14b4('0x93')}]:undefined})[_0x14b4('0x27')](handleEntityNotFound(_0x5bdb5d,null))[_0x14b4('0x27')](function(_0x449bca){if(_0x449bca){var _0x37cff4=_0x449bca;var _0x249f3d={'from':_0x37cff4['from'],'to':_0x37cff4['to'],'subject':_0x37cff4[_0x14b4('0x91')],'html':htmlEntities[_0x14b4('0x94')](_0x37cff4[_0x14b4('0x4a')]),'headers':{'Date':moment(_0x37cff4[_0x14b4('0x95')])['format'](_0x14b4('0x96'))},'attachments':[]};if(_0x449bca['cc']){_0x249f3d[_0x14b4('0x97')]['Cc']=_0x449bca['cc'];}if(_0x449bca[_0x14b4('0x90')]){_0x249f3d[_0x14b4('0x97')]['Bcc']=_0x449bca['bcc'];}return new BPromise(function(_0x3da7df,_0x36e223){if(_0x449bca['Attachments']){for(var _0x44cb7b=0x0;_0x44cb7b<_0x449bca['Attachments'][_0x14b4('0x48')];_0x44cb7b++){var _0x23c97c=_0x449bca['Attachments'][_0x44cb7b];var _0x3c09d3=path['join'](_0x420b0d,_0x23c97c[_0x14b4('0x60')]);if(fs[_0x14b4('0x98')](_0x3c09d3)){_0x249f3d[_0x14b4('0x5c')][_0x14b4('0x99')]({'name':_0x23c97c[_0x14b4('0x2b')],'contentType':_0x23c97c[_0x14b4('0x31')],'data':fs[_0x14b4('0x9a')](_0x3c09d3)});}}}emlformat[_0x14b4('0x9b')](_0x249f3d,function(_0x205554,_0x2cbb59){if(_0x205554)return _0x36e223(_0x205554);fs['writeFileSync'](path[_0x14b4('0x5d')](_0x2fd983,_0x266ecb),_0x2cbb59);return _0x3da7df(_0x2cbb59);});});}})['then'](function(_0x3cdf1b){if(_0x3cdf1b){return _0x5bdb5d[_0x14b4('0x8a')](path['join'](_0x2fd983,_0x266ecb),_0x266ecb,function(_0x391f88){if(!_0x391f88)fs['unlinkSync'](path[_0x14b4('0x5d')](_0x2fd983,_0x266ecb));});}})[_0x14b4('0x1d')](handleError(_0x5bdb5d,null));};
\ No newline at end of file
+var _0x8c12=['limit','set','Content-Range','update','then','destroy','end','send','index','map','type','key','model','name','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','MailMessage','findAll','rows','show','params','rawAttributes','find','body','describe','create','direction','out','secret','split','MailAccount','findOne','MailAccountId','CmList','List','CmContact','Contacts','updatedAt','DESC','MailServerOut','Smtp','CloudProvider','getSmtpOptions','attachments','root','server/files/attachments','defaults','List\x20not\x20found','SendMail','sendMail','messageId','accept','mail','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','MailInteraction','MailInteractionId','isNil','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','QueryTypes','SELECT','contact','User','agent','fullname','email','internal','manual','interface','SIP/%s','motionChannel','channel','fromString','EventManager','acceptmessage','reject','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','ContactId','sequelize','rejectmessage','download','unix','toString','join','server','files','tmp','message-%s.eml','bcc','createdAt','Attachment','Attachments','from','subject','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','existsSync','push','readFileSync','writeFileSync','unlinkSync','bluebird','util','path','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','mail-interactions','../../config/environment','../../mysqldb','redis','./mailMessage.socket','register','jayson/promise','client','http','request','info','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','MailMessage,\x20%s,\x20%s','message','result','catch','status','json','offset','undefined','count'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x8c12,0x82));var _0x28c1=function(_0x4922d2,_0x522b0c){_0x4922d2=_0x4922d2-0x0;var _0x3a33a2=_0x8c12[_0x4922d2];return _0x3a33a2;};'use strict';var emlformat=require('eml-format');var moment=require('moment');var BPromise=require(_0x28c1('0x0'));var util=require(_0x28c1('0x1'));var path=require(_0x28c1('0x2'));var fs=require('fs');var _=require(_0x28c1('0x3'));var Redis=require(_0x28c1('0x4'));var htmlToText=require(_0x28c1('0x5'));var qs=require(_0x28c1('0x6'));var logger=require('../../config/logger')('api');var interaction_log=require(_0x28c1('0x7'))(_0x28c1('0x8'));var config=require(_0x28c1('0x9'));var db=require(_0x28c1('0xa'))['db'];config[_0x28c1('0xb')]=_['defaults'](config[_0x28c1('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x28c1('0xb')]));var htmlEntities=require('html-entities');require(_0x28c1('0xc'))[_0x28c1('0xd')](socket);var jayson=require(_0x28c1('0xe'));var client=jayson[_0x28c1('0xf')][_0x28c1('0x10')]({'port':0x232c});var client9003=jayson['client']['http']({'port':0x232b});var client9002=jayson[_0x28c1('0xf')][_0x28c1('0x10')]({'port':0x232a});function respondWithRpcPromise(_0x57ec2a,_0x466a22,_0x342947,_0x20d88c){return new BPromise(function(_0xcae029,_0x1b8236){var _0x51e375=_0x20d88c||client;return _0x51e375[_0x28c1('0x11')](_0x57ec2a,_0x342947)['then'](function(_0x267dd4){logger[_0x28c1('0x12')]('MailMessage,\x20%s,\x20%s',_0x466a22,_0x28c1('0x13'));logger[_0x28c1('0x14')](_0x28c1('0x15'),_0x466a22,'request\x20sent',JSON[_0x28c1('0x16')](_0x267dd4));if(_0x267dd4[_0x28c1('0x17')]){if(_0x267dd4[_0x28c1('0x17')][_0x28c1('0x18')]===0x1f4){logger['error'](_0x28c1('0x19'),_0x466a22,_0x267dd4[_0x28c1('0x17')][_0x28c1('0x1a')]);return _0x1b8236(_0x267dd4[_0x28c1('0x17')][_0x28c1('0x1a')]);}logger['error']('MailMessage,\x20%s,\x20%s',_0x466a22,_0x267dd4[_0x28c1('0x17')]['message']);return _0xcae029(_0x267dd4['error'][_0x28c1('0x1a')]);}else{logger[_0x28c1('0x12')](_0x28c1('0x19'),_0x466a22,'request\x20sent');_0xcae029(_0x267dd4[_0x28c1('0x1b')]['message']);}})[_0x28c1('0x1c')](function(_0x55d914){logger[_0x28c1('0x17')]('MailMessage,\x20%s,\x20%s',_0x466a22,_0x55d914);_0x1b8236(_0x55d914);});});}function respondWithResult(_0x4974b9,_0x14c4f2){_0x14c4f2=_0x14c4f2||0xc8;return function(_0x91f0b0){if(_0x91f0b0){return _0x4974b9[_0x28c1('0x1d')](_0x14c4f2)[_0x28c1('0x1e')](_0x91f0b0);}};}function respondWithFilteredResult(_0x5ab92b,_0x32eb3b){return function(_0xad2b9a){if(_0xad2b9a){var _0x1f51b7=typeof _0x32eb3b[_0x28c1('0x1f')]===_0x28c1('0x20')&&typeof _0x32eb3b['limit']===_0x28c1('0x20');var _0xde189a=_0xad2b9a[_0x28c1('0x21')];var _0x5543e2=_0x1f51b7?0x0:_0x32eb3b[_0x28c1('0x1f')];var _0x500f84=_0x1f51b7?_0xad2b9a[_0x28c1('0x21')]:_0x32eb3b[_0x28c1('0x1f')]+_0x32eb3b[_0x28c1('0x22')];var _0x3556eb;if(_0x500f84>=_0xde189a){_0x500f84=_0xde189a;_0x3556eb=0xc8;}else{_0x3556eb=0xce;}_0x5ab92b[_0x28c1('0x1d')](_0x3556eb);return _0x5ab92b[_0x28c1('0x23')](_0x28c1('0x24'),_0x5543e2+'-'+_0x500f84+'/'+_0xde189a)[_0x28c1('0x1e')](_0xad2b9a);}return null;};}function saveUpdates(_0x4ba61a){return function(_0x3b9805){if(_0x3b9805){return _0x3b9805[_0x28c1('0x25')](_0x4ba61a)[_0x28c1('0x26')](function(_0x198b35){return _0x198b35;});}return null;};}function removeEntity(_0x501bc2){return function(_0x2c4f17){if(_0x2c4f17){return _0x2c4f17[_0x28c1('0x27')]()['then'](function(){_0x501bc2['status'](0xcc)[_0x28c1('0x28')]();});}};}function handleEntityNotFound(_0x4cb600){return function(_0x5a2df8){if(!_0x5a2df8){_0x4cb600['sendStatus'](0x194);}return _0x5a2df8;};}function handleError(_0x2aa4da,_0x4684f9){_0x4684f9=_0x4684f9||0x1f4;return function(_0x4f76d8){logger['error'](_0x4f76d8['stack']);if(_0x4f76d8['name']){delete _0x4f76d8['name'];}_0x2aa4da['status'](_0x4684f9)[_0x28c1('0x29')](_0x4f76d8);};}exports[_0x28c1('0x2a')]=function(_0x429ad9,_0x10180e){var _0x157499={},_0x19c2cd={},_0x3e4b54={'count':0x0,'rows':[]};var _0xaedddd=_[_0x28c1('0x2b')](db['MailMessage']['rawAttributes'],function(_0x3f34a3){return{'name':_0x3f34a3['fieldName'],'type':_0x3f34a3[_0x28c1('0x2c')][_0x28c1('0x2d')]};});_0x19c2cd[_0x28c1('0x2e')]=_[_0x28c1('0x2b')](_0xaedddd,_0x28c1('0x2f'));_0x19c2cd[_0x28c1('0x30')]=_[_0x28c1('0x31')](_0x429ad9[_0x28c1('0x30')]);_0x19c2cd[_0x28c1('0x32')]=_['intersection'](_0x19c2cd[_0x28c1('0x2e')],_0x19c2cd['query']);_0x157499[_0x28c1('0x33')]=_[_0x28c1('0x34')](_0x19c2cd[_0x28c1('0x2e')],qs[_0x28c1('0x35')](_0x429ad9['query'][_0x28c1('0x35')]));_0x157499['attributes']=_0x157499[_0x28c1('0x33')][_0x28c1('0x36')]?_0x157499[_0x28c1('0x33')]:_0x19c2cd[_0x28c1('0x2e')];if(!_0x429ad9['query']['hasOwnProperty'](_0x28c1('0x37'))){_0x157499[_0x28c1('0x22')]=qs[_0x28c1('0x22')](_0x429ad9[_0x28c1('0x30')][_0x28c1('0x22')]);_0x157499[_0x28c1('0x1f')]=qs[_0x28c1('0x1f')](_0x429ad9[_0x28c1('0x30')]['offset']);}_0x157499[_0x28c1('0x38')]=qs[_0x28c1('0x39')](_0x429ad9['query'][_0x28c1('0x39')]);_0x157499[_0x28c1('0x3a')]=qs[_0x28c1('0x32')](_[_0x28c1('0x3b')](_0x429ad9[_0x28c1('0x30')],_0x19c2cd[_0x28c1('0x32')]),_0xaedddd);if(_0x429ad9['query'][_0x28c1('0x3c')]){_0x157499['where']=_['merge'](_0x157499[_0x28c1('0x3a')],{'$or':_[_0x28c1('0x2b')](_0xaedddd,function(_0x3a5d16){if(_0x3a5d16['type']!=='VIRTUAL'){var _0x52c711={};_0x52c711[_0x3a5d16[_0x28c1('0x2f')]]={'$like':'%'+_0x429ad9[_0x28c1('0x30')]['filter']+'%'};return _0x52c711;}})});}_0x157499=_[_0x28c1('0x3d')]({},_0x157499,_0x429ad9[_0x28c1('0x3e')]);var _0x2eeffd={'where':_0x157499['where']};return db['MailMessage'][_0x28c1('0x21')](_0x2eeffd)[_0x28c1('0x26')](function(_0x41932d){_0x3e4b54[_0x28c1('0x21')]=_0x41932d;if(_0x429ad9[_0x28c1('0x30')][_0x28c1('0x3f')]){_0x157499[_0x28c1('0x40')]=[{'all':!![]}];}return db[_0x28c1('0x41')][_0x28c1('0x42')](_0x157499);})[_0x28c1('0x26')](function(_0x3680bf){_0x3e4b54[_0x28c1('0x43')]=_0x3680bf;return _0x3e4b54;})['then'](respondWithFilteredResult(_0x10180e,_0x157499))[_0x28c1('0x1c')](handleError(_0x10180e,null));};exports[_0x28c1('0x44')]=function(_0x5dfe53,_0x2162ed){var _0x51975b={'raw':!![],'where':{'id':_0x5dfe53[_0x28c1('0x45')]['id']}},_0x50fb26={};_0x50fb26[_0x28c1('0x2e')]=_[_0x28c1('0x31')](db['MailMessage'][_0x28c1('0x46')]);_0x50fb26[_0x28c1('0x30')]=_[_0x28c1('0x31')](_0x5dfe53[_0x28c1('0x30')]);_0x50fb26['filters']=_[_0x28c1('0x34')](_0x50fb26['model'],_0x50fb26[_0x28c1('0x30')]);_0x51975b['attributes']=_[_0x28c1('0x34')](_0x50fb26[_0x28c1('0x2e')],qs['fields'](_0x5dfe53[_0x28c1('0x30')][_0x28c1('0x35')]));_0x51975b[_0x28c1('0x33')]=_0x51975b[_0x28c1('0x33')][_0x28c1('0x36')]?_0x51975b['attributes']:_0x50fb26[_0x28c1('0x2e')];if(_0x5dfe53['query'][_0x28c1('0x3f')]){_0x51975b[_0x28c1('0x40')]=[{'all':!![]}];}_0x51975b=_[_0x28c1('0x3d')]({},_0x51975b,_0x5dfe53[_0x28c1('0x3e')]);return db['MailMessage'][_0x28c1('0x47')](_0x51975b)[_0x28c1('0x26')](handleEntityNotFound(_0x2162ed,null))[_0x28c1('0x26')](respondWithResult(_0x2162ed,null))['catch'](handleError(_0x2162ed,null));};exports[_0x28c1('0x25')]=function(_0x30ace9,_0x35e7a9){if(_0x30ace9['body']['id']){delete _0x30ace9[_0x28c1('0x48')]['id'];}return db[_0x28c1('0x41')][_0x28c1('0x47')]({'where':{'id':_0x30ace9[_0x28c1('0x45')]['id']}})['then'](handleEntityNotFound(_0x35e7a9,null))[_0x28c1('0x26')](saveUpdates(_0x30ace9[_0x28c1('0x48')],null))['then'](respondWithResult(_0x35e7a9,null))[_0x28c1('0x1c')](handleError(_0x35e7a9,null));};exports[_0x28c1('0x27')]=function(_0x166694,_0x37c7f4){return db['MailMessage'][_0x28c1('0x47')]({'where':{'id':_0x166694['params']['id']}})[_0x28c1('0x26')](handleEntityNotFound(_0x37c7f4,null))[_0x28c1('0x26')](removeEntity(_0x37c7f4,null))[_0x28c1('0x1c')](handleError(_0x37c7f4,null));};exports['describe']=function(_0x1fb9b3,_0x353405){return db[_0x28c1('0x41')][_0x28c1('0x49')]()['then'](respondWithResult(_0x353405,null))[_0x28c1('0x1c')](handleError(_0x353405,null));};exports[_0x28c1('0x4a')]=function(_0x32e03d,_0x4dd1d2){return db[_0x28c1('0x41')][_0x28c1('0x4a')](_0x32e03d[_0x28c1('0x48')])[_0x28c1('0x26')](function(_0x5312ed){if(_0x5312ed){if(_0x5312ed[_0x28c1('0x4b')]===_0x28c1('0x4c')&&!_0x5312ed[_0x28c1('0x4d')]){var _0x45a83d,_0x8e1793,_0x121478;if(_0x32e03d[_0x28c1('0x48')]['to']){_0x8e1793=_0x32e03d[_0x28c1('0x48')]['to'][_0x28c1('0x4e')](',')[0x0];}return db[_0x28c1('0x4f')][_0x28c1('0x50')]({'where':{'id':_0x5312ed[_0x28c1('0x51')]},'include':[{'model':db[_0x28c1('0x52')],'as':_0x28c1('0x53'),'include':[{'model':db[_0x28c1('0x54')],'as':_0x28c1('0x55'),'where':{'email':_0x8e1793},'limit':0x1,'order':[[_0x28c1('0x56'),_0x28c1('0x57')]]}]},{'model':db[_0x28c1('0x58')],'as':_0x28c1('0x59'),'raw':!![],'include':[{'model':db[_0x28c1('0x5a')],'as':_0x28c1('0x5a'),'raw':!![]}]}]})['then'](function(_0x53a875){_0x45a83d=_0x53a875;if(!_0x45a83d||!_0x45a83d[_0x28c1('0x59')])return;var _0x15b1fc=_0x45a83d[_0x28c1('0x5b')]();if(_0x32e03d[_0x28c1('0x48')]['attachments']&&_0x32e03d[_0x28c1('0x48')][_0x28c1('0x5c')]['length']){for(var _0x3226f0=0x0;_0x3226f0<_0x32e03d['body'][_0x28c1('0x5c')][_0x28c1('0x36')];_0x3226f0+=0x1){_0x32e03d['body'][_0x28c1('0x5c')][_0x3226f0]={'filename':_0x32e03d['body'][_0x28c1('0x5c')][_0x3226f0][_0x28c1('0x2f')],'path':path['join'](config[_0x28c1('0x5d')],_0x28c1('0x5e'),_0x32e03d[_0x28c1('0x48')][_0x28c1('0x5c')][_0x3226f0]['basename'])};}}_0x121478={'account':_0x15b1fc,'message':_0x32e03d['body']};return;})[_0x28c1('0x26')](function(){if(_0x45a83d[_0x28c1('0x53')]){if(_0x45a83d['List'][_0x28c1('0x55')][_0x28c1('0x36')]){return _0x45a83d[_0x28c1('0x53')][_0x28c1('0x55')][0x0];}else{return db[_0x28c1('0x54')][_0x28c1('0x4a')](_[_0x28c1('0x5f')](_0x32e03d['body'],{'firstName':_0x32e03d[_0x28c1('0x48')]['to'],'email':_0x32e03d[_0x28c1('0x48')]['to'],'phone':_0x32e03d['body']['to'],'ListId':_0x45a83d['ListId']}));}}else{throw new Error(_0x28c1('0x60'));}})[_0x28c1('0x26')](function(){if(_0x121478){return respondWithRpcPromise(_0x28c1('0x61'),_0x28c1('0x62'),_0x121478,client9003)['then'](function(_0x4552f9){return _0x5312ed[_0x28c1('0x25')]({'read':!![],'messageId':_0x4552f9[_0x28c1('0x63')],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});})[_0x28c1('0x1c')](function(_0x191442){logger['error']('%s',JSON[_0x28c1('0x16')](_0x191442));return _0x5312ed;});}return _0x5312ed;});}return _0x5312ed;}})[_0x28c1('0x26')](respondWithResult(_0x4dd1d2,0xc9))['catch'](handleError(_0x4dd1d2,null));};exports[_0x28c1('0x64')]=function(_0x36bbc3,_0x165598){var _0x2f3e70={'agent':{},'channel':_0x28c1('0x65')};if(_0x36bbc3['body']['id']){delete _0x36bbc3[_0x28c1('0x48')]['id'];}_0x36bbc3[_0x28c1('0x48')]['read']=!![];_0x36bbc3[_0x28c1('0x48')][_0x28c1('0x66')]=moment()[_0x28c1('0x67')](_0x28c1('0x68'));_0x36bbc3[_0x28c1('0x48')]['UserId']=_0x36bbc3[_0x28c1('0x48')][_0x28c1('0x69')]||_0x36bbc3[_0x28c1('0x6a')]['id'];_0x2f3e70['agent']['id']=_0x36bbc3[_0x28c1('0x48')][_0x28c1('0x69')];return db[_0x28c1('0x41')][_0x28c1('0x47')]({'where':{'id':_0x36bbc3[_0x28c1('0x45')]['id'],'UserId':null}})[_0x28c1('0x26')](handleEntityNotFound(_0x165598,null))['then'](saveUpdates(_0x36bbc3[_0x28c1('0x48')],null))[_0x28c1('0x26')](function(_0x4679a4){if(_0x4679a4){_0x2f3e70[_0x28c1('0x1a')]=_0x4679a4[_0x28c1('0x6b')]({'plain':!![]});return db[_0x28c1('0x6c')][_0x28c1('0x47')]({'where':{'id':_0x4679a4[_0x28c1('0x6d')]}});}return null;})[_0x28c1('0x26')](handleEntityNotFound(_0x165598,null))[_0x28c1('0x26')](function(_0x27abeb){if(_0x27abeb){return _0x27abeb['update']({'UserId':_0x36bbc3[_0x28c1('0x48')][_0x28c1('0x69')],'read1stAt':_[_0x28c1('0x6e')](_0x27abeb['read1stAt'])?moment()[_0x28c1('0x67')](_0x28c1('0x68')):undefined});}return null;})[_0x28c1('0x26')](function(_0x531385){if(_0x531385){_0x2f3e70[_0x28c1('0x6f')]=_0x531385[_0x28c1('0x6b')]({'plain':!![]});interaction_log['info'](_0x28c1('0x70'),_0x36bbc3[_0x28c1('0x6a')]['id'],_0x36bbc3[_0x28c1('0x6a')][_0x28c1('0x2f')],_0x36bbc3[_0x28c1('0x6a')][_0x28c1('0x71')],_0x2f3e70[_0x28c1('0x6f')]['id'],_0x36bbc3[_0x28c1('0x48')]?JSON['stringify'](_0x36bbc3['body']):_0x28c1('0x72'));return respondWithRpcPromise(_0x28c1('0x73'),_0x28c1('0x74'),_0x2f3e70);}return null;})[_0x28c1('0x26')](function(_0x36fa49){var _0x56bdcf=_0x28c1('0x75')+_0x36fa49['message']['ContactId'];return db['sequelize'][_0x28c1('0x30')](_0x56bdcf,{'type':db[_0x28c1('0x76')][_0x28c1('0x77')][_0x28c1('0x78')],'raw':!![]})['then'](function(_0x3088f0){return _0x3088f0;});})[_0x28c1('0x26')](function(_0x593821){if(_0x593821){_0x2f3e70[_0x28c1('0x1a')][_0x28c1('0x79')]=_0x593821[0x0];if(!_0x36bbc3[_0x28c1('0x48')]['UserId'])return;return db[_0x28c1('0x7a')]['find']({'where':{'id':_0x36bbc3[_0x28c1('0x48')][_0x28c1('0x69')],'role':_0x28c1('0x7b')},'attributes':['id','name',_0x28c1('0x7c'),_0x28c1('0x7d'),_0x28c1('0x7e')],'raw':!![]});}return null;})[_0x28c1('0x26')](function(_0x4e89d1){if(!_0x4e89d1)return null;_0x2f3e70[_0x28c1('0x1a')][_0x28c1('0x7b')]=_0x4e89d1;return _0x2f3e70;})[_0x28c1('0x26')](function(_0x460f33){if(_0x460f33){if(_0x36bbc3[_0x28c1('0x48')][_0x28c1('0x7f')]){_0x2f3e70[_0x28c1('0x1a')][_0x28c1('0x80')]=util[_0x28c1('0x67')](_0x28c1('0x81'),_0x36bbc3['user'][_0x28c1('0x2f')]);_0x2f3e70[_0x28c1('0x1a')]['channel']=_0x2f3e70['channel'];_0x2f3e70[_0x28c1('0x1a')][_0x28c1('0x82')]=_0x2f3e70[_0x28c1('0x83')];_0x2f3e70['message']['event']=_0x28c1('0x64');_0x2f3e70[_0x28c1('0x1a')][_0x28c1('0x48')]=htmlToText[_0x28c1('0x84')](_0x2f3e70[_0x28c1('0x1a')][_0x28c1('0x48')]);return respondWithRpcPromise(_0x28c1('0x85'),_0x28c1('0x85'),{'event':_0x28c1('0x86'),'message':_0x2f3e70[_0x28c1('0x1a')]},client9002)['then'](function(){return _0x2f3e70;});}return _0x2f3e70;}return null;})[_0x28c1('0x26')](respondWithResult(_0x165598,null))['catch'](handleError(_0x165598,null));};exports[_0x28c1('0x87')]=function(_0x1a5e36,_0xea38af){var _0x12d765={'agent':{},'channel':_0x28c1('0x65')};if(_0x1a5e36[_0x28c1('0x48')]['id']){delete _0x1a5e36['body']['id'];}_0x1a5e36[_0x28c1('0x48')][_0x28c1('0x69')]=_0x1a5e36['body'][_0x28c1('0x69')]||_0x1a5e36[_0x28c1('0x6a')]['id'];_0x12d765[_0x28c1('0x7b')]['id']=_0x1a5e36[_0x28c1('0x48')]['UserId'];return db['MailMessage']['find']({'where':{'id':_0x1a5e36['params']['id'],'UserId':null}})[_0x28c1('0x26')](handleEntityNotFound(_0xea38af,null))['then'](function(_0xa98682){if(_0xa98682){_0x12d765[_0x28c1('0x1a')]=_0xa98682['get']({'plain':!![]});return db[_0x28c1('0x6c')][_0x28c1('0x47')]({'where':{'id':_0xa98682['MailInteractionId']}});}return null;})[_0x28c1('0x26')](handleEntityNotFound(_0xea38af,null))[_0x28c1('0x26')](function(_0x4531d3){if(_0x4531d3){_0x12d765[_0x28c1('0x6f')]=_0x4531d3['get']({'plain':!![]});interaction_log['info'](_0x28c1('0x88'),_0x1a5e36['user']['id'],_0x1a5e36[_0x28c1('0x6a')][_0x28c1('0x2f')],_0x1a5e36['user'][_0x28c1('0x71')],_0x12d765[_0x28c1('0x6f')]['id'],_0x1a5e36['body']?JSON[_0x28c1('0x16')](_0x1a5e36[_0x28c1('0x48')]):_0x28c1('0x72'));return respondWithRpcPromise(_0x28c1('0x89'),'rejectMessage',_0x12d765);}return null;})[_0x28c1('0x26')](function(_0x4417b9){var _0x5cab43=_0x28c1('0x75')+_0x4417b9[_0x28c1('0x1a')][_0x28c1('0x8a')];return db[_0x28c1('0x8b')]['query'](_0x5cab43,{'type':db[_0x28c1('0x76')]['QueryTypes']['SELECT'],'raw':!![]})[_0x28c1('0x26')](function(_0x286274){return _0x286274;});})[_0x28c1('0x26')](function(_0x2aa468){if(_0x2aa468){_0x12d765['message'][_0x28c1('0x79')]=_0x2aa468[0x0];if(!_0x1a5e36['body'][_0x28c1('0x69')])return;return db[_0x28c1('0x7a')][_0x28c1('0x47')]({'where':{'id':_0x1a5e36[_0x28c1('0x48')][_0x28c1('0x69')],'role':_0x28c1('0x7b')},'attributes':['id',_0x28c1('0x2f'),_0x28c1('0x7c'),'email',_0x28c1('0x7e')],'raw':!![]});}return null;})[_0x28c1('0x26')](function(_0xdc4f9a){if(!_0xdc4f9a)return null;_0x12d765['message'][_0x28c1('0x7b')]=_0xdc4f9a;return _0x12d765;})[_0x28c1('0x26')](function(_0x522140){if(_0x522140){_0x522140['message']['interface']=util[_0x28c1('0x67')](_0x28c1('0x81'),_0x1a5e36[_0x28c1('0x6a')][_0x28c1('0x2f')]);_0x522140['message'][_0x28c1('0x83')]=_0x12d765[_0x28c1('0x83')];_0x522140[_0x28c1('0x1a')][_0x28c1('0x82')]=_0x12d765[_0x28c1('0x83')];_0x522140[_0x28c1('0x1a')]['event']='reject';_0x522140[_0x28c1('0x1a')][_0x28c1('0x48')]=htmlToText[_0x28c1('0x84')](_0x12d765[_0x28c1('0x1a')][_0x28c1('0x48')]);respondWithRpcPromise(_0x28c1('0x85'),_0x28c1('0x85'),{'event':_0x28c1('0x8c'),'message':_0x522140[_0x28c1('0x1a')]},client9002);return _0x12d765;}return null;})[_0x28c1('0x26')](respondWithResult(_0xea38af,null))[_0x28c1('0x1c')](handleError(_0xea38af,null));};exports[_0x28c1('0x8d')]=function(_0x35209d,_0x16b9ab){var _0x538961=moment()[_0x28c1('0x8e')]()[_0x28c1('0x8f')]();var _0x437ea0=path[_0x28c1('0x90')](config[_0x28c1('0x5d')],_0x28c1('0x91'),_0x28c1('0x92'),_0x28c1('0x93'));var _0x570568=path[_0x28c1('0x90')](config['root'],_0x28c1('0x91'),'files','attachments');var _0x5e9520=util[_0x28c1('0x67')](_0x28c1('0x94'),_0x538961);return db[_0x28c1('0x41')]['find']({'where':{'id':_0x35209d[_0x28c1('0x45')]['id']},'attributes':['id',_0x28c1('0x48'),'from','to','cc',_0x28c1('0x95'),'subject',_0x28c1('0x96')],'include':_0x35209d[_0x28c1('0x30')][_0x28c1('0x5c')]?[{'model':db[_0x28c1('0x97')],'as':_0x28c1('0x98')}]:undefined})[_0x28c1('0x26')](handleEntityNotFound(_0x16b9ab,null))[_0x28c1('0x26')](function(_0x3f88df){if(_0x3f88df){var _0x4c7247=_0x3f88df;var _0x27ae48={'from':_0x4c7247[_0x28c1('0x99')],'to':_0x4c7247['to'],'subject':_0x4c7247[_0x28c1('0x9a')],'html':htmlEntities[_0x28c1('0x9b')](_0x4c7247[_0x28c1('0x48')]),'headers':{'Date':moment(_0x4c7247[_0x28c1('0x96')])[_0x28c1('0x67')](_0x28c1('0x9c'))},'attachments':[]};if(_0x3f88df['cc']){_0x27ae48['headers']['Cc']=_0x3f88df['cc'];}if(_0x3f88df[_0x28c1('0x95')]){_0x27ae48[_0x28c1('0x9d')][_0x28c1('0x9e')]=_0x3f88df['bcc'];}return new BPromise(function(_0x8bf056,_0x4ed943){if(_0x3f88df[_0x28c1('0x98')]){for(var _0x629595=0x0;_0x629595<_0x3f88df[_0x28c1('0x98')]['length'];_0x629595++){var _0x392881=_0x3f88df[_0x28c1('0x98')][_0x629595];var _0x57f201=path[_0x28c1('0x90')](_0x570568,_0x392881['basename']);if(fs[_0x28c1('0x9f')](_0x57f201)){_0x27ae48[_0x28c1('0x5c')][_0x28c1('0xa0')]({'name':_0x392881['name'],'contentType':_0x392881['type'],'data':fs[_0x28c1('0xa1')](_0x57f201)});}}}emlformat['build'](_0x27ae48,function(_0x386c13,_0x38bf85){if(_0x386c13)return _0x4ed943(_0x386c13);fs[_0x28c1('0xa2')](path[_0x28c1('0x90')](_0x437ea0,_0x5e9520),_0x38bf85);return _0x8bf056(_0x38bf85);});});}})[_0x28c1('0x26')](function(_0x2e8737){if(_0x2e8737){return _0x16b9ab[_0x28c1('0x8d')](path[_0x28c1('0x90')](_0x437ea0,_0x5e9520),_0x5e9520,function(_0x14a5a7){if(!_0x14a5a7)fs[_0x28c1('0xa3')](path[_0x28c1('0x90')](_0x437ea0,_0x5e9520));});}})['catch'](handleError(_0x16b9ab,null));};
\ No newline at end of file
index 5e27aa9..5801303 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90e9=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailMessage'];(function(_0x1a58cf,_0x7ce26c){var _0x4b30cd=function(_0x56fc85){while(--_0x56fc85){_0x1a58cf['push'](_0x1a58cf['shift']());}};_0x4b30cd(++_0x7ce26c);}(_0x90e9,0xc3));var _0x990e=function(_0x2c12b0,_0x2a3db4){_0x2c12b0=_0x2c12b0-0x0;var _0x3008b4=_0x90e9[_0x2c12b0];return _0x3008b4;};'use strict';var EventEmitter=require(_0x990e('0x0'));var MailMessage=require(_0x990e('0x1'))['db'][_0x990e('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x990e('0x3')](0x0);var events={'afterCreate':_0x990e('0x4'),'afterUpdate':_0x990e('0x5'),'afterDestroy':_0x990e('0x6')};function emitEvent(_0x30f3f7){return function(_0x1ae98c,_0x423a99,_0x6e1fd4){MailMessageEvents[_0x990e('0x7')](_0x30f3f7+':'+_0x1ae98c['id'],_0x1ae98c);MailMessageEvents['emit'](_0x30f3f7,_0x1ae98c);_0x6e1fd4(null);};}for(var e in events){if(events[_0x990e('0x8')](e)){var event=events[e];MailMessage[_0x990e('0x9')](e,emitEvent(event));}}module[_0x990e('0xa')]=MailMessageEvents;
\ No newline at end of file
+var _0xf61b=['hasOwnProperty','hook','events','MailMessage','setMaxListeners','save','remove','emit'];(function(_0x204454,_0x39d2ea){var _0x247348=function(_0x4463f0){while(--_0x4463f0){_0x204454['push'](_0x204454['shift']());}};_0x247348(++_0x39d2ea);}(_0xf61b,0x7a));var _0xbf61=function(_0x4347cd,_0x562582){_0x4347cd=_0x4347cd-0x0;var _0x40c6d7=_0xf61b[_0x4347cd];return _0x40c6d7;};'use strict';var EventEmitter=require(_0xbf61('0x0'));var MailMessage=require('../../mysqldb')['db'][_0xbf61('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xbf61('0x2')](0x0);var events={'afterCreate':_0xbf61('0x3'),'afterUpdate':'update','afterDestroy':_0xbf61('0x4')};function emitEvent(_0x2b4446){return function(_0x3ee427,_0x13396d,_0x1ae431){MailMessageEvents[_0xbf61('0x5')](_0x2b4446+':'+_0x3ee427['id'],_0x3ee427);MailMessageEvents[_0xbf61('0x5')](_0x2b4446,_0x3ee427);_0x1ae431(null);};}for(var e in events){if(events[_0xbf61('0x6')](e)){var event=events[e];MailMessage[_0xbf61('0x7')](e,emitEvent(event));}}module['exports']=MailMessageEvents;
\ No newline at end of file
index d0fb72b..21d1080 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0cc=['plainBody','subject','FULLTEXT','body','fromString','get','direction','toLowerCase','out','isNil','UserId','findOne','MailInteractionId','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','html-to-text','rimraf','../../config/environment','./mailMessage.attributes','exports','define','MailMessage','mail_messages','messageId','fti_mail_messages'];(function(_0x2eed2e,_0x5abaf8){var _0x238f7f=function(_0x1240fa){while(--_0x1240fa){_0x2eed2e['push'](_0x2eed2e['shift']());}};_0x238f7f(++_0x5abaf8);}(_0xb0cc,0x171));var _0xcb0c=function(_0x47f4fc,_0xa6a99e){_0x47f4fc=_0x47f4fc-0x0;var _0x398320=_0xb0cc[_0x47f4fc];return _0x398320;};'use strict';var _=require(_0xcb0c('0x0'));var util=require(_0xcb0c('0x1'));var logger=require(_0xcb0c('0x2'))('api');var moment=require(_0xcb0c('0x3'));var BPromise=require(_0xcb0c('0x4'));var rp=require('request-promise');var htmlToText=require(_0xcb0c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcb0c('0x6'));var config=require(_0xcb0c('0x7'));var attributes=require(_0xcb0c('0x8'));module[_0xcb0c('0x9')]=function(_0x17d6ef,_0x3377dc){return _0x17d6ef[_0xcb0c('0xa')](_0xcb0c('0xb'),attributes,{'tableName':_0xcb0c('0xc'),'paranoid':![],'indexes':[{'name':_0xcb0c('0xd'),'fields':[_0xcb0c('0xd')]},{'name':_0xcb0c('0xe'),'fields':[_0xcb0c('0xf'),_0xcb0c('0x10')],'type':_0xcb0c('0x11')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x4b0172,_0x1fd0fb,_0x4124c0){if(_0x4b0172[_0xcb0c('0x12')]){_0x4b0172[_0xcb0c('0xf')]=htmlToText[_0xcb0c('0x13')](_0x4b0172[_0xcb0c('0x12')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x4124c0(null,_0x1fd0fb);},'afterCreate':function(_0x3857c9,_0x22f9ad,_0x2d12b){var _0x3c184d=_0x17d6ef['models'];var _0x53f749=_0x3857c9[_0xcb0c('0x14')]({'plain':!![]});if(_0x53f749[_0xcb0c('0x15')][_0xcb0c('0x16')]()==='in'||_0x53f749[_0xcb0c('0x15')]['toLowerCase']()===_0xcb0c('0x17')&&!_0x53f749['secret']&&!_[_0xcb0c('0x18')](_0x53f749[_0xcb0c('0x19')])){_0x3c184d['MailInteraction'][_0xcb0c('0x1a')]({'where':{'id':_0x53f749[_0xcb0c('0x1b')]}})['then'](function(_0x3b9dd4){if(_0x3b9dd4){_0x3b9dd4['update']({'lastMsgAt':_0x53f749['createdAt'],'lastMsgDirection':_0x53f749[_0xcb0c('0x15')][_0xcb0c('0x16')]()});}})[_0xcb0c('0x1c')](function(_0x16ea38){console[_0xcb0c('0x1d')](_0x16ea38);});}_0x2d12b();}},'charset':_0xcb0c('0x1e'),'collate':_0xcb0c('0x1f')});};
\ No newline at end of file
+var _0x7cc3=['createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','html-to-text','path','rimraf','../../config/environment','./mailMessage.attributes','exports','define','MailMessage','mail_messages','messageId','fti_mail_messages','subject','FULLTEXT','body','plainBody','models','get','direction','toLowerCase','out','isNil','UserId','MailInteraction','findOne','MailInteractionId','update'];(function(_0x4f828a,_0x5a4306){var _0x12ae24=function(_0x32ff9a){while(--_0x32ff9a){_0x4f828a['push'](_0x4f828a['shift']());}};_0x12ae24(++_0x5a4306);}(_0x7cc3,0x19c));var _0x37cc=function(_0x187856,_0x2ecf29){_0x187856=_0x187856-0x0;var _0x44702e=_0x7cc3[_0x187856];return _0x44702e;};'use strict';var _=require(_0x37cc('0x0'));var util=require(_0x37cc('0x1'));var logger=require(_0x37cc('0x2'))(_0x37cc('0x3'));var moment=require(_0x37cc('0x4'));var BPromise=require(_0x37cc('0x5'));var rp=require('request-promise');var htmlToText=require(_0x37cc('0x6'));var fs=require('fs');var path=require(_0x37cc('0x7'));var rimraf=require(_0x37cc('0x8'));var config=require(_0x37cc('0x9'));var attributes=require(_0x37cc('0xa'));module[_0x37cc('0xb')]=function(_0x3ef344,_0x4139a0){return _0x3ef344[_0x37cc('0xc')](_0x37cc('0xd'),attributes,{'tableName':_0x37cc('0xe'),'paranoid':![],'indexes':[{'name':_0x37cc('0xf'),'fields':['messageId']},{'name':_0x37cc('0x10'),'fields':['plainBody',_0x37cc('0x11')],'type':_0x37cc('0x12')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5ccec4,_0x14202c,_0x823c9d){if(_0x5ccec4[_0x37cc('0x13')]){_0x5ccec4[_0x37cc('0x14')]=htmlToText['fromString'](_0x5ccec4[_0x37cc('0x13')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x823c9d(null,_0x14202c);},'afterCreate':function(_0xa685,_0x166d82,_0x49c116){var _0x292448=_0x3ef344[_0x37cc('0x15')];var _0x2eb7ec=_0xa685[_0x37cc('0x16')]({'plain':!![]});if(_0x2eb7ec[_0x37cc('0x17')]['toLowerCase']()==='in'||_0x2eb7ec[_0x37cc('0x17')][_0x37cc('0x18')]()===_0x37cc('0x19')&&!_0x2eb7ec['secret']&&!_[_0x37cc('0x1a')](_0x2eb7ec[_0x37cc('0x1b')])){_0x292448[_0x37cc('0x1c')][_0x37cc('0x1d')]({'where':{'id':_0x2eb7ec[_0x37cc('0x1e')]}})['then'](function(_0x39018f){if(_0x39018f){_0x39018f[_0x37cc('0x1f')]({'lastMsgAt':_0x2eb7ec[_0x37cc('0x20')],'lastMsgDirection':_0x2eb7ec['direction'][_0x37cc('0x18')]()});}})[_0x37cc('0x21')](function(_0x2e2ff9){console[_0x37cc('0x22')](_0x2e2ff9);});}_0x49c116();}},'charset':_0x37cc('0x23'),'collate':_0x37cc('0x24')});};
\ No newline at end of file
index 55afeca..13c2d42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7b4=['randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','debug','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','MailMessage,\x20%s,\x20%s','message','result','catch','MailMessage','create','body','options','raw','CreateMailMessage','lodash','bluebird'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0xf7b4,0x152));var _0x4f7b=function(_0x57df9c,_0x395831){_0x57df9c=_0x57df9c-0x0;var _0x487ae2=_0xf7b4[_0x57df9c];return _0x487ae2;};'use strict';var _=require(_0x4f7b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x4f7b('0x1'));var rs=require(_0x4f7b('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4f7b('0x3'));var logger=require(_0x4f7b('0x4'))(_0x4f7b('0x5'));var config=require(_0x4f7b('0x6'));var jayson=require(_0x4f7b('0x7'));var client=jayson[_0x4f7b('0x8')][_0x4f7b('0x9')]({'port':0x232a});config[_0x4f7b('0xa')]=_[_0x4f7b('0xb')](config[_0x4f7b('0xa')],{'host':_0x4f7b('0xc'),'port':0x18eb});var socket=require(_0x4f7b('0xd'))(new Redis(config[_0x4f7b('0xa')]));require('./mailMessage.socket')[_0x4f7b('0xe')](socket);function respondWithRpcPromise(_0x1016e0,_0x479208,_0xdd1aab){return new BPromise(function(_0x3a3d6c,_0x408e01){return client[_0x4f7b('0xf')](_0x1016e0,_0xdd1aab)[_0x4f7b('0x10')](function(_0x55d69f){logger[_0x4f7b('0x11')]('MailMessage,\x20%s,\x20%s',_0x479208,'request\x20sent');logger[_0x4f7b('0x12')](_0x4f7b('0x13'),_0x479208,_0x4f7b('0x14'),JSON[_0x4f7b('0x15')](_0x55d69f));if(_0x55d69f['error']){if(_0x55d69f[_0x4f7b('0x16')][_0x4f7b('0x17')]===0x1f4){logger[_0x4f7b('0x16')](_0x4f7b('0x18'),_0x479208,_0x55d69f[_0x4f7b('0x16')][_0x4f7b('0x19')]);return _0x408e01(_0x55d69f[_0x4f7b('0x16')][_0x4f7b('0x19')]);}logger[_0x4f7b('0x16')](_0x4f7b('0x18'),_0x479208,_0x55d69f[_0x4f7b('0x16')][_0x4f7b('0x19')]);return _0x3a3d6c(_0x55d69f['error'][_0x4f7b('0x19')]);}else{logger['info']('MailMessage,\x20%s,\x20%s',_0x479208,_0x4f7b('0x14'));_0x3a3d6c(_0x55d69f[_0x4f7b('0x1a')]['message']);}})[_0x4f7b('0x1b')](function(_0x24c460){logger[_0x4f7b('0x16')](_0x4f7b('0x18'),_0x479208,_0x24c460);_0x408e01(_0x24c460);});});}exports['CreateMailMessage']=function(_0x1daa79){var _0x5adacb=this;return new Promise(function(_0x41cf36,_0x12374b){return db[_0x4f7b('0x1c')][_0x4f7b('0x1d')](_0x1daa79[_0x4f7b('0x1e')],{'raw':_0x1daa79[_0x4f7b('0x1f')]?_0x1daa79[_0x4f7b('0x1f')][_0x4f7b('0x20')]===undefined?!![]:![]:!![]})[_0x4f7b('0x10')](function(_0x5508bd){logger[_0x4f7b('0x11')](_0x4f7b('0x21'),_0x1daa79);logger[_0x4f7b('0x12')]('CreateMailMessage',_0x1daa79,JSON[_0x4f7b('0x15')](_0x5508bd));_0x41cf36(_0x5508bd);})[_0x4f7b('0x1b')](function(_0x5d22f4){logger[_0x4f7b('0x16')]('CreateMailMessage',_0x5d22f4[_0x4f7b('0x19')],_0x1daa79);_0x12374b(_0x5adacb[_0x4f7b('0x16')](0x1f4,_0x5d22f4[_0x4f7b('0x19')]));});});};
\ No newline at end of file
+var _0xe820=['client','http','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','request','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','CreateMailMessage','body','options','raw','lodash','moment','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise'];(function(_0x1d3407,_0x172f26){var _0x119c94=function(_0xe9fc6c){while(--_0xe9fc6c){_0x1d3407['push'](_0x1d3407['shift']());}};_0x119c94(++_0x172f26);}(_0xe820,0xd2));var _0x0e82=function(_0x57a848,_0x54698b){_0x57a848=_0x57a848-0x0;var _0x42d9d3=_0xe820[_0x57a848];return _0x42d9d3;};'use strict';var _=require(_0x0e82('0x0'));var util=require('util');var moment=require(_0x0e82('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0e82('0x2'));var db=require(_0x0e82('0x3'))['db'];var utils=require(_0x0e82('0x4'));var logger=require('../../config/logger')(_0x0e82('0x5'));var config=require('../../config/environment');var jayson=require(_0x0e82('0x6'));var client=jayson[_0x0e82('0x7')][_0x0e82('0x8')]({'port':0x232a});config[_0x0e82('0x9')]=_[_0x0e82('0xa')](config['redis'],{'host':_0x0e82('0xb'),'port':0x18eb});var socket=require(_0x0e82('0xc'))(new Redis(config[_0x0e82('0x9')]));require(_0x0e82('0xd'))[_0x0e82('0xe')](socket);function respondWithRpcPromise(_0x4b3302,_0x43b550,_0x38b362){return new BPromise(function(_0x2dfacf,_0x10b2e2){return client[_0x0e82('0xf')](_0x4b3302,_0x38b362)[_0x0e82('0x10')](function(_0x270173){logger['info'](_0x0e82('0x11'),_0x43b550,_0x0e82('0x12'));logger[_0x0e82('0x13')](_0x0e82('0x14'),_0x43b550,_0x0e82('0x12'),JSON[_0x0e82('0x15')](_0x270173));if(_0x270173['error']){if(_0x270173[_0x0e82('0x16')]['code']===0x1f4){logger['error'](_0x0e82('0x11'),_0x43b550,_0x270173['error']['message']);return _0x10b2e2(_0x270173['error'][_0x0e82('0x17')]);}logger['error']('MailMessage,\x20%s,\x20%s',_0x43b550,_0x270173[_0x0e82('0x16')]['message']);return _0x2dfacf(_0x270173[_0x0e82('0x16')][_0x0e82('0x17')]);}else{logger[_0x0e82('0x18')](_0x0e82('0x11'),_0x43b550,'request\x20sent');_0x2dfacf(_0x270173[_0x0e82('0x19')][_0x0e82('0x17')]);}})[_0x0e82('0x1a')](function(_0xc3d043){logger[_0x0e82('0x16')](_0x0e82('0x11'),_0x43b550,_0xc3d043);_0x10b2e2(_0xc3d043);});});}exports[_0x0e82('0x1b')]=function(_0x3735c0){var _0xc9f7ac=this;return new Promise(function(_0x224455,_0x5903c){return db['MailMessage']['create'](_0x3735c0[_0x0e82('0x1c')],{'raw':_0x3735c0[_0x0e82('0x1d')]?_0x3735c0[_0x0e82('0x1d')][_0x0e82('0x1e')]===undefined?!![]:![]:!![]})[_0x0e82('0x10')](function(_0x1bdad4){logger[_0x0e82('0x18')](_0x0e82('0x1b'),_0x3735c0);logger['debug'](_0x0e82('0x1b'),_0x3735c0,JSON[_0x0e82('0x15')](_0x1bdad4));_0x224455(_0x1bdad4);})[_0x0e82('0x1a')](function(_0x24f883){logger['error'](_0x0e82('0x1b'),_0x24f883[_0x0e82('0x17')],_0x3735c0);_0x5903c(_0xc9f7ac[_0x0e82('0x16')](0x1f4,_0x24f883[_0x0e82('0x17')]));});});};
\ No newline at end of file
index 2c9d3cb..409d8b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18ea=['emit','removeListener','length','mailMessage:','./mailMessage.events','save'];(function(_0x4a9f33,_0x39bb5e){var _0x307e44=function(_0x58fdd7){while(--_0x58fdd7){_0x4a9f33['push'](_0x4a9f33['shift']());}};_0x307e44(++_0x39bb5e);}(_0x18ea,0xbe));var _0xa18e=function(_0x1cca4a,_0x987d60){_0x1cca4a=_0x1cca4a-0x0;var _0x42d40e=_0x18ea[_0x1cca4a];return _0x42d40e;};'use strict';var MailMessageEvents=require(_0xa18e('0x0'));var events=[_0xa18e('0x1'),'remove','update'];function createListener(_0x6a6fef,_0x4413a5){return function(_0x5547dd){_0x4413a5[_0xa18e('0x2')](_0x6a6fef,_0x5547dd);};}function removeListener(_0x52c1b6,_0x564724){return function(){MailMessageEvents[_0xa18e('0x3')](_0x52c1b6,_0x564724);};}exports['register']=function(_0x7563){for(var _0x1c34b7=0x0,_0x30a8e3=events[_0xa18e('0x4')];_0x1c34b7<_0x30a8e3;_0x1c34b7++){var _0x258027=events[_0x1c34b7];var _0x5d6051=createListener(_0xa18e('0x5')+_0x258027,_0x7563);MailMessageEvents['on'](_0x258027,_0x5d6051);}};
\ No newline at end of file
+var _0x9fd4=['emit','removeListener','length','mailMessage:','save','update'];(function(_0x346f68,_0xb45d9d){var _0x2d1803=function(_0x3e5b6a){while(--_0x3e5b6a){_0x346f68['push'](_0x346f68['shift']());}};_0x2d1803(++_0xb45d9d);}(_0x9fd4,0xe8));var _0x49fd=function(_0x2a3689,_0x5269be){_0x2a3689=_0x2a3689-0x0;var _0x3915d3=_0x9fd4[_0x2a3689];return _0x3915d3;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0x49fd('0x0'),'remove',_0x49fd('0x1')];function createListener(_0x2c0920,_0x50d4fd){return function(_0x51965c){_0x50d4fd[_0x49fd('0x2')](_0x2c0920,_0x51965c);};}function removeListener(_0x5c5d90,_0x5e9978){return function(){MailMessageEvents[_0x49fd('0x3')](_0x5c5d90,_0x5e9978);};}exports['register']=function(_0x3d60da){for(var _0x1958ae=0x0,_0x38cbd2=events[_0x49fd('0x4')];_0x1958ae<_0x38cbd2;_0x1958ae++){var _0x31fb5d=events[_0x1958ae];var _0x3fbb93=createListener(_0x49fd('0x5')+_0x31fb5d,_0x3d60da);MailMessageEvents['on'](_0x31fb5d,_0x3fbb93);}};
\ No newline at end of file
index 180273a..329ed34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0907=['put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','create','addTeams','addAgents'];(function(_0x1dd922,_0x490e6e){var _0x28561f=function(_0x57031a){while(--_0x57031a){_0x1dd922['push'](_0x1dd922['shift']());}};_0x28561f(++_0x490e6e);}(_0x0907,0xc8));var _0x7090=function(_0x1c01f3,_0x509214){_0x1c01f3=_0x1c01f3-0x0;var _0x4b4b6f=_0x0907[_0x1c01f3];return _0x4b4b6f;};'use strict';var multer=require(_0x7090('0x0'));var util=require(_0x7090('0x1'));var path=require(_0x7090('0x2'));var timeout=require(_0x7090('0x3'));var express=require(_0x7090('0x4'));var router=express[_0x7090('0x5')]();var fs_extra=require(_0x7090('0x6'));var auth=require(_0x7090('0x7'));var interaction=require(_0x7090('0x8'));var config=require(_0x7090('0x9'));var controller=require('./mailQueue.controller');router[_0x7090('0xa')]('/',auth[_0x7090('0xb')](),controller[_0x7090('0xc')]);router['get']('/describe',auth[_0x7090('0xb')](),controller[_0x7090('0xd')]);router[_0x7090('0xa')](_0x7090('0xe'),auth[_0x7090('0xb')](),controller['show']);router[_0x7090('0xa')](_0x7090('0xf'),auth[_0x7090('0xb')](),controller[_0x7090('0x10')]);router[_0x7090('0xa')](_0x7090('0x11'),auth[_0x7090('0xb')](),controller[_0x7090('0x12')]);router[_0x7090('0xa')](_0x7090('0x13'),auth[_0x7090('0xb')](),controller[_0x7090('0x14')]);router['post']('/',auth[_0x7090('0xb')](),controller[_0x7090('0x15')]);router['post'](_0x7090('0x11'),auth[_0x7090('0xb')](),controller[_0x7090('0x16')]);router['post'](_0x7090('0x13'),auth[_0x7090('0xb')](),controller[_0x7090('0x17')]);router[_0x7090('0x18')](_0x7090('0xe'),auth[_0x7090('0xb')](),controller[_0x7090('0x19')]);router[_0x7090('0x1a')]('/:id',auth[_0x7090('0xb')](),controller['destroy']);router[_0x7090('0x1a')](_0x7090('0x11'),auth[_0x7090('0xb')](),controller['removeTeams']);router['delete'](_0x7090('0x13'),auth[_0x7090('0xb')](),controller['removeAgents']);module[_0x7090('0x1b')]=router;
\ No newline at end of file
+var _0x3851=['getMembers','/:id/teams','/:id/users','getAgents','post','create','addTeams','update','destroy','delete','removeAgents','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./mailQueue.controller','isAuthenticated','index','get','/describe','describe','/:id','show'];(function(_0x38b14f,_0xd08fa8){var _0x22a324=function(_0x4bbb05){while(--_0x4bbb05){_0x38b14f['push'](_0x38b14f['shift']());}};_0x22a324(++_0xd08fa8);}(_0x3851,0x129));var _0x1385=function(_0x4beedf,_0x293907){_0x4beedf=_0x4beedf-0x0;var _0x232281=_0x3851[_0x4beedf];return _0x232281;};'use strict';var multer=require(_0x1385('0x0'));var util=require(_0x1385('0x1'));var path=require(_0x1385('0x2'));var timeout=require(_0x1385('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x1385('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1385('0x5'));var config=require(_0x1385('0x6'));var controller=require(_0x1385('0x7'));router['get']('/',auth[_0x1385('0x8')](),controller[_0x1385('0x9')]);router[_0x1385('0xa')](_0x1385('0xb'),auth[_0x1385('0x8')](),controller[_0x1385('0xc')]);router[_0x1385('0xa')](_0x1385('0xd'),auth[_0x1385('0x8')](),controller[_0x1385('0xe')]);router['get']('/:id/members',auth[_0x1385('0x8')](),controller[_0x1385('0xf')]);router[_0x1385('0xa')](_0x1385('0x10'),auth['isAuthenticated'](),controller['getTeams']);router['get'](_0x1385('0x11'),auth[_0x1385('0x8')](),controller[_0x1385('0x12')]);router[_0x1385('0x13')]('/',auth[_0x1385('0x8')](),controller[_0x1385('0x14')]);router[_0x1385('0x13')](_0x1385('0x10'),auth[_0x1385('0x8')](),controller[_0x1385('0x15')]);router['post']('/:id/users',auth[_0x1385('0x8')](),controller['addAgents']);router['put'](_0x1385('0xd'),auth[_0x1385('0x8')](),controller[_0x1385('0x16')]);router['delete'](_0x1385('0xd'),auth['isAuthenticated'](),controller[_0x1385('0x17')]);router[_0x1385('0x18')](_0x1385('0x10'),auth['isAuthenticated'](),controller['removeTeams']);router[_0x1385('0x18')](_0x1385('0x11'),auth['isAuthenticated'](),controller[_0x1385('0x19')]);module['exports']=router;
\ No newline at end of file
index 8cbe612..b735766 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x722b=['beepall','exports','STRING','name','ENUM'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x722b,0xf6));var _0xb722=function(_0x29a14e,_0x52bc79){_0x29a14e=_0x29a14e-0x0;var _0x4b8a21=_0x722b[_0x29a14e];return _0x4b8a21;};'use strict';var Sequelize=require('sequelize');module[_0xb722('0x0')]={'name':{'type':Sequelize[_0xb722('0x1')],'unique':_0xb722('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xb722('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xb722('0x3')]('rrmemory',_0xb722('0x4'),'roundrobin')}};
\ No newline at end of file
+var _0x31b6=['sequelize','exports','STRING','name','rrmemory','beepall'];(function(_0x112fe3,_0x16b642){var _0x1ec903=function(_0x1539eb){while(--_0x1539eb){_0x112fe3['push'](_0x112fe3['shift']());}};_0x1ec903(++_0x16b642);}(_0x31b6,0xf6));var _0x631b=function(_0x10d098,_0x66d37){_0x10d098=_0x10d098-0x0;var _0x4d8848=_0x31b6[_0x10d098];return _0x4d8848;};'use strict';var Sequelize=require(_0x631b('0x0'));module[_0x631b('0x1')]={'name':{'type':Sequelize[_0x631b('0x2')],'unique':_0x631b('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x631b('0x4'),_0x631b('0x5'),'roundrobin')}};
\ No newline at end of file
index e305e53..9461e07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e04=['UserId','agent','mailPause','updatedAt','createdAt','format','%s/%s','Team','getTeams','addTeams','ids','User','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','emit','userMailQueue:save','removeTeams','field','team_has_mail_queues','user_has_teams','MailQueueId\x20=\x20?','clone','toString','QueryTypes','every','TeamId','includes','all','compact','value','isEmpty','removeAgents','forEach','userMailQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','./mailQueue.socket','register','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','save','then','destroy','get','MailQueues','UserProfileResource','error','send','index','MailQueue','rawAttributes','fieldName','type','model','map','name','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','where','VIRTUAL','filter','merge','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','UserMailQueue','MailQueueId','findAndCountAll'];(function(_0x95975e,_0x51412c){var _0x5d4933=function(_0x1cb2da){while(--_0x1cb2da){_0x95975e['push'](_0x95975e['shift']());}};_0x5d4933(++_0x51412c);}(_0x7e04,0x1cf));var _0x47e0=function(_0x123601,_0x546b61){_0x123601=_0x123601-0x0;var _0x2d179b=_0x7e04[_0x123601];return _0x2d179b;};'use strict';var emlformat=require(_0x47e0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x47e0('0x1'));var jsonpatch=require(_0x47e0('0x2'));var rp=require(_0x47e0('0x3'));var moment=require('moment');var BPromise=require(_0x47e0('0x4'));var Mustache=require(_0x47e0('0x5'));var util=require(_0x47e0('0x6'));var path=require(_0x47e0('0x7'));var sox=require(_0x47e0('0x8'));var csv=require(_0x47e0('0x9'));var ejs=require(_0x47e0('0xa'));var fs=require('fs');var fs_extra=require(_0x47e0('0xb'));var _=require(_0x47e0('0xc'));var squel=require(_0x47e0('0xd'));var crypto=require(_0x47e0('0xe'));var jsforce=require(_0x47e0('0xf'));var deskjs=require(_0x47e0('0x10'));var toCsv=require(_0x47e0('0x9'));var querystring=require(_0x47e0('0x11'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x47e0('0x12'));var qs=require(_0x47e0('0x13'));var as=require(_0x47e0('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x47e0('0x15'))('api');var utils=require(_0x47e0('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x47e0('0x17'));var db=require(_0x47e0('0x18'))['db'];config[_0x47e0('0x19')]=_['defaults'](config[_0x47e0('0x19')],{'host':_0x47e0('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x47e0('0x19')]));require(_0x47e0('0x1b'))[_0x47e0('0x1c')](socket);function respondWithStatusCode(_0x23fb55,_0x3a62ee){_0x3a62ee=_0x3a62ee||0xcc;return function(_0x52860f){if(_0x52860f){return _0x23fb55[_0x47e0('0x1d')](_0x3a62ee);}return _0x23fb55[_0x47e0('0x1e')](_0x3a62ee)[_0x47e0('0x1f')]();};}function respondWithResult(_0x248d7f,_0x1a81c2){_0x1a81c2=_0x1a81c2||0xc8;return function(_0x5c6684){if(_0x5c6684){return _0x248d7f[_0x47e0('0x1e')](_0x1a81c2)[_0x47e0('0x20')](_0x5c6684);}};}function respondWithFilteredResult(_0x5ab56f,_0x711477){return function(_0x4f9669){if(_0x4f9669){var _0x4f334e=typeof _0x711477[_0x47e0('0x21')]==='undefined'&&typeof _0x711477[_0x47e0('0x22')]==='undefined';var _0x47f225=_0x4f9669[_0x47e0('0x23')];var _0x472d1a=_0x4f334e?0x0:_0x711477[_0x47e0('0x21')];var _0x2177ee=_0x4f334e?_0x4f9669[_0x47e0('0x23')]:_0x711477['offset']+_0x711477['limit'];var _0x37b16d;if(_0x2177ee>=_0x47f225){_0x2177ee=_0x47f225;_0x37b16d=0xc8;}else{_0x37b16d=0xce;}_0x5ab56f[_0x47e0('0x1e')](_0x37b16d);return _0x5ab56f[_0x47e0('0x24')](_0x47e0('0x25'),_0x472d1a+'-'+_0x2177ee+'/'+_0x47f225)[_0x47e0('0x20')](_0x4f9669);}return null;};}function patchUpdates(_0x5d9a82){return function(_0x5ce453){try{jsonpatch[_0x47e0('0x26')](_0x5ce453,_0x5d9a82,!![]);}catch(_0x15d002){return BPromise['reject'](_0x15d002);}return _0x5ce453[_0x47e0('0x27')]();};}function saveUpdates(_0x47444e,_0x5700f5){return function(_0x3c3389){if(_0x3c3389){return _0x3c3389['update'](_0x47444e)[_0x47e0('0x28')](function(_0x42ca4d){return _0x42ca4d;});}return null;};}function removeEntity(_0x159a12,_0x2c84ca){return function(_0xce496a){if(_0xce496a){return _0xce496a[_0x47e0('0x29')]()[_0x47e0('0x28')](function(){var _0x30db19=_0xce496a[_0x47e0('0x2a')]({'plain':!![]});var _0x1fd4b8=_0x47e0('0x2b');return db[_0x47e0('0x2c')][_0x47e0('0x29')]({'where':{'type':_0x1fd4b8,'resourceId':_0x30db19['id']}})['then'](function(){return _0xce496a;});})['then'](function(){_0x159a12[_0x47e0('0x1e')](0xcc)[_0x47e0('0x1f')]();});}};}function handleEntityNotFound(_0x2a2b77,_0x1c8c75){return function(_0x22edc2){if(!_0x22edc2){_0x2a2b77['sendStatus'](0x194);}return _0x22edc2;};}function handleError(_0x38dd99,_0x770d1f){_0x770d1f=_0x770d1f||0x1f4;return function(_0x3960e3){logger[_0x47e0('0x2d')](_0x3960e3['stack']);if(_0x3960e3['name']){delete _0x3960e3['name'];}_0x38dd99[_0x47e0('0x1e')](_0x770d1f)[_0x47e0('0x2e')](_0x3960e3);};}exports[_0x47e0('0x2f')]=function(_0x565390,_0x2ba50e){var _0x1ff1f1={},_0x537296={},_0x1d51a2={'count':0x0,'rows':[]};var _0xbc6c2b=_['map'](db[_0x47e0('0x30')][_0x47e0('0x31')],function(_0x232eab){return{'name':_0x232eab[_0x47e0('0x32')],'type':_0x232eab[_0x47e0('0x33')]['key']};});_0x537296[_0x47e0('0x34')]=_[_0x47e0('0x35')](_0xbc6c2b,_0x47e0('0x36'));_0x537296['query']=_[_0x47e0('0x37')](_0x565390[_0x47e0('0x38')]);_0x537296[_0x47e0('0x39')]=_[_0x47e0('0x3a')](_0x537296[_0x47e0('0x34')],_0x537296[_0x47e0('0x38')]);_0x1ff1f1['attributes']=_['intersection'](_0x537296['model'],qs['fields'](_0x565390['query'][_0x47e0('0x3b')]));_0x1ff1f1['attributes']=_0x1ff1f1[_0x47e0('0x3c')][_0x47e0('0x3d')]?_0x1ff1f1[_0x47e0('0x3c')]:_0x537296['model'];if(!_0x565390[_0x47e0('0x38')][_0x47e0('0x3e')](_0x47e0('0x3f'))){_0x1ff1f1[_0x47e0('0x22')]=qs['limit'](_0x565390[_0x47e0('0x38')]['limit']);_0x1ff1f1[_0x47e0('0x21')]=qs[_0x47e0('0x21')](_0x565390[_0x47e0('0x38')][_0x47e0('0x21')]);}_0x1ff1f1[_0x47e0('0x40')]=qs['sort'](_0x565390[_0x47e0('0x38')][_0x47e0('0x41')]);_0x1ff1f1['where']=qs['filters'](_[_0x47e0('0x42')](_0x565390['query'],_0x537296[_0x47e0('0x39')]),_0xbc6c2b);if(_0x565390[_0x47e0('0x38')]['filter']){_0x1ff1f1[_0x47e0('0x43')]=_['merge'](_0x1ff1f1[_0x47e0('0x43')],{'$or':_[_0x47e0('0x35')](_0xbc6c2b,function(_0x2a2c25){if(_0x2a2c25[_0x47e0('0x33')]!==_0x47e0('0x44')){var _0x47cd85={};_0x47cd85[_0x2a2c25['name']]={'$like':'%'+_0x565390[_0x47e0('0x38')][_0x47e0('0x45')]+'%'};return _0x47cd85;}})});}_0x1ff1f1=_[_0x47e0('0x46')]({},_0x1ff1f1,_0x565390[_0x47e0('0x47')]);var _0x17e4bb={'where':_0x1ff1f1[_0x47e0('0x43')]};return db[_0x47e0('0x30')][_0x47e0('0x23')](_0x17e4bb)[_0x47e0('0x28')](function(_0x346cac){_0x1d51a2[_0x47e0('0x23')]=_0x346cac;if(_0x565390[_0x47e0('0x38')]['includeAll']){_0x1ff1f1[_0x47e0('0x48')]=[{'all':!![]}];}return db[_0x47e0('0x30')][_0x47e0('0x49')](_0x1ff1f1);})[_0x47e0('0x28')](function(_0x2f8d9c){_0x1d51a2[_0x47e0('0x4a')]=_0x2f8d9c;return _0x1d51a2;})[_0x47e0('0x28')](respondWithFilteredResult(_0x2ba50e,_0x1ff1f1))[_0x47e0('0x4b')](handleError(_0x2ba50e,null));};exports[_0x47e0('0x4c')]=function(_0x4e1812,_0x5e7cb5){var _0x40c8d1={'raw':!![],'where':{'id':_0x4e1812[_0x47e0('0x4d')]['id']}},_0x20227b={};_0x20227b['model']=_[_0x47e0('0x37')](db[_0x47e0('0x30')][_0x47e0('0x31')]);_0x20227b[_0x47e0('0x38')]=_[_0x47e0('0x37')](_0x4e1812['query']);_0x20227b[_0x47e0('0x39')]=_[_0x47e0('0x3a')](_0x20227b[_0x47e0('0x34')],_0x20227b[_0x47e0('0x38')]);_0x40c8d1[_0x47e0('0x3c')]=_[_0x47e0('0x3a')](_0x20227b['model'],qs['fields'](_0x4e1812['query'][_0x47e0('0x3b')]));_0x40c8d1[_0x47e0('0x3c')]=_0x40c8d1[_0x47e0('0x3c')][_0x47e0('0x3d')]?_0x40c8d1[_0x47e0('0x3c')]:_0x20227b['model'];if(_0x4e1812[_0x47e0('0x38')][_0x47e0('0x4e')]){_0x40c8d1[_0x47e0('0x48')]=[{'all':!![]}];}_0x40c8d1=_[_0x47e0('0x46')]({},_0x40c8d1,_0x4e1812[_0x47e0('0x47')]);return db[_0x47e0('0x30')][_0x47e0('0x4f')](_0x40c8d1)[_0x47e0('0x28')](handleEntityNotFound(_0x5e7cb5,null))['then'](respondWithResult(_0x5e7cb5,null))['catch'](handleError(_0x5e7cb5,null));};exports[_0x47e0('0x50')]=function(_0x2cb6da,_0x5ea7ef){return db[_0x47e0('0x30')][_0x47e0('0x50')](_0x2cb6da[_0x47e0('0x51')],{})[_0x47e0('0x28')](function(_0x271294){var _0x17e946=_0x2cb6da['user'][_0x47e0('0x2a')]({'plain':!![]});if(!_0x17e946)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x17e946[_0x47e0('0x52')]===_0x47e0('0x53')){var _0x5b501b=_0x271294[_0x47e0('0x2a')]({'plain':!![]});var _0x449bd9='MailQueues';return db[_0x47e0('0x54')][_0x47e0('0x4f')]({'where':{'name':_0x449bd9,'userProfileId':_0x17e946[_0x47e0('0x55')]},'raw':!![]})[_0x47e0('0x28')](function(_0x2e9388){if(_0x2e9388&&_0x2e9388[_0x47e0('0x56')]===0x0){return db[_0x47e0('0x2c')]['create']({'name':_0x5b501b[_0x47e0('0x36')],'resourceId':_0x5b501b['id'],'type':_0x2e9388[_0x47e0('0x36')],'sectionId':_0x2e9388['id']},{})[_0x47e0('0x28')](function(){return _0x271294;});}else{return _0x271294;}})[_0x47e0('0x4b')](function(_0x57e703){logger[_0x47e0('0x2d')](_0x47e0('0x57'),_0x57e703);throw _0x57e703;});}return _0x271294;})['then'](respondWithResult(_0x5ea7ef,0xc9))[_0x47e0('0x4b')](handleError(_0x5ea7ef,null));};exports['update']=function(_0x8eb778,_0x5e284e){if(_0x8eb778['body']['id']){delete _0x8eb778['body']['id'];}return db['MailQueue'][_0x47e0('0x4f')]({'where':{'id':_0x8eb778[_0x47e0('0x4d')]['id']}})[_0x47e0('0x28')](handleEntityNotFound(_0x5e284e,null))[_0x47e0('0x28')](saveUpdates(_0x8eb778[_0x47e0('0x51')],null))[_0x47e0('0x28')](respondWithResult(_0x5e284e,null))['catch'](handleError(_0x5e284e,null));};exports[_0x47e0('0x29')]=function(_0x37015f,_0x32234f){return db['MailQueue'][_0x47e0('0x4f')]({'where':{'id':_0x37015f[_0x47e0('0x4d')]['id']}})[_0x47e0('0x28')](handleEntityNotFound(_0x32234f,null))[_0x47e0('0x28')](removeEntity(_0x32234f,null))[_0x47e0('0x4b')](handleError(_0x32234f,null));};exports[_0x47e0('0x58')]=function(_0x27268d,_0x4fe664){return db['MailQueue'][_0x47e0('0x58')]()[_0x47e0('0x28')](respondWithResult(_0x4fe664,null))[_0x47e0('0x4b')](handleError(_0x4fe664,null));};exports[_0x47e0('0x59')]=function(_0x3b50f2,_0x5a3d87,_0x475caf){var _0x475cc5={'raw':!![],'where':{}},_0x26a5fc={},_0x45ddbe;return db[_0x47e0('0x30')]['findOne']({'where':{'id':_0x3b50f2[_0x47e0('0x4d')]['id']}})['then'](handleEntityNotFound(_0x5a3d87,null))[_0x47e0('0x28')](function(_0x47742d){if(_0x47742d){_0x45ddbe=_0x47742d[_0x47e0('0x2a')]({'plain':!![]});_0x26a5fc[_0x47e0('0x34')]=_['keys'](db[_0x47e0('0x5a')][_0x47e0('0x31')]);_0x26a5fc[_0x47e0('0x38')]=_['keys'](_0x3b50f2[_0x47e0('0x38')]);_0x26a5fc['filters']=_[_0x47e0('0x3a')](_0x26a5fc['model'],_0x26a5fc[_0x47e0('0x38')]);_0x475cc5['attributes']=_[_0x47e0('0x3a')](_0x26a5fc['model'],qs[_0x47e0('0x3b')](_0x3b50f2[_0x47e0('0x38')][_0x47e0('0x3b')]));_0x475cc5['attributes']=_0x475cc5['attributes'][_0x47e0('0x3d')]?_0x475cc5[_0x47e0('0x3c')]:_0x26a5fc['model'];if(!_0x3b50f2[_0x47e0('0x38')][_0x47e0('0x3e')]('nolimit')){_0x475cc5[_0x47e0('0x22')]=qs[_0x47e0('0x22')](_0x3b50f2[_0x47e0('0x38')][_0x47e0('0x22')]);_0x475cc5[_0x47e0('0x21')]=qs[_0x47e0('0x21')](_0x3b50f2[_0x47e0('0x38')][_0x47e0('0x21')]);}_0x475cc5['order']=qs['sort'](_0x3b50f2[_0x47e0('0x38')]['sort']);_0x475cc5[_0x47e0('0x43')]=qs[_0x47e0('0x39')](_[_0x47e0('0x42')](_0x3b50f2['query'],_0x26a5fc[_0x47e0('0x39')]));_0x475cc5[_0x47e0('0x43')][_0x47e0('0x5b')]=_0x47742d['id'];if(_0x3b50f2[_0x47e0('0x38')][_0x47e0('0x45')]){_0x475cc5[_0x47e0('0x43')]=_[_0x47e0('0x46')](_0x475cc5[_0x47e0('0x43')],{'$or':_[_0x47e0('0x35')](_0x475cc5[_0x47e0('0x3c')],function(_0x414fea){var _0x27d868={};_0x27d868[_0x414fea]={'$like':'%'+_0x3b50f2[_0x47e0('0x38')][_0x47e0('0x45')]+'%'};return _0x27d868;})});}_0x475cc5=_[_0x47e0('0x46')]({},_0x475cc5,_0x3b50f2[_0x47e0('0x47')]);return db[_0x47e0('0x5a')][_0x47e0('0x49')](_0x475cc5);}})['then'](function(_0x1efe33){if(_0x1efe33){return db['User'][_0x47e0('0x5c')]({'where':{'id':_[_0x47e0('0x35')](_0x1efe33,_0x47e0('0x5d')),'role':_0x47e0('0x5e')},'attributes':['id',_0x47e0('0x36'),_0x47e0('0x5f'),_0x47e0('0x60'),_0x47e0('0x61')]});}})['then'](function(_0x1cb295){if(_0x1cb295){return{'count':_0x1cb295[_0x47e0('0x23')],'rows':_[_0x47e0('0x35')](_0x1cb295['rows'],function(_0x1e3e5f){return{'membername':_0x1e3e5f[_0x47e0('0x36')],'UserId':_0x1e3e5f['id'],'queue_name':_0x45ddbe['name'],'MailQueueId':_0x45ddbe['id'],'interface':util[_0x47e0('0x62')](_0x47e0('0x63'),'SIP',_0x1e3e5f[_0x47e0('0x36')]),'penalty':0x0,'paused':_0x1e3e5f[_0x47e0('0x5f')],'createdAt':_0x1e3e5f[_0x47e0('0x61')],'updatedAt':_0x1e3e5f[_0x47e0('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x47e0('0x28')](respondWithFilteredResult(_0x5a3d87,_0x475cc5))[_0x47e0('0x4b')](handleError(_0x5a3d87,null));};exports['getTeams']=function(_0x7232df,_0x102c93,_0x151794){var _0x33dffe={};var _0xc2571f={};var _0x434d51;var _0x5df357;return db[_0x47e0('0x30')]['findOne']({'where':{'id':_0x7232df[_0x47e0('0x4d')]['id']}})[_0x47e0('0x28')](handleEntityNotFound(_0x102c93,null))[_0x47e0('0x28')](function(_0x40a0f7){if(_0x40a0f7){_0x434d51=_0x40a0f7;_0xc2571f['model']=_['keys'](db[_0x47e0('0x64')][_0x47e0('0x31')]);_0xc2571f[_0x47e0('0x38')]=_[_0x47e0('0x37')](_0x7232df[_0x47e0('0x38')]);_0xc2571f[_0x47e0('0x39')]=_['intersection'](_0xc2571f[_0x47e0('0x34')],_0xc2571f[_0x47e0('0x38')]);_0x33dffe['attributes']=_[_0x47e0('0x3a')](_0xc2571f[_0x47e0('0x34')],qs[_0x47e0('0x3b')](_0x7232df[_0x47e0('0x38')][_0x47e0('0x3b')]));_0x33dffe['attributes']=_0x33dffe['attributes'][_0x47e0('0x3d')]?_0x33dffe['attributes']:_0xc2571f['model'];_0x33dffe[_0x47e0('0x40')]=qs[_0x47e0('0x41')](_0x7232df[_0x47e0('0x38')]['sort']);_0x33dffe['where']=qs[_0x47e0('0x39')](_[_0x47e0('0x42')](_0x7232df['query'],_0xc2571f[_0x47e0('0x39')]));if(_0x7232df[_0x47e0('0x38')][_0x47e0('0x45')]){_0x33dffe[_0x47e0('0x43')]=_[_0x47e0('0x46')](_0x33dffe['where'],{'$or':_[_0x47e0('0x35')](_0x33dffe[_0x47e0('0x3c')],function(_0x4f4a4b){var _0x386bf9={};_0x386bf9[_0x4f4a4b]={'$like':'%'+_0x7232df[_0x47e0('0x38')][_0x47e0('0x45')]+'%'};return _0x386bf9;})});}_0x33dffe=_[_0x47e0('0x46')]({},_0x33dffe,_0x7232df[_0x47e0('0x47')]);return _0x434d51[_0x47e0('0x65')](_0x33dffe);}})[_0x47e0('0x28')](function(_0x4cc575){if(_0x4cc575){_0x5df357=_0x4cc575[_0x47e0('0x3d')];if(!_0x7232df['query'][_0x47e0('0x3e')](_0x47e0('0x3f'))){_0x33dffe[_0x47e0('0x22')]=qs[_0x47e0('0x22')](_0x7232df[_0x47e0('0x38')][_0x47e0('0x22')]);_0x33dffe[_0x47e0('0x21')]=qs[_0x47e0('0x21')](_0x7232df['query'][_0x47e0('0x21')]);}return _0x434d51[_0x47e0('0x65')](_0x33dffe);}})['then'](function(_0x3f8c74){if(_0x3f8c74){return _0x3f8c74?{'count':_0x5df357,'rows':_0x3f8c74}:null;}})['then'](respondWithResult(_0x102c93,null))[_0x47e0('0x4b')](handleError(_0x102c93,null));};exports[_0x47e0('0x66')]=function(_0x193cb0,_0x49447c,_0x3afd7c){var _0x555615=_0x193cb0[_0x47e0('0x51')][_0x47e0('0x67')];return db[_0x47e0('0x64')]['findAll']({'where':{'id':_0x555615},'attributes':['id'],'include':[{'model':db[_0x47e0('0x68')],'as':_0x47e0('0x69'),'attributes':['id',_0x47e0('0x36'),_0x47e0('0x6a'),_0x47e0('0x6b'),_0x47e0('0x6c')],'raw':!![]}]})[_0x47e0('0x28')](function(_0x6d0ec6){if(_0x6d0ec6){var _0x562260=_[_0x47e0('0x6d')](_0x6d0ec6,function(_0x35e10d){var _0x21c30f=_0x35e10d[_0x47e0('0x2a')]({'plain':!![]});return _0x21c30f[_0x47e0('0x69')];});return db['MailQueue'][_0x47e0('0x4f')]({'where':{'id':_0x193cb0['params']['id']}})[_0x47e0('0x28')](function(_0x5c10a9){return db[_0x47e0('0x6e')][_0x47e0('0x6f')](function(_0x4007c2){return _0x5c10a9['addTeams'](_0x555615,{'transaction':_0x4007c2})['then'](function(){return BPromise[_0x47e0('0x70')](_0x562260,function(_0x549946){return db[_0x47e0('0x5a')][_0x47e0('0x71')]({'where':{'UserId':_0x549946['id'],'MailQueueId':_0x193cb0[_0x47e0('0x4d')]['id']},'transaction':_0x4007c2});});})[_0x47e0('0x28')](function(){_0x562260['forEach'](function(_0x46a83d){socket[_0x47e0('0x72')](_0x47e0('0x73'),{'UserId':_0x46a83d['id'],'MailQueueId':_0x5c10a9['id']});});});});});}})[_0x47e0('0x28')](respondWithStatusCode(_0x49447c,null))[_0x47e0('0x4b')](handleError(_0x49447c,null));};exports[_0x47e0('0x74')]=function(_0x4a4094,_0x48e7db,_0x1fffdf){return db['Team'][_0x47e0('0x49')]({'where':{'id':_0x4a4094[_0x47e0('0x38')]['ids']},'attributes':['id'],'include':[{'model':db[_0x47e0('0x68')],'as':_0x47e0('0x69'),'attributes':['id'],'raw':!![]}]})[_0x47e0('0x28')](handleEntityNotFound(_0x48e7db,null))['then'](function(_0x3cffa7){var _0x231d45=_[_0x47e0('0x35')](_0x3cffa7,'id');var _0x447062=[];var _0x14c0f6=[];var _0xc57c15=squel['select']();_0xc57c15[_0x47e0('0x75')]('tq.TeamId')['from'](_0x47e0('0x76'),'tq')['join'](_0x47e0('0x77'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0x47e0('0x78'),_0x4a4094['params']['id']);for(var _0x134068=0x0;_0x134068<_0x3cffa7[_0x47e0('0x3d')];_0x134068+=0x1){let _0x4d303c=_0x3cffa7[_0x134068];for(var _0x278b34=0x0;_0x278b34<_0x4d303c[_0x47e0('0x69')]['length'];_0x278b34+=0x1){let _0x1cf970=_0x4d303c[_0x47e0('0x69')][_0x278b34];var _0x2f4728=_0xc57c15[_0x47e0('0x79')]();_0x2f4728['where']('ut.UserId\x20=\x20?',_0x1cf970['id']);_0x14c0f6['push'](db[_0x47e0('0x6e')][_0x47e0('0x38')](_0x2f4728[_0x47e0('0x7a')](),{'type':db[_0x47e0('0x6e')][_0x47e0('0x7b')]['SELECT']})[_0x47e0('0x28')](function(_0x18bac1){if(_0x18bac1['length']===0x1){return _0x1cf970['id'];}else{var _0x535bd0=_[_0x47e0('0x7c')](_[_0x47e0('0x35')](_0x18bac1,_0x47e0('0x7d')),function(_0x228a60){return _[_0x47e0('0x7e')](_0x231d45,_0x228a60);});if(_0x535bd0){return _0x1cf970['id'];}}}));}}return BPromise[_0x47e0('0x7f')](_0x14c0f6)[_0x47e0('0x28')](function(_0x543418){_0x447062=_(_0x447062)['union'](_0x543418)[_0x47e0('0x80')]()[_0x47e0('0x81')]();return db[_0x47e0('0x30')]['find']({'where':{'id':_0x4a4094[_0x47e0('0x4d')]['id']}})[_0x47e0('0x28')](function(_0x206e21){return db['sequelize'][_0x47e0('0x6f')](function(_0x1cad0c){return _0x206e21[_0x47e0('0x74')](_0x4a4094[_0x47e0('0x38')][_0x47e0('0x67')],{'transaction':_0x1cad0c})[_0x47e0('0x28')](function(){if(!_[_0x47e0('0x82')](_0x447062)){return _0x206e21[_0x47e0('0x83')](_0x447062,{'transaction':_0x1cad0c});}})['then'](function(){_0x447062[_0x47e0('0x84')](function(_0x7f2bf0){socket[_0x47e0('0x72')](_0x47e0('0x85'),{'UserId':_0x7f2bf0,'MailQueueId':_0x206e21['id']});});});});});});})[_0x47e0('0x28')](respondWithStatusCode(_0x48e7db,null))[_0x47e0('0x4b')](handleError(_0x48e7db,null));};exports['addAgents']=function(_0x210785,_0x22981d,_0xad13f1){return db['MailQueue'][_0x47e0('0x4f')]({'where':{'id':_0x210785[_0x47e0('0x4d')]['id']}})[_0x47e0('0x28')](handleEntityNotFound(_0x22981d,null))[_0x47e0('0x28')](function(_0x4048f8){if(_0x4048f8){return _0x4048f8[_0x47e0('0x86')](_0x210785['body'][_0x47e0('0x67')],_[_0x47e0('0x87')](_0x210785['body'],[_0x47e0('0x67'),'id'])||{})[_0x47e0('0x88')](function(_0xede08a){for(var _0x138ca9=0x0;_0x138ca9<_0x210785[_0x47e0('0x51')][_0x47e0('0x67')]['length'];_0x138ca9+=0x1){socket[_0x47e0('0x72')]('userMailQueue:save',{'UserId':Number(_0x210785[_0x47e0('0x51')][_0x47e0('0x67')][_0x138ca9]),'MailQueueId':Number(_0x210785[_0x47e0('0x4d')]['id'])});}return _0xede08a;});}})['then'](respondWithResult(_0x22981d,null))[_0x47e0('0x4b')](handleError(_0x22981d,null));};exports[_0x47e0('0x83')]=function(_0x191492,_0x40beef,_0x2a66b3){return db['MailQueue']['find']({'where':{'id':_0x191492[_0x47e0('0x4d')]['id']}})[_0x47e0('0x28')](handleEntityNotFound(_0x40beef,null))[_0x47e0('0x28')](function(_0x3add0e){if(_0x3add0e){return _0x3add0e[_0x47e0('0x83')](_0x191492[_0x47e0('0x38')][_0x47e0('0x67')])['then'](function(){if(_[_0x47e0('0x89')](_0x191492[_0x47e0('0x38')][_0x47e0('0x67')])){for(var _0x590bd6=0x0;_0x590bd6<_0x191492[_0x47e0('0x38')][_0x47e0('0x67')]['length'];_0x590bd6+=0x1){socket[_0x47e0('0x72')](_0x47e0('0x85'),{'UserId':Number(_0x191492[_0x47e0('0x38')]['ids'][_0x590bd6]),'MailQueueId':Number(_0x191492[_0x47e0('0x4d')]['id'])});}}else{socket[_0x47e0('0x72')](_0x47e0('0x85'),{'UserId':Number(_0x191492[_0x47e0('0x38')][_0x47e0('0x67')]),'MailQueueId':Number(_0x191492['params']['id'])});}});}})[_0x47e0('0x28')](respondWithStatusCode(_0x40beef,null))[_0x47e0('0x4b')](handleError(_0x40beef,null));};exports['getAgents']=function(_0x2e97bb,_0x47221f,_0x3866a3){var _0x48bd23={};var _0x2a1667={};var _0x339e75;var _0x27d0dc;return db[_0x47e0('0x30')]['findOne']({'where':{'id':_0x2e97bb[_0x47e0('0x4d')]['id']}})[_0x47e0('0x28')](handleEntityNotFound(_0x47221f,null))[_0x47e0('0x28')](function(_0x53fb58){if(_0x53fb58){_0x339e75=_0x53fb58;_0x2a1667[_0x47e0('0x34')]=_[_0x47e0('0x37')](db[_0x47e0('0x68')][_0x47e0('0x31')]);_0x2a1667[_0x47e0('0x38')]=_['keys'](_0x2e97bb[_0x47e0('0x38')]);_0x2a1667[_0x47e0('0x39')]=_[_0x47e0('0x3a')](_0x2a1667[_0x47e0('0x34')],_0x2a1667['query']);_0x48bd23[_0x47e0('0x3c')]=_[_0x47e0('0x3a')](_0x2a1667[_0x47e0('0x34')],qs['fields'](_0x2e97bb[_0x47e0('0x38')]['fields']));_0x48bd23[_0x47e0('0x3c')]=_0x48bd23['attributes'][_0x47e0('0x3d')]?_0x48bd23[_0x47e0('0x3c')]:_0x2a1667[_0x47e0('0x34')];_0x48bd23[_0x47e0('0x40')]=qs[_0x47e0('0x41')](_0x2e97bb[_0x47e0('0x38')][_0x47e0('0x41')]);_0x48bd23['where']=qs[_0x47e0('0x39')](_['pick'](_0x2e97bb[_0x47e0('0x38')],_0x2a1667[_0x47e0('0x39')]));if(_0x2e97bb[_0x47e0('0x38')][_0x47e0('0x45')]){_0x48bd23['where']=_[_0x47e0('0x46')](_0x48bd23['where'],{'$or':_[_0x47e0('0x35')](_0x48bd23['attributes'],function(_0xa7bc58){var _0x4f2301={};_0x4f2301[_0xa7bc58]={'$like':'%'+_0x2e97bb[_0x47e0('0x38')][_0x47e0('0x45')]+'%'};return _0x4f2301;})});}_0x48bd23=_['merge']({},_0x48bd23,_0x2e97bb[_0x47e0('0x47')]);return _0x339e75[_0x47e0('0x8a')](_0x48bd23);}})[_0x47e0('0x28')](function(_0x54ad04){if(_0x54ad04){_0x27d0dc=_0x54ad04[_0x47e0('0x3d')];if(!_0x2e97bb['query'][_0x47e0('0x3e')](_0x47e0('0x3f'))){_0x48bd23['limit']=qs['limit'](_0x2e97bb['query'][_0x47e0('0x22')]);_0x48bd23[_0x47e0('0x21')]=qs[_0x47e0('0x21')](_0x2e97bb[_0x47e0('0x38')][_0x47e0('0x21')]);}return _0x339e75[_0x47e0('0x8a')](_0x48bd23);}})[_0x47e0('0x28')](function(_0x3b3543){if(_0x3b3543){return _0x3b3543?{'count':_0x27d0dc,'rows':_0x3b3543}:null;}})[_0x47e0('0x28')](respondWithResult(_0x47221f,null))[_0x47e0('0x4b')](handleError(_0x47221f,null));};
\ No newline at end of file
+var _0xcf3b=['includeAll','include','findAll','rows','show','params','merge','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','getMembers','findOne','get','UserMailQueue','pick','MailQueueId','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','addTeams','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','ids','User','field','tq.TeamId','from','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','TeamId','includes','all','union','compact','value','removeAgents','userMailQueue:remove','addAgents','omit','spread','getAgents','eml-format','rimraf','zip-dir','bluebird','mustache','util','path','sox','ejs','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/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','end','json','limit','undefined','offset','count','set','Content-Range','apply','save','then','destroy','MailQueues','UserProfileResource','error','stack','name','send','rawAttributes','key','map','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','type','VIRTUAL','options','MailQueue'];(function(_0x405e5e,_0x171cc0){var _0x47d2e2=function(_0x1d844a){while(--_0x1d844a){_0x405e5e['push'](_0x405e5e['shift']());}};_0x47d2e2(++_0x171cc0);}(_0xcf3b,0xe2));var _0xbcf3=function(_0x443da2,_0x18f2a2){_0x443da2=_0x443da2-0x0;var _0x3f8e3d=_0xcf3b[_0x443da2];return _0x3f8e3d;};'use strict';var emlformat=require(_0xbcf3('0x0'));var rimraf=require(_0xbcf3('0x1'));var zipdir=require(_0xbcf3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xbcf3('0x3'));var Mustache=require(_0xbcf3('0x4'));var util=require(_0xbcf3('0x5'));var path=require(_0xbcf3('0x6'));var sox=require(_0xbcf3('0x7'));var csv=require('to-csv');var ejs=require(_0xbcf3('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbcf3('0x9'));var squel=require(_0xbcf3('0xa'));var crypto=require(_0xbcf3('0xb'));var jsforce=require(_0xbcf3('0xc'));var deskjs=require(_0xbcf3('0xd'));var toCsv=require(_0xbcf3('0xe'));var querystring=require(_0xbcf3('0xf'));var Papa=require(_0xbcf3('0x10'));var Redis=require(_0xbcf3('0x11'));var authService=require(_0xbcf3('0x12'));var qs=require(_0xbcf3('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbcf3('0x14'));var logger=require(_0xbcf3('0x15'))(_0xbcf3('0x16'));var utils=require(_0xbcf3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xbcf3('0x18'));var db=require(_0xbcf3('0x19'))['db'];config[_0xbcf3('0x1a')]=_[_0xbcf3('0x1b')](config[_0xbcf3('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0xbcf3('0x1c'))(new Redis(config[_0xbcf3('0x1a')]));require(_0xbcf3('0x1d'))[_0xbcf3('0x1e')](socket);function respondWithStatusCode(_0x16e3eb,_0xdf5b85){_0xdf5b85=_0xdf5b85||0xcc;return function(_0xd974da){if(_0xd974da){return _0x16e3eb[_0xbcf3('0x1f')](_0xdf5b85);}return _0x16e3eb[_0xbcf3('0x20')](_0xdf5b85)[_0xbcf3('0x21')]();};}function respondWithResult(_0x32c482,_0x22e31d){_0x22e31d=_0x22e31d||0xc8;return function(_0x10a0ad){if(_0x10a0ad){return _0x32c482['status'](_0x22e31d)[_0xbcf3('0x22')](_0x10a0ad);}};}function respondWithFilteredResult(_0x4ffcdc,_0x35159a){return function(_0xbf7460){if(_0xbf7460){var _0x56b61e=typeof _0x35159a['offset']==='undefined'&&typeof _0x35159a[_0xbcf3('0x23')]===_0xbcf3('0x24');var _0x157b08=_0xbf7460['count'];var _0x4bfc5a=_0x56b61e?0x0:_0x35159a[_0xbcf3('0x25')];var _0x222ecf=_0x56b61e?_0xbf7460[_0xbcf3('0x26')]:_0x35159a[_0xbcf3('0x25')]+_0x35159a['limit'];var _0xb3b456;if(_0x222ecf>=_0x157b08){_0x222ecf=_0x157b08;_0xb3b456=0xc8;}else{_0xb3b456=0xce;}_0x4ffcdc[_0xbcf3('0x20')](_0xb3b456);return _0x4ffcdc[_0xbcf3('0x27')](_0xbcf3('0x28'),_0x4bfc5a+'-'+_0x222ecf+'/'+_0x157b08)[_0xbcf3('0x22')](_0xbf7460);}return null;};}function patchUpdates(_0x58a56d){return function(_0x55a40c){try{jsonpatch[_0xbcf3('0x29')](_0x55a40c,_0x58a56d,!![]);}catch(_0x176d42){return BPromise['reject'](_0x176d42);}return _0x55a40c[_0xbcf3('0x2a')]();};}function saveUpdates(_0x322015,_0xa94b16){return function(_0x4d9d41){if(_0x4d9d41){return _0x4d9d41['update'](_0x322015)[_0xbcf3('0x2b')](function(_0x233aa7){return _0x233aa7;});}return null;};}function removeEntity(_0x522f21,_0x3d796b){return function(_0x54a21f){if(_0x54a21f){return _0x54a21f[_0xbcf3('0x2c')]()[_0xbcf3('0x2b')](function(){var _0x3d098c=_0x54a21f['get']({'plain':!![]});var _0x1d154a=_0xbcf3('0x2d');return db[_0xbcf3('0x2e')][_0xbcf3('0x2c')]({'where':{'type':_0x1d154a,'resourceId':_0x3d098c['id']}})['then'](function(){return _0x54a21f;});})[_0xbcf3('0x2b')](function(){_0x522f21[_0xbcf3('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d16c4,_0x32ee72){return function(_0x1cdd1e){if(!_0x1cdd1e){_0x5d16c4[_0xbcf3('0x1f')](0x194);}return _0x1cdd1e;};}function handleError(_0x133a0a,_0x3322ce){_0x3322ce=_0x3322ce||0x1f4;return function(_0x3c14bd){logger[_0xbcf3('0x2f')](_0x3c14bd[_0xbcf3('0x30')]);if(_0x3c14bd[_0xbcf3('0x31')]){delete _0x3c14bd[_0xbcf3('0x31')];}_0x133a0a[_0xbcf3('0x20')](_0x3322ce)[_0xbcf3('0x32')](_0x3c14bd);};}exports['index']=function(_0x4986fd,_0x1a8216){var _0x15d0ba={},_0x412c73={},_0x1264a1={'count':0x0,'rows':[]};var _0x34003e=_['map'](db['MailQueue'][_0xbcf3('0x33')],function(_0x5cfc97){return{'name':_0x5cfc97['fieldName'],'type':_0x5cfc97['type'][_0xbcf3('0x34')]};});_0x412c73['model']=_[_0xbcf3('0x35')](_0x34003e,'name');_0x412c73['query']=_[_0xbcf3('0x36')](_0x4986fd[_0xbcf3('0x37')]);_0x412c73[_0xbcf3('0x38')]=_[_0xbcf3('0x39')](_0x412c73[_0xbcf3('0x3a')],_0x412c73[_0xbcf3('0x37')]);_0x15d0ba[_0xbcf3('0x3b')]=_[_0xbcf3('0x39')](_0x412c73['model'],qs[_0xbcf3('0x3c')](_0x4986fd[_0xbcf3('0x37')][_0xbcf3('0x3c')]));_0x15d0ba[_0xbcf3('0x3b')]=_0x15d0ba['attributes'][_0xbcf3('0x3d')]?_0x15d0ba[_0xbcf3('0x3b')]:_0x412c73[_0xbcf3('0x3a')];if(!_0x4986fd[_0xbcf3('0x37')][_0xbcf3('0x3e')](_0xbcf3('0x3f'))){_0x15d0ba[_0xbcf3('0x23')]=qs[_0xbcf3('0x23')](_0x4986fd['query'][_0xbcf3('0x23')]);_0x15d0ba[_0xbcf3('0x25')]=qs['offset'](_0x4986fd[_0xbcf3('0x37')][_0xbcf3('0x25')]);}_0x15d0ba[_0xbcf3('0x40')]=qs[_0xbcf3('0x41')](_0x4986fd[_0xbcf3('0x37')][_0xbcf3('0x41')]);_0x15d0ba[_0xbcf3('0x42')]=qs[_0xbcf3('0x38')](_['pick'](_0x4986fd[_0xbcf3('0x37')],_0x412c73[_0xbcf3('0x38')]),_0x34003e);if(_0x4986fd[_0xbcf3('0x37')][_0xbcf3('0x43')]){_0x15d0ba[_0xbcf3('0x42')]=_['merge'](_0x15d0ba[_0xbcf3('0x42')],{'$or':_[_0xbcf3('0x35')](_0x34003e,function(_0x23c890){if(_0x23c890[_0xbcf3('0x44')]!==_0xbcf3('0x45')){var _0x166ffe={};_0x166ffe[_0x23c890[_0xbcf3('0x31')]]={'$like':'%'+_0x4986fd[_0xbcf3('0x37')]['filter']+'%'};return _0x166ffe;}})});}_0x15d0ba=_['merge']({},_0x15d0ba,_0x4986fd[_0xbcf3('0x46')]);var _0x178d32={'where':_0x15d0ba['where']};return db[_0xbcf3('0x47')][_0xbcf3('0x26')](_0x178d32)[_0xbcf3('0x2b')](function(_0x287202){_0x1264a1[_0xbcf3('0x26')]=_0x287202;if(_0x4986fd[_0xbcf3('0x37')][_0xbcf3('0x48')]){_0x15d0ba[_0xbcf3('0x49')]=[{'all':!![]}];}return db[_0xbcf3('0x47')][_0xbcf3('0x4a')](_0x15d0ba);})['then'](function(_0x5e5619){_0x1264a1[_0xbcf3('0x4b')]=_0x5e5619;return _0x1264a1;})['then'](respondWithFilteredResult(_0x1a8216,_0x15d0ba))['catch'](handleError(_0x1a8216,null));};exports[_0xbcf3('0x4c')]=function(_0x54f632,_0x5d2997){var _0x1ee292={'raw':!![],'where':{'id':_0x54f632[_0xbcf3('0x4d')]['id']}},_0x1071e1={};_0x1071e1[_0xbcf3('0x3a')]=_[_0xbcf3('0x36')](db[_0xbcf3('0x47')][_0xbcf3('0x33')]);_0x1071e1[_0xbcf3('0x37')]=_['keys'](_0x54f632['query']);_0x1071e1[_0xbcf3('0x38')]=_[_0xbcf3('0x39')](_0x1071e1[_0xbcf3('0x3a')],_0x1071e1[_0xbcf3('0x37')]);_0x1ee292['attributes']=_[_0xbcf3('0x39')](_0x1071e1[_0xbcf3('0x3a')],qs['fields'](_0x54f632['query']['fields']));_0x1ee292[_0xbcf3('0x3b')]=_0x1ee292[_0xbcf3('0x3b')][_0xbcf3('0x3d')]?_0x1ee292[_0xbcf3('0x3b')]:_0x1071e1[_0xbcf3('0x3a')];if(_0x54f632[_0xbcf3('0x37')]['includeAll']){_0x1ee292[_0xbcf3('0x49')]=[{'all':!![]}];}_0x1ee292=_[_0xbcf3('0x4e')]({},_0x1ee292,_0x54f632[_0xbcf3('0x46')]);return db['MailQueue']['find'](_0x1ee292)[_0xbcf3('0x2b')](handleEntityNotFound(_0x5d2997,null))[_0xbcf3('0x2b')](respondWithResult(_0x5d2997,null))[_0xbcf3('0x4f')](handleError(_0x5d2997,null));};exports[_0xbcf3('0x50')]=function(_0x10bd34,_0x468ff8){return db[_0xbcf3('0x47')][_0xbcf3('0x50')](_0x10bd34['body'],{})['then'](function(_0xcdf0f9){var _0x39f449=_0x10bd34[_0xbcf3('0x51')]['get']({'plain':!![]});if(!_0x39f449)throw new Error(_0xbcf3('0x52'));if(_0x39f449['role']===_0xbcf3('0x51')){var _0x14c0f2=_0xcdf0f9['get']({'plain':!![]});var _0x3947e2='MailQueues';return db[_0xbcf3('0x53')][_0xbcf3('0x54')]({'where':{'name':_0x3947e2,'userProfileId':_0x39f449[_0xbcf3('0x55')]},'raw':!![]})[_0xbcf3('0x2b')](function(_0x8685f2){if(_0x8685f2&&_0x8685f2[_0xbcf3('0x56')]===0x0){return db[_0xbcf3('0x2e')]['create']({'name':_0x14c0f2[_0xbcf3('0x31')],'resourceId':_0x14c0f2['id'],'type':_0x8685f2['name'],'sectionId':_0x8685f2['id']},{})[_0xbcf3('0x2b')](function(){return _0xcdf0f9;});}else{return _0xcdf0f9;}})[_0xbcf3('0x4f')](function(_0x581ba6){logger['error'](_0xbcf3('0x57'),_0x581ba6);throw _0x581ba6;});}return _0xcdf0f9;})[_0xbcf3('0x2b')](respondWithResult(_0x468ff8,0xc9))[_0xbcf3('0x4f')](handleError(_0x468ff8,null));};exports[_0xbcf3('0x58')]=function(_0x3be5f9,_0x195025){if(_0x3be5f9[_0xbcf3('0x59')]['id']){delete _0x3be5f9[_0xbcf3('0x59')]['id'];}return db[_0xbcf3('0x47')][_0xbcf3('0x54')]({'where':{'id':_0x3be5f9[_0xbcf3('0x4d')]['id']}})[_0xbcf3('0x2b')](handleEntityNotFound(_0x195025,null))['then'](saveUpdates(_0x3be5f9['body'],null))[_0xbcf3('0x2b')](respondWithResult(_0x195025,null))[_0xbcf3('0x4f')](handleError(_0x195025,null));};exports[_0xbcf3('0x2c')]=function(_0x5823cf,_0x189810){return db[_0xbcf3('0x47')]['find']({'where':{'id':_0x5823cf[_0xbcf3('0x4d')]['id']}})['then'](handleEntityNotFound(_0x189810,null))[_0xbcf3('0x2b')](removeEntity(_0x189810,null))['catch'](handleError(_0x189810,null));};exports[_0xbcf3('0x5a')]=function(_0x7fcd50,_0x196b1e){return db[_0xbcf3('0x47')][_0xbcf3('0x5a')]()[_0xbcf3('0x2b')](respondWithResult(_0x196b1e,null))[_0xbcf3('0x4f')](handleError(_0x196b1e,null));};exports[_0xbcf3('0x5b')]=function(_0xca6065,_0x439848,_0x449e12){var _0x41d045={'raw':!![],'where':{}},_0x26e725={},_0xb06cb1;return db[_0xbcf3('0x47')][_0xbcf3('0x5c')]({'where':{'id':_0xca6065['params']['id']}})[_0xbcf3('0x2b')](handleEntityNotFound(_0x439848,null))[_0xbcf3('0x2b')](function(_0xc4ca29){if(_0xc4ca29){_0xb06cb1=_0xc4ca29[_0xbcf3('0x5d')]({'plain':!![]});_0x26e725[_0xbcf3('0x3a')]=_[_0xbcf3('0x36')](db[_0xbcf3('0x5e')]['rawAttributes']);_0x26e725['query']=_[_0xbcf3('0x36')](_0xca6065[_0xbcf3('0x37')]);_0x26e725[_0xbcf3('0x38')]=_['intersection'](_0x26e725['model'],_0x26e725[_0xbcf3('0x37')]);_0x41d045[_0xbcf3('0x3b')]=_['intersection'](_0x26e725['model'],qs[_0xbcf3('0x3c')](_0xca6065[_0xbcf3('0x37')]['fields']));_0x41d045[_0xbcf3('0x3b')]=_0x41d045['attributes'][_0xbcf3('0x3d')]?_0x41d045[_0xbcf3('0x3b')]:_0x26e725[_0xbcf3('0x3a')];if(!_0xca6065[_0xbcf3('0x37')][_0xbcf3('0x3e')](_0xbcf3('0x3f'))){_0x41d045[_0xbcf3('0x23')]=qs['limit'](_0xca6065[_0xbcf3('0x37')][_0xbcf3('0x23')]);_0x41d045[_0xbcf3('0x25')]=qs[_0xbcf3('0x25')](_0xca6065[_0xbcf3('0x37')]['offset']);}_0x41d045[_0xbcf3('0x40')]=qs['sort'](_0xca6065[_0xbcf3('0x37')]['sort']);_0x41d045[_0xbcf3('0x42')]=qs['filters'](_[_0xbcf3('0x5f')](_0xca6065[_0xbcf3('0x37')],_0x26e725[_0xbcf3('0x38')]));_0x41d045[_0xbcf3('0x42')][_0xbcf3('0x60')]=_0xc4ca29['id'];if(_0xca6065[_0xbcf3('0x37')]['filter']){_0x41d045['where']=_[_0xbcf3('0x4e')](_0x41d045['where'],{'$or':_['map'](_0x41d045[_0xbcf3('0x3b')],function(_0x443454){var _0x5a0ae7={};_0x5a0ae7[_0x443454]={'$like':'%'+_0xca6065['query'][_0xbcf3('0x43')]+'%'};return _0x5a0ae7;})});}_0x41d045=_[_0xbcf3('0x4e')]({},_0x41d045,_0xca6065[_0xbcf3('0x46')]);return db[_0xbcf3('0x5e')]['findAll'](_0x41d045);}})[_0xbcf3('0x2b')](function(_0x34111e){if(_0x34111e){return db['User'][_0xbcf3('0x61')]({'where':{'id':_[_0xbcf3('0x35')](_0x34111e,_0xbcf3('0x62')),'role':_0xbcf3('0x63')},'attributes':['id',_0xbcf3('0x31'),_0xbcf3('0x64'),_0xbcf3('0x65'),_0xbcf3('0x66')]});}})[_0xbcf3('0x2b')](function(_0x35c821){if(_0x35c821){return{'count':_0x35c821[_0xbcf3('0x26')],'rows':_[_0xbcf3('0x35')](_0x35c821[_0xbcf3('0x4b')],function(_0x517718){return{'membername':_0x517718['name'],'UserId':_0x517718['id'],'queue_name':_0xb06cb1[_0xbcf3('0x31')],'MailQueueId':_0xb06cb1['id'],'interface':util[_0xbcf3('0x67')](_0xbcf3('0x68'),_0xbcf3('0x69'),_0x517718[_0xbcf3('0x31')]),'penalty':0x0,'paused':_0x517718['mailPause'],'createdAt':_0x517718[_0xbcf3('0x66')],'updatedAt':_0x517718['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xbcf3('0x2b')](respondWithFilteredResult(_0x439848,_0x41d045))['catch'](handleError(_0x439848,null));};exports[_0xbcf3('0x6a')]=function(_0x4848ef,_0x584f70,_0x585fd9){var _0x5b81a6={};var _0x559cf6={};var _0xc91ec3;var _0x9ab31e;return db[_0xbcf3('0x47')][_0xbcf3('0x5c')]({'where':{'id':_0x4848ef[_0xbcf3('0x4d')]['id']}})['then'](handleEntityNotFound(_0x584f70,null))[_0xbcf3('0x2b')](function(_0x32126f){if(_0x32126f){_0xc91ec3=_0x32126f;_0x559cf6['model']=_['keys'](db['Team'][_0xbcf3('0x33')]);_0x559cf6[_0xbcf3('0x37')]=_['keys'](_0x4848ef['query']);_0x559cf6[_0xbcf3('0x38')]=_[_0xbcf3('0x39')](_0x559cf6['model'],_0x559cf6[_0xbcf3('0x37')]);_0x5b81a6[_0xbcf3('0x3b')]=_[_0xbcf3('0x39')](_0x559cf6[_0xbcf3('0x3a')],qs[_0xbcf3('0x3c')](_0x4848ef['query']['fields']));_0x5b81a6['attributes']=_0x5b81a6[_0xbcf3('0x3b')][_0xbcf3('0x3d')]?_0x5b81a6[_0xbcf3('0x3b')]:_0x559cf6[_0xbcf3('0x3a')];_0x5b81a6[_0xbcf3('0x40')]=qs[_0xbcf3('0x41')](_0x4848ef[_0xbcf3('0x37')][_0xbcf3('0x41')]);_0x5b81a6[_0xbcf3('0x42')]=qs[_0xbcf3('0x38')](_[_0xbcf3('0x5f')](_0x4848ef['query'],_0x559cf6['filters']));if(_0x4848ef[_0xbcf3('0x37')][_0xbcf3('0x43')]){_0x5b81a6['where']=_[_0xbcf3('0x4e')](_0x5b81a6[_0xbcf3('0x42')],{'$or':_[_0xbcf3('0x35')](_0x5b81a6[_0xbcf3('0x3b')],function(_0x5b3c21){var _0x2ba559={};_0x2ba559[_0x5b3c21]={'$like':'%'+_0x4848ef[_0xbcf3('0x37')]['filter']+'%'};return _0x2ba559;})});}_0x5b81a6=_[_0xbcf3('0x4e')]({},_0x5b81a6,_0x4848ef[_0xbcf3('0x46')]);return _0xc91ec3['getTeams'](_0x5b81a6);}})[_0xbcf3('0x2b')](function(_0x4217f5){if(_0x4217f5){_0x9ab31e=_0x4217f5[_0xbcf3('0x3d')];if(!_0x4848ef['query'][_0xbcf3('0x3e')]('nolimit')){_0x5b81a6[_0xbcf3('0x23')]=qs[_0xbcf3('0x23')](_0x4848ef[_0xbcf3('0x37')]['limit']);_0x5b81a6[_0xbcf3('0x25')]=qs[_0xbcf3('0x25')](_0x4848ef[_0xbcf3('0x37')][_0xbcf3('0x25')]);}return _0xc91ec3['getTeams'](_0x5b81a6);}})[_0xbcf3('0x2b')](function(_0x40adfa){if(_0x40adfa){return _0x40adfa?{'count':_0x9ab31e,'rows':_0x40adfa}:null;}})[_0xbcf3('0x2b')](respondWithResult(_0x584f70,null))[_0xbcf3('0x4f')](handleError(_0x584f70,null));};exports[_0xbcf3('0x6b')]=function(_0x4f2159,_0x1430b8,_0x54d39a){var _0x5a05a1=_0x4f2159['body']['ids'];return db['Team']['findAll']({'where':{'id':_0x5a05a1},'attributes':['id'],'include':[{'model':db['User'],'as':_0xbcf3('0x6c'),'attributes':['id',_0xbcf3('0x31'),_0xbcf3('0x6d'),_0xbcf3('0x6e'),_0xbcf3('0x6f')],'raw':!![]}]})['then'](function(_0x51d16c){if(_0x51d16c){var _0x1e5117=_[_0xbcf3('0x70')](_0x51d16c,function(_0x368662){var _0xc863fa=_0x368662[_0xbcf3('0x5d')]({'plain':!![]});return _0xc863fa[_0xbcf3('0x6c')];});return db[_0xbcf3('0x47')][_0xbcf3('0x54')]({'where':{'id':_0x4f2159[_0xbcf3('0x4d')]['id']}})['then'](function(_0x1af658){return db[_0xbcf3('0x71')][_0xbcf3('0x72')](function(_0x297009){return _0x1af658[_0xbcf3('0x6b')](_0x5a05a1,{'transaction':_0x297009})['then'](function(){return BPromise[_0xbcf3('0x73')](_0x1e5117,function(_0x4c95fd){return db[_0xbcf3('0x5e')][_0xbcf3('0x74')]({'where':{'UserId':_0x4c95fd['id'],'MailQueueId':_0x4f2159[_0xbcf3('0x4d')]['id']},'transaction':_0x297009});});})[_0xbcf3('0x2b')](function(){_0x1e5117[_0xbcf3('0x75')](function(_0x1f9a84){socket[_0xbcf3('0x76')](_0xbcf3('0x77'),{'UserId':_0x1f9a84['id'],'MailQueueId':_0x1af658['id']});});});});});}})[_0xbcf3('0x2b')](respondWithStatusCode(_0x1430b8,null))[_0xbcf3('0x4f')](handleError(_0x1430b8,null));};exports[_0xbcf3('0x78')]=function(_0x45cf4f,_0x3f9a0c,_0x40ed77){return db['Team'][_0xbcf3('0x4a')]({'where':{'id':_0x45cf4f['query'][_0xbcf3('0x79')]},'attributes':['id'],'include':[{'model':db[_0xbcf3('0x7a')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x3f9a0c,null))['then'](function(_0x2b928f){var _0x155fdd=_[_0xbcf3('0x35')](_0x2b928f,'id');var _0x1e6c5c=[];var _0x1b97b0=[];var _0x44c3a0=squel['select']();_0x44c3a0[_0xbcf3('0x7b')](_0xbcf3('0x7c'))[_0xbcf3('0x7d')](_0xbcf3('0x7e'),'tq')[_0xbcf3('0x7f')](_0xbcf3('0x80'),'ut',_0xbcf3('0x81'))[_0xbcf3('0x42')](_0xbcf3('0x82'),_0x45cf4f[_0xbcf3('0x4d')]['id']);for(var _0x47b994=0x0;_0x47b994<_0x2b928f[_0xbcf3('0x3d')];_0x47b994+=0x1){let _0x3260f4=_0x2b928f[_0x47b994];for(var _0x4e0fe2=0x0;_0x4e0fe2<_0x3260f4[_0xbcf3('0x6c')]['length'];_0x4e0fe2+=0x1){let _0x44086a=_0x3260f4[_0xbcf3('0x6c')][_0x4e0fe2];var _0xa9d88=_0x44c3a0[_0xbcf3('0x83')]();_0xa9d88[_0xbcf3('0x42')](_0xbcf3('0x84'),_0x44086a['id']);_0x1b97b0[_0xbcf3('0x85')](db[_0xbcf3('0x71')][_0xbcf3('0x37')](_0xa9d88[_0xbcf3('0x86')](),{'type':db[_0xbcf3('0x71')][_0xbcf3('0x87')][_0xbcf3('0x88')]})[_0xbcf3('0x2b')](function(_0x2805e6){if(_0x2805e6[_0xbcf3('0x3d')]===0x1){return _0x44086a['id'];}else{var _0x53e122=_['every'](_[_0xbcf3('0x35')](_0x2805e6,_0xbcf3('0x89')),function(_0x231de0){return _[_0xbcf3('0x8a')](_0x155fdd,_0x231de0);});if(_0x53e122){return _0x44086a['id'];}}}));}}return BPromise[_0xbcf3('0x8b')](_0x1b97b0)[_0xbcf3('0x2b')](function(_0x1c8331){_0x1e6c5c=_(_0x1e6c5c)[_0xbcf3('0x8c')](_0x1c8331)[_0xbcf3('0x8d')]()[_0xbcf3('0x8e')]();return db[_0xbcf3('0x47')]['find']({'where':{'id':_0x45cf4f[_0xbcf3('0x4d')]['id']}})[_0xbcf3('0x2b')](function(_0x219b12){return db[_0xbcf3('0x71')][_0xbcf3('0x72')](function(_0x411afe){return _0x219b12[_0xbcf3('0x78')](_0x45cf4f['query'][_0xbcf3('0x79')],{'transaction':_0x411afe})['then'](function(){if(!_['isEmpty'](_0x1e6c5c)){return _0x219b12[_0xbcf3('0x8f')](_0x1e6c5c,{'transaction':_0x411afe});}})[_0xbcf3('0x2b')](function(){_0x1e6c5c['forEach'](function(_0x3a45ef){socket[_0xbcf3('0x76')](_0xbcf3('0x90'),{'UserId':_0x3a45ef,'MailQueueId':_0x219b12['id']});});});});});});})[_0xbcf3('0x2b')](respondWithStatusCode(_0x3f9a0c,null))['catch'](handleError(_0x3f9a0c,null));};exports[_0xbcf3('0x91')]=function(_0xbe992,_0x1d24b5,_0x5afec2){return db[_0xbcf3('0x47')][_0xbcf3('0x54')]({'where':{'id':_0xbe992[_0xbcf3('0x4d')]['id']}})['then'](handleEntityNotFound(_0x1d24b5,null))['then'](function(_0x517418){if(_0x517418){return _0x517418[_0xbcf3('0x91')](_0xbe992[_0xbcf3('0x59')][_0xbcf3('0x79')],_[_0xbcf3('0x92')](_0xbe992[_0xbcf3('0x59')],[_0xbcf3('0x79'),'id'])||{})[_0xbcf3('0x93')](function(_0xf18cdc){for(var _0x405353=0x0;_0x405353<_0xbe992[_0xbcf3('0x59')][_0xbcf3('0x79')]['length'];_0x405353+=0x1){socket[_0xbcf3('0x76')]('userMailQueue:save',{'UserId':Number(_0xbe992['body']['ids'][_0x405353]),'MailQueueId':Number(_0xbe992[_0xbcf3('0x4d')]['id'])});}return _0xf18cdc;});}})['then'](respondWithResult(_0x1d24b5,null))[_0xbcf3('0x4f')](handleError(_0x1d24b5,null));};exports[_0xbcf3('0x8f')]=function(_0x3086f6,_0x387a47,_0x133c7a){return db['MailQueue']['find']({'where':{'id':_0x3086f6[_0xbcf3('0x4d')]['id']}})[_0xbcf3('0x2b')](handleEntityNotFound(_0x387a47,null))[_0xbcf3('0x2b')](function(_0x5e916f){if(_0x5e916f){return _0x5e916f[_0xbcf3('0x8f')](_0x3086f6[_0xbcf3('0x37')][_0xbcf3('0x79')])[_0xbcf3('0x2b')](function(){if(_['isArray'](_0x3086f6[_0xbcf3('0x37')]['ids'])){for(var _0x24633f=0x0;_0x24633f<_0x3086f6[_0xbcf3('0x37')][_0xbcf3('0x79')][_0xbcf3('0x3d')];_0x24633f+=0x1){socket[_0xbcf3('0x76')](_0xbcf3('0x90'),{'UserId':Number(_0x3086f6[_0xbcf3('0x37')][_0xbcf3('0x79')][_0x24633f]),'MailQueueId':Number(_0x3086f6['params']['id'])});}}else{socket[_0xbcf3('0x76')]('userMailQueue:remove',{'UserId':Number(_0x3086f6[_0xbcf3('0x37')][_0xbcf3('0x79')]),'MailQueueId':Number(_0x3086f6['params']['id'])});}});}})['then'](respondWithStatusCode(_0x387a47,null))['catch'](handleError(_0x387a47,null));};exports[_0xbcf3('0x94')]=function(_0x5991b5,_0x5e0015,_0x2a30ca){var _0x4867fe={};var _0x293655={};var _0x4a73cb;var _0x3418e8;return db[_0xbcf3('0x47')][_0xbcf3('0x5c')]({'where':{'id':_0x5991b5[_0xbcf3('0x4d')]['id']}})[_0xbcf3('0x2b')](handleEntityNotFound(_0x5e0015,null))[_0xbcf3('0x2b')](function(_0xbf7e9d){if(_0xbf7e9d){_0x4a73cb=_0xbf7e9d;_0x293655[_0xbcf3('0x3a')]=_[_0xbcf3('0x36')](db['User'][_0xbcf3('0x33')]);_0x293655[_0xbcf3('0x37')]=_[_0xbcf3('0x36')](_0x5991b5[_0xbcf3('0x37')]);_0x293655['filters']=_[_0xbcf3('0x39')](_0x293655[_0xbcf3('0x3a')],_0x293655[_0xbcf3('0x37')]);_0x4867fe[_0xbcf3('0x3b')]=_[_0xbcf3('0x39')](_0x293655['model'],qs[_0xbcf3('0x3c')](_0x5991b5[_0xbcf3('0x37')][_0xbcf3('0x3c')]));_0x4867fe[_0xbcf3('0x3b')]=_0x4867fe[_0xbcf3('0x3b')][_0xbcf3('0x3d')]?_0x4867fe[_0xbcf3('0x3b')]:_0x293655[_0xbcf3('0x3a')];_0x4867fe['order']=qs[_0xbcf3('0x41')](_0x5991b5['query'][_0xbcf3('0x41')]);_0x4867fe[_0xbcf3('0x42')]=qs[_0xbcf3('0x38')](_['pick'](_0x5991b5[_0xbcf3('0x37')],_0x293655[_0xbcf3('0x38')]));if(_0x5991b5['query'][_0xbcf3('0x43')]){_0x4867fe[_0xbcf3('0x42')]=_['merge'](_0x4867fe[_0xbcf3('0x42')],{'$or':_[_0xbcf3('0x35')](_0x4867fe['attributes'],function(_0x3f038f){var _0x5ee736={};_0x5ee736[_0x3f038f]={'$like':'%'+_0x5991b5[_0xbcf3('0x37')][_0xbcf3('0x43')]+'%'};return _0x5ee736;})});}_0x4867fe=_[_0xbcf3('0x4e')]({},_0x4867fe,_0x5991b5[_0xbcf3('0x46')]);return _0x4a73cb['getAgents'](_0x4867fe);}})[_0xbcf3('0x2b')](function(_0xcbde35){if(_0xcbde35){_0x3418e8=_0xcbde35[_0xbcf3('0x3d')];if(!_0x5991b5[_0xbcf3('0x37')][_0xbcf3('0x3e')](_0xbcf3('0x3f'))){_0x4867fe['limit']=qs[_0xbcf3('0x23')](_0x5991b5[_0xbcf3('0x37')][_0xbcf3('0x23')]);_0x4867fe[_0xbcf3('0x25')]=qs['offset'](_0x5991b5['query'][_0xbcf3('0x25')]);}return _0x4a73cb['getAgents'](_0x4867fe);}})[_0xbcf3('0x2b')](function(_0x4488a1){if(_0x4488a1){return _0x4488a1?{'count':_0x3418e8,'rows':_0x4488a1}:null;}})[_0xbcf3('0x2b')](respondWithResult(_0x5e0015,null))['catch'](handleError(_0x5e0015,null));};
\ No newline at end of file
index f155a27..afe308a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a28=['events','../../mysqldb','MailQueue','setMaxListeners','remove','emit','hook'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x6a28,0xd9));var _0x86a2=function(_0x691a76,_0x2bad35){_0x691a76=_0x691a76-0x0;var _0x42a659=_0x6a28[_0x691a76];return _0x42a659;};'use strict';var EventEmitter=require(_0x86a2('0x0'));var MailQueue=require(_0x86a2('0x1'))['db'][_0x86a2('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x86a2('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x86a2('0x4')};function emitEvent(_0x192945){return function(_0x36d4af,_0x455a27,_0x53efb8){MailQueueEvents[_0x86a2('0x5')](_0x192945+':'+_0x36d4af['id'],_0x36d4af);MailQueueEvents['emit'](_0x192945,_0x36d4af);_0x53efb8(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailQueue[_0x86a2('0x6')](e,emitEvent(event));}}module['exports']=MailQueueEvents;
\ No newline at end of file
+var _0x0e72=['emit','hook','exports','events','MailQueue','setMaxListeners','save','update'];(function(_0x35e3b8,_0x1f543f){var _0xae5b9a=function(_0x483dd6){while(--_0x483dd6){_0x35e3b8['push'](_0x35e3b8['shift']());}};_0xae5b9a(++_0x1f543f);}(_0x0e72,0x93));var _0x20e7=function(_0x436c0a,_0x46805d){_0x436c0a=_0x436c0a-0x0;var _0x3570d9=_0x0e72[_0x436c0a];return _0x3570d9;};'use strict';var EventEmitter=require(_0x20e7('0x0'));var MailQueue=require('../../mysqldb')['db'][_0x20e7('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x20e7('0x2')](0x0);var events={'afterCreate':_0x20e7('0x3'),'afterUpdate':_0x20e7('0x4'),'afterDestroy':'remove'};function emitEvent(_0x598aab){return function(_0x359ca7,_0x12bb22,_0xa61e21){MailQueueEvents['emit'](_0x598aab+':'+_0x359ca7['id'],_0x359ca7);MailQueueEvents[_0x20e7('0x5')](_0x598aab,_0x359ca7);_0xa61e21(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailQueue[_0x20e7('0x6')](e,emitEvent(event));}}module[_0x20e7('0x7')]=MailQueueEvents;
\ No newline at end of file
index 69798d8..94e970d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59b8=['./mailQueue.attributes','exports','define','MailQueue','mail_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x882f69,_0x2197ac){var _0x255487=function(_0x3c0032){while(--_0x3c0032){_0x882f69['push'](_0x882f69['shift']());}};_0x255487(++_0x2197ac);}(_0x59b8,0x1f3));var _0x859b=function(_0x88a360,_0x3684b2){_0x88a360=_0x88a360-0x0;var _0xf83b59=_0x59b8[_0x88a360];return _0xf83b59;};'use strict';var _=require(_0x859b('0x0'));var util=require(_0x859b('0x1'));var logger=require(_0x859b('0x2'))(_0x859b('0x3'));var moment=require(_0x859b('0x4'));var BPromise=require('bluebird');var rp=require(_0x859b('0x5'));var fs=require('fs');var path=require(_0x859b('0x6'));var rimraf=require(_0x859b('0x7'));var config=require('../../config/environment');var attributes=require(_0x859b('0x8'));module[_0x859b('0x9')]=function(_0xa4d4cf,_0x1fd1d4){return _0xa4d4cf[_0x859b('0xa')](_0x859b('0xb'),attributes,{'tableName':_0x859b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x20a5=['MailQueue','mail_queues','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./mailQueue.attributes','exports'];(function(_0x12dd2f,_0x3aba83){var _0x4ec6b8=function(_0x2df29d){while(--_0x2df29d){_0x12dd2f['push'](_0x12dd2f['shift']());}};_0x4ec6b8(++_0x3aba83);}(_0x20a5,0xce));var _0x520a=function(_0x1fe246,_0x1b8913){_0x1fe246=_0x1fe246-0x0;var _0x2cbd82=_0x20a5[_0x1fe246];return _0x2cbd82;};'use strict';var _=require('lodash');var util=require(_0x520a('0x0'));var logger=require(_0x520a('0x1'))(_0x520a('0x2'));var moment=require('moment');var BPromise=require(_0x520a('0x3'));var rp=require(_0x520a('0x4'));var fs=require('fs');var path=require(_0x520a('0x5'));var rimraf=require(_0x520a('0x6'));var config=require(_0x520a('0x7'));var attributes=require(_0x520a('0x8'));module[_0x520a('0x9')]=function(_0x1e5f73,_0x3ab28c){return _0x1e5f73['define'](_0x520a('0xa'),attributes,{'tableName':_0x520a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 24fd1fb..9006469 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73d7=['map','ShowMailQueue','debug','util','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','client','http','defaults','localhost','./mailQueue.socket','register','request','MailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','MailQueue,\x20%s,\x20%s','message','info','result','catch','GetMailQueue','MailQueue','findAll','options','raw','attributes','include','model'];(function(_0x3f8bdb,_0x62748f){var _0x154df4=function(_0x22be51){while(--_0x22be51){_0x3f8bdb['push'](_0x3f8bdb['shift']());}};_0x154df4(++_0x62748f);}(_0x73d7,0x135));var _0x773d=function(_0x6f80c,_0x99b349){_0x6f80c=_0x6f80c-0x0;var _0x281cf6=_0x73d7[_0x6f80c];return _0x281cf6;};'use strict';var _=require('lodash');var util=require(_0x773d('0x0'));var moment=require('moment');var BPromise=require(_0x773d('0x1'));var rs=require(_0x773d('0x2'));var fs=require('fs');var Redis=require(_0x773d('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x773d('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x773d('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x773d('0x6')][_0x773d('0x7')]({'port':0x232a});config['redis']=_[_0x773d('0x8')](config['redis'],{'host':_0x773d('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x773d('0xa'))[_0x773d('0xb')](socket);function respondWithRpcPromise(_0x1acabb,_0x12eff2,_0x2d4917){return new BPromise(function(_0x380f81,_0x549467){return client[_0x773d('0xc')](_0x1acabb,_0x2d4917)['then'](function(_0x48e6ca){logger['info']('MailQueue,\x20%s,\x20%s',_0x12eff2,'request\x20sent');logger['debug'](_0x773d('0xd'),_0x12eff2,_0x773d('0xe'),JSON[_0x773d('0xf')](_0x48e6ca));if(_0x48e6ca[_0x773d('0x10')]){if(_0x48e6ca[_0x773d('0x10')][_0x773d('0x11')]===0x1f4){logger[_0x773d('0x10')](_0x773d('0x12'),_0x12eff2,_0x48e6ca[_0x773d('0x10')][_0x773d('0x13')]);return _0x549467(_0x48e6ca[_0x773d('0x10')][_0x773d('0x13')]);}logger[_0x773d('0x10')](_0x773d('0x12'),_0x12eff2,_0x48e6ca[_0x773d('0x10')]['message']);return _0x380f81(_0x48e6ca['error']['message']);}else{logger[_0x773d('0x14')]('MailQueue,\x20%s,\x20%s',_0x12eff2,_0x773d('0xe'));_0x380f81(_0x48e6ca[_0x773d('0x15')]['message']);}})[_0x773d('0x16')](function(_0xd6caed){logger[_0x773d('0x10')](_0x773d('0x12'),_0x12eff2,_0xd6caed);_0x549467(_0xd6caed);});});}exports[_0x773d('0x17')]=function(_0xb519dd){var _0x238ccb=this;return new Promise(function(_0x2f6c15,_0x39cc1f){return db[_0x773d('0x18')][_0x773d('0x19')]({'raw':_0xb519dd[_0x773d('0x1a')]?_0xb519dd[_0x773d('0x1a')][_0x773d('0x1b')]===undefined?!![]:![]:!![],'where':_0xb519dd[_0x773d('0x1a')]?_0xb519dd[_0x773d('0x1a')]['where']||null:null,'attributes':_0xb519dd[_0x773d('0x1a')]?_0xb519dd['options'][_0x773d('0x1c')]||null:null,'limit':_0xb519dd[_0x773d('0x1a')]?_0xb519dd[_0x773d('0x1a')]['limit']||null:null,'include':_0xb519dd['options']?_0xb519dd['options'][_0x773d('0x1d')]?_['map'](_0xb519dd['options']['include'],function(_0x571612){return{'model':db[_0x571612[_0x773d('0x1e')]],'as':_0x571612['as'],'attributes':_0x571612[_0x773d('0x1c')],'include':_0x571612[_0x773d('0x1d')]?_[_0x773d('0x1f')](_0x571612[_0x773d('0x1d')],function(_0x2e11b3){return{'model':db[_0x2e11b3[_0x773d('0x1e')]],'as':_0x2e11b3['as'],'attributes':_0x2e11b3[_0x773d('0x1c')],'include':_0x2e11b3['include']?_[_0x773d('0x1f')](_0x2e11b3[_0x773d('0x1d')],function(_0x4705b4){return{'model':db[_0x4705b4[_0x773d('0x1e')]],'as':_0x4705b4['as'],'attributes':_0x4705b4[_0x773d('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1a4992){logger[_0x773d('0x14')](_0x773d('0x17'),_0xb519dd);logger['debug'](_0x773d('0x17'),_0xb519dd,JSON[_0x773d('0xf')](_0x1a4992));_0x2f6c15(_0x1a4992);})[_0x773d('0x16')](function(_0x1c58b5){logger[_0x773d('0x10')]('GetMailQueue',_0x1c58b5[_0x773d('0x13')],_0xb519dd);_0x39cc1f(_0x238ccb[_0x773d('0x10')](0x1f4,_0x1c58b5[_0x773d('0x13')]));});});};exports[_0x773d('0x20')]=function(_0xe85b09){var _0x47cb2d=this;return new Promise(function(_0x527a50,_0x52c2a1){return db['MailQueue']['find']({'raw':_0xe85b09[_0x773d('0x1a')]?_0xe85b09[_0x773d('0x1a')][_0x773d('0x1b')]===undefined?!![]:![]:!![],'where':_0xe85b09['options']?_0xe85b09[_0x773d('0x1a')]['where']||null:null,'attributes':_0xe85b09['options']?_0xe85b09[_0x773d('0x1a')][_0x773d('0x1c')]||null:null,'include':_0xe85b09[_0x773d('0x1a')]?_0xe85b09[_0x773d('0x1a')]['include']?_[_0x773d('0x1f')](_0xe85b09[_0x773d('0x1a')][_0x773d('0x1d')],function(_0x263638){return{'model':db[_0x263638[_0x773d('0x1e')]],'as':_0x263638['as'],'attributes':_0x263638['attributes'],'include':_0x263638[_0x773d('0x1d')]?_['map'](_0x263638[_0x773d('0x1d')],function(_0x57d060){return{'model':db[_0x57d060['model']],'as':_0x57d060['as'],'attributes':_0x57d060[_0x773d('0x1c')],'include':_0x57d060[_0x773d('0x1d')]?_['map'](_0x57d060[_0x773d('0x1d')],function(_0x59f108){return{'model':db[_0x59f108[_0x773d('0x1e')]],'as':_0x59f108['as'],'attributes':_0x59f108[_0x773d('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x499fc9){logger[_0x773d('0x14')]('ShowMailQueue',_0xe85b09);logger[_0x773d('0x21')](_0x773d('0x20'),_0xe85b09,JSON[_0x773d('0xf')](_0x499fc9));_0x527a50(_0x499fc9);})[_0x773d('0x16')](function(_0x409def){logger['error']('ShowMailQueue',_0x409def[_0x773d('0x13')],_0xe85b09);_0x52c2a1(_0x47cb2d[_0x773d('0x10')](0x1f4,_0x409def[_0x773d('0x13')]));});});};
\ No newline at end of file
+var _0x6b40=['../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','request\x20sent','MailQueue,\x20%s,\x20%s,\x20%s','error','code','message','catch','MailQueue,\x20%s,\x20%s','GetMailQueue','findAll','options','where','attributes','limit','include','map','model','debug','ShowMailQueue','MailQueue','find','raw','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x22ef70,_0x53f0dc){var _0x5bf3b3=function(_0x10914d){while(--_0x10914d){_0x22ef70['push'](_0x22ef70['shift']());}};_0x5bf3b3(++_0x53f0dc);}(_0x6b40,0xcb));var _0x06b4=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x6b40[_0x199572];return _0x13cfa3;};'use strict';var _=require(_0x06b4('0x0'));var util=require(_0x06b4('0x1'));var moment=require(_0x06b4('0x2'));var BPromise=require(_0x06b4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x06b4('0x4'));var db=require(_0x06b4('0x5'))['db'];var utils=require(_0x06b4('0x6'));var logger=require(_0x06b4('0x7'))('rpc');var config=require(_0x06b4('0x8'));var jayson=require(_0x06b4('0x9'));var client=jayson[_0x06b4('0xa')][_0x06b4('0xb')]({'port':0x232a});config[_0x06b4('0xc')]=_[_0x06b4('0xd')](config[_0x06b4('0xc')],{'host':_0x06b4('0xe'),'port':0x18eb});var socket=require(_0x06b4('0xf'))(new Redis(config[_0x06b4('0xc')]));require('./mailQueue.socket')[_0x06b4('0x10')](socket);function respondWithRpcPromise(_0x4b8450,_0x3648ad,_0x51c7bd){return new BPromise(function(_0x1b97ae,_0x22c589){return client[_0x06b4('0x11')](_0x4b8450,_0x51c7bd)[_0x06b4('0x12')](function(_0x53a3da){logger[_0x06b4('0x13')]('MailQueue,\x20%s,\x20%s',_0x3648ad,_0x06b4('0x14'));logger['debug'](_0x06b4('0x15'),_0x3648ad,_0x06b4('0x14'),JSON['stringify'](_0x53a3da));if(_0x53a3da[_0x06b4('0x16')]){if(_0x53a3da[_0x06b4('0x16')][_0x06b4('0x17')]===0x1f4){logger['error']('MailQueue,\x20%s,\x20%s',_0x3648ad,_0x53a3da[_0x06b4('0x16')]['message']);return _0x22c589(_0x53a3da[_0x06b4('0x16')]['message']);}logger[_0x06b4('0x16')]('MailQueue,\x20%s,\x20%s',_0x3648ad,_0x53a3da['error'][_0x06b4('0x18')]);return _0x1b97ae(_0x53a3da[_0x06b4('0x16')][_0x06b4('0x18')]);}else{logger[_0x06b4('0x13')]('MailQueue,\x20%s,\x20%s',_0x3648ad,_0x06b4('0x14'));_0x1b97ae(_0x53a3da['result'][_0x06b4('0x18')]);}})[_0x06b4('0x19')](function(_0x2916e8){logger['error'](_0x06b4('0x1a'),_0x3648ad,_0x2916e8);_0x22c589(_0x2916e8);});});}exports[_0x06b4('0x1b')]=function(_0x23c9a6){var _0x566c43=this;return new Promise(function(_0x2c3d77,_0x2bc994){return db['MailQueue'][_0x06b4('0x1c')]({'raw':_0x23c9a6[_0x06b4('0x1d')]?_0x23c9a6[_0x06b4('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x23c9a6[_0x06b4('0x1d')]?_0x23c9a6[_0x06b4('0x1d')][_0x06b4('0x1e')]||null:null,'attributes':_0x23c9a6[_0x06b4('0x1d')]?_0x23c9a6[_0x06b4('0x1d')][_0x06b4('0x1f')]||null:null,'limit':_0x23c9a6['options']?_0x23c9a6[_0x06b4('0x1d')][_0x06b4('0x20')]||null:null,'include':_0x23c9a6[_0x06b4('0x1d')]?_0x23c9a6[_0x06b4('0x1d')][_0x06b4('0x21')]?_[_0x06b4('0x22')](_0x23c9a6[_0x06b4('0x1d')]['include'],function(_0x28b35f){return{'model':db[_0x28b35f[_0x06b4('0x23')]],'as':_0x28b35f['as'],'attributes':_0x28b35f[_0x06b4('0x1f')],'include':_0x28b35f[_0x06b4('0x21')]?_[_0x06b4('0x22')](_0x28b35f[_0x06b4('0x21')],function(_0x54a66c){return{'model':db[_0x54a66c['model']],'as':_0x54a66c['as'],'attributes':_0x54a66c[_0x06b4('0x1f')],'include':_0x54a66c[_0x06b4('0x21')]?_[_0x06b4('0x22')](_0x54a66c[_0x06b4('0x21')],function(_0x2f46a7){return{'model':db[_0x2f46a7[_0x06b4('0x23')]],'as':_0x2f46a7['as'],'attributes':_0x2f46a7['attributes']};}):[]};}):[]};}):[]:[]})[_0x06b4('0x12')](function(_0x44ab38){logger[_0x06b4('0x13')](_0x06b4('0x1b'),_0x23c9a6);logger[_0x06b4('0x24')](_0x06b4('0x1b'),_0x23c9a6,JSON['stringify'](_0x44ab38));_0x2c3d77(_0x44ab38);})[_0x06b4('0x19')](function(_0x8b7bbb){logger['error'](_0x06b4('0x1b'),_0x8b7bbb[_0x06b4('0x18')],_0x23c9a6);_0x2bc994(_0x566c43[_0x06b4('0x16')](0x1f4,_0x8b7bbb[_0x06b4('0x18')]));});});};exports[_0x06b4('0x25')]=function(_0x2749c2){var _0x41f8e4=this;return new Promise(function(_0x319b1e,_0x4807f3){return db[_0x06b4('0x26')][_0x06b4('0x27')]({'raw':_0x2749c2[_0x06b4('0x1d')]?_0x2749c2['options'][_0x06b4('0x28')]===undefined?!![]:![]:!![],'where':_0x2749c2['options']?_0x2749c2[_0x06b4('0x1d')][_0x06b4('0x1e')]||null:null,'attributes':_0x2749c2[_0x06b4('0x1d')]?_0x2749c2[_0x06b4('0x1d')][_0x06b4('0x1f')]||null:null,'include':_0x2749c2['options']?_0x2749c2[_0x06b4('0x1d')]['include']?_[_0x06b4('0x22')](_0x2749c2[_0x06b4('0x1d')][_0x06b4('0x21')],function(_0x43e225){return{'model':db[_0x43e225['model']],'as':_0x43e225['as'],'attributes':_0x43e225[_0x06b4('0x1f')],'include':_0x43e225[_0x06b4('0x21')]?_[_0x06b4('0x22')](_0x43e225[_0x06b4('0x21')],function(_0x5eb6d2){return{'model':db[_0x5eb6d2[_0x06b4('0x23')]],'as':_0x5eb6d2['as'],'attributes':_0x5eb6d2[_0x06b4('0x1f')],'include':_0x5eb6d2['include']?_[_0x06b4('0x22')](_0x5eb6d2[_0x06b4('0x21')],function(_0x2d50e0){return{'model':db[_0x2d50e0[_0x06b4('0x23')]],'as':_0x2d50e0['as'],'attributes':_0x2d50e0[_0x06b4('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x06b4('0x12')](function(_0x48dade){logger['info'](_0x06b4('0x25'),_0x2749c2);logger[_0x06b4('0x24')]('ShowMailQueue',_0x2749c2,JSON[_0x06b4('0x29')](_0x48dade));_0x319b1e(_0x48dade);})[_0x06b4('0x19')](function(_0x5be53e){logger[_0x06b4('0x16')](_0x06b4('0x25'),_0x5be53e[_0x06b4('0x18')],_0x2749c2);_0x4807f3(_0x41f8e4[_0x06b4('0x16')](0x1f4,_0x5be53e[_0x06b4('0x18')]));});});};
\ No newline at end of file
index 3c82295..5e8b013 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7915=['remove','update','emit','removeListener','length','./mailQueue.events','save'];(function(_0x1fdf4b,_0x1843ec){var _0x3cc125=function(_0x408d6a){while(--_0x408d6a){_0x1fdf4b['push'](_0x1fdf4b['shift']());}};_0x3cc125(++_0x1843ec);}(_0x7915,0x1a9));var _0x5791=function(_0x38d4cc,_0x1ebdda){_0x38d4cc=_0x38d4cc-0x0;var _0x4cd150=_0x7915[_0x38d4cc];return _0x4cd150;};'use strict';var MailQueueEvents=require(_0x5791('0x0'));var events=[_0x5791('0x1'),_0x5791('0x2'),_0x5791('0x3')];function createListener(_0x117668,_0x5e7203){return function(_0x5cee46){_0x5e7203[_0x5791('0x4')](_0x117668,_0x5cee46);};}function removeListener(_0x9ae5f5,_0x1968f4){return function(){MailQueueEvents[_0x5791('0x5')](_0x9ae5f5,_0x1968f4);};}exports['register']=function(_0x2e5424){for(var _0x7a639f=0x0,_0x2ec253=events[_0x5791('0x6')];_0x7a639f<_0x2ec253;_0x7a639f++){var _0x296fba=events[_0x7a639f];var _0x370f18=createListener('mailQueue:'+_0x296fba,_0x2e5424);MailQueueEvents['on'](_0x296fba,_0x370f18);}};
\ No newline at end of file
+var _0xc2af=['register','length','mailQueue:','./mailQueue.events','remove','emit','removeListener'];(function(_0x1255f0,_0x4836ec){var _0x2facbe=function(_0x106bdd){while(--_0x106bdd){_0x1255f0['push'](_0x1255f0['shift']());}};_0x2facbe(++_0x4836ec);}(_0xc2af,0x1bc));var _0xfc2a=function(_0x21ff5b,_0x49b53f){_0x21ff5b=_0x21ff5b-0x0;var _0x2fc139=_0xc2af[_0x21ff5b];return _0x2fc139;};'use strict';var MailQueueEvents=require(_0xfc2a('0x0'));var events=['save',_0xfc2a('0x1'),'update'];function createListener(_0x20fc4b,_0x2de393){return function(_0x35380d){_0x2de393[_0xfc2a('0x2')](_0x20fc4b,_0x35380d);};}function removeListener(_0x2f515d,_0x343c03){return function(){MailQueueEvents[_0xfc2a('0x3')](_0x2f515d,_0x343c03);};}exports[_0xfc2a('0x4')]=function(_0x4e2d6b){for(var _0x40f855=0x0,_0x4c193b=events[_0xfc2a('0x5')];_0x40f855<_0x4c193b;_0x40f855++){var _0x5cc7fc=events[_0x40f855];var _0x1b96b1=createListener(_0xfc2a('0x6')+_0x5cc7fc,_0x4e2d6b);MailQueueEvents['on'](_0x5cc7fc,_0x1b96b1);}};
\ No newline at end of file
index e540d6e..ec1f612 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45bd=['/:id','show','post','create','put','update','delete','destroy','exports','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','index','/describe'];(function(_0x2ba601,_0x36e8ce){var _0x343f36=function(_0x4561e0){while(--_0x4561e0){_0x2ba601['push'](_0x2ba601['shift']());}};_0x343f36(++_0x36e8ce);}(_0x45bd,0x1c2));var _0xd45b=function(_0x3c7237,_0x14b99b){_0x3c7237=_0x3c7237-0x0;var _0x4a0179=_0x45bd[_0x3c7237];return _0x4a0179;};'use strict';var multer=require('multer');var util=require(_0xd45b('0x0'));var path=require('path');var timeout=require(_0xd45b('0x1'));var express=require(_0xd45b('0x2'));var router=express['Router']();var fs_extra=require(_0xd45b('0x3'));var auth=require(_0xd45b('0x4'));var interaction=require(_0xd45b('0x5'));var config=require(_0xd45b('0x6'));var controller=require(_0xd45b('0x7'));router[_0xd45b('0x8')]('/',auth[_0xd45b('0x9')](),controller[_0xd45b('0xa')]);router[_0xd45b('0x8')](_0xd45b('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0xd45b('0x8')](_0xd45b('0xc'),auth[_0xd45b('0x9')](),controller[_0xd45b('0xd')]);router[_0xd45b('0xe')]('/',auth[_0xd45b('0x9')](),controller[_0xd45b('0xf')]);router[_0xd45b('0x10')]('/:id',auth[_0xd45b('0x9')](),controller[_0xd45b('0x11')]);router[_0xd45b('0x12')]('/:id',auth[_0xd45b('0x9')](),controller[_0xd45b('0x13')]);module[_0xd45b('0x14')]=router;
\ No newline at end of file
+var _0x1a2f=['./mailQueueReport.controller','isAuthenticated','index','get','/describe','/:id','show','post','create','update','delete','destroy','exports','multer','path','connect-timeout','express','../../components/interaction/service'];(function(_0x51fe99,_0x3ee3ac){var _0x29dad9=function(_0x1dafdf){while(--_0x1dafdf){_0x51fe99['push'](_0x51fe99['shift']());}};_0x29dad9(++_0x3ee3ac);}(_0x1a2f,0x187));var _0xf1a2=function(_0x548779,_0x1eb9f9){_0x548779=_0x548779-0x0;var _0x56c2d7=_0x1a2f[_0x548779];return _0x56c2d7;};'use strict';var multer=require(_0xf1a2('0x0'));var util=require('util');var path=require(_0xf1a2('0x1'));var timeout=require(_0xf1a2('0x2'));var express=require(_0xf1a2('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xf1a2('0x4'));var config=require('../../config/environment');var controller=require(_0xf1a2('0x5'));router['get']('/',auth[_0xf1a2('0x6')](),controller[_0xf1a2('0x7')]);router[_0xf1a2('0x8')](_0xf1a2('0x9'),auth[_0xf1a2('0x6')](),controller['describe']);router['get'](_0xf1a2('0xa'),auth[_0xf1a2('0x6')](),controller[_0xf1a2('0xb')]);router[_0xf1a2('0xc')]('/',auth[_0xf1a2('0x6')](),controller[_0xf1a2('0xd')]);router['put'](_0xf1a2('0xa'),auth[_0xf1a2('0x6')](),controller[_0xf1a2('0xe')]);router[_0xf1a2('0xf')]('/:id',auth[_0xf1a2('0x6')](),controller[_0xf1a2('0x10')]);module[_0xf1a2('0x11')]=router;
\ No newline at end of file
index 7357fde..d24047d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7278=['exports','STRING','DATE','moment'];(function(_0x55489b,_0x2d1fe5){var _0x3a0051=function(_0x534d02){while(--_0x534d02){_0x55489b['push'](_0x55489b['shift']());}};_0x3a0051(++_0x2d1fe5);}(_0x7278,0xfb));var _0x8727=function(_0x58fe57,_0x1afd9c){_0x58fe57=_0x58fe57-0x0;var _0x45b8aa=_0x7278[_0x58fe57];return _0x45b8aa;};'use strict';var moment=require(_0x8727('0x0'));var Sequelize=require('sequelize');module[_0x8727('0x1')]={'uniqueid':{'type':Sequelize[_0x8727('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x8727('0x2')]},'joinAt':{'type':Sequelize[_0x8727('0x3')]},'leaveAt':{'type':Sequelize[_0x8727('0x3')]},'acceptAt':{'type':Sequelize[_0x8727('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x8727('0x2')]}};
\ No newline at end of file
+var _0x28d0=['STRING','DATE','moment','sequelize','exports'];(function(_0x3785ad,_0x6071ef){var _0x14d378=function(_0x9bd7a5){while(--_0x9bd7a5){_0x3785ad['push'](_0x3785ad['shift']());}};_0x14d378(++_0x6071ef);}(_0x28d0,0x138));var _0x028d=function(_0x25e069,_0x3e73f5){_0x25e069=_0x25e069-0x0;var _0x46c0b8=_0x28d0[_0x25e069];return _0x46c0b8;};'use strict';var moment=require(_0x028d('0x0'));var Sequelize=require(_0x028d('0x1'));module[_0x028d('0x2')]={'uniqueid':{'type':Sequelize[_0x028d('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x028d('0x3')]},'joinAt':{'type':Sequelize[_0x028d('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x028d('0x4')]},'exitAt':{'type':Sequelize[_0x028d('0x4')]},'reason':{'type':Sequelize[_0x028d('0x3')]}};
\ No newline at end of file
index 1104aa8..a1f2d7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['json','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','MailQueueReport','key','model','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','params','keys','rawAttributes','find','create','body','catch','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range'];(function(_0x4c7a9d,_0x3a5a82){var _0x412bf2=function(_0x1d2ff4){while(--_0x1d2ff4){_0x4c7a9d['push'](_0x4c7a9d['shift']());}};_0x412bf2(++_0x3a5a82);}(_0xef0f,0x168));var _0xfef0=function(_0x232241,_0x55b319){_0x232241=_0x232241-0x0;var _0x1e3a86=_0xef0f[_0x232241];return _0x1e3a86;};'use strict';var emlformat=require(_0xfef0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfef0('0x1'));var jsonpatch=require(_0xfef0('0x2'));var rp=require(_0xfef0('0x3'));var moment=require('moment');var BPromise=require(_0xfef0('0x4'));var Mustache=require(_0xfef0('0x5'));var util=require(_0xfef0('0x6'));var path=require('path');var sox=require(_0xfef0('0x7'));var csv=require(_0xfef0('0x8'));var ejs=require(_0xfef0('0x9'));var fs=require('fs');var fs_extra=require(_0xfef0('0xa'));var _=require(_0xfef0('0xb'));var squel=require(_0xfef0('0xc'));var crypto=require('crypto');var jsforce=require(_0xfef0('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xfef0('0x8'));var querystring=require(_0xfef0('0xe'));var Papa=require(_0xfef0('0xf'));var Redis=require(_0xfef0('0x10'));var authService=require(_0xfef0('0x11'));var qs=require(_0xfef0('0x12'));var as=require(_0xfef0('0x13'));var hardwareService=require(_0xfef0('0x14'));var logger=require(_0xfef0('0x15'))(_0xfef0('0x16'));var utils=require(_0xfef0('0x17'));var config=require(_0xfef0('0x18'));var licenseUtil=require(_0xfef0('0x19'));var db=require(_0xfef0('0x1a'))['db'];function respondWithStatusCode(_0x546c7a,_0x3135ab){_0x3135ab=_0x3135ab||0xcc;return function(_0x2f4e23){if(_0x2f4e23){return _0x546c7a[_0xfef0('0x1b')](_0x3135ab);}return _0x546c7a[_0xfef0('0x1c')](_0x3135ab)[_0xfef0('0x1d')]();};}function respondWithResult(_0x45599a,_0xa9f040){_0xa9f040=_0xa9f040||0xc8;return function(_0x573ae7){if(_0x573ae7){return _0x45599a[_0xfef0('0x1c')](_0xa9f040)['json'](_0x573ae7);}};}function respondWithFilteredResult(_0x4b5bcf,_0x5acdd0){return function(_0x118b8d){if(_0x118b8d){var _0x284b6d=typeof _0x5acdd0[_0xfef0('0x1e')]===_0xfef0('0x1f')&&typeof _0x5acdd0[_0xfef0('0x20')]===_0xfef0('0x1f');var _0x155833=_0x118b8d[_0xfef0('0x21')];var _0x581459=_0x284b6d?0x0:_0x5acdd0[_0xfef0('0x1e')];var _0x1642cd=_0x284b6d?_0x118b8d[_0xfef0('0x21')]:_0x5acdd0[_0xfef0('0x1e')]+_0x5acdd0[_0xfef0('0x20')];var _0x55912f;if(_0x1642cd>=_0x155833){_0x1642cd=_0x155833;_0x55912f=0xc8;}else{_0x55912f=0xce;}_0x4b5bcf[_0xfef0('0x1c')](_0x55912f);return _0x4b5bcf['set'](_0xfef0('0x22'),_0x581459+'-'+_0x1642cd+'/'+_0x155833)[_0xfef0('0x23')](_0x118b8d);}return null;};}function patchUpdates(_0x28dee1){return function(_0x48408a){try{jsonpatch[_0xfef0('0x24')](_0x48408a,_0x28dee1,!![]);}catch(_0x4c304d){return BPromise[_0xfef0('0x25')](_0x4c304d);}return _0x48408a[_0xfef0('0x26')]();};}function saveUpdates(_0x52b93b,_0x4897af){return function(_0x4b8b22){if(_0x4b8b22){return _0x4b8b22[_0xfef0('0x27')](_0x52b93b)['then'](function(_0x1f9970){return _0x1f9970;});}return null;};}function removeEntity(_0x46b34a,_0x1a8d66){return function(_0x4483f2){if(_0x4483f2){return _0x4483f2[_0xfef0('0x28')]()[_0xfef0('0x29')](function(){_0x46b34a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x316e20,_0x1ffaa4){return function(_0x924f6e){if(!_0x924f6e){_0x316e20[_0xfef0('0x1b')](0x194);}return _0x924f6e;};}function handleError(_0xab231c,_0xf60f2){_0xf60f2=_0xf60f2||0x1f4;return function(_0x5df04f){logger[_0xfef0('0x2a')](_0x5df04f[_0xfef0('0x2b')]);if(_0x5df04f['name']){delete _0x5df04f[_0xfef0('0x2c')];}_0xab231c[_0xfef0('0x1c')](_0xf60f2)[_0xfef0('0x2d')](_0x5df04f);};}exports[_0xfef0('0x2e')]=function(_0x37921f,_0x1ac4a3){var _0x3e3c4c={},_0x3e026a={},_0x26cb9a={'count':0x0,'rows':[]};var _0x213a91=_[_0xfef0('0x2f')](db[_0xfef0('0x30')]['rawAttributes'],function(_0x445625){return{'name':_0x445625['fieldName'],'type':_0x445625['type'][_0xfef0('0x31')]};});_0x3e026a[_0xfef0('0x32')]=_['map'](_0x213a91,'name');_0x3e026a['query']=_['keys'](_0x37921f['query']);_0x3e026a[_0xfef0('0x33')]=_[_0xfef0('0x34')](_0x3e026a[_0xfef0('0x32')],_0x3e026a['query']);_0x3e3c4c['attributes']=_['intersection'](_0x3e026a[_0xfef0('0x32')],qs['fields'](_0x37921f[_0xfef0('0x35')][_0xfef0('0x36')]));_0x3e3c4c[_0xfef0('0x37')]=_0x3e3c4c['attributes'][_0xfef0('0x38')]?_0x3e3c4c['attributes']:_0x3e026a[_0xfef0('0x32')];if(!_0x37921f[_0xfef0('0x35')][_0xfef0('0x39')](_0xfef0('0x3a'))){_0x3e3c4c[_0xfef0('0x20')]=qs[_0xfef0('0x20')](_0x37921f[_0xfef0('0x35')][_0xfef0('0x20')]);_0x3e3c4c['offset']=qs[_0xfef0('0x1e')](_0x37921f[_0xfef0('0x35')][_0xfef0('0x1e')]);}_0x3e3c4c[_0xfef0('0x3b')]=qs[_0xfef0('0x3c')](_0x37921f[_0xfef0('0x35')][_0xfef0('0x3c')]);_0x3e3c4c[_0xfef0('0x3d')]=qs[_0xfef0('0x33')](_[_0xfef0('0x3e')](_0x37921f[_0xfef0('0x35')],_0x3e026a[_0xfef0('0x33')]),_0x213a91);if(_0x37921f[_0xfef0('0x35')]['filter']){_0x3e3c4c[_0xfef0('0x3d')]=_['merge'](_0x3e3c4c[_0xfef0('0x3d')],{'$or':_[_0xfef0('0x2f')](_0x213a91,function(_0x1ddce6){if(_0x1ddce6['type']!==_0xfef0('0x3f')){var _0x29469e={};_0x29469e[_0x1ddce6[_0xfef0('0x2c')]]={'$like':'%'+_0x37921f['query'][_0xfef0('0x40')]+'%'};return _0x29469e;}})});}_0x3e3c4c=_[_0xfef0('0x41')]({},_0x3e3c4c,_0x37921f[_0xfef0('0x42')]);var _0x5577f4={'where':_0x3e3c4c[_0xfef0('0x3d')]};return db['MailQueueReport']['count'](_0x5577f4)[_0xfef0('0x29')](function(_0x547a5d){_0x26cb9a['count']=_0x547a5d;if(_0x37921f[_0xfef0('0x35')][_0xfef0('0x43')]){_0x3e3c4c[_0xfef0('0x44')]=[{'all':!![]}];}return db[_0xfef0('0x30')][_0xfef0('0x45')](_0x3e3c4c);})[_0xfef0('0x29')](function(_0x4dd8f8){_0x26cb9a[_0xfef0('0x46')]=_0x4dd8f8;return _0x26cb9a;})[_0xfef0('0x29')](respondWithFilteredResult(_0x1ac4a3,_0x3e3c4c))['catch'](handleError(_0x1ac4a3,null));};exports['show']=function(_0x1d554e,_0x5dc824){var _0x1fc518={'raw':!![],'where':{'id':_0x1d554e[_0xfef0('0x47')]['id']}},_0x22c940={};_0x22c940[_0xfef0('0x32')]=_[_0xfef0('0x48')](db[_0xfef0('0x30')][_0xfef0('0x49')]);_0x22c940[_0xfef0('0x35')]=_['keys'](_0x1d554e[_0xfef0('0x35')]);_0x22c940['filters']=_['intersection'](_0x22c940[_0xfef0('0x32')],_0x22c940[_0xfef0('0x35')]);_0x1fc518['attributes']=_[_0xfef0('0x34')](_0x22c940['model'],qs[_0xfef0('0x36')](_0x1d554e[_0xfef0('0x35')][_0xfef0('0x36')]));_0x1fc518[_0xfef0('0x37')]=_0x1fc518['attributes'][_0xfef0('0x38')]?_0x1fc518[_0xfef0('0x37')]:_0x22c940['model'];if(_0x1d554e['query'][_0xfef0('0x43')]){_0x1fc518['include']=[{'all':!![]}];}_0x1fc518=_[_0xfef0('0x41')]({},_0x1fc518,_0x1d554e[_0xfef0('0x42')]);return db[_0xfef0('0x30')][_0xfef0('0x4a')](_0x1fc518)[_0xfef0('0x29')](handleEntityNotFound(_0x5dc824,null))[_0xfef0('0x29')](respondWithResult(_0x5dc824,null))['catch'](handleError(_0x5dc824,null));};exports[_0xfef0('0x4b')]=function(_0x559a28,_0x5a417e){return db[_0xfef0('0x30')][_0xfef0('0x4b')](_0x559a28[_0xfef0('0x4c')],{})['then'](respondWithResult(_0x5a417e,0xc9))[_0xfef0('0x4d')](handleError(_0x5a417e,null));};exports['update']=function(_0x5dd26b,_0x51f207){if(_0x5dd26b[_0xfef0('0x4c')]['id']){delete _0x5dd26b[_0xfef0('0x4c')]['id'];}return db[_0xfef0('0x30')][_0xfef0('0x4a')]({'where':{'id':_0x5dd26b[_0xfef0('0x47')]['id']}})[_0xfef0('0x29')](handleEntityNotFound(_0x51f207,null))[_0xfef0('0x29')](saveUpdates(_0x5dd26b[_0xfef0('0x4c')],null))[_0xfef0('0x29')](respondWithResult(_0x51f207,null))['catch'](handleError(_0x51f207,null));};exports['destroy']=function(_0x2bebec,_0x18e5ba){return db[_0xfef0('0x30')][_0xfef0('0x4a')]({'where':{'id':_0x2bebec[_0xfef0('0x47')]['id']}})[_0xfef0('0x29')](handleEntityNotFound(_0x18e5ba,null))[_0xfef0('0x29')](removeEntity(_0x18e5ba,null))[_0xfef0('0x4d')](handleError(_0x18e5ba,null));};exports['describe']=function(_0x2466e7,_0x19e449){return db[_0xfef0('0x30')][_0xfef0('0x4e')]()[_0xfef0('0x29')](respondWithResult(_0x19e449,null))['catch'](handleError(_0x19e449,null));};
\ No newline at end of file
+var _0x5c3c=['findAll','rows','params','merge','catch','create','body','find','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','end','limit','count','offset','Content-Range','json','apply','reject','save','update','then','sendStatus','stack','name','send','index','map','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','type','VIRTUAL','options','MailQueueReport','includeAll','include'];(function(_0x5338fb,_0x52a4e9){var _0x536bf2=function(_0x7066fd){while(--_0x7066fd){_0x5338fb['push'](_0x5338fb['shift']());}};_0x536bf2(++_0x52a4e9);}(_0x5c3c,0x132));var _0xc5c3=function(_0x369151,_0x179f72){_0x369151=_0x369151-0x0;var _0x4292d5=_0x5c3c[_0x369151];return _0x4292d5;};'use strict';var emlformat=require(_0xc5c3('0x0'));var rimraf=require(_0xc5c3('0x1'));var zipdir=require(_0xc5c3('0x2'));var jsonpatch=require(_0xc5c3('0x3'));var rp=require('request-promise');var moment=require(_0xc5c3('0x4'));var BPromise=require(_0xc5c3('0x5'));var Mustache=require(_0xc5c3('0x6'));var util=require(_0xc5c3('0x7'));var path=require(_0xc5c3('0x8'));var sox=require(_0xc5c3('0x9'));var csv=require(_0xc5c3('0xa'));var ejs=require(_0xc5c3('0xb'));var fs=require('fs');var fs_extra=require(_0xc5c3('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc5c3('0xd'));var deskjs=require(_0xc5c3('0xe'));var toCsv=require('to-csv');var querystring=require(_0xc5c3('0xf'));var Papa=require(_0xc5c3('0x10'));var Redis=require('ioredis');var authService=require(_0xc5c3('0x11'));var qs=require(_0xc5c3('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc5c3('0x13'));var logger=require(_0xc5c3('0x14'))(_0xc5c3('0x15'));var utils=require('../../config/utils');var config=require(_0xc5c3('0x16'));var licenseUtil=require(_0xc5c3('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b56e6,_0x44d2b9){_0x44d2b9=_0x44d2b9||0xcc;return function(_0x3f0f45){if(_0x3f0f45){return _0x2b56e6['sendStatus'](_0x44d2b9);}return _0x2b56e6[_0xc5c3('0x18')](_0x44d2b9)[_0xc5c3('0x19')]();};}function respondWithResult(_0x1488ab,_0x13a740){_0x13a740=_0x13a740||0xc8;return function(_0xc8a636){if(_0xc8a636){return _0x1488ab['status'](_0x13a740)['json'](_0xc8a636);}};}function respondWithFilteredResult(_0x4445ea,_0x577e1a){return function(_0x1bae87){if(_0x1bae87){var _0xef8b21=typeof _0x577e1a['offset']==='undefined'&&typeof _0x577e1a[_0xc5c3('0x1a')]==='undefined';var _0xa9bc84=_0x1bae87[_0xc5c3('0x1b')];var _0x2ff158=_0xef8b21?0x0:_0x577e1a[_0xc5c3('0x1c')];var _0x28bae6=_0xef8b21?_0x1bae87['count']:_0x577e1a[_0xc5c3('0x1c')]+_0x577e1a[_0xc5c3('0x1a')];var _0x123dba;if(_0x28bae6>=_0xa9bc84){_0x28bae6=_0xa9bc84;_0x123dba=0xc8;}else{_0x123dba=0xce;}_0x4445ea[_0xc5c3('0x18')](_0x123dba);return _0x4445ea['set'](_0xc5c3('0x1d'),_0x2ff158+'-'+_0x28bae6+'/'+_0xa9bc84)[_0xc5c3('0x1e')](_0x1bae87);}return null;};}function patchUpdates(_0x3cc612){return function(_0x3ca20a){try{jsonpatch[_0xc5c3('0x1f')](_0x3ca20a,_0x3cc612,!![]);}catch(_0x564815){return BPromise[_0xc5c3('0x20')](_0x564815);}return _0x3ca20a[_0xc5c3('0x21')]();};}function saveUpdates(_0x370254,_0x2de266){return function(_0x1c5793){if(_0x1c5793){return _0x1c5793[_0xc5c3('0x22')](_0x370254)[_0xc5c3('0x23')](function(_0x5996a0){return _0x5996a0;});}return null;};}function removeEntity(_0x52d638,_0x45affe){return function(_0x38dd9e){if(_0x38dd9e){return _0x38dd9e['destroy']()['then'](function(){_0x52d638[_0xc5c3('0x18')](0xcc)[_0xc5c3('0x19')]();});}};}function handleEntityNotFound(_0x38a3df,_0x52e54a){return function(_0x4af067){if(!_0x4af067){_0x38a3df[_0xc5c3('0x24')](0x194);}return _0x4af067;};}function handleError(_0x22f607,_0x20c506){_0x20c506=_0x20c506||0x1f4;return function(_0x29791c){logger['error'](_0x29791c[_0xc5c3('0x25')]);if(_0x29791c['name']){delete _0x29791c[_0xc5c3('0x26')];}_0x22f607['status'](_0x20c506)[_0xc5c3('0x27')](_0x29791c);};}exports[_0xc5c3('0x28')]=function(_0x4269eb,_0x4773c5){var _0x15361c={},_0x2d07e1={},_0x35a397={'count':0x0,'rows':[]};var _0x4b5a0c=_[_0xc5c3('0x29')](db['MailQueueReport'][_0xc5c3('0x2a')],function(_0x43ebfc){return{'name':_0x43ebfc['fieldName'],'type':_0x43ebfc['type'][_0xc5c3('0x2b')]};});_0x2d07e1[_0xc5c3('0x2c')]=_[_0xc5c3('0x29')](_0x4b5a0c,_0xc5c3('0x26'));_0x2d07e1['query']=_[_0xc5c3('0x2d')](_0x4269eb[_0xc5c3('0x2e')]);_0x2d07e1[_0xc5c3('0x2f')]=_[_0xc5c3('0x30')](_0x2d07e1[_0xc5c3('0x2c')],_0x2d07e1[_0xc5c3('0x2e')]);_0x15361c[_0xc5c3('0x31')]=_[_0xc5c3('0x30')](_0x2d07e1[_0xc5c3('0x2c')],qs['fields'](_0x4269eb[_0xc5c3('0x2e')][_0xc5c3('0x32')]));_0x15361c[_0xc5c3('0x31')]=_0x15361c[_0xc5c3('0x31')][_0xc5c3('0x33')]?_0x15361c[_0xc5c3('0x31')]:_0x2d07e1[_0xc5c3('0x2c')];if(!_0x4269eb['query']['hasOwnProperty'](_0xc5c3('0x34'))){_0x15361c['limit']=qs[_0xc5c3('0x1a')](_0x4269eb[_0xc5c3('0x2e')][_0xc5c3('0x1a')]);_0x15361c[_0xc5c3('0x1c')]=qs[_0xc5c3('0x1c')](_0x4269eb['query'][_0xc5c3('0x1c')]);}_0x15361c[_0xc5c3('0x35')]=qs['sort'](_0x4269eb[_0xc5c3('0x2e')][_0xc5c3('0x36')]);_0x15361c[_0xc5c3('0x37')]=qs[_0xc5c3('0x2f')](_[_0xc5c3('0x38')](_0x4269eb[_0xc5c3('0x2e')],_0x2d07e1[_0xc5c3('0x2f')]),_0x4b5a0c);if(_0x4269eb[_0xc5c3('0x2e')][_0xc5c3('0x39')]){_0x15361c[_0xc5c3('0x37')]=_['merge'](_0x15361c[_0xc5c3('0x37')],{'$or':_['map'](_0x4b5a0c,function(_0x4fdbe6){if(_0x4fdbe6[_0xc5c3('0x3a')]!==_0xc5c3('0x3b')){var _0x1b546e={};_0x1b546e[_0x4fdbe6[_0xc5c3('0x26')]]={'$like':'%'+_0x4269eb[_0xc5c3('0x2e')]['filter']+'%'};return _0x1b546e;}})});}_0x15361c=_['merge']({},_0x15361c,_0x4269eb[_0xc5c3('0x3c')]);var _0xa7cb91={'where':_0x15361c['where']};return db[_0xc5c3('0x3d')]['count'](_0xa7cb91)[_0xc5c3('0x23')](function(_0x2dfd19){_0x35a397[_0xc5c3('0x1b')]=_0x2dfd19;if(_0x4269eb['query'][_0xc5c3('0x3e')]){_0x15361c[_0xc5c3('0x3f')]=[{'all':!![]}];}return db['MailQueueReport'][_0xc5c3('0x40')](_0x15361c);})['then'](function(_0x33936c){_0x35a397[_0xc5c3('0x41')]=_0x33936c;return _0x35a397;})['then'](respondWithFilteredResult(_0x4773c5,_0x15361c))['catch'](handleError(_0x4773c5,null));};exports['show']=function(_0xfb64bb,_0x2f02ab){var _0x49b1fc={'raw':!![],'where':{'id':_0xfb64bb[_0xc5c3('0x42')]['id']}},_0x1a8490={};_0x1a8490[_0xc5c3('0x2c')]=_[_0xc5c3('0x2d')](db['MailQueueReport'][_0xc5c3('0x2a')]);_0x1a8490['query']=_['keys'](_0xfb64bb[_0xc5c3('0x2e')]);_0x1a8490[_0xc5c3('0x2f')]=_['intersection'](_0x1a8490[_0xc5c3('0x2c')],_0x1a8490[_0xc5c3('0x2e')]);_0x49b1fc['attributes']=_[_0xc5c3('0x30')](_0x1a8490['model'],qs[_0xc5c3('0x32')](_0xfb64bb[_0xc5c3('0x2e')]['fields']));_0x49b1fc[_0xc5c3('0x31')]=_0x49b1fc['attributes'][_0xc5c3('0x33')]?_0x49b1fc[_0xc5c3('0x31')]:_0x1a8490['model'];if(_0xfb64bb[_0xc5c3('0x2e')][_0xc5c3('0x3e')]){_0x49b1fc[_0xc5c3('0x3f')]=[{'all':!![]}];}_0x49b1fc=_[_0xc5c3('0x43')]({},_0x49b1fc,_0xfb64bb[_0xc5c3('0x3c')]);return db[_0xc5c3('0x3d')]['find'](_0x49b1fc)[_0xc5c3('0x23')](handleEntityNotFound(_0x2f02ab,null))[_0xc5c3('0x23')](respondWithResult(_0x2f02ab,null))[_0xc5c3('0x44')](handleError(_0x2f02ab,null));};exports[_0xc5c3('0x45')]=function(_0x23002b,_0x4a7330){return db['MailQueueReport'][_0xc5c3('0x45')](_0x23002b[_0xc5c3('0x46')],{})[_0xc5c3('0x23')](respondWithResult(_0x4a7330,0xc9))['catch'](handleError(_0x4a7330,null));};exports[_0xc5c3('0x22')]=function(_0x65f720,_0x3a901f){if(_0x65f720[_0xc5c3('0x46')]['id']){delete _0x65f720[_0xc5c3('0x46')]['id'];}return db[_0xc5c3('0x3d')][_0xc5c3('0x47')]({'where':{'id':_0x65f720['params']['id']}})[_0xc5c3('0x23')](handleEntityNotFound(_0x3a901f,null))[_0xc5c3('0x23')](saveUpdates(_0x65f720[_0xc5c3('0x46')],null))['then'](respondWithResult(_0x3a901f,null))[_0xc5c3('0x44')](handleError(_0x3a901f,null));};exports[_0xc5c3('0x48')]=function(_0x3b1bc2,_0x103bde){return db[_0xc5c3('0x3d')]['find']({'where':{'id':_0x3b1bc2[_0xc5c3('0x42')]['id']}})['then'](handleEntityNotFound(_0x103bde,null))[_0xc5c3('0x23')](removeEntity(_0x103bde,null))['catch'](handleError(_0x103bde,null));};exports[_0xc5c3('0x49')]=function(_0x34a2c3,_0x4add6b){return db[_0xc5c3('0x3d')][_0xc5c3('0x49')]()['then'](respondWithResult(_0x4add6b,null))[_0xc5c3('0x44')](handleError(_0x4add6b,null));};
\ No newline at end of file
index 6f1e89b..e940cc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d6a=['util','../../config/logger','moment','bluebird','path','rimraf','./mailQueueReport.attributes','exports','MailQueueReport','report_mail_queue','uniqueid','lodash'];(function(_0x1f51d5,_0x16e813){var _0xaa44fd=function(_0x3607c5){while(--_0x3607c5){_0x1f51d5['push'](_0x1f51d5['shift']());}};_0xaa44fd(++_0x16e813);}(_0x8d6a,0x143));var _0xa8d6=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x8d6a[_0x4154a6];return _0x3b2786;};'use strict';var _=require(_0xa8d6('0x0'));var util=require(_0xa8d6('0x1'));var logger=require(_0xa8d6('0x2'))('api');var moment=require(_0xa8d6('0x3'));var BPromise=require(_0xa8d6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa8d6('0x5'));var rimraf=require(_0xa8d6('0x6'));var config=require('../../config/environment');var attributes=require(_0xa8d6('0x7'));module[_0xa8d6('0x8')]=function(_0x433e35,_0x4cb97f){return _0x433e35['define'](_0xa8d6('0x9'),attributes,{'tableName':_0xa8d6('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xa8d6('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4330=['bluebird','request-promise','path','rimraf','../../config/environment','./mailQueueReport.attributes','exports','report_mail_queue','uniqueid','lodash','util','../../config/logger','api','moment'];(function(_0x321ddc,_0x58f72a){var _0x277f53=function(_0x3ebc0e){while(--_0x3ebc0e){_0x321ddc['push'](_0x321ddc['shift']());}};_0x277f53(++_0x58f72a);}(_0x4330,0x13d));var _0x0433=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x4330[_0xb0f7c3];return _0x28ea68;};'use strict';var _=require(_0x0433('0x0'));var util=require(_0x0433('0x1'));var logger=require(_0x0433('0x2'))(_0x0433('0x3'));var moment=require(_0x0433('0x4'));var BPromise=require(_0x0433('0x5'));var rp=require(_0x0433('0x6'));var fs=require('fs');var path=require(_0x0433('0x7'));var rimraf=require(_0x0433('0x8'));var config=require(_0x0433('0x9'));var attributes=require(_0x0433('0xa'));module[_0x0433('0xb')]=function(_0xd0f3f6,_0x304eba){return _0xd0f3f6['define']('MailQueueReport',attributes,{'tableName':_0x0433('0xc'),'paranoid':![],'indexes':[{'name':_0x0433('0xd'),'fields':[_0x0433('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 7964e55..2e8a612 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','MailQueueReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','MailQueueReport','create','body','options','raw','CreateMailQueueReport','UpdateMailQueueReport','update','where','attributes','limit','then','lodash','util'];(function(_0xe1695f,_0x4349bd){var _0x535027=function(_0x4b4c11){while(--_0x4b4c11){_0xe1695f['push'](_0xe1695f['shift']());}};_0x535027(++_0x4349bd);}(_0x7a54,0x106));var _0x47a5=function(_0x337bf2,_0x3be2ed){_0x337bf2=_0x337bf2-0x0;var _0x47849d=_0x7a54[_0x337bf2];return _0x47849d;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateMailQueueReport']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateMailQueueReport',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};exports[_0x47a5('0x1b')]=function(_0x513981){var _0x28747d=this;return new Promise(function(_0xc4cd63,_0x4437f1){return db[_0x47a5('0x15')][_0x47a5('0x1c')](_0x513981['body'],{'raw':_0x513981['options']?_0x513981[_0x47a5('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x513981[_0x47a5('0x18')]?_0x513981['options'][_0x47a5('0x1d')]||null:null,'attributes':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1e')]||null:null,'limit':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1f')]||null:null})[_0x47a5('0x20')](function(_0x16631f){logger[_0x47a5('0xb')](_0x47a5('0x1b'),_0x513981);logger[_0x47a5('0xd')](_0x47a5('0x1b'),_0x513981,JSON['stringify'](_0x16631f));_0xc4cd63(_0x16631f);})[_0x47a5('0x14')](function(_0x51833b){logger[_0x47a5('0xf')](_0x47a5('0x1b'),_0x51833b[_0x47a5('0x11')],_0x513981);_0x4437f1(_0x28747d['error'](0x1f4,_0x51833b[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0x1261=['../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','MailQueueReport,\x20%s,\x20%s','request\x20sent','MailQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','CreateMailQueueReport','body','options','raw','stringify','MailQueueReport','update','where','UpdateMailQueueReport','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x34a28a,_0x866670){var _0x570a73=function(_0x2018c9){while(--_0x2018c9){_0x34a28a['push'](_0x34a28a['shift']());}};_0x570a73(++_0x866670);}(_0x1261,0x144));var _0x1126=function(_0x3e32a8,_0x255953){_0x3e32a8=_0x3e32a8-0x0;var _0x2997b0=_0x1261[_0x3e32a8];return _0x2997b0;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('MailQueueReport,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}exports[_0x1126('0x15')]=function(_0x4a7b49){var _0x4d2b38=this;return new Promise(function(_0x22ae0b,_0x2b2487){return db['MailQueueReport']['create'](_0x4a7b49[_0x1126('0x16')],{'raw':_0x4a7b49['options']?_0x4a7b49[_0x1126('0x17')][_0x1126('0x18')]===undefined?!![]:![]:!![]})[_0x1126('0xc')](function(_0x54400a){logger[_0x1126('0xd')]('CreateMailQueueReport',_0x4a7b49);logger['debug'](_0x1126('0x15'),_0x4a7b49,JSON[_0x1126('0x19')](_0x54400a));_0x22ae0b(_0x54400a);})[_0x1126('0x14')](function(_0x36d254){logger['error'](_0x1126('0x15'),_0x36d254[_0x1126('0x13')],_0x4a7b49);_0x2b2487(_0x4d2b38['error'](0x1f4,_0x36d254[_0x1126('0x13')]));});});};exports['UpdateMailQueueReport']=function(_0x529dd9){var _0x4b57ab=this;return new Promise(function(_0x2199d9,_0x15bcc3){return db[_0x1126('0x1a')][_0x1126('0x1b')](_0x529dd9[_0x1126('0x16')],{'raw':_0x529dd9[_0x1126('0x17')]?_0x529dd9[_0x1126('0x17')][_0x1126('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x529dd9['options']?_0x529dd9[_0x1126('0x17')][_0x1126('0x1c')]||null:null,'attributes':_0x529dd9[_0x1126('0x17')]?_0x529dd9['options']['attributes']||null:null,'limit':_0x529dd9[_0x1126('0x17')]?_0x529dd9[_0x1126('0x17')]['limit']||null:null})[_0x1126('0xc')](function(_0x23d2bc){logger['info'](_0x1126('0x1d'),_0x529dd9);logger['debug'](_0x1126('0x1d'),_0x529dd9,JSON['stringify'](_0x23d2bc));_0x2199d9(_0x23d2bc);})[_0x1126('0x14')](function(_0x583ce6){logger[_0x1126('0x11')]('UpdateMailQueueReport',_0x583ce6['message'],_0x529dd9);_0x15bcc3(_0x4b57ab['error'](0x1f4,_0x583ce6[_0x1126('0x13')]));});});};
\ No newline at end of file
index cc1a904..eee7f92 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(_0x136031,_0x4c913f){var _0x943566=function(_0x2f07be){while(--_0x2f07be){_0x136031['push'](_0x136031['shift']());}};_0x943566(++_0x4c913f);}(_0x9c44,0x178));var _0x49c4=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0x9c44[_0x1caf6a];return _0x1bf493;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x586562,_0x746e6){var _0x406a2f=function(_0x46ecbd){while(--_0x46ecbd){_0x586562['push'](_0x586562['shift']());}};_0x406a2f(++_0x746e6);}(_0xe706,0xa3));var _0x6e70=function(_0x18c3ca,_0x3c800f){_0x18c3ca=_0x18c3ca-0x0;var _0xa9521a=_0xe706[_0x18c3ca];return _0xa9521a;};'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 c96cd3e..749ca39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88f8=['INTEGER','INBOX','exports','STRING','BOOLEAN'];(function(_0x16ed5f,_0x268230){var _0x49f1b9=function(_0x9765b3){while(--_0x9765b3){_0x16ed5f['push'](_0x16ed5f['shift']());}};_0x49f1b9(++_0x268230);}(_0x88f8,0xd4));var _0x888f=function(_0x1114ec,_0x2712fe){_0x1114ec=_0x1114ec-0x0;var _0x4ac698=_0x88f8[_0x1114ec];return _0x4ac698;};'use strict';var Sequelize=require('sequelize');module[_0x888f('0x0')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x888f('0x1')]},'authentication':{'type':Sequelize[_0x888f('0x2')],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x888f('0x1')]},'port':{'type':Sequelize[_0x888f('0x3')]},'tls':{'type':Sequelize[_0x888f('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x888f('0x1')],'defaultValue':_0x888f('0x4')},'connTimeout':{'type':Sequelize[_0x888f('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x888f('0x3')],'defaultValue':0x5},'service':{'type':Sequelize[_0x888f('0x1')]},'modernAuthentication':{'type':Sequelize[_0x888f('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xb515=['exports','STRING','INTEGER','BOOLEAN','sequelize'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xb515,0x1df));var _0x5b51=function(_0x2b2c53,_0x4bcf9b){_0x2b2c53=_0x2b2c53-0x0;var _0x311ec2=_0xb515[_0x2b2c53];return _0x311ec2;};'use strict';var Sequelize=require(_0x5b51('0x0'));module[_0x5b51('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x5b51('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x5b51('0x2')]},'port':{'type':Sequelize[_0x5b51('0x3')]},'tls':{'type':Sequelize[_0x5b51('0x4')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x5b51('0x2')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0x5b51('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x5b51('0x3')],'defaultValue':0x5},'service':{'type':Sequelize[_0x5b51('0x2')]},'modernAuthentication':{'type':Sequelize[_0x5b51('0x4')],'defaultValue':![]}};
\ No newline at end of file
index 6c787d8..916084f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a84=['../../config/logger','api','moment','bluebird','path','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn','lodash','util'];(function(_0x1dbae1,_0x36be22){var _0x452e20=function(_0x3a687c){while(--_0x3a687c){_0x1dbae1['push'](_0x1dbae1['shift']());}};_0x452e20(++_0x36be22);}(_0x2a84,0x1ba));var _0x42a8=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x2a84[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x42a8('0x0'));var util=require(_0x42a8('0x1'));var logger=require(_0x42a8('0x2'))(_0x42a8('0x3'));var moment=require(_0x42a8('0x4'));var BPromise=require(_0x42a8('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x42a8('0x6'));var rimraf=require('rimraf');var config=require(_0x42a8('0x7'));var attributes=require(_0x42a8('0x8'));module[_0x42a8('0x9')]=function(_0xcca939,_0x2b4a28){return _0xcca939[_0x42a8('0xa')](_0x42a8('0xb'),attributes,{'tableName':'mail_servers_in','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe6fb=['define','MailServerIn','lodash','../../config/logger','moment','request-promise','path','rimraf','./mailServerIn.attributes','exports'];(function(_0x23313d,_0x64e086){var _0x1dd401=function(_0x4384d0){while(--_0x4384d0){_0x23313d['push'](_0x23313d['shift']());}};_0x1dd401(++_0x64e086);}(_0xe6fb,0x1a6));var _0xbe6f=function(_0x5aab0d,_0x5f328c){_0x5aab0d=_0x5aab0d-0x0;var _0x272b83=_0xe6fb[_0x5aab0d];return _0x272b83;};'use strict';var _=require(_0xbe6f('0x0'));var util=require('util');var logger=require(_0xbe6f('0x1'))('api');var moment=require(_0xbe6f('0x2'));var BPromise=require('bluebird');var rp=require(_0xbe6f('0x3'));var fs=require('fs');var path=require(_0xbe6f('0x4'));var rimraf=require(_0xbe6f('0x5'));var config=require('../../config/environment');var attributes=require(_0xbe6f('0x6'));module[_0xbe6f('0x7')]=function(_0x105a85,_0x233464){return _0x105a85[_0xbe6f('0x8')](_0xbe6f('0x9'),attributes,{'tableName':'mail_servers_in','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8791164..af72df5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x475d=['debug','catch','lodash','util','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','GetMailServerIn','options','raw','where','attributes','limit','include','map','model'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x475d,0x110));var _0xd475=function(_0x40ebc3,_0x5b7f78){_0x40ebc3=_0x40ebc3-0x0;var _0x1d8b08=_0x475d[_0x40ebc3];return _0x1d8b08;};'use strict';var _=require(_0xd475('0x0'));var util=require(_0xd475('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd475('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xd475('0x3'));var logger=require(_0xd475('0x4'))('rpc');var config=require(_0xd475('0x5'));var jayson=require(_0xd475('0x6'));var client=jayson[_0xd475('0x7')][_0xd475('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x16a473,_0x55a8b9,_0x532324){return new BPromise(function(_0xb35147,_0x11b96d){return client[_0xd475('0x9')](_0x16a473,_0x532324)[_0xd475('0xa')](function(_0x207074){logger[_0xd475('0xb')](_0xd475('0xc'),_0x55a8b9,_0xd475('0xd'));logger['debug']('MailServerIn,\x20%s,\x20%s,\x20%s',_0x55a8b9,_0xd475('0xd'),JSON[_0xd475('0xe')](_0x207074));if(_0x207074[_0xd475('0xf')]){if(_0x207074['error'][_0xd475('0x10')]===0x1f4){logger[_0xd475('0xf')](_0xd475('0xc'),_0x55a8b9,_0x207074[_0xd475('0xf')][_0xd475('0x11')]);return _0x11b96d(_0x207074[_0xd475('0xf')][_0xd475('0x11')]);}logger[_0xd475('0xf')](_0xd475('0xc'),_0x55a8b9,_0x207074[_0xd475('0xf')]['message']);return _0xb35147(_0x207074[_0xd475('0xf')][_0xd475('0x11')]);}else{logger['info'](_0xd475('0xc'),_0x55a8b9,_0xd475('0xd'));_0xb35147(_0x207074[_0xd475('0x12')][_0xd475('0x11')]);}})['catch'](function(_0x167f60){logger[_0xd475('0xf')]('MailServerIn,\x20%s,\x20%s',_0x55a8b9,_0x167f60);_0x11b96d(_0x167f60);});});}exports[_0xd475('0x13')]=function(_0x31881f){var _0x199a94=this;return new Promise(function(_0x20d411,_0x372e66){return db['MailServerIn']['findAll']({'raw':_0x31881f[_0xd475('0x14')]?_0x31881f[_0xd475('0x14')][_0xd475('0x15')]===undefined?!![]:![]:!![],'where':_0x31881f[_0xd475('0x14')]?_0x31881f[_0xd475('0x14')][_0xd475('0x16')]||null:null,'attributes':_0x31881f[_0xd475('0x14')]?_0x31881f[_0xd475('0x14')][_0xd475('0x17')]||null:null,'limit':_0x31881f[_0xd475('0x14')]?_0x31881f[_0xd475('0x14')][_0xd475('0x18')]||null:null,'include':_0x31881f['options']?_0x31881f[_0xd475('0x14')][_0xd475('0x19')]?_[_0xd475('0x1a')](_0x31881f[_0xd475('0x14')][_0xd475('0x19')],function(_0x5dac8e){return{'model':db[_0x5dac8e[_0xd475('0x1b')]],'as':_0x5dac8e['as'],'attributes':_0x5dac8e[_0xd475('0x17')],'include':_0x5dac8e[_0xd475('0x19')]?_[_0xd475('0x1a')](_0x5dac8e[_0xd475('0x19')],function(_0xf8704c){return{'model':db[_0xf8704c[_0xd475('0x1b')]],'as':_0xf8704c['as'],'attributes':_0xf8704c[_0xd475('0x17')],'include':_0xf8704c['include']?_[_0xd475('0x1a')](_0xf8704c[_0xd475('0x19')],function(_0x559a2a){return{'model':db[_0x559a2a['model']],'as':_0x559a2a['as'],'attributes':_0x559a2a[_0xd475('0x17')]};}):[]};}):[]};}):[]:[]})[_0xd475('0xa')](function(_0x33840c){logger['info'](_0xd475('0x13'),_0x31881f);logger[_0xd475('0x1c')](_0xd475('0x13'),_0x31881f,JSON[_0xd475('0xe')](_0x33840c));_0x20d411(_0x33840c);})[_0xd475('0x1d')](function(_0x5eaf0b){logger['error'](_0xd475('0x13'),_0x5eaf0b[_0xd475('0x11')],_0x31881f);_0x372e66(_0x199a94[_0xd475('0xf')](0x1f4,_0x5eaf0b[_0xd475('0x11')]));});});};
\ No newline at end of file
+var _0xbfd5=['then','info','MailServerIn,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','GetMailServerIn','MailServerIn','findAll','options','raw','where','limit','include','map','attributes','stringify','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x3072c,_0x27b360){var _0x5d365b=function(_0x4fe967){while(--_0x4fe967){_0x3072c['push'](_0x3072c['shift']());}};_0x5d365b(++_0x27b360);}(_0xbfd5,0x1dc));var _0x5bfd=function(_0x1cd372,_0x3c302f){_0x1cd372=_0x1cd372-0x0;var _0x169016=_0xbfd5[_0x1cd372];return _0x169016;};'use strict';var _=require(_0x5bfd('0x0'));var util=require(_0x5bfd('0x1'));var moment=require(_0x5bfd('0x2'));var BPromise=require(_0x5bfd('0x3'));var rs=require(_0x5bfd('0x4'));var fs=require('fs');var Redis=require(_0x5bfd('0x5'));var db=require(_0x5bfd('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x5bfd('0x7'))(_0x5bfd('0x8'));var config=require(_0x5bfd('0x9'));var jayson=require(_0x5bfd('0xa'));var client=jayson[_0x5bfd('0xb')][_0x5bfd('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x53eb40,_0x4ab5ed,_0x46416a){return new BPromise(function(_0x3ff872,_0x1d0ccc){return client[_0x5bfd('0xd')](_0x53eb40,_0x46416a)[_0x5bfd('0xe')](function(_0x3ac577){logger[_0x5bfd('0xf')](_0x5bfd('0x10'),_0x4ab5ed,'request\x20sent');logger[_0x5bfd('0x11')]('MailServerIn,\x20%s,\x20%s,\x20%s',_0x4ab5ed,_0x5bfd('0x12'),JSON['stringify'](_0x3ac577));if(_0x3ac577['error']){if(_0x3ac577[_0x5bfd('0x13')][_0x5bfd('0x14')]===0x1f4){logger[_0x5bfd('0x13')](_0x5bfd('0x10'),_0x4ab5ed,_0x3ac577[_0x5bfd('0x13')][_0x5bfd('0x15')]);return _0x1d0ccc(_0x3ac577['error']['message']);}logger['error'](_0x5bfd('0x10'),_0x4ab5ed,_0x3ac577[_0x5bfd('0x13')][_0x5bfd('0x15')]);return _0x3ff872(_0x3ac577[_0x5bfd('0x13')][_0x5bfd('0x15')]);}else{logger[_0x5bfd('0xf')](_0x5bfd('0x10'),_0x4ab5ed,'request\x20sent');_0x3ff872(_0x3ac577[_0x5bfd('0x16')][_0x5bfd('0x15')]);}})['catch'](function(_0x857e37){logger[_0x5bfd('0x13')](_0x5bfd('0x10'),_0x4ab5ed,_0x857e37);_0x1d0ccc(_0x857e37);});});}exports[_0x5bfd('0x17')]=function(_0x4e430a){var _0x9bd6e5=this;return new Promise(function(_0x3a9231,_0x13c5c8){return db[_0x5bfd('0x18')][_0x5bfd('0x19')]({'raw':_0x4e430a[_0x5bfd('0x1a')]?_0x4e430a[_0x5bfd('0x1a')][_0x5bfd('0x1b')]===undefined?!![]:![]:!![],'where':_0x4e430a[_0x5bfd('0x1a')]?_0x4e430a[_0x5bfd('0x1a')][_0x5bfd('0x1c')]||null:null,'attributes':_0x4e430a[_0x5bfd('0x1a')]?_0x4e430a['options']['attributes']||null:null,'limit':_0x4e430a[_0x5bfd('0x1a')]?_0x4e430a[_0x5bfd('0x1a')][_0x5bfd('0x1d')]||null:null,'include':_0x4e430a[_0x5bfd('0x1a')]?_0x4e430a[_0x5bfd('0x1a')][_0x5bfd('0x1e')]?_[_0x5bfd('0x1f')](_0x4e430a['options'][_0x5bfd('0x1e')],function(_0xb63c36){return{'model':db[_0xb63c36['model']],'as':_0xb63c36['as'],'attributes':_0xb63c36[_0x5bfd('0x20')],'include':_0xb63c36[_0x5bfd('0x1e')]?_[_0x5bfd('0x1f')](_0xb63c36['include'],function(_0x4a4645){return{'model':db[_0x4a4645['model']],'as':_0x4a4645['as'],'attributes':_0x4a4645[_0x5bfd('0x20')],'include':_0x4a4645[_0x5bfd('0x1e')]?_[_0x5bfd('0x1f')](_0x4a4645[_0x5bfd('0x1e')],function(_0xc899c6){return{'model':db[_0xc899c6['model']],'as':_0xc899c6['as'],'attributes':_0xc899c6['attributes']};}):[]};}):[]};}):[]:[]})[_0x5bfd('0xe')](function(_0x243a8b){logger[_0x5bfd('0xf')]('GetMailServerIn',_0x4e430a);logger[_0x5bfd('0x11')](_0x5bfd('0x17'),_0x4e430a,JSON[_0x5bfd('0x21')](_0x243a8b));_0x3a9231(_0x243a8b);})[_0x5bfd('0x22')](function(_0xf2372f){logger[_0x5bfd('0x13')](_0x5bfd('0x17'),_0xf2372f[_0x5bfd('0x15')],_0x4e430a);_0x13c5c8(_0x9bd6e5[_0x5bfd('0x13')](0x1f4,_0xf2372f[_0x5bfd('0x15')]));});});};
\ No newline at end of file
index ecb8d0a..2af0aeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('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
+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(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_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('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 59857f7..3d103b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfcc=['sequelize','STRING','INTEGER'];(function(_0x3f1a12,_0x5a57ae){var _0x1afb6d=function(_0x5c99db){while(--_0x5c99db){_0x3f1a12['push'](_0x3f1a12['shift']());}};_0x1afb6d(++_0x5a57ae);}(_0xbfcc,0x1dd));var _0xcbfc=function(_0x420b24,_0x382adc){_0x420b24=_0x420b24-0x0;var _0x4da552=_0xbfcc[_0x420b24];return _0x4da552;};'use strict';var Sequelize=require(_0xcbfc('0x0'));module['exports']={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xcbfc('0x1')]},'user':{'type':Sequelize[_0xcbfc('0x1')]},'pass':{'type':Sequelize[_0xcbfc('0x1')]},'port':{'type':Sequelize[_0xcbfc('0x2')]},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x28f2=['STRING','INTEGER','BOOLEAN','sequelize','exports'];(function(_0x1c4c78,_0x4c5694){var _0x495b70=function(_0x2186e4){while(--_0x2186e4){_0x1c4c78['push'](_0x1c4c78['shift']());}};_0x495b70(++_0x4c5694);}(_0x28f2,0x193));var _0x228f=function(_0x146804,_0x361b5d){_0x146804=_0x146804-0x0;var _0xa815c0=_0x28f2[_0x146804];return _0xa815c0;};'use strict';var Sequelize=require(_0x228f('0x0'));module[_0x228f('0x1')]={'description':{'type':Sequelize[_0x228f('0x2')]},'host':{'type':Sequelize[_0x228f('0x2')]},'user':{'type':Sequelize[_0x228f('0x2')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x228f('0x3')]},'secure':{'type':Sequelize[_0x228f('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0x228f('0x2')]},'authentication':{'type':Sequelize[_0x228f('0x4')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0x228f('0x4')],'defaultValue':![]}};
\ No newline at end of file
index ed5f94f..3c0d990 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c99=['MailServerOut','rawAttributes','fieldName','type','key','model','query','keys','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','include','rows','params','intersection','includeAll','find','create','body','catch','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','offset','undefined','count','limit','set','Content-Range','json','reject','save','update','then','destroy','error','name','send','index','map'];(function(_0x3b6a72,_0x7798f9){var _0x2f5c86=function(_0x1455b0){while(--_0x1455b0){_0x3b6a72['push'](_0x3b6a72['shift']());}};_0x2f5c86(++_0x7798f9);}(_0x5c99,0x146));var _0x95c9=function(_0x3766f4,_0x580673){_0x3766f4=_0x3766f4-0x0;var _0x183f88=_0x5c99[_0x3766f4];return _0x183f88;};'use strict';var emlformat=require(_0x95c9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x95c9('0x1'));var jsonpatch=require(_0x95c9('0x2'));var rp=require(_0x95c9('0x3'));var moment=require(_0x95c9('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x95c9('0x5'));var util=require(_0x95c9('0x6'));var path=require(_0x95c9('0x7'));var sox=require(_0x95c9('0x8'));var csv=require(_0x95c9('0x9'));var ejs=require(_0x95c9('0xa'));var fs=require('fs');var fs_extra=require(_0x95c9('0xb'));var _=require(_0x95c9('0xc'));var squel=require(_0x95c9('0xd'));var crypto=require(_0x95c9('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x95c9('0xf'));var toCsv=require(_0x95c9('0x9'));var querystring=require(_0x95c9('0x10'));var Papa=require(_0x95c9('0x11'));var Redis=require(_0x95c9('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x95c9('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x95c9('0x14'))('api');var utils=require(_0x95c9('0x15'));var config=require(_0x95c9('0x16'));var licenseUtil=require(_0x95c9('0x17'));var db=require(_0x95c9('0x18'))['db'];function respondWithStatusCode(_0x1139f7,_0x4b9625){_0x4b9625=_0x4b9625||0xcc;return function(_0x5a6b5e){if(_0x5a6b5e){return _0x1139f7['sendStatus'](_0x4b9625);}return _0x1139f7['status'](_0x4b9625)[_0x95c9('0x19')]();};}function respondWithResult(_0x17a4ce,_0x5755d2){_0x5755d2=_0x5755d2||0xc8;return function(_0x35b741){if(_0x35b741){return _0x17a4ce[_0x95c9('0x1a')](_0x5755d2)['json'](_0x35b741);}};}function respondWithFilteredResult(_0x4c381c,_0xfac180){return function(_0x5a48db){if(_0x5a48db){var _0x17b3ad=typeof _0xfac180[_0x95c9('0x1b')]===_0x95c9('0x1c')&&typeof _0xfac180['limit']===_0x95c9('0x1c');var _0x5df643=_0x5a48db[_0x95c9('0x1d')];var _0x6bf4c6=_0x17b3ad?0x0:_0xfac180[_0x95c9('0x1b')];var _0x4a4b3f=_0x17b3ad?_0x5a48db[_0x95c9('0x1d')]:_0xfac180['offset']+_0xfac180[_0x95c9('0x1e')];var _0x271bb7;if(_0x4a4b3f>=_0x5df643){_0x4a4b3f=_0x5df643;_0x271bb7=0xc8;}else{_0x271bb7=0xce;}_0x4c381c[_0x95c9('0x1a')](_0x271bb7);return _0x4c381c[_0x95c9('0x1f')](_0x95c9('0x20'),_0x6bf4c6+'-'+_0x4a4b3f+'/'+_0x5df643)[_0x95c9('0x21')](_0x5a48db);}return null;};}function patchUpdates(_0x511f29){return function(_0x200cc4){try{jsonpatch['apply'](_0x200cc4,_0x511f29,!![]);}catch(_0x14bae9){return BPromise[_0x95c9('0x22')](_0x14bae9);}return _0x200cc4[_0x95c9('0x23')]();};}function saveUpdates(_0x258697,_0x4d063d){return function(_0x5769a9){if(_0x5769a9){return _0x5769a9[_0x95c9('0x24')](_0x258697)[_0x95c9('0x25')](function(_0x17ba8d){return _0x17ba8d;});}return null;};}function removeEntity(_0x1c248e,_0x4884db){return function(_0x3f599b){if(_0x3f599b){return _0x3f599b[_0x95c9('0x26')]()[_0x95c9('0x25')](function(){_0x1c248e[_0x95c9('0x1a')](0xcc)[_0x95c9('0x19')]();});}};}function handleEntityNotFound(_0x16b4a5,_0x3fa9ea){return function(_0x69c26c){if(!_0x69c26c){_0x16b4a5['sendStatus'](0x194);}return _0x69c26c;};}function handleError(_0x1c0d36,_0x2ee95d){_0x2ee95d=_0x2ee95d||0x1f4;return function(_0x5a158f){logger[_0x95c9('0x27')](_0x5a158f['stack']);if(_0x5a158f[_0x95c9('0x28')]){delete _0x5a158f[_0x95c9('0x28')];}_0x1c0d36[_0x95c9('0x1a')](_0x2ee95d)[_0x95c9('0x29')](_0x5a158f);};}exports[_0x95c9('0x2a')]=function(_0x7fd069,_0x5a3dbe){var _0x29107d={},_0x6653e9={},_0x243737={'count':0x0,'rows':[]};var _0x138aa8=_[_0x95c9('0x2b')](db[_0x95c9('0x2c')][_0x95c9('0x2d')],function(_0x53f0fc){return{'name':_0x53f0fc[_0x95c9('0x2e')],'type':_0x53f0fc[_0x95c9('0x2f')][_0x95c9('0x30')]};});_0x6653e9[_0x95c9('0x31')]=_[_0x95c9('0x2b')](_0x138aa8,_0x95c9('0x28'));_0x6653e9[_0x95c9('0x32')]=_[_0x95c9('0x33')](_0x7fd069['query']);_0x6653e9['filters']=_['intersection'](_0x6653e9[_0x95c9('0x31')],_0x6653e9[_0x95c9('0x32')]);_0x29107d['attributes']=_['intersection'](_0x6653e9[_0x95c9('0x31')],qs[_0x95c9('0x34')](_0x7fd069['query'][_0x95c9('0x34')]));_0x29107d[_0x95c9('0x35')]=_0x29107d['attributes'][_0x95c9('0x36')]?_0x29107d['attributes']:_0x6653e9[_0x95c9('0x31')];if(!_0x7fd069['query'][_0x95c9('0x37')](_0x95c9('0x38'))){_0x29107d[_0x95c9('0x1e')]=qs['limit'](_0x7fd069[_0x95c9('0x32')]['limit']);_0x29107d['offset']=qs[_0x95c9('0x1b')](_0x7fd069[_0x95c9('0x32')][_0x95c9('0x1b')]);}_0x29107d[_0x95c9('0x39')]=qs['sort'](_0x7fd069[_0x95c9('0x32')][_0x95c9('0x3a')]);_0x29107d[_0x95c9('0x3b')]=qs[_0x95c9('0x3c')](_[_0x95c9('0x3d')](_0x7fd069['query'],_0x6653e9[_0x95c9('0x3c')]),_0x138aa8);if(_0x7fd069[_0x95c9('0x32')][_0x95c9('0x3e')]){_0x29107d['where']=_[_0x95c9('0x3f')](_0x29107d[_0x95c9('0x3b')],{'$or':_[_0x95c9('0x2b')](_0x138aa8,function(_0x4c2bf4){if(_0x4c2bf4[_0x95c9('0x2f')]!=='VIRTUAL'){var _0x101688={};_0x101688[_0x4c2bf4[_0x95c9('0x28')]]={'$like':'%'+_0x7fd069['query'][_0x95c9('0x3e')]+'%'};return _0x101688;}})});}_0x29107d=_[_0x95c9('0x3f')]({},_0x29107d,_0x7fd069[_0x95c9('0x40')]);var _0x493db0={'where':_0x29107d[_0x95c9('0x3b')]};return db[_0x95c9('0x2c')][_0x95c9('0x1d')](_0x493db0)[_0x95c9('0x25')](function(_0x1caa92){_0x243737[_0x95c9('0x1d')]=_0x1caa92;if(_0x7fd069[_0x95c9('0x32')]['includeAll']){_0x29107d[_0x95c9('0x41')]=[{'all':!![]}];}return db[_0x95c9('0x2c')]['findAll'](_0x29107d);})['then'](function(_0x4c7e03){_0x243737[_0x95c9('0x42')]=_0x4c7e03;return _0x243737;})[_0x95c9('0x25')](respondWithFilteredResult(_0x5a3dbe,_0x29107d))['catch'](handleError(_0x5a3dbe,null));};exports['show']=function(_0x2afad7,_0x50a5b0){var _0x2edc28={'raw':!![],'where':{'id':_0x2afad7[_0x95c9('0x43')]['id']}},_0x538536={};_0x538536[_0x95c9('0x31')]=_[_0x95c9('0x33')](db[_0x95c9('0x2c')]['rawAttributes']);_0x538536['query']=_['keys'](_0x2afad7[_0x95c9('0x32')]);_0x538536[_0x95c9('0x3c')]=_[_0x95c9('0x44')](_0x538536['model'],_0x538536[_0x95c9('0x32')]);_0x2edc28[_0x95c9('0x35')]=_[_0x95c9('0x44')](_0x538536[_0x95c9('0x31')],qs[_0x95c9('0x34')](_0x2afad7[_0x95c9('0x32')][_0x95c9('0x34')]));_0x2edc28[_0x95c9('0x35')]=_0x2edc28['attributes'][_0x95c9('0x36')]?_0x2edc28[_0x95c9('0x35')]:_0x538536[_0x95c9('0x31')];if(_0x2afad7[_0x95c9('0x32')][_0x95c9('0x45')]){_0x2edc28['include']=[{'all':!![]}];}_0x2edc28=_['merge']({},_0x2edc28,_0x2afad7['options']);return db['MailServerOut'][_0x95c9('0x46')](_0x2edc28)['then'](handleEntityNotFound(_0x50a5b0,null))['then'](respondWithResult(_0x50a5b0,null))['catch'](handleError(_0x50a5b0,null));};exports[_0x95c9('0x47')]=function(_0x39d04e,_0x38c7fc){return db[_0x95c9('0x2c')][_0x95c9('0x47')](_0x39d04e[_0x95c9('0x48')],{})[_0x95c9('0x25')](respondWithResult(_0x38c7fc,0xc9))[_0x95c9('0x49')](handleError(_0x38c7fc,null));};exports[_0x95c9('0x24')]=function(_0x5ebf06,_0x21e9a2){if(_0x5ebf06[_0x95c9('0x48')]['id']){delete _0x5ebf06[_0x95c9('0x48')]['id'];}return db[_0x95c9('0x2c')][_0x95c9('0x46')]({'where':{'id':_0x5ebf06[_0x95c9('0x43')]['id']}})[_0x95c9('0x25')](handleEntityNotFound(_0x21e9a2,null))['then'](saveUpdates(_0x5ebf06['body'],null))[_0x95c9('0x25')](respondWithResult(_0x21e9a2,null))[_0x95c9('0x49')](handleError(_0x21e9a2,null));};exports[_0x95c9('0x26')]=function(_0x5e8f97,_0x4698a2){return db[_0x95c9('0x2c')][_0x95c9('0x46')]({'where':{'id':_0x5e8f97[_0x95c9('0x43')]['id']}})[_0x95c9('0x25')](handleEntityNotFound(_0x4698a2,null))[_0x95c9('0x25')](removeEntity(_0x4698a2,null))['catch'](handleError(_0x4698a2,null));};
\ No newline at end of file
+var _0x6232=['filters','includeAll','find','catch','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','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','api','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','MailServerOut','fieldName','type','key','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','VIRTUAL','merge','options','count','include','findAll','show','params'];(function(_0x24ca23,_0x26c308){var _0x41454b=function(_0x444ba5){while(--_0x444ba5){_0x24ca23['push'](_0x24ca23['shift']());}};_0x41454b(++_0x26c308);}(_0x6232,0xa1));var _0x2623=function(_0x350140,_0x55751a){_0x350140=_0x350140-0x0;var _0x367252=_0x6232[_0x350140];return _0x367252;};'use strict';var emlformat=require(_0x2623('0x0'));var rimraf=require(_0x2623('0x1'));var zipdir=require(_0x2623('0x2'));var jsonpatch=require(_0x2623('0x3'));var rp=require('request-promise');var moment=require(_0x2623('0x4'));var BPromise=require(_0x2623('0x5'));var Mustache=require(_0x2623('0x6'));var util=require(_0x2623('0x7'));var path=require(_0x2623('0x8'));var sox=require(_0x2623('0x9'));var csv=require(_0x2623('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2623('0xb'));var squel=require(_0x2623('0xc'));var crypto=require('crypto');var jsforce=require(_0x2623('0xd'));var deskjs=require(_0x2623('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2623('0xf'));var Papa=require(_0x2623('0x10'));var Redis=require(_0x2623('0x11'));var authService=require(_0x2623('0x12'));var qs=require(_0x2623('0x13'));var as=require(_0x2623('0x14'));var hardwareService=require(_0x2623('0x15'));var logger=require(_0x2623('0x16'))(_0x2623('0x17'));var utils=require('../../config/utils');var config=require(_0x2623('0x18'));var licenseUtil=require(_0x2623('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x559937,_0x4ad05f){_0x4ad05f=_0x4ad05f||0xcc;return function(_0x46b501){if(_0x46b501){return _0x559937[_0x2623('0x1a')](_0x4ad05f);}return _0x559937['status'](_0x4ad05f)[_0x2623('0x1b')]();};}function respondWithResult(_0x36680f,_0x191496){_0x191496=_0x191496||0xc8;return function(_0x5c71fa){if(_0x5c71fa){return _0x36680f[_0x2623('0x1c')](_0x191496)[_0x2623('0x1d')](_0x5c71fa);}};}function respondWithFilteredResult(_0xc7d4f3,_0x230023){return function(_0x25c5a9){if(_0x25c5a9){var _0x258653=typeof _0x230023[_0x2623('0x1e')]===_0x2623('0x1f')&&typeof _0x230023[_0x2623('0x20')]===_0x2623('0x1f');var _0x1bad20=_0x25c5a9['count'];var _0x2bda32=_0x258653?0x0:_0x230023[_0x2623('0x1e')];var _0x24eec9=_0x258653?_0x25c5a9['count']:_0x230023[_0x2623('0x1e')]+_0x230023['limit'];var _0x13085b;if(_0x24eec9>=_0x1bad20){_0x24eec9=_0x1bad20;_0x13085b=0xc8;}else{_0x13085b=0xce;}_0xc7d4f3['status'](_0x13085b);return _0xc7d4f3[_0x2623('0x21')](_0x2623('0x22'),_0x2bda32+'-'+_0x24eec9+'/'+_0x1bad20)[_0x2623('0x1d')](_0x25c5a9);}return null;};}function patchUpdates(_0x51ca93){return function(_0x35c359){try{jsonpatch[_0x2623('0x23')](_0x35c359,_0x51ca93,!![]);}catch(_0x4b287f){return BPromise[_0x2623('0x24')](_0x4b287f);}return _0x35c359[_0x2623('0x25')]();};}function saveUpdates(_0x2f09ce,_0x4c057a){return function(_0x57f28f){if(_0x57f28f){return _0x57f28f[_0x2623('0x26')](_0x2f09ce)[_0x2623('0x27')](function(_0x400c63){return _0x400c63;});}return null;};}function removeEntity(_0x2424bb,_0x518e38){return function(_0x2798ee){if(_0x2798ee){return _0x2798ee['destroy']()[_0x2623('0x27')](function(){_0x2424bb[_0x2623('0x1c')](0xcc)[_0x2623('0x1b')]();});}};}function handleEntityNotFound(_0x403e28,_0x4ba21f){return function(_0x10b777){if(!_0x10b777){_0x403e28[_0x2623('0x1a')](0x194);}return _0x10b777;};}function handleError(_0x278f08,_0x4657a5){_0x4657a5=_0x4657a5||0x1f4;return function(_0x213917){logger[_0x2623('0x28')](_0x213917[_0x2623('0x29')]);if(_0x213917[_0x2623('0x2a')]){delete _0x213917[_0x2623('0x2a')];}_0x278f08[_0x2623('0x1c')](_0x4657a5)[_0x2623('0x2b')](_0x213917);};}exports[_0x2623('0x2c')]=function(_0x17cbfd,_0x192290){var _0x6d6c91={},_0x50ac37={},_0x3bd43b={'count':0x0,'rows':[]};var _0x2ec8ef=_[_0x2623('0x2d')](db[_0x2623('0x2e')]['rawAttributes'],function(_0x44b9d4){return{'name':_0x44b9d4[_0x2623('0x2f')],'type':_0x44b9d4[_0x2623('0x30')][_0x2623('0x31')]};});_0x50ac37['model']=_[_0x2623('0x2d')](_0x2ec8ef,_0x2623('0x2a'));_0x50ac37[_0x2623('0x32')]=_[_0x2623('0x33')](_0x17cbfd[_0x2623('0x32')]);_0x50ac37['filters']=_[_0x2623('0x34')](_0x50ac37[_0x2623('0x35')],_0x50ac37['query']);_0x6d6c91['attributes']=_[_0x2623('0x34')](_0x50ac37[_0x2623('0x35')],qs[_0x2623('0x36')](_0x17cbfd[_0x2623('0x32')][_0x2623('0x36')]));_0x6d6c91[_0x2623('0x37')]=_0x6d6c91['attributes'][_0x2623('0x38')]?_0x6d6c91[_0x2623('0x37')]:_0x50ac37[_0x2623('0x35')];if(!_0x17cbfd[_0x2623('0x32')][_0x2623('0x39')](_0x2623('0x3a'))){_0x6d6c91[_0x2623('0x20')]=qs[_0x2623('0x20')](_0x17cbfd[_0x2623('0x32')][_0x2623('0x20')]);_0x6d6c91[_0x2623('0x1e')]=qs[_0x2623('0x1e')](_0x17cbfd['query']['offset']);}_0x6d6c91['order']=qs[_0x2623('0x3b')](_0x17cbfd[_0x2623('0x32')][_0x2623('0x3b')]);_0x6d6c91[_0x2623('0x3c')]=qs['filters'](_[_0x2623('0x3d')](_0x17cbfd['query'],_0x50ac37['filters']),_0x2ec8ef);if(_0x17cbfd[_0x2623('0x32')]['filter']){_0x6d6c91['where']=_['merge'](_0x6d6c91[_0x2623('0x3c')],{'$or':_['map'](_0x2ec8ef,function(_0x38817d){if(_0x38817d[_0x2623('0x30')]!==_0x2623('0x3e')){var _0x4bbf72={};_0x4bbf72[_0x38817d[_0x2623('0x2a')]]={'$like':'%'+_0x17cbfd[_0x2623('0x32')]['filter']+'%'};return _0x4bbf72;}})});}_0x6d6c91=_[_0x2623('0x3f')]({},_0x6d6c91,_0x17cbfd[_0x2623('0x40')]);var _0x32f065={'where':_0x6d6c91[_0x2623('0x3c')]};return db['MailServerOut'][_0x2623('0x41')](_0x32f065)[_0x2623('0x27')](function(_0x4b5d29){_0x3bd43b[_0x2623('0x41')]=_0x4b5d29;if(_0x17cbfd[_0x2623('0x32')]['includeAll']){_0x6d6c91[_0x2623('0x42')]=[{'all':!![]}];}return db[_0x2623('0x2e')][_0x2623('0x43')](_0x6d6c91);})[_0x2623('0x27')](function(_0x3adb17){_0x3bd43b['rows']=_0x3adb17;return _0x3bd43b;})[_0x2623('0x27')](respondWithFilteredResult(_0x192290,_0x6d6c91))['catch'](handleError(_0x192290,null));};exports[_0x2623('0x44')]=function(_0x3c29ec,_0x2ca952){var _0x4df7b5={'raw':!![],'where':{'id':_0x3c29ec[_0x2623('0x45')]['id']}},_0x426359={};_0x426359[_0x2623('0x35')]=_['keys'](db[_0x2623('0x2e')]['rawAttributes']);_0x426359[_0x2623('0x32')]=_['keys'](_0x3c29ec[_0x2623('0x32')]);_0x426359[_0x2623('0x46')]=_[_0x2623('0x34')](_0x426359['model'],_0x426359['query']);_0x4df7b5['attributes']=_[_0x2623('0x34')](_0x426359[_0x2623('0x35')],qs[_0x2623('0x36')](_0x3c29ec['query']['fields']));_0x4df7b5[_0x2623('0x37')]=_0x4df7b5['attributes'][_0x2623('0x38')]?_0x4df7b5[_0x2623('0x37')]:_0x426359[_0x2623('0x35')];if(_0x3c29ec[_0x2623('0x32')][_0x2623('0x47')]){_0x4df7b5[_0x2623('0x42')]=[{'all':!![]}];}_0x4df7b5=_[_0x2623('0x3f')]({},_0x4df7b5,_0x3c29ec[_0x2623('0x40')]);return db[_0x2623('0x2e')][_0x2623('0x48')](_0x4df7b5)[_0x2623('0x27')](handleEntityNotFound(_0x2ca952,null))[_0x2623('0x27')](respondWithResult(_0x2ca952,null))[_0x2623('0x49')](handleError(_0x2ca952,null));};exports[_0x2623('0x4a')]=function(_0x7b2a88,_0x42fa8c){return db[_0x2623('0x2e')][_0x2623('0x4a')](_0x7b2a88[_0x2623('0x4b')],{})[_0x2623('0x27')](respondWithResult(_0x42fa8c,0xc9))[_0x2623('0x49')](handleError(_0x42fa8c,null));};exports[_0x2623('0x26')]=function(_0x3200e8,_0x47fdfe){if(_0x3200e8[_0x2623('0x4b')]['id']){delete _0x3200e8[_0x2623('0x4b')]['id'];}return db[_0x2623('0x2e')]['find']({'where':{'id':_0x3200e8['params']['id']}})[_0x2623('0x27')](handleEntityNotFound(_0x47fdfe,null))['then'](saveUpdates(_0x3200e8[_0x2623('0x4b')],null))[_0x2623('0x27')](respondWithResult(_0x47fdfe,null))[_0x2623('0x49')](handleError(_0x47fdfe,null));};exports[_0x2623('0x4c')]=function(_0x833982,_0x30afd1){return db['MailServerOut'][_0x2623('0x48')]({'where':{'id':_0x833982[_0x2623('0x45')]['id']}})[_0x2623('0x27')](handleEntityNotFound(_0x30afd1,null))[_0x2623('0x27')](removeEntity(_0x30afd1,null))[_0x2623('0x49')](handleError(_0x30afd1,null));};
\ No newline at end of file
index e425232..a38e203 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2127=['exports','define','MailServerOut','mail_servers_out','lodash','util','api','moment','rimraf','./mailServerOut.attributes'];(function(_0x51fe23,_0x270ca9){var _0x4fdfbb=function(_0x5b56f2){while(--_0x5b56f2){_0x51fe23['push'](_0x51fe23['shift']());}};_0x4fdfbb(++_0x270ca9);}(_0x2127,0xd6));var _0x7212=function(_0x2024f4,_0x16d91e){_0x2024f4=_0x2024f4-0x0;var _0x486751=_0x2127[_0x2024f4];return _0x486751;};'use strict';var _=require(_0x7212('0x0'));var util=require(_0x7212('0x1'));var logger=require('../../config/logger')(_0x7212('0x2'));var moment=require(_0x7212('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x7212('0x4'));var config=require('../../config/environment');var attributes=require(_0x7212('0x5'));module[_0x7212('0x6')]=function(_0x3afe91,_0xe023e6){return _0x3afe91[_0x7212('0x7')](_0x7212('0x8'),attributes,{'tableName':_0x7212('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xee8f=['exports','define','MailServerOut','mail_servers_out','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./mailServerOut.attributes'];(function(_0x3c4c3a,_0x5a6ae7){var _0x291e1a=function(_0x2408d6){while(--_0x2408d6){_0x3c4c3a['push'](_0x3c4c3a['shift']());}};_0x291e1a(++_0x5a6ae7);}(_0xee8f,0xf4));var _0xfee8=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xee8f[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require('lodash');var util=require(_0xfee8('0x0'));var logger=require(_0xfee8('0x1'))(_0xfee8('0x2'));var moment=require('moment');var BPromise=require(_0xfee8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfee8('0x4'));var rimraf=require(_0xfee8('0x5'));var config=require(_0xfee8('0x6'));var attributes=require(_0xfee8('0x7'));module[_0xfee8('0x8')]=function(_0x1b8218,_0x714426){return _0x1b8218[_0xfee8('0x9')](_0xfee8('0xa'),attributes,{'tableName':_0xfee8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 57a77d2..2530b17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x1b1ae9,_0x5c290d){var _0xc860b0=function(_0x3b2b50){while(--_0x3b2b50){_0x1b1ae9['push'](_0x1b1ae9['shift']());}};_0xc860b0(++_0x5c290d);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0xc4aa[_0x2d2c16];return _0x53f2fb;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
+var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x211d7d,_0x1dd057){var _0x5394c2=function(_0x5c6def){while(--_0x5c6def){_0x211d7d['push'](_0x211d7d['shift']());}};_0x5394c2(++_0x1dd057);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xc4aa[_0x2641f9];return _0x585741;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
index 1326fd3..24052ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c67=['util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe','show','post','create','/:id','update','destroy','exports'];(function(_0x3a617a,_0x2bf80d){var _0x14636a=function(_0x358349){while(--_0x358349){_0x3a617a['push'](_0x3a617a['shift']());}};_0x14636a(++_0x2bf80d);}(_0x3c67,0xfc));var _0x73c6=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x3c67[_0x32f7d7];return _0x133d09;};'use strict';var multer=require('multer');var util=require(_0x73c6('0x0'));var path=require(_0x73c6('0x1'));var timeout=require(_0x73c6('0x2'));var express=require(_0x73c6('0x3'));var router=express[_0x73c6('0x4')]();var fs_extra=require(_0x73c6('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x73c6('0x6'));var config=require('../../config/environment');var controller=require('./mailSubstatus.controller');router[_0x73c6('0x7')]('/',auth[_0x73c6('0x8')](),controller[_0x73c6('0x9')]);router[_0x73c6('0x7')](_0x73c6('0xa'),auth[_0x73c6('0x8')](),controller['describe']);router[_0x73c6('0x7')]('/:id',auth[_0x73c6('0x8')](),controller[_0x73c6('0xb')]);router[_0x73c6('0xc')]('/',auth[_0x73c6('0x8')](),controller[_0x73c6('0xd')]);router['put'](_0x73c6('0xe'),auth[_0x73c6('0x8')](),controller[_0x73c6('0xf')]);router['delete'](_0x73c6('0xe'),auth[_0x73c6('0x8')](),controller[_0x73c6('0x10')]);module[_0x73c6('0x11')]=router;
\ No newline at end of file
+var _0x81e1=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','destroy','exports','util','path','connect-timeout','express'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0x81e1,0x18b));var _0x181e=function(_0x1ae5c3,_0xded5be){_0x1ae5c3=_0x1ae5c3-0x0;var _0x5e9cc7=_0x81e1[_0x1ae5c3];return _0x5e9cc7;};'use strict';var multer=require('multer');var util=require(_0x181e('0x0'));var path=require(_0x181e('0x1'));var timeout=require(_0x181e('0x2'));var express=require(_0x181e('0x3'));var router=express['Router']();var fs_extra=require(_0x181e('0x4'));var auth=require(_0x181e('0x5'));var interaction=require(_0x181e('0x6'));var config=require(_0x181e('0x7'));var controller=require('./mailSubstatus.controller');router[_0x181e('0x8')]('/',auth['isAuthenticated'](),controller[_0x181e('0x9')]);router[_0x181e('0x8')](_0x181e('0xa'),auth[_0x181e('0xb')](),controller[_0x181e('0xc')]);router[_0x181e('0x8')](_0x181e('0xd'),auth[_0x181e('0xb')](),controller[_0x181e('0xe')]);router[_0x181e('0xf')]('/',auth[_0x181e('0xb')](),controller[_0x181e('0x10')]);router[_0x181e('0x11')](_0x181e('0xd'),auth['isAuthenticated'](),controller[_0x181e('0x12')]);router['delete']('/:id',auth[_0x181e('0xb')](),controller[_0x181e('0x13')]);module[_0x181e('0x14')]=router;
\ No newline at end of file
index e6269f9..616f6c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf40b=['STRING','name','exports'];(function(_0x28a6f3,_0x3ed5b5){var _0x2bff88=function(_0x1a1d19){while(--_0x1a1d19){_0x28a6f3['push'](_0x28a6f3['shift']());}};_0x2bff88(++_0x3ed5b5);}(_0xf40b,0xb0));var _0xbf40=function(_0x13c737,_0xc1ab62){_0x13c737=_0x13c737-0x0;var _0x34e425=_0xf40b[_0x13c737];return _0x34e425;};'use strict';var Sequelize=require('sequelize');module[_0xbf40('0x0')]={'name':{'type':Sequelize[_0xbf40('0x1')],'unique':_0xbf40('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xbf40('0x1')]}};
\ No newline at end of file
+var _0x39e6=['sequelize','STRING'];(function(_0x29874c,_0x3b9d0b){var _0x3627db=function(_0x31c69e){while(--_0x31c69e){_0x29874c['push'](_0x29874c['shift']());}};_0x3627db(++_0x3b9d0b);}(_0x39e6,0x9e));var _0x639e=function(_0x3065ef,_0x1d6db0){_0x3065ef=_0x3065ef-0x0;var _0x22e841=_0x39e6[_0x3065ef];return _0x22e841;};'use strict';var Sequelize=require(_0x639e('0x0'));module['exports']={'name':{'type':Sequelize[_0x639e('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 3bcd80c..cb3ed82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d25=['rows','catch','show','includeAll','options','find','create','body','params','describe','zip-dir','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','sendStatus','end','status','offset','limit','count','set','apply','save','update','then','destroy','error','stack','send','index','map','MailSubstatus','fieldName','type','key','model','name','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include'];(function(_0x29abe6,_0x39ef28){var _0x4f91aa=function(_0xc797f2){while(--_0xc797f2){_0x29abe6['push'](_0x29abe6['shift']());}};_0x4f91aa(++_0x39ef28);}(_0x7d25,0x177));var _0x57d2=function(_0x2aea9e,_0x1f587f){_0x2aea9e=_0x2aea9e-0x0;var _0x430b92=_0x7d25[_0x2aea9e];return _0x430b92;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x57d2('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x57d2('0x1'));var moment=require(_0x57d2('0x2'));var BPromise=require(_0x57d2('0x3'));var Mustache=require(_0x57d2('0x4'));var util=require(_0x57d2('0x5'));var path=require(_0x57d2('0x6'));var sox=require(_0x57d2('0x7'));var csv=require(_0x57d2('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x57d2('0x9'));var _=require(_0x57d2('0xa'));var squel=require(_0x57d2('0xb'));var crypto=require(_0x57d2('0xc'));var jsforce=require(_0x57d2('0xd'));var deskjs=require(_0x57d2('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x57d2('0xf'));var Redis=require(_0x57d2('0x10'));var authService=require(_0x57d2('0x11'));var qs=require(_0x57d2('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x57d2('0x13'));var logger=require('../../config/logger')(_0x57d2('0x14'));var utils=require(_0x57d2('0x15'));var config=require(_0x57d2('0x16'));var licenseUtil=require(_0x57d2('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1ac070,_0x4a535d){_0x4a535d=_0x4a535d||0xcc;return function(_0x3f74f2){if(_0x3f74f2){return _0x1ac070[_0x57d2('0x18')](_0x4a535d);}return _0x1ac070['status'](_0x4a535d)[_0x57d2('0x19')]();};}function respondWithResult(_0x60e547,_0x343c40){_0x343c40=_0x343c40||0xc8;return function(_0x2c9bda){if(_0x2c9bda){return _0x60e547[_0x57d2('0x1a')](_0x343c40)['json'](_0x2c9bda);}};}function respondWithFilteredResult(_0xad5a39,_0x27b719){return function(_0xb75974){if(_0xb75974){var _0x5325c=typeof _0x27b719[_0x57d2('0x1b')]==='undefined'&&typeof _0x27b719[_0x57d2('0x1c')]==='undefined';var _0xfb2f45=_0xb75974[_0x57d2('0x1d')];var _0x39c099=_0x5325c?0x0:_0x27b719[_0x57d2('0x1b')];var _0xe8b091=_0x5325c?_0xb75974[_0x57d2('0x1d')]:_0x27b719[_0x57d2('0x1b')]+_0x27b719[_0x57d2('0x1c')];var _0x31a657;if(_0xe8b091>=_0xfb2f45){_0xe8b091=_0xfb2f45;_0x31a657=0xc8;}else{_0x31a657=0xce;}_0xad5a39[_0x57d2('0x1a')](_0x31a657);return _0xad5a39[_0x57d2('0x1e')]('Content-Range',_0x39c099+'-'+_0xe8b091+'/'+_0xfb2f45)['json'](_0xb75974);}return null;};}function patchUpdates(_0x21322d){return function(_0x25d0b3){try{jsonpatch[_0x57d2('0x1f')](_0x25d0b3,_0x21322d,!![]);}catch(_0x12710e){return BPromise['reject'](_0x12710e);}return _0x25d0b3[_0x57d2('0x20')]();};}function saveUpdates(_0x3ee7d1,_0x3ba13b){return function(_0x1dc2c3){if(_0x1dc2c3){return _0x1dc2c3[_0x57d2('0x21')](_0x3ee7d1)[_0x57d2('0x22')](function(_0x49d363){return _0x49d363;});}return null;};}function removeEntity(_0x33a88b,_0x5ea78a){return function(_0x30674f){if(_0x30674f){return _0x30674f[_0x57d2('0x23')]()[_0x57d2('0x22')](function(){_0x33a88b[_0x57d2('0x1a')](0xcc)[_0x57d2('0x19')]();});}};}function handleEntityNotFound(_0x2766c1,_0xa5dffa){return function(_0x2f4fd3){if(!_0x2f4fd3){_0x2766c1[_0x57d2('0x18')](0x194);}return _0x2f4fd3;};}function handleError(_0x5b661d,_0x4372ad){_0x4372ad=_0x4372ad||0x1f4;return function(_0x337f41){logger[_0x57d2('0x24')](_0x337f41[_0x57d2('0x25')]);if(_0x337f41['name']){delete _0x337f41['name'];}_0x5b661d['status'](_0x4372ad)[_0x57d2('0x26')](_0x337f41);};}exports[_0x57d2('0x27')]=function(_0x454a10,_0x1c9a07){var _0xf6b34a={},_0x3b473b={},_0x1fef14={'count':0x0,'rows':[]};var _0x21998e=_[_0x57d2('0x28')](db[_0x57d2('0x29')]['rawAttributes'],function(_0x48f987){return{'name':_0x48f987[_0x57d2('0x2a')],'type':_0x48f987[_0x57d2('0x2b')][_0x57d2('0x2c')]};});_0x3b473b[_0x57d2('0x2d')]=_[_0x57d2('0x28')](_0x21998e,_0x57d2('0x2e'));_0x3b473b[_0x57d2('0x2f')]=_[_0x57d2('0x30')](_0x454a10[_0x57d2('0x2f')]);_0x3b473b[_0x57d2('0x31')]=_[_0x57d2('0x32')](_0x3b473b[_0x57d2('0x2d')],_0x3b473b[_0x57d2('0x2f')]);_0xf6b34a['attributes']=_[_0x57d2('0x32')](_0x3b473b[_0x57d2('0x2d')],qs[_0x57d2('0x33')](_0x454a10[_0x57d2('0x2f')][_0x57d2('0x33')]));_0xf6b34a[_0x57d2('0x34')]=_0xf6b34a[_0x57d2('0x34')][_0x57d2('0x35')]?_0xf6b34a[_0x57d2('0x34')]:_0x3b473b[_0x57d2('0x2d')];if(!_0x454a10['query']['hasOwnProperty'](_0x57d2('0x36'))){_0xf6b34a['limit']=qs[_0x57d2('0x1c')](_0x454a10['query'][_0x57d2('0x1c')]);_0xf6b34a['offset']=qs[_0x57d2('0x1b')](_0x454a10[_0x57d2('0x2f')][_0x57d2('0x1b')]);}_0xf6b34a[_0x57d2('0x37')]=qs[_0x57d2('0x38')](_0x454a10['query'][_0x57d2('0x38')]);_0xf6b34a[_0x57d2('0x39')]=qs[_0x57d2('0x31')](_[_0x57d2('0x3a')](_0x454a10['query'],_0x3b473b[_0x57d2('0x31')]),_0x21998e);if(_0x454a10['query'][_0x57d2('0x3b')]){_0xf6b34a[_0x57d2('0x39')]=_[_0x57d2('0x3c')](_0xf6b34a[_0x57d2('0x39')],{'$or':_[_0x57d2('0x28')](_0x21998e,function(_0x218b12){if(_0x218b12[_0x57d2('0x2b')]!==_0x57d2('0x3d')){var _0x1a8e5a={};_0x1a8e5a[_0x218b12[_0x57d2('0x2e')]]={'$like':'%'+_0x454a10[_0x57d2('0x2f')][_0x57d2('0x3b')]+'%'};return _0x1a8e5a;}})});}_0xf6b34a=_[_0x57d2('0x3c')]({},_0xf6b34a,_0x454a10['options']);var _0x14fb83={'where':_0xf6b34a[_0x57d2('0x39')]};return db[_0x57d2('0x29')]['count'](_0x14fb83)['then'](function(_0x57b54b){_0x1fef14[_0x57d2('0x1d')]=_0x57b54b;if(_0x454a10[_0x57d2('0x2f')]['includeAll']){_0xf6b34a[_0x57d2('0x3e')]=[{'all':!![]}];}return db[_0x57d2('0x29')]['findAll'](_0xf6b34a);})[_0x57d2('0x22')](function(_0x26fde0){_0x1fef14[_0x57d2('0x3f')]=_0x26fde0;return _0x1fef14;})[_0x57d2('0x22')](respondWithFilteredResult(_0x1c9a07,_0xf6b34a))[_0x57d2('0x40')](handleError(_0x1c9a07,null));};exports[_0x57d2('0x41')]=function(_0x1f7a4c,_0x9d0989){var _0x5b8c4b={'raw':!![],'where':{'id':_0x1f7a4c['params']['id']}},_0x36d088={};_0x36d088[_0x57d2('0x2d')]=_[_0x57d2('0x30')](db['MailSubstatus']['rawAttributes']);_0x36d088['query']=_['keys'](_0x1f7a4c[_0x57d2('0x2f')]);_0x36d088[_0x57d2('0x31')]=_[_0x57d2('0x32')](_0x36d088[_0x57d2('0x2d')],_0x36d088[_0x57d2('0x2f')]);_0x5b8c4b['attributes']=_[_0x57d2('0x32')](_0x36d088[_0x57d2('0x2d')],qs[_0x57d2('0x33')](_0x1f7a4c[_0x57d2('0x2f')]['fields']));_0x5b8c4b['attributes']=_0x5b8c4b[_0x57d2('0x34')][_0x57d2('0x35')]?_0x5b8c4b['attributes']:_0x36d088[_0x57d2('0x2d')];if(_0x1f7a4c[_0x57d2('0x2f')][_0x57d2('0x42')]){_0x5b8c4b[_0x57d2('0x3e')]=[{'all':!![]}];}_0x5b8c4b=_['merge']({},_0x5b8c4b,_0x1f7a4c[_0x57d2('0x43')]);return db[_0x57d2('0x29')][_0x57d2('0x44')](_0x5b8c4b)[_0x57d2('0x22')](handleEntityNotFound(_0x9d0989,null))[_0x57d2('0x22')](respondWithResult(_0x9d0989,null))['catch'](handleError(_0x9d0989,null));};exports[_0x57d2('0x45')]=function(_0x387494,_0x699a4a){return db['MailSubstatus'][_0x57d2('0x45')](_0x387494[_0x57d2('0x46')],{})[_0x57d2('0x22')](respondWithResult(_0x699a4a,0xc9))[_0x57d2('0x40')](handleError(_0x699a4a,null));};exports['update']=function(_0x354b61,_0x3cf78c){if(_0x354b61[_0x57d2('0x46')]['id']){delete _0x354b61[_0x57d2('0x46')]['id'];}return db[_0x57d2('0x29')]['find']({'where':{'id':_0x354b61[_0x57d2('0x47')]['id']}})[_0x57d2('0x22')](handleEntityNotFound(_0x3cf78c,null))[_0x57d2('0x22')](saveUpdates(_0x354b61['body'],null))['then'](respondWithResult(_0x3cf78c,null))[_0x57d2('0x40')](handleError(_0x3cf78c,null));};exports['destroy']=function(_0x3d38b6,_0x2f26cb){return db['MailSubstatus'][_0x57d2('0x44')]({'where':{'id':_0x3d38b6[_0x57d2('0x47')]['id']}})[_0x57d2('0x22')](handleEntityNotFound(_0x2f26cb,null))[_0x57d2('0x22')](removeEntity(_0x2f26cb,null))[_0x57d2('0x40')](handleError(_0x2f26cb,null));};exports[_0x57d2('0x48')]=function(_0x32c3e6,_0x141016){return db['MailSubstatus'][_0x57d2('0x48')]()[_0x57d2('0x22')](respondWithResult(_0x141016,null))[_0x57d2('0x40')](handleError(_0x141016,null));};
\ No newline at end of file
+var _0xf41f=['limit','set','apply','save','then','destroy','error','name','send','index','map','MailSubstatus','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','nolimit','order','sort','where','filters','pick','filter','includeAll','include','findAll','rows','catch','params','length','merge','options','find','create','update','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count'];(function(_0x2f07af,_0x5c2b08){var _0x433ad5=function(_0x42c3fc){while(--_0x42c3fc){_0x2f07af['push'](_0x2f07af['shift']());}};_0x433ad5(++_0x5c2b08);}(_0xf41f,0x102));var _0xff41=function(_0x4c29f1,_0x41bf09){_0x4c29f1=_0x4c29f1-0x0;var _0x1e8243=_0xf41f[_0x4c29f1];return _0x1e8243;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xff41('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xff41('0x1'));var rp=require(_0xff41('0x2'));var moment=require(_0xff41('0x3'));var BPromise=require(_0xff41('0x4'));var Mustache=require(_0xff41('0x5'));var util=require('util');var path=require(_0xff41('0x6'));var sox=require('sox');var csv=require(_0xff41('0x7'));var ejs=require(_0xff41('0x8'));var fs=require('fs');var fs_extra=require(_0xff41('0x9'));var _=require(_0xff41('0xa'));var squel=require(_0xff41('0xb'));var crypto=require(_0xff41('0xc'));var jsforce=require(_0xff41('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xff41('0x7'));var querystring=require(_0xff41('0xe'));var Papa=require(_0xff41('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xff41('0x10'));var as=require(_0xff41('0x11'));var hardwareService=require(_0xff41('0x12'));var logger=require('../../config/logger')(_0xff41('0x13'));var utils=require('../../config/utils');var config=require(_0xff41('0x14'));var licenseUtil=require(_0xff41('0x15'));var db=require(_0xff41('0x16'))['db'];function respondWithStatusCode(_0x4050cd,_0x39c289){_0x39c289=_0x39c289||0xcc;return function(_0x391abb){if(_0x391abb){return _0x4050cd[_0xff41('0x17')](_0x39c289);}return _0x4050cd[_0xff41('0x18')](_0x39c289)[_0xff41('0x19')]();};}function respondWithResult(_0x5a1677,_0x529bae){_0x529bae=_0x529bae||0xc8;return function(_0x43a62c){if(_0x43a62c){return _0x5a1677['status'](_0x529bae)[_0xff41('0x1a')](_0x43a62c);}};}function respondWithFilteredResult(_0x207ab7,_0x592a2b){return function(_0xd7a03a){if(_0xd7a03a){var _0x4ebe11=typeof _0x592a2b[_0xff41('0x1b')]===_0xff41('0x1c')&&typeof _0x592a2b['limit']===_0xff41('0x1c');var _0x5ef504=_0xd7a03a[_0xff41('0x1d')];var _0x2a62eb=_0x4ebe11?0x0:_0x592a2b[_0xff41('0x1b')];var _0x40f1a7=_0x4ebe11?_0xd7a03a[_0xff41('0x1d')]:_0x592a2b[_0xff41('0x1b')]+_0x592a2b[_0xff41('0x1e')];var _0x2af136;if(_0x40f1a7>=_0x5ef504){_0x40f1a7=_0x5ef504;_0x2af136=0xc8;}else{_0x2af136=0xce;}_0x207ab7[_0xff41('0x18')](_0x2af136);return _0x207ab7[_0xff41('0x1f')]('Content-Range',_0x2a62eb+'-'+_0x40f1a7+'/'+_0x5ef504)[_0xff41('0x1a')](_0xd7a03a);}return null;};}function patchUpdates(_0x2d16bb){return function(_0x174585){try{jsonpatch[_0xff41('0x20')](_0x174585,_0x2d16bb,!![]);}catch(_0x5945f1){return BPromise['reject'](_0x5945f1);}return _0x174585[_0xff41('0x21')]();};}function saveUpdates(_0x202d44,_0x1b752b){return function(_0x2e8a86){if(_0x2e8a86){return _0x2e8a86['update'](_0x202d44)[_0xff41('0x22')](function(_0x13792e){return _0x13792e;});}return null;};}function removeEntity(_0x29ea78,_0x1b559a){return function(_0xe41146){if(_0xe41146){return _0xe41146[_0xff41('0x23')]()[_0xff41('0x22')](function(){_0x29ea78['status'](0xcc)[_0xff41('0x19')]();});}};}function handleEntityNotFound(_0xd1911c,_0x3aafd6){return function(_0x2ad0ef){if(!_0x2ad0ef){_0xd1911c['sendStatus'](0x194);}return _0x2ad0ef;};}function handleError(_0x229517,_0x204142){_0x204142=_0x204142||0x1f4;return function(_0x4a5bc3){logger[_0xff41('0x24')](_0x4a5bc3['stack']);if(_0x4a5bc3[_0xff41('0x25')]){delete _0x4a5bc3[_0xff41('0x25')];}_0x229517[_0xff41('0x18')](_0x204142)[_0xff41('0x26')](_0x4a5bc3);};}exports[_0xff41('0x27')]=function(_0x1d95eb,_0x3445fc){var _0x398c11={},_0xc11024={},_0x30a1dc={'count':0x0,'rows':[]};var _0x311572=_[_0xff41('0x28')](db[_0xff41('0x29')][_0xff41('0x2a')],function(_0x31f39d){return{'name':_0x31f39d[_0xff41('0x2b')],'type':_0x31f39d[_0xff41('0x2c')][_0xff41('0x2d')]};});_0xc11024[_0xff41('0x2e')]=_['map'](_0x311572,_0xff41('0x25'));_0xc11024['query']=_[_0xff41('0x2f')](_0x1d95eb[_0xff41('0x30')]);_0xc11024['filters']=_[_0xff41('0x31')](_0xc11024[_0xff41('0x2e')],_0xc11024[_0xff41('0x30')]);_0x398c11[_0xff41('0x32')]=_[_0xff41('0x31')](_0xc11024[_0xff41('0x2e')],qs[_0xff41('0x33')](_0x1d95eb[_0xff41('0x30')][_0xff41('0x33')]));_0x398c11['attributes']=_0x398c11[_0xff41('0x32')]['length']?_0x398c11[_0xff41('0x32')]:_0xc11024[_0xff41('0x2e')];if(!_0x1d95eb[_0xff41('0x30')]['hasOwnProperty'](_0xff41('0x34'))){_0x398c11['limit']=qs[_0xff41('0x1e')](_0x1d95eb[_0xff41('0x30')][_0xff41('0x1e')]);_0x398c11['offset']=qs[_0xff41('0x1b')](_0x1d95eb[_0xff41('0x30')][_0xff41('0x1b')]);}_0x398c11[_0xff41('0x35')]=qs[_0xff41('0x36')](_0x1d95eb[_0xff41('0x30')][_0xff41('0x36')]);_0x398c11[_0xff41('0x37')]=qs[_0xff41('0x38')](_[_0xff41('0x39')](_0x1d95eb[_0xff41('0x30')],_0xc11024[_0xff41('0x38')]),_0x311572);if(_0x1d95eb[_0xff41('0x30')][_0xff41('0x3a')]){_0x398c11[_0xff41('0x37')]=_['merge'](_0x398c11['where'],{'$or':_[_0xff41('0x28')](_0x311572,function(_0x2bec6f){if(_0x2bec6f[_0xff41('0x2c')]!=='VIRTUAL'){var _0xa37ef4={};_0xa37ef4[_0x2bec6f[_0xff41('0x25')]]={'$like':'%'+_0x1d95eb[_0xff41('0x30')]['filter']+'%'};return _0xa37ef4;}})});}_0x398c11=_['merge']({},_0x398c11,_0x1d95eb['options']);var _0xae4ae9={'where':_0x398c11['where']};return db[_0xff41('0x29')][_0xff41('0x1d')](_0xae4ae9)[_0xff41('0x22')](function(_0x371c25){_0x30a1dc[_0xff41('0x1d')]=_0x371c25;if(_0x1d95eb['query'][_0xff41('0x3b')]){_0x398c11[_0xff41('0x3c')]=[{'all':!![]}];}return db[_0xff41('0x29')][_0xff41('0x3d')](_0x398c11);})[_0xff41('0x22')](function(_0x48e349){_0x30a1dc[_0xff41('0x3e')]=_0x48e349;return _0x30a1dc;})[_0xff41('0x22')](respondWithFilteredResult(_0x3445fc,_0x398c11))[_0xff41('0x3f')](handleError(_0x3445fc,null));};exports['show']=function(_0x29da2c,_0x2310ea){var _0x2e3cb6={'raw':!![],'where':{'id':_0x29da2c[_0xff41('0x40')]['id']}},_0x4dc6e8={};_0x4dc6e8[_0xff41('0x2e')]=_['keys'](db[_0xff41('0x29')][_0xff41('0x2a')]);_0x4dc6e8[_0xff41('0x30')]=_['keys'](_0x29da2c[_0xff41('0x30')]);_0x4dc6e8[_0xff41('0x38')]=_[_0xff41('0x31')](_0x4dc6e8['model'],_0x4dc6e8[_0xff41('0x30')]);_0x2e3cb6[_0xff41('0x32')]=_[_0xff41('0x31')](_0x4dc6e8['model'],qs[_0xff41('0x33')](_0x29da2c[_0xff41('0x30')][_0xff41('0x33')]));_0x2e3cb6[_0xff41('0x32')]=_0x2e3cb6['attributes'][_0xff41('0x41')]?_0x2e3cb6[_0xff41('0x32')]:_0x4dc6e8[_0xff41('0x2e')];if(_0x29da2c['query'][_0xff41('0x3b')]){_0x2e3cb6[_0xff41('0x3c')]=[{'all':!![]}];}_0x2e3cb6=_[_0xff41('0x42')]({},_0x2e3cb6,_0x29da2c[_0xff41('0x43')]);return db[_0xff41('0x29')][_0xff41('0x44')](_0x2e3cb6)[_0xff41('0x22')](handleEntityNotFound(_0x2310ea,null))[_0xff41('0x22')](respondWithResult(_0x2310ea,null))[_0xff41('0x3f')](handleError(_0x2310ea,null));};exports[_0xff41('0x45')]=function(_0x598e76,_0x2834c4){return db[_0xff41('0x29')][_0xff41('0x45')](_0x598e76['body'],{})[_0xff41('0x22')](respondWithResult(_0x2834c4,0xc9))[_0xff41('0x3f')](handleError(_0x2834c4,null));};exports[_0xff41('0x46')]=function(_0x564c1e,_0x7d7651){if(_0x564c1e['body']['id']){delete _0x564c1e['body']['id'];}return db['MailSubstatus'][_0xff41('0x44')]({'where':{'id':_0x564c1e[_0xff41('0x40')]['id']}})[_0xff41('0x22')](handleEntityNotFound(_0x7d7651,null))[_0xff41('0x22')](saveUpdates(_0x564c1e['body'],null))[_0xff41('0x22')](respondWithResult(_0x7d7651,null))[_0xff41('0x3f')](handleError(_0x7d7651,null));};exports[_0xff41('0x23')]=function(_0x378100,_0x3e36b0){return db[_0xff41('0x29')][_0xff41('0x44')]({'where':{'id':_0x378100[_0xff41('0x40')]['id']}})[_0xff41('0x22')](handleEntityNotFound(_0x3e36b0,null))[_0xff41('0x22')](removeEntity(_0x3e36b0,null))[_0xff41('0x3f')](handleError(_0x3e36b0,null));};exports[_0xff41('0x47')]=function(_0x1f4549,_0x3b2732){return db[_0xff41('0x29')][_0xff41('0x47')]()[_0xff41('0x22')](respondWithResult(_0x3b2732,null))[_0xff41('0x3f')](handleError(_0x3b2732,null));};
\ No newline at end of file
index ca424cd..ba0c156 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdca5=['../../mysqldb','MailSubstatus','setMaxListeners','update','hasOwnProperty','hook','exports','events'];(function(_0x137154,_0xa22631){var _0x36bfbb=function(_0x5dddd5){while(--_0x5dddd5){_0x137154['push'](_0x137154['shift']());}};_0x36bfbb(++_0xa22631);}(_0xdca5,0x11f));var _0x5dca=function(_0x36d8d4,_0x325b6b){_0x36d8d4=_0x36d8d4-0x0;var _0x3bd605=_0xdca5[_0x36d8d4];return _0x3bd605;};'use strict';var EventEmitter=require(_0x5dca('0x0'));var MailSubstatus=require(_0x5dca('0x1'))['db'][_0x5dca('0x2')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x5dca('0x3')](0x0);var events={'afterUpdate':_0x5dca('0x4')};function emitEvent(_0x4e3df4){return function(_0x2fbe26,_0x25441f,_0x2e07da){MailSubstatusEvents['emit'](_0x4e3df4+':'+_0x2fbe26['id'],_0x2fbe26);MailSubstatusEvents['emit'](_0x4e3df4,_0x2fbe26);_0x2e07da(null);};}for(var e in events){if(events[_0x5dca('0x5')](e)){var event=events[e];MailSubstatus[_0x5dca('0x6')](e,emitEvent(event));}}module[_0x5dca('0x7')]=MailSubstatusEvents;
\ No newline at end of file
+var _0x7773=['events','MailSubstatus','setMaxListeners','update','emit','exports'];(function(_0x2ebec4,_0x40a6b9){var _0x226c7c=function(_0x52505d){while(--_0x52505d){_0x2ebec4['push'](_0x2ebec4['shift']());}};_0x226c7c(++_0x40a6b9);}(_0x7773,0x1a4));var _0x3777=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x7773[_0x46e363];return _0x3fb059;};'use strict';var EventEmitter=require(_0x3777('0x0'));var MailSubstatus=require('../../mysqldb')['db'][_0x3777('0x1')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x3777('0x2')](0x0);var events={'afterUpdate':_0x3777('0x3')};function emitEvent(_0xd93dd){return function(_0x31756c,_0x4a76bb,_0x22603a){MailSubstatusEvents[_0x3777('0x4')](_0xd93dd+':'+_0x31756c['id'],_0x31756c);MailSubstatusEvents[_0x3777('0x4')](_0xd93dd,_0x31756c);_0x22603a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailSubstatus['hook'](e,emitEvent(event));}}module[_0x3777('0x5')]=MailSubstatusEvents;
\ No newline at end of file
index 78db992..ddb641a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a8d=['then','catch','models','define','mail_substatuses','Condition','name','mailSubstatus','_previousDataValues'];(function(_0x1f65a6,_0x257c01){var _0x2dbe67=function(_0x32fe86){while(--_0x32fe86){_0x1f65a6['push'](_0x1f65a6['shift']());}};_0x2dbe67(++_0x257c01);}(_0x6a8d,0x13d));var _0xd6a8=function(_0x7e2eb0,_0x17cd58){_0x7e2eb0=_0x7e2eb0-0x0;var _0xd92de4=_0x6a8d[_0x7e2eb0];return _0xd92de4;};'use strict';var attributes=require('./mailSubstatus.attributes');module['exports']=function(_0x4bc93a){var _0x4305b5=_0x4bc93a[_0xd6a8('0x0')];return _0x4bc93a[_0xd6a8('0x1')]('MailSubstatus',attributes,{'tableName':_0xd6a8('0x2'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x8b3d82,_0x5b9c10,_0x206a30){return _0x4305b5[_0xd6a8('0x3')]['update']({'value':_0x8b3d82[_0xd6a8('0x4')]},{'where':{'field':_0xd6a8('0x5'),'value':_0x8b3d82[_0xd6a8('0x6')]['name']}})[_0xd6a8('0x7')](function(){_0x206a30();})[_0xd6a8('0x8')](function(_0x6e63a5){_0x206a30(_0x6e63a5);});}}});};
\ No newline at end of file
+var _0xdaa3=['_previousDataValues','then','catch','./mailSubstatus.attributes','exports','models','MailSubstatus','mail_substatuses','update','name'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xdaa3,0xa3));var _0x3daa=function(_0x1eb313,_0x11f090){_0x1eb313=_0x1eb313-0x0;var _0x1e3a55=_0xdaa3[_0x1eb313];return _0x1e3a55;};'use strict';var attributes=require(_0x3daa('0x0'));module[_0x3daa('0x1')]=function(_0x139560){var _0x29a8a6=_0x139560[_0x3daa('0x2')];return _0x139560['define'](_0x3daa('0x3'),attributes,{'tableName':_0x3daa('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x5a8654,_0xcc3511,_0x3c41d1){return _0x29a8a6['Condition'][_0x3daa('0x5')]({'value':_0x5a8654[_0x3daa('0x6')]},{'where':{'field':'mailSubstatus','value':_0x5a8654[_0x3daa('0x7')]['name']}})[_0x3daa('0x8')](function(){_0x3c41d1();})[_0x3daa('0x9')](function(_0x40adfa){_0x3c41d1(_0x40adfa);});}}});};
\ No newline at end of file
index 318d62a..06e9ad9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18bf=['catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x18bf,0x6f));var _0xf18b=function(_0x384fa4,_0x4de5ad){_0x384fa4=_0x384fa4-0x0;var _0x4cb2d=_0x18bf[_0x384fa4];return _0x4cb2d;};'use strict';var _=require(_0xf18b('0x0'));var util=require(_0xf18b('0x1'));var moment=require(_0xf18b('0x2'));var BPromise=require(_0xf18b('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf18b('0x4'));var db=require(_0xf18b('0x5'))['db'];var utils=require(_0xf18b('0x6'));var logger=require(_0xf18b('0x7'))(_0xf18b('0x8'));var config=require(_0xf18b('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xf18b('0xa')][_0xf18b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x220636,_0x1213a5,_0x6b87a){return new BPromise(function(_0x5186e7,_0x2cf40b){return client[_0xf18b('0xc')](_0x220636,_0x6b87a)['then'](function(_0x4e3e48){logger[_0xf18b('0xd')](_0xf18b('0xe'),_0x1213a5,_0xf18b('0xf'));logger[_0xf18b('0x10')]('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x1213a5,_0xf18b('0xf'),JSON[_0xf18b('0x11')](_0x4e3e48));if(_0x4e3e48[_0xf18b('0x12')]){if(_0x4e3e48[_0xf18b('0x12')]['code']===0x1f4){logger[_0xf18b('0x12')]('MailSubstatus,\x20%s,\x20%s',_0x1213a5,_0x4e3e48[_0xf18b('0x12')][_0xf18b('0x13')]);return _0x2cf40b(_0x4e3e48['error'][_0xf18b('0x13')]);}logger[_0xf18b('0x12')](_0xf18b('0xe'),_0x1213a5,_0x4e3e48[_0xf18b('0x12')]['message']);return _0x5186e7(_0x4e3e48[_0xf18b('0x12')]['message']);}else{logger[_0xf18b('0xd')]('MailSubstatus,\x20%s,\x20%s',_0x1213a5,_0xf18b('0xf'));_0x5186e7(_0x4e3e48[_0xf18b('0x14')][_0xf18b('0x13')]);}})[_0xf18b('0x15')](function(_0x4ad0d8){logger[_0xf18b('0x12')](_0xf18b('0xe'),_0x1213a5,_0x4ad0d8);_0x2cf40b(_0x4ad0d8);});});}
\ No newline at end of file
+var _0x179b=['stringify','error','code','message','result','catch','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MailSubstatus,\x20%s,\x20%s','request\x20sent'];(function(_0x57ad25,_0x30f4b6){var _0x14a80c=function(_0x3ba68c){while(--_0x3ba68c){_0x57ad25['push'](_0x57ad25['shift']());}};_0x14a80c(++_0x30f4b6);}(_0x179b,0x1bb));var _0xb179=function(_0x3a2a3c,_0x37bd31){_0x3a2a3c=_0x3a2a3c-0x0;var _0x50ac9a=_0x179b[_0x3a2a3c];return _0x50ac9a;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb179('0x0'));var fs=require('fs');var Redis=require(_0xb179('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb179('0x2'))(_0xb179('0x3'));var config=require(_0xb179('0x4'));var jayson=require(_0xb179('0x5'));var client=jayson[_0xb179('0x6')][_0xb179('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x58cf3b,_0x36a8d8,_0x19c5bd){return new BPromise(function(_0xba73ac,_0x1ac2d8){return client[_0xb179('0x8')](_0x58cf3b,_0x19c5bd)[_0xb179('0x9')](function(_0x27ea0e){logger[_0xb179('0xa')](_0xb179('0xb'),_0x36a8d8,'request\x20sent');logger['debug']('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x36a8d8,_0xb179('0xc'),JSON[_0xb179('0xd')](_0x27ea0e));if(_0x27ea0e['error']){if(_0x27ea0e[_0xb179('0xe')][_0xb179('0xf')]===0x1f4){logger['error'](_0xb179('0xb'),_0x36a8d8,_0x27ea0e[_0xb179('0xe')][_0xb179('0x10')]);return _0x1ac2d8(_0x27ea0e[_0xb179('0xe')][_0xb179('0x10')]);}logger[_0xb179('0xe')](_0xb179('0xb'),_0x36a8d8,_0x27ea0e[_0xb179('0xe')][_0xb179('0x10')]);return _0xba73ac(_0x27ea0e[_0xb179('0xe')][_0xb179('0x10')]);}else{logger[_0xb179('0xa')](_0xb179('0xb'),_0x36a8d8,_0xb179('0xc'));_0xba73ac(_0x27ea0e[_0xb179('0x11')][_0xb179('0x10')]);}})[_0xb179('0x12')](function(_0x182984){logger[_0xb179('0xe')](_0xb179('0xb'),_0x36a8d8,_0x182984);_0x1ac2d8(_0x182984);});});}
\ No newline at end of file
index a6b049f..9a33d49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x807c=['../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','delete','exports','multer','util','path','connect-timeout','express'];(function(_0xed4310,_0x56652d){var _0x1f4a04=function(_0x27797a){while(--_0x27797a){_0xed4310['push'](_0xed4310['shift']());}};_0x1f4a04(++_0x56652d);}(_0x807c,0x1f3));var _0xc807=function(_0x34d5db,_0x35b88e){_0x34d5db=_0x34d5db-0x0;var _0x59ea84=_0x807c[_0x34d5db];return _0x59ea84;};'use strict';var multer=require(_0xc807('0x0'));var util=require(_0xc807('0x1'));var path=require(_0xc807('0x2'));var timeout=require(_0xc807('0x3'));var express=require(_0xc807('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xc807('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xc807('0x6'));var controller=require('./mailTransferReport.controller');router[_0xc807('0x7')]('/',auth[_0xc807('0x8')](),controller[_0xc807('0x9')]);router[_0xc807('0x7')](_0xc807('0xa'),auth[_0xc807('0x8')](),controller[_0xc807('0xb')]);router[_0xc807('0x7')](_0xc807('0xc'),auth[_0xc807('0x8')](),controller[_0xc807('0xd')]);router[_0xc807('0xe')]('/',auth[_0xc807('0x8')](),controller[_0xc807('0xf')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0xc807('0x10')](_0xc807('0xc'),auth[_0xc807('0x8')](),controller['destroy']);module[_0xc807('0x11')]=router;
\ No newline at end of file
+var _0x79f7=['destroy','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./mailTransferReport.controller','get','isAuthenticated','index','/describe','post','create','put','/:id','update','delete'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x79f7,0xbf));var _0x779f=function(_0x3617ca,_0xa06150){_0x3617ca=_0x3617ca-0x0;var _0x49917=_0x79f7[_0x3617ca];return _0x49917;};'use strict';var multer=require('multer');var util=require(_0x779f('0x0'));var path=require(_0x779f('0x1'));var timeout=require(_0x779f('0x2'));var express=require(_0x779f('0x3'));var router=express['Router']();var fs_extra=require(_0x779f('0x4'));var auth=require(_0x779f('0x5'));var interaction=require(_0x779f('0x6'));var config=require('../../config/environment');var controller=require(_0x779f('0x7'));router[_0x779f('0x8')]('/',auth[_0x779f('0x9')](),controller[_0x779f('0xa')]);router[_0x779f('0x8')](_0x779f('0xb'),auth[_0x779f('0x9')](),controller['describe']);router[_0x779f('0x8')]('/:id',auth[_0x779f('0x9')](),controller['show']);router[_0x779f('0xc')]('/',auth[_0x779f('0x9')](),controller[_0x779f('0xd')]);router[_0x779f('0xe')](_0x779f('0xf'),auth[_0x779f('0x9')](),controller[_0x779f('0x10')]);router[_0x779f('0x11')](_0x779f('0xf'),auth[_0x779f('0x9')](),controller[_0x779f('0x12')]);module['exports']=router;
\ No newline at end of file
index 2f2f5d9..6499ba5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['agent','queue','DATE','NOW','moment','sequelize','exports','ENUM','account'];(function(_0x46a50c,_0x3a7f4a){var _0x4274db=function(_0x213af1){while(--_0x213af1){_0x46a50c['push'](_0x46a50c['shift']());}};_0x4274db(++_0x3a7f4a);}(_0x54ef,0x112));var _0xf54e=function(_0x323bbb,_0x26a701){_0x323bbb=_0x323bbb-0x0;var _0xf4419c=_0x54ef[_0x323bbb];return _0xf4419c;};'use strict';var moment=require(_0xf54e('0x0'));var Sequelize=require(_0xf54e('0x1'));module[_0xf54e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xf54e('0x3')](_0xf54e('0x4'),_0xf54e('0x5'),_0xf54e('0x6')),'allowNull':![],'defaultValue':_0xf54e('0x6')},'transferredAt':{'type':Sequelize[_0xf54e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xf54e('0x8')]}};
\ No newline at end of file
+var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x437d7f,_0x1feb46){var _0x31058c=function(_0x49dd1a){while(--_0x49dd1a){_0x437d7f['push'](_0x437d7f['shift']());}};_0x31058c(++_0x1feb46);}(_0x9bde,0xe1));var _0xe9bd=function(_0x293aee,_0x3b6e42){_0x293aee=_0x293aee-0x0;var _0x5e9853=_0x9bde[_0x293aee];return _0x5e9853;};'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 814061d..a1a7b65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cde=['fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','end','status','offset','undefined','count','limit','Content-Range','json','apply','reject','update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','MailTransferReport','findAll','show','params','keys','options','find','create','body','catch','describe','rimraf','zip-dir'];(function(_0x3ed1df,_0x18d47a){var _0x313d39=function(_0x31b135){while(--_0x31b135){_0x3ed1df['push'](_0x3ed1df['shift']());}};_0x313d39(++_0x18d47a);}(_0x2cde,0x1c0));var _0xe2cd=function(_0x11ceb5,_0xe4fd66){_0x11ceb5=_0x11ceb5-0x0;var _0x52a7d7=_0x2cde[_0x11ceb5];return _0x52a7d7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe2cd('0x0'));var zipdir=require(_0xe2cd('0x1'));var jsonpatch=require(_0xe2cd('0x2'));var rp=require(_0xe2cd('0x3'));var moment=require(_0xe2cd('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xe2cd('0x5'));var util=require(_0xe2cd('0x6'));var path=require(_0xe2cd('0x7'));var sox=require(_0xe2cd('0x8'));var csv=require(_0xe2cd('0x9'));var ejs=require(_0xe2cd('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe2cd('0xb'));var squel=require('squel');var crypto=require(_0xe2cd('0xc'));var jsforce=require(_0xe2cd('0xd'));var deskjs=require(_0xe2cd('0xe'));var toCsv=require(_0xe2cd('0x9'));var querystring=require('querystring');var Papa=require(_0xe2cd('0xf'));var Redis=require(_0xe2cd('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xe2cd('0x11'));var as=require(_0xe2cd('0x12'));var hardwareService=require(_0xe2cd('0x13'));var logger=require(_0xe2cd('0x14'))(_0xe2cd('0x15'));var utils=require('../../config/utils');var config=require(_0xe2cd('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe2cd('0x17'))['db'];function respondWithStatusCode(_0xf19c26,_0x45dfe4){_0x45dfe4=_0x45dfe4||0xcc;return function(_0x3f0f26){if(_0x3f0f26){return _0xf19c26[_0xe2cd('0x18')](_0x45dfe4);}return _0xf19c26['status'](_0x45dfe4)[_0xe2cd('0x19')]();};}function respondWithResult(_0x4830a8,_0x3bf0fb){_0x3bf0fb=_0x3bf0fb||0xc8;return function(_0x2612d9){if(_0x2612d9){return _0x4830a8[_0xe2cd('0x1a')](_0x3bf0fb)['json'](_0x2612d9);}};}function respondWithFilteredResult(_0x27f70c,_0x38d594){return function(_0x47fd06){if(_0x47fd06){var _0x36f191=typeof _0x38d594[_0xe2cd('0x1b')]===_0xe2cd('0x1c')&&typeof _0x38d594['limit']==='undefined';var _0x9a0ec9=_0x47fd06[_0xe2cd('0x1d')];var _0x18f558=_0x36f191?0x0:_0x38d594[_0xe2cd('0x1b')];var _0x231f56=_0x36f191?_0x47fd06[_0xe2cd('0x1d')]:_0x38d594[_0xe2cd('0x1b')]+_0x38d594[_0xe2cd('0x1e')];var _0x4f29cf;if(_0x231f56>=_0x9a0ec9){_0x231f56=_0x9a0ec9;_0x4f29cf=0xc8;}else{_0x4f29cf=0xce;}_0x27f70c['status'](_0x4f29cf);return _0x27f70c['set'](_0xe2cd('0x1f'),_0x18f558+'-'+_0x231f56+'/'+_0x9a0ec9)[_0xe2cd('0x20')](_0x47fd06);}return null;};}function patchUpdates(_0x4a2801){return function(_0x7d6f41){try{jsonpatch[_0xe2cd('0x21')](_0x7d6f41,_0x4a2801,!![]);}catch(_0x5421ac){return BPromise[_0xe2cd('0x22')](_0x5421ac);}return _0x7d6f41['save']();};}function saveUpdates(_0x30abc4,_0x2a46b3){return function(_0x563801){if(_0x563801){return _0x563801[_0xe2cd('0x23')](_0x30abc4)[_0xe2cd('0x24')](function(_0x2bffad){return _0x2bffad;});}return null;};}function removeEntity(_0x4b0bbb,_0x1b204d){return function(_0x1982a7){if(_0x1982a7){return _0x1982a7[_0xe2cd('0x25')]()[_0xe2cd('0x24')](function(){_0x4b0bbb[_0xe2cd('0x1a')](0xcc)[_0xe2cd('0x19')]();});}};}function handleEntityNotFound(_0x5f0f21,_0x57a2f1){return function(_0x5481c5){if(!_0x5481c5){_0x5f0f21[_0xe2cd('0x18')](0x194);}return _0x5481c5;};}function handleError(_0x37903f,_0x19603c){_0x19603c=_0x19603c||0x1f4;return function(_0x362988){logger[_0xe2cd('0x26')](_0x362988[_0xe2cd('0x27')]);if(_0x362988[_0xe2cd('0x28')]){delete _0x362988[_0xe2cd('0x28')];}_0x37903f[_0xe2cd('0x1a')](_0x19603c)[_0xe2cd('0x29')](_0x362988);};}exports['index']=function(_0x6e6d31,_0x45b089){var _0x50a537={},_0x2877bb={},_0x946c9f={'count':0x0,'rows':[]};var _0x324e19=_[_0xe2cd('0x2a')](db['MailTransferReport'][_0xe2cd('0x2b')],function(_0x253405){return{'name':_0x253405[_0xe2cd('0x2c')],'type':_0x253405[_0xe2cd('0x2d')][_0xe2cd('0x2e')]};});_0x2877bb[_0xe2cd('0x2f')]=_['map'](_0x324e19,_0xe2cd('0x28'));_0x2877bb[_0xe2cd('0x30')]=_['keys'](_0x6e6d31[_0xe2cd('0x30')]);_0x2877bb[_0xe2cd('0x31')]=_[_0xe2cd('0x32')](_0x2877bb[_0xe2cd('0x2f')],_0x2877bb['query']);_0x50a537['attributes']=_[_0xe2cd('0x32')](_0x2877bb[_0xe2cd('0x2f')],qs[_0xe2cd('0x33')](_0x6e6d31[_0xe2cd('0x30')][_0xe2cd('0x33')]));_0x50a537['attributes']=_0x50a537[_0xe2cd('0x34')][_0xe2cd('0x35')]?_0x50a537[_0xe2cd('0x34')]:_0x2877bb[_0xe2cd('0x2f')];if(!_0x6e6d31['query'][_0xe2cd('0x36')]('nolimit')){_0x50a537[_0xe2cd('0x1e')]=qs[_0xe2cd('0x1e')](_0x6e6d31[_0xe2cd('0x30')]['limit']);_0x50a537[_0xe2cd('0x1b')]=qs[_0xe2cd('0x1b')](_0x6e6d31[_0xe2cd('0x30')][_0xe2cd('0x1b')]);}_0x50a537[_0xe2cd('0x37')]=qs[_0xe2cd('0x38')](_0x6e6d31[_0xe2cd('0x30')][_0xe2cd('0x38')]);_0x50a537[_0xe2cd('0x39')]=qs['filters'](_[_0xe2cd('0x3a')](_0x6e6d31[_0xe2cd('0x30')],_0x2877bb['filters']),_0x324e19);if(_0x6e6d31['query'][_0xe2cd('0x3b')]){_0x50a537[_0xe2cd('0x39')]=_['merge'](_0x50a537[_0xe2cd('0x39')],{'$or':_[_0xe2cd('0x2a')](_0x324e19,function(_0x421959){if(_0x421959['type']!==_0xe2cd('0x3c')){var _0x2fac53={};_0x2fac53[_0x421959[_0xe2cd('0x28')]]={'$like':'%'+_0x6e6d31[_0xe2cd('0x30')][_0xe2cd('0x3b')]+'%'};return _0x2fac53;}})});}_0x50a537=_[_0xe2cd('0x3d')]({},_0x50a537,_0x6e6d31['options']);var _0x5aff9b={'where':_0x50a537[_0xe2cd('0x39')]};return db['MailTransferReport'][_0xe2cd('0x1d')](_0x5aff9b)['then'](function(_0x37f19d){_0x946c9f['count']=_0x37f19d;if(_0x6e6d31[_0xe2cd('0x30')][_0xe2cd('0x3e')]){_0x50a537[_0xe2cd('0x3f')]=[{'all':!![]}];}return db[_0xe2cd('0x40')][_0xe2cd('0x41')](_0x50a537);})[_0xe2cd('0x24')](function(_0x391e56){_0x946c9f['rows']=_0x391e56;return _0x946c9f;})['then'](respondWithFilteredResult(_0x45b089,_0x50a537))['catch'](handleError(_0x45b089,null));};exports[_0xe2cd('0x42')]=function(_0x4af65d,_0x2f1ab9){var _0x1f20fe={'raw':!![],'where':{'id':_0x4af65d[_0xe2cd('0x43')]['id']}},_0x5cef15={};_0x5cef15[_0xe2cd('0x2f')]=_['keys'](db[_0xe2cd('0x40')][_0xe2cd('0x2b')]);_0x5cef15[_0xe2cd('0x30')]=_[_0xe2cd('0x44')](_0x4af65d['query']);_0x5cef15[_0xe2cd('0x31')]=_[_0xe2cd('0x32')](_0x5cef15[_0xe2cd('0x2f')],_0x5cef15[_0xe2cd('0x30')]);_0x1f20fe[_0xe2cd('0x34')]=_[_0xe2cd('0x32')](_0x5cef15['model'],qs['fields'](_0x4af65d[_0xe2cd('0x30')][_0xe2cd('0x33')]));_0x1f20fe[_0xe2cd('0x34')]=_0x1f20fe[_0xe2cd('0x34')][_0xe2cd('0x35')]?_0x1f20fe[_0xe2cd('0x34')]:_0x5cef15[_0xe2cd('0x2f')];if(_0x4af65d[_0xe2cd('0x30')]['includeAll']){_0x1f20fe[_0xe2cd('0x3f')]=[{'all':!![]}];}_0x1f20fe=_['merge']({},_0x1f20fe,_0x4af65d[_0xe2cd('0x45')]);return db[_0xe2cd('0x40')][_0xe2cd('0x46')](_0x1f20fe)[_0xe2cd('0x24')](handleEntityNotFound(_0x2f1ab9,null))[_0xe2cd('0x24')](respondWithResult(_0x2f1ab9,null))['catch'](handleError(_0x2f1ab9,null));};exports['create']=function(_0x194919,_0x2f4afb){return db[_0xe2cd('0x40')][_0xe2cd('0x47')](_0x194919[_0xe2cd('0x48')],{})[_0xe2cd('0x24')](respondWithResult(_0x2f4afb,0xc9))[_0xe2cd('0x49')](handleError(_0x2f4afb,null));};exports[_0xe2cd('0x23')]=function(_0x36896a,_0x4ce1b3){if(_0x36896a[_0xe2cd('0x48')]['id']){delete _0x36896a[_0xe2cd('0x48')]['id'];}return db['MailTransferReport'][_0xe2cd('0x46')]({'where':{'id':_0x36896a[_0xe2cd('0x43')]['id']}})['then'](handleEntityNotFound(_0x4ce1b3,null))[_0xe2cd('0x24')](saveUpdates(_0x36896a[_0xe2cd('0x48')],null))[_0xe2cd('0x24')](respondWithResult(_0x4ce1b3,null))['catch'](handleError(_0x4ce1b3,null));};exports[_0xe2cd('0x25')]=function(_0xc56538,_0x140059){return db[_0xe2cd('0x40')][_0xe2cd('0x46')]({'where':{'id':_0xc56538[_0xe2cd('0x43')]['id']}})['then'](handleEntityNotFound(_0x140059,null))[_0xe2cd('0x24')](removeEntity(_0x140059,null))[_0xe2cd('0x49')](handleError(_0x140059,null));};exports[_0xe2cd('0x4a')]=function(_0x4295b5,_0x1c0f50){return db[_0xe2cd('0x40')][_0xe2cd('0x4a')]()[_0xe2cd('0x24')](respondWithResult(_0x1c0f50,null))[_0xe2cd('0x49')](handleError(_0x1c0f50,null));};
\ No newline at end of file
+var _0x77df=['catch','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','fs-extra','lodash','squel','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','status','end','offset','undefined','limit','count','set','Content-Range','json','update','then','destroy','sendStatus','error','stack','name','send','index','map','MailTransferReport','rawAttributes','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','filters','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','show','options','find'];(function(_0x4bcc83,_0x25f6bb){var _0xb7db90=function(_0x104ac6){while(--_0x104ac6){_0x4bcc83['push'](_0x4bcc83['shift']());}};_0xb7db90(++_0x25f6bb);}(_0x77df,0x1d3));var _0xf77d=function(_0x1bae84,_0x4c8be8){_0x1bae84=_0x1bae84-0x0;var _0x921fe4=_0x77df[_0x1bae84];return _0x921fe4;};'use strict';var emlformat=require(_0xf77d('0x0'));var rimraf=require(_0xf77d('0x1'));var zipdir=require(_0xf77d('0x2'));var jsonpatch=require(_0xf77d('0x3'));var rp=require(_0xf77d('0x4'));var moment=require(_0xf77d('0x5'));var BPromise=require(_0xf77d('0x6'));var Mustache=require('mustache');var util=require(_0xf77d('0x7'));var path=require(_0xf77d('0x8'));var sox=require(_0xf77d('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf77d('0xa'));var _=require(_0xf77d('0xb'));var squel=require(_0xf77d('0xc'));var crypto=require(_0xf77d('0xd'));var jsforce=require(_0xf77d('0xe'));var deskjs=require(_0xf77d('0xf'));var toCsv=require(_0xf77d('0x10'));var querystring=require(_0xf77d('0x11'));var Papa=require(_0xf77d('0x12'));var Redis=require(_0xf77d('0x13'));var authService=require(_0xf77d('0x14'));var qs=require(_0xf77d('0x15'));var as=require(_0xf77d('0x16'));var hardwareService=require(_0xf77d('0x17'));var logger=require('../../config/logger')(_0xf77d('0x18'));var utils=require(_0xf77d('0x19'));var config=require(_0xf77d('0x1a'));var licenseUtil=require(_0xf77d('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xf5eb02,_0x2283d5){_0x2283d5=_0x2283d5||0xcc;return function(_0xd6a6de){if(_0xd6a6de){return _0xf5eb02['sendStatus'](_0x2283d5);}return _0xf5eb02[_0xf77d('0x1c')](_0x2283d5)[_0xf77d('0x1d')]();};}function respondWithResult(_0x8dc12,_0xba1ed0){_0xba1ed0=_0xba1ed0||0xc8;return function(_0x4db48d){if(_0x4db48d){return _0x8dc12[_0xf77d('0x1c')](_0xba1ed0)['json'](_0x4db48d);}};}function respondWithFilteredResult(_0x55bef4,_0x5802e3){return function(_0x6b5e01){if(_0x6b5e01){var _0x44ca31=typeof _0x5802e3[_0xf77d('0x1e')]===_0xf77d('0x1f')&&typeof _0x5802e3[_0xf77d('0x20')]===_0xf77d('0x1f');var _0x3be389=_0x6b5e01[_0xf77d('0x21')];var _0x6748c9=_0x44ca31?0x0:_0x5802e3[_0xf77d('0x1e')];var _0x456c50=_0x44ca31?_0x6b5e01['count']:_0x5802e3[_0xf77d('0x1e')]+_0x5802e3[_0xf77d('0x20')];var _0x3b2e63;if(_0x456c50>=_0x3be389){_0x456c50=_0x3be389;_0x3b2e63=0xc8;}else{_0x3b2e63=0xce;}_0x55bef4['status'](_0x3b2e63);return _0x55bef4[_0xf77d('0x22')](_0xf77d('0x23'),_0x6748c9+'-'+_0x456c50+'/'+_0x3be389)[_0xf77d('0x24')](_0x6b5e01);}return null;};}function patchUpdates(_0x140e00){return function(_0x2afebd){try{jsonpatch['apply'](_0x2afebd,_0x140e00,!![]);}catch(_0x24bc82){return BPromise['reject'](_0x24bc82);}return _0x2afebd['save']();};}function saveUpdates(_0xe818f4,_0x363bf0){return function(_0x3a0fbd){if(_0x3a0fbd){return _0x3a0fbd[_0xf77d('0x25')](_0xe818f4)[_0xf77d('0x26')](function(_0x308c28){return _0x308c28;});}return null;};}function removeEntity(_0x2c6979,_0x1c44e9){return function(_0x29b1f3){if(_0x29b1f3){return _0x29b1f3[_0xf77d('0x27')]()[_0xf77d('0x26')](function(){_0x2c6979[_0xf77d('0x1c')](0xcc)[_0xf77d('0x1d')]();});}};}function handleEntityNotFound(_0x31ab65,_0x4d9911){return function(_0x2be82f){if(!_0x2be82f){_0x31ab65[_0xf77d('0x28')](0x194);}return _0x2be82f;};}function handleError(_0x1326db,_0x1ab2d9){_0x1ab2d9=_0x1ab2d9||0x1f4;return function(_0x36c000){logger[_0xf77d('0x29')](_0x36c000[_0xf77d('0x2a')]);if(_0x36c000[_0xf77d('0x2b')]){delete _0x36c000[_0xf77d('0x2b')];}_0x1326db['status'](_0x1ab2d9)[_0xf77d('0x2c')](_0x36c000);};}exports[_0xf77d('0x2d')]=function(_0x10c077,_0x1d2abe){var _0xcd0710={},_0x24de01={},_0x2118b0={'count':0x0,'rows':[]};var _0x41d8b1=_[_0xf77d('0x2e')](db[_0xf77d('0x2f')][_0xf77d('0x30')],function(_0x295c58){return{'name':_0x295c58['fieldName'],'type':_0x295c58[_0xf77d('0x31')]['key']};});_0x24de01[_0xf77d('0x32')]=_[_0xf77d('0x2e')](_0x41d8b1,_0xf77d('0x2b'));_0x24de01[_0xf77d('0x33')]=_[_0xf77d('0x34')](_0x10c077[_0xf77d('0x33')]);_0x24de01['filters']=_[_0xf77d('0x35')](_0x24de01[_0xf77d('0x32')],_0x24de01[_0xf77d('0x33')]);_0xcd0710[_0xf77d('0x36')]=_[_0xf77d('0x35')](_0x24de01[_0xf77d('0x32')],qs[_0xf77d('0x37')](_0x10c077[_0xf77d('0x33')][_0xf77d('0x37')]));_0xcd0710[_0xf77d('0x36')]=_0xcd0710['attributes'][_0xf77d('0x38')]?_0xcd0710[_0xf77d('0x36')]:_0x24de01[_0xf77d('0x32')];if(!_0x10c077[_0xf77d('0x33')][_0xf77d('0x39')]('nolimit')){_0xcd0710[_0xf77d('0x20')]=qs[_0xf77d('0x20')](_0x10c077[_0xf77d('0x33')][_0xf77d('0x20')]);_0xcd0710[_0xf77d('0x1e')]=qs[_0xf77d('0x1e')](_0x10c077[_0xf77d('0x33')][_0xf77d('0x1e')]);}_0xcd0710[_0xf77d('0x3a')]=qs[_0xf77d('0x3b')](_0x10c077[_0xf77d('0x33')][_0xf77d('0x3b')]);_0xcd0710['where']=qs[_0xf77d('0x3c')](_[_0xf77d('0x3d')](_0x10c077['query'],_0x24de01[_0xf77d('0x3c')]),_0x41d8b1);if(_0x10c077[_0xf77d('0x33')][_0xf77d('0x3e')]){_0xcd0710[_0xf77d('0x3f')]=_[_0xf77d('0x40')](_0xcd0710[_0xf77d('0x3f')],{'$or':_[_0xf77d('0x2e')](_0x41d8b1,function(_0x214683){if(_0x214683[_0xf77d('0x31')]!==_0xf77d('0x41')){var _0x4b8204={};_0x4b8204[_0x214683['name']]={'$like':'%'+_0x10c077['query'][_0xf77d('0x3e')]+'%'};return _0x4b8204;}})});}_0xcd0710=_[_0xf77d('0x40')]({},_0xcd0710,_0x10c077['options']);var _0x4fcfce={'where':_0xcd0710[_0xf77d('0x3f')]};return db['MailTransferReport'][_0xf77d('0x21')](_0x4fcfce)['then'](function(_0x54f5ed){_0x2118b0[_0xf77d('0x21')]=_0x54f5ed;if(_0x10c077[_0xf77d('0x33')][_0xf77d('0x42')]){_0xcd0710[_0xf77d('0x43')]=[{'all':!![]}];}return db[_0xf77d('0x2f')][_0xf77d('0x44')](_0xcd0710);})[_0xf77d('0x26')](function(_0x3362ae){_0x2118b0['rows']=_0x3362ae;return _0x2118b0;})['then'](respondWithFilteredResult(_0x1d2abe,_0xcd0710))['catch'](handleError(_0x1d2abe,null));};exports[_0xf77d('0x45')]=function(_0x489a74,_0x47f6a4){var _0x174838={'raw':!![],'where':{'id':_0x489a74['params']['id']}},_0x707da4={};_0x707da4[_0xf77d('0x32')]=_[_0xf77d('0x34')](db[_0xf77d('0x2f')][_0xf77d('0x30')]);_0x707da4['query']=_['keys'](_0x489a74[_0xf77d('0x33')]);_0x707da4[_0xf77d('0x3c')]=_['intersection'](_0x707da4[_0xf77d('0x32')],_0x707da4[_0xf77d('0x33')]);_0x174838[_0xf77d('0x36')]=_[_0xf77d('0x35')](_0x707da4[_0xf77d('0x32')],qs[_0xf77d('0x37')](_0x489a74[_0xf77d('0x33')][_0xf77d('0x37')]));_0x174838[_0xf77d('0x36')]=_0x174838['attributes'][_0xf77d('0x38')]?_0x174838['attributes']:_0x707da4[_0xf77d('0x32')];if(_0x489a74[_0xf77d('0x33')]['includeAll']){_0x174838[_0xf77d('0x43')]=[{'all':!![]}];}_0x174838=_['merge']({},_0x174838,_0x489a74[_0xf77d('0x46')]);return db['MailTransferReport'][_0xf77d('0x47')](_0x174838)['then'](handleEntityNotFound(_0x47f6a4,null))[_0xf77d('0x26')](respondWithResult(_0x47f6a4,null))[_0xf77d('0x48')](handleError(_0x47f6a4,null));};exports['create']=function(_0x87c804,_0x2777d9){return db[_0xf77d('0x2f')][_0xf77d('0x49')](_0x87c804[_0xf77d('0x4a')],{})[_0xf77d('0x26')](respondWithResult(_0x2777d9,0xc9))[_0xf77d('0x48')](handleError(_0x2777d9,null));};exports[_0xf77d('0x25')]=function(_0x127a7f,_0xbe0c9c){if(_0x127a7f[_0xf77d('0x4a')]['id']){delete _0x127a7f[_0xf77d('0x4a')]['id'];}return db[_0xf77d('0x2f')]['find']({'where':{'id':_0x127a7f[_0xf77d('0x4b')]['id']}})[_0xf77d('0x26')](handleEntityNotFound(_0xbe0c9c,null))[_0xf77d('0x26')](saveUpdates(_0x127a7f['body'],null))[_0xf77d('0x26')](respondWithResult(_0xbe0c9c,null))['catch'](handleError(_0xbe0c9c,null));};exports[_0xf77d('0x27')]=function(_0x13903a,_0x1ebbce){return db[_0xf77d('0x2f')][_0xf77d('0x47')]({'where':{'id':_0x13903a[_0xf77d('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1ebbce,null))[_0xf77d('0x26')](removeEntity(_0x1ebbce,null))['catch'](handleError(_0x1ebbce,null));};exports['describe']=function(_0x1e6030,_0x151d29){return db[_0xf77d('0x2f')][_0xf77d('0x4c')]()['then'](respondWithResult(_0x151d29,null))[_0xf77d('0x48')](handleError(_0x151d29,null));};
\ No newline at end of file
index 88b2019..e539e85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8832=['./mailTransferReport.attributes','exports','define','report_mail_transfer','uniqueid','lodash','util','moment','bluebird','request-promise','rimraf'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x8832,0x1f4));var _0x2883=function(_0x8fb92c,_0x22f31c){_0x8fb92c=_0x8fb92c-0x0;var _0x256658=_0x8832[_0x8fb92c];return _0x256658;};'use strict';var _=require(_0x2883('0x0'));var util=require(_0x2883('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x2883('0x2'));var BPromise=require(_0x2883('0x3'));var rp=require(_0x2883('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2883('0x5'));var config=require('../../config/environment');var attributes=require(_0x2883('0x6'));module[_0x2883('0x7')]=function(_0x278026,_0x556903){return _0x278026[_0x2883('0x8')]('MailTransferReport',attributes,{'tableName':_0x2883('0x9'),'paranoid':![],'indexes':[{'name':_0x2883('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x038b=['report_mail_transfer','util','../../config/logger','api','bluebird','path','rimraf','./mailTransferReport.attributes','exports','define','MailTransferReport'];(function(_0x3a73bc,_0x550aef){var _0x32891b=function(_0x20b4cb){while(--_0x20b4cb){_0x3a73bc['push'](_0x3a73bc['shift']());}};_0x32891b(++_0x550aef);}(_0x038b,0x114));var _0xb038=function(_0x5b5c0a,_0x3a16b6){_0x5b5c0a=_0x5b5c0a-0x0;var _0x2cefb6=_0x038b[_0x5b5c0a];return _0x2cefb6;};'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':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 245fa24..d76bd0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ff1=['debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','info','MailTransferReport,\x20%s,\x20%s','request\x20sent'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x1ff1,0x71));var _0x11ff=function(_0x26a361,_0x4c7349){_0x26a361=_0x26a361-0x0;var _0x3c1557=_0x1ff1[_0x26a361];return _0x3c1557;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x11ff('0x0'));var BPromise=require(_0x11ff('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x11ff('0x2'));var db=require(_0x11ff('0x3'))['db'];var utils=require(_0x11ff('0x4'));var logger=require(_0x11ff('0x5'))(_0x11ff('0x6'));var config=require(_0x11ff('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x11ff('0x8')][_0x11ff('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2c1c7f,_0x2cfce4,_0x2d02aa){return new BPromise(function(_0x375979,_0x2b670c){return client['request'](_0x2c1c7f,_0x2d02aa)['then'](function(_0x10a3b2){logger[_0x11ff('0xa')](_0x11ff('0xb'),_0x2cfce4,_0x11ff('0xc'));logger[_0x11ff('0xd')](_0x11ff('0xe'),_0x2cfce4,'request\x20sent',JSON[_0x11ff('0xf')](_0x10a3b2));if(_0x10a3b2[_0x11ff('0x10')]){if(_0x10a3b2[_0x11ff('0x10')][_0x11ff('0x11')]===0x1f4){logger[_0x11ff('0x10')](_0x11ff('0xb'),_0x2cfce4,_0x10a3b2['error'][_0x11ff('0x12')]);return _0x2b670c(_0x10a3b2[_0x11ff('0x10')]['message']);}logger[_0x11ff('0x10')](_0x11ff('0xb'),_0x2cfce4,_0x10a3b2[_0x11ff('0x10')][_0x11ff('0x12')]);return _0x375979(_0x10a3b2[_0x11ff('0x10')][_0x11ff('0x12')]);}else{logger[_0x11ff('0xa')]('MailTransferReport,\x20%s,\x20%s',_0x2cfce4,'request\x20sent');_0x375979(_0x10a3b2[_0x11ff('0x13')][_0x11ff('0x12')]);}})[_0x11ff('0x14')](function(_0x4a5c46){logger[_0x11ff('0x10')](_0x11ff('0xb'),_0x2cfce4,_0x4a5c46);_0x2b670c(_0x4a5c46);});});}
\ No newline at end of file
+var _0xc3ff=['http','request','then','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xc3ff,0x145));var _0xfc3f=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xc3ff[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0xfc3f('0x0'));var util=require('util');var moment=require(_0xfc3f('0x1'));var BPromise=require(_0xfc3f('0x2'));var rs=require(_0xfc3f('0x3'));var fs=require('fs');var Redis=require(_0xfc3f('0x4'));var db=require(_0xfc3f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xfc3f('0x6'))(_0xfc3f('0x7'));var config=require(_0xfc3f('0x8'));var jayson=require(_0xfc3f('0x9'));var client=jayson[_0xfc3f('0xa')][_0xfc3f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2d47e2,_0x86a8dd,_0x3742d0){return new BPromise(function(_0x584eb4,_0x413178){return client[_0xfc3f('0xc')](_0x2d47e2,_0x3742d0)[_0xfc3f('0xd')](function(_0x528a51){logger[_0xfc3f('0xe')](_0xfc3f('0xf'),_0x86a8dd,_0xfc3f('0x10'));logger[_0xfc3f('0x11')](_0xfc3f('0x12'),_0x86a8dd,_0xfc3f('0x10'),JSON[_0xfc3f('0x13')](_0x528a51));if(_0x528a51[_0xfc3f('0x14')]){if(_0x528a51[_0xfc3f('0x14')][_0xfc3f('0x15')]===0x1f4){logger[_0xfc3f('0x14')]('MailTransferReport,\x20%s,\x20%s',_0x86a8dd,_0x528a51[_0xfc3f('0x14')][_0xfc3f('0x16')]);return _0x413178(_0x528a51[_0xfc3f('0x14')][_0xfc3f('0x16')]);}logger[_0xfc3f('0x14')]('MailTransferReport,\x20%s,\x20%s',_0x86a8dd,_0x528a51[_0xfc3f('0x14')][_0xfc3f('0x16')]);return _0x584eb4(_0x528a51['error'][_0xfc3f('0x16')]);}else{logger[_0xfc3f('0xe')]('MailTransferReport,\x20%s,\x20%s',_0x86a8dd,_0xfc3f('0x10'));_0x584eb4(_0x528a51[_0xfc3f('0x17')][_0xfc3f('0x16')]);}})['catch'](function(_0x3cd9c8){logger[_0xfc3f('0x14')]('MailTransferReport,\x20%s,\x20%s',_0x86a8dd,_0x3cd9c8);_0x413178(_0x3cd9c8);});});}
\ No newline at end of file
index aa087e7..b6660c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x887d=['show','post','create','put','/:id','update','exports','path','express','fs-extra','../../components/interaction/service','../../config/environment','index','get','/describe','isAuthenticated','describe'];(function(_0x327550,_0x3dd859){var _0x4e5e6f=function(_0x19502b){while(--_0x19502b){_0x327550['push'](_0x327550['shift']());}};_0x4e5e6f(++_0x3dd859);}(_0x887d,0x1d2));var _0xd887=function(_0x4d75a1,_0x45002a){_0x4d75a1=_0x4d75a1-0x0;var _0x18f98b=_0x887d[_0x4d75a1];return _0x18f98b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xd887('0x0'));var timeout=require('connect-timeout');var express=require(_0xd887('0x1'));var router=express['Router']();var fs_extra=require(_0xd887('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xd887('0x3'));var config=require(_0xd887('0x4'));var controller=require('./memberReport.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xd887('0x5')]);router[_0xd887('0x6')](_0xd887('0x7'),auth[_0xd887('0x8')](),controller[_0xd887('0x9')]);router[_0xd887('0x6')]('/:id',auth[_0xd887('0x8')](),controller[_0xd887('0xa')]);router[_0xd887('0xb')]('/',auth[_0xd887('0x8')](),controller[_0xd887('0xc')]);router[_0xd887('0xd')](_0xd887('0xe'),auth[_0xd887('0x8')](),controller[_0xd887('0xf')]);router['delete'](_0xd887('0xe'),auth[_0xd887('0x8')](),controller['destroy']);module[_0xd887('0x10')]=router;
\ No newline at end of file
+var _0x5d84=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','put','update','delete','multer','util','path','connect-timeout','Router'];(function(_0x44dfb2,_0x26cf9d){var _0x4517ec=function(_0x477967){while(--_0x477967){_0x44dfb2['push'](_0x44dfb2['shift']());}};_0x4517ec(++_0x26cf9d);}(_0x5d84,0xd7));var _0x45d8=function(_0x198cff,_0x413d5d){_0x198cff=_0x198cff-0x0;var _0x508079=_0x5d84[_0x198cff];return _0x508079;};'use strict';var multer=require(_0x45d8('0x0'));var util=require(_0x45d8('0x1'));var path=require(_0x45d8('0x2'));var timeout=require(_0x45d8('0x3'));var express=require('express');var router=express[_0x45d8('0x4')]();var fs_extra=require(_0x45d8('0x5'));var auth=require(_0x45d8('0x6'));var interaction=require(_0x45d8('0x7'));var config=require(_0x45d8('0x8'));var controller=require(_0x45d8('0x9'));router['get']('/',auth[_0x45d8('0xa')](),controller[_0x45d8('0xb')]);router[_0x45d8('0xc')](_0x45d8('0xd'),auth[_0x45d8('0xa')](),controller[_0x45d8('0xe')]);router[_0x45d8('0xc')](_0x45d8('0xf'),auth[_0x45d8('0xa')](),controller[_0x45d8('0x10')]);router[_0x45d8('0x11')]('/',auth[_0x45d8('0xa')](),controller[_0x45d8('0x12')]);router[_0x45d8('0x13')]('/:id',auth[_0x45d8('0xa')](),controller[_0x45d8('0x14')]);router[_0x45d8('0x15')]('/:id',auth[_0x45d8('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 915c735..56f230d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8648=['setDataValue','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[dial\x20string]','talk:[queue]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','INTEGER','DATE','enterAt','diff','seconds','exitAt'];(function(_0x5c0441,_0x55a708){var _0xa8ed7d=function(_0x54eb1c){while(--_0x54eb1c){_0x5c0441['push'](_0x5c0441['shift']());}};_0xa8ed7d(++_0x55a708);}(_0x8648,0x139));var _0x8864=function(_0x2c628f,_0xb2080){_0x2c628f=_0x2c628f-0x0;var _0x4b2197=_0x8648[_0x2c628f];return _0x4b2197;};'use strict';var Sequelize=require(_0x8864('0x0'));var moment=require(_0x8864('0x1'));module[_0x8864('0x2')]={'channel':{'type':Sequelize[_0x8864('0x3')]},'membername':{'type':Sequelize[_0x8864('0x3')]},'interface':{'type':Sequelize[_0x8864('0x3')]},'type':{'type':Sequelize[_0x8864('0x3')],'defaultValue':_0x8864('0x4'),'comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize[_0x8864('0x5')]},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x8864('0x6')],'set':function(_0x36a17b){var _0x4b5f1d=moment(_0x36a17b);var _0x4f5216=moment(this['getDataValue'](_0x8864('0x7')));var _0xc7492c=_0x4b5f1d[_0x8864('0x8')](_0x4f5216,_0x8864('0x9'));this['setDataValue'](_0x8864('0xa'),_0x36a17b);this[_0x8864('0xb')](_0x8864('0xc'),_0xc7492c>=0x0?_0xc7492c:null);}},'data1':{'type':Sequelize[_0x8864('0x3')],'comment':_0x8864('0xd')},'data2':{'type':Sequelize['STRING'],'comment':_0x8864('0xe')},'data3':{'type':Sequelize[_0x8864('0x3')],'comment':_0x8864('0xf')},'data4':{'type':Sequelize[_0x8864('0x3')],'comment':_0x8864('0x10')},'data5':{'type':Sequelize[_0x8864('0x3')],'comment':_0x8864('0x11')},'role':{'type':Sequelize[_0x8864('0x3')]},'internal':{'type':Sequelize[_0x8864('0x5')]},'uniqueid':{'type':Sequelize[_0x8864('0x3')]}};
\ No newline at end of file
+var _0x1482=['talk:[start]','talk:[destination]','sequelize','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','getDataValue','enterAt','diff','seconds','setDataValue','exitAt','talk:[inbound,\x20outbound],\x20pause:[reason]'];(function(_0x8871,_0x3f58ba){var _0x30a739=function(_0x5d2df5){while(--_0x5d2df5){_0x8871['push'](_0x8871['shift']());}};_0x30a739(++_0x3f58ba);}(_0x1482,0x122));var _0x2148=function(_0x37fcc4,_0x759ff8){_0x37fcc4=_0x37fcc4-0x0;var _0x1051f9=_0x1482[_0x37fcc4];return _0x1051f9;};'use strict';var Sequelize=require(_0x2148('0x0'));var moment=require('moment');module[_0x2148('0x1')]={'channel':{'type':Sequelize[_0x2148('0x2')]},'membername':{'type':Sequelize[_0x2148('0x2')]},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x2148('0x2')],'defaultValue':_0x2148('0x3'),'comment':_0x2148('0x4')},'duration':{'type':Sequelize[_0x2148('0x5')]},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x2148('0x6')],'set':function(_0x55f824){var _0x71d9a8=moment(_0x55f824);var _0xe8a518=moment(this[_0x2148('0x7')](_0x2148('0x8')));var _0x2982b5=_0x71d9a8[_0x2148('0x9')](_0xe8a518,_0x2148('0xa'));this[_0x2148('0xb')](_0x2148('0xc'),_0x55f824);this[_0x2148('0xb')]('duration',_0x2982b5>=0x0?_0x2982b5:null);}},'data1':{'type':Sequelize[_0x2148('0x2')],'comment':_0x2148('0xd')},'data2':{'type':Sequelize['STRING'],'comment':_0x2148('0xe')},'data3':{'type':Sequelize[_0x2148('0x2')],'comment':_0x2148('0xf')},'data4':{'type':Sequelize[_0x2148('0x2')],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize[_0x2148('0x2')],'comment':'talk:[queue]'},'role':{'type':Sequelize[_0x2148('0x2')]},'internal':{'type':Sequelize[_0x2148('0x5')]},'uniqueid':{'type':Sequelize[_0x2148('0x2')]}};
\ No newline at end of file
index 9a11d69..e4de975 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','find','create','body','update','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','then','end','error','stack','send','index','map','MemberReport','rawAttributes','fieldName','type','key','model','name','query'];(function(_0xae7c2f,_0xf31e04){var _0x5d7001=function(_0x4eeadb){while(--_0x4eeadb){_0xae7c2f['push'](_0xae7c2f['shift']());}};_0x5d7001(++_0xf31e04);}(_0xedd9,0xfc));var _0x9edd=function(_0xd7454f,_0x17e15f){_0xd7454f=_0xd7454f-0x0;var _0x52c149=_0xedd9[_0xd7454f];return _0x52c149;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9edd('0x0'));var zipdir=require(_0x9edd('0x1'));var jsonpatch=require(_0x9edd('0x2'));var rp=require(_0x9edd('0x3'));var moment=require(_0x9edd('0x4'));var BPromise=require(_0x9edd('0x5'));var Mustache=require(_0x9edd('0x6'));var util=require(_0x9edd('0x7'));var path=require('path');var sox=require(_0x9edd('0x8'));var csv=require(_0x9edd('0x9'));var ejs=require(_0x9edd('0xa'));var fs=require('fs');var fs_extra=require(_0x9edd('0xb'));var _=require('lodash');var squel=require(_0x9edd('0xc'));var crypto=require('crypto');var jsforce=require(_0x9edd('0xd'));var deskjs=require(_0x9edd('0xe'));var toCsv=require(_0x9edd('0x9'));var querystring=require(_0x9edd('0xf'));var Papa=require('papaparse');var Redis=require(_0x9edd('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9edd('0x11'));var as=require(_0x9edd('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9edd('0x13'))(_0x9edd('0x14'));var utils=require('../../config/utils');var config=require(_0x9edd('0x15'));var licenseUtil=require(_0x9edd('0x16'));var db=require(_0x9edd('0x17'))['db'];function respondWithStatusCode(_0xfd544a,_0x287ddd){_0x287ddd=_0x287ddd||0xcc;return function(_0x3a7b84){if(_0x3a7b84){return _0xfd544a[_0x9edd('0x18')](_0x287ddd);}return _0xfd544a[_0x9edd('0x19')](_0x287ddd)['end']();};}function respondWithResult(_0x176bfa,_0x44fc7c){_0x44fc7c=_0x44fc7c||0xc8;return function(_0x891832){if(_0x891832){return _0x176bfa[_0x9edd('0x19')](_0x44fc7c)[_0x9edd('0x1a')](_0x891832);}};}function respondWithFilteredResult(_0x338f3c,_0x1042aa){return function(_0x75a4ab){if(_0x75a4ab){var _0x4ea60f=typeof _0x1042aa[_0x9edd('0x1b')]===_0x9edd('0x1c')&&typeof _0x1042aa[_0x9edd('0x1d')]==='undefined';var _0x1b54c0=_0x75a4ab[_0x9edd('0x1e')];var _0x40ba32=_0x4ea60f?0x0:_0x1042aa['offset'];var _0x43dc70=_0x4ea60f?_0x75a4ab['count']:_0x1042aa[_0x9edd('0x1b')]+_0x1042aa[_0x9edd('0x1d')];var _0x4bdb88;if(_0x43dc70>=_0x1b54c0){_0x43dc70=_0x1b54c0;_0x4bdb88=0xc8;}else{_0x4bdb88=0xce;}_0x338f3c['status'](_0x4bdb88);return _0x338f3c[_0x9edd('0x1f')]('Content-Range',_0x40ba32+'-'+_0x43dc70+'/'+_0x1b54c0)[_0x9edd('0x1a')](_0x75a4ab);}return null;};}function patchUpdates(_0x54a03f){return function(_0x535f37){try{jsonpatch[_0x9edd('0x20')](_0x535f37,_0x54a03f,!![]);}catch(_0x1c46a8){return BPromise['reject'](_0x1c46a8);}return _0x535f37['save']();};}function saveUpdates(_0x341d67,_0x186186){return function(_0x477878){if(_0x477878){return _0x477878['update'](_0x341d67)[_0x9edd('0x21')](function(_0x1dca43){return _0x1dca43;});}return null;};}function removeEntity(_0x44a6c1,_0x2ca65f){return function(_0x339a0d){if(_0x339a0d){return _0x339a0d['destroy']()[_0x9edd('0x21')](function(){_0x44a6c1[_0x9edd('0x19')](0xcc)[_0x9edd('0x22')]();});}};}function handleEntityNotFound(_0x2f9f86,_0x310a4d){return function(_0x4d507f){if(!_0x4d507f){_0x2f9f86['sendStatus'](0x194);}return _0x4d507f;};}function handleError(_0x3276ee,_0xfeca7b){_0xfeca7b=_0xfeca7b||0x1f4;return function(_0x8d67aa){logger[_0x9edd('0x23')](_0x8d67aa[_0x9edd('0x24')]);if(_0x8d67aa['name']){delete _0x8d67aa['name'];}_0x3276ee[_0x9edd('0x19')](_0xfeca7b)[_0x9edd('0x25')](_0x8d67aa);};}exports[_0x9edd('0x26')]=function(_0x52746a,_0x238b22){var _0x28cfae={},_0x2ae8dd={},_0x41af53={'count':0x0,'rows':[]};var _0x5eccfb=_[_0x9edd('0x27')](db[_0x9edd('0x28')][_0x9edd('0x29')],function(_0x12c1bc){return{'name':_0x12c1bc[_0x9edd('0x2a')],'type':_0x12c1bc[_0x9edd('0x2b')][_0x9edd('0x2c')]};});_0x2ae8dd[_0x9edd('0x2d')]=_[_0x9edd('0x27')](_0x5eccfb,_0x9edd('0x2e'));_0x2ae8dd[_0x9edd('0x2f')]=_[_0x9edd('0x30')](_0x52746a[_0x9edd('0x2f')]);_0x2ae8dd[_0x9edd('0x31')]=_[_0x9edd('0x32')](_0x2ae8dd['model'],_0x2ae8dd[_0x9edd('0x2f')]);_0x28cfae[_0x9edd('0x33')]=_[_0x9edd('0x32')](_0x2ae8dd['model'],qs[_0x9edd('0x34')](_0x52746a[_0x9edd('0x2f')][_0x9edd('0x34')]));_0x28cfae[_0x9edd('0x33')]=_0x28cfae[_0x9edd('0x33')][_0x9edd('0x35')]?_0x28cfae[_0x9edd('0x33')]:_0x2ae8dd[_0x9edd('0x2d')];if(!_0x52746a[_0x9edd('0x2f')][_0x9edd('0x36')](_0x9edd('0x37'))){_0x28cfae[_0x9edd('0x1d')]=qs[_0x9edd('0x1d')](_0x52746a[_0x9edd('0x2f')]['limit']);_0x28cfae[_0x9edd('0x1b')]=qs['offset'](_0x52746a[_0x9edd('0x2f')][_0x9edd('0x1b')]);}_0x28cfae[_0x9edd('0x38')]=qs[_0x9edd('0x39')](_0x52746a[_0x9edd('0x2f')]['sort']);_0x28cfae[_0x9edd('0x3a')]=qs[_0x9edd('0x31')](_[_0x9edd('0x3b')](_0x52746a[_0x9edd('0x2f')],_0x2ae8dd[_0x9edd('0x31')]),_0x5eccfb);if(_0x52746a[_0x9edd('0x2f')][_0x9edd('0x3c')]){_0x28cfae[_0x9edd('0x3a')]=_[_0x9edd('0x3d')](_0x28cfae[_0x9edd('0x3a')],{'$or':_['map'](_0x5eccfb,function(_0x231604){if(_0x231604['type']!==_0x9edd('0x3e')){var _0x5658d6={};_0x5658d6[_0x231604[_0x9edd('0x2e')]]={'$like':'%'+_0x52746a[_0x9edd('0x2f')][_0x9edd('0x3c')]+'%'};return _0x5658d6;}})});}_0x28cfae=_['merge']({},_0x28cfae,_0x52746a[_0x9edd('0x3f')]);var _0xcbd0ef={'where':_0x28cfae[_0x9edd('0x3a')]};return db['MemberReport'][_0x9edd('0x1e')](_0xcbd0ef)['then'](function(_0x1fc4fb){_0x41af53[_0x9edd('0x1e')]=_0x1fc4fb;if(_0x52746a['query'][_0x9edd('0x40')]){_0x28cfae[_0x9edd('0x41')]=[{'all':!![]}];}return db[_0x9edd('0x28')][_0x9edd('0x42')](_0x28cfae);})['then'](function(_0x449f01){_0x41af53['rows']=_0x449f01;return _0x41af53;})[_0x9edd('0x21')](respondWithFilteredResult(_0x238b22,_0x28cfae))[_0x9edd('0x43')](handleError(_0x238b22,null));};exports['show']=function(_0x318757,_0x49a128){var _0x548299={'raw':!![],'where':{'id':_0x318757[_0x9edd('0x44')]['id']}},_0x369b69={};_0x369b69[_0x9edd('0x2d')]=_[_0x9edd('0x30')](db[_0x9edd('0x28')][_0x9edd('0x29')]);_0x369b69[_0x9edd('0x2f')]=_[_0x9edd('0x30')](_0x318757[_0x9edd('0x2f')]);_0x369b69[_0x9edd('0x31')]=_[_0x9edd('0x32')](_0x369b69[_0x9edd('0x2d')],_0x369b69[_0x9edd('0x2f')]);_0x548299[_0x9edd('0x33')]=_[_0x9edd('0x32')](_0x369b69['model'],qs[_0x9edd('0x34')](_0x318757[_0x9edd('0x2f')][_0x9edd('0x34')]));_0x548299[_0x9edd('0x33')]=_0x548299[_0x9edd('0x33')][_0x9edd('0x35')]?_0x548299[_0x9edd('0x33')]:_0x369b69['model'];if(_0x318757['query']['includeAll']){_0x548299[_0x9edd('0x41')]=[{'all':!![]}];}_0x548299=_['merge']({},_0x548299,_0x318757[_0x9edd('0x3f')]);return db[_0x9edd('0x28')][_0x9edd('0x45')](_0x548299)[_0x9edd('0x21')](handleEntityNotFound(_0x49a128,null))[_0x9edd('0x21')](respondWithResult(_0x49a128,null))['catch'](handleError(_0x49a128,null));};exports[_0x9edd('0x46')]=function(_0x35e63c,_0x40e33d){return db['MemberReport'][_0x9edd('0x46')](_0x35e63c[_0x9edd('0x47')],{})[_0x9edd('0x21')](respondWithResult(_0x40e33d,0xc9))[_0x9edd('0x43')](handleError(_0x40e33d,null));};exports[_0x9edd('0x48')]=function(_0x35bdec,_0x4d4f33){if(_0x35bdec[_0x9edd('0x47')]['id']){delete _0x35bdec[_0x9edd('0x47')]['id'];}return db['MemberReport'][_0x9edd('0x45')]({'where':{'id':_0x35bdec[_0x9edd('0x44')]['id']}})['then'](handleEntityNotFound(_0x4d4f33,null))[_0x9edd('0x21')](saveUpdates(_0x35bdec[_0x9edd('0x47')],null))[_0x9edd('0x21')](respondWithResult(_0x4d4f33,null))['catch'](handleError(_0x4d4f33,null));};exports[_0x9edd('0x49')]=function(_0x151157,_0x317a60){return db[_0x9edd('0x28')]['find']({'where':{'id':_0x151157[_0x9edd('0x44')]['id']}})[_0x9edd('0x21')](handleEntityNotFound(_0x317a60,null))[_0x9edd('0x21')](removeEntity(_0x317a60,null))['catch'](handleError(_0x317a60,null));};exports[_0x9edd('0x4a')]=function(_0x21f6ce,_0x57db43){return db[_0x9edd('0x28')]['describe']()[_0x9edd('0x21')](respondWithResult(_0x57db43,null))[_0x9edd('0x43')](handleError(_0x57db43,null));};
\ No newline at end of file
+var _0x7217=['query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','filter','includeAll','include','rows','catch','show','params','rawAttributes','length','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','send','index','map','MemberReport','fieldName','type','model','name','keys'];(function(_0x301f72,_0x293707){var _0x12fdf8=function(_0xf3822d){while(--_0xf3822d){_0x301f72['push'](_0x301f72['shift']());}};_0x12fdf8(++_0x293707);}(_0x7217,0x19e));var _0x7721=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x7217[_0xbca1b1];return _0x4e1686;};'use strict';var emlformat=require(_0x7721('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7721('0x1'));var jsonpatch=require(_0x7721('0x2'));var rp=require(_0x7721('0x3'));var moment=require(_0x7721('0x4'));var BPromise=require(_0x7721('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7721('0x6'));var sox=require(_0x7721('0x7'));var csv=require(_0x7721('0x8'));var ejs=require(_0x7721('0x9'));var fs=require('fs');var fs_extra=require(_0x7721('0xa'));var _=require(_0x7721('0xb'));var squel=require(_0x7721('0xc'));var crypto=require(_0x7721('0xd'));var jsforce=require(_0x7721('0xe'));var deskjs=require(_0x7721('0xf'));var toCsv=require(_0x7721('0x8'));var querystring=require(_0x7721('0x10'));var Papa=require(_0x7721('0x11'));var Redis=require(_0x7721('0x12'));var authService=require(_0x7721('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x7721('0x14'));var hardwareService=require(_0x7721('0x15'));var logger=require(_0x7721('0x16'))(_0x7721('0x17'));var utils=require(_0x7721('0x18'));var config=require(_0x7721('0x19'));var licenseUtil=require(_0x7721('0x1a'));var db=require(_0x7721('0x1b'))['db'];function respondWithStatusCode(_0x55b4ca,_0x2911ec){_0x2911ec=_0x2911ec||0xcc;return function(_0x199930){if(_0x199930){return _0x55b4ca['sendStatus'](_0x2911ec);}return _0x55b4ca[_0x7721('0x1c')](_0x2911ec)[_0x7721('0x1d')]();};}function respondWithResult(_0x3f01c5,_0x2e9752){_0x2e9752=_0x2e9752||0xc8;return function(_0x5069da){if(_0x5069da){return _0x3f01c5[_0x7721('0x1c')](_0x2e9752)[_0x7721('0x1e')](_0x5069da);}};}function respondWithFilteredResult(_0x534f1b,_0x4e199a){return function(_0x4b183e){if(_0x4b183e){var _0x5ed54=typeof _0x4e199a[_0x7721('0x1f')]===_0x7721('0x20')&&typeof _0x4e199a[_0x7721('0x21')]==='undefined';var _0x20f669=_0x4b183e['count'];var _0x3fc09e=_0x5ed54?0x0:_0x4e199a['offset'];var _0xfec626=_0x5ed54?_0x4b183e[_0x7721('0x22')]:_0x4e199a[_0x7721('0x1f')]+_0x4e199a[_0x7721('0x21')];var _0x2286e5;if(_0xfec626>=_0x20f669){_0xfec626=_0x20f669;_0x2286e5=0xc8;}else{_0x2286e5=0xce;}_0x534f1b[_0x7721('0x1c')](_0x2286e5);return _0x534f1b[_0x7721('0x23')](_0x7721('0x24'),_0x3fc09e+'-'+_0xfec626+'/'+_0x20f669)[_0x7721('0x1e')](_0x4b183e);}return null;};}function patchUpdates(_0xaeccc4){return function(_0x4ce1db){try{jsonpatch[_0x7721('0x25')](_0x4ce1db,_0xaeccc4,!![]);}catch(_0x2c1583){return BPromise[_0x7721('0x26')](_0x2c1583);}return _0x4ce1db[_0x7721('0x27')]();};}function saveUpdates(_0x57140c,_0x28f5a6){return function(_0x512f31){if(_0x512f31){return _0x512f31[_0x7721('0x28')](_0x57140c)[_0x7721('0x29')](function(_0x3e8a4e){return _0x3e8a4e;});}return null;};}function removeEntity(_0x1caad8,_0x121cc4){return function(_0x395b15){if(_0x395b15){return _0x395b15[_0x7721('0x2a')]()['then'](function(){_0x1caad8[_0x7721('0x1c')](0xcc)[_0x7721('0x1d')]();});}};}function handleEntityNotFound(_0x125564,_0x1f67c7){return function(_0x40d550){if(!_0x40d550){_0x125564[_0x7721('0x2b')](0x194);}return _0x40d550;};}function handleError(_0x424e05,_0xf753f1){_0xf753f1=_0xf753f1||0x1f4;return function(_0x40f367){logger['error'](_0x40f367[_0x7721('0x2c')]);if(_0x40f367['name']){delete _0x40f367['name'];}_0x424e05[_0x7721('0x1c')](_0xf753f1)[_0x7721('0x2d')](_0x40f367);};}exports[_0x7721('0x2e')]=function(_0x158d98,_0x1ea4d){var _0x37b9f0={},_0xd7d703={},_0x1da2d8={'count':0x0,'rows':[]};var _0x5c54f0=_[_0x7721('0x2f')](db[_0x7721('0x30')]['rawAttributes'],function(_0x4a25c9){return{'name':_0x4a25c9[_0x7721('0x31')],'type':_0x4a25c9[_0x7721('0x32')]['key']};});_0xd7d703[_0x7721('0x33')]=_[_0x7721('0x2f')](_0x5c54f0,_0x7721('0x34'));_0xd7d703['query']=_[_0x7721('0x35')](_0x158d98[_0x7721('0x36')]);_0xd7d703[_0x7721('0x37')]=_[_0x7721('0x38')](_0xd7d703[_0x7721('0x33')],_0xd7d703['query']);_0x37b9f0[_0x7721('0x39')]=_[_0x7721('0x38')](_0xd7d703[_0x7721('0x33')],qs['fields'](_0x158d98[_0x7721('0x36')][_0x7721('0x3a')]));_0x37b9f0['attributes']=_0x37b9f0[_0x7721('0x39')]['length']?_0x37b9f0[_0x7721('0x39')]:_0xd7d703[_0x7721('0x33')];if(!_0x158d98[_0x7721('0x36')][_0x7721('0x3b')](_0x7721('0x3c'))){_0x37b9f0[_0x7721('0x21')]=qs[_0x7721('0x21')](_0x158d98[_0x7721('0x36')][_0x7721('0x21')]);_0x37b9f0[_0x7721('0x1f')]=qs[_0x7721('0x1f')](_0x158d98['query'][_0x7721('0x1f')]);}_0x37b9f0['order']=qs[_0x7721('0x3d')](_0x158d98[_0x7721('0x36')][_0x7721('0x3d')]);_0x37b9f0[_0x7721('0x3e')]=qs[_0x7721('0x37')](_[_0x7721('0x3f')](_0x158d98['query'],_0xd7d703['filters']),_0x5c54f0);if(_0x158d98['query']['filter']){_0x37b9f0[_0x7721('0x3e')]=_[_0x7721('0x40')](_0x37b9f0[_0x7721('0x3e')],{'$or':_[_0x7721('0x2f')](_0x5c54f0,function(_0x4a90ce){if(_0x4a90ce[_0x7721('0x32')]!=='VIRTUAL'){var _0xfab37b={};_0xfab37b[_0x4a90ce[_0x7721('0x34')]]={'$like':'%'+_0x158d98['query'][_0x7721('0x41')]+'%'};return _0xfab37b;}})});}_0x37b9f0=_[_0x7721('0x40')]({},_0x37b9f0,_0x158d98['options']);var _0x4d0111={'where':_0x37b9f0[_0x7721('0x3e')]};return db[_0x7721('0x30')][_0x7721('0x22')](_0x4d0111)[_0x7721('0x29')](function(_0x577af9){_0x1da2d8[_0x7721('0x22')]=_0x577af9;if(_0x158d98[_0x7721('0x36')][_0x7721('0x42')]){_0x37b9f0[_0x7721('0x43')]=[{'all':!![]}];}return db[_0x7721('0x30')]['findAll'](_0x37b9f0);})[_0x7721('0x29')](function(_0x4a2c28){_0x1da2d8[_0x7721('0x44')]=_0x4a2c28;return _0x1da2d8;})['then'](respondWithFilteredResult(_0x1ea4d,_0x37b9f0))[_0x7721('0x45')](handleError(_0x1ea4d,null));};exports[_0x7721('0x46')]=function(_0x231dad,_0x49e0c5){var _0x1453d4={'raw':!![],'where':{'id':_0x231dad[_0x7721('0x47')]['id']}},_0x11d853={};_0x11d853['model']=_[_0x7721('0x35')](db[_0x7721('0x30')][_0x7721('0x48')]);_0x11d853[_0x7721('0x36')]=_[_0x7721('0x35')](_0x231dad[_0x7721('0x36')]);_0x11d853[_0x7721('0x37')]=_['intersection'](_0x11d853['model'],_0x11d853[_0x7721('0x36')]);_0x1453d4[_0x7721('0x39')]=_[_0x7721('0x38')](_0x11d853[_0x7721('0x33')],qs[_0x7721('0x3a')](_0x231dad[_0x7721('0x36')][_0x7721('0x3a')]));_0x1453d4[_0x7721('0x39')]=_0x1453d4[_0x7721('0x39')][_0x7721('0x49')]?_0x1453d4['attributes']:_0x11d853['model'];if(_0x231dad[_0x7721('0x36')][_0x7721('0x42')]){_0x1453d4[_0x7721('0x43')]=[{'all':!![]}];}_0x1453d4=_[_0x7721('0x40')]({},_0x1453d4,_0x231dad['options']);return db[_0x7721('0x30')][_0x7721('0x4a')](_0x1453d4)['then'](handleEntityNotFound(_0x49e0c5,null))[_0x7721('0x29')](respondWithResult(_0x49e0c5,null))['catch'](handleError(_0x49e0c5,null));};exports[_0x7721('0x4b')]=function(_0x5c6922,_0x334f23){return db[_0x7721('0x30')][_0x7721('0x4b')](_0x5c6922['body'],{})[_0x7721('0x29')](respondWithResult(_0x334f23,0xc9))[_0x7721('0x45')](handleError(_0x334f23,null));};exports['update']=function(_0x223d93,_0x1196c2){if(_0x223d93[_0x7721('0x4c')]['id']){delete _0x223d93['body']['id'];}return db[_0x7721('0x30')]['find']({'where':{'id':_0x223d93[_0x7721('0x47')]['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x1196c2,null))[_0x7721('0x29')](saveUpdates(_0x223d93[_0x7721('0x4c')],null))[_0x7721('0x29')](respondWithResult(_0x1196c2,null))[_0x7721('0x45')](handleError(_0x1196c2,null));};exports[_0x7721('0x2a')]=function(_0x7fbb73,_0x694d2f){return db[_0x7721('0x30')][_0x7721('0x4a')]({'where':{'id':_0x7fbb73[_0x7721('0x47')]['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x694d2f,null))[_0x7721('0x29')](removeEntity(_0x694d2f,null))[_0x7721('0x45')](handleError(_0x694d2f,null));};exports['describe']=function(_0x474f32,_0x2f6f30){return db[_0x7721('0x30')][_0x7721('0x4d')]()[_0x7721('0x29')](respondWithResult(_0x2f6f30,null))[_0x7721('0x45')](handleError(_0x2f6f30,null));};
\ No newline at end of file
index fa61f9c..fe2625b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77d4=['exports','define','membername_interface','util','api','bluebird','request-promise','../../config/environment','./memberReport.attributes'];(function(_0x30121e,_0x240c86){var _0x4ba328=function(_0x2601c1){while(--_0x2601c1){_0x30121e['push'](_0x30121e['shift']());}};_0x4ba328(++_0x240c86);}(_0x77d4,0x108));var _0x477d=function(_0x35616b,_0x21d01d){_0x35616b=_0x35616b-0x0;var _0x56ca13=_0x77d4[_0x35616b];return _0x56ca13;};'use strict';var _=require('lodash');var util=require(_0x477d('0x0'));var logger=require('../../config/logger')(_0x477d('0x1'));var moment=require('moment');var BPromise=require(_0x477d('0x2'));var rp=require(_0x477d('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x477d('0x4'));var attributes=require(_0x477d('0x5'));module[_0x477d('0x6')]=function(_0x471fca,_0x2545e5){return _0x471fca[_0x477d('0x7')]('MemberReport',attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':_0x477d('0x8'),'fields':['membername','interface']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9cd2=['interface','lodash','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./memberReport.attributes','exports','define','membername_interface'];(function(_0x2972cf,_0x343fde){var _0x4c173f=function(_0x30eb3a){while(--_0x30eb3a){_0x2972cf['push'](_0x2972cf['shift']());}};_0x4c173f(++_0x343fde);}(_0x9cd2,0x85));var _0x29cd=function(_0x1147ab,_0x10e72b){_0x1147ab=_0x1147ab-0x0;var _0x55cb5a=_0x9cd2[_0x1147ab];return _0x55cb5a;};'use strict';var _=require(_0x29cd('0x0'));var util=require('util');var logger=require(_0x29cd('0x1'))(_0x29cd('0x2'));var moment=require(_0x29cd('0x3'));var BPromise=require(_0x29cd('0x4'));var rp=require(_0x29cd('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x29cd('0x6'));var attributes=require(_0x29cd('0x7'));module[_0x29cd('0x8')]=function(_0x3e4a25,_0x376643){return _0x3e4a25[_0x29cd('0x9')]('MemberReport',attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':_0x29cd('0xa'),'fields':['membername',_0x29cd('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index d121261..d677c1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02ca=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','MemberReport,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','MemberReport','options','raw','where','limit','map','include','attributes','model','GetMemberReport','debug','CreateMemberReport','create','body','UpdateMemberReport','update','lodash'];(function(_0x649aaa,_0x586a00){var _0x5832b2=function(_0x348d82){while(--_0x348d82){_0x649aaa['push'](_0x649aaa['shift']());}};_0x5832b2(++_0x586a00);}(_0x02ca,0x97));var _0xa02c=function(_0x3a5f98,_0x578d41){_0x3a5f98=_0x3a5f98-0x0;var _0x583fd2=_0x02ca[_0x3a5f98];return _0x583fd2;};'use strict';var _=require(_0xa02c('0x0'));var util=require('util');var moment=require(_0xa02c('0x1'));var BPromise=require(_0xa02c('0x2'));var rs=require(_0xa02c('0x3'));var fs=require('fs');var Redis=require(_0xa02c('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa02c('0x5'));var logger=require(_0xa02c('0x6'))(_0xa02c('0x7'));var config=require(_0xa02c('0x8'));var jayson=require(_0xa02c('0x9'));var client=jayson[_0xa02c('0xa')][_0xa02c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x29c64a,_0x2c87ec,_0x2b96c5){return new BPromise(function(_0x4033b9,_0x4dd173){return client[_0xa02c('0xc')](_0x29c64a,_0x2b96c5)[_0xa02c('0xd')](function(_0x203db6){logger[_0xa02c('0xe')](_0xa02c('0xf'),_0x2c87ec,'request\x20sent');logger['debug']('MemberReport,\x20%s,\x20%s,\x20%s',_0x2c87ec,'request\x20sent',JSON[_0xa02c('0x10')](_0x203db6));if(_0x203db6[_0xa02c('0x11')]){if(_0x203db6[_0xa02c('0x11')][_0xa02c('0x12')]===0x1f4){logger['error'](_0xa02c('0xf'),_0x2c87ec,_0x203db6[_0xa02c('0x11')][_0xa02c('0x13')]);return _0x4dd173(_0x203db6[_0xa02c('0x11')]['message']);}logger[_0xa02c('0x11')](_0xa02c('0xf'),_0x2c87ec,_0x203db6[_0xa02c('0x11')]['message']);return _0x4033b9(_0x203db6[_0xa02c('0x11')][_0xa02c('0x13')]);}else{logger['info'](_0xa02c('0xf'),_0x2c87ec,_0xa02c('0x14'));_0x4033b9(_0x203db6['result'][_0xa02c('0x13')]);}})[_0xa02c('0x15')](function(_0x2db206){logger['error'](_0xa02c('0xf'),_0x2c87ec,_0x2db206);_0x4dd173(_0x2db206);});});}exports['GetMemberReport']=function(_0x4d7cb5){var _0x592de1=this;return new Promise(function(_0x3fcc66,_0x10df83){return db[_0xa02c('0x16')]['findAll']({'raw':_0x4d7cb5[_0xa02c('0x17')]?_0x4d7cb5['options'][_0xa02c('0x18')]===undefined?!![]:![]:!![],'where':_0x4d7cb5[_0xa02c('0x17')]?_0x4d7cb5[_0xa02c('0x17')][_0xa02c('0x19')]||null:null,'attributes':_0x4d7cb5['options']?_0x4d7cb5[_0xa02c('0x17')]['attributes']||null:null,'limit':_0x4d7cb5[_0xa02c('0x17')]?_0x4d7cb5[_0xa02c('0x17')][_0xa02c('0x1a')]||null:null,'include':_0x4d7cb5['options']?_0x4d7cb5['options']['include']?_[_0xa02c('0x1b')](_0x4d7cb5[_0xa02c('0x17')][_0xa02c('0x1c')],function(_0x514ef1){return{'model':db[_0x514ef1['model']],'as':_0x514ef1['as'],'attributes':_0x514ef1[_0xa02c('0x1d')],'include':_0x514ef1[_0xa02c('0x1c')]?_[_0xa02c('0x1b')](_0x514ef1[_0xa02c('0x1c')],function(_0x437308){return{'model':db[_0x437308['model']],'as':_0x437308['as'],'attributes':_0x437308['attributes'],'include':_0x437308[_0xa02c('0x1c')]?_[_0xa02c('0x1b')](_0x437308[_0xa02c('0x1c')],function(_0x39124e){return{'model':db[_0x39124e[_0xa02c('0x1e')]],'as':_0x39124e['as'],'attributes':_0x39124e[_0xa02c('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xa02c('0xd')](function(_0x419037){logger['info'](_0xa02c('0x1f'),_0x4d7cb5);logger[_0xa02c('0x20')](_0xa02c('0x1f'),_0x4d7cb5,JSON[_0xa02c('0x10')](_0x419037));_0x3fcc66(_0x419037);})[_0xa02c('0x15')](function(_0x402f72){logger[_0xa02c('0x11')](_0xa02c('0x1f'),_0x402f72[_0xa02c('0x13')],_0x4d7cb5);_0x10df83(_0x592de1['error'](0x1f4,_0x402f72[_0xa02c('0x13')]));});});};exports[_0xa02c('0x21')]=function(_0x279410){var _0x4de1ac=this;return new Promise(function(_0x58542a,_0x186fe9){return db[_0xa02c('0x16')][_0xa02c('0x22')](_0x279410[_0xa02c('0x23')],{'raw':_0x279410[_0xa02c('0x17')]?_0x279410[_0xa02c('0x17')][_0xa02c('0x18')]===undefined?!![]:![]:!![]})[_0xa02c('0xd')](function(_0x254124){logger[_0xa02c('0xe')]('CreateMemberReport',_0x279410);logger['debug'](_0xa02c('0x21'),_0x279410,JSON[_0xa02c('0x10')](_0x254124));_0x58542a(_0x254124);})[_0xa02c('0x15')](function(_0x3b93fb){logger[_0xa02c('0x11')](_0xa02c('0x21'),_0x3b93fb[_0xa02c('0x13')],_0x279410);_0x186fe9(_0x4de1ac[_0xa02c('0x11')](0x1f4,_0x3b93fb[_0xa02c('0x13')]));});});};exports[_0xa02c('0x24')]=function(_0x2ec390){var _0x4abc4d=this;return new Promise(function(_0x356095,_0x42f238){return db[_0xa02c('0x16')][_0xa02c('0x25')](_0x2ec390['body'],{'raw':_0x2ec390['options']?_0x2ec390[_0xa02c('0x17')][_0xa02c('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2ec390['options']?_0x2ec390['options']['where']||null:null,'attributes':_0x2ec390['options']?_0x2ec390[_0xa02c('0x17')][_0xa02c('0x1d')]||null:null,'limit':_0x2ec390[_0xa02c('0x17')]?_0x2ec390[_0xa02c('0x17')]['limit']||null:null})[_0xa02c('0xd')](function(_0x281455){logger[_0xa02c('0xe')](_0xa02c('0x24'),_0x2ec390);logger[_0xa02c('0x20')](_0xa02c('0x24'),_0x2ec390,JSON[_0xa02c('0x10')](_0x281455));_0x356095(_0x281455);})[_0xa02c('0x15')](function(_0x520764){logger['error'](_0xa02c('0x24'),_0x520764[_0xa02c('0x13')],_0x2ec390);_0x42f238(_0x4abc4d[_0xa02c('0x11')](0x1f4,_0x520764[_0xa02c('0x13')]));});});};
\ No newline at end of file
+var _0x535d=['result','catch','MemberReport','options','raw','limit','include','model','attributes','map','GetMemberReport','CreateMemberReport','create','body','UpdateMemberReport','update','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','MemberReport,\x20%s,\x20%s','debug','MemberReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0x535d,0xe8));var _0xd535=function(_0x17ea4d,_0x22f732){_0x17ea4d=_0x17ea4d-0x0;var _0x316977=_0x535d[_0x17ea4d];return _0x316977;};'use strict';var _=require(_0xd535('0x0'));var util=require(_0xd535('0x1'));var moment=require('moment');var BPromise=require(_0xd535('0x2'));var rs=require(_0xd535('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xd535('0x4'));var logger=require(_0xd535('0x5'))(_0xd535('0x6'));var config=require(_0xd535('0x7'));var jayson=require(_0xd535('0x8'));var client=jayson[_0xd535('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x52cbc5,_0x44e2bb,_0x20b2ae){return new BPromise(function(_0x4fba4f,_0x1c092f){return client['request'](_0x52cbc5,_0x20b2ae)[_0xd535('0xa')](function(_0x156eea){logger[_0xd535('0xb')](_0xd535('0xc'),_0x44e2bb,'request\x20sent');logger[_0xd535('0xd')](_0xd535('0xe'),_0x44e2bb,_0xd535('0xf'),JSON[_0xd535('0x10')](_0x156eea));if(_0x156eea['error']){if(_0x156eea[_0xd535('0x11')][_0xd535('0x12')]===0x1f4){logger[_0xd535('0x11')](_0xd535('0xc'),_0x44e2bb,_0x156eea[_0xd535('0x11')][_0xd535('0x13')]);return _0x1c092f(_0x156eea[_0xd535('0x11')]['message']);}logger[_0xd535('0x11')]('MemberReport,\x20%s,\x20%s',_0x44e2bb,_0x156eea['error'][_0xd535('0x13')]);return _0x4fba4f(_0x156eea[_0xd535('0x11')]['message']);}else{logger[_0xd535('0xb')](_0xd535('0xc'),_0x44e2bb,_0xd535('0xf'));_0x4fba4f(_0x156eea[_0xd535('0x14')]['message']);}})[_0xd535('0x15')](function(_0x2b0f32){logger[_0xd535('0x11')](_0xd535('0xc'),_0x44e2bb,_0x2b0f32);_0x1c092f(_0x2b0f32);});});}exports['GetMemberReport']=function(_0x921b2e){var _0x54ff85=this;return new Promise(function(_0x22d4e2,_0x4f2039){return db[_0xd535('0x16')]['findAll']({'raw':_0x921b2e[_0xd535('0x17')]?_0x921b2e[_0xd535('0x17')][_0xd535('0x18')]===undefined?!![]:![]:!![],'where':_0x921b2e[_0xd535('0x17')]?_0x921b2e['options']['where']||null:null,'attributes':_0x921b2e[_0xd535('0x17')]?_0x921b2e['options']['attributes']||null:null,'limit':_0x921b2e[_0xd535('0x17')]?_0x921b2e[_0xd535('0x17')][_0xd535('0x19')]||null:null,'include':_0x921b2e[_0xd535('0x17')]?_0x921b2e[_0xd535('0x17')][_0xd535('0x1a')]?_['map'](_0x921b2e[_0xd535('0x17')][_0xd535('0x1a')],function(_0x42008f){return{'model':db[_0x42008f[_0xd535('0x1b')]],'as':_0x42008f['as'],'attributes':_0x42008f[_0xd535('0x1c')],'include':_0x42008f['include']?_['map'](_0x42008f[_0xd535('0x1a')],function(_0x1abfec){return{'model':db[_0x1abfec['model']],'as':_0x1abfec['as'],'attributes':_0x1abfec['attributes'],'include':_0x1abfec[_0xd535('0x1a')]?_[_0xd535('0x1d')](_0x1abfec[_0xd535('0x1a')],function(_0x551a99){return{'model':db[_0x551a99['model']],'as':_0x551a99['as'],'attributes':_0x551a99[_0xd535('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xd535('0xa')](function(_0x15769b){logger[_0xd535('0xb')](_0xd535('0x1e'),_0x921b2e);logger[_0xd535('0xd')](_0xd535('0x1e'),_0x921b2e,JSON['stringify'](_0x15769b));_0x22d4e2(_0x15769b);})[_0xd535('0x15')](function(_0x3ea7f7){logger['error']('GetMemberReport',_0x3ea7f7['message'],_0x921b2e);_0x4f2039(_0x54ff85[_0xd535('0x11')](0x1f4,_0x3ea7f7[_0xd535('0x13')]));});});};exports[_0xd535('0x1f')]=function(_0x2e6aff){var _0x3e4021=this;return new Promise(function(_0x47d5e2,_0x51ff66){return db[_0xd535('0x16')][_0xd535('0x20')](_0x2e6aff[_0xd535('0x21')],{'raw':_0x2e6aff[_0xd535('0x17')]?_0x2e6aff['options'][_0xd535('0x18')]===undefined?!![]:![]:!![]})[_0xd535('0xa')](function(_0x3f9b69){logger[_0xd535('0xb')](_0xd535('0x1f'),_0x2e6aff);logger[_0xd535('0xd')]('CreateMemberReport',_0x2e6aff,JSON[_0xd535('0x10')](_0x3f9b69));_0x47d5e2(_0x3f9b69);})[_0xd535('0x15')](function(_0xb4fef2){logger['error'](_0xd535('0x1f'),_0xb4fef2[_0xd535('0x13')],_0x2e6aff);_0x51ff66(_0x3e4021[_0xd535('0x11')](0x1f4,_0xb4fef2[_0xd535('0x13')]));});});};exports[_0xd535('0x22')]=function(_0x53d6c7){var _0x5204aa=this;return new Promise(function(_0x4effab,_0x17bf49){return db[_0xd535('0x16')][_0xd535('0x23')](_0x53d6c7[_0xd535('0x21')],{'raw':_0x53d6c7[_0xd535('0x17')]?_0x53d6c7[_0xd535('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x53d6c7['options']?_0x53d6c7[_0xd535('0x17')]['where']||null:null,'attributes':_0x53d6c7[_0xd535('0x17')]?_0x53d6c7['options'][_0xd535('0x1c')]||null:null,'limit':_0x53d6c7['options']?_0x53d6c7[_0xd535('0x17')]['limit']||null:null})[_0xd535('0xa')](function(_0x2624bc){logger[_0xd535('0xb')](_0xd535('0x22'),_0x53d6c7);logger['debug'](_0xd535('0x22'),_0x53d6c7,JSON[_0xd535('0x10')](_0x2624bc));_0x4effab(_0x2624bc);})['catch'](function(_0x3b3645){logger[_0xd535('0x11')](_0xd535('0x22'),_0x3b3645[_0xd535('0x13')],_0x53d6c7);_0x17bf49(_0x5204aa[_0xd535('0x11')](0x1f4,_0x3b3645[_0xd535('0x13')]));});});};
\ No newline at end of file
index d5d4f1b..ffe451d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd08a=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','multer'];(function(_0x4c98b9,_0x1ad11b){var _0x3a257a=function(_0x147857){while(--_0x147857){_0x4c98b9['push'](_0x4c98b9['shift']());}};_0x3a257a(++_0x1ad11b);}(_0xd08a,0x83));var _0xad08=function(_0x20dc3e,_0x21aba2){_0x20dc3e=_0x20dc3e-0x0;var _0x591fde=_0xd08a[_0x20dc3e];return _0x591fde;};'use strict';var multer=require(_0xad08('0x0'));var util=require(_0xad08('0x1'));var path=require(_0xad08('0x2'));var timeout=require(_0xad08('0x3'));var express=require('express');var router=express[_0xad08('0x4')]();var fs_extra=require(_0xad08('0x5'));var auth=require(_0xad08('0x6'));var interaction=require(_0xad08('0x7'));var config=require(_0xad08('0x8'));var controller=require('./migration.controller');router[_0xad08('0x9')]('/',controller[_0xad08('0xa')]);module['exports']=router;
\ No newline at end of file
+var _0x40c2=['../../config/environment','./migration.controller','get','index','exports','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service'];(function(_0x34bb5c,_0x76e65){var _0x4c01b3=function(_0x397d74){while(--_0x397d74){_0x34bb5c['push'](_0x34bb5c['shift']());}};_0x4c01b3(++_0x76e65);}(_0x40c2,0x10d));var _0x240c=function(_0x37f4df,_0x1ad8af){_0x37f4df=_0x37f4df-0x0;var _0x2c9462=_0x40c2[_0x37f4df];return _0x2c9462;};'use strict';var multer=require('multer');var util=require(_0x240c('0x0'));var path=require(_0x240c('0x1'));var timeout=require(_0x240c('0x2'));var express=require(_0x240c('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x240c('0x4'));var interaction=require(_0x240c('0x5'));var config=require(_0x240c('0x6'));var controller=require(_0x240c('0x7'));router[_0x240c('0x8')]('/',controller[_0x240c('0x9')]);module[_0x240c('0xa')]=router;
\ No newline at end of file
index 1abb56c..a4e70c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3aa3=['sequelize','STRING','version'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x3aa3,0x1e9));var _0x33aa=function(_0x34bc94,_0x74f0fd){_0x34bc94=_0x34bc94-0x0;var _0xee41e7=_0x3aa3[_0x34bc94];return _0xee41e7;};'use strict';var Sequelize=require(_0x33aa('0x0'));module['exports']={'version':{'type':Sequelize[_0x33aa('0x1')],'unique':_0x33aa('0x2')}};
\ No newline at end of file
+var _0x69a1=['STRING','sequelize','exports'];(function(_0x46f681,_0xb27cc1){var _0x192542=function(_0x29cb1f){while(--_0x29cb1f){_0x46f681['push'](_0x46f681['shift']());}};_0x192542(++_0xb27cc1);}(_0x69a1,0x12d));var _0x169a=function(_0x3e4ccc,_0x2a19a2){_0x3e4ccc=_0x3e4ccc-0x0;var _0x3d78d9=_0x69a1[_0x3e4ccc];return _0x3d78d9;};'use strict';var Sequelize=require(_0x169a('0x0'));module[_0x169a('0x1')]={'version':{'type':Sequelize[_0x169a('0x2')],'unique':'version'}};
\ No newline at end of file
index 5971360..80b283a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbec1=['include','findAll','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','map','Migration','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','length','hasOwnProperty','order','where','filters','pick','filter','merge','options','includeAll'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0xbec1,0x152));var _0x1bec=function(_0x2ad697,_0x51543e){_0x2ad697=_0x2ad697-0x0;var _0x1ab229=_0xbec1[_0x2ad697];return _0x1ab229;};'use strict';var emlformat=require(_0x1bec('0x0'));var rimraf=require(_0x1bec('0x1'));var zipdir=require(_0x1bec('0x2'));var jsonpatch=require(_0x1bec('0x3'));var rp=require(_0x1bec('0x4'));var moment=require(_0x1bec('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x1bec('0x6'));var util=require('util');var path=require(_0x1bec('0x7'));var sox=require(_0x1bec('0x8'));var csv=require('to-csv');var ejs=require(_0x1bec('0x9'));var fs=require('fs');var fs_extra=require(_0x1bec('0xa'));var _=require(_0x1bec('0xb'));var squel=require(_0x1bec('0xc'));var crypto=require(_0x1bec('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1bec('0xe'));var toCsv=require(_0x1bec('0xf'));var querystring=require('querystring');var Papa=require(_0x1bec('0x10'));var Redis=require(_0x1bec('0x11'));var authService=require(_0x1bec('0x12'));var qs=require(_0x1bec('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x1bec('0x14'))('api');var utils=require(_0x1bec('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x1bec('0x16'));var db=require(_0x1bec('0x17'))['db'];function respondWithStatusCode(_0x18c6ae,_0x119a8c){_0x119a8c=_0x119a8c||0xcc;return function(_0xb87bbf){if(_0xb87bbf){return _0x18c6ae['sendStatus'](_0x119a8c);}return _0x18c6ae[_0x1bec('0x18')](_0x119a8c)[_0x1bec('0x19')]();};}function respondWithResult(_0x34ad34,_0x501b5d){_0x501b5d=_0x501b5d||0xc8;return function(_0x10c245){if(_0x10c245){return _0x34ad34[_0x1bec('0x18')](_0x501b5d)[_0x1bec('0x1a')](_0x10c245);}};}function respondWithFilteredResult(_0x301d0e,_0x2b46a0){return function(_0x477738){if(_0x477738){var _0x4a18bc=typeof _0x2b46a0['offset']==='undefined'&&typeof _0x2b46a0[_0x1bec('0x1b')]===_0x1bec('0x1c');var _0x53641b=_0x477738[_0x1bec('0x1d')];var _0x578dc5=_0x4a18bc?0x0:_0x2b46a0['offset'];var _0x1497de=_0x4a18bc?_0x477738[_0x1bec('0x1d')]:_0x2b46a0[_0x1bec('0x1e')]+_0x2b46a0[_0x1bec('0x1b')];var _0x26441d;if(_0x1497de>=_0x53641b){_0x1497de=_0x53641b;_0x26441d=0xc8;}else{_0x26441d=0xce;}_0x301d0e[_0x1bec('0x18')](_0x26441d);return _0x301d0e[_0x1bec('0x1f')](_0x1bec('0x20'),_0x578dc5+'-'+_0x1497de+'/'+_0x53641b)[_0x1bec('0x1a')](_0x477738);}return null;};}function patchUpdates(_0x58b4c3){return function(_0x28f123){try{jsonpatch[_0x1bec('0x21')](_0x28f123,_0x58b4c3,!![]);}catch(_0x1a2165){return BPromise[_0x1bec('0x22')](_0x1a2165);}return _0x28f123[_0x1bec('0x23')]();};}function saveUpdates(_0x300af3,_0x28db99){return function(_0x6de06a){if(_0x6de06a){return _0x6de06a[_0x1bec('0x24')](_0x300af3)[_0x1bec('0x25')](function(_0x1e176a){return _0x1e176a;});}return null;};}function removeEntity(_0x57d8c6,_0x39bd33){return function(_0x473ce7){if(_0x473ce7){return _0x473ce7['destroy']()[_0x1bec('0x25')](function(){_0x57d8c6['status'](0xcc)[_0x1bec('0x19')]();});}};}function handleEntityNotFound(_0x4a091e,_0x3265a0){return function(_0x1be862){if(!_0x1be862){_0x4a091e[_0x1bec('0x26')](0x194);}return _0x1be862;};}function handleError(_0xa56ee1,_0x39ad24){_0x39ad24=_0x39ad24||0x1f4;return function(_0xa0a3d3){logger[_0x1bec('0x27')](_0xa0a3d3[_0x1bec('0x28')]);if(_0xa0a3d3[_0x1bec('0x29')]){delete _0xa0a3d3[_0x1bec('0x29')];}_0xa56ee1['status'](_0x39ad24)[_0x1bec('0x2a')](_0xa0a3d3);};}exports[_0x1bec('0x2b')]=function(_0x13f9f1,_0x30f1ee){var _0x15a678={},_0x17d979={},_0x4402bf={'count':0x0,'rows':[]};var _0x3cbbe4=_[_0x1bec('0x2c')](db[_0x1bec('0x2d')][_0x1bec('0x2e')],function(_0x3e589d){return{'name':_0x3e589d[_0x1bec('0x2f')],'type':_0x3e589d[_0x1bec('0x30')]['key']};});_0x17d979['model']=_['map'](_0x3cbbe4,_0x1bec('0x29'));_0x17d979[_0x1bec('0x31')]=_[_0x1bec('0x32')](_0x13f9f1[_0x1bec('0x31')]);_0x17d979['filters']=_[_0x1bec('0x33')](_0x17d979[_0x1bec('0x34')],_0x17d979[_0x1bec('0x31')]);_0x15a678[_0x1bec('0x35')]=_[_0x1bec('0x33')](_0x17d979[_0x1bec('0x34')],qs['fields'](_0x13f9f1['query']['fields']));_0x15a678[_0x1bec('0x35')]=_0x15a678[_0x1bec('0x35')][_0x1bec('0x36')]?_0x15a678[_0x1bec('0x35')]:_0x17d979[_0x1bec('0x34')];if(!_0x13f9f1[_0x1bec('0x31')][_0x1bec('0x37')]('nolimit')){_0x15a678[_0x1bec('0x1b')]=qs['limit'](_0x13f9f1['query'][_0x1bec('0x1b')]);_0x15a678[_0x1bec('0x1e')]=qs[_0x1bec('0x1e')](_0x13f9f1[_0x1bec('0x31')][_0x1bec('0x1e')]);}_0x15a678[_0x1bec('0x38')]=qs['sort'](_0x13f9f1[_0x1bec('0x31')]['sort']);_0x15a678[_0x1bec('0x39')]=qs[_0x1bec('0x3a')](_[_0x1bec('0x3b')](_0x13f9f1['query'],_0x17d979[_0x1bec('0x3a')]),_0x3cbbe4);if(_0x13f9f1[_0x1bec('0x31')][_0x1bec('0x3c')]){_0x15a678[_0x1bec('0x39')]=_[_0x1bec('0x3d')](_0x15a678[_0x1bec('0x39')],{'$or':_[_0x1bec('0x2c')](_0x3cbbe4,function(_0x28d5af){if(_0x28d5af[_0x1bec('0x30')]!=='VIRTUAL'){var _0x282cbd={};_0x282cbd[_0x28d5af[_0x1bec('0x29')]]={'$like':'%'+_0x13f9f1[_0x1bec('0x31')][_0x1bec('0x3c')]+'%'};return _0x282cbd;}})});}_0x15a678=_[_0x1bec('0x3d')]({},_0x15a678,_0x13f9f1[_0x1bec('0x3e')]);var _0x3cce54={'where':_0x15a678[_0x1bec('0x39')]};return db[_0x1bec('0x2d')][_0x1bec('0x1d')](_0x3cce54)['then'](function(_0x26a8a0){_0x4402bf[_0x1bec('0x1d')]=_0x26a8a0;if(_0x13f9f1[_0x1bec('0x31')][_0x1bec('0x3f')]){_0x15a678[_0x1bec('0x40')]=[{'all':!![]}];}return db['Migration'][_0x1bec('0x41')](_0x15a678);})[_0x1bec('0x25')](function(_0x5a545d){_0x4402bf['rows']=_0x5a545d;return _0x4402bf;})[_0x1bec('0x25')](respondWithFilteredResult(_0x30f1ee,_0x15a678))[_0x1bec('0x42')](handleError(_0x30f1ee,null));};
\ No newline at end of file
+var _0xf43b=['query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','end','error','stack','name','send','index','map','Migration','rawAttributes','type','key'];(function(_0x4444bc,_0xb4a74){var _0x532a1e=function(_0xb128a0){while(--_0xb128a0){_0x4444bc['push'](_0x4444bc['shift']());}};_0x532a1e(++_0xb4a74);}(_0xf43b,0x1b7));var _0xbf43=function(_0x5d45d0,_0x4332cc){_0x5d45d0=_0x5d45d0-0x0;var _0x25e9f8=_0xf43b[_0x5d45d0];return _0x25e9f8;};'use strict';var emlformat=require(_0xbf43('0x0'));var rimraf=require(_0xbf43('0x1'));var zipdir=require(_0xbf43('0x2'));var jsonpatch=require(_0xbf43('0x3'));var rp=require(_0xbf43('0x4'));var moment=require(_0xbf43('0x5'));var BPromise=require(_0xbf43('0x6'));var Mustache=require(_0xbf43('0x7'));var util=require(_0xbf43('0x8'));var path=require(_0xbf43('0x9'));var sox=require(_0xbf43('0xa'));var csv=require(_0xbf43('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbf43('0xc'));var _=require(_0xbf43('0xd'));var squel=require('squel');var crypto=require(_0xbf43('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xbf43('0xf'));var toCsv=require(_0xbf43('0xb'));var querystring=require(_0xbf43('0x10'));var Papa=require(_0xbf43('0x11'));var Redis=require(_0xbf43('0x12'));var authService=require(_0xbf43('0x13'));var qs=require(_0xbf43('0x14'));var as=require(_0xbf43('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbf43('0x16'))(_0xbf43('0x17'));var utils=require('../../config/utils');var config=require(_0xbf43('0x18'));var licenseUtil=require(_0xbf43('0x19'));var db=require(_0xbf43('0x1a'))['db'];function respondWithStatusCode(_0x407567,_0x1b9f86){_0x1b9f86=_0x1b9f86||0xcc;return function(_0x2345e1){if(_0x2345e1){return _0x407567[_0xbf43('0x1b')](_0x1b9f86);}return _0x407567[_0xbf43('0x1c')](_0x1b9f86)['end']();};}function respondWithResult(_0x461f02,_0x331d9b){_0x331d9b=_0x331d9b||0xc8;return function(_0xdd3073){if(_0xdd3073){return _0x461f02[_0xbf43('0x1c')](_0x331d9b)[_0xbf43('0x1d')](_0xdd3073);}};}function respondWithFilteredResult(_0x3b5834,_0x5151d8){return function(_0x58bee9){if(_0x58bee9){var _0x192332=typeof _0x5151d8['offset']===_0xbf43('0x1e')&&typeof _0x5151d8[_0xbf43('0x1f')]===_0xbf43('0x1e');var _0x300b69=_0x58bee9[_0xbf43('0x20')];var _0x48dead=_0x192332?0x0:_0x5151d8['offset'];var _0x3446aa=_0x192332?_0x58bee9[_0xbf43('0x20')]:_0x5151d8[_0xbf43('0x21')]+_0x5151d8[_0xbf43('0x1f')];var _0x295023;if(_0x3446aa>=_0x300b69){_0x3446aa=_0x300b69;_0x295023=0xc8;}else{_0x295023=0xce;}_0x3b5834[_0xbf43('0x1c')](_0x295023);return _0x3b5834['set'](_0xbf43('0x22'),_0x48dead+'-'+_0x3446aa+'/'+_0x300b69)[_0xbf43('0x1d')](_0x58bee9);}return null;};}function patchUpdates(_0x498087){return function(_0x4fea52){try{jsonpatch[_0xbf43('0x23')](_0x4fea52,_0x498087,!![]);}catch(_0x578825){return BPromise[_0xbf43('0x24')](_0x578825);}return _0x4fea52[_0xbf43('0x25')]();};}function saveUpdates(_0x90dbb,_0x1524fb){return function(_0x1cf6a3){if(_0x1cf6a3){return _0x1cf6a3[_0xbf43('0x26')](_0x90dbb)['then'](function(_0x9d559e){return _0x9d559e;});}return null;};}function removeEntity(_0x853399,_0x3b3120){return function(_0x5210b0){if(_0x5210b0){return _0x5210b0['destroy']()[_0xbf43('0x27')](function(){_0x853399[_0xbf43('0x1c')](0xcc)[_0xbf43('0x28')]();});}};}function handleEntityNotFound(_0x438b1d,_0x2dae5f){return function(_0x119c8a){if(!_0x119c8a){_0x438b1d[_0xbf43('0x1b')](0x194);}return _0x119c8a;};}function handleError(_0xa8a116,_0xef1fd1){_0xef1fd1=_0xef1fd1||0x1f4;return function(_0x250e16){logger[_0xbf43('0x29')](_0x250e16[_0xbf43('0x2a')]);if(_0x250e16[_0xbf43('0x2b')]){delete _0x250e16[_0xbf43('0x2b')];}_0xa8a116[_0xbf43('0x1c')](_0xef1fd1)[_0xbf43('0x2c')](_0x250e16);};}exports[_0xbf43('0x2d')]=function(_0x4f4cdb,_0xcc163a){var _0x151078={},_0x2d147d={},_0x126004={'count':0x0,'rows':[]};var _0x2475be=_[_0xbf43('0x2e')](db[_0xbf43('0x2f')][_0xbf43('0x30')],function(_0x964212){return{'name':_0x964212['fieldName'],'type':_0x964212[_0xbf43('0x31')][_0xbf43('0x32')]};});_0x2d147d['model']=_[_0xbf43('0x2e')](_0x2475be,'name');_0x2d147d[_0xbf43('0x33')]=_['keys'](_0x4f4cdb[_0xbf43('0x33')]);_0x2d147d[_0xbf43('0x34')]=_[_0xbf43('0x35')](_0x2d147d[_0xbf43('0x36')],_0x2d147d[_0xbf43('0x33')]);_0x151078[_0xbf43('0x37')]=_[_0xbf43('0x35')](_0x2d147d['model'],qs[_0xbf43('0x38')](_0x4f4cdb['query'][_0xbf43('0x38')]));_0x151078[_0xbf43('0x37')]=_0x151078[_0xbf43('0x37')][_0xbf43('0x39')]?_0x151078['attributes']:_0x2d147d[_0xbf43('0x36')];if(!_0x4f4cdb['query']['hasOwnProperty'](_0xbf43('0x3a'))){_0x151078[_0xbf43('0x1f')]=qs[_0xbf43('0x1f')](_0x4f4cdb[_0xbf43('0x33')][_0xbf43('0x1f')]);_0x151078[_0xbf43('0x21')]=qs[_0xbf43('0x21')](_0x4f4cdb[_0xbf43('0x33')][_0xbf43('0x21')]);}_0x151078[_0xbf43('0x3b')]=qs['sort'](_0x4f4cdb['query'][_0xbf43('0x3c')]);_0x151078['where']=qs[_0xbf43('0x34')](_[_0xbf43('0x3d')](_0x4f4cdb['query'],_0x2d147d[_0xbf43('0x34')]),_0x2475be);if(_0x4f4cdb['query'][_0xbf43('0x3e')]){_0x151078[_0xbf43('0x3f')]=_[_0xbf43('0x40')](_0x151078[_0xbf43('0x3f')],{'$or':_['map'](_0x2475be,function(_0x4a6f11){if(_0x4a6f11[_0xbf43('0x31')]!==_0xbf43('0x41')){var _0x4c475c={};_0x4c475c[_0x4a6f11[_0xbf43('0x2b')]]={'$like':'%'+_0x4f4cdb[_0xbf43('0x33')][_0xbf43('0x3e')]+'%'};return _0x4c475c;}})});}_0x151078=_[_0xbf43('0x40')]({},_0x151078,_0x4f4cdb[_0xbf43('0x42')]);var _0x2d842d={'where':_0x151078[_0xbf43('0x3f')]};return db['Migration']['count'](_0x2d842d)[_0xbf43('0x27')](function(_0x157171){_0x126004[_0xbf43('0x20')]=_0x157171;if(_0x4f4cdb[_0xbf43('0x33')][_0xbf43('0x43')]){_0x151078['include']=[{'all':!![]}];}return db['Migration'][_0xbf43('0x44')](_0x151078);})[_0xbf43('0x27')](function(_0x450052){_0x126004['rows']=_0x450052;return _0x126004;})[_0xbf43('0x27')](respondWithFilteredResult(_0xcc163a,_0x151078))[_0xbf43('0x45')](handleError(_0xcc163a,null));};
\ No newline at end of file
index 83fead2..d0c4fd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09ac=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./migration.attributes','exports','define','lodash','util','../../config/logger'];(function(_0x153134,_0x533494){var _0x1d402a=function(_0xe82a8){while(--_0xe82a8){_0x153134['push'](_0x153134['shift']());}};_0x1d402a(++_0x533494);}(_0x09ac,0x8d));var _0xc09a=function(_0x52e94f,_0x22e52d){_0x52e94f=_0x52e94f-0x0;var _0x127d43=_0x09ac[_0x52e94f];return _0x127d43;};'use strict';var _=require(_0xc09a('0x0'));var util=require(_0xc09a('0x1'));var logger=require(_0xc09a('0x2'))(_0xc09a('0x3'));var moment=require(_0xc09a('0x4'));var BPromise=require(_0xc09a('0x5'));var rp=require(_0xc09a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc09a('0x7'));var config=require(_0xc09a('0x8'));var attributes=require(_0xc09a('0x9'));module[_0xc09a('0xa')]=function(_0x3cf639,_0x36eb32){return _0x3cf639[_0xc09a('0xb')]('Migration',attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc843=['migrations','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./migration.attributes'];(function(_0x3d54b1,_0xddb6a1){var _0x3f07fa=function(_0xdcdcd9){while(--_0xdcdcd9){_0x3d54b1['push'](_0x3d54b1['shift']());}};_0x3f07fa(++_0xddb6a1);}(_0xc843,0x83));var _0x3c84=function(_0x1fb038,_0xc3f69b){_0x1fb038=_0x1fb038-0x0;var _0x1600dc=_0xc843[_0x1fb038];return _0x1600dc;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3c84('0x0'))(_0x3c84('0x1'));var moment=require(_0x3c84('0x2'));var BPromise=require(_0x3c84('0x3'));var rp=require(_0x3c84('0x4'));var fs=require('fs');var path=require(_0x3c84('0x5'));var rimraf=require(_0x3c84('0x6'));var config=require(_0x3c84('0x7'));var attributes=require(_0x3c84('0x8'));module['exports']=function(_0x4b226a,_0x1d07d2){return _0x4b226a['define']('Migration',attributes,{'tableName':_0x3c84('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0640782..ae72783 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2333=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','randomstring','ioredis'];(function(_0x1678c8,_0x1c32f4){var _0x387aa9=function(_0x2803bd){while(--_0x2803bd){_0x1678c8['push'](_0x1678c8['shift']());}};_0x387aa9(++_0x1c32f4);}(_0x2333,0x11a));var _0x3233=function(_0x59987e,_0x505663){_0x59987e=_0x59987e-0x0;var _0x27cde2=_0x2333[_0x59987e];return _0x27cde2;};'use strict';var _=require(_0x3233('0x0'));var util=require(_0x3233('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x3233('0x2'));var fs=require('fs');var Redis=require(_0x3233('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3233('0x4'));var logger=require(_0x3233('0x5'))(_0x3233('0x6'));var config=require(_0x3233('0x7'));var jayson=require(_0x3233('0x8'));var client=jayson[_0x3233('0x9')][_0x3233('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x33a56d,_0x1e93e8,_0x1842a1){return new BPromise(function(_0x1837b6,_0x2ee6df){return client[_0x3233('0xb')](_0x33a56d,_0x1842a1)[_0x3233('0xc')](function(_0x7ff4bd){logger[_0x3233('0xd')](_0x3233('0xe'),_0x1e93e8,_0x3233('0xf'));logger[_0x3233('0x10')](_0x3233('0x11'),_0x1e93e8,_0x3233('0xf'),JSON['stringify'](_0x7ff4bd));if(_0x7ff4bd[_0x3233('0x12')]){if(_0x7ff4bd[_0x3233('0x12')][_0x3233('0x13')]===0x1f4){logger[_0x3233('0x12')](_0x3233('0xe'),_0x1e93e8,_0x7ff4bd[_0x3233('0x12')][_0x3233('0x14')]);return _0x2ee6df(_0x7ff4bd[_0x3233('0x12')][_0x3233('0x14')]);}logger[_0x3233('0x12')](_0x3233('0xe'),_0x1e93e8,_0x7ff4bd[_0x3233('0x12')][_0x3233('0x14')]);return _0x1837b6(_0x7ff4bd['error']['message']);}else{logger[_0x3233('0xd')](_0x3233('0xe'),_0x1e93e8,_0x3233('0xf'));_0x1837b6(_0x7ff4bd['result'][_0x3233('0x14')]);}})[_0x3233('0x15')](function(_0x127227){logger['error'](_0x3233('0xe'),_0x1e93e8,_0x127227);_0x2ee6df(_0x127227);});});}
\ No newline at end of file
+var _0xe130=['Migration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','info'];(function(_0x25fe03,_0x5efc43){var _0x35a55f=function(_0x5a2e2e){while(--_0x5a2e2e){_0x25fe03['push'](_0x25fe03['shift']());}};_0x35a55f(++_0x5efc43);}(_0xe130,0x127));var _0x0e13=function(_0x26ca30,_0x34ae07){_0x26ca30=_0x26ca30-0x0;var _0x4416c1=_0xe130[_0x26ca30];return _0x4416c1;};'use strict';var _=require(_0x0e13('0x0'));var util=require(_0x0e13('0x1'));var moment=require('moment');var BPromise=require(_0x0e13('0x2'));var rs=require(_0x0e13('0x3'));var fs=require('fs');var Redis=require(_0x0e13('0x4'));var db=require(_0x0e13('0x5'))['db'];var utils=require(_0x0e13('0x6'));var logger=require('../../config/logger')(_0x0e13('0x7'));var config=require(_0x0e13('0x8'));var jayson=require(_0x0e13('0x9'));var client=jayson[_0x0e13('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1774a5,_0x5f0d09,_0x567031){return new BPromise(function(_0x5aaa22,_0x2faf49){return client[_0x0e13('0xb')](_0x1774a5,_0x567031)['then'](function(_0x5d066a){logger[_0x0e13('0xc')](_0x0e13('0xd'),_0x5f0d09,_0x0e13('0xe'));logger[_0x0e13('0xf')]('Migration,\x20%s,\x20%s,\x20%s',_0x5f0d09,'request\x20sent',JSON[_0x0e13('0x10')](_0x5d066a));if(_0x5d066a[_0x0e13('0x11')]){if(_0x5d066a[_0x0e13('0x11')][_0x0e13('0x12')]===0x1f4){logger['error'](_0x0e13('0xd'),_0x5f0d09,_0x5d066a['error'][_0x0e13('0x13')]);return _0x2faf49(_0x5d066a[_0x0e13('0x11')][_0x0e13('0x13')]);}logger[_0x0e13('0x11')](_0x0e13('0xd'),_0x5f0d09,_0x5d066a[_0x0e13('0x11')][_0x0e13('0x13')]);return _0x5aaa22(_0x5d066a[_0x0e13('0x11')][_0x0e13('0x13')]);}else{logger['info'](_0x0e13('0xd'),_0x5f0d09,_0x0e13('0xe'));_0x5aaa22(_0x5d066a[_0x0e13('0x14')][_0x0e13('0x13')]);}})[_0x0e13('0x15')](function(_0x32f76a){logger['error'](_0x0e13('0xd'),_0x5f0d09,_0x32f76a);_0x2faf49(_0x32f76a);});});}
\ No newline at end of file
index e99bdc1..9aed073 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x341c=['../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','index','/:id','isAuthenticated','show','create','put','update','destroy','exports','multer','path','express','Router','fs-extra'];(function(_0x119392,_0x514cfa){var _0x1e4985=function(_0x4e8065){while(--_0x4e8065){_0x119392['push'](_0x119392['shift']());}};_0x1e4985(++_0x514cfa);}(_0x341c,0xcc));var _0xc341=function(_0x4cce3e,_0x4a1349){_0x4cce3e=_0x4cce3e-0x0;var _0x391e08=_0x341c[_0x4cce3e];return _0x391e08;};'use strict';var multer=require(_0xc341('0x0'));var util=require('util');var path=require(_0xc341('0x1'));var timeout=require('connect-timeout');var express=require(_0xc341('0x2'));var router=express[_0xc341('0x3')]();var fs_extra=require(_0xc341('0x4'));var auth=require(_0xc341('0x5'));var interaction=require(_0xc341('0x6'));var config=require(_0xc341('0x7'));var controller=require(_0xc341('0x8'));router[_0xc341('0x9')]('/',auth['isAuthenticated'](),controller[_0xc341('0xa')]);router[_0xc341('0x9')](_0xc341('0xb'),auth[_0xc341('0xc')](),controller[_0xc341('0xd')]);router['post']('/',auth[_0xc341('0xc')](),controller[_0xc341('0xe')]);router[_0xc341('0xf')](_0xc341('0xb'),auth[_0xc341('0xc')](),controller[_0xc341('0x10')]);router['delete'](_0xc341('0xb'),auth[_0xc341('0xc')](),controller[_0xc341('0x11')]);module[_0xc341('0x12')]=router;
\ No newline at end of file
+var _0x8caf=['show','post','create','put','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','index','/:id','isAuthenticated'];(function(_0x45d55e,_0x2fede3){var _0x29812a=function(_0x3c6830){while(--_0x3c6830){_0x45d55e['push'](_0x45d55e['shift']());}};_0x29812a(++_0x2fede3);}(_0x8caf,0x16f));var _0xf8ca=function(_0x471b98,_0x215d50){_0x471b98=_0x471b98-0x0;var _0x9492c0=_0x8caf[_0x471b98];return _0x9492c0;};'use strict';var multer=require(_0xf8ca('0x0'));var util=require(_0xf8ca('0x1'));var path=require('path');var timeout=require(_0xf8ca('0x2'));var express=require(_0xf8ca('0x3'));var router=express[_0xf8ca('0x4')]();var fs_extra=require(_0xf8ca('0x5'));var auth=require(_0xf8ca('0x6'));var interaction=require(_0xf8ca('0x7'));var config=require('../../config/environment');var controller=require('./network.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xf8ca('0x8')]);router['get'](_0xf8ca('0x9'),auth[_0xf8ca('0xa')](),controller[_0xf8ca('0xb')]);router[_0xf8ca('0xc')]('/',auth['isAuthenticated'](),controller[_0xf8ca('0xd')]);router[_0xf8ca('0xe')](_0xf8ca('0x9'),auth['isAuthenticated'](),controller['update']);router[_0xf8ca('0xf')]('/:id',auth[_0xf8ca('0xa')](),controller[_0xf8ca('0x10')]);module[_0xf8ca('0x11')]=router;
\ No newline at end of file
index ecdcf13..13ac183 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf73a=['sequelize','exports','ENUM','externip','stun','turn','STRING'];(function(_0x4a3898,_0x4c9853){var _0x25ceb0=function(_0x528b6d){while(--_0x528b6d){_0x4a3898['push'](_0x4a3898['shift']());}};_0x25ceb0(++_0x4c9853);}(_0xf73a,0x19d));var _0xaf73=function(_0x30cadf,_0x1ad627){_0x30cadf=_0x30cadf-0x0;var _0x4ffa80=_0xf73a[_0x30cadf];return _0x4ffa80;};'use strict';var Sequelize=require(_0xaf73('0x0'));module[_0xaf73('0x1')]={'type':{'type':Sequelize[_0xaf73('0x2')]('localnet',_0xaf73('0x3'),_0xaf73('0x4'),_0xaf73('0x5'))},'value':{'type':Sequelize[_0xaf73('0x6')]},'username':{'type':Sequelize[_0xaf73('0x6')]},'password':{'type':Sequelize[_0xaf73('0x6')]}};
\ No newline at end of file
+var _0x340e=['exports','ENUM','externip','turn','STRING','sequelize'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0x340e,0x12b));var _0xe340=function(_0x2ee319,_0x56fe5f){_0x2ee319=_0x2ee319-0x0;var _0x1de6d2=_0x340e[_0x2ee319];return _0x1de6d2;};'use strict';var Sequelize=require(_0xe340('0x0'));module[_0xe340('0x1')]={'type':{'type':Sequelize[_0xe340('0x2')]('localnet',_0xe340('0x3'),'stun',_0xe340('0x4'))},'value':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xe340('0x5')]}};
\ No newline at end of file
index 6dc3d4b..c0ff7ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ab1=['render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','readFileSync','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','findAll','server/files/templates/turn_multiple.ejs','TURN','format','util','path','ejs','lodash','../../components/parsers/qs','api','../../mysqldb','jayson/promise','client','http','request','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','end','stack','name','send','map','Network','rawAttributes','type','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','include','rows','params','keys','filters','options','find','create','body','toUpperCase','STUN','join','root','server/files/templates/stun_multiple.ejs','utf8'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x1ab1,0x108));var _0x11ab=function(_0x369f21,_0x4bc1b6){_0x369f21=_0x369f21-0x0;var _0x432f07=_0x1ab1[_0x369f21];return _0x432f07;};'use strict';var util=require(_0x11ab('0x0'));var path=require(_0x11ab('0x1'));var ejs=require(_0x11ab('0x2'));var fs=require('fs');var _=require(_0x11ab('0x3'));var qs=require(_0x11ab('0x4'));var logger=require('../../config/logger')(_0x11ab('0x5'));var config=require('../../config/environment');var db=require(_0x11ab('0x6'))['db'];var jayson=require(_0x11ab('0x7'));var client=jayson[_0x11ab('0x8')][_0x11ab('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x56c85c,_0x2f856f,_0x1787bf,_0x463569){return new Promise(function(_0x547e5c,_0x27336e){var _0x58b227=_0x463569||client;return _0x58b227[_0x11ab('0xa')](_0x56c85c,_0x1787bf)[_0x11ab('0xb')](function(_0x16b011){logger[_0x11ab('0xc')](_0x11ab('0xd'),_0x2f856f,_0x11ab('0xe'));logger[_0x11ab('0xf')](_0x11ab('0x10'),_0x2f856f,_0x11ab('0xe'),JSON[_0x11ab('0x11')](_0x16b011));if(_0x16b011['error']){if(_0x16b011[_0x11ab('0x12')][_0x11ab('0x13')]===0x1f4){logger[_0x11ab('0x12')]('Network,\x20%s,\x20%s',_0x2f856f,_0x16b011['error']['message']);return _0x27336e(_0x16b011[_0x11ab('0x12')]['message']);}logger[_0x11ab('0x12')](_0x11ab('0xd'),_0x2f856f,_0x16b011[_0x11ab('0x12')][_0x11ab('0x14')]);return _0x547e5c(_0x16b011[_0x11ab('0x12')]['message']);}else{logger[_0x11ab('0xc')](_0x11ab('0xd'),_0x2f856f,_0x11ab('0xe'));_0x547e5c(_0x16b011['result'][_0x11ab('0x14')]);}})[_0x11ab('0x15')](function(_0x560316){logger['error'](_0x11ab('0xd'),_0x2f856f,_0x560316);_0x27336e(_0x560316);});});}function respondWithResult(_0x2289a7,_0x2ae36a){_0x2ae36a=_0x2ae36a||0xc8;return function(_0x2bc60a){if(_0x2bc60a){return _0x2289a7[_0x11ab('0x16')](_0x2ae36a)[_0x11ab('0x17')](_0x2bc60a);}};}function respondWithFilteredResult(_0x18fdd0,_0x340a6d){return function(_0x1d3648){if(_0x1d3648){var _0xb89358=typeof _0x340a6d[_0x11ab('0x18')]===_0x11ab('0x19')&&typeof _0x340a6d[_0x11ab('0x1a')]===_0x11ab('0x19');var _0x10d71e=_0x1d3648[_0x11ab('0x1b')];var _0x44542b=_0xb89358?0x0:_0x340a6d[_0x11ab('0x18')];var _0x5b19de=_0xb89358?_0x1d3648[_0x11ab('0x1b')]:_0x340a6d[_0x11ab('0x18')]+_0x340a6d[_0x11ab('0x1a')];var _0x2ba0e2;if(_0x5b19de>=_0x10d71e){_0x5b19de=_0x10d71e;_0x2ba0e2=0xc8;}else{_0x2ba0e2=0xce;}_0x18fdd0['status'](_0x2ba0e2);return _0x18fdd0[_0x11ab('0x1c')](_0x11ab('0x1d'),_0x44542b+'-'+_0x5b19de+'/'+_0x10d71e)['json'](_0x1d3648);}return null;};}function saveUpdates(_0x231721){return function(_0x807230){if(_0x807230){return _0x807230[_0x11ab('0x1e')](_0x231721)[_0x11ab('0xb')](function(_0x292cf2){return _0x292cf2;});}return null;};}function removeEntity(_0x595084){return function(_0x32ed68){if(_0x32ed68){return _0x32ed68[_0x11ab('0x1f')]()[_0x11ab('0xb')](function(){_0x595084[_0x11ab('0x16')](0xcc)[_0x11ab('0x20')]();});}};}function handleEntityNotFound(_0xace94c){return function(_0x331d17){if(!_0x331d17){_0xace94c['sendStatus'](0x194);}return _0x331d17;};}function handleError(_0x220e07,_0x4911b4){_0x4911b4=_0x4911b4||0x1f4;return function(_0x3fd65b){logger['error'](_0x3fd65b[_0x11ab('0x21')]);if(_0x3fd65b[_0x11ab('0x22')]){delete _0x3fd65b['name'];}_0x220e07[_0x11ab('0x16')](_0x4911b4)[_0x11ab('0x23')](_0x3fd65b);};}exports['index']=function(_0x562296,_0x6cc64b){var _0x3df673={},_0x3122d4={},_0xf0e73c={'count':0x0,'rows':[]};var _0x52b7bf=_[_0x11ab('0x24')](db[_0x11ab('0x25')][_0x11ab('0x26')],function(_0x22087d){return{'name':_0x22087d['fieldName'],'type':_0x22087d[_0x11ab('0x27')]['key']};});_0x3122d4[_0x11ab('0x28')]=_[_0x11ab('0x24')](_0x52b7bf,'name');_0x3122d4[_0x11ab('0x29')]=_['keys'](_0x562296[_0x11ab('0x29')]);_0x3122d4['filters']=_[_0x11ab('0x2a')](_0x3122d4[_0x11ab('0x28')],_0x3122d4[_0x11ab('0x29')]);_0x3df673[_0x11ab('0x2b')]=_['intersection'](_0x3122d4[_0x11ab('0x28')],qs[_0x11ab('0x2c')](_0x562296[_0x11ab('0x29')][_0x11ab('0x2c')]));_0x3df673[_0x11ab('0x2b')]=_0x3df673[_0x11ab('0x2b')][_0x11ab('0x2d')]?_0x3df673[_0x11ab('0x2b')]:_0x3122d4[_0x11ab('0x28')];if(!_0x562296[_0x11ab('0x29')][_0x11ab('0x2e')](_0x11ab('0x2f'))){_0x3df673[_0x11ab('0x1a')]=qs[_0x11ab('0x1a')](_0x562296[_0x11ab('0x29')][_0x11ab('0x1a')]);_0x3df673[_0x11ab('0x18')]=qs[_0x11ab('0x18')](_0x562296[_0x11ab('0x29')][_0x11ab('0x18')]);}_0x3df673[_0x11ab('0x30')]=qs[_0x11ab('0x31')](_0x562296[_0x11ab('0x29')][_0x11ab('0x31')]);_0x3df673[_0x11ab('0x32')]=qs['filters'](_['pick'](_0x562296[_0x11ab('0x29')],_0x3122d4['filters']),_0x52b7bf);if(_0x562296[_0x11ab('0x29')]['filter']){_0x3df673[_0x11ab('0x32')]=_[_0x11ab('0x33')](_0x3df673[_0x11ab('0x32')],{'$or':_[_0x11ab('0x24')](_0x52b7bf,function(_0x4db06b){if(_0x4db06b['type']!==_0x11ab('0x34')){var _0x2e3e1a={};_0x2e3e1a[_0x4db06b['name']]={'$like':'%'+_0x562296['query']['filter']+'%'};return _0x2e3e1a;}})});}_0x3df673=_[_0x11ab('0x33')]({},_0x3df673,_0x562296['options']);var _0x2c9c5e={'where':_0x3df673[_0x11ab('0x32')]};return db[_0x11ab('0x25')]['count'](_0x2c9c5e)[_0x11ab('0xb')](function(_0x503260){_0xf0e73c[_0x11ab('0x1b')]=_0x503260;if(_0x562296[_0x11ab('0x29')]['includeAll']){_0x3df673[_0x11ab('0x35')]=[{'all':!![]}];}return db['Network']['findAll'](_0x3df673);})['then'](function(_0xeb5ec2){_0xf0e73c[_0x11ab('0x36')]=_0xeb5ec2;return _0xf0e73c;})[_0x11ab('0xb')](respondWithFilteredResult(_0x6cc64b,_0x3df673))[_0x11ab('0x15')](handleError(_0x6cc64b,null));};exports['show']=function(_0x4e5010,_0x52b55a){var _0x3cae7b={'raw':!![],'where':{'id':_0x4e5010[_0x11ab('0x37')]['id']}},_0x41acdc={};_0x41acdc[_0x11ab('0x28')]=_[_0x11ab('0x38')](db['Network'][_0x11ab('0x26')]);_0x41acdc[_0x11ab('0x29')]=_[_0x11ab('0x38')](_0x4e5010[_0x11ab('0x29')]);_0x41acdc[_0x11ab('0x39')]=_['intersection'](_0x41acdc[_0x11ab('0x28')],_0x41acdc[_0x11ab('0x29')]);_0x3cae7b['attributes']=_['intersection'](_0x41acdc[_0x11ab('0x28')],qs['fields'](_0x4e5010['query'][_0x11ab('0x2c')]));_0x3cae7b[_0x11ab('0x2b')]=_0x3cae7b[_0x11ab('0x2b')][_0x11ab('0x2d')]?_0x3cae7b['attributes']:_0x41acdc[_0x11ab('0x28')];if(_0x4e5010[_0x11ab('0x29')]['includeAll']){_0x3cae7b[_0x11ab('0x35')]=[{'all':!![]}];}_0x3cae7b=_[_0x11ab('0x33')]({},_0x3cae7b,_0x4e5010[_0x11ab('0x3a')]);return db[_0x11ab('0x25')][_0x11ab('0x3b')](_0x3cae7b)[_0x11ab('0xb')](handleEntityNotFound(_0x52b55a,null))[_0x11ab('0xb')](respondWithResult(_0x52b55a,null))[_0x11ab('0x15')](handleError(_0x52b55a,null));};exports[_0x11ab('0x3c')]=function(_0x5e0ff3,_0x1c3455){var _0xb6a0c1;return db[_0x11ab('0x25')][_0x11ab('0x3c')](_0x5e0ff3[_0x11ab('0x3d')],{'raw':!![]})[_0x11ab('0xb')](function(_0x40d261){_0xb6a0c1=_0x40d261;return db['Network']['findAll']({'where':{'type':_0x5e0ff3['body'][_0x11ab('0x27')]},'raw':!![]});})[_0x11ab('0xb')](function(_0x556c27){if(_0xb6a0c1[_0x11ab('0x27')][_0x11ab('0x3e')]()==_0x11ab('0x3f')){var _0x49659d=fs['readFileSync'](path[_0x11ab('0x40')](config[_0x11ab('0x41')],_0x11ab('0x42')),_0x11ab('0x43'));var _0x25a2c8=ejs[_0x11ab('0x44')](_0x49659d,{'networks':_0x556c27||[]});fs[_0x11ab('0x45')](_0x11ab('0x46'),_0x25a2c8);return respondWithRpcPromise(_0x11ab('0x47'),_0x11ab('0x3c'),{'module':_0x11ab('0x48')});}else if(_0xb6a0c1['type'][_0x11ab('0x3e')]()=='TURN'){var _0x402795=fs[_0x11ab('0x49')](path[_0x11ab('0x40')](config[_0x11ab('0x41')],'server/files/templates/turn_multiple.ejs'),_0x11ab('0x43'));var _0x4c6c96=ejs[_0x11ab('0x44')](_0x402795,{'networks':_0x556c27||[]});fs[_0x11ab('0x45')](_0x11ab('0x4a'),_0x4c6c96);return respondWithRpcPromise(_0x11ab('0x47'),'create',{'module':_0x11ab('0x48')});}else{var _0x2bcd0d=fs[_0x11ab('0x49')](path['join'](config[_0x11ab('0x41')],_0x11ab('0x4b')),_0x11ab('0x43'));var _0x32b0ca=ejs[_0x11ab('0x44')](_0x2bcd0d,{'networks':_0x556c27||[]});fs[_0x11ab('0x45')](util['format'](_0x11ab('0x4c'),_0x5e0ff3[_0x11ab('0x3d')]['type'][_0x11ab('0x4d')]()),_0x32b0ca);return respondWithRpcPromise('Reload','create',{'module':_0x11ab('0x4e')});}})[_0x11ab('0xb')](function(){return _0xb6a0c1;})['then'](respondWithResult(_0x1c3455,0xc9))[_0x11ab('0x15')](handleError(_0x1c3455,null));};exports['update']=function(_0x231f30,_0x4837dc){var _0x463101;return db[_0x11ab('0x25')]['find']({'where':{'id':_0x231f30[_0x11ab('0x37')]['id']}})[_0x11ab('0xb')](handleEntityNotFound(_0x4837dc,null))[_0x11ab('0xb')](saveUpdates(_0x231f30[_0x11ab('0x3d')],null))['then'](function(_0xad8c04){if(_0xad8c04){_0x463101=_0xad8c04;return db[_0x11ab('0x25')][_0x11ab('0x4f')]({'where':{'type':_0x463101[_0x11ab('0x27')]},'raw':!![]});}return null;})[_0x11ab('0xb')](function(_0x50c177){if(_0x463101[_0x11ab('0x27')][_0x11ab('0x3e')]()=='STUN'){var _0x2165d7=fs[_0x11ab('0x49')](path[_0x11ab('0x40')](config['root'],_0x11ab('0x42')),_0x11ab('0x43'));var _0x522c4d=ejs['render'](_0x2165d7,{'networks':_0x50c177||[]});fs[_0x11ab('0x45')](_0x11ab('0x46'),_0x522c4d);return respondWithRpcPromise(_0x11ab('0x47'),'update',{'module':_0x11ab('0x48')});}else if(_0x463101[_0x11ab('0x27')][_0x11ab('0x3e')]()=='TURN'){var _0x2f60ef=fs['readFileSync'](path[_0x11ab('0x40')](config[_0x11ab('0x41')],_0x11ab('0x50')),_0x11ab('0x43'));var _0x1113d8=ejs[_0x11ab('0x44')](_0x2f60ef,{'networks':_0x50c177||[]});fs['writeFileSync'](_0x11ab('0x4a'),_0x1113d8);return respondWithRpcPromise('Reload',_0x11ab('0x1e'),{'module':_0x11ab('0x48')});}else{var _0x208022=fs[_0x11ab('0x49')](path['join'](config[_0x11ab('0x41')],_0x11ab('0x4b')),_0x11ab('0x43'));var _0x5a85ad=ejs[_0x11ab('0x44')](_0x208022,{'networks':_0x50c177||[]});fs[_0x11ab('0x45')](util['format'](_0x11ab('0x4c'),_0x231f30['body'][_0x11ab('0x27')]['toLowerCase']()),_0x5a85ad);return respondWithRpcPromise(_0x11ab('0x47'),_0x11ab('0x1e'),{'module':'chan_sip.so'});}})['then'](function(_0x50a7d9){if(_0x50a7d9){return _0x463101;}return null;})[_0x11ab('0xb')](respondWithResult(_0x4837dc,null))['catch'](handleError(_0x4837dc,null));};exports[_0x11ab('0x1f')]=function(_0x5a22bc,_0x4445c1){var _0x236fa2;return db['Network'][_0x11ab('0x3b')]({'where':{'id':_0x5a22bc[_0x11ab('0x37')]['id']}})[_0x11ab('0xb')](function(_0x222446){_0x236fa2=_0x222446;return _0x222446;})[_0x11ab('0xb')](handleEntityNotFound(_0x4445c1,null))[_0x11ab('0xb')](removeEntity(_0x4445c1,null))['then'](function(){if(_0x236fa2){return db[_0x11ab('0x25')][_0x11ab('0x4f')]({'where':{'type':_0x236fa2[_0x11ab('0x27')]},'raw':!![]});}})[_0x11ab('0xb')](function(_0x5d9f12){if(_0x236fa2[_0x11ab('0x27')][_0x11ab('0x3e')]()==_0x11ab('0x3f')){var _0x1e3e86=fs[_0x11ab('0x49')](path[_0x11ab('0x40')](config[_0x11ab('0x41')],_0x11ab('0x42')),_0x11ab('0x43'));var _0x7d4c04=ejs[_0x11ab('0x44')](_0x1e3e86,{'networks':_0x5d9f12||[]});fs[_0x11ab('0x45')]('/etc/asterisk/stun_xcally.conf',_0x7d4c04);return respondWithRpcPromise(_0x11ab('0x47'),_0x11ab('0x1f'),{'module':_0x11ab('0x48')});}else if(_0x236fa2['type']['toUpperCase']()==_0x11ab('0x51')){var _0x3a048a=fs[_0x11ab('0x49')](path[_0x11ab('0x40')](config[_0x11ab('0x41')],_0x11ab('0x50')),_0x11ab('0x43'));var _0x28ee99=ejs['render'](_0x3a048a,{'networks':_0x5d9f12||[]});fs[_0x11ab('0x45')](_0x11ab('0x4a'),_0x28ee99);return respondWithRpcPromise(_0x11ab('0x47'),_0x11ab('0x1f'),{'module':_0x11ab('0x48')});}else{var _0xa17a79=fs['readFileSync'](path['join'](config[_0x11ab('0x41')],'server/files/templates/network.ejs'),'utf8');var _0x3a5105=ejs[_0x11ab('0x44')](_0xa17a79,{'networks':_0x5d9f12||[]});fs[_0x11ab('0x45')](util[_0x11ab('0x52')]('/etc/asterisk/sip_xcally_%s.conf',_0x236fa2[_0x11ab('0x27')][_0x11ab('0x4d')]()),_0x3a5105);return respondWithRpcPromise(_0x11ab('0x47'),_0x11ab('0x1f'),{'module':_0x11ab('0x4e')});}})[_0x11ab('0x15')](handleError(_0x4445c1,null));};
\ No newline at end of file
+var _0xf7a0=['create','body','toUpperCase','STUN','readFileSync','join','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','root','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','server/files/templates/stun_multiple.ejs','utf8','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','request','then','info','Network,\x20%s,\x20%s','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','destroy','end','stack','name','send','index','map','Network','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','params','rawAttributes','find','transaction'];(function(_0x1fd8bd,_0x11c8e1){var _0x4180aa=function(_0x1e6fcd){while(--_0x1e6fcd){_0x1fd8bd['push'](_0x1fd8bd['shift']());}};_0x4180aa(++_0x11c8e1);}(_0xf7a0,0x80));var _0x0f7a=function(_0x4c6807,_0x4a44d5){_0x4c6807=_0x4c6807-0x0;var _0x2800fa=_0xf7a0[_0x4c6807];return _0x2800fa;};'use strict';var emlformat=require(_0x0f7a('0x0'));var rimraf=require(_0x0f7a('0x1'));var zipdir=require(_0x0f7a('0x2'));var jsonpatch=require(_0x0f7a('0x3'));var rp=require('request-promise');var moment=require(_0x0f7a('0x4'));var BPromise=require(_0x0f7a('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x0f7a('0x6'));var sox=require(_0x0f7a('0x7'));var csv=require(_0x0f7a('0x8'));var ejs=require(_0x0f7a('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x0f7a('0xa'));var crypto=require('crypto');var jsforce=require(_0x0f7a('0xb'));var deskjs=require(_0x0f7a('0xc'));var toCsv=require(_0x0f7a('0x8'));var querystring=require(_0x0f7a('0xd'));var Papa=require(_0x0f7a('0xe'));var Redis=require('ioredis');var authService=require(_0x0f7a('0xf'));var qs=require(_0x0f7a('0x10'));var as=require(_0x0f7a('0x11'));var hardwareService=require(_0x0f7a('0x12'));var logger=require(_0x0f7a('0x13'))(_0x0f7a('0x14'));var utils=require(_0x0f7a('0x15'));var config=require(_0x0f7a('0x16'));var licenseUtil=require(_0x0f7a('0x17'));var db=require(_0x0f7a('0x18'))['db'];var jayson=require(_0x0f7a('0x19'));var client=jayson[_0x0f7a('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5ce552,_0x37ade7,_0x26b530,_0xc43c4b){return new BPromise(function(_0x532bf9,_0x274d0d){var _0x9cc97c=_0xc43c4b||client;return _0x9cc97c[_0x0f7a('0x1b')](_0x5ce552,_0x26b530)[_0x0f7a('0x1c')](function(_0x80bc50){logger[_0x0f7a('0x1d')](_0x0f7a('0x1e'),_0x37ade7,'request\x20sent');logger['debug'](_0x0f7a('0x1f'),_0x37ade7,'request\x20sent',JSON[_0x0f7a('0x20')](_0x80bc50));if(_0x80bc50[_0x0f7a('0x21')]){if(_0x80bc50[_0x0f7a('0x21')][_0x0f7a('0x22')]===0x1f4){logger[_0x0f7a('0x21')](_0x0f7a('0x1e'),_0x37ade7,_0x80bc50[_0x0f7a('0x21')][_0x0f7a('0x23')]);return _0x274d0d(_0x80bc50[_0x0f7a('0x21')][_0x0f7a('0x23')]);}logger[_0x0f7a('0x21')](_0x0f7a('0x1e'),_0x37ade7,_0x80bc50[_0x0f7a('0x21')][_0x0f7a('0x23')]);return _0x532bf9(_0x80bc50[_0x0f7a('0x21')][_0x0f7a('0x23')]);}else{logger[_0x0f7a('0x1d')]('Network,\x20%s,\x20%s',_0x37ade7,'request\x20sent');_0x532bf9(_0x80bc50[_0x0f7a('0x24')][_0x0f7a('0x23')]);}})[_0x0f7a('0x25')](function(_0x4a9527){logger[_0x0f7a('0x21')]('Network,\x20%s,\x20%s',_0x37ade7,_0x4a9527);_0x274d0d(_0x4a9527);});});}function respondWithStatusCode(_0x3e71d3,_0x178c66){_0x178c66=_0x178c66||0xcc;return function(_0x39d187){if(_0x39d187){return _0x3e71d3[_0x0f7a('0x26')](_0x178c66);}return _0x3e71d3[_0x0f7a('0x27')](_0x178c66)['end']();};}function respondWithResult(_0x4fad07,_0x333c50){_0x333c50=_0x333c50||0xc8;return function(_0x592f0a){if(_0x592f0a){return _0x4fad07[_0x0f7a('0x27')](_0x333c50)['json'](_0x592f0a);}};}function respondWithFilteredResult(_0x4cfab0,_0x3fc0c7){return function(_0x152530){if(_0x152530){var _0x501744=typeof _0x3fc0c7[_0x0f7a('0x28')]===_0x0f7a('0x29')&&typeof _0x3fc0c7[_0x0f7a('0x2a')]===_0x0f7a('0x29');var _0x578508=_0x152530[_0x0f7a('0x2b')];var _0x8f927d=_0x501744?0x0:_0x3fc0c7[_0x0f7a('0x28')];var _0x21e8d9=_0x501744?_0x152530[_0x0f7a('0x2b')]:_0x3fc0c7[_0x0f7a('0x28')]+_0x3fc0c7['limit'];var _0xd9b4c6;if(_0x21e8d9>=_0x578508){_0x21e8d9=_0x578508;_0xd9b4c6=0xc8;}else{_0xd9b4c6=0xce;}_0x4cfab0[_0x0f7a('0x27')](_0xd9b4c6);return _0x4cfab0[_0x0f7a('0x2c')](_0x0f7a('0x2d'),_0x8f927d+'-'+_0x21e8d9+'/'+_0x578508)[_0x0f7a('0x2e')](_0x152530);}return null;};}function patchUpdates(_0x4e421d){return function(_0xe75e80){try{jsonpatch[_0x0f7a('0x2f')](_0xe75e80,_0x4e421d,!![]);}catch(_0x26eca7){return BPromise['reject'](_0x26eca7);}return _0xe75e80[_0x0f7a('0x30')]();};}function saveUpdates(_0x52c3e7,_0x586c7f){return function(_0x4f1355){if(_0x4f1355){return _0x4f1355[_0x0f7a('0x31')](_0x52c3e7)[_0x0f7a('0x1c')](function(_0xed9f70){return _0xed9f70;});}return null;};}function removeEntity(_0x3f7a3c,_0x125019){return function(_0x3e742b){if(_0x3e742b){return _0x3e742b[_0x0f7a('0x32')]()[_0x0f7a('0x1c')](function(){_0x3f7a3c[_0x0f7a('0x27')](0xcc)[_0x0f7a('0x33')]();});}};}function handleEntityNotFound(_0x4beda7,_0x56ab94){return function(_0x2768e7){if(!_0x2768e7){_0x4beda7[_0x0f7a('0x26')](0x194);}return _0x2768e7;};}function handleError(_0x299bcc,_0x559859){_0x559859=_0x559859||0x1f4;return function(_0x288e28){logger['error'](_0x288e28[_0x0f7a('0x34')]);if(_0x288e28[_0x0f7a('0x35')]){delete _0x288e28[_0x0f7a('0x35')];}_0x299bcc[_0x0f7a('0x27')](_0x559859)[_0x0f7a('0x36')](_0x288e28);};}exports[_0x0f7a('0x37')]=function(_0x1244bc,_0xe3ee3f){var _0x10166f={},_0x4c5283={},_0x339579={'count':0x0,'rows':[]};var _0x134e8f=_[_0x0f7a('0x38')](db[_0x0f7a('0x39')]['rawAttributes'],function(_0x359b01){return{'name':_0x359b01['fieldName'],'type':_0x359b01['type'][_0x0f7a('0x3a')]};});_0x4c5283[_0x0f7a('0x3b')]=_[_0x0f7a('0x38')](_0x134e8f,_0x0f7a('0x35'));_0x4c5283[_0x0f7a('0x3c')]=_[_0x0f7a('0x3d')](_0x1244bc[_0x0f7a('0x3c')]);_0x4c5283[_0x0f7a('0x3e')]=_[_0x0f7a('0x3f')](_0x4c5283['model'],_0x4c5283[_0x0f7a('0x3c')]);_0x10166f[_0x0f7a('0x40')]=_[_0x0f7a('0x3f')](_0x4c5283[_0x0f7a('0x3b')],qs[_0x0f7a('0x41')](_0x1244bc['query']['fields']));_0x10166f['attributes']=_0x10166f[_0x0f7a('0x40')][_0x0f7a('0x42')]?_0x10166f[_0x0f7a('0x40')]:_0x4c5283[_0x0f7a('0x3b')];if(!_0x1244bc[_0x0f7a('0x3c')][_0x0f7a('0x43')]('nolimit')){_0x10166f[_0x0f7a('0x2a')]=qs[_0x0f7a('0x2a')](_0x1244bc['query'][_0x0f7a('0x2a')]);_0x10166f['offset']=qs['offset'](_0x1244bc[_0x0f7a('0x3c')][_0x0f7a('0x28')]);}_0x10166f['order']=qs[_0x0f7a('0x44')](_0x1244bc[_0x0f7a('0x3c')][_0x0f7a('0x44')]);_0x10166f[_0x0f7a('0x45')]=qs['filters'](_[_0x0f7a('0x46')](_0x1244bc[_0x0f7a('0x3c')],_0x4c5283[_0x0f7a('0x3e')]),_0x134e8f);if(_0x1244bc[_0x0f7a('0x3c')]['filter']){_0x10166f[_0x0f7a('0x45')]=_[_0x0f7a('0x47')](_0x10166f['where'],{'$or':_[_0x0f7a('0x38')](_0x134e8f,function(_0x196e46){if(_0x196e46[_0x0f7a('0x48')]!==_0x0f7a('0x49')){var _0x1c78af={};_0x1c78af[_0x196e46[_0x0f7a('0x35')]]={'$like':'%'+_0x1244bc['query'][_0x0f7a('0x4a')]+'%'};return _0x1c78af;}})});}_0x10166f=_['merge']({},_0x10166f,_0x1244bc[_0x0f7a('0x4b')]);var _0x5b9ea6={'where':_0x10166f['where']};return db['Network']['count'](_0x5b9ea6)[_0x0f7a('0x1c')](function(_0x453b33){_0x339579[_0x0f7a('0x2b')]=_0x453b33;if(_0x1244bc['query'][_0x0f7a('0x4c')]){_0x10166f[_0x0f7a('0x4d')]=[{'all':!![]}];}return db['Network'][_0x0f7a('0x4e')](_0x10166f);})[_0x0f7a('0x1c')](function(_0x47311b){_0x339579[_0x0f7a('0x4f')]=_0x47311b;return _0x339579;})[_0x0f7a('0x1c')](respondWithFilteredResult(_0xe3ee3f,_0x10166f))[_0x0f7a('0x25')](handleError(_0xe3ee3f,null));};exports['show']=function(_0x4c9367,_0xd91c48){var _0x210c3a={'raw':!![],'where':{'id':_0x4c9367[_0x0f7a('0x50')]['id']}},_0x32fb22={};_0x32fb22[_0x0f7a('0x3b')]=_[_0x0f7a('0x3d')](db['Network'][_0x0f7a('0x51')]);_0x32fb22[_0x0f7a('0x3c')]=_[_0x0f7a('0x3d')](_0x4c9367[_0x0f7a('0x3c')]);_0x32fb22[_0x0f7a('0x3e')]=_[_0x0f7a('0x3f')](_0x32fb22[_0x0f7a('0x3b')],_0x32fb22[_0x0f7a('0x3c')]);_0x210c3a['attributes']=_[_0x0f7a('0x3f')](_0x32fb22[_0x0f7a('0x3b')],qs[_0x0f7a('0x41')](_0x4c9367[_0x0f7a('0x3c')][_0x0f7a('0x41')]));_0x210c3a[_0x0f7a('0x40')]=_0x210c3a[_0x0f7a('0x40')][_0x0f7a('0x42')]?_0x210c3a['attributes']:_0x32fb22[_0x0f7a('0x3b')];if(_0x4c9367['query'][_0x0f7a('0x4c')]){_0x210c3a[_0x0f7a('0x4d')]=[{'all':!![]}];}_0x210c3a=_['merge']({},_0x210c3a,_0x4c9367[_0x0f7a('0x4b')]);return db[_0x0f7a('0x39')][_0x0f7a('0x52')](_0x210c3a)['then'](handleEntityNotFound(_0xd91c48,null))[_0x0f7a('0x1c')](respondWithResult(_0xd91c48,null))[_0x0f7a('0x25')](handleError(_0xd91c48,null));};exports['create']=function(_0x395e1c,_0x14a353,_0x2c223c){var _0x4ed131;return db['sequelize'][_0x0f7a('0x53')](function(_0x470f8a){return db[_0x0f7a('0x39')][_0x0f7a('0x54')](_0x395e1c['body'],{'raw':!![]})[_0x0f7a('0x1c')](function(_0x1c516e){_0x4ed131=_0x1c516e;return db[_0x0f7a('0x39')][_0x0f7a('0x4e')]({'where':{'type':_0x395e1c[_0x0f7a('0x55')][_0x0f7a('0x48')]},'raw':!![]});})[_0x0f7a('0x1c')](function(_0x18e9df){if(_0x4ed131[_0x0f7a('0x48')][_0x0f7a('0x56')]()==_0x0f7a('0x57')){var _0x4b3d87=fs[_0x0f7a('0x58')](path[_0x0f7a('0x59')](config['root'],'server/files/templates/stun_multiple.ejs'),'utf8');var _0x29f20d=ejs[_0x0f7a('0x5a')](_0x4b3d87,{'networks':_0x18e9df||[]});fs[_0x0f7a('0x5b')](_0x0f7a('0x5c'),_0x29f20d);return respondWithRpcPromise(_0x0f7a('0x5d'),_0x0f7a('0x54'),{'module':_0x0f7a('0x5e')});}else if(_0x4ed131[_0x0f7a('0x48')][_0x0f7a('0x56')]()==_0x0f7a('0x5f')){var _0x5c1f88=fs[_0x0f7a('0x58')](path[_0x0f7a('0x59')](config[_0x0f7a('0x60')],_0x0f7a('0x61')),'utf8');var _0x16e51b=ejs[_0x0f7a('0x5a')](_0x5c1f88,{'networks':_0x18e9df||[]});fs[_0x0f7a('0x5b')](_0x0f7a('0x62'),_0x16e51b);return respondWithRpcPromise(_0x0f7a('0x5d'),_0x0f7a('0x54'),{'module':'res_stun_monitor.so'});}else{var _0x426d0a=fs[_0x0f7a('0x58')](path[_0x0f7a('0x59')](config[_0x0f7a('0x60')],_0x0f7a('0x63')),'utf8');var _0x442b87=ejs[_0x0f7a('0x5a')](_0x426d0a,{'networks':_0x18e9df||[]});fs[_0x0f7a('0x5b')](util[_0x0f7a('0x64')](_0x0f7a('0x65'),_0x395e1c[_0x0f7a('0x55')]['type'][_0x0f7a('0x66')]()),_0x442b87);return respondWithRpcPromise(_0x0f7a('0x5d'),_0x0f7a('0x54'),{'module':_0x0f7a('0x67')});}return null;})[_0x0f7a('0x1c')](function(){return _0x4ed131;});})[_0x0f7a('0x1c')](respondWithResult(_0x14a353,0xc9))['catch'](handleError(_0x14a353,null));};exports[_0x0f7a('0x31')]=function(_0x5c616e,_0x35d8e6,_0x2769e2){var _0x4df66d;return db['sequelize']['transaction'](function(_0x5fc629){return db[_0x0f7a('0x39')][_0x0f7a('0x52')]({'where':{'id':_0x5c616e[_0x0f7a('0x50')]['id']}})[_0x0f7a('0x1c')](handleEntityNotFound(_0x35d8e6,null))['then'](saveUpdates(_0x5c616e['body'],null))[_0x0f7a('0x1c')](function(_0x21a692){if(_0x21a692){_0x4df66d=_0x21a692;return db[_0x0f7a('0x39')][_0x0f7a('0x4e')]({'where':{'type':_0x4df66d[_0x0f7a('0x48')]},'raw':!![]});}return null;})[_0x0f7a('0x1c')](function(_0x3f05d5){if(_0x4df66d['type'][_0x0f7a('0x56')]()=='STUN'){var _0x26ad08=fs[_0x0f7a('0x58')](path[_0x0f7a('0x59')](config['root'],_0x0f7a('0x68')),_0x0f7a('0x69'));var _0x443d94=ejs[_0x0f7a('0x5a')](_0x26ad08,{'networks':_0x3f05d5||[]});fs[_0x0f7a('0x5b')]('/etc/asterisk/stun_xcally.conf',_0x443d94);return respondWithRpcPromise(_0x0f7a('0x5d'),_0x0f7a('0x31'),{'module':_0x0f7a('0x5e')});}else if(_0x4df66d['type'][_0x0f7a('0x56')]()==_0x0f7a('0x5f')){var _0x9e095c=fs[_0x0f7a('0x58')](path['join'](config[_0x0f7a('0x60')],_0x0f7a('0x61')),_0x0f7a('0x69'));var _0xab2932=ejs[_0x0f7a('0x5a')](_0x9e095c,{'networks':_0x3f05d5||[]});fs[_0x0f7a('0x5b')](_0x0f7a('0x62'),_0xab2932);return respondWithRpcPromise(_0x0f7a('0x5d'),_0x0f7a('0x31'),{'module':_0x0f7a('0x5e')});}else{var _0x280e7f=fs[_0x0f7a('0x58')](path[_0x0f7a('0x59')](config[_0x0f7a('0x60')],_0x0f7a('0x63')),_0x0f7a('0x69'));var _0x54c47f=ejs[_0x0f7a('0x5a')](_0x280e7f,{'networks':_0x3f05d5||[]});fs['writeFileSync'](util['format'](_0x0f7a('0x65'),_0x5c616e[_0x0f7a('0x55')][_0x0f7a('0x48')][_0x0f7a('0x66')]()),_0x54c47f);return respondWithRpcPromise(_0x0f7a('0x5d'),_0x0f7a('0x31'),{'module':_0x0f7a('0x67')});}return null;})[_0x0f7a('0x1c')](function(_0x469fed){if(_0x469fed){return _0x4df66d;}return null;});})[_0x0f7a('0x1c')](respondWithResult(_0x35d8e6,null))[_0x0f7a('0x25')](handleError(_0x35d8e6,null));};exports[_0x0f7a('0x32')]=function(_0x8552c5,_0x1db068,_0x22df7a){var _0x51d515;return db[_0x0f7a('0x39')]['find']({'where':{'id':_0x8552c5[_0x0f7a('0x50')]['id']}})['then'](function(_0x5e0aad){_0x51d515=_0x5e0aad;return _0x5e0aad;})[_0x0f7a('0x1c')](handleEntityNotFound(_0x1db068,null))[_0x0f7a('0x1c')](removeEntity(_0x1db068,null))[_0x0f7a('0x1c')](function(){if(_0x51d515){return db['Network'][_0x0f7a('0x4e')]({'where':{'type':_0x51d515[_0x0f7a('0x48')]},'raw':!![]});}})[_0x0f7a('0x1c')](function(_0x27140e){if(_0x51d515['type']['toUpperCase']()=='STUN'){var _0x476391=fs[_0x0f7a('0x58')](path[_0x0f7a('0x59')](config['root'],_0x0f7a('0x68')),_0x0f7a('0x69'));var _0x1a2d75=ejs[_0x0f7a('0x5a')](_0x476391,{'networks':_0x27140e||[]});fs['writeFileSync'](_0x0f7a('0x5c'),_0x1a2d75);return respondWithRpcPromise('Reload',_0x0f7a('0x32'),{'module':_0x0f7a('0x5e')});}else if(_0x51d515[_0x0f7a('0x48')][_0x0f7a('0x56')]()==_0x0f7a('0x5f')){var _0x4f0b21=fs['readFileSync'](path['join'](config[_0x0f7a('0x60')],_0x0f7a('0x61')),_0x0f7a('0x69'));var _0x3ac19a=ejs[_0x0f7a('0x5a')](_0x4f0b21,{'networks':_0x27140e||[]});fs[_0x0f7a('0x5b')](_0x0f7a('0x62'),_0x3ac19a);return respondWithRpcPromise('Reload',_0x0f7a('0x32'),{'module':_0x0f7a('0x5e')});}else{var _0x49af73=fs[_0x0f7a('0x58')](path[_0x0f7a('0x59')](config[_0x0f7a('0x60')],'server/files/templates/network.ejs'),'utf8');var _0x28806c=ejs[_0x0f7a('0x5a')](_0x49af73,{'networks':_0x27140e||[]});fs[_0x0f7a('0x5b')](util[_0x0f7a('0x64')]('/etc/asterisk/sip_xcally_%s.conf',_0x8552c5['body'][_0x0f7a('0x48')][_0x0f7a('0x66')]()),_0x28806c);return respondWithRpcPromise(_0x0f7a('0x5d'),_0x0f7a('0x32'),{'module':_0x0f7a('0x67')});}return null;})[_0x0f7a('0x25')](handleError(_0x1db068,null));};
\ No newline at end of file
index 286308b..689e585 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe739=['Network','lodash','../../config/logger','api','moment','rimraf','../../config/environment','./network.attributes','exports','define'];(function(_0x55fa10,_0x5f96a0){var _0x2a3726=function(_0x14f8ce){while(--_0x14f8ce){_0x55fa10['push'](_0x55fa10['shift']());}};_0x2a3726(++_0x5f96a0);}(_0xe739,0x105));var _0x9e73=function(_0x3d7158,_0xe6fa4f){_0x3d7158=_0x3d7158-0x0;var _0x4b6fcb=_0xe739[_0x3d7158];return _0x4b6fcb;};'use strict';var _=require(_0x9e73('0x0'));var util=require('util');var logger=require(_0x9e73('0x1'))(_0x9e73('0x2'));var moment=require(_0x9e73('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x9e73('0x4'));var config=require(_0x9e73('0x5'));var attributes=require(_0x9e73('0x6'));module[_0x9e73('0x7')]=function(_0x4cb2ed,_0x3db8fa){return _0x4cb2ed[_0x9e73('0x8')](_0x9e73('0x9'),attributes,{'tableName':'network','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1b73=['../../config/logger','api','moment','request-promise','rimraf','../../config/environment','exports','Network','network','util'];(function(_0x3422c9,_0x4d91e5){var _0x206cbb=function(_0x58840e){while(--_0x58840e){_0x3422c9['push'](_0x3422c9['shift']());}};_0x206cbb(++_0x4d91e5);}(_0x1b73,0x1d5));var _0x31b7=function(_0x18913f,_0x1dd74e){_0x18913f=_0x18913f-0x0;var _0x5c9f3f=_0x1b73[_0x18913f];return _0x5c9f3f;};'use strict';var _=require('lodash');var util=require(_0x31b7('0x0'));var logger=require(_0x31b7('0x1'))(_0x31b7('0x2'));var moment=require(_0x31b7('0x3'));var BPromise=require('bluebird');var rp=require(_0x31b7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x31b7('0x5'));var config=require(_0x31b7('0x6'));var attributes=require('./network.attributes');module[_0x31b7('0x7')]=function(_0x3d058f,_0x15c31e){return _0x3d058f['define'](_0x31b7('0x8'),attributes,{'tableName':_0x31b7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cf2b9f6..5663543 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(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x7a54,0x106));var _0x47a5=function(_0x24eee0,_0x4536ab){_0x24eee0=_0x24eee0-0x0;var _0x68cc1c=_0x7a54[_0x24eee0];return _0x68cc1c;};'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 _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0xda97b,_0x3ea1e1){var _0x6ffef9=function(_0x13f406){while(--_0x13f406){_0xda97b['push'](_0xda97b['shift']());}};_0x6ffef9(++_0x3ea1e1);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
index 5971cc9..5d98912 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc390=['getAgents','post','addDisposition','addAnswer','/:id/notify','notify','addApplications','/:id/send','send','update','delete','destroy','removeDispositions','/:id/canned_answers','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','isAuthenticated','index','get','describe','/:id','show','/:id/dispositions','getAnswers','/:id/applications','getApplications','/:id/users'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xc390,0x181));var _0x0c39=function(_0x2ade51,_0xba1535){_0x2ade51=_0x2ade51-0x0;var _0x4950f6=_0xc390[_0x2ade51];return _0x4950f6;};'use strict';var multer=require(_0x0c39('0x0'));var util=require(_0x0c39('0x1'));var path=require(_0x0c39('0x2'));var timeout=require(_0x0c39('0x3'));var express=require(_0x0c39('0x4'));var router=express[_0x0c39('0x5')]();var fs_extra=require(_0x0c39('0x6'));var auth=require(_0x0c39('0x7'));var interaction=require(_0x0c39('0x8'));var config=require(_0x0c39('0x9'));var controller=require(_0x0c39('0xa'));router['get']('/',auth[_0x0c39('0xb')](),controller[_0x0c39('0xc')]);router[_0x0c39('0xd')]('/describe',auth[_0x0c39('0xb')](),controller[_0x0c39('0xe')]);router[_0x0c39('0xd')](_0x0c39('0xf'),auth[_0x0c39('0xb')](),controller[_0x0c39('0x10')]);router[_0x0c39('0xd')](_0x0c39('0x11'),auth[_0x0c39('0xb')](),controller['getDispositions']);router['get']('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x0c39('0x12')]);router['get'](_0x0c39('0x13'),auth[_0x0c39('0xb')](),controller[_0x0c39('0x14')]);router['get']('/:id/interactions',auth['isAuthenticated'](),controller['getInteractions']);router[_0x0c39('0xd')](_0x0c39('0x15'),auth['isAuthenticated'](),controller[_0x0c39('0x16')]);router['post']('/',auth[_0x0c39('0xb')](),controller['create']);router[_0x0c39('0x17')](_0x0c39('0x11'),auth[_0x0c39('0xb')](),controller[_0x0c39('0x18')]);router[_0x0c39('0x17')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x0c39('0x19')]);router[_0x0c39('0x17')](_0x0c39('0x1a'),controller[_0x0c39('0x1b')]);router['post'](_0x0c39('0x13'),auth['isAuthenticated'](),controller[_0x0c39('0x1c')]);router['post'](_0x0c39('0x15'),auth[_0x0c39('0xb')](),controller['addAgents']);router[_0x0c39('0x17')](_0x0c39('0x1d'),auth[_0x0c39('0xb')](),controller[_0x0c39('0x1e')]);router['put'](_0x0c39('0xf'),auth[_0x0c39('0xb')](),controller[_0x0c39('0x1f')]);router[_0x0c39('0x20')](_0x0c39('0xf'),auth[_0x0c39('0xb')](),controller[_0x0c39('0x21')]);router[_0x0c39('0x20')](_0x0c39('0x11'),auth[_0x0c39('0xb')](),controller[_0x0c39('0x22')]);router[_0x0c39('0x20')](_0x0c39('0x23'),auth[_0x0c39('0xb')](),controller['removeAnswers']);router['delete']('/:id/users',auth[_0x0c39('0xb')](),controller[_0x0c39('0x24')]);module['exports']=router;
\ No newline at end of file
+var _0xc36d=['create','addDisposition','post','addAnswer','/:id/notify','notify','addAgents','send','/:id','update','delete','destroy','removeDispositions','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','/describe','describe','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/users'];(function(_0x52544e,_0x3b521a){var _0x336730=function(_0x46cbb3){while(--_0x46cbb3){_0x52544e['push'](_0x52544e['shift']());}};_0x336730(++_0x3b521a);}(_0xc36d,0xa9));var _0xdc36=function(_0x65a0db,_0x55c5a0){_0x65a0db=_0x65a0db-0x0;var _0x987620=_0xc36d[_0x65a0db];return _0x987620;};'use strict';var multer=require(_0xdc36('0x0'));var util=require(_0xdc36('0x1'));var path=require(_0xdc36('0x2'));var timeout=require(_0xdc36('0x3'));var express=require(_0xdc36('0x4'));var router=express[_0xdc36('0x5')]();var fs_extra=require(_0xdc36('0x6'));var auth=require(_0xdc36('0x7'));var interaction=require(_0xdc36('0x8'));var config=require(_0xdc36('0x9'));var controller=require(_0xdc36('0xa'));router[_0xdc36('0xb')]('/',auth[_0xdc36('0xc')](),controller[_0xdc36('0xd')]);router[_0xdc36('0xb')](_0xdc36('0xe'),auth[_0xdc36('0xc')](),controller[_0xdc36('0xf')]);router[_0xdc36('0xb')]('/:id',auth[_0xdc36('0xc')](),controller[_0xdc36('0x10')]);router['get'](_0xdc36('0x11'),auth[_0xdc36('0xc')](),controller[_0xdc36('0x12')]);router[_0xdc36('0xb')](_0xdc36('0x13'),auth[_0xdc36('0xc')](),controller[_0xdc36('0x14')]);router[_0xdc36('0xb')](_0xdc36('0x15'),auth[_0xdc36('0xc')](),controller[_0xdc36('0x16')]);router[_0xdc36('0xb')](_0xdc36('0x17'),auth[_0xdc36('0xc')](),controller[_0xdc36('0x18')]);router[_0xdc36('0xb')](_0xdc36('0x19'),auth[_0xdc36('0xc')](),controller['getAgents']);router['post']('/',auth[_0xdc36('0xc')](),controller[_0xdc36('0x1a')]);router['post'](_0xdc36('0x11'),auth[_0xdc36('0xc')](),controller[_0xdc36('0x1b')]);router[_0xdc36('0x1c')](_0xdc36('0x13'),auth[_0xdc36('0xc')](),controller[_0xdc36('0x1d')]);router[_0xdc36('0x1c')](_0xdc36('0x1e'),controller[_0xdc36('0x1f')]);router[_0xdc36('0x1c')](_0xdc36('0x15'),auth['isAuthenticated'](),controller['addApplications']);router['post'](_0xdc36('0x19'),auth['isAuthenticated'](),controller[_0xdc36('0x20')]);router['post']('/:id/send',auth[_0xdc36('0xc')](),controller[_0xdc36('0x21')]);router['put'](_0xdc36('0x22'),auth['isAuthenticated'](),controller[_0xdc36('0x23')]);router[_0xdc36('0x24')](_0xdc36('0x22'),auth[_0xdc36('0xc')](),controller[_0xdc36('0x25')]);router[_0xdc36('0x24')](_0xdc36('0x11'),auth[_0xdc36('0xc')](),controller[_0xdc36('0x26')]);router[_0xdc36('0x24')](_0xdc36('0x13'),auth[_0xdc36('0xc')](),controller['removeAnswers']);router[_0xdc36('0x24')](_0xdc36('0x19'),auth['isAuthenticated'](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 416c252..97da579 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe577=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','randomstring','exports','name','STRING','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'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0xe577,0x163));var _0x7e57=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xe577[_0x4b369d];return _0x571a98;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x7e57('0x0'));module[_0x7e57('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x7e57('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x7e57('0x3')]},'token':{'type':Sequelize[_0x7e57('0x3')],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0x7e57('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x7e57('0x4')],'defaultValue':function(){return _0x7e57('0x5');}},'notificationSound':{'type':Sequelize[_0x7e57('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x7e57('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x7e57('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x7e57('0x3')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x7e57('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x7e57('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x7e57('0x7')],'allowNull':!![],'defaultValue':null,'comment':_0x7e57('0x8')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x7e57('0x9'),'set':function(_0x130793){if(!_0x130793)this[_0x7e57('0xa')](_0x7e57('0xb'),null);this[_0x7e57('0xa')](_0x7e57('0xc'),_0x130793);}}};
\ No newline at end of file
+var _0x7437=['STRING','name','generate','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','setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','exports'];(function(_0x24123a,_0x415802){var _0x243a2b=function(_0x4778e9){while(--_0x4778e9){_0x24123a['push'](_0x24123a['shift']());}};_0x243a2b(++_0x415802);}(_0x7437,0x14f));var _0x7743=function(_0x43eb54,_0x35e944){_0x43eb54=_0x43eb54-0x0;var _0x3892ac=_0x7437[_0x43eb54];return _0x3892ac;};'use strict';var Sequelize=require(_0x7743('0x0'));var rs=require(_0x7743('0x1'));module[_0x7743('0x2')]={'name':{'type':Sequelize[_0x7743('0x3')],'unique':_0x7743('0x4'),'allowNull':![]},'description':{'type':Sequelize[_0x7743('0x3')]},'token':{'type':Sequelize[_0x7743('0x3')],'defaultValue':function(){return rs[_0x7743('0x5')]();}},'replyUri':{'type':Sequelize[_0x7743('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x7743('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x7743('0x6')],'defaultValue':function(){return _0x7743('0x7');}},'notificationSound':{'type':Sequelize[_0x7743('0x8')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x7743('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x7743('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x7743('0x9')],'allowNull':!![],'defaultValue':null,'comment':_0x7743('0xa')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x224056){if(!_0x224056)this[_0x7743('0xb')](_0x7743('0xc'),null);this[_0x7743('0xb')]('mandatoryDisposition',_0x224056);}}};
\ No newline at end of file
index ab395d3..15553af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc30d=['merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','params','length','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','rawAttributes','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','notify','openchannel','CmContact','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','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','CmList','List','Contacts','OpenchannelApplication','Applications','applications','list','orderBy','priority','asc','account','threadId','externalUrl','OpenchannelInteraction','ContactId','spread','contact','firstName','messageId','interaction','created','autoclose','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','forcedOwnership','Start','startRouting','EventManager','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','finally','getApplications','getInteractions','findOne','Contact','User','fullname','Tag','color','tag','addAgents','omit','emit','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','DESC','out','Messages','dataValues','push','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','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/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelAccount.socket','register','client','http','then','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelAccount,\x20%s,\x20%s','message','info','catch','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','update','destroy','get','OpenchannelAccounts','end','stack','name','send','index','Pause','mandatoryDispositionPause','OpenchannelAccount','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0xbad322,_0x3e6b0b){var _0x2101cb=function(_0x1c3c3b){while(--_0x1c3c3b){_0xbad322['push'](_0xbad322['shift']());}};_0x2101cb(++_0x3e6b0b);}(_0xc30d,0x6e));var _0xdc30=function(_0x1bd826,_0x19bc32){_0x1bd826=_0x1bd826-0x0;var _0x5b5215=_0xc30d[_0x1bd826];return _0x5b5215;};'use strict';var emlformat=require(_0xdc30('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdc30('0x1'));var jsonpatch=require(_0xdc30('0x2'));var rp=require(_0xdc30('0x3'));var moment=require(_0xdc30('0x4'));var BPromise=require(_0xdc30('0x5'));var Mustache=require('mustache');var util=require(_0xdc30('0x6'));var path=require('path');var sox=require(_0xdc30('0x7'));var csv=require(_0xdc30('0x8'));var ejs=require(_0xdc30('0x9'));var fs=require('fs');var fs_extra=require(_0xdc30('0xa'));var _=require(_0xdc30('0xb'));var squel=require(_0xdc30('0xc'));var crypto=require('crypto');var jsforce=require(_0xdc30('0xd'));var deskjs=require(_0xdc30('0xe'));var toCsv=require(_0xdc30('0x8'));var querystring=require(_0xdc30('0xf'));var Papa=require(_0xdc30('0x10'));var Redis=require(_0xdc30('0x11'));var authService=require(_0xdc30('0x12'));var qs=require(_0xdc30('0x13'));var as=require(_0xdc30('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xdc30('0x15'));var config=require(_0xdc30('0x16'));var licenseUtil=require(_0xdc30('0x17'));var db=require(_0xdc30('0x18'))['db'];config[_0xdc30('0x19')]=_[_0xdc30('0x1a')](config[_0xdc30('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xdc30('0x1b'))(new Redis(config[_0xdc30('0x19')]));require(_0xdc30('0x1c'))[_0xdc30('0x1d')](socket);var jayson=require('jayson/promise');var client=jayson[_0xdc30('0x1e')][_0xdc30('0x1f')]({'port':0x232c});var client9002=jayson[_0xdc30('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x21e3f1,_0x160404,_0x3a3cb5,_0x36cc43){return new BPromise(function(_0x358251,_0xc88c27){var _0x37d9bb=_0x36cc43||client;return _0x37d9bb['request'](_0x21e3f1,_0x3a3cb5)[_0xdc30('0x20')](function(_0x158bfc){logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x160404,_0xdc30('0x21'));logger[_0xdc30('0x22')](_0xdc30('0x23'),_0x160404,_0xdc30('0x21'),JSON[_0xdc30('0x24')](_0x158bfc));if(_0x158bfc[_0xdc30('0x25')]){if(_0x158bfc[_0xdc30('0x25')][_0xdc30('0x26')]===0x1f4){logger[_0xdc30('0x25')](_0xdc30('0x27'),_0x160404,_0x158bfc[_0xdc30('0x25')][_0xdc30('0x28')]);return _0xc88c27(_0x158bfc[_0xdc30('0x25')][_0xdc30('0x28')]);}logger[_0xdc30('0x25')](_0xdc30('0x27'),_0x160404,_0x158bfc['error'][_0xdc30('0x28')]);return _0x358251(_0x158bfc['error']['message']);}else{logger[_0xdc30('0x29')](_0xdc30('0x27'),_0x160404,_0xdc30('0x21'));_0x358251(_0x158bfc['result'][_0xdc30('0x28')]);}})[_0xdc30('0x2a')](function(_0x4fdafc){logger[_0xdc30('0x25')]('OpenchannelAccount,\x20%s,\x20%s',_0x160404,_0x4fdafc);_0xc88c27(_0x4fdafc);});});}function respondWithStatusCode(_0x4726d1,_0x4c0725){_0x4c0725=_0x4c0725||0xcc;return function(_0x2c1af3){if(_0x2c1af3){return _0x4726d1[_0xdc30('0x2b')](_0x4c0725);}return _0x4726d1[_0xdc30('0x2c')](_0x4c0725)['end']();};}function respondWithResult(_0x590f58,_0x7c310e){_0x7c310e=_0x7c310e||0xc8;return function(_0x4c6c6d){if(_0x4c6c6d){return _0x590f58[_0xdc30('0x2c')](_0x7c310e)[_0xdc30('0x2d')](_0x4c6c6d);}};}function respondWithFilteredResult(_0x457574,_0x373ad7){return function(_0x1f4553){if(_0x1f4553){var _0x2c309e=typeof _0x373ad7['offset']===_0xdc30('0x2e')&&typeof _0x373ad7[_0xdc30('0x2f')]===_0xdc30('0x2e');var _0x2548d1=_0x1f4553[_0xdc30('0x30')];var _0x5d8da3=_0x2c309e?0x0:_0x373ad7[_0xdc30('0x31')];var _0xf15db3=_0x2c309e?_0x1f4553[_0xdc30('0x30')]:_0x373ad7[_0xdc30('0x31')]+_0x373ad7['limit'];var _0x3e9e62;if(_0xf15db3>=_0x2548d1){_0xf15db3=_0x2548d1;_0x3e9e62=0xc8;}else{_0x3e9e62=0xce;}_0x457574[_0xdc30('0x2c')](_0x3e9e62);return _0x457574[_0xdc30('0x32')](_0xdc30('0x33'),_0x5d8da3+'-'+_0xf15db3+'/'+_0x2548d1)[_0xdc30('0x2d')](_0x1f4553);}return null;};}function patchUpdates(_0x24233b){return function(_0x253adc){try{jsonpatch[_0xdc30('0x34')](_0x253adc,_0x24233b,!![]);}catch(_0x211786){return BPromise[_0xdc30('0x35')](_0x211786);}return _0x253adc['save']();};}function saveUpdates(_0x327a7f,_0xa70641){return function(_0x13937c){if(_0x13937c){return _0x13937c[_0xdc30('0x36')](_0x327a7f)[_0xdc30('0x20')](function(_0x4fcf33){return _0x4fcf33;});}return null;};}function removeEntity(_0x157bee,_0x103fe3){return function(_0x84435b){if(_0x84435b){return _0x84435b[_0xdc30('0x37')]()[_0xdc30('0x20')](function(){var _0x38c4bb=_0x84435b[_0xdc30('0x38')]({'plain':!![]});var _0x2b5135=_0xdc30('0x39');return db['UserProfileResource'][_0xdc30('0x37')]({'where':{'type':_0x2b5135,'resourceId':_0x38c4bb['id']}})[_0xdc30('0x20')](function(){return _0x84435b;});})[_0xdc30('0x20')](function(){_0x157bee[_0xdc30('0x2c')](0xcc)[_0xdc30('0x3a')]();});}};}function handleEntityNotFound(_0x1fd5cd,_0x3d11e5){return function(_0x18acaf){if(!_0x18acaf){_0x1fd5cd[_0xdc30('0x2b')](0x194);}return _0x18acaf;};}function handleError(_0x438ad2,_0x19a1f3){_0x19a1f3=_0x19a1f3||0x1f4;return function(_0x7a8cb3){logger[_0xdc30('0x25')](_0x7a8cb3[_0xdc30('0x3b')]);if(_0x7a8cb3[_0xdc30('0x3c')]){delete _0x7a8cb3[_0xdc30('0x3c')];}_0x438ad2[_0xdc30('0x2c')](_0x19a1f3)[_0xdc30('0x3d')](_0x7a8cb3);};}exports[_0xdc30('0x3e')]=function(_0x185bfe,_0x5b729d){var _0x20ae82={'include':[{'model':db[_0xdc30('0x3f')],'as':_0xdc30('0x40')}]},_0x3f1955={},_0x3ec3ac={'count':0x0,'rows':[]};var _0x1d42af=_['map'](db[_0xdc30('0x41')]['rawAttributes'],function(_0x360bc2){return{'name':_0x360bc2[_0xdc30('0x42')],'type':_0x360bc2['type'][_0xdc30('0x43')]};});_0x3f1955[_0xdc30('0x44')]=_[_0xdc30('0x45')](_0x1d42af,_0xdc30('0x3c'));_0x3f1955[_0xdc30('0x46')]=_[_0xdc30('0x47')](_0x185bfe[_0xdc30('0x46')]);_0x3f1955[_0xdc30('0x48')]=_[_0xdc30('0x49')](_0x3f1955[_0xdc30('0x44')],_0x3f1955[_0xdc30('0x46')]);_0x20ae82['attributes']=_[_0xdc30('0x49')](_0x3f1955['model'],qs[_0xdc30('0x4a')](_0x185bfe['query'][_0xdc30('0x4a')]));_0x20ae82[_0xdc30('0x4b')]=_0x20ae82[_0xdc30('0x4b')]['length']?_0x20ae82[_0xdc30('0x4b')]:_0x3f1955[_0xdc30('0x44')];if(!_0x185bfe['query'][_0xdc30('0x4c')](_0xdc30('0x4d'))){_0x20ae82[_0xdc30('0x2f')]=qs[_0xdc30('0x2f')](_0x185bfe['query'][_0xdc30('0x2f')]);_0x20ae82[_0xdc30('0x31')]=qs[_0xdc30('0x31')](_0x185bfe[_0xdc30('0x46')][_0xdc30('0x31')]);}_0x20ae82[_0xdc30('0x4e')]=qs[_0xdc30('0x4f')](_0x185bfe[_0xdc30('0x46')][_0xdc30('0x4f')]);_0x20ae82[_0xdc30('0x50')]=qs[_0xdc30('0x48')](_[_0xdc30('0x51')](_0x185bfe[_0xdc30('0x46')],_0x3f1955[_0xdc30('0x48')]),_0x1d42af);if(_0x185bfe['query']['filter']){_0x20ae82[_0xdc30('0x50')]=_[_0xdc30('0x52')](_0x20ae82[_0xdc30('0x50')],{'$or':_[_0xdc30('0x45')](_0x1d42af,function(_0x1ed39e){if(_0x1ed39e[_0xdc30('0x53')]!==_0xdc30('0x54')){var _0x3741af={};_0x3741af[_0x1ed39e[_0xdc30('0x3c')]]={'$like':'%'+_0x185bfe['query'][_0xdc30('0x55')]+'%'};return _0x3741af;}})});}_0x20ae82=_['merge']({},_0x20ae82,_0x185bfe[_0xdc30('0x56')]);var _0x5036b2={'where':_0x20ae82['where']};return db['OpenchannelAccount'][_0xdc30('0x30')](_0x5036b2)[_0xdc30('0x20')](function(_0x17743f){_0x3ec3ac[_0xdc30('0x30')]=_0x17743f;if(_0x185bfe[_0xdc30('0x46')][_0xdc30('0x57')]){_0x20ae82[_0xdc30('0x58')]=[{'all':!![]}];}return db[_0xdc30('0x41')][_0xdc30('0x59')](_0x20ae82);})[_0xdc30('0x20')](function(_0x2282ea){_0x3ec3ac[_0xdc30('0x5a')]=_0x2282ea;return _0x3ec3ac;})[_0xdc30('0x20')](respondWithFilteredResult(_0x5b729d,_0x20ae82))['catch'](handleError(_0x5b729d,null));};exports['show']=function(_0x126359,_0x14e9f7){var _0xdf0baf={'raw':![],'where':{'id':_0x126359[_0xdc30('0x5b')]['id']},'include':[{'model':db[_0xdc30('0x3f')],'as':_0xdc30('0x40')}]},_0x34189e={};_0x34189e[_0xdc30('0x44')]=_[_0xdc30('0x47')](db[_0xdc30('0x41')]['rawAttributes']);_0x34189e[_0xdc30('0x46')]=_[_0xdc30('0x47')](_0x126359['query']);_0x34189e[_0xdc30('0x48')]=_[_0xdc30('0x49')](_0x34189e[_0xdc30('0x44')],_0x34189e[_0xdc30('0x46')]);_0xdf0baf['attributes']=_[_0xdc30('0x49')](_0x34189e[_0xdc30('0x44')],qs['fields'](_0x126359['query'][_0xdc30('0x4a')]));_0xdf0baf[_0xdc30('0x4b')]=_0xdf0baf['attributes'][_0xdc30('0x5c')]?_0xdf0baf[_0xdc30('0x4b')]:_0x34189e[_0xdc30('0x44')];if(_0x126359[_0xdc30('0x46')][_0xdc30('0x57')]){_0xdf0baf[_0xdc30('0x58')]=[{'all':!![]}];}_0xdf0baf=_[_0xdc30('0x52')]({},_0xdf0baf,_0x126359['options']);return db[_0xdc30('0x41')][_0xdc30('0x5d')](_0xdf0baf)[_0xdc30('0x20')](handleEntityNotFound(_0x14e9f7,null))[_0xdc30('0x20')](respondWithResult(_0x14e9f7,null))[_0xdc30('0x2a')](handleError(_0x14e9f7,null));};exports[_0xdc30('0x5e')]=function(_0x11f245,_0x2190bb){return db['OpenchannelAccount'][_0xdc30('0x5e')](_0x11f245[_0xdc30('0x5f')],{})[_0xdc30('0x20')](function(_0x390b93){var _0x2bde6a=_0x11f245['user'][_0xdc30('0x38')]({'plain':!![]});if(!_0x2bde6a)throw new Error(_0xdc30('0x60'));if(_0x2bde6a[_0xdc30('0x61')]===_0xdc30('0x62')){var _0x46f724=_0x390b93['get']({'plain':!![]});var _0x46b6cb=_0xdc30('0x39');return db[_0xdc30('0x63')][_0xdc30('0x5d')]({'where':{'name':_0x46b6cb,'userProfileId':_0x2bde6a['userProfileId']},'raw':!![]})[_0xdc30('0x20')](function(_0x4f6e4d){if(_0x4f6e4d&&_0x4f6e4d[_0xdc30('0x64')]===0x0){return db['UserProfileResource'][_0xdc30('0x5e')]({'name':_0x46f724['name'],'resourceId':_0x46f724['id'],'type':_0x4f6e4d['name'],'sectionId':_0x4f6e4d['id']},{})[_0xdc30('0x20')](function(){return _0x390b93;});}else{return _0x390b93;}})[_0xdc30('0x2a')](function(_0x48fa4d){logger[_0xdc30('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x48fa4d);throw _0x48fa4d;});}return _0x390b93;})['then'](respondWithResult(_0x2190bb,0xc9))['catch'](handleError(_0x2190bb,null));};exports[_0xdc30('0x36')]=function(_0x4036f7,_0x1e8185){if(_0x4036f7['body']['id']){delete _0x4036f7['body']['id'];}return db['OpenchannelAccount']['find']({'where':{'id':_0x4036f7[_0xdc30('0x5b')]['id']},'include':[{'model':db[_0xdc30('0x3f')],'as':_0xdc30('0x40')}]})[_0xdc30('0x20')](handleEntityNotFound(_0x1e8185,null))[_0xdc30('0x20')](saveUpdates(_0x4036f7[_0xdc30('0x5f')],null))[_0xdc30('0x20')](respondWithResult(_0x1e8185,null))['catch'](handleError(_0x1e8185,null));};exports[_0xdc30('0x37')]=function(_0x2aeda8,_0x287786){return db[_0xdc30('0x41')][_0xdc30('0x5d')]({'where':{'id':_0x2aeda8['params']['id']}})[_0xdc30('0x20')](handleEntityNotFound(_0x287786,null))[_0xdc30('0x20')](removeEntity(_0x287786,null))[_0xdc30('0x2a')](handleError(_0x287786,null));};exports[_0xdc30('0x65')]=function(_0x3f1176,_0x450908){return db['OpenchannelAccount'][_0xdc30('0x65')]()['then'](respondWithResult(_0x450908,null))[_0xdc30('0x2a')](handleError(_0x450908,null));};exports[_0xdc30('0x66')]=function(_0x23fb25,_0x6a9aba,_0x4ff8c5){if(_0x23fb25[_0xdc30('0x5f')]['id']){delete _0x23fb25['body']['id'];}return db[_0xdc30('0x41')][_0xdc30('0x5d')]({'where':{'id':_0x23fb25[_0xdc30('0x5b')]['id']}})[_0xdc30('0x20')](handleEntityNotFound(_0x6a9aba,null))[_0xdc30('0x20')](function(_0x46ba67){if(_0x46ba67){_0x23fb25[_0xdc30('0x5f')][_0xdc30('0x67')]=_0x46ba67['id'];return db[_0xdc30('0x68')][_0xdc30('0x5e')](_0x23fb25['body']);}})[_0xdc30('0x20')](respondWithResult(_0x6a9aba,null))[_0xdc30('0x2a')](handleError(_0x6a9aba,null));};exports[_0xdc30('0x69')]=function(_0x4b3ad3,_0x11a12b,_0x2e6e23){var _0x2793b2={'raw':![],'where':{}};var _0x37c939={};var _0x19567a={'count':0x0,'rows':[]};return db[_0xdc30('0x41')]['findOne']({'where':{'id':_0x4b3ad3[_0xdc30('0x5b')]['id']}})[_0xdc30('0x20')](handleEntityNotFound(_0x11a12b,null))[_0xdc30('0x20')](function(_0x3cdf6a){if(_0x3cdf6a){_0x37c939[_0xdc30('0x44')]=_[_0xdc30('0x47')](db['Disposition'][_0xdc30('0x6a')]);_0x37c939[_0xdc30('0x46')]=_[_0xdc30('0x47')](_0x4b3ad3[_0xdc30('0x46')]);_0x37c939['filters']=_[_0xdc30('0x49')](_0x37c939['model'],_0x37c939[_0xdc30('0x46')]);_0x2793b2[_0xdc30('0x4b')]=_['intersection'](_0x37c939[_0xdc30('0x44')],qs[_0xdc30('0x4a')](_0x4b3ad3[_0xdc30('0x46')]['fields']));_0x2793b2[_0xdc30('0x4b')]=_0x2793b2[_0xdc30('0x4b')][_0xdc30('0x5c')]?_0x2793b2['attributes']:_0x37c939[_0xdc30('0x44')];if(!_0x4b3ad3[_0xdc30('0x46')]['hasOwnProperty'](_0xdc30('0x4d'))){_0x2793b2['limit']=qs['limit'](_0x4b3ad3['query'][_0xdc30('0x2f')]);_0x2793b2[_0xdc30('0x31')]=qs[_0xdc30('0x31')](_0x4b3ad3[_0xdc30('0x46')][_0xdc30('0x31')]);}_0x2793b2[_0xdc30('0x4e')]=qs[_0xdc30('0x4f')](_0x4b3ad3[_0xdc30('0x46')][_0xdc30('0x4f')]);_0x2793b2[_0xdc30('0x50')]=qs[_0xdc30('0x48')](_['pick'](_0x4b3ad3[_0xdc30('0x46')],_0x37c939[_0xdc30('0x48')]));_0x2793b2[_0xdc30('0x50')][_0xdc30('0x67')]=_0x3cdf6a['id'];if(_0x4b3ad3[_0xdc30('0x46')][_0xdc30('0x55')]){_0x2793b2[_0xdc30('0x50')]=_[_0xdc30('0x52')](_0x2793b2[_0xdc30('0x50')],{'$or':_['map'](_0x2793b2['attributes'],function(_0x18d1ff){var _0x56cc82={};_0x56cc82[_0x18d1ff]={'$like':'%'+_0x4b3ad3[_0xdc30('0x46')][_0xdc30('0x55')]+'%'};return _0x56cc82;})});}_0x2793b2=_[_0xdc30('0x52')]({},_0x2793b2,_0x4b3ad3[_0xdc30('0x56')]);return db[_0xdc30('0x68')][_0xdc30('0x30')]({'where':_0x2793b2[_0xdc30('0x50')]})[_0xdc30('0x20')](function(_0x4a7020){_0x19567a['count']=_0x4a7020;if(_0x4b3ad3[_0xdc30('0x46')][_0xdc30('0x57')]){_0x2793b2[_0xdc30('0x58')]=[{'all':!![]}];}return db[_0xdc30('0x68')][_0xdc30('0x59')](_0x2793b2);})[_0xdc30('0x20')](function(_0x396be1){_0x19567a[_0xdc30('0x5a')]=_0x396be1;return _0x19567a;});}})[_0xdc30('0x20')](respondWithFilteredResult(_0x11a12b,_0x2793b2))['catch'](handleError(_0x11a12b,null));};exports['removeDispositions']=function(_0x28a3d3,_0x135ce3,_0x31731f){return db[_0xdc30('0x41')][_0xdc30('0x5d')]({'where':{'id':_0x28a3d3[_0xdc30('0x5b')]['id']}})[_0xdc30('0x20')](handleEntityNotFound(_0x135ce3,null))['then'](function(_0x55a173){if(_0x55a173){return _0x55a173[_0xdc30('0x6b')](_0x28a3d3[_0xdc30('0x46')][_0xdc30('0x6c')]);}})[_0xdc30('0x20')](respondWithStatusCode(_0x135ce3,null))[_0xdc30('0x2a')](handleError(_0x135ce3,null));};exports[_0xdc30('0x6d')]=function(_0x51be45,_0x2b36c5,_0x3f1636){if(_0x51be45[_0xdc30('0x5f')]['id']){delete _0x51be45[_0xdc30('0x5f')]['id'];}return db[_0xdc30('0x41')]['find']({'where':{'id':_0x51be45[_0xdc30('0x5b')]['id']}})[_0xdc30('0x20')](handleEntityNotFound(_0x2b36c5,null))[_0xdc30('0x20')](function(_0x139bcb){if(_0x139bcb){_0x51be45[_0xdc30('0x5f')][_0xdc30('0x67')]=_0x139bcb['id'];return db[_0xdc30('0x6e')][_0xdc30('0x5e')](_0x51be45[_0xdc30('0x5f')]);}})['then'](respondWithResult(_0x2b36c5,null))['catch'](handleError(_0x2b36c5,null));};exports['getAnswers']=function(_0x1f8f12,_0x49d295,_0x3bf703){var _0x432254={'raw':![],'where':{}};var _0x32841a={};var _0x455286={'count':0x0,'rows':[]};return db[_0xdc30('0x41')]['findOne']({'where':{'id':_0x1f8f12[_0xdc30('0x5b')]['id']}})[_0xdc30('0x20')](handleEntityNotFound(_0x49d295,null))['then'](function(_0x5c47ec){if(_0x5c47ec){_0x32841a[_0xdc30('0x44')]=_[_0xdc30('0x47')](db[_0xdc30('0x6e')]['rawAttributes']);_0x32841a[_0xdc30('0x46')]=_[_0xdc30('0x47')](_0x1f8f12['query']);_0x32841a[_0xdc30('0x48')]=_['intersection'](_0x32841a[_0xdc30('0x44')],_0x32841a['query']);_0x432254[_0xdc30('0x4b')]=_[_0xdc30('0x49')](_0x32841a[_0xdc30('0x44')],qs[_0xdc30('0x4a')](_0x1f8f12[_0xdc30('0x46')][_0xdc30('0x4a')]));_0x432254[_0xdc30('0x4b')]=_0x432254['attributes'][_0xdc30('0x5c')]?_0x432254[_0xdc30('0x4b')]:_0x32841a[_0xdc30('0x44')];if(!_0x1f8f12[_0xdc30('0x46')][_0xdc30('0x4c')](_0xdc30('0x4d'))){_0x432254[_0xdc30('0x2f')]=qs[_0xdc30('0x2f')](_0x1f8f12[_0xdc30('0x46')][_0xdc30('0x2f')]);_0x432254[_0xdc30('0x31')]=qs[_0xdc30('0x31')](_0x1f8f12[_0xdc30('0x46')][_0xdc30('0x31')]);}_0x432254['order']=qs[_0xdc30('0x4f')](_0x1f8f12[_0xdc30('0x46')][_0xdc30('0x4f')]);_0x432254[_0xdc30('0x50')]=qs[_0xdc30('0x48')](_['pick'](_0x1f8f12['query'],_0x32841a['filters']));_0x432254[_0xdc30('0x50')][_0xdc30('0x67')]=_0x5c47ec['id'];if(_0x1f8f12[_0xdc30('0x46')][_0xdc30('0x55')]){_0x432254['where']=_[_0xdc30('0x52')](_0x432254[_0xdc30('0x50')],{'$or':_[_0xdc30('0x45')](_0x432254[_0xdc30('0x4b')],function(_0x53ea50){var _0x57a0a0={};_0x57a0a0[_0x53ea50]={'$like':'%'+_0x1f8f12[_0xdc30('0x46')][_0xdc30('0x55')]+'%'};return _0x57a0a0;})});}_0x432254=_[_0xdc30('0x52')]({},_0x432254,_0x1f8f12['options']);return db[_0xdc30('0x6e')][_0xdc30('0x30')]({'where':_0x432254[_0xdc30('0x50')]})[_0xdc30('0x20')](function(_0x2a7716){_0x455286[_0xdc30('0x30')]=_0x2a7716;if(_0x1f8f12[_0xdc30('0x46')]['includeAll']){_0x432254['include']=[{'all':!![]}];}return db[_0xdc30('0x6e')][_0xdc30('0x59')](_0x432254);})[_0xdc30('0x20')](function(_0x527e49){_0x455286[_0xdc30('0x5a')]=_0x527e49;return _0x455286;});}})[_0xdc30('0x20')](respondWithFilteredResult(_0x49d295,_0x432254))[_0xdc30('0x2a')](handleError(_0x49d295,null));};exports[_0xdc30('0x6f')]=function(_0xc6b221,_0x31c4c8,_0x2024da){return db[_0xdc30('0x41')][_0xdc30('0x5d')]({'where':{'id':_0xc6b221[_0xdc30('0x5b')]['id']}})[_0xdc30('0x20')](handleEntityNotFound(_0x31c4c8,null))[_0xdc30('0x20')](function(_0x5f29a7){if(_0x5f29a7){return _0x5f29a7[_0xdc30('0x6f')](_0xc6b221['query'][_0xdc30('0x6c')]);}})['then'](respondWithStatusCode(_0x31c4c8,null))[_0xdc30('0x2a')](handleError(_0x31c4c8,null));};exports[_0xdc30('0x70')]=function(_0x3907f3,_0x8bbce,_0x4992fc){var _0x4cce7e={'body':_0x3907f3[_0xdc30('0x5f')],'channel':_0xdc30('0x71')};var _0x527596=[];var _0x9c11c1=[];var _0x4dc6fa={};var _0x1c5f6c=![];return db[_0xdc30('0x72')][_0xdc30('0x65')]()[_0xdc30('0x20')](function(_0x40cbf1){if(!_0x40cbf1){throw new db[(_0xdc30('0x73'))]['ValidationError'](_0xdc30('0x74'));}_0x527596=_[_0xdc30('0x75')](_[_0xdc30('0x47')](_0x40cbf1),[_0xdc30('0x76'),'updatedAt']);_0x9c11c1=_[_0xdc30('0x75')](_[_0xdc30('0x47')](_0x40cbf1),['createdAt',_0xdc30('0x77'),_0xdc30('0x78'),_0xdc30('0x79')]);if(_0x3907f3[_0xdc30('0x5f')]['id']){delete _0x3907f3['body']['id'];}if(_[_0xdc30('0x7a')](_0x3907f3['body'][_0xdc30('0x7b')])){throw new db[(_0xdc30('0x73'))][(_0xdc30('0x7c'))](_0xdc30('0x7d'));}if(_['isNil'](_0x3907f3['body']['body'])||_0x3907f3[_0xdc30('0x5f')][_0xdc30('0x5f')]===''){throw new db[(_0xdc30('0x73'))][(_0xdc30('0x7c'))](_0xdc30('0x7e'));}if(_['isNil'](_0x3907f3[_0xdc30('0x5f')][_0xdc30('0x7f')])){throw new db[(_0xdc30('0x73'))][(_0xdc30('0x7c'))](_0xdc30('0x80')+_0x9c11c1);}if(!_['includes'](_0x9c11c1,_0x3907f3[_0xdc30('0x5f')][_0xdc30('0x7f')])){throw new db[(_0xdc30('0x73'))]['ValidationError'](_0xdc30('0x81')+_0x9c11c1);}_0x4dc6fa[_0x3907f3[_0xdc30('0x5f')][_0xdc30('0x7f')]]=_0x3907f3['body'][_0xdc30('0x7b')];})[_0xdc30('0x20')](function(){return db[_0xdc30('0x41')][_0xdc30('0x5d')]({'where':{'id':_0x3907f3[_0xdc30('0x5b')]['id']},'include':[{'model':db[_0xdc30('0x82')],'as':_0xdc30('0x83'),'include':[{'model':db[_0xdc30('0x72')],'as':_0xdc30('0x84'),'where':_0x4dc6fa,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0xdc30('0x85')],'as':_0xdc30('0x86')}]});})[_0xdc30('0x20')](handleEntityNotFound(_0x8bbce,null))[_0xdc30('0x20')](function(_0x239b1f){if(_0x239b1f&&_0x239b1f[_0xdc30('0x83')]){_0x4cce7e['account']=_0x239b1f;_0x4cce7e[_0xdc30('0x87')]=_0x239b1f[_0xdc30('0x86')];_0x4cce7e[_0xdc30('0x88')]=_0x239b1f[_0xdc30('0x83')];_0x4cce7e['applications']=_[_0xdc30('0x89')](_0x4cce7e[_0xdc30('0x87')],[_0xdc30('0x8a')],[_0xdc30('0x8b')]);if(_0x4cce7e[_0xdc30('0x8c')][_0xdc30('0x86')]){delete _0x4cce7e[_0xdc30('0x8c')][_0xdc30('0x86')];}if(_0x4cce7e['account'][_0xdc30('0x83')]&&_0x4cce7e[_0xdc30('0x8c')][_0xdc30('0x83')][_0xdc30('0x84')]['length']){return _0x4cce7e[_0xdc30('0x8c')][_0xdc30('0x83')][_0xdc30('0x84')][0x0];}var _0x2b09ef=_[_0xdc30('0x1a')](_0x3907f3[_0xdc30('0x5f')],{'firstName':_0x3907f3[_0xdc30('0x5f')]['from'],'ListId':_0x239b1f[_0xdc30('0x79')]});_0x2b09ef[_0x3907f3[_0xdc30('0x5f')]['mapKey']]=_0x3907f3['body'][_0xdc30('0x7b')];return db[_0xdc30('0x72')][_0xdc30('0x5e')](_0x2b09ef,{'fields':_0x527596,'raw':!![]});}})[_0xdc30('0x20')](handleEntityNotFound(_0x8bbce,null))[_0xdc30('0x20')](function(_0x119b97){_0x4cce7e['contact']=_0x119b97;if(_0x119b97){var _0x2c6e56={'ContactId':_0x119b97['id'],'OpenchannelAccountId':_0x3907f3[_0xdc30('0x5b')]['id'],'from':(_0x119b97['firstName']||'')+'\x20'+(_0x119b97['lastName']||'')};var _0x513137={'OpenchannelAccountId':_0x3907f3['params']['id'],'closed':![]};if(_0x3907f3['body'][_0xdc30('0x8d')]){_0x513137['threadId']=_0x3907f3['body'][_0xdc30('0x8d')];return db['OpenchannelInteraction']['find']({'where':_0x513137})[_0xdc30('0x20')](function(_0x27d74d){if(_0x27d74d){return[_0x27d74d,![]];}_0x2c6e56[_0xdc30('0x8d')]=_0x3907f3[_0xdc30('0x5f')][_0xdc30('0x8d')];_0x2c6e56[_0xdc30('0x8e')]=_0x3907f3['body'][_0xdc30('0x8e')];return db[_0xdc30('0x8f')][_0xdc30('0x5e')](_0x2c6e56)[_0xdc30('0x20')](function(_0x28f256){return[_0x28f256,!![]];});});}else{_0x513137[_0xdc30('0x8d')]=null;}_0x513137[_0xdc30('0x90')]=_0x119b97['id'];return db[_0xdc30('0x8f')]['find']({'where':_0x513137})[_0xdc30('0x20')](function(_0x35912b){if(_0x35912b){return[_0x35912b,![]];}return db[_0xdc30('0x8f')][_0xdc30('0x5e')](_0x2c6e56)[_0xdc30('0x20')](function(_0x36f5b5){return[_0x36f5b5,!![]];});});}})[_0xdc30('0x91')](function(_0x294a0e,_0x4a7994){if(_0x294a0e){_0x1c5f6c=_0x4a7994;if(!_0x4a7994){var _0x3178d9={'from':(_0x4cce7e[_0xdc30('0x92')][_0xdc30('0x93')]||'')+'\x20'+(_0x4cce7e[_0xdc30('0x92')]['lastName']||'')};if(_0x3907f3[_0xdc30('0x5f')][_0xdc30('0x8d')]&&_0x3907f3['body']['messageId']&&_0x3907f3[_0xdc30('0x5f')]['threadId']!=_0x3907f3[_0xdc30('0x5f')][_0xdc30('0x94')]){_0x3178d9[_0xdc30('0x8d')]=_0x3907f3['body'][_0xdc30('0x94')];}return _0x294a0e[_0xdc30('0x36')](_0x3178d9);}else{return _0x294a0e;}}})[_0xdc30('0x20')](function(_0x1374ec){_0x4cce7e[_0xdc30('0x95')]=_0x1374ec[_0xdc30('0x38')]({'plain':!![]});_0x4cce7e['interaction']['created']=_0x1c5f6c;if(_0x4cce7e[_0xdc30('0x95')][_0xdc30('0x96')]){if(_0x4cce7e['account'][_0xdc30('0x97')]){_0x4cce7e['applications']['push']({'id':0x0,'priority':_0x4cce7e[_0xdc30('0x87')][_0xdc30('0x5c')]+0x1,'app':_0xdc30('0x98'),'appdata':_0xdc30('0x99'),'interval':_0xdc30('0x9a')});}}return db[_0xdc30('0x9b')][_0xdc30('0x5e')]({'body':_0x3907f3[_0xdc30('0x5f')][_0xdc30('0x5f')],'OpenchannelAccountId':_0x3907f3['params']['id'],'OpenchannelInteractionId':_0x1374ec['id'],'direction':'in','ContactId':_0x4cce7e[_0xdc30('0x92')]['id'],'AttachmentId':_0x3907f3[_0xdc30('0x5f')][_0xdc30('0x9c')]});})[_0xdc30('0x20')](function(_0x409115){_0x4cce7e[_0xdc30('0x28')]=_0x409115;if(_0x4cce7e[_0xdc30('0x95')]['UserId']){return db['User']['find']({'attributes':['id',_0xdc30('0x3c')],'where':{'id':_0x4cce7e[_0xdc30('0x95')][_0xdc30('0x9d')]}})[_0xdc30('0x20')](function(_0x39220f){if(_0x39220f){_0x4cce7e[_0xdc30('0x87')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x39220f['name']+','+(_0x4cce7e[_0xdc30('0x8c')]['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});_0x4cce7e[_0xdc30('0x9e')]=![];}return respondWithRpcPromise(_0xdc30('0x9f'),_0xdc30('0xa0'),_0x4cce7e);});}return respondWithRpcPromise('Start',_0xdc30('0xa0'),_0x4cce7e);})['then'](function(_0x2081e3){respondWithRpcPromise(_0xdc30('0xa1'),_0xdc30('0xa1'),{'event':'notify','message':_0x2081e3},client9002);return _0x2081e3;})[_0xdc30('0x20')](respondWithResult(_0x8bbce,null))[_0xdc30('0x2a')](handleError(_0x8bbce,null));};exports[_0xdc30('0xa2')]=function(_0x1cfc6d,_0x519635){var _0x3b55b8=_0x1cfc6d['params']['id'];var _0x429ada=_0x1cfc6d[_0xdc30('0x5f')];var _0x43c906=0xc8;var _0x531887=null;return db[_0xdc30('0xa3')][_0xdc30('0xa4')]({'isolationLevel':db[_0xdc30('0xa3')][_0xdc30('0xa5')][_0xdc30('0xa6')][_0xdc30('0xa7')]},function(_0x3aa498){return db['OpenchannelAccount']['findOne']({'where':{'id':_0x3b55b8},'transaction':_0x3aa498})[_0xdc30('0x20')](function(_0x25a865){if(_0x25a865){return db['OpenchannelApplication'][_0xdc30('0x37')]({'where':{'OpenchannelAccountId':_0x3b55b8},'transaction':_0x3aa498})['then'](function(){var _0x389504=_[_0xdc30('0x45')](_0x429ada,function(_0x5d44ca){_0x5d44ca[_0xdc30('0x67')]=_0x3b55b8;return _0x5d44ca;});return db[_0xdc30('0x85')][_0xdc30('0xa8')](_0x389504,{'transaction':_0x3aa498});});}else{_0x43c906=0x194;_0x531887=[];}});})[_0xdc30('0x20')](function(){if(_0x43c906!==0x194){return db[_0xdc30('0x85')][_0xdc30('0xa9')]({'where':{'OpenchannelAccountId':_0x3b55b8},'order':_0xdc30('0x8a')})['then'](function(_0x41ed8b){_0x531887=_0x41ed8b;});}})['catch'](function(_0xedccc9){_0x43c906=0x1f4;logger[_0xdc30('0x25')](_0xedccc9['stack']);if(_0xedccc9[_0xdc30('0x3c')]){delete _0xedccc9[_0xdc30('0x3c')];}_0x531887=_0xedccc9;})[_0xdc30('0xaa')](function(){if(_0x531887===null){_0x519635[_0xdc30('0x2b')](_0x43c906);}else{if(_0x43c906===0x1f4){_0x519635[_0xdc30('0x2c')](_0x43c906)['send'](_0x531887);}else{_0x519635[_0xdc30('0x2c')](_0x43c906)[_0xdc30('0x2d')](_0x531887);}}});};exports[_0xdc30('0xab')]=function(_0x50fdd0,_0x4173f8,_0x501e5c){var _0x436aa9={};var _0xa911d7={};var _0x47620f;var _0x3ac74b;return db['OpenchannelAccount']['findOne']({'where':{'id':_0x50fdd0[_0xdc30('0x5b')]['id']}})[_0xdc30('0x20')](handleEntityNotFound(_0x4173f8,null))[_0xdc30('0x20')](function(_0x1bb32a){if(_0x1bb32a){_0x47620f=_0x1bb32a;_0xa911d7[_0xdc30('0x44')]=_['keys'](db[_0xdc30('0x85')][_0xdc30('0x6a')]);_0xa911d7[_0xdc30('0x46')]=_['keys'](_0x50fdd0['query']);_0xa911d7[_0xdc30('0x48')]=_['intersection'](_0xa911d7[_0xdc30('0x44')],_0xa911d7[_0xdc30('0x46')]);_0x436aa9[_0xdc30('0x4b')]=_[_0xdc30('0x49')](_0xa911d7[_0xdc30('0x44')],qs[_0xdc30('0x4a')](_0x50fdd0[_0xdc30('0x46')][_0xdc30('0x4a')]));_0x436aa9[_0xdc30('0x4b')]=_0x436aa9['attributes'][_0xdc30('0x5c')]?_0x436aa9[_0xdc30('0x4b')]:_0xa911d7[_0xdc30('0x44')];_0x436aa9[_0xdc30('0x4e')]=qs['sort'](_0x50fdd0[_0xdc30('0x46')]['sort']);_0x436aa9[_0xdc30('0x50')]=qs[_0xdc30('0x48')](_[_0xdc30('0x51')](_0x50fdd0[_0xdc30('0x46')],_0xa911d7['filters']));if(_0x50fdd0[_0xdc30('0x46')][_0xdc30('0x55')]){_0x436aa9[_0xdc30('0x50')]=_[_0xdc30('0x52')](_0x436aa9[_0xdc30('0x50')],{'$or':_[_0xdc30('0x45')](_0x436aa9[_0xdc30('0x4b')],function(_0xd16652){var _0x11f3d3={};_0x11f3d3[_0xd16652]={'$like':'%'+_0x50fdd0[_0xdc30('0x46')]['filter']+'%'};return _0x11f3d3;})});}_0x436aa9=_['merge']({},_0x436aa9,_0x50fdd0[_0xdc30('0x56')]);return _0x47620f[_0xdc30('0xab')](_0x436aa9);}})['then'](function(_0x734817){if(_0x734817){_0x3ac74b=_0x734817[_0xdc30('0x5c')];if(!_0x50fdd0[_0xdc30('0x46')][_0xdc30('0x4c')]('nolimit')){_0x436aa9['limit']=qs['limit'](_0x50fdd0[_0xdc30('0x46')][_0xdc30('0x2f')]);_0x436aa9[_0xdc30('0x31')]=qs[_0xdc30('0x31')](_0x50fdd0['query'][_0xdc30('0x31')]);}return _0x47620f[_0xdc30('0xab')](_0x436aa9);}})[_0xdc30('0x20')](function(_0x288358){if(_0x288358){return _0x288358?{'count':_0x3ac74b,'rows':_0x288358}:null;}})[_0xdc30('0x20')](respondWithResult(_0x4173f8,null))[_0xdc30('0x2a')](handleError(_0x4173f8,null));};exports[_0xdc30('0xac')]=function(_0xb823aa,_0x35ac3a,_0x3f586e){var _0x4f1fd1={'raw':![],'where':{}};var _0x2e2dfe={};var _0x7fa101={'count':0x0,'rows':[]};return db[_0xdc30('0x41')][_0xdc30('0xad')]({'where':{'id':_0xb823aa[_0xdc30('0x5b')]['id']}})[_0xdc30('0x20')](handleEntityNotFound(_0x35ac3a,null))[_0xdc30('0x20')](function(_0x43e293){if(_0x43e293){_0x2e2dfe['model']=_['keys'](db['OpenchannelInteraction'][_0xdc30('0x6a')]);_0x2e2dfe[_0xdc30('0x46')]=_[_0xdc30('0x47')](_0xb823aa['query']);_0x2e2dfe[_0xdc30('0x48')]=_[_0xdc30('0x49')](_0x2e2dfe[_0xdc30('0x44')],_0x2e2dfe[_0xdc30('0x46')]);_0x4f1fd1[_0xdc30('0x4b')]=_['intersection'](_0x2e2dfe[_0xdc30('0x44')],qs[_0xdc30('0x4a')](_0xb823aa[_0xdc30('0x46')][_0xdc30('0x4a')]));_0x4f1fd1[_0xdc30('0x4b')]=_0x4f1fd1[_0xdc30('0x4b')][_0xdc30('0x5c')]?_0x4f1fd1[_0xdc30('0x4b')]:_0x2e2dfe[_0xdc30('0x44')];if(!_0xb823aa['query'][_0xdc30('0x4c')](_0xdc30('0x4d'))){_0x4f1fd1[_0xdc30('0x2f')]=qs['limit'](_0xb823aa[_0xdc30('0x46')][_0xdc30('0x2f')]);_0x4f1fd1[_0xdc30('0x31')]=qs[_0xdc30('0x31')](_0xb823aa[_0xdc30('0x46')]['offset']);}_0x4f1fd1[_0xdc30('0x4e')]=qs[_0xdc30('0x4f')](_0xb823aa[_0xdc30('0x46')]['sort']);_0x4f1fd1['where']=qs[_0xdc30('0x48')](_[_0xdc30('0x51')](_0xb823aa[_0xdc30('0x46')],_0x2e2dfe[_0xdc30('0x48')]));_0x4f1fd1[_0xdc30('0x50')]['OpenchannelAccountId']=_0x43e293['id'];if(_0xb823aa[_0xdc30('0x46')][_0xdc30('0x55')]){_0x4f1fd1[_0xdc30('0x50')]=_['merge'](_0x4f1fd1['where'],{'$or':_[_0xdc30('0x45')](_0x4f1fd1[_0xdc30('0x4b')],function(_0x24909b){var _0x3c8933={};_0x3c8933[_0x24909b]={'$like':'%'+_0xb823aa['query']['filter']+'%'};return _0x3c8933;})});}_0x4f1fd1=_[_0xdc30('0x52')]({},_0x4f1fd1,_0xb823aa[_0xdc30('0x56')]);return db[_0xdc30('0x8f')]['count']({'where':_0x4f1fd1[_0xdc30('0x50')]})[_0xdc30('0x20')](function(_0x1bff36){_0x7fa101['count']=_0x1bff36;if(_0xb823aa[_0xdc30('0x46')][_0xdc30('0x57')]){_0x4f1fd1[_0xdc30('0x58')]=[{'model':db['CmContact'],'as':_0xdc30('0xae'),'required':![]},{'model':db[_0xdc30('0xaf')],'as':'Owner','attributes':[_0xdc30('0x3c'),_0xdc30('0xb0'),'internal'],'required':![]},{'model':db[_0xdc30('0xb1')],'as':'Tags','attributes':['id',_0xdc30('0x3c'),_0xdc30('0xb2')],'where':_0xb823aa[_0xdc30('0x46')]['tag']?{'id':_0xb823aa[_0xdc30('0x46')][_0xdc30('0xb3')]}:undefined,'required':_0xb823aa['query'][_0xdc30('0xb3')]?!![]:![]}];}return db[_0xdc30('0x8f')]['findAll'](_0x4f1fd1);})[_0xdc30('0x20')](function(_0x1a05f8){_0x7fa101['rows']=_0x1a05f8;return _0x7fa101;});}})[_0xdc30('0x20')](respondWithFilteredResult(_0x35ac3a,_0x4f1fd1))[_0xdc30('0x2a')](handleError(_0x35ac3a,null));};exports[_0xdc30('0xb4')]=function(_0x42fe62,_0x4f6602,_0x94cf43){return db[_0xdc30('0x41')]['find']({'where':{'id':_0x42fe62[_0xdc30('0x5b')]['id']}})[_0xdc30('0x20')](handleEntityNotFound(_0x4f6602,null))[_0xdc30('0x20')](function(_0x1b901a){if(_0x1b901a){return _0x1b901a[_0xdc30('0xb4')](_0x42fe62[_0xdc30('0x5f')][_0xdc30('0x6c')],_[_0xdc30('0xb5')](_0x42fe62[_0xdc30('0x5f')],[_0xdc30('0x6c'),'id'])||{})['spread'](function(_0x37b24b){for(var _0x5e81cd=0x0;_0x5e81cd<_0x42fe62[_0xdc30('0x5f')][_0xdc30('0x6c')][_0xdc30('0x5c')];_0x5e81cd+=0x1){socket[_0xdc30('0xb6')]('userOpenchannelAccount:save',{'UserId':Number(_0x42fe62[_0xdc30('0x5f')][_0xdc30('0x6c')][_0x5e81cd]),'OpenchannelAccountId':Number(_0x42fe62[_0xdc30('0x5b')]['id'])});}return _0x37b24b;});}})[_0xdc30('0x20')](respondWithResult(_0x4f6602,null))['catch'](handleError(_0x4f6602,null));};exports[_0xdc30('0xb7')]=function(_0x23540a,_0x3fb904,_0x3299d0){return db['OpenchannelAccount'][_0xdc30('0x5d')]({'where':{'id':_0x23540a[_0xdc30('0x5b')]['id']}})[_0xdc30('0x20')](handleEntityNotFound(_0x3fb904,null))[_0xdc30('0x20')](function(_0x8ce30d){if(_0x8ce30d){return _0x8ce30d['removeAgents'](_0x23540a[_0xdc30('0x46')][_0xdc30('0x6c')])[_0xdc30('0x20')](function(){if(_[_0xdc30('0xb8')](_0x23540a[_0xdc30('0x46')][_0xdc30('0x6c')])){for(var _0x2dd83e=0x0;_0x2dd83e<_0x23540a['query'][_0xdc30('0x6c')][_0xdc30('0x5c')];_0x2dd83e+=0x1){socket[_0xdc30('0xb6')](_0xdc30('0xb9'),{'UserId':Number(_0x23540a[_0xdc30('0x46')][_0xdc30('0x6c')][_0x2dd83e]),'OpenchannelAccountId':Number(_0x23540a[_0xdc30('0x5b')]['id'])});}}else{socket[_0xdc30('0xb6')]('userOpenchannelAccount:remove',{'UserId':Number(_0x23540a[_0xdc30('0x46')]['ids']),'OpenchannelAccountId':Number(_0x23540a[_0xdc30('0x5b')]['id'])});}});}})[_0xdc30('0x20')](respondWithStatusCode(_0x3fb904,null))[_0xdc30('0x2a')](handleError(_0x3fb904,null));};exports[_0xdc30('0xba')]=function(_0x1b4769,_0x22f928,_0x133db3){var _0x57c74a={};var _0x3c863={};var _0xee8712;var _0x33c42e;return db[_0xdc30('0x41')][_0xdc30('0xad')]({'where':{'id':_0x1b4769[_0xdc30('0x5b')]['id']}})['then'](handleEntityNotFound(_0x22f928,null))[_0xdc30('0x20')](function(_0x248b46){if(_0x248b46){_0xee8712=_0x248b46;_0x3c863[_0xdc30('0x44')]=_[_0xdc30('0x47')](db['User'][_0xdc30('0x6a')]);_0x3c863[_0xdc30('0x46')]=_[_0xdc30('0x47')](_0x1b4769[_0xdc30('0x46')]);_0x3c863['filters']=_['intersection'](_0x3c863[_0xdc30('0x44')],_0x3c863['query']);_0x57c74a['attributes']=_[_0xdc30('0x49')](_0x3c863[_0xdc30('0x44')],qs['fields'](_0x1b4769[_0xdc30('0x46')][_0xdc30('0x4a')]));_0x57c74a[_0xdc30('0x4b')]=_0x57c74a['attributes'][_0xdc30('0x5c')]?_0x57c74a[_0xdc30('0x4b')]:_0x3c863['model'];_0x57c74a[_0xdc30('0x4e')]=qs[_0xdc30('0x4f')](_0x1b4769['query'][_0xdc30('0x4f')]);_0x57c74a[_0xdc30('0x50')]=qs[_0xdc30('0x48')](_[_0xdc30('0x51')](_0x1b4769[_0xdc30('0x46')],_0x3c863[_0xdc30('0x48')]));if(_0x1b4769[_0xdc30('0x46')]['filter']){_0x57c74a[_0xdc30('0x50')]=_[_0xdc30('0x52')](_0x57c74a[_0xdc30('0x50')],{'$or':_[_0xdc30('0x45')](_0x57c74a[_0xdc30('0x4b')],function(_0x53c3d4){var _0x2b975a={};_0x2b975a[_0x53c3d4]={'$like':'%'+_0x1b4769[_0xdc30('0x46')][_0xdc30('0x55')]+'%'};return _0x2b975a;})});}_0x57c74a=_['merge']({},_0x57c74a,_0x1b4769['options']);return _0xee8712[_0xdc30('0xba')](_0x57c74a);}})[_0xdc30('0x20')](function(_0x36d5de){if(_0x36d5de){_0x33c42e=_0x36d5de[_0xdc30('0x5c')];if(!_0x1b4769[_0xdc30('0x46')][_0xdc30('0x4c')](_0xdc30('0x4d'))){_0x57c74a[_0xdc30('0x2f')]=qs[_0xdc30('0x2f')](_0x1b4769['query'][_0xdc30('0x2f')]);_0x57c74a[_0xdc30('0x31')]=qs[_0xdc30('0x31')](_0x1b4769['query'][_0xdc30('0x31')]);}return _0xee8712[_0xdc30('0xba')](_0x57c74a);}})[_0xdc30('0x20')](function(_0x5d821f){if(_0x5d821f){return _0x5d821f?{'count':_0x33c42e,'rows':_0x5d821f}:null;}})[_0xdc30('0x20')](respondWithResult(_0x22f928,null))[_0xdc30('0x2a')](handleError(_0x22f928,null));};exports[_0xdc30('0x3d')]=function(_0x2c72ea,_0x3a4a97,_0x4bb319){var _0x5b2a7d,_0x435419,_0x51f050;if(_['isNil'](_0x2c72ea[_0xdc30('0x5f')]['body'])||_0x2c72ea[_0xdc30('0x5f')][_0xdc30('0x5f')]===''){throw new db[(_0xdc30('0x73'))][(_0xdc30('0x7c'))](_0xdc30('0x7e'));}if(_[_0xdc30('0x7a')](_0x2c72ea['body']['to'])){}_0x5b2a7d=_0x2c72ea['body']['to'];return db[_0xdc30('0x41')][_0xdc30('0xad')]({'where':{'id':_0x2c72ea[_0xdc30('0x5b')]['id']}})[_0xdc30('0x20')](handleEntityNotFound(_0x3a4a97,null))[_0xdc30('0x20')](function(_0x46a248){if(_0x46a248){return db['OpenchannelAccount'][_0xdc30('0x5d')]({'where':{'id':_0x46a248['id']},'include':[{'model':db[_0xdc30('0x82')],'as':_0xdc30('0x83'),'include':[{'model':db['CmContact'],'as':_0xdc30('0x84'),'where':{[_0x46a248['mapKey']]:_0x5b2a7d},'limit':0x1,'order':[['updatedAt',_0xdc30('0xbb')]]}]}]})[_0xdc30('0x20')](handleEntityNotFound(_0x3a4a97,null))[_0xdc30('0x20')](function(_0x3833b9){if(_0x3833b9&&_0x3833b9[_0xdc30('0x83')]){_0x435419=_0x3833b9[_0xdc30('0x38')]({'plain':!![]});if(_0x435419[_0xdc30('0x83')]&&_0x435419['List']['Contacts'][_0xdc30('0x5c')]){return _0x435419['List'][_0xdc30('0x84')][0x0];}return db[_0xdc30('0x72')][_0xdc30('0x5e')](_['defaults'](_0x2c72ea['body'],{'firstName':_0x5b2a7d,[_0x3833b9[_0xdc30('0x7f')]]:_0x5b2a7d,'phone':_0x5b2a7d,'ListId':_0x435419['ListId']}));}})[_0xdc30('0x20')](handleEntityNotFound(_0x3a4a97,null))[_0xdc30('0x20')](function(_0x3e3ae3){if(_0x3e3ae3){_0x51f050=_0x3e3ae3;return db[_0xdc30('0x8f')][_0xdc30('0x5d')]({'where':{'ContactId':_0x51f050['id'],'closed':![],'OpenchannelAccountId':_0x435419['id']}})[_0xdc30('0x20')](function(_0x4f6918){if(_0x4f6918){return[_0x4f6918,![]];}return db[_0xdc30('0x8f')][_0xdc30('0x5e')]({'UserId':_0x2c72ea[_0xdc30('0x62')]['id'],'ContactId':_0x51f050['id'],'OpenchannelAccountId':_0x435419['id'],'lastMsgDirection':_0xdc30('0xbc'),'firstMsgDirection':_0xdc30('0xbc'),'Messages':[_['merge'](_0x2c72ea['body'],{'read':![],'body':_0x2c72ea['body'][_0xdc30('0x5f')],'OpenchannelAccountId':_0x435419['id'],'UserId':_0x2c72ea['user']['id'],'ContactId':_0x51f050['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':_0xdc30('0xbd')}]})[_0xdc30('0x20')](function(_0x543dbb){return[_0x543dbb,!![]];});});}})[_0xdc30('0x91')](function(_0x4f9b62,_0x8e160e){if(_0x8e160e){return _0x4f9b62;}return db[_0xdc30('0x9b')][_0xdc30('0x5e')](_[_0xdc30('0x52')](_0x2c72ea['body'],{'read':![],'body':_0x2c72ea[_0xdc30('0x5f')]['body'],'OpenchannelAccountId':_0x435419['id'],'OpenchannelInteractionId':_0x4f9b62['id'],'UserId':_0x2c72ea[_0xdc30('0x62')]['id'],'ContactId':_0x51f050['id']}))[_0xdc30('0x20')](function(_0x570642){_0x4f9b62[_0xdc30('0xbe')][_0xdc30('0xbd')]=[];_0x4f9b62[_0xdc30('0xbe')]['Messages'][_0xdc30('0xbf')](_0x570642[_0xdc30('0xbe')]);return _0x4f9b62;});});}})[_0xdc30('0x20')](respondWithResult(_0x3a4a97,null))[_0xdc30('0x2a')](handleError(_0x3a4a97,null));};
\ No newline at end of file
+var _0x34e7=['./openchannelAccount.socket','register','jayson/promise','http','client','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','OpenchannelAccounts','UserProfileResource','stack','name','send','Pause','mandatoryDispositionPause','OpenchannelAccount','rawAttributes','type','key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','filters','pick','filter','merge','VIRTUAL','include','findAll','show','params','includeAll','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','Disposition','getDispositions','findOne','sort','OpenchannelAccountId','rows','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','notify','CmContact','ValidationError','difference','createdAt','updatedAt','ListId','isNil','Sequelize','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','CmList','List','Contacts','DESC','OpenchannelApplication','Applications','account','applications','list','priority','from','contact','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','firstName','messageId','created','autoclose','push','close','unmanaged','OpenchannelMessage','AttachmentId','interaction','UserId','User','unshift','agent','*,*,*,*','Start','startRouting','EventManager','sequelize','transaction','Transaction','READ_COMMITTED','bulkCreate','findAndCountAll','finally','getApplications','getInteractions','Contact','Owner','internal','Tag','Tags','color','tag','addAgents','omit','userOpenchannelAccount:save','removeAgents','isArray','emit','userOpenchannelAccount:remove','getAgents','out','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter'];(function(_0x2e990f,_0x26e9c4){var _0x575f53=function(_0x4f72d4){while(--_0x4f72d4){_0x2e990f['push'](_0x2e990f['shift']());}};_0x575f53(++_0x26e9c4);}(_0x34e7,0x164));var _0x734e=function(_0x4ed546,_0x244bd0){_0x4ed546=_0x4ed546-0x0;var _0x10bfcc=_0x34e7[_0x4ed546];return _0x10bfcc;};'use strict';var emlformat=require(_0x734e('0x0'));var rimraf=require(_0x734e('0x1'));var zipdir=require(_0x734e('0x2'));var jsonpatch=require(_0x734e('0x3'));var rp=require(_0x734e('0x4'));var moment=require(_0x734e('0x5'));var BPromise=require(_0x734e('0x6'));var Mustache=require(_0x734e('0x7'));var util=require(_0x734e('0x8'));var path=require(_0x734e('0x9'));var sox=require(_0x734e('0xa'));var csv=require(_0x734e('0xb'));var ejs=require(_0x734e('0xc'));var fs=require('fs');var fs_extra=require(_0x734e('0xd'));var _=require('lodash');var squel=require(_0x734e('0xe'));var crypto=require(_0x734e('0xf'));var jsforce=require(_0x734e('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x734e('0xb'));var querystring=require('querystring');var Papa=require(_0x734e('0x11'));var Redis=require(_0x734e('0x12'));var authService=require(_0x734e('0x13'));var qs=require(_0x734e('0x14'));var as=require(_0x734e('0x15'));var hardwareService=require(_0x734e('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x734e('0x17'));var config=require(_0x734e('0x18'));var licenseUtil=require(_0x734e('0x19'));var db=require(_0x734e('0x1a'))['db'];config['redis']=_[_0x734e('0x1b')](config[_0x734e('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x734e('0x1d'))(new Redis(config[_0x734e('0x1c')]));require(_0x734e('0x1e'))[_0x734e('0x1f')](socket);var jayson=require(_0x734e('0x20'));var client=jayson['client'][_0x734e('0x21')]({'port':0x232c});var client9002=jayson[_0x734e('0x22')][_0x734e('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x4f9e90,_0x2c1bdb,_0x4cb595,_0x173009){return new BPromise(function(_0x3aa65b,_0x5b693b){var _0x1450b1=_0x173009||client;return _0x1450b1['request'](_0x4f9e90,_0x4cb595)[_0x734e('0x23')](function(_0x4b8f15){logger[_0x734e('0x24')](_0x734e('0x25'),_0x2c1bdb,_0x734e('0x26'));logger[_0x734e('0x27')](_0x734e('0x28'),_0x2c1bdb,_0x734e('0x26'),JSON[_0x734e('0x29')](_0x4b8f15));if(_0x4b8f15[_0x734e('0x2a')]){if(_0x4b8f15[_0x734e('0x2a')]['code']===0x1f4){logger[_0x734e('0x2a')]('OpenchannelAccount,\x20%s,\x20%s',_0x2c1bdb,_0x4b8f15[_0x734e('0x2a')]['message']);return _0x5b693b(_0x4b8f15['error'][_0x734e('0x2b')]);}logger['error'](_0x734e('0x25'),_0x2c1bdb,_0x4b8f15['error'][_0x734e('0x2b')]);return _0x3aa65b(_0x4b8f15[_0x734e('0x2a')][_0x734e('0x2b')]);}else{logger[_0x734e('0x24')](_0x734e('0x25'),_0x2c1bdb,_0x734e('0x26'));_0x3aa65b(_0x4b8f15[_0x734e('0x2c')][_0x734e('0x2b')]);}})[_0x734e('0x2d')](function(_0x482e66){logger['error'](_0x734e('0x25'),_0x2c1bdb,_0x482e66);_0x5b693b(_0x482e66);});});}function respondWithStatusCode(_0x417961,_0x2f1ce4){_0x2f1ce4=_0x2f1ce4||0xcc;return function(_0xd97b18){if(_0xd97b18){return _0x417961[_0x734e('0x2e')](_0x2f1ce4);}return _0x417961[_0x734e('0x2f')](_0x2f1ce4)[_0x734e('0x30')]();};}function respondWithResult(_0x30c742,_0x4c74af){_0x4c74af=_0x4c74af||0xc8;return function(_0x16cd48){if(_0x16cd48){return _0x30c742['status'](_0x4c74af)[_0x734e('0x31')](_0x16cd48);}};}function respondWithFilteredResult(_0xb8e41b,_0x710b4){return function(_0x44c379){if(_0x44c379){var _0x50e64c=typeof _0x710b4[_0x734e('0x32')]===_0x734e('0x33')&&typeof _0x710b4[_0x734e('0x34')]===_0x734e('0x33');var _0x2bdfe6=_0x44c379['count'];var _0x27cc50=_0x50e64c?0x0:_0x710b4[_0x734e('0x32')];var _0x33652f=_0x50e64c?_0x44c379[_0x734e('0x35')]:_0x710b4['offset']+_0x710b4['limit'];var _0x496aa3;if(_0x33652f>=_0x2bdfe6){_0x33652f=_0x2bdfe6;_0x496aa3=0xc8;}else{_0x496aa3=0xce;}_0xb8e41b[_0x734e('0x2f')](_0x496aa3);return _0xb8e41b[_0x734e('0x36')](_0x734e('0x37'),_0x27cc50+'-'+_0x33652f+'/'+_0x2bdfe6)[_0x734e('0x31')](_0x44c379);}return null;};}function patchUpdates(_0x3adf91){return function(_0x1b4f81){try{jsonpatch[_0x734e('0x38')](_0x1b4f81,_0x3adf91,!![]);}catch(_0x11574e){return BPromise[_0x734e('0x39')](_0x11574e);}return _0x1b4f81['save']();};}function saveUpdates(_0x4d9687,_0x18a9a8){return function(_0x3c308f){if(_0x3c308f){return _0x3c308f[_0x734e('0x3a')](_0x4d9687)['then'](function(_0x3e9a81){return _0x3e9a81;});}return null;};}function removeEntity(_0x6b66df,_0x579d35){return function(_0x39e69b){if(_0x39e69b){return _0x39e69b[_0x734e('0x3b')]()[_0x734e('0x23')](function(){var _0x3d1a41=_0x39e69b['get']({'plain':!![]});var _0x29e410=_0x734e('0x3c');return db[_0x734e('0x3d')]['destroy']({'where':{'type':_0x29e410,'resourceId':_0x3d1a41['id']}})['then'](function(){return _0x39e69b;});})['then'](function(){_0x6b66df[_0x734e('0x2f')](0xcc)[_0x734e('0x30')]();});}};}function handleEntityNotFound(_0x1ebf09,_0x34c8d5){return function(_0x4b6e1a){if(!_0x4b6e1a){_0x1ebf09['sendStatus'](0x194);}return _0x4b6e1a;};}function handleError(_0x1bc6f9,_0x3153e6){_0x3153e6=_0x3153e6||0x1f4;return function(_0x190d7d){logger[_0x734e('0x2a')](_0x190d7d[_0x734e('0x3e')]);if(_0x190d7d[_0x734e('0x3f')]){delete _0x190d7d['name'];}_0x1bc6f9[_0x734e('0x2f')](_0x3153e6)[_0x734e('0x40')](_0x190d7d);};}exports['index']=function(_0x241cd6,_0x15d0d0){var _0x226dbe={'include':[{'model':db[_0x734e('0x41')],'as':_0x734e('0x42')}]},_0x3f1c8e={},_0xa24ca3={'count':0x0,'rows':[]};var _0x5ce055=_['map'](db[_0x734e('0x43')][_0x734e('0x44')],function(_0x355b08){return{'name':_0x355b08['fieldName'],'type':_0x355b08[_0x734e('0x45')][_0x734e('0x46')]};});_0x3f1c8e[_0x734e('0x47')]=_[_0x734e('0x48')](_0x5ce055,_0x734e('0x3f'));_0x3f1c8e[_0x734e('0x49')]=_[_0x734e('0x4a')](_0x241cd6[_0x734e('0x49')]);_0x3f1c8e['filters']=_[_0x734e('0x4b')](_0x3f1c8e['model'],_0x3f1c8e[_0x734e('0x49')]);_0x226dbe['attributes']=_[_0x734e('0x4b')](_0x3f1c8e[_0x734e('0x47')],qs['fields'](_0x241cd6[_0x734e('0x49')][_0x734e('0x4c')]));_0x226dbe['attributes']=_0x226dbe[_0x734e('0x4d')][_0x734e('0x4e')]?_0x226dbe['attributes']:_0x3f1c8e[_0x734e('0x47')];if(!_0x241cd6['query'][_0x734e('0x4f')](_0x734e('0x50'))){_0x226dbe[_0x734e('0x34')]=qs[_0x734e('0x34')](_0x241cd6[_0x734e('0x49')]['limit']);_0x226dbe[_0x734e('0x32')]=qs[_0x734e('0x32')](_0x241cd6[_0x734e('0x49')]['offset']);}_0x226dbe[_0x734e('0x51')]=qs['sort'](_0x241cd6[_0x734e('0x49')]['sort']);_0x226dbe[_0x734e('0x52')]=qs[_0x734e('0x53')](_[_0x734e('0x54')](_0x241cd6[_0x734e('0x49')],_0x3f1c8e[_0x734e('0x53')]),_0x5ce055);if(_0x241cd6['query'][_0x734e('0x55')]){_0x226dbe['where']=_[_0x734e('0x56')](_0x226dbe['where'],{'$or':_['map'](_0x5ce055,function(_0x296fad){if(_0x296fad['type']!==_0x734e('0x57')){var _0x4f1c4={};_0x4f1c4[_0x296fad[_0x734e('0x3f')]]={'$like':'%'+_0x241cd6[_0x734e('0x49')]['filter']+'%'};return _0x4f1c4;}})});}_0x226dbe=_[_0x734e('0x56')]({},_0x226dbe,_0x241cd6['options']);var _0x3a9a9e={'where':_0x226dbe[_0x734e('0x52')]};return db[_0x734e('0x43')][_0x734e('0x35')](_0x3a9a9e)[_0x734e('0x23')](function(_0x33126d){_0xa24ca3[_0x734e('0x35')]=_0x33126d;if(_0x241cd6[_0x734e('0x49')]['includeAll']){_0x226dbe[_0x734e('0x58')]=[{'all':!![]}];}return db[_0x734e('0x43')][_0x734e('0x59')](_0x226dbe);})[_0x734e('0x23')](function(_0x2d1c1b){_0xa24ca3['rows']=_0x2d1c1b;return _0xa24ca3;})[_0x734e('0x23')](respondWithFilteredResult(_0x15d0d0,_0x226dbe))['catch'](handleError(_0x15d0d0,null));};exports[_0x734e('0x5a')]=function(_0x2bf15c,_0x2cec45){var _0x1e6929={'raw':![],'where':{'id':_0x2bf15c[_0x734e('0x5b')]['id']},'include':[{'model':db[_0x734e('0x41')],'as':_0x734e('0x42')}]},_0x4f063b={};_0x4f063b['model']=_[_0x734e('0x4a')](db[_0x734e('0x43')][_0x734e('0x44')]);_0x4f063b[_0x734e('0x49')]=_[_0x734e('0x4a')](_0x2bf15c['query']);_0x4f063b[_0x734e('0x53')]=_['intersection'](_0x4f063b[_0x734e('0x47')],_0x4f063b[_0x734e('0x49')]);_0x1e6929[_0x734e('0x4d')]=_[_0x734e('0x4b')](_0x4f063b[_0x734e('0x47')],qs[_0x734e('0x4c')](_0x2bf15c[_0x734e('0x49')][_0x734e('0x4c')]));_0x1e6929[_0x734e('0x4d')]=_0x1e6929['attributes'][_0x734e('0x4e')]?_0x1e6929[_0x734e('0x4d')]:_0x4f063b[_0x734e('0x47')];if(_0x2bf15c[_0x734e('0x49')][_0x734e('0x5c')]){_0x1e6929['include']=[{'all':!![]}];}_0x1e6929=_[_0x734e('0x56')]({},_0x1e6929,_0x2bf15c[_0x734e('0x5d')]);return db['OpenchannelAccount'][_0x734e('0x5e')](_0x1e6929)[_0x734e('0x23')](handleEntityNotFound(_0x2cec45,null))['then'](respondWithResult(_0x2cec45,null))['catch'](handleError(_0x2cec45,null));};exports['create']=function(_0x56cce8,_0x10581d){return db[_0x734e('0x43')][_0x734e('0x5f')](_0x56cce8[_0x734e('0x60')],{})['then'](function(_0x6fc19a){var _0x337345=_0x56cce8[_0x734e('0x61')]['get']({'plain':!![]});if(!_0x337345)throw new Error(_0x734e('0x62'));if(_0x337345[_0x734e('0x63')]==='user'){var _0x3c3278=_0x6fc19a[_0x734e('0x64')]({'plain':!![]});var _0x195772=_0x734e('0x3c');return db[_0x734e('0x65')][_0x734e('0x5e')]({'where':{'name':_0x195772,'userProfileId':_0x337345[_0x734e('0x66')]},'raw':!![]})[_0x734e('0x23')](function(_0x5f3c6f){if(_0x5f3c6f&&_0x5f3c6f['autoAssociation']===0x0){return db[_0x734e('0x3d')][_0x734e('0x5f')]({'name':_0x3c3278[_0x734e('0x3f')],'resourceId':_0x3c3278['id'],'type':_0x5f3c6f['name'],'sectionId':_0x5f3c6f['id']},{})[_0x734e('0x23')](function(){return _0x6fc19a;});}else{return _0x6fc19a;}})[_0x734e('0x2d')](function(_0x14f1e7){logger[_0x734e('0x2a')](_0x734e('0x67'),_0x14f1e7);throw _0x14f1e7;});}return _0x6fc19a;})[_0x734e('0x23')](respondWithResult(_0x10581d,0xc9))[_0x734e('0x2d')](handleError(_0x10581d,null));};exports[_0x734e('0x3a')]=function(_0x1ed738,_0x5102c3){if(_0x1ed738[_0x734e('0x60')]['id']){delete _0x1ed738[_0x734e('0x60')]['id'];}return db[_0x734e('0x43')][_0x734e('0x5e')]({'where':{'id':_0x1ed738['params']['id']},'include':[{'model':db[_0x734e('0x41')],'as':_0x734e('0x42')}]})[_0x734e('0x23')](handleEntityNotFound(_0x5102c3,null))['then'](saveUpdates(_0x1ed738[_0x734e('0x60')],null))[_0x734e('0x23')](respondWithResult(_0x5102c3,null))['catch'](handleError(_0x5102c3,null));};exports[_0x734e('0x3b')]=function(_0x31e0f5,_0x24767e){return db[_0x734e('0x43')][_0x734e('0x5e')]({'where':{'id':_0x31e0f5[_0x734e('0x5b')]['id']}})[_0x734e('0x23')](handleEntityNotFound(_0x24767e,null))['then'](removeEntity(_0x24767e,null))[_0x734e('0x2d')](handleError(_0x24767e,null));};exports['describe']=function(_0x4556e0,_0x2830ed){return db['OpenchannelAccount'][_0x734e('0x68')]()[_0x734e('0x23')](respondWithResult(_0x2830ed,null))['catch'](handleError(_0x2830ed,null));};exports[_0x734e('0x69')]=function(_0x1260f8,_0x53b1d3,_0x23d24c){if(_0x1260f8['body']['id']){delete _0x1260f8['body']['id'];}return db[_0x734e('0x43')][_0x734e('0x5e')]({'where':{'id':_0x1260f8[_0x734e('0x5b')]['id']}})[_0x734e('0x23')](handleEntityNotFound(_0x53b1d3,null))['then'](function(_0x52c24a){if(_0x52c24a){_0x1260f8['body']['OpenchannelAccountId']=_0x52c24a['id'];return db[_0x734e('0x6a')][_0x734e('0x5f')](_0x1260f8[_0x734e('0x60')]);}})['then'](respondWithResult(_0x53b1d3,null))[_0x734e('0x2d')](handleError(_0x53b1d3,null));};exports[_0x734e('0x6b')]=function(_0x521e32,_0x4c34d0,_0x5438ca){var _0x512592={'raw':![],'where':{}};var _0xcbfd87={};var _0x4d2628={'count':0x0,'rows':[]};return db[_0x734e('0x43')][_0x734e('0x6c')]({'where':{'id':_0x521e32[_0x734e('0x5b')]['id']}})[_0x734e('0x23')](handleEntityNotFound(_0x4c34d0,null))[_0x734e('0x23')](function(_0x47f513){if(_0x47f513){_0xcbfd87[_0x734e('0x47')]=_[_0x734e('0x4a')](db[_0x734e('0x6a')][_0x734e('0x44')]);_0xcbfd87[_0x734e('0x49')]=_['keys'](_0x521e32[_0x734e('0x49')]);_0xcbfd87[_0x734e('0x53')]=_[_0x734e('0x4b')](_0xcbfd87[_0x734e('0x47')],_0xcbfd87[_0x734e('0x49')]);_0x512592[_0x734e('0x4d')]=_[_0x734e('0x4b')](_0xcbfd87[_0x734e('0x47')],qs['fields'](_0x521e32[_0x734e('0x49')][_0x734e('0x4c')]));_0x512592[_0x734e('0x4d')]=_0x512592['attributes'][_0x734e('0x4e')]?_0x512592[_0x734e('0x4d')]:_0xcbfd87[_0x734e('0x47')];if(!_0x521e32[_0x734e('0x49')]['hasOwnProperty'](_0x734e('0x50'))){_0x512592[_0x734e('0x34')]=qs[_0x734e('0x34')](_0x521e32[_0x734e('0x49')][_0x734e('0x34')]);_0x512592[_0x734e('0x32')]=qs[_0x734e('0x32')](_0x521e32[_0x734e('0x49')][_0x734e('0x32')]);}_0x512592[_0x734e('0x51')]=qs[_0x734e('0x6d')](_0x521e32['query'][_0x734e('0x6d')]);_0x512592[_0x734e('0x52')]=qs[_0x734e('0x53')](_[_0x734e('0x54')](_0x521e32[_0x734e('0x49')],_0xcbfd87['filters']));_0x512592['where'][_0x734e('0x6e')]=_0x47f513['id'];if(_0x521e32[_0x734e('0x49')][_0x734e('0x55')]){_0x512592['where']=_[_0x734e('0x56')](_0x512592[_0x734e('0x52')],{'$or':_[_0x734e('0x48')](_0x512592['attributes'],function(_0x2459da){var _0x422247={};_0x422247[_0x2459da]={'$like':'%'+_0x521e32['query'][_0x734e('0x55')]+'%'};return _0x422247;})});}_0x512592=_['merge']({},_0x512592,_0x521e32[_0x734e('0x5d')]);return db['Disposition'][_0x734e('0x35')]({'where':_0x512592[_0x734e('0x52')]})[_0x734e('0x23')](function(_0x26678e){_0x4d2628['count']=_0x26678e;if(_0x521e32['query'][_0x734e('0x5c')]){_0x512592['include']=[{'all':!![]}];}return db[_0x734e('0x6a')][_0x734e('0x59')](_0x512592);})[_0x734e('0x23')](function(_0xa9478b){_0x4d2628[_0x734e('0x6f')]=_0xa9478b;return _0x4d2628;});}})[_0x734e('0x23')](respondWithFilteredResult(_0x4c34d0,_0x512592))['catch'](handleError(_0x4c34d0,null));};exports['removeDispositions']=function(_0x2cdb23,_0x45470d,_0x4d2290){return db[_0x734e('0x43')]['find']({'where':{'id':_0x2cdb23[_0x734e('0x5b')]['id']}})[_0x734e('0x23')](handleEntityNotFound(_0x45470d,null))[_0x734e('0x23')](function(_0x1b3da4){if(_0x1b3da4){return _0x1b3da4[_0x734e('0x70')](_0x2cdb23[_0x734e('0x49')][_0x734e('0x71')]);}})[_0x734e('0x23')](respondWithStatusCode(_0x45470d,null))[_0x734e('0x2d')](handleError(_0x45470d,null));};exports[_0x734e('0x72')]=function(_0x4b2f10,_0x14233b,_0x578fe7){if(_0x4b2f10[_0x734e('0x60')]['id']){delete _0x4b2f10['body']['id'];}return db[_0x734e('0x43')][_0x734e('0x5e')]({'where':{'id':_0x4b2f10[_0x734e('0x5b')]['id']}})[_0x734e('0x23')](handleEntityNotFound(_0x14233b,null))['then'](function(_0x1c60b6){if(_0x1c60b6){_0x4b2f10['body'][_0x734e('0x6e')]=_0x1c60b6['id'];return db[_0x734e('0x73')][_0x734e('0x5f')](_0x4b2f10[_0x734e('0x60')]);}})[_0x734e('0x23')](respondWithResult(_0x14233b,null))[_0x734e('0x2d')](handleError(_0x14233b,null));};exports['getAnswers']=function(_0x49dff2,_0x1b0a7c,_0x4afa55){var _0x3c559f={'raw':![],'where':{}};var _0x5cf1be={};var _0x4767fd={'count':0x0,'rows':[]};return db[_0x734e('0x43')]['findOne']({'where':{'id':_0x49dff2['params']['id']}})[_0x734e('0x23')](handleEntityNotFound(_0x1b0a7c,null))['then'](function(_0x16b2a9){if(_0x16b2a9){_0x5cf1be['model']=_[_0x734e('0x4a')](db[_0x734e('0x73')][_0x734e('0x44')]);_0x5cf1be[_0x734e('0x49')]=_['keys'](_0x49dff2[_0x734e('0x49')]);_0x5cf1be[_0x734e('0x53')]=_[_0x734e('0x4b')](_0x5cf1be[_0x734e('0x47')],_0x5cf1be[_0x734e('0x49')]);_0x3c559f[_0x734e('0x4d')]=_['intersection'](_0x5cf1be[_0x734e('0x47')],qs[_0x734e('0x4c')](_0x49dff2[_0x734e('0x49')]['fields']));_0x3c559f[_0x734e('0x4d')]=_0x3c559f[_0x734e('0x4d')][_0x734e('0x4e')]?_0x3c559f[_0x734e('0x4d')]:_0x5cf1be[_0x734e('0x47')];if(!_0x49dff2[_0x734e('0x49')]['hasOwnProperty'](_0x734e('0x50'))){_0x3c559f[_0x734e('0x34')]=qs[_0x734e('0x34')](_0x49dff2[_0x734e('0x49')][_0x734e('0x34')]);_0x3c559f['offset']=qs[_0x734e('0x32')](_0x49dff2['query'][_0x734e('0x32')]);}_0x3c559f[_0x734e('0x51')]=qs[_0x734e('0x6d')](_0x49dff2[_0x734e('0x49')][_0x734e('0x6d')]);_0x3c559f[_0x734e('0x52')]=qs[_0x734e('0x53')](_[_0x734e('0x54')](_0x49dff2[_0x734e('0x49')],_0x5cf1be[_0x734e('0x53')]));_0x3c559f[_0x734e('0x52')][_0x734e('0x6e')]=_0x16b2a9['id'];if(_0x49dff2[_0x734e('0x49')][_0x734e('0x55')]){_0x3c559f[_0x734e('0x52')]=_[_0x734e('0x56')](_0x3c559f[_0x734e('0x52')],{'$or':_['map'](_0x3c559f[_0x734e('0x4d')],function(_0x27573c){var _0x287533={};_0x287533[_0x27573c]={'$like':'%'+_0x49dff2[_0x734e('0x49')]['filter']+'%'};return _0x287533;})});}_0x3c559f=_[_0x734e('0x56')]({},_0x3c559f,_0x49dff2[_0x734e('0x5d')]);return db[_0x734e('0x73')]['count']({'where':_0x3c559f[_0x734e('0x52')]})[_0x734e('0x23')](function(_0x2b195d){_0x4767fd[_0x734e('0x35')]=_0x2b195d;if(_0x49dff2['query'][_0x734e('0x5c')]){_0x3c559f[_0x734e('0x58')]=[{'all':!![]}];}return db[_0x734e('0x73')][_0x734e('0x59')](_0x3c559f);})[_0x734e('0x23')](function(_0xa256bd){_0x4767fd[_0x734e('0x6f')]=_0xa256bd;return _0x4767fd;});}})[_0x734e('0x23')](respondWithFilteredResult(_0x1b0a7c,_0x3c559f))['catch'](handleError(_0x1b0a7c,null));};exports['removeAnswers']=function(_0x48458d,_0x2bcfe5,_0x315eb4){return db['OpenchannelAccount'][_0x734e('0x5e')]({'where':{'id':_0x48458d[_0x734e('0x5b')]['id']}})[_0x734e('0x23')](handleEntityNotFound(_0x2bcfe5,null))[_0x734e('0x23')](function(_0x3365dd){if(_0x3365dd){return _0x3365dd[_0x734e('0x74')](_0x48458d[_0x734e('0x49')][_0x734e('0x71')]);}})[_0x734e('0x23')](respondWithStatusCode(_0x2bcfe5,null))[_0x734e('0x2d')](handleError(_0x2bcfe5,null));};exports[_0x734e('0x75')]=function(_0x1415f1,_0x47480a,_0x288d8b){var _0x4416ee={'body':_0x1415f1[_0x734e('0x60')],'channel':'openchannel'};var _0x148654=[];var _0x140662=[];var _0x51d676={};var _0x5dab47=![];return db[_0x734e('0x76')][_0x734e('0x68')]()[_0x734e('0x23')](function(_0x8a9013){if(!_0x8a9013){throw new db['Sequelize'][(_0x734e('0x77'))]('no\x20available\x20attributes');}_0x148654=_[_0x734e('0x78')](_['keys'](_0x8a9013),[_0x734e('0x79'),_0x734e('0x7a')]);_0x140662=_[_0x734e('0x78')](_[_0x734e('0x4a')](_0x8a9013),[_0x734e('0x79'),_0x734e('0x7a'),'CompanyId',_0x734e('0x7b')]);if(_0x1415f1['body']['id']){delete _0x1415f1[_0x734e('0x60')]['id'];}if(_[_0x734e('0x7c')](_0x1415f1[_0x734e('0x60')]['from'])){throw new db[(_0x734e('0x7d'))][(_0x734e('0x77'))]('from\x20is\x20mandatory');}if(_[_0x734e('0x7c')](_0x1415f1[_0x734e('0x60')][_0x734e('0x60')])||_0x1415f1['body'][_0x734e('0x60')]===''){throw new db[(_0x734e('0x7d'))][(_0x734e('0x77'))](_0x734e('0x7e'));}if(_[_0x734e('0x7c')](_0x1415f1['body']['mapKey'])){throw new db[(_0x734e('0x7d'))][(_0x734e('0x77'))](_0x734e('0x7f')+_0x140662);}if(!_[_0x734e('0x80')](_0x140662,_0x1415f1['body'][_0x734e('0x81')])){throw new db[(_0x734e('0x7d'))]['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x140662);}_0x51d676[_0x1415f1[_0x734e('0x60')][_0x734e('0x81')]]=_0x1415f1[_0x734e('0x60')]['from'];})[_0x734e('0x23')](function(){return db[_0x734e('0x43')][_0x734e('0x5e')]({'where':{'id':_0x1415f1[_0x734e('0x5b')]['id']},'include':[{'model':db[_0x734e('0x82')],'as':_0x734e('0x83'),'include':[{'model':db[_0x734e('0x76')],'as':_0x734e('0x84'),'where':_0x51d676,'limit':0x1,'order':[[_0x734e('0x7a'),_0x734e('0x85')]]}]},{'model':db[_0x734e('0x86')],'as':_0x734e('0x87')}]});})[_0x734e('0x23')](handleEntityNotFound(_0x47480a,null))[_0x734e('0x23')](function(_0x55edc0){if(_0x55edc0&&_0x55edc0[_0x734e('0x83')]){_0x4416ee[_0x734e('0x88')]=_0x55edc0;_0x4416ee[_0x734e('0x89')]=_0x55edc0[_0x734e('0x87')];_0x4416ee[_0x734e('0x8a')]=_0x55edc0['List'];_0x4416ee['applications']=_['orderBy'](_0x4416ee['applications'],[_0x734e('0x8b')],['asc']);if(_0x4416ee['account'][_0x734e('0x87')]){delete _0x4416ee[_0x734e('0x88')][_0x734e('0x87')];}if(_0x4416ee['account']['List']&&_0x4416ee[_0x734e('0x88')][_0x734e('0x83')][_0x734e('0x84')][_0x734e('0x4e')]){return _0x4416ee['account']['List'][_0x734e('0x84')][0x0];}var _0x4b7619=_[_0x734e('0x1b')](_0x1415f1['body'],{'firstName':_0x1415f1['body'][_0x734e('0x8c')],'ListId':_0x55edc0[_0x734e('0x7b')]});_0x4b7619[_0x1415f1[_0x734e('0x60')][_0x734e('0x81')]]=_0x1415f1['body'][_0x734e('0x8c')];return db[_0x734e('0x76')][_0x734e('0x5f')](_0x4b7619,{'fields':_0x148654,'raw':!![]});}})[_0x734e('0x23')](handleEntityNotFound(_0x47480a,null))['then'](function(_0xe9d80f){_0x4416ee[_0x734e('0x8d')]=_0xe9d80f;if(_0xe9d80f){var _0x3b2971={'ContactId':_0xe9d80f['id'],'OpenchannelAccountId':_0x1415f1[_0x734e('0x5b')]['id'],'from':(_0xe9d80f['firstName']||'')+'\x20'+(_0xe9d80f[_0x734e('0x8e')]||'')};var _0x10987e={'OpenchannelAccountId':_0x1415f1[_0x734e('0x5b')]['id'],'closed':![]};if(_0x1415f1['body'][_0x734e('0x8f')]){_0x10987e[_0x734e('0x8f')]=_0x1415f1[_0x734e('0x60')]['threadId'];return db[_0x734e('0x90')][_0x734e('0x5e')]({'where':_0x10987e})[_0x734e('0x23')](function(_0x430957){if(_0x430957){return[_0x430957,![]];}_0x3b2971[_0x734e('0x8f')]=_0x1415f1['body'][_0x734e('0x8f')];_0x3b2971[_0x734e('0x91')]=_0x1415f1[_0x734e('0x60')]['externalUrl'];return db[_0x734e('0x90')][_0x734e('0x5f')](_0x3b2971)[_0x734e('0x23')](function(_0x38cd7a){return[_0x38cd7a,!![]];});});}else{_0x10987e[_0x734e('0x8f')]=null;}_0x10987e[_0x734e('0x92')]=_0xe9d80f['id'];return db['OpenchannelInteraction'][_0x734e('0x5e')]({'where':_0x10987e})['then'](function(_0x372432){if(_0x372432){return[_0x372432,![]];}return db[_0x734e('0x90')]['create'](_0x3b2971)[_0x734e('0x23')](function(_0x29ef41){return[_0x29ef41,!![]];});});}})[_0x734e('0x93')](function(_0x1cd9c1,_0x4875f0){if(_0x1cd9c1){_0x5dab47=_0x4875f0;if(!_0x4875f0){var _0x581fbe={'from':(_0x4416ee[_0x734e('0x8d')][_0x734e('0x94')]||'')+'\x20'+(_0x4416ee[_0x734e('0x8d')][_0x734e('0x8e')]||'')};if(_0x1415f1[_0x734e('0x60')][_0x734e('0x8f')]&&_0x1415f1[_0x734e('0x60')][_0x734e('0x95')]&&_0x1415f1[_0x734e('0x60')][_0x734e('0x8f')]!=_0x1415f1[_0x734e('0x60')][_0x734e('0x95')]){_0x581fbe[_0x734e('0x8f')]=_0x1415f1['body'][_0x734e('0x95')];}return _0x1cd9c1['update'](_0x581fbe);}else{return _0x1cd9c1;}}})[_0x734e('0x23')](function(_0x433a0f){_0x4416ee['interaction']=_0x433a0f[_0x734e('0x64')]({'plain':!![]});_0x4416ee['interaction'][_0x734e('0x96')]=_0x5dab47;if(_0x4416ee['interaction'][_0x734e('0x96')]){if(_0x4416ee[_0x734e('0x88')][_0x734e('0x97')]){_0x4416ee[_0x734e('0x89')][_0x734e('0x98')]({'id':0x0,'priority':_0x4416ee[_0x734e('0x89')]['length']+0x1,'app':_0x734e('0x99'),'appdata':_0x734e('0x9a'),'interval':'*,*,*,*'});}}return db[_0x734e('0x9b')]['create']({'body':_0x1415f1['body']['body'],'OpenchannelAccountId':_0x1415f1['params']['id'],'OpenchannelInteractionId':_0x433a0f['id'],'direction':'in','ContactId':_0x4416ee['contact']['id'],'AttachmentId':_0x1415f1['body'][_0x734e('0x9c')]});})['then'](function(_0x36b8c6){_0x4416ee['message']=_0x36b8c6;if(_0x4416ee[_0x734e('0x9d')][_0x734e('0x9e')]){return db[_0x734e('0x9f')][_0x734e('0x5e')]({'attributes':['id',_0x734e('0x3f')],'where':{'id':_0x4416ee[_0x734e('0x9d')][_0x734e('0x9e')]}})[_0x734e('0x23')](function(_0x4c0b62){if(_0x4c0b62){_0x4416ee[_0x734e('0x89')][_0x734e('0xa0')]({'id':0x0,'priority':0x0,'app':_0x734e('0xa1'),'appdata':_0x4c0b62[_0x734e('0x3f')]+','+(_0x4416ee[_0x734e('0x88')]['waitForTheAssignedAgent']||0xa),'interval':_0x734e('0xa2')});_0x4416ee['forcedOwnership']=![];}return respondWithRpcPromise(_0x734e('0xa3'),'startRouting',_0x4416ee);});}return respondWithRpcPromise(_0x734e('0xa3'),_0x734e('0xa4'),_0x4416ee);})[_0x734e('0x23')](function(_0x3aa46c){respondWithRpcPromise('EventManager',_0x734e('0xa5'),{'event':_0x734e('0x75'),'message':_0x3aa46c},client9002);return _0x3aa46c;})[_0x734e('0x23')](respondWithResult(_0x47480a,null))['catch'](handleError(_0x47480a,null));};exports['addApplications']=function(_0x19a92f,_0x977d37){var _0x148fef=_0x19a92f[_0x734e('0x5b')]['id'];var _0x4b8401=_0x19a92f[_0x734e('0x60')];var _0x59a3d1=0xc8;var _0x3d3959=null;return db[_0x734e('0xa6')][_0x734e('0xa7')]({'isolationLevel':db['sequelize'][_0x734e('0xa8')]['ISOLATION_LEVELS'][_0x734e('0xa9')]},function(_0x48115d){return db[_0x734e('0x43')]['findOne']({'where':{'id':_0x148fef},'transaction':_0x48115d})['then'](function(_0x22ad31){if(_0x22ad31){return db[_0x734e('0x86')][_0x734e('0x3b')]({'where':{'OpenchannelAccountId':_0x148fef},'transaction':_0x48115d})['then'](function(){var _0xd6a2b8=_[_0x734e('0x48')](_0x4b8401,function(_0x5e3cfd){_0x5e3cfd[_0x734e('0x6e')]=_0x148fef;return _0x5e3cfd;});return db[_0x734e('0x86')][_0x734e('0xaa')](_0xd6a2b8,{'transaction':_0x48115d});});}else{_0x59a3d1=0x194;_0x3d3959=[];}});})[_0x734e('0x23')](function(){if(_0x59a3d1!==0x194){return db[_0x734e('0x86')][_0x734e('0xab')]({'where':{'OpenchannelAccountId':_0x148fef},'order':_0x734e('0x8b')})[_0x734e('0x23')](function(_0x421cd8){_0x3d3959=_0x421cd8;});}})[_0x734e('0x2d')](function(_0xa953f8){_0x59a3d1=0x1f4;logger['error'](_0xa953f8[_0x734e('0x3e')]);if(_0xa953f8[_0x734e('0x3f')]){delete _0xa953f8['name'];}_0x3d3959=_0xa953f8;})[_0x734e('0xac')](function(){if(_0x3d3959===null){_0x977d37[_0x734e('0x2e')](_0x59a3d1);}else{if(_0x59a3d1===0x1f4){_0x977d37[_0x734e('0x2f')](_0x59a3d1)[_0x734e('0x40')](_0x3d3959);}else{_0x977d37[_0x734e('0x2f')](_0x59a3d1)['json'](_0x3d3959);}}});};exports[_0x734e('0xad')]=function(_0x44a7d7,_0x2fc6e2,_0x413d87){var _0x58bba4={};var _0x4012c8={};var _0x51eead;var _0xc8b2e7;return db['OpenchannelAccount']['findOne']({'where':{'id':_0x44a7d7[_0x734e('0x5b')]['id']}})[_0x734e('0x23')](handleEntityNotFound(_0x2fc6e2,null))[_0x734e('0x23')](function(_0x8a373e){if(_0x8a373e){_0x51eead=_0x8a373e;_0x4012c8[_0x734e('0x47')]=_['keys'](db['OpenchannelApplication']['rawAttributes']);_0x4012c8[_0x734e('0x49')]=_[_0x734e('0x4a')](_0x44a7d7[_0x734e('0x49')]);_0x4012c8[_0x734e('0x53')]=_['intersection'](_0x4012c8[_0x734e('0x47')],_0x4012c8['query']);_0x58bba4[_0x734e('0x4d')]=_[_0x734e('0x4b')](_0x4012c8['model'],qs[_0x734e('0x4c')](_0x44a7d7[_0x734e('0x49')][_0x734e('0x4c')]));_0x58bba4[_0x734e('0x4d')]=_0x58bba4[_0x734e('0x4d')][_0x734e('0x4e')]?_0x58bba4['attributes']:_0x4012c8[_0x734e('0x47')];_0x58bba4[_0x734e('0x51')]=qs[_0x734e('0x6d')](_0x44a7d7['query'][_0x734e('0x6d')]);_0x58bba4[_0x734e('0x52')]=qs[_0x734e('0x53')](_[_0x734e('0x54')](_0x44a7d7[_0x734e('0x49')],_0x4012c8[_0x734e('0x53')]));if(_0x44a7d7[_0x734e('0x49')]['filter']){_0x58bba4[_0x734e('0x52')]=_[_0x734e('0x56')](_0x58bba4['where'],{'$or':_[_0x734e('0x48')](_0x58bba4[_0x734e('0x4d')],function(_0x5332ff){var _0x2b83c5={};_0x2b83c5[_0x5332ff]={'$like':'%'+_0x44a7d7[_0x734e('0x49')][_0x734e('0x55')]+'%'};return _0x2b83c5;})});}_0x58bba4=_[_0x734e('0x56')]({},_0x58bba4,_0x44a7d7[_0x734e('0x5d')]);return _0x51eead[_0x734e('0xad')](_0x58bba4);}})[_0x734e('0x23')](function(_0x44912f){if(_0x44912f){_0xc8b2e7=_0x44912f[_0x734e('0x4e')];if(!_0x44a7d7[_0x734e('0x49')]['hasOwnProperty'](_0x734e('0x50'))){_0x58bba4[_0x734e('0x34')]=qs[_0x734e('0x34')](_0x44a7d7[_0x734e('0x49')][_0x734e('0x34')]);_0x58bba4['offset']=qs[_0x734e('0x32')](_0x44a7d7[_0x734e('0x49')]['offset']);}return _0x51eead['getApplications'](_0x58bba4);}})[_0x734e('0x23')](function(_0x1de72e){if(_0x1de72e){return _0x1de72e?{'count':_0xc8b2e7,'rows':_0x1de72e}:null;}})[_0x734e('0x23')](respondWithResult(_0x2fc6e2,null))['catch'](handleError(_0x2fc6e2,null));};exports[_0x734e('0xae')]=function(_0x119841,_0x1e29ef,_0x4db769){var _0x3349f9={'raw':![],'where':{}};var _0x2ab134={};var _0x488269={'count':0x0,'rows':[]};return db[_0x734e('0x43')][_0x734e('0x6c')]({'where':{'id':_0x119841['params']['id']}})['then'](handleEntityNotFound(_0x1e29ef,null))['then'](function(_0x2cc0d6){if(_0x2cc0d6){_0x2ab134[_0x734e('0x47')]=_['keys'](db['OpenchannelInteraction'][_0x734e('0x44')]);_0x2ab134[_0x734e('0x49')]=_[_0x734e('0x4a')](_0x119841[_0x734e('0x49')]);_0x2ab134[_0x734e('0x53')]=_['intersection'](_0x2ab134[_0x734e('0x47')],_0x2ab134[_0x734e('0x49')]);_0x3349f9['attributes']=_[_0x734e('0x4b')](_0x2ab134[_0x734e('0x47')],qs[_0x734e('0x4c')](_0x119841[_0x734e('0x49')][_0x734e('0x4c')]));_0x3349f9[_0x734e('0x4d')]=_0x3349f9['attributes']['length']?_0x3349f9[_0x734e('0x4d')]:_0x2ab134['model'];if(!_0x119841[_0x734e('0x49')][_0x734e('0x4f')](_0x734e('0x50'))){_0x3349f9[_0x734e('0x34')]=qs[_0x734e('0x34')](_0x119841['query'][_0x734e('0x34')]);_0x3349f9['offset']=qs[_0x734e('0x32')](_0x119841[_0x734e('0x49')]['offset']);}_0x3349f9[_0x734e('0x51')]=qs[_0x734e('0x6d')](_0x119841[_0x734e('0x49')]['sort']);_0x3349f9[_0x734e('0x52')]=qs[_0x734e('0x53')](_[_0x734e('0x54')](_0x119841[_0x734e('0x49')],_0x2ab134[_0x734e('0x53')]));_0x3349f9['where']['OpenchannelAccountId']=_0x2cc0d6['id'];if(_0x119841[_0x734e('0x49')][_0x734e('0x55')]){_0x3349f9['where']=_[_0x734e('0x56')](_0x3349f9['where'],{'$or':_[_0x734e('0x48')](_0x3349f9[_0x734e('0x4d')],function(_0x388a40){var _0x27fa5d={};_0x27fa5d[_0x388a40]={'$like':'%'+_0x119841['query'][_0x734e('0x55')]+'%'};return _0x27fa5d;})});}_0x3349f9=_[_0x734e('0x56')]({},_0x3349f9,_0x119841[_0x734e('0x5d')]);return db['OpenchannelInteraction'][_0x734e('0x35')]({'where':_0x3349f9[_0x734e('0x52')]})[_0x734e('0x23')](function(_0x52223a){_0x488269['count']=_0x52223a;if(_0x119841[_0x734e('0x49')]['includeAll']){_0x3349f9[_0x734e('0x58')]=[{'model':db['CmContact'],'as':_0x734e('0xaf'),'required':![]},{'model':db['User'],'as':_0x734e('0xb0'),'attributes':[_0x734e('0x3f'),'fullname',_0x734e('0xb1')],'required':![]},{'model':db[_0x734e('0xb2')],'as':_0x734e('0xb3'),'attributes':['id',_0x734e('0x3f'),_0x734e('0xb4')],'where':_0x119841['query'][_0x734e('0xb5')]?{'id':_0x119841['query']['tag']}:undefined,'required':_0x119841[_0x734e('0x49')][_0x734e('0xb5')]?!![]:![]}];}return db[_0x734e('0x90')][_0x734e('0x59')](_0x3349f9);})[_0x734e('0x23')](function(_0x45b4bc){_0x488269[_0x734e('0x6f')]=_0x45b4bc;return _0x488269;});}})['then'](respondWithFilteredResult(_0x1e29ef,_0x3349f9))['catch'](handleError(_0x1e29ef,null));};exports[_0x734e('0xb6')]=function(_0x4b1fcd,_0x566b24,_0x9c50f1){return db[_0x734e('0x43')]['find']({'where':{'id':_0x4b1fcd[_0x734e('0x5b')]['id']}})[_0x734e('0x23')](handleEntityNotFound(_0x566b24,null))[_0x734e('0x23')](function(_0x4d186c){if(_0x4d186c){return _0x4d186c[_0x734e('0xb6')](_0x4b1fcd[_0x734e('0x60')]['ids'],_[_0x734e('0xb7')](_0x4b1fcd[_0x734e('0x60')],['ids','id'])||{})[_0x734e('0x93')](function(_0x22f12a){for(var _0x2685d2=0x0;_0x2685d2<_0x4b1fcd[_0x734e('0x60')][_0x734e('0x71')][_0x734e('0x4e')];_0x2685d2+=0x1){socket['emit'](_0x734e('0xb8'),{'UserId':Number(_0x4b1fcd[_0x734e('0x60')][_0x734e('0x71')][_0x2685d2]),'OpenchannelAccountId':Number(_0x4b1fcd[_0x734e('0x5b')]['id'])});}return _0x22f12a;});}})[_0x734e('0x23')](respondWithResult(_0x566b24,null))['catch'](handleError(_0x566b24,null));};exports[_0x734e('0xb9')]=function(_0x3694df,_0x4af137,_0x155ace){return db[_0x734e('0x43')][_0x734e('0x5e')]({'where':{'id':_0x3694df[_0x734e('0x5b')]['id']}})['then'](handleEntityNotFound(_0x4af137,null))[_0x734e('0x23')](function(_0x1ea62a){if(_0x1ea62a){return _0x1ea62a['removeAgents'](_0x3694df['query'][_0x734e('0x71')])['then'](function(){if(_[_0x734e('0xba')](_0x3694df['query'][_0x734e('0x71')])){for(var _0x21a1da=0x0;_0x21a1da<_0x3694df['query'][_0x734e('0x71')][_0x734e('0x4e')];_0x21a1da+=0x1){socket[_0x734e('0xbb')](_0x734e('0xbc'),{'UserId':Number(_0x3694df[_0x734e('0x49')][_0x734e('0x71')][_0x21a1da]),'OpenchannelAccountId':Number(_0x3694df[_0x734e('0x5b')]['id'])});}}else{socket[_0x734e('0xbb')](_0x734e('0xbc'),{'UserId':Number(_0x3694df[_0x734e('0x49')]['ids']),'OpenchannelAccountId':Number(_0x3694df['params']['id'])});}});}})[_0x734e('0x23')](respondWithStatusCode(_0x4af137,null))['catch'](handleError(_0x4af137,null));};exports['getAgents']=function(_0x4f510a,_0xf61ed4,_0x34fe1e){var _0x52894e={};var _0x59afd1={};var _0x34f37b;var _0x31adfe;return db['OpenchannelAccount'][_0x734e('0x6c')]({'where':{'id':_0x4f510a[_0x734e('0x5b')]['id']}})[_0x734e('0x23')](handleEntityNotFound(_0xf61ed4,null))[_0x734e('0x23')](function(_0x1e3285){if(_0x1e3285){_0x34f37b=_0x1e3285;_0x59afd1['model']=_[_0x734e('0x4a')](db[_0x734e('0x9f')]['rawAttributes']);_0x59afd1[_0x734e('0x49')]=_[_0x734e('0x4a')](_0x4f510a[_0x734e('0x49')]);_0x59afd1['filters']=_['intersection'](_0x59afd1[_0x734e('0x47')],_0x59afd1['query']);_0x52894e[_0x734e('0x4d')]=_[_0x734e('0x4b')](_0x59afd1[_0x734e('0x47')],qs[_0x734e('0x4c')](_0x4f510a['query'][_0x734e('0x4c')]));_0x52894e[_0x734e('0x4d')]=_0x52894e['attributes'][_0x734e('0x4e')]?_0x52894e[_0x734e('0x4d')]:_0x59afd1[_0x734e('0x47')];_0x52894e[_0x734e('0x51')]=qs['sort'](_0x4f510a[_0x734e('0x49')][_0x734e('0x6d')]);_0x52894e[_0x734e('0x52')]=qs[_0x734e('0x53')](_[_0x734e('0x54')](_0x4f510a[_0x734e('0x49')],_0x59afd1['filters']));if(_0x4f510a['query'][_0x734e('0x55')]){_0x52894e[_0x734e('0x52')]=_[_0x734e('0x56')](_0x52894e[_0x734e('0x52')],{'$or':_[_0x734e('0x48')](_0x52894e[_0x734e('0x4d')],function(_0xdf5ef9){var _0x189327={};_0x189327[_0xdf5ef9]={'$like':'%'+_0x4f510a[_0x734e('0x49')][_0x734e('0x55')]+'%'};return _0x189327;})});}_0x52894e=_[_0x734e('0x56')]({},_0x52894e,_0x4f510a[_0x734e('0x5d')]);return _0x34f37b[_0x734e('0xbd')](_0x52894e);}})[_0x734e('0x23')](function(_0x30c50e){if(_0x30c50e){_0x31adfe=_0x30c50e[_0x734e('0x4e')];if(!_0x4f510a['query']['hasOwnProperty']('nolimit')){_0x52894e[_0x734e('0x34')]=qs[_0x734e('0x34')](_0x4f510a[_0x734e('0x49')]['limit']);_0x52894e[_0x734e('0x32')]=qs[_0x734e('0x32')](_0x4f510a[_0x734e('0x49')][_0x734e('0x32')]);}return _0x34f37b[_0x734e('0xbd')](_0x52894e);}})['then'](function(_0x4b9df0){if(_0x4b9df0){return _0x4b9df0?{'count':_0x31adfe,'rows':_0x4b9df0}:null;}})['then'](respondWithResult(_0xf61ed4,null))[_0x734e('0x2d')](handleError(_0xf61ed4,null));};exports[_0x734e('0x40')]=function(_0x53c814,_0x277c51,_0x5a28d0){var _0x1cf6d5,_0x253db5,_0x249cd0;if(_['isNil'](_0x53c814[_0x734e('0x60')][_0x734e('0x60')])||_0x53c814[_0x734e('0x60')]['body']===''){throw new db['Sequelize'][(_0x734e('0x77'))](_0x734e('0x7e'));}if(_[_0x734e('0x7c')](_0x53c814['body']['to'])){}_0x1cf6d5=_0x53c814[_0x734e('0x60')]['to'];return db[_0x734e('0x43')][_0x734e('0x6c')]({'where':{'id':_0x53c814[_0x734e('0x5b')]['id']}})[_0x734e('0x23')](handleEntityNotFound(_0x277c51,null))[_0x734e('0x23')](function(_0x4de8b5){if(_0x4de8b5){return db[_0x734e('0x43')][_0x734e('0x5e')]({'where':{'id':_0x4de8b5['id']},'include':[{'model':db['CmList'],'as':_0x734e('0x83'),'include':[{'model':db['CmContact'],'as':_0x734e('0x84'),'where':{[_0x4de8b5[_0x734e('0x81')]]:_0x1cf6d5},'limit':0x1,'order':[[_0x734e('0x7a'),'DESC']]}]}]})[_0x734e('0x23')](handleEntityNotFound(_0x277c51,null))[_0x734e('0x23')](function(_0xc66229){if(_0xc66229&&_0xc66229[_0x734e('0x83')]){_0x253db5=_0xc66229[_0x734e('0x64')]({'plain':!![]});if(_0x253db5[_0x734e('0x83')]&&_0x253db5[_0x734e('0x83')]['Contacts'][_0x734e('0x4e')]){return _0x253db5[_0x734e('0x83')][_0x734e('0x84')][0x0];}return db[_0x734e('0x76')][_0x734e('0x5f')](_[_0x734e('0x1b')](_0x53c814[_0x734e('0x60')],{'firstName':_0x1cf6d5,[_0xc66229['mapKey']]:_0x1cf6d5,'phone':_0x1cf6d5,'ListId':_0x253db5[_0x734e('0x7b')]}));}})['then'](handleEntityNotFound(_0x277c51,null))['then'](function(_0x314395){if(_0x314395){_0x249cd0=_0x314395;return db[_0x734e('0x90')][_0x734e('0x5e')]({'where':{'ContactId':_0x249cd0['id'],'closed':![],'OpenchannelAccountId':_0x253db5['id']}})[_0x734e('0x23')](function(_0x55edda){if(_0x55edda){return[_0x55edda,![]];}return db[_0x734e('0x90')]['create']({'UserId':_0x53c814[_0x734e('0x61')]['id'],'ContactId':_0x249cd0['id'],'OpenchannelAccountId':_0x253db5['id'],'lastMsgDirection':_0x734e('0xbe'),'firstMsgDirection':_0x734e('0xbe'),'Messages':[_[_0x734e('0x56')](_0x53c814[_0x734e('0x60')],{'read':![],'body':_0x53c814[_0x734e('0x60')][_0x734e('0x60')],'OpenchannelAccountId':_0x253db5['id'],'UserId':_0x53c814['user']['id'],'ContactId':_0x249cd0['id']})]},{'include':[{'model':db[_0x734e('0x9b')],'as':_0x734e('0xbf')}]})['then'](function(_0x534a15){return[_0x534a15,!![]];});});}})['spread'](function(_0x359455,_0x40f62b){if(_0x40f62b){return _0x359455;}return db['OpenchannelMessage']['create'](_[_0x734e('0x56')](_0x53c814[_0x734e('0x60')],{'read':![],'body':_0x53c814['body']['body'],'OpenchannelAccountId':_0x253db5['id'],'OpenchannelInteractionId':_0x359455['id'],'UserId':_0x53c814[_0x734e('0x61')]['id'],'ContactId':_0x249cd0['id']}))[_0x734e('0x23')](function(_0x58fe13){_0x359455[_0x734e('0xc0')][_0x734e('0xbf')]=[];_0x359455[_0x734e('0xc0')][_0x734e('0xbf')][_0x734e('0x98')](_0x58fe13['dataValues']);return _0x359455;});});}})[_0x734e('0x23')](respondWithResult(_0x277c51,null))[_0x734e('0x2d')](handleError(_0x277c51,null));};
\ No newline at end of file
index e5b0a8a..2f91be6 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(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x3c81,0x102));var _0x13c8=function(_0x3b4b79,_0x2f518d){_0x3b4b79=_0x3b4b79-0x0;var _0x38c3fc=_0x3c81[_0x3b4b79];return _0x38c3fc;};'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 _0xaa88=['../../mysqldb','OpenchannelAccount','setMaxListeners','update','remove','hasOwnProperty','exports','events'];(function(_0x57bbf9,_0x253139){var _0xcba429=function(_0x22e885){while(--_0x22e885){_0x57bbf9['push'](_0x57bbf9['shift']());}};_0xcba429(++_0x253139);}(_0xaa88,0x137));var _0x8aa8=function(_0x33593e,_0x22ddd3){_0x33593e=_0x33593e-0x0;var _0x53db1a=_0xaa88[_0x33593e];return _0x53db1a;};'use strict';var EventEmitter=require(_0x8aa8('0x0'));var OpenchannelAccount=require(_0x8aa8('0x1'))['db'][_0x8aa8('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x8aa8('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x8aa8('0x4'),'afterDestroy':_0x8aa8('0x5')};function emitEvent(_0x43f7e4){return function(_0x3b2c88,_0x3e3b70,_0x350e8b){OpenchannelAccountEvents['emit'](_0x43f7e4+':'+_0x3b2c88['id'],_0x3b2c88);OpenchannelAccountEvents['emit'](_0x43f7e4,_0x3b2c88);_0x350e8b(null);};}for(var e in events){if(events[_0x8aa8('0x6')](e)){var event=events[e];OpenchannelAccount['hook'](e,emitEvent(event));}}module[_0x8aa8('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
index 23a008b..d06d444 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(_0x5be0c0,_0x4511b5){var _0xeb207e=function(_0x532df5){while(--_0x532df5){_0x5be0c0['push'](_0x5be0c0['shift']());}};_0xeb207e(++_0x4511b5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xa9e0[_0x2a6809];return _0x11c371;};'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(_0x25c6f9,_0x214d1a){var _0x5a975a=function(_0x21b709){while(--_0x21b709){_0x25c6f9['push'](_0x25c6f9['shift']());}};_0x5a975a(++_0x214d1a);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'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 7507d33..1e243a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee5b=['../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','./openchannelAccount.socket','register','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','moment','bluebird','ioredis'];(function(_0x5b3525,_0x4f1981){var _0x508855=function(_0xed03db){while(--_0xed03db){_0x5b3525['push'](_0x5b3525['shift']());}};_0x508855(++_0x4f1981);}(_0xee5b,0x1f4));var _0xbee5=function(_0x439469,_0x681017){_0x439469=_0x439469-0x0;var _0x50de10=_0xee5b[_0x439469];return _0x50de10;};'use strict';var _=require(_0xbee5('0x0'));var util=require('util');var moment=require(_0xbee5('0x1'));var BPromise=require(_0xbee5('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbee5('0x3'));var db=require(_0xbee5('0x4'))['db'];var utils=require(_0xbee5('0x5'));var logger=require(_0xbee5('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xbee5('0x7'));var client=jayson[_0xbee5('0x8')][_0xbee5('0x9')]({'port':0x232a});config[_0xbee5('0xa')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xbee5('0xb'))[_0xbee5('0xc')](socket);function respondWithRpcPromise(_0x45c2c7,_0x20f717,_0x4a15bf){return new BPromise(function(_0x143bd6,_0x305921){return client[_0xbee5('0xd')](_0x45c2c7,_0x4a15bf)[_0xbee5('0xe')](function(_0x16377d){logger[_0xbee5('0xf')](_0xbee5('0x10'),_0x20f717,_0xbee5('0x11'));logger[_0xbee5('0x12')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x20f717,_0xbee5('0x11'),JSON['stringify'](_0x16377d));if(_0x16377d[_0xbee5('0x13')]){if(_0x16377d[_0xbee5('0x13')][_0xbee5('0x14')]===0x1f4){logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x20f717,_0x16377d[_0xbee5('0x13')]['message']);return _0x305921(_0x16377d[_0xbee5('0x13')]['message']);}logger[_0xbee5('0x13')](_0xbee5('0x10'),_0x20f717,_0x16377d[_0xbee5('0x13')]['message']);return _0x143bd6(_0x16377d[_0xbee5('0x13')][_0xbee5('0x15')]);}else{logger['info'](_0xbee5('0x10'),_0x20f717,_0xbee5('0x11'));_0x143bd6(_0x16377d[_0xbee5('0x16')][_0xbee5('0x15')]);}})[_0xbee5('0x17')](function(_0xac51f5){logger[_0xbee5('0x13')](_0xbee5('0x10'),_0x20f717,_0xac51f5);_0x305921(_0xac51f5);});});}
\ No newline at end of file
+var _0x3c81=['bluebird','randomstring','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./openchannelAccount.socket','register','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util'];(function(_0xf26ba2,_0x37f264){var _0x41c717=function(_0x1ef9c8){while(--_0x1ef9c8){_0xf26ba2['push'](_0xf26ba2['shift']());}};_0x41c717(++_0x37f264);}(_0x3c81,0x102));var _0x13c8=function(_0x4e90f5,_0x1a2740){_0x4e90f5=_0x4e90f5-0x0;var _0x37cd19=_0x3c81[_0x4e90f5];return _0x37cd19;};'use strict';var _=require(_0x13c8('0x0'));var util=require(_0x13c8('0x1'));var moment=require('moment');var BPromise=require(_0x13c8('0x2'));var rs=require(_0x13c8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x13c8('0x4'));var config=require(_0x13c8('0x5'));var jayson=require(_0x13c8('0x6'));var client=jayson[_0x13c8('0x7')][_0x13c8('0x8')]({'port':0x232a});config[_0x13c8('0x9')]=_[_0x13c8('0xa')](config['redis'],{'host':_0x13c8('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x13c8('0x9')]));require(_0x13c8('0xc'))[_0x13c8('0xd')](socket);function respondWithRpcPromise(_0x30b4d6,_0xaa58b6,_0x13c717){return new BPromise(function(_0x29074d,_0x2ce95a){return client[_0x13c8('0xe')](_0x30b4d6,_0x13c717)[_0x13c8('0xf')](function(_0x3ca0a6){logger[_0x13c8('0x10')](_0x13c8('0x11'),_0xaa58b6,_0x13c8('0x12'));logger['debug'](_0x13c8('0x13'),_0xaa58b6,_0x13c8('0x12'),JSON[_0x13c8('0x14')](_0x3ca0a6));if(_0x3ca0a6[_0x13c8('0x15')]){if(_0x3ca0a6['error'][_0x13c8('0x16')]===0x1f4){logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0xaa58b6,_0x3ca0a6['error'][_0x13c8('0x17')]);return _0x2ce95a(_0x3ca0a6['error'][_0x13c8('0x17')]);}logger[_0x13c8('0x15')](_0x13c8('0x11'),_0xaa58b6,_0x3ca0a6[_0x13c8('0x15')]['message']);return _0x29074d(_0x3ca0a6[_0x13c8('0x15')][_0x13c8('0x17')]);}else{logger[_0x13c8('0x10')](_0x13c8('0x11'),_0xaa58b6,_0x13c8('0x12'));_0x29074d(_0x3ca0a6[_0x13c8('0x18')][_0x13c8('0x17')]);}})[_0x13c8('0x19')](function(_0x34fbc0){logger[_0x13c8('0x15')](_0x13c8('0x11'),_0xaa58b6,_0x34fbc0);_0x2ce95a(_0x34fbc0);});});}
\ No newline at end of file
index 511204e..8335dc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb32d=['update','emit','removeListener','register','length','openchannelAccount:','./openchannelAccount.events','save','remove'];(function(_0x3bd951,_0x345f34){var _0x14df2b=function(_0x2bbd09){while(--_0x2bbd09){_0x3bd951['push'](_0x3bd951['shift']());}};_0x14df2b(++_0x345f34);}(_0xb32d,0x1da));var _0xdb32=function(_0x4a1ec0,_0x26287b){_0x4a1ec0=_0x4a1ec0-0x0;var _0x49ab91=_0xb32d[_0x4a1ec0];return _0x49ab91;};'use strict';var OpenchannelAccountEvents=require(_0xdb32('0x0'));var events=[_0xdb32('0x1'),_0xdb32('0x2'),_0xdb32('0x3')];function createListener(_0x298769,_0x56a5af){return function(_0x56bb98){_0x56a5af[_0xdb32('0x4')](_0x298769,_0x56bb98);};}function removeListener(_0x2c5527,_0x581ceb){return function(){OpenchannelAccountEvents[_0xdb32('0x5')](_0x2c5527,_0x581ceb);};}exports[_0xdb32('0x6')]=function(_0x8d7bf4){for(var _0x1f4539=0x0,_0x6f4af0=events[_0xdb32('0x7')];_0x1f4539<_0x6f4af0;_0x1f4539++){var _0x5bb076=events[_0x1f4539];var _0x3b0995=createListener(_0xdb32('0x8')+_0x5bb076,_0x8d7bf4);OpenchannelAccountEvents['on'](_0x5bb076,_0x3b0995);}};
\ No newline at end of file
+var _0x6e77=['emit','openchannelAccount:','save'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x6e77,0xef));var _0x76e7=function(_0x188832,_0x49101d){_0x188832=_0x188832-0x0;var _0x2b990f=_0x6e77[_0x188832];return _0x2b990f;};'use strict';var OpenchannelAccountEvents=require('./openchannelAccount.events');var events=[_0x76e7('0x0'),'remove','update'];function createListener(_0x389715,_0x2aea10){return function(_0x57a8b3){_0x2aea10[_0x76e7('0x1')](_0x389715,_0x57a8b3);};}function removeListener(_0x305900,_0xcc6627){return function(){OpenchannelAccountEvents['removeListener'](_0x305900,_0xcc6627);};}exports['register']=function(_0x423b7a){for(var _0xf4d008=0x0,_0xac49d0=events['length'];_0xf4d008<_0xac49d0;_0xf4d008++){var _0x433ae3=events[_0xf4d008];var _0x464a99=createListener(_0x76e7('0x2')+_0x433ae3,_0x423b7a);OpenchannelAccountEvents['on'](_0x433ae3,_0x464a99);}};
\ No newline at end of file
index 6f727da..f9da8cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4abe=['../../config/environment','get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x11c573,_0x9e7c6e){var _0x6b72de=function(_0x2e8a61){while(--_0x2e8a61){_0x11c573['push'](_0x11c573['shift']());}};_0x6b72de(++_0x9e7c6e);}(_0x4abe,0x89));var _0xe4ab=function(_0x145418,_0x2bf0e2){_0x145418=_0x145418-0x0;var _0x2aa676=_0x4abe[_0x145418];return _0x2aa676;};'use strict';var multer=require('multer');var util=require(_0xe4ab('0x0'));var path=require(_0xe4ab('0x1'));var timeout=require('connect-timeout');var express=require(_0xe4ab('0x2'));var router=express[_0xe4ab('0x3')]();var fs_extra=require(_0xe4ab('0x4'));var auth=require(_0xe4ab('0x5'));var interaction=require(_0xe4ab('0x6'));var config=require(_0xe4ab('0x7'));var controller=require('./openchannelApplication.controller');router[_0xe4ab('0x8')]('/',auth[_0xe4ab('0x9')](),controller[_0xe4ab('0xa')]);router[_0xe4ab('0x8')](_0xe4ab('0xb'),auth[_0xe4ab('0x9')](),controller[_0xe4ab('0xc')]);router['post']('/',auth[_0xe4ab('0x9')](),controller[_0xe4ab('0xd')]);router[_0xe4ab('0xe')](_0xe4ab('0xb'),auth[_0xe4ab('0x9')](),controller[_0xe4ab('0xf')]);router[_0xe4ab('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xe4ab('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xa999=['../../components/auth/service','../../config/environment','./openchannelApplication.controller','get','index','show','post','isAuthenticated','put','/:id','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x4a951a,_0x1f3993){var _0xac1dce=function(_0x2fae68){while(--_0x2fae68){_0x4a951a['push'](_0x4a951a['shift']());}};_0xac1dce(++_0x1f3993);}(_0xa999,0x1e8));var _0x9a99=function(_0x2ac972,_0x56abda){_0x2ac972=_0x2ac972-0x0;var _0x10739f=_0xa999[_0x2ac972];return _0x10739f;};'use strict';var multer=require(_0x9a99('0x0'));var util=require(_0x9a99('0x1'));var path=require('path');var timeout=require(_0x9a99('0x2'));var express=require(_0x9a99('0x3'));var router=express[_0x9a99('0x4')]();var fs_extra=require(_0x9a99('0x5'));var auth=require(_0x9a99('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x9a99('0x7'));var controller=require(_0x9a99('0x8'));router[_0x9a99('0x9')]('/',auth['isAuthenticated'](),controller[_0x9a99('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x9a99('0xb')]);router[_0x9a99('0xc')]('/',auth[_0x9a99('0xd')](),controller['create']);router[_0x9a99('0xe')](_0x9a99('0xf'),auth['isAuthenticated'](),controller[_0x9a99('0x10')]);router[_0x9a99('0x11')]('/:id',auth[_0x9a99('0xd')](),controller['destroy']);module[_0x9a99('0x12')]=router;
\ No newline at end of file
index 757f7dd..91c56c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64e1=['INTEGER','STRING','TEXT','sequelize','exports'];(function(_0x36dbaa,_0x10eb34){var _0x57c073=function(_0x1c7f71){while(--_0x1c7f71){_0x36dbaa['push'](_0x36dbaa['shift']());}};_0x57c073(++_0x10eb34);}(_0x64e1,0x157));var _0x164e=function(_0x36ea6d,_0x4941da){_0x36ea6d=_0x36ea6d-0x0;var _0x544ff7=_0x64e1[_0x36ea6d];return _0x544ff7;};'use strict';var Sequelize=require(_0x164e('0x0'));module[_0x164e('0x1')]={'priority':{'type':Sequelize[_0x164e('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x164e('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x164e('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x164e('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xb3b4=['exports','INTEGER','STRING','noop','TEXT','*,*,*,*','sequelize'];(function(_0x36b8fd,_0x5aa86b){var _0x255c31=function(_0x497a96){while(--_0x497a96){_0x36b8fd['push'](_0x36b8fd['shift']());}};_0x255c31(++_0x5aa86b);}(_0xb3b4,0xa7));var _0x4b3b=function(_0x2cf2e9,_0xd58ea1){_0x2cf2e9=_0x2cf2e9-0x0;var _0xd3670d=_0xb3b4[_0x2cf2e9];return _0xd3670d;};'use strict';var Sequelize=require(_0x4b3b('0x0'));module[_0x4b3b('0x1')]={'priority':{'type':Sequelize[_0x4b3b('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x4b3b('0x3')],'allowNull':![],'defaultValue':_0x4b3b('0x4')},'appdata':{'type':Sequelize[_0x4b3b('0x5')]()},'description':{'type':Sequelize[_0x4b3b('0x3')]},'interval':{'type':Sequelize[_0x4b3b('0x3')],'defaultValue':_0x4b3b('0x6')}};
\ No newline at end of file
index 4987701..2f3d7ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcdb=['status','end','undefined','count','offset','set','Content-Range','json','apply','save','destroy','then','error','name','send','index','OpenchannelApplication','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','map','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','body','update','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus'];(function(_0x442710,_0x2e7c97){var _0x293f2d=function(_0x28804e){while(--_0x28804e){_0x442710['push'](_0x442710['shift']());}};_0x293f2d(++_0x2e7c97);}(_0xfcdb,0x1b9));var _0xbfcd=function(_0x1f3cac,_0x354c4c){_0x1f3cac=_0x1f3cac-0x0;var _0x248e80=_0xfcdb[_0x1f3cac];return _0x248e80;};'use strict';var emlformat=require(_0xbfcd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbfcd('0x1'));var jsonpatch=require(_0xbfcd('0x2'));var rp=require(_0xbfcd('0x3'));var moment=require(_0xbfcd('0x4'));var BPromise=require(_0xbfcd('0x5'));var Mustache=require(_0xbfcd('0x6'));var util=require(_0xbfcd('0x7'));var path=require(_0xbfcd('0x8'));var sox=require(_0xbfcd('0x9'));var csv=require(_0xbfcd('0xa'));var ejs=require(_0xbfcd('0xb'));var fs=require('fs');var fs_extra=require(_0xbfcd('0xc'));var _=require(_0xbfcd('0xd'));var squel=require(_0xbfcd('0xe'));var crypto=require(_0xbfcd('0xf'));var jsforce=require(_0xbfcd('0x10'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xbfcd('0x11'));var authService=require(_0xbfcd('0x12'));var qs=require(_0xbfcd('0x13'));var as=require(_0xbfcd('0x14'));var hardwareService=require(_0xbfcd('0x15'));var logger=require(_0xbfcd('0x16'))(_0xbfcd('0x17'));var utils=require(_0xbfcd('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xbfcd('0x19'))['db'];function respondWithStatusCode(_0x3773d8,_0x187b31){_0x187b31=_0x187b31||0xcc;return function(_0x5fd926){if(_0x5fd926){return _0x3773d8[_0xbfcd('0x1a')](_0x187b31);}return _0x3773d8[_0xbfcd('0x1b')](_0x187b31)[_0xbfcd('0x1c')]();};}function respondWithResult(_0x326241,_0x2a2bed){_0x2a2bed=_0x2a2bed||0xc8;return function(_0x1d26c2){if(_0x1d26c2){return _0x326241[_0xbfcd('0x1b')](_0x2a2bed)['json'](_0x1d26c2);}};}function respondWithFilteredResult(_0x38b70f,_0x5307e6){return function(_0x39edc4){if(_0x39edc4){var _0x22413c=typeof _0x5307e6['offset']===_0xbfcd('0x1d')&&typeof _0x5307e6['limit']===_0xbfcd('0x1d');var _0x41b24f=_0x39edc4[_0xbfcd('0x1e')];var _0x578644=_0x22413c?0x0:_0x5307e6[_0xbfcd('0x1f')];var _0x596b3a=_0x22413c?_0x39edc4['count']:_0x5307e6[_0xbfcd('0x1f')]+_0x5307e6['limit'];var _0xed615a;if(_0x596b3a>=_0x41b24f){_0x596b3a=_0x41b24f;_0xed615a=0xc8;}else{_0xed615a=0xce;}_0x38b70f[_0xbfcd('0x1b')](_0xed615a);return _0x38b70f[_0xbfcd('0x20')](_0xbfcd('0x21'),_0x578644+'-'+_0x596b3a+'/'+_0x41b24f)[_0xbfcd('0x22')](_0x39edc4);}return null;};}function patchUpdates(_0x53370f){return function(_0x479c8e){try{jsonpatch[_0xbfcd('0x23')](_0x479c8e,_0x53370f,!![]);}catch(_0x37a576){return BPromise['reject'](_0x37a576);}return _0x479c8e[_0xbfcd('0x24')]();};}function saveUpdates(_0x268511,_0x125c0e){return function(_0xf89b11){if(_0xf89b11){return _0xf89b11['update'](_0x268511)['then'](function(_0x4d585d){return _0x4d585d;});}return null;};}function removeEntity(_0x2f71c3,_0x429258){return function(_0x24b4b3){if(_0x24b4b3){return _0x24b4b3[_0xbfcd('0x25')]()[_0xbfcd('0x26')](function(){_0x2f71c3[_0xbfcd('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d23e3,_0x3972df){return function(_0x5e2681){if(!_0x5e2681){_0x4d23e3[_0xbfcd('0x1a')](0x194);}return _0x5e2681;};}function handleError(_0x91573b,_0xd312a){_0xd312a=_0xd312a||0x1f4;return function(_0x4641eb){logger[_0xbfcd('0x27')](_0x4641eb['stack']);if(_0x4641eb[_0xbfcd('0x28')]){delete _0x4641eb['name'];}_0x91573b[_0xbfcd('0x1b')](_0xd312a)[_0xbfcd('0x29')](_0x4641eb);};}exports[_0xbfcd('0x2a')]=function(_0x545b00,_0x3895c0){var _0x4df9cd={},_0x1cec14={},_0x798468={'count':0x0,'rows':[]};var _0x5c5270=_['map'](db[_0xbfcd('0x2b')][_0xbfcd('0x2c')],function(_0x48a1ba){return{'name':_0x48a1ba[_0xbfcd('0x2d')],'type':_0x48a1ba['type'][_0xbfcd('0x2e')]};});_0x1cec14[_0xbfcd('0x2f')]=_['map'](_0x5c5270,_0xbfcd('0x28'));_0x1cec14[_0xbfcd('0x30')]=_[_0xbfcd('0x31')](_0x545b00[_0xbfcd('0x30')]);_0x1cec14[_0xbfcd('0x32')]=_[_0xbfcd('0x33')](_0x1cec14['model'],_0x1cec14[_0xbfcd('0x30')]);_0x4df9cd[_0xbfcd('0x34')]=_[_0xbfcd('0x33')](_0x1cec14[_0xbfcd('0x2f')],qs[_0xbfcd('0x35')](_0x545b00[_0xbfcd('0x30')][_0xbfcd('0x35')]));_0x4df9cd[_0xbfcd('0x34')]=_0x4df9cd['attributes'][_0xbfcd('0x36')]?_0x4df9cd[_0xbfcd('0x34')]:_0x1cec14['model'];if(!_0x545b00[_0xbfcd('0x30')][_0xbfcd('0x37')](_0xbfcd('0x38'))){_0x4df9cd[_0xbfcd('0x39')]=qs[_0xbfcd('0x39')](_0x545b00[_0xbfcd('0x30')][_0xbfcd('0x39')]);_0x4df9cd[_0xbfcd('0x1f')]=qs[_0xbfcd('0x1f')](_0x545b00['query'][_0xbfcd('0x1f')]);}_0x4df9cd[_0xbfcd('0x3a')]=qs[_0xbfcd('0x3b')](_0x545b00[_0xbfcd('0x30')][_0xbfcd('0x3b')]);_0x4df9cd[_0xbfcd('0x3c')]=qs['filters'](_[_0xbfcd('0x3d')](_0x545b00[_0xbfcd('0x30')],_0x1cec14[_0xbfcd('0x32')]),_0x5c5270);if(_0x545b00[_0xbfcd('0x30')][_0xbfcd('0x3e')]){_0x4df9cd[_0xbfcd('0x3c')]=_[_0xbfcd('0x3f')](_0x4df9cd[_0xbfcd('0x3c')],{'$or':_[_0xbfcd('0x40')](_0x5c5270,function(_0x2a7a8a){if(_0x2a7a8a[_0xbfcd('0x41')]!==_0xbfcd('0x42')){var _0x3d536e={};_0x3d536e[_0x2a7a8a[_0xbfcd('0x28')]]={'$like':'%'+_0x545b00[_0xbfcd('0x30')][_0xbfcd('0x3e')]+'%'};return _0x3d536e;}})});}_0x4df9cd=_['merge']({},_0x4df9cd,_0x545b00[_0xbfcd('0x43')]);var _0x3a8b90={'where':_0x4df9cd[_0xbfcd('0x3c')]};return db['OpenchannelApplication'][_0xbfcd('0x1e')](_0x3a8b90)[_0xbfcd('0x26')](function(_0x137177){_0x798468['count']=_0x137177;if(_0x545b00[_0xbfcd('0x30')][_0xbfcd('0x44')]){_0x4df9cd[_0xbfcd('0x45')]=[{'all':!![]}];}return db[_0xbfcd('0x2b')][_0xbfcd('0x46')](_0x4df9cd);})[_0xbfcd('0x26')](function(_0x3733f6){_0x798468[_0xbfcd('0x47')]=_0x3733f6;return _0x798468;})[_0xbfcd('0x26')](respondWithFilteredResult(_0x3895c0,_0x4df9cd))[_0xbfcd('0x48')](handleError(_0x3895c0,null));};exports[_0xbfcd('0x49')]=function(_0x256906,_0x256396){var _0x2bf80d={'raw':!![],'where':{'id':_0x256906[_0xbfcd('0x4a')]['id']}},_0x5d7996={};_0x5d7996[_0xbfcd('0x2f')]=_[_0xbfcd('0x31')](db[_0xbfcd('0x2b')]['rawAttributes']);_0x5d7996[_0xbfcd('0x30')]=_[_0xbfcd('0x31')](_0x256906[_0xbfcd('0x30')]);_0x5d7996[_0xbfcd('0x32')]=_[_0xbfcd('0x33')](_0x5d7996[_0xbfcd('0x2f')],_0x5d7996[_0xbfcd('0x30')]);_0x2bf80d['attributes']=_[_0xbfcd('0x33')](_0x5d7996['model'],qs['fields'](_0x256906[_0xbfcd('0x30')][_0xbfcd('0x35')]));_0x2bf80d[_0xbfcd('0x34')]=_0x2bf80d[_0xbfcd('0x34')][_0xbfcd('0x36')]?_0x2bf80d['attributes']:_0x5d7996[_0xbfcd('0x2f')];if(_0x256906['query'][_0xbfcd('0x44')]){_0x2bf80d[_0xbfcd('0x45')]=[{'all':!![]}];}_0x2bf80d=_[_0xbfcd('0x3f')]({},_0x2bf80d,_0x256906[_0xbfcd('0x43')]);return db[_0xbfcd('0x2b')][_0xbfcd('0x4b')](_0x2bf80d)[_0xbfcd('0x26')](handleEntityNotFound(_0x256396,null))[_0xbfcd('0x26')](respondWithResult(_0x256396,null))[_0xbfcd('0x48')](handleError(_0x256396,null));};exports['create']=function(_0x5d4437,_0x21e1ec){return db[_0xbfcd('0x2b')]['create'](_0x5d4437[_0xbfcd('0x4c')],{})[_0xbfcd('0x26')](respondWithResult(_0x21e1ec,0xc9))[_0xbfcd('0x48')](handleError(_0x21e1ec,null));};exports[_0xbfcd('0x4d')]=function(_0x22913c,_0x5f415e){if(_0x22913c[_0xbfcd('0x4c')]['id']){delete _0x22913c[_0xbfcd('0x4c')]['id'];}return db[_0xbfcd('0x2b')][_0xbfcd('0x4b')]({'where':{'id':_0x22913c[_0xbfcd('0x4a')]['id']}})[_0xbfcd('0x26')](handleEntityNotFound(_0x5f415e,null))[_0xbfcd('0x26')](saveUpdates(_0x22913c[_0xbfcd('0x4c')],null))[_0xbfcd('0x26')](respondWithResult(_0x5f415e,null))['catch'](handleError(_0x5f415e,null));};exports[_0xbfcd('0x25')]=function(_0x253de1,_0x12bea4){return db[_0xbfcd('0x2b')]['find']({'where':{'id':_0x253de1[_0xbfcd('0x4a')]['id']}})['then'](handleEntityNotFound(_0x12bea4,null))['then'](removeEntity(_0x12bea4,null))['catch'](handleError(_0x12bea4,null));};
\ No newline at end of file
+var _0x5cad=['length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','show','params','find','catch','create','body','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','reject','save','update','then','destroy','error','name','send','index','OpenchannelApplication','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes'];(function(_0xb666b2,_0x29c739){var _0x4743c9=function(_0x2acbd5){while(--_0x2acbd5){_0xb666b2['push'](_0xb666b2['shift']());}};_0x4743c9(++_0x29c739);}(_0x5cad,0xe8));var _0xd5ca=function(_0x1adda4,_0x537884){_0x1adda4=_0x1adda4-0x0;var _0x4f9025=_0x5cad[_0x1adda4];return _0x4f9025;};'use strict';var emlformat=require(_0xd5ca('0x0'));var rimraf=require(_0xd5ca('0x1'));var zipdir=require(_0xd5ca('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd5ca('0x3'));var BPromise=require(_0xd5ca('0x4'));var Mustache=require(_0xd5ca('0x5'));var util=require(_0xd5ca('0x6'));var path=require('path');var sox=require(_0xd5ca('0x7'));var csv=require('to-csv');var ejs=require(_0xd5ca('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd5ca('0x9'));var squel=require(_0xd5ca('0xa'));var crypto=require('crypto');var jsforce=require(_0xd5ca('0xb'));var deskjs=require(_0xd5ca('0xc'));var toCsv=require(_0xd5ca('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd5ca('0xe'));var authService=require(_0xd5ca('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xd5ca('0x10'));var hardwareService=require(_0xd5ca('0x11'));var logger=require('../../config/logger')(_0xd5ca('0x12'));var utils=require(_0xd5ca('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xd5ca('0x14'));var db=require(_0xd5ca('0x15'))['db'];function respondWithStatusCode(_0x15a217,_0x20a84a){_0x20a84a=_0x20a84a||0xcc;return function(_0x43c87b){if(_0x43c87b){return _0x15a217['sendStatus'](_0x20a84a);}return _0x15a217[_0xd5ca('0x16')](_0x20a84a)[_0xd5ca('0x17')]();};}function respondWithResult(_0x2fb99f,_0x461e87){_0x461e87=_0x461e87||0xc8;return function(_0xdddfe4){if(_0xdddfe4){return _0x2fb99f[_0xd5ca('0x16')](_0x461e87)[_0xd5ca('0x18')](_0xdddfe4);}};}function respondWithFilteredResult(_0x517d96,_0x4b3863){return function(_0x2a7ded){if(_0x2a7ded){var _0x401c78=typeof _0x4b3863[_0xd5ca('0x19')]===_0xd5ca('0x1a')&&typeof _0x4b3863['limit']===_0xd5ca('0x1a');var _0x1b1fef=_0x2a7ded[_0xd5ca('0x1b')];var _0x5285c8=_0x401c78?0x0:_0x4b3863['offset'];var _0x53209f=_0x401c78?_0x2a7ded[_0xd5ca('0x1b')]:_0x4b3863[_0xd5ca('0x19')]+_0x4b3863[_0xd5ca('0x1c')];var _0x1abee4;if(_0x53209f>=_0x1b1fef){_0x53209f=_0x1b1fef;_0x1abee4=0xc8;}else{_0x1abee4=0xce;}_0x517d96[_0xd5ca('0x16')](_0x1abee4);return _0x517d96[_0xd5ca('0x1d')]('Content-Range',_0x5285c8+'-'+_0x53209f+'/'+_0x1b1fef)[_0xd5ca('0x18')](_0x2a7ded);}return null;};}function patchUpdates(_0x4548dc){return function(_0xb26a8a){try{jsonpatch[_0xd5ca('0x1e')](_0xb26a8a,_0x4548dc,!![]);}catch(_0x46b173){return BPromise[_0xd5ca('0x1f')](_0x46b173);}return _0xb26a8a[_0xd5ca('0x20')]();};}function saveUpdates(_0x13ec0d,_0x44c751){return function(_0xeb1636){if(_0xeb1636){return _0xeb1636[_0xd5ca('0x21')](_0x13ec0d)[_0xd5ca('0x22')](function(_0xd17700){return _0xd17700;});}return null;};}function removeEntity(_0x4eae3a,_0x30d520){return function(_0x241011){if(_0x241011){return _0x241011[_0xd5ca('0x23')]()['then'](function(){_0x4eae3a[_0xd5ca('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4df7d1,_0x2898aa){return function(_0x16c487){if(!_0x16c487){_0x4df7d1['sendStatus'](0x194);}return _0x16c487;};}function handleError(_0x4218c4,_0x57568f){_0x57568f=_0x57568f||0x1f4;return function(_0x414fa2){logger[_0xd5ca('0x24')](_0x414fa2['stack']);if(_0x414fa2[_0xd5ca('0x25')]){delete _0x414fa2[_0xd5ca('0x25')];}_0x4218c4[_0xd5ca('0x16')](_0x57568f)[_0xd5ca('0x26')](_0x414fa2);};}exports[_0xd5ca('0x27')]=function(_0x1a0200,_0x33d9e1){var _0x586f65={},_0x299879={},_0x4ef155={'count':0x0,'rows':[]};var _0x17cdb8=_['map'](db[_0xd5ca('0x28')][_0xd5ca('0x29')],function(_0x5a3e66){return{'name':_0x5a3e66[_0xd5ca('0x2a')],'type':_0x5a3e66[_0xd5ca('0x2b')][_0xd5ca('0x2c')]};});_0x299879[_0xd5ca('0x2d')]=_[_0xd5ca('0x2e')](_0x17cdb8,_0xd5ca('0x25'));_0x299879[_0xd5ca('0x2f')]=_[_0xd5ca('0x30')](_0x1a0200[_0xd5ca('0x2f')]);_0x299879[_0xd5ca('0x31')]=_[_0xd5ca('0x32')](_0x299879[_0xd5ca('0x2d')],_0x299879[_0xd5ca('0x2f')]);_0x586f65['attributes']=_[_0xd5ca('0x32')](_0x299879[_0xd5ca('0x2d')],qs['fields'](_0x1a0200['query']['fields']));_0x586f65[_0xd5ca('0x33')]=_0x586f65[_0xd5ca('0x33')][_0xd5ca('0x34')]?_0x586f65[_0xd5ca('0x33')]:_0x299879[_0xd5ca('0x2d')];if(!_0x1a0200[_0xd5ca('0x2f')][_0xd5ca('0x35')](_0xd5ca('0x36'))){_0x586f65[_0xd5ca('0x1c')]=qs[_0xd5ca('0x1c')](_0x1a0200[_0xd5ca('0x2f')][_0xd5ca('0x1c')]);_0x586f65[_0xd5ca('0x19')]=qs[_0xd5ca('0x19')](_0x1a0200['query'][_0xd5ca('0x19')]);}_0x586f65['order']=qs[_0xd5ca('0x37')](_0x1a0200[_0xd5ca('0x2f')]['sort']);_0x586f65['where']=qs[_0xd5ca('0x31')](_[_0xd5ca('0x38')](_0x1a0200[_0xd5ca('0x2f')],_0x299879[_0xd5ca('0x31')]),_0x17cdb8);if(_0x1a0200[_0xd5ca('0x2f')][_0xd5ca('0x39')]){_0x586f65[_0xd5ca('0x3a')]=_[_0xd5ca('0x3b')](_0x586f65[_0xd5ca('0x3a')],{'$or':_['map'](_0x17cdb8,function(_0x3e98b8){if(_0x3e98b8[_0xd5ca('0x2b')]!==_0xd5ca('0x3c')){var _0x4bcd72={};_0x4bcd72[_0x3e98b8[_0xd5ca('0x25')]]={'$like':'%'+_0x1a0200[_0xd5ca('0x2f')]['filter']+'%'};return _0x4bcd72;}})});}_0x586f65=_[_0xd5ca('0x3b')]({},_0x586f65,_0x1a0200[_0xd5ca('0x3d')]);var _0x367451={'where':_0x586f65[_0xd5ca('0x3a')]};return db[_0xd5ca('0x28')][_0xd5ca('0x1b')](_0x367451)[_0xd5ca('0x22')](function(_0x5275f3){_0x4ef155[_0xd5ca('0x1b')]=_0x5275f3;if(_0x1a0200[_0xd5ca('0x2f')][_0xd5ca('0x3e')]){_0x586f65[_0xd5ca('0x3f')]=[{'all':!![]}];}return db[_0xd5ca('0x28')]['findAll'](_0x586f65);})[_0xd5ca('0x22')](function(_0x175d79){_0x4ef155[_0xd5ca('0x40')]=_0x175d79;return _0x4ef155;})['then'](respondWithFilteredResult(_0x33d9e1,_0x586f65))['catch'](handleError(_0x33d9e1,null));};exports[_0xd5ca('0x41')]=function(_0x2e3f23,_0x2b8d34){var _0x433b37={'raw':!![],'where':{'id':_0x2e3f23[_0xd5ca('0x42')]['id']}},_0x21741f={};_0x21741f[_0xd5ca('0x2d')]=_['keys'](db[_0xd5ca('0x28')][_0xd5ca('0x29')]);_0x21741f['query']=_[_0xd5ca('0x30')](_0x2e3f23[_0xd5ca('0x2f')]);_0x21741f[_0xd5ca('0x31')]=_[_0xd5ca('0x32')](_0x21741f[_0xd5ca('0x2d')],_0x21741f[_0xd5ca('0x2f')]);_0x433b37[_0xd5ca('0x33')]=_[_0xd5ca('0x32')](_0x21741f[_0xd5ca('0x2d')],qs['fields'](_0x2e3f23[_0xd5ca('0x2f')]['fields']));_0x433b37['attributes']=_0x433b37[_0xd5ca('0x33')][_0xd5ca('0x34')]?_0x433b37[_0xd5ca('0x33')]:_0x21741f[_0xd5ca('0x2d')];if(_0x2e3f23['query'][_0xd5ca('0x3e')]){_0x433b37[_0xd5ca('0x3f')]=[{'all':!![]}];}_0x433b37=_[_0xd5ca('0x3b')]({},_0x433b37,_0x2e3f23[_0xd5ca('0x3d')]);return db[_0xd5ca('0x28')][_0xd5ca('0x43')](_0x433b37)['then'](handleEntityNotFound(_0x2b8d34,null))[_0xd5ca('0x22')](respondWithResult(_0x2b8d34,null))[_0xd5ca('0x44')](handleError(_0x2b8d34,null));};exports[_0xd5ca('0x45')]=function(_0x36e02f,_0x25afaf){return db['OpenchannelApplication'][_0xd5ca('0x45')](_0x36e02f[_0xd5ca('0x46')],{})[_0xd5ca('0x22')](respondWithResult(_0x25afaf,0xc9))[_0xd5ca('0x44')](handleError(_0x25afaf,null));};exports[_0xd5ca('0x21')]=function(_0x23edda,_0x47a9d8){if(_0x23edda[_0xd5ca('0x46')]['id']){delete _0x23edda[_0xd5ca('0x46')]['id'];}return db[_0xd5ca('0x28')]['find']({'where':{'id':_0x23edda[_0xd5ca('0x42')]['id']}})['then'](handleEntityNotFound(_0x47a9d8,null))['then'](saveUpdates(_0x23edda[_0xd5ca('0x46')],null))[_0xd5ca('0x22')](respondWithResult(_0x47a9d8,null))[_0xd5ca('0x44')](handleError(_0x47a9d8,null));};exports[_0xd5ca('0x23')]=function(_0x4acaa2,_0x15fcab){return db['OpenchannelApplication'][_0xd5ca('0x43')]({'where':{'id':_0x4acaa2[_0xd5ca('0x42')]['id']}})[_0xd5ca('0x22')](handleEntityNotFound(_0x15fcab,null))[_0xd5ca('0x22')](removeEntity(_0x15fcab,null))[_0xd5ca('0x44')](handleError(_0x15fcab,null));};
\ No newline at end of file
index 6c05050..e538dcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x574d=['bluebird','path','../../config/environment','exports','define','OpenchannelApplication','openchannel_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x574d,0xbf));var _0xd574=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0x574d[_0x51020b];return _0x371e47;};'use strict';var _=require(_0xd574('0x0'));var util=require(_0xd574('0x1'));var logger=require(_0xd574('0x2'))(_0xd574('0x3'));var moment=require('moment');var BPromise=require(_0xd574('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd574('0x5'));var rimraf=require('rimraf');var config=require(_0xd574('0x6'));var attributes=require('./openchannelApplication.attributes');module[_0xd574('0x7')]=function(_0x5779d3,_0x27fadc){return _0x5779d3[_0xd574('0x8')](_0xd574('0x9'),attributes,{'tableName':_0xd574('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xd574('0xb'),'collate':_0xd574('0xc')});};
\ No newline at end of file
+var _0xd924=['exports','define','openchannel_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./openchannelApplication.attributes'];(function(_0x4ec3fc,_0x3a79e4){var _0x531628=function(_0x1e6443){while(--_0x1e6443){_0x4ec3fc['push'](_0x4ec3fc['shift']());}};_0x531628(++_0x3a79e4);}(_0xd924,0x13c));var _0x4d92=function(_0x3e0b78,_0x1618fd){_0x3e0b78=_0x3e0b78-0x0;var _0x12832f=_0xd924[_0x3e0b78];return _0x12832f;};'use strict';var _=require(_0x4d92('0x0'));var util=require(_0x4d92('0x1'));var logger=require(_0x4d92('0x2'))(_0x4d92('0x3'));var moment=require(_0x4d92('0x4'));var BPromise=require(_0x4d92('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4d92('0x6'));var rimraf=require(_0x4d92('0x7'));var config=require('../../config/environment');var attributes=require(_0x4d92('0x8'));module[_0x4d92('0x9')]=function(_0x5e48b6,_0x277548){return _0x5e48b6[_0x4d92('0xa')]('OpenchannelApplication',attributes,{'tableName':_0x4d92('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x4d92('0xc')});};
\ No newline at end of file
index d620e80..59f628e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4f5=['jayson/promise','client','request','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','UpdateOpenchannelApplication','update','body','options','raw','where','limit','catch','lodash','moment','bluebird','../../config/logger','../../config/environment'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0xf4f5,0x124));var _0x5f4f=function(_0x2fbfd8,_0x502bf7){_0x2fbfd8=_0x2fbfd8-0x0;var _0x2c9194=_0xf4f5[_0x2fbfd8];return _0x2c9194;};'use strict';var _=require(_0x5f4f('0x0'));var util=require('util');var moment=require(_0x5f4f('0x1'));var BPromise=require(_0x5f4f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5f4f('0x3'))('rpc');var config=require(_0x5f4f('0x4'));var jayson=require(_0x5f4f('0x5'));var client=jayson[_0x5f4f('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5090e8,_0x355191,_0x48e87a){return new BPromise(function(_0x2d42fa,_0x922ded){return client[_0x5f4f('0x7')](_0x5090e8,_0x48e87a)[_0x5f4f('0x8')](function(_0x210929){logger[_0x5f4f('0x9')](_0x5f4f('0xa'),_0x355191,_0x5f4f('0xb'));logger[_0x5f4f('0xc')](_0x5f4f('0xd'),_0x355191,_0x5f4f('0xb'),JSON[_0x5f4f('0xe')](_0x210929));if(_0x210929[_0x5f4f('0xf')]){if(_0x210929[_0x5f4f('0xf')][_0x5f4f('0x10')]===0x1f4){logger[_0x5f4f('0xf')](_0x5f4f('0xa'),_0x355191,_0x210929[_0x5f4f('0xf')]['message']);return _0x922ded(_0x210929[_0x5f4f('0xf')][_0x5f4f('0x11')]);}logger[_0x5f4f('0xf')](_0x5f4f('0xa'),_0x355191,_0x210929[_0x5f4f('0xf')][_0x5f4f('0x11')]);return _0x2d42fa(_0x210929['error'][_0x5f4f('0x11')]);}else{logger[_0x5f4f('0x9')]('OpenchannelApplication,\x20%s,\x20%s',_0x355191,'request\x20sent');_0x2d42fa(_0x210929[_0x5f4f('0x12')][_0x5f4f('0x11')]);}})['catch'](function(_0x19769b){logger[_0x5f4f('0xf')](_0x5f4f('0xa'),_0x355191,_0x19769b);_0x922ded(_0x19769b);});});}exports[_0x5f4f('0x13')]=function(_0x3d98a5){var _0x4c8270=this;return new Promise(function(_0x1b7bd8,_0x3f0880){return db['OpenchannelApplication'][_0x5f4f('0x14')](_0x3d98a5[_0x5f4f('0x15')],{'raw':_0x3d98a5['options']?_0x3d98a5[_0x5f4f('0x16')][_0x5f4f('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3d98a5[_0x5f4f('0x16')]?_0x3d98a5[_0x5f4f('0x16')][_0x5f4f('0x18')]||null:null,'attributes':_0x3d98a5[_0x5f4f('0x16')]?_0x3d98a5['options']['attributes']||null:null,'limit':_0x3d98a5['options']?_0x3d98a5[_0x5f4f('0x16')][_0x5f4f('0x19')]||null:null})[_0x5f4f('0x8')](function(_0x263702){logger[_0x5f4f('0x9')](_0x5f4f('0x13'),_0x3d98a5);logger['debug'](_0x5f4f('0x13'),_0x3d98a5,JSON[_0x5f4f('0xe')](_0x263702));_0x1b7bd8(_0x263702);})[_0x5f4f('0x1a')](function(_0x1d5ac4){logger[_0x5f4f('0xf')](_0x5f4f('0x13'),_0x1d5ac4[_0x5f4f('0x11')],_0x3d98a5);_0x3f0880(_0x4c8270['error'](0x1f4,_0x1d5ac4[_0x5f4f('0x11')]));});});};
\ No newline at end of file
+var _0x2fe4=['../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','OpenchannelApplication,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','OpenchannelApplication','update','body','options','raw','where','limit','UpdateOpenchannelApplication','catch','util','randomstring','ioredis','../../mysqldb'];(function(_0x20ca5e,_0x28d516){var _0x43382a=function(_0x48dc1a){while(--_0x48dc1a){_0x20ca5e['push'](_0x20ca5e['shift']());}};_0x43382a(++_0x28d516);}(_0x2fe4,0xec));var _0x42fe=function(_0x563129,_0xda72cb){_0x563129=_0x563129-0x0;var _0x4f93fb=_0x2fe4[_0x563129];return _0x4f93fb;};'use strict';var _=require('lodash');var util=require(_0x42fe('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x42fe('0x1'));var fs=require('fs');var Redis=require(_0x42fe('0x2'));var db=require(_0x42fe('0x3'))['db'];var utils=require(_0x42fe('0x4'));var logger=require(_0x42fe('0x5'))(_0x42fe('0x6'));var config=require(_0x42fe('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x42fe('0x8')][_0x42fe('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x43fb83,_0x1ebc41,_0xa0746f){return new BPromise(function(_0x1293e7,_0x3f60bb){return client[_0x42fe('0xa')](_0x43fb83,_0xa0746f)[_0x42fe('0xb')](function(_0x2eacae){logger[_0x42fe('0xc')](_0x42fe('0xd'),_0x1ebc41,'request\x20sent');logger[_0x42fe('0xe')]('OpenchannelApplication,\x20%s,\x20%s,\x20%s',_0x1ebc41,'request\x20sent',JSON[_0x42fe('0xf')](_0x2eacae));if(_0x2eacae[_0x42fe('0x10')]){if(_0x2eacae[_0x42fe('0x10')][_0x42fe('0x11')]===0x1f4){logger[_0x42fe('0x10')]('OpenchannelApplication,\x20%s,\x20%s',_0x1ebc41,_0x2eacae[_0x42fe('0x10')][_0x42fe('0x12')]);return _0x3f60bb(_0x2eacae['error'][_0x42fe('0x12')]);}logger[_0x42fe('0x10')](_0x42fe('0xd'),_0x1ebc41,_0x2eacae['error']['message']);return _0x1293e7(_0x2eacae[_0x42fe('0x10')]['message']);}else{logger[_0x42fe('0xc')](_0x42fe('0xd'),_0x1ebc41,_0x42fe('0x13'));_0x1293e7(_0x2eacae[_0x42fe('0x14')][_0x42fe('0x12')]);}})['catch'](function(_0x11e8e9){logger[_0x42fe('0x10')]('OpenchannelApplication,\x20%s,\x20%s',_0x1ebc41,_0x11e8e9);_0x3f60bb(_0x11e8e9);});});}exports['UpdateOpenchannelApplication']=function(_0x77a8c){var _0x5f6152=this;return new Promise(function(_0xe4418b,_0x26effe){return db[_0x42fe('0x15')][_0x42fe('0x16')](_0x77a8c[_0x42fe('0x17')],{'raw':_0x77a8c['options']?_0x77a8c[_0x42fe('0x18')][_0x42fe('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x77a8c[_0x42fe('0x18')]?_0x77a8c[_0x42fe('0x18')][_0x42fe('0x1a')]||null:null,'attributes':_0x77a8c['options']?_0x77a8c['options']['attributes']||null:null,'limit':_0x77a8c[_0x42fe('0x18')]?_0x77a8c['options'][_0x42fe('0x1b')]||null:null})[_0x42fe('0xb')](function(_0x444f0a){logger['info'](_0x42fe('0x1c'),_0x77a8c);logger[_0x42fe('0xe')](_0x42fe('0x1c'),_0x77a8c,JSON[_0x42fe('0xf')](_0x444f0a));_0xe4418b(_0x444f0a);})[_0x42fe('0x1d')](function(_0x256c0e){logger['error'](_0x42fe('0x1c'),_0x256c0e['message'],_0x77a8c);_0x26effe(_0x5f6152[_0x42fe('0x10')](0x1f4,_0x256c0e[_0x42fe('0x12')]));});});};
\ No newline at end of file
index e10954b..83da904 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60fa=['destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','isAuthenticated','index','get','/describe','/:id','show','/:id/messages','/:id/download','download','post','addMessage','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put','openchannelinteraction:update','delete','openchannelinteraction:destroy'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0x60fa,0x157));var _0xa60f=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x60fa[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0xa60f('0x0'));var util=require(_0xa60f('0x1'));var path=require(_0xa60f('0x2'));var timeout=require(_0xa60f('0x3'));var express=require(_0xa60f('0x4'));var router=express[_0xa60f('0x5')]();var fs_extra=require(_0xa60f('0x6'));var auth=require(_0xa60f('0x7'));var interaction=require(_0xa60f('0x8'));var config=require(_0xa60f('0x9'));var controller=require(_0xa60f('0xa'));router['get']('/',auth[_0xa60f('0xb')](),controller[_0xa60f('0xc')]);router[_0xa60f('0xd')](_0xa60f('0xe'),auth['isAuthenticated'](),controller['describe']);router[_0xa60f('0xd')](_0xa60f('0xf'),auth[_0xa60f('0xb')](),controller[_0xa60f('0x10')]);router[_0xa60f('0xd')](_0xa60f('0x11'),auth['isAuthenticated'](),controller['getMessages']);router[_0xa60f('0xd')](_0xa60f('0x12'),auth[_0xa60f('0xb')](),controller[_0xa60f('0x13')]);router[_0xa60f('0x14')]('/',auth[_0xa60f('0xb')](),controller['create']);router['post'](_0xa60f('0x11'),auth['isAuthenticated'](),controller[_0xa60f('0x15')]);router[_0xa60f('0x14')](_0xa60f('0x16'),auth[_0xa60f('0xb')](),interaction[_0xa60f('0x17')](_0xa60f('0x18'),_0xa60f('0x19')),controller[_0xa60f('0x1a')]);router[_0xa60f('0x1b')](_0xa60f('0xf'),auth[_0xa60f('0xb')](),interaction[_0xa60f('0x17')](_0xa60f('0x18'),_0xa60f('0x1c')),controller['update']);router[_0xa60f('0x1d')](_0xa60f('0xf'),auth[_0xa60f('0xb')](),interaction[_0xa60f('0x17')]('openchannel',_0xa60f('0x1e')),controller[_0xa60f('0x1f')]);router[_0xa60f('0x1d')](_0xa60f('0x16'),auth[_0xa60f('0xb')](),controller[_0xa60f('0x20')]);module[_0xa60f('0x21')]=router;
\ No newline at end of file
+var _0xafc6=['get','isAuthenticated','index','/describe','/:id','show','/:id/messages','getMessages','download','post','addMessage','/:id/tags','openchannel','openchannelinteraction:addtags','addTags','put','tracked','update','delete','openchannelinteraction:destroy','removeTags','multer','util','connect-timeout','express','../../config/environment','./openchannelInteraction.controller'];(function(_0x568427,_0x742280){var _0x3c2f86=function(_0x1455f0){while(--_0x1455f0){_0x568427['push'](_0x568427['shift']());}};_0x3c2f86(++_0x742280);}(_0xafc6,0x1aa));var _0x6afc=function(_0x1477ef,_0x54a5d6){_0x1477ef=_0x1477ef-0x0;var _0x164acd=_0xafc6[_0x1477ef];return _0x164acd;};'use strict';var multer=require(_0x6afc('0x0'));var util=require(_0x6afc('0x1'));var path=require('path');var timeout=require(_0x6afc('0x2'));var express=require(_0x6afc('0x3'));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(_0x6afc('0x4'));var controller=require(_0x6afc('0x5'));router[_0x6afc('0x6')]('/',auth[_0x6afc('0x7')](),controller[_0x6afc('0x8')]);router[_0x6afc('0x6')](_0x6afc('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x6afc('0x6')](_0x6afc('0xa'),auth[_0x6afc('0x7')](),controller[_0x6afc('0xb')]);router[_0x6afc('0x6')](_0x6afc('0xc'),auth[_0x6afc('0x7')](),controller[_0x6afc('0xd')]);router['get']('/:id/download',auth[_0x6afc('0x7')](),controller[_0x6afc('0xe')]);router[_0x6afc('0xf')]('/',auth[_0x6afc('0x7')](),controller['create']);router[_0x6afc('0xf')](_0x6afc('0xc'),auth['isAuthenticated'](),controller[_0x6afc('0x10')]);router['post'](_0x6afc('0x11'),auth[_0x6afc('0x7')](),interaction['tracked'](_0x6afc('0x12'),_0x6afc('0x13')),controller[_0x6afc('0x14')]);router[_0x6afc('0x15')](_0x6afc('0xa'),auth['isAuthenticated'](),interaction[_0x6afc('0x16')](_0x6afc('0x12'),'openchannelinteraction:update'),controller[_0x6afc('0x17')]);router[_0x6afc('0x18')]('/:id',auth[_0x6afc('0x7')](),interaction['tracked'](_0x6afc('0x12'),_0x6afc('0x19')),controller['destroy']);router[_0x6afc('0x18')](_0x6afc('0x11'),auth['isAuthenticated'](),controller[_0x6afc('0x1a')]);module['exports']=router;
\ No newline at end of file
index 8ac71fb..7467a22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03bc=['BOOLEAN','DATE','STRING','out','sequelize'];(function(_0x4bc6de,_0x36765a){var _0x22507f=function(_0x442b43){while(--_0x442b43){_0x4bc6de['push'](_0x4bc6de['shift']());}};_0x22507f(++_0x36765a);}(_0x03bc,0xb8));var _0xc03b=function(_0x26013b,_0x23d44e){_0x26013b=_0x26013b-0x0;var _0x16a91f=_0x03bc[_0x26013b];return _0x16a91f;};'use strict';var Sequelize=require(_0xc03b('0x0'));module['exports']={'closed':{'type':Sequelize[_0xc03b('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xc03b('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xc03b('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xc03b('0x3')]},'read1stAt':{'type':Sequelize[_0xc03b('0x2')]},'threadId':{'type':Sequelize[_0xc03b('0x3')]},'externalUrl':{'type':Sequelize[_0xc03b('0x3')]},'lastMsgAt':{'type':Sequelize[_0xc03b('0x2')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0xc03b('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xc03b('0x4')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0xc03b('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0xc03b('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5b02=['ENUM','out','sequelize','exports','BOOLEAN','DATE','STRING'];(function(_0x2fcf9c,_0x1f72d6){var _0x539fc4=function(_0x2755ef){while(--_0x2755ef){_0x2fcf9c['push'](_0x2fcf9c['shift']());}};_0x539fc4(++_0x1f72d6);}(_0x5b02,0xe9));var _0x25b0=function(_0x44f7e4,_0x7637e0){_0x44f7e4=_0x44f7e4-0x0;var _0xef4755=_0x5b02[_0x44f7e4];return _0xef4755;};'use strict';var Sequelize=require(_0x25b0('0x0'));module[_0x25b0('0x1')]={'closed':{'type':Sequelize[_0x25b0('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x25b0('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x25b0('0x4')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x25b0('0x3')]},'threadId':{'type':Sequelize[_0x25b0('0x4')]},'externalUrl':{'type':Sequelize[_0x25b0('0x4')]},'lastMsgAt':{'type':Sequelize[_0x25b0('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x25b0('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0x25b0('0x5')]('in',_0x25b0('0x6')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize[_0x25b0('0x2')],'defaultValue':![]}};
\ No newline at end of file
index d90dbeb..2e760bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36b2=['mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','Users','fullname','TagIds','split','Tags','catch','waiting','answered','unmanaged','total','UserId','closed','talking','index','OpenchannelInteraction','rawAttributes','fieldName','key','map','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.OpenchannelInteractionId','user_has_openchannel_interactions','left_join','users','u.id\x20=\x20ui.UserId','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','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','expr','search','sqlOperator','conditions','find','unreadMessages','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','value','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','type','text','start','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','buildExpression','keys','isEmpty','forEach','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','createdAt','parse','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','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','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','order','t.id\x20IN\x20?','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','agent','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','i.*','c.firstName','Contact.firstName','c.lastName','c.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','all','params','includeAll','include','options','create','body','destroy','describe','addMessage','ids','getMessages','findOne','OpenchannelMessage','$gte','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','addTags','setTags','spread','Tag','emit','openchannelInteractionTags:save','download','unix','join','root','tmp','attachments','transcript-%d-%s.zip','push','firstName','lastName','Attachment','Messages','direction','OpenchannelAccount','Account','Owner','get','mkdirSync','Openchannel','N.A.','format','closedAt','disposition','threadId','Public','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','eml-format','rimraf','zip-dir','request-promise','bluebird'];(function(_0x5cb4f0,_0xb16665){var _0x22208=function(_0xa6ac92){while(--_0xa6ac92){_0x5cb4f0['push'](_0x5cb4f0['shift']());}};_0x22208(++_0xb16665);}(_0x36b2,0x1ef));var _0x236b=function(_0x2aabe0,_0x572fa1){_0x2aabe0=_0x2aabe0-0x0;var _0x5a8d80=_0x36b2[_0x2aabe0];return _0x5a8d80;};'use strict';var emlformat=require(_0x236b('0x0'));var rimraf=require(_0x236b('0x1'));var zipdir=require(_0x236b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x236b('0x3'));var moment=require('moment');var BPromise=require(_0x236b('0x4'));var Mustache=require(_0x236b('0x5'));var util=require(_0x236b('0x6'));var path=require(_0x236b('0x7'));var sox=require(_0x236b('0x8'));var csv=require(_0x236b('0x9'));var ejs=require(_0x236b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x236b('0xb'));var squel=require(_0x236b('0xc'));var crypto=require(_0x236b('0xd'));var jsforce=require(_0x236b('0xe'));var deskjs=require(_0x236b('0xf'));var toCsv=require('to-csv');var querystring=require(_0x236b('0x10'));var Papa=require(_0x236b('0x11'));var Redis=require(_0x236b('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x236b('0x13'));var as=require(_0x236b('0x14'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0x236b('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x236b('0x16'));var config=require(_0x236b('0x17'));var licenseUtil=require(_0x236b('0x18'));var db=require(_0x236b('0x19'))['db'];config[_0x236b('0x1a')]=_[_0x236b('0x1b')](config[_0x236b('0x1a')],{'host':_0x236b('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x236b('0x1a')]));require('./openchannelInteraction.socket')[_0x236b('0x1d')](socket);function respondWithStatusCode(_0x21d529,_0x26a705){_0x26a705=_0x26a705||0xcc;return function(_0x3ec3bd){if(_0x3ec3bd){return _0x21d529[_0x236b('0x1e')](_0x26a705);}return _0x21d529[_0x236b('0x1f')](_0x26a705)[_0x236b('0x20')]();};}function respondWithResult(_0x3408d5,_0xa829a5){_0xa829a5=_0xa829a5||0xc8;return function(_0x4185ce){if(_0x4185ce){return _0x3408d5[_0x236b('0x1f')](_0xa829a5)[_0x236b('0x21')](_0x4185ce);}};}function respondWithFilteredResult(_0x530985,_0x1e2da0){return function(_0x10be14){if(_0x10be14){var _0x5058c5=typeof _0x1e2da0['offset']===_0x236b('0x22')&&typeof _0x1e2da0['limit']===_0x236b('0x22');var _0x57dad9=_0x10be14[_0x236b('0x23')];var _0x366149=_0x5058c5?0x0:_0x1e2da0[_0x236b('0x24')];var _0x72c925=_0x5058c5?_0x10be14[_0x236b('0x23')]:_0x1e2da0['offset']+_0x1e2da0[_0x236b('0x25')];var _0x197816;if(_0x72c925>=_0x57dad9){_0x72c925=_0x57dad9;_0x197816=0xc8;}else{_0x197816=0xce;}_0x530985['status'](_0x197816);return _0x530985[_0x236b('0x26')](_0x236b('0x27'),_0x366149+'-'+_0x72c925+'/'+_0x57dad9)['json'](_0x10be14);}return null;};}function patchUpdates(_0x2aec9e){return function(_0x37d554){try{jsonpatch[_0x236b('0x28')](_0x37d554,_0x2aec9e,!![]);}catch(_0x577199){return BPromise[_0x236b('0x29')](_0x577199);}return _0x37d554[_0x236b('0x2a')]();};}function saveUpdates(_0x415172,_0x1d0208){return function(_0x281cdd){if(_0x281cdd){return _0x281cdd[_0x236b('0x2b')](_0x415172)[_0x236b('0x2c')](function(_0x59e375){return _0x59e375;});}return null;};}function removeEntity(_0x2d5b9b,_0x11b7aa){return function(_0x588f1f){if(_0x588f1f){return _0x588f1f['destroy']()['then'](function(){_0x2d5b9b[_0x236b('0x1f')](0xcc)[_0x236b('0x20')]();});}};}function handleEntityNotFound(_0x38f2fc,_0x2acd7e){return function(_0xa24026){if(!_0xa24026){_0x38f2fc[_0x236b('0x1e')](0x194);}return _0xa24026;};}function handleError(_0x2cba3e,_0x417e43){_0x417e43=_0x417e43||0x1f4;return function(_0x3f1815){logger[_0x236b('0x2d')](_0x3f1815[_0x236b('0x2e')]);if(_0x3f1815['name']){delete _0x3f1815[_0x236b('0x2f')];}_0x2cba3e[_0x236b('0x1f')](_0x417e43)[_0x236b('0x30')](_0x3f1815);};}function getInteractionUsers(_0x58aa03,_0x4591c7){return new BPromise(function(_0x134d0e,_0x46a412){try{if(_0x4591c7[_0x58aa03['id']]){_0x58aa03[_0x236b('0x31')]=_['map'](_0x4591c7[_0x58aa03['id']],function(_0x4572ff){return{'id':_0x4572ff['id'],'fullname':_0x4572ff[_0x236b('0x32')]};});}}catch(_0x44d8a8){_0x46a412(_0x44d8a8);}_0x134d0e(_0x58aa03);});}function getInteractionTags(_0x5d0cf8,_0x470314){return new BPromise(function(_0x4a5767,_0x303b7b){try{if(_0x5d0cf8[_0x236b('0x33')]){_0x5d0cf8['Tags']=[];_0x5d0cf8[_0x236b('0x33')][_0x236b('0x34')](',')['forEach'](function(_0x1929c2){_0x5d0cf8[_0x236b('0x35')]['push'](_0x470314[_0x1929c2]);});}delete _0x5d0cf8[_0x236b('0x33')];}catch(_0x23a321){_0x303b7b(_0x23a321);}_0x4a5767(_0x5d0cf8);});}function updateOpenchannelInteraction(_0x288a2b,_0x2ce265,_0x51d4cf){return new BPromise(function(_0x54bd06,_0x412d26){return getInteractionUsers(_0x288a2b,_0x51d4cf)[_0x236b('0x2c')](function(_0x2be11e){return getInteractionTags(_0x2be11e,_0x2ce265);})['then'](function(_0x3433bf){return getStateInteraction(_0x3433bf);})[_0x236b('0x2c')](function(_0x571113){_0x54bd06(_0x571113);})[_0x236b('0x36')](function(_0x16b1c5){_0x412d26(_0x16b1c5);});});}function getStateInteraction(_0xdcc304){return new BPromise(function(_0x3b4f9e){_0xdcc304[_0x236b('0x37')]=0x0;_0xdcc304['talking']=0x0;_0xdcc304[_0x236b('0x38')]=0x0;_0xdcc304[_0x236b('0x39')]=0x0;_0xdcc304[_0x236b('0x3a')]=0x0;if(!_0xdcc304['closed']&&!_0xdcc304[_0x236b('0x3b')]){_0xdcc304['waiting']+=0x1;}if(!_0xdcc304[_0x236b('0x3c')]&&_0xdcc304[_0x236b('0x3b')]){_0xdcc304[_0x236b('0x3d')]+=0x1;if(_0xdcc304[_0x236b('0x37')]){_0xdcc304['waiting']-=0x1;}}if(_0xdcc304[_0x236b('0x3c')]&&_0xdcc304['UserId']){_0xdcc304[_0x236b('0x38')]+=0x1;if(_0xdcc304[_0x236b('0x3d')]){_0xdcc304[_0x236b('0x3d')]-=0x1;}}if(_0xdcc304[_0x236b('0x3c')]&&!_0xdcc304[_0x236b('0x3b')]){_0xdcc304[_0x236b('0x39')]+=0x1;if(_0xdcc304['waiting']){_0xdcc304[_0x236b('0x37')]-=0x1;}}_0xdcc304[_0x236b('0x3a')]+=0x1;_0x3b4f9e(_0xdcc304);});}exports[_0x236b('0x3e')]=function(_0x3be4aa,_0x1829fc){var _0x20ec00={},_0x496f27={},_0x522148={'count':0x0,'rows':[]};var _0x457e1b=_['map'](db[_0x236b('0x3f')][_0x236b('0x40')],function(_0x15529f){return{'name':_0x15529f[_0x236b('0x41')],'type':_0x15529f['type'][_0x236b('0x42')]};});_0x496f27['model']=_[_0x236b('0x43')](_0x457e1b,'name');_0x496f27[_0x236b('0x44')]=_['keys'](_0x3be4aa[_0x236b('0x44')]);_0x496f27['filters']=_[_0x236b('0x45')](_0x496f27[_0x236b('0x46')],_0x496f27[_0x236b('0x44')]);_0x20ec00[_0x236b('0x47')]=_[_0x236b('0x45')](_0x496f27[_0x236b('0x46')],qs[_0x236b('0x48')](_0x3be4aa[_0x236b('0x44')][_0x236b('0x48')]));_0x20ec00[_0x236b('0x47')]=_0x20ec00['attributes'][_0x236b('0x49')]?_0x20ec00['attributes']:_0x496f27[_0x236b('0x46')];if(!_0x3be4aa[_0x236b('0x44')][_0x236b('0x4a')](_0x236b('0x4b'))){_0x20ec00[_0x236b('0x25')]=qs[_0x236b('0x25')](_0x3be4aa[_0x236b('0x44')][_0x236b('0x25')]);_0x20ec00[_0x236b('0x24')]=qs[_0x236b('0x24')](_0x3be4aa[_0x236b('0x44')][_0x236b('0x24')]);}_0x20ec00['order']=qs[_0x236b('0x4c')](_0x3be4aa['query']['sort']);_0x20ec00[_0x236b('0x4d')]=qs[_0x236b('0x4e')](_[_0x236b('0x4f')](_0x3be4aa[_0x236b('0x44')],_0x496f27[_0x236b('0x4e')]),_0x457e1b);var _0x1be395=[];var _0x17ebed=squel[_0x236b('0x50')]()[_0x236b('0x51')]('id')['field']('name')[_0x236b('0x51')](_0x236b('0x52'))[_0x236b('0x53')](_0x236b('0x54'));var _0x1ec93a=squel[_0x236b('0x50')]()[_0x236b('0x51')](_0x236b('0x55'))['field'](_0x236b('0x56'))[_0x236b('0x51')](_0x236b('0x57'))[_0x236b('0x53')](_0x236b('0x58'),'ui')[_0x236b('0x59')](_0x236b('0x5a'),'u',_0x236b('0x5b'));var _0x4d6587=squel[_0x236b('0x50')]()[_0x236b('0x53')]('openchannel_interactions','i')[_0x236b('0x59')](_0x236b('0x5c'),'c',_0x236b('0x5d'))['left_join'](_0x236b('0x5a'),'o','o.id\x20=\x20i.UserId')[_0x236b('0x59')](_0x236b('0x5e'),'a',_0x236b('0x5f'))['left_join'](_0x236b('0x60'),'me',_0x236b('0x61'))[_0x236b('0x59')](_0x236b('0x62'),'it',_0x236b('0x63'))[_0x236b('0x59')]('tools_tags','t','t.id\x20=\x20it.TagId');var _0x55d7e9=squel[_0x236b('0x64')]();var _0x506dee=[];var _0x219993=squel[_0x236b('0x64')]();var _0xf25b50;if(_0x3be4aa[_0x236b('0x44')][_0x236b('0x65')]){_0xf25b50=as['parseSearch'](_0x3be4aa[_0x236b('0x44')][_0x236b('0x65')]);var _0xe3a3c0=_0xf25b50[_0x236b('0x66')];for(var _0x29761b=0x0;_0x29761b<_0xf25b50['conditions'][_0x236b('0x49')];_0x29761b++){var _0x122ca2=_0xf25b50[_0x236b('0x67')][_0x29761b];var _0x5002f1='i';var _0x43635f=_[_0x236b('0x68')](_0x457e1b,[_0x236b('0x2f'),_0x122ca2[_0x236b('0x51')]]);if(!_0x43635f){switch(_0x122ca2[_0x236b('0x51')]){case _0x236b('0x69'):if(_0x122ca2['value']==0x1){_0x4d6587[_0x236b('0x6a')]('`'+_0x122ca2[_0x236b('0x51')]+_0x236b('0x6b'));}else{_0x4d6587[_0x236b('0x6a')]('`'+_0x122ca2['field']+_0x236b('0x6c'));}break;case _0x236b('0x6d'):if(_0x122ca2[_0x236b('0x6e')]===_0x236b('0x6f')){if(_0x122ca2['value']['split']('\x20')[_0x236b('0x49')]>0x1){_0x55d7e9[_0xe3a3c0](_0x236b('0x70'),qs[_0x236b('0x71')](_0x122ca2[_0x236b('0x72')]),null);}else{var _0x24d9b7='%'+_0x122ca2[_0x236b('0x72')]+'%';_0x55d7e9[_0xe3a3c0](_0x236b('0x73'),_0x24d9b7,_0x24d9b7,_0x24d9b7);}}else{_0x43635f=_['find'](_0x457e1b,[_0x236b('0x2f'),_0x236b('0x74')]);_0x122ca2['field']=_0x236b('0x74');_0x5033b6=as['buildExpression'](_0x5002f1,_0x43635f[_0x236b('0x75')],_0x122ca2);_0x55d7e9[_0xe3a3c0](_0x5033b6[_0x236b('0x76')],_0x5033b6[_0x236b('0x72')][_0x236b('0x77')],_0x5033b6[_0x236b('0x72')][_0x236b('0x20')]);}break;case'Tag':var _0x4dca4c=_0x122ca2[_0x236b('0x72')][_0x236b('0x34')](',')[_0x236b('0x43')](function(_0x357502){return Number(_0x357502);});_0x4dca4c['forEach'](function(_0x13fbe1){_0x219993['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x13fbe1+',%');});_0x506dee=_['union'](_0x506dee,_0x4dca4c);break;case _0x236b('0x78'):if(_0x122ca2['operator']===_0x236b('0x6f')){_0x55d7e9[_0xe3a3c0](_0x236b('0x79'),'%'+_0x122ca2[_0x236b('0x72')]+'%',null);}else{_0x43635f=_[_0x236b('0x68')](_0x457e1b,[_0x236b('0x2f'),_0x236b('0x3b')]);_0x122ca2[_0x236b('0x51')]='UserId';_0x5033b6=as[_0x236b('0x7a')](_0x5002f1,_0x43635f[_0x236b('0x75')],_0x122ca2);_0x55d7e9[_0xe3a3c0](_0x5033b6[_0x236b('0x76')],_0x5033b6[_0x236b('0x72')][_0x236b('0x77')],_0x5033b6[_0x236b('0x72')]['end']);}break;case'body':_0x5033b6=as[_0x236b('0x7a')]('me',null,_0x122ca2);_0x55d7e9[_0xe3a3c0](_0x5033b6[_0x236b('0x76')],_0x5033b6[_0x236b('0x72')]['start'],_0x5033b6['value'][_0x236b('0x20')]);break;}}else{var _0x5033b6=as[_0x236b('0x7a')](_0x5002f1,_0x43635f['type'],_0x122ca2);_0x55d7e9[_0xe3a3c0](_0x5033b6['text'],_0x5033b6['value'][_0x236b('0x77')],_0x5033b6[_0x236b('0x72')][_0x236b('0x20')]);}}}else{var _0x4d58c7=_(_0x3be4aa[_0x236b('0x44')])[_0x236b('0x7b')]()[_0x236b('0x43')](function(_0x28971b){return _['some'](_0x457e1b,[_0x236b('0x2f'),_0x28971b])?_0x28971b:undefined;})['compact']()[_0x236b('0x72')]();if(!_[_0x236b('0x7c')](_0x4d58c7)){_0x4d58c7[_0x236b('0x7d')](function(_0x3c7c6c){if(_0x3c7c6c===_0x236b('0x7e')){_0x4d6587['where'](_0x236b('0x7f'),[]['concat'](_0x3be4aa[_0x236b('0x44')][_0x3c7c6c]));}else if(_0x3c7c6c===_0x236b('0x80')){var _0x2a1f5b=JSON[_0x236b('0x81')](_0x3be4aa['query'][_0x3c7c6c])['$gte'];var _0xc17966=JSON[_0x236b('0x81')](_0x3be4aa['query'][_0x3c7c6c])['$lte'];_0x4d6587['where']('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x2a1f5b,_0xc17966);}else{if(_0x3be4aa[_0x236b('0x44')][_0x3c7c6c]===_0x236b('0x82')){_0x4d6587[_0x236b('0x4d')]('i.'+_0x3c7c6c+_0x236b('0x83'));}else{_0x4d6587[_0x236b('0x4d')]('i.'+_0x3c7c6c+'\x20=\x20?',_0x3be4aa[_0x236b('0x44')][_0x3c7c6c]);}}});}if(_0x3be4aa['query'][_0x236b('0x84')]){if(_0x3be4aa[_0x236b('0x44')]['read']==0x1){_0x4d6587[_0x236b('0x6a')](_0x236b('0x85'));}else{_0x4d6587[_0x236b('0x6a')](_0x236b('0x86'));}}if(_0x3be4aa[_0x236b('0x44')]['tag']){_0x506dee=_['isArray'](_0x3be4aa[_0x236b('0x44')]['tag'])?_0x3be4aa['query'][_0x236b('0x87')]:new Array(_0x3be4aa[_0x236b('0x44')][_0x236b('0x87')]);_0x506dee[_0x236b('0x7d')](function(_0x4d4d45){_0x219993['or'](_0x236b('0x88'),'%,'+_0x4d4d45+',%');});}if(_0x3be4aa[_0x236b('0x44')][_0x236b('0x89')]){var _0x25bcc1=_0x3be4aa['query'][_0x236b('0x89')]['replace']('\x5c','\x5c\x5c')[_0x236b('0x8a')](/'/g,'\x27\x27');if(qs[_0x236b('0x8b')](_0x25bcc1)){_0x55d7e9['or'](_0x236b('0x8c'),_0x25bcc1+'%');}else{_0x55d7e9['or'](_0x236b('0x8d'),qs[_0x236b('0x71')](_0x25bcc1))['or'](_0x236b('0x8e'),_0x25bcc1+'%')['or'](_0x236b('0x8f'),_0x25bcc1+'%');}}}_0x4d6587[_0x236b('0x4d')](_0x55d7e9);_0x4d6587[_0x236b('0x90')](_0x236b('0x91'));var _0x4a7154={'type':db[_0x236b('0x92')][_0x236b('0x93')][_0x236b('0x94')],'raw':!![]};var _0x2d0f6c=_0x4d6587['clone']();_0x2d0f6c[_0x236b('0x51')](_0x236b('0x91'));_0x2d0f6c[_0x236b('0x51')](_0x236b('0x95'),_0x236b('0x69'));if(_0x20ec00['order']){_0x20ec00['order'][_0x236b('0x7d')](function(_0x670f63){var _0x919cc3=_0x670f63[0x0]===_0x236b('0x96')?_0x670f63[0x0]:'i.'+_0x670f63[0x0];_0x4d6587[_0x236b('0x97')](_0x919cc3,_0x670f63[0x1]==='DESC'?![]:!![]);});}if(!_[_0x236b('0x7c')](_0x506dee)){_0x4d6587['having'](_0x219993);_0x2d0f6c[_0x236b('0x4d')](_0x236b('0x98'),_0x506dee);}BPromise[_0x236b('0x99')]()[_0x236b('0x2c')](function(){if(!_0xf25b50){if(_0x3be4aa['query'][_0x236b('0x7e')])return;_0x2d0f6c[_0x236b('0x4d')](_0x236b('0x9a'));_0x4d6587[_0x236b('0x4d')](_0x236b('0x9a'));return;}if(_0x3be4aa[_0x236b('0x9b')][_0x236b('0x9c')]!=='agent')return;return _0x3be4aa['user'][_0x236b('0x9d')]({'attributes':['id'],'raw':!![]})[_0x236b('0x2c')](function(_0x38e693){if(_[_0x236b('0x7c')](_0x38e693)){_0x2d0f6c[_0x236b('0x4d')](_0x236b('0x9e'));_0x4d6587[_0x236b('0x4d')](_0x236b('0x9e'));}else{_0x2d0f6c[_0x236b('0x4d')]('i.OpenchannelAccountId\x20IN\x20?',_['map'](_0x38e693,'id'));_0x4d6587[_0x236b('0x4d')](_0x236b('0x7f'),_[_0x236b('0x43')](_0x38e693,'id'));}});})[_0x236b('0x2c')](function(){if(_0x3be4aa['user'][_0x236b('0x9c')]===_0x236b('0x9f')&&!_0xf25b50&&!_0x3be4aa[_0x236b('0x44')][_0x236b('0x7e')])return[];return db[_0x236b('0xa0')][_0x236b('0x44')](_0x2d0f6c[_0x236b('0xa1')](),_0x4a7154);})[_0x236b('0x2c')](function(_0x29e241){_0x522148['count']=_0x29e241['length'];if(_0x522148[_0x236b('0x23')]===0x0)return[];return db[_0x236b('0xa0')][_0x236b('0x44')](_0x17ebed[_0x236b('0xa1')](),_0x4a7154)[_0x236b('0x2c')](function(_0x3777d9){_0x1be395=_[_0x236b('0xa2')](_0x3777d9,'id');_0x4a7154=_[_0x236b('0xa3')](_0x4a7154,{'model':db[_0x236b('0x3f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3be4aa['query']['fields']){_0x20ec00['attributes'][_0x236b('0x7d')](function(_0x2ea275){_0x4d6587['field']('i.'+_0x2ea275);});}else{_0x4d6587[_0x236b('0x51')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');_0x4d6587['field'](_0x236b('0xa4'),_0x236b('0xa5'));_0x4d6587['field'](_0x236b('0xa6'),_0x236b('0xa7'));_0x4d6587[_0x236b('0x51')](_0x236b('0xa8'),_0x236b('0x96'));_0x4d6587['field'](_0x236b('0xa9'));_0x4d6587[_0x236b('0x51')](_0x236b('0xaa'),_0x236b('0xab'));_0x4d6587[_0x236b('0x51')](_0x236b('0xac'),'Contact.lastName');_0x4d6587[_0x236b('0x51')](_0x236b('0xad'),'Contact.email');_0x4d6587[_0x236b('0x51')](_0x236b('0xae'),_0x236b('0xaf'));_0x4d6587['field'](_0x236b('0xb0'),_0x236b('0xb1'));_0x4d6587['field'](_0x236b('0xb2'),_0x236b('0xb3'));_0x4d6587['field'](_0x236b('0xb4'),'Owner.fullname');_0x4d6587[_0x236b('0x51')](_0x236b('0xb5'),_0x236b('0xb6'));_0x4d6587[_0x236b('0x51')](_0x236b('0xb7'),_0x236b('0x33'));}if(_0x20ec00[_0x236b('0x25')])_0x4d6587[_0x236b('0x25')](_0x20ec00[_0x236b('0x25')]);if(_0x20ec00['offset'])_0x4d6587[_0x236b('0x24')](_0x20ec00[_0x236b('0x24')]);return db[_0x236b('0xa0')]['query'](_0x4d6587[_0x236b('0xa1')](),_0x4a7154);})['then'](function(_0x836f04){if(_0x836f04[_0x236b('0x49')]>0x0)_0x1ec93a['where'](_0x236b('0xb8'),_[_0x236b('0x43')](_0x836f04,'id'));return db[_0x236b('0xa0')]['query'](_0x1ec93a[_0x236b('0xa1')](),_0x4a7154)[_0x236b('0x2c')](function(_0x6afcd8){var _0x4a1f6a=_[_0x236b('0xb9')](_0x6afcd8,_0x236b('0xba'));var _0x35d7c0=[];_0x836f04[_0x236b('0x7d')](function(_0x528421){_0x35d7c0['push'](updateOpenchannelInteraction(_0x528421,_0x1be395,_0x4a1f6a));});return BPromise[_0x236b('0xbb')](_0x35d7c0);});});})[_0x236b('0x2c')](function(_0x3a2130){_0x522148['rows']=_0x3a2130;return _0x522148;})['then'](respondWithFilteredResult(_0x1829fc,_0x20ec00))[_0x236b('0x36')](handleError(_0x1829fc,null));};exports['show']=function(_0x2f2e1f,_0x42ed4a){var _0x214309={};if(_0x2f2e1f[_0x236b('0x44')][_0x236b('0x75')]&&_0x2f2e1f['query'][_0x236b('0x75')]==='from'){_0x214309[_0x236b('0x53')]=_0x2f2e1f[_0x236b('0xbc')]['id'];}else{_0x214309['id']=_0x2f2e1f[_0x236b('0xbc')]['id'];}var _0x484dcf={'raw':![],'where':_0x214309},_0x77c035={};_0x77c035[_0x236b('0x46')]=_['keys'](db[_0x236b('0x3f')]['rawAttributes']);_0x77c035[_0x236b('0x44')]=_[_0x236b('0x7b')](_0x2f2e1f[_0x236b('0x44')]);_0x77c035[_0x236b('0x4e')]=_[_0x236b('0x45')](_0x77c035['model'],_0x77c035[_0x236b('0x44')]);_0x484dcf[_0x236b('0x47')]=_[_0x236b('0x45')](_0x77c035[_0x236b('0x46')],qs[_0x236b('0x48')](_0x2f2e1f['query'][_0x236b('0x48')]));_0x484dcf[_0x236b('0x47')]=_0x484dcf[_0x236b('0x47')][_0x236b('0x49')]?_0x484dcf[_0x236b('0x47')]:_0x77c035[_0x236b('0x46')];if(_0x2f2e1f[_0x236b('0x44')][_0x236b('0xbd')]){_0x484dcf[_0x236b('0xbe')]=[{'all':!![]}];}_0x484dcf=_['merge']({},_0x484dcf,_0x2f2e1f[_0x236b('0xbf')]);return db[_0x236b('0x3f')]['find'](_0x484dcf)[_0x236b('0x2c')](handleEntityNotFound(_0x42ed4a,null))[_0x236b('0x2c')](respondWithResult(_0x42ed4a,null))[_0x236b('0x36')](handleError(_0x42ed4a,null));};exports[_0x236b('0xc0')]=function(_0x7e101d,_0x35148a){return db[_0x236b('0x3f')][_0x236b('0xc0')](_0x7e101d['body'],{})[_0x236b('0x2c')](respondWithResult(_0x35148a,0xc9))[_0x236b('0x36')](handleError(_0x35148a,null));};exports['update']=function(_0x29d572,_0x268a69){if(_0x29d572[_0x236b('0xc1')]['id']){delete _0x29d572[_0x236b('0xc1')]['id'];}return db[_0x236b('0x3f')]['find']({'where':{'id':_0x29d572[_0x236b('0xbc')]['id']}})['then'](handleEntityNotFound(_0x268a69,null))['then'](saveUpdates(_0x29d572[_0x236b('0xc1')],null))[_0x236b('0x2c')](respondWithResult(_0x268a69,null))['catch'](handleError(_0x268a69,null));};exports[_0x236b('0xc2')]=function(_0x5e57c7,_0x1e76fb){return db['OpenchannelInteraction']['find']({'where':{'id':_0x5e57c7[_0x236b('0xbc')]['id']}})[_0x236b('0x2c')](handleEntityNotFound(_0x1e76fb,null))[_0x236b('0x2c')](removeEntity(_0x1e76fb,null))[_0x236b('0x36')](handleError(_0x1e76fb,null));};exports[_0x236b('0xc3')]=function(_0x417321,_0x5da097){return db['OpenchannelInteraction'][_0x236b('0xc3')]()[_0x236b('0x2c')](respondWithResult(_0x5da097,null))[_0x236b('0x36')](handleError(_0x5da097,null));};exports[_0x236b('0xc4')]=function(_0x21eb4a,_0x28722f,_0x3427a4){return db['OpenchannelMessage'][_0x236b('0x68')]({'where':{'id':_0x21eb4a[_0x236b('0xbc')]['id']}})['then'](handleEntityNotFound(_0x28722f,null))[_0x236b('0x2c')](function(_0x14b215){if(_0x14b215){return _0x14b215[_0x236b('0xc4')](_0x21eb4a[_0x236b('0xc1')][_0x236b('0xc5')],_['omit'](_0x21eb4a['body'],['ids','id'])||{});}})[_0x236b('0x2c')](respondWithResult(_0x28722f,null))[_0x236b('0x36')](handleError(_0x28722f,null));};exports[_0x236b('0xc6')]=function(_0x3e3c3a,_0x2235d5,_0x4723b6){var _0x13eec7={'raw':![],'where':{}};var _0x4cad9a={};var _0x541223={'count':0x0,'rows':[]};return db[_0x236b('0x3f')][_0x236b('0xc7')]({'where':{'id':_0x3e3c3a['params']['id']}})[_0x236b('0x2c')](handleEntityNotFound(_0x2235d5,null))[_0x236b('0x2c')](function(_0x2c323b){if(_0x2c323b){_0x4cad9a[_0x236b('0x46')]=_[_0x236b('0x7b')](db[_0x236b('0xc8')]['rawAttributes']);_0x4cad9a[_0x236b('0x44')]=_[_0x236b('0x7b')](_0x3e3c3a[_0x236b('0x44')]);_0x4cad9a[_0x236b('0x4e')]=_[_0x236b('0x45')](_0x4cad9a[_0x236b('0x46')],_0x4cad9a[_0x236b('0x44')]);_0x13eec7[_0x236b('0x47')]=_[_0x236b('0x45')](_0x4cad9a[_0x236b('0x46')],qs[_0x236b('0x48')](_0x3e3c3a[_0x236b('0x44')]['fields']));_0x13eec7[_0x236b('0x47')]=_0x13eec7[_0x236b('0x47')]['length']?_0x13eec7[_0x236b('0x47')]:_0x4cad9a[_0x236b('0x46')];if(!_0x3e3c3a[_0x236b('0x44')][_0x236b('0x4a')](_0x236b('0x4b'))){_0x13eec7[_0x236b('0x25')]=qs[_0x236b('0x25')](_0x3e3c3a[_0x236b('0x44')][_0x236b('0x25')]);_0x13eec7['offset']=qs[_0x236b('0x24')](_0x3e3c3a[_0x236b('0x44')]['offset']);}_0x13eec7['order']=qs[_0x236b('0x4c')](_0x3e3c3a[_0x236b('0x44')][_0x236b('0x4c')]);_0x13eec7['where']=qs['filters'](_[_0x236b('0x4f')](_0x3e3c3a['query'],_0x4cad9a[_0x236b('0x4e')]));_0x13eec7[_0x236b('0x4d')][_0x236b('0xba')]=_0x2c323b['id'];if(_0x3e3c3a[_0x236b('0x44')][_0x236b('0x89')]){_0x13eec7[_0x236b('0x4d')]=_[_0x236b('0xa3')](_0x13eec7[_0x236b('0x4d')],{'$or':_[_0x236b('0x43')](_0x13eec7[_0x236b('0x47')],function(_0x24dbcc){var _0x8513f8={};_0x8513f8[_0x24dbcc]={'$like':'%'+_0x3e3c3a[_0x236b('0x44')][_0x236b('0x89')]+'%'};return _0x8513f8;})});}if(_0x3e3c3a['query'][_0x236b('0xc9')]){var _0x2bd0c0=_0x3e3c3a[_0x236b('0x44')]['$gte'][_0x236b('0x34')](',');var _0x2c3b7c={};_0x2c3b7c[_0x2bd0c0[0x0]]={'$gte':moment(_0x2bd0c0[0x1])['format'](_0x236b('0xca'))};_0x13eec7['where']=_['merge'](_0x13eec7[_0x236b('0x4d')],_0x2c3b7c);}_0x13eec7=_[_0x236b('0xa3')]({},_0x13eec7,_0x3e3c3a[_0x236b('0xbf')]);return db[_0x236b('0xc8')]['count']({'where':_0x13eec7[_0x236b('0x4d')]})[_0x236b('0x2c')](function(_0x3d761e){_0x541223[_0x236b('0x23')]=_0x3d761e;if(_0x3e3c3a['query'][_0x236b('0xbd')]){_0x13eec7[_0x236b('0xbe')]=[{'all':!![]}];}return db[_0x236b('0xc8')][_0x236b('0xcb')](_0x13eec7);})[_0x236b('0x2c')](function(_0x3e5980){_0x541223[_0x236b('0xcc')]=_0x3e5980;return _0x541223;});}})[_0x236b('0x2c')](respondWithFilteredResult(_0x2235d5,_0x13eec7))[_0x236b('0x36')](handleError(_0x2235d5,null));};exports[_0x236b('0xcd')]=function(_0x2a7f0c,_0x388870,_0x85f98){return db[_0x236b('0x3f')][_0x236b('0x68')]({'where':{'id':_0x2a7f0c['params']['id']}})[_0x236b('0x2c')](handleEntityNotFound(_0x388870,null))[_0x236b('0x2c')](function(_0x57e28b){if(_0x57e28b){return _0x57e28b[_0x236b('0xce')](_0x2a7f0c[_0x236b('0xc1')][_0x236b('0xc5')],_['omit'](_0x2a7f0c[_0x236b('0xc1')],[_0x236b('0xc5'),'id'])||{})[_0x236b('0xcf')](function(){return db[_0x236b('0xd0')][_0x236b('0xcb')]({'attributes':['id',_0x236b('0x2f'),_0x236b('0x52')],'where':{'id':_0x2a7f0c[_0x236b('0xc1')]['ids']}});})[_0x236b('0x2c')](function(_0x75d452){socket[_0x236b('0xd1')](_0x236b('0xd2'),{'id':Number(_0x2a7f0c[_0x236b('0xbc')]['id']),'tags':_0x75d452||[]});return{'id':Number(_0x2a7f0c[_0x236b('0xbc')]['id']),'tags':_0x75d452||[]};});}})['then'](respondWithResult(_0x388870,null))[_0x236b('0x36')](handleError(_0x388870,null));};exports['removeTags']=function(_0x4c45b0,_0x5969be,_0xf3ac5a){return db[_0x236b('0x3f')][_0x236b('0x68')]({'where':{'id':_0x4c45b0[_0x236b('0xbc')]['id']}})['then'](handleEntityNotFound(_0x5969be,null))['then'](function(_0x5e04e4){if(_0x5e04e4){return _0x5e04e4['removeTags'](_0x4c45b0['query']['ids']);}})[_0x236b('0x2c')](respondWithStatusCode(_0x5969be,null))[_0x236b('0x36')](handleError(_0x5969be,null));};exports[_0x236b('0xd3')]=function(_0x40dc4b,_0x21094a){var _0xe7c5f7=moment()[_0x236b('0xd4')]()[_0x236b('0xa1')]();var _0x14b1fd=path[_0x236b('0xd5')](config[_0x236b('0xd6')],'server','files',_0x236b('0xd7'));var _0x17f2cc=path['join'](config[_0x236b('0xd6')],'server','files',_0x236b('0xd8'));var _0x3b9e11=path[_0x236b('0xd5')](_0x14b1fd,_0xe7c5f7);var _0x3d9f16=util['format'](_0x236b('0xd9'),_0x40dc4b[_0x236b('0xbc')]['id'],_0xe7c5f7);var _0x51d280=path[_0x236b('0xd5')](_0x14b1fd,_0x3d9f16);var _0x4e9c31=[];_0x4e9c31[_0x236b('0xda')]({'model':db[_0x236b('0x78')],'as':_0x236b('0x78'),'attributes':['id','fullname'],'raw':!![]});_0x4e9c31[_0x236b('0xda')]({'model':db['CmContact'],'as':_0x236b('0x6d'),'attributes':['id',_0x236b('0xdb'),_0x236b('0xdc')],'raw':!![]});if(_0x40dc4b['query']['attachments']){_0x4e9c31[_0x236b('0xda')]({'model':db[_0x236b('0xdd')],'as':'Attachment','raw':!![]});}var _0x4b7ae4=[{'model':db[_0x236b('0xc8')],'as':_0x236b('0xde'),'attributes':['id','body',_0x236b('0x80'),_0x236b('0xdf'),'secret',_0x236b('0x84')],'include':_0x4e9c31}];_0x4b7ae4[_0x236b('0xda')]({'model':db[_0x236b('0xe0')],'as':_0x236b('0xe1'),'attributes':['id',_0x236b('0x2f')]});_0x4b7ae4[_0x236b('0xda')]({'model':db[_0x236b('0x78')],'as':_0x236b('0xe2'),'attributes':['id',_0x236b('0x32')]});return db[_0x236b('0x3f')][_0x236b('0x68')]({'where':{'id':_0x40dc4b[_0x236b('0xbc')]['id']},'include':_0x4b7ae4})[_0x236b('0x2c')](handleEntityNotFound(_0x21094a,null))[_0x236b('0x2c')](function(_0x9669bf){if(_0x9669bf){var _0x38dda1=_0x9669bf[_0x236b('0xe3')]({'plain':!![]});fs[_0x236b('0xe4')](_0x3b9e11);var _0x3fcd90={'channel':_0x236b('0xe5'),'account':_0x38dda1[_0x236b('0xe1')][_0x236b('0x2f')],'agent':_0x38dda1[_0x236b('0xe2')]?_0x38dda1[_0x236b('0xe2')]['fullname']:_0x236b('0xe6'),'createdAt':moment(_0x38dda1[_0x236b('0x80')])[_0x236b('0xe7')](_0x236b('0xca'))[_0x236b('0xa1')](),'closedAt':_0x38dda1['closed']?moment(_0x38dda1[_0x236b('0xe8')])[_0x236b('0xe7')](_0x236b('0xca'))[_0x236b('0xa1')]():'','disposition':_0x38dda1[_0x236b('0xe9')],'visibility':_0x38dda1[_0x236b('0xea')]?_0x236b('0xeb'):'Private','messages':_(_0x38dda1[_0x236b('0xde')])[_0x236b('0x89')]({'secret':![]})[_0x236b('0x43')](function(_0x15bf0c){if(_0x15bf0c[_0x236b('0xdd')]){var _0x4a5e6a=path['join'](_0x17f2cc,_0x15bf0c[_0x236b('0xdd')][_0x236b('0xec')]);if(fs[_0x236b('0xed')](_0x4a5e6a)){fs[_0x236b('0xee')](_0x4a5e6a)[_0x236b('0xef')](fs[_0x236b('0xf0')](path[_0x236b('0xd5')](_0x3b9e11,_0x15bf0c['Attachment'][_0x236b('0xec')])));}}return{'date':moment(_0x15bf0c[_0x236b('0x80')])[_0x236b('0xe7')](_0x236b('0xca'))[_0x236b('0xa1')](),'sender':_0x15bf0c[_0x236b('0xdf')]===_0x236b('0xf1')?_0x15bf0c['User']?_0x15bf0c[_0x236b('0x78')][_0x236b('0x32')]:_0x236b('0xf2'):_0x15bf0c[_0x236b('0x6d')][_0x236b('0xdb')]+(_0x15bf0c['Contact'][_0x236b('0xdc')]?'\x20'+_0x15bf0c['Contact']['lastName']:''),'body':_0x15bf0c[_0x236b('0xdd')]?_0x15bf0c['Attachment'][_0x236b('0xec')]:_0x15bf0c['body'],'direction':_0x15bf0c[_0x236b('0xdf')]===_0x236b('0xf1')?'A':'C','secret':_0x15bf0c['secret'],'read':_0x15bf0c[_0x236b('0x84')],'attachment':_0x15bf0c[_0x236b('0xdd')]};})[_0x236b('0x72')]()};return ejs['renderFile'](path['join'](config[_0x236b('0xd6')],'server',_0x236b('0xf3'),_0x236b('0xf4')),{'interaction':_0x3fcd90})[_0x236b('0x2c')](function(_0x5633d8){var _0x354e8f=path[_0x236b('0xd5')](_0x3b9e11,_0x236b('0xf5')+_0x38dda1['id']+'-'+_0xe7c5f7+_0x236b('0xf6'));var _0x1c2d0c={'path':_0x354e8f,'channel':_0x236b('0xe5'),'interactionId':_0x38dda1['id']};return pdf[_0x236b('0xf7')](_0x5633d8,_0x1c2d0c);})[_0x236b('0x2c')](function(){return new BPromise(function(_0x3a6c1b,_0x383835){zipdir(_0x3b9e11,{'saveTo':_0x51d280},function(_0x34c8a4,_0x1d8550){if(_0x34c8a4)return _0x383835(_0x34c8a4);return _0x3a6c1b(_0x1d8550);});})[_0x236b('0x2c')](function(){return new BPromise(function(_0x32ea85,_0x1ed872){rimraf(_0x3b9e11,function(_0x4a4468){if(_0x4a4468)_0x1ed872(_0x4a4468);return _0x32ea85();});});})['then'](function(){return _0x21094a['download'](_0x51d280,_0x3d9f16,function(_0x4b987b){if(_0x4b987b){console['log'](_0x236b('0xf8'),_0x4b987b);}else{fs[_0x236b('0xf9')](_0x51d280);}});});});}else{return _0x21094a[_0x236b('0x1e')](0xc8);}})[_0x236b('0x36')](handleError(_0x21094a,null));};
\ No newline at end of file
+var _0x8773=['value','having','`\x20>\x200','Contact','operator','$substring','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','start','body','isEmpty','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20=\x20?','read','`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','QueryTypes','SELECT','clone','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','OpenchannelInteraction','a.key','Account.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','contactName','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','Owner.fullname','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','OpenchannelInteractionId','all','rows','params','includeAll','options','create','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','rawAttributes','nolimit','$gte','include','findAll','addTags','setTags','spread','Tag','emit','openchannelInteractionTags:save','removeTags','join','root','server','files','tmp','attachments','CmContact','firstName','Attachment','Messages','direction','secret','OpenchannelAccount','Owner','get','mkdirSync','Openchannel','Account','N.A.','format','YYYY-MM-DD\x20HH:mm:ss','closedAt','disposition','threadId','Public','Private','existsSync','createReadStream','createWriteStream','basename','out','System','lastName','renderFile','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','download','err','unlinkSync','rimraf','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','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','name','map','fullname','Tags','TagIds','split','forEach','push','catch','waiting','talking','unmanaged','closed','UserId','answered','total','index','fieldName','type','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','order','sort','where','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.OpenchannelInteractionId','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','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','t.id\x20=\x20it.TagId','expr','search','parseSearch','conditions','length','find','unreadMessages'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x8773,0x179));var _0x3877=function(_0x49c524,_0x2f91e8){_0x49c524=_0x49c524-0x0;var _0xf98507=_0x8773[_0x49c524];return _0xf98507;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3877('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3877('0x1'));var rp=require(_0x3877('0x2'));var moment=require(_0x3877('0x3'));var BPromise=require(_0x3877('0x4'));var Mustache=require(_0x3877('0x5'));var util=require('util');var path=require(_0x3877('0x6'));var sox=require(_0x3877('0x7'));var csv=require(_0x3877('0x8'));var ejs=require(_0x3877('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3877('0xa'));var squel=require(_0x3877('0xb'));var crypto=require(_0x3877('0xc'));var jsforce=require(_0x3877('0xd'));var deskjs=require(_0x3877('0xe'));var toCsv=require(_0x3877('0x8'));var querystring=require(_0x3877('0xf'));var Papa=require(_0x3877('0x10'));var Redis=require(_0x3877('0x11'));var authService=require(_0x3877('0x12'));var qs=require(_0x3877('0x13'));var as=require('../../components/parsers/advancedSearch');var pdf=require('../../components/export/pdf');var hardwareService=require(_0x3877('0x14'));var logger=require(_0x3877('0x15'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x3877('0x16'));var db=require(_0x3877('0x17'))['db'];config[_0x3877('0x18')]=_[_0x3877('0x19')](config[_0x3877('0x18')],{'host':_0x3877('0x1a'),'port':0x18eb});var socket=require(_0x3877('0x1b'))(new Redis(config[_0x3877('0x18')]));require(_0x3877('0x1c'))['register'](socket);function respondWithStatusCode(_0x5a8c9b,_0x49bbbb){_0x49bbbb=_0x49bbbb||0xcc;return function(_0x23dffd){if(_0x23dffd){return _0x5a8c9b[_0x3877('0x1d')](_0x49bbbb);}return _0x5a8c9b[_0x3877('0x1e')](_0x49bbbb)[_0x3877('0x1f')]();};}function respondWithResult(_0x1e820f,_0x5598aa){_0x5598aa=_0x5598aa||0xc8;return function(_0x50b351){if(_0x50b351){return _0x1e820f['status'](_0x5598aa)[_0x3877('0x20')](_0x50b351);}};}function respondWithFilteredResult(_0x4e99dd,_0x254ff8){return function(_0x24443a){if(_0x24443a){var _0x24368b=typeof _0x254ff8[_0x3877('0x21')]===_0x3877('0x22')&&typeof _0x254ff8[_0x3877('0x23')]===_0x3877('0x22');var _0x176b18=_0x24443a[_0x3877('0x24')];var _0x31942a=_0x24368b?0x0:_0x254ff8['offset'];var _0x15d592=_0x24368b?_0x24443a[_0x3877('0x24')]:_0x254ff8[_0x3877('0x21')]+_0x254ff8[_0x3877('0x23')];var _0x3ccda6;if(_0x15d592>=_0x176b18){_0x15d592=_0x176b18;_0x3ccda6=0xc8;}else{_0x3ccda6=0xce;}_0x4e99dd[_0x3877('0x1e')](_0x3ccda6);return _0x4e99dd['set'](_0x3877('0x25'),_0x31942a+'-'+_0x15d592+'/'+_0x176b18)['json'](_0x24443a);}return null;};}function patchUpdates(_0x2f1f5c){return function(_0x31b2f3){try{jsonpatch['apply'](_0x31b2f3,_0x2f1f5c,!![]);}catch(_0x3aed00){return BPromise[_0x3877('0x26')](_0x3aed00);}return _0x31b2f3[_0x3877('0x27')]();};}function saveUpdates(_0x3763bf,_0x216452){return function(_0x4a296a){if(_0x4a296a){return _0x4a296a[_0x3877('0x28')](_0x3763bf)[_0x3877('0x29')](function(_0x36725a){return _0x36725a;});}return null;};}function removeEntity(_0x339b11,_0x3e62a0){return function(_0x102463){if(_0x102463){return _0x102463[_0x3877('0x2a')]()[_0x3877('0x29')](function(){_0x339b11['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x6b01b6,_0x250158){return function(_0x1eda2b){if(!_0x1eda2b){_0x6b01b6[_0x3877('0x1d')](0x194);}return _0x1eda2b;};}function handleError(_0x5dec45,_0x8900d8){_0x8900d8=_0x8900d8||0x1f4;return function(_0x36b83a){logger['error'](_0x36b83a['stack']);if(_0x36b83a[_0x3877('0x2b')]){delete _0x36b83a[_0x3877('0x2b')];}_0x5dec45['status'](_0x8900d8)['send'](_0x36b83a);};}function getInteractionUsers(_0x4544c6,_0x84e97c){return new BPromise(function(_0x291993,_0x2e53e4){try{if(_0x84e97c[_0x4544c6['id']]){_0x4544c6['Users']=_[_0x3877('0x2c')](_0x84e97c[_0x4544c6['id']],function(_0x533754){return{'id':_0x533754['id'],'fullname':_0x533754[_0x3877('0x2d')]};});}}catch(_0x5bead3){_0x2e53e4(_0x5bead3);}_0x291993(_0x4544c6);});}function getInteractionTags(_0x2f2868,_0x5939f4){return new BPromise(function(_0x2af631,_0x20578d){try{if(_0x2f2868['TagIds']){_0x2f2868[_0x3877('0x2e')]=[];_0x2f2868[_0x3877('0x2f')][_0x3877('0x30')](',')[_0x3877('0x31')](function(_0x2c3f28){_0x2f2868['Tags'][_0x3877('0x32')](_0x5939f4[_0x2c3f28]);});}delete _0x2f2868['TagIds'];}catch(_0x52e89e){_0x20578d(_0x52e89e);}_0x2af631(_0x2f2868);});}function updateOpenchannelInteraction(_0x23364c,_0x390aec,_0x25156c){return new BPromise(function(_0x3cc2fc,_0x28d18d){return getInteractionUsers(_0x23364c,_0x25156c)[_0x3877('0x29')](function(_0x266a43){return getInteractionTags(_0x266a43,_0x390aec);})[_0x3877('0x29')](function(_0x4abf67){return getStateInteraction(_0x4abf67);})[_0x3877('0x29')](function(_0x3af8f2){_0x3cc2fc(_0x3af8f2);})[_0x3877('0x33')](function(_0x85090e){_0x28d18d(_0x85090e);});});}function getStateInteraction(_0x205ab9){return new BPromise(function(_0x40ad45){_0x205ab9[_0x3877('0x34')]=0x0;_0x205ab9[_0x3877('0x35')]=0x0;_0x205ab9['answered']=0x0;_0x205ab9[_0x3877('0x36')]=0x0;_0x205ab9['total']=0x0;if(!_0x205ab9[_0x3877('0x37')]&&!_0x205ab9['UserId']){_0x205ab9[_0x3877('0x34')]+=0x1;}if(!_0x205ab9[_0x3877('0x37')]&&_0x205ab9[_0x3877('0x38')]){_0x205ab9['talking']+=0x1;if(_0x205ab9[_0x3877('0x34')]){_0x205ab9['waiting']-=0x1;}}if(_0x205ab9[_0x3877('0x37')]&&_0x205ab9[_0x3877('0x38')]){_0x205ab9[_0x3877('0x39')]+=0x1;if(_0x205ab9['talking']){_0x205ab9[_0x3877('0x35')]-=0x1;}}if(_0x205ab9[_0x3877('0x37')]&&!_0x205ab9['UserId']){_0x205ab9['unmanaged']+=0x1;if(_0x205ab9[_0x3877('0x34')]){_0x205ab9[_0x3877('0x34')]-=0x1;}}_0x205ab9[_0x3877('0x3a')]+=0x1;_0x40ad45(_0x205ab9);});}exports[_0x3877('0x3b')]=function(_0x43acf1,_0x56eb7c){var _0x3cd32d={},_0x44f19a={},_0x546370={'count':0x0,'rows':[]};var _0x12f421=_[_0x3877('0x2c')](db['OpenchannelInteraction']['rawAttributes'],function(_0x23b96f){return{'name':_0x23b96f[_0x3877('0x3c')],'type':_0x23b96f[_0x3877('0x3d')]['key']};});_0x44f19a[_0x3877('0x3e')]=_[_0x3877('0x2c')](_0x12f421,_0x3877('0x2b'));_0x44f19a[_0x3877('0x3f')]=_[_0x3877('0x40')](_0x43acf1[_0x3877('0x3f')]);_0x44f19a[_0x3877('0x41')]=_['intersection'](_0x44f19a[_0x3877('0x3e')],_0x44f19a[_0x3877('0x3f')]);_0x3cd32d[_0x3877('0x42')]=_[_0x3877('0x43')](_0x44f19a[_0x3877('0x3e')],qs[_0x3877('0x44')](_0x43acf1[_0x3877('0x3f')][_0x3877('0x44')]));_0x3cd32d[_0x3877('0x42')]=_0x3cd32d[_0x3877('0x42')]['length']?_0x3cd32d[_0x3877('0x42')]:_0x44f19a['model'];if(!_0x43acf1[_0x3877('0x3f')][_0x3877('0x45')]('nolimit')){_0x3cd32d['limit']=qs['limit'](_0x43acf1[_0x3877('0x3f')][_0x3877('0x23')]);_0x3cd32d[_0x3877('0x21')]=qs[_0x3877('0x21')](_0x43acf1[_0x3877('0x3f')][_0x3877('0x21')]);}_0x3cd32d[_0x3877('0x46')]=qs[_0x3877('0x47')](_0x43acf1[_0x3877('0x3f')][_0x3877('0x47')]);_0x3cd32d[_0x3877('0x48')]=qs[_0x3877('0x41')](_[_0x3877('0x49')](_0x43acf1[_0x3877('0x3f')],_0x44f19a[_0x3877('0x41')]),_0x12f421);var _0x6f8e19=[];var _0x5f443b=squel[_0x3877('0x4a')]()[_0x3877('0x4b')]('id')[_0x3877('0x4b')](_0x3877('0x2b'))[_0x3877('0x4b')](_0x3877('0x4c'))[_0x3877('0x4d')](_0x3877('0x4e'));var _0x30bf0c=squel[_0x3877('0x4a')]()[_0x3877('0x4b')](_0x3877('0x4f'))[_0x3877('0x4b')](_0x3877('0x50'))[_0x3877('0x4b')](_0x3877('0x51'))[_0x3877('0x4d')](_0x3877('0x52'),'ui')[_0x3877('0x53')](_0x3877('0x54'),'u',_0x3877('0x55'));var _0x149f49=squel['select']()['from'](_0x3877('0x56'),'i')[_0x3877('0x53')]('cm_contacts','c',_0x3877('0x57'))[_0x3877('0x53')](_0x3877('0x54'),'o',_0x3877('0x58'))[_0x3877('0x53')]('openchannel_accounts','a',_0x3877('0x59'))[_0x3877('0x53')](_0x3877('0x5a'),'me','me.OpenchannelInteractionId\x20=\x20i.id')[_0x3877('0x53')]('openchannel_interaction_has_tags','it','it.OpenchannelInteractionId\x20=\x20i.id')[_0x3877('0x53')](_0x3877('0x4e'),'t',_0x3877('0x5b'));var _0x4eeedc=squel['expr']();var _0x5edaa1=[];var _0x31a469=squel[_0x3877('0x5c')]();var _0x3b14fb;if(_0x43acf1['query'][_0x3877('0x5d')]){_0x3b14fb=as[_0x3877('0x5e')](_0x43acf1[_0x3877('0x3f')]['search']);var _0x16506b=_0x3b14fb['sqlOperator'];for(var _0x2810c3=0x0;_0x2810c3<_0x3b14fb[_0x3877('0x5f')][_0x3877('0x60')];_0x2810c3++){var _0x3374c1=_0x3b14fb[_0x3877('0x5f')][_0x2810c3];var _0xade389='i';var _0x267ca9=_[_0x3877('0x61')](_0x12f421,['name',_0x3374c1[_0x3877('0x4b')]]);if(!_0x267ca9){switch(_0x3374c1[_0x3877('0x4b')]){case _0x3877('0x62'):if(_0x3374c1[_0x3877('0x63')]==0x1){_0x149f49[_0x3877('0x64')]('`'+_0x3374c1[_0x3877('0x4b')]+'`\x20=\x200');}else{_0x149f49[_0x3877('0x64')]('`'+_0x3374c1['field']+_0x3877('0x65'));}break;case _0x3877('0x66'):if(_0x3374c1[_0x3877('0x67')]===_0x3877('0x68')){if(_0x3374c1[_0x3877('0x63')]['split']('\x20')[_0x3877('0x60')]>0x1){_0x4eeedc[_0x16506b]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x3877('0x69')](_0x3374c1['value']),null);}else{var _0x5f5b0f='%'+_0x3374c1[_0x3877('0x63')]+'%';_0x4eeedc[_0x16506b](_0x3877('0x6a'),_0x5f5b0f,_0x5f5b0f,_0x5f5b0f);}}else{_0x267ca9=_[_0x3877('0x61')](_0x12f421,[_0x3877('0x2b'),_0x3877('0x6b')]);_0x3374c1[_0x3877('0x4b')]='ContactId';_0x14068b=as[_0x3877('0x6c')](_0xade389,_0x267ca9[_0x3877('0x3d')],_0x3374c1);_0x4eeedc[_0x16506b](_0x14068b[_0x3877('0x6d')],_0x14068b['value']['start'],_0x14068b[_0x3877('0x63')][_0x3877('0x1f')]);}break;case'Tag':var _0xb3346d=_0x3374c1[_0x3877('0x63')][_0x3877('0x30')](',')[_0x3877('0x2c')](function(_0x46cf51){return Number(_0x46cf51);});_0xb3346d[_0x3877('0x31')](function(_0x253a22){_0x31a469['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x253a22+',%');});_0x5edaa1=_[_0x3877('0x6e')](_0x5edaa1,_0xb3346d);break;case _0x3877('0x6f'):if(_0x3374c1[_0x3877('0x67')]==='$substring'){_0x4eeedc[_0x16506b](_0x3877('0x70'),'%'+_0x3374c1[_0x3877('0x63')]+'%',null);}else{_0x267ca9=_[_0x3877('0x61')](_0x12f421,[_0x3877('0x2b'),_0x3877('0x38')]);_0x3374c1[_0x3877('0x4b')]=_0x3877('0x38');_0x14068b=as[_0x3877('0x6c')](_0xade389,_0x267ca9['type'],_0x3374c1);_0x4eeedc[_0x16506b](_0x14068b[_0x3877('0x6d')],_0x14068b[_0x3877('0x63')][_0x3877('0x71')],_0x14068b[_0x3877('0x63')][_0x3877('0x1f')]);}break;case _0x3877('0x72'):_0x14068b=as['buildExpression']('me',null,_0x3374c1);_0x4eeedc[_0x16506b](_0x14068b[_0x3877('0x6d')],_0x14068b[_0x3877('0x63')][_0x3877('0x71')],_0x14068b[_0x3877('0x63')][_0x3877('0x1f')]);break;}}else{var _0x14068b=as[_0x3877('0x6c')](_0xade389,_0x267ca9[_0x3877('0x3d')],_0x3374c1);_0x4eeedc[_0x16506b](_0x14068b[_0x3877('0x6d')],_0x14068b[_0x3877('0x63')][_0x3877('0x71')],_0x14068b[_0x3877('0x63')][_0x3877('0x1f')]);}}}else{var _0x11ce5a=_(_0x43acf1[_0x3877('0x3f')])[_0x3877('0x40')]()['map'](function(_0x410329){return _['some'](_0x12f421,['name',_0x410329])?_0x410329:undefined;})['compact']()[_0x3877('0x63')]();if(!_[_0x3877('0x73')](_0x11ce5a)){_0x11ce5a['forEach'](function(_0x1f5263){if(_0x1f5263===_0x3877('0x74')){_0x149f49[_0x3877('0x48')](_0x3877('0x75'),[][_0x3877('0x76')](_0x43acf1[_0x3877('0x3f')][_0x1f5263]));}else if(_0x1f5263===_0x3877('0x77')){var _0x1afd87=JSON['parse'](_0x43acf1[_0x3877('0x3f')][_0x1f5263])['$gte'];var _0x33b812=JSON[_0x3877('0x78')](_0x43acf1[_0x3877('0x3f')][_0x1f5263])[_0x3877('0x79')];_0x149f49['where'](_0x3877('0x7a'),_0x1afd87,_0x33b812);}else{if(_0x43acf1[_0x3877('0x3f')][_0x1f5263]==='null'){_0x149f49[_0x3877('0x48')]('i.'+_0x1f5263+'\x20IS\x20NULL');}else{_0x149f49['where']('i.'+_0x1f5263+_0x3877('0x7b'),_0x43acf1[_0x3877('0x3f')][_0x1f5263]);}}});}if(_0x43acf1['query'][_0x3877('0x7c')]){if(_0x43acf1[_0x3877('0x3f')][_0x3877('0x7c')]==0x1){_0x149f49[_0x3877('0x64')](_0x3877('0x7d'));}else{_0x149f49[_0x3877('0x64')]('`unreadMessages`\x20>\x200');}}if(_0x43acf1[_0x3877('0x3f')]['tag']){_0x5edaa1=_[_0x3877('0x7e')](_0x43acf1[_0x3877('0x3f')]['tag'])?_0x43acf1[_0x3877('0x3f')][_0x3877('0x7f')]:new Array(_0x43acf1['query'][_0x3877('0x7f')]);_0x5edaa1[_0x3877('0x31')](function(_0x4f7050){_0x31a469['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x4f7050+',%');});}if(_0x43acf1[_0x3877('0x3f')][_0x3877('0x80')]){var _0x23b797=_0x43acf1[_0x3877('0x3f')]['filter'][_0x3877('0x81')]('\x5c','\x5c\x5c')[_0x3877('0x81')](/'/g,'\x27\x27');if(qs[_0x3877('0x82')](_0x23b797)){_0x4eeedc['or'](_0x3877('0x83'),_0x23b797+'%');}else{_0x4eeedc['or'](_0x3877('0x84'),qs[_0x3877('0x69')](_0x23b797))['or']('i.from\x20LIKE\x20?',_0x23b797+'%')['or'](_0x3877('0x85'),_0x23b797+'%');}}}_0x149f49[_0x3877('0x48')](_0x4eeedc);_0x149f49[_0x3877('0x86')](_0x3877('0x87'));var _0x5e939f={'type':db['Sequelize'][_0x3877('0x88')][_0x3877('0x89')],'raw':!![]};var _0x3be880=_0x149f49[_0x3877('0x8a')]();_0x3be880[_0x3877('0x4b')](_0x3877('0x87'));_0x3be880[_0x3877('0x4b')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x3877('0x62'));if(_0x3cd32d[_0x3877('0x46')]){_0x3cd32d[_0x3877('0x46')]['forEach'](function(_0xf07e57){var _0x47766d=_0xf07e57[0x0]==='contactName'?_0xf07e57[0x0]:'i.'+_0xf07e57[0x0];_0x149f49[_0x3877('0x46')](_0x47766d,_0xf07e57[0x1]==='DESC'?![]:!![]);});}if(!_[_0x3877('0x73')](_0x5edaa1)){_0x149f49['having'](_0x31a469);_0x3be880[_0x3877('0x48')]('t.id\x20IN\x20?',_0x5edaa1);}BPromise[_0x3877('0x8b')]()[_0x3877('0x29')](function(){if(!_0x3b14fb){if(_0x43acf1[_0x3877('0x3f')]['OpenchannelAccountId'])return;_0x3be880[_0x3877('0x48')](_0x3877('0x8c'));_0x149f49[_0x3877('0x48')](_0x3877('0x8c'));return;}if(_0x43acf1[_0x3877('0x8d')][_0x3877('0x8e')]!==_0x3877('0x8f'))return;return _0x43acf1[_0x3877('0x8d')][_0x3877('0x90')]({'attributes':['id'],'raw':!![]})[_0x3877('0x29')](function(_0x353669){if(_['isEmpty'](_0x353669)){_0x3be880['where'](_0x3877('0x91'));_0x149f49['where']('i.OpenchannelAccountId\x20IS\x20NULL');}else{_0x3be880[_0x3877('0x48')](_0x3877('0x75'),_[_0x3877('0x2c')](_0x353669,'id'));_0x149f49[_0x3877('0x48')](_0x3877('0x75'),_[_0x3877('0x2c')](_0x353669,'id'));}});})[_0x3877('0x29')](function(){if(_0x43acf1[_0x3877('0x8d')][_0x3877('0x8e')]===_0x3877('0x8f')&&!_0x3b14fb&&!_0x43acf1[_0x3877('0x3f')][_0x3877('0x74')])return[];return db[_0x3877('0x92')][_0x3877('0x3f')](_0x3be880[_0x3877('0x93')](),_0x5e939f);})[_0x3877('0x29')](function(_0x39fd7d){_0x546370[_0x3877('0x24')]=_0x39fd7d['length'];if(_0x546370[_0x3877('0x24')]===0x0)return[];return db[_0x3877('0x92')][_0x3877('0x3f')](_0x5f443b[_0x3877('0x93')](),_0x5e939f)[_0x3877('0x29')](function(_0x5c181f){_0x6f8e19=_[_0x3877('0x94')](_0x5c181f,'id');_0x5e939f=_[_0x3877('0x95')](_0x5e939f,{'model':db[_0x3877('0x96')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x43acf1[_0x3877('0x3f')]['fields']){_0x3cd32d[_0x3877('0x42')][_0x3877('0x31')](function(_0x3712cb){_0x149f49[_0x3877('0x4b')]('i.'+_0x3712cb);});}else{_0x149f49['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');_0x149f49['field'](_0x3877('0x97'),_0x3877('0x98'));_0x149f49[_0x3877('0x4b')]('a.mandatoryDisposition',_0x3877('0x99'));_0x149f49['field'](_0x3877('0x9a'),_0x3877('0x9b'));_0x149f49['field'](_0x3877('0x9c'));_0x149f49[_0x3877('0x4b')](_0x3877('0x9d'),_0x3877('0x9e'));_0x149f49[_0x3877('0x4b')](_0x3877('0x9f'),_0x3877('0xa0'));_0x149f49[_0x3877('0x4b')](_0x3877('0xa1'),_0x3877('0xa2'));_0x149f49[_0x3877('0x4b')](_0x3877('0xa3'),_0x3877('0xa4'));_0x149f49[_0x3877('0x4b')](_0x3877('0xa5'),_0x3877('0xa6'));_0x149f49[_0x3877('0x4b')](_0x3877('0xa7'),_0x3877('0xa8'));_0x149f49['field']('o.fullname',_0x3877('0xa9'));_0x149f49['field']('o.internal','Owner.internal');_0x149f49['field'](_0x3877('0xaa'),_0x3877('0x2f'));}if(_0x3cd32d[_0x3877('0x23')])_0x149f49['limit'](_0x3cd32d[_0x3877('0x23')]);if(_0x3cd32d['offset'])_0x149f49[_0x3877('0x21')](_0x3cd32d[_0x3877('0x21')]);return db[_0x3877('0x92')]['query'](_0x149f49[_0x3877('0x93')](),_0x5e939f);})[_0x3877('0x29')](function(_0x3c8933){if(_0x3c8933[_0x3877('0x60')]>0x0)_0x30bf0c[_0x3877('0x48')](_0x3877('0xab'),_[_0x3877('0x2c')](_0x3c8933,'id'));return db['sequelize'][_0x3877('0x3f')](_0x30bf0c[_0x3877('0x93')](),_0x5e939f)[_0x3877('0x29')](function(_0xd8f1fd){var _0x1b7ba9=_['groupBy'](_0xd8f1fd,_0x3877('0xac'));var _0x1f8f35=[];_0x3c8933[_0x3877('0x31')](function(_0x198c97){_0x1f8f35['push'](updateOpenchannelInteraction(_0x198c97,_0x6f8e19,_0x1b7ba9));});return BPromise[_0x3877('0xad')](_0x1f8f35);});});})[_0x3877('0x29')](function(_0x2cacd3){_0x546370[_0x3877('0xae')]=_0x2cacd3;return _0x546370;})[_0x3877('0x29')](respondWithFilteredResult(_0x56eb7c,_0x3cd32d))['catch'](handleError(_0x56eb7c,null));};exports['show']=function(_0x3cfcbe,_0x3d3686){var _0x124af5={};if(_0x3cfcbe['query']['type']&&_0x3cfcbe[_0x3877('0x3f')][_0x3877('0x3d')]===_0x3877('0x4d')){_0x124af5[_0x3877('0x4d')]=_0x3cfcbe[_0x3877('0xaf')]['id'];}else{_0x124af5['id']=_0x3cfcbe[_0x3877('0xaf')]['id'];}var _0x130a30={'raw':![],'where':_0x124af5},_0x391709={};_0x391709['model']=_[_0x3877('0x40')](db['OpenchannelInteraction']['rawAttributes']);_0x391709[_0x3877('0x3f')]=_[_0x3877('0x40')](_0x3cfcbe[_0x3877('0x3f')]);_0x391709[_0x3877('0x41')]=_[_0x3877('0x43')](_0x391709['model'],_0x391709[_0x3877('0x3f')]);_0x130a30[_0x3877('0x42')]=_[_0x3877('0x43')](_0x391709['model'],qs[_0x3877('0x44')](_0x3cfcbe['query'][_0x3877('0x44')]));_0x130a30[_0x3877('0x42')]=_0x130a30[_0x3877('0x42')][_0x3877('0x60')]?_0x130a30[_0x3877('0x42')]:_0x391709[_0x3877('0x3e')];if(_0x3cfcbe[_0x3877('0x3f')][_0x3877('0xb0')]){_0x130a30['include']=[{'all':!![]}];}_0x130a30=_[_0x3877('0x95')]({},_0x130a30,_0x3cfcbe[_0x3877('0xb1')]);return db['OpenchannelInteraction'][_0x3877('0x61')](_0x130a30)[_0x3877('0x29')](handleEntityNotFound(_0x3d3686,null))[_0x3877('0x29')](respondWithResult(_0x3d3686,null))[_0x3877('0x33')](handleError(_0x3d3686,null));};exports[_0x3877('0xb2')]=function(_0x5277b8,_0x488509){return db[_0x3877('0x96')][_0x3877('0xb2')](_0x5277b8['body'],{})[_0x3877('0x29')](respondWithResult(_0x488509,0xc9))[_0x3877('0x33')](handleError(_0x488509,null));};exports['update']=function(_0x1303bf,_0x3db4f9){if(_0x1303bf[_0x3877('0x72')]['id']){delete _0x1303bf[_0x3877('0x72')]['id'];}return db[_0x3877('0x96')][_0x3877('0x61')]({'where':{'id':_0x1303bf['params']['id']}})[_0x3877('0x29')](handleEntityNotFound(_0x3db4f9,null))[_0x3877('0x29')](saveUpdates(_0x1303bf['body'],null))[_0x3877('0x29')](respondWithResult(_0x3db4f9,null))['catch'](handleError(_0x3db4f9,null));};exports['destroy']=function(_0x5c20c1,_0x549bf4){return db[_0x3877('0x96')]['find']({'where':{'id':_0x5c20c1[_0x3877('0xaf')]['id']}})[_0x3877('0x29')](handleEntityNotFound(_0x549bf4,null))[_0x3877('0x29')](removeEntity(_0x549bf4,null))['catch'](handleError(_0x549bf4,null));};exports[_0x3877('0xb3')]=function(_0x14ae12,_0x271b9c){return db[_0x3877('0x96')]['describe']()[_0x3877('0x29')](respondWithResult(_0x271b9c,null))[_0x3877('0x33')](handleError(_0x271b9c,null));};exports[_0x3877('0xb4')]=function(_0x463fbe,_0x2a3140,_0x18501d){return db[_0x3877('0xb5')]['find']({'where':{'id':_0x463fbe[_0x3877('0xaf')]['id']}})['then'](handleEntityNotFound(_0x2a3140,null))[_0x3877('0x29')](function(_0x1811b6){if(_0x1811b6){return _0x1811b6[_0x3877('0xb4')](_0x463fbe[_0x3877('0x72')][_0x3877('0xb6')],_[_0x3877('0xb7')](_0x463fbe[_0x3877('0x72')],['ids','id'])||{});}})[_0x3877('0x29')](respondWithResult(_0x2a3140,null))[_0x3877('0x33')](handleError(_0x2a3140,null));};exports[_0x3877('0xb8')]=function(_0x430d24,_0x313ad0,_0x311cbf){var _0x3da9d6={'raw':![],'where':{}};var _0xfcad95={};var _0x389fed={'count':0x0,'rows':[]};return db['OpenchannelInteraction']['findOne']({'where':{'id':_0x430d24[_0x3877('0xaf')]['id']}})['then'](handleEntityNotFound(_0x313ad0,null))[_0x3877('0x29')](function(_0x3c6022){if(_0x3c6022){_0xfcad95[_0x3877('0x3e')]=_[_0x3877('0x40')](db[_0x3877('0xb5')][_0x3877('0xb9')]);_0xfcad95[_0x3877('0x3f')]=_[_0x3877('0x40')](_0x430d24['query']);_0xfcad95[_0x3877('0x41')]=_[_0x3877('0x43')](_0xfcad95[_0x3877('0x3e')],_0xfcad95[_0x3877('0x3f')]);_0x3da9d6[_0x3877('0x42')]=_[_0x3877('0x43')](_0xfcad95[_0x3877('0x3e')],qs[_0x3877('0x44')](_0x430d24[_0x3877('0x3f')][_0x3877('0x44')]));_0x3da9d6[_0x3877('0x42')]=_0x3da9d6['attributes']['length']?_0x3da9d6[_0x3877('0x42')]:_0xfcad95[_0x3877('0x3e')];if(!_0x430d24['query']['hasOwnProperty'](_0x3877('0xba'))){_0x3da9d6['limit']=qs['limit'](_0x430d24[_0x3877('0x3f')]['limit']);_0x3da9d6[_0x3877('0x21')]=qs['offset'](_0x430d24[_0x3877('0x3f')]['offset']);}_0x3da9d6['order']=qs[_0x3877('0x47')](_0x430d24['query']['sort']);_0x3da9d6[_0x3877('0x48')]=qs['filters'](_[_0x3877('0x49')](_0x430d24[_0x3877('0x3f')],_0xfcad95[_0x3877('0x41')]));_0x3da9d6[_0x3877('0x48')][_0x3877('0xac')]=_0x3c6022['id'];if(_0x430d24[_0x3877('0x3f')][_0x3877('0x80')]){_0x3da9d6[_0x3877('0x48')]=_[_0x3877('0x95')](_0x3da9d6[_0x3877('0x48')],{'$or':_['map'](_0x3da9d6['attributes'],function(_0x74de08){var _0x330783={};_0x330783[_0x74de08]={'$like':'%'+_0x430d24[_0x3877('0x3f')][_0x3877('0x80')]+'%'};return _0x330783;})});}if(_0x430d24[_0x3877('0x3f')][_0x3877('0xbb')]){var _0x5b67e7=_0x430d24[_0x3877('0x3f')][_0x3877('0xbb')][_0x3877('0x30')](',');var _0x4ac5ba={};_0x4ac5ba[_0x5b67e7[0x0]]={'$gte':moment(_0x5b67e7[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x3da9d6[_0x3877('0x48')]=_['merge'](_0x3da9d6[_0x3877('0x48')],_0x4ac5ba);}_0x3da9d6=_[_0x3877('0x95')]({},_0x3da9d6,_0x430d24[_0x3877('0xb1')]);return db[_0x3877('0xb5')][_0x3877('0x24')]({'where':_0x3da9d6[_0x3877('0x48')]})[_0x3877('0x29')](function(_0x21c3bf){_0x389fed['count']=_0x21c3bf;if(_0x430d24[_0x3877('0x3f')][_0x3877('0xb0')]){_0x3da9d6[_0x3877('0xbc')]=[{'all':!![]}];}return db['OpenchannelMessage'][_0x3877('0xbd')](_0x3da9d6);})[_0x3877('0x29')](function(_0x1fcaaf){_0x389fed[_0x3877('0xae')]=_0x1fcaaf;return _0x389fed;});}})['then'](respondWithFilteredResult(_0x313ad0,_0x3da9d6))['catch'](handleError(_0x313ad0,null));};exports[_0x3877('0xbe')]=function(_0x438126,_0x251bc5,_0x289e06){return db[_0x3877('0x96')][_0x3877('0x61')]({'where':{'id':_0x438126[_0x3877('0xaf')]['id']}})['then'](handleEntityNotFound(_0x251bc5,null))[_0x3877('0x29')](function(_0x42a48d){if(_0x42a48d){return _0x42a48d[_0x3877('0xbf')](_0x438126[_0x3877('0x72')][_0x3877('0xb6')],_[_0x3877('0xb7')](_0x438126[_0x3877('0x72')],['ids','id'])||{})[_0x3877('0xc0')](function(){return db[_0x3877('0xc1')][_0x3877('0xbd')]({'attributes':['id',_0x3877('0x2b'),_0x3877('0x4c')],'where':{'id':_0x438126['body']['ids']}});})[_0x3877('0x29')](function(_0x229b3f){socket[_0x3877('0xc2')](_0x3877('0xc3'),{'id':Number(_0x438126[_0x3877('0xaf')]['id']),'tags':_0x229b3f||[]});return{'id':Number(_0x438126[_0x3877('0xaf')]['id']),'tags':_0x229b3f||[]};});}})['then'](respondWithResult(_0x251bc5,null))[_0x3877('0x33')](handleError(_0x251bc5,null));};exports['removeTags']=function(_0xbe7b63,_0x11381c,_0x4cac74){return db['OpenchannelInteraction'][_0x3877('0x61')]({'where':{'id':_0xbe7b63[_0x3877('0xaf')]['id']}})[_0x3877('0x29')](handleEntityNotFound(_0x11381c,null))[_0x3877('0x29')](function(_0x5e87c5){if(_0x5e87c5){return _0x5e87c5[_0x3877('0xc4')](_0xbe7b63[_0x3877('0x3f')]['ids']);}})['then'](respondWithStatusCode(_0x11381c,null))[_0x3877('0x33')](handleError(_0x11381c,null));};exports['download']=function(_0x3c7275,_0x3aaa1c){var _0x15b2d5=moment()['unix']()[_0x3877('0x93')]();var _0x273562=path[_0x3877('0xc5')](config[_0x3877('0xc6')],_0x3877('0xc7'),_0x3877('0xc8'),_0x3877('0xc9'));var _0x10e446=path[_0x3877('0xc5')](config[_0x3877('0xc6')],_0x3877('0xc7'),_0x3877('0xc8'),_0x3877('0xca'));var _0x5dece6=path[_0x3877('0xc5')](_0x273562,_0x15b2d5);var _0x40d56d=util['format']('transcript-%d-%s.zip',_0x3c7275[_0x3877('0xaf')]['id'],_0x15b2d5);var _0x478698=path[_0x3877('0xc5')](_0x273562,_0x40d56d);var _0x19b0b2=[];_0x19b0b2['push']({'model':db['User'],'as':'User','attributes':['id',_0x3877('0x2d')],'raw':!![]});_0x19b0b2[_0x3877('0x32')]({'model':db[_0x3877('0xcb')],'as':'Contact','attributes':['id',_0x3877('0xcc'),'lastName'],'raw':!![]});if(_0x3c7275['query'][_0x3877('0xca')]){_0x19b0b2['push']({'model':db[_0x3877('0xcd')],'as':_0x3877('0xcd'),'raw':!![]});}var _0x488321=[{'model':db[_0x3877('0xb5')],'as':_0x3877('0xce'),'attributes':['id','body',_0x3877('0x77'),_0x3877('0xcf'),_0x3877('0xd0'),_0x3877('0x7c')],'include':_0x19b0b2}];_0x488321['push']({'model':db[_0x3877('0xd1')],'as':'Account','attributes':['id',_0x3877('0x2b')]});_0x488321[_0x3877('0x32')]({'model':db['User'],'as':_0x3877('0xd2'),'attributes':['id','fullname']});return db[_0x3877('0x96')][_0x3877('0x61')]({'where':{'id':_0x3c7275['params']['id']},'include':_0x488321})[_0x3877('0x29')](handleEntityNotFound(_0x3aaa1c,null))[_0x3877('0x29')](function(_0x4f9369){if(_0x4f9369){var _0x565d5e=_0x4f9369[_0x3877('0xd3')]({'plain':!![]});fs[_0x3877('0xd4')](_0x5dece6);var _0x6dc581={'channel':_0x3877('0xd5'),'account':_0x565d5e[_0x3877('0xd6')]['name'],'agent':_0x565d5e['Owner']?_0x565d5e[_0x3877('0xd2')][_0x3877('0x2d')]:_0x3877('0xd7'),'createdAt':moment(_0x565d5e[_0x3877('0x77')])[_0x3877('0xd8')](_0x3877('0xd9'))[_0x3877('0x93')](),'closedAt':_0x565d5e[_0x3877('0x37')]?moment(_0x565d5e[_0x3877('0xda')])[_0x3877('0xd8')](_0x3877('0xd9'))[_0x3877('0x93')]():'','disposition':_0x565d5e[_0x3877('0xdb')],'visibility':_0x565d5e[_0x3877('0xdc')]?_0x3877('0xdd'):_0x3877('0xde'),'messages':_(_0x565d5e['Messages'])['filter']({'secret':![]})[_0x3877('0x2c')](function(_0x1e902e){if(_0x1e902e[_0x3877('0xcd')]){var _0x38a8dd=path[_0x3877('0xc5')](_0x10e446,_0x1e902e[_0x3877('0xcd')]['basename']);if(fs[_0x3877('0xdf')](_0x38a8dd)){fs[_0x3877('0xe0')](_0x38a8dd)['pipe'](fs[_0x3877('0xe1')](path[_0x3877('0xc5')](_0x5dece6,_0x1e902e[_0x3877('0xcd')][_0x3877('0xe2')])));}}return{'date':moment(_0x1e902e[_0x3877('0x77')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0x3877('0x93')](),'sender':_0x1e902e[_0x3877('0xcf')]===_0x3877('0xe3')?_0x1e902e[_0x3877('0x6f')]?_0x1e902e[_0x3877('0x6f')][_0x3877('0x2d')]:_0x3877('0xe4'):_0x1e902e[_0x3877('0x66')][_0x3877('0xcc')]+(_0x1e902e[_0x3877('0x66')][_0x3877('0xe5')]?'\x20'+_0x1e902e['Contact'][_0x3877('0xe5')]:''),'body':_0x1e902e[_0x3877('0xcd')]?_0x1e902e[_0x3877('0xcd')]['basename']:_0x1e902e['body'],'direction':_0x1e902e[_0x3877('0xcf')]===_0x3877('0xe3')?'A':'C','secret':_0x1e902e[_0x3877('0xd0')],'read':_0x1e902e['read'],'attachment':_0x1e902e[_0x3877('0xcd')]};})['value']()};return ejs[_0x3877('0xe6')](path['join'](config[_0x3877('0xc6')],_0x3877('0xc7'),_0x3877('0xe7'),_0x3877('0xe8')),{'interaction':_0x6dc581})['then'](function(_0x19d4a5){var _0x4e0585=path[_0x3877('0xc5')](_0x5dece6,_0x3877('0xe9')+_0x565d5e['id']+'-'+_0x15b2d5+'.pdf');var _0xc4a771={'path':_0x4e0585,'channel':_0x3877('0xd5'),'interactionId':_0x565d5e['id']};return pdf[_0x3877('0xea')](_0x19d4a5,_0xc4a771);})['then'](function(){return new BPromise(function(_0x1c9f08,_0xdf603f){zipdir(_0x5dece6,{'saveTo':_0x478698},function(_0x25fdbd,_0x1318ac){if(_0x25fdbd)return _0xdf603f(_0x25fdbd);return _0x1c9f08(_0x1318ac);});})[_0x3877('0x29')](function(){return new BPromise(function(_0x5e6ab6,_0x317405){rimraf(_0x5dece6,function(_0x3ecbdf){if(_0x3ecbdf)_0x317405(_0x3ecbdf);return _0x5e6ab6();});});})[_0x3877('0x29')](function(){return _0x3aaa1c[_0x3877('0xeb')](_0x478698,_0x40d56d,function(_0xd9dcb1){if(_0xd9dcb1){console['log'](_0x3877('0xec'),_0xd9dcb1);}else{fs[_0x3877('0xed')](_0x478698);}});});});}else{return _0x3aaa1c[_0x3877('0x1d')](0xc8);}})[_0x3877('0x33')](handleError(_0x3aaa1c,null));};
\ No newline at end of file
index 357cbb4..f4af00c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdaf0=['OpenchannelMessage','setMaxListeners','update','remove','getUsers','setDataValue','Users','findAll','then','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x5bc9f2,_0x44628d){var _0x155335=function(_0x261347){while(--_0x261347){_0x5bc9f2['push'](_0x5bc9f2['shift']());}};_0x155335(++_0x44628d);}(_0xdaf0,0x8e));var _0x0daf=function(_0x8b4e2f,_0x5908e4){_0x8b4e2f=_0x8b4e2f-0x0;var _0x2e00c6=_0xdaf0[_0x8b4e2f];return _0x2e00c6;};'use strict';var EventEmitter=require(_0x0daf('0x0'));var OpenchannelInteraction=require(_0x0daf('0x1'))['db']['OpenchannelInteraction'];var OpenchannelMessage=require(_0x0daf('0x1'))['db'][_0x0daf('0x2')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x0daf('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x0daf('0x4'),'afterDestroy':_0x0daf('0x5')};function emitEvent(_0x28ec83){return function(_0x104a26,_0x135b1f,_0x5d35a6){_0x104a26[_0x0daf('0x6')]({'attributes':['id'],'raw':!![]})['then'](function(_0x4cd665){_0x104a26[_0x0daf('0x7')](_0x0daf('0x8'),_0x4cd665['map'](function(_0x554cfa){return{'id':_0x554cfa['id']};}));return OpenchannelMessage[_0x0daf('0x9')]({'where':{'OpenchannelInteractionId':_0x104a26['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0daf('0xa')](function(_0x15f184){_0x104a26[_0x0daf('0x7')](_0x0daf('0xb'),_0x15f184[_0x0daf('0xc')]);OpenchannelInteractionEvents[_0x0daf('0xd')](_0x28ec83+':'+_0x104a26['id'],_0x104a26);OpenchannelInteractionEvents[_0x0daf('0xd')](_0x28ec83,_0x104a26);_0x5d35a6(null);})[_0x0daf('0xe')](_0x5d35a6(null));};}for(var e in events){if(events[_0x0daf('0xf')](e)){var event=events[e];OpenchannelInteraction[_0x0daf('0x10')](e,emitEvent(event));}}module[_0x0daf('0x11')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x6c74=['OpenchannelMessage','setMaxListeners','update','getUsers','then','findAll','unreadMessages','emit','catch','hasOwnProperty','events','../../mysqldb'];(function(_0x172833,_0x14de73){var _0xece4d3=function(_0x1a5141){while(--_0x1a5141){_0x172833['push'](_0x172833['shift']());}};_0xece4d3(++_0x14de73);}(_0x6c74,0xca));var _0x46c7=function(_0x5f3c05,_0x2a8740){_0x5f3c05=_0x5f3c05-0x0;var _0x3b67e4=_0x6c74[_0x5f3c05];return _0x3b67e4;};'use strict';var EventEmitter=require(_0x46c7('0x0'));var OpenchannelInteraction=require(_0x46c7('0x1'))['db']['OpenchannelInteraction'];var OpenchannelMessage=require(_0x46c7('0x1'))['db'][_0x46c7('0x2')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x46c7('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x46c7('0x4'),'afterDestroy':'remove'};function emitEvent(_0x5f2d11){return function(_0x3f5aca,_0x94556c,_0x4a8361){_0x3f5aca[_0x46c7('0x5')]({'attributes':['id'],'raw':!![]})[_0x46c7('0x6')](function(_0x99f7f2){_0x3f5aca['setDataValue']('Users',_0x99f7f2['map'](function(_0x187ec5){return{'id':_0x187ec5['id']};}));return OpenchannelMessage[_0x46c7('0x7')]({'where':{'OpenchannelInteractionId':_0x3f5aca['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x43ac3f){_0x3f5aca['setDataValue'](_0x46c7('0x8'),_0x43ac3f['length']);OpenchannelInteractionEvents[_0x46c7('0x9')](_0x5f2d11+':'+_0x3f5aca['id'],_0x3f5aca);OpenchannelInteractionEvents[_0x46c7('0x9')](_0x5f2d11,_0x3f5aca);_0x4a8361(null);})[_0x46c7('0xa')](_0x4a8361(null));};}for(var e in events){if(events[_0x46c7('0xb')](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents;
\ No newline at end of file
index 12d4ec8..f75a313 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14fb=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelInteraction.attributes','exports','define','OpenchannelInteraction','openchannel_interactions','utf8mb4_unicode_ci','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0xf8b667,_0x167fa6){var _0x3a7369=function(_0x4fa844){while(--_0x4fa844){_0xf8b667['push'](_0xf8b667['shift']());}};_0x3a7369(++_0x167fa6);}(_0x14fb,0x1f4));var _0xb14f=function(_0x260492,_0x391a75){_0x260492=_0x260492-0x0;var _0x2b77a5=_0x14fb[_0x260492];return _0x2b77a5;};'use strict';var _=require(_0xb14f('0x0'));var util=require(_0xb14f('0x1'));var logger=require(_0xb14f('0x2'))(_0xb14f('0x3'));var moment=require('moment');var BPromise=require(_0xb14f('0x4'));var rp=require(_0xb14f('0x5'));var fs=require('fs');var path=require(_0xb14f('0x6'));var rimraf=require(_0xb14f('0x7'));var config=require(_0xb14f('0x8'));var attributes=require(_0xb14f('0x9'));module[_0xb14f('0xa')]=function(_0x44f759,_0xf8e0d2){return _0x44f759[_0xb14f('0xb')](_0xb14f('0xc'),attributes,{'tableName':_0xb14f('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xb14f('0xe'),'hooks':{'beforeUpdate':function(_0x5917ec,_0x191bea,_0xedb485){if(_0x5917ec[_0xb14f('0xf')](_0xb14f('0x10'))){_0x5917ec[_0xb14f('0x11')]=moment()[_0xb14f('0x12')](_0xb14f('0x13'));}_0xedb485(null,_0x5917ec);}}});};
\ No newline at end of file
+var _0x14f0=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','OpenchannelInteraction','utf8mb4','utf8mb4_unicode_ci','closed','closedAt','format','lodash','util','../../config/logger','api'];(function(_0x3a94e1,_0x22e4fd){var _0x6a09d5=function(_0x2d6d1c){while(--_0x2d6d1c){_0x3a94e1['push'](_0x3a94e1['shift']());}};_0x6a09d5(++_0x22e4fd);}(_0x14f0,0xfb));var _0x014f=function(_0x1e4150,_0x55b02a){_0x1e4150=_0x1e4150-0x0;var _0x1ce3ee=_0x14f0[_0x1e4150];return _0x1ce3ee;};'use strict';var _=require(_0x014f('0x0'));var util=require(_0x014f('0x1'));var logger=require(_0x014f('0x2'))(_0x014f('0x3'));var moment=require('moment');var BPromise=require(_0x014f('0x4'));var rp=require(_0x014f('0x5'));var fs=require('fs');var path=require(_0x014f('0x6'));var rimraf=require(_0x014f('0x7'));var config=require(_0x014f('0x8'));var attributes=require('./openchannelInteraction.attributes');module[_0x014f('0x9')]=function(_0x1372df,_0x4934a9){return _0x1372df[_0x014f('0xa')](_0x014f('0xb'),attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x014f('0xc'),'collate':_0x014f('0xd'),'hooks':{'beforeUpdate':function(_0x4c3fcb,_0x21b376,_0x77f4ab){if(_0x4c3fcb['changed'](_0x014f('0xe'))){_0x4c3fcb[_0x014f('0xf')]=moment()[_0x014f('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x77f4ab(null,_0x4c3fcb);}}});};
\ No newline at end of file
index ae3bcf2..e9ba77d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc294=['code','message','info','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','options','where','attributes','debug','AddTagsToOpenchannelInteraction','addTags','ids','omit','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','register','OpenchannelInteraction,\x20%s,\x20%s','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x76517f,_0x325017){var _0x43cc3a=function(_0xd1b968){while(--_0xd1b968){_0x76517f['push'](_0x76517f['shift']());}};_0x43cc3a(++_0x325017);}(_0xc294,0x17b));var _0x4c29=function(_0x313532,_0x33e75f){_0x313532=_0x313532-0x0;var _0x44bc16=_0xc294[_0x313532];return _0x44bc16;};'use strict';var _=require(_0x4c29('0x0'));var util=require(_0x4c29('0x1'));var moment=require(_0x4c29('0x2'));var BPromise=require('bluebird');var rs=require(_0x4c29('0x3'));var fs=require('fs');var Redis=require(_0x4c29('0x4'));var db=require(_0x4c29('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4c29('0x6'))(_0x4c29('0x7'));var config=require(_0x4c29('0x8'));var jayson=require(_0x4c29('0x9'));var client=jayson['client'][_0x4c29('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x4c29('0xb')],{'host':_0x4c29('0xc'),'port':0x18eb});var socket=require(_0x4c29('0xd'))(new Redis(config['redis']));require(_0x4c29('0xe'))[_0x4c29('0xf')](socket);function respondWithRpcPromise(_0x4e6044,_0xdd1365,_0x2f75cd){return new BPromise(function(_0x48bce9,_0x52fae0){return client['request'](_0x4e6044,_0x2f75cd)['then'](function(_0x3702c0){logger['info'](_0x4c29('0x10'),_0xdd1365,'request\x20sent');logger['debug'](_0x4c29('0x11'),_0xdd1365,_0x4c29('0x12'),JSON[_0x4c29('0x13')](_0x3702c0));if(_0x3702c0[_0x4c29('0x14')]){if(_0x3702c0[_0x4c29('0x14')][_0x4c29('0x15')]===0x1f4){logger[_0x4c29('0x14')]('OpenchannelInteraction,\x20%s,\x20%s',_0xdd1365,_0x3702c0['error'][_0x4c29('0x16')]);return _0x52fae0(_0x3702c0['error'][_0x4c29('0x16')]);}logger[_0x4c29('0x14')](_0x4c29('0x10'),_0xdd1365,_0x3702c0[_0x4c29('0x14')][_0x4c29('0x16')]);return _0x48bce9(_0x3702c0[_0x4c29('0x14')][_0x4c29('0x16')]);}else{logger[_0x4c29('0x17')]('OpenchannelInteraction,\x20%s,\x20%s',_0xdd1365,_0x4c29('0x12'));_0x48bce9(_0x3702c0[_0x4c29('0x18')]['message']);}})[_0x4c29('0x19')](function(_0x371d25){logger[_0x4c29('0x14')](_0x4c29('0x10'),_0xdd1365,_0x371d25);_0x52fae0(_0x371d25);});});}exports[_0x4c29('0x1a')]=function(_0x5f4256){var _0x5ed672=this;return new Promise(function(_0x68153a,_0x3d420e){return db[_0x4c29('0x1b')][_0x4c29('0x1c')](_0x5f4256[_0x4c29('0x1d')],{'raw':_0x5f4256[_0x4c29('0x1e')]?_0x5f4256[_0x4c29('0x1e')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5f4256[_0x4c29('0x1e')]?_0x5f4256['options'][_0x4c29('0x1f')]||null:null,'attributes':_0x5f4256[_0x4c29('0x1e')]?_0x5f4256['options'][_0x4c29('0x20')]||null:null,'limit':_0x5f4256['options']?_0x5f4256[_0x4c29('0x1e')]['limit']||null:null})['then'](function(_0x7c35c){logger[_0x4c29('0x17')](_0x4c29('0x1a'),_0x5f4256);logger[_0x4c29('0x21')](_0x4c29('0x1a'),_0x5f4256,JSON[_0x4c29('0x13')](_0x7c35c));_0x68153a(_0x7c35c);})[_0x4c29('0x19')](function(_0x60aa44){logger[_0x4c29('0x14')](_0x4c29('0x1a'),_0x60aa44['message'],_0x5f4256);_0x3d420e(_0x5ed672[_0x4c29('0x14')](0x1f4,_0x60aa44[_0x4c29('0x16')]));});});};exports[_0x4c29('0x22')]=function(_0x349ae9){return new Promise(function(_0x4c848c,_0x36b97f){return db[_0x4c29('0x1b')]['find']({'where':_0x349ae9['options']?_0x349ae9[_0x4c29('0x1e')][_0x4c29('0x1f')]||null:null})['then'](function(_0x2db2ae){if(_0x2db2ae){return _0x2db2ae[_0x4c29('0x23')](_0x349ae9['body'][_0x4c29('0x24')],_[_0x4c29('0x25')](_0x349ae9[_0x4c29('0x1d')],[_0x4c29('0x24'),'id'])||{});}})[_0x4c29('0x26')](function(_0x3c0de3){logger[_0x4c29('0x17')](_0x4c29('0x27'),_0x349ae9);logger[_0x4c29('0x21')](_0x4c29('0x27'),_0x349ae9,JSON['stringify'](_0x3c0de3));_0x4c848c(_0x3c0de3);})[_0x4c29('0x19')](function(_0x4d5a11){logger[_0x4c29('0x14')](_0x4c29('0x27'),_0x4d5a11['message'],_0x349ae9);_0x36b97f(_this[_0x4c29('0x14')](0x1f4,_0x4d5a11[_0x4c29('0x16')]));});});};
\ No newline at end of file
+var _0xb68b=['lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','defaults','localhost','socket.io-emitter','redis','request','then','info','debug','request\x20sent','error','OpenchannelInteraction,\x20%s,\x20%s','message','result','UpdateOpenchannelInteraction','OpenchannelInteraction','body','options','raw','attributes','limit','stringify','catch','AddTagsToOpenchannelInteraction','find','addTags','ids','omit','AddTags'];(function(_0x20c9b2,_0x55d7b1){var _0x2c6030=function(_0x10845f){while(--_0x10845f){_0x20c9b2['push'](_0x20c9b2['shift']());}};_0x2c6030(++_0x55d7b1);}(_0xb68b,0x156));var _0xbb68=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0xb68b[_0x199572];return _0x13cfa3;};'use strict';var _=require(_0xbb68('0x0'));var util=require(_0xbb68('0x1'));var moment=require(_0xbb68('0x2'));var BPromise=require('bluebird');var rs=require(_0xbb68('0x3'));var fs=require('fs');var Redis=require(_0xbb68('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbb68('0x5'));var logger=require(_0xbb68('0x6'))(_0xbb68('0x7'));var config=require('../../config/environment');var jayson=require(_0xbb68('0x8'));var client=jayson['client'][_0xbb68('0x9')]({'port':0x232a});config['redis']=_[_0xbb68('0xa')](config['redis'],{'host':_0xbb68('0xb'),'port':0x18eb});var socket=require(_0xbb68('0xc'))(new Redis(config[_0xbb68('0xd')]));require('./openchannelInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x3422d8,_0x12cc90,_0x47f6ed){return new BPromise(function(_0x5da118,_0x30fa50){return client[_0xbb68('0xe')](_0x3422d8,_0x47f6ed)[_0xbb68('0xf')](function(_0x2b4c70){logger[_0xbb68('0x10')]('OpenchannelInteraction,\x20%s,\x20%s',_0x12cc90,'request\x20sent');logger[_0xbb68('0x11')]('OpenchannelInteraction,\x20%s,\x20%s,\x20%s',_0x12cc90,_0xbb68('0x12'),JSON['stringify'](_0x2b4c70));if(_0x2b4c70[_0xbb68('0x13')]){if(_0x2b4c70[_0xbb68('0x13')]['code']===0x1f4){logger['error'](_0xbb68('0x14'),_0x12cc90,_0x2b4c70[_0xbb68('0x13')]['message']);return _0x30fa50(_0x2b4c70[_0xbb68('0x13')][_0xbb68('0x15')]);}logger[_0xbb68('0x13')](_0xbb68('0x14'),_0x12cc90,_0x2b4c70[_0xbb68('0x13')][_0xbb68('0x15')]);return _0x5da118(_0x2b4c70[_0xbb68('0x13')]['message']);}else{logger['info']('OpenchannelInteraction,\x20%s,\x20%s',_0x12cc90,'request\x20sent');_0x5da118(_0x2b4c70[_0xbb68('0x16')][_0xbb68('0x15')]);}})['catch'](function(_0x451bc1){logger[_0xbb68('0x13')](_0xbb68('0x14'),_0x12cc90,_0x451bc1);_0x30fa50(_0x451bc1);});});}exports[_0xbb68('0x17')]=function(_0x1a4087){var _0x238409=this;return new Promise(function(_0x4b0aa1,_0x46b149){return db[_0xbb68('0x18')]['update'](_0x1a4087[_0xbb68('0x19')],{'raw':_0x1a4087[_0xbb68('0x1a')]?_0x1a4087[_0xbb68('0x1a')][_0xbb68('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1a4087['options']?_0x1a4087[_0xbb68('0x1a')]['where']||null:null,'attributes':_0x1a4087[_0xbb68('0x1a')]?_0x1a4087[_0xbb68('0x1a')][_0xbb68('0x1c')]||null:null,'limit':_0x1a4087[_0xbb68('0x1a')]?_0x1a4087[_0xbb68('0x1a')][_0xbb68('0x1d')]||null:null})[_0xbb68('0xf')](function(_0x3c7128){logger[_0xbb68('0x10')](_0xbb68('0x17'),_0x1a4087);logger[_0xbb68('0x11')](_0xbb68('0x17'),_0x1a4087,JSON[_0xbb68('0x1e')](_0x3c7128));_0x4b0aa1(_0x3c7128);})[_0xbb68('0x1f')](function(_0x2287c0){logger['error'](_0xbb68('0x17'),_0x2287c0[_0xbb68('0x15')],_0x1a4087);_0x46b149(_0x238409[_0xbb68('0x13')](0x1f4,_0x2287c0[_0xbb68('0x15')]));});});};exports[_0xbb68('0x20')]=function(_0x131ab2){return new Promise(function(_0x2220df,_0x5656e0){return db[_0xbb68('0x18')][_0xbb68('0x21')]({'where':_0x131ab2['options']?_0x131ab2[_0xbb68('0x1a')]['where']||null:null})[_0xbb68('0xf')](function(_0x1451c8){if(_0x1451c8){return _0x1451c8[_0xbb68('0x22')](_0x131ab2[_0xbb68('0x19')][_0xbb68('0x23')],_[_0xbb68('0x24')](_0x131ab2[_0xbb68('0x19')],[_0xbb68('0x23'),'id'])||{});}})['spread'](function(_0x31211c){logger[_0xbb68('0x10')](_0xbb68('0x25'),_0x131ab2);logger[_0xbb68('0x11')](_0xbb68('0x25'),_0x131ab2,JSON['stringify'](_0x31211c));_0x2220df(_0x31211c);})[_0xbb68('0x1f')](function(_0x10ac53){logger[_0xbb68('0x13')](_0xbb68('0x25'),_0x10ac53[_0xbb68('0x15')],_0x131ab2);_0x5656e0(_this['error'](0x1f4,_0x10ac53[_0xbb68('0x15')]));});});};
\ No newline at end of file
index ea4527d..0277472 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb617=['register','openchannelInteraction:','./openchannelInteraction.events','save','update','removeListener'];(function(_0x3ea754,_0x118727){var _0x1fe454=function(_0x3c2a9c){while(--_0x3c2a9c){_0x3ea754['push'](_0x3ea754['shift']());}};_0x1fe454(++_0x118727);}(_0xb617,0xce));var _0x7b61=function(_0x1c90cb,_0x1e71c4){_0x1c90cb=_0x1c90cb-0x0;var _0x3d13a1=_0xb617[_0x1c90cb];return _0x3d13a1;};'use strict';var OpenchannelInteractionEvents=require(_0x7b61('0x0'));var events=[_0x7b61('0x1'),'remove',_0x7b61('0x2')];function createListener(_0x4ca07b,_0x403fe7){return function(_0x435bcb){_0x403fe7['emit'](_0x4ca07b,_0x435bcb);};}function removeListener(_0x57efe0,_0x21c255){return function(){OpenchannelInteractionEvents[_0x7b61('0x3')](_0x57efe0,_0x21c255);};}exports[_0x7b61('0x4')]=function(_0x4800d7){for(var _0x2404fd=0x0,_0x4eb0d0=events['length'];_0x2404fd<_0x4eb0d0;_0x2404fd++){var _0x543105=events[_0x2404fd];var _0x504c20=createListener(_0x7b61('0x5')+_0x543105,_0x4800d7);OpenchannelInteractionEvents['on'](_0x543105,_0x504c20);}};
\ No newline at end of file
+var _0x50e0=['removeListener','register','length','openchannelInteraction:','./openchannelInteraction.events','remove','update','emit'];(function(_0x342ff6,_0xc68abf){var _0x163699=function(_0x3429e0){while(--_0x3429e0){_0x342ff6['push'](_0x342ff6['shift']());}};_0x163699(++_0xc68abf);}(_0x50e0,0x1a4));var _0x050e=function(_0x2f312c,_0x4ef878){_0x2f312c=_0x2f312c-0x0;var _0x2b18fa=_0x50e0[_0x2f312c];return _0x2b18fa;};'use strict';var OpenchannelInteractionEvents=require(_0x050e('0x0'));var events=['save',_0x050e('0x1'),_0x050e('0x2')];function createListener(_0x28ecd3,_0x4d97d4){return function(_0x11bdd2){_0x4d97d4[_0x050e('0x3')](_0x28ecd3,_0x11bdd2);};}function removeListener(_0x358c51,_0x234e36){return function(){OpenchannelInteractionEvents[_0x050e('0x4')](_0x358c51,_0x234e36);};}exports[_0x050e('0x5')]=function(_0x470714){for(var _0x42e573=0x0,_0x141854=events[_0x050e('0x6')];_0x42e573<_0x141854;_0x42e573++){var _0x42bbe6=events[_0x42e573];var _0x21e84c=createListener(_0x050e('0x7')+_0x42bbe6,_0x470714);OpenchannelInteractionEvents['on'](_0x42bbe6,_0x21e84c);}};
\ No newline at end of file
index a9fb9fc..71b7a70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['get','isAuthenticated','index','/describe','describe','/:id','post','tracked','openchannel','openchannelmessage:create','put','update','accept','/:id/reject','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelMessage.controller'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_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'));var controller=require(_0x3071('0x7'));router[_0x3071('0x8')]('/',auth[_0x3071('0x9')](),controller[_0x3071('0xa')]);router[_0x3071('0x8')](_0x3071('0xb'),auth[_0x3071('0x9')](),controller[_0x3071('0xc')]);router[_0x3071('0x8')](_0x3071('0xd'),auth[_0x3071('0x9')](),controller['show']);router[_0x3071('0xe')]('/',auth[_0x3071('0x9')](),interaction[_0x3071('0xf')](_0x3071('0x10'),_0x3071('0x11')),controller['create']);router[_0x3071('0x12')](_0x3071('0xd'),auth[_0x3071('0x9')](),controller[_0x3071('0x13')]);router[_0x3071('0x12')]('/:id/accept',auth['isAuthenticated'](),controller[_0x3071('0x14')]);router['put'](_0x3071('0x15'),auth[_0x3071('0x9')](),controller['reject']);router[_0x3071('0x16')]('/:id',auth[_0x3071('0x9')](),controller[_0x3071('0x17')]);module[_0x3071('0x18')]=router;
\ No newline at end of file
+var _0xcb91=['openchannelmessage:create','put','update','/:id/reject','reject','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','get','index','isAuthenticated','describe','/:id','post','tracked','openchannel'];(function(_0x4e1991,_0xeb727c){var _0x318050=function(_0x1af113){while(--_0x1af113){_0x4e1991['push'](_0x4e1991['shift']());}};_0x318050(++_0xeb727c);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x27beea,_0x3bc9f4){_0x27beea=_0x27beea-0x0;var _0x122645=_0xcb91[_0x27beea];return _0x122645;};'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')]('/describe',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x1cb9('0xc')]('/',auth[_0x1cb9('0x9')](),interaction[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x1cb9('0xf')),controller['create']);router[_0x1cb9('0x10')](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x11')]);router[_0x1cb9('0x10')]('/:id/accept',auth['isAuthenticated'](),controller['accept']);router[_0x1cb9('0x10')](_0x1cb9('0x12'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x13')]);router['delete'](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x14')]);module[_0x1cb9('0x15')]=router;
\ No newline at end of file
index 5ed0028..7acb741 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf69c=['BOOLEAN','ENUM','out','DATE','STRING','sequelize','exports','TEXT','medium'];(function(_0x362400,_0x231f5c){var _0x11de1a=function(_0x4a49d5){while(--_0x4a49d5){_0x362400['push'](_0x362400['shift']());}};_0x11de1a(++_0x231f5c);}(_0xf69c,0x1e2));var _0xcf69=function(_0x476b00,_0x250877){_0x476b00=_0x476b00-0x0;var _0x44ec8e=_0xf69c[_0x476b00];return _0x44ec8e;};'use strict';var Sequelize=require(_0xcf69('0x0'));module[_0xcf69('0x1')]={'body':{'type':Sequelize[_0xcf69('0x2')](_0xcf69('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0xcf69('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xcf69('0x5')]('in',_0xcf69('0x6')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0xcf69('0x7')]},'providerName':{'type':Sequelize[_0xcf69('0x8')]},'providerResponse':{'type':Sequelize[_0xcf69('0x2')]}};
\ No newline at end of file
+var _0x30fc=['TEXT','sequelize','exports','medium','BOOLEAN','ENUM','out','DATE','STRING'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x30fc,0x64));var _0xc30f=function(_0x40d411,_0x4642f1){_0x40d411=_0x40d411-0x0;var _0x51fd22=_0x30fc[_0x40d411];return _0x51fd22;};'use strict';var Sequelize=require(_0xc30f('0x0'));module[_0xc30f('0x1')]={'body':{'type':Sequelize['TEXT'](_0xc30f('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xc30f('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0xc30f('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xc30f('0x4')]('in','out'),'defaultValue':_0xc30f('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0xc30f('0x6')]},'providerName':{'type':Sequelize[_0xc30f('0x7')]},'providerResponse':{'type':Sequelize[_0xc30f('0x8')]}};
\ No newline at end of file
index 0facef2..93ab081 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63aa=['null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','User','fullname','email','internal','SIP/%s','channel','motionChannel','EventManager','acceptmessage','openchannel-interactions','OpenchannelInteraction','interaction','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./openchannelMessage.socket','register','client','http','request','then','info','OpenchannelMessage,\x20%s,\x20%s','OpenchannelMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','sendStatus','status','end','json','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','OpenchannelMessage','rawAttributes','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','type','VIRTUAL','merge','includeAll','include','rows','params','keys','options','find','create','body','describe','../../config/logger','accept','openchannel','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','isNil','read1stAt','get','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role'];(function(_0x40d800,_0x5c4a47){var _0x22fb2f=function(_0x558ef0){while(--_0x558ef0){_0x40d800['push'](_0x40d800['shift']());}};_0x22fb2f(++_0x5c4a47);}(_0x63aa,0x98));var _0xa63a=function(_0x555004,_0x52bc7f){_0x555004=_0x555004-0x0;var _0x368959=_0x63aa[_0x555004];return _0x368959;};'use strict';var emlformat=require(_0xa63a('0x0'));var rimraf=require(_0xa63a('0x1'));var zipdir=require(_0xa63a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa63a('0x3'));var moment=require('moment');var BPromise=require(_0xa63a('0x4'));var Mustache=require(_0xa63a('0x5'));var util=require('util');var path=require(_0xa63a('0x6'));var sox=require(_0xa63a('0x7'));var csv=require(_0xa63a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa63a('0x9'));var _=require(_0xa63a('0xa'));var squel=require(_0xa63a('0xb'));var crypto=require(_0xa63a('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa63a('0x8'));var querystring=require(_0xa63a('0xd'));var Papa=require(_0xa63a('0xe'));var Redis=require(_0xa63a('0xf'));var authService=require(_0xa63a('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xa63a('0x11'));var hardwareService=require(_0xa63a('0x12'));var logger=require('../../config/logger')(_0xa63a('0x13'));var utils=require(_0xa63a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa63a('0x15'));var db=require(_0xa63a('0x16'))['db'];config[_0xa63a('0x17')]=_[_0xa63a('0x18')](config[_0xa63a('0x17')],{'host':_0xa63a('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xa63a('0x1a'))[_0xa63a('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0xa63a('0x1c')][_0xa63a('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x4bfb10,_0x5bfd11,_0x327411,_0x29cb32){return new BPromise(function(_0x4ec143,_0x26cff3){var _0x2e3d27=_0x29cb32||client;return _0x2e3d27[_0xa63a('0x1e')](_0x4bfb10,_0x327411)[_0xa63a('0x1f')](function(_0x14e2b4){logger[_0xa63a('0x20')](_0xa63a('0x21'),_0x5bfd11,'request\x20sent');logger['debug'](_0xa63a('0x22'),_0x5bfd11,_0xa63a('0x23'),JSON[_0xa63a('0x24')](_0x14e2b4));if(_0x14e2b4[_0xa63a('0x25')]){if(_0x14e2b4[_0xa63a('0x25')][_0xa63a('0x26')]===0x1f4){logger[_0xa63a('0x25')](_0xa63a('0x21'),_0x5bfd11,_0x14e2b4[_0xa63a('0x25')][_0xa63a('0x27')]);return _0x26cff3(_0x14e2b4[_0xa63a('0x25')][_0xa63a('0x27')]);}logger['error'](_0xa63a('0x21'),_0x5bfd11,_0x14e2b4[_0xa63a('0x25')]['message']);return _0x4ec143(_0x14e2b4[_0xa63a('0x25')][_0xa63a('0x27')]);}else{logger[_0xa63a('0x20')](_0xa63a('0x21'),_0x5bfd11,_0xa63a('0x23'));_0x4ec143(_0x14e2b4['result'][_0xa63a('0x27')]);}})[_0xa63a('0x28')](function(_0x4871bf){logger[_0xa63a('0x25')]('OpenchannelMessage,\x20%s,\x20%s',_0x5bfd11,_0x4871bf);_0x26cff3(_0x4871bf);});});}function respondWithStatusCode(_0x5ea2a5,_0x4e753f){_0x4e753f=_0x4e753f||0xcc;return function(_0x275cc0){if(_0x275cc0){return _0x5ea2a5[_0xa63a('0x29')](_0x4e753f);}return _0x5ea2a5[_0xa63a('0x2a')](_0x4e753f)[_0xa63a('0x2b')]();};}function respondWithResult(_0x16abd6,_0x2ed485){_0x2ed485=_0x2ed485||0xc8;return function(_0x1c12df){if(_0x1c12df){return _0x16abd6[_0xa63a('0x2a')](_0x2ed485)[_0xa63a('0x2c')](_0x1c12df);}};}function respondWithFilteredResult(_0x139aae,_0x3dfbfc){return function(_0x3c9ddc){if(_0x3c9ddc){var _0x2a73da=typeof _0x3dfbfc['offset']==='undefined'&&typeof _0x3dfbfc[_0xa63a('0x2d')]===_0xa63a('0x2e');var _0x401308=_0x3c9ddc[_0xa63a('0x2f')];var _0x1f61ad=_0x2a73da?0x0:_0x3dfbfc['offset'];var _0x84171b=_0x2a73da?_0x3c9ddc[_0xa63a('0x2f')]:_0x3dfbfc['offset']+_0x3dfbfc['limit'];var _0x1acf8c;if(_0x84171b>=_0x401308){_0x84171b=_0x401308;_0x1acf8c=0xc8;}else{_0x1acf8c=0xce;}_0x139aae[_0xa63a('0x2a')](_0x1acf8c);return _0x139aae[_0xa63a('0x30')](_0xa63a('0x31'),_0x1f61ad+'-'+_0x84171b+'/'+_0x401308)[_0xa63a('0x2c')](_0x3c9ddc);}return null;};}function patchUpdates(_0x32db1f){return function(_0x3b7d79){try{jsonpatch[_0xa63a('0x32')](_0x3b7d79,_0x32db1f,!![]);}catch(_0x1b757e){return BPromise[_0xa63a('0x33')](_0x1b757e);}return _0x3b7d79[_0xa63a('0x34')]();};}function saveUpdates(_0x2fc20d,_0x2d9777){return function(_0x42e738){if(_0x42e738){return _0x42e738[_0xa63a('0x35')](_0x2fc20d)[_0xa63a('0x1f')](function(_0x3b098a){return _0x3b098a;});}return null;};}function removeEntity(_0x162474,_0x2a2f9e){return function(_0x5f10fe){if(_0x5f10fe){return _0x5f10fe[_0xa63a('0x36')]()[_0xa63a('0x1f')](function(){_0x162474[_0xa63a('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d4720,_0x13518c){return function(_0x2d058f){if(!_0x2d058f){_0x3d4720[_0xa63a('0x29')](0x194);}return _0x2d058f;};}function handleError(_0x548d81,_0x5c86b0){_0x5c86b0=_0x5c86b0||0x1f4;return function(_0x203d40){logger[_0xa63a('0x25')](_0x203d40[_0xa63a('0x37')]);if(_0x203d40[_0xa63a('0x38')]){delete _0x203d40[_0xa63a('0x38')];}_0x548d81[_0xa63a('0x2a')](_0x5c86b0)[_0xa63a('0x39')](_0x203d40);};}exports[_0xa63a('0x3a')]=function(_0x25c626,_0x5828f7){var _0x2db1f7={},_0x1f7f3e={},_0x4d9072={'count':0x0,'rows':[]};var _0x4f087f=_['map'](db[_0xa63a('0x3b')][_0xa63a('0x3c')],function(_0x261a04){return{'name':_0x261a04['fieldName'],'type':_0x261a04['type'][_0xa63a('0x3d')]};});_0x1f7f3e[_0xa63a('0x3e')]=_[_0xa63a('0x3f')](_0x4f087f,_0xa63a('0x38'));_0x1f7f3e[_0xa63a('0x40')]=_['keys'](_0x25c626[_0xa63a('0x40')]);_0x1f7f3e[_0xa63a('0x41')]=_[_0xa63a('0x42')](_0x1f7f3e[_0xa63a('0x3e')],_0x1f7f3e[_0xa63a('0x40')]);_0x2db1f7['attributes']=_[_0xa63a('0x42')](_0x1f7f3e[_0xa63a('0x3e')],qs[_0xa63a('0x43')](_0x25c626[_0xa63a('0x40')]['fields']));_0x2db1f7['attributes']=_0x2db1f7[_0xa63a('0x44')][_0xa63a('0x45')]?_0x2db1f7[_0xa63a('0x44')]:_0x1f7f3e[_0xa63a('0x3e')];if(!_0x25c626[_0xa63a('0x40')][_0xa63a('0x46')](_0xa63a('0x47'))){_0x2db1f7[_0xa63a('0x2d')]=qs['limit'](_0x25c626[_0xa63a('0x40')][_0xa63a('0x2d')]);_0x2db1f7[_0xa63a('0x48')]=qs[_0xa63a('0x48')](_0x25c626['query'][_0xa63a('0x48')]);}_0x2db1f7[_0xa63a('0x49')]=qs[_0xa63a('0x4a')](_0x25c626[_0xa63a('0x40')]['sort']);_0x2db1f7[_0xa63a('0x4b')]=qs[_0xa63a('0x41')](_[_0xa63a('0x4c')](_0x25c626[_0xa63a('0x40')],_0x1f7f3e[_0xa63a('0x41')]),_0x4f087f);if(_0x25c626['query']['filter']){_0x2db1f7[_0xa63a('0x4b')]=_['merge'](_0x2db1f7[_0xa63a('0x4b')],{'$or':_[_0xa63a('0x3f')](_0x4f087f,function(_0x30852b){if(_0x30852b[_0xa63a('0x4d')]!==_0xa63a('0x4e')){var _0x4a32ea={};_0x4a32ea[_0x30852b[_0xa63a('0x38')]]={'$like':'%'+_0x25c626[_0xa63a('0x40')]['filter']+'%'};return _0x4a32ea;}})});}_0x2db1f7=_[_0xa63a('0x4f')]({},_0x2db1f7,_0x25c626['options']);var _0x216c01={'where':_0x2db1f7['where']};return db[_0xa63a('0x3b')][_0xa63a('0x2f')](_0x216c01)['then'](function(_0xd95cbb){_0x4d9072[_0xa63a('0x2f')]=_0xd95cbb;if(_0x25c626[_0xa63a('0x40')][_0xa63a('0x50')]){_0x2db1f7[_0xa63a('0x51')]=[{'all':!![]}];}return db[_0xa63a('0x3b')]['findAll'](_0x2db1f7);})[_0xa63a('0x1f')](function(_0x1d0cd9){_0x4d9072[_0xa63a('0x52')]=_0x1d0cd9;return _0x4d9072;})['then'](respondWithFilteredResult(_0x5828f7,_0x2db1f7))[_0xa63a('0x28')](handleError(_0x5828f7,null));};exports['show']=function(_0x2eed28,_0xf62f7f){var _0x27a372={'raw':!![],'where':{'id':_0x2eed28[_0xa63a('0x53')]['id']}},_0x5703d5={};_0x5703d5[_0xa63a('0x3e')]=_[_0xa63a('0x54')](db[_0xa63a('0x3b')][_0xa63a('0x3c')]);_0x5703d5[_0xa63a('0x40')]=_['keys'](_0x2eed28[_0xa63a('0x40')]);_0x5703d5[_0xa63a('0x41')]=_['intersection'](_0x5703d5[_0xa63a('0x3e')],_0x5703d5['query']);_0x27a372[_0xa63a('0x44')]=_[_0xa63a('0x42')](_0x5703d5[_0xa63a('0x3e')],qs['fields'](_0x2eed28['query']['fields']));_0x27a372[_0xa63a('0x44')]=_0x27a372[_0xa63a('0x44')][_0xa63a('0x45')]?_0x27a372[_0xa63a('0x44')]:_0x5703d5[_0xa63a('0x3e')];if(_0x2eed28[_0xa63a('0x40')][_0xa63a('0x50')]){_0x27a372[_0xa63a('0x51')]=[{'all':!![]}];}_0x27a372=_['merge']({},_0x27a372,_0x2eed28[_0xa63a('0x55')]);return db[_0xa63a('0x3b')][_0xa63a('0x56')](_0x27a372)['then'](handleEntityNotFound(_0xf62f7f,null))[_0xa63a('0x1f')](respondWithResult(_0xf62f7f,null))[_0xa63a('0x28')](handleError(_0xf62f7f,null));};exports[_0xa63a('0x57')]=function(_0x37abda,_0x4d817f){return db[_0xa63a('0x3b')][_0xa63a('0x57')](_0x37abda[_0xa63a('0x58')],{})['then'](respondWithResult(_0x4d817f,0xc9))['catch'](handleError(_0x4d817f,null));};exports['update']=function(_0x346e0c,_0xb34c1e){if(_0x346e0c[_0xa63a('0x58')]['id']){delete _0x346e0c['body']['id'];}return db[_0xa63a('0x3b')][_0xa63a('0x56')]({'where':{'id':_0x346e0c[_0xa63a('0x53')]['id']}})[_0xa63a('0x1f')](handleEntityNotFound(_0xb34c1e,null))[_0xa63a('0x1f')](saveUpdates(_0x346e0c[_0xa63a('0x58')],null))[_0xa63a('0x1f')](respondWithResult(_0xb34c1e,null))['catch'](handleError(_0xb34c1e,null));};exports[_0xa63a('0x36')]=function(_0x410f43,_0x4a3f82){return db[_0xa63a('0x3b')][_0xa63a('0x56')]({'where':{'id':_0x410f43[_0xa63a('0x53')]['id']}})[_0xa63a('0x1f')](handleEntityNotFound(_0x4a3f82,null))[_0xa63a('0x1f')](removeEntity(_0x4a3f82,null))[_0xa63a('0x28')](handleError(_0x4a3f82,null));};exports[_0xa63a('0x59')]=function(_0x2c275d,_0x5c7686){return db[_0xa63a('0x3b')][_0xa63a('0x59')]()[_0xa63a('0x1f')](respondWithResult(_0x5c7686,null))[_0xa63a('0x28')](handleError(_0x5c7686,null));};var interaction_log=require(_0xa63a('0x5a'))('openchannel-interactions');exports[_0xa63a('0x5b')]=function(_0x4c0a47,_0x2ca0fb,_0x5d815a){var _0x34fe0b={'agent':{},'channel':_0xa63a('0x5c')};if(_0x4c0a47['body']['id']){delete _0x4c0a47[_0xa63a('0x58')]['id'];}_0x4c0a47[_0xa63a('0x58')][_0xa63a('0x5d')]=!![];_0x4c0a47[_0xa63a('0x58')]['readAt']=moment()[_0xa63a('0x5e')](_0xa63a('0x5f'));_0x4c0a47['body'][_0xa63a('0x60')]=_0x4c0a47[_0xa63a('0x58')][_0xa63a('0x60')]||_0x4c0a47['user']['id'];_0x34fe0b[_0xa63a('0x61')]['id']=_0x4c0a47['body'][_0xa63a('0x60')];return db['OpenchannelMessage'][_0xa63a('0x56')]({'where':{'id':_0x4c0a47[_0xa63a('0x53')]['id'],'UserId':null}})[_0xa63a('0x1f')](handleEntityNotFound(_0x2ca0fb,null))['then'](saveUpdates(_0x4c0a47['body'],null))['then'](function(_0x5725f9){if(_0x5725f9){_0x34fe0b[_0xa63a('0x27')]=_0x5725f9['get']({'plain':!![]});return db['OpenchannelInteraction'][_0xa63a('0x56')]({'where':{'id':_0x5725f9['OpenchannelInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x2ca0fb,null))[_0xa63a('0x1f')](function(_0x5c755e){if(_0x5c755e){return _0x5c755e['update']({'UserId':_0x4c0a47[_0xa63a('0x58')][_0xa63a('0x60')],'read1stAt':_[_0xa63a('0x62')](_0x5c755e[_0xa63a('0x63')])?moment()[_0xa63a('0x5e')](_0xa63a('0x5f')):undefined});}return null;})['then'](function(_0x230028){if(_0x230028){_0x34fe0b['interaction']=_0x230028[_0xa63a('0x64')]({'plain':!![]});interaction_log[_0xa63a('0x20')](_0xa63a('0x65'),_0x4c0a47[_0xa63a('0x66')]['id'],_0x4c0a47['user'][_0xa63a('0x38')],_0x4c0a47['user'][_0xa63a('0x67')],_0x34fe0b['interaction']['id'],_0x4c0a47[_0xa63a('0x58')]?JSON[_0xa63a('0x24')](_0x4c0a47['body']):_0xa63a('0x68'));return respondWithRpcPromise(_0xa63a('0x69'),_0xa63a('0x6a'),_0x34fe0b);}return null;})[_0xa63a('0x1f')](function(_0x26254a){var _0x3fb830=_0xa63a('0x6b')+_0x26254a[_0xa63a('0x27')][_0xa63a('0x6c')];return db[_0xa63a('0x6d')][_0xa63a('0x40')](_0x3fb830,{'type':db[_0xa63a('0x6e')][_0xa63a('0x6f')]['SELECT'],'raw':!![]})[_0xa63a('0x1f')](function(_0x3c8dab){return _0x3c8dab;});})['then'](function(_0xa1861c){if(_0xa1861c){_0x34fe0b['message']['contact']=_0xa1861c[0x0];if(!_0x4c0a47['body'][_0xa63a('0x60')])return;return db[_0xa63a('0x70')]['find']({'where':{'id':_0x4c0a47[_0xa63a('0x58')]['UserId'],'role':_0xa63a('0x61')},'attributes':['id',_0xa63a('0x38'),_0xa63a('0x71'),_0xa63a('0x72'),_0xa63a('0x73')],'raw':!![]});}return null;})['then'](function(_0x34f929){if(!_0x34f929)return null;_0x34fe0b[_0xa63a('0x27')][_0xa63a('0x61')]=_0x34f929;return _0x34fe0b;})['then'](function(_0xd9a536){if(_0xd9a536){if(_0x4c0a47[_0xa63a('0x58')]['manual']){_0x34fe0b[_0xa63a('0x27')]['interface']=util['format'](_0xa63a('0x74'),_0x4c0a47[_0xa63a('0x66')][_0xa63a('0x38')]);_0x34fe0b[_0xa63a('0x27')][_0xa63a('0x75')]=_0x34fe0b[_0xa63a('0x75')];_0x34fe0b['message'][_0xa63a('0x76')]=_0x34fe0b['channel'];_0x34fe0b['message']['event']=_0xa63a('0x5b');return respondWithRpcPromise(_0xa63a('0x77'),_0xa63a('0x77'),{'event':_0xa63a('0x78'),'message':_0x34fe0b['message']},client9002)[_0xa63a('0x1f')](function(){return _0x34fe0b;});}return _0x34fe0b;}return null;})[_0xa63a('0x1f')](respondWithResult(_0x2ca0fb,null))['catch'](handleError(_0x2ca0fb,null));};var interaction_log=require(_0xa63a('0x5a'))(_0xa63a('0x79'));exports[_0xa63a('0x33')]=function(_0x503eb7,_0x7ea34c,_0x219074){var _0x407728={'agent':{},'channel':_0xa63a('0x5c')};if(_0x503eb7[_0xa63a('0x58')]['id']){delete _0x503eb7[_0xa63a('0x58')]['id'];}_0x503eb7['body'][_0xa63a('0x60')]=_0x503eb7[_0xa63a('0x58')][_0xa63a('0x60')]||_0x503eb7[_0xa63a('0x66')]['id'];_0x407728[_0xa63a('0x61')]['id']=_0x503eb7[_0xa63a('0x58')]['UserId'];return db[_0xa63a('0x3b')][_0xa63a('0x56')]({'where':{'id':_0x503eb7[_0xa63a('0x53')]['id'],'UserId':null}})[_0xa63a('0x1f')](handleEntityNotFound(_0x7ea34c,null))[_0xa63a('0x1f')](function(_0x3d99b2){if(_0x3d99b2){_0x407728['message']=_0x3d99b2['get']({'plain':!![]});return db[_0xa63a('0x7a')][_0xa63a('0x56')]({'where':{'id':_0x3d99b2['OpenchannelInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x7ea34c,null))[_0xa63a('0x1f')](function(_0x8140c0){if(_0x8140c0){_0x407728[_0xa63a('0x7b')]=_0x8140c0[_0xa63a('0x64')]({'plain':!![]});interaction_log['info'](_0xa63a('0x7c'),_0x503eb7[_0xa63a('0x66')]['id'],_0x503eb7[_0xa63a('0x66')][_0xa63a('0x38')],_0x503eb7['user']['role'],_0x407728[_0xa63a('0x7b')]['id'],_0x503eb7['body']?JSON[_0xa63a('0x24')](_0x503eb7[_0xa63a('0x58')]):_0xa63a('0x68'));return respondWithRpcPromise(_0xa63a('0x7d'),_0xa63a('0x7e'),_0x407728);}return null;})[_0xa63a('0x1f')](function(_0x13d2eb){var _0x9067db=_0xa63a('0x6b')+_0x13d2eb[_0xa63a('0x27')]['ContactId'];return db[_0xa63a('0x6d')][_0xa63a('0x40')](_0x9067db,{'type':db[_0xa63a('0x6e')][_0xa63a('0x6f')][_0xa63a('0x7f')],'raw':!![]})[_0xa63a('0x1f')](function(_0x25d717){return _0x25d717;});})['then'](function(_0x140a9f){if(_0x140a9f){_0x407728[_0xa63a('0x27')]['contact']=_0x140a9f[0x0];if(!_0x503eb7[_0xa63a('0x58')][_0xa63a('0x60')])return;return db[_0xa63a('0x70')]['find']({'where':{'id':_0x503eb7['body'][_0xa63a('0x60')],'role':_0xa63a('0x61')},'attributes':['id',_0xa63a('0x38'),_0xa63a('0x71'),'email',_0xa63a('0x73')],'raw':!![]});}return null;})['then'](function(_0x3baf3e){if(!_0x3baf3e)return null;_0x407728['message']['agent']=_0x3baf3e;return _0x407728;})['then'](function(_0x5a842a){if(_0x5a842a){_0x5a842a[_0xa63a('0x27')]['interface']=util[_0xa63a('0x5e')](_0xa63a('0x74'),_0x503eb7[_0xa63a('0x66')][_0xa63a('0x38')]);_0x5a842a[_0xa63a('0x27')][_0xa63a('0x75')]=_0x407728[_0xa63a('0x75')];_0x5a842a[_0xa63a('0x27')][_0xa63a('0x76')]=_0x407728['channel'];_0x5a842a[_0xa63a('0x27')]['event']=_0xa63a('0x33');respondWithRpcPromise(_0xa63a('0x77'),_0xa63a('0x77'),{'event':'rejectmessage','message':_0x5a842a['message']},client9002);return _0x407728;}return null;})[_0xa63a('0x1f')](respondWithResult(_0x7ea34c,null))['catch'](handleError(_0x7ea34c,null));};
\ No newline at end of file
+var _0x9f1e=['readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','OpenchannelInteraction','isNil','read1stAt','interaction','get','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','fullname','email','internal','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','SELECT','User','rejectmessage','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','defaults','localhost','redis','./openchannelMessage.socket','register','jayson/promise','http','client','request','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','sendStatus','status','end','limit','undefined','offset','count','Content-Range','json','apply','reject','save','update','then','stack','send','index','map','OpenchannelMessage','rawAttributes','model','name','keys','filters','intersection','query','fields','attributes','hasOwnProperty','nolimit','sort','pick','filter','where','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','length','options','find','create','body','destroy','describe','openchannel-interactions','accept','openchannel'];(function(_0xbc6566,_0x32d463){var _0x4ed128=function(_0x5555ae){while(--_0x5555ae){_0xbc6566['push'](_0xbc6566['shift']());}};_0x4ed128(++_0x32d463);}(_0x9f1e,0xa2));var _0xe9f1=function(_0x17679a,_0x261a12){_0x17679a=_0x17679a-0x0;var _0x438c62=_0x9f1e[_0x17679a];return _0x438c62;};'use strict';var emlformat=require(_0xe9f1('0x0'));var rimraf=require(_0xe9f1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe9f1('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe9f1('0x3'));var Mustache=require(_0xe9f1('0x4'));var util=require(_0xe9f1('0x5'));var path=require('path');var sox=require(_0xe9f1('0x6'));var csv=require(_0xe9f1('0x7'));var ejs=require(_0xe9f1('0x8'));var fs=require('fs');var fs_extra=require(_0xe9f1('0x9'));var _=require(_0xe9f1('0xa'));var squel=require(_0xe9f1('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xe9f1('0x7'));var querystring=require('querystring');var Papa=require(_0xe9f1('0xc'));var Redis=require(_0xe9f1('0xd'));var authService=require(_0xe9f1('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xe9f1('0xf'));var hardwareService=require(_0xe9f1('0x10'));var logger=require(_0xe9f1('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe9f1('0x12'));var db=require(_0xe9f1('0x13'))['db'];config['redis']=_[_0xe9f1('0x14')](config['redis'],{'host':_0xe9f1('0x15'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe9f1('0x16')]));require(_0xe9f1('0x17'))[_0xe9f1('0x18')](socket);var jayson=require(_0xe9f1('0x19'));var client=jayson['client'][_0xe9f1('0x1a')]({'port':0x232c});var client9002=jayson[_0xe9f1('0x1b')][_0xe9f1('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x39c800,_0x532ea1,_0x37042d,_0x4f7345){return new BPromise(function(_0x39800f,_0x5472fb){var _0x56ecb5=_0x4f7345||client;return _0x56ecb5[_0xe9f1('0x1c')](_0x39c800,_0x37042d)['then'](function(_0x124aa0){logger[_0xe9f1('0x1d')](_0xe9f1('0x1e'),_0x532ea1,_0xe9f1('0x1f'));logger[_0xe9f1('0x20')](_0xe9f1('0x21'),_0x532ea1,_0xe9f1('0x1f'),JSON[_0xe9f1('0x22')](_0x124aa0));if(_0x124aa0[_0xe9f1('0x23')]){if(_0x124aa0[_0xe9f1('0x23')][_0xe9f1('0x24')]===0x1f4){logger[_0xe9f1('0x23')](_0xe9f1('0x1e'),_0x532ea1,_0x124aa0[_0xe9f1('0x23')][_0xe9f1('0x25')]);return _0x5472fb(_0x124aa0[_0xe9f1('0x23')][_0xe9f1('0x25')]);}logger[_0xe9f1('0x23')]('OpenchannelMessage,\x20%s,\x20%s',_0x532ea1,_0x124aa0['error']['message']);return _0x39800f(_0x124aa0[_0xe9f1('0x23')][_0xe9f1('0x25')]);}else{logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0x532ea1,_0xe9f1('0x1f'));_0x39800f(_0x124aa0['result'][_0xe9f1('0x25')]);}})['catch'](function(_0xf22227){logger['error'](_0xe9f1('0x1e'),_0x532ea1,_0xf22227);_0x5472fb(_0xf22227);});});}function respondWithStatusCode(_0x4a0e29,_0x5365f6){_0x5365f6=_0x5365f6||0xcc;return function(_0x2ec972){if(_0x2ec972){return _0x4a0e29[_0xe9f1('0x26')](_0x5365f6);}return _0x4a0e29[_0xe9f1('0x27')](_0x5365f6)[_0xe9f1('0x28')]();};}function respondWithResult(_0x877bf5,_0x3ab3b1){_0x3ab3b1=_0x3ab3b1||0xc8;return function(_0x1448e1){if(_0x1448e1){return _0x877bf5['status'](_0x3ab3b1)['json'](_0x1448e1);}};}function respondWithFilteredResult(_0x5a4ac6,_0x31ffeb){return function(_0x1e32c3){if(_0x1e32c3){var _0x3a7991=typeof _0x31ffeb['offset']==='undefined'&&typeof _0x31ffeb[_0xe9f1('0x29')]===_0xe9f1('0x2a');var _0x425645=_0x1e32c3['count'];var _0x17f2c6=_0x3a7991?0x0:_0x31ffeb[_0xe9f1('0x2b')];var _0x2ac58d=_0x3a7991?_0x1e32c3[_0xe9f1('0x2c')]:_0x31ffeb[_0xe9f1('0x2b')]+_0x31ffeb[_0xe9f1('0x29')];var _0x502025;if(_0x2ac58d>=_0x425645){_0x2ac58d=_0x425645;_0x502025=0xc8;}else{_0x502025=0xce;}_0x5a4ac6['status'](_0x502025);return _0x5a4ac6['set'](_0xe9f1('0x2d'),_0x17f2c6+'-'+_0x2ac58d+'/'+_0x425645)[_0xe9f1('0x2e')](_0x1e32c3);}return null;};}function patchUpdates(_0x4dfb30){return function(_0x394c0e){try{jsonpatch[_0xe9f1('0x2f')](_0x394c0e,_0x4dfb30,!![]);}catch(_0x2e027c){return BPromise[_0xe9f1('0x30')](_0x2e027c);}return _0x394c0e[_0xe9f1('0x31')]();};}function saveUpdates(_0x42eeab,_0x3d5825){return function(_0x496df6){if(_0x496df6){return _0x496df6[_0xe9f1('0x32')](_0x42eeab)[_0xe9f1('0x33')](function(_0x14814c){return _0x14814c;});}return null;};}function removeEntity(_0x862807,_0x151612){return function(_0x2c8bfb){if(_0x2c8bfb){return _0x2c8bfb['destroy']()[_0xe9f1('0x33')](function(){_0x862807[_0xe9f1('0x27')](0xcc)[_0xe9f1('0x28')]();});}};}function handleEntityNotFound(_0x5a3daf,_0x104caa){return function(_0x59e6c7){if(!_0x59e6c7){_0x5a3daf[_0xe9f1('0x26')](0x194);}return _0x59e6c7;};}function handleError(_0x4f2c97,_0x1ff05a){_0x1ff05a=_0x1ff05a||0x1f4;return function(_0x4425f1){logger[_0xe9f1('0x23')](_0x4425f1[_0xe9f1('0x34')]);if(_0x4425f1['name']){delete _0x4425f1['name'];}_0x4f2c97[_0xe9f1('0x27')](_0x1ff05a)[_0xe9f1('0x35')](_0x4425f1);};}exports[_0xe9f1('0x36')]=function(_0x263d79,_0xce000a){var _0x346f1d={},_0x178ffc={},_0x41dcfe={'count':0x0,'rows':[]};var _0x524998=_[_0xe9f1('0x37')](db[_0xe9f1('0x38')][_0xe9f1('0x39')],function(_0x4b99c9){return{'name':_0x4b99c9['fieldName'],'type':_0x4b99c9['type']['key']};});_0x178ffc[_0xe9f1('0x3a')]=_[_0xe9f1('0x37')](_0x524998,_0xe9f1('0x3b'));_0x178ffc['query']=_[_0xe9f1('0x3c')](_0x263d79['query']);_0x178ffc[_0xe9f1('0x3d')]=_[_0xe9f1('0x3e')](_0x178ffc['model'],_0x178ffc[_0xe9f1('0x3f')]);_0x346f1d['attributes']=_[_0xe9f1('0x3e')](_0x178ffc[_0xe9f1('0x3a')],qs[_0xe9f1('0x40')](_0x263d79[_0xe9f1('0x3f')][_0xe9f1('0x40')]));_0x346f1d[_0xe9f1('0x41')]=_0x346f1d[_0xe9f1('0x41')]['length']?_0x346f1d[_0xe9f1('0x41')]:_0x178ffc['model'];if(!_0x263d79[_0xe9f1('0x3f')][_0xe9f1('0x42')](_0xe9f1('0x43'))){_0x346f1d['limit']=qs[_0xe9f1('0x29')](_0x263d79[_0xe9f1('0x3f')][_0xe9f1('0x29')]);_0x346f1d['offset']=qs[_0xe9f1('0x2b')](_0x263d79[_0xe9f1('0x3f')][_0xe9f1('0x2b')]);}_0x346f1d['order']=qs[_0xe9f1('0x44')](_0x263d79[_0xe9f1('0x3f')][_0xe9f1('0x44')]);_0x346f1d['where']=qs['filters'](_[_0xe9f1('0x45')](_0x263d79[_0xe9f1('0x3f')],_0x178ffc['filters']),_0x524998);if(_0x263d79[_0xe9f1('0x3f')][_0xe9f1('0x46')]){_0x346f1d[_0xe9f1('0x47')]=_[_0xe9f1('0x48')](_0x346f1d[_0xe9f1('0x47')],{'$or':_['map'](_0x524998,function(_0x15eabb){if(_0x15eabb[_0xe9f1('0x49')]!==_0xe9f1('0x4a')){var _0x5a95be={};_0x5a95be[_0x15eabb[_0xe9f1('0x3b')]]={'$like':'%'+_0x263d79[_0xe9f1('0x3f')][_0xe9f1('0x46')]+'%'};return _0x5a95be;}})});}_0x346f1d=_[_0xe9f1('0x48')]({},_0x346f1d,_0x263d79['options']);var _0x11a43e={'where':_0x346f1d[_0xe9f1('0x47')]};return db[_0xe9f1('0x38')]['count'](_0x11a43e)['then'](function(_0x44b9a5){_0x41dcfe[_0xe9f1('0x2c')]=_0x44b9a5;if(_0x263d79[_0xe9f1('0x3f')][_0xe9f1('0x4b')]){_0x346f1d[_0xe9f1('0x4c')]=[{'all':!![]}];}return db['OpenchannelMessage'][_0xe9f1('0x4d')](_0x346f1d);})[_0xe9f1('0x33')](function(_0x5ca7ce){_0x41dcfe[_0xe9f1('0x4e')]=_0x5ca7ce;return _0x41dcfe;})[_0xe9f1('0x33')](respondWithFilteredResult(_0xce000a,_0x346f1d))[_0xe9f1('0x4f')](handleError(_0xce000a,null));};exports[_0xe9f1('0x50')]=function(_0x4852cc,_0x57210){var _0x206fac={'raw':!![],'where':{'id':_0x4852cc[_0xe9f1('0x51')]['id']}},_0x3f7d39={};_0x3f7d39[_0xe9f1('0x3a')]=_[_0xe9f1('0x3c')](db[_0xe9f1('0x38')][_0xe9f1('0x39')]);_0x3f7d39[_0xe9f1('0x3f')]=_['keys'](_0x4852cc['query']);_0x3f7d39[_0xe9f1('0x3d')]=_[_0xe9f1('0x3e')](_0x3f7d39[_0xe9f1('0x3a')],_0x3f7d39['query']);_0x206fac[_0xe9f1('0x41')]=_[_0xe9f1('0x3e')](_0x3f7d39[_0xe9f1('0x3a')],qs[_0xe9f1('0x40')](_0x4852cc['query'][_0xe9f1('0x40')]));_0x206fac[_0xe9f1('0x41')]=_0x206fac['attributes'][_0xe9f1('0x52')]?_0x206fac[_0xe9f1('0x41')]:_0x3f7d39[_0xe9f1('0x3a')];if(_0x4852cc['query']['includeAll']){_0x206fac[_0xe9f1('0x4c')]=[{'all':!![]}];}_0x206fac=_['merge']({},_0x206fac,_0x4852cc[_0xe9f1('0x53')]);return db[_0xe9f1('0x38')][_0xe9f1('0x54')](_0x206fac)[_0xe9f1('0x33')](handleEntityNotFound(_0x57210,null))['then'](respondWithResult(_0x57210,null))['catch'](handleError(_0x57210,null));};exports[_0xe9f1('0x55')]=function(_0x428fc5,_0x596762){return db[_0xe9f1('0x38')][_0xe9f1('0x55')](_0x428fc5['body'],{})['then'](respondWithResult(_0x596762,0xc9))[_0xe9f1('0x4f')](handleError(_0x596762,null));};exports[_0xe9f1('0x32')]=function(_0x2b4765,_0x3774b6){if(_0x2b4765[_0xe9f1('0x56')]['id']){delete _0x2b4765[_0xe9f1('0x56')]['id'];}return db[_0xe9f1('0x38')]['find']({'where':{'id':_0x2b4765[_0xe9f1('0x51')]['id']}})['then'](handleEntityNotFound(_0x3774b6,null))['then'](saveUpdates(_0x2b4765[_0xe9f1('0x56')],null))[_0xe9f1('0x33')](respondWithResult(_0x3774b6,null))[_0xe9f1('0x4f')](handleError(_0x3774b6,null));};exports[_0xe9f1('0x57')]=function(_0x369cea,_0x16d9dd){return db[_0xe9f1('0x38')]['find']({'where':{'id':_0x369cea[_0xe9f1('0x51')]['id']}})['then'](handleEntityNotFound(_0x16d9dd,null))[_0xe9f1('0x33')](removeEntity(_0x16d9dd,null))[_0xe9f1('0x4f')](handleError(_0x16d9dd,null));};exports[_0xe9f1('0x58')]=function(_0x901eba,_0x171eb0){return db[_0xe9f1('0x38')][_0xe9f1('0x58')]()[_0xe9f1('0x33')](respondWithResult(_0x171eb0,null))[_0xe9f1('0x4f')](handleError(_0x171eb0,null));};var interaction_log=require(_0xe9f1('0x11'))(_0xe9f1('0x59'));exports[_0xe9f1('0x5a')]=function(_0x4d82be,_0x428dca,_0x5099b3){var _0x56034d={'agent':{},'channel':_0xe9f1('0x5b')};if(_0x4d82be[_0xe9f1('0x56')]['id']){delete _0x4d82be['body']['id'];}_0x4d82be[_0xe9f1('0x56')]['read']=!![];_0x4d82be[_0xe9f1('0x56')][_0xe9f1('0x5c')]=moment()[_0xe9f1('0x5d')](_0xe9f1('0x5e'));_0x4d82be[_0xe9f1('0x56')][_0xe9f1('0x5f')]=_0x4d82be[_0xe9f1('0x56')]['UserId']||_0x4d82be[_0xe9f1('0x60')]['id'];_0x56034d[_0xe9f1('0x61')]['id']=_0x4d82be[_0xe9f1('0x56')][_0xe9f1('0x5f')];return db[_0xe9f1('0x38')][_0xe9f1('0x54')]({'where':{'id':_0x4d82be['params']['id'],'UserId':null}})[_0xe9f1('0x33')](handleEntityNotFound(_0x428dca,null))[_0xe9f1('0x33')](saveUpdates(_0x4d82be[_0xe9f1('0x56')],null))[_0xe9f1('0x33')](function(_0x342798){if(_0x342798){_0x56034d[_0xe9f1('0x25')]=_0x342798['get']({'plain':!![]});return db[_0xe9f1('0x62')][_0xe9f1('0x54')]({'where':{'id':_0x342798['OpenchannelInteractionId']}});}return null;})[_0xe9f1('0x33')](handleEntityNotFound(_0x428dca,null))['then'](function(_0x462941){if(_0x462941){return _0x462941['update']({'UserId':_0x4d82be[_0xe9f1('0x56')][_0xe9f1('0x5f')],'read1stAt':_[_0xe9f1('0x63')](_0x462941[_0xe9f1('0x64')])?moment()['format'](_0xe9f1('0x5e')):undefined});}return null;})[_0xe9f1('0x33')](function(_0x353be4){if(_0x353be4){_0x56034d[_0xe9f1('0x65')]=_0x353be4[_0xe9f1('0x66')]({'plain':!![]});interaction_log[_0xe9f1('0x1d')](_0xe9f1('0x67'),_0x4d82be[_0xe9f1('0x60')]['id'],_0x4d82be['user'][_0xe9f1('0x3b')],_0x4d82be['user'][_0xe9f1('0x68')],_0x56034d[_0xe9f1('0x65')]['id'],_0x4d82be[_0xe9f1('0x56')]?JSON[_0xe9f1('0x22')](_0x4d82be['body']):'null');return respondWithRpcPromise(_0xe9f1('0x69'),_0xe9f1('0x6a'),_0x56034d);}return null;})[_0xe9f1('0x33')](function(_0x18a94e){var _0x22dbcd=_0xe9f1('0x6b')+_0x18a94e['message'][_0xe9f1('0x6c')];return db[_0xe9f1('0x6d')][_0xe9f1('0x3f')](_0x22dbcd,{'type':db[_0xe9f1('0x6e')][_0xe9f1('0x6f')]['SELECT'],'raw':!![]})['then'](function(_0x1383b9){return _0x1383b9;});})[_0xe9f1('0x33')](function(_0x131216){if(_0x131216){_0x56034d[_0xe9f1('0x25')][_0xe9f1('0x70')]=_0x131216[0x0];if(!_0x4d82be[_0xe9f1('0x56')]['UserId'])return;return db['User']['find']({'where':{'id':_0x4d82be[_0xe9f1('0x56')][_0xe9f1('0x5f')],'role':_0xe9f1('0x61')},'attributes':['id',_0xe9f1('0x3b'),_0xe9f1('0x71'),_0xe9f1('0x72'),_0xe9f1('0x73')],'raw':!![]});}return null;})[_0xe9f1('0x33')](function(_0x3e80bd){if(!_0x3e80bd)return null;_0x56034d['message'][_0xe9f1('0x61')]=_0x3e80bd;return _0x56034d;})[_0xe9f1('0x33')](function(_0x5f03dd){if(_0x5f03dd){if(_0x4d82be['body']['manual']){_0x56034d['message'][_0xe9f1('0x74')]=util[_0xe9f1('0x5d')](_0xe9f1('0x75'),_0x4d82be[_0xe9f1('0x60')][_0xe9f1('0x3b')]);_0x56034d[_0xe9f1('0x25')][_0xe9f1('0x76')]=_0x56034d[_0xe9f1('0x76')];_0x56034d['message'][_0xe9f1('0x77')]=_0x56034d['channel'];_0x56034d[_0xe9f1('0x25')][_0xe9f1('0x78')]=_0xe9f1('0x5a');return respondWithRpcPromise(_0xe9f1('0x79'),_0xe9f1('0x79'),{'event':_0xe9f1('0x7a'),'message':_0x56034d['message']},client9002)[_0xe9f1('0x33')](function(){return _0x56034d;});}return _0x56034d;}return null;})[_0xe9f1('0x33')](respondWithResult(_0x428dca,null))[_0xe9f1('0x4f')](handleError(_0x428dca,null));};var interaction_log=require(_0xe9f1('0x11'))('openchannel-interactions');exports['reject']=function(_0x21bc2d,_0x1a69a6,_0x7bcaed){var _0x14a343={'agent':{},'channel':_0xe9f1('0x5b')};if(_0x21bc2d[_0xe9f1('0x56')]['id']){delete _0x21bc2d[_0xe9f1('0x56')]['id'];}_0x21bc2d[_0xe9f1('0x56')][_0xe9f1('0x5f')]=_0x21bc2d['body'][_0xe9f1('0x5f')]||_0x21bc2d['user']['id'];_0x14a343[_0xe9f1('0x61')]['id']=_0x21bc2d[_0xe9f1('0x56')]['UserId'];return db[_0xe9f1('0x38')]['find']({'where':{'id':_0x21bc2d[_0xe9f1('0x51')]['id'],'UserId':null}})[_0xe9f1('0x33')](handleEntityNotFound(_0x1a69a6,null))[_0xe9f1('0x33')](function(_0x256d18){if(_0x256d18){_0x14a343[_0xe9f1('0x25')]=_0x256d18[_0xe9f1('0x66')]({'plain':!![]});return db[_0xe9f1('0x62')]['find']({'where':{'id':_0x256d18['OpenchannelInteractionId']}});}return null;})[_0xe9f1('0x33')](handleEntityNotFound(_0x1a69a6,null))[_0xe9f1('0x33')](function(_0x2b5245){if(_0x2b5245){_0x14a343[_0xe9f1('0x65')]=_0x2b5245['get']({'plain':!![]});interaction_log[_0xe9f1('0x1d')](_0xe9f1('0x7b'),_0x21bc2d['user']['id'],_0x21bc2d['user'][_0xe9f1('0x3b')],_0x21bc2d[_0xe9f1('0x60')][_0xe9f1('0x68')],_0x14a343[_0xe9f1('0x65')]['id'],_0x21bc2d['body']?JSON['stringify'](_0x21bc2d[_0xe9f1('0x56')]):'null');return respondWithRpcPromise('RejectMessage','rejectMessage',_0x14a343);}return null;})[_0xe9f1('0x33')](function(_0x31695f){var _0x20ecf8=_0xe9f1('0x6b')+_0x31695f[_0xe9f1('0x25')][_0xe9f1('0x6c')];return db[_0xe9f1('0x6d')][_0xe9f1('0x3f')](_0x20ecf8,{'type':db[_0xe9f1('0x6e')][_0xe9f1('0x6f')][_0xe9f1('0x7c')],'raw':!![]})[_0xe9f1('0x33')](function(_0x12380f){return _0x12380f;});})[_0xe9f1('0x33')](function(_0x28a377){if(_0x28a377){_0x14a343[_0xe9f1('0x25')][_0xe9f1('0x70')]=_0x28a377[0x0];if(!_0x21bc2d[_0xe9f1('0x56')][_0xe9f1('0x5f')])return;return db[_0xe9f1('0x7d')][_0xe9f1('0x54')]({'where':{'id':_0x21bc2d[_0xe9f1('0x56')]['UserId'],'role':_0xe9f1('0x61')},'attributes':['id','name','fullname','email',_0xe9f1('0x73')],'raw':!![]});}return null;})[_0xe9f1('0x33')](function(_0x1e6717){if(!_0x1e6717)return null;_0x14a343['message'][_0xe9f1('0x61')]=_0x1e6717;return _0x14a343;})[_0xe9f1('0x33')](function(_0x5b8b46){if(_0x5b8b46){_0x5b8b46['message']['interface']=util[_0xe9f1('0x5d')]('SIP/%s',_0x21bc2d[_0xe9f1('0x60')][_0xe9f1('0x3b')]);_0x5b8b46[_0xe9f1('0x25')][_0xe9f1('0x76')]=_0x14a343[_0xe9f1('0x76')];_0x5b8b46[_0xe9f1('0x25')]['motionChannel']=_0x14a343[_0xe9f1('0x76')];_0x5b8b46[_0xe9f1('0x25')][_0xe9f1('0x78')]=_0xe9f1('0x30');respondWithRpcPromise(_0xe9f1('0x79'),_0xe9f1('0x79'),{'event':_0xe9f1('0x7e'),'message':_0x5b8b46[_0xe9f1('0x25')]},client9002);return _0x14a343;}return null;})['then'](respondWithResult(_0x1a69a6,null))[_0xe9f1('0x4f')](handleError(_0x1a69a6,null));};
\ No newline at end of file
index 72af693..346bf96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x180e=['hasOwnProperty','exports','events','../../mysqldb','OpenchannelMessage','save','update','emit'];(function(_0x58db35,_0x1dbbb2){var _0x59df05=function(_0x4748bb){while(--_0x4748bb){_0x58db35['push'](_0x58db35['shift']());}};_0x59df05(++_0x1dbbb2);}(_0x180e,0x72));var _0xe180=function(_0x3c5312,_0x2470bb){_0x3c5312=_0x3c5312-0x0;var _0x36f59b=_0x180e[_0x3c5312];return _0x36f59b;};'use strict';var EventEmitter=require(_0xe180('0x0'));var OpenchannelMessage=require(_0xe180('0x1'))['db'][_0xe180('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe180('0x3'),'afterUpdate':_0xe180('0x4'),'afterDestroy':'remove'};function emitEvent(_0x559ec8){return function(_0x443eca,_0x233447,_0x4e1a3f){OpenchannelMessageEvents[_0xe180('0x5')](_0x559ec8+':'+_0x443eca['id'],_0x443eca);OpenchannelMessageEvents[_0xe180('0x5')](_0x559ec8,_0x443eca);_0x4e1a3f(null);};}for(var e in events){if(events[_0xe180('0x6')](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module[_0xe180('0x7')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x92c2=['update','remove','emit','exports','events','../../mysqldb','OpenchannelMessage','setMaxListeners'];(function(_0x220f3f,_0x11c540){var _0x1f170e=function(_0x2c0ec9){while(--_0x2c0ec9){_0x220f3f['push'](_0x220f3f['shift']());}};_0x1f170e(++_0x11c540);}(_0x92c2,0xac));var _0x292c=function(_0x1d979e,_0xd504cd){_0x1d979e=_0x1d979e-0x0;var _0x20e4ac=_0x92c2[_0x1d979e];return _0x20e4ac;};'use strict';var EventEmitter=require(_0x292c('0x0'));var OpenchannelMessage=require(_0x292c('0x1'))['db'][_0x292c('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x292c('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x292c('0x4'),'afterDestroy':_0x292c('0x5')};function emitEvent(_0x563822){return function(_0x1b9f5a,_0xa43d38,_0x2c2761){OpenchannelMessageEvents[_0x292c('0x6')](_0x563822+':'+_0x1b9f5a['id'],_0x1b9f5a);OpenchannelMessageEvents[_0x292c('0x6')](_0x563822,_0x1b9f5a);_0x2c2761(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module[_0x292c('0x7')]=OpenchannelMessageEvents;
\ No newline at end of file
index 49420d1..eb6ffbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe91d=['openchannel_messages','fti_openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','findOne','OpenchannelInteractionId','then','createdAt','catch','error','CmContact','describe','OpenchannelAccount','find','OpenchannelAccountId','Interactions','Contact','replyUri','info','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','length','Interaction','POST','method','GET','Message\x20%d\x20forwarded\x20to\x20%s','threadId','OpenchannelInteraction','update','OpenchannelMessage,\x20%s,\x20%s','inspect','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./openchannelMessage.attributes','define','OpenchannelMessage'];(function(_0x180991,_0x1602df){var _0x837916=function(_0x5931af){while(--_0x5931af){_0x180991['push'](_0x180991['shift']());}};_0x837916(++_0x1602df);}(_0xe91d,0x139));var _0xde91=function(_0x544b3f,_0x4d8b66){_0x544b3f=_0x544b3f-0x0;var _0x15787f=_0xe91d[_0x544b3f];return _0x15787f;};'use strict';var _=require(_0xde91('0x0'));var util=require(_0xde91('0x1'));var logger=require(_0xde91('0x2'))(_0xde91('0x3'));var moment=require(_0xde91('0x4'));var BPromise=require('bluebird');var rp=require(_0xde91('0x5'));var fs=require('fs');var path=require(_0xde91('0x6'));var rimraf=require(_0xde91('0x7'));var config=require('../../config/environment');var attributes=require(_0xde91('0x8'));module['exports']=function(_0x2d8e22,_0xa6c7f8){return _0x2d8e22[_0xde91('0x9')](_0xde91('0xa'),attributes,{'tableName':_0xde91('0xb'),'paranoid':![],'indexes':[{'name':_0xde91('0xc'),'fields':[_0xde91('0xd')],'type':_0xde91('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5574f5,_0xb5cda6,_0x86aea8){var _0x9dffd6=_0x2d8e22[_0xde91('0xf')];var _0x2a9ca1=_0x5574f5[_0xde91('0x10')]({'plain':!![]});if(_0x2a9ca1[_0xde91('0x11')][_0xde91('0x12')]()==='in'||_0x2a9ca1[_0xde91('0x11')]['toLowerCase']()===_0xde91('0x13')&&!_0x2a9ca1[_0xde91('0x14')]&&!_[_0xde91('0x15')](_0x2a9ca1[_0xde91('0x16')])){_0x9dffd6['OpenchannelInteraction'][_0xde91('0x17')]({'where':{'id':_0x2a9ca1[_0xde91('0x18')]}})[_0xde91('0x19')](function(_0x7e82db){if(_0x7e82db){_0x7e82db['update']({'lastMsgAt':_0x2a9ca1[_0xde91('0x1a')],'lastMsgDirection':_0x2a9ca1[_0xde91('0x11')][_0xde91('0x12')]()});}})[_0xde91('0x1b')](function(_0x5a745e){console[_0xde91('0x1c')](_0x5a745e);});}if(_0x2a9ca1['direction']===_0xde91('0x13')&&!_0x2a9ca1[_0xde91('0x14')]){var _0x55e649;_0x9dffd6[_0xde91('0x1d')][_0xde91('0x1e')]()[_0xde91('0x19')](function(_0x372c24){return _0x9dffd6[_0xde91('0x1f')][_0xde91('0x20')]({'where':{'id':_0x2a9ca1[_0xde91('0x21')]},'include':[{'model':_0x9dffd6['OpenchannelInteraction'],'as':_0xde91('0x22'),'where':{'id':_0x2a9ca1[_0xde91('0x18')]},'limit':0x1,'include':[{'model':_0x9dffd6[_0xde91('0x1d')],'as':_0xde91('0x23'),'attributes':_['keys'](_0x372c24)}]}]});})[_0xde91('0x19')](function(_0x4b2988){_0x55e649=_0x4b2988[_0xde91('0x10')]({'plain':!![]});if(_0x55e649&&_0x55e649[_0xde91('0x24')]){logger[_0xde91('0x25')]('OpenchannelMessage,\x20%s,\x20%s',_0xde91('0x26'),util[_0xde91('0x27')](_0xde91('0x28'),_0x2a9ca1['id'],_0x55e649[_0xde91('0x24')]));if(_0x55e649['Interactions']&&_0x55e649['Interactions'][_0xde91('0x29')]){_0x2a9ca1[_0xde91('0x2a')]=_['omit'](_0x55e649['Interactions'][0x0],_0xde91('0x23'));_0x2a9ca1[_0xde91('0x23')]=_0x55e649[_0xde91('0x22')][0x0][_0xde91('0x23')];}var _0xb5cda6={'method':_0xde91('0x2b'),'uri':encodeURI(_0x55e649[_0xde91('0x24')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0xb5cda6[_0xde91('0x2c')]){case _0xde91('0x2d'):_0xb5cda6['qs']=_0x2a9ca1;break;case'POST':_0xb5cda6['body']=_0x2a9ca1;break;}return rp(_0xb5cda6)['then'](function(_0x825fd3){logger[_0xde91('0x25')]('OpenchannelMessage,\x20%s,\x20%s',_0xde91('0x26'),util[_0xde91('0x27')](_0xde91('0x2e'),_0x2a9ca1['id'],_0x55e649[_0xde91('0x24')]));if(_0x825fd3['body'][_0xde91('0x2f')]&&_0x825fd3['body']['threadId']!=_0x2a9ca1[_0xde91('0x2a')][_0xde91('0x2f')]){return _0x9dffd6[_0xde91('0x30')][_0xde91('0x31')]({'threadId':_0x825fd3[_0xde91('0xd')]['threadId']},{'where':{'id':_0x2a9ca1['Interaction']['id']}});}else{return;}})['then'](function(){return _0x5574f5[_0xde91('0x31')]({'read':!![]});})[_0xde91('0x1b')](function(_0x553cfd){logger[_0xde91('0x1c')](_0xde91('0x32'),_0xde91('0x26'),util[_0xde91('0x33')](_0x553cfd,{'showHidden':![],'depth':null}));_0x86aea8();});}else{_0x86aea8();}})['finally'](function(){_0x86aea8();});}else{_0x86aea8();}}},'charset':_0xde91('0x34'),'collate':_0xde91('0x35')});};
\ No newline at end of file
+var _0x0b4c=['FULLTEXT','get','direction','toLowerCase','out','secret','UserId','findOne','OpenchannelInteractionId','then','update','catch','error','CmContact','describe','OpenchannelAccount','OpenchannelAccountId','Interactions','Contact','keys','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','length','Interaction','omit','GET','Message\x20%d\x20forwarded\x20to\x20%s','threadId','body','OpenchannelInteraction','finally','utf8mb4','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelMessage.attributes','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages'];(function(_0x42f7cd,_0x1c47b7){var _0x514f16=function(_0x7426ce){while(--_0x7426ce){_0x42f7cd['push'](_0x42f7cd['shift']());}};_0x514f16(++_0x1c47b7);}(_0x0b4c,0x1a4));var _0xc0b4=function(_0x38e2b4,_0x5af8c7){_0x38e2b4=_0x38e2b4-0x0;var _0x3f1b15=_0x0b4c[_0x38e2b4];return _0x3f1b15;};'use strict';var _=require('lodash');var util=require(_0xc0b4('0x0'));var logger=require('../../config/logger')(_0xc0b4('0x1'));var moment=require('moment');var BPromise=require(_0xc0b4('0x2'));var rp=require(_0xc0b4('0x3'));var fs=require('fs');var path=require(_0xc0b4('0x4'));var rimraf=require(_0xc0b4('0x5'));var config=require(_0xc0b4('0x6'));var attributes=require(_0xc0b4('0x7'));module['exports']=function(_0x584aec,_0x2a5e91){return _0x584aec[_0xc0b4('0x8')](_0xc0b4('0x9'),attributes,{'tableName':_0xc0b4('0xa'),'paranoid':![],'indexes':[{'name':_0xc0b4('0xb'),'fields':['body'],'type':_0xc0b4('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4c2443,_0x23a535,_0x48ed73){var _0x2b9f64=_0x584aec['models'];var _0x153832=_0x4c2443[_0xc0b4('0xd')]({'plain':!![]});if(_0x153832[_0xc0b4('0xe')][_0xc0b4('0xf')]()==='in'||_0x153832[_0xc0b4('0xe')]['toLowerCase']()===_0xc0b4('0x10')&&!_0x153832[_0xc0b4('0x11')]&&!_['isNil'](_0x153832[_0xc0b4('0x12')])){_0x2b9f64['OpenchannelInteraction'][_0xc0b4('0x13')]({'where':{'id':_0x153832[_0xc0b4('0x14')]}})[_0xc0b4('0x15')](function(_0x4eefd0){if(_0x4eefd0){_0x4eefd0[_0xc0b4('0x16')]({'lastMsgAt':_0x153832['createdAt'],'lastMsgDirection':_0x153832[_0xc0b4('0xe')][_0xc0b4('0xf')]()});}})[_0xc0b4('0x17')](function(_0xe85d8f){console[_0xc0b4('0x18')](_0xe85d8f);});}if(_0x153832['direction']===_0xc0b4('0x10')&&!_0x153832[_0xc0b4('0x11')]){var _0x5fbd23;_0x2b9f64[_0xc0b4('0x19')][_0xc0b4('0x1a')]()[_0xc0b4('0x15')](function(_0x4a5aed){return _0x2b9f64[_0xc0b4('0x1b')]['find']({'where':{'id':_0x153832[_0xc0b4('0x1c')]},'include':[{'model':_0x2b9f64['OpenchannelInteraction'],'as':_0xc0b4('0x1d'),'where':{'id':_0x153832[_0xc0b4('0x14')]},'limit':0x1,'include':[{'model':_0x2b9f64[_0xc0b4('0x19')],'as':_0xc0b4('0x1e'),'attributes':_[_0xc0b4('0x1f')](_0x4a5aed)}]}]});})[_0xc0b4('0x15')](function(_0x22e246){_0x5fbd23=_0x22e246['get']({'plain':!![]});if(_0x5fbd23&&_0x5fbd23[_0xc0b4('0x20')]){logger[_0xc0b4('0x21')](_0xc0b4('0x22'),_0xc0b4('0x23'),util[_0xc0b4('0x24')](_0xc0b4('0x25'),_0x153832['id'],_0x5fbd23[_0xc0b4('0x20')]));if(_0x5fbd23['Interactions']&&_0x5fbd23['Interactions'][_0xc0b4('0x26')]){_0x153832[_0xc0b4('0x27')]=_[_0xc0b4('0x28')](_0x5fbd23[_0xc0b4('0x1d')][0x0],'Contact');_0x153832[_0xc0b4('0x1e')]=_0x5fbd23[_0xc0b4('0x1d')][0x0][_0xc0b4('0x1e')];}var _0x23a535={'method':'POST','uri':encodeURI(_0x5fbd23[_0xc0b4('0x20')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x23a535['method']){case _0xc0b4('0x29'):_0x23a535['qs']=_0x153832;break;case'POST':_0x23a535['body']=_0x153832;break;}return rp(_0x23a535)['then'](function(_0x3f1921){logger[_0xc0b4('0x21')](_0xc0b4('0x22'),_0xc0b4('0x23'),util['format'](_0xc0b4('0x2a'),_0x153832['id'],_0x5fbd23['replyUri']));if(_0x3f1921['body'][_0xc0b4('0x2b')]&&_0x3f1921[_0xc0b4('0x2c')][_0xc0b4('0x2b')]!=_0x153832[_0xc0b4('0x27')][_0xc0b4('0x2b')]){return _0x2b9f64[_0xc0b4('0x2d')][_0xc0b4('0x16')]({'threadId':_0x3f1921['body']['threadId']},{'where':{'id':_0x153832[_0xc0b4('0x27')]['id']}});}else{return;}})[_0xc0b4('0x15')](function(){return _0x4c2443['update']({'read':!![]});})[_0xc0b4('0x17')](function(_0x1b17db){logger['error'](_0xc0b4('0x22'),_0xc0b4('0x23'),util['inspect'](_0x1b17db,{'showHidden':![],'depth':null}));_0x48ed73();});}else{_0x48ed73();}})[_0xc0b4('0x2e')](function(){_0x48ed73();});}else{_0x48ed73();}}},'charset':_0xc0b4('0x2f'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 2915644..5af2121 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/environment','jayson/promise','http','defaults','redis','socket.io-emitter','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateOpenchannelMessage','OpenchannelMessage','body','options','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0xf2df81,_0x2c20cf){var _0x30412a=function(_0x20dac7){while(--_0x20dac7){_0xf2df81['push'](_0xf2df81['shift']());}};_0x30412a(++_0x2c20cf);}(_0x7a54,0x106));var _0x47a5=function(_0x2b8847,_0x3fe727){_0x2b8847=_0x2b8847-0x0;var _0x10ecb9=_0x7a54[_0x2b8847];return _0x10ecb9;};'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});config['redis']=_[_0x47a5('0xb')](config[_0x47a5('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x47a5('0xd'))(new Redis(config['redis']));require('./openchannelMessage.socket')['register'](socket);function respondWithRpcPromise(_0x2a0e98,_0x2baee7,_0x5e31dd){return new BPromise(function(_0x2eb0dd,_0x49e844){return client['request'](_0x2a0e98,_0x5e31dd)[_0x47a5('0xe')](function(_0x69e4d4){logger[_0x47a5('0xf')](_0x47a5('0x10'),_0x2baee7,_0x47a5('0x11'));logger[_0x47a5('0x12')](_0x47a5('0x13'),_0x2baee7,'request\x20sent',JSON[_0x47a5('0x14')](_0x69e4d4));if(_0x69e4d4[_0x47a5('0x15')]){if(_0x69e4d4[_0x47a5('0x15')][_0x47a5('0x16')]===0x1f4){logger[_0x47a5('0x15')](_0x47a5('0x10'),_0x2baee7,_0x69e4d4[_0x47a5('0x15')][_0x47a5('0x17')]);return _0x49e844(_0x69e4d4['error'][_0x47a5('0x17')]);}logger[_0x47a5('0x15')](_0x47a5('0x10'),_0x2baee7,_0x69e4d4[_0x47a5('0x15')][_0x47a5('0x17')]);return _0x2eb0dd(_0x69e4d4['error']['message']);}else{logger[_0x47a5('0xf')]('OpenchannelMessage,\x20%s,\x20%s',_0x2baee7,'request\x20sent');_0x2eb0dd(_0x69e4d4[_0x47a5('0x18')][_0x47a5('0x17')]);}})[_0x47a5('0x19')](function(_0x1ef371){logger[_0x47a5('0x15')](_0x47a5('0x10'),_0x2baee7,_0x1ef371);_0x49e844(_0x1ef371);});});}exports[_0x47a5('0x1a')]=function(_0xe3c618){var _0x3aed38=this;return new Promise(function(_0x4a9fcb,_0x1570bc){return db[_0x47a5('0x1b')]['create'](_0xe3c618[_0x47a5('0x1c')],{'raw':_0xe3c618[_0x47a5('0x1d')]?_0xe3c618[_0x47a5('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x47a5('0xe')](function(_0x2f142b){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xe3c618);logger['debug'](_0x47a5('0x1a'),_0xe3c618,JSON[_0x47a5('0x14')](_0x2f142b));_0x4a9fcb(_0x2f142b);})['catch'](function(_0x28747d){logger[_0x47a5('0x15')](_0x47a5('0x1a'),_0x28747d[_0x47a5('0x17')],_0xe3c618);_0x1570bc(_0x3aed38[_0x47a5('0x15')](0x1f4,_0x28747d['message']));});});};
\ No newline at end of file
+var _0xadb5=['debug','request\x20sent','stringify','error','code','message','info','result','catch','OpenchannelMessage','body','raw','CreateOpenchannelMessage','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','request','then','OpenchannelMessage,\x20%s,\x20%s'];(function(_0x5b7252,_0x5b5c70){var _0x395d48=function(_0x3cf4de){while(--_0x3cf4de){_0x5b7252['push'](_0x5b7252['shift']());}};_0x395d48(++_0x5b5c70);}(_0xadb5,0xad));var _0x5adb=function(_0x12c30c,_0x36c50d){_0x12c30c=_0x12c30c-0x0;var _0x2c53a0=_0xadb5[_0x12c30c];return _0x2c53a0;};'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});config[_0x5adb('0xa')]=_[_0x5adb('0xb')](config[_0x5adb('0xa')],{'host':_0x5adb('0xc'),'port':0x18eb});var socket=require(_0x5adb('0xd'))(new Redis(config[_0x5adb('0xa')]));require(_0x5adb('0xe'))[_0x5adb('0xf')](socket);function respondWithRpcPromise(_0x336bad,_0x129f5a,_0x275428){return new BPromise(function(_0x563d86,_0x4c268d){return client[_0x5adb('0x10')](_0x336bad,_0x275428)[_0x5adb('0x11')](function(_0x82e67e){logger['info'](_0x5adb('0x12'),_0x129f5a,'request\x20sent');logger[_0x5adb('0x13')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x129f5a,_0x5adb('0x14'),JSON[_0x5adb('0x15')](_0x82e67e));if(_0x82e67e[_0x5adb('0x16')]){if(_0x82e67e['error'][_0x5adb('0x17')]===0x1f4){logger[_0x5adb('0x16')](_0x5adb('0x12'),_0x129f5a,_0x82e67e['error'][_0x5adb('0x18')]);return _0x4c268d(_0x82e67e['error'][_0x5adb('0x18')]);}logger[_0x5adb('0x16')](_0x5adb('0x12'),_0x129f5a,_0x82e67e[_0x5adb('0x16')][_0x5adb('0x18')]);return _0x563d86(_0x82e67e[_0x5adb('0x16')][_0x5adb('0x18')]);}else{logger[_0x5adb('0x19')](_0x5adb('0x12'),_0x129f5a,'request\x20sent');_0x563d86(_0x82e67e[_0x5adb('0x1a')]['message']);}})[_0x5adb('0x1b')](function(_0x558f76){logger[_0x5adb('0x16')]('OpenchannelMessage,\x20%s,\x20%s',_0x129f5a,_0x558f76);_0x4c268d(_0x558f76);});});}exports['CreateOpenchannelMessage']=function(_0x1fbaa5){var _0x1bed20=this;return new Promise(function(_0x438671,_0x1fd4a7){return db[_0x5adb('0x1c')]['create'](_0x1fbaa5[_0x5adb('0x1d')],{'raw':_0x1fbaa5['options']?_0x1fbaa5['options'][_0x5adb('0x1e')]===undefined?!![]:![]:!![]})[_0x5adb('0x11')](function(_0x1a38d3){logger[_0x5adb('0x19')](_0x5adb('0x1f'),_0x1fbaa5);logger[_0x5adb('0x13')](_0x5adb('0x1f'),_0x1fbaa5,JSON['stringify'](_0x1a38d3));_0x438671(_0x1a38d3);})[_0x5adb('0x1b')](function(_0x373cc3){logger[_0x5adb('0x16')](_0x5adb('0x1f'),_0x373cc3[_0x5adb('0x18')],_0x1fbaa5);_0x1fd4a7(_0x1bed20['error'](0x1f4,_0x373cc3[_0x5adb('0x18')]));});});};
\ No newline at end of file
index 99ad20e..01ca4ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f4a=['register','length','openchannelMessage:','./openchannelMessage.events','save','update','removeListener'];(function(_0x2a56ad,_0x2b94bf){var _0x425175=function(_0x342f20){while(--_0x342f20){_0x2a56ad['push'](_0x2a56ad['shift']());}};_0x425175(++_0x2b94bf);}(_0x5f4a,0x1bc));var _0xa5f4=function(_0x2d1895,_0x1342b3){_0x2d1895=_0x2d1895-0x0;var _0x32944e=_0x5f4a[_0x2d1895];return _0x32944e;};'use strict';var OpenchannelMessageEvents=require(_0xa5f4('0x0'));var events=[_0xa5f4('0x1'),'remove',_0xa5f4('0x2')];function createListener(_0x4bcd9e,_0x4f268e){return function(_0x4bc0e8){_0x4f268e['emit'](_0x4bcd9e,_0x4bc0e8);};}function removeListener(_0x3afe01,_0x33965b){return function(){OpenchannelMessageEvents[_0xa5f4('0x3')](_0x3afe01,_0x33965b);};}exports[_0xa5f4('0x4')]=function(_0x36ebe2){for(var _0x347b81=0x0,_0x27c2f2=events[_0xa5f4('0x5')];_0x347b81<_0x27c2f2;_0x347b81++){var _0x8ecb1b=events[_0x347b81];var _0x416a8f=createListener(_0xa5f4('0x6')+_0x8ecb1b,_0x36ebe2);OpenchannelMessageEvents['on'](_0x8ecb1b,_0x416a8f);}};
\ No newline at end of file
+var _0xa74d=['openchannelMessage:','./openchannelMessage.events','save','update','emit','register'];(function(_0x5a5395,_0x5361f6){var _0x4da43d=function(_0x149941){while(--_0x149941){_0x5a5395['push'](_0x5a5395['shift']());}};_0x4da43d(++_0x5361f6);}(_0xa74d,0x193));var _0xda74=function(_0x5be374,_0x312771){_0x5be374=_0x5be374-0x0;var _0x153b30=_0xa74d[_0x5be374];return _0x153b30;};'use strict';var OpenchannelMessageEvents=require(_0xda74('0x0'));var events=[_0xda74('0x1'),'remove',_0xda74('0x2')];function createListener(_0x3bdd72,_0x13e54a){return function(_0x40d42c){_0x13e54a[_0xda74('0x3')](_0x3bdd72,_0x40d42c);};}function removeListener(_0x135f42,_0x8804ce){return function(){OpenchannelMessageEvents['removeListener'](_0x135f42,_0x8804ce);};}exports[_0xda74('0x4')]=function(_0x55abfb){for(var _0x3dba1c=0x0,_0x158da4=events['length'];_0x3dba1c<_0x158da4;_0x3dba1c++){var _0x8e1174=events[_0x3dba1c];var _0x3e8274=createListener(_0xda74('0x5')+_0x8e1174,_0x55abfb);OpenchannelMessageEvents['on'](_0x8e1174,_0x3e8274);}};
\ No newline at end of file
index ae0cca7..72e28a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2be4=['../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','getAgents','post','/:id/users','addAgents','put','update','destroy','removeTeams','delete','removeAgents','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x476ef2,_0x4c7d9d){var _0x1a7b8a=function(_0x4b5ba5){while(--_0x4b5ba5){_0x476ef2['push'](_0x476ef2['shift']());}};_0x1a7b8a(++_0x4c7d9d);}(_0x2be4,0x90));var _0x42be=function(_0x11eda6,_0x4f3d57){_0x11eda6=_0x11eda6-0x0;var _0x12a624=_0x2be4[_0x11eda6];return _0x12a624;};'use strict';var multer=require('multer');var util=require(_0x42be('0x0'));var path=require(_0x42be('0x1'));var timeout=require(_0x42be('0x2'));var express=require(_0x42be('0x3'));var router=express[_0x42be('0x4')]();var fs_extra=require(_0x42be('0x5'));var auth=require(_0x42be('0x6'));var interaction=require(_0x42be('0x7'));var config=require(_0x42be('0x8'));var controller=require(_0x42be('0x9'));router[_0x42be('0xa')]('/',auth[_0x42be('0xb')](),controller['index']);router['get'](_0x42be('0xc'),auth[_0x42be('0xb')](),controller[_0x42be('0xd')]);router[_0x42be('0xa')](_0x42be('0xe'),auth[_0x42be('0xb')](),controller[_0x42be('0xf')]);router[_0x42be('0xa')](_0x42be('0x10'),auth['isAuthenticated'](),controller[_0x42be('0x11')]);router[_0x42be('0xa')](_0x42be('0x12'),auth['isAuthenticated'](),controller[_0x42be('0x13')]);router[_0x42be('0xa')]('/:id/users',auth[_0x42be('0xb')](),controller[_0x42be('0x14')]);router['post']('/',auth[_0x42be('0xb')](),controller['create']);router[_0x42be('0x15')](_0x42be('0x12'),auth[_0x42be('0xb')](),controller['addTeams']);router['post'](_0x42be('0x16'),auth[_0x42be('0xb')](),controller[_0x42be('0x17')]);router[_0x42be('0x18')](_0x42be('0xe'),auth['isAuthenticated'](),controller[_0x42be('0x19')]);router['delete'](_0x42be('0xe'),auth[_0x42be('0xb')](),controller[_0x42be('0x1a')]);router['delete'](_0x42be('0x12'),auth[_0x42be('0xb')](),controller[_0x42be('0x1b')]);router[_0x42be('0x1c')](_0x42be('0x16'),auth[_0x42be('0xb')](),controller[_0x42be('0x1d')]);module['exports']=router;
\ No newline at end of file
+var _0xe990=['../../components/auth/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','fs-extra'];(function(_0x10e8b4,_0x165d4c){var _0xa8979c=function(_0x2eb096){while(--_0x2eb096){_0x10e8b4['push'](_0x10e8b4['shift']());}};_0xa8979c(++_0x165d4c);}(_0xe990,0x1bd));var _0x0e99=function(_0x36884e,_0x48008f){_0x36884e=_0x36884e-0x0;var _0x1cc367=_0xe990[_0x36884e];return _0x1cc367;};'use strict';var multer=require(_0x0e99('0x0'));var util=require(_0x0e99('0x1'));var path=require(_0x0e99('0x2'));var timeout=require(_0x0e99('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x0e99('0x4'));var auth=require(_0x0e99('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x0e99('0x6'));var controller=require(_0x0e99('0x7'));router[_0x0e99('0x8')]('/',auth[_0x0e99('0x9')](),controller[_0x0e99('0xa')]);router[_0x0e99('0x8')]('/describe',auth[_0x0e99('0x9')](),controller['describe']);router['get'](_0x0e99('0xb'),auth[_0x0e99('0x9')](),controller[_0x0e99('0xc')]);router[_0x0e99('0x8')](_0x0e99('0xd'),auth[_0x0e99('0x9')](),controller[_0x0e99('0xe')]);router[_0x0e99('0x8')](_0x0e99('0xf'),auth[_0x0e99('0x9')](),controller[_0x0e99('0x10')]);router[_0x0e99('0x8')](_0x0e99('0x11'),auth[_0x0e99('0x9')](),controller[_0x0e99('0x12')]);router[_0x0e99('0x13')]('/',auth['isAuthenticated'](),controller[_0x0e99('0x14')]);router[_0x0e99('0x13')](_0x0e99('0xf'),auth[_0x0e99('0x9')](),controller[_0x0e99('0x15')]);router[_0x0e99('0x13')](_0x0e99('0x11'),auth[_0x0e99('0x9')](),controller[_0x0e99('0x16')]);router[_0x0e99('0x17')](_0x0e99('0xb'),auth[_0x0e99('0x9')](),controller[_0x0e99('0x18')]);router[_0x0e99('0x19')](_0x0e99('0xb'),auth[_0x0e99('0x9')](),controller[_0x0e99('0x1a')]);router[_0x0e99('0x19')](_0x0e99('0xf'),auth['isAuthenticated'](),controller[_0x0e99('0x1b')]);router[_0x0e99('0x19')]('/:id/users',auth['isAuthenticated'](),controller[_0x0e99('0x1c')]);module[_0x0e99('0x1d')]=router;
\ No newline at end of file
index 58a2b51..b1b13a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4389=['roundrobin','exports','STRING','name','ENUM','rrmemory','beepall'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x4389,0x120));var _0x9438=function(_0x4befa3,_0x157ee3){_0x4befa3=_0x4befa3-0x0;var _0x5aed7d=_0x4389[_0x4befa3];return _0x5aed7d;};'use strict';var Sequelize=require('sequelize');module[_0x9438('0x0')]={'name':{'type':Sequelize[_0x9438('0x1')],'unique':_0x9438('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x9438('0x1')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9438('0x3')](_0x9438('0x4'),_0x9438('0x5'),_0x9438('0x6'))}};
\ No newline at end of file
+var _0xa474=['name','INTEGER','ENUM','rrmemory','roundrobin','sequelize','exports','STRING'];(function(_0x2db12b,_0x30ab1d){var _0x20990b=function(_0x589477){while(--_0x589477){_0x2db12b['push'](_0x2db12b['shift']());}};_0x20990b(++_0x30ab1d);}(_0xa474,0xfd));var _0x4a47=function(_0x1e4e02,_0x3dc48b){_0x1e4e02=_0x1e4e02-0x0;var _0x2fb8aa=_0xa474[_0x1e4e02];return _0x2fb8aa;};'use strict';var Sequelize=require(_0x4a47('0x0'));module[_0x4a47('0x1')]={'name':{'type':Sequelize[_0x4a47('0x2')],'unique':_0x4a47('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x4a47('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x4a47('0x5')](_0x4a47('0x6'),'beepall',_0x4a47('0x7'))}};
\ No newline at end of file
index 565e940..a883244 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x869b=['value','ids','isEmpty','removeAgents','forEach','emit','userOpenchannelQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelQueue.socket','register','end','status','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','sendStatus','stack','name','send','map','OpenchannelQueue','fieldName','key','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','type','VIRTUAL','includeAll','include','findAll','catch','show','params','keys','rawAttributes','options','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','error','body','describe','getMembers','UserOpenchannelQueue','order','findAndCountAll','UserId','openchannelPause','updatedAt','format','%s/%s','createdAt','getTeams','findOne','Team','pick','User','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','userOpenchannelQueue:save','select','field','tq.TeamId','team_has_openchannel_queues','ut.TeamId\x20=\x20tq.TeamId','clone','push','QueryTypes','SELECT','every','includes','compact'];(function(_0xbd2f4c,_0x5658ec){var _0x458734=function(_0x16a4a5){while(--_0x16a4a5){_0xbd2f4c['push'](_0xbd2f4c['shift']());}};_0x458734(++_0x5658ec);}(_0x869b,0x198));var _0xb869=function(_0x500de1,_0x51f9f9){_0x500de1=_0x500de1-0x0;var _0x24a84a=_0x869b[_0x500de1];return _0x24a84a;};'use strict';var emlformat=require(_0xb869('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb869('0x1'));var jsonpatch=require(_0xb869('0x2'));var rp=require(_0xb869('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb869('0x4'));var path=require(_0xb869('0x5'));var sox=require(_0xb869('0x6'));var csv=require(_0xb869('0x7'));var ejs=require(_0xb869('0x8'));var fs=require('fs');var fs_extra=require(_0xb869('0x9'));var _=require(_0xb869('0xa'));var squel=require('squel');var crypto=require(_0xb869('0xb'));var jsforce=require(_0xb869('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb869('0xd'));var Redis=require(_0xb869('0xe'));var authService=require(_0xb869('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xb869('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb869('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb869('0x12'));var db=require(_0xb869('0x13'))['db'];config[_0xb869('0x14')]=_[_0xb869('0x15')](config[_0xb869('0x14')],{'host':'localhost','port':0x18eb});var socket=require(_0xb869('0x16'))(new Redis(config[_0xb869('0x14')]));require(_0xb869('0x17'))[_0xb869('0x18')](socket);function respondWithStatusCode(_0x2ac613,_0x5f0bc1){_0x5f0bc1=_0x5f0bc1||0xcc;return function(_0x214c15){if(_0x214c15){return _0x2ac613['sendStatus'](_0x5f0bc1);}return _0x2ac613['status'](_0x5f0bc1)[_0xb869('0x19')]();};}function respondWithResult(_0x3507bd,_0x4cf25d){_0x4cf25d=_0x4cf25d||0xc8;return function(_0x55b7ad){if(_0x55b7ad){return _0x3507bd[_0xb869('0x1a')](_0x4cf25d)[_0xb869('0x1b')](_0x55b7ad);}};}function respondWithFilteredResult(_0x47cf2b,_0x4c334a){return function(_0xdad0c7){if(_0xdad0c7){var _0x2179da=typeof _0x4c334a[_0xb869('0x1c')]==='undefined'&&typeof _0x4c334a[_0xb869('0x1d')]==='undefined';var _0x4af211=_0xdad0c7[_0xb869('0x1e')];var _0x572580=_0x2179da?0x0:_0x4c334a[_0xb869('0x1c')];var _0x27fbab=_0x2179da?_0xdad0c7[_0xb869('0x1e')]:_0x4c334a[_0xb869('0x1c')]+_0x4c334a[_0xb869('0x1d')];var _0x3841bd;if(_0x27fbab>=_0x4af211){_0x27fbab=_0x4af211;_0x3841bd=0xc8;}else{_0x3841bd=0xce;}_0x47cf2b['status'](_0x3841bd);return _0x47cf2b[_0xb869('0x1f')](_0xb869('0x20'),_0x572580+'-'+_0x27fbab+'/'+_0x4af211)[_0xb869('0x1b')](_0xdad0c7);}return null;};}function patchUpdates(_0x2ca0ae){return function(_0x5b5dd8){try{jsonpatch[_0xb869('0x21')](_0x5b5dd8,_0x2ca0ae,!![]);}catch(_0x425753){return BPromise[_0xb869('0x22')](_0x425753);}return _0x5b5dd8[_0xb869('0x23')]();};}function saveUpdates(_0x1d5fc0,_0x583ff4){return function(_0xfdea66){if(_0xfdea66){return _0xfdea66[_0xb869('0x24')](_0x1d5fc0)[_0xb869('0x25')](function(_0x11dc73){return _0x11dc73;});}return null;};}function removeEntity(_0x30a7db,_0x3e127d){return function(_0x2731c2){if(_0x2731c2){return _0x2731c2[_0xb869('0x26')]()['then'](function(){var _0x53be8c=_0x2731c2[_0xb869('0x27')]({'plain':!![]});var _0x1bfc79='OpenchannelQueues';return db['UserProfileResource'][_0xb869('0x26')]({'where':{'type':_0x1bfc79,'resourceId':_0x53be8c['id']}})['then'](function(){return _0x2731c2;});})[_0xb869('0x25')](function(){_0x30a7db[_0xb869('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2cf55e,_0x293fde){return function(_0x5892bd){if(!_0x5892bd){_0x2cf55e[_0xb869('0x28')](0x194);}return _0x5892bd;};}function handleError(_0x1ec417,_0x3d7d6a){_0x3d7d6a=_0x3d7d6a||0x1f4;return function(_0x3dd3f3){logger['error'](_0x3dd3f3[_0xb869('0x29')]);if(_0x3dd3f3[_0xb869('0x2a')]){delete _0x3dd3f3[_0xb869('0x2a')];}_0x1ec417['status'](_0x3d7d6a)[_0xb869('0x2b')](_0x3dd3f3);};}exports['index']=function(_0x564843,_0xa76533){var _0x3604b2={},_0x4a9a67={},_0x266cd3={'count':0x0,'rows':[]};var _0x3d755e=_[_0xb869('0x2c')](db[_0xb869('0x2d')]['rawAttributes'],function(_0x43d4ee){return{'name':_0x43d4ee[_0xb869('0x2e')],'type':_0x43d4ee['type'][_0xb869('0x2f')]};});_0x4a9a67['model']=_['map'](_0x3d755e,_0xb869('0x2a'));_0x4a9a67['query']=_['keys'](_0x564843[_0xb869('0x30')]);_0x4a9a67['filters']=_[_0xb869('0x31')](_0x4a9a67[_0xb869('0x32')],_0x4a9a67['query']);_0x3604b2[_0xb869('0x33')]=_[_0xb869('0x31')](_0x4a9a67[_0xb869('0x32')],qs['fields'](_0x564843[_0xb869('0x30')][_0xb869('0x34')]));_0x3604b2[_0xb869('0x33')]=_0x3604b2['attributes'][_0xb869('0x35')]?_0x3604b2['attributes']:_0x4a9a67[_0xb869('0x32')];if(!_0x564843[_0xb869('0x30')][_0xb869('0x36')](_0xb869('0x37'))){_0x3604b2[_0xb869('0x1d')]=qs[_0xb869('0x1d')](_0x564843['query'][_0xb869('0x1d')]);_0x3604b2[_0xb869('0x1c')]=qs[_0xb869('0x1c')](_0x564843['query'][_0xb869('0x1c')]);}_0x3604b2['order']=qs['sort'](_0x564843[_0xb869('0x30')][_0xb869('0x38')]);_0x3604b2[_0xb869('0x39')]=qs[_0xb869('0x3a')](_['pick'](_0x564843[_0xb869('0x30')],_0x4a9a67[_0xb869('0x3a')]),_0x3d755e);if(_0x564843[_0xb869('0x30')][_0xb869('0x3b')]){_0x3604b2[_0xb869('0x39')]=_[_0xb869('0x3c')](_0x3604b2[_0xb869('0x39')],{'$or':_['map'](_0x3d755e,function(_0x5a182c){if(_0x5a182c[_0xb869('0x3d')]!==_0xb869('0x3e')){var _0x12b3ad={};_0x12b3ad[_0x5a182c[_0xb869('0x2a')]]={'$like':'%'+_0x564843[_0xb869('0x30')][_0xb869('0x3b')]+'%'};return _0x12b3ad;}})});}_0x3604b2=_['merge']({},_0x3604b2,_0x564843['options']);var _0x5cf5a6={'where':_0x3604b2[_0xb869('0x39')]};return db[_0xb869('0x2d')][_0xb869('0x1e')](_0x5cf5a6)[_0xb869('0x25')](function(_0x3ebae7){_0x266cd3[_0xb869('0x1e')]=_0x3ebae7;if(_0x564843['query'][_0xb869('0x3f')]){_0x3604b2[_0xb869('0x40')]=[{'all':!![]}];}return db[_0xb869('0x2d')][_0xb869('0x41')](_0x3604b2);})[_0xb869('0x25')](function(_0x387f43){_0x266cd3['rows']=_0x387f43;return _0x266cd3;})[_0xb869('0x25')](respondWithFilteredResult(_0xa76533,_0x3604b2))[_0xb869('0x42')](handleError(_0xa76533,null));};exports[_0xb869('0x43')]=function(_0x474a13,_0x35f927){var _0x4d12fc={'raw':!![],'where':{'id':_0x474a13[_0xb869('0x44')]['id']}},_0x1bdb54={};_0x1bdb54[_0xb869('0x32')]=_[_0xb869('0x45')](db['OpenchannelQueue'][_0xb869('0x46')]);_0x1bdb54[_0xb869('0x30')]=_['keys'](_0x474a13[_0xb869('0x30')]);_0x1bdb54[_0xb869('0x3a')]=_[_0xb869('0x31')](_0x1bdb54[_0xb869('0x32')],_0x1bdb54['query']);_0x4d12fc[_0xb869('0x33')]=_[_0xb869('0x31')](_0x1bdb54['model'],qs['fields'](_0x474a13['query'][_0xb869('0x34')]));_0x4d12fc['attributes']=_0x4d12fc[_0xb869('0x33')][_0xb869('0x35')]?_0x4d12fc[_0xb869('0x33')]:_0x1bdb54[_0xb869('0x32')];if(_0x474a13[_0xb869('0x30')][_0xb869('0x3f')]){_0x4d12fc[_0xb869('0x40')]=[{'all':!![]}];}_0x4d12fc=_[_0xb869('0x3c')]({},_0x4d12fc,_0x474a13[_0xb869('0x47')]);return db[_0xb869('0x2d')]['find'](_0x4d12fc)[_0xb869('0x25')](handleEntityNotFound(_0x35f927,null))['then'](respondWithResult(_0x35f927,null))['catch'](handleError(_0x35f927,null));};exports[_0xb869('0x48')]=function(_0x394a4b,_0x411136){return db[_0xb869('0x2d')][_0xb869('0x48')](_0x394a4b['body'],{})[_0xb869('0x25')](function(_0x919d4c){var _0x3bb967=_0x394a4b['user'][_0xb869('0x27')]({'plain':!![]});if(!_0x3bb967)throw new Error(_0xb869('0x49'));if(_0x3bb967['role']===_0xb869('0x4a')){var _0x3153e6=_0x919d4c[_0xb869('0x27')]({'plain':!![]});var _0x1ad862='OpenchannelQueues';return db[_0xb869('0x4b')][_0xb869('0x4c')]({'where':{'name':_0x1ad862,'userProfileId':_0x3bb967[_0xb869('0x4d')]},'raw':!![]})[_0xb869('0x25')](function(_0x304bbc){if(_0x304bbc&&_0x304bbc[_0xb869('0x4e')]===0x0){return db[_0xb869('0x4f')][_0xb869('0x48')]({'name':_0x3153e6[_0xb869('0x2a')],'resourceId':_0x3153e6['id'],'type':_0x304bbc[_0xb869('0x2a')],'sectionId':_0x304bbc['id']},{})[_0xb869('0x25')](function(){return _0x919d4c;});}else{return _0x919d4c;}})[_0xb869('0x42')](function(_0x52af3d){logger[_0xb869('0x50')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x52af3d);throw _0x52af3d;});}return _0x919d4c;})['then'](respondWithResult(_0x411136,0xc9))['catch'](handleError(_0x411136,null));};exports['update']=function(_0x4b23ba,_0x5dc2b4){if(_0x4b23ba['body']['id']){delete _0x4b23ba[_0xb869('0x51')]['id'];}return db[_0xb869('0x2d')]['find']({'where':{'id':_0x4b23ba[_0xb869('0x44')]['id']}})[_0xb869('0x25')](handleEntityNotFound(_0x5dc2b4,null))['then'](saveUpdates(_0x4b23ba['body'],null))[_0xb869('0x25')](respondWithResult(_0x5dc2b4,null))[_0xb869('0x42')](handleError(_0x5dc2b4,null));};exports['destroy']=function(_0x4c41a4,_0xed88c2){return db[_0xb869('0x2d')][_0xb869('0x4c')]({'where':{'id':_0x4c41a4[_0xb869('0x44')]['id']}})[_0xb869('0x25')](handleEntityNotFound(_0xed88c2,null))[_0xb869('0x25')](removeEntity(_0xed88c2,null))[_0xb869('0x42')](handleError(_0xed88c2,null));};exports[_0xb869('0x52')]=function(_0x41aa14,_0x346d2f){return db[_0xb869('0x2d')][_0xb869('0x52')]()['then'](respondWithResult(_0x346d2f,null))[_0xb869('0x42')](handleError(_0x346d2f,null));};exports[_0xb869('0x53')]=function(_0xb34d31,_0x20689e,_0x52931f){var _0x29fbe3={'raw':!![],'where':{}},_0x4e6294={},_0x3c7584;return db[_0xb869('0x2d')]['findOne']({'where':{'id':_0xb34d31['params']['id']}})[_0xb869('0x25')](handleEntityNotFound(_0x20689e,null))[_0xb869('0x25')](function(_0x577609){if(_0x577609){_0x3c7584=_0x577609[_0xb869('0x27')]({'plain':!![]});_0x4e6294[_0xb869('0x32')]=_['keys'](db[_0xb869('0x54')][_0xb869('0x46')]);_0x4e6294[_0xb869('0x30')]=_[_0xb869('0x45')](_0xb34d31[_0xb869('0x30')]);_0x4e6294[_0xb869('0x3a')]=_[_0xb869('0x31')](_0x4e6294['model'],_0x4e6294[_0xb869('0x30')]);_0x29fbe3['attributes']=_[_0xb869('0x31')](_0x4e6294[_0xb869('0x32')],qs[_0xb869('0x34')](_0xb34d31[_0xb869('0x30')]['fields']));_0x29fbe3[_0xb869('0x33')]=_0x29fbe3[_0xb869('0x33')][_0xb869('0x35')]?_0x29fbe3[_0xb869('0x33')]:_0x4e6294[_0xb869('0x32')];if(!_0xb34d31[_0xb869('0x30')][_0xb869('0x36')]('nolimit')){_0x29fbe3[_0xb869('0x1d')]=qs[_0xb869('0x1d')](_0xb34d31[_0xb869('0x30')][_0xb869('0x1d')]);_0x29fbe3['offset']=qs[_0xb869('0x1c')](_0xb34d31[_0xb869('0x30')][_0xb869('0x1c')]);}_0x29fbe3[_0xb869('0x55')]=qs[_0xb869('0x38')](_0xb34d31[_0xb869('0x30')][_0xb869('0x38')]);_0x29fbe3[_0xb869('0x39')]=qs[_0xb869('0x3a')](_['pick'](_0xb34d31[_0xb869('0x30')],_0x4e6294['filters']));_0x29fbe3[_0xb869('0x39')]['OpenchannelQueueId']=_0x577609['id'];if(_0xb34d31[_0xb869('0x30')][_0xb869('0x3b')]){_0x29fbe3[_0xb869('0x39')]=_[_0xb869('0x3c')](_0x29fbe3[_0xb869('0x39')],{'$or':_[_0xb869('0x2c')](_0x29fbe3[_0xb869('0x33')],function(_0x1d2d7c){var _0x46fbf4={};_0x46fbf4[_0x1d2d7c]={'$like':'%'+_0xb34d31[_0xb869('0x30')][_0xb869('0x3b')]+'%'};return _0x46fbf4;})});}_0x29fbe3=_[_0xb869('0x3c')]({},_0x29fbe3,_0xb34d31['options']);return db[_0xb869('0x54')][_0xb869('0x41')](_0x29fbe3);}})[_0xb869('0x25')](function(_0x3aad33){if(_0x3aad33){return db['User'][_0xb869('0x56')]({'where':{'id':_[_0xb869('0x2c')](_0x3aad33,_0xb869('0x57')),'role':'agent'},'attributes':['id',_0xb869('0x2a'),_0xb869('0x58'),_0xb869('0x59'),'createdAt']});}})['then'](function(_0x5bb9e8){if(_0x5bb9e8){return{'count':_0x5bb9e8[_0xb869('0x1e')],'rows':_['map'](_0x5bb9e8['rows'],function(_0xa85ac4){return{'membername':_0xa85ac4[_0xb869('0x2a')],'UserId':_0xa85ac4['id'],'queue_name':_0x3c7584[_0xb869('0x2a')],'OpenchannelQueueId':_0x3c7584['id'],'interface':util[_0xb869('0x5a')](_0xb869('0x5b'),'SIP',_0xa85ac4[_0xb869('0x2a')]),'penalty':0x0,'paused':_0xa85ac4[_0xb869('0x58')],'createdAt':_0xa85ac4[_0xb869('0x5c')],'updatedAt':_0xa85ac4[_0xb869('0x59')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xb869('0x25')](respondWithFilteredResult(_0x20689e,_0x29fbe3))[_0xb869('0x42')](handleError(_0x20689e,null));};exports[_0xb869('0x5d')]=function(_0x2e549e,_0x4b9a96,_0x1d0fe9){var _0x16fc39={};var _0xb20896={};var _0x301b64;var _0x576635;return db[_0xb869('0x2d')][_0xb869('0x5e')]({'where':{'id':_0x2e549e[_0xb869('0x44')]['id']}})[_0xb869('0x25')](handleEntityNotFound(_0x4b9a96,null))[_0xb869('0x25')](function(_0x4afa26){if(_0x4afa26){_0x301b64=_0x4afa26;_0xb20896['model']=_[_0xb869('0x45')](db[_0xb869('0x5f')]['rawAttributes']);_0xb20896[_0xb869('0x30')]=_[_0xb869('0x45')](_0x2e549e[_0xb869('0x30')]);_0xb20896['filters']=_['intersection'](_0xb20896[_0xb869('0x32')],_0xb20896[_0xb869('0x30')]);_0x16fc39[_0xb869('0x33')]=_[_0xb869('0x31')](_0xb20896[_0xb869('0x32')],qs[_0xb869('0x34')](_0x2e549e['query']['fields']));_0x16fc39[_0xb869('0x33')]=_0x16fc39[_0xb869('0x33')][_0xb869('0x35')]?_0x16fc39['attributes']:_0xb20896[_0xb869('0x32')];_0x16fc39[_0xb869('0x55')]=qs['sort'](_0x2e549e[_0xb869('0x30')][_0xb869('0x38')]);_0x16fc39['where']=qs['filters'](_[_0xb869('0x60')](_0x2e549e[_0xb869('0x30')],_0xb20896[_0xb869('0x3a')]));if(_0x2e549e['query'][_0xb869('0x3b')]){_0x16fc39['where']=_[_0xb869('0x3c')](_0x16fc39[_0xb869('0x39')],{'$or':_[_0xb869('0x2c')](_0x16fc39['attributes'],function(_0x502ef3){var _0x4e8dcf={};_0x4e8dcf[_0x502ef3]={'$like':'%'+_0x2e549e[_0xb869('0x30')]['filter']+'%'};return _0x4e8dcf;})});}_0x16fc39=_[_0xb869('0x3c')]({},_0x16fc39,_0x2e549e[_0xb869('0x47')]);return _0x301b64['getTeams'](_0x16fc39);}})[_0xb869('0x25')](function(_0x770f2b){if(_0x770f2b){_0x576635=_0x770f2b['length'];if(!_0x2e549e[_0xb869('0x30')][_0xb869('0x36')]('nolimit')){_0x16fc39['limit']=qs[_0xb869('0x1d')](_0x2e549e[_0xb869('0x30')][_0xb869('0x1d')]);_0x16fc39[_0xb869('0x1c')]=qs[_0xb869('0x1c')](_0x2e549e[_0xb869('0x30')]['offset']);}return _0x301b64[_0xb869('0x5d')](_0x16fc39);}})[_0xb869('0x25')](function(_0x33ce96){if(_0x33ce96){return _0x33ce96?{'count':_0x576635,'rows':_0x33ce96}:null;}})[_0xb869('0x25')](respondWithResult(_0x4b9a96,null))[_0xb869('0x42')](handleError(_0x4b9a96,null));};exports['addTeams']=function(_0x56ad4f,_0x190c93,_0x5e34dd){var _0x41c3f6=_0x56ad4f[_0xb869('0x51')]['ids'];return db['Team']['findAll']({'where':{'id':_0x41c3f6},'attributes':['id'],'include':[{'model':db[_0xb869('0x61')],'as':_0xb869('0x62'),'attributes':['id',_0xb869('0x2a'),_0xb869('0x63'),_0xb869('0x64'),_0xb869('0x65')],'raw':!![]}]})[_0xb869('0x25')](function(_0x238b17){if(_0x238b17){var _0x1cac40=_[_0xb869('0x66')](_0x238b17,function(_0x2bde4b){var _0x5116be=_0x2bde4b[_0xb869('0x27')]({'plain':!![]});return _0x5116be[_0xb869('0x62')];});return db[_0xb869('0x2d')][_0xb869('0x4c')]({'where':{'id':_0x56ad4f['params']['id']}})[_0xb869('0x25')](function(_0x5cd76b){return db[_0xb869('0x67')][_0xb869('0x68')](function(_0x3014f7){return _0x5cd76b['addTeams'](_0x41c3f6,{'transaction':_0x3014f7})[_0xb869('0x25')](function(){return BPromise[_0xb869('0x69')](_0x1cac40,function(_0x4da1e4){return db['UserOpenchannelQueue'][_0xb869('0x6a')]({'where':{'UserId':_0x4da1e4['id'],'OpenchannelQueueId':_0x56ad4f[_0xb869('0x44')]['id']},'transaction':_0x3014f7});});})['then'](function(){_0x1cac40['forEach'](function(_0x33f442){socket['emit'](_0xb869('0x6b'),{'UserId':_0x33f442['id'],'OpenchannelQueueId':_0x5cd76b['id']});});});});});}})[_0xb869('0x25')](respondWithStatusCode(_0x190c93,null))[_0xb869('0x42')](handleError(_0x190c93,null));};exports['removeTeams']=function(_0x860967,_0x3abbcb,_0x411b9a){return db['Team'][_0xb869('0x41')]({'where':{'id':_0x860967[_0xb869('0x30')]['ids']},'attributes':['id'],'include':[{'model':db[_0xb869('0x61')],'as':_0xb869('0x62'),'attributes':['id'],'raw':!![]}]})[_0xb869('0x25')](handleEntityNotFound(_0x3abbcb,null))[_0xb869('0x25')](function(_0x143820){var _0x35bf14=_['map'](_0x143820,'id');var _0x2b5398=[];var _0x33ec08=[];var _0x237db9=squel[_0xb869('0x6c')]();_0x237db9[_0xb869('0x6d')](_0xb869('0x6e'))['from'](_0xb869('0x6f'),'tq')['join']('user_has_teams','ut',_0xb869('0x70'))[_0xb869('0x39')]('OpenchannelQueueId\x20=\x20?',_0x860967[_0xb869('0x44')]['id']);for(var _0x554168=0x0;_0x554168<_0x143820[_0xb869('0x35')];_0x554168+=0x1){let _0x4d27d0=_0x143820[_0x554168];for(var _0xf31616=0x0;_0xf31616<_0x4d27d0[_0xb869('0x62')][_0xb869('0x35')];_0xf31616+=0x1){let _0x44e960=_0x4d27d0['Agents'][_0xf31616];var _0x2f47c4=_0x237db9[_0xb869('0x71')]();_0x2f47c4[_0xb869('0x39')]('ut.UserId\x20=\x20?',_0x44e960['id']);_0x33ec08[_0xb869('0x72')](db['sequelize'][_0xb869('0x30')](_0x2f47c4['toString'](),{'type':db[_0xb869('0x67')][_0xb869('0x73')][_0xb869('0x74')]})[_0xb869('0x25')](function(_0x5231c7){if(_0x5231c7[_0xb869('0x35')]===0x1){return _0x44e960['id'];}else{var _0x38c9c2=_[_0xb869('0x75')](_[_0xb869('0x2c')](_0x5231c7,'TeamId'),function(_0xfe3690){return _[_0xb869('0x76')](_0x35bf14,_0xfe3690);});if(_0x38c9c2){return _0x44e960['id'];}}}));}}return BPromise['all'](_0x33ec08)['then'](function(_0x5cb2ce){_0x2b5398=_(_0x2b5398)['union'](_0x5cb2ce)[_0xb869('0x77')]()[_0xb869('0x78')]();return db[_0xb869('0x2d')][_0xb869('0x4c')]({'where':{'id':_0x860967[_0xb869('0x44')]['id']}})[_0xb869('0x25')](function(_0x3f1f9a){return db[_0xb869('0x67')][_0xb869('0x68')](function(_0x31dedc){return _0x3f1f9a['removeTeams'](_0x860967[_0xb869('0x30')][_0xb869('0x79')],{'transaction':_0x31dedc})['then'](function(){if(!_[_0xb869('0x7a')](_0x2b5398)){return _0x3f1f9a[_0xb869('0x7b')](_0x2b5398,{'transaction':_0x31dedc});}})[_0xb869('0x25')](function(){_0x2b5398[_0xb869('0x7c')](function(_0x56c1a8){socket[_0xb869('0x7d')](_0xb869('0x7e'),{'UserId':_0x56c1a8,'OpenchannelQueueId':_0x3f1f9a['id']});});});});});});})[_0xb869('0x25')](respondWithStatusCode(_0x3abbcb,null))['catch'](handleError(_0x3abbcb,null));};exports[_0xb869('0x7f')]=function(_0x2bf1bf,_0x54a9fd,_0x2d475d){return db['OpenchannelQueue'][_0xb869('0x4c')]({'where':{'id':_0x2bf1bf[_0xb869('0x44')]['id']}})[_0xb869('0x25')](handleEntityNotFound(_0x54a9fd,null))[_0xb869('0x25')](function(_0x232da0){if(_0x232da0){return _0x232da0['addAgents'](_0x2bf1bf[_0xb869('0x51')][_0xb869('0x79')],_[_0xb869('0x80')](_0x2bf1bf['body'],['ids','id'])||{})[_0xb869('0x81')](function(_0x3667ed){for(var _0x137f87=0x0;_0x137f87<_0x2bf1bf['body'][_0xb869('0x79')][_0xb869('0x35')];_0x137f87+=0x1){socket[_0xb869('0x7d')](_0xb869('0x6b'),{'UserId':Number(_0x2bf1bf[_0xb869('0x51')]['ids'][_0x137f87]),'OpenchannelQueueId':Number(_0x2bf1bf[_0xb869('0x44')]['id'])});}return _0x3667ed;});}})['then'](respondWithResult(_0x54a9fd,null))[_0xb869('0x42')](handleError(_0x54a9fd,null));};exports[_0xb869('0x7b')]=function(_0x51087d,_0x26768c,_0x15d3d3){return db[_0xb869('0x2d')]['find']({'where':{'id':_0x51087d[_0xb869('0x44')]['id']}})['then'](handleEntityNotFound(_0x26768c,null))[_0xb869('0x25')](function(_0x478015){if(_0x478015){return _0x478015[_0xb869('0x7b')](_0x51087d[_0xb869('0x30')][_0xb869('0x79')])['then'](function(){if(_[_0xb869('0x82')](_0x51087d[_0xb869('0x30')]['ids'])){for(var _0x9c71a1=0x0;_0x9c71a1<_0x51087d[_0xb869('0x30')]['ids']['length'];_0x9c71a1+=0x1){socket[_0xb869('0x7d')](_0xb869('0x7e'),{'UserId':Number(_0x51087d[_0xb869('0x30')][_0xb869('0x79')][_0x9c71a1]),'OpenchannelQueueId':Number(_0x51087d[_0xb869('0x44')]['id'])});}}else{socket['emit'](_0xb869('0x7e'),{'UserId':Number(_0x51087d['query'][_0xb869('0x79')]),'OpenchannelQueueId':Number(_0x51087d[_0xb869('0x44')]['id'])});}});}})['then'](respondWithStatusCode(_0x26768c,null))[_0xb869('0x42')](handleError(_0x26768c,null));};exports[_0xb869('0x83')]=function(_0x51875e,_0x137a0b,_0x56d59d){var _0x507792={};var _0x576252={};var _0x14d272;var _0x151342;return db[_0xb869('0x2d')]['findOne']({'where':{'id':_0x51875e[_0xb869('0x44')]['id']}})['then'](handleEntityNotFound(_0x137a0b,null))[_0xb869('0x25')](function(_0x51ac50){if(_0x51ac50){_0x14d272=_0x51ac50;_0x576252[_0xb869('0x32')]=_[_0xb869('0x45')](db[_0xb869('0x61')][_0xb869('0x46')]);_0x576252[_0xb869('0x30')]=_[_0xb869('0x45')](_0x51875e[_0xb869('0x30')]);_0x576252[_0xb869('0x3a')]=_[_0xb869('0x31')](_0x576252[_0xb869('0x32')],_0x576252[_0xb869('0x30')]);_0x507792[_0xb869('0x33')]=_['intersection'](_0x576252[_0xb869('0x32')],qs[_0xb869('0x34')](_0x51875e['query'][_0xb869('0x34')]));_0x507792[_0xb869('0x33')]=_0x507792[_0xb869('0x33')][_0xb869('0x35')]?_0x507792[_0xb869('0x33')]:_0x576252[_0xb869('0x32')];_0x507792[_0xb869('0x55')]=qs[_0xb869('0x38')](_0x51875e[_0xb869('0x30')][_0xb869('0x38')]);_0x507792[_0xb869('0x39')]=qs[_0xb869('0x3a')](_[_0xb869('0x60')](_0x51875e['query'],_0x576252[_0xb869('0x3a')]));if(_0x51875e[_0xb869('0x30')][_0xb869('0x3b')]){_0x507792['where']=_[_0xb869('0x3c')](_0x507792[_0xb869('0x39')],{'$or':_['map'](_0x507792[_0xb869('0x33')],function(_0x2750bd){var _0x52e9ac={};_0x52e9ac[_0x2750bd]={'$like':'%'+_0x51875e[_0xb869('0x30')][_0xb869('0x3b')]+'%'};return _0x52e9ac;})});}_0x507792=_['merge']({},_0x507792,_0x51875e[_0xb869('0x47')]);return _0x14d272[_0xb869('0x83')](_0x507792);}})[_0xb869('0x25')](function(_0x160a60){if(_0x160a60){_0x151342=_0x160a60[_0xb869('0x35')];if(!_0x51875e[_0xb869('0x30')][_0xb869('0x36')]('nolimit')){_0x507792[_0xb869('0x1d')]=qs[_0xb869('0x1d')](_0x51875e[_0xb869('0x30')][_0xb869('0x1d')]);_0x507792['offset']=qs[_0xb869('0x1c')](_0x51875e['query'][_0xb869('0x1c')]);}return _0x14d272[_0xb869('0x83')](_0x507792);}})[_0xb869('0x25')](function(_0x5a53e5){if(_0x5a53e5){return _0x5a53e5?{'count':_0x151342,'rows':_0x5a53e5}:null;}})['then'](respondWithResult(_0x137a0b,null))['catch'](handleError(_0x137a0b,null));};
\ No newline at end of file
+var _0xf899=['../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','status','offset','undefined','limit','count','set','json','reject','save','update','then','destroy','get','OpenchannelQueues','end','error','stack','name','send','index','OpenchannelQueue','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','keys','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','autoAssociation','UserProfileResource','describe','getMembers','findOne','OpenchannelQueueId','UserOpenchannelQueue','User','UserId','agent','openchannelPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','addTeams','ids','voicePause','interface','Agents','transaction','emit','userOpenchannelQueue:save','removeTeams','Team','field','tq.TeamId','from','join','OpenchannelQueueId\x20=\x20?','ut.UserId\x20=\x20?','sequelize','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','value','isEmpty','removeAgents','forEach','userOpenchannelQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x1ed542,_0x9fa68b){var _0x4a39d2=function(_0x3e435f){while(--_0x3e435f){_0x1ed542['push'](_0x1ed542['shift']());}};_0x4a39d2(++_0x9fa68b);}(_0xf899,0x102));var _0x9f89=function(_0x349082,_0x428361){_0x349082=_0x349082-0x0;var _0x440bbc=_0xf899[_0x349082];return _0x440bbc;};'use strict';var emlformat=require(_0x9f89('0x0'));var rimraf=require(_0x9f89('0x1'));var zipdir=require(_0x9f89('0x2'));var jsonpatch=require(_0x9f89('0x3'));var rp=require('request-promise');var moment=require(_0x9f89('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9f89('0x5'));var util=require(_0x9f89('0x6'));var path=require('path');var sox=require(_0x9f89('0x7'));var csv=require(_0x9f89('0x8'));var ejs=require(_0x9f89('0x9'));var fs=require('fs');var fs_extra=require(_0x9f89('0xa'));var _=require(_0x9f89('0xb'));var squel=require(_0x9f89('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9f89('0xd'));var toCsv=require(_0x9f89('0x8'));var querystring=require(_0x9f89('0xe'));var Papa=require(_0x9f89('0xf'));var Redis=require(_0x9f89('0x10'));var authService=require(_0x9f89('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x9f89('0x12'));var hardwareService=require(_0x9f89('0x13'));var logger=require(_0x9f89('0x14'))(_0x9f89('0x15'));var utils=require('../../config/utils');var config=require(_0x9f89('0x16'));var licenseUtil=require(_0x9f89('0x17'));var db=require(_0x9f89('0x18'))['db'];config[_0x9f89('0x19')]=_[_0x9f89('0x1a')](config['redis'],{'host':_0x9f89('0x1b'),'port':0x18eb});var socket=require(_0x9f89('0x1c'))(new Redis(config[_0x9f89('0x19')]));require(_0x9f89('0x1d'))[_0x9f89('0x1e')](socket);function respondWithStatusCode(_0x45266b,_0x2ac164){_0x2ac164=_0x2ac164||0xcc;return function(_0x27e7e4){if(_0x27e7e4){return _0x45266b['sendStatus'](_0x2ac164);}return _0x45266b[_0x9f89('0x1f')](_0x2ac164)['end']();};}function respondWithResult(_0x484b24,_0x1250a1){_0x1250a1=_0x1250a1||0xc8;return function(_0x2f163d){if(_0x2f163d){return _0x484b24['status'](_0x1250a1)['json'](_0x2f163d);}};}function respondWithFilteredResult(_0x462ffa,_0x39f6c1){return function(_0x5efd82){if(_0x5efd82){var _0x5efce2=typeof _0x39f6c1[_0x9f89('0x20')]===_0x9f89('0x21')&&typeof _0x39f6c1[_0x9f89('0x22')]===_0x9f89('0x21');var _0x41ba0a=_0x5efd82[_0x9f89('0x23')];var _0x37430b=_0x5efce2?0x0:_0x39f6c1[_0x9f89('0x20')];var _0xdf29dd=_0x5efce2?_0x5efd82['count']:_0x39f6c1[_0x9f89('0x20')]+_0x39f6c1[_0x9f89('0x22')];var _0x2b164d;if(_0xdf29dd>=_0x41ba0a){_0xdf29dd=_0x41ba0a;_0x2b164d=0xc8;}else{_0x2b164d=0xce;}_0x462ffa[_0x9f89('0x1f')](_0x2b164d);return _0x462ffa[_0x9f89('0x24')]('Content-Range',_0x37430b+'-'+_0xdf29dd+'/'+_0x41ba0a)[_0x9f89('0x25')](_0x5efd82);}return null;};}function patchUpdates(_0x5a55ef){return function(_0x40d2f5){try{jsonpatch['apply'](_0x40d2f5,_0x5a55ef,!![]);}catch(_0x3d037e){return BPromise[_0x9f89('0x26')](_0x3d037e);}return _0x40d2f5[_0x9f89('0x27')]();};}function saveUpdates(_0x3a6049,_0x2c6e44){return function(_0x9cec9a){if(_0x9cec9a){return _0x9cec9a[_0x9f89('0x28')](_0x3a6049)[_0x9f89('0x29')](function(_0x4610fa){return _0x4610fa;});}return null;};}function removeEntity(_0x4a652d,_0x5d889d){return function(_0x3cdd6e){if(_0x3cdd6e){return _0x3cdd6e[_0x9f89('0x2a')]()[_0x9f89('0x29')](function(){var _0x26407f=_0x3cdd6e[_0x9f89('0x2b')]({'plain':!![]});var _0x359201=_0x9f89('0x2c');return db['UserProfileResource']['destroy']({'where':{'type':_0x359201,'resourceId':_0x26407f['id']}})['then'](function(){return _0x3cdd6e;});})[_0x9f89('0x29')](function(){_0x4a652d[_0x9f89('0x1f')](0xcc)[_0x9f89('0x2d')]();});}};}function handleEntityNotFound(_0xc4e7fd,_0x75d443){return function(_0x492f6d){if(!_0x492f6d){_0xc4e7fd['sendStatus'](0x194);}return _0x492f6d;};}function handleError(_0x2e0219,_0x1878d4){_0x1878d4=_0x1878d4||0x1f4;return function(_0x4860c5){logger[_0x9f89('0x2e')](_0x4860c5[_0x9f89('0x2f')]);if(_0x4860c5[_0x9f89('0x30')]){delete _0x4860c5[_0x9f89('0x30')];}_0x2e0219[_0x9f89('0x1f')](_0x1878d4)[_0x9f89('0x31')](_0x4860c5);};}exports[_0x9f89('0x32')]=function(_0x2de5a4,_0x497d47){var _0x2e25f2={},_0x53d4d9={},_0x20b36a={'count':0x0,'rows':[]};var _0x1c6dda=_['map'](db[_0x9f89('0x33')][_0x9f89('0x34')],function(_0x25e7a7){return{'name':_0x25e7a7[_0x9f89('0x35')],'type':_0x25e7a7[_0x9f89('0x36')][_0x9f89('0x37')]};});_0x53d4d9[_0x9f89('0x38')]=_[_0x9f89('0x39')](_0x1c6dda,_0x9f89('0x30'));_0x53d4d9[_0x9f89('0x3a')]=_['keys'](_0x2de5a4[_0x9f89('0x3a')]);_0x53d4d9[_0x9f89('0x3b')]=_[_0x9f89('0x3c')](_0x53d4d9['model'],_0x53d4d9[_0x9f89('0x3a')]);_0x2e25f2['attributes']=_[_0x9f89('0x3c')](_0x53d4d9[_0x9f89('0x38')],qs[_0x9f89('0x3d')](_0x2de5a4[_0x9f89('0x3a')][_0x9f89('0x3d')]));_0x2e25f2[_0x9f89('0x3e')]=_0x2e25f2['attributes'][_0x9f89('0x3f')]?_0x2e25f2[_0x9f89('0x3e')]:_0x53d4d9[_0x9f89('0x38')];if(!_0x2de5a4[_0x9f89('0x3a')][_0x9f89('0x40')](_0x9f89('0x41'))){_0x2e25f2[_0x9f89('0x22')]=qs[_0x9f89('0x22')](_0x2de5a4[_0x9f89('0x3a')][_0x9f89('0x22')]);_0x2e25f2[_0x9f89('0x20')]=qs[_0x9f89('0x20')](_0x2de5a4['query'][_0x9f89('0x20')]);}_0x2e25f2[_0x9f89('0x42')]=qs[_0x9f89('0x43')](_0x2de5a4['query'][_0x9f89('0x43')]);_0x2e25f2['where']=qs['filters'](_[_0x9f89('0x44')](_0x2de5a4[_0x9f89('0x3a')],_0x53d4d9[_0x9f89('0x3b')]),_0x1c6dda);if(_0x2de5a4[_0x9f89('0x3a')][_0x9f89('0x45')]){_0x2e25f2[_0x9f89('0x46')]=_['merge'](_0x2e25f2['where'],{'$or':_[_0x9f89('0x39')](_0x1c6dda,function(_0x4395f2){if(_0x4395f2[_0x9f89('0x36')]!==_0x9f89('0x47')){var _0x45f80c={};_0x45f80c[_0x4395f2[_0x9f89('0x30')]]={'$like':'%'+_0x2de5a4['query']['filter']+'%'};return _0x45f80c;}})});}_0x2e25f2=_[_0x9f89('0x48')]({},_0x2e25f2,_0x2de5a4[_0x9f89('0x49')]);var _0x2afc24={'where':_0x2e25f2['where']};return db[_0x9f89('0x33')]['count'](_0x2afc24)[_0x9f89('0x29')](function(_0x3bdfe4){_0x20b36a[_0x9f89('0x23')]=_0x3bdfe4;if(_0x2de5a4[_0x9f89('0x3a')][_0x9f89('0x4a')]){_0x2e25f2[_0x9f89('0x4b')]=[{'all':!![]}];}return db[_0x9f89('0x33')][_0x9f89('0x4c')](_0x2e25f2);})[_0x9f89('0x29')](function(_0x784731){_0x20b36a[_0x9f89('0x4d')]=_0x784731;return _0x20b36a;})[_0x9f89('0x29')](respondWithFilteredResult(_0x497d47,_0x2e25f2))[_0x9f89('0x4e')](handleError(_0x497d47,null));};exports['show']=function(_0x482ac6,_0x187e40){var _0x180ecc={'raw':!![],'where':{'id':_0x482ac6[_0x9f89('0x4f')]['id']}},_0xd94b81={};_0xd94b81[_0x9f89('0x38')]=_['keys'](db['OpenchannelQueue'][_0x9f89('0x34')]);_0xd94b81[_0x9f89('0x3a')]=_[_0x9f89('0x50')](_0x482ac6['query']);_0xd94b81[_0x9f89('0x3b')]=_['intersection'](_0xd94b81[_0x9f89('0x38')],_0xd94b81['query']);_0x180ecc[_0x9f89('0x3e')]=_[_0x9f89('0x3c')](_0xd94b81[_0x9f89('0x38')],qs[_0x9f89('0x3d')](_0x482ac6['query']['fields']));_0x180ecc['attributes']=_0x180ecc['attributes'][_0x9f89('0x3f')]?_0x180ecc[_0x9f89('0x3e')]:_0xd94b81[_0x9f89('0x38')];if(_0x482ac6[_0x9f89('0x3a')][_0x9f89('0x4a')]){_0x180ecc[_0x9f89('0x4b')]=[{'all':!![]}];}_0x180ecc=_['merge']({},_0x180ecc,_0x482ac6['options']);return db[_0x9f89('0x33')]['find'](_0x180ecc)[_0x9f89('0x29')](handleEntityNotFound(_0x187e40,null))['then'](respondWithResult(_0x187e40,null))[_0x9f89('0x4e')](handleError(_0x187e40,null));};exports[_0x9f89('0x51')]=function(_0x1891df,_0x50aecb){return db[_0x9f89('0x33')][_0x9f89('0x51')](_0x1891df[_0x9f89('0x52')],{})[_0x9f89('0x29')](function(_0x5bfe12){var _0x15711c=_0x1891df[_0x9f89('0x53')][_0x9f89('0x2b')]({'plain':!![]});if(!_0x15711c)throw new Error(_0x9f89('0x54'));if(_0x15711c[_0x9f89('0x55')]===_0x9f89('0x53')){var _0x5ef1a5=_0x5bfe12['get']({'plain':!![]});var _0xc6641=_0x9f89('0x2c');return db['UserProfileSection'][_0x9f89('0x56')]({'where':{'name':_0xc6641,'userProfileId':_0x15711c[_0x9f89('0x57')]},'raw':!![]})[_0x9f89('0x29')](function(_0x31150c){if(_0x31150c&&_0x31150c[_0x9f89('0x58')]===0x0){return db[_0x9f89('0x59')][_0x9f89('0x51')]({'name':_0x5ef1a5[_0x9f89('0x30')],'resourceId':_0x5ef1a5['id'],'type':_0x31150c['name'],'sectionId':_0x31150c['id']},{})[_0x9f89('0x29')](function(){return _0x5bfe12;});}else{return _0x5bfe12;}})['catch'](function(_0x57a816){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x57a816);throw _0x57a816;});}return _0x5bfe12;})[_0x9f89('0x29')](respondWithResult(_0x50aecb,0xc9))[_0x9f89('0x4e')](handleError(_0x50aecb,null));};exports[_0x9f89('0x28')]=function(_0x2c4212,_0x2023c8){if(_0x2c4212[_0x9f89('0x52')]['id']){delete _0x2c4212[_0x9f89('0x52')]['id'];}return db[_0x9f89('0x33')][_0x9f89('0x56')]({'where':{'id':_0x2c4212[_0x9f89('0x4f')]['id']}})[_0x9f89('0x29')](handleEntityNotFound(_0x2023c8,null))[_0x9f89('0x29')](saveUpdates(_0x2c4212[_0x9f89('0x52')],null))[_0x9f89('0x29')](respondWithResult(_0x2023c8,null))['catch'](handleError(_0x2023c8,null));};exports['destroy']=function(_0x1c447a,_0x4e5640){return db[_0x9f89('0x33')]['find']({'where':{'id':_0x1c447a[_0x9f89('0x4f')]['id']}})['then'](handleEntityNotFound(_0x4e5640,null))[_0x9f89('0x29')](removeEntity(_0x4e5640,null))[_0x9f89('0x4e')](handleError(_0x4e5640,null));};exports[_0x9f89('0x5a')]=function(_0x5b3e96,_0x145cb4){return db[_0x9f89('0x33')][_0x9f89('0x5a')]()[_0x9f89('0x29')](respondWithResult(_0x145cb4,null))[_0x9f89('0x4e')](handleError(_0x145cb4,null));};exports[_0x9f89('0x5b')]=function(_0x499445,_0x31cb2e,_0x2daf6c){var _0x5f130d={'raw':!![],'where':{}},_0x3c57b3={},_0x46f184;return db[_0x9f89('0x33')][_0x9f89('0x5c')]({'where':{'id':_0x499445[_0x9f89('0x4f')]['id']}})[_0x9f89('0x29')](handleEntityNotFound(_0x31cb2e,null))[_0x9f89('0x29')](function(_0x277cf6){if(_0x277cf6){_0x46f184=_0x277cf6['get']({'plain':!![]});_0x3c57b3['model']=_[_0x9f89('0x50')](db['UserOpenchannelQueue'][_0x9f89('0x34')]);_0x3c57b3[_0x9f89('0x3a')]=_[_0x9f89('0x50')](_0x499445[_0x9f89('0x3a')]);_0x3c57b3['filters']=_[_0x9f89('0x3c')](_0x3c57b3[_0x9f89('0x38')],_0x3c57b3[_0x9f89('0x3a')]);_0x5f130d[_0x9f89('0x3e')]=_['intersection'](_0x3c57b3['model'],qs[_0x9f89('0x3d')](_0x499445[_0x9f89('0x3a')][_0x9f89('0x3d')]));_0x5f130d['attributes']=_0x5f130d[_0x9f89('0x3e')][_0x9f89('0x3f')]?_0x5f130d[_0x9f89('0x3e')]:_0x3c57b3[_0x9f89('0x38')];if(!_0x499445[_0x9f89('0x3a')][_0x9f89('0x40')](_0x9f89('0x41'))){_0x5f130d[_0x9f89('0x22')]=qs[_0x9f89('0x22')](_0x499445[_0x9f89('0x3a')][_0x9f89('0x22')]);_0x5f130d['offset']=qs['offset'](_0x499445[_0x9f89('0x3a')][_0x9f89('0x20')]);}_0x5f130d[_0x9f89('0x42')]=qs['sort'](_0x499445[_0x9f89('0x3a')][_0x9f89('0x43')]);_0x5f130d['where']=qs[_0x9f89('0x3b')](_[_0x9f89('0x44')](_0x499445['query'],_0x3c57b3['filters']));_0x5f130d['where'][_0x9f89('0x5d')]=_0x277cf6['id'];if(_0x499445[_0x9f89('0x3a')][_0x9f89('0x45')]){_0x5f130d['where']=_[_0x9f89('0x48')](_0x5f130d[_0x9f89('0x46')],{'$or':_[_0x9f89('0x39')](_0x5f130d['attributes'],function(_0x286b43){var _0x5066cf={};_0x5066cf[_0x286b43]={'$like':'%'+_0x499445[_0x9f89('0x3a')][_0x9f89('0x45')]+'%'};return _0x5066cf;})});}_0x5f130d=_[_0x9f89('0x48')]({},_0x5f130d,_0x499445[_0x9f89('0x49')]);return db[_0x9f89('0x5e')][_0x9f89('0x4c')](_0x5f130d);}})[_0x9f89('0x29')](function(_0x3bfee9){if(_0x3bfee9){return db[_0x9f89('0x5f')]['findAndCountAll']({'where':{'id':_['map'](_0x3bfee9,_0x9f89('0x60')),'role':_0x9f89('0x61')},'attributes':['id',_0x9f89('0x30'),_0x9f89('0x62'),_0x9f89('0x63'),_0x9f89('0x64')]});}})[_0x9f89('0x29')](function(_0x3c629a){if(_0x3c629a){return{'count':_0x3c629a[_0x9f89('0x23')],'rows':_['map'](_0x3c629a[_0x9f89('0x4d')],function(_0x4231ce){return{'membername':_0x4231ce['name'],'UserId':_0x4231ce['id'],'queue_name':_0x46f184[_0x9f89('0x30')],'OpenchannelQueueId':_0x46f184['id'],'interface':util[_0x9f89('0x65')](_0x9f89('0x66'),_0x9f89('0x67'),_0x4231ce[_0x9f89('0x30')]),'penalty':0x0,'paused':_0x4231ce['openchannelPause'],'createdAt':_0x4231ce[_0x9f89('0x64')],'updatedAt':_0x4231ce[_0x9f89('0x63')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x9f89('0x29')](respondWithFilteredResult(_0x31cb2e,_0x5f130d))[_0x9f89('0x4e')](handleError(_0x31cb2e,null));};exports['getTeams']=function(_0x530d80,_0x21bb7a,_0x14985a){var _0x2216b2={};var _0x2b58e8={};var _0x21e0af;var _0x4bc4b6;return db[_0x9f89('0x33')][_0x9f89('0x5c')]({'where':{'id':_0x530d80[_0x9f89('0x4f')]['id']}})[_0x9f89('0x29')](handleEntityNotFound(_0x21bb7a,null))[_0x9f89('0x29')](function(_0xa9a1cd){if(_0xa9a1cd){_0x21e0af=_0xa9a1cd;_0x2b58e8['model']=_['keys'](db['Team'][_0x9f89('0x34')]);_0x2b58e8['query']=_[_0x9f89('0x50')](_0x530d80[_0x9f89('0x3a')]);_0x2b58e8[_0x9f89('0x3b')]=_['intersection'](_0x2b58e8[_0x9f89('0x38')],_0x2b58e8['query']);_0x2216b2['attributes']=_[_0x9f89('0x3c')](_0x2b58e8['model'],qs[_0x9f89('0x3d')](_0x530d80[_0x9f89('0x3a')][_0x9f89('0x3d')]));_0x2216b2[_0x9f89('0x3e')]=_0x2216b2[_0x9f89('0x3e')][_0x9f89('0x3f')]?_0x2216b2[_0x9f89('0x3e')]:_0x2b58e8[_0x9f89('0x38')];_0x2216b2[_0x9f89('0x42')]=qs['sort'](_0x530d80['query']['sort']);_0x2216b2['where']=qs[_0x9f89('0x3b')](_['pick'](_0x530d80[_0x9f89('0x3a')],_0x2b58e8[_0x9f89('0x3b')]));if(_0x530d80['query'][_0x9f89('0x45')]){_0x2216b2[_0x9f89('0x46')]=_[_0x9f89('0x48')](_0x2216b2[_0x9f89('0x46')],{'$or':_[_0x9f89('0x39')](_0x2216b2[_0x9f89('0x3e')],function(_0x47d709){var _0x3fdc87={};_0x3fdc87[_0x47d709]={'$like':'%'+_0x530d80[_0x9f89('0x3a')][_0x9f89('0x45')]+'%'};return _0x3fdc87;})});}_0x2216b2=_['merge']({},_0x2216b2,_0x530d80[_0x9f89('0x49')]);return _0x21e0af[_0x9f89('0x68')](_0x2216b2);}})[_0x9f89('0x29')](function(_0x58b77d){if(_0x58b77d){_0x4bc4b6=_0x58b77d[_0x9f89('0x3f')];if(!_0x530d80[_0x9f89('0x3a')]['hasOwnProperty'](_0x9f89('0x41'))){_0x2216b2[_0x9f89('0x22')]=qs[_0x9f89('0x22')](_0x530d80[_0x9f89('0x3a')][_0x9f89('0x22')]);_0x2216b2[_0x9f89('0x20')]=qs[_0x9f89('0x20')](_0x530d80['query'][_0x9f89('0x20')]);}return _0x21e0af[_0x9f89('0x68')](_0x2216b2);}})[_0x9f89('0x29')](function(_0x45ffb8){if(_0x45ffb8){return _0x45ffb8?{'count':_0x4bc4b6,'rows':_0x45ffb8}:null;}})[_0x9f89('0x29')](respondWithResult(_0x21bb7a,null))['catch'](handleError(_0x21bb7a,null));};exports[_0x9f89('0x69')]=function(_0x13f16f,_0x574dde,_0x545c33){var _0x2fff2b=_0x13f16f['body'][_0x9f89('0x6a')];return db['Team']['findAll']({'where':{'id':_0x2fff2b},'attributes':['id'],'include':[{'model':db[_0x9f89('0x5f')],'as':'Agents','attributes':['id',_0x9f89('0x30'),'online',_0x9f89('0x6b'),_0x9f89('0x6c')],'raw':!![]}]})[_0x9f89('0x29')](function(_0x47e8fc){if(_0x47e8fc){var _0x2e974d=_['flatMap'](_0x47e8fc,function(_0x43bda0){var _0x336fb7=_0x43bda0[_0x9f89('0x2b')]({'plain':!![]});return _0x336fb7[_0x9f89('0x6d')];});return db[_0x9f89('0x33')][_0x9f89('0x56')]({'where':{'id':_0x13f16f[_0x9f89('0x4f')]['id']}})['then'](function(_0x5ce0f1){return db['sequelize'][_0x9f89('0x6e')](function(_0x4ca9b7){return _0x5ce0f1[_0x9f89('0x69')](_0x2fff2b,{'transaction':_0x4ca9b7})[_0x9f89('0x29')](function(){return BPromise['each'](_0x2e974d,function(_0x4cc5fd){return db[_0x9f89('0x5e')]['findOrCreate']({'where':{'UserId':_0x4cc5fd['id'],'OpenchannelQueueId':_0x13f16f['params']['id']},'transaction':_0x4ca9b7});});})['then'](function(){_0x2e974d['forEach'](function(_0x36af8a){socket[_0x9f89('0x6f')](_0x9f89('0x70'),{'UserId':_0x36af8a['id'],'OpenchannelQueueId':_0x5ce0f1['id']});});});});});}})[_0x9f89('0x29')](respondWithStatusCode(_0x574dde,null))['catch'](handleError(_0x574dde,null));};exports[_0x9f89('0x71')]=function(_0x15a586,_0x507fc3,_0x51b584){return db[_0x9f89('0x72')][_0x9f89('0x4c')]({'where':{'id':_0x15a586['query'][_0x9f89('0x6a')]},'attributes':['id'],'include':[{'model':db[_0x9f89('0x5f')],'as':_0x9f89('0x6d'),'attributes':['id'],'raw':!![]}]})[_0x9f89('0x29')](handleEntityNotFound(_0x507fc3,null))[_0x9f89('0x29')](function(_0x18e44b){var _0x311dc5=_[_0x9f89('0x39')](_0x18e44b,'id');var _0x3e8c00=[];var _0x381860=[];var _0x230f65=squel['select']();_0x230f65[_0x9f89('0x73')](_0x9f89('0x74'))[_0x9f89('0x75')]('team_has_openchannel_queues','tq')[_0x9f89('0x76')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')[_0x9f89('0x46')](_0x9f89('0x77'),_0x15a586['params']['id']);for(var _0x4cc218=0x0;_0x4cc218<_0x18e44b[_0x9f89('0x3f')];_0x4cc218+=0x1){let _0x4e7cd2=_0x18e44b[_0x4cc218];for(var _0x13f272=0x0;_0x13f272<_0x4e7cd2[_0x9f89('0x6d')][_0x9f89('0x3f')];_0x13f272+=0x1){let _0x288f2f=_0x4e7cd2['Agents'][_0x13f272];var _0x3285ee=_0x230f65['clone']();_0x3285ee[_0x9f89('0x46')](_0x9f89('0x78'),_0x288f2f['id']);_0x381860['push'](db[_0x9f89('0x79')][_0x9f89('0x3a')](_0x3285ee[_0x9f89('0x7a')](),{'type':db[_0x9f89('0x79')][_0x9f89('0x7b')][_0x9f89('0x7c')]})[_0x9f89('0x29')](function(_0x4a04de){if(_0x4a04de[_0x9f89('0x3f')]===0x1){return _0x288f2f['id'];}else{var _0x265a69=_[_0x9f89('0x7d')](_['map'](_0x4a04de,_0x9f89('0x7e')),function(_0x2efa95){return _['includes'](_0x311dc5,_0x2efa95);});if(_0x265a69){return _0x288f2f['id'];}}}));}}return BPromise[_0x9f89('0x7f')](_0x381860)[_0x9f89('0x29')](function(_0x2ba595){_0x3e8c00=_(_0x3e8c00)[_0x9f89('0x80')](_0x2ba595)[_0x9f89('0x81')]()[_0x9f89('0x82')]();return db[_0x9f89('0x33')][_0x9f89('0x56')]({'where':{'id':_0x15a586[_0x9f89('0x4f')]['id']}})[_0x9f89('0x29')](function(_0x15bdd0){return db[_0x9f89('0x79')][_0x9f89('0x6e')](function(_0xb31dcd){return _0x15bdd0[_0x9f89('0x71')](_0x15a586[_0x9f89('0x3a')][_0x9f89('0x6a')],{'transaction':_0xb31dcd})[_0x9f89('0x29')](function(){if(!_[_0x9f89('0x83')](_0x3e8c00)){return _0x15bdd0[_0x9f89('0x84')](_0x3e8c00,{'transaction':_0xb31dcd});}})[_0x9f89('0x29')](function(){_0x3e8c00[_0x9f89('0x85')](function(_0x50aa0a){socket[_0x9f89('0x6f')](_0x9f89('0x86'),{'UserId':_0x50aa0a,'OpenchannelQueueId':_0x15bdd0['id']});});});});});});})[_0x9f89('0x29')](respondWithStatusCode(_0x507fc3,null))[_0x9f89('0x4e')](handleError(_0x507fc3,null));};exports[_0x9f89('0x87')]=function(_0x2b0c07,_0x28cf75,_0x4c08d9){return db[_0x9f89('0x33')][_0x9f89('0x56')]({'where':{'id':_0x2b0c07['params']['id']}})[_0x9f89('0x29')](handleEntityNotFound(_0x28cf75,null))[_0x9f89('0x29')](function(_0x426733){if(_0x426733){return _0x426733['addAgents'](_0x2b0c07[_0x9f89('0x52')][_0x9f89('0x6a')],_[_0x9f89('0x88')](_0x2b0c07[_0x9f89('0x52')],[_0x9f89('0x6a'),'id'])||{})[_0x9f89('0x89')](function(_0x4047e1){for(var _0x3868db=0x0;_0x3868db<_0x2b0c07[_0x9f89('0x52')][_0x9f89('0x6a')][_0x9f89('0x3f')];_0x3868db+=0x1){socket[_0x9f89('0x6f')](_0x9f89('0x70'),{'UserId':Number(_0x2b0c07[_0x9f89('0x52')]['ids'][_0x3868db]),'OpenchannelQueueId':Number(_0x2b0c07[_0x9f89('0x4f')]['id'])});}return _0x4047e1;});}})[_0x9f89('0x29')](respondWithResult(_0x28cf75,null))['catch'](handleError(_0x28cf75,null));};exports['removeAgents']=function(_0x5a67eb,_0x31b772,_0x1b1858){return db['OpenchannelQueue']['find']({'where':{'id':_0x5a67eb[_0x9f89('0x4f')]['id']}})[_0x9f89('0x29')](handleEntityNotFound(_0x31b772,null))[_0x9f89('0x29')](function(_0x29212c){if(_0x29212c){return _0x29212c['removeAgents'](_0x5a67eb[_0x9f89('0x3a')]['ids'])[_0x9f89('0x29')](function(){if(_[_0x9f89('0x8a')](_0x5a67eb[_0x9f89('0x3a')][_0x9f89('0x6a')])){for(var _0xc60240=0x0;_0xc60240<_0x5a67eb[_0x9f89('0x3a')]['ids'][_0x9f89('0x3f')];_0xc60240+=0x1){socket[_0x9f89('0x6f')](_0x9f89('0x86'),{'UserId':Number(_0x5a67eb['query'][_0x9f89('0x6a')][_0xc60240]),'OpenchannelQueueId':Number(_0x5a67eb[_0x9f89('0x4f')]['id'])});}}else{socket[_0x9f89('0x6f')](_0x9f89('0x86'),{'UserId':Number(_0x5a67eb[_0x9f89('0x3a')]['ids']),'OpenchannelQueueId':Number(_0x5a67eb[_0x9f89('0x4f')]['id'])});}});}})[_0x9f89('0x29')](respondWithStatusCode(_0x31b772,null))['catch'](handleError(_0x31b772,null));};exports[_0x9f89('0x8b')]=function(_0x576543,_0x2fceed,_0x2ad3b3){var _0x1a0347={};var _0x2cd86c={};var _0x4effa0;var _0x282525;return db[_0x9f89('0x33')][_0x9f89('0x5c')]({'where':{'id':_0x576543[_0x9f89('0x4f')]['id']}})[_0x9f89('0x29')](handleEntityNotFound(_0x2fceed,null))[_0x9f89('0x29')](function(_0x198f73){if(_0x198f73){_0x4effa0=_0x198f73;_0x2cd86c['model']=_[_0x9f89('0x50')](db[_0x9f89('0x5f')][_0x9f89('0x34')]);_0x2cd86c[_0x9f89('0x3a')]=_[_0x9f89('0x50')](_0x576543[_0x9f89('0x3a')]);_0x2cd86c[_0x9f89('0x3b')]=_[_0x9f89('0x3c')](_0x2cd86c[_0x9f89('0x38')],_0x2cd86c[_0x9f89('0x3a')]);_0x1a0347[_0x9f89('0x3e')]=_[_0x9f89('0x3c')](_0x2cd86c[_0x9f89('0x38')],qs[_0x9f89('0x3d')](_0x576543[_0x9f89('0x3a')][_0x9f89('0x3d')]));_0x1a0347[_0x9f89('0x3e')]=_0x1a0347['attributes']['length']?_0x1a0347['attributes']:_0x2cd86c[_0x9f89('0x38')];_0x1a0347[_0x9f89('0x42')]=qs[_0x9f89('0x43')](_0x576543['query']['sort']);_0x1a0347[_0x9f89('0x46')]=qs['filters'](_[_0x9f89('0x44')](_0x576543[_0x9f89('0x3a')],_0x2cd86c[_0x9f89('0x3b')]));if(_0x576543[_0x9f89('0x3a')][_0x9f89('0x45')]){_0x1a0347['where']=_[_0x9f89('0x48')](_0x1a0347[_0x9f89('0x46')],{'$or':_[_0x9f89('0x39')](_0x1a0347[_0x9f89('0x3e')],function(_0x44e4aa){var _0x5cf3bd={};_0x5cf3bd[_0x44e4aa]={'$like':'%'+_0x576543[_0x9f89('0x3a')][_0x9f89('0x45')]+'%'};return _0x5cf3bd;})});}_0x1a0347=_['merge']({},_0x1a0347,_0x576543[_0x9f89('0x49')]);return _0x4effa0['getAgents'](_0x1a0347);}})['then'](function(_0x5e8d55){if(_0x5e8d55){_0x282525=_0x5e8d55[_0x9f89('0x3f')];if(!_0x576543['query']['hasOwnProperty'](_0x9f89('0x41'))){_0x1a0347[_0x9f89('0x22')]=qs[_0x9f89('0x22')](_0x576543['query']['limit']);_0x1a0347[_0x9f89('0x20')]=qs[_0x9f89('0x20')](_0x576543[_0x9f89('0x3a')][_0x9f89('0x20')]);}return _0x4effa0['getAgents'](_0x1a0347);}})['then'](function(_0x4433a1){if(_0x4433a1){return _0x4433a1?{'count':_0x282525,'rows':_0x4433a1}:null;}})[_0x9f89('0x29')](respondWithResult(_0x2fceed,null))['catch'](handleError(_0x2fceed,null));};
\ No newline at end of file
index 12830b6..a5b0789 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa480=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa480,0xb3));var _0x0a48=function(_0x174ef5,_0x256e8e){_0x174ef5=_0x174ef5-0x0;var _0x1cc379=_0xa480[_0x174ef5];return _0x1cc379;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require(_0x0a48('0x0'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x0a48('0x1')](0x0);var events={'afterCreate':_0x0a48('0x2'),'afterUpdate':_0x0a48('0x3'),'afterDestroy':_0x0a48('0x4')};function emitEvent(_0x2f56bf){return function(_0x379f2b,_0x1fd52c,_0x557843){OpenchannelQueueEvents[_0x0a48('0x5')](_0x2f56bf+':'+_0x379f2b['id'],_0x379f2b);OpenchannelQueueEvents[_0x0a48('0x5')](_0x2f56bf,_0x379f2b);_0x557843(null);};}for(var e in events){if(events[_0x0a48('0x6')](e)){var event=events[e];OpenchannelQueue[_0x0a48('0x7')](e,emitEvent(event));}}module[_0x0a48('0x8')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x54bd=['hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelQueue','setMaxListeners','save','update','remove','emit'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x54bd,0x121));var _0xd54b=function(_0x159eb5,_0x3ff44a){_0x159eb5=_0x159eb5-0x0;var _0x4d485a=_0x54bd[_0x159eb5];return _0x4d485a;};'use strict';var EventEmitter=require(_0xd54b('0x0'));var OpenchannelQueue=require(_0xd54b('0x1'))['db'][_0xd54b('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0xd54b('0x3')](0x0);var events={'afterCreate':_0xd54b('0x4'),'afterUpdate':_0xd54b('0x5'),'afterDestroy':_0xd54b('0x6')};function emitEvent(_0x5e461f){return function(_0x5e2bee,_0x422c84,_0x10f201){OpenchannelQueueEvents[_0xd54b('0x7')](_0x5e461f+':'+_0x5e2bee['id'],_0x5e2bee);OpenchannelQueueEvents['emit'](_0x5e461f,_0x5e2bee);_0x10f201(null);};}for(var e in events){if(events[_0xd54b('0x8')](e)){var event=events[e];OpenchannelQueue[_0xd54b('0x9')](e,emitEvent(event));}}module[_0xd54b('0xa')]=OpenchannelQueueEvents;
\ No newline at end of file
index 1776859..321dd8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bf3=['./openchannelQueue.attributes','exports','define','OpenchannelQueue','openchannel_queues','lodash','util','api','moment','request-promise','path','../../config/environment'];(function(_0x52dff8,_0x924832){var _0x5f1c49=function(_0x59352a){while(--_0x59352a){_0x52dff8['push'](_0x52dff8['shift']());}};_0x5f1c49(++_0x924832);}(_0x1bf3,0x1cd));var _0x31bf=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x1bf3[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x31bf('0x0'));var util=require(_0x31bf('0x1'));var logger=require('../../config/logger')(_0x31bf('0x2'));var moment=require(_0x31bf('0x3'));var BPromise=require('bluebird');var rp=require(_0x31bf('0x4'));var fs=require('fs');var path=require(_0x31bf('0x5'));var rimraf=require('rimraf');var config=require(_0x31bf('0x6'));var attributes=require(_0x31bf('0x7'));module[_0x31bf('0x8')]=function(_0x4f1036,_0x4d2930){return _0x4f1036[_0x31bf('0x9')](_0x31bf('0xa'),attributes,{'tableName':_0x31bf('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa791=['openchannel_queues','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./openchannelQueue.attributes','define','OpenchannelQueue'];(function(_0x152462,_0x7bb60f){var _0x451b23=function(_0x59d162){while(--_0x59d162){_0x152462['push'](_0x152462['shift']());}};_0x451b23(++_0x7bb60f);}(_0xa791,0x177));var _0x1a79=function(_0x53f77a,_0x108c39){_0x53f77a=_0x53f77a-0x0;var _0x1ada9d=_0xa791[_0x53f77a];return _0x1ada9d;};'use strict';var _=require('lodash');var util=require(_0x1a79('0x0'));var logger=require('../../config/logger')(_0x1a79('0x1'));var moment=require(_0x1a79('0x2'));var BPromise=require(_0x1a79('0x3'));var rp=require(_0x1a79('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1a79('0x5'));var config=require(_0x1a79('0x6'));var attributes=require(_0x1a79('0x7'));module['exports']=function(_0xb59871,_0x2808da){return _0xb59871[_0x1a79('0x8')](_0x1a79('0x9'),attributes,{'tableName':_0x1a79('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ef3cb1e..41ec150 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c79=['ShowOpenchannelQueue','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','attributes','include','model','map'];(function(_0x55fa9d,_0x17ac7a){var _0x51468a=function(_0x3afcaa){while(--_0x3afcaa){_0x55fa9d['push'](_0x55fa9d['shift']());}};_0x51468a(++_0x17ac7a);}(_0x6c79,0x17e));var _0x96c7=function(_0x292423,_0x1759b7){_0x292423=_0x292423-0x0;var _0x2801cb=_0x6c79[_0x292423];return _0x2801cb;};'use strict';var _=require(_0x96c7('0x0'));var util=require(_0x96c7('0x1'));var moment=require(_0x96c7('0x2'));var BPromise=require('bluebird');var rs=require(_0x96c7('0x3'));var fs=require('fs');var Redis=require(_0x96c7('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x96c7('0x5'));var logger=require(_0x96c7('0x6'))('rpc');var config=require(_0x96c7('0x7'));var jayson=require(_0x96c7('0x8'));var client=jayson['client'][_0x96c7('0x9')]({'port':0x232a});config[_0x96c7('0xa')]=_[_0x96c7('0xb')](config[_0x96c7('0xa')],{'host':_0x96c7('0xc'),'port':0x18eb});var socket=require(_0x96c7('0xd'))(new Redis(config[_0x96c7('0xa')]));require(_0x96c7('0xe'))['register'](socket);function respondWithRpcPromise(_0xb38703,_0x125b03,_0x431a04){return new BPromise(function(_0x5da8ed,_0x11ea52){return client[_0x96c7('0xf')](_0xb38703,_0x431a04)[_0x96c7('0x10')](function(_0xe94250){logger[_0x96c7('0x11')](_0x96c7('0x12'),_0x125b03,_0x96c7('0x13'));logger[_0x96c7('0x14')](_0x96c7('0x15'),_0x125b03,_0x96c7('0x13'),JSON[_0x96c7('0x16')](_0xe94250));if(_0xe94250['error']){if(_0xe94250[_0x96c7('0x17')][_0x96c7('0x18')]===0x1f4){logger[_0x96c7('0x17')](_0x96c7('0x12'),_0x125b03,_0xe94250[_0x96c7('0x17')][_0x96c7('0x19')]);return _0x11ea52(_0xe94250[_0x96c7('0x17')][_0x96c7('0x19')]);}logger[_0x96c7('0x17')]('OpenchannelQueue,\x20%s,\x20%s',_0x125b03,_0xe94250['error'][_0x96c7('0x19')]);return _0x5da8ed(_0xe94250[_0x96c7('0x17')][_0x96c7('0x19')]);}else{logger[_0x96c7('0x11')](_0x96c7('0x12'),_0x125b03,_0x96c7('0x13'));_0x5da8ed(_0xe94250['result'][_0x96c7('0x19')]);}})['catch'](function(_0x119f6f){logger['error'](_0x96c7('0x12'),_0x125b03,_0x119f6f);_0x11ea52(_0x119f6f);});});}exports[_0x96c7('0x1a')]=function(_0x47b8de){var _0x5d2c9c=this;return new Promise(function(_0xe561f0,_0x2baec7){return db[_0x96c7('0x1b')][_0x96c7('0x1c')]({'raw':_0x47b8de[_0x96c7('0x1d')]?_0x47b8de['options'][_0x96c7('0x1e')]===undefined?!![]:![]:!![],'where':_0x47b8de[_0x96c7('0x1d')]?_0x47b8de[_0x96c7('0x1d')][_0x96c7('0x1f')]||null:null,'attributes':_0x47b8de['options']?_0x47b8de[_0x96c7('0x1d')][_0x96c7('0x20')]||null:null,'limit':_0x47b8de['options']?_0x47b8de[_0x96c7('0x1d')]['limit']||null:null,'include':_0x47b8de[_0x96c7('0x1d')]?_0x47b8de[_0x96c7('0x1d')][_0x96c7('0x21')]?_['map'](_0x47b8de[_0x96c7('0x1d')]['include'],function(_0x4cf898){return{'model':db[_0x4cf898[_0x96c7('0x22')]],'as':_0x4cf898['as'],'attributes':_0x4cf898[_0x96c7('0x20')],'include':_0x4cf898[_0x96c7('0x21')]?_[_0x96c7('0x23')](_0x4cf898[_0x96c7('0x21')],function(_0x809450){return{'model':db[_0x809450[_0x96c7('0x22')]],'as':_0x809450['as'],'attributes':_0x809450[_0x96c7('0x20')],'include':_0x809450['include']?_[_0x96c7('0x23')](_0x809450[_0x96c7('0x21')],function(_0x1102ab){return{'model':db[_0x1102ab['model']],'as':_0x1102ab['as'],'attributes':_0x1102ab[_0x96c7('0x20')]};}):[]};}):[]};}):[]:[]})[_0x96c7('0x10')](function(_0x3fc5ce){logger['info'](_0x96c7('0x1a'),_0x47b8de);logger[_0x96c7('0x14')]('GetOpenchannelQueue',_0x47b8de,JSON[_0x96c7('0x16')](_0x3fc5ce));_0xe561f0(_0x3fc5ce);})['catch'](function(_0x56de60){logger['error'](_0x96c7('0x1a'),_0x56de60[_0x96c7('0x19')],_0x47b8de);_0x2baec7(_0x5d2c9c[_0x96c7('0x17')](0x1f4,_0x56de60[_0x96c7('0x19')]));});});};exports[_0x96c7('0x24')]=function(_0x224646){var _0xb0d489=this;return new Promise(function(_0x3901f4,_0x374ba1){return db[_0x96c7('0x1b')]['find']({'raw':_0x224646[_0x96c7('0x1d')]?_0x224646[_0x96c7('0x1d')][_0x96c7('0x1e')]===undefined?!![]:![]:!![],'where':_0x224646[_0x96c7('0x1d')]?_0x224646[_0x96c7('0x1d')][_0x96c7('0x1f')]||null:null,'attributes':_0x224646['options']?_0x224646[_0x96c7('0x1d')][_0x96c7('0x20')]||null:null,'include':_0x224646[_0x96c7('0x1d')]?_0x224646['options'][_0x96c7('0x21')]?_[_0x96c7('0x23')](_0x224646[_0x96c7('0x1d')][_0x96c7('0x21')],function(_0x22e34a){return{'model':db[_0x22e34a[_0x96c7('0x22')]],'as':_0x22e34a['as'],'attributes':_0x22e34a[_0x96c7('0x20')],'include':_0x22e34a[_0x96c7('0x21')]?_[_0x96c7('0x23')](_0x22e34a[_0x96c7('0x21')],function(_0x17b48e){return{'model':db[_0x17b48e['model']],'as':_0x17b48e['as'],'attributes':_0x17b48e[_0x96c7('0x20')],'include':_0x17b48e[_0x96c7('0x21')]?_[_0x96c7('0x23')](_0x17b48e[_0x96c7('0x21')],function(_0x40632f){return{'model':db[_0x40632f[_0x96c7('0x22')]],'as':_0x40632f['as'],'attributes':_0x40632f[_0x96c7('0x20')]};}):[]};}):[]};}):[]:[]})[_0x96c7('0x10')](function(_0x3596fa){logger['info'](_0x96c7('0x24'),_0x224646);logger[_0x96c7('0x14')](_0x96c7('0x24'),_0x224646,JSON[_0x96c7('0x16')](_0x3596fa));_0x3901f4(_0x3596fa);})[_0x96c7('0x25')](function(_0x429f3e){logger[_0x96c7('0x17')]('ShowOpenchannelQueue',_0x429f3e[_0x96c7('0x19')],_0x224646);_0x374ba1(_0xb0d489['error'](0x1f4,_0x429f3e[_0x96c7('0x19')]));});});};
\ No newline at end of file
+var _0x2077=['where','limit','include','model','attributes','map','ShowOpenchannelQueue','OpenchannelQueue','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','redis','defaults','localhost','./openchannelQueue.socket','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetOpenchannelQueue','options','raw'];(function(_0x1ebd10,_0x4914b4){var _0x1004d3=function(_0x59e3ba){while(--_0x59e3ba){_0x1ebd10['push'](_0x1ebd10['shift']());}};_0x1004d3(++_0x4914b4);}(_0x2077,0x112));var _0x7207=function(_0x1e71d0,_0x444c69){_0x1e71d0=_0x1e71d0-0x0;var _0x2e0126=_0x2077[_0x1e71d0];return _0x2e0126;};'use strict';var _=require(_0x7207('0x0'));var util=require('util');var moment=require(_0x7207('0x1'));var BPromise=require(_0x7207('0x2'));var rs=require(_0x7207('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7207('0x4'))['db'];var utils=require(_0x7207('0x5'));var logger=require(_0x7207('0x6'))(_0x7207('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x7207('0x8')]['http']({'port':0x232a});config[_0x7207('0x9')]=_[_0x7207('0xa')](config['redis'],{'host':_0x7207('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7207('0x9')]));require(_0x7207('0xc'))[_0x7207('0xd')](socket);function respondWithRpcPromise(_0x4058ad,_0x5105b4,_0x3a8ce1){return new BPromise(function(_0x14d320,_0xc10be3){return client[_0x7207('0xe')](_0x4058ad,_0x3a8ce1)[_0x7207('0xf')](function(_0x54bdfc){logger[_0x7207('0x10')](_0x7207('0x11'),_0x5105b4,_0x7207('0x12'));logger[_0x7207('0x13')](_0x7207('0x14'),_0x5105b4,_0x7207('0x12'),JSON[_0x7207('0x15')](_0x54bdfc));if(_0x54bdfc['error']){if(_0x54bdfc[_0x7207('0x16')][_0x7207('0x17')]===0x1f4){logger[_0x7207('0x16')]('OpenchannelQueue,\x20%s,\x20%s',_0x5105b4,_0x54bdfc['error'][_0x7207('0x18')]);return _0xc10be3(_0x54bdfc[_0x7207('0x16')][_0x7207('0x18')]);}logger['error'](_0x7207('0x11'),_0x5105b4,_0x54bdfc['error'][_0x7207('0x18')]);return _0x14d320(_0x54bdfc[_0x7207('0x16')][_0x7207('0x18')]);}else{logger[_0x7207('0x10')](_0x7207('0x11'),_0x5105b4,_0x7207('0x12'));_0x14d320(_0x54bdfc[_0x7207('0x19')]['message']);}})[_0x7207('0x1a')](function(_0x115397){logger[_0x7207('0x16')](_0x7207('0x11'),_0x5105b4,_0x115397);_0xc10be3(_0x115397);});});}exports[_0x7207('0x1b')]=function(_0x5c4f1b){var _0x4075d8=this;return new Promise(function(_0x5dfd23,_0x4367d4){return db['OpenchannelQueue']['findAll']({'raw':_0x5c4f1b[_0x7207('0x1c')]?_0x5c4f1b[_0x7207('0x1c')][_0x7207('0x1d')]===undefined?!![]:![]:!![],'where':_0x5c4f1b[_0x7207('0x1c')]?_0x5c4f1b['options'][_0x7207('0x1e')]||null:null,'attributes':_0x5c4f1b[_0x7207('0x1c')]?_0x5c4f1b[_0x7207('0x1c')]['attributes']||null:null,'limit':_0x5c4f1b['options']?_0x5c4f1b['options'][_0x7207('0x1f')]||null:null,'include':_0x5c4f1b[_0x7207('0x1c')]?_0x5c4f1b[_0x7207('0x1c')][_0x7207('0x20')]?_['map'](_0x5c4f1b[_0x7207('0x1c')][_0x7207('0x20')],function(_0xbd6a23){return{'model':db[_0xbd6a23[_0x7207('0x21')]],'as':_0xbd6a23['as'],'attributes':_0xbd6a23[_0x7207('0x22')],'include':_0xbd6a23[_0x7207('0x20')]?_[_0x7207('0x23')](_0xbd6a23[_0x7207('0x20')],function(_0x1fe1fe){return{'model':db[_0x1fe1fe[_0x7207('0x21')]],'as':_0x1fe1fe['as'],'attributes':_0x1fe1fe[_0x7207('0x22')],'include':_0x1fe1fe[_0x7207('0x20')]?_[_0x7207('0x23')](_0x1fe1fe[_0x7207('0x20')],function(_0x5ca8c7){return{'model':db[_0x5ca8c7[_0x7207('0x21')]],'as':_0x5ca8c7['as'],'attributes':_0x5ca8c7['attributes']};}):[]};}):[]};}):[]:[]})[_0x7207('0xf')](function(_0x1ddd99){logger[_0x7207('0x10')](_0x7207('0x1b'),_0x5c4f1b);logger[_0x7207('0x13')](_0x7207('0x1b'),_0x5c4f1b,JSON[_0x7207('0x15')](_0x1ddd99));_0x5dfd23(_0x1ddd99);})[_0x7207('0x1a')](function(_0x218b13){logger['error'](_0x7207('0x1b'),_0x218b13[_0x7207('0x18')],_0x5c4f1b);_0x4367d4(_0x4075d8[_0x7207('0x16')](0x1f4,_0x218b13[_0x7207('0x18')]));});});};exports[_0x7207('0x24')]=function(_0xb30e4c){var _0x73533e=this;return new Promise(function(_0x1f02ae,_0x461bb2){return db[_0x7207('0x25')]['find']({'raw':_0xb30e4c[_0x7207('0x1c')]?_0xb30e4c[_0x7207('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0xb30e4c[_0x7207('0x1c')]?_0xb30e4c[_0x7207('0x1c')][_0x7207('0x1e')]||null:null,'attributes':_0xb30e4c[_0x7207('0x1c')]?_0xb30e4c[_0x7207('0x1c')][_0x7207('0x22')]||null:null,'include':_0xb30e4c[_0x7207('0x1c')]?_0xb30e4c[_0x7207('0x1c')][_0x7207('0x20')]?_[_0x7207('0x23')](_0xb30e4c['options'][_0x7207('0x20')],function(_0x11c0fe){return{'model':db[_0x11c0fe[_0x7207('0x21')]],'as':_0x11c0fe['as'],'attributes':_0x11c0fe['attributes'],'include':_0x11c0fe['include']?_[_0x7207('0x23')](_0x11c0fe[_0x7207('0x20')],function(_0x4e3a1e){return{'model':db[_0x4e3a1e[_0x7207('0x21')]],'as':_0x4e3a1e['as'],'attributes':_0x4e3a1e['attributes'],'include':_0x4e3a1e[_0x7207('0x20')]?_[_0x7207('0x23')](_0x4e3a1e[_0x7207('0x20')],function(_0x48ced6){return{'model':db[_0x48ced6[_0x7207('0x21')]],'as':_0x48ced6['as'],'attributes':_0x48ced6[_0x7207('0x22')]};}):[]};}):[]};}):[]:[]})[_0x7207('0xf')](function(_0x188e6a){logger[_0x7207('0x10')](_0x7207('0x24'),_0xb30e4c);logger[_0x7207('0x13')](_0x7207('0x24'),_0xb30e4c,JSON[_0x7207('0x15')](_0x188e6a));_0x1f02ae(_0x188e6a);})[_0x7207('0x1a')](function(_0x4f2509){logger['error'](_0x7207('0x24'),_0x4f2509['message'],_0xb30e4c);_0x461bb2(_0x73533e[_0x7207('0x16')](0x1f4,_0x4f2509[_0x7207('0x18')]));});});};
\ No newline at end of file
index 36cda27..e3eb3c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['length','openchannelQueue:','./openchannelQueue.events','save','remove','update','emit','removeListener','register'];(function(_0x120143,_0x536766){var _0xeae531=function(_0x181780){while(--_0x181780){_0x120143['push'](_0x120143['shift']());}};_0xeae531(++_0x536766);}(_0x814b,0xbf));var _0xb814=function(_0x5d9ceb,_0x1a49f5){_0x5d9ceb=_0x5d9ceb-0x0;var _0x33ce82=_0x814b[_0x5d9ceb];return _0x33ce82;};'use strict';var OpenchannelQueueEvents=require(_0xb814('0x0'));var events=[_0xb814('0x1'),_0xb814('0x2'),_0xb814('0x3')];function createListener(_0x58dc5b,_0x43e47c){return function(_0x13ed1f){_0x43e47c[_0xb814('0x4')](_0x58dc5b,_0x13ed1f);};}function removeListener(_0x41fbef,_0x2faf37){return function(){OpenchannelQueueEvents[_0xb814('0x5')](_0x41fbef,_0x2faf37);};}exports[_0xb814('0x6')]=function(_0x2078f3){for(var _0x4e1bee=0x0,_0x3c6c35=events[_0xb814('0x7')];_0x4e1bee<_0x3c6c35;_0x4e1bee++){var _0x37d775=events[_0x4e1bee];var _0x4290ea=createListener(_0xb814('0x8')+_0x37d775,_0x2078f3);OpenchannelQueueEvents['on'](_0x37d775,_0x4290ea);}};
\ No newline at end of file
+var _0x6eed=['save','removeListener','register','length','openchannelQueue:','./openchannelQueue.events'];(function(_0x153663,_0x3ef313){var _0xfcdd26=function(_0x5b4cc7){while(--_0x5b4cc7){_0x153663['push'](_0x153663['shift']());}};_0xfcdd26(++_0x3ef313);}(_0x6eed,0x113));var _0xd6ee=function(_0x5dd703,_0x7fe88c){_0x5dd703=_0x5dd703-0x0;var _0x557f8e=_0x6eed[_0x5dd703];return _0x557f8e;};'use strict';var OpenchannelQueueEvents=require(_0xd6ee('0x0'));var events=[_0xd6ee('0x1'),'remove','update'];function createListener(_0x2c516d,_0x5909e3){return function(_0x4e5493){_0x5909e3['emit'](_0x2c516d,_0x4e5493);};}function removeListener(_0x74e485,_0x72b6a1){return function(){OpenchannelQueueEvents[_0xd6ee('0x2')](_0x74e485,_0x72b6a1);};}exports[_0xd6ee('0x3')]=function(_0x123057){for(var _0x1371b5=0x0,_0x1fa966=events[_0xd6ee('0x4')];_0x1371b5<_0x1fa966;_0x1371b5++){var _0x37a9f4=events[_0x1371b5];var _0x4c43de=createListener(_0xd6ee('0x5')+_0x37a9f4,_0x123057);OpenchannelQueueEvents['on'](_0x37a9f4,_0x4c43de);}};
\ No newline at end of file
index 665f877..9c0d758 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9062=['update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','create','put'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x9062,0x1bc));var _0x2906=function(_0x4efcee,_0x2bbe28){_0x4efcee=_0x4efcee-0x0;var _0x5d1e5e=_0x9062[_0x4efcee];return _0x5d1e5e;};'use strict';var multer=require(_0x2906('0x0'));var util=require(_0x2906('0x1'));var path=require(_0x2906('0x2'));var timeout=require(_0x2906('0x3'));var express=require('express');var router=express[_0x2906('0x4')]();var fs_extra=require(_0x2906('0x5'));var auth=require(_0x2906('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x2906('0x7'));var controller=require('./openchannelQueueReport.controller');router[_0x2906('0x8')]('/',auth[_0x2906('0x9')](),controller['index']);router[_0x2906('0x8')](_0x2906('0xa'),auth[_0x2906('0x9')](),controller[_0x2906('0xb')]);router[_0x2906('0x8')](_0x2906('0xc'),auth[_0x2906('0x9')](),controller[_0x2906('0xd')]);router['post']('/',auth[_0x2906('0x9')](),controller[_0x2906('0xe')]);router[_0x2906('0xf')]('/:id',auth[_0x2906('0x9')](),controller[_0x2906('0x10')]);router[_0x2906('0x11')](_0x2906('0xc'),auth[_0x2906('0x9')](),controller[_0x2906('0x12')]);module[_0x2906('0x13')]=router;
\ No newline at end of file
+var _0xf4af=['/:id','post','create','put','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','describe'];(function(_0x4f2edd,_0x55853a){var _0x4db359=function(_0x289588){while(--_0x289588){_0x4f2edd['push'](_0x4f2edd['shift']());}};_0x4db359(++_0x55853a);}(_0xf4af,0x1d2));var _0xff4a=function(_0x2f169c,_0x130a86){_0x2f169c=_0x2f169c-0x0;var _0x39937f=_0xf4af[_0x2f169c];return _0x39937f;};'use strict';var multer=require(_0xff4a('0x0'));var util=require(_0xff4a('0x1'));var path=require(_0xff4a('0x2'));var timeout=require(_0xff4a('0x3'));var express=require(_0xff4a('0x4'));var router=express[_0xff4a('0x5')]();var fs_extra=require(_0xff4a('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xff4a('0x7'));var config=require(_0xff4a('0x8'));var controller=require(_0xff4a('0x9'));router[_0xff4a('0xa')]('/',auth[_0xff4a('0xb')](),controller[_0xff4a('0xc')]);router[_0xff4a('0xa')]('/describe',auth[_0xff4a('0xb')](),controller[_0xff4a('0xd')]);router[_0xff4a('0xa')](_0xff4a('0xe'),auth[_0xff4a('0xb')](),controller['show']);router[_0xff4a('0xf')]('/',auth[_0xff4a('0xb')](),controller[_0xff4a('0x10')]);router[_0xff4a('0x11')](_0xff4a('0xe'),auth[_0xff4a('0xb')](),controller[_0xff4a('0x12')]);router['delete'](_0xff4a('0xe'),auth[_0xff4a('0xb')](),controller[_0xff4a('0x13')]);module['exports']=router;
\ No newline at end of file
index 3acee73..8b321fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f4b=['moment','exports','STRING','DATE'];(function(_0x353f89,_0x281d95){var _0x2c3d3e=function(_0x4c4465){while(--_0x4c4465){_0x353f89['push'](_0x353f89['shift']());}};_0x2c3d3e(++_0x281d95);}(_0x0f4b,0x168));var _0xb0f4=function(_0x3a4570,_0x1d0114){_0x3a4570=_0x3a4570-0x0;var _0xbd5ae6=_0x0f4b[_0x3a4570];return _0xbd5ae6;};'use strict';var moment=require(_0xb0f4('0x0'));var Sequelize=require('sequelize');module[_0xb0f4('0x1')]={'uniqueid':{'type':Sequelize[_0xb0f4('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xb0f4('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xb0f4('0x2')]}};
\ No newline at end of file
+var _0x5e6d=['sequelize','exports','STRING','DATE','moment'];(function(_0x362fa7,_0xf7a5d7){var _0x14fd49=function(_0x1995fc){while(--_0x1995fc){_0x362fa7['push'](_0x362fa7['shift']());}};_0x14fd49(++_0xf7a5d7);}(_0x5e6d,0x1e9));var _0xd5e6=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0x5e6d[_0x4a53d];return _0x27410e;};'use strict';var moment=require(_0xd5e6('0x0'));var Sequelize=require(_0xd5e6('0x1'));module[_0xd5e6('0x2')]={'uniqueid':{'type':Sequelize[_0xd5e6('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xd5e6('0x3')]},'joinAt':{'type':Sequelize[_0xd5e6('0x4')]},'leaveAt':{'type':Sequelize[_0xd5e6('0x4')]},'acceptAt':{'type':Sequelize[_0xd5e6('0x4')]},'exitAt':{'type':Sequelize[_0xd5e6('0x4')]},'reason':{'type':Sequelize[_0xd5e6('0x3')]}};
\ No newline at end of file
index 8c1323b..e671d77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2984=['fs-extra','lodash','crypto','jsforce','desk.js','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','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','destroy','then','sendStatus','error','stack','send','index','map','OpenchannelQueueReport','rawAttributes','fieldName','key','model','name','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2984,0x99));var _0x4298=function(_0x168478,_0x323a27){_0x168478=_0x168478-0x0;var _0x29c2f8=_0x2984[_0x168478];return _0x29c2f8;};'use strict';var emlformat=require(_0x4298('0x0'));var rimraf=require(_0x4298('0x1'));var zipdir=require(_0x4298('0x2'));var jsonpatch=require(_0x4298('0x3'));var rp=require(_0x4298('0x4'));var moment=require(_0x4298('0x5'));var BPromise=require(_0x4298('0x6'));var Mustache=require(_0x4298('0x7'));var util=require(_0x4298('0x8'));var path=require(_0x4298('0x9'));var sox=require('sox');var csv=require(_0x4298('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4298('0xb'));var _=require(_0x4298('0xc'));var squel=require('squel');var crypto=require(_0x4298('0xd'));var jsforce=require(_0x4298('0xe'));var deskjs=require(_0x4298('0xf'));var toCsv=require(_0x4298('0xa'));var querystring=require('querystring');var Papa=require(_0x4298('0x10'));var Redis=require(_0x4298('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x4298('0x12'));var as=require(_0x4298('0x13'));var hardwareService=require(_0x4298('0x14'));var logger=require(_0x4298('0x15'))(_0x4298('0x16'));var utils=require(_0x4298('0x17'));var config=require(_0x4298('0x18'));var licenseUtil=require(_0x4298('0x19'));var db=require(_0x4298('0x1a'))['db'];function respondWithStatusCode(_0xe62a3d,_0x1ee533){_0x1ee533=_0x1ee533||0xcc;return function(_0x324336){if(_0x324336){return _0xe62a3d['sendStatus'](_0x1ee533);}return _0xe62a3d[_0x4298('0x1b')](_0x1ee533)[_0x4298('0x1c')]();};}function respondWithResult(_0x9eaff3,_0x2e1a4f){_0x2e1a4f=_0x2e1a4f||0xc8;return function(_0x315020){if(_0x315020){return _0x9eaff3[_0x4298('0x1b')](_0x2e1a4f)[_0x4298('0x1d')](_0x315020);}};}function respondWithFilteredResult(_0x1e9ac5,_0x27db61){return function(_0x36893d){if(_0x36893d){var _0x5651d0=typeof _0x27db61['offset']===_0x4298('0x1e')&&typeof _0x27db61['limit']===_0x4298('0x1e');var _0x32e761=_0x36893d[_0x4298('0x1f')];var _0x291a12=_0x5651d0?0x0:_0x27db61['offset'];var _0x259a6a=_0x5651d0?_0x36893d[_0x4298('0x1f')]:_0x27db61[_0x4298('0x20')]+_0x27db61[_0x4298('0x21')];var _0xa14226;if(_0x259a6a>=_0x32e761){_0x259a6a=_0x32e761;_0xa14226=0xc8;}else{_0xa14226=0xce;}_0x1e9ac5[_0x4298('0x1b')](_0xa14226);return _0x1e9ac5[_0x4298('0x22')](_0x4298('0x23'),_0x291a12+'-'+_0x259a6a+'/'+_0x32e761)[_0x4298('0x1d')](_0x36893d);}return null;};}function patchUpdates(_0xb6b90a){return function(_0x18d265){try{jsonpatch[_0x4298('0x24')](_0x18d265,_0xb6b90a,!![]);}catch(_0xbc7d8c){return BPromise[_0x4298('0x25')](_0xbc7d8c);}return _0x18d265[_0x4298('0x26')]();};}function saveUpdates(_0x2f2bc7,_0x3b5fb6){return function(_0x56f220){if(_0x56f220){return _0x56f220[_0x4298('0x27')](_0x2f2bc7)['then'](function(_0x5da074){return _0x5da074;});}return null;};}function removeEntity(_0x2b396c,_0x4b450){return function(_0x455fa1){if(_0x455fa1){return _0x455fa1[_0x4298('0x28')]()[_0x4298('0x29')](function(){_0x2b396c[_0x4298('0x1b')](0xcc)[_0x4298('0x1c')]();});}};}function handleEntityNotFound(_0x4773a2,_0x43002a){return function(_0x5254c0){if(!_0x5254c0){_0x4773a2[_0x4298('0x2a')](0x194);}return _0x5254c0;};}function handleError(_0x426c27,_0x5c53b6){_0x5c53b6=_0x5c53b6||0x1f4;return function(_0x5b5ca6){logger[_0x4298('0x2b')](_0x5b5ca6[_0x4298('0x2c')]);if(_0x5b5ca6['name']){delete _0x5b5ca6['name'];}_0x426c27[_0x4298('0x1b')](_0x5c53b6)[_0x4298('0x2d')](_0x5b5ca6);};}exports[_0x4298('0x2e')]=function(_0x5ea255,_0x1e7d4f){var _0x561749={},_0x1ca265={},_0x24d7b4={'count':0x0,'rows':[]};var _0x734eee=_[_0x4298('0x2f')](db[_0x4298('0x30')][_0x4298('0x31')],function(_0x4e88d0){return{'name':_0x4e88d0[_0x4298('0x32')],'type':_0x4e88d0['type'][_0x4298('0x33')]};});_0x1ca265[_0x4298('0x34')]=_[_0x4298('0x2f')](_0x734eee,_0x4298('0x35'));_0x1ca265[_0x4298('0x36')]=_[_0x4298('0x37')](_0x5ea255['query']);_0x1ca265['filters']=_['intersection'](_0x1ca265['model'],_0x1ca265[_0x4298('0x36')]);_0x561749[_0x4298('0x38')]=_[_0x4298('0x39')](_0x1ca265['model'],qs[_0x4298('0x3a')](_0x5ea255['query'][_0x4298('0x3a')]));_0x561749['attributes']=_0x561749['attributes'][_0x4298('0x3b')]?_0x561749[_0x4298('0x38')]:_0x1ca265[_0x4298('0x34')];if(!_0x5ea255['query'][_0x4298('0x3c')](_0x4298('0x3d'))){_0x561749['limit']=qs[_0x4298('0x21')](_0x5ea255['query']['limit']);_0x561749[_0x4298('0x20')]=qs[_0x4298('0x20')](_0x5ea255[_0x4298('0x36')][_0x4298('0x20')]);}_0x561749['order']=qs['sort'](_0x5ea255[_0x4298('0x36')][_0x4298('0x3e')]);_0x561749[_0x4298('0x3f')]=qs[_0x4298('0x40')](_[_0x4298('0x41')](_0x5ea255[_0x4298('0x36')],_0x1ca265[_0x4298('0x40')]),_0x734eee);if(_0x5ea255[_0x4298('0x36')][_0x4298('0x42')]){_0x561749['where']=_['merge'](_0x561749['where'],{'$or':_['map'](_0x734eee,function(_0x563600){if(_0x563600[_0x4298('0x43')]!==_0x4298('0x44')){var _0x340d21={};_0x340d21[_0x563600[_0x4298('0x35')]]={'$like':'%'+_0x5ea255[_0x4298('0x36')][_0x4298('0x42')]+'%'};return _0x340d21;}})});}_0x561749=_[_0x4298('0x45')]({},_0x561749,_0x5ea255[_0x4298('0x46')]);var _0x13a339={'where':_0x561749[_0x4298('0x3f')]};return db[_0x4298('0x30')][_0x4298('0x1f')](_0x13a339)['then'](function(_0x3e3289){_0x24d7b4[_0x4298('0x1f')]=_0x3e3289;if(_0x5ea255[_0x4298('0x36')][_0x4298('0x47')]){_0x561749[_0x4298('0x48')]=[{'all':!![]}];}return db[_0x4298('0x30')][_0x4298('0x49')](_0x561749);})[_0x4298('0x29')](function(_0x220eb9){_0x24d7b4[_0x4298('0x4a')]=_0x220eb9;return _0x24d7b4;})[_0x4298('0x29')](respondWithFilteredResult(_0x1e7d4f,_0x561749))[_0x4298('0x4b')](handleError(_0x1e7d4f,null));};exports[_0x4298('0x4c')]=function(_0x523abf,_0x3cbbaa){var _0x15f203={'raw':!![],'where':{'id':_0x523abf[_0x4298('0x4d')]['id']}},_0x5d08c9={};_0x5d08c9[_0x4298('0x34')]=_[_0x4298('0x37')](db['OpenchannelQueueReport']['rawAttributes']);_0x5d08c9[_0x4298('0x36')]=_[_0x4298('0x37')](_0x523abf[_0x4298('0x36')]);_0x5d08c9[_0x4298('0x40')]=_['intersection'](_0x5d08c9['model'],_0x5d08c9[_0x4298('0x36')]);_0x15f203['attributes']=_['intersection'](_0x5d08c9[_0x4298('0x34')],qs[_0x4298('0x3a')](_0x523abf[_0x4298('0x36')][_0x4298('0x3a')]));_0x15f203['attributes']=_0x15f203[_0x4298('0x38')]['length']?_0x15f203[_0x4298('0x38')]:_0x5d08c9['model'];if(_0x523abf['query']['includeAll']){_0x15f203['include']=[{'all':!![]}];}_0x15f203=_[_0x4298('0x45')]({},_0x15f203,_0x523abf[_0x4298('0x46')]);return db['OpenchannelQueueReport'][_0x4298('0x4e')](_0x15f203)[_0x4298('0x29')](handleEntityNotFound(_0x3cbbaa,null))[_0x4298('0x29')](respondWithResult(_0x3cbbaa,null))[_0x4298('0x4b')](handleError(_0x3cbbaa,null));};exports[_0x4298('0x4f')]=function(_0x1ab447,_0x5e6463){return db['OpenchannelQueueReport'][_0x4298('0x4f')](_0x1ab447['body'],{})['then'](respondWithResult(_0x5e6463,0xc9))[_0x4298('0x4b')](handleError(_0x5e6463,null));};exports[_0x4298('0x27')]=function(_0x5bcd5c,_0x5bb27a){if(_0x5bcd5c['body']['id']){delete _0x5bcd5c[_0x4298('0x50')]['id'];}return db[_0x4298('0x30')][_0x4298('0x4e')]({'where':{'id':_0x5bcd5c[_0x4298('0x4d')]['id']}})[_0x4298('0x29')](handleEntityNotFound(_0x5bb27a,null))['then'](saveUpdates(_0x5bcd5c[_0x4298('0x50')],null))[_0x4298('0x29')](respondWithResult(_0x5bb27a,null))[_0x4298('0x4b')](handleError(_0x5bb27a,null));};exports['destroy']=function(_0x402dc5,_0x5bfa8d){return db[_0x4298('0x30')]['find']({'where':{'id':_0x402dc5['params']['id']}})[_0x4298('0x29')](handleEntityNotFound(_0x5bfa8d,null))[_0x4298('0x29')](removeEntity(_0x5bfa8d,null))['catch'](handleError(_0x5bfa8d,null));};exports[_0x4298('0x51')]=function(_0x1a9a19,_0x2e81b1){return db[_0x4298('0x30')][_0x4298('0x51')]()['then'](respondWithResult(_0x2e81b1,null))[_0x4298('0x4b')](handleError(_0x2e81b1,null));};
\ No newline at end of file
+var _0xae7e=['../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','reject','save','update','destroy','error','stack','name','OpenchannelQueueReport','rawAttributes','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','then','includeAll','include','findAll','rows','catch','params','find','create','body','describe','rimraf','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x3df706,_0x2afce6){var _0x4cb963=function(_0x284a46){while(--_0x284a46){_0x3df706['push'](_0x3df706['shift']());}};_0x4cb963(++_0x2afce6);}(_0xae7e,0xc6));var _0xeae7=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xae7e[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xeae7('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xeae7('0x1'));var moment=require(_0xeae7('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xeae7('0x3'));var path=require(_0xeae7('0x4'));var sox=require(_0xeae7('0x5'));var csv=require(_0xeae7('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xeae7('0x7'));var _=require(_0xeae7('0x8'));var squel=require(_0xeae7('0x9'));var crypto=require('crypto');var jsforce=require(_0xeae7('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xeae7('0x6'));var querystring=require(_0xeae7('0xb'));var Papa=require('papaparse');var Redis=require(_0xeae7('0xc'));var authService=require(_0xeae7('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xeae7('0xe'));var hardwareService=require(_0xeae7('0xf'));var logger=require(_0xeae7('0x10'))(_0xeae7('0x11'));var utils=require(_0xeae7('0x12'));var config=require(_0xeae7('0x13'));var licenseUtil=require(_0xeae7('0x14'));var db=require(_0xeae7('0x15'))['db'];function respondWithStatusCode(_0x24d6c7,_0x935cf2){_0x935cf2=_0x935cf2||0xcc;return function(_0x9a8a34){if(_0x9a8a34){return _0x24d6c7[_0xeae7('0x16')](_0x935cf2);}return _0x24d6c7['status'](_0x935cf2)[_0xeae7('0x17')]();};}function respondWithResult(_0x24622c,_0x40e9d4){_0x40e9d4=_0x40e9d4||0xc8;return function(_0x5cd417){if(_0x5cd417){return _0x24622c['status'](_0x40e9d4)[_0xeae7('0x18')](_0x5cd417);}};}function respondWithFilteredResult(_0x123452,_0x5c7b4a){return function(_0x44a833){if(_0x44a833){var _0x511c97=typeof _0x5c7b4a[_0xeae7('0x19')]===_0xeae7('0x1a')&&typeof _0x5c7b4a[_0xeae7('0x1b')]==='undefined';var _0x2d1f21=_0x44a833[_0xeae7('0x1c')];var _0xb09468=_0x511c97?0x0:_0x5c7b4a[_0xeae7('0x19')];var _0x1b649e=_0x511c97?_0x44a833[_0xeae7('0x1c')]:_0x5c7b4a['offset']+_0x5c7b4a[_0xeae7('0x1b')];var _0x57e043;if(_0x1b649e>=_0x2d1f21){_0x1b649e=_0x2d1f21;_0x57e043=0xc8;}else{_0x57e043=0xce;}_0x123452[_0xeae7('0x1d')](_0x57e043);return _0x123452[_0xeae7('0x1e')](_0xeae7('0x1f'),_0xb09468+'-'+_0x1b649e+'/'+_0x2d1f21)[_0xeae7('0x18')](_0x44a833);}return null;};}function patchUpdates(_0x331aa3){return function(_0x2c63e9){try{jsonpatch['apply'](_0x2c63e9,_0x331aa3,!![]);}catch(_0x2102a6){return BPromise[_0xeae7('0x20')](_0x2102a6);}return _0x2c63e9[_0xeae7('0x21')]();};}function saveUpdates(_0x36de9d,_0x902249){return function(_0x263fa6){if(_0x263fa6){return _0x263fa6[_0xeae7('0x22')](_0x36de9d)['then'](function(_0x593d7f){return _0x593d7f;});}return null;};}function removeEntity(_0x3c2d5d,_0x13ee6b){return function(_0x459e2a){if(_0x459e2a){return _0x459e2a[_0xeae7('0x23')]()['then'](function(){_0x3c2d5d['status'](0xcc)[_0xeae7('0x17')]();});}};}function handleEntityNotFound(_0x152bc7,_0x5435da){return function(_0x1ea432){if(!_0x1ea432){_0x152bc7['sendStatus'](0x194);}return _0x1ea432;};}function handleError(_0x52fd45,_0x1efe31){_0x1efe31=_0x1efe31||0x1f4;return function(_0x38815b){logger[_0xeae7('0x24')](_0x38815b[_0xeae7('0x25')]);if(_0x38815b[_0xeae7('0x26')]){delete _0x38815b[_0xeae7('0x26')];}_0x52fd45[_0xeae7('0x1d')](_0x1efe31)['send'](_0x38815b);};}exports['index']=function(_0x561fbb,_0x5b08c1){var _0x31765f={},_0x75f531={},_0x146a45={'count':0x0,'rows':[]};var _0x274e00=_['map'](db[_0xeae7('0x27')][_0xeae7('0x28')],function(_0x49e9f5){return{'name':_0x49e9f5['fieldName'],'type':_0x49e9f5[_0xeae7('0x29')][_0xeae7('0x2a')]};});_0x75f531[_0xeae7('0x2b')]=_[_0xeae7('0x2c')](_0x274e00,_0xeae7('0x26'));_0x75f531[_0xeae7('0x2d')]=_[_0xeae7('0x2e')](_0x561fbb['query']);_0x75f531[_0xeae7('0x2f')]=_[_0xeae7('0x30')](_0x75f531['model'],_0x75f531[_0xeae7('0x2d')]);_0x31765f[_0xeae7('0x31')]=_['intersection'](_0x75f531[_0xeae7('0x2b')],qs[_0xeae7('0x32')](_0x561fbb[_0xeae7('0x2d')][_0xeae7('0x32')]));_0x31765f[_0xeae7('0x31')]=_0x31765f[_0xeae7('0x31')][_0xeae7('0x33')]?_0x31765f[_0xeae7('0x31')]:_0x75f531[_0xeae7('0x2b')];if(!_0x561fbb['query'][_0xeae7('0x34')](_0xeae7('0x35'))){_0x31765f[_0xeae7('0x1b')]=qs[_0xeae7('0x1b')](_0x561fbb[_0xeae7('0x2d')][_0xeae7('0x1b')]);_0x31765f['offset']=qs[_0xeae7('0x19')](_0x561fbb[_0xeae7('0x2d')][_0xeae7('0x19')]);}_0x31765f[_0xeae7('0x36')]=qs['sort'](_0x561fbb['query'][_0xeae7('0x37')]);_0x31765f['where']=qs['filters'](_[_0xeae7('0x38')](_0x561fbb[_0xeae7('0x2d')],_0x75f531[_0xeae7('0x2f')]),_0x274e00);if(_0x561fbb[_0xeae7('0x2d')]['filter']){_0x31765f[_0xeae7('0x39')]=_[_0xeae7('0x3a')](_0x31765f[_0xeae7('0x39')],{'$or':_['map'](_0x274e00,function(_0x4552f3){if(_0x4552f3[_0xeae7('0x29')]!==_0xeae7('0x3b')){var _0x22a536={};_0x22a536[_0x4552f3[_0xeae7('0x26')]]={'$like':'%'+_0x561fbb[_0xeae7('0x2d')][_0xeae7('0x3c')]+'%'};return _0x22a536;}})});}_0x31765f=_[_0xeae7('0x3a')]({},_0x31765f,_0x561fbb[_0xeae7('0x3d')]);var _0x4d0a2={'where':_0x31765f[_0xeae7('0x39')]};return db[_0xeae7('0x27')][_0xeae7('0x1c')](_0x4d0a2)[_0xeae7('0x3e')](function(_0x2153bb){_0x146a45[_0xeae7('0x1c')]=_0x2153bb;if(_0x561fbb[_0xeae7('0x2d')][_0xeae7('0x3f')]){_0x31765f[_0xeae7('0x40')]=[{'all':!![]}];}return db[_0xeae7('0x27')][_0xeae7('0x41')](_0x31765f);})[_0xeae7('0x3e')](function(_0x36d0ad){_0x146a45[_0xeae7('0x42')]=_0x36d0ad;return _0x146a45;})[_0xeae7('0x3e')](respondWithFilteredResult(_0x5b08c1,_0x31765f))[_0xeae7('0x43')](handleError(_0x5b08c1,null));};exports['show']=function(_0x5804ef,_0x424409){var _0x33919e={'raw':!![],'where':{'id':_0x5804ef[_0xeae7('0x44')]['id']}},_0x56d334={};_0x56d334['model']=_[_0xeae7('0x2e')](db[_0xeae7('0x27')][_0xeae7('0x28')]);_0x56d334[_0xeae7('0x2d')]=_[_0xeae7('0x2e')](_0x5804ef[_0xeae7('0x2d')]);_0x56d334[_0xeae7('0x2f')]=_[_0xeae7('0x30')](_0x56d334[_0xeae7('0x2b')],_0x56d334['query']);_0x33919e['attributes']=_['intersection'](_0x56d334[_0xeae7('0x2b')],qs[_0xeae7('0x32')](_0x5804ef[_0xeae7('0x2d')]['fields']));_0x33919e['attributes']=_0x33919e[_0xeae7('0x31')][_0xeae7('0x33')]?_0x33919e[_0xeae7('0x31')]:_0x56d334['model'];if(_0x5804ef[_0xeae7('0x2d')][_0xeae7('0x3f')]){_0x33919e[_0xeae7('0x40')]=[{'all':!![]}];}_0x33919e=_['merge']({},_0x33919e,_0x5804ef[_0xeae7('0x3d')]);return db[_0xeae7('0x27')][_0xeae7('0x45')](_0x33919e)['then'](handleEntityNotFound(_0x424409,null))[_0xeae7('0x3e')](respondWithResult(_0x424409,null))['catch'](handleError(_0x424409,null));};exports[_0xeae7('0x46')]=function(_0x2baff6,_0x5c0ec4){return db[_0xeae7('0x27')][_0xeae7('0x46')](_0x2baff6['body'],{})[_0xeae7('0x3e')](respondWithResult(_0x5c0ec4,0xc9))[_0xeae7('0x43')](handleError(_0x5c0ec4,null));};exports[_0xeae7('0x22')]=function(_0x1fd55b,_0x5dd367){if(_0x1fd55b['body']['id']){delete _0x1fd55b[_0xeae7('0x47')]['id'];}return db[_0xeae7('0x27')][_0xeae7('0x45')]({'where':{'id':_0x1fd55b['params']['id']}})['then'](handleEntityNotFound(_0x5dd367,null))['then'](saveUpdates(_0x1fd55b[_0xeae7('0x47')],null))['then'](respondWithResult(_0x5dd367,null))[_0xeae7('0x43')](handleError(_0x5dd367,null));};exports[_0xeae7('0x23')]=function(_0x467fda,_0x4afa37){return db[_0xeae7('0x27')][_0xeae7('0x45')]({'where':{'id':_0x467fda['params']['id']}})['then'](handleEntityNotFound(_0x4afa37,null))[_0xeae7('0x3e')](removeEntity(_0x4afa37,null))[_0xeae7('0x43')](handleError(_0x4afa37,null));};exports[_0xeae7('0x48')]=function(_0x8ba7e5,_0x5dc6b5){return db['OpenchannelQueueReport']['describe']()[_0xeae7('0x3e')](respondWithResult(_0x5dc6b5,null))['catch'](handleError(_0x5dc6b5,null));};
\ No newline at end of file
index 1c9c098..54213ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['util','api','moment','bluebird','request-promise','path','../../config/environment','./openchannelQueueReport.attributes','exports','define','report_openchannel_queue','uniqueid','lodash'];(function(_0x226d33,_0x523d25){var _0x13c901=function(_0x2c1bf1){while(--_0x2c1bf1){_0x226d33['push'](_0x226d33['shift']());}};_0x13c901(++_0x523d25);}(_0x5fc3,0xa8));var _0x35fc=function(_0x212bf5,_0x165cbd){_0x212bf5=_0x212bf5-0x0;var _0xfcad21=_0x5fc3[_0x212bf5];return _0xfcad21;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var logger=require('../../config/logger')(_0x35fc('0x2'));var moment=require(_0x35fc('0x3'));var BPromise=require(_0x35fc('0x4'));var rp=require(_0x35fc('0x5'));var fs=require('fs');var path=require(_0x35fc('0x6'));var rimraf=require('rimraf');var config=require(_0x35fc('0x7'));var attributes=require(_0x35fc('0x8'));module[_0x35fc('0x9')]=function(_0x5b85ad,_0x5754be){return _0x5b85ad[_0x35fc('0xa')]('OpenchannelQueueReport',attributes,{'tableName':_0x35fc('0xb'),'paranoid':![],'indexes':[{'name':_0x35fc('0xc'),'fields':[_0x35fc('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash'];(function(_0x496a5e,_0x2bb24d){var _0x3595c1=function(_0x27f295){while(--_0x27f295){_0x496a5e['push'](_0x496a5e['shift']());}};_0x3595c1(++_0x2bb24d);}(_0x326f,0xd1));var _0xf326=function(_0x1003a0,_0x7d0fa3){_0x1003a0=_0x1003a0-0x0;var _0x5ce4a3=_0x326f[_0x1003a0];return _0x5ce4a3;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xf326('0x1'));var moment=require(_0xf326('0x2'));var BPromise=require(_0xf326('0x3'));var rp=require(_0xf326('0x4'));var fs=require('fs');var path=require(_0xf326('0x5'));var rimraf=require(_0xf326('0x6'));var config=require(_0xf326('0x7'));var attributes=require(_0xf326('0x8'));module[_0xf326('0x9')]=function(_0x3ace29,_0x4c2249){return _0x3ace29[_0xf326('0xa')](_0xf326('0xb'),attributes,{'tableName':_0xf326('0xc'),'paranoid':![],'indexes':[{'name':_0xf326('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index bc447db..f88fcdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b17=['catch','lodash','moment','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','message','OpenchannelQueueReport,\x20%s,\x20%s','result','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','options','raw','UpdateOpenchannelQueueReport','update','body','where','limit'];(function(_0x1af5b2,_0x1b82fe){var _0xf1aa2d=function(_0x2ceae2){while(--_0x2ceae2){_0x1af5b2['push'](_0x1af5b2['shift']());}};_0xf1aa2d(++_0x1b82fe);}(_0x4b17,0x10f));var _0x74b1=function(_0x1fa760,_0x1bf063){_0x1fa760=_0x1fa760-0x0;var _0xd8eda1=_0x4b17[_0x1fa760];return _0xd8eda1;};'use strict';var _=require(_0x74b1('0x0'));var util=require('util');var moment=require(_0x74b1('0x1'));var BPromise=require('bluebird');var rs=require(_0x74b1('0x2'));var fs=require('fs');var Redis=require(_0x74b1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x74b1('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x74b1('0x5'));var jayson=require(_0x74b1('0x6'));var client=jayson[_0x74b1('0x7')][_0x74b1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x371c3b,_0x191d2b,_0x16761b){return new BPromise(function(_0x4c293c,_0x287e3e){return client[_0x74b1('0x9')](_0x371c3b,_0x16761b)[_0x74b1('0xa')](function(_0x25382b){logger[_0x74b1('0xb')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x191d2b,_0x74b1('0xc'));logger[_0x74b1('0xd')]('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0x191d2b,_0x74b1('0xc'),JSON[_0x74b1('0xe')](_0x25382b));if(_0x25382b[_0x74b1('0xf')]){if(_0x25382b[_0x74b1('0xf')]['code']===0x1f4){logger[_0x74b1('0xf')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x191d2b,_0x25382b['error'][_0x74b1('0x10')]);return _0x287e3e(_0x25382b[_0x74b1('0xf')]['message']);}logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0x191d2b,_0x25382b[_0x74b1('0xf')]['message']);return _0x4c293c(_0x25382b['error'][_0x74b1('0x10')]);}else{logger[_0x74b1('0xb')](_0x74b1('0x11'),_0x191d2b,_0x74b1('0xc'));_0x4c293c(_0x25382b[_0x74b1('0x12')][_0x74b1('0x10')]);}})['catch'](function(_0x6237be){logger[_0x74b1('0xf')](_0x74b1('0x11'),_0x191d2b,_0x6237be);_0x287e3e(_0x6237be);});});}exports[_0x74b1('0x13')]=function(_0xde2736){var _0x8c9510=this;return new Promise(function(_0x1ab838,_0x4bb3d2){return db[_0x74b1('0x14')][_0x74b1('0x15')](_0xde2736['body'],{'raw':_0xde2736[_0x74b1('0x16')]?_0xde2736[_0x74b1('0x16')][_0x74b1('0x17')]===undefined?!![]:![]:!![]})[_0x74b1('0xa')](function(_0x13bb44){logger[_0x74b1('0xb')](_0x74b1('0x13'),_0xde2736);logger[_0x74b1('0xd')]('CreateOpenchannelQueueReport',_0xde2736,JSON[_0x74b1('0xe')](_0x13bb44));_0x1ab838(_0x13bb44);})['catch'](function(_0x5da0f7){logger['error'](_0x74b1('0x13'),_0x5da0f7[_0x74b1('0x10')],_0xde2736);_0x4bb3d2(_0x8c9510[_0x74b1('0xf')](0x1f4,_0x5da0f7[_0x74b1('0x10')]));});});};exports[_0x74b1('0x18')]=function(_0x4ee88b){var _0x3c78e5=this;return new Promise(function(_0x4eca36,_0x3a7ef9){return db[_0x74b1('0x14')][_0x74b1('0x19')](_0x4ee88b[_0x74b1('0x1a')],{'raw':_0x4ee88b[_0x74b1('0x16')]?_0x4ee88b[_0x74b1('0x16')][_0x74b1('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4ee88b[_0x74b1('0x16')]?_0x4ee88b['options'][_0x74b1('0x1b')]||null:null,'attributes':_0x4ee88b[_0x74b1('0x16')]?_0x4ee88b[_0x74b1('0x16')]['attributes']||null:null,'limit':_0x4ee88b[_0x74b1('0x16')]?_0x4ee88b[_0x74b1('0x16')][_0x74b1('0x1c')]||null:null})[_0x74b1('0xa')](function(_0x26d9f1){logger[_0x74b1('0xb')](_0x74b1('0x18'),_0x4ee88b);logger[_0x74b1('0xd')]('UpdateOpenchannelQueueReport',_0x4ee88b,JSON[_0x74b1('0xe')](_0x26d9f1));_0x4eca36(_0x26d9f1);})[_0x74b1('0x1d')](function(_0x51ce6d){logger[_0x74b1('0xf')](_0x74b1('0x18'),_0x51ce6d[_0x74b1('0x10')],_0x4ee88b);_0x3a7ef9(_0x3c78e5['error'](0x1f4,_0x51ce6d[_0x74b1('0x10')]));});});};
\ No newline at end of file
+var _0x0598=['where','limit','lodash','util','bluebird','../../mysqldb','../../config/utils','jayson/promise','client','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','body','options','then','UpdateOpenchannelQueueReport','raw'];(function(_0x67df0b,_0x789af3){var _0x39d598=function(_0xc9a7ca){while(--_0xc9a7ca){_0x67df0b['push'](_0x67df0b['shift']());}};_0x39d598(++_0x789af3);}(_0x0598,0x92));var _0x8059=function(_0x49f76d,_0x4cc6b2){_0x49f76d=_0x49f76d-0x0;var _0xfea070=_0x0598[_0x49f76d];return _0xfea070;};'use strict';var _=require(_0x8059('0x0'));var util=require(_0x8059('0x1'));var moment=require('moment');var BPromise=require(_0x8059('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8059('0x3'))['db'];var utils=require(_0x8059('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x8059('0x5'));var client=jayson[_0x8059('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5996d7,_0x248273,_0x347f1b){return new BPromise(function(_0x4610d2,_0x116946){return client['request'](_0x5996d7,_0x347f1b)['then'](function(_0x89dda1){logger[_0x8059('0x7')](_0x8059('0x8'),_0x248273,_0x8059('0x9'));logger[_0x8059('0xa')]('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0x248273,'request\x20sent',JSON[_0x8059('0xb')](_0x89dda1));if(_0x89dda1[_0x8059('0xc')]){if(_0x89dda1['error']['code']===0x1f4){logger['error'](_0x8059('0x8'),_0x248273,_0x89dda1[_0x8059('0xc')][_0x8059('0xd')]);return _0x116946(_0x89dda1[_0x8059('0xc')][_0x8059('0xd')]);}logger['error'](_0x8059('0x8'),_0x248273,_0x89dda1['error'][_0x8059('0xd')]);return _0x4610d2(_0x89dda1['error'][_0x8059('0xd')]);}else{logger[_0x8059('0x7')](_0x8059('0x8'),_0x248273,'request\x20sent');_0x4610d2(_0x89dda1['result']['message']);}})[_0x8059('0xe')](function(_0x239195){logger[_0x8059('0xc')](_0x8059('0x8'),_0x248273,_0x239195);_0x116946(_0x239195);});});}exports[_0x8059('0xf')]=function(_0x4b6d55){var _0x10ad98=this;return new Promise(function(_0x2bb670,_0x37e926){return db[_0x8059('0x10')]['create'](_0x4b6d55[_0x8059('0x11')],{'raw':_0x4b6d55['options']?_0x4b6d55[_0x8059('0x12')]['raw']===undefined?!![]:![]:!![]})[_0x8059('0x13')](function(_0x56d794){logger[_0x8059('0x7')](_0x8059('0xf'),_0x4b6d55);logger[_0x8059('0xa')]('CreateOpenchannelQueueReport',_0x4b6d55,JSON['stringify'](_0x56d794));_0x2bb670(_0x56d794);})[_0x8059('0xe')](function(_0x232f1b){logger[_0x8059('0xc')](_0x8059('0xf'),_0x232f1b['message'],_0x4b6d55);_0x37e926(_0x10ad98[_0x8059('0xc')](0x1f4,_0x232f1b[_0x8059('0xd')]));});});};exports[_0x8059('0x14')]=function(_0x5449d9){var _0xe9a72d=this;return new Promise(function(_0x2256b1,_0x3e1067){return db[_0x8059('0x10')]['update'](_0x5449d9[_0x8059('0x11')],{'raw':_0x5449d9[_0x8059('0x12')]?_0x5449d9[_0x8059('0x12')][_0x8059('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5449d9[_0x8059('0x12')]?_0x5449d9['options'][_0x8059('0x16')]||null:null,'attributes':_0x5449d9[_0x8059('0x12')]?_0x5449d9[_0x8059('0x12')]['attributes']||null:null,'limit':_0x5449d9['options']?_0x5449d9['options'][_0x8059('0x17')]||null:null})[_0x8059('0x13')](function(_0xc32b1f){logger[_0x8059('0x7')]('UpdateOpenchannelQueueReport',_0x5449d9);logger[_0x8059('0xa')]('UpdateOpenchannelQueueReport',_0x5449d9,JSON[_0x8059('0xb')](_0xc32b1f));_0x2256b1(_0xc32b1f);})[_0x8059('0xe')](function(_0x5ecf7f){logger[_0x8059('0xc')](_0x8059('0x14'),_0x5ecf7f[_0x8059('0xd')],_0x5449d9);_0x3e1067(_0xe9a72d[_0x8059('0xc')](0x1f4,_0x5ecf7f[_0x8059('0xd')]));});});};
\ No newline at end of file
index daa6b69..e5a9c8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4172=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','show','create','exports','multer','util','path'];(function(_0x26effb,_0x1ce97c){var _0x49c6d0=function(_0x368953){while(--_0x368953){_0x26effb['push'](_0x26effb['shift']());}};_0x49c6d0(++_0x1ce97c);}(_0x4172,0xfc));var _0x2417=function(_0x29780d,_0x4b501b){_0x29780d=_0x29780d-0x0;var _0x284b03=_0x4172[_0x29780d];return _0x284b03;};'use strict';var multer=require(_0x2417('0x0'));var util=require(_0x2417('0x1'));var path=require(_0x2417('0x2'));var timeout=require(_0x2417('0x3'));var express=require(_0x2417('0x4'));var router=express[_0x2417('0x5')]();var fs_extra=require(_0x2417('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x2417('0x7'));var config=require(_0x2417('0x8'));var controller=require('./openchannelTransferReport.controller');router[_0x2417('0x9')]('/',auth[_0x2417('0xa')](),controller[_0x2417('0xb')]);router[_0x2417('0x9')]('/describe',auth[_0x2417('0xa')](),controller[_0x2417('0xc')]);router[_0x2417('0x9')](_0x2417('0xd'),auth[_0x2417('0xa')](),controller[_0x2417('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x2417('0xf')]);router['put']('/:id',auth[_0x2417('0xa')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x2417('0x10')]=router;
\ No newline at end of file
+var _0xe0f7=['connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','index','/describe','describe','show','post','create','put','/:id','update','delete','destroy','exports','multer','util','path'];(function(_0x3ffb55,_0x1ce9ea){var _0x34b69f=function(_0x5dfa4a){while(--_0x5dfa4a){_0x3ffb55['push'](_0x3ffb55['shift']());}};_0x34b69f(++_0x1ce9ea);}(_0xe0f7,0x111));var _0x7e0f=function(_0x5473d3,_0x1bbcc7){_0x5473d3=_0x5473d3-0x0;var _0x537a5e=_0xe0f7[_0x5473d3];return _0x537a5e;};'use strict';var multer=require(_0x7e0f('0x0'));var util=require(_0x7e0f('0x1'));var path=require(_0x7e0f('0x2'));var timeout=require(_0x7e0f('0x3'));var express=require('express');var router=express[_0x7e0f('0x4')]();var fs_extra=require(_0x7e0f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x7e0f('0x6'));var config=require(_0x7e0f('0x7'));var controller=require(_0x7e0f('0x8'));router[_0x7e0f('0x9')]('/',auth[_0x7e0f('0xa')](),controller[_0x7e0f('0xb')]);router['get'](_0x7e0f('0xc'),auth[_0x7e0f('0xa')](),controller[_0x7e0f('0xd')]);router[_0x7e0f('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x7e0f('0xe')]);router[_0x7e0f('0xf')]('/',auth[_0x7e0f('0xa')](),controller[_0x7e0f('0x10')]);router[_0x7e0f('0x11')](_0x7e0f('0x12'),auth['isAuthenticated'](),controller[_0x7e0f('0x13')]);router[_0x7e0f('0x14')](_0x7e0f('0x12'),auth[_0x7e0f('0xa')](),controller[_0x7e0f('0x15')]);module[_0x7e0f('0x16')]=router;
\ No newline at end of file
index 7211024..1050524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x58a4db,_0x272a7d){var _0x4c8a15=function(_0x89a9ce){while(--_0x89a9ce){_0x58a4db['push'](_0x58a4db['shift']());}};_0x4c8a15(++_0x272a7d);}(_0xaa88,0x137));var _0x8aa8=function(_0x9b2bb0,_0x3965b1){_0x9b2bb0=_0x9b2bb0-0x0;var _0x2cdb3b=_0xaa88[_0x9b2bb0];return _0x2cdb3b;};'use strict';var moment=require(_0x8aa8('0x0'));var Sequelize=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'uniqueid':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8aa8('0x4'),_0x8aa8('0x5'),_0x8aa8('0x6')),'allowNull':![],'defaultValue':_0x8aa8('0x6')},'transferredAt':{'type':Sequelize[_0x8aa8('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x8aa8('0x8')]}};
\ No newline at end of file
+var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x1834fb,_0x38bfa4){var _0x578b25=function(_0xb3980e){while(--_0xb3980e){_0x1834fb['push'](_0x1834fb['shift']());}};_0x578b25(++_0x38bfa4);}(_0x9c44,0x178));var _0x49c4=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0x9c44[_0x13b02f];return _0x12e9a6;};'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
index f6ac968..afa9286 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73a6=['rimraf','zip-dir','fast-json-patch','moment','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','set','apply','update','then','end','error','stack','name','send','index','map','OpenchannelTransferReport','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','count','includeAll','include','findAll','rows','catch','show','options','find','create','body','params','describe','eml-format'];(function(_0x20fb22,_0x210b85){var _0xdd510a=function(_0x390c50){while(--_0x390c50){_0x20fb22['push'](_0x20fb22['shift']());}};_0xdd510a(++_0x210b85);}(_0x73a6,0x180));var _0x673a=function(_0x1dc547,_0xb43d47){_0x1dc547=_0x1dc547-0x0;var _0x35ada9=_0x73a6[_0x1dc547];return _0x35ada9;};'use strict';var emlformat=require(_0x673a('0x0'));var rimraf=require(_0x673a('0x1'));var zipdir=require(_0x673a('0x2'));var jsonpatch=require(_0x673a('0x3'));var rp=require('request-promise');var moment=require(_0x673a('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x673a('0x5'));var path=require(_0x673a('0x6'));var sox=require('sox');var csv=require(_0x673a('0x7'));var ejs=require(_0x673a('0x8'));var fs=require('fs');var fs_extra=require(_0x673a('0x9'));var _=require(_0x673a('0xa'));var squel=require(_0x673a('0xb'));var crypto=require(_0x673a('0xc'));var jsforce=require(_0x673a('0xd'));var deskjs=require(_0x673a('0xe'));var toCsv=require(_0x673a('0x7'));var querystring=require(_0x673a('0xf'));var Papa=require(_0x673a('0x10'));var Redis=require('ioredis');var authService=require(_0x673a('0x11'));var qs=require(_0x673a('0x12'));var as=require(_0x673a('0x13'));var hardwareService=require(_0x673a('0x14'));var logger=require(_0x673a('0x15'))(_0x673a('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x673a('0x17'));var db=require(_0x673a('0x18'))['db'];function respondWithStatusCode(_0x1e2886,_0x1c155f){_0x1c155f=_0x1c155f||0xcc;return function(_0x3e1b3b){if(_0x3e1b3b){return _0x1e2886[_0x673a('0x19')](_0x1c155f);}return _0x1e2886['status'](_0x1c155f)['end']();};}function respondWithResult(_0x45f441,_0x5003de){_0x5003de=_0x5003de||0xc8;return function(_0x529253){if(_0x529253){return _0x45f441[_0x673a('0x1a')](_0x5003de)[_0x673a('0x1b')](_0x529253);}};}function respondWithFilteredResult(_0x559b20,_0x54fb7b){return function(_0x3aac47){if(_0x3aac47){var _0x530f97=typeof _0x54fb7b[_0x673a('0x1c')]===_0x673a('0x1d')&&typeof _0x54fb7b[_0x673a('0x1e')]===_0x673a('0x1d');var _0xa7e6a0=_0x3aac47['count'];var _0x1b9d31=_0x530f97?0x0:_0x54fb7b[_0x673a('0x1c')];var _0x27c654=_0x530f97?_0x3aac47['count']:_0x54fb7b[_0x673a('0x1c')]+_0x54fb7b[_0x673a('0x1e')];var _0x12f821;if(_0x27c654>=_0xa7e6a0){_0x27c654=_0xa7e6a0;_0x12f821=0xc8;}else{_0x12f821=0xce;}_0x559b20[_0x673a('0x1a')](_0x12f821);return _0x559b20[_0x673a('0x1f')]('Content-Range',_0x1b9d31+'-'+_0x27c654+'/'+_0xa7e6a0)['json'](_0x3aac47);}return null;};}function patchUpdates(_0x3ae1f0){return function(_0x526d3d){try{jsonpatch[_0x673a('0x20')](_0x526d3d,_0x3ae1f0,!![]);}catch(_0x3e9c05){return BPromise['reject'](_0x3e9c05);}return _0x526d3d['save']();};}function saveUpdates(_0x2b8f16,_0xf1ae18){return function(_0x183e9c){if(_0x183e9c){return _0x183e9c[_0x673a('0x21')](_0x2b8f16)[_0x673a('0x22')](function(_0x27a471){return _0x27a471;});}return null;};}function removeEntity(_0x19e35b,_0x20e24c){return function(_0x4f961c){if(_0x4f961c){return _0x4f961c['destroy']()['then'](function(){_0x19e35b[_0x673a('0x1a')](0xcc)[_0x673a('0x23')]();});}};}function handleEntityNotFound(_0x5e197e,_0x35da8a){return function(_0x10ae96){if(!_0x10ae96){_0x5e197e[_0x673a('0x19')](0x194);}return _0x10ae96;};}function handleError(_0x43fb2d,_0x3d1c1b){_0x3d1c1b=_0x3d1c1b||0x1f4;return function(_0x30b4de){logger[_0x673a('0x24')](_0x30b4de[_0x673a('0x25')]);if(_0x30b4de['name']){delete _0x30b4de[_0x673a('0x26')];}_0x43fb2d[_0x673a('0x1a')](_0x3d1c1b)[_0x673a('0x27')](_0x30b4de);};}exports[_0x673a('0x28')]=function(_0x53ac18,_0xd79478){var _0x262271={},_0x4a9653={},_0x3c86fa={'count':0x0,'rows':[]};var _0x2eb554=_[_0x673a('0x29')](db[_0x673a('0x2a')][_0x673a('0x2b')],function(_0x362aaa){return{'name':_0x362aaa[_0x673a('0x2c')],'type':_0x362aaa['type'][_0x673a('0x2d')]};});_0x4a9653[_0x673a('0x2e')]=_[_0x673a('0x29')](_0x2eb554,_0x673a('0x26'));_0x4a9653['query']=_[_0x673a('0x2f')](_0x53ac18[_0x673a('0x30')]);_0x4a9653['filters']=_[_0x673a('0x31')](_0x4a9653[_0x673a('0x2e')],_0x4a9653['query']);_0x262271[_0x673a('0x32')]=_[_0x673a('0x31')](_0x4a9653['model'],qs[_0x673a('0x33')](_0x53ac18['query'][_0x673a('0x33')]));_0x262271[_0x673a('0x32')]=_0x262271[_0x673a('0x32')][_0x673a('0x34')]?_0x262271[_0x673a('0x32')]:_0x4a9653[_0x673a('0x2e')];if(!_0x53ac18['query'][_0x673a('0x35')](_0x673a('0x36'))){_0x262271['limit']=qs[_0x673a('0x1e')](_0x53ac18[_0x673a('0x30')][_0x673a('0x1e')]);_0x262271[_0x673a('0x1c')]=qs[_0x673a('0x1c')](_0x53ac18[_0x673a('0x30')][_0x673a('0x1c')]);}_0x262271[_0x673a('0x37')]=qs[_0x673a('0x38')](_0x53ac18['query'][_0x673a('0x38')]);_0x262271[_0x673a('0x39')]=qs[_0x673a('0x3a')](_[_0x673a('0x3b')](_0x53ac18[_0x673a('0x30')],_0x4a9653['filters']),_0x2eb554);if(_0x53ac18[_0x673a('0x30')][_0x673a('0x3c')]){_0x262271[_0x673a('0x39')]=_[_0x673a('0x3d')](_0x262271['where'],{'$or':_[_0x673a('0x29')](_0x2eb554,function(_0x142f15){if(_0x142f15[_0x673a('0x3e')]!==_0x673a('0x3f')){var _0x522780={};_0x522780[_0x142f15[_0x673a('0x26')]]={'$like':'%'+_0x53ac18[_0x673a('0x30')][_0x673a('0x3c')]+'%'};return _0x522780;}})});}_0x262271=_[_0x673a('0x3d')]({},_0x262271,_0x53ac18['options']);var _0x3eb007={'where':_0x262271['where']};return db['OpenchannelTransferReport'][_0x673a('0x40')](_0x3eb007)['then'](function(_0x1e4bb7){_0x3c86fa['count']=_0x1e4bb7;if(_0x53ac18['query'][_0x673a('0x41')]){_0x262271[_0x673a('0x42')]=[{'all':!![]}];}return db[_0x673a('0x2a')][_0x673a('0x43')](_0x262271);})['then'](function(_0x11de7f){_0x3c86fa[_0x673a('0x44')]=_0x11de7f;return _0x3c86fa;})[_0x673a('0x22')](respondWithFilteredResult(_0xd79478,_0x262271))[_0x673a('0x45')](handleError(_0xd79478,null));};exports[_0x673a('0x46')]=function(_0x47dfb1,_0xe0259){var _0x2cf6f0={'raw':!![],'where':{'id':_0x47dfb1['params']['id']}},_0xb11074={};_0xb11074[_0x673a('0x2e')]=_[_0x673a('0x2f')](db['OpenchannelTransferReport'][_0x673a('0x2b')]);_0xb11074[_0x673a('0x30')]=_[_0x673a('0x2f')](_0x47dfb1[_0x673a('0x30')]);_0xb11074[_0x673a('0x3a')]=_[_0x673a('0x31')](_0xb11074[_0x673a('0x2e')],_0xb11074[_0x673a('0x30')]);_0x2cf6f0[_0x673a('0x32')]=_[_0x673a('0x31')](_0xb11074['model'],qs[_0x673a('0x33')](_0x47dfb1[_0x673a('0x30')]['fields']));_0x2cf6f0[_0x673a('0x32')]=_0x2cf6f0[_0x673a('0x32')][_0x673a('0x34')]?_0x2cf6f0[_0x673a('0x32')]:_0xb11074[_0x673a('0x2e')];if(_0x47dfb1[_0x673a('0x30')][_0x673a('0x41')]){_0x2cf6f0[_0x673a('0x42')]=[{'all':!![]}];}_0x2cf6f0=_[_0x673a('0x3d')]({},_0x2cf6f0,_0x47dfb1[_0x673a('0x47')]);return db[_0x673a('0x2a')][_0x673a('0x48')](_0x2cf6f0)[_0x673a('0x22')](handleEntityNotFound(_0xe0259,null))[_0x673a('0x22')](respondWithResult(_0xe0259,null))[_0x673a('0x45')](handleError(_0xe0259,null));};exports['create']=function(_0x641a20,_0x123106){return db[_0x673a('0x2a')][_0x673a('0x49')](_0x641a20[_0x673a('0x4a')],{})[_0x673a('0x22')](respondWithResult(_0x123106,0xc9))[_0x673a('0x45')](handleError(_0x123106,null));};exports['update']=function(_0x2daeca,_0x62291f){if(_0x2daeca[_0x673a('0x4a')]['id']){delete _0x2daeca[_0x673a('0x4a')]['id'];}return db[_0x673a('0x2a')]['find']({'where':{'id':_0x2daeca['params']['id']}})['then'](handleEntityNotFound(_0x62291f,null))[_0x673a('0x22')](saveUpdates(_0x2daeca['body'],null))[_0x673a('0x22')](respondWithResult(_0x62291f,null))['catch'](handleError(_0x62291f,null));};exports['destroy']=function(_0x2606b3,_0x35c526){return db[_0x673a('0x2a')][_0x673a('0x48')]({'where':{'id':_0x2606b3[_0x673a('0x4b')]['id']}})[_0x673a('0x22')](handleEntityNotFound(_0x35c526,null))[_0x673a('0x22')](removeEntity(_0x35c526,null))[_0x673a('0x45')](handleError(_0x35c526,null));};exports[_0x673a('0x4c')]=function(_0x489506,_0x368eb4){return db[_0x673a('0x2a')][_0x673a('0x4c')]()[_0x673a('0x22')](respondWithResult(_0x368eb4,null))[_0x673a('0x45')](handleError(_0x368eb4,null));};
\ No newline at end of file
+var _0xf391=['apply','update','then','destroy','name','send','index','map','fieldName','type','key','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','OpenchannelTransferReport','includeAll','include','findAll','rows','catch','params','keys','rawAttributes','intersection','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json'];(function(_0x24f6eb,_0x19262d){var _0x47842f=function(_0xc9daf2){while(--_0xc9daf2){_0x24f6eb['push'](_0x24f6eb['shift']());}};_0x47842f(++_0x19262d);}(_0xf391,0x1f1));var _0x1f39=function(_0x385ef5,_0x3105c1){_0x385ef5=_0x385ef5-0x0;var _0x86f664=_0xf391[_0x385ef5];return _0x86f664;};'use strict';var emlformat=require(_0x1f39('0x0'));var rimraf=require(_0x1f39('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1f39('0x2'));var rp=require(_0x1f39('0x3'));var moment=require(_0x1f39('0x4'));var BPromise=require(_0x1f39('0x5'));var Mustache=require(_0x1f39('0x6'));var util=require('util');var path=require(_0x1f39('0x7'));var sox=require(_0x1f39('0x8'));var csv=require(_0x1f39('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1f39('0xa'));var squel=require(_0x1f39('0xb'));var crypto=require(_0x1f39('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x1f39('0xd'));var toCsv=require(_0x1f39('0x9'));var querystring=require(_0x1f39('0xe'));var Papa=require(_0x1f39('0xf'));var Redis=require(_0x1f39('0x10'));var authService=require(_0x1f39('0x11'));var qs=require(_0x1f39('0x12'));var as=require(_0x1f39('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1f39('0x14'));var utils=require(_0x1f39('0x15'));var config=require(_0x1f39('0x16'));var licenseUtil=require(_0x1f39('0x17'));var db=require(_0x1f39('0x18'))['db'];function respondWithStatusCode(_0x2502ed,_0x35cbce){_0x35cbce=_0x35cbce||0xcc;return function(_0x6a053){if(_0x6a053){return _0x2502ed[_0x1f39('0x19')](_0x35cbce);}return _0x2502ed[_0x1f39('0x1a')](_0x35cbce)[_0x1f39('0x1b')]();};}function respondWithResult(_0x4c4234,_0x3870a5){_0x3870a5=_0x3870a5||0xc8;return function(_0x1ca03a){if(_0x1ca03a){return _0x4c4234[_0x1f39('0x1a')](_0x3870a5)['json'](_0x1ca03a);}};}function respondWithFilteredResult(_0x47886d,_0xd08490){return function(_0x48bda8){if(_0x48bda8){var _0x23b60e=typeof _0xd08490[_0x1f39('0x1c')]===_0x1f39('0x1d')&&typeof _0xd08490[_0x1f39('0x1e')]==='undefined';var _0x6c6a0f=_0x48bda8[_0x1f39('0x1f')];var _0x39c8c6=_0x23b60e?0x0:_0xd08490['offset'];var _0x2bc512=_0x23b60e?_0x48bda8[_0x1f39('0x1f')]:_0xd08490['offset']+_0xd08490[_0x1f39('0x1e')];var _0x96c139;if(_0x2bc512>=_0x6c6a0f){_0x2bc512=_0x6c6a0f;_0x96c139=0xc8;}else{_0x96c139=0xce;}_0x47886d[_0x1f39('0x1a')](_0x96c139);return _0x47886d[_0x1f39('0x20')](_0x1f39('0x21'),_0x39c8c6+'-'+_0x2bc512+'/'+_0x6c6a0f)[_0x1f39('0x22')](_0x48bda8);}return null;};}function patchUpdates(_0x240e19){return function(_0x5eb853){try{jsonpatch[_0x1f39('0x23')](_0x5eb853,_0x240e19,!![]);}catch(_0x4490dd){return BPromise['reject'](_0x4490dd);}return _0x5eb853['save']();};}function saveUpdates(_0x59272a,_0x16a3aa){return function(_0x22bfe6){if(_0x22bfe6){return _0x22bfe6[_0x1f39('0x24')](_0x59272a)[_0x1f39('0x25')](function(_0x21433c){return _0x21433c;});}return null;};}function removeEntity(_0x10378f,_0x34d4fb){return function(_0x40b045){if(_0x40b045){return _0x40b045[_0x1f39('0x26')]()['then'](function(){_0x10378f['status'](0xcc)[_0x1f39('0x1b')]();});}};}function handleEntityNotFound(_0x217eee,_0x604d2b){return function(_0x32b4ce){if(!_0x32b4ce){_0x217eee[_0x1f39('0x19')](0x194);}return _0x32b4ce;};}function handleError(_0x3cd239,_0x5612f6){_0x5612f6=_0x5612f6||0x1f4;return function(_0x42eb0a){logger['error'](_0x42eb0a['stack']);if(_0x42eb0a[_0x1f39('0x27')]){delete _0x42eb0a[_0x1f39('0x27')];}_0x3cd239[_0x1f39('0x1a')](_0x5612f6)[_0x1f39('0x28')](_0x42eb0a);};}exports[_0x1f39('0x29')]=function(_0x164e71,_0x8a9479){var _0x1230c5={},_0x38be7c={},_0x3ec0ee={'count':0x0,'rows':[]};var _0x318b37=_[_0x1f39('0x2a')](db['OpenchannelTransferReport']['rawAttributes'],function(_0x3e0bee){return{'name':_0x3e0bee[_0x1f39('0x2b')],'type':_0x3e0bee[_0x1f39('0x2c')][_0x1f39('0x2d')]};});_0x38be7c[_0x1f39('0x2e')]=_[_0x1f39('0x2a')](_0x318b37,'name');_0x38be7c[_0x1f39('0x2f')]=_['keys'](_0x164e71[_0x1f39('0x2f')]);_0x38be7c[_0x1f39('0x30')]=_['intersection'](_0x38be7c[_0x1f39('0x2e')],_0x38be7c[_0x1f39('0x2f')]);_0x1230c5[_0x1f39('0x31')]=_['intersection'](_0x38be7c['model'],qs['fields'](_0x164e71[_0x1f39('0x2f')][_0x1f39('0x32')]));_0x1230c5['attributes']=_0x1230c5[_0x1f39('0x31')][_0x1f39('0x33')]?_0x1230c5[_0x1f39('0x31')]:_0x38be7c[_0x1f39('0x2e')];if(!_0x164e71[_0x1f39('0x2f')][_0x1f39('0x34')](_0x1f39('0x35'))){_0x1230c5[_0x1f39('0x1e')]=qs[_0x1f39('0x1e')](_0x164e71['query'][_0x1f39('0x1e')]);_0x1230c5[_0x1f39('0x1c')]=qs['offset'](_0x164e71[_0x1f39('0x2f')][_0x1f39('0x1c')]);}_0x1230c5[_0x1f39('0x36')]=qs[_0x1f39('0x37')](_0x164e71[_0x1f39('0x2f')]['sort']);_0x1230c5[_0x1f39('0x38')]=qs[_0x1f39('0x30')](_[_0x1f39('0x39')](_0x164e71[_0x1f39('0x2f')],_0x38be7c[_0x1f39('0x30')]),_0x318b37);if(_0x164e71[_0x1f39('0x2f')][_0x1f39('0x3a')]){_0x1230c5[_0x1f39('0x38')]=_[_0x1f39('0x3b')](_0x1230c5['where'],{'$or':_['map'](_0x318b37,function(_0xd86a30){if(_0xd86a30['type']!==_0x1f39('0x3c')){var _0x31e658={};_0x31e658[_0xd86a30[_0x1f39('0x27')]]={'$like':'%'+_0x164e71[_0x1f39('0x2f')][_0x1f39('0x3a')]+'%'};return _0x31e658;}})});}_0x1230c5=_[_0x1f39('0x3b')]({},_0x1230c5,_0x164e71[_0x1f39('0x3d')]);var _0x46c71e={'where':_0x1230c5[_0x1f39('0x38')]};return db[_0x1f39('0x3e')][_0x1f39('0x1f')](_0x46c71e)[_0x1f39('0x25')](function(_0x3647bd){_0x3ec0ee[_0x1f39('0x1f')]=_0x3647bd;if(_0x164e71['query'][_0x1f39('0x3f')]){_0x1230c5[_0x1f39('0x40')]=[{'all':!![]}];}return db[_0x1f39('0x3e')][_0x1f39('0x41')](_0x1230c5);})[_0x1f39('0x25')](function(_0x2c41c2){_0x3ec0ee[_0x1f39('0x42')]=_0x2c41c2;return _0x3ec0ee;})['then'](respondWithFilteredResult(_0x8a9479,_0x1230c5))[_0x1f39('0x43')](handleError(_0x8a9479,null));};exports['show']=function(_0x5c7c68,_0x3023ea){var _0x534261={'raw':!![],'where':{'id':_0x5c7c68[_0x1f39('0x44')]['id']}},_0x267ee8={};_0x267ee8['model']=_[_0x1f39('0x45')](db[_0x1f39('0x3e')][_0x1f39('0x46')]);_0x267ee8[_0x1f39('0x2f')]=_[_0x1f39('0x45')](_0x5c7c68[_0x1f39('0x2f')]);_0x267ee8[_0x1f39('0x30')]=_[_0x1f39('0x47')](_0x267ee8[_0x1f39('0x2e')],_0x267ee8[_0x1f39('0x2f')]);_0x534261[_0x1f39('0x31')]=_[_0x1f39('0x47')](_0x267ee8[_0x1f39('0x2e')],qs['fields'](_0x5c7c68[_0x1f39('0x2f')][_0x1f39('0x32')]));_0x534261[_0x1f39('0x31')]=_0x534261[_0x1f39('0x31')][_0x1f39('0x33')]?_0x534261[_0x1f39('0x31')]:_0x267ee8[_0x1f39('0x2e')];if(_0x5c7c68[_0x1f39('0x2f')][_0x1f39('0x3f')]){_0x534261['include']=[{'all':!![]}];}_0x534261=_[_0x1f39('0x3b')]({},_0x534261,_0x5c7c68[_0x1f39('0x3d')]);return db[_0x1f39('0x3e')][_0x1f39('0x48')](_0x534261)[_0x1f39('0x25')](handleEntityNotFound(_0x3023ea,null))['then'](respondWithResult(_0x3023ea,null))[_0x1f39('0x43')](handleError(_0x3023ea,null));};exports[_0x1f39('0x49')]=function(_0x34d7fc,_0x3ecc23){return db['OpenchannelTransferReport']['create'](_0x34d7fc[_0x1f39('0x4a')],{})[_0x1f39('0x25')](respondWithResult(_0x3ecc23,0xc9))[_0x1f39('0x43')](handleError(_0x3ecc23,null));};exports[_0x1f39('0x24')]=function(_0xf2c3b7,_0x2c5dc5){if(_0xf2c3b7[_0x1f39('0x4a')]['id']){delete _0xf2c3b7[_0x1f39('0x4a')]['id'];}return db['OpenchannelTransferReport'][_0x1f39('0x48')]({'where':{'id':_0xf2c3b7[_0x1f39('0x44')]['id']}})[_0x1f39('0x25')](handleEntityNotFound(_0x2c5dc5,null))['then'](saveUpdates(_0xf2c3b7[_0x1f39('0x4a')],null))[_0x1f39('0x25')](respondWithResult(_0x2c5dc5,null))[_0x1f39('0x43')](handleError(_0x2c5dc5,null));};exports[_0x1f39('0x26')]=function(_0x259bb8,_0x5dfdcc){return db[_0x1f39('0x3e')][_0x1f39('0x48')]({'where':{'id':_0x259bb8['params']['id']}})[_0x1f39('0x25')](handleEntityNotFound(_0x5dfdcc,null))['then'](removeEntity(_0x5dfdcc,null))[_0x1f39('0x43')](handleError(_0x5dfdcc,null));};exports[_0x1f39('0x4b')]=function(_0x27d15f,_0x5d87f7){return db[_0x1f39('0x3e')][_0x1f39('0x4b')]()[_0x1f39('0x25')](respondWithResult(_0x5d87f7,null))[_0x1f39('0x43')](handleError(_0x5d87f7,null));};
\ No newline at end of file
index f8540a2..9a08a2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75c3=['exports','define','report_openchannel_transfer','uniqueid','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x22ff8a,_0x21f996){var _0x5a42b8=function(_0x12889a){while(--_0x12889a){_0x22ff8a['push'](_0x22ff8a['shift']());}};_0x5a42b8(++_0x21f996);}(_0x75c3,0xd0));var _0x375c=function(_0x16b26,_0x37c49a){_0x16b26=_0x16b26-0x0;var _0x11222a=_0x75c3[_0x16b26];return _0x11222a;};'use strict';var _=require(_0x375c('0x0'));var util=require(_0x375c('0x1'));var logger=require('../../config/logger')(_0x375c('0x2'));var moment=require(_0x375c('0x3'));var BPromise=require(_0x375c('0x4'));var rp=require(_0x375c('0x5'));var fs=require('fs');var path=require(_0x375c('0x6'));var rimraf=require('rimraf');var config=require(_0x375c('0x7'));var attributes=require('./openchannelTransferReport.attributes');module[_0x375c('0x8')]=function(_0x1d73ca,_0x57a4d4){return _0x1d73ca[_0x375c('0x9')]('OpenchannelTransferReport',attributes,{'tableName':_0x375c('0xa'),'paranoid':![],'indexes':[{'name':_0x375c('0xb'),'fields':[_0x375c('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1ca8=['exports','define','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes'];(function(_0x5c8944,_0x1395e1){var _0x28a01b=function(_0x396f34){while(--_0x396f34){_0x5c8944['push'](_0x5c8944['shift']());}};_0x28a01b(++_0x1395e1);}(_0x1ca8,0xfa));var _0x81ca=function(_0xc9396b,_0x734ceb){_0xc9396b=_0xc9396b-0x0;var _0x56d6ee=_0x1ca8[_0xc9396b];return _0x56d6ee;};'use strict';var _=require(_0x81ca('0x0'));var util=require('util');var logger=require(_0x81ca('0x1'))(_0x81ca('0x2'));var moment=require(_0x81ca('0x3'));var BPromise=require(_0x81ca('0x4'));var rp=require(_0x81ca('0x5'));var fs=require('fs');var path=require(_0x81ca('0x6'));var rimraf=require(_0x81ca('0x7'));var config=require(_0x81ca('0x8'));var attributes=require(_0x81ca('0x9'));module[_0x81ca('0xa')]=function(_0x2205e7,_0x100d37){return _0x2205e7[_0x81ca('0xb')]('OpenchannelTransferReport',attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x81ca('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 3d960bf..5ccbe97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd87=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x5a5365,_0x4a3c7f){var _0x2b1919=function(_0xaa73c8){while(--_0xaa73c8){_0x5a5365['push'](_0x5a5365['shift']());}};_0x2b1919(++_0x4a3c7f);}(_0xfd87,0x80));var _0x7fd8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfd87[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7fd8('0x0'));var util=require(_0x7fd8('0x1'));var moment=require(_0x7fd8('0x2'));var BPromise=require(_0x7fd8('0x3'));var rs=require(_0x7fd8('0x4'));var fs=require('fs');var Redis=require(_0x7fd8('0x5'));var db=require(_0x7fd8('0x6'))['db'];var utils=require(_0x7fd8('0x7'));var logger=require(_0x7fd8('0x8'))(_0x7fd8('0x9'));var config=require(_0x7fd8('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x7fd8('0xb')][_0x7fd8('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x55681d,_0x378037,_0x6eaf96){return new BPromise(function(_0x2e2d74,_0xbbee0f){return client[_0x7fd8('0xd')](_0x55681d,_0x6eaf96)['then'](function(_0x12c118){logger[_0x7fd8('0xe')](_0x7fd8('0xf'),_0x378037,'request\x20sent');logger['debug']('OpenchannelTransferReport,\x20%s,\x20%s,\x20%s',_0x378037,_0x7fd8('0x10'),JSON['stringify'](_0x12c118));if(_0x12c118[_0x7fd8('0x11')]){if(_0x12c118[_0x7fd8('0x11')][_0x7fd8('0x12')]===0x1f4){logger['error'](_0x7fd8('0xf'),_0x378037,_0x12c118[_0x7fd8('0x11')][_0x7fd8('0x13')]);return _0xbbee0f(_0x12c118[_0x7fd8('0x11')][_0x7fd8('0x13')]);}logger['error'](_0x7fd8('0xf'),_0x378037,_0x12c118[_0x7fd8('0x11')][_0x7fd8('0x13')]);return _0x2e2d74(_0x12c118[_0x7fd8('0x11')][_0x7fd8('0x13')]);}else{logger[_0x7fd8('0xe')](_0x7fd8('0xf'),_0x378037,_0x7fd8('0x10'));_0x2e2d74(_0x12c118[_0x7fd8('0x14')][_0x7fd8('0x13')]);}})[_0x7fd8('0x15')](function(_0x5837ef){logger['error']('OpenchannelTransferReport,\x20%s,\x20%s',_0x378037,_0x5837ef);_0xbbee0f(_0x5837ef);});});}
\ No newline at end of file
+var _0x1501=['util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','info','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','OpenchannelTransferReport,\x20%s,\x20%s','message','result','catch'];(function(_0x20e84d,_0x2f0b85){var _0x3c64c9=function(_0x385a6b){while(--_0x385a6b){_0x20e84d['push'](_0x20e84d['shift']());}};_0x3c64c9(++_0x2f0b85);}(_0x1501,0x126));var _0x1150=function(_0x25198d,_0x5e2bce){_0x25198d=_0x25198d-0x0;var _0x273fd2=_0x1501[_0x25198d];return _0x273fd2;};'use strict';var _=require('lodash');var util=require(_0x1150('0x0'));var moment=require(_0x1150('0x1'));var BPromise=require(_0x1150('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1150('0x3'));var db=require(_0x1150('0x4'))['db'];var utils=require(_0x1150('0x5'));var logger=require(_0x1150('0x6'))('rpc');var config=require(_0x1150('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x1150('0x8')][_0x1150('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2fc391,_0x131b49,_0x24340c){return new BPromise(function(_0x321d80,_0x2da67d){return client['request'](_0x2fc391,_0x24340c)['then'](function(_0x22d26c){logger[_0x1150('0xa')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x131b49,'request\x20sent');logger[_0x1150('0xb')](_0x1150('0xc'),_0x131b49,_0x1150('0xd'),JSON[_0x1150('0xe')](_0x22d26c));if(_0x22d26c['error']){if(_0x22d26c[_0x1150('0xf')][_0x1150('0x10')]===0x1f4){logger['error'](_0x1150('0x11'),_0x131b49,_0x22d26c['error'][_0x1150('0x12')]);return _0x2da67d(_0x22d26c[_0x1150('0xf')][_0x1150('0x12')]);}logger[_0x1150('0xf')](_0x1150('0x11'),_0x131b49,_0x22d26c[_0x1150('0xf')][_0x1150('0x12')]);return _0x321d80(_0x22d26c[_0x1150('0xf')]['message']);}else{logger['info'](_0x1150('0x11'),_0x131b49,_0x1150('0xd'));_0x321d80(_0x22d26c[_0x1150('0x13')][_0x1150('0x12')]);}})[_0x1150('0x14')](function(_0x1a8b62){logger[_0x1150('0xf')](_0x1150('0x11'),_0x131b49,_0x1a8b62);_0x2da67d(_0x1a8b62);});});}
\ No newline at end of file
index 332accf..3aa4183 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d5e=['path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','util'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3d5e,0x124));var _0xe3d5=function(_0x284796,_0x5dcd51){_0x284796=_0x284796-0x0;var _0x120355=_0x3d5e[_0x284796];return _0x120355;};'use strict';var multer=require(_0xe3d5('0x0'));var util=require(_0xe3d5('0x1'));var path=require(_0xe3d5('0x2'));var timeout=require(_0xe3d5('0x3'));var express=require(_0xe3d5('0x4'));var router=express['Router']();var fs_extra=require(_0xe3d5('0x5'));var auth=require(_0xe3d5('0x6'));var interaction=require(_0xe3d5('0x7'));var config=require(_0xe3d5('0x8'));var controller=require(_0xe3d5('0x9'));router[_0xe3d5('0xa')]('/',auth[_0xe3d5('0xb')](),controller[_0xe3d5('0xc')]);router['get'](_0xe3d5('0xd'),auth[_0xe3d5('0xb')](),controller[_0xe3d5('0xe')]);router[_0xe3d5('0xf')]('/',auth[_0xe3d5('0xb')](),controller[_0xe3d5('0x10')]);router[_0xe3d5('0x11')](_0xe3d5('0xd'),auth['isAuthenticated'](),controller['update']);router[_0xe3d5('0x12')]('/:id',auth['isAuthenticated'](),controller[_0xe3d5('0x13')]);module[_0xe3d5('0x14')]=router;
\ No newline at end of file
+var _0x38ac=['get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy','exports','multer','util','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller'];(function(_0x371895,_0x23230f){var _0x2479e6=function(_0x5b35b4){while(--_0x5b35b4){_0x371895['push'](_0x371895['shift']());}};_0x2479e6(++_0x23230f);}(_0x38ac,0x161));var _0xc38a=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x38ac[_0x46698a];return _0x356db0;};'use strict';var multer=require(_0xc38a('0x0'));var util=require(_0xc38a('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc38a('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xc38a('0x3'));var interaction=require(_0xc38a('0x4'));var config=require(_0xc38a('0x5'));var controller=require(_0xc38a('0x6'));router[_0xc38a('0x7')]('/',auth[_0xc38a('0x8')](),controller[_0xc38a('0x9')]);router[_0xc38a('0x7')](_0xc38a('0xa'),auth['isAuthenticated'](),controller[_0xc38a('0xb')]);router[_0xc38a('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0xc38a('0xd')](_0xc38a('0xa'),auth['isAuthenticated'](),controller[_0xc38a('0xe')]);router[_0xc38a('0xf')](_0xc38a('0xa'),auth[_0xc38a('0x8')](),controller[_0xc38a('0x10')]);module[_0xc38a('0x11')]=router;
\ No newline at end of file
index c72fff9..e4c5c68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8083=['name','STRING','exports'];(function(_0x144c39,_0x59cd78){var _0x4218cd=function(_0x33e4f9){while(--_0x33e4f9){_0x144c39['push'](_0x144c39['shift']());}};_0x4218cd(++_0x59cd78);}(_0x8083,0x116));var _0x3808=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x8083[_0x397e5f];return _0x5302b8;};'use strict';var Sequelize=require('sequelize');module[_0x3808('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x3808('0x1'),'allowNull':![]},'description':{'type':Sequelize[_0x3808('0x2')]}};
\ No newline at end of file
+var _0xe23d=['STRING','name','sequelize','exports'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xe23d,0xde));var _0xde23=function(_0x554a48,_0x33ab9a){_0x554a48=_0x554a48-0x0;var _0x21cfad=_0xe23d[_0x554a48];return _0x21cfad;};'use strict';var Sequelize=require(_0xde23('0x0'));module[_0xde23('0x1')]={'name':{'type':Sequelize[_0xde23('0x2')],'unique':_0xde23('0x3'),'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 21056db..cd1b833 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eb6=['undefined','count','set','Content-Range','json','apply','reject','then','destroy','get','Pauses','UserProfileResource','end','error','stack','send','map','rawAttributes','key','name','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','Pause','includeAll','include','rows','catch','show','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','lodash','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','../../mysqldb','sendStatus','status','offset','limit'];(function(_0x584e15,_0x1e558a){var _0x33222d=function(_0x563d59){while(--_0x563d59){_0x584e15['push'](_0x584e15['shift']());}};_0x33222d(++_0x1e558a);}(_0x5eb6,0xe0));var _0x65eb=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x5eb6[_0x46e363];return _0x3fb059;};'use strict';var emlformat=require(_0x65eb('0x0'));var rimraf=require(_0x65eb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x65eb('0x2'));var rp=require(_0x65eb('0x3'));var moment=require(_0x65eb('0x4'));var BPromise=require(_0x65eb('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x65eb('0x6'));var csv=require(_0x65eb('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x65eb('0x8'));var squel=require('squel');var crypto=require(_0x65eb('0x9'));var jsforce=require(_0x65eb('0xa'));var deskjs=require(_0x65eb('0xb'));var toCsv=require(_0x65eb('0x7'));var querystring=require('querystring');var Papa=require(_0x65eb('0xc'));var Redis=require(_0x65eb('0xd'));var authService=require(_0x65eb('0xe'));var qs=require(_0x65eb('0xf'));var as=require(_0x65eb('0x10'));var hardwareService=require(_0x65eb('0x11'));var logger=require(_0x65eb('0x12'))(_0x65eb('0x13'));var utils=require(_0x65eb('0x14'));var config=require(_0x65eb('0x15'));var licenseUtil=require(_0x65eb('0x16'));var db=require(_0x65eb('0x17'))['db'];function respondWithStatusCode(_0x23547d,_0x474866){_0x474866=_0x474866||0xcc;return function(_0x9322d3){if(_0x9322d3){return _0x23547d[_0x65eb('0x18')](_0x474866);}return _0x23547d[_0x65eb('0x19')](_0x474866)['end']();};}function respondWithResult(_0x185f57,_0x39bbed){_0x39bbed=_0x39bbed||0xc8;return function(_0x1e2893){if(_0x1e2893){return _0x185f57[_0x65eb('0x19')](_0x39bbed)['json'](_0x1e2893);}};}function respondWithFilteredResult(_0x5e7aec,_0x49af30){return function(_0xcfe13b){if(_0xcfe13b){var _0x5d9a77=typeof _0x49af30[_0x65eb('0x1a')]==='undefined'&&typeof _0x49af30[_0x65eb('0x1b')]===_0x65eb('0x1c');var _0x253f3f=_0xcfe13b[_0x65eb('0x1d')];var _0x14956a=_0x5d9a77?0x0:_0x49af30['offset'];var _0x6b0d2c=_0x5d9a77?_0xcfe13b[_0x65eb('0x1d')]:_0x49af30[_0x65eb('0x1a')]+_0x49af30['limit'];var _0x1955a0;if(_0x6b0d2c>=_0x253f3f){_0x6b0d2c=_0x253f3f;_0x1955a0=0xc8;}else{_0x1955a0=0xce;}_0x5e7aec[_0x65eb('0x19')](_0x1955a0);return _0x5e7aec[_0x65eb('0x1e')](_0x65eb('0x1f'),_0x14956a+'-'+_0x6b0d2c+'/'+_0x253f3f)[_0x65eb('0x20')](_0xcfe13b);}return null;};}function patchUpdates(_0x22059a){return function(_0x3921cf){try{jsonpatch[_0x65eb('0x21')](_0x3921cf,_0x22059a,!![]);}catch(_0x3e46af){return BPromise[_0x65eb('0x22')](_0x3e46af);}return _0x3921cf['save']();};}function saveUpdates(_0x117cf9,_0x26296b){return function(_0x139666){if(_0x139666){return _0x139666['update'](_0x117cf9)[_0x65eb('0x23')](function(_0x4c06f1){return _0x4c06f1;});}return null;};}function removeEntity(_0x266b42,_0x2a75a1){return function(_0x4e5d32){if(_0x4e5d32){return _0x4e5d32[_0x65eb('0x24')]()[_0x65eb('0x23')](function(){var _0x31b90f=_0x4e5d32[_0x65eb('0x25')]({'plain':!![]});var _0x5018ba=_0x65eb('0x26');return db[_0x65eb('0x27')][_0x65eb('0x24')]({'where':{'type':_0x5018ba,'resourceId':_0x31b90f['id']}})['then'](function(){return _0x4e5d32;});})['then'](function(){_0x266b42['status'](0xcc)[_0x65eb('0x28')]();});}};}function handleEntityNotFound(_0x55dc57,_0x9b346){return function(_0x48a65c){if(!_0x48a65c){_0x55dc57[_0x65eb('0x18')](0x194);}return _0x48a65c;};}function handleError(_0x553700,_0x16c30c){_0x16c30c=_0x16c30c||0x1f4;return function(_0x271b89){logger[_0x65eb('0x29')](_0x271b89[_0x65eb('0x2a')]);if(_0x271b89['name']){delete _0x271b89['name'];}_0x553700[_0x65eb('0x19')](_0x16c30c)[_0x65eb('0x2b')](_0x271b89);};}exports['index']=function(_0x2f0131,_0x324a67){var _0x384283={},_0x1d95f7={},_0x2fefa0={'count':0x0,'rows':[]};var _0x3ec5f3=_[_0x65eb('0x2c')](db['Pause'][_0x65eb('0x2d')],function(_0x157ff3){return{'name':_0x157ff3['fieldName'],'type':_0x157ff3['type'][_0x65eb('0x2e')]};});_0x1d95f7['model']=_[_0x65eb('0x2c')](_0x3ec5f3,_0x65eb('0x2f'));_0x1d95f7[_0x65eb('0x30')]=_[_0x65eb('0x31')](_0x2f0131[_0x65eb('0x30')]);_0x1d95f7[_0x65eb('0x32')]=_[_0x65eb('0x33')](_0x1d95f7[_0x65eb('0x34')],_0x1d95f7[_0x65eb('0x30')]);_0x384283[_0x65eb('0x35')]=_[_0x65eb('0x33')](_0x1d95f7['model'],qs[_0x65eb('0x36')](_0x2f0131[_0x65eb('0x30')]['fields']));_0x384283['attributes']=_0x384283['attributes'][_0x65eb('0x37')]?_0x384283[_0x65eb('0x35')]:_0x1d95f7[_0x65eb('0x34')];if(!_0x2f0131['query'][_0x65eb('0x38')](_0x65eb('0x39'))){_0x384283[_0x65eb('0x1b')]=qs['limit'](_0x2f0131[_0x65eb('0x30')][_0x65eb('0x1b')]);_0x384283[_0x65eb('0x1a')]=qs['offset'](_0x2f0131[_0x65eb('0x30')]['offset']);}_0x384283[_0x65eb('0x3a')]=qs[_0x65eb('0x3b')](_0x2f0131['query']['sort']);_0x384283['where']=qs[_0x65eb('0x32')](_[_0x65eb('0x3c')](_0x2f0131[_0x65eb('0x30')],_0x1d95f7[_0x65eb('0x32')]),_0x3ec5f3);if(_0x2f0131['query'][_0x65eb('0x3d')]){_0x384283[_0x65eb('0x3e')]=_[_0x65eb('0x3f')](_0x384283['where'],{'$or':_[_0x65eb('0x2c')](_0x3ec5f3,function(_0x30c623){if(_0x30c623['type']!==_0x65eb('0x40')){var _0x380971={};_0x380971[_0x30c623[_0x65eb('0x2f')]]={'$like':'%'+_0x2f0131[_0x65eb('0x30')][_0x65eb('0x3d')]+'%'};return _0x380971;}})});}_0x384283=_[_0x65eb('0x3f')]({},_0x384283,_0x2f0131[_0x65eb('0x41')]);var _0x5af027={'where':_0x384283[_0x65eb('0x3e')]};return db[_0x65eb('0x42')]['count'](_0x5af027)[_0x65eb('0x23')](function(_0x2a236f){_0x2fefa0[_0x65eb('0x1d')]=_0x2a236f;if(_0x2f0131[_0x65eb('0x30')][_0x65eb('0x43')]){_0x384283[_0x65eb('0x44')]=[{'all':!![]}];}return db[_0x65eb('0x42')]['findAll'](_0x384283);})[_0x65eb('0x23')](function(_0x42be07){_0x2fefa0[_0x65eb('0x45')]=_0x42be07;return _0x2fefa0;})[_0x65eb('0x23')](respondWithFilteredResult(_0x324a67,_0x384283))[_0x65eb('0x46')](handleError(_0x324a67,null));};exports[_0x65eb('0x47')]=function(_0x4094ed,_0x5cb507){var _0x38af9b={'raw':!![],'where':{'id':_0x4094ed['params']['id']}},_0x28b755={};_0x28b755[_0x65eb('0x34')]=_[_0x65eb('0x31')](db[_0x65eb('0x42')]['rawAttributes']);_0x28b755['query']=_[_0x65eb('0x31')](_0x4094ed[_0x65eb('0x30')]);_0x28b755[_0x65eb('0x32')]=_[_0x65eb('0x33')](_0x28b755['model'],_0x28b755[_0x65eb('0x30')]);_0x38af9b[_0x65eb('0x35')]=_[_0x65eb('0x33')](_0x28b755[_0x65eb('0x34')],qs[_0x65eb('0x36')](_0x4094ed[_0x65eb('0x30')]['fields']));_0x38af9b[_0x65eb('0x35')]=_0x38af9b[_0x65eb('0x35')]['length']?_0x38af9b['attributes']:_0x28b755[_0x65eb('0x34')];if(_0x4094ed[_0x65eb('0x30')][_0x65eb('0x43')]){_0x38af9b['include']=[{'all':!![]}];}_0x38af9b=_['merge']({},_0x38af9b,_0x4094ed[_0x65eb('0x41')]);return db[_0x65eb('0x42')]['find'](_0x38af9b)[_0x65eb('0x23')](handleEntityNotFound(_0x5cb507,null))[_0x65eb('0x23')](respondWithResult(_0x5cb507,null))[_0x65eb('0x46')](handleError(_0x5cb507,null));};exports[_0x65eb('0x48')]=function(_0x1ae6ba,_0x1875d3){return db['Pause']['create'](_0x1ae6ba[_0x65eb('0x49')],{})[_0x65eb('0x23')](function(_0x24d622){var _0x2b606b=_0x1ae6ba['user'][_0x65eb('0x25')]({'plain':!![]});if(!_0x2b606b)throw new Error(_0x65eb('0x4a'));if(_0x2b606b[_0x65eb('0x4b')]===_0x65eb('0x4c')){var _0x9d14a6=_0x24d622[_0x65eb('0x25')]({'plain':!![]});var _0x5cc171=_0x65eb('0x26');return db[_0x65eb('0x4d')][_0x65eb('0x4e')]({'where':{'name':_0x5cc171,'userProfileId':_0x2b606b[_0x65eb('0x4f')]},'raw':!![]})['then'](function(_0x35adec){if(_0x35adec&&_0x35adec[_0x65eb('0x50')]===0x0){return db[_0x65eb('0x27')]['create']({'name':_0x9d14a6[_0x65eb('0x2f')],'resourceId':_0x9d14a6['id'],'type':_0x35adec[_0x65eb('0x2f')],'sectionId':_0x35adec['id']},{})['then'](function(){return _0x24d622;});}else{return _0x24d622;}})['catch'](function(_0x3ba0c3){logger[_0x65eb('0x29')](_0x65eb('0x51'),_0x3ba0c3);throw _0x3ba0c3;});}return _0x24d622;})[_0x65eb('0x23')](respondWithResult(_0x1875d3,0xc9))['catch'](handleError(_0x1875d3,null));};exports[_0x65eb('0x52')]=function(_0x5ac1a8,_0x3833b5){if(_0x5ac1a8[_0x65eb('0x49')]['id']){delete _0x5ac1a8[_0x65eb('0x49')]['id'];}return db[_0x65eb('0x42')][_0x65eb('0x4e')]({'where':{'id':_0x5ac1a8[_0x65eb('0x53')]['id']}})[_0x65eb('0x23')](handleEntityNotFound(_0x3833b5,null))[_0x65eb('0x23')](saveUpdates(_0x5ac1a8[_0x65eb('0x49')],null))[_0x65eb('0x23')](respondWithResult(_0x3833b5,null))[_0x65eb('0x46')](handleError(_0x3833b5,null));};exports[_0x65eb('0x24')]=function(_0x4bf623,_0x1da9e1){return db['Pause'][_0x65eb('0x4e')]({'where':{'id':_0x4bf623[_0x65eb('0x53')]['id']}})['then'](handleEntityNotFound(_0x1da9e1,null))['then'](removeEntity(_0x1da9e1,null))['catch'](handleError(_0x1da9e1,null));};
\ No newline at end of file
+var _0x6676=['VIRTUAL','merge','options','Pause','includeAll','findAll','rows','catch','show','params','include','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','json','offset','undefined','count','limit','set','apply','reject','save','update','then','destroy','Pauses','UserProfileResource','status','sendStatus','error','stack','name','send','index','map','rawAttributes','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','filter','where'];(function(_0x18ea3f,_0x38eb7e){var _0x2171aa=function(_0x2c8fb8){while(--_0x2c8fb8){_0x18ea3f['push'](_0x18ea3f['shift']());}};_0x2171aa(++_0x38eb7e);}(_0x6676,0x70));var _0x6667=function(_0xf9c1c0,_0x13a640){_0xf9c1c0=_0xf9c1c0-0x0;var _0x4b257d=_0x6676[_0xf9c1c0];return _0x4b257d;};'use strict';var emlformat=require(_0x6667('0x0'));var rimraf=require(_0x6667('0x1'));var zipdir=require(_0x6667('0x2'));var jsonpatch=require(_0x6667('0x3'));var rp=require(_0x6667('0x4'));var moment=require('moment');var BPromise=require(_0x6667('0x5'));var Mustache=require(_0x6667('0x6'));var util=require(_0x6667('0x7'));var path=require(_0x6667('0x8'));var sox=require(_0x6667('0x9'));var csv=require(_0x6667('0xa'));var ejs=require(_0x6667('0xb'));var fs=require('fs');var fs_extra=require(_0x6667('0xc'));var _=require('lodash');var squel=require(_0x6667('0xd'));var crypto=require(_0x6667('0xe'));var jsforce=require(_0x6667('0xf'));var deskjs=require(_0x6667('0x10'));var toCsv=require(_0x6667('0xa'));var querystring=require(_0x6667('0x11'));var Papa=require('papaparse');var Redis=require(_0x6667('0x12'));var authService=require(_0x6667('0x13'));var qs=require(_0x6667('0x14'));var as=require(_0x6667('0x15'));var hardwareService=require(_0x6667('0x16'));var logger=require('../../config/logger')(_0x6667('0x17'));var utils=require(_0x6667('0x18'));var config=require(_0x6667('0x19'));var licenseUtil=require(_0x6667('0x1a'));var db=require(_0x6667('0x1b'))['db'];function respondWithStatusCode(_0x5ad86d,_0x4b02a6){_0x4b02a6=_0x4b02a6||0xcc;return function(_0x33d559){if(_0x33d559){return _0x5ad86d['sendStatus'](_0x4b02a6);}return _0x5ad86d['status'](_0x4b02a6)[_0x6667('0x1c')]();};}function respondWithResult(_0x134f4c,_0x150e21){_0x150e21=_0x150e21||0xc8;return function(_0x3f46e6){if(_0x3f46e6){return _0x134f4c['status'](_0x150e21)[_0x6667('0x1d')](_0x3f46e6);}};}function respondWithFilteredResult(_0x26b8db,_0x38787a){return function(_0x1de257){if(_0x1de257){var _0xafd713=typeof _0x38787a[_0x6667('0x1e')]===_0x6667('0x1f')&&typeof _0x38787a['limit']===_0x6667('0x1f');var _0x5605cf=_0x1de257[_0x6667('0x20')];var _0x224e3a=_0xafd713?0x0:_0x38787a[_0x6667('0x1e')];var _0x2d01c8=_0xafd713?_0x1de257[_0x6667('0x20')]:_0x38787a[_0x6667('0x1e')]+_0x38787a[_0x6667('0x21')];var _0x15b664;if(_0x2d01c8>=_0x5605cf){_0x2d01c8=_0x5605cf;_0x15b664=0xc8;}else{_0x15b664=0xce;}_0x26b8db['status'](_0x15b664);return _0x26b8db[_0x6667('0x22')]('Content-Range',_0x224e3a+'-'+_0x2d01c8+'/'+_0x5605cf)['json'](_0x1de257);}return null;};}function patchUpdates(_0x36913b){return function(_0x532f14){try{jsonpatch[_0x6667('0x23')](_0x532f14,_0x36913b,!![]);}catch(_0x367bb5){return BPromise[_0x6667('0x24')](_0x367bb5);}return _0x532f14[_0x6667('0x25')]();};}function saveUpdates(_0x4b7ed9,_0x4e6028){return function(_0x238184){if(_0x238184){return _0x238184[_0x6667('0x26')](_0x4b7ed9)[_0x6667('0x27')](function(_0x2477f2){return _0x2477f2;});}return null;};}function removeEntity(_0x3385c0,_0x45644d){return function(_0x53cbf3){if(_0x53cbf3){return _0x53cbf3[_0x6667('0x28')]()[_0x6667('0x27')](function(){var _0x4f0b13=_0x53cbf3['get']({'plain':!![]});var _0x4e6733=_0x6667('0x29');return db[_0x6667('0x2a')][_0x6667('0x28')]({'where':{'type':_0x4e6733,'resourceId':_0x4f0b13['id']}})[_0x6667('0x27')](function(){return _0x53cbf3;});})[_0x6667('0x27')](function(){_0x3385c0[_0x6667('0x2b')](0xcc)[_0x6667('0x1c')]();});}};}function handleEntityNotFound(_0x3d314d,_0xa8dbba){return function(_0x176ed2){if(!_0x176ed2){_0x3d314d[_0x6667('0x2c')](0x194);}return _0x176ed2;};}function handleError(_0x2de7a9,_0xd182a1){_0xd182a1=_0xd182a1||0x1f4;return function(_0x1cbd8a){logger[_0x6667('0x2d')](_0x1cbd8a[_0x6667('0x2e')]);if(_0x1cbd8a[_0x6667('0x2f')]){delete _0x1cbd8a[_0x6667('0x2f')];}_0x2de7a9[_0x6667('0x2b')](_0xd182a1)[_0x6667('0x30')](_0x1cbd8a);};}exports[_0x6667('0x31')]=function(_0x5cfe64,_0x43c8cc){var _0x34019d={},_0x13a600={},_0xb1990d={'count':0x0,'rows':[]};var _0x4c35a9=_[_0x6667('0x32')](db['Pause'][_0x6667('0x33')],function(_0x3af8fa){return{'name':_0x3af8fa['fieldName'],'type':_0x3af8fa[_0x6667('0x34')][_0x6667('0x35')]};});_0x13a600[_0x6667('0x36')]=_['map'](_0x4c35a9,_0x6667('0x2f'));_0x13a600['query']=_[_0x6667('0x37')](_0x5cfe64[_0x6667('0x38')]);_0x13a600[_0x6667('0x39')]=_['intersection'](_0x13a600[_0x6667('0x36')],_0x13a600[_0x6667('0x38')]);_0x34019d[_0x6667('0x3a')]=_[_0x6667('0x3b')](_0x13a600[_0x6667('0x36')],qs[_0x6667('0x3c')](_0x5cfe64[_0x6667('0x38')]['fields']));_0x34019d[_0x6667('0x3a')]=_0x34019d[_0x6667('0x3a')][_0x6667('0x3d')]?_0x34019d[_0x6667('0x3a')]:_0x13a600[_0x6667('0x36')];if(!_0x5cfe64[_0x6667('0x38')][_0x6667('0x3e')](_0x6667('0x3f'))){_0x34019d['limit']=qs['limit'](_0x5cfe64[_0x6667('0x38')][_0x6667('0x21')]);_0x34019d[_0x6667('0x1e')]=qs[_0x6667('0x1e')](_0x5cfe64['query'][_0x6667('0x1e')]);}_0x34019d[_0x6667('0x40')]=qs[_0x6667('0x41')](_0x5cfe64[_0x6667('0x38')][_0x6667('0x41')]);_0x34019d['where']=qs[_0x6667('0x39')](_['pick'](_0x5cfe64[_0x6667('0x38')],_0x13a600[_0x6667('0x39')]),_0x4c35a9);if(_0x5cfe64[_0x6667('0x38')][_0x6667('0x42')]){_0x34019d[_0x6667('0x43')]=_['merge'](_0x34019d['where'],{'$or':_[_0x6667('0x32')](_0x4c35a9,function(_0x5af641){if(_0x5af641[_0x6667('0x34')]!==_0x6667('0x44')){var _0x3f7e97={};_0x3f7e97[_0x5af641['name']]={'$like':'%'+_0x5cfe64['query'][_0x6667('0x42')]+'%'};return _0x3f7e97;}})});}_0x34019d=_[_0x6667('0x45')]({},_0x34019d,_0x5cfe64[_0x6667('0x46')]);var _0x26cfe7={'where':_0x34019d['where']};return db[_0x6667('0x47')][_0x6667('0x20')](_0x26cfe7)[_0x6667('0x27')](function(_0x30ed31){_0xb1990d[_0x6667('0x20')]=_0x30ed31;if(_0x5cfe64[_0x6667('0x38')][_0x6667('0x48')]){_0x34019d['include']=[{'all':!![]}];}return db[_0x6667('0x47')][_0x6667('0x49')](_0x34019d);})[_0x6667('0x27')](function(_0x580687){_0xb1990d[_0x6667('0x4a')]=_0x580687;return _0xb1990d;})[_0x6667('0x27')](respondWithFilteredResult(_0x43c8cc,_0x34019d))[_0x6667('0x4b')](handleError(_0x43c8cc,null));};exports[_0x6667('0x4c')]=function(_0x72cb81,_0xa2bd3e){var _0x5331e0={'raw':!![],'where':{'id':_0x72cb81[_0x6667('0x4d')]['id']}},_0x49b8fa={};_0x49b8fa[_0x6667('0x36')]=_[_0x6667('0x37')](db[_0x6667('0x47')][_0x6667('0x33')]);_0x49b8fa[_0x6667('0x38')]=_[_0x6667('0x37')](_0x72cb81['query']);_0x49b8fa[_0x6667('0x39')]=_['intersection'](_0x49b8fa['model'],_0x49b8fa[_0x6667('0x38')]);_0x5331e0[_0x6667('0x3a')]=_['intersection'](_0x49b8fa[_0x6667('0x36')],qs[_0x6667('0x3c')](_0x72cb81['query'][_0x6667('0x3c')]));_0x5331e0['attributes']=_0x5331e0[_0x6667('0x3a')]['length']?_0x5331e0[_0x6667('0x3a')]:_0x49b8fa[_0x6667('0x36')];if(_0x72cb81['query'][_0x6667('0x48')]){_0x5331e0[_0x6667('0x4e')]=[{'all':!![]}];}_0x5331e0=_['merge']({},_0x5331e0,_0x72cb81[_0x6667('0x46')]);return db[_0x6667('0x47')][_0x6667('0x4f')](_0x5331e0)[_0x6667('0x27')](handleEntityNotFound(_0xa2bd3e,null))['then'](respondWithResult(_0xa2bd3e,null))[_0x6667('0x4b')](handleError(_0xa2bd3e,null));};exports['create']=function(_0x4c19bf,_0x2f17c2){return db[_0x6667('0x47')][_0x6667('0x50')](_0x4c19bf['body'],{})[_0x6667('0x27')](function(_0x200cf9){var _0x48c26a=_0x4c19bf[_0x6667('0x51')][_0x6667('0x52')]({'plain':!![]});if(!_0x48c26a)throw new Error(_0x6667('0x53'));if(_0x48c26a[_0x6667('0x54')]===_0x6667('0x51')){var _0x59d0bf=_0x200cf9[_0x6667('0x52')]({'plain':!![]});var _0x4fb083=_0x6667('0x29');return db[_0x6667('0x55')][_0x6667('0x4f')]({'where':{'name':_0x4fb083,'userProfileId':_0x48c26a[_0x6667('0x56')]},'raw':!![]})['then'](function(_0x2b13c9){if(_0x2b13c9&&_0x2b13c9[_0x6667('0x57')]===0x0){return db['UserProfileResource'][_0x6667('0x50')]({'name':_0x59d0bf[_0x6667('0x2f')],'resourceId':_0x59d0bf['id'],'type':_0x2b13c9[_0x6667('0x2f')],'sectionId':_0x2b13c9['id']},{})[_0x6667('0x27')](function(){return _0x200cf9;});}else{return _0x200cf9;}})['catch'](function(_0x10982d){logger[_0x6667('0x2d')](_0x6667('0x58'),_0x10982d);throw _0x10982d;});}return _0x200cf9;})[_0x6667('0x27')](respondWithResult(_0x2f17c2,0xc9))[_0x6667('0x4b')](handleError(_0x2f17c2,null));};exports[_0x6667('0x26')]=function(_0x1936d6,_0x535cf6){if(_0x1936d6[_0x6667('0x59')]['id']){delete _0x1936d6[_0x6667('0x59')]['id'];}return db['Pause'][_0x6667('0x4f')]({'where':{'id':_0x1936d6[_0x6667('0x4d')]['id']}})['then'](handleEntityNotFound(_0x535cf6,null))['then'](saveUpdates(_0x1936d6[_0x6667('0x59')],null))['then'](respondWithResult(_0x535cf6,null))['catch'](handleError(_0x535cf6,null));};exports[_0x6667('0x28')]=function(_0x36b726,_0x2ecee8){return db['Pause'][_0x6667('0x4f')]({'where':{'id':_0x36b726['params']['id']}})[_0x6667('0x27')](handleEntityNotFound(_0x2ecee8,null))[_0x6667('0x27')](removeEntity(_0x2ecee8,null))[_0x6667('0x4b')](handleError(_0x2ecee8,null));};
\ No newline at end of file
index 818d49a..722ee12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['bluebird','../../config/environment','./pause.attributes','exports','define','Pause','tools_pauses','lodash','util','../../config/logger','api','moment'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0xc4aa[_0x1928c9];return _0x51b5fb;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var logger=require(_0xac4a('0x2'))(_0xac4a('0x3'));var moment=require(_0xac4a('0x4'));var BPromise=require(_0xac4a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac4a('0x6'));var attributes=require(_0xac4a('0x7'));module[_0xac4a('0x8')]=function(_0x215f39,_0x96be2b){return _0x215f39[_0xac4a('0x9')](_0xac4a('0xa'),attributes,{'tableName':_0xac4a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5fc3=['lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./pause.attributes','exports','define','tools_pauses'];(function(_0x9a5233,_0x3eea8e){var _0x8bb9be=function(_0x314d20){while(--_0x314d20){_0x9a5233['push'](_0x9a5233['shift']());}};_0x8bb9be(++_0x3eea8e);}(_0x5fc3,0xa8));var _0x35fc=function(_0x5608a3,_0x5b33c5){_0x5608a3=_0x5608a3-0x0;var _0x1ed50a=_0x5fc3[_0x5608a3];return _0x1ed50a;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var logger=require('../../config/logger')(_0x35fc('0x2'));var moment=require(_0x35fc('0x3'));var BPromise=require(_0x35fc('0x4'));var rp=require(_0x35fc('0x5'));var fs=require('fs');var path=require(_0x35fc('0x6'));var rimraf=require('rimraf');var config=require(_0x35fc('0x7'));var attributes=require(_0x35fc('0x8'));module[_0x35fc('0x9')]=function(_0x5b85ad,_0x5754be){return _0x5b85ad[_0x35fc('0xa')]('Pause',attributes,{'tableName':_0x35fc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6b412c8..e579433 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x48e95f,_0x300620){var _0x2b4a57=function(_0x1083ec){while(--_0x1083ec){_0x48e95f['push'](_0x48e95f['shift']());}};_0x2b4a57(++_0x300620);}(_0xb10b,0x12a));var _0xbb10=function(_0x1b1e76,_0x31695b){_0x1b1e76=_0x1b1e76-0x0;var _0x3d743a=_0xb10b[_0x1b1e76];return _0x3d743a;};'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
+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(_0xdcaf75,_0x221a51){var _0x41ec0d=function(_0x5c703b){while(--_0x5c703b){_0xdcaf75['push'](_0xdcaf75['shift']());}};_0x41ec0d(++_0x221a51);}(_0xb10b,0x12a));var _0xbb10=function(_0x5e1e25,_0xdc1421){_0x5e1e25=_0x5e1e25-0x0;var _0x548e5f=_0xb10b[_0x5e1e25];return _0x548e5f;};'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 5b3a0fb..816a850 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1f=['basename','originalname','now','extname','single','upload','post','webhookPost','put','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','/webhook','webhookGet','show','/:id/download','diskStorage','server/files/plugins','replace','format'];(function(_0x102968,_0x1c45bb){var _0x1f8a38=function(_0x30f2c8){while(--_0x30f2c8){_0x102968['push'](_0x102968['shift']());}};_0x1f8a38(++_0x1c45bb);}(_0xed1f,0x6a));var _0xfed1=function(_0x500419,_0x549162){_0x500419=_0x500419-0x0;var _0x241c1a=_0xed1f[_0x500419];return _0x241c1a;};'use strict';var multer=require(_0xfed1('0x0'));var util=require(_0xfed1('0x1'));var path=require(_0xfed1('0x2'));var timeout=require(_0xfed1('0x3'));var express=require(_0xfed1('0x4'));var router=express[_0xfed1('0x5')]();var fs_extra=require(_0xfed1('0x6'));var auth=require(_0xfed1('0x7'));var interaction=require(_0xfed1('0x8'));var config=require(_0xfed1('0x9'));var controller=require(_0xfed1('0xa'));router[_0xfed1('0xb')]('/',auth[_0xfed1('0xc')](),controller[_0xfed1('0xd')]);router[_0xfed1('0xb')](_0xfed1('0xe'),controller[_0xfed1('0xf')]);router[_0xfed1('0xb')]('/:id',auth[_0xfed1('0xc')](),controller[_0xfed1('0x10')]);router['get'](_0xfed1('0x11'),auth[_0xfed1('0xc')](),controller['download']);var upload=multer({'storage':multer[_0xfed1('0x12')]({'destination':function(_0x48c338,_0x1c3f40,_0x234f4e){_0x234f4e(null,path['join'](config['root'],_0xfed1('0x13')));},'filename':function(_0xe84ba6,_0x569a6e,_0x17f4fe){_0x569a6e['originalname']=_0x569a6e['originalname'][_0xfed1('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x17f4fe(null,util[_0xfed1('0x15')]('%s-%s%s',path[_0xfed1('0x16')](_0x569a6e['originalname'],path['extname'](_0x569a6e[_0xfed1('0x17')])),Date[_0xfed1('0x18')](),path[_0xfed1('0x19')](_0x569a6e[_0xfed1('0x17')])));}})});router['post']('/',upload[_0xfed1('0x1a')]('file'),controller[_0xfed1('0x1b')]);router[_0xfed1('0x1c')]('/webhook',controller[_0xfed1('0x1d')]);router[_0xfed1('0x1e')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0xfed1('0x1f')]('/:id',auth[_0xfed1('0xc')](),controller[_0xfed1('0x1f')]);module['exports']=router;
\ No newline at end of file
+var _0x17ba=['single','upload','put','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','isAuthenticated','index','/webhook','webhookGet','/:id','show','download','diskStorage','join','server/files/plugins','originalname','replace','format','basename','extname','post'];(function(_0xef646f,_0x44ad2f){var _0x202465=function(_0x788a16){while(--_0x788a16){_0xef646f['push'](_0xef646f['shift']());}};_0x202465(++_0x44ad2f);}(_0x17ba,0xab));var _0xa17b=function(_0x297d4f,_0x492d0a){_0x297d4f=_0x297d4f-0x0;var _0x1433c4=_0x17ba[_0x297d4f];return _0x1433c4;};'use strict';var multer=require(_0xa17b('0x0'));var util=require(_0xa17b('0x1'));var path=require('path');var timeout=require(_0xa17b('0x2'));var express=require(_0xa17b('0x3'));var router=express[_0xa17b('0x4')]();var fs_extra=require(_0xa17b('0x5'));var auth=require(_0xa17b('0x6'));var interaction=require(_0xa17b('0x7'));var config=require(_0xa17b('0x8'));var controller=require(_0xa17b('0x9'));router[_0xa17b('0xa')]('/',auth[_0xa17b('0xb')](),controller[_0xa17b('0xc')]);router[_0xa17b('0xa')](_0xa17b('0xd'),controller[_0xa17b('0xe')]);router[_0xa17b('0xa')](_0xa17b('0xf'),auth[_0xa17b('0xb')](),controller[_0xa17b('0x10')]);router[_0xa17b('0xa')]('/:id/download',auth[_0xa17b('0xb')](),controller[_0xa17b('0x11')]);var upload=multer({'storage':multer[_0xa17b('0x12')]({'destination':function(_0x1e799a,_0x140943,_0x4382df){_0x4382df(null,path[_0xa17b('0x13')](config['root'],_0xa17b('0x14')));},'filename':function(_0x3e92e4,_0x3c3a8a,_0x52b7aa){_0x3c3a8a[_0xa17b('0x15')]=_0x3c3a8a[_0xa17b('0x15')][_0xa17b('0x16')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x52b7aa(null,util[_0xa17b('0x17')]('%s-%s%s',path[_0xa17b('0x18')](_0x3c3a8a['originalname'],path[_0xa17b('0x19')](_0x3c3a8a[_0xa17b('0x15')])),Date['now'](),path[_0xa17b('0x19')](_0x3c3a8a[_0xa17b('0x15')])));}})});router[_0xa17b('0x1a')]('/',upload[_0xa17b('0x1b')]('file'),controller[_0xa17b('0x1c')]);router['post']('/webhook',controller['webhookPost']);router[_0xa17b('0x1d')](_0xa17b('0xf'),auth['isAuthenticated'](),controller[_0xa17b('0x1e')]);router[_0xa17b('0x1f')](_0xa17b('0xf'),auth[_0xa17b('0xb')](),controller[_0xa17b('0x1f')]);module[_0xa17b('0x20')]=router;
\ No newline at end of file
index f9d4903..5ed2e16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8ee=['STRING','ENUM','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','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'];(function(_0x505b9d,_0x14bcf4){var _0x491990=function(_0x4c544){while(--_0x4c544){_0x505b9d['push'](_0x505b9d['shift']());}};_0x491990(++_0x14bcf4);}(_0xf8ee,0xaf));var _0xef8e=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xf8ee[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0xef8e('0x0'));module['exports']={'name':{'type':Sequelize[_0xef8e('0x1')]},'type':{'type':Sequelize[_0xef8e('0x2')]('html','script')},'description':{'type':Sequelize[_0xef8e('0x3')]},'version':{'type':Sequelize[_0xef8e('0x3')]},'path':{'type':Sequelize[_0xef8e('0x1')],'comment':_0xef8e('0x4')},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xef8e('0x5')},'sidebar':{'type':Sequelize[_0xef8e('0x2')](_0xef8e('0x6'),_0xef8e('0x7'),_0xef8e('0x8'),_0xef8e('0x9')),'defaultValue':_0xef8e('0x8'),'comment':_0xef8e('0xa')},'icon':{'type':Sequelize['STRING']},'adminUrl':{'type':Sequelize[_0xef8e('0x1')]},'agentUrl':{'type':Sequelize[_0xef8e('0x1')]},'scriptName':{'type':Sequelize[_0xef8e('0x1')]},'scriptPath':{'type':Sequelize[_0xef8e('0x1')]}};
\ No newline at end of file
+var _0x8873=['BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always','never','sequelize','exports','STRING','ENUM','script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'];(function(_0x2576d7,_0x167624){var _0x16a08c=function(_0x19de1e){while(--_0x19de1e){_0x2576d7['push'](_0x2576d7['shift']());}};_0x16a08c(++_0x167624);}(_0x8873,0x165));var _0x3887=function(_0x562faf,_0x102bcc){_0x562faf=_0x562faf-0x0;var _0x22c1f6=_0x8873[_0x562faf];return _0x22c1f6;};'use strict';var Sequelize=require(_0x3887('0x0'));module[_0x3887('0x1')]={'name':{'type':Sequelize[_0x3887('0x2')]},'type':{'type':Sequelize[_0x3887('0x3')]('html',_0x3887('0x4'))},'description':{'type':Sequelize[_0x3887('0x5')]},'version':{'type':Sequelize['TEXT']},'path':{'type':Sequelize[_0x3887('0x2')],'comment':_0x3887('0x6')},'active':{'type':Sequelize[_0x3887('0x7')],'defaultValue':0x0,'comment':_0x3887('0x8')},'sidebar':{'type':Sequelize['ENUM'](_0x3887('0x9'),_0x3887('0xa'),_0x3887('0xb'),_0x3887('0xc')),'defaultValue':_0x3887('0xb'),'comment':'Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'},'icon':{'type':Sequelize[_0x3887('0x2')]},'adminUrl':{'type':Sequelize[_0x3887('0x2')]},'agentUrl':{'type':Sequelize['STRING']},'scriptName':{'type':Sequelize[_0x3887('0x2')]},'scriptPath':{'type':Sequelize[_0x3887('0x2')]}};
\ No newline at end of file
index 67ebe5c..677215b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bd1=['webhookGet','resolve','port','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','http://localhost:','json','encoding','headers','content-length','content-type','endsWith','statusCode','webhookPost','\x27PATH\x27\x20parameter\x20not\x20specified','method','%s%s','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','extract-zip','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','defaults','redis','localhost','./plugin.socket','sendStatus','status','end','offset','undefined','limit','count','set','apply','reject','save','then','destroy','get','Plugins','stack','map','Plugin','rawAttributes','fieldName','type','model','name','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','includeAll','find','download','server/files/plugins','%s.zip','basename','createWriteStream','warning','code','ENOENT','error','Sequelize','pipe','glob','**/*','join','root','dirname','node_modules/**/*','attachments/**/*','close','existsSync','Error','Plugin\x20not\x20found','format','Error\x20while\x20downloading\x20the\x20plugin','Download\x20completed','info','Temporary\x20file\x20removed','upload','file','extname','filename','Plugin\x20upload\x20filepath:\x20%s','chmodSync','0777','readdirSync','lstatSync','Invalid\x20plugin\x20structure','isDirectory','Plugin\x20manifest\x20missing','readFileSync','manifest.json','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','Invalid\x20manifest:\x20views\x20missing','views','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','html','admin','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','scriptPath','create','body','role','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','UserProfileResource','send','unlinkSync','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','update','delete'];(function(_0x96a4e7,_0x31a58b){var _0x22b657=function(_0xc813e0){while(--_0xc813e0){_0x96a4e7['push'](_0x96a4e7['shift']());}};_0x22b657(++_0x31a58b);}(_0x0bd1,0xc1));var _0x10bd=function(_0xd9f102,_0x5a0d28){_0xd9f102=_0xd9f102-0x0;var _0x2652e4=_0x0bd1[_0xd9f102];return _0x2652e4;};'use strict';var emlformat=require(_0x10bd('0x0'));var rimraf=require(_0x10bd('0x1'));var zipdir=require(_0x10bd('0x2'));var jsonpatch=require(_0x10bd('0x3'));var rp=require('request-promise');var moment=require(_0x10bd('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x10bd('0x5'));var util=require(_0x10bd('0x6'));var path=require(_0x10bd('0x7'));var sox=require(_0x10bd('0x8'));var csv=require(_0x10bd('0x9'));var ejs=require(_0x10bd('0xa'));var fs=require('fs');var fs_extra=require(_0x10bd('0xb'));var _=require(_0x10bd('0xc'));var squel=require(_0x10bd('0xd'));var crypto=require(_0x10bd('0xe'));var jsforce=require(_0x10bd('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x10bd('0x9'));var querystring=require(_0x10bd('0x10'));var Papa=require('papaparse');var extract=require(_0x10bd('0x11'));var rimraf=require(_0x10bd('0x1'));var archiver=require('archiver');var Redis=require(_0x10bd('0x12'));var authService=require(_0x10bd('0x13'));var qs=require(_0x10bd('0x14'));var as=require(_0x10bd('0x15'));var hardwareService=require(_0x10bd('0x16'));var logger=require(_0x10bd('0x17'))(_0x10bd('0x18'));var utils=require(_0x10bd('0x19'));var config=require(_0x10bd('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_[_0x10bd('0x1b')](config[_0x10bd('0x1c')],{'host':_0x10bd('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x10bd('0x1e'))['register'](socket);function respondWithStatusCode(_0x345910,_0x9b093e){_0x9b093e=_0x9b093e||0xcc;return function(_0x10d4ee){if(_0x10d4ee){return _0x345910[_0x10bd('0x1f')](_0x9b093e);}return _0x345910[_0x10bd('0x20')](_0x9b093e)[_0x10bd('0x21')]();};}function respondWithResult(_0xf669c3,_0x2273c6){_0x2273c6=_0x2273c6||0xc8;return function(_0x37506e){if(_0x37506e){return _0xf669c3[_0x10bd('0x20')](_0x2273c6)['json'](_0x37506e);}};}function respondWithFilteredResult(_0x98aa1f,_0x4ae07f){return function(_0x159542){if(_0x159542){var _0x4ff30c=typeof _0x4ae07f[_0x10bd('0x22')]===_0x10bd('0x23')&&typeof _0x4ae07f[_0x10bd('0x24')]===_0x10bd('0x23');var _0x5c2ebf=_0x159542[_0x10bd('0x25')];var _0x34b79c=_0x4ff30c?0x0:_0x4ae07f[_0x10bd('0x22')];var _0x1b9a95=_0x4ff30c?_0x159542[_0x10bd('0x25')]:_0x4ae07f[_0x10bd('0x22')]+_0x4ae07f[_0x10bd('0x24')];var _0x5518c3;if(_0x1b9a95>=_0x5c2ebf){_0x1b9a95=_0x5c2ebf;_0x5518c3=0xc8;}else{_0x5518c3=0xce;}_0x98aa1f['status'](_0x5518c3);return _0x98aa1f[_0x10bd('0x26')]('Content-Range',_0x34b79c+'-'+_0x1b9a95+'/'+_0x5c2ebf)['json'](_0x159542);}return null;};}function patchUpdates(_0x7883a5){return function(_0xdaae8e){try{jsonpatch[_0x10bd('0x27')](_0xdaae8e,_0x7883a5,!![]);}catch(_0x11c917){return BPromise[_0x10bd('0x28')](_0x11c917);}return _0xdaae8e[_0x10bd('0x29')]();};}function saveUpdates(_0x30a5cd,_0x40c1ac){return function(_0x3fe138){if(_0x3fe138){return _0x3fe138['update'](_0x30a5cd)[_0x10bd('0x2a')](function(_0x3dfde0){return _0x3dfde0;});}return null;};}function removeEntity(_0x31446e,_0x4ac25e){return function(_0x4c6fef){if(_0x4c6fef){return _0x4c6fef[_0x10bd('0x2b')]()[_0x10bd('0x2a')](function(){var _0x49ce9f=_0x4c6fef[_0x10bd('0x2c')]({'plain':!![]});var _0x585b8f=_0x10bd('0x2d');return db['UserProfileResource']['destroy']({'where':{'type':_0x585b8f,'resourceId':_0x49ce9f['id']}})['then'](function(){return _0x4c6fef;});})['then'](function(){_0x31446e[_0x10bd('0x20')](0xcc)[_0x10bd('0x21')]();});}};}function handleEntityNotFound(_0x530139,_0x13f83b){return function(_0x4059e2){if(!_0x4059e2){_0x530139[_0x10bd('0x1f')](0x194);}return _0x4059e2;};}function handleError(_0x25f282,_0x586cac){_0x586cac=_0x586cac||0x1f4;return function(_0x426965){logger['error'](_0x426965[_0x10bd('0x2e')]);if(_0x426965['name']){delete _0x426965['name'];}_0x25f282[_0x10bd('0x20')](_0x586cac)['send'](_0x426965);};}exports['index']=function(_0x12075f,_0x1558dc){var _0x5e779f={},_0x1b43ee={},_0x509848={'count':0x0,'rows':[]};var _0x40c494=_[_0x10bd('0x2f')](db[_0x10bd('0x30')][_0x10bd('0x31')],function(_0x5c26b8){return{'name':_0x5c26b8[_0x10bd('0x32')],'type':_0x5c26b8[_0x10bd('0x33')]['key']};});_0x1b43ee[_0x10bd('0x34')]=_[_0x10bd('0x2f')](_0x40c494,_0x10bd('0x35'));_0x1b43ee[_0x10bd('0x36')]=_[_0x10bd('0x37')](_0x12075f[_0x10bd('0x36')]);_0x1b43ee['filters']=_[_0x10bd('0x38')](_0x1b43ee['model'],_0x1b43ee[_0x10bd('0x36')]);_0x5e779f[_0x10bd('0x39')]=_[_0x10bd('0x38')](_0x1b43ee[_0x10bd('0x34')],qs[_0x10bd('0x3a')](_0x12075f['query'][_0x10bd('0x3a')]));_0x5e779f[_0x10bd('0x39')]=_0x5e779f['attributes'][_0x10bd('0x3b')]?_0x5e779f['attributes']:_0x1b43ee[_0x10bd('0x34')];if(!_0x12075f[_0x10bd('0x36')][_0x10bd('0x3c')]('nolimit')){_0x5e779f['limit']=qs[_0x10bd('0x24')](_0x12075f['query'][_0x10bd('0x24')]);_0x5e779f[_0x10bd('0x22')]=qs[_0x10bd('0x22')](_0x12075f[_0x10bd('0x36')][_0x10bd('0x22')]);}_0x5e779f[_0x10bd('0x3d')]=qs[_0x10bd('0x3e')](_0x12075f[_0x10bd('0x36')][_0x10bd('0x3e')]);_0x5e779f[_0x10bd('0x3f')]=qs[_0x10bd('0x40')](_[_0x10bd('0x41')](_0x12075f[_0x10bd('0x36')],_0x1b43ee['filters']),_0x40c494);if(_0x12075f[_0x10bd('0x36')]['filter']){_0x5e779f['where']=_[_0x10bd('0x42')](_0x5e779f[_0x10bd('0x3f')],{'$or':_[_0x10bd('0x2f')](_0x40c494,function(_0x48e7a9){if(_0x48e7a9[_0x10bd('0x33')]!==_0x10bd('0x43')){var _0xe2358c={};_0xe2358c[_0x48e7a9[_0x10bd('0x35')]]={'$like':'%'+_0x12075f[_0x10bd('0x36')][_0x10bd('0x44')]+'%'};return _0xe2358c;}})});}_0x5e779f=_[_0x10bd('0x42')]({},_0x5e779f,_0x12075f[_0x10bd('0x45')]);var _0xecf027={'where':_0x5e779f['where']};return db[_0x10bd('0x30')][_0x10bd('0x25')](_0xecf027)[_0x10bd('0x2a')](function(_0x7852c7){_0x509848[_0x10bd('0x25')]=_0x7852c7;if(_0x12075f[_0x10bd('0x36')]['includeAll']){_0x5e779f[_0x10bd('0x46')]=[{'all':!![]}];}return db[_0x10bd('0x30')][_0x10bd('0x47')](_0x5e779f);})['then'](function(_0x1789de){_0x509848[_0x10bd('0x48')]=_0x1789de;return _0x509848;})[_0x10bd('0x2a')](respondWithFilteredResult(_0x1558dc,_0x5e779f))[_0x10bd('0x49')](handleError(_0x1558dc,null));};exports[_0x10bd('0x4a')]=function(_0x24eedf,_0x9b7e71){var _0x441223={'raw':!![],'where':{'id':_0x24eedf[_0x10bd('0x4b')]['id']}},_0x59e57a={};_0x59e57a[_0x10bd('0x34')]=_[_0x10bd('0x37')](db[_0x10bd('0x30')][_0x10bd('0x31')]);_0x59e57a[_0x10bd('0x36')]=_[_0x10bd('0x37')](_0x24eedf[_0x10bd('0x36')]);_0x59e57a[_0x10bd('0x40')]=_[_0x10bd('0x38')](_0x59e57a[_0x10bd('0x34')],_0x59e57a[_0x10bd('0x36')]);_0x441223['attributes']=_[_0x10bd('0x38')](_0x59e57a[_0x10bd('0x34')],qs['fields'](_0x24eedf[_0x10bd('0x36')][_0x10bd('0x3a')]));_0x441223['attributes']=_0x441223[_0x10bd('0x39')][_0x10bd('0x3b')]?_0x441223[_0x10bd('0x39')]:_0x59e57a[_0x10bd('0x34')];if(_0x24eedf[_0x10bd('0x36')][_0x10bd('0x4c')]){_0x441223[_0x10bd('0x46')]=[{'all':!![]}];}_0x441223=_[_0x10bd('0x42')]({},_0x441223,_0x24eedf[_0x10bd('0x45')]);return db['Plugin'][_0x10bd('0x4d')](_0x441223)['then'](handleEntityNotFound(_0x9b7e71,null))[_0x10bd('0x2a')](respondWithResult(_0x9b7e71,null))[_0x10bd('0x49')](handleError(_0x9b7e71,null));};exports[_0x10bd('0x4e')]=function(_0x1382c0,_0x53d10f,_0xb7061c){return db['Plugin'][_0x10bd('0x4d')]({'where':{'id':_0x1382c0[_0x10bd('0x4b')]['id']},'attributes':[_0x10bd('0x35'),'path'],'raw':!![]})[_0x10bd('0x2a')](handleEntityNotFound(_0x53d10f,null))[_0x10bd('0x2a')](function(_0x38eca7){if(_0x38eca7){var _0x18c044=path['join'](config['root'],_0x10bd('0x4f'),util['format'](_0x10bd('0x50'),path[_0x10bd('0x51')](_0x38eca7['path'])));var _0xcbc382=fs[_0x10bd('0x52')](_0x18c044);var _0x354323=archiver('zip',{'zlib':{'level':0x9}});_0x354323['on'](_0x10bd('0x53'),function(_0x26abed){if(_0x26abed[_0x10bd('0x54')]===_0x10bd('0x55')){logger[_0x10bd('0x56')](_0x26abed);}else{throw new db[(_0x10bd('0x57'))]['Error']('Error\x20while\x20generating\x20the\x20zip\x20archive');}});_0x354323['on'](_0x10bd('0x56'),function(_0xfedd61){throw new db[(_0x10bd('0x57'))]['Error']('Error\x20while\x20generating\x20the\x20zip\x20archive');});_0x354323[_0x10bd('0x58')](_0xcbc382);_0x354323[_0x10bd('0x59')](_0x10bd('0x5a'),{'cwd':path[_0x10bd('0x5b')](config[_0x10bd('0x5c')],_0x10bd('0x4f'),path[_0x10bd('0x5d')](_0x38eca7[_0x10bd('0x7')])),'ignore':[path[_0x10bd('0x5b')](path[_0x10bd('0x51')](_0x38eca7['path']),_0x10bd('0x5e')),path[_0x10bd('0x5b')](path[_0x10bd('0x51')](_0x38eca7[_0x10bd('0x7')]),_0x10bd('0x5f'))],'nodir':!![]})['finalize']();_0xcbc382['on'](_0x10bd('0x60'),function(){if(!fs[_0x10bd('0x61')](_0x18c044)){throw new db['Sequelize'][(_0x10bd('0x62'))](_0x10bd('0x63'));}return _0x53d10f[_0x10bd('0x4e')](_0x18c044,util[_0x10bd('0x64')](_0x10bd('0x50'),path[_0x10bd('0x51')](_0x38eca7[_0x10bd('0x7')])),function(_0xc5e762){if(_0xc5e762){throw new db[(_0x10bd('0x57'))][(_0x10bd('0x62'))](_0x10bd('0x65'));}fs['unlinkSync'](_0x18c044);logger['info'](_0x10bd('0x66'));logger[_0x10bd('0x67')](_0x10bd('0x68'));});});}return null;})[_0x10bd('0x49')](handleError(_0x53d10f,null));};exports[_0x10bd('0x69')]=function(_0x3cc190,_0x8dc43d,_0x485720){var _0xadd980=path[_0x10bd('0x51')](_0x3cc190[_0x10bd('0x6a')]['filename'],path[_0x10bd('0x6b')](_0x3cc190[_0x10bd('0x6a')][_0x10bd('0x6c')]));var _0x147d3e=path['join'](config[_0x10bd('0x5c')],_0x10bd('0x4f'),_0x3cc190['file'][_0x10bd('0x6c')]);var _0x9d470e=path[_0x10bd('0x5b')](config['root'],_0x10bd('0x4f'),_0xadd980);logger[_0x10bd('0x67')](_0x10bd('0x6d'),_0x147d3e);logger[_0x10bd('0x67')]('Plugin\x20upload\x20destination:\x20%s',_0x9d470e);try{fs[_0x10bd('0x6e')](_0x147d3e,parseInt(_0x10bd('0x6f'),0x8));extract(_0x147d3e,{'dir':_0x9d470e},function(_0x265135){if(_0x265135){logger[_0x10bd('0x56')](_0x265135);handleError(_0x265135,!![]);};var _0x182826=fs[_0x10bd('0x70')](_0x9d470e);if(_0x182826[_0x10bd('0x3b')]>0x1){removeReferences(_0x147d3e,_0x9d470e);logger['error']('Invalid\x20plugin\x20structure');return _0x485720(new Error('Invalid\x20plugin\x20structure'));}var _0x50faf6=fs[_0x10bd('0x71')](path['join'](_0x9d470e,_0x182826[0x0]));if(_0x50faf6['isFile']()){removeReferences(_0x147d3e,_0x9d470e);logger['error'](_0x10bd('0x72'));return _0x485720(new Error(_0x10bd('0x72')));}if(_0x50faf6[_0x10bd('0x73')]()){var _0x4220fc=fs[_0x10bd('0x70')](path['join'](_0x9d470e,_0x182826[0x0]));if(_0x4220fc[_0x10bd('0x3b')]===0x0){removeReferences(_0x147d3e,_0x9d470e);logger[_0x10bd('0x56')](_0x10bd('0x72'));return _0x485720(new Error(_0x10bd('0x72')));}var _0x297c65=_0x4220fc['some'](function(_0x3cd3c5){return _0x3cd3c5==='manifest.json';});if(!_0x297c65){return _0x485720(new Error(_0x10bd('0x74')));}var _0x49ec34=fs[_0x10bd('0x75')](path[_0x10bd('0x5b')](_0x9d470e,_0x182826[0x0],_0x10bd('0x76')));var _0x4646f0=JSON[_0x10bd('0x77')](_0x49ec34);if(_0x10bd('0x23')==typeof _0x4646f0['name']){return _0x485720(new Error(_0x10bd('0x78')));}if(_0x10bd('0x23')==typeof _0x4646f0[_0x10bd('0x33')]){return _0x485720(new Error(_0x10bd('0x79')));}if(_0x10bd('0x23')==typeof _0x4646f0[_0x10bd('0x7a')]){return _0x485720(new Error(_0x10bd('0x7b')));}if('undefined'==typeof _0x4646f0[_0x10bd('0x7c')]){return _0x485720(new Error(_0x10bd('0x7d')));}if(_0x4646f0[_0x10bd('0x33')]==='html'){if(_0x10bd('0x23')==typeof _0x4646f0[_0x10bd('0x7c')]['views']){return _0x485720(new Error(_0x10bd('0x7e')));}if(_0x10bd('0x23')==typeof _0x4646f0[_0x10bd('0x7c')][_0x10bd('0x7f')]['admin']&&_0x10bd('0x23')==typeof _0x4646f0[_0x10bd('0x7c')][_0x10bd('0x7f')][_0x10bd('0x80')]){return _0x485720(new Error(_0x10bd('0x81')));}}else if(_0x4646f0[_0x10bd('0x33')]===_0x10bd('0x82')){if(_0x10bd('0x23')==typeof _0x4646f0[_0x10bd('0x7c')][_0x10bd('0x83')]){return _0x485720(new Error(_0x10bd('0x84')));}if(_0x10bd('0x23')==typeof _0x4646f0['parameters']['scriptPath']){return _0x485720(new Error(_0x10bd('0x85')));}}else{return _0x485720(new Error(_0x10bd('0x86')));}var _0x57f288=_0x4646f0[_0x10bd('0x35')];var _0x39c8d5=_0x4646f0[_0x10bd('0x87')];var _0x2fe4a2=_0x4646f0[_0x10bd('0x33')];var _0x224976=_0x4646f0['sidebar']?_0x4646f0[_0x10bd('0x88')]:_0x10bd('0x89');var _0x2029da=_0x4646f0[_0x10bd('0x8a')]?_0x4646f0['icon']:'icon-apps';var _0xdabaa4='';var _0x23e4d1='';var _0x4def8c='';var _0x44c2a4='';var _0x5837d3=_0x4646f0[_0x10bd('0x7a')];if(_0x2fe4a2===_0x10bd('0x8b')){if(_0x10bd('0x23')!=typeof _0x4646f0[_0x10bd('0x7c')][_0x10bd('0x7f')][_0x10bd('0x8c')]){var _0x5cef24=_0x4646f0[_0x10bd('0x7c')][_0x10bd('0x7f')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0x10bd('0x8d')](_0x5cef24)){_0xdabaa4=path[_0x10bd('0x5b')](_0x10bd('0x8e'),_0xadd980,_0x182826[0x0],_0x5cef24);}else{_0xdabaa4=_0x5cef24;}}else{logger['info'](_0x10bd('0x8f'));}if(_0x10bd('0x23')!=typeof _0x4646f0[_0x10bd('0x7c')]['views'][_0x10bd('0x80')]){var _0x5a4cd3=_0x4646f0[_0x10bd('0x7c')]['views'][_0x10bd('0x80')];if(!/^(f|ht)tps?:\/\//i[_0x10bd('0x8d')](_0x5a4cd3)){_0x23e4d1=path[_0x10bd('0x5b')](_0x10bd('0x8e'),_0xadd980,_0x182826[0x0],_0x5a4cd3);}else{_0x23e4d1=_0x5a4cd3;}}else{logger[_0x10bd('0x67')](_0x10bd('0x90'));}}else if(_0x2fe4a2==='script'){_0x4def8c=_0x4646f0[_0x10bd('0x7c')][_0x10bd('0x83')];_0x44c2a4=_0x4646f0[_0x10bd('0x7c')][_0x10bd('0x91')];if('undefined'!=typeof _0x4646f0[_0x10bd('0x7c')]['views']){if(_0x10bd('0x23')!=typeof _0x4646f0[_0x10bd('0x7c')]['views'][_0x10bd('0x8c')]){var _0x5cef24=_0x4646f0['parameters'][_0x10bd('0x7f')][_0x10bd('0x8c')];if(!/^(f|ht)tps?:\/\//i['test'](_0x5cef24)){_0xdabaa4=path['join'](_0x10bd('0x8e'),_0xadd980,_0x182826[0x0],_0x5cef24);}else{_0xdabaa4=_0x5cef24;}}if(_0x10bd('0x23')!=typeof _0x4646f0[_0x10bd('0x7c')][_0x10bd('0x7f')]['agent']){var _0x5a4cd3=_0x4646f0[_0x10bd('0x7c')][_0x10bd('0x7f')][_0x10bd('0x80')];if(!/^(f|ht)tps?:\/\//i['test'](_0x5a4cd3)){_0x23e4d1=path['join'](_0x10bd('0x8e'),_0xadd980,_0x182826[0x0],_0x5a4cd3);}else{_0x23e4d1=_0x5a4cd3;}}}}var _0xf98625={'name':_0x57f288,'description':_0x39c8d5,'path':path[_0x10bd('0x5b')](_0xadd980,_0x182826[0x0]),'type':_0x2fe4a2,'sidebar':_0x224976,'icon':_0x2029da,'adminUrl':_0xdabaa4,'agentUrl':_0x23e4d1,'scriptName':_0x4def8c,'scriptPath':_0x44c2a4,'version':_0x5837d3};removeReferences(_0x147d3e,null);return db[_0x10bd('0x30')][_0x10bd('0x92')](_0xf98625)[_0x10bd('0x2a')](function(_0x3708a5){var _0x5ae333={'role':_0x3cc190[_0x10bd('0x93')][_0x10bd('0x94')],'userProfileId':_0x3cc190[_0x10bd('0x93')]['userProfileId']};if(!_0x5ae333)throw new Error(_0x10bd('0x95'));if(_0x5ae333[_0x10bd('0x94')]==='user'){var _0x15678b=_0x3708a5[_0x10bd('0x2c')]({'plain':!![]});return db[_0x10bd('0x96')][_0x10bd('0x4d')]({'where':{'name':_0x10bd('0x2d'),'userProfileId':_0x5ae333['userProfileId']},'raw':!![]})[_0x10bd('0x2a')](function(_0x503f88){if(_0x503f88&&_0x503f88[_0x10bd('0x97')]===0x0){return db[_0x10bd('0x98')]['create']({'name':_0x15678b[_0x10bd('0x35')],'resourceId':_0x15678b['id'],'type':_0x503f88[_0x10bd('0x35')],'sectionId':_0x503f88['id']},{})[_0x10bd('0x2a')](function(){return _0x3708a5;});}else{return _0x3708a5;}})[_0x10bd('0x49')](function(_0xfb1eea){logger[_0x10bd('0x56')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xfb1eea);throw _0xfb1eea;});}return _0x3708a5;})[_0x10bd('0x2a')](respondWithResult(_0x8dc43d,null))[_0x10bd('0x49')](handleError(_0x8dc43d,null));}});}catch(_0x3029ce){_0x8dc43d[_0x10bd('0x20')](0x1f4)[_0x10bd('0x99')](_0x3029ce);}};function removeReferences(_0x903de8,_0x46f7f0){try{if(_0x903de8){fs[_0x10bd('0x9a')](_0x903de8);logger['info'](_0x10bd('0x9b'));}if(_0x46f7f0){rimraf(_0x46f7f0,function(){});logger['info'](_0x10bd('0x9c'));}}catch(_0xd2c694){logger[_0x10bd('0x56')](_0xd2c694);}}exports[_0x10bd('0x9d')]=function(_0x35820d,_0x9c1a80,_0x3a2da1){return db['Plugin']['find']({'where':{'id':_0x35820d[_0x10bd('0x4b')]['id']}})['then'](handleEntityNotFound(_0x9c1a80,null))[_0x10bd('0x2a')](saveUpdates(_0x35820d[_0x10bd('0x93')],null))[_0x10bd('0x2a')](respondWithResult(_0x9c1a80,null))[_0x10bd('0x49')](handleError(_0x9c1a80,null));};exports[_0x10bd('0x9e')]=function(_0x378b63,_0x2e944d,_0x55ace1){return db[_0x10bd('0x30')][_0x10bd('0x4d')]({'where':{'id':_0x378b63[_0x10bd('0x4b')]['id']}})[_0x10bd('0x2a')](function(_0x5e45ee){if(_0x5e45ee){return _0x5e45ee[_0x10bd('0x2b')]();}})['then'](function(_0x127903){rimraf(path['join'](config[_0x10bd('0x5c')],_0x10bd('0x4f'),path[_0x10bd('0x5d')](_0x127903[_0x10bd('0x7')])),function(){});return _0x127903;})[_0x10bd('0x2a')](handleEntityNotFound(_0x2e944d,null))[_0x10bd('0x2a')](respondWithStatusCode(_0x2e944d,null))[_0x10bd('0x49')](handleError(_0x2e944d,null));};exports[_0x10bd('0x9f')]=function(_0x2c0ee2,_0x3a134d,_0x589672){return BPromise[_0x10bd('0xa0')]()[_0x10bd('0x2a')](function(){if(!_0x2c0ee2[_0x10bd('0x36')][_0x10bd('0x7')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x2c0ee2[_0x10bd('0x36')][_0x10bd('0xa1')]){throw new Error(_0x10bd('0xa2'));}var _0x14d002=_0x2c0ee2[_0x10bd('0x36')][_0x10bd('0xa3')]?_0x2c0ee2['query'][_0x10bd('0xa3')]+':'+_0x2c0ee2['query'][_0x10bd('0xa1')]:_0x10bd('0xa4')+_0x2c0ee2[_0x10bd('0x36')][_0x10bd('0xa1')];var _0x42b1d9=_0x2c0ee2['query'][_0x10bd('0xa5')]?_0x2c0ee2[_0x10bd('0x36')][_0x10bd('0xa5')]:!![];var _0xd53bbc=_0x2c0ee2[_0x10bd('0x36')][_0x10bd('0xa6')]?_0x2c0ee2[_0x10bd('0x36')][_0x10bd('0xa6')]:null;var _0x17062a={'method':_0x2c0ee2['method'],'uri':util[_0x10bd('0x64')]('%s%s',_0x14d002,_0x2c0ee2[_0x10bd('0x36')][_0x10bd('0x7')]),'json':_0x42b1d9,'resolveWithFullResponse':!![],'encoding':_0xd53bbc,'qs':_0x2c0ee2[_0x10bd('0x36')]};if(_0x2c0ee2[_0x10bd('0xa7')]){_0x17062a[_0x10bd('0xa7')]=_0x2c0ee2['headers'];if(_0x17062a['headers'][_0x10bd('0xa8')]){delete _0x17062a[_0x10bd('0xa7')][_0x10bd('0xa8')];}}if(_0x17062a[_0x10bd('0xa7')]['content-type']){delete _0x17062a[_0x10bd('0xa7')][_0x10bd('0xa9')];}return rp(_0x17062a);})[_0x10bd('0x2a')](function(_0x56c437){if(_0x56c437){_0x3a134d[_0x10bd('0x26')](_0x56c437[_0x10bd('0xa7')]);logger['info'](_0x56c437['body']);if(_[_0x10bd('0xaa')](_0x2c0ee2[_0x10bd('0x36')][_0x10bd('0x7')],_0x10bd('0x4e'))&&_0x56c437[_0x10bd('0xab')]==0x1f4){return _0x3a134d[_0x10bd('0x1f')](_0x56c437[_0x10bd('0xab')]);}else{return _0x3a134d['status'](_0x56c437[_0x10bd('0xab')])['send'](_0x56c437[_0x10bd('0x93')]);}}else{return _0x3a134d[_0x10bd('0x1f')](0xc8);}})[_0x10bd('0x49')](handleError(_0x3a134d,null));};exports[_0x10bd('0xac')]=function(_0x53311e,_0x1f6f62,_0x509c56){return BPromise['resolve']()['then'](function(){if(!_0x53311e[_0x10bd('0x36')][_0x10bd('0x7')]){throw new Error(_0x10bd('0xad'));}if(!_0x53311e['query'][_0x10bd('0xa1')]){throw new Error(_0x10bd('0xa2'));}var _0xb60b3b=_0x53311e[_0x10bd('0x36')]['hostname']?_0x53311e[_0x10bd('0x36')][_0x10bd('0xa3')]+':'+_0x53311e[_0x10bd('0x36')][_0x10bd('0xa1')]:_0x10bd('0xa4')+_0x53311e[_0x10bd('0x36')]['port'];var _0x581ba6=_0x53311e['query']['json']?_0x53311e[_0x10bd('0x36')][_0x10bd('0xa5')]:!![];var _0x1a6e96=_0x53311e[_0x10bd('0x36')][_0x10bd('0xa6')]?_0x53311e['query'][_0x10bd('0xa6')]:null;var _0x2c5a5a={'method':_0x53311e[_0x10bd('0xae')],'uri':util[_0x10bd('0x64')](_0x10bd('0xaf'),_0xb60b3b,_0x53311e[_0x10bd('0x36')]['path']),'json':_0x581ba6,'resolveWithFullResponse':!![],'encoding':_0x1a6e96,'body':_0x53311e[_0x10bd('0x93')]};if(_0x53311e[_0x10bd('0xa7')]){_0x2c5a5a[_0x10bd('0xa7')]=_0x53311e['headers'];if(_0x2c5a5a['headers']['content-length']){delete _0x2c5a5a[_0x10bd('0xa7')][_0x10bd('0xa8')];}}if(_0x2c5a5a['headers'][_0x10bd('0xa9')]){delete _0x2c5a5a['headers'][_0x10bd('0xa9')];}return rp(_0x2c5a5a);})['then'](function(_0x3da84e){if(_0x3da84e){_0x1f6f62[_0x10bd('0x26')](_0x3da84e[_0x10bd('0xa7')]);logger[_0x10bd('0x67')](_0x3da84e[_0x10bd('0x93')]);return _0x1f6f62['status'](_0x3da84e[_0x10bd('0xab')])[_0x10bd('0x99')](_0x3da84e['body']);}else{return _0x1f6f62[_0x10bd('0x1f')](0xc8);}})[_0x10bd('0x49')](handleError(_0x1f6f62,null));};
\ No newline at end of file
+var _0xfaf8=['save','update','then','destroy','get','Plugins','UserProfileResource','end','error','stack','name','send','map','fieldName','type','key','model','query','keys','intersection','attributes','length','hasOwnProperty','nolimit','where','filters','pick','filter','merge','options','Plugin','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','download','join','root','server/files/plugins','format','%s.zip','basename','createWriteStream','warning','ENOENT','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','dirname','node_modules/**/*','attachments/**/*','finalize','close','Error','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','filename','extname','file','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','Plugin\x20manifest\x20missing','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','html','views','Invalid\x20manifest:\x20views\x20missing','admin','parameters','agent','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','sidebar','icon','plugins','Warning:\x20admin\x20view\x20not\x20specified','test','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','\x27PORT\x27\x20parameter\x20not\x20specified','port','json','%s%s','headers','content-length','content-type','endsWith','statusCode','webhookPost','hostname','http://localhost:','encoding','method','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','archiver','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./plugin.socket','register','sendStatus','status','offset','undefined','limit','count','set','Content-Range'];(function(_0x11e86e,_0x14c0c9){var _0x1fd374=function(_0x1bf41d){while(--_0x1bf41d){_0x11e86e['push'](_0x11e86e['shift']());}};_0x1fd374(++_0x14c0c9);}(_0xfaf8,0x123));var _0x8faf=function(_0x5267a2,_0x5f2750){_0x5267a2=_0x5267a2-0x0;var _0x122b96=_0xfaf8[_0x5267a2];return _0x122b96;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8faf('0x0'));var zipdir=require(_0x8faf('0x1'));var jsonpatch=require(_0x8faf('0x2'));var rp=require('request-promise');var moment=require(_0x8faf('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8faf('0x4'));var util=require(_0x8faf('0x5'));var path=require(_0x8faf('0x6'));var sox=require(_0x8faf('0x7'));var csv=require(_0x8faf('0x8'));var ejs=require(_0x8faf('0x9'));var fs=require('fs');var fs_extra=require(_0x8faf('0xa'));var _=require(_0x8faf('0xb'));var squel=require(_0x8faf('0xc'));var crypto=require(_0x8faf('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x8faf('0xe'));var toCsv=require(_0x8faf('0x8'));var querystring=require('querystring');var Papa=require(_0x8faf('0xf'));var extract=require('extract-zip');var rimraf=require('rimraf');var archiver=require(_0x8faf('0x10'));var Redis=require('ioredis');var authService=require(_0x8faf('0x11'));var qs=require(_0x8faf('0x12'));var as=require(_0x8faf('0x13'));var hardwareService=require(_0x8faf('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x8faf('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x8faf('0x16'));var db=require(_0x8faf('0x17'))['db'];config[_0x8faf('0x18')]=_['defaults'](config[_0x8faf('0x18')],{'host':_0x8faf('0x19'),'port':0x18eb});var socket=require(_0x8faf('0x1a'))(new Redis(config[_0x8faf('0x18')]));require(_0x8faf('0x1b'))[_0x8faf('0x1c')](socket);function respondWithStatusCode(_0x1e0146,_0x1785fa){_0x1785fa=_0x1785fa||0xcc;return function(_0x45e20c){if(_0x45e20c){return _0x1e0146[_0x8faf('0x1d')](_0x1785fa);}return _0x1e0146[_0x8faf('0x1e')](_0x1785fa)['end']();};}function respondWithResult(_0x44b6a8,_0x19ec43){_0x19ec43=_0x19ec43||0xc8;return function(_0xacb67){if(_0xacb67){return _0x44b6a8['status'](_0x19ec43)['json'](_0xacb67);}};}function respondWithFilteredResult(_0x163564,_0x4389ff){return function(_0x53f048){if(_0x53f048){var _0x2e85a9=typeof _0x4389ff[_0x8faf('0x1f')]===_0x8faf('0x20')&&typeof _0x4389ff[_0x8faf('0x21')]===_0x8faf('0x20');var _0x2a9a5c=_0x53f048[_0x8faf('0x22')];var _0x13921b=_0x2e85a9?0x0:_0x4389ff[_0x8faf('0x1f')];var _0x6bcd47=_0x2e85a9?_0x53f048[_0x8faf('0x22')]:_0x4389ff[_0x8faf('0x1f')]+_0x4389ff[_0x8faf('0x21')];var _0x522c59;if(_0x6bcd47>=_0x2a9a5c){_0x6bcd47=_0x2a9a5c;_0x522c59=0xc8;}else{_0x522c59=0xce;}_0x163564['status'](_0x522c59);return _0x163564[_0x8faf('0x23')](_0x8faf('0x24'),_0x13921b+'-'+_0x6bcd47+'/'+_0x2a9a5c)['json'](_0x53f048);}return null;};}function patchUpdates(_0x4aade5){return function(_0x253417){try{jsonpatch['apply'](_0x253417,_0x4aade5,!![]);}catch(_0x2612c8){return BPromise['reject'](_0x2612c8);}return _0x253417[_0x8faf('0x25')]();};}function saveUpdates(_0xc41c05,_0x584cd3){return function(_0x48be92){if(_0x48be92){return _0x48be92[_0x8faf('0x26')](_0xc41c05)[_0x8faf('0x27')](function(_0x3ba8af){return _0x3ba8af;});}return null;};}function removeEntity(_0x20807a,_0x5505c4){return function(_0x19d3e3){if(_0x19d3e3){return _0x19d3e3[_0x8faf('0x28')]()['then'](function(){var _0x2d6c73=_0x19d3e3[_0x8faf('0x29')]({'plain':!![]});var _0x366f69=_0x8faf('0x2a');return db[_0x8faf('0x2b')][_0x8faf('0x28')]({'where':{'type':_0x366f69,'resourceId':_0x2d6c73['id']}})[_0x8faf('0x27')](function(){return _0x19d3e3;});})[_0x8faf('0x27')](function(){_0x20807a[_0x8faf('0x1e')](0xcc)[_0x8faf('0x2c')]();});}};}function handleEntityNotFound(_0x5294d3,_0x3c0d93){return function(_0xd0e6d6){if(!_0xd0e6d6){_0x5294d3[_0x8faf('0x1d')](0x194);}return _0xd0e6d6;};}function handleError(_0x50b82f,_0x4c9aa4){_0x4c9aa4=_0x4c9aa4||0x1f4;return function(_0x3818b5){logger[_0x8faf('0x2d')](_0x3818b5[_0x8faf('0x2e')]);if(_0x3818b5[_0x8faf('0x2f')]){delete _0x3818b5[_0x8faf('0x2f')];}_0x50b82f['status'](_0x4c9aa4)[_0x8faf('0x30')](_0x3818b5);};}exports['index']=function(_0x2b59ad,_0x5cb7ed){var _0x38588a={},_0x506974={},_0x50f8f3={'count':0x0,'rows':[]};var _0x2b787e=_[_0x8faf('0x31')](db['Plugin']['rawAttributes'],function(_0x240bff){return{'name':_0x240bff[_0x8faf('0x32')],'type':_0x240bff[_0x8faf('0x33')][_0x8faf('0x34')]};});_0x506974[_0x8faf('0x35')]=_['map'](_0x2b787e,'name');_0x506974[_0x8faf('0x36')]=_[_0x8faf('0x37')](_0x2b59ad[_0x8faf('0x36')]);_0x506974['filters']=_[_0x8faf('0x38')](_0x506974['model'],_0x506974['query']);_0x38588a[_0x8faf('0x39')]=_[_0x8faf('0x38')](_0x506974[_0x8faf('0x35')],qs['fields'](_0x2b59ad[_0x8faf('0x36')]['fields']));_0x38588a[_0x8faf('0x39')]=_0x38588a[_0x8faf('0x39')][_0x8faf('0x3a')]?_0x38588a[_0x8faf('0x39')]:_0x506974[_0x8faf('0x35')];if(!_0x2b59ad[_0x8faf('0x36')][_0x8faf('0x3b')](_0x8faf('0x3c'))){_0x38588a[_0x8faf('0x21')]=qs[_0x8faf('0x21')](_0x2b59ad['query']['limit']);_0x38588a['offset']=qs[_0x8faf('0x1f')](_0x2b59ad[_0x8faf('0x36')][_0x8faf('0x1f')]);}_0x38588a['order']=qs['sort'](_0x2b59ad[_0x8faf('0x36')]['sort']);_0x38588a[_0x8faf('0x3d')]=qs[_0x8faf('0x3e')](_[_0x8faf('0x3f')](_0x2b59ad[_0x8faf('0x36')],_0x506974['filters']),_0x2b787e);if(_0x2b59ad[_0x8faf('0x36')][_0x8faf('0x40')]){_0x38588a[_0x8faf('0x3d')]=_[_0x8faf('0x41')](_0x38588a[_0x8faf('0x3d')],{'$or':_['map'](_0x2b787e,function(_0x2b0bd8){if(_0x2b0bd8['type']!=='VIRTUAL'){var _0x46fdff={};_0x46fdff[_0x2b0bd8[_0x8faf('0x2f')]]={'$like':'%'+_0x2b59ad[_0x8faf('0x36')][_0x8faf('0x40')]+'%'};return _0x46fdff;}})});}_0x38588a=_[_0x8faf('0x41')]({},_0x38588a,_0x2b59ad[_0x8faf('0x42')]);var _0x4a0bf3={'where':_0x38588a[_0x8faf('0x3d')]};return db[_0x8faf('0x43')][_0x8faf('0x22')](_0x4a0bf3)['then'](function(_0x2e0248){_0x50f8f3['count']=_0x2e0248;if(_0x2b59ad[_0x8faf('0x36')][_0x8faf('0x44')]){_0x38588a[_0x8faf('0x45')]=[{'all':!![]}];}return db[_0x8faf('0x43')][_0x8faf('0x46')](_0x38588a);})[_0x8faf('0x27')](function(_0x2a7660){_0x50f8f3[_0x8faf('0x47')]=_0x2a7660;return _0x50f8f3;})['then'](respondWithFilteredResult(_0x5cb7ed,_0x38588a))[_0x8faf('0x48')](handleError(_0x5cb7ed,null));};exports[_0x8faf('0x49')]=function(_0x1423f2,_0x3fd63e){var _0x545702={'raw':!![],'where':{'id':_0x1423f2[_0x8faf('0x4a')]['id']}},_0x155e57={};_0x155e57[_0x8faf('0x35')]=_['keys'](db[_0x8faf('0x43')][_0x8faf('0x4b')]);_0x155e57[_0x8faf('0x36')]=_[_0x8faf('0x37')](_0x1423f2[_0x8faf('0x36')]);_0x155e57[_0x8faf('0x3e')]=_['intersection'](_0x155e57[_0x8faf('0x35')],_0x155e57['query']);_0x545702[_0x8faf('0x39')]=_[_0x8faf('0x38')](_0x155e57[_0x8faf('0x35')],qs['fields'](_0x1423f2[_0x8faf('0x36')]['fields']));_0x545702['attributes']=_0x545702['attributes'][_0x8faf('0x3a')]?_0x545702['attributes']:_0x155e57[_0x8faf('0x35')];if(_0x1423f2['query'][_0x8faf('0x44')]){_0x545702['include']=[{'all':!![]}];}_0x545702=_[_0x8faf('0x41')]({},_0x545702,_0x1423f2['options']);return db[_0x8faf('0x43')][_0x8faf('0x4c')](_0x545702)[_0x8faf('0x27')](handleEntityNotFound(_0x3fd63e,null))[_0x8faf('0x27')](respondWithResult(_0x3fd63e,null))[_0x8faf('0x48')](handleError(_0x3fd63e,null));};exports[_0x8faf('0x4d')]=function(_0x2fe0ac,_0x3239e0,_0x434a5e){return db[_0x8faf('0x43')][_0x8faf('0x4c')]({'where':{'id':_0x2fe0ac[_0x8faf('0x4a')]['id']},'attributes':[_0x8faf('0x2f'),'path'],'raw':!![]})['then'](handleEntityNotFound(_0x3239e0,null))[_0x8faf('0x27')](function(_0x44cfea){if(_0x44cfea){var _0x423226=path[_0x8faf('0x4e')](config[_0x8faf('0x4f')],_0x8faf('0x50'),util[_0x8faf('0x51')](_0x8faf('0x52'),path[_0x8faf('0x53')](_0x44cfea['path'])));var _0x2c64e5=fs[_0x8faf('0x54')](_0x423226);var _0x420421=archiver('zip',{'zlib':{'level':0x9}});_0x420421['on'](_0x8faf('0x55'),function(_0x3f3ec0){if(_0x3f3ec0['code']===_0x8faf('0x56')){logger[_0x8faf('0x2d')](_0x3f3ec0);}else{throw new db[(_0x8faf('0x57'))]['Error']('Error\x20while\x20generating\x20the\x20zip\x20archive');}});_0x420421['on'](_0x8faf('0x2d'),function(_0x376d6d){throw new db[(_0x8faf('0x57'))]['Error'](_0x8faf('0x58'));});_0x420421[_0x8faf('0x59')](_0x2c64e5);_0x420421[_0x8faf('0x5a')](_0x8faf('0x5b'),{'cwd':path['join'](config[_0x8faf('0x4f')],'server/files/plugins',path[_0x8faf('0x5c')](_0x44cfea['path'])),'ignore':[path[_0x8faf('0x4e')](path[_0x8faf('0x53')](_0x44cfea['path']),_0x8faf('0x5d')),path[_0x8faf('0x4e')](path[_0x8faf('0x53')](_0x44cfea[_0x8faf('0x6')]),_0x8faf('0x5e'))],'nodir':!![]})[_0x8faf('0x5f')]();_0x2c64e5['on'](_0x8faf('0x60'),function(){if(!fs['existsSync'](_0x423226)){throw new db[(_0x8faf('0x57'))][(_0x8faf('0x61'))]('Plugin\x20not\x20found');}return _0x3239e0[_0x8faf('0x4d')](_0x423226,util[_0x8faf('0x51')]('%s.zip',path[_0x8faf('0x53')](_0x44cfea['path'])),function(_0x4cd8ae){if(_0x4cd8ae){throw new db['Sequelize'][(_0x8faf('0x61'))](_0x8faf('0x62'));}fs[_0x8faf('0x63')](_0x423226);logger[_0x8faf('0x64')](_0x8faf('0x65'));logger[_0x8faf('0x64')](_0x8faf('0x66'));});});}return null;})['catch'](handleError(_0x3239e0,null));};exports['upload']=function(_0x49b392,_0x228d1e,_0x38ec79){var _0xf0cfbd=path[_0x8faf('0x53')](_0x49b392['file'][_0x8faf('0x67')],path[_0x8faf('0x68')](_0x49b392[_0x8faf('0x69')][_0x8faf('0x67')]));var _0x53a9c6=path['join'](config[_0x8faf('0x4f')],_0x8faf('0x50'),_0x49b392[_0x8faf('0x69')][_0x8faf('0x67')]);var _0x4bf4aa=path[_0x8faf('0x4e')](config[_0x8faf('0x4f')],_0x8faf('0x50'),_0xf0cfbd);logger[_0x8faf('0x64')](_0x8faf('0x6a'),_0x53a9c6);logger[_0x8faf('0x64')](_0x8faf('0x6b'),_0x4bf4aa);try{fs[_0x8faf('0x6c')](_0x53a9c6,parseInt(_0x8faf('0x6d'),0x8));extract(_0x53a9c6,{'dir':_0x4bf4aa},function(_0x281d6d){if(_0x281d6d){logger[_0x8faf('0x2d')](_0x281d6d);handleError(_0x281d6d,!![]);};var _0x4a28d7=fs[_0x8faf('0x6e')](_0x4bf4aa);if(_0x4a28d7[_0x8faf('0x3a')]>0x1){removeReferences(_0x53a9c6,_0x4bf4aa);logger[_0x8faf('0x2d')](_0x8faf('0x6f'));return _0x38ec79(new Error(_0x8faf('0x6f')));}var _0x496455=fs[_0x8faf('0x70')](path['join'](_0x4bf4aa,_0x4a28d7[0x0]));if(_0x496455[_0x8faf('0x71')]()){removeReferences(_0x53a9c6,_0x4bf4aa);logger[_0x8faf('0x2d')](_0x8faf('0x6f'));return _0x38ec79(new Error(_0x8faf('0x6f')));}if(_0x496455[_0x8faf('0x72')]()){var _0x387b05=fs[_0x8faf('0x6e')](path['join'](_0x4bf4aa,_0x4a28d7[0x0]));if(_0x387b05[_0x8faf('0x3a')]===0x0){removeReferences(_0x53a9c6,_0x4bf4aa);logger[_0x8faf('0x2d')](_0x8faf('0x6f'));return _0x38ec79(new Error(_0x8faf('0x6f')));}var _0x130acf=_0x387b05[_0x8faf('0x73')](function(_0x265ae5){return _0x265ae5==='manifest.json';});if(!_0x130acf){return _0x38ec79(new Error(_0x8faf('0x74')));}var _0x33b94a=fs['readFileSync'](path['join'](_0x4bf4aa,_0x4a28d7[0x0],'manifest.json'));var _0x3806ae=JSON['parse'](_0x33b94a);if(_0x8faf('0x20')==typeof _0x3806ae['name']){return _0x38ec79(new Error(_0x8faf('0x75')));}if('undefined'==typeof _0x3806ae['type']){return _0x38ec79(new Error(_0x8faf('0x76')));}if(_0x8faf('0x20')==typeof _0x3806ae[_0x8faf('0x77')]){return _0x38ec79(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if(_0x8faf('0x20')==typeof _0x3806ae['parameters']){return _0x38ec79(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0x3806ae[_0x8faf('0x33')]===_0x8faf('0x78')){if(_0x8faf('0x20')==typeof _0x3806ae['parameters'][_0x8faf('0x79')]){return _0x38ec79(new Error(_0x8faf('0x7a')));}if(_0x8faf('0x20')==typeof _0x3806ae['parameters'][_0x8faf('0x79')][_0x8faf('0x7b')]&&'undefined'==typeof _0x3806ae[_0x8faf('0x7c')]['views'][_0x8faf('0x7d')]){return _0x38ec79(new Error('Invalid\x20manifest:\x20no\x20view\x20specified'));}}else if(_0x3806ae[_0x8faf('0x33')]===_0x8faf('0x7e')){if(_0x8faf('0x20')==typeof _0x3806ae['parameters'][_0x8faf('0x7f')]){return _0x38ec79(new Error(_0x8faf('0x80')));}if(_0x8faf('0x20')==typeof _0x3806ae['parameters'][_0x8faf('0x81')]){return _0x38ec79(new Error(_0x8faf('0x82')));}}else{return _0x38ec79(new Error(_0x8faf('0x83')));}var _0x2253c3=_0x3806ae[_0x8faf('0x2f')];var _0x111e37=_0x3806ae['description'];var _0x17bee8=_0x3806ae[_0x8faf('0x33')];var _0x45c5d0=_0x3806ae[_0x8faf('0x84')]?_0x3806ae['sidebar']:'always';var _0x134621=_0x3806ae[_0x8faf('0x85')]?_0x3806ae[_0x8faf('0x85')]:'icon-apps';var _0x18541b='';var _0x3e0123='';var _0x3ef634='';var _0x17a1b9='';var _0x4c7653=_0x3806ae[_0x8faf('0x77')];if(_0x17bee8==='html'){if(_0x8faf('0x20')!=typeof _0x3806ae[_0x8faf('0x7c')]['views'][_0x8faf('0x7b')]){var _0x33aaa6=_0x3806ae[_0x8faf('0x7c')]['views']['admin'];if(!/^(f|ht)tps?:\/\//i['test'](_0x33aaa6)){_0x18541b=path[_0x8faf('0x4e')](_0x8faf('0x86'),_0xf0cfbd,_0x4a28d7[0x0],_0x33aaa6);}else{_0x18541b=_0x33aaa6;}}else{logger['info'](_0x8faf('0x87'));}if(_0x8faf('0x20')!=typeof _0x3806ae[_0x8faf('0x7c')][_0x8faf('0x79')][_0x8faf('0x7d')]){var _0x32656b=_0x3806ae['parameters'][_0x8faf('0x79')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0x8faf('0x88')](_0x32656b)){_0x3e0123=path['join'](_0x8faf('0x86'),_0xf0cfbd,_0x4a28d7[0x0],_0x32656b);}else{_0x3e0123=_0x32656b;}}else{logger[_0x8faf('0x64')]('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x17bee8===_0x8faf('0x7e')){_0x3ef634=_0x3806ae[_0x8faf('0x7c')][_0x8faf('0x7f')];_0x17a1b9=_0x3806ae['parameters']['scriptPath'];if('undefined'!=typeof _0x3806ae['parameters'][_0x8faf('0x79')]){if(_0x8faf('0x20')!=typeof _0x3806ae[_0x8faf('0x7c')][_0x8faf('0x79')][_0x8faf('0x7b')]){var _0x33aaa6=_0x3806ae[_0x8faf('0x7c')]['views'][_0x8faf('0x7b')];if(!/^(f|ht)tps?:\/\//i[_0x8faf('0x88')](_0x33aaa6)){_0x18541b=path[_0x8faf('0x4e')]('plugins',_0xf0cfbd,_0x4a28d7[0x0],_0x33aaa6);}else{_0x18541b=_0x33aaa6;}}if(_0x8faf('0x20')!=typeof _0x3806ae[_0x8faf('0x7c')][_0x8faf('0x79')]['agent']){var _0x32656b=_0x3806ae['parameters'][_0x8faf('0x79')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0x8faf('0x88')](_0x32656b)){_0x3e0123=path['join'](_0x8faf('0x86'),_0xf0cfbd,_0x4a28d7[0x0],_0x32656b);}else{_0x3e0123=_0x32656b;}}}}var _0x2bba2e={'name':_0x2253c3,'description':_0x111e37,'path':path[_0x8faf('0x4e')](_0xf0cfbd,_0x4a28d7[0x0]),'type':_0x17bee8,'sidebar':_0x45c5d0,'icon':_0x134621,'adminUrl':_0x18541b,'agentUrl':_0x3e0123,'scriptName':_0x3ef634,'scriptPath':_0x17a1b9,'version':_0x4c7653};removeReferences(_0x53a9c6,null);return db[_0x8faf('0x43')][_0x8faf('0x89')](_0x2bba2e)[_0x8faf('0x27')](function(_0x5102b9){var _0x4ff54c={'role':_0x49b392[_0x8faf('0x8a')][_0x8faf('0x8b')],'userProfileId':_0x49b392[_0x8faf('0x8a')][_0x8faf('0x8c')]};if(!_0x4ff54c)throw new Error(_0x8faf('0x8d'));if(_0x4ff54c[_0x8faf('0x8b')]===_0x8faf('0x8e')){var _0x2f89e7=_0x5102b9[_0x8faf('0x29')]({'plain':!![]});return db[_0x8faf('0x8f')][_0x8faf('0x4c')]({'where':{'name':_0x8faf('0x2a'),'userProfileId':_0x4ff54c['userProfileId']},'raw':!![]})[_0x8faf('0x27')](function(_0xd2623c){if(_0xd2623c&&_0xd2623c[_0x8faf('0x90')]===0x0){return db[_0x8faf('0x2b')][_0x8faf('0x89')]({'name':_0x2f89e7['name'],'resourceId':_0x2f89e7['id'],'type':_0xd2623c['name'],'sectionId':_0xd2623c['id']},{})['then'](function(){return _0x5102b9;});}else{return _0x5102b9;}})[_0x8faf('0x48')](function(_0x8d70f8){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x8d70f8);throw _0x8d70f8;});}return _0x5102b9;})[_0x8faf('0x27')](respondWithResult(_0x228d1e,null))[_0x8faf('0x48')](handleError(_0x228d1e,null));}});}catch(_0xc027e1){_0x228d1e[_0x8faf('0x1e')](0x1f4)['send'](_0xc027e1);}};function removeReferences(_0x536c08,_0x4c2fb2){try{if(_0x536c08){fs[_0x8faf('0x63')](_0x536c08);logger[_0x8faf('0x64')](_0x8faf('0x91'));}if(_0x4c2fb2){rimraf(_0x4c2fb2,function(){});logger[_0x8faf('0x64')](_0x8faf('0x92'));}}catch(_0x4af4d4){logger['error'](_0x4af4d4);}}exports[_0x8faf('0x26')]=function(_0x18b692,_0x266f8d,_0x2616f2){return db['Plugin'][_0x8faf('0x4c')]({'where':{'id':_0x18b692['params']['id']}})[_0x8faf('0x27')](handleEntityNotFound(_0x266f8d,null))[_0x8faf('0x27')](saveUpdates(_0x18b692[_0x8faf('0x8a')],null))['then'](respondWithResult(_0x266f8d,null))[_0x8faf('0x48')](handleError(_0x266f8d,null));};exports[_0x8faf('0x93')]=function(_0x2c2ecc,_0x2f9480,_0x34a1b3){return db[_0x8faf('0x43')][_0x8faf('0x4c')]({'where':{'id':_0x2c2ecc[_0x8faf('0x4a')]['id']}})[_0x8faf('0x27')](function(_0x37abc0){if(_0x37abc0){return _0x37abc0[_0x8faf('0x28')]();}})[_0x8faf('0x27')](function(_0x54dff3){rimraf(path[_0x8faf('0x4e')](config['root'],_0x8faf('0x50'),path['dirname'](_0x54dff3[_0x8faf('0x6')])),function(){});return _0x54dff3;})[_0x8faf('0x27')](handleEntityNotFound(_0x2f9480,null))[_0x8faf('0x27')](respondWithStatusCode(_0x2f9480,null))[_0x8faf('0x48')](handleError(_0x2f9480,null));};exports['webhookGet']=function(_0x2ad3ab,_0x25f57b,_0x3ab2cb){return BPromise[_0x8faf('0x94')]()[_0x8faf('0x27')](function(){if(!_0x2ad3ab[_0x8faf('0x36')][_0x8faf('0x6')]){throw new Error(_0x8faf('0x95'));}if(!_0x2ad3ab[_0x8faf('0x36')]['port']){throw new Error(_0x8faf('0x96'));}var _0x1ad5b8=_0x2ad3ab['query']['hostname']?_0x2ad3ab['query']['hostname']+':'+_0x2ad3ab[_0x8faf('0x36')][_0x8faf('0x97')]:'http://localhost:'+_0x2ad3ab[_0x8faf('0x36')][_0x8faf('0x97')];var _0x5b7d9b=_0x2ad3ab[_0x8faf('0x36')][_0x8faf('0x98')]?_0x2ad3ab[_0x8faf('0x36')][_0x8faf('0x98')]:!![];var _0x24313f=_0x2ad3ab[_0x8faf('0x36')]['encoding']?_0x2ad3ab['query']['encoding']:null;var _0x4d01d8={'method':_0x2ad3ab['method'],'uri':util[_0x8faf('0x51')](_0x8faf('0x99'),_0x1ad5b8,_0x2ad3ab['query'][_0x8faf('0x6')]),'json':_0x5b7d9b,'resolveWithFullResponse':!![],'encoding':_0x24313f,'qs':_0x2ad3ab[_0x8faf('0x36')]};if(_0x2ad3ab['headers']){_0x4d01d8[_0x8faf('0x9a')]=_0x2ad3ab['headers'];if(_0x4d01d8[_0x8faf('0x9a')][_0x8faf('0x9b')]){delete _0x4d01d8[_0x8faf('0x9a')][_0x8faf('0x9b')];}}if(_0x4d01d8[_0x8faf('0x9a')][_0x8faf('0x9c')]){delete _0x4d01d8[_0x8faf('0x9a')][_0x8faf('0x9c')];}return rp(_0x4d01d8);})[_0x8faf('0x27')](function(_0x4b24b0){if(_0x4b24b0){_0x25f57b[_0x8faf('0x23')](_0x4b24b0[_0x8faf('0x9a')]);logger[_0x8faf('0x64')](_0x4b24b0[_0x8faf('0x8a')]);if(_[_0x8faf('0x9d')](_0x2ad3ab[_0x8faf('0x36')][_0x8faf('0x6')],_0x8faf('0x4d'))&&_0x4b24b0[_0x8faf('0x9e')]==0x1f4){return _0x25f57b[_0x8faf('0x1d')](_0x4b24b0[_0x8faf('0x9e')]);}else{return _0x25f57b['status'](_0x4b24b0[_0x8faf('0x9e')])['send'](_0x4b24b0[_0x8faf('0x8a')]);}}else{return _0x25f57b[_0x8faf('0x1d')](0xc8);}})['catch'](handleError(_0x25f57b,null));};exports[_0x8faf('0x9f')]=function(_0x5d9d8e,_0x1acc3c,_0x475f1b){return BPromise[_0x8faf('0x94')]()[_0x8faf('0x27')](function(){if(!_0x5d9d8e[_0x8faf('0x36')][_0x8faf('0x6')]){throw new Error(_0x8faf('0x95'));}if(!_0x5d9d8e[_0x8faf('0x36')]['port']){throw new Error(_0x8faf('0x96'));}var _0x4a36cd=_0x5d9d8e['query']['hostname']?_0x5d9d8e[_0x8faf('0x36')][_0x8faf('0xa0')]+':'+_0x5d9d8e[_0x8faf('0x36')][_0x8faf('0x97')]:_0x8faf('0xa1')+_0x5d9d8e[_0x8faf('0x36')][_0x8faf('0x97')];var _0x3c8192=_0x5d9d8e[_0x8faf('0x36')][_0x8faf('0x98')]?_0x5d9d8e[_0x8faf('0x36')][_0x8faf('0x98')]:!![];var _0x2a208b=_0x5d9d8e['query'][_0x8faf('0xa2')]?_0x5d9d8e[_0x8faf('0x36')][_0x8faf('0xa2')]:null;var _0xaf527c={'method':_0x5d9d8e[_0x8faf('0xa3')],'uri':util[_0x8faf('0x51')]('%s%s',_0x4a36cd,_0x5d9d8e['query'][_0x8faf('0x6')]),'json':_0x3c8192,'resolveWithFullResponse':!![],'encoding':_0x2a208b,'body':_0x5d9d8e['body']};if(_0x5d9d8e[_0x8faf('0x9a')]){_0xaf527c[_0x8faf('0x9a')]=_0x5d9d8e[_0x8faf('0x9a')];if(_0xaf527c[_0x8faf('0x9a')][_0x8faf('0x9b')]){delete _0xaf527c[_0x8faf('0x9a')][_0x8faf('0x9b')];}}if(_0xaf527c[_0x8faf('0x9a')][_0x8faf('0x9c')]){delete _0xaf527c[_0x8faf('0x9a')][_0x8faf('0x9c')];}return rp(_0xaf527c);})['then'](function(_0x574844){if(_0x574844){_0x1acc3c[_0x8faf('0x23')](_0x574844[_0x8faf('0x9a')]);logger[_0x8faf('0x64')](_0x574844['body']);return _0x1acc3c[_0x8faf('0x1e')](_0x574844['statusCode'])['send'](_0x574844[_0x8faf('0x8a')]);}else{return _0x1acc3c['sendStatus'](0xc8);}})[_0x8faf('0x48')](handleError(_0x1acc3c,null));};
\ No newline at end of file
index e59e3d7..895f487 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9505=['save','update','remove','emit','hasOwnProperty','events','../../mysqldb','setMaxListeners'];(function(_0x3e0346,_0xa61d5e){var _0x3c9011=function(_0x5708c){while(--_0x5708c){_0x3e0346['push'](_0x3e0346['shift']());}};_0x3c9011(++_0xa61d5e);}(_0x9505,0x1e5));var _0x5950=function(_0x22f582,_0x26fac7){_0x22f582=_0x22f582-0x0;var _0x31c098=_0x9505[_0x22f582];return _0x31c098;};'use strict';var EventEmitter=require(_0x5950('0x0'));var Plugin=require(_0x5950('0x1'))['db']['Plugin'];var PluginEvents=new EventEmitter();PluginEvents[_0x5950('0x2')](0x0);var events={'afterCreate':_0x5950('0x3'),'afterUpdate':_0x5950('0x4'),'afterDestroy':_0x5950('0x5')};function emitEvent(_0x1344e4){return function(_0x4d3220,_0x48219e,_0x2494fc){PluginEvents[_0x5950('0x6')](_0x1344e4+':'+_0x4d3220['id'],_0x4d3220);PluginEvents[_0x5950('0x6')](_0x1344e4,_0x4d3220);_0x2494fc(null);};}for(var e in events){if(events[_0x5950('0x7')](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
+var _0xa2c8=['events','../../mysqldb','Plugin','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa2c8,0x99));var _0x8a2c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa2c8[_0x14add3];return _0x4a174f;};'use strict';var EventEmitter=require(_0x8a2c('0x0'));var Plugin=require(_0x8a2c('0x1'))['db'][_0x8a2c('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x8a2c('0x3')](0x0);var events={'afterCreate':_0x8a2c('0x4'),'afterUpdate':_0x8a2c('0x5'),'afterDestroy':'remove'};function emitEvent(_0x1b1142){return function(_0x590508,_0x486724,_0x48c1cb){PluginEvents[_0x8a2c('0x6')](_0x1b1142+':'+_0x590508['id'],_0x590508);PluginEvents[_0x8a2c('0x6')](_0x1b1142,_0x590508);_0x48c1cb(null);};}for(var e in events){if(events[_0x8a2c('0x7')](e)){var event=events[e];Plugin[_0x8a2c('0x8')](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
index 3b43f1e..bb0ee82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x294b=['exports','define','plugins','lodash','../../config/logger','api','moment','bluebird','request-promise','path','./plugin.attributes'];(function(_0x74b78a,_0x2c7b35){var _0x2caa6f=function(_0x21d4d1){while(--_0x21d4d1){_0x74b78a['push'](_0x74b78a['shift']());}};_0x2caa6f(++_0x2c7b35);}(_0x294b,0xea));var _0xb294=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x294b[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb294('0x0'));var util=require('util');var logger=require(_0xb294('0x1'))(_0xb294('0x2'));var moment=require(_0xb294('0x3'));var BPromise=require(_0xb294('0x4'));var rp=require(_0xb294('0x5'));var fs=require('fs');var path=require(_0xb294('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb294('0x7'));module[_0xb294('0x8')]=function(_0xaa6a67,_0x181f5e){return _0xaa6a67[_0xb294('0x9')]('Plugin',attributes,{'tableName':_0xb294('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0e37=['rimraf','../../config/environment','./plugin.attributes','util','api','moment','bluebird','request-promise','path'];(function(_0x34843e,_0x4c4224){var _0x598f7f=function(_0x12a44c){while(--_0x12a44c){_0x34843e['push'](_0x34843e['shift']());}};_0x598f7f(++_0x4c4224);}(_0x0e37,0xc9));var _0x70e3=function(_0x365dce,_0x44b439){_0x365dce=_0x365dce-0x0;var _0x22b163=_0x0e37[_0x365dce];return _0x22b163;};'use strict';var _=require('lodash');var util=require(_0x70e3('0x0'));var logger=require('../../config/logger')(_0x70e3('0x1'));var moment=require(_0x70e3('0x2'));var BPromise=require(_0x70e3('0x3'));var rp=require(_0x70e3('0x4'));var fs=require('fs');var path=require(_0x70e3('0x5'));var rimraf=require(_0x70e3('0x6'));var config=require(_0x70e3('0x7'));var attributes=require(_0x70e3('0x8'));module['exports']=function(_0x828320,_0x57a3a0){return _0x828320['define']('Plugin',attributes,{'tableName':'plugins','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3a69fa5..da9d1ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf05c=['CreatePlugin','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','message','result','Plugin','create','options','raw'];(function(_0x53a137,_0x28efc2){var _0x423e8b=function(_0x182f30){while(--_0x182f30){_0x53a137['push'](_0x53a137['shift']());}};_0x423e8b(++_0x28efc2);}(_0xf05c,0x122));var _0xcf05=function(_0x306448,_0x5bbe2c){_0x306448=_0x306448-0x0;var _0x3a383d=_0xf05c[_0x306448];return _0x3a383d;};'use strict';var _=require(_0xcf05('0x0'));var util=require(_0xcf05('0x1'));var moment=require(_0xcf05('0x2'));var BPromise=require(_0xcf05('0x3'));var rs=require(_0xcf05('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcf05('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xcf05('0x6'));var config=require(_0xcf05('0x7'));var jayson=require(_0xcf05('0x8'));var client=jayson['client'][_0xcf05('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0xcf05('0xa')],{'host':_0xcf05('0xb'),'port':0x18eb});var socket=require(_0xcf05('0xc'))(new Redis(config['redis']));require(_0xcf05('0xd'))[_0xcf05('0xe')](socket);function respondWithRpcPromise(_0xcea2d0,_0x10eaf3,_0x49ceb9){return new BPromise(function(_0x31b126,_0x1a619c){return client[_0xcf05('0xf')](_0xcea2d0,_0x49ceb9)[_0xcf05('0x10')](function(_0xf0a63f){logger[_0xcf05('0x11')](_0xcf05('0x12'),_0x10eaf3,_0xcf05('0x13'));logger[_0xcf05('0x14')](_0xcf05('0x15'),_0x10eaf3,'request\x20sent',JSON[_0xcf05('0x16')](_0xf0a63f));if(_0xf0a63f[_0xcf05('0x17')]){if(_0xf0a63f[_0xcf05('0x17')]['code']===0x1f4){logger[_0xcf05('0x17')](_0xcf05('0x12'),_0x10eaf3,_0xf0a63f[_0xcf05('0x17')][_0xcf05('0x18')]);return _0x1a619c(_0xf0a63f[_0xcf05('0x17')][_0xcf05('0x18')]);}logger['error'](_0xcf05('0x12'),_0x10eaf3,_0xf0a63f[_0xcf05('0x17')][_0xcf05('0x18')]);return _0x31b126(_0xf0a63f[_0xcf05('0x17')][_0xcf05('0x18')]);}else{logger['info'](_0xcf05('0x12'),_0x10eaf3,_0xcf05('0x13'));_0x31b126(_0xf0a63f[_0xcf05('0x19')][_0xcf05('0x18')]);}})['catch'](function(_0x5bac9a){logger[_0xcf05('0x17')](_0xcf05('0x12'),_0x10eaf3,_0x5bac9a);_0x1a619c(_0x5bac9a);});});}exports['CreatePlugin']=function(_0xcf2689){var _0x50cae5=this;return new Promise(function(_0x25f234,_0x5d8147){return db[_0xcf05('0x1a')][_0xcf05('0x1b')](_0xcf2689['body'],{'raw':_0xcf2689[_0xcf05('0x1c')]?_0xcf2689[_0xcf05('0x1c')][_0xcf05('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x2ca471){logger[_0xcf05('0x11')](_0xcf05('0x1e'),_0xcf2689);logger[_0xcf05('0x14')]('CreatePlugin',_0xcf2689,JSON[_0xcf05('0x16')](_0x2ca471));_0x25f234(_0x2ca471);})[_0xcf05('0x1f')](function(_0x1d0749){logger[_0xcf05('0x17')]('CreatePlugin',_0x1d0749[_0xcf05('0x18')],_0xcf2689);_0x5d8147(_0x50cae5[_0xcf05('0x17')](0x1f4,_0x1d0749[_0xcf05('0x18')]));});});};
\ No newline at end of file
+var _0x6e1c=['jayson/promise','http','redis','defaults','socket.io-emitter','register','then','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreatePlugin','Plugin','body','options','raw','lodash','util','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x4d41a6,_0x3be9e0){var _0x5a7d74=function(_0x5c8dcb){while(--_0x5c8dcb){_0x4d41a6['push'](_0x4d41a6['shift']());}};_0x5a7d74(++_0x3be9e0);}(_0x6e1c,0x1ca));var _0xc6e1=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6e1c[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xc6e1('0x0'));var util=require(_0xc6e1('0x1'));var moment=require('moment');var BPromise=require(_0xc6e1('0x2'));var rs=require(_0xc6e1('0x3'));var fs=require('fs');var Redis=require(_0xc6e1('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc6e1('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xc6e1('0x6'));var client=jayson['client'][_0xc6e1('0x7')]({'port':0x232a});config[_0xc6e1('0x8')]=_[_0xc6e1('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xc6e1('0xa'))(new Redis(config[_0xc6e1('0x8')]));require('./plugin.socket')[_0xc6e1('0xb')](socket);function respondWithRpcPromise(_0x22a477,_0x355ef3,_0x3b6094){return new BPromise(function(_0x58c501,_0x2897bc){return client['request'](_0x22a477,_0x3b6094)[_0xc6e1('0xc')](function(_0x1e916f){logger[_0xc6e1('0xd')](_0xc6e1('0xe'),_0x355ef3,_0xc6e1('0xf'));logger[_0xc6e1('0x10')](_0xc6e1('0x11'),_0x355ef3,_0xc6e1('0xf'),JSON[_0xc6e1('0x12')](_0x1e916f));if(_0x1e916f[_0xc6e1('0x13')]){if(_0x1e916f['error'][_0xc6e1('0x14')]===0x1f4){logger[_0xc6e1('0x13')](_0xc6e1('0xe'),_0x355ef3,_0x1e916f[_0xc6e1('0x13')][_0xc6e1('0x15')]);return _0x2897bc(_0x1e916f[_0xc6e1('0x13')]['message']);}logger['error'](_0xc6e1('0xe'),_0x355ef3,_0x1e916f['error'][_0xc6e1('0x15')]);return _0x58c501(_0x1e916f[_0xc6e1('0x13')][_0xc6e1('0x15')]);}else{logger['info'](_0xc6e1('0xe'),_0x355ef3,_0xc6e1('0xf'));_0x58c501(_0x1e916f[_0xc6e1('0x16')]['message']);}})[_0xc6e1('0x17')](function(_0x429933){logger[_0xc6e1('0x13')](_0xc6e1('0xe'),_0x355ef3,_0x429933);_0x2897bc(_0x429933);});});}exports[_0xc6e1('0x18')]=function(_0x5c2e7b){var _0xd88127=this;return new Promise(function(_0x367a3a,_0x13c233){return db[_0xc6e1('0x19')]['create'](_0x5c2e7b[_0xc6e1('0x1a')],{'raw':_0x5c2e7b[_0xc6e1('0x1b')]?_0x5c2e7b[_0xc6e1('0x1b')][_0xc6e1('0x1c')]===undefined?!![]:![]:!![]})[_0xc6e1('0xc')](function(_0x48edd8){logger['info'](_0xc6e1('0x18'),_0x5c2e7b);logger['debug']('CreatePlugin',_0x5c2e7b,JSON['stringify'](_0x48edd8));_0x367a3a(_0x48edd8);})[_0xc6e1('0x17')](function(_0x44d6db){logger['error']('CreatePlugin',_0x44d6db[_0xc6e1('0x15')],_0x5c2e7b);_0x13c233(_0xd88127[_0xc6e1('0x13')](0x1f4,_0x44d6db[_0xc6e1('0x15')]));});});};
\ No newline at end of file
index 40faf1c..e03a6a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x909d=['remove','update','emit','removeListener','register','length','plugin:','save'];(function(_0x2e9f99,_0x5e0664){var _0x2dc597=function(_0x444339){while(--_0x444339){_0x2e9f99['push'](_0x2e9f99['shift']());}};_0x2dc597(++_0x5e0664);}(_0x909d,0x18f));var _0xd909=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x909d[_0x273c39];return _0x46d6b5;};'use strict';var PluginEvents=require('./plugin.events');var events=[_0xd909('0x0'),_0xd909('0x1'),_0xd909('0x2')];function createListener(_0x334962,_0x1d04f7){return function(_0x337351){_0x1d04f7[_0xd909('0x3')](_0x334962,_0x337351);};}function removeListener(_0xfb17f7,_0x5720a1){return function(){PluginEvents[_0xd909('0x4')](_0xfb17f7,_0x5720a1);};}exports[_0xd909('0x5')]=function(_0x10fee7){for(var _0x473e96=0x0,_0x274aa2=events[_0xd909('0x6')];_0x473e96<_0x274aa2;_0x473e96++){var _0x96dd3f=events[_0x473e96];var _0x278d81=createListener(_0xd909('0x7')+_0x96dd3f,_0x10fee7);PluginEvents['on'](_0x96dd3f,_0x278d81);}};
\ No newline at end of file
+var _0x0bfa=['remove','emit','removeListener','register','./plugin.events','save'];(function(_0x36f42a,_0x4957f5){var _0x26a272=function(_0x3b1296){while(--_0x3b1296){_0x36f42a['push'](_0x36f42a['shift']());}};_0x26a272(++_0x4957f5);}(_0x0bfa,0x70));var _0xa0bf=function(_0x4fcbdb,_0xd92d3f){_0x4fcbdb=_0x4fcbdb-0x0;var _0x2a8e78=_0x0bfa[_0x4fcbdb];return _0x2a8e78;};'use strict';var PluginEvents=require(_0xa0bf('0x0'));var events=[_0xa0bf('0x1'),_0xa0bf('0x2'),'update'];function createListener(_0x4ba176,_0x35231b){return function(_0xccc9d5){_0x35231b[_0xa0bf('0x3')](_0x4ba176,_0xccc9d5);};}function removeListener(_0x20c5f1,_0x44a543){return function(){PluginEvents[_0xa0bf('0x4')](_0x20c5f1,_0x44a543);};}exports[_0xa0bf('0x5')]=function(_0x167318){for(var _0x34ddad=0x0,_0x461fcb=events['length'];_0x34ddad<_0x461fcb;_0x34ddad++){var _0x3e3eb5=events[_0x34ddad];var _0x369727=createListener('plugin:'+_0x3e3eb5,_0x167318);PluginEvents['on'](_0x3e3eb5,_0x369727);}};
\ No newline at end of file
index a2b2312..69f8a64 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(_0x2c89f7,_0x101de1){var _0x2d6fd7=function(_0x1f112f){while(--_0x1f112f){_0x2c89f7['push'](_0x2c89f7['shift']());}};_0x2d6fd7(++_0x101de1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0xa9e0[_0x47b58b];return _0x46bebe;};'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(_0x387b12,_0x3889fe){var _0x4f6bd9=function(_0x766a19){while(--_0x766a19){_0x387b12['push'](_0x387b12['shift']());}};_0x4f6bd9(++_0x3889fe);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'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 d093157..7a7d320 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6324=['params','Unknown\x20id','lodash','../../config/pm2','../../config/logger','api','child_process','bluebird','sendStatus','json','error','stack','status','send','npm\x20install','info','index','list','reject','name','motion2','length','then','catch','describe','body','script','join','../../files/plugins','cwd','chdir','dirname','start','dump','Missing\x20name\x20and/or\x20path','update','restart','stop','hasOwnProperty','destroy'];(function(_0x297d8f,_0xc9a9c0){var _0x4d1380=function(_0x281ac8){while(--_0x281ac8){_0x297d8f['push'](_0x297d8f['shift']());}};_0x4d1380(++_0xc9a9c0);}(_0x6324,0x142));var _0x4632=function(_0x3fa1e1,_0x4e39f0){_0x3fa1e1=_0x3fa1e1-0x0;var _0x1cc2ad=_0x6324[_0x3fa1e1];return _0x1cc2ad;};'use strict';var _=require(_0x4632('0x0'));var pm2=require(_0x4632('0x1'));var logger=require(_0x4632('0x2'))(_0x4632('0x3'));var path=require('path');var exec=require(_0x4632('0x4'))['exec'];var BPromise=require(_0x4632('0x5'));function handleEntityNotFound(_0x54c200,_0x13b218){return function(_0x592e39){if(!_0x592e39){_0x54c200[_0x4632('0x6')](0x194);;}return _0x592e39;};}function respondWithResult(_0x24aba6,_0x1f3077){_0x1f3077=_0x1f3077||0xc8;return function(_0x126e9a){if(_0x126e9a){return _0x24aba6['status'](_0x1f3077)[_0x4632('0x7')](_0x126e9a);}return null;};}function handleError(_0x44dd6d,_0x390a46){_0x390a46=_0x390a46||0x1f4;return function(_0x5a523b){logger[_0x4632('0x8')](_0x5a523b[_0x4632('0x9')]);if(_0x5a523b['name']){delete _0x5a523b['name'];}_0x44dd6d[_0x4632('0xa')](_0x390a46)[_0x4632('0xb')](_0x5a523b);};}function execChildProcess(){return new BPromise(function(_0x30a7cf,_0x3e26d9){exec(_0x4632('0xc'),function(_0xe28f38,_0x1b2729,_0x17f9d1){logger['info'](_0x1b2729);logger[_0x4632('0xd')](_0x17f9d1);if(_0xe28f38){logger['error'](_0xe28f38);return _0x3e26d9(_0xe28f38);}return _0x30a7cf(_0x1b2729);});});}exports[_0x4632('0xe')]=function(_0x299073,_0x3ef228){return pm2[_0x4632('0xf')]()['then'](function(_0x3ba361){if(_0x3ba361){var _0x255882=_[_0x4632('0x10')](_0x3ba361,function(_0x37d798){return _0x37d798[_0x4632('0x11')]==='express'||_0x37d798['name']===_0x4632('0x12');});return{'rows':_0x255882,'count':_0x255882[_0x4632('0x13')]};}return null;})[_0x4632('0x14')](respondWithResult(_0x3ef228,null))[_0x4632('0x15')](handleError(_0x3ef228,null));};exports['show']=function(_0x158831,_0x113872){return pm2[_0x4632('0x16')](_0x158831['params']['id'])[_0x4632('0x14')](respondWithResult(_0x113872,null))[_0x4632('0x14')](handleEntityNotFound(_0x113872,null))['catch'](handleError(_0x113872,null));};exports['create']=function(_0x1c0523,_0x3cf2bd){if(_0x1c0523[_0x4632('0x17')][_0x4632('0x11')]&&_0x1c0523[_0x4632('0x17')][_0x4632('0x18')]){var _0x9ab826=path[_0x4632('0x19')](__dirname,_0x4632('0x1a'),_0x1c0523[_0x4632('0x17')][_0x4632('0x18')]);var _0x2d656a=process[_0x4632('0x1b')]();process[_0x4632('0x1c')](path[_0x4632('0x1d')](_0x9ab826));return execChildProcess()[_0x4632('0x14')](function(_0x4264d5){process[_0x4632('0x1c')](_0x2d656a);return pm2[_0x4632('0x1e')]({'name':_0x1c0523[_0x4632('0x17')][_0x4632('0x11')],'script':_0x9ab826});})[_0x4632('0x14')](function(_0x3b0823){pm2[_0x4632('0x1f')]();return _0x3b0823[0x0];})[_0x4632('0x14')](respondWithResult(_0x3cf2bd,0xc9))[_0x4632('0x15')](handleError(_0x3cf2bd,null));}else{return _0x3cf2bd[_0x4632('0xa')](0x1f4)[_0x4632('0xb')]({'message':_0x4632('0x20')});}};exports[_0x4632('0x21')]=function(_0x22d0f5,_0x2a0b11){if(_0x22d0f5[_0x4632('0x17')]['id']){delete _0x22d0f5['body']['id'];}var _0x57798a={'online':_0x4632('0x22'),'stopped':_0x4632('0x23')};if(_0x57798a[_0x4632('0x24')](_0x22d0f5[_0x4632('0x17')][_0x4632('0xa')])){return pm2[_0x57798a[_0x22d0f5[_0x4632('0x17')][_0x4632('0xa')]]](_0x22d0f5['params']['id'])[_0x4632('0x14')](respondWithResult(_0x2a0b11,0xc8))[_0x4632('0x15')](handleError(_0x2a0b11,null));}else{return _0x2a0b11['status'](0x1f4)[_0x4632('0xb')]({'message':'Unknown\x20status'});}};exports[_0x4632('0x25')]=function(_0x4cb661,_0x4fda35){if(_0x4cb661[_0x4632('0x17')]['id']){delete _0x4cb661[_0x4632('0x17')]['id'];}if(_0x4cb661[_0x4632('0x26')]['id']){return pm2['delete'](_0x4cb661['params']['id'])[_0x4632('0x14')](function(_0x7671ab){pm2['dump']();return _0x7671ab[0x0];})['then'](respondWithResult(_0x4fda35,null))[_0x4632('0x15')](handleError(_0x4fda35,null));}else{return _0x4fda35[_0x4632('0xa')](0x1f4)['send']({'message':_0x4632('0x27')});}};
\ No newline at end of file
+var _0x6e6c=['script','join','cwd','dirname','chdir','start','dump','update','restart','hasOwnProperty','params','Unknown\x20status','destroy','delete','Unknown\x20id','lodash','../../config/pm2','api','path','bluebird','sendStatus','status','error','name','send','npm\x20install','info','index','then','reject','express','length','catch','describe','create','body'];(function(_0x455c6c,_0x1e78b7){var _0x488242=function(_0x3e8fb0){while(--_0x3e8fb0){_0x455c6c['push'](_0x455c6c['shift']());}};_0x488242(++_0x1e78b7);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6e6c[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xc6e6('0x0'));var pm2=require(_0xc6e6('0x1'));var logger=require('../../config/logger')(_0xc6e6('0x2'));var path=require(_0xc6e6('0x3'));var exec=require('child_process')['exec'];var BPromise=require(_0xc6e6('0x4'));function handleEntityNotFound(_0x5a9e2b,_0x40b7e1){return function(_0x4b13f0){if(!_0x4b13f0){_0x5a9e2b[_0xc6e6('0x5')](0x194);;}return _0x4b13f0;};}function respondWithResult(_0x1182c7,_0x4bf906){_0x4bf906=_0x4bf906||0xc8;return function(_0x301f55){if(_0x301f55){return _0x1182c7[_0xc6e6('0x6')](_0x4bf906)['json'](_0x301f55);}return null;};}function handleError(_0x324706,_0x15d268){_0x15d268=_0x15d268||0x1f4;return function(_0x5a7ef3){logger[_0xc6e6('0x7')](_0x5a7ef3['stack']);if(_0x5a7ef3[_0xc6e6('0x8')]){delete _0x5a7ef3[_0xc6e6('0x8')];}_0x324706[_0xc6e6('0x6')](_0x15d268)[_0xc6e6('0x9')](_0x5a7ef3);};}function execChildProcess(){return new BPromise(function(_0x12596b,_0xbf9ffc){exec(_0xc6e6('0xa'),function(_0x10aae5,_0x2c205d,_0x58540d){logger[_0xc6e6('0xb')](_0x2c205d);logger['info'](_0x58540d);if(_0x10aae5){logger[_0xc6e6('0x7')](_0x10aae5);return _0xbf9ffc(_0x10aae5);}return _0x12596b(_0x2c205d);});});}exports[_0xc6e6('0xc')]=function(_0x33aea0,_0x13c8d5){return pm2['list']()[_0xc6e6('0xd')](function(_0x2bfe7d){if(_0x2bfe7d){var _0x13be73=_[_0xc6e6('0xe')](_0x2bfe7d,function(_0x102673){return _0x102673['name']===_0xc6e6('0xf')||_0x102673[_0xc6e6('0x8')]==='motion2';});return{'rows':_0x13be73,'count':_0x13be73[_0xc6e6('0x10')]};}return null;})[_0xc6e6('0xd')](respondWithResult(_0x13c8d5,null))[_0xc6e6('0x11')](handleError(_0x13c8d5,null));};exports['show']=function(_0x51fd7c,_0x5867bf){return pm2[_0xc6e6('0x12')](_0x51fd7c['params']['id'])[_0xc6e6('0xd')](respondWithResult(_0x5867bf,null))[_0xc6e6('0xd')](handleEntityNotFound(_0x5867bf,null))[_0xc6e6('0x11')](handleError(_0x5867bf,null));};exports[_0xc6e6('0x13')]=function(_0x19e1e4,_0x3a0d83){if(_0x19e1e4[_0xc6e6('0x14')][_0xc6e6('0x8')]&&_0x19e1e4[_0xc6e6('0x14')][_0xc6e6('0x15')]){var _0x4a36b6=path[_0xc6e6('0x16')](__dirname,'../../files/plugins',_0x19e1e4[_0xc6e6('0x14')][_0xc6e6('0x15')]);var _0x2be6fc=process[_0xc6e6('0x17')]();process['chdir'](path[_0xc6e6('0x18')](_0x4a36b6));return execChildProcess()[_0xc6e6('0xd')](function(_0x3a96df){process[_0xc6e6('0x19')](_0x2be6fc);return pm2[_0xc6e6('0x1a')]({'name':_0x19e1e4['body'][_0xc6e6('0x8')],'script':_0x4a36b6});})['then'](function(_0x266786){pm2[_0xc6e6('0x1b')]();return _0x266786[0x0];})[_0xc6e6('0xd')](respondWithResult(_0x3a0d83,0xc9))[_0xc6e6('0x11')](handleError(_0x3a0d83,null));}else{return _0x3a0d83['status'](0x1f4)[_0xc6e6('0x9')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0xc6e6('0x1c')]=function(_0x534745,_0x267c6a){if(_0x534745[_0xc6e6('0x14')]['id']){delete _0x534745[_0xc6e6('0x14')]['id'];}var _0x41e7c2={'online':_0xc6e6('0x1d'),'stopped':'stop'};if(_0x41e7c2[_0xc6e6('0x1e')](_0x534745[_0xc6e6('0x14')][_0xc6e6('0x6')])){return pm2[_0x41e7c2[_0x534745[_0xc6e6('0x14')]['status']]](_0x534745[_0xc6e6('0x1f')]['id'])['then'](respondWithResult(_0x267c6a,0xc8))[_0xc6e6('0x11')](handleError(_0x267c6a,null));}else{return _0x267c6a[_0xc6e6('0x6')](0x1f4)[_0xc6e6('0x9')]({'message':_0xc6e6('0x20')});}};exports[_0xc6e6('0x21')]=function(_0x402598,_0x43ff9c){if(_0x402598[_0xc6e6('0x14')]['id']){delete _0x402598[_0xc6e6('0x14')]['id'];}if(_0x402598[_0xc6e6('0x1f')]['id']){return pm2[_0xc6e6('0x22')](_0x402598[_0xc6e6('0x1f')]['id'])[_0xc6e6('0xd')](function(_0x410ba5){pm2[_0xc6e6('0x1b')]();return _0x410ba5[0x0];})[_0xc6e6('0xd')](respondWithResult(_0x43ff9c,null))[_0xc6e6('0x11')](handleError(_0x43ff9c,null));}else{return _0x43ff9c['status'](0x1f4)[_0xc6e6('0x9')]({'message':_0xc6e6('0x23')});}};
\ No newline at end of file
index 2e3d9d6..f28a06e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e23=['getQueues','exports','express','../../components/auth/service','isAuthenticated','getAgents','get','/queues'];(function(_0x42d23d,_0x509e91){var _0x4795f9=function(_0x2a1152){while(--_0x2a1152){_0x42d23d['push'](_0x42d23d['shift']());}};_0x4795f9(++_0x509e91);}(_0x7e23,0x1a2));var _0x37e2=function(_0x81011a,_0x3e2c8d){_0x81011a=_0x81011a-0x0;var _0x293e1f=_0x7e23[_0x81011a];return _0x293e1f;};'use strict';var express=require(_0x37e2('0x0'));var router=express['Router']();var auth=require(_0x37e2('0x1'));var controller=require('./realtime.controller');router['get']('/agents',auth[_0x37e2('0x2')](),controller[_0x37e2('0x3')]);router[_0x37e2('0x4')](_0x37e2('0x5'),auth['isAuthenticated'](),controller[_0x37e2('0x6')]);module[_0x37e2('0x7')]=router;
\ No newline at end of file
+var _0x2f6a=['Router','../../components/auth/service','./realtime.controller','/agents','isAuthenticated','getAgents','getQueues','exports','express'];(function(_0x4805be,_0x459696){var _0x222db3=function(_0x446fff){while(--_0x446fff){_0x4805be['push'](_0x4805be['shift']());}};_0x222db3(++_0x459696);}(_0x2f6a,0x1b8));var _0xa2f6=function(_0x407ef4,_0x3709bc){_0x407ef4=_0x407ef4-0x0;var _0x58677d=_0x2f6a[_0x407ef4];return _0x58677d;};'use strict';var express=require(_0xa2f6('0x0'));var router=express[_0xa2f6('0x1')]();var auth=require(_0xa2f6('0x2'));var controller=require(_0xa2f6('0x3'));router['get'](_0xa2f6('0x4'),auth[_0xa2f6('0x5')](),controller[_0xa2f6('0x6')]);router['get']('/queues',auth['isAuthenticated'](),controller[_0xa2f6('0x7')]);module[_0xa2f6('0x8')]=router;
\ No newline at end of file
index 59ff55f..4faf2f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa33c=['split','globalStatus','order','startsWith','DESC','ASC','sort','pause','pauseType','userpic','lastPauseAt','smsPause','chatCapacity','openchannelCapacity','faxCapacity','chatCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','chatStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','voiceStatusTime','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','query','channel','fields','join','globalQueueFilter','rawAttributes','type','key','role','getOptions','raw','isEmpty','where','user','userProfileId','getResources','findAndCountAll','rows','omit','globalStatusFilter','pauseTypeFilter','getQueues','resolve','fieldName','Queues','util','lodash','jayson/promise','../../components/parsers/qs','../../config/logger','api','../../mysqldb','client','count','offset','limit','set','Content-Range','name','status','send','Agents','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','merge','catch','voice','request','startCase','then','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','loggedIn','available','talking','outbound','push','pTalking','message','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','dialPredictiveInterval','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','map','agents','paused','busy','originated','find','pick','filter','queue','some','connectedlinenum','internal','getMembers','UserId','accountcode','online','voiceStatus','loggedInDb','User','Queue','Pause','QueueId','length','unknown','unavailable','ringing','isNil','chatPause','faxPause','mailPause','openchannelPause','voicePause','whatsappPause','idle','every','chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','whatsappStatus','mail','chat','sms','openchannel','fax','includes','toLowerCase','Invalid\x20channel','getAgents','all','value'];(function(_0xdd286a,_0x1a45aa){var _0x4f65c4=function(_0x5aa944){while(--_0x5aa944){_0xdd286a['push'](_0xdd286a['shift']());}};_0x4f65c4(++_0x1a45aa);}(_0xa33c,0xd4));var _0xca33=function(_0x175440,_0x427b5b){_0x175440=_0x175440-0x0;var _0xa8d9d4=_0xa33c[_0x175440];return _0xa8d9d4;};'use strict';var util=require(_0xca33('0x0'));var _=require(_0xca33('0x1'));var jayson=require(_0xca33('0x2'));var qs=require(_0xca33('0x3'));var logger=require(_0xca33('0x4'))(_0xca33('0x5'));var db=require(_0xca33('0x6'))['db'];var amiClient=jayson[_0xca33('0x7')]['http']({'port':0x232a});var routingClient=jayson[_0xca33('0x7')]['http']({'port':0x232c});function respondWithFilteredResult(_0x394ed9,_0x45885d){return function(_0xc1479d){if(_0xc1479d){var _0x27cfa7=typeof _0x45885d['offset']==='undefined'&&typeof _0x45885d['limit']==='undefined';var _0x37bc7d=_0xc1479d[_0xca33('0x8')];var _0x209143=_0x27cfa7?0x0:_0x45885d[_0xca33('0x9')];var _0x5f51ea=_0x27cfa7?_0xc1479d[_0xca33('0x8')]:_0x45885d[_0xca33('0x9')]+_0x45885d[_0xca33('0xa')];var _0x37ae1b;if(_0x5f51ea>=_0x37bc7d){_0x5f51ea=_0x37bc7d;_0x37ae1b=0xc8;}else{_0x37ae1b=0xce;}_0x394ed9['status'](_0x37ae1b);return _0x394ed9[_0xca33('0xb')](_0xca33('0xc'),_0x209143+'-'+_0x5f51ea+'/'+_0x37bc7d)['json'](_0xc1479d);}return null;};}function handleError(_0x1c8780,_0x55083b){_0x55083b=_0x55083b||0x1f4;return function(_0x18e8a0){logger['error'](_0x18e8a0['stack']);if(_0x18e8a0[_0xca33('0xd')]){delete _0x18e8a0[_0xca33('0xd')];}_0x1c8780[_0xca33('0xe')](_0x55083b)[_0xca33('0xf')](_0x18e8a0);};}function getRealtimeAgents(){return new Promise(function(_0x5ad02a,_0x4aad6f){return amiClient['request'](_0xca33('0x10'),{})['then'](function(_0x1df8a8){if(_0x1df8a8[_0xca33('0x11')])throw new Error(_0xca33('0x12'));var _0x374af4=_0x1df8a8[_0xca33('0x13')];return routingClient['request']('Agents',{})['then'](function(_0x57a270){if(_0x57a270[_0xca33('0x11')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x459987=_0x57a270[_0xca33('0x13')];return _0x5ad02a(_[_0xca33('0x14')]({},_0x374af4,_0x459987));});})[_0xca33('0x15')](function(_0x592c56){_0x4aad6f(_0x592c56);});});}function getRealtimeQueues(_0x1fe17a,_0x1783de){return new Promise(function(_0x33529d,_0x5b4801){var _0x113adb=_0x1783de===_0xca33('0x16')?amiClient:routingClient;return _0x113adb[_0xca33('0x17')](_[_0xca33('0x18')](_0x1783de)+'Queues',_0x1fe17a)[_0xca33('0x19')](function(_0x181bfc){if(_0x181bfc['error'])throw new Error(util[_0xca33('0x1a')](_0xca33('0x1b'),_0x1783de));return _0x33529d(_0x181bfc[_0xca33('0x13')]);})[_0xca33('0x15')](function(_0xc268e){_0x5b4801(_0xc268e);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x37ceb4,_0x5f0c87){return amiClient['request']('VoiceQueuesChannels',{})[_0xca33('0x19')](function(_0x202808){if(_0x202808[_0xca33('0x11')])throw new Error(_0xca33('0x1c'));return _0x37ceb4(_0x202808[_0xca33('0x13')]);})['catch'](function(_0x4043fd){_0x5f0c87(_0x4043fd);});});}function initializeQueues(_0x121188,_0x38bcd4,_0x2c9f1a,_0x162a8e){var _0xc3d59f=[_0xca33('0x1d'),_0xca33('0x1e'),'waiting',_0xca33('0x1f'),'paused'];if(_0x2c9f1a==='voice'&&_0x162a8e===_0xca33('0x20')){_0xc3d59f[_0xca33('0x21')](_0xca33('0x22'),'originated',_0xca33('0x23'),_0xca33('0x24'),_0xca33('0x25'),_0xca33('0x26'),_0xca33('0x27'),_0xca33('0x28'),_0xca33('0x29'),_0xca33('0x2a'),'erlangAbandonmentRate','erlangBusyFactor',_0xca33('0x2b'),'dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold',_0xca33('0x2c'),_0xca33('0x2d'),_0xca33('0x2e'),'predictiveIntervalDroppedCallsTimeout',_0xca33('0x2f'),_0xca33('0x30'),_0xca33('0x31'));}return _0x121188[_0xca33('0x32')](function(_0x5ac69d){var _0x16e231=_0x5ac69d['get']({'plain':!![]});_0x16e231[_0xca33('0x33')]=[];_0x16e231[_0xca33('0x34')]=0x0;_0x16e231['loggedInDb']=0x0;_0x16e231['loggedIn']=0x0;_0x16e231[_0xca33('0x1e')]=0x0;_0x16e231['waiting']=0x0;if(_0x2c9f1a==='voice'){_0x16e231['talking']=0x0;_0x16e231[_0xca33('0x35')]=0x0;if(_0x162a8e===_0xca33('0x20')){_0x16e231[_0xca33('0x22')]=0x0;_0x16e231[_0xca33('0x36')]=0x0;}}var _0x6e15=_[_0xca33('0x37')](_0x38bcd4,['id',_0x16e231['id']]);if(_0x6e15)_['merge'](_0x16e231,_[_0xca33('0x38')](_0x6e15,_0xc3d59f));return _0x16e231;});}function updateAgentVoiceStatus(_0x64e1f,_0x42735c,_0x353c76){var _0x683e97=_[_0xca33('0x39')](_0x353c76,[_0xca33('0x3a'),_0x42735c[_0xca33('0xd')]]);if(_0x683e97['length']===0x0)return _0x64e1f[_0xca33('0x35')]=!![];if(_[_0xca33('0x3b')](_0x683e97,[_0xca33('0x3c'),_0x64e1f[_0xca33('0x3d')]['toString']()]))return _0x64e1f['talking']=!![];if(!_0x64e1f[_0xca33('0x1f')])return _0x64e1f[_0xca33('0x35')]=!![];}function getVoiceQueueAgents(_0x46a2de,_0x5765cd,_0x196b50,_0x1e659e){var _0x494f82=_[_0xca33('0x37')](_0x5765cd,['id',_0x46a2de['id']]);if(!_0x494f82)return _0x46a2de;return _0x494f82[_0xca33('0x3e')]({'raw':!![]})[_0xca33('0x19')](function(_0x2d5cff){for(var _0xb39686=0x0;_0xb39686<_0x2d5cff['length'];_0xb39686++){var _0x2ff344=_[_0xca33('0x37')](_0x196b50,['id',_0x2d5cff[_0xb39686][_0xca33('0x3f')]]);if(!_0x2ff344){_0x2ff344={'id':_0x2d5cff[_0xb39686][_0xca33('0x3f')],'name':_0x2d5cff[_0xb39686][_0xca33('0x3f')],'accountcode':'','online':![]};}var _0x2d7858={'id':_0x2ff344['id'],'name':_0x2ff344[_0xca33('0xd')],'internal':_0x2ff344[_0xca33('0x40')],'online':Boolean(_0x2ff344[_0xca33('0x41')]),'paused':Boolean(_0x2d5cff[_0xb39686][_0xca33('0x34')])};if(_0x2ff344[_0xca33('0x42')]===_0xca33('0x1f'))updateAgentVoiceStatus(_0x2d7858,_0x46a2de,_0x1e659e);if(_0x2d7858[_0xca33('0x41')])_0x46a2de[_0xca33('0x43')]++;if(_0x2d7858[_0xca33('0x35')])_0x46a2de['busy']++;if(_0x2d7858[_0xca33('0x34')]&&!_0x2d7858[_0xca33('0x35')]&&!_0x2d7858[_0xca33('0x1f')])_0x46a2de['paused']++;_0x46a2de[_0xca33('0x33')]['push'](_0x2d7858);}return _0x46a2de;});}function getQueueAgents(_0x2f7e53,_0x2d0253,_0x386e07){var _0x562371=_0xca33('0x44')+_['startCase'](_0x386e07)+_0xca33('0x45');var _0x52d0ce=_0x386e07+_0xca33('0x46');return db[_0x562371]['findAll']({'where':{[_[_0xca33('0x18')](_0x386e07)+_0xca33('0x47')]:_0x2f7e53['id']},'raw':!![]})[_0xca33('0x19')](function(_0x3ebec4){for(var _0x41c3a9=0x0;_0x41c3a9<_0x3ebec4[_0xca33('0x48')];_0x41c3a9++){var _0x15b7fa=_[_0xca33('0x37')](_0x2d0253,['id',_0x3ebec4[_0x41c3a9]['UserId']]);if(!_0x15b7fa){_0x15b7fa={'id':_0x3ebec4[_0x41c3a9][_0xca33('0x3f')],'name':_0x3ebec4[_0x41c3a9]['UserId'],'online':![],['pauseField']:![]};}var _0x4d81d5={'id':_0x15b7fa['id'],'name':_0x15b7fa[_0xca33('0xd')],'online':Boolean(_0x15b7fa[_0xca33('0x41')]),'paused':Boolean(_0x15b7fa[_0x52d0ce])};if(_0x4d81d5[_0xca33('0x41')])_0x2f7e53[_0xca33('0x43')]++;_0x2f7e53[_0xca33('0x33')][_0xca33('0x21')](_0x4d81d5);}return _0x2f7e53;});}function isIdle(_0x3ab090){return _0x3ab090==='idle'||_0x3ab090===_0xca33('0x49')||_0x3ab090===_0xca33('0x4a')||_0x3ab090===_0xca33('0x4b')||_[_0xca33('0x4c')](_0x3ab090);}function isAgentPaused(_0x3e2b66,_0x91d4ae){var _0x4fa233=[_0x3e2b66[_0xca33('0x4d')],_0x3e2b66[_0xca33('0x4e')],_0x3e2b66[_0xca33('0x4f')],_0x3e2b66[_0xca33('0x50')],_0x3e2b66['smsPause'],_0x3e2b66[_0xca33('0x51')],_0x3e2b66[_0xca33('0x52')]];if(!_0x91d4ae)return _['every'](_0x4fa233);var _0x27df8e=_[_0xca33('0x39')](_0x4fa233);return _0x27df8e['length']>0x0&&_0x27df8e[_0xca33('0x48')]<_0x4fa233['length']?!![]:![];}function isAgentIdle(_0x49fe8f){if(_0x49fe8f['voiceStatus']!==_0xca33('0x53')&&_0x49fe8f['voicePause']){_0x49fe8f[_0xca33('0x42')]='pause';return![];}return _[_0xca33('0x54')]([_0x49fe8f[_0xca33('0x55')],_0x49fe8f[_0xca33('0x56')],_0x49fe8f[_0xca33('0x57')],_0x49fe8f[_0xca33('0x58')],_0x49fe8f[_0xca33('0x59')],_0x49fe8f['voiceStatus'],_0x49fe8f[_0xca33('0x5a')]],isIdle);}function getAgentStatus(_0x393b71){var _0x10e933=_0xca33('0x49');if(isAgentPaused(_0x393b71))_0x10e933='pause';else if(isAgentPaused(_0x393b71,!![]))_0x10e933='*pause';else if(isAgentIdle(_0x393b71))_0x10e933='idle';else _0x10e933='busy';return _0x10e933;}function validateChannel(_0x398c39){var _0x1c2ccf=[_0xca33('0x5b'),_0xca33('0x5c'),_0xca33('0x5d'),_0xca33('0x5e'),_0xca33('0x5f'),'whatsapp',_0xca33('0x16')];if(!_[_0xca33('0x60')](_0x1c2ccf,_0x398c39[_0xca33('0x61')]()))throw new Error(_0xca33('0x62'));return _0x398c39[_0xca33('0x61')]();}function getFilteredAgentIds(_0x3f752b,_0x35e254){var _0x1c5c7d=_['isArray'](_0x3f752b)?_0x3f752b:[_0x3f752b];var _0xa41114=_['map'](_0x1c5c7d,function(_0x58e90f){return db[_0x35e254]['findOne']({'where':{'name':_0x58e90f}})[_0xca33('0x19')](function(_0x1ad9a3){if(!_0x1ad9a3)return[];return _0x1ad9a3[_0xca33('0x63')]({'attributes':['id'],'raw':!![]});});});return Promise[_0xca33('0x64')](_0xa41114)[_0xca33('0x19')](function(_0x369f50){var _0xdff917=_(_0x369f50)['flatten']()['map']('id')['uniq']()[_0xca33('0x65')]();return _0xdff917;});}function getUpdatedSortOptions(_0x4d05f1){var _0x4d5911={'fields':[],'order':null};var _0x1d1dac=_0x4d05f1[_0xca33('0x66')](',');_0x4d5911['fields']=_['filter'](_0x1d1dac,function(_0x696063){if(!_0x696063['includes'](_0xca33('0x67')))return!![];_0x4d5911[_0xca33('0x68')]=_[_0xca33('0x69')](_0x696063,'-')?_0xca33('0x6a'):_0xca33('0x6b');return![];});return _0x4d5911;}function orderAgentsByStatus(_0x2c4dd0,_0x3a12d5){return _0x2c4dd0[_0xca33('0x6c')](function(_0xcb4652,_0x262baa){if(_0xcb4652[_0xca33('0x67')]===_0x262baa[_0xca33('0x67')]&&_0xcb4652[_0xca33('0x67')]===_0xca33('0x6d')){if(_0x3a12d5===_0xca33('0x6a'))return(_0xcb4652['pauseType']||'')<(_0x262baa[_0xca33('0x6e')]||'')?0x1:-0x1;return _0xcb4652[_0xca33('0x6e')]<_0x262baa[_0xca33('0x6e')]?-0x1:0x1;}else{if(_0x3a12d5===_0xca33('0x6a'))return _0xcb4652[_0xca33('0x67')]<_0x262baa['globalStatus']?0x1:-0x1;return _0xcb4652['globalStatus']<_0x262baa['globalStatus']?-0x1:0x1;}});}exports[_0xca33('0x63')]=function(_0x36f655,_0x34bd65){var _0x194d16={'count':0x0,'rows':[]},_0x4f1468={},_0xed9779,_0x1dc1e7,_0x419aab,_0x42fcfc,_0x154ce7=[_0xca33('0x6f'),_0xca33('0x41'),'lastLoginAt','lastPauseAt',_0xca33('0x6e'),_0xca33('0x70'),_0xca33('0x3d'),'address',_0xca33('0x4d'),_0xca33('0x50'),'mailPause',_0xca33('0x71'),_0xca33('0x52'),_0xca33('0x4e'),_0xca33('0x51'),_0xca33('0x72'),_0xca33('0x73'),'mailCapacity','smsCapacity','whatsappCapacity',_0xca33('0x74'),_0xca33('0x75'),'openchannelCurrentCapacity',_0xca33('0x76'),_0xca33('0x77'),_0xca33('0x78'),_0xca33('0x79'),'chatStatus','openchannelStatus',_0xca33('0x57'),'smsStatus','whatsappStatus',_0xca33('0x56'),_0xca33('0x42'),_0xca33('0x7a'),'openchannelStatusTime',_0xca33('0x7b'),_0xca33('0x7c'),_0xca33('0x7d'),'faxStatusTime',_0xca33('0x7e'),_0xca33('0x3a'),_0xca33('0x7f'),_0xca33('0x80'),_0xca33('0x81'),_0xca33('0x82'),_0xca33('0x83')],_0x59f98f=[_0xca33('0x4d'),_0xca33('0x50'),_0xca33('0x4f'),_0xca33('0x71'),_0xca33('0x52'),_0xca33('0x4e'),_0xca33('0x51'),_0xca33('0x41')];Promise['resolve']()[_0xca33('0x19')](function(){if(_0x36f655[_0xca33('0x84')]['channel'])_0xed9779=validateChannel(_0x36f655['query'][_0xca33('0x85')]);if(!_0x36f655['query'][_0xca33('0x6c')]||!_0x36f655[_0xca33('0x84')][_0xca33('0x6c')][_0xca33('0x60')](_0xca33('0x67')))return;var _0x3280de=getUpdatedSortOptions(_0x36f655[_0xca33('0x84')]['sort']);_0x36f655['query'][_0xca33('0x6c')]=_0x3280de[_0xca33('0x86')][_0xca33('0x87')](',');_0x1dc1e7=_0x3280de[_0xca33('0x68')];})[_0xca33('0x19')](function(){if(!_0x36f655[_0xca33('0x84')]['globalQueueFilter'])return[];var _0x5ce01f=_[_0xca33('0x18')](_0xed9779)+_0xca33('0x45');return getFilteredAgentIds(_0x36f655['query'][_0xca33('0x88')],_0x5ce01f);})[_0xca33('0x19')](function(_0x2df3a0){var _0x1a1c5a=_[_0xca33('0x32')](db[_0xca33('0x44')][_0xca33('0x89')],function(_0x5abd15){return{'name':_0x5abd15['fieldName'],'type':_0x5abd15[_0xca33('0x8a')][_0xca33('0x8b')]};});_0x36f655['query'][_0xca33('0x8c')]='agent';_0x36f655[_0xca33('0x84')][_0xca33('0x41')]=!![];_0x4f1468=qs[_0xca33('0x8d')](_0x1a1c5a,_0x36f655);_0x4f1468[_0xca33('0x8e')]=!![];if(!_[_0xca33('0x8f')](_0x2df3a0)){_0x4f1468[_0xca33('0x90')]=_[_0xca33('0x14')](_0x4f1468['where'],{'$and':[{'id':{'$in':_0x2df3a0}}]});}else if(!_[_0xca33('0x8f')](_0x36f655[_0xca33('0x84')]['globalQueueFilter'])){return _0x194d16;}if(_0x36f655[_0xca33('0x91')]['role']===_0xca33('0x91')){var _0x2c1ed7={'params':{'id':_0x36f655[_0xca33('0x91')][_0xca33('0x92')]},'query':{'section':'Agents','role':'agent','online':!![],'nolimit':_0x36f655[_0xca33('0x84')]['nolimit'],'sort':_0x36f655[_0xca33('0x84')][_0xca33('0x6c')],'filter':_0x36f655[_0xca33('0x84')][_0xca33('0x39')],'raw':!![],'ids':_0x2df3a0}};return db['UserProfile'][_0xca33('0x93')](_0x2c1ed7);}return db[_0xca33('0x44')][_0xca33('0x94')](_0x4f1468);})[_0xca33('0x19')](function(_0x59277e){_0x194d16['count']=_0x59277e['count'];_0x419aab=_0x59277e[_0xca33('0x95')];return getRealtimeAgents();})[_0xca33('0x19')](function(_0xa798a1){_0x42fcfc=_0xa798a1[_0xca33('0x95')];return _0x419aab[_0xca33('0x32')](function(_0x2d7e37){var _0x3cc452=_[_0xca33('0x37')](_0x42fcfc,['id',_0x2d7e37['id']]);if(_0x3cc452)_['merge'](_0x2d7e37,_['pick'](_[_0xca33('0x96')](_0x3cc452,_0x59f98f),_0x154ce7));_0x2d7e37[_0xca33('0x67')]=getAgentStatus(_0x2d7e37);return _0x2d7e37;});})[_0xca33('0x19')](function(_0x205021){var _0x2110b7;if(_0x36f655[_0xca33('0x84')]['globalStatusFilter']){_0x2110b7=_[_0xca33('0x39')](_0x205021,[_0xca33('0x67'),_0x36f655[_0xca33('0x84')][_0xca33('0x97')]]);if(_0x36f655[_0xca33('0x84')][_0xca33('0x98')]){_0x2110b7=_[_0xca33('0x39')](_0x2110b7,[_0xca33('0x6e'),_0x36f655[_0xca33('0x84')][_0xca33('0x98')]]);}}if(_0x2110b7)_0x205021=_0x2110b7;if(!_0x1dc1e7)return _0x205021;return orderAgentsByStatus(_0x205021,_0x1dc1e7);})[_0xca33('0x19')](function(_0x442961){_0x194d16['rows']=_0x442961;return _0x194d16;})[_0xca33('0x19')](respondWithFilteredResult(_0x34bd65,_0x4f1468))[_0xca33('0x15')](handleError(_0x34bd65,null));};exports[_0xca33('0x99')]=function(_0x4fdb27,_0x1253e8){var _0x4d0483={'count':0x0,'rows':[]},_0x4485da={},_0xdaf0bf,_0x5249d5,_0x2cfc23,_0x557364,_0x595cc2;Promise[_0xca33('0x9a')]()['then'](function(){if(_0x4fdb27[_0xca33('0x84')][_0xca33('0x85')])_0xdaf0bf=validateChannel(_0x4fdb27[_0xca33('0x84')][_0xca33('0x85')]);var _0x4c1a77=_[_0xca33('0x18')](_0xdaf0bf)+_0xca33('0x45');var _0x10e0b2=_['map'](db[_0x4c1a77]['rawAttributes'],function(_0x390088){return{'name':_0x390088[_0xca33('0x9b')],'type':_0x390088['type'][_0xca33('0x8b')]};});_0x4485da=qs[_0xca33('0x8d')](_0x10e0b2,_0x4fdb27);if(_0x4fdb27['user'][_0xca33('0x8c')]===_0xca33('0x91')){var _0x410e42={'params':{'id':_0x4fdb27[_0xca33('0x91')][_0xca33('0x92')]},'query':{'section':_0xdaf0bf===_0xca33('0x16')&&_0x4fdb27['query'][_0xca33('0x8a')]===_0xca33('0x20')?'QueueCampaigns':_[_0xca33('0x18')](_0xdaf0bf)+_0xca33('0x9c'),'type':_0x4fdb27[_0xca33('0x84')][_0xca33('0x8a')],'nolimit':!![],'sort':_0xca33('0xd'),'filter':_0x4fdb27['query'][_0xca33('0x39')]}};return db['UserProfile'][_0xca33('0x93')](_0x410e42);}return db[_0x4c1a77][_0xca33('0x94')](_0x4485da);})['then'](function(_0xdd725c){_0x4d0483[_0xca33('0x8')]=_0xdd725c[_0xca33('0x8')];_0x5249d5=_0xdd725c[_0xca33('0x95')];return getRealtimeQueues(_0x4fdb27,_0xdaf0bf);})[_0xca33('0x19')](function(_0x4b70ca){_0x557364=_0x4b70ca[_0xca33('0x95')];return getRealtimeAgents();})['then'](function(_0x99487d){_0x2cfc23=_0x99487d[_0xca33('0x95')];if(_0xdaf0bf!=_0xca33('0x16'))return;return getRealtimeVoiceQueueChannels();})['then'](function(_0x1e6e4e){_0x595cc2=_0x1e6e4e?_0x1e6e4e[_0xca33('0x95')]:[];return initializeQueues(_0x5249d5,_0x557364,_0xdaf0bf,_0x4fdb27[_0xca33('0x84')][_0xca33('0x8a')]);})['then'](function(_0x4e1769){var _0x4b784c=_0x4e1769['map'](function(_0x66be13){if(_0xdaf0bf==='voice')return getVoiceQueueAgents(_0x66be13,_0x5249d5,_0x2cfc23,_0x595cc2);else return getQueueAgents(_0x66be13,_0x2cfc23,_0xdaf0bf);});return Promise['all'](_0x4b784c);})[_0xca33('0x19')](function(_0x262756){_0x4d0483[_0xca33('0x95')]=_0x262756;return _0x4d0483;})['then'](respondWithFilteredResult(_0x1253e8,_0x4485da))[_0xca33('0x15')](handleError(_0x1253e8,null));};
\ No newline at end of file
+var _0xd1df=['name','some','internal','toString','length','UserId','accountcode','online','voiceStatus','User','Queue','findAll','idle','unavailable','ringing','isNil','chatPause','voicePause','whatsappPause','pause','chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','whatsappStatus','*pause','chat','openchannel','fax','includes','toLowerCase','findOne','all','flatten','uniq','value','split','fields','globalStatus','order','startsWith','DESC','ASC','pauseType','getAgents','lastLoginAt','lastPauseAt','address','openchannelPause','mailPause','chatCapacity','mailCapacity','smsCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','chatStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','destconnectedlinenum','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','smsPause','faxPause','resolve','query','channel','sort','join','globalQueueFilter','rawAttributes','fieldName','type','key','role','agent','getOptions','isEmpty','where','user','userProfileId','nolimit','UserProfile','getResources','findAndCountAll','rows','omit','globalStatusFilter','pauseTypeFilter','getQueues','outbound','QueueCampaigns','Queues','util','lodash','jayson/promise','../../components/parsers/qs','../../config/logger','api','../../mysqldb','http','client','undefined','limit','count','offset','status','json','error','send','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Agents','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','result','catch','voice','startCase','then','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','VoiceQueuesChannels','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','loggedIn','available','waiting','talking','paused','push','message','startPredictive','erlangCalls','erlangCallToSecond','erlangBusyFactor','dialPredictiveInterval','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','map','agents','loggedInDb','busy','pTalking','originated','find','merge','pick','filter','queue'];(function(_0x4f3f85,_0x537743){var _0x33b1bc=function(_0x2ba2cf){while(--_0x2ba2cf){_0x4f3f85['push'](_0x4f3f85['shift']());}};_0x33b1bc(++_0x537743);}(_0xd1df,0x68));var _0xfd1d=function(_0x5e7bd3,_0x388e6c){_0x5e7bd3=_0x5e7bd3-0x0;var _0x25129b=_0xd1df[_0x5e7bd3];return _0x25129b;};'use strict';var util=require(_0xfd1d('0x0'));var _=require(_0xfd1d('0x1'));var jayson=require(_0xfd1d('0x2'));var qs=require(_0xfd1d('0x3'));var logger=require(_0xfd1d('0x4'))(_0xfd1d('0x5'));var db=require(_0xfd1d('0x6'))['db'];var amiClient=jayson['client'][_0xfd1d('0x7')]({'port':0x232a});var routingClient=jayson[_0xfd1d('0x8')][_0xfd1d('0x7')]({'port':0x232c});function respondWithFilteredResult(_0x226b4a,_0x2008f3){return function(_0x299e61){if(_0x299e61){var _0x42a6bf=typeof _0x2008f3['offset']===_0xfd1d('0x9')&&typeof _0x2008f3[_0xfd1d('0xa')]===_0xfd1d('0x9');var _0x1b27e9=_0x299e61[_0xfd1d('0xb')];var _0x174398=_0x42a6bf?0x0:_0x2008f3[_0xfd1d('0xc')];var _0x53316d=_0x42a6bf?_0x299e61['count']:_0x2008f3[_0xfd1d('0xc')]+_0x2008f3['limit'];var _0x27134d;if(_0x53316d>=_0x1b27e9){_0x53316d=_0x1b27e9;_0x27134d=0xc8;}else{_0x27134d=0xce;}_0x226b4a[_0xfd1d('0xd')](_0x27134d);return _0x226b4a['set']('Content-Range',_0x174398+'-'+_0x53316d+'/'+_0x1b27e9)[_0xfd1d('0xe')](_0x299e61);}return null;};}function handleError(_0x5c346c,_0x1d7973){_0x1d7973=_0x1d7973||0x1f4;return function(_0x40f956){logger[_0xfd1d('0xf')](_0x40f956['stack']);if(_0x40f956['name']){delete _0x40f956['name'];}_0x5c346c['status'](_0x1d7973)[_0xfd1d('0x10')](_0x40f956);};}function getRealtimeAgents(){return new Promise(function(_0x5d7a48,_0x5d6cad){return amiClient[_0xfd1d('0x11')]('Agents',{})['then'](function(_0x51c145){if(_0x51c145[_0xfd1d('0xf')])throw new Error(_0xfd1d('0x12'));var _0x3a4f2a=_0x51c145['result'];return routingClient[_0xfd1d('0x11')](_0xfd1d('0x13'),{})['then'](function(_0x5a46de){if(_0x5a46de['error'])throw new Error(_0xfd1d('0x14'));var _0x225869=_0x5a46de[_0xfd1d('0x15')];return _0x5d7a48(_['merge']({},_0x3a4f2a,_0x225869));});})[_0xfd1d('0x16')](function(_0x3f66ec){_0x5d6cad(_0x3f66ec);});});}function getRealtimeQueues(_0x41dd3a,_0x246141){return new Promise(function(_0x5947f2,_0x277b7d){var _0x169c73=_0x246141===_0xfd1d('0x17')?amiClient:routingClient;return _0x169c73[_0xfd1d('0x11')](_[_0xfd1d('0x18')](_0x246141)+'Queues',_0x41dd3a)[_0xfd1d('0x19')](function(_0xae2687){if(_0xae2687[_0xfd1d('0xf')])throw new Error(util[_0xfd1d('0x1a')](_0xfd1d('0x1b'),_0x246141));return _0x5947f2(_0xae2687[_0xfd1d('0x15')]);})[_0xfd1d('0x16')](function(_0x185014){_0x277b7d(_0x185014);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0xeffba8,_0x4cad69){return amiClient[_0xfd1d('0x11')](_0xfd1d('0x1c'),{})[_0xfd1d('0x19')](function(_0x24cd92){if(_0x24cd92['error'])throw new Error(_0xfd1d('0x1d'));return _0xeffba8(_0x24cd92[_0xfd1d('0x15')]);})[_0xfd1d('0x16')](function(_0x49bd35){_0x4cad69(_0x49bd35);});});}function initializeQueues(_0x5601d5,_0x27fd6e,_0x30a376,_0xed079d){var _0x1c6bc6=[_0xfd1d('0x1e'),_0xfd1d('0x1f'),_0xfd1d('0x20'),_0xfd1d('0x21'),_0xfd1d('0x22')];if(_0x30a376===_0xfd1d('0x17')&&_0xed079d==='outbound'){_0x1c6bc6[_0xfd1d('0x23')]('pTalking','originated',_0xfd1d('0x24'),'dialActive','dialMethod','Trunk',_0xfd1d('0x25'),'startProgressive',_0xfd1d('0x26'),_0xfd1d('0x27'),'erlangAbandonmentRate',_0xfd1d('0x28'),_0xfd1d('0x29'),'dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold',_0xfd1d('0x2a'),_0xfd1d('0x2b'),'predictiveIntervalAnsweredCalls',_0xfd1d('0x2c'),_0xfd1d('0x2d'),_0xfd1d('0x2e'),_0xfd1d('0x2f'));}return _0x5601d5[_0xfd1d('0x30')](function(_0x29bb4a){var _0xae2686=_0x29bb4a['get']({'plain':!![]});_0xae2686[_0xfd1d('0x31')]=[];_0xae2686['paused']=0x0;_0xae2686[_0xfd1d('0x32')]=0x0;_0xae2686[_0xfd1d('0x1e')]=0x0;_0xae2686['available']=0x0;_0xae2686[_0xfd1d('0x20')]=0x0;if(_0x30a376===_0xfd1d('0x17')){_0xae2686[_0xfd1d('0x21')]=0x0;_0xae2686[_0xfd1d('0x33')]=0x0;if(_0xed079d==='outbound'){_0xae2686[_0xfd1d('0x34')]=0x0;_0xae2686[_0xfd1d('0x35')]=0x0;}}var _0x1a8cc5=_[_0xfd1d('0x36')](_0x27fd6e,['id',_0xae2686['id']]);if(_0x1a8cc5)_[_0xfd1d('0x37')](_0xae2686,_[_0xfd1d('0x38')](_0x1a8cc5,_0x1c6bc6));return _0xae2686;});}function updateAgentVoiceStatus(_0x480fe2,_0x264963,_0x5db41f){var _0x5d441e=_[_0xfd1d('0x39')](_0x5db41f,[_0xfd1d('0x3a'),_0x264963[_0xfd1d('0x3b')]]);if(_0x5d441e['length']===0x0)return _0x480fe2['busy']=!![];if(_[_0xfd1d('0x3c')](_0x5d441e,['connectedlinenum',_0x480fe2[_0xfd1d('0x3d')][_0xfd1d('0x3e')]()]))return _0x480fe2[_0xfd1d('0x21')]=!![];if(!_0x480fe2[_0xfd1d('0x21')])return _0x480fe2[_0xfd1d('0x33')]=!![];}function getVoiceQueueAgents(_0x435dc8,_0xa4d73a,_0x5cfc56,_0x5f09e3){var _0x4a9c84=_[_0xfd1d('0x36')](_0xa4d73a,['id',_0x435dc8['id']]);if(!_0x4a9c84)return _0x435dc8;return _0x4a9c84['getMembers']({'raw':!![]})['then'](function(_0x51e208){for(var _0x27b433=0x0;_0x27b433<_0x51e208[_0xfd1d('0x3f')];_0x27b433++){var _0xa3eb02=_[_0xfd1d('0x36')](_0x5cfc56,['id',_0x51e208[_0x27b433][_0xfd1d('0x40')]]);if(!_0xa3eb02){_0xa3eb02={'id':_0x51e208[_0x27b433][_0xfd1d('0x40')],'name':_0x51e208[_0x27b433][_0xfd1d('0x40')],'accountcode':'','online':![]};}var _0x110f86={'id':_0xa3eb02['id'],'name':_0xa3eb02[_0xfd1d('0x3b')],'internal':_0xa3eb02[_0xfd1d('0x41')],'online':Boolean(_0xa3eb02[_0xfd1d('0x42')]),'paused':Boolean(_0x51e208[_0x27b433]['paused'])};if(_0xa3eb02[_0xfd1d('0x43')]===_0xfd1d('0x21'))updateAgentVoiceStatus(_0x110f86,_0x435dc8,_0x5f09e3);if(_0x110f86[_0xfd1d('0x42')])_0x435dc8['loggedInDb']++;if(_0x110f86[_0xfd1d('0x33')])_0x435dc8[_0xfd1d('0x33')]++;if(_0x110f86['paused']&&!_0x110f86[_0xfd1d('0x33')]&&!_0x110f86[_0xfd1d('0x21')])_0x435dc8['paused']++;_0x435dc8[_0xfd1d('0x31')][_0xfd1d('0x23')](_0x110f86);}return _0x435dc8;});}function getQueueAgents(_0x509824,_0x3dfedd,_0x4e9b5b){var _0x2c64fe=_0xfd1d('0x44')+_['startCase'](_0x4e9b5b)+_0xfd1d('0x45');var _0x5ec4b9=_0x4e9b5b+'Pause';return db[_0x2c64fe][_0xfd1d('0x46')]({'where':{[_[_0xfd1d('0x18')](_0x4e9b5b)+'QueueId']:_0x509824['id']},'raw':!![]})['then'](function(_0x255f81){for(var _0x19e712=0x0;_0x19e712<_0x255f81['length'];_0x19e712++){var _0x6d6a23=_[_0xfd1d('0x36')](_0x3dfedd,['id',_0x255f81[_0x19e712][_0xfd1d('0x40')]]);if(!_0x6d6a23){_0x6d6a23={'id':_0x255f81[_0x19e712][_0xfd1d('0x40')],'name':_0x255f81[_0x19e712][_0xfd1d('0x40')],'online':![],['pauseField']:![]};}var _0x3462b5={'id':_0x6d6a23['id'],'name':_0x6d6a23['name'],'online':Boolean(_0x6d6a23['online']),'paused':Boolean(_0x6d6a23[_0x5ec4b9])};if(_0x3462b5[_0xfd1d('0x42')])_0x509824[_0xfd1d('0x32')]++;_0x509824[_0xfd1d('0x31')][_0xfd1d('0x23')](_0x3462b5);}return _0x509824;});}function isIdle(_0x5e8306){return _0x5e8306===_0xfd1d('0x47')||_0x5e8306==='unknown'||_0x5e8306===_0xfd1d('0x48')||_0x5e8306===_0xfd1d('0x49')||_[_0xfd1d('0x4a')](_0x5e8306);}function isAgentPaused(_0x13721,_0x46f0ca){var _0x46cb86=[_0x13721[_0xfd1d('0x4b')],_0x13721['faxPause'],_0x13721['mailPause'],_0x13721['openchannelPause'],_0x13721['smsPause'],_0x13721[_0xfd1d('0x4c')],_0x13721[_0xfd1d('0x4d')]];if(!_0x46f0ca)return _['every'](_0x46cb86);var _0x38cc87=_[_0xfd1d('0x39')](_0x46cb86);return _0x38cc87['length']>0x0&&_0x38cc87['length']<_0x46cb86[_0xfd1d('0x3f')]?!![]:![];}function isAgentIdle(_0x53afe1){if(_0x53afe1[_0xfd1d('0x43')]!==_0xfd1d('0x47')&&_0x53afe1['voicePause']){_0x53afe1[_0xfd1d('0x43')]=_0xfd1d('0x4e');return![];}return _['every']([_0x53afe1[_0xfd1d('0x4f')],_0x53afe1[_0xfd1d('0x50')],_0x53afe1[_0xfd1d('0x51')],_0x53afe1[_0xfd1d('0x52')],_0x53afe1[_0xfd1d('0x53')],_0x53afe1[_0xfd1d('0x43')],_0x53afe1[_0xfd1d('0x54')]],isIdle);}function getAgentStatus(_0x33b52d){var _0x2f8bb1='unknown';if(isAgentPaused(_0x33b52d))_0x2f8bb1='pause';else if(isAgentPaused(_0x33b52d,!![]))_0x2f8bb1=_0xfd1d('0x55');else if(isAgentIdle(_0x33b52d))_0x2f8bb1=_0xfd1d('0x47');else _0x2f8bb1=_0xfd1d('0x33');return _0x2f8bb1;}function validateChannel(_0x32d098){var _0x14d1f7=['mail',_0xfd1d('0x56'),'sms',_0xfd1d('0x57'),_0xfd1d('0x58'),'whatsapp',_0xfd1d('0x17')];if(!_[_0xfd1d('0x59')](_0x14d1f7,_0x32d098[_0xfd1d('0x5a')]()))throw new Error('Invalid\x20channel');return _0x32d098[_0xfd1d('0x5a')]();}function getFilteredAgentIds(_0x4dfc33,_0x31175e){var _0x459fb0=_['isArray'](_0x4dfc33)?_0x4dfc33:[_0x4dfc33];var _0x304af8=_[_0xfd1d('0x30')](_0x459fb0,function(_0x339097){return db[_0x31175e][_0xfd1d('0x5b')]({'where':{'name':_0x339097}})['then'](function(_0x24d748){if(!_0x24d748)return[];return _0x24d748['getAgents']({'attributes':['id'],'raw':!![]});});});return Promise[_0xfd1d('0x5c')](_0x304af8)[_0xfd1d('0x19')](function(_0x49b669){var _0x31ac56=_(_0x49b669)[_0xfd1d('0x5d')]()['map']('id')[_0xfd1d('0x5e')]()[_0xfd1d('0x5f')]();return _0x31ac56;});}function getUpdatedSortOptions(_0x449126){var _0x224155={'fields':[],'order':null};var _0x46207a=_0x449126[_0xfd1d('0x60')](',');_0x224155[_0xfd1d('0x61')]=_[_0xfd1d('0x39')](_0x46207a,function(_0x2b66af){if(!_0x2b66af[_0xfd1d('0x59')](_0xfd1d('0x62')))return!![];_0x224155[_0xfd1d('0x63')]=_[_0xfd1d('0x64')](_0x2b66af,'-')?_0xfd1d('0x65'):_0xfd1d('0x66');return![];});return _0x224155;}function orderAgentsByStatus(_0x20c2dc,_0x2f267b){return _0x20c2dc['sort'](function(_0x23ddbb,_0x3d7320){if(_0x23ddbb[_0xfd1d('0x62')]===_0x3d7320[_0xfd1d('0x62')]&&_0x23ddbb['globalStatus']===_0xfd1d('0x4e')){if(_0x2f267b===_0xfd1d('0x65'))return(_0x23ddbb[_0xfd1d('0x67')]||'')<(_0x3d7320[_0xfd1d('0x67')]||'')?0x1:-0x1;return _0x23ddbb[_0xfd1d('0x67')]<_0x3d7320['pauseType']?-0x1:0x1;}else{if(_0x2f267b==='DESC')return _0x23ddbb['globalStatus']<_0x3d7320[_0xfd1d('0x62')]?0x1:-0x1;return _0x23ddbb[_0xfd1d('0x62')]<_0x3d7320[_0xfd1d('0x62')]?-0x1:0x1;}});}exports[_0xfd1d('0x68')]=function(_0x409bdc,_0x172d42){var _0x98399e={'count':0x0,'rows':[]},_0xf56c30={},_0x588107,_0x2a1b27,_0x2f4f06,_0x30da00,_0x551b81=['userpic','online',_0xfd1d('0x69'),_0xfd1d('0x6a'),'pauseType','lastPauseAt',_0xfd1d('0x3d'),_0xfd1d('0x6b'),_0xfd1d('0x4b'),_0xfd1d('0x6c'),_0xfd1d('0x6d'),'smsPause',_0xfd1d('0x4d'),'faxPause',_0xfd1d('0x4c'),_0xfd1d('0x6e'),'openchannelCapacity',_0xfd1d('0x6f'),_0xfd1d('0x70'),_0xfd1d('0x71'),_0xfd1d('0x72'),_0xfd1d('0x73'),_0xfd1d('0x74'),_0xfd1d('0x75'),_0xfd1d('0x76'),_0xfd1d('0x77'),_0xfd1d('0x78'),_0xfd1d('0x4f'),_0xfd1d('0x52'),_0xfd1d('0x51'),'smsStatus',_0xfd1d('0x54'),_0xfd1d('0x50'),_0xfd1d('0x43'),_0xfd1d('0x79'),'openchannelStatusTime',_0xfd1d('0x7a'),_0xfd1d('0x7b'),_0xfd1d('0x7c'),_0xfd1d('0x7d'),_0xfd1d('0x7e'),_0xfd1d('0x3a'),_0xfd1d('0x7f'),_0xfd1d('0x80'),_0xfd1d('0x81'),_0xfd1d('0x82'),_0xfd1d('0x83')],_0x3e5fd2=[_0xfd1d('0x4b'),'openchannelPause','mailPause',_0xfd1d('0x84'),_0xfd1d('0x4d'),_0xfd1d('0x85'),_0xfd1d('0x4c'),_0xfd1d('0x42')];Promise[_0xfd1d('0x86')]()[_0xfd1d('0x19')](function(){if(_0x409bdc[_0xfd1d('0x87')]['channel'])_0x588107=validateChannel(_0x409bdc[_0xfd1d('0x87')][_0xfd1d('0x88')]);if(!_0x409bdc[_0xfd1d('0x87')]['sort']||!_0x409bdc[_0xfd1d('0x87')]['sort'][_0xfd1d('0x59')](_0xfd1d('0x62')))return;var _0x30e62b=getUpdatedSortOptions(_0x409bdc[_0xfd1d('0x87')][_0xfd1d('0x89')]);_0x409bdc[_0xfd1d('0x87')]['sort']=_0x30e62b['fields'][_0xfd1d('0x8a')](',');_0x2a1b27=_0x30e62b['order'];})[_0xfd1d('0x19')](function(){if(!_0x409bdc[_0xfd1d('0x87')][_0xfd1d('0x8b')])return[];var _0x58b51c=_[_0xfd1d('0x18')](_0x588107)+'Queue';return getFilteredAgentIds(_0x409bdc[_0xfd1d('0x87')][_0xfd1d('0x8b')],_0x58b51c);})[_0xfd1d('0x19')](function(_0x1040ae){var _0x515356=_['map'](db[_0xfd1d('0x44')][_0xfd1d('0x8c')],function(_0x354073){return{'name':_0x354073[_0xfd1d('0x8d')],'type':_0x354073[_0xfd1d('0x8e')][_0xfd1d('0x8f')]};});_0x409bdc[_0xfd1d('0x87')][_0xfd1d('0x90')]=_0xfd1d('0x91');_0x409bdc['query'][_0xfd1d('0x42')]=!![];_0xf56c30=qs[_0xfd1d('0x92')](_0x515356,_0x409bdc);_0xf56c30['raw']=!![];if(!_[_0xfd1d('0x93')](_0x1040ae)){_0xf56c30[_0xfd1d('0x94')]=_[_0xfd1d('0x37')](_0xf56c30[_0xfd1d('0x94')],{'$and':[{'id':{'$in':_0x1040ae}}]});}else if(!_[_0xfd1d('0x93')](_0x409bdc[_0xfd1d('0x87')][_0xfd1d('0x8b')])){return _0x98399e;}if(_0x409bdc[_0xfd1d('0x95')][_0xfd1d('0x90')]===_0xfd1d('0x95')){var _0x42bbaa={'params':{'id':_0x409bdc[_0xfd1d('0x95')][_0xfd1d('0x96')]},'query':{'section':_0xfd1d('0x13'),'role':'agent','online':!![],'nolimit':_0x409bdc[_0xfd1d('0x87')][_0xfd1d('0x97')],'sort':_0x409bdc['query']['sort'],'filter':_0x409bdc[_0xfd1d('0x87')]['filter'],'raw':!![],'ids':_0x1040ae}};return db[_0xfd1d('0x98')][_0xfd1d('0x99')](_0x42bbaa);}return db[_0xfd1d('0x44')][_0xfd1d('0x9a')](_0xf56c30);})[_0xfd1d('0x19')](function(_0x2df12e){_0x98399e[_0xfd1d('0xb')]=_0x2df12e[_0xfd1d('0xb')];_0x2f4f06=_0x2df12e[_0xfd1d('0x9b')];return getRealtimeAgents();})[_0xfd1d('0x19')](function(_0x7212b3){_0x30da00=_0x7212b3['rows'];return _0x2f4f06[_0xfd1d('0x30')](function(_0x1b0e67){var _0x39f5b1=_[_0xfd1d('0x36')](_0x30da00,['id',_0x1b0e67['id']]);if(_0x39f5b1)_['merge'](_0x1b0e67,_['pick'](_[_0xfd1d('0x9c')](_0x39f5b1,_0x3e5fd2),_0x551b81));_0x1b0e67[_0xfd1d('0x62')]=getAgentStatus(_0x1b0e67);return _0x1b0e67;});})[_0xfd1d('0x19')](function(_0x46121b){var _0x4952f3;if(_0x409bdc[_0xfd1d('0x87')][_0xfd1d('0x9d')]){_0x4952f3=_[_0xfd1d('0x39')](_0x46121b,['globalStatus',_0x409bdc[_0xfd1d('0x87')][_0xfd1d('0x9d')]]);if(_0x409bdc[_0xfd1d('0x87')][_0xfd1d('0x9e')]){_0x4952f3=_[_0xfd1d('0x39')](_0x4952f3,[_0xfd1d('0x67'),_0x409bdc[_0xfd1d('0x87')][_0xfd1d('0x9e')]]);}}if(_0x4952f3)_0x46121b=_0x4952f3;if(!_0x2a1b27)return _0x46121b;return orderAgentsByStatus(_0x46121b,_0x2a1b27);})[_0xfd1d('0x19')](function(_0x368931){_0x98399e['rows']=_0x368931;return _0x98399e;})['then'](respondWithFilteredResult(_0x172d42,_0xf56c30))[_0xfd1d('0x16')](handleError(_0x172d42,null));};exports[_0xfd1d('0x9f')]=function(_0x3b69ca,_0x3996dd){var _0x6c2a54={'count':0x0,'rows':[]},_0x4c53d7={},_0x453162,_0x128f9c,_0xf81129,_0x1c6670,_0x31a642;Promise[_0xfd1d('0x86')]()[_0xfd1d('0x19')](function(){if(_0x3b69ca[_0xfd1d('0x87')][_0xfd1d('0x88')])_0x453162=validateChannel(_0x3b69ca['query'][_0xfd1d('0x88')]);var _0x5a0c58=_[_0xfd1d('0x18')](_0x453162)+_0xfd1d('0x45');var _0x2fbf51=_['map'](db[_0x5a0c58][_0xfd1d('0x8c')],function(_0x4bce6c){return{'name':_0x4bce6c['fieldName'],'type':_0x4bce6c[_0xfd1d('0x8e')][_0xfd1d('0x8f')]};});_0x4c53d7=qs[_0xfd1d('0x92')](_0x2fbf51,_0x3b69ca);if(_0x3b69ca[_0xfd1d('0x95')][_0xfd1d('0x90')]===_0xfd1d('0x95')){var _0x3f735a={'params':{'id':_0x3b69ca[_0xfd1d('0x95')][_0xfd1d('0x96')]},'query':{'section':_0x453162==='voice'&&_0x3b69ca[_0xfd1d('0x87')][_0xfd1d('0x8e')]===_0xfd1d('0xa0')?_0xfd1d('0xa1'):_[_0xfd1d('0x18')](_0x453162)+_0xfd1d('0xa2'),'type':_0x3b69ca[_0xfd1d('0x87')][_0xfd1d('0x8e')],'nolimit':!![],'sort':'name','filter':_0x3b69ca[_0xfd1d('0x87')][_0xfd1d('0x39')]}};return db[_0xfd1d('0x98')][_0xfd1d('0x99')](_0x3f735a);}return db[_0x5a0c58]['findAndCountAll'](_0x4c53d7);})['then'](function(_0x201c45){_0x6c2a54[_0xfd1d('0xb')]=_0x201c45[_0xfd1d('0xb')];_0x128f9c=_0x201c45[_0xfd1d('0x9b')];return getRealtimeQueues(_0x3b69ca,_0x453162);})[_0xfd1d('0x19')](function(_0x32aea6){_0x1c6670=_0x32aea6[_0xfd1d('0x9b')];return getRealtimeAgents();})[_0xfd1d('0x19')](function(_0x3ecf94){_0xf81129=_0x3ecf94[_0xfd1d('0x9b')];if(_0x453162!='voice')return;return getRealtimeVoiceQueueChannels();})[_0xfd1d('0x19')](function(_0x372e14){_0x31a642=_0x372e14?_0x372e14[_0xfd1d('0x9b')]:[];return initializeQueues(_0x128f9c,_0x1c6670,_0x453162,_0x3b69ca[_0xfd1d('0x87')][_0xfd1d('0x8e')]);})[_0xfd1d('0x19')](function(_0x12dff8){var _0x1bb213=_0x12dff8['map'](function(_0x468f33){if(_0x453162===_0xfd1d('0x17'))return getVoiceQueueAgents(_0x468f33,_0x128f9c,_0xf81129,_0x31a642);else return getQueueAgents(_0x468f33,_0xf81129,_0x453162);});return Promise[_0xfd1d('0x5c')](_0x1bb213);})[_0xfd1d('0x19')](function(_0x55819e){_0x6c2a54[_0xfd1d('0x9b')]=_0x55819e;return _0x6c2a54;})[_0xfd1d('0x19')](respondWithFilteredResult(_0x3996dd,_0x4c53d7))[_0xfd1d('0x16')](handleError(_0x3996dd,null));};
\ No newline at end of file
index b9940b8..02f3fe5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x2db363,_0x1b871e){var _0x5dd709=function(_0x37d449){while(--_0x37d449){_0x2db363['push'](_0x2db363['shift']());}};_0x5dd709(++_0x1b871e);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x41ee16,_0xfa94c3){_0x41ee16=_0x41ee16-0x0;var _0x1f60de=_0xcb91[_0x41ee16];return _0x1f60de;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0xa9262b,_0x57e4a6){var _0x4ab277=function(_0x4199a8){while(--_0x4199a8){_0xa9262b['push'](_0xa9262b['shift']());}};_0x4ab277(++_0x57e4a6);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x356e8d,_0x24c719){_0x356e8d=_0x356e8d-0x0;var _0x39e65a=_0xcb91[_0x356e8d];return _0x39e65a;};'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 0fa15ab..bd6441c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbeea=['DATE','sequelize','INTEGER','STRING'];(function(_0x440c90,_0x4fbfd9){var _0x33d819=function(_0x1a59ac){while(--_0x1a59ac){_0x440c90['push'](_0x440c90['shift']());}};_0x33d819(++_0x4fbfd9);}(_0xbeea,0xb1));var _0xabee=function(_0x360b2d,_0x31473c){_0x360b2d=_0x360b2d-0x0;var _0x225ca4=_0xbeea[_0x360b2d];return _0x225ca4;};'use strict';var Sequelize=require(_0xabee('0x0'));module['exports']={'state':{'type':Sequelize[_0xabee('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xabee('0x2')]},'scheduledat':{'type':Sequelize[_0xabee('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xabee('0x3')]},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xabee('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xabee('0x2')]},'campaigntype':{'type':Sequelize[_0xabee('0x2')]},'membername':{'type':Sequelize[_0xabee('0x2')]}};
\ No newline at end of file
+var _0x0be3=['DATE','INTEGER','STRING'];(function(_0xe6aba1,_0x4ff2b4){var _0x56482c=function(_0x130be4){while(--_0x130be4){_0xe6aba1['push'](_0xe6aba1['shift']());}};_0x56482c(++_0x4ff2b4);}(_0x0be3,0x9a));var _0x30be=function(_0x513aa5,_0x1fba79){_0x513aa5=_0x513aa5-0x0;var _0x1a1a7c=_0x0be3[_0x513aa5];return _0x1a1a7c;};'use strict';var Sequelize=require('sequelize');module['exports']={'state':{'type':Sequelize[_0x30be('0x0')](0x2)},'statedesc':{'type':Sequelize[_0x30be('0x1')]},'scheduledat':{'type':Sequelize[_0x30be('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x30be('0x2')]},'responsetime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x30be('0x0')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x30be('0x1')]},'campaigntype':{'type':Sequelize[_0x30be('0x1')]},'membername':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 57d86d5..2d7dea5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc584=['../../config/environment','./reportAgentPreview.attributes','define','ReportAgentPreview','report_agent_preview','../../config/logger','moment','bluebird','path','rimraf'];(function(_0x4fabd8,_0x3be1df){var _0x245b41=function(_0x3eaeff){while(--_0x3eaeff){_0x4fabd8['push'](_0x4fabd8['shift']());}};_0x245b41(++_0x3be1df);}(_0xc584,0x1a9));var _0x4c58=function(_0x54f322,_0x24a660){_0x54f322=_0x54f322-0x0;var _0xb0a1d5=_0xc584[_0x54f322];return _0xb0a1d5;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4c58('0x0'))('api');var moment=require(_0x4c58('0x1'));var BPromise=require(_0x4c58('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4c58('0x3'));var rimraf=require(_0x4c58('0x4'));var config=require(_0x4c58('0x5'));var attributes=require(_0x4c58('0x6'));module['exports']=function(_0x3e1ff3,_0x4aa5f1){return _0x3e1ff3[_0x4c58('0x7')](_0x4c58('0x8'),attributes,{'tableName':_0x4c58('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x81e5=['moment','bluebird','path','rimraf','../../config/environment','./reportAgentPreview.attributes','exports','define','ReportAgentPreview','report_agent_preview','util','../../config/logger','api'];(function(_0x30adae,_0xa23ca7){var _0x537110=function(_0x7db2e8){while(--_0x7db2e8){_0x30adae['push'](_0x30adae['shift']());}};_0x537110(++_0xa23ca7);}(_0x81e5,0x14f));var _0x581e=function(_0x18d135,_0x29254d){_0x18d135=_0x18d135-0x0;var _0x1acfcb=_0x81e5[_0x18d135];return _0x1acfcb;};'use strict';var _=require('lodash');var util=require(_0x581e('0x0'));var logger=require(_0x581e('0x1'))(_0x581e('0x2'));var moment=require(_0x581e('0x3'));var BPromise=require(_0x581e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x581e('0x5'));var rimraf=require(_0x581e('0x6'));var config=require(_0x581e('0x7'));var attributes=require(_0x581e('0x8'));module[_0x581e('0x9')]=function(_0x2699a2,_0x38ec4d){return _0x2699a2[_0x581e('0xa')](_0x581e('0xb'),attributes,{'tableName':_0x581e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cedd75d..4a5b46b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x438d=['ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateReportAgentPreview','ReportAgentPreview','create','body','options','raw','lodash','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info'];(function(_0x4fa489,_0x4cba6b){var _0x41d2ce=function(_0x364060){while(--_0x364060){_0x4fa489['push'](_0x4fa489['shift']());}};_0x41d2ce(++_0x4cba6b);}(_0x438d,0x161));var _0xd438=function(_0x2460d9,_0x15da87){_0x2460d9=_0x2460d9-0x0;var _0x4bc204=_0x438d[_0x2460d9];return _0x4bc204;};'use strict';var _=require(_0xd438('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd438('0x1'));var db=require(_0xd438('0x2'))['db'];var utils=require(_0xd438('0x3'));var logger=require('../../config/logger')(_0xd438('0x4'));var config=require(_0xd438('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xd438('0x6')][_0xd438('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x285a18,_0x36ab5e,_0x1b61a2){return new BPromise(function(_0x186e77,_0x219560){return client[_0xd438('0x8')](_0x285a18,_0x1b61a2)[_0xd438('0x9')](function(_0x21107d){logger[_0xd438('0xa')](_0xd438('0xb'),_0x36ab5e,_0xd438('0xc'));logger[_0xd438('0xd')](_0xd438('0xe'),_0x36ab5e,_0xd438('0xc'),JSON[_0xd438('0xf')](_0x21107d));if(_0x21107d[_0xd438('0x10')]){if(_0x21107d[_0xd438('0x10')][_0xd438('0x11')]===0x1f4){logger[_0xd438('0x10')](_0xd438('0xb'),_0x36ab5e,_0x21107d['error'][_0xd438('0x12')]);return _0x219560(_0x21107d[_0xd438('0x10')]['message']);}logger[_0xd438('0x10')](_0xd438('0xb'),_0x36ab5e,_0x21107d[_0xd438('0x10')]['message']);return _0x186e77(_0x21107d[_0xd438('0x10')][_0xd438('0x12')]);}else{logger[_0xd438('0xa')](_0xd438('0xb'),_0x36ab5e,_0xd438('0xc'));_0x186e77(_0x21107d[_0xd438('0x13')][_0xd438('0x12')]);}})['catch'](function(_0x109fb4){logger[_0xd438('0x10')](_0xd438('0xb'),_0x36ab5e,_0x109fb4);_0x219560(_0x109fb4);});});}exports[_0xd438('0x14')]=function(_0x160df3){var _0xb24217=this;return new Promise(function(_0x483bd2,_0x252e13){return db[_0xd438('0x15')][_0xd438('0x16')](_0x160df3[_0xd438('0x17')],{'raw':_0x160df3[_0xd438('0x18')]?_0x160df3[_0xd438('0x18')][_0xd438('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x13e092){logger[_0xd438('0xa')](_0xd438('0x14'),_0x160df3);logger[_0xd438('0xd')](_0xd438('0x14'),_0x160df3,JSON[_0xd438('0xf')](_0x13e092));_0x483bd2(_0x13e092);})['catch'](function(_0x5a27b6){logger[_0xd438('0x10')](_0xd438('0x14'),_0x5a27b6[_0xd438('0x12')],_0x160df3);_0x252e13(_0xb24217[_0xd438('0x10')](0x1f4,_0x5a27b6['message']));});});};
\ No newline at end of file
+var _0x08c6=['message','info','result','catch','CreateReportAgentPreview','create','body','options','raw','debug','lodash','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','then','request\x20sent','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','ReportAgentPreview,\x20%s,\x20%s'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x08c6,0x1f0));var _0x608c=function(_0x20a558,_0x160e0e){_0x20a558=_0x20a558-0x0;var _0x53d3f7=_0x08c6[_0x20a558];return _0x53d3f7;};'use strict';var _=require(_0x608c('0x0'));var util=require('util');var moment=require(_0x608c('0x1'));var BPromise=require('bluebird');var rs=require(_0x608c('0x2'));var fs=require('fs');var Redis=require(_0x608c('0x3'));var db=require(_0x608c('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x608c('0x5'));var config=require(_0x608c('0x6'));var jayson=require(_0x608c('0x7'));var client=jayson['client'][_0x608c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x162c47,_0x28f1db,_0xac494a){return new BPromise(function(_0x555eec,_0x586a59){return client[_0x608c('0x9')](_0x162c47,_0xac494a)[_0x608c('0xa')](function(_0x687fc1){logger['info']('ReportAgentPreview,\x20%s,\x20%s',_0x28f1db,_0x608c('0xb'));logger['debug'](_0x608c('0xc'),_0x28f1db,_0x608c('0xb'),JSON[_0x608c('0xd')](_0x687fc1));if(_0x687fc1[_0x608c('0xe')]){if(_0x687fc1[_0x608c('0xe')][_0x608c('0xf')]===0x1f4){logger['error'](_0x608c('0x10'),_0x28f1db,_0x687fc1[_0x608c('0xe')][_0x608c('0x11')]);return _0x586a59(_0x687fc1[_0x608c('0xe')][_0x608c('0x11')]);}logger[_0x608c('0xe')](_0x608c('0x10'),_0x28f1db,_0x687fc1[_0x608c('0xe')][_0x608c('0x11')]);return _0x555eec(_0x687fc1[_0x608c('0xe')]['message']);}else{logger[_0x608c('0x12')](_0x608c('0x10'),_0x28f1db,_0x608c('0xb'));_0x555eec(_0x687fc1[_0x608c('0x13')][_0x608c('0x11')]);}})[_0x608c('0x14')](function(_0x227cf7){logger[_0x608c('0xe')](_0x608c('0x10'),_0x28f1db,_0x227cf7);_0x586a59(_0x227cf7);});});}exports[_0x608c('0x15')]=function(_0x27296c){var _0x281afa=this;return new Promise(function(_0x38f418,_0x1342cd){return db['ReportAgentPreview'][_0x608c('0x16')](_0x27296c[_0x608c('0x17')],{'raw':_0x27296c['options']?_0x27296c[_0x608c('0x18')][_0x608c('0x19')]===undefined?!![]:![]:!![]})[_0x608c('0xa')](function(_0x3b7d55){logger[_0x608c('0x12')]('CreateReportAgentPreview',_0x27296c);logger[_0x608c('0x1a')](_0x608c('0x15'),_0x27296c,JSON[_0x608c('0xd')](_0x3b7d55));_0x38f418(_0x3b7d55);})['catch'](function(_0x17a9b1){logger[_0x608c('0xe')]('CreateReportAgentPreview',_0x17a9b1['message'],_0x27296c);_0x1342cd(_0x281afa['error'](0x1f4,_0x17a9b1[_0x608c('0x11')]));});});};
\ No newline at end of file
index 10bf343..50ac75a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x826a=['agentCapacity','telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','mail','showMailQueues','/chat/queues/:id/notify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','fax','/fax/queues/:id','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','multer','util','path','express','../../components/auth/service','./rpc.controller','get','/voice/channels','voiceChannels','/voice/channels/:uniqueid/mixmonitor','isAuthenticated','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','/voice/queues','voiceQueues','/chat/queues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents','put','/agents/:id/capacity'];(function(_0x51cc1d,_0xaa88ae){var _0x2eb9f2=function(_0x1ca525){while(--_0x1ca525){_0x51cc1d['push'](_0x51cc1d['shift']());}};_0x2eb9f2(++_0xaa88ae);}(_0x826a,0x1d7));var _0xa826=function(_0x4b0e12,_0x29b03e){_0x4b0e12=_0x4b0e12-0x0;var _0x14f2ca=_0x826a[_0x4b0e12];return _0x14f2ca;};'use strict';var multer=require(_0xa826('0x0'));var util=require(_0xa826('0x1'));var path=require(_0xa826('0x2'));var express=require(_0xa826('0x3'));var router=express['Router']();var auth=require(_0xa826('0x4'));var controller=require(_0xa826('0x5'));router[_0xa826('0x6')](_0xa826('0x7'),auth['isAuthenticated'](),controller[_0xa826('0x8')]);router[_0xa826('0x6')](_0xa826('0x9'),auth[_0xa826('0xa')](),controller[_0xa826('0xb')]);router['get'](_0xa826('0xc'),auth['isAuthenticated'](),controller['voiceChannelStopMixMonitor']);router['get'](_0xa826('0xd'),auth[_0xa826('0xa')](),controller[_0xa826('0xe')]);router[_0xa826('0x6')](_0xa826('0xf'),auth['isAuthenticated'](),controller['chatQueues']);router[_0xa826('0x6')]('/mail/queues',auth[_0xa826('0xa')](),controller[_0xa826('0x10')]);router[_0xa826('0x6')](_0xa826('0x11'),auth[_0xa826('0xa')](),controller[_0xa826('0x12')]);router[_0xa826('0x6')](_0xa826('0x13'),auth['isAuthenticated'](),controller[_0xa826('0x14')]);router[_0xa826('0x6')](_0xa826('0x15'),auth[_0xa826('0xa')](),controller[_0xa826('0x16')]);router[_0xa826('0x6')](_0xa826('0x17'),auth[_0xa826('0xa')](),controller[_0xa826('0x18')]);router['get'](_0xa826('0x19'),auth[_0xa826('0xa')](),controller['faxQueues']);router[_0xa826('0x6')](_0xa826('0x1a'),auth[_0xa826('0xa')](),controller[_0xa826('0x1b')]);router[_0xa826('0x6')](_0xa826('0x1c'),auth['isAuthenticated'](),controller[_0xa826('0x1d')]);router[_0xa826('0x6')](_0xa826('0x1e'),auth[_0xa826('0xa')](),controller[_0xa826('0x1f')]);router[_0xa826('0x6')]('/voice/queues/channels/:uniqueid/hangup',auth[_0xa826('0xa')](),controller[_0xa826('0x20')]);router[_0xa826('0x6')](_0xa826('0x21'),auth['isAuthenticated'](),controller[_0xa826('0x22')]);router[_0xa826('0x6')](_0xa826('0x23'),auth[_0xa826('0xa')](),controller[_0xa826('0x24')]);router['put'](_0xa826('0x23'),auth[_0xa826('0xa')](),controller[_0xa826('0x25')]);router[_0xa826('0x6')](_0xa826('0x26'),auth[_0xa826('0xa')](),controller[_0xa826('0x27')]);router[_0xa826('0x6')](_0xa826('0x28'),auth['isAuthenticated'](),controller[_0xa826('0x29')]);router['get'](_0xa826('0x2a'),auth['isAuthenticated'](),controller['agents']);router[_0xa826('0x2b')](_0xa826('0x2c'),auth[_0xa826('0xa')](),controller[_0xa826('0x2d')]);router[_0xa826('0x6')]('/telephones',auth['isAuthenticated'](),controller[_0xa826('0x2e')]);router[_0xa826('0x6')](_0xa826('0x2f'),auth[_0xa826('0xa')](),controller[_0xa826('0x30')]);router[_0xa826('0x6')](_0xa826('0x31'),auth['isAuthenticated'](),controller[_0xa826('0x32')]);router['get'](_0xa826('0x33'),auth[_0xa826('0xa')](),controller[_0xa826('0x34')]);router[_0xa826('0x6')](_0xa826('0x35'),auth[_0xa826('0xa')](),controller[_0xa826('0x36')]);router[_0xa826('0x6')](_0xa826('0x37'),auth['isAuthenticated'](),controller['mailQueuesWaitingInteractions']);router['get'](_0xa826('0x38'),auth[_0xa826('0xa')](),controller[_0xa826('0x39')]);router['get'](_0xa826('0x3a'),auth[_0xa826('0xa')](),controller['openchannelQueuesIdWaitingInteractions']);router[_0xa826('0x6')]('/sms/queues/waitinginteractions',auth['isAuthenticated'](),controller['smsQueuesWaitingInteractions']);router[_0xa826('0x6')](_0xa826('0x3b'),auth[_0xa826('0xa')](),controller[_0xa826('0x3c')]);router['get'](_0xa826('0x3d'),auth[_0xa826('0xa')](),controller[_0xa826('0x3e')]);router[_0xa826('0x3f')](_0xa826('0x40'),auth[_0xa826('0xa')](),controller[_0xa826('0x41')](_0xa826('0x42')));router[_0xa826('0x6')]('/mail/queues/:id',auth[_0xa826('0xa')](),controller[_0xa826('0x43')]);router[_0xa826('0x3f')](_0xa826('0x44'),auth[_0xa826('0xa')](),controller[_0xa826('0x41')](_0xa826('0x45')));router['get'](_0xa826('0x46'),auth[_0xa826('0xa')](),controller[_0xa826('0x47')]);router[_0xa826('0x3f')](_0xa826('0x48'),auth[_0xa826('0xa')](),controller['queueNotify'](_0xa826('0x49')));router[_0xa826('0x6')](_0xa826('0x4a'),auth[_0xa826('0xa')](),controller['showFaxQueues']);router[_0xa826('0x3f')]('/openchannel/queues/:id/notify',auth[_0xa826('0xa')](),controller[_0xa826('0x41')]('openchannel'));router['get']('/openchannel/queues/:id',auth[_0xa826('0xa')](),controller[_0xa826('0x4b')]);router[_0xa826('0x3f')](_0xa826('0x4c'),auth[_0xa826('0xa')](),controller[_0xa826('0x41')](_0xa826('0x4d')));router[_0xa826('0x3f')](_0xa826('0x4e'),auth['isAuthenticated'](),controller['queueNotify'](_0xa826('0x4f')));router[_0xa826('0x6')](_0xa826('0x50'),auth[_0xa826('0xa')](),controller['showSmsQueues']);router[_0xa826('0x6')](_0xa826('0x51'),auth[_0xa826('0xa')](),controller[_0xa826('0x52')]);router[_0xa826('0x3f')](_0xa826('0x53'),auth['isAuthenticated'](),controller[_0xa826('0x54')]);module[_0xa826('0x55')]=router;
\ No newline at end of file
+var _0x67c5=['/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','/mail/queues/:id/notify','queueNotify','mail','post','/chat/queues/:id/notify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','fax','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','sms','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','agentNotify','exports','multer','util','express','Router','../../components/auth/service','./rpc.controller','get','/voice/channels','/voice/channels/:uniqueid/mixmonitor','isAuthenticated','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/chat/queues','/mail/queues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues','/fax/queues','faxQueues','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound','/outbound/channels','outboundChannels','/agents','agents','/telephones','telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts'];(function(_0x33f3ac,_0x512c0b){var _0x5d1829=function(_0x387fff){while(--_0x387fff){_0x33f3ac['push'](_0x33f3ac['shift']());}};_0x5d1829(++_0x512c0b);}(_0x67c5,0x1dd));var _0x567c=function(_0x48e85e,_0x19cba9){_0x48e85e=_0x48e85e-0x0;var _0x11f695=_0x67c5[_0x48e85e];return _0x11f695;};'use strict';var multer=require(_0x567c('0x0'));var util=require(_0x567c('0x1'));var path=require('path');var express=require(_0x567c('0x2'));var router=express[_0x567c('0x3')]();var auth=require(_0x567c('0x4'));var controller=require(_0x567c('0x5'));router[_0x567c('0x6')](_0x567c('0x7'),auth['isAuthenticated'](),controller['voiceChannels']);router[_0x567c('0x6')](_0x567c('0x8'),auth[_0x567c('0x9')](),controller[_0x567c('0xa')]);router[_0x567c('0x6')](_0x567c('0xb'),auth[_0x567c('0x9')](),controller[_0x567c('0xc')]);router[_0x567c('0x6')](_0x567c('0xd'),auth[_0x567c('0x9')](),controller[_0x567c('0xe')]);router[_0x567c('0x6')](_0x567c('0xf'),auth[_0x567c('0x9')](),controller['chatQueues']);router['get'](_0x567c('0x10'),auth[_0x567c('0x9')](),controller[_0x567c('0x11')]);router[_0x567c('0x6')](_0x567c('0x12'),auth[_0x567c('0x9')](),controller[_0x567c('0x13')]);router[_0x567c('0x6')](_0x567c('0x14'),auth[_0x567c('0x9')](),controller[_0x567c('0x15')]);router[_0x567c('0x6')](_0x567c('0x16'),auth['isAuthenticated'](),controller[_0x567c('0x17')]);router[_0x567c('0x6')]('/whatsapp/queues',auth['isAuthenticated'](),controller['whatsappQueues']);router[_0x567c('0x6')](_0x567c('0x18'),auth[_0x567c('0x9')](),controller[_0x567c('0x19')]);router[_0x567c('0x6')]('/voice/queues/preview/:id',auth[_0x567c('0x9')](),controller[_0x567c('0x1a')]);router[_0x567c('0x6')](_0x567c('0x1b'),auth[_0x567c('0x9')](),controller[_0x567c('0x1c')]);router[_0x567c('0x6')](_0x567c('0x1d'),auth[_0x567c('0x9')](),controller[_0x567c('0x1e')]);router[_0x567c('0x6')](_0x567c('0x1f'),auth['isAuthenticated'](),controller[_0x567c('0x20')]);router[_0x567c('0x6')](_0x567c('0x21'),auth[_0x567c('0x9')](),controller['voiceQueuesChannelRedirect']);router[_0x567c('0x6')](_0x567c('0x22'),auth[_0x567c('0x9')](),controller[_0x567c('0x23')]);router[_0x567c('0x24')](_0x567c('0x22'),auth[_0x567c('0x9')](),controller[_0x567c('0x25')]);router[_0x567c('0x6')](_0x567c('0x26'),auth['isAuthenticated'](),controller['outbound']);router[_0x567c('0x6')](_0x567c('0x27'),auth[_0x567c('0x9')](),controller[_0x567c('0x28')]);router[_0x567c('0x6')](_0x567c('0x29'),auth[_0x567c('0x9')](),controller[_0x567c('0x2a')]);router[_0x567c('0x24')]('/agents/:id/capacity',auth['isAuthenticated'](),controller['agentCapacity']);router['get'](_0x567c('0x2b'),auth['isAuthenticated'](),controller[_0x567c('0x2c')]);router[_0x567c('0x6')](_0x567c('0x2d'),auth[_0x567c('0x9')](),controller[_0x567c('0x2e')]);router['get'](_0x567c('0x2f'),auth[_0x567c('0x9')](),controller[_0x567c('0x30')]);router[_0x567c('0x6')](_0x567c('0x31'),auth['isAuthenticated'](),controller[_0x567c('0x32')]);router[_0x567c('0x6')](_0x567c('0x33'),auth['isAuthenticated'](),controller[_0x567c('0x34')]);router[_0x567c('0x6')]('/mail/queues/waitinginteractions',auth[_0x567c('0x9')](),controller[_0x567c('0x35')]);router[_0x567c('0x6')](_0x567c('0x36'),auth[_0x567c('0x9')](),controller[_0x567c('0x37')]);router[_0x567c('0x6')](_0x567c('0x38'),auth['isAuthenticated'](),controller[_0x567c('0x39')]);router[_0x567c('0x6')](_0x567c('0x3a'),auth[_0x567c('0x9')](),controller[_0x567c('0x3b')]);router[_0x567c('0x6')](_0x567c('0x3c'),auth[_0x567c('0x9')](),controller[_0x567c('0x3d')]);router['get'](_0x567c('0x3e'),auth[_0x567c('0x9')](),controller[_0x567c('0x3f')]);router['post'](_0x567c('0x40'),auth[_0x567c('0x9')](),controller[_0x567c('0x41')](_0x567c('0x42')));router[_0x567c('0x6')]('/mail/queues/:id',auth[_0x567c('0x9')](),controller['showMailQueues']);router[_0x567c('0x43')](_0x567c('0x44'),auth[_0x567c('0x9')](),controller[_0x567c('0x41')](_0x567c('0x45')));router['get'](_0x567c('0x46'),auth[_0x567c('0x9')](),controller[_0x567c('0x47')]);router['post'](_0x567c('0x48'),auth['isAuthenticated'](),controller[_0x567c('0x41')](_0x567c('0x49')));router[_0x567c('0x6')](_0x567c('0x4a'),auth['isAuthenticated'](),controller[_0x567c('0x4b')]);router[_0x567c('0x43')](_0x567c('0x4c'),auth[_0x567c('0x9')](),controller['queueNotify'](_0x567c('0x4d')));router[_0x567c('0x6')](_0x567c('0x4e'),auth['isAuthenticated'](),controller[_0x567c('0x4f')]);router[_0x567c('0x43')]('/sms/queues/:id/notify',auth[_0x567c('0x9')](),controller[_0x567c('0x41')](_0x567c('0x50')));router[_0x567c('0x43')]('/whatsapp/queues/:id/notify',auth[_0x567c('0x9')](),controller[_0x567c('0x41')](_0x567c('0x51')));router[_0x567c('0x6')](_0x567c('0x52'),auth[_0x567c('0x9')](),controller[_0x567c('0x53')]);router[_0x567c('0x6')](_0x567c('0x54'),auth['isAuthenticated'](),controller[_0x567c('0x55')]);router[_0x567c('0x43')]('/agents/:id/notify',auth[_0x567c('0x9')](),controller[_0x567c('0x56')]);module[_0x567c('0x57')]=router;
\ No newline at end of file
index 4cc00dc..7ce751b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['name','send','isNil','rows','find','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','merge','params','catch','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','VoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','VoiceQueuesPreview','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','Outbound','outboundChannels','OutboundChannels','Agents','agentCapacity','interaction','hasOwnProperty','MemberReport','findAll','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','findOrCreate','user','INTERACTION','interface','SIP/%s','agent','AgentCapacity','capacity','trunks','Trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','showMailQueues','MailQueues','mailAccounts','OpenchannelQueues','showOpenchannelQueues','SmsQueues','showSmsQueues','whatsappQueues','showWhatsappQueues','WhatsappQueues','FaxQueues','showFaxQueues','faxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','map','queue_id','value','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Queue','findOne','\x20Queue\x20not\x20found','Interaction','update','MessageId','From','Account','QueueId','TransferReport','create','Start','queue','queueTransferTimeout','agentNotify','Channel\x20field\x20is\x20mandatory','channel','User','Agent\x20not\x20found','Message','messageId','\x20Message\x20not\x20found','agentTransferTimeout','*,*,*,*','bluebird','moment','util','../../mysqldb','../../config/logger','api','jayson/promise','client','http','request','then','error','code','message','result','status','json','sendStatus','stack'];(function(_0x480b76,_0x4d59f6){var _0x547487=function(_0x1cd24f){while(--_0x1cd24f){_0x480b76['push'](_0x480b76['shift']());}};_0x547487(++_0x4d59f6);}(_0xa41a,0x6b));var _0xaa41=function(_0x28906f,_0x2b2e12){_0x28906f=_0x28906f-0x0;var _0x9b69c1=_0xa41a[_0x28906f];return _0x9b69c1;};'use strict';var BPromise=require(_0xaa41('0x0'));var moment=require(_0xaa41('0x1'));var _=require('lodash');var util=require(_0xaa41('0x2'));var db=require(_0xaa41('0x3'))['db'];var logger=require(_0xaa41('0x4'))(_0xaa41('0x5'));var jayson=require(_0xaa41('0x6'));var amiClient=jayson[_0xaa41('0x7')][_0xaa41('0x8')]({'port':0x232a});var mailClient=jayson[_0xaa41('0x7')]['http']({'port':0x232b});var routingClient=jayson[_0xaa41('0x7')][_0xaa41('0x8')]({'port':0x232c});function respondWithRpcPromise(_0x54bc5a,_0x5b1fff,_0x179545){return new BPromise(function(_0x202cce,_0x588ab4){var _0x31df43=_0x179545?_0x179545:amiClient;return _0x31df43[_0xaa41('0x9')](_0x54bc5a,_0x5b1fff)[_0xaa41('0xa')](function(_0x1cc344){if(_0x1cc344[_0xaa41('0xb')]){if(_0x1cc344[_0xaa41('0xb')][_0xaa41('0xc')]===0x1f4){return _0x588ab4(_0x1cc344[_0xaa41('0xb')][_0xaa41('0xd')]);}return _0x202cce(_0x1cc344['error'][_0xaa41('0xd')]);}else{_0x202cce(_0x1cc344[_0xaa41('0xe')]);}})['catch'](function(_0x54827c){_0x588ab4(_0x54827c);});});}function respondWithResult(_0x1d0a54,_0x518b5b){_0x518b5b=_0x518b5b||0xc8;return function(_0x19bd69){if(_0x19bd69){return _0x1d0a54[_0xaa41('0xf')](_0x518b5b)[_0xaa41('0x10')](_0x19bd69);}return _0x1d0a54[_0xaa41('0x11')](0x194);};}function handleError(_0x6f9ade,_0x4eaf81){_0x4eaf81=_0x4eaf81||0x1f4;return function(_0x1e9d7f){logger[_0xaa41('0xb')](_0x1e9d7f[_0xaa41('0x12')]);if(_0x1e9d7f[_0xaa41('0x13')]){delete _0x1e9d7f[_0xaa41('0x13')];}_0x6f9ade[_0xaa41('0xf')](_0x4eaf81)[_0xaa41('0x14')](_0x1e9d7f);};}function findById(_0x550ad5){return function(_0x2d868a){if(!_[_0xaa41('0x15')](_0x550ad5)&&!_[_0xaa41('0x15')](_0x2d868a)&&!_[_0xaa41('0x15')](_0x2d868a[_0xaa41('0x16')])){return _[_0xaa41('0x17')](_0x2d868a[_0xaa41('0x16')],function(_0x46e6d3){return _0x46e6d3['id']==_0x550ad5;});}return null;};}exports[_0xaa41('0x18')]=function(_0x4fe1a4,_0x5cd936){return respondWithRpcPromise(_0xaa41('0x19'),_0x4fe1a4[_0xaa41('0x1a')])[_0xaa41('0xa')](respondWithResult(_0x5cd936,null))['catch'](handleError(_0x5cd936,null));};exports[_0xaa41('0x1b')]=function(_0x1f692b,_0x4e768e){return respondWithRpcPromise('VoiceChannelMixMonitor',_[_0xaa41('0x1c')](_0x1f692b['query'],_0x1f692b[_0xaa41('0x1d')]))[_0xaa41('0xa')](respondWithResult(_0x4e768e,null))[_0xaa41('0x1e')](handleError(_0x4e768e,null));};exports[_0xaa41('0x1f')]=function(_0x1d623c,_0x4eb01f){return respondWithRpcPromise(_0xaa41('0x20'),_[_0xaa41('0x1c')](_0x1d623c[_0xaa41('0x1a')],_0x1d623c[_0xaa41('0x1d')]))[_0xaa41('0xa')](respondWithResult(_0x4eb01f,null))[_0xaa41('0x1e')](handleError(_0x4eb01f,null));};exports['voiceQueues']=function(_0x5795f4,_0x16aec5){return respondWithRpcPromise('VoiceQueues',_0x5795f4['query'])[_0xaa41('0xa')](respondWithResult(_0x16aec5,null))['catch'](handleError(_0x16aec5,null));};exports['showVoiceQueues']=function(_0x2d0ac0,_0x9c8c21){return respondWithRpcPromise(_0xaa41('0x21'),_0x2d0ac0[_0xaa41('0x1a')])[_0xaa41('0xa')](findById(_0x2d0ac0[_0xaa41('0x1d')]['id']))['then'](respondWithResult(_0x9c8c21,null))[_0xaa41('0x1e')](handleError(_0x9c8c21,null));};exports[_0xaa41('0x22')]=function(_0x63c18c,_0x9a16e3){return respondWithRpcPromise(_0xaa41('0x23'),_[_0xaa41('0x1c')](_0x63c18c[_0xaa41('0x24')],_0x63c18c[_0xaa41('0x1d')]))['then'](respondWithResult(_0x9a16e3,null))[_0xaa41('0x1e')](handleError(_0x9a16e3,null));};exports['voiceQueuesPreview']=function(_0x5dad80,_0x714537){return respondWithRpcPromise(_0xaa41('0x25'),_['merge'](_0x5dad80[_0xaa41('0x1a')],_0x5dad80[_0xaa41('0x1d')]))['then'](respondWithResult(_0x714537,null))['catch'](handleError(_0x714537,null));};exports['voiceQueuesChannels']=function(_0x1cf3da,_0x2f5cc0){return respondWithRpcPromise(_0xaa41('0x26'),_0x1cf3da[_0xaa41('0x1a')])['then'](respondWithResult(_0x2f5cc0,null))[_0xaa41('0x1e')](handleError(_0x2f5cc0,null));};exports[_0xaa41('0x27')]=function(_0x3e0204,_0x4de770){return respondWithRpcPromise(_0xaa41('0x28'),_[_0xaa41('0x1c')](_0x3e0204[_0xaa41('0x1a')],_0x3e0204['params']))[_0xaa41('0xa')](respondWithResult(_0x4de770,null))[_0xaa41('0x1e')](handleError(_0x4de770,null));};exports['voiceQueuesChannelHangup']=function(_0x23eb50,_0x13b6d4){return respondWithRpcPromise(_0xaa41('0x29'),_['merge'](_0x23eb50[_0xaa41('0x1a')],_0x23eb50['params']))[_0xaa41('0xa')](respondWithResult(_0x13b6d4,null))[_0xaa41('0x1e')](handleError(_0x13b6d4,null));};exports[_0xaa41('0x2a')]=function(_0x49b77a,_0x526377){return respondWithRpcPromise('VoiceQueuesChannelRedirect',_[_0xaa41('0x1c')](_0x49b77a[_0xaa41('0x1a')],_0x49b77a[_0xaa41('0x1d')]))[_0xaa41('0xa')](respondWithResult(_0x526377,null))['catch'](handleError(_0x526377,null));};exports['outbound']=function(_0x267999,_0x5673c){return respondWithRpcPromise(_0xaa41('0x2b'),_0x267999[_0xaa41('0x1a')])[_0xaa41('0xa')](respondWithResult(_0x5673c,null))[_0xaa41('0x1e')](handleError(_0x5673c,null));};exports[_0xaa41('0x2c')]=function(_0x5e9879,_0x3adc28){return respondWithRpcPromise(_0xaa41('0x2d'),_0x5e9879[_0xaa41('0x1a')])[_0xaa41('0xa')](respondWithResult(_0x3adc28,null))['catch'](handleError(_0x3adc28,null));};exports['agents']=function(_0x42b759,_0x275fa3){var _0x5eae08;return respondWithRpcPromise(_0xaa41('0x2e'),_0x42b759['query'])[_0xaa41('0xa')](function(_0x25f2df){_0x5eae08=_0x25f2df;return respondWithRpcPromise(_0xaa41('0x2e'),_0x42b759[_0xaa41('0x1a')],routingClient);})[_0xaa41('0xa')](function(_0x12ba1a){return _[_0xaa41('0x1c')]({},_0x12ba1a,_0x5eae08);})[_0xaa41('0xa')](respondWithResult(_0x275fa3,null))['catch'](handleError(_0x275fa3,null));};exports[_0xaa41('0x2f')]=function(_0x2abf39,_0x35c685){if(_0x2abf39[_0xaa41('0x24')]&&_0x2abf39[_0xaa41('0x24')][_0xaa41('0x30')]&&_0x2abf39['user']&&_0x2abf39['user'][_0xaa41('0x13')]){for(var _0x4f9086 in _0x2abf39[_0xaa41('0x24')][_0xaa41('0x30')]){if(_0x2abf39[_0xaa41('0x24')][_0xaa41('0x30')][_0xaa41('0x31')](_0x4f9086)){db[_0xaa41('0x32')][_0xaa41('0x33')]({'where':{'channel':_0x4f9086,'membername':_0x2abf39['user'][_0xaa41('0x13')],'type':'INTERACTION','exitAt':null,'uniqueid':_0x2abf39['body'][_0xaa41('0x30')][_0x4f9086]&&_0x2abf39['body']['interaction'][_0x4f9086]['length']?{'$notIn':_0x2abf39[_0xaa41('0x24')]['interaction'][_0x4f9086]}:{'$ne':null}}})[_0xaa41('0xa')](function(_0x198716){var _0x4a6882=moment()['format'](_0xaa41('0x34'));for(var _0x1b7b97=0x0,_0x1bb973=_0x198716[_0xaa41('0x35')];_0x1b7b97<_0x1bb973;_0x1b7b97+=0x1){_0x198716[_0x1b7b97][_0xaa41('0x36')]({'exitAt':_0x4a6882});}});for(var _0x337993=0x0;_0x337993<_0x2abf39[_0xaa41('0x24')][_0xaa41('0x30')][_0x4f9086][_0xaa41('0x35')];_0x337993+=0x1){db['MemberReport'][_0xaa41('0x37')]({'where':{'channel':_0x4f9086,'membername':_0x2abf39[_0xaa41('0x38')][_0xaa41('0x13')],'type':_0xaa41('0x39'),'uniqueid':_0x2abf39[_0xaa41('0x24')][_0xaa41('0x30')][_0x4f9086][_0x337993],'exitAt':null},'defaults':{'channel':_0x4f9086,'membername':_0x2abf39['user'][_0xaa41('0x13')],'interface':_[_0xaa41('0x15')](_0x2abf39[_0xaa41('0x38')][_0xaa41('0x3a')])?util['format'](_0xaa41('0x3b'),_0x2abf39['user']['name']):_0x2abf39[_0xaa41('0x38')][_0xaa41('0x3a')],'type':_0xaa41('0x39'),'enterAt':moment()['format'](_0xaa41('0x34')),'role':_0xaa41('0x3c'),'internal':_0x2abf39[_0xaa41('0x38')]['internal'],'uniqueid':_0x2abf39[_0xaa41('0x24')][_0xaa41('0x30')][_0x4f9086][_0x337993]}});}}}}return respondWithRpcPromise(_0xaa41('0x3d'),{'id':_0x2abf39[_0xaa41('0x1d')]['id'],'capacity':_0x2abf39[_0xaa41('0x24')][_0xaa41('0x3e')]},routingClient)[_0xaa41('0xa')](respondWithResult(_0x35c685,null))[_0xaa41('0x1e')](handleError(_0x35c685,null));};exports['telephones']=function(_0x9f0a81,_0x5bef5f){return respondWithRpcPromise('Telephones',_0x9f0a81[_0xaa41('0x1a')])[_0xaa41('0xa')](respondWithResult(_0x5bef5f,null))[_0xaa41('0x1e')](handleError(_0x5bef5f,null));};exports[_0xaa41('0x3f')]=function(_0x14aab0,_0x288db3){return respondWithRpcPromise(_0xaa41('0x40'),_0x14aab0[_0xaa41('0x1a')])['then'](respondWithResult(_0x288db3,null))[_0xaa41('0x1e')](handleError(_0x288db3,null));};exports[_0xaa41('0x41')]=function(_0x1d518f,_0x4f9e92){return respondWithRpcPromise(_0xaa41('0x42'),_0x1d518f[_0xaa41('0x1a')])['then'](respondWithResult(_0x4f9e92,null))[_0xaa41('0x1e')](handleError(_0x4f9e92,null));};exports[_0xaa41('0x43')]=function(_0x283b3b,_0x4e5a2e){return respondWithRpcPromise(_0xaa41('0x44'),_0x283b3b[_0xaa41('0x1a')],routingClient)['then'](respondWithResult(_0x4e5a2e,null))['catch'](handleError(_0x4e5a2e,null));};exports[_0xaa41('0x45')]=function(_0x3cd14f,_0x3a29d2){return respondWithRpcPromise('ChatQueues',_0x3cd14f[_0xaa41('0x1a')],routingClient)[_0xaa41('0xa')](findById(_0x3cd14f[_0xaa41('0x1d')]['id']))[_0xaa41('0xa')](respondWithResult(_0x3a29d2,null))[_0xaa41('0x1e')](handleError(_0x3a29d2,null));};exports['mailQueues']=function(_0x2ae70c,_0x57cb70){return respondWithRpcPromise('MailQueues',_0x2ae70c[_0xaa41('0x1a')],routingClient)['then'](respondWithResult(_0x57cb70,null))[_0xaa41('0x1e')](handleError(_0x57cb70,null));};exports[_0xaa41('0x46')]=function(_0x169ddf,_0x5e83e1){return respondWithRpcPromise(_0xaa41('0x47'),_0x169ddf[_0xaa41('0x1a')],routingClient)[_0xaa41('0xa')](findById(_0x169ddf[_0xaa41('0x1d')]['id']))[_0xaa41('0xa')](respondWithResult(_0x5e83e1,null))[_0xaa41('0x1e')](handleError(_0x5e83e1,null));};exports[_0xaa41('0x48')]=function(_0x337059,_0x3f91f3){return respondWithRpcPromise('MailAccounts',_0x337059[_0xaa41('0x1a')],mailClient)[_0xaa41('0xa')](respondWithResult(_0x3f91f3,null))[_0xaa41('0x1e')](handleError(_0x3f91f3,null));};exports['openchannelQueues']=function(_0x3fe47a,_0x2caf5c){return respondWithRpcPromise(_0xaa41('0x49'),_0x3fe47a[_0xaa41('0x1a')],routingClient)[_0xaa41('0xa')](respondWithResult(_0x2caf5c,null))[_0xaa41('0x1e')](handleError(_0x2caf5c,null));};exports[_0xaa41('0x4a')]=function(_0x5ea056,_0x55a85c){return respondWithRpcPromise('OpenchannelQueues',_0x5ea056['query'],routingClient)['then'](findById(_0x5ea056['params']['id']))[_0xaa41('0xa')](respondWithResult(_0x55a85c,null))['catch'](handleError(_0x55a85c,null));};exports['smsQueues']=function(_0x24c6f3,_0x40a524){return respondWithRpcPromise(_0xaa41('0x4b'),_0x24c6f3[_0xaa41('0x1a')],routingClient)['then'](respondWithResult(_0x40a524,null))[_0xaa41('0x1e')](handleError(_0x40a524,null));};exports[_0xaa41('0x4c')]=function(_0x1ddb6c,_0x46822f){return respondWithRpcPromise(_0xaa41('0x4b'),_0x1ddb6c[_0xaa41('0x1a')],routingClient)[_0xaa41('0xa')](findById(_0x1ddb6c[_0xaa41('0x1d')]['id']))[_0xaa41('0xa')](respondWithResult(_0x46822f,null))['catch'](handleError(_0x46822f,null));};exports[_0xaa41('0x4d')]=function(_0x2d2af8,_0x50170f){return respondWithRpcPromise('WhatsappQueues',_0x2d2af8['query'],routingClient)[_0xaa41('0xa')](respondWithResult(_0x50170f,null))['catch'](handleError(_0x50170f,null));};exports[_0xaa41('0x4e')]=function(_0x5c8028,_0x5423b6){return respondWithRpcPromise(_0xaa41('0x4f'),_0x5c8028['query'],routingClient)[_0xaa41('0xa')](findById(_0x5c8028[_0xaa41('0x1d')]['id']))[_0xaa41('0xa')](respondWithResult(_0x5423b6,null))[_0xaa41('0x1e')](handleError(_0x5423b6,null));};exports['faxQueues']=function(_0x5be61b,_0x339db3){return respondWithRpcPromise(_0xaa41('0x50'),_0x5be61b['query'],routingClient)['then'](respondWithResult(_0x339db3,null))[_0xaa41('0x1e')](handleError(_0x339db3,null));};exports[_0xaa41('0x51')]=function(_0x304694,_0xbeafb5){return respondWithRpcPromise(_0xaa41('0x50'),_0x304694['query'],routingClient)[_0xaa41('0xa')](findById(_0x304694['params']['id']))['then'](respondWithResult(_0xbeafb5,null))['catch'](handleError(_0xbeafb5,null));};exports[_0xaa41('0x52')]=function(_0x19ec63,_0x436362){return respondWithRpcPromise('FaxAccounts',_0x19ec63[_0xaa41('0x1a')])[_0xaa41('0xa')](respondWithResult(_0x436362,null))[_0xaa41('0x1e')](handleError(_0x436362,null));};exports[_0xaa41('0x53')]=function(_0x457515,_0x3ffbf8){return respondWithRpcPromise(_0xaa41('0x54'),_0x457515['query'],routingClient)[_0xaa41('0xa')](respondWithResult(_0x3ffbf8,null))[_0xaa41('0x1e')](handleError(_0x3ffbf8,null));};exports[_0xaa41('0x55')]=function(_0x175ca9,_0x51ff61){return respondWithRpcPromise(_0xaa41('0x56'),_0x175ca9['query'],routingClient)[_0xaa41('0xa')](respondWithResult(_0x51ff61,null))[_0xaa41('0x1e')](handleError(_0x51ff61,null));};exports[_0xaa41('0x57')]=function(_0x143ef0,_0x491cad){return respondWithRpcPromise(_0xaa41('0x58'),_0x143ef0[_0xaa41('0x1a')],routingClient)[_0xaa41('0xa')](respondWithResult(_0x491cad,null))[_0xaa41('0x1e')](handleError(_0x491cad,null));};exports['openchannelQueuesIdWaitingInteractions']=function(_0x140d78,_0x50197b){return respondWithRpcPromise(_0xaa41('0x58'),_0x140d78[_0xaa41('0x1a')],routingClient)['then'](function(_0x1ac05e){if(_0x140d78[_0xaa41('0x1a')][_0xaa41('0x59')]!==undefined){var _0x582d79=_(_0x1ac05e[_0xaa41('0x16')])[_0xaa41('0x5a')]([_0x140d78[_0xaa41('0x1a')][_0xaa41('0x59')],_0x140d78[_0xaa41('0x1d')]['id']])[_0xaa41('0x5b')](_0xaa41('0x5c'))['uniq']()[_0xaa41('0x5d')]();return _0x1ac05e[_0xaa41('0x16')][_0xaa41('0x5a')](function(_0x530982){return _0x582d79['indexOf'](_0x530982[_0xaa41('0x5c')])>-0x1;});}else{return _0x1ac05e[_0xaa41('0x16')]['filter'](function(_0x1ce957){return _0x1ce957[_0xaa41('0x5c')]===parseInt(_0x140d78['params']['id']);});}})[_0xaa41('0xa')](respondWithResult(_0x50197b,null))[_0xaa41('0x1e')](handleError(_0x50197b,null));};exports[_0xaa41('0x5e')]=function(_0xe8731,_0x46feb2){return respondWithRpcPromise(_0xaa41('0x5f'),_0xe8731[_0xaa41('0x1a')],routingClient)[_0xaa41('0xa')](respondWithResult(_0x46feb2,null))['catch'](handleError(_0x46feb2,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x397526,_0x481db9){return respondWithRpcPromise(_0xaa41('0x60'),_0x397526[_0xaa41('0x1a')],routingClient)[_0xaa41('0xa')](respondWithResult(_0x481db9,null))['catch'](handleError(_0x481db9,null));};exports[_0xaa41('0x61')]=function(_0x404c38,_0x2d7493){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x404c38[_0xaa41('0x1a')],routingClient)[_0xaa41('0xa')](respondWithResult(_0x2d7493,null))['catch'](handleError(_0x2d7493,null));};exports[_0xaa41('0x62')]=function(_0x4de25c){return function(_0x53faf4,_0x3f6a2b){var _0x34d0e4,_0x5eded3;var _0x5a8cb0=_[_0xaa41('0x63')](_0x4de25c);var _0x1726ec=_0x4de25c===_0xaa41('0x64')?_0xaa41('0x65'):'Account';return db[_0x5a8cb0+_0xaa41('0x66')][_0xaa41('0x67')]({'raw':!![],'where':{'id':_0x53faf4[_0xaa41('0x1d')]['id']}})['then'](function(_0x1ad3aa){if(_[_0xaa41('0x15')](_0x1ad3aa)){throw new Error(_0x5a8cb0+_0xaa41('0x68'));}_0x34d0e4=_0x1ad3aa;return db[_0x5a8cb0+'Message'][_0xaa41('0x67')]({'where':{'id':_0x53faf4['body']['messageId']},'include':[{'model':db[_0x5a8cb0+_0xaa41('0x69')],'as':_0xaa41('0x69')},{'model':db[_0x5a8cb0+_0x1726ec],'as':'Account'}]});})[_0xaa41('0xa')](function(_0x9e8ebb){if(_[_0xaa41('0x15')](_0x9e8ebb)){throw new Error(_0x5a8cb0+'\x20Message\x20not\x20found');}_0x5eded3=_0x9e8ebb;return _0x9e8ebb[_0xaa41('0x6a')]({'read':0x0,'readAt':null,'UserId':null});})[_0xaa41('0xa')](function(){var _0x1a2deb={'uniqueid':_0x4de25c+'.'+_0x5eded3['id']+'.'+_0x5eded3[_0xaa41('0x69')]['id'],'FromUserId':_0x53faf4[_0xaa41('0x38')]['id'],'type':'queue'};_0x1a2deb[_0x5a8cb0+_0xaa41('0x6b')]=_0x5eded3['id'];_0x1a2deb[_0x5a8cb0+'InteractionId']=_0x5eded3[_0xaa41('0x69')]['id'];_0x1a2deb[_0xaa41('0x6c')+_0x5a8cb0+_0x1726ec+'Id']=_0x5eded3[_0xaa41('0x6d')]['id'];_0x1a2deb['To'+_0x5a8cb0+_0xaa41('0x6e')]=_0x34d0e4['id'];return db[_0x5a8cb0+_0xaa41('0x6f')][_0xaa41('0x70')](_0x1a2deb);})[_0xaa41('0xa')](function(){return respondWithRpcPromise(_0xaa41('0x71'),{'channel':_0x4de25c,'interaction':_0x5eded3[_0xaa41('0x69')],'message':_0x5eded3,'account':_0x5eded3[_0xaa41('0x6d')],'applications':[{'id':0x0,'priority':0x1,'app':_0xaa41('0x72'),'appdata':_0x34d0e4['name']+','+(_0x5eded3[_0xaa41('0x6d')][_0xaa41('0x73')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0xaa41('0xa')](respondWithResult(_0x3f6a2b,null))['catch'](handleError(_0x3f6a2b,null));};};exports[_0xaa41('0x74')]=function(_0xb44b1f,_0x472eb3){var _0x38d759,_0x2dc55e;if(_[_0xaa41('0x15')](_0xb44b1f[_0xaa41('0x24')]['channel'])){throw new Error(_0xaa41('0x75'));}var _0x1d50db=_0xb44b1f[_0xaa41('0x24')][_0xaa41('0x76')];var _0x585ce7=_[_0xaa41('0x63')](_0x1d50db);var _0x5c9beb=_0x1d50db===_0xaa41('0x64')?_0xaa41('0x65'):_0xaa41('0x6d');return db[_0xaa41('0x77')][_0xaa41('0x67')]({'raw':!![],'where':{'id':_0xb44b1f['params']['id'],'role':_0xaa41('0x3c')}})[_0xaa41('0xa')](function(_0x5819ac){if(_[_0xaa41('0x15')](_0x5819ac)){throw new Error(_0xaa41('0x78'));}_0x38d759=_0x5819ac;return db[_0x585ce7+_0xaa41('0x79')][_0xaa41('0x67')]({'where':{'id':_0xb44b1f[_0xaa41('0x24')][_0xaa41('0x7a')]},'include':[{'model':db[_0x585ce7+_0xaa41('0x69')],'as':_0xaa41('0x69')},{'model':db[_0x585ce7+_0x5c9beb],'as':'Account'}]});})[_0xaa41('0xa')](function(_0x39d3cc){if(_[_0xaa41('0x15')](_0x39d3cc)){throw new Error(_0x585ce7+_0xaa41('0x7b'));}_0x2dc55e=_0x39d3cc;return _0x39d3cc[_0xaa41('0x6a')]({'read':0x0,'readAt':null,'UserId':null});})[_0xaa41('0xa')](function(){var _0x5489be={'uniqueid':_0x1d50db+'.'+_0x2dc55e['id']+'.'+_0x2dc55e['Interaction']['id'],'FromUserId':_0xb44b1f['user']['id'],'type':_0xaa41('0x72'),'ToUserId':_0x38d759['id']};_0x5489be[_0x585ce7+_0xaa41('0x6b')]=_0x2dc55e['id'];_0x5489be[_0x585ce7+'InteractionId']=_0x2dc55e[_0xaa41('0x69')]['id'];_0x5489be[_0xaa41('0x6c')+_0x585ce7+_0x5c9beb+'Id']=_0x2dc55e['Account']['id'];return db[_0x585ce7+_0xaa41('0x6f')][_0xaa41('0x70')](_0x5489be);})[_0xaa41('0xa')](function(){return respondWithRpcPromise(_0xaa41('0x71'),{'channel':_0x1d50db,'interaction':_0x2dc55e['Interaction'],'message':_0x2dc55e,'account':_0x2dc55e[_0xaa41('0x6d')],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x38d759[_0xaa41('0x13')]+','+(_0x2dc55e[_0xaa41('0x6d')][_0xaa41('0x7c')]||0x12c),'interval':_0xaa41('0x7d')}]},routingClient);})[_0xaa41('0xa')](respondWithResult(_0x472eb3,null))[_0xaa41('0x1e')](handleError(_0x472eb3,null));};
\ No newline at end of file
+var _0xac31=['MemberReport','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','findOrCreate','interface','agent','internal','AgentCapacity','capacity','telephones','Telephones','Trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','showMailQueues','MailQueues','mailAccounts','MailAccounts','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','whatsappQueues','showWhatsappQueues','WhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','type','filter','map','value','indexOf','queue_id','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Queue','\x20Queue\x20not\x20found','Message','findOne','messageId','Interaction','Account','\x20Message\x20not\x20found','update','queue','MessageId','InteractionId','From','TransferReport','create','Start','queueTransferTimeout','Channel\x20field\x20is\x20mandatory','User','Agent\x20not\x20found','agentTransferTimeout','*,*,*,*','bluebird','moment','lodash','util','../../mysqldb','../../config/logger','api','client','http','request','then','error','code','message','catch','status','json','sendStatus','name','isNil','find','rows','voiceChannels','VoiceChannels','query','VoiceChannelMixMonitor','merge','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','voiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','interaction','user'];(function(_0x395039,_0x30b465){var _0x37e26e=function(_0x4d4fca){while(--_0x4d4fca){_0x395039['push'](_0x395039['shift']());}};_0x37e26e(++_0x30b465);}(_0xac31,0xca));var _0x1ac3=function(_0x46dab7,_0x22b7f9){_0x46dab7=_0x46dab7-0x0;var _0x1798b8=_0xac31[_0x46dab7];return _0x1798b8;};'use strict';var BPromise=require(_0x1ac3('0x0'));var moment=require(_0x1ac3('0x1'));var _=require(_0x1ac3('0x2'));var util=require(_0x1ac3('0x3'));var db=require(_0x1ac3('0x4'))['db'];var logger=require(_0x1ac3('0x5'))(_0x1ac3('0x6'));var jayson=require('jayson/promise');var amiClient=jayson[_0x1ac3('0x7')][_0x1ac3('0x8')]({'port':0x232a});var mailClient=jayson['client']['http']({'port':0x232b});var routingClient=jayson[_0x1ac3('0x7')][_0x1ac3('0x8')]({'port':0x232c});function respondWithRpcPromise(_0x2bf9b1,_0x1be223,_0x157604){return new BPromise(function(_0x57893c,_0x2d17de){var _0x4d7695=_0x157604?_0x157604:amiClient;return _0x4d7695[_0x1ac3('0x9')](_0x2bf9b1,_0x1be223)[_0x1ac3('0xa')](function(_0x344674){if(_0x344674['error']){if(_0x344674[_0x1ac3('0xb')][_0x1ac3('0xc')]===0x1f4){return _0x2d17de(_0x344674[_0x1ac3('0xb')][_0x1ac3('0xd')]);}return _0x57893c(_0x344674[_0x1ac3('0xb')][_0x1ac3('0xd')]);}else{_0x57893c(_0x344674['result']);}})[_0x1ac3('0xe')](function(_0x376814){_0x2d17de(_0x376814);});});}function respondWithResult(_0x2eeabf,_0x2338b9){_0x2338b9=_0x2338b9||0xc8;return function(_0x50d3b6){if(_0x50d3b6){return _0x2eeabf[_0x1ac3('0xf')](_0x2338b9)[_0x1ac3('0x10')](_0x50d3b6);}return _0x2eeabf[_0x1ac3('0x11')](0x194);};}function handleError(_0x2def9f,_0x53cc35){_0x53cc35=_0x53cc35||0x1f4;return function(_0x24bb5e){logger[_0x1ac3('0xb')](_0x24bb5e['stack']);if(_0x24bb5e[_0x1ac3('0x12')]){delete _0x24bb5e[_0x1ac3('0x12')];}_0x2def9f[_0x1ac3('0xf')](_0x53cc35)['send'](_0x24bb5e);};}function findById(_0x2f14ca){return function(_0x8590ce){if(!_[_0x1ac3('0x13')](_0x2f14ca)&&!_['isNil'](_0x8590ce)&&!_[_0x1ac3('0x13')](_0x8590ce['rows'])){return _[_0x1ac3('0x14')](_0x8590ce[_0x1ac3('0x15')],function(_0x20091d){return _0x20091d['id']==_0x2f14ca;});}return null;};}exports[_0x1ac3('0x16')]=function(_0x18b985,_0x557076){return respondWithRpcPromise(_0x1ac3('0x17'),_0x18b985[_0x1ac3('0x18')])[_0x1ac3('0xa')](respondWithResult(_0x557076,null))[_0x1ac3('0xe')](handleError(_0x557076,null));};exports['voiceChannelMixMonitor']=function(_0x48d18a,_0x2879d8){return respondWithRpcPromise(_0x1ac3('0x19'),_[_0x1ac3('0x1a')](_0x48d18a[_0x1ac3('0x18')],_0x48d18a[_0x1ac3('0x1b')]))[_0x1ac3('0xa')](respondWithResult(_0x2879d8,null))[_0x1ac3('0xe')](handleError(_0x2879d8,null));};exports[_0x1ac3('0x1c')]=function(_0x3d30b8,_0x565141){return respondWithRpcPromise(_0x1ac3('0x1d'),_[_0x1ac3('0x1a')](_0x3d30b8['query'],_0x3d30b8[_0x1ac3('0x1b')]))[_0x1ac3('0xa')](respondWithResult(_0x565141,null))['catch'](handleError(_0x565141,null));};exports[_0x1ac3('0x1e')]=function(_0x2f65e8,_0x145486){return respondWithRpcPromise(_0x1ac3('0x1f'),_0x2f65e8[_0x1ac3('0x18')])['then'](respondWithResult(_0x145486,null))['catch'](handleError(_0x145486,null));};exports['showVoiceQueues']=function(_0x528807,_0x52a1a5){return respondWithRpcPromise(_0x1ac3('0x1f'),_0x528807['query'])[_0x1ac3('0xa')](findById(_0x528807[_0x1ac3('0x1b')]['id']))[_0x1ac3('0xa')](respondWithResult(_0x52a1a5,null))[_0x1ac3('0xe')](handleError(_0x52a1a5,null));};exports['updateVoiceQueue']=function(_0x61441d,_0x541da0){return respondWithRpcPromise(_0x1ac3('0x20'),_[_0x1ac3('0x1a')](_0x61441d[_0x1ac3('0x21')],_0x61441d[_0x1ac3('0x1b')]))[_0x1ac3('0xa')](respondWithResult(_0x541da0,null))[_0x1ac3('0xe')](handleError(_0x541da0,null));};exports[_0x1ac3('0x22')]=function(_0x5351b2,_0x2248b6){return respondWithRpcPromise(_0x1ac3('0x23'),_[_0x1ac3('0x1a')](_0x5351b2[_0x1ac3('0x18')],_0x5351b2['params']))[_0x1ac3('0xa')](respondWithResult(_0x2248b6,null))[_0x1ac3('0xe')](handleError(_0x2248b6,null));};exports[_0x1ac3('0x24')]=function(_0x294513,_0x204d78){return respondWithRpcPromise('VoiceQueuesChannels',_0x294513[_0x1ac3('0x18')])[_0x1ac3('0xa')](respondWithResult(_0x204d78,null))[_0x1ac3('0xe')](handleError(_0x204d78,null));};exports[_0x1ac3('0x25')]=function(_0x1a47d4,_0x43362a){return respondWithRpcPromise('VoiceQueuesChannel',_[_0x1ac3('0x1a')](_0x1a47d4[_0x1ac3('0x18')],_0x1a47d4[_0x1ac3('0x1b')]))[_0x1ac3('0xa')](respondWithResult(_0x43362a,null))['catch'](handleError(_0x43362a,null));};exports[_0x1ac3('0x26')]=function(_0x22404f,_0x2259f5){return respondWithRpcPromise(_0x1ac3('0x27'),_[_0x1ac3('0x1a')](_0x22404f[_0x1ac3('0x18')],_0x22404f[_0x1ac3('0x1b')]))[_0x1ac3('0xa')](respondWithResult(_0x2259f5,null))[_0x1ac3('0xe')](handleError(_0x2259f5,null));};exports['voiceQueuesChannelRedirect']=function(_0xe6f9c0,_0x27b017){return respondWithRpcPromise('VoiceQueuesChannelRedirect',_[_0x1ac3('0x1a')](_0xe6f9c0[_0x1ac3('0x18')],_0xe6f9c0[_0x1ac3('0x1b')]))[_0x1ac3('0xa')](respondWithResult(_0x27b017,null))[_0x1ac3('0xe')](handleError(_0x27b017,null));};exports[_0x1ac3('0x28')]=function(_0x1c8bf5,_0xa15199){return respondWithRpcPromise('Outbound',_0x1c8bf5[_0x1ac3('0x18')])['then'](respondWithResult(_0xa15199,null))[_0x1ac3('0xe')](handleError(_0xa15199,null));};exports[_0x1ac3('0x29')]=function(_0x2d449e,_0x1e2f5e){return respondWithRpcPromise(_0x1ac3('0x2a'),_0x2d449e[_0x1ac3('0x18')])['then'](respondWithResult(_0x1e2f5e,null))[_0x1ac3('0xe')](handleError(_0x1e2f5e,null));};exports[_0x1ac3('0x2b')]=function(_0x43d15,_0x4e2442){var _0x34380d;return respondWithRpcPromise(_0x1ac3('0x2c'),_0x43d15['query'])[_0x1ac3('0xa')](function(_0x43a2ee){_0x34380d=_0x43a2ee;return respondWithRpcPromise(_0x1ac3('0x2c'),_0x43d15[_0x1ac3('0x18')],routingClient);})[_0x1ac3('0xa')](function(_0x21d8d6){return _[_0x1ac3('0x1a')]({},_0x21d8d6,_0x34380d);})[_0x1ac3('0xa')](respondWithResult(_0x4e2442,null))['catch'](handleError(_0x4e2442,null));};exports[_0x1ac3('0x2d')]=function(_0x3e606f,_0x40ea2c){if(_0x3e606f[_0x1ac3('0x21')]&&_0x3e606f[_0x1ac3('0x21')][_0x1ac3('0x2e')]&&_0x3e606f[_0x1ac3('0x2f')]&&_0x3e606f['user']['name']){for(var _0x2c2099 in _0x3e606f[_0x1ac3('0x21')]['interaction']){if(_0x3e606f[_0x1ac3('0x21')][_0x1ac3('0x2e')]['hasOwnProperty'](_0x2c2099)){db[_0x1ac3('0x30')]['findAll']({'where':{'channel':_0x2c2099,'membername':_0x3e606f[_0x1ac3('0x2f')][_0x1ac3('0x12')],'type':_0x1ac3('0x31'),'exitAt':null,'uniqueid':_0x3e606f[_0x1ac3('0x21')]['interaction'][_0x2c2099]&&_0x3e606f[_0x1ac3('0x21')][_0x1ac3('0x2e')][_0x2c2099][_0x1ac3('0x32')]?{'$notIn':_0x3e606f[_0x1ac3('0x21')][_0x1ac3('0x2e')][_0x2c2099]}:{'$ne':null}}})['then'](function(_0x26b5b1){var _0x842f83=moment()[_0x1ac3('0x33')](_0x1ac3('0x34'));for(var _0x589434=0x0,_0x16d56a=_0x26b5b1[_0x1ac3('0x32')];_0x589434<_0x16d56a;_0x589434+=0x1){_0x26b5b1[_0x589434][_0x1ac3('0x35')]({'exitAt':_0x842f83});}});for(var _0x4019c6=0x0;_0x4019c6<_0x3e606f['body'][_0x1ac3('0x2e')][_0x2c2099][_0x1ac3('0x32')];_0x4019c6+=0x1){db[_0x1ac3('0x30')][_0x1ac3('0x36')]({'where':{'channel':_0x2c2099,'membername':_0x3e606f['user'][_0x1ac3('0x12')],'type':'INTERACTION','uniqueid':_0x3e606f[_0x1ac3('0x21')][_0x1ac3('0x2e')][_0x2c2099][_0x4019c6],'exitAt':null},'defaults':{'channel':_0x2c2099,'membername':_0x3e606f[_0x1ac3('0x2f')][_0x1ac3('0x12')],'interface':_[_0x1ac3('0x13')](_0x3e606f[_0x1ac3('0x2f')][_0x1ac3('0x37')])?util['format']('SIP/%s',_0x3e606f[_0x1ac3('0x2f')][_0x1ac3('0x12')]):_0x3e606f[_0x1ac3('0x2f')]['interface'],'type':'INTERACTION','enterAt':moment()['format'](_0x1ac3('0x34')),'role':_0x1ac3('0x38'),'internal':_0x3e606f['user'][_0x1ac3('0x39')],'uniqueid':_0x3e606f[_0x1ac3('0x21')][_0x1ac3('0x2e')][_0x2c2099][_0x4019c6]}});}}}}return respondWithRpcPromise(_0x1ac3('0x3a'),{'id':_0x3e606f['params']['id'],'capacity':_0x3e606f['body'][_0x1ac3('0x3b')]},routingClient)[_0x1ac3('0xa')](respondWithResult(_0x40ea2c,null))['catch'](handleError(_0x40ea2c,null));};exports[_0x1ac3('0x3c')]=function(_0x5231f7,_0x4e4945){return respondWithRpcPromise(_0x1ac3('0x3d'),_0x5231f7[_0x1ac3('0x18')])['then'](respondWithResult(_0x4e4945,null))[_0x1ac3('0xe')](handleError(_0x4e4945,null));};exports['trunks']=function(_0x267541,_0x4762d3){return respondWithRpcPromise(_0x1ac3('0x3e'),_0x267541[_0x1ac3('0x18')])[_0x1ac3('0xa')](respondWithResult(_0x4762d3,null))[_0x1ac3('0xe')](handleError(_0x4762d3,null));};exports[_0x1ac3('0x3f')]=function(_0x331374,_0xeb7e49){return respondWithRpcPromise(_0x1ac3('0x40'),_0x331374[_0x1ac3('0x18')])['then'](respondWithResult(_0xeb7e49,null))['catch'](handleError(_0xeb7e49,null));};exports[_0x1ac3('0x41')]=function(_0x310eb7,_0x3bf701){return respondWithRpcPromise(_0x1ac3('0x42'),_0x310eb7[_0x1ac3('0x18')],routingClient)[_0x1ac3('0xa')](respondWithResult(_0x3bf701,null))[_0x1ac3('0xe')](handleError(_0x3bf701,null));};exports[_0x1ac3('0x43')]=function(_0xcf3bba,_0x3149f6){return respondWithRpcPromise('ChatQueues',_0xcf3bba[_0x1ac3('0x18')],routingClient)[_0x1ac3('0xa')](findById(_0xcf3bba[_0x1ac3('0x1b')]['id']))[_0x1ac3('0xa')](respondWithResult(_0x3149f6,null))[_0x1ac3('0xe')](handleError(_0x3149f6,null));};exports['mailQueues']=function(_0xb74cdf,_0x35895d){return respondWithRpcPromise('MailQueues',_0xb74cdf['query'],routingClient)['then'](respondWithResult(_0x35895d,null))[_0x1ac3('0xe')](handleError(_0x35895d,null));};exports[_0x1ac3('0x44')]=function(_0x2a1f66,_0x5ad546){return respondWithRpcPromise(_0x1ac3('0x45'),_0x2a1f66['query'],routingClient)['then'](findById(_0x2a1f66['params']['id']))['then'](respondWithResult(_0x5ad546,null))[_0x1ac3('0xe')](handleError(_0x5ad546,null));};exports[_0x1ac3('0x46')]=function(_0x42218b,_0x13294a){return respondWithRpcPromise(_0x1ac3('0x47'),_0x42218b['query'],mailClient)[_0x1ac3('0xa')](respondWithResult(_0x13294a,null))[_0x1ac3('0xe')](handleError(_0x13294a,null));};exports['openchannelQueues']=function(_0x2bcb4b,_0x1ffbb1){return respondWithRpcPromise(_0x1ac3('0x48'),_0x2bcb4b[_0x1ac3('0x18')],routingClient)[_0x1ac3('0xa')](respondWithResult(_0x1ffbb1,null))['catch'](handleError(_0x1ffbb1,null));};exports[_0x1ac3('0x49')]=function(_0x40907d,_0x1f4294){return respondWithRpcPromise(_0x1ac3('0x48'),_0x40907d['query'],routingClient)[_0x1ac3('0xa')](findById(_0x40907d[_0x1ac3('0x1b')]['id']))[_0x1ac3('0xa')](respondWithResult(_0x1f4294,null))[_0x1ac3('0xe')](handleError(_0x1f4294,null));};exports[_0x1ac3('0x4a')]=function(_0x1ac283,_0x5541c3){return respondWithRpcPromise('SmsQueues',_0x1ac283['query'],routingClient)['then'](respondWithResult(_0x5541c3,null))[_0x1ac3('0xe')](handleError(_0x5541c3,null));};exports['showSmsQueues']=function(_0x2a5413,_0x19359f){return respondWithRpcPromise(_0x1ac3('0x4b'),_0x2a5413[_0x1ac3('0x18')],routingClient)[_0x1ac3('0xa')](findById(_0x2a5413[_0x1ac3('0x1b')]['id']))['then'](respondWithResult(_0x19359f,null))[_0x1ac3('0xe')](handleError(_0x19359f,null));};exports[_0x1ac3('0x4c')]=function(_0x3597cb,_0x422b15){return respondWithRpcPromise('WhatsappQueues',_0x3597cb[_0x1ac3('0x18')],routingClient)[_0x1ac3('0xa')](respondWithResult(_0x422b15,null))[_0x1ac3('0xe')](handleError(_0x422b15,null));};exports[_0x1ac3('0x4d')]=function(_0x380ed8,_0x49ced4){return respondWithRpcPromise(_0x1ac3('0x4e'),_0x380ed8['query'],routingClient)['then'](findById(_0x380ed8[_0x1ac3('0x1b')]['id']))[_0x1ac3('0xa')](respondWithResult(_0x49ced4,null))[_0x1ac3('0xe')](handleError(_0x49ced4,null));};exports[_0x1ac3('0x4f')]=function(_0x355429,_0x3959bb){return respondWithRpcPromise(_0x1ac3('0x50'),_0x355429[_0x1ac3('0x18')],routingClient)[_0x1ac3('0xa')](respondWithResult(_0x3959bb,null))['catch'](handleError(_0x3959bb,null));};exports[_0x1ac3('0x51')]=function(_0xd36c71,_0x303d58){return respondWithRpcPromise('FaxQueues',_0xd36c71[_0x1ac3('0x18')],routingClient)[_0x1ac3('0xa')](findById(_0xd36c71[_0x1ac3('0x1b')]['id']))[_0x1ac3('0xa')](respondWithResult(_0x303d58,null))[_0x1ac3('0xe')](handleError(_0x303d58,null));};exports[_0x1ac3('0x52')]=function(_0x8740b4,_0x215966){return respondWithRpcPromise(_0x1ac3('0x53'),_0x8740b4[_0x1ac3('0x18')])['then'](respondWithResult(_0x215966,null))[_0x1ac3('0xe')](handleError(_0x215966,null));};exports[_0x1ac3('0x54')]=function(_0x41ffd0,_0x566ddc){return respondWithRpcPromise(_0x1ac3('0x55'),_0x41ffd0[_0x1ac3('0x18')],routingClient)[_0x1ac3('0xa')](respondWithResult(_0x566ddc,null))[_0x1ac3('0xe')](handleError(_0x566ddc,null));};exports[_0x1ac3('0x56')]=function(_0x519b80,_0x4d9d77){return respondWithRpcPromise('MailQueuesWaitingInteractions',_0x519b80[_0x1ac3('0x18')],routingClient)['then'](respondWithResult(_0x4d9d77,null))[_0x1ac3('0xe')](handleError(_0x4d9d77,null));};exports[_0x1ac3('0x57')]=function(_0x433dd0,_0x5cf974){return respondWithRpcPromise(_0x1ac3('0x58'),_0x433dd0[_0x1ac3('0x18')],routingClient)[_0x1ac3('0xa')](respondWithResult(_0x5cf974,null))[_0x1ac3('0xe')](handleError(_0x5cf974,null));};exports[_0x1ac3('0x59')]=function(_0x59def5,_0x5ec89d){return respondWithRpcPromise(_0x1ac3('0x58'),_0x59def5[_0x1ac3('0x18')],routingClient)['then'](function(_0x29b026){if(_0x59def5[_0x1ac3('0x18')][_0x1ac3('0x5a')]!==undefined){var _0x5cc2e0=_(_0x29b026[_0x1ac3('0x15')])[_0x1ac3('0x5b')]([_0x59def5['query'][_0x1ac3('0x5a')],_0x59def5['params']['id']])[_0x1ac3('0x5c')]('queue_id')['uniq']()[_0x1ac3('0x5d')]();return _0x29b026[_0x1ac3('0x15')][_0x1ac3('0x5b')](function(_0x3f5c44){return _0x5cc2e0[_0x1ac3('0x5e')](_0x3f5c44[_0x1ac3('0x5f')])>-0x1;});}else{return _0x29b026[_0x1ac3('0x15')][_0x1ac3('0x5b')](function(_0x408e3c){return _0x408e3c[_0x1ac3('0x5f')]===parseInt(_0x59def5[_0x1ac3('0x1b')]['id']);});}})[_0x1ac3('0xa')](respondWithResult(_0x5ec89d,null))['catch'](handleError(_0x5ec89d,null));};exports['smsQueuesWaitingInteractions']=function(_0x588726,_0x2ef69a){return respondWithRpcPromise(_0x1ac3('0x60'),_0x588726['query'],routingClient)[_0x1ac3('0xa')](respondWithResult(_0x2ef69a,null))[_0x1ac3('0xe')](handleError(_0x2ef69a,null));};exports[_0x1ac3('0x61')]=function(_0x364748,_0xbadca5){return respondWithRpcPromise('WhatsappQueuesWaitingInteractions',_0x364748[_0x1ac3('0x18')],routingClient)['then'](respondWithResult(_0xbadca5,null))[_0x1ac3('0xe')](handleError(_0xbadca5,null));};exports['faxQueuesWaitingInteractions']=function(_0x218712,_0x50278a){return respondWithRpcPromise(_0x1ac3('0x62'),_0x218712[_0x1ac3('0x18')],routingClient)[_0x1ac3('0xa')](respondWithResult(_0x50278a,null))[_0x1ac3('0xe')](handleError(_0x50278a,null));};exports[_0x1ac3('0x63')]=function(_0x5bf7f1){return function(_0x4f9822,_0x4887a5){var _0x369ed0,_0x22e88d;var _0xbadd54=_[_0x1ac3('0x64')](_0x5bf7f1);var _0x5b4e54=_0x5bf7f1===_0x1ac3('0x65')?_0x1ac3('0x66'):'Account';return db[_0xbadd54+_0x1ac3('0x67')]['findOne']({'raw':!![],'where':{'id':_0x4f9822[_0x1ac3('0x1b')]['id']}})['then'](function(_0x5524a4){if(_['isNil'](_0x5524a4)){throw new Error(_0xbadd54+_0x1ac3('0x68'));}_0x369ed0=_0x5524a4;return db[_0xbadd54+_0x1ac3('0x69')][_0x1ac3('0x6a')]({'where':{'id':_0x4f9822[_0x1ac3('0x21')][_0x1ac3('0x6b')]},'include':[{'model':db[_0xbadd54+'Interaction'],'as':_0x1ac3('0x6c')},{'model':db[_0xbadd54+_0x5b4e54],'as':_0x1ac3('0x6d')}]});})[_0x1ac3('0xa')](function(_0x34377b){if(_['isNil'](_0x34377b)){throw new Error(_0xbadd54+_0x1ac3('0x6e'));}_0x22e88d=_0x34377b;return _0x34377b[_0x1ac3('0x6f')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x55d53c={'uniqueid':_0x5bf7f1+'.'+_0x22e88d['id']+'.'+_0x22e88d['Interaction']['id'],'FromUserId':_0x4f9822[_0x1ac3('0x2f')]['id'],'type':_0x1ac3('0x70')};_0x55d53c[_0xbadd54+_0x1ac3('0x71')]=_0x22e88d['id'];_0x55d53c[_0xbadd54+_0x1ac3('0x72')]=_0x22e88d['Interaction']['id'];_0x55d53c[_0x1ac3('0x73')+_0xbadd54+_0x5b4e54+'Id']=_0x22e88d[_0x1ac3('0x6d')]['id'];_0x55d53c['To'+_0xbadd54+'QueueId']=_0x369ed0['id'];return db[_0xbadd54+_0x1ac3('0x74')][_0x1ac3('0x75')](_0x55d53c);})[_0x1ac3('0xa')](function(){return respondWithRpcPromise(_0x1ac3('0x76'),{'channel':_0x5bf7f1,'interaction':_0x22e88d['Interaction'],'message':_0x22e88d,'account':_0x22e88d[_0x1ac3('0x6d')],'applications':[{'id':0x0,'priority':0x1,'app':_0x1ac3('0x70'),'appdata':_0x369ed0[_0x1ac3('0x12')]+','+(_0x22e88d[_0x1ac3('0x6d')][_0x1ac3('0x77')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0x1ac3('0xa')](respondWithResult(_0x4887a5,null))[_0x1ac3('0xe')](handleError(_0x4887a5,null));};};exports['agentNotify']=function(_0x48335c,_0xfc252a){var _0x1c5f68,_0x554c7b;if(_['isNil'](_0x48335c[_0x1ac3('0x21')]['channel'])){throw new Error(_0x1ac3('0x78'));}var _0x20928f=_0x48335c['body']['channel'];var _0x3389be=_['capitalize'](_0x20928f);var _0x45faf6=_0x20928f===_0x1ac3('0x65')?_0x1ac3('0x66'):_0x1ac3('0x6d');return db[_0x1ac3('0x79')][_0x1ac3('0x6a')]({'raw':!![],'where':{'id':_0x48335c[_0x1ac3('0x1b')]['id'],'role':_0x1ac3('0x38')}})[_0x1ac3('0xa')](function(_0x588b98){if(_[_0x1ac3('0x13')](_0x588b98)){throw new Error(_0x1ac3('0x7a'));}_0x1c5f68=_0x588b98;return db[_0x3389be+'Message'][_0x1ac3('0x6a')]({'where':{'id':_0x48335c[_0x1ac3('0x21')]['messageId']},'include':[{'model':db[_0x3389be+_0x1ac3('0x6c')],'as':'Interaction'},{'model':db[_0x3389be+_0x45faf6],'as':'Account'}]});})[_0x1ac3('0xa')](function(_0x19a898){if(_[_0x1ac3('0x13')](_0x19a898)){throw new Error(_0x3389be+'\x20Message\x20not\x20found');}_0x554c7b=_0x19a898;return _0x19a898['update']({'read':0x0,'readAt':null,'UserId':null});})[_0x1ac3('0xa')](function(){var _0x12b987={'uniqueid':_0x20928f+'.'+_0x554c7b['id']+'.'+_0x554c7b[_0x1ac3('0x6c')]['id'],'FromUserId':_0x48335c[_0x1ac3('0x2f')]['id'],'type':_0x1ac3('0x70'),'ToUserId':_0x1c5f68['id']};_0x12b987[_0x3389be+_0x1ac3('0x71')]=_0x554c7b['id'];_0x12b987[_0x3389be+_0x1ac3('0x72')]=_0x554c7b[_0x1ac3('0x6c')]['id'];_0x12b987[_0x1ac3('0x73')+_0x3389be+_0x45faf6+'Id']=_0x554c7b[_0x1ac3('0x6d')]['id'];return db[_0x3389be+_0x1ac3('0x74')][_0x1ac3('0x75')](_0x12b987);})[_0x1ac3('0xa')](function(){return respondWithRpcPromise(_0x1ac3('0x76'),{'channel':_0x20928f,'interaction':_0x554c7b[_0x1ac3('0x6c')],'message':_0x554c7b,'account':_0x554c7b[_0x1ac3('0x6d')],'applications':[{'id':0x0,'priority':0x1,'app':_0x1ac3('0x38'),'appdata':_0x1c5f68[_0x1ac3('0x12')]+','+(_0x554c7b[_0x1ac3('0x6d')][_0x1ac3('0x7b')]||0x12c),'interval':_0x1ac3('0x7c')}]},routingClient);})[_0x1ac3('0xa')](respondWithResult(_0xfc252a,null))['catch'](handleError(_0xfc252a,null));};
\ No newline at end of file
index 21b1a9b..9c38bd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda56=['/:id/run','run','post','create','put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./schedule.controller','get','isAuthenticated','index','/:id','show'];(function(_0x526d98,_0x4af9a2){var _0x19ede3=function(_0x1e9295){while(--_0x1e9295){_0x526d98['push'](_0x526d98['shift']());}};_0x19ede3(++_0x4af9a2);}(_0xda56,0xfa));var _0x6da5=function(_0x58dd0b,_0x39de95){_0x58dd0b=_0x58dd0b-0x0;var _0x30fd30=_0xda56[_0x58dd0b];return _0x30fd30;};'use strict';var multer=require(_0x6da5('0x0'));var util=require(_0x6da5('0x1'));var path=require(_0x6da5('0x2'));var timeout=require('connect-timeout');var express=require(_0x6da5('0x3'));var router=express[_0x6da5('0x4')]();var fs_extra=require(_0x6da5('0x5'));var auth=require(_0x6da5('0x6'));var interaction=require(_0x6da5('0x7'));var config=require('../../config/environment');var controller=require(_0x6da5('0x8'));router[_0x6da5('0x9')]('/',auth[_0x6da5('0xa')](),controller[_0x6da5('0xb')]);router['get'](_0x6da5('0xc'),auth['isAuthenticated'](),controller[_0x6da5('0xd')]);router[_0x6da5('0x9')](_0x6da5('0xe'),auth[_0x6da5('0xa')](),controller[_0x6da5('0xf')]);router[_0x6da5('0x10')]('/',auth[_0x6da5('0xa')](),controller[_0x6da5('0x11')]);router[_0x6da5('0x12')]('/:id',auth[_0x6da5('0xa')](),controller[_0x6da5('0x13')]);router[_0x6da5('0x14')](_0x6da5('0xc'),auth['isAuthenticated'](),controller[_0x6da5('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xc5ae=['express','Router','fs-extra','../../components/auth/service','../../config/environment','./schedule.controller','get','isAuthenticated','index','/:id','show','/:id/run','create','destroy','exports','util','path','connect-timeout'];(function(_0x5ec453,_0x30b0ba){var _0x25548f=function(_0x387b62){while(--_0x387b62){_0x5ec453['push'](_0x5ec453['shift']());}};_0x25548f(++_0x30b0ba);}(_0xc5ae,0x1ad));var _0xec5a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc5ae[_0x14add3];return _0x4a174f;};'use strict';var multer=require('multer');var util=require(_0xec5a('0x0'));var path=require(_0xec5a('0x1'));var timeout=require(_0xec5a('0x2'));var express=require(_0xec5a('0x3'));var router=express[_0xec5a('0x4')]();var fs_extra=require(_0xec5a('0x5'));var auth=require(_0xec5a('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xec5a('0x7'));var controller=require(_0xec5a('0x8'));router[_0xec5a('0x9')]('/',auth[_0xec5a('0xa')](),controller[_0xec5a('0xb')]);router[_0xec5a('0x9')](_0xec5a('0xc'),auth[_0xec5a('0xa')](),controller[_0xec5a('0xd')]);router[_0xec5a('0x9')](_0xec5a('0xe'),auth[_0xec5a('0xa')](),controller['run']);router['post']('/',auth['isAuthenticated'](),controller[_0xec5a('0xf')]);router['put'](_0xec5a('0xc'),auth[_0xec5a('0xa')](),controller['update']);router['delete'](_0xec5a('0xc'),auth[_0xec5a('0xa')](),controller[_0xec5a('0x10')]);module[_0xec5a('0x11')]=router;
\ No newline at end of file
index 3996149..b595834 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x498b=['0\x200\x20*\x20*\x20*','DATE','years','months','weeks','hours','ENUM','csv','pdf','xlsx','custom','TEXT','exports','STRING','BOOLEAN'];(function(_0x5e32f3,_0x3386c1){var _0x4d4e03=function(_0xe86f5){while(--_0xe86f5){_0x5e32f3['push'](_0x5e32f3['shift']());}};_0x4d4e03(++_0x3386c1);}(_0x498b,0x174));var _0xb498=function(_0x3641b4,_0x5c25f1){_0x3641b4=_0x3641b4-0x0;var _0x5e3319=_0x498b[_0x3641b4];return _0x5e3319;};'use strict';var Sequelize=require('sequelize');module[_0xb498('0x0')]={'name':{'type':Sequelize[_0xb498('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0xb498('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xb498('0x1')],'allowNull':![],'defaultValue':_0xb498('0x3')},'startAt':{'type':Sequelize['DATE'],'allowNull':![]},'endAt':{'type':Sequelize[_0xb498('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0xb498('0x5'),'quarters',_0xb498('0x6'),_0xb498('0x7'),'days',_0xb498('0x8'),'minutes'),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize[_0xb498('0x9')](_0xb498('0xa'),_0xb498('0xb'),_0xb498('0xc')),'allowNull':![],'defaultValue':_0xb498('0xa')},'type':{'type':Sequelize[_0xb498('0x9')](_0xb498('0xd'),'default'),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize[_0xb498('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0xb498('0x1')]},'cc':{'type':Sequelize[_0xb498('0xe')]},'bcc':{'type':Sequelize['TEXT']},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xdb70=['STRING','BOOLEAN','0\x200\x20*\x20*\x20*','INTEGER','ENUM','years','months','weeks','days','hours','minutes','csv','pdf','custom','default','TEXT','sequelize','exports'];(function(_0x5e97b1,_0x2abd95){var _0x5e297e=function(_0x50e3c6){while(--_0x50e3c6){_0x5e97b1['push'](_0x5e97b1['shift']());}};_0x5e297e(++_0x2abd95);}(_0xdb70,0xa0));var _0x0db7=function(_0x5e9207,_0x9aedd0){_0x5e9207=_0x5e9207-0x0;var _0x50d0c2=_0xdb70[_0x5e9207];return _0x50d0c2;};'use strict';var Sequelize=require(_0x0db7('0x0'));module[_0x0db7('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x0db7('0x2')]},'active':{'type':Sequelize[_0x0db7('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x0db7('0x2')],'allowNull':![],'defaultValue':_0x0db7('0x4')},'startAt':{'type':Sequelize['DATE'],'allowNull':![]},'endAt':{'type':Sequelize['DATE'],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x0db7('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x0db7('0x6')](_0x0db7('0x7'),'quarters',_0x0db7('0x8'),_0x0db7('0x9'),_0x0db7('0xa'),_0x0db7('0xb'),_0x0db7('0xc')),'allowNull':![],'defaultValue':_0x0db7('0xa')},'output':{'type':Sequelize[_0x0db7('0x6')](_0x0db7('0xd'),_0x0db7('0xe'),'xlsx'),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize[_0x0db7('0x6')](_0x0db7('0xf'),_0x0db7('0x10')),'allowNull':![],'defaultValue':_0x0db7('0xf')},'sendMail':{'type':Sequelize[_0x0db7('0x3')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x0db7('0x11')]},'bcc':{'type':Sequelize[_0x0db7('0x11')]},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 9613daa..37f8465 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb85=['UserProfileResource','stack','name','send','index','Schedule','rawAttributes','fieldName','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','order','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','length','find','catch','body','user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','run','../../config/schedule','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','Content-Range','apply','reject','save','then','destroy','get','Scheduler'];(function(_0x97db75,_0x3abdb8){var _0x259a53=function(_0x4af802){while(--_0x4af802){_0x97db75['push'](_0x97db75['shift']());}};_0x259a53(++_0x3abdb8);}(_0xbb85,0x1bb));var _0x5bb8=function(_0x23c172,_0x243c77){_0x23c172=_0x23c172-0x0;var _0x2a6afd=_0xbb85[_0x23c172];return _0x2a6afd;};'use strict';var emlformat=require(_0x5bb8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5bb8('0x1'));var jsonpatch=require(_0x5bb8('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5bb8('0x3'));var Mustache=require(_0x5bb8('0x4'));var util=require(_0x5bb8('0x5'));var path=require('path');var sox=require(_0x5bb8('0x6'));var csv=require('to-csv');var ejs=require(_0x5bb8('0x7'));var fs=require('fs');var fs_extra=require(_0x5bb8('0x8'));var _=require(_0x5bb8('0x9'));var squel=require(_0x5bb8('0xa'));var crypto=require(_0x5bb8('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x5bb8('0xc'));var toCsv=require(_0x5bb8('0xd'));var querystring=require(_0x5bb8('0xe'));var Papa=require(_0x5bb8('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x5bb8('0x10'));var as=require(_0x5bb8('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5bb8('0x12'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5bb8('0x13'));var db=require(_0x5bb8('0x14'))['db'];function respondWithStatusCode(_0x5ab117,_0x32ea11){_0x32ea11=_0x32ea11||0xcc;return function(_0x4f03bb){if(_0x4f03bb){return _0x5ab117[_0x5bb8('0x15')](_0x32ea11);}return _0x5ab117['status'](_0x32ea11)[_0x5bb8('0x16')]();};}function respondWithResult(_0x4628d8,_0x3ffc2e){_0x3ffc2e=_0x3ffc2e||0xc8;return function(_0x4905d0){if(_0x4905d0){return _0x4628d8['status'](_0x3ffc2e)[_0x5bb8('0x17')](_0x4905d0);}};}function respondWithFilteredResult(_0xf3c0a4,_0x793a1d){return function(_0xf8b44c){if(_0xf8b44c){var _0x12596d=typeof _0x793a1d[_0x5bb8('0x18')]===_0x5bb8('0x19')&&typeof _0x793a1d[_0x5bb8('0x1a')]===_0x5bb8('0x19');var _0xa9e09f=_0xf8b44c[_0x5bb8('0x1b')];var _0x33e3a4=_0x12596d?0x0:_0x793a1d['offset'];var _0x41ccc0=_0x12596d?_0xf8b44c[_0x5bb8('0x1b')]:_0x793a1d[_0x5bb8('0x18')]+_0x793a1d['limit'];var _0xe6a259;if(_0x41ccc0>=_0xa9e09f){_0x41ccc0=_0xa9e09f;_0xe6a259=0xc8;}else{_0xe6a259=0xce;}_0xf3c0a4[_0x5bb8('0x1c')](_0xe6a259);return _0xf3c0a4['set'](_0x5bb8('0x1d'),_0x33e3a4+'-'+_0x41ccc0+'/'+_0xa9e09f)[_0x5bb8('0x17')](_0xf8b44c);}return null;};}function patchUpdates(_0x25a55d){return function(_0x4540af){try{jsonpatch[_0x5bb8('0x1e')](_0x4540af,_0x25a55d,!![]);}catch(_0x2dd5f1){return BPromise[_0x5bb8('0x1f')](_0x2dd5f1);}return _0x4540af[_0x5bb8('0x20')]();};}function saveUpdates(_0x273354,_0x235970){return function(_0x49d4a7){if(_0x49d4a7){return _0x49d4a7['update'](_0x273354)[_0x5bb8('0x21')](function(_0x437a72){return _0x437a72;});}return null;};}function removeEntity(_0xe39877,_0x4f6f82){return function(_0x1766bb){if(_0x1766bb){return _0x1766bb[_0x5bb8('0x22')]()['then'](function(){var _0x3d3847=_0x1766bb[_0x5bb8('0x23')]({'plain':!![]});var _0x4a110b=_0x5bb8('0x24');return db[_0x5bb8('0x25')][_0x5bb8('0x22')]({'where':{'type':_0x4a110b,'resourceId':_0x3d3847['id']}})[_0x5bb8('0x21')](function(){return _0x1766bb;});})[_0x5bb8('0x21')](function(){_0xe39877[_0x5bb8('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0xfebbdb,_0x2f6f4b){return function(_0x4668e5){if(!_0x4668e5){_0xfebbdb[_0x5bb8('0x15')](0x194);}return _0x4668e5;};}function handleError(_0x52baba,_0x50c44d){_0x50c44d=_0x50c44d||0x1f4;return function(_0x51c087){logger['error'](_0x51c087[_0x5bb8('0x26')]);if(_0x51c087[_0x5bb8('0x27')]){delete _0x51c087[_0x5bb8('0x27')];}_0x52baba['status'](_0x50c44d)[_0x5bb8('0x28')](_0x51c087);};}exports[_0x5bb8('0x29')]=function(_0x462a68,_0x771bcd){var _0x4220a9={},_0x2905f9={},_0x17409b={'count':0x0,'rows':[]};var _0x38d5ed=_['map'](db[_0x5bb8('0x2a')][_0x5bb8('0x2b')],function(_0x396dc0){return{'name':_0x396dc0[_0x5bb8('0x2c')],'type':_0x396dc0['type']['key']};});_0x2905f9[_0x5bb8('0x2d')]=_['map'](_0x38d5ed,_0x5bb8('0x27'));_0x2905f9[_0x5bb8('0x2e')]=_[_0x5bb8('0x2f')](_0x462a68['query']);_0x2905f9[_0x5bb8('0x30')]=_['intersection'](_0x2905f9[_0x5bb8('0x2d')],_0x2905f9[_0x5bb8('0x2e')]);_0x4220a9[_0x5bb8('0x31')]=_[_0x5bb8('0x32')](_0x2905f9[_0x5bb8('0x2d')],qs['fields'](_0x462a68[_0x5bb8('0x2e')][_0x5bb8('0x33')]));_0x4220a9['attributes']=_0x4220a9[_0x5bb8('0x31')]['length']?_0x4220a9[_0x5bb8('0x31')]:_0x2905f9[_0x5bb8('0x2d')];if(!_0x462a68[_0x5bb8('0x2e')][_0x5bb8('0x34')]('nolimit')){_0x4220a9['limit']=qs['limit'](_0x462a68['query'][_0x5bb8('0x1a')]);_0x4220a9['offset']=qs[_0x5bb8('0x18')](_0x462a68[_0x5bb8('0x2e')][_0x5bb8('0x18')]);}_0x4220a9[_0x5bb8('0x35')]=qs[_0x5bb8('0x36')](_0x462a68[_0x5bb8('0x2e')][_0x5bb8('0x36')]);_0x4220a9['where']=qs[_0x5bb8('0x30')](_[_0x5bb8('0x37')](_0x462a68[_0x5bb8('0x2e')],_0x2905f9[_0x5bb8('0x30')]),_0x38d5ed);if(_0x462a68[_0x5bb8('0x2e')][_0x5bb8('0x38')]){_0x4220a9[_0x5bb8('0x39')]=_[_0x5bb8('0x3a')](_0x4220a9[_0x5bb8('0x39')],{'$or':_['map'](_0x38d5ed,function(_0x2188e0){if(_0x2188e0[_0x5bb8('0x3b')]!==_0x5bb8('0x3c')){var _0x668049={};_0x668049[_0x2188e0[_0x5bb8('0x27')]]={'$like':'%'+_0x462a68[_0x5bb8('0x2e')]['filter']+'%'};return _0x668049;}})});}_0x4220a9=_[_0x5bb8('0x3a')]({},_0x4220a9,_0x462a68[_0x5bb8('0x3d')]);var _0x1742ef={'where':_0x4220a9[_0x5bb8('0x39')]};return db[_0x5bb8('0x2a')][_0x5bb8('0x1b')](_0x1742ef)['then'](function(_0x22efc2){_0x17409b[_0x5bb8('0x1b')]=_0x22efc2;if(_0x462a68[_0x5bb8('0x2e')][_0x5bb8('0x3e')]){_0x4220a9[_0x5bb8('0x3f')]=[{'all':!![]}];}return db['Schedule'][_0x5bb8('0x40')](_0x4220a9);})[_0x5bb8('0x21')](function(_0x316dcf){_0x17409b['rows']=_0x316dcf;return _0x17409b;})[_0x5bb8('0x21')](respondWithFilteredResult(_0x771bcd,_0x4220a9))['catch'](handleError(_0x771bcd,null));};exports['show']=function(_0x3e8e8b,_0x354147){var _0x10ba3a={'raw':![],'where':{'id':_0x3e8e8b['params']['id']}},_0x29291a={};_0x29291a[_0x5bb8('0x2d')]=_[_0x5bb8('0x2f')](db[_0x5bb8('0x2a')][_0x5bb8('0x2b')]);_0x29291a[_0x5bb8('0x2e')]=_[_0x5bb8('0x2f')](_0x3e8e8b['query']);_0x29291a[_0x5bb8('0x30')]=_[_0x5bb8('0x32')](_0x29291a[_0x5bb8('0x2d')],_0x29291a[_0x5bb8('0x2e')]);_0x10ba3a[_0x5bb8('0x31')]=_[_0x5bb8('0x32')](_0x29291a[_0x5bb8('0x2d')],qs[_0x5bb8('0x33')](_0x3e8e8b[_0x5bb8('0x2e')][_0x5bb8('0x33')]));_0x10ba3a[_0x5bb8('0x31')]=_0x10ba3a[_0x5bb8('0x31')][_0x5bb8('0x41')]?_0x10ba3a[_0x5bb8('0x31')]:_0x29291a[_0x5bb8('0x2d')];if(_0x3e8e8b[_0x5bb8('0x2e')][_0x5bb8('0x3e')]){_0x10ba3a[_0x5bb8('0x3f')]=[{'all':!![]}];}_0x10ba3a=_[_0x5bb8('0x3a')]({},_0x10ba3a,_0x3e8e8b[_0x5bb8('0x3d')]);return db[_0x5bb8('0x2a')][_0x5bb8('0x42')](_0x10ba3a)[_0x5bb8('0x21')](handleEntityNotFound(_0x354147,null))[_0x5bb8('0x21')](respondWithResult(_0x354147,null))[_0x5bb8('0x43')](handleError(_0x354147,null));};exports['create']=function(_0xf14f28,_0x3e394d){return db[_0x5bb8('0x2a')]['create'](_0xf14f28[_0x5bb8('0x44')],{})[_0x5bb8('0x21')](function(_0x56edd2){var _0x4d649a=_0xf14f28[_0x5bb8('0x45')]['get']({'plain':!![]});if(!_0x4d649a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4d649a[_0x5bb8('0x46')]===_0x5bb8('0x45')){var _0xdc448a=_0x56edd2[_0x5bb8('0x23')]({'plain':!![]});var _0x1cc8fd=_0x5bb8('0x24');return db[_0x5bb8('0x47')][_0x5bb8('0x42')]({'where':{'name':_0x1cc8fd,'userProfileId':_0x4d649a[_0x5bb8('0x48')]},'raw':!![]})[_0x5bb8('0x21')](function(_0x428645){if(_0x428645&&_0x428645[_0x5bb8('0x49')]===0x0){return db[_0x5bb8('0x25')]['create']({'name':_0xdc448a['name'],'resourceId':_0xdc448a['id'],'type':_0x428645['name'],'sectionId':_0x428645['id']},{})['then'](function(){return _0x56edd2;});}else{return _0x56edd2;}})[_0x5bb8('0x43')](function(_0x1e8397){logger[_0x5bb8('0x4a')](_0x5bb8('0x4b'),_0x1e8397);throw _0x1e8397;});}return _0x56edd2;})['then'](respondWithResult(_0x3e394d,0xc9))[_0x5bb8('0x43')](handleError(_0x3e394d,null));};exports[_0x5bb8('0x4c')]=function(_0x5206b9,_0x231d9f){if(_0x5206b9[_0x5bb8('0x44')]['id']){delete _0x5206b9['body']['id'];}return db[_0x5bb8('0x2a')][_0x5bb8('0x42')]({'where':{'id':_0x5206b9[_0x5bb8('0x4d')]['id']}})[_0x5bb8('0x21')](handleEntityNotFound(_0x231d9f,null))[_0x5bb8('0x21')](saveUpdates(_0x5206b9['body'],null))[_0x5bb8('0x21')](respondWithResult(_0x231d9f,null))[_0x5bb8('0x43')](handleError(_0x231d9f,null));};exports[_0x5bb8('0x22')]=function(_0x5b4cea,_0x3501a4){return db[_0x5bb8('0x2a')][_0x5bb8('0x42')]({'where':{'id':_0x5b4cea[_0x5bb8('0x4d')]['id']}})[_0x5bb8('0x21')](handleEntityNotFound(_0x3501a4,null))['then'](removeEntity(_0x3501a4,null))[_0x5bb8('0x43')](handleError(_0x3501a4,null));};exports[_0x5bb8('0x4e')]=function(_0x438e45,_0x25819d,_0x4ed8ab){var _0x5abd22=require(_0x5bb8('0x4f'));return db[_0x5bb8('0x2a')][_0x5bb8('0x42')]({'where':{'id':_0x438e45['params']['id']},'raw':!![]})[_0x5bb8('0x21')](handleEntityNotFound(_0x25819d,null))[_0x5bb8('0x21')](function(){_0x5abd22['run'](_0x438e45['params']['id']);})[_0x5bb8('0x21')](respondWithStatusCode(_0x25819d,null))[_0x5bb8('0x43')](handleError(_0x25819d,null));};
\ No newline at end of file
+var _0x2107=['then','destroy','get','Scheduler','UserProfileResource','stack','name','send','Schedule','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','keys','options','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','body','run','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','save','update'];(function(_0x39fbcb,_0x239e5d){var _0xbd43b3=function(_0x27d29b){while(--_0x27d29b){_0x39fbcb['push'](_0x39fbcb['shift']());}};_0xbd43b3(++_0x239e5d);}(_0x2107,0x1d3));var _0x7210=function(_0x369151,_0x179f72){_0x369151=_0x369151-0x0;var _0x4292d5=_0x2107[_0x369151];return _0x4292d5;};'use strict';var emlformat=require(_0x7210('0x0'));var rimraf=require(_0x7210('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7210('0x2'));var rp=require(_0x7210('0x3'));var moment=require(_0x7210('0x4'));var BPromise=require(_0x7210('0x5'));var Mustache=require(_0x7210('0x6'));var util=require('util');var path=require('path');var sox=require(_0x7210('0x7'));var csv=require('to-csv');var ejs=require(_0x7210('0x8'));var fs=require('fs');var fs_extra=require(_0x7210('0x9'));var _=require(_0x7210('0xa'));var squel=require(_0x7210('0xb'));var crypto=require(_0x7210('0xc'));var jsforce=require(_0x7210('0xd'));var deskjs=require(_0x7210('0xe'));var toCsv=require('to-csv');var querystring=require(_0x7210('0xf'));var Papa=require(_0x7210('0x10'));var Redis=require(_0x7210('0x11'));var authService=require(_0x7210('0x12'));var qs=require(_0x7210('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7210('0x14'));var logger=require('../../config/logger')(_0x7210('0x15'));var utils=require(_0x7210('0x16'));var config=require(_0x7210('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x7210('0x18'))['db'];function respondWithStatusCode(_0x5b28be,_0x5ab9c3){_0x5ab9c3=_0x5ab9c3||0xcc;return function(_0x25cd1b){if(_0x25cd1b){return _0x5b28be[_0x7210('0x19')](_0x5ab9c3);}return _0x5b28be[_0x7210('0x1a')](_0x5ab9c3)[_0x7210('0x1b')]();};}function respondWithResult(_0x5972ba,_0x36d646){_0x36d646=_0x36d646||0xc8;return function(_0x511627){if(_0x511627){return _0x5972ba[_0x7210('0x1a')](_0x36d646)[_0x7210('0x1c')](_0x511627);}};}function respondWithFilteredResult(_0x22a616,_0x3cc1e5){return function(_0x16a525){if(_0x16a525){var _0x28a37e=typeof _0x3cc1e5['offset']===_0x7210('0x1d')&&typeof _0x3cc1e5['limit']==='undefined';var _0x29d0ef=_0x16a525[_0x7210('0x1e')];var _0x211f9a=_0x28a37e?0x0:_0x3cc1e5[_0x7210('0x1f')];var _0x16df53=_0x28a37e?_0x16a525['count']:_0x3cc1e5[_0x7210('0x1f')]+_0x3cc1e5[_0x7210('0x20')];var _0x9ba3ef;if(_0x16df53>=_0x29d0ef){_0x16df53=_0x29d0ef;_0x9ba3ef=0xc8;}else{_0x9ba3ef=0xce;}_0x22a616[_0x7210('0x1a')](_0x9ba3ef);return _0x22a616[_0x7210('0x21')](_0x7210('0x22'),_0x211f9a+'-'+_0x16df53+'/'+_0x29d0ef)[_0x7210('0x1c')](_0x16a525);}return null;};}function patchUpdates(_0x43240e){return function(_0x1c69a8){try{jsonpatch['apply'](_0x1c69a8,_0x43240e,!![]);}catch(_0x3a6062){return BPromise['reject'](_0x3a6062);}return _0x1c69a8[_0x7210('0x23')]();};}function saveUpdates(_0x1fb750,_0x5b43ea){return function(_0x3c7920){if(_0x3c7920){return _0x3c7920[_0x7210('0x24')](_0x1fb750)[_0x7210('0x25')](function(_0x4cd447){return _0x4cd447;});}return null;};}function removeEntity(_0x12a160,_0x2caeb3){return function(_0x3f3d5f){if(_0x3f3d5f){return _0x3f3d5f[_0x7210('0x26')]()['then'](function(){var _0x2a2bbc=_0x3f3d5f[_0x7210('0x27')]({'plain':!![]});var _0x431c1a=_0x7210('0x28');return db[_0x7210('0x29')][_0x7210('0x26')]({'where':{'type':_0x431c1a,'resourceId':_0x2a2bbc['id']}})[_0x7210('0x25')](function(){return _0x3f3d5f;});})[_0x7210('0x25')](function(){_0x12a160['status'](0xcc)[_0x7210('0x1b')]();});}};}function handleEntityNotFound(_0x48a6ab,_0x1a2712){return function(_0x3e5956){if(!_0x3e5956){_0x48a6ab[_0x7210('0x19')](0x194);}return _0x3e5956;};}function handleError(_0x40693b,_0xdd7d9f){_0xdd7d9f=_0xdd7d9f||0x1f4;return function(_0x592670){logger['error'](_0x592670[_0x7210('0x2a')]);if(_0x592670[_0x7210('0x2b')]){delete _0x592670[_0x7210('0x2b')];}_0x40693b['status'](_0xdd7d9f)[_0x7210('0x2c')](_0x592670);};}exports['index']=function(_0x82d4ae,_0x44fffe){var _0x4ee6a5={},_0x3db15b={},_0x554b3e={'count':0x0,'rows':[]};var _0x12198c=_['map'](db[_0x7210('0x2d')][_0x7210('0x2e')],function(_0x1082bd){return{'name':_0x1082bd[_0x7210('0x2f')],'type':_0x1082bd[_0x7210('0x30')][_0x7210('0x31')]};});_0x3db15b[_0x7210('0x32')]=_[_0x7210('0x33')](_0x12198c,_0x7210('0x2b'));_0x3db15b['query']=_['keys'](_0x82d4ae[_0x7210('0x34')]);_0x3db15b[_0x7210('0x35')]=_[_0x7210('0x36')](_0x3db15b[_0x7210('0x32')],_0x3db15b[_0x7210('0x34')]);_0x4ee6a5[_0x7210('0x37')]=_[_0x7210('0x36')](_0x3db15b[_0x7210('0x32')],qs[_0x7210('0x38')](_0x82d4ae[_0x7210('0x34')][_0x7210('0x38')]));_0x4ee6a5[_0x7210('0x37')]=_0x4ee6a5[_0x7210('0x37')][_0x7210('0x39')]?_0x4ee6a5[_0x7210('0x37')]:_0x3db15b[_0x7210('0x32')];if(!_0x82d4ae[_0x7210('0x34')][_0x7210('0x3a')]('nolimit')){_0x4ee6a5[_0x7210('0x20')]=qs[_0x7210('0x20')](_0x82d4ae[_0x7210('0x34')][_0x7210('0x20')]);_0x4ee6a5[_0x7210('0x1f')]=qs[_0x7210('0x1f')](_0x82d4ae['query'][_0x7210('0x1f')]);}_0x4ee6a5[_0x7210('0x3b')]=qs[_0x7210('0x3c')](_0x82d4ae[_0x7210('0x34')][_0x7210('0x3c')]);_0x4ee6a5[_0x7210('0x3d')]=qs[_0x7210('0x35')](_[_0x7210('0x3e')](_0x82d4ae[_0x7210('0x34')],_0x3db15b[_0x7210('0x35')]),_0x12198c);if(_0x82d4ae[_0x7210('0x34')][_0x7210('0x3f')]){_0x4ee6a5[_0x7210('0x3d')]=_[_0x7210('0x40')](_0x4ee6a5[_0x7210('0x3d')],{'$or':_[_0x7210('0x33')](_0x12198c,function(_0x37a1a5){if(_0x37a1a5[_0x7210('0x30')]!==_0x7210('0x41')){var _0x39956f={};_0x39956f[_0x37a1a5['name']]={'$like':'%'+_0x82d4ae[_0x7210('0x34')][_0x7210('0x3f')]+'%'};return _0x39956f;}})});}_0x4ee6a5=_[_0x7210('0x40')]({},_0x4ee6a5,_0x82d4ae['options']);var _0x39a578={'where':_0x4ee6a5[_0x7210('0x3d')]};return db[_0x7210('0x2d')]['count'](_0x39a578)[_0x7210('0x25')](function(_0xc5df19){_0x554b3e[_0x7210('0x1e')]=_0xc5df19;if(_0x82d4ae[_0x7210('0x34')][_0x7210('0x42')]){_0x4ee6a5[_0x7210('0x43')]=[{'all':!![]}];}return db[_0x7210('0x2d')][_0x7210('0x44')](_0x4ee6a5);})[_0x7210('0x25')](function(_0x5ced10){_0x554b3e[_0x7210('0x45')]=_0x5ced10;return _0x554b3e;})[_0x7210('0x25')](respondWithFilteredResult(_0x44fffe,_0x4ee6a5))['catch'](handleError(_0x44fffe,null));};exports[_0x7210('0x46')]=function(_0x4495f3,_0x19759a){var _0x248cd1={'raw':![],'where':{'id':_0x4495f3['params']['id']}},_0xbc1adb={};_0xbc1adb['model']=_[_0x7210('0x47')](db[_0x7210('0x2d')]['rawAttributes']);_0xbc1adb[_0x7210('0x34')]=_[_0x7210('0x47')](_0x4495f3[_0x7210('0x34')]);_0xbc1adb[_0x7210('0x35')]=_[_0x7210('0x36')](_0xbc1adb['model'],_0xbc1adb[_0x7210('0x34')]);_0x248cd1[_0x7210('0x37')]=_['intersection'](_0xbc1adb['model'],qs[_0x7210('0x38')](_0x4495f3[_0x7210('0x34')][_0x7210('0x38')]));_0x248cd1[_0x7210('0x37')]=_0x248cd1[_0x7210('0x37')]['length']?_0x248cd1['attributes']:_0xbc1adb['model'];if(_0x4495f3[_0x7210('0x34')]['includeAll']){_0x248cd1[_0x7210('0x43')]=[{'all':!![]}];}_0x248cd1=_['merge']({},_0x248cd1,_0x4495f3[_0x7210('0x48')]);return db['Schedule']['find'](_0x248cd1)[_0x7210('0x25')](handleEntityNotFound(_0x19759a,null))[_0x7210('0x25')](respondWithResult(_0x19759a,null))['catch'](handleError(_0x19759a,null));};exports[_0x7210('0x49')]=function(_0x23d333,_0x580deb){return db[_0x7210('0x2d')][_0x7210('0x49')](_0x23d333['body'],{})['then'](function(_0x4a0493){var _0x2d13e1=_0x23d333['user'][_0x7210('0x27')]({'plain':!![]});if(!_0x2d13e1)throw new Error(_0x7210('0x4a'));if(_0x2d13e1[_0x7210('0x4b')]===_0x7210('0x4c')){var _0x5f51fd=_0x4a0493[_0x7210('0x27')]({'plain':!![]});var _0x1d42a1=_0x7210('0x28');return db['UserProfileSection'][_0x7210('0x4d')]({'where':{'name':_0x1d42a1,'userProfileId':_0x2d13e1['userProfileId']},'raw':!![]})['then'](function(_0x3747da){if(_0x3747da&&_0x3747da[_0x7210('0x4e')]===0x0){return db['UserProfileResource'][_0x7210('0x49')]({'name':_0x5f51fd[_0x7210('0x2b')],'resourceId':_0x5f51fd['id'],'type':_0x3747da[_0x7210('0x2b')],'sectionId':_0x3747da['id']},{})['then'](function(){return _0x4a0493;});}else{return _0x4a0493;}})['catch'](function(_0x457179){logger['error'](_0x7210('0x4f'),_0x457179);throw _0x457179;});}return _0x4a0493;})[_0x7210('0x25')](respondWithResult(_0x580deb,0xc9))[_0x7210('0x50')](handleError(_0x580deb,null));};exports['update']=function(_0x254176,_0x102923){if(_0x254176[_0x7210('0x51')]['id']){delete _0x254176[_0x7210('0x51')]['id'];}return db['Schedule']['find']({'where':{'id':_0x254176['params']['id']}})['then'](handleEntityNotFound(_0x102923,null))[_0x7210('0x25')](saveUpdates(_0x254176['body'],null))[_0x7210('0x25')](respondWithResult(_0x102923,null))[_0x7210('0x50')](handleError(_0x102923,null));};exports[_0x7210('0x26')]=function(_0x360c64,_0x2788c2){return db['Schedule'][_0x7210('0x4d')]({'where':{'id':_0x360c64['params']['id']}})[_0x7210('0x25')](handleEntityNotFound(_0x2788c2,null))[_0x7210('0x25')](removeEntity(_0x2788c2,null))[_0x7210('0x50')](handleError(_0x2788c2,null));};exports[_0x7210('0x52')]=function(_0x5e9c1d,_0x3ddfcc,_0x53d9a5){var _0x2f0961=require('../../config/schedule');return db[_0x7210('0x2d')][_0x7210('0x4d')]({'where':{'id':_0x5e9c1d[_0x7210('0x53')]['id']},'raw':!![]})[_0x7210('0x25')](handleEntityNotFound(_0x3ddfcc,null))[_0x7210('0x25')](function(){_0x2f0961['run'](_0x5e9c1d[_0x7210('0x53')]['id']);})[_0x7210('0x25')](respondWithStatusCode(_0x3ddfcc,null))['catch'](handleError(_0x3ddfcc,null));};
\ No newline at end of file
index 1378b48..0d10739 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe751=['tools_schedules','util','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','Schedule'];(function(_0x4f1a43,_0x42bfb8){var _0x232aa1=function(_0x5c7681){while(--_0x5c7681){_0x4f1a43['push'](_0x4f1a43['shift']());}};_0x232aa1(++_0x42bfb8);}(_0xe751,0xd2));var _0x1e75=function(_0x917a2a,_0x135530){_0x917a2a=_0x917a2a-0x0;var _0x19b727=_0xe751[_0x917a2a];return _0x19b727;};'use strict';var _=require('lodash');var util=require(_0x1e75('0x0'));var logger=require('../../config/logger')(_0x1e75('0x1'));var moment=require('moment');var BPromise=require(_0x1e75('0x2'));var rp=require(_0x1e75('0x3'));var fs=require('fs');var path=require(_0x1e75('0x4'));var rimraf=require(_0x1e75('0x5'));var config=require(_0x1e75('0x6'));var attributes=require('./schedule.attributes');module[_0x1e75('0x7')]=function(_0x2e5bbd,_0x12798d){return _0x2e5bbd[_0x1e75('0x8')](_0x1e75('0x9'),attributes,{'tableName':_0x1e75('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8147=['Schedule','lodash','util','api','moment','path','../../config/environment','./schedule.attributes','exports'];(function(_0x26f6cf,_0x4f4cfc){var _0x5caa20=function(_0x4a7c6d){while(--_0x4a7c6d){_0x26f6cf['push'](_0x26f6cf['shift']());}};_0x5caa20(++_0x4f4cfc);}(_0x8147,0xfd));var _0x7814=function(_0x1e202d,_0x14b1fc){_0x1e202d=_0x1e202d-0x0;var _0x1a333a=_0x8147[_0x1e202d];return _0x1a333a;};'use strict';var _=require(_0x7814('0x0'));var util=require(_0x7814('0x1'));var logger=require('../../config/logger')(_0x7814('0x2'));var moment=require(_0x7814('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7814('0x4'));var rimraf=require('rimraf');var config=require(_0x7814('0x5'));var attributes=require(_0x7814('0x6'));module[_0x7814('0x7')]=function(_0x555fff,_0x4d7083){return _0x555fff['define'](_0x7814('0x8'),attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 157fe69..a47163c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe1f=['error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','request','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s'];(function(_0x506ca3,_0x15ede0){var _0x29db66=function(_0x59796b){while(--_0x59796b){_0x506ca3['push'](_0x506ca3['shift']());}};_0x29db66(++_0x15ede0);}(_0xfe1f,0xcb));var _0xffe1=function(_0x21b359,_0x4dc80e){_0x21b359=_0x21b359-0x0;var _0x57b8e7=_0xfe1f[_0x21b359];return _0x57b8e7;};'use strict';var _=require(_0xffe1('0x0'));var util=require(_0xffe1('0x1'));var moment=require(_0xffe1('0x2'));var BPromise=require(_0xffe1('0x3'));var rs=require(_0xffe1('0x4'));var fs=require('fs');var Redis=require(_0xffe1('0x5'));var db=require(_0xffe1('0x6'))['db'];var utils=require(_0xffe1('0x7'));var logger=require(_0xffe1('0x8'))(_0xffe1('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xffe1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xb4aafd,_0x447023,_0x207bc3){return new BPromise(function(_0x48d4f6,_0x3acbdb){return client[_0xffe1('0xb')](_0xb4aafd,_0x207bc3)['then'](function(_0x95d05){logger[_0xffe1('0xc')](_0xffe1('0xd'),_0x447023,_0xffe1('0xe'));logger[_0xffe1('0xf')](_0xffe1('0x10'),_0x447023,_0xffe1('0xe'),JSON['stringify'](_0x95d05));if(_0x95d05['error']){if(_0x95d05[_0xffe1('0x11')][_0xffe1('0x12')]===0x1f4){logger[_0xffe1('0x11')](_0xffe1('0xd'),_0x447023,_0x95d05['error']['message']);return _0x3acbdb(_0x95d05[_0xffe1('0x11')][_0xffe1('0x13')]);}logger[_0xffe1('0x11')](_0xffe1('0xd'),_0x447023,_0x95d05['error']['message']);return _0x48d4f6(_0x95d05['error'][_0xffe1('0x13')]);}else{logger[_0xffe1('0xc')]('Schedule,\x20%s,\x20%s',_0x447023,_0xffe1('0xe'));_0x48d4f6(_0x95d05[_0xffe1('0x14')][_0xffe1('0x13')]);}})[_0xffe1('0x15')](function(_0x368a29){logger[_0xffe1('0x11')](_0xffe1('0xd'),_0x447023,_0x368a29);_0x3acbdb(_0x368a29);});});}
\ No newline at end of file
+var _0xd4d7=['catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x2714a3,_0x15a26d){var _0x419c9b=function(_0x570d32){while(--_0x570d32){_0x2714a3['push'](_0x2714a3['shift']());}};_0x419c9b(++_0x15a26d);}(_0xd4d7,0x181));var _0x7d4d=function(_0x57e18a,_0x199383){_0x57e18a=_0x57e18a-0x0;var _0x1181c7=_0xd4d7[_0x57e18a];return _0x1181c7;};'use strict';var _=require('lodash');var util=require(_0x7d4d('0x0'));var moment=require(_0x7d4d('0x1'));var BPromise=require(_0x7d4d('0x2'));var rs=require(_0x7d4d('0x3'));var fs=require('fs');var Redis=require(_0x7d4d('0x4'));var db=require(_0x7d4d('0x5'))['db'];var utils=require(_0x7d4d('0x6'));var logger=require(_0x7d4d('0x7'))(_0x7d4d('0x8'));var config=require(_0x7d4d('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7d4d('0xa')][_0x7d4d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x403556,_0x47e371,_0x353185){return new BPromise(function(_0x55001b,_0x259586){return client[_0x7d4d('0xc')](_0x403556,_0x353185)[_0x7d4d('0xd')](function(_0x31e84d){logger[_0x7d4d('0xe')](_0x7d4d('0xf'),_0x47e371,_0x7d4d('0x10'));logger[_0x7d4d('0x11')](_0x7d4d('0x12'),_0x47e371,_0x7d4d('0x10'),JSON[_0x7d4d('0x13')](_0x31e84d));if(_0x31e84d['error']){if(_0x31e84d[_0x7d4d('0x14')]['code']===0x1f4){logger[_0x7d4d('0x14')](_0x7d4d('0xf'),_0x47e371,_0x31e84d[_0x7d4d('0x14')][_0x7d4d('0x15')]);return _0x259586(_0x31e84d[_0x7d4d('0x14')]['message']);}logger[_0x7d4d('0x14')](_0x7d4d('0xf'),_0x47e371,_0x31e84d[_0x7d4d('0x14')][_0x7d4d('0x15')]);return _0x55001b(_0x31e84d['error'][_0x7d4d('0x15')]);}else{logger[_0x7d4d('0xe')](_0x7d4d('0xf'),_0x47e371,'request\x20sent');_0x55001b(_0x31e84d[_0x7d4d('0x16')][_0x7d4d('0x15')]);}})[_0x7d4d('0x17')](function(_0x3002d5){logger[_0x7d4d('0x14')](_0x7d4d('0xf'),_0x47e371,_0x3002d5);_0x259586(_0x3002d5);});});}
\ No newline at end of file
index 21bf314..e569292 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66f9=['isAuthenticated','/describe','describe','get','/:id','show','/:id/download','download','post','create','update','delete','destroy','exports','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./screenRecording.controller'];(function(_0x35f1d4,_0x1992c6){var _0x3d626e=function(_0x3b61af){while(--_0x3b61af){_0x35f1d4['push'](_0x35f1d4['shift']());}};_0x3d626e(++_0x1992c6);}(_0x66f9,0x1c6));var _0x966f=function(_0x3eea30,_0x48a04f){_0x3eea30=_0x3eea30-0x0;var _0x528546=_0x66f9[_0x3eea30];return _0x528546;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x966f('0x0'));var express=require('express');var router=express[_0x966f('0x1')]();var fs_extra=require(_0x966f('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0x966f('0x3'));var config=require(_0x966f('0x4'));var controller=require(_0x966f('0x5'));router['get']('/',auth[_0x966f('0x6')](),controller['index']);router['get'](_0x966f('0x7'),auth[_0x966f('0x6')](),controller[_0x966f('0x8')]);router[_0x966f('0x9')](_0x966f('0xa'),auth['isAuthenticated'](),controller[_0x966f('0xb')]);router[_0x966f('0x9')](_0x966f('0xc'),auth[_0x966f('0x6')](),controller[_0x966f('0xd')]);router[_0x966f('0xe')]('/',auth['isAuthenticated'](),controller[_0x966f('0xf')]);router['put'](_0x966f('0xa'),auth[_0x966f('0x6')](),controller[_0x966f('0x10')]);router[_0x966f('0x11')](_0x966f('0xa'),auth[_0x966f('0x6')](),controller[_0x966f('0x12')]);module[_0x966f('0x13')]=router;
\ No newline at end of file
+var _0x9e8e=['delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','isAuthenticated','index','/describe','describe','/:id','show','download','post','put','update'];(function(_0x240d9f,_0x1bc1fb){var _0x1cfdd4=function(_0x19443a){while(--_0x19443a){_0x240d9f['push'](_0x240d9f['shift']());}};_0x1cfdd4(++_0x1bc1fb);}(_0x9e8e,0x16b));var _0xe9e8=function(_0x341604,_0xa7bb93){_0x341604=_0x341604-0x0;var _0x2b6946=_0x9e8e[_0x341604];return _0x2b6946;};'use strict';var multer=require(_0xe9e8('0x0'));var util=require(_0xe9e8('0x1'));var path=require(_0xe9e8('0x2'));var timeout=require(_0xe9e8('0x3'));var express=require(_0xe9e8('0x4'));var router=express[_0xe9e8('0x5')]();var fs_extra=require(_0xe9e8('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xe9e8('0x7'));var config=require(_0xe9e8('0x8'));var controller=require(_0xe9e8('0x9'));router[_0xe9e8('0xa')]('/',auth[_0xe9e8('0xb')](),controller[_0xe9e8('0xc')]);router[_0xe9e8('0xa')](_0xe9e8('0xd'),auth['isAuthenticated'](),controller[_0xe9e8('0xe')]);router[_0xe9e8('0xa')](_0xe9e8('0xf'),auth[_0xe9e8('0xb')](),controller[_0xe9e8('0x10')]);router['get']('/:id/download',auth['isAuthenticated'](),controller[_0xe9e8('0x11')]);router[_0xe9e8('0x12')]('/',auth[_0xe9e8('0xb')](),controller['create']);router[_0xe9e8('0x13')](_0xe9e8('0xf'),auth['isAuthenticated'](),controller[_0xe9e8('0x14')]);router[_0xe9e8('0x15')](_0xe9e8('0xf'),auth['isAuthenticated'](),controller[_0xe9e8('0x16')]);module[_0xe9e8('0x17')]=router;
\ No newline at end of file
index 5fa44bd..9c25b75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5b3=['startedAt','subtract','closedAt','duration','DATE','format','MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','sequelize','moment','path','../../config/environment','exports','VIRTUAL','getDataValue','value','STRING','replace','setDataValue','INTEGER'];(function(_0x35a779,_0x27f8fb){var _0xca723b=function(_0x298df7){while(--_0x298df7){_0x35a779['push'](_0x35a779['shift']());}};_0xca723b(++_0x27f8fb);}(_0xc5b3,0x1ee));var _0x3c5b=function(_0x36f47c,_0x38ef4d){_0x36f47c=_0x36f47c-0x0;var _0x296c55=_0xc5b3[_0x36f47c];return _0x296c55;};'use strict';var Sequelize=require(_0x3c5b('0x0'));var moment=require(_0x3c5b('0x1'));var path=require(_0x3c5b('0x2'));var config=require(_0x3c5b('0x3'));module[_0x3c5b('0x4')]={'format':{'type':Sequelize[_0x3c5b('0x5')],'get':function(){return this[_0x3c5b('0x6')](_0x3c5b('0x7'))?path['extname'](this[_0x3c5b('0x6')](_0x3c5b('0x7'))):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x3c5b('0x8')]},'value':{'type':Sequelize['STRING'],'set':function(_0x7a363e){var _0x4730e9=_0x7a363e[_0x3c5b('0x9')](/\\/g,'/');this[_0x3c5b('0xa')](_0x3c5b('0x7'),_0x4730e9);}},'rating':{'type':Sequelize[_0x3c5b('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x3c5b('0xb')],'set':function(_0x5f5df9){this[_0x3c5b('0xa')](_0x3c5b('0xc'),moment()[_0x3c5b('0xd')](_0x5f5df9,'ms'));this[_0x3c5b('0xa')](_0x3c5b('0xe'),moment());this['setDataValue'](_0x3c5b('0xf'),_0x5f5df9);}},'startedAt':{'type':Sequelize[_0x3c5b('0x10')],'get':function(){return moment(this[_0x3c5b('0x6')](_0x3c5b('0xc')))[_0x3c5b('0x11')](_0x3c5b('0x12'))[_0x3c5b('0x13')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x3c5b('0x6')](_0x3c5b('0xe')))[_0x3c5b('0x11')](_0x3c5b('0x12'))['toString']();}},'createdAt':{'type':Sequelize[_0x3c5b('0x10')],'get':function(){return moment(this['getDataValue'](_0x3c5b('0x14')))[_0x3c5b('0x11')]('MM-DD-YYYY\x20HH:mm')[_0x3c5b('0x13')]();}},'updatedAt':{'type':Sequelize[_0x3c5b('0x10')],'get':function(){return moment(this['getDataValue'](_0x3c5b('0x15')))[_0x3c5b('0x11')](_0x3c5b('0x12'))['toString']();}}};
\ No newline at end of file
+var _0xe5fc=['path','../../config/environment','exports','extname','value','STRING','replace','setDataValue','INTEGER','startedAt','subtract','duration','DATE','getDataValue','format','MM-DD-YYYY\x20HH:mm','toString','updatedAt','sequelize'];(function(_0x113cf9,_0x358825){var _0x5842ad=function(_0x1b55da){while(--_0x1b55da){_0x113cf9['push'](_0x113cf9['shift']());}};_0x5842ad(++_0x358825);}(_0xe5fc,0x109));var _0xce5f=function(_0x37dcae,_0x2fdfc1){_0x37dcae=_0x37dcae-0x0;var _0x30cf3e=_0xe5fc[_0x37dcae];return _0x30cf3e;};'use strict';var Sequelize=require(_0xce5f('0x0'));var moment=require('moment');var path=require(_0xce5f('0x1'));var config=require(_0xce5f('0x2'));module[_0xce5f('0x3')]={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue']('value')?path[_0xce5f('0x4')](this['getDataValue'](_0xce5f('0x5'))):undefined;}},'interactionid':{'type':Sequelize[_0xce5f('0x6')]},'channel':{'type':Sequelize[_0xce5f('0x6')]},'value':{'type':Sequelize[_0xce5f('0x6')],'set':function(_0x3b77ef){var _0x30a150=_0x3b77ef[_0xce5f('0x7')](/\\/g,'/');this[_0xce5f('0x8')]('value',_0x30a150);}},'rating':{'type':Sequelize[_0xce5f('0x9')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xce5f('0x9')],'set':function(_0x29a7bf){this[_0xce5f('0x8')](_0xce5f('0xa'),moment()[_0xce5f('0xb')](_0x29a7bf,'ms'));this[_0xce5f('0x8')]('closedAt',moment());this[_0xce5f('0x8')](_0xce5f('0xc'),_0x29a7bf);}},'startedAt':{'type':Sequelize[_0xce5f('0xd')],'get':function(){return moment(this[_0xce5f('0xe')](_0xce5f('0xa')))[_0xce5f('0xf')](_0xce5f('0x10'))[_0xce5f('0x11')]();}},'closedAt':{'type':Sequelize[_0xce5f('0xd')],'get':function(){return moment(this['getDataValue']('closedAt'))['format'](_0xce5f('0x10'))[_0xce5f('0x11')]();}},'createdAt':{'type':Sequelize[_0xce5f('0xd')],'get':function(){return moment(this[_0xce5f('0xe')]('createdAt'))[_0xce5f('0xf')](_0xce5f('0x10'))[_0xce5f('0x11')]();}},'updatedAt':{'type':Sequelize[_0xce5f('0xd')],'get':function(){return moment(this[_0xce5f('0xe')](_0xce5f('0x12')))[_0xce5f('0xf')](_0xce5f('0x10'))[_0xce5f('0x11')]();}}};
\ No newline at end of file
index 08c2744..28c9824 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84ab=['describe','download','join','existsSync','decryptFile','secrets','recording','Sequelize','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','isNil','server/files/screen_recordings','cancellazione\x20fisica\x20documento\x20%s','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','error','stack','name','send','rawAttributes','type','key','model','differenceBy','map','format','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','ScreenRecording','rows','params','keys','intersection','find','catch','body','createdAt','value'];(function(_0x42915e,_0x50b90a){var _0x475c59=function(_0x451315){while(--_0x451315){_0x42915e['push'](_0x42915e['shift']());}};_0x475c59(++_0x50b90a);}(_0x84ab,0x12f));var _0xb84a=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0x84ab[_0x9df060];return _0x338dfe;};'use strict';var emlformat=require(_0xb84a('0x0'));var rimraf=require(_0xb84a('0x1'));var zipdir=require(_0xb84a('0x2'));var jsonpatch=require(_0xb84a('0x3'));var rp=require(_0xb84a('0x4'));var moment=require('moment');var BPromise=require(_0xb84a('0x5'));var Mustache=require(_0xb84a('0x6'));var util=require('util');var path=require(_0xb84a('0x7'));var sox=require(_0xb84a('0x8'));var csv=require(_0xb84a('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb84a('0xa'));var crypto=require('crypto');var jsforce=require(_0xb84a('0xb'));var deskjs=require(_0xb84a('0xc'));var toCsv=require('to-csv');var querystring=require(_0xb84a('0xd'));var Papa=require('papaparse');var Redis=require(_0xb84a('0xe'));var authService=require(_0xb84a('0xf'));var qs=require(_0xb84a('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb84a('0x11'));var utils=require(_0xb84a('0x12'));var config=require(_0xb84a('0x13'));var licenseUtil=require(_0xb84a('0x14'));var db=require(_0xb84a('0x15'))['db'];function respondWithStatusCode(_0x4d3758,_0x83444e){_0x83444e=_0x83444e||0xcc;return function(_0x4777dc){if(_0x4777dc){return _0x4d3758[_0xb84a('0x16')](_0x83444e);}return _0x4d3758[_0xb84a('0x17')](_0x83444e)[_0xb84a('0x18')]();};}function respondWithResult(_0x11dfe9,_0x12ccab){_0x12ccab=_0x12ccab||0xc8;return function(_0x475b){if(_0x475b){return _0x11dfe9[_0xb84a('0x17')](_0x12ccab)[_0xb84a('0x19')](_0x475b);}};}function respondWithFilteredResult(_0xc0b2e0,_0x1251ec){return function(_0x5716bd){if(_0x5716bd){var _0x11dd4d=typeof _0x1251ec[_0xb84a('0x1a')]===_0xb84a('0x1b')&&typeof _0x1251ec[_0xb84a('0x1c')]===_0xb84a('0x1b');var _0x1be87a=_0x5716bd[_0xb84a('0x1d')];var _0x34d82f=_0x11dd4d?0x0:_0x1251ec[_0xb84a('0x1a')];var _0x3f7437=_0x11dd4d?_0x5716bd[_0xb84a('0x1d')]:_0x1251ec[_0xb84a('0x1a')]+_0x1251ec[_0xb84a('0x1c')];var _0x200289;if(_0x3f7437>=_0x1be87a){_0x3f7437=_0x1be87a;_0x200289=0xc8;}else{_0x200289=0xce;}_0xc0b2e0['status'](_0x200289);return _0xc0b2e0[_0xb84a('0x1e')](_0xb84a('0x1f'),_0x34d82f+'-'+_0x3f7437+'/'+_0x1be87a)['json'](_0x5716bd);}return null;};}function patchUpdates(_0xac76d3){return function(_0x61ef03){try{jsonpatch[_0xb84a('0x20')](_0x61ef03,_0xac76d3,!![]);}catch(_0x19f637){return BPromise['reject'](_0x19f637);}return _0x61ef03['save']();};}function saveUpdates(_0x1466ae,_0x19097d){return function(_0x2d70fd){if(_0x2d70fd){return _0x2d70fd[_0xb84a('0x21')](_0x1466ae)[_0xb84a('0x22')](function(_0x3b8fb2){return _0x3b8fb2;});}return null;};}function removeEntity(_0x8b28cd,_0x21d0d3){return function(_0x3aa06f){if(_0x3aa06f){return _0x3aa06f[_0xb84a('0x23')]()[_0xb84a('0x22')](function(){_0x8b28cd[_0xb84a('0x17')](0xcc)[_0xb84a('0x18')]();});}};}function handleEntityNotFound(_0x409df0,_0x19bdfa){return function(_0x3258a9){if(!_0x3258a9){_0x409df0[_0xb84a('0x16')](0x194);}return _0x3258a9;};}function handleError(_0x3ff0bc,_0x3b6805){_0x3b6805=_0x3b6805||0x1f4;return function(_0xd468c3){logger[_0xb84a('0x24')](_0xd468c3[_0xb84a('0x25')]);if(_0xd468c3[_0xb84a('0x26')]){delete _0xd468c3[_0xb84a('0x26')];}_0x3ff0bc[_0xb84a('0x17')](_0x3b6805)[_0xb84a('0x27')](_0xd468c3);};}exports['index']=function(_0x582954,_0x4608ce){var _0x2c30b0={},_0x4dab4e={},_0x1f690a={'count':0x0,'rows':[]};var _0x36b4f4=_['map'](db['ScreenRecording'][_0xb84a('0x28')],function(_0x8e9319){return{'name':_0x8e9319['fieldName'],'type':_0x8e9319[_0xb84a('0x29')][_0xb84a('0x2a')]};});_0x4dab4e[_0xb84a('0x2b')]=_[_0xb84a('0x2c')](_[_0xb84a('0x2d')](_0x36b4f4,_0xb84a('0x26')),[_0xb84a('0x2e')]);_0x4dab4e[_0xb84a('0x2f')]=_['keys'](_0x582954[_0xb84a('0x2f')]);_0x4dab4e['filters']=_['intersection'](_0x4dab4e[_0xb84a('0x2b')],_0x4dab4e[_0xb84a('0x2f')]);_0x2c30b0['attributes']=_['intersection'](_0x4dab4e[_0xb84a('0x2b')],qs[_0xb84a('0x30')](_0x582954[_0xb84a('0x2f')][_0xb84a('0x30')]));_0x2c30b0[_0xb84a('0x31')]=_0x2c30b0[_0xb84a('0x31')][_0xb84a('0x32')]?_0x2c30b0[_0xb84a('0x31')]:_0x4dab4e['model'];if(!_0x582954[_0xb84a('0x2f')][_0xb84a('0x33')](_0xb84a('0x34'))){_0x2c30b0[_0xb84a('0x1c')]=qs[_0xb84a('0x1c')](_0x582954[_0xb84a('0x2f')][_0xb84a('0x1c')]);_0x2c30b0['offset']=qs[_0xb84a('0x1a')](_0x582954['query'][_0xb84a('0x1a')]);}_0x2c30b0[_0xb84a('0x35')]=qs[_0xb84a('0x36')](_0x582954['query']['sort']);_0x2c30b0[_0xb84a('0x37')]=qs[_0xb84a('0x38')](_[_0xb84a('0x39')](_0x582954[_0xb84a('0x2f')],_0x4dab4e[_0xb84a('0x38')]),_0x36b4f4);if(_0x582954['query'][_0xb84a('0x3a')]){_0x2c30b0[_0xb84a('0x37')]=_['merge'](_0x2c30b0[_0xb84a('0x37')],{'$or':_[_0xb84a('0x2d')](_0x36b4f4,function(_0x19634b){if(_0x19634b[_0xb84a('0x29')]!=='VIRTUAL'){var _0x57a1a8={};_0x57a1a8[_0x19634b['name']]={'$like':'%'+_0x582954[_0xb84a('0x2f')][_0xb84a('0x3a')]+'%'};return _0x57a1a8;}})});}_0x2c30b0=_[_0xb84a('0x3b')]({},_0x2c30b0,_0x582954[_0xb84a('0x3c')]);var _0x55b0b8={'where':_0x2c30b0[_0xb84a('0x37')]};return db['ScreenRecording'][_0xb84a('0x1d')](_0x55b0b8)['then'](function(_0x48db18){_0x1f690a['count']=_0x48db18;if(_0x582954[_0xb84a('0x2f')][_0xb84a('0x3d')]){_0x2c30b0[_0xb84a('0x3e')]=[{'all':!![]}];}return db[_0xb84a('0x3f')]['findAll'](_0x2c30b0);})[_0xb84a('0x22')](function(_0x42f0b6){_0x1f690a[_0xb84a('0x40')]=_0x42f0b6;return _0x1f690a;})[_0xb84a('0x22')](respondWithFilteredResult(_0x4608ce,_0x2c30b0))['catch'](handleError(_0x4608ce,null));};exports['show']=function(_0x15a621,_0x1f3e04){var _0x541cc4={'raw':![],'where':{'id':_0x15a621[_0xb84a('0x41')]['id']}},_0x1045ee={};_0x1045ee[_0xb84a('0x2b')]=_[_0xb84a('0x42')](db[_0xb84a('0x3f')][_0xb84a('0x28')]);_0x1045ee[_0xb84a('0x2f')]=_[_0xb84a('0x42')](_0x15a621[_0xb84a('0x2f')]);_0x1045ee[_0xb84a('0x38')]=_[_0xb84a('0x43')](_0x1045ee[_0xb84a('0x2b')],_0x1045ee[_0xb84a('0x2f')]);_0x541cc4[_0xb84a('0x31')]=_[_0xb84a('0x43')](_0x1045ee['model'],qs[_0xb84a('0x30')](_0x15a621[_0xb84a('0x2f')][_0xb84a('0x30')]));_0x541cc4[_0xb84a('0x31')]=_0x541cc4[_0xb84a('0x31')][_0xb84a('0x32')]?_0x541cc4['attributes']:_0x1045ee[_0xb84a('0x2b')];if(_0x15a621['query'][_0xb84a('0x3d')]){_0x541cc4[_0xb84a('0x3e')]=[{'all':!![]}];}_0x541cc4=_[_0xb84a('0x3b')]({},_0x541cc4,_0x15a621[_0xb84a('0x3c')]);return db['ScreenRecording'][_0xb84a('0x44')](_0x541cc4)[_0xb84a('0x22')](handleEntityNotFound(_0x1f3e04,null))[_0xb84a('0x22')](respondWithResult(_0x1f3e04,null))['catch'](handleError(_0x1f3e04,null));};exports['create']=function(_0x385986,_0x10b0cc){return db[_0xb84a('0x3f')]['create'](_0x385986['body'],{})['then'](respondWithResult(_0x10b0cc,0xc9))[_0xb84a('0x45')](handleError(_0x10b0cc,null));};exports[_0xb84a('0x21')]=function(_0x38f329,_0x4476bc){if(_0x38f329[_0xb84a('0x46')]['id']){delete _0x38f329['body']['id'];}delete _0x38f329['body']['duration'];delete _0x38f329['body'][_0xb84a('0x47')];delete _0x38f329[_0xb84a('0x46')]['closedAt'];delete _0x38f329[_0xb84a('0x46')][_0xb84a('0x48')];return db[_0xb84a('0x3f')][_0xb84a('0x44')]({'where':{'id':_0x38f329[_0xb84a('0x41')]['id']}})[_0xb84a('0x22')](handleEntityNotFound(_0x4476bc,null))['then'](saveUpdates(_0x38f329['body'],null))[_0xb84a('0x22')](respondWithResult(_0x4476bc,null))['catch'](handleError(_0x4476bc,null));};exports[_0xb84a('0x49')]=function(_0x4d1a29,_0x575908){return db['ScreenRecording'][_0xb84a('0x49')]()[_0xb84a('0x22')](respondWithResult(_0x575908,null))[_0xb84a('0x45')](handleError(_0x575908,null));};exports[_0xb84a('0x4a')]=function(_0x33adfc,_0x46f7eb,_0x37ca26){var _0x29ff35=require('../../components/encryptor');var _0x5afdd0=![];var _0x4c5bdf={};if(_0x33adfc[_0xb84a('0x2f')][_0xb84a('0x29')]&&_0x33adfc['query'][_0xb84a('0x29')]==='uniqueid'){_0x4c5bdf['uniqueid']=_0x33adfc['params']['id'];}else{_0x4c5bdf['id']=_0x33adfc[_0xb84a('0x41')]['id'];}return db[_0xb84a('0x3f')][_0xb84a('0x44')]({'where':_0x4c5bdf,'attributes':['id','value'],'raw':!![]})[_0xb84a('0x22')](handleEntityNotFound(_0x46f7eb,null))[_0xb84a('0x22')](function(_0x136d61){if(_0x136d61){var _0x505994=path[_0xb84a('0x4b')](config['root'],'server/files/screen_recordings',_0x136d61[_0xb84a('0x48')]);var _0x47a8a2=util[_0xb84a('0x2e')]('%s.cypher',_0x505994);if(fs[_0xb84a('0x4c')](_0x47a8a2)){_0x5afdd0=!![];return _0x29ff35[_0xb84a('0x4d')](_0x47a8a2,_0x505994,config[_0xb84a('0x4e')][_0xb84a('0x4f')])['then'](function(){return _0x136d61;});}return _0x136d61;}})['then'](function(_0x4fc998){if(_0x4fc998){var _0x40b392=path[_0xb84a('0x4b')](config['root'],'server/files/screen_recordings',_0x4fc998[_0xb84a('0x48')]);if(!fs[_0xb84a('0x4c')](_0x40b392)){throw new db[(_0xb84a('0x50'))]['ValidationError'](_0xb84a('0x51'));}if(_0x4fc998[_0xb84a('0x52')]){return _0x46f7eb['download'](_0x40b392,_0x4fc998[_0xb84a('0x52')]+path[_0xb84a('0x53')](_0x40b392),function(){if(_0x5afdd0){fs[_0xb84a('0x54')](_0x40b392);}});}else{return _0x46f7eb[_0xb84a('0x4a')](_0x40b392,function(_0x3bbc69){if(_0x5afdd0){fs[_0xb84a('0x54')](_0x40b392);}});}}})[_0xb84a('0x45')](function(_0x47c27f){if(_0x47c27f[_0xb84a('0x55')]===_0xb84a('0x51')){_0x46f7eb['status'](0x194)[_0xb84a('0x27')](_0xb84a('0x56'));}else{return handleError(_0x46f7eb,null);}});};exports[_0xb84a('0x23')]=function(_0x3e16d8,_0x347998){return db[_0xb84a('0x3f')][_0xb84a('0x44')]({'where':{'id':_0x3e16d8[_0xb84a('0x41')]['id']}})[_0xb84a('0x22')](function(_0x5dd660){if(_[_0xb84a('0x57')](_0x5dd660)){throw new ReferenceError('Entity\x20not\x20found');}return _0x5dd660;})['then'](function(_0x19d635){var _0x5e11c8=path[_0xb84a('0x4b')](config['root'],_0xb84a('0x58'),_0x19d635[_0xb84a('0x48')]);logger['info'](_0xb84a('0x59'),_0x5e11c8);if(!_[_0xb84a('0x57')](_0x19d635[_0xb84a('0x48')])&&fs[_0xb84a('0x4c')](_0x5e11c8)){logger[_0xb84a('0x5a')](_0xb84a('0x5b')+_0x5e11c8+_0xb84a('0x5c'));fs['unlinkSync'](_0x5e11c8);}_0x5e11c8=_0x5e11c8+_0xb84a('0x5d');if(!_['isNil'](_0x19d635['value'])&&fs[_0xb84a('0x4c')](_0x5e11c8)){logger[_0xb84a('0x5a')](_0xb84a('0x5b')+_0x5e11c8+_0xb84a('0x5c'));fs['unlinkSync'](_0x5e11c8);}return _0x19d635;})['then'](function(_0x43031f){if(!_0x43031f)throw new InternalError();return _0x43031f[_0xb84a('0x23')]();})[_0xb84a('0x22')](function(){_0x347998[_0xb84a('0x17')](0xcc)['end']();})[_0xb84a('0x45')](handleError(_0x347998,null));};
\ No newline at end of file
+var _0x98a8=['../../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','index','map','ScreenRecording','rawAttributes','fieldName','type','key','model','differenceBy','format','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','limit','order','sort','pick','filter','where','options','includeAll','include','findAll','rows','catch','show','params','merge','find','create','body','duration','createdAt','closedAt','describe','download','../../components/encryptor','join','server/files/screen_recordings','value','%s.cypher','existsSync','decryptFile','secrets','recording','root','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','Entity\x20not\x20found','info','isNil','File:\x20\x22','unlinkSync','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis'];(function(_0x452d0f,_0x1f5c61){var _0x4395e8=function(_0x56556a){while(--_0x56556a){_0x452d0f['push'](_0x452d0f['shift']());}};_0x4395e8(++_0x1f5c61);}(_0x98a8,0x12c));var _0x898a=function(_0x11f40d,_0x9579a8){_0x11f40d=_0x11f40d-0x0;var _0x36a4c2=_0x98a8[_0x11f40d];return _0x36a4c2;};'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={},_0x47f1ed={},_0xe9c33d={'count':0x0,'rows':[]};var _0x62fe93=_[_0x898a('0x2a')](db[_0x898a('0x2b')][_0x898a('0x2c')],function(_0x560000){return{'name':_0x560000[_0x898a('0x2d')],'type':_0x560000[_0x898a('0x2e')][_0x898a('0x2f')]};});_0x47f1ed[_0x898a('0x30')]=_[_0x898a('0x31')](_[_0x898a('0x2a')](_0x62fe93,'name'),[_0x898a('0x32')]);_0x47f1ed[_0x898a('0x33')]=_[_0x898a('0x34')](_0xd31922[_0x898a('0x33')]);_0x47f1ed[_0x898a('0x35')]=_['intersection'](_0x47f1ed['model'],_0x47f1ed[_0x898a('0x33')]);_0x4b3e68[_0x898a('0x36')]=_[_0x898a('0x37')](_0x47f1ed['model'],qs[_0x898a('0x38')](_0xd31922[_0x898a('0x33')][_0x898a('0x38')]));_0x4b3e68[_0x898a('0x36')]=_0x4b3e68[_0x898a('0x36')][_0x898a('0x39')]?_0x4b3e68[_0x898a('0x36')]:_0x47f1ed[_0x898a('0x30')];if(!_0xd31922['query'][_0x898a('0x3a')]('nolimit')){_0x4b3e68['limit']=qs[_0x898a('0x3b')](_0xd31922['query'][_0x898a('0x3b')]);_0x4b3e68['offset']=qs[_0x898a('0x1e')](_0xd31922['query'][_0x898a('0x1e')]);}_0x4b3e68[_0x898a('0x3c')]=qs[_0x898a('0x3d')](_0xd31922['query']['sort']);_0x4b3e68['where']=qs[_0x898a('0x35')](_[_0x898a('0x3e')](_0xd31922['query'],_0x47f1ed[_0x898a('0x35')]),_0x62fe93);if(_0xd31922[_0x898a('0x33')][_0x898a('0x3f')]){_0x4b3e68[_0x898a('0x40')]=_['merge'](_0x4b3e68['where'],{'$or':_[_0x898a('0x2a')](_0x62fe93,function(_0x454c8c){if(_0x454c8c['type']!=='VIRTUAL'){var _0x168f92={};_0x168f92[_0x454c8c[_0x898a('0x27')]]={'$like':'%'+_0xd31922[_0x898a('0x33')][_0x898a('0x3f')]+'%'};return _0x168f92;}})});}_0x4b3e68=_['merge']({},_0x4b3e68,_0xd31922[_0x898a('0x41')]);var _0x369c02={'where':_0x4b3e68['where']};return db['ScreenRecording']['count'](_0x369c02)[_0x898a('0x23')](function(_0x477a9d){_0xe9c33d[_0x898a('0x1d')]=_0x477a9d;if(_0xd31922[_0x898a('0x33')][_0x898a('0x42')]){_0x4b3e68[_0x898a('0x43')]=[{'all':!![]}];}return db[_0x898a('0x2b')][_0x898a('0x44')](_0x4b3e68);})[_0x898a('0x23')](function(_0x235fcf){_0xe9c33d[_0x898a('0x45')]=_0x235fcf;return _0xe9c33d;})[_0x898a('0x23')](respondWithFilteredResult(_0x58149d,_0x4b3e68))[_0x898a('0x46')](handleError(_0x58149d,null));};exports[_0x898a('0x47')]=function(_0x21f307,_0x4c8628){var _0x26ad34={'raw':![],'where':{'id':_0x21f307[_0x898a('0x48')]['id']}},_0x11c437={};_0x11c437['model']=_[_0x898a('0x34')](db[_0x898a('0x2b')][_0x898a('0x2c')]);_0x11c437[_0x898a('0x33')]=_[_0x898a('0x34')](_0x21f307[_0x898a('0x33')]);_0x11c437[_0x898a('0x35')]=_[_0x898a('0x37')](_0x11c437['model'],_0x11c437[_0x898a('0x33')]);_0x26ad34[_0x898a('0x36')]=_[_0x898a('0x37')](_0x11c437[_0x898a('0x30')],qs['fields'](_0x21f307[_0x898a('0x33')][_0x898a('0x38')]));_0x26ad34['attributes']=_0x26ad34[_0x898a('0x36')]['length']?_0x26ad34[_0x898a('0x36')]:_0x11c437['model'];if(_0x21f307['query'][_0x898a('0x42')]){_0x26ad34['include']=[{'all':!![]}];}_0x26ad34=_[_0x898a('0x49')]({},_0x26ad34,_0x21f307[_0x898a('0x41')]);return db['ScreenRecording'][_0x898a('0x4a')](_0x26ad34)[_0x898a('0x23')](handleEntityNotFound(_0x4c8628,null))['then'](respondWithResult(_0x4c8628,null))[_0x898a('0x46')](handleError(_0x4c8628,null));};exports[_0x898a('0x4b')]=function(_0x11a0a3,_0x118240){return db['ScreenRecording'][_0x898a('0x4b')](_0x11a0a3[_0x898a('0x4c')],{})['then'](respondWithResult(_0x118240,0xc9))[_0x898a('0x46')](handleError(_0x118240,null));};exports[_0x898a('0x22')]=function(_0x4ab441,_0x28525b){if(_0x4ab441['body']['id']){delete _0x4ab441[_0x898a('0x4c')]['id'];}delete _0x4ab441[_0x898a('0x4c')][_0x898a('0x4d')];delete _0x4ab441['body'][_0x898a('0x4e')];delete _0x4ab441[_0x898a('0x4c')][_0x898a('0x4f')];delete _0x4ab441[_0x898a('0x4c')]['value'];return db[_0x898a('0x2b')]['find']({'where':{'id':_0x4ab441[_0x898a('0x48')]['id']}})[_0x898a('0x23')](handleEntityNotFound(_0x28525b,null))[_0x898a('0x23')](saveUpdates(_0x4ab441['body'],null))[_0x898a('0x23')](respondWithResult(_0x28525b,null))[_0x898a('0x46')](handleError(_0x28525b,null));};exports[_0x898a('0x50')]=function(_0x5d325a,_0x52f8c6){return db[_0x898a('0x2b')][_0x898a('0x50')]()[_0x898a('0x23')](respondWithResult(_0x52f8c6,null))[_0x898a('0x46')](handleError(_0x52f8c6,null));};exports[_0x898a('0x51')]=function(_0x36b63a,_0x369f33,_0x6c0f07){var _0x289167=require(_0x898a('0x52'));var _0x2382a9=![];var _0x5e9329={};if(_0x36b63a[_0x898a('0x33')][_0x898a('0x2e')]&&_0x36b63a['query'][_0x898a('0x2e')]==='uniqueid'){_0x5e9329['uniqueid']=_0x36b63a[_0x898a('0x48')]['id'];}else{_0x5e9329['id']=_0x36b63a[_0x898a('0x48')]['id'];}return db[_0x898a('0x2b')]['find']({'where':_0x5e9329,'attributes':['id','value'],'raw':!![]})[_0x898a('0x23')](handleEntityNotFound(_0x369f33,null))[_0x898a('0x23')](function(_0x515725){if(_0x515725){var _0xaa96f7=path[_0x898a('0x53')](config['root'],_0x898a('0x54'),_0x515725[_0x898a('0x55')]);var _0x3122cc=util['format'](_0x898a('0x56'),_0xaa96f7);if(fs[_0x898a('0x57')](_0x3122cc)){_0x2382a9=!![];return _0x289167[_0x898a('0x58')](_0x3122cc,_0xaa96f7,config[_0x898a('0x59')][_0x898a('0x5a')])[_0x898a('0x23')](function(){return _0x515725;});}return _0x515725;}})['then'](function(_0x22a08a){if(_0x22a08a){var _0x4df5f0=path[_0x898a('0x53')](config[_0x898a('0x5b')],_0x898a('0x54'),_0x22a08a[_0x898a('0x55')]);if(!fs[_0x898a('0x57')](_0x4df5f0)){throw new db[(_0x898a('0x5c'))][(_0x898a('0x5d'))](_0x898a('0x5e'));}if(_0x22a08a[_0x898a('0x5f')]){return _0x369f33['download'](_0x4df5f0,_0x22a08a[_0x898a('0x5f')]+path[_0x898a('0x60')](_0x4df5f0),function(){if(_0x2382a9){fs[_0x898a('0x61')](_0x4df5f0);}});}else{return _0x369f33[_0x898a('0x51')](_0x4df5f0,function(_0x219976){if(_0x2382a9){fs[_0x898a('0x61')](_0x4df5f0);}});}}})[_0x898a('0x46')](function(_0x68fd81){if(_0x68fd81[_0x898a('0x62')]===_0x898a('0x5e')){_0x369f33[_0x898a('0x1a')](0x194)[_0x898a('0x28')](_0x898a('0x63'));}else{return handleError(_0x369f33,null);}});};exports[_0x898a('0x24')]=function(_0x22f9ba,_0x5f42ae){return db[_0x898a('0x2b')][_0x898a('0x4a')]({'where':{'id':_0x22f9ba['params']['id']}})[_0x898a('0x23')](function(_0x4583a1){if(_['isNil'](_0x4583a1)){throw new ReferenceError(_0x898a('0x64'));}return _0x4583a1;})[_0x898a('0x23')](function(_0x21f0f8){var _0x1f3f5b=path['join'](config[_0x898a('0x5b')],_0x898a('0x54'),_0x21f0f8[_0x898a('0x55')]);logger[_0x898a('0x65')]('cancellazione\x20fisica\x20documento\x20%s',_0x1f3f5b);if(!_[_0x898a('0x66')](_0x21f0f8[_0x898a('0x55')])&&fs['existsSync'](_0x1f3f5b)){logger[_0x898a('0x65')](_0x898a('0x67')+_0x1f3f5b+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x898a('0x68')](_0x1f3f5b);}_0x1f3f5b=_0x1f3f5b+'.cypher';if(!_[_0x898a('0x66')](_0x21f0f8['value'])&&fs['existsSync'](_0x1f3f5b)){logger['info'](_0x898a('0x67')+_0x1f3f5b+_0x898a('0x69'));fs[_0x898a('0x68')](_0x1f3f5b);}return _0x21f0f8;})[_0x898a('0x23')](function(_0x5e0535){if(!_0x5e0535)throw new InternalError();return _0x5e0535['destroy']();})[_0x898a('0x23')](function(){_0x5f42ae[_0x898a('0x1a')](0xcc)[_0x898a('0x19')]();})[_0x898a('0x46')](handleError(_0x5f42ae,null));};
\ No newline at end of file
index 16950bd..48680d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4858=['ScreenRecording','screen_recordings','interactionid','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./screenRecording.attributes','exports','define'];(function(_0x5c0526,_0xce1ab5){var _0x3c2dc9=function(_0x5b7980){while(--_0x5b7980){_0x5c0526['push'](_0x5c0526['shift']());}};_0x3c2dc9(++_0xce1ab5);}(_0x4858,0x8a));var _0x8485=function(_0x237052,_0x28636d){_0x237052=_0x237052-0x0;var _0x627e37=_0x4858[_0x237052];return _0x627e37;};'use strict';var _=require(_0x8485('0x0'));var util=require('util');var logger=require(_0x8485('0x1'))(_0x8485('0x2'));var moment=require(_0x8485('0x3'));var BPromise=require(_0x8485('0x4'));var rp=require(_0x8485('0x5'));var fs=require('fs');var path=require(_0x8485('0x6'));var rimraf=require(_0x8485('0x7'));var config=require(_0x8485('0x8'));var attributes=require(_0x8485('0x9'));module[_0x8485('0xa')]=function(_0x367df0,_0x3f6eca){return _0x367df0[_0x8485('0xb')](_0x8485('0xc'),attributes,{'tableName':_0x8485('0xd'),'paranoid':![],'indexes':[{'name':_0x8485('0xe'),'fields':[_0x8485('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x866c=['exports','define','ScreenRecording','screen_recordings','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./screenRecording.attributes'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0x866c,0xd6));var _0xc866=function(_0x190b8c,_0x27404a){_0x190b8c=_0x190b8c-0x0;var _0x16af26=_0x866c[_0x190b8c];return _0x16af26;};'use strict';var _=require(_0xc866('0x0'));var util=require('util');var logger=require(_0xc866('0x1'))(_0xc866('0x2'));var moment=require(_0xc866('0x3'));var BPromise=require(_0xc866('0x4'));var rp=require(_0xc866('0x5'));var fs=require('fs');var path=require(_0xc866('0x6'));var rimraf=require(_0xc866('0x7'));var config=require(_0xc866('0x8'));var attributes=require(_0xc866('0x9'));module[_0xc866('0xa')]=function(_0x3fa1a0,_0x2563f9){return _0x3fa1a0[_0xc866('0xb')](_0xc866('0xc'),attributes,{'tableName':_0xc866('0xd'),'paranoid':![],'indexes':[{'name':'interactionid','fields':['interactionid']}],'timestamps':!![]});};
\ No newline at end of file
index df70dbb..4fbb8d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x888c=['catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x16af01,_0x9c623c){var _0x4d4b9a=function(_0x26019f){while(--_0x26019f){_0x16af01['push'](_0x16af01['shift']());}};_0x4d4b9a(++_0x9c623c);}(_0x888c,0x8b));var _0xc888=function(_0x5575cf,_0x20a960){_0x5575cf=_0x5575cf-0x0;var _0x4ff52b=_0x888c[_0x5575cf];return _0x4ff52b;};'use strict';var _=require(_0xc888('0x0'));var util=require(_0xc888('0x1'));var moment=require(_0xc888('0x2'));var BPromise=require(_0xc888('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc888('0x4'));var db=require(_0xc888('0x5'))['db'];var utils=require(_0xc888('0x6'));var logger=require(_0xc888('0x7'))(_0xc888('0x8'));var config=require(_0xc888('0x9'));var jayson=require(_0xc888('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2e34b7,_0x285874,_0x3a04ef){return new BPromise(function(_0x4c8413,_0x488b78){return client[_0xc888('0xb')](_0x2e34b7,_0x3a04ef)[_0xc888('0xc')](function(_0x1494bf){logger[_0xc888('0xd')](_0xc888('0xe'),_0x285874,_0xc888('0xf'));logger[_0xc888('0x10')](_0xc888('0x11'),_0x285874,'request\x20sent',JSON[_0xc888('0x12')](_0x1494bf));if(_0x1494bf[_0xc888('0x13')]){if(_0x1494bf[_0xc888('0x13')]['code']===0x1f4){logger[_0xc888('0x13')](_0xc888('0xe'),_0x285874,_0x1494bf[_0xc888('0x13')][_0xc888('0x14')]);return _0x488b78(_0x1494bf['error'][_0xc888('0x14')]);}logger[_0xc888('0x13')](_0xc888('0xe'),_0x285874,_0x1494bf[_0xc888('0x13')][_0xc888('0x14')]);return _0x4c8413(_0x1494bf['error']['message']);}else{logger[_0xc888('0xd')]('ScreenRecording,\x20%s,\x20%s',_0x285874,_0xc888('0xf'));_0x4c8413(_0x1494bf[_0xc888('0x15')]['message']);}})[_0xc888('0x16')](function(_0x2bbde5){logger[_0xc888('0x13')](_0xc888('0xe'),_0x285874,_0x2bbde5);_0x488b78(_0x2bbde5);});});}
\ No newline at end of file
+var _0xb318=['stringify','error','code','message','info','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','ScreenRecording,\x20%s,\x20%s','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x5dd595,_0x42f81e){var _0x1b84a7=function(_0x2ecce8){while(--_0x2ecce8){_0x5dd595['push'](_0x5dd595['shift']());}};_0x1b84a7(++_0x42f81e);}(_0xb318,0x13e));var _0x8b31=function(_0x3317b2,_0x251036){_0x3317b2=_0x3317b2-0x0;var _0x31a146=_0xb318[_0x3317b2];return _0x31a146;};'use strict';var _=require(_0x8b31('0x0'));var util=require(_0x8b31('0x1'));var moment=require(_0x8b31('0x2'));var BPromise=require(_0x8b31('0x3'));var rs=require(_0x8b31('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8b31('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8b31('0x6'))(_0x8b31('0x7'));var config=require(_0x8b31('0x8'));var jayson=require(_0x8b31('0x9'));var client=jayson[_0x8b31('0xa')][_0x8b31('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3bbc0d,_0x33de39,_0x30f604){return new BPromise(function(_0x13ca45,_0x30962e){return client[_0x8b31('0xc')](_0x3bbc0d,_0x30f604)[_0x8b31('0xd')](function(_0x4f6ff2){logger['info'](_0x8b31('0xe'),_0x33de39,'request\x20sent');logger[_0x8b31('0xf')](_0x8b31('0x10'),_0x33de39,_0x8b31('0x11'),JSON[_0x8b31('0x12')](_0x4f6ff2));if(_0x4f6ff2[_0x8b31('0x13')]){if(_0x4f6ff2['error'][_0x8b31('0x14')]===0x1f4){logger[_0x8b31('0x13')](_0x8b31('0xe'),_0x33de39,_0x4f6ff2['error']['message']);return _0x30962e(_0x4f6ff2['error'][_0x8b31('0x15')]);}logger[_0x8b31('0x13')](_0x8b31('0xe'),_0x33de39,_0x4f6ff2[_0x8b31('0x13')][_0x8b31('0x15')]);return _0x13ca45(_0x4f6ff2['error'][_0x8b31('0x15')]);}else{logger[_0x8b31('0x16')](_0x8b31('0xe'),_0x33de39,_0x8b31('0x11'));_0x13ca45(_0x4f6ff2[_0x8b31('0x17')][_0x8b31('0x15')]);}})['catch'](function(_0xbcdd1a){logger[_0x8b31('0x13')](_0x8b31('0xe'),_0x33de39,_0xbcdd1a);_0x30962e(_0xbcdd1a);});});}
\ No newline at end of file
index de5fce1..f0a525f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d1b=['logologin','post','/:id/logo_login','addLogoLogin','preferred','addPreferred','addFavicon','put','exports','multer','util','connect-timeout','express','fs-extra','./setting.controller','get','isAuthenticated','index','/:id','show','/:id/logo','getLogo','getLogoLogin','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','root','server/files/images/logos/','format','logo','extname','originalname','single','file','addLogo','join','%s%s'];(function(_0x49637c,_0x40cb68){var _0x3fbaab=function(_0x4db2f9){while(--_0x4db2f9){_0x49637c['push'](_0x49637c['shift']());}};_0x3fbaab(++_0x40cb68);}(_0x7d1b,0x1b6));var _0xb7d1=function(_0x29dd57,_0x46c86a){_0x29dd57=_0x29dd57-0x0;var _0x52a0f9=_0x7d1b[_0x29dd57];return _0x52a0f9;};'use strict';var multer=require(_0xb7d1('0x0'));var util=require(_0xb7d1('0x1'));var path=require('path');var timeout=require(_0xb7d1('0x2'));var express=require(_0xb7d1('0x3'));var router=express['Router']();var fs_extra=require(_0xb7d1('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xb7d1('0x5'));router[_0xb7d1('0x6')]('/',auth[_0xb7d1('0x7')](),controller[_0xb7d1('0x8')]);router[_0xb7d1('0x6')]('/now',controller['getDate']);router[_0xb7d1('0x6')](_0xb7d1('0x9'),controller[_0xb7d1('0xa')]);router[_0xb7d1('0x6')](_0xb7d1('0xb'),controller[_0xb7d1('0xc')]);router[_0xb7d1('0x6')]('/:id/logo_login',controller[_0xb7d1('0xd')]);router[_0xb7d1('0x6')]('/:id/gdpr',controller['gdpr']);router[_0xb7d1('0x6')](_0xb7d1('0xe'),controller[_0xb7d1('0xf')]);router[_0xb7d1('0x6')](_0xb7d1('0x10'),controller[_0xb7d1('0x11')]);var upload=multer({'storage':multer[_0xb7d1('0x12')]({'destination':function(_0x33c831,_0x33b738,_0x36c2fd){_0x36c2fd(null,path['join'](config[_0xb7d1('0x13')],_0xb7d1('0x14')));},'filename':function(_0x58ef07,_0x51512a,_0x53e161){_0x53e161(null,util[_0xb7d1('0x15')]('%s%s',_0xb7d1('0x16'),path[_0xb7d1('0x17')](_0x51512a[_0xb7d1('0x18')])));}})});router['post'](_0xb7d1('0xb'),upload[_0xb7d1('0x19')](_0xb7d1('0x1a')),controller[_0xb7d1('0x1b')]);var upload=multer({'storage':multer[_0xb7d1('0x12')]({'destination':function(_0x499e14,_0x3bf0bf,_0x2ddf29){_0x2ddf29(null,path[_0xb7d1('0x1c')](config[_0xb7d1('0x13')],_0xb7d1('0x14')));},'filename':function(_0x3f0a8c,_0x5b4cfb,_0x18aa3e){_0x18aa3e(null,util[_0xb7d1('0x15')](_0xb7d1('0x1d'),_0xb7d1('0x1e'),path[_0xb7d1('0x17')](_0x5b4cfb[_0xb7d1('0x18')])));}})});router[_0xb7d1('0x1f')](_0xb7d1('0x20'),upload[_0xb7d1('0x19')]('file'),controller[_0xb7d1('0x21')]);var upload=multer({'storage':multer[_0xb7d1('0x12')]({'destination':function(_0x253a9a,_0x15096e,_0x526158){_0x526158(null,path['join'](config[_0xb7d1('0x13')],_0xb7d1('0x14')));},'filename':function(_0x190550,_0x6a20be,_0x3bdeba){_0x3bdeba(null,util[_0xb7d1('0x15')]('%s%s',_0xb7d1('0x22'),path[_0xb7d1('0x17')](_0x6a20be[_0xb7d1('0x18')])));}})});router[_0xb7d1('0x1f')](_0xb7d1('0xe'),upload[_0xb7d1('0x19')](_0xb7d1('0x1a')),controller[_0xb7d1('0x23')]);var upload=multer({'storage':multer[_0xb7d1('0x12')]({'destination':function(_0x386d91,_0x1e329d,_0x1d3926){_0x1d3926(null,path[_0xb7d1('0x1c')](config[_0xb7d1('0x13')],_0xb7d1('0x14')));},'filename':function(_0xb1077c,_0x493e86,_0xb95a74){_0xb95a74(null,util[_0xb7d1('0x15')](_0xb7d1('0x1d'),'favicon',path['extname'](_0x493e86[_0xb7d1('0x18')])));}})});router[_0xb7d1('0x1f')](_0xb7d1('0x10'),upload[_0xb7d1('0x19')](_0xb7d1('0x1a')),controller[_0xb7d1('0x24')]);router[_0xb7d1('0x25')](_0xb7d1('0x9'),auth[_0xb7d1('0x7')](),controller['update']);module[_0xb7d1('0x26')]=router;
\ No newline at end of file
+var _0xedad=['join','server/files/images/logos/','format','%s%s','logo','originalname','/:id/logo','file','addLogo','diskStorage','root','logologin','post','single','preferred','extname','/:id/preferred','addPreferred','favicon','addFavicon','put','isAuthenticated','update','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./setting.controller','get','index','/now','/:id','show','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','getPreferred','/:id/favicon','getFavicon'];(function(_0x4e10b5,_0x1fa78e){var _0x42d227=function(_0x132c3e){while(--_0x132c3e){_0x4e10b5['push'](_0x4e10b5['shift']());}};_0x42d227(++_0x1fa78e);}(_0xedad,0xfe));var _0xdeda=function(_0x4db46b,_0xadcb1a){_0x4db46b=_0x4db46b-0x0;var _0x565be8=_0xedad[_0x4db46b];return _0x565be8;};'use strict';var multer=require(_0xdeda('0x0'));var util=require(_0xdeda('0x1'));var path=require(_0xdeda('0x2'));var timeout=require(_0xdeda('0x3'));var express=require(_0xdeda('0x4'));var router=express[_0xdeda('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xdeda('0x6'));var config=require(_0xdeda('0x7'));var controller=require(_0xdeda('0x8'));router[_0xdeda('0x9')]('/',auth['isAuthenticated'](),controller[_0xdeda('0xa')]);router[_0xdeda('0x9')](_0xdeda('0xb'),controller['getDate']);router['get'](_0xdeda('0xc'),controller[_0xdeda('0xd')]);router[_0xdeda('0x9')]('/:id/logo',controller[_0xdeda('0xe')]);router[_0xdeda('0x9')](_0xdeda('0xf'),controller[_0xdeda('0x10')]);router[_0xdeda('0x9')](_0xdeda('0x11'),controller[_0xdeda('0x12')]);router['get']('/:id/preferred',controller[_0xdeda('0x13')]);router[_0xdeda('0x9')](_0xdeda('0x14'),controller[_0xdeda('0x15')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x329db0,_0x156ec1,_0x39d3f0){_0x39d3f0(null,path[_0xdeda('0x16')](config['root'],_0xdeda('0x17')));},'filename':function(_0x5a12f6,_0x5b0fbc,_0xd3a82a){_0xd3a82a(null,util[_0xdeda('0x18')](_0xdeda('0x19'),_0xdeda('0x1a'),path['extname'](_0x5b0fbc[_0xdeda('0x1b')])));}})});router['post'](_0xdeda('0x1c'),upload['single'](_0xdeda('0x1d')),controller[_0xdeda('0x1e')]);var upload=multer({'storage':multer[_0xdeda('0x1f')]({'destination':function(_0x1fedcc,_0x3ac3d9,_0x2e6c22){_0x2e6c22(null,path[_0xdeda('0x16')](config[_0xdeda('0x20')],_0xdeda('0x17')));},'filename':function(_0x206327,_0x259eb9,_0x3a710d){_0x3a710d(null,util[_0xdeda('0x18')](_0xdeda('0x19'),_0xdeda('0x21'),path['extname'](_0x259eb9[_0xdeda('0x1b')])));}})});router[_0xdeda('0x22')]('/:id/logo_login',upload[_0xdeda('0x23')](_0xdeda('0x1d')),controller['addLogoLogin']);var upload=multer({'storage':multer[_0xdeda('0x1f')]({'destination':function(_0x12e98c,_0x5d8b50,_0x59471d){_0x59471d(null,path[_0xdeda('0x16')](config['root'],'server/files/images/logos/'));},'filename':function(_0xccee30,_0x211809,_0x29154c){_0x29154c(null,util[_0xdeda('0x18')](_0xdeda('0x19'),_0xdeda('0x24'),path[_0xdeda('0x25')](_0x211809[_0xdeda('0x1b')])));}})});router[_0xdeda('0x22')](_0xdeda('0x26'),upload['single'](_0xdeda('0x1d')),controller[_0xdeda('0x27')]);var upload=multer({'storage':multer[_0xdeda('0x1f')]({'destination':function(_0x261190,_0x529e3d,_0x59a89d){_0x59a89d(null,path['join'](config['root'],_0xdeda('0x17')));},'filename':function(_0x9c8db7,_0x4cb796,_0x46f50a){_0x46f50a(null,util[_0xdeda('0x18')](_0xdeda('0x19'),_0xdeda('0x28'),path[_0xdeda('0x25')](_0x4cb796['originalname'])));}})});router[_0xdeda('0x22')](_0xdeda('0x14'),upload[_0xdeda('0x23')]('file'),controller[_0xdeda('0x29')]);router[_0xdeda('0x2a')](_0xdeda('0xc'),auth[_0xdeda('0x2b')](),controller[_0xdeda('0x2c')]);module[_0xdeda('0x2d')]=router;
\ No newline at end of file
index c30fd9c..ca4b11c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['BOOLEAN','alternate','UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted'];(function(_0x48fa30,_0x2a401d){var _0x12d87c=function(_0x169f8f){while(--_0x169f8f){_0x48fa30['push'](_0x48fa30['shift']());}};_0x12d87c(++_0x2a401d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xa9e0[_0x411add];return _0x238242;};'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
+var _0xa9e0=['BOOLEAN','alternate','UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted'];(function(_0x39f3fa,_0x13d9ab){var _0x49258d=function(_0x6b593b){while(--_0x6b593b){_0x39f3fa['push'](_0x39f3fa['shift']());}};_0x49258d(++_0x13d9ab);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xa9e0[_0x2d8fc2];return _0x3a9e53;};'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 602566f..1ce4c41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc69b=['querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','info','Setting,\x20%s,\x20%s','Setting,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','catch','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','index','map','Setting','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','options','includeAll','params','merge','find','body','file','filename','addLogoLogin','loginLogo','../../config/license/util','getLogo','server/files/images/logos','getLicense','logo','preferred','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','root','toLower','join','default_logo.svg','default','custom','Sequelize','ValidationError','upperFirst','default_loginLogo.svg','download','gdpr','securePassword','addPreferred','favicon','default_preferred.png','\x20not\x20found','addFavicon','getFavicon','default_favicon.ico','getDate','utcOffset','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js'];(function(_0x548688,_0xbc19d3){var _0x16c3fa=function(_0x1d4fea){while(--_0x1d4fea){_0x548688['push'](_0x548688['shift']());}};_0x16c3fa(++_0xbc19d3);}(_0xc69b,0x1d3));var _0xbc69=function(_0x622035,_0x1a4b91){_0x622035=_0x622035-0x0;var _0x326cf2=_0xc69b[_0x622035];return _0x326cf2;};'use strict';var emlformat=require(_0xbc69('0x0'));var rimraf=require(_0xbc69('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbc69('0x2'));var rp=require(_0xbc69('0x3'));var moment=require(_0xbc69('0x4'));var BPromise=require(_0xbc69('0x5'));var Mustache=require(_0xbc69('0x6'));var util=require(_0xbc69('0x7'));var path=require(_0xbc69('0x8'));var sox=require(_0xbc69('0x9'));var csv=require(_0xbc69('0xa'));var ejs=require(_0xbc69('0xb'));var fs=require('fs');var fs_extra=require(_0xbc69('0xc'));var _=require('lodash');var squel=require(_0xbc69('0xd'));var crypto=require(_0xbc69('0xe'));var jsforce=require(_0xbc69('0xf'));var deskjs=require(_0xbc69('0x10'));var toCsv=require('to-csv');var querystring=require(_0xbc69('0x11'));var Papa=require(_0xbc69('0x12'));var Redis=require(_0xbc69('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xbc69('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xbc69('0x15'))('api');var utils=require(_0xbc69('0x16'));var config=require(_0xbc69('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xbc69('0x18'))['db'];var jayson=require(_0xbc69('0x19'));var client=jayson[_0xbc69('0x1a')][_0xbc69('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x13dd05,_0x31ef15,_0x3a0289,_0x17b99e){return new BPromise(function(_0x1b5c5c,_0x428949){var _0x5cb0f1=_0x17b99e||client;return _0x5cb0f1[_0xbc69('0x1c')](_0x13dd05,_0x3a0289)[_0xbc69('0x1d')](function(_0x117ca1){logger[_0xbc69('0x1e')](_0xbc69('0x1f'),_0x31ef15,'request\x20sent');logger['debug'](_0xbc69('0x20'),_0x31ef15,_0xbc69('0x21'),JSON[_0xbc69('0x22')](_0x117ca1));if(_0x117ca1['error']){if(_0x117ca1['error'][_0xbc69('0x23')]===0x1f4){logger[_0xbc69('0x24')](_0xbc69('0x1f'),_0x31ef15,_0x117ca1[_0xbc69('0x24')][_0xbc69('0x25')]);return _0x428949(_0x117ca1[_0xbc69('0x24')][_0xbc69('0x25')]);}logger[_0xbc69('0x24')]('Setting,\x20%s,\x20%s',_0x31ef15,_0x117ca1[_0xbc69('0x24')][_0xbc69('0x25')]);return _0x1b5c5c(_0x117ca1[_0xbc69('0x24')][_0xbc69('0x25')]);}else{logger[_0xbc69('0x1e')]('Setting,\x20%s,\x20%s',_0x31ef15,_0xbc69('0x21'));_0x1b5c5c(_0x117ca1[_0xbc69('0x26')][_0xbc69('0x25')]);}})[_0xbc69('0x27')](function(_0x24562c){logger['error'](_0xbc69('0x1f'),_0x31ef15,_0x24562c);_0x428949(_0x24562c);});});}function respondWithStatusCode(_0x38e6a3,_0x342806){_0x342806=_0x342806||0xcc;return function(_0x202d26){if(_0x202d26){return _0x38e6a3['sendStatus'](_0x342806);}return _0x38e6a3[_0xbc69('0x28')](_0x342806)[_0xbc69('0x29')]();};}function respondWithResult(_0x60d74d,_0x1042fc){_0x1042fc=_0x1042fc||0xc8;return function(_0x25d140){if(_0x25d140){return _0x60d74d[_0xbc69('0x28')](_0x1042fc)[_0xbc69('0x2a')](_0x25d140);}};}function respondWithFilteredResult(_0x5bd8df,_0x4f1194){return function(_0x2208b8){if(_0x2208b8){var _0x276d20=typeof _0x4f1194[_0xbc69('0x2b')]==='undefined'&&typeof _0x4f1194[_0xbc69('0x2c')]===_0xbc69('0x2d');var _0x14daa0=_0x2208b8[_0xbc69('0x2e')];var _0x39d2cc=_0x276d20?0x0:_0x4f1194[_0xbc69('0x2b')];var _0xb1506a=_0x276d20?_0x2208b8[_0xbc69('0x2e')]:_0x4f1194[_0xbc69('0x2b')]+_0x4f1194['limit'];var _0x1826a9;if(_0xb1506a>=_0x14daa0){_0xb1506a=_0x14daa0;_0x1826a9=0xc8;}else{_0x1826a9=0xce;}_0x5bd8df['status'](_0x1826a9);return _0x5bd8df[_0xbc69('0x2f')](_0xbc69('0x30'),_0x39d2cc+'-'+_0xb1506a+'/'+_0x14daa0)[_0xbc69('0x2a')](_0x2208b8);}return null;};}function patchUpdates(_0x2249b3){return function(_0xf63849){try{jsonpatch[_0xbc69('0x31')](_0xf63849,_0x2249b3,!![]);}catch(_0x39265a){return BPromise[_0xbc69('0x32')](_0x39265a);}return _0xf63849[_0xbc69('0x33')]();};}function saveUpdates(_0x5b064a,_0x1595ca){return function(_0x5289d6){if(_0x5289d6){return _0x5289d6[_0xbc69('0x34')](_0x5b064a)[_0xbc69('0x1d')](function(_0x15720f){return _0x15720f;});}return null;};}function removeEntity(_0xe52486,_0x58f142){return function(_0xd27301){if(_0xd27301){return _0xd27301[_0xbc69('0x35')]()['then'](function(){_0xe52486[_0xbc69('0x28')](0xcc)[_0xbc69('0x29')]();});}};}function handleEntityNotFound(_0x5133cf,_0x254291){return function(_0x47f90a){if(!_0x47f90a){_0x5133cf[_0xbc69('0x36')](0x194);}return _0x47f90a;};}function handleError(_0x36d711,_0x366aae){_0x366aae=_0x366aae||0x1f4;return function(_0x30cb92){logger['error'](_0x30cb92[_0xbc69('0x37')]);if(_0x30cb92[_0xbc69('0x38')]){delete _0x30cb92[_0xbc69('0x38')];}_0x36d711[_0xbc69('0x28')](_0x366aae)[_0xbc69('0x39')](_0x30cb92);};}exports[_0xbc69('0x3a')]=function(_0x5bf776,_0x51116e){var _0x326f97={},_0x4ada8c={},_0x4a447f={'count':0x0,'rows':[]};var _0x391122=_[_0xbc69('0x3b')](db[_0xbc69('0x3c')]['rawAttributes'],function(_0x106bc6){return{'name':_0x106bc6['fieldName'],'type':_0x106bc6[_0xbc69('0x3d')][_0xbc69('0x3e')]};});_0x4ada8c[_0xbc69('0x3f')]=_[_0xbc69('0x3b')](_0x391122,_0xbc69('0x38'));_0x4ada8c[_0xbc69('0x40')]=_[_0xbc69('0x41')](_0x5bf776['query']);_0x4ada8c['filters']=_[_0xbc69('0x42')](_0x4ada8c['model'],_0x4ada8c[_0xbc69('0x40')]);_0x326f97[_0xbc69('0x43')]=_[_0xbc69('0x42')](_0x4ada8c['model'],qs[_0xbc69('0x44')](_0x5bf776[_0xbc69('0x40')][_0xbc69('0x44')]));_0x326f97[_0xbc69('0x43')]=_0x326f97[_0xbc69('0x43')][_0xbc69('0x45')]?_0x326f97[_0xbc69('0x43')]:_0x4ada8c[_0xbc69('0x3f')];if(!_0x5bf776[_0xbc69('0x40')][_0xbc69('0x46')](_0xbc69('0x47'))){_0x326f97[_0xbc69('0x2c')]=qs[_0xbc69('0x2c')](_0x5bf776[_0xbc69('0x40')][_0xbc69('0x2c')]);_0x326f97[_0xbc69('0x2b')]=qs[_0xbc69('0x2b')](_0x5bf776[_0xbc69('0x40')][_0xbc69('0x2b')]);}_0x326f97[_0xbc69('0x48')]=qs[_0xbc69('0x49')](_0x5bf776[_0xbc69('0x40')][_0xbc69('0x49')]);_0x326f97[_0xbc69('0x4a')]=qs[_0xbc69('0x4b')](_[_0xbc69('0x4c')](_0x5bf776[_0xbc69('0x40')],_0x4ada8c['filters']),_0x391122);if(_0x5bf776['query'][_0xbc69('0x4d')]){_0x326f97['where']=_['merge'](_0x326f97['where'],{'$or':_[_0xbc69('0x3b')](_0x391122,function(_0x36653c){if(_0x36653c['type']!=='VIRTUAL'){var _0x1a07f7={};_0x1a07f7[_0x36653c[_0xbc69('0x38')]]={'$like':'%'+_0x5bf776[_0xbc69('0x40')][_0xbc69('0x4d')]+'%'};return _0x1a07f7;}})});}_0x326f97=_['merge']({},_0x326f97,_0x5bf776[_0xbc69('0x4e')]);var _0x36480d={'where':_0x326f97[_0xbc69('0x4a')]};return db[_0xbc69('0x3c')][_0xbc69('0x2e')](_0x36480d)[_0xbc69('0x1d')](function(_0x171c73){_0x4a447f[_0xbc69('0x2e')]=_0x171c73;if(_0x5bf776[_0xbc69('0x40')][_0xbc69('0x4f')]){_0x326f97['include']=[{'all':!![]}];}return db[_0xbc69('0x3c')]['findAll'](_0x326f97);})[_0xbc69('0x1d')](function(_0x12c2a9){_0x4a447f['rows']=_0x12c2a9;return _0x4a447f;})['then'](respondWithFilteredResult(_0x51116e,_0x326f97))['catch'](handleError(_0x51116e,null));};exports['show']=function(_0x540115,_0x300de7){var _0x512d8c={'raw':![],'where':{'id':_0x540115[_0xbc69('0x50')]['id']}},_0x240f74={};_0x240f74[_0xbc69('0x3f')]=_['keys'](db['Setting']['rawAttributes']);_0x240f74['query']=_[_0xbc69('0x41')](_0x540115[_0xbc69('0x40')]);_0x240f74[_0xbc69('0x4b')]=_[_0xbc69('0x42')](_0x240f74[_0xbc69('0x3f')],_0x240f74[_0xbc69('0x40')]);_0x512d8c['attributes']=_[_0xbc69('0x42')](_0x240f74[_0xbc69('0x3f')],qs['fields'](_0x540115[_0xbc69('0x40')][_0xbc69('0x44')]));_0x512d8c['attributes']=_0x512d8c[_0xbc69('0x43')][_0xbc69('0x45')]?_0x512d8c[_0xbc69('0x43')]:_0x240f74['model'];if(_0x540115['query'][_0xbc69('0x4f')]){_0x512d8c['include']=[{'all':!![]}];}_0x512d8c=_[_0xbc69('0x51')]({},_0x512d8c,_0x540115[_0xbc69('0x4e')]);return db[_0xbc69('0x3c')][_0xbc69('0x52')](_0x512d8c)['then'](handleEntityNotFound(_0x300de7,null))[_0xbc69('0x1d')](respondWithResult(_0x300de7,null))[_0xbc69('0x27')](handleError(_0x300de7,null));};exports[_0xbc69('0x34')]=function(_0x111586,_0x3e64db){if(_0x111586[_0xbc69('0x53')]['id']){delete _0x111586[_0xbc69('0x53')]['id'];}return db[_0xbc69('0x3c')][_0xbc69('0x52')]({'where':{'id':_0x111586['params']['id']}})[_0xbc69('0x1d')](handleEntityNotFound(_0x3e64db,null))[_0xbc69('0x1d')](saveUpdates(_0x111586[_0xbc69('0x53')],null))[_0xbc69('0x1d')](respondWithResult(_0x3e64db,null))[_0xbc69('0x27')](handleError(_0x3e64db,null));};exports['addLogo']=function(_0xfe1c1b,_0x1f8555,_0x309bac){if(_0xfe1c1b[_0xbc69('0x54')]&&_0xfe1c1b[_0xbc69('0x54')]['filename']){_0xfe1c1b[_0xbc69('0x53')]['logo']=_0xfe1c1b['file'][_0xbc69('0x55')];}return db[_0xbc69('0x3c')][_0xbc69('0x52')]({'where':{'id':_0xfe1c1b[_0xbc69('0x50')]['id']}})[_0xbc69('0x1d')](handleEntityNotFound(_0x1f8555,null))[_0xbc69('0x1d')](saveUpdates(_0xfe1c1b[_0xbc69('0x53')],null))['then'](respondWithResult(_0x1f8555,null))[_0xbc69('0x27')](handleError(_0x1f8555,null));};exports[_0xbc69('0x56')]=function(_0x57b51e,_0x98989e,_0x4c202e){if(_0x57b51e[_0xbc69('0x54')]&&_0x57b51e[_0xbc69('0x54')][_0xbc69('0x55')]){_0x57b51e[_0xbc69('0x53')][_0xbc69('0x57')]=_0x57b51e[_0xbc69('0x54')]['filename'];}return db[_0xbc69('0x3c')][_0xbc69('0x52')]({'where':{'id':_0x57b51e[_0xbc69('0x50')]['id']}})[_0xbc69('0x1d')](handleEntityNotFound(_0x98989e,null))[_0xbc69('0x1d')](saveUpdates(_0x57b51e['body'],null))[_0xbc69('0x1d')](respondWithResult(_0x98989e,null))[_0xbc69('0x27')](handleError(_0x98989e,null));};var utilLicense=require(_0xbc69('0x58'));exports[_0xbc69('0x59')]=function(_0x33013d,_0x442ce4,_0x382181){var _0x2dcf9b=_0xbc69('0x5a');var _0x23b456={'custom':![]};return utilLicense[_0xbc69('0x5b')]()[_0xbc69('0x1d')](function(_0x30eef1){if(_0x30eef1){_0x23b456=_0x30eef1;}return db[_0xbc69('0x3c')][_0xbc69('0x52')]({'where':{'id':_0x33013d[_0xbc69('0x50')]['id']},'attributes':[_0xbc69('0x5c'),_0xbc69('0x57'),_0xbc69('0x5d'),'favicon',_0xbc69('0x5e'),_0xbc69('0x5f'),_0xbc69('0x60'),_0xbc69('0x61')],'raw':!![]});})[_0xbc69('0x1d')](handleEntityNotFound(_0x442ce4,null))[_0xbc69('0x1d')](function(_0x16f38d){if(_0x16f38d){var _0x1ae65f=_0x16f38d[_0xbc69('0x5c')]&&fs[_0xbc69('0x62')](path['join'](config[_0xbc69('0x63')],_0x2dcf9b,_[_0xbc69('0x64')](_0x16f38d[_0xbc69('0x5c')])))?path['join'](config[_0xbc69('0x63')],_0x2dcf9b,_[_0xbc69('0x64')](_0x16f38d[_0xbc69('0x5c')])):path[_0xbc69('0x65')](config['root'],_0x2dcf9b,_[_0xbc69('0x64')](_0xbc69('0x66')));var _0x4b17bc=_0xbc69('0x67')+_['upperFirst'](_0xbc69('0x5c'));if(_0x16f38d[_0x4b17bc]||!_0x23b456[_0xbc69('0x68')]){_0x1ae65f=path[_0xbc69('0x65')](config[_0xbc69('0x63')],_0x2dcf9b,_[_0xbc69('0x64')](_0xbc69('0x66')));}if(!fs['existsSync'](_0x1ae65f)){throw new db[(_0xbc69('0x69'))][(_0xbc69('0x6a'))](_[_0xbc69('0x6b')](_0xbc69('0x5c'))+'\x20not\x20found');}return _0x442ce4['download'](_0x1ae65f);}})[_0xbc69('0x27')](handleError(_0x442ce4,null));};var utilLicense=require(_0xbc69('0x58'));exports['getLogoLogin']=function(_0x255430,_0x3ca86c,_0x146214){var _0x2f4e7d=_0xbc69('0x5a');var _0x1249a4={'custom':![]};return utilLicense[_0xbc69('0x5b')]()['then'](function(_0x5b03ac){if(_0x5b03ac){_0x1249a4=_0x5b03ac;}return db[_0xbc69('0x3c')]['find']({'where':{'id':_0x255430[_0xbc69('0x50')]['id']},'attributes':[_0xbc69('0x5c'),_0xbc69('0x57'),'preferred','favicon','defaultLogo',_0xbc69('0x5f'),'defaultPreferred',_0xbc69('0x61')],'raw':!![]});})[_0xbc69('0x1d')](handleEntityNotFound(_0x3ca86c,null))[_0xbc69('0x1d')](function(_0x2ebb3e){if(_0x2ebb3e){var _0x2c1ef0=_0x2ebb3e[_0xbc69('0x57')]&&fs[_0xbc69('0x62')](path['join'](config[_0xbc69('0x63')],_0x2f4e7d,_[_0xbc69('0x64')](_0x2ebb3e[_0xbc69('0x57')])))?path[_0xbc69('0x65')](config[_0xbc69('0x63')],_0x2f4e7d,_['toLower'](_0x2ebb3e['loginLogo'])):path[_0xbc69('0x65')](config[_0xbc69('0x63')],_0x2f4e7d,_[_0xbc69('0x64')](_0xbc69('0x6c')));var _0x619b3e=_0xbc69('0x67')+_['upperFirst'](_0xbc69('0x57'));if(_0x2ebb3e[_0x619b3e]||!_0x1249a4[_0xbc69('0x68')]){_0x2c1ef0=path[_0xbc69('0x65')](config[_0xbc69('0x63')],_0x2f4e7d,_[_0xbc69('0x64')]('default_loginLogo.svg'));}if(!fs[_0xbc69('0x62')](_0x2c1ef0)){throw new db[(_0xbc69('0x69'))][(_0xbc69('0x6a'))](_[_0xbc69('0x6b')](_0xbc69('0x57'))+'\x20not\x20found');}return _0x3ca86c[_0xbc69('0x6d')](_0x2c1ef0);}})[_0xbc69('0x27')](handleError(_0x3ca86c,null));};exports[_0xbc69('0x6e')]=function(_0x35a3d7,_0x555a8b){return db[_0xbc69('0x3c')][_0xbc69('0x52')]({'where':{'id':_0x35a3d7[_0xbc69('0x50')]['id']},'attributes':[_0xbc69('0x6f')]})['then'](respondWithResult(_0x555a8b,null))[_0xbc69('0x27')](handleError(_0x555a8b,null));};exports[_0xbc69('0x70')]=function(_0x44139c,_0x4c511d,_0x1afd29){if(_0x44139c[_0xbc69('0x54')]&&_0x44139c[_0xbc69('0x54')]['filename']){_0x44139c[_0xbc69('0x53')][_0xbc69('0x5d')]=_0x44139c[_0xbc69('0x54')][_0xbc69('0x55')];}return db['Setting']['find']({'where':{'id':_0x44139c[_0xbc69('0x50')]['id']}})['then'](handleEntityNotFound(_0x4c511d,null))['then'](saveUpdates(_0x44139c['body'],null))['then'](respondWithResult(_0x4c511d,null))['catch'](handleError(_0x4c511d,null));};var utilLicense=require(_0xbc69('0x58'));exports['getPreferred']=function(_0x53cb13,_0x43af7f,_0x140897){var _0x4e4575=_0xbc69('0x5a');var _0x38d895={'custom':![]};return utilLicense['getLicense']()[_0xbc69('0x1d')](function(_0x2a8a45){if(_0x2a8a45){_0x38d895=_0x2a8a45;}return db[_0xbc69('0x3c')]['find']({'where':{'id':_0x53cb13[_0xbc69('0x50')]['id']},'attributes':[_0xbc69('0x5c'),_0xbc69('0x57'),_0xbc69('0x5d'),_0xbc69('0x71'),_0xbc69('0x5e'),_0xbc69('0x5f'),'defaultPreferred',_0xbc69('0x61')],'raw':!![]});})[_0xbc69('0x1d')](handleEntityNotFound(_0x43af7f,null))[_0xbc69('0x1d')](function(_0x41ffff){if(_0x41ffff){var _0x3102ff=_0x41ffff[_0xbc69('0x5d')]&&fs['existsSync'](path[_0xbc69('0x65')](config[_0xbc69('0x63')],_0x4e4575,_[_0xbc69('0x64')](_0x41ffff[_0xbc69('0x5d')])))?path[_0xbc69('0x65')](config[_0xbc69('0x63')],_0x4e4575,_[_0xbc69('0x64')](_0x41ffff[_0xbc69('0x5d')])):path[_0xbc69('0x65')](config['root'],_0x4e4575,_[_0xbc69('0x64')](_0xbc69('0x72')));var _0x4c6319='default'+_['upperFirst'](_0xbc69('0x5d'));if(_0x41ffff[_0x4c6319]||!_0x38d895[_0xbc69('0x68')]||!_0x38d895[_0xbc69('0x5d')]){_0x3102ff=path[_0xbc69('0x65')](config[_0xbc69('0x63')],_0x4e4575,_[_0xbc69('0x64')](_0xbc69('0x72')));}if(!fs[_0xbc69('0x62')](_0x3102ff)){throw new db[(_0xbc69('0x69'))][(_0xbc69('0x6a'))](_[_0xbc69('0x6b')]('preferred')+_0xbc69('0x73'));}return _0x43af7f[_0xbc69('0x6d')](_0x3102ff);}})[_0xbc69('0x27')](handleError(_0x43af7f,null));};exports[_0xbc69('0x74')]=function(_0x540341,_0x35a3ee,_0x1cd02d){if(_0x540341[_0xbc69('0x54')]&&_0x540341[_0xbc69('0x54')]['filename']){_0x540341[_0xbc69('0x53')][_0xbc69('0x71')]=_0x540341[_0xbc69('0x54')]['filename'];}return db['Setting']['find']({'where':{'id':_0x540341[_0xbc69('0x50')]['id']}})[_0xbc69('0x1d')](handleEntityNotFound(_0x35a3ee,null))[_0xbc69('0x1d')](saveUpdates(_0x540341['body'],null))[_0xbc69('0x1d')](respondWithResult(_0x35a3ee,null))['catch'](handleError(_0x35a3ee,null));};var utilLicense=require('../../config/license/util');exports[_0xbc69('0x75')]=function(_0x5f0a0b,_0x1b0fa3,_0x8103e3){var _0x2d4ef4=_0xbc69('0x5a');var _0x52ea03={'custom':![]};return utilLicense[_0xbc69('0x5b')]()[_0xbc69('0x1d')](function(_0x3fb8c9){if(_0x3fb8c9){_0x52ea03=_0x3fb8c9;}return db[_0xbc69('0x3c')]['find']({'where':{'id':_0x5f0a0b[_0xbc69('0x50')]['id']},'attributes':[_0xbc69('0x5c'),_0xbc69('0x57'),_0xbc69('0x5d'),'favicon',_0xbc69('0x5e'),'defaultLoginLogo',_0xbc69('0x60'),_0xbc69('0x61')],'raw':!![]});})['then'](handleEntityNotFound(_0x1b0fa3,null))[_0xbc69('0x1d')](function(_0x254b8b){if(_0x254b8b){var _0x4ff3cb=_0x254b8b[_0xbc69('0x71')]&&fs[_0xbc69('0x62')](path[_0xbc69('0x65')](config[_0xbc69('0x63')],_0x2d4ef4,_[_0xbc69('0x64')](_0x254b8b[_0xbc69('0x71')])))?path['join'](config[_0xbc69('0x63')],_0x2d4ef4,_['toLower'](_0x254b8b['favicon'])):path[_0xbc69('0x65')](config['root'],_0x2d4ef4,_[_0xbc69('0x64')](_0xbc69('0x76')));var _0x14c801=_0xbc69('0x67')+_['upperFirst']('favicon');if(_0x254b8b[_0x14c801]||!_0x52ea03['custom']){_0x4ff3cb=path[_0xbc69('0x65')](config[_0xbc69('0x63')],_0x2d4ef4,_[_0xbc69('0x64')]('default_favicon.ico'));}if(!fs['existsSync'](_0x4ff3cb)){throw new db['Sequelize'][(_0xbc69('0x6a'))](_['upperFirst'](_0xbc69('0x71'))+_0xbc69('0x73'));}return _0x1b0fa3[_0xbc69('0x6d')](_0x4ff3cb);}})['catch'](handleError(_0x1b0fa3,null));};exports[_0xbc69('0x77')]=function(_0x3b17ca,_0x78b48b){var _0x36e518={'offset':moment()[_0xbc69('0x78')]()};_0x36e518['now']=moment()[_0xbc69('0x78')](_0x36e518[_0xbc69('0x2b')])['format']('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x78b48b[_0xbc69('0x28')](0xc8)['send'](_0x36e518);};
\ No newline at end of file
+var _0x1fa7=['../../config/license/util','../../mysqldb','client','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','sendStatus','status','end','limit','undefined','count','offset','Content-Range','apply','reject','save','update','destroy','stack','name','send','map','Setting','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','hasOwnProperty','nolimit','order','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','fields','find','body','params','addLogo','file','filename','logo','addLogoLogin','loginLogo','getLogo','getLicense','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','join','toLower','root','default_logo.svg','default','upperFirst','custom','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','default_loginLogo.svg','gdpr','securePassword','addPreferred','getPreferred','server/files/images/logos','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','utcOffset','now','YYYY-MM-DD\x20HH:mm:ss:SSS','rimraf','zip-dir','moment','bluebird','util','sox','to-csv','ejs','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x5a4867,_0x2077dd){var _0x1beed7=function(_0x203285){while(--_0x203285){_0x5a4867['push'](_0x5a4867['shift']());}};_0x1beed7(++_0x2077dd);}(_0x1fa7,0x151));var _0x71fa=function(_0x2f8096,_0x3907eb){_0x2f8096=_0x2f8096-0x0;var _0x538a49=_0x1fa7[_0x2f8096];return _0x538a49;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x71fa('0x0'));var zipdir=require(_0x71fa('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x71fa('0x2'));var BPromise=require(_0x71fa('0x3'));var Mustache=require('mustache');var util=require(_0x71fa('0x4'));var path=require('path');var sox=require(_0x71fa('0x5'));var csv=require(_0x71fa('0x6'));var ejs=require(_0x71fa('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x71fa('0x8'));var squel=require(_0x71fa('0x9'));var crypto=require(_0x71fa('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x71fa('0x6'));var querystring=require(_0x71fa('0xb'));var Papa=require(_0x71fa('0xc'));var Redis=require(_0x71fa('0xd'));var authService=require(_0x71fa('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x71fa('0xf'));var hardwareService=require(_0x71fa('0x10'));var logger=require(_0x71fa('0x11'))(_0x71fa('0x12'));var utils=require(_0x71fa('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x71fa('0x14'));var db=require(_0x71fa('0x15'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x71fa('0x16')][_0x71fa('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x5efa7d,_0x2f016d,_0x32475c,_0x262e75){return new BPromise(function(_0x157024,_0xc1fc2a){var _0x3f5d30=_0x262e75||client;return _0x3f5d30[_0x71fa('0x18')](_0x5efa7d,_0x32475c)[_0x71fa('0x19')](function(_0x50e6c8){logger[_0x71fa('0x1a')](_0x71fa('0x1b'),_0x2f016d,_0x71fa('0x1c'));logger[_0x71fa('0x1d')]('Setting,\x20%s,\x20%s,\x20%s',_0x2f016d,'request\x20sent',JSON[_0x71fa('0x1e')](_0x50e6c8));if(_0x50e6c8[_0x71fa('0x1f')]){if(_0x50e6c8[_0x71fa('0x1f')][_0x71fa('0x20')]===0x1f4){logger[_0x71fa('0x1f')](_0x71fa('0x1b'),_0x2f016d,_0x50e6c8['error'][_0x71fa('0x21')]);return _0xc1fc2a(_0x50e6c8['error'][_0x71fa('0x21')]);}logger[_0x71fa('0x1f')](_0x71fa('0x1b'),_0x2f016d,_0x50e6c8[_0x71fa('0x1f')][_0x71fa('0x21')]);return _0x157024(_0x50e6c8['error'][_0x71fa('0x21')]);}else{logger[_0x71fa('0x1a')](_0x71fa('0x1b'),_0x2f016d,_0x71fa('0x1c'));_0x157024(_0x50e6c8['result'][_0x71fa('0x21')]);}})['catch'](function(_0x49429e){logger[_0x71fa('0x1f')](_0x71fa('0x1b'),_0x2f016d,_0x49429e);_0xc1fc2a(_0x49429e);});});}function respondWithStatusCode(_0x408e13,_0x16e0c3){_0x16e0c3=_0x16e0c3||0xcc;return function(_0x358591){if(_0x358591){return _0x408e13[_0x71fa('0x22')](_0x16e0c3);}return _0x408e13[_0x71fa('0x23')](_0x16e0c3)[_0x71fa('0x24')]();};}function respondWithResult(_0x343b46,_0x46bc02){_0x46bc02=_0x46bc02||0xc8;return function(_0x4d3818){if(_0x4d3818){return _0x343b46[_0x71fa('0x23')](_0x46bc02)['json'](_0x4d3818);}};}function respondWithFilteredResult(_0x23e988,_0x12457c){return function(_0x3d5c60){if(_0x3d5c60){var _0x24274c=typeof _0x12457c['offset']==='undefined'&&typeof _0x12457c[_0x71fa('0x25')]===_0x71fa('0x26');var _0x1c7e11=_0x3d5c60[_0x71fa('0x27')];var _0x41b50f=_0x24274c?0x0:_0x12457c[_0x71fa('0x28')];var _0xcb78=_0x24274c?_0x3d5c60[_0x71fa('0x27')]:_0x12457c[_0x71fa('0x28')]+_0x12457c[_0x71fa('0x25')];var _0x14d552;if(_0xcb78>=_0x1c7e11){_0xcb78=_0x1c7e11;_0x14d552=0xc8;}else{_0x14d552=0xce;}_0x23e988[_0x71fa('0x23')](_0x14d552);return _0x23e988['set'](_0x71fa('0x29'),_0x41b50f+'-'+_0xcb78+'/'+_0x1c7e11)['json'](_0x3d5c60);}return null;};}function patchUpdates(_0x5d8b0b){return function(_0x32f8f1){try{jsonpatch[_0x71fa('0x2a')](_0x32f8f1,_0x5d8b0b,!![]);}catch(_0x342c38){return BPromise[_0x71fa('0x2b')](_0x342c38);}return _0x32f8f1[_0x71fa('0x2c')]();};}function saveUpdates(_0xb1bae7,_0x2214b6){return function(_0x16c25e){if(_0x16c25e){return _0x16c25e[_0x71fa('0x2d')](_0xb1bae7)[_0x71fa('0x19')](function(_0x248f1e){return _0x248f1e;});}return null;};}function removeEntity(_0x5aa1f7,_0x2b3563){return function(_0x2b55a6){if(_0x2b55a6){return _0x2b55a6[_0x71fa('0x2e')]()['then'](function(){_0x5aa1f7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x32e03e,_0x34d1a6){return function(_0x2ee5b8){if(!_0x2ee5b8){_0x32e03e[_0x71fa('0x22')](0x194);}return _0x2ee5b8;};}function handleError(_0x12d51b,_0x1c35c3){_0x1c35c3=_0x1c35c3||0x1f4;return function(_0x1601d0){logger['error'](_0x1601d0[_0x71fa('0x2f')]);if(_0x1601d0[_0x71fa('0x30')]){delete _0x1601d0[_0x71fa('0x30')];}_0x12d51b[_0x71fa('0x23')](_0x1c35c3)[_0x71fa('0x31')](_0x1601d0);};}exports['index']=function(_0x401226,_0x301654){var _0x2cd581={},_0x2d5987={},_0x16e471={'count':0x0,'rows':[]};var _0x290628=_[_0x71fa('0x32')](db[_0x71fa('0x33')][_0x71fa('0x34')],function(_0x4679e2){return{'name':_0x4679e2['fieldName'],'type':_0x4679e2[_0x71fa('0x35')][_0x71fa('0x36')]};});_0x2d5987[_0x71fa('0x37')]=_[_0x71fa('0x32')](_0x290628,_0x71fa('0x30'));_0x2d5987[_0x71fa('0x38')]=_[_0x71fa('0x39')](_0x401226[_0x71fa('0x38')]);_0x2d5987[_0x71fa('0x3a')]=_[_0x71fa('0x3b')](_0x2d5987[_0x71fa('0x37')],_0x2d5987[_0x71fa('0x38')]);_0x2cd581[_0x71fa('0x3c')]=_[_0x71fa('0x3b')](_0x2d5987[_0x71fa('0x37')],qs['fields'](_0x401226['query']['fields']));_0x2cd581[_0x71fa('0x3c')]=_0x2cd581[_0x71fa('0x3c')]['length']?_0x2cd581[_0x71fa('0x3c')]:_0x2d5987[_0x71fa('0x37')];if(!_0x401226['query'][_0x71fa('0x3d')](_0x71fa('0x3e'))){_0x2cd581[_0x71fa('0x25')]=qs[_0x71fa('0x25')](_0x401226[_0x71fa('0x38')]['limit']);_0x2cd581[_0x71fa('0x28')]=qs[_0x71fa('0x28')](_0x401226[_0x71fa('0x38')][_0x71fa('0x28')]);}_0x2cd581[_0x71fa('0x3f')]=qs['sort'](_0x401226['query']['sort']);_0x2cd581['where']=qs['filters'](_[_0x71fa('0x40')](_0x401226[_0x71fa('0x38')],_0x2d5987[_0x71fa('0x3a')]),_0x290628);if(_0x401226['query'][_0x71fa('0x41')]){_0x2cd581[_0x71fa('0x42')]=_[_0x71fa('0x43')](_0x2cd581[_0x71fa('0x42')],{'$or':_[_0x71fa('0x32')](_0x290628,function(_0x3244d3){if(_0x3244d3[_0x71fa('0x35')]!==_0x71fa('0x44')){var _0x53a732={};_0x53a732[_0x3244d3[_0x71fa('0x30')]]={'$like':'%'+_0x401226[_0x71fa('0x38')][_0x71fa('0x41')]+'%'};return _0x53a732;}})});}_0x2cd581=_[_0x71fa('0x43')]({},_0x2cd581,_0x401226[_0x71fa('0x45')]);var _0x5b9bd8={'where':_0x2cd581[_0x71fa('0x42')]};return db[_0x71fa('0x33')]['count'](_0x5b9bd8)[_0x71fa('0x19')](function(_0x23aa24){_0x16e471[_0x71fa('0x27')]=_0x23aa24;if(_0x401226['query'][_0x71fa('0x46')]){_0x2cd581[_0x71fa('0x47')]=[{'all':!![]}];}return db[_0x71fa('0x33')][_0x71fa('0x48')](_0x2cd581);})[_0x71fa('0x19')](function(_0x1b35e5){_0x16e471[_0x71fa('0x49')]=_0x1b35e5;return _0x16e471;})[_0x71fa('0x19')](respondWithFilteredResult(_0x301654,_0x2cd581))[_0x71fa('0x4a')](handleError(_0x301654,null));};exports['show']=function(_0x2cdae1,_0x3f2826){var _0x3c558d={'raw':![],'where':{'id':_0x2cdae1['params']['id']}},_0x56433e={};_0x56433e[_0x71fa('0x37')]=_['keys'](db[_0x71fa('0x33')]['rawAttributes']);_0x56433e['query']=_[_0x71fa('0x39')](_0x2cdae1['query']);_0x56433e['filters']=_['intersection'](_0x56433e['model'],_0x56433e[_0x71fa('0x38')]);_0x3c558d[_0x71fa('0x3c')]=_[_0x71fa('0x3b')](_0x56433e['model'],qs[_0x71fa('0x4b')](_0x2cdae1['query'][_0x71fa('0x4b')]));_0x3c558d[_0x71fa('0x3c')]=_0x3c558d[_0x71fa('0x3c')]['length']?_0x3c558d['attributes']:_0x56433e['model'];if(_0x2cdae1[_0x71fa('0x38')][_0x71fa('0x46')]){_0x3c558d[_0x71fa('0x47')]=[{'all':!![]}];}_0x3c558d=_[_0x71fa('0x43')]({},_0x3c558d,_0x2cdae1['options']);return db['Setting'][_0x71fa('0x4c')](_0x3c558d)['then'](handleEntityNotFound(_0x3f2826,null))[_0x71fa('0x19')](respondWithResult(_0x3f2826,null))[_0x71fa('0x4a')](handleError(_0x3f2826,null));};exports[_0x71fa('0x2d')]=function(_0x3ca4ba,_0x4b1597){if(_0x3ca4ba[_0x71fa('0x4d')]['id']){delete _0x3ca4ba['body']['id'];}return db['Setting'][_0x71fa('0x4c')]({'where':{'id':_0x3ca4ba[_0x71fa('0x4e')]['id']}})[_0x71fa('0x19')](handleEntityNotFound(_0x4b1597,null))[_0x71fa('0x19')](saveUpdates(_0x3ca4ba[_0x71fa('0x4d')],null))[_0x71fa('0x19')](respondWithResult(_0x4b1597,null))['catch'](handleError(_0x4b1597,null));};exports[_0x71fa('0x4f')]=function(_0x56f59d,_0x481b0a,_0x3fc57c){if(_0x56f59d['file']&&_0x56f59d[_0x71fa('0x50')][_0x71fa('0x51')]){_0x56f59d[_0x71fa('0x4d')][_0x71fa('0x52')]=_0x56f59d[_0x71fa('0x50')][_0x71fa('0x51')];}return db[_0x71fa('0x33')][_0x71fa('0x4c')]({'where':{'id':_0x56f59d['params']['id']}})[_0x71fa('0x19')](handleEntityNotFound(_0x481b0a,null))['then'](saveUpdates(_0x56f59d['body'],null))[_0x71fa('0x19')](respondWithResult(_0x481b0a,null))[_0x71fa('0x4a')](handleError(_0x481b0a,null));};exports[_0x71fa('0x53')]=function(_0x5db6e2,_0x13ff21,_0x3133e1){if(_0x5db6e2['file']&&_0x5db6e2[_0x71fa('0x50')][_0x71fa('0x51')]){_0x5db6e2['body'][_0x71fa('0x54')]=_0x5db6e2[_0x71fa('0x50')][_0x71fa('0x51')];}return db['Setting']['find']({'where':{'id':_0x5db6e2[_0x71fa('0x4e')]['id']}})['then'](handleEntityNotFound(_0x13ff21,null))['then'](saveUpdates(_0x5db6e2[_0x71fa('0x4d')],null))[_0x71fa('0x19')](respondWithResult(_0x13ff21,null))[_0x71fa('0x4a')](handleError(_0x13ff21,null));};var utilLicense=require(_0x71fa('0x14'));exports[_0x71fa('0x55')]=function(_0x419806,_0x14804b,_0x499108){var _0xa81497='server/files/images/logos';var _0x5b4388={'custom':![]};return utilLicense[_0x71fa('0x56')]()[_0x71fa('0x19')](function(_0x57ac9d){if(_0x57ac9d){_0x5b4388=_0x57ac9d;}return db[_0x71fa('0x33')][_0x71fa('0x4c')]({'where':{'id':_0x419806[_0x71fa('0x4e')]['id']},'attributes':[_0x71fa('0x52'),_0x71fa('0x54'),_0x71fa('0x57'),_0x71fa('0x58'),_0x71fa('0x59'),_0x71fa('0x5a'),_0x71fa('0x5b'),_0x71fa('0x5c')],'raw':!![]});})[_0x71fa('0x19')](handleEntityNotFound(_0x14804b,null))['then'](function(_0x7ddd06){if(_0x7ddd06){var _0x3c5592=_0x7ddd06[_0x71fa('0x52')]&&fs[_0x71fa('0x5d')](path[_0x71fa('0x5e')](config['root'],_0xa81497,_[_0x71fa('0x5f')](_0x7ddd06[_0x71fa('0x52')])))?path[_0x71fa('0x5e')](config[_0x71fa('0x60')],_0xa81497,_[_0x71fa('0x5f')](_0x7ddd06['logo'])):path[_0x71fa('0x5e')](config[_0x71fa('0x60')],_0xa81497,_[_0x71fa('0x5f')](_0x71fa('0x61')));var _0x43eec8=_0x71fa('0x62')+_[_0x71fa('0x63')](_0x71fa('0x52'));if(_0x7ddd06[_0x43eec8]||!_0x5b4388[_0x71fa('0x64')]){_0x3c5592=path[_0x71fa('0x5e')](config['root'],_0xa81497,_[_0x71fa('0x5f')](_0x71fa('0x61')));}if(!fs[_0x71fa('0x5d')](_0x3c5592)){throw new db[(_0x71fa('0x65'))][(_0x71fa('0x66'))](_[_0x71fa('0x63')]('logo')+_0x71fa('0x67'));}return _0x14804b[_0x71fa('0x68')](_0x3c5592);}})['catch'](handleError(_0x14804b,null));};var utilLicense=require(_0x71fa('0x14'));exports[_0x71fa('0x69')]=function(_0x47a74b,_0x4a4c58,_0x2abee8){var _0x1d99c5='server/files/images/logos';var _0x1114c4={'custom':![]};return utilLicense['getLicense']()[_0x71fa('0x19')](function(_0x337fc7){if(_0x337fc7){_0x1114c4=_0x337fc7;}return db[_0x71fa('0x33')][_0x71fa('0x4c')]({'where':{'id':_0x47a74b['params']['id']},'attributes':['logo',_0x71fa('0x54'),_0x71fa('0x57'),_0x71fa('0x58'),'defaultLogo',_0x71fa('0x5a'),'defaultPreferred',_0x71fa('0x5c')],'raw':!![]});})[_0x71fa('0x19')](handleEntityNotFound(_0x4a4c58,null))[_0x71fa('0x19')](function(_0xe8976b){if(_0xe8976b){var _0x12cff0=_0xe8976b['loginLogo']&&fs[_0x71fa('0x5d')](path[_0x71fa('0x5e')](config[_0x71fa('0x60')],_0x1d99c5,_[_0x71fa('0x5f')](_0xe8976b[_0x71fa('0x54')])))?path[_0x71fa('0x5e')](config[_0x71fa('0x60')],_0x1d99c5,_[_0x71fa('0x5f')](_0xe8976b[_0x71fa('0x54')])):path[_0x71fa('0x5e')](config['root'],_0x1d99c5,_[_0x71fa('0x5f')](_0x71fa('0x6a')));var _0x4f14f3='default'+_[_0x71fa('0x63')](_0x71fa('0x54'));if(_0xe8976b[_0x4f14f3]||!_0x1114c4[_0x71fa('0x64')]){_0x12cff0=path['join'](config[_0x71fa('0x60')],_0x1d99c5,_[_0x71fa('0x5f')](_0x71fa('0x6a')));}if(!fs[_0x71fa('0x5d')](_0x12cff0)){throw new db[(_0x71fa('0x65'))][(_0x71fa('0x66'))](_['upperFirst']('loginLogo')+_0x71fa('0x67'));}return _0x4a4c58[_0x71fa('0x68')](_0x12cff0);}})[_0x71fa('0x4a')](handleError(_0x4a4c58,null));};exports[_0x71fa('0x6b')]=function(_0x52bc57,_0xed0af0){return db[_0x71fa('0x33')]['find']({'where':{'id':_0x52bc57[_0x71fa('0x4e')]['id']},'attributes':[_0x71fa('0x6c')]})[_0x71fa('0x19')](respondWithResult(_0xed0af0,null))[_0x71fa('0x4a')](handleError(_0xed0af0,null));};exports[_0x71fa('0x6d')]=function(_0x282152,_0x1896bf,_0x257946){if(_0x282152[_0x71fa('0x50')]&&_0x282152[_0x71fa('0x50')][_0x71fa('0x51')]){_0x282152[_0x71fa('0x4d')][_0x71fa('0x57')]=_0x282152[_0x71fa('0x50')][_0x71fa('0x51')];}return db[_0x71fa('0x33')][_0x71fa('0x4c')]({'where':{'id':_0x282152[_0x71fa('0x4e')]['id']}})['then'](handleEntityNotFound(_0x1896bf,null))[_0x71fa('0x19')](saveUpdates(_0x282152[_0x71fa('0x4d')],null))[_0x71fa('0x19')](respondWithResult(_0x1896bf,null))[_0x71fa('0x4a')](handleError(_0x1896bf,null));};var utilLicense=require(_0x71fa('0x14'));exports[_0x71fa('0x6e')]=function(_0x1e3484,_0x24ed79,_0x3e6116){var _0x1d4128=_0x71fa('0x6f');var _0x8123d={'custom':![]};return utilLicense[_0x71fa('0x56')]()[_0x71fa('0x19')](function(_0x49d2ce){if(_0x49d2ce){_0x8123d=_0x49d2ce;}return db[_0x71fa('0x33')]['find']({'where':{'id':_0x1e3484[_0x71fa('0x4e')]['id']},'attributes':[_0x71fa('0x52'),'loginLogo',_0x71fa('0x57'),_0x71fa('0x58'),_0x71fa('0x59'),_0x71fa('0x5a'),'defaultPreferred',_0x71fa('0x5c')],'raw':!![]});})[_0x71fa('0x19')](handleEntityNotFound(_0x24ed79,null))[_0x71fa('0x19')](function(_0x446236){if(_0x446236){var _0x13d644=_0x446236[_0x71fa('0x57')]&&fs[_0x71fa('0x5d')](path[_0x71fa('0x5e')](config['root'],_0x1d4128,_[_0x71fa('0x5f')](_0x446236[_0x71fa('0x57')])))?path[_0x71fa('0x5e')](config[_0x71fa('0x60')],_0x1d4128,_[_0x71fa('0x5f')](_0x446236[_0x71fa('0x57')])):path[_0x71fa('0x5e')](config[_0x71fa('0x60')],_0x1d4128,_[_0x71fa('0x5f')](_0x71fa('0x70')));var _0x38b5c3=_0x71fa('0x62')+_[_0x71fa('0x63')](_0x71fa('0x57'));if(_0x446236[_0x38b5c3]||!_0x8123d[_0x71fa('0x64')]||!_0x8123d[_0x71fa('0x57')]){_0x13d644=path[_0x71fa('0x5e')](config[_0x71fa('0x60')],_0x1d4128,_['toLower'](_0x71fa('0x70')));}if(!fs[_0x71fa('0x5d')](_0x13d644)){throw new db[(_0x71fa('0x65'))]['ValidationError'](_[_0x71fa('0x63')](_0x71fa('0x57'))+_0x71fa('0x67'));}return _0x24ed79[_0x71fa('0x68')](_0x13d644);}})['catch'](handleError(_0x24ed79,null));};exports[_0x71fa('0x71')]=function(_0x2c87c6,_0x2fd2d8,_0x5fa680){if(_0x2c87c6[_0x71fa('0x50')]&&_0x2c87c6[_0x71fa('0x50')][_0x71fa('0x51')]){_0x2c87c6['body']['favicon']=_0x2c87c6[_0x71fa('0x50')]['filename'];}return db[_0x71fa('0x33')][_0x71fa('0x4c')]({'where':{'id':_0x2c87c6['params']['id']}})['then'](handleEntityNotFound(_0x2fd2d8,null))[_0x71fa('0x19')](saveUpdates(_0x2c87c6['body'],null))[_0x71fa('0x19')](respondWithResult(_0x2fd2d8,null))[_0x71fa('0x4a')](handleError(_0x2fd2d8,null));};var utilLicense=require(_0x71fa('0x14'));exports[_0x71fa('0x72')]=function(_0x32d348,_0x28c383,_0x2fdea7){var _0x12f797=_0x71fa('0x6f');var _0x1d9810={'custom':![]};return utilLicense[_0x71fa('0x56')]()['then'](function(_0x572421){if(_0x572421){_0x1d9810=_0x572421;}return db[_0x71fa('0x33')][_0x71fa('0x4c')]({'where':{'id':_0x32d348['params']['id']},'attributes':[_0x71fa('0x52'),_0x71fa('0x54'),_0x71fa('0x57'),_0x71fa('0x58'),_0x71fa('0x59'),_0x71fa('0x5a'),_0x71fa('0x5b'),_0x71fa('0x5c')],'raw':!![]});})[_0x71fa('0x19')](handleEntityNotFound(_0x28c383,null))[_0x71fa('0x19')](function(_0x285b4e){if(_0x285b4e){var _0x2400b3=_0x285b4e['favicon']&&fs[_0x71fa('0x5d')](path[_0x71fa('0x5e')](config[_0x71fa('0x60')],_0x12f797,_['toLower'](_0x285b4e[_0x71fa('0x58')])))?path['join'](config['root'],_0x12f797,_[_0x71fa('0x5f')](_0x285b4e[_0x71fa('0x58')])):path[_0x71fa('0x5e')](config[_0x71fa('0x60')],_0x12f797,_[_0x71fa('0x5f')](_0x71fa('0x73')));var _0x36b663=_0x71fa('0x62')+_[_0x71fa('0x63')]('favicon');if(_0x285b4e[_0x36b663]||!_0x1d9810[_0x71fa('0x64')]){_0x2400b3=path[_0x71fa('0x5e')](config[_0x71fa('0x60')],_0x12f797,_[_0x71fa('0x5f')](_0x71fa('0x73')));}if(!fs[_0x71fa('0x5d')](_0x2400b3)){throw new db[(_0x71fa('0x65'))][(_0x71fa('0x66'))](_[_0x71fa('0x63')](_0x71fa('0x58'))+_0x71fa('0x67'));}return _0x28c383['download'](_0x2400b3);}})['catch'](handleError(_0x28c383,null));};exports['getDate']=function(_0x32886e,_0x1409f7){var _0x4a0e72={'offset':moment()[_0x71fa('0x74')]()};_0x4a0e72[_0x71fa('0x75')]=moment()[_0x71fa('0x74')](_0x4a0e72['offset'])['format'](_0x71fa('0x76'));return _0x1409f7[_0x71fa('0x23')](0xc8)['send'](_0x4a0e72);};
\ No newline at end of file
index 14f2799..8398679 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['define','settings','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports'];(function(_0x4b418f,_0x3b6a96){var _0x2ed208=function(_0x5bb29b){while(--_0x5bb29b){_0x4b418f['push'](_0x4b418f['shift']());}};_0x2ed208(++_0x3b6a96);}(_0x008c,0x188));var _0xc008=function(_0x5499d9,_0x1abd4f){_0x5499d9=_0x5499d9-0x0;var _0x52054c=_0x008c[_0x5499d9];return _0x52054c;};'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
+var _0x7217=['../../config/environment','./setting.attributes','exports','define','Setting','settings','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x18abd2,_0x22d4b3){var _0x1dcad6=function(_0xcc08c4){while(--_0xcc08c4){_0x18abd2['push'](_0x18abd2['shift']());}};_0x1dcad6(++_0x22d4b3);}(_0x7217,0x19e));var _0x7721=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0x7217[_0x43d11d];return _0x38cd08;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var logger=require(_0x7721('0x1'))(_0x7721('0x2'));var moment=require(_0x7721('0x3'));var BPromise=require(_0x7721('0x4'));var rp=require(_0x7721('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7721('0x6'));var attributes=require(_0x7721('0x7'));module[_0x7721('0x8')]=function(_0x3fe47c,_0xb239e0){return _0x3fe47c[_0x7721('0x9')](_0x7721('0xa'),attributes,{'tableName':_0x7721('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ca1c083..a1af1a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48e2=['debug','stringify','error','code','message','result','catch','ShowSetting','Setting','options','raw','where','attributes','include','map','model','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','client','http','then','info','Setting,\x20%s,\x20%s','request\x20sent'];(function(_0xd41406,_0x559f14){var _0x219015=function(_0x706570){while(--_0x706570){_0xd41406['push'](_0xd41406['shift']());}};_0x219015(++_0x559f14);}(_0x48e2,0x15a));var _0x248e=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0x48e2[_0x484e36];return _0xafc85d;};'use strict';var _=require(_0x248e('0x0'));var util=require(_0x248e('0x1'));var moment=require(_0x248e('0x2'));var BPromise=require(_0x248e('0x3'));var rs=require(_0x248e('0x4'));var fs=require('fs');var Redis=require(_0x248e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x248e('0x6'));var logger=require(_0x248e('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x248e('0x8')][_0x248e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1d449,_0x44a610,_0x4c516e){return new BPromise(function(_0x1ad587,_0x1aa085){return client['request'](_0x1d449,_0x4c516e)[_0x248e('0xa')](function(_0x5382bc){logger[_0x248e('0xb')](_0x248e('0xc'),_0x44a610,_0x248e('0xd'));logger[_0x248e('0xe')]('Setting,\x20%s,\x20%s,\x20%s',_0x44a610,_0x248e('0xd'),JSON[_0x248e('0xf')](_0x5382bc));if(_0x5382bc[_0x248e('0x10')]){if(_0x5382bc[_0x248e('0x10')][_0x248e('0x11')]===0x1f4){logger['error'](_0x248e('0xc'),_0x44a610,_0x5382bc[_0x248e('0x10')][_0x248e('0x12')]);return _0x1aa085(_0x5382bc[_0x248e('0x10')][_0x248e('0x12')]);}logger['error'](_0x248e('0xc'),_0x44a610,_0x5382bc['error'][_0x248e('0x12')]);return _0x1ad587(_0x5382bc[_0x248e('0x10')]['message']);}else{logger[_0x248e('0xb')](_0x248e('0xc'),_0x44a610,_0x248e('0xd'));_0x1ad587(_0x5382bc[_0x248e('0x13')][_0x248e('0x12')]);}})[_0x248e('0x14')](function(_0x280c30){logger[_0x248e('0x10')](_0x248e('0xc'),_0x44a610,_0x280c30);_0x1aa085(_0x280c30);});});}exports[_0x248e('0x15')]=function(_0x72845c){var _0x1fd62c=this;return new Promise(function(_0x40afef,_0x4c82cd){return db[_0x248e('0x16')]['find']({'raw':_0x72845c[_0x248e('0x17')]?_0x72845c[_0x248e('0x17')][_0x248e('0x18')]===undefined?!![]:![]:!![],'where':_0x72845c['options']?_0x72845c['options'][_0x248e('0x19')]||null:null,'attributes':_0x72845c['options']?_0x72845c[_0x248e('0x17')][_0x248e('0x1a')]||null:null,'include':_0x72845c['options']?_0x72845c[_0x248e('0x17')][_0x248e('0x1b')]?_[_0x248e('0x1c')](_0x72845c[_0x248e('0x17')][_0x248e('0x1b')],function(_0x41b66f){return{'model':db[_0x41b66f[_0x248e('0x1d')]],'as':_0x41b66f['as'],'attributes':_0x41b66f[_0x248e('0x1a')],'include':_0x41b66f['include']?_[_0x248e('0x1c')](_0x41b66f[_0x248e('0x1b')],function(_0x18193d){return{'model':db[_0x18193d['model']],'as':_0x18193d['as'],'attributes':_0x18193d[_0x248e('0x1a')],'include':_0x18193d['include']?_[_0x248e('0x1c')](_0x18193d[_0x248e('0x1b')],function(_0x5d5e8d){return{'model':db[_0x5d5e8d[_0x248e('0x1d')]],'as':_0x5d5e8d['as'],'attributes':_0x5d5e8d[_0x248e('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5db514){logger['info'](_0x248e('0x15'),_0x72845c);logger['debug']('ShowSetting',_0x72845c,JSON[_0x248e('0xf')](_0x5db514));_0x40afef(_0x5db514);})[_0x248e('0x14')](function(_0x2319d8){logger[_0x248e('0x10')]('ShowSetting',_0x2319d8[_0x248e('0x12')],_0x72845c);_0x4c82cd(_0x1fd62c[_0x248e('0x10')](0x1f4,_0x2319d8[_0x248e('0x12')]));});});};
\ No newline at end of file
+var _0xf448=['moment','bluebird','randomstring','ioredis','../../config/environment','jayson/promise','client','http','request','then','info','Setting,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','find','options','raw','where','map','model','attributes','include','ShowSetting','lodash','util'];(function(_0x246f92,_0xcf7bd4){var _0x2b8e7d=function(_0x9e8650){while(--_0x9e8650){_0x246f92['push'](_0x246f92['shift']());}};_0x2b8e7d(++_0xcf7bd4);}(_0xf448,0x1b0));var _0x8f44=function(_0xb66df,_0x4fb5ce){_0xb66df=_0xb66df-0x0;var _0x42a702=_0xf448[_0xb66df];return _0x42a702;};'use strict';var _=require(_0x8f44('0x0'));var util=require(_0x8f44('0x1'));var moment=require(_0x8f44('0x2'));var BPromise=require(_0x8f44('0x3'));var rs=require(_0x8f44('0x4'));var fs=require('fs');var Redis=require(_0x8f44('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x8f44('0x6'));var jayson=require(_0x8f44('0x7'));var client=jayson[_0x8f44('0x8')][_0x8f44('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x386b9f,_0x4f4e0d,_0x43ff2a){return new BPromise(function(_0x1ac776,_0x7df9c9){return client[_0x8f44('0xa')](_0x386b9f,_0x43ff2a)[_0x8f44('0xb')](function(_0xd5e98){logger[_0x8f44('0xc')](_0x8f44('0xd'),_0x4f4e0d,'request\x20sent');logger[_0x8f44('0xe')]('Setting,\x20%s,\x20%s,\x20%s',_0x4f4e0d,_0x8f44('0xf'),JSON[_0x8f44('0x10')](_0xd5e98));if(_0xd5e98['error']){if(_0xd5e98[_0x8f44('0x11')][_0x8f44('0x12')]===0x1f4){logger[_0x8f44('0x11')]('Setting,\x20%s,\x20%s',_0x4f4e0d,_0xd5e98['error'][_0x8f44('0x13')]);return _0x7df9c9(_0xd5e98[_0x8f44('0x11')][_0x8f44('0x13')]);}logger[_0x8f44('0x11')](_0x8f44('0xd'),_0x4f4e0d,_0xd5e98[_0x8f44('0x11')][_0x8f44('0x13')]);return _0x1ac776(_0xd5e98[_0x8f44('0x11')]['message']);}else{logger[_0x8f44('0xc')]('Setting,\x20%s,\x20%s',_0x4f4e0d,_0x8f44('0xf'));_0x1ac776(_0xd5e98[_0x8f44('0x14')][_0x8f44('0x13')]);}})[_0x8f44('0x15')](function(_0x316a8f){logger[_0x8f44('0x11')](_0x8f44('0xd'),_0x4f4e0d,_0x316a8f);_0x7df9c9(_0x316a8f);});});}exports['ShowSetting']=function(_0xa4619c){var _0x423475=this;return new Promise(function(_0xe15c48,_0x5cc4b8){return db['Setting'][_0x8f44('0x16')]({'raw':_0xa4619c[_0x8f44('0x17')]?_0xa4619c[_0x8f44('0x17')][_0x8f44('0x18')]===undefined?!![]:![]:!![],'where':_0xa4619c['options']?_0xa4619c[_0x8f44('0x17')][_0x8f44('0x19')]||null:null,'attributes':_0xa4619c['options']?_0xa4619c[_0x8f44('0x17')]['attributes']||null:null,'include':_0xa4619c[_0x8f44('0x17')]?_0xa4619c['options']['include']?_[_0x8f44('0x1a')](_0xa4619c[_0x8f44('0x17')]['include'],function(_0x460203){return{'model':db[_0x460203[_0x8f44('0x1b')]],'as':_0x460203['as'],'attributes':_0x460203[_0x8f44('0x1c')],'include':_0x460203[_0x8f44('0x1d')]?_[_0x8f44('0x1a')](_0x460203['include'],function(_0x2e2d83){return{'model':db[_0x2e2d83[_0x8f44('0x1b')]],'as':_0x2e2d83['as'],'attributes':_0x2e2d83[_0x8f44('0x1c')],'include':_0x2e2d83[_0x8f44('0x1d')]?_[_0x8f44('0x1a')](_0x2e2d83[_0x8f44('0x1d')],function(_0x39f469){return{'model':db[_0x39f469[_0x8f44('0x1b')]],'as':_0x39f469['as'],'attributes':_0x39f469[_0x8f44('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x8f44('0xb')](function(_0x2f5f26){logger[_0x8f44('0xc')](_0x8f44('0x1e'),_0xa4619c);logger['debug'](_0x8f44('0x1e'),_0xa4619c,JSON[_0x8f44('0x10')](_0x2f5f26));_0xe15c48(_0x2f5f26);})['catch'](function(_0x57aa80){logger[_0x8f44('0x11')]('ShowSetting',_0x57aa80[_0x8f44('0x13')],_0xa4619c);_0x5cc4b8(_0x423475['error'](0x1f4,_0x57aa80['message']));});});};
\ No newline at end of file
index e58abdd..786b6c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','statusGet','/:id/users','getAgents','post','create','addDisposition','addAnswer','/:id/send','status','addAgents','put','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','isAuthenticated'];(function(_0x235d85,_0x2db080){var _0x559ead=function(_0x3bde13){while(--_0x3bde13){_0x235d85['push'](_0x235d85['shift']());}};_0x559ead(++_0x2db080);}(_0x814b,0x1a2));var _0xb814=function(_0x4503df,_0xfec122){_0x4503df=_0x4503df-0x0;var _0x3f1b2b=_0x814b[_0x4503df];return _0x3f1b2b;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')]('/',auth[_0xb814('0xb')](),controller['index']);router[_0xb814('0xa')](_0xb814('0xc'),auth['isAuthenticated'](),controller[_0xb814('0xd')]);router[_0xb814('0xa')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0xf')]);router[_0xb814('0xa')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0xa')](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x13')]);router['get'](_0xb814('0x14'),auth[_0xb814('0xb')](),controller[_0xb814('0x15')]);router[_0xb814('0xa')](_0xb814('0x16'),auth[_0xb814('0xb')](),controller[_0xb814('0x17')]);router[_0xb814('0xa')](_0xb814('0x18'),controller[_0xb814('0x19')]);router[_0xb814('0xa')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x1b')]);router[_0xb814('0x1c')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x1d')]);router[_0xb814('0x1c')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x1e')]);router['post'](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x1f')]);router[_0xb814('0x1c')]('/:id/notify',controller['notify']);router['post'](_0xb814('0x14'),auth['isAuthenticated'](),controller['addApplications']);router[_0xb814('0x1c')](_0xb814('0x20'),auth[_0xb814('0xb')](),controller['send']);router[_0xb814('0x1c')]('/:id/status',controller[_0xb814('0x21')]);router[_0xb814('0x1c')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x22')]);router[_0xb814('0x23')](_0xb814('0xe'),auth['isAuthenticated'](),controller[_0xb814('0x24')]);router['delete'](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0x25')]);router[_0xb814('0x26')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x27')]);router['delete'](_0xb814('0x12'),auth[_0xb814('0xb')](),controller[_0xb814('0x28')]);router[_0xb814('0x26')](_0xb814('0x1a'),auth[_0xb814('0xb')](),controller[_0xb814('0x29')]);module[_0xb814('0x2a')]=router;
\ No newline at end of file
+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(_0x2ea8fe,_0x13a71f){var _0x138e9f=function(_0x518090){while(--_0x518090){_0x2ea8fe['push'](_0x2ea8fe['shift']());}};_0x138e9f(++_0x13a71f);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id',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
index 85df198..fafda92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x592a=['setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','name','ENUM','skebby','clicksend','clickatell','bandwidth','csc','infobip','BOOLEAN','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'];(function(_0x1cab4b,_0x16ed6b){var _0x1be836=function(_0x5c21c6){while(--_0x5c21c6){_0x1cab4b['push'](_0x1cab4b['shift']());}};_0x1be836(++_0x16ed6b);}(_0x592a,0x159));var _0xa592=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x592a[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0xa592('0x0'));var rs=require('randomstring');module[_0xa592('0x1')]={'name':{'type':Sequelize[_0xa592('0x2')],'unique':_0xa592('0x3'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0xa592('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0xa592('0x2')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0xa592('0x2')]},'type':{'type':Sequelize[_0xa592('0x4')]('twilio',_0xa592('0x5'),'connectel',_0xa592('0x6'),'plivo',_0xa592('0x7'),_0xa592('0x8'),_0xa592('0x9'),_0xa592('0xa'),'intelepeer')},'accountSid':{'type':Sequelize[_0xa592('0x2')]},'authId':{'type':Sequelize[_0xa592('0x2')]},'authToken':{'type':Sequelize[_0xa592('0x2')]},'smsMethod':{'type':Sequelize[_0xa592('0x4')]('SI','TI','GP')},'username':{'type':Sequelize[_0xa592('0x2')]},'password':{'type':Sequelize[_0xa592('0x2')]},'apiKey':{'type':Sequelize[_0xa592('0x2')]},'applicationId':{'type':Sequelize[_0xa592('0x2')]},'accountId':{'type':Sequelize['STRING']},'senderString':{'type':Sequelize[_0xa592('0x2')]},'deliveryReport':{'type':Sequelize[_0xa592('0xb')],'defaultValue':![]},'description':{'type':Sequelize[_0xa592('0x2')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xa592('0xc');}},'notificationSound':{'type':Sequelize[_0xa592('0xb')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xa592('0xb')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xa592('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xa592('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xa592('0xb')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xa592('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xa592('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xa592('0xd')],'comment':_0xa592('0xe')},'mandatoryDisposition':{'type':Sequelize[_0xa592('0xb')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x4d86ee){if(!_0x4d86ee)this[_0xa592('0xf')](_0xa592('0x10'),null);this[_0xa592('0xf')](_0xa592('0x11'),_0x4d86ee);}}};
\ No newline at end of file
+var _0x8cfc=['generate','ENUM','twilio','skebby','connectel','plivo','bandwidth','intelepeer','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','mandatoryDisposition','sequelize','randomstring','exports','STRING','name'];(function(_0x26f702,_0x3919bf){var _0x11417d=function(_0x1aa3e8){while(--_0x1aa3e8){_0x26f702['push'](_0x26f702['shift']());}};_0x11417d(++_0x3919bf);}(_0x8cfc,0x10c));var _0xc8cf=function(_0x1f00e2,_0x59e3b9){_0x1f00e2=_0x1f00e2-0x0;var _0xf53ef3=_0x8cfc[_0x1f00e2];return _0xf53ef3;};'use strict';var Sequelize=require(_0xc8cf('0x0'));var rs=require(_0xc8cf('0x1'));module[_0xc8cf('0x2')]={'name':{'type':Sequelize[_0xc8cf('0x3')],'unique':_0xc8cf('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0xc8cf('0x3')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0xc8cf('0x3')],'defaultValue':function(){return rs[_0xc8cf('0x5')]();}},'phone':{'type':Sequelize[_0xc8cf('0x3')]},'type':{'type':Sequelize[_0xc8cf('0x6')](_0xc8cf('0x7'),_0xc8cf('0x8'),_0xc8cf('0x9'),'clicksend',_0xc8cf('0xa'),'clickatell',_0xc8cf('0xb'),'csc','infobip',_0xc8cf('0xc'))},'accountSid':{'type':Sequelize['STRING']},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0xc8cf('0x3')]},'smsMethod':{'type':Sequelize['ENUM']('SI','TI','GP')},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xc8cf('0x3')]},'apiKey':{'type':Sequelize[_0xc8cf('0x3')]},'applicationId':{'type':Sequelize[_0xc8cf('0x3')]},'accountId':{'type':Sequelize[_0xc8cf('0x3')]},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0xc8cf('0x3')]},'notificationTemplate':{'type':Sequelize[_0xc8cf('0xd')],'defaultValue':function(){return _0xc8cf('0xe');}},'notificationSound':{'type':Sequelize[_0xc8cf('0xf')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xc8cf('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xc8cf('0xf')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xc8cf('0x10')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xc8cf('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc8cf('0x10')],'comment':_0xc8cf('0x11')},'mandatoryDisposition':{'type':Sequelize[_0xc8cf('0xf')],'defaultValue':![],'comment':_0xc8cf('0x12'),'set':function(_0xb66fa3){if(!_0xb66fa3)this[_0xc8cf('0x13')]('mandatoryDispositionPauseId',null);this[_0xc8cf('0x13')](_0xc8cf('0x14'),_0xb66fa3);}}};
\ No newline at end of file
index cd45a37..0f36dfd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8ca=['addDisposition','SmsAccountId','Disposition','getDispositions','findOne','map','rows','removeDispositions','addAnswer','CannedAnswer','hasOwnProperty','removeAnswers','ids','notify','sms','SmsApplication','account','applications','orderBy','Applications','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','twilio','from','From','messageId','skebby','sender','text','connectel','clicksend','Text','MessageUUID','results','csc','originatingAddress','fromNumber','replyMessageId','bandwidth','intelepeer','refid','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','omit','contact','SmsInteraction','spread','interaction','created','push','close','*,*,*,*','SmsMessage','AttachmentId','UserId','User','unshift','Start','startRouting','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s','entity\x20found','Content-Type','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findAndCountAll','priority','stack','finally','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','color','tag','to\x20is\x20mandatory','List','DESC','out','dataValues','Messages','inspect','skebby_dispatch_id','requestid','statusInt','status_code','message_id','groupName','DELIVERED','clickatell','redif','error_code','infobip','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','DELIVRD','ACCEPTD','received\x20delivery\x20report\x20from','message-id','state','addAgents','userSmsAccount:save','removeAgents','isArray','emit','userSmsAccount:remove','getAgents','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','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','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','http','request','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','destroy','SmsAccounts','UserProfileResource','name','send','index','Pause','mandatoryDispositionPause','SmsAccount','rawAttributes','type','model','query','keys','intersection','attributes','fields','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','includeAll','findAll','params','length','include','options','find','create','body','user','role','get','userProfileId','autoAssociation'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xd8ca,0x81));var _0xad8c=function(_0x4bc4c8,_0x3139d3){_0x4bc4c8=_0x4bc4c8-0x0;var _0x3bb121=_0xd8ca[_0x4bc4c8];return _0x3bb121;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xad8c('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xad8c('0x1'));var rp=require(_0xad8c('0x2'));var moment=require(_0xad8c('0x3'));var BPromise=require(_0xad8c('0x4'));var Mustache=require('mustache');var util=require(_0xad8c('0x5'));var path=require(_0xad8c('0x6'));var sox=require(_0xad8c('0x7'));var csv=require('to-csv');var ejs=require(_0xad8c('0x8'));var fs=require('fs');var fs_extra=require(_0xad8c('0x9'));var _=require(_0xad8c('0xa'));var squel=require(_0xad8c('0xb'));var crypto=require('crypto');var jsforce=require(_0xad8c('0xc'));var deskjs=require(_0xad8c('0xd'));var toCsv=require('to-csv');var querystring=require(_0xad8c('0xe'));var Papa=require(_0xad8c('0xf'));var Redis=require(_0xad8c('0x10'));var authService=require(_0xad8c('0x11'));var qs=require(_0xad8c('0x12'));var as=require(_0xad8c('0x13'));var hardwareService=require(_0xad8c('0x14'));var logger=require(_0xad8c('0x15'))('api');var utils=require(_0xad8c('0x16'));var config=require(_0xad8c('0x17'));var licenseUtil=require(_0xad8c('0x18'));var db=require(_0xad8c('0x19'))['db'];config['redis']=_[_0xad8c('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xad8c('0x1b'))(new Redis(config['redis']));require(_0xad8c('0x1c'))[_0xad8c('0x1d')](socket);var jayson=require(_0xad8c('0x1e'));var client=jayson[_0xad8c('0x1f')][_0xad8c('0x20')]({'port':0x232c});function respondWithRpcPromise(_0x3f5a6f,_0x15feb4,_0x1c8327,_0x47eb4e){return new BPromise(function(_0xbc064f,_0xf9fffe){var _0x40ac21=_0x47eb4e||client;return _0x40ac21[_0xad8c('0x21')](_0x3f5a6f,_0x1c8327)['then'](function(_0x2aad66){logger['info'](_0xad8c('0x22'),_0x15feb4,_0xad8c('0x23'));logger[_0xad8c('0x24')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x15feb4,_0xad8c('0x23'),JSON[_0xad8c('0x25')](_0x2aad66));if(_0x2aad66['error']){if(_0x2aad66[_0xad8c('0x26')]['code']===0x1f4){logger[_0xad8c('0x26')](_0xad8c('0x22'),_0x15feb4,_0x2aad66['error']['message']);return _0xf9fffe(_0x2aad66[_0xad8c('0x26')]['message']);}logger['error'](_0xad8c('0x22'),_0x15feb4,_0x2aad66[_0xad8c('0x26')][_0xad8c('0x27')]);return _0xbc064f(_0x2aad66['error']['message']);}else{logger[_0xad8c('0x28')]('SmsAccount,\x20%s,\x20%s',_0x15feb4,'request\x20sent');_0xbc064f(_0x2aad66[_0xad8c('0x29')][_0xad8c('0x27')]);}})[_0xad8c('0x2a')](function(_0x9d12f7){logger[_0xad8c('0x26')](_0xad8c('0x22'),_0x15feb4,_0x9d12f7);_0xf9fffe(_0x9d12f7);});});}function respondWithStatusCode(_0x5547fb,_0x3973bb){_0x3973bb=_0x3973bb||0xcc;return function(_0x586e07){if(_0x586e07){return _0x5547fb['sendStatus'](_0x3973bb);}return _0x5547fb[_0xad8c('0x2b')](_0x3973bb)[_0xad8c('0x2c')]();};}function respondWithResult(_0x4ab2d4,_0x1db67d){_0x1db67d=_0x1db67d||0xc8;return function(_0xc62fbc){if(_0xc62fbc){return _0x4ab2d4[_0xad8c('0x2b')](_0x1db67d)[_0xad8c('0x2d')](_0xc62fbc);}};}function respondWithFilteredResult(_0x42ae93,_0x2650e8){return function(_0x536f49){if(_0x536f49){var _0x4ab556=typeof _0x2650e8[_0xad8c('0x2e')]===_0xad8c('0x2f')&&typeof _0x2650e8[_0xad8c('0x30')]===_0xad8c('0x2f');var _0x1e2066=_0x536f49['count'];var _0xf9d6c2=_0x4ab556?0x0:_0x2650e8[_0xad8c('0x2e')];var _0x4be34f=_0x4ab556?_0x536f49[_0xad8c('0x31')]:_0x2650e8[_0xad8c('0x2e')]+_0x2650e8[_0xad8c('0x30')];var _0x2d1728;if(_0x4be34f>=_0x1e2066){_0x4be34f=_0x1e2066;_0x2d1728=0xc8;}else{_0x2d1728=0xce;}_0x42ae93['status'](_0x2d1728);return _0x42ae93[_0xad8c('0x32')](_0xad8c('0x33'),_0xf9d6c2+'-'+_0x4be34f+'/'+_0x1e2066)['json'](_0x536f49);}return null;};}function patchUpdates(_0x5bb78c){return function(_0x4e6a9d){try{jsonpatch['apply'](_0x4e6a9d,_0x5bb78c,!![]);}catch(_0x2a70f9){return BPromise[_0xad8c('0x34')](_0x2a70f9);}return _0x4e6a9d['save']();};}function saveUpdates(_0x1abecf,_0x2fc163){return function(_0xf09ae0){if(_0xf09ae0){return _0xf09ae0[_0xad8c('0x35')](_0x1abecf)[_0xad8c('0x36')](function(_0x126d07){return _0x126d07;});}return null;};}function removeEntity(_0x4b8657,_0x56fba8){return function(_0x5e4ed4){if(_0x5e4ed4){return _0x5e4ed4[_0xad8c('0x37')]()[_0xad8c('0x36')](function(){var _0x47ff7c=_0x5e4ed4['get']({'plain':!![]});var _0x5ceef9=_0xad8c('0x38');return db[_0xad8c('0x39')][_0xad8c('0x37')]({'where':{'type':_0x5ceef9,'resourceId':_0x47ff7c['id']}})[_0xad8c('0x36')](function(){return _0x5e4ed4;});})[_0xad8c('0x36')](function(){_0x4b8657['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e793e,_0x263076){return function(_0x546314){if(!_0x546314){_0x5e793e['sendStatus'](0x194);}return _0x546314;};}function handleError(_0x4b66c2,_0x56f959){_0x56f959=_0x56f959||0x1f4;return function(_0x3502c4){logger[_0xad8c('0x26')](_0x3502c4['stack']);if(_0x3502c4[_0xad8c('0x3a')]){delete _0x3502c4[_0xad8c('0x3a')];}_0x4b66c2[_0xad8c('0x2b')](_0x56f959)[_0xad8c('0x3b')](_0x3502c4);};}exports[_0xad8c('0x3c')]=function(_0x1e81c8,_0x274c71){var _0x5e0c88={'include':[{'model':db[_0xad8c('0x3d')],'as':_0xad8c('0x3e')}]},_0x3838c4={},_0x2e0979={'count':0x0,'rows':[]};var _0x434c3d=_['map'](db[_0xad8c('0x3f')][_0xad8c('0x40')],function(_0x4e7ef9){return{'name':_0x4e7ef9['fieldName'],'type':_0x4e7ef9[_0xad8c('0x41')]['key']};});_0x3838c4[_0xad8c('0x42')]=_['map'](_0x434c3d,_0xad8c('0x3a'));_0x3838c4[_0xad8c('0x43')]=_[_0xad8c('0x44')](_0x1e81c8['query']);_0x3838c4['filters']=_[_0xad8c('0x45')](_0x3838c4[_0xad8c('0x42')],_0x3838c4[_0xad8c('0x43')]);_0x5e0c88[_0xad8c('0x46')]=_[_0xad8c('0x45')](_0x3838c4[_0xad8c('0x42')],qs['fields'](_0x1e81c8[_0xad8c('0x43')][_0xad8c('0x47')]));_0x5e0c88['attributes']=_0x5e0c88['attributes']['length']?_0x5e0c88['attributes']:_0x3838c4[_0xad8c('0x42')];if(!_0x1e81c8[_0xad8c('0x43')]['hasOwnProperty'](_0xad8c('0x48'))){_0x5e0c88['limit']=qs[_0xad8c('0x30')](_0x1e81c8[_0xad8c('0x43')][_0xad8c('0x30')]);_0x5e0c88[_0xad8c('0x2e')]=qs[_0xad8c('0x2e')](_0x1e81c8[_0xad8c('0x43')][_0xad8c('0x2e')]);}_0x5e0c88[_0xad8c('0x49')]=qs[_0xad8c('0x4a')](_0x1e81c8['query'][_0xad8c('0x4a')]);_0x5e0c88[_0xad8c('0x4b')]=qs[_0xad8c('0x4c')](_[_0xad8c('0x4d')](_0x1e81c8[_0xad8c('0x43')],_0x3838c4[_0xad8c('0x4c')]),_0x434c3d);if(_0x1e81c8[_0xad8c('0x43')][_0xad8c('0x4e')]){_0x5e0c88['where']=_['merge'](_0x5e0c88[_0xad8c('0x4b')],{'$or':_['map'](_0x434c3d,function(_0x6deb16){if(_0x6deb16[_0xad8c('0x41')]!==_0xad8c('0x4f')){var _0x4e66c4={};_0x4e66c4[_0x6deb16[_0xad8c('0x3a')]]={'$like':'%'+_0x1e81c8[_0xad8c('0x43')][_0xad8c('0x4e')]+'%'};return _0x4e66c4;}})});}_0x5e0c88=_[_0xad8c('0x50')]({},_0x5e0c88,_0x1e81c8['options']);var _0x2307d7={'where':_0x5e0c88[_0xad8c('0x4b')]};return db[_0xad8c('0x3f')][_0xad8c('0x31')](_0x2307d7)['then'](function(_0x120e0e){_0x2e0979[_0xad8c('0x31')]=_0x120e0e;if(_0x1e81c8[_0xad8c('0x43')][_0xad8c('0x51')]){_0x5e0c88['include']=[{'all':!![]}];}return db['SmsAccount'][_0xad8c('0x52')](_0x5e0c88);})[_0xad8c('0x36')](function(_0x3bcc9a){_0x2e0979['rows']=_0x3bcc9a;return _0x2e0979;})[_0xad8c('0x36')](respondWithFilteredResult(_0x274c71,_0x5e0c88))['catch'](handleError(_0x274c71,null));};exports['show']=function(_0x49430e,_0x3eeb4b){var _0x359407={'raw':![],'where':{'id':_0x49430e[_0xad8c('0x53')]['id']},'include':[{'model':db[_0xad8c('0x3d')],'as':_0xad8c('0x3e')}]},_0x44c45d={};_0x44c45d[_0xad8c('0x42')]=_[_0xad8c('0x44')](db[_0xad8c('0x3f')][_0xad8c('0x40')]);_0x44c45d[_0xad8c('0x43')]=_[_0xad8c('0x44')](_0x49430e[_0xad8c('0x43')]);_0x44c45d['filters']=_[_0xad8c('0x45')](_0x44c45d['model'],_0x44c45d['query']);_0x359407[_0xad8c('0x46')]=_[_0xad8c('0x45')](_0x44c45d[_0xad8c('0x42')],qs[_0xad8c('0x47')](_0x49430e[_0xad8c('0x43')][_0xad8c('0x47')]));_0x359407['attributes']=_0x359407['attributes'][_0xad8c('0x54')]?_0x359407[_0xad8c('0x46')]:_0x44c45d[_0xad8c('0x42')];if(_0x49430e[_0xad8c('0x43')][_0xad8c('0x51')]){_0x359407[_0xad8c('0x55')]=[{'all':!![]}];}_0x359407=_['merge']({},_0x359407,_0x49430e[_0xad8c('0x56')]);return db[_0xad8c('0x3f')][_0xad8c('0x57')](_0x359407)['then'](handleEntityNotFound(_0x3eeb4b,null))[_0xad8c('0x36')](respondWithResult(_0x3eeb4b,null))[_0xad8c('0x2a')](handleError(_0x3eeb4b,null));};exports['create']=function(_0x3eeb13,_0x52016d){return db[_0xad8c('0x3f')][_0xad8c('0x58')](_0x3eeb13[_0xad8c('0x59')],{})['then'](function(_0x1888bb){var _0x2af2e7=_0x3eeb13[_0xad8c('0x5a')]['get']({'plain':!![]});if(!_0x2af2e7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2af2e7[_0xad8c('0x5b')]===_0xad8c('0x5a')){var _0x7e971e=_0x1888bb[_0xad8c('0x5c')]({'plain':!![]});var _0x5809db=_0xad8c('0x38');return db['UserProfileSection'][_0xad8c('0x57')]({'where':{'name':_0x5809db,'userProfileId':_0x2af2e7[_0xad8c('0x5d')]},'raw':!![]})[_0xad8c('0x36')](function(_0x58f033){if(_0x58f033&&_0x58f033[_0xad8c('0x5e')]===0x0){return db[_0xad8c('0x39')]['create']({'name':_0x7e971e[_0xad8c('0x3a')],'resourceId':_0x7e971e['id'],'type':_0x58f033[_0xad8c('0x3a')],'sectionId':_0x58f033['id']},{})[_0xad8c('0x36')](function(){return _0x1888bb;});}else{return _0x1888bb;}})[_0xad8c('0x2a')](function(_0x295c4b){logger[_0xad8c('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x295c4b);throw _0x295c4b;});}return _0x1888bb;})[_0xad8c('0x36')](respondWithResult(_0x52016d,0xc9))[_0xad8c('0x2a')](handleError(_0x52016d,null));};exports[_0xad8c('0x35')]=function(_0x5eea6c,_0x168585){if(_0x5eea6c['body']['id']){delete _0x5eea6c['body']['id'];}return db[_0xad8c('0x3f')]['find']({'where':{'id':_0x5eea6c[_0xad8c('0x53')]['id']},'include':[{'model':db[_0xad8c('0x3d')],'as':'mandatoryDispositionPause'}]})[_0xad8c('0x36')](handleEntityNotFound(_0x168585,null))[_0xad8c('0x36')](saveUpdates(_0x5eea6c[_0xad8c('0x59')],null))[_0xad8c('0x36')](respondWithResult(_0x168585,null))[_0xad8c('0x2a')](handleError(_0x168585,null));};exports[_0xad8c('0x37')]=function(_0x1cbc51,_0x2be710){return db['SmsAccount'][_0xad8c('0x57')]({'where':{'id':_0x1cbc51['params']['id']}})['then'](handleEntityNotFound(_0x2be710,null))['then'](removeEntity(_0x2be710,null))[_0xad8c('0x2a')](handleError(_0x2be710,null));};exports['describe']=function(_0x5546ed,_0x2cf7b0){return db['SmsAccount']['describe']()['then'](respondWithResult(_0x2cf7b0,null))[_0xad8c('0x2a')](handleError(_0x2cf7b0,null));};exports[_0xad8c('0x5f')]=function(_0x2c849c,_0x150267,_0x28176a){if(_0x2c849c[_0xad8c('0x59')]['id']){delete _0x2c849c['body']['id'];}return db[_0xad8c('0x3f')][_0xad8c('0x57')]({'where':{'id':_0x2c849c[_0xad8c('0x53')]['id']}})[_0xad8c('0x36')](handleEntityNotFound(_0x150267,null))[_0xad8c('0x36')](function(_0x3baa6a){if(_0x3baa6a){_0x2c849c['body'][_0xad8c('0x60')]=_0x3baa6a['id'];return db[_0xad8c('0x61')][_0xad8c('0x58')](_0x2c849c[_0xad8c('0x59')]);}})[_0xad8c('0x36')](respondWithResult(_0x150267,null))[_0xad8c('0x2a')](handleError(_0x150267,null));};exports[_0xad8c('0x62')]=function(_0x162d99,_0x4d471c,_0x65922d){var _0x5612f6={'raw':![],'where':{}};var _0x46609b={};var _0x5bf4a8={'count':0x0,'rows':[]};return db[_0xad8c('0x3f')][_0xad8c('0x63')]({'where':{'id':_0x162d99[_0xad8c('0x53')]['id']}})[_0xad8c('0x36')](handleEntityNotFound(_0x4d471c,null))[_0xad8c('0x36')](function(_0x30eee6){if(_0x30eee6){_0x46609b['model']=_[_0xad8c('0x44')](db[_0xad8c('0x61')]['rawAttributes']);_0x46609b[_0xad8c('0x43')]=_[_0xad8c('0x44')](_0x162d99[_0xad8c('0x43')]);_0x46609b[_0xad8c('0x4c')]=_[_0xad8c('0x45')](_0x46609b[_0xad8c('0x42')],_0x46609b['query']);_0x5612f6[_0xad8c('0x46')]=_[_0xad8c('0x45')](_0x46609b[_0xad8c('0x42')],qs[_0xad8c('0x47')](_0x162d99[_0xad8c('0x43')][_0xad8c('0x47')]));_0x5612f6['attributes']=_0x5612f6[_0xad8c('0x46')][_0xad8c('0x54')]?_0x5612f6['attributes']:_0x46609b['model'];if(!_0x162d99[_0xad8c('0x43')]['hasOwnProperty'](_0xad8c('0x48'))){_0x5612f6[_0xad8c('0x30')]=qs[_0xad8c('0x30')](_0x162d99[_0xad8c('0x43')][_0xad8c('0x30')]);_0x5612f6[_0xad8c('0x2e')]=qs['offset'](_0x162d99[_0xad8c('0x43')][_0xad8c('0x2e')]);}_0x5612f6[_0xad8c('0x49')]=qs[_0xad8c('0x4a')](_0x162d99[_0xad8c('0x43')][_0xad8c('0x4a')]);_0x5612f6[_0xad8c('0x4b')]=qs[_0xad8c('0x4c')](_[_0xad8c('0x4d')](_0x162d99[_0xad8c('0x43')],_0x46609b[_0xad8c('0x4c')]));_0x5612f6[_0xad8c('0x4b')][_0xad8c('0x60')]=_0x30eee6['id'];if(_0x162d99[_0xad8c('0x43')]['filter']){_0x5612f6['where']=_[_0xad8c('0x50')](_0x5612f6['where'],{'$or':_[_0xad8c('0x64')](_0x5612f6[_0xad8c('0x46')],function(_0x2488a7){var _0x1d386f={};_0x1d386f[_0x2488a7]={'$like':'%'+_0x162d99[_0xad8c('0x43')][_0xad8c('0x4e')]+'%'};return _0x1d386f;})});}_0x5612f6=_[_0xad8c('0x50')]({},_0x5612f6,_0x162d99[_0xad8c('0x56')]);return db[_0xad8c('0x61')][_0xad8c('0x31')]({'where':_0x5612f6[_0xad8c('0x4b')]})[_0xad8c('0x36')](function(_0x543572){_0x5bf4a8['count']=_0x543572;if(_0x162d99[_0xad8c('0x43')][_0xad8c('0x51')]){_0x5612f6[_0xad8c('0x55')]=[{'all':!![]}];}return db[_0xad8c('0x61')][_0xad8c('0x52')](_0x5612f6);})[_0xad8c('0x36')](function(_0x58140a){_0x5bf4a8[_0xad8c('0x65')]=_0x58140a;return _0x5bf4a8;});}})['then'](respondWithFilteredResult(_0x4d471c,_0x5612f6))[_0xad8c('0x2a')](handleError(_0x4d471c,null));};exports['removeDispositions']=function(_0x4ec0cb,_0x535a87,_0x47da03){return db[_0xad8c('0x3f')][_0xad8c('0x57')]({'where':{'id':_0x4ec0cb[_0xad8c('0x53')]['id']}})['then'](handleEntityNotFound(_0x535a87,null))['then'](function(_0x82f03d){if(_0x82f03d){return _0x82f03d[_0xad8c('0x66')](_0x4ec0cb[_0xad8c('0x43')]['ids']);}})[_0xad8c('0x36')](respondWithStatusCode(_0x535a87,null))[_0xad8c('0x2a')](handleError(_0x535a87,null));};exports[_0xad8c('0x67')]=function(_0x5a185e,_0x47fb0c,_0x24008a){if(_0x5a185e[_0xad8c('0x59')]['id']){delete _0x5a185e['body']['id'];}return db[_0xad8c('0x3f')][_0xad8c('0x57')]({'where':{'id':_0x5a185e[_0xad8c('0x53')]['id']}})[_0xad8c('0x36')](handleEntityNotFound(_0x47fb0c,null))[_0xad8c('0x36')](function(_0x3130bc){if(_0x3130bc){_0x5a185e[_0xad8c('0x59')][_0xad8c('0x60')]=_0x3130bc['id'];return db[_0xad8c('0x68')][_0xad8c('0x58')](_0x5a185e[_0xad8c('0x59')]);}})[_0xad8c('0x36')](respondWithResult(_0x47fb0c,null))['catch'](handleError(_0x47fb0c,null));};exports['getAnswers']=function(_0xf00677,_0x197f01,_0x4af868){var _0xbf9e1d={'raw':![],'where':{}};var _0x418a77={};var _0x414ce3={'count':0x0,'rows':[]};return db[_0xad8c('0x3f')][_0xad8c('0x63')]({'where':{'id':_0xf00677[_0xad8c('0x53')]['id']}})[_0xad8c('0x36')](handleEntityNotFound(_0x197f01,null))[_0xad8c('0x36')](function(_0x34ff76){if(_0x34ff76){_0x418a77[_0xad8c('0x42')]=_[_0xad8c('0x44')](db[_0xad8c('0x68')][_0xad8c('0x40')]);_0x418a77['query']=_[_0xad8c('0x44')](_0xf00677['query']);_0x418a77['filters']=_[_0xad8c('0x45')](_0x418a77[_0xad8c('0x42')],_0x418a77[_0xad8c('0x43')]);_0xbf9e1d['attributes']=_['intersection'](_0x418a77[_0xad8c('0x42')],qs[_0xad8c('0x47')](_0xf00677[_0xad8c('0x43')][_0xad8c('0x47')]));_0xbf9e1d[_0xad8c('0x46')]=_0xbf9e1d[_0xad8c('0x46')][_0xad8c('0x54')]?_0xbf9e1d['attributes']:_0x418a77['model'];if(!_0xf00677[_0xad8c('0x43')][_0xad8c('0x69')]('nolimit')){_0xbf9e1d[_0xad8c('0x30')]=qs[_0xad8c('0x30')](_0xf00677[_0xad8c('0x43')][_0xad8c('0x30')]);_0xbf9e1d[_0xad8c('0x2e')]=qs[_0xad8c('0x2e')](_0xf00677[_0xad8c('0x43')][_0xad8c('0x2e')]);}_0xbf9e1d[_0xad8c('0x49')]=qs['sort'](_0xf00677['query'][_0xad8c('0x4a')]);_0xbf9e1d[_0xad8c('0x4b')]=qs['filters'](_[_0xad8c('0x4d')](_0xf00677['query'],_0x418a77[_0xad8c('0x4c')]));_0xbf9e1d[_0xad8c('0x4b')]['SmsAccountId']=_0x34ff76['id'];if(_0xf00677[_0xad8c('0x43')][_0xad8c('0x4e')]){_0xbf9e1d['where']=_[_0xad8c('0x50')](_0xbf9e1d[_0xad8c('0x4b')],{'$or':_[_0xad8c('0x64')](_0xbf9e1d[_0xad8c('0x46')],function(_0x41bbd0){var _0x5da75c={};_0x5da75c[_0x41bbd0]={'$like':'%'+_0xf00677[_0xad8c('0x43')][_0xad8c('0x4e')]+'%'};return _0x5da75c;})});}_0xbf9e1d=_[_0xad8c('0x50')]({},_0xbf9e1d,_0xf00677[_0xad8c('0x56')]);return db['CannedAnswer'][_0xad8c('0x31')]({'where':_0xbf9e1d[_0xad8c('0x4b')]})[_0xad8c('0x36')](function(_0x44ff15){_0x414ce3[_0xad8c('0x31')]=_0x44ff15;if(_0xf00677['query'][_0xad8c('0x51')]){_0xbf9e1d['include']=[{'all':!![]}];}return db[_0xad8c('0x68')]['findAll'](_0xbf9e1d);})[_0xad8c('0x36')](function(_0x4f202b){_0x414ce3[_0xad8c('0x65')]=_0x4f202b;return _0x414ce3;});}})[_0xad8c('0x36')](respondWithFilteredResult(_0x197f01,_0xbf9e1d))[_0xad8c('0x2a')](handleError(_0x197f01,null));};exports['removeAnswers']=function(_0x41c794,_0x268a1e,_0x1ad461){return db['SmsAccount']['find']({'where':{'id':_0x41c794[_0xad8c('0x53')]['id']}})[_0xad8c('0x36')](handleEntityNotFound(_0x268a1e,null))['then'](function(_0x565056){if(_0x565056){return _0x565056[_0xad8c('0x6a')](_0x41c794[_0xad8c('0x43')][_0xad8c('0x6b')]);}})[_0xad8c('0x36')](respondWithStatusCode(_0x268a1e,null))[_0xad8c('0x2a')](handleError(_0x268a1e,null));};exports[_0xad8c('0x6c')]=function(_0x1926f1,_0x427bb7,_0x530251){var _0x3546db={'channel':_0xad8c('0x6d')};var _0x53fba3=[];var _0x104370=[];var _0x17ea4d={};return db['SmsAccount'][_0xad8c('0x57')]({'where':{'id':_0x1926f1[_0xad8c('0x53')]['id']},'include':[{'model':db[_0xad8c('0x6e')],'as':'Applications'}]})[_0xad8c('0x36')](handleEntityNotFound(_0x427bb7,null))[_0xad8c('0x36')](function(_0xac1a4b){_0x3546db[_0xad8c('0x6f')]=_0xac1a4b;_0x3546db[_0xad8c('0x70')]=_[_0xad8c('0x71')](_0xac1a4b['Applications'],['priority'],['asc']);if(_0x3546db[_0xad8c('0x6f')][_0xad8c('0x72')]){delete _0x3546db[_0xad8c('0x6f')]['Applications'];}return db[_0xad8c('0x73')][_0xad8c('0x74')]();})['then'](function(_0x4f7df7){if(!_0x4f7df7){throw new db[(_0xad8c('0x75'))][(_0xad8c('0x76'))](_0xad8c('0x77'));}_0x53fba3=_[_0xad8c('0x78')](_['keys'](_0x4f7df7),[_0xad8c('0x79'),_0xad8c('0x7a')]);_0x104370=_[_0xad8c('0x78')](_[_0xad8c('0x44')](_0x4f7df7),[_0xad8c('0x79'),_0xad8c('0x7a'),_0xad8c('0x7b'),_0xad8c('0x7c')]);_0x3546db[_0xad8c('0x59')]={'mapKey':'mobile'};if(_0x3546db[_0xad8c('0x6f')][_0xad8c('0x41')]){switch(_0x3546db[_0xad8c('0x6f')][_0xad8c('0x41')]){case _0xad8c('0x7d'):_0x3546db[_0xad8c('0x59')][_0xad8c('0x7e')]=_0x1926f1['body'][_0xad8c('0x7f')];_0x3546db[_0xad8c('0x59')][_0xad8c('0x59')]=_0x1926f1[_0xad8c('0x59')]['Body'];_0x3546db[_0xad8c('0x59')][_0xad8c('0x80')]=_0x1926f1[_0xad8c('0x59')]['MessageSid'];break;case _0xad8c('0x81'):_0x3546db[_0xad8c('0x59')][_0xad8c('0x7e')]='+'+_0x1926f1[_0xad8c('0x59')][_0xad8c('0x82')];_0x3546db[_0xad8c('0x59')]['body']=_0x1926f1[_0xad8c('0x59')][_0xad8c('0x83')];break;case _0xad8c('0x84'):_0x3546db[_0xad8c('0x59')][_0xad8c('0x7e')]=_0x1926f1['body'][_0xad8c('0x7e')];_0x3546db[_0xad8c('0x59')]['body']=_0x1926f1[_0xad8c('0x59')][_0xad8c('0x27')];break;case _0xad8c('0x85'):_0x3546db[_0xad8c('0x59')][_0xad8c('0x7e')]=_0x1926f1[_0xad8c('0x59')]['from'];_0x3546db[_0xad8c('0x59')]['body']=_0x1926f1[_0xad8c('0x59')][_0xad8c('0x59')];_0x3546db[_0xad8c('0x59')][_0xad8c('0x80')]=_0x1926f1[_0xad8c('0x59')]['message_id'];break;case'plivo':_0x3546db['body']['from']=_0x1926f1[_0xad8c('0x59')][_0xad8c('0x7f')];_0x3546db[_0xad8c('0x59')][_0xad8c('0x59')]=_0x1926f1[_0xad8c('0x59')][_0xad8c('0x86')];_0x3546db[_0xad8c('0x59')]['messageId']=_0x1926f1['body'][_0xad8c('0x87')];break;case'infobip':_0x3546db[_0xad8c('0x59')]['from']='+'+_0x1926f1[_0xad8c('0x59')][_0xad8c('0x88')][0x0]['from'];_0x3546db[_0xad8c('0x59')]['body']=_0x1926f1[_0xad8c('0x59')][_0xad8c('0x88')][0x0][_0xad8c('0x83')];_0x3546db['body'][_0xad8c('0x80')]=_0x1926f1[_0xad8c('0x59')][_0xad8c('0x88')][0x0][_0xad8c('0x80')];break;case _0xad8c('0x89'):_0x3546db['body'][_0xad8c('0x7e')]=_0x1926f1[_0xad8c('0x59')][_0xad8c('0x8a')];_0x3546db[_0xad8c('0x59')][_0xad8c('0x59')]=_0x1926f1[_0xad8c('0x59')]['segmentedMessage'][_0xad8c('0x27')];break;case'clickatell':_0x3546db[_0xad8c('0x59')][_0xad8c('0x7e')]=_0x1926f1[_0xad8c('0x59')][_0xad8c('0x8b')];_0x3546db[_0xad8c('0x59')]['body']=_0x1926f1[_0xad8c('0x59')][_0xad8c('0x83')];_0x3546db['body']['messageId']=_0x1926f1[_0xad8c('0x59')][_0xad8c('0x8c')];break;case _0xad8c('0x8d'):_0x3546db[_0xad8c('0x59')][_0xad8c('0x80')]=_0x1926f1['body'][0x0][_0xad8c('0x27')]['id'];_0x3546db[_0xad8c('0x59')][_0xad8c('0x7e')]=_0x1926f1[_0xad8c('0x59')][0x0]['message']['from'];_0x3546db[_0xad8c('0x59')][_0xad8c('0x59')]=_0x1926f1[_0xad8c('0x59')][0x0][_0xad8c('0x27')]['text'];break;case _0xad8c('0x8e'):_0x3546db[_0xad8c('0x59')][_0xad8c('0x7e')]=_0x1926f1['body'][_0xad8c('0x7e')];_0x3546db[_0xad8c('0x59')][_0xad8c('0x59')]=_0x1926f1[_0xad8c('0x59')][_0xad8c('0x27')];_0x3546db[_0xad8c('0x59')][_0xad8c('0x80')]=_0x1926f1['body'][_0xad8c('0x8f')];break;}}if(_0x3546db[_0xad8c('0x59')]['id']){delete _0x3546db[_0xad8c('0x59')]['id'];}if(_[_0xad8c('0x90')](_0x3546db[_0xad8c('0x59')][_0xad8c('0x7e')])){throw new db['Sequelize'][(_0xad8c('0x76'))](_0xad8c('0x91'));}if(_[_0xad8c('0x90')](_0x3546db[_0xad8c('0x59')][_0xad8c('0x59')])||_0x3546db[_0xad8c('0x59')]['body']===''){throw new db[(_0xad8c('0x75'))][(_0xad8c('0x76'))](_0xad8c('0x92'));}if(_['isNil'](_0x3546db[_0xad8c('0x59')]['mapKey'])){throw new db['Sequelize'][(_0xad8c('0x76'))](_0xad8c('0x93')+_0x104370);}if(!_['includes'](_0x104370,_0x3546db['body'][_0xad8c('0x94')])){throw new db[(_0xad8c('0x75'))][(_0xad8c('0x76'))](_0xad8c('0x95')+_0x104370);}_0x17ea4d[_0x3546db[_0xad8c('0x59')][_0xad8c('0x94')]]=_0x3546db[_0xad8c('0x59')][_0xad8c('0x7e')];return db[_0xad8c('0x96')]['find']({'where':{'id':_0x3546db[_0xad8c('0x6f')][_0xad8c('0x7c')]},'include':[{'model':db['CmContact'],'as':_0xad8c('0x97'),'where':_0x17ea4d,'limit':0x1,'order':[['updatedAt','DESC']]}]});})[_0xad8c('0x36')](handleEntityNotFound(_0x427bb7,null))[_0xad8c('0x36')](function(_0x1ef745){if(_0x1ef745){_0x3546db['list']=_[_0xad8c('0x98')](_0x1ef745,['Contacts']);if(_0x1ef745[_0xad8c('0x97')]['length']){return _0x1ef745[_0xad8c('0x97')][0x0];}var _0x107364=_['defaults'](_0x3546db[_0xad8c('0x59')],{'firstName':_0x3546db['body'][_0xad8c('0x7e')],'ListId':_0x1ef745['id']});_0x107364[_0x3546db[_0xad8c('0x59')][_0xad8c('0x94')]]=_0x3546db[_0xad8c('0x59')]['from'];return db[_0xad8c('0x73')]['create'](_0x107364,{'fields':_0x53fba3,'raw':!![]});}})[_0xad8c('0x36')](handleEntityNotFound(_0x427bb7,null))[_0xad8c('0x36')](function(_0x201ac1){if(_0x201ac1){_0x3546db[_0xad8c('0x99')]=_0x201ac1;var _0x4229b9={'ContactId':_0x201ac1['id'],'phone':_0x3546db[_0xad8c('0x59')][_0xad8c('0x7e')],'SmsAccountId':_0x1926f1[_0xad8c('0x53')]['id']};var _0x35e63a={'ContactId':_0x201ac1['id'],'SmsAccountId':_0x1926f1[_0xad8c('0x53')]['id'],'closed':![]};return db[_0xad8c('0x9a')][_0xad8c('0x57')]({'where':_0x35e63a})['then'](function(_0x551631){if(_0x551631){return[_0x551631,![]];}return db['SmsInteraction'][_0xad8c('0x58')](_0x4229b9)[_0xad8c('0x36')](function(_0x13756b){return[_0x13756b,!![]];});});}})[_0xad8c('0x9b')](function(_0x408cfb,_0x16ecb6){_0x3546db[_0xad8c('0x9c')]=_0x408cfb['get']({'plain':!![]});_0x3546db[_0xad8c('0x9c')][_0xad8c('0x9d')]=![];if(_0x16ecb6){if(_0x3546db[_0xad8c('0x6f')]['autoclose']){_0x3546db['applications'][_0xad8c('0x9e')]({'id':0x0,'priority':_0x3546db[_0xad8c('0x70')][_0xad8c('0x54')]+0x1,'app':_0xad8c('0x9f'),'appdata':'unmanaged','interval':_0xad8c('0xa0')});}_0x3546db[_0xad8c('0x9c')][_0xad8c('0x9d')]=!![];}return db[_0xad8c('0xa1')]['create']({'phone':_0x3546db[_0xad8c('0x59')][_0xad8c('0x7e')],'messageId':_0x3546db[_0xad8c('0x59')][_0xad8c('0x80')],'body':_0x3546db[_0xad8c('0x59')][_0xad8c('0x59')],'SmsAccountId':_0x1926f1[_0xad8c('0x53')]['id'],'SmsInteractionId':_0x408cfb['id'],'direction':'in','ContactId':_0x408cfb['ContactId'],'AttachmentId':_0x3546db[_0xad8c('0x59')][_0xad8c('0xa2')]});})['then'](function(_0xd5e771){_0x3546db[_0xad8c('0x27')]=_0xd5e771;if(_0x3546db[_0xad8c('0x9c')][_0xad8c('0xa3')]){return db[_0xad8c('0xa4')][_0xad8c('0x57')]({'attributes':['id',_0xad8c('0x3a')],'where':{'id':_0x3546db[_0xad8c('0x9c')][_0xad8c('0xa3')]}})['then'](function(_0x4bae31){if(_0x4bae31){_0x3546db[_0xad8c('0x70')][_0xad8c('0xa5')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4bae31['name']+','+(_0x3546db['account']['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xad8c('0xa6'),_0xad8c('0xa7'),_0x3546db);});}return respondWithRpcPromise('Start',_0xad8c('0xa7'),_0x3546db);})['then'](function(_0x5ab825){if(_0x5ab825){var _0x3e6e05=0xc8;var _0xf0b30a=_0xad8c('0xa8');logger[_0xad8c('0x28')](_0xad8c('0xa9'),_0xf0b30a,_0x3e6e05,'entity\x20found');logger[_0xad8c('0x24')]('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0xf0b30a,_0x3e6e05,_0xad8c('0xaa'),JSON[_0xad8c('0x25')](_0x5ab825));if(_0x3546db['account'][_0xad8c('0x41')]===_0xad8c('0x7d')){return _0x427bb7['status'](_0x3e6e05)[_0xad8c('0x32')](_0xad8c('0xab'),'text/xml')['send'](_0xad8c('0xac'));}else{return _0x427bb7[_0xad8c('0x2b')](_0x3e6e05)[_0xad8c('0x2d')](_0x5ab825);}}})['catch'](handleError(_0x427bb7,null));};exports['addApplications']=function(_0x307db1,_0x201d4f){var _0x33ba0e=_0x307db1['params']['id'];var _0x5ea4fb=_0x307db1[_0xad8c('0x59')];var _0x363d68=0xc8;var _0x454e5d=null;return db['sequelize'][_0xad8c('0xad')]({'isolationLevel':db[_0xad8c('0xae')][_0xad8c('0xaf')][_0xad8c('0xb0')][_0xad8c('0xb1')]},function(_0x60f442){return db[_0xad8c('0x3f')]['findOne']({'where':{'id':_0x33ba0e},'transaction':_0x60f442})['then'](function(_0x2ff104){if(_0x2ff104){return db[_0xad8c('0x6e')]['destroy']({'where':{'SmsAccountId':_0x33ba0e},'transaction':_0x60f442})[_0xad8c('0x36')](function(){var _0xbf8c18=_['map'](_0x5ea4fb,function(_0x352e6f){_0x352e6f['SmsAccountId']=_0x33ba0e;return _0x352e6f;});return db[_0xad8c('0x6e')]['bulkCreate'](_0xbf8c18,{'transaction':_0x60f442});});}else{_0x363d68=0x194;_0x454e5d=[];}});})[_0xad8c('0x36')](function(){if(_0x363d68!==0x194){return db[_0xad8c('0x6e')][_0xad8c('0xb2')]({'where':{'SmsAccountId':_0x33ba0e},'order':_0xad8c('0xb3')})['then'](function(_0x4103fc){_0x454e5d=_0x4103fc;});}})[_0xad8c('0x2a')](function(_0x486cad){_0x363d68=0x1f4;logger[_0xad8c('0x26')](_0x486cad[_0xad8c('0xb4')]);if(_0x486cad[_0xad8c('0x3a')]){delete _0x486cad['name'];}_0x454e5d=_0x486cad;})[_0xad8c('0xb5')](function(){if(_0x454e5d===null){_0x201d4f['sendStatus'](_0x363d68);}else{if(_0x363d68===0x1f4){_0x201d4f[_0xad8c('0x2b')](_0x363d68)[_0xad8c('0x3b')](_0x454e5d);}else{_0x201d4f[_0xad8c('0x2b')](_0x363d68)[_0xad8c('0x2d')](_0x454e5d);}}});};exports[_0xad8c('0xb6')]=function(_0x3ff304,_0x32fbb7,_0x3fde23){var _0x2aeb89={};var _0x56113a={};var _0x406853;var _0x51574f;return db[_0xad8c('0x3f')][_0xad8c('0x63')]({'where':{'id':_0x3ff304['params']['id']}})['then'](handleEntityNotFound(_0x32fbb7,null))['then'](function(_0x5173ac){if(_0x5173ac){_0x406853=_0x5173ac;_0x56113a[_0xad8c('0x42')]=_['keys'](db['SmsApplication'][_0xad8c('0x40')]);_0x56113a[_0xad8c('0x43')]=_[_0xad8c('0x44')](_0x3ff304[_0xad8c('0x43')]);_0x56113a[_0xad8c('0x4c')]=_[_0xad8c('0x45')](_0x56113a[_0xad8c('0x42')],_0x56113a['query']);_0x2aeb89[_0xad8c('0x46')]=_['intersection'](_0x56113a['model'],qs[_0xad8c('0x47')](_0x3ff304[_0xad8c('0x43')][_0xad8c('0x47')]));_0x2aeb89['attributes']=_0x2aeb89[_0xad8c('0x46')][_0xad8c('0x54')]?_0x2aeb89[_0xad8c('0x46')]:_0x56113a[_0xad8c('0x42')];_0x2aeb89[_0xad8c('0x49')]=qs['sort'](_0x3ff304[_0xad8c('0x43')][_0xad8c('0x4a')]);_0x2aeb89[_0xad8c('0x4b')]=qs[_0xad8c('0x4c')](_[_0xad8c('0x4d')](_0x3ff304[_0xad8c('0x43')],_0x56113a[_0xad8c('0x4c')]));if(_0x3ff304[_0xad8c('0x43')][_0xad8c('0x4e')]){_0x2aeb89[_0xad8c('0x4b')]=_[_0xad8c('0x50')](_0x2aeb89['where'],{'$or':_[_0xad8c('0x64')](_0x2aeb89[_0xad8c('0x46')],function(_0x3dd886){var _0x41566d={};_0x41566d[_0x3dd886]={'$like':'%'+_0x3ff304[_0xad8c('0x43')][_0xad8c('0x4e')]+'%'};return _0x41566d;})});}_0x2aeb89=_['merge']({},_0x2aeb89,_0x3ff304['options']);return _0x406853[_0xad8c('0xb6')](_0x2aeb89);}})['then'](function(_0x1f91a1){if(_0x1f91a1){_0x51574f=_0x1f91a1['length'];if(!_0x3ff304['query'][_0xad8c('0x69')](_0xad8c('0x48'))){_0x2aeb89['limit']=qs['limit'](_0x3ff304['query'][_0xad8c('0x30')]);_0x2aeb89[_0xad8c('0x2e')]=qs[_0xad8c('0x2e')](_0x3ff304[_0xad8c('0x43')][_0xad8c('0x2e')]);}return _0x406853['getApplications'](_0x2aeb89);}})[_0xad8c('0x36')](function(_0x5c7106){if(_0x5c7106){return _0x5c7106?{'count':_0x51574f,'rows':_0x5c7106}:null;}})['then'](respondWithResult(_0x32fbb7,null))[_0xad8c('0x2a')](handleError(_0x32fbb7,null));};exports[_0xad8c('0xb7')]=function(_0x464362,_0x556d72,_0x22c1de){var _0x4e66f0={'raw':![],'where':{}};var _0x5a5d77={};var _0x939a8e={'count':0x0,'rows':[]};return db[_0xad8c('0x3f')]['findOne']({'where':{'id':_0x464362['params']['id']}})[_0xad8c('0x36')](handleEntityNotFound(_0x556d72,null))['then'](function(_0x421d63){if(_0x421d63){_0x5a5d77['model']=_[_0xad8c('0x44')](db[_0xad8c('0x9a')][_0xad8c('0x40')]);_0x5a5d77[_0xad8c('0x43')]=_['keys'](_0x464362['query']);_0x5a5d77[_0xad8c('0x4c')]=_[_0xad8c('0x45')](_0x5a5d77[_0xad8c('0x42')],_0x5a5d77[_0xad8c('0x43')]);_0x4e66f0[_0xad8c('0x46')]=_['intersection'](_0x5a5d77['model'],qs[_0xad8c('0x47')](_0x464362['query'][_0xad8c('0x47')]));_0x4e66f0[_0xad8c('0x46')]=_0x4e66f0['attributes'][_0xad8c('0x54')]?_0x4e66f0[_0xad8c('0x46')]:_0x5a5d77['model'];if(!_0x464362[_0xad8c('0x43')]['hasOwnProperty'](_0xad8c('0x48'))){_0x4e66f0[_0xad8c('0x30')]=qs[_0xad8c('0x30')](_0x464362[_0xad8c('0x43')][_0xad8c('0x30')]);_0x4e66f0[_0xad8c('0x2e')]=qs['offset'](_0x464362[_0xad8c('0x43')][_0xad8c('0x2e')]);}_0x4e66f0[_0xad8c('0x49')]=qs[_0xad8c('0x4a')](_0x464362['query']['sort']);_0x4e66f0[_0xad8c('0x4b')]=qs[_0xad8c('0x4c')](_[_0xad8c('0x4d')](_0x464362['query'],_0x5a5d77[_0xad8c('0x4c')]));_0x4e66f0['where'][_0xad8c('0x60')]=_0x421d63['id'];if(_0x464362['query'][_0xad8c('0x4e')]){_0x4e66f0[_0xad8c('0x4b')]=_['merge'](_0x4e66f0['where'],{'$or':_[_0xad8c('0x64')](_0x4e66f0['attributes'],function(_0x3c9bec){var _0x18cc01={};_0x18cc01[_0x3c9bec]={'$like':'%'+_0x464362['query'][_0xad8c('0x4e')]+'%'};return _0x18cc01;})});}_0x4e66f0=_[_0xad8c('0x50')]({},_0x4e66f0,_0x464362['options']);return db[_0xad8c('0x9a')][_0xad8c('0x31')]({'where':_0x4e66f0['where']})[_0xad8c('0x36')](function(_0x44f731){_0x939a8e['count']=_0x44f731;if(_0x464362['query'][_0xad8c('0x51')]){_0x4e66f0['include']=[{'model':db[_0xad8c('0x73')],'as':_0xad8c('0xb8'),'required':![]},{'model':db[_0xad8c('0xa4')],'as':_0xad8c('0xb9'),'attributes':[_0xad8c('0x3a'),_0xad8c('0xba'),_0xad8c('0xbb')],'required':![]},{'model':db[_0xad8c('0xbc')],'as':_0xad8c('0xbd'),'attributes':['id','name',_0xad8c('0xbe')],'where':_0x464362[_0xad8c('0x43')]['tag']?{'id':_0x464362[_0xad8c('0x43')][_0xad8c('0xbf')]}:undefined,'required':_0x464362[_0xad8c('0x43')]['tag']?!![]:![]}];}return db[_0xad8c('0x9a')]['findAll'](_0x4e66f0);})[_0xad8c('0x36')](function(_0xc4fe39){_0x939a8e[_0xad8c('0x65')]=_0xc4fe39;return _0x939a8e;});}})[_0xad8c('0x36')](respondWithFilteredResult(_0x556d72,_0x4e66f0))[_0xad8c('0x2a')](handleError(_0x556d72,null));};exports[_0xad8c('0x3b')]=function(_0x418ab2,_0x83036d,_0x49b82a){var _0x47d338,_0x46a2e9,_0x226d5b;if(_[_0xad8c('0x90')](_0x418ab2['body'][_0xad8c('0x59')])||_0x418ab2[_0xad8c('0x59')][_0xad8c('0x59')]===''){throw new db['Sequelize']['ValidationError'](_0xad8c('0x92'));}if(_[_0xad8c('0x90')](_0x418ab2[_0xad8c('0x59')]['to'])){throw new db[(_0xad8c('0x75'))]['ValidationError'](_0xad8c('0xc0'));}_0x47d338=_0x418ab2[_0xad8c('0x59')]['to'];return db[_0xad8c('0x3f')][_0xad8c('0x57')]({'where':{'id':_0x418ab2[_0xad8c('0x53')]['id']},'include':[{'model':db[_0xad8c('0x96')],'as':_0xad8c('0xc1'),'include':[{'model':db['CmContact'],'as':_0xad8c('0x97'),'where':{'mobile':_0x47d338},'limit':0x1,'order':[[_0xad8c('0x7a'),_0xad8c('0xc2')]]}]}]})[_0xad8c('0x36')](handleEntityNotFound(_0x83036d,null))[_0xad8c('0x36')](function(_0x46412a){if(_0x46412a&&_0x46412a['List']){_0x46a2e9=_0x46412a[_0xad8c('0x5c')]({'plain':!![]});if(_0x46a2e9[_0xad8c('0xc1')]&&_0x46a2e9[_0xad8c('0xc1')][_0xad8c('0x97')][_0xad8c('0x54')]){return _0x46a2e9[_0xad8c('0xc1')][_0xad8c('0x97')][0x0];}return db[_0xad8c('0x73')][_0xad8c('0x58')](_[_0xad8c('0x1a')](_0x418ab2[_0xad8c('0x59')],{'firstName':_0x47d338,'mobile':_0x47d338,'phone':_0x47d338,'ListId':_0x46a2e9[_0xad8c('0x7c')]}));}})[_0xad8c('0x36')](handleEntityNotFound(_0x83036d,null))['then'](function(_0xd868f3){if(_0xd868f3){_0x226d5b=_0xd868f3;return db[_0xad8c('0x9a')]['find']({'where':{'ContactId':_0x226d5b['id'],'closed':![],'SmsAccountId':_0x46a2e9['id']}})[_0xad8c('0x36')](function(_0x170d34){if(_0x170d34){return[_0x170d34,![]];}return db[_0xad8c('0x9a')][_0xad8c('0x58')]({'UserId':_0x418ab2[_0xad8c('0x5a')]['id'],'ContactId':_0x226d5b['id'],'SmsAccountId':_0x46a2e9['id'],'phone':_0x47d338,'firstMsgDirection':_0xad8c('0xc3'),'Messages':[_[_0xad8c('0x50')](_0x418ab2[_0xad8c('0x59')],{'read':![],'body':_0x418ab2[_0xad8c('0x59')][_0xad8c('0x59')],'phone':_0x47d338,'SmsAccountId':_0x46a2e9['id'],'UserId':_0x418ab2['user']['id'],'ContactId':_0x226d5b['id']})]},{'include':[{'model':db[_0xad8c('0xa1')],'as':'Messages'}]})['then'](function(_0x5b143c){return[_0x5b143c,!![]];});});}})[_0xad8c('0x9b')](function(_0x4f9111,_0x253863){if(_0x253863){return _0x4f9111;}return db[_0xad8c('0xa1')]['create'](_[_0xad8c('0x50')](_0x418ab2['body'],{'read':![],'body':_0x418ab2[_0xad8c('0x59')]['body'],'phone':_0x47d338,'SmsAccountId':_0x46a2e9['id'],'SmsInteractionId':_0x4f9111['id'],'UserId':_0x418ab2[_0xad8c('0x5a')]['id'],'ContactId':_0x226d5b['id']}))[_0xad8c('0x36')](function(_0x6a3ff5){_0x4f9111[_0xad8c('0xc4')]['Messages']=[];_0x4f9111['dataValues'][_0xad8c('0xc5')][_0xad8c('0x9e')](_0x6a3ff5['dataValues']);return _0x4f9111;});})[_0xad8c('0x36')](respondWithResult(_0x83036d,null))[_0xad8c('0x2a')](handleError(_0x83036d,null));};exports['status']=function(_0x1d98bb,_0x165ec9,_0x2336df){if(_0x1d98bb[_0xad8c('0x59')]['id']){delete _0x1d98bb[_0xad8c('0x59')]['id'];}var _0x2e903e,_0x5521f9,_0x3afb53;return db['SmsAccount']['find']({'where':{'id':_0x1d98bb[_0xad8c('0x53')]['id']}})['then'](handleEntityNotFound(_0x165ec9,null))[_0xad8c('0x36')](function(_0x362226){if(_0x362226){_0x3afb53=_0x362226;logger[_0xad8c('0x24')]('SmsAccount,\x20%s,\x20%s,\x20%s','status','received\x20delivery\x20report\x20from',_0x362226['type'],util[_0xad8c('0xc6')](_0x1d98bb[_0xad8c('0x59')],{'showHidden':![],'depth':null}));switch(_0x362226[_0xad8c('0x41')]){case _0xad8c('0x81'):if(_0x1d98bb[_0xad8c('0x59')]['skebby_dispatch_id']&&_0x1d98bb[_0xad8c('0x59')]['status']){_0x5521f9=_0x1d98bb[_0xad8c('0x59')][_0xad8c('0x2b')];return db[_0xad8c('0xa1')][_0xad8c('0x57')]({'where':{'messageId':_0x1d98bb[_0xad8c('0x59')][_0xad8c('0xc7')]}});}break;case _0xad8c('0x84'):if(_0x1d98bb[_0xad8c('0x59')][_0xad8c('0xc8')]&&_0x1d98bb[_0xad8c('0x59')][_0xad8c('0xc9')]){_0x5521f9=_0x1d98bb['body'][_0xad8c('0xc9')];return db[_0xad8c('0xa1')][_0xad8c('0x57')]({'where':{'messageId':_0x1d98bb[_0xad8c('0x59')][_0xad8c('0xc8')]}});}break;case'clicksend':if(_0x1d98bb[_0xad8c('0x59')]['message_id']&&_0x1d98bb[_0xad8c('0x59')][_0xad8c('0xca')]){_0x5521f9=_0x1d98bb[_0xad8c('0x59')][_0xad8c('0xca')];return db[_0xad8c('0xa1')]['find']({'where':{'messageId':_0x1d98bb[_0xad8c('0x59')][_0xad8c('0xcb')]}});}break;case'infobip':var _0x51a2ec=_0x1d98bb[_0xad8c('0x59')]['results'][0x0];if(_0x51a2ec[_0xad8c('0x80')]&&_0x51a2ec[_0xad8c('0x2b')][_0xad8c('0xcc')]===_0xad8c('0xcd')){_0x5521f9=_0x51a2ec[_0xad8c('0x2b')][_0xad8c('0xcc')];return db['SmsMessage'][_0xad8c('0x57')]({'where':{'messageId':_0x51a2ec[_0xad8c('0x80')]}});}break;case _0xad8c('0xce'):if(_0x1d98bb[_0xad8c('0x59')][_0xad8c('0x80')]&&_0x1d98bb[_0xad8c('0x59')][_0xad8c('0x2b')]){_0x5521f9=_0x1d98bb['body'][_0xad8c('0x2b')];return db[_0xad8c('0xa1')][_0xad8c('0x57')]({'where':{'messageId':_0x1d98bb['body'][_0xad8c('0x80')]}});}break;case _0xad8c('0x8d'):if(_0x1d98bb['body'][0x0]['message']['id']){_0x5521f9=_0x1d98bb[_0xad8c('0x59')][0x0]['type'];return db[_0xad8c('0xa1')][_0xad8c('0x57')]({'where':{'messageId':_0x1d98bb[_0xad8c('0x59')][0x0][_0xad8c('0x27')]['id']}});}break;case _0xad8c('0x8e'):if(_0x1d98bb[_0xad8c('0x59')]['redif']&&_0x1d98bb[_0xad8c('0x59')][_0xad8c('0x2b')]){_0x5521f9=_0x1d98bb['body'][_0xad8c('0x2b')];return db['SmsMessage'][_0xad8c('0x57')]({'where':{'messageId':_0x1d98bb[_0xad8c('0x59')][_0xad8c('0xcf')]}});}break;}}})['then'](handleEntityNotFound(_0x165ec9,null))['then'](function(_0x4e3413){if(_0x4e3413){_0x2e903e=_0x4e3413;switch(_0x3afb53[_0xad8c('0x41')]){case _0xad8c('0x81'):if(_0x5521f9===_0xad8c('0xcd')){return _0x2e903e['update']({'read':!![]});}else{logger[_0xad8c('0x26')](_0xad8c('0xa9'),_0xad8c('0x2b'),_0xad8c('0x81'),util['inspect'](_0x1d98bb['body'],{'showHidden':![],'depth':null}));}break;case _0xad8c('0x84'):if(_0x5521f9==='1'){return _0x2e903e[_0xad8c('0x35')]({'read':!![]});}else{logger['error'](_0xad8c('0xa9'),_0xad8c('0x2b'),_0xad8c('0x81'),util[_0xad8c('0xc6')](_0x1d98bb[_0xad8c('0x59')],{'showHidden':![],'depth':null}));}break;case _0xad8c('0x85'):if(!_0x1d98bb['body'][_0xad8c('0xd0')]&&_0x5521f9>=0xc8&&_0x5521f9<=0xce){return _0x2e903e[_0xad8c('0x35')]({'read':!![]});}else{logger[_0xad8c('0x26')](_0xad8c('0xa9'),_0xad8c('0x2b'),_0xad8c('0x85'),util[_0xad8c('0xc6')](_0x1d98bb[_0xad8c('0x59')],{'showHidden':![],'depth':null}));}break;case _0xad8c('0xd1'):var _0x2cb63d=_0x1d98bb[_0xad8c('0x59')][_0xad8c('0x88')][0x0];if(_0x2cb63d[_0xad8c('0x2b')][_0xad8c('0xcc')]==='DELIVERED'){return _0x2e903e[_0xad8c('0x35')]({'read':!![]});}else{logger['error'](_0xad8c('0xa9'),_0xad8c('0x2b'),'infobip',util['inspect'](_0x1d98bb['body'],{'showHidden':![],'depth':null}));}break;case _0xad8c('0xce'):if(_0x5521f9==_0xad8c('0xd2')||_0x5521f9==_0xad8c('0xd3')){return _0x2e903e[_0xad8c('0x35')]({'read':!![]});}else{logger[_0xad8c('0x26')](_0xad8c('0xa9'),_0xad8c('0x2b'),_0xad8c('0xce'),util[_0xad8c('0xc6')](_0x1d98bb[_0xad8c('0x59')],{'showHidden':![],'depth':null}));}break;case _0xad8c('0x8d'):if(_0x5521f9=='message-delivered'){return _0x2e903e[_0xad8c('0x35')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xad8c('0x2b'),_0xad8c('0x8d'),util['inspect'](_0x1d98bb[_0xad8c('0x59')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x5521f9===_0xad8c('0xd4')||_0x5521f9===_0xad8c('0xd5')){return _0x2e903e[_0xad8c('0x35')]({'read':!![]});}else{logger[_0xad8c('0x26')](_0xad8c('0xa9'),_0xad8c('0x2b'),_0xad8c('0x8e'),util['inspect'](_0x1d98bb[_0xad8c('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x2e903e;}})['then'](respondWithResult(_0x165ec9,null))[_0xad8c('0x2a')](handleError(_0x165ec9,null));};exports['statusGet']=function(_0x5adb73,_0x3176a8,_0x573017){var _0x314b67,_0x120666,_0x37c1d7;return db[_0xad8c('0x3f')][_0xad8c('0x57')]({'where':{'id':_0x5adb73[_0xad8c('0x53')]['id']}})[_0xad8c('0x36')](handleEntityNotFound(_0x3176a8,null))['then'](function(_0x4bf64a){if(_0x4bf64a){_0x37c1d7=_0x4bf64a;logger[_0xad8c('0x24')](_0xad8c('0xa9'),_0xad8c('0x2b'),_0xad8c('0xd6'),_0x4bf64a[_0xad8c('0x41')],util[_0xad8c('0xc6')](_0x5adb73['query'],{'showHidden':![],'depth':null}));switch(_0x4bf64a['type']){case'csc':if(_0x5adb73[_0xad8c('0x43')][_0xad8c('0xd7')]&&_0x5adb73['query'][_0xad8c('0xd8')]){_0x120666=_0x5adb73[_0xad8c('0x43')]['state'];return db[_0xad8c('0xa1')][_0xad8c('0x57')]({'where':{'messageId':_0x5adb73[_0xad8c('0x43')][_0xad8c('0xd7')]}});}break;}}})['then'](handleEntityNotFound(_0x3176a8,null))['then'](function(_0x29353f){if(_0x29353f){_0x314b67=_0x29353f;switch(_0x37c1d7[_0xad8c('0x41')]){case _0xad8c('0x89'):if(_0x120666==='2'||_0x120666==='6'){return _0x314b67[_0xad8c('0x35')]({'read':!![]});}else{logger[_0xad8c('0x26')](_0xad8c('0xa9'),'status',_0xad8c('0x89'),util[_0xad8c('0xc6')](_0x5adb73['query'],{'showHidden':![],'depth':null}));};break;}return _0x314b67;}})[_0xad8c('0x36')](respondWithResult(_0x3176a8,null))['catch'](handleError(_0x3176a8,null));};exports['addAgents']=function(_0x3342a3,_0x129948,_0x27ddbf){return db['SmsAccount'][_0xad8c('0x57')]({'where':{'id':_0x3342a3['params']['id']}})[_0xad8c('0x36')](handleEntityNotFound(_0x129948,null))[_0xad8c('0x36')](function(_0xb60f1e){if(_0xb60f1e){return _0xb60f1e[_0xad8c('0xd9')](_0x3342a3['body'][_0xad8c('0x6b')],_[_0xad8c('0x98')](_0x3342a3[_0xad8c('0x59')],[_0xad8c('0x6b'),'id'])||{})['spread'](function(_0x4f5299){for(var _0x369b6e=0x0;_0x369b6e<_0x3342a3['body'][_0xad8c('0x6b')]['length'];_0x369b6e+=0x1){socket['emit'](_0xad8c('0xda'),{'UserId':Number(_0x3342a3[_0xad8c('0x59')][_0xad8c('0x6b')][_0x369b6e]),'SmsAccountId':Number(_0x3342a3[_0xad8c('0x53')]['id'])});}return _0x4f5299;});}})[_0xad8c('0x36')](respondWithResult(_0x129948,null))[_0xad8c('0x2a')](handleError(_0x129948,null));};exports[_0xad8c('0xdb')]=function(_0x53e7d7,_0x40a514,_0x357557){return db[_0xad8c('0x3f')][_0xad8c('0x57')]({'where':{'id':_0x53e7d7['params']['id']}})[_0xad8c('0x36')](handleEntityNotFound(_0x40a514,null))[_0xad8c('0x36')](function(_0x22dc01){if(_0x22dc01){return _0x22dc01[_0xad8c('0xdb')](_0x53e7d7[_0xad8c('0x43')]['ids'])[_0xad8c('0x36')](function(){if(_[_0xad8c('0xdc')](_0x53e7d7[_0xad8c('0x43')][_0xad8c('0x6b')])){for(var _0x277d98=0x0;_0x277d98<_0x53e7d7[_0xad8c('0x43')][_0xad8c('0x6b')]['length'];_0x277d98+=0x1){socket[_0xad8c('0xdd')](_0xad8c('0xde'),{'UserId':Number(_0x53e7d7['query'][_0xad8c('0x6b')][_0x277d98]),'SmsAccountId':Number(_0x53e7d7[_0xad8c('0x53')]['id'])});}}else{socket['emit'](_0xad8c('0xde'),{'UserId':Number(_0x53e7d7[_0xad8c('0x43')]['ids']),'SmsAccountId':Number(_0x53e7d7[_0xad8c('0x53')]['id'])});}});}})[_0xad8c('0x36')](respondWithStatusCode(_0x40a514,null))[_0xad8c('0x2a')](handleError(_0x40a514,null));};exports['getAgents']=function(_0xb31b64,_0x320725,_0x272df1){var _0x47a903={};var _0x31e4b9={};var _0x4497d0;var _0x1f10e6;return db[_0xad8c('0x3f')][_0xad8c('0x63')]({'where':{'id':_0xb31b64[_0xad8c('0x53')]['id']}})['then'](handleEntityNotFound(_0x320725,null))[_0xad8c('0x36')](function(_0xa5039d){if(_0xa5039d){_0x4497d0=_0xa5039d;_0x31e4b9[_0xad8c('0x42')]=_[_0xad8c('0x44')](db[_0xad8c('0xa4')][_0xad8c('0x40')]);_0x31e4b9[_0xad8c('0x43')]=_['keys'](_0xb31b64[_0xad8c('0x43')]);_0x31e4b9[_0xad8c('0x4c')]=_['intersection'](_0x31e4b9[_0xad8c('0x42')],_0x31e4b9[_0xad8c('0x43')]);_0x47a903[_0xad8c('0x46')]=_[_0xad8c('0x45')](_0x31e4b9['model'],qs[_0xad8c('0x47')](_0xb31b64[_0xad8c('0x43')][_0xad8c('0x47')]));_0x47a903['attributes']=_0x47a903[_0xad8c('0x46')]['length']?_0x47a903['attributes']:_0x31e4b9[_0xad8c('0x42')];_0x47a903['order']=qs['sort'](_0xb31b64[_0xad8c('0x43')]['sort']);_0x47a903['where']=qs['filters'](_[_0xad8c('0x4d')](_0xb31b64[_0xad8c('0x43')],_0x31e4b9['filters']));if(_0xb31b64[_0xad8c('0x43')]['filter']){_0x47a903[_0xad8c('0x4b')]=_[_0xad8c('0x50')](_0x47a903[_0xad8c('0x4b')],{'$or':_[_0xad8c('0x64')](_0x47a903[_0xad8c('0x46')],function(_0x497315){var _0x47d12c={};_0x47d12c[_0x497315]={'$like':'%'+_0xb31b64[_0xad8c('0x43')][_0xad8c('0x4e')]+'%'};return _0x47d12c;})});}_0x47a903=_[_0xad8c('0x50')]({},_0x47a903,_0xb31b64[_0xad8c('0x56')]);return _0x4497d0[_0xad8c('0xdf')](_0x47a903);}})[_0xad8c('0x36')](function(_0x36ca89){if(_0x36ca89){_0x1f10e6=_0x36ca89['length'];if(!_0xb31b64[_0xad8c('0x43')][_0xad8c('0x69')]('nolimit')){_0x47a903['limit']=qs[_0xad8c('0x30')](_0xb31b64[_0xad8c('0x43')][_0xad8c('0x30')]);_0x47a903[_0xad8c('0x2e')]=qs['offset'](_0xb31b64['query'][_0xad8c('0x2e')]);}return _0x4497d0['getAgents'](_0x47a903);}})[_0xad8c('0x36')](function(_0x1ed207){if(_0x1ed207){return _0x1ed207?{'count':_0x1f10e6,'rows':_0x1ed207}:null;}})['then'](respondWithResult(_0x320725,null))[_0xad8c('0x2a')](handleError(_0x320725,null));};
\ No newline at end of file
+var _0xa9f5=['set','Content-Type','text/xml','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','stack','finally','getApplications','getInteractions','Owner','fullname','Tag','Tags','color','tag','to\x20is\x20mandatory','List','out','Messages','SmsMessage','dataValues','debug','received\x20delivery\x20report\x20from','requestid','statusInt','clicksend','status_code','groupName','DELIVERED','bandwidth','intelepeer','redif','update','SmsAccount,\x20%s,\x20%s,\x20%s','inspect','error_code','DELIVERED_TO_GATEWAY','message-delivered','ACCEPTD','statusGet','csc','message-id','state','addAgents','emit','removeAgents','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','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','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','jayson/promise','http','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','end','status','json','undefined','limit','count','offset','Content-Range','reject','save','destroy','get','UserProfileResource','sendStatus','name','send','Pause','mandatoryDispositionPause','SmsAccount','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','include','rows','params','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','SmsAccounts','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','SmsAccountId','Disposition','findOne','hasOwnProperty','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','sms','SmsApplication','Applications','account','applications','orderBy','priority','asc','CmContact','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','ListId','mobile','twilio','From','messageId','skebby','text','connectel','from','message_id','Text','MessageUUID','infobip','results','originatingAddress','segmentedMessage','clickatell','fromNumber','refid','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','Sequelize','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','DESC','list','omit','Contacts','contact','SmsInteraction','spread','interaction','autoclose','close','unmanaged','created','ContactId','AttachmentId','User','unshift','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s'];(function(_0x2601b4,_0x315e78){var _0x3e3661=function(_0x13b45b){while(--_0x13b45b){_0x2601b4['push'](_0x2601b4['shift']());}};_0x3e3661(++_0x315e78);}(_0xa9f5,0x11d));var _0x5a9f=function(_0x9dc619,_0x1f9954){_0x9dc619=_0x9dc619-0x0;var _0xfcc919=_0xa9f5[_0x9dc619];return _0xfcc919;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5a9f('0x0'));var zipdir=require(_0x5a9f('0x1'));var jsonpatch=require(_0x5a9f('0x2'));var rp=require(_0x5a9f('0x3'));var moment=require(_0x5a9f('0x4'));var BPromise=require(_0x5a9f('0x5'));var Mustache=require(_0x5a9f('0x6'));var util=require(_0x5a9f('0x7'));var path=require(_0x5a9f('0x8'));var sox=require(_0x5a9f('0x9'));var csv=require('to-csv');var ejs=require(_0x5a9f('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5a9f('0xb'));var squel=require(_0x5a9f('0xc'));var crypto=require(_0x5a9f('0xd'));var jsforce=require(_0x5a9f('0xe'));var deskjs=require(_0x5a9f('0xf'));var toCsv=require('to-csv');var querystring=require(_0x5a9f('0x10'));var Papa=require(_0x5a9f('0x11'));var Redis=require(_0x5a9f('0x12'));var authService=require(_0x5a9f('0x13'));var qs=require(_0x5a9f('0x14'));var as=require(_0x5a9f('0x15'));var hardwareService=require(_0x5a9f('0x16'));var logger=require(_0x5a9f('0x17'))('api');var utils=require(_0x5a9f('0x18'));var config=require(_0x5a9f('0x19'));var licenseUtil=require(_0x5a9f('0x1a'));var db=require('../../mysqldb')['db'];config[_0x5a9f('0x1b')]=_[_0x5a9f('0x1c')](config[_0x5a9f('0x1b')],{'host':_0x5a9f('0x1d'),'port':0x18eb});var socket=require(_0x5a9f('0x1e'))(new Redis(config[_0x5a9f('0x1b')]));require(_0x5a9f('0x1f'))['register'](socket);var jayson=require(_0x5a9f('0x20'));var client=jayson['client'][_0x5a9f('0x21')]({'port':0x232c});function respondWithRpcPromise(_0x24a05d,_0xfcaa18,_0x3c99d2,_0x30ec14){return new BPromise(function(_0x186b04,_0x599ce2){var _0x4a103a=_0x30ec14||client;return _0x4a103a['request'](_0x24a05d,_0x3c99d2)[_0x5a9f('0x22')](function(_0x2a9192){logger[_0x5a9f('0x23')](_0x5a9f('0x24'),_0xfcaa18,_0x5a9f('0x25'));logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xfcaa18,'request\x20sent',JSON[_0x5a9f('0x26')](_0x2a9192));if(_0x2a9192[_0x5a9f('0x27')]){if(_0x2a9192['error'][_0x5a9f('0x28')]===0x1f4){logger[_0x5a9f('0x27')]('SmsAccount,\x20%s,\x20%s',_0xfcaa18,_0x2a9192[_0x5a9f('0x27')][_0x5a9f('0x29')]);return _0x599ce2(_0x2a9192[_0x5a9f('0x27')]['message']);}logger['error'](_0x5a9f('0x24'),_0xfcaa18,_0x2a9192[_0x5a9f('0x27')][_0x5a9f('0x29')]);return _0x186b04(_0x2a9192[_0x5a9f('0x27')][_0x5a9f('0x29')]);}else{logger[_0x5a9f('0x23')](_0x5a9f('0x24'),_0xfcaa18,_0x5a9f('0x25'));_0x186b04(_0x2a9192[_0x5a9f('0x2a')][_0x5a9f('0x29')]);}})[_0x5a9f('0x2b')](function(_0x2de66c){logger[_0x5a9f('0x27')](_0x5a9f('0x24'),_0xfcaa18,_0x2de66c);_0x599ce2(_0x2de66c);});});}function respondWithStatusCode(_0x6d3793,_0x1c3813){_0x1c3813=_0x1c3813||0xcc;return function(_0x14a344){if(_0x14a344){return _0x6d3793['sendStatus'](_0x1c3813);}return _0x6d3793['status'](_0x1c3813)[_0x5a9f('0x2c')]();};}function respondWithResult(_0xcd4e4d,_0x50ed45){_0x50ed45=_0x50ed45||0xc8;return function(_0x134d71){if(_0x134d71){return _0xcd4e4d[_0x5a9f('0x2d')](_0x50ed45)[_0x5a9f('0x2e')](_0x134d71);}};}function respondWithFilteredResult(_0x105408,_0x1a3e1c){return function(_0xa95a9c){if(_0xa95a9c){var _0x4fa25e=typeof _0x1a3e1c['offset']===_0x5a9f('0x2f')&&typeof _0x1a3e1c[_0x5a9f('0x30')]===_0x5a9f('0x2f');var _0x13beb1=_0xa95a9c[_0x5a9f('0x31')];var _0x1767f2=_0x4fa25e?0x0:_0x1a3e1c[_0x5a9f('0x32')];var _0x4c66c4=_0x4fa25e?_0xa95a9c[_0x5a9f('0x31')]:_0x1a3e1c[_0x5a9f('0x32')]+_0x1a3e1c[_0x5a9f('0x30')];var _0x3b376f;if(_0x4c66c4>=_0x13beb1){_0x4c66c4=_0x13beb1;_0x3b376f=0xc8;}else{_0x3b376f=0xce;}_0x105408[_0x5a9f('0x2d')](_0x3b376f);return _0x105408['set'](_0x5a9f('0x33'),_0x1767f2+'-'+_0x4c66c4+'/'+_0x13beb1)[_0x5a9f('0x2e')](_0xa95a9c);}return null;};}function patchUpdates(_0x1b51ca){return function(_0x2f3a9e){try{jsonpatch['apply'](_0x2f3a9e,_0x1b51ca,!![]);}catch(_0x52074e){return BPromise[_0x5a9f('0x34')](_0x52074e);}return _0x2f3a9e[_0x5a9f('0x35')]();};}function saveUpdates(_0x48ab15,_0x4c4210){return function(_0x2750de){if(_0x2750de){return _0x2750de['update'](_0x48ab15)['then'](function(_0xa7f688){return _0xa7f688;});}return null;};}function removeEntity(_0x1771ee,_0x453643){return function(_0x5e77e0){if(_0x5e77e0){return _0x5e77e0[_0x5a9f('0x36')]()[_0x5a9f('0x22')](function(){var _0x4eff1f=_0x5e77e0[_0x5a9f('0x37')]({'plain':!![]});var _0x1687ed='SmsAccounts';return db[_0x5a9f('0x38')]['destroy']({'where':{'type':_0x1687ed,'resourceId':_0x4eff1f['id']}})[_0x5a9f('0x22')](function(){return _0x5e77e0;});})[_0x5a9f('0x22')](function(){_0x1771ee[_0x5a9f('0x2d')](0xcc)[_0x5a9f('0x2c')]();});}};}function handleEntityNotFound(_0x3fb1cb,_0x427599){return function(_0x495015){if(!_0x495015){_0x3fb1cb[_0x5a9f('0x39')](0x194);}return _0x495015;};}function handleError(_0x2accad,_0x71a23){_0x71a23=_0x71a23||0x1f4;return function(_0x500a43){logger[_0x5a9f('0x27')](_0x500a43['stack']);if(_0x500a43[_0x5a9f('0x3a')]){delete _0x500a43[_0x5a9f('0x3a')];}_0x2accad[_0x5a9f('0x2d')](_0x71a23)[_0x5a9f('0x3b')](_0x500a43);};}exports['index']=function(_0x2cc98c,_0x20627a){var _0x5448aa={'include':[{'model':db[_0x5a9f('0x3c')],'as':_0x5a9f('0x3d')}]},_0x169e44={},_0x1cd19f={'count':0x0,'rows':[]};var _0x48fc54=_['map'](db[_0x5a9f('0x3e')][_0x5a9f('0x3f')],function(_0x2e70a6){return{'name':_0x2e70a6[_0x5a9f('0x40')],'type':_0x2e70a6['type'][_0x5a9f('0x41')]};});_0x169e44[_0x5a9f('0x42')]=_[_0x5a9f('0x43')](_0x48fc54,'name');_0x169e44[_0x5a9f('0x44')]=_[_0x5a9f('0x45')](_0x2cc98c['query']);_0x169e44[_0x5a9f('0x46')]=_[_0x5a9f('0x47')](_0x169e44[_0x5a9f('0x42')],_0x169e44['query']);_0x5448aa[_0x5a9f('0x48')]=_[_0x5a9f('0x47')](_0x169e44['model'],qs[_0x5a9f('0x49')](_0x2cc98c[_0x5a9f('0x44')][_0x5a9f('0x49')]));_0x5448aa[_0x5a9f('0x48')]=_0x5448aa[_0x5a9f('0x48')][_0x5a9f('0x4a')]?_0x5448aa[_0x5a9f('0x48')]:_0x169e44[_0x5a9f('0x42')];if(!_0x2cc98c['query']['hasOwnProperty'](_0x5a9f('0x4b'))){_0x5448aa['limit']=qs[_0x5a9f('0x30')](_0x2cc98c[_0x5a9f('0x44')][_0x5a9f('0x30')]);_0x5448aa[_0x5a9f('0x32')]=qs['offset'](_0x2cc98c[_0x5a9f('0x44')][_0x5a9f('0x32')]);}_0x5448aa[_0x5a9f('0x4c')]=qs[_0x5a9f('0x4d')](_0x2cc98c['query'][_0x5a9f('0x4d')]);_0x5448aa[_0x5a9f('0x4e')]=qs['filters'](_[_0x5a9f('0x4f')](_0x2cc98c[_0x5a9f('0x44')],_0x169e44[_0x5a9f('0x46')]),_0x48fc54);if(_0x2cc98c[_0x5a9f('0x44')][_0x5a9f('0x50')]){_0x5448aa[_0x5a9f('0x4e')]=_['merge'](_0x5448aa['where'],{'$or':_[_0x5a9f('0x43')](_0x48fc54,function(_0x344600){if(_0x344600[_0x5a9f('0x51')]!==_0x5a9f('0x52')){var _0x36b275={};_0x36b275[_0x344600[_0x5a9f('0x3a')]]={'$like':'%'+_0x2cc98c['query'][_0x5a9f('0x50')]+'%'};return _0x36b275;}})});}_0x5448aa=_[_0x5a9f('0x53')]({},_0x5448aa,_0x2cc98c[_0x5a9f('0x54')]);var _0x427353={'where':_0x5448aa['where']};return db[_0x5a9f('0x3e')][_0x5a9f('0x31')](_0x427353)[_0x5a9f('0x22')](function(_0x13b10d){_0x1cd19f[_0x5a9f('0x31')]=_0x13b10d;if(_0x2cc98c[_0x5a9f('0x44')]['includeAll']){_0x5448aa[_0x5a9f('0x55')]=[{'all':!![]}];}return db[_0x5a9f('0x3e')]['findAll'](_0x5448aa);})[_0x5a9f('0x22')](function(_0x38f35a){_0x1cd19f[_0x5a9f('0x56')]=_0x38f35a;return _0x1cd19f;})[_0x5a9f('0x22')](respondWithFilteredResult(_0x20627a,_0x5448aa))[_0x5a9f('0x2b')](handleError(_0x20627a,null));};exports['show']=function(_0x4c0e25,_0xe86760){var _0x414a5d={'raw':![],'where':{'id':_0x4c0e25[_0x5a9f('0x57')]['id']},'include':[{'model':db[_0x5a9f('0x3c')],'as':_0x5a9f('0x3d')}]},_0x3a3b0a={};_0x3a3b0a[_0x5a9f('0x42')]=_['keys'](db['SmsAccount'][_0x5a9f('0x3f')]);_0x3a3b0a[_0x5a9f('0x44')]=_[_0x5a9f('0x45')](_0x4c0e25[_0x5a9f('0x44')]);_0x3a3b0a[_0x5a9f('0x46')]=_[_0x5a9f('0x47')](_0x3a3b0a[_0x5a9f('0x42')],_0x3a3b0a[_0x5a9f('0x44')]);_0x414a5d[_0x5a9f('0x48')]=_[_0x5a9f('0x47')](_0x3a3b0a[_0x5a9f('0x42')],qs[_0x5a9f('0x49')](_0x4c0e25['query'][_0x5a9f('0x49')]));_0x414a5d[_0x5a9f('0x48')]=_0x414a5d[_0x5a9f('0x48')]['length']?_0x414a5d[_0x5a9f('0x48')]:_0x3a3b0a['model'];if(_0x4c0e25[_0x5a9f('0x44')][_0x5a9f('0x58')]){_0x414a5d[_0x5a9f('0x55')]=[{'all':!![]}];}_0x414a5d=_['merge']({},_0x414a5d,_0x4c0e25[_0x5a9f('0x54')]);return db[_0x5a9f('0x3e')][_0x5a9f('0x59')](_0x414a5d)[_0x5a9f('0x22')](handleEntityNotFound(_0xe86760,null))[_0x5a9f('0x22')](respondWithResult(_0xe86760,null))['catch'](handleError(_0xe86760,null));};exports[_0x5a9f('0x5a')]=function(_0x6cea02,_0x94e58){return db[_0x5a9f('0x3e')][_0x5a9f('0x5a')](_0x6cea02[_0x5a9f('0x5b')],{})[_0x5a9f('0x22')](function(_0x47f859){var _0x3dab3c=_0x6cea02[_0x5a9f('0x5c')]['get']({'plain':!![]});if(!_0x3dab3c)throw new Error(_0x5a9f('0x5d'));if(_0x3dab3c['role']===_0x5a9f('0x5c')){var _0x4da107=_0x47f859[_0x5a9f('0x37')]({'plain':!![]});var _0x19bade=_0x5a9f('0x5e');return db[_0x5a9f('0x5f')][_0x5a9f('0x59')]({'where':{'name':_0x19bade,'userProfileId':_0x3dab3c[_0x5a9f('0x60')]},'raw':!![]})['then'](function(_0x56e512){if(_0x56e512&&_0x56e512[_0x5a9f('0x61')]===0x0){return db[_0x5a9f('0x38')][_0x5a9f('0x5a')]({'name':_0x4da107['name'],'resourceId':_0x4da107['id'],'type':_0x56e512[_0x5a9f('0x3a')],'sectionId':_0x56e512['id']},{})['then'](function(){return _0x47f859;});}else{return _0x47f859;}})[_0x5a9f('0x2b')](function(_0x239832){logger['error'](_0x5a9f('0x62'),_0x239832);throw _0x239832;});}return _0x47f859;})[_0x5a9f('0x22')](respondWithResult(_0x94e58,0xc9))[_0x5a9f('0x2b')](handleError(_0x94e58,null));};exports['update']=function(_0x131273,_0x26792c){if(_0x131273['body']['id']){delete _0x131273[_0x5a9f('0x5b')]['id'];}return db[_0x5a9f('0x3e')]['find']({'where':{'id':_0x131273['params']['id']},'include':[{'model':db['Pause'],'as':_0x5a9f('0x3d')}]})['then'](handleEntityNotFound(_0x26792c,null))['then'](saveUpdates(_0x131273[_0x5a9f('0x5b')],null))[_0x5a9f('0x22')](respondWithResult(_0x26792c,null))[_0x5a9f('0x2b')](handleError(_0x26792c,null));};exports[_0x5a9f('0x36')]=function(_0x2fab4f,_0x58d6ff){return db['SmsAccount']['find']({'where':{'id':_0x2fab4f[_0x5a9f('0x57')]['id']}})[_0x5a9f('0x22')](handleEntityNotFound(_0x58d6ff,null))[_0x5a9f('0x22')](removeEntity(_0x58d6ff,null))[_0x5a9f('0x2b')](handleError(_0x58d6ff,null));};exports[_0x5a9f('0x63')]=function(_0x24e204,_0xb097b9){return db[_0x5a9f('0x3e')][_0x5a9f('0x63')]()[_0x5a9f('0x22')](respondWithResult(_0xb097b9,null))[_0x5a9f('0x2b')](handleError(_0xb097b9,null));};exports[_0x5a9f('0x64')]=function(_0x4b7bc2,_0x543371,_0x425a63){if(_0x4b7bc2['body']['id']){delete _0x4b7bc2['body']['id'];}return db[_0x5a9f('0x3e')][_0x5a9f('0x59')]({'where':{'id':_0x4b7bc2[_0x5a9f('0x57')]['id']}})[_0x5a9f('0x22')](handleEntityNotFound(_0x543371,null))[_0x5a9f('0x22')](function(_0x3fff0e){if(_0x3fff0e){_0x4b7bc2[_0x5a9f('0x5b')][_0x5a9f('0x65')]=_0x3fff0e['id'];return db[_0x5a9f('0x66')][_0x5a9f('0x5a')](_0x4b7bc2['body']);}})[_0x5a9f('0x22')](respondWithResult(_0x543371,null))['catch'](handleError(_0x543371,null));};exports['getDispositions']=function(_0xa44cf4,_0x5919a0,_0x4915a3){var _0x2d41d2={'raw':![],'where':{}};var _0x4899c0={};var _0x4fe5f2={'count':0x0,'rows':[]};return db[_0x5a9f('0x3e')][_0x5a9f('0x67')]({'where':{'id':_0xa44cf4[_0x5a9f('0x57')]['id']}})['then'](handleEntityNotFound(_0x5919a0,null))[_0x5a9f('0x22')](function(_0x23f3ad){if(_0x23f3ad){_0x4899c0[_0x5a9f('0x42')]=_[_0x5a9f('0x45')](db[_0x5a9f('0x66')][_0x5a9f('0x3f')]);_0x4899c0['query']=_[_0x5a9f('0x45')](_0xa44cf4['query']);_0x4899c0[_0x5a9f('0x46')]=_['intersection'](_0x4899c0['model'],_0x4899c0[_0x5a9f('0x44')]);_0x2d41d2[_0x5a9f('0x48')]=_[_0x5a9f('0x47')](_0x4899c0[_0x5a9f('0x42')],qs[_0x5a9f('0x49')](_0xa44cf4[_0x5a9f('0x44')][_0x5a9f('0x49')]));_0x2d41d2['attributes']=_0x2d41d2[_0x5a9f('0x48')][_0x5a9f('0x4a')]?_0x2d41d2[_0x5a9f('0x48')]:_0x4899c0[_0x5a9f('0x42')];if(!_0xa44cf4['query'][_0x5a9f('0x68')](_0x5a9f('0x4b'))){_0x2d41d2[_0x5a9f('0x30')]=qs[_0x5a9f('0x30')](_0xa44cf4['query'][_0x5a9f('0x30')]);_0x2d41d2['offset']=qs['offset'](_0xa44cf4[_0x5a9f('0x44')]['offset']);}_0x2d41d2['order']=qs['sort'](_0xa44cf4['query'][_0x5a9f('0x4d')]);_0x2d41d2['where']=qs[_0x5a9f('0x46')](_['pick'](_0xa44cf4['query'],_0x4899c0[_0x5a9f('0x46')]));_0x2d41d2[_0x5a9f('0x4e')][_0x5a9f('0x65')]=_0x23f3ad['id'];if(_0xa44cf4[_0x5a9f('0x44')]['filter']){_0x2d41d2['where']=_[_0x5a9f('0x53')](_0x2d41d2[_0x5a9f('0x4e')],{'$or':_[_0x5a9f('0x43')](_0x2d41d2[_0x5a9f('0x48')],function(_0x78e764){var _0x5d84b5={};_0x5d84b5[_0x78e764]={'$like':'%'+_0xa44cf4[_0x5a9f('0x44')][_0x5a9f('0x50')]+'%'};return _0x5d84b5;})});}_0x2d41d2=_['merge']({},_0x2d41d2,_0xa44cf4[_0x5a9f('0x54')]);return db[_0x5a9f('0x66')][_0x5a9f('0x31')]({'where':_0x2d41d2[_0x5a9f('0x4e')]})['then'](function(_0x22cbba){_0x4fe5f2['count']=_0x22cbba;if(_0xa44cf4[_0x5a9f('0x44')]['includeAll']){_0x2d41d2[_0x5a9f('0x55')]=[{'all':!![]}];}return db[_0x5a9f('0x66')][_0x5a9f('0x69')](_0x2d41d2);})[_0x5a9f('0x22')](function(_0x18d19a){_0x4fe5f2[_0x5a9f('0x56')]=_0x18d19a;return _0x4fe5f2;});}})[_0x5a9f('0x22')](respondWithFilteredResult(_0x5919a0,_0x2d41d2))[_0x5a9f('0x2b')](handleError(_0x5919a0,null));};exports['removeDispositions']=function(_0x3e18cf,_0x4ee574,_0x2b2a26){return db['SmsAccount']['find']({'where':{'id':_0x3e18cf[_0x5a9f('0x57')]['id']}})[_0x5a9f('0x22')](handleEntityNotFound(_0x4ee574,null))[_0x5a9f('0x22')](function(_0x3e23cd){if(_0x3e23cd){return _0x3e23cd[_0x5a9f('0x6a')](_0x3e18cf[_0x5a9f('0x44')][_0x5a9f('0x6b')]);}})[_0x5a9f('0x22')](respondWithStatusCode(_0x4ee574,null))['catch'](handleError(_0x4ee574,null));};exports[_0x5a9f('0x6c')]=function(_0x427e8a,_0x3787ad,_0x194b29){if(_0x427e8a[_0x5a9f('0x5b')]['id']){delete _0x427e8a['body']['id'];}return db[_0x5a9f('0x3e')][_0x5a9f('0x59')]({'where':{'id':_0x427e8a[_0x5a9f('0x57')]['id']}})[_0x5a9f('0x22')](handleEntityNotFound(_0x3787ad,null))[_0x5a9f('0x22')](function(_0x442a58){if(_0x442a58){_0x427e8a[_0x5a9f('0x5b')]['SmsAccountId']=_0x442a58['id'];return db[_0x5a9f('0x6d')][_0x5a9f('0x5a')](_0x427e8a[_0x5a9f('0x5b')]);}})[_0x5a9f('0x22')](respondWithResult(_0x3787ad,null))[_0x5a9f('0x2b')](handleError(_0x3787ad,null));};exports[_0x5a9f('0x6e')]=function(_0x3bcbf3,_0x421017,_0x939d74){var _0x1e7fb5={'raw':![],'where':{}};var _0xd24cb5={};var _0x3e4f5f={'count':0x0,'rows':[]};return db['SmsAccount'][_0x5a9f('0x67')]({'where':{'id':_0x3bcbf3[_0x5a9f('0x57')]['id']}})[_0x5a9f('0x22')](handleEntityNotFound(_0x421017,null))[_0x5a9f('0x22')](function(_0xa3ba36){if(_0xa3ba36){_0xd24cb5[_0x5a9f('0x42')]=_[_0x5a9f('0x45')](db['CannedAnswer'][_0x5a9f('0x3f')]);_0xd24cb5[_0x5a9f('0x44')]=_[_0x5a9f('0x45')](_0x3bcbf3[_0x5a9f('0x44')]);_0xd24cb5[_0x5a9f('0x46')]=_[_0x5a9f('0x47')](_0xd24cb5[_0x5a9f('0x42')],_0xd24cb5[_0x5a9f('0x44')]);_0x1e7fb5[_0x5a9f('0x48')]=_[_0x5a9f('0x47')](_0xd24cb5[_0x5a9f('0x42')],qs[_0x5a9f('0x49')](_0x3bcbf3['query'][_0x5a9f('0x49')]));_0x1e7fb5[_0x5a9f('0x48')]=_0x1e7fb5[_0x5a9f('0x48')]['length']?_0x1e7fb5[_0x5a9f('0x48')]:_0xd24cb5[_0x5a9f('0x42')];if(!_0x3bcbf3[_0x5a9f('0x44')][_0x5a9f('0x68')]('nolimit')){_0x1e7fb5[_0x5a9f('0x30')]=qs['limit'](_0x3bcbf3[_0x5a9f('0x44')][_0x5a9f('0x30')]);_0x1e7fb5[_0x5a9f('0x32')]=qs['offset'](_0x3bcbf3[_0x5a9f('0x44')][_0x5a9f('0x32')]);}_0x1e7fb5['order']=qs[_0x5a9f('0x4d')](_0x3bcbf3['query'][_0x5a9f('0x4d')]);_0x1e7fb5[_0x5a9f('0x4e')]=qs[_0x5a9f('0x46')](_[_0x5a9f('0x4f')](_0x3bcbf3[_0x5a9f('0x44')],_0xd24cb5[_0x5a9f('0x46')]));_0x1e7fb5['where'][_0x5a9f('0x65')]=_0xa3ba36['id'];if(_0x3bcbf3[_0x5a9f('0x44')][_0x5a9f('0x50')]){_0x1e7fb5['where']=_['merge'](_0x1e7fb5[_0x5a9f('0x4e')],{'$or':_['map'](_0x1e7fb5[_0x5a9f('0x48')],function(_0x46713e){var _0x20f671={};_0x20f671[_0x46713e]={'$like':'%'+_0x3bcbf3[_0x5a9f('0x44')][_0x5a9f('0x50')]+'%'};return _0x20f671;})});}_0x1e7fb5=_[_0x5a9f('0x53')]({},_0x1e7fb5,_0x3bcbf3['options']);return db[_0x5a9f('0x6d')][_0x5a9f('0x31')]({'where':_0x1e7fb5[_0x5a9f('0x4e')]})['then'](function(_0x3af9f2){_0x3e4f5f['count']=_0x3af9f2;if(_0x3bcbf3[_0x5a9f('0x44')][_0x5a9f('0x58')]){_0x1e7fb5[_0x5a9f('0x55')]=[{'all':!![]}];}return db['CannedAnswer'][_0x5a9f('0x69')](_0x1e7fb5);})[_0x5a9f('0x22')](function(_0x38dd41){_0x3e4f5f[_0x5a9f('0x56')]=_0x38dd41;return _0x3e4f5f;});}})[_0x5a9f('0x22')](respondWithFilteredResult(_0x421017,_0x1e7fb5))['catch'](handleError(_0x421017,null));};exports[_0x5a9f('0x6f')]=function(_0x3bdf2d,_0x2b81e7,_0x188711){return db[_0x5a9f('0x3e')][_0x5a9f('0x59')]({'where':{'id':_0x3bdf2d['params']['id']}})['then'](handleEntityNotFound(_0x2b81e7,null))[_0x5a9f('0x22')](function(_0x59b916){if(_0x59b916){return _0x59b916[_0x5a9f('0x6f')](_0x3bdf2d[_0x5a9f('0x44')][_0x5a9f('0x6b')]);}})[_0x5a9f('0x22')](respondWithStatusCode(_0x2b81e7,null))['catch'](handleError(_0x2b81e7,null));};exports[_0x5a9f('0x70')]=function(_0x4a3eec,_0x165bd6,_0x4077d3){var _0x36a614={'channel':_0x5a9f('0x71')};var _0x5c3711=[];var _0x1010cb=[];var _0x3d2d1c={};return db[_0x5a9f('0x3e')][_0x5a9f('0x59')]({'where':{'id':_0x4a3eec[_0x5a9f('0x57')]['id']},'include':[{'model':db[_0x5a9f('0x72')],'as':_0x5a9f('0x73')}]})[_0x5a9f('0x22')](handleEntityNotFound(_0x165bd6,null))[_0x5a9f('0x22')](function(_0x4f3be2){_0x36a614[_0x5a9f('0x74')]=_0x4f3be2;_0x36a614[_0x5a9f('0x75')]=_[_0x5a9f('0x76')](_0x4f3be2['Applications'],[_0x5a9f('0x77')],[_0x5a9f('0x78')]);if(_0x36a614[_0x5a9f('0x74')]['Applications']){delete _0x36a614[_0x5a9f('0x74')][_0x5a9f('0x73')];}return db[_0x5a9f('0x79')][_0x5a9f('0x63')]();})[_0x5a9f('0x22')](function(_0x3324d1){if(!_0x3324d1){throw new db['Sequelize'][(_0x5a9f('0x7a'))](_0x5a9f('0x7b'));}_0x5c3711=_['difference'](_['keys'](_0x3324d1),[_0x5a9f('0x7c'),_0x5a9f('0x7d')]);_0x1010cb=_[_0x5a9f('0x7e')](_[_0x5a9f('0x45')](_0x3324d1),['createdAt',_0x5a9f('0x7d'),_0x5a9f('0x7f'),_0x5a9f('0x80')]);_0x36a614[_0x5a9f('0x5b')]={'mapKey':_0x5a9f('0x81')};if(_0x36a614['account'][_0x5a9f('0x51')]){switch(_0x36a614[_0x5a9f('0x74')][_0x5a9f('0x51')]){case _0x5a9f('0x82'):_0x36a614['body']['from']=_0x4a3eec[_0x5a9f('0x5b')][_0x5a9f('0x83')];_0x36a614[_0x5a9f('0x5b')][_0x5a9f('0x5b')]=_0x4a3eec[_0x5a9f('0x5b')]['Body'];_0x36a614['body'][_0x5a9f('0x84')]=_0x4a3eec[_0x5a9f('0x5b')]['MessageSid'];break;case _0x5a9f('0x85'):_0x36a614['body']['from']='+'+_0x4a3eec[_0x5a9f('0x5b')]['sender'];_0x36a614['body'][_0x5a9f('0x5b')]=_0x4a3eec['body'][_0x5a9f('0x86')];break;case _0x5a9f('0x87'):_0x36a614[_0x5a9f('0x5b')]['from']=_0x4a3eec['body'][_0x5a9f('0x88')];_0x36a614[_0x5a9f('0x5b')][_0x5a9f('0x5b')]=_0x4a3eec[_0x5a9f('0x5b')][_0x5a9f('0x29')];break;case'clicksend':_0x36a614[_0x5a9f('0x5b')][_0x5a9f('0x88')]=_0x4a3eec['body'][_0x5a9f('0x88')];_0x36a614['body']['body']=_0x4a3eec[_0x5a9f('0x5b')]['body'];_0x36a614[_0x5a9f('0x5b')][_0x5a9f('0x84')]=_0x4a3eec[_0x5a9f('0x5b')][_0x5a9f('0x89')];break;case'plivo':_0x36a614['body'][_0x5a9f('0x88')]=_0x4a3eec[_0x5a9f('0x5b')][_0x5a9f('0x83')];_0x36a614[_0x5a9f('0x5b')][_0x5a9f('0x5b')]=_0x4a3eec['body'][_0x5a9f('0x8a')];_0x36a614['body'][_0x5a9f('0x84')]=_0x4a3eec[_0x5a9f('0x5b')][_0x5a9f('0x8b')];break;case _0x5a9f('0x8c'):_0x36a614['body']['from']='+'+_0x4a3eec[_0x5a9f('0x5b')]['results'][0x0][_0x5a9f('0x88')];_0x36a614[_0x5a9f('0x5b')]['body']=_0x4a3eec['body'][_0x5a9f('0x8d')][0x0][_0x5a9f('0x86')];_0x36a614[_0x5a9f('0x5b')]['messageId']=_0x4a3eec[_0x5a9f('0x5b')][_0x5a9f('0x8d')][0x0]['messageId'];break;case'csc':_0x36a614['body'][_0x5a9f('0x88')]=_0x4a3eec[_0x5a9f('0x5b')][_0x5a9f('0x8e')];_0x36a614[_0x5a9f('0x5b')]['body']=_0x4a3eec['body'][_0x5a9f('0x8f')][_0x5a9f('0x29')];break;case _0x5a9f('0x90'):_0x36a614[_0x5a9f('0x5b')]['from']=_0x4a3eec[_0x5a9f('0x5b')][_0x5a9f('0x91')];_0x36a614[_0x5a9f('0x5b')][_0x5a9f('0x5b')]=_0x4a3eec[_0x5a9f('0x5b')]['text'];_0x36a614['body'][_0x5a9f('0x84')]=_0x4a3eec['body']['replyMessageId'];break;case'bandwidth':_0x36a614['body'][_0x5a9f('0x84')]=_0x4a3eec[_0x5a9f('0x5b')][0x0][_0x5a9f('0x29')]['id'];_0x36a614[_0x5a9f('0x5b')][_0x5a9f('0x88')]=_0x4a3eec[_0x5a9f('0x5b')][0x0][_0x5a9f('0x29')]['from'];_0x36a614['body'][_0x5a9f('0x5b')]=_0x4a3eec['body'][0x0][_0x5a9f('0x29')]['text'];break;case'intelepeer':_0x36a614['body'][_0x5a9f('0x88')]=_0x4a3eec[_0x5a9f('0x5b')]['from'];_0x36a614[_0x5a9f('0x5b')][_0x5a9f('0x5b')]=_0x4a3eec[_0x5a9f('0x5b')][_0x5a9f('0x29')];_0x36a614['body'][_0x5a9f('0x84')]=_0x4a3eec['body'][_0x5a9f('0x92')];break;}}if(_0x36a614['body']['id']){delete _0x36a614[_0x5a9f('0x5b')]['id'];}if(_['isNil'](_0x36a614[_0x5a9f('0x5b')][_0x5a9f('0x88')])){throw new db['Sequelize'][(_0x5a9f('0x7a'))](_0x5a9f('0x93'));}if(_[_0x5a9f('0x94')](_0x36a614[_0x5a9f('0x5b')][_0x5a9f('0x5b')])||_0x36a614[_0x5a9f('0x5b')][_0x5a9f('0x5b')]===''){throw new db['Sequelize'][(_0x5a9f('0x7a'))](_0x5a9f('0x95'));}if(_[_0x5a9f('0x94')](_0x36a614[_0x5a9f('0x5b')][_0x5a9f('0x96')])){throw new db[(_0x5a9f('0x97'))][(_0x5a9f('0x7a'))](_0x5a9f('0x98')+_0x1010cb);}if(!_[_0x5a9f('0x99')](_0x1010cb,_0x36a614['body'][_0x5a9f('0x96')])){throw new db['Sequelize']['ValidationError'](_0x5a9f('0x9a')+_0x1010cb);}_0x3d2d1c[_0x36a614['body'][_0x5a9f('0x96')]]=_0x36a614['body'][_0x5a9f('0x88')];return db[_0x5a9f('0x9b')][_0x5a9f('0x59')]({'where':{'id':_0x36a614[_0x5a9f('0x74')][_0x5a9f('0x80')]},'include':[{'model':db[_0x5a9f('0x79')],'as':'Contacts','where':_0x3d2d1c,'limit':0x1,'order':[['updatedAt',_0x5a9f('0x9c')]]}]});})[_0x5a9f('0x22')](handleEntityNotFound(_0x165bd6,null))[_0x5a9f('0x22')](function(_0x53e042){if(_0x53e042){_0x36a614[_0x5a9f('0x9d')]=_[_0x5a9f('0x9e')](_0x53e042,[_0x5a9f('0x9f')]);if(_0x53e042[_0x5a9f('0x9f')]['length']){return _0x53e042[_0x5a9f('0x9f')][0x0];}var _0x3426f0=_[_0x5a9f('0x1c')](_0x36a614['body'],{'firstName':_0x36a614[_0x5a9f('0x5b')][_0x5a9f('0x88')],'ListId':_0x53e042['id']});_0x3426f0[_0x36a614[_0x5a9f('0x5b')][_0x5a9f('0x96')]]=_0x36a614[_0x5a9f('0x5b')][_0x5a9f('0x88')];return db[_0x5a9f('0x79')]['create'](_0x3426f0,{'fields':_0x5c3711,'raw':!![]});}})[_0x5a9f('0x22')](handleEntityNotFound(_0x165bd6,null))[_0x5a9f('0x22')](function(_0x216f8c){if(_0x216f8c){_0x36a614[_0x5a9f('0xa0')]=_0x216f8c;var _0x2de239={'ContactId':_0x216f8c['id'],'phone':_0x36a614[_0x5a9f('0x5b')][_0x5a9f('0x88')],'SmsAccountId':_0x4a3eec['params']['id']};var _0x59b12e={'ContactId':_0x216f8c['id'],'SmsAccountId':_0x4a3eec['params']['id'],'closed':![]};return db['SmsInteraction'][_0x5a9f('0x59')]({'where':_0x59b12e})[_0x5a9f('0x22')](function(_0x3e3fec){if(_0x3e3fec){return[_0x3e3fec,![]];}return db[_0x5a9f('0xa1')][_0x5a9f('0x5a')](_0x2de239)[_0x5a9f('0x22')](function(_0x4cb2d4){return[_0x4cb2d4,!![]];});});}})[_0x5a9f('0xa2')](function(_0x4dba38,_0x1f5311){_0x36a614[_0x5a9f('0xa3')]=_0x4dba38[_0x5a9f('0x37')]({'plain':!![]});_0x36a614['interaction']['created']=![];if(_0x1f5311){if(_0x36a614[_0x5a9f('0x74')][_0x5a9f('0xa4')]){_0x36a614[_0x5a9f('0x75')]['push']({'id':0x0,'priority':_0x36a614[_0x5a9f('0x75')][_0x5a9f('0x4a')]+0x1,'app':_0x5a9f('0xa5'),'appdata':_0x5a9f('0xa6'),'interval':'*,*,*,*'});}_0x36a614[_0x5a9f('0xa3')][_0x5a9f('0xa7')]=!![];}return db['SmsMessage'][_0x5a9f('0x5a')]({'phone':_0x36a614[_0x5a9f('0x5b')][_0x5a9f('0x88')],'messageId':_0x36a614[_0x5a9f('0x5b')]['messageId'],'body':_0x36a614[_0x5a9f('0x5b')]['body'],'SmsAccountId':_0x4a3eec['params']['id'],'SmsInteractionId':_0x4dba38['id'],'direction':'in','ContactId':_0x4dba38[_0x5a9f('0xa8')],'AttachmentId':_0x36a614['body'][_0x5a9f('0xa9')]});})[_0x5a9f('0x22')](function(_0x2797ef){_0x36a614[_0x5a9f('0x29')]=_0x2797ef;if(_0x36a614['interaction']['UserId']){return db[_0x5a9f('0xaa')][_0x5a9f('0x59')]({'attributes':['id','name'],'where':{'id':_0x36a614['interaction']['UserId']}})[_0x5a9f('0x22')](function(_0x53ad5d){if(_0x53ad5d){_0x36a614[_0x5a9f('0x75')][_0x5a9f('0xab')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x53ad5d[_0x5a9f('0x3a')]+','+(_0x36a614[_0x5a9f('0x74')][_0x5a9f('0xac')]||0xa),'interval':_0x5a9f('0xad')});}return respondWithRpcPromise(_0x5a9f('0xae'),_0x5a9f('0xaf'),_0x36a614);});}return respondWithRpcPromise(_0x5a9f('0xae'),_0x5a9f('0xaf'),_0x36a614);})[_0x5a9f('0x22')](function(_0x9dff73){if(_0x9dff73){var _0x11484f=0xc8;var _0xde40c7=_0x5a9f('0xb0');logger['info']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xde40c7,_0x11484f,_0x5a9f('0xb1'));logger['debug'](_0x5a9f('0xb2'),_0xde40c7,_0x11484f,_0x5a9f('0xb1'),JSON[_0x5a9f('0x26')](_0x9dff73));if(_0x36a614[_0x5a9f('0x74')][_0x5a9f('0x51')]===_0x5a9f('0x82')){return _0x165bd6[_0x5a9f('0x2d')](_0x11484f)[_0x5a9f('0xb3')](_0x5a9f('0xb4'),_0x5a9f('0xb5'))[_0x5a9f('0x3b')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x165bd6[_0x5a9f('0x2d')](_0x11484f)[_0x5a9f('0x2e')](_0x9dff73);}}})[_0x5a9f('0x2b')](handleError(_0x165bd6,null));};exports[_0x5a9f('0xb6')]=function(_0x2a7e24,_0x19f566){var _0x4bc3e5=_0x2a7e24[_0x5a9f('0x57')]['id'];var _0x318b5b=_0x2a7e24['body'];var _0x41aaaa=0xc8;var _0xe1ef70=null;return db[_0x5a9f('0xb7')][_0x5a9f('0xb8')]({'isolationLevel':db['sequelize'][_0x5a9f('0xb9')][_0x5a9f('0xba')][_0x5a9f('0xbb')]},function(_0x592fd0){return db['SmsAccount'][_0x5a9f('0x67')]({'where':{'id':_0x4bc3e5},'transaction':_0x592fd0})[_0x5a9f('0x22')](function(_0x4d86e2){if(_0x4d86e2){return db[_0x5a9f('0x72')][_0x5a9f('0x36')]({'where':{'SmsAccountId':_0x4bc3e5},'transaction':_0x592fd0})[_0x5a9f('0x22')](function(){var _0x50e01b=_[_0x5a9f('0x43')](_0x318b5b,function(_0x3fde59){_0x3fde59[_0x5a9f('0x65')]=_0x4bc3e5;return _0x3fde59;});return db[_0x5a9f('0x72')][_0x5a9f('0xbc')](_0x50e01b,{'transaction':_0x592fd0});});}else{_0x41aaaa=0x194;_0xe1ef70=[];}});})[_0x5a9f('0x22')](function(){if(_0x41aaaa!==0x194){return db[_0x5a9f('0x72')]['findAndCountAll']({'where':{'SmsAccountId':_0x4bc3e5},'order':_0x5a9f('0x77')})[_0x5a9f('0x22')](function(_0x556212){_0xe1ef70=_0x556212;});}})[_0x5a9f('0x2b')](function(_0x225020){_0x41aaaa=0x1f4;logger['error'](_0x225020[_0x5a9f('0xbd')]);if(_0x225020['name']){delete _0x225020[_0x5a9f('0x3a')];}_0xe1ef70=_0x225020;})[_0x5a9f('0xbe')](function(){if(_0xe1ef70===null){_0x19f566[_0x5a9f('0x39')](_0x41aaaa);}else{if(_0x41aaaa===0x1f4){_0x19f566[_0x5a9f('0x2d')](_0x41aaaa)[_0x5a9f('0x3b')](_0xe1ef70);}else{_0x19f566['status'](_0x41aaaa)[_0x5a9f('0x2e')](_0xe1ef70);}}});};exports['getApplications']=function(_0x441110,_0x2a732f,_0x34869b){var _0x12f885={};var _0x3fc80f={};var _0x13987c;var _0x57b642;return db[_0x5a9f('0x3e')][_0x5a9f('0x67')]({'where':{'id':_0x441110[_0x5a9f('0x57')]['id']}})[_0x5a9f('0x22')](handleEntityNotFound(_0x2a732f,null))[_0x5a9f('0x22')](function(_0xea5c21){if(_0xea5c21){_0x13987c=_0xea5c21;_0x3fc80f[_0x5a9f('0x42')]=_[_0x5a9f('0x45')](db[_0x5a9f('0x72')][_0x5a9f('0x3f')]);_0x3fc80f['query']=_[_0x5a9f('0x45')](_0x441110[_0x5a9f('0x44')]);_0x3fc80f['filters']=_[_0x5a9f('0x47')](_0x3fc80f[_0x5a9f('0x42')],_0x3fc80f[_0x5a9f('0x44')]);_0x12f885[_0x5a9f('0x48')]=_[_0x5a9f('0x47')](_0x3fc80f[_0x5a9f('0x42')],qs[_0x5a9f('0x49')](_0x441110['query'][_0x5a9f('0x49')]));_0x12f885[_0x5a9f('0x48')]=_0x12f885['attributes']['length']?_0x12f885['attributes']:_0x3fc80f[_0x5a9f('0x42')];_0x12f885[_0x5a9f('0x4c')]=qs[_0x5a9f('0x4d')](_0x441110[_0x5a9f('0x44')][_0x5a9f('0x4d')]);_0x12f885[_0x5a9f('0x4e')]=qs['filters'](_['pick'](_0x441110[_0x5a9f('0x44')],_0x3fc80f[_0x5a9f('0x46')]));if(_0x441110[_0x5a9f('0x44')][_0x5a9f('0x50')]){_0x12f885[_0x5a9f('0x4e')]=_['merge'](_0x12f885['where'],{'$or':_[_0x5a9f('0x43')](_0x12f885['attributes'],function(_0x1eafdd){var _0x5668db={};_0x5668db[_0x1eafdd]={'$like':'%'+_0x441110['query'][_0x5a9f('0x50')]+'%'};return _0x5668db;})});}_0x12f885=_['merge']({},_0x12f885,_0x441110[_0x5a9f('0x54')]);return _0x13987c[_0x5a9f('0xbf')](_0x12f885);}})['then'](function(_0x2bd3c9){if(_0x2bd3c9){_0x57b642=_0x2bd3c9['length'];if(!_0x441110[_0x5a9f('0x44')][_0x5a9f('0x68')]('nolimit')){_0x12f885[_0x5a9f('0x30')]=qs[_0x5a9f('0x30')](_0x441110[_0x5a9f('0x44')][_0x5a9f('0x30')]);_0x12f885[_0x5a9f('0x32')]=qs[_0x5a9f('0x32')](_0x441110[_0x5a9f('0x44')][_0x5a9f('0x32')]);}return _0x13987c['getApplications'](_0x12f885);}})[_0x5a9f('0x22')](function(_0x4321eb){if(_0x4321eb){return _0x4321eb?{'count':_0x57b642,'rows':_0x4321eb}:null;}})[_0x5a9f('0x22')](respondWithResult(_0x2a732f,null))[_0x5a9f('0x2b')](handleError(_0x2a732f,null));};exports[_0x5a9f('0xc0')]=function(_0x142b3b,_0x435747,_0x23b20e){var _0x48c7f2={'raw':![],'where':{}};var _0x476bc2={};var _0x181650={'count':0x0,'rows':[]};return db['SmsAccount'][_0x5a9f('0x67')]({'where':{'id':_0x142b3b[_0x5a9f('0x57')]['id']}})[_0x5a9f('0x22')](handleEntityNotFound(_0x435747,null))[_0x5a9f('0x22')](function(_0x148c61){if(_0x148c61){_0x476bc2[_0x5a9f('0x42')]=_[_0x5a9f('0x45')](db[_0x5a9f('0xa1')][_0x5a9f('0x3f')]);_0x476bc2['query']=_[_0x5a9f('0x45')](_0x142b3b['query']);_0x476bc2[_0x5a9f('0x46')]=_[_0x5a9f('0x47')](_0x476bc2[_0x5a9f('0x42')],_0x476bc2[_0x5a9f('0x44')]);_0x48c7f2[_0x5a9f('0x48')]=_[_0x5a9f('0x47')](_0x476bc2[_0x5a9f('0x42')],qs[_0x5a9f('0x49')](_0x142b3b[_0x5a9f('0x44')][_0x5a9f('0x49')]));_0x48c7f2[_0x5a9f('0x48')]=_0x48c7f2[_0x5a9f('0x48')]['length']?_0x48c7f2[_0x5a9f('0x48')]:_0x476bc2[_0x5a9f('0x42')];if(!_0x142b3b['query'][_0x5a9f('0x68')](_0x5a9f('0x4b'))){_0x48c7f2[_0x5a9f('0x30')]=qs[_0x5a9f('0x30')](_0x142b3b[_0x5a9f('0x44')][_0x5a9f('0x30')]);_0x48c7f2['offset']=qs['offset'](_0x142b3b[_0x5a9f('0x44')][_0x5a9f('0x32')]);}_0x48c7f2[_0x5a9f('0x4c')]=qs['sort'](_0x142b3b[_0x5a9f('0x44')][_0x5a9f('0x4d')]);_0x48c7f2[_0x5a9f('0x4e')]=qs[_0x5a9f('0x46')](_[_0x5a9f('0x4f')](_0x142b3b[_0x5a9f('0x44')],_0x476bc2[_0x5a9f('0x46')]));_0x48c7f2[_0x5a9f('0x4e')][_0x5a9f('0x65')]=_0x148c61['id'];if(_0x142b3b['query'][_0x5a9f('0x50')]){_0x48c7f2[_0x5a9f('0x4e')]=_[_0x5a9f('0x53')](_0x48c7f2[_0x5a9f('0x4e')],{'$or':_['map'](_0x48c7f2[_0x5a9f('0x48')],function(_0x483e78){var _0x22fcbf={};_0x22fcbf[_0x483e78]={'$like':'%'+_0x142b3b[_0x5a9f('0x44')][_0x5a9f('0x50')]+'%'};return _0x22fcbf;})});}_0x48c7f2=_[_0x5a9f('0x53')]({},_0x48c7f2,_0x142b3b[_0x5a9f('0x54')]);return db['SmsInteraction']['count']({'where':_0x48c7f2['where']})[_0x5a9f('0x22')](function(_0x490604){_0x181650['count']=_0x490604;if(_0x142b3b[_0x5a9f('0x44')][_0x5a9f('0x58')]){_0x48c7f2[_0x5a9f('0x55')]=[{'model':db[_0x5a9f('0x79')],'as':'Contact','required':![]},{'model':db[_0x5a9f('0xaa')],'as':_0x5a9f('0xc1'),'attributes':[_0x5a9f('0x3a'),_0x5a9f('0xc2'),'internal'],'required':![]},{'model':db[_0x5a9f('0xc3')],'as':_0x5a9f('0xc4'),'attributes':['id',_0x5a9f('0x3a'),_0x5a9f('0xc5')],'where':_0x142b3b[_0x5a9f('0x44')][_0x5a9f('0xc6')]?{'id':_0x142b3b[_0x5a9f('0x44')][_0x5a9f('0xc6')]}:undefined,'required':_0x142b3b[_0x5a9f('0x44')]['tag']?!![]:![]}];}return db[_0x5a9f('0xa1')][_0x5a9f('0x69')](_0x48c7f2);})[_0x5a9f('0x22')](function(_0x547366){_0x181650[_0x5a9f('0x56')]=_0x547366;return _0x181650;});}})[_0x5a9f('0x22')](respondWithFilteredResult(_0x435747,_0x48c7f2))[_0x5a9f('0x2b')](handleError(_0x435747,null));};exports[_0x5a9f('0x3b')]=function(_0x367893,_0x373a41,_0x4a3003){var _0x284e5c,_0xb2eb6e,_0x293472;if(_[_0x5a9f('0x94')](_0x367893[_0x5a9f('0x5b')][_0x5a9f('0x5b')])||_0x367893[_0x5a9f('0x5b')][_0x5a9f('0x5b')]===''){throw new db[(_0x5a9f('0x97'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x5a9f('0x94')](_0x367893[_0x5a9f('0x5b')]['to'])){throw new db[(_0x5a9f('0x97'))][(_0x5a9f('0x7a'))](_0x5a9f('0xc7'));}_0x284e5c=_0x367893[_0x5a9f('0x5b')]['to'];return db['SmsAccount']['find']({'where':{'id':_0x367893['params']['id']},'include':[{'model':db[_0x5a9f('0x9b')],'as':_0x5a9f('0xc8'),'include':[{'model':db[_0x5a9f('0x79')],'as':_0x5a9f('0x9f'),'where':{'mobile':_0x284e5c},'limit':0x1,'order':[[_0x5a9f('0x7d'),_0x5a9f('0x9c')]]}]}]})[_0x5a9f('0x22')](handleEntityNotFound(_0x373a41,null))['then'](function(_0x2af4f7){if(_0x2af4f7&&_0x2af4f7[_0x5a9f('0xc8')]){_0xb2eb6e=_0x2af4f7['get']({'plain':!![]});if(_0xb2eb6e[_0x5a9f('0xc8')]&&_0xb2eb6e[_0x5a9f('0xc8')][_0x5a9f('0x9f')][_0x5a9f('0x4a')]){return _0xb2eb6e['List']['Contacts'][0x0];}return db[_0x5a9f('0x79')][_0x5a9f('0x5a')](_[_0x5a9f('0x1c')](_0x367893['body'],{'firstName':_0x284e5c,'mobile':_0x284e5c,'phone':_0x284e5c,'ListId':_0xb2eb6e[_0x5a9f('0x80')]}));}})[_0x5a9f('0x22')](handleEntityNotFound(_0x373a41,null))[_0x5a9f('0x22')](function(_0x5b6bd9){if(_0x5b6bd9){_0x293472=_0x5b6bd9;return db[_0x5a9f('0xa1')][_0x5a9f('0x59')]({'where':{'ContactId':_0x293472['id'],'closed':![],'SmsAccountId':_0xb2eb6e['id']}})['then'](function(_0x505d4f){if(_0x505d4f){return[_0x505d4f,![]];}return db['SmsInteraction'][_0x5a9f('0x5a')]({'UserId':_0x367893['user']['id'],'ContactId':_0x293472['id'],'SmsAccountId':_0xb2eb6e['id'],'phone':_0x284e5c,'firstMsgDirection':_0x5a9f('0xc9'),'Messages':[_[_0x5a9f('0x53')](_0x367893[_0x5a9f('0x5b')],{'read':![],'body':_0x367893['body'][_0x5a9f('0x5b')],'phone':_0x284e5c,'SmsAccountId':_0xb2eb6e['id'],'UserId':_0x367893[_0x5a9f('0x5c')]['id'],'ContactId':_0x293472['id']})]},{'include':[{'model':db['SmsMessage'],'as':_0x5a9f('0xca')}]})[_0x5a9f('0x22')](function(_0x5aa947){return[_0x5aa947,!![]];});});}})[_0x5a9f('0xa2')](function(_0x1e1ebb,_0x47d0f4){if(_0x47d0f4){return _0x1e1ebb;}return db[_0x5a9f('0xcb')]['create'](_[_0x5a9f('0x53')](_0x367893[_0x5a9f('0x5b')],{'read':![],'body':_0x367893[_0x5a9f('0x5b')][_0x5a9f('0x5b')],'phone':_0x284e5c,'SmsAccountId':_0xb2eb6e['id'],'SmsInteractionId':_0x1e1ebb['id'],'UserId':_0x367893[_0x5a9f('0x5c')]['id'],'ContactId':_0x293472['id']}))[_0x5a9f('0x22')](function(_0x450924){_0x1e1ebb[_0x5a9f('0xcc')][_0x5a9f('0xca')]=[];_0x1e1ebb[_0x5a9f('0xcc')][_0x5a9f('0xca')]['push'](_0x450924[_0x5a9f('0xcc')]);return _0x1e1ebb;});})[_0x5a9f('0x22')](respondWithResult(_0x373a41,null))[_0x5a9f('0x2b')](handleError(_0x373a41,null));};exports['status']=function(_0x3357c2,_0x2db9fc,_0x5e0c75){if(_0x3357c2[_0x5a9f('0x5b')]['id']){delete _0x3357c2[_0x5a9f('0x5b')]['id'];}var _0x24601d,_0x33a79c,_0x558c0d;return db[_0x5a9f('0x3e')][_0x5a9f('0x59')]({'where':{'id':_0x3357c2[_0x5a9f('0x57')]['id']}})[_0x5a9f('0x22')](handleEntityNotFound(_0x2db9fc,null))[_0x5a9f('0x22')](function(_0x4dbac4){if(_0x4dbac4){_0x558c0d=_0x4dbac4;logger[_0x5a9f('0xcd')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x5a9f('0x2d'),_0x5a9f('0xce'),_0x4dbac4['type'],util['inspect'](_0x3357c2[_0x5a9f('0x5b')],{'showHidden':![],'depth':null}));switch(_0x4dbac4[_0x5a9f('0x51')]){case _0x5a9f('0x85'):if(_0x3357c2[_0x5a9f('0x5b')]['skebby_dispatch_id']&&_0x3357c2[_0x5a9f('0x5b')][_0x5a9f('0x2d')]){_0x33a79c=_0x3357c2[_0x5a9f('0x5b')][_0x5a9f('0x2d')];return db[_0x5a9f('0xcb')][_0x5a9f('0x59')]({'where':{'messageId':_0x3357c2[_0x5a9f('0x5b')]['skebby_dispatch_id']}});}break;case _0x5a9f('0x87'):if(_0x3357c2[_0x5a9f('0x5b')][_0x5a9f('0xcf')]&&_0x3357c2[_0x5a9f('0x5b')][_0x5a9f('0xd0')]){_0x33a79c=_0x3357c2[_0x5a9f('0x5b')][_0x5a9f('0xd0')];return db['SmsMessage']['find']({'where':{'messageId':_0x3357c2[_0x5a9f('0x5b')][_0x5a9f('0xcf')]}});}break;case _0x5a9f('0xd1'):if(_0x3357c2[_0x5a9f('0x5b')]['message_id']&&_0x3357c2[_0x5a9f('0x5b')][_0x5a9f('0xd2')]){_0x33a79c=_0x3357c2['body'][_0x5a9f('0xd2')];return db['SmsMessage'][_0x5a9f('0x59')]({'where':{'messageId':_0x3357c2[_0x5a9f('0x5b')][_0x5a9f('0x89')]}});}break;case _0x5a9f('0x8c'):var _0x49a2f6=_0x3357c2[_0x5a9f('0x5b')]['results'][0x0];if(_0x49a2f6[_0x5a9f('0x84')]&&_0x49a2f6['status'][_0x5a9f('0xd3')]===_0x5a9f('0xd4')){_0x33a79c=_0x49a2f6[_0x5a9f('0x2d')][_0x5a9f('0xd3')];return db[_0x5a9f('0xcb')]['find']({'where':{'messageId':_0x49a2f6[_0x5a9f('0x84')]}});}break;case _0x5a9f('0x90'):if(_0x3357c2[_0x5a9f('0x5b')]['messageId']&&_0x3357c2['body'][_0x5a9f('0x2d')]){_0x33a79c=_0x3357c2[_0x5a9f('0x5b')][_0x5a9f('0x2d')];return db[_0x5a9f('0xcb')][_0x5a9f('0x59')]({'where':{'messageId':_0x3357c2[_0x5a9f('0x5b')][_0x5a9f('0x84')]}});}break;case _0x5a9f('0xd5'):if(_0x3357c2[_0x5a9f('0x5b')][0x0][_0x5a9f('0x29')]['id']){_0x33a79c=_0x3357c2[_0x5a9f('0x5b')][0x0][_0x5a9f('0x51')];return db[_0x5a9f('0xcb')][_0x5a9f('0x59')]({'where':{'messageId':_0x3357c2[_0x5a9f('0x5b')][0x0]['message']['id']}});}break;case _0x5a9f('0xd6'):if(_0x3357c2[_0x5a9f('0x5b')][_0x5a9f('0xd7')]&&_0x3357c2['body']['status']){_0x33a79c=_0x3357c2[_0x5a9f('0x5b')][_0x5a9f('0x2d')];return db['SmsMessage'][_0x5a9f('0x59')]({'where':{'messageId':_0x3357c2[_0x5a9f('0x5b')][_0x5a9f('0xd7')]}});}break;}}})['then'](handleEntityNotFound(_0x2db9fc,null))[_0x5a9f('0x22')](function(_0x5b0685){if(_0x5b0685){_0x24601d=_0x5b0685;switch(_0x558c0d[_0x5a9f('0x51')]){case _0x5a9f('0x85'):if(_0x33a79c===_0x5a9f('0xd4')){return _0x24601d[_0x5a9f('0xd8')]({'read':!![]});}else{logger[_0x5a9f('0x27')](_0x5a9f('0xd9'),_0x5a9f('0x2d'),'skebby',util['inspect'](_0x3357c2[_0x5a9f('0x5b')],{'showHidden':![],'depth':null}));}break;case _0x5a9f('0x87'):if(_0x33a79c==='1'){return _0x24601d[_0x5a9f('0xd8')]({'read':!![]});}else{logger[_0x5a9f('0x27')](_0x5a9f('0xd9'),'status',_0x5a9f('0x85'),util[_0x5a9f('0xda')](_0x3357c2[_0x5a9f('0x5b')],{'showHidden':![],'depth':null}));}break;case _0x5a9f('0xd1'):if(!_0x3357c2[_0x5a9f('0x5b')][_0x5a9f('0xdb')]&&_0x33a79c>=0xc8&&_0x33a79c<=0xce){return _0x24601d[_0x5a9f('0xd8')]({'read':!![]});}else{logger[_0x5a9f('0x27')](_0x5a9f('0xd9'),'status',_0x5a9f('0xd1'),util[_0x5a9f('0xda')](_0x3357c2['body'],{'showHidden':![],'depth':null}));}break;case _0x5a9f('0x8c'):var _0x5ea2b0=_0x3357c2[_0x5a9f('0x5b')][_0x5a9f('0x8d')][0x0];if(_0x5ea2b0[_0x5a9f('0x2d')][_0x5a9f('0xd3')]==='DELIVERED'){return _0x24601d[_0x5a9f('0xd8')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x5a9f('0x2d'),'infobip',util[_0x5a9f('0xda')](_0x3357c2[_0x5a9f('0x5b')],{'showHidden':![],'depth':null}));}break;case _0x5a9f('0x90'):if(_0x33a79c==_0x5a9f('0xdc')||_0x33a79c=='RECEIVED_BY_RECIPIENT'){return _0x24601d[_0x5a9f('0xd8')]({'read':!![]});}else{logger[_0x5a9f('0x27')](_0x5a9f('0xd9'),_0x5a9f('0x2d'),_0x5a9f('0x90'),util['inspect'](_0x3357c2[_0x5a9f('0x5b')],{'showHidden':![],'depth':null}));}break;case _0x5a9f('0xd5'):if(_0x33a79c==_0x5a9f('0xdd')){return _0x24601d[_0x5a9f('0xd8')]({'read':!![]});}else{logger['error'](_0x5a9f('0xd9'),_0x5a9f('0x2d'),_0x5a9f('0xd5'),util['inspect'](_0x3357c2[_0x5a9f('0x5b')],{'showHidden':![],'depth':null}));}break;case _0x5a9f('0xd6'):if(_0x33a79c==='DELIVRD'||_0x33a79c===_0x5a9f('0xde')){return _0x24601d[_0x5a9f('0xd8')]({'read':!![]});}else{logger[_0x5a9f('0x27')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x5a9f('0x2d'),_0x5a9f('0xd6'),util[_0x5a9f('0xda')](_0x3357c2[_0x5a9f('0x5b')],{'showHidden':![],'depth':null}));}break;}return _0x24601d;}})['then'](respondWithResult(_0x2db9fc,null))[_0x5a9f('0x2b')](handleError(_0x2db9fc,null));};exports[_0x5a9f('0xdf')]=function(_0x39bbb8,_0x39a261,_0x31dc88){var _0x226cf6,_0x51c547,_0x5b4921;return db[_0x5a9f('0x3e')][_0x5a9f('0x59')]({'where':{'id':_0x39bbb8[_0x5a9f('0x57')]['id']}})['then'](handleEntityNotFound(_0x39a261,null))['then'](function(_0x31b01b){if(_0x31b01b){_0x5b4921=_0x31b01b;logger[_0x5a9f('0xcd')](_0x5a9f('0xd9'),_0x5a9f('0x2d'),_0x5a9f('0xce'),_0x31b01b['type'],util['inspect'](_0x39bbb8['query'],{'showHidden':![],'depth':null}));switch(_0x31b01b[_0x5a9f('0x51')]){case _0x5a9f('0xe0'):if(_0x39bbb8[_0x5a9f('0x44')][_0x5a9f('0xe1')]&&_0x39bbb8['query'][_0x5a9f('0xe2')]){_0x51c547=_0x39bbb8[_0x5a9f('0x44')][_0x5a9f('0xe2')];return db[_0x5a9f('0xcb')][_0x5a9f('0x59')]({'where':{'messageId':_0x39bbb8[_0x5a9f('0x44')][_0x5a9f('0xe1')]}});}break;}}})[_0x5a9f('0x22')](handleEntityNotFound(_0x39a261,null))[_0x5a9f('0x22')](function(_0x13924d){if(_0x13924d){_0x226cf6=_0x13924d;switch(_0x5b4921[_0x5a9f('0x51')]){case _0x5a9f('0xe0'):if(_0x51c547==='2'||_0x51c547==='6'){return _0x226cf6['update']({'read':!![]});}else{logger[_0x5a9f('0x27')](_0x5a9f('0xd9'),_0x5a9f('0x2d'),_0x5a9f('0xe0'),util[_0x5a9f('0xda')](_0x39bbb8[_0x5a9f('0x44')],{'showHidden':![],'depth':null}));};break;}return _0x226cf6;}})[_0x5a9f('0x22')](respondWithResult(_0x39a261,null))[_0x5a9f('0x2b')](handleError(_0x39a261,null));};exports[_0x5a9f('0xe3')]=function(_0x2fc2f7,_0x2d43a7,_0x11e60c){return db[_0x5a9f('0x3e')][_0x5a9f('0x59')]({'where':{'id':_0x2fc2f7[_0x5a9f('0x57')]['id']}})[_0x5a9f('0x22')](handleEntityNotFound(_0x2d43a7,null))[_0x5a9f('0x22')](function(_0x3a5d64){if(_0x3a5d64){return _0x3a5d64['addAgents'](_0x2fc2f7[_0x5a9f('0x5b')][_0x5a9f('0x6b')],_[_0x5a9f('0x9e')](_0x2fc2f7[_0x5a9f('0x5b')],[_0x5a9f('0x6b'),'id'])||{})[_0x5a9f('0xa2')](function(_0x4519ee){for(var _0x31b5f3=0x0;_0x31b5f3<_0x2fc2f7['body'][_0x5a9f('0x6b')][_0x5a9f('0x4a')];_0x31b5f3+=0x1){socket[_0x5a9f('0xe4')]('userSmsAccount:save',{'UserId':Number(_0x2fc2f7['body'][_0x5a9f('0x6b')][_0x31b5f3]),'SmsAccountId':Number(_0x2fc2f7['params']['id'])});}return _0x4519ee;});}})[_0x5a9f('0x22')](respondWithResult(_0x2d43a7,null))[_0x5a9f('0x2b')](handleError(_0x2d43a7,null));};exports[_0x5a9f('0xe5')]=function(_0x5254f4,_0x48df8e,_0x5378b2){return db[_0x5a9f('0x3e')]['find']({'where':{'id':_0x5254f4[_0x5a9f('0x57')]['id']}})[_0x5a9f('0x22')](handleEntityNotFound(_0x48df8e,null))[_0x5a9f('0x22')](function(_0x5cc1ed){if(_0x5cc1ed){return _0x5cc1ed[_0x5a9f('0xe5')](_0x5254f4[_0x5a9f('0x44')][_0x5a9f('0x6b')])[_0x5a9f('0x22')](function(){if(_[_0x5a9f('0xe6')](_0x5254f4['query'][_0x5a9f('0x6b')])){for(var _0x2f2ff3=0x0;_0x2f2ff3<_0x5254f4[_0x5a9f('0x44')]['ids']['length'];_0x2f2ff3+=0x1){socket['emit']('userSmsAccount:remove',{'UserId':Number(_0x5254f4[_0x5a9f('0x44')][_0x5a9f('0x6b')][_0x2f2ff3]),'SmsAccountId':Number(_0x5254f4[_0x5a9f('0x57')]['id'])});}}else{socket[_0x5a9f('0xe4')]('userSmsAccount:remove',{'UserId':Number(_0x5254f4[_0x5a9f('0x44')][_0x5a9f('0x6b')]),'SmsAccountId':Number(_0x5254f4[_0x5a9f('0x57')]['id'])});}});}})['then'](respondWithStatusCode(_0x48df8e,null))[_0x5a9f('0x2b')](handleError(_0x48df8e,null));};exports[_0x5a9f('0xe7')]=function(_0x209191,_0x16a3d0,_0x484a4f){var _0x2b5e9b={};var _0x12a3e4={};var _0x1ceeae;var _0x467720;return db[_0x5a9f('0x3e')]['findOne']({'where':{'id':_0x209191[_0x5a9f('0x57')]['id']}})[_0x5a9f('0x22')](handleEntityNotFound(_0x16a3d0,null))['then'](function(_0x1a789e){if(_0x1a789e){_0x1ceeae=_0x1a789e;_0x12a3e4[_0x5a9f('0x42')]=_[_0x5a9f('0x45')](db[_0x5a9f('0xaa')]['rawAttributes']);_0x12a3e4[_0x5a9f('0x44')]=_[_0x5a9f('0x45')](_0x209191[_0x5a9f('0x44')]);_0x12a3e4[_0x5a9f('0x46')]=_[_0x5a9f('0x47')](_0x12a3e4[_0x5a9f('0x42')],_0x12a3e4[_0x5a9f('0x44')]);_0x2b5e9b[_0x5a9f('0x48')]=_[_0x5a9f('0x47')](_0x12a3e4[_0x5a9f('0x42')],qs[_0x5a9f('0x49')](_0x209191[_0x5a9f('0x44')]['fields']));_0x2b5e9b[_0x5a9f('0x48')]=_0x2b5e9b[_0x5a9f('0x48')][_0x5a9f('0x4a')]?_0x2b5e9b['attributes']:_0x12a3e4[_0x5a9f('0x42')];_0x2b5e9b['order']=qs[_0x5a9f('0x4d')](_0x209191[_0x5a9f('0x44')]['sort']);_0x2b5e9b['where']=qs[_0x5a9f('0x46')](_[_0x5a9f('0x4f')](_0x209191[_0x5a9f('0x44')],_0x12a3e4['filters']));if(_0x209191['query'][_0x5a9f('0x50')]){_0x2b5e9b[_0x5a9f('0x4e')]=_[_0x5a9f('0x53')](_0x2b5e9b[_0x5a9f('0x4e')],{'$or':_[_0x5a9f('0x43')](_0x2b5e9b[_0x5a9f('0x48')],function(_0x3d3f75){var _0x397b45={};_0x397b45[_0x3d3f75]={'$like':'%'+_0x209191[_0x5a9f('0x44')][_0x5a9f('0x50')]+'%'};return _0x397b45;})});}_0x2b5e9b=_[_0x5a9f('0x53')]({},_0x2b5e9b,_0x209191[_0x5a9f('0x54')]);return _0x1ceeae[_0x5a9f('0xe7')](_0x2b5e9b);}})[_0x5a9f('0x22')](function(_0x44de42){if(_0x44de42){_0x467720=_0x44de42['length'];if(!_0x209191[_0x5a9f('0x44')][_0x5a9f('0x68')](_0x5a9f('0x4b'))){_0x2b5e9b[_0x5a9f('0x30')]=qs[_0x5a9f('0x30')](_0x209191[_0x5a9f('0x44')]['limit']);_0x2b5e9b[_0x5a9f('0x32')]=qs[_0x5a9f('0x32')](_0x209191[_0x5a9f('0x44')][_0x5a9f('0x32')]);}return _0x1ceeae[_0x5a9f('0xe7')](_0x2b5e9b);}})[_0x5a9f('0x22')](function(_0x59b616){if(_0x59b616){return _0x59b616?{'count':_0x467720,'rows':_0x59b616}:null;}})[_0x5a9f('0x22')](respondWithResult(_0x16a3d0,null))[_0x5a9f('0x2b')](handleError(_0x16a3d0,null));};
\ No newline at end of file
index 4a70917..ef15524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b4d=['remove','emit','hook','exports','events','SmsAccount','setMaxListeners','save','update'];(function(_0x19aa77,_0x1e5564){var _0x2e6935=function(_0x5e840c){while(--_0x5e840c){_0x19aa77['push'](_0x19aa77['shift']());}};_0x2e6935(++_0x1e5564);}(_0x5b4d,0x8b));var _0xd5b4=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x5b4d[_0x501510];return _0x1e6ee5;};'use strict';var EventEmitter=require(_0xd5b4('0x0'));var SmsAccount=require('../../mysqldb')['db'][_0xd5b4('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xd5b4('0x2')](0x0);var events={'afterCreate':_0xd5b4('0x3'),'afterUpdate':_0xd5b4('0x4'),'afterDestroy':_0xd5b4('0x5')};function emitEvent(_0x562c3f){return function(_0x193a3c,_0x218f9b,_0x22cd53){SmsAccountEvents[_0xd5b4('0x6')](_0x562c3f+':'+_0x193a3c['id'],_0x193a3c);SmsAccountEvents[_0xd5b4('0x6')](_0x562c3f,_0x193a3c);_0x22cd53(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsAccount[_0xd5b4('0x7')](e,emitEvent(event));}}module[_0xd5b4('0x8')]=SmsAccountEvents;
\ No newline at end of file
+var _0xd7d7=['../../mysqldb','SmsAccount','update','emit','events'];(function(_0x35e57e,_0x383e9b){var _0x2a6e43=function(_0x5921cb){while(--_0x5921cb){_0x35e57e['push'](_0x35e57e['shift']());}};_0x2a6e43(++_0x383e9b);}(_0xd7d7,0x12b));var _0x7d7d=function(_0x20d2c9,_0x11b955){_0x20d2c9=_0x20d2c9-0x0;var _0x4ed0a9=_0xd7d7[_0x20d2c9];return _0x4ed0a9;};'use strict';var EventEmitter=require(_0x7d7d('0x0'));var SmsAccount=require(_0x7d7d('0x1'))['db'][_0x7d7d('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x7d7d('0x3'),'afterDestroy':'remove'};function emitEvent(_0x5c3cc3){return function(_0x39a1f1,_0x28c3fb,_0x2329ec){SmsAccountEvents[_0x7d7d('0x4')](_0x5c3cc3+':'+_0x39a1f1['id'],_0x39a1f1);SmsAccountEvents[_0x7d7d('0x4')](_0x5c3cc3,_0x39a1f1);_0x2329ec(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module['exports']=SmsAccountEvents;
\ No newline at end of file
index 1c72062..7f7fd4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20b2=['bluebird','request-promise','path','../../config/environment','./smsAccount.attributes','exports','define','sms_accounts','lodash','../../config/logger','api','moment'];(function(_0x495b3d,_0x4d3da4){var _0x4cb329=function(_0xdef9f0){while(--_0xdef9f0){_0x495b3d['push'](_0x495b3d['shift']());}};_0x4cb329(++_0x4d3da4);}(_0x20b2,0x1b8));var _0x220b=function(_0x380674,_0x5db9c6){_0x380674=_0x380674-0x0;var _0x1df39c=_0x20b2[_0x380674];return _0x1df39c;};'use strict';var _=require(_0x220b('0x0'));var util=require('util');var logger=require(_0x220b('0x1'))(_0x220b('0x2'));var moment=require(_0x220b('0x3'));var BPromise=require(_0x220b('0x4'));var rp=require(_0x220b('0x5'));var fs=require('fs');var path=require(_0x220b('0x6'));var rimraf=require('rimraf');var config=require(_0x220b('0x7'));var attributes=require(_0x220b('0x8'));module[_0x220b('0x9')]=function(_0x298da9,_0x1066b3){return _0x298da9[_0x220b('0xa')]('SmsAccount',attributes,{'tableName':_0x220b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4797=['./smsAccount.attributes','exports','define','lodash','util','../../config/logger','bluebird','request-promise','path','../../config/environment'];(function(_0x201d31,_0x53edf7){var _0x1b0841=function(_0x1fa1a2){while(--_0x1fa1a2){_0x201d31['push'](_0x201d31['shift']());}};_0x1b0841(++_0x53edf7);}(_0x4797,0x143));var _0x7479=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4797[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x7479('0x0'));var util=require(_0x7479('0x1'));var logger=require(_0x7479('0x2'))('api');var moment=require('moment');var BPromise=require(_0x7479('0x3'));var rp=require(_0x7479('0x4'));var fs=require('fs');var path=require(_0x7479('0x5'));var rimraf=require('rimraf');var config=require(_0x7479('0x6'));var attributes=require(_0x7479('0x7'));module[_0x7479('0x8')]=function(_0x3f28d1,_0x5195e2){return _0x3f28d1[_0x7479('0x9')]('SmsAccount',attributes,{'tableName':'sms_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 16616e9..5648dca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e7d=['model','ShowSmsAccount','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','SmsAccount','options','raw','where','attributes','include','map'];(function(_0x43a9fe,_0x5ec1f9){var _0x36de45=function(_0x5b63c0){while(--_0x5b63c0){_0x43a9fe['push'](_0x43a9fe['shift']());}};_0x36de45(++_0x5ec1f9);}(_0x9e7d,0x150));var _0xd9e7=function(_0x27d11f,_0x2c59a8){_0x27d11f=_0x27d11f-0x0;var _0x36c1a5=_0x9e7d[_0x27d11f];return _0x36c1a5;};'use strict';var _=require(_0xd9e7('0x0'));var util=require(_0xd9e7('0x1'));var moment=require(_0xd9e7('0x2'));var BPromise=require(_0xd9e7('0x3'));var rs=require(_0xd9e7('0x4'));var fs=require('fs');var Redis=require(_0xd9e7('0x5'));var db=require(_0xd9e7('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xd9e7('0x7'))('rpc');var config=require(_0xd9e7('0x8'));var jayson=require(_0xd9e7('0x9'));var client=jayson[_0xd9e7('0xa')][_0xd9e7('0xb')]({'port':0x232a});config[_0xd9e7('0xc')]=_[_0xd9e7('0xd')](config['redis'],{'host':_0xd9e7('0xe'),'port':0x18eb});var socket=require(_0xd9e7('0xf'))(new Redis(config[_0xd9e7('0xc')]));require('./smsAccount.socket')[_0xd9e7('0x10')](socket);function respondWithRpcPromise(_0x372041,_0x1f7623,_0x2592ce){return new BPromise(function(_0x37a637,_0x356d80){return client[_0xd9e7('0x11')](_0x372041,_0x2592ce)[_0xd9e7('0x12')](function(_0x231ad8){logger['info'](_0xd9e7('0x13'),_0x1f7623,_0xd9e7('0x14'));logger[_0xd9e7('0x15')](_0xd9e7('0x16'),_0x1f7623,_0xd9e7('0x14'),JSON['stringify'](_0x231ad8));if(_0x231ad8[_0xd9e7('0x17')]){if(_0x231ad8[_0xd9e7('0x17')][_0xd9e7('0x18')]===0x1f4){logger[_0xd9e7('0x17')]('SmsAccount,\x20%s,\x20%s',_0x1f7623,_0x231ad8['error'][_0xd9e7('0x19')]);return _0x356d80(_0x231ad8[_0xd9e7('0x17')][_0xd9e7('0x19')]);}logger[_0xd9e7('0x17')]('SmsAccount,\x20%s,\x20%s',_0x1f7623,_0x231ad8[_0xd9e7('0x17')][_0xd9e7('0x19')]);return _0x37a637(_0x231ad8[_0xd9e7('0x17')][_0xd9e7('0x19')]);}else{logger['info'](_0xd9e7('0x13'),_0x1f7623,_0xd9e7('0x14'));_0x37a637(_0x231ad8[_0xd9e7('0x1a')][_0xd9e7('0x19')]);}})['catch'](function(_0x47569e){logger[_0xd9e7('0x17')](_0xd9e7('0x13'),_0x1f7623,_0x47569e);_0x356d80(_0x47569e);});});}exports['ShowSmsAccount']=function(_0x44b595){var _0x2306c1=this;return new Promise(function(_0x530fd0,_0x2a04dc){return db[_0xd9e7('0x1b')]['find']({'raw':_0x44b595[_0xd9e7('0x1c')]?_0x44b595[_0xd9e7('0x1c')][_0xd9e7('0x1d')]===undefined?!![]:![]:!![],'where':_0x44b595[_0xd9e7('0x1c')]?_0x44b595[_0xd9e7('0x1c')][_0xd9e7('0x1e')]||null:null,'attributes':_0x44b595['options']?_0x44b595[_0xd9e7('0x1c')][_0xd9e7('0x1f')]||null:null,'include':_0x44b595[_0xd9e7('0x1c')]?_0x44b595[_0xd9e7('0x1c')][_0xd9e7('0x20')]?_[_0xd9e7('0x21')](_0x44b595[_0xd9e7('0x1c')][_0xd9e7('0x20')],function(_0xe6fbac){return{'model':db[_0xe6fbac[_0xd9e7('0x22')]],'as':_0xe6fbac['as'],'attributes':_0xe6fbac[_0xd9e7('0x1f')],'include':_0xe6fbac[_0xd9e7('0x20')]?_[_0xd9e7('0x21')](_0xe6fbac[_0xd9e7('0x20')],function(_0x19039a){return{'model':db[_0x19039a[_0xd9e7('0x22')]],'as':_0x19039a['as'],'attributes':_0x19039a['attributes'],'include':_0x19039a[_0xd9e7('0x20')]?_[_0xd9e7('0x21')](_0x19039a[_0xd9e7('0x20')],function(_0x58f47b){return{'model':db[_0x58f47b[_0xd9e7('0x22')]],'as':_0x58f47b['as'],'attributes':_0x58f47b['attributes']};}):[]};}):[]};}):[]:[]})[_0xd9e7('0x12')](function(_0x41f800){logger['info']('ShowSmsAccount',_0x44b595);logger['debug'](_0xd9e7('0x23'),_0x44b595,JSON[_0xd9e7('0x24')](_0x41f800));_0x530fd0(_0x41f800);})['catch'](function(_0x5e5342){logger[_0xd9e7('0x17')]('ShowSmsAccount',_0x5e5342[_0xd9e7('0x19')],_0x44b595);_0x2a04dc(_0x2306c1[_0xd9e7('0x17')](0x1f4,_0x5e5342[_0xd9e7('0x19')]));});});};
\ No newline at end of file
+var _0xe9b5=['error','code','message','result','catch','ShowSmsAccount','SmsAccount','find','options','where','attributes','include','map','model','stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','redis','localhost','socket.io-emitter','./smsAccount.socket','register','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s'];(function(_0x264fec,_0x5b0403){var _0x3c59ee=function(_0x162f80){while(--_0x162f80){_0x264fec['push'](_0x264fec['shift']());}};_0x3c59ee(++_0x5b0403);}(_0xe9b5,0xcd));var _0x5e9b=function(_0x17a9ce,_0x13b1a6){_0x17a9ce=_0x17a9ce-0x0;var _0x3dccc7=_0xe9b5[_0x17a9ce];return _0x3dccc7;};'use strict';var _=require(_0x5e9b('0x0'));var util=require(_0x5e9b('0x1'));var moment=require(_0x5e9b('0x2'));var BPromise=require('bluebird');var rs=require(_0x5e9b('0x3'));var fs=require('fs');var Redis=require(_0x5e9b('0x4'));var db=require(_0x5e9b('0x5'))['db'];var utils=require(_0x5e9b('0x6'));var logger=require(_0x5e9b('0x7'))('rpc');var config=require(_0x5e9b('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x5e9b('0x9')][_0x5e9b('0xa')]({'port':0x232a});config[_0x5e9b('0xb')]=_['defaults'](config[_0x5e9b('0xb')],{'host':_0x5e9b('0xc'),'port':0x18eb});var socket=require(_0x5e9b('0xd'))(new Redis(config[_0x5e9b('0xb')]));require(_0x5e9b('0xe'))[_0x5e9b('0xf')](socket);function respondWithRpcPromise(_0x2f9672,_0x2e3577,_0x57cf23){return new BPromise(function(_0x441fe0,_0x4af9b1){return client[_0x5e9b('0x10')](_0x2f9672,_0x57cf23)[_0x5e9b('0x11')](function(_0x21b147){logger[_0x5e9b('0x12')](_0x5e9b('0x13'),_0x2e3577,_0x5e9b('0x14'));logger[_0x5e9b('0x15')](_0x5e9b('0x16'),_0x2e3577,_0x5e9b('0x14'),JSON['stringify'](_0x21b147));if(_0x21b147[_0x5e9b('0x17')]){if(_0x21b147[_0x5e9b('0x17')][_0x5e9b('0x18')]===0x1f4){logger[_0x5e9b('0x17')](_0x5e9b('0x13'),_0x2e3577,_0x21b147[_0x5e9b('0x17')]['message']);return _0x4af9b1(_0x21b147[_0x5e9b('0x17')]['message']);}logger['error']('SmsAccount,\x20%s,\x20%s',_0x2e3577,_0x21b147[_0x5e9b('0x17')][_0x5e9b('0x19')]);return _0x441fe0(_0x21b147[_0x5e9b('0x17')][_0x5e9b('0x19')]);}else{logger[_0x5e9b('0x12')]('SmsAccount,\x20%s,\x20%s',_0x2e3577,_0x5e9b('0x14'));_0x441fe0(_0x21b147[_0x5e9b('0x1a')]['message']);}})[_0x5e9b('0x1b')](function(_0x3fc8e6){logger['error']('SmsAccount,\x20%s,\x20%s',_0x2e3577,_0x3fc8e6);_0x4af9b1(_0x3fc8e6);});});}exports[_0x5e9b('0x1c')]=function(_0xa2088a){var _0x27718d=this;return new Promise(function(_0x46b874,_0x54eb3a){return db[_0x5e9b('0x1d')][_0x5e9b('0x1e')]({'raw':_0xa2088a[_0x5e9b('0x1f')]?_0xa2088a[_0x5e9b('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0xa2088a['options']?_0xa2088a[_0x5e9b('0x1f')][_0x5e9b('0x20')]||null:null,'attributes':_0xa2088a[_0x5e9b('0x1f')]?_0xa2088a['options'][_0x5e9b('0x21')]||null:null,'include':_0xa2088a[_0x5e9b('0x1f')]?_0xa2088a[_0x5e9b('0x1f')][_0x5e9b('0x22')]?_[_0x5e9b('0x23')](_0xa2088a['options'][_0x5e9b('0x22')],function(_0x1fa7f9){return{'model':db[_0x1fa7f9[_0x5e9b('0x24')]],'as':_0x1fa7f9['as'],'attributes':_0x1fa7f9[_0x5e9b('0x21')],'include':_0x1fa7f9[_0x5e9b('0x22')]?_[_0x5e9b('0x23')](_0x1fa7f9['include'],function(_0x4b8990){return{'model':db[_0x4b8990[_0x5e9b('0x24')]],'as':_0x4b8990['as'],'attributes':_0x4b8990['attributes'],'include':_0x4b8990[_0x5e9b('0x22')]?_[_0x5e9b('0x23')](_0x4b8990[_0x5e9b('0x22')],function(_0x264ab5){return{'model':db[_0x264ab5['model']],'as':_0x264ab5['as'],'attributes':_0x264ab5[_0x5e9b('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x444b80){logger[_0x5e9b('0x12')]('ShowSmsAccount',_0xa2088a);logger[_0x5e9b('0x15')](_0x5e9b('0x1c'),_0xa2088a,JSON[_0x5e9b('0x25')](_0x444b80));_0x46b874(_0x444b80);})[_0x5e9b('0x1b')](function(_0x126255){logger[_0x5e9b('0x17')](_0x5e9b('0x1c'),_0x126255[_0x5e9b('0x19')],_0xa2088a);_0x54eb3a(_0x27718d[_0x5e9b('0x17')](0x1f4,_0x126255[_0x5e9b('0x19')]));});});};
\ No newline at end of file
index 333dbc7..7c23075 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(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xa9e0,0x123));var _0x0a9e=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xa9e0[_0x56482c];return _0x5aae7a;};'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(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'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 a16e134..e488a35 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(_0x511be7,_0x1a8aa5){var _0x41e57d=function(_0x1487a4){while(--_0x1487a4){_0x511be7['push'](_0x511be7['shift']());}};_0x41e57d(++_0x1a8aa5);}(_0xedd9,0xfc));var _0x9edd=function(_0x4741df,_0x1a9ba2){_0x4741df=_0x4741df-0x0;var _0xecfcaf=_0xedd9[_0x4741df];return _0xecfcaf;};'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 _0xe14b=['/:id','create','put','exports','multer','util','express','Router','../../components/auth/service','./smsApplication.controller','get','isAuthenticated','index'];(function(_0x2c02e1,_0x8d9fa6){var _0x4a7bfc=function(_0x475775){while(--_0x475775){_0x2c02e1['push'](_0x2c02e1['shift']());}};_0x4a7bfc(++_0x8d9fa6);}(_0xe14b,0x93));var _0xbe14=function(_0x513c79,_0x446006){_0x513c79=_0x513c79-0x0;var _0x221f87=_0xe14b[_0x513c79];return _0x221f87;};'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['post']('/',auth['isAuthenticated'](),controller[_0xbe14('0xa')]);router[_0xbe14('0xb')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['update']);router['delete'](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['destroy']);module[_0xbe14('0xc')]=router;
\ No newline at end of file
index d1b9768..6a99a05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2be1=['INTEGER','TEXT','STRING','*,*,*,*','sequelize','exports'];(function(_0x3cf50d,_0x33fe9b){var _0x139d7b=function(_0x4d1de3){while(--_0x4d1de3){_0x3cf50d['push'](_0x3cf50d['shift']());}};_0x139d7b(++_0x33fe9b);}(_0x2be1,0x196));var _0x12be=function(_0x4ae625,_0xf396d0){_0x4ae625=_0x4ae625-0x0;var _0x31accf=_0x2be1[_0x4ae625];return _0x31accf;};'use strict';var Sequelize=require(_0x12be('0x0'));module[_0x12be('0x1')]={'priority':{'type':Sequelize[_0x12be('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x12be('0x3')]()},'description':{'type':Sequelize[_0x12be('0x4')]},'interval':{'type':Sequelize[_0x12be('0x4')],'defaultValue':_0x12be('0x5')}};
\ No newline at end of file
+var _0x886b=['noop','TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x20abcc,_0x248eed){var _0x372025=function(_0x482ea1){while(--_0x482ea1){_0x20abcc['push'](_0x20abcc['shift']());}};_0x372025(++_0x248eed);}(_0x886b,0x1df));var _0xb886=function(_0x11cebf,_0x2faace){_0x11cebf=_0x11cebf-0x0;var _0x220dc1=_0x886b[_0x11cebf];return _0x220dc1;};'use strict';var Sequelize=require(_0xb886('0x0'));module[_0xb886('0x1')]={'priority':{'type':Sequelize[_0xb886('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xb886('0x3')],'allowNull':![],'defaultValue':_0xb886('0x4')},'appdata':{'type':Sequelize[_0xb886('0x5')]()},'description':{'type':Sequelize[_0xb886('0x3')]},'interval':{'type':Sequelize[_0xb886('0x3')],'defaultValue':_0xb886('0x6')}};
\ No newline at end of file
index bb14436..420c51d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f72=['rows','keys','options','find','catch','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','json','offset','undefined','count','status','Content-Range','apply','save','update','destroy','then','end','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','limit','sort','where','pick','merge','SmsApplication','includeAll','include'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6f72,0x1e3));var _0x26f7=function(_0x4f1afe,_0x29a790){_0x4f1afe=_0x4f1afe-0x0;var _0x552767=_0x6f72[_0x4f1afe];return _0x552767;};'use strict';var emlformat=require(_0x26f7('0x0'));var rimraf=require(_0x26f7('0x1'));var zipdir=require(_0x26f7('0x2'));var jsonpatch=require(_0x26f7('0x3'));var rp=require(_0x26f7('0x4'));var moment=require(_0x26f7('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x26f7('0x6'));var path=require(_0x26f7('0x7'));var sox=require(_0x26f7('0x8'));var csv=require(_0x26f7('0x9'));var ejs=require(_0x26f7('0xa'));var fs=require('fs');var fs_extra=require(_0x26f7('0xb'));var _=require(_0x26f7('0xc'));var squel=require('squel');var crypto=require(_0x26f7('0xd'));var jsforce=require(_0x26f7('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x26f7('0x9'));var querystring=require('querystring');var Papa=require(_0x26f7('0xf'));var Redis=require(_0x26f7('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x26f7('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x26f7('0x12'))(_0x26f7('0x13'));var utils=require(_0x26f7('0x14'));var config=require(_0x26f7('0x15'));var licenseUtil=require(_0x26f7('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3031f8,_0x58b014){_0x58b014=_0x58b014||0xcc;return function(_0x57a48a){if(_0x57a48a){return _0x3031f8[_0x26f7('0x17')](_0x58b014);}return _0x3031f8['status'](_0x58b014)['end']();};}function respondWithResult(_0xefcee8,_0x2a0fec){_0x2a0fec=_0x2a0fec||0xc8;return function(_0x2ea35d){if(_0x2ea35d){return _0xefcee8['status'](_0x2a0fec)[_0x26f7('0x18')](_0x2ea35d);}};}function respondWithFilteredResult(_0x39195a,_0x1a9312){return function(_0xa3b2a5){if(_0xa3b2a5){var _0x58bb31=typeof _0x1a9312[_0x26f7('0x19')]===_0x26f7('0x1a')&&typeof _0x1a9312['limit']===_0x26f7('0x1a');var _0x40c63c=_0xa3b2a5[_0x26f7('0x1b')];var _0x2002a3=_0x58bb31?0x0:_0x1a9312['offset'];var _0x43cd74=_0x58bb31?_0xa3b2a5[_0x26f7('0x1b')]:_0x1a9312['offset']+_0x1a9312['limit'];var _0x4e2acf;if(_0x43cd74>=_0x40c63c){_0x43cd74=_0x40c63c;_0x4e2acf=0xc8;}else{_0x4e2acf=0xce;}_0x39195a[_0x26f7('0x1c')](_0x4e2acf);return _0x39195a['set'](_0x26f7('0x1d'),_0x2002a3+'-'+_0x43cd74+'/'+_0x40c63c)['json'](_0xa3b2a5);}return null;};}function patchUpdates(_0x594a19){return function(_0x43057c){try{jsonpatch[_0x26f7('0x1e')](_0x43057c,_0x594a19,!![]);}catch(_0x61da38){return BPromise['reject'](_0x61da38);}return _0x43057c[_0x26f7('0x1f')]();};}function saveUpdates(_0x2db4d6,_0x175555){return function(_0x7cac71){if(_0x7cac71){return _0x7cac71[_0x26f7('0x20')](_0x2db4d6)['then'](function(_0x37009d){return _0x37009d;});}return null;};}function removeEntity(_0x5974d7,_0x158f04){return function(_0x2dc3b7){if(_0x2dc3b7){return _0x2dc3b7[_0x26f7('0x21')]()[_0x26f7('0x22')](function(){_0x5974d7[_0x26f7('0x1c')](0xcc)[_0x26f7('0x23')]();});}};}function handleEntityNotFound(_0x1747ca,_0x17c0f9){return function(_0x31fc3a){if(!_0x31fc3a){_0x1747ca[_0x26f7('0x17')](0x194);}return _0x31fc3a;};}function handleError(_0x2a737c,_0x1409c5){_0x1409c5=_0x1409c5||0x1f4;return function(_0x2c4d28){logger[_0x26f7('0x24')](_0x2c4d28['stack']);if(_0x2c4d28[_0x26f7('0x25')]){delete _0x2c4d28['name'];}_0x2a737c[_0x26f7('0x1c')](_0x1409c5)[_0x26f7('0x26')](_0x2c4d28);};}exports[_0x26f7('0x27')]=function(_0x4c2504,_0x34fee3){var _0x38f3c0={},_0x4811fa={},_0x268c1b={'count':0x0,'rows':[]};var _0x23d8be=_[_0x26f7('0x28')](db['SmsApplication'][_0x26f7('0x29')],function(_0x218608){return{'name':_0x218608[_0x26f7('0x2a')],'type':_0x218608[_0x26f7('0x2b')][_0x26f7('0x2c')]};});_0x4811fa[_0x26f7('0x2d')]=_['map'](_0x23d8be,'name');_0x4811fa['query']=_['keys'](_0x4c2504[_0x26f7('0x2e')]);_0x4811fa[_0x26f7('0x2f')]=_['intersection'](_0x4811fa[_0x26f7('0x2d')],_0x4811fa['query']);_0x38f3c0[_0x26f7('0x30')]=_[_0x26f7('0x31')](_0x4811fa['model'],qs[_0x26f7('0x32')](_0x4c2504['query'][_0x26f7('0x32')]));_0x38f3c0[_0x26f7('0x30')]=_0x38f3c0['attributes'][_0x26f7('0x33')]?_0x38f3c0[_0x26f7('0x30')]:_0x4811fa[_0x26f7('0x2d')];if(!_0x4c2504[_0x26f7('0x2e')][_0x26f7('0x34')]('nolimit')){_0x38f3c0[_0x26f7('0x35')]=qs[_0x26f7('0x35')](_0x4c2504[_0x26f7('0x2e')]['limit']);_0x38f3c0[_0x26f7('0x19')]=qs['offset'](_0x4c2504[_0x26f7('0x2e')][_0x26f7('0x19')]);}_0x38f3c0['order']=qs['sort'](_0x4c2504[_0x26f7('0x2e')][_0x26f7('0x36')]);_0x38f3c0[_0x26f7('0x37')]=qs['filters'](_[_0x26f7('0x38')](_0x4c2504[_0x26f7('0x2e')],_0x4811fa['filters']),_0x23d8be);if(_0x4c2504[_0x26f7('0x2e')]['filter']){_0x38f3c0[_0x26f7('0x37')]=_[_0x26f7('0x39')](_0x38f3c0[_0x26f7('0x37')],{'$or':_[_0x26f7('0x28')](_0x23d8be,function(_0x3469c0){if(_0x3469c0[_0x26f7('0x2b')]!=='VIRTUAL'){var _0x8cbc43={};_0x8cbc43[_0x3469c0[_0x26f7('0x25')]]={'$like':'%'+_0x4c2504[_0x26f7('0x2e')]['filter']+'%'};return _0x8cbc43;}})});}_0x38f3c0=_[_0x26f7('0x39')]({},_0x38f3c0,_0x4c2504['options']);var _0x4de930={'where':_0x38f3c0['where']};return db[_0x26f7('0x3a')][_0x26f7('0x1b')](_0x4de930)[_0x26f7('0x22')](function(_0x201f6c){_0x268c1b[_0x26f7('0x1b')]=_0x201f6c;if(_0x4c2504[_0x26f7('0x2e')][_0x26f7('0x3b')]){_0x38f3c0[_0x26f7('0x3c')]=[{'all':!![]}];}return db[_0x26f7('0x3a')]['findAll'](_0x38f3c0);})[_0x26f7('0x22')](function(_0x59a8c9){_0x268c1b[_0x26f7('0x3d')]=_0x59a8c9;return _0x268c1b;})[_0x26f7('0x22')](respondWithFilteredResult(_0x34fee3,_0x38f3c0))['catch'](handleError(_0x34fee3,null));};exports['show']=function(_0x8e1864,_0x1437ac){var _0x109711={'raw':!![],'where':{'id':_0x8e1864['params']['id']}},_0x3cf2ac={};_0x3cf2ac[_0x26f7('0x2d')]=_[_0x26f7('0x3e')](db[_0x26f7('0x3a')][_0x26f7('0x29')]);_0x3cf2ac[_0x26f7('0x2e')]=_[_0x26f7('0x3e')](_0x8e1864[_0x26f7('0x2e')]);_0x3cf2ac[_0x26f7('0x2f')]=_[_0x26f7('0x31')](_0x3cf2ac['model'],_0x3cf2ac[_0x26f7('0x2e')]);_0x109711[_0x26f7('0x30')]=_['intersection'](_0x3cf2ac[_0x26f7('0x2d')],qs['fields'](_0x8e1864['query'][_0x26f7('0x32')]));_0x109711['attributes']=_0x109711[_0x26f7('0x30')][_0x26f7('0x33')]?_0x109711[_0x26f7('0x30')]:_0x3cf2ac['model'];if(_0x8e1864[_0x26f7('0x2e')][_0x26f7('0x3b')]){_0x109711['include']=[{'all':!![]}];}_0x109711=_[_0x26f7('0x39')]({},_0x109711,_0x8e1864[_0x26f7('0x3f')]);return db[_0x26f7('0x3a')][_0x26f7('0x40')](_0x109711)['then'](handleEntityNotFound(_0x1437ac,null))[_0x26f7('0x22')](respondWithResult(_0x1437ac,null))[_0x26f7('0x41')](handleError(_0x1437ac,null));};exports['create']=function(_0x21e965,_0xcb3823){return db[_0x26f7('0x3a')]['create'](_0x21e965[_0x26f7('0x42')],{})['then'](respondWithResult(_0xcb3823,0xc9))[_0x26f7('0x41')](handleError(_0xcb3823,null));};exports[_0x26f7('0x20')]=function(_0x3c6386,_0x6d5bb1){if(_0x3c6386[_0x26f7('0x42')]['id']){delete _0x3c6386[_0x26f7('0x42')]['id'];}return db[_0x26f7('0x3a')][_0x26f7('0x40')]({'where':{'id':_0x3c6386[_0x26f7('0x43')]['id']}})[_0x26f7('0x22')](handleEntityNotFound(_0x6d5bb1,null))[_0x26f7('0x22')](saveUpdates(_0x3c6386[_0x26f7('0x42')],null))[_0x26f7('0x22')](respondWithResult(_0x6d5bb1,null))[_0x26f7('0x41')](handleError(_0x6d5bb1,null));};exports[_0x26f7('0x21')]=function(_0x34184e,_0x439e64){return db[_0x26f7('0x3a')][_0x26f7('0x40')]({'where':{'id':_0x34184e['params']['id']}})[_0x26f7('0x22')](handleEntityNotFound(_0x439e64,null))['then'](removeEntity(_0x439e64,null))[_0x26f7('0x41')](handleError(_0x439e64,null));};
\ No newline at end of file
+var _0xa134=['moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','reject','save','update','then','destroy','error','stack','name','index','map','SmsApplication','rawAttributes','type','key','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','includeAll','include','findAll','rows','show','params','find','catch','body','zip-dir','request-promise'];(function(_0x3ee31f,_0x41c88e){var _0x5a7cee=function(_0x310cf3){while(--_0x310cf3){_0x3ee31f['push'](_0x3ee31f['shift']());}};_0x5a7cee(++_0x41c88e);}(_0xa134,0x1ae));var _0x4a13=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa134[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4a13('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4a13('0x1'));var moment=require(_0x4a13('0x2'));var BPromise=require(_0x4a13('0x3'));var Mustache=require(_0x4a13('0x4'));var util=require(_0x4a13('0x5'));var path=require('path');var sox=require(_0x4a13('0x6'));var csv=require(_0x4a13('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4a13('0x8'));var _=require(_0x4a13('0x9'));var squel=require(_0x4a13('0xa'));var crypto=require(_0x4a13('0xb'));var jsforce=require(_0x4a13('0xc'));var deskjs=require(_0x4a13('0xd'));var toCsv=require('to-csv');var querystring=require(_0x4a13('0xe'));var Papa=require(_0x4a13('0xf'));var Redis=require(_0x4a13('0x10'));var authService=require(_0x4a13('0x11'));var qs=require(_0x4a13('0x12'));var as=require(_0x4a13('0x13'));var hardwareService=require(_0x4a13('0x14'));var logger=require(_0x4a13('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x4a13('0x16'));var licenseUtil=require(_0x4a13('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4dc26f,_0x5e7dbd){_0x5e7dbd=_0x5e7dbd||0xcc;return function(_0x35cfe4){if(_0x35cfe4){return _0x4dc26f[_0x4a13('0x18')](_0x5e7dbd);}return _0x4dc26f[_0x4a13('0x19')](_0x5e7dbd)[_0x4a13('0x1a')]();};}function respondWithResult(_0x14fd9b,_0x4132aa){_0x4132aa=_0x4132aa||0xc8;return function(_0x1dd99a){if(_0x1dd99a){return _0x14fd9b[_0x4a13('0x19')](_0x4132aa)[_0x4a13('0x1b')](_0x1dd99a);}};}function respondWithFilteredResult(_0x37e77e,_0x4f59f1){return function(_0x1d6b3a){if(_0x1d6b3a){var _0x4fd201=typeof _0x4f59f1[_0x4a13('0x1c')]===_0x4a13('0x1d')&&typeof _0x4f59f1['limit']===_0x4a13('0x1d');var _0x32ad15=_0x1d6b3a[_0x4a13('0x1e')];var _0x13985b=_0x4fd201?0x0:_0x4f59f1[_0x4a13('0x1c')];var _0x3c6268=_0x4fd201?_0x1d6b3a[_0x4a13('0x1e')]:_0x4f59f1['offset']+_0x4f59f1[_0x4a13('0x1f')];var _0x47714e;if(_0x3c6268>=_0x32ad15){_0x3c6268=_0x32ad15;_0x47714e=0xc8;}else{_0x47714e=0xce;}_0x37e77e[_0x4a13('0x19')](_0x47714e);return _0x37e77e[_0x4a13('0x20')]('Content-Range',_0x13985b+'-'+_0x3c6268+'/'+_0x32ad15)[_0x4a13('0x1b')](_0x1d6b3a);}return null;};}function patchUpdates(_0xeff05e){return function(_0x322bb1){try{jsonpatch[_0x4a13('0x21')](_0x322bb1,_0xeff05e,!![]);}catch(_0x2e19ea){return BPromise[_0x4a13('0x22')](_0x2e19ea);}return _0x322bb1[_0x4a13('0x23')]();};}function saveUpdates(_0x24c705,_0x5060cd){return function(_0x412b2c){if(_0x412b2c){return _0x412b2c[_0x4a13('0x24')](_0x24c705)[_0x4a13('0x25')](function(_0x80d2d6){return _0x80d2d6;});}return null;};}function removeEntity(_0x26d157,_0x2e704c){return function(_0x28fbf5){if(_0x28fbf5){return _0x28fbf5[_0x4a13('0x26')]()[_0x4a13('0x25')](function(){_0x26d157['status'](0xcc)[_0x4a13('0x1a')]();});}};}function handleEntityNotFound(_0x2de726,_0x4d6336){return function(_0x2fde66){if(!_0x2fde66){_0x2de726['sendStatus'](0x194);}return _0x2fde66;};}function handleError(_0x10226f,_0x52bb07){_0x52bb07=_0x52bb07||0x1f4;return function(_0x100b3d){logger[_0x4a13('0x27')](_0x100b3d[_0x4a13('0x28')]);if(_0x100b3d[_0x4a13('0x29')]){delete _0x100b3d[_0x4a13('0x29')];}_0x10226f[_0x4a13('0x19')](_0x52bb07)['send'](_0x100b3d);};}exports[_0x4a13('0x2a')]=function(_0x43f441,_0x3b0a1d){var _0x5b2d7c={},_0x4eda98={},_0x2a708d={'count':0x0,'rows':[]};var _0x560569=_[_0x4a13('0x2b')](db[_0x4a13('0x2c')][_0x4a13('0x2d')],function(_0x46650b){return{'name':_0x46650b['fieldName'],'type':_0x46650b[_0x4a13('0x2e')][_0x4a13('0x2f')]};});_0x4eda98['model']=_[_0x4a13('0x2b')](_0x560569,_0x4a13('0x29'));_0x4eda98[_0x4a13('0x30')]=_[_0x4a13('0x31')](_0x43f441[_0x4a13('0x30')]);_0x4eda98['filters']=_['intersection'](_0x4eda98[_0x4a13('0x32')],_0x4eda98[_0x4a13('0x30')]);_0x5b2d7c[_0x4a13('0x33')]=_[_0x4a13('0x34')](_0x4eda98[_0x4a13('0x32')],qs[_0x4a13('0x35')](_0x43f441['query']['fields']));_0x5b2d7c[_0x4a13('0x33')]=_0x5b2d7c[_0x4a13('0x33')][_0x4a13('0x36')]?_0x5b2d7c[_0x4a13('0x33')]:_0x4eda98[_0x4a13('0x32')];if(!_0x43f441[_0x4a13('0x30')][_0x4a13('0x37')](_0x4a13('0x38'))){_0x5b2d7c[_0x4a13('0x1f')]=qs[_0x4a13('0x1f')](_0x43f441[_0x4a13('0x30')][_0x4a13('0x1f')]);_0x5b2d7c[_0x4a13('0x1c')]=qs[_0x4a13('0x1c')](_0x43f441[_0x4a13('0x30')][_0x4a13('0x1c')]);}_0x5b2d7c[_0x4a13('0x39')]=qs['sort'](_0x43f441[_0x4a13('0x30')][_0x4a13('0x3a')]);_0x5b2d7c[_0x4a13('0x3b')]=qs[_0x4a13('0x3c')](_['pick'](_0x43f441[_0x4a13('0x30')],_0x4eda98[_0x4a13('0x3c')]),_0x560569);if(_0x43f441[_0x4a13('0x30')][_0x4a13('0x3d')]){_0x5b2d7c['where']=_[_0x4a13('0x3e')](_0x5b2d7c[_0x4a13('0x3b')],{'$or':_[_0x4a13('0x2b')](_0x560569,function(_0x208b3b){if(_0x208b3b[_0x4a13('0x2e')]!=='VIRTUAL'){var _0x6e0e02={};_0x6e0e02[_0x208b3b['name']]={'$like':'%'+_0x43f441[_0x4a13('0x30')][_0x4a13('0x3d')]+'%'};return _0x6e0e02;}})});}_0x5b2d7c=_[_0x4a13('0x3e')]({},_0x5b2d7c,_0x43f441['options']);var _0x384013={'where':_0x5b2d7c[_0x4a13('0x3b')]};return db[_0x4a13('0x2c')][_0x4a13('0x1e')](_0x384013)[_0x4a13('0x25')](function(_0x32be79){_0x2a708d[_0x4a13('0x1e')]=_0x32be79;if(_0x43f441[_0x4a13('0x30')][_0x4a13('0x3f')]){_0x5b2d7c[_0x4a13('0x40')]=[{'all':!![]}];}return db['SmsApplication'][_0x4a13('0x41')](_0x5b2d7c);})[_0x4a13('0x25')](function(_0xa20018){_0x2a708d[_0x4a13('0x42')]=_0xa20018;return _0x2a708d;})[_0x4a13('0x25')](respondWithFilteredResult(_0x3b0a1d,_0x5b2d7c))['catch'](handleError(_0x3b0a1d,null));};exports[_0x4a13('0x43')]=function(_0x2405d3,_0x1913d0){var _0x33032b={'raw':!![],'where':{'id':_0x2405d3[_0x4a13('0x44')]['id']}},_0x4649d4={};_0x4649d4[_0x4a13('0x32')]=_['keys'](db['SmsApplication']['rawAttributes']);_0x4649d4[_0x4a13('0x30')]=_[_0x4a13('0x31')](_0x2405d3[_0x4a13('0x30')]);_0x4649d4[_0x4a13('0x3c')]=_[_0x4a13('0x34')](_0x4649d4[_0x4a13('0x32')],_0x4649d4[_0x4a13('0x30')]);_0x33032b[_0x4a13('0x33')]=_[_0x4a13('0x34')](_0x4649d4['model'],qs[_0x4a13('0x35')](_0x2405d3[_0x4a13('0x30')][_0x4a13('0x35')]));_0x33032b[_0x4a13('0x33')]=_0x33032b[_0x4a13('0x33')][_0x4a13('0x36')]?_0x33032b[_0x4a13('0x33')]:_0x4649d4[_0x4a13('0x32')];if(_0x2405d3[_0x4a13('0x30')][_0x4a13('0x3f')]){_0x33032b['include']=[{'all':!![]}];}_0x33032b=_[_0x4a13('0x3e')]({},_0x33032b,_0x2405d3['options']);return db[_0x4a13('0x2c')][_0x4a13('0x45')](_0x33032b)[_0x4a13('0x25')](handleEntityNotFound(_0x1913d0,null))['then'](respondWithResult(_0x1913d0,null))[_0x4a13('0x46')](handleError(_0x1913d0,null));};exports['create']=function(_0xac9ecf,_0x5b0274){return db['SmsApplication']['create'](_0xac9ecf[_0x4a13('0x47')],{})[_0x4a13('0x25')](respondWithResult(_0x5b0274,0xc9))[_0x4a13('0x46')](handleError(_0x5b0274,null));};exports[_0x4a13('0x24')]=function(_0x2347a3,_0x367319){if(_0x2347a3[_0x4a13('0x47')]['id']){delete _0x2347a3['body']['id'];}return db[_0x4a13('0x2c')][_0x4a13('0x45')]({'where':{'id':_0x2347a3[_0x4a13('0x44')]['id']}})['then'](handleEntityNotFound(_0x367319,null))[_0x4a13('0x25')](saveUpdates(_0x2347a3[_0x4a13('0x47')],null))[_0x4a13('0x25')](respondWithResult(_0x367319,null))[_0x4a13('0x46')](handleError(_0x367319,null));};exports['destroy']=function(_0x1c2d70,_0x577458){return db['SmsApplication']['find']({'where':{'id':_0x1c2d70[_0x4a13('0x44')]['id']}})[_0x4a13('0x25')](handleEntityNotFound(_0x577458,null))[_0x4a13('0x25')](removeEntity(_0x577458,null))['catch'](handleError(_0x577458,null));};
\ No newline at end of file
index 21a0c6b..b2a028e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3172=['moment','bluebird','path','rimraf','./smsApplication.attributes','exports','define','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api'];(function(_0x37a778,_0x4c3341){var _0xaad7ea=function(_0x266a73){while(--_0x266a73){_0x37a778['push'](_0x37a778['shift']());}};_0xaad7ea(++_0x4c3341);}(_0x3172,0x106));var _0x2317=function(_0xb725be,_0x45bd01){_0xb725be=_0xb725be-0x0;var _0x2f2424=_0x3172[_0xb725be];return _0x2f2424;};'use strict';var _=require(_0x2317('0x0'));var util=require(_0x2317('0x1'));var logger=require(_0x2317('0x2'))(_0x2317('0x3'));var moment=require(_0x2317('0x4'));var BPromise=require(_0x2317('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2317('0x6'));var rimraf=require(_0x2317('0x7'));var config=require('../../config/environment');var attributes=require(_0x2317('0x8'));module[_0x2317('0x9')]=function(_0x2b7a81,_0x4e28f7){return _0x2b7a81[_0x2317('0xa')]('SmsApplication',attributes,{'tableName':_0x2317('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2317('0xc'),'collate':_0x2317('0xd')});};
\ No newline at end of file
+var _0x0ecc=['define','SmsApplication','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','rimraf','./smsApplication.attributes'];(function(_0x28ee41,_0x1bcece){var _0x4de099=function(_0x5c758c){while(--_0x5c758c){_0x28ee41['push'](_0x28ee41['shift']());}};_0x4de099(++_0x1bcece);}(_0x0ecc,0x1bf));var _0xc0ec=function(_0x1aaf6c,_0x4fe5c8){_0x1aaf6c=_0x1aaf6c-0x0;var _0x479531=_0x0ecc[_0x1aaf6c];return _0x479531;};'use strict';var _=require(_0xc0ec('0x0'));var util=require(_0xc0ec('0x1'));var logger=require(_0xc0ec('0x2'))(_0xc0ec('0x3'));var moment=require(_0xc0ec('0x4'));var BPromise=require('bluebird');var rp=require(_0xc0ec('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc0ec('0x6'));var config=require('../../config/environment');var attributes=require(_0xc0ec('0x7'));module['exports']=function(_0x10f8a6,_0x122062){return _0x10f8a6[_0xc0ec('0x8')](_0xc0ec('0x9'),attributes,{'tableName':_0xc0ec('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc0ec('0xb'),'collate':_0xc0ec('0xc')});};
\ No newline at end of file
index d400492..d81ae47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaab=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird'];(function(_0x2c0ded,_0x3de22c){var _0x4473e5=function(_0x3705bc){while(--_0x3705bc){_0x2c0ded['push'](_0x2c0ded['shift']());}};_0x4473e5(++_0x3de22c);}(_0xeaab,0xd9));var _0xbeaa=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xeaab[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0xbeaa('0x0'));var util=require('util');var moment=require(_0xbeaa('0x1'));var BPromise=require(_0xbeaa('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbeaa('0x3'))['db'];var utils=require(_0xbeaa('0x4'));var logger=require(_0xbeaa('0x5'))(_0xbeaa('0x6'));var config=require(_0xbeaa('0x7'));var jayson=require(_0xbeaa('0x8'));var client=jayson[_0xbeaa('0x9')][_0xbeaa('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2f015b,_0x42a779,_0x346043){return new BPromise(function(_0x2da505,_0x15a826){return client[_0xbeaa('0xb')](_0x2f015b,_0x346043)['then'](function(_0x389c0b){logger[_0xbeaa('0xc')](_0xbeaa('0xd'),_0x42a779,_0xbeaa('0xe'));logger[_0xbeaa('0xf')](_0xbeaa('0x10'),_0x42a779,_0xbeaa('0xe'),JSON['stringify'](_0x389c0b));if(_0x389c0b[_0xbeaa('0x11')]){if(_0x389c0b['error'][_0xbeaa('0x12')]===0x1f4){logger[_0xbeaa('0x11')]('SmsApplication,\x20%s,\x20%s',_0x42a779,_0x389c0b[_0xbeaa('0x11')]['message']);return _0x15a826(_0x389c0b[_0xbeaa('0x11')][_0xbeaa('0x13')]);}logger['error'](_0xbeaa('0xd'),_0x42a779,_0x389c0b[_0xbeaa('0x11')][_0xbeaa('0x13')]);return _0x2da505(_0x389c0b[_0xbeaa('0x11')][_0xbeaa('0x13')]);}else{logger[_0xbeaa('0xc')](_0xbeaa('0xd'),_0x42a779,_0xbeaa('0xe'));_0x2da505(_0x389c0b[_0xbeaa('0x14')][_0xbeaa('0x13')]);}})[_0xbeaa('0x15')](function(_0x1cc387){logger[_0xbeaa('0x11')](_0xbeaa('0xd'),_0x42a779,_0x1cc387);_0x15a826(_0x1cc387);});});}
\ No newline at end of file
+var _0x7cdc=['util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','info','SmsApplication,\x20%s,\x20%s','request\x20sent','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x3e0b5b,_0x5c6fbf){var _0xc12f09=function(_0x158807){while(--_0x158807){_0x3e0b5b['push'](_0x3e0b5b['shift']());}};_0xc12f09(++_0x5c6fbf);}(_0x7cdc,0x190));var _0xc7cd=function(_0x5681e6,_0x264a75){_0x5681e6=_0x5681e6-0x0;var _0x34f6a7=_0x7cdc[_0x5681e6];return _0x34f6a7;};'use strict';var _=require('lodash');var util=require(_0xc7cd('0x0'));var moment=require(_0xc7cd('0x1'));var BPromise=require('bluebird');var rs=require(_0xc7cd('0x2'));var fs=require('fs');var Redis=require(_0xc7cd('0x3'));var db=require(_0xc7cd('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xc7cd('0x5'))(_0xc7cd('0x6'));var config=require('../../config/environment');var jayson=require(_0xc7cd('0x7'));var client=jayson[_0xc7cd('0x8')][_0xc7cd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2c168c,_0x13ffeb,_0x30089e){return new BPromise(function(_0x42a4b8,_0x5b5d3d){return client[_0xc7cd('0xa')](_0x2c168c,_0x30089e)['then'](function(_0x36d8b9){logger[_0xc7cd('0xb')](_0xc7cd('0xc'),_0x13ffeb,_0xc7cd('0xd'));logger['debug'](_0xc7cd('0xe'),_0x13ffeb,_0xc7cd('0xd'),JSON[_0xc7cd('0xf')](_0x36d8b9));if(_0x36d8b9[_0xc7cd('0x10')]){if(_0x36d8b9['error'][_0xc7cd('0x11')]===0x1f4){logger['error'](_0xc7cd('0xc'),_0x13ffeb,_0x36d8b9[_0xc7cd('0x10')][_0xc7cd('0x12')]);return _0x5b5d3d(_0x36d8b9[_0xc7cd('0x10')]['message']);}logger[_0xc7cd('0x10')](_0xc7cd('0xc'),_0x13ffeb,_0x36d8b9['error'][_0xc7cd('0x12')]);return _0x42a4b8(_0x36d8b9['error'][_0xc7cd('0x12')]);}else{logger['info'](_0xc7cd('0xc'),_0x13ffeb,_0xc7cd('0xd'));_0x42a4b8(_0x36d8b9[_0xc7cd('0x13')][_0xc7cd('0x12')]);}})['catch'](function(_0x211e6d){logger[_0xc7cd('0x10')](_0xc7cd('0xc'),_0x13ffeb,_0x211e6d);_0x5b5d3d(_0x211e6d);});});}
\ No newline at end of file
index fec83f6..ccb1999 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['sms','smsinteraction:addtags','addTags','put','/:id','smsinteraction:update','update','delete','smsinteraction:destroy','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','index','/describe','show','/:id/messages','getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked'];(function(_0x4df447,_0x559e11){var _0x2cff18=function(_0x3e5e94){while(--_0x3e5e94){_0x4df447['push'](_0x4df447['shift']());}};_0x2cff18(++_0x559e11);}(_0xbaf0,0x12a));var _0x0baf=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xbaf0[_0x5ddb1c];return _0x354adc;};'use strict';var multer=require('multer');var util=require(_0x0baf('0x0'));var path=require(_0x0baf('0x1'));var timeout=require(_0x0baf('0x2'));var express=require(_0x0baf('0x3'));var router=express[_0x0baf('0x4')]();var fs_extra=require(_0x0baf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var controller=require(_0x0baf('0x8'));router[_0x0baf('0x9')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xb')]);router[_0x0baf('0x9')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller['describe']);router[_0x0baf('0x9')]('/:id',auth[_0x0baf('0xa')](),controller[_0x0baf('0xd')]);router[_0x0baf('0x9')](_0x0baf('0xe'),auth[_0x0baf('0xa')](),controller[_0x0baf('0xf')]);router[_0x0baf('0x9')](_0x0baf('0x10'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x11')]);router[_0x0baf('0x12')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0baf('0x12')](_0x0baf('0xe'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x13')]);router['post'](_0x0baf('0x14'),auth['isAuthenticated'](),interaction[_0x0baf('0x15')](_0x0baf('0x16'),_0x0baf('0x17')),controller[_0x0baf('0x18')]);router[_0x0baf('0x19')](_0x0baf('0x1a'),auth['isAuthenticated'](),interaction['tracked'](_0x0baf('0x16'),_0x0baf('0x1b')),controller[_0x0baf('0x1c')]);router[_0x0baf('0x1d')](_0x0baf('0x1a'),auth[_0x0baf('0xa')](),interaction['tracked'](_0x0baf('0x16'),_0x0baf('0x1e')),controller[_0x0baf('0x1f')]);router[_0x0baf('0x1d')](_0x0baf('0x14'),auth[_0x0baf('0xa')](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
+var _0xb03e=['exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','smsinteraction:update','update','delete','smsinteraction:destroy','destroy','removeTags'];(function(_0x54deac,_0x1d9344){var _0x19c60b=function(_0x34a8c5){while(--_0x34a8c5){_0x54deac['push'](_0x54deac['shift']());}};_0x19c60b(++_0x1d9344);}(_0xb03e,0x1eb));var _0xeb03=function(_0x54fb42,_0x1cd0bf){_0x54fb42=_0x54fb42-0x0;var _0x296a9d=_0xb03e[_0x54fb42];return _0x296a9d;};'use strict';var multer=require('multer');var util=require(_0xeb03('0x0'));var path=require(_0xeb03('0x1'));var timeout=require(_0xeb03('0x2'));var express=require(_0xeb03('0x3'));var router=express[_0xeb03('0x4')]();var fs_extra=require(_0xeb03('0x5'));var auth=require(_0xeb03('0x6'));var interaction=require(_0xeb03('0x7'));var config=require(_0xeb03('0x8'));var controller=require(_0xeb03('0x9'));router[_0xeb03('0xa')]('/',auth[_0xeb03('0xb')](),controller['index']);router[_0xeb03('0xa')](_0xeb03('0xc'),auth[_0xeb03('0xb')](),controller[_0xeb03('0xd')]);router[_0xeb03('0xa')](_0xeb03('0xe'),auth['isAuthenticated'](),controller[_0xeb03('0xf')]);router[_0xeb03('0xa')](_0xeb03('0x10'),auth['isAuthenticated'](),controller[_0xeb03('0x11')]);router['get'](_0xeb03('0x12'),auth[_0xeb03('0xb')](),controller[_0xeb03('0x13')]);router[_0xeb03('0x14')]('/',auth[_0xeb03('0xb')](),controller[_0xeb03('0x15')]);router[_0xeb03('0x14')](_0xeb03('0x10'),auth[_0xeb03('0xb')](),controller[_0xeb03('0x16')]);router[_0xeb03('0x14')](_0xeb03('0x17'),auth['isAuthenticated'](),interaction[_0xeb03('0x18')](_0xeb03('0x19'),_0xeb03('0x1a')),controller[_0xeb03('0x1b')]);router['put'](_0xeb03('0xe'),auth[_0xeb03('0xb')](),interaction[_0xeb03('0x18')]('sms',_0xeb03('0x1c')),controller[_0xeb03('0x1d')]);router[_0xeb03('0x1e')](_0xeb03('0xe'),auth[_0xeb03('0xb')](),interaction[_0xeb03('0x18')](_0xeb03('0x19'),_0xeb03('0x1f')),controller[_0xeb03('0x20')]);router[_0xeb03('0x1e')](_0xeb03('0x17'),auth[_0xeb03('0xb')](),controller[_0xeb03('0x21')]);module[_0xeb03('0x22')]=router;
\ No newline at end of file
index 55fd9d8..7e8c9db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcca7=['ENUM','out','sequelize','moment','exports','BOOLEAN','STRING','DATE'];(function(_0x249dfe,_0x21f85c){var _0xc7c7be=function(_0x3d0837){while(--_0x3d0837){_0x249dfe['push'](_0x249dfe['shift']());}};_0xc7c7be(++_0x21f85c);}(_0xcca7,0x1aa));var _0x7cca=function(_0x99868f,_0xbdb8e7){_0x99868f=_0x99868f-0x0;var _0x27a71b=_0xcca7[_0x99868f];return _0x27a71b;};'use strict';var Sequelize=require(_0x7cca('0x0'));var moment=require(_0x7cca('0x1'));module[_0x7cca('0x2')]={'closed':{'type':Sequelize[_0x7cca('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x7cca('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x7cca('0x4')]},'phone':{'type':Sequelize[_0x7cca('0x4')]},'read1stAt':{'type':Sequelize[_0x7cca('0x5')]},'firstMsgDirection':{'type':Sequelize[_0x7cca('0x6')]('in',_0x7cca('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x7cca('0x5')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x7cca('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xecb2=['sequelize','BOOLEAN','STRING','DATE','ENUM','out'];(function(_0xd82cf2,_0x160f89){var _0x41f7a5=function(_0x25de0f){while(--_0x25de0f){_0xd82cf2['push'](_0xd82cf2['shift']());}};_0x41f7a5(++_0x160f89);}(_0xecb2,0xf6));var _0x2ecb=function(_0x42747f,_0x5b9691){_0x42747f=_0x42747f-0x0;var _0x2e7f64=_0xecb2[_0x42747f];return _0x2e7f64;};'use strict';var Sequelize=require(_0x2ecb('0x0'));var moment=require('moment');module['exports']={'closed':{'type':Sequelize[_0x2ecb('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x2ecb('0x2')]},'thirdDisposition':{'type':Sequelize[_0x2ecb('0x2')]},'note':{'type':Sequelize[_0x2ecb('0x2')]},'phone':{'type':Sequelize[_0x2ecb('0x2')]},'read1stAt':{'type':Sequelize[_0x2ecb('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x2ecb('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x2ecb('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x2ecb('0x1')],'defaultValue':![]}};
\ No newline at end of file
index fa3af38..cc9f047 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x720f=['rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','../../config/utils','localhost','redis','./smsInteraction.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','update','destroy','then','error','stack','name','send','Users','map','fullname','TagIds','Tags','split','forEach','catch','talking','answered','unmanaged','total','UserId','waiting','closed','index','SmsInteraction','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','where','field','color','from','tools_tags','u.id','u.fullname','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','select','sms_interactions','cm_contacts','o.id\x20=\x20i.UserId','a.id\x20=\x20i.SmsAccountId','sms_messages','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','length','find','unreadMessages','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','value','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','text','body','start','some','compact','isEmpty','SmsAccountId','i.SmsAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','QueryTypes','SELECT','clone','contactName','DESC','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','Account.mandatoryDisposition','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','push','all','rows','show','params','include','create','describe','addMessage','SmsMessage','ids','omit','findOne','sort','format','YYYY-MM-DD\x20HH:mm:ss','options','includeAll','findAll','addTags','setTags','spread','emit','smsInteractionTags:save','removeTags','unix','root','files','join','server','attachments','transcript-%d-%s.zip','lastName','Messages','direction','secret','SmsAccount','Account','Sms','Owner','N.A.','closedAt','out','System','Contact','firstName','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','download','log','eml-format'];(function(_0x349077,_0x2eafb1){var _0x277000=function(_0x26de51){while(--_0x26de51){_0x349077['push'](_0x349077['shift']());}};_0x277000(++_0x2eafb1);}(_0x720f,0xee));var _0xf720=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0x720f[_0x92c450];return _0x2a9599;};'use strict';var emlformat=require(_0xf720('0x0'));var rimraf=require(_0xf720('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf720('0x2'));var rp=require(_0xf720('0x3'));var moment=require('moment');var BPromise=require(_0xf720('0x4'));var Mustache=require(_0xf720('0x5'));var util=require(_0xf720('0x6'));var path=require(_0xf720('0x7'));var sox=require(_0xf720('0x8'));var csv=require('to-csv');var ejs=require(_0xf720('0x9'));var fs=require('fs');var fs_extra=require(_0xf720('0xa'));var _=require(_0xf720('0xb'));var squel=require(_0xf720('0xc'));var crypto=require(_0xf720('0xd'));var jsforce=require(_0xf720('0xe'));var deskjs=require(_0xf720('0xf'));var toCsv=require(_0xf720('0x10'));var querystring=require(_0xf720('0x11'));var Papa=require('papaparse');var Redis=require(_0xf720('0x12'));var authService=require(_0xf720('0x13'));var qs=require(_0xf720('0x14'));var as=require(_0xf720('0x15'));var pdf=require(_0xf720('0x16'));var hardwareService=require(_0xf720('0x17'));var logger=require(_0xf720('0x18'))('api');var utils=require(_0xf720('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xf720('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf720('0x1b')]));require(_0xf720('0x1c'))[_0xf720('0x1d')](socket);function respondWithStatusCode(_0x36ad68,_0x60e005){_0x60e005=_0x60e005||0xcc;return function(_0x330a32){if(_0x330a32){return _0x36ad68[_0xf720('0x1e')](_0x60e005);}return _0x36ad68[_0xf720('0x1f')](_0x60e005)[_0xf720('0x20')]();};}function respondWithResult(_0x1b2e8b,_0x2a04da){_0x2a04da=_0x2a04da||0xc8;return function(_0x32d7ca){if(_0x32d7ca){return _0x1b2e8b[_0xf720('0x1f')](_0x2a04da)[_0xf720('0x21')](_0x32d7ca);}};}function respondWithFilteredResult(_0x26a54e,_0x4d1e42){return function(_0x1197be){if(_0x1197be){var _0x99c3bc=typeof _0x4d1e42[_0xf720('0x22')]==='undefined'&&typeof _0x4d1e42[_0xf720('0x23')]===_0xf720('0x24');var _0x37b6d2=_0x1197be[_0xf720('0x25')];var _0x381fd1=_0x99c3bc?0x0:_0x4d1e42[_0xf720('0x22')];var _0x5f1337=_0x99c3bc?_0x1197be['count']:_0x4d1e42[_0xf720('0x22')]+_0x4d1e42[_0xf720('0x23')];var _0x199c37;if(_0x5f1337>=_0x37b6d2){_0x5f1337=_0x37b6d2;_0x199c37=0xc8;}else{_0x199c37=0xce;}_0x26a54e[_0xf720('0x1f')](_0x199c37);return _0x26a54e['set'](_0xf720('0x26'),_0x381fd1+'-'+_0x5f1337+'/'+_0x37b6d2)[_0xf720('0x21')](_0x1197be);}return null;};}function patchUpdates(_0x5c714d){return function(_0x14ecfe){try{jsonpatch[_0xf720('0x27')](_0x14ecfe,_0x5c714d,!![]);}catch(_0x5bdf61){return BPromise['reject'](_0x5bdf61);}return _0x14ecfe['save']();};}function saveUpdates(_0x8b05bf,_0x425154){return function(_0x26dbac){if(_0x26dbac){return _0x26dbac[_0xf720('0x28')](_0x8b05bf)['then'](function(_0xdff07f){return _0xdff07f;});}return null;};}function removeEntity(_0x50dc69,_0xeb15e7){return function(_0x36f225){if(_0x36f225){return _0x36f225[_0xf720('0x29')]()[_0xf720('0x2a')](function(){_0x50dc69[_0xf720('0x1f')](0xcc)[_0xf720('0x20')]();});}};}function handleEntityNotFound(_0xf703e4,_0x13d07f){return function(_0x2dd57e){if(!_0x2dd57e){_0xf703e4[_0xf720('0x1e')](0x194);}return _0x2dd57e;};}function handleError(_0x5d46d6,_0x267e84){_0x267e84=_0x267e84||0x1f4;return function(_0x2d2572){logger[_0xf720('0x2b')](_0x2d2572[_0xf720('0x2c')]);if(_0x2d2572[_0xf720('0x2d')]){delete _0x2d2572['name'];}_0x5d46d6[_0xf720('0x1f')](_0x267e84)[_0xf720('0x2e')](_0x2d2572);};}function getInteractionUsers(_0x4a15e9,_0xef3879){return new BPromise(function(_0x3216c5,_0x3524bd){try{if(_0xef3879[_0x4a15e9['id']]){_0x4a15e9[_0xf720('0x2f')]=_[_0xf720('0x30')](_0xef3879[_0x4a15e9['id']],function(_0x37eccc){return{'id':_0x37eccc['id'],'fullname':_0x37eccc[_0xf720('0x31')]};});}}catch(_0x59b02d){_0x3524bd(_0x59b02d);}_0x3216c5(_0x4a15e9);});}function getInteractionTags(_0x158771,_0x219ccd){return new BPromise(function(_0x4c1b36,_0x5de892){try{if(_0x158771[_0xf720('0x32')]){_0x158771[_0xf720('0x33')]=[];_0x158771[_0xf720('0x32')][_0xf720('0x34')](',')[_0xf720('0x35')](function(_0x2f6cfd){_0x158771[_0xf720('0x33')]['push'](_0x219ccd[_0x2f6cfd]);});}delete _0x158771['TagIds'];}catch(_0x3a2899){_0x5de892(_0x3a2899);}_0x4c1b36(_0x158771);});}function updateSmsInteraction(_0x1cbb3c,_0x156327,_0xfb33d0){return new BPromise(function(_0x1ed2e6,_0x5cf1ee){return getInteractionUsers(_0x1cbb3c,_0xfb33d0)[_0xf720('0x2a')](function(_0x38e8ac){return getInteractionTags(_0x38e8ac,_0x156327);})[_0xf720('0x2a')](function(_0xc1ed8){return getStateInteraction(_0xc1ed8);})[_0xf720('0x2a')](function(_0x3d7bc4){_0x1ed2e6(_0x3d7bc4);})[_0xf720('0x36')](function(_0x1db4e3){_0x5cf1ee(_0x1db4e3);});});}function getStateInteraction(_0x17ba2f){return new BPromise(function(_0x16c039){_0x17ba2f['waiting']=0x0;_0x17ba2f[_0xf720('0x37')]=0x0;_0x17ba2f[_0xf720('0x38')]=0x0;_0x17ba2f[_0xf720('0x39')]=0x0;_0x17ba2f[_0xf720('0x3a')]=0x0;if(!_0x17ba2f['closed']&&!_0x17ba2f[_0xf720('0x3b')]){_0x17ba2f['waiting']+=0x1;}if(!_0x17ba2f['closed']&&_0x17ba2f[_0xf720('0x3b')]){_0x17ba2f[_0xf720('0x37')]+=0x1;if(_0x17ba2f['waiting']){_0x17ba2f[_0xf720('0x3c')]-=0x1;}}if(_0x17ba2f[_0xf720('0x3d')]&&_0x17ba2f[_0xf720('0x3b')]){_0x17ba2f[_0xf720('0x38')]+=0x1;if(_0x17ba2f[_0xf720('0x37')]){_0x17ba2f['talking']-=0x1;}}if(_0x17ba2f[_0xf720('0x3d')]&&!_0x17ba2f[_0xf720('0x3b')]){_0x17ba2f[_0xf720('0x39')]+=0x1;if(_0x17ba2f[_0xf720('0x3c')]){_0x17ba2f[_0xf720('0x3c')]-=0x1;}}_0x17ba2f[_0xf720('0x3a')]+=0x1;_0x16c039(_0x17ba2f);});}exports[_0xf720('0x3e')]=function(_0x429f75,_0x59b485){var _0x256786={},_0x233e02={},_0xb61de2={'count':0x0,'rows':[]};var _0x5a661e=_['map'](db[_0xf720('0x3f')][_0xf720('0x40')],function(_0x1a440a){return{'name':_0x1a440a['fieldName'],'type':_0x1a440a[_0xf720('0x41')][_0xf720('0x42')]};});_0x233e02[_0xf720('0x43')]=_[_0xf720('0x30')](_0x5a661e,_0xf720('0x2d'));_0x233e02['query']=_[_0xf720('0x44')](_0x429f75[_0xf720('0x45')]);_0x233e02[_0xf720('0x46')]=_[_0xf720('0x47')](_0x233e02['model'],_0x233e02[_0xf720('0x45')]);_0x256786[_0xf720('0x48')]=_[_0xf720('0x47')](_0x233e02[_0xf720('0x43')],qs['fields'](_0x429f75['query'][_0xf720('0x49')]));_0x256786[_0xf720('0x48')]=_0x256786[_0xf720('0x48')]['length']?_0x256786[_0xf720('0x48')]:_0x233e02['model'];if(!_0x429f75[_0xf720('0x45')][_0xf720('0x4a')](_0xf720('0x4b'))){_0x256786[_0xf720('0x23')]=qs['limit'](_0x429f75[_0xf720('0x45')]['limit']);_0x256786[_0xf720('0x22')]=qs[_0xf720('0x22')](_0x429f75[_0xf720('0x45')]['offset']);}_0x256786[_0xf720('0x4c')]=qs['sort'](_0x429f75[_0xf720('0x45')]['sort']);_0x256786[_0xf720('0x4d')]=qs['filters'](_['pick'](_0x429f75['query'],_0x233e02[_0xf720('0x46')]),_0x5a661e);var _0x703813=[];var _0x3fc97d=squel['select']()['field']('id')['field']('name')[_0xf720('0x4e')](_0xf720('0x4f'))[_0xf720('0x50')](_0xf720('0x51'));var _0x58df53=squel['select']()['field'](_0xf720('0x52'))[_0xf720('0x4e')](_0xf720('0x53'))[_0xf720('0x4e')]('ui.SmsInteractionId')[_0xf720('0x50')](_0xf720('0x54'),'ui')[_0xf720('0x55')](_0xf720('0x56'),'u',_0xf720('0x57'));var _0x4c3576=squel[_0xf720('0x58')]()[_0xf720('0x50')](_0xf720('0x59'),'i')['left_join'](_0xf720('0x5a'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xf720('0x55')](_0xf720('0x56'),'o',_0xf720('0x5b'))[_0xf720('0x55')]('sms_accounts','a',_0xf720('0x5c'))[_0xf720('0x55')](_0xf720('0x5d'),'me','me.SmsInteractionId\x20=\x20i.id')[_0xf720('0x55')](_0xf720('0x5e'),'it',_0xf720('0x5f'))[_0xf720('0x55')](_0xf720('0x51'),'t',_0xf720('0x60'));var _0x39ee74=squel[_0xf720('0x61')]();var _0x32adf1=[];var _0x55053d=squel[_0xf720('0x61')]();var _0x219bc3;if(_0x429f75[_0xf720('0x45')][_0xf720('0x62')]){_0x219bc3=as[_0xf720('0x63')](_0x429f75[_0xf720('0x45')][_0xf720('0x62')]);var _0x5ffd87=_0x219bc3[_0xf720('0x64')];for(var _0x1b8bfb=0x0;_0x1b8bfb<_0x219bc3[_0xf720('0x65')][_0xf720('0x66')];_0x1b8bfb++){var _0x3ca69d=_0x219bc3[_0xf720('0x65')][_0x1b8bfb];var _0x261d7a='i';var _0x3eb270=_[_0xf720('0x67')](_0x5a661e,['name',_0x3ca69d[_0xf720('0x4e')]]);if(!_0x3eb270){switch(_0x3ca69d[_0xf720('0x4e')]){case _0xf720('0x68'):if(_0x3ca69d['value']==0x1){_0x4c3576[_0xf720('0x69')]('`'+_0x3ca69d[_0xf720('0x4e')]+_0xf720('0x6a'));}else{_0x4c3576[_0xf720('0x69')]('`'+_0x3ca69d[_0xf720('0x4e')]+_0xf720('0x6b'));}break;case'Contact':if(_0x3ca69d[_0xf720('0x6c')]===_0xf720('0x6d')){if(_0x3ca69d['value'][_0xf720('0x34')]('\x20')['length']>0x1){_0x39ee74[_0x5ffd87](_0xf720('0x6e'),qs[_0xf720('0x6f')](_0x3ca69d[_0xf720('0x70')]),null);}else{var _0x4b72ab='%'+_0x3ca69d[_0xf720('0x70')]+'%';_0x39ee74[_0x5ffd87](_0xf720('0x71'),_0x4b72ab,_0x4b72ab,_0x4b72ab);}}else{_0x3eb270=_[_0xf720('0x67')](_0x5a661e,[_0xf720('0x2d'),'ContactId']);_0x3ca69d[_0xf720('0x4e')]=_0xf720('0x72');_0x1ac771=as[_0xf720('0x73')](_0x261d7a,_0x3eb270[_0xf720('0x41')],_0x3ca69d);_0x39ee74[_0x5ffd87](_0x1ac771['text'],_0x1ac771[_0xf720('0x70')]['start'],_0x1ac771[_0xf720('0x70')][_0xf720('0x20')]);}break;case _0xf720('0x74'):var _0x1f0496=_0x3ca69d[_0xf720('0x70')][_0xf720('0x34')](',')['map'](function(_0x33b035){return Number(_0x33b035);});_0x1f0496['forEach'](function(_0x241279){_0x55053d['or'](_0xf720('0x75'),'%,'+_0x241279+',%');});_0x32adf1=_['union'](_0x32adf1,_0x1f0496);break;case _0xf720('0x76'):if(_0x3ca69d[_0xf720('0x6c')]==='$substring'){_0x39ee74[_0x5ffd87]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x3ca69d[_0xf720('0x70')]+'%',null);}else{_0x3eb270=_[_0xf720('0x67')](_0x5a661e,['name',_0xf720('0x3b')]);_0x3ca69d['field']=_0xf720('0x3b');_0x1ac771=as[_0xf720('0x73')](_0x261d7a,_0x3eb270[_0xf720('0x41')],_0x3ca69d);_0x39ee74[_0x5ffd87](_0x1ac771[_0xf720('0x77')],_0x1ac771[_0xf720('0x70')]['start'],_0x1ac771[_0xf720('0x70')][_0xf720('0x20')]);}break;case _0xf720('0x78'):_0x1ac771=as[_0xf720('0x73')]('me',null,_0x3ca69d);_0x39ee74[_0x5ffd87](_0x1ac771[_0xf720('0x77')],_0x1ac771[_0xf720('0x70')][_0xf720('0x79')],_0x1ac771[_0xf720('0x70')][_0xf720('0x20')]);break;}}else{var _0x1ac771=as[_0xf720('0x73')](_0x261d7a,_0x3eb270[_0xf720('0x41')],_0x3ca69d);_0x39ee74[_0x5ffd87](_0x1ac771[_0xf720('0x77')],_0x1ac771[_0xf720('0x70')][_0xf720('0x79')],_0x1ac771[_0xf720('0x70')][_0xf720('0x20')]);}}}else{var _0x2de7e9=_(_0x429f75[_0xf720('0x45')])[_0xf720('0x44')]()[_0xf720('0x30')](function(_0x265c1a){return _[_0xf720('0x7a')](_0x5a661e,[_0xf720('0x2d'),_0x265c1a])?_0x265c1a:undefined;})[_0xf720('0x7b')]()['value']();if(!_[_0xf720('0x7c')](_0x2de7e9)){_0x2de7e9['forEach'](function(_0x5dd0e2){if(_0x5dd0e2===_0xf720('0x7d')){_0x4c3576[_0xf720('0x4d')](_0xf720('0x7e'),[][_0xf720('0x7f')](_0x429f75[_0xf720('0x45')][_0x5dd0e2]));}else if(_0x5dd0e2===_0xf720('0x80')){var _0x222ece=JSON[_0xf720('0x81')](_0x429f75[_0xf720('0x45')][_0x5dd0e2])[_0xf720('0x82')];var _0xbc19a=JSON[_0xf720('0x81')](_0x429f75[_0xf720('0x45')][_0x5dd0e2])[_0xf720('0x83')];_0x4c3576[_0xf720('0x4d')](_0xf720('0x84'),_0x222ece,_0xbc19a);}else{if(_0x429f75[_0xf720('0x45')][_0x5dd0e2]===_0xf720('0x85')){_0x4c3576[_0xf720('0x4d')]('i.'+_0x5dd0e2+'\x20IS\x20NULL');}else{_0x4c3576[_0xf720('0x4d')]('i.'+_0x5dd0e2+_0xf720('0x86'),_0x429f75[_0xf720('0x45')][_0x5dd0e2]);}}});}if(_0x429f75[_0xf720('0x45')][_0xf720('0x87')]){if(_0x429f75[_0xf720('0x45')][_0xf720('0x87')]==0x1){_0x4c3576[_0xf720('0x69')](_0xf720('0x88'));}else{_0x4c3576[_0xf720('0x69')](_0xf720('0x89'));}}if(_0x429f75[_0xf720('0x45')][_0xf720('0x8a')]){_0x32adf1=_[_0xf720('0x8b')](_0x429f75['query'][_0xf720('0x8a')])?_0x429f75[_0xf720('0x45')][_0xf720('0x8a')]:new Array(_0x429f75['query'][_0xf720('0x8a')]);_0x32adf1['forEach'](function(_0x576303){_0x55053d['or'](_0xf720('0x75'),'%,'+_0x576303+',%');});}if(_0x429f75[_0xf720('0x45')][_0xf720('0x8c')]){var _0x3fecb9=_0x429f75['query'][_0xf720('0x8c')][_0xf720('0x8d')]('\x5c','\x5c\x5c')[_0xf720('0x8d')](/'/g,'\x27\x27');if(qs[_0xf720('0x8e')](_0x3fecb9)){_0x39ee74['or']('i.id\x20LIKE\x20?',_0x3fecb9+'%')['or'](_0xf720('0x8f'),_0x3fecb9+'%');}else{_0x39ee74['or'](_0xf720('0x90'),qs[_0xf720('0x6f')](_0x3fecb9))['or'](_0xf720('0x91'),_0x3fecb9+'%');}}}_0x4c3576[_0xf720('0x4d')](_0x39ee74);_0x4c3576['group'](_0xf720('0x92'));var _0x42f924={'type':db[_0xf720('0x93')][_0xf720('0x94')][_0xf720('0x95')],'raw':!![]};var _0x79af0c=_0x4c3576[_0xf720('0x96')]();_0x79af0c[_0xf720('0x4e')](_0xf720('0x92'));_0x79af0c[_0xf720('0x4e')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xf720('0x68'));if(_0x256786[_0xf720('0x4c')]){_0x256786[_0xf720('0x4c')][_0xf720('0x35')](function(_0x1928b7){var _0x5e12bb=_0x1928b7[0x0]===_0xf720('0x97')?_0x1928b7[0x0]:'i.'+_0x1928b7[0x0];_0x4c3576['order'](_0x5e12bb,_0x1928b7[0x1]===_0xf720('0x98')?![]:!![]);});}if(!_[_0xf720('0x7c')](_0x32adf1)){_0x4c3576[_0xf720('0x69')](_0x55053d);_0x79af0c[_0xf720('0x4d')](_0xf720('0x99'),_0x32adf1);}BPromise[_0xf720('0x9a')]()[_0xf720('0x2a')](function(){if(!_0x219bc3){if(_0x429f75[_0xf720('0x45')]['SmsAccountId'])return;_0x79af0c['where'](_0xf720('0x9b'));_0x4c3576[_0xf720('0x4d')](_0xf720('0x9b'));return;}if(_0x429f75[_0xf720('0x9c')][_0xf720('0x9d')]!==_0xf720('0x9e'))return;return _0x429f75[_0xf720('0x9c')][_0xf720('0x9f')]({'attributes':['id'],'raw':!![]})['then'](function(_0x590473){if(_['isEmpty'](_0x590473)){_0x79af0c[_0xf720('0x4d')](_0xf720('0xa0'));_0x4c3576[_0xf720('0x4d')](_0xf720('0xa0'));}else{_0x79af0c[_0xf720('0x4d')](_0xf720('0x7e'),_[_0xf720('0x30')](_0x590473,'id'));_0x4c3576[_0xf720('0x4d')](_0xf720('0x7e'),_[_0xf720('0x30')](_0x590473,'id'));}});})[_0xf720('0x2a')](function(){if(_0x429f75['user'][_0xf720('0x9d')]===_0xf720('0x9e')&&!_0x219bc3&&!_0x429f75['query'][_0xf720('0x7d')])return[];return db[_0xf720('0xa1')][_0xf720('0x45')](_0x79af0c[_0xf720('0xa2')](),_0x42f924);})[_0xf720('0x2a')](function(_0x39ebd8){_0xb61de2['count']=_0x39ebd8['length'];if(_0xb61de2[_0xf720('0x25')]===0x0)return[];return db[_0xf720('0xa1')][_0xf720('0x45')](_0x3fc97d['toString'](),_0x42f924)[_0xf720('0x2a')](function(_0x348b0d){_0x703813=_[_0xf720('0xa3')](_0x348b0d,'id');_0x42f924=_[_0xf720('0xa4')](_0x42f924,{'model':db[_0xf720('0x3f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x429f75[_0xf720('0x45')][_0xf720('0x49')]){_0x256786[_0xf720('0x48')][_0xf720('0x35')](function(_0x1a3865){_0x4c3576[_0xf720('0x4e')]('i.'+_0x1a3865);});}else{_0x4c3576[_0xf720('0x4e')](_0xf720('0xa5'),'unreadMessages');_0x4c3576[_0xf720('0x4e')](_0xf720('0xa6'),_0xf720('0xa7'));_0x4c3576[_0xf720('0x4e')]('a.mandatoryDisposition',_0xf720('0xa8'));_0x4c3576[_0xf720('0x4e')]('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',_0xf720('0x97'));_0x4c3576[_0xf720('0x4e')]('i.*');_0x4c3576[_0xf720('0x4e')](_0xf720('0xa9'),'Contact.firstName');_0x4c3576[_0xf720('0x4e')](_0xf720('0xaa'),_0xf720('0xab'));_0x4c3576[_0xf720('0x4e')](_0xf720('0xac'),_0xf720('0xad'));_0x4c3576['field'](_0xf720('0xae'),_0xf720('0xaf'));_0x4c3576[_0xf720('0x4e')](_0xf720('0xb0'),_0xf720('0xb1'));_0x4c3576[_0xf720('0x4e')](_0xf720('0xb2'),_0xf720('0xb3'));_0x4c3576[_0xf720('0x4e')](_0xf720('0xb4'),'Owner.fullname');_0x4c3576[_0xf720('0x4e')](_0xf720('0xb5'),_0xf720('0xb6'));_0x4c3576['field'](_0xf720('0xb7'),_0xf720('0x32'));}if(_0x256786[_0xf720('0x23')])_0x4c3576[_0xf720('0x23')](_0x256786[_0xf720('0x23')]);if(_0x256786[_0xf720('0x22')])_0x4c3576[_0xf720('0x22')](_0x256786[_0xf720('0x22')]);return db[_0xf720('0xa1')][_0xf720('0x45')](_0x4c3576[_0xf720('0xa2')](),_0x42f924);})[_0xf720('0x2a')](function(_0x1a3026){if(_0x1a3026[_0xf720('0x66')]>0x0)_0x58df53[_0xf720('0x4d')](_0xf720('0xb8'),_[_0xf720('0x30')](_0x1a3026,'id'));return db[_0xf720('0xa1')]['query'](_0x58df53[_0xf720('0xa2')](),_0x42f924)[_0xf720('0x2a')](function(_0x294c6b){var _0x220659=_[_0xf720('0xb9')](_0x294c6b,_0xf720('0xba'));var _0x429b1b=[];_0x1a3026[_0xf720('0x35')](function(_0x42929f){_0x429b1b[_0xf720('0xbb')](updateSmsInteraction(_0x42929f,_0x703813,_0x220659));});return BPromise[_0xf720('0xbc')](_0x429b1b);});});})[_0xf720('0x2a')](function(_0x1e38ac){_0xb61de2[_0xf720('0xbd')]=_0x1e38ac;return _0xb61de2;})['then'](respondWithFilteredResult(_0x59b485,_0x256786))['catch'](handleError(_0x59b485,null));};exports[_0xf720('0xbe')]=function(_0x173485,_0x118142){var _0x411827={'raw':![],'where':{'id':_0x173485[_0xf720('0xbf')]['id']}},_0x134127={};_0x134127[_0xf720('0x43')]=_[_0xf720('0x44')](db[_0xf720('0x3f')][_0xf720('0x40')]);_0x134127[_0xf720('0x45')]=_[_0xf720('0x44')](_0x173485[_0xf720('0x45')]);_0x134127[_0xf720('0x46')]=_[_0xf720('0x47')](_0x134127['model'],_0x134127[_0xf720('0x45')]);_0x411827[_0xf720('0x48')]=_[_0xf720('0x47')](_0x134127['model'],qs[_0xf720('0x49')](_0x173485[_0xf720('0x45')][_0xf720('0x49')]));_0x411827[_0xf720('0x48')]=_0x411827[_0xf720('0x48')][_0xf720('0x66')]?_0x411827['attributes']:_0x134127[_0xf720('0x43')];if(_0x173485[_0xf720('0x45')]['includeAll']){_0x411827[_0xf720('0xc0')]=[{'all':!![]}];}_0x411827=_[_0xf720('0xa4')]({},_0x411827,_0x173485['options']);return db[_0xf720('0x3f')]['find'](_0x411827)[_0xf720('0x2a')](handleEntityNotFound(_0x118142,null))[_0xf720('0x2a')](respondWithResult(_0x118142,null))['catch'](handleError(_0x118142,null));};exports[_0xf720('0xc1')]=function(_0x5e9bf2,_0x29c9d5){return db[_0xf720('0x3f')][_0xf720('0xc1')](_0x5e9bf2['body'],{})[_0xf720('0x2a')](respondWithResult(_0x29c9d5,0xc9))[_0xf720('0x36')](handleError(_0x29c9d5,null));};exports['update']=function(_0x360f5d,_0x4e3a84){if(_0x360f5d[_0xf720('0x78')]['id']){delete _0x360f5d[_0xf720('0x78')]['id'];}return db[_0xf720('0x3f')][_0xf720('0x67')]({'where':{'id':_0x360f5d[_0xf720('0xbf')]['id']}})[_0xf720('0x2a')](handleEntityNotFound(_0x4e3a84,null))[_0xf720('0x2a')](saveUpdates(_0x360f5d[_0xf720('0x78')],null))[_0xf720('0x2a')](respondWithResult(_0x4e3a84,null))[_0xf720('0x36')](handleError(_0x4e3a84,null));};exports[_0xf720('0x29')]=function(_0x512ce4,_0x1d34d0){return db['SmsInteraction'][_0xf720('0x67')]({'where':{'id':_0x512ce4[_0xf720('0xbf')]['id']}})[_0xf720('0x2a')](handleEntityNotFound(_0x1d34d0,null))[_0xf720('0x2a')](removeEntity(_0x1d34d0,null))[_0xf720('0x36')](handleError(_0x1d34d0,null));};exports[_0xf720('0xc2')]=function(_0x3a50fa,_0x58b3d9){return db[_0xf720('0x3f')][_0xf720('0xc2')]()[_0xf720('0x2a')](respondWithResult(_0x58b3d9,null))[_0xf720('0x36')](handleError(_0x58b3d9,null));};exports[_0xf720('0xc3')]=function(_0x4cf758,_0x4c0355,_0x311d4e){return db[_0xf720('0xc4')][_0xf720('0x67')]({'where':{'id':_0x4cf758[_0xf720('0xbf')]['id']}})['then'](handleEntityNotFound(_0x4c0355,null))['then'](function(_0x1972e9){if(_0x1972e9){return _0x1972e9[_0xf720('0xc3')](_0x4cf758[_0xf720('0x78')][_0xf720('0xc5')],_[_0xf720('0xc6')](_0x4cf758[_0xf720('0x78')],[_0xf720('0xc5'),'id'])||{});}})[_0xf720('0x2a')](respondWithResult(_0x4c0355,null))[_0xf720('0x36')](handleError(_0x4c0355,null));};exports['getMessages']=function(_0xfd8211,_0x441557,_0x96be40){var _0x33b33f={'raw':![],'where':{}};var _0x2979cb={};var _0x28bf4f={'count':0x0,'rows':[]};return db[_0xf720('0x3f')][_0xf720('0xc7')]({'where':{'id':_0xfd8211['params']['id']}})['then'](handleEntityNotFound(_0x441557,null))['then'](function(_0x5c8949){if(_0x5c8949){_0x2979cb[_0xf720('0x43')]=_[_0xf720('0x44')](db[_0xf720('0xc4')][_0xf720('0x40')]);_0x2979cb[_0xf720('0x45')]=_[_0xf720('0x44')](_0xfd8211[_0xf720('0x45')]);_0x2979cb[_0xf720('0x46')]=_['intersection'](_0x2979cb[_0xf720('0x43')],_0x2979cb['query']);_0x33b33f['attributes']=_[_0xf720('0x47')](_0x2979cb[_0xf720('0x43')],qs[_0xf720('0x49')](_0xfd8211['query'][_0xf720('0x49')]));_0x33b33f['attributes']=_0x33b33f['attributes'][_0xf720('0x66')]?_0x33b33f[_0xf720('0x48')]:_0x2979cb[_0xf720('0x43')];if(!_0xfd8211[_0xf720('0x45')][_0xf720('0x4a')]('nolimit')){_0x33b33f[_0xf720('0x23')]=qs['limit'](_0xfd8211[_0xf720('0x45')]['limit']);_0x33b33f['offset']=qs[_0xf720('0x22')](_0xfd8211[_0xf720('0x45')][_0xf720('0x22')]);}_0x33b33f[_0xf720('0x4c')]=qs[_0xf720('0xc8')](_0xfd8211[_0xf720('0x45')]['sort']);_0x33b33f[_0xf720('0x4d')]=qs[_0xf720('0x46')](_['pick'](_0xfd8211[_0xf720('0x45')],_0x2979cb['filters']));_0x33b33f[_0xf720('0x4d')][_0xf720('0xba')]=_0x5c8949['id'];if(_0xfd8211[_0xf720('0x45')][_0xf720('0x8c')]){_0x33b33f[_0xf720('0x4d')]=_[_0xf720('0xa4')](_0x33b33f[_0xf720('0x4d')],{'$or':_['map'](_0x33b33f[_0xf720('0x48')],function(_0x66cee6){var _0x516014={};_0x516014[_0x66cee6]={'$like':'%'+_0xfd8211[_0xf720('0x45')]['filter']+'%'};return _0x516014;})});}if(_0xfd8211[_0xf720('0x45')][_0xf720('0x82')]){var _0x34de4c=_0xfd8211[_0xf720('0x45')]['$gte'][_0xf720('0x34')](',');var _0x5ab583={};_0x5ab583[_0x34de4c[0x0]]={'$gte':moment(_0x34de4c[0x1])[_0xf720('0xc9')](_0xf720('0xca'))};_0x33b33f[_0xf720('0x4d')]=_[_0xf720('0xa4')](_0x33b33f[_0xf720('0x4d')],_0x5ab583);}_0x33b33f=_[_0xf720('0xa4')]({},_0x33b33f,_0xfd8211[_0xf720('0xcb')]);return db[_0xf720('0xc4')]['count']({'where':_0x33b33f[_0xf720('0x4d')]})[_0xf720('0x2a')](function(_0xa0ce76){_0x28bf4f[_0xf720('0x25')]=_0xa0ce76;if(_0xfd8211[_0xf720('0x45')][_0xf720('0xcc')]){_0x33b33f[_0xf720('0xc0')]=[{'all':!![]}];}return db[_0xf720('0xc4')][_0xf720('0xcd')](_0x33b33f);})['then'](function(_0x3a0ccf){_0x28bf4f[_0xf720('0xbd')]=_0x3a0ccf;return _0x28bf4f;});}})[_0xf720('0x2a')](respondWithFilteredResult(_0x441557,_0x33b33f))['catch'](handleError(_0x441557,null));};exports[_0xf720('0xce')]=function(_0x14cb28,_0x4a2be1,_0x2f38d3){return db[_0xf720('0x3f')]['find']({'where':{'id':_0x14cb28[_0xf720('0xbf')]['id']}})['then'](handleEntityNotFound(_0x4a2be1,null))[_0xf720('0x2a')](function(_0x3da4e7){if(_0x3da4e7){return _0x3da4e7[_0xf720('0xcf')](_0x14cb28[_0xf720('0x78')][_0xf720('0xc5')],_[_0xf720('0xc6')](_0x14cb28[_0xf720('0x78')],['ids','id'])||{})[_0xf720('0xd0')](function(){return db['Tag'][_0xf720('0xcd')]({'attributes':['id',_0xf720('0x2d'),_0xf720('0x4f')],'where':{'id':_0x14cb28[_0xf720('0x78')][_0xf720('0xc5')]}});})[_0xf720('0x2a')](function(_0x2ce7e0){socket[_0xf720('0xd1')](_0xf720('0xd2'),{'id':Number(_0x14cb28[_0xf720('0xbf')]['id']),'tags':_0x2ce7e0||[]});return{'id':Number(_0x14cb28[_0xf720('0xbf')]['id']),'tags':_0x2ce7e0||[]};});}})['then'](respondWithResult(_0x4a2be1,null))[_0xf720('0x36')](handleError(_0x4a2be1,null));};exports[_0xf720('0xd3')]=function(_0x1fd739,_0x306336,_0x3abb5d){return db['SmsInteraction'][_0xf720('0x67')]({'where':{'id':_0x1fd739[_0xf720('0xbf')]['id']}})[_0xf720('0x2a')](handleEntityNotFound(_0x306336,null))[_0xf720('0x2a')](function(_0x20377b){if(_0x20377b){return _0x20377b[_0xf720('0xd3')](_0x1fd739[_0xf720('0x45')][_0xf720('0xc5')]);}})[_0xf720('0x2a')](respondWithStatusCode(_0x306336,null))['catch'](handleError(_0x306336,null));};exports['download']=function(_0x173f3a,_0x17e3ea){var _0x27245b=moment()[_0xf720('0xd4')]()['toString']();var _0x3170b3=path['join'](config[_0xf720('0xd5')],'server',_0xf720('0xd6'),'tmp');var _0x5884d8=path[_0xf720('0xd7')](config[_0xf720('0xd5')],_0xf720('0xd8'),_0xf720('0xd6'),_0xf720('0xd9'));var _0x3cb32e=path['join'](_0x3170b3,_0x27245b);var _0xc4d28e=util[_0xf720('0xc9')](_0xf720('0xda'),_0x173f3a[_0xf720('0xbf')]['id'],_0x27245b);var _0x10fca9=path[_0xf720('0xd7')](_0x3170b3,_0xc4d28e);var _0x5cf2e2=[];_0x5cf2e2['push']({'model':db[_0xf720('0x76')],'as':_0xf720('0x76'),'attributes':['id','fullname'],'raw':!![]});_0x5cf2e2['push']({'model':db['CmContact'],'as':'Contact','attributes':['id','firstName',_0xf720('0xdb')],'raw':!![]});var _0x429487=[{'model':db[_0xf720('0xc4')],'as':_0xf720('0xdc'),'attributes':['id',_0xf720('0x78'),_0xf720('0x80'),_0xf720('0xdd'),_0xf720('0xde'),_0xf720('0x87')],'include':_0x5cf2e2}];_0x429487[_0xf720('0xbb')]({'model':db[_0xf720('0xdf')],'as':_0xf720('0xe0'),'attributes':['id',_0xf720('0x2d')]});_0x429487[_0xf720('0xbb')]({'model':db['User'],'as':'Owner','attributes':['id','fullname']});return db[_0xf720('0x3f')][_0xf720('0x67')]({'where':{'id':_0x173f3a[_0xf720('0xbf')]['id']},'include':_0x429487})['then'](handleEntityNotFound(_0x17e3ea,null))[_0xf720('0x2a')](function(_0x3c93ae){if(_0x3c93ae){var _0x50d030=_0x3c93ae['get']({'plain':!![]});fs['mkdirSync'](_0x3cb32e);var _0x4de0d4={'channel':_0xf720('0xe1'),'account':_0x50d030[_0xf720('0xe0')][_0xf720('0x2d')],'agent':_0x50d030[_0xf720('0xe2')]?_0x50d030[_0xf720('0xe2')][_0xf720('0x31')]:_0xf720('0xe3'),'createdAt':moment(_0x50d030[_0xf720('0x80')])[_0xf720('0xc9')](_0xf720('0xca'))[_0xf720('0xa2')](),'closedAt':_0x50d030['closed']?moment(_0x50d030[_0xf720('0xe4')])[_0xf720('0xc9')](_0xf720('0xca'))['toString']():'','disposition':_0x50d030['disposition'],'messages':_(_0x50d030[_0xf720('0xdc')])[_0xf720('0x8c')]({'secret':![]})[_0xf720('0x30')](function(_0x38423f){return{'date':moment(_0x38423f[_0xf720('0x80')])[_0xf720('0xc9')](_0xf720('0xca'))[_0xf720('0xa2')](),'sender':_0x38423f['direction']===_0xf720('0xe5')?_0x38423f['User']?_0x38423f[_0xf720('0x76')]['fullname']:_0xf720('0xe6'):_0x38423f[_0xf720('0xe7')][_0xf720('0xe8')]+(_0x38423f['Contact']['lastName']?'\x20'+_0x38423f['Contact'][_0xf720('0xdb')]:''),'body':_0x38423f[_0xf720('0x78')],'direction':_0x38423f[_0xf720('0xdd')]==='out'?'A':'C','secret':_0x38423f[_0xf720('0xde')],'read':_0x38423f['read']};})[_0xf720('0x70')]()};return ejs['renderFile'](path['join'](config['root'],'server',_0xf720('0xe9'),_0xf720('0xea')),{'interaction':_0x4de0d4})[_0xf720('0x2a')](function(_0x55b530){var _0x34c312=path[_0xf720('0xd7')](_0x3cb32e,'transcript-'+_0x50d030['id']+'-'+_0x27245b+_0xf720('0xeb'));var _0x5ed1e1={'path':_0x34c312,'channel':_0xf720('0xe1'),'interactionId':_0x50d030['id']};return pdf[_0xf720('0xec')](_0x55b530,_0x5ed1e1);})['then'](function(){return new BPromise(function(_0x294006,_0x3ca96f){zipdir(_0x3cb32e,{'saveTo':_0x10fca9},function(_0x17b336,_0x34f91a){if(_0x17b336)return _0x3ca96f(_0x17b336);return _0x294006(_0x34f91a);});})[_0xf720('0x2a')](function(){return new BPromise(function(_0x8a955,_0x57f8a2){rimraf(_0x3cb32e,function(_0x5915dc){if(_0x5915dc)_0x57f8a2(_0x5915dc);return _0x8a955();});});})[_0xf720('0x2a')](function(){return _0x17e3ea[_0xf720('0xed')](_0x10fca9,_0xc4d28e,function(_0x17f28b){if(_0x17f28b){console[_0xf720('0xee')]('err',_0x17f28b);}else{fs['unlinkSync'](_0x10fca9);}});});});}else{return _0x17e3ea[_0xf720('0x1e')](0xc8);}})[_0xf720('0x36')](handleError(_0x17e3ea,null));};
\ No newline at end of file
+var _0x330d=['search','sqlOperator','conditions','find','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','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','keys','some','compact','isEmpty','SmsAccountId','i.SmsAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','agent','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','role','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','Contact.firstName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','all','rawAttributes','options','create','body','params','describe','ids','omit','getMessages','findOne','SmsMessage','nolimit','format','includeAll','include','findAll','rows','setTags','spread','removeTags','unix','join','root','server','files','tmp','transcript-%d-%s.zip','fullname','CmContact','Contact','firstName','lastName','direction','secret','SmsAccount','Owner','get','mkdirSync','Sms','Account','N.A.','closedAt','YYYY-MM-DD\x20HH:mm:ss','out','System','renderFile','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','download','log','err','unlinkSync','rimraf','zip-dir','request-promise','moment','bluebird','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/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','./smsInteraction.socket','sendStatus','status','end','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','error','stack','name','send','Users','map','split','forEach','push','TagIds','catch','waiting','talking','unmanaged','total','closed','UserId','answered','index','SmsInteraction','type','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','field','color','from','select','u.id','u.fullname','ui.SmsInteractionId','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','sms_accounts','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','tools_tags','t.id\x20=\x20it.TagId','expr'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x330d,0x176));var _0xd330=function(_0x3fc97b,_0x20ca29){_0x3fc97b=_0x3fc97b-0x0;var _0x3a0c82=_0x330d[_0x3fc97b];return _0x3a0c82;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd330('0x0'));var zipdir=require(_0xd330('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd330('0x2'));var moment=require(_0xd330('0x3'));var BPromise=require(_0xd330('0x4'));var Mustache=require(_0xd330('0x5'));var util=require(_0xd330('0x6'));var path=require(_0xd330('0x7'));var sox=require(_0xd330('0x8'));var csv=require('to-csv');var ejs=require(_0xd330('0x9'));var fs=require('fs');var fs_extra=require(_0xd330('0xa'));var _=require(_0xd330('0xb'));var squel=require(_0xd330('0xc'));var crypto=require('crypto');var jsforce=require(_0xd330('0xd'));var deskjs=require(_0xd330('0xe'));var toCsv=require(_0xd330('0xf'));var querystring=require('querystring');var Papa=require(_0xd330('0x10'));var Redis=require(_0xd330('0x11'));var authService=require(_0xd330('0x12'));var qs=require(_0xd330('0x13'));var as=require(_0xd330('0x14'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0xd330('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0xd330('0x16'));var config=require(_0xd330('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xd330('0x18'))['db'];config['redis']=_[_0xd330('0x19')](config[_0xd330('0x1a')],{'host':_0xd330('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xd330('0x1c'))['register'](socket);function respondWithStatusCode(_0x5ceac3,_0x1ea4bb){_0x1ea4bb=_0x1ea4bb||0xcc;return function(_0x5bc27b){if(_0x5bc27b){return _0x5ceac3[_0xd330('0x1d')](_0x1ea4bb);}return _0x5ceac3[_0xd330('0x1e')](_0x1ea4bb)[_0xd330('0x1f')]();};}function respondWithResult(_0x1c435f,_0x22e2fe){_0x22e2fe=_0x22e2fe||0xc8;return function(_0xc1479d){if(_0xc1479d){return _0x1c435f[_0xd330('0x1e')](_0x22e2fe)['json'](_0xc1479d);}};}function respondWithFilteredResult(_0x2d4523,_0x4bdba8){return function(_0x6b6eca){if(_0x6b6eca){var _0x4b35f6=typeof _0x4bdba8[_0xd330('0x20')]===_0xd330('0x21')&&typeof _0x4bdba8[_0xd330('0x22')]===_0xd330('0x21');var _0x21b5bb=_0x6b6eca['count'];var _0x4c24b3=_0x4b35f6?0x0:_0x4bdba8['offset'];var _0x229d12=_0x4b35f6?_0x6b6eca[_0xd330('0x23')]:_0x4bdba8['offset']+_0x4bdba8[_0xd330('0x22')];var _0x155d39;if(_0x229d12>=_0x21b5bb){_0x229d12=_0x21b5bb;_0x155d39=0xc8;}else{_0x155d39=0xce;}_0x2d4523[_0xd330('0x1e')](_0x155d39);return _0x2d4523['set'](_0xd330('0x24'),_0x4c24b3+'-'+_0x229d12+'/'+_0x21b5bb)['json'](_0x6b6eca);}return null;};}function patchUpdates(_0x167906){return function(_0x5a6850){try{jsonpatch[_0xd330('0x25')](_0x5a6850,_0x167906,!![]);}catch(_0x2f1c35){return BPromise['reject'](_0x2f1c35);}return _0x5a6850[_0xd330('0x26')]();};}function saveUpdates(_0x4f72e2,_0x3af1d7){return function(_0xa39db2){if(_0xa39db2){return _0xa39db2[_0xd330('0x27')](_0x4f72e2)[_0xd330('0x28')](function(_0x5b44ca){return _0x5b44ca;});}return null;};}function removeEntity(_0x409b5c,_0x243622){return function(_0x13ece0){if(_0x13ece0){return _0x13ece0[_0xd330('0x29')]()[_0xd330('0x28')](function(){_0x409b5c[_0xd330('0x1e')](0xcc)[_0xd330('0x1f')]();});}};}function handleEntityNotFound(_0x4c12c9,_0x2a436e){return function(_0x3a6976){if(!_0x3a6976){_0x4c12c9[_0xd330('0x1d')](0x194);}return _0x3a6976;};}function handleError(_0xb6c5ba,_0xc06aed){_0xc06aed=_0xc06aed||0x1f4;return function(_0x4ed13b){logger[_0xd330('0x2a')](_0x4ed13b[_0xd330('0x2b')]);if(_0x4ed13b['name']){delete _0x4ed13b[_0xd330('0x2c')];}_0xb6c5ba[_0xd330('0x1e')](_0xc06aed)[_0xd330('0x2d')](_0x4ed13b);};}function getInteractionUsers(_0x441c09,_0x3391a5){return new BPromise(function(_0xea1cc,_0xff28af){try{if(_0x3391a5[_0x441c09['id']]){_0x441c09[_0xd330('0x2e')]=_[_0xd330('0x2f')](_0x3391a5[_0x441c09['id']],function(_0x521976){return{'id':_0x521976['id'],'fullname':_0x521976['fullname']};});}}catch(_0x52fee7){_0xff28af(_0x52fee7);}_0xea1cc(_0x441c09);});}function getInteractionTags(_0x537624,_0x138747){return new BPromise(function(_0x20c96c,_0x31384e){try{if(_0x537624['TagIds']){_0x537624['Tags']=[];_0x537624['TagIds'][_0xd330('0x30')](',')[_0xd330('0x31')](function(_0x288b1e){_0x537624['Tags'][_0xd330('0x32')](_0x138747[_0x288b1e]);});}delete _0x537624[_0xd330('0x33')];}catch(_0x58aaa2){_0x31384e(_0x58aaa2);}_0x20c96c(_0x537624);});}function updateSmsInteraction(_0x437a0e,_0xe8fd6b,_0x1d4801){return new BPromise(function(_0x30e28c,_0x1fe21f){return getInteractionUsers(_0x437a0e,_0x1d4801)['then'](function(_0x5d9f4b){return getInteractionTags(_0x5d9f4b,_0xe8fd6b);})[_0xd330('0x28')](function(_0x5d46c5){return getStateInteraction(_0x5d46c5);})['then'](function(_0x2c1a57){_0x30e28c(_0x2c1a57);})[_0xd330('0x34')](function(_0x35d212){_0x1fe21f(_0x35d212);});});}function getStateInteraction(_0x3eacc8){return new BPromise(function(_0x30f414){_0x3eacc8[_0xd330('0x35')]=0x0;_0x3eacc8[_0xd330('0x36')]=0x0;_0x3eacc8['answered']=0x0;_0x3eacc8[_0xd330('0x37')]=0x0;_0x3eacc8[_0xd330('0x38')]=0x0;if(!_0x3eacc8[_0xd330('0x39')]&&!_0x3eacc8[_0xd330('0x3a')]){_0x3eacc8[_0xd330('0x35')]+=0x1;}if(!_0x3eacc8['closed']&&_0x3eacc8[_0xd330('0x3a')]){_0x3eacc8[_0xd330('0x36')]+=0x1;if(_0x3eacc8[_0xd330('0x35')]){_0x3eacc8['waiting']-=0x1;}}if(_0x3eacc8[_0xd330('0x39')]&&_0x3eacc8[_0xd330('0x3a')]){_0x3eacc8[_0xd330('0x3b')]+=0x1;if(_0x3eacc8[_0xd330('0x36')]){_0x3eacc8['talking']-=0x1;}}if(_0x3eacc8['closed']&&!_0x3eacc8['UserId']){_0x3eacc8[_0xd330('0x37')]+=0x1;if(_0x3eacc8['waiting']){_0x3eacc8[_0xd330('0x35')]-=0x1;}}_0x3eacc8[_0xd330('0x38')]+=0x1;_0x30f414(_0x3eacc8);});}exports[_0xd330('0x3c')]=function(_0x3b0888,_0x543823){var _0x5a5c12={},_0x15dc8e={},_0x4e1638={'count':0x0,'rows':[]};var _0x330c1e=_[_0xd330('0x2f')](db[_0xd330('0x3d')]['rawAttributes'],function(_0x43f271){return{'name':_0x43f271['fieldName'],'type':_0x43f271[_0xd330('0x3e')]['key']};});_0x15dc8e[_0xd330('0x3f')]=_[_0xd330('0x2f')](_0x330c1e,_0xd330('0x2c'));_0x15dc8e[_0xd330('0x40')]=_['keys'](_0x3b0888[_0xd330('0x40')]);_0x15dc8e[_0xd330('0x41')]=_['intersection'](_0x15dc8e[_0xd330('0x3f')],_0x15dc8e['query']);_0x5a5c12[_0xd330('0x42')]=_[_0xd330('0x43')](_0x15dc8e[_0xd330('0x3f')],qs[_0xd330('0x44')](_0x3b0888[_0xd330('0x40')]['fields']));_0x5a5c12[_0xd330('0x42')]=_0x5a5c12[_0xd330('0x42')][_0xd330('0x45')]?_0x5a5c12[_0xd330('0x42')]:_0x15dc8e['model'];if(!_0x3b0888[_0xd330('0x40')][_0xd330('0x46')]('nolimit')){_0x5a5c12[_0xd330('0x22')]=qs[_0xd330('0x22')](_0x3b0888[_0xd330('0x40')][_0xd330('0x22')]);_0x5a5c12['offset']=qs['offset'](_0x3b0888[_0xd330('0x40')][_0xd330('0x20')]);}_0x5a5c12[_0xd330('0x47')]=qs['sort'](_0x3b0888[_0xd330('0x40')][_0xd330('0x48')]);_0x5a5c12[_0xd330('0x49')]=qs[_0xd330('0x41')](_[_0xd330('0x4a')](_0x3b0888['query'],_0x15dc8e[_0xd330('0x41')]),_0x330c1e);var _0x560254=[];var _0x361dbb=squel['select']()['field']('id')[_0xd330('0x4b')](_0xd330('0x2c'))[_0xd330('0x4b')](_0xd330('0x4c'))[_0xd330('0x4d')]('tools_tags');var _0x77fa99=squel[_0xd330('0x4e')]()[_0xd330('0x4b')](_0xd330('0x4f'))[_0xd330('0x4b')](_0xd330('0x50'))[_0xd330('0x4b')](_0xd330('0x51'))[_0xd330('0x4d')]('user_has_sms_interactions','ui')[_0xd330('0x52')](_0xd330('0x53'),'u',_0xd330('0x54'));var _0x1827b5=squel[_0xd330('0x4e')]()[_0xd330('0x4d')]('sms_interactions','i')[_0xd330('0x52')](_0xd330('0x55'),'c',_0xd330('0x56'))['left_join'](_0xd330('0x53'),'o','o.id\x20=\x20i.UserId')['left_join'](_0xd330('0x57'),'a','a.id\x20=\x20i.SmsAccountId')['left_join'](_0xd330('0x58'),'me',_0xd330('0x59'))[_0xd330('0x52')](_0xd330('0x5a'),'it','it.SmsInteractionId\x20=\x20i.id')[_0xd330('0x52')](_0xd330('0x5b'),'t',_0xd330('0x5c'));var _0x3136ed=squel[_0xd330('0x5d')]();var _0x158e89=[];var _0x2d01ba=squel[_0xd330('0x5d')]();var _0x2f25f7;if(_0x3b0888['query'][_0xd330('0x5e')]){_0x2f25f7=as['parseSearch'](_0x3b0888[_0xd330('0x40')]['search']);var _0x2933a9=_0x2f25f7[_0xd330('0x5f')];for(var _0x442c6f=0x0;_0x442c6f<_0x2f25f7[_0xd330('0x60')][_0xd330('0x45')];_0x442c6f++){var _0x2d2011=_0x2f25f7[_0xd330('0x60')][_0x442c6f];var _0x471bc4='i';var _0x1678d0=_[_0xd330('0x61')](_0x330c1e,[_0xd330('0x2c'),_0x2d2011[_0xd330('0x4b')]]);if(!_0x1678d0){switch(_0x2d2011[_0xd330('0x4b')]){case'unreadMessages':if(_0x2d2011[_0xd330('0x62')]==0x1){_0x1827b5[_0xd330('0x63')]('`'+_0x2d2011['field']+_0xd330('0x64'));}else{_0x1827b5[_0xd330('0x63')]('`'+_0x2d2011[_0xd330('0x4b')]+_0xd330('0x65'));}break;case'Contact':if(_0x2d2011[_0xd330('0x66')]===_0xd330('0x67')){if(_0x2d2011[_0xd330('0x62')][_0xd330('0x30')]('\x20')[_0xd330('0x45')]>0x1){_0x3136ed[_0x2933a9](_0xd330('0x68'),qs[_0xd330('0x69')](_0x2d2011['value']),null);}else{var _0x66cdd3='%'+_0x2d2011[_0xd330('0x62')]+'%';_0x3136ed[_0x2933a9](_0xd330('0x6a'),_0x66cdd3,_0x66cdd3,_0x66cdd3);}}else{_0x1678d0=_['find'](_0x330c1e,[_0xd330('0x2c'),_0xd330('0x6b')]);_0x2d2011['field']=_0xd330('0x6b');_0x5be33c=as[_0xd330('0x6c')](_0x471bc4,_0x1678d0[_0xd330('0x3e')],_0x2d2011);_0x3136ed[_0x2933a9](_0x5be33c[_0xd330('0x6d')],_0x5be33c[_0xd330('0x62')][_0xd330('0x6e')],_0x5be33c[_0xd330('0x62')]['end']);}break;case _0xd330('0x6f'):var _0x4d4ec3=_0x2d2011[_0xd330('0x62')]['split'](',')[_0xd330('0x2f')](function(_0x52db9d){return Number(_0x52db9d);});_0x4d4ec3['forEach'](function(_0x1d2243){_0x2d01ba['or'](_0xd330('0x70'),'%,'+_0x1d2243+',%');});_0x158e89=_['union'](_0x158e89,_0x4d4ec3);break;case _0xd330('0x71'):if(_0x2d2011['operator']===_0xd330('0x67')){_0x3136ed[_0x2933a9]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x2d2011[_0xd330('0x62')]+'%',null);}else{_0x1678d0=_[_0xd330('0x61')](_0x330c1e,[_0xd330('0x2c'),_0xd330('0x3a')]);_0x2d2011[_0xd330('0x4b')]=_0xd330('0x3a');_0x5be33c=as[_0xd330('0x6c')](_0x471bc4,_0x1678d0[_0xd330('0x3e')],_0x2d2011);_0x3136ed[_0x2933a9](_0x5be33c['text'],_0x5be33c['value'][_0xd330('0x6e')],_0x5be33c[_0xd330('0x62')][_0xd330('0x1f')]);}break;case'body':_0x5be33c=as[_0xd330('0x6c')]('me',null,_0x2d2011);_0x3136ed[_0x2933a9](_0x5be33c[_0xd330('0x6d')],_0x5be33c['value']['start'],_0x5be33c[_0xd330('0x62')][_0xd330('0x1f')]);break;}}else{var _0x5be33c=as[_0xd330('0x6c')](_0x471bc4,_0x1678d0[_0xd330('0x3e')],_0x2d2011);_0x3136ed[_0x2933a9](_0x5be33c[_0xd330('0x6d')],_0x5be33c[_0xd330('0x62')][_0xd330('0x6e')],_0x5be33c[_0xd330('0x62')][_0xd330('0x1f')]);}}}else{var _0x5549e4=_(_0x3b0888[_0xd330('0x40')])[_0xd330('0x72')]()[_0xd330('0x2f')](function(_0x2f534d){return _[_0xd330('0x73')](_0x330c1e,['name',_0x2f534d])?_0x2f534d:undefined;})[_0xd330('0x74')]()['value']();if(!_[_0xd330('0x75')](_0x5549e4)){_0x5549e4['forEach'](function(_0x13225f){if(_0x13225f===_0xd330('0x76')){_0x1827b5[_0xd330('0x49')](_0xd330('0x77'),[][_0xd330('0x78')](_0x3b0888['query'][_0x13225f]));}else if(_0x13225f===_0xd330('0x79')){var _0x3a534=JSON[_0xd330('0x7a')](_0x3b0888[_0xd330('0x40')][_0x13225f])[_0xd330('0x7b')];var _0x3cc4c0=JSON[_0xd330('0x7a')](_0x3b0888[_0xd330('0x40')][_0x13225f])[_0xd330('0x7c')];_0x1827b5[_0xd330('0x49')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x3a534,_0x3cc4c0);}else{if(_0x3b0888[_0xd330('0x40')][_0x13225f]===_0xd330('0x7d')){_0x1827b5[_0xd330('0x49')]('i.'+_0x13225f+_0xd330('0x7e'));}else{_0x1827b5[_0xd330('0x49')]('i.'+_0x13225f+_0xd330('0x7f'),_0x3b0888['query'][_0x13225f]);}}});}if(_0x3b0888[_0xd330('0x40')]['read']){if(_0x3b0888[_0xd330('0x40')][_0xd330('0x80')]==0x1){_0x1827b5[_0xd330('0x63')](_0xd330('0x81'));}else{_0x1827b5[_0xd330('0x63')](_0xd330('0x82'));}}if(_0x3b0888[_0xd330('0x40')]['tag']){_0x158e89=_[_0xd330('0x83')](_0x3b0888['query'][_0xd330('0x84')])?_0x3b0888[_0xd330('0x40')][_0xd330('0x84')]:new Array(_0x3b0888[_0xd330('0x40')][_0xd330('0x84')]);_0x158e89[_0xd330('0x31')](function(_0x4e4450){_0x2d01ba['or'](_0xd330('0x70'),'%,'+_0x4e4450+',%');});}if(_0x3b0888[_0xd330('0x40')][_0xd330('0x85')]){var _0x19842c=_0x3b0888['query'][_0xd330('0x85')][_0xd330('0x86')]('\x5c','\x5c\x5c')[_0xd330('0x86')](/'/g,'\x27\x27');if(qs[_0xd330('0x87')](_0x19842c)){_0x3136ed['or']('i.id\x20LIKE\x20?',_0x19842c+'%')['or']('i.phone\x20LIKE\x20?',_0x19842c+'%');}else{_0x3136ed['or'](_0xd330('0x88'),qs['getFullTextValue'](_0x19842c))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x19842c+'%');}}}_0x1827b5[_0xd330('0x49')](_0x3136ed);_0x1827b5[_0xd330('0x89')](_0xd330('0x8a'));var _0x53792d={'type':db[_0xd330('0x8b')]['QueryTypes'][_0xd330('0x8c')],'raw':!![]};var _0x5ee522=_0x1827b5[_0xd330('0x8d')]();_0x5ee522[_0xd330('0x4b')]('i.id');_0x5ee522['field'](_0xd330('0x8e'),_0xd330('0x8f'));if(_0x5a5c12[_0xd330('0x47')]){_0x5a5c12[_0xd330('0x47')][_0xd330('0x31')](function(_0x5b3aa6){var _0x3fc267=_0x5b3aa6[0x0]===_0xd330('0x90')?_0x5b3aa6[0x0]:'i.'+_0x5b3aa6[0x0];_0x1827b5['order'](_0x3fc267,_0x5b3aa6[0x1]===_0xd330('0x91')?![]:!![]);});}if(!_[_0xd330('0x75')](_0x158e89)){_0x1827b5['having'](_0x2d01ba);_0x5ee522[_0xd330('0x49')](_0xd330('0x92'),_0x158e89);}BPromise[_0xd330('0x93')]()['then'](function(){if(!_0x2f25f7){if(_0x3b0888[_0xd330('0x40')][_0xd330('0x76')])return;_0x5ee522[_0xd330('0x49')](_0xd330('0x94'));_0x1827b5['where']('i.SmsAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x3b0888[_0xd330('0x95')]['role']!==_0xd330('0x96'))return;return _0x3b0888['user'][_0xd330('0x97')]({'attributes':['id'],'raw':!![]})[_0xd330('0x28')](function(_0xb72437){if(_['isEmpty'](_0xb72437)){_0x5ee522[_0xd330('0x49')]('i.SmsAccountId\x20IS\x20NULL');_0x1827b5[_0xd330('0x49')](_0xd330('0x98'));}else{_0x5ee522[_0xd330('0x49')](_0xd330('0x77'),_[_0xd330('0x2f')](_0xb72437,'id'));_0x1827b5[_0xd330('0x49')](_0xd330('0x77'),_['map'](_0xb72437,'id'));}});})['then'](function(){if(_0x3b0888['user'][_0xd330('0x99')]===_0xd330('0x96')&&!_0x2f25f7&&!_0x3b0888['query'][_0xd330('0x76')])return[];return db[_0xd330('0x9a')][_0xd330('0x40')](_0x5ee522[_0xd330('0x9b')](),_0x53792d);})[_0xd330('0x28')](function(_0x5939f7){_0x4e1638[_0xd330('0x23')]=_0x5939f7[_0xd330('0x45')];if(_0x4e1638[_0xd330('0x23')]===0x0)return[];return db[_0xd330('0x9a')][_0xd330('0x40')](_0x361dbb[_0xd330('0x9b')](),_0x53792d)[_0xd330('0x28')](function(_0x546e1f){_0x560254=_[_0xd330('0x9c')](_0x546e1f,'id');_0x53792d=_[_0xd330('0x9d')](_0x53792d,{'model':db[_0xd330('0x3d')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3b0888[_0xd330('0x40')]['fields']){_0x5a5c12['attributes'][_0xd330('0x31')](function(_0xcb21a6){_0x1827b5[_0xd330('0x4b')]('i.'+_0xcb21a6);});}else{_0x1827b5[_0xd330('0x4b')](_0xd330('0x8e'),_0xd330('0x8f'));_0x1827b5[_0xd330('0x4b')](_0xd330('0x9e'),_0xd330('0x9f'));_0x1827b5[_0xd330('0x4b')](_0xd330('0xa0'),_0xd330('0xa1'));_0x1827b5[_0xd330('0x4b')](_0xd330('0xa2'),'contactName');_0x1827b5[_0xd330('0x4b')]('i.*');_0x1827b5['field'](_0xd330('0xa3'),_0xd330('0xa4'));_0x1827b5[_0xd330('0x4b')]('c.lastName',_0xd330('0xa5'));_0x1827b5[_0xd330('0x4b')](_0xd330('0xa6'),_0xd330('0xa7'));_0x1827b5['field']('c.phone',_0xd330('0xa8'));_0x1827b5['field'](_0xd330('0xa9'),_0xd330('0xaa'));_0x1827b5[_0xd330('0x4b')](_0xd330('0xab'),_0xd330('0xac'));_0x1827b5[_0xd330('0x4b')](_0xd330('0xad'),'Owner.fullname');_0x1827b5[_0xd330('0x4b')](_0xd330('0xae'),'Owner.internal');_0x1827b5[_0xd330('0x4b')](_0xd330('0xaf'),_0xd330('0x33'));}if(_0x5a5c12[_0xd330('0x22')])_0x1827b5[_0xd330('0x22')](_0x5a5c12['limit']);if(_0x5a5c12[_0xd330('0x20')])_0x1827b5[_0xd330('0x20')](_0x5a5c12[_0xd330('0x20')]);return db[_0xd330('0x9a')][_0xd330('0x40')](_0x1827b5['toString'](),_0x53792d);})[_0xd330('0x28')](function(_0x42983e){if(_0x42983e[_0xd330('0x45')]>0x0)_0x77fa99[_0xd330('0x49')](_0xd330('0xb0'),_[_0xd330('0x2f')](_0x42983e,'id'));return db[_0xd330('0x9a')][_0xd330('0x40')](_0x77fa99[_0xd330('0x9b')](),_0x53792d)[_0xd330('0x28')](function(_0x5ac792){var _0x510dcb=_[_0xd330('0xb1')](_0x5ac792,_0xd330('0xb2'));var _0x17a85c=[];_0x42983e[_0xd330('0x31')](function(_0x496746){_0x17a85c[_0xd330('0x32')](updateSmsInteraction(_0x496746,_0x560254,_0x510dcb));});return BPromise[_0xd330('0xb3')](_0x17a85c);});});})[_0xd330('0x28')](function(_0x1e2373){_0x4e1638['rows']=_0x1e2373;return _0x4e1638;})['then'](respondWithFilteredResult(_0x543823,_0x5a5c12))[_0xd330('0x34')](handleError(_0x543823,null));};exports['show']=function(_0x57137a,_0xebd23b){var _0x3d0cdf={'raw':![],'where':{'id':_0x57137a['params']['id']}},_0x5b0373={};_0x5b0373['model']=_[_0xd330('0x72')](db[_0xd330('0x3d')][_0xd330('0xb4')]);_0x5b0373[_0xd330('0x40')]=_[_0xd330('0x72')](_0x57137a[_0xd330('0x40')]);_0x5b0373[_0xd330('0x41')]=_[_0xd330('0x43')](_0x5b0373['model'],_0x5b0373['query']);_0x3d0cdf[_0xd330('0x42')]=_[_0xd330('0x43')](_0x5b0373[_0xd330('0x3f')],qs[_0xd330('0x44')](_0x57137a[_0xd330('0x40')][_0xd330('0x44')]));_0x3d0cdf['attributes']=_0x3d0cdf[_0xd330('0x42')][_0xd330('0x45')]?_0x3d0cdf[_0xd330('0x42')]:_0x5b0373[_0xd330('0x3f')];if(_0x57137a[_0xd330('0x40')]['includeAll']){_0x3d0cdf['include']=[{'all':!![]}];}_0x3d0cdf=_[_0xd330('0x9d')]({},_0x3d0cdf,_0x57137a[_0xd330('0xb5')]);return db[_0xd330('0x3d')][_0xd330('0x61')](_0x3d0cdf)[_0xd330('0x28')](handleEntityNotFound(_0xebd23b,null))[_0xd330('0x28')](respondWithResult(_0xebd23b,null))[_0xd330('0x34')](handleError(_0xebd23b,null));};exports[_0xd330('0xb6')]=function(_0x50b558,_0x3e3cad){return db[_0xd330('0x3d')][_0xd330('0xb6')](_0x50b558[_0xd330('0xb7')],{})[_0xd330('0x28')](respondWithResult(_0x3e3cad,0xc9))['catch'](handleError(_0x3e3cad,null));};exports['update']=function(_0x353aa4,_0x2f12a0){if(_0x353aa4['body']['id']){delete _0x353aa4['body']['id'];}return db[_0xd330('0x3d')][_0xd330('0x61')]({'where':{'id':_0x353aa4[_0xd330('0xb8')]['id']}})[_0xd330('0x28')](handleEntityNotFound(_0x2f12a0,null))['then'](saveUpdates(_0x353aa4[_0xd330('0xb7')],null))[_0xd330('0x28')](respondWithResult(_0x2f12a0,null))[_0xd330('0x34')](handleError(_0x2f12a0,null));};exports['destroy']=function(_0x2c9db5,_0x555267){return db[_0xd330('0x3d')]['find']({'where':{'id':_0x2c9db5[_0xd330('0xb8')]['id']}})[_0xd330('0x28')](handleEntityNotFound(_0x555267,null))[_0xd330('0x28')](removeEntity(_0x555267,null))['catch'](handleError(_0x555267,null));};exports[_0xd330('0xb9')]=function(_0x53e992,_0x440e58){return db[_0xd330('0x3d')]['describe']()[_0xd330('0x28')](respondWithResult(_0x440e58,null))[_0xd330('0x34')](handleError(_0x440e58,null));};exports['addMessage']=function(_0x3fe390,_0x1495c1,_0x50c988){return db['SmsMessage'][_0xd330('0x61')]({'where':{'id':_0x3fe390['params']['id']}})[_0xd330('0x28')](handleEntityNotFound(_0x1495c1,null))[_0xd330('0x28')](function(_0x1a57e0){if(_0x1a57e0){return _0x1a57e0['addMessage'](_0x3fe390['body'][_0xd330('0xba')],_[_0xd330('0xbb')](_0x3fe390[_0xd330('0xb7')],[_0xd330('0xba'),'id'])||{});}})['then'](respondWithResult(_0x1495c1,null))[_0xd330('0x34')](handleError(_0x1495c1,null));};exports[_0xd330('0xbc')]=function(_0x2797ab,_0x2906cb,_0x1c42f2){var _0x16af9d={'raw':![],'where':{}};var _0x4291f0={};var _0x1041c0={'count':0x0,'rows':[]};return db[_0xd330('0x3d')][_0xd330('0xbd')]({'where':{'id':_0x2797ab[_0xd330('0xb8')]['id']}})[_0xd330('0x28')](handleEntityNotFound(_0x2906cb,null))[_0xd330('0x28')](function(_0xa8b19b){if(_0xa8b19b){_0x4291f0[_0xd330('0x3f')]=_[_0xd330('0x72')](db[_0xd330('0xbe')][_0xd330('0xb4')]);_0x4291f0['query']=_[_0xd330('0x72')](_0x2797ab['query']);_0x4291f0['filters']=_['intersection'](_0x4291f0[_0xd330('0x3f')],_0x4291f0[_0xd330('0x40')]);_0x16af9d[_0xd330('0x42')]=_[_0xd330('0x43')](_0x4291f0[_0xd330('0x3f')],qs['fields'](_0x2797ab[_0xd330('0x40')][_0xd330('0x44')]));_0x16af9d[_0xd330('0x42')]=_0x16af9d['attributes']['length']?_0x16af9d['attributes']:_0x4291f0[_0xd330('0x3f')];if(!_0x2797ab['query'][_0xd330('0x46')](_0xd330('0xbf'))){_0x16af9d[_0xd330('0x22')]=qs[_0xd330('0x22')](_0x2797ab[_0xd330('0x40')][_0xd330('0x22')]);_0x16af9d[_0xd330('0x20')]=qs[_0xd330('0x20')](_0x2797ab[_0xd330('0x40')][_0xd330('0x20')]);}_0x16af9d['order']=qs[_0xd330('0x48')](_0x2797ab[_0xd330('0x40')][_0xd330('0x48')]);_0x16af9d[_0xd330('0x49')]=qs['filters'](_[_0xd330('0x4a')](_0x2797ab[_0xd330('0x40')],_0x4291f0['filters']));_0x16af9d['where']['SmsInteractionId']=_0xa8b19b['id'];if(_0x2797ab[_0xd330('0x40')]['filter']){_0x16af9d[_0xd330('0x49')]=_[_0xd330('0x9d')](_0x16af9d[_0xd330('0x49')],{'$or':_['map'](_0x16af9d['attributes'],function(_0x586c87){var _0x34951e={};_0x34951e[_0x586c87]={'$like':'%'+_0x2797ab[_0xd330('0x40')][_0xd330('0x85')]+'%'};return _0x34951e;})});}if(_0x2797ab[_0xd330('0x40')][_0xd330('0x7b')]){var _0x4b7803=_0x2797ab[_0xd330('0x40')]['$gte'][_0xd330('0x30')](',');var _0x382970={};_0x382970[_0x4b7803[0x0]]={'$gte':moment(_0x4b7803[0x1])[_0xd330('0xc0')]('YYYY-MM-DD\x20HH:mm:ss')};_0x16af9d[_0xd330('0x49')]=_[_0xd330('0x9d')](_0x16af9d[_0xd330('0x49')],_0x382970);}_0x16af9d=_['merge']({},_0x16af9d,_0x2797ab[_0xd330('0xb5')]);return db[_0xd330('0xbe')][_0xd330('0x23')]({'where':_0x16af9d[_0xd330('0x49')]})[_0xd330('0x28')](function(_0x172bea){_0x1041c0['count']=_0x172bea;if(_0x2797ab[_0xd330('0x40')][_0xd330('0xc1')]){_0x16af9d[_0xd330('0xc2')]=[{'all':!![]}];}return db[_0xd330('0xbe')][_0xd330('0xc3')](_0x16af9d);})['then'](function(_0x484771){_0x1041c0[_0xd330('0xc4')]=_0x484771;return _0x1041c0;});}})['then'](respondWithFilteredResult(_0x2906cb,_0x16af9d))[_0xd330('0x34')](handleError(_0x2906cb,null));};exports['addTags']=function(_0x41ef78,_0x548c15,_0x5dbc81){return db[_0xd330('0x3d')]['find']({'where':{'id':_0x41ef78[_0xd330('0xb8')]['id']}})[_0xd330('0x28')](handleEntityNotFound(_0x548c15,null))[_0xd330('0x28')](function(_0x4228a7){if(_0x4228a7){return _0x4228a7[_0xd330('0xc5')](_0x41ef78[_0xd330('0xb7')][_0xd330('0xba')],_[_0xd330('0xbb')](_0x41ef78[_0xd330('0xb7')],[_0xd330('0xba'),'id'])||{})[_0xd330('0xc6')](function(){return db[_0xd330('0x6f')][_0xd330('0xc3')]({'attributes':['id',_0xd330('0x2c'),_0xd330('0x4c')],'where':{'id':_0x41ef78[_0xd330('0xb7')][_0xd330('0xba')]}});})[_0xd330('0x28')](function(_0x31932b){socket['emit']('smsInteractionTags:save',{'id':Number(_0x41ef78['params']['id']),'tags':_0x31932b||[]});return{'id':Number(_0x41ef78[_0xd330('0xb8')]['id']),'tags':_0x31932b||[]};});}})[_0xd330('0x28')](respondWithResult(_0x548c15,null))['catch'](handleError(_0x548c15,null));};exports[_0xd330('0xc7')]=function(_0x2cccc2,_0x2505e3,_0x4fdde3){return db[_0xd330('0x3d')][_0xd330('0x61')]({'where':{'id':_0x2cccc2[_0xd330('0xb8')]['id']}})[_0xd330('0x28')](handleEntityNotFound(_0x2505e3,null))[_0xd330('0x28')](function(_0x2561e6){if(_0x2561e6){return _0x2561e6[_0xd330('0xc7')](_0x2cccc2[_0xd330('0x40')][_0xd330('0xba')]);}})[_0xd330('0x28')](respondWithStatusCode(_0x2505e3,null))[_0xd330('0x34')](handleError(_0x2505e3,null));};exports['download']=function(_0x464f88,_0x12107b){var _0xd4081b=moment()[_0xd330('0xc8')]()['toString']();var _0x537d55=path[_0xd330('0xc9')](config[_0xd330('0xca')],_0xd330('0xcb'),_0xd330('0xcc'),_0xd330('0xcd'));var _0x137b6c=path[_0xd330('0xc9')](config[_0xd330('0xca')],_0xd330('0xcb'),_0xd330('0xcc'),'attachments');var _0x4d5b55=path[_0xd330('0xc9')](_0x537d55,_0xd4081b);var _0x19f7fa=util[_0xd330('0xc0')](_0xd330('0xce'),_0x464f88[_0xd330('0xb8')]['id'],_0xd4081b);var _0x5bb05f=path['join'](_0x537d55,_0x19f7fa);var _0x3c5605=[];_0x3c5605[_0xd330('0x32')]({'model':db['User'],'as':_0xd330('0x71'),'attributes':['id',_0xd330('0xcf')],'raw':!![]});_0x3c5605[_0xd330('0x32')]({'model':db[_0xd330('0xd0')],'as':_0xd330('0xd1'),'attributes':['id',_0xd330('0xd2'),_0xd330('0xd3')],'raw':!![]});var _0x275446=[{'model':db[_0xd330('0xbe')],'as':'Messages','attributes':['id',_0xd330('0xb7'),_0xd330('0x79'),_0xd330('0xd4'),_0xd330('0xd5'),_0xd330('0x80')],'include':_0x3c5605}];_0x275446[_0xd330('0x32')]({'model':db[_0xd330('0xd6')],'as':'Account','attributes':['id',_0xd330('0x2c')]});_0x275446[_0xd330('0x32')]({'model':db[_0xd330('0x71')],'as':_0xd330('0xd7'),'attributes':['id',_0xd330('0xcf')]});return db['SmsInteraction']['find']({'where':{'id':_0x464f88['params']['id']},'include':_0x275446})[_0xd330('0x28')](handleEntityNotFound(_0x12107b,null))[_0xd330('0x28')](function(_0x27247a){if(_0x27247a){var _0x132a64=_0x27247a[_0xd330('0xd8')]({'plain':!![]});fs[_0xd330('0xd9')](_0x4d5b55);var _0x120fb8={'channel':_0xd330('0xda'),'account':_0x132a64[_0xd330('0xdb')][_0xd330('0x2c')],'agent':_0x132a64[_0xd330('0xd7')]?_0x132a64[_0xd330('0xd7')][_0xd330('0xcf')]:_0xd330('0xdc'),'createdAt':moment(_0x132a64[_0xd330('0x79')])[_0xd330('0xc0')]('YYYY-MM-DD\x20HH:mm:ss')[_0xd330('0x9b')](),'closedAt':_0x132a64[_0xd330('0x39')]?moment(_0x132a64[_0xd330('0xdd')])['format'](_0xd330('0xde'))['toString']():'','disposition':_0x132a64['disposition'],'messages':_(_0x132a64['Messages'])[_0xd330('0x85')]({'secret':![]})['map'](function(_0xd0c1e0){return{'date':moment(_0xd0c1e0[_0xd330('0x79')])['format'](_0xd330('0xde'))['toString'](),'sender':_0xd0c1e0[_0xd330('0xd4')]===_0xd330('0xdf')?_0xd0c1e0[_0xd330('0x71')]?_0xd0c1e0[_0xd330('0x71')][_0xd330('0xcf')]:_0xd330('0xe0'):_0xd0c1e0[_0xd330('0xd1')][_0xd330('0xd2')]+(_0xd0c1e0[_0xd330('0xd1')][_0xd330('0xd3')]?'\x20'+_0xd0c1e0[_0xd330('0xd1')][_0xd330('0xd3')]:''),'body':_0xd0c1e0['body'],'direction':_0xd0c1e0['direction']===_0xd330('0xdf')?'A':'C','secret':_0xd0c1e0['secret'],'read':_0xd0c1e0[_0xd330('0x80')]};})[_0xd330('0x62')]()};return ejs[_0xd330('0xe1')](path['join'](config[_0xd330('0xca')],_0xd330('0xcb'),_0xd330('0xe2'),_0xd330('0xe3')),{'interaction':_0x120fb8})['then'](function(_0x97c997){var _0x300286=path['join'](_0x4d5b55,_0xd330('0xe4')+_0x132a64['id']+'-'+_0xd4081b+'.pdf');var _0x45c849={'path':_0x300286,'channel':'Sms','interactionId':_0x132a64['id']};return pdf[_0xd330('0xe5')](_0x97c997,_0x45c849);})[_0xd330('0x28')](function(){return new BPromise(function(_0x504cb4,_0x5946b3){zipdir(_0x4d5b55,{'saveTo':_0x5bb05f},function(_0x591a23,_0x5e1ec6){if(_0x591a23)return _0x5946b3(_0x591a23);return _0x504cb4(_0x5e1ec6);});})['then'](function(){return new BPromise(function(_0x157c09,_0x33c8b6){rimraf(_0x4d5b55,function(_0x430864){if(_0x430864)_0x33c8b6(_0x430864);return _0x157c09();});});})['then'](function(){return _0x12107b[_0xd330('0xe6')](_0x5bb05f,_0x19f7fa,function(_0xf3662f){if(_0xf3662f){console[_0xd330('0xe7')](_0xd330('0xe8'),_0xf3662f);}else{fs[_0xd330('0xe9')](_0x5bb05f);}});});});}else{return _0x12107b[_0xd330('0x1d')](0xc8);}})[_0xd330('0x34')](handleError(_0x12107b,null));};
\ No newline at end of file
index d437570..b46c520 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf66=['setDataValue','Users','map','findAll','unreadMessages','emit','catch','hasOwnProperty','events','../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','remove','getUsers'];(function(_0x10dbf6,_0x3ff964){var _0x452147=function(_0x7476e0){while(--_0x7476e0){_0x10dbf6['push'](_0x10dbf6['shift']());}};_0x452147(++_0x3ff964);}(_0xcf66,0x71));var _0x6cf6=function(_0x195230,_0x53f6c3){_0x195230=_0x195230-0x0;var _0x37a477=_0xcf66[_0x195230];return _0x37a477;};'use strict';var EventEmitter=require(_0x6cf6('0x0'));var SmsInteraction=require(_0x6cf6('0x1'))['db'][_0x6cf6('0x2')];var SmsMessage=require('../../mysqldb')['db'][_0x6cf6('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x6cf6('0x4')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x6cf6('0x5')};function emitEvent(_0x45d0d8){return function(_0x57f22f,_0x39f1d6,_0x1fbedd){_0x57f22f[_0x6cf6('0x6')]({'attributes':['id'],'raw':!![]})['then'](function(_0x94c6a9){_0x57f22f[_0x6cf6('0x7')](_0x6cf6('0x8'),_0x94c6a9[_0x6cf6('0x9')](function(_0x175b18){return{'id':_0x175b18['id']};}));return SmsMessage[_0x6cf6('0xa')]({'where':{'SmsInteractionId':_0x57f22f['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x58378c){_0x57f22f['setDataValue'](_0x6cf6('0xb'),_0x58378c['length']);SmsInteractionEvents[_0x6cf6('0xc')](_0x45d0d8+':'+_0x57f22f['id'],_0x57f22f);SmsInteractionEvents[_0x6cf6('0xc')](_0x45d0d8,_0x57f22f);_0x1fbedd(null);})[_0x6cf6('0xd')](_0x1fbedd(null));};}for(var e in events){if(events[_0x6cf6('0xe')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
+var _0xfff0=['unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','SmsInteraction','setMaxListeners','save','update','getUsers','then','setDataValue','map','findAll'];(function(_0x4e9440,_0x565fd4){var _0xb2767d=function(_0x2e0d43){while(--_0x2e0d43){_0x4e9440['push'](_0x4e9440['shift']());}};_0xb2767d(++_0x565fd4);}(_0xfff0,0x139));var _0x0fff=function(_0x573ee4,_0x2fa414){_0x573ee4=_0x573ee4-0x0;var _0x5ee5df=_0xfff0[_0x573ee4];return _0x5ee5df;};'use strict';var EventEmitter=require('events');var SmsInteraction=require(_0x0fff('0x0'))['db'][_0x0fff('0x1')];var SmsMessage=require(_0x0fff('0x0'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x0fff('0x2')](0x0);var events={'afterCreate':_0x0fff('0x3'),'afterUpdate':_0x0fff('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2cd3d5){return function(_0x17911e,_0x53c517,_0x33c813){_0x17911e[_0x0fff('0x5')]({'attributes':['id'],'raw':!![]})[_0x0fff('0x6')](function(_0x586dc5){_0x17911e[_0x0fff('0x7')]('Users',_0x586dc5[_0x0fff('0x8')](function(_0x5304a5){return{'id':_0x5304a5['id']};}));return SmsMessage[_0x0fff('0x9')]({'where':{'SmsInteractionId':_0x17911e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0fff('0x6')](function(_0x4cc3f3){_0x17911e[_0x0fff('0x7')](_0x0fff('0xa'),_0x4cc3f3[_0x0fff('0xb')]);SmsInteractionEvents[_0x0fff('0xc')](_0x2cd3d5+':'+_0x17911e['id'],_0x17911e);SmsInteractionEvents[_0x0fff('0xc')](_0x2cd3d5,_0x17911e);_0x33c813(null);})[_0x0fff('0xd')](_0x33c813(null));};}for(var e in events){if(events[_0x0fff('0xe')](e)){var event=events[e];SmsInteraction[_0x0fff('0xf')](e,emitEvent(event));}}module[_0x0fff('0x10')]=SmsInteractionEvents;
\ No newline at end of file
index 5b0c367..f470806 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2647=['closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./smsInteraction.attributes','exports','define','changed'];(function(_0x186376,_0x5d988a){var _0x2dbdd9=function(_0x96908e){while(--_0x96908e){_0x186376['push'](_0x186376['shift']());}};_0x2dbdd9(++_0x5d988a);}(_0x2647,0x18b));var _0x7264=function(_0x53e29e,_0x17c540){_0x53e29e=_0x53e29e-0x0;var _0x54c118=_0x2647[_0x53e29e];return _0x54c118;};'use strict';var _=require(_0x7264('0x0'));var util=require(_0x7264('0x1'));var logger=require(_0x7264('0x2'))(_0x7264('0x3'));var moment=require(_0x7264('0x4'));var BPromise=require(_0x7264('0x5'));var rp=require(_0x7264('0x6'));var fs=require('fs');var path=require(_0x7264('0x7'));var rimraf=require(_0x7264('0x8'));var config=require('../../config/environment');var attributes=require(_0x7264('0x9'));module[_0x7264('0xa')]=function(_0x52a4cf,_0x543995){return _0x52a4cf[_0x7264('0xb')]('SmsInteraction',attributes,{'tableName':'sms_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x552424,_0x18f285,_0x22fb76){if(_0x552424[_0x7264('0xc')](_0x7264('0xd'))){_0x552424[_0x7264('0xe')]=moment()[_0x7264('0xf')](_0x7264('0x10'));}_0x22fb76(null,_0x552424);}}});};
\ No newline at end of file
+var _0x1afe=['path','./smsInteraction.attributes','define','SmsInteraction','sms_interactions','changed','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api','bluebird'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x1afe,0x110));var _0xe1af=function(_0x2a6f89,_0x4cf853){_0x2a6f89=_0x2a6f89-0x0;var _0x2b8d4c=_0x1afe[_0x2a6f89];return _0x2b8d4c;};'use strict';var _=require(_0xe1af('0x0'));var util=require('util');var logger=require(_0xe1af('0x1'))(_0xe1af('0x2'));var moment=require('moment');var BPromise=require(_0xe1af('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe1af('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xe1af('0x5'));module['exports']=function(_0x4176bb,_0x345ef1){return _0x4176bb[_0xe1af('0x6')](_0xe1af('0x7'),attributes,{'tableName':_0xe1af('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x338f7e,_0x46a3b3,_0x22aa30){if(_0x338f7e[_0xe1af('0x9')]('closed')){_0x338f7e['closedAt']=moment()[_0xe1af('0xa')](_0xe1af('0xb'));}_0x22aa30(null,_0x338f7e);}}});};
\ No newline at end of file
index 90a21e6..fec94a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b38=['SmsInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where','attributes','limit','AddTagsToSmsInteraction','ids','spread','AddTags','util','moment','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','debug'];(function(_0x2a8c21,_0x163576){var _0x5f3061=function(_0x4dc8eb){while(--_0x4dc8eb){_0x2a8c21['push'](_0x2a8c21['shift']());}};_0x5f3061(++_0x163576);}(_0x4b38,0xb5));var _0x84b3=function(_0x26e230,_0x61780b){_0x26e230=_0x26e230-0x0;var _0x49226f=_0x4b38[_0x26e230];return _0x49226f;};'use strict';var _=require('lodash');var util=require(_0x84b3('0x0'));var moment=require(_0x84b3('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x84b3('0x2'));var db=require(_0x84b3('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x84b3('0x4'))('rpc');var config=require(_0x84b3('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x84b3('0x6')][_0x84b3('0x7')]({'port':0x232a});config[_0x84b3('0x8')]=_[_0x84b3('0x9')](config[_0x84b3('0x8')],{'host':_0x84b3('0xa'),'port':0x18eb});var socket=require(_0x84b3('0xb'))(new Redis(config['redis']));require(_0x84b3('0xc'))[_0x84b3('0xd')](socket);function respondWithRpcPromise(_0x514c59,_0x1a2d85,_0x16efc1){return new BPromise(function(_0x2bc64e,_0x410d7){return client[_0x84b3('0xe')](_0x514c59,_0x16efc1)[_0x84b3('0xf')](function(_0x1af0c4){logger[_0x84b3('0x10')](_0x84b3('0x11'),_0x1a2d85,'request\x20sent');logger[_0x84b3('0x12')](_0x84b3('0x13'),_0x1a2d85,_0x84b3('0x14'),JSON[_0x84b3('0x15')](_0x1af0c4));if(_0x1af0c4[_0x84b3('0x16')]){if(_0x1af0c4[_0x84b3('0x16')][_0x84b3('0x17')]===0x1f4){logger[_0x84b3('0x16')](_0x84b3('0x11'),_0x1a2d85,_0x1af0c4[_0x84b3('0x16')][_0x84b3('0x18')]);return _0x410d7(_0x1af0c4[_0x84b3('0x16')][_0x84b3('0x18')]);}logger['error']('SmsInteraction,\x20%s,\x20%s',_0x1a2d85,_0x1af0c4[_0x84b3('0x16')][_0x84b3('0x18')]);return _0x2bc64e(_0x1af0c4['error'][_0x84b3('0x18')]);}else{logger['info'](_0x84b3('0x11'),_0x1a2d85,_0x84b3('0x14'));_0x2bc64e(_0x1af0c4[_0x84b3('0x19')][_0x84b3('0x18')]);}})[_0x84b3('0x1a')](function(_0x2b9d17){logger['error'](_0x84b3('0x11'),_0x1a2d85,_0x2b9d17);_0x410d7(_0x2b9d17);});});}exports[_0x84b3('0x1b')]=function(_0x28fb15){var _0xf73b14=this;return new Promise(function(_0x2e8300,_0x532243){return db[_0x84b3('0x1c')][_0x84b3('0x1d')](_0x28fb15[_0x84b3('0x1e')],{'raw':_0x28fb15[_0x84b3('0x1f')]?_0x28fb15[_0x84b3('0x1f')][_0x84b3('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x28fb15['options']?_0x28fb15['options'][_0x84b3('0x21')]||null:null,'attributes':_0x28fb15[_0x84b3('0x1f')]?_0x28fb15[_0x84b3('0x1f')][_0x84b3('0x22')]||null:null,'limit':_0x28fb15[_0x84b3('0x1f')]?_0x28fb15[_0x84b3('0x1f')][_0x84b3('0x23')]||null:null})[_0x84b3('0xf')](function(_0x3510a0){logger['info'](_0x84b3('0x1b'),_0x28fb15);logger[_0x84b3('0x12')](_0x84b3('0x1b'),_0x28fb15,JSON['stringify'](_0x3510a0));_0x2e8300(_0x3510a0);})['catch'](function(_0x3c9afd){logger[_0x84b3('0x16')](_0x84b3('0x1b'),_0x3c9afd[_0x84b3('0x18')],_0x28fb15);_0x532243(_0xf73b14[_0x84b3('0x16')](0x1f4,_0x3c9afd['message']));});});};exports[_0x84b3('0x24')]=function(_0x1744f6){return new Promise(function(_0x26a10f,_0x2c5784){return db['SmsInteraction']['find']({'where':_0x1744f6[_0x84b3('0x1f')]?_0x1744f6[_0x84b3('0x1f')][_0x84b3('0x21')]||null:null})[_0x84b3('0xf')](function(_0x18ebc2){if(_0x18ebc2){return _0x18ebc2['addTags'](_0x1744f6[_0x84b3('0x1e')]['ids'],_['omit'](_0x1744f6['body'],[_0x84b3('0x25'),'id'])||{});}})[_0x84b3('0x26')](function(_0x68dc84){logger['info'](_0x84b3('0x27'),_0x1744f6);logger[_0x84b3('0x12')](_0x84b3('0x27'),_0x1744f6,JSON['stringify'](_0x68dc84));_0x26a10f(_0x68dc84);})[_0x84b3('0x1a')](function(_0xa163d9){logger[_0x84b3('0x16')](_0x84b3('0x27'),_0xa163d9['message'],_0x1744f6);_0x2c5784(_this[_0x84b3('0x16')](0x1f4,_0xa163d9[_0x84b3('0x18')]));});});};
\ No newline at end of file
+var _0xf4aa=['jayson/promise','client','http','localhost','socket.io-emitter','redis','./smsInteraction.socket','register','request','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','limit','then','AddTagsToSmsInteraction','find','where','ids','omit','debug','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment'];(function(_0x8dc04d,_0xaa7559){var _0x2f5f28=function(_0xdd2d1d){while(--_0xdd2d1d){_0x8dc04d['push'](_0x8dc04d['shift']());}};_0x2f5f28(++_0xaa7559);}(_0xf4aa,0xc0));var _0xaf4a=function(_0x470f63,_0x48d80b){_0x470f63=_0x470f63-0x0;var _0x4f09e2=_0xf4aa[_0x470f63];return _0x4f09e2;};'use strict';var _=require(_0xaf4a('0x0'));var util=require(_0xaf4a('0x1'));var moment=require(_0xaf4a('0x2'));var BPromise=require(_0xaf4a('0x3'));var rs=require(_0xaf4a('0x4'));var fs=require('fs');var Redis=require(_0xaf4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xaf4a('0x6'));var config=require(_0xaf4a('0x7'));var jayson=require(_0xaf4a('0x8'));var client=jayson[_0xaf4a('0x9')][_0xaf4a('0xa')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xaf4a('0xb'),'port':0x18eb});var socket=require(_0xaf4a('0xc'))(new Redis(config[_0xaf4a('0xd')]));require(_0xaf4a('0xe'))[_0xaf4a('0xf')](socket);function respondWithRpcPromise(_0x9500a8,_0x29b902,_0x496125){return new BPromise(function(_0x5ac523,_0x342824){return client[_0xaf4a('0x10')](_0x9500a8,_0x496125)['then'](function(_0x22df86){logger[_0xaf4a('0x11')](_0xaf4a('0x12'),_0x29b902,_0xaf4a('0x13'));logger['debug']('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x29b902,'request\x20sent',JSON[_0xaf4a('0x14')](_0x22df86));if(_0x22df86[_0xaf4a('0x15')]){if(_0x22df86[_0xaf4a('0x15')]['code']===0x1f4){logger[_0xaf4a('0x15')](_0xaf4a('0x12'),_0x29b902,_0x22df86[_0xaf4a('0x15')][_0xaf4a('0x16')]);return _0x342824(_0x22df86[_0xaf4a('0x15')][_0xaf4a('0x16')]);}logger[_0xaf4a('0x15')](_0xaf4a('0x12'),_0x29b902,_0x22df86['error'][_0xaf4a('0x16')]);return _0x5ac523(_0x22df86['error']['message']);}else{logger['info'](_0xaf4a('0x12'),_0x29b902,'request\x20sent');_0x5ac523(_0x22df86[_0xaf4a('0x17')][_0xaf4a('0x16')]);}})[_0xaf4a('0x18')](function(_0x556604){logger['error']('SmsInteraction,\x20%s,\x20%s',_0x29b902,_0x556604);_0x342824(_0x556604);});});}exports[_0xaf4a('0x19')]=function(_0x6ce685){var _0x4eeae7=this;return new Promise(function(_0x1624b6,_0x1093ea){return db[_0xaf4a('0x1a')][_0xaf4a('0x1b')](_0x6ce685[_0xaf4a('0x1c')],{'raw':_0x6ce685[_0xaf4a('0x1d')]?_0x6ce685[_0xaf4a('0x1d')][_0xaf4a('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x6ce685[_0xaf4a('0x1d')]?_0x6ce685[_0xaf4a('0x1d')]['where']||null:null,'attributes':_0x6ce685[_0xaf4a('0x1d')]?_0x6ce685[_0xaf4a('0x1d')]['attributes']||null:null,'limit':_0x6ce685['options']?_0x6ce685[_0xaf4a('0x1d')][_0xaf4a('0x1f')]||null:null})[_0xaf4a('0x20')](function(_0x55fd3f){logger[_0xaf4a('0x11')]('UpdateSmsInteraction',_0x6ce685);logger['debug'](_0xaf4a('0x19'),_0x6ce685,JSON[_0xaf4a('0x14')](_0x55fd3f));_0x1624b6(_0x55fd3f);})['catch'](function(_0x28d88c){logger[_0xaf4a('0x15')]('UpdateSmsInteraction',_0x28d88c[_0xaf4a('0x16')],_0x6ce685);_0x1093ea(_0x4eeae7[_0xaf4a('0x15')](0x1f4,_0x28d88c[_0xaf4a('0x16')]));});});};exports[_0xaf4a('0x21')]=function(_0x47e14c){return new Promise(function(_0x2416c6,_0x3b0490){return db[_0xaf4a('0x1a')][_0xaf4a('0x22')]({'where':_0x47e14c[_0xaf4a('0x1d')]?_0x47e14c[_0xaf4a('0x1d')][_0xaf4a('0x23')]||null:null})[_0xaf4a('0x20')](function(_0x168048){if(_0x168048){return _0x168048['addTags'](_0x47e14c['body'][_0xaf4a('0x24')],_[_0xaf4a('0x25')](_0x47e14c[_0xaf4a('0x1c')],[_0xaf4a('0x24'),'id'])||{});}})['spread'](function(_0x22ed9c){logger[_0xaf4a('0x11')]('AddTags',_0x47e14c);logger[_0xaf4a('0x26')](_0xaf4a('0x27'),_0x47e14c,JSON[_0xaf4a('0x14')](_0x22ed9c));_0x2416c6(_0x22ed9c);})[_0xaf4a('0x18')](function(_0x53638b){logger[_0xaf4a('0x15')](_0xaf4a('0x27'),_0x53638b[_0xaf4a('0x16')],_0x47e14c);_0x3b0490(_this[_0xaf4a('0x15')](0x1f4,_0x53638b['message']));});});};
\ No newline at end of file
index df24b9c..cadcc87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57a5=['update','emit','removeListener','length','smsInteraction:','./smsInteraction.events','save','remove'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x57a5,0x145));var _0x557a=function(_0x426ef1,_0x543524){_0x426ef1=_0x426ef1-0x0;var _0x175381=_0x57a5[_0x426ef1];return _0x175381;};'use strict';var SmsInteractionEvents=require(_0x557a('0x0'));var events=[_0x557a('0x1'),_0x557a('0x2'),_0x557a('0x3')];function createListener(_0x5ae233,_0x3f8788){return function(_0x469589){_0x3f8788[_0x557a('0x4')](_0x5ae233,_0x469589);};}function removeListener(_0x2732c2,_0x53175b){return function(){SmsInteractionEvents[_0x557a('0x5')](_0x2732c2,_0x53175b);};}exports['register']=function(_0x149621){for(var _0x4bb39b=0x0,_0x3acca4=events[_0x557a('0x6')];_0x4bb39b<_0x3acca4;_0x4bb39b++){var _0x4ec3bd=events[_0x4bb39b];var _0x49dcd3=createListener(_0x557a('0x7')+_0x4ec3bd,_0x149621);SmsInteractionEvents['on'](_0x4ec3bd,_0x49dcd3);}};
\ No newline at end of file
+var _0xdbbf=['remove','update','length','smsInteraction:','./smsInteraction.events'];(function(_0x2f6829,_0x253303){var _0x9aa895=function(_0x1a7353){while(--_0x1a7353){_0x2f6829['push'](_0x2f6829['shift']());}};_0x9aa895(++_0x253303);}(_0xdbbf,0x176));var _0xfdbb=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0xdbbf[_0x5c2e3e];return _0x53f64a;};'use strict';var SmsInteractionEvents=require(_0xfdbb('0x0'));var events=['save',_0xfdbb('0x1'),_0xfdbb('0x2')];function createListener(_0x56acf1,_0x79c3f1){return function(_0x156616){_0x79c3f1['emit'](_0x56acf1,_0x156616);};}function removeListener(_0x4b1d5b,_0xe177a){return function(){SmsInteractionEvents['removeListener'](_0x4b1d5b,_0xe177a);};}exports['register']=function(_0x3ea438){for(var _0x320aed=0x0,_0x56d30c=events[_0xfdbb('0x3')];_0x320aed<_0x56d30c;_0x320aed++){var _0x21448d=events[_0x320aed];var _0x48761a=createListener(_0xfdbb('0x4')+_0x21448d,_0x3ea438);SmsInteractionEvents['on'](_0x21448d,_0x48761a);}};
\ No newline at end of file
index 29b47a5..b8358ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d76=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','tracked','sms','smsmessage:create','create','status','put','update','accept','/:id/reject','reject','delete','destroy','exports','multer','util','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3d76,0x13c));var _0x63d7=function(_0x5f3905,_0x43a651){_0x5f3905=_0x5f3905-0x0;var _0x2923b1=_0x3d76[_0x5f3905];return _0x2923b1;};'use strict';var multer=require(_0x63d7('0x0'));var util=require(_0x63d7('0x1'));var path=require(_0x63d7('0x2'));var timeout=require(_0x63d7('0x3'));var express=require(_0x63d7('0x4'));var router=express[_0x63d7('0x5')]();var fs_extra=require(_0x63d7('0x6'));var auth=require(_0x63d7('0x7'));var interaction=require(_0x63d7('0x8'));var config=require(_0x63d7('0x9'));var controller=require('./smsMessage.controller');router[_0x63d7('0xa')]('/',auth[_0x63d7('0xb')](),controller[_0x63d7('0xc')]);router[_0x63d7('0xa')](_0x63d7('0xd'),auth[_0x63d7('0xb')](),controller['describe']);router[_0x63d7('0xa')](_0x63d7('0xe'),auth['isAuthenticated'](),controller[_0x63d7('0xf')]);router['post']('/',auth['isAuthenticated'](),interaction[_0x63d7('0x10')](_0x63d7('0x11'),_0x63d7('0x12')),controller[_0x63d7('0x13')]);router['post']('/:id/status',controller[_0x63d7('0x14')]);router[_0x63d7('0x15')](_0x63d7('0xe'),auth[_0x63d7('0xb')](),controller[_0x63d7('0x16')]);router[_0x63d7('0x15')]('/:id/accept',auth[_0x63d7('0xb')](),controller[_0x63d7('0x17')]);router[_0x63d7('0x15')](_0x63d7('0x18'),auth[_0x63d7('0xb')](),controller[_0x63d7('0x19')]);router[_0x63d7('0x1a')]('/:id',auth[_0x63d7('0xb')](),controller[_0x63d7('0x1b')]);module[_0x63d7('0x1c')]=router;
\ No newline at end of file
+var _0xd248=['/:id','show','post','sms','smsmessage:create','create','status','update','put','/:id/accept','accept','reject','delete','destroy','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','isAuthenticated','/describe','describe','get'];(function(_0x569b53,_0x3279f6){var _0x467e46=function(_0x48e435){while(--_0x48e435){_0x569b53['push'](_0x569b53['shift']());}};_0x467e46(++_0x3279f6);}(_0xd248,0x11c));var _0x8d24=function(_0x1335f2,_0x529711){_0x1335f2=_0x1335f2-0x0;var _0x4b7282=_0xd248[_0x1335f2];return _0x4b7282;};'use strict';var multer=require('multer');var util=require(_0x8d24('0x0'));var path=require(_0x8d24('0x1'));var timeout=require('connect-timeout');var express=require(_0x8d24('0x2'));var router=express[_0x8d24('0x3')]();var fs_extra=require(_0x8d24('0x4'));var auth=require(_0x8d24('0x5'));var interaction=require(_0x8d24('0x6'));var config=require(_0x8d24('0x7'));var controller=require(_0x8d24('0x8'));router['get']('/',auth[_0x8d24('0x9')](),controller['index']);router['get'](_0x8d24('0xa'),auth['isAuthenticated'](),controller[_0x8d24('0xb')]);router[_0x8d24('0xc')](_0x8d24('0xd'),auth[_0x8d24('0x9')](),controller[_0x8d24('0xe')]);router[_0x8d24('0xf')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x8d24('0x10'),_0x8d24('0x11')),controller[_0x8d24('0x12')]);router[_0x8d24('0xf')]('/:id/status',controller[_0x8d24('0x13')]);router['put'](_0x8d24('0xd'),auth[_0x8d24('0x9')](),controller[_0x8d24('0x14')]);router[_0x8d24('0x15')](_0x8d24('0x16'),auth[_0x8d24('0x9')](),controller[_0x8d24('0x17')]);router[_0x8d24('0x15')]('/:id/reject',auth['isAuthenticated'](),controller[_0x8d24('0x18')]);router[_0x8d24('0x19')]('/:id',auth[_0x8d24('0x9')](),controller[_0x8d24('0x1a')]);module['exports']=router;
\ No newline at end of file
index 2ff1a92..47e2761 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92ba=['exports','TEXT','medium','BOOLEAN','ENUM','out','STRING','DATE'];(function(_0x54d782,_0x369396){var _0x258434=function(_0x2f4beb){while(--_0x2f4beb){_0x54d782['push'](_0x54d782['shift']());}};_0x258434(++_0x369396);}(_0x92ba,0x1d0));var _0xa92b=function(_0xd0c6c4,_0x5a5abd){_0xd0c6c4=_0xd0c6c4-0x0;var _0x1822d3=_0x92ba[_0xd0c6c4];return _0x1822d3;};'use strict';var Sequelize=require('sequelize');module[_0xa92b('0x0')]={'body':{'type':Sequelize[_0xa92b('0x1')](_0xa92b('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xa92b('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xa92b('0x4')]('in','out'),'defaultValue':_0xa92b('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0xa92b('0x6')](0xbe)},'phone':{'type':Sequelize[_0xa92b('0x6')]},'readAt':{'type':Sequelize[_0xa92b('0x7')]},'secret':{'type':Sequelize[_0xa92b('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xa92b('0x6')]},'providerResponse':{'type':Sequelize[_0xa92b('0x1')]}};
\ No newline at end of file
+var _0xb000=['TEXT','medium','ENUM','out','STRING','DATE','BOOLEAN','sequelize'];(function(_0x10db13,_0x49fe55){var _0x31fb1f=function(_0x260dc7){while(--_0x260dc7){_0x10db13['push'](_0x10db13['shift']());}};_0x31fb1f(++_0x49fe55);}(_0xb000,0x1a7));var _0x0b00=function(_0x336376,_0xe4b28d){_0x336376=_0x336376-0x0;var _0x1d2a8e=_0xb000[_0x336376];return _0x1d2a8e;};'use strict';var Sequelize=require(_0x0b00('0x0'));module['exports']={'body':{'type':Sequelize[_0x0b00('0x1')](_0x0b00('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x0b00('0x3')]('in',_0x0b00('0x4')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0x0b00('0x5')]},'readAt':{'type':Sequelize[_0x0b00('0x6')]},'secret':{'type':Sequelize[_0x0b00('0x7')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x0b00('0x5')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 3b705e6..295737a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e5a=['SmsMessage,\x20%s,\x20%s','request\x20sent','debug','error','message','result','catch','sendStatus','end','json','offset','limit','undefined','count','status','set','Content-Range','apply','reject','update','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','SmsMessage','includeAll','include','show','params','find','create','body','describe','sms-interactions','sms','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','SmsInteractionId','read1stAt','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','acceptMessage','sequelize','Sequelize','SELECT','contact','User','agent','fullname','internal','interface','SIP/%s','channel','motionChannel','event','accept','EventManager','acceptmessage','SmsInteraction','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','QueryTypes','email','SmsAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','messageId','indexOf','delivered','Status','plivio','infobip','results','groupName','DELIVERED','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','redis','defaults','localhost','./smsMessage.socket','register','jayson/promise','http','client','request','then','info'];(function(_0x148984,_0x9d856c){var _0xddd760=function(_0x1d0d1a){while(--_0x1d0d1a){_0x148984['push'](_0x148984['shift']());}};_0xddd760(++_0x9d856c);}(_0x0e5a,0x70));var _0xa0e5=function(_0x9e0697,_0x1be915){_0x9e0697=_0x9e0697-0x0;var _0x1fa518=_0x0e5a[_0x9e0697];return _0x1fa518;};'use strict';var emlformat=require(_0xa0e5('0x0'));var rimraf=require(_0xa0e5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa0e5('0x2'));var moment=require(_0xa0e5('0x3'));var BPromise=require(_0xa0e5('0x4'));var Mustache=require(_0xa0e5('0x5'));var util=require('util');var path=require(_0xa0e5('0x6'));var sox=require(_0xa0e5('0x7'));var csv=require(_0xa0e5('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa0e5('0x9'));var squel=require(_0xa0e5('0xa'));var crypto=require(_0xa0e5('0xb'));var jsforce=require(_0xa0e5('0xc'));var deskjs=require(_0xa0e5('0xd'));var toCsv=require(_0xa0e5('0x8'));var querystring=require(_0xa0e5('0xe'));var Papa=require(_0xa0e5('0xf'));var Redis=require(_0xa0e5('0x10'));var authService=require(_0xa0e5('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa0e5('0x12'));var hardwareService=require(_0xa0e5('0x13'));var logger=require(_0xa0e5('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa0e5('0x15'));var db=require(_0xa0e5('0x16'))['db'];config[_0xa0e5('0x17')]=_[_0xa0e5('0x18')](config['redis'],{'host':_0xa0e5('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa0e5('0x17')]));require(_0xa0e5('0x1a'))[_0xa0e5('0x1b')](socket);var jayson=require(_0xa0e5('0x1c'));var client=jayson['client'][_0xa0e5('0x1d')]({'port':0x232c});var client9002=jayson[_0xa0e5('0x1e')][_0xa0e5('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x58c077,_0x414d4c,_0x59f7d0,_0x130ba6){return new BPromise(function(_0x922444,_0x4c893e){var _0x323c9c=_0x130ba6||client;return _0x323c9c[_0xa0e5('0x1f')](_0x58c077,_0x59f7d0)[_0xa0e5('0x20')](function(_0x461284){logger[_0xa0e5('0x21')](_0xa0e5('0x22'),_0x414d4c,_0xa0e5('0x23'));logger[_0xa0e5('0x24')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x414d4c,_0xa0e5('0x23'),JSON['stringify'](_0x461284));if(_0x461284[_0xa0e5('0x25')]){if(_0x461284[_0xa0e5('0x25')]['code']===0x1f4){logger['error'](_0xa0e5('0x22'),_0x414d4c,_0x461284[_0xa0e5('0x25')][_0xa0e5('0x26')]);return _0x4c893e(_0x461284[_0xa0e5('0x25')][_0xa0e5('0x26')]);}logger[_0xa0e5('0x25')]('SmsMessage,\x20%s,\x20%s',_0x414d4c,_0x461284[_0xa0e5('0x25')][_0xa0e5('0x26')]);return _0x922444(_0x461284[_0xa0e5('0x25')]['message']);}else{logger[_0xa0e5('0x21')](_0xa0e5('0x22'),_0x414d4c,'request\x20sent');_0x922444(_0x461284[_0xa0e5('0x27')]['message']);}})[_0xa0e5('0x28')](function(_0x2b5379){logger[_0xa0e5('0x25')](_0xa0e5('0x22'),_0x414d4c,_0x2b5379);_0x4c893e(_0x2b5379);});});}function respondWithStatusCode(_0x261739,_0x69ecf0){_0x69ecf0=_0x69ecf0||0xcc;return function(_0x224f45){if(_0x224f45){return _0x261739[_0xa0e5('0x29')](_0x69ecf0);}return _0x261739['status'](_0x69ecf0)[_0xa0e5('0x2a')]();};}function respondWithResult(_0x1da62d,_0x1fec4c){_0x1fec4c=_0x1fec4c||0xc8;return function(_0x1f8cf7){if(_0x1f8cf7){return _0x1da62d['status'](_0x1fec4c)[_0xa0e5('0x2b')](_0x1f8cf7);}};}function respondWithFilteredResult(_0xdac5da,_0x2ae286){return function(_0x2fdce4){if(_0x2fdce4){var _0x117341=typeof _0x2ae286[_0xa0e5('0x2c')]==='undefined'&&typeof _0x2ae286[_0xa0e5('0x2d')]===_0xa0e5('0x2e');var _0x19b0cf=_0x2fdce4[_0xa0e5('0x2f')];var _0x20281e=_0x117341?0x0:_0x2ae286['offset'];var _0x4d4b06=_0x117341?_0x2fdce4[_0xa0e5('0x2f')]:_0x2ae286[_0xa0e5('0x2c')]+_0x2ae286[_0xa0e5('0x2d')];var _0x594035;if(_0x4d4b06>=_0x19b0cf){_0x4d4b06=_0x19b0cf;_0x594035=0xc8;}else{_0x594035=0xce;}_0xdac5da[_0xa0e5('0x30')](_0x594035);return _0xdac5da[_0xa0e5('0x31')](_0xa0e5('0x32'),_0x20281e+'-'+_0x4d4b06+'/'+_0x19b0cf)['json'](_0x2fdce4);}return null;};}function patchUpdates(_0x361ff7){return function(_0x2c33a8){try{jsonpatch[_0xa0e5('0x33')](_0x2c33a8,_0x361ff7,!![]);}catch(_0x250161){return BPromise[_0xa0e5('0x34')](_0x250161);}return _0x2c33a8['save']();};}function saveUpdates(_0x351344,_0x1be446){return function(_0x1aa6a2){if(_0x1aa6a2){return _0x1aa6a2[_0xa0e5('0x35')](_0x351344)[_0xa0e5('0x20')](function(_0x47cb5a){return _0x47cb5a;});}return null;};}function removeEntity(_0x54eee1,_0x484149){return function(_0x226e3c){if(_0x226e3c){return _0x226e3c[_0xa0e5('0x36')]()[_0xa0e5('0x20')](function(){_0x54eee1[_0xa0e5('0x30')](0xcc)[_0xa0e5('0x2a')]();});}};}function handleEntityNotFound(_0x23c557,_0x58d7c9){return function(_0x54f9af){if(!_0x54f9af){_0x23c557[_0xa0e5('0x29')](0x194);}return _0x54f9af;};}function handleError(_0x1d0cc9,_0x13efeb){_0x13efeb=_0x13efeb||0x1f4;return function(_0x2ac663){logger['error'](_0x2ac663[_0xa0e5('0x37')]);if(_0x2ac663['name']){delete _0x2ac663[_0xa0e5('0x38')];}_0x1d0cc9[_0xa0e5('0x30')](_0x13efeb)[_0xa0e5('0x39')](_0x2ac663);};}exports[_0xa0e5('0x3a')]=function(_0x38b1ce,_0x8a444){var _0x1925df={},_0xbcf633={},_0x343dc6={'count':0x0,'rows':[]};var _0x116221=_[_0xa0e5('0x3b')](db['SmsMessage'][_0xa0e5('0x3c')],function(_0x31150f){return{'name':_0x31150f[_0xa0e5('0x3d')],'type':_0x31150f[_0xa0e5('0x3e')][_0xa0e5('0x3f')]};});_0xbcf633[_0xa0e5('0x40')]=_[_0xa0e5('0x3b')](_0x116221,_0xa0e5('0x38'));_0xbcf633[_0xa0e5('0x41')]=_[_0xa0e5('0x42')](_0x38b1ce[_0xa0e5('0x41')]);_0xbcf633['filters']=_[_0xa0e5('0x43')](_0xbcf633[_0xa0e5('0x40')],_0xbcf633[_0xa0e5('0x41')]);_0x1925df['attributes']=_['intersection'](_0xbcf633['model'],qs[_0xa0e5('0x44')](_0x38b1ce[_0xa0e5('0x41')]['fields']));_0x1925df[_0xa0e5('0x45')]=_0x1925df[_0xa0e5('0x45')][_0xa0e5('0x46')]?_0x1925df[_0xa0e5('0x45')]:_0xbcf633[_0xa0e5('0x40')];if(!_0x38b1ce[_0xa0e5('0x41')][_0xa0e5('0x47')]('nolimit')){_0x1925df['limit']=qs[_0xa0e5('0x2d')](_0x38b1ce[_0xa0e5('0x41')][_0xa0e5('0x2d')]);_0x1925df['offset']=qs[_0xa0e5('0x2c')](_0x38b1ce[_0xa0e5('0x41')][_0xa0e5('0x2c')]);}_0x1925df[_0xa0e5('0x48')]=qs[_0xa0e5('0x49')](_0x38b1ce[_0xa0e5('0x41')][_0xa0e5('0x49')]);_0x1925df[_0xa0e5('0x4a')]=qs[_0xa0e5('0x4b')](_[_0xa0e5('0x4c')](_0x38b1ce['query'],_0xbcf633['filters']),_0x116221);if(_0x38b1ce['query'][_0xa0e5('0x4d')]){_0x1925df[_0xa0e5('0x4a')]=_[_0xa0e5('0x4e')](_0x1925df[_0xa0e5('0x4a')],{'$or':_[_0xa0e5('0x3b')](_0x116221,function(_0x451258){if(_0x451258[_0xa0e5('0x3e')]!==_0xa0e5('0x4f')){var _0x25225e={};_0x25225e[_0x451258['name']]={'$like':'%'+_0x38b1ce[_0xa0e5('0x41')]['filter']+'%'};return _0x25225e;}})});}_0x1925df=_[_0xa0e5('0x4e')]({},_0x1925df,_0x38b1ce[_0xa0e5('0x50')]);var _0x67d27b={'where':_0x1925df[_0xa0e5('0x4a')]};return db[_0xa0e5('0x51')][_0xa0e5('0x2f')](_0x67d27b)[_0xa0e5('0x20')](function(_0x323bb9){_0x343dc6[_0xa0e5('0x2f')]=_0x323bb9;if(_0x38b1ce['query'][_0xa0e5('0x52')]){_0x1925df[_0xa0e5('0x53')]=[{'all':!![]}];}return db[_0xa0e5('0x51')]['findAll'](_0x1925df);})[_0xa0e5('0x20')](function(_0x217035){_0x343dc6['rows']=_0x217035;return _0x343dc6;})[_0xa0e5('0x20')](respondWithFilteredResult(_0x8a444,_0x1925df))['catch'](handleError(_0x8a444,null));};exports[_0xa0e5('0x54')]=function(_0x1e97bc,_0x3c4af2){var _0x1ebe40={'raw':!![],'where':{'id':_0x1e97bc[_0xa0e5('0x55')]['id']}},_0x2b9141={};_0x2b9141[_0xa0e5('0x40')]=_['keys'](db[_0xa0e5('0x51')]['rawAttributes']);_0x2b9141[_0xa0e5('0x41')]=_[_0xa0e5('0x42')](_0x1e97bc[_0xa0e5('0x41')]);_0x2b9141[_0xa0e5('0x4b')]=_[_0xa0e5('0x43')](_0x2b9141['model'],_0x2b9141[_0xa0e5('0x41')]);_0x1ebe40[_0xa0e5('0x45')]=_[_0xa0e5('0x43')](_0x2b9141['model'],qs['fields'](_0x1e97bc[_0xa0e5('0x41')][_0xa0e5('0x44')]));_0x1ebe40['attributes']=_0x1ebe40[_0xa0e5('0x45')]['length']?_0x1ebe40[_0xa0e5('0x45')]:_0x2b9141['model'];if(_0x1e97bc[_0xa0e5('0x41')]['includeAll']){_0x1ebe40[_0xa0e5('0x53')]=[{'all':!![]}];}_0x1ebe40=_[_0xa0e5('0x4e')]({},_0x1ebe40,_0x1e97bc['options']);return db[_0xa0e5('0x51')][_0xa0e5('0x56')](_0x1ebe40)[_0xa0e5('0x20')](handleEntityNotFound(_0x3c4af2,null))[_0xa0e5('0x20')](respondWithResult(_0x3c4af2,null))['catch'](handleError(_0x3c4af2,null));};exports[_0xa0e5('0x57')]=function(_0x579577,_0x53ea4c){return db[_0xa0e5('0x51')][_0xa0e5('0x57')](_0x579577[_0xa0e5('0x58')],{})['then'](respondWithResult(_0x53ea4c,0xc9))[_0xa0e5('0x28')](handleError(_0x53ea4c,null));};exports['update']=function(_0x12e44c,_0x16db45){if(_0x12e44c[_0xa0e5('0x58')]['id']){delete _0x12e44c[_0xa0e5('0x58')]['id'];}return db[_0xa0e5('0x51')][_0xa0e5('0x56')]({'where':{'id':_0x12e44c[_0xa0e5('0x55')]['id']}})[_0xa0e5('0x20')](handleEntityNotFound(_0x16db45,null))[_0xa0e5('0x20')](saveUpdates(_0x12e44c[_0xa0e5('0x58')],null))[_0xa0e5('0x20')](respondWithResult(_0x16db45,null))[_0xa0e5('0x28')](handleError(_0x16db45,null));};exports[_0xa0e5('0x36')]=function(_0x61f30f,_0x186b94){return db[_0xa0e5('0x51')]['find']({'where':{'id':_0x61f30f[_0xa0e5('0x55')]['id']}})['then'](handleEntityNotFound(_0x186b94,null))[_0xa0e5('0x20')](removeEntity(_0x186b94,null))[_0xa0e5('0x28')](handleError(_0x186b94,null));};exports['describe']=function(_0x1d013d,_0x348e2f){return db[_0xa0e5('0x51')][_0xa0e5('0x59')]()['then'](respondWithResult(_0x348e2f,null))[_0xa0e5('0x28')](handleError(_0x348e2f,null));};var interaction_log=require(_0xa0e5('0x14'))(_0xa0e5('0x5a'));exports['accept']=function(_0x23dd71,_0x2c82f1,_0x5926c3){var _0xb1ba6a={'agent':{},'channel':_0xa0e5('0x5b')};if(_0x23dd71[_0xa0e5('0x58')]['id']){delete _0x23dd71[_0xa0e5('0x58')]['id'];}_0x23dd71['body'][_0xa0e5('0x5c')]=!![];_0x23dd71['body'][_0xa0e5('0x5d')]=moment()[_0xa0e5('0x5e')](_0xa0e5('0x5f'));_0x23dd71['body'][_0xa0e5('0x60')]=_0x23dd71[_0xa0e5('0x58')]['UserId']||_0x23dd71[_0xa0e5('0x61')]['id'];_0xb1ba6a['agent']['id']=_0x23dd71[_0xa0e5('0x58')]['UserId'];return db[_0xa0e5('0x51')][_0xa0e5('0x56')]({'where':{'id':_0x23dd71[_0xa0e5('0x55')]['id'],'UserId':null}})[_0xa0e5('0x20')](handleEntityNotFound(_0x2c82f1,null))[_0xa0e5('0x20')](saveUpdates(_0x23dd71['body'],null))[_0xa0e5('0x20')](function(_0x592aa6){if(_0x592aa6){_0xb1ba6a[_0xa0e5('0x26')]=_0x592aa6[_0xa0e5('0x62')]({'plain':!![]});return db['SmsInteraction'][_0xa0e5('0x56')]({'where':{'id':_0x592aa6[_0xa0e5('0x63')]}});}return null;})[_0xa0e5('0x20')](handleEntityNotFound(_0x2c82f1,null))['then'](function(_0x26d077){if(_0x26d077){return _0x26d077['update']({'UserId':_0x23dd71['body'][_0xa0e5('0x60')],'read1stAt':_['isNil'](_0x26d077[_0xa0e5('0x64')])?moment()[_0xa0e5('0x5e')](_0xa0e5('0x5f')):undefined});}return null;})[_0xa0e5('0x20')](function(_0x275535){if(_0x275535){_0xb1ba6a[_0xa0e5('0x65')]=_0x275535[_0xa0e5('0x62')]({'plain':!![]});interaction_log[_0xa0e5('0x21')](_0xa0e5('0x66'),_0x23dd71['user']['id'],_0x23dd71[_0xa0e5('0x61')][_0xa0e5('0x38')],_0x23dd71[_0xa0e5('0x61')][_0xa0e5('0x67')],_0xb1ba6a['interaction']['id'],_0x23dd71[_0xa0e5('0x58')]?JSON[_0xa0e5('0x68')](_0x23dd71[_0xa0e5('0x58')]):'null');return respondWithRpcPromise('AcceptMessage',_0xa0e5('0x69'),_0xb1ba6a);}return null;})[_0xa0e5('0x20')](function(_0x1058d0){var _0x27a1dc='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1058d0[_0xa0e5('0x26')]['ContactId'];return db[_0xa0e5('0x6a')][_0xa0e5('0x41')](_0x27a1dc,{'type':db[_0xa0e5('0x6b')]['QueryTypes'][_0xa0e5('0x6c')],'raw':!![]})[_0xa0e5('0x20')](function(_0x1751fb){return _0x1751fb;});})[_0xa0e5('0x20')](function(_0x5548e6){if(_0x5548e6){_0xb1ba6a[_0xa0e5('0x26')][_0xa0e5('0x6d')]=_0x5548e6[0x0];if(!_0x23dd71[_0xa0e5('0x58')][_0xa0e5('0x60')])return;return db[_0xa0e5('0x6e')][_0xa0e5('0x56')]({'where':{'id':_0x23dd71[_0xa0e5('0x58')][_0xa0e5('0x60')],'role':_0xa0e5('0x6f')},'attributes':['id',_0xa0e5('0x38'),_0xa0e5('0x70'),'email',_0xa0e5('0x71')],'raw':!![]});}return null;})[_0xa0e5('0x20')](function(_0x2898c1){if(!_0x2898c1)return null;_0xb1ba6a[_0xa0e5('0x26')][_0xa0e5('0x6f')]=_0x2898c1;return _0xb1ba6a;})[_0xa0e5('0x20')](function(_0x5c5f4f){if(_0x5c5f4f){if(_0x23dd71['body']['manual']){_0xb1ba6a[_0xa0e5('0x26')][_0xa0e5('0x72')]=util['format'](_0xa0e5('0x73'),_0x23dd71[_0xa0e5('0x61')][_0xa0e5('0x38')]);_0xb1ba6a[_0xa0e5('0x26')][_0xa0e5('0x74')]=_0xb1ba6a[_0xa0e5('0x74')];_0xb1ba6a['message'][_0xa0e5('0x75')]=_0xb1ba6a['channel'];_0xb1ba6a[_0xa0e5('0x26')][_0xa0e5('0x76')]=_0xa0e5('0x77');return respondWithRpcPromise(_0xa0e5('0x78'),_0xa0e5('0x78'),{'event':_0xa0e5('0x79'),'message':_0xb1ba6a[_0xa0e5('0x26')]},client9002)[_0xa0e5('0x20')](function(){return _0xb1ba6a;});}return _0xb1ba6a;}return null;})['then'](respondWithResult(_0x2c82f1,null))[_0xa0e5('0x28')](handleError(_0x2c82f1,null));};var interaction_log=require(_0xa0e5('0x14'))(_0xa0e5('0x5a'));exports[_0xa0e5('0x34')]=function(_0x4b8da4,_0x12b586,_0x3c6654){var _0x253ef5={'agent':{},'channel':_0xa0e5('0x5b')};if(_0x4b8da4[_0xa0e5('0x58')]['id']){delete _0x4b8da4[_0xa0e5('0x58')]['id'];}_0x4b8da4['body'][_0xa0e5('0x60')]=_0x4b8da4[_0xa0e5('0x58')][_0xa0e5('0x60')]||_0x4b8da4[_0xa0e5('0x61')]['id'];_0x253ef5['agent']['id']=_0x4b8da4[_0xa0e5('0x58')][_0xa0e5('0x60')];return db[_0xa0e5('0x51')]['find']({'where':{'id':_0x4b8da4[_0xa0e5('0x55')]['id'],'UserId':null}})[_0xa0e5('0x20')](handleEntityNotFound(_0x12b586,null))[_0xa0e5('0x20')](function(_0x3a4c00){if(_0x3a4c00){_0x253ef5[_0xa0e5('0x26')]=_0x3a4c00['get']({'plain':!![]});return db[_0xa0e5('0x7a')][_0xa0e5('0x56')]({'where':{'id':_0x3a4c00[_0xa0e5('0x63')]}});}return null;})[_0xa0e5('0x20')](handleEntityNotFound(_0x12b586,null))[_0xa0e5('0x20')](function(_0x126a68){if(_0x126a68){_0x253ef5[_0xa0e5('0x65')]=_0x126a68['get']({'plain':!![]});interaction_log[_0xa0e5('0x21')](_0xa0e5('0x7b'),_0x4b8da4[_0xa0e5('0x61')]['id'],_0x4b8da4[_0xa0e5('0x61')]['name'],_0x4b8da4[_0xa0e5('0x61')][_0xa0e5('0x67')],_0x253ef5[_0xa0e5('0x65')]['id'],_0x4b8da4[_0xa0e5('0x58')]?JSON[_0xa0e5('0x68')](_0x4b8da4[_0xa0e5('0x58')]):_0xa0e5('0x7c'));return respondWithRpcPromise(_0xa0e5('0x7d'),_0xa0e5('0x7e'),_0x253ef5);}return null;})[_0xa0e5('0x20')](function(_0x270435){var _0x956e90='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x270435[_0xa0e5('0x26')]['ContactId'];return db[_0xa0e5('0x6a')][_0xa0e5('0x41')](_0x956e90,{'type':db[_0xa0e5('0x6b')][_0xa0e5('0x7f')][_0xa0e5('0x6c')],'raw':!![]})[_0xa0e5('0x20')](function(_0x353c93){return _0x353c93;});})[_0xa0e5('0x20')](function(_0x56cc48){if(_0x56cc48){_0x253ef5[_0xa0e5('0x26')][_0xa0e5('0x6d')]=_0x56cc48[0x0];if(!_0x4b8da4[_0xa0e5('0x58')][_0xa0e5('0x60')])return;return db[_0xa0e5('0x6e')][_0xa0e5('0x56')]({'where':{'id':_0x4b8da4[_0xa0e5('0x58')][_0xa0e5('0x60')],'role':'agent'},'attributes':['id','name',_0xa0e5('0x70'),_0xa0e5('0x80'),_0xa0e5('0x71')],'raw':!![]});}return null;})['then'](function(_0x1f6070){if(!_0x1f6070)return null;_0x253ef5['message'][_0xa0e5('0x6f')]=_0x1f6070;return _0x253ef5;})[_0xa0e5('0x20')](function(_0x46b83b){if(_0x46b83b){_0x46b83b[_0xa0e5('0x26')]['interface']=util[_0xa0e5('0x5e')](_0xa0e5('0x73'),_0x4b8da4[_0xa0e5('0x61')][_0xa0e5('0x38')]);_0x46b83b[_0xa0e5('0x26')]['channel']=_0x253ef5['channel'];_0x46b83b['message']['motionChannel']=_0x253ef5[_0xa0e5('0x74')];_0x46b83b[_0xa0e5('0x26')]['event']=_0xa0e5('0x34');respondWithRpcPromise(_0xa0e5('0x78'),_0xa0e5('0x78'),{'event':'rejectmessage','message':_0x46b83b[_0xa0e5('0x26')]},client9002);return _0x253ef5;}return null;})[_0xa0e5('0x20')](respondWithResult(_0x12b586,null))[_0xa0e5('0x28')](handleError(_0x12b586,null));};exports['status']=function(_0x43fa9c,_0xba0b53,_0x28370a){if(_0x43fa9c[_0xa0e5('0x58')]['id']){delete _0x43fa9c[_0xa0e5('0x58')]['id'];}var _0x498370;return db[_0xa0e5('0x51')]['find']({'where':{'id':_0x43fa9c[_0xa0e5('0x55')]['id']}})[_0xa0e5('0x20')](handleEntityNotFound(_0xba0b53,null))['then'](function(_0x4ae15f){if(_0x4ae15f){_0x498370=_0x4ae15f;return db['SmsAccount'][_0xa0e5('0x56')]({'where':{'id':_0x4ae15f[_0xa0e5('0x81')]}});}})[_0xa0e5('0x20')](handleEntityNotFound(_0xba0b53,null))[_0xa0e5('0x20')](function(_0x3bd86e){if(_0x3bd86e){logger[_0xa0e5('0x24')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xa0e5('0x30'),_0xa0e5('0x82'),_0x3bd86e[_0xa0e5('0x3e')],util[_0xa0e5('0x83')](_0x43fa9c[_0xa0e5('0x58')],{'showHidden':![],'depth':null}));switch(_0x3bd86e[_0xa0e5('0x3e')]){case _0xa0e5('0x84'):if(_0x43fa9c['body'][_0xa0e5('0x85')]&&_0x43fa9c[_0xa0e5('0x58')]['MessageSid']===_0x498370['messageId']){return _0x498370['update']({'read':!![]});}else{logger['error'](_0xa0e5('0x86'),_0xa0e5('0x30'),'twilio',util[_0xa0e5('0x83')](_0x43fa9c[_0xa0e5('0x58')],{'showHidden':![],'depth':null}));}break;case _0xa0e5('0x87'):if(_0x43fa9c[_0xa0e5('0x58')]['MessageUUID']&&_0x43fa9c[_0xa0e5('0x58')][_0xa0e5('0x88')]===_0x498370[_0xa0e5('0x89')]&&_[_0xa0e5('0x8a')](['sent',_0xa0e5('0x8b')],_0x43fa9c[_0xa0e5('0x58')][_0xa0e5('0x8c')])>=0x0){return _0x498370[_0xa0e5('0x35')]({'read':!![]});}else{logger[_0xa0e5('0x25')](_0xa0e5('0x86'),_0xa0e5('0x30'),_0xa0e5('0x8d'),util[_0xa0e5('0x83')](_0x43fa9c[_0xa0e5('0x58')],{'showHidden':![],'depth':null}));}break;case _0xa0e5('0x8e'):var _0x340206=_0x43fa9c[_0xa0e5('0x58')][_0xa0e5('0x8f')][0x0];if(_0x340206['status'][_0xa0e5('0x90')]===_0xa0e5('0x91')){return _0x498370[_0xa0e5('0x35')]({'read':!![]});}else{logger[_0xa0e5('0x25')](_0xa0e5('0x86'),_0xa0e5('0x30'),_0xa0e5('0x8e'),util[_0xa0e5('0x83')](_0x43fa9c['body'],{'showHidden':![],'depth':null}));}break;}return _0x498370;}})[_0xa0e5('0x20')](respondWithResult(_0xba0b53,null))['catch'](handleError(_0xba0b53,null));};
\ No newline at end of file
+var _0xa5d7=['DELIVERED','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','register','jayson/promise','client','http','request','then','SmsMessage,\x20%s,\x20%s','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','index','map','SmsMessage','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','show','params','keys','include','options','create','body','find','describe','sms-interactions','accept','read','format','UserId','user','get','SmsInteraction','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','acceptMessage','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','email','internal','manual','SIP/%s','motionChannel','channel','event','EventManager','acceptmessage','sms','agent','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','User','fullname','interface','SmsAccount','debug','twilio','MessageSid','SmsAccount,\x20%s,\x20%s,\x20%s','inspect','MessageUUID','messageId','indexOf','sent','delivered','Status','plivio','infobip','results','groupName'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0xa5d7,0x1c3));var _0x7a5d=function(_0x18e854,_0x1e5374){_0x18e854=_0x18e854-0x0;var _0x4724a0=_0xa5d7[_0x18e854];return _0x4724a0;};'use strict';var emlformat=require(_0x7a5d('0x0'));var rimraf=require(_0x7a5d('0x1'));var zipdir=require(_0x7a5d('0x2'));var jsonpatch=require(_0x7a5d('0x3'));var rp=require('request-promise');var moment=require(_0x7a5d('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x7a5d('0x5'));var util=require('util');var path=require(_0x7a5d('0x6'));var sox=require('sox');var csv=require(_0x7a5d('0x7'));var ejs=require(_0x7a5d('0x8'));var fs=require('fs');var fs_extra=require(_0x7a5d('0x9'));var _=require('lodash');var squel=require(_0x7a5d('0xa'));var crypto=require(_0x7a5d('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7a5d('0xc'));var toCsv=require('to-csv');var querystring=require(_0x7a5d('0xd'));var Papa=require(_0x7a5d('0xe'));var Redis=require(_0x7a5d('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x7a5d('0x10'));var as=require(_0x7a5d('0x11'));var hardwareService=require(_0x7a5d('0x12'));var logger=require(_0x7a5d('0x13'))(_0x7a5d('0x14'));var utils=require(_0x7a5d('0x15'));var config=require(_0x7a5d('0x16'));var licenseUtil=require(_0x7a5d('0x17'));var db=require(_0x7a5d('0x18'))['db'];config[_0x7a5d('0x19')]=_[_0x7a5d('0x1a')](config[_0x7a5d('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7a5d('0x19')]));require('./smsMessage.socket')[_0x7a5d('0x1b')](socket);var jayson=require(_0x7a5d('0x1c'));var client=jayson[_0x7a5d('0x1d')][_0x7a5d('0x1e')]({'port':0x232c});var client9002=jayson[_0x7a5d('0x1d')][_0x7a5d('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x50070a,_0x35c72e,_0x288ffa,_0xaca430){return new BPromise(function(_0xc57403,_0x3861c7){var _0x4e1973=_0xaca430||client;return _0x4e1973[_0x7a5d('0x1f')](_0x50070a,_0x288ffa)[_0x7a5d('0x20')](function(_0x4af635){logger['info'](_0x7a5d('0x21'),_0x35c72e,_0x7a5d('0x22'));logger['debug'](_0x7a5d('0x23'),_0x35c72e,'request\x20sent',JSON[_0x7a5d('0x24')](_0x4af635));if(_0x4af635['error']){if(_0x4af635[_0x7a5d('0x25')][_0x7a5d('0x26')]===0x1f4){logger['error'](_0x7a5d('0x21'),_0x35c72e,_0x4af635['error'][_0x7a5d('0x27')]);return _0x3861c7(_0x4af635['error']['message']);}logger[_0x7a5d('0x25')](_0x7a5d('0x21'),_0x35c72e,_0x4af635[_0x7a5d('0x25')]['message']);return _0xc57403(_0x4af635[_0x7a5d('0x25')][_0x7a5d('0x27')]);}else{logger[_0x7a5d('0x28')]('SmsMessage,\x20%s,\x20%s',_0x35c72e,_0x7a5d('0x22'));_0xc57403(_0x4af635['result'][_0x7a5d('0x27')]);}})[_0x7a5d('0x29')](function(_0xcf8578){logger[_0x7a5d('0x25')](_0x7a5d('0x21'),_0x35c72e,_0xcf8578);_0x3861c7(_0xcf8578);});});}function respondWithStatusCode(_0x65cc6f,_0x58d59c){_0x58d59c=_0x58d59c||0xcc;return function(_0x5556bc){if(_0x5556bc){return _0x65cc6f[_0x7a5d('0x2a')](_0x58d59c);}return _0x65cc6f['status'](_0x58d59c)[_0x7a5d('0x2b')]();};}function respondWithResult(_0x431fe9,_0x2b1f0b){_0x2b1f0b=_0x2b1f0b||0xc8;return function(_0x72bedd){if(_0x72bedd){return _0x431fe9['status'](_0x2b1f0b)[_0x7a5d('0x2c')](_0x72bedd);}};}function respondWithFilteredResult(_0x2f922d,_0x1e42a8){return function(_0x2931ef){if(_0x2931ef){var _0x3975=typeof _0x1e42a8[_0x7a5d('0x2d')]===_0x7a5d('0x2e')&&typeof _0x1e42a8[_0x7a5d('0x2f')]==='undefined';var _0x1af116=_0x2931ef[_0x7a5d('0x30')];var _0x263f61=_0x3975?0x0:_0x1e42a8[_0x7a5d('0x2d')];var _0x46d2d7=_0x3975?_0x2931ef[_0x7a5d('0x30')]:_0x1e42a8[_0x7a5d('0x2d')]+_0x1e42a8[_0x7a5d('0x2f')];var _0x3d70fc;if(_0x46d2d7>=_0x1af116){_0x46d2d7=_0x1af116;_0x3d70fc=0xc8;}else{_0x3d70fc=0xce;}_0x2f922d[_0x7a5d('0x31')](_0x3d70fc);return _0x2f922d[_0x7a5d('0x32')](_0x7a5d('0x33'),_0x263f61+'-'+_0x46d2d7+'/'+_0x1af116)[_0x7a5d('0x2c')](_0x2931ef);}return null;};}function patchUpdates(_0x6a9295){return function(_0x58c177){try{jsonpatch[_0x7a5d('0x34')](_0x58c177,_0x6a9295,!![]);}catch(_0x59279e){return BPromise[_0x7a5d('0x35')](_0x59279e);}return _0x58c177[_0x7a5d('0x36')]();};}function saveUpdates(_0x411bc4,_0x5ac2b2){return function(_0x2f172a){if(_0x2f172a){return _0x2f172a[_0x7a5d('0x37')](_0x411bc4)[_0x7a5d('0x20')](function(_0x1966c2){return _0x1966c2;});}return null;};}function removeEntity(_0x53789d,_0x17d017){return function(_0x39a962){if(_0x39a962){return _0x39a962[_0x7a5d('0x38')]()[_0x7a5d('0x20')](function(){_0x53789d[_0x7a5d('0x31')](0xcc)[_0x7a5d('0x2b')]();});}};}function handleEntityNotFound(_0x54ab57,_0x284ee6){return function(_0x2f9b24){if(!_0x2f9b24){_0x54ab57[_0x7a5d('0x2a')](0x194);}return _0x2f9b24;};}function handleError(_0x564509,_0x47e7c0){_0x47e7c0=_0x47e7c0||0x1f4;return function(_0x2b5edf){logger[_0x7a5d('0x25')](_0x2b5edf[_0x7a5d('0x39')]);if(_0x2b5edf[_0x7a5d('0x3a')]){delete _0x2b5edf[_0x7a5d('0x3a')];}_0x564509[_0x7a5d('0x31')](_0x47e7c0)[_0x7a5d('0x3b')](_0x2b5edf);};}exports[_0x7a5d('0x3c')]=function(_0x30704a,_0x1fae23){var _0x20d5f4={},_0x174e54={},_0xb279bf={'count':0x0,'rows':[]};var _0x491413=_[_0x7a5d('0x3d')](db[_0x7a5d('0x3e')][_0x7a5d('0x3f')],function(_0x12ac4b){return{'name':_0x12ac4b[_0x7a5d('0x40')],'type':_0x12ac4b[_0x7a5d('0x41')][_0x7a5d('0x42')]};});_0x174e54[_0x7a5d('0x43')]=_[_0x7a5d('0x3d')](_0x491413,'name');_0x174e54[_0x7a5d('0x44')]=_['keys'](_0x30704a[_0x7a5d('0x44')]);_0x174e54['filters']=_[_0x7a5d('0x45')](_0x174e54[_0x7a5d('0x43')],_0x174e54[_0x7a5d('0x44')]);_0x20d5f4['attributes']=_[_0x7a5d('0x45')](_0x174e54['model'],qs['fields'](_0x30704a[_0x7a5d('0x44')][_0x7a5d('0x46')]));_0x20d5f4['attributes']=_0x20d5f4[_0x7a5d('0x47')][_0x7a5d('0x48')]?_0x20d5f4[_0x7a5d('0x47')]:_0x174e54['model'];if(!_0x30704a[_0x7a5d('0x44')][_0x7a5d('0x49')]('nolimit')){_0x20d5f4[_0x7a5d('0x2f')]=qs[_0x7a5d('0x2f')](_0x30704a[_0x7a5d('0x44')][_0x7a5d('0x2f')]);_0x20d5f4[_0x7a5d('0x2d')]=qs[_0x7a5d('0x2d')](_0x30704a[_0x7a5d('0x44')]['offset']);}_0x20d5f4[_0x7a5d('0x4a')]=qs[_0x7a5d('0x4b')](_0x30704a[_0x7a5d('0x44')][_0x7a5d('0x4b')]);_0x20d5f4[_0x7a5d('0x4c')]=qs[_0x7a5d('0x4d')](_[_0x7a5d('0x4e')](_0x30704a[_0x7a5d('0x44')],_0x174e54[_0x7a5d('0x4d')]),_0x491413);if(_0x30704a['query'][_0x7a5d('0x4f')]){_0x20d5f4[_0x7a5d('0x4c')]=_[_0x7a5d('0x50')](_0x20d5f4[_0x7a5d('0x4c')],{'$or':_[_0x7a5d('0x3d')](_0x491413,function(_0x2af222){if(_0x2af222['type']!==_0x7a5d('0x51')){var _0x439aaf={};_0x439aaf[_0x2af222[_0x7a5d('0x3a')]]={'$like':'%'+_0x30704a['query'][_0x7a5d('0x4f')]+'%'};return _0x439aaf;}})});}_0x20d5f4=_[_0x7a5d('0x50')]({},_0x20d5f4,_0x30704a['options']);var _0x28606e={'where':_0x20d5f4[_0x7a5d('0x4c')]};return db['SmsMessage'][_0x7a5d('0x30')](_0x28606e)['then'](function(_0x31fd4e){_0xb279bf[_0x7a5d('0x30')]=_0x31fd4e;if(_0x30704a['query'][_0x7a5d('0x52')]){_0x20d5f4['include']=[{'all':!![]}];}return db[_0x7a5d('0x3e')][_0x7a5d('0x53')](_0x20d5f4);})[_0x7a5d('0x20')](function(_0x2a4cd9){_0xb279bf[_0x7a5d('0x54')]=_0x2a4cd9;return _0xb279bf;})[_0x7a5d('0x20')](respondWithFilteredResult(_0x1fae23,_0x20d5f4))[_0x7a5d('0x29')](handleError(_0x1fae23,null));};exports[_0x7a5d('0x55')]=function(_0x5af327,_0x260b01){var _0x3f5407={'raw':!![],'where':{'id':_0x5af327[_0x7a5d('0x56')]['id']}},_0x3fae85={};_0x3fae85['model']=_[_0x7a5d('0x57')](db[_0x7a5d('0x3e')][_0x7a5d('0x3f')]);_0x3fae85[_0x7a5d('0x44')]=_['keys'](_0x5af327[_0x7a5d('0x44')]);_0x3fae85['filters']=_[_0x7a5d('0x45')](_0x3fae85[_0x7a5d('0x43')],_0x3fae85['query']);_0x3f5407['attributes']=_[_0x7a5d('0x45')](_0x3fae85[_0x7a5d('0x43')],qs[_0x7a5d('0x46')](_0x5af327[_0x7a5d('0x44')][_0x7a5d('0x46')]));_0x3f5407['attributes']=_0x3f5407[_0x7a5d('0x47')][_0x7a5d('0x48')]?_0x3f5407[_0x7a5d('0x47')]:_0x3fae85[_0x7a5d('0x43')];if(_0x5af327[_0x7a5d('0x44')][_0x7a5d('0x52')]){_0x3f5407[_0x7a5d('0x58')]=[{'all':!![]}];}_0x3f5407=_[_0x7a5d('0x50')]({},_0x3f5407,_0x5af327[_0x7a5d('0x59')]);return db[_0x7a5d('0x3e')]['find'](_0x3f5407)['then'](handleEntityNotFound(_0x260b01,null))[_0x7a5d('0x20')](respondWithResult(_0x260b01,null))[_0x7a5d('0x29')](handleError(_0x260b01,null));};exports['create']=function(_0x24e989,_0x84cbf){return db[_0x7a5d('0x3e')][_0x7a5d('0x5a')](_0x24e989[_0x7a5d('0x5b')],{})[_0x7a5d('0x20')](respondWithResult(_0x84cbf,0xc9))['catch'](handleError(_0x84cbf,null));};exports[_0x7a5d('0x37')]=function(_0xc05cda,_0x540ca4){if(_0xc05cda[_0x7a5d('0x5b')]['id']){delete _0xc05cda[_0x7a5d('0x5b')]['id'];}return db['SmsMessage'][_0x7a5d('0x5c')]({'where':{'id':_0xc05cda['params']['id']}})['then'](handleEntityNotFound(_0x540ca4,null))['then'](saveUpdates(_0xc05cda[_0x7a5d('0x5b')],null))[_0x7a5d('0x20')](respondWithResult(_0x540ca4,null))[_0x7a5d('0x29')](handleError(_0x540ca4,null));};exports['destroy']=function(_0x45aa9b,_0x27a182){return db[_0x7a5d('0x3e')][_0x7a5d('0x5c')]({'where':{'id':_0x45aa9b['params']['id']}})['then'](handleEntityNotFound(_0x27a182,null))[_0x7a5d('0x20')](removeEntity(_0x27a182,null))[_0x7a5d('0x29')](handleError(_0x27a182,null));};exports[_0x7a5d('0x5d')]=function(_0x3eb989,_0x426f8f){return db[_0x7a5d('0x3e')]['describe']()[_0x7a5d('0x20')](respondWithResult(_0x426f8f,null))[_0x7a5d('0x29')](handleError(_0x426f8f,null));};var interaction_log=require(_0x7a5d('0x13'))(_0x7a5d('0x5e'));exports[_0x7a5d('0x5f')]=function(_0x517aa3,_0x2e0d1e,_0x4b1abd){var _0x2907e7={'agent':{},'channel':'sms'};if(_0x517aa3['body']['id']){delete _0x517aa3[_0x7a5d('0x5b')]['id'];}_0x517aa3[_0x7a5d('0x5b')][_0x7a5d('0x60')]=!![];_0x517aa3[_0x7a5d('0x5b')]['readAt']=moment()[_0x7a5d('0x61')]('YYYY-MM-DD\x20HH:mm:ss');_0x517aa3['body'][_0x7a5d('0x62')]=_0x517aa3[_0x7a5d('0x5b')]['UserId']||_0x517aa3[_0x7a5d('0x63')]['id'];_0x2907e7['agent']['id']=_0x517aa3[_0x7a5d('0x5b')]['UserId'];return db['SmsMessage']['find']({'where':{'id':_0x517aa3[_0x7a5d('0x56')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2e0d1e,null))[_0x7a5d('0x20')](saveUpdates(_0x517aa3[_0x7a5d('0x5b')],null))[_0x7a5d('0x20')](function(_0x5cee07){if(_0x5cee07){_0x2907e7[_0x7a5d('0x27')]=_0x5cee07[_0x7a5d('0x64')]({'plain':!![]});return db[_0x7a5d('0x65')][_0x7a5d('0x5c')]({'where':{'id':_0x5cee07['SmsInteractionId']}});}return null;})[_0x7a5d('0x20')](handleEntityNotFound(_0x2e0d1e,null))[_0x7a5d('0x20')](function(_0xe2e926){if(_0xe2e926){return _0xe2e926[_0x7a5d('0x37')]({'UserId':_0x517aa3[_0x7a5d('0x5b')][_0x7a5d('0x62')],'read1stAt':_[_0x7a5d('0x66')](_0xe2e926[_0x7a5d('0x67')])?moment()[_0x7a5d('0x61')](_0x7a5d('0x68')):undefined});}return null;})[_0x7a5d('0x20')](function(_0x29c612){if(_0x29c612){_0x2907e7[_0x7a5d('0x69')]=_0x29c612[_0x7a5d('0x64')]({'plain':!![]});interaction_log[_0x7a5d('0x28')](_0x7a5d('0x6a'),_0x517aa3[_0x7a5d('0x63')]['id'],_0x517aa3[_0x7a5d('0x63')][_0x7a5d('0x3a')],_0x517aa3[_0x7a5d('0x63')]['role'],_0x2907e7[_0x7a5d('0x69')]['id'],_0x517aa3[_0x7a5d('0x5b')]?JSON['stringify'](_0x517aa3[_0x7a5d('0x5b')]):_0x7a5d('0x6b'));return respondWithRpcPromise(_0x7a5d('0x6c'),_0x7a5d('0x6d'),_0x2907e7);}return null;})[_0x7a5d('0x20')](function(_0x388273){var _0x549a1='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x388273[_0x7a5d('0x27')][_0x7a5d('0x6e')];return db[_0x7a5d('0x6f')][_0x7a5d('0x44')](_0x549a1,{'type':db[_0x7a5d('0x70')][_0x7a5d('0x71')][_0x7a5d('0x72')],'raw':!![]})['then'](function(_0x5b478a){return _0x5b478a;});})[_0x7a5d('0x20')](function(_0x1a6668){if(_0x1a6668){_0x2907e7[_0x7a5d('0x27')][_0x7a5d('0x73')]=_0x1a6668[0x0];if(!_0x517aa3['body'][_0x7a5d('0x62')])return;return db['User']['find']({'where':{'id':_0x517aa3[_0x7a5d('0x5b')][_0x7a5d('0x62')],'role':'agent'},'attributes':['id',_0x7a5d('0x3a'),'fullname',_0x7a5d('0x74'),_0x7a5d('0x75')],'raw':!![]});}return null;})[_0x7a5d('0x20')](function(_0xd450bc){if(!_0xd450bc)return null;_0x2907e7[_0x7a5d('0x27')]['agent']=_0xd450bc;return _0x2907e7;})['then'](function(_0x129f38){if(_0x129f38){if(_0x517aa3['body'][_0x7a5d('0x76')]){_0x2907e7[_0x7a5d('0x27')]['interface']=util[_0x7a5d('0x61')](_0x7a5d('0x77'),_0x517aa3[_0x7a5d('0x63')]['name']);_0x2907e7['message']['channel']=_0x2907e7['channel'];_0x2907e7[_0x7a5d('0x27')][_0x7a5d('0x78')]=_0x2907e7[_0x7a5d('0x79')];_0x2907e7['message'][_0x7a5d('0x7a')]=_0x7a5d('0x5f');return respondWithRpcPromise(_0x7a5d('0x7b'),_0x7a5d('0x7b'),{'event':_0x7a5d('0x7c'),'message':_0x2907e7['message']},client9002)[_0x7a5d('0x20')](function(){return _0x2907e7;});}return _0x2907e7;}return null;})[_0x7a5d('0x20')](respondWithResult(_0x2e0d1e,null))[_0x7a5d('0x29')](handleError(_0x2e0d1e,null));};var interaction_log=require(_0x7a5d('0x13'))(_0x7a5d('0x5e'));exports[_0x7a5d('0x35')]=function(_0x4d0bfe,_0x400394,_0x5a844e){var _0x5a2840={'agent':{},'channel':_0x7a5d('0x7d')};if(_0x4d0bfe[_0x7a5d('0x5b')]['id']){delete _0x4d0bfe[_0x7a5d('0x5b')]['id'];}_0x4d0bfe['body'][_0x7a5d('0x62')]=_0x4d0bfe[_0x7a5d('0x5b')]['UserId']||_0x4d0bfe[_0x7a5d('0x63')]['id'];_0x5a2840[_0x7a5d('0x7e')]['id']=_0x4d0bfe['body']['UserId'];return db[_0x7a5d('0x3e')][_0x7a5d('0x5c')]({'where':{'id':_0x4d0bfe[_0x7a5d('0x56')]['id'],'UserId':null}})[_0x7a5d('0x20')](handleEntityNotFound(_0x400394,null))['then'](function(_0x53324b){if(_0x53324b){_0x5a2840[_0x7a5d('0x27')]=_0x53324b['get']({'plain':!![]});return db[_0x7a5d('0x65')]['find']({'where':{'id':_0x53324b['SmsInteractionId']}});}return null;})[_0x7a5d('0x20')](handleEntityNotFound(_0x400394,null))['then'](function(_0x879b0c){if(_0x879b0c){_0x5a2840['interaction']=_0x879b0c['get']({'plain':!![]});interaction_log[_0x7a5d('0x28')](_0x7a5d('0x7f'),_0x4d0bfe[_0x7a5d('0x63')]['id'],_0x4d0bfe['user']['name'],_0x4d0bfe['user']['role'],_0x5a2840[_0x7a5d('0x69')]['id'],_0x4d0bfe[_0x7a5d('0x5b')]?JSON[_0x7a5d('0x24')](_0x4d0bfe[_0x7a5d('0x5b')]):_0x7a5d('0x6b'));return respondWithRpcPromise('RejectMessage',_0x7a5d('0x80'),_0x5a2840);}return null;})['then'](function(_0x4542b9){var _0x4e67a2=_0x7a5d('0x81')+_0x4542b9[_0x7a5d('0x27')][_0x7a5d('0x6e')];return db['sequelize']['query'](_0x4e67a2,{'type':db['Sequelize'][_0x7a5d('0x71')]['SELECT'],'raw':!![]})[_0x7a5d('0x20')](function(_0x3604c7){return _0x3604c7;});})[_0x7a5d('0x20')](function(_0x2c30f5){if(_0x2c30f5){_0x5a2840[_0x7a5d('0x27')][_0x7a5d('0x73')]=_0x2c30f5[0x0];if(!_0x4d0bfe[_0x7a5d('0x5b')][_0x7a5d('0x62')])return;return db[_0x7a5d('0x82')][_0x7a5d('0x5c')]({'where':{'id':_0x4d0bfe['body']['UserId'],'role':_0x7a5d('0x7e')},'attributes':['id','name',_0x7a5d('0x83'),'email',_0x7a5d('0x75')],'raw':!![]});}return null;})['then'](function(_0x12a41d){if(!_0x12a41d)return null;_0x5a2840[_0x7a5d('0x27')]['agent']=_0x12a41d;return _0x5a2840;})[_0x7a5d('0x20')](function(_0x21f352){if(_0x21f352){_0x21f352[_0x7a5d('0x27')][_0x7a5d('0x84')]=util['format'](_0x7a5d('0x77'),_0x4d0bfe['user']['name']);_0x21f352['message'][_0x7a5d('0x79')]=_0x5a2840[_0x7a5d('0x79')];_0x21f352[_0x7a5d('0x27')]['motionChannel']=_0x5a2840[_0x7a5d('0x79')];_0x21f352[_0x7a5d('0x27')][_0x7a5d('0x7a')]='reject';respondWithRpcPromise(_0x7a5d('0x7b'),_0x7a5d('0x7b'),{'event':'rejectmessage','message':_0x21f352[_0x7a5d('0x27')]},client9002);return _0x5a2840;}return null;})['then'](respondWithResult(_0x400394,null))['catch'](handleError(_0x400394,null));};exports[_0x7a5d('0x31')]=function(_0x485b67,_0x5644a3,_0x1b5737){if(_0x485b67['body']['id']){delete _0x485b67[_0x7a5d('0x5b')]['id'];}var _0x8629d8;return db[_0x7a5d('0x3e')]['find']({'where':{'id':_0x485b67[_0x7a5d('0x56')]['id']}})[_0x7a5d('0x20')](handleEntityNotFound(_0x5644a3,null))[_0x7a5d('0x20')](function(_0x25f242){if(_0x25f242){_0x8629d8=_0x25f242;return db[_0x7a5d('0x85')]['find']({'where':{'id':_0x25f242['SmsAccountId']}});}})[_0x7a5d('0x20')](handleEntityNotFound(_0x5644a3,null))['then'](function(_0x5337b9){if(_0x5337b9){logger[_0x7a5d('0x86')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x7a5d('0x31'),'received\x20delivery\x20report\x20from',_0x5337b9['type'],util['inspect'](_0x485b67[_0x7a5d('0x5b')],{'showHidden':![],'depth':null}));switch(_0x5337b9[_0x7a5d('0x41')]){case _0x7a5d('0x87'):if(_0x485b67['body'][_0x7a5d('0x88')]&&_0x485b67[_0x7a5d('0x5b')][_0x7a5d('0x88')]===_0x8629d8['messageId']){return _0x8629d8[_0x7a5d('0x37')]({'read':!![]});}else{logger[_0x7a5d('0x25')](_0x7a5d('0x89'),_0x7a5d('0x31'),'twilio',util[_0x7a5d('0x8a')](_0x485b67['body'],{'showHidden':![],'depth':null}));}break;case'plivo':if(_0x485b67[_0x7a5d('0x5b')][_0x7a5d('0x8b')]&&_0x485b67['body'][_0x7a5d('0x8b')]===_0x8629d8[_0x7a5d('0x8c')]&&_[_0x7a5d('0x8d')]([_0x7a5d('0x8e'),_0x7a5d('0x8f')],_0x485b67['body'][_0x7a5d('0x90')])>=0x0){return _0x8629d8[_0x7a5d('0x37')]({'read':!![]});}else{logger[_0x7a5d('0x25')](_0x7a5d('0x89'),'status',_0x7a5d('0x91'),util[_0x7a5d('0x8a')](_0x485b67[_0x7a5d('0x5b')],{'showHidden':![],'depth':null}));}break;case _0x7a5d('0x92'):var _0xb091a7=_0x485b67[_0x7a5d('0x5b')][_0x7a5d('0x93')][0x0];if(_0xb091a7['status'][_0x7a5d('0x94')]===_0x7a5d('0x95')){return _0x8629d8['update']({'read':!![]});}else{logger[_0x7a5d('0x25')](_0x7a5d('0x89'),_0x7a5d('0x31'),_0x7a5d('0x92'),util[_0x7a5d('0x8a')](_0x485b67['body'],{'showHidden':![],'depth':null}));}break;}return _0x8629d8;}})[_0x7a5d('0x20')](respondWithResult(_0x5644a3,null))[_0x7a5d('0x29')](handleError(_0x5644a3,null));};
\ No newline at end of file
index 26454dd..ba95623 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30ed=['../../mysqldb','SmsMessage','save','remove','emit','hasOwnProperty','hook','exports'];(function(_0x95574e,_0x3ad92a){var _0x32580b=function(_0xf48e20){while(--_0xf48e20){_0x95574e['push'](_0x95574e['shift']());}};_0x32580b(++_0x3ad92a);}(_0x30ed,0xa0));var _0xd30e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x30ed[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var SmsMessage=require(_0xd30e('0x0'))['db'][_0xd30e('0x1')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xd30e('0x2'),'afterUpdate':'update','afterDestroy':_0xd30e('0x3')};function emitEvent(_0x5f03e2){return function(_0x29c138,_0x3a17c3,_0x567634){SmsMessageEvents[_0xd30e('0x4')](_0x5f03e2+':'+_0x29c138['id'],_0x29c138);SmsMessageEvents[_0xd30e('0x4')](_0x5f03e2,_0x29c138);_0x567634(null);};}for(var e in events){if(events[_0xd30e('0x5')](e)){var event=events[e];SmsMessage[_0xd30e('0x6')](e,emitEvent(event));}}module[_0xd30e('0x7')]=SmsMessageEvents;
\ No newline at end of file
+var _0x9f6e=['emit','hasOwnProperty','hook','events','SmsMessage','setMaxListeners','save','remove'];(function(_0x5b360e,_0x494136){var _0x1bf752=function(_0x6df32e){while(--_0x6df32e){_0x5b360e['push'](_0x5b360e['shift']());}};_0x1bf752(++_0x494136);}(_0x9f6e,0x18b));var _0xe9f6=function(_0x39bd93,_0x3673dc){_0x39bd93=_0x39bd93-0x0;var _0x3637fe=_0x9f6e[_0x39bd93];return _0x3637fe;};'use strict';var EventEmitter=require(_0xe9f6('0x0'));var SmsMessage=require('../../mysqldb')['db'][_0xe9f6('0x1')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xe9f6('0x2')](0x0);var events={'afterCreate':_0xe9f6('0x3'),'afterUpdate':'update','afterDestroy':_0xe9f6('0x4')};function emitEvent(_0x350be8){return function(_0x469f8a,_0x7fa2c9,_0x535e9f){SmsMessageEvents[_0xe9f6('0x5')](_0x350be8+':'+_0x469f8a['id'],_0x469f8a);SmsMessageEvents[_0xe9f6('0x5')](_0x350be8,_0x469f8a);_0x535e9f(null);};}for(var e in events){if(events[_0xe9f6('0x6')](e)){var event=events[e];SmsMessage[_0xe9f6('0x7')](e,emitEvent(event));}}module['exports']=SmsMessageEvents;
\ No newline at end of file
index c1b9048..fb29448 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d72=['create','remote','/api/sms/messages/','/status?token=','sid','error','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','phone','smsMethod','sender','&password=','GET','split','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','read','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','requestid','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','format','Basic\x20%s','base64','http_code','data','queued_count','head','messages','message_id','clickSend','Missing\x20parameters:\x20username,\x20password','plivo','authId','token','%s:%s','https://api.plivo.com/v1/Account/%s/Message/','toString','Missing\x20parameters:\x20authId,\x20authToken','baseUrl','/sms/2/text/advanced','application/json','IBSSO\x20','infobip','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','login','timestamp','sort','length','md5','digest','hex','signature=','/external/get/send.php?','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','intelepeer','Bearer\x20','message','refid','status','Token\x20not\x20received','finally','utf8mb4','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./smsMessage.attributes','exports','define','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','SmsInteractionId','SmsInteraction','findOne','then','update','createdAt','catch','SmsAccountId','type','twilio','authToken','accountSid'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x9d72,0x1c9));var _0x29d7=function(_0xa80908,_0x1fbb08){_0xa80908=_0xa80908-0x0;var _0x1e8bed=_0x9d72[_0xa80908];return _0x1e8bed;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x29d7('0x0'))(_0x29d7('0x1'));var moment=require(_0x29d7('0x2'));var BPromise=require(_0x29d7('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x29d7('0x4'));var rimraf=require(_0x29d7('0x5'));var config=require(_0x29d7('0x6'));var attributes=require(_0x29d7('0x7'));module[_0x29d7('0x8')]=function(_0x5a3208,_0x4a9c50){return _0x5a3208[_0x29d7('0x9')]('SmsMessage',attributes,{'tableName':_0x29d7('0xa'),'paranoid':![],'indexes':[{'name':_0x29d7('0xb'),'fields':[_0x29d7('0xb')]},{'name':_0x29d7('0xc'),'fields':[_0x29d7('0xd')],'type':_0x29d7('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4153ae,_0x43eb66,_0x5aa694){var _0x2511fd=_0x5a3208[_0x29d7('0xf')];var _0xeecb86=_0x4153ae[_0x29d7('0x10')]({'plain':!![]});if(_0xeecb86[_0x29d7('0x11')][_0x29d7('0x12')]()==='in'||_0xeecb86[_0x29d7('0x11')]['toLowerCase']()===_0x29d7('0x13')&&!_0xeecb86[_0x29d7('0x14')]&&!_[_0x29d7('0x15')](_0xeecb86[_0x29d7('0x16')])&&!_[_0x29d7('0x15')](_0xeecb86[_0x29d7('0x17')])){_0x2511fd[_0x29d7('0x18')][_0x29d7('0x19')]({'where':{'id':_0xeecb86[_0x29d7('0x17')]}})[_0x29d7('0x1a')](function(_0x195923){if(_0x195923){_0x195923[_0x29d7('0x1b')]({'lastMsgAt':_0xeecb86[_0x29d7('0x1c')],'lastMsgDirection':_0xeecb86['direction']['toLowerCase']()});}})[_0x29d7('0x1d')](function(_0x5dcb63){console['error'](_0x5dcb63);});}if(_0xeecb86[_0x29d7('0x11')]===_0x29d7('0x13')&&!_0xeecb86[_0x29d7('0x14')]){var _0x2b4260;_0x2511fd['SmsAccount']['find']({'where':{'id':_0xeecb86[_0x29d7('0x1e')]},'raw':!![]})[_0x29d7('0x1a')](function(_0x5b8209){_0x2b4260=_0x5b8209;if(_0x2b4260&&_0x2b4260[_0x29d7('0x1f')]){switch(_0x2b4260[_0x29d7('0x1f')]){case _0x29d7('0x20'):var _0x2e03ab=require(_0x29d7('0x20'));if(_0x2b4260['accountSid']&&_0x2b4260[_0x29d7('0x21')]&&_0x2b4260['phone']){var _0x7439cc=new _0x2e03ab(_0x2b4260[_0x29d7('0x22')],_0x2b4260[_0x29d7('0x21')]);_0x7439cc['messages'][_0x29d7('0x23')]({'body':_0xeecb86[_0x29d7('0xd')],'to':_0xeecb86['phone'],'from':_0x2b4260['phone'],'statusCallback':_0x2b4260[_0x29d7('0x24')]+_0x29d7('0x25')+_0xeecb86['id']+_0x29d7('0x26')+_0x2b4260['token']})['then'](function(_0x480203){if(_0x480203[_0x29d7('0x27')]){return _0x4153ae[_0x29d7('0x1b')]({'messageId':_0x480203[_0x29d7('0x27')]});}})['catch'](function(_0x17186b){logger[_0x29d7('0x28')](_0x29d7('0x29'),_0x29d7('0x2a'),_0x29d7('0x20'),util[_0x29d7('0x2b')](_0x17186b,{'showHidden':![],'depth':null}));});}else{logger[_0x29d7('0x28')](_0x29d7('0x29'),_0x29d7('0x2a'),'twilio',_0x29d7('0x2c'));}break;case _0x29d7('0x2d'):var _0xf32657=_0x29d7('0x2e');if(_0x2b4260[_0x29d7('0x2f')]&&_0x2b4260[_0x29d7('0x30')]){var _0x12388c={'recipient':[_0xeecb86[_0x29d7('0x31')]],'message':_0xeecb86[_0x29d7('0xd')],'message_type':_0x2b4260[_0x29d7('0x32')]};if(_0x2b4260[_0x29d7('0x32')]&&_0x2b4260[_0x29d7('0x32')]!=='SI'){_0x12388c[_0x29d7('0x33')]=_0x2b4260[_0x29d7('0x31')];}var _0x4e669e={'url':_0xf32657+'login?username='+_0x2b4260[_0x29d7('0x2f')]+_0x29d7('0x34')+_0x2b4260['password'],'method':_0x29d7('0x35')};rp(_0x4e669e)[_0x29d7('0x1a')](function(_0x10c2a7){var _0x27a9fc=_0x10c2a7[_0x29d7('0x36')](';');var _0xa3d04c={'user_key':_0x27a9fc[0x0],'session_key':_0x27a9fc[0x1]};_0x4e669e={'url':_0xf32657+_0x29d7('0x37'),'method':_0x29d7('0x38'),'headers':{'user_key':_0xa3d04c[_0x29d7('0x39')],'Session_key':_0xa3d04c[_0x29d7('0x3a')]},'json':!![],'body':_0x12388c};return rp(_0x4e669e);})['then'](function(_0x2b1613){if(_0x2b1613[_0x29d7('0x3b')]>=0x1){var _0x4db4aa={'messageId':_0x2b1613[_0x29d7('0x3c')]};if(_0x2b4260['smsMethod']!=='GP'||!_0x2b4260[_0x29d7('0x3d')]){_0x4db4aa[_0x29d7('0x3e')]=!![];}return _0x4153ae[_0x29d7('0x1b')](_0x4db4aa);}else{return logger[_0x29d7('0x28')](_0x29d7('0x29'),_0x29d7('0x2a'),_0x29d7('0x2d'),util[_0x29d7('0x2b')](_0x2b1613,{'showHidden':![],'depth':null}));}})[_0x29d7('0x1d')](function(_0x4c1962){return logger[_0x29d7('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x29d7('0x2a'),_0x29d7('0x2d'),util[_0x29d7('0x2b')](_0x4c1962,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x29d7('0x29'),'afterCreate','skebby','Missing\x20parameters:\x20username,\x20password');}break;case _0x29d7('0x3f'):if(_0x2b4260[_0x29d7('0x21')]){var _0x45389b={'recipient':_0xeecb86[_0x29d7('0x31')],'message':_0xeecb86['body'],'sender':_0x2b4260[_0x29d7('0x40')]||_0x2b4260[_0x29d7('0x31')],'authorization':_0x2b4260['authToken']};var _0x43eb66={'method':_0x29d7('0x38'),'uri':_0x29d7('0x41'),'body':_0x45389b,'json':!![]};rp(_0x43eb66)[_0x29d7('0x1a')](function(_0x28c8fc){var _0x6c7eaa={'messageId':_0x28c8fc[_0x29d7('0x42')]};if(!_0x2b4260[_0x29d7('0x3d')]){_0x6c7eaa[_0x29d7('0x3e')]=!![];}return _0x4153ae[_0x29d7('0x1b')](_0x6c7eaa);})['catch'](function(_0x280930){logger[_0x29d7('0x28')](_0x29d7('0x29'),_0x29d7('0x2a'),'connectel',util[_0x29d7('0x2b')](_0x280930,{'showHidden':![],'depth':null}));});}else{logger[_0x29d7('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x29d7('0x2a'),_0x29d7('0x3f'),_0x29d7('0x43'));}break;case _0x29d7('0x44'):if(_0x2b4260[_0x29d7('0x2f')]&&_0x2b4260[_0x29d7('0x30')]){var _0x45389b={'messages':[{'source':_0x29d7('0x45'),'to':_0xeecb86['phone'],'body':_0xeecb86[_0x29d7('0xd')],'from':_0x2b4260[_0x29d7('0x40')]||_0x2b4260[_0x29d7('0x31')]}]};var _0x43ee1c=util['format']('%s:%s',_0x2b4260[_0x29d7('0x2f')],_0x2b4260[_0x29d7('0x30')]);var _0x43eb66={'method':_0x29d7('0x38'),'uri':'https://rest.clicksend.com/v3/sms/send','body':_0x45389b,'headers':{'Authorization':util[_0x29d7('0x46')](_0x29d7('0x47'),new Buffer(_0x43ee1c)['toString'](_0x29d7('0x48')))},'json':!![]};rp(_0x43eb66)[_0x29d7('0x1a')](function(_0x1e27eb){if(_0x1e27eb[_0x29d7('0x49')]>=0xc8&&_0x1e27eb[_0x29d7('0x49')]<=0xce){if(_0x1e27eb['data']&&_0x1e27eb[_0x29d7('0x4a')][_0x29d7('0x4b')]>0x0){var _0x477062=_[_0x29d7('0x4c')](_0x1e27eb[_0x29d7('0x4a')][_0x29d7('0x4d')]);var _0x2869be={'messageId':_0x477062[_0x29d7('0x4e')]};if(!_0x2b4260[_0x29d7('0x3d')]){_0x2869be[_0x29d7('0x3e')]=!![];}return _0x4153ae[_0x29d7('0x1b')](_0x2869be);}else{logger[_0x29d7('0x28')](_0x29d7('0x29'),'afterCreate',_0x29d7('0x4f'),util[_0x29d7('0x2b')](_0x1e27eb,{'showHidden':![],'depth':null}));}}else{logger['error'](_0x29d7('0x29'),_0x29d7('0x2a'),_0x29d7('0x4f'),util['inspect'](_0x1e27eb,{'showHidden':![],'depth':null}));}})[_0x29d7('0x1d')](function(_0x428dd8){logger['error'](_0x29d7('0x29'),_0x29d7('0x2a'),_0x29d7('0x4f'),util[_0x29d7('0x2b')](_0x428dd8,{'showHidden':![],'depth':null}));});}else{logger[_0x29d7('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x29d7('0x2a'),_0x29d7('0x4f'),_0x29d7('0x50'));}break;case _0x29d7('0x51'):if(_0x2b4260[_0x29d7('0x52')]&&_0x2b4260[_0x29d7('0x21')]){var _0x45389b={'dst':_0xeecb86[_0x29d7('0x31')],'text':_0xeecb86[_0x29d7('0xd')],'src':_0x2b4260[_0x29d7('0x40')]||_0x2b4260[_0x29d7('0x31')],'url':_0x2b4260[_0x29d7('0x24')]+_0x29d7('0x25')+_0xeecb86['id']+_0x29d7('0x26')+_0x2b4260[_0x29d7('0x53')]};var _0x43ee1c=util[_0x29d7('0x46')](_0x29d7('0x54'),_0x2b4260[_0x29d7('0x52')],_0x2b4260[_0x29d7('0x21')]);var _0x43eb66={'method':_0x29d7('0x38'),'uri':util[_0x29d7('0x46')](_0x29d7('0x55'),_0x2b4260['authId']),'body':_0x45389b,'headers':{'Authorization':util['format'](_0x29d7('0x47'),new Buffer(_0x43ee1c)[_0x29d7('0x56')](_0x29d7('0x48')))},'json':!![]};rp(_0x43eb66)[_0x29d7('0x1a')](function(_0x47b2c8){var _0x4fd0ea={'messageId':_0x47b2c8['message_uuid'][0x0]};return _0x4153ae[_0x29d7('0x1b')](_0x4fd0ea);})[_0x29d7('0x1d')](function(_0x490f4e){logger[_0x29d7('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x29d7('0x2a'),_0x29d7('0x51'),util[_0x29d7('0x2b')](_0x490f4e,{'showHidden':![],'depth':null}));});}else{logger[_0x29d7('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x29d7('0x2a'),_0x29d7('0x51'),_0x29d7('0x57'));}break;case'infobip':if(_0x2b4260[_0x29d7('0x2f')]&&_0x2b4260['password']){if(_0x2b4260[_0x29d7('0x58')]){var _0x58337a={'method':_0x29d7('0x38'),'uri':_0x2b4260[_0x29d7('0x58')]+'/auth/1/session','body':{'username':_0x2b4260[_0x29d7('0x2f')],'password':_0x2b4260['password']},'json':!![]};return rp(_0x58337a)[_0x29d7('0x1a')](function(_0x14a066){var _0x2f74f7={'method':_0x29d7('0x38'),'uri':_0x2b4260[_0x29d7('0x58')]+_0x29d7('0x59'),'body':{'messages':[{'from':_0x2b4260['phone'],'destinations':[{'to':_0xeecb86[_0x29d7('0x31')]}],'text':_0xeecb86['body'],'notifyUrl':_0x2b4260[_0x29d7('0x24')]+_0x29d7('0x25')+_0xeecb86['id']+_0x29d7('0x26')+_0x2b4260['token'],'notifyContentType':_0x29d7('0x5a'),'callbackData':_0x2b4260['phone']+';'+_0xeecb86[_0x29d7('0xd')]}]},'headers':{'Authorization':_0x29d7('0x5b')+_0x14a066[_0x29d7('0x53')]},'json':!![]};return rp(_0x2f74f7)[_0x29d7('0x1a')](function(_0xccd1d4){if(_0xccd1d4[_0x29d7('0x4d')]){var _0x3c1fc5={'messageId':_0xccd1d4[_0x29d7('0x4d')][0x0][_0x29d7('0xb')]};if(!_0x2b4260['deliveryReport']){_0x3c1fc5[_0x29d7('0x3e')]=!![];}return _0x4153ae['update'](_0x3c1fc5);}else{return logger[_0x29d7('0x28')](_0x29d7('0x29'),_0x29d7('0x2a'),_0x29d7('0x5c'),util[_0x29d7('0x2b')](_0xccd1d4,{'showHidden':![],'depth':null}));}});})[_0x29d7('0x1d')](function(_0x2b8b2a){return logger[_0x29d7('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x29d7('0x2a'),_0x29d7('0x5c'),util[_0x29d7('0x2b')](_0x2b8b2a,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x29d7('0x29'),_0x29d7('0x2a'),'infobip',_0x29d7('0x5d'));}}else{logger[_0x29d7('0x28')](_0x29d7('0x29'),_0x29d7('0x2a'),_0x29d7('0x5c'),_0x29d7('0x50'));}break;case _0x29d7('0x5e'):var _0x1db2a7=require(_0x29d7('0x5f'));if(_0x2b4260[_0x29d7('0x60')]){var _0x3e3f1f={};_0x3e3f1f[_0x29d7('0x61')]=_0x2b4260[_0x29d7('0x2f')];_0x3e3f1f[_0x29d7('0x31')]=_0xeecb86[_0x29d7('0x31')];_0x3e3f1f[_0x29d7('0x33')]=_0x2b4260[_0x29d7('0x31')];_0x3e3f1f['text']=_0xeecb86[_0x29d7('0xd')];_0x3e3f1f[_0x29d7('0x62')]=+new Date();var _0x48cf90='';var _0x30d6f4='';var _0x5ce7d2=Object['keys'](_0x3e3f1f);_0x5ce7d2[_0x29d7('0x63')]();for(var _0x531237=0x0;_0x531237<_0x5ce7d2[_0x29d7('0x64')];_0x531237++){if(_0x48cf90!=''){_0x48cf90+='&';}_0x48cf90+=_0x5ce7d2[_0x531237]+'='+encodeURIComponent(_0x3e3f1f[_0x5ce7d2[_0x531237]]);_0x30d6f4+=_0x3e3f1f[_0x5ce7d2[_0x531237]];}_0x30d6f4+=_0x2b4260[_0x29d7('0x60')];_0x30d6f4=_0x1db2a7['createHash'](_0x29d7('0x65'))[_0x29d7('0x1b')](_0x30d6f4)[_0x29d7('0x66')](_0x29d7('0x67'));if(_0x48cf90!==''){_0x48cf90+='&';}_0x48cf90+=_0x29d7('0x68')+_0x30d6f4;var _0x4e669e={'method':_0x29d7('0x35'),'uri':_0x2b4260[_0x29d7('0x58')]+_0x29d7('0x69')+_0x48cf90,'json':!![]};return rp(_0x4e669e)['then'](function(_0x4f1d12){var _0x302fdb=Object['keys'](_0x4f1d12);if(_0x4f1d12[_0x302fdb[0x0]][_0x29d7('0x28')]&&parseInt(_0x4f1d12[_0x302fdb[0x0]]['error'])===0x0){var _0x576be6={'messageId':_0x4f1d12[_0x302fdb[0x0]]['id_sms']};if(!_0x2b4260[_0x29d7('0x3d')]){_0x576be6[_0x29d7('0x3e')]=!![];}return _0x4153ae[_0x29d7('0x1b')](_0x576be6);}else{return logger[_0x29d7('0x28')](_0x29d7('0x29'),'afterCreate','csc',util[_0x29d7('0x2b')](_0x4f1d12['error'],{'showHidden':![],'depth':null}));}})['catch'](function(_0x5f50b4){return logger[_0x29d7('0x28')](_0x29d7('0x29'),_0x29d7('0x2a'),_0x29d7('0x5e'),util['inspect'](_0x5f50b4,{'showHidden':![],'depth':null}));});}else{logger[_0x29d7('0x28')](_0x29d7('0x29'),_0x29d7('0x2a'),_0x29d7('0x5e'),_0x29d7('0x6a'));}break;case _0x29d7('0x6b'):if(_0x2b4260[_0x29d7('0x60')]){var _0x2e33c0={'method':'POST','uri':_0x29d7('0x6c'),'headers':{'Authorization':_0x2b4260['apiKey']},'body':{'content':_0xeecb86[_0x29d7('0xd')],'to':[_0xeecb86[_0x29d7('0x31')]],'from':_0x2b4260[_0x29d7('0x31')],'binary':![],'clientMessageId':_0x29d7('0x6d'),'charset':_0x29d7('0x6e')},'json':!![]};rp(_0x2e33c0)['then'](function(_0x36868b){if(!_0x36868b[_0x29d7('0x28')]){var _0x13f02a={'messageId':_0x36868b[_0x29d7('0x4d')][0x0]['apiMessageId']};if(!_0x2b4260['deliveryReport']){_0x13f02a[_0x29d7('0x3e')]=!![];}return _0x4153ae[_0x29d7('0x1b')](_0x13f02a);}else{return logger[_0x29d7('0x28')](_0x29d7('0x29'),'afterCreate',_0x29d7('0x6b'),util[_0x29d7('0x2b')](_0x36868b['error'],{'showHidden':![],'depth':null}));}})[_0x29d7('0x1d')](function(_0xce6f7b){return logger[_0x29d7('0x28')](_0x29d7('0x29'),_0x29d7('0x2a'),'clickatell',util['inspect'](_0xce6f7b,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x29d7('0x29'),_0x29d7('0x2a'),_0x29d7('0x6b'),_0x29d7('0x6a'));}break;case _0x29d7('0x6f'):if(_0x2b4260[_0x29d7('0x2f')]&&_0x2b4260['password']){var _0x43ee1c=util['format'](_0x29d7('0x54'),_0x2b4260[_0x29d7('0x2f')],_0x2b4260[_0x29d7('0x30')]);var _0x43eb66={'method':_0x29d7('0x38'),'uri':_0x29d7('0x70')+_0x2b4260[_0x29d7('0x71')]+_0x29d7('0x72'),'body':{'to':[_0xeecb86[_0x29d7('0x31')]],'text':_0xeecb86[_0x29d7('0xd')],'from':_0x2b4260[_0x29d7('0x31')],'applicationId':_0x2b4260['applicationId']},'headers':{'Authorization':util[_0x29d7('0x46')]('Basic\x20%s',new Buffer(_0x43ee1c)[_0x29d7('0x56')](_0x29d7('0x48')))},'json':!![]};rp(_0x43eb66)[_0x29d7('0x1a')](function(_0x4c90b8){if(_0x4c90b8['id']){var _0x93d434={'messageId':_0x4c90b8['id']};return _0x4153ae[_0x29d7('0x1b')](_0x93d434);}else{logger[_0x29d7('0x28')](_0x29d7('0x29'),_0x29d7('0x2a'),_0x29d7('0x6f'),util[_0x29d7('0x2b')](_0x4c90b8,{'showHidden':![],'depth':null}));}})['catch'](function(_0x473ea2){logger[_0x29d7('0x28')](_0x29d7('0x29'),_0x29d7('0x2a'),_0x29d7('0x6f'),util[_0x29d7('0x2b')](_0x473ea2,{'showHidden':![],'depth':null}));});}else{logger[_0x29d7('0x28')](_0x29d7('0x29'),_0x29d7('0x2a'),'bandwidth',_0x29d7('0x50'));}break;case _0x29d7('0x73'):if(_0x2b4260[_0x29d7('0x60')]){var _0x458c14={};var _0x4e669e={'method':_0x29d7('0x38'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':_0x29d7('0x74')+_0x2b4260['apiKey'],'Content-Type':_0x29d7('0x5a')},'body':{'from':_0x2b4260['phone'],'to':_0xeecb86[_0x29d7('0x31')],'text':_0xeecb86[_0x29d7('0xd')]},'json':!![]};return rp(_0x4e669e)[_0x29d7('0x1a')](function(_0x120e68){if(_0x120e68['code']==0xca){_0x458c14[_0x29d7('0x75')]=_0x120e68;var _0x3e6156={'method':'POST','uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':_0x29d7('0x74')+_0x2b4260[_0x29d7('0x60')],'Content-Type':_0x29d7('0x5a')},'body':{'refid':_0x458c14[_0x29d7('0x75')][_0x29d7('0x76')]},'json':!![]};return rp(_0x3e6156)[_0x29d7('0x1a')](function(_0x206053){_0x458c14[_0x29d7('0x77')]=_0x206053;var _0x28849a={'messageId':_0x458c14['message'][_0x29d7('0x76')],'read':!![]};return _0x4153ae['update'](_0x28849a);});}else{return logger[_0x29d7('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x29d7('0x2a'),'intelepeer',util[_0x29d7('0x2b')](_0x120e68,{'showHidden':![],'depth':null}));}})['catch'](function(_0x206f21){return logger[_0x29d7('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x29d7('0x73'),util[_0x29d7('0x2b')](_0x206f21,{'showHidden':![],'depth':null}));});}else{return logger[_0x29d7('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','intelepeer',_0x29d7('0x78'));}break;}}})[_0x29d7('0x79')](function(){_0x5aa694();});}else{_0x5aa694();}}},'charset':_0x29d7('0x7a'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xbaed=['login?username=','&password=','GET','split','sms','POST','user_key','total_sent','deliveryReport','SmsMessage,\x20%s,\x20%s,\x20%s','skebby','Missing\x20parameters:\x20username,\x20password','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','read','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','%s:%s','https://rest.clicksend.com/v3/sms/send','format','Basic\x20%s','toString','http_code','data','head','message_id','clickSend','plivo','authId','https://api.plivo.com/v1/Account/%s/Message/','base64','infobip','baseUrl','/auth/1/session','token','IBSSO\x20','Missing\x20parameters:\x20base_url','csc','crypto','apiKey','login','text','timestamp','keys','sort','length','createHash','md5','digest','hex','/external/get/send.php?','id_sms','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','bandwidth','accountId','applicationId','Bearer\x20','application/json','code','message','status','intelepeer','finally','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SmsMessage','sms_messages','messageId','fti_sms_messages','body','models','direction','toLowerCase','out','secret','isNil','UserId','SmsInteraction','findOne','catch','error','SmsAccount','SmsAccountId','then','type','twilio','authToken','phone','accountSid','messages','create','remote','/api/sms/messages/','/status?token=','sid','update','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xbaed,0x139));var _0xdbae=function(_0x35d8af,_0x14fd75){_0x35d8af=_0x35d8af-0x0;var _0x1d08b0=_0xbaed[_0x35d8af];return _0x1d08b0;};'use strict';var _=require(_0xdbae('0x0'));var util=require(_0xdbae('0x1'));var logger=require(_0xdbae('0x2'))('api');var moment=require(_0xdbae('0x3'));var BPromise=require(_0xdbae('0x4'));var rp=require(_0xdbae('0x5'));var fs=require('fs');var path=require(_0xdbae('0x6'));var rimraf=require(_0xdbae('0x7'));var config=require(_0xdbae('0x8'));var attributes=require('./smsMessage.attributes');module[_0xdbae('0x9')]=function(_0x1ded7a,_0x4cd199){return _0x1ded7a[_0xdbae('0xa')](_0xdbae('0xb'),attributes,{'tableName':_0xdbae('0xc'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0xdbae('0xd')]},{'name':_0xdbae('0xe'),'fields':[_0xdbae('0xf')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4d866e,_0x9787c6,_0x1536c0){var _0x5df6c9=_0x1ded7a[_0xdbae('0x10')];var _0x56f880=_0x4d866e['get']({'plain':!![]});if(_0x56f880[_0xdbae('0x11')]['toLowerCase']()==='in'||_0x56f880['direction'][_0xdbae('0x12')]()===_0xdbae('0x13')&&!_0x56f880[_0xdbae('0x14')]&&!_[_0xdbae('0x15')](_0x56f880[_0xdbae('0x16')])&&!_[_0xdbae('0x15')](_0x56f880['SmsInteractionId'])){_0x5df6c9[_0xdbae('0x17')][_0xdbae('0x18')]({'where':{'id':_0x56f880['SmsInteractionId']}})['then'](function(_0x3c3234){if(_0x3c3234){_0x3c3234['update']({'lastMsgAt':_0x56f880['createdAt'],'lastMsgDirection':_0x56f880[_0xdbae('0x11')][_0xdbae('0x12')]()});}})[_0xdbae('0x19')](function(_0x216dae){console[_0xdbae('0x1a')](_0x216dae);});}if(_0x56f880[_0xdbae('0x11')]===_0xdbae('0x13')&&!_0x56f880[_0xdbae('0x14')]){var _0x498437;_0x5df6c9[_0xdbae('0x1b')]['find']({'where':{'id':_0x56f880[_0xdbae('0x1c')]},'raw':!![]})[_0xdbae('0x1d')](function(_0x26970c){_0x498437=_0x26970c;if(_0x498437&&_0x498437[_0xdbae('0x1e')]){switch(_0x498437['type']){case _0xdbae('0x1f'):var _0x4459f6=require(_0xdbae('0x1f'));if(_0x498437['accountSid']&&_0x498437[_0xdbae('0x20')]&&_0x498437[_0xdbae('0x21')]){var _0x2a2371=new _0x4459f6(_0x498437[_0xdbae('0x22')],_0x498437[_0xdbae('0x20')]);_0x2a2371[_0xdbae('0x23')][_0xdbae('0x24')]({'body':_0x56f880['body'],'to':_0x56f880[_0xdbae('0x21')],'from':_0x498437[_0xdbae('0x21')],'statusCallback':_0x498437[_0xdbae('0x25')]+_0xdbae('0x26')+_0x56f880['id']+_0xdbae('0x27')+_0x498437['token']})[_0xdbae('0x1d')](function(_0x414445){if(_0x414445[_0xdbae('0x28')]){return _0x4d866e[_0xdbae('0x29')]({'messageId':_0x414445['sid']});}})[_0xdbae('0x19')](function(_0x195f89){logger[_0xdbae('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xdbae('0x2a'),'twilio',util[_0xdbae('0x2b')](_0x195f89,{'showHidden':![],'depth':null}));});}else{logger[_0xdbae('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xdbae('0x1f'),_0xdbae('0x2c'));}break;case'skebby':var _0x2a71ab=_0xdbae('0x2d');if(_0x498437[_0xdbae('0x2e')]&&_0x498437[_0xdbae('0x2f')]){var _0x3b8431={'recipient':[_0x56f880[_0xdbae('0x21')]],'message':_0x56f880[_0xdbae('0xf')],'message_type':_0x498437[_0xdbae('0x30')]};if(_0x498437['smsMethod']&&_0x498437[_0xdbae('0x30')]!=='SI'){_0x3b8431[_0xdbae('0x31')]=_0x498437['phone'];}var _0x38e2aa={'url':_0x2a71ab+_0xdbae('0x32')+_0x498437[_0xdbae('0x2e')]+_0xdbae('0x33')+_0x498437[_0xdbae('0x2f')],'method':_0xdbae('0x34')};rp(_0x38e2aa)[_0xdbae('0x1d')](function(_0x5e6781){var _0x1bba13=_0x5e6781[_0xdbae('0x35')](';');var _0x4b4691={'user_key':_0x1bba13[0x0],'session_key':_0x1bba13[0x1]};_0x38e2aa={'url':_0x2a71ab+_0xdbae('0x36'),'method':_0xdbae('0x37'),'headers':{'user_key':_0x4b4691[_0xdbae('0x38')],'Session_key':_0x4b4691['session_key']},'json':!![],'body':_0x3b8431};return rp(_0x38e2aa);})['then'](function(_0x107de2){if(_0x107de2[_0xdbae('0x39')]>=0x1){var _0x27f3b2={'messageId':_0x107de2['internal_order_id']};if(_0x498437[_0xdbae('0x30')]!=='GP'||!_0x498437[_0xdbae('0x3a')]){_0x27f3b2['read']=!![];}return _0x4d866e[_0xdbae('0x29')](_0x27f3b2);}else{return logger['error'](_0xdbae('0x3b'),_0xdbae('0x2a'),_0xdbae('0x3c'),util[_0xdbae('0x2b')](_0x107de2,{'showHidden':![],'depth':null}));}})[_0xdbae('0x19')](function(_0x284ff2){return logger[_0xdbae('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xdbae('0x2a'),'skebby',util[_0xdbae('0x2b')](_0x284ff2,{'showHidden':![],'depth':null}));});}else{logger[_0xdbae('0x1a')](_0xdbae('0x3b'),'afterCreate',_0xdbae('0x3c'),_0xdbae('0x3d'));}break;case _0xdbae('0x3e'):if(_0x498437[_0xdbae('0x20')]){var _0x3c2bb9={'recipient':_0x56f880['phone'],'message':_0x56f880['body'],'sender':_0x498437[_0xdbae('0x3f')]||_0x498437[_0xdbae('0x21')],'authorization':_0x498437[_0xdbae('0x20')]};var _0x9787c6={'method':'POST','uri':_0xdbae('0x40'),'body':_0x3c2bb9,'json':!![]};rp(_0x9787c6)[_0xdbae('0x1d')](function(_0x5c11a9){var _0x2c1160={'messageId':_0x5c11a9['requestid']};if(!_0x498437[_0xdbae('0x3a')]){_0x2c1160[_0xdbae('0x41')]=!![];}return _0x4d866e[_0xdbae('0x29')](_0x2c1160);})[_0xdbae('0x19')](function(_0x42351b){logger[_0xdbae('0x1a')](_0xdbae('0x3b'),_0xdbae('0x2a'),'connectel',util['inspect'](_0x42351b,{'showHidden':![],'depth':null}));});}else{logger[_0xdbae('0x1a')](_0xdbae('0x3b'),_0xdbae('0x2a'),_0xdbae('0x3e'),_0xdbae('0x42'));}break;case _0xdbae('0x43'):if(_0x498437[_0xdbae('0x2e')]&&_0x498437[_0xdbae('0x2f')]){var _0x3c2bb9={'messages':[{'source':_0xdbae('0x44'),'to':_0x56f880[_0xdbae('0x21')],'body':_0x56f880[_0xdbae('0xf')],'from':_0x498437[_0xdbae('0x3f')]||_0x498437[_0xdbae('0x21')]}]};var _0x58365d=util['format'](_0xdbae('0x45'),_0x498437[_0xdbae('0x2e')],_0x498437[_0xdbae('0x2f')]);var _0x9787c6={'method':_0xdbae('0x37'),'uri':_0xdbae('0x46'),'body':_0x3c2bb9,'headers':{'Authorization':util[_0xdbae('0x47')](_0xdbae('0x48'),new Buffer(_0x58365d)[_0xdbae('0x49')]('base64'))},'json':!![]};rp(_0x9787c6)[_0xdbae('0x1d')](function(_0x2edf9d){if(_0x2edf9d[_0xdbae('0x4a')]>=0xc8&&_0x2edf9d[_0xdbae('0x4a')]<=0xce){if(_0x2edf9d[_0xdbae('0x4b')]&&_0x2edf9d['data']['queued_count']>0x0){var _0x74fd7f=_[_0xdbae('0x4c')](_0x2edf9d[_0xdbae('0x4b')][_0xdbae('0x23')]);var _0x33d428={'messageId':_0x74fd7f[_0xdbae('0x4d')]};if(!_0x498437[_0xdbae('0x3a')]){_0x33d428[_0xdbae('0x41')]=!![];}return _0x4d866e[_0xdbae('0x29')](_0x33d428);}else{logger[_0xdbae('0x1a')](_0xdbae('0x3b'),_0xdbae('0x2a'),'clickSend',util[_0xdbae('0x2b')](_0x2edf9d,{'showHidden':![],'depth':null}));}}else{logger[_0xdbae('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xdbae('0x2a'),_0xdbae('0x4e'),util[_0xdbae('0x2b')](_0x2edf9d,{'showHidden':![],'depth':null}));}})['catch'](function(_0x26c5ee){logger[_0xdbae('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','clickSend',util[_0xdbae('0x2b')](_0x26c5ee,{'showHidden':![],'depth':null}));});}else{logger[_0xdbae('0x1a')](_0xdbae('0x3b'),'afterCreate','clickSend',_0xdbae('0x3d'));}break;case _0xdbae('0x4f'):if(_0x498437[_0xdbae('0x50')]&&_0x498437['authToken']){var _0x3c2bb9={'dst':_0x56f880[_0xdbae('0x21')],'text':_0x56f880[_0xdbae('0xf')],'src':_0x498437['senderString']||_0x498437[_0xdbae('0x21')],'url':_0x498437[_0xdbae('0x25')]+_0xdbae('0x26')+_0x56f880['id']+_0xdbae('0x27')+_0x498437['token']};var _0x58365d=util[_0xdbae('0x47')](_0xdbae('0x45'),_0x498437[_0xdbae('0x50')],_0x498437[_0xdbae('0x20')]);var _0x9787c6={'method':'POST','uri':util[_0xdbae('0x47')](_0xdbae('0x51'),_0x498437[_0xdbae('0x50')]),'body':_0x3c2bb9,'headers':{'Authorization':util[_0xdbae('0x47')](_0xdbae('0x48'),new Buffer(_0x58365d)['toString'](_0xdbae('0x52')))},'json':!![]};rp(_0x9787c6)[_0xdbae('0x1d')](function(_0x39fda6){var _0x4d7575={'messageId':_0x39fda6['message_uuid'][0x0]};return _0x4d866e[_0xdbae('0x29')](_0x4d7575);})['catch'](function(_0x494926){logger['error'](_0xdbae('0x3b'),_0xdbae('0x2a'),_0xdbae('0x4f'),util['inspect'](_0x494926,{'showHidden':![],'depth':null}));});}else{logger[_0xdbae('0x1a')](_0xdbae('0x3b'),_0xdbae('0x2a'),'plivo','Missing\x20parameters:\x20authId,\x20authToken');}break;case _0xdbae('0x53'):if(_0x498437[_0xdbae('0x2e')]&&_0x498437[_0xdbae('0x2f')]){if(_0x498437[_0xdbae('0x54')]){var _0x2a32df={'method':_0xdbae('0x37'),'uri':_0x498437[_0xdbae('0x54')]+_0xdbae('0x55'),'body':{'username':_0x498437[_0xdbae('0x2e')],'password':_0x498437['password']},'json':!![]};return rp(_0x2a32df)['then'](function(_0x14231a){var _0x491173={'method':_0xdbae('0x37'),'uri':_0x498437[_0xdbae('0x54')]+'/sms/2/text/advanced','body':{'messages':[{'from':_0x498437['phone'],'destinations':[{'to':_0x56f880[_0xdbae('0x21')]}],'text':_0x56f880[_0xdbae('0xf')],'notifyUrl':_0x498437['remote']+'/api/sms/messages/'+_0x56f880['id']+_0xdbae('0x27')+_0x498437[_0xdbae('0x56')],'notifyContentType':'application/json','callbackData':_0x498437['phone']+';'+_0x56f880[_0xdbae('0xf')]}]},'headers':{'Authorization':_0xdbae('0x57')+_0x14231a[_0xdbae('0x56')]},'json':!![]};return rp(_0x491173)[_0xdbae('0x1d')](function(_0x4ae7ea){if(_0x4ae7ea[_0xdbae('0x23')]){var _0x15e4c5={'messageId':_0x4ae7ea[_0xdbae('0x23')][0x0]['messageId']};if(!_0x498437[_0xdbae('0x3a')]){_0x15e4c5[_0xdbae('0x41')]=!![];}return _0x4d866e[_0xdbae('0x29')](_0x15e4c5);}else{return logger['error'](_0xdbae('0x3b'),_0xdbae('0x2a'),_0xdbae('0x53'),util[_0xdbae('0x2b')](_0x4ae7ea,{'showHidden':![],'depth':null}));}});})[_0xdbae('0x19')](function(_0x41da60){return logger[_0xdbae('0x1a')](_0xdbae('0x3b'),_0xdbae('0x2a'),_0xdbae('0x53'),util[_0xdbae('0x2b')](_0x41da60,{'showHidden':![],'depth':null}));});}else{logger[_0xdbae('0x1a')](_0xdbae('0x3b'),_0xdbae('0x2a'),_0xdbae('0x53'),_0xdbae('0x58'));}}else{logger[_0xdbae('0x1a')](_0xdbae('0x3b'),_0xdbae('0x2a'),_0xdbae('0x53'),'Missing\x20parameters:\x20username,\x20password');}break;case _0xdbae('0x59'):var _0x59c808=require(_0xdbae('0x5a'));if(_0x498437[_0xdbae('0x5b')]){var _0x11d9a2={};_0x11d9a2[_0xdbae('0x5c')]=_0x498437['username'];_0x11d9a2[_0xdbae('0x21')]=_0x56f880[_0xdbae('0x21')];_0x11d9a2[_0xdbae('0x31')]=_0x498437[_0xdbae('0x21')];_0x11d9a2[_0xdbae('0x5d')]=_0x56f880[_0xdbae('0xf')];_0x11d9a2[_0xdbae('0x5e')]=+new Date();var _0x6e25a9='';var _0x280551='';var _0x5e8b8f=Object[_0xdbae('0x5f')](_0x11d9a2);_0x5e8b8f[_0xdbae('0x60')]();for(var _0x4ae49a=0x0;_0x4ae49a<_0x5e8b8f[_0xdbae('0x61')];_0x4ae49a++){if(_0x6e25a9!=''){_0x6e25a9+='&';}_0x6e25a9+=_0x5e8b8f[_0x4ae49a]+'='+encodeURIComponent(_0x11d9a2[_0x5e8b8f[_0x4ae49a]]);_0x280551+=_0x11d9a2[_0x5e8b8f[_0x4ae49a]];}_0x280551+=_0x498437[_0xdbae('0x5b')];_0x280551=_0x59c808[_0xdbae('0x62')](_0xdbae('0x63'))[_0xdbae('0x29')](_0x280551)[_0xdbae('0x64')](_0xdbae('0x65'));if(_0x6e25a9!==''){_0x6e25a9+='&';}_0x6e25a9+='signature='+_0x280551;var _0x38e2aa={'method':_0xdbae('0x34'),'uri':_0x498437[_0xdbae('0x54')]+_0xdbae('0x66')+_0x6e25a9,'json':!![]};return rp(_0x38e2aa)['then'](function(_0x1fad62){var _0x4b76c0=Object[_0xdbae('0x5f')](_0x1fad62);if(_0x1fad62[_0x4b76c0[0x0]][_0xdbae('0x1a')]&&parseInt(_0x1fad62[_0x4b76c0[0x0]][_0xdbae('0x1a')])===0x0){var _0x532936={'messageId':_0x1fad62[_0x4b76c0[0x0]][_0xdbae('0x67')]};if(!_0x498437[_0xdbae('0x3a')]){_0x532936[_0xdbae('0x41')]=!![];}return _0x4d866e[_0xdbae('0x29')](_0x532936);}else{return logger[_0xdbae('0x1a')](_0xdbae('0x3b'),_0xdbae('0x2a'),'csc',util[_0xdbae('0x2b')](_0x1fad62[_0xdbae('0x1a')],{'showHidden':![],'depth':null}));}})['catch'](function(_0xdb4898){return logger[_0xdbae('0x1a')](_0xdbae('0x3b'),_0xdbae('0x2a'),_0xdbae('0x59'),util[_0xdbae('0x2b')](_0xdb4898,{'showHidden':![],'depth':null}));});}else{logger[_0xdbae('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xdbae('0x59'),_0xdbae('0x68'));}break;case _0xdbae('0x69'):if(_0x498437[_0xdbae('0x5b')]){var _0x120f85={'method':_0xdbae('0x37'),'uri':_0xdbae('0x6a'),'headers':{'Authorization':_0x498437[_0xdbae('0x5b')]},'body':{'content':_0x56f880[_0xdbae('0xf')],'to':[_0x56f880['phone']],'from':_0x498437[_0xdbae('0x21')],'binary':![],'clientMessageId':_0xdbae('0x6b'),'charset':_0xdbae('0x6c')},'json':!![]};rp(_0x120f85)[_0xdbae('0x1d')](function(_0x5a4bbf){if(!_0x5a4bbf[_0xdbae('0x1a')]){var _0x405b87={'messageId':_0x5a4bbf[_0xdbae('0x23')][0x0][_0xdbae('0x6d')]};if(!_0x498437['deliveryReport']){_0x405b87[_0xdbae('0x41')]=!![];}return _0x4d866e[_0xdbae('0x29')](_0x405b87);}else{return logger['error'](_0xdbae('0x3b'),_0xdbae('0x2a'),'clickatell',util['inspect'](_0x5a4bbf[_0xdbae('0x1a')],{'showHidden':![],'depth':null}));}})[_0xdbae('0x19')](function(_0x324b81){return logger[_0xdbae('0x1a')](_0xdbae('0x3b'),_0xdbae('0x2a'),'clickatell',util[_0xdbae('0x2b')](_0x324b81,{'showHidden':![],'depth':null}));});}else{logger[_0xdbae('0x1a')](_0xdbae('0x3b'),_0xdbae('0x2a'),'clickatell',_0xdbae('0x68'));}break;case _0xdbae('0x6e'):if(_0x498437[_0xdbae('0x2e')]&&_0x498437[_0xdbae('0x2f')]){var _0x58365d=util['format'](_0xdbae('0x45'),_0x498437[_0xdbae('0x2e')],_0x498437[_0xdbae('0x2f')]);var _0x9787c6={'method':'POST','uri':'https://messaging.bandwidth.com/api/v2/users/'+_0x498437[_0xdbae('0x6f')]+'/messages','body':{'to':[_0x56f880['phone']],'text':_0x56f880[_0xdbae('0xf')],'from':_0x498437[_0xdbae('0x21')],'applicationId':_0x498437[_0xdbae('0x70')]},'headers':{'Authorization':util[_0xdbae('0x47')](_0xdbae('0x48'),new Buffer(_0x58365d)[_0xdbae('0x49')](_0xdbae('0x52')))},'json':!![]};rp(_0x9787c6)['then'](function(_0x190437){if(_0x190437['id']){var _0x3c125e={'messageId':_0x190437['id']};return _0x4d866e[_0xdbae('0x29')](_0x3c125e);}else{logger[_0xdbae('0x1a')](_0xdbae('0x3b'),_0xdbae('0x2a'),'bandwidth',util[_0xdbae('0x2b')](_0x190437,{'showHidden':![],'depth':null}));}})[_0xdbae('0x19')](function(_0x35c265){logger[_0xdbae('0x1a')](_0xdbae('0x3b'),'afterCreate',_0xdbae('0x6e'),util[_0xdbae('0x2b')](_0x35c265,{'showHidden':![],'depth':null}));});}else{logger[_0xdbae('0x1a')](_0xdbae('0x3b'),_0xdbae('0x2a'),_0xdbae('0x6e'),'Missing\x20parameters:\x20username,\x20password');}break;case'intelepeer':if(_0x498437[_0xdbae('0x5b')]){var _0x1bddc0={};var _0x38e2aa={'method':_0xdbae('0x37'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':_0xdbae('0x71')+_0x498437[_0xdbae('0x5b')],'Content-Type':_0xdbae('0x72')},'body':{'from':_0x498437['phone'],'to':_0x56f880[_0xdbae('0x21')],'text':_0x56f880[_0xdbae('0xf')]},'json':!![]};return rp(_0x38e2aa)['then'](function(_0x3b3b4f){if(_0x3b3b4f[_0xdbae('0x73')]==0xca){_0x1bddc0[_0xdbae('0x74')]=_0x3b3b4f;var _0x38b792={'method':'POST','uri':'https://api.intelepeer.com/_rest/v4/app/sms/mdr','headers':{'Authorization':_0xdbae('0x71')+_0x498437['apiKey'],'Content-Type':_0xdbae('0x72')},'body':{'refid':_0x1bddc0[_0xdbae('0x74')]['refid']},'json':!![]};return rp(_0x38b792)[_0xdbae('0x1d')](function(_0x4af1dd){_0x1bddc0[_0xdbae('0x75')]=_0x4af1dd;var _0x332563={'messageId':_0x1bddc0[_0xdbae('0x74')]['refid'],'read':!![]};return _0x4d866e[_0xdbae('0x29')](_0x332563);});}else{return logger[_0xdbae('0x1a')](_0xdbae('0x3b'),_0xdbae('0x2a'),_0xdbae('0x76'),util[_0xdbae('0x2b')](_0x3b3b4f,{'showHidden':![],'depth':null}));}})['catch'](function(_0x5c886c){return logger[_0xdbae('0x1a')](_0xdbae('0x3b'),_0xdbae('0x2a'),'intelepeer',util['inspect'](_0x5c886c,{'showHidden':![],'depth':null}));});}else{return logger[_0xdbae('0x1a')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0xdbae('0x2a'),_0xdbae('0x76'),'Token\x20not\x20received');}break;}}})[_0xdbae('0x77')](function(){_0x1536c0();});}else{_0x1536c0();}}},'charset':'utf8mb4','collate':_0xdbae('0x78')});};
\ No newline at end of file
index 75b3a6a..e141e00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1e0=['util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSmsMessage','options','raw','debug'];(function(_0x549307,_0x4ae139){var _0x554636=function(_0x423dfa){while(--_0x423dfa){_0x549307['push'](_0x549307['shift']());}};_0x554636(++_0x4ae139);}(_0xb1e0,0x1c0));var _0x0b1e=function(_0x63dc68,_0x52f33f){_0x63dc68=_0x63dc68-0x0;var _0xb389e0=_0xb1e0[_0x63dc68];return _0xb389e0;};'use strict';var _=require('lodash');var util=require(_0x0b1e('0x0'));var moment=require(_0x0b1e('0x1'));var BPromise=require('bluebird');var rs=require(_0x0b1e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0b1e('0x3'))['db'];var utils=require(_0x0b1e('0x4'));var logger=require(_0x0b1e('0x5'))(_0x0b1e('0x6'));var config=require(_0x0b1e('0x7'));var jayson=require(_0x0b1e('0x8'));var client=jayson[_0x0b1e('0x9')][_0x0b1e('0xa')]({'port':0x232a});config[_0x0b1e('0xb')]=_[_0x0b1e('0xc')](config[_0x0b1e('0xb')],{'host':_0x0b1e('0xd'),'port':0x18eb});var socket=require(_0x0b1e('0xe'))(new Redis(config[_0x0b1e('0xb')]));require(_0x0b1e('0xf'))[_0x0b1e('0x10')](socket);function respondWithRpcPromise(_0x15dba4,_0x25d9c9,_0x4738e9){return new BPromise(function(_0x544328,_0x3df126){return client[_0x0b1e('0x11')](_0x15dba4,_0x4738e9)[_0x0b1e('0x12')](function(_0x414021){logger[_0x0b1e('0x13')](_0x0b1e('0x14'),_0x25d9c9,_0x0b1e('0x15'));logger['debug'](_0x0b1e('0x16'),_0x25d9c9,_0x0b1e('0x15'),JSON[_0x0b1e('0x17')](_0x414021));if(_0x414021[_0x0b1e('0x18')]){if(_0x414021[_0x0b1e('0x18')]['code']===0x1f4){logger[_0x0b1e('0x18')](_0x0b1e('0x14'),_0x25d9c9,_0x414021['error'][_0x0b1e('0x19')]);return _0x3df126(_0x414021[_0x0b1e('0x18')][_0x0b1e('0x19')]);}logger[_0x0b1e('0x18')]('SmsMessage,\x20%s,\x20%s',_0x25d9c9,_0x414021[_0x0b1e('0x18')][_0x0b1e('0x19')]);return _0x544328(_0x414021['error']['message']);}else{logger[_0x0b1e('0x13')](_0x0b1e('0x14'),_0x25d9c9,_0x0b1e('0x15'));_0x544328(_0x414021[_0x0b1e('0x1a')]['message']);}})[_0x0b1e('0x1b')](function(_0x35ead6){logger['error'](_0x0b1e('0x14'),_0x25d9c9,_0x35ead6);_0x3df126(_0x35ead6);});});}exports[_0x0b1e('0x1c')]=function(_0x5506b8){var _0x108300=this;return new Promise(function(_0x1406f2,_0x7e442a){return db['SmsMessage']['create'](_0x5506b8['body'],{'raw':_0x5506b8[_0x0b1e('0x1d')]?_0x5506b8[_0x0b1e('0x1d')][_0x0b1e('0x1e')]===undefined?!![]:![]:!![]})[_0x0b1e('0x12')](function(_0x3eb71b){logger['info']('CreateSmsMessage',_0x5506b8);logger[_0x0b1e('0x1f')](_0x0b1e('0x1c'),_0x5506b8,JSON[_0x0b1e('0x17')](_0x3eb71b));_0x1406f2(_0x3eb71b);})[_0x0b1e('0x1b')](function(_0x226b1d){logger[_0x0b1e('0x18')](_0x0b1e('0x1c'),_0x226b1d[_0x0b1e('0x19')],_0x5506b8);_0x7e442a(_0x108300[_0x0b1e('0x18')](0x1f4,_0x226b1d[_0x0b1e('0x19')]));});});};
\ No newline at end of file
+var _0x84d4=['jayson/promise','client','redis','defaults','socket.io-emitter','register','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','create','body','options','raw','CreateSmsMessage','debug','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x359ffe,_0x2c7b31){var _0x15bc69=function(_0x284152){while(--_0x284152){_0x359ffe['push'](_0x359ffe['shift']());}};_0x15bc69(++_0x2c7b31);}(_0x84d4,0x7e));var _0x484d=function(_0x5b5209,_0x3cbed2){_0x5b5209=_0x5b5209-0x0;var _0x3ed5f5=_0x84d4[_0x5b5209];return _0x3ed5f5;};'use strict';var _=require(_0x484d('0x0'));var util=require(_0x484d('0x1'));var moment=require(_0x484d('0x2'));var BPromise=require('bluebird');var rs=require(_0x484d('0x3'));var fs=require('fs');var Redis=require(_0x484d('0x4'));var db=require(_0x484d('0x5'))['db'];var utils=require(_0x484d('0x6'));var logger=require(_0x484d('0x7'))(_0x484d('0x8'));var config=require(_0x484d('0x9'));var jayson=require(_0x484d('0xa'));var client=jayson[_0x484d('0xb')]['http']({'port':0x232a});config[_0x484d('0xc')]=_[_0x484d('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x484d('0xe'))(new Redis(config['redis']));require('./smsMessage.socket')[_0x484d('0xf')](socket);function respondWithRpcPromise(_0x33c48b,_0xbb909,_0x9efe2f){return new BPromise(function(_0x56a081,_0xffa970){return client[_0x484d('0x10')](_0x33c48b,_0x9efe2f)[_0x484d('0x11')](function(_0x6ce374){logger[_0x484d('0x12')](_0x484d('0x13'),_0xbb909,_0x484d('0x14'));logger['debug'](_0x484d('0x15'),_0xbb909,_0x484d('0x14'),JSON[_0x484d('0x16')](_0x6ce374));if(_0x6ce374[_0x484d('0x17')]){if(_0x6ce374['error'][_0x484d('0x18')]===0x1f4){logger[_0x484d('0x17')]('SmsMessage,\x20%s,\x20%s',_0xbb909,_0x6ce374[_0x484d('0x17')][_0x484d('0x19')]);return _0xffa970(_0x6ce374[_0x484d('0x17')][_0x484d('0x19')]);}logger[_0x484d('0x17')](_0x484d('0x13'),_0xbb909,_0x6ce374[_0x484d('0x17')][_0x484d('0x19')]);return _0x56a081(_0x6ce374[_0x484d('0x17')][_0x484d('0x19')]);}else{logger[_0x484d('0x12')](_0x484d('0x13'),_0xbb909,_0x484d('0x14'));_0x56a081(_0x6ce374[_0x484d('0x1a')][_0x484d('0x19')]);}})[_0x484d('0x1b')](function(_0x18a472){logger[_0x484d('0x17')](_0x484d('0x13'),_0xbb909,_0x18a472);_0xffa970(_0x18a472);});});}exports['CreateSmsMessage']=function(_0x401e8a){var _0x345ae7=this;return new Promise(function(_0x48d185,_0x435634){return db['SmsMessage'][_0x484d('0x1c')](_0x401e8a[_0x484d('0x1d')],{'raw':_0x401e8a[_0x484d('0x1e')]?_0x401e8a[_0x484d('0x1e')][_0x484d('0x1f')]===undefined?!![]:![]:!![]})[_0x484d('0x11')](function(_0x188e4b){logger['info'](_0x484d('0x20'),_0x401e8a);logger[_0x484d('0x21')](_0x484d('0x20'),_0x401e8a,JSON['stringify'](_0x188e4b));_0x48d185(_0x188e4b);})['catch'](function(_0x17d3f2){logger[_0x484d('0x17')](_0x484d('0x20'),_0x17d3f2[_0x484d('0x19')],_0x401e8a);_0x435634(_0x345ae7[_0x484d('0x17')](0x1f4,_0x17d3f2[_0x484d('0x19')]));});});};
\ No newline at end of file
index 7277717..0d105b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3ef=['length','smsMessage:','./smsMessage.events','save','update','emit','removeListener','register'];(function(_0x5141d2,_0x5720d3){var _0x591eca=function(_0x15512b){while(--_0x15512b){_0x5141d2['push'](_0x5141d2['shift']());}};_0x591eca(++_0x5720d3);}(_0xe3ef,0x12a));var _0xfe3e=function(_0x8ad8fb,_0x1daf42){_0x8ad8fb=_0x8ad8fb-0x0;var _0x23dd5d=_0xe3ef[_0x8ad8fb];return _0x23dd5d;};'use strict';var SmsMessageEvents=require(_0xfe3e('0x0'));var events=[_0xfe3e('0x1'),'remove',_0xfe3e('0x2')];function createListener(_0x2fa372,_0x5766ef){return function(_0x21c635){_0x5766ef[_0xfe3e('0x3')](_0x2fa372,_0x21c635);};}function removeListener(_0x3fda4f,_0x3dc69f){return function(){SmsMessageEvents[_0xfe3e('0x4')](_0x3fda4f,_0x3dc69f);};}exports[_0xfe3e('0x5')]=function(_0xdf5588){for(var _0x139022=0x0,_0x19f6a0=events[_0xfe3e('0x6')];_0x139022<_0x19f6a0;_0x139022++){var _0x523419=events[_0x139022];var _0x28da0d=createListener(_0xfe3e('0x7')+_0x523419,_0xdf5588);SmsMessageEvents['on'](_0x523419,_0x28da0d);}};
\ No newline at end of file
+var _0xd987=['length','smsMessage:','./smsMessage.events','update','emit','removeListener','register'];(function(_0x363ef8,_0x4ecb1a){var _0x148822=function(_0x232634){while(--_0x232634){_0x363ef8['push'](_0x363ef8['shift']());}};_0x148822(++_0x4ecb1a);}(_0xd987,0x1ad));var _0x7d98=function(_0x335faf,_0x5e14d2){_0x335faf=_0x335faf-0x0;var _0x41a7eb=_0xd987[_0x335faf];return _0x41a7eb;};'use strict';var SmsMessageEvents=require(_0x7d98('0x0'));var events=['save','remove',_0x7d98('0x1')];function createListener(_0x5a36e7,_0xc252a8){return function(_0x726d5){_0xc252a8[_0x7d98('0x2')](_0x5a36e7,_0x726d5);};}function removeListener(_0x420101,_0x30e71b){return function(){SmsMessageEvents[_0x7d98('0x3')](_0x420101,_0x30e71b);};}exports[_0x7d98('0x4')]=function(_0x4add68){for(var _0x3797ef=0x0,_0x128c39=events[_0x7d98('0x5')];_0x3797ef<_0x128c39;_0x3797ef++){var _0x36319d=events[_0x3797ef];var _0x16da1c=createListener(_0x7d98('0x6')+_0x36319d,_0x4add68);SmsMessageEvents['on'](_0x36319d,_0x16da1c);}};
\ No newline at end of file
index 2a48136..8cadb48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55d2=['../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','post','create','addTeams','/:id/users','addAgents','put','delete','destroy','removeTeams','removeAgents','exports','path','connect-timeout','Router','fs-extra'];(function(_0x17b61c,_0x4d056d){var _0x210e91=function(_0x2a178c){while(--_0x2a178c){_0x17b61c['push'](_0x17b61c['shift']());}};_0x210e91(++_0x4d056d);}(_0x55d2,0x6c));var _0x255d=function(_0x195e6a,_0x379e1c){_0x195e6a=_0x195e6a-0x0;var _0x4aeab4=_0x55d2[_0x195e6a];return _0x4aeab4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x255d('0x0'));var timeout=require(_0x255d('0x1'));var express=require('express');var router=express[_0x255d('0x2')]();var fs_extra=require(_0x255d('0x3'));var auth=require(_0x255d('0x4'));var interaction=require(_0x255d('0x5'));var config=require(_0x255d('0x6'));var controller=require(_0x255d('0x7'));router[_0x255d('0x8')]('/',auth[_0x255d('0x9')](),controller[_0x255d('0xa')]);router[_0x255d('0x8')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x255d('0x8')](_0x255d('0xb'),auth['isAuthenticated'](),controller[_0x255d('0xc')]);router[_0x255d('0x8')](_0x255d('0xd'),auth['isAuthenticated'](),controller[_0x255d('0xe')]);router[_0x255d('0x8')](_0x255d('0xf'),auth[_0x255d('0x9')](),controller[_0x255d('0x10')]);router[_0x255d('0x8')]('/:id/users',auth[_0x255d('0x9')](),controller['getAgents']);router[_0x255d('0x11')]('/',auth[_0x255d('0x9')](),controller[_0x255d('0x12')]);router[_0x255d('0x11')](_0x255d('0xf'),auth['isAuthenticated'](),controller[_0x255d('0x13')]);router[_0x255d('0x11')](_0x255d('0x14'),auth[_0x255d('0x9')](),controller[_0x255d('0x15')]);router[_0x255d('0x16')]('/:id',auth[_0x255d('0x9')](),controller['update']);router[_0x255d('0x17')](_0x255d('0xb'),auth[_0x255d('0x9')](),controller[_0x255d('0x18')]);router[_0x255d('0x17')](_0x255d('0xf'),auth[_0x255d('0x9')](),controller[_0x255d('0x19')]);router[_0x255d('0x17')](_0x255d('0x14'),auth[_0x255d('0x9')](),controller[_0x255d('0x1a')]);module[_0x255d('0x1b')]=router;
\ No newline at end of file
+var _0xe19d=['/:id/users','getAgents','create','addTeams','addAgents','update','delete','removeTeams','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','/describe','/:id','/:id/members','getMembers','/:id/teams','getTeams'];(function(_0x912d27,_0x28e0e3){var _0x31b918=function(_0x1882f7){while(--_0x1882f7){_0x912d27['push'](_0x912d27['shift']());}};_0x31b918(++_0x28e0e3);}(_0xe19d,0x1a9));var _0xde19=function(_0x447d73,_0x50f8c7){_0x447d73=_0x447d73-0x0;var _0x343b07=_0xe19d[_0x447d73];return _0x343b07;};'use strict';var multer=require(_0xde19('0x0'));var util=require(_0xde19('0x1'));var path=require('path');var timeout=require(_0xde19('0x2'));var express=require(_0xde19('0x3'));var router=express[_0xde19('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xde19('0x5'));var interaction=require(_0xde19('0x6'));var config=require(_0xde19('0x7'));var controller=require(_0xde19('0x8'));router[_0xde19('0x9')]('/',auth[_0xde19('0xa')](),controller['index']);router['get'](_0xde19('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0xde19('0x9')](_0xde19('0xc'),auth[_0xde19('0xa')](),controller['show']);router['get'](_0xde19('0xd'),auth[_0xde19('0xa')](),controller[_0xde19('0xe')]);router[_0xde19('0x9')](_0xde19('0xf'),auth[_0xde19('0xa')](),controller[_0xde19('0x10')]);router[_0xde19('0x9')](_0xde19('0x11'),auth[_0xde19('0xa')](),controller[_0xde19('0x12')]);router['post']('/',auth['isAuthenticated'](),controller[_0xde19('0x13')]);router['post'](_0xde19('0xf'),auth[_0xde19('0xa')](),controller[_0xde19('0x14')]);router['post'](_0xde19('0x11'),auth[_0xde19('0xa')](),controller[_0xde19('0x15')]);router['put'](_0xde19('0xc'),auth[_0xde19('0xa')](),controller[_0xde19('0x16')]);router[_0xde19('0x17')](_0xde19('0xc'),auth[_0xde19('0xa')](),controller['destroy']);router['delete'](_0xde19('0xf'),auth['isAuthenticated'](),controller[_0xde19('0x18')]);router[_0xde19('0x17')]('/:id/users',auth[_0xde19('0xa')](),controller['removeAgents']);module[_0xde19('0x19')]=router;
\ No newline at end of file
index bb71c4c..5ac650d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe569=['name','STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0xe569,0xee));var _0x9e56=function(_0x1db29a,_0x5263e6){_0x1db29a=_0x1db29a-0x0;var _0x53525b=_0xe569[_0x1db29a];return _0x53525b;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x9e56('0x0'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x9e56('0x1')]},'timeout':{'type':Sequelize[_0x9e56('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9e56('0x3')](_0x9e56('0x4'),_0x9e56('0x5'),_0x9e56('0x6'))}};
\ No newline at end of file
+var _0xd1df=['rrmemory','beepall','roundrobin','STRING','name','INTEGER','ENUM'];(function(_0x893562,_0x4579e4){var _0x39e343=function(_0x205757){while(--_0x205757){_0x893562['push'](_0x893562['shift']());}};_0x39e343(++_0x4579e4);}(_0xd1df,0x192));var _0xfd1d=function(_0xa36db9,_0x13f078){_0xa36db9=_0xa36db9-0x0;var _0x7428d7=_0xd1df[_0xa36db9];return _0x7428d7;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xfd1d('0x0')],'unique':_0xfd1d('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xfd1d('0x0')]},'timeout':{'type':Sequelize[_0xfd1d('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xfd1d('0x3')](_0xfd1d('0x4'),_0xfd1d('0x5'),_0xfd1d('0x6'))}};
\ No newline at end of file
index 2b4e51e..faf8274 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5638=['Agents','voicePause','interface','flatMap','sequelize','each','emit','userSmsQueue:save','removeTeams','select','field','team_has_sms_queues','join','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','SELECT','every','TeamId','includes','union','compact','value','transaction','isEmpty','removeAgents','forEach','userSmsQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./smsQueue.socket','register','end','offset','undefined','count','limit','status','Content-Range','json','apply','save','update','SmsQueues','destroy','then','sendStatus','error','stack','name','index','map','SmsQueue','rawAttributes','fieldName','type','key','keys','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params','find','create','body','user','get','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','describe','getMembers','findOne','UserSmsQueue','SmsQueueId','findAll','User','findAndCountAll','UserId','agent','smsPause','updatedAt','createdAt','format','%s/%s','getTeams','Team','addTeams','ids'];(function(_0x45ad09,_0x4a80bd){var _0x7a9830=function(_0x529ea4){while(--_0x529ea4){_0x45ad09['push'](_0x45ad09['shift']());}};_0x7a9830(++_0x4a80bd);}(_0x5638,0xb3));var _0x8563=function(_0x553a4f,_0x3a25c8){_0x553a4f=_0x553a4f-0x0;var _0x4e740c=_0x5638[_0x553a4f];return _0x4e740c;};'use strict';var emlformat=require(_0x8563('0x0'));var rimraf=require(_0x8563('0x1'));var zipdir=require(_0x8563('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8563('0x3'));var moment=require(_0x8563('0x4'));var BPromise=require(_0x8563('0x5'));var Mustache=require(_0x8563('0x6'));var util=require('util');var path=require(_0x8563('0x7'));var sox=require(_0x8563('0x8'));var csv=require('to-csv');var ejs=require(_0x8563('0x9'));var fs=require('fs');var fs_extra=require(_0x8563('0xa'));var _=require(_0x8563('0xb'));var squel=require(_0x8563('0xc'));var crypto=require(_0x8563('0xd'));var jsforce=require(_0x8563('0xe'));var deskjs=require(_0x8563('0xf'));var toCsv=require(_0x8563('0x10'));var querystring=require(_0x8563('0x11'));var Papa=require(_0x8563('0x12'));var Redis=require(_0x8563('0x13'));var authService=require(_0x8563('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x8563('0x15'));var hardwareService=require(_0x8563('0x16'));var logger=require(_0x8563('0x17'))('api');var utils=require('../../config/utils');var config=require(_0x8563('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x8563('0x19'))['db'];config['redis']=_[_0x8563('0x1a')](config[_0x8563('0x1b')],{'host':_0x8563('0x1c'),'port':0x18eb});var socket=require(_0x8563('0x1d'))(new Redis(config['redis']));require(_0x8563('0x1e'))[_0x8563('0x1f')](socket);function respondWithStatusCode(_0x895fbb,_0x24c901){_0x24c901=_0x24c901||0xcc;return function(_0x231022){if(_0x231022){return _0x895fbb['sendStatus'](_0x24c901);}return _0x895fbb['status'](_0x24c901)[_0x8563('0x20')]();};}function respondWithResult(_0x4c4989,_0x286a34){_0x286a34=_0x286a34||0xc8;return function(_0x42512d){if(_0x42512d){return _0x4c4989['status'](_0x286a34)['json'](_0x42512d);}};}function respondWithFilteredResult(_0x4c0cdd,_0x58d2c0){return function(_0x6f590c){if(_0x6f590c){var _0x26f3d6=typeof _0x58d2c0[_0x8563('0x21')]==='undefined'&&typeof _0x58d2c0['limit']===_0x8563('0x22');var _0x560be2=_0x6f590c[_0x8563('0x23')];var _0x1ad72e=_0x26f3d6?0x0:_0x58d2c0[_0x8563('0x21')];var _0x371192=_0x26f3d6?_0x6f590c['count']:_0x58d2c0['offset']+_0x58d2c0[_0x8563('0x24')];var _0x29afa3;if(_0x371192>=_0x560be2){_0x371192=_0x560be2;_0x29afa3=0xc8;}else{_0x29afa3=0xce;}_0x4c0cdd[_0x8563('0x25')](_0x29afa3);return _0x4c0cdd['set'](_0x8563('0x26'),_0x1ad72e+'-'+_0x371192+'/'+_0x560be2)[_0x8563('0x27')](_0x6f590c);}return null;};}function patchUpdates(_0x40bce5){return function(_0x2fd78e){try{jsonpatch[_0x8563('0x28')](_0x2fd78e,_0x40bce5,!![]);}catch(_0xef3198){return BPromise['reject'](_0xef3198);}return _0x2fd78e[_0x8563('0x29')]();};}function saveUpdates(_0x51d3be,_0x113f32){return function(_0x3f57a2){if(_0x3f57a2){return _0x3f57a2[_0x8563('0x2a')](_0x51d3be)['then'](function(_0x309016){return _0x309016;});}return null;};}function removeEntity(_0x29e821,_0x4b886a){return function(_0x1b0dc6){if(_0x1b0dc6){return _0x1b0dc6['destroy']()['then'](function(){var _0x413fde=_0x1b0dc6['get']({'plain':!![]});var _0x22286d=_0x8563('0x2b');return db['UserProfileResource'][_0x8563('0x2c')]({'where':{'type':_0x22286d,'resourceId':_0x413fde['id']}})[_0x8563('0x2d')](function(){return _0x1b0dc6;});})[_0x8563('0x2d')](function(){_0x29e821[_0x8563('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x38df74,_0x912115){return function(_0x12823f){if(!_0x12823f){_0x38df74[_0x8563('0x2e')](0x194);}return _0x12823f;};}function handleError(_0x274b78,_0x17ea22){_0x17ea22=_0x17ea22||0x1f4;return function(_0x1404eb){logger[_0x8563('0x2f')](_0x1404eb[_0x8563('0x30')]);if(_0x1404eb[_0x8563('0x31')]){delete _0x1404eb[_0x8563('0x31')];}_0x274b78[_0x8563('0x25')](_0x17ea22)['send'](_0x1404eb);};}exports[_0x8563('0x32')]=function(_0x71b911,_0x41e34b){var _0x47f62a={},_0x136974={},_0x3dbd09={'count':0x0,'rows':[]};var _0x536e96=_[_0x8563('0x33')](db[_0x8563('0x34')][_0x8563('0x35')],function(_0x35614f){return{'name':_0x35614f[_0x8563('0x36')],'type':_0x35614f[_0x8563('0x37')][_0x8563('0x38')]};});_0x136974['model']=_[_0x8563('0x33')](_0x536e96,_0x8563('0x31'));_0x136974['query']=_[_0x8563('0x39')](_0x71b911[_0x8563('0x3a')]);_0x136974[_0x8563('0x3b')]=_['intersection'](_0x136974[_0x8563('0x3c')],_0x136974[_0x8563('0x3a')]);_0x47f62a[_0x8563('0x3d')]=_[_0x8563('0x3e')](_0x136974['model'],qs[_0x8563('0x3f')](_0x71b911[_0x8563('0x3a')][_0x8563('0x3f')]));_0x47f62a['attributes']=_0x47f62a[_0x8563('0x3d')][_0x8563('0x40')]?_0x47f62a[_0x8563('0x3d')]:_0x136974['model'];if(!_0x71b911[_0x8563('0x3a')][_0x8563('0x41')](_0x8563('0x42'))){_0x47f62a[_0x8563('0x24')]=qs[_0x8563('0x24')](_0x71b911[_0x8563('0x3a')][_0x8563('0x24')]);_0x47f62a['offset']=qs[_0x8563('0x21')](_0x71b911[_0x8563('0x3a')][_0x8563('0x21')]);}_0x47f62a[_0x8563('0x43')]=qs[_0x8563('0x44')](_0x71b911[_0x8563('0x3a')][_0x8563('0x44')]);_0x47f62a[_0x8563('0x45')]=qs[_0x8563('0x3b')](_[_0x8563('0x46')](_0x71b911[_0x8563('0x3a')],_0x136974['filters']),_0x536e96);if(_0x71b911['query']['filter']){_0x47f62a[_0x8563('0x45')]=_[_0x8563('0x47')](_0x47f62a['where'],{'$or':_[_0x8563('0x33')](_0x536e96,function(_0xdadcea){if(_0xdadcea[_0x8563('0x37')]!==_0x8563('0x48')){var _0x1edd6a={};_0x1edd6a[_0xdadcea[_0x8563('0x31')]]={'$like':'%'+_0x71b911[_0x8563('0x3a')][_0x8563('0x49')]+'%'};return _0x1edd6a;}})});}_0x47f62a=_[_0x8563('0x47')]({},_0x47f62a,_0x71b911[_0x8563('0x4a')]);var _0x199a3d={'where':_0x47f62a['where']};return db[_0x8563('0x34')][_0x8563('0x23')](_0x199a3d)[_0x8563('0x2d')](function(_0x5b5704){_0x3dbd09[_0x8563('0x23')]=_0x5b5704;if(_0x71b911[_0x8563('0x3a')][_0x8563('0x4b')]){_0x47f62a[_0x8563('0x4c')]=[{'all':!![]}];}return db[_0x8563('0x34')]['findAll'](_0x47f62a);})[_0x8563('0x2d')](function(_0x15da5e){_0x3dbd09[_0x8563('0x4d')]=_0x15da5e;return _0x3dbd09;})[_0x8563('0x2d')](respondWithFilteredResult(_0x41e34b,_0x47f62a))[_0x8563('0x4e')](handleError(_0x41e34b,null));};exports[_0x8563('0x4f')]=function(_0x3f60a9,_0x4599a1){var _0x191d75={'raw':!![],'where':{'id':_0x3f60a9[_0x8563('0x50')]['id']}},_0x1a30c4={};_0x1a30c4[_0x8563('0x3c')]=_[_0x8563('0x39')](db[_0x8563('0x34')]['rawAttributes']);_0x1a30c4[_0x8563('0x3a')]=_[_0x8563('0x39')](_0x3f60a9[_0x8563('0x3a')]);_0x1a30c4['filters']=_['intersection'](_0x1a30c4[_0x8563('0x3c')],_0x1a30c4[_0x8563('0x3a')]);_0x191d75[_0x8563('0x3d')]=_['intersection'](_0x1a30c4['model'],qs['fields'](_0x3f60a9[_0x8563('0x3a')][_0x8563('0x3f')]));_0x191d75[_0x8563('0x3d')]=_0x191d75[_0x8563('0x3d')][_0x8563('0x40')]?_0x191d75[_0x8563('0x3d')]:_0x1a30c4[_0x8563('0x3c')];if(_0x3f60a9[_0x8563('0x3a')][_0x8563('0x4b')]){_0x191d75[_0x8563('0x4c')]=[{'all':!![]}];}_0x191d75=_[_0x8563('0x47')]({},_0x191d75,_0x3f60a9[_0x8563('0x4a')]);return db[_0x8563('0x34')][_0x8563('0x51')](_0x191d75)[_0x8563('0x2d')](handleEntityNotFound(_0x4599a1,null))[_0x8563('0x2d')](respondWithResult(_0x4599a1,null))[_0x8563('0x4e')](handleError(_0x4599a1,null));};exports[_0x8563('0x52')]=function(_0x3ed17a,_0x179665){return db[_0x8563('0x34')]['create'](_0x3ed17a[_0x8563('0x53')],{})[_0x8563('0x2d')](function(_0x1ebeef){var _0x2caed8=_0x3ed17a[_0x8563('0x54')][_0x8563('0x55')]({'plain':!![]});if(!_0x2caed8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2caed8['role']===_0x8563('0x54')){var _0x75553d=_0x1ebeef[_0x8563('0x55')]({'plain':!![]});var _0x28902e=_0x8563('0x2b');return db[_0x8563('0x56')][_0x8563('0x51')]({'where':{'name':_0x28902e,'userProfileId':_0x2caed8[_0x8563('0x57')]},'raw':!![]})['then'](function(_0x56fe5b){if(_0x56fe5b&&_0x56fe5b[_0x8563('0x58')]===0x0){return db[_0x8563('0x59')][_0x8563('0x52')]({'name':_0x75553d['name'],'resourceId':_0x75553d['id'],'type':_0x56fe5b[_0x8563('0x31')],'sectionId':_0x56fe5b['id']},{})[_0x8563('0x2d')](function(){return _0x1ebeef;});}else{return _0x1ebeef;}})[_0x8563('0x4e')](function(_0x17ee26){logger[_0x8563('0x2f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x17ee26);throw _0x17ee26;});}return _0x1ebeef;})[_0x8563('0x2d')](respondWithResult(_0x179665,0xc9))[_0x8563('0x4e')](handleError(_0x179665,null));};exports[_0x8563('0x2a')]=function(_0x3024d5,_0x19078a){if(_0x3024d5[_0x8563('0x53')]['id']){delete _0x3024d5['body']['id'];}return db[_0x8563('0x34')]['find']({'where':{'id':_0x3024d5['params']['id']}})[_0x8563('0x2d')](handleEntityNotFound(_0x19078a,null))[_0x8563('0x2d')](saveUpdates(_0x3024d5[_0x8563('0x53')],null))[_0x8563('0x2d')](respondWithResult(_0x19078a,null))['catch'](handleError(_0x19078a,null));};exports[_0x8563('0x2c')]=function(_0x4f9825,_0x31d320){return db['SmsQueue'][_0x8563('0x51')]({'where':{'id':_0x4f9825[_0x8563('0x50')]['id']}})[_0x8563('0x2d')](handleEntityNotFound(_0x31d320,null))[_0x8563('0x2d')](removeEntity(_0x31d320,null))['catch'](handleError(_0x31d320,null));};exports[_0x8563('0x5a')]=function(_0xf10552,_0x27a108){return db[_0x8563('0x34')][_0x8563('0x5a')]()[_0x8563('0x2d')](respondWithResult(_0x27a108,null))[_0x8563('0x4e')](handleError(_0x27a108,null));};exports[_0x8563('0x5b')]=function(_0x45cbc0,_0x2cc666,_0x29cb99){var _0x2347ad={'raw':!![],'where':{}},_0x21af49={},_0x9ce0d;return db['SmsQueue'][_0x8563('0x5c')]({'where':{'id':_0x45cbc0[_0x8563('0x50')]['id']}})[_0x8563('0x2d')](handleEntityNotFound(_0x2cc666,null))['then'](function(_0x1debff){if(_0x1debff){_0x9ce0d=_0x1debff['get']({'plain':!![]});_0x21af49[_0x8563('0x3c')]=_[_0x8563('0x39')](db[_0x8563('0x5d')][_0x8563('0x35')]);_0x21af49['query']=_[_0x8563('0x39')](_0x45cbc0[_0x8563('0x3a')]);_0x21af49['filters']=_[_0x8563('0x3e')](_0x21af49['model'],_0x21af49[_0x8563('0x3a')]);_0x2347ad['attributes']=_[_0x8563('0x3e')](_0x21af49[_0x8563('0x3c')],qs[_0x8563('0x3f')](_0x45cbc0['query'][_0x8563('0x3f')]));_0x2347ad['attributes']=_0x2347ad[_0x8563('0x3d')][_0x8563('0x40')]?_0x2347ad[_0x8563('0x3d')]:_0x21af49['model'];if(!_0x45cbc0['query']['hasOwnProperty'](_0x8563('0x42'))){_0x2347ad[_0x8563('0x24')]=qs['limit'](_0x45cbc0[_0x8563('0x3a')]['limit']);_0x2347ad[_0x8563('0x21')]=qs[_0x8563('0x21')](_0x45cbc0[_0x8563('0x3a')][_0x8563('0x21')]);}_0x2347ad[_0x8563('0x43')]=qs['sort'](_0x45cbc0[_0x8563('0x3a')][_0x8563('0x44')]);_0x2347ad[_0x8563('0x45')]=qs[_0x8563('0x3b')](_[_0x8563('0x46')](_0x45cbc0[_0x8563('0x3a')],_0x21af49['filters']));_0x2347ad['where'][_0x8563('0x5e')]=_0x1debff['id'];if(_0x45cbc0[_0x8563('0x3a')][_0x8563('0x49')]){_0x2347ad[_0x8563('0x45')]=_[_0x8563('0x47')](_0x2347ad[_0x8563('0x45')],{'$or':_[_0x8563('0x33')](_0x2347ad[_0x8563('0x3d')],function(_0x598d60){var _0x3db517={};_0x3db517[_0x598d60]={'$like':'%'+_0x45cbc0[_0x8563('0x3a')]['filter']+'%'};return _0x3db517;})});}_0x2347ad=_['merge']({},_0x2347ad,_0x45cbc0['options']);return db[_0x8563('0x5d')][_0x8563('0x5f')](_0x2347ad);}})[_0x8563('0x2d')](function(_0xdf94ea){if(_0xdf94ea){return db[_0x8563('0x60')][_0x8563('0x61')]({'where':{'id':_[_0x8563('0x33')](_0xdf94ea,_0x8563('0x62')),'role':_0x8563('0x63')},'attributes':['id',_0x8563('0x31'),_0x8563('0x64'),_0x8563('0x65'),_0x8563('0x66')]});}})[_0x8563('0x2d')](function(_0xf471a3){if(_0xf471a3){return{'count':_0xf471a3[_0x8563('0x23')],'rows':_[_0x8563('0x33')](_0xf471a3[_0x8563('0x4d')],function(_0x1d7cf2){return{'membername':_0x1d7cf2['name'],'UserId':_0x1d7cf2['id'],'queue_name':_0x9ce0d['name'],'SmsQueueId':_0x9ce0d['id'],'interface':util[_0x8563('0x67')](_0x8563('0x68'),'SIP',_0x1d7cf2[_0x8563('0x31')]),'penalty':0x0,'paused':_0x1d7cf2[_0x8563('0x64')],'createdAt':_0x1d7cf2[_0x8563('0x66')],'updatedAt':_0x1d7cf2[_0x8563('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x2cc666,_0x2347ad))[_0x8563('0x4e')](handleError(_0x2cc666,null));};exports[_0x8563('0x69')]=function(_0x157138,_0x22f72f,_0x56ef8a){var _0x3a9031={};var _0x2a76de={};var _0x4d66aa;var _0x126c17;return db[_0x8563('0x34')]['findOne']({'where':{'id':_0x157138[_0x8563('0x50')]['id']}})[_0x8563('0x2d')](handleEntityNotFound(_0x22f72f,null))[_0x8563('0x2d')](function(_0x19f0b9){if(_0x19f0b9){_0x4d66aa=_0x19f0b9;_0x2a76de['model']=_['keys'](db[_0x8563('0x6a')][_0x8563('0x35')]);_0x2a76de['query']=_[_0x8563('0x39')](_0x157138[_0x8563('0x3a')]);_0x2a76de[_0x8563('0x3b')]=_[_0x8563('0x3e')](_0x2a76de[_0x8563('0x3c')],_0x2a76de[_0x8563('0x3a')]);_0x3a9031[_0x8563('0x3d')]=_[_0x8563('0x3e')](_0x2a76de[_0x8563('0x3c')],qs[_0x8563('0x3f')](_0x157138[_0x8563('0x3a')][_0x8563('0x3f')]));_0x3a9031[_0x8563('0x3d')]=_0x3a9031[_0x8563('0x3d')][_0x8563('0x40')]?_0x3a9031[_0x8563('0x3d')]:_0x2a76de['model'];_0x3a9031[_0x8563('0x43')]=qs[_0x8563('0x44')](_0x157138[_0x8563('0x3a')][_0x8563('0x44')]);_0x3a9031['where']=qs[_0x8563('0x3b')](_[_0x8563('0x46')](_0x157138['query'],_0x2a76de['filters']));if(_0x157138['query'][_0x8563('0x49')]){_0x3a9031[_0x8563('0x45')]=_[_0x8563('0x47')](_0x3a9031[_0x8563('0x45')],{'$or':_[_0x8563('0x33')](_0x3a9031[_0x8563('0x3d')],function(_0x5ef120){var _0x556bb8={};_0x556bb8[_0x5ef120]={'$like':'%'+_0x157138[_0x8563('0x3a')][_0x8563('0x49')]+'%'};return _0x556bb8;})});}_0x3a9031=_[_0x8563('0x47')]({},_0x3a9031,_0x157138[_0x8563('0x4a')]);return _0x4d66aa[_0x8563('0x69')](_0x3a9031);}})[_0x8563('0x2d')](function(_0x44d8da){if(_0x44d8da){_0x126c17=_0x44d8da[_0x8563('0x40')];if(!_0x157138[_0x8563('0x3a')][_0x8563('0x41')](_0x8563('0x42'))){_0x3a9031['limit']=qs['limit'](_0x157138[_0x8563('0x3a')][_0x8563('0x24')]);_0x3a9031[_0x8563('0x21')]=qs[_0x8563('0x21')](_0x157138['query'][_0x8563('0x21')]);}return _0x4d66aa['getTeams'](_0x3a9031);}})['then'](function(_0x3525d2){if(_0x3525d2){return _0x3525d2?{'count':_0x126c17,'rows':_0x3525d2}:null;}})[_0x8563('0x2d')](respondWithResult(_0x22f72f,null))['catch'](handleError(_0x22f72f,null));};exports[_0x8563('0x6b')]=function(_0x507e7f,_0x3414f0,_0x312d6e){var _0x3f8d6c=_0x507e7f[_0x8563('0x53')][_0x8563('0x6c')];return db[_0x8563('0x6a')][_0x8563('0x5f')]({'where':{'id':_0x3f8d6c},'attributes':['id'],'include':[{'model':db[_0x8563('0x60')],'as':_0x8563('0x6d'),'attributes':['id',_0x8563('0x31'),'online',_0x8563('0x6e'),_0x8563('0x6f')],'raw':!![]}]})['then'](function(_0x5e2f7d){if(_0x5e2f7d){var _0x1e9e39=_[_0x8563('0x70')](_0x5e2f7d,function(_0x3c72e9){var _0x5636e9=_0x3c72e9[_0x8563('0x55')]({'plain':!![]});return _0x5636e9[_0x8563('0x6d')];});return db[_0x8563('0x34')][_0x8563('0x51')]({'where':{'id':_0x507e7f[_0x8563('0x50')]['id']}})[_0x8563('0x2d')](function(_0x1eb41b){return db[_0x8563('0x71')]['transaction'](function(_0x13043e){return _0x1eb41b[_0x8563('0x6b')](_0x3f8d6c,{'transaction':_0x13043e})[_0x8563('0x2d')](function(){return BPromise[_0x8563('0x72')](_0x1e9e39,function(_0x492dd5){return db[_0x8563('0x5d')]['findOrCreate']({'where':{'UserId':_0x492dd5['id'],'SmsQueueId':_0x507e7f['params']['id']},'transaction':_0x13043e});});})['then'](function(){_0x1e9e39['forEach'](function(_0x5847e6){socket[_0x8563('0x73')](_0x8563('0x74'),{'UserId':_0x5847e6['id'],'SmsQueueId':_0x1eb41b['id']});});});});});}})[_0x8563('0x2d')](respondWithStatusCode(_0x3414f0,null))['catch'](handleError(_0x3414f0,null));};exports[_0x8563('0x75')]=function(_0x52d6f0,_0x586d24,_0x4b74b9){return db[_0x8563('0x6a')][_0x8563('0x5f')]({'where':{'id':_0x52d6f0[_0x8563('0x3a')]['ids']},'attributes':['id'],'include':[{'model':db[_0x8563('0x60')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x8563('0x2d')](handleEntityNotFound(_0x586d24,null))['then'](function(_0x443718){var _0x5dee80=_[_0x8563('0x33')](_0x443718,'id');var _0x2521d1=[];var _0x3afc3e=[];var _0x464b53=squel[_0x8563('0x76')]();_0x464b53[_0x8563('0x77')]('tq.TeamId')['from'](_0x8563('0x78'),'tq')[_0x8563('0x79')]('user_has_teams','ut',_0x8563('0x7a'))[_0x8563('0x45')](_0x8563('0x7b'),_0x52d6f0[_0x8563('0x50')]['id']);for(var _0x1c6c39=0x0;_0x1c6c39<_0x443718['length'];_0x1c6c39+=0x1){let _0x167621=_0x443718[_0x1c6c39];for(var _0x354f33=0x0;_0x354f33<_0x167621['Agents'][_0x8563('0x40')];_0x354f33+=0x1){let _0x2ce71d=_0x167621['Agents'][_0x354f33];var _0x2039ac=_0x464b53[_0x8563('0x7c')]();_0x2039ac[_0x8563('0x45')](_0x8563('0x7d'),_0x2ce71d['id']);_0x3afc3e[_0x8563('0x7e')](db[_0x8563('0x71')][_0x8563('0x3a')](_0x2039ac['toString'](),{'type':db[_0x8563('0x71')]['QueryTypes'][_0x8563('0x7f')]})[_0x8563('0x2d')](function(_0x33f4a9){if(_0x33f4a9['length']===0x1){return _0x2ce71d['id'];}else{var _0x77dce3=_[_0x8563('0x80')](_['map'](_0x33f4a9,_0x8563('0x81')),function(_0x143501){return _[_0x8563('0x82')](_0x5dee80,_0x143501);});if(_0x77dce3){return _0x2ce71d['id'];}}}));}}return BPromise['all'](_0x3afc3e)['then'](function(_0x301fd1){_0x2521d1=_(_0x2521d1)[_0x8563('0x83')](_0x301fd1)[_0x8563('0x84')]()[_0x8563('0x85')]();return db[_0x8563('0x34')][_0x8563('0x51')]({'where':{'id':_0x52d6f0[_0x8563('0x50')]['id']}})[_0x8563('0x2d')](function(_0x4bf2cf){return db[_0x8563('0x71')][_0x8563('0x86')](function(_0x1df4fb){return _0x4bf2cf[_0x8563('0x75')](_0x52d6f0['query']['ids'],{'transaction':_0x1df4fb})['then'](function(){if(!_[_0x8563('0x87')](_0x2521d1)){return _0x4bf2cf[_0x8563('0x88')](_0x2521d1,{'transaction':_0x1df4fb});}})['then'](function(){_0x2521d1[_0x8563('0x89')](function(_0x21582c){socket[_0x8563('0x73')](_0x8563('0x8a'),{'UserId':_0x21582c,'SmsQueueId':_0x4bf2cf['id']});});});});});});})[_0x8563('0x2d')](respondWithStatusCode(_0x586d24,null))[_0x8563('0x4e')](handleError(_0x586d24,null));};exports[_0x8563('0x8b')]=function(_0x102869,_0x42a8ca,_0x4ef498){return db['SmsQueue'][_0x8563('0x51')]({'where':{'id':_0x102869[_0x8563('0x50')]['id']}})[_0x8563('0x2d')](handleEntityNotFound(_0x42a8ca,null))[_0x8563('0x2d')](function(_0x3a25db){if(_0x3a25db){return _0x3a25db[_0x8563('0x8b')](_0x102869[_0x8563('0x53')][_0x8563('0x6c')],_[_0x8563('0x8c')](_0x102869[_0x8563('0x53')],[_0x8563('0x6c'),'id'])||{})[_0x8563('0x8d')](function(_0x29642b){for(var _0x363d43=0x0;_0x363d43<_0x102869[_0x8563('0x53')][_0x8563('0x6c')][_0x8563('0x40')];_0x363d43+=0x1){socket[_0x8563('0x73')](_0x8563('0x74'),{'UserId':Number(_0x102869['body']['ids'][_0x363d43]),'SmsQueueId':Number(_0x102869[_0x8563('0x50')]['id'])});}return _0x29642b;});}})[_0x8563('0x2d')](respondWithResult(_0x42a8ca,null))[_0x8563('0x4e')](handleError(_0x42a8ca,null));};exports['removeAgents']=function(_0x315fb8,_0xde3b2b,_0x3f0e98){return db['SmsQueue'][_0x8563('0x51')]({'where':{'id':_0x315fb8[_0x8563('0x50')]['id']}})[_0x8563('0x2d')](handleEntityNotFound(_0xde3b2b,null))[_0x8563('0x2d')](function(_0x559b3d){if(_0x559b3d){return _0x559b3d[_0x8563('0x88')](_0x315fb8[_0x8563('0x3a')][_0x8563('0x6c')])[_0x8563('0x2d')](function(){if(_[_0x8563('0x8e')](_0x315fb8[_0x8563('0x3a')][_0x8563('0x6c')])){for(var _0x3f0bdd=0x0;_0x3f0bdd<_0x315fb8[_0x8563('0x3a')][_0x8563('0x6c')][_0x8563('0x40')];_0x3f0bdd+=0x1){socket[_0x8563('0x73')](_0x8563('0x8a'),{'UserId':Number(_0x315fb8[_0x8563('0x3a')]['ids'][_0x3f0bdd]),'SmsQueueId':Number(_0x315fb8[_0x8563('0x50')]['id'])});}}else{socket[_0x8563('0x73')](_0x8563('0x8a'),{'UserId':Number(_0x315fb8[_0x8563('0x3a')][_0x8563('0x6c')]),'SmsQueueId':Number(_0x315fb8[_0x8563('0x50')]['id'])});}});}})[_0x8563('0x2d')](respondWithStatusCode(_0xde3b2b,null))[_0x8563('0x4e')](handleError(_0xde3b2b,null));};exports['getAgents']=function(_0x374faa,_0x57fd93,_0x541f79){var _0x4010b0={};var _0x35ba63={};var _0x233336;var _0x1914c9;return db[_0x8563('0x34')][_0x8563('0x5c')]({'where':{'id':_0x374faa[_0x8563('0x50')]['id']}})[_0x8563('0x2d')](handleEntityNotFound(_0x57fd93,null))[_0x8563('0x2d')](function(_0x36d649){if(_0x36d649){_0x233336=_0x36d649;_0x35ba63[_0x8563('0x3c')]=_[_0x8563('0x39')](db['User'][_0x8563('0x35')]);_0x35ba63[_0x8563('0x3a')]=_[_0x8563('0x39')](_0x374faa[_0x8563('0x3a')]);_0x35ba63[_0x8563('0x3b')]=_[_0x8563('0x3e')](_0x35ba63[_0x8563('0x3c')],_0x35ba63[_0x8563('0x3a')]);_0x4010b0['attributes']=_[_0x8563('0x3e')](_0x35ba63['model'],qs[_0x8563('0x3f')](_0x374faa[_0x8563('0x3a')][_0x8563('0x3f')]));_0x4010b0[_0x8563('0x3d')]=_0x4010b0[_0x8563('0x3d')]['length']?_0x4010b0[_0x8563('0x3d')]:_0x35ba63['model'];_0x4010b0[_0x8563('0x43')]=qs[_0x8563('0x44')](_0x374faa['query'][_0x8563('0x44')]);_0x4010b0['where']=qs[_0x8563('0x3b')](_[_0x8563('0x46')](_0x374faa[_0x8563('0x3a')],_0x35ba63[_0x8563('0x3b')]));if(_0x374faa[_0x8563('0x3a')][_0x8563('0x49')]){_0x4010b0[_0x8563('0x45')]=_[_0x8563('0x47')](_0x4010b0['where'],{'$or':_[_0x8563('0x33')](_0x4010b0['attributes'],function(_0x5557ae){var _0x45335e={};_0x45335e[_0x5557ae]={'$like':'%'+_0x374faa[_0x8563('0x3a')][_0x8563('0x49')]+'%'};return _0x45335e;})});}_0x4010b0=_[_0x8563('0x47')]({},_0x4010b0,_0x374faa[_0x8563('0x4a')]);return _0x233336[_0x8563('0x8f')](_0x4010b0);}})[_0x8563('0x2d')](function(_0x122a4e){if(_0x122a4e){_0x1914c9=_0x122a4e[_0x8563('0x40')];if(!_0x374faa[_0x8563('0x3a')][_0x8563('0x41')](_0x8563('0x42'))){_0x4010b0[_0x8563('0x24')]=qs[_0x8563('0x24')](_0x374faa['query'][_0x8563('0x24')]);_0x4010b0[_0x8563('0x21')]=qs['offset'](_0x374faa['query']['offset']);}return _0x233336['getAgents'](_0x4010b0);}})[_0x8563('0x2d')](function(_0x11dfbc){if(_0x11dfbc){return _0x11dfbc?{'count':_0x1914c9,'rows':_0x11dfbc}:null;}})[_0x8563('0x2d')](respondWithResult(_0x57fd93,null))['catch'](handleError(_0x57fd93,null));};
\ No newline at end of file
+var _0x7a35=['nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','SmsQueue','findAll','catch','show','params','keys','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','UserSmsQueue','User','findAndCountAll','smsPause','updatedAt','createdAt','rows','format','%s/%s','SIP','findOne','getTeams','addTeams','ids','Agents','online','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','userSmsQueue:save','removeTeams','Team','select','tq.TeamId','from','team_has_sms_queues','join','user_has_teams','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','every','TeamId','includes','union','compact','value','removeAgents','emit','userSmsQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./smsQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','destroy','then','get','SmsQueues','UserProfileResource','error','name','send','index','map','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x31b16c,_0x2fe409){var _0x5be77a=function(_0x5f2f9c){while(--_0x5f2f9c){_0x31b16c['push'](_0x31b16c['shift']());}};_0x5be77a(++_0x2fe409);}(_0x7a35,0x1ea));var _0x57a3=function(_0x553502,_0x4d2c0c){_0x553502=_0x553502-0x0;var _0x246c37=_0x7a35[_0x553502];return _0x246c37;};'use strict';var emlformat=require(_0x57a3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x57a3('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x57a3('0x2'));var moment=require(_0x57a3('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x57a3('0x4'));var util=require(_0x57a3('0x5'));var path=require(_0x57a3('0x6'));var sox=require(_0x57a3('0x7'));var csv=require(_0x57a3('0x8'));var ejs=require(_0x57a3('0x9'));var fs=require('fs');var fs_extra=require(_0x57a3('0xa'));var _=require(_0x57a3('0xb'));var squel=require(_0x57a3('0xc'));var crypto=require('crypto');var jsforce=require(_0x57a3('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x57a3('0x8'));var querystring=require('querystring');var Papa=require(_0x57a3('0xe'));var Redis=require('ioredis');var authService=require(_0x57a3('0xf'));var qs=require(_0x57a3('0x10'));var as=require(_0x57a3('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x57a3('0x12'));var utils=require(_0x57a3('0x13'));var config=require(_0x57a3('0x14'));var licenseUtil=require(_0x57a3('0x15'));var db=require(_0x57a3('0x16'))['db'];config['redis']=_[_0x57a3('0x17')](config[_0x57a3('0x18')],{'host':_0x57a3('0x19'),'port':0x18eb});var socket=require(_0x57a3('0x1a'))(new Redis(config[_0x57a3('0x18')]));require(_0x57a3('0x1b'))[_0x57a3('0x1c')](socket);function respondWithStatusCode(_0x22d294,_0x3c3608){_0x3c3608=_0x3c3608||0xcc;return function(_0x294219){if(_0x294219){return _0x22d294[_0x57a3('0x1d')](_0x3c3608);}return _0x22d294[_0x57a3('0x1e')](_0x3c3608)[_0x57a3('0x1f')]();};}function respondWithResult(_0x177c0d,_0x1f216f){_0x1f216f=_0x1f216f||0xc8;return function(_0x4b55cb){if(_0x4b55cb){return _0x177c0d['status'](_0x1f216f)[_0x57a3('0x20')](_0x4b55cb);}};}function respondWithFilteredResult(_0x3d641a,_0x2e8055){return function(_0x424e83){if(_0x424e83){var _0x2ad492=typeof _0x2e8055[_0x57a3('0x21')]===_0x57a3('0x22')&&typeof _0x2e8055[_0x57a3('0x23')]===_0x57a3('0x22');var _0x529f3c=_0x424e83[_0x57a3('0x24')];var _0x5d6854=_0x2ad492?0x0:_0x2e8055[_0x57a3('0x21')];var _0x21b005=_0x2ad492?_0x424e83['count']:_0x2e8055[_0x57a3('0x21')]+_0x2e8055[_0x57a3('0x23')];var _0x480461;if(_0x21b005>=_0x529f3c){_0x21b005=_0x529f3c;_0x480461=0xc8;}else{_0x480461=0xce;}_0x3d641a[_0x57a3('0x1e')](_0x480461);return _0x3d641a['set'](_0x57a3('0x25'),_0x5d6854+'-'+_0x21b005+'/'+_0x529f3c)[_0x57a3('0x20')](_0x424e83);}return null;};}function patchUpdates(_0x1d65d4){return function(_0x382ee8){try{jsonpatch[_0x57a3('0x26')](_0x382ee8,_0x1d65d4,!![]);}catch(_0x398bfa){return BPromise[_0x57a3('0x27')](_0x398bfa);}return _0x382ee8['save']();};}function saveUpdates(_0x2f8603,_0x4865b3){return function(_0x54cce2){if(_0x54cce2){return _0x54cce2[_0x57a3('0x28')](_0x2f8603)['then'](function(_0x4bf194){return _0x4bf194;});}return null;};}function removeEntity(_0x44f086,_0x12d8aa){return function(_0x3f4733){if(_0x3f4733){return _0x3f4733[_0x57a3('0x29')]()[_0x57a3('0x2a')](function(){var _0x57c43e=_0x3f4733[_0x57a3('0x2b')]({'plain':!![]});var _0x4f3f1b=_0x57a3('0x2c');return db[_0x57a3('0x2d')][_0x57a3('0x29')]({'where':{'type':_0x4f3f1b,'resourceId':_0x57c43e['id']}})[_0x57a3('0x2a')](function(){return _0x3f4733;});})[_0x57a3('0x2a')](function(){_0x44f086[_0x57a3('0x1e')](0xcc)[_0x57a3('0x1f')]();});}};}function handleEntityNotFound(_0x165d24,_0x2b8054){return function(_0xe03a7e){if(!_0xe03a7e){_0x165d24[_0x57a3('0x1d')](0x194);}return _0xe03a7e;};}function handleError(_0x8c388d,_0x36c597){_0x36c597=_0x36c597||0x1f4;return function(_0x28f076){logger[_0x57a3('0x2e')](_0x28f076['stack']);if(_0x28f076[_0x57a3('0x2f')]){delete _0x28f076[_0x57a3('0x2f')];}_0x8c388d[_0x57a3('0x1e')](_0x36c597)[_0x57a3('0x30')](_0x28f076);};}exports[_0x57a3('0x31')]=function(_0x121bca,_0x450561){var _0x5bceda={},_0x56eed8={},_0x5a8e5e={'count':0x0,'rows':[]};var _0x55d646=_[_0x57a3('0x32')](db['SmsQueue'][_0x57a3('0x33')],function(_0x1c2f7b){return{'name':_0x1c2f7b['fieldName'],'type':_0x1c2f7b[_0x57a3('0x34')][_0x57a3('0x35')]};});_0x56eed8[_0x57a3('0x36')]=_[_0x57a3('0x32')](_0x55d646,_0x57a3('0x2f'));_0x56eed8[_0x57a3('0x37')]=_['keys'](_0x121bca[_0x57a3('0x37')]);_0x56eed8[_0x57a3('0x38')]=_[_0x57a3('0x39')](_0x56eed8[_0x57a3('0x36')],_0x56eed8[_0x57a3('0x37')]);_0x5bceda[_0x57a3('0x3a')]=_[_0x57a3('0x39')](_0x56eed8[_0x57a3('0x36')],qs[_0x57a3('0x3b')](_0x121bca[_0x57a3('0x37')][_0x57a3('0x3b')]));_0x5bceda['attributes']=_0x5bceda['attributes'][_0x57a3('0x3c')]?_0x5bceda['attributes']:_0x56eed8['model'];if(!_0x121bca[_0x57a3('0x37')][_0x57a3('0x3d')](_0x57a3('0x3e'))){_0x5bceda[_0x57a3('0x23')]=qs[_0x57a3('0x23')](_0x121bca[_0x57a3('0x37')]['limit']);_0x5bceda[_0x57a3('0x21')]=qs[_0x57a3('0x21')](_0x121bca[_0x57a3('0x37')][_0x57a3('0x21')]);}_0x5bceda[_0x57a3('0x3f')]=qs[_0x57a3('0x40')](_0x121bca[_0x57a3('0x37')]['sort']);_0x5bceda[_0x57a3('0x41')]=qs['filters'](_[_0x57a3('0x42')](_0x121bca[_0x57a3('0x37')],_0x56eed8[_0x57a3('0x38')]),_0x55d646);if(_0x121bca[_0x57a3('0x37')][_0x57a3('0x43')]){_0x5bceda['where']=_[_0x57a3('0x44')](_0x5bceda['where'],{'$or':_[_0x57a3('0x32')](_0x55d646,function(_0x1409b){if(_0x1409b[_0x57a3('0x34')]!==_0x57a3('0x45')){var _0x2361f6={};_0x2361f6[_0x1409b[_0x57a3('0x2f')]]={'$like':'%'+_0x121bca[_0x57a3('0x37')][_0x57a3('0x43')]+'%'};return _0x2361f6;}})});}_0x5bceda=_[_0x57a3('0x44')]({},_0x5bceda,_0x121bca[_0x57a3('0x46')]);var _0x5cf422={'where':_0x5bceda[_0x57a3('0x41')]};return db[_0x57a3('0x47')][_0x57a3('0x24')](_0x5cf422)[_0x57a3('0x2a')](function(_0x317b1e){_0x5a8e5e[_0x57a3('0x24')]=_0x317b1e;if(_0x121bca[_0x57a3('0x37')]['includeAll']){_0x5bceda['include']=[{'all':!![]}];}return db[_0x57a3('0x47')][_0x57a3('0x48')](_0x5bceda);})['then'](function(_0x4c22e1){_0x5a8e5e['rows']=_0x4c22e1;return _0x5a8e5e;})['then'](respondWithFilteredResult(_0x450561,_0x5bceda))[_0x57a3('0x49')](handleError(_0x450561,null));};exports[_0x57a3('0x4a')]=function(_0x5f3dae,_0x3bd416){var _0x414a8d={'raw':!![],'where':{'id':_0x5f3dae[_0x57a3('0x4b')]['id']}},_0x4ee963={};_0x4ee963['model']=_[_0x57a3('0x4c')](db['SmsQueue'][_0x57a3('0x33')]);_0x4ee963['query']=_[_0x57a3('0x4c')](_0x5f3dae[_0x57a3('0x37')]);_0x4ee963[_0x57a3('0x38')]=_[_0x57a3('0x39')](_0x4ee963[_0x57a3('0x36')],_0x4ee963[_0x57a3('0x37')]);_0x414a8d[_0x57a3('0x3a')]=_['intersection'](_0x4ee963[_0x57a3('0x36')],qs[_0x57a3('0x3b')](_0x5f3dae[_0x57a3('0x37')]['fields']));_0x414a8d[_0x57a3('0x3a')]=_0x414a8d[_0x57a3('0x3a')]['length']?_0x414a8d[_0x57a3('0x3a')]:_0x4ee963['model'];if(_0x5f3dae[_0x57a3('0x37')]['includeAll']){_0x414a8d[_0x57a3('0x4d')]=[{'all':!![]}];}_0x414a8d=_[_0x57a3('0x44')]({},_0x414a8d,_0x5f3dae[_0x57a3('0x46')]);return db[_0x57a3('0x47')][_0x57a3('0x4e')](_0x414a8d)[_0x57a3('0x2a')](handleEntityNotFound(_0x3bd416,null))['then'](respondWithResult(_0x3bd416,null))[_0x57a3('0x49')](handleError(_0x3bd416,null));};exports[_0x57a3('0x4f')]=function(_0x52c684,_0x4e9c07){return db['SmsQueue'][_0x57a3('0x4f')](_0x52c684[_0x57a3('0x50')],{})[_0x57a3('0x2a')](function(_0x4fc8ee){var _0x3cbe90=_0x52c684[_0x57a3('0x51')]['get']({'plain':!![]});if(!_0x3cbe90)throw new Error(_0x57a3('0x52'));if(_0x3cbe90['role']===_0x57a3('0x51')){var _0x1812db=_0x4fc8ee[_0x57a3('0x2b')]({'plain':!![]});var _0x2d68f5=_0x57a3('0x2c');return db[_0x57a3('0x53')][_0x57a3('0x4e')]({'where':{'name':_0x2d68f5,'userProfileId':_0x3cbe90[_0x57a3('0x54')]},'raw':!![]})['then'](function(_0x45523d){if(_0x45523d&&_0x45523d['autoAssociation']===0x0){return db[_0x57a3('0x2d')][_0x57a3('0x4f')]({'name':_0x1812db['name'],'resourceId':_0x1812db['id'],'type':_0x45523d[_0x57a3('0x2f')],'sectionId':_0x45523d['id']},{})[_0x57a3('0x2a')](function(){return _0x4fc8ee;});}else{return _0x4fc8ee;}})[_0x57a3('0x49')](function(_0x3a32eb){logger['error'](_0x57a3('0x55'),_0x3a32eb);throw _0x3a32eb;});}return _0x4fc8ee;})[_0x57a3('0x2a')](respondWithResult(_0x4e9c07,0xc9))[_0x57a3('0x49')](handleError(_0x4e9c07,null));};exports[_0x57a3('0x28')]=function(_0x1ab244,_0x155760){if(_0x1ab244[_0x57a3('0x50')]['id']){delete _0x1ab244['body']['id'];}return db[_0x57a3('0x47')][_0x57a3('0x4e')]({'where':{'id':_0x1ab244[_0x57a3('0x4b')]['id']}})[_0x57a3('0x2a')](handleEntityNotFound(_0x155760,null))['then'](saveUpdates(_0x1ab244[_0x57a3('0x50')],null))[_0x57a3('0x2a')](respondWithResult(_0x155760,null))[_0x57a3('0x49')](handleError(_0x155760,null));};exports['destroy']=function(_0x2d1d68,_0x1c7a97){return db['SmsQueue'][_0x57a3('0x4e')]({'where':{'id':_0x2d1d68[_0x57a3('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1c7a97,null))[_0x57a3('0x2a')](removeEntity(_0x1c7a97,null))['catch'](handleError(_0x1c7a97,null));};exports[_0x57a3('0x56')]=function(_0x42c9a2,_0x46b661){return db[_0x57a3('0x47')]['describe']()[_0x57a3('0x2a')](respondWithResult(_0x46b661,null))['catch'](handleError(_0x46b661,null));};exports['getMembers']=function(_0x3a8272,_0x174440,_0x11a82e){var _0x4b7d02={'raw':!![],'where':{}},_0x51ffa8={},_0x17bed5;return db[_0x57a3('0x47')]['findOne']({'where':{'id':_0x3a8272['params']['id']}})['then'](handleEntityNotFound(_0x174440,null))[_0x57a3('0x2a')](function(_0x2c2b28){if(_0x2c2b28){_0x17bed5=_0x2c2b28[_0x57a3('0x2b')]({'plain':!![]});_0x51ffa8['model']=_[_0x57a3('0x4c')](db[_0x57a3('0x57')][_0x57a3('0x33')]);_0x51ffa8[_0x57a3('0x37')]=_[_0x57a3('0x4c')](_0x3a8272[_0x57a3('0x37')]);_0x51ffa8[_0x57a3('0x38')]=_['intersection'](_0x51ffa8['model'],_0x51ffa8['query']);_0x4b7d02['attributes']=_[_0x57a3('0x39')](_0x51ffa8[_0x57a3('0x36')],qs[_0x57a3('0x3b')](_0x3a8272['query'][_0x57a3('0x3b')]));_0x4b7d02['attributes']=_0x4b7d02[_0x57a3('0x3a')][_0x57a3('0x3c')]?_0x4b7d02['attributes']:_0x51ffa8[_0x57a3('0x36')];if(!_0x3a8272[_0x57a3('0x37')]['hasOwnProperty'](_0x57a3('0x3e'))){_0x4b7d02[_0x57a3('0x23')]=qs[_0x57a3('0x23')](_0x3a8272[_0x57a3('0x37')][_0x57a3('0x23')]);_0x4b7d02[_0x57a3('0x21')]=qs[_0x57a3('0x21')](_0x3a8272[_0x57a3('0x37')][_0x57a3('0x21')]);}_0x4b7d02['order']=qs[_0x57a3('0x40')](_0x3a8272[_0x57a3('0x37')]['sort']);_0x4b7d02[_0x57a3('0x41')]=qs[_0x57a3('0x38')](_[_0x57a3('0x42')](_0x3a8272[_0x57a3('0x37')],_0x51ffa8[_0x57a3('0x38')]));_0x4b7d02[_0x57a3('0x41')]['SmsQueueId']=_0x2c2b28['id'];if(_0x3a8272[_0x57a3('0x37')][_0x57a3('0x43')]){_0x4b7d02[_0x57a3('0x41')]=_[_0x57a3('0x44')](_0x4b7d02[_0x57a3('0x41')],{'$or':_[_0x57a3('0x32')](_0x4b7d02[_0x57a3('0x3a')],function(_0x1dfe5b){var _0x11c067={};_0x11c067[_0x1dfe5b]={'$like':'%'+_0x3a8272[_0x57a3('0x37')][_0x57a3('0x43')]+'%'};return _0x11c067;})});}_0x4b7d02=_[_0x57a3('0x44')]({},_0x4b7d02,_0x3a8272[_0x57a3('0x46')]);return db['UserSmsQueue']['findAll'](_0x4b7d02);}})[_0x57a3('0x2a')](function(_0xf0b058){if(_0xf0b058){return db[_0x57a3('0x58')][_0x57a3('0x59')]({'where':{'id':_[_0x57a3('0x32')](_0xf0b058,'UserId'),'role':'agent'},'attributes':['id',_0x57a3('0x2f'),_0x57a3('0x5a'),_0x57a3('0x5b'),_0x57a3('0x5c')]});}})[_0x57a3('0x2a')](function(_0x5f52c4){if(_0x5f52c4){return{'count':_0x5f52c4[_0x57a3('0x24')],'rows':_[_0x57a3('0x32')](_0x5f52c4[_0x57a3('0x5d')],function(_0xdad10b){return{'membername':_0xdad10b[_0x57a3('0x2f')],'UserId':_0xdad10b['id'],'queue_name':_0x17bed5[_0x57a3('0x2f')],'SmsQueueId':_0x17bed5['id'],'interface':util[_0x57a3('0x5e')](_0x57a3('0x5f'),_0x57a3('0x60'),_0xdad10b[_0x57a3('0x2f')]),'penalty':0x0,'paused':_0xdad10b[_0x57a3('0x5a')],'createdAt':_0xdad10b[_0x57a3('0x5c')],'updatedAt':_0xdad10b[_0x57a3('0x5b')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x174440,_0x4b7d02))['catch'](handleError(_0x174440,null));};exports['getTeams']=function(_0x3ccc88,_0x1fa3a1,_0x18ad7e){var _0x24cfd3={};var _0x23ba7c={};var _0x10448d;var _0x5a6637;return db[_0x57a3('0x47')][_0x57a3('0x61')]({'where':{'id':_0x3ccc88[_0x57a3('0x4b')]['id']}})[_0x57a3('0x2a')](handleEntityNotFound(_0x1fa3a1,null))[_0x57a3('0x2a')](function(_0x13dc8b){if(_0x13dc8b){_0x10448d=_0x13dc8b;_0x23ba7c[_0x57a3('0x36')]=_['keys'](db['Team']['rawAttributes']);_0x23ba7c[_0x57a3('0x37')]=_[_0x57a3('0x4c')](_0x3ccc88[_0x57a3('0x37')]);_0x23ba7c['filters']=_['intersection'](_0x23ba7c[_0x57a3('0x36')],_0x23ba7c[_0x57a3('0x37')]);_0x24cfd3[_0x57a3('0x3a')]=_[_0x57a3('0x39')](_0x23ba7c[_0x57a3('0x36')],qs[_0x57a3('0x3b')](_0x3ccc88[_0x57a3('0x37')][_0x57a3('0x3b')]));_0x24cfd3[_0x57a3('0x3a')]=_0x24cfd3[_0x57a3('0x3a')]['length']?_0x24cfd3[_0x57a3('0x3a')]:_0x23ba7c[_0x57a3('0x36')];_0x24cfd3[_0x57a3('0x3f')]=qs[_0x57a3('0x40')](_0x3ccc88[_0x57a3('0x37')]['sort']);_0x24cfd3['where']=qs[_0x57a3('0x38')](_['pick'](_0x3ccc88['query'],_0x23ba7c[_0x57a3('0x38')]));if(_0x3ccc88[_0x57a3('0x37')][_0x57a3('0x43')]){_0x24cfd3[_0x57a3('0x41')]=_[_0x57a3('0x44')](_0x24cfd3[_0x57a3('0x41')],{'$or':_[_0x57a3('0x32')](_0x24cfd3[_0x57a3('0x3a')],function(_0x9b2ea5){var _0x2c6c26={};_0x2c6c26[_0x9b2ea5]={'$like':'%'+_0x3ccc88[_0x57a3('0x37')][_0x57a3('0x43')]+'%'};return _0x2c6c26;})});}_0x24cfd3=_['merge']({},_0x24cfd3,_0x3ccc88[_0x57a3('0x46')]);return _0x10448d[_0x57a3('0x62')](_0x24cfd3);}})[_0x57a3('0x2a')](function(_0x2594ab){if(_0x2594ab){_0x5a6637=_0x2594ab[_0x57a3('0x3c')];if(!_0x3ccc88['query'][_0x57a3('0x3d')](_0x57a3('0x3e'))){_0x24cfd3[_0x57a3('0x23')]=qs[_0x57a3('0x23')](_0x3ccc88['query']['limit']);_0x24cfd3[_0x57a3('0x21')]=qs[_0x57a3('0x21')](_0x3ccc88[_0x57a3('0x37')][_0x57a3('0x21')]);}return _0x10448d[_0x57a3('0x62')](_0x24cfd3);}})[_0x57a3('0x2a')](function(_0x2578b9){if(_0x2578b9){return _0x2578b9?{'count':_0x5a6637,'rows':_0x2578b9}:null;}})['then'](respondWithResult(_0x1fa3a1,null))[_0x57a3('0x49')](handleError(_0x1fa3a1,null));};exports[_0x57a3('0x63')]=function(_0x16b516,_0x7cddba,_0x4796e5){var _0x2c7ea1=_0x16b516['body'][_0x57a3('0x64')];return db['Team'][_0x57a3('0x48')]({'where':{'id':_0x2c7ea1},'attributes':['id'],'include':[{'model':db[_0x57a3('0x58')],'as':_0x57a3('0x65'),'attributes':['id','name',_0x57a3('0x66'),'voicePause',_0x57a3('0x67')],'raw':!![]}]})[_0x57a3('0x2a')](function(_0x1b1837){if(_0x1b1837){var _0x190a41=_[_0x57a3('0x68')](_0x1b1837,function(_0x318349){var _0x22d1d9=_0x318349[_0x57a3('0x2b')]({'plain':!![]});return _0x22d1d9['Agents'];});return db['SmsQueue'][_0x57a3('0x4e')]({'where':{'id':_0x16b516[_0x57a3('0x4b')]['id']}})[_0x57a3('0x2a')](function(_0x4cb00f){return db[_0x57a3('0x69')][_0x57a3('0x6a')](function(_0x5f3133){return _0x4cb00f[_0x57a3('0x63')](_0x2c7ea1,{'transaction':_0x5f3133})['then'](function(){return BPromise[_0x57a3('0x6b')](_0x190a41,function(_0x3a7928){return db['UserSmsQueue'][_0x57a3('0x6c')]({'where':{'UserId':_0x3a7928['id'],'SmsQueueId':_0x16b516[_0x57a3('0x4b')]['id']},'transaction':_0x5f3133});});})[_0x57a3('0x2a')](function(){_0x190a41[_0x57a3('0x6d')](function(_0x177c0f){socket['emit'](_0x57a3('0x6e'),{'UserId':_0x177c0f['id'],'SmsQueueId':_0x4cb00f['id']});});});});});}})[_0x57a3('0x2a')](respondWithStatusCode(_0x7cddba,null))[_0x57a3('0x49')](handleError(_0x7cddba,null));};exports[_0x57a3('0x6f')]=function(_0x2701e9,_0x43afbe,_0x4e0001){return db[_0x57a3('0x70')]['findAll']({'where':{'id':_0x2701e9[_0x57a3('0x37')][_0x57a3('0x64')]},'attributes':['id'],'include':[{'model':db[_0x57a3('0x58')],'as':_0x57a3('0x65'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x43afbe,null))['then'](function(_0x585be0){var _0x4f3f58=_[_0x57a3('0x32')](_0x585be0,'id');var _0x4e1016=[];var _0x1e5ef4=[];var _0x40459c=squel[_0x57a3('0x71')]();_0x40459c['field'](_0x57a3('0x72'))[_0x57a3('0x73')](_0x57a3('0x74'),'tq')[_0x57a3('0x75')](_0x57a3('0x76'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x57a3('0x41')](_0x57a3('0x77'),_0x2701e9[_0x57a3('0x4b')]['id']);for(var _0x93671b=0x0;_0x93671b<_0x585be0[_0x57a3('0x3c')];_0x93671b+=0x1){let _0x314ded=_0x585be0[_0x93671b];for(var _0xe02bea=0x0;_0xe02bea<_0x314ded[_0x57a3('0x65')][_0x57a3('0x3c')];_0xe02bea+=0x1){let _0x4648ae=_0x314ded['Agents'][_0xe02bea];var _0x1a8f93=_0x40459c[_0x57a3('0x78')]();_0x1a8f93[_0x57a3('0x41')](_0x57a3('0x79'),_0x4648ae['id']);_0x1e5ef4['push'](db['sequelize'][_0x57a3('0x37')](_0x1a8f93[_0x57a3('0x7a')](),{'type':db[_0x57a3('0x69')][_0x57a3('0x7b')]['SELECT']})['then'](function(_0x268c94){if(_0x268c94[_0x57a3('0x3c')]===0x1){return _0x4648ae['id'];}else{var _0x255fd5=_[_0x57a3('0x7c')](_[_0x57a3('0x32')](_0x268c94,_0x57a3('0x7d')),function(_0x1648a1){return _[_0x57a3('0x7e')](_0x4f3f58,_0x1648a1);});if(_0x255fd5){return _0x4648ae['id'];}}}));}}return BPromise['all'](_0x1e5ef4)[_0x57a3('0x2a')](function(_0x4d3f52){_0x4e1016=_(_0x4e1016)[_0x57a3('0x7f')](_0x4d3f52)[_0x57a3('0x80')]()[_0x57a3('0x81')]();return db[_0x57a3('0x47')][_0x57a3('0x4e')]({'where':{'id':_0x2701e9[_0x57a3('0x4b')]['id']}})['then'](function(_0x5dfdf8){return db[_0x57a3('0x69')][_0x57a3('0x6a')](function(_0x123248){return _0x5dfdf8[_0x57a3('0x6f')](_0x2701e9[_0x57a3('0x37')][_0x57a3('0x64')],{'transaction':_0x123248})[_0x57a3('0x2a')](function(){if(!_['isEmpty'](_0x4e1016)){return _0x5dfdf8[_0x57a3('0x82')](_0x4e1016,{'transaction':_0x123248});}})[_0x57a3('0x2a')](function(){_0x4e1016['forEach'](function(_0x8c9a74){socket[_0x57a3('0x83')](_0x57a3('0x84'),{'UserId':_0x8c9a74,'SmsQueueId':_0x5dfdf8['id']});});});});});});})[_0x57a3('0x2a')](respondWithStatusCode(_0x43afbe,null))[_0x57a3('0x49')](handleError(_0x43afbe,null));};exports['addAgents']=function(_0x1a5258,_0x472b32,_0x8c054e){return db[_0x57a3('0x47')][_0x57a3('0x4e')]({'where':{'id':_0x1a5258[_0x57a3('0x4b')]['id']}})[_0x57a3('0x2a')](handleEntityNotFound(_0x472b32,null))[_0x57a3('0x2a')](function(_0xbe411b){if(_0xbe411b){return _0xbe411b[_0x57a3('0x85')](_0x1a5258[_0x57a3('0x50')][_0x57a3('0x64')],_[_0x57a3('0x86')](_0x1a5258[_0x57a3('0x50')],[_0x57a3('0x64'),'id'])||{})[_0x57a3('0x87')](function(_0x1f010d){for(var _0xf8619a=0x0;_0xf8619a<_0x1a5258[_0x57a3('0x50')][_0x57a3('0x64')][_0x57a3('0x3c')];_0xf8619a+=0x1){socket[_0x57a3('0x83')](_0x57a3('0x6e'),{'UserId':Number(_0x1a5258[_0x57a3('0x50')][_0x57a3('0x64')][_0xf8619a]),'SmsQueueId':Number(_0x1a5258[_0x57a3('0x4b')]['id'])});}return _0x1f010d;});}})[_0x57a3('0x2a')](respondWithResult(_0x472b32,null))[_0x57a3('0x49')](handleError(_0x472b32,null));};exports[_0x57a3('0x82')]=function(_0x141c65,_0x4838d5,_0x344679){return db[_0x57a3('0x47')][_0x57a3('0x4e')]({'where':{'id':_0x141c65[_0x57a3('0x4b')]['id']}})[_0x57a3('0x2a')](handleEntityNotFound(_0x4838d5,null))['then'](function(_0x57bc1e){if(_0x57bc1e){return _0x57bc1e[_0x57a3('0x82')](_0x141c65[_0x57a3('0x37')][_0x57a3('0x64')])[_0x57a3('0x2a')](function(){if(_[_0x57a3('0x88')](_0x141c65['query'][_0x57a3('0x64')])){for(var _0x497e75=0x0;_0x497e75<_0x141c65[_0x57a3('0x37')]['ids'][_0x57a3('0x3c')];_0x497e75+=0x1){socket['emit'](_0x57a3('0x84'),{'UserId':Number(_0x141c65[_0x57a3('0x37')][_0x57a3('0x64')][_0x497e75]),'SmsQueueId':Number(_0x141c65[_0x57a3('0x4b')]['id'])});}}else{socket['emit'](_0x57a3('0x84'),{'UserId':Number(_0x141c65[_0x57a3('0x37')]['ids']),'SmsQueueId':Number(_0x141c65[_0x57a3('0x4b')]['id'])});}});}})[_0x57a3('0x2a')](respondWithStatusCode(_0x4838d5,null))[_0x57a3('0x49')](handleError(_0x4838d5,null));};exports[_0x57a3('0x89')]=function(_0x347c53,_0x29da37,_0x2dcf71){var _0x4c5635={};var _0x4408bd={};var _0x177b05;var _0x1b1005;return db[_0x57a3('0x47')][_0x57a3('0x61')]({'where':{'id':_0x347c53['params']['id']}})[_0x57a3('0x2a')](handleEntityNotFound(_0x29da37,null))[_0x57a3('0x2a')](function(_0x4043c1){if(_0x4043c1){_0x177b05=_0x4043c1;_0x4408bd[_0x57a3('0x36')]=_[_0x57a3('0x4c')](db[_0x57a3('0x58')][_0x57a3('0x33')]);_0x4408bd['query']=_[_0x57a3('0x4c')](_0x347c53[_0x57a3('0x37')]);_0x4408bd[_0x57a3('0x38')]=_[_0x57a3('0x39')](_0x4408bd[_0x57a3('0x36')],_0x4408bd[_0x57a3('0x37')]);_0x4c5635[_0x57a3('0x3a')]=_[_0x57a3('0x39')](_0x4408bd[_0x57a3('0x36')],qs[_0x57a3('0x3b')](_0x347c53[_0x57a3('0x37')][_0x57a3('0x3b')]));_0x4c5635[_0x57a3('0x3a')]=_0x4c5635[_0x57a3('0x3a')][_0x57a3('0x3c')]?_0x4c5635[_0x57a3('0x3a')]:_0x4408bd[_0x57a3('0x36')];_0x4c5635[_0x57a3('0x3f')]=qs[_0x57a3('0x40')](_0x347c53['query'][_0x57a3('0x40')]);_0x4c5635[_0x57a3('0x41')]=qs[_0x57a3('0x38')](_[_0x57a3('0x42')](_0x347c53[_0x57a3('0x37')],_0x4408bd[_0x57a3('0x38')]));if(_0x347c53[_0x57a3('0x37')][_0x57a3('0x43')]){_0x4c5635['where']=_[_0x57a3('0x44')](_0x4c5635[_0x57a3('0x41')],{'$or':_[_0x57a3('0x32')](_0x4c5635['attributes'],function(_0x42f293){var _0x5f43e2={};_0x5f43e2[_0x42f293]={'$like':'%'+_0x347c53[_0x57a3('0x37')][_0x57a3('0x43')]+'%'};return _0x5f43e2;})});}_0x4c5635=_[_0x57a3('0x44')]({},_0x4c5635,_0x347c53[_0x57a3('0x46')]);return _0x177b05[_0x57a3('0x89')](_0x4c5635);}})[_0x57a3('0x2a')](function(_0x5dff8e){if(_0x5dff8e){_0x1b1005=_0x5dff8e['length'];if(!_0x347c53['query'][_0x57a3('0x3d')]('nolimit')){_0x4c5635['limit']=qs['limit'](_0x347c53[_0x57a3('0x37')][_0x57a3('0x23')]);_0x4c5635[_0x57a3('0x21')]=qs[_0x57a3('0x21')](_0x347c53[_0x57a3('0x37')]['offset']);}return _0x177b05[_0x57a3('0x89')](_0x4c5635);}})[_0x57a3('0x2a')](function(_0xf7e172){if(_0xf7e172){return _0xf7e172?{'count':_0x1b1005,'rows':_0xf7e172}:null;}})[_0x57a3('0x2a')](respondWithResult(_0x29da37,null))['catch'](handleError(_0x29da37,null));};
\ No newline at end of file
index 5c89374..5d8b607 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d58=['save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','SmsQueue'];(function(_0x27db19,_0x41debc){var _0x437fa8=function(_0x32cec2){while(--_0x32cec2){_0x27db19['push'](_0x27db19['shift']());}};_0x437fa8(++_0x41debc);}(_0x7d58,0xde));var _0x87d5=function(_0x2a76fa,_0x1cee7d){_0x2a76fa=_0x2a76fa-0x0;var _0x2d2442=_0x7d58[_0x2a76fa];return _0x2d2442;};'use strict';var EventEmitter=require(_0x87d5('0x0'));var SmsQueue=require(_0x87d5('0x1'))['db'][_0x87d5('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x87d5('0x3'),'afterUpdate':_0x87d5('0x4'),'afterDestroy':_0x87d5('0x5')};function emitEvent(_0x23ffb9){return function(_0x4af155,_0x4fa733,_0x4e24f3){SmsQueueEvents[_0x87d5('0x6')](_0x23ffb9+':'+_0x4af155['id'],_0x4af155);SmsQueueEvents[_0x87d5('0x6')](_0x23ffb9,_0x4af155);_0x4e24f3(null);};}for(var e in events){if(events[_0x87d5('0x7')](e)){var event=events[e];SmsQueue[_0x87d5('0x8')](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
+var _0xa75d=['../../mysqldb','SmsQueue','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x45ea67,_0x439684){var _0x2032d9=function(_0x24575c){while(--_0x24575c){_0x45ea67['push'](_0x45ea67['shift']());}};_0x2032d9(++_0x439684);}(_0xa75d,0xf8));var _0xda75=function(_0x1ff3f9,_0x43d8d8){_0x1ff3f9=_0x1ff3f9-0x0;var _0x41b4b7=_0xa75d[_0x1ff3f9];return _0x41b4b7;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0xda75('0x0'))['db'][_0xda75('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xda75('0x2'),'afterUpdate':_0xda75('0x3'),'afterDestroy':_0xda75('0x4')};function emitEvent(_0x50f2a9){return function(_0x31ff0a,_0x569d08,_0x3b7acd){SmsQueueEvents[_0xda75('0x5')](_0x50f2a9+':'+_0x31ff0a['id'],_0x31ff0a);SmsQueueEvents[_0xda75('0x5')](_0x50f2a9,_0x31ff0a);_0x3b7acd(null);};}for(var e in events){if(events[_0xda75('0x6')](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module[_0xda75('0x7')]=SmsQueueEvents;
\ No newline at end of file
index 21b454c..3b75894 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaab2=['./smsQueue.attributes','exports','define','SmsQueue','sms_queues','lodash','util','../../config/logger','moment','path','../../config/environment'];(function(_0x47bc5e,_0x6fc500){var _0x323a59=function(_0x32df89){while(--_0x32df89){_0x47bc5e['push'](_0x47bc5e['shift']());}};_0x323a59(++_0x6fc500);}(_0xaab2,0x15a));var _0x2aab=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xaab2[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x2aab('0x0'));var util=require(_0x2aab('0x1'));var logger=require(_0x2aab('0x2'))('api');var moment=require(_0x2aab('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2aab('0x4'));var rimraf=require('rimraf');var config=require(_0x2aab('0x5'));var attributes=require(_0x2aab('0x6'));module[_0x2aab('0x7')]=function(_0xe567ef,_0x560d39){return _0xe567ef[_0x2aab('0x8')](_0x2aab('0x9'),attributes,{'tableName':_0x2aab('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x239b=['moment','bluebird','request-promise','path','rimraf','../../config/environment','define','SmsQueue','sms_queues','lodash','../../config/logger','api'];(function(_0x1fe538,_0x5f592d){var _0x26cd4b=function(_0x3ceac2){while(--_0x3ceac2){_0x1fe538['push'](_0x1fe538['shift']());}};_0x26cd4b(++_0x5f592d);}(_0x239b,0xd5));var _0xb239=function(_0x1c2c34,_0xc5d20){_0x1c2c34=_0x1c2c34-0x0;var _0x201756=_0x239b[_0x1c2c34];return _0x201756;};'use strict';var _=require(_0xb239('0x0'));var util=require('util');var logger=require(_0xb239('0x1'))(_0xb239('0x2'));var moment=require(_0xb239('0x3'));var BPromise=require(_0xb239('0x4'));var rp=require(_0xb239('0x5'));var fs=require('fs');var path=require(_0xb239('0x6'));var rimraf=require(_0xb239('0x7'));var config=require(_0xb239('0x8'));var attributes=require('./smsQueue.attributes');module['exports']=function(_0x446c67,_0x522225){return _0x446c67[_0xb239('0x9')](_0xb239('0xa'),attributes,{'tableName':_0xb239('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f025ca8..5149c1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ab3=['raw','where','limit','map','include','model','attributes','then','GetSmsQueue','debug','catch','find','ShowSmsQueue','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','localhost','socket.io-emitter','redis','./smsQueue.socket','register','request','info','SmsQueue,\x20%s,\x20%s','request\x20sent','stringify','error','message','SmsQueue','findAll','options'];(function(_0x13cb5e,_0x37c477){var _0x827064=function(_0x553d85){while(--_0x553d85){_0x13cb5e['push'](_0x13cb5e['shift']());}};_0x827064(++_0x37c477);}(_0x5ab3,0x1ed));var _0x35ab=function(_0x3808d6,_0x3f52ed){_0x3808d6=_0x3808d6-0x0;var _0xaecba4=_0x5ab3[_0x3808d6];return _0xaecba4;};'use strict';var _=require(_0x35ab('0x0'));var util=require(_0x35ab('0x1'));var moment=require(_0x35ab('0x2'));var BPromise=require('bluebird');var rs=require(_0x35ab('0x3'));var fs=require('fs');var Redis=require(_0x35ab('0x4'));var db=require(_0x35ab('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x35ab('0x6'))(_0x35ab('0x7'));var config=require(_0x35ab('0x8'));var jayson=require(_0x35ab('0x9'));var client=jayson[_0x35ab('0xa')]['http']({'port':0x232a});config['redis']=_[_0x35ab('0xb')](config['redis'],{'host':_0x35ab('0xc'),'port':0x18eb});var socket=require(_0x35ab('0xd'))(new Redis(config[_0x35ab('0xe')]));require(_0x35ab('0xf'))[_0x35ab('0x10')](socket);function respondWithRpcPromise(_0x123e83,_0x5a80b8,_0x4e53fe){return new BPromise(function(_0x496175,_0x27357c){return client[_0x35ab('0x11')](_0x123e83,_0x4e53fe)['then'](function(_0x541738){logger[_0x35ab('0x12')](_0x35ab('0x13'),_0x5a80b8,_0x35ab('0x14'));logger['debug']('SmsQueue,\x20%s,\x20%s,\x20%s',_0x5a80b8,_0x35ab('0x14'),JSON[_0x35ab('0x15')](_0x541738));if(_0x541738[_0x35ab('0x16')]){if(_0x541738[_0x35ab('0x16')]['code']===0x1f4){logger['error'](_0x35ab('0x13'),_0x5a80b8,_0x541738[_0x35ab('0x16')][_0x35ab('0x17')]);return _0x27357c(_0x541738[_0x35ab('0x16')][_0x35ab('0x17')]);}logger[_0x35ab('0x16')](_0x35ab('0x13'),_0x5a80b8,_0x541738[_0x35ab('0x16')]['message']);return _0x496175(_0x541738['error']['message']);}else{logger['info'](_0x35ab('0x13'),_0x5a80b8,_0x35ab('0x14'));_0x496175(_0x541738['result'][_0x35ab('0x17')]);}})['catch'](function(_0x55c285){logger[_0x35ab('0x16')](_0x35ab('0x13'),_0x5a80b8,_0x55c285);_0x27357c(_0x55c285);});});}exports['GetSmsQueue']=function(_0x6ab237){var _0x5810be=this;return new Promise(function(_0x1197bc,_0x48b39c){return db[_0x35ab('0x18')][_0x35ab('0x19')]({'raw':_0x6ab237[_0x35ab('0x1a')]?_0x6ab237[_0x35ab('0x1a')][_0x35ab('0x1b')]===undefined?!![]:![]:!![],'where':_0x6ab237[_0x35ab('0x1a')]?_0x6ab237['options'][_0x35ab('0x1c')]||null:null,'attributes':_0x6ab237[_0x35ab('0x1a')]?_0x6ab237['options']['attributes']||null:null,'limit':_0x6ab237[_0x35ab('0x1a')]?_0x6ab237['options'][_0x35ab('0x1d')]||null:null,'include':_0x6ab237[_0x35ab('0x1a')]?_0x6ab237['options']['include']?_[_0x35ab('0x1e')](_0x6ab237[_0x35ab('0x1a')][_0x35ab('0x1f')],function(_0x2d8991){return{'model':db[_0x2d8991['model']],'as':_0x2d8991['as'],'attributes':_0x2d8991['attributes'],'include':_0x2d8991[_0x35ab('0x1f')]?_[_0x35ab('0x1e')](_0x2d8991[_0x35ab('0x1f')],function(_0x214a80){return{'model':db[_0x214a80[_0x35ab('0x20')]],'as':_0x214a80['as'],'attributes':_0x214a80['attributes'],'include':_0x214a80[_0x35ab('0x1f')]?_[_0x35ab('0x1e')](_0x214a80['include'],function(_0x31d0fb){return{'model':db[_0x31d0fb['model']],'as':_0x31d0fb['as'],'attributes':_0x31d0fb[_0x35ab('0x21')]};}):[]};}):[]};}):[]:[]})[_0x35ab('0x22')](function(_0x107f7b){logger['info'](_0x35ab('0x23'),_0x6ab237);logger[_0x35ab('0x24')]('GetSmsQueue',_0x6ab237,JSON[_0x35ab('0x15')](_0x107f7b));_0x1197bc(_0x107f7b);})[_0x35ab('0x25')](function(_0x57f999){logger[_0x35ab('0x16')](_0x35ab('0x23'),_0x57f999[_0x35ab('0x17')],_0x6ab237);_0x48b39c(_0x5810be[_0x35ab('0x16')](0x1f4,_0x57f999[_0x35ab('0x17')]));});});};exports['ShowSmsQueue']=function(_0x1cfd1f){var _0x597be7=this;return new Promise(function(_0x498d11,_0x2ad5b6){return db[_0x35ab('0x18')][_0x35ab('0x26')]({'raw':_0x1cfd1f['options']?_0x1cfd1f[_0x35ab('0x1a')][_0x35ab('0x1b')]===undefined?!![]:![]:!![],'where':_0x1cfd1f[_0x35ab('0x1a')]?_0x1cfd1f[_0x35ab('0x1a')][_0x35ab('0x1c')]||null:null,'attributes':_0x1cfd1f[_0x35ab('0x1a')]?_0x1cfd1f[_0x35ab('0x1a')][_0x35ab('0x21')]||null:null,'include':_0x1cfd1f[_0x35ab('0x1a')]?_0x1cfd1f[_0x35ab('0x1a')][_0x35ab('0x1f')]?_[_0x35ab('0x1e')](_0x1cfd1f['options'][_0x35ab('0x1f')],function(_0x3c6e74){return{'model':db[_0x3c6e74[_0x35ab('0x20')]],'as':_0x3c6e74['as'],'attributes':_0x3c6e74[_0x35ab('0x21')],'include':_0x3c6e74[_0x35ab('0x1f')]?_[_0x35ab('0x1e')](_0x3c6e74[_0x35ab('0x1f')],function(_0x1f3419){return{'model':db[_0x1f3419[_0x35ab('0x20')]],'as':_0x1f3419['as'],'attributes':_0x1f3419[_0x35ab('0x21')],'include':_0x1f3419['include']?_[_0x35ab('0x1e')](_0x1f3419[_0x35ab('0x1f')],function(_0xc24c05){return{'model':db[_0xc24c05[_0x35ab('0x20')]],'as':_0xc24c05['as'],'attributes':_0xc24c05[_0x35ab('0x21')]};}):[]};}):[]};}):[]:[]})[_0x35ab('0x22')](function(_0x31c0a8){logger[_0x35ab('0x12')](_0x35ab('0x27'),_0x1cfd1f);logger[_0x35ab('0x24')]('ShowSmsQueue',_0x1cfd1f,JSON[_0x35ab('0x15')](_0x31c0a8));_0x498d11(_0x31c0a8);})[_0x35ab('0x25')](function(_0x41228a){logger['error'](_0x35ab('0x27'),_0x41228a[_0x35ab('0x17')],_0x1cfd1f);_0x2ad5b6(_0x597be7['error'](0x1f4,_0x41228a[_0x35ab('0x17')]));});});};
\ No newline at end of file
+var _0x2c79=['stringify','where','ShowSmsQueue','moment','bluebird','randomstring','../../config/utils','jayson/promise','client','http','redis','defaults','localhost','./smsQueue.socket','register','request','then','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetSmsQueue','SmsQueue','findAll','options','raw','attributes','limit','map','model','include','info'];(function(_0x26158e,_0x3a0780){var _0x13bbea=function(_0x317fd9){while(--_0x317fd9){_0x26158e['push'](_0x26158e['shift']());}};_0x13bbea(++_0x3a0780);}(_0x2c79,0xb7));var _0x92c7=function(_0x30fd11,_0x2fc9bf){_0x30fd11=_0x30fd11-0x0;var _0x43d841=_0x2c79[_0x30fd11];return _0x43d841;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x92c7('0x0'));var BPromise=require(_0x92c7('0x1'));var rs=require(_0x92c7('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x92c7('0x3'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x92c7('0x4'));var client=jayson[_0x92c7('0x5')][_0x92c7('0x6')]({'port':0x232a});config[_0x92c7('0x7')]=_[_0x92c7('0x8')](config[_0x92c7('0x7')],{'host':_0x92c7('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x92c7('0x7')]));require(_0x92c7('0xa'))[_0x92c7('0xb')](socket);function respondWithRpcPromise(_0x20ba3d,_0x35c9e9,_0x21263b){return new BPromise(function(_0x282a57,_0x5f47b9){return client[_0x92c7('0xc')](_0x20ba3d,_0x21263b)[_0x92c7('0xd')](function(_0x13fd3c){logger['info'](_0x92c7('0xe'),_0x35c9e9,_0x92c7('0xf'));logger[_0x92c7('0x10')](_0x92c7('0x11'),_0x35c9e9,_0x92c7('0xf'),JSON['stringify'](_0x13fd3c));if(_0x13fd3c[_0x92c7('0x12')]){if(_0x13fd3c[_0x92c7('0x12')][_0x92c7('0x13')]===0x1f4){logger[_0x92c7('0x12')]('SmsQueue,\x20%s,\x20%s',_0x35c9e9,_0x13fd3c[_0x92c7('0x12')]['message']);return _0x5f47b9(_0x13fd3c['error']['message']);}logger[_0x92c7('0x12')](_0x92c7('0xe'),_0x35c9e9,_0x13fd3c[_0x92c7('0x12')][_0x92c7('0x14')]);return _0x282a57(_0x13fd3c[_0x92c7('0x12')][_0x92c7('0x14')]);}else{logger['info']('SmsQueue,\x20%s,\x20%s',_0x35c9e9,_0x92c7('0xf'));_0x282a57(_0x13fd3c['result']['message']);}})[_0x92c7('0x15')](function(_0x2e5015){logger['error'](_0x92c7('0xe'),_0x35c9e9,_0x2e5015);_0x5f47b9(_0x2e5015);});});}exports[_0x92c7('0x16')]=function(_0x31bc3b){var _0x20f7ec=this;return new Promise(function(_0x2fc6a1,_0x1ef48a){return db[_0x92c7('0x17')][_0x92c7('0x18')]({'raw':_0x31bc3b['options']?_0x31bc3b[_0x92c7('0x19')][_0x92c7('0x1a')]===undefined?!![]:![]:!![],'where':_0x31bc3b[_0x92c7('0x19')]?_0x31bc3b[_0x92c7('0x19')]['where']||null:null,'attributes':_0x31bc3b[_0x92c7('0x19')]?_0x31bc3b[_0x92c7('0x19')][_0x92c7('0x1b')]||null:null,'limit':_0x31bc3b[_0x92c7('0x19')]?_0x31bc3b['options'][_0x92c7('0x1c')]||null:null,'include':_0x31bc3b[_0x92c7('0x19')]?_0x31bc3b[_0x92c7('0x19')]['include']?_[_0x92c7('0x1d')](_0x31bc3b[_0x92c7('0x19')]['include'],function(_0x24ee0b){return{'model':db[_0x24ee0b[_0x92c7('0x1e')]],'as':_0x24ee0b['as'],'attributes':_0x24ee0b['attributes'],'include':_0x24ee0b['include']?_[_0x92c7('0x1d')](_0x24ee0b['include'],function(_0x40e9fe){return{'model':db[_0x40e9fe[_0x92c7('0x1e')]],'as':_0x40e9fe['as'],'attributes':_0x40e9fe[_0x92c7('0x1b')],'include':_0x40e9fe['include']?_[_0x92c7('0x1d')](_0x40e9fe[_0x92c7('0x1f')],function(_0x712689){return{'model':db[_0x712689['model']],'as':_0x712689['as'],'attributes':_0x712689[_0x92c7('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x92c7('0xd')](function(_0x39fce6){logger[_0x92c7('0x20')](_0x92c7('0x16'),_0x31bc3b);logger[_0x92c7('0x10')](_0x92c7('0x16'),_0x31bc3b,JSON[_0x92c7('0x21')](_0x39fce6));_0x2fc6a1(_0x39fce6);})['catch'](function(_0x180852){logger[_0x92c7('0x12')](_0x92c7('0x16'),_0x180852[_0x92c7('0x14')],_0x31bc3b);_0x1ef48a(_0x20f7ec[_0x92c7('0x12')](0x1f4,_0x180852[_0x92c7('0x14')]));});});};exports['ShowSmsQueue']=function(_0x3d178c){var _0x37e5a1=this;return new Promise(function(_0x4e0d7f,_0x423906){return db[_0x92c7('0x17')]['find']({'raw':_0x3d178c[_0x92c7('0x19')]?_0x3d178c[_0x92c7('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x3d178c[_0x92c7('0x19')]?_0x3d178c[_0x92c7('0x19')][_0x92c7('0x22')]||null:null,'attributes':_0x3d178c['options']?_0x3d178c[_0x92c7('0x19')][_0x92c7('0x1b')]||null:null,'include':_0x3d178c[_0x92c7('0x19')]?_0x3d178c[_0x92c7('0x19')]['include']?_['map'](_0x3d178c[_0x92c7('0x19')][_0x92c7('0x1f')],function(_0x3e1aa2){return{'model':db[_0x3e1aa2[_0x92c7('0x1e')]],'as':_0x3e1aa2['as'],'attributes':_0x3e1aa2[_0x92c7('0x1b')],'include':_0x3e1aa2[_0x92c7('0x1f')]?_['map'](_0x3e1aa2['include'],function(_0xb016c7){return{'model':db[_0xb016c7[_0x92c7('0x1e')]],'as':_0xb016c7['as'],'attributes':_0xb016c7[_0x92c7('0x1b')],'include':_0xb016c7[_0x92c7('0x1f')]?_[_0x92c7('0x1d')](_0xb016c7[_0x92c7('0x1f')],function(_0x46bba6){return{'model':db[_0x46bba6[_0x92c7('0x1e')]],'as':_0x46bba6['as'],'attributes':_0x46bba6[_0x92c7('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x19ddf3){logger['info']('ShowSmsQueue',_0x3d178c);logger[_0x92c7('0x10')](_0x92c7('0x23'),_0x3d178c,JSON[_0x92c7('0x21')](_0x19ddf3));_0x4e0d7f(_0x19ddf3);})[_0x92c7('0x15')](function(_0x3fb3cd){logger[_0x92c7('0x12')]('ShowSmsQueue',_0x3fb3cd['message'],_0x3d178c);_0x423906(_0x37e5a1['error'](0x1f4,_0x3fb3cd[_0x92c7('0x14')]));});});};
\ No newline at end of file
index d0a4164..ee315ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b23=['register','length','remove','removeListener'];(function(_0x2af68f,_0x31cb25){var _0x5cd021=function(_0x213aa9){while(--_0x213aa9){_0x2af68f['push'](_0x2af68f['shift']());}};_0x5cd021(++_0x31cb25);}(_0x3b23,0x19e));var _0x33b2=function(_0x3115eb,_0x39156c){_0x3115eb=_0x3115eb-0x0;var _0x52d3b8=_0x3b23[_0x3115eb];return _0x52d3b8;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=['save',_0x33b2('0x0'),'update'];function createListener(_0x4c0eb0,_0x2d9519){return function(_0x46fae4){_0x2d9519['emit'](_0x4c0eb0,_0x46fae4);};}function removeListener(_0x39bec3,_0x402fc3){return function(){SmsQueueEvents[_0x33b2('0x1')](_0x39bec3,_0x402fc3);};}exports[_0x33b2('0x2')]=function(_0x2c55f7){for(var _0xc45ab1=0x0,_0x334498=events[_0x33b2('0x3')];_0xc45ab1<_0x334498;_0xc45ab1++){var _0x4f6ee2=events[_0xc45ab1];var _0x58ee0b=createListener('smsQueue:'+_0x4f6ee2,_0x2c55f7);SmsQueueEvents['on'](_0x4f6ee2,_0x58ee0b);}};
\ No newline at end of file
+var _0x9d6e=['register','length','smsQueue:','./smsQueue.events','remove','emit','removeListener'];(function(_0x35d4b7,_0x29f370){var _0x26194f=function(_0x270a3b){while(--_0x270a3b){_0x35d4b7['push'](_0x35d4b7['shift']());}};_0x26194f(++_0x29f370);}(_0x9d6e,0x9d));var _0xe9d6=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x9d6e[_0x40a045];return _0x1a687c;};'use strict';var SmsQueueEvents=require(_0xe9d6('0x0'));var events=['save',_0xe9d6('0x1'),'update'];function createListener(_0x4ec637,_0x4e735f){return function(_0x37dbd6){_0x4e735f[_0xe9d6('0x2')](_0x4ec637,_0x37dbd6);};}function removeListener(_0x1d43b8,_0x4b6bc6){return function(){SmsQueueEvents[_0xe9d6('0x3')](_0x1d43b8,_0x4b6bc6);};}exports[_0xe9d6('0x4')]=function(_0x893c6b){for(var _0x33f703=0x0,_0x4120ad=events[_0xe9d6('0x5')];_0x33f703<_0x4120ad;_0x33f703++){var _0x27698a=events[_0x33f703];var _0xa58c36=createListener(_0xe9d6('0x6')+_0x27698a,_0x893c6b);SmsQueueEvents['on'](_0x27698a,_0xa58c36);}};
\ No newline at end of file
index 6647df8..9651326 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b04=['util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsQueueReport.controller','isAuthenticated','index','get','/describe','/:id','show','post','create','put','update','delete','exports','multer'];(function(_0x44bde4,_0x30a038){var _0x150135=function(_0x578065){while(--_0x578065){_0x44bde4['push'](_0x44bde4['shift']());}};_0x150135(++_0x30a038);}(_0x0b04,0x164));var _0x40b0=function(_0x47a349,_0x4699d9){_0x47a349=_0x47a349-0x0;var _0x18ab75=_0x0b04[_0x47a349];return _0x18ab75;};'use strict';var multer=require(_0x40b0('0x0'));var util=require(_0x40b0('0x1'));var path=require(_0x40b0('0x2'));var timeout=require('connect-timeout');var express=require(_0x40b0('0x3'));var router=express[_0x40b0('0x4')]();var fs_extra=require(_0x40b0('0x5'));var auth=require(_0x40b0('0x6'));var interaction=require(_0x40b0('0x7'));var config=require('../../config/environment');var controller=require(_0x40b0('0x8'));router['get']('/',auth[_0x40b0('0x9')](),controller[_0x40b0('0xa')]);router[_0x40b0('0xb')](_0x40b0('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x40b0('0xb')](_0x40b0('0xd'),auth[_0x40b0('0x9')](),controller[_0x40b0('0xe')]);router[_0x40b0('0xf')]('/',auth[_0x40b0('0x9')](),controller[_0x40b0('0x10')]);router[_0x40b0('0x11')](_0x40b0('0xd'),auth[_0x40b0('0x9')](),controller[_0x40b0('0x12')]);router[_0x40b0('0x13')]('/:id',auth[_0x40b0('0x9')](),controller['destroy']);module[_0x40b0('0x14')]=router;
\ No newline at end of file
+var _0xef39=['show','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','/describe','describe','/:id'];(function(_0x26f9ca,_0x5a6123){var _0x27bd72=function(_0xe90a2a){while(--_0xe90a2a){_0x26f9ca['push'](_0x26f9ca['shift']());}};_0x27bd72(++_0x5a6123);}(_0xef39,0x92));var _0x9ef3=function(_0x59d059,_0x5d0777){_0x59d059=_0x59d059-0x0;var _0x112691=_0xef39[_0x59d059];return _0x112691;};'use strict';var multer=require('multer');var util=require(_0x9ef3('0x0'));var path=require(_0x9ef3('0x1'));var timeout=require(_0x9ef3('0x2'));var express=require(_0x9ef3('0x3'));var router=express[_0x9ef3('0x4')]();var fs_extra=require(_0x9ef3('0x5'));var auth=require(_0x9ef3('0x6'));var interaction=require(_0x9ef3('0x7'));var config=require(_0x9ef3('0x8'));var controller=require(_0x9ef3('0x9'));router[_0x9ef3('0xa')]('/',auth[_0x9ef3('0xb')](),controller['index']);router[_0x9ef3('0xa')](_0x9ef3('0xc'),auth[_0x9ef3('0xb')](),controller[_0x9ef3('0xd')]);router[_0x9ef3('0xa')](_0x9ef3('0xe'),auth[_0x9ef3('0xb')](),controller[_0x9ef3('0xf')]);router[_0x9ef3('0x10')]('/',auth[_0x9ef3('0xb')](),controller[_0x9ef3('0x11')]);router[_0x9ef3('0x12')](_0x9ef3('0xe'),auth['isAuthenticated'](),controller[_0x9ef3('0x13')]);router[_0x9ef3('0x14')](_0x9ef3('0xe'),auth[_0x9ef3('0xb')](),controller[_0x9ef3('0x15')]);module[_0x9ef3('0x16')]=router;
\ No newline at end of file
index 01c3605..991be6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3e7=['sequelize','STRING','DATE','moment'];(function(_0x536181,_0x42278d){var _0x5adca3=function(_0x54cce6){while(--_0x54cce6){_0x536181['push'](_0x536181['shift']());}};_0x5adca3(++_0x42278d);}(_0xb3e7,0xb7));var _0x7b3e=function(_0x45bf86,_0x75586e){_0x45bf86=_0x45bf86-0x0;var _0x1f02b7=_0xb3e7[_0x45bf86];return _0x1f02b7;};'use strict';var moment=require(_0x7b3e('0x0'));var Sequelize=require(_0x7b3e('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x7b3e('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x7b3e('0x3')]},'leaveAt':{'type':Sequelize[_0x7b3e('0x3')]},'acceptAt':{'type':Sequelize[_0x7b3e('0x3')]},'exitAt':{'type':Sequelize[_0x7b3e('0x3')]},'reason':{'type':Sequelize[_0x7b3e('0x2')]}};
\ No newline at end of file
+var _0xfa1b=['exports','STRING','DATE','sequelize'];(function(_0xf34b0a,_0x11e116){var _0x5021e1=function(_0x4eff67){while(--_0x4eff67){_0xf34b0a['push'](_0xf34b0a['shift']());}};_0x5021e1(++_0x11e116);}(_0xfa1b,0xaf));var _0xbfa1=function(_0x20ab04,_0x36f2ab){_0x20ab04=_0x20ab04-0x0;var _0x412ce3=_0xfa1b[_0x20ab04];return _0x412ce3;};'use strict';var moment=require('moment');var Sequelize=require(_0xbfa1('0x0'));module[_0xbfa1('0x1')]={'uniqueid':{'type':Sequelize[_0xbfa1('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xbfa1('0x2')]},'joinAt':{'type':Sequelize[_0xbfa1('0x3')]},'leaveAt':{'type':Sequelize[_0xbfa1('0x3')]},'acceptAt':{'type':Sequelize[_0xbfa1('0x3')]},'exitAt':{'type':Sequelize[_0xbfa1('0x3')]},'reason':{'type':Sequelize[_0xbfa1('0x2')]}};
\ No newline at end of file
index efdfb7a..941b0e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69a9=['apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SmsQueueReport','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','length','includeAll','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','fs-extra','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','sendStatus','end','status','json','undefined','limit','count','offset','Content-Range'];(function(_0x4b0822,_0x7c611e){var _0x2405f3=function(_0x566d8){while(--_0x566d8){_0x4b0822['push'](_0x4b0822['shift']());}};_0x2405f3(++_0x7c611e);}(_0x69a9,0x1b3));var _0x969a=function(_0x2bce3e,_0x42fb75){_0x2bce3e=_0x2bce3e-0x0;var _0x3c7831=_0x69a9[_0x2bce3e];return _0x3c7831;};'use strict';var emlformat=require(_0x969a('0x0'));var rimraf=require(_0x969a('0x1'));var zipdir=require(_0x969a('0x2'));var jsonpatch=require(_0x969a('0x3'));var rp=require(_0x969a('0x4'));var moment=require(_0x969a('0x5'));var BPromise=require(_0x969a('0x6'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x969a('0x7'));var csv=require(_0x969a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x969a('0x9'));var _=require('lodash');var squel=require(_0x969a('0xa'));var crypto=require(_0x969a('0xb'));var jsforce=require(_0x969a('0xc'));var deskjs=require(_0x969a('0xd'));var toCsv=require('to-csv');var querystring=require(_0x969a('0xe'));var Papa=require(_0x969a('0xf'));var Redis=require('ioredis');var authService=require(_0x969a('0x10'));var qs=require(_0x969a('0x11'));var as=require(_0x969a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x969a('0x13'))(_0x969a('0x14'));var utils=require('../../config/utils');var config=require(_0x969a('0x15'));var licenseUtil=require(_0x969a('0x16'));var db=require(_0x969a('0x17'))['db'];function respondWithStatusCode(_0x2e1af5,_0x4b4889){_0x4b4889=_0x4b4889||0xcc;return function(_0x57ccfb){if(_0x57ccfb){return _0x2e1af5[_0x969a('0x18')](_0x4b4889);}return _0x2e1af5['status'](_0x4b4889)[_0x969a('0x19')]();};}function respondWithResult(_0x21c5d0,_0xe50e47){_0xe50e47=_0xe50e47||0xc8;return function(_0x14f076){if(_0x14f076){return _0x21c5d0[_0x969a('0x1a')](_0xe50e47)[_0x969a('0x1b')](_0x14f076);}};}function respondWithFilteredResult(_0x13805a,_0x591bcb){return function(_0x2bc910){if(_0x2bc910){var _0x13377d=typeof _0x591bcb['offset']===_0x969a('0x1c')&&typeof _0x591bcb[_0x969a('0x1d')]===_0x969a('0x1c');var _0x42f75e=_0x2bc910[_0x969a('0x1e')];var _0x8e0427=_0x13377d?0x0:_0x591bcb[_0x969a('0x1f')];var _0x2c7187=_0x13377d?_0x2bc910[_0x969a('0x1e')]:_0x591bcb[_0x969a('0x1f')]+_0x591bcb['limit'];var _0x6b8671;if(_0x2c7187>=_0x42f75e){_0x2c7187=_0x42f75e;_0x6b8671=0xc8;}else{_0x6b8671=0xce;}_0x13805a[_0x969a('0x1a')](_0x6b8671);return _0x13805a['set'](_0x969a('0x20'),_0x8e0427+'-'+_0x2c7187+'/'+_0x42f75e)['json'](_0x2bc910);}return null;};}function patchUpdates(_0x1ee71a){return function(_0x1410c5){try{jsonpatch[_0x969a('0x21')](_0x1410c5,_0x1ee71a,!![]);}catch(_0x5c78e2){return BPromise[_0x969a('0x22')](_0x5c78e2);}return _0x1410c5[_0x969a('0x23')]();};}function saveUpdates(_0x5c17f0,_0x49ead1){return function(_0x5eb3c4){if(_0x5eb3c4){return _0x5eb3c4[_0x969a('0x24')](_0x5c17f0)[_0x969a('0x25')](function(_0x3a742a){return _0x3a742a;});}return null;};}function removeEntity(_0x472ccd,_0x4f0994){return function(_0x2e0950){if(_0x2e0950){return _0x2e0950[_0x969a('0x26')]()[_0x969a('0x25')](function(){_0x472ccd['status'](0xcc)[_0x969a('0x19')]();});}};}function handleEntityNotFound(_0x1c6b7c,_0x2c3788){return function(_0x3d27a8){if(!_0x3d27a8){_0x1c6b7c[_0x969a('0x18')](0x194);}return _0x3d27a8;};}function handleError(_0x4a6e1a,_0x2e0380){_0x2e0380=_0x2e0380||0x1f4;return function(_0xef8742){logger[_0x969a('0x27')](_0xef8742[_0x969a('0x28')]);if(_0xef8742[_0x969a('0x29')]){delete _0xef8742['name'];}_0x4a6e1a['status'](_0x2e0380)[_0x969a('0x2a')](_0xef8742);};}exports[_0x969a('0x2b')]=function(_0x4a6a11,_0x8a9cfb){var _0xa8a54a={},_0x322c2d={},_0x28b0dc={'count':0x0,'rows':[]};var _0x41fc64=_[_0x969a('0x2c')](db[_0x969a('0x2d')]['rawAttributes'],function(_0x945411){return{'name':_0x945411[_0x969a('0x2e')],'type':_0x945411[_0x969a('0x2f')][_0x969a('0x30')]};});_0x322c2d[_0x969a('0x31')]=_[_0x969a('0x2c')](_0x41fc64,_0x969a('0x29'));_0x322c2d['query']=_[_0x969a('0x32')](_0x4a6a11[_0x969a('0x33')]);_0x322c2d[_0x969a('0x34')]=_[_0x969a('0x35')](_0x322c2d['model'],_0x322c2d['query']);_0xa8a54a[_0x969a('0x36')]=_[_0x969a('0x35')](_0x322c2d[_0x969a('0x31')],qs[_0x969a('0x37')](_0x4a6a11[_0x969a('0x33')][_0x969a('0x37')]));_0xa8a54a[_0x969a('0x36')]=_0xa8a54a['attributes']['length']?_0xa8a54a[_0x969a('0x36')]:_0x322c2d[_0x969a('0x31')];if(!_0x4a6a11[_0x969a('0x33')][_0x969a('0x38')](_0x969a('0x39'))){_0xa8a54a[_0x969a('0x1d')]=qs[_0x969a('0x1d')](_0x4a6a11[_0x969a('0x33')][_0x969a('0x1d')]);_0xa8a54a[_0x969a('0x1f')]=qs[_0x969a('0x1f')](_0x4a6a11[_0x969a('0x33')][_0x969a('0x1f')]);}_0xa8a54a[_0x969a('0x3a')]=qs[_0x969a('0x3b')](_0x4a6a11[_0x969a('0x33')][_0x969a('0x3b')]);_0xa8a54a[_0x969a('0x3c')]=qs['filters'](_[_0x969a('0x3d')](_0x4a6a11['query'],_0x322c2d[_0x969a('0x34')]),_0x41fc64);if(_0x4a6a11[_0x969a('0x33')][_0x969a('0x3e')]){_0xa8a54a[_0x969a('0x3c')]=_[_0x969a('0x3f')](_0xa8a54a[_0x969a('0x3c')],{'$or':_['map'](_0x41fc64,function(_0x123245){if(_0x123245[_0x969a('0x2f')]!==_0x969a('0x40')){var _0x2cb334={};_0x2cb334[_0x123245[_0x969a('0x29')]]={'$like':'%'+_0x4a6a11[_0x969a('0x33')][_0x969a('0x3e')]+'%'};return _0x2cb334;}})});}_0xa8a54a=_['merge']({},_0xa8a54a,_0x4a6a11[_0x969a('0x41')]);var _0x3149c3={'where':_0xa8a54a['where']};return db[_0x969a('0x2d')][_0x969a('0x1e')](_0x3149c3)['then'](function(_0x3dbdce){_0x28b0dc[_0x969a('0x1e')]=_0x3dbdce;if(_0x4a6a11[_0x969a('0x33')]['includeAll']){_0xa8a54a[_0x969a('0x42')]=[{'all':!![]}];}return db['SmsQueueReport'][_0x969a('0x43')](_0xa8a54a);})['then'](function(_0x1bec3e){_0x28b0dc[_0x969a('0x44')]=_0x1bec3e;return _0x28b0dc;})[_0x969a('0x25')](respondWithFilteredResult(_0x8a9cfb,_0xa8a54a))[_0x969a('0x45')](handleError(_0x8a9cfb,null));};exports[_0x969a('0x46')]=function(_0x2fe887,_0x3d2b70){var _0x59c719={'raw':!![],'where':{'id':_0x2fe887[_0x969a('0x47')]['id']}},_0x930c8c={};_0x930c8c['model']=_[_0x969a('0x32')](db['SmsQueueReport']['rawAttributes']);_0x930c8c[_0x969a('0x33')]=_[_0x969a('0x32')](_0x2fe887[_0x969a('0x33')]);_0x930c8c['filters']=_['intersection'](_0x930c8c['model'],_0x930c8c[_0x969a('0x33')]);_0x59c719['attributes']=_[_0x969a('0x35')](_0x930c8c[_0x969a('0x31')],qs['fields'](_0x2fe887[_0x969a('0x33')][_0x969a('0x37')]));_0x59c719[_0x969a('0x36')]=_0x59c719['attributes'][_0x969a('0x48')]?_0x59c719[_0x969a('0x36')]:_0x930c8c['model'];if(_0x2fe887[_0x969a('0x33')][_0x969a('0x49')]){_0x59c719[_0x969a('0x42')]=[{'all':!![]}];}_0x59c719=_[_0x969a('0x3f')]({},_0x59c719,_0x2fe887[_0x969a('0x41')]);return db[_0x969a('0x2d')]['find'](_0x59c719)[_0x969a('0x25')](handleEntityNotFound(_0x3d2b70,null))['then'](respondWithResult(_0x3d2b70,null))['catch'](handleError(_0x3d2b70,null));};exports[_0x969a('0x4a')]=function(_0x2686ff,_0x43900c){return db[_0x969a('0x2d')][_0x969a('0x4a')](_0x2686ff[_0x969a('0x4b')],{})[_0x969a('0x25')](respondWithResult(_0x43900c,0xc9))[_0x969a('0x45')](handleError(_0x43900c,null));};exports[_0x969a('0x24')]=function(_0x5ab194,_0x19c98a){if(_0x5ab194[_0x969a('0x4b')]['id']){delete _0x5ab194['body']['id'];}return db[_0x969a('0x2d')][_0x969a('0x4c')]({'where':{'id':_0x5ab194[_0x969a('0x47')]['id']}})[_0x969a('0x25')](handleEntityNotFound(_0x19c98a,null))['then'](saveUpdates(_0x5ab194[_0x969a('0x4b')],null))[_0x969a('0x25')](respondWithResult(_0x19c98a,null))[_0x969a('0x45')](handleError(_0x19c98a,null));};exports[_0x969a('0x26')]=function(_0x5c415b,_0x56cda2){return db[_0x969a('0x2d')]['find']({'where':{'id':_0x5c415b['params']['id']}})[_0x969a('0x25')](handleEntityNotFound(_0x56cda2,null))[_0x969a('0x25')](removeEntity(_0x56cda2,null))[_0x969a('0x45')](handleError(_0x56cda2,null));};exports[_0x969a('0x4d')]=function(_0x36c915,_0x1240fb){return db['SmsQueueReport'][_0x969a('0x4d')]()[_0x969a('0x25')](respondWithResult(_0x1240fb,null))[_0x969a('0x45')](handleError(_0x1240fb,null));};
\ No newline at end of file
+var _0xf8b2=['pick','filter','merge','VIRTUAL','options','SmsQueueReport','include','findAll','rows','show','params','rawAttributes','includeAll','create','body','find','catch','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','update','destroy','then','end','stack','name','send','index','map','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filters'];(function(_0x3f4070,_0x3ff2a6){var _0x1063be=function(_0x13aa61){while(--_0x13aa61){_0x3f4070['push'](_0x3f4070['shift']());}};_0x1063be(++_0x3ff2a6);}(_0xf8b2,0x1d4));var _0x2f8b=function(_0x2056a5,_0x446c50){_0x2056a5=_0x2056a5-0x0;var _0x4616a3=_0xf8b2[_0x2056a5];return _0x4616a3;};'use strict';var emlformat=require(_0x2f8b('0x0'));var rimraf=require(_0x2f8b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2f8b('0x2'));var rp=require('request-promise');var moment=require(_0x2f8b('0x3'));var BPromise=require(_0x2f8b('0x4'));var Mustache=require('mustache');var util=require(_0x2f8b('0x5'));var path=require(_0x2f8b('0x6'));var sox=require('sox');var csv=require(_0x2f8b('0x7'));var ejs=require(_0x2f8b('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2f8b('0x9'));var squel=require(_0x2f8b('0xa'));var crypto=require('crypto');var jsforce=require(_0x2f8b('0xb'));var deskjs=require(_0x2f8b('0xc'));var toCsv=require('to-csv');var querystring=require(_0x2f8b('0xd'));var Papa=require('papaparse');var Redis=require(_0x2f8b('0xe'));var authService=require(_0x2f8b('0xf'));var qs=require(_0x2f8b('0x10'));var as=require(_0x2f8b('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x2f8b('0x12'));var utils=require(_0x2f8b('0x13'));var config=require(_0x2f8b('0x14'));var licenseUtil=require(_0x2f8b('0x15'));var db=require(_0x2f8b('0x16'))['db'];function respondWithStatusCode(_0x606705,_0xf4b0db){_0xf4b0db=_0xf4b0db||0xcc;return function(_0x18bba5){if(_0x18bba5){return _0x606705[_0x2f8b('0x17')](_0xf4b0db);}return _0x606705[_0x2f8b('0x18')](_0xf4b0db)['end']();};}function respondWithResult(_0x19fc14,_0x2068c0){_0x2068c0=_0x2068c0||0xc8;return function(_0x3f9eac){if(_0x3f9eac){return _0x19fc14[_0x2f8b('0x18')](_0x2068c0)[_0x2f8b('0x19')](_0x3f9eac);}};}function respondWithFilteredResult(_0x32a560,_0x1d5602){return function(_0x43dcf9){if(_0x43dcf9){var _0x566b21=typeof _0x1d5602[_0x2f8b('0x1a')]===_0x2f8b('0x1b')&&typeof _0x1d5602['limit']==='undefined';var _0x3d191b=_0x43dcf9['count'];var _0x11da8f=_0x566b21?0x0:_0x1d5602[_0x2f8b('0x1a')];var _0x120090=_0x566b21?_0x43dcf9[_0x2f8b('0x1c')]:_0x1d5602[_0x2f8b('0x1a')]+_0x1d5602['limit'];var _0xeacf72;if(_0x120090>=_0x3d191b){_0x120090=_0x3d191b;_0xeacf72=0xc8;}else{_0xeacf72=0xce;}_0x32a560[_0x2f8b('0x18')](_0xeacf72);return _0x32a560[_0x2f8b('0x1d')](_0x2f8b('0x1e'),_0x11da8f+'-'+_0x120090+'/'+_0x3d191b)[_0x2f8b('0x19')](_0x43dcf9);}return null;};}function patchUpdates(_0x349774){return function(_0x424cf1){try{jsonpatch[_0x2f8b('0x1f')](_0x424cf1,_0x349774,!![]);}catch(_0x1c35f5){return BPromise['reject'](_0x1c35f5);}return _0x424cf1['save']();};}function saveUpdates(_0x2907ea,_0x5109b5){return function(_0x178781){if(_0x178781){return _0x178781[_0x2f8b('0x20')](_0x2907ea)['then'](function(_0x22ae5d){return _0x22ae5d;});}return null;};}function removeEntity(_0x2744c5,_0x2d539e){return function(_0x4c2a9f){if(_0x4c2a9f){return _0x4c2a9f[_0x2f8b('0x21')]()[_0x2f8b('0x22')](function(){_0x2744c5[_0x2f8b('0x18')](0xcc)[_0x2f8b('0x23')]();});}};}function handleEntityNotFound(_0x1f95f8,_0x33bd4e){return function(_0xd50943){if(!_0xd50943){_0x1f95f8[_0x2f8b('0x17')](0x194);}return _0xd50943;};}function handleError(_0x1ec08a,_0x1444e2){_0x1444e2=_0x1444e2||0x1f4;return function(_0x12091d){logger['error'](_0x12091d[_0x2f8b('0x24')]);if(_0x12091d[_0x2f8b('0x25')]){delete _0x12091d['name'];}_0x1ec08a[_0x2f8b('0x18')](_0x1444e2)[_0x2f8b('0x26')](_0x12091d);};}exports[_0x2f8b('0x27')]=function(_0x1b58f1,_0x309cab){var _0x1a25b8={},_0x500300={},_0x10ba2a={'count':0x0,'rows':[]};var _0x374fcd=_[_0x2f8b('0x28')](db['SmsQueueReport']['rawAttributes'],function(_0x414a39){return{'name':_0x414a39['fieldName'],'type':_0x414a39[_0x2f8b('0x29')][_0x2f8b('0x2a')]};});_0x500300['model']=_[_0x2f8b('0x28')](_0x374fcd,'name');_0x500300[_0x2f8b('0x2b')]=_[_0x2f8b('0x2c')](_0x1b58f1[_0x2f8b('0x2b')]);_0x500300['filters']=_[_0x2f8b('0x2d')](_0x500300[_0x2f8b('0x2e')],_0x500300[_0x2f8b('0x2b')]);_0x1a25b8[_0x2f8b('0x2f')]=_['intersection'](_0x500300[_0x2f8b('0x2e')],qs[_0x2f8b('0x30')](_0x1b58f1[_0x2f8b('0x2b')][_0x2f8b('0x30')]));_0x1a25b8[_0x2f8b('0x2f')]=_0x1a25b8[_0x2f8b('0x2f')][_0x2f8b('0x31')]?_0x1a25b8['attributes']:_0x500300['model'];if(!_0x1b58f1[_0x2f8b('0x2b')][_0x2f8b('0x32')](_0x2f8b('0x33'))){_0x1a25b8[_0x2f8b('0x34')]=qs['limit'](_0x1b58f1[_0x2f8b('0x2b')][_0x2f8b('0x34')]);_0x1a25b8[_0x2f8b('0x1a')]=qs[_0x2f8b('0x1a')](_0x1b58f1[_0x2f8b('0x2b')][_0x2f8b('0x1a')]);}_0x1a25b8[_0x2f8b('0x35')]=qs[_0x2f8b('0x36')](_0x1b58f1[_0x2f8b('0x2b')]['sort']);_0x1a25b8[_0x2f8b('0x37')]=qs[_0x2f8b('0x38')](_[_0x2f8b('0x39')](_0x1b58f1['query'],_0x500300[_0x2f8b('0x38')]),_0x374fcd);if(_0x1b58f1[_0x2f8b('0x2b')][_0x2f8b('0x3a')]){_0x1a25b8['where']=_[_0x2f8b('0x3b')](_0x1a25b8[_0x2f8b('0x37')],{'$or':_[_0x2f8b('0x28')](_0x374fcd,function(_0x24c240){if(_0x24c240['type']!==_0x2f8b('0x3c')){var _0xf5a703={};_0xf5a703[_0x24c240[_0x2f8b('0x25')]]={'$like':'%'+_0x1b58f1[_0x2f8b('0x2b')][_0x2f8b('0x3a')]+'%'};return _0xf5a703;}})});}_0x1a25b8=_['merge']({},_0x1a25b8,_0x1b58f1[_0x2f8b('0x3d')]);var _0x1b568d={'where':_0x1a25b8[_0x2f8b('0x37')]};return db[_0x2f8b('0x3e')]['count'](_0x1b568d)[_0x2f8b('0x22')](function(_0x272cd6){_0x10ba2a[_0x2f8b('0x1c')]=_0x272cd6;if(_0x1b58f1[_0x2f8b('0x2b')]['includeAll']){_0x1a25b8[_0x2f8b('0x3f')]=[{'all':!![]}];}return db[_0x2f8b('0x3e')][_0x2f8b('0x40')](_0x1a25b8);})['then'](function(_0x2db74d){_0x10ba2a[_0x2f8b('0x41')]=_0x2db74d;return _0x10ba2a;})['then'](respondWithFilteredResult(_0x309cab,_0x1a25b8))['catch'](handleError(_0x309cab,null));};exports[_0x2f8b('0x42')]=function(_0x73d309,_0x422464){var _0x57b366={'raw':!![],'where':{'id':_0x73d309[_0x2f8b('0x43')]['id']}},_0x567087={};_0x567087[_0x2f8b('0x2e')]=_['keys'](db['SmsQueueReport'][_0x2f8b('0x44')]);_0x567087['query']=_[_0x2f8b('0x2c')](_0x73d309[_0x2f8b('0x2b')]);_0x567087['filters']=_[_0x2f8b('0x2d')](_0x567087[_0x2f8b('0x2e')],_0x567087[_0x2f8b('0x2b')]);_0x57b366[_0x2f8b('0x2f')]=_['intersection'](_0x567087[_0x2f8b('0x2e')],qs[_0x2f8b('0x30')](_0x73d309[_0x2f8b('0x2b')][_0x2f8b('0x30')]));_0x57b366['attributes']=_0x57b366[_0x2f8b('0x2f')][_0x2f8b('0x31')]?_0x57b366[_0x2f8b('0x2f')]:_0x567087['model'];if(_0x73d309[_0x2f8b('0x2b')][_0x2f8b('0x45')]){_0x57b366['include']=[{'all':!![]}];}_0x57b366=_[_0x2f8b('0x3b')]({},_0x57b366,_0x73d309[_0x2f8b('0x3d')]);return db[_0x2f8b('0x3e')]['find'](_0x57b366)[_0x2f8b('0x22')](handleEntityNotFound(_0x422464,null))[_0x2f8b('0x22')](respondWithResult(_0x422464,null))['catch'](handleError(_0x422464,null));};exports[_0x2f8b('0x46')]=function(_0x2a6483,_0x5e2572){return db[_0x2f8b('0x3e')][_0x2f8b('0x46')](_0x2a6483[_0x2f8b('0x47')],{})[_0x2f8b('0x22')](respondWithResult(_0x5e2572,0xc9))['catch'](handleError(_0x5e2572,null));};exports[_0x2f8b('0x20')]=function(_0x1b0b06,_0x3c7c8f){if(_0x1b0b06[_0x2f8b('0x47')]['id']){delete _0x1b0b06['body']['id'];}return db[_0x2f8b('0x3e')][_0x2f8b('0x48')]({'where':{'id':_0x1b0b06[_0x2f8b('0x43')]['id']}})['then'](handleEntityNotFound(_0x3c7c8f,null))['then'](saveUpdates(_0x1b0b06['body'],null))[_0x2f8b('0x22')](respondWithResult(_0x3c7c8f,null))[_0x2f8b('0x49')](handleError(_0x3c7c8f,null));};exports[_0x2f8b('0x21')]=function(_0x1a9c73,_0x179bc5){return db[_0x2f8b('0x3e')]['find']({'where':{'id':_0x1a9c73['params']['id']}})[_0x2f8b('0x22')](handleEntityNotFound(_0x179bc5,null))['then'](removeEntity(_0x179bc5,null))['catch'](handleError(_0x179bc5,null));};exports[_0x2f8b('0x4a')]=function(_0x35582d,_0x4fb04a){return db['SmsQueueReport'][_0x2f8b('0x4a')]()[_0x2f8b('0x22')](respondWithResult(_0x4fb04a,null))[_0x2f8b('0x49')](handleError(_0x4fb04a,null));};
\ No newline at end of file
index 4062d94..e83b486 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['define','report_sms_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x31b8ab,_0x6569e){var _0x150ae4=function(_0x1f647a){while(--_0x1f647a){_0x31b8ab['push'](_0x31b8ab['shift']());}};_0x150ae4(++_0x6569e);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./smsQueueReport.attributes');module['exports']=function(_0x3f8b6f,_0x227c63){return _0x3f8b6f[_0x0d8b('0x7')]('SmsQueueReport',attributes,{'tableName':_0x0d8b('0x8'),'paranoid':![],'indexes':[{'name':_0x0d8b('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['define','SmsQueueReport','uniqueid','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0xa9e0[_0x47e7cb];return _0x2a8874;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0a9e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 91ddd1a..c7a8e84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9709=['request','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateSmsQueueReport','SmsQueueReport','create','body','options','raw','UpdateSmsQueueReport','update','where','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http'];(function(_0xdb3916,_0x57d226){var _0x2560e7=function(_0x45f1f0){while(--_0x45f1f0){_0xdb3916['push'](_0xdb3916['shift']());}};_0x2560e7(++_0x57d226);}(_0x9709,0x16a));var _0x9970=function(_0x4e623c,_0x110ef0){_0x4e623c=_0x4e623c-0x0;var _0x43fbbf=_0x9709[_0x4e623c];return _0x43fbbf;};'use strict';var _=require(_0x9970('0x0'));var util=require(_0x9970('0x1'));var moment=require(_0x9970('0x2'));var BPromise=require(_0x9970('0x3'));var rs=require(_0x9970('0x4'));var fs=require('fs');var Redis=require(_0x9970('0x5'));var db=require(_0x9970('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x9970('0x7'))(_0x9970('0x8'));var config=require('../../config/environment');var jayson=require(_0x9970('0x9'));var client=jayson[_0x9970('0xa')][_0x9970('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x51943d,_0x37fa65,_0x546aaf){return new BPromise(function(_0x9bafd7,_0x445935){return client[_0x9970('0xc')](_0x51943d,_0x546aaf)[_0x9970('0xd')](function(_0x41fc97){logger[_0x9970('0xe')](_0x9970('0xf'),_0x37fa65,_0x9970('0x10'));logger[_0x9970('0x11')]('SmsQueueReport,\x20%s,\x20%s,\x20%s',_0x37fa65,_0x9970('0x10'),JSON[_0x9970('0x12')](_0x41fc97));if(_0x41fc97['error']){if(_0x41fc97[_0x9970('0x13')][_0x9970('0x14')]===0x1f4){logger['error'](_0x9970('0xf'),_0x37fa65,_0x41fc97[_0x9970('0x13')][_0x9970('0x15')]);return _0x445935(_0x41fc97[_0x9970('0x13')]['message']);}logger['error'](_0x9970('0xf'),_0x37fa65,_0x41fc97['error'][_0x9970('0x15')]);return _0x9bafd7(_0x41fc97[_0x9970('0x13')][_0x9970('0x15')]);}else{logger[_0x9970('0xe')](_0x9970('0xf'),_0x37fa65,_0x9970('0x10'));_0x9bafd7(_0x41fc97[_0x9970('0x16')][_0x9970('0x15')]);}})[_0x9970('0x17')](function(_0x52b2c8){logger[_0x9970('0x13')](_0x9970('0xf'),_0x37fa65,_0x52b2c8);_0x445935(_0x52b2c8);});});}exports[_0x9970('0x18')]=function(_0xb4e3c){var _0x5d1702=this;return new Promise(function(_0x5d2629,_0x531473){return db[_0x9970('0x19')][_0x9970('0x1a')](_0xb4e3c[_0x9970('0x1b')],{'raw':_0xb4e3c[_0x9970('0x1c')]?_0xb4e3c[_0x9970('0x1c')][_0x9970('0x1d')]===undefined?!![]:![]:!![]})[_0x9970('0xd')](function(_0x23dd1a){logger[_0x9970('0xe')](_0x9970('0x18'),_0xb4e3c);logger[_0x9970('0x11')](_0x9970('0x18'),_0xb4e3c,JSON[_0x9970('0x12')](_0x23dd1a));_0x5d2629(_0x23dd1a);})[_0x9970('0x17')](function(_0x129bab){logger['error'](_0x9970('0x18'),_0x129bab[_0x9970('0x15')],_0xb4e3c);_0x531473(_0x5d1702[_0x9970('0x13')](0x1f4,_0x129bab[_0x9970('0x15')]));});});};exports[_0x9970('0x1e')]=function(_0x10bf21){var _0x35bfb8=this;return new Promise(function(_0x376d97,_0x60c879){return db[_0x9970('0x19')][_0x9970('0x1f')](_0x10bf21[_0x9970('0x1b')],{'raw':_0x10bf21['options']?_0x10bf21[_0x9970('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x10bf21['options']?_0x10bf21[_0x9970('0x1c')][_0x9970('0x20')]||null:null,'attributes':_0x10bf21[_0x9970('0x1c')]?_0x10bf21[_0x9970('0x1c')][_0x9970('0x21')]||null:null,'limit':_0x10bf21[_0x9970('0x1c')]?_0x10bf21['options']['limit']||null:null})[_0x9970('0xd')](function(_0x2102c9){logger[_0x9970('0xe')]('UpdateSmsQueueReport',_0x10bf21);logger[_0x9970('0x11')]('UpdateSmsQueueReport',_0x10bf21,JSON[_0x9970('0x12')](_0x2102c9));_0x376d97(_0x2102c9);})['catch'](function(_0x2beb8b){logger[_0x9970('0x13')](_0x9970('0x1e'),_0x2beb8b[_0x9970('0x15')],_0x10bf21);_0x60c879(_0x35bfb8['error'](0x1f4,_0x2beb8b['message']));});});};
\ No newline at end of file
+var _0xbe3b=['SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsQueueReport,\x20%s,\x20%s','message','result','catch','CreateSmsQueueReport','SmsQueueReport','body','options','raw','then','UpdateSmsQueueReport','attributes','limit','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','request','info','request\x20sent','debug'];(function(_0x129b9f,_0x5eceb7){var _0x4399fd=function(_0x36bf8b){while(--_0x36bf8b){_0x129b9f['push'](_0x129b9f['shift']());}};_0x4399fd(++_0x5eceb7);}(_0xbe3b,0xa7));var _0xbbe3=function(_0x5da73f,_0x592980){_0x5da73f=_0x5da73f-0x0;var _0x1b3d73=_0xbe3b[_0x5da73f];return _0x1b3d73;};'use strict';var _=require(_0xbbe3('0x0'));var util=require('util');var moment=require(_0xbbe3('0x1'));var BPromise=require(_0xbbe3('0x2'));var rs=require(_0xbbe3('0x3'));var fs=require('fs');var Redis=require(_0xbbe3('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbbe3('0x5'))('rpc');var config=require(_0xbbe3('0x6'));var jayson=require(_0xbbe3('0x7'));var client=jayson[_0xbbe3('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1ae4f4,_0x38b86f,_0x3b95f2){return new BPromise(function(_0x23eb23,_0x46c565){return client[_0xbbe3('0x9')](_0x1ae4f4,_0x3b95f2)['then'](function(_0x522885){logger[_0xbbe3('0xa')]('SmsQueueReport,\x20%s,\x20%s',_0x38b86f,_0xbbe3('0xb'));logger[_0xbbe3('0xc')](_0xbbe3('0xd'),_0x38b86f,_0xbbe3('0xb'),JSON[_0xbbe3('0xe')](_0x522885));if(_0x522885['error']){if(_0x522885[_0xbbe3('0xf')][_0xbbe3('0x10')]===0x1f4){logger[_0xbbe3('0xf')](_0xbbe3('0x11'),_0x38b86f,_0x522885[_0xbbe3('0xf')][_0xbbe3('0x12')]);return _0x46c565(_0x522885[_0xbbe3('0xf')][_0xbbe3('0x12')]);}logger[_0xbbe3('0xf')]('SmsQueueReport,\x20%s,\x20%s',_0x38b86f,_0x522885[_0xbbe3('0xf')]['message']);return _0x23eb23(_0x522885['error'][_0xbbe3('0x12')]);}else{logger[_0xbbe3('0xa')]('SmsQueueReport,\x20%s,\x20%s',_0x38b86f,'request\x20sent');_0x23eb23(_0x522885[_0xbbe3('0x13')][_0xbbe3('0x12')]);}})[_0xbbe3('0x14')](function(_0x217129){logger[_0xbbe3('0xf')](_0xbbe3('0x11'),_0x38b86f,_0x217129);_0x46c565(_0x217129);});});}exports[_0xbbe3('0x15')]=function(_0x137493){var _0x565c5f=this;return new Promise(function(_0x4017e5,_0x371074){return db[_0xbbe3('0x16')]['create'](_0x137493[_0xbbe3('0x17')],{'raw':_0x137493[_0xbbe3('0x18')]?_0x137493[_0xbbe3('0x18')][_0xbbe3('0x19')]===undefined?!![]:![]:!![]})[_0xbbe3('0x1a')](function(_0x2f01e3){logger['info']('CreateSmsQueueReport',_0x137493);logger[_0xbbe3('0xc')](_0xbbe3('0x15'),_0x137493,JSON[_0xbbe3('0xe')](_0x2f01e3));_0x4017e5(_0x2f01e3);})[_0xbbe3('0x14')](function(_0xd4fd42){logger['error'](_0xbbe3('0x15'),_0xd4fd42['message'],_0x137493);_0x371074(_0x565c5f['error'](0x1f4,_0xd4fd42[_0xbbe3('0x12')]));});});};exports[_0xbbe3('0x1b')]=function(_0x1f4317){var _0x3136d3=this;return new Promise(function(_0x488bd0,_0x27169c){return db[_0xbbe3('0x16')]['update'](_0x1f4317[_0xbbe3('0x17')],{'raw':_0x1f4317[_0xbbe3('0x18')]?_0x1f4317[_0xbbe3('0x18')][_0xbbe3('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1f4317[_0xbbe3('0x18')]?_0x1f4317[_0xbbe3('0x18')]['where']||null:null,'attributes':_0x1f4317[_0xbbe3('0x18')]?_0x1f4317[_0xbbe3('0x18')][_0xbbe3('0x1c')]||null:null,'limit':_0x1f4317[_0xbbe3('0x18')]?_0x1f4317[_0xbbe3('0x18')][_0xbbe3('0x1d')]||null:null})[_0xbbe3('0x1a')](function(_0x210aa4){logger['info'](_0xbbe3('0x1b'),_0x1f4317);logger['debug'](_0xbbe3('0x1b'),_0x1f4317,JSON[_0xbbe3('0xe')](_0x210aa4));_0x488bd0(_0x210aa4);})[_0xbbe3('0x14')](function(_0x3c2605){logger[_0xbbe3('0xf')](_0xbbe3('0x1b'),_0x3c2605[_0xbbe3('0x12')],_0x1f4317);_0x27169c(_0x3136d3['error'](0x1f4,_0x3c2605['message']));});});};
\ No newline at end of file
index 9d24958..df48205 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x919e=['isAuthenticated','index','/describe','show','post','create','put','/:id','update','destroy','exports','multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','get'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x919e,0x1d7));var _0xe919=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x919e[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xe919('0x0'));var util=require(_0xe919('0x1'));var path=require(_0xe919('0x2'));var timeout=require('connect-timeout');var express=require(_0xe919('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xe919('0x4'));var interaction=require(_0xe919('0x5'));var config=require(_0xe919('0x6'));var controller=require(_0xe919('0x7'));router[_0xe919('0x8')]('/',auth[_0xe919('0x9')](),controller[_0xe919('0xa')]);router['get'](_0xe919('0xb'),auth[_0xe919('0x9')](),controller['describe']);router[_0xe919('0x8')]('/:id',auth[_0xe919('0x9')](),controller[_0xe919('0xc')]);router[_0xe919('0xd')]('/',auth['isAuthenticated'](),controller[_0xe919('0xe')]);router[_0xe919('0xf')](_0xe919('0x10'),auth['isAuthenticated'](),controller[_0xe919('0x11')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xe919('0x12')]);module[_0xe919('0x13')]=router;
\ No newline at end of file
+var _0x723e=['delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','put'];(function(_0x4bf5fd,_0x21a61f){var _0xaa79ab=function(_0x5c06e7){while(--_0x5c06e7){_0x4bf5fd['push'](_0x4bf5fd['shift']());}};_0xaa79ab(++_0x21a61f);}(_0x723e,0x179));var _0xe723=function(_0x1b9947,_0x539650){_0x1b9947=_0x1b9947-0x0;var _0x561209=_0x723e[_0x1b9947];return _0x561209;};'use strict';var multer=require('multer');var util=require(_0xe723('0x0'));var path=require(_0xe723('0x1'));var timeout=require(_0xe723('0x2'));var express=require(_0xe723('0x3'));var router=express[_0xe723('0x4')]();var fs_extra=require(_0xe723('0x5'));var auth=require(_0xe723('0x6'));var interaction=require(_0xe723('0x7'));var config=require(_0xe723('0x8'));var controller=require(_0xe723('0x9'));router['get']('/',auth[_0xe723('0xa')](),controller[_0xe723('0xb')]);router[_0xe723('0xc')](_0xe723('0xd'),auth[_0xe723('0xa')](),controller[_0xe723('0xe')]);router[_0xe723('0xc')](_0xe723('0xf'),auth['isAuthenticated'](),controller[_0xe723('0x10')]);router[_0xe723('0x11')]('/',auth[_0xe723('0xa')](),controller['create']);router[_0xe723('0x12')](_0xe723('0xf'),auth[_0xe723('0xa')](),controller['update']);router[_0xe723('0x13')](_0xe723('0xf'),auth[_0xe723('0xa')](),controller[_0xe723('0x14')]);module[_0xe723('0x15')]=router;
\ No newline at end of file
index 1d16da2..2be9bcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x502037,_0xd3ec9c){var _0xc83aea=function(_0x3d7261){while(--_0x3d7261){_0x502037['push'](_0x502037['shift']());}};_0xc83aea(++_0xd3ec9c);}(_0xf4eb,0xec));var _0xbf4e=function(_0x5958ef,_0x298712){_0x5958ef=_0x5958ef-0x0;var _0x1e30ff=_0xf4eb[_0x5958ef];return _0x1e30ff;};'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
+var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x493985,_0xabbee5){var _0x532b94=function(_0x150fbc){while(--_0x150fbc){_0x493985['push'](_0x493985['shift']());}};_0x532b94(++_0xabbee5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa9e0[_0x5c351c];return _0x26f3b3;};'use strict';var moment=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x0a9e('0x3'),'agent',_0x0a9e('0x4')),'allowNull':![],'defaultValue':_0x0a9e('0x4')},'transferredAt':{'type':Sequelize[_0x0a9e('0x5')],'allowNull':![],'defaultValue':Sequelize[_0x0a9e('0x6')]}};
\ No newline at end of file
index 8ebf1b5..7dc7d67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d5a=['type','key','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','catch','params','length','find','create','body','destroy','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','update','then','stack','name','send','SmsTransferReport','rawAttributes','fieldName'];(function(_0x539846,_0x4a9662){var _0x16029f=function(_0x366235){while(--_0x366235){_0x539846['push'](_0x539846['shift']());}};_0x16029f(++_0x4a9662);}(_0x4d5a,0x1cd));var _0xa4d5=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x4d5a[_0x5bd426];return _0x23a7eb;};'use strict';var emlformat=require(_0xa4d5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa4d5('0x1'));var jsonpatch=require(_0xa4d5('0x2'));var rp=require('request-promise');var moment=require(_0xa4d5('0x3'));var BPromise=require(_0xa4d5('0x4'));var Mustache=require(_0xa4d5('0x5'));var util=require(_0xa4d5('0x6'));var path=require(_0xa4d5('0x7'));var sox=require('sox');var csv=require(_0xa4d5('0x8'));var ejs=require(_0xa4d5('0x9'));var fs=require('fs');var fs_extra=require(_0xa4d5('0xa'));var _=require(_0xa4d5('0xb'));var squel=require('squel');var crypto=require(_0xa4d5('0xc'));var jsforce=require(_0xa4d5('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xa4d5('0x8'));var querystring=require(_0xa4d5('0xe'));var Papa=require(_0xa4d5('0xf'));var Redis=require(_0xa4d5('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xa4d5('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa4d5('0x12'))(_0xa4d5('0x13'));var utils=require(_0xa4d5('0x14'));var config=require(_0xa4d5('0x15'));var licenseUtil=require(_0xa4d5('0x16'));var db=require(_0xa4d5('0x17'))['db'];function respondWithStatusCode(_0x2f13e0,_0x5c742b){_0x5c742b=_0x5c742b||0xcc;return function(_0x33cd9c){if(_0x33cd9c){return _0x2f13e0[_0xa4d5('0x18')](_0x5c742b);}return _0x2f13e0[_0xa4d5('0x19')](_0x5c742b)[_0xa4d5('0x1a')]();};}function respondWithResult(_0x18d3b4,_0x434f77){_0x434f77=_0x434f77||0xc8;return function(_0x287e78){if(_0x287e78){return _0x18d3b4[_0xa4d5('0x19')](_0x434f77)[_0xa4d5('0x1b')](_0x287e78);}};}function respondWithFilteredResult(_0x48b694,_0x270c27){return function(_0x52589e){if(_0x52589e){var _0x242688=typeof _0x270c27[_0xa4d5('0x1c')]===_0xa4d5('0x1d')&&typeof _0x270c27[_0xa4d5('0x1e')]===_0xa4d5('0x1d');var _0x5772d4=_0x52589e[_0xa4d5('0x1f')];var _0x348b41=_0x242688?0x0:_0x270c27['offset'];var _0x2ae13e=_0x242688?_0x52589e[_0xa4d5('0x1f')]:_0x270c27['offset']+_0x270c27[_0xa4d5('0x1e')];var _0x2855a;if(_0x2ae13e>=_0x5772d4){_0x2ae13e=_0x5772d4;_0x2855a=0xc8;}else{_0x2855a=0xce;}_0x48b694[_0xa4d5('0x19')](_0x2855a);return _0x48b694['set']('Content-Range',_0x348b41+'-'+_0x2ae13e+'/'+_0x5772d4)['json'](_0x52589e);}return null;};}function patchUpdates(_0x52f95c){return function(_0x28b9d0){try{jsonpatch[_0xa4d5('0x20')](_0x28b9d0,_0x52f95c,!![]);}catch(_0x1291a0){return BPromise[_0xa4d5('0x21')](_0x1291a0);}return _0x28b9d0[_0xa4d5('0x22')]();};}function saveUpdates(_0x3ebc52,_0x20ea0f){return function(_0x22809f){if(_0x22809f){return _0x22809f[_0xa4d5('0x23')](_0x3ebc52)['then'](function(_0x590c8e){return _0x590c8e;});}return null;};}function removeEntity(_0x1a3d62,_0x519b3b){return function(_0x5e0ba0){if(_0x5e0ba0){return _0x5e0ba0['destroy']()[_0xa4d5('0x24')](function(){_0x1a3d62[_0xa4d5('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x38b827,_0x1fd271){return function(_0x52135c){if(!_0x52135c){_0x38b827[_0xa4d5('0x18')](0x194);}return _0x52135c;};}function handleError(_0x47eb0e,_0x45f2d4){_0x45f2d4=_0x45f2d4||0x1f4;return function(_0x27d2a3){logger['error'](_0x27d2a3[_0xa4d5('0x25')]);if(_0x27d2a3[_0xa4d5('0x26')]){delete _0x27d2a3[_0xa4d5('0x26')];}_0x47eb0e[_0xa4d5('0x19')](_0x45f2d4)[_0xa4d5('0x27')](_0x27d2a3);};}exports['index']=function(_0x6b1309,_0x3c3194){var _0x481ab2={},_0x205d11={},_0x56ea55={'count':0x0,'rows':[]};var _0x3efc34=_['map'](db[_0xa4d5('0x28')][_0xa4d5('0x29')],function(_0x51fdfb){return{'name':_0x51fdfb[_0xa4d5('0x2a')],'type':_0x51fdfb[_0xa4d5('0x2b')][_0xa4d5('0x2c')]};});_0x205d11[_0xa4d5('0x2d')]=_[_0xa4d5('0x2e')](_0x3efc34,'name');_0x205d11[_0xa4d5('0x2f')]=_[_0xa4d5('0x30')](_0x6b1309[_0xa4d5('0x2f')]);_0x205d11[_0xa4d5('0x31')]=_[_0xa4d5('0x32')](_0x205d11[_0xa4d5('0x2d')],_0x205d11['query']);_0x481ab2['attributes']=_[_0xa4d5('0x32')](_0x205d11[_0xa4d5('0x2d')],qs[_0xa4d5('0x33')](_0x6b1309[_0xa4d5('0x2f')][_0xa4d5('0x33')]));_0x481ab2[_0xa4d5('0x34')]=_0x481ab2[_0xa4d5('0x34')]['length']?_0x481ab2[_0xa4d5('0x34')]:_0x205d11[_0xa4d5('0x2d')];if(!_0x6b1309[_0xa4d5('0x2f')][_0xa4d5('0x35')](_0xa4d5('0x36'))){_0x481ab2['limit']=qs['limit'](_0x6b1309[_0xa4d5('0x2f')][_0xa4d5('0x1e')]);_0x481ab2[_0xa4d5('0x1c')]=qs['offset'](_0x6b1309[_0xa4d5('0x2f')][_0xa4d5('0x1c')]);}_0x481ab2[_0xa4d5('0x37')]=qs[_0xa4d5('0x38')](_0x6b1309[_0xa4d5('0x2f')][_0xa4d5('0x38')]);_0x481ab2[_0xa4d5('0x39')]=qs[_0xa4d5('0x31')](_['pick'](_0x6b1309[_0xa4d5('0x2f')],_0x205d11[_0xa4d5('0x31')]),_0x3efc34);if(_0x6b1309[_0xa4d5('0x2f')][_0xa4d5('0x3a')]){_0x481ab2[_0xa4d5('0x39')]=_[_0xa4d5('0x3b')](_0x481ab2[_0xa4d5('0x39')],{'$or':_[_0xa4d5('0x2e')](_0x3efc34,function(_0x5d49b0){if(_0x5d49b0['type']!=='VIRTUAL'){var _0x1e9f1b={};_0x1e9f1b[_0x5d49b0['name']]={'$like':'%'+_0x6b1309[_0xa4d5('0x2f')][_0xa4d5('0x3a')]+'%'};return _0x1e9f1b;}})});}_0x481ab2=_[_0xa4d5('0x3b')]({},_0x481ab2,_0x6b1309[_0xa4d5('0x3c')]);var _0x36ea4b={'where':_0x481ab2[_0xa4d5('0x39')]};return db['SmsTransferReport'][_0xa4d5('0x1f')](_0x36ea4b)[_0xa4d5('0x24')](function(_0x18f3b5){_0x56ea55[_0xa4d5('0x1f')]=_0x18f3b5;if(_0x6b1309[_0xa4d5('0x2f')][_0xa4d5('0x3d')]){_0x481ab2[_0xa4d5('0x3e')]=[{'all':!![]}];}return db[_0xa4d5('0x28')][_0xa4d5('0x3f')](_0x481ab2);})[_0xa4d5('0x24')](function(_0x32d4b9){_0x56ea55['rows']=_0x32d4b9;return _0x56ea55;})[_0xa4d5('0x24')](respondWithFilteredResult(_0x3c3194,_0x481ab2))[_0xa4d5('0x40')](handleError(_0x3c3194,null));};exports['show']=function(_0x5e0492,_0x423b89){var _0x430a48={'raw':!![],'where':{'id':_0x5e0492[_0xa4d5('0x41')]['id']}},_0x914cbb={};_0x914cbb['model']=_['keys'](db[_0xa4d5('0x28')][_0xa4d5('0x29')]);_0x914cbb['query']=_[_0xa4d5('0x30')](_0x5e0492['query']);_0x914cbb['filters']=_[_0xa4d5('0x32')](_0x914cbb['model'],_0x914cbb['query']);_0x430a48['attributes']=_[_0xa4d5('0x32')](_0x914cbb[_0xa4d5('0x2d')],qs[_0xa4d5('0x33')](_0x5e0492['query'][_0xa4d5('0x33')]));_0x430a48[_0xa4d5('0x34')]=_0x430a48[_0xa4d5('0x34')][_0xa4d5('0x42')]?_0x430a48['attributes']:_0x914cbb[_0xa4d5('0x2d')];if(_0x5e0492['query']['includeAll']){_0x430a48['include']=[{'all':!![]}];}_0x430a48=_['merge']({},_0x430a48,_0x5e0492[_0xa4d5('0x3c')]);return db[_0xa4d5('0x28')][_0xa4d5('0x43')](_0x430a48)[_0xa4d5('0x24')](handleEntityNotFound(_0x423b89,null))['then'](respondWithResult(_0x423b89,null))[_0xa4d5('0x40')](handleError(_0x423b89,null));};exports['create']=function(_0x3f92e1,_0x271f3e){return db[_0xa4d5('0x28')][_0xa4d5('0x44')](_0x3f92e1[_0xa4d5('0x45')],{})['then'](respondWithResult(_0x271f3e,0xc9))[_0xa4d5('0x40')](handleError(_0x271f3e,null));};exports[_0xa4d5('0x23')]=function(_0x2271df,_0x3bfdd0){if(_0x2271df[_0xa4d5('0x45')]['id']){delete _0x2271df[_0xa4d5('0x45')]['id'];}return db['SmsTransferReport']['find']({'where':{'id':_0x2271df[_0xa4d5('0x41')]['id']}})[_0xa4d5('0x24')](handleEntityNotFound(_0x3bfdd0,null))[_0xa4d5('0x24')](saveUpdates(_0x2271df[_0xa4d5('0x45')],null))[_0xa4d5('0x24')](respondWithResult(_0x3bfdd0,null))[_0xa4d5('0x40')](handleError(_0x3bfdd0,null));};exports[_0xa4d5('0x46')]=function(_0x1300c5,_0x4d0968){return db[_0xa4d5('0x28')][_0xa4d5('0x43')]({'where':{'id':_0x1300c5[_0xa4d5('0x41')]['id']}})[_0xa4d5('0x24')](handleEntityNotFound(_0x4d0968,null))['then'](removeEntity(_0x4d0968,null))['catch'](handleError(_0x4d0968,null));};exports[_0xa4d5('0x47')]=function(_0x5769e1,_0x44e105){return db[_0xa4d5('0x28')][_0xa4d5('0x47')]()[_0xa4d5('0x24')](respondWithResult(_0x44e105,null))[_0xa4d5('0x40')](handleError(_0x44e105,null));};
\ No newline at end of file
+var _0xb724=['key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','include','rows','show','params','find','create','catch','update','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','end','status','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','sendStatus','stack','name','index','map','SmsTransferReport','rawAttributes','type'];(function(_0x4425de,_0x282802){var _0x129c1f=function(_0x41654e){while(--_0x41654e){_0x4425de['push'](_0x4425de['shift']());}};_0x129c1f(++_0x282802);}(_0xb724,0x1d3));var _0x4b72=function(_0x1f1d44,_0xe39fbb){_0x1f1d44=_0x1f1d44-0x0;var _0x477b5b=_0xb724[_0x1f1d44];return _0x477b5b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4b72('0x0'));var zipdir=require(_0x4b72('0x1'));var jsonpatch=require(_0x4b72('0x2'));var rp=require(_0x4b72('0x3'));var moment=require(_0x4b72('0x4'));var BPromise=require(_0x4b72('0x5'));var Mustache=require(_0x4b72('0x6'));var util=require(_0x4b72('0x7'));var path=require(_0x4b72('0x8'));var sox=require('sox');var csv=require(_0x4b72('0x9'));var ejs=require(_0x4b72('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4b72('0xb'));var squel=require(_0x4b72('0xc'));var crypto=require(_0x4b72('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x4b72('0xe'));var toCsv=require(_0x4b72('0x9'));var querystring=require(_0x4b72('0xf'));var Papa=require(_0x4b72('0x10'));var Redis=require('ioredis');var authService=require(_0x4b72('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x4b72('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4b72('0x13'))('api');var utils=require(_0x4b72('0x14'));var config=require(_0x4b72('0x15'));var licenseUtil=require(_0x4b72('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x226d0f,_0x4ec214){_0x4ec214=_0x4ec214||0xcc;return function(_0x208603){if(_0x208603){return _0x226d0f['sendStatus'](_0x4ec214);}return _0x226d0f['status'](_0x4ec214)[_0x4b72('0x17')]();};}function respondWithResult(_0x83571f,_0x37c1fb){_0x37c1fb=_0x37c1fb||0xc8;return function(_0x3ec559){if(_0x3ec559){return _0x83571f[_0x4b72('0x18')](_0x37c1fb)[_0x4b72('0x19')](_0x3ec559);}};}function respondWithFilteredResult(_0x35cc3f,_0x11c68f){return function(_0x5af8b9){if(_0x5af8b9){var _0x3574da=typeof _0x11c68f[_0x4b72('0x1a')]===_0x4b72('0x1b')&&typeof _0x11c68f[_0x4b72('0x1c')]===_0x4b72('0x1b');var _0x192e48=_0x5af8b9[_0x4b72('0x1d')];var _0x305c47=_0x3574da?0x0:_0x11c68f['offset'];var _0x18e2ff=_0x3574da?_0x5af8b9[_0x4b72('0x1d')]:_0x11c68f[_0x4b72('0x1a')]+_0x11c68f[_0x4b72('0x1c')];var _0x3c7219;if(_0x18e2ff>=_0x192e48){_0x18e2ff=_0x192e48;_0x3c7219=0xc8;}else{_0x3c7219=0xce;}_0x35cc3f[_0x4b72('0x18')](_0x3c7219);return _0x35cc3f[_0x4b72('0x1e')]('Content-Range',_0x305c47+'-'+_0x18e2ff+'/'+_0x192e48)[_0x4b72('0x19')](_0x5af8b9);}return null;};}function patchUpdates(_0x4c0683){return function(_0x53d1e8){try{jsonpatch[_0x4b72('0x1f')](_0x53d1e8,_0x4c0683,!![]);}catch(_0x646fb4){return BPromise[_0x4b72('0x20')](_0x646fb4);}return _0x53d1e8[_0x4b72('0x21')]();};}function saveUpdates(_0x193e85,_0x2191bd){return function(_0x499b02){if(_0x499b02){return _0x499b02['update'](_0x193e85)[_0x4b72('0x22')](function(_0xe4344c){return _0xe4344c;});}return null;};}function removeEntity(_0x17b012,_0xed4308){return function(_0x2eae47){if(_0x2eae47){return _0x2eae47[_0x4b72('0x23')]()[_0x4b72('0x22')](function(){_0x17b012[_0x4b72('0x18')](0xcc)[_0x4b72('0x17')]();});}};}function handleEntityNotFound(_0x543918,_0x5d8ad7){return function(_0xf862ed){if(!_0xf862ed){_0x543918[_0x4b72('0x24')](0x194);}return _0xf862ed;};}function handleError(_0x197760,_0x214a72){_0x214a72=_0x214a72||0x1f4;return function(_0x55fb22){logger['error'](_0x55fb22[_0x4b72('0x25')]);if(_0x55fb22[_0x4b72('0x26')]){delete _0x55fb22[_0x4b72('0x26')];}_0x197760[_0x4b72('0x18')](_0x214a72)['send'](_0x55fb22);};}exports[_0x4b72('0x27')]=function(_0x4dfa04,_0x54ca3c){var _0x2e4a78={},_0xc79278={},_0x273ad6={'count':0x0,'rows':[]};var _0x46e0a4=_[_0x4b72('0x28')](db[_0x4b72('0x29')][_0x4b72('0x2a')],function(_0x3b8196){return{'name':_0x3b8196['fieldName'],'type':_0x3b8196[_0x4b72('0x2b')][_0x4b72('0x2c')]};});_0xc79278[_0x4b72('0x2d')]=_[_0x4b72('0x28')](_0x46e0a4,'name');_0xc79278[_0x4b72('0x2e')]=_[_0x4b72('0x2f')](_0x4dfa04[_0x4b72('0x2e')]);_0xc79278['filters']=_[_0x4b72('0x30')](_0xc79278[_0x4b72('0x2d')],_0xc79278['query']);_0x2e4a78[_0x4b72('0x31')]=_[_0x4b72('0x30')](_0xc79278[_0x4b72('0x2d')],qs[_0x4b72('0x32')](_0x4dfa04['query']['fields']));_0x2e4a78[_0x4b72('0x31')]=_0x2e4a78[_0x4b72('0x31')][_0x4b72('0x33')]?_0x2e4a78['attributes']:_0xc79278[_0x4b72('0x2d')];if(!_0x4dfa04['query'][_0x4b72('0x34')](_0x4b72('0x35'))){_0x2e4a78[_0x4b72('0x1c')]=qs[_0x4b72('0x1c')](_0x4dfa04[_0x4b72('0x2e')]['limit']);_0x2e4a78[_0x4b72('0x1a')]=qs['offset'](_0x4dfa04[_0x4b72('0x2e')][_0x4b72('0x1a')]);}_0x2e4a78[_0x4b72('0x36')]=qs[_0x4b72('0x37')](_0x4dfa04['query'][_0x4b72('0x37')]);_0x2e4a78[_0x4b72('0x38')]=qs[_0x4b72('0x39')](_[_0x4b72('0x3a')](_0x4dfa04['query'],_0xc79278[_0x4b72('0x39')]),_0x46e0a4);if(_0x4dfa04['query'][_0x4b72('0x3b')]){_0x2e4a78['where']=_[_0x4b72('0x3c')](_0x2e4a78[_0x4b72('0x38')],{'$or':_[_0x4b72('0x28')](_0x46e0a4,function(_0x2afa91){if(_0x2afa91[_0x4b72('0x2b')]!=='VIRTUAL'){var _0x28fc9b={};_0x28fc9b[_0x2afa91['name']]={'$like':'%'+_0x4dfa04[_0x4b72('0x2e')][_0x4b72('0x3b')]+'%'};return _0x28fc9b;}})});}_0x2e4a78=_[_0x4b72('0x3c')]({},_0x2e4a78,_0x4dfa04[_0x4b72('0x3d')]);var _0x147adb={'where':_0x2e4a78[_0x4b72('0x38')]};return db[_0x4b72('0x29')]['count'](_0x147adb)['then'](function(_0xe180ad){_0x273ad6[_0x4b72('0x1d')]=_0xe180ad;if(_0x4dfa04[_0x4b72('0x2e')][_0x4b72('0x3e')]){_0x2e4a78[_0x4b72('0x3f')]=[{'all':!![]}];}return db[_0x4b72('0x29')]['findAll'](_0x2e4a78);})['then'](function(_0x5974e9){_0x273ad6[_0x4b72('0x40')]=_0x5974e9;return _0x273ad6;})[_0x4b72('0x22')](respondWithFilteredResult(_0x54ca3c,_0x2e4a78))['catch'](handleError(_0x54ca3c,null));};exports[_0x4b72('0x41')]=function(_0x556dcb,_0x33d844){var _0x568d81={'raw':!![],'where':{'id':_0x556dcb[_0x4b72('0x42')]['id']}},_0x5e4132={};_0x5e4132['model']=_[_0x4b72('0x2f')](db[_0x4b72('0x29')][_0x4b72('0x2a')]);_0x5e4132[_0x4b72('0x2e')]=_[_0x4b72('0x2f')](_0x556dcb[_0x4b72('0x2e')]);_0x5e4132[_0x4b72('0x39')]=_[_0x4b72('0x30')](_0x5e4132[_0x4b72('0x2d')],_0x5e4132['query']);_0x568d81[_0x4b72('0x31')]=_['intersection'](_0x5e4132[_0x4b72('0x2d')],qs['fields'](_0x556dcb[_0x4b72('0x2e')]['fields']));_0x568d81[_0x4b72('0x31')]=_0x568d81[_0x4b72('0x31')][_0x4b72('0x33')]?_0x568d81[_0x4b72('0x31')]:_0x5e4132[_0x4b72('0x2d')];if(_0x556dcb['query'][_0x4b72('0x3e')]){_0x568d81[_0x4b72('0x3f')]=[{'all':!![]}];}_0x568d81=_[_0x4b72('0x3c')]({},_0x568d81,_0x556dcb[_0x4b72('0x3d')]);return db[_0x4b72('0x29')][_0x4b72('0x43')](_0x568d81)[_0x4b72('0x22')](handleEntityNotFound(_0x33d844,null))[_0x4b72('0x22')](respondWithResult(_0x33d844,null))['catch'](handleError(_0x33d844,null));};exports['create']=function(_0x42a751,_0x41ac19){return db[_0x4b72('0x29')][_0x4b72('0x44')](_0x42a751['body'],{})[_0x4b72('0x22')](respondWithResult(_0x41ac19,0xc9))[_0x4b72('0x45')](handleError(_0x41ac19,null));};exports[_0x4b72('0x46')]=function(_0x2269d5,_0x5a1261){if(_0x2269d5['body']['id']){delete _0x2269d5[_0x4b72('0x47')]['id'];}return db[_0x4b72('0x29')]['find']({'where':{'id':_0x2269d5[_0x4b72('0x42')]['id']}})[_0x4b72('0x22')](handleEntityNotFound(_0x5a1261,null))[_0x4b72('0x22')](saveUpdates(_0x2269d5[_0x4b72('0x47')],null))['then'](respondWithResult(_0x5a1261,null))['catch'](handleError(_0x5a1261,null));};exports['destroy']=function(_0x2c0b22,_0x403e6f){return db[_0x4b72('0x29')][_0x4b72('0x43')]({'where':{'id':_0x2c0b22[_0x4b72('0x42')]['id']}})[_0x4b72('0x22')](handleEntityNotFound(_0x403e6f,null))[_0x4b72('0x22')](removeEntity(_0x403e6f,null))['catch'](handleError(_0x403e6f,null));};exports[_0x4b72('0x48')]=function(_0x38777e,_0x49c6d4){return db['SmsTransferReport'][_0x4b72('0x48')]()[_0x4b72('0x22')](respondWithResult(_0x49c6d4,null))[_0x4b72('0x45')](handleError(_0x49c6d4,null));};
\ No newline at end of file
index d9682c0..10238fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5183=['rimraf','exports','uniqueid','lodash','util','../../config/logger','bluebird','request-promise','path'];(function(_0x3df9dd,_0x26f5cd){var _0x4f11e4=function(_0x1993fe){while(--_0x1993fe){_0x3df9dd['push'](_0x3df9dd['shift']());}};_0x4f11e4(++_0x26f5cd);}(_0x5183,0x13e));var _0x3518=function(_0x3c89cf,_0x519397){_0x3c89cf=_0x3c89cf-0x0;var _0x5bc226=_0x5183[_0x3c89cf];return _0x5bc226;};'use strict';var _=require(_0x3518('0x0'));var util=require(_0x3518('0x1'));var logger=require(_0x3518('0x2'))('api');var moment=require('moment');var BPromise=require(_0x3518('0x3'));var rp=require(_0x3518('0x4'));var fs=require('fs');var path=require(_0x3518('0x5'));var rimraf=require(_0x3518('0x6'));var config=require('../../config/environment');var attributes=require('./smsTransferReport.attributes');module[_0x3518('0x7')]=function(_0x1031a9,_0x2c019c){return _0x1031a9['define']('SmsTransferReport',attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0x3518('0x8'),'fields':[_0x3518('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfcbd=['report_sms_transfer','uniqueid','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsTransferReport.attributes','exports','define','SmsTransferReport'];(function(_0x2df507,_0x553862){var _0x1f7167=function(_0x11319e){while(--_0x11319e){_0x2df507['push'](_0x2df507['shift']());}};_0x1f7167(++_0x553862);}(_0xfcbd,0x160));var _0xdfcb=function(_0x2071cc,_0x5d728e){_0x2071cc=_0x2071cc-0x0;var _0x31aa5d=_0xfcbd[_0x2071cc];return _0x31aa5d;};'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':[{'name':_0xdfcb('0xd'),'fields':[_0xdfcb('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 8fc8601..c7db8c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c5a=['http','then','SmsTransferReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise'];(function(_0x503867,_0x2bb770){var _0x46291b=function(_0x3105cc){while(--_0x3105cc){_0x503867['push'](_0x503867['shift']());}};_0x46291b(++_0x2bb770);}(_0x9c5a,0x1c3));var _0xa9c5=function(_0x460cba,_0x12a425){_0x460cba=_0x460cba-0x0;var _0x5bd386=_0x9c5a[_0x460cba];return _0x5bd386;};'use strict';var _=require(_0xa9c5('0x0'));var util=require(_0xa9c5('0x1'));var moment=require('moment');var BPromise=require(_0xa9c5('0x2'));var rs=require(_0xa9c5('0x3'));var fs=require('fs');var Redis=require(_0xa9c5('0x4'));var db=require(_0xa9c5('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xa9c5('0x6'))(_0xa9c5('0x7'));var config=require('../../config/environment');var jayson=require(_0xa9c5('0x8'));var client=jayson['client'][_0xa9c5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3df556,_0x4cb597,_0x4b6db6){return new BPromise(function(_0x3d6b50,_0x16f331){return client['request'](_0x3df556,_0x4b6db6)[_0xa9c5('0xa')](function(_0x97f9e2){logger['info'](_0xa9c5('0xb'),_0x4cb597,_0xa9c5('0xc'));logger['debug']('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x4cb597,_0xa9c5('0xc'),JSON[_0xa9c5('0xd')](_0x97f9e2));if(_0x97f9e2[_0xa9c5('0xe')]){if(_0x97f9e2[_0xa9c5('0xe')][_0xa9c5('0xf')]===0x1f4){logger[_0xa9c5('0xe')](_0xa9c5('0xb'),_0x4cb597,_0x97f9e2[_0xa9c5('0xe')][_0xa9c5('0x10')]);return _0x16f331(_0x97f9e2[_0xa9c5('0xe')]['message']);}logger[_0xa9c5('0xe')](_0xa9c5('0xb'),_0x4cb597,_0x97f9e2[_0xa9c5('0xe')][_0xa9c5('0x10')]);return _0x3d6b50(_0x97f9e2[_0xa9c5('0xe')][_0xa9c5('0x10')]);}else{logger[_0xa9c5('0x11')](_0xa9c5('0xb'),_0x4cb597,_0xa9c5('0xc'));_0x3d6b50(_0x97f9e2[_0xa9c5('0x12')]['message']);}})[_0xa9c5('0x13')](function(_0xd85c32){logger[_0xa9c5('0xe')]('SmsTransferReport,\x20%s,\x20%s',_0x4cb597,_0xd85c32);_0x16f331(_0xd85c32);});});}
\ No newline at end of file
+var _0xeea0=['moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','SmsTransferReport,\x20%s,\x20%s','SmsTransferReport,\x20%s,\x20%s,\x20%s','error','request\x20sent','result','message','catch','lodash','util'];(function(_0x54308f,_0x50b987){var _0xfa519=function(_0x45d3bb){while(--_0x45d3bb){_0x54308f['push'](_0x54308f['shift']());}};_0xfa519(++_0x50b987);}(_0xeea0,0x91));var _0x0eea=function(_0x45f6de,_0x47c6a3){_0x45f6de=_0x45f6de-0x0;var _0x3f69f3=_0xeea0[_0x45f6de];return _0x3f69f3;};'use strict';var _=require(_0x0eea('0x0'));var util=require(_0x0eea('0x1'));var moment=require(_0x0eea('0x2'));var BPromise=require(_0x0eea('0x3'));var rs=require(_0x0eea('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0eea('0x5'))['db'];var utils=require(_0x0eea('0x6'));var logger=require(_0x0eea('0x7'))(_0x0eea('0x8'));var config=require(_0x0eea('0x9'));var jayson=require(_0x0eea('0xa'));var client=jayson[_0x0eea('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f8bc9,_0x470ef5,_0x121ab1){return new BPromise(function(_0x1704d4,_0x21d8ae){return client['request'](_0x1f8bc9,_0x121ab1)[_0x0eea('0xc')](function(_0x14fad3){logger[_0x0eea('0xd')](_0x0eea('0xe'),_0x470ef5,'request\x20sent');logger['debug'](_0x0eea('0xf'),_0x470ef5,'request\x20sent',JSON['stringify'](_0x14fad3));if(_0x14fad3[_0x0eea('0x10')]){if(_0x14fad3[_0x0eea('0x10')]['code']===0x1f4){logger[_0x0eea('0x10')]('SmsTransferReport,\x20%s,\x20%s',_0x470ef5,_0x14fad3[_0x0eea('0x10')]['message']);return _0x21d8ae(_0x14fad3[_0x0eea('0x10')]['message']);}logger['error'](_0x0eea('0xe'),_0x470ef5,_0x14fad3[_0x0eea('0x10')]['message']);return _0x1704d4(_0x14fad3['error']['message']);}else{logger[_0x0eea('0xd')](_0x0eea('0xe'),_0x470ef5,_0x0eea('0x11'));_0x1704d4(_0x14fad3[_0x0eea('0x12')][_0x0eea('0x13')]);}})[_0x0eea('0x14')](function(_0x53f990){logger[_0x0eea('0x10')](_0x0eea('0xe'),_0x470ef5,_0x53f990);_0x21d8ae(_0x53f990);});});}
\ No newline at end of file
index 3c66105..ee73696 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0c7=['create','put','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./sound.controller','get','index','/:id','isAuthenticated','show','/:id/download','download','diskStorage','join','root','server/files/sounds/original/','originalname','replace','format','%s-%s%s','extname','now','post','single','file'];(function(_0x18ea8a,_0x32f09f){var _0x19c99a=function(_0x21d8d6){while(--_0x21d8d6){_0x18ea8a['push'](_0x18ea8a['shift']());}};_0x19c99a(++_0x32f09f);}(_0xf0c7,0x6b));var _0x7f0c=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xf0c7[_0x19e35c];return _0x3e1fe8;};'use strict';var multer=require(_0x7f0c('0x0'));var util=require(_0x7f0c('0x1'));var path=require(_0x7f0c('0x2'));var timeout=require(_0x7f0c('0x3'));var express=require(_0x7f0c('0x4'));var router=express['Router']();var fs_extra=require(_0x7f0c('0x5'));var auth=require(_0x7f0c('0x6'));var interaction=require(_0x7f0c('0x7'));var config=require('../../config/environment');var controller=require(_0x7f0c('0x8'));router[_0x7f0c('0x9')]('/',auth['isAuthenticated'](),controller[_0x7f0c('0xa')]);router[_0x7f0c('0x9')](_0x7f0c('0xb'),auth[_0x7f0c('0xc')](),controller[_0x7f0c('0xd')]);router[_0x7f0c('0x9')](_0x7f0c('0xe'),auth[_0x7f0c('0xc')](),controller[_0x7f0c('0xf')]);var upload=multer({'storage':multer[_0x7f0c('0x10')]({'destination':function(_0x2f017b,_0xa0cee7,_0x28b095){_0x28b095(null,path[_0x7f0c('0x11')](config[_0x7f0c('0x12')],_0x7f0c('0x13')));},'filename':function(_0x1c24b5,_0x40d831,_0x45e44c){_0x40d831[_0x7f0c('0x14')]=_0x40d831['originalname'][_0x7f0c('0x15')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x45e44c(null,util[_0x7f0c('0x16')](_0x7f0c('0x17'),path['basename'](_0x40d831[_0x7f0c('0x14')],path[_0x7f0c('0x18')](_0x40d831[_0x7f0c('0x14')])),Date[_0x7f0c('0x19')](),path[_0x7f0c('0x18')](_0x40d831[_0x7f0c('0x14')])));}})});router[_0x7f0c('0x1a')]('/',upload[_0x7f0c('0x1b')](_0x7f0c('0x1c')),controller[_0x7f0c('0x1d')]);router[_0x7f0c('0x1e')]('/:id',auth['isAuthenticated'](),controller[_0x7f0c('0x1f')]);router[_0x7f0c('0x20')](_0x7f0c('0xb'),auth[_0x7f0c('0xc')](),controller['delete']);module[_0x7f0c('0x21')]=router;
\ No newline at end of file
+var _0x6e1d=['update','delete','exports','multer','util','path','connect-timeout','express','Router','../../config/environment','./sound.controller','isAuthenticated','get','/:id','show','/:id/download','download','diskStorage','join','root','originalname','replace','basename','extname','single','file','create','put'];(function(_0x38f76e,_0x3fab3b){var _0xe46e7d=function(_0x5ad872){while(--_0x5ad872){_0x38f76e['push'](_0x38f76e['shift']());}};_0xe46e7d(++_0x3fab3b);}(_0x6e1d,0x16f));var _0xd6e1=function(_0x202d24,_0x5e8641){_0x202d24=_0x202d24-0x0;var _0x2b3a8e=_0x6e1d[_0x202d24];return _0x2b3a8e;};'use strict';var multer=require(_0xd6e1('0x0'));var util=require(_0xd6e1('0x1'));var path=require(_0xd6e1('0x2'));var timeout=require(_0xd6e1('0x3'));var express=require(_0xd6e1('0x4'));var router=express[_0xd6e1('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xd6e1('0x6'));var controller=require(_0xd6e1('0x7'));router['get']('/',auth[_0xd6e1('0x8')](),controller['index']);router[_0xd6e1('0x9')](_0xd6e1('0xa'),auth[_0xd6e1('0x8')](),controller[_0xd6e1('0xb')]);router[_0xd6e1('0x9')](_0xd6e1('0xc'),auth[_0xd6e1('0x8')](),controller[_0xd6e1('0xd')]);var upload=multer({'storage':multer[_0xd6e1('0xe')]({'destination':function(_0x151e2f,_0x2b7870,_0x2760cd){_0x2760cd(null,path[_0xd6e1('0xf')](config[_0xd6e1('0x10')],'server/files/sounds/original/'));},'filename':function(_0x37bfb2,_0x168398,_0x4e37b1){_0x168398['originalname']=_0x168398[_0xd6e1('0x11')][_0xd6e1('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4e37b1(null,util['format']('%s-%s%s',path[_0xd6e1('0x13')](_0x168398[_0xd6e1('0x11')],path[_0xd6e1('0x14')](_0x168398[_0xd6e1('0x11')])),Date['now'](),path[_0xd6e1('0x14')](_0x168398[_0xd6e1('0x11')])));}})});router['post']('/',upload[_0xd6e1('0x15')](_0xd6e1('0x16')),controller[_0xd6e1('0x17')]);router[_0xd6e1('0x18')](_0xd6e1('0xa'),auth[_0xd6e1('0x8')](),controller[_0xd6e1('0x19')]);router[_0xd6e1('0x1a')](_0xd6e1('0xa'),auth[_0xd6e1('0x8')](),controller[_0xd6e1('0x1a')]);module[_0xd6e1('0x1b')]=router;
\ No newline at end of file
index d827679..da27077 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc6c=['BIGINT','INTEGER','sequelize','exports','STRING','FLOAT'];(function(_0x5235dd,_0x3f91cf){var _0x13059d=function(_0x355a98){while(--_0x355a98){_0x5235dd['push'](_0x5235dd['shift']());}};_0x13059d(++_0x3f91cf);}(_0xcc6c,0x188));var _0xccc6=function(_0x5d09f1,_0x300d1f){_0x5d09f1=_0x5d09f1-0x0;var _0x404fbd=_0xcc6c[_0x5d09f1];return _0x404fbd;};'use strict';var Sequelize=require(_0xccc6('0x0'));module[_0xccc6('0x1')]={'name':{'type':Sequelize[_0xccc6('0x2')],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize[_0xccc6('0x2')]},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize[_0xccc6('0x2')]},'original_duration':{'type':Sequelize[_0xccc6('0x3')]},'original_sampleCount':{'type':Sequelize[_0xccc6('0x4')]},'original_channelCount':{'type':Sequelize[_0xccc6('0x5')]},'original_bitRate':{'type':Sequelize[_0xccc6('0x4')]},'original_sampleRate':{'type':Sequelize[_0xccc6('0x5')]},'converted_format':{'type':Sequelize[_0xccc6('0x2')]},'converted_duration':{'type':Sequelize[_0xccc6('0x3')]},'converted_sampleCount':{'type':Sequelize[_0xccc6('0x4')]},'converted_channelCount':{'type':Sequelize[_0xccc6('0x5')]},'converted_bitRate':{'type':Sequelize['BIGINT']},'converted_sampleRate':{'type':Sequelize[_0xccc6('0x5')]}};
\ No newline at end of file
+var _0xa3bc=['sequelize','name','STRING','BIGINT','INTEGER'];(function(_0xb1a4df,_0xad7f78){var _0x4fbd06=function(_0x5481db){while(--_0x5481db){_0xb1a4df['push'](_0xb1a4df['shift']());}};_0x4fbd06(++_0xad7f78);}(_0xa3bc,0x131));var _0xca3b=function(_0x2ab7a8,_0x50746c){_0x2ab7a8=_0x2ab7a8-0x0;var _0x128405=_0xa3bc[_0x2ab7a8];return _0x128405;};'use strict';var Sequelize=require(_0xca3b('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xca3b('0x1'),'allowNull':![]},'save_name':{'type':Sequelize[_0xca3b('0x2')]},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize[_0xca3b('0x2')]},'original_duration':{'type':Sequelize['FLOAT']},'original_sampleCount':{'type':Sequelize[_0xca3b('0x3')]},'original_channelCount':{'type':Sequelize[_0xca3b('0x4')]},'original_bitRate':{'type':Sequelize[_0xca3b('0x3')]},'original_sampleRate':{'type':Sequelize[_0xca3b('0x4')]},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize['FLOAT']},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize[_0xca3b('0x4')]},'converted_bitRate':{'type':Sequelize[_0xca3b('0x3')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 5d01d96..a73e91d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc166=['description','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','ejs','fs-extra','squel','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','get','Sounds','then','error','stack','name','send','map','Sound','rawAttributes','type','key','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','includeAll','find','download','params','save_name','existsSync','join','root','server/files/sounds/converted','converted_format','Sequelize','Sound\x20not\x20found','%s.%s','create','file','originalname','extname','filename','wav','server/files/sounds/original','format','basename','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','transcode','unlinkSync','duration','channelCount','bitRate','original_sampleRate','sampleRate','converted_duration','converted_sampleCount','sampleCount','converted_channelCount','converted_bitRate','role','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start'];(function(_0x779e96,_0x12508f){var _0x3ce41e=function(_0x4c052){while(--_0x4c052){_0x779e96['push'](_0x779e96['shift']());}};_0x3ce41e(++_0x12508f);}(_0xc166,0xed));var _0x6c16=function(_0x299ef6,_0x2c5c69){_0x299ef6=_0x299ef6-0x0;var _0x97d27f=_0xc166[_0x299ef6];return _0x97d27f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6c16('0x0'));var zipdir=require(_0x6c16('0x1'));var jsonpatch=require(_0x6c16('0x2'));var rp=require(_0x6c16('0x3'));var moment=require(_0x6c16('0x4'));var BPromise=require(_0x6c16('0x5'));var Mustache=require(_0x6c16('0x6'));var util=require('util');var path=require(_0x6c16('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x6c16('0x8'));var fs=require('fs');var fs_extra=require(_0x6c16('0x9'));var _=require('lodash');var squel=require(_0x6c16('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x6c16('0xb'));var Redis=require('ioredis');var authService=require(_0x6c16('0xc'));var qs=require(_0x6c16('0xd'));var as=require(_0x6c16('0xe'));var hardwareService=require(_0x6c16('0xf'));var logger=require(_0x6c16('0x10'))(_0x6c16('0x11'));var utils=require(_0x6c16('0x12'));var config=require(_0x6c16('0x13'));var licenseUtil=require(_0x6c16('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1de2d6,_0x11a9d6){_0x11a9d6=_0x11a9d6||0xcc;return function(_0x49c4e0){if(_0x49c4e0){return _0x1de2d6[_0x6c16('0x15')](_0x11a9d6);}return _0x1de2d6[_0x6c16('0x16')](_0x11a9d6)[_0x6c16('0x17')]();};}function respondWithResult(_0x30906e,_0x4446ff){_0x4446ff=_0x4446ff||0xc8;return function(_0x168d23){if(_0x168d23){return _0x30906e['status'](_0x4446ff)[_0x6c16('0x18')](_0x168d23);}};}function respondWithFilteredResult(_0x1216e4,_0x97e0d4){return function(_0xcb8ed7){if(_0xcb8ed7){var _0xc5db26=typeof _0x97e0d4[_0x6c16('0x19')]===_0x6c16('0x1a')&&typeof _0x97e0d4[_0x6c16('0x1b')]===_0x6c16('0x1a');var _0x12ab03=_0xcb8ed7[_0x6c16('0x1c')];var _0x159728=_0xc5db26?0x0:_0x97e0d4[_0x6c16('0x19')];var _0x4c268d=_0xc5db26?_0xcb8ed7['count']:_0x97e0d4[_0x6c16('0x19')]+_0x97e0d4['limit'];var _0xe4fd56;if(_0x4c268d>=_0x12ab03){_0x4c268d=_0x12ab03;_0xe4fd56=0xc8;}else{_0xe4fd56=0xce;}_0x1216e4[_0x6c16('0x16')](_0xe4fd56);return _0x1216e4[_0x6c16('0x1d')](_0x6c16('0x1e'),_0x159728+'-'+_0x4c268d+'/'+_0x12ab03)[_0x6c16('0x18')](_0xcb8ed7);}return null;};}function patchUpdates(_0x7554ec){return function(_0x10d419){try{jsonpatch['apply'](_0x10d419,_0x7554ec,!![]);}catch(_0x572368){return BPromise[_0x6c16('0x1f')](_0x572368);}return _0x10d419[_0x6c16('0x20')]();};}function saveUpdates(_0x2cd19e,_0x3b77ea){return function(_0x3f2852){if(_0x3f2852){return _0x3f2852[_0x6c16('0x21')](_0x2cd19e)['then'](function(_0x2dd19b){return _0x2dd19b;});}return null;};}function removeEntity(_0x4e2f19,_0xe18c7a){return function(_0x4a5de1){if(_0x4a5de1){return _0x4a5de1[_0x6c16('0x22')]()['then'](function(){var _0xae63f3=_0x4a5de1[_0x6c16('0x23')]({'plain':!![]});var _0x407a3e=_0x6c16('0x24');return db['UserProfileResource'][_0x6c16('0x22')]({'where':{'type':_0x407a3e,'resourceId':_0xae63f3['id']}})[_0x6c16('0x25')](function(){return _0x4a5de1;});})[_0x6c16('0x25')](function(){_0x4e2f19[_0x6c16('0x16')](0xcc)[_0x6c16('0x17')]();});}};}function handleEntityNotFound(_0x5059a3,_0x384464){return function(_0x19a95d){if(!_0x19a95d){_0x5059a3[_0x6c16('0x15')](0x194);}return _0x19a95d;};}function handleError(_0x2de66f,_0x3d772b){_0x3d772b=_0x3d772b||0x1f4;return function(_0x51ca68){logger[_0x6c16('0x26')](_0x51ca68[_0x6c16('0x27')]);if(_0x51ca68[_0x6c16('0x28')]){delete _0x51ca68[_0x6c16('0x28')];}_0x2de66f['status'](_0x3d772b)[_0x6c16('0x29')](_0x51ca68);};}exports['index']=function(_0x36f85b,_0x2cee8b){var _0x570f54={},_0x50e5ee={},_0x29a5ba={'count':0x0,'rows':[]};var _0x1127cc=_[_0x6c16('0x2a')](db[_0x6c16('0x2b')][_0x6c16('0x2c')],function(_0x12ff4f){return{'name':_0x12ff4f['fieldName'],'type':_0x12ff4f[_0x6c16('0x2d')][_0x6c16('0x2e')]};});_0x50e5ee['model']=_[_0x6c16('0x2a')](_0x1127cc,_0x6c16('0x28'));_0x50e5ee[_0x6c16('0x2f')]=_[_0x6c16('0x30')](_0x36f85b[_0x6c16('0x2f')]);_0x50e5ee['filters']=_[_0x6c16('0x31')](_0x50e5ee[_0x6c16('0x32')],_0x50e5ee[_0x6c16('0x2f')]);_0x570f54['attributes']=_[_0x6c16('0x31')](_0x50e5ee[_0x6c16('0x32')],qs[_0x6c16('0x33')](_0x36f85b[_0x6c16('0x2f')][_0x6c16('0x33')]));_0x570f54['attributes']=_0x570f54[_0x6c16('0x34')][_0x6c16('0x35')]?_0x570f54['attributes']:_0x50e5ee['model'];if(!_0x36f85b[_0x6c16('0x2f')][_0x6c16('0x36')](_0x6c16('0x37'))){_0x570f54['limit']=qs[_0x6c16('0x1b')](_0x36f85b[_0x6c16('0x2f')][_0x6c16('0x1b')]);_0x570f54['offset']=qs[_0x6c16('0x19')](_0x36f85b[_0x6c16('0x2f')]['offset']);}_0x570f54['order']=qs[_0x6c16('0x38')](_0x36f85b[_0x6c16('0x2f')]['sort']);_0x570f54[_0x6c16('0x39')]=qs[_0x6c16('0x3a')](_[_0x6c16('0x3b')](_0x36f85b[_0x6c16('0x2f')],_0x50e5ee[_0x6c16('0x3a')]),_0x1127cc);if(_0x36f85b[_0x6c16('0x2f')][_0x6c16('0x3c')]){_0x570f54['where']=_[_0x6c16('0x3d')](_0x570f54[_0x6c16('0x39')],{'$or':_[_0x6c16('0x2a')](_0x1127cc,function(_0x286f94){if(_0x286f94[_0x6c16('0x2d')]!==_0x6c16('0x3e')){var _0x11cfb6={};_0x11cfb6[_0x286f94[_0x6c16('0x28')]]={'$like':'%'+_0x36f85b[_0x6c16('0x2f')]['filter']+'%'};return _0x11cfb6;}})});}_0x570f54=_['merge']({},_0x570f54,_0x36f85b[_0x6c16('0x3f')]);var _0x397526={'where':_0x570f54[_0x6c16('0x39')]};return db[_0x6c16('0x2b')]['count'](_0x397526)[_0x6c16('0x25')](function(_0x269c0d){_0x29a5ba[_0x6c16('0x1c')]=_0x269c0d;if(_0x36f85b[_0x6c16('0x2f')]['includeAll']){_0x570f54[_0x6c16('0x40')]=[{'all':!![]}];}return db[_0x6c16('0x2b')][_0x6c16('0x41')](_0x570f54);})[_0x6c16('0x25')](function(_0x3effcb){_0x29a5ba[_0x6c16('0x42')]=_0x3effcb;return _0x29a5ba;})[_0x6c16('0x25')](respondWithFilteredResult(_0x2cee8b,_0x570f54))[_0x6c16('0x43')](handleError(_0x2cee8b,null));};exports[_0x6c16('0x44')]=function(_0x59edf6,_0x338afe){var _0x5e9a86={'raw':!![],'where':{'id':_0x59edf6['params']['id']}},_0x3f5791={};_0x3f5791[_0x6c16('0x32')]=_[_0x6c16('0x30')](db[_0x6c16('0x2b')][_0x6c16('0x2c')]);_0x3f5791[_0x6c16('0x2f')]=_[_0x6c16('0x30')](_0x59edf6[_0x6c16('0x2f')]);_0x3f5791[_0x6c16('0x3a')]=_[_0x6c16('0x31')](_0x3f5791[_0x6c16('0x32')],_0x3f5791[_0x6c16('0x2f')]);_0x5e9a86[_0x6c16('0x34')]=_[_0x6c16('0x31')](_0x3f5791[_0x6c16('0x32')],qs[_0x6c16('0x33')](_0x59edf6[_0x6c16('0x2f')][_0x6c16('0x33')]));_0x5e9a86[_0x6c16('0x34')]=_0x5e9a86[_0x6c16('0x34')][_0x6c16('0x35')]?_0x5e9a86[_0x6c16('0x34')]:_0x3f5791[_0x6c16('0x32')];if(_0x59edf6[_0x6c16('0x2f')][_0x6c16('0x45')]){_0x5e9a86[_0x6c16('0x40')]=[{'all':!![]}];}_0x5e9a86=_[_0x6c16('0x3d')]({},_0x5e9a86,_0x59edf6['options']);return db[_0x6c16('0x2b')][_0x6c16('0x46')](_0x5e9a86)[_0x6c16('0x25')](handleEntityNotFound(_0x338afe,null))[_0x6c16('0x25')](respondWithResult(_0x338afe,null))[_0x6c16('0x43')](handleError(_0x338afe,null));};exports[_0x6c16('0x47')]=function(_0x18372a,_0x41a190,_0x46620e){return db[_0x6c16('0x2b')][_0x6c16('0x46')]({'where':{'id':_0x18372a[_0x6c16('0x48')]['id']},'attributes':[_0x6c16('0x28'),_0x6c16('0x49'),'converted_format'],'raw':!![]})['then'](handleEntityNotFound(_0x41a190,null))[_0x6c16('0x25')](function(_0x266550){if(_0x266550){if(!fs[_0x6c16('0x4a')](path[_0x6c16('0x4b')](config[_0x6c16('0x4c')],_0x6c16('0x4d'),_0x266550['save_name']+'.'+_0x266550[_0x6c16('0x4e')]))){throw new db[(_0x6c16('0x4f'))]['ValidationError'](_0x6c16('0x50'));}return _0x41a190[_0x6c16('0x47')](path[_0x6c16('0x4b')](config[_0x6c16('0x4c')],_0x6c16('0x4d'),util['format'](_0x6c16('0x51'),_0x266550[_0x6c16('0x49')],_0x266550[_0x6c16('0x4e')])),util['format'](_0x6c16('0x51'),_0x266550['name'],_0x266550[_0x6c16('0x4e')]));}return null;})[_0x6c16('0x43')](handleError(_0x41a190,null));};exports[_0x6c16('0x52')]=function(_0x4c1531,_0x57c63c,_0x46eccd){var _0x4feec0={'name':path['basename'](_0x4c1531[_0x6c16('0x53')][_0x6c16('0x54')],path[_0x6c16('0x55')](_0x4c1531['file'][_0x6c16('0x54')])),'save_name':path['basename'](_0x4c1531[_0x6c16('0x53')]['filename'],path['extname'](_0x4c1531[_0x6c16('0x53')][_0x6c16('0x56')])),'original_format':path[_0x6c16('0x55')](_0x4c1531[_0x6c16('0x53')][_0x6c16('0x54')])['substring'](0x1),'converted_format':_0x6c16('0x57')};var _0x564d72=path[_0x6c16('0x4b')](config[_0x6c16('0x4c')],_0x6c16('0x58'),_0x4c1531['file'][_0x6c16('0x56')]);var _0x48462c=path['join'](config[_0x6c16('0x4c')],_0x6c16('0x4d'),util[_0x6c16('0x59')]('%s.%s',path[_0x6c16('0x5a')](_0x4c1531[_0x6c16('0x53')][_0x6c16('0x56')],path[_0x6c16('0x55')](_0x4c1531[_0x6c16('0x53')]['filename'])),_0x4feec0[_0x6c16('0x4e')]));logger[_0x6c16('0x5b')](_0x6c16('0x5c'),_0x564d72);logger['info'](_0x6c16('0x5d'),_0x48462c);try{fs[_0x6c16('0x5e')](_0x564d72,parseInt('0777',0x8));var _0x1e3ab5=sox[_0x6c16('0x5f')](_0x564d72,_0x48462c,{'sampleRate':0x1f40,'format':_0x6c16('0x57'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1e3ab5['on'](_0x6c16('0x26'),function(_0x372e02){fs[_0x6c16('0x60')](_0x564d72);_0x57c63c['status'](0x1f4)[_0x6c16('0x29')](_0x372e02);});_0x1e3ab5['on']('src',function(_0x454eab){_0x4feec0['original_duration']=isNaN(_0x454eab[_0x6c16('0x61')])?null:_0x454eab[_0x6c16('0x61')]*0x3e8;_0x4feec0['original_sampleCount']=isNaN(_0x454eab['sampleCount'])?null:_0x454eab['sampleCount'];_0x4feec0['original_channelCount']=isNaN(_0x454eab['channelCount'])?null:_0x454eab[_0x6c16('0x62')];_0x4feec0['original_bitRate']=isNaN(_0x454eab[_0x6c16('0x63')])?null:_0x454eab[_0x6c16('0x63')];_0x4feec0[_0x6c16('0x64')]=isNaN(_0x454eab[_0x6c16('0x65')])?null:_0x454eab[_0x6c16('0x65')];});_0x1e3ab5['on']('dest',function(_0x49024d){_0x4feec0[_0x6c16('0x66')]=isNaN(_0x49024d[_0x6c16('0x61')])?null:_0x49024d[_0x6c16('0x61')]*0x3e8;_0x4feec0[_0x6c16('0x67')]=isNaN(_0x49024d[_0x6c16('0x68')])?null:_0x49024d[_0x6c16('0x68')];_0x4feec0[_0x6c16('0x69')]=isNaN(_0x49024d[_0x6c16('0x62')])?null:_0x49024d['channelCount'];_0x4feec0[_0x6c16('0x6a')]=isNaN(_0x49024d[_0x6c16('0x63')])?null:_0x49024d['bitRate'];_0x4feec0['converted_sampleRate']=isNaN(_0x49024d[_0x6c16('0x65')])?null:_0x49024d['sampleRate'];});_0x1e3ab5['on']('end',function(){fs[_0x6c16('0x5e')](_0x48462c,parseInt('0777',0x8));return db[_0x6c16('0x2b')][_0x6c16('0x52')](_0x4feec0)['then'](function(_0x5b0cad){var _0x2477c7={'role':_0x4c1531['body'][_0x6c16('0x6b')],'userProfileId':_0x4c1531[_0x6c16('0x6c')]['userProfileId']};if(!_0x2477c7)throw new Error(_0x6c16('0x6d'));if(_0x2477c7['role']===_0x6c16('0x6e')){var _0xab3df=_0x5b0cad['get']({'plain':!![]});return db[_0x6c16('0x6f')][_0x6c16('0x46')]({'where':{'name':_0x6c16('0x24'),'userProfileId':_0x2477c7[_0x6c16('0x70')]},'raw':!![]})[_0x6c16('0x25')](function(_0x1d3049){if(_0x1d3049&&_0x1d3049[_0x6c16('0x71')]===0x0){return db[_0x6c16('0x72')][_0x6c16('0x52')]({'name':_0xab3df[_0x6c16('0x28')],'resourceId':_0xab3df['id'],'type':_0x1d3049[_0x6c16('0x28')],'sectionId':_0x1d3049['id']},{})[_0x6c16('0x25')](function(){return _0x5b0cad;});}else{return _0x5b0cad;}})[_0x6c16('0x43')](function(_0x117360){logger[_0x6c16('0x26')](_0x6c16('0x73'),_0x117360);throw _0x117360;});}return _0x5b0cad;})[_0x6c16('0x25')](respondWithResult(_0x57c63c,null))[_0x6c16('0x43')](handleError(_0x57c63c,null));});_0x1e3ab5[_0x6c16('0x74')]();}catch(_0x2404ae){_0x57c63c[_0x6c16('0x16')](0x1f4)[_0x6c16('0x29')](_0x2404ae);}};exports['update']=function(_0x440fe5,_0xb29f88,_0x1c9a4f){return db[_0x6c16('0x2b')][_0x6c16('0x46')]({'where':{'id':_0x440fe5[_0x6c16('0x48')]['id']}})[_0x6c16('0x25')](handleEntityNotFound(_0xb29f88,null))[_0x6c16('0x25')](saveUpdates(_['pick'](_0x440fe5[_0x6c16('0x6c')],[_0x6c16('0x28'),_0x6c16('0x75')]),null))[_0x6c16('0x25')](respondWithResult(_0xb29f88,null))[_0x6c16('0x43')](handleError(_0xb29f88,null));};exports['delete']=function(_0xd74a15,_0xe99b47,_0xb09d62){return db[_0x6c16('0x2b')][_0x6c16('0x46')]({'where':{'id':_0xd74a15['params']['id']}})[_0x6c16('0x25')](function(_0x131d5b){if(_0x131d5b){return _0x131d5b[_0x6c16('0x22')]();}})[_0x6c16('0x25')](function(_0x430c7a){var _0x547599=path[_0x6c16('0x4b')](config['root'],_0x6c16('0x58'),util['format'](_0x6c16('0x51'),_0x430c7a[_0x6c16('0x49')],_0x430c7a['original_format']));var _0x9b431c=path['join'](config['root'],'server/files/sounds/converted',util['format'](_0x6c16('0x51'),_0x430c7a[_0x6c16('0x49')],_0x430c7a[_0x6c16('0x4e')]));fs[_0x6c16('0x60')](_0x547599);fs[_0x6c16('0x60')](_0x9b431c);return _0x430c7a;})[_0x6c16('0x25')](function(_0xeb80e9){if(_0xeb80e9){return _0xe99b47[_0x6c16('0x16')](0xcc)[_0x6c16('0x17')]();}})['then'](handleEntityNotFound(_0xe99b47,null))[_0x6c16('0x43')](handleError(_0xe99b47,null));};
\ No newline at end of file
+var _0x508c=['rawAttributes','fieldName','type','key','model','query','keys','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','include','findAll','catch','show','intersection','includeAll','options','find','download','params','save_name','converted_format','root','server/files/sounds/converted','ValidationError','join','format','%s.%s','create','basename','file','extname','originalname','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','0777','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','converted_duration','converted_sampleCount','converted_channelCount','chmodSync','role','body','userProfileId','user','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','delete','original_format','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','destroy','then','get','Sounds','UserProfileResource','name','map','Sound'];(function(_0x64b84b,_0x5ee3c9){var _0xaaac2=function(_0x986e39){while(--_0x986e39){_0x64b84b['push'](_0x64b84b['shift']());}};_0xaaac2(++_0x5ee3c9);}(_0x508c,0xcb));var _0xc508=function(_0x2239c6,_0x43d551){_0x2239c6=_0x2239c6-0x0;var _0xc9ca7b=_0x508c[_0x2239c6];return _0xc9ca7b;};'use strict';var emlformat=require(_0xc508('0x0'));var rimraf=require(_0xc508('0x1'));var zipdir=require(_0xc508('0x2'));var jsonpatch=require(_0xc508('0x3'));var rp=require(_0xc508('0x4'));var moment=require(_0xc508('0x5'));var BPromise=require(_0xc508('0x6'));var Mustache=require(_0xc508('0x7'));var util=require(_0xc508('0x8'));var path=require(_0xc508('0x9'));var sox=require('sox');var csv=require(_0xc508('0xa'));var ejs=require(_0xc508('0xb'));var fs=require('fs');var fs_extra=require(_0xc508('0xc'));var _=require(_0xc508('0xd'));var squel=require(_0xc508('0xe'));var crypto=require(_0xc508('0xf'));var jsforce=require('jsforce');var deskjs=require(_0xc508('0x10'));var toCsv=require(_0xc508('0xa'));var querystring=require(_0xc508('0x11'));var Papa=require('papaparse');var Redis=require(_0xc508('0x12'));var authService=require(_0xc508('0x13'));var qs=require(_0xc508('0x14'));var as=require(_0xc508('0x15'));var hardwareService=require(_0xc508('0x16'));var logger=require(_0xc508('0x17'))(_0xc508('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc508('0x19'))['db'];function respondWithStatusCode(_0xe219a9,_0x465c62){_0x465c62=_0x465c62||0xcc;return function(_0x5a73c2){if(_0x5a73c2){return _0xe219a9[_0xc508('0x1a')](_0x465c62);}return _0xe219a9[_0xc508('0x1b')](_0x465c62)[_0xc508('0x1c')]();};}function respondWithResult(_0x3da75a,_0x1b4658){_0x1b4658=_0x1b4658||0xc8;return function(_0x4bd1ac){if(_0x4bd1ac){return _0x3da75a['status'](_0x1b4658)[_0xc508('0x1d')](_0x4bd1ac);}};}function respondWithFilteredResult(_0x447e14,_0x1c2f8e){return function(_0x1e81b1){if(_0x1e81b1){var _0x56ced8=typeof _0x1c2f8e[_0xc508('0x1e')]==='undefined'&&typeof _0x1c2f8e[_0xc508('0x1f')]===_0xc508('0x20');var _0x13678a=_0x1e81b1[_0xc508('0x21')];var _0x5c9138=_0x56ced8?0x0:_0x1c2f8e['offset'];var _0x417b0d=_0x56ced8?_0x1e81b1[_0xc508('0x21')]:_0x1c2f8e['offset']+_0x1c2f8e[_0xc508('0x1f')];var _0x33f5c6;if(_0x417b0d>=_0x13678a){_0x417b0d=_0x13678a;_0x33f5c6=0xc8;}else{_0x33f5c6=0xce;}_0x447e14[_0xc508('0x1b')](_0x33f5c6);return _0x447e14[_0xc508('0x22')](_0xc508('0x23'),_0x5c9138+'-'+_0x417b0d+'/'+_0x13678a)[_0xc508('0x1d')](_0x1e81b1);}return null;};}function patchUpdates(_0x54a0b9){return function(_0x4c5ba2){try{jsonpatch[_0xc508('0x24')](_0x4c5ba2,_0x54a0b9,!![]);}catch(_0x1b7a6c){return BPromise[_0xc508('0x25')](_0x1b7a6c);}return _0x4c5ba2['save']();};}function saveUpdates(_0x35149a,_0x5deea4){return function(_0x2b62f4){if(_0x2b62f4){return _0x2b62f4[_0xc508('0x26')](_0x35149a)['then'](function(_0x3927e4){return _0x3927e4;});}return null;};}function removeEntity(_0xc2fe4a,_0x163949){return function(_0x4d4a82){if(_0x4d4a82){return _0x4d4a82[_0xc508('0x27')]()[_0xc508('0x28')](function(){var _0x19383f=_0x4d4a82[_0xc508('0x29')]({'plain':!![]});var _0x30fe73=_0xc508('0x2a');return db[_0xc508('0x2b')]['destroy']({'where':{'type':_0x30fe73,'resourceId':_0x19383f['id']}})[_0xc508('0x28')](function(){return _0x4d4a82;});})[_0xc508('0x28')](function(){_0xc2fe4a['status'](0xcc)[_0xc508('0x1c')]();});}};}function handleEntityNotFound(_0x3e060e,_0x293d29){return function(_0x34a839){if(!_0x34a839){_0x3e060e[_0xc508('0x1a')](0x194);}return _0x34a839;};}function handleError(_0x9d2229,_0x1d9a05){_0x1d9a05=_0x1d9a05||0x1f4;return function(_0x3aaa7a){logger['error'](_0x3aaa7a['stack']);if(_0x3aaa7a[_0xc508('0x2c')]){delete _0x3aaa7a[_0xc508('0x2c')];}_0x9d2229[_0xc508('0x1b')](_0x1d9a05)['send'](_0x3aaa7a);};}exports['index']=function(_0x4fc7c3,_0x4150d9){var _0x2f4798={},_0x4a24c6={},_0x562a0c={'count':0x0,'rows':[]};var _0x2b1f08=_[_0xc508('0x2d')](db[_0xc508('0x2e')][_0xc508('0x2f')],function(_0x5dbc9e){return{'name':_0x5dbc9e[_0xc508('0x30')],'type':_0x5dbc9e[_0xc508('0x31')][_0xc508('0x32')]};});_0x4a24c6[_0xc508('0x33')]=_[_0xc508('0x2d')](_0x2b1f08,'name');_0x4a24c6[_0xc508('0x34')]=_[_0xc508('0x35')](_0x4fc7c3[_0xc508('0x34')]);_0x4a24c6['filters']=_['intersection'](_0x4a24c6[_0xc508('0x33')],_0x4a24c6['query']);_0x2f4798['attributes']=_['intersection'](_0x4a24c6[_0xc508('0x33')],qs[_0xc508('0x36')](_0x4fc7c3[_0xc508('0x34')][_0xc508('0x36')]));_0x2f4798[_0xc508('0x37')]=_0x2f4798['attributes'][_0xc508('0x38')]?_0x2f4798['attributes']:_0x4a24c6['model'];if(!_0x4fc7c3[_0xc508('0x34')][_0xc508('0x39')](_0xc508('0x3a'))){_0x2f4798[_0xc508('0x1f')]=qs[_0xc508('0x1f')](_0x4fc7c3['query']['limit']);_0x2f4798[_0xc508('0x1e')]=qs['offset'](_0x4fc7c3[_0xc508('0x34')]['offset']);}_0x2f4798[_0xc508('0x3b')]=qs[_0xc508('0x3c')](_0x4fc7c3[_0xc508('0x34')][_0xc508('0x3c')]);_0x2f4798[_0xc508('0x3d')]=qs[_0xc508('0x3e')](_[_0xc508('0x3f')](_0x4fc7c3[_0xc508('0x34')],_0x4a24c6[_0xc508('0x3e')]),_0x2b1f08);if(_0x4fc7c3[_0xc508('0x34')][_0xc508('0x40')]){_0x2f4798[_0xc508('0x3d')]=_['merge'](_0x2f4798[_0xc508('0x3d')],{'$or':_['map'](_0x2b1f08,function(_0x486a6e){if(_0x486a6e['type']!==_0xc508('0x41')){var _0x368772={};_0x368772[_0x486a6e['name']]={'$like':'%'+_0x4fc7c3[_0xc508('0x34')][_0xc508('0x40')]+'%'};return _0x368772;}})});}_0x2f4798=_[_0xc508('0x42')]({},_0x2f4798,_0x4fc7c3['options']);var _0x113096={'where':_0x2f4798[_0xc508('0x3d')]};return db[_0xc508('0x2e')][_0xc508('0x21')](_0x113096)[_0xc508('0x28')](function(_0x26a2d5){_0x562a0c[_0xc508('0x21')]=_0x26a2d5;if(_0x4fc7c3['query']['includeAll']){_0x2f4798[_0xc508('0x43')]=[{'all':!![]}];}return db[_0xc508('0x2e')][_0xc508('0x44')](_0x2f4798);})[_0xc508('0x28')](function(_0x50945f){_0x562a0c['rows']=_0x50945f;return _0x562a0c;})[_0xc508('0x28')](respondWithFilteredResult(_0x4150d9,_0x2f4798))[_0xc508('0x45')](handleError(_0x4150d9,null));};exports[_0xc508('0x46')]=function(_0x1681b3,_0x4a3ef8){var _0x448ce7={'raw':!![],'where':{'id':_0x1681b3['params']['id']}},_0x3a60f6={};_0x3a60f6[_0xc508('0x33')]=_[_0xc508('0x35')](db[_0xc508('0x2e')][_0xc508('0x2f')]);_0x3a60f6[_0xc508('0x34')]=_['keys'](_0x1681b3[_0xc508('0x34')]);_0x3a60f6[_0xc508('0x3e')]=_['intersection'](_0x3a60f6[_0xc508('0x33')],_0x3a60f6[_0xc508('0x34')]);_0x448ce7[_0xc508('0x37')]=_[_0xc508('0x47')](_0x3a60f6[_0xc508('0x33')],qs[_0xc508('0x36')](_0x1681b3['query'][_0xc508('0x36')]));_0x448ce7[_0xc508('0x37')]=_0x448ce7[_0xc508('0x37')][_0xc508('0x38')]?_0x448ce7[_0xc508('0x37')]:_0x3a60f6[_0xc508('0x33')];if(_0x1681b3['query'][_0xc508('0x48')]){_0x448ce7[_0xc508('0x43')]=[{'all':!![]}];}_0x448ce7=_[_0xc508('0x42')]({},_0x448ce7,_0x1681b3[_0xc508('0x49')]);return db[_0xc508('0x2e')][_0xc508('0x4a')](_0x448ce7)['then'](handleEntityNotFound(_0x4a3ef8,null))[_0xc508('0x28')](respondWithResult(_0x4a3ef8,null))[_0xc508('0x45')](handleError(_0x4a3ef8,null));};exports[_0xc508('0x4b')]=function(_0x47fc4c,_0x1cbffc,_0x21ede1){return db['Sound'][_0xc508('0x4a')]({'where':{'id':_0x47fc4c[_0xc508('0x4c')]['id']},'attributes':[_0xc508('0x2c'),_0xc508('0x4d'),_0xc508('0x4e')],'raw':!![]})[_0xc508('0x28')](handleEntityNotFound(_0x1cbffc,null))[_0xc508('0x28')](function(_0x5d11f6){if(_0x5d11f6){if(!fs['existsSync'](path['join'](config[_0xc508('0x4f')],_0xc508('0x50'),_0x5d11f6[_0xc508('0x4d')]+'.'+_0x5d11f6[_0xc508('0x4e')]))){throw new db['Sequelize'][(_0xc508('0x51'))]('Sound\x20not\x20found');}return _0x1cbffc['download'](path[_0xc508('0x52')](config[_0xc508('0x4f')],_0xc508('0x50'),util[_0xc508('0x53')](_0xc508('0x54'),_0x5d11f6['save_name'],_0x5d11f6[_0xc508('0x4e')])),util['format'](_0xc508('0x54'),_0x5d11f6[_0xc508('0x2c')],_0x5d11f6[_0xc508('0x4e')]));}return null;})[_0xc508('0x45')](handleError(_0x1cbffc,null));};exports[_0xc508('0x55')]=function(_0xfbb1fe,_0x2aba31,_0x264b67){var _0x5f3283={'name':path[_0xc508('0x56')](_0xfbb1fe[_0xc508('0x57')]['originalname'],path[_0xc508('0x58')](_0xfbb1fe[_0xc508('0x57')][_0xc508('0x59')])),'save_name':path[_0xc508('0x56')](_0xfbb1fe[_0xc508('0x57')][_0xc508('0x5a')],path[_0xc508('0x58')](_0xfbb1fe[_0xc508('0x57')]['filename'])),'original_format':path[_0xc508('0x58')](_0xfbb1fe[_0xc508('0x57')]['originalname'])[_0xc508('0x5b')](0x1),'converted_format':_0xc508('0x5c')};var _0x4e734e=path[_0xc508('0x52')](config[_0xc508('0x4f')],_0xc508('0x5d'),_0xfbb1fe[_0xc508('0x57')][_0xc508('0x5a')]);var _0x22ed35=path['join'](config[_0xc508('0x4f')],_0xc508('0x50'),util['format'](_0xc508('0x54'),path[_0xc508('0x56')](_0xfbb1fe[_0xc508('0x57')]['filename'],path[_0xc508('0x58')](_0xfbb1fe[_0xc508('0x57')][_0xc508('0x5a')])),_0x5f3283[_0xc508('0x4e')]));logger[_0xc508('0x5e')](_0xc508('0x5f'),_0x4e734e);logger[_0xc508('0x5e')](_0xc508('0x60'),_0x22ed35);try{fs['chmodSync'](_0x4e734e,parseInt(_0xc508('0x61'),0x8));var _0x2c47a5=sox['transcode'](_0x4e734e,_0x22ed35,{'sampleRate':0x1f40,'format':_0xc508('0x5c'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2c47a5['on']('error',function(_0x54955f){fs[_0xc508('0x62')](_0x4e734e);_0x2aba31[_0xc508('0x1b')](0x1f4)['send'](_0x54955f);});_0x2c47a5['on'](_0xc508('0x63'),function(_0x12bbec){_0x5f3283[_0xc508('0x64')]=isNaN(_0x12bbec[_0xc508('0x65')])?null:_0x12bbec[_0xc508('0x65')]*0x3e8;_0x5f3283[_0xc508('0x66')]=isNaN(_0x12bbec[_0xc508('0x67')])?null:_0x12bbec[_0xc508('0x67')];_0x5f3283[_0xc508('0x68')]=isNaN(_0x12bbec[_0xc508('0x69')])?null:_0x12bbec['channelCount'];_0x5f3283[_0xc508('0x6a')]=isNaN(_0x12bbec[_0xc508('0x6b')])?null:_0x12bbec['bitRate'];_0x5f3283[_0xc508('0x6c')]=isNaN(_0x12bbec[_0xc508('0x6d')])?null:_0x12bbec[_0xc508('0x6d')];});_0x2c47a5['on']('dest',function(_0x134c63){_0x5f3283[_0xc508('0x6e')]=isNaN(_0x134c63[_0xc508('0x65')])?null:_0x134c63[_0xc508('0x65')]*0x3e8;_0x5f3283[_0xc508('0x6f')]=isNaN(_0x134c63[_0xc508('0x67')])?null:_0x134c63['sampleCount'];_0x5f3283[_0xc508('0x70')]=isNaN(_0x134c63[_0xc508('0x69')])?null:_0x134c63[_0xc508('0x69')];_0x5f3283['converted_bitRate']=isNaN(_0x134c63['bitRate'])?null:_0x134c63[_0xc508('0x6b')];_0x5f3283['converted_sampleRate']=isNaN(_0x134c63['sampleRate'])?null:_0x134c63[_0xc508('0x6d')];});_0x2c47a5['on'](_0xc508('0x1c'),function(){fs[_0xc508('0x71')](_0x22ed35,parseInt(_0xc508('0x61'),0x8));return db[_0xc508('0x2e')][_0xc508('0x55')](_0x5f3283)[_0xc508('0x28')](function(_0x39bda8){var _0x46a011={'role':_0xfbb1fe['body'][_0xc508('0x72')],'userProfileId':_0xfbb1fe[_0xc508('0x73')][_0xc508('0x74')]};if(!_0x46a011)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x46a011['role']===_0xc508('0x75')){var _0x5378e3=_0x39bda8[_0xc508('0x29')]({'plain':!![]});return db['UserProfileSection'][_0xc508('0x4a')]({'where':{'name':_0xc508('0x2a'),'userProfileId':_0x46a011['userProfileId']},'raw':!![]})[_0xc508('0x28')](function(_0x48263f){if(_0x48263f&&_0x48263f[_0xc508('0x76')]===0x0){return db[_0xc508('0x2b')]['create']({'name':_0x5378e3[_0xc508('0x2c')],'resourceId':_0x5378e3['id'],'type':_0x48263f[_0xc508('0x2c')],'sectionId':_0x48263f['id']},{})['then'](function(){return _0x39bda8;});}else{return _0x39bda8;}})[_0xc508('0x45')](function(_0x6d5936){logger[_0xc508('0x77')](_0xc508('0x78'),_0x6d5936);throw _0x6d5936;});}return _0x39bda8;})[_0xc508('0x28')](respondWithResult(_0x2aba31,null))[_0xc508('0x45')](handleError(_0x2aba31,null));});_0x2c47a5[_0xc508('0x79')]();}catch(_0x4870af){_0x2aba31[_0xc508('0x1b')](0x1f4)['send'](_0x4870af);}};exports['update']=function(_0x25da9a,_0x53dfb3,_0x22ae59){return db[_0xc508('0x2e')][_0xc508('0x4a')]({'where':{'id':_0x25da9a['params']['id']}})[_0xc508('0x28')](handleEntityNotFound(_0x53dfb3,null))[_0xc508('0x28')](saveUpdates(_[_0xc508('0x3f')](_0x25da9a[_0xc508('0x73')],['name',_0xc508('0x7a')]),null))[_0xc508('0x28')](respondWithResult(_0x53dfb3,null))[_0xc508('0x45')](handleError(_0x53dfb3,null));};exports[_0xc508('0x7b')]=function(_0x420ad3,_0x11d442,_0x55ac85){return db['Sound'][_0xc508('0x4a')]({'where':{'id':_0x420ad3[_0xc508('0x4c')]['id']}})[_0xc508('0x28')](function(_0x56176c){if(_0x56176c){return _0x56176c[_0xc508('0x27')]();}})[_0xc508('0x28')](function(_0x112fdb){var _0x4fb6af=path[_0xc508('0x52')](config[_0xc508('0x4f')],'server/files/sounds/original',util[_0xc508('0x53')]('%s.%s',_0x112fdb[_0xc508('0x4d')],_0x112fdb[_0xc508('0x7c')]));var _0xe181ec=path[_0xc508('0x52')](config['root'],_0xc508('0x50'),util['format'](_0xc508('0x54'),_0x112fdb[_0xc508('0x4d')],_0x112fdb[_0xc508('0x4e')]));fs[_0xc508('0x62')](_0x4fb6af);fs[_0xc508('0x62')](_0xe181ec);return _0x112fdb;})[_0xc508('0x28')](function(_0x458769){if(_0x458769){return _0x11d442[_0xc508('0x1b')](0xcc)[_0xc508('0x1c')]();}})[_0xc508('0x28')](handleEntityNotFound(_0x11d442,null))[_0xc508('0x45')](handleError(_0x11d442,null));};
\ No newline at end of file
index e69a9d1..4955235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x698c=['../../config/environment','./sound.attributes','Sound','tools_sounds','util','../../config/logger','moment','request-promise'];(function(_0xbfada9,_0x5d6f70){var _0x5f5015=function(_0x1c328b){while(--_0x1c328b){_0xbfada9['push'](_0xbfada9['shift']());}};_0x5f5015(++_0x5d6f70);}(_0x698c,0x9c));var _0xc698=function(_0x8ea331,_0x1b7f95){_0x8ea331=_0x8ea331-0x0;var _0x5aa1b4=_0x698c[_0x8ea331];return _0x5aa1b4;};'use strict';var _=require('lodash');var util=require(_0xc698('0x0'));var logger=require(_0xc698('0x1'))('api');var moment=require(_0xc698('0x2'));var BPromise=require('bluebird');var rp=require(_0xc698('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xc698('0x4'));var attributes=require(_0xc698('0x5'));module['exports']=function(_0x2733ad,_0xb6f0b2){return _0x2733ad['define'](_0xc698('0x6'),attributes,{'tableName':_0xc698('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4d9a=['Sound','tools_sounds','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./sound.attributes','exports','define'];(function(_0x36c5b0,_0x5001da){var _0xf19333=function(_0x1e880a){while(--_0x1e880a){_0x36c5b0['push'](_0x36c5b0['shift']());}};_0xf19333(++_0x5001da);}(_0x4d9a,0x120));var _0xa4d9=function(_0x168c8c,_0xdc063b){_0x168c8c=_0x168c8c-0x0;var _0x2a66a2=_0x4d9a[_0x168c8c];return _0x2a66a2;};'use strict';var _=require(_0xa4d9('0x0'));var util=require(_0xa4d9('0x1'));var logger=require(_0xa4d9('0x2'))(_0xa4d9('0x3'));var moment=require(_0xa4d9('0x4'));var BPromise=require('bluebird');var rp=require(_0xa4d9('0x5'));var fs=require('fs');var path=require(_0xa4d9('0x6'));var rimraf=require(_0xa4d9('0x7'));var config=require('../../config/environment');var attributes=require(_0xa4d9('0x8'));module[_0xa4d9('0x9')]=function(_0x4ba4cd,_0x3e2798){return _0x4ba4cd[_0xa4d9('0xa')](_0xa4d9('0xb'),attributes,{'tableName':_0xa4d9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4d67e5f..ca70536 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a63=['request','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','ShowSound','Sound','options','raw','where','attributes','map','include','model','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','http'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x0a63,0xf5));var _0x30a6=function(_0x233277,_0x2568a0){_0x233277=_0x233277-0x0;var _0x5d215e=_0x0a63[_0x233277];return _0x5d215e;};'use strict';var _=require(_0x30a6('0x0'));var util=require(_0x30a6('0x1'));var moment=require(_0x30a6('0x2'));var BPromise=require(_0x30a6('0x3'));var rs=require(_0x30a6('0x4'));var fs=require('fs');var Redis=require(_0x30a6('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x30a6('0x6'));var logger=require('../../config/logger')(_0x30a6('0x7'));var config=require('../../config/environment');var jayson=require(_0x30a6('0x8'));var client=jayson[_0x30a6('0x9')][_0x30a6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2bf57c,_0x4979cd,_0x26ee69){return new BPromise(function(_0x5affff,_0x2564f8){return client[_0x30a6('0xb')](_0x2bf57c,_0x26ee69)['then'](function(_0x4a350b){logger[_0x30a6('0xc')](_0x30a6('0xd'),_0x4979cd,_0x30a6('0xe'));logger[_0x30a6('0xf')](_0x30a6('0x10'),_0x4979cd,'request\x20sent',JSON['stringify'](_0x4a350b));if(_0x4a350b['error']){if(_0x4a350b['error'][_0x30a6('0x11')]===0x1f4){logger[_0x30a6('0x12')](_0x30a6('0xd'),_0x4979cd,_0x4a350b['error'][_0x30a6('0x13')]);return _0x2564f8(_0x4a350b[_0x30a6('0x12')][_0x30a6('0x13')]);}logger['error'](_0x30a6('0xd'),_0x4979cd,_0x4a350b[_0x30a6('0x12')][_0x30a6('0x13')]);return _0x5affff(_0x4a350b['error'][_0x30a6('0x13')]);}else{logger[_0x30a6('0xc')]('Sound,\x20%s,\x20%s',_0x4979cd,'request\x20sent');_0x5affff(_0x4a350b[_0x30a6('0x14')][_0x30a6('0x13')]);}})[_0x30a6('0x15')](function(_0x3a13ff){logger['error'](_0x30a6('0xd'),_0x4979cd,_0x3a13ff);_0x2564f8(_0x3a13ff);});});}exports[_0x30a6('0x16')]=function(_0x370fe0){var _0xd80b8a=this;return new Promise(function(_0x57f23e,_0xb68e85){return db[_0x30a6('0x17')]['find']({'raw':_0x370fe0[_0x30a6('0x18')]?_0x370fe0['options'][_0x30a6('0x19')]===undefined?!![]:![]:!![],'where':_0x370fe0[_0x30a6('0x18')]?_0x370fe0[_0x30a6('0x18')][_0x30a6('0x1a')]||null:null,'attributes':_0x370fe0[_0x30a6('0x18')]?_0x370fe0[_0x30a6('0x18')][_0x30a6('0x1b')]||null:null,'include':_0x370fe0[_0x30a6('0x18')]?_0x370fe0[_0x30a6('0x18')]['include']?_[_0x30a6('0x1c')](_0x370fe0[_0x30a6('0x18')][_0x30a6('0x1d')],function(_0x178341){return{'model':db[_0x178341[_0x30a6('0x1e')]],'as':_0x178341['as'],'attributes':_0x178341[_0x30a6('0x1b')],'include':_0x178341[_0x30a6('0x1d')]?_[_0x30a6('0x1c')](_0x178341[_0x30a6('0x1d')],function(_0x27c1dc){return{'model':db[_0x27c1dc[_0x30a6('0x1e')]],'as':_0x27c1dc['as'],'attributes':_0x27c1dc[_0x30a6('0x1b')],'include':_0x27c1dc[_0x30a6('0x1d')]?_[_0x30a6('0x1c')](_0x27c1dc[_0x30a6('0x1d')],function(_0x68cf06){return{'model':db[_0x68cf06[_0x30a6('0x1e')]],'as':_0x68cf06['as'],'attributes':_0x68cf06[_0x30a6('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2f1847){logger[_0x30a6('0xc')](_0x30a6('0x16'),_0x370fe0);logger[_0x30a6('0xf')](_0x30a6('0x16'),_0x370fe0,JSON[_0x30a6('0x1f')](_0x2f1847));_0x57f23e(_0x2f1847);})[_0x30a6('0x15')](function(_0x165230){logger[_0x30a6('0x12')](_0x30a6('0x16'),_0x165230[_0x30a6('0x13')],_0x370fe0);_0xb68e85(_0xd80b8a[_0x30a6('0x12')](0x1f4,_0x165230[_0x30a6('0x13')]));});});};
\ No newline at end of file
+var _0xf555=['find','options','attributes','include','map','model','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','ShowSound','Sound'];(function(_0x5149f7,_0xfb6955){var _0x534292=function(_0x1f770a){while(--_0x1f770a){_0x5149f7['push'](_0x5149f7['shift']());}};_0x534292(++_0xfb6955);}(_0xf555,0x97));var _0x5f55=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf555[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x5f55('0x0'));var util=require(_0x5f55('0x1'));var moment=require('moment');var BPromise=require(_0x5f55('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5f55('0x3'));var db=require(_0x5f55('0x4'))['db'];var utils=require(_0x5f55('0x5'));var logger=require('../../config/logger')(_0x5f55('0x6'));var config=require(_0x5f55('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x5f55('0x8')][_0x5f55('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3b48dd,_0x40e2ac,_0x3ae755){return new BPromise(function(_0x8419b0,_0x23e3a9){return client[_0x5f55('0xa')](_0x3b48dd,_0x3ae755)[_0x5f55('0xb')](function(_0x5e961f){logger[_0x5f55('0xc')](_0x5f55('0xd'),_0x40e2ac,_0x5f55('0xe'));logger[_0x5f55('0xf')]('Sound,\x20%s,\x20%s,\x20%s',_0x40e2ac,_0x5f55('0xe'),JSON[_0x5f55('0x10')](_0x5e961f));if(_0x5e961f['error']){if(_0x5e961f['error']['code']===0x1f4){logger[_0x5f55('0x11')]('Sound,\x20%s,\x20%s',_0x40e2ac,_0x5e961f['error']['message']);return _0x23e3a9(_0x5e961f['error'][_0x5f55('0x12')]);}logger[_0x5f55('0x11')](_0x5f55('0xd'),_0x40e2ac,_0x5e961f[_0x5f55('0x11')][_0x5f55('0x12')]);return _0x8419b0(_0x5e961f[_0x5f55('0x11')][_0x5f55('0x12')]);}else{logger['info'](_0x5f55('0xd'),_0x40e2ac,'request\x20sent');_0x8419b0(_0x5e961f[_0x5f55('0x13')][_0x5f55('0x12')]);}})[_0x5f55('0x14')](function(_0x49eb28){logger[_0x5f55('0x11')](_0x5f55('0xd'),_0x40e2ac,_0x49eb28);_0x23e3a9(_0x49eb28);});});}exports[_0x5f55('0x15')]=function(_0x5644d5){var _0x351886=this;return new Promise(function(_0x1051a4,_0x520053){return db[_0x5f55('0x16')][_0x5f55('0x17')]({'raw':_0x5644d5['options']?_0x5644d5['options']['raw']===undefined?!![]:![]:!![],'where':_0x5644d5[_0x5f55('0x18')]?_0x5644d5[_0x5f55('0x18')]['where']||null:null,'attributes':_0x5644d5[_0x5f55('0x18')]?_0x5644d5[_0x5f55('0x18')][_0x5f55('0x19')]||null:null,'include':_0x5644d5[_0x5f55('0x18')]?_0x5644d5[_0x5f55('0x18')][_0x5f55('0x1a')]?_['map'](_0x5644d5[_0x5f55('0x18')][_0x5f55('0x1a')],function(_0x3c1a14){return{'model':db[_0x3c1a14['model']],'as':_0x3c1a14['as'],'attributes':_0x3c1a14[_0x5f55('0x19')],'include':_0x3c1a14[_0x5f55('0x1a')]?_[_0x5f55('0x1b')](_0x3c1a14[_0x5f55('0x1a')],function(_0xa08506){return{'model':db[_0xa08506['model']],'as':_0xa08506['as'],'attributes':_0xa08506['attributes'],'include':_0xa08506[_0x5f55('0x1a')]?_['map'](_0xa08506[_0x5f55('0x1a')],function(_0x470cbf){return{'model':db[_0x470cbf[_0x5f55('0x1c')]],'as':_0x470cbf['as'],'attributes':_0x470cbf[_0x5f55('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x47f548){logger['info'](_0x5f55('0x15'),_0x5644d5);logger[_0x5f55('0xf')](_0x5f55('0x15'),_0x5644d5,JSON[_0x5f55('0x10')](_0x47f548));_0x1051a4(_0x47f548);})[_0x5f55('0x14')](function(_0x202330){logger[_0x5f55('0x11')]('ShowSound',_0x202330[_0x5f55('0x12')],_0x5644d5);_0x520053(_0x351886[_0x5f55('0x11')](0x1f4,_0x202330[_0x5f55('0x12')]));});});};
\ No newline at end of file
index 49c0345..e9a353b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['destroy','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','index','isAuthenticated','show','post','create','/:id','update','delete'];(function(_0x29591a,_0x3192af){var _0x54e3e3=function(_0x4f3689){while(--_0x4f3689){_0x29591a['push'](_0x29591a['shift']());}};_0x54e3e3(++_0x3192af);}(_0x757a,0xde));var _0xa757=function(_0xf13ca0,_0x5bb6e5){_0xf13ca0=_0xf13ca0-0x0;var _0x274e87=_0x757a[_0xf13ca0];return _0x274e87;};'use strict';var multer=require('multer');var util=require(_0xa757('0x0'));var path=require(_0xa757('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xa757('0x2'));var auth=require(_0xa757('0x3'));var interaction=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var controller=require(_0xa757('0x6'));router[_0xa757('0x7')]('/',auth['isAuthenticated'](),controller[_0xa757('0x8')]);router[_0xa757('0x7')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0xa')]);router[_0xa757('0xb')]('/',auth[_0xa757('0x9')](),controller[_0xa757('0xc')]);router['put'](_0xa757('0xd'),auth[_0xa757('0x9')](),controller[_0xa757('0xe')]);router[_0xa757('0xf')](_0xa757('0xd'),auth[_0xa757('0x9')](),controller[_0xa757('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x14a0=['get','isAuthenticated','/:id','show','create','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./squareMessage.controller'];(function(_0x2576f0,_0x1bc430){var _0x343b3d=function(_0x5b96a1){while(--_0x5b96a1){_0x2576f0['push'](_0x2576f0['shift']());}};_0x343b3d(++_0x1bc430);}(_0x14a0,0x8e));var _0x014a=function(_0x53173a,_0x78d1cd){_0x53173a=_0x53173a-0x0;var _0x5584c8=_0x14a0[_0x53173a];return _0x5584c8;};'use strict';var multer=require('multer');var util=require(_0x014a('0x0'));var path=require(_0x014a('0x1'));var timeout=require(_0x014a('0x2'));var express=require(_0x014a('0x3'));var router=express[_0x014a('0x4')]();var fs_extra=require(_0x014a('0x5'));var auth=require(_0x014a('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x014a('0x7'));router[_0x014a('0x8')]('/',auth[_0x014a('0x9')](),controller['index']);router['get'](_0x014a('0xa'),auth[_0x014a('0x9')](),controller[_0x014a('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x014a('0xc')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x014a('0xd')]('/:id',auth[_0x014a('0x9')](),controller[_0x014a('0xe')]);module['exports']=router;
\ No newline at end of file
index 7f156c3..612d148 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfe1=['out','exports','STRING','TEXT','medium','ENUM'];(function(_0x468924,_0x1dafa8){var _0x373ad7=function(_0x10ee2d){while(--_0x10ee2d){_0x468924['push'](_0x468924['shift']());}};_0x373ad7(++_0x1dafa8);}(_0xbfe1,0x19f));var _0x1bfe=function(_0x2b5813,_0x1169be){_0x2b5813=_0x2b5813-0x0;var _0x140a1b=_0xbfe1[_0x2b5813];return _0x140a1b;};'use strict';var Sequelize=require('sequelize');module[_0x1bfe('0x0')]={'uniqueid':{'type':Sequelize[_0x1bfe('0x1')]},'body':{'type':Sequelize[_0x1bfe('0x2')](_0x1bfe('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0x1bfe('0x4')]('in',_0x1bfe('0x5')),'defaultValue':'out','allowNull':![]},'providerName':{'type':Sequelize[_0x1bfe('0x1')]},'providerResponse':{'type':Sequelize[_0x1bfe('0x2')]}};
\ No newline at end of file
+var _0xa04a=['TEXT','sequelize','exports','ENUM','out','STRING'];(function(_0x250f81,_0x2c90dd){var _0x7edd52=function(_0x1fb651){while(--_0x1fb651){_0x250f81['push'](_0x250f81['shift']());}};_0x7edd52(++_0x2c90dd);}(_0xa04a,0x16f));var _0xaa04=function(_0x28eabf,_0x5bc9a4){_0x28eabf=_0x28eabf-0x0;var _0x11cb05=_0xa04a[_0x28eabf];return _0x11cb05;};'use strict';var Sequelize=require(_0xaa04('0x0'));module[_0xaa04('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0xaa04('0x2')]('in','out'),'defaultValue':_0xaa04('0x3'),'allowNull':![]},'providerName':{'type':Sequelize[_0xaa04('0x4')]},'providerResponse':{'type':Sequelize[_0xaa04('0x5')]}};
\ No newline at end of file
index aa9b845..9181eef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6337=['filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','params','create','body','find','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','index','map','SquareMessage','fieldName','model','query','keys'];(function(_0x9eea36,_0x32517d){var _0x39ce51=function(_0x29371c){while(--_0x29371c){_0x9eea36['push'](_0x9eea36['shift']());}};_0x39ce51(++_0x32517d);}(_0x6337,0x18a));var _0x7633=function(_0x361d79,_0x41fb21){_0x361d79=_0x361d79-0x0;var _0x3da554=_0x6337[_0x361d79];return _0x3da554;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7633('0x0'));var zipdir=require(_0x7633('0x1'));var jsonpatch=require(_0x7633('0x2'));var rp=require(_0x7633('0x3'));var moment=require(_0x7633('0x4'));var BPromise=require(_0x7633('0x5'));var Mustache=require(_0x7633('0x6'));var util=require(_0x7633('0x7'));var path=require(_0x7633('0x8'));var sox=require('sox');var csv=require(_0x7633('0x9'));var ejs=require(_0x7633('0xa'));var fs=require('fs');var fs_extra=require(_0x7633('0xb'));var _=require('lodash');var squel=require(_0x7633('0xc'));var crypto=require('crypto');var jsforce=require(_0x7633('0xd'));var deskjs=require(_0x7633('0xe'));var toCsv=require('to-csv');var querystring=require(_0x7633('0xf'));var Papa=require('papaparse');var Redis=require(_0x7633('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x7633('0x11'));var as=require(_0x7633('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7633('0x13'))(_0x7633('0x14'));var utils=require(_0x7633('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x7633('0x16'));var db=require(_0x7633('0x17'))['db'];function respondWithStatusCode(_0xeef065,_0x563006){_0x563006=_0x563006||0xcc;return function(_0x2007bc){if(_0x2007bc){return _0xeef065[_0x7633('0x18')](_0x563006);}return _0xeef065[_0x7633('0x19')](_0x563006)['end']();};}function respondWithResult(_0x5654bc,_0x50e10c){_0x50e10c=_0x50e10c||0xc8;return function(_0x18abe4){if(_0x18abe4){return _0x5654bc[_0x7633('0x19')](_0x50e10c)[_0x7633('0x1a')](_0x18abe4);}};}function respondWithFilteredResult(_0x3666a1,_0x25e7d5){return function(_0x1c9957){if(_0x1c9957){var _0x47e212=typeof _0x25e7d5[_0x7633('0x1b')]===_0x7633('0x1c')&&typeof _0x25e7d5['limit']===_0x7633('0x1c');var _0x4c4e1=_0x1c9957[_0x7633('0x1d')];var _0x321043=_0x47e212?0x0:_0x25e7d5[_0x7633('0x1b')];var _0x5c7609=_0x47e212?_0x1c9957[_0x7633('0x1d')]:_0x25e7d5[_0x7633('0x1b')]+_0x25e7d5[_0x7633('0x1e')];var _0x5988d4;if(_0x5c7609>=_0x4c4e1){_0x5c7609=_0x4c4e1;_0x5988d4=0xc8;}else{_0x5988d4=0xce;}_0x3666a1[_0x7633('0x19')](_0x5988d4);return _0x3666a1[_0x7633('0x1f')](_0x7633('0x20'),_0x321043+'-'+_0x5c7609+'/'+_0x4c4e1)[_0x7633('0x1a')](_0x1c9957);}return null;};}function patchUpdates(_0x14df18){return function(_0x503d13){try{jsonpatch[_0x7633('0x21')](_0x503d13,_0x14df18,!![]);}catch(_0x1140cd){return BPromise[_0x7633('0x22')](_0x1140cd);}return _0x503d13[_0x7633('0x23')]();};}function saveUpdates(_0x1c8efc,_0x55715b){return function(_0x38a915){if(_0x38a915){return _0x38a915[_0x7633('0x24')](_0x1c8efc)[_0x7633('0x25')](function(_0x2471b7){return _0x2471b7;});}return null;};}function removeEntity(_0x531e8f,_0x135a75){return function(_0x9152df){if(_0x9152df){return _0x9152df[_0x7633('0x26')]()[_0x7633('0x25')](function(){_0x531e8f['status'](0xcc)[_0x7633('0x27')]();});}};}function handleEntityNotFound(_0x34aa76,_0x555923){return function(_0x1eb275){if(!_0x1eb275){_0x34aa76['sendStatus'](0x194);}return _0x1eb275;};}function handleError(_0x47f2cb,_0x42b4a7){_0x42b4a7=_0x42b4a7||0x1f4;return function(_0x1b2920){logger[_0x7633('0x28')](_0x1b2920[_0x7633('0x29')]);if(_0x1b2920[_0x7633('0x2a')]){delete _0x1b2920[_0x7633('0x2a')];}_0x47f2cb[_0x7633('0x19')](_0x42b4a7)['send'](_0x1b2920);};}exports[_0x7633('0x2b')]=function(_0x7b9d8b,_0x266944){var _0x3d0b0c={},_0x323e00={},_0x1abaed={'count':0x0,'rows':[]};var _0x5d79ce=_[_0x7633('0x2c')](db[_0x7633('0x2d')]['rawAttributes'],function(_0x8fcf83){return{'name':_0x8fcf83[_0x7633('0x2e')],'type':_0x8fcf83['type']['key']};});_0x323e00[_0x7633('0x2f')]=_['map'](_0x5d79ce,_0x7633('0x2a'));_0x323e00[_0x7633('0x30')]=_[_0x7633('0x31')](_0x7b9d8b[_0x7633('0x30')]);_0x323e00[_0x7633('0x32')]=_[_0x7633('0x33')](_0x323e00['model'],_0x323e00[_0x7633('0x30')]);_0x3d0b0c[_0x7633('0x34')]=_['intersection'](_0x323e00['model'],qs[_0x7633('0x35')](_0x7b9d8b['query'][_0x7633('0x35')]));_0x3d0b0c['attributes']=_0x3d0b0c['attributes'][_0x7633('0x36')]?_0x3d0b0c[_0x7633('0x34')]:_0x323e00[_0x7633('0x2f')];if(!_0x7b9d8b[_0x7633('0x30')][_0x7633('0x37')](_0x7633('0x38'))){_0x3d0b0c['limit']=qs[_0x7633('0x1e')](_0x7b9d8b['query'][_0x7633('0x1e')]);_0x3d0b0c[_0x7633('0x1b')]=qs[_0x7633('0x1b')](_0x7b9d8b[_0x7633('0x30')][_0x7633('0x1b')]);}_0x3d0b0c[_0x7633('0x39')]=qs['sort'](_0x7b9d8b[_0x7633('0x30')][_0x7633('0x3a')]);_0x3d0b0c['where']=qs[_0x7633('0x32')](_[_0x7633('0x3b')](_0x7b9d8b[_0x7633('0x30')],_0x323e00[_0x7633('0x32')]),_0x5d79ce);if(_0x7b9d8b['query'][_0x7633('0x3c')]){_0x3d0b0c[_0x7633('0x3d')]=_[_0x7633('0x3e')](_0x3d0b0c[_0x7633('0x3d')],{'$or':_[_0x7633('0x2c')](_0x5d79ce,function(_0x552927){if(_0x552927[_0x7633('0x3f')]!==_0x7633('0x40')){var _0x2d6459={};_0x2d6459[_0x552927['name']]={'$like':'%'+_0x7b9d8b[_0x7633('0x30')][_0x7633('0x3c')]+'%'};return _0x2d6459;}})});}_0x3d0b0c=_[_0x7633('0x3e')]({},_0x3d0b0c,_0x7b9d8b[_0x7633('0x41')]);var _0x5371d7={'where':_0x3d0b0c['where']};return db[_0x7633('0x2d')][_0x7633('0x1d')](_0x5371d7)[_0x7633('0x25')](function(_0x50856e){_0x1abaed[_0x7633('0x1d')]=_0x50856e;if(_0x7b9d8b[_0x7633('0x30')][_0x7633('0x42')]){_0x3d0b0c[_0x7633('0x43')]=[{'all':!![]}];}return db['SquareMessage'][_0x7633('0x44')](_0x3d0b0c);})['then'](function(_0x25a22e){_0x1abaed['rows']=_0x25a22e;return _0x1abaed;})[_0x7633('0x25')](respondWithFilteredResult(_0x266944,_0x3d0b0c))[_0x7633('0x45')](handleError(_0x266944,null));};exports['show']=function(_0x46e83f,_0x27209e){var _0x3f24b2={'raw':!![],'where':{'id':_0x46e83f[_0x7633('0x46')]['id']}},_0x79c2d0={};_0x79c2d0[_0x7633('0x2f')]=_[_0x7633('0x31')](db['SquareMessage']['rawAttributes']);_0x79c2d0[_0x7633('0x30')]=_['keys'](_0x46e83f[_0x7633('0x30')]);_0x79c2d0[_0x7633('0x32')]=_[_0x7633('0x33')](_0x79c2d0[_0x7633('0x2f')],_0x79c2d0[_0x7633('0x30')]);_0x3f24b2[_0x7633('0x34')]=_[_0x7633('0x33')](_0x79c2d0[_0x7633('0x2f')],qs[_0x7633('0x35')](_0x46e83f[_0x7633('0x30')][_0x7633('0x35')]));_0x3f24b2[_0x7633('0x34')]=_0x3f24b2[_0x7633('0x34')]['length']?_0x3f24b2['attributes']:_0x79c2d0[_0x7633('0x2f')];if(_0x46e83f[_0x7633('0x30')][_0x7633('0x42')]){_0x3f24b2[_0x7633('0x43')]=[{'all':!![]}];}_0x3f24b2=_[_0x7633('0x3e')]({},_0x3f24b2,_0x46e83f[_0x7633('0x41')]);return db['SquareMessage']['find'](_0x3f24b2)[_0x7633('0x25')](handleEntityNotFound(_0x27209e,null))[_0x7633('0x25')](respondWithResult(_0x27209e,null))[_0x7633('0x45')](handleError(_0x27209e,null));};exports[_0x7633('0x47')]=function(_0x599601,_0x5d9a0d){return db[_0x7633('0x2d')][_0x7633('0x47')](_0x599601[_0x7633('0x48')],{})['then'](respondWithResult(_0x5d9a0d,0xc9))[_0x7633('0x45')](handleError(_0x5d9a0d,null));};exports[_0x7633('0x24')]=function(_0x31f166,_0x3c79cb){if(_0x31f166[_0x7633('0x48')]['id']){delete _0x31f166[_0x7633('0x48')]['id'];}return db['SquareMessage'][_0x7633('0x49')]({'where':{'id':_0x31f166[_0x7633('0x46')]['id']}})[_0x7633('0x25')](handleEntityNotFound(_0x3c79cb,null))['then'](saveUpdates(_0x31f166[_0x7633('0x48')],null))[_0x7633('0x25')](respondWithResult(_0x3c79cb,null))[_0x7633('0x45')](handleError(_0x3c79cb,null));};exports['destroy']=function(_0x54d4c1,_0x436788){return db[_0x7633('0x2d')][_0x7633('0x49')]({'where':{'id':_0x54d4c1[_0x7633('0x46')]['id']}})['then'](handleEntityNotFound(_0x436788,null))[_0x7633('0x25')](removeEntity(_0x436788,null))[_0x7633('0x45')](handleError(_0x436788,null));};
\ No newline at end of file
+var _0xa968=['moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','count','limit','set','Content-Range','json','update','destroy','then','sendStatus','error','stack','name','send','index','map','SquareMessage','rawAttributes','fieldName','type','key','model','keys','intersection','fields','query','attributes','hasOwnProperty','nolimit','sort','filters','filter','merge','where','VIRTUAL','options','includeAll','findAll','catch','show','length','include','create','body','find','eml-format','rimraf','zip-dir','request-promise'];(function(_0x58a4ac,_0x43fd42){var _0x545810=function(_0x308e65){while(--_0x308e65){_0x58a4ac['push'](_0x58a4ac['shift']());}};_0x545810(++_0x43fd42);}(_0xa968,0x120));var _0x8a96=function(_0x20a83c,_0x19e35a){_0x20a83c=_0x20a83c-0x0;var _0x24bac5=_0xa968[_0x20a83c];return _0x24bac5;};'use strict';var emlformat=require(_0x8a96('0x0'));var rimraf=require(_0x8a96('0x1'));var zipdir=require(_0x8a96('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8a96('0x3'));var moment=require(_0x8a96('0x4'));var BPromise=require(_0x8a96('0x5'));var Mustache=require('mustache');var util=require(_0x8a96('0x6'));var path=require(_0x8a96('0x7'));var sox=require(_0x8a96('0x8'));var csv=require(_0x8a96('0x9'));var ejs=require(_0x8a96('0xa'));var fs=require('fs');var fs_extra=require(_0x8a96('0xb'));var _=require('lodash');var squel=require(_0x8a96('0xc'));var crypto=require(_0x8a96('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8a96('0x9'));var querystring=require(_0x8a96('0xe'));var Papa=require(_0x8a96('0xf'));var Redis=require(_0x8a96('0x10'));var authService=require(_0x8a96('0x11'));var qs=require(_0x8a96('0x12'));var as=require(_0x8a96('0x13'));var hardwareService=require(_0x8a96('0x14'));var logger=require('../../config/logger')(_0x8a96('0x15'));var utils=require(_0x8a96('0x16'));var config=require(_0x8a96('0x17'));var licenseUtil=require(_0x8a96('0x18'));var db=require(_0x8a96('0x19'))['db'];function respondWithStatusCode(_0x368147,_0x34d4bc){_0x34d4bc=_0x34d4bc||0xcc;return function(_0x49e04d){if(_0x49e04d){return _0x368147['sendStatus'](_0x34d4bc);}return _0x368147[_0x8a96('0x1a')](_0x34d4bc)['end']();};}function respondWithResult(_0x3aff78,_0x5ef747){_0x5ef747=_0x5ef747||0xc8;return function(_0x576ffd){if(_0x576ffd){return _0x3aff78[_0x8a96('0x1a')](_0x5ef747)['json'](_0x576ffd);}};}function respondWithFilteredResult(_0x30e7d0,_0x8d0dea){return function(_0x7823ac){if(_0x7823ac){var _0x4f9ad3=typeof _0x8d0dea[_0x8a96('0x1b')]==='undefined'&&typeof _0x8d0dea['limit']===_0x8a96('0x1c');var _0x44cb7f=_0x7823ac[_0x8a96('0x1d')];var _0x607520=_0x4f9ad3?0x0:_0x8d0dea['offset'];var _0x183995=_0x4f9ad3?_0x7823ac[_0x8a96('0x1d')]:_0x8d0dea[_0x8a96('0x1b')]+_0x8d0dea[_0x8a96('0x1e')];var _0x306f8b;if(_0x183995>=_0x44cb7f){_0x183995=_0x44cb7f;_0x306f8b=0xc8;}else{_0x306f8b=0xce;}_0x30e7d0[_0x8a96('0x1a')](_0x306f8b);return _0x30e7d0[_0x8a96('0x1f')](_0x8a96('0x20'),_0x607520+'-'+_0x183995+'/'+_0x44cb7f)[_0x8a96('0x21')](_0x7823ac);}return null;};}function patchUpdates(_0x2373dd){return function(_0x37c62c){try{jsonpatch['apply'](_0x37c62c,_0x2373dd,!![]);}catch(_0x5486d4){return BPromise['reject'](_0x5486d4);}return _0x37c62c['save']();};}function saveUpdates(_0x4190d9,_0x20973c){return function(_0x4140b1){if(_0x4140b1){return _0x4140b1[_0x8a96('0x22')](_0x4190d9)['then'](function(_0x29fadd){return _0x29fadd;});}return null;};}function removeEntity(_0x4425bf,_0x3eba78){return function(_0x17d0b5){if(_0x17d0b5){return _0x17d0b5[_0x8a96('0x23')]()[_0x8a96('0x24')](function(){_0x4425bf['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x8b1803,_0x1302a8){return function(_0x5f31f5){if(!_0x5f31f5){_0x8b1803[_0x8a96('0x25')](0x194);}return _0x5f31f5;};}function handleError(_0xcc8bee,_0x2562ec){_0x2562ec=_0x2562ec||0x1f4;return function(_0x2da16b){logger[_0x8a96('0x26')](_0x2da16b[_0x8a96('0x27')]);if(_0x2da16b[_0x8a96('0x28')]){delete _0x2da16b[_0x8a96('0x28')];}_0xcc8bee['status'](_0x2562ec)[_0x8a96('0x29')](_0x2da16b);};}exports[_0x8a96('0x2a')]=function(_0x29ef19,_0x3cf203){var _0x42534b={},_0x5c906e={},_0x2d94be={'count':0x0,'rows':[]};var _0x5906a3=_[_0x8a96('0x2b')](db[_0x8a96('0x2c')][_0x8a96('0x2d')],function(_0x3c792b){return{'name':_0x3c792b[_0x8a96('0x2e')],'type':_0x3c792b[_0x8a96('0x2f')][_0x8a96('0x30')]};});_0x5c906e[_0x8a96('0x31')]=_['map'](_0x5906a3,_0x8a96('0x28'));_0x5c906e['query']=_[_0x8a96('0x32')](_0x29ef19['query']);_0x5c906e['filters']=_[_0x8a96('0x33')](_0x5c906e[_0x8a96('0x31')],_0x5c906e['query']);_0x42534b['attributes']=_[_0x8a96('0x33')](_0x5c906e[_0x8a96('0x31')],qs[_0x8a96('0x34')](_0x29ef19[_0x8a96('0x35')][_0x8a96('0x34')]));_0x42534b[_0x8a96('0x36')]=_0x42534b[_0x8a96('0x36')]['length']?_0x42534b[_0x8a96('0x36')]:_0x5c906e[_0x8a96('0x31')];if(!_0x29ef19['query'][_0x8a96('0x37')](_0x8a96('0x38'))){_0x42534b['limit']=qs[_0x8a96('0x1e')](_0x29ef19[_0x8a96('0x35')][_0x8a96('0x1e')]);_0x42534b['offset']=qs['offset'](_0x29ef19[_0x8a96('0x35')][_0x8a96('0x1b')]);}_0x42534b['order']=qs[_0x8a96('0x39')](_0x29ef19[_0x8a96('0x35')][_0x8a96('0x39')]);_0x42534b['where']=qs[_0x8a96('0x3a')](_['pick'](_0x29ef19[_0x8a96('0x35')],_0x5c906e['filters']),_0x5906a3);if(_0x29ef19[_0x8a96('0x35')][_0x8a96('0x3b')]){_0x42534b['where']=_[_0x8a96('0x3c')](_0x42534b[_0x8a96('0x3d')],{'$or':_[_0x8a96('0x2b')](_0x5906a3,function(_0x187382){if(_0x187382[_0x8a96('0x2f')]!==_0x8a96('0x3e')){var _0xf4d983={};_0xf4d983[_0x187382[_0x8a96('0x28')]]={'$like':'%'+_0x29ef19[_0x8a96('0x35')][_0x8a96('0x3b')]+'%'};return _0xf4d983;}})});}_0x42534b=_[_0x8a96('0x3c')]({},_0x42534b,_0x29ef19[_0x8a96('0x3f')]);var _0x4f0f56={'where':_0x42534b[_0x8a96('0x3d')]};return db['SquareMessage'][_0x8a96('0x1d')](_0x4f0f56)[_0x8a96('0x24')](function(_0x5b321f){_0x2d94be[_0x8a96('0x1d')]=_0x5b321f;if(_0x29ef19[_0x8a96('0x35')][_0x8a96('0x40')]){_0x42534b['include']=[{'all':!![]}];}return db['SquareMessage'][_0x8a96('0x41')](_0x42534b);})[_0x8a96('0x24')](function(_0x51231f){_0x2d94be['rows']=_0x51231f;return _0x2d94be;})['then'](respondWithFilteredResult(_0x3cf203,_0x42534b))[_0x8a96('0x42')](handleError(_0x3cf203,null));};exports[_0x8a96('0x43')]=function(_0x5c27c5,_0x1b0a60){var _0x41b2e7={'raw':!![],'where':{'id':_0x5c27c5['params']['id']}},_0x32f3d7={};_0x32f3d7['model']=_[_0x8a96('0x32')](db[_0x8a96('0x2c')]['rawAttributes']);_0x32f3d7[_0x8a96('0x35')]=_[_0x8a96('0x32')](_0x5c27c5[_0x8a96('0x35')]);_0x32f3d7[_0x8a96('0x3a')]=_[_0x8a96('0x33')](_0x32f3d7[_0x8a96('0x31')],_0x32f3d7[_0x8a96('0x35')]);_0x41b2e7[_0x8a96('0x36')]=_[_0x8a96('0x33')](_0x32f3d7[_0x8a96('0x31')],qs[_0x8a96('0x34')](_0x5c27c5['query'][_0x8a96('0x34')]));_0x41b2e7[_0x8a96('0x36')]=_0x41b2e7['attributes'][_0x8a96('0x44')]?_0x41b2e7['attributes']:_0x32f3d7[_0x8a96('0x31')];if(_0x5c27c5[_0x8a96('0x35')][_0x8a96('0x40')]){_0x41b2e7[_0x8a96('0x45')]=[{'all':!![]}];}_0x41b2e7=_[_0x8a96('0x3c')]({},_0x41b2e7,_0x5c27c5[_0x8a96('0x3f')]);return db['SquareMessage']['find'](_0x41b2e7)[_0x8a96('0x24')](handleEntityNotFound(_0x1b0a60,null))[_0x8a96('0x24')](respondWithResult(_0x1b0a60,null))[_0x8a96('0x42')](handleError(_0x1b0a60,null));};exports[_0x8a96('0x46')]=function(_0x597808,_0xc3cd0){return db[_0x8a96('0x2c')][_0x8a96('0x46')](_0x597808['body'],{})[_0x8a96('0x24')](respondWithResult(_0xc3cd0,0xc9))[_0x8a96('0x42')](handleError(_0xc3cd0,null));};exports[_0x8a96('0x22')]=function(_0x4b19b9,_0x48cedd){if(_0x4b19b9[_0x8a96('0x47')]['id']){delete _0x4b19b9['body']['id'];}return db['SquareMessage']['find']({'where':{'id':_0x4b19b9['params']['id']}})[_0x8a96('0x24')](handleEntityNotFound(_0x48cedd,null))[_0x8a96('0x24')](saveUpdates(_0x4b19b9[_0x8a96('0x47')],null))['then'](respondWithResult(_0x48cedd,null))[_0x8a96('0x42')](handleError(_0x48cedd,null));};exports[_0x8a96('0x23')]=function(_0x5a41dc,_0x358bb4){return db['SquareMessage'][_0x8a96('0x48')]({'where':{'id':_0x5a41dc['params']['id']}})[_0x8a96('0x24')](handleEntityNotFound(_0x358bb4,null))[_0x8a96('0x24')](removeEntity(_0x358bb4,null))[_0x8a96('0x42')](handleError(_0x358bb4,null));};
\ No newline at end of file
index c9ddf65..ee47136 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc562=['path','rimraf','./squareMessage.attributes','exports','define','SquareMessage','square_messages','util','../../config/logger','api','bluebird','request-promise'];(function(_0x418432,_0x537680){var _0x3023a9=function(_0x1c42d0){while(--_0x1c42d0){_0x418432['push'](_0x418432['shift']());}};_0x3023a9(++_0x537680);}(_0xc562,0x1e7));var _0x2c56=function(_0x2df507,_0x553862){_0x2df507=_0x2df507-0x0;var _0x1f7167=_0xc562[_0x2df507];return _0x1f7167;};'use strict';var _=require('lodash');var util=require(_0x2c56('0x0'));var logger=require(_0x2c56('0x1'))(_0x2c56('0x2'));var moment=require('moment');var BPromise=require(_0x2c56('0x3'));var rp=require(_0x2c56('0x4'));var fs=require('fs');var path=require(_0x2c56('0x5'));var rimraf=require(_0x2c56('0x6'));var config=require('../../config/environment');var attributes=require(_0x2c56('0x7'));module[_0x2c56('0x8')]=function(_0x5c3d2c,_0xcbc6ed){return _0x5c3d2c[_0x2c56('0x9')](_0x2c56('0xa'),attributes,{'tableName':_0x2c56('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x210d=['exports','define','SquareMessage','square_messages','lodash','util','api','moment','bluebird','rimraf','../../config/environment','./squareMessage.attributes'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x210d,0x7c));var _0xd210=function(_0x2bd1ec,_0x3fe65f){_0x2bd1ec=_0x2bd1ec-0x0;var _0x2f7577=_0x210d[_0x2bd1ec];return _0x2f7577;};'use strict';var _=require(_0xd210('0x0'));var util=require(_0xd210('0x1'));var logger=require('../../config/logger')(_0xd210('0x2'));var moment=require(_0xd210('0x3'));var BPromise=require(_0xd210('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd210('0x5'));var config=require(_0xd210('0x6'));var attributes=require(_0xd210('0x7'));module[_0xd210('0x8')]=function(_0x3e52ba,_0x2af8b8){return _0x3e52ba[_0xd210('0x9')](_0xd210('0xa'),attributes,{'tableName':_0xd210('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 218c007..219276b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5af2=['../../config/logger','rpc','../../config/environment','http','request','then','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareMessage,\x20%s,\x20%s','message','catch','CreateSquareMessage','SquareMessage','create','body','options','raw','info','lodash','util','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x26b750,_0x42a618){var _0x11adda=function(_0x5c9592){while(--_0x5c9592){_0x26b750['push'](_0x26b750['shift']());}};_0x11adda(++_0x42a618);}(_0x5af2,0x14a));var _0x25af=function(_0x4fde08,_0x463a36){_0x4fde08=_0x4fde08-0x0;var _0x12e725=_0x5af2[_0x4fde08];return _0x12e725;};'use strict';var _=require(_0x25af('0x0'));var util=require(_0x25af('0x1'));var moment=require('moment');var BPromise=require(_0x25af('0x2'));var rs=require(_0x25af('0x3'));var fs=require('fs');var Redis=require(_0x25af('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x25af('0x5'));var logger=require(_0x25af('0x6'))(_0x25af('0x7'));var config=require(_0x25af('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x25af('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5cab1c,_0x59766b,_0x723146){return new BPromise(function(_0x5f014c,_0xc80041){return client[_0x25af('0xa')](_0x5cab1c,_0x723146)[_0x25af('0xb')](function(_0x1ae0b9){logger['info']('SquareMessage,\x20%s,\x20%s',_0x59766b,_0x25af('0xc'));logger[_0x25af('0xd')](_0x25af('0xe'),_0x59766b,'request\x20sent',JSON[_0x25af('0xf')](_0x1ae0b9));if(_0x1ae0b9[_0x25af('0x10')]){if(_0x1ae0b9[_0x25af('0x10')][_0x25af('0x11')]===0x1f4){logger['error'](_0x25af('0x12'),_0x59766b,_0x1ae0b9[_0x25af('0x10')]['message']);return _0xc80041(_0x1ae0b9[_0x25af('0x10')][_0x25af('0x13')]);}logger['error'](_0x25af('0x12'),_0x59766b,_0x1ae0b9[_0x25af('0x10')][_0x25af('0x13')]);return _0x5f014c(_0x1ae0b9['error']['message']);}else{logger['info'](_0x25af('0x12'),_0x59766b,_0x25af('0xc'));_0x5f014c(_0x1ae0b9['result'][_0x25af('0x13')]);}})[_0x25af('0x14')](function(_0x5c59fb){logger[_0x25af('0x10')](_0x25af('0x12'),_0x59766b,_0x5c59fb);_0xc80041(_0x5c59fb);});});}exports[_0x25af('0x15')]=function(_0x658198){var _0x52c4bb=this;return new Promise(function(_0x2b1294,_0x1b10b8){return db[_0x25af('0x16')][_0x25af('0x17')](_0x658198[_0x25af('0x18')],{'raw':_0x658198[_0x25af('0x19')]?_0x658198['options'][_0x25af('0x1a')]===undefined?!![]:![]:!![]})[_0x25af('0xb')](function(_0xcc8220){logger[_0x25af('0x1b')](_0x25af('0x15'),_0x658198);logger['debug']('CreateSquareMessage',_0x658198,JSON[_0x25af('0xf')](_0xcc8220));_0x2b1294(_0xcc8220);})['catch'](function(_0x2ce063){logger['error'](_0x25af('0x15'),_0x2ce063[_0x25af('0x13')],_0x658198);_0x1b10b8(_0x52c4bb[_0x25af('0x10')](0x1f4,_0x2ce063[_0x25af('0x13')]));});});};
\ No newline at end of file
+var _0x45f7=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','CreateSquareMessage','create','options'];(function(_0x300cd2,_0x2545ed){var _0x3ed0a0=function(_0x1bf09b){while(--_0x1bf09b){_0x300cd2['push'](_0x300cd2['shift']());}};_0x3ed0a0(++_0x2545ed);}(_0x45f7,0xcf));var _0x745f=function(_0x211632,_0x378e2e){_0x211632=_0x211632-0x0;var _0x5a1da1=_0x45f7[_0x211632];return _0x5a1da1;};'use strict';var _=require(_0x745f('0x0'));var util=require(_0x745f('0x1'));var moment=require(_0x745f('0x2'));var BPromise=require(_0x745f('0x3'));var rs=require(_0x745f('0x4'));var fs=require('fs');var Redis=require(_0x745f('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x745f('0x6'));var logger=require(_0x745f('0x7'))('rpc');var config=require(_0x745f('0x8'));var jayson=require(_0x745f('0x9'));var client=jayson[_0x745f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x219fec,_0x5ef589,_0x16a9a6){return new BPromise(function(_0x2f00e3,_0x50eab6){return client['request'](_0x219fec,_0x16a9a6)[_0x745f('0xb')](function(_0x53c2e8){logger[_0x745f('0xc')](_0x745f('0xd'),_0x5ef589,_0x745f('0xe'));logger[_0x745f('0xf')]('SquareMessage,\x20%s,\x20%s,\x20%s',_0x5ef589,_0x745f('0xe'),JSON[_0x745f('0x10')](_0x53c2e8));if(_0x53c2e8[_0x745f('0x11')]){if(_0x53c2e8[_0x745f('0x11')][_0x745f('0x12')]===0x1f4){logger[_0x745f('0x11')](_0x745f('0xd'),_0x5ef589,_0x53c2e8['error']['message']);return _0x50eab6(_0x53c2e8[_0x745f('0x11')][_0x745f('0x13')]);}logger[_0x745f('0x11')](_0x745f('0xd'),_0x5ef589,_0x53c2e8[_0x745f('0x11')][_0x745f('0x13')]);return _0x2f00e3(_0x53c2e8[_0x745f('0x11')]['message']);}else{logger['info']('SquareMessage,\x20%s,\x20%s',_0x5ef589,'request\x20sent');_0x2f00e3(_0x53c2e8['result'][_0x745f('0x13')]);}})['catch'](function(_0x5e3310){logger[_0x745f('0x11')](_0x745f('0xd'),_0x5ef589,_0x5e3310);_0x50eab6(_0x5e3310);});});}exports[_0x745f('0x14')]=function(_0x6386de){var _0xb21174=this;return new Promise(function(_0x107755,_0x139f7e){return db['SquareMessage'][_0x745f('0x15')](_0x6386de['body'],{'raw':_0x6386de[_0x745f('0x16')]?_0x6386de[_0x745f('0x16')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x3d78a7){logger[_0x745f('0xc')](_0x745f('0x14'),_0x6386de);logger[_0x745f('0xf')]('CreateSquareMessage',_0x6386de,JSON[_0x745f('0x10')](_0x3d78a7));_0x107755(_0x3d78a7);})['catch'](function(_0x3ab82e){logger['error'](_0x745f('0x14'),_0x3ab82e[_0x745f('0x13')],_0x6386de);_0x139f7e(_0xb21174[_0x745f('0x11')](0x1f4,_0x3ab82e[_0x745f('0x13')]));});});};
\ No newline at end of file
index 6b44144..342a90f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98d4=['/:id/test','test','post','create','put','/:id','update','delete','destroy','exports','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','isAuthenticated','show','get'];(function(_0x3166b9,_0x563098){var _0x348fc2=function(_0x133e98){while(--_0x133e98){_0x3166b9['push'](_0x3166b9['shift']());}};_0x348fc2(++_0x563098);}(_0x98d4,0x186));var _0x498d=function(_0x5c1cab,_0x3460e3){_0x5c1cab=_0x5c1cab-0x0;var _0x2c9779=_0x98d4[_0x5c1cab];return _0x2c9779;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x498d('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x498d('0x1')]();var fs_extra=require(_0x498d('0x2'));var auth=require(_0x498d('0x3'));var interaction=require(_0x498d('0x4'));var config=require(_0x498d('0x5'));var controller=require(_0x498d('0x6'));router['get']('/',auth[_0x498d('0x7')](),controller['index']);router['get']('/:id',auth[_0x498d('0x7')](),controller[_0x498d('0x8')]);router[_0x498d('0x9')](_0x498d('0xa'),auth[_0x498d('0x7')](),timeout('15s'),controller[_0x498d('0xb')]);router[_0x498d('0xc')]('/',auth[_0x498d('0x7')](),controller[_0x498d('0xd')]);router[_0x498d('0xe')](_0x498d('0xf'),auth[_0x498d('0x7')](),controller[_0x498d('0x10')]);router[_0x498d('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x498d('0x12')]);module[_0x498d('0x13')]=router;
\ No newline at end of file
+var _0x4077=['multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./squareOdbc.controller','get','isAuthenticated','/:id/test','15s','test','post','create','/:id','update','delete','destroy'];(function(_0x34ea57,_0x23af8e){var _0x4b1bef=function(_0x213846){while(--_0x213846){_0x34ea57['push'](_0x34ea57['shift']());}};_0x4b1bef(++_0x23af8e);}(_0x4077,0x168));var _0x7407=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4077[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x7407('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x7407('0x1'));var express=require('express');var router=express[_0x7407('0x2')]();var fs_extra=require(_0x7407('0x3'));var auth=require(_0x7407('0x4'));var interaction=require(_0x7407('0x5'));var config=require('../../config/environment');var controller=require(_0x7407('0x6'));router[_0x7407('0x7')]('/',auth[_0x7407('0x8')](),controller['index']);router[_0x7407('0x7')]('/:id',auth[_0x7407('0x8')](),controller['show']);router[_0x7407('0x7')](_0x7407('0x9'),auth[_0x7407('0x8')](),timeout(_0x7407('0xa')),controller[_0x7407('0xb')]);router[_0x7407('0xc')]('/',auth[_0x7407('0x8')](),controller[_0x7407('0xd')]);router['put'](_0x7407('0xe'),auth[_0x7407('0x8')](),controller[_0x7407('0xf')]);router[_0x7407('0x10')]('/:id',auth[_0x7407('0x8')](),controller[_0x7407('0x11')]);module['exports']=router;
\ No newline at end of file
index 95eaf34..1854e82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bf6=['sequelize','STRING','name'];(function(_0x19c452,_0x4dbaab){var _0x99698c=function(_0x5aef73){while(--_0x5aef73){_0x19c452['push'](_0x19c452['shift']());}};_0x99698c(++_0x4dbaab);}(_0x2bf6,0x1c2));var _0x62bf=function(_0x96b8d4,_0x2c1e33){_0x96b8d4=_0x96b8d4-0x0;var _0x44d44c=_0x2bf6[_0x96b8d4];return _0x44d44c;};'use strict';var Sequelize=require(_0x62bf('0x0'));module['exports']={'name':{'type':Sequelize[_0x62bf('0x1')],'unique':_0x62bf('0x2'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xc09e=['sequelize','exports','STRING','name'];(function(_0x13ddfe,_0x5063b5){var _0x4d9596=function(_0x24eab9){while(--_0x24eab9){_0x13ddfe['push'](_0x13ddfe['shift']());}};_0x4d9596(++_0x5063b5);}(_0xc09e,0x94));var _0xec09=function(_0x11a74b,_0x1a6cd9){_0x11a74b=_0x11a74b-0x0;var _0xcdd937=_0xc09e[_0x11a74b];return _0xcdd937;};'use strict';var Sequelize=require(_0xec09('0x0'));module[_0xec09('0x1')]={'name':{'type':Sequelize[_0xec09('0x2')],'unique':_0xec09('0x3'),'allowNull':![]},'dsn':{'type':Sequelize[_0xec09('0x2')]},'description':{'type':Sequelize[_0xec09('0x2')]}};
\ No newline at end of file
index bea5cae..9dc1958 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdde=['to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','get','UserProfileResource','end','error','name','send','index','map','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','SquareOdbc','includeAll','include','findAll','rows','show','params','length','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ODBC','UserProfileSection','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','test','dsn','odbc','openSync','closeSync','eml-format','fast-json-patch','request-promise','bluebird','path','sox'];(function(_0x2d8fc2,_0x1c461d){var _0x3a9e53=function(_0x18941c){while(--_0x18941c){_0x2d8fc2['push'](_0x2d8fc2['shift']());}};_0x3a9e53(++_0x1c461d);}(_0xbdde,0x15a));var _0xebdd=function(_0x32b27e,_0x39c1de){_0x32b27e=_0x32b27e-0x0;var _0x11ed70=_0xbdde[_0x32b27e];return _0x11ed70;};'use strict';var emlformat=require(_0xebdd('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xebdd('0x1'));var rp=require(_0xebdd('0x2'));var moment=require('moment');var BPromise=require(_0xebdd('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xebdd('0x4'));var sox=require(_0xebdd('0x5'));var csv=require(_0xebdd('0x6'));var ejs=require(_0xebdd('0x7'));var fs=require('fs');var fs_extra=require(_0xebdd('0x8'));var _=require(_0xebdd('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xebdd('0xa'));var deskjs=require(_0xebdd('0xb'));var toCsv=require(_0xebdd('0x6'));var querystring=require(_0xebdd('0xc'));var Papa=require(_0xebdd('0xd'));var Redis=require(_0xebdd('0xe'));var authService=require(_0xebdd('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xebdd('0x10'));var hardwareService=require(_0xebdd('0x11'));var logger=require(_0xebdd('0x12'))(_0xebdd('0x13'));var utils=require(_0xebdd('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x508d78,_0x5f0b09){_0x5f0b09=_0x5f0b09||0xcc;return function(_0x2e04c8){if(_0x2e04c8){return _0x508d78[_0xebdd('0x15')](_0x5f0b09);}return _0x508d78[_0xebdd('0x16')](_0x5f0b09)['end']();};}function respondWithResult(_0x5476c4,_0x57d224){_0x57d224=_0x57d224||0xc8;return function(_0x2798b8){if(_0x2798b8){return _0x5476c4['status'](_0x57d224)[_0xebdd('0x17')](_0x2798b8);}};}function respondWithFilteredResult(_0x1f2ce8,_0x47045a){return function(_0x3cefdc){if(_0x3cefdc){var _0x522047=typeof _0x47045a[_0xebdd('0x18')]===_0xebdd('0x19')&&typeof _0x47045a[_0xebdd('0x1a')]===_0xebdd('0x19');var _0x5c3b5b=_0x3cefdc[_0xebdd('0x1b')];var _0x59d1a1=_0x522047?0x0:_0x47045a[_0xebdd('0x18')];var _0x1fc0c6=_0x522047?_0x3cefdc[_0xebdd('0x1b')]:_0x47045a[_0xebdd('0x18')]+_0x47045a[_0xebdd('0x1a')];var _0x10ca55;if(_0x1fc0c6>=_0x5c3b5b){_0x1fc0c6=_0x5c3b5b;_0x10ca55=0xc8;}else{_0x10ca55=0xce;}_0x1f2ce8[_0xebdd('0x16')](_0x10ca55);return _0x1f2ce8['set']('Content-Range',_0x59d1a1+'-'+_0x1fc0c6+'/'+_0x5c3b5b)[_0xebdd('0x17')](_0x3cefdc);}return null;};}function patchUpdates(_0x1e24b9){return function(_0x11a3ab){try{jsonpatch[_0xebdd('0x1c')](_0x11a3ab,_0x1e24b9,!![]);}catch(_0xbd010b){return BPromise[_0xebdd('0x1d')](_0xbd010b);}return _0x11a3ab[_0xebdd('0x1e')]();};}function saveUpdates(_0x1f512a,_0x5ad406){return function(_0x5417a5){if(_0x5417a5){return _0x5417a5[_0xebdd('0x1f')](_0x1f512a)[_0xebdd('0x20')](function(_0x14b91a){return _0x14b91a;});}return null;};}function removeEntity(_0x5020b4,_0x443849){return function(_0x483541){if(_0x483541){return _0x483541[_0xebdd('0x21')]()[_0xebdd('0x20')](function(){var _0x1e4555=_0x483541[_0xebdd('0x22')]({'plain':!![]});var _0x397043='ODBC';return db[_0xebdd('0x23')][_0xebdd('0x21')]({'where':{'type':_0x397043,'resourceId':_0x1e4555['id']}})['then'](function(){return _0x483541;});})[_0xebdd('0x20')](function(){_0x5020b4[_0xebdd('0x16')](0xcc)[_0xebdd('0x24')]();});}};}function handleEntityNotFound(_0x465ad4,_0x132d93){return function(_0x5327b7){if(!_0x5327b7){_0x465ad4[_0xebdd('0x15')](0x194);}return _0x5327b7;};}function handleError(_0x51d93b,_0x5a095a){_0x5a095a=_0x5a095a||0x1f4;return function(_0xe3c991){logger[_0xebdd('0x25')](_0xe3c991['stack']);if(_0xe3c991['name']){delete _0xe3c991[_0xebdd('0x26')];}_0x51d93b[_0xebdd('0x16')](_0x5a095a)[_0xebdd('0x27')](_0xe3c991);};}exports[_0xebdd('0x28')]=function(_0x131758,_0x1c2a82){var _0xdb28cf={},_0x62b395={},_0x1f9051={'count':0x0,'rows':[]};var _0x34e5db=_[_0xebdd('0x29')](db['SquareOdbc'][_0xebdd('0x2a')],function(_0x508b5b){return{'name':_0x508b5b[_0xebdd('0x2b')],'type':_0x508b5b[_0xebdd('0x2c')][_0xebdd('0x2d')]};});_0x62b395['model']=_[_0xebdd('0x29')](_0x34e5db,'name');_0x62b395[_0xebdd('0x2e')]=_[_0xebdd('0x2f')](_0x131758[_0xebdd('0x2e')]);_0x62b395[_0xebdd('0x30')]=_['intersection'](_0x62b395[_0xebdd('0x31')],_0x62b395[_0xebdd('0x2e')]);_0xdb28cf[_0xebdd('0x32')]=_[_0xebdd('0x33')](_0x62b395[_0xebdd('0x31')],qs[_0xebdd('0x34')](_0x131758[_0xebdd('0x2e')][_0xebdd('0x34')]));_0xdb28cf[_0xebdd('0x32')]=_0xdb28cf[_0xebdd('0x32')]['length']?_0xdb28cf['attributes']:_0x62b395[_0xebdd('0x31')];if(!_0x131758[_0xebdd('0x2e')][_0xebdd('0x35')](_0xebdd('0x36'))){_0xdb28cf[_0xebdd('0x1a')]=qs[_0xebdd('0x1a')](_0x131758[_0xebdd('0x2e')]['limit']);_0xdb28cf[_0xebdd('0x18')]=qs['offset'](_0x131758[_0xebdd('0x2e')][_0xebdd('0x18')]);}_0xdb28cf[_0xebdd('0x37')]=qs[_0xebdd('0x38')](_0x131758['query'][_0xebdd('0x38')]);_0xdb28cf[_0xebdd('0x39')]=qs['filters'](_[_0xebdd('0x3a')](_0x131758[_0xebdd('0x2e')],_0x62b395[_0xebdd('0x30')]),_0x34e5db);if(_0x131758[_0xebdd('0x2e')][_0xebdd('0x3b')]){_0xdb28cf[_0xebdd('0x39')]=_[_0xebdd('0x3c')](_0xdb28cf['where'],{'$or':_[_0xebdd('0x29')](_0x34e5db,function(_0x313482){if(_0x313482['type']!==_0xebdd('0x3d')){var _0x8aad28={};_0x8aad28[_0x313482[_0xebdd('0x26')]]={'$like':'%'+_0x131758[_0xebdd('0x2e')][_0xebdd('0x3b')]+'%'};return _0x8aad28;}})});}_0xdb28cf=_[_0xebdd('0x3c')]({},_0xdb28cf,_0x131758[_0xebdd('0x3e')]);var _0x33f22a={'where':_0xdb28cf[_0xebdd('0x39')]};return db[_0xebdd('0x3f')][_0xebdd('0x1b')](_0x33f22a)[_0xebdd('0x20')](function(_0x47663b){_0x1f9051[_0xebdd('0x1b')]=_0x47663b;if(_0x131758[_0xebdd('0x2e')][_0xebdd('0x40')]){_0xdb28cf[_0xebdd('0x41')]=[{'all':!![]}];}return db['SquareOdbc'][_0xebdd('0x42')](_0xdb28cf);})[_0xebdd('0x20')](function(_0x8a54f9){_0x1f9051[_0xebdd('0x43')]=_0x8a54f9;return _0x1f9051;})[_0xebdd('0x20')](respondWithFilteredResult(_0x1c2a82,_0xdb28cf))['catch'](handleError(_0x1c2a82,null));};exports[_0xebdd('0x44')]=function(_0x3b05ba,_0x6d3544){var _0x34fac8={'raw':!![],'where':{'id':_0x3b05ba[_0xebdd('0x45')]['id']}},_0x1ae2b4={};_0x1ae2b4[_0xebdd('0x31')]=_[_0xebdd('0x2f')](db[_0xebdd('0x3f')][_0xebdd('0x2a')]);_0x1ae2b4[_0xebdd('0x2e')]=_[_0xebdd('0x2f')](_0x3b05ba[_0xebdd('0x2e')]);_0x1ae2b4[_0xebdd('0x30')]=_[_0xebdd('0x33')](_0x1ae2b4[_0xebdd('0x31')],_0x1ae2b4[_0xebdd('0x2e')]);_0x34fac8[_0xebdd('0x32')]=_[_0xebdd('0x33')](_0x1ae2b4[_0xebdd('0x31')],qs['fields'](_0x3b05ba['query'][_0xebdd('0x34')]));_0x34fac8[_0xebdd('0x32')]=_0x34fac8[_0xebdd('0x32')][_0xebdd('0x46')]?_0x34fac8[_0xebdd('0x32')]:_0x1ae2b4[_0xebdd('0x31')];if(_0x3b05ba[_0xebdd('0x2e')][_0xebdd('0x40')]){_0x34fac8['include']=[{'all':!![]}];}_0x34fac8=_[_0xebdd('0x3c')]({},_0x34fac8,_0x3b05ba[_0xebdd('0x3e')]);return db[_0xebdd('0x3f')][_0xebdd('0x47')](_0x34fac8)[_0xebdd('0x20')](handleEntityNotFound(_0x6d3544,null))[_0xebdd('0x20')](respondWithResult(_0x6d3544,null))['catch'](handleError(_0x6d3544,null));};exports[_0xebdd('0x48')]=function(_0xc63cdb,_0x3b8e59){return db['SquareOdbc']['create'](_0xc63cdb['body'],{})['then'](function(_0x2d93b3){var _0x663ef0=_0xc63cdb[_0xebdd('0x49')][_0xebdd('0x22')]({'plain':!![]});if(!_0x663ef0)throw new Error(_0xebdd('0x4a'));if(_0x663ef0[_0xebdd('0x4b')]===_0xebdd('0x49')){var _0x542ece=_0x2d93b3[_0xebdd('0x22')]({'plain':!![]});var _0x1d8202=_0xebdd('0x4c');return db[_0xebdd('0x4d')]['find']({'where':{'name':_0x1d8202,'userProfileId':_0x663ef0[_0xebdd('0x4e')]},'raw':!![]})[_0xebdd('0x20')](function(_0x22c978){if(_0x22c978&&_0x22c978[_0xebdd('0x4f')]===0x0){return db[_0xebdd('0x23')][_0xebdd('0x48')]({'name':_0x542ece[_0xebdd('0x26')],'resourceId':_0x542ece['id'],'type':_0x22c978[_0xebdd('0x26')],'sectionId':_0x22c978['id']},{})[_0xebdd('0x20')](function(){return _0x2d93b3;});}else{return _0x2d93b3;}})[_0xebdd('0x50')](function(_0x13a22a){logger['error'](_0xebdd('0x51'),_0x13a22a);throw _0x13a22a;});}return _0x2d93b3;})[_0xebdd('0x20')](respondWithResult(_0x3b8e59,0xc9))[_0xebdd('0x50')](handleError(_0x3b8e59,null));};exports[_0xebdd('0x1f')]=function(_0x331844,_0x57890a){if(_0x331844[_0xebdd('0x52')]['id']){delete _0x331844[_0xebdd('0x52')]['id'];}return db['SquareOdbc']['find']({'where':{'id':_0x331844[_0xebdd('0x45')]['id']}})[_0xebdd('0x20')](handleEntityNotFound(_0x57890a,null))[_0xebdd('0x20')](saveUpdates(_0x331844['body'],null))[_0xebdd('0x20')](respondWithResult(_0x57890a,null))[_0xebdd('0x50')](handleError(_0x57890a,null));};exports[_0xebdd('0x21')]=function(_0x529f87,_0xd52017){return db[_0xebdd('0x3f')][_0xebdd('0x47')]({'where':{'id':_0x529f87[_0xebdd('0x45')]['id']}})[_0xebdd('0x20')](handleEntityNotFound(_0xd52017,null))[_0xebdd('0x20')](removeEntity(_0xd52017,null))[_0xebdd('0x50')](handleError(_0xd52017,null));};exports[_0xebdd('0x53')]=function(_0x58da1c,_0x33693e,_0x544619){var _0x1217ec;return db[_0xebdd('0x3f')]['find']({'where':{'id':_0x58da1c[_0xebdd('0x45')]['id']},'attributes':['id',_0xebdd('0x54')]})[_0xebdd('0x20')](handleEntityNotFound(_0x33693e,null))[_0xebdd('0x20')](function(_0x5b6191){if(_0x5b6191){var _0x1e37ad=require(_0xebdd('0x55'))();_0x1e37ad[_0xebdd('0x56')](_0x5b6191[_0xebdd('0x54')]);_0x1e37ad[_0xebdd('0x57')]();return _0x5b6191;}})[_0xebdd('0x20')](respondWithResult(_0x33693e,null))[_0xebdd('0x50')](handleError(_0x33693e,null));};
\ No newline at end of file
+var _0xe427=['limit','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','error','stack','send','index','map','SquareOdbc','rawAttributes','fieldName','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','type','name','options','count','includeAll','include','findAll','rows','show','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ODBC','UserProfileSection','userProfileId','catch','params','test','dsn','odbc','openSync','closeSync','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xe427,0xef));var _0x7e42=function(_0x49df19,_0x22eb80){_0x49df19=_0x49df19-0x0;var _0x154d18=_0xe427[_0x49df19];return _0x154d18;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7e42('0x0'));var zipdir=require(_0x7e42('0x1'));var jsonpatch=require(_0x7e42('0x2'));var rp=require(_0x7e42('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x7e42('0x4'));var util=require(_0x7e42('0x5'));var path=require('path');var sox=require(_0x7e42('0x6'));var csv=require(_0x7e42('0x7'));var ejs=require(_0x7e42('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7e42('0x9'));var squel=require(_0x7e42('0xa'));var crypto=require('crypto');var jsforce=require(_0x7e42('0xb'));var deskjs=require(_0x7e42('0xc'));var toCsv=require(_0x7e42('0x7'));var querystring=require('querystring');var Papa=require(_0x7e42('0xd'));var Redis=require(_0x7e42('0xe'));var authService=require(_0x7e42('0xf'));var qs=require(_0x7e42('0x10'));var as=require(_0x7e42('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7e42('0x12'))(_0x7e42('0x13'));var utils=require(_0x7e42('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x7e42('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x23fbc5,_0x3af9f6){_0x3af9f6=_0x3af9f6||0xcc;return function(_0x50148a){if(_0x50148a){return _0x23fbc5[_0x7e42('0x16')](_0x3af9f6);}return _0x23fbc5[_0x7e42('0x17')](_0x3af9f6)[_0x7e42('0x18')]();};}function respondWithResult(_0x4de560,_0x378f39){_0x378f39=_0x378f39||0xc8;return function(_0xe910a9){if(_0xe910a9){return _0x4de560[_0x7e42('0x17')](_0x378f39)[_0x7e42('0x19')](_0xe910a9);}};}function respondWithFilteredResult(_0x228ee2,_0x1dd47f){return function(_0xdf3b5a){if(_0xdf3b5a){var _0x4a59e0=typeof _0x1dd47f[_0x7e42('0x1a')]===_0x7e42('0x1b')&&typeof _0x1dd47f[_0x7e42('0x1c')]===_0x7e42('0x1b');var _0x4b52ea=_0xdf3b5a['count'];var _0x2db169=_0x4a59e0?0x0:_0x1dd47f['offset'];var _0x2fbf1c=_0x4a59e0?_0xdf3b5a['count']:_0x1dd47f[_0x7e42('0x1a')]+_0x1dd47f['limit'];var _0x4c800f;if(_0x2fbf1c>=_0x4b52ea){_0x2fbf1c=_0x4b52ea;_0x4c800f=0xc8;}else{_0x4c800f=0xce;}_0x228ee2['status'](_0x4c800f);return _0x228ee2[_0x7e42('0x1d')](_0x7e42('0x1e'),_0x2db169+'-'+_0x2fbf1c+'/'+_0x4b52ea)[_0x7e42('0x19')](_0xdf3b5a);}return null;};}function patchUpdates(_0x2f0405){return function(_0xf53c85){try{jsonpatch[_0x7e42('0x1f')](_0xf53c85,_0x2f0405,!![]);}catch(_0x3fee8a){return BPromise[_0x7e42('0x20')](_0x3fee8a);}return _0xf53c85[_0x7e42('0x21')]();};}function saveUpdates(_0x38d7d9,_0x1ed5a5){return function(_0x503da8){if(_0x503da8){return _0x503da8[_0x7e42('0x22')](_0x38d7d9)[_0x7e42('0x23')](function(_0x305201){return _0x305201;});}return null;};}function removeEntity(_0x256896,_0x3ff494){return function(_0x34dc5d){if(_0x34dc5d){return _0x34dc5d[_0x7e42('0x24')]()[_0x7e42('0x23')](function(){var _0x4b48af=_0x34dc5d[_0x7e42('0x25')]({'plain':!![]});var _0x472848='ODBC';return db[_0x7e42('0x26')]['destroy']({'where':{'type':_0x472848,'resourceId':_0x4b48af['id']}})['then'](function(){return _0x34dc5d;});})[_0x7e42('0x23')](function(){_0x256896[_0x7e42('0x17')](0xcc)[_0x7e42('0x18')]();});}};}function handleEntityNotFound(_0xb8fcaf,_0x2c429e){return function(_0x410bb7){if(!_0x410bb7){_0xb8fcaf[_0x7e42('0x16')](0x194);}return _0x410bb7;};}function handleError(_0x1106a5,_0x276135){_0x276135=_0x276135||0x1f4;return function(_0x561059){logger[_0x7e42('0x27')](_0x561059[_0x7e42('0x28')]);if(_0x561059['name']){delete _0x561059['name'];}_0x1106a5['status'](_0x276135)[_0x7e42('0x29')](_0x561059);};}exports[_0x7e42('0x2a')]=function(_0x404325,_0x37e4d1){var _0x90dc80={},_0x4dee16={},_0x304ef2={'count':0x0,'rows':[]};var _0x176cdf=_[_0x7e42('0x2b')](db[_0x7e42('0x2c')][_0x7e42('0x2d')],function(_0x29b5c5){return{'name':_0x29b5c5[_0x7e42('0x2e')],'type':_0x29b5c5['type'][_0x7e42('0x2f')]};});_0x4dee16[_0x7e42('0x30')]=_[_0x7e42('0x2b')](_0x176cdf,'name');_0x4dee16[_0x7e42('0x31')]=_['keys'](_0x404325[_0x7e42('0x31')]);_0x4dee16['filters']=_[_0x7e42('0x32')](_0x4dee16[_0x7e42('0x30')],_0x4dee16['query']);_0x90dc80[_0x7e42('0x33')]=_[_0x7e42('0x32')](_0x4dee16[_0x7e42('0x30')],qs[_0x7e42('0x34')](_0x404325[_0x7e42('0x31')][_0x7e42('0x34')]));_0x90dc80['attributes']=_0x90dc80['attributes'][_0x7e42('0x35')]?_0x90dc80[_0x7e42('0x33')]:_0x4dee16[_0x7e42('0x30')];if(!_0x404325['query'][_0x7e42('0x36')](_0x7e42('0x37'))){_0x90dc80['limit']=qs['limit'](_0x404325[_0x7e42('0x31')][_0x7e42('0x1c')]);_0x90dc80[_0x7e42('0x1a')]=qs[_0x7e42('0x1a')](_0x404325['query'][_0x7e42('0x1a')]);}_0x90dc80[_0x7e42('0x38')]=qs[_0x7e42('0x39')](_0x404325[_0x7e42('0x31')][_0x7e42('0x39')]);_0x90dc80['where']=qs[_0x7e42('0x3a')](_[_0x7e42('0x3b')](_0x404325[_0x7e42('0x31')],_0x4dee16[_0x7e42('0x3a')]),_0x176cdf);if(_0x404325[_0x7e42('0x31')][_0x7e42('0x3c')]){_0x90dc80[_0x7e42('0x3d')]=_[_0x7e42('0x3e')](_0x90dc80[_0x7e42('0x3d')],{'$or':_[_0x7e42('0x2b')](_0x176cdf,function(_0x8f6fbd){if(_0x8f6fbd[_0x7e42('0x3f')]!=='VIRTUAL'){var _0x24879e={};_0x24879e[_0x8f6fbd[_0x7e42('0x40')]]={'$like':'%'+_0x404325[_0x7e42('0x31')][_0x7e42('0x3c')]+'%'};return _0x24879e;}})});}_0x90dc80=_[_0x7e42('0x3e')]({},_0x90dc80,_0x404325[_0x7e42('0x41')]);var _0x279f29={'where':_0x90dc80[_0x7e42('0x3d')]};return db[_0x7e42('0x2c')]['count'](_0x279f29)['then'](function(_0x5ab246){_0x304ef2[_0x7e42('0x42')]=_0x5ab246;if(_0x404325[_0x7e42('0x31')][_0x7e42('0x43')]){_0x90dc80[_0x7e42('0x44')]=[{'all':!![]}];}return db['SquareOdbc'][_0x7e42('0x45')](_0x90dc80);})[_0x7e42('0x23')](function(_0x4048b5){_0x304ef2[_0x7e42('0x46')]=_0x4048b5;return _0x304ef2;})[_0x7e42('0x23')](respondWithFilteredResult(_0x37e4d1,_0x90dc80))['catch'](handleError(_0x37e4d1,null));};exports[_0x7e42('0x47')]=function(_0x118850,_0x3df3df){var _0x307360={'raw':!![],'where':{'id':_0x118850['params']['id']}},_0x311034={};_0x311034[_0x7e42('0x30')]=_[_0x7e42('0x48')](db[_0x7e42('0x2c')]['rawAttributes']);_0x311034[_0x7e42('0x31')]=_[_0x7e42('0x48')](_0x118850['query']);_0x311034[_0x7e42('0x3a')]=_['intersection'](_0x311034[_0x7e42('0x30')],_0x311034['query']);_0x307360[_0x7e42('0x33')]=_[_0x7e42('0x32')](_0x311034[_0x7e42('0x30')],qs['fields'](_0x118850[_0x7e42('0x31')][_0x7e42('0x34')]));_0x307360['attributes']=_0x307360[_0x7e42('0x33')][_0x7e42('0x35')]?_0x307360[_0x7e42('0x33')]:_0x311034[_0x7e42('0x30')];if(_0x118850[_0x7e42('0x31')]['includeAll']){_0x307360['include']=[{'all':!![]}];}_0x307360=_['merge']({},_0x307360,_0x118850[_0x7e42('0x41')]);return db[_0x7e42('0x2c')][_0x7e42('0x49')](_0x307360)[_0x7e42('0x23')](handleEntityNotFound(_0x3df3df,null))[_0x7e42('0x23')](respondWithResult(_0x3df3df,null))['catch'](handleError(_0x3df3df,null));};exports['create']=function(_0x3e0810,_0x2bba31){return db[_0x7e42('0x2c')][_0x7e42('0x4a')](_0x3e0810[_0x7e42('0x4b')],{})[_0x7e42('0x23')](function(_0x334dd8){var _0x57a468=_0x3e0810[_0x7e42('0x4c')][_0x7e42('0x25')]({'plain':!![]});if(!_0x57a468)throw new Error(_0x7e42('0x4d'));if(_0x57a468[_0x7e42('0x4e')]===_0x7e42('0x4c')){var _0x48ed82=_0x334dd8['get']({'plain':!![]});var _0x1299e7=_0x7e42('0x4f');return db[_0x7e42('0x50')][_0x7e42('0x49')]({'where':{'name':_0x1299e7,'userProfileId':_0x57a468[_0x7e42('0x51')]},'raw':!![]})[_0x7e42('0x23')](function(_0x33ddd8){if(_0x33ddd8&&_0x33ddd8['autoAssociation']===0x0){return db['UserProfileResource'][_0x7e42('0x4a')]({'name':_0x48ed82[_0x7e42('0x40')],'resourceId':_0x48ed82['id'],'type':_0x33ddd8[_0x7e42('0x40')],'sectionId':_0x33ddd8['id']},{})[_0x7e42('0x23')](function(){return _0x334dd8;});}else{return _0x334dd8;}})['catch'](function(_0x4fb21d){logger[_0x7e42('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4fb21d);throw _0x4fb21d;});}return _0x334dd8;})[_0x7e42('0x23')](respondWithResult(_0x2bba31,0xc9))[_0x7e42('0x52')](handleError(_0x2bba31,null));};exports[_0x7e42('0x22')]=function(_0x327ee7,_0x5295a3){if(_0x327ee7[_0x7e42('0x4b')]['id']){delete _0x327ee7[_0x7e42('0x4b')]['id'];}return db[_0x7e42('0x2c')][_0x7e42('0x49')]({'where':{'id':_0x327ee7[_0x7e42('0x53')]['id']}})[_0x7e42('0x23')](handleEntityNotFound(_0x5295a3,null))[_0x7e42('0x23')](saveUpdates(_0x327ee7[_0x7e42('0x4b')],null))[_0x7e42('0x23')](respondWithResult(_0x5295a3,null))['catch'](handleError(_0x5295a3,null));};exports['destroy']=function(_0x114c51,_0x54ae62){return db[_0x7e42('0x2c')]['find']({'where':{'id':_0x114c51['params']['id']}})[_0x7e42('0x23')](handleEntityNotFound(_0x54ae62,null))[_0x7e42('0x23')](removeEntity(_0x54ae62,null))[_0x7e42('0x52')](handleError(_0x54ae62,null));};exports[_0x7e42('0x54')]=function(_0x39b2c1,_0x2d3d98,_0x18025a){var _0x28370e;return db[_0x7e42('0x2c')]['find']({'where':{'id':_0x39b2c1['params']['id']},'attributes':['id',_0x7e42('0x55')]})[_0x7e42('0x23')](handleEntityNotFound(_0x2d3d98,null))[_0x7e42('0x23')](function(_0x35fe2d){if(_0x35fe2d){var _0xe79318=require(_0x7e42('0x56'))();_0xe79318[_0x7e42('0x57')](_0x35fe2d[_0x7e42('0x55')]);_0xe79318[_0x7e42('0x58')]();return _0x35fe2d;}})[_0x7e42('0x23')](respondWithResult(_0x2d3d98,null))[_0x7e42('0x52')](handleError(_0x2d3d98,null));};
\ No newline at end of file
index c1f67fe..8968262 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d59=['../../config/logger','api','moment','bluebird','request-promise','rimraf','exports','define','SquareOdbc','square_odbc','util'];(function(_0x55220a,_0xb8b459){var _0x1af399=function(_0x1b1d8d){while(--_0x1b1d8d){_0x55220a['push'](_0x55220a['shift']());}};_0x1af399(++_0xb8b459);}(_0x5d59,0x15f));var _0x95d5=function(_0x10d341,_0x57ff35){_0x10d341=_0x10d341-0x0;var _0xddc36d=_0x5d59[_0x10d341];return _0xddc36d;};'use strict';var _=require('lodash');var util=require(_0x95d5('0x0'));var logger=require(_0x95d5('0x1'))(_0x95d5('0x2'));var moment=require(_0x95d5('0x3'));var BPromise=require(_0x95d5('0x4'));var rp=require(_0x95d5('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x95d5('0x6'));var config=require('../../config/environment');var attributes=require('./squareOdbc.attributes');module[_0x95d5('0x7')]=function(_0x4a733e,_0x4b4e5f){return _0x4a733e[_0x95d5('0x8')](_0x95d5('0x9'),attributes,{'tableName':_0x95d5('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x901e=['util','../../config/logger','bluebird','request-promise','path','../../config/environment','./squareOdbc.attributes','define','SquareOdbc','square_odbc','lodash'];(function(_0x40897c,_0xdb8fda){var _0x1d9f8f=function(_0x78ad0f){while(--_0x78ad0f){_0x40897c['push'](_0x40897c['shift']());}};_0x1d9f8f(++_0xdb8fda);}(_0x901e,0x1a1));var _0xe901=function(_0x4e9d3c,_0x1f4b98){_0x4e9d3c=_0x4e9d3c-0x0;var _0x2d0825=_0x901e[_0x4e9d3c];return _0x2d0825;};'use strict';var _=require(_0xe901('0x0'));var util=require(_0xe901('0x1'));var logger=require(_0xe901('0x2'))('api');var moment=require('moment');var BPromise=require(_0xe901('0x3'));var rp=require(_0xe901('0x4'));var fs=require('fs');var path=require(_0xe901('0x5'));var rimraf=require('rimraf');var config=require(_0xe901('0x6'));var attributes=require(_0xe901('0x7'));module['exports']=function(_0x93a36a,_0x5632da){return _0x93a36a[_0xe901('0x8')](_0xe901('0x9'),attributes,{'tableName':_0xe901('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2a18f9e..05188fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9889=['catch','lodash','bluebird','randomstring','ioredis','rpc','jayson/promise','http','request','then','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','error','code','message','result','options','raw','where','map','include','model','attributes','ShowSquareOdbc'];(function(_0x48b437,_0x27759d){var _0x53d9b4=function(_0x2970f3){while(--_0x2970f3){_0x48b437['push'](_0x48b437['shift']());}};_0x53d9b4(++_0x27759d);}(_0x9889,0x17b));var _0x9988=function(_0x5bb941,_0x5d056d){_0x5bb941=_0x5bb941-0x0;var _0x2556eb=_0x9889[_0x5bb941];return _0x2556eb;};'use strict';var _=require(_0x9988('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x9988('0x1'));var rs=require(_0x9988('0x2'));var fs=require('fs');var Redis=require(_0x9988('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9988('0x4'));var config=require('../../config/environment');var jayson=require(_0x9988('0x5'));var client=jayson['client'][_0x9988('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x1243cb,_0x11bb8d,_0x3e5ac4){return new BPromise(function(_0x2e4d7d,_0x381523){return client[_0x9988('0x7')](_0x1243cb,_0x3e5ac4)[_0x9988('0x8')](function(_0x4ebdba){logger[_0x9988('0x9')](_0x9988('0xa'),_0x11bb8d,_0x9988('0xb'));logger[_0x9988('0xc')](_0x9988('0xd'),_0x11bb8d,_0x9988('0xb'),JSON['stringify'](_0x4ebdba));if(_0x4ebdba[_0x9988('0xe')]){if(_0x4ebdba[_0x9988('0xe')][_0x9988('0xf')]===0x1f4){logger['error'](_0x9988('0xa'),_0x11bb8d,_0x4ebdba[_0x9988('0xe')]['message']);return _0x381523(_0x4ebdba[_0x9988('0xe')][_0x9988('0x10')]);}logger[_0x9988('0xe')](_0x9988('0xa'),_0x11bb8d,_0x4ebdba[_0x9988('0xe')][_0x9988('0x10')]);return _0x2e4d7d(_0x4ebdba[_0x9988('0xe')][_0x9988('0x10')]);}else{logger[_0x9988('0x9')]('SquareOdbc,\x20%s,\x20%s',_0x11bb8d,_0x9988('0xb'));_0x2e4d7d(_0x4ebdba[_0x9988('0x11')]['message']);}})['catch'](function(_0x1a893a){logger[_0x9988('0xe')](_0x9988('0xa'),_0x11bb8d,_0x1a893a);_0x381523(_0x1a893a);});});}exports['ShowSquareOdbc']=function(_0x2a5f5a){var _0x5db448=this;return new Promise(function(_0x41f157,_0x261acf){return db['SquareOdbc']['find']({'raw':_0x2a5f5a[_0x9988('0x12')]?_0x2a5f5a[_0x9988('0x12')][_0x9988('0x13')]===undefined?!![]:![]:!![],'where':_0x2a5f5a['options']?_0x2a5f5a['options'][_0x9988('0x14')]||null:null,'attributes':_0x2a5f5a[_0x9988('0x12')]?_0x2a5f5a[_0x9988('0x12')]['attributes']||null:null,'include':_0x2a5f5a[_0x9988('0x12')]?_0x2a5f5a[_0x9988('0x12')]['include']?_[_0x9988('0x15')](_0x2a5f5a[_0x9988('0x12')][_0x9988('0x16')],function(_0x198813){return{'model':db[_0x198813[_0x9988('0x17')]],'as':_0x198813['as'],'attributes':_0x198813[_0x9988('0x18')],'include':_0x198813[_0x9988('0x16')]?_[_0x9988('0x15')](_0x198813[_0x9988('0x16')],function(_0x3c296a){return{'model':db[_0x3c296a[_0x9988('0x17')]],'as':_0x3c296a['as'],'attributes':_0x3c296a[_0x9988('0x18')],'include':_0x3c296a['include']?_[_0x9988('0x15')](_0x3c296a['include'],function(_0x4123ea){return{'model':db[_0x4123ea[_0x9988('0x17')]],'as':_0x4123ea['as'],'attributes':_0x4123ea[_0x9988('0x18')]};}):[]};}):[]};}):[]:[]})[_0x9988('0x8')](function(_0x1d520f){logger[_0x9988('0x9')](_0x9988('0x19'),_0x2a5f5a);logger[_0x9988('0xc')](_0x9988('0x19'),_0x2a5f5a,JSON['stringify'](_0x1d520f));_0x41f157(_0x1d520f);})[_0x9988('0x1a')](function(_0x596746){logger[_0x9988('0xe')](_0x9988('0x19'),_0x596746[_0x9988('0x10')],_0x2a5f5a);_0x261acf(_0x5db448[_0x9988('0xe')](0x1f4,_0x596746[_0x9988('0x10')]));});});};
\ No newline at end of file
+var _0x693d=['ShowSquareOdbc','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','message','SquareOdbc','find','options','raw','attributes','include','map','model'];(function(_0x26c08a,_0x4369d3){var _0x5a8e4f=function(_0x213f02){while(--_0x213f02){_0x26c08a['push'](_0x26c08a['shift']());}};_0x5a8e4f(++_0x4369d3);}(_0x693d,0x195));var _0xd693=function(_0x44241f,_0x404b5a){_0x44241f=_0x44241f-0x0;var _0xd60e65=_0x693d[_0x44241f];return _0xd60e65;};'use strict';var _=require(_0xd693('0x0'));var util=require(_0xd693('0x1'));var moment=require(_0xd693('0x2'));var BPromise=require(_0xd693('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd693('0x4'))['db'];var utils=require(_0xd693('0x5'));var logger=require(_0xd693('0x6'))(_0xd693('0x7'));var config=require('../../config/environment');var jayson=require(_0xd693('0x8'));var client=jayson[_0xd693('0x9')][_0xd693('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2f7be1,_0x1f38ea,_0x521164){return new BPromise(function(_0x1a8103,_0x5907fb){return client[_0xd693('0xb')](_0x2f7be1,_0x521164)[_0xd693('0xc')](function(_0x57db59){logger[_0xd693('0xd')](_0xd693('0xe'),_0x1f38ea,_0xd693('0xf'));logger[_0xd693('0x10')](_0xd693('0x11'),_0x1f38ea,_0xd693('0xf'),JSON[_0xd693('0x12')](_0x57db59));if(_0x57db59['error']){if(_0x57db59['error']['code']===0x1f4){logger[_0xd693('0x13')]('SquareOdbc,\x20%s,\x20%s',_0x1f38ea,_0x57db59[_0xd693('0x13')][_0xd693('0x14')]);return _0x5907fb(_0x57db59['error'][_0xd693('0x14')]);}logger[_0xd693('0x13')](_0xd693('0xe'),_0x1f38ea,_0x57db59[_0xd693('0x13')]['message']);return _0x1a8103(_0x57db59[_0xd693('0x13')][_0xd693('0x14')]);}else{logger[_0xd693('0xd')]('SquareOdbc,\x20%s,\x20%s',_0x1f38ea,_0xd693('0xf'));_0x1a8103(_0x57db59['result']['message']);}})['catch'](function(_0x30612a){logger[_0xd693('0x13')]('SquareOdbc,\x20%s,\x20%s',_0x1f38ea,_0x30612a);_0x5907fb(_0x30612a);});});}exports['ShowSquareOdbc']=function(_0x35f7a3){var _0x2360c0=this;return new Promise(function(_0x380363,_0x935af){return db[_0xd693('0x15')][_0xd693('0x16')]({'raw':_0x35f7a3[_0xd693('0x17')]?_0x35f7a3[_0xd693('0x17')][_0xd693('0x18')]===undefined?!![]:![]:!![],'where':_0x35f7a3[_0xd693('0x17')]?_0x35f7a3[_0xd693('0x17')]['where']||null:null,'attributes':_0x35f7a3[_0xd693('0x17')]?_0x35f7a3['options'][_0xd693('0x19')]||null:null,'include':_0x35f7a3[_0xd693('0x17')]?_0x35f7a3[_0xd693('0x17')][_0xd693('0x1a')]?_[_0xd693('0x1b')](_0x35f7a3[_0xd693('0x17')]['include'],function(_0x5bb792){return{'model':db[_0x5bb792[_0xd693('0x1c')]],'as':_0x5bb792['as'],'attributes':_0x5bb792[_0xd693('0x19')],'include':_0x5bb792[_0xd693('0x1a')]?_[_0xd693('0x1b')](_0x5bb792['include'],function(_0xda2654){return{'model':db[_0xda2654['model']],'as':_0xda2654['as'],'attributes':_0xda2654[_0xd693('0x19')],'include':_0xda2654[_0xd693('0x1a')]?_['map'](_0xda2654[_0xd693('0x1a')],function(_0x33308c){return{'model':db[_0x33308c[_0xd693('0x1c')]],'as':_0x33308c['as'],'attributes':_0x33308c[_0xd693('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2a9eac){logger['info'](_0xd693('0x1d'),_0x35f7a3);logger[_0xd693('0x10')](_0xd693('0x1d'),_0x35f7a3,JSON['stringify'](_0x2a9eac));_0x380363(_0x2a9eac);})[_0xd693('0x1e')](function(_0x1259bf){logger[_0xd693('0x13')]('ShowSquareOdbc',_0x1259bf[_0xd693('0x14')],_0x35f7a3);_0x935af(_0x2360c0[_0xd693('0x13')](0x1f4,_0x1259bf[_0xd693('0x14')]));});});};
\ No newline at end of file
index c55c581..9632945 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a86=['/:id','show','getUsers','create','addUsers','put','delete','destroy','/:id/users','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated','index'];(function(_0x5ddd77,_0x29d718){var _0x25e6e0=function(_0x356b5c){while(--_0x356b5c){_0x5ddd77['push'](_0x5ddd77['shift']());}};_0x25e6e0(++_0x29d718);}(_0x9a86,0x1ed));var _0x69a8=function(_0x4ded65,_0xc8d7c1){_0x4ded65=_0x4ded65-0x0;var _0x5864fb=_0x9a86[_0x4ded65];return _0x5864fb;};'use strict';var multer=require(_0x69a8('0x0'));var util=require(_0x69a8('0x1'));var path=require('path');var timeout=require(_0x69a8('0x2'));var express=require(_0x69a8('0x3'));var router=express[_0x69a8('0x4')]();var fs_extra=require(_0x69a8('0x5'));var auth=require(_0x69a8('0x6'));var interaction=require(_0x69a8('0x7'));var config=require(_0x69a8('0x8'));var controller=require(_0x69a8('0x9'));router[_0x69a8('0xa')]('/',auth[_0x69a8('0xb')](),controller[_0x69a8('0xc')]);router[_0x69a8('0xa')](_0x69a8('0xd'),auth[_0x69a8('0xb')](),controller[_0x69a8('0xe')]);router[_0x69a8('0xa')]('/:id/users',auth[_0x69a8('0xb')](),controller[_0x69a8('0xf')]);router['post']('/',auth[_0x69a8('0xb')](),controller[_0x69a8('0x10')]);router['post']('/:id/users',auth[_0x69a8('0xb')](),controller[_0x69a8('0x11')]);router[_0x69a8('0x12')](_0x69a8('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x69a8('0x13')]('/:id',auth[_0x69a8('0xb')](),controller[_0x69a8('0x14')]);router[_0x69a8('0x13')](_0x69a8('0x15'),auth[_0x69a8('0xb')](),controller['removeUsers']);module[_0x69a8('0x16')]=router;
\ No newline at end of file
+var _0x99d1=['show','/:id/users','getUsers','create','addUsers','destroy','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareProject.controller','get','isAuthenticated','index','/:id'];(function(_0x1ac849,_0xf10cc3){var _0xe70031=function(_0xec0c9f){while(--_0xec0c9f){_0x1ac849['push'](_0x1ac849['shift']());}};_0xe70031(++_0xf10cc3);}(_0x99d1,0x104));var _0x199d=function(_0x4aae52,_0x2eda48){_0x4aae52=_0x4aae52-0x0;var _0x370085=_0x99d1[_0x4aae52];return _0x370085;};'use strict';var multer=require(_0x199d('0x0'));var util=require('util');var path=require(_0x199d('0x1'));var timeout=require(_0x199d('0x2'));var express=require(_0x199d('0x3'));var router=express[_0x199d('0x4')]();var fs_extra=require(_0x199d('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x199d('0x6'));var config=require(_0x199d('0x7'));var controller=require(_0x199d('0x8'));router[_0x199d('0x9')]('/',auth[_0x199d('0xa')](),controller[_0x199d('0xb')]);router[_0x199d('0x9')](_0x199d('0xc'),auth[_0x199d('0xa')](),controller[_0x199d('0xd')]);router[_0x199d('0x9')](_0x199d('0xe'),auth[_0x199d('0xa')](),controller[_0x199d('0xf')]);router['post']('/',auth[_0x199d('0xa')](),controller[_0x199d('0x10')]);router['post'](_0x199d('0xe'),auth[_0x199d('0xa')](),controller[_0x199d('0x11')]);router['put'](_0x199d('0xc'),auth[_0x199d('0xa')](),controller['update']);router['delete'](_0x199d('0xc'),auth[_0x199d('0xa')](),controller[_0x199d('0x12')]);router[_0x199d('0x13')](_0x199d('0xe'),auth[_0x199d('0xa')](),controller['removeUsers']);module[_0x199d('0x14')]=router;
\ No newline at end of file
index 754cac7..bee6941 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f40=['name','STRING','TEXT','BLOB','long','getDataValue','preproduction','toString','utf8','production','DATE','exports'];(function(_0x35de9d,_0x39d81c){var _0x2b3874=function(_0xf633dd){while(--_0xf633dd){_0x35de9d['push'](_0x35de9d['shift']());}};_0x2b3874(++_0x39d81c);}(_0x9f40,0x9b));var _0x09f4=function(_0x322b81,_0x1944de){_0x322b81=_0x322b81-0x0;var _0x4c4948=_0x9f40[_0x322b81];return _0x4c4948;};'use strict';var Sequelize=require('sequelize');module[_0x09f4('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x09f4('0x1'),'allowNull':![]},'description':{'type':Sequelize[_0x09f4('0x2')]},'notes':{'type':Sequelize[_0x09f4('0x3')]},'preproduction':{'type':Sequelize[_0x09f4('0x4')](_0x09f4('0x5')),'get':function(){if(this[_0x09f4('0x6')]('preproduction')){return this[_0x09f4('0x6')](_0x09f4('0x7'))[_0x09f4('0x8')](_0x09f4('0x9'));}}},'production':{'type':Sequelize[_0x09f4('0x4')](_0x09f4('0x5')),'get':function(){if(this[_0x09f4('0x6')](_0x09f4('0xa'))){return this[_0x09f4('0x6')](_0x09f4('0xa'))[_0x09f4('0x8')](_0x09f4('0x9'));}}},'savedAt':{'type':Sequelize[_0x09f4('0xb')]},'publishedAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0xb8d1=['utf8','production','DATE','sequelize','exports','STRING','name','TEXT','BLOB','long','getDataValue','preproduction'];(function(_0x13c98c,_0x10f298){var _0x474cbb=function(_0x5b7f6e){while(--_0x5b7f6e){_0x13c98c['push'](_0x13c98c['shift']());}};_0x474cbb(++_0x10f298);}(_0xb8d1,0xdb));var _0x1b8d=function(_0x200827,_0x4af951){_0x200827=_0x200827-0x0;var _0x120047=_0xb8d1[_0x200827];return _0x120047;};'use strict';var Sequelize=require(_0x1b8d('0x0'));module[_0x1b8d('0x1')]={'name':{'type':Sequelize[_0x1b8d('0x2')],'unique':_0x1b8d('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x1b8d('0x2')]},'notes':{'type':Sequelize[_0x1b8d('0x4')]},'preproduction':{'type':Sequelize[_0x1b8d('0x5')](_0x1b8d('0x6')),'get':function(){if(this[_0x1b8d('0x7')](_0x1b8d('0x8'))){return this[_0x1b8d('0x7')](_0x1b8d('0x8'))['toString'](_0x1b8d('0x9'));}}},'production':{'type':Sequelize[_0x1b8d('0x5')](_0x1b8d('0x6')),'get':function(){if(this[_0x1b8d('0x7')](_0x1b8d('0xa'))){return this[_0x1b8d('0x7')](_0x1b8d('0xa'))['toString']('utf8');}}},'savedAt':{'type':Sequelize[_0x1b8d('0xb')]},'publishedAt':{'type':Sequelize[_0x1b8d('0xb')]}};
\ No newline at end of file
index ebd18d9..a00f383 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd943=['catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','SquareProjects','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','stringify','pick','production','addUsers','ids','omit','removeUsers','isArray','emit','userSquareProject:remove','getUsers','findOne','User','order','lodash','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','end','status','offset','undefined','limit','count','set','Content-Range','json','update','then','destroy','get','UserProfileResource','publish','sendStatus','error','stack','name','send','index','map','SquareProject','rawAttributes','fieldName','type','key','query','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','keys'];(function(_0x380675,_0x18f38c){var _0x7d1b1f=function(_0x3c5566){while(--_0x3c5566){_0x380675['push'](_0x380675['shift']());}};_0x7d1b1f(++_0x18f38c);}(_0xd943,0x15d));var _0x3d94=function(_0x459a4e,_0x2243db){_0x459a4e=_0x459a4e-0x0;var _0x4920c6=_0xd943[_0x459a4e];return _0x4920c6;};'use strict';var _=require(_0x3d94('0x0'));var Redis=require(_0x3d94('0x1'));var qs=require(_0x3d94('0x2'));var logger=require(_0x3d94('0x3'))('api');var config=require(_0x3d94('0x4'));var db=require(_0x3d94('0x5'))['db'];config[_0x3d94('0x6')]=_[_0x3d94('0x7')](config[_0x3d94('0x6')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3d94('0x6')]));require('./squareProject.socket')['register'](socket);function respondWithStatusCode(_0x4d29e7,_0x20f4d1){_0x20f4d1=_0x20f4d1||0xcc;return function(_0x35d36a){if(_0x35d36a){return _0x4d29e7['sendStatus'](_0x20f4d1);}return _0x4d29e7['status'](_0x20f4d1)[_0x3d94('0x8')]();};}function respondWithResult(_0x27e381,_0x1cc58c){_0x1cc58c=_0x1cc58c||0xc8;return function(_0x5908a7){if(_0x5908a7){return _0x27e381[_0x3d94('0x9')](_0x1cc58c)['json'](_0x5908a7);}};}function respondWithFilteredResult(_0x39e2fa,_0x301536){return function(_0x5f5041){if(_0x5f5041){var _0x1897de=typeof _0x301536[_0x3d94('0xa')]===_0x3d94('0xb')&&typeof _0x301536[_0x3d94('0xc')]===_0x3d94('0xb');var _0x548b89=_0x5f5041[_0x3d94('0xd')];var _0x2e9af0=_0x1897de?0x0:_0x301536[_0x3d94('0xa')];var _0x4c167c=_0x1897de?_0x5f5041[_0x3d94('0xd')]:_0x301536[_0x3d94('0xa')]+_0x301536[_0x3d94('0xc')];var _0x5d9366;if(_0x4c167c>=_0x548b89){_0x4c167c=_0x548b89;_0x5d9366=0xc8;}else{_0x5d9366=0xce;}_0x39e2fa[_0x3d94('0x9')](_0x5d9366);return _0x39e2fa[_0x3d94('0xe')](_0x3d94('0xf'),_0x2e9af0+'-'+_0x4c167c+'/'+_0x548b89)[_0x3d94('0x10')](_0x5f5041);}return null;};}function saveUpdates(_0xaf939a){return function(_0xd8efaa){if(_0xd8efaa){return _0xd8efaa[_0x3d94('0x11')](_0xaf939a)[_0x3d94('0x12')](function(_0x540658){return _0x540658;});}return null;};}function removeEntity(_0x22676a){return function(_0x1a9315){if(_0x1a9315){return _0x1a9315[_0x3d94('0x13')]()[_0x3d94('0x12')](function(){var _0x4afc92=_0x1a9315[_0x3d94('0x14')]({'plain':!![]});var _0xef8b3='SquareProjects';return db[_0x3d94('0x15')]['destroy']({'where':{'type':_0xef8b3,'resourceId':_0x4afc92['id']}})[_0x3d94('0x12')](function(){return _0x1a9315;});})[_0x3d94('0x12')](function(){var _0x16a6d0=new Redis(config[_0x3d94('0x6')]);_0x16a6d0[_0x3d94('0x16')]('agi',JSON['stringify']({'id':_0x1a9315['id'],'deleted':!![]}));})[_0x3d94('0x12')](function(){_0x22676a[_0x3d94('0x9')](0xcc)[_0x3d94('0x8')]();});}};}function handleEntityNotFound(_0x4edee4){return function(_0x30af25){if(!_0x30af25){_0x4edee4[_0x3d94('0x17')](0x194);}return _0x30af25;};}function handleError(_0x123adc,_0x384f76){_0x384f76=_0x384f76||0x1f4;return function(_0x395133){logger[_0x3d94('0x18')](_0x395133[_0x3d94('0x19')]);if(_0x395133[_0x3d94('0x1a')]){delete _0x395133[_0x3d94('0x1a')];}_0x123adc[_0x3d94('0x9')](_0x384f76)[_0x3d94('0x1b')](_0x395133);};}exports[_0x3d94('0x1c')]=function(_0x292976,_0x3496c3){var _0x2945d2={},_0x5b3b31={},_0x123183={'count':0x0,'rows':[]};var _0x558fd2=_[_0x3d94('0x1d')](db[_0x3d94('0x1e')][_0x3d94('0x1f')],function(_0x439173){return{'name':_0x439173[_0x3d94('0x20')],'type':_0x439173[_0x3d94('0x21')][_0x3d94('0x22')]};});_0x5b3b31['model']=_['map'](_0x558fd2,_0x3d94('0x1a'));_0x5b3b31['query']=_['keys'](_0x292976[_0x3d94('0x23')]);_0x5b3b31['filters']=_[_0x3d94('0x24')](_0x5b3b31[_0x3d94('0x25')],_0x5b3b31[_0x3d94('0x23')]);_0x2945d2['attributes']=_[_0x3d94('0x24')](_0x5b3b31['model'],qs[_0x3d94('0x26')](_0x292976['query'][_0x3d94('0x26')]));_0x2945d2[_0x3d94('0x27')]=_0x2945d2[_0x3d94('0x27')][_0x3d94('0x28')]?_0x2945d2['attributes']:_0x5b3b31[_0x3d94('0x25')];if(!_0x292976['query'][_0x3d94('0x29')](_0x3d94('0x2a'))){_0x2945d2['limit']=qs['limit'](_0x292976[_0x3d94('0x23')][_0x3d94('0xc')]);_0x2945d2[_0x3d94('0xa')]=qs['offset'](_0x292976[_0x3d94('0x23')][_0x3d94('0xa')]);}_0x2945d2['order']=qs[_0x3d94('0x2b')](_0x292976[_0x3d94('0x23')][_0x3d94('0x2b')]);_0x2945d2[_0x3d94('0x2c')]=qs[_0x3d94('0x2d')](_['pick'](_0x292976[_0x3d94('0x23')],_0x5b3b31[_0x3d94('0x2d')]),_0x558fd2);if(_0x292976[_0x3d94('0x23')][_0x3d94('0x2e')]){_0x2945d2[_0x3d94('0x2c')]=_[_0x3d94('0x2f')](_0x2945d2['where'],{'$or':_['map'](_0x558fd2,function(_0xfe58eb){if(_0xfe58eb[_0x3d94('0x21')]!==_0x3d94('0x30')){var _0x438ba3={};_0x438ba3[_0xfe58eb[_0x3d94('0x1a')]]={'$like':'%'+_0x292976[_0x3d94('0x23')][_0x3d94('0x2e')]+'%'};return _0x438ba3;}})});}_0x2945d2=_[_0x3d94('0x2f')]({},_0x2945d2,_0x292976[_0x3d94('0x31')]);var _0x2235f9={'where':_0x2945d2['where']};return db[_0x3d94('0x1e')][_0x3d94('0xd')](_0x2235f9)[_0x3d94('0x12')](function(_0xcc289a){_0x123183['count']=_0xcc289a;if(_0x292976[_0x3d94('0x23')][_0x3d94('0x32')]){_0x2945d2[_0x3d94('0x33')]=[{'all':!![]}];}return db[_0x3d94('0x1e')][_0x3d94('0x34')](_0x2945d2);})['then'](function(_0x217e5e){_0x123183[_0x3d94('0x35')]=_0x217e5e;return _0x123183;})[_0x3d94('0x12')](respondWithFilteredResult(_0x3496c3,_0x2945d2))['catch'](handleError(_0x3496c3,null));};exports['show']=function(_0x4d8a8f,_0x47905e){var _0x3b3550={'raw':![],'where':{'id':_0x4d8a8f[_0x3d94('0x36')]['id']}},_0x22f52c={};_0x22f52c[_0x3d94('0x25')]=_[_0x3d94('0x37')](db[_0x3d94('0x1e')][_0x3d94('0x1f')]);_0x22f52c['query']=_['keys'](_0x4d8a8f[_0x3d94('0x23')]);_0x22f52c[_0x3d94('0x2d')]=_['intersection'](_0x22f52c[_0x3d94('0x25')],_0x22f52c['query']);_0x3b3550[_0x3d94('0x27')]=_[_0x3d94('0x24')](_0x22f52c[_0x3d94('0x25')],qs[_0x3d94('0x26')](_0x4d8a8f[_0x3d94('0x23')]['fields']));_0x3b3550[_0x3d94('0x27')]=_0x3b3550[_0x3d94('0x27')][_0x3d94('0x28')]?_0x3b3550['attributes']:_0x22f52c[_0x3d94('0x25')];if(_0x4d8a8f['query']['includeAll']){_0x3b3550[_0x3d94('0x33')]=[{'all':!![]}];}_0x3b3550=_[_0x3d94('0x2f')]({},_0x3b3550,_0x4d8a8f[_0x3d94('0x31')]);return db[_0x3d94('0x1e')]['find'](_0x3b3550)[_0x3d94('0x12')](handleEntityNotFound(_0x47905e,null))['then'](respondWithResult(_0x47905e,null))[_0x3d94('0x38')](handleError(_0x47905e,null));};exports[_0x3d94('0x39')]=function(_0x35c911,_0x15c8e7){return db[_0x3d94('0x1e')][_0x3d94('0x39')](_0x35c911[_0x3d94('0x3a')],{})['then'](function(_0x10a377){var _0x19dabb=_0x35c911['user']['get']({'plain':!![]});if(!_0x19dabb)throw new Error(_0x3d94('0x3b'));if(_0x19dabb[_0x3d94('0x3c')]==='user'){var _0x3c8571=_0x10a377[_0x3d94('0x14')]({'plain':!![]});var _0x16d505=_0x3d94('0x3d');return db[_0x3d94('0x3e')][_0x3d94('0x3f')]({'where':{'name':_0x16d505,'userProfileId':_0x19dabb[_0x3d94('0x40')]},'raw':!![]})[_0x3d94('0x12')](function(_0x60279f){if(_0x60279f&&_0x60279f[_0x3d94('0x41')]===0x0){return db[_0x3d94('0x15')][_0x3d94('0x39')]({'name':_0x3c8571[_0x3d94('0x1a')],'resourceId':_0x3c8571['id'],'type':_0x60279f[_0x3d94('0x1a')],'sectionId':_0x60279f['id']},{})[_0x3d94('0x12')](function(){return _0x10a377;});}else{return _0x10a377;}})['catch'](function(_0x44df82){logger[_0x3d94('0x18')](_0x3d94('0x42'),_0x44df82);throw _0x44df82;});}return _0x10a377;})[_0x3d94('0x12')](respondWithResult(_0x15c8e7,0xc9))[_0x3d94('0x38')](handleError(_0x15c8e7,null));};exports[_0x3d94('0x11')]=function(_0x129783,_0x33db0a){if(_0x129783[_0x3d94('0x3a')]['id']){delete _0x129783['body']['id'];}return db[_0x3d94('0x1e')]['find']({'where':{'id':_0x129783[_0x3d94('0x36')]['id']}})[_0x3d94('0x12')](handleEntityNotFound(_0x33db0a,null))['then'](saveUpdates(_0x129783[_0x3d94('0x3a')],null))['then'](function(_0x567751){if(!_0x567751)return;var _0x335247=_0x567751['get']({'plain':!![]});return _0x335247;})[_0x3d94('0x12')](function(_0x132e0b){var _0x5b6061=new Redis(config[_0x3d94('0x6')]);_0x5b6061['publish']('agi',JSON[_0x3d94('0x43')](_[_0x3d94('0x44')](_0x132e0b,['id',_0x3d94('0x1a'),_0x3d94('0x45')])));return _0x132e0b;})[_0x3d94('0x12')](respondWithResult(_0x33db0a,null))[_0x3d94('0x38')](handleError(_0x33db0a,null));};exports[_0x3d94('0x13')]=function(_0x2b1168,_0xae892){return db['SquareProject'][_0x3d94('0x3f')]({'where':{'id':_0x2b1168[_0x3d94('0x36')]['id']}})[_0x3d94('0x12')](handleEntityNotFound(_0xae892,null))[_0x3d94('0x12')](removeEntity(_0xae892,null))[_0x3d94('0x38')](handleError(_0xae892,null));};exports[_0x3d94('0x46')]=function(_0x39e9db,_0x126894){return db[_0x3d94('0x1e')][_0x3d94('0x3f')]({'where':{'id':_0x39e9db[_0x3d94('0x36')]['id']}})['then'](handleEntityNotFound(_0x126894,null))[_0x3d94('0x12')](function(_0x55580d){if(_0x55580d){return _0x55580d[_0x3d94('0x46')](_0x39e9db[_0x3d94('0x3a')][_0x3d94('0x47')],_[_0x3d94('0x48')](_0x39e9db[_0x3d94('0x3a')],[_0x3d94('0x47'),'id'])||{});}})[_0x3d94('0x12')](respondWithResult(_0x126894,null))[_0x3d94('0x38')](handleError(_0x126894,null));};exports[_0x3d94('0x49')]=function(_0x5da38c,_0x519ada){return db[_0x3d94('0x1e')]['find']({'where':{'id':_0x5da38c[_0x3d94('0x36')]['id']}})[_0x3d94('0x12')](handleEntityNotFound(_0x519ada,null))['then'](function(_0x211f0e){if(_0x211f0e){return _0x211f0e[_0x3d94('0x49')](_0x5da38c[_0x3d94('0x23')][_0x3d94('0x47')])[_0x3d94('0x12')](function(){if(_[_0x3d94('0x4a')](_0x5da38c[_0x3d94('0x23')]['ids'])){for(var _0x22dbf9=0x0;_0x22dbf9<_0x5da38c[_0x3d94('0x23')][_0x3d94('0x47')]['length'];_0x22dbf9+=0x1){socket[_0x3d94('0x4b')](_0x3d94('0x4c'),{'UserId':Number(_0x5da38c[_0x3d94('0x23')][_0x3d94('0x47')][_0x22dbf9]),'SquareProjectId':Number(_0x5da38c['params']['id'])});}}else{socket['emit'](_0x3d94('0x4c'),{'UserId':Number(_0x5da38c[_0x3d94('0x23')][_0x3d94('0x47')]),'SquareProjectId':Number(_0x5da38c[_0x3d94('0x36')]['id'])});}});}})['then'](respondWithStatusCode(_0x519ada,null))[_0x3d94('0x38')](handleError(_0x519ada,null));};exports[_0x3d94('0x4d')]=function(_0x49bfb0,_0x5ba865){var _0x250c87={};var _0x336e36={};var _0x4eee2b;var _0x3135f3;return db[_0x3d94('0x1e')][_0x3d94('0x4e')]({'where':{'id':_0x49bfb0['params']['id']}})[_0x3d94('0x12')](handleEntityNotFound(_0x5ba865,null))[_0x3d94('0x12')](function(_0x5c7aac){if(_0x5c7aac){_0x4eee2b=_0x5c7aac;_0x336e36['model']=_['keys'](db[_0x3d94('0x4f')][_0x3d94('0x1f')]);_0x336e36[_0x3d94('0x23')]=_[_0x3d94('0x37')](_0x49bfb0[_0x3d94('0x23')]);_0x336e36['filters']=_[_0x3d94('0x24')](_0x336e36[_0x3d94('0x25')],_0x336e36[_0x3d94('0x23')]);_0x250c87[_0x3d94('0x27')]=_[_0x3d94('0x24')](_0x336e36[_0x3d94('0x25')],qs['fields'](_0x49bfb0[_0x3d94('0x23')]['fields']));_0x250c87[_0x3d94('0x27')]=_0x250c87[_0x3d94('0x27')][_0x3d94('0x28')]?_0x250c87[_0x3d94('0x27')]:_0x336e36[_0x3d94('0x25')];_0x250c87[_0x3d94('0x50')]=qs['sort'](_0x49bfb0['query'][_0x3d94('0x2b')]);_0x250c87['where']=qs['filters'](_['pick'](_0x49bfb0[_0x3d94('0x23')],_0x336e36[_0x3d94('0x2d')]));if(_0x49bfb0[_0x3d94('0x23')][_0x3d94('0x2e')]){_0x250c87[_0x3d94('0x2c')]=_[_0x3d94('0x2f')](_0x250c87[_0x3d94('0x2c')],{'$or':_[_0x3d94('0x1d')](_0x250c87['attributes'],function(_0x22917e){var _0x5e55a4={};_0x5e55a4[_0x22917e]={'$like':'%'+_0x49bfb0[_0x3d94('0x23')][_0x3d94('0x2e')]+'%'};return _0x5e55a4;})});}_0x250c87=_[_0x3d94('0x2f')]({},_0x250c87,_0x49bfb0['options']);return _0x4eee2b['getUsers'](_0x250c87);}})['then'](function(_0x426ef5){if(_0x426ef5){_0x3135f3=_0x426ef5[_0x3d94('0x28')];if(!_0x49bfb0[_0x3d94('0x23')][_0x3d94('0x29')](_0x3d94('0x2a'))){_0x250c87['limit']=qs['limit'](_0x49bfb0[_0x3d94('0x23')][_0x3d94('0xc')]);_0x250c87[_0x3d94('0xa')]=qs['offset'](_0x49bfb0[_0x3d94('0x23')]['offset']);}return _0x4eee2b[_0x3d94('0x4d')](_0x250c87);}})[_0x3d94('0x12')](function(_0x15adf7){if(_0x15adf7){return _0x15adf7?{'count':_0x3135f3,'rows':_0x15adf7}:null;}})[_0x3d94('0x12')](respondWithResult(_0x5ba865,null))[_0x3d94('0x38')](handleError(_0x5ba865,null));};
\ No newline at end of file
+var _0x2d85=['intersection','merge','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addUsers','ids','removeUsers','isArray','userSquareProject:remove','emit','getUsers','findOne','lodash','ioredis','../../components/parsers/qs','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','update','then','destroy','SquareProjects','UserProfileResource','stringify','error','stack','name','send','net','Socket','connect','agi','port','127.0.0.1','index','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','SquareProject','includeAll','include','findAll','rows','catch','params'];(function(_0x465a9e,_0x43d982){var _0x3fcbe8=function(_0x15a955){while(--_0x15a955){_0x465a9e['push'](_0x465a9e['shift']());}};_0x3fcbe8(++_0x43d982);}(_0x2d85,0x168));var _0x52d8=function(_0x1f74f0,_0x3492a8){_0x1f74f0=_0x1f74f0-0x0;var _0x513768=_0x2d85[_0x1f74f0];return _0x513768;};'use strict';var _=require(_0x52d8('0x0'));var Redis=require(_0x52d8('0x1'));var qs=require(_0x52d8('0x2'));var logger=require('../../config/logger')(_0x52d8('0x3'));var config=require('../../config/environment');var db=require(_0x52d8('0x4'))['db'];config[_0x52d8('0x5')]=_[_0x52d8('0x6')](config[_0x52d8('0x5')],{'host':_0x52d8('0x7'),'port':0x18eb});var socket=require(_0x52d8('0x8'))(new Redis(config[_0x52d8('0x5')]));require(_0x52d8('0x9'))['register'](socket);function respondWithStatusCode(_0x10fbb3,_0x3346f1){_0x3346f1=_0x3346f1||0xcc;return function(_0x352e2d){if(_0x352e2d){return _0x10fbb3[_0x52d8('0xa')](_0x3346f1);}return _0x10fbb3['status'](_0x3346f1)[_0x52d8('0xb')]();};}function respondWithResult(_0x4111a3,_0xe5f620){_0xe5f620=_0xe5f620||0xc8;return function(_0xa8e434){if(_0xa8e434){return _0x4111a3[_0x52d8('0xc')](_0xe5f620)[_0x52d8('0xd')](_0xa8e434);}};}function respondWithFilteredResult(_0x56b781,_0x387b4e){return function(_0x26b49f){if(_0x26b49f){var _0x159cec=typeof _0x387b4e[_0x52d8('0xe')]==='undefined'&&typeof _0x387b4e[_0x52d8('0xf')]===_0x52d8('0x10');var _0x1604cb=_0x26b49f[_0x52d8('0x11')];var _0x43de91=_0x159cec?0x0:_0x387b4e['offset'];var _0x2ad008=_0x159cec?_0x26b49f[_0x52d8('0x11')]:_0x387b4e[_0x52d8('0xe')]+_0x387b4e[_0x52d8('0xf')];var _0x3e597b;if(_0x2ad008>=_0x1604cb){_0x2ad008=_0x1604cb;_0x3e597b=0xc8;}else{_0x3e597b=0xce;}_0x56b781[_0x52d8('0xc')](_0x3e597b);return _0x56b781[_0x52d8('0x12')](_0x52d8('0x13'),_0x43de91+'-'+_0x2ad008+'/'+_0x1604cb)[_0x52d8('0xd')](_0x26b49f);}return null;};}function saveUpdates(_0x5d879d){return function(_0x3d4674){if(_0x3d4674){return _0x3d4674[_0x52d8('0x14')](_0x5d879d)[_0x52d8('0x15')](function(_0x4ddb7b){return _0x4ddb7b;});}return null;};}function removeEntity(_0x15a889){return function(_0x3e39fe){if(_0x3e39fe){return _0x3e39fe[_0x52d8('0x16')]()[_0x52d8('0x15')](function(){var _0x1acc3d=_0x3e39fe['get']({'plain':!![]});var _0x3647dd=_0x52d8('0x17');return db[_0x52d8('0x18')][_0x52d8('0x16')]({'where':{'type':_0x3647dd,'resourceId':_0x1acc3d['id']}})[_0x52d8('0x15')](function(){return _0x3e39fe;});})['then'](function(){return createAgiSocket();})[_0x52d8('0x15')](function(_0x895536){_0x895536[_0x52d8('0xb')](JSON[_0x52d8('0x19')]({'id':_0x3e39fe['id'],'deleted':!![]}));})['then'](function(){_0x15a889[_0x52d8('0xc')](0xcc)[_0x52d8('0xb')]();});}};}function handleEntityNotFound(_0x43e846){return function(_0x4e1e9e){if(!_0x4e1e9e){_0x43e846[_0x52d8('0xa')](0x194);}return _0x4e1e9e;};}function handleError(_0x5f3cee,_0xbf221a){_0xbf221a=_0xbf221a||0x1f4;return function(_0x3cd9c1){logger[_0x52d8('0x1a')](_0x3cd9c1[_0x52d8('0x1b')]);if(_0x3cd9c1[_0x52d8('0x1c')]){delete _0x3cd9c1[_0x52d8('0x1c')];}_0x5f3cee['status'](_0xbf221a)[_0x52d8('0x1d')](_0x3cd9c1);};}function createAgiSocket(){try{var _0x4b3ec4=require(_0x52d8('0x1e'));var _0x316cf6=new _0x4b3ec4[(_0x52d8('0x1f'))]();return _0x316cf6[_0x52d8('0x20')](config[_0x52d8('0x21')][_0x52d8('0x22')]||0x11dd,_0x52d8('0x23'));}catch(_0x37feac){throw _0x37feac;}}exports[_0x52d8('0x24')]=function(_0x2b5937,_0x1688b7){var _0x172a72={},_0x56efaf={},_0x57b225={'count':0x0,'rows':[]};var _0x7b60bf=_['map'](db['SquareProject'][_0x52d8('0x25')],function(_0x209cec){return{'name':_0x209cec[_0x52d8('0x26')],'type':_0x209cec[_0x52d8('0x27')][_0x52d8('0x28')]};});_0x56efaf[_0x52d8('0x29')]=_[_0x52d8('0x2a')](_0x7b60bf,_0x52d8('0x1c'));_0x56efaf[_0x52d8('0x2b')]=_[_0x52d8('0x2c')](_0x2b5937[_0x52d8('0x2b')]);_0x56efaf[_0x52d8('0x2d')]=_['intersection'](_0x56efaf[_0x52d8('0x29')],_0x56efaf[_0x52d8('0x2b')]);_0x172a72[_0x52d8('0x2e')]=_['intersection'](_0x56efaf[_0x52d8('0x29')],qs['fields'](_0x2b5937[_0x52d8('0x2b')][_0x52d8('0x2f')]));_0x172a72[_0x52d8('0x2e')]=_0x172a72['attributes'][_0x52d8('0x30')]?_0x172a72[_0x52d8('0x2e')]:_0x56efaf[_0x52d8('0x29')];if(!_0x2b5937[_0x52d8('0x2b')][_0x52d8('0x31')](_0x52d8('0x32'))){_0x172a72[_0x52d8('0xf')]=qs[_0x52d8('0xf')](_0x2b5937['query'][_0x52d8('0xf')]);_0x172a72['offset']=qs[_0x52d8('0xe')](_0x2b5937['query'][_0x52d8('0xe')]);}_0x172a72[_0x52d8('0x33')]=qs[_0x52d8('0x34')](_0x2b5937[_0x52d8('0x2b')]['sort']);_0x172a72[_0x52d8('0x35')]=qs[_0x52d8('0x2d')](_[_0x52d8('0x36')](_0x2b5937['query'],_0x56efaf[_0x52d8('0x2d')]),_0x7b60bf);if(_0x2b5937[_0x52d8('0x2b')][_0x52d8('0x37')]){_0x172a72[_0x52d8('0x35')]=_['merge'](_0x172a72['where'],{'$or':_[_0x52d8('0x2a')](_0x7b60bf,function(_0x1be52f){if(_0x1be52f[_0x52d8('0x27')]!==_0x52d8('0x38')){var _0x1a2dab={};_0x1a2dab[_0x1be52f[_0x52d8('0x1c')]]={'$like':'%'+_0x2b5937[_0x52d8('0x2b')][_0x52d8('0x37')]+'%'};return _0x1a2dab;}})});}_0x172a72=_['merge']({},_0x172a72,_0x2b5937[_0x52d8('0x39')]);var _0x43e74f={'where':_0x172a72[_0x52d8('0x35')]};return db[_0x52d8('0x3a')][_0x52d8('0x11')](_0x43e74f)['then'](function(_0x281897){_0x57b225[_0x52d8('0x11')]=_0x281897;if(_0x2b5937[_0x52d8('0x2b')][_0x52d8('0x3b')]){_0x172a72[_0x52d8('0x3c')]=[{'all':!![]}];}return db[_0x52d8('0x3a')][_0x52d8('0x3d')](_0x172a72);})['then'](function(_0x281f63){_0x57b225[_0x52d8('0x3e')]=_0x281f63;return _0x57b225;})[_0x52d8('0x15')](respondWithFilteredResult(_0x1688b7,_0x172a72))[_0x52d8('0x3f')](handleError(_0x1688b7,null));};exports['show']=function(_0x5f307f,_0x392d47){var _0x472f88={'raw':![],'where':{'id':_0x5f307f[_0x52d8('0x40')]['id']}},_0x6f3cf8={};_0x6f3cf8[_0x52d8('0x29')]=_[_0x52d8('0x2c')](db[_0x52d8('0x3a')][_0x52d8('0x25')]);_0x6f3cf8[_0x52d8('0x2b')]=_[_0x52d8('0x2c')](_0x5f307f[_0x52d8('0x2b')]);_0x6f3cf8['filters']=_[_0x52d8('0x41')](_0x6f3cf8[_0x52d8('0x29')],_0x6f3cf8[_0x52d8('0x2b')]);_0x472f88[_0x52d8('0x2e')]=_['intersection'](_0x6f3cf8[_0x52d8('0x29')],qs[_0x52d8('0x2f')](_0x5f307f[_0x52d8('0x2b')][_0x52d8('0x2f')]));_0x472f88[_0x52d8('0x2e')]=_0x472f88[_0x52d8('0x2e')][_0x52d8('0x30')]?_0x472f88[_0x52d8('0x2e')]:_0x6f3cf8['model'];if(_0x5f307f[_0x52d8('0x2b')][_0x52d8('0x3b')]){_0x472f88['include']=[{'all':!![]}];}_0x472f88=_[_0x52d8('0x42')]({},_0x472f88,_0x5f307f['options']);return db[_0x52d8('0x3a')][_0x52d8('0x43')](_0x472f88)[_0x52d8('0x15')](handleEntityNotFound(_0x392d47,null))['then'](respondWithResult(_0x392d47,null))[_0x52d8('0x3f')](handleError(_0x392d47,null));};exports[_0x52d8('0x44')]=function(_0x4a2026,_0x53924a){return db['SquareProject'][_0x52d8('0x44')](_0x4a2026[_0x52d8('0x45')],{})[_0x52d8('0x15')](function(_0x269b33){var _0x50396a=_0x4a2026[_0x52d8('0x46')][_0x52d8('0x47')]({'plain':!![]});if(!_0x50396a)throw new Error(_0x52d8('0x48'));if(_0x50396a[_0x52d8('0x49')]===_0x52d8('0x46')){var _0xeb9068=_0x269b33['get']({'plain':!![]});var _0x58a7ed=_0x52d8('0x17');return db[_0x52d8('0x4a')][_0x52d8('0x43')]({'where':{'name':_0x58a7ed,'userProfileId':_0x50396a[_0x52d8('0x4b')]},'raw':!![]})[_0x52d8('0x15')](function(_0x3d3bf9){if(_0x3d3bf9&&_0x3d3bf9['autoAssociation']===0x0){return db[_0x52d8('0x18')][_0x52d8('0x44')]({'name':_0xeb9068['name'],'resourceId':_0xeb9068['id'],'type':_0x3d3bf9[_0x52d8('0x1c')],'sectionId':_0x3d3bf9['id']},{})['then'](function(){return _0x269b33;});}else{return _0x269b33;}})[_0x52d8('0x3f')](function(_0xe12000){logger[_0x52d8('0x1a')](_0x52d8('0x4c'),_0xe12000);throw _0xe12000;});}return _0x269b33;})[_0x52d8('0x15')](respondWithResult(_0x53924a,0xc9))['catch'](handleError(_0x53924a,null));};exports['update']=function(_0x4e66b5,_0x4aceba){if(_0x4e66b5['body']['id']){delete _0x4e66b5[_0x52d8('0x45')]['id'];}return db[_0x52d8('0x3a')][_0x52d8('0x43')]({'where':{'id':_0x4e66b5[_0x52d8('0x40')]['id']}})[_0x52d8('0x15')](handleEntityNotFound(_0x4aceba,null))[_0x52d8('0x15')](saveUpdates(_0x4e66b5[_0x52d8('0x45')],null))[_0x52d8('0x15')](function(_0x3102dc){if(!_0x3102dc)return;var _0x10e75e=_0x3102dc[_0x52d8('0x47')]({'plain':!![]});return _0x10e75e;})[_0x52d8('0x15')](function(_0x2021b5){var _0x540dc1=new Redis(config[_0x52d8('0x5')]);_0x540dc1['publish']('agi',JSON['stringify'](_['pick'](_0x2021b5,['id',_0x52d8('0x1c'),'production'])));return _0x2021b5;})['then'](respondWithResult(_0x4aceba,null))['catch'](handleError(_0x4aceba,null));};exports[_0x52d8('0x16')]=function(_0x5e3260,_0x5e28fa){return db['SquareProject'][_0x52d8('0x43')]({'where':{'id':_0x5e3260[_0x52d8('0x40')]['id']}})[_0x52d8('0x15')](handleEntityNotFound(_0x5e28fa,null))[_0x52d8('0x15')](removeEntity(_0x5e28fa,null))['catch'](handleError(_0x5e28fa,null));};exports[_0x52d8('0x4d')]=function(_0x26b19b,_0xc19e69){return db[_0x52d8('0x3a')][_0x52d8('0x43')]({'where':{'id':_0x26b19b[_0x52d8('0x40')]['id']}})[_0x52d8('0x15')](handleEntityNotFound(_0xc19e69,null))[_0x52d8('0x15')](function(_0x3b3913){if(_0x3b3913){return _0x3b3913[_0x52d8('0x4d')](_0x26b19b[_0x52d8('0x45')][_0x52d8('0x4e')],_['omit'](_0x26b19b[_0x52d8('0x45')],['ids','id'])||{});}})['then'](respondWithResult(_0xc19e69,null))[_0x52d8('0x3f')](handleError(_0xc19e69,null));};exports[_0x52d8('0x4f')]=function(_0x37f538,_0x2d1057){return db[_0x52d8('0x3a')][_0x52d8('0x43')]({'where':{'id':_0x37f538['params']['id']}})[_0x52d8('0x15')](handleEntityNotFound(_0x2d1057,null))[_0x52d8('0x15')](function(_0x16a283){if(_0x16a283){return _0x16a283[_0x52d8('0x4f')](_0x37f538['query']['ids'])[_0x52d8('0x15')](function(){if(_[_0x52d8('0x50')](_0x37f538[_0x52d8('0x2b')]['ids'])){for(var _0x36bb43=0x0;_0x36bb43<_0x37f538[_0x52d8('0x2b')]['ids']['length'];_0x36bb43+=0x1){socket['emit'](_0x52d8('0x51'),{'UserId':Number(_0x37f538['query'][_0x52d8('0x4e')][_0x36bb43]),'SquareProjectId':Number(_0x37f538[_0x52d8('0x40')]['id'])});}}else{socket[_0x52d8('0x52')]('userSquareProject:remove',{'UserId':Number(_0x37f538[_0x52d8('0x2b')][_0x52d8('0x4e')]),'SquareProjectId':Number(_0x37f538['params']['id'])});}});}})['then'](respondWithStatusCode(_0x2d1057,null))[_0x52d8('0x3f')](handleError(_0x2d1057,null));};exports[_0x52d8('0x53')]=function(_0x4cad07,_0x1d1f6f){var _0xb371c5={};var _0x85a07d={};var _0x5a5303;var _0x5c4aea;return db[_0x52d8('0x3a')][_0x52d8('0x54')]({'where':{'id':_0x4cad07[_0x52d8('0x40')]['id']}})[_0x52d8('0x15')](handleEntityNotFound(_0x1d1f6f,null))[_0x52d8('0x15')](function(_0x56e4cb){if(_0x56e4cb){_0x5a5303=_0x56e4cb;_0x85a07d[_0x52d8('0x29')]=_[_0x52d8('0x2c')](db['User']['rawAttributes']);_0x85a07d[_0x52d8('0x2b')]=_[_0x52d8('0x2c')](_0x4cad07[_0x52d8('0x2b')]);_0x85a07d[_0x52d8('0x2d')]=_[_0x52d8('0x41')](_0x85a07d[_0x52d8('0x29')],_0x85a07d[_0x52d8('0x2b')]);_0xb371c5[_0x52d8('0x2e')]=_[_0x52d8('0x41')](_0x85a07d['model'],qs[_0x52d8('0x2f')](_0x4cad07[_0x52d8('0x2b')][_0x52d8('0x2f')]));_0xb371c5['attributes']=_0xb371c5[_0x52d8('0x2e')][_0x52d8('0x30')]?_0xb371c5[_0x52d8('0x2e')]:_0x85a07d['model'];_0xb371c5['order']=qs[_0x52d8('0x34')](_0x4cad07[_0x52d8('0x2b')][_0x52d8('0x34')]);_0xb371c5[_0x52d8('0x35')]=qs[_0x52d8('0x2d')](_[_0x52d8('0x36')](_0x4cad07[_0x52d8('0x2b')],_0x85a07d[_0x52d8('0x2d')]));if(_0x4cad07[_0x52d8('0x2b')][_0x52d8('0x37')]){_0xb371c5[_0x52d8('0x35')]=_[_0x52d8('0x42')](_0xb371c5[_0x52d8('0x35')],{'$or':_['map'](_0xb371c5[_0x52d8('0x2e')],function(_0x34afe8){var _0x1b4aac={};_0x1b4aac[_0x34afe8]={'$like':'%'+_0x4cad07['query']['filter']+'%'};return _0x1b4aac;})});}_0xb371c5=_[_0x52d8('0x42')]({},_0xb371c5,_0x4cad07['options']);return _0x5a5303['getUsers'](_0xb371c5);}})[_0x52d8('0x15')](function(_0x4c0a69){if(_0x4c0a69){_0x5c4aea=_0x4c0a69['length'];if(!_0x4cad07[_0x52d8('0x2b')][_0x52d8('0x31')](_0x52d8('0x32'))){_0xb371c5['limit']=qs[_0x52d8('0xf')](_0x4cad07['query'][_0x52d8('0xf')]);_0xb371c5[_0x52d8('0xe')]=qs['offset'](_0x4cad07[_0x52d8('0x2b')]['offset']);}return _0x5a5303[_0x52d8('0x53')](_0xb371c5);}})[_0x52d8('0x15')](function(_0x127dcf){if(_0x127dcf){return _0x127dcf?{'count':_0x5c4aea,'rows':_0x127dcf}:null;}})[_0x52d8('0x15')](respondWithResult(_0x1d1f6f,null))[_0x52d8('0x3f')](handleError(_0x1d1f6f,null));};
\ No newline at end of file
index 400c3e6..a6bef59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3acc=['setMaxListeners','save','update','remove','emit','hasOwnProperty','events','SquareProject'];(function(_0x4edd16,_0x1d6b75){var _0x354594=function(_0x48bdb8){while(--_0x48bdb8){_0x4edd16['push'](_0x4edd16['shift']());}};_0x354594(++_0x1d6b75);}(_0x3acc,0x19e));var _0xc3ac=function(_0xf9970a,_0x58dd37){_0xf9970a=_0xf9970a-0x0;var _0x1aa40e=_0x3acc[_0xf9970a];return _0x1aa40e;};'use strict';var EventEmitter=require(_0xc3ac('0x0'));var SquareProject=require('../../mysqldb')['db'][_0xc3ac('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xc3ac('0x2')](0x0);var events={'afterCreate':_0xc3ac('0x3'),'afterUpdate':_0xc3ac('0x4'),'afterDestroy':_0xc3ac('0x5')};function emitEvent(_0x26d19a){return function(_0x506f8d,_0x4f9143,_0x2e0a99){SquareProjectEvents['emit'](_0x26d19a+':'+_0x506f8d['id'],_0x506f8d);SquareProjectEvents[_0xc3ac('0x6')](_0x26d19a,_0x506f8d);_0x2e0a99(null);};}for(var e in events){if(events[_0xc3ac('0x7')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module['exports']=SquareProjectEvents;
\ No newline at end of file
+var _0xf4a7=['emit','hasOwnProperty','exports','events','../../mysqldb','save','update'];(function(_0x24d4f5,_0xdc8aea){var _0x524d28=function(_0x1c81d9){while(--_0x1c81d9){_0x24d4f5['push'](_0x24d4f5['shift']());}};_0x524d28(++_0xdc8aea);}(_0xf4a7,0x6c));var _0x7f4a=function(_0x4c12df,_0x15695a){_0x4c12df=_0x4c12df-0x0;var _0x1dbc93=_0xf4a7[_0x4c12df];return _0x1dbc93;};'use strict';var EventEmitter=require(_0x7f4a('0x0'));var SquareProject=require(_0x7f4a('0x1'))['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7f4a('0x2'),'afterUpdate':_0x7f4a('0x3'),'afterDestroy':'remove'};function emitEvent(_0xb01481){return function(_0x5551d8,_0x309f5d,_0x5e43c3){SquareProjectEvents[_0x7f4a('0x4')](_0xb01481+':'+_0x5551d8['id'],_0x5551d8);SquareProjectEvents[_0x7f4a('0x4')](_0xb01481,_0x5551d8);_0x5e43c3(null);};}for(var e in events){if(events[_0x7f4a('0x5')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0x7f4a('0x6')]=SquareProjectEvents;
\ No newline at end of file
index 993a89d..0be3646 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31e7=['savedAt','format','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','changed','preproduction'];(function(_0x541f4e,_0x1aaa66){var _0x48ad45=function(_0x4ae2c4){while(--_0x4ae2c4){_0x541f4e['push'](_0x541f4e['shift']());}};_0x48ad45(++_0x1aaa66);}(_0x31e7,0xc8));var _0x731e=function(_0x1c4b8d,_0x146a41){_0x1c4b8d=_0x1c4b8d-0x0;var _0x203346=_0x31e7[_0x1c4b8d];return _0x203346;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x731e('0x0'))('api');var moment=require(_0x731e('0x1'));var BPromise=require(_0x731e('0x2'));var rp=require(_0x731e('0x3'));var fs=require('fs');var path=require(_0x731e('0x4'));var rimraf=require(_0x731e('0x5'));var config=require(_0x731e('0x6'));var attributes=require('./squareProject.attributes');module[_0x731e('0x7')]=function(_0x438525,_0x612100){return _0x438525['define']('SquareProject',attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xc650c4,_0x4002aa,_0x297986){if(_0xc650c4[_0x731e('0x8')](_0x731e('0x9'))){_0xc650c4[_0x731e('0xa')]=moment()[_0x731e('0xb')](_0x731e('0xc'));}if(_0xc650c4['changed'](_0x731e('0xd'))){_0xc650c4[_0x731e('0xe')]=moment()[_0x731e('0xb')](_0x731e('0xc'));}_0x297986(null,_0xc650c4);}}});};
\ No newline at end of file
+var _0xf336=['lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareProject.attributes','exports','SquareProject','square_projects','changed','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','publishedAt'];(function(_0x2e3527,_0x12c368){var _0xb331ea=function(_0x11da08){while(--_0x11da08){_0x2e3527['push'](_0x2e3527['shift']());}};_0xb331ea(++_0x12c368);}(_0xf336,0xea));var _0x6f33=function(_0x3fd617,_0x2e887a){_0x3fd617=_0x3fd617-0x0;var _0x1fc1e0=_0xf336[_0x3fd617];return _0x1fc1e0;};'use strict';var _=require(_0x6f33('0x0'));var util=require(_0x6f33('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x6f33('0x2'));var BPromise=require(_0x6f33('0x3'));var rp=require(_0x6f33('0x4'));var fs=require('fs');var path=require(_0x6f33('0x5'));var rimraf=require(_0x6f33('0x6'));var config=require(_0x6f33('0x7'));var attributes=require(_0x6f33('0x8'));module[_0x6f33('0x9')]=function(_0x12c6c7,_0x20b0d3){return _0x12c6c7['define'](_0x6f33('0xa'),attributes,{'tableName':_0x6f33('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5dee92,_0x491705,_0x1770f0){if(_0x5dee92[_0x6f33('0xc')](_0x6f33('0xd'))){_0x5dee92[_0x6f33('0xe')]=moment()[_0x6f33('0xf')](_0x6f33('0x10'));}if(_0x5dee92[_0x6f33('0xc')]('production')){_0x5dee92[_0x6f33('0x11')]=moment()[_0x6f33('0xf')](_0x6f33('0x10'));}_0x1770f0(null,_0x5dee92);}}});};
\ No newline at end of file
index 70eb59b..c64078e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3aa1=['include','map','model','then','GetSquareProjects','catch','error','message','find','info','ShowSquareProject','debug','lodash','ioredis','../../mysqldb','../../config/logger','rpc','redis','defaults','localhost','socket.io-emitter','register','SquareProject','findAll','options','raw','where','attributes','limit'];(function(_0x184188,_0x35924b){var _0x2d50fc=function(_0x212c87){while(--_0x212c87){_0x184188['push'](_0x184188['shift']());}};_0x2d50fc(++_0x35924b);}(_0x3aa1,0x9d));var _0x13aa=function(_0x5f5827,_0x4bdd0e){_0x5f5827=_0x5f5827-0x0;var _0x3ea068=_0x3aa1[_0x5f5827];return _0x3ea068;};'use strict';var _=require(_0x13aa('0x0'));var Redis=require(_0x13aa('0x1'));var db=require(_0x13aa('0x2'))['db'];var logger=require(_0x13aa('0x3'))(_0x13aa('0x4'));var config=require('../../config/environment');config[_0x13aa('0x5')]=_[_0x13aa('0x6')](config[_0x13aa('0x5')],{'host':_0x13aa('0x7'),'port':0x18eb});var socket=require(_0x13aa('0x8'))(new Redis(config['redis']));require('./squareProject.socket')[_0x13aa('0x9')](socket);exports['GetSquareProjects']=function(_0x2eadd0){var _0x3de209=this;return new Promise(function(_0x2e3b86,_0x2c12ac){return db[_0x13aa('0xa')][_0x13aa('0xb')]({'raw':_0x2eadd0[_0x13aa('0xc')]?_0x2eadd0[_0x13aa('0xc')][_0x13aa('0xd')]===undefined?!![]:![]:!![],'where':_0x2eadd0['options']?_0x2eadd0[_0x13aa('0xc')][_0x13aa('0xe')]||null:null,'attributes':_0x2eadd0[_0x13aa('0xc')]?_0x2eadd0[_0x13aa('0xc')][_0x13aa('0xf')]||null:null,'limit':_0x2eadd0[_0x13aa('0xc')]?_0x2eadd0['options'][_0x13aa('0x10')]||null:null,'include':_0x2eadd0['options']?_0x2eadd0[_0x13aa('0xc')][_0x13aa('0x11')]?_[_0x13aa('0x12')](_0x2eadd0[_0x13aa('0xc')][_0x13aa('0x11')],function(_0x4c5110){return{'model':db[_0x4c5110[_0x13aa('0x13')]],'as':_0x4c5110['as'],'attributes':_0x4c5110['attributes'],'include':_0x4c5110[_0x13aa('0x11')]?_['map'](_0x4c5110['include'],function(_0x535108){return{'model':db[_0x535108[_0x13aa('0x13')]],'as':_0x535108['as'],'attributes':_0x535108['attributes'],'include':_0x535108[_0x13aa('0x11')]?_[_0x13aa('0x12')](_0x535108[_0x13aa('0x11')],function(_0x5edae3){return{'model':db[_0x5edae3['model']],'as':_0x5edae3['as'],'attributes':_0x5edae3['attributes']};}):[]};}):[]};}):[]:[]})[_0x13aa('0x14')](function(_0x73d72f){logger['info'](_0x13aa('0x15'),_0x2eadd0);logger['debug'](_0x13aa('0x15'),_0x2eadd0,JSON['stringify'](_0x73d72f));_0x2e3b86(_0x73d72f);})[_0x13aa('0x16')](function(_0x1c6850){logger[_0x13aa('0x17')](_0x13aa('0x15'),_0x1c6850[_0x13aa('0x18')],_0x2eadd0);_0x2c12ac(_0x3de209[_0x13aa('0x17')](0x1f4,_0x1c6850[_0x13aa('0x18')]));});});};exports['ShowSquareProject']=function(_0x40906a){var _0x486c05=this;return new Promise(function(_0xf10128,_0x3a7dd4){return db[_0x13aa('0xa')][_0x13aa('0x19')]({'raw':_0x40906a[_0x13aa('0xc')]?_0x40906a['options'][_0x13aa('0xd')]===undefined?!![]:![]:!![],'where':_0x40906a['options']?_0x40906a[_0x13aa('0xc')][_0x13aa('0xe')]||null:null,'attributes':_0x40906a[_0x13aa('0xc')]?_0x40906a[_0x13aa('0xc')][_0x13aa('0xf')]||null:null,'include':_0x40906a[_0x13aa('0xc')]?_0x40906a[_0x13aa('0xc')][_0x13aa('0x11')]?_[_0x13aa('0x12')](_0x40906a['options'][_0x13aa('0x11')],function(_0x14c653){return{'model':db[_0x14c653[_0x13aa('0x13')]],'as':_0x14c653['as'],'attributes':_0x14c653[_0x13aa('0xf')],'include':_0x14c653[_0x13aa('0x11')]?_[_0x13aa('0x12')](_0x14c653[_0x13aa('0x11')],function(_0x297141){return{'model':db[_0x297141[_0x13aa('0x13')]],'as':_0x297141['as'],'attributes':_0x297141['attributes'],'include':_0x297141[_0x13aa('0x11')]?_[_0x13aa('0x12')](_0x297141['include'],function(_0x465920){return{'model':db[_0x465920['model']],'as':_0x465920['as'],'attributes':_0x465920['attributes']};}):[]};}):[]};}):[]:[]})[_0x13aa('0x14')](function(_0x3508a2){logger[_0x13aa('0x1a')](_0x13aa('0x1b'),_0x40906a);logger[_0x13aa('0x1c')](_0x13aa('0x1b'),_0x40906a,JSON['stringify'](_0x3508a2));_0xf10128(_0x3508a2);})[_0x13aa('0x16')](function(_0x47cb49){logger[_0x13aa('0x17')](_0x13aa('0x1b'),_0x47cb49[_0x13aa('0x18')],_0x40906a);_0x3a7dd4(_0x486c05['error'](0x1f4,_0x47cb49[_0x13aa('0x18')]));});});};
\ No newline at end of file
+var _0xf0f8=['model','attributes','then','info','stringify','catch','message','error','raw','ShowSquareProject','debug','lodash','ioredis','../../mysqldb','rpc','../../config/environment','redis','localhost','./squareProject.socket','register','GetSquareProjects','SquareProject','findAll','options','map','include'];(function(_0x4169d8,_0x3d7cd4){var _0x32084a=function(_0x5f59c6){while(--_0x5f59c6){_0x4169d8['push'](_0x4169d8['shift']());}};_0x32084a(++_0x3d7cd4);}(_0xf0f8,0x177));var _0x8f0f=function(_0x585e23,_0xc2a78a){_0x585e23=_0x585e23-0x0;var _0x4b9f09=_0xf0f8[_0x585e23];return _0x4b9f09;};'use strict';var _=require(_0x8f0f('0x0'));var Redis=require(_0x8f0f('0x1'));var db=require(_0x8f0f('0x2'))['db'];var logger=require('../../config/logger')(_0x8f0f('0x3'));var config=require(_0x8f0f('0x4'));config[_0x8f0f('0x5')]=_['defaults'](config[_0x8f0f('0x5')],{'host':_0x8f0f('0x6'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x8f0f('0x7'))[_0x8f0f('0x8')](socket);exports[_0x8f0f('0x9')]=function(_0x336aec){var _0x537ac3=this;return new Promise(function(_0x2be95e,_0x511888){return db[_0x8f0f('0xa')][_0x8f0f('0xb')]({'raw':_0x336aec['options']?_0x336aec['options']['raw']===undefined?!![]:![]:!![],'where':_0x336aec['options']?_0x336aec[_0x8f0f('0xc')]['where']||null:null,'attributes':_0x336aec['options']?_0x336aec[_0x8f0f('0xc')]['attributes']||null:null,'limit':_0x336aec[_0x8f0f('0xc')]?_0x336aec[_0x8f0f('0xc')]['limit']||null:null,'include':_0x336aec[_0x8f0f('0xc')]?_0x336aec[_0x8f0f('0xc')]['include']?_[_0x8f0f('0xd')](_0x336aec[_0x8f0f('0xc')][_0x8f0f('0xe')],function(_0x8020e9){return{'model':db[_0x8020e9[_0x8f0f('0xf')]],'as':_0x8020e9['as'],'attributes':_0x8020e9[_0x8f0f('0x10')],'include':_0x8020e9[_0x8f0f('0xe')]?_[_0x8f0f('0xd')](_0x8020e9[_0x8f0f('0xe')],function(_0x4c63de){return{'model':db[_0x4c63de[_0x8f0f('0xf')]],'as':_0x4c63de['as'],'attributes':_0x4c63de[_0x8f0f('0x10')],'include':_0x4c63de[_0x8f0f('0xe')]?_['map'](_0x4c63de[_0x8f0f('0xe')],function(_0x1f4733){return{'model':db[_0x1f4733[_0x8f0f('0xf')]],'as':_0x1f4733['as'],'attributes':_0x1f4733[_0x8f0f('0x10')]};}):[]};}):[]};}):[]:[]})[_0x8f0f('0x11')](function(_0x345c18){logger[_0x8f0f('0x12')]('GetSquareProjects',_0x336aec);logger['debug'](_0x8f0f('0x9'),_0x336aec,JSON[_0x8f0f('0x13')](_0x345c18));_0x2be95e(_0x345c18);})[_0x8f0f('0x14')](function(_0x406380){logger['error']('GetSquareProjects',_0x406380[_0x8f0f('0x15')],_0x336aec);_0x511888(_0x537ac3[_0x8f0f('0x16')](0x1f4,_0x406380['message']));});});};exports['ShowSquareProject']=function(_0x4c1e26){var _0x2efc11=this;return new Promise(function(_0xdf6304,_0x4306f5){return db['SquareProject']['find']({'raw':_0x4c1e26[_0x8f0f('0xc')]?_0x4c1e26[_0x8f0f('0xc')][_0x8f0f('0x17')]===undefined?!![]:![]:!![],'where':_0x4c1e26[_0x8f0f('0xc')]?_0x4c1e26['options']['where']||null:null,'attributes':_0x4c1e26['options']?_0x4c1e26[_0x8f0f('0xc')][_0x8f0f('0x10')]||null:null,'include':_0x4c1e26[_0x8f0f('0xc')]?_0x4c1e26[_0x8f0f('0xc')]['include']?_[_0x8f0f('0xd')](_0x4c1e26['options'][_0x8f0f('0xe')],function(_0x5e48fd){return{'model':db[_0x5e48fd['model']],'as':_0x5e48fd['as'],'attributes':_0x5e48fd[_0x8f0f('0x10')],'include':_0x5e48fd['include']?_[_0x8f0f('0xd')](_0x5e48fd[_0x8f0f('0xe')],function(_0x4a5f59){return{'model':db[_0x4a5f59[_0x8f0f('0xf')]],'as':_0x4a5f59['as'],'attributes':_0x4a5f59[_0x8f0f('0x10')],'include':_0x4a5f59[_0x8f0f('0xe')]?_[_0x8f0f('0xd')](_0x4a5f59[_0x8f0f('0xe')],function(_0x106eaf){return{'model':db[_0x106eaf[_0x8f0f('0xf')]],'as':_0x106eaf['as'],'attributes':_0x106eaf[_0x8f0f('0x10')]};}):[]};}):[]};}):[]:[]})[_0x8f0f('0x11')](function(_0x199a93){logger[_0x8f0f('0x12')](_0x8f0f('0x18'),_0x4c1e26);logger[_0x8f0f('0x19')](_0x8f0f('0x18'),_0x4c1e26,JSON[_0x8f0f('0x13')](_0x199a93));_0xdf6304(_0x199a93);})[_0x8f0f('0x14')](function(_0x51a772){logger[_0x8f0f('0x16')]('ShowSquareProject',_0x51a772[_0x8f0f('0x15')],_0x4c1e26);_0x4306f5(_0x2efc11[_0x8f0f('0x16')](0x1f4,_0x51a772[_0x8f0f('0x15')]));});});};
\ No newline at end of file
index 408d99b..83a2726 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x433f=['length','squareProject:','save','remove','update','removeListener','register'];(function(_0x173346,_0x37d790){var _0x24e11f=function(_0x5c490b){while(--_0x5c490b){_0x173346['push'](_0x173346['shift']());}};_0x24e11f(++_0x37d790);}(_0x433f,0x1d7));var _0xf433=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x433f[_0x3dd15e];return _0x231fd0;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=[_0xf433('0x0'),_0xf433('0x1'),_0xf433('0x2')];function createListener(_0x249138,_0x469961){return function(_0x5887ca){_0x469961['emit'](_0x249138,_0x5887ca);};}function removeListener(_0xdb7ae6,_0xea208){return function(){SquareProjectEvents[_0xf433('0x3')](_0xdb7ae6,_0xea208);};}exports[_0xf433('0x4')]=function(_0xe8078d){for(var _0x4d60ed=0x0,_0x5cb309=events[_0xf433('0x5')];_0x4d60ed<_0x5cb309;_0x4d60ed++){var _0x39f877=events[_0x4d60ed];var _0x49f5a8=createListener(_0xf433('0x6')+_0x39f877,_0xe8078d);SquareProjectEvents['on'](_0x39f877,_0x49f5a8);}};
\ No newline at end of file
+var _0xc386=['update','emit','removeListener','register','length','squareProject:','save'];(function(_0x162926,_0x3e16eb){var _0x45aebf=function(_0x8c8cb5){while(--_0x8c8cb5){_0x162926['push'](_0x162926['shift']());}};_0x45aebf(++_0x3e16eb);}(_0xc386,0x187));var _0x6c38=function(_0xf5d7ea,_0x2fada1){_0xf5d7ea=_0xf5d7ea-0x0;var _0x12a4e2=_0xc386[_0xf5d7ea];return _0x12a4e2;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=[_0x6c38('0x0'),'remove',_0x6c38('0x1')];function createListener(_0x232c2c,_0x3fdc4d){return function(_0x2e1010){_0x3fdc4d[_0x6c38('0x2')](_0x232c2c,_0x2e1010);};}function removeListener(_0x5bcc52,_0x5b09da){return function(){SquareProjectEvents[_0x6c38('0x3')](_0x5bcc52,_0x5b09da);};}exports[_0x6c38('0x4')]=function(_0x2cdbd5){for(var _0x3397af=0x0,_0x86c278=events[_0x6c38('0x5')];_0x3397af<_0x86c278;_0x3397af++){var _0x573519=events[_0x3397af];var _0x36c90d=createListener(_0x6c38('0x6')+_0x573519,_0x2cdbd5);SquareProjectEvents['on'](_0x573519,_0x36c90d);}};
\ No newline at end of file
index 12f0797..ed4d562 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['../../config/environment','./squareRecording.controller','get','isAuthenticated','index','show','/:id/download','download','post','create','/:id','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x3c5e8c,_0x4b8717){var _0x1d99ec=function(_0x30d940){while(--_0x30d940){_0x3c5e8c['push'](_0x3c5e8c['shift']());}};_0x1d99ec(++_0x4b8717);}(_0xf494,0x1c6));var _0x4f49=function(_0x3a8bb0,_0x1776f9){_0x3a8bb0=_0x3a8bb0-0x0;var _0x3de5ea=_0xf494[_0x3a8bb0];return _0x3de5ea;};'use strict';var multer=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var path=require(_0x4f49('0x2'));var timeout=require('connect-timeout');var express=require(_0x4f49('0x3'));var router=express[_0x4f49('0x4')]();var fs_extra=require(_0x4f49('0x5'));var auth=require(_0x4f49('0x6'));var interaction=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var controller=require(_0x4f49('0x9'));router[_0x4f49('0xa')]('/',auth[_0x4f49('0xb')](),controller[_0x4f49('0xc')]);router[_0x4f49('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x4f49('0xd')]);router[_0x4f49('0xa')](_0x4f49('0xe'),auth[_0x4f49('0xb')](),controller[_0x4f49('0xf')]);router[_0x4f49('0x10')]('/',auth[_0x4f49('0xb')](),controller[_0x4f49('0x11')]);router['put'](_0x4f49('0x12'),auth[_0x4f49('0xb')](),controller['update']);router[_0x4f49('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x4f49('0x14')]);module[_0x4f49('0x15')]=router;
\ No newline at end of file
+var _0x53ec=['update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./squareRecording.controller','isAuthenticated','get','/:id','show','/:id/download','download','post','create','put'];(function(_0x10a9de,_0x127587){var _0xfa8c04=function(_0x48fc43){while(--_0x48fc43){_0x10a9de['push'](_0x10a9de['shift']());}};_0xfa8c04(++_0x127587);}(_0x53ec,0x192));var _0xc53e=function(_0x4d4046,_0x195cf8){_0x4d4046=_0x4d4046-0x0;var _0x82d2b1=_0x53ec[_0x4d4046];return _0x82d2b1;};'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('0xf')]('/',auth[_0xc53e('0x9')](),controller[_0xc53e('0x10')]);router[_0xc53e('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xc53e('0x12')]);router['delete']('/:id',auth[_0xc53e('0x9')](),controller[_0xc53e('0x13')]);module[_0xc53e('0x14')]=router;
\ No newline at end of file
index 1051c47..4de332d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8958=['savePath','substring','lastIndexOf','exports','STRING','VIRTUAL'];(function(_0x20d73e,_0x39f9ec){var _0x52e84b=function(_0x11a4ac){while(--_0x11a4ac){_0x20d73e['push'](_0x20d73e['shift']());}};_0x52e84b(++_0x39f9ec);}(_0x8958,0x93));var _0x8895=function(_0x5301f4,_0x32efde){_0x5301f4=_0x5301f4-0x0;var _0x51a1f2=_0x8958[_0x5301f4];return _0x51a1f2;};'use strict';var Sequelize=require('sequelize');module[_0x8895('0x0')]={'uniqueid':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x8895('0x1')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x8895('0x1')]},'dnid':{'type':Sequelize[_0x8895('0x1')]},'projectName':{'type':Sequelize[_0x8895('0x1')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize[_0x8895('0x1')]},'savePath':{'type':Sequelize[_0x8895('0x1')]},'format':{'type':Sequelize[_0x8895('0x2')],'get':function(){var _0x40cec6='';var _0x33013a=this['getDataValue'](_0x8895('0x3'));if(_0x33013a){_0x40cec6=_0x33013a[_0x8895('0x4')](_0x33013a[_0x8895('0x5')]('.'));}return _0x40cec6;}}};
\ No newline at end of file
+var _0xbd51=['VIRTUAL','getDataValue','savePath','lastIndexOf','sequelize','STRING'];(function(_0x2a87c3,_0x4ea237){var _0x14d6e5=function(_0x4d8a20){while(--_0x4d8a20){_0x2a87c3['push'](_0x2a87c3['shift']());}};_0x14d6e5(++_0x4ea237);}(_0xbd51,0x1a8));var _0x1bd5=function(_0x1a3e29,_0x4ba628){_0x1a3e29=_0x1a3e29-0x0;var _0x4d850f=_0xbd51[_0x1a3e29];return _0x4d850f;};'use strict';var Sequelize=require(_0x1bd5('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x1bd5('0x1')]},'callerid':{'type':Sequelize[_0x1bd5('0x1')]},'calleridname':{'type':Sequelize[_0x1bd5('0x1')]},'context':{'type':Sequelize[_0x1bd5('0x1')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize[_0x1bd5('0x1')]},'saveName':{'type':Sequelize[_0x1bd5('0x1')]},'filename':{'type':Sequelize[_0x1bd5('0x1')]},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x1bd5('0x2')],'get':function(){var _0x30a385='';var _0x19077c=this[_0x1bd5('0x3')](_0x1bd5('0x4'));if(_0x19077c){_0x30a385=_0x19077c['substring'](_0x19077c[_0x1bd5('0x5')]('.'));}return _0x30a385;}}};
\ No newline at end of file
index 38fa429..302a006 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1207=['offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SquareRecording','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','catch','show','find','create','body','params','download','uniqueid','savePath','filename','format','existsSync','decryptFile','secrets','Sequelize','SquareRecording\x20not\x20found','extname','unlink','message','Not\x20found','isNil','cancellazione\x20fisica\x20documento\x20%s','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','sendStatus','end','status','json'];(function(_0x59b2a1,_0x1f631f){var _0x4908d1=function(_0x14c9b8){while(--_0x14c9b8){_0x59b2a1['push'](_0x59b2a1['shift']());}};_0x4908d1(++_0x1f631f);}(_0x1207,0x1af));var _0x7120=function(_0x4de3da,_0x4ff3aa){_0x4de3da=_0x4de3da-0x0;var _0x2f2188=_0x1207[_0x4de3da];return _0x2f2188;};'use strict';var emlformat=require(_0x7120('0x0'));var rimraf=require(_0x7120('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x7120('0x2'));var moment=require('moment');var BPromise=require(_0x7120('0x3'));var Mustache=require(_0x7120('0x4'));var util=require(_0x7120('0x5'));var path=require(_0x7120('0x6'));var sox=require(_0x7120('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7120('0x8'));var _=require(_0x7120('0x9'));var squel=require(_0x7120('0xa'));var crypto=require('crypto');var jsforce=require(_0x7120('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x7120('0xc'));var querystring=require(_0x7120('0xd'));var Papa=require('papaparse');var Redis=require(_0x7120('0xe'));var authService=require(_0x7120('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x7120('0x10'));var hardwareService=require(_0x7120('0x11'));var logger=require(_0x7120('0x12'))(_0x7120('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x18ae2e,_0x114f0a){_0x114f0a=_0x114f0a||0xcc;return function(_0x34c4f8){if(_0x34c4f8){return _0x18ae2e[_0x7120('0x14')](_0x114f0a);}return _0x18ae2e['status'](_0x114f0a)[_0x7120('0x15')]();};}function respondWithResult(_0x45dde1,_0x57f6fb){_0x57f6fb=_0x57f6fb||0xc8;return function(_0x289130){if(_0x289130){return _0x45dde1[_0x7120('0x16')](_0x57f6fb)[_0x7120('0x17')](_0x289130);}};}function respondWithFilteredResult(_0x3d01fd,_0x4998ce){return function(_0x58ab0c){if(_0x58ab0c){var _0x5806d4=typeof _0x4998ce[_0x7120('0x18')]===_0x7120('0x19')&&typeof _0x4998ce[_0x7120('0x1a')]===_0x7120('0x19');var _0x1fd2fb=_0x58ab0c[_0x7120('0x1b')];var _0x4f1388=_0x5806d4?0x0:_0x4998ce['offset'];var _0x38f6b7=_0x5806d4?_0x58ab0c[_0x7120('0x1b')]:_0x4998ce['offset']+_0x4998ce[_0x7120('0x1a')];var _0xa06b06;if(_0x38f6b7>=_0x1fd2fb){_0x38f6b7=_0x1fd2fb;_0xa06b06=0xc8;}else{_0xa06b06=0xce;}_0x3d01fd['status'](_0xa06b06);return _0x3d01fd[_0x7120('0x1c')](_0x7120('0x1d'),_0x4f1388+'-'+_0x38f6b7+'/'+_0x1fd2fb)[_0x7120('0x17')](_0x58ab0c);}return null;};}function patchUpdates(_0x55172b){return function(_0x364819){try{jsonpatch[_0x7120('0x1e')](_0x364819,_0x55172b,!![]);}catch(_0x124f89){return BPromise[_0x7120('0x1f')](_0x124f89);}return _0x364819[_0x7120('0x20')]();};}function saveUpdates(_0x592191,_0x387178){return function(_0x53b0c9){if(_0x53b0c9){return _0x53b0c9[_0x7120('0x21')](_0x592191)[_0x7120('0x22')](function(_0x521150){return _0x521150;});}return null;};}function removeEntity(_0x5c7ed7,_0x236dad){return function(_0x23eada){if(_0x23eada){return _0x23eada[_0x7120('0x23')]()[_0x7120('0x22')](function(){_0x5c7ed7[_0x7120('0x16')](0xcc)[_0x7120('0x15')]();});}};}function handleEntityNotFound(_0x52d712,_0x261918){return function(_0x509068){if(!_0x509068){_0x52d712['sendStatus'](0x194);}return _0x509068;};}function handleError(_0x2b5463,_0x4865af){_0x4865af=_0x4865af||0x1f4;return function(_0x8a3569){logger[_0x7120('0x24')](_0x8a3569[_0x7120('0x25')]);if(_0x8a3569[_0x7120('0x26')]){delete _0x8a3569[_0x7120('0x26')];}_0x2b5463[_0x7120('0x16')](_0x4865af)[_0x7120('0x27')](_0x8a3569);};}exports[_0x7120('0x28')]=function(_0x544d21,_0x1f3e3b){var _0x5f5bbf={},_0x6c9e09={},_0x4da6ed={'count':0x0,'rows':[]};var _0x5310ae=_[_0x7120('0x29')](db[_0x7120('0x2a')][_0x7120('0x2b')],function(_0x5240df){return{'name':_0x5240df[_0x7120('0x2c')],'type':_0x5240df[_0x7120('0x2d')]['key']};});_0x6c9e09[_0x7120('0x2e')]=_[_0x7120('0x29')](_0x5310ae,_0x7120('0x26'));_0x6c9e09[_0x7120('0x2f')]=_[_0x7120('0x30')](_0x544d21['query']);_0x6c9e09[_0x7120('0x31')]=_[_0x7120('0x32')](_0x6c9e09[_0x7120('0x2e')],_0x6c9e09['query']);_0x5f5bbf[_0x7120('0x33')]=_[_0x7120('0x32')](_0x6c9e09[_0x7120('0x2e')],qs[_0x7120('0x34')](_0x544d21[_0x7120('0x2f')]['fields']));_0x5f5bbf['attributes']=_0x5f5bbf[_0x7120('0x33')][_0x7120('0x35')]?_0x5f5bbf['attributes']:_0x6c9e09[_0x7120('0x2e')];if(!_0x544d21['query']['hasOwnProperty']('nolimit')){_0x5f5bbf[_0x7120('0x1a')]=qs[_0x7120('0x1a')](_0x544d21[_0x7120('0x2f')][_0x7120('0x1a')]);_0x5f5bbf[_0x7120('0x18')]=qs['offset'](_0x544d21[_0x7120('0x2f')][_0x7120('0x18')]);}_0x5f5bbf[_0x7120('0x36')]=qs[_0x7120('0x37')](_0x544d21[_0x7120('0x2f')]['sort']);_0x5f5bbf[_0x7120('0x38')]=qs[_0x7120('0x31')](_[_0x7120('0x39')](_0x544d21['query'],_0x6c9e09[_0x7120('0x31')]),_0x5310ae);if(_0x544d21[_0x7120('0x2f')][_0x7120('0x3a')]){_0x5f5bbf[_0x7120('0x38')]=_[_0x7120('0x3b')](_0x5f5bbf[_0x7120('0x38')],{'$or':_[_0x7120('0x29')](_0x5310ae,function(_0x5c65b0){if(_0x5c65b0['type']!=='VIRTUAL'){var _0x1d3651={};_0x1d3651[_0x5c65b0[_0x7120('0x26')]]={'$like':'%'+_0x544d21[_0x7120('0x2f')][_0x7120('0x3a')]+'%'};return _0x1d3651;}})});}_0x5f5bbf=_[_0x7120('0x3b')]({},_0x5f5bbf,_0x544d21[_0x7120('0x3c')]);var _0x335a68={'where':_0x5f5bbf['where']};return db[_0x7120('0x2a')][_0x7120('0x1b')](_0x335a68)[_0x7120('0x22')](function(_0x48e921){_0x4da6ed[_0x7120('0x1b')]=_0x48e921;if(_0x544d21[_0x7120('0x2f')][_0x7120('0x3d')]){_0x5f5bbf[_0x7120('0x3e')]=[{'all':!![]}];}return db[_0x7120('0x2a')][_0x7120('0x3f')](_0x5f5bbf);})['then'](function(_0x5469b5){_0x4da6ed['rows']=_0x5469b5;return _0x4da6ed;})[_0x7120('0x22')](respondWithFilteredResult(_0x1f3e3b,_0x5f5bbf))[_0x7120('0x40')](handleError(_0x1f3e3b,null));};exports[_0x7120('0x41')]=function(_0x4c50d1,_0x50a987){var _0x42826c={'raw':!![],'where':{'id':_0x4c50d1['params']['id']}},_0x397b73={};_0x397b73[_0x7120('0x2e')]=_[_0x7120('0x30')](db[_0x7120('0x2a')]['rawAttributes']);_0x397b73[_0x7120('0x2f')]=_['keys'](_0x4c50d1[_0x7120('0x2f')]);_0x397b73[_0x7120('0x31')]=_[_0x7120('0x32')](_0x397b73[_0x7120('0x2e')],_0x397b73[_0x7120('0x2f')]);_0x42826c[_0x7120('0x33')]=_['intersection'](_0x397b73['model'],qs[_0x7120('0x34')](_0x4c50d1[_0x7120('0x2f')][_0x7120('0x34')]));_0x42826c[_0x7120('0x33')]=_0x42826c['attributes'][_0x7120('0x35')]?_0x42826c[_0x7120('0x33')]:_0x397b73[_0x7120('0x2e')];if(_0x4c50d1[_0x7120('0x2f')][_0x7120('0x3d')]){_0x42826c['include']=[{'all':!![]}];}_0x42826c=_['merge']({},_0x42826c,_0x4c50d1['options']);return db['SquareRecording'][_0x7120('0x42')](_0x42826c)['then'](handleEntityNotFound(_0x50a987,null))[_0x7120('0x22')](respondWithResult(_0x50a987,null))[_0x7120('0x40')](handleError(_0x50a987,null));};exports['create']=function(_0x56611b,_0x3b03ea){return db[_0x7120('0x2a')][_0x7120('0x43')](_0x56611b['body'],{})[_0x7120('0x22')](respondWithResult(_0x3b03ea,0xc9))['catch'](handleError(_0x3b03ea,null));};exports[_0x7120('0x21')]=function(_0x26443f,_0x2203b1){if(_0x26443f[_0x7120('0x44')]['id']){delete _0x26443f[_0x7120('0x44')]['id'];}return db[_0x7120('0x2a')][_0x7120('0x42')]({'where':{'id':_0x26443f[_0x7120('0x45')]['id']}})['then'](handleEntityNotFound(_0x2203b1,null))[_0x7120('0x22')](saveUpdates(_0x26443f['body'],null))['then'](respondWithResult(_0x2203b1,null))[_0x7120('0x40')](handleError(_0x2203b1,null));};exports[_0x7120('0x46')]=function(_0x1e5144,_0x64553f,_0x337274){var _0x4f6807=require('../../components/encryptor');var _0x2d974b=![];var _0x156234={};if(_0x1e5144['query']['type']&&_0x1e5144['query'][_0x7120('0x2d')]===_0x7120('0x47')){_0x156234[_0x7120('0x47')]=_0x1e5144[_0x7120('0x45')]['id'];}else{_0x156234['id']=_0x1e5144[_0x7120('0x45')]['id'];}return db[_0x7120('0x2a')][_0x7120('0x42')]({'where':_0x156234,'attributes':['id',_0x7120('0x48'),_0x7120('0x49')],'raw':!![]})[_0x7120('0x22')](handleEntityNotFound(_0x64553f,null))[_0x7120('0x22')](function(_0x54232e){if(_0x54232e){var _0x927a59=_0x54232e[_0x7120('0x48')];var _0x3736d9=util[_0x7120('0x4a')]('%s.cypher',_0x927a59);if(fs[_0x7120('0x4b')](_0x3736d9)){_0x2d974b=!![];return _0x4f6807[_0x7120('0x4c')](_0x3736d9,_0x927a59,config[_0x7120('0x4d')]['recording'])['then'](function(){return _0x54232e;});}return _0x54232e;}})[_0x7120('0x22')](function(_0x328803){if(_0x328803){var _0x19c3a6=_0x328803[_0x7120('0x48')];if(!fs['existsSync'](_0x19c3a6)){throw new db[(_0x7120('0x4e'))]['ValidationError'](_0x7120('0x4f'));}if(_0x328803['filename']){return _0x64553f[_0x7120('0x46')](_0x19c3a6,_0x328803[_0x7120('0x49')]+path[_0x7120('0x50')](_0x19c3a6),function(){if(_0x2d974b){fs['unlink'](_0x19c3a6);}});}else{return _0x64553f['download'](_0x19c3a6,function(_0x544ef2){if(_0x2d974b){fs[_0x7120('0x51')](_0x19c3a6);}});}}})[_0x7120('0x40')](function(_0x2aec87){if(_0x2aec87[_0x7120('0x52')]==='SquareRecording\x20not\x20found'){_0x64553f[_0x7120('0x16')](0x194)['send'](_0x7120('0x53'));}else{return handleError(_0x64553f,null);}});};exports[_0x7120('0x23')]=function(_0x590676,_0x293d3b){return db[_0x7120('0x2a')][_0x7120('0x42')]({'where':{'id':_0x590676[_0x7120('0x45')]['id']}})[_0x7120('0x22')](function(_0x5d6d53){if(_[_0x7120('0x54')](_0x5d6d53)){throw new ReferenceError('Entity\x20not\x20found');}return _0x5d6d53;})[_0x7120('0x22')](function(_0x22f42e){var _0x22c60f=_0x22f42e['savePath'];logger['info'](_0x7120('0x55'),_0x22c60f);if(!_[_0x7120('0x54')](_0x22f42e['savePath'])&&fs[_0x7120('0x4b')](_0x22c60f)){logger[_0x7120('0x56')](_0x7120('0x57')+_0x22c60f+_0x7120('0x58'));fs[_0x7120('0x59')](_0x22c60f);}_0x22c60f=_0x22c60f+_0x7120('0x5a');if(!_[_0x7120('0x54')](_0x22f42e[_0x7120('0x48')])&&fs[_0x7120('0x4b')](_0x22c60f)){logger['info'](_0x7120('0x57')+_0x22c60f+_0x7120('0x58'));fs['unlinkSync'](_0x22c60f);}return _0x22f42e;})[_0x7120('0x22')](function(_0x332c37){if(!_0x332c37)throw new InternalError();return _0x332c37[_0x7120('0x23')]();})['then'](function(){_0x293d3b[_0x7120('0x16')](0xcc)['end']();})[_0x7120('0x40')](handleError(_0x293d3b,null));};
\ No newline at end of file
+var _0x6850=['options','SquareRecording','includeAll','include','findAll','rows','catch','show','params','create','body','find','download','../../components/encryptor','uniqueid','savePath','format','%s.cypher','existsSync','decryptFile','recording','Sequelize','ValidationError','filename','extname','unlink','message','SquareRecording\x20not\x20found','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','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','map','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge'];(function(_0x3d430d,_0x3021a1){var _0x5d399d=function(_0x279615){while(--_0x279615){_0x3d430d['push'](_0x3d430d['shift']());}};_0x5d399d(++_0x3021a1);}(_0x6850,0x8b));var _0x0685=function(_0x46aeb7,_0x3279e6){_0x46aeb7=_0x46aeb7-0x0;var _0x4f79c4=_0x6850[_0x46aeb7];return _0x4f79c4;};'use strict';var emlformat=require(_0x0685('0x0'));var rimraf=require(_0x0685('0x1'));var zipdir=require(_0x0685('0x2'));var jsonpatch=require(_0x0685('0x3'));var rp=require(_0x0685('0x4'));var moment=require(_0x0685('0x5'));var BPromise=require(_0x0685('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x0685('0x7'));var sox=require(_0x0685('0x8'));var csv=require('to-csv');var ejs=require(_0x0685('0x9'));var fs=require('fs');var fs_extra=require(_0x0685('0xa'));var _=require(_0x0685('0xb'));var squel=require(_0x0685('0xc'));var crypto=require(_0x0685('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x0685('0xe'));var toCsv=require(_0x0685('0xf'));var querystring=require('querystring');var Papa=require(_0x0685('0x10'));var Redis=require(_0x0685('0x11'));var authService=require(_0x0685('0x12'));var qs=require(_0x0685('0x13'));var as=require(_0x0685('0x14'));var hardwareService=require(_0x0685('0x15'));var logger=require(_0x0685('0x16'))('api');var utils=require(_0x0685('0x17'));var config=require(_0x0685('0x18'));var licenseUtil=require(_0x0685('0x19'));var db=require(_0x0685('0x1a'))['db'];function respondWithStatusCode(_0x147e81,_0xcc0330){_0xcc0330=_0xcc0330||0xcc;return function(_0x37c2dc){if(_0x37c2dc){return _0x147e81[_0x0685('0x1b')](_0xcc0330);}return _0x147e81[_0x0685('0x1c')](_0xcc0330)['end']();};}function respondWithResult(_0x1e5cc8,_0x54e495){_0x54e495=_0x54e495||0xc8;return function(_0x621710){if(_0x621710){return _0x1e5cc8[_0x0685('0x1c')](_0x54e495)[_0x0685('0x1d')](_0x621710);}};}function respondWithFilteredResult(_0x5742cc,_0x302482){return function(_0x56efb5){if(_0x56efb5){var _0x5e083c=typeof _0x302482['offset']===_0x0685('0x1e')&&typeof _0x302482[_0x0685('0x1f')]==='undefined';var _0x527bf0=_0x56efb5['count'];var _0x38bfae=_0x5e083c?0x0:_0x302482[_0x0685('0x20')];var _0xba948b=_0x5e083c?_0x56efb5[_0x0685('0x21')]:_0x302482[_0x0685('0x20')]+_0x302482['limit'];var _0xfb93e3;if(_0xba948b>=_0x527bf0){_0xba948b=_0x527bf0;_0xfb93e3=0xc8;}else{_0xfb93e3=0xce;}_0x5742cc[_0x0685('0x1c')](_0xfb93e3);return _0x5742cc[_0x0685('0x22')](_0x0685('0x23'),_0x38bfae+'-'+_0xba948b+'/'+_0x527bf0)['json'](_0x56efb5);}return null;};}function patchUpdates(_0x192204){return function(_0x3571b5){try{jsonpatch[_0x0685('0x24')](_0x3571b5,_0x192204,!![]);}catch(_0x175909){return BPromise['reject'](_0x175909);}return _0x3571b5[_0x0685('0x25')]();};}function saveUpdates(_0x187fa4,_0x7a65e9){return function(_0xcbbe99){if(_0xcbbe99){return _0xcbbe99[_0x0685('0x26')](_0x187fa4)[_0x0685('0x27')](function(_0x55745f){return _0x55745f;});}return null;};}function removeEntity(_0x37fd3b,_0x15d6ed){return function(_0x3559d2){if(_0x3559d2){return _0x3559d2[_0x0685('0x28')]()[_0x0685('0x27')](function(){_0x37fd3b['status'](0xcc)[_0x0685('0x29')]();});}};}function handleEntityNotFound(_0x4f0fe3,_0x438925){return function(_0x29ff4b){if(!_0x29ff4b){_0x4f0fe3[_0x0685('0x1b')](0x194);}return _0x29ff4b;};}function handleError(_0x2744f,_0xc58fe9){_0xc58fe9=_0xc58fe9||0x1f4;return function(_0x15860){logger[_0x0685('0x2a')](_0x15860[_0x0685('0x2b')]);if(_0x15860[_0x0685('0x2c')]){delete _0x15860[_0x0685('0x2c')];}_0x2744f[_0x0685('0x1c')](_0xc58fe9)['send'](_0x15860);};}exports['index']=function(_0xfdc14d,_0x4543eb){var _0x107109={},_0x27ef06={},_0x28c8c2={'count':0x0,'rows':[]};var _0x25f6f2=_[_0x0685('0x2d')](db['SquareRecording'][_0x0685('0x2e')],function(_0x41a6b0){return{'name':_0x41a6b0[_0x0685('0x2f')],'type':_0x41a6b0[_0x0685('0x30')][_0x0685('0x31')]};});_0x27ef06[_0x0685('0x32')]=_[_0x0685('0x2d')](_0x25f6f2,_0x0685('0x2c'));_0x27ef06[_0x0685('0x33')]=_[_0x0685('0x34')](_0xfdc14d[_0x0685('0x33')]);_0x27ef06['filters']=_['intersection'](_0x27ef06['model'],_0x27ef06['query']);_0x107109[_0x0685('0x35')]=_[_0x0685('0x36')](_0x27ef06['model'],qs[_0x0685('0x37')](_0xfdc14d[_0x0685('0x33')]['fields']));_0x107109[_0x0685('0x35')]=_0x107109[_0x0685('0x35')][_0x0685('0x38')]?_0x107109[_0x0685('0x35')]:_0x27ef06['model'];if(!_0xfdc14d[_0x0685('0x33')][_0x0685('0x39')](_0x0685('0x3a'))){_0x107109[_0x0685('0x1f')]=qs[_0x0685('0x1f')](_0xfdc14d[_0x0685('0x33')][_0x0685('0x1f')]);_0x107109['offset']=qs[_0x0685('0x20')](_0xfdc14d[_0x0685('0x33')][_0x0685('0x20')]);}_0x107109['order']=qs['sort'](_0xfdc14d[_0x0685('0x33')][_0x0685('0x3b')]);_0x107109[_0x0685('0x3c')]=qs[_0x0685('0x3d')](_[_0x0685('0x3e')](_0xfdc14d[_0x0685('0x33')],_0x27ef06['filters']),_0x25f6f2);if(_0xfdc14d[_0x0685('0x33')][_0x0685('0x3f')]){_0x107109['where']=_[_0x0685('0x40')](_0x107109['where'],{'$or':_[_0x0685('0x2d')](_0x25f6f2,function(_0x24effa){if(_0x24effa['type']!=='VIRTUAL'){var _0x340444={};_0x340444[_0x24effa[_0x0685('0x2c')]]={'$like':'%'+_0xfdc14d[_0x0685('0x33')][_0x0685('0x3f')]+'%'};return _0x340444;}})});}_0x107109=_['merge']({},_0x107109,_0xfdc14d[_0x0685('0x41')]);var _0x2c9159={'where':_0x107109[_0x0685('0x3c')]};return db[_0x0685('0x42')][_0x0685('0x21')](_0x2c9159)[_0x0685('0x27')](function(_0x1b1056){_0x28c8c2[_0x0685('0x21')]=_0x1b1056;if(_0xfdc14d[_0x0685('0x33')][_0x0685('0x43')]){_0x107109[_0x0685('0x44')]=[{'all':!![]}];}return db[_0x0685('0x42')][_0x0685('0x45')](_0x107109);})[_0x0685('0x27')](function(_0x2212e5){_0x28c8c2[_0x0685('0x46')]=_0x2212e5;return _0x28c8c2;})['then'](respondWithFilteredResult(_0x4543eb,_0x107109))[_0x0685('0x47')](handleError(_0x4543eb,null));};exports[_0x0685('0x48')]=function(_0x45f6e8,_0x384e7f){var _0x5459bb={'raw':!![],'where':{'id':_0x45f6e8[_0x0685('0x49')]['id']}},_0x4eebfe={};_0x4eebfe[_0x0685('0x32')]=_[_0x0685('0x34')](db[_0x0685('0x42')][_0x0685('0x2e')]);_0x4eebfe[_0x0685('0x33')]=_['keys'](_0x45f6e8['query']);_0x4eebfe[_0x0685('0x3d')]=_['intersection'](_0x4eebfe[_0x0685('0x32')],_0x4eebfe[_0x0685('0x33')]);_0x5459bb[_0x0685('0x35')]=_['intersection'](_0x4eebfe[_0x0685('0x32')],qs[_0x0685('0x37')](_0x45f6e8[_0x0685('0x33')][_0x0685('0x37')]));_0x5459bb['attributes']=_0x5459bb[_0x0685('0x35')][_0x0685('0x38')]?_0x5459bb['attributes']:_0x4eebfe[_0x0685('0x32')];if(_0x45f6e8['query'][_0x0685('0x43')]){_0x5459bb[_0x0685('0x44')]=[{'all':!![]}];}_0x5459bb=_[_0x0685('0x40')]({},_0x5459bb,_0x45f6e8['options']);return db[_0x0685('0x42')]['find'](_0x5459bb)[_0x0685('0x27')](handleEntityNotFound(_0x384e7f,null))[_0x0685('0x27')](respondWithResult(_0x384e7f,null))[_0x0685('0x47')](handleError(_0x384e7f,null));};exports['create']=function(_0xf19275,_0x1680be){return db['SquareRecording'][_0x0685('0x4a')](_0xf19275['body'],{})[_0x0685('0x27')](respondWithResult(_0x1680be,0xc9))[_0x0685('0x47')](handleError(_0x1680be,null));};exports[_0x0685('0x26')]=function(_0x130178,_0xcef4a1){if(_0x130178[_0x0685('0x4b')]['id']){delete _0x130178[_0x0685('0x4b')]['id'];}return db[_0x0685('0x42')][_0x0685('0x4c')]({'where':{'id':_0x130178['params']['id']}})['then'](handleEntityNotFound(_0xcef4a1,null))[_0x0685('0x27')](saveUpdates(_0x130178[_0x0685('0x4b')],null))[_0x0685('0x27')](respondWithResult(_0xcef4a1,null))[_0x0685('0x47')](handleError(_0xcef4a1,null));};exports[_0x0685('0x4d')]=function(_0x30dddc,_0x143412,_0x4e203c){var _0x3faf96=require(_0x0685('0x4e'));var _0xe4faa=![];var _0x4fb649={};if(_0x30dddc[_0x0685('0x33')][_0x0685('0x30')]&&_0x30dddc['query'][_0x0685('0x30')]===_0x0685('0x4f')){_0x4fb649['uniqueid']=_0x30dddc[_0x0685('0x49')]['id'];}else{_0x4fb649['id']=_0x30dddc[_0x0685('0x49')]['id'];}return db[_0x0685('0x42')][_0x0685('0x4c')]({'where':_0x4fb649,'attributes':['id',_0x0685('0x50'),'filename'],'raw':!![]})[_0x0685('0x27')](handleEntityNotFound(_0x143412,null))[_0x0685('0x27')](function(_0x33a722){if(_0x33a722){var _0x33e2e2=_0x33a722[_0x0685('0x50')];var _0x304acb=util[_0x0685('0x51')](_0x0685('0x52'),_0x33e2e2);if(fs[_0x0685('0x53')](_0x304acb)){_0xe4faa=!![];return _0x3faf96[_0x0685('0x54')](_0x304acb,_0x33e2e2,config['secrets'][_0x0685('0x55')])['then'](function(){return _0x33a722;});}return _0x33a722;}})[_0x0685('0x27')](function(_0x591175){if(_0x591175){var _0x5ab22b=_0x591175[_0x0685('0x50')];if(!fs[_0x0685('0x53')](_0x5ab22b)){throw new db[(_0x0685('0x56'))][(_0x0685('0x57'))]('SquareRecording\x20not\x20found');}if(_0x591175[_0x0685('0x58')]){return _0x143412[_0x0685('0x4d')](_0x5ab22b,_0x591175[_0x0685('0x58')]+path[_0x0685('0x59')](_0x5ab22b),function(){if(_0xe4faa){fs[_0x0685('0x5a')](_0x5ab22b);}});}else{return _0x143412[_0x0685('0x4d')](_0x5ab22b,function(_0x54e0b2){if(_0xe4faa){fs[_0x0685('0x5a')](_0x5ab22b);}});}}})['catch'](function(_0x57b357){if(_0x57b357[_0x0685('0x5b')]===_0x0685('0x5c')){_0x143412[_0x0685('0x1c')](0x194)['send'](_0x0685('0x5d'));}else{return handleError(_0x143412,null);}});};exports['destroy']=function(_0x1168de,_0x2c54d0){return db[_0x0685('0x42')][_0x0685('0x4c')]({'where':{'id':_0x1168de[_0x0685('0x49')]['id']}})['then'](function(_0x32ddc3){if(_[_0x0685('0x5e')](_0x32ddc3)){throw new ReferenceError(_0x0685('0x5f'));}return _0x32ddc3;})['then'](function(_0x2b75ae){var _0x5979de=_0x2b75ae[_0x0685('0x50')];logger[_0x0685('0x60')](_0x0685('0x61'),_0x5979de);if(!_[_0x0685('0x5e')](_0x2b75ae[_0x0685('0x50')])&&fs['existsSync'](_0x5979de)){logger[_0x0685('0x60')](_0x0685('0x62')+_0x5979de+_0x0685('0x63'));fs[_0x0685('0x64')](_0x5979de);}_0x5979de=_0x5979de+_0x0685('0x65');if(!_['isNil'](_0x2b75ae['savePath'])&&fs[_0x0685('0x53')](_0x5979de)){logger[_0x0685('0x60')](_0x0685('0x62')+_0x5979de+_0x0685('0x63'));fs[_0x0685('0x64')](_0x5979de);}return _0x2b75ae;})[_0x0685('0x27')](function(_0x25d7cd){if(!_0x25d7cd)throw new InternalError();return _0x25d7cd[_0x0685('0x28')]();})['then'](function(){_0x2c54d0[_0x0685('0x1c')](0xcc)[_0x0685('0x29')]();})[_0x0685('0x47')](handleError(_0x2c54d0,null));};
\ No newline at end of file
index d7ef67d..e3c7df5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe953=['bluebird','request-promise','path','rimraf','../../config/environment','./squareRecording.attributes','SquareRecording','lodash','util','../../config/logger','moment'];(function(_0x5ed299,_0x27b8ab){var _0x492c8b=function(_0x5f4b82){while(--_0x5f4b82){_0x5ed299['push'](_0x5ed299['shift']());}};_0x492c8b(++_0x27b8ab);}(_0xe953,0xf9));var _0x3e95=function(_0x35af23,_0x9190f6){_0x35af23=_0x35af23-0x0;var _0x340506=_0xe953[_0x35af23];return _0x340506;};'use strict';var _=require(_0x3e95('0x0'));var util=require(_0x3e95('0x1'));var logger=require(_0x3e95('0x2'))('api');var moment=require(_0x3e95('0x3'));var BPromise=require(_0x3e95('0x4'));var rp=require(_0x3e95('0x5'));var fs=require('fs');var path=require(_0x3e95('0x6'));var rimraf=require(_0x3e95('0x7'));var config=require(_0x3e95('0x8'));var attributes=require(_0x3e95('0x9'));module['exports']=function(_0x4ec1b2,_0x2aaa3e){return _0x4ec1b2['define'](_0x3e95('0xa'),attributes,{'tableName':'square_recordings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcde7=['define','square_recordings','../../config/logger','api','moment','path','../../config/environment','./squareRecording.attributes','exports'];(function(_0x34c38c,_0x432c8c){var _0xfbdf6b=function(_0x13f8e2){while(--_0x13f8e2){_0x34c38c['push'](_0x34c38c['shift']());}};_0xfbdf6b(++_0x432c8c);}(_0xcde7,0x65));var _0x7cde=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xcde7[_0x5d6456];return _0x4d66c1;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7cde('0x0'))(_0x7cde('0x1'));var moment=require(_0x7cde('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x7cde('0x3'));var rimraf=require('rimraf');var config=require(_0x7cde('0x4'));var attributes=require(_0x7cde('0x5'));module[_0x7cde('0x6')]=function(_0x293f70,_0xbaa4b3){return _0x293f70[_0x7cde('0x7')]('SquareRecording',attributes,{'tableName':_0x7cde('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 74e158c..29fd1df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd4d=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','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','SquareRecording','body','options','raw','catch','util','moment','bluebird'];(function(_0x526a71,_0x50b5e0){var _0x15ef2c=function(_0x3b3607){while(--_0x3b3607){_0x526a71['push'](_0x526a71['shift']());}};_0x15ef2c(++_0x50b5e0);}(_0xcd4d,0x176));var _0xdcd4=function(_0x41e773,_0x3d84c8){_0x41e773=_0x41e773-0x0;var _0x5da830=_0xcd4d[_0x41e773];return _0x5da830;};'use strict';var _=require('lodash');var util=require(_0xdcd4('0x0'));var moment=require(_0xdcd4('0x1'));var BPromise=require(_0xdcd4('0x2'));var rs=require(_0xdcd4('0x3'));var fs=require('fs');var Redis=require(_0xdcd4('0x4'));var db=require(_0xdcd4('0x5'))['db'];var utils=require(_0xdcd4('0x6'));var logger=require(_0xdcd4('0x7'))(_0xdcd4('0x8'));var config=require(_0xdcd4('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xdcd4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3500a3,_0x41b7dd,_0x476b6e){return new BPromise(function(_0x1808cf,_0x374309){return client[_0xdcd4('0xb')](_0x3500a3,_0x476b6e)[_0xdcd4('0xc')](function(_0x177ff3){logger[_0xdcd4('0xd')](_0xdcd4('0xe'),_0x41b7dd,_0xdcd4('0xf'));logger[_0xdcd4('0x10')](_0xdcd4('0x11'),_0x41b7dd,_0xdcd4('0xf'),JSON[_0xdcd4('0x12')](_0x177ff3));if(_0x177ff3[_0xdcd4('0x13')]){if(_0x177ff3[_0xdcd4('0x13')][_0xdcd4('0x14')]===0x1f4){logger['error']('SquareRecording,\x20%s,\x20%s',_0x41b7dd,_0x177ff3['error'][_0xdcd4('0x15')]);return _0x374309(_0x177ff3[_0xdcd4('0x13')]['message']);}logger[_0xdcd4('0x13')](_0xdcd4('0xe'),_0x41b7dd,_0x177ff3[_0xdcd4('0x13')][_0xdcd4('0x15')]);return _0x1808cf(_0x177ff3['error']['message']);}else{logger[_0xdcd4('0xd')](_0xdcd4('0xe'),_0x41b7dd,_0xdcd4('0xf'));_0x1808cf(_0x177ff3[_0xdcd4('0x16')][_0xdcd4('0x15')]);}})['catch'](function(_0x558e69){logger['error'](_0xdcd4('0xe'),_0x41b7dd,_0x558e69);_0x374309(_0x558e69);});});}exports[_0xdcd4('0x17')]=function(_0x35a333){var _0x350d7b=this;return new Promise(function(_0x537aa1,_0x254628){return db[_0xdcd4('0x18')]['create'](_0x35a333[_0xdcd4('0x19')],{'raw':_0x35a333[_0xdcd4('0x1a')]?_0x35a333[_0xdcd4('0x1a')][_0xdcd4('0x1b')]===undefined?!![]:![]:!![]})[_0xdcd4('0xc')](function(_0x143c1a){logger[_0xdcd4('0xd')]('CreateSquareRecording',_0x35a333);logger['debug']('CreateSquareRecording',_0x35a333,JSON[_0xdcd4('0x12')](_0x143c1a));_0x537aa1(_0x143c1a);})[_0xdcd4('0x1c')](function(_0x27f9c8){logger[_0xdcd4('0x13')]('CreateSquareRecording',_0x27f9c8[_0xdcd4('0x15')],_0x35a333);_0x254628(_0x350d7b[_0xdcd4('0x13')](0x1f4,_0x27f9c8[_0xdcd4('0x15')]));});});};
\ No newline at end of file
+var _0xcd85=['stringify','error','message','info','result','catch','SquareRecording','body','options','raw','CreateSquareRecording','lodash','util','moment','bluebird','ioredis','rpc','jayson/promise','client','http','request','then','SquareRecording,\x20%s,\x20%s','debug','request\x20sent'];(function(_0x26343e,_0x434407){var _0xe40ee2=function(_0x460cdc){while(--_0x460cdc){_0x26343e['push'](_0x26343e['shift']());}};_0xe40ee2(++_0x434407);}(_0xcd85,0x6f));var _0x5cd8=function(_0x24c9b3,_0xcad610){_0x24c9b3=_0x24c9b3-0x0;var _0xc570f8=_0xcd85[_0x24c9b3];return _0xc570f8;};'use strict';var _=require(_0x5cd8('0x0'));var util=require(_0x5cd8('0x1'));var moment=require(_0x5cd8('0x2'));var BPromise=require(_0x5cd8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5cd8('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5cd8('0x5'));var config=require('../../config/environment');var jayson=require(_0x5cd8('0x6'));var client=jayson[_0x5cd8('0x7')][_0x5cd8('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4377c5,_0x1c0325,_0x3f5a21){return new BPromise(function(_0x25589e,_0x4dbe1b){return client[_0x5cd8('0x9')](_0x4377c5,_0x3f5a21)[_0x5cd8('0xa')](function(_0x3526b9){logger['info'](_0x5cd8('0xb'),_0x1c0325,'request\x20sent');logger[_0x5cd8('0xc')]('SquareRecording,\x20%s,\x20%s,\x20%s',_0x1c0325,_0x5cd8('0xd'),JSON[_0x5cd8('0xe')](_0x3526b9));if(_0x3526b9[_0x5cd8('0xf')]){if(_0x3526b9['error']['code']===0x1f4){logger[_0x5cd8('0xf')](_0x5cd8('0xb'),_0x1c0325,_0x3526b9[_0x5cd8('0xf')][_0x5cd8('0x10')]);return _0x4dbe1b(_0x3526b9[_0x5cd8('0xf')]['message']);}logger[_0x5cd8('0xf')](_0x5cd8('0xb'),_0x1c0325,_0x3526b9['error'][_0x5cd8('0x10')]);return _0x25589e(_0x3526b9[_0x5cd8('0xf')]['message']);}else{logger[_0x5cd8('0x11')](_0x5cd8('0xb'),_0x1c0325,_0x5cd8('0xd'));_0x25589e(_0x3526b9[_0x5cd8('0x12')]['message']);}})[_0x5cd8('0x13')](function(_0x159144){logger['error'](_0x5cd8('0xb'),_0x1c0325,_0x159144);_0x4dbe1b(_0x159144);});});}exports['CreateSquareRecording']=function(_0x1a399f){var _0x4701d4=this;return new Promise(function(_0x2ea1db,_0x19cd39){return db[_0x5cd8('0x14')]['create'](_0x1a399f[_0x5cd8('0x15')],{'raw':_0x1a399f[_0x5cd8('0x16')]?_0x1a399f[_0x5cd8('0x16')][_0x5cd8('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x2fb440){logger['info'](_0x5cd8('0x18'),_0x1a399f);logger['debug'](_0x5cd8('0x18'),_0x1a399f,JSON[_0x5cd8('0xe')](_0x2fb440));_0x2ea1db(_0x2fb440);})[_0x5cd8('0x13')](function(_0x2856d8){logger[_0x5cd8('0xf')](_0x5cd8('0x18'),_0x2856d8['message'],_0x1a399f);_0x19cd39(_0x4701d4['error'](0x1f4,_0x2856d8['message']));});});};
\ No newline at end of file
index 7784859..d04c5c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index'];(function(_0x129890,_0x20af0b){var _0x10f8e8=function(_0x17cd7){while(--_0x17cd7){_0x129890['push'](_0x129890['shift']());}};_0x10f8e8(++_0x20af0b);}(_0xe706,0xa3));var _0x6e70=function(_0x77ae89,_0x2b65a7){_0x77ae89=_0x77ae89-0x0;var _0x19d79c=_0xe706[_0x77ae89];return _0x19d79c;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
+var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index'];(function(_0x3b0b05,_0x425360){var _0x5ef8f5=function(_0x32c83a){while(--_0x32c83a){_0x3b0b05['push'](_0x3b0b05['shift']());}};_0x5ef8f5(++_0x425360);}(_0xe706,0xa3));var _0x6e70=function(_0xe2cbd3,_0x678694){_0xe2cbd3=_0xe2cbd3-0x0;var _0x5155e3=_0xe706[_0xe2cbd3];return _0x5155e3;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
index b6f435a..f2f8097 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x694a=['exports','STRING','DATE','BOOLEAN','sequelize'];(function(_0xee2d34,_0x414d59){var _0x1ee524=function(_0x5b4ce3){while(--_0x5b4ce3){_0xee2d34['push'](_0xee2d34['shift']());}};_0x1ee524(++_0x414d59);}(_0x694a,0x13f));var _0xa694=function(_0x5eaefe,_0xc72159){_0x5eaefe=_0x5eaefe-0x0;var _0xe64929=_0x694a[_0x5eaefe];return _0xe64929;};'use strict';var Sequelize=require(_0xa694('0x0'));module[_0xa694('0x1')]={'network':{'type':Sequelize[_0xa694('0x2')]},'network_script':{'type':Sequelize[_0xa694('0x2')]},'request':{'type':Sequelize[_0xa694('0x2')]},'channel':{'type':Sequelize[_0xa694('0x2')]},'language':{'type':Sequelize[_0xa694('0x2')]},'type':{'type':Sequelize[_0xa694('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'version':{'type':Sequelize[_0xa694('0x2')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xa694('0x2')]},'callingpres':{'type':Sequelize[_0xa694('0x2')]},'callingani2':{'type':Sequelize['STRING']},'callington':{'type':Sequelize[_0xa694('0x2')]},'callingtns':{'type':Sequelize[_0xa694('0x2')]},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize[_0xa694('0x2')]},'context':{'type':Sequelize[_0xa694('0x2')]},'extension':{'type':Sequelize[_0xa694('0x2')]},'priority':{'type':Sequelize[_0xa694('0x2')]},'enhanced':{'type':Sequelize[_0xa694('0x2')]},'accountcode':{'type':Sequelize['STRING']},'threadid':{'type':Sequelize[_0xa694('0x2')]},'project_name':{'type':Sequelize[_0xa694('0x2')]},'joinAt':{'type':Sequelize[_0xa694('0x3')]},'leaveAt':{'type':Sequelize[_0xa694('0x3')]},'bot':{'type':Sequelize[_0xa694('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x9189=['BOOLEAN','STRING','DATE'];(function(_0x1e4c91,_0xdd023c){var _0x3a2334=function(_0x2167d3){while(--_0x2167d3){_0x1e4c91['push'](_0x1e4c91['shift']());}};_0x3a2334(++_0xdd023c);}(_0x9189,0x1d5));var _0x9918=function(_0x2f8009,_0x4aafb4){_0x2f8009=_0x2f8009-0x0;var _0x1099cc=_0x9189[_0x2f8009];return _0x1099cc;};'use strict';var Sequelize=require('sequelize');module['exports']={'network':{'type':Sequelize[_0x9918('0x0')]},'network_script':{'type':Sequelize[_0x9918('0x0')]},'request':{'type':Sequelize[_0x9918('0x0')]},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x9918('0x0')]},'type':{'type':Sequelize[_0x9918('0x0')]},'uniqueid':{'type':Sequelize[_0x9918('0x0')]},'version':{'type':Sequelize[_0x9918('0x0')]},'callerid':{'type':Sequelize[_0x9918('0x0')]},'calleridname':{'type':Sequelize[_0x9918('0x0')]},'callingpres':{'type':Sequelize[_0x9918('0x0')]},'callingani2':{'type':Sequelize[_0x9918('0x0')]},'callington':{'type':Sequelize[_0x9918('0x0')]},'callingtns':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0x9918('0x0')]},'rdnis':{'type':Sequelize[_0x9918('0x0')]},'context':{'type':Sequelize[_0x9918('0x0')]},'extension':{'type':Sequelize[_0x9918('0x0')]},'priority':{'type':Sequelize[_0x9918('0x0')]},'enhanced':{'type':Sequelize[_0x9918('0x0')]},'accountcode':{'type':Sequelize[_0x9918('0x0')]},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize[_0x9918('0x0')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x9918('0x1')]},'bot':{'type':Sequelize[_0x9918('0x2')],'defaultValue':![]}};
\ No newline at end of file
index db81a71..1c5dea6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4b8=['json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','map','SquareReport','rawAttributes','type','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','fields','find','create','body','rimraf','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','end'];(function(_0x4b91c4,_0x23f35f){var _0x25cb80=function(_0x48e283){while(--_0x48e283){_0x4b91c4['push'](_0x4b91c4['shift']());}};_0x25cb80(++_0x23f35f);}(_0xb4b8,0x18c));var _0x8b4b=function(_0x59eb1b,_0x2e8284){_0x59eb1b=_0x59eb1b-0x0;var _0xa05e2a=_0xb4b8[_0x59eb1b];return _0xa05e2a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8b4b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x8b4b('0x1'));var Mustache=require('mustache');var util=require(_0x8b4b('0x2'));var path=require(_0x8b4b('0x3'));var sox=require(_0x8b4b('0x4'));var csv=require(_0x8b4b('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8b4b('0x6'));var _=require(_0x8b4b('0x7'));var squel=require(_0x8b4b('0x8'));var crypto=require(_0x8b4b('0x9'));var jsforce=require(_0x8b4b('0xa'));var deskjs=require(_0x8b4b('0xb'));var toCsv=require('to-csv');var querystring=require(_0x8b4b('0xc'));var Papa=require('papaparse');var Redis=require(_0x8b4b('0xd'));var authService=require(_0x8b4b('0xe'));var qs=require(_0x8b4b('0xf'));var as=require(_0x8b4b('0x10'));var hardwareService=require(_0x8b4b('0x11'));var logger=require(_0x8b4b('0x12'))(_0x8b4b('0x13'));var utils=require(_0x8b4b('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x391120,_0x4726e6){_0x4726e6=_0x4726e6||0xcc;return function(_0x13457a){if(_0x13457a){return _0x391120[_0x8b4b('0x15')](_0x4726e6);}return _0x391120[_0x8b4b('0x16')](_0x4726e6)[_0x8b4b('0x17')]();};}function respondWithResult(_0x1a8ad5,_0x37176a){_0x37176a=_0x37176a||0xc8;return function(_0x41cf93){if(_0x41cf93){return _0x1a8ad5['status'](_0x37176a)[_0x8b4b('0x18')](_0x41cf93);}};}function respondWithFilteredResult(_0x1a9c9d,_0x39fcf1){return function(_0x1efe9c){if(_0x1efe9c){var _0x4fb376=typeof _0x39fcf1[_0x8b4b('0x19')]===_0x8b4b('0x1a')&&typeof _0x39fcf1[_0x8b4b('0x1b')]===_0x8b4b('0x1a');var _0x38597c=_0x1efe9c[_0x8b4b('0x1c')];var _0x178758=_0x4fb376?0x0:_0x39fcf1[_0x8b4b('0x19')];var _0x524b91=_0x4fb376?_0x1efe9c[_0x8b4b('0x1c')]:_0x39fcf1[_0x8b4b('0x19')]+_0x39fcf1['limit'];var _0x58d63c;if(_0x524b91>=_0x38597c){_0x524b91=_0x38597c;_0x58d63c=0xc8;}else{_0x58d63c=0xce;}_0x1a9c9d[_0x8b4b('0x16')](_0x58d63c);return _0x1a9c9d[_0x8b4b('0x1d')](_0x8b4b('0x1e'),_0x178758+'-'+_0x524b91+'/'+_0x38597c)[_0x8b4b('0x18')](_0x1efe9c);}return null;};}function patchUpdates(_0x17f490){return function(_0x4c8e4f){try{jsonpatch[_0x8b4b('0x1f')](_0x4c8e4f,_0x17f490,!![]);}catch(_0x2bc1aa){return BPromise[_0x8b4b('0x20')](_0x2bc1aa);}return _0x4c8e4f[_0x8b4b('0x21')]();};}function saveUpdates(_0x37b80e,_0x2a88a1){return function(_0x4ebc72){if(_0x4ebc72){return _0x4ebc72[_0x8b4b('0x22')](_0x37b80e)['then'](function(_0x18f598){return _0x18f598;});}return null;};}function removeEntity(_0x5b593d,_0x121b7b){return function(_0x3c8acd){if(_0x3c8acd){return _0x3c8acd[_0x8b4b('0x23')]()[_0x8b4b('0x24')](function(){_0x5b593d[_0x8b4b('0x16')](0xcc)[_0x8b4b('0x17')]();});}};}function handleEntityNotFound(_0x3f1bc6,_0x3d07a2){return function(_0x465a53){if(!_0x465a53){_0x3f1bc6['sendStatus'](0x194);}return _0x465a53;};}function handleError(_0x578e7f,_0x18ebcb){_0x18ebcb=_0x18ebcb||0x1f4;return function(_0x2b4658){logger['error'](_0x2b4658[_0x8b4b('0x25')]);if(_0x2b4658[_0x8b4b('0x26')]){delete _0x2b4658[_0x8b4b('0x26')];}_0x578e7f[_0x8b4b('0x16')](_0x18ebcb)[_0x8b4b('0x27')](_0x2b4658);};}exports['index']=function(_0x4b221d,_0x4faa47){var _0x3dbe86={},_0x2fca83={},_0x5566c1={'count':0x0,'rows':[]};var _0x4c6f6b=_[_0x8b4b('0x28')](db[_0x8b4b('0x29')][_0x8b4b('0x2a')],function(_0x13bd44){return{'name':_0x13bd44['fieldName'],'type':_0x13bd44[_0x8b4b('0x2b')]['key']};});_0x2fca83[_0x8b4b('0x2c')]=_[_0x8b4b('0x28')](_0x4c6f6b,_0x8b4b('0x26'));_0x2fca83[_0x8b4b('0x2d')]=_[_0x8b4b('0x2e')](_0x4b221d[_0x8b4b('0x2d')]);_0x2fca83[_0x8b4b('0x2f')]=_[_0x8b4b('0x30')](_0x2fca83[_0x8b4b('0x2c')],_0x2fca83['query']);_0x3dbe86[_0x8b4b('0x31')]=_[_0x8b4b('0x30')](_0x2fca83[_0x8b4b('0x2c')],qs['fields'](_0x4b221d[_0x8b4b('0x2d')]['fields']));_0x3dbe86[_0x8b4b('0x31')]=_0x3dbe86['attributes'][_0x8b4b('0x32')]?_0x3dbe86[_0x8b4b('0x31')]:_0x2fca83[_0x8b4b('0x2c')];if(!_0x4b221d[_0x8b4b('0x2d')][_0x8b4b('0x33')](_0x8b4b('0x34'))){_0x3dbe86[_0x8b4b('0x1b')]=qs[_0x8b4b('0x1b')](_0x4b221d[_0x8b4b('0x2d')]['limit']);_0x3dbe86['offset']=qs[_0x8b4b('0x19')](_0x4b221d[_0x8b4b('0x2d')][_0x8b4b('0x19')]);}_0x3dbe86[_0x8b4b('0x35')]=qs['sort'](_0x4b221d[_0x8b4b('0x2d')]['sort']);_0x3dbe86[_0x8b4b('0x36')]=qs[_0x8b4b('0x2f')](_[_0x8b4b('0x37')](_0x4b221d[_0x8b4b('0x2d')],_0x2fca83[_0x8b4b('0x2f')]),_0x4c6f6b);if(_0x4b221d[_0x8b4b('0x2d')][_0x8b4b('0x38')]){_0x3dbe86['where']=_[_0x8b4b('0x39')](_0x3dbe86[_0x8b4b('0x36')],{'$or':_[_0x8b4b('0x28')](_0x4c6f6b,function(_0xb90097){if(_0xb90097[_0x8b4b('0x2b')]!==_0x8b4b('0x3a')){var _0x21b803={};_0x21b803[_0xb90097[_0x8b4b('0x26')]]={'$like':'%'+_0x4b221d['query'][_0x8b4b('0x38')]+'%'};return _0x21b803;}})});}_0x3dbe86=_[_0x8b4b('0x39')]({},_0x3dbe86,_0x4b221d[_0x8b4b('0x3b')]);var _0x5d1994={'where':_0x3dbe86['where']};return db[_0x8b4b('0x29')][_0x8b4b('0x1c')](_0x5d1994)[_0x8b4b('0x24')](function(_0x56f4e7){_0x5566c1['count']=_0x56f4e7;if(_0x4b221d[_0x8b4b('0x2d')][_0x8b4b('0x3c')]){_0x3dbe86[_0x8b4b('0x3d')]=[{'all':!![]}];}return db[_0x8b4b('0x29')]['findAll'](_0x3dbe86);})[_0x8b4b('0x24')](function(_0x3bd51f){_0x5566c1[_0x8b4b('0x3e')]=_0x3bd51f;return _0x5566c1;})[_0x8b4b('0x24')](respondWithFilteredResult(_0x4faa47,_0x3dbe86))[_0x8b4b('0x3f')](handleError(_0x4faa47,null));};exports[_0x8b4b('0x40')]=function(_0x305f48,_0x297552){var _0xaca734={'raw':!![],'where':{'id':_0x305f48[_0x8b4b('0x41')]['id']}},_0x5123dd={};_0x5123dd[_0x8b4b('0x2c')]=_[_0x8b4b('0x2e')](db[_0x8b4b('0x29')][_0x8b4b('0x2a')]);_0x5123dd['query']=_[_0x8b4b('0x2e')](_0x305f48[_0x8b4b('0x2d')]);_0x5123dd['filters']=_['intersection'](_0x5123dd[_0x8b4b('0x2c')],_0x5123dd['query']);_0xaca734[_0x8b4b('0x31')]=_[_0x8b4b('0x30')](_0x5123dd[_0x8b4b('0x2c')],qs[_0x8b4b('0x42')](_0x305f48['query'][_0x8b4b('0x42')]));_0xaca734['attributes']=_0xaca734[_0x8b4b('0x31')][_0x8b4b('0x32')]?_0xaca734[_0x8b4b('0x31')]:_0x5123dd[_0x8b4b('0x2c')];if(_0x305f48[_0x8b4b('0x2d')][_0x8b4b('0x3c')]){_0xaca734[_0x8b4b('0x3d')]=[{'all':!![]}];}_0xaca734=_[_0x8b4b('0x39')]({},_0xaca734,_0x305f48[_0x8b4b('0x3b')]);return db[_0x8b4b('0x29')][_0x8b4b('0x43')](_0xaca734)[_0x8b4b('0x24')](handleEntityNotFound(_0x297552,null))['then'](respondWithResult(_0x297552,null))[_0x8b4b('0x3f')](handleError(_0x297552,null));};exports[_0x8b4b('0x44')]=function(_0x246e52,_0x2c94d8){return db[_0x8b4b('0x29')][_0x8b4b('0x44')](_0x246e52[_0x8b4b('0x45')],{})[_0x8b4b('0x24')](respondWithResult(_0x2c94d8,0xc9))[_0x8b4b('0x3f')](handleError(_0x2c94d8,null));};exports['update']=function(_0x3a3331,_0xbeceda){if(_0x3a3331[_0x8b4b('0x45')]['id']){delete _0x3a3331[_0x8b4b('0x45')]['id'];}return db[_0x8b4b('0x29')][_0x8b4b('0x43')]({'where':{'id':_0x3a3331[_0x8b4b('0x41')]['id']}})['then'](handleEntityNotFound(_0xbeceda,null))['then'](saveUpdates(_0x3a3331[_0x8b4b('0x45')],null))['then'](respondWithResult(_0xbeceda,null))[_0x8b4b('0x3f')](handleError(_0xbeceda,null));};exports[_0x8b4b('0x23')]=function(_0x33bba0,_0x26cf18){return db['SquareReport'][_0x8b4b('0x43')]({'where':{'id':_0x33bba0[_0x8b4b('0x41')]['id']}})['then'](handleEntityNotFound(_0x26cf18,null))[_0x8b4b('0x24')](removeEntity(_0x26cf18,null))['catch'](handleError(_0x26cf18,null));};exports['describe']=function(_0x1fdb12,_0x269b1f){return db[_0x8b4b('0x29')]['describe']()['then'](respondWithResult(_0x269b1f,null))[_0x8b4b('0x3f')](handleError(_0x269b1f,null));};
\ No newline at end of file
+var _0xe970=['../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','end','error','stack','name','send','index','map','SquareReport','fieldName','type','key','model','query','keys','intersection','attributes','fields','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','rawAttributes','includeAll','find','create','body','destroy','describe','rimraf','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/logger','api','../../config/utils','../../config/environment'];(function(_0x537db5,_0x310122){var _0x48e803=function(_0x4c56e9){while(--_0x4c56e9){_0x537db5['push'](_0x537db5['shift']());}};_0x48e803(++_0x310122);}(_0xe970,0x129));var _0x0e97=function(_0x2af5f6,_0x26ae9f){_0x2af5f6=_0x2af5f6-0x0;var _0x4329e4=_0xe970[_0x2af5f6];return _0x4329e4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0e97('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0e97('0x1'));var rp=require(_0x0e97('0x2'));var moment=require(_0x0e97('0x3'));var BPromise=require(_0x0e97('0x4'));var Mustache=require(_0x0e97('0x5'));var util=require(_0x0e97('0x6'));var path=require(_0x0e97('0x7'));var sox=require(_0x0e97('0x8'));var csv=require(_0x0e97('0x9'));var ejs=require(_0x0e97('0xa'));var fs=require('fs');var fs_extra=require(_0x0e97('0xb'));var _=require(_0x0e97('0xc'));var squel=require(_0x0e97('0xd'));var crypto=require(_0x0e97('0xe'));var jsforce=require(_0x0e97('0xf'));var deskjs=require(_0x0e97('0x10'));var toCsv=require(_0x0e97('0x9'));var querystring=require(_0x0e97('0x11'));var Papa=require(_0x0e97('0x12'));var Redis=require(_0x0e97('0x13'));var authService=require(_0x0e97('0x14'));var qs=require(_0x0e97('0x15'));var as=require(_0x0e97('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0e97('0x17'))(_0x0e97('0x18'));var utils=require(_0x0e97('0x19'));var config=require(_0x0e97('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x0e97('0x1b'))['db'];function respondWithStatusCode(_0x400a47,_0x563e2b){_0x563e2b=_0x563e2b||0xcc;return function(_0x17d05c){if(_0x17d05c){return _0x400a47[_0x0e97('0x1c')](_0x563e2b);}return _0x400a47[_0x0e97('0x1d')](_0x563e2b)['end']();};}function respondWithResult(_0x5289f1,_0x520158){_0x520158=_0x520158||0xc8;return function(_0x412525){if(_0x412525){return _0x5289f1[_0x0e97('0x1d')](_0x520158)[_0x0e97('0x1e')](_0x412525);}};}function respondWithFilteredResult(_0x36de0d,_0x948f0b){return function(_0x27b904){if(_0x27b904){var _0xd13d61=typeof _0x948f0b[_0x0e97('0x1f')]===_0x0e97('0x20')&&typeof _0x948f0b[_0x0e97('0x21')]===_0x0e97('0x20');var _0x5b06ae=_0x27b904[_0x0e97('0x22')];var _0x5a47fa=_0xd13d61?0x0:_0x948f0b[_0x0e97('0x1f')];var _0x38abe0=_0xd13d61?_0x27b904[_0x0e97('0x22')]:_0x948f0b[_0x0e97('0x1f')]+_0x948f0b[_0x0e97('0x21')];var _0x24cb63;if(_0x38abe0>=_0x5b06ae){_0x38abe0=_0x5b06ae;_0x24cb63=0xc8;}else{_0x24cb63=0xce;}_0x36de0d['status'](_0x24cb63);return _0x36de0d[_0x0e97('0x23')]('Content-Range',_0x5a47fa+'-'+_0x38abe0+'/'+_0x5b06ae)['json'](_0x27b904);}return null;};}function patchUpdates(_0x2e7030){return function(_0x2df110){try{jsonpatch[_0x0e97('0x24')](_0x2df110,_0x2e7030,!![]);}catch(_0x4fc34e){return BPromise[_0x0e97('0x25')](_0x4fc34e);}return _0x2df110[_0x0e97('0x26')]();};}function saveUpdates(_0x11b768,_0x393e06){return function(_0x2668bc){if(_0x2668bc){return _0x2668bc[_0x0e97('0x27')](_0x11b768)[_0x0e97('0x28')](function(_0x5ebc46){return _0x5ebc46;});}return null;};}function removeEntity(_0x3107ee,_0x311adb){return function(_0x2ff732){if(_0x2ff732){return _0x2ff732['destroy']()[_0x0e97('0x28')](function(){_0x3107ee[_0x0e97('0x1d')](0xcc)[_0x0e97('0x29')]();});}};}function handleEntityNotFound(_0x5d04a0,_0x26b42c){return function(_0x44215b){if(!_0x44215b){_0x5d04a0['sendStatus'](0x194);}return _0x44215b;};}function handleError(_0x411edc,_0x28f09f){_0x28f09f=_0x28f09f||0x1f4;return function(_0xdf35db){logger[_0x0e97('0x2a')](_0xdf35db[_0x0e97('0x2b')]);if(_0xdf35db[_0x0e97('0x2c')]){delete _0xdf35db[_0x0e97('0x2c')];}_0x411edc[_0x0e97('0x1d')](_0x28f09f)[_0x0e97('0x2d')](_0xdf35db);};}exports[_0x0e97('0x2e')]=function(_0x3ccbdf,_0x141be8){var _0x40be51={},_0xaab844={},_0x4f2e5d={'count':0x0,'rows':[]};var _0x2717a2=_[_0x0e97('0x2f')](db[_0x0e97('0x30')]['rawAttributes'],function(_0x218251){return{'name':_0x218251[_0x0e97('0x31')],'type':_0x218251[_0x0e97('0x32')][_0x0e97('0x33')]};});_0xaab844[_0x0e97('0x34')]=_['map'](_0x2717a2,'name');_0xaab844[_0x0e97('0x35')]=_[_0x0e97('0x36')](_0x3ccbdf[_0x0e97('0x35')]);_0xaab844['filters']=_[_0x0e97('0x37')](_0xaab844[_0x0e97('0x34')],_0xaab844[_0x0e97('0x35')]);_0x40be51[_0x0e97('0x38')]=_['intersection'](_0xaab844[_0x0e97('0x34')],qs[_0x0e97('0x39')](_0x3ccbdf[_0x0e97('0x35')][_0x0e97('0x39')]));_0x40be51[_0x0e97('0x38')]=_0x40be51[_0x0e97('0x38')]['length']?_0x40be51[_0x0e97('0x38')]:_0xaab844[_0x0e97('0x34')];if(!_0x3ccbdf[_0x0e97('0x35')]['hasOwnProperty'](_0x0e97('0x3a'))){_0x40be51[_0x0e97('0x21')]=qs[_0x0e97('0x21')](_0x3ccbdf[_0x0e97('0x35')][_0x0e97('0x21')]);_0x40be51[_0x0e97('0x1f')]=qs[_0x0e97('0x1f')](_0x3ccbdf[_0x0e97('0x35')]['offset']);}_0x40be51[_0x0e97('0x3b')]=qs[_0x0e97('0x3c')](_0x3ccbdf[_0x0e97('0x35')][_0x0e97('0x3c')]);_0x40be51[_0x0e97('0x3d')]=qs[_0x0e97('0x3e')](_[_0x0e97('0x3f')](_0x3ccbdf[_0x0e97('0x35')],_0xaab844[_0x0e97('0x3e')]),_0x2717a2);if(_0x3ccbdf[_0x0e97('0x35')][_0x0e97('0x40')]){_0x40be51['where']=_[_0x0e97('0x41')](_0x40be51[_0x0e97('0x3d')],{'$or':_['map'](_0x2717a2,function(_0x2287e3){if(_0x2287e3[_0x0e97('0x32')]!==_0x0e97('0x42')){var _0x4af059={};_0x4af059[_0x2287e3[_0x0e97('0x2c')]]={'$like':'%'+_0x3ccbdf[_0x0e97('0x35')][_0x0e97('0x40')]+'%'};return _0x4af059;}})});}_0x40be51=_[_0x0e97('0x41')]({},_0x40be51,_0x3ccbdf[_0x0e97('0x43')]);var _0x3c6d59={'where':_0x40be51['where']};return db[_0x0e97('0x30')]['count'](_0x3c6d59)[_0x0e97('0x28')](function(_0xb669f){_0x4f2e5d['count']=_0xb669f;if(_0x3ccbdf[_0x0e97('0x35')]['includeAll']){_0x40be51[_0x0e97('0x44')]=[{'all':!![]}];}return db[_0x0e97('0x30')][_0x0e97('0x45')](_0x40be51);})[_0x0e97('0x28')](function(_0x28dbb8){_0x4f2e5d[_0x0e97('0x46')]=_0x28dbb8;return _0x4f2e5d;})[_0x0e97('0x28')](respondWithFilteredResult(_0x141be8,_0x40be51))[_0x0e97('0x47')](handleError(_0x141be8,null));};exports[_0x0e97('0x48')]=function(_0x1869da,_0x331847){var _0xc7fc6e={'raw':!![],'where':{'id':_0x1869da[_0x0e97('0x49')]['id']}},_0x417e2e={};_0x417e2e[_0x0e97('0x34')]=_[_0x0e97('0x36')](db[_0x0e97('0x30')][_0x0e97('0x4a')]);_0x417e2e[_0x0e97('0x35')]=_[_0x0e97('0x36')](_0x1869da[_0x0e97('0x35')]);_0x417e2e[_0x0e97('0x3e')]=_[_0x0e97('0x37')](_0x417e2e[_0x0e97('0x34')],_0x417e2e[_0x0e97('0x35')]);_0xc7fc6e['attributes']=_[_0x0e97('0x37')](_0x417e2e[_0x0e97('0x34')],qs[_0x0e97('0x39')](_0x1869da[_0x0e97('0x35')][_0x0e97('0x39')]));_0xc7fc6e['attributes']=_0xc7fc6e['attributes']['length']?_0xc7fc6e[_0x0e97('0x38')]:_0x417e2e[_0x0e97('0x34')];if(_0x1869da[_0x0e97('0x35')][_0x0e97('0x4b')]){_0xc7fc6e[_0x0e97('0x44')]=[{'all':!![]}];}_0xc7fc6e=_[_0x0e97('0x41')]({},_0xc7fc6e,_0x1869da[_0x0e97('0x43')]);return db[_0x0e97('0x30')][_0x0e97('0x4c')](_0xc7fc6e)[_0x0e97('0x28')](handleEntityNotFound(_0x331847,null))[_0x0e97('0x28')](respondWithResult(_0x331847,null))[_0x0e97('0x47')](handleError(_0x331847,null));};exports[_0x0e97('0x4d')]=function(_0x3a8eb5,_0x5bb11d){return db[_0x0e97('0x30')][_0x0e97('0x4d')](_0x3a8eb5['body'],{})['then'](respondWithResult(_0x5bb11d,0xc9))[_0x0e97('0x47')](handleError(_0x5bb11d,null));};exports[_0x0e97('0x27')]=function(_0x19d2be,_0x2e0086){if(_0x19d2be[_0x0e97('0x4e')]['id']){delete _0x19d2be[_0x0e97('0x4e')]['id'];}return db[_0x0e97('0x30')][_0x0e97('0x4c')]({'where':{'id':_0x19d2be[_0x0e97('0x49')]['id']}})[_0x0e97('0x28')](handleEntityNotFound(_0x2e0086,null))[_0x0e97('0x28')](saveUpdates(_0x19d2be[_0x0e97('0x4e')],null))[_0x0e97('0x28')](respondWithResult(_0x2e0086,null))[_0x0e97('0x47')](handleError(_0x2e0086,null));};exports[_0x0e97('0x4f')]=function(_0x22758a,_0x330f23){return db[_0x0e97('0x30')]['find']({'where':{'id':_0x22758a[_0x0e97('0x49')]['id']}})[_0x0e97('0x28')](handleEntityNotFound(_0x330f23,null))[_0x0e97('0x28')](removeEntity(_0x330f23,null))[_0x0e97('0x47')](handleError(_0x330f23,null));};exports['describe']=function(_0x3fafc1,_0x35ec93){return db['SquareReport'][_0x0e97('0x50')]()['then'](respondWithResult(_0x35ec93,null))[_0x0e97('0x47')](handleError(_0x35ec93,null));};
\ No newline at end of file
index adbdc7e..bdb40c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c3a=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareReport.attributes','exports','define','report_square','uniqueid','project_name','leaveAt','lodash','util'];(function(_0xf34109,_0x380779){var _0x570bfc=function(_0x1ad086){while(--_0x1ad086){_0xf34109['push'](_0xf34109['shift']());}};_0x570bfc(++_0x380779);}(_0x1c3a,0xec));var _0xa1c3=function(_0x4b2407,_0x3fa63e){_0x4b2407=_0x4b2407-0x0;var _0x5defa2=_0x1c3a[_0x4b2407];return _0x5defa2;};'use strict';var _=require(_0xa1c3('0x0'));var util=require(_0xa1c3('0x1'));var logger=require(_0xa1c3('0x2'))(_0xa1c3('0x3'));var moment=require(_0xa1c3('0x4'));var BPromise=require(_0xa1c3('0x5'));var rp=require(_0xa1c3('0x6'));var fs=require('fs');var path=require(_0xa1c3('0x7'));var rimraf=require(_0xa1c3('0x8'));var config=require(_0xa1c3('0x9'));var attributes=require(_0xa1c3('0xa'));module[_0xa1c3('0xb')]=function(_0x416abc,_0x162ebc){return _0x416abc[_0xa1c3('0xc')]('SquareReport',attributes,{'tableName':_0xa1c3('0xd'),'paranoid':![],'indexes':[{'name':'uid_pname','fields':[_0xa1c3('0xe'),_0xa1c3('0xf')]},{'name':_0xa1c3('0x10'),'fields':[_0xa1c3('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf49f=['lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./squareReport.attributes','exports','SquareReport','uniqueid','project_name','leaveAt'];(function(_0x268184,_0x4cfe6f){var _0x19ce89=function(_0x4ecdff){while(--_0x4ecdff){_0x268184['push'](_0x268184['shift']());}};_0x19ce89(++_0x4cfe6f);}(_0xf49f,0xee));var _0xff49=function(_0x4066d7,_0x29bd84){_0x4066d7=_0x4066d7-0x0;var _0x796ff6=_0xf49f[_0x4066d7];return _0x796ff6;};'use strict';var _=require(_0xff49('0x0'));var util=require('util');var logger=require(_0xff49('0x1'))(_0xff49('0x2'));var moment=require(_0xff49('0x3'));var BPromise=require('bluebird');var rp=require(_0xff49('0x4'));var fs=require('fs');var path=require(_0xff49('0x5'));var rimraf=require(_0xff49('0x6'));var config=require(_0xff49('0x7'));var attributes=require(_0xff49('0x8'));module[_0xff49('0x9')]=function(_0x4c7e7a,_0x41cb5c){return _0x4c7e7a['define'](_0xff49('0xa'),attributes,{'tableName':'report_square','paranoid':![],'indexes':[{'name':'uid_pname','fields':[_0xff49('0xb'),_0xff49('0xc')]},{'name':_0xff49('0xd'),'fields':[_0xff49('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 536438e..47a0c45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3fa=['catch','SquareReport','create','body','options','raw','CreateSquareReport','UpdateSquareReport','update','attributes','limit','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x271cee,_0x88a1e5){var _0xcebfe3=function(_0x3a5676){while(--_0x3a5676){_0x271cee['push'](_0x271cee['shift']());}};_0xcebfe3(++_0x88a1e5);}(_0xe3fa,0x1e7));var _0xae3f=function(_0x5f35c5,_0x48949c){_0x5f35c5=_0x5f35c5-0x0;var _0x5e5d64=_0xe3fa[_0x5f35c5];return _0x5e5d64;};'use strict';var _=require(_0xae3f('0x0'));var util=require('util');var moment=require(_0xae3f('0x1'));var BPromise=require(_0xae3f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xae3f('0x3'));var db=require(_0xae3f('0x4'))['db'];var utils=require(_0xae3f('0x5'));var logger=require(_0xae3f('0x6'))(_0xae3f('0x7'));var config=require(_0xae3f('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xae3f('0x9')][_0xae3f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x357c7f,_0x4c338a,_0x460cbf){return new BPromise(function(_0x4ad5ac,_0x158655){return client[_0xae3f('0xb')](_0x357c7f,_0x460cbf)[_0xae3f('0xc')](function(_0x4bde89){logger[_0xae3f('0xd')](_0xae3f('0xe'),_0x4c338a,_0xae3f('0xf'));logger[_0xae3f('0x10')](_0xae3f('0x11'),_0x4c338a,_0xae3f('0xf'),JSON[_0xae3f('0x12')](_0x4bde89));if(_0x4bde89[_0xae3f('0x13')]){if(_0x4bde89['error'][_0xae3f('0x14')]===0x1f4){logger[_0xae3f('0x13')]('SquareReport,\x20%s,\x20%s',_0x4c338a,_0x4bde89[_0xae3f('0x13')][_0xae3f('0x15')]);return _0x158655(_0x4bde89[_0xae3f('0x13')][_0xae3f('0x15')]);}logger[_0xae3f('0x13')](_0xae3f('0xe'),_0x4c338a,_0x4bde89['error'][_0xae3f('0x15')]);return _0x4ad5ac(_0x4bde89['error'][_0xae3f('0x15')]);}else{logger[_0xae3f('0xd')](_0xae3f('0xe'),_0x4c338a,_0xae3f('0xf'));_0x4ad5ac(_0x4bde89[_0xae3f('0x16')][_0xae3f('0x15')]);}})[_0xae3f('0x17')](function(_0x11c2a4){logger[_0xae3f('0x13')](_0xae3f('0xe'),_0x4c338a,_0x11c2a4);_0x158655(_0x11c2a4);});});}exports['CreateSquareReport']=function(_0xd4f39e){var _0x1f43ad=this;return new Promise(function(_0x15bb56,_0x3be8c6){return db[_0xae3f('0x18')][_0xae3f('0x19')](_0xd4f39e[_0xae3f('0x1a')],{'raw':_0xd4f39e[_0xae3f('0x1b')]?_0xd4f39e[_0xae3f('0x1b')][_0xae3f('0x1c')]===undefined?!![]:![]:!![]})[_0xae3f('0xc')](function(_0x37bce1){logger[_0xae3f('0xd')](_0xae3f('0x1d'),_0xd4f39e);logger[_0xae3f('0x10')](_0xae3f('0x1d'),_0xd4f39e,JSON[_0xae3f('0x12')](_0x37bce1));_0x15bb56(_0x37bce1);})['catch'](function(_0x18a8cb){logger[_0xae3f('0x13')](_0xae3f('0x1d'),_0x18a8cb[_0xae3f('0x15')],_0xd4f39e);_0x3be8c6(_0x1f43ad['error'](0x1f4,_0x18a8cb[_0xae3f('0x15')]));});});};exports[_0xae3f('0x1e')]=function(_0x4d4f75){var _0x469b99=this;return new Promise(function(_0x557991,_0x18629a){return db[_0xae3f('0x18')][_0xae3f('0x1f')](_0x4d4f75[_0xae3f('0x1a')],{'raw':_0x4d4f75[_0xae3f('0x1b')]?_0x4d4f75['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4d4f75[_0xae3f('0x1b')]?_0x4d4f75[_0xae3f('0x1b')]['where']||null:null,'attributes':_0x4d4f75[_0xae3f('0x1b')]?_0x4d4f75[_0xae3f('0x1b')][_0xae3f('0x20')]||null:null,'limit':_0x4d4f75[_0xae3f('0x1b')]?_0x4d4f75[_0xae3f('0x1b')][_0xae3f('0x21')]||null:null})['then'](function(_0x37541f){logger[_0xae3f('0xd')](_0xae3f('0x1e'),_0x4d4f75);logger[_0xae3f('0x10')](_0xae3f('0x1e'),_0x4d4f75,JSON['stringify'](_0x37541f));_0x557991(_0x37541f);})['catch'](function(_0x3650f4){logger[_0xae3f('0x13')](_0xae3f('0x1e'),_0x3650f4[_0xae3f('0x15')],_0x4d4f75);_0x18629a(_0x469b99[_0xae3f('0x13')](0x1f4,_0x3650f4[_0xae3f('0x15')]));});});};
\ No newline at end of file
+var _0xe6e6=['body','options','then','UpdateSquareReport','update','raw','where','attributes','limit','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','SquareReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','CreateSquareReport','SquareReport','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe6e6,0x132));var _0x6e6e=function(_0x2e47f3,_0x1f0e49){_0x2e47f3=_0x2e47f3-0x0;var _0x37f983=_0xe6e6[_0x2e47f3];return _0x37f983;};'use strict';var _=require(_0x6e6e('0x0'));var util=require('util');var moment=require(_0x6e6e('0x1'));var BPromise=require(_0x6e6e('0x2'));var rs=require(_0x6e6e('0x3'));var fs=require('fs');var Redis=require(_0x6e6e('0x4'));var db=require(_0x6e6e('0x5'))['db'];var utils=require(_0x6e6e('0x6'));var logger=require(_0x6e6e('0x7'))(_0x6e6e('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6e6e('0x9')][_0x6e6e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x268c98,_0x144ca2,_0x373812){return new BPromise(function(_0x252978,_0x2f4d02){return client['request'](_0x268c98,_0x373812)['then'](function(_0x42fd89){logger['info'](_0x6e6e('0xb'),_0x144ca2,_0x6e6e('0xc'));logger[_0x6e6e('0xd')]('SquareReport,\x20%s,\x20%s,\x20%s',_0x144ca2,'request\x20sent',JSON[_0x6e6e('0xe')](_0x42fd89));if(_0x42fd89[_0x6e6e('0xf')]){if(_0x42fd89[_0x6e6e('0xf')][_0x6e6e('0x10')]===0x1f4){logger[_0x6e6e('0xf')]('SquareReport,\x20%s,\x20%s',_0x144ca2,_0x42fd89['error']['message']);return _0x2f4d02(_0x42fd89['error'][_0x6e6e('0x11')]);}logger[_0x6e6e('0xf')](_0x6e6e('0xb'),_0x144ca2,_0x42fd89[_0x6e6e('0xf')][_0x6e6e('0x11')]);return _0x252978(_0x42fd89['error']['message']);}else{logger[_0x6e6e('0x12')](_0x6e6e('0xb'),_0x144ca2,'request\x20sent');_0x252978(_0x42fd89[_0x6e6e('0x13')][_0x6e6e('0x11')]);}})[_0x6e6e('0x14')](function(_0xdc3549){logger['error']('SquareReport,\x20%s,\x20%s',_0x144ca2,_0xdc3549);_0x2f4d02(_0xdc3549);});});}exports[_0x6e6e('0x15')]=function(_0x242cf2){var _0x3909d8=this;return new Promise(function(_0x5f189b,_0x291713){return db[_0x6e6e('0x16')][_0x6e6e('0x17')](_0x242cf2[_0x6e6e('0x18')],{'raw':_0x242cf2[_0x6e6e('0x19')]?_0x242cf2['options']['raw']===undefined?!![]:![]:!![]})[_0x6e6e('0x1a')](function(_0x4a5c52){logger['info'](_0x6e6e('0x15'),_0x242cf2);logger['debug'](_0x6e6e('0x15'),_0x242cf2,JSON[_0x6e6e('0xe')](_0x4a5c52));_0x5f189b(_0x4a5c52);})[_0x6e6e('0x14')](function(_0x4b4f2d){logger['error'](_0x6e6e('0x15'),_0x4b4f2d[_0x6e6e('0x11')],_0x242cf2);_0x291713(_0x3909d8[_0x6e6e('0xf')](0x1f4,_0x4b4f2d[_0x6e6e('0x11')]));});});};exports[_0x6e6e('0x1b')]=function(_0x342042){var _0x57cc7d=this;return new Promise(function(_0x10365f,_0x1eec35){return db['SquareReport'][_0x6e6e('0x1c')](_0x342042[_0x6e6e('0x18')],{'raw':_0x342042[_0x6e6e('0x19')]?_0x342042[_0x6e6e('0x19')][_0x6e6e('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x342042[_0x6e6e('0x19')]?_0x342042[_0x6e6e('0x19')][_0x6e6e('0x1e')]||null:null,'attributes':_0x342042[_0x6e6e('0x19')]?_0x342042['options'][_0x6e6e('0x1f')]||null:null,'limit':_0x342042[_0x6e6e('0x19')]?_0x342042[_0x6e6e('0x19')][_0x6e6e('0x20')]||null:null})['then'](function(_0x3c1ff8){logger[_0x6e6e('0x12')](_0x6e6e('0x1b'),_0x342042);logger['debug']('UpdateSquareReport',_0x342042,JSON['stringify'](_0x3c1ff8));_0x10365f(_0x3c1ff8);})[_0x6e6e('0x14')](function(_0xcf5c6f){logger[_0x6e6e('0xf')](_0x6e6e('0x1b'),_0xcf5c6f[_0x6e6e('0x11')],_0x342042);_0x1eec35(_0x57cc7d[_0x6e6e('0xf')](0x1f4,_0xcf5c6f[_0x6e6e('0x11')]));});});};
\ No newline at end of file
index db1834c..95a4c72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8835=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','index','describe','put','update','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x502542,_0x5c5b7a){var _0x17eab3=function(_0x5be1bb){while(--_0x5be1bb){_0x502542['push'](_0x502542['shift']());}};_0x17eab3(++_0x5c5b7a);}(_0x8835,0x79));var _0x5883=function(_0x2eff64,_0x23107b){_0x2eff64=_0x2eff64-0x0;var _0x28e902=_0x8835[_0x2eff64];return _0x28e902;};'use strict';var multer=require(_0x5883('0x0'));var util=require(_0x5883('0x1'));var path=require(_0x5883('0x2'));var timeout=require(_0x5883('0x3'));var express=require(_0x5883('0x4'));var router=express['Router']();var fs_extra=require(_0x5883('0x5'));var auth=require(_0x5883('0x6'));var interaction=require(_0x5883('0x7'));var config=require(_0x5883('0x8'));var controller=require(_0x5883('0x9'));router[_0x5883('0xa')]('/',auth[_0x5883('0xb')](),controller[_0x5883('0xc')]);router[_0x5883('0xa')]('/describe',auth[_0x5883('0xb')](),controller[_0x5883('0xd')]);router[_0x5883('0xa')]('/:id',auth[_0x5883('0xb')](),controller['show']);router['post']('/',auth[_0x5883('0xb')](),controller['create']);router[_0x5883('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x5883('0xf')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x5883('0x10')]);module[_0x5883('0x11')]=router;
\ No newline at end of file
+var _0x3404=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./squareReportDetail.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','put','update','destroy','multer','util','connect-timeout','express'];(function(_0xed60f8,_0x363cdd){var _0x3b3f78=function(_0x17642c){while(--_0x17642c){_0xed60f8['push'](_0xed60f8['shift']());}};_0x3b3f78(++_0x363cdd);}(_0x3404,0x161));var _0x4340=function(_0x5f6dfe,_0x1d0798){_0x5f6dfe=_0x5f6dfe-0x0;var _0x3058e9=_0x3404[_0x5f6dfe];return _0x3058e9;};'use strict';var multer=require(_0x4340('0x0'));var util=require(_0x4340('0x1'));var path=require('path');var timeout=require(_0x4340('0x2'));var express=require(_0x4340('0x3'));var router=express[_0x4340('0x4')]();var fs_extra=require(_0x4340('0x5'));var auth=require(_0x4340('0x6'));var interaction=require(_0x4340('0x7'));var config=require('../../config/environment');var controller=require(_0x4340('0x8'));router['get']('/',auth[_0x4340('0x9')](),controller[_0x4340('0xa')]);router[_0x4340('0xb')](_0x4340('0xc'),auth[_0x4340('0x9')](),controller[_0x4340('0xd')]);router[_0x4340('0xb')](_0x4340('0xe'),auth['isAuthenticated'](),controller[_0x4340('0xf')]);router[_0x4340('0x10')]('/',auth[_0x4340('0x9')](),controller[_0x4340('0x11')]);router[_0x4340('0x12')](_0x4340('0xe'),auth[_0x4340('0x9')](),controller[_0x4340('0x13')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x4340('0x14')]);module['exports']=router;
\ No newline at end of file
index c915299..60c92cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26c0=['exports','STRING','TEXT'];(function(_0x2e155d,_0x4f205f){var _0x25f765=function(_0x4b5a7e){while(--_0x4b5a7e){_0x2e155d['push'](_0x2e155d['shift']());}};_0x25f765(++_0x4f205f);}(_0x26c0,0xe7));var _0x026c=function(_0x1a4518,_0x2f87ab){_0x1a4518=_0x1a4518-0x0;var _0x373f78=_0x26c0[_0x1a4518];return _0x373f78;};'use strict';var Sequelize=require('sequelize');module[_0x026c('0x0')]={'uniqueid':{'type':Sequelize[_0x026c('0x1')]},'node':{'type':Sequelize[_0x026c('0x1')]},'application':{'type':Sequelize[_0x026c('0x1')]},'data':{'type':Sequelize[_0x026c('0x2')]},'project_name':{'type':Sequelize[_0x026c('0x1')]},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xfc90=['STRING'];(function(_0x46b88d,_0x32192c){var _0x254597=function(_0x581e59){while(--_0x581e59){_0x46b88d['push'](_0x46b88d['shift']());}};_0x254597(++_0x32192c);}(_0xfc90,0xf8));var _0x0fc9=function(_0x57ea3f,_0xcc0fe7){_0x57ea3f=_0x57ea3f-0x0;var _0x2d629f=_0xfc90[_0x57ea3f];return _0x2d629f;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING']},'node':{'type':Sequelize[_0x0fc9('0x0')]},'application':{'type':Sequelize[_0x0fc9('0x0')]},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize[_0x0fc9('0x0')]},'callerid':{'type':Sequelize[_0x0fc9('0x0')]}};
\ No newline at end of file
index 0bbdd52..f1fe644 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e50=['catch','show','params','rawAttributes','keys','find','create','body','update','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','error','name','SquareDetailsReport','fieldName','type','key','map','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows'];(function(_0x328b88,_0x4b0eb0){var _0x26e360=function(_0x1b9807){while(--_0x1b9807){_0x328b88['push'](_0x328b88['shift']());}};_0x26e360(++_0x4b0eb0);}(_0x1e50,0xa6));var _0x01e5=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1e50[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x01e5('0x0'));var zipdir=require(_0x01e5('0x1'));var jsonpatch=require(_0x01e5('0x2'));var rp=require('request-promise');var moment=require(_0x01e5('0x3'));var BPromise=require(_0x01e5('0x4'));var Mustache=require(_0x01e5('0x5'));var util=require(_0x01e5('0x6'));var path=require(_0x01e5('0x7'));var sox=require('sox');var csv=require(_0x01e5('0x8'));var ejs=require(_0x01e5('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x01e5('0xa'));var squel=require(_0x01e5('0xb'));var crypto=require(_0x01e5('0xc'));var jsforce=require(_0x01e5('0xd'));var deskjs=require(_0x01e5('0xe'));var toCsv=require('to-csv');var querystring=require(_0x01e5('0xf'));var Papa=require(_0x01e5('0x10'));var Redis=require(_0x01e5('0x11'));var authService=require(_0x01e5('0x12'));var qs=require(_0x01e5('0x13'));var as=require(_0x01e5('0x14'));var hardwareService=require(_0x01e5('0x15'));var logger=require(_0x01e5('0x16'))(_0x01e5('0x17'));var utils=require(_0x01e5('0x18'));var config=require(_0x01e5('0x19'));var licenseUtil=require(_0x01e5('0x1a'));var db=require(_0x01e5('0x1b'))['db'];function respondWithStatusCode(_0x13ac9d,_0x57eac4){_0x57eac4=_0x57eac4||0xcc;return function(_0x4e0fd3){if(_0x4e0fd3){return _0x13ac9d[_0x01e5('0x1c')](_0x57eac4);}return _0x13ac9d[_0x01e5('0x1d')](_0x57eac4)[_0x01e5('0x1e')]();};}function respondWithResult(_0x42dec6,_0x30102b){_0x30102b=_0x30102b||0xc8;return function(_0x5b0205){if(_0x5b0205){return _0x42dec6[_0x01e5('0x1d')](_0x30102b)[_0x01e5('0x1f')](_0x5b0205);}};}function respondWithFilteredResult(_0x314919,_0xfbb552){return function(_0x5e0678){if(_0x5e0678){var _0x1a5c70=typeof _0xfbb552[_0x01e5('0x20')]===_0x01e5('0x21')&&typeof _0xfbb552[_0x01e5('0x22')]===_0x01e5('0x21');var _0x5f0e8c=_0x5e0678[_0x01e5('0x23')];var _0x4830e4=_0x1a5c70?0x0:_0xfbb552[_0x01e5('0x20')];var _0x1ef0a9=_0x1a5c70?_0x5e0678[_0x01e5('0x23')]:_0xfbb552[_0x01e5('0x20')]+_0xfbb552[_0x01e5('0x22')];var _0x4d24ae;if(_0x1ef0a9>=_0x5f0e8c){_0x1ef0a9=_0x5f0e8c;_0x4d24ae=0xc8;}else{_0x4d24ae=0xce;}_0x314919['status'](_0x4d24ae);return _0x314919[_0x01e5('0x24')]('Content-Range',_0x4830e4+'-'+_0x1ef0a9+'/'+_0x5f0e8c)[_0x01e5('0x1f')](_0x5e0678);}return null;};}function patchUpdates(_0x5b1c8e){return function(_0xae47b6){try{jsonpatch[_0x01e5('0x25')](_0xae47b6,_0x5b1c8e,!![]);}catch(_0x15044a){return BPromise[_0x01e5('0x26')](_0x15044a);}return _0xae47b6[_0x01e5('0x27')]();};}function saveUpdates(_0x2f65c5,_0x5401ef){return function(_0x526b70){if(_0x526b70){return _0x526b70['update'](_0x2f65c5)[_0x01e5('0x28')](function(_0x573648){return _0x573648;});}return null;};}function removeEntity(_0x6ec340,_0x22248a){return function(_0x21a371){if(_0x21a371){return _0x21a371[_0x01e5('0x29')]()[_0x01e5('0x28')](function(){_0x6ec340[_0x01e5('0x1d')](0xcc)[_0x01e5('0x1e')]();});}};}function handleEntityNotFound(_0x31b9c6,_0x567df4){return function(_0xf1a56a){if(!_0xf1a56a){_0x31b9c6[_0x01e5('0x1c')](0x194);}return _0xf1a56a;};}function handleError(_0x2d1a2d,_0xcf6a4a){_0xcf6a4a=_0xcf6a4a||0x1f4;return function(_0x2b0faf){logger[_0x01e5('0x2a')](_0x2b0faf['stack']);if(_0x2b0faf[_0x01e5('0x2b')]){delete _0x2b0faf[_0x01e5('0x2b')];}_0x2d1a2d['status'](_0xcf6a4a)['send'](_0x2b0faf);};}exports['index']=function(_0x2ef60b,_0x5ae451){var _0x318303={},_0x551d08={},_0x50fbec={'count':0x0,'rows':[]};var _0x2bfc89=_['map'](db[_0x01e5('0x2c')]['rawAttributes'],function(_0x4b0b2a){return{'name':_0x4b0b2a[_0x01e5('0x2d')],'type':_0x4b0b2a[_0x01e5('0x2e')][_0x01e5('0x2f')]};});_0x551d08['model']=_[_0x01e5('0x30')](_0x2bfc89,'name');_0x551d08[_0x01e5('0x31')]=_['keys'](_0x2ef60b[_0x01e5('0x31')]);_0x551d08[_0x01e5('0x32')]=_[_0x01e5('0x33')](_0x551d08[_0x01e5('0x34')],_0x551d08['query']);_0x318303['attributes']=_[_0x01e5('0x33')](_0x551d08[_0x01e5('0x34')],qs[_0x01e5('0x35')](_0x2ef60b['query'][_0x01e5('0x35')]));_0x318303[_0x01e5('0x36')]=_0x318303[_0x01e5('0x36')][_0x01e5('0x37')]?_0x318303[_0x01e5('0x36')]:_0x551d08[_0x01e5('0x34')];if(!_0x2ef60b['query'][_0x01e5('0x38')](_0x01e5('0x39'))){_0x318303[_0x01e5('0x22')]=qs[_0x01e5('0x22')](_0x2ef60b[_0x01e5('0x31')][_0x01e5('0x22')]);_0x318303['offset']=qs[_0x01e5('0x20')](_0x2ef60b[_0x01e5('0x31')][_0x01e5('0x20')]);}_0x318303[_0x01e5('0x3a')]=qs[_0x01e5('0x3b')](_0x2ef60b['query'][_0x01e5('0x3b')]);_0x318303[_0x01e5('0x3c')]=qs[_0x01e5('0x32')](_[_0x01e5('0x3d')](_0x2ef60b[_0x01e5('0x31')],_0x551d08[_0x01e5('0x32')]),_0x2bfc89);if(_0x2ef60b['query'][_0x01e5('0x3e')]){_0x318303['where']=_[_0x01e5('0x3f')](_0x318303[_0x01e5('0x3c')],{'$or':_['map'](_0x2bfc89,function(_0x1dedbc){if(_0x1dedbc[_0x01e5('0x2e')]!=='VIRTUAL'){var _0x15d190={};_0x15d190[_0x1dedbc[_0x01e5('0x2b')]]={'$like':'%'+_0x2ef60b[_0x01e5('0x31')][_0x01e5('0x3e')]+'%'};return _0x15d190;}})});}_0x318303=_['merge']({},_0x318303,_0x2ef60b['options']);var _0x4a2226={'where':_0x318303['where']};return db[_0x01e5('0x2c')][_0x01e5('0x23')](_0x4a2226)[_0x01e5('0x28')](function(_0x33bf5a){_0x50fbec[_0x01e5('0x23')]=_0x33bf5a;if(_0x2ef60b[_0x01e5('0x31')][_0x01e5('0x40')]){_0x318303[_0x01e5('0x41')]=[{'all':!![]}];}return db[_0x01e5('0x2c')][_0x01e5('0x42')](_0x318303);})['then'](function(_0x1e2338){_0x50fbec[_0x01e5('0x43')]=_0x1e2338;return _0x50fbec;})[_0x01e5('0x28')](respondWithFilteredResult(_0x5ae451,_0x318303))[_0x01e5('0x44')](handleError(_0x5ae451,null));};exports[_0x01e5('0x45')]=function(_0x2ae635,_0x25cb2d){var _0x2bddb5={'raw':!![],'where':{'id':_0x2ae635[_0x01e5('0x46')]['id']}},_0x4d076b={};_0x4d076b[_0x01e5('0x34')]=_['keys'](db['SquareDetailsReport'][_0x01e5('0x47')]);_0x4d076b['query']=_[_0x01e5('0x48')](_0x2ae635[_0x01e5('0x31')]);_0x4d076b[_0x01e5('0x32')]=_[_0x01e5('0x33')](_0x4d076b[_0x01e5('0x34')],_0x4d076b[_0x01e5('0x31')]);_0x2bddb5[_0x01e5('0x36')]=_[_0x01e5('0x33')](_0x4d076b[_0x01e5('0x34')],qs[_0x01e5('0x35')](_0x2ae635[_0x01e5('0x31')][_0x01e5('0x35')]));_0x2bddb5[_0x01e5('0x36')]=_0x2bddb5['attributes'][_0x01e5('0x37')]?_0x2bddb5['attributes']:_0x4d076b[_0x01e5('0x34')];if(_0x2ae635['query'][_0x01e5('0x40')]){_0x2bddb5[_0x01e5('0x41')]=[{'all':!![]}];}_0x2bddb5=_[_0x01e5('0x3f')]({},_0x2bddb5,_0x2ae635['options']);return db[_0x01e5('0x2c')][_0x01e5('0x49')](_0x2bddb5)[_0x01e5('0x28')](handleEntityNotFound(_0x25cb2d,null))[_0x01e5('0x28')](respondWithResult(_0x25cb2d,null))[_0x01e5('0x44')](handleError(_0x25cb2d,null));};exports[_0x01e5('0x4a')]=function(_0x30dcc3,_0x4bd50a){return db[_0x01e5('0x2c')][_0x01e5('0x4a')](_0x30dcc3[_0x01e5('0x4b')],{})['then'](respondWithResult(_0x4bd50a,0xc9))[_0x01e5('0x44')](handleError(_0x4bd50a,null));};exports[_0x01e5('0x4c')]=function(_0x46886d,_0x438221){if(_0x46886d[_0x01e5('0x4b')]['id']){delete _0x46886d[_0x01e5('0x4b')]['id'];}return db[_0x01e5('0x2c')][_0x01e5('0x49')]({'where':{'id':_0x46886d['params']['id']}})['then'](handleEntityNotFound(_0x438221,null))['then'](saveUpdates(_0x46886d[_0x01e5('0x4b')],null))[_0x01e5('0x28')](respondWithResult(_0x438221,null))[_0x01e5('0x44')](handleError(_0x438221,null));};exports[_0x01e5('0x29')]=function(_0x315531,_0x1f22a7){return db[_0x01e5('0x2c')]['find']({'where':{'id':_0x315531[_0x01e5('0x46')]['id']}})['then'](handleEntityNotFound(_0x1f22a7,null))[_0x01e5('0x28')](removeEntity(_0x1f22a7,null))[_0x01e5('0x44')](handleError(_0x1f22a7,null));};exports[_0x01e5('0x4d')]=function(_0x2e15d1,_0x2c0df4){return db[_0x01e5('0x2c')][_0x01e5('0x4d')]()[_0x01e5('0x28')](respondWithResult(_0x2c0df4,null))[_0x01e5('0x44')](handleError(_0x2c0df4,null));};
\ No newline at end of file
+var _0x1649=['count','set','Content-Range','save','update','destroy','then','sendStatus','stack','name','send','index','rawAttributes','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','SquareDetailsReport','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','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/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit'];(function(_0x5c264f,_0x571dfa){var _0x57455c=function(_0x5eefbf){while(--_0x5eefbf){_0x5c264f['push'](_0x5c264f['shift']());}};_0x57455c(++_0x571dfa);}(_0x1649,0x79));var _0x9164=function(_0x58ef41,_0x3beb5b){_0x58ef41=_0x58ef41-0x0;var _0x402510=_0x1649[_0x58ef41];return _0x402510;};'use strict';var emlformat=require(_0x9164('0x0'));var rimraf=require(_0x9164('0x1'));var zipdir=require(_0x9164('0x2'));var jsonpatch=require(_0x9164('0x3'));var rp=require('request-promise');var moment=require(_0x9164('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9164('0x5'));var util=require(_0x9164('0x6'));var path=require(_0x9164('0x7'));var sox=require(_0x9164('0x8'));var csv=require(_0x9164('0x9'));var ejs=require(_0x9164('0xa'));var fs=require('fs');var fs_extra=require(_0x9164('0xb'));var _=require(_0x9164('0xc'));var squel=require(_0x9164('0xd'));var crypto=require('crypto');var jsforce=require(_0x9164('0xe'));var deskjs=require(_0x9164('0xf'));var toCsv=require(_0x9164('0x9'));var querystring=require(_0x9164('0x10'));var Papa=require(_0x9164('0x11'));var Redis=require(_0x9164('0x12'));var authService=require(_0x9164('0x13'));var qs=require(_0x9164('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9164('0x15'));var logger=require(_0x9164('0x16'))(_0x9164('0x17'));var utils=require('../../config/utils');var config=require(_0x9164('0x18'));var licenseUtil=require(_0x9164('0x19'));var db=require(_0x9164('0x1a'))['db'];function respondWithStatusCode(_0x5303ea,_0x1c2305){_0x1c2305=_0x1c2305||0xcc;return function(_0x1d244a){if(_0x1d244a){return _0x5303ea['sendStatus'](_0x1c2305);}return _0x5303ea[_0x9164('0x1b')](_0x1c2305)[_0x9164('0x1c')]();};}function respondWithResult(_0x10a499,_0x40c04d){_0x40c04d=_0x40c04d||0xc8;return function(_0xca44b1){if(_0xca44b1){return _0x10a499[_0x9164('0x1b')](_0x40c04d)[_0x9164('0x1d')](_0xca44b1);}};}function respondWithFilteredResult(_0x55e949,_0x466ee3){return function(_0x49fb72){if(_0x49fb72){var _0x16312a=typeof _0x466ee3[_0x9164('0x1e')]===_0x9164('0x1f')&&typeof _0x466ee3[_0x9164('0x20')]===_0x9164('0x1f');var _0xbeb21d=_0x49fb72[_0x9164('0x21')];var _0x1126dd=_0x16312a?0x0:_0x466ee3[_0x9164('0x1e')];var _0x2c2c9b=_0x16312a?_0x49fb72['count']:_0x466ee3[_0x9164('0x1e')]+_0x466ee3[_0x9164('0x20')];var _0x417928;if(_0x2c2c9b>=_0xbeb21d){_0x2c2c9b=_0xbeb21d;_0x417928=0xc8;}else{_0x417928=0xce;}_0x55e949[_0x9164('0x1b')](_0x417928);return _0x55e949[_0x9164('0x22')](_0x9164('0x23'),_0x1126dd+'-'+_0x2c2c9b+'/'+_0xbeb21d)[_0x9164('0x1d')](_0x49fb72);}return null;};}function patchUpdates(_0x57530c){return function(_0x553f8f){try{jsonpatch['apply'](_0x553f8f,_0x57530c,!![]);}catch(_0x5b882f){return BPromise['reject'](_0x5b882f);}return _0x553f8f[_0x9164('0x24')]();};}function saveUpdates(_0x4d1de7,_0x1b4b4c){return function(_0x582864){if(_0x582864){return _0x582864[_0x9164('0x25')](_0x4d1de7)['then'](function(_0x3ab64c){return _0x3ab64c;});}return null;};}function removeEntity(_0x4fd308,_0x4da397){return function(_0x3698d1){if(_0x3698d1){return _0x3698d1[_0x9164('0x26')]()[_0x9164('0x27')](function(){_0x4fd308[_0x9164('0x1b')](0xcc)[_0x9164('0x1c')]();});}};}function handleEntityNotFound(_0x2c01cb,_0x135bc0){return function(_0x250a5f){if(!_0x250a5f){_0x2c01cb[_0x9164('0x28')](0x194);}return _0x250a5f;};}function handleError(_0x231364,_0x5bcab5){_0x5bcab5=_0x5bcab5||0x1f4;return function(_0x3f9d0f){logger['error'](_0x3f9d0f[_0x9164('0x29')]);if(_0x3f9d0f[_0x9164('0x2a')]){delete _0x3f9d0f['name'];}_0x231364[_0x9164('0x1b')](_0x5bcab5)[_0x9164('0x2b')](_0x3f9d0f);};}exports[_0x9164('0x2c')]=function(_0x1d36c1,_0x1f22dd){var _0x2761a0={},_0x3ca260={},_0x5bec17={'count':0x0,'rows':[]};var _0x1fd28d=_['map'](db['SquareDetailsReport'][_0x9164('0x2d')],function(_0x110b06){return{'name':_0x110b06['fieldName'],'type':_0x110b06[_0x9164('0x2e')][_0x9164('0x2f')]};});_0x3ca260[_0x9164('0x30')]=_[_0x9164('0x31')](_0x1fd28d,_0x9164('0x2a'));_0x3ca260[_0x9164('0x32')]=_['keys'](_0x1d36c1['query']);_0x3ca260[_0x9164('0x33')]=_[_0x9164('0x34')](_0x3ca260[_0x9164('0x30')],_0x3ca260[_0x9164('0x32')]);_0x2761a0[_0x9164('0x35')]=_[_0x9164('0x34')](_0x3ca260[_0x9164('0x30')],qs[_0x9164('0x36')](_0x1d36c1[_0x9164('0x32')]['fields']));_0x2761a0[_0x9164('0x35')]=_0x2761a0[_0x9164('0x35')][_0x9164('0x37')]?_0x2761a0['attributes']:_0x3ca260[_0x9164('0x30')];if(!_0x1d36c1[_0x9164('0x32')][_0x9164('0x38')](_0x9164('0x39'))){_0x2761a0['limit']=qs[_0x9164('0x20')](_0x1d36c1[_0x9164('0x32')][_0x9164('0x20')]);_0x2761a0[_0x9164('0x1e')]=qs[_0x9164('0x1e')](_0x1d36c1[_0x9164('0x32')][_0x9164('0x1e')]);}_0x2761a0['order']=qs['sort'](_0x1d36c1[_0x9164('0x32')][_0x9164('0x3a')]);_0x2761a0[_0x9164('0x3b')]=qs[_0x9164('0x33')](_[_0x9164('0x3c')](_0x1d36c1[_0x9164('0x32')],_0x3ca260['filters']),_0x1fd28d);if(_0x1d36c1[_0x9164('0x32')][_0x9164('0x3d')]){_0x2761a0['where']=_[_0x9164('0x3e')](_0x2761a0['where'],{'$or':_[_0x9164('0x31')](_0x1fd28d,function(_0x5480bd){if(_0x5480bd[_0x9164('0x2e')]!=='VIRTUAL'){var _0x1ef0a2={};_0x1ef0a2[_0x5480bd[_0x9164('0x2a')]]={'$like':'%'+_0x1d36c1[_0x9164('0x32')][_0x9164('0x3d')]+'%'};return _0x1ef0a2;}})});}_0x2761a0=_[_0x9164('0x3e')]({},_0x2761a0,_0x1d36c1[_0x9164('0x3f')]);var _0x477a4d={'where':_0x2761a0['where']};return db[_0x9164('0x40')][_0x9164('0x21')](_0x477a4d)[_0x9164('0x27')](function(_0x4a2619){_0x5bec17[_0x9164('0x21')]=_0x4a2619;if(_0x1d36c1[_0x9164('0x32')][_0x9164('0x41')]){_0x2761a0[_0x9164('0x42')]=[{'all':!![]}];}return db[_0x9164('0x40')][_0x9164('0x43')](_0x2761a0);})['then'](function(_0x3a914d){_0x5bec17[_0x9164('0x44')]=_0x3a914d;return _0x5bec17;})[_0x9164('0x27')](respondWithFilteredResult(_0x1f22dd,_0x2761a0))[_0x9164('0x45')](handleError(_0x1f22dd,null));};exports[_0x9164('0x46')]=function(_0x1d800d,_0x4fb7ac){var _0x1b2ce3={'raw':!![],'where':{'id':_0x1d800d[_0x9164('0x47')]['id']}},_0x50ad06={};_0x50ad06[_0x9164('0x30')]=_[_0x9164('0x48')](db[_0x9164('0x40')][_0x9164('0x2d')]);_0x50ad06[_0x9164('0x32')]=_[_0x9164('0x48')](_0x1d800d['query']);_0x50ad06['filters']=_[_0x9164('0x34')](_0x50ad06[_0x9164('0x30')],_0x50ad06[_0x9164('0x32')]);_0x1b2ce3[_0x9164('0x35')]=_[_0x9164('0x34')](_0x50ad06[_0x9164('0x30')],qs[_0x9164('0x36')](_0x1d800d[_0x9164('0x32')][_0x9164('0x36')]));_0x1b2ce3[_0x9164('0x35')]=_0x1b2ce3[_0x9164('0x35')][_0x9164('0x37')]?_0x1b2ce3['attributes']:_0x50ad06[_0x9164('0x30')];if(_0x1d800d[_0x9164('0x32')][_0x9164('0x41')]){_0x1b2ce3[_0x9164('0x42')]=[{'all':!![]}];}_0x1b2ce3=_[_0x9164('0x3e')]({},_0x1b2ce3,_0x1d800d['options']);return db[_0x9164('0x40')][_0x9164('0x49')](_0x1b2ce3)['then'](handleEntityNotFound(_0x4fb7ac,null))[_0x9164('0x27')](respondWithResult(_0x4fb7ac,null))['catch'](handleError(_0x4fb7ac,null));};exports[_0x9164('0x4a')]=function(_0x3a7eed,_0x21547b){return db[_0x9164('0x40')][_0x9164('0x4a')](_0x3a7eed['body'],{})[_0x9164('0x27')](respondWithResult(_0x21547b,0xc9))[_0x9164('0x45')](handleError(_0x21547b,null));};exports[_0x9164('0x25')]=function(_0x57a6b7,_0x1818d5){if(_0x57a6b7['body']['id']){delete _0x57a6b7[_0x9164('0x4b')]['id'];}return db[_0x9164('0x40')][_0x9164('0x49')]({'where':{'id':_0x57a6b7[_0x9164('0x47')]['id']}})['then'](handleEntityNotFound(_0x1818d5,null))[_0x9164('0x27')](saveUpdates(_0x57a6b7['body'],null))[_0x9164('0x27')](respondWithResult(_0x1818d5,null))[_0x9164('0x45')](handleError(_0x1818d5,null));};exports[_0x9164('0x26')]=function(_0x53b9a9,_0xad9220){return db['SquareDetailsReport'][_0x9164('0x49')]({'where':{'id':_0x53b9a9[_0x9164('0x47')]['id']}})['then'](handleEntityNotFound(_0xad9220,null))[_0x9164('0x27')](removeEntity(_0xad9220,null))[_0x9164('0x45')](handleError(_0xad9220,null));};exports[_0x9164('0x4c')]=function(_0x2b3c40,_0x1d0ffa){return db[_0x9164('0x40')][_0x9164('0x4c')]()[_0x9164('0x27')](respondWithResult(_0x1d0ffa,null))['catch'](handleError(_0x1d0ffa,null));};
\ No newline at end of file
index d60f5e3..590a95d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cea=['report_square_details','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','SquareDetailsReport'];(function(_0x38471d,_0x483900){var _0x4ffbfb=function(_0x3137b6){while(--_0x3137b6){_0x38471d['push'](_0x38471d['shift']());}};_0x4ffbfb(++_0x483900);}(_0x1cea,0x140));var _0xa1ce=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x1cea[_0x5bd426];return _0x23a7eb;};'use strict';var _=require(_0xa1ce('0x0'));var util=require(_0xa1ce('0x1'));var logger=require(_0xa1ce('0x2'))(_0xa1ce('0x3'));var moment=require(_0xa1ce('0x4'));var BPromise=require(_0xa1ce('0x5'));var rp=require(_0xa1ce('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa1ce('0x7'));var config=require(_0xa1ce('0x8'));var attributes=require('./squareReportDetail.attributes');module['exports']=function(_0x3199e2,_0x280461){return _0x3199e2['define'](_0xa1ce('0x9'),attributes,{'tableName':_0xa1ce('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x47a7=['exports','define','SquareDetailsReport','report_square_details','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./squareReportDetail.attributes'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x47a7,0xc8));var _0x747a=function(_0x33d432,_0x125392){_0x33d432=_0x33d432-0x0;var _0x221581=_0x47a7[_0x33d432];return _0x221581;};'use strict';var _=require(_0x747a('0x0'));var util=require(_0x747a('0x1'));var logger=require(_0x747a('0x2'))(_0x747a('0x3'));var moment=require(_0x747a('0x4'));var BPromise=require(_0x747a('0x5'));var rp=require(_0x747a('0x6'));var fs=require('fs');var path=require(_0x747a('0x7'));var rimraf=require(_0x747a('0x8'));var config=require('../../config/environment');var attributes=require(_0x747a('0x9'));module[_0x747a('0xa')]=function(_0x43fbfb,_0x21d569){return _0x43fbfb[_0x747a('0xb')](_0x747a('0xc'),attributes,{'tableName':_0x747a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c6a726a..7ea934a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf8=['catch','CreateSquareDetailsReport','body','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','result'];(function(_0x4befe5,_0x2cea40){var _0x19b726=function(_0xa04b85){while(--_0xa04b85){_0x4befe5['push'](_0x4befe5['shift']());}};_0x19b726(++_0x2cea40);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x170772,_0x1f1ee7){_0x170772=_0x170772-0x0;var _0x3ef69c=_0x4cf8[_0x170772];return _0x3ef69c;};'use strict';var _=require(_0x84cf('0x0'));var util=require(_0x84cf('0x1'));var moment=require(_0x84cf('0x2'));var BPromise=require(_0x84cf('0x3'));var rs=require(_0x84cf('0x4'));var fs=require('fs');var Redis=require(_0x84cf('0x5'));var db=require(_0x84cf('0x6'))['db'];var utils=require(_0x84cf('0x7'));var logger=require(_0x84cf('0x8'))(_0x84cf('0x9'));var config=require(_0x84cf('0xa'));var jayson=require(_0x84cf('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x455345,_0x56c5cc,_0x15ba85){return new BPromise(function(_0x2c11b0,_0x51b84c){return client[_0x84cf('0xc')](_0x455345,_0x15ba85)[_0x84cf('0xd')](function(_0x489063){logger[_0x84cf('0xe')](_0x84cf('0xf'),_0x56c5cc,_0x84cf('0x10'));logger[_0x84cf('0x11')]('SquareDetailsReport,\x20%s,\x20%s,\x20%s',_0x56c5cc,_0x84cf('0x10'),JSON[_0x84cf('0x12')](_0x489063));if(_0x489063['error']){if(_0x489063['error'][_0x84cf('0x13')]===0x1f4){logger[_0x84cf('0x14')](_0x84cf('0xf'),_0x56c5cc,_0x489063[_0x84cf('0x14')][_0x84cf('0x15')]);return _0x51b84c(_0x489063[_0x84cf('0x14')][_0x84cf('0x15')]);}logger[_0x84cf('0x14')](_0x84cf('0xf'),_0x56c5cc,_0x489063[_0x84cf('0x14')][_0x84cf('0x15')]);return _0x2c11b0(_0x489063[_0x84cf('0x14')][_0x84cf('0x15')]);}else{logger[_0x84cf('0xe')](_0x84cf('0xf'),_0x56c5cc,_0x84cf('0x10'));_0x2c11b0(_0x489063[_0x84cf('0x16')][_0x84cf('0x15')]);}})[_0x84cf('0x17')](function(_0x5b8ac8){logger[_0x84cf('0x14')](_0x84cf('0xf'),_0x56c5cc,_0x5b8ac8);_0x51b84c(_0x5b8ac8);});});}exports[_0x84cf('0x18')]=function(_0x1abe2d){var _0x1dad1a=this;return new Promise(function(_0x13ba16,_0xe6b5b6){return db['SquareDetailsReport']['create'](_0x1abe2d[_0x84cf('0x19')],{'raw':_0x1abe2d[_0x84cf('0x1a')]?_0x1abe2d[_0x84cf('0x1a')][_0x84cf('0x1b')]===undefined?!![]:![]:!![]})[_0x84cf('0xd')](function(_0x5dda3f){logger[_0x84cf('0xe')](_0x84cf('0x18'),_0x1abe2d);logger[_0x84cf('0x11')](_0x84cf('0x18'),_0x1abe2d,JSON[_0x84cf('0x12')](_0x5dda3f));_0x13ba16(_0x5dda3f);})['catch'](function(_0x42fa45){logger[_0x84cf('0x14')](_0x84cf('0x18'),_0x42fa45[_0x84cf('0x15')],_0x1abe2d);_0xe6b5b6(_0x1dad1a[_0x84cf('0x14')](0x1f4,_0x42fa45[_0x84cf('0x15')]));});});};
\ No newline at end of file
+var _0x263f=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSquareDetailsReport','SquareDetailsReport','body','options','lodash','util','moment','bluebird'];(function(_0x19912e,_0x32aae5){var _0xccf3bf=function(_0x2c53fb){while(--_0x2c53fb){_0x19912e['push'](_0x19912e['shift']());}};_0xccf3bf(++_0x32aae5);}(_0x263f,0x182));var _0xf263=function(_0x57b0f2,_0x5dc381){_0x57b0f2=_0x57b0f2-0x0;var _0x5c45bf=_0x263f[_0x57b0f2];return _0x5c45bf;};'use strict';var _=require(_0xf263('0x0'));var util=require(_0xf263('0x1'));var moment=require(_0xf263('0x2'));var BPromise=require(_0xf263('0x3'));var rs=require(_0xf263('0x4'));var fs=require('fs');var Redis=require(_0xf263('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf263('0x6'));var logger=require(_0xf263('0x7'))(_0xf263('0x8'));var config=require('../../config/environment');var jayson=require(_0xf263('0x9'));var client=jayson[_0xf263('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4fded6,_0xa2b1b0,_0x9644ab){return new BPromise(function(_0xa2e77e,_0x16ff53){return client['request'](_0x4fded6,_0x9644ab)[_0xf263('0xb')](function(_0x26504c){logger[_0xf263('0xc')](_0xf263('0xd'),_0xa2b1b0,_0xf263('0xe'));logger[_0xf263('0xf')](_0xf263('0x10'),_0xa2b1b0,'request\x20sent',JSON[_0xf263('0x11')](_0x26504c));if(_0x26504c['error']){if(_0x26504c[_0xf263('0x12')]['code']===0x1f4){logger['error'](_0xf263('0xd'),_0xa2b1b0,_0x26504c[_0xf263('0x12')][_0xf263('0x13')]);return _0x16ff53(_0x26504c[_0xf263('0x12')][_0xf263('0x13')]);}logger[_0xf263('0x12')](_0xf263('0xd'),_0xa2b1b0,_0x26504c['error'][_0xf263('0x13')]);return _0xa2e77e(_0x26504c['error'][_0xf263('0x13')]);}else{logger[_0xf263('0xc')](_0xf263('0xd'),_0xa2b1b0,_0xf263('0xe'));_0xa2e77e(_0x26504c[_0xf263('0x14')][_0xf263('0x13')]);}})[_0xf263('0x15')](function(_0x57c655){logger['error'](_0xf263('0xd'),_0xa2b1b0,_0x57c655);_0x16ff53(_0x57c655);});});}exports[_0xf263('0x16')]=function(_0x325a84){var _0x2e660e=this;return new Promise(function(_0x1ea46b,_0x56bd2d){return db[_0xf263('0x17')]['create'](_0x325a84[_0xf263('0x18')],{'raw':_0x325a84[_0xf263('0x19')]?_0x325a84[_0xf263('0x19')]['raw']===undefined?!![]:![]:!![]})[_0xf263('0xb')](function(_0x169328){logger[_0xf263('0xc')]('CreateSquareDetailsReport',_0x325a84);logger[_0xf263('0xf')](_0xf263('0x16'),_0x325a84,JSON[_0xf263('0x11')](_0x169328));_0x1ea46b(_0x169328);})[_0xf263('0x15')](function(_0xa0695){logger[_0xf263('0x12')](_0xf263('0x16'),_0xa0695[_0xf263('0x13')],_0x325a84);_0x56bd2d(_0x2e660e[_0xf263('0x12')](0x1f4,_0xa0695[_0xf263('0x13')]));});});};
\ No newline at end of file
index 1642113..2da4cec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c5e=['isAuthenticated','index','/process/:pid/kill','killProcess','exports','express','Router','../../components/auth/service','get'];(function(_0x367e86,_0x4a6cac){var _0x5520be=function(_0x24e5cb){while(--_0x24e5cb){_0x367e86['push'](_0x367e86['shift']());}};_0x5520be(++_0x4a6cac);}(_0x9c5e,0xb9));var _0xe9c5=function(_0x5a9c59,_0x3b3748){_0x5a9c59=_0x5a9c59-0x0;var _0x28a529=_0x9c5e[_0x5a9c59];return _0x28a529;};'use strict';var express=require(_0xe9c5('0x0'));var router=express[_0xe9c5('0x1')]();var auth=require(_0xe9c5('0x2'));var controller=require('./system.controller');router[_0xe9c5('0x3')]('/',auth[_0xe9c5('0x4')](),controller[_0xe9c5('0x5')]);router[_0xe9c5('0x3')](_0xe9c5('0x6'),auth[_0xe9c5('0x4')](),controller[_0xe9c5('0x7')]);module[_0xe9c5('0x8')]=router;
\ No newline at end of file
+var _0x142c=['get','index','/process/:pid/kill','isAuthenticated','killProcess','exports','Router','./system.controller'];(function(_0x1a9ea4,_0x4bf227){var _0x15215e=function(_0x14305a){while(--_0x14305a){_0x1a9ea4['push'](_0x1a9ea4['shift']());}};_0x15215e(++_0x4bf227);}(_0x142c,0xce));var _0xc142=function(_0x116ce6,_0x47adf3){_0x116ce6=_0x116ce6-0x0;var _0x1cda4b=_0x142c[_0x116ce6];return _0x1cda4b;};'use strict';var express=require('express');var router=express[_0xc142('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0xc142('0x1'));router[_0xc142('0x2')]('/',auth['isAuthenticated'](),controller[_0xc142('0x3')]);router['get'](_0xc142('0x4'),auth[_0xc142('0x5')](),controller[_0xc142('0x6')]);module[_0xc142('0x7')]=router;
\ No newline at end of file
index 519248c..d033515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc302=['pid','split','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','params','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','killProcess','systeminformation','../../config/logger','api','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','send','getAllData','then','json','catch','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args'];(function(_0xcc849,_0x43e6c2){var _0x189cf1=function(_0x596b53){while(--_0x596b53){_0xcc849['push'](_0xcc849['shift']());}};_0x189cf1(++_0x43e6c2);}(_0xc302,0x79));var _0x2c30=function(_0x19f313,_0x3081d7){_0x19f313=_0x19f313-0x0;var _0xf75b45=_0xc302[_0x19f313];return _0xf75b45;};'use strict';var info=require(_0x2c30('0x0'));var exec=require('child_process')['exec'];var logger=require(_0x2c30('0x1'))(_0x2c30('0x2'));var util=require(_0x2c30('0x3'));var BPromise=require(_0x2c30('0x4'));var _=require(_0x2c30('0x5'));function handleError(_0x43f3dc,_0x5d7b2,_0x1c5570){_0x5d7b2=_0x5d7b2||0x1f4;return function(_0x5f20d4){logger[_0x2c30('0x6')](_0x2c30('0x7'),_0x1c5570,_0x5d7b2,util[_0x2c30('0x8')](_0x5f20d4,{'showHidden':![],'depth':null}));delete _0x5f20d4[_0x2c30('0x9')];_0x43f3dc[_0x2c30('0xa')](_0x5d7b2)[_0x2c30('0xb')](_0x5f20d4);};}exports['index']=function(_0x1662bf,_0x15a8ee){return info[_0x2c30('0xc')]()[_0x2c30('0xd')](function(_0x193b5a){return _0x15a8ee[_0x2c30('0xa')](0xc8)[_0x2c30('0xe')](_0x193b5a);})[_0x2c30('0xf')](function(_0x204043){return _0x15a8ee[_0x2c30('0xa')](0x1f4)[_0x2c30('0xe')](_0x204043);});};exports['killProcess']=function(_0x4532f2,_0x3a40ca){var _0x556d5c=[_0x2c30('0x10')];return new BPromise(function(_0x4cce10,_0x3de9ab){return exec(util[_0x2c30('0x11')](_0x2c30('0x12'),_0x4532f2['params'][_0x2c30('0x13')]),function(_0x103d23,_0x32b437,_0x308aaf){if(_0x103d23){return _0x3de9ab(_0x103d23);}return _0x4cce10(_0x32b437);});})['then'](function(_0x2c6893){var _0xb4ca5d=![];var _0xcf3568=_0x2c6893[_0x2c30('0x14')](/\n/);for(var _0x465376=0x0,_0x5b58a2=_0x556d5c[_0x2c30('0x15')];_0x465376<_0x5b58a2,_0xb4ca5d===![];_0x465376+=0x1){if(_0x2c6893[_0x2c30('0x16')](_0x556d5c[_0x465376])>=0x0){_0xb4ca5d=!![];}}if(!_0xb4ca5d){throw new Error(util[_0x2c30('0x11')](_0x2c30('0x17'),_0x4532f2[_0x2c30('0x18')][_0x2c30('0x13')]));}process['kill'](_0x4532f2['params'][_0x2c30('0x13')],_0x2c30('0x19'));return _0x3a40ca['status'](0xc8)['json']({'message':util[_0x2c30('0x11')](_0x2c30('0x1a'),_0x4532f2[_0x2c30('0x18')][_0x2c30('0x13')])});})[_0x2c30('0xf')](handleError(_0x3a40ca,null,_0x2c30('0x1b')));};
\ No newline at end of file
+var _0xde49=['params','pid','split','length','format','Process\x20with\x20pid\x20%s\x20not\x20found!','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','systeminformation','exec','../../config/logger','api','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','send','index','getAllData','then','status','catch','killProcess','components/import/cm','ps\x20-p\x20%s\x20-ww\x20-o\x20args'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xde49,0x7d));var _0x9de4=function(_0x58c9e9,_0x1d9ef3){_0x58c9e9=_0x58c9e9-0x0;var _0x55ebe0=_0xde49[_0x58c9e9];return _0x55ebe0;};'use strict';var info=require(_0x9de4('0x0'));var exec=require('child_process')[_0x9de4('0x1')];var logger=require(_0x9de4('0x2'))(_0x9de4('0x3'));var util=require(_0x9de4('0x4'));var BPromise=require(_0x9de4('0x5'));var _=require(_0x9de4('0x6'));function handleError(_0x446b9a,_0x25f88e,_0x3305b9){_0x25f88e=_0x25f88e||0x1f4;return function(_0x37f0e7){logger[_0x9de4('0x7')](_0x9de4('0x8'),_0x3305b9,_0x25f88e,util[_0x9de4('0x9')](_0x37f0e7,{'showHidden':![],'depth':null}));delete _0x37f0e7[_0x9de4('0xa')];_0x446b9a['status'](_0x25f88e)[_0x9de4('0xb')](_0x37f0e7);};}exports[_0x9de4('0xc')]=function(_0x1f4fe4,_0x59beb2){return info[_0x9de4('0xd')]()[_0x9de4('0xe')](function(_0xc472ae){return _0x59beb2[_0x9de4('0xf')](0xc8)['json'](_0xc472ae);})[_0x9de4('0x10')](function(_0x1eb727){return _0x59beb2[_0x9de4('0xf')](0x1f4)['json'](_0x1eb727);});};exports[_0x9de4('0x11')]=function(_0x40d19e,_0x422c6e){var _0x3fb8d2=[_0x9de4('0x12')];return new BPromise(function(_0x157be9,_0x5b5051){return exec(util['format'](_0x9de4('0x13'),_0x40d19e[_0x9de4('0x14')][_0x9de4('0x15')]),function(_0x39e4b8,_0xf51d84,_0x370963){if(_0x39e4b8){return _0x5b5051(_0x39e4b8);}return _0x157be9(_0xf51d84);});})[_0x9de4('0xe')](function(_0xcdbb35){var _0x3fdb24=![];var _0x1d6428=_0xcdbb35[_0x9de4('0x16')](/\n/);for(var _0x2e0fd6=0x0,_0x1d1fb8=_0x3fb8d2[_0x9de4('0x17')];_0x2e0fd6<_0x1d1fb8,_0x3fdb24===![];_0x2e0fd6+=0x1){if(_0xcdbb35['indexOf'](_0x3fb8d2[_0x2e0fd6])>=0x0){_0x3fdb24=!![];}}if(!_0x3fdb24){throw new Error(util[_0x9de4('0x18')](_0x9de4('0x19'),_0x40d19e[_0x9de4('0x14')][_0x9de4('0x15')]));}process[_0x9de4('0x1a')](_0x40d19e[_0x9de4('0x14')]['pid'],_0x9de4('0x1b'));return _0x422c6e[_0x9de4('0xf')](0xc8)['json']({'message':util['format'](_0x9de4('0x1c'),_0x40d19e['params'][_0x9de4('0x15')])});})[_0x9de4('0x10')](handleError(_0x422c6e,null,'killProcess'));};
\ No newline at end of file
index 52c81bd..a606704 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa97d=['exports','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','post','create','delete','destroy'];(function(_0x5f451c,_0x4c9fc3){var _0x21598f=function(_0x4c109e){while(--_0x4c109e){_0x5f451c['push'](_0x5f451c['shift']());}};_0x21598f(++_0x4c9fc3);}(_0xa97d,0x17b));var _0xda97=function(_0x57bc41,_0x270339){_0x57bc41=_0x57bc41-0x0;var _0x3ebc9b=_0xa97d[_0x57bc41];return _0x3ebc9b;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xda97('0x0'));var express=require(_0xda97('0x1'));var router=express[_0xda97('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xda97('0x3'));var interaction=require(_0xda97('0x4'));var config=require(_0xda97('0x5'));var controller=require('./tag.controller');router[_0xda97('0x6')]('/',auth[_0xda97('0x7')](),controller['index']);router[_0xda97('0x6')](_0xda97('0x8'),auth[_0xda97('0x7')](),controller['show']);router[_0xda97('0x9')]('/',auth[_0xda97('0x7')](),controller[_0xda97('0xa')]);router['put'](_0xda97('0x8'),auth[_0xda97('0x7')](),controller['update']);router[_0xda97('0xb')](_0xda97('0x8'),auth[_0xda97('0x7')](),controller[_0xda97('0xc')]);module[_0xda97('0xd')]=router;
\ No newline at end of file
+var _0x4458=['exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','post','create','put','update','delete'];(function(_0x60aa44,_0x1cfc0d){var _0x1aef0c=function(_0x539425){while(--_0x539425){_0x60aa44['push'](_0x60aa44['shift']());}};_0x1aef0c(++_0x1cfc0d);}(_0x4458,0x119));var _0x8445=function(_0x59a488,_0x2475ae){_0x59a488=_0x59a488-0x0;var _0x1ad526=_0x4458[_0x59a488];return _0x1ad526;};'use strict';var multer=require(_0x8445('0x0'));var util=require(_0x8445('0x1'));var path=require(_0x8445('0x2'));var timeout=require('connect-timeout');var express=require(_0x8445('0x3'));var router=express[_0x8445('0x4')]();var fs_extra=require(_0x8445('0x5'));var auth=require(_0x8445('0x6'));var interaction=require(_0x8445('0x7'));var config=require(_0x8445('0x8'));var controller=require('./tag.controller');router['get']('/',auth[_0x8445('0x9')](),controller[_0x8445('0xa')]);router[_0x8445('0xb')](_0x8445('0xc'),auth[_0x8445('0x9')](),controller[_0x8445('0xd')]);router[_0x8445('0xe')]('/',auth[_0x8445('0x9')](),controller[_0x8445('0xf')]);router[_0x8445('0x10')](_0x8445('0xc'),auth[_0x8445('0x9')](),controller[_0x8445('0x11')]);router[_0x8445('0x12')](_0x8445('0xc'),auth[_0x8445('0x9')](),controller['destroy']);module[_0x8445('0x13')]=router;
\ No newline at end of file
index 5058ff5..39fe812 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80cd=['name','#0091EA','exports','STRING'];(function(_0x5df404,_0xf3a4c2){var _0x432ebc=function(_0x3a9342){while(--_0x3a9342){_0x5df404['push'](_0x5df404['shift']());}};_0x432ebc(++_0xf3a4c2);}(_0x80cd,0x146));var _0xd80c=function(_0x117f4c,_0x36a9b1){_0x117f4c=_0x117f4c-0x0;var _0x2b24e9=_0x80cd[_0x117f4c];return _0x2b24e9;};'use strict';var Sequelize=require('sequelize');module[_0xd80c('0x0')]={'name':{'type':Sequelize[_0xd80c('0x1')],'unique':_0xd80c('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xd80c('0x1')],'defaultValue':_0xd80c('0x3')},'description':{'type':Sequelize[_0xd80c('0x1')]}};
\ No newline at end of file
+var _0x88c3=['STRING','#0091EA','sequelize'];(function(_0x152121,_0x120c53){var _0x592a85=function(_0x241cab){while(--_0x241cab){_0x152121['push'](_0x152121['shift']());}};_0x592a85(++_0x120c53);}(_0x88c3,0x1ee));var _0x388c=function(_0x453694,_0x4c5abe){_0x453694=_0x453694-0x0;var _0x1e7fb4=_0x88c3[_0x453694];return _0x1e7fb4;};'use strict';var Sequelize=require(_0x388c('0x0'));module['exports']={'name':{'type':Sequelize[_0x388c('0x1')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize['STRING'],'defaultValue':_0x388c('0x2')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b1dc82f..d5e624b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x579c=['sendStatus','name','send','index','map','Tag','rawAttributes','key','query','keys','intersection','attributes','model','fields','hasOwnProperty','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','options','includeAll','findAll','rows','show','params','length','include','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','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','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','Tags','UserProfileResource'];(function(_0x245802,_0x54708e){var _0x5e8c98=function(_0x1f261e){while(--_0x1f261e){_0x245802['push'](_0x245802['shift']());}};_0x5e8c98(++_0x54708e);}(_0x579c,0xda));var _0xc579=function(_0x428324,_0x420382){_0x428324=_0x428324-0x0;var _0x3e213b=_0x579c[_0x428324];return _0x3e213b;};'use strict';var emlformat=require(_0xc579('0x0'));var rimraf=require(_0xc579('0x1'));var zipdir=require(_0xc579('0x2'));var jsonpatch=require(_0xc579('0x3'));var rp=require(_0xc579('0x4'));var moment=require('moment');var BPromise=require(_0xc579('0x5'));var Mustache=require('mustache');var util=require(_0xc579('0x6'));var path=require(_0xc579('0x7'));var sox=require(_0xc579('0x8'));var csv=require(_0xc579('0x9'));var ejs=require(_0xc579('0xa'));var fs=require('fs');var fs_extra=require(_0xc579('0xb'));var _=require(_0xc579('0xc'));var squel=require('squel');var crypto=require(_0xc579('0xd'));var jsforce=require(_0xc579('0xe'));var deskjs=require(_0xc579('0xf'));var toCsv=require(_0xc579('0x9'));var querystring=require(_0xc579('0x10'));var Papa=require(_0xc579('0x11'));var Redis=require(_0xc579('0x12'));var authService=require(_0xc579('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xc579('0x14'));var hardwareService=require(_0xc579('0x15'));var logger=require(_0xc579('0x16'))(_0xc579('0x17'));var utils=require(_0xc579('0x18'));var config=require(_0xc579('0x19'));var licenseUtil=require(_0xc579('0x1a'));var db=require(_0xc579('0x1b'))['db'];function respondWithStatusCode(_0x421812,_0x441028){_0x441028=_0x441028||0xcc;return function(_0x448d51){if(_0x448d51){return _0x421812['sendStatus'](_0x441028);}return _0x421812[_0xc579('0x1c')](_0x441028)['end']();};}function respondWithResult(_0xf5400e,_0x59243e){_0x59243e=_0x59243e||0xc8;return function(_0x424e15){if(_0x424e15){return _0xf5400e['status'](_0x59243e)[_0xc579('0x1d')](_0x424e15);}};}function respondWithFilteredResult(_0x4b3635,_0x349e82){return function(_0x115276){if(_0x115276){var _0x567de5=typeof _0x349e82['offset']===_0xc579('0x1e')&&typeof _0x349e82[_0xc579('0x1f')]===_0xc579('0x1e');var _0x414ee7=_0x115276[_0xc579('0x20')];var _0x33d341=_0x567de5?0x0:_0x349e82[_0xc579('0x21')];var _0x3da8a1=_0x567de5?_0x115276[_0xc579('0x20')]:_0x349e82[_0xc579('0x21')]+_0x349e82['limit'];var _0x463f5e;if(_0x3da8a1>=_0x414ee7){_0x3da8a1=_0x414ee7;_0x463f5e=0xc8;}else{_0x463f5e=0xce;}_0x4b3635[_0xc579('0x1c')](_0x463f5e);return _0x4b3635['set'](_0xc579('0x22'),_0x33d341+'-'+_0x3da8a1+'/'+_0x414ee7)[_0xc579('0x1d')](_0x115276);}return null;};}function patchUpdates(_0x14fcdd){return function(_0x6501bc){try{jsonpatch[_0xc579('0x23')](_0x6501bc,_0x14fcdd,!![]);}catch(_0x4417e1){return BPromise[_0xc579('0x24')](_0x4417e1);}return _0x6501bc[_0xc579('0x25')]();};}function saveUpdates(_0x55781e,_0x92657f){return function(_0xad4889){if(_0xad4889){return _0xad4889[_0xc579('0x26')](_0x55781e)[_0xc579('0x27')](function(_0x1da86e){return _0x1da86e;});}return null;};}function removeEntity(_0x565a1b,_0x3634f2){return function(_0x3cf83f){if(_0x3cf83f){return _0x3cf83f[_0xc579('0x28')]()['then'](function(){var _0x45e1ac=_0x3cf83f['get']({'plain':!![]});var _0x4610c2=_0xc579('0x29');return db[_0xc579('0x2a')]['destroy']({'where':{'type':_0x4610c2,'resourceId':_0x45e1ac['id']}})[_0xc579('0x27')](function(){return _0x3cf83f;});})['then'](function(){_0x565a1b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x540d90,_0x3f7363){return function(_0xfdbb73){if(!_0xfdbb73){_0x540d90[_0xc579('0x2b')](0x194);}return _0xfdbb73;};}function handleError(_0x206e39,_0x194477){_0x194477=_0x194477||0x1f4;return function(_0x45fef4){logger['error'](_0x45fef4['stack']);if(_0x45fef4[_0xc579('0x2c')]){delete _0x45fef4['name'];}_0x206e39[_0xc579('0x1c')](_0x194477)[_0xc579('0x2d')](_0x45fef4);};}exports[_0xc579('0x2e')]=function(_0x3fe96b,_0x1ad8f7){var _0x156bf5={},_0x45e6a3={},_0x133d08={'count':0x0,'rows':[]};var _0x49b48f=_[_0xc579('0x2f')](db[_0xc579('0x30')][_0xc579('0x31')],function(_0x333fa4){return{'name':_0x333fa4['fieldName'],'type':_0x333fa4['type'][_0xc579('0x32')]};});_0x45e6a3['model']=_[_0xc579('0x2f')](_0x49b48f,_0xc579('0x2c'));_0x45e6a3[_0xc579('0x33')]=_[_0xc579('0x34')](_0x3fe96b[_0xc579('0x33')]);_0x45e6a3['filters']=_[_0xc579('0x35')](_0x45e6a3['model'],_0x45e6a3[_0xc579('0x33')]);_0x156bf5[_0xc579('0x36')]=_['intersection'](_0x45e6a3[_0xc579('0x37')],qs[_0xc579('0x38')](_0x3fe96b['query']['fields']));_0x156bf5[_0xc579('0x36')]=_0x156bf5[_0xc579('0x36')]['length']?_0x156bf5[_0xc579('0x36')]:_0x45e6a3[_0xc579('0x37')];if(!_0x3fe96b['query'][_0xc579('0x39')]('nolimit')){_0x156bf5[_0xc579('0x1f')]=qs[_0xc579('0x1f')](_0x3fe96b['query'][_0xc579('0x1f')]);_0x156bf5[_0xc579('0x21')]=qs[_0xc579('0x21')](_0x3fe96b[_0xc579('0x33')][_0xc579('0x21')]);}_0x156bf5[_0xc579('0x3a')]=qs['sort'](_0x3fe96b[_0xc579('0x33')][_0xc579('0x3b')]);_0x156bf5['where']=qs[_0xc579('0x3c')](_[_0xc579('0x3d')](_0x3fe96b[_0xc579('0x33')],_0x45e6a3[_0xc579('0x3c')]),_0x49b48f);if(_0x3fe96b['query'][_0xc579('0x3e')]){_0x156bf5[_0xc579('0x3f')]=_[_0xc579('0x40')](_0x156bf5['where'],{'$or':_['map'](_0x49b48f,function(_0x5c9d54){if(_0x5c9d54[_0xc579('0x41')]!==_0xc579('0x42')){var _0x3349e0={};_0x3349e0[_0x5c9d54[_0xc579('0x2c')]]={'$like':'%'+_0x3fe96b[_0xc579('0x33')][_0xc579('0x3e')]+'%'};return _0x3349e0;}})});}_0x156bf5=_['merge']({},_0x156bf5,_0x3fe96b[_0xc579('0x43')]);var _0x53ab02={'where':_0x156bf5[_0xc579('0x3f')]};return db[_0xc579('0x30')][_0xc579('0x20')](_0x53ab02)[_0xc579('0x27')](function(_0x3d8f24){_0x133d08[_0xc579('0x20')]=_0x3d8f24;if(_0x3fe96b[_0xc579('0x33')][_0xc579('0x44')]){_0x156bf5['include']=[{'all':!![]}];}return db[_0xc579('0x30')][_0xc579('0x45')](_0x156bf5);})[_0xc579('0x27')](function(_0x2449e6){_0x133d08[_0xc579('0x46')]=_0x2449e6;return _0x133d08;})[_0xc579('0x27')](respondWithFilteredResult(_0x1ad8f7,_0x156bf5))['catch'](handleError(_0x1ad8f7,null));};exports[_0xc579('0x47')]=function(_0x290493,_0x194f95){var _0x4cf801={'raw':!![],'where':{'id':_0x290493[_0xc579('0x48')]['id']}},_0x3e66c0={};_0x3e66c0[_0xc579('0x37')]=_['keys'](db[_0xc579('0x30')]['rawAttributes']);_0x3e66c0[_0xc579('0x33')]=_[_0xc579('0x34')](_0x290493[_0xc579('0x33')]);_0x3e66c0['filters']=_[_0xc579('0x35')](_0x3e66c0[_0xc579('0x37')],_0x3e66c0['query']);_0x4cf801['attributes']=_[_0xc579('0x35')](_0x3e66c0[_0xc579('0x37')],qs[_0xc579('0x38')](_0x290493[_0xc579('0x33')]['fields']));_0x4cf801['attributes']=_0x4cf801[_0xc579('0x36')][_0xc579('0x49')]?_0x4cf801[_0xc579('0x36')]:_0x3e66c0[_0xc579('0x37')];if(_0x290493['query'][_0xc579('0x44')]){_0x4cf801[_0xc579('0x4a')]=[{'all':!![]}];}_0x4cf801=_['merge']({},_0x4cf801,_0x290493[_0xc579('0x43')]);return db['Tag']['find'](_0x4cf801)['then'](handleEntityNotFound(_0x194f95,null))[_0xc579('0x27')](respondWithResult(_0x194f95,null))[_0xc579('0x4b')](handleError(_0x194f95,null));};exports[_0xc579('0x4c')]=function(_0x90a0d3,_0x1f9d15){return db['Tag'][_0xc579('0x4c')](_0x90a0d3[_0xc579('0x4d')],{})[_0xc579('0x27')](function(_0x5c726d){var _0x5cdead=_0x90a0d3[_0xc579('0x4e')][_0xc579('0x4f')]({'plain':!![]});if(!_0x5cdead)throw new Error(_0xc579('0x50'));if(_0x5cdead[_0xc579('0x51')]===_0xc579('0x4e')){var _0xe1a1d7=_0x5c726d[_0xc579('0x4f')]({'plain':!![]});var _0x5431ba='Tags';return db[_0xc579('0x52')][_0xc579('0x53')]({'where':{'name':_0x5431ba,'userProfileId':_0x5cdead['userProfileId']},'raw':!![]})[_0xc579('0x27')](function(_0x4de789){if(_0x4de789&&_0x4de789[_0xc579('0x54')]===0x0){return db[_0xc579('0x2a')][_0xc579('0x4c')]({'name':_0xe1a1d7[_0xc579('0x2c')],'resourceId':_0xe1a1d7['id'],'type':_0x4de789[_0xc579('0x2c')],'sectionId':_0x4de789['id']},{})[_0xc579('0x27')](function(){return _0x5c726d;});}else{return _0x5c726d;}})['catch'](function(_0x563970){logger[_0xc579('0x55')](_0xc579('0x56'),_0x563970);throw _0x563970;});}return _0x5c726d;})['then'](respondWithResult(_0x1f9d15,0xc9))[_0xc579('0x4b')](handleError(_0x1f9d15,null));};exports['update']=function(_0x241fb2,_0x1b0931){if(_0x241fb2[_0xc579('0x4d')]['id']){delete _0x241fb2[_0xc579('0x4d')]['id'];}return db['Tag']['find']({'where':{'id':_0x241fb2[_0xc579('0x48')]['id']}})['then'](handleEntityNotFound(_0x1b0931,null))[_0xc579('0x27')](saveUpdates(_0x241fb2[_0xc579('0x4d')],null))[_0xc579('0x27')](respondWithResult(_0x1b0931,null))['catch'](handleError(_0x1b0931,null));};exports[_0xc579('0x28')]=function(_0x43b067,_0x4a2701){return db[_0xc579('0x30')][_0xc579('0x53')]({'where':{'id':_0x43b067[_0xc579('0x48')]['id']}})[_0xc579('0x27')](handleEntityNotFound(_0x4a2701,null))[_0xc579('0x27')](removeEntity(_0x4a2701,null))['catch'](handleError(_0x4a2701,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(_0x531f74,_0x23ccb1){var _0x4b7873=function(_0x1cb700){while(--_0x1cb700){_0x531f74['push'](_0x531f74['shift']());}};_0x4b7873(++_0x23ccb1);}(_0x9a19,0x114));var _0x99a1=function(_0x46ae5a,_0x2a38d0){_0x46ae5a=_0x46ae5a-0x0;var _0x434986=_0x9a19[_0x46ae5a];return _0x434986;};'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 3898a61..28348ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b8d=['exports','tools_tags','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./tag.attributes'];(function(_0x3221a9,_0x9f570d){var _0x5ded44=function(_0x57fd2f){while(--_0x57fd2f){_0x3221a9['push'](_0x3221a9['shift']());}};_0x5ded44(++_0x9f570d);}(_0x0b8d,0xbd));var _0xd0b8=function(_0x58afd5,_0x534a48){_0x58afd5=_0x58afd5-0x0;var _0x3e503b=_0x0b8d[_0x58afd5];return _0x3e503b;};'use strict';var _=require(_0xd0b8('0x0'));var util=require(_0xd0b8('0x1'));var logger=require(_0xd0b8('0x2'))(_0xd0b8('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xd0b8('0x4'));var fs=require('fs');var path=require(_0xd0b8('0x5'));var rimraf=require(_0xd0b8('0x6'));var config=require(_0xd0b8('0x7'));var attributes=require(_0xd0b8('0x8'));module[_0xd0b8('0x9')]=function(_0x820540,_0x3bf19d){return _0x820540['define']('Tag',attributes,{'tableName':_0xd0b8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x97be=['util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./tag.attributes','exports','Tag','tools_tags'];(function(_0xf7bd42,_0xfc76f8){var _0x334b1f=function(_0xc94bad){while(--_0xc94bad){_0xf7bd42['push'](_0xf7bd42['shift']());}};_0x334b1f(++_0xfc76f8);}(_0x97be,0x155));var _0xe97b=function(_0x3835da,_0x25826b){_0x3835da=_0x3835da-0x0;var _0x331ebb=_0x97be[_0x3835da];return _0x331ebb;};'use strict';var _=require('lodash');var util=require(_0xe97b('0x0'));var logger=require(_0xe97b('0x1'))(_0xe97b('0x2'));var moment=require(_0xe97b('0x3'));var BPromise=require('bluebird');var rp=require(_0xe97b('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe97b('0x5'));var config=require(_0xe97b('0x6'));var attributes=require(_0xe97b('0x7'));module[_0xe97b('0x8')]=function(_0x3e6196,_0x1840c1){return _0x3e6196['define'](_0xe97b('0x9'),attributes,{'tableName':_0xe97b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ea3ccdd..b4fad73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5712=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','request','Tag,\x20%s,\x20%s','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','message','info'];(function(_0x33bcdb,_0x11846b){var _0x18a9bf=function(_0x34417a){while(--_0x34417a){_0x33bcdb['push'](_0x33bcdb['shift']());}};_0x18a9bf(++_0x11846b);}(_0x5712,0x140));var _0x2571=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x5712[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0x2571('0x0'));var util=require(_0x2571('0x1'));var moment=require(_0x2571('0x2'));var BPromise=require(_0x2571('0x3'));var rs=require(_0x2571('0x4'));var fs=require('fs');var Redis=require(_0x2571('0x5'));var db=require(_0x2571('0x6'))['db'];var utils=require(_0x2571('0x7'));var logger=require(_0x2571('0x8'))(_0x2571('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2571('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3e19b2,_0x251ee6,_0x3ca885){return new BPromise(function(_0x204ecc,_0xda659a){return client[_0x2571('0xb')](_0x3e19b2,_0x3ca885)['then'](function(_0x1f0c98){logger['info'](_0x2571('0xc'),_0x251ee6,_0x2571('0xd'));logger[_0x2571('0xe')](_0x2571('0xf'),_0x251ee6,_0x2571('0xd'),JSON[_0x2571('0x10')](_0x1f0c98));if(_0x1f0c98[_0x2571('0x11')]){if(_0x1f0c98[_0x2571('0x11')]['code']===0x1f4){logger['error'](_0x2571('0xc'),_0x251ee6,_0x1f0c98[_0x2571('0x11')][_0x2571('0x12')]);return _0xda659a(_0x1f0c98[_0x2571('0x11')][_0x2571('0x12')]);}logger[_0x2571('0x11')](_0x2571('0xc'),_0x251ee6,_0x1f0c98[_0x2571('0x11')][_0x2571('0x12')]);return _0x204ecc(_0x1f0c98[_0x2571('0x11')][_0x2571('0x12')]);}else{logger[_0x2571('0x13')]('Tag,\x20%s,\x20%s',_0x251ee6,_0x2571('0xd'));_0x204ecc(_0x1f0c98['result']['message']);}})['catch'](function(_0x4c3e11){logger[_0x2571('0x11')](_0x2571('0xc'),_0x251ee6,_0x4c3e11);_0xda659a(_0x4c3e11);});});}
\ No newline at end of file
+var _0x4876=['stringify','error','code','message','result','catch','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Tag,\x20%s,\x20%s','debug','Tag,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x5e8282,_0x5a3f5f){var _0x533227=function(_0x530374){while(--_0x530374){_0x5e8282['push'](_0x5e8282['shift']());}};_0x533227(++_0x5a3f5f);}(_0x4876,0x84));var _0x6487=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4876[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6487('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6487('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x6487('0x2'));var logger=require(_0x6487('0x3'))(_0x6487('0x4'));var config=require(_0x6487('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x6487('0x6')][_0x6487('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x52177e,_0x289918,_0x14d6d8){return new BPromise(function(_0x2df3c1,_0x3f237a){return client[_0x6487('0x8')](_0x52177e,_0x14d6d8)[_0x6487('0x9')](function(_0x84bd9f){logger[_0x6487('0xa')](_0x6487('0xb'),_0x289918,'request\x20sent');logger[_0x6487('0xc')](_0x6487('0xd'),_0x289918,_0x6487('0xe'),JSON[_0x6487('0xf')](_0x84bd9f));if(_0x84bd9f[_0x6487('0x10')]){if(_0x84bd9f[_0x6487('0x10')][_0x6487('0x11')]===0x1f4){logger[_0x6487('0x10')]('Tag,\x20%s,\x20%s',_0x289918,_0x84bd9f[_0x6487('0x10')][_0x6487('0x12')]);return _0x3f237a(_0x84bd9f[_0x6487('0x10')][_0x6487('0x12')]);}logger['error'](_0x6487('0xb'),_0x289918,_0x84bd9f[_0x6487('0x10')][_0x6487('0x12')]);return _0x2df3c1(_0x84bd9f[_0x6487('0x10')]['message']);}else{logger['info'](_0x6487('0xb'),_0x289918,'request\x20sent');_0x2df3c1(_0x84bd9f[_0x6487('0x13')]['message']);}})[_0x6487('0x14')](function(_0x3e7560){logger[_0x6487('0x10')](_0x6487('0xb'),_0x289918,_0x3e7560);_0x3f237a(_0x3e7560);});});}
\ No newline at end of file
index 61b1862..24be4f9 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(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_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['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0xa9e0[_0x3e112d];return _0x531c31;};'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 26f22ed..e2047b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['exports','STRING'];(function(_0x5e2443,_0x18acad){var _0x4ccc3d=function(_0x5a26b0){while(--_0x5a26b0){_0x5e2443['push'](_0x5e2443['shift']());}};_0x4ccc3d(++_0x18acad);}(_0x757a,0xde));var _0xa757=function(_0x5c983b,_0x3da191){_0x5c983b=_0x5c983b-0x0;var _0x4df578=_0x757a[_0x5c983b];return _0x4df578;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xd8b0=['exports','sequelize'];(function(_0x2edbb6,_0x20ac85){var _0x2c1b64=function(_0xf075a9){while(--_0xf075a9){_0x2edbb6['push'](_0x2edbb6['shift']());}};_0x2c1b64(++_0x20ac85);}(_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
index 09ecfd7..9c8e254 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd88e=['../../config/environment','redis','localhost','socket.io-emitter','./team.socket','register','sendStatus','status','end','undefined','limit','count','offset','set','json','reject','then','error','stack','name','index','map','Team','fieldName','type','key','model','query','keys','filters','intersection','attributes','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','include','rows','show','params','rawAttributes','fields','length','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','UserProfileSection','find','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','destroy','sequelize','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','QueryTypes','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','SELECT','VoiceQueueId','UserVoiceQueue','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','UserSmsQueue','ChatQueueId','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','VoicePrefixId','send','getQueues','isValidChannel','ValidationError','Unknown\x20channel','capitalize','channel','toLowerCase','order','addQueues','findOne','add','Queues','ids','removeQueues','remove','addAgents','isArray','Chat','Mail','Sms','Fax','Openchannel','Whatsapp','Voice','through','defaults','TeamVoiceQueue','findOrCreate','Queue:save','User','findAll','online','voicePause','interface','upsert','format','SIP/%s','penalty','all','UserVoicePrefix','spread','removeAgents','Queue:remove','QueueId','UserVoiceQueueRt','getAgents','nolimit','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api'];(function(_0x8e5735,_0x9c313d){var _0x1aef55=function(_0x4894d2){while(--_0x4894d2){_0x8e5735['push'](_0x8e5735['shift']());}};_0x1aef55(++_0x9c313d);}(_0xd88e,0x120));var _0xed88=function(_0xf73db3,_0x1cfd65){_0xf73db3=_0xf73db3-0x0;var _0x1a579b=_0xd88e[_0xf73db3];return _0x1a579b;};'use strict';var emlformat=require(_0xed88('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xed88('0x1'));var jsonpatch=require(_0xed88('0x2'));var rp=require('request-promise');var moment=require(_0xed88('0x3'));var BPromise=require(_0xed88('0x4'));var Mustache=require(_0xed88('0x5'));var util=require(_0xed88('0x6'));var path=require(_0xed88('0x7'));var sox=require(_0xed88('0x8'));var csv=require(_0xed88('0x9'));var ejs=require(_0xed88('0xa'));var fs=require('fs');var fs_extra=require(_0xed88('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xed88('0xc'));var jsforce=require(_0xed88('0xd'));var deskjs=require(_0xed88('0xe'));var toCsv=require(_0xed88('0x9'));var querystring=require(_0xed88('0xf'));var Papa=require(_0xed88('0x10'));var Redis=require(_0xed88('0x11'));var authService=require(_0xed88('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xed88('0x13'));var hardwareService=require(_0xed88('0x14'));var logger=require('../../config/logger')(_0xed88('0x15'));var utils=require('../../config/utils');var config=require(_0xed88('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xed88('0x17')]=_['defaults'](config[_0xed88('0x17')],{'host':_0xed88('0x18'),'port':0x18eb});var socket=require(_0xed88('0x19'))(new Redis(config[_0xed88('0x17')]));require(_0xed88('0x1a'))[_0xed88('0x1b')](socket);function respondWithStatusCode(_0xe30ddf,_0x4f10b9){_0x4f10b9=_0x4f10b9||0xcc;return function(_0x4a6bd6){if(_0x4a6bd6){return _0xe30ddf[_0xed88('0x1c')](_0x4f10b9);}return _0xe30ddf[_0xed88('0x1d')](_0x4f10b9)[_0xed88('0x1e')]();};}function respondWithResult(_0x326c05,_0x350566){_0x350566=_0x350566||0xc8;return function(_0x5a7758){if(_0x5a7758){return _0x326c05['status'](_0x350566)['json'](_0x5a7758);}};}function respondWithFilteredResult(_0xc3b8fe,_0x3f13e9){return function(_0x44abd6){if(_0x44abd6){var _0x44b630=typeof _0x3f13e9['offset']===_0xed88('0x1f')&&typeof _0x3f13e9[_0xed88('0x20')]===_0xed88('0x1f');var _0x52798b=_0x44abd6[_0xed88('0x21')];var _0x194d00=_0x44b630?0x0:_0x3f13e9[_0xed88('0x22')];var _0x43ef6c=_0x44b630?_0x44abd6[_0xed88('0x21')]:_0x3f13e9[_0xed88('0x22')]+_0x3f13e9[_0xed88('0x20')];var _0x21b0cb;if(_0x43ef6c>=_0x52798b){_0x43ef6c=_0x52798b;_0x21b0cb=0xc8;}else{_0x21b0cb=0xce;}_0xc3b8fe['status'](_0x21b0cb);return _0xc3b8fe[_0xed88('0x23')]('Content-Range',_0x194d00+'-'+_0x43ef6c+'/'+_0x52798b)[_0xed88('0x24')](_0x44abd6);}return null;};}function patchUpdates(_0x1ee26b){return function(_0x1a4507){try{jsonpatch['apply'](_0x1a4507,_0x1ee26b,!![]);}catch(_0x1418d5){return BPromise[_0xed88('0x25')](_0x1418d5);}return _0x1a4507['save']();};}function saveUpdates(_0x49a55a,_0x5194e9){return function(_0x5a9a50){if(_0x5a9a50){return _0x5a9a50['update'](_0x49a55a)[_0xed88('0x26')](function(_0x45900e){return _0x45900e;});}return null;};}function handleEntityNotFound(_0x28459b,_0x2bd899){return function(_0x5877a9){if(!_0x5877a9){_0x28459b[_0xed88('0x1c')](0x194);}return _0x5877a9;};}function handleError(_0x4a1432,_0x5303a3){_0x5303a3=_0x5303a3||0x1f4;return function(_0x348a27){logger[_0xed88('0x27')](_0x348a27[_0xed88('0x28')]);if(_0x348a27[_0xed88('0x29')]){delete _0x348a27[_0xed88('0x29')];}_0x4a1432['status'](_0x5303a3)['send'](_0x348a27);};}exports[_0xed88('0x2a')]=function(_0x483f15,_0x3accb4){var _0x44985={},_0x1d80d9={},_0xdb49ef={'count':0x0,'rows':[]};var _0x3b9bd9=_[_0xed88('0x2b')](db[_0xed88('0x2c')]['rawAttributes'],function(_0x5b1b98){return{'name':_0x5b1b98[_0xed88('0x2d')],'type':_0x5b1b98[_0xed88('0x2e')][_0xed88('0x2f')]};});_0x1d80d9[_0xed88('0x30')]=_[_0xed88('0x2b')](_0x3b9bd9,_0xed88('0x29'));_0x1d80d9[_0xed88('0x31')]=_[_0xed88('0x32')](_0x483f15['query']);_0x1d80d9[_0xed88('0x33')]=_[_0xed88('0x34')](_0x1d80d9['model'],_0x1d80d9[_0xed88('0x31')]);_0x44985[_0xed88('0x35')]=_[_0xed88('0x34')](_0x1d80d9[_0xed88('0x30')],qs['fields'](_0x483f15['query']['fields']));_0x44985[_0xed88('0x35')]=_0x44985[_0xed88('0x35')]['length']?_0x44985['attributes']:_0x1d80d9[_0xed88('0x30')];if(!_0x483f15[_0xed88('0x31')][_0xed88('0x36')]('nolimit')){_0x44985['limit']=qs[_0xed88('0x20')](_0x483f15['query'][_0xed88('0x20')]);_0x44985[_0xed88('0x22')]=qs[_0xed88('0x22')](_0x483f15[_0xed88('0x31')][_0xed88('0x22')]);}_0x44985['order']=qs[_0xed88('0x37')](_0x483f15[_0xed88('0x31')]['sort']);_0x44985[_0xed88('0x38')]=qs['filters'](_[_0xed88('0x39')](_0x483f15[_0xed88('0x31')],_0x1d80d9[_0xed88('0x33')]),_0x3b9bd9);if(_0x483f15[_0xed88('0x31')][_0xed88('0x3a')]){_0x44985[_0xed88('0x38')]=_[_0xed88('0x3b')](_0x44985[_0xed88('0x38')],{'$or':_[_0xed88('0x2b')](_0x3b9bd9,function(_0xbc4fde){if(_0xbc4fde[_0xed88('0x2e')]!=='VIRTUAL'){var _0x48f707={};_0x48f707[_0xbc4fde[_0xed88('0x29')]]={'$like':'%'+_0x483f15['query'][_0xed88('0x3a')]+'%'};return _0x48f707;}})});}_0x44985=_[_0xed88('0x3b')]({},_0x44985,_0x483f15[_0xed88('0x3c')]);var _0x3f117c={'where':_0x44985[_0xed88('0x38')]};return db['Team'][_0xed88('0x21')](_0x3f117c)[_0xed88('0x26')](function(_0x5e061e){_0xdb49ef['count']=_0x5e061e;if(_0x483f15[_0xed88('0x31')][_0xed88('0x3d')]){_0x44985[_0xed88('0x3e')]=[{'all':!![]}];}return db[_0xed88('0x2c')]['findAll'](_0x44985);})[_0xed88('0x26')](function(_0x28de52){_0xdb49ef[_0xed88('0x3f')]=_0x28de52;return _0xdb49ef;})[_0xed88('0x26')](respondWithFilteredResult(_0x3accb4,_0x44985))['catch'](handleError(_0x3accb4,null));};exports[_0xed88('0x40')]=function(_0x2be19a,_0x4d47c2){var _0x148f81={'raw':![],'where':{'id':_0x2be19a[_0xed88('0x41')]['id']}},_0x385c9a={};_0x385c9a['model']=_[_0xed88('0x32')](db[_0xed88('0x2c')][_0xed88('0x42')]);_0x385c9a[_0xed88('0x31')]=_[_0xed88('0x32')](_0x2be19a[_0xed88('0x31')]);_0x385c9a[_0xed88('0x33')]=_[_0xed88('0x34')](_0x385c9a[_0xed88('0x30')],_0x385c9a['query']);_0x148f81[_0xed88('0x35')]=_[_0xed88('0x34')](_0x385c9a[_0xed88('0x30')],qs[_0xed88('0x43')](_0x2be19a['query'][_0xed88('0x43')]));_0x148f81[_0xed88('0x35')]=_0x148f81[_0xed88('0x35')][_0xed88('0x44')]?_0x148f81[_0xed88('0x35')]:_0x385c9a[_0xed88('0x30')];if(_0x2be19a[_0xed88('0x31')][_0xed88('0x3d')]){_0x148f81[_0xed88('0x3e')]=[{'all':!![]}];}_0x148f81=_['merge']({},_0x148f81,_0x2be19a[_0xed88('0x3c')]);return db[_0xed88('0x2c')]['find'](_0x148f81)[_0xed88('0x26')](handleEntityNotFound(_0x4d47c2,null))[_0xed88('0x26')](respondWithResult(_0x4d47c2,null))[_0xed88('0x45')](handleError(_0x4d47c2,null));};exports[_0xed88('0x46')]=function(_0x24b74c,_0x5d27c9){return db['Team'][_0xed88('0x46')](_0x24b74c[_0xed88('0x47')],{})[_0xed88('0x26')](function(_0x30d4bd){var _0x188aeb=_0x24b74c[_0xed88('0x48')][_0xed88('0x49')]({'plain':!![]});if(!_0x188aeb)throw new Error(_0xed88('0x4a'));if(_0x188aeb[_0xed88('0x4b')]===_0xed88('0x48')){var _0x52d433=_0x30d4bd[_0xed88('0x49')]({'plain':!![]});var _0xb2b320=_0xed88('0x4c');return db[_0xed88('0x4d')][_0xed88('0x4e')]({'where':{'name':_0xb2b320,'userProfileId':_0x188aeb['userProfileId']},'raw':!![]})['then'](function(_0x25eb34){if(_0x25eb34&&_0x25eb34[_0xed88('0x4f')]===0x0){return db[_0xed88('0x50')]['create']({'name':_0x52d433['name'],'resourceId':_0x52d433['id'],'type':_0x25eb34[_0xed88('0x29')],'sectionId':_0x25eb34['id']},{})[_0xed88('0x26')](function(){return _0x30d4bd;});}else{return _0x30d4bd;}})['catch'](function(_0x51f697){logger[_0xed88('0x27')](_0xed88('0x51'),_0x51f697);throw _0x51f697;});}return _0x30d4bd;})['then'](respondWithResult(_0x5d27c9,0xc9))[_0xed88('0x45')](handleError(_0x5d27c9,null));};exports[_0xed88('0x52')]=function(_0x4b8b1b,_0x3f00c7){if(_0x4b8b1b[_0xed88('0x47')]['id']){delete _0x4b8b1b['body']['id'];}return db['Team'][_0xed88('0x4e')]({'where':{'id':_0x4b8b1b[_0xed88('0x41')]['id']}})[_0xed88('0x26')](handleEntityNotFound(_0x3f00c7,null))[_0xed88('0x26')](saveUpdates(_0x4b8b1b[_0xed88('0x47')],null))[_0xed88('0x26')](respondWithResult(_0x3f00c7,null))['catch'](handleError(_0x3f00c7,null));};exports[_0xed88('0x53')]=function(_0x4009e0,_0x13f1c6){var _0x4ba7eb=_0x4009e0[_0xed88('0x41')]['id'];var _0x66e41c=[];return db[_0xed88('0x54')][_0xed88('0x55')](function(_0x222fae){var _0x59c1f9=_0xed88('0x56')+_0x4ba7eb;return db['sequelize'][_0xed88('0x31')](_0x59c1f9,{'type':db[_0xed88('0x57')][_0xed88('0x58')]['SELECT'],'raw':!![],'transaction':_0x222fae})['then'](function(_0x446dda){_0x66e41c=_['map'](_0x446dda,function(_0x581e13){return Number(_0x581e13[_0xed88('0x59')]);});})[_0xed88('0x26')](function(){var _0x62e23=_0xed88('0x5a')+_0x4ba7eb;return db['sequelize'][_0xed88('0x31')](_0x62e23,{'type':db[_0xed88('0x57')][_0xed88('0x58')][_0xed88('0x5b')],'raw':!![],'transaction':_0x222fae});})[_0xed88('0x26')](function(_0x2bf2e0){var _0x8f6acd=_['map'](_0x2bf2e0,function(_0x4eb924){return Number(_0x4eb924[_0xed88('0x5c')]);});return db[_0xed88('0x5d')][_0xed88('0x53')]({'where':{'UserId':{'$in':_0x66e41c},'VoiceQueueId':{'$in':_0x8f6acd}},'transaction':_0x222fae});})[_0xed88('0x26')](function(){var _0x5ce551=_0xed88('0x5e')+_0x4ba7eb;return db[_0xed88('0x54')][_0xed88('0x31')](_0x5ce551,{'type':db[_0xed88('0x57')][_0xed88('0x58')][_0xed88('0x5b')],'raw':!![],'transaction':_0x222fae});})[_0xed88('0x26')](function(_0x16577e){var _0x10e228=_[_0xed88('0x2b')](_0x16577e,function(_0x4f51c2){return Number(_0x4f51c2['MailQueueId']);});return db[_0xed88('0x5f')][_0xed88('0x53')]({'where':{'UserId':{'$in':_0x66e41c},'MailQueueId':{'$in':_0x10e228}},'transaction':_0x222fae});})[_0xed88('0x26')](function(){var _0x38c46b=_0xed88('0x60')+_0x4ba7eb;return db[_0xed88('0x54')]['query'](_0x38c46b,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x222fae});})['then'](function(_0x59961e){var _0x319b05=_[_0xed88('0x2b')](_0x59961e,function(_0x5629cc){return Number(_0x5629cc['SmsQueueId']);});return db[_0xed88('0x61')]['destroy']({'where':{'UserId':{'$in':_0x66e41c},'SmsQueueId':{'$in':_0x319b05}},'transaction':_0x222fae});})[_0xed88('0x26')](function(){var _0xc2c93d='SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20'+_0x4ba7eb;return db[_0xed88('0x54')][_0xed88('0x31')](_0xc2c93d,{'type':db['Sequelize'][_0xed88('0x58')][_0xed88('0x5b')],'raw':!![],'transaction':_0x222fae});})['then'](function(_0x84e646){var _0x4dab46=_[_0xed88('0x2b')](_0x84e646,function(_0xbc8140){return Number(_0xbc8140[_0xed88('0x62')]);});return db[_0xed88('0x63')][_0xed88('0x53')]({'where':{'UserId':{'$in':_0x66e41c},'ChatQueueId':{'$in':_0x4dab46}},'transaction':_0x222fae});})[_0xed88('0x26')](function(){var _0x334f05=_0xed88('0x64')+_0x4ba7eb;return db['sequelize'][_0xed88('0x31')](_0x334f05,{'type':db[_0xed88('0x57')]['QueryTypes'][_0xed88('0x5b')],'raw':!![],'transaction':_0x222fae});})[_0xed88('0x26')](function(_0x1e6616){var _0x25af6a=_[_0xed88('0x2b')](_0x1e6616,function(_0x56d255){return Number(_0x56d255['FaxQueueId']);});return db['UserFaxQueue']['destroy']({'where':{'UserId':{'$in':_0x66e41c},'FaxQueueId':{'$in':_0x25af6a}},'transaction':_0x222fae});})[_0xed88('0x26')](function(){var _0x351994='SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20'+_0x4ba7eb;return db[_0xed88('0x54')][_0xed88('0x31')](_0x351994,{'type':db['Sequelize'][_0xed88('0x58')][_0xed88('0x5b')],'raw':!![],'transaction':_0x222fae});})[_0xed88('0x26')](function(_0x5235e4){var _0xc9040=_[_0xed88('0x2b')](_0x5235e4,function(_0x5156be){return Number(_0x5156be['OpenchannelQueueId']);});return db[_0xed88('0x65')][_0xed88('0x53')]({'where':{'UserId':{'$in':_0x66e41c},'OpenchannelQueueId':{'$in':_0xc9040}},'transaction':_0x222fae});})[_0xed88('0x26')](function(){var _0x5084b2=_0xed88('0x66')+_0x4ba7eb;return db[_0xed88('0x54')][_0xed88('0x31')](_0x5084b2,{'type':db[_0xed88('0x57')][_0xed88('0x58')][_0xed88('0x5b')],'raw':!![],'transaction':_0x222fae});})[_0xed88('0x26')](function(_0x2ce93a){var _0x5c3dd1=_[_0xed88('0x2b')](_0x2ce93a,function(_0xcb934f){return Number(_0xcb934f[_0xed88('0x67')]);});return db[_0xed88('0x68')][_0xed88('0x53')]({'where':{'UserId':{'$in':_0x66e41c},'WhatsappQueueId':{'$in':_0x5c3dd1}},'transaction':_0x222fae});})['then'](function(){return db[_0xed88('0x69')][_0xed88('0x4e')]({'where':{'TeamId':_0x4ba7eb}});})[_0xed88('0x26')](function(_0x5b6cca){if(_0x5b6cca===null){return;}return db['UserVoicePrefix'][_0xed88('0x53')]({'where':{'UserId':{'$in':_0x66e41c},'VoicePrefixId':_0x5b6cca[_0xed88('0x6a')]},'transaction':_0x222fae});})['then'](function(){return db[_0xed88('0x2c')][_0xed88('0x53')]({'where':{'id':_0x4ba7eb},'cascade':!![],'transaction':_0x222fae});})[_0xed88('0x26')](function(_0x47a74b){if(_0x47a74b===0x0){_0x13f1c6['sendStatus'](0x194);}else{return db[_0xed88('0x50')][_0xed88('0x53')]({'where':{'type':_0xed88('0x4c'),'resourceId':_0x4ba7eb},'cascade':!![],'transaction':_0x222fae})[_0xed88('0x26')](function(){_0x13f1c6[_0xed88('0x1d')](0xcc)['end']();});}})[_0xed88('0x45')](function(_0x28bea3){_0x13f1c6['status'](0x1f4)[_0xed88('0x6b')](_0x28bea3);});});};exports[_0xed88('0x6c')]=function(_0x2e6706,_0x9dded2,_0xce258a){return db[_0xed88('0x2c')]['findOne']({'where':{'id':_0x2e6706[_0xed88('0x41')]['id']}})[_0xed88('0x26')](handleEntityNotFound(_0x9dded2,null))['then'](function(_0x21d1ee){if(!_0x2e6706['query']['channel']||!utils[_0xed88('0x6d')](_0x2e6706['query']['channel'])){throw new db[(_0xed88('0x57'))][(_0xed88('0x6e'))](_0xed88('0x6f'));}var _0x524350={};var _0x39b160={};_0x39b160[_0xed88('0x30')]=_[_0xed88('0x32')](db[_[_0xed88('0x70')](_0x2e6706[_0xed88('0x31')][_0xed88('0x71')][_0xed88('0x72')]())+'Queue'][_0xed88('0x42')]);_0x39b160[_0xed88('0x31')]=_[_0xed88('0x32')](_0x2e6706[_0xed88('0x31')]);_0x39b160[_0xed88('0x33')]=_[_0xed88('0x34')](_0x39b160['model'],_0x39b160[_0xed88('0x31')]);_0x524350[_0xed88('0x35')]=_[_0xed88('0x34')](_0x39b160[_0xed88('0x30')],qs[_0xed88('0x43')](_0x2e6706[_0xed88('0x31')][_0xed88('0x43')]));_0x524350[_0xed88('0x35')]=_0x524350[_0xed88('0x35')]['length']?_0x524350[_0xed88('0x35')]:_0x39b160[_0xed88('0x30')];_0x524350[_0xed88('0x20')]=qs['limit'](_0x2e6706[_0xed88('0x31')][_0xed88('0x20')]);_0x524350[_0xed88('0x22')]=qs[_0xed88('0x22')](_0x2e6706['query']['offset']);_0x524350[_0xed88('0x73')]=qs[_0xed88('0x37')](_0x2e6706[_0xed88('0x31')][_0xed88('0x37')]);_0x524350[_0xed88('0x38')]=qs[_0xed88('0x33')](_['pick'](_0x2e6706[_0xed88('0x31')],_0x39b160[_0xed88('0x33')]));_0x524350=_[_0xed88('0x3b')]({},_0x524350,_0x2e6706[_0xed88('0x3c')]);return _0x21d1ee[_0xed88('0x49')+_['capitalize'](_0x2e6706[_0xed88('0x31')]['channel'][_0xed88('0x72')]())+'Queues'](_0x524350);})[_0xed88('0x26')](respondWithResult(_0x9dded2,null))[_0xed88('0x45')](handleError(_0x9dded2,null));};exports[_0xed88('0x74')]=function(_0x1441fc,_0x4d92a4,_0x83d4d1){return db[_0xed88('0x2c')][_0xed88('0x75')]({'where':{'id':_0x1441fc[_0xed88('0x41')]['id']}})[_0xed88('0x26')](function(_0x531e12){if(_0x531e12){if(!_0x1441fc[_0xed88('0x47')][_0xed88('0x71')]||!utils[_0xed88('0x6d')](_0x1441fc[_0xed88('0x47')]['channel'])){throw new db['Sequelize'][(_0xed88('0x6e'))]('Unknown\x20channel');}return _0x531e12[_0xed88('0x76')+_['capitalize'](_0x1441fc[_0xed88('0x47')][_0xed88('0x71')][_0xed88('0x72')]())+_0xed88('0x77')](_0x1441fc[_0xed88('0x47')][_0xed88('0x78')]);}return null;})[_0xed88('0x26')](handleEntityNotFound(_0x4d92a4,null))[_0xed88('0x26')](respondWithStatusCode(_0x4d92a4,null))['catch'](handleError(_0x4d92a4,null));};exports[_0xed88('0x79')]=function(_0x5126fd,_0x58cf24,_0x4290ab){return db['Team'][_0xed88('0x75')]({'where':{'id':_0x5126fd['params']['id']}})[_0xed88('0x26')](function(_0x5f3bcb){if(_0x5f3bcb){if(!_0x5126fd[_0xed88('0x31')][_0xed88('0x71')]||!utils[_0xed88('0x6d')](_0x5126fd[_0xed88('0x31')][_0xed88('0x71')])){throw new db['Sequelize'][(_0xed88('0x6e'))](_0xed88('0x6f'));}return _0x5f3bcb[_0xed88('0x7a')+_[_0xed88('0x70')](_0x5126fd[_0xed88('0x31')][_0xed88('0x71')][_0xed88('0x72')]())+_0xed88('0x77')](_0x5126fd[_0xed88('0x31')][_0xed88('0x78')]);}return null;})[_0xed88('0x26')](handleEntityNotFound(_0x58cf24,null))[_0xed88('0x26')](respondWithStatusCode(_0x58cf24,null))['catch'](handleError(_0x58cf24,null));};exports[_0xed88('0x7b')]=function(_0x53e5d2,_0x391c2c){var _0x3620ba=_[_0xed88('0x7c')](_0x53e5d2[_0xed88('0x47')][_0xed88('0x78')])?_0x53e5d2[_0xed88('0x47')]['ids']:[_0x53e5d2[_0xed88('0x47')][_0xed88('0x78')]];var _0x17ff5d=_0x53e5d2[_0xed88('0x41')]['id'];return db[_0xed88('0x2c')][_0xed88('0x4e')]({'where':{'id':_0x17ff5d}})[_0xed88('0x26')](handleEntityNotFound(_0x391c2c,null))[_0xed88('0x26')](function(_0x579f73){if(_0x579f73){var _0x25c0c3=['Voice',_0xed88('0x7d'),_0xed88('0x7e'),_0xed88('0x7f'),_0xed88('0x80'),_0xed88('0x81'),_0xed88('0x82')];return db[_0xed88('0x54')][_0xed88('0x55')](function(_0x873b15){var _0x3125ed=_[_0xed88('0x2b')](_0x25c0c3,function(_0x1b4b2f){var _0x25f5d8={'attributes':['id',_0xed88('0x29')]};if(_0x1b4b2f===_0xed88('0x83')){_0x25f5d8[_0xed88('0x84')]={'attributes':['penalty']};}return _0x579f73[_0xed88('0x49')+_0x1b4b2f+_0xed88('0x77')](_0x25f5d8)[_0xed88('0x26')](function(_0x83a138){var _0x57a74f=_['map'](_0x83a138,function(_0x3f83f7){var _0x23356b=_['map'](_0x3620ba,function(_0x37dc20){var _0x328d64={'where':{'UserId':_0x37dc20,[_0x1b4b2f+'QueueId']:_0x3f83f7['id']},'transaction':_0x873b15};if(_0x1b4b2f===_0xed88('0x83')){_0x328d64[_0xed88('0x85')]={'penalty':_0x3f83f7[_0xed88('0x86')]['penalty']};}return db['User'+_0x1b4b2f+'Queue'][_0xed88('0x87')](_0x328d64)[_0xed88('0x26')](function(){socket['emit']('user'+_0x1b4b2f+_0xed88('0x88'),{'UserId':_0x37dc20,[_0x1b4b2f+'QueueId']:_0x3f83f7['id']});if(_0x1b4b2f!==_0xed88('0x83')){return;}return db[_0xed88('0x89')][_0xed88('0x8a')]({'where':{'id':_0x3620ba,'online':0x1},'attributes':['id',_0xed88('0x29'),_0xed88('0x8b'),_0xed88('0x8c'),_0xed88('0x8d')],'raw':!![]})['then'](function(_0x242291){var _0x3c5d43=_[_0xed88('0x2b')](_0x242291,function(_0xfe875c){return db['UserVoiceQueueRt'][_0xed88('0x8e')]({'membername':_0xfe875c[_0xed88('0x29')],'UserId':_0xfe875c['id'],'queue_name':_0x3f83f7['name'],'VoiceQueueId':_0x3f83f7['id'],'interface':_['isNil'](_0xfe875c[_0xed88('0x8d')])?util[_0xed88('0x8f')](_0xed88('0x90'),_0xfe875c['name']):_0xfe875c[_0xed88('0x8d')],'paused':_0xfe875c['voicePause']||![],'penalty':_0x3f83f7[_0xed88('0x86')][_0xed88('0x91')]},{'transaction':_0x873b15});});return Promise['all'](_0x3c5d43);});});});return Promise[_0xed88('0x92')](_0x23356b);});return Promise['all'](_0x57a74f);})[_0xed88('0x26')](function(){return db[_0xed88('0x69')][_0xed88('0x75')]({'where':{'teamId':_0x17ff5d}})[_0xed88('0x26')](function(_0x5769d1){if(_0x5769d1){var _0x15b6e6=_[_0xed88('0x2b')](_0x3620ba,function(_0x199432){db[_0xed88('0x93')][_0xed88('0x8e')]({'UserId':_0x199432,'VoicePrefixId':_0x5769d1[_0xed88('0x6a')]});});return Promise[_0xed88('0x92')](_0x15b6e6);}});});});return Promise[_0xed88('0x92')](_0x3125ed)[_0xed88('0x26')](function(){return _0x579f73[_0xed88('0x7b')](_0x3620ba,{'transaction':_0x873b15})[_0xed88('0x94')](function(_0x213e7f){return _0x213e7f;});});});}})[_0xed88('0x26')](respondWithResult(_0x391c2c,null))[_0xed88('0x45')](handleError(_0x391c2c,null));};exports['removeAgents']=function(_0x3f81e1,_0x3b8d38){var _0x4b50a4=_[_0xed88('0x7c')](_0x3f81e1[_0xed88('0x31')]['ids'])?_0x3f81e1[_0xed88('0x31')][_0xed88('0x78')]:[_0x3f81e1['query']['ids']];var _0x5c2032=_0x3f81e1[_0xed88('0x41')]['id'];return db[_0xed88('0x2c')]['find']({'where':{'id':_0x5c2032}})['then'](handleEntityNotFound(_0x3b8d38,null))[_0xed88('0x26')](function(_0x15a8ff){if(_0x15a8ff){var _0x1c39b5=[_0xed88('0x83'),_0xed88('0x7d'),_0xed88('0x7e'),'Sms',_0xed88('0x80'),_0xed88('0x81'),_0xed88('0x82')];return db[_0xed88('0x54')][_0xed88('0x55')](function(_0x4711cc){var _0x24627f=_[_0xed88('0x2b')](_0x1c39b5,function(_0x2fe38f){var _0x1436f9={'attributes':['id',_0xed88('0x29')]};return _0x15a8ff[_0xed88('0x49')+_0x2fe38f+_0xed88('0x77')](_0x1436f9)[_0xed88('0x26')](function(_0x3dad95){var _0x46999d=_[_0xed88('0x2b')](_0x3dad95,function(_0x18207e){return _0x18207e[_0xed88('0x95')](_0x4b50a4,{'transaction':_0x4711cc})[_0xed88('0x26')](function(){var _0x9d2117=_[_0xed88('0x2b')](_0x4b50a4,function(_0x34cee2){socket['emit'](_0xed88('0x48')+_0x2fe38f+_0xed88('0x96'),{'UserId':Number(_0x34cee2),[_0x2fe38f+_0xed88('0x97')]:_0x18207e['id']});if(_0x2fe38f!==_0xed88('0x83')){return;}return db[_0xed88('0x98')]['destroy']({'where':{'VoiceQueueId':_0x18207e['id'],'UserId':_0x34cee2},'transaction':_0x4711cc});});return Promise[_0xed88('0x92')](_0x9d2117);});});return Promise[_0xed88('0x92')](_0x46999d);});});return Promise['all'](_0x24627f)['then'](function(){return _0x15a8ff[_0xed88('0x95')](_0x4b50a4,{'transaction':_0x4711cc});})[_0xed88('0x26')](function(){return db[_0xed88('0x69')][_0xed88('0x75')]({'where':{'teamId':_0x5c2032}})[_0xed88('0x26')](function(_0x456297){if(_0x456297){var _0x4cd077=_[_0xed88('0x2b')](_0x4b50a4,function(_0x1d1bd2){db[_0xed88('0x93')][_0xed88('0x53')]({'where':{'UserId':_0x1d1bd2,'VoicePrefixId':_0x456297[_0xed88('0x6a')]}});});return Promise[_0xed88('0x92')](_0x4cd077);}});});});}})[_0xed88('0x26')](respondWithStatusCode(_0x3b8d38,null))[_0xed88('0x45')](handleError(_0x3b8d38,null));};exports[_0xed88('0x99')]=function(_0xb676c,_0x114472,_0x1b8cf0){var _0x8d4686={};var _0x258e40={};var _0xaef18f;var _0x25a04a;return db[_0xed88('0x2c')][_0xed88('0x75')]({'where':{'id':_0xb676c['params']['id']}})[_0xed88('0x26')](handleEntityNotFound(_0x114472,null))[_0xed88('0x26')](function(_0x457ca4){if(_0x457ca4){_0xaef18f=_0x457ca4;_0x258e40[_0xed88('0x30')]=_['keys'](db[_0xed88('0x89')][_0xed88('0x42')]);_0x258e40[_0xed88('0x31')]=_['keys'](_0xb676c[_0xed88('0x31')]);_0x258e40[_0xed88('0x33')]=_['intersection'](_0x258e40['model'],_0x258e40[_0xed88('0x31')]);_0x8d4686[_0xed88('0x35')]=_[_0xed88('0x34')](_0x258e40['model'],qs['fields'](_0xb676c[_0xed88('0x31')]['fields']));_0x8d4686[_0xed88('0x35')]=_0x8d4686[_0xed88('0x35')][_0xed88('0x44')]?_0x8d4686[_0xed88('0x35')]:_0x258e40[_0xed88('0x30')];_0x8d4686[_0xed88('0x73')]=qs[_0xed88('0x37')](_0xb676c[_0xed88('0x31')][_0xed88('0x37')]);_0x8d4686[_0xed88('0x38')]=qs[_0xed88('0x33')](_[_0xed88('0x39')](_0xb676c[_0xed88('0x31')],_0x258e40[_0xed88('0x33')]));if(_0xb676c[_0xed88('0x31')][_0xed88('0x3a')]){_0x8d4686[_0xed88('0x38')]=_[_0xed88('0x3b')](_0x8d4686[_0xed88('0x38')],{'$or':_[_0xed88('0x2b')](_0x8d4686['attributes'],function(_0x39d340){var _0x1c2f7a={};_0x1c2f7a[_0x39d340]={'$like':'%'+_0xb676c[_0xed88('0x31')][_0xed88('0x3a')]+'%'};return _0x1c2f7a;})});}_0x8d4686=_[_0xed88('0x3b')]({},_0x8d4686,_0xb676c['options']);return _0xaef18f[_0xed88('0x99')](_0x8d4686);}})[_0xed88('0x26')](function(_0x51313f){if(_0x51313f){_0x25a04a=_0x51313f[_0xed88('0x44')];if(!_0xb676c[_0xed88('0x31')]['hasOwnProperty'](_0xed88('0x9a'))){_0x8d4686[_0xed88('0x20')]=qs[_0xed88('0x20')](_0xb676c[_0xed88('0x31')]['limit']);_0x8d4686[_0xed88('0x22')]=qs[_0xed88('0x22')](_0xb676c[_0xed88('0x31')]['offset']);}return _0xaef18f[_0xed88('0x99')](_0x8d4686);}})[_0xed88('0x26')](function(_0x47e194){if(_0x47e194){return _0x47e194?{'count':_0x25a04a,'rows':_0x47e194}:null;}})['then'](respondWithResult(_0x114472,null))[_0xed88('0x45')](handleError(_0x114472,null));};
\ No newline at end of file
+var _0x95ce=['WhatsappQueueId','UserWhatsappQueue','UserVoicePrefix','Teams','end','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queue','Queues','addQueues','findOne','removeQueues','remove','addAgents','isArray','ids','Voice','Chat','Sms','Fax','Openchannel','Whatsapp','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','emit','voicePause','interface','upsert','isNil','format','SIP/%s','all','TeamVoicePrefix','VoicePrefixId','spread','Mail','Queue:remove','UserVoiceQueueRt','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./team.socket','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','reject','then','stack','name','send','index','map','Team','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','filter','where','merge','VIRTUAL','includeAll','findAll','catch','show','params','include','options','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','sequelize','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','Sequelize','QueryTypes','SELECT','UserId','VoiceQueueId','UserVoiceQueue','UserMailQueue','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','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'];(function(_0x30f724,_0x198cde){var _0x519e9f=function(_0x49b12f){while(--_0x49b12f){_0x30f724['push'](_0x30f724['shift']());}};_0x519e9f(++_0x198cde);}(_0x95ce,0x1f0));var _0xe95c=function(_0x463534,_0x1e2cc2){_0x463534=_0x463534-0x0;var _0x2c9b81=_0x95ce[_0x463534];return _0x2c9b81;};'use strict';var emlformat=require(_0xe95c('0x0'));var rimraf=require(_0xe95c('0x1'));var zipdir=require(_0xe95c('0x2'));var jsonpatch=require(_0xe95c('0x3'));var rp=require(_0xe95c('0x4'));var moment=require(_0xe95c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xe95c('0x6'));var util=require(_0xe95c('0x7'));var path=require(_0xe95c('0x8'));var sox=require(_0xe95c('0x9'));var csv=require(_0xe95c('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe95c('0xb'));var _=require(_0xe95c('0xc'));var squel=require(_0xe95c('0xd'));var crypto=require(_0xe95c('0xe'));var jsforce=require(_0xe95c('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xe95c('0xa'));var querystring=require(_0xe95c('0x10'));var Papa=require('papaparse');var Redis=require(_0xe95c('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xe95c('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe95c('0x13'));var logger=require(_0xe95c('0x14'))(_0xe95c('0x15'));var utils=require('../../config/utils');var config=require(_0xe95c('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xe95c('0x17')]=_[_0xe95c('0x18')](config[_0xe95c('0x17')],{'host':_0xe95c('0x19'),'port':0x18eb});var socket=require(_0xe95c('0x1a'))(new Redis(config[_0xe95c('0x17')]));require(_0xe95c('0x1b'))['register'](socket);function respondWithStatusCode(_0x25a6f8,_0x562d84){_0x562d84=_0x562d84||0xcc;return function(_0xe14bc1){if(_0xe14bc1){return _0x25a6f8[_0xe95c('0x1c')](_0x562d84);}return _0x25a6f8[_0xe95c('0x1d')](_0x562d84)['end']();};}function respondWithResult(_0x4ad186,_0x52e469){_0x52e469=_0x52e469||0xc8;return function(_0x53524a){if(_0x53524a){return _0x4ad186[_0xe95c('0x1d')](_0x52e469)[_0xe95c('0x1e')](_0x53524a);}};}function respondWithFilteredResult(_0x170c65,_0xd5d4db){return function(_0x2e4202){if(_0x2e4202){var _0x17a91c=typeof _0xd5d4db[_0xe95c('0x1f')]==='undefined'&&typeof _0xd5d4db[_0xe95c('0x20')]===_0xe95c('0x21');var _0x4c1837=_0x2e4202[_0xe95c('0x22')];var _0x35230c=_0x17a91c?0x0:_0xd5d4db[_0xe95c('0x1f')];var _0x439c29=_0x17a91c?_0x2e4202[_0xe95c('0x22')]:_0xd5d4db[_0xe95c('0x1f')]+_0xd5d4db[_0xe95c('0x20')];var _0xafebe0;if(_0x439c29>=_0x4c1837){_0x439c29=_0x4c1837;_0xafebe0=0xc8;}else{_0xafebe0=0xce;}_0x170c65[_0xe95c('0x1d')](_0xafebe0);return _0x170c65['set'](_0xe95c('0x23'),_0x35230c+'-'+_0x439c29+'/'+_0x4c1837)[_0xe95c('0x1e')](_0x2e4202);}return null;};}function patchUpdates(_0x2d157d){return function(_0x1aa1a1){try{jsonpatch[_0xe95c('0x24')](_0x1aa1a1,_0x2d157d,!![]);}catch(_0x41dafd){return BPromise[_0xe95c('0x25')](_0x41dafd);}return _0x1aa1a1['save']();};}function saveUpdates(_0x20b853,_0x14233b){return function(_0x24d5c7){if(_0x24d5c7){return _0x24d5c7['update'](_0x20b853)[_0xe95c('0x26')](function(_0xb5fac4){return _0xb5fac4;});}return null;};}function handleEntityNotFound(_0x36fd0a,_0x859d89){return function(_0x5a0d6a){if(!_0x5a0d6a){_0x36fd0a[_0xe95c('0x1c')](0x194);}return _0x5a0d6a;};}function handleError(_0x549d84,_0x5bd2b7){_0x5bd2b7=_0x5bd2b7||0x1f4;return function(_0x4a4b5c){logger['error'](_0x4a4b5c[_0xe95c('0x27')]);if(_0x4a4b5c[_0xe95c('0x28')]){delete _0x4a4b5c[_0xe95c('0x28')];}_0x549d84[_0xe95c('0x1d')](_0x5bd2b7)[_0xe95c('0x29')](_0x4a4b5c);};}exports[_0xe95c('0x2a')]=function(_0x2fbfca,_0x467ed9){var _0x5b4e67={},_0x50c6dd={},_0x3053f1={'count':0x0,'rows':[]};var _0x4de1a2=_[_0xe95c('0x2b')](db[_0xe95c('0x2c')][_0xe95c('0x2d')],function(_0x1d3823){return{'name':_0x1d3823['fieldName'],'type':_0x1d3823[_0xe95c('0x2e')][_0xe95c('0x2f')]};});_0x50c6dd[_0xe95c('0x30')]=_[_0xe95c('0x2b')](_0x4de1a2,_0xe95c('0x28'));_0x50c6dd[_0xe95c('0x31')]=_[_0xe95c('0x32')](_0x2fbfca[_0xe95c('0x31')]);_0x50c6dd['filters']=_[_0xe95c('0x33')](_0x50c6dd[_0xe95c('0x30')],_0x50c6dd[_0xe95c('0x31')]);_0x5b4e67[_0xe95c('0x34')]=_[_0xe95c('0x33')](_0x50c6dd['model'],qs[_0xe95c('0x35')](_0x2fbfca[_0xe95c('0x31')][_0xe95c('0x35')]));_0x5b4e67[_0xe95c('0x34')]=_0x5b4e67[_0xe95c('0x34')][_0xe95c('0x36')]?_0x5b4e67['attributes']:_0x50c6dd[_0xe95c('0x30')];if(!_0x2fbfca['query'][_0xe95c('0x37')](_0xe95c('0x38'))){_0x5b4e67['limit']=qs['limit'](_0x2fbfca[_0xe95c('0x31')][_0xe95c('0x20')]);_0x5b4e67['offset']=qs[_0xe95c('0x1f')](_0x2fbfca[_0xe95c('0x31')][_0xe95c('0x1f')]);}_0x5b4e67[_0xe95c('0x39')]=qs[_0xe95c('0x3a')](_0x2fbfca[_0xe95c('0x31')]['sort']);_0x5b4e67['where']=qs[_0xe95c('0x3b')](_['pick'](_0x2fbfca['query'],_0x50c6dd[_0xe95c('0x3b')]),_0x4de1a2);if(_0x2fbfca[_0xe95c('0x31')][_0xe95c('0x3c')]){_0x5b4e67[_0xe95c('0x3d')]=_[_0xe95c('0x3e')](_0x5b4e67[_0xe95c('0x3d')],{'$or':_[_0xe95c('0x2b')](_0x4de1a2,function(_0x1ac9a4){if(_0x1ac9a4['type']!==_0xe95c('0x3f')){var _0x139124={};_0x139124[_0x1ac9a4[_0xe95c('0x28')]]={'$like':'%'+_0x2fbfca[_0xe95c('0x31')][_0xe95c('0x3c')]+'%'};return _0x139124;}})});}_0x5b4e67=_[_0xe95c('0x3e')]({},_0x5b4e67,_0x2fbfca['options']);var _0x50fab7={'where':_0x5b4e67[_0xe95c('0x3d')]};return db[_0xe95c('0x2c')][_0xe95c('0x22')](_0x50fab7)[_0xe95c('0x26')](function(_0x2d375b){_0x3053f1['count']=_0x2d375b;if(_0x2fbfca[_0xe95c('0x31')][_0xe95c('0x40')]){_0x5b4e67['include']=[{'all':!![]}];}return db['Team'][_0xe95c('0x41')](_0x5b4e67);})[_0xe95c('0x26')](function(_0x47a268){_0x3053f1['rows']=_0x47a268;return _0x3053f1;})[_0xe95c('0x26')](respondWithFilteredResult(_0x467ed9,_0x5b4e67))[_0xe95c('0x42')](handleError(_0x467ed9,null));};exports[_0xe95c('0x43')]=function(_0x2b0ef9,_0x2c449a){var _0x535091={'raw':![],'where':{'id':_0x2b0ef9[_0xe95c('0x44')]['id']}},_0x2520cf={};_0x2520cf['model']=_[_0xe95c('0x32')](db['Team'][_0xe95c('0x2d')]);_0x2520cf[_0xe95c('0x31')]=_['keys'](_0x2b0ef9[_0xe95c('0x31')]);_0x2520cf['filters']=_[_0xe95c('0x33')](_0x2520cf['model'],_0x2520cf[_0xe95c('0x31')]);_0x535091[_0xe95c('0x34')]=_[_0xe95c('0x33')](_0x2520cf[_0xe95c('0x30')],qs[_0xe95c('0x35')](_0x2b0ef9[_0xe95c('0x31')][_0xe95c('0x35')]));_0x535091['attributes']=_0x535091[_0xe95c('0x34')]['length']?_0x535091[_0xe95c('0x34')]:_0x2520cf[_0xe95c('0x30')];if(_0x2b0ef9['query']['includeAll']){_0x535091[_0xe95c('0x45')]=[{'all':!![]}];}_0x535091=_[_0xe95c('0x3e')]({},_0x535091,_0x2b0ef9[_0xe95c('0x46')]);return db['Team'][_0xe95c('0x47')](_0x535091)[_0xe95c('0x26')](handleEntityNotFound(_0x2c449a,null))['then'](respondWithResult(_0x2c449a,null))[_0xe95c('0x42')](handleError(_0x2c449a,null));};exports[_0xe95c('0x48')]=function(_0x1f6419,_0x2a4ca4){return db['Team'][_0xe95c('0x48')](_0x1f6419[_0xe95c('0x49')],{})[_0xe95c('0x26')](function(_0x580e44){var _0x5e9819=_0x1f6419[_0xe95c('0x4a')][_0xe95c('0x4b')]({'plain':!![]});if(!_0x5e9819)throw new Error(_0xe95c('0x4c'));if(_0x5e9819[_0xe95c('0x4d')]===_0xe95c('0x4a')){var _0x5c20fc=_0x580e44[_0xe95c('0x4b')]({'plain':!![]});var _0x274783='Teams';return db[_0xe95c('0x4e')][_0xe95c('0x47')]({'where':{'name':_0x274783,'userProfileId':_0x5e9819[_0xe95c('0x4f')]},'raw':!![]})['then'](function(_0x46f1e5){if(_0x46f1e5&&_0x46f1e5[_0xe95c('0x50')]===0x0){return db[_0xe95c('0x51')]['create']({'name':_0x5c20fc[_0xe95c('0x28')],'resourceId':_0x5c20fc['id'],'type':_0x46f1e5['name'],'sectionId':_0x46f1e5['id']},{})['then'](function(){return _0x580e44;});}else{return _0x580e44;}})[_0xe95c('0x42')](function(_0x108b64){logger['error'](_0xe95c('0x52'),_0x108b64);throw _0x108b64;});}return _0x580e44;})[_0xe95c('0x26')](respondWithResult(_0x2a4ca4,0xc9))[_0xe95c('0x42')](handleError(_0x2a4ca4,null));};exports['update']=function(_0x79bee7,_0x1f1c6b){if(_0x79bee7[_0xe95c('0x49')]['id']){delete _0x79bee7[_0xe95c('0x49')]['id'];}return db[_0xe95c('0x2c')]['find']({'where':{'id':_0x79bee7['params']['id']}})[_0xe95c('0x26')](handleEntityNotFound(_0x1f1c6b,null))['then'](saveUpdates(_0x79bee7[_0xe95c('0x49')],null))[_0xe95c('0x26')](respondWithResult(_0x1f1c6b,null))[_0xe95c('0x42')](handleError(_0x1f1c6b,null));};exports[_0xe95c('0x53')]=function(_0x55a52c,_0x1341fc){var _0x376e32=_0x55a52c['params']['id'];var _0x1afa1d=[];return db[_0xe95c('0x54')][_0xe95c('0x55')](function(_0x503ad6){var _0x5a5a89=_0xe95c('0x56')+_0x376e32;return db[_0xe95c('0x54')][_0xe95c('0x31')](_0x5a5a89,{'type':db[_0xe95c('0x57')][_0xe95c('0x58')][_0xe95c('0x59')],'raw':!![],'transaction':_0x503ad6})['then'](function(_0x19634e){_0x1afa1d=_['map'](_0x19634e,function(_0x2da719){return Number(_0x2da719[_0xe95c('0x5a')]);});})['then'](function(){var _0x317cb2='SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20'+_0x376e32;return db[_0xe95c('0x54')][_0xe95c('0x31')](_0x317cb2,{'type':db[_0xe95c('0x57')]['QueryTypes'][_0xe95c('0x59')],'raw':!![],'transaction':_0x503ad6});})['then'](function(_0x35dec3){var _0x276132=_[_0xe95c('0x2b')](_0x35dec3,function(_0x137005){return Number(_0x137005[_0xe95c('0x5b')]);});return db[_0xe95c('0x5c')][_0xe95c('0x53')]({'where':{'UserId':{'$in':_0x1afa1d},'VoiceQueueId':{'$in':_0x276132}},'transaction':_0x503ad6});})['then'](function(){var _0xcad52f='SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20'+_0x376e32;return db[_0xe95c('0x54')][_0xe95c('0x31')](_0xcad52f,{'type':db[_0xe95c('0x57')][_0xe95c('0x58')][_0xe95c('0x59')],'raw':!![],'transaction':_0x503ad6});})[_0xe95c('0x26')](function(_0x16de04){var _0x540448=_[_0xe95c('0x2b')](_0x16de04,function(_0x41fbad){return Number(_0x41fbad['MailQueueId']);});return db[_0xe95c('0x5d')][_0xe95c('0x53')]({'where':{'UserId':{'$in':_0x1afa1d},'MailQueueId':{'$in':_0x540448}},'transaction':_0x503ad6});})['then'](function(){var _0x3a6768='SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20'+_0x376e32;return db['sequelize'][_0xe95c('0x31')](_0x3a6768,{'type':db[_0xe95c('0x57')][_0xe95c('0x58')][_0xe95c('0x59')],'raw':!![],'transaction':_0x503ad6});})['then'](function(_0x38d86b){var _0x567143=_['map'](_0x38d86b,function(_0x1caa2e){return Number(_0x1caa2e['SmsQueueId']);});return db[_0xe95c('0x5e')][_0xe95c('0x53')]({'where':{'UserId':{'$in':_0x1afa1d},'SmsQueueId':{'$in':_0x567143}},'transaction':_0x503ad6});})['then'](function(){var _0x28c5eb=_0xe95c('0x5f')+_0x376e32;return db[_0xe95c('0x54')]['query'](_0x28c5eb,{'type':db['Sequelize'][_0xe95c('0x58')]['SELECT'],'raw':!![],'transaction':_0x503ad6});})['then'](function(_0x4ca439){var _0x3dfbdd=_[_0xe95c('0x2b')](_0x4ca439,function(_0x5ca417){return Number(_0x5ca417[_0xe95c('0x60')]);});return db[_0xe95c('0x61')][_0xe95c('0x53')]({'where':{'UserId':{'$in':_0x1afa1d},'ChatQueueId':{'$in':_0x3dfbdd}},'transaction':_0x503ad6});})[_0xe95c('0x26')](function(){var _0x585fed=_0xe95c('0x62')+_0x376e32;return db['sequelize'][_0xe95c('0x31')](_0x585fed,{'type':db[_0xe95c('0x57')][_0xe95c('0x58')][_0xe95c('0x59')],'raw':!![],'transaction':_0x503ad6});})[_0xe95c('0x26')](function(_0x446d08){var _0xe508b6=_[_0xe95c('0x2b')](_0x446d08,function(_0x1c8d03){return Number(_0x1c8d03[_0xe95c('0x63')]);});return db[_0xe95c('0x64')][_0xe95c('0x53')]({'where':{'UserId':{'$in':_0x1afa1d},'FaxQueueId':{'$in':_0xe508b6}},'transaction':_0x503ad6});})[_0xe95c('0x26')](function(){var _0x3f2ff4=_0xe95c('0x65')+_0x376e32;return db['sequelize'][_0xe95c('0x31')](_0x3f2ff4,{'type':db['Sequelize'][_0xe95c('0x58')]['SELECT'],'raw':!![],'transaction':_0x503ad6});})[_0xe95c('0x26')](function(_0x54e17c){var _0x181ad7=_[_0xe95c('0x2b')](_0x54e17c,function(_0x1ae7a5){return Number(_0x1ae7a5['OpenchannelQueueId']);});return db[_0xe95c('0x66')][_0xe95c('0x53')]({'where':{'UserId':{'$in':_0x1afa1d},'OpenchannelQueueId':{'$in':_0x181ad7}},'transaction':_0x503ad6});})[_0xe95c('0x26')](function(){var _0x2d1750=_0xe95c('0x67')+_0x376e32;return db[_0xe95c('0x54')][_0xe95c('0x31')](_0x2d1750,{'type':db[_0xe95c('0x57')][_0xe95c('0x58')]['SELECT'],'raw':!![],'transaction':_0x503ad6});})['then'](function(_0x317b59){var _0x39f8d3=_['map'](_0x317b59,function(_0x2b9a32){return Number(_0x2b9a32[_0xe95c('0x68')]);});return db[_0xe95c('0x69')][_0xe95c('0x53')]({'where':{'UserId':{'$in':_0x1afa1d},'WhatsappQueueId':{'$in':_0x39f8d3}},'transaction':_0x503ad6});})[_0xe95c('0x26')](function(){return db['TeamVoicePrefix'][_0xe95c('0x47')]({'where':{'TeamId':_0x376e32}});})[_0xe95c('0x26')](function(_0x52c698){if(_0x52c698===null){return;}return db[_0xe95c('0x6a')]['destroy']({'where':{'UserId':{'$in':_0x1afa1d},'VoicePrefixId':_0x52c698['VoicePrefixId']},'transaction':_0x503ad6});})['then'](function(){return db[_0xe95c('0x2c')][_0xe95c('0x53')]({'where':{'id':_0x376e32},'cascade':!![],'transaction':_0x503ad6});})[_0xe95c('0x26')](function(_0x2e7907){if(_0x2e7907===0x0){_0x1341fc[_0xe95c('0x1c')](0x194);}else{return db[_0xe95c('0x51')][_0xe95c('0x53')]({'where':{'type':_0xe95c('0x6b'),'resourceId':_0x376e32},'cascade':!![],'transaction':_0x503ad6})[_0xe95c('0x26')](function(){_0x1341fc['status'](0xcc)[_0xe95c('0x6c')]();});}})[_0xe95c('0x42')](function(_0x1b1c85){_0x1341fc[_0xe95c('0x1d')](0x1f4)[_0xe95c('0x29')](_0x1b1c85);});});};exports['getQueues']=function(_0x566857,_0x3f5c2f,_0x3dab1){return db[_0xe95c('0x2c')]['findOne']({'where':{'id':_0x566857[_0xe95c('0x44')]['id']}})['then'](handleEntityNotFound(_0x3f5c2f,null))[_0xe95c('0x26')](function(_0x1d928d){if(!_0x566857[_0xe95c('0x31')][_0xe95c('0x6d')]||!utils[_0xe95c('0x6e')](_0x566857[_0xe95c('0x31')][_0xe95c('0x6d')])){throw new db[(_0xe95c('0x57'))][(_0xe95c('0x6f'))](_0xe95c('0x70'));}var _0x7125f8={};var _0x5c74b5={};_0x5c74b5['model']=_[_0xe95c('0x32')](db[_[_0xe95c('0x71')](_0x566857[_0xe95c('0x31')][_0xe95c('0x6d')][_0xe95c('0x72')]())+_0xe95c('0x73')][_0xe95c('0x2d')]);_0x5c74b5['query']=_[_0xe95c('0x32')](_0x566857[_0xe95c('0x31')]);_0x5c74b5[_0xe95c('0x3b')]=_[_0xe95c('0x33')](_0x5c74b5[_0xe95c('0x30')],_0x5c74b5['query']);_0x7125f8['attributes']=_[_0xe95c('0x33')](_0x5c74b5[_0xe95c('0x30')],qs['fields'](_0x566857[_0xe95c('0x31')]['fields']));_0x7125f8[_0xe95c('0x34')]=_0x7125f8[_0xe95c('0x34')][_0xe95c('0x36')]?_0x7125f8['attributes']:_0x5c74b5[_0xe95c('0x30')];_0x7125f8[_0xe95c('0x20')]=qs['limit'](_0x566857[_0xe95c('0x31')][_0xe95c('0x20')]);_0x7125f8['offset']=qs[_0xe95c('0x1f')](_0x566857[_0xe95c('0x31')][_0xe95c('0x1f')]);_0x7125f8[_0xe95c('0x39')]=qs[_0xe95c('0x3a')](_0x566857[_0xe95c('0x31')][_0xe95c('0x3a')]);_0x7125f8[_0xe95c('0x3d')]=qs['filters'](_['pick'](_0x566857[_0xe95c('0x31')],_0x5c74b5[_0xe95c('0x3b')]));_0x7125f8=_[_0xe95c('0x3e')]({},_0x7125f8,_0x566857[_0xe95c('0x46')]);return _0x1d928d[_0xe95c('0x4b')+_[_0xe95c('0x71')](_0x566857[_0xe95c('0x31')][_0xe95c('0x6d')][_0xe95c('0x72')]())+_0xe95c('0x74')](_0x7125f8);})[_0xe95c('0x26')](respondWithResult(_0x3f5c2f,null))[_0xe95c('0x42')](handleError(_0x3f5c2f,null));};exports[_0xe95c('0x75')]=function(_0x1e1b95,_0x7003fe,_0x29bbaa){return db[_0xe95c('0x2c')][_0xe95c('0x76')]({'where':{'id':_0x1e1b95[_0xe95c('0x44')]['id']}})[_0xe95c('0x26')](function(_0x6f458d){if(_0x6f458d){if(!_0x1e1b95[_0xe95c('0x49')][_0xe95c('0x6d')]||!utils[_0xe95c('0x6e')](_0x1e1b95[_0xe95c('0x49')][_0xe95c('0x6d')])){throw new db[(_0xe95c('0x57'))][(_0xe95c('0x6f'))]('Unknown\x20channel');}return _0x6f458d['add'+_[_0xe95c('0x71')](_0x1e1b95[_0xe95c('0x49')]['channel'][_0xe95c('0x72')]())+_0xe95c('0x74')](_0x1e1b95[_0xe95c('0x49')]['ids']);}return null;})['then'](handleEntityNotFound(_0x7003fe,null))[_0xe95c('0x26')](respondWithStatusCode(_0x7003fe,null))[_0xe95c('0x42')](handleError(_0x7003fe,null));};exports[_0xe95c('0x77')]=function(_0x2743fd,_0x5bde5e,_0x18c2dd){return db[_0xe95c('0x2c')]['findOne']({'where':{'id':_0x2743fd[_0xe95c('0x44')]['id']}})[_0xe95c('0x26')](function(_0x2e1331){if(_0x2e1331){if(!_0x2743fd[_0xe95c('0x31')][_0xe95c('0x6d')]||!utils[_0xe95c('0x6e')](_0x2743fd[_0xe95c('0x31')][_0xe95c('0x6d')])){throw new db['Sequelize'][(_0xe95c('0x6f'))](_0xe95c('0x70'));}return _0x2e1331[_0xe95c('0x78')+_['capitalize'](_0x2743fd[_0xe95c('0x31')][_0xe95c('0x6d')][_0xe95c('0x72')]())+_0xe95c('0x74')](_0x2743fd[_0xe95c('0x31')]['ids']);}return null;})[_0xe95c('0x26')](handleEntityNotFound(_0x5bde5e,null))[_0xe95c('0x26')](respondWithStatusCode(_0x5bde5e,null))[_0xe95c('0x42')](handleError(_0x5bde5e,null));};exports[_0xe95c('0x79')]=function(_0x7b70d4,_0x1b61b8){var _0x59c4fc=_[_0xe95c('0x7a')](_0x7b70d4[_0xe95c('0x49')][_0xe95c('0x7b')])?_0x7b70d4[_0xe95c('0x49')][_0xe95c('0x7b')]:[_0x7b70d4[_0xe95c('0x49')][_0xe95c('0x7b')]];var _0x4cfadc=_0x7b70d4[_0xe95c('0x44')]['id'];return db[_0xe95c('0x2c')]['find']({'where':{'id':_0x4cfadc}})[_0xe95c('0x26')](handleEntityNotFound(_0x1b61b8,null))[_0xe95c('0x26')](function(_0x110789){if(_0x110789){var _0xd3c71c=[_0xe95c('0x7c'),_0xe95c('0x7d'),'Mail',_0xe95c('0x7e'),_0xe95c('0x7f'),_0xe95c('0x80'),_0xe95c('0x81')];return db[_0xe95c('0x54')][_0xe95c('0x55')](function(_0x3fcf0c){var _0x528a2d=_[_0xe95c('0x2b')](_0xd3c71c,function(_0xe6a0ca){var _0x16d96b={'attributes':['id',_0xe95c('0x28')]};if(_0xe6a0ca===_0xe95c('0x7c')){_0x16d96b['through']={'attributes':[_0xe95c('0x82')]};}return _0x110789[_0xe95c('0x4b')+_0xe6a0ca+_0xe95c('0x74')](_0x16d96b)[_0xe95c('0x26')](function(_0x37f15b){var _0x2f71f4=_[_0xe95c('0x2b')](_0x37f15b,function(_0x1a4655){var _0x718488=_['map'](_0x59c4fc,function(_0x4d09db){var _0x396824={'where':{'UserId':_0x4d09db,[_0xe6a0ca+_0xe95c('0x83')]:_0x1a4655['id']},'transaction':_0x3fcf0c};if(_0xe6a0ca===_0xe95c('0x7c')){_0x396824[_0xe95c('0x18')]={'penalty':_0x1a4655[_0xe95c('0x84')]['penalty']};}return db[_0xe95c('0x85')+_0xe6a0ca+_0xe95c('0x73')][_0xe95c('0x86')](_0x396824)['then'](function(){socket[_0xe95c('0x87')]('user'+_0xe6a0ca+'Queue:save',{'UserId':_0x4d09db,[_0xe6a0ca+'QueueId']:_0x1a4655['id']});if(_0xe6a0ca!==_0xe95c('0x7c')){return;}return db[_0xe95c('0x85')][_0xe95c('0x41')]({'where':{'id':_0x59c4fc,'online':0x1},'attributes':['id',_0xe95c('0x28'),'online',_0xe95c('0x88'),_0xe95c('0x89')],'raw':!![]})[_0xe95c('0x26')](function(_0x293695){var _0xc84e55=_[_0xe95c('0x2b')](_0x293695,function(_0x5edd52){return db['UserVoiceQueueRt'][_0xe95c('0x8a')]({'membername':_0x5edd52[_0xe95c('0x28')],'UserId':_0x5edd52['id'],'queue_name':_0x1a4655[_0xe95c('0x28')],'VoiceQueueId':_0x1a4655['id'],'interface':_[_0xe95c('0x8b')](_0x5edd52[_0xe95c('0x89')])?util[_0xe95c('0x8c')](_0xe95c('0x8d'),_0x5edd52[_0xe95c('0x28')]):_0x5edd52[_0xe95c('0x89')],'paused':_0x5edd52[_0xe95c('0x88')]||![],'penalty':_0x1a4655['TeamVoiceQueue'][_0xe95c('0x82')]},{'transaction':_0x3fcf0c});});return Promise[_0xe95c('0x8e')](_0xc84e55);});});});return Promise[_0xe95c('0x8e')](_0x718488);});return Promise[_0xe95c('0x8e')](_0x2f71f4);})[_0xe95c('0x26')](function(){return db[_0xe95c('0x8f')][_0xe95c('0x76')]({'where':{'teamId':_0x4cfadc}})[_0xe95c('0x26')](function(_0x143ade){if(_0x143ade){var _0x189c76=_['map'](_0x59c4fc,function(_0x24df0e){db[_0xe95c('0x6a')][_0xe95c('0x8a')]({'UserId':_0x24df0e,'VoicePrefixId':_0x143ade[_0xe95c('0x90')]});});return Promise[_0xe95c('0x8e')](_0x189c76);}});});});return Promise[_0xe95c('0x8e')](_0x528a2d)[_0xe95c('0x26')](function(){return _0x110789[_0xe95c('0x79')](_0x59c4fc,{'transaction':_0x3fcf0c})[_0xe95c('0x91')](function(_0x56e468){return _0x56e468;});});});}})['then'](respondWithResult(_0x1b61b8,null))['catch'](handleError(_0x1b61b8,null));};exports['removeAgents']=function(_0x5403fa,_0x48ab88){var _0x3fa5d6=_[_0xe95c('0x7a')](_0x5403fa[_0xe95c('0x31')][_0xe95c('0x7b')])?_0x5403fa[_0xe95c('0x31')][_0xe95c('0x7b')]:[_0x5403fa[_0xe95c('0x31')][_0xe95c('0x7b')]];var _0x19bd93=_0x5403fa[_0xe95c('0x44')]['id'];return db['Team'][_0xe95c('0x47')]({'where':{'id':_0x19bd93}})[_0xe95c('0x26')](handleEntityNotFound(_0x48ab88,null))['then'](function(_0x579e2f){if(_0x579e2f){var _0xcc157=['Voice',_0xe95c('0x7d'),_0xe95c('0x92'),_0xe95c('0x7e'),_0xe95c('0x7f'),'Openchannel',_0xe95c('0x81')];return db[_0xe95c('0x54')]['transaction'](function(_0x5a3a39){var _0x22242f=_[_0xe95c('0x2b')](_0xcc157,function(_0x3c14e2){var _0x4af2d1={'attributes':['id',_0xe95c('0x28')]};return _0x579e2f['get'+_0x3c14e2+'Queues'](_0x4af2d1)['then'](function(_0x2b338a){var _0x413c0f=_[_0xe95c('0x2b')](_0x2b338a,function(_0x1e090c){return _0x1e090c['removeAgents'](_0x3fa5d6,{'transaction':_0x5a3a39})[_0xe95c('0x26')](function(){var _0x563589=_[_0xe95c('0x2b')](_0x3fa5d6,function(_0x451667){socket[_0xe95c('0x87')](_0xe95c('0x4a')+_0x3c14e2+_0xe95c('0x93'),{'UserId':Number(_0x451667),[_0x3c14e2+'QueueId']:_0x1e090c['id']});if(_0x3c14e2!==_0xe95c('0x7c')){return;}return db[_0xe95c('0x94')][_0xe95c('0x53')]({'where':{'VoiceQueueId':_0x1e090c['id'],'UserId':_0x451667},'transaction':_0x5a3a39});});return Promise[_0xe95c('0x8e')](_0x563589);});});return Promise[_0xe95c('0x8e')](_0x413c0f);});});return Promise[_0xe95c('0x8e')](_0x22242f)[_0xe95c('0x26')](function(){return _0x579e2f['removeAgents'](_0x3fa5d6,{'transaction':_0x5a3a39});})[_0xe95c('0x26')](function(){return db[_0xe95c('0x8f')]['findOne']({'where':{'teamId':_0x19bd93}})[_0xe95c('0x26')](function(_0x25f30c){if(_0x25f30c){var _0x5e84d5=_[_0xe95c('0x2b')](_0x3fa5d6,function(_0x161f04){db[_0xe95c('0x6a')][_0xe95c('0x53')]({'where':{'UserId':_0x161f04,'VoicePrefixId':_0x25f30c['VoicePrefixId']}});});return Promise['all'](_0x5e84d5);}});});});}})[_0xe95c('0x26')](respondWithStatusCode(_0x48ab88,null))[_0xe95c('0x42')](handleError(_0x48ab88,null));};exports[_0xe95c('0x95')]=function(_0x59bb1f,_0x33f964,_0x2ddd8a){var _0x588cf9={};var _0x2f54d6={};var _0x483418;var _0x5eb142;return db[_0xe95c('0x2c')][_0xe95c('0x76')]({'where':{'id':_0x59bb1f[_0xe95c('0x44')]['id']}})[_0xe95c('0x26')](handleEntityNotFound(_0x33f964,null))[_0xe95c('0x26')](function(_0x54edbe){if(_0x54edbe){_0x483418=_0x54edbe;_0x2f54d6[_0xe95c('0x30')]=_[_0xe95c('0x32')](db[_0xe95c('0x85')][_0xe95c('0x2d')]);_0x2f54d6[_0xe95c('0x31')]=_[_0xe95c('0x32')](_0x59bb1f['query']);_0x2f54d6['filters']=_[_0xe95c('0x33')](_0x2f54d6[_0xe95c('0x30')],_0x2f54d6[_0xe95c('0x31')]);_0x588cf9[_0xe95c('0x34')]=_[_0xe95c('0x33')](_0x2f54d6[_0xe95c('0x30')],qs['fields'](_0x59bb1f[_0xe95c('0x31')][_0xe95c('0x35')]));_0x588cf9[_0xe95c('0x34')]=_0x588cf9[_0xe95c('0x34')][_0xe95c('0x36')]?_0x588cf9[_0xe95c('0x34')]:_0x2f54d6[_0xe95c('0x30')];_0x588cf9[_0xe95c('0x39')]=qs[_0xe95c('0x3a')](_0x59bb1f['query'][_0xe95c('0x3a')]);_0x588cf9[_0xe95c('0x3d')]=qs[_0xe95c('0x3b')](_['pick'](_0x59bb1f[_0xe95c('0x31')],_0x2f54d6['filters']));if(_0x59bb1f[_0xe95c('0x31')]['filter']){_0x588cf9[_0xe95c('0x3d')]=_[_0xe95c('0x3e')](_0x588cf9['where'],{'$or':_[_0xe95c('0x2b')](_0x588cf9[_0xe95c('0x34')],function(_0x14e163){var _0x9e7dba={};_0x9e7dba[_0x14e163]={'$like':'%'+_0x59bb1f['query'][_0xe95c('0x3c')]+'%'};return _0x9e7dba;})});}_0x588cf9=_[_0xe95c('0x3e')]({},_0x588cf9,_0x59bb1f['options']);return _0x483418[_0xe95c('0x95')](_0x588cf9);}})['then'](function(_0x10b7a8){if(_0x10b7a8){_0x5eb142=_0x10b7a8[_0xe95c('0x36')];if(!_0x59bb1f[_0xe95c('0x31')][_0xe95c('0x37')](_0xe95c('0x38'))){_0x588cf9[_0xe95c('0x20')]=qs[_0xe95c('0x20')](_0x59bb1f['query'][_0xe95c('0x20')]);_0x588cf9[_0xe95c('0x1f')]=qs[_0xe95c('0x1f')](_0x59bb1f['query'][_0xe95c('0x1f')]);}return _0x483418[_0xe95c('0x95')](_0x588cf9);}})['then'](function(_0x3cb08c){if(_0x3cb08c){return _0x3cb08c?{'count':_0x5eb142,'rows':_0x3cb08c}:null;}})[_0xe95c('0x26')](respondWithResult(_0x33f964,null))[_0xe95c('0x42')](handleError(_0x33f964,null));};
\ No newline at end of file
index 5f7aa83..e204ba0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd28=['hook','exports','../../mysqldb','Team','setMaxListeners','save','update','remove','emit'];(function(_0x566bdf,_0x1f4861){var _0x331215=function(_0x524d0d){while(--_0x524d0d){_0x566bdf['push'](_0x566bdf['shift']());}};_0x331215(++_0x1f4861);}(_0xdd28,0xd1));var _0x8dd2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdd28[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var Team=require(_0x8dd2('0x0'))['db'][_0x8dd2('0x1')];var TeamEvents=new EventEmitter();TeamEvents[_0x8dd2('0x2')](0x0);var events={'afterCreate':_0x8dd2('0x3'),'afterUpdate':_0x8dd2('0x4'),'afterDestroy':_0x8dd2('0x5')};function emitEvent(_0x145aba){return function(_0x5a8c2a,_0x5a9f6c,_0x293ec0){TeamEvents[_0x8dd2('0x6')](_0x145aba+':'+_0x5a8c2a['id'],_0x5a8c2a);TeamEvents['emit'](_0x145aba,_0x5a8c2a);_0x293ec0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team[_0x8dd2('0x7')](e,emitEvent(event));}}module[_0x8dd2('0x8')]=TeamEvents;
\ No newline at end of file
+var _0x55db=['save','update','remove','emit','hasOwnProperty','hook','../../mysqldb'];(function(_0x26a3c5,_0x3a410a){var _0x37f9ee=function(_0x1f2e99){while(--_0x1f2e99){_0x26a3c5['push'](_0x26a3c5['shift']());}};_0x37f9ee(++_0x3a410a);}(_0x55db,0x1a3));var _0xb55d=function(_0x534661,_0x562cab){_0x534661=_0x534661-0x0;var _0x1bf37c=_0x55db[_0x534661];return _0x1bf37c;};'use strict';var EventEmitter=require('events');var Team=require(_0xb55d('0x0'))['db']['Team'];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb55d('0x1'),'afterUpdate':_0xb55d('0x2'),'afterDestroy':_0xb55d('0x3')};function emitEvent(_0x5a1a17){return function(_0x2d38e9,_0x4a17a7,_0x4ce7d5){TeamEvents[_0xb55d('0x4')](_0x5a1a17+':'+_0x2d38e9['id'],_0x2d38e9);TeamEvents[_0xb55d('0x4')](_0x5a1a17,_0x2d38e9);_0x4ce7d5(null);};}for(var e in events){if(events[_0xb55d('0x5')](e)){var event=events[e];Team[_0xb55d('0x6')](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
index e22c3ee..93f7fba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3299=['./team.attributes','get','Queues','setDataValue','channel','catch','exports','define','teams','Chat','Fax','Mail','Openchannel','Sms','Voice','map','all','lodash'];(function(_0xfe528c,_0x57217d){var _0x5bd69c=function(_0x2f82e9){while(--_0x2f82e9){_0xfe528c['push'](_0xfe528c['shift']());}};_0x5bd69c(++_0x57217d);}(_0x3299,0x7d));var _0x9329=function(_0x4dd23a,_0x59b799){_0x4dd23a=_0x4dd23a-0x0;var _0x124d6d=_0x3299[_0x4dd23a];return _0x124d6d;};'use strict';var _=require(_0x9329('0x0'));var attributes=require(_0x9329('0x1'));function getQueuesByChannel(_0x27cfc9,_0x187278){var _0x19cf09=_0x9329('0x2')+_0x187278+_0x9329('0x3');return _0x27cfc9[_0x19cf09]()['then'](function(_0x2fcc67){return _['map'](_0x2fcc67,function(_0x4bcaae){_0x4bcaae[_0x9329('0x4')](_0x9329('0x5'),_0x187278);return _0x4bcaae;});})[_0x9329('0x6')](function(_0x1df4ee){throw _0x1df4ee;});}module[_0x9329('0x7')]=function(_0xd91735){return _0xd91735[_0x9329('0x8')]('Team',attributes,{'tableName':_0x9329('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x4aa47a=this;var _0x192e6d=[_0x9329('0xa'),_0x9329('0xb'),_0x9329('0xc'),_0x9329('0xd'),_0x9329('0xe'),_0x9329('0xf'),'Whatsapp'];return Promise['resolve']()['then'](function(){var _0x380a50=_[_0x9329('0x10')](_0x192e6d,function(_0x4a9583){return getQueuesByChannel(_0x4aa47a,_0x4a9583);});return Promise[_0x9329('0x11')](_0x380a50);})[_0x9329('0x6')](function(_0x245bb9){throw _0x245bb9;});}}});};
\ No newline at end of file
+var _0x4ee8=['define','Team','teams','Chat','Mail','Sms','Voice','Whatsapp','then','map','catch','lodash','./team.attributes','get','Queues','setDataValue','channel','exports'];(function(_0x17c833,_0x1ff84b){var _0x54cc83=function(_0x58ad5b){while(--_0x58ad5b){_0x17c833['push'](_0x17c833['shift']());}};_0x54cc83(++_0x1ff84b);}(_0x4ee8,0x12b));var _0x84ee=function(_0x565ed7,_0x398228){_0x565ed7=_0x565ed7-0x0;var _0x183ad7=_0x4ee8[_0x565ed7];return _0x183ad7;};'use strict';var _=require(_0x84ee('0x0'));var attributes=require(_0x84ee('0x1'));function getQueuesByChannel(_0x1aefc0,_0x27b523){var _0x4ce448=_0x84ee('0x2')+_0x27b523+_0x84ee('0x3');return _0x1aefc0[_0x4ce448]()['then'](function(_0xc25eea){return _['map'](_0xc25eea,function(_0x220f04){_0x220f04[_0x84ee('0x4')](_0x84ee('0x5'),_0x27b523);return _0x220f04;});})['catch'](function(_0x3d8c82){throw _0x3d8c82;});}module[_0x84ee('0x6')]=function(_0x2cbb6b){return _0x2cbb6b[_0x84ee('0x7')](_0x84ee('0x8'),attributes,{'tableName':_0x84ee('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x223686=this;var _0x217239=[_0x84ee('0xa'),'Fax',_0x84ee('0xb'),'Openchannel',_0x84ee('0xc'),_0x84ee('0xd'),_0x84ee('0xe')];return Promise['resolve']()[_0x84ee('0xf')](function(){var _0x4ce7e1=_[_0x84ee('0x10')](_0x217239,function(_0x26a6d8){return getQueuesByChannel(_0x223686,_0x26a6d8);});return Promise['all'](_0x4ce7e1);})[_0x84ee('0x11')](function(_0x4e0509){throw _0x4e0509;});}}});};
\ No newline at end of file
index 2c95147..ef2c014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e1=['rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./team.socket','register','request','then','Team,\x20%s,\x20%s','debug','Team,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x838813,_0x448f0f){var _0x2bd32d=function(_0x57b589){while(--_0x57b589){_0x838813['push'](_0x838813['shift']());}};_0x2bd32d(++_0x448f0f);}(_0x34e1,0x158));var _0x134e=function(_0x576c17,_0x271d19){_0x576c17=_0x576c17-0x0;var _0x1baf2f=_0x34e1[_0x576c17];return _0x1baf2f;};'use strict';var _=require(_0x134e('0x0'));var util=require(_0x134e('0x1'));var moment=require('moment');var BPromise=require(_0x134e('0x2'));var rs=require(_0x134e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x134e('0x4'))['db'];var utils=require(_0x134e('0x5'));var logger=require(_0x134e('0x6'))(_0x134e('0x7'));var config=require(_0x134e('0x8'));var jayson=require(_0x134e('0x9'));var client=jayson[_0x134e('0xa')][_0x134e('0xb')]({'port':0x232a});config[_0x134e('0xc')]=_['defaults'](config['redis'],{'host':_0x134e('0xd'),'port':0x18eb});var socket=require(_0x134e('0xe'))(new Redis(config['redis']));require(_0x134e('0xf'))[_0x134e('0x10')](socket);function respondWithRpcPromise(_0x3c6afc,_0x3d3652,_0xcbfacf){return new BPromise(function(_0x51cf30,_0x30c4e3){return client[_0x134e('0x11')](_0x3c6afc,_0xcbfacf)[_0x134e('0x12')](function(_0x24e6b1){logger['info'](_0x134e('0x13'),_0x3d3652,'request\x20sent');logger[_0x134e('0x14')](_0x134e('0x15'),_0x3d3652,_0x134e('0x16'),JSON[_0x134e('0x17')](_0x24e6b1));if(_0x24e6b1[_0x134e('0x18')]){if(_0x24e6b1[_0x134e('0x18')]['code']===0x1f4){logger[_0x134e('0x18')](_0x134e('0x13'),_0x3d3652,_0x24e6b1[_0x134e('0x18')][_0x134e('0x19')]);return _0x30c4e3(_0x24e6b1['error']['message']);}logger[_0x134e('0x18')](_0x134e('0x13'),_0x3d3652,_0x24e6b1[_0x134e('0x18')][_0x134e('0x19')]);return _0x51cf30(_0x24e6b1['error'][_0x134e('0x19')]);}else{logger['info'](_0x134e('0x13'),_0x3d3652,_0x134e('0x16'));_0x51cf30(_0x24e6b1['result'][_0x134e('0x19')]);}})[_0x134e('0x1a')](function(_0x5e936f){logger['error'](_0x134e('0x13'),_0x3d3652,_0x5e936f);_0x30c4e3(_0x5e936f);});});}
\ No newline at end of file
+var _0xb01d=['info','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./team.socket','register','request','then','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x7e8e08,_0x3f3b35){var _0x4a0f01=function(_0x2675c7){while(--_0x2675c7){_0x7e8e08['push'](_0x7e8e08['shift']());}};_0x4a0f01(++_0x3f3b35);}(_0xb01d,0x110));var _0xdb01=function(_0x56ae2e,_0x539b75){_0x56ae2e=_0x56ae2e-0x0;var _0x2d4ad5=_0xb01d[_0x56ae2e];return _0x2d4ad5;};'use strict';var _=require(_0xdb01('0x0'));var util=require('util');var moment=require(_0xdb01('0x1'));var BPromise=require(_0xdb01('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdb01('0x3'));var db=require(_0xdb01('0x4'))['db'];var utils=require(_0xdb01('0x5'));var logger=require('../../config/logger')(_0xdb01('0x6'));var config=require(_0xdb01('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xdb01('0x8')][_0xdb01('0x9')]({'port':0x232a});config[_0xdb01('0xa')]=_[_0xdb01('0xb')](config[_0xdb01('0xa')],{'host':_0xdb01('0xc'),'port':0x18eb});var socket=require(_0xdb01('0xd'))(new Redis(config['redis']));require(_0xdb01('0xe'))[_0xdb01('0xf')](socket);function respondWithRpcPromise(_0x1c6107,_0x2726e2,_0x458a35){return new BPromise(function(_0x581b4f,_0x38c5f7){return client[_0xdb01('0x10')](_0x1c6107,_0x458a35)[_0xdb01('0x11')](function(_0x555225){logger['info'](_0xdb01('0x12'),_0x2726e2,_0xdb01('0x13'));logger[_0xdb01('0x14')](_0xdb01('0x15'),_0x2726e2,_0xdb01('0x13'),JSON['stringify'](_0x555225));if(_0x555225[_0xdb01('0x16')]){if(_0x555225[_0xdb01('0x16')][_0xdb01('0x17')]===0x1f4){logger[_0xdb01('0x16')](_0xdb01('0x12'),_0x2726e2,_0x555225['error'][_0xdb01('0x18')]);return _0x38c5f7(_0x555225[_0xdb01('0x16')][_0xdb01('0x18')]);}logger[_0xdb01('0x16')](_0xdb01('0x12'),_0x2726e2,_0x555225['error'][_0xdb01('0x18')]);return _0x581b4f(_0x555225[_0xdb01('0x16')][_0xdb01('0x18')]);}else{logger[_0xdb01('0x19')](_0xdb01('0x12'),_0x2726e2,_0xdb01('0x13'));_0x581b4f(_0x555225['result'][_0xdb01('0x18')]);}})[_0xdb01('0x1a')](function(_0x4c3b13){logger['error']('Team,\x20%s,\x20%s',_0x2726e2,_0x4c3b13);_0x38c5f7(_0x4c3b13);});});}
\ No newline at end of file
index b4102cf..61537c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9498=['update','removeListener','register','length','team:','./team.events','save','remove'];(function(_0xfb5925,_0x535114){var _0x45ffa1=function(_0x4988de){while(--_0x4988de){_0xfb5925['push'](_0xfb5925['shift']());}};_0x45ffa1(++_0x535114);}(_0x9498,0x105));var _0x8949=function(_0x16ed15,_0x4a518e){_0x16ed15=_0x16ed15-0x0;var _0x255015=_0x9498[_0x16ed15];return _0x255015;};'use strict';var TeamEvents=require(_0x8949('0x0'));var events=[_0x8949('0x1'),_0x8949('0x2'),_0x8949('0x3')];function createListener(_0x291123,_0x1830d3){return function(_0x696749){_0x1830d3['emit'](_0x291123,_0x696749);};}function removeListener(_0x3c4f07,_0x4b1311){return function(){TeamEvents[_0x8949('0x4')](_0x3c4f07,_0x4b1311);};}exports[_0x8949('0x5')]=function(_0x38f043){for(var _0xb2466c=0x0,_0x16b877=events[_0x8949('0x6')];_0xb2466c<_0x16b877;_0xb2466c++){var _0x1f7b6d=events[_0xb2466c];var _0x4cf13f=createListener(_0x8949('0x7')+_0x1f7b6d,_0x38f043);TeamEvents['on'](_0x1f7b6d,_0x4cf13f);}};
\ No newline at end of file
+var _0x5554=['emit','register','length','team:','save'];(function(_0x40f1a3,_0x291121){var _0x1d1f79=function(_0x43f06b){while(--_0x43f06b){_0x40f1a3['push'](_0x40f1a3['shift']());}};_0x1d1f79(++_0x291121);}(_0x5554,0x167));var _0x4555=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0x5554[_0x187ee1];return _0x388160;};'use strict';var TeamEvents=require('./team.events');var events=[_0x4555('0x0'),'remove','update'];function createListener(_0x27eddd,_0xd4fc07){return function(_0x4c9d04){_0xd4fc07[_0x4555('0x1')](_0x27eddd,_0x4c9d04);};}function removeListener(_0x1ca2f1,_0x5ce9fc){return function(){TeamEvents['removeListener'](_0x1ca2f1,_0x5ce9fc);};}exports[_0x4555('0x2')]=function(_0x3bee49){for(var _0x3f3c83=0x0,_0x2fc846=events[_0x4555('0x3')];_0x3f3c83<_0x2fc846;_0x3f3c83++){var _0x58426c=events[_0x3f3c83];var _0x5397fb=createListener(_0x4555('0x4')+_0x58426c,_0x3bee49);TeamEvents['on'](_0x58426c,_0x5397fb);}};
\ No newline at end of file
index 1141686..15d9739 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78f0=['INTEGER','sequelize','exports'];(function(_0x5a56d9,_0x2bb1b9){var _0x453321=function(_0x2564b7){while(--_0x2564b7){_0x5a56d9['push'](_0x5a56d9['shift']());}};_0x453321(++_0x2bb1b9);}(_0x78f0,0x15d));var _0x078f=function(_0x40321a,_0x397787){_0x40321a=_0x40321a-0x0;var _0x461e8a=_0x78f0[_0x40321a];return _0x461e8a;};'use strict';var Sequelize=require(_0x078f('0x0'));module[_0x078f('0x1')]={'TeamId':{'type':Sequelize[_0x078f('0x2')]},'VoicePrefixId':{'type':Sequelize[_0x078f('0x2')]}};
\ No newline at end of file
+var _0x93e7=['sequelize','INTEGER'];(function(_0x20ee11,_0x60c334){var _0x248f99=function(_0x12d0eb){while(--_0x12d0eb){_0x20ee11['push'](_0x20ee11['shift']());}};_0x248f99(++_0x60c334);}(_0x93e7,0x9e));var _0x793e=function(_0x65a0db,_0x55c5a0){_0x65a0db=_0x65a0db-0x0;var _0x987620=_0x93e7[_0x65a0db];return _0x987620;};'use strict';var Sequelize=require(_0x793e('0x0'));module['exports']={'TeamId':{'type':Sequelize[_0x793e('0x1')]},'VoicePrefixId':{'type':Sequelize[_0x793e('0x1')]}};
\ No newline at end of file
index a267c0c..0f42508 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb982=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./teamVoicePrefix.attributes','exports','define','TeamVoicePrefix','team_has_voice_prefixes','../../config/logger'];(function(_0x4ebbe6,_0x44bc24){var _0x38319d=function(_0xa4e1cc){while(--_0xa4e1cc){_0x4ebbe6['push'](_0x4ebbe6['shift']());}};_0x38319d(++_0x44bc24);}(_0xb982,0x15e));var _0x2b98=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xb982[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2b98('0x0'))(_0x2b98('0x1'));var moment=require(_0x2b98('0x2'));var BPromise=require(_0x2b98('0x3'));var rp=require(_0x2b98('0x4'));var fs=require('fs');var path=require(_0x2b98('0x5'));var rimraf=require(_0x2b98('0x6'));var config=require(_0x2b98('0x7'));var attributes=require(_0x2b98('0x8'));module[_0x2b98('0x9')]=function(_0x55f7b8,_0xe2657d){return _0x55f7b8[_0x2b98('0xa')](_0x2b98('0xb'),attributes,{'tableName':_0x2b98('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x477a=['TeamVoicePrefix','team_has_voice_prefixes','lodash','../../config/logger','api','bluebird','request-promise','../../config/environment','./teamVoicePrefix.attributes','define'];(function(_0x11bdf4,_0x290a62){var _0x465bf2=function(_0x16e59d){while(--_0x16e59d){_0x11bdf4['push'](_0x11bdf4['shift']());}};_0x465bf2(++_0x290a62);}(_0x477a,0x1e2));var _0xa477=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x477a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa477('0x0'));var util=require('util');var logger=require(_0xa477('0x1'))(_0xa477('0x2'));var moment=require('moment');var BPromise=require(_0xa477('0x3'));var rp=require(_0xa477('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa477('0x5'));var attributes=require(_0xa477('0x6'));module['exports']=function(_0x1e75a5,_0x819ac9){return _0x1e75a5[_0xa477('0x7')](_0xa477('0x8'),attributes,{'tableName':_0xa477('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 25f8d38..424225b 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(_0x1d5c2c,_0x36dbda){var _0x43084d=function(_0x46332e){while(--_0x46332e){_0x1d5c2c['push'](_0x1d5c2c['shift']());}};_0x43084d(++_0x36dbda);}(_0x70e0,0x17b));var _0x070e=function(_0x149c43,_0x549773){_0x149c43=_0x149c43-0x0;var _0x5bf0e9=_0x70e0[_0x149c43];return _0x5bf0e9;};'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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x2e20ab,_0x2bd4dc){var _0xd5ae24=function(_0x15e3ee){while(--_0x15e3ee){_0x2e20ab['push'](_0x2e20ab['shift']());}};_0xd5ae24(++_0x2bd4dc);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x340756,_0xad31ae){_0x340756=_0x340756-0x0;var _0x2ef745=_0xcb91[_0x340756];return _0x2ef745;};'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 b57beab..6ec2a55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x239e=['exports'];(function(_0x5746d1,_0x5cf7eb){var _0x59fbb2=function(_0x1db272){while(--_0x1db272){_0x5746d1['push'](_0x5746d1['shift']());}};_0x59fbb2(++_0x5cf7eb);}(_0x239e,0x179));var _0xe239=function(_0x38eb23,_0x196e8b){_0x38eb23=_0x38eb23-0x0;var _0x48506a=_0x239e[_0x38eb23];return _0x48506a;};'use strict';var Sequelize=require('sequelize');module[_0xe239('0x0')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x95e6=['exports','INTEGER','sequelize'];(function(_0x216327,_0x5482e3){var _0x4f152b=function(_0x476828){while(--_0x476828){_0x216327['push'](_0x216327['shift']());}};_0x4f152b(++_0x5482e3);}(_0x95e6,0x15e));var _0x695e=function(_0x2fc719,_0x139b69){_0x2fc719=_0x2fc719-0x0;var _0x148804=_0x95e6[_0x2fc719];return _0x148804;};'use strict';var Sequelize=require(_0x695e('0x0'));module[_0x695e('0x1')]={'penalty':{'type':Sequelize[_0x695e('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 39a3c0f..c6178f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb28a=['moment','rimraf','../../config/environment','./teamVoiceQueue.attributes','exports','define','TeamVoiceQueue','util','../../config/logger'];(function(_0x105045,_0x2e471e){var _0x2487d0=function(_0x243428){while(--_0x243428){_0x105045['push'](_0x105045['shift']());}};_0x2487d0(++_0x2e471e);}(_0xb28a,0x166));var _0xab28=function(_0x419af6,_0x31c9e5){_0x419af6=_0x419af6-0x0;var _0x5ab2a9=_0xb28a[_0x419af6];return _0x5ab2a9;};'use strict';var _=require('lodash');var util=require(_0xab28('0x0'));var logger=require(_0xab28('0x1'))('api');var moment=require(_0xab28('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xab28('0x3'));var config=require(_0xab28('0x4'));var attributes=require(_0xab28('0x5'));module[_0xab28('0x6')]=function(_0x133169,_0x128a13){return _0x133169[_0xab28('0x7')](_0xab28('0x8'),attributes,{'tableName':'team_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9099=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes','exports','define','TeamVoiceQueue','lodash'];(function(_0x29e4bc,_0xfddc69){var _0x322472=function(_0x5ebc23){while(--_0x5ebc23){_0x29e4bc['push'](_0x29e4bc['shift']());}};_0x322472(++_0xfddc69);}(_0x9099,0x1ac));var _0x9909=function(_0x9b2bb0,_0x3965b1){_0x9b2bb0=_0x9b2bb0-0x0;var _0x2cdb3b=_0x9099[_0x9b2bb0];return _0x2cdb3b;};'use strict';var _=require(_0x9909('0x0'));var util=require('util');var logger=require(_0x9909('0x1'))(_0x9909('0x2'));var moment=require(_0x9909('0x3'));var BPromise=require(_0x9909('0x4'));var rp=require(_0x9909('0x5'));var fs=require('fs');var path=require(_0x9909('0x6'));var rimraf=require(_0x9909('0x7'));var config=require(_0x9909('0x8'));var attributes=require(_0x9909('0x9'));module[_0x9909('0xa')]=function(_0x3947ed,_0x41c07e){return _0x3947ed[_0x9909('0xb')](_0x9909('0xc'),attributes,{'tableName':'team_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5c14667..5e87ac2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ee2=['moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util'];(function(_0x1f3e92,_0x38d101){var _0x5836f3=function(_0xd1fe24){while(--_0xd1fe24){_0x1f3e92['push'](_0x1f3e92['shift']());}};_0x5836f3(++_0x38d101);}(_0x1ee2,0x11c));var _0x21ee=function(_0x231cdd,_0x4c3f2b){_0x231cdd=_0x231cdd-0x0;var _0x2d9c8f=_0x1ee2[_0x231cdd];return _0x2d9c8f;};'use strict';var _=require(_0x21ee('0x0'));var util=require(_0x21ee('0x1'));var moment=require(_0x21ee('0x2'));var BPromise=require(_0x21ee('0x3'));var rs=require(_0x21ee('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x21ee('0x5'))['db'];var utils=require(_0x21ee('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x21ee('0x7'));var jayson=require(_0x21ee('0x8'));var client=jayson[_0x21ee('0x9')][_0x21ee('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x479a60,_0x361e58,_0x207f5b){return new BPromise(function(_0x38588c,_0x3c1243){return client[_0x21ee('0xb')](_0x479a60,_0x207f5b)[_0x21ee('0xc')](function(_0x2ad5af){logger[_0x21ee('0xd')](_0x21ee('0xe'),_0x361e58,_0x21ee('0xf'));logger[_0x21ee('0x10')]('TeamVoiceQueue,\x20%s,\x20%s,\x20%s',_0x361e58,'request\x20sent',JSON['stringify'](_0x2ad5af));if(_0x2ad5af[_0x21ee('0x11')]){if(_0x2ad5af[_0x21ee('0x11')][_0x21ee('0x12')]===0x1f4){logger[_0x21ee('0x11')]('TeamVoiceQueue,\x20%s,\x20%s',_0x361e58,_0x2ad5af[_0x21ee('0x11')][_0x21ee('0x13')]);return _0x3c1243(_0x2ad5af[_0x21ee('0x11')][_0x21ee('0x13')]);}logger[_0x21ee('0x11')](_0x21ee('0xe'),_0x361e58,_0x2ad5af[_0x21ee('0x11')]['message']);return _0x38588c(_0x2ad5af[_0x21ee('0x11')][_0x21ee('0x13')]);}else{logger[_0x21ee('0xd')](_0x21ee('0xe'),_0x361e58,_0x21ee('0xf'));_0x38588c(_0x2ad5af[_0x21ee('0x14')]['message']);}})[_0x21ee('0x15')](function(_0xa0bd5a){logger[_0x21ee('0x11')](_0x21ee('0xe'),_0x361e58,_0xa0bd5a);_0x3c1243(_0xa0bd5a);});});}
\ No newline at end of file
+var _0xc5e3=['../../config/environment','jayson/promise','client','http','then','info','TeamVoiceQueue,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x317cc5,_0x3b6179){var _0x44fe81=function(_0x3b43b5){while(--_0x3b43b5){_0x317cc5['push'](_0x317cc5['shift']());}};_0x44fe81(++_0x3b6179);}(_0xc5e3,0x10c));var _0x3c5e=function(_0x207123,_0x3d5c3f){_0x207123=_0x207123-0x0;var _0x207482=_0xc5e3[_0x207123];return _0x207482;};'use strict';var _=require(_0x3c5e('0x0'));var util=require(_0x3c5e('0x1'));var moment=require(_0x3c5e('0x2'));var BPromise=require(_0x3c5e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3c5e('0x4'));var db=require(_0x3c5e('0x5'))['db'];var utils=require(_0x3c5e('0x6'));var logger=require('../../config/logger')(_0x3c5e('0x7'));var config=require(_0x3c5e('0x8'));var jayson=require(_0x3c5e('0x9'));var client=jayson[_0x3c5e('0xa')][_0x3c5e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5b32c4,_0x5b25f0,_0x48fcfc){return new BPromise(function(_0x196928,_0x396796){return client['request'](_0x5b32c4,_0x48fcfc)[_0x3c5e('0xc')](function(_0x14de7c){logger[_0x3c5e('0xd')](_0x3c5e('0xe'),_0x5b25f0,'request\x20sent');logger[_0x3c5e('0xf')]('TeamVoiceQueue,\x20%s,\x20%s,\x20%s',_0x5b25f0,'request\x20sent',JSON[_0x3c5e('0x10')](_0x14de7c));if(_0x14de7c[_0x3c5e('0x11')]){if(_0x14de7c['error'][_0x3c5e('0x12')]===0x1f4){logger[_0x3c5e('0x11')]('TeamVoiceQueue,\x20%s,\x20%s',_0x5b25f0,_0x14de7c[_0x3c5e('0x11')][_0x3c5e('0x13')]);return _0x396796(_0x14de7c['error']['message']);}logger[_0x3c5e('0x11')](_0x3c5e('0xe'),_0x5b25f0,_0x14de7c['error']['message']);return _0x196928(_0x14de7c[_0x3c5e('0x11')][_0x3c5e('0x13')]);}else{logger[_0x3c5e('0xd')](_0x3c5e('0xe'),_0x5b25f0,_0x3c5e('0x14'));_0x196928(_0x14de7c[_0x3c5e('0x15')]['message']);}})[_0x3c5e('0x16')](function(_0x3015b9){logger['error'](_0x3c5e('0xe'),_0x5b25f0,_0x3015b9);_0x396796(_0x3015b9);});});}
\ No newline at end of file
index 6c573d2..1d4cf93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c3a=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','show','post','create','/:id'];(function(_0x117713,_0x1b3f0c){var _0x310d68=function(_0x5c266a){while(--_0x5c266a){_0x117713['push'](_0x117713['shift']());}};_0x310d68(++_0x1b3f0c);}(_0x0c3a,0x171));var _0xa0c3=function(_0x3687a,_0x4c2010){_0x3687a=_0x3687a-0x0;var _0x2115e2=_0x0c3a[_0x3687a];return _0x2115e2;};'use strict';var multer=require(_0xa0c3('0x0'));var util=require(_0xa0c3('0x1'));var path=require(_0xa0c3('0x2'));var timeout=require(_0xa0c3('0x3'));var express=require(_0xa0c3('0x4'));var router=express[_0xa0c3('0x5')]();var fs_extra=require(_0xa0c3('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xa0c3('0x7'));var config=require(_0xa0c3('0x8'));var controller=require('./template.controller');router[_0xa0c3('0x9')]('/',auth[_0xa0c3('0xa')](),controller['index']);router[_0xa0c3('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xa0c3('0xb')]);router[_0xa0c3('0xc')]('/',auth[_0xa0c3('0xa')](),controller[_0xa0c3('0xd')]);router['put'](_0xa0c3('0xe'),auth[_0xa0c3('0xa')](),controller['update']);router['delete'](_0xa0c3('0xe'),auth[_0xa0c3('0xa')](),controller['destroy']);module[_0xa0c3('0xf')]=router;
\ No newline at end of file
+var _0x8f1a=['express','Router','fs-extra','../../components/auth/service','./template.controller','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','util','path','connect-timeout'];(function(_0x569ccf,_0x55edef){var _0x56f72d=function(_0x1d509e){while(--_0x1d509e){_0x569ccf['push'](_0x569ccf['shift']());}};_0x56f72d(++_0x55edef);}(_0x8f1a,0xcd));var _0xa8f1=function(_0x322157,_0x3efe1d){_0x322157=_0x322157-0x0;var _0x2934cd=_0x8f1a[_0x322157];return _0x2934cd;};'use strict';var multer=require(_0xa8f1('0x0'));var util=require(_0xa8f1('0x1'));var path=require(_0xa8f1('0x2'));var timeout=require(_0xa8f1('0x3'));var express=require(_0xa8f1('0x4'));var router=express[_0xa8f1('0x5')]();var fs_extra=require(_0xa8f1('0x6'));var auth=require(_0xa8f1('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa8f1('0x8'));router['get']('/',auth[_0xa8f1('0x9')](),controller[_0xa8f1('0xa')]);router['get'](_0xa8f1('0xb'),auth[_0xa8f1('0x9')](),controller[_0xa8f1('0xc')]);router[_0xa8f1('0xd')]('/',auth[_0xa8f1('0x9')](),controller[_0xa8f1('0xe')]);router[_0xa8f1('0xf')](_0xa8f1('0xb'),auth['isAuthenticated'](),controller[_0xa8f1('0x10')]);router[_0xa8f1('0x11')]('/:id',auth[_0xa8f1('0x9')](),controller['destroy']);module[_0xa8f1('0x12')]=router;
\ No newline at end of file
index 338826a..022432a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6994=['sequelize','exports','STRING','TEXT'];(function(_0x59fd85,_0x2e57d4){var _0x62297=function(_0x179156){while(--_0x179156){_0x59fd85['push'](_0x59fd85['shift']());}};_0x62297(++_0x2e57d4);}(_0x6994,0x120));var _0x4699=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x6994[_0x42cae2];return _0x5f256f;};'use strict';var Sequelize=require(_0x4699('0x0'));module[_0x4699('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x4699('0x2')]},'html':{'type':Sequelize[_0x4699('0x3')]}};
\ No newline at end of file
+var _0xe5bb=['sequelize','STRING','TEXT'];(function(_0x3201f3,_0x43374d){var _0x2facfb=function(_0x521690){while(--_0x521690){_0x3201f3['push'](_0x3201f3['shift']());}};_0x2facfb(++_0x43374d);}(_0xe5bb,0xb1));var _0xbe5b=function(_0x41ddda,_0xc5ce57){_0x41ddda=_0x41ddda-0x0;var _0x567e78=_0xe5bb[_0x41ddda];return _0x567e78;};'use strict';var Sequelize=require(_0xbe5b('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xbe5b('0x1')]},'html':{'type':Sequelize[_0xbe5b('0x2')]}};
\ No newline at end of file
index 43e74a9..8cf19d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb08f=['fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','limit','count','offset','set','Content-Range','apply','update','then','get','Templates','UserProfileResource','destroy','error','stack','name','send','map','Template','rawAttributes','fieldName','type','key','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','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','params','eml-format','rimraf','zip-dir'];(function(_0x162a3c,_0x54f601){var _0x57703d=function(_0x781c98){while(--_0x781c98){_0x162a3c['push'](_0x162a3c['shift']());}};_0x57703d(++_0x54f601);}(_0xb08f,0xf9));var _0xfb08=function(_0x23f50c,_0x2cedf8){_0x23f50c=_0x23f50c-0x0;var _0x3bcb78=_0xb08f[_0x23f50c];return _0x3bcb78;};'use strict';var emlformat=require(_0xfb08('0x0'));var rimraf=require(_0xfb08('0x1'));var zipdir=require(_0xfb08('0x2'));var jsonpatch=require(_0xfb08('0x3'));var rp=require(_0xfb08('0x4'));var moment=require(_0xfb08('0x5'));var BPromise=require(_0xfb08('0x6'));var Mustache=require('mustache');var util=require(_0xfb08('0x7'));var path=require(_0xfb08('0x8'));var sox=require('sox');var csv=require(_0xfb08('0x9'));var ejs=require(_0xfb08('0xa'));var fs=require('fs');var fs_extra=require(_0xfb08('0xb'));var _=require(_0xfb08('0xc'));var squel=require(_0xfb08('0xd'));var crypto=require('crypto');var jsforce=require(_0xfb08('0xe'));var deskjs=require(_0xfb08('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xfb08('0x10'));var Redis=require('ioredis');var authService=require(_0xfb08('0x11'));var qs=require(_0xfb08('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xfb08('0x13'))(_0xfb08('0x14'));var utils=require(_0xfb08('0x15'));var config=require(_0xfb08('0x16'));var licenseUtil=require(_0xfb08('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3ec80c,_0x2f3ba0){_0x2f3ba0=_0x2f3ba0||0xcc;return function(_0x26ca69){if(_0x26ca69){return _0x3ec80c[_0xfb08('0x18')](_0x2f3ba0);}return _0x3ec80c[_0xfb08('0x19')](_0x2f3ba0)[_0xfb08('0x1a')]();};}function respondWithResult(_0x551ad5,_0x34c4e2){_0x34c4e2=_0x34c4e2||0xc8;return function(_0x243cbd){if(_0x243cbd){return _0x551ad5['status'](_0x34c4e2)[_0xfb08('0x1b')](_0x243cbd);}};}function respondWithFilteredResult(_0xa8b202,_0x2c47a4){return function(_0x47d7d3){if(_0x47d7d3){var _0x355c56=typeof _0x2c47a4['offset']==='undefined'&&typeof _0x2c47a4[_0xfb08('0x1c')]==='undefined';var _0x437fd9=_0x47d7d3[_0xfb08('0x1d')];var _0x5ab23e=_0x355c56?0x0:_0x2c47a4[_0xfb08('0x1e')];var _0x107558=_0x355c56?_0x47d7d3[_0xfb08('0x1d')]:_0x2c47a4[_0xfb08('0x1e')]+_0x2c47a4['limit'];var _0x38e6e8;if(_0x107558>=_0x437fd9){_0x107558=_0x437fd9;_0x38e6e8=0xc8;}else{_0x38e6e8=0xce;}_0xa8b202[_0xfb08('0x19')](_0x38e6e8);return _0xa8b202[_0xfb08('0x1f')](_0xfb08('0x20'),_0x5ab23e+'-'+_0x107558+'/'+_0x437fd9)[_0xfb08('0x1b')](_0x47d7d3);}return null;};}function patchUpdates(_0x46300c){return function(_0x458228){try{jsonpatch[_0xfb08('0x21')](_0x458228,_0x46300c,!![]);}catch(_0x2224cd){return BPromise['reject'](_0x2224cd);}return _0x458228['save']();};}function saveUpdates(_0x390f6c,_0xfdc905){return function(_0x4d0e0e){if(_0x4d0e0e){return _0x4d0e0e[_0xfb08('0x22')](_0x390f6c)[_0xfb08('0x23')](function(_0xa67416){return _0xa67416;});}return null;};}function removeEntity(_0x35748a,_0xc594e4){return function(_0x468494){if(_0x468494){return _0x468494['destroy']()[_0xfb08('0x23')](function(){var _0x120108=_0x468494[_0xfb08('0x24')]({'plain':!![]});var _0x1f8810=_0xfb08('0x25');return db[_0xfb08('0x26')][_0xfb08('0x27')]({'where':{'type':_0x1f8810,'resourceId':_0x120108['id']}})[_0xfb08('0x23')](function(){return _0x468494;});})[_0xfb08('0x23')](function(){_0x35748a[_0xfb08('0x19')](0xcc)[_0xfb08('0x1a')]();});}};}function handleEntityNotFound(_0x28f095,_0x17574f){return function(_0x29ef3c){if(!_0x29ef3c){_0x28f095[_0xfb08('0x18')](0x194);}return _0x29ef3c;};}function handleError(_0x304547,_0x25f480){_0x25f480=_0x25f480||0x1f4;return function(_0x4a3bf5){logger[_0xfb08('0x28')](_0x4a3bf5[_0xfb08('0x29')]);if(_0x4a3bf5['name']){delete _0x4a3bf5[_0xfb08('0x2a')];}_0x304547[_0xfb08('0x19')](_0x25f480)[_0xfb08('0x2b')](_0x4a3bf5);};}exports['index']=function(_0x3c12c0,_0x9a007a){var _0x261f9f={},_0x1d5da7={},_0x5d68cb={'count':0x0,'rows':[]};var _0x2d2c60=_[_0xfb08('0x2c')](db[_0xfb08('0x2d')][_0xfb08('0x2e')],function(_0x115065){return{'name':_0x115065[_0xfb08('0x2f')],'type':_0x115065[_0xfb08('0x30')][_0xfb08('0x31')]};});_0x1d5da7['model']=_[_0xfb08('0x2c')](_0x2d2c60,'name');_0x1d5da7[_0xfb08('0x32')]=_[_0xfb08('0x33')](_0x3c12c0[_0xfb08('0x32')]);_0x1d5da7['filters']=_['intersection'](_0x1d5da7[_0xfb08('0x34')],_0x1d5da7[_0xfb08('0x32')]);_0x261f9f[_0xfb08('0x35')]=_[_0xfb08('0x36')](_0x1d5da7[_0xfb08('0x34')],qs[_0xfb08('0x37')](_0x3c12c0[_0xfb08('0x32')][_0xfb08('0x37')]));_0x261f9f[_0xfb08('0x35')]=_0x261f9f['attributes'][_0xfb08('0x38')]?_0x261f9f['attributes']:_0x1d5da7['model'];if(!_0x3c12c0[_0xfb08('0x32')][_0xfb08('0x39')](_0xfb08('0x3a'))){_0x261f9f[_0xfb08('0x1c')]=qs[_0xfb08('0x1c')](_0x3c12c0[_0xfb08('0x32')][_0xfb08('0x1c')]);_0x261f9f['offset']=qs[_0xfb08('0x1e')](_0x3c12c0[_0xfb08('0x32')][_0xfb08('0x1e')]);}_0x261f9f[_0xfb08('0x3b')]=qs[_0xfb08('0x3c')](_0x3c12c0[_0xfb08('0x32')][_0xfb08('0x3c')]);_0x261f9f[_0xfb08('0x3d')]=qs[_0xfb08('0x3e')](_[_0xfb08('0x3f')](_0x3c12c0['query'],_0x1d5da7[_0xfb08('0x3e')]),_0x2d2c60);if(_0x3c12c0[_0xfb08('0x32')][_0xfb08('0x40')]){_0x261f9f[_0xfb08('0x3d')]=_[_0xfb08('0x41')](_0x261f9f['where'],{'$or':_[_0xfb08('0x2c')](_0x2d2c60,function(_0x18d14c){if(_0x18d14c[_0xfb08('0x30')]!==_0xfb08('0x42')){var _0x5cd395={};_0x5cd395[_0x18d14c[_0xfb08('0x2a')]]={'$like':'%'+_0x3c12c0[_0xfb08('0x32')][_0xfb08('0x40')]+'%'};return _0x5cd395;}})});}_0x261f9f=_['merge']({},_0x261f9f,_0x3c12c0[_0xfb08('0x43')]);var _0x4e62d9={'where':_0x261f9f[_0xfb08('0x3d')]};return db[_0xfb08('0x2d')]['count'](_0x4e62d9)['then'](function(_0x1a1cf7){_0x5d68cb[_0xfb08('0x1d')]=_0x1a1cf7;if(_0x3c12c0[_0xfb08('0x32')][_0xfb08('0x44')]){_0x261f9f[_0xfb08('0x45')]=[{'all':!![]}];}return db[_0xfb08('0x2d')][_0xfb08('0x46')](_0x261f9f);})['then'](function(_0x31ad10){_0x5d68cb['rows']=_0x31ad10;return _0x5d68cb;})['then'](respondWithFilteredResult(_0x9a007a,_0x261f9f))[_0xfb08('0x47')](handleError(_0x9a007a,null));};exports[_0xfb08('0x48')]=function(_0x2cb7b1,_0x12bd4c){var _0x55d00b={'raw':!![],'where':{'id':_0x2cb7b1['params']['id']}},_0x157195={};_0x157195[_0xfb08('0x34')]=_['keys'](db[_0xfb08('0x2d')][_0xfb08('0x2e')]);_0x157195['query']=_[_0xfb08('0x33')](_0x2cb7b1[_0xfb08('0x32')]);_0x157195['filters']=_[_0xfb08('0x36')](_0x157195[_0xfb08('0x34')],_0x157195[_0xfb08('0x32')]);_0x55d00b['attributes']=_[_0xfb08('0x36')](_0x157195['model'],qs[_0xfb08('0x37')](_0x2cb7b1['query'][_0xfb08('0x37')]));_0x55d00b[_0xfb08('0x35')]=_0x55d00b['attributes'][_0xfb08('0x38')]?_0x55d00b['attributes']:_0x157195[_0xfb08('0x34')];if(_0x2cb7b1[_0xfb08('0x32')][_0xfb08('0x44')]){_0x55d00b[_0xfb08('0x45')]=[{'all':!![]}];}_0x55d00b=_[_0xfb08('0x41')]({},_0x55d00b,_0x2cb7b1[_0xfb08('0x43')]);return db[_0xfb08('0x2d')][_0xfb08('0x49')](_0x55d00b)[_0xfb08('0x23')](handleEntityNotFound(_0x12bd4c,null))[_0xfb08('0x23')](respondWithResult(_0x12bd4c,null))[_0xfb08('0x47')](handleError(_0x12bd4c,null));};exports[_0xfb08('0x4a')]=function(_0x17f352,_0x5d7e25){return db[_0xfb08('0x2d')][_0xfb08('0x4a')](_0x17f352[_0xfb08('0x4b')],{})[_0xfb08('0x23')](function(_0x4d1a9b){var _0x90926b=_0x17f352['user'][_0xfb08('0x24')]({'plain':!![]});if(!_0x90926b)throw new Error(_0xfb08('0x4c'));if(_0x90926b[_0xfb08('0x4d')]===_0xfb08('0x4e')){var _0x32c4fd=_0x4d1a9b[_0xfb08('0x24')]({'plain':!![]});var _0x4f024d=_0xfb08('0x25');return db[_0xfb08('0x4f')]['find']({'where':{'name':_0x4f024d,'userProfileId':_0x90926b[_0xfb08('0x50')]},'raw':!![]})[_0xfb08('0x23')](function(_0x3f5936){if(_0x3f5936&&_0x3f5936[_0xfb08('0x51')]===0x0){return db['UserProfileResource']['create']({'name':_0x32c4fd[_0xfb08('0x2a')],'resourceId':_0x32c4fd['id'],'type':_0x3f5936[_0xfb08('0x2a')],'sectionId':_0x3f5936['id']},{})[_0xfb08('0x23')](function(){return _0x4d1a9b;});}else{return _0x4d1a9b;}})[_0xfb08('0x47')](function(_0x55084b){logger[_0xfb08('0x28')](_0xfb08('0x52'),_0x55084b);throw _0x55084b;});}return _0x4d1a9b;})[_0xfb08('0x23')](respondWithResult(_0x5d7e25,0xc9))[_0xfb08('0x47')](handleError(_0x5d7e25,null));};exports[_0xfb08('0x22')]=function(_0x2decb1,_0x234f2a){if(_0x2decb1[_0xfb08('0x4b')]['id']){delete _0x2decb1[_0xfb08('0x4b')]['id'];}return db[_0xfb08('0x2d')][_0xfb08('0x49')]({'where':{'id':_0x2decb1[_0xfb08('0x53')]['id']}})[_0xfb08('0x23')](handleEntityNotFound(_0x234f2a,null))[_0xfb08('0x23')](saveUpdates(_0x2decb1[_0xfb08('0x4b')],null))[_0xfb08('0x23')](respondWithResult(_0x234f2a,null))[_0xfb08('0x47')](handleError(_0x234f2a,null));};exports[_0xfb08('0x27')]=function(_0x250c6e,_0x317f75){return db[_0xfb08('0x2d')]['find']({'where':{'id':_0x250c6e[_0xfb08('0x53')]['id']}})[_0xfb08('0x23')](handleEntityNotFound(_0x317f75,null))[_0xfb08('0x23')](removeEntity(_0x317f75,null))[_0xfb08('0x47')](handleError(_0x317f75,null));};
\ No newline at end of file
+var _0xa91a=['moment','bluebird','mustache','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','status','end','undefined','limit','count','offset','set','json','reject','save','then','get','UserProfileResource','destroy','error','stack','name','Template','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','findAll','catch','show','rawAttributes','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Templates','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','eml-format','fast-json-patch','request-promise'];(function(_0x5a9f73,_0x19a26a){var _0x4e50b3=function(_0xa11396){while(--_0xa11396){_0x5a9f73['push'](_0x5a9f73['shift']());}};_0x4e50b3(++_0x19a26a);}(_0xa91a,0xe4));var _0xaa91=function(_0x3ffb80,_0x20ca70){_0x3ffb80=_0x3ffb80-0x0;var _0x264841=_0xa91a[_0x3ffb80];return _0x264841;};'use strict';var emlformat=require(_0xaa91('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xaa91('0x1'));var rp=require(_0xaa91('0x2'));var moment=require(_0xaa91('0x3'));var BPromise=require(_0xaa91('0x4'));var Mustache=require(_0xaa91('0x5'));var util=require('util');var path=require(_0xaa91('0x6'));var sox=require('sox');var csv=require(_0xaa91('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xaa91('0x8'));var _=require(_0xaa91('0x9'));var squel=require(_0xaa91('0xa'));var crypto=require(_0xaa91('0xb'));var jsforce=require(_0xaa91('0xc'));var deskjs=require(_0xaa91('0xd'));var toCsv=require(_0xaa91('0x7'));var querystring=require('querystring');var Papa=require(_0xaa91('0xe'));var Redis=require(_0xaa91('0xf'));var authService=require(_0xaa91('0x10'));var qs=require(_0xaa91('0x11'));var as=require(_0xaa91('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xaa91('0x13'));var utils=require(_0xaa91('0x14'));var config=require(_0xaa91('0x15'));var licenseUtil=require(_0xaa91('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x7b44bb,_0x3d2f9a){_0x3d2f9a=_0x3d2f9a||0xcc;return function(_0x579fa9){if(_0x579fa9){return _0x7b44bb['sendStatus'](_0x3d2f9a);}return _0x7b44bb[_0xaa91('0x17')](_0x3d2f9a)[_0xaa91('0x18')]();};}function respondWithResult(_0x2e0d6c,_0x182061){_0x182061=_0x182061||0xc8;return function(_0x2f8cb2){if(_0x2f8cb2){return _0x2e0d6c[_0xaa91('0x17')](_0x182061)['json'](_0x2f8cb2);}};}function respondWithFilteredResult(_0x418db1,_0x51a6f8){return function(_0x491b0e){if(_0x491b0e){var _0x533751=typeof _0x51a6f8['offset']===_0xaa91('0x19')&&typeof _0x51a6f8[_0xaa91('0x1a')]===_0xaa91('0x19');var _0x5a6006=_0x491b0e[_0xaa91('0x1b')];var _0x456cf0=_0x533751?0x0:_0x51a6f8[_0xaa91('0x1c')];var _0x754243=_0x533751?_0x491b0e[_0xaa91('0x1b')]:_0x51a6f8[_0xaa91('0x1c')]+_0x51a6f8['limit'];var _0x114168;if(_0x754243>=_0x5a6006){_0x754243=_0x5a6006;_0x114168=0xc8;}else{_0x114168=0xce;}_0x418db1[_0xaa91('0x17')](_0x114168);return _0x418db1[_0xaa91('0x1d')]('Content-Range',_0x456cf0+'-'+_0x754243+'/'+_0x5a6006)[_0xaa91('0x1e')](_0x491b0e);}return null;};}function patchUpdates(_0x10912a){return function(_0x636838){try{jsonpatch['apply'](_0x636838,_0x10912a,!![]);}catch(_0x404f32){return BPromise[_0xaa91('0x1f')](_0x404f32);}return _0x636838[_0xaa91('0x20')]();};}function saveUpdates(_0x274255,_0x3d359b){return function(_0x9d115e){if(_0x9d115e){return _0x9d115e['update'](_0x274255)[_0xaa91('0x21')](function(_0x39c754){return _0x39c754;});}return null;};}function removeEntity(_0x41b650,_0x1b11fd){return function(_0x1f8b6c){if(_0x1f8b6c){return _0x1f8b6c['destroy']()[_0xaa91('0x21')](function(){var _0x428692=_0x1f8b6c[_0xaa91('0x22')]({'plain':!![]});var _0x2fd530='Templates';return db[_0xaa91('0x23')][_0xaa91('0x24')]({'where':{'type':_0x2fd530,'resourceId':_0x428692['id']}})[_0xaa91('0x21')](function(){return _0x1f8b6c;});})[_0xaa91('0x21')](function(){_0x41b650[_0xaa91('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2a2261,_0x3e4d0f){return function(_0x4add3b){if(!_0x4add3b){_0x2a2261['sendStatus'](0x194);}return _0x4add3b;};}function handleError(_0x26075e,_0x5003b6){_0x5003b6=_0x5003b6||0x1f4;return function(_0x7be353){logger[_0xaa91('0x25')](_0x7be353[_0xaa91('0x26')]);if(_0x7be353['name']){delete _0x7be353[_0xaa91('0x27')];}_0x26075e[_0xaa91('0x17')](_0x5003b6)['send'](_0x7be353);};}exports['index']=function(_0x13ba0c,_0x5fc88a){var _0x528ed1={},_0x304dfc={},_0x252bcf={'count':0x0,'rows':[]};var _0x4139dd=_['map'](db[_0xaa91('0x28')]['rawAttributes'],function(_0x282e19){return{'name':_0x282e19[_0xaa91('0x29')],'type':_0x282e19[_0xaa91('0x2a')][_0xaa91('0x2b')]};});_0x304dfc[_0xaa91('0x2c')]=_[_0xaa91('0x2d')](_0x4139dd,'name');_0x304dfc['query']=_[_0xaa91('0x2e')](_0x13ba0c[_0xaa91('0x2f')]);_0x304dfc[_0xaa91('0x30')]=_[_0xaa91('0x31')](_0x304dfc[_0xaa91('0x2c')],_0x304dfc[_0xaa91('0x2f')]);_0x528ed1[_0xaa91('0x32')]=_[_0xaa91('0x31')](_0x304dfc[_0xaa91('0x2c')],qs[_0xaa91('0x33')](_0x13ba0c['query'][_0xaa91('0x33')]));_0x528ed1[_0xaa91('0x32')]=_0x528ed1[_0xaa91('0x32')][_0xaa91('0x34')]?_0x528ed1[_0xaa91('0x32')]:_0x304dfc[_0xaa91('0x2c')];if(!_0x13ba0c[_0xaa91('0x2f')]['hasOwnProperty'](_0xaa91('0x35'))){_0x528ed1[_0xaa91('0x1a')]=qs['limit'](_0x13ba0c[_0xaa91('0x2f')]['limit']);_0x528ed1[_0xaa91('0x1c')]=qs[_0xaa91('0x1c')](_0x13ba0c['query']['offset']);}_0x528ed1[_0xaa91('0x36')]=qs[_0xaa91('0x37')](_0x13ba0c[_0xaa91('0x2f')][_0xaa91('0x37')]);_0x528ed1['where']=qs[_0xaa91('0x30')](_[_0xaa91('0x38')](_0x13ba0c[_0xaa91('0x2f')],_0x304dfc['filters']),_0x4139dd);if(_0x13ba0c[_0xaa91('0x2f')][_0xaa91('0x39')]){_0x528ed1[_0xaa91('0x3a')]=_['merge'](_0x528ed1[_0xaa91('0x3a')],{'$or':_[_0xaa91('0x2d')](_0x4139dd,function(_0x5395b2){if(_0x5395b2[_0xaa91('0x2a')]!==_0xaa91('0x3b')){var _0x15dbae={};_0x15dbae[_0x5395b2[_0xaa91('0x27')]]={'$like':'%'+_0x13ba0c[_0xaa91('0x2f')][_0xaa91('0x39')]+'%'};return _0x15dbae;}})});}_0x528ed1=_[_0xaa91('0x3c')]({},_0x528ed1,_0x13ba0c['options']);var _0x4a134f={'where':_0x528ed1[_0xaa91('0x3a')]};return db[_0xaa91('0x28')][_0xaa91('0x1b')](_0x4a134f)[_0xaa91('0x21')](function(_0x109a9b){_0x252bcf[_0xaa91('0x1b')]=_0x109a9b;if(_0x13ba0c[_0xaa91('0x2f')]['includeAll']){_0x528ed1['include']=[{'all':!![]}];}return db[_0xaa91('0x28')][_0xaa91('0x3d')](_0x528ed1);})[_0xaa91('0x21')](function(_0xfa7960){_0x252bcf['rows']=_0xfa7960;return _0x252bcf;})[_0xaa91('0x21')](respondWithFilteredResult(_0x5fc88a,_0x528ed1))[_0xaa91('0x3e')](handleError(_0x5fc88a,null));};exports[_0xaa91('0x3f')]=function(_0x3e4f8d,_0x35592b){var _0x31169e={'raw':!![],'where':{'id':_0x3e4f8d['params']['id']}},_0x5a4c73={};_0x5a4c73[_0xaa91('0x2c')]=_[_0xaa91('0x2e')](db[_0xaa91('0x28')][_0xaa91('0x40')]);_0x5a4c73[_0xaa91('0x2f')]=_[_0xaa91('0x2e')](_0x3e4f8d[_0xaa91('0x2f')]);_0x5a4c73[_0xaa91('0x30')]=_['intersection'](_0x5a4c73['model'],_0x5a4c73[_0xaa91('0x2f')]);_0x31169e[_0xaa91('0x32')]=_[_0xaa91('0x31')](_0x5a4c73[_0xaa91('0x2c')],qs[_0xaa91('0x33')](_0x3e4f8d[_0xaa91('0x2f')][_0xaa91('0x33')]));_0x31169e[_0xaa91('0x32')]=_0x31169e[_0xaa91('0x32')][_0xaa91('0x34')]?_0x31169e[_0xaa91('0x32')]:_0x5a4c73[_0xaa91('0x2c')];if(_0x3e4f8d[_0xaa91('0x2f')]['includeAll']){_0x31169e['include']=[{'all':!![]}];}_0x31169e=_['merge']({},_0x31169e,_0x3e4f8d[_0xaa91('0x41')]);return db[_0xaa91('0x28')][_0xaa91('0x42')](_0x31169e)[_0xaa91('0x21')](handleEntityNotFound(_0x35592b,null))[_0xaa91('0x21')](respondWithResult(_0x35592b,null))['catch'](handleError(_0x35592b,null));};exports['create']=function(_0x5c3d61,_0x530d22){return db[_0xaa91('0x28')][_0xaa91('0x43')](_0x5c3d61[_0xaa91('0x44')],{})[_0xaa91('0x21')](function(_0x53b81a){var _0x54a661=_0x5c3d61[_0xaa91('0x45')][_0xaa91('0x22')]({'plain':!![]});if(!_0x54a661)throw new Error(_0xaa91('0x46'));if(_0x54a661[_0xaa91('0x47')]===_0xaa91('0x45')){var _0x590a66=_0x53b81a['get']({'plain':!![]});var _0x364912=_0xaa91('0x48');return db[_0xaa91('0x49')][_0xaa91('0x42')]({'where':{'name':_0x364912,'userProfileId':_0x54a661['userProfileId']},'raw':!![]})['then'](function(_0x3df587){if(_0x3df587&&_0x3df587['autoAssociation']===0x0){return db['UserProfileResource'][_0xaa91('0x43')]({'name':_0x590a66['name'],'resourceId':_0x590a66['id'],'type':_0x3df587[_0xaa91('0x27')],'sectionId':_0x3df587['id']},{})[_0xaa91('0x21')](function(){return _0x53b81a;});}else{return _0x53b81a;}})[_0xaa91('0x3e')](function(_0x5729d1){logger[_0xaa91('0x25')](_0xaa91('0x4a'),_0x5729d1);throw _0x5729d1;});}return _0x53b81a;})[_0xaa91('0x21')](respondWithResult(_0x530d22,0xc9))[_0xaa91('0x3e')](handleError(_0x530d22,null));};exports[_0xaa91('0x4b')]=function(_0x1046b4,_0x3b3024){if(_0x1046b4[_0xaa91('0x44')]['id']){delete _0x1046b4['body']['id'];}return db[_0xaa91('0x28')][_0xaa91('0x42')]({'where':{'id':_0x1046b4[_0xaa91('0x4c')]['id']}})[_0xaa91('0x21')](handleEntityNotFound(_0x3b3024,null))['then'](saveUpdates(_0x1046b4[_0xaa91('0x44')],null))[_0xaa91('0x21')](respondWithResult(_0x3b3024,null))[_0xaa91('0x3e')](handleError(_0x3b3024,null));};exports[_0xaa91('0x24')]=function(_0x3882ee,_0x417524){return db[_0xaa91('0x28')][_0xaa91('0x42')]({'where':{'id':_0x3882ee['params']['id']}})[_0xaa91('0x21')](handleEntityNotFound(_0x417524,null))['then'](removeEntity(_0x417524,null))['catch'](handleError(_0x417524,null));};
\ No newline at end of file
index 6609724..94ab7c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe63d=['path','rimraf','./template.attributes','exports','define','Template','tools_templates','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x3ebe06,_0x4a2793){var _0x13a458=function(_0xcc23e0){while(--_0xcc23e0){_0x3ebe06['push'](_0x3ebe06['shift']());}};_0x13a458(++_0x4a2793);}(_0xe63d,0xb0));var _0xde63=function(_0x455913,_0x2b7a92){_0x455913=_0x455913-0x0;var _0x3025b8=_0xe63d[_0x455913];return _0x3025b8;};'use strict';var _=require(_0xde63('0x0'));var util=require('util');var logger=require(_0xde63('0x1'))(_0xde63('0x2'));var moment=require(_0xde63('0x3'));var BPromise=require(_0xde63('0x4'));var rp=require(_0xde63('0x5'));var fs=require('fs');var path=require(_0xde63('0x6'));var rimraf=require(_0xde63('0x7'));var config=require('../../config/environment');var attributes=require(_0xde63('0x8'));module[_0xde63('0x9')]=function(_0x629d57,_0x40dfef){return _0x629d57[_0xde63('0xa')](_0xde63('0xb'),attributes,{'tableName':_0xde63('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd6f8=['moment','request-promise','path','rimraf','./template.attributes','exports','define','Template','tools_templates','lodash','util','../../config/logger','api'];(function(_0x1b8b38,_0x2b0ea7){var _0x2d08c8=function(_0x258c16){while(--_0x258c16){_0x1b8b38['push'](_0x1b8b38['shift']());}};_0x2d08c8(++_0x2b0ea7);}(_0xd6f8,0x11a));var _0x8d6f=function(_0x50e703,_0x127370){_0x50e703=_0x50e703-0x0;var _0xf1840c=_0xd6f8[_0x50e703];return _0xf1840c;};'use strict';var _=require(_0x8d6f('0x0'));var util=require(_0x8d6f('0x1'));var logger=require(_0x8d6f('0x2'))(_0x8d6f('0x3'));var moment=require(_0x8d6f('0x4'));var BPromise=require('bluebird');var rp=require(_0x8d6f('0x5'));var fs=require('fs');var path=require(_0x8d6f('0x6'));var rimraf=require(_0x8d6f('0x7'));var config=require('../../config/environment');var attributes=require(_0x8d6f('0x8'));module[_0x8d6f('0x9')]=function(_0x52e4bf,_0x531739){return _0x52e4bf[_0x8d6f('0xa')](_0x8d6f('0xb'),attributes,{'tableName':_0x8d6f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6599aea..d2765c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7869=['where','attributes','limit','include','map','model','lodash','bluebird','../../mysqldb','../../config/logger','rpc','http','then','info','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetTemplate','Template','findAll','options','raw'];(function(_0x5b92e6,_0x4c2472){var _0x441512=function(_0x15262c){while(--_0x15262c){_0x5b92e6['push'](_0x5b92e6['shift']());}};_0x441512(++_0x4c2472);}(_0x7869,0x13a));var _0x9786=function(_0x12489a,_0x4f0c63){_0x12489a=_0x12489a-0x0;var _0xfd037b=_0x7869[_0x12489a];return _0xfd037b;};'use strict';var _=require(_0x9786('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x9786('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9786('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x9786('0x3'))(_0x9786('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x9786('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x438efc,_0x55f1b1,_0xe1b821){return new BPromise(function(_0x51ae4e,_0x20cdfe){return client['request'](_0x438efc,_0xe1b821)[_0x9786('0x6')](function(_0x2de469){logger[_0x9786('0x7')](_0x9786('0x8'),_0x55f1b1,_0x9786('0x9'));logger[_0x9786('0xa')](_0x9786('0xb'),_0x55f1b1,'request\x20sent',JSON[_0x9786('0xc')](_0x2de469));if(_0x2de469[_0x9786('0xd')]){if(_0x2de469[_0x9786('0xd')][_0x9786('0xe')]===0x1f4){logger['error']('Template,\x20%s,\x20%s',_0x55f1b1,_0x2de469[_0x9786('0xd')]['message']);return _0x20cdfe(_0x2de469[_0x9786('0xd')]['message']);}logger[_0x9786('0xd')](_0x9786('0x8'),_0x55f1b1,_0x2de469[_0x9786('0xd')][_0x9786('0xf')]);return _0x51ae4e(_0x2de469[_0x9786('0xd')][_0x9786('0xf')]);}else{logger[_0x9786('0x7')](_0x9786('0x8'),_0x55f1b1,_0x9786('0x9'));_0x51ae4e(_0x2de469['result']['message']);}})[_0x9786('0x10')](function(_0x421d0f){logger[_0x9786('0xd')](_0x9786('0x8'),_0x55f1b1,_0x421d0f);_0x20cdfe(_0x421d0f);});});}exports[_0x9786('0x11')]=function(_0x21e867){var _0xe814f4=this;return new Promise(function(_0x482eb2,_0x197c1a){return db[_0x9786('0x12')][_0x9786('0x13')]({'raw':_0x21e867[_0x9786('0x14')]?_0x21e867[_0x9786('0x14')][_0x9786('0x15')]===undefined?!![]:![]:!![],'where':_0x21e867['options']?_0x21e867[_0x9786('0x14')][_0x9786('0x16')]||null:null,'attributes':_0x21e867[_0x9786('0x14')]?_0x21e867[_0x9786('0x14')][_0x9786('0x17')]||null:null,'limit':_0x21e867[_0x9786('0x14')]?_0x21e867['options'][_0x9786('0x18')]||null:null,'include':_0x21e867[_0x9786('0x14')]?_0x21e867[_0x9786('0x14')][_0x9786('0x19')]?_[_0x9786('0x1a')](_0x21e867['options'][_0x9786('0x19')],function(_0x5e1958){return{'model':db[_0x5e1958['model']],'as':_0x5e1958['as'],'attributes':_0x5e1958[_0x9786('0x17')],'include':_0x5e1958['include']?_['map'](_0x5e1958[_0x9786('0x19')],function(_0x23dbcf){return{'model':db[_0x23dbcf[_0x9786('0x1b')]],'as':_0x23dbcf['as'],'attributes':_0x23dbcf['attributes'],'include':_0x23dbcf[_0x9786('0x19')]?_[_0x9786('0x1a')](_0x23dbcf['include'],function(_0x32088f){return{'model':db[_0x32088f['model']],'as':_0x32088f['as'],'attributes':_0x32088f['attributes']};}):[]};}):[]};}):[]:[]})[_0x9786('0x6')](function(_0x4b0659){logger['info']('GetTemplate',_0x21e867);logger[_0x9786('0xa')]('GetTemplate',_0x21e867,JSON['stringify'](_0x4b0659));_0x482eb2(_0x4b0659);})[_0x9786('0x10')](function(_0x303aa4){logger[_0x9786('0xd')]('GetTemplate',_0x303aa4[_0x9786('0xf')],_0x21e867);_0x197c1a(_0xe814f4[_0x9786('0xd')](0x1f4,_0x303aa4['message']));});});};
\ No newline at end of file
+var _0x1c7d=['Template','findAll','options','raw','where','attributes','limit','include','map','model','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Template,\x20%s,\x20%s','request\x20sent','result','GetTemplate'];(function(_0x523d5d,_0x27d118){var _0x3ec680=function(_0x22dc77){while(--_0x22dc77){_0x523d5d['push'](_0x523d5d['shift']());}};_0x3ec680(++_0x27d118);}(_0x1c7d,0xe3));var _0xd1c7=function(_0xddbaf4,_0x2a0612){_0xddbaf4=_0xddbaf4-0x0;var _0x2652f0=_0x1c7d[_0xddbaf4];return _0x2652f0;};'use strict';var _=require(_0xd1c7('0x0'));var util=require(_0xd1c7('0x1'));var moment=require(_0xd1c7('0x2'));var BPromise=require(_0xd1c7('0x3'));var rs=require(_0xd1c7('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd1c7('0x5'))['db'];var utils=require(_0xd1c7('0x6'));var logger=require(_0xd1c7('0x7'))(_0xd1c7('0x8'));var config=require(_0xd1c7('0x9'));var jayson=require(_0xd1c7('0xa'));var client=jayson[_0xd1c7('0xb')][_0xd1c7('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x8c7786,_0x35da1c,_0xf36876){return new BPromise(function(_0x98055d,_0x2fb732){return client['request'](_0x8c7786,_0xf36876)[_0xd1c7('0xd')](function(_0x213779){logger[_0xd1c7('0xe')]('Template,\x20%s,\x20%s',_0x35da1c,'request\x20sent');logger[_0xd1c7('0xf')](_0xd1c7('0x10'),_0x35da1c,'request\x20sent',JSON[_0xd1c7('0x11')](_0x213779));if(_0x213779[_0xd1c7('0x12')]){if(_0x213779['error'][_0xd1c7('0x13')]===0x1f4){logger[_0xd1c7('0x12')]('Template,\x20%s,\x20%s',_0x35da1c,_0x213779['error'][_0xd1c7('0x14')]);return _0x2fb732(_0x213779['error'][_0xd1c7('0x14')]);}logger[_0xd1c7('0x12')](_0xd1c7('0x15'),_0x35da1c,_0x213779[_0xd1c7('0x12')][_0xd1c7('0x14')]);return _0x98055d(_0x213779[_0xd1c7('0x12')][_0xd1c7('0x14')]);}else{logger[_0xd1c7('0xe')](_0xd1c7('0x15'),_0x35da1c,_0xd1c7('0x16'));_0x98055d(_0x213779[_0xd1c7('0x17')][_0xd1c7('0x14')]);}})['catch'](function(_0xe5490e){logger['error'](_0xd1c7('0x15'),_0x35da1c,_0xe5490e);_0x2fb732(_0xe5490e);});});}exports[_0xd1c7('0x18')]=function(_0x52b044){var _0x464164=this;return new Promise(function(_0x4ac40d,_0x120ece){return db[_0xd1c7('0x19')][_0xd1c7('0x1a')]({'raw':_0x52b044[_0xd1c7('0x1b')]?_0x52b044['options'][_0xd1c7('0x1c')]===undefined?!![]:![]:!![],'where':_0x52b044[_0xd1c7('0x1b')]?_0x52b044['options'][_0xd1c7('0x1d')]||null:null,'attributes':_0x52b044[_0xd1c7('0x1b')]?_0x52b044[_0xd1c7('0x1b')][_0xd1c7('0x1e')]||null:null,'limit':_0x52b044['options']?_0x52b044[_0xd1c7('0x1b')][_0xd1c7('0x1f')]||null:null,'include':_0x52b044['options']?_0x52b044[_0xd1c7('0x1b')][_0xd1c7('0x20')]?_[_0xd1c7('0x21')](_0x52b044[_0xd1c7('0x1b')][_0xd1c7('0x20')],function(_0x31891e){return{'model':db[_0x31891e['model']],'as':_0x31891e['as'],'attributes':_0x31891e[_0xd1c7('0x1e')],'include':_0x31891e['include']?_[_0xd1c7('0x21')](_0x31891e[_0xd1c7('0x20')],function(_0x49a0f5){return{'model':db[_0x49a0f5[_0xd1c7('0x22')]],'as':_0x49a0f5['as'],'attributes':_0x49a0f5['attributes'],'include':_0x49a0f5[_0xd1c7('0x20')]?_['map'](_0x49a0f5['include'],function(_0x5757f3){return{'model':db[_0x5757f3[_0xd1c7('0x22')]],'as':_0x5757f3['as'],'attributes':_0x5757f3[_0xd1c7('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x25cc3b){logger[_0xd1c7('0xe')](_0xd1c7('0x18'),_0x52b044);logger[_0xd1c7('0xf')](_0xd1c7('0x18'),_0x52b044,JSON[_0xd1c7('0x11')](_0x25cc3b));_0x4ac40d(_0x25cc3b);})[_0xd1c7('0x23')](function(_0x6959ce){logger[_0xd1c7('0x12')](_0xd1c7('0x18'),_0x6959ce['message'],_0x52b044);_0x120ece(_0x464164[_0xd1c7('0x12')](0x1f4,_0x6959ce[_0xd1c7('0x14')]));});});};
\ No newline at end of file
index f2da6a0..e5c9112 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1611=['update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','show','/:id/all_conditions','isAuthenticated','getAnyConditions','/:id/actions','getActions','post','addAllCondition','/:id/any_conditions','addAnyCondition'];(function(_0x20f8a2,_0x2632a9){var _0x1f410f=function(_0x464787){while(--_0x464787){_0x20f8a2['push'](_0x20f8a2['shift']());}};_0x1f410f(++_0x2632a9);}(_0x1611,0xb9));var _0x1161=function(_0x2a102b,_0x2168b7){_0x2a102b=_0x2a102b-0x0;var _0x28cba9=_0x1611[_0x2a102b];return _0x28cba9;};'use strict';var multer=require(_0x1161('0x0'));var util=require(_0x1161('0x1'));var path=require(_0x1161('0x2'));var timeout=require(_0x1161('0x3'));var express=require(_0x1161('0x4'));var router=express[_0x1161('0x5')]();var fs_extra=require(_0x1161('0x6'));var auth=require(_0x1161('0x7'));var interaction=require(_0x1161('0x8'));var config=require(_0x1161('0x9'));var controller=require('./trigger.controller');router[_0x1161('0xa')]('/',auth['isAuthenticated'](),controller[_0x1161('0xb')]);router[_0x1161('0xa')](_0x1161('0xc'),auth['isAuthenticated'](),controller[_0x1161('0xd')]);router[_0x1161('0xa')](_0x1161('0xe'),auth[_0x1161('0xf')](),controller['getAllConditions']);router['get']('/:id/any_conditions',auth[_0x1161('0xf')](),controller[_0x1161('0x10')]);router[_0x1161('0xa')](_0x1161('0x11'),auth['isAuthenticated'](),controller[_0x1161('0x12')]);router['post']('/',auth[_0x1161('0xf')](),controller['create']);router[_0x1161('0x13')](_0x1161('0xe'),auth['isAuthenticated'](),controller[_0x1161('0x14')]);router[_0x1161('0x13')](_0x1161('0x15'),auth['isAuthenticated'](),controller[_0x1161('0x16')]);router[_0x1161('0x13')](_0x1161('0x11'),auth['isAuthenticated'](),controller['addAction']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x1161('0x17')]);router[_0x1161('0x18')](_0x1161('0xc'),auth[_0x1161('0xf')](),controller[_0x1161('0x19')]);module['exports']=router;
\ No newline at end of file
+var _0x50c0=['./trigger.controller','get','isAuthenticated','index','/:id','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','create','addAllCondition','addAction','update','delete','destroy','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3c8d56,_0x18477b){var _0x300301=function(_0x1c5de3){while(--_0x1c5de3){_0x3c8d56['push'](_0x3c8d56['shift']());}};_0x300301(++_0x18477b);}(_0x50c0,0xd0));var _0x050c=function(_0x4c3ece,_0x57053e){_0x4c3ece=_0x4c3ece-0x0;var _0x409c1d=_0x50c0[_0x4c3ece];return _0x409c1d;};'use strict';var multer=require(_0x050c('0x0'));var util=require('util');var path=require(_0x050c('0x1'));var timeout=require(_0x050c('0x2'));var express=require('express');var router=express[_0x050c('0x3')]();var fs_extra=require(_0x050c('0x4'));var auth=require(_0x050c('0x5'));var interaction=require(_0x050c('0x6'));var config=require(_0x050c('0x7'));var controller=require(_0x050c('0x8'));router[_0x050c('0x9')]('/',auth[_0x050c('0xa')](),controller[_0x050c('0xb')]);router['get'](_0x050c('0xc'),auth[_0x050c('0xa')](),controller[_0x050c('0xd')]);router['get'](_0x050c('0xe'),auth['isAuthenticated'](),controller[_0x050c('0xf')]);router[_0x050c('0x9')](_0x050c('0x10'),auth['isAuthenticated'](),controller[_0x050c('0x11')]);router[_0x050c('0x9')](_0x050c('0x12'),auth[_0x050c('0xa')](),controller[_0x050c('0x13')]);router[_0x050c('0x14')]('/',auth['isAuthenticated'](),controller[_0x050c('0x15')]);router[_0x050c('0x14')](_0x050c('0xe'),auth[_0x050c('0xa')](),controller[_0x050c('0x16')]);router['post'](_0x050c('0x10'),auth[_0x050c('0xa')](),controller['addAnyCondition']);router[_0x050c('0x14')](_0x050c('0x12'),auth['isAuthenticated'](),controller[_0x050c('0x17')]);router['put']('/:id',auth[_0x050c('0xa')](),controller[_0x050c('0x18')]);router[_0x050c('0x19')]('/:id',auth[_0x050c('0xa')](),controller[_0x050c('0x1a')]);module['exports']=router;
\ No newline at end of file
index fb0c49f..8152069 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x684a=['BOOLEAN','exports','STRING'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x684a,0xaf));var _0xa684=function(_0x3d6875,_0x156332){_0x3d6875=_0x3d6875-0x0;var _0x4ab0cd=_0x684a[_0x3d6875];return _0x4ab0cd;};'use strict';var Sequelize=require('sequelize');module[_0xa684('0x0')]={'name':{'type':Sequelize[_0xa684('0x1')]},'channel':{'type':Sequelize[_0xa684('0x1')]},'description':{'type':Sequelize[_0xa684('0x1')]},'status':{'type':Sequelize[_0xa684('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x7c2f=['BOOLEAN','sequelize','exports','STRING'];(function(_0x11cf32,_0x560d24){var _0x163a94=function(_0x6a41b8){while(--_0x6a41b8){_0x11cf32['push'](_0x11cf32['shift']());}};_0x163a94(++_0x560d24);}(_0x7c2f,0x85));var _0xf7c2=function(_0x1b92ee,_0x371859){_0x1b92ee=_0x1b92ee-0x0;var _0x261f98=_0x7c2f[_0x1b92ee];return _0x261f98;};'use strict';var Sequelize=require(_0xf7c2('0x0'));module[_0xf7c2('0x1')]={'name':{'type':Sequelize[_0xf7c2('0x2')]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xf7c2('0x2')]},'status':{'type':Sequelize[_0xf7c2('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 9d6c37e..568f388 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15ae=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','get','Triggers','UserProfileResource','end','name','index','map','Trigger','rawAttributes','fieldName','type','keys','query','filters','intersection','fields','attributes','length','model','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','params','include','create','body','user','role','UserProfileSection','find','userProfileId','error','update','addAllCondition','TriggerAllId','Condition','TriggerAnyId','getAllConditions','findOne','nolimit','getAnyConditions','addAction','TriggerId','Action','getActions'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x15ae,0x117));var _0xe15a=function(_0x4394aa,_0x33bbf8){_0x4394aa=_0x4394aa-0x0;var _0x4f2a16=_0x15ae[_0x4394aa];return _0x4f2a16;};'use strict';var emlformat=require(_0xe15a('0x0'));var rimraf=require(_0xe15a('0x1'));var zipdir=require(_0xe15a('0x2'));var jsonpatch=require(_0xe15a('0x3'));var rp=require(_0xe15a('0x4'));var moment=require(_0xe15a('0x5'));var BPromise=require(_0xe15a('0x6'));var Mustache=require(_0xe15a('0x7'));var util=require(_0xe15a('0x8'));var path=require(_0xe15a('0x9'));var sox=require(_0xe15a('0xa'));var csv=require('to-csv');var ejs=require(_0xe15a('0xb'));var fs=require('fs');var fs_extra=require(_0xe15a('0xc'));var _=require('lodash');var squel=require(_0xe15a('0xd'));var crypto=require(_0xe15a('0xe'));var jsforce=require(_0xe15a('0xf'));var deskjs=require(_0xe15a('0x10'));var toCsv=require('to-csv');var querystring=require(_0xe15a('0x11'));var Papa=require(_0xe15a('0x12'));var Redis=require(_0xe15a('0x13'));var authService=require(_0xe15a('0x14'));var qs=require(_0xe15a('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe15a('0x16'))(_0xe15a('0x17'));var utils=require('../../config/utils');var config=require(_0xe15a('0x18'));var licenseUtil=require(_0xe15a('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x446812,_0x11bced){_0x11bced=_0x11bced||0xcc;return function(_0x388430){if(_0x388430){return _0x446812[_0xe15a('0x1a')](_0x11bced);}return _0x446812[_0xe15a('0x1b')](_0x11bced)['end']();};}function respondWithResult(_0xf807a,_0x247b73){_0x247b73=_0x247b73||0xc8;return function(_0x5e1e6a){if(_0x5e1e6a){return _0xf807a[_0xe15a('0x1b')](_0x247b73)[_0xe15a('0x1c')](_0x5e1e6a);}};}function respondWithFilteredResult(_0x4f4a8d,_0x46aebb){return function(_0x5013d4){if(_0x5013d4){var _0x5d6c1f=typeof _0x46aebb[_0xe15a('0x1d')]===_0xe15a('0x1e')&&typeof _0x46aebb[_0xe15a('0x1f')]===_0xe15a('0x1e');var _0xb6449c=_0x5013d4[_0xe15a('0x20')];var _0x346e77=_0x5d6c1f?0x0:_0x46aebb[_0xe15a('0x1d')];var _0x34ffe6=_0x5d6c1f?_0x5013d4['count']:_0x46aebb[_0xe15a('0x1d')]+_0x46aebb['limit'];var _0x3cc353;if(_0x34ffe6>=_0xb6449c){_0x34ffe6=_0xb6449c;_0x3cc353=0xc8;}else{_0x3cc353=0xce;}_0x4f4a8d[_0xe15a('0x1b')](_0x3cc353);return _0x4f4a8d[_0xe15a('0x21')]('Content-Range',_0x346e77+'-'+_0x34ffe6+'/'+_0xb6449c)['json'](_0x5013d4);}return null;};}function patchUpdates(_0x45fcc8){return function(_0x3c1cca){try{jsonpatch[_0xe15a('0x22')](_0x3c1cca,_0x45fcc8,!![]);}catch(_0x291aa1){return BPromise[_0xe15a('0x23')](_0x291aa1);}return _0x3c1cca[_0xe15a('0x24')]();};}function saveUpdates(_0x312867,_0x3df3f6){return function(_0x4eed83){if(_0x4eed83){return _0x4eed83['update'](_0x312867)[_0xe15a('0x25')](function(_0x156b25){return _0x156b25;});}return null;};}function removeEntity(_0x20f9a9,_0x235727){return function(_0x37e1a0){if(_0x37e1a0){return _0x37e1a0[_0xe15a('0x26')]()['then'](function(){var _0x1025a6=_0x37e1a0[_0xe15a('0x27')]({'plain':!![]});var _0x13ec0c=_0xe15a('0x28');return db[_0xe15a('0x29')][_0xe15a('0x26')]({'where':{'type':_0x13ec0c,'resourceId':_0x1025a6['id']}})['then'](function(){return _0x37e1a0;});})[_0xe15a('0x25')](function(){_0x20f9a9[_0xe15a('0x1b')](0xcc)[_0xe15a('0x2a')]();});}};}function handleEntityNotFound(_0x5192b8,_0x57adf6){return function(_0x5b3c15){if(!_0x5b3c15){_0x5192b8[_0xe15a('0x1a')](0x194);}return _0x5b3c15;};}function handleError(_0x39c33c,_0x3aa02b){_0x3aa02b=_0x3aa02b||0x1f4;return function(_0x1d8859){logger['error'](_0x1d8859['stack']);if(_0x1d8859[_0xe15a('0x2b')]){delete _0x1d8859['name'];}_0x39c33c[_0xe15a('0x1b')](_0x3aa02b)['send'](_0x1d8859);};}exports[_0xe15a('0x2c')]=function(_0x575820,_0x4e9060){var _0x4a5ce3={},_0x5c190b={},_0x14de11={'count':0x0,'rows':[]};var _0x2f1bb3=_[_0xe15a('0x2d')](db[_0xe15a('0x2e')][_0xe15a('0x2f')],function(_0x23499b){return{'name':_0x23499b[_0xe15a('0x30')],'type':_0x23499b[_0xe15a('0x31')]['key']};});_0x5c190b['model']=_[_0xe15a('0x2d')](_0x2f1bb3,'name');_0x5c190b['query']=_[_0xe15a('0x32')](_0x575820[_0xe15a('0x33')]);_0x5c190b[_0xe15a('0x34')]=_[_0xe15a('0x35')](_0x5c190b['model'],_0x5c190b['query']);_0x4a5ce3['attributes']=_[_0xe15a('0x35')](_0x5c190b['model'],qs[_0xe15a('0x36')](_0x575820['query']['fields']));_0x4a5ce3[_0xe15a('0x37')]=_0x4a5ce3[_0xe15a('0x37')][_0xe15a('0x38')]?_0x4a5ce3[_0xe15a('0x37')]:_0x5c190b[_0xe15a('0x39')];if(!_0x575820['query'][_0xe15a('0x3a')]('nolimit')){_0x4a5ce3[_0xe15a('0x1f')]=qs['limit'](_0x575820[_0xe15a('0x33')][_0xe15a('0x1f')]);_0x4a5ce3[_0xe15a('0x1d')]=qs[_0xe15a('0x1d')](_0x575820[_0xe15a('0x33')][_0xe15a('0x1d')]);}_0x4a5ce3[_0xe15a('0x3b')]=qs['sort'](_0x575820[_0xe15a('0x33')][_0xe15a('0x3c')]);_0x4a5ce3[_0xe15a('0x3d')]=qs[_0xe15a('0x34')](_[_0xe15a('0x3e')](_0x575820[_0xe15a('0x33')],_0x5c190b[_0xe15a('0x34')]),_0x2f1bb3);if(_0x575820[_0xe15a('0x33')][_0xe15a('0x3f')]){_0x4a5ce3['where']=_[_0xe15a('0x40')](_0x4a5ce3[_0xe15a('0x3d')],{'$or':_['map'](_0x2f1bb3,function(_0x2b4699){if(_0x2b4699[_0xe15a('0x31')]!==_0xe15a('0x41')){var _0x1a1e83={};_0x1a1e83[_0x2b4699[_0xe15a('0x2b')]]={'$like':'%'+_0x575820[_0xe15a('0x33')]['filter']+'%'};return _0x1a1e83;}})});}_0x4a5ce3=_[_0xe15a('0x40')]({},_0x4a5ce3,_0x575820[_0xe15a('0x42')]);var _0x5123b8={'where':_0x4a5ce3[_0xe15a('0x3d')]};return db[_0xe15a('0x2e')][_0xe15a('0x20')](_0x5123b8)['then'](function(_0x2b4660){_0x14de11[_0xe15a('0x20')]=_0x2b4660;if(_0x575820[_0xe15a('0x33')][_0xe15a('0x43')]){_0x4a5ce3['include']=[{'all':!![]}];}return db[_0xe15a('0x2e')]['findAll'](_0x4a5ce3);})[_0xe15a('0x25')](function(_0x321276){_0x14de11[_0xe15a('0x44')]=_0x321276;return _0x14de11;})[_0xe15a('0x25')](respondWithFilteredResult(_0x4e9060,_0x4a5ce3))[_0xe15a('0x45')](handleError(_0x4e9060,null));};exports['show']=function(_0x481528,_0x20e949){var _0x180e0d={'raw':![],'where':{'id':_0x481528[_0xe15a('0x46')]['id']}},_0x2f8e93={};_0x2f8e93[_0xe15a('0x39')]=_[_0xe15a('0x32')](db[_0xe15a('0x2e')][_0xe15a('0x2f')]);_0x2f8e93[_0xe15a('0x33')]=_[_0xe15a('0x32')](_0x481528[_0xe15a('0x33')]);_0x2f8e93[_0xe15a('0x34')]=_['intersection'](_0x2f8e93[_0xe15a('0x39')],_0x2f8e93[_0xe15a('0x33')]);_0x180e0d[_0xe15a('0x37')]=_[_0xe15a('0x35')](_0x2f8e93[_0xe15a('0x39')],qs[_0xe15a('0x36')](_0x481528[_0xe15a('0x33')][_0xe15a('0x36')]));_0x180e0d[_0xe15a('0x37')]=_0x180e0d[_0xe15a('0x37')]['length']?_0x180e0d['attributes']:_0x2f8e93[_0xe15a('0x39')];if(_0x481528[_0xe15a('0x33')][_0xe15a('0x43')]){_0x180e0d[_0xe15a('0x47')]=[{'all':!![]}];}_0x180e0d=_['merge']({},_0x180e0d,_0x481528[_0xe15a('0x42')]);return db[_0xe15a('0x2e')]['find'](_0x180e0d)[_0xe15a('0x25')](handleEntityNotFound(_0x20e949,null))['then'](respondWithResult(_0x20e949,null))['catch'](handleError(_0x20e949,null));};exports['create']=function(_0x4b4b80,_0x3ac51b){return db[_0xe15a('0x2e')][_0xe15a('0x48')](_0x4b4b80[_0xe15a('0x49')],{})['then'](function(_0x33a7d8){var _0x541abc=_0x4b4b80[_0xe15a('0x4a')][_0xe15a('0x27')]({'plain':!![]});if(!_0x541abc)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x541abc[_0xe15a('0x4b')]==='user'){var _0x4ec9cc=_0x33a7d8[_0xe15a('0x27')]({'plain':!![]});var _0x4ffafe=_0xe15a('0x28');return db[_0xe15a('0x4c')][_0xe15a('0x4d')]({'where':{'name':_0x4ffafe,'userProfileId':_0x541abc[_0xe15a('0x4e')]},'raw':!![]})[_0xe15a('0x25')](function(_0x1fbabd){if(_0x1fbabd&&_0x1fbabd['autoAssociation']===0x0){return db[_0xe15a('0x29')][_0xe15a('0x48')]({'name':_0x4ec9cc['name'],'resourceId':_0x4ec9cc['id'],'type':_0x1fbabd[_0xe15a('0x2b')],'sectionId':_0x1fbabd['id']},{})[_0xe15a('0x25')](function(){return _0x33a7d8;});}else{return _0x33a7d8;}})['catch'](function(_0x576023){logger[_0xe15a('0x4f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x576023);throw _0x576023;});}return _0x33a7d8;})[_0xe15a('0x25')](respondWithResult(_0x3ac51b,0xc9))['catch'](handleError(_0x3ac51b,null));};exports[_0xe15a('0x50')]=function(_0x339964,_0x34074c){if(_0x339964['body']['id']){delete _0x339964['body']['id'];}return db[_0xe15a('0x2e')][_0xe15a('0x4d')]({'where':{'id':_0x339964[_0xe15a('0x46')]['id']}})['then'](handleEntityNotFound(_0x34074c,null))[_0xe15a('0x25')](saveUpdates(_0x339964[_0xe15a('0x49')],null))['then'](respondWithResult(_0x34074c,null))[_0xe15a('0x45')](handleError(_0x34074c,null));};exports['destroy']=function(_0x320ef0,_0x4c672d){return db[_0xe15a('0x2e')][_0xe15a('0x4d')]({'where':{'id':_0x320ef0[_0xe15a('0x46')]['id']}})[_0xe15a('0x25')](handleEntityNotFound(_0x4c672d,null))[_0xe15a('0x25')](removeEntity(_0x4c672d,null))[_0xe15a('0x45')](handleError(_0x4c672d,null));};exports[_0xe15a('0x51')]=function(_0x5d2eab,_0x3fe3c4,_0x57a7e4){if(_0x5d2eab[_0xe15a('0x49')]['id']){delete _0x5d2eab[_0xe15a('0x49')]['id'];}return db[_0xe15a('0x2e')][_0xe15a('0x4d')]({'where':{'id':_0x5d2eab[_0xe15a('0x46')]['id']}})[_0xe15a('0x25')](handleEntityNotFound(_0x3fe3c4,null))[_0xe15a('0x25')](function(_0x2e2459){if(_0x2e2459){_0x5d2eab[_0xe15a('0x49')][_0xe15a('0x52')]=_0x2e2459['id'];return db[_0xe15a('0x53')][_0xe15a('0x48')](_0x5d2eab[_0xe15a('0x49')]);}})['then'](respondWithResult(_0x3fe3c4,null))['catch'](handleError(_0x3fe3c4,null));};exports['addAnyCondition']=function(_0x13cba4,_0x4d4b98,_0x35a939){if(_0x13cba4['body']['id']){delete _0x13cba4[_0xe15a('0x49')]['id'];}return db['Trigger']['find']({'where':{'id':_0x13cba4['params']['id']}})[_0xe15a('0x25')](handleEntityNotFound(_0x4d4b98,null))[_0xe15a('0x25')](function(_0x5c42fb){if(_0x5c42fb){_0x13cba4['body'][_0xe15a('0x54')]=_0x5c42fb['id'];return db[_0xe15a('0x53')][_0xe15a('0x48')](_0x13cba4['body']);}})['then'](respondWithResult(_0x4d4b98,null))[_0xe15a('0x45')](handleError(_0x4d4b98,null));};exports['getAllConditions']=function(_0x4050a8,_0x4b5036,_0x2f32d2){var _0x1b3ff1={};var _0x3ccb62={};var _0xc7cf18;var _0x61d67c;return db[_0xe15a('0x2e')]['findOne']({'where':{'id':_0x4050a8[_0xe15a('0x46')]['id']}})[_0xe15a('0x25')](handleEntityNotFound(_0x4b5036,null))[_0xe15a('0x25')](function(_0x3af463){if(_0x3af463){_0xc7cf18=_0x3af463;_0x3ccb62['model']=_[_0xe15a('0x32')](db['Condition'][_0xe15a('0x2f')]);_0x3ccb62[_0xe15a('0x33')]=_[_0xe15a('0x32')](_0x4050a8[_0xe15a('0x33')]);_0x3ccb62['filters']=_[_0xe15a('0x35')](_0x3ccb62[_0xe15a('0x39')],_0x3ccb62['query']);_0x1b3ff1[_0xe15a('0x37')]=_['intersection'](_0x3ccb62['model'],qs[_0xe15a('0x36')](_0x4050a8['query']['fields']));_0x1b3ff1[_0xe15a('0x37')]=_0x1b3ff1[_0xe15a('0x37')][_0xe15a('0x38')]?_0x1b3ff1[_0xe15a('0x37')]:_0x3ccb62['model'];_0x1b3ff1[_0xe15a('0x3b')]=qs[_0xe15a('0x3c')](_0x4050a8[_0xe15a('0x33')]['sort']);_0x1b3ff1[_0xe15a('0x3d')]=qs[_0xe15a('0x34')](_[_0xe15a('0x3e')](_0x4050a8[_0xe15a('0x33')],_0x3ccb62[_0xe15a('0x34')]));if(_0x4050a8['query'][_0xe15a('0x3f')]){_0x1b3ff1[_0xe15a('0x3d')]=_[_0xe15a('0x40')](_0x1b3ff1[_0xe15a('0x3d')],{'$or':_['map'](_0x1b3ff1[_0xe15a('0x37')],function(_0x3648f7){var _0x2a6978={};_0x2a6978[_0x3648f7]={'$like':'%'+_0x4050a8[_0xe15a('0x33')]['filter']+'%'};return _0x2a6978;})});}_0x1b3ff1=_[_0xe15a('0x40')]({},_0x1b3ff1,_0x4050a8[_0xe15a('0x42')]);return _0xc7cf18[_0xe15a('0x55')](_0x1b3ff1);}})[_0xe15a('0x25')](function(_0xa0896d){if(_0xa0896d){_0x61d67c=_0xa0896d['length'];if(!_0x4050a8[_0xe15a('0x33')][_0xe15a('0x3a')]('nolimit')){_0x1b3ff1[_0xe15a('0x1f')]=qs[_0xe15a('0x1f')](_0x4050a8[_0xe15a('0x33')][_0xe15a('0x1f')]);_0x1b3ff1[_0xe15a('0x1d')]=qs['offset'](_0x4050a8[_0xe15a('0x33')][_0xe15a('0x1d')]);}return _0xc7cf18[_0xe15a('0x55')](_0x1b3ff1);}})[_0xe15a('0x25')](function(_0x2be577){if(_0x2be577){return _0x2be577?{'count':_0x61d67c,'rows':_0x2be577}:null;}})[_0xe15a('0x25')](respondWithResult(_0x4b5036,null))['catch'](handleError(_0x4b5036,null));};exports['getAnyConditions']=function(_0x1aa27c,_0x1a5b53,_0x762db){var _0x26b4a8={};var _0x53e2ef={};var _0x371bfa;var _0x2f1e35;return db['Trigger'][_0xe15a('0x56')]({'where':{'id':_0x1aa27c[_0xe15a('0x46')]['id']}})[_0xe15a('0x25')](handleEntityNotFound(_0x1a5b53,null))[_0xe15a('0x25')](function(_0x162c80){if(_0x162c80){_0x371bfa=_0x162c80;_0x53e2ef[_0xe15a('0x39')]=_[_0xe15a('0x32')](db['Condition'][_0xe15a('0x2f')]);_0x53e2ef[_0xe15a('0x33')]=_[_0xe15a('0x32')](_0x1aa27c[_0xe15a('0x33')]);_0x53e2ef[_0xe15a('0x34')]=_['intersection'](_0x53e2ef['model'],_0x53e2ef[_0xe15a('0x33')]);_0x26b4a8[_0xe15a('0x37')]=_['intersection'](_0x53e2ef[_0xe15a('0x39')],qs[_0xe15a('0x36')](_0x1aa27c[_0xe15a('0x33')][_0xe15a('0x36')]));_0x26b4a8[_0xe15a('0x37')]=_0x26b4a8[_0xe15a('0x37')][_0xe15a('0x38')]?_0x26b4a8[_0xe15a('0x37')]:_0x53e2ef[_0xe15a('0x39')];_0x26b4a8['order']=qs[_0xe15a('0x3c')](_0x1aa27c[_0xe15a('0x33')][_0xe15a('0x3c')]);_0x26b4a8['where']=qs['filters'](_[_0xe15a('0x3e')](_0x1aa27c[_0xe15a('0x33')],_0x53e2ef[_0xe15a('0x34')]));if(_0x1aa27c[_0xe15a('0x33')]['filter']){_0x26b4a8['where']=_['merge'](_0x26b4a8[_0xe15a('0x3d')],{'$or':_['map'](_0x26b4a8['attributes'],function(_0x4c7d87){var _0x5bcbe5={};_0x5bcbe5[_0x4c7d87]={'$like':'%'+_0x1aa27c[_0xe15a('0x33')][_0xe15a('0x3f')]+'%'};return _0x5bcbe5;})});}_0x26b4a8=_['merge']({},_0x26b4a8,_0x1aa27c['options']);return _0x371bfa['getAnyConditions'](_0x26b4a8);}})[_0xe15a('0x25')](function(_0x5c1896){if(_0x5c1896){_0x2f1e35=_0x5c1896[_0xe15a('0x38')];if(!_0x1aa27c['query'][_0xe15a('0x3a')](_0xe15a('0x57'))){_0x26b4a8[_0xe15a('0x1f')]=qs[_0xe15a('0x1f')](_0x1aa27c[_0xe15a('0x33')]['limit']);_0x26b4a8[_0xe15a('0x1d')]=qs[_0xe15a('0x1d')](_0x1aa27c[_0xe15a('0x33')][_0xe15a('0x1d')]);}return _0x371bfa[_0xe15a('0x58')](_0x26b4a8);}})[_0xe15a('0x25')](function(_0x41929e){if(_0x41929e){return _0x41929e?{'count':_0x2f1e35,'rows':_0x41929e}:null;}})[_0xe15a('0x25')](respondWithResult(_0x1a5b53,null))[_0xe15a('0x45')](handleError(_0x1a5b53,null));};exports[_0xe15a('0x59')]=function(_0x6d9405,_0xf63f64,_0x339ed3){if(_0x6d9405[_0xe15a('0x49')]['id']){delete _0x6d9405[_0xe15a('0x49')]['id'];}return db[_0xe15a('0x2e')][_0xe15a('0x4d')]({'where':{'id':_0x6d9405[_0xe15a('0x46')]['id']}})[_0xe15a('0x25')](handleEntityNotFound(_0xf63f64,null))['then'](function(_0x39a70c){if(_0x39a70c){_0x6d9405[_0xe15a('0x49')][_0xe15a('0x5a')]=_0x39a70c['id'];return db[_0xe15a('0x5b')][_0xe15a('0x48')](_0x6d9405[_0xe15a('0x49')]);}})[_0xe15a('0x25')](respondWithResult(_0xf63f64,null))[_0xe15a('0x45')](handleError(_0xf63f64,null));};exports[_0xe15a('0x5c')]=function(_0x38e425,_0x13ec90,_0x44a430){var _0x55a5a9={};var _0x334d53={};var _0x48b1ca;var _0x260541;return db['Trigger'][_0xe15a('0x56')]({'where':{'id':_0x38e425[_0xe15a('0x46')]['id']}})['then'](handleEntityNotFound(_0x13ec90,null))[_0xe15a('0x25')](function(_0x1128fb){if(_0x1128fb){_0x48b1ca=_0x1128fb;_0x334d53[_0xe15a('0x39')]=_[_0xe15a('0x32')](db[_0xe15a('0x5b')]['rawAttributes']);_0x334d53['query']=_['keys'](_0x38e425['query']);_0x334d53[_0xe15a('0x34')]=_['intersection'](_0x334d53[_0xe15a('0x39')],_0x334d53[_0xe15a('0x33')]);_0x55a5a9[_0xe15a('0x37')]=_['intersection'](_0x334d53[_0xe15a('0x39')],qs[_0xe15a('0x36')](_0x38e425[_0xe15a('0x33')]['fields']));_0x55a5a9[_0xe15a('0x37')]=_0x55a5a9[_0xe15a('0x37')][_0xe15a('0x38')]?_0x55a5a9['attributes']:_0x334d53[_0xe15a('0x39')];_0x55a5a9[_0xe15a('0x3b')]=qs[_0xe15a('0x3c')](_0x38e425[_0xe15a('0x33')][_0xe15a('0x3c')]);_0x55a5a9['where']=qs[_0xe15a('0x34')](_[_0xe15a('0x3e')](_0x38e425['query'],_0x334d53[_0xe15a('0x34')]));if(_0x38e425[_0xe15a('0x33')][_0xe15a('0x3f')]){_0x55a5a9['where']=_[_0xe15a('0x40')](_0x55a5a9[_0xe15a('0x3d')],{'$or':_[_0xe15a('0x2d')](_0x55a5a9['attributes'],function(_0x798490){var _0x1447a7={};_0x1447a7[_0x798490]={'$like':'%'+_0x38e425['query']['filter']+'%'};return _0x1447a7;})});}_0x55a5a9=_[_0xe15a('0x40')]({},_0x55a5a9,_0x38e425[_0xe15a('0x42')]);return _0x48b1ca['getActions'](_0x55a5a9);}})[_0xe15a('0x25')](function(_0x2d2a03){if(_0x2d2a03){_0x260541=_0x2d2a03[_0xe15a('0x38')];if(!_0x38e425[_0xe15a('0x33')]['hasOwnProperty'](_0xe15a('0x57'))){_0x55a5a9[_0xe15a('0x1f')]=qs[_0xe15a('0x1f')](_0x38e425[_0xe15a('0x33')][_0xe15a('0x1f')]);_0x55a5a9[_0xe15a('0x1d')]=qs[_0xe15a('0x1d')](_0x38e425[_0xe15a('0x33')][_0xe15a('0x1d')]);}return _0x48b1ca[_0xe15a('0x5c')](_0x55a5a9);}})[_0xe15a('0x25')](function(_0x4da6ec){if(_0x4da6ec){return _0x4da6ec?{'count':_0x260541,'rows':_0x4da6ec}:null;}})['then'](respondWithResult(_0x13ec90,null))[_0xe15a('0x45')](handleError(_0x13ec90,null));};
\ No newline at end of file
+var _0x352a=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','get','Triggers','UserProfileResource','error','stack','name','send','index','map','Trigger','rawAttributes','fieldName','key','keys','query','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','Condition','addAnyCondition','findOne','getAllConditions','getAnyConditions','addAction','TriggerId','Action','getActions','eml-format','rimraf','request-promise','moment','mustache','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service'];(function(_0x2a1dd1,_0x3794df){var _0x132c45=function(_0x42b666){while(--_0x42b666){_0x2a1dd1['push'](_0x2a1dd1['shift']());}};_0x132c45(++_0x3794df);}(_0x352a,0x111));var _0xa352=function(_0x51d92a,_0x49d811){_0x51d92a=_0x51d92a-0x0;var _0x1236b0=_0x352a[_0x51d92a];return _0x1236b0;};'use strict';var emlformat=require(_0xa352('0x0'));var rimraf=require(_0xa352('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa352('0x2'));var moment=require(_0xa352('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa352('0x4'));var util=require('util');var path=require(_0xa352('0x5'));var sox=require('sox');var csv=require(_0xa352('0x6'));var ejs=require(_0xa352('0x7'));var fs=require('fs');var fs_extra=require(_0xa352('0x8'));var _=require(_0xa352('0x9'));var squel=require(_0xa352('0xa'));var crypto=require('crypto');var jsforce=require(_0xa352('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xa352('0xc'));var Redis=require(_0xa352('0xd'));var authService=require(_0xa352('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xa352('0xf'));var hardwareService=require(_0xa352('0x10'));var logger=require(_0xa352('0x11'))('api');var utils=require(_0xa352('0x12'));var config=require(_0xa352('0x13'));var licenseUtil=require(_0xa352('0x14'));var db=require(_0xa352('0x15'))['db'];function respondWithStatusCode(_0x1c7fde,_0x4b631f){_0x4b631f=_0x4b631f||0xcc;return function(_0x161c91){if(_0x161c91){return _0x1c7fde[_0xa352('0x16')](_0x4b631f);}return _0x1c7fde['status'](_0x4b631f)[_0xa352('0x17')]();};}function respondWithResult(_0x10e4d3,_0x5033fe){_0x5033fe=_0x5033fe||0xc8;return function(_0x3bcc37){if(_0x3bcc37){return _0x10e4d3[_0xa352('0x18')](_0x5033fe)['json'](_0x3bcc37);}};}function respondWithFilteredResult(_0x239cff,_0xa0b18b){return function(_0x5e4c58){if(_0x5e4c58){var _0x208e30=typeof _0xa0b18b[_0xa352('0x19')]===_0xa352('0x1a')&&typeof _0xa0b18b[_0xa352('0x1b')]===_0xa352('0x1a');var _0x53a709=_0x5e4c58[_0xa352('0x1c')];var _0x39668e=_0x208e30?0x0:_0xa0b18b[_0xa352('0x19')];var _0x1b9513=_0x208e30?_0x5e4c58[_0xa352('0x1c')]:_0xa0b18b['offset']+_0xa0b18b[_0xa352('0x1b')];var _0x1ea8d3;if(_0x1b9513>=_0x53a709){_0x1b9513=_0x53a709;_0x1ea8d3=0xc8;}else{_0x1ea8d3=0xce;}_0x239cff['status'](_0x1ea8d3);return _0x239cff[_0xa352('0x1d')](_0xa352('0x1e'),_0x39668e+'-'+_0x1b9513+'/'+_0x53a709)[_0xa352('0x1f')](_0x5e4c58);}return null;};}function patchUpdates(_0x43a329){return function(_0x52d402){try{jsonpatch[_0xa352('0x20')](_0x52d402,_0x43a329,!![]);}catch(_0x568c2e){return BPromise[_0xa352('0x21')](_0x568c2e);}return _0x52d402['save']();};}function saveUpdates(_0xa209f5,_0x598c27){return function(_0x4815ac){if(_0x4815ac){return _0x4815ac[_0xa352('0x22')](_0xa209f5)[_0xa352('0x23')](function(_0x1afc5a){return _0x1afc5a;});}return null;};}function removeEntity(_0x5df7d9,_0xf110d0){return function(_0x59c655){if(_0x59c655){return _0x59c655[_0xa352('0x24')]()[_0xa352('0x23')](function(){var _0xe5f174=_0x59c655[_0xa352('0x25')]({'plain':!![]});var _0x4a5a89=_0xa352('0x26');return db[_0xa352('0x27')][_0xa352('0x24')]({'where':{'type':_0x4a5a89,'resourceId':_0xe5f174['id']}})[_0xa352('0x23')](function(){return _0x59c655;});})[_0xa352('0x23')](function(){_0x5df7d9[_0xa352('0x18')](0xcc)[_0xa352('0x17')]();});}};}function handleEntityNotFound(_0x259b36,_0xef1c45){return function(_0x524764){if(!_0x524764){_0x259b36[_0xa352('0x16')](0x194);}return _0x524764;};}function handleError(_0x5e5876,_0x3b2478){_0x3b2478=_0x3b2478||0x1f4;return function(_0x10d353){logger[_0xa352('0x28')](_0x10d353[_0xa352('0x29')]);if(_0x10d353[_0xa352('0x2a')]){delete _0x10d353[_0xa352('0x2a')];}_0x5e5876[_0xa352('0x18')](_0x3b2478)[_0xa352('0x2b')](_0x10d353);};}exports[_0xa352('0x2c')]=function(_0x501fdd,_0x5c3094){var _0x16598a={},_0x4eaddb={},_0x445623={'count':0x0,'rows':[]};var _0x452cbc=_[_0xa352('0x2d')](db[_0xa352('0x2e')][_0xa352('0x2f')],function(_0x2079bf){return{'name':_0x2079bf[_0xa352('0x30')],'type':_0x2079bf['type'][_0xa352('0x31')]};});_0x4eaddb['model']=_[_0xa352('0x2d')](_0x452cbc,_0xa352('0x2a'));_0x4eaddb['query']=_[_0xa352('0x32')](_0x501fdd[_0xa352('0x33')]);_0x4eaddb['filters']=_[_0xa352('0x34')](_0x4eaddb[_0xa352('0x35')],_0x4eaddb[_0xa352('0x33')]);_0x16598a['attributes']=_['intersection'](_0x4eaddb[_0xa352('0x35')],qs[_0xa352('0x36')](_0x501fdd[_0xa352('0x33')][_0xa352('0x36')]));_0x16598a[_0xa352('0x37')]=_0x16598a['attributes'][_0xa352('0x38')]?_0x16598a[_0xa352('0x37')]:_0x4eaddb[_0xa352('0x35')];if(!_0x501fdd[_0xa352('0x33')][_0xa352('0x39')](_0xa352('0x3a'))){_0x16598a[_0xa352('0x1b')]=qs['limit'](_0x501fdd[_0xa352('0x33')][_0xa352('0x1b')]);_0x16598a[_0xa352('0x19')]=qs[_0xa352('0x19')](_0x501fdd['query'][_0xa352('0x19')]);}_0x16598a[_0xa352('0x3b')]=qs[_0xa352('0x3c')](_0x501fdd[_0xa352('0x33')]['sort']);_0x16598a[_0xa352('0x3d')]=qs[_0xa352('0x3e')](_[_0xa352('0x3f')](_0x501fdd['query'],_0x4eaddb[_0xa352('0x3e')]),_0x452cbc);if(_0x501fdd[_0xa352('0x33')][_0xa352('0x40')]){_0x16598a[_0xa352('0x3d')]=_[_0xa352('0x41')](_0x16598a[_0xa352('0x3d')],{'$or':_[_0xa352('0x2d')](_0x452cbc,function(_0x459c8f){if(_0x459c8f[_0xa352('0x42')]!==_0xa352('0x43')){var _0x741be8={};_0x741be8[_0x459c8f[_0xa352('0x2a')]]={'$like':'%'+_0x501fdd[_0xa352('0x33')][_0xa352('0x40')]+'%'};return _0x741be8;}})});}_0x16598a=_[_0xa352('0x41')]({},_0x16598a,_0x501fdd[_0xa352('0x44')]);var _0x19011f={'where':_0x16598a['where']};return db[_0xa352('0x2e')][_0xa352('0x1c')](_0x19011f)[_0xa352('0x23')](function(_0x473ccb){_0x445623[_0xa352('0x1c')]=_0x473ccb;if(_0x501fdd[_0xa352('0x33')][_0xa352('0x45')]){_0x16598a[_0xa352('0x46')]=[{'all':!![]}];}return db[_0xa352('0x2e')][_0xa352('0x47')](_0x16598a);})[_0xa352('0x23')](function(_0x1fc6c4){_0x445623[_0xa352('0x48')]=_0x1fc6c4;return _0x445623;})[_0xa352('0x23')](respondWithFilteredResult(_0x5c3094,_0x16598a))[_0xa352('0x49')](handleError(_0x5c3094,null));};exports[_0xa352('0x4a')]=function(_0x737ac7,_0x4d7bbb){var _0x34daa5={'raw':![],'where':{'id':_0x737ac7[_0xa352('0x4b')]['id']}},_0x3190f3={};_0x3190f3[_0xa352('0x35')]=_[_0xa352('0x32')](db['Trigger'][_0xa352('0x2f')]);_0x3190f3['query']=_[_0xa352('0x32')](_0x737ac7[_0xa352('0x33')]);_0x3190f3['filters']=_[_0xa352('0x34')](_0x3190f3[_0xa352('0x35')],_0x3190f3['query']);_0x34daa5[_0xa352('0x37')]=_[_0xa352('0x34')](_0x3190f3[_0xa352('0x35')],qs[_0xa352('0x36')](_0x737ac7['query'][_0xa352('0x36')]));_0x34daa5[_0xa352('0x37')]=_0x34daa5[_0xa352('0x37')][_0xa352('0x38')]?_0x34daa5[_0xa352('0x37')]:_0x3190f3[_0xa352('0x35')];if(_0x737ac7[_0xa352('0x33')]['includeAll']){_0x34daa5['include']=[{'all':!![]}];}_0x34daa5=_[_0xa352('0x41')]({},_0x34daa5,_0x737ac7[_0xa352('0x44')]);return db[_0xa352('0x2e')][_0xa352('0x4c')](_0x34daa5)['then'](handleEntityNotFound(_0x4d7bbb,null))[_0xa352('0x23')](respondWithResult(_0x4d7bbb,null))[_0xa352('0x49')](handleError(_0x4d7bbb,null));};exports[_0xa352('0x4d')]=function(_0x5186d6,_0x26e535){return db[_0xa352('0x2e')][_0xa352('0x4d')](_0x5186d6[_0xa352('0x4e')],{})[_0xa352('0x23')](function(_0x15a270){var _0x50f08d=_0x5186d6[_0xa352('0x4f')][_0xa352('0x25')]({'plain':!![]});if(!_0x50f08d)throw new Error(_0xa352('0x50'));if(_0x50f08d[_0xa352('0x51')]===_0xa352('0x4f')){var _0x2aefcc=_0x15a270[_0xa352('0x25')]({'plain':!![]});var _0x149602='Triggers';return db[_0xa352('0x52')]['find']({'where':{'name':_0x149602,'userProfileId':_0x50f08d['userProfileId']},'raw':!![]})[_0xa352('0x23')](function(_0x57c4ed){if(_0x57c4ed&&_0x57c4ed[_0xa352('0x53')]===0x0){return db['UserProfileResource'][_0xa352('0x4d')]({'name':_0x2aefcc[_0xa352('0x2a')],'resourceId':_0x2aefcc['id'],'type':_0x57c4ed['name'],'sectionId':_0x57c4ed['id']},{})[_0xa352('0x23')](function(){return _0x15a270;});}else{return _0x15a270;}})[_0xa352('0x49')](function(_0x21b2ad){logger[_0xa352('0x28')](_0xa352('0x54'),_0x21b2ad);throw _0x21b2ad;});}return _0x15a270;})[_0xa352('0x23')](respondWithResult(_0x26e535,0xc9))[_0xa352('0x49')](handleError(_0x26e535,null));};exports[_0xa352('0x22')]=function(_0x217abf,_0x4323ad){if(_0x217abf[_0xa352('0x4e')]['id']){delete _0x217abf[_0xa352('0x4e')]['id'];}return db[_0xa352('0x2e')]['find']({'where':{'id':_0x217abf[_0xa352('0x4b')]['id']}})[_0xa352('0x23')](handleEntityNotFound(_0x4323ad,null))['then'](saveUpdates(_0x217abf[_0xa352('0x4e')],null))[_0xa352('0x23')](respondWithResult(_0x4323ad,null))[_0xa352('0x49')](handleError(_0x4323ad,null));};exports[_0xa352('0x24')]=function(_0x37385f,_0x5b200d){return db[_0xa352('0x2e')][_0xa352('0x4c')]({'where':{'id':_0x37385f['params']['id']}})['then'](handleEntityNotFound(_0x5b200d,null))[_0xa352('0x23')](removeEntity(_0x5b200d,null))[_0xa352('0x49')](handleError(_0x5b200d,null));};exports[_0xa352('0x55')]=function(_0x2906b6,_0x12004b,_0x389241){if(_0x2906b6[_0xa352('0x4e')]['id']){delete _0x2906b6[_0xa352('0x4e')]['id'];}return db[_0xa352('0x2e')][_0xa352('0x4c')]({'where':{'id':_0x2906b6[_0xa352('0x4b')]['id']}})[_0xa352('0x23')](handleEntityNotFound(_0x12004b,null))['then'](function(_0xca38c3){if(_0xca38c3){_0x2906b6[_0xa352('0x4e')][_0xa352('0x56')]=_0xca38c3['id'];return db[_0xa352('0x57')]['create'](_0x2906b6[_0xa352('0x4e')]);}})[_0xa352('0x23')](respondWithResult(_0x12004b,null))['catch'](handleError(_0x12004b,null));};exports[_0xa352('0x58')]=function(_0x562467,_0x166466,_0x3b7672){if(_0x562467[_0xa352('0x4e')]['id']){delete _0x562467[_0xa352('0x4e')]['id'];}return db['Trigger'][_0xa352('0x4c')]({'where':{'id':_0x562467[_0xa352('0x4b')]['id']}})[_0xa352('0x23')](handleEntityNotFound(_0x166466,null))['then'](function(_0x32c90a){if(_0x32c90a){_0x562467[_0xa352('0x4e')]['TriggerAnyId']=_0x32c90a['id'];return db[_0xa352('0x57')][_0xa352('0x4d')](_0x562467[_0xa352('0x4e')]);}})[_0xa352('0x23')](respondWithResult(_0x166466,null))[_0xa352('0x49')](handleError(_0x166466,null));};exports['getAllConditions']=function(_0x55800c,_0x33136b,_0x3cc2ca){var _0x565bd5={};var _0x2690ad={};var _0x123f8f;var _0x2497ed;return db[_0xa352('0x2e')][_0xa352('0x59')]({'where':{'id':_0x55800c[_0xa352('0x4b')]['id']}})[_0xa352('0x23')](handleEntityNotFound(_0x33136b,null))[_0xa352('0x23')](function(_0x3998de){if(_0x3998de){_0x123f8f=_0x3998de;_0x2690ad[_0xa352('0x35')]=_['keys'](db[_0xa352('0x57')]['rawAttributes']);_0x2690ad['query']=_[_0xa352('0x32')](_0x55800c[_0xa352('0x33')]);_0x2690ad[_0xa352('0x3e')]=_[_0xa352('0x34')](_0x2690ad[_0xa352('0x35')],_0x2690ad[_0xa352('0x33')]);_0x565bd5[_0xa352('0x37')]=_[_0xa352('0x34')](_0x2690ad[_0xa352('0x35')],qs['fields'](_0x55800c[_0xa352('0x33')][_0xa352('0x36')]));_0x565bd5[_0xa352('0x37')]=_0x565bd5['attributes'][_0xa352('0x38')]?_0x565bd5[_0xa352('0x37')]:_0x2690ad[_0xa352('0x35')];_0x565bd5['order']=qs[_0xa352('0x3c')](_0x55800c[_0xa352('0x33')]['sort']);_0x565bd5[_0xa352('0x3d')]=qs['filters'](_[_0xa352('0x3f')](_0x55800c[_0xa352('0x33')],_0x2690ad['filters']));if(_0x55800c[_0xa352('0x33')][_0xa352('0x40')]){_0x565bd5['where']=_[_0xa352('0x41')](_0x565bd5[_0xa352('0x3d')],{'$or':_['map'](_0x565bd5['attributes'],function(_0x4a37dc){var _0x1d527a={};_0x1d527a[_0x4a37dc]={'$like':'%'+_0x55800c[_0xa352('0x33')][_0xa352('0x40')]+'%'};return _0x1d527a;})});}_0x565bd5=_[_0xa352('0x41')]({},_0x565bd5,_0x55800c['options']);return _0x123f8f[_0xa352('0x5a')](_0x565bd5);}})[_0xa352('0x23')](function(_0x4ef324){if(_0x4ef324){_0x2497ed=_0x4ef324['length'];if(!_0x55800c[_0xa352('0x33')][_0xa352('0x39')](_0xa352('0x3a'))){_0x565bd5[_0xa352('0x1b')]=qs[_0xa352('0x1b')](_0x55800c[_0xa352('0x33')]['limit']);_0x565bd5[_0xa352('0x19')]=qs[_0xa352('0x19')](_0x55800c['query'][_0xa352('0x19')]);}return _0x123f8f[_0xa352('0x5a')](_0x565bd5);}})[_0xa352('0x23')](function(_0x326f3e){if(_0x326f3e){return _0x326f3e?{'count':_0x2497ed,'rows':_0x326f3e}:null;}})[_0xa352('0x23')](respondWithResult(_0x33136b,null))[_0xa352('0x49')](handleError(_0x33136b,null));};exports[_0xa352('0x5b')]=function(_0x4b710a,_0x267d0c,_0x4e3429){var _0x2c45c0={};var _0x122661={};var _0x48a246;var _0x243189;return db['Trigger'][_0xa352('0x59')]({'where':{'id':_0x4b710a[_0xa352('0x4b')]['id']}})[_0xa352('0x23')](handleEntityNotFound(_0x267d0c,null))[_0xa352('0x23')](function(_0x39b592){if(_0x39b592){_0x48a246=_0x39b592;_0x122661['model']=_['keys'](db[_0xa352('0x57')][_0xa352('0x2f')]);_0x122661[_0xa352('0x33')]=_['keys'](_0x4b710a[_0xa352('0x33')]);_0x122661['filters']=_['intersection'](_0x122661[_0xa352('0x35')],_0x122661[_0xa352('0x33')]);_0x2c45c0['attributes']=_['intersection'](_0x122661[_0xa352('0x35')],qs['fields'](_0x4b710a['query'][_0xa352('0x36')]));_0x2c45c0[_0xa352('0x37')]=_0x2c45c0['attributes'][_0xa352('0x38')]?_0x2c45c0[_0xa352('0x37')]:_0x122661[_0xa352('0x35')];_0x2c45c0['order']=qs[_0xa352('0x3c')](_0x4b710a[_0xa352('0x33')][_0xa352('0x3c')]);_0x2c45c0[_0xa352('0x3d')]=qs[_0xa352('0x3e')](_[_0xa352('0x3f')](_0x4b710a[_0xa352('0x33')],_0x122661[_0xa352('0x3e')]));if(_0x4b710a['query']['filter']){_0x2c45c0[_0xa352('0x3d')]=_[_0xa352('0x41')](_0x2c45c0[_0xa352('0x3d')],{'$or':_[_0xa352('0x2d')](_0x2c45c0[_0xa352('0x37')],function(_0x16c756){var _0x3e73be={};_0x3e73be[_0x16c756]={'$like':'%'+_0x4b710a['query'][_0xa352('0x40')]+'%'};return _0x3e73be;})});}_0x2c45c0=_[_0xa352('0x41')]({},_0x2c45c0,_0x4b710a['options']);return _0x48a246['getAnyConditions'](_0x2c45c0);}})[_0xa352('0x23')](function(_0x36c63a){if(_0x36c63a){_0x243189=_0x36c63a[_0xa352('0x38')];if(!_0x4b710a[_0xa352('0x33')][_0xa352('0x39')]('nolimit')){_0x2c45c0['limit']=qs['limit'](_0x4b710a['query'][_0xa352('0x1b')]);_0x2c45c0[_0xa352('0x19')]=qs[_0xa352('0x19')](_0x4b710a[_0xa352('0x33')]['offset']);}return _0x48a246['getAnyConditions'](_0x2c45c0);}})[_0xa352('0x23')](function(_0x398b86){if(_0x398b86){return _0x398b86?{'count':_0x243189,'rows':_0x398b86}:null;}})['then'](respondWithResult(_0x267d0c,null))[_0xa352('0x49')](handleError(_0x267d0c,null));};exports[_0xa352('0x5c')]=function(_0x1cf14c,_0x4200e0,_0x1f5583){if(_0x1cf14c[_0xa352('0x4e')]['id']){delete _0x1cf14c[_0xa352('0x4e')]['id'];}return db[_0xa352('0x2e')][_0xa352('0x4c')]({'where':{'id':_0x1cf14c[_0xa352('0x4b')]['id']}})[_0xa352('0x23')](handleEntityNotFound(_0x4200e0,null))['then'](function(_0x4e359b){if(_0x4e359b){_0x1cf14c[_0xa352('0x4e')][_0xa352('0x5d')]=_0x4e359b['id'];return db[_0xa352('0x5e')][_0xa352('0x4d')](_0x1cf14c[_0xa352('0x4e')]);}})[_0xa352('0x23')](respondWithResult(_0x4200e0,null))['catch'](handleError(_0x4200e0,null));};exports[_0xa352('0x5f')]=function(_0x21b620,_0xb88384,_0x2f0857){var _0x5cfad4={};var _0x4ce88d={};var _0x1619b5;var _0x3c2c63;return db[_0xa352('0x2e')][_0xa352('0x59')]({'where':{'id':_0x21b620[_0xa352('0x4b')]['id']}})[_0xa352('0x23')](handleEntityNotFound(_0xb88384,null))['then'](function(_0x2cf33e){if(_0x2cf33e){_0x1619b5=_0x2cf33e;_0x4ce88d[_0xa352('0x35')]=_[_0xa352('0x32')](db[_0xa352('0x5e')][_0xa352('0x2f')]);_0x4ce88d['query']=_[_0xa352('0x32')](_0x21b620[_0xa352('0x33')]);_0x4ce88d[_0xa352('0x3e')]=_[_0xa352('0x34')](_0x4ce88d['model'],_0x4ce88d['query']);_0x5cfad4['attributes']=_['intersection'](_0x4ce88d[_0xa352('0x35')],qs[_0xa352('0x36')](_0x21b620[_0xa352('0x33')][_0xa352('0x36')]));_0x5cfad4['attributes']=_0x5cfad4[_0xa352('0x37')][_0xa352('0x38')]?_0x5cfad4[_0xa352('0x37')]:_0x4ce88d[_0xa352('0x35')];_0x5cfad4[_0xa352('0x3b')]=qs[_0xa352('0x3c')](_0x21b620[_0xa352('0x33')][_0xa352('0x3c')]);_0x5cfad4['where']=qs[_0xa352('0x3e')](_[_0xa352('0x3f')](_0x21b620[_0xa352('0x33')],_0x4ce88d['filters']));if(_0x21b620[_0xa352('0x33')]['filter']){_0x5cfad4[_0xa352('0x3d')]=_[_0xa352('0x41')](_0x5cfad4[_0xa352('0x3d')],{'$or':_[_0xa352('0x2d')](_0x5cfad4[_0xa352('0x37')],function(_0x3d947f){var _0x232313={};_0x232313[_0x3d947f]={'$like':'%'+_0x21b620['query'][_0xa352('0x40')]+'%'};return _0x232313;})});}_0x5cfad4=_[_0xa352('0x41')]({},_0x5cfad4,_0x21b620[_0xa352('0x44')]);return _0x1619b5[_0xa352('0x5f')](_0x5cfad4);}})['then'](function(_0x27d726){if(_0x27d726){_0x3c2c63=_0x27d726[_0xa352('0x38')];if(!_0x21b620['query'][_0xa352('0x39')](_0xa352('0x3a'))){_0x5cfad4[_0xa352('0x1b')]=qs['limit'](_0x21b620['query'][_0xa352('0x1b')]);_0x5cfad4['offset']=qs[_0xa352('0x19')](_0x21b620[_0xa352('0x33')][_0xa352('0x19')]);}return _0x1619b5[_0xa352('0x5f')](_0x5cfad4);}})[_0xa352('0x23')](function(_0x40de6b){if(_0x40de6b){return _0x40de6b?{'count':_0x3c2c63,'rows':_0x40de6b}:null;}})[_0xa352('0x23')](respondWithResult(_0xb88384,null))[_0xa352('0x49')](handleError(_0xb88384,null));};
\ No newline at end of file
index ec1be7c..8fb3232 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08d9=['./trigger.attributes','exports','Trigger','tools_triggers','lodash','../../config/logger','moment','bluebird','request-promise','../../config/environment'];(function(_0x450e7d,_0x252855){var _0x483eaa=function(_0xcb949c){while(--_0xcb949c){_0x450e7d['push'](_0x450e7d['shift']());}};_0x483eaa(++_0x252855);}(_0x08d9,0xc2));var _0x908d=function(_0xbb146,_0x1b3260){_0xbb146=_0xbb146-0x0;var _0x5094d0=_0x08d9[_0xbb146];return _0x5094d0;};'use strict';var _=require(_0x908d('0x0'));var util=require('util');var logger=require(_0x908d('0x1'))('api');var moment=require(_0x908d('0x2'));var BPromise=require(_0x908d('0x3'));var rp=require(_0x908d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x908d('0x5'));var attributes=require(_0x908d('0x6'));module[_0x908d('0x7')]=function(_0xe780e0,_0xb63409){return _0xe780e0['define'](_0x908d('0x8'),attributes,{'tableName':_0x908d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4aa3=['api','moment','request-promise','path','../../config/environment','./trigger.attributes','exports','define','tools_triggers','lodash','util'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x4aa3,0x174));var _0x34aa=function(_0x4c7f35,_0x510f82){_0x4c7f35=_0x4c7f35-0x0;var _0x40e677=_0x4aa3[_0x4c7f35];return _0x40e677;};'use strict';var _=require(_0x34aa('0x0'));var util=require(_0x34aa('0x1'));var logger=require('../../config/logger')(_0x34aa('0x2'));var moment=require(_0x34aa('0x3'));var BPromise=require('bluebird');var rp=require(_0x34aa('0x4'));var fs=require('fs');var path=require(_0x34aa('0x5'));var rimraf=require('rimraf');var config=require(_0x34aa('0x6'));var attributes=require(_0x34aa('0x7'));module[_0x34aa('0x8')]=function(_0x5a717c,_0x201f69){return _0x5a717c[_0x34aa('0x9')]('Trigger',attributes,{'tableName':_0x34aa('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e3a2884..59caa80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26d8=['lodash','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug','Trigger,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','Trigger,\x20%s,\x20%s','result','catch','GetTrigger','Trigger','findAll','options','where','attributes','limit','include','model','map','ShowTrigger','raw'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x26d8,0xfc));var _0x826d=function(_0x231539,_0x4a1102){_0x231539=_0x231539-0x0;var _0x302a27=_0x26d8[_0x231539];return _0x302a27;};'use strict';var _=require(_0x826d('0x0'));var util=require(_0x826d('0x1'));var moment=require('moment');var BPromise=require(_0x826d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x826d('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x826d('0x4'));var logger=require(_0x826d('0x5'))(_0x826d('0x6'));var config=require(_0x826d('0x7'));var jayson=require(_0x826d('0x8'));var client=jayson[_0x826d('0x9')][_0x826d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4a8738,_0x210037,_0x57453b){return new BPromise(function(_0x43146b,_0x353066){return client[_0x826d('0xb')](_0x4a8738,_0x57453b)[_0x826d('0xc')](function(_0xe6ea19){logger[_0x826d('0xd')]('Trigger,\x20%s,\x20%s',_0x210037,'request\x20sent');logger[_0x826d('0xe')](_0x826d('0xf'),_0x210037,_0x826d('0x10'),JSON[_0x826d('0x11')](_0xe6ea19));if(_0xe6ea19['error']){if(_0xe6ea19[_0x826d('0x12')][_0x826d('0x13')]===0x1f4){logger['error']('Trigger,\x20%s,\x20%s',_0x210037,_0xe6ea19[_0x826d('0x12')][_0x826d('0x14')]);return _0x353066(_0xe6ea19['error'][_0x826d('0x14')]);}logger[_0x826d('0x12')](_0x826d('0x15'),_0x210037,_0xe6ea19[_0x826d('0x12')]['message']);return _0x43146b(_0xe6ea19['error'][_0x826d('0x14')]);}else{logger[_0x826d('0xd')](_0x826d('0x15'),_0x210037,_0x826d('0x10'));_0x43146b(_0xe6ea19[_0x826d('0x16')][_0x826d('0x14')]);}})[_0x826d('0x17')](function(_0x3ad2e0){logger[_0x826d('0x12')](_0x826d('0x15'),_0x210037,_0x3ad2e0);_0x353066(_0x3ad2e0);});});}exports[_0x826d('0x18')]=function(_0x15139b){var _0x2c771=this;return new Promise(function(_0x69237a,_0x13739a){return db[_0x826d('0x19')][_0x826d('0x1a')]({'raw':_0x15139b[_0x826d('0x1b')]?_0x15139b[_0x826d('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x15139b['options']?_0x15139b['options'][_0x826d('0x1c')]||null:null,'attributes':_0x15139b[_0x826d('0x1b')]?_0x15139b['options'][_0x826d('0x1d')]||null:null,'limit':_0x15139b[_0x826d('0x1b')]?_0x15139b[_0x826d('0x1b')][_0x826d('0x1e')]||null:null,'include':_0x15139b[_0x826d('0x1b')]?_0x15139b['options'][_0x826d('0x1f')]?_['map'](_0x15139b[_0x826d('0x1b')][_0x826d('0x1f')],function(_0x168fe3){return{'model':db[_0x168fe3[_0x826d('0x20')]],'as':_0x168fe3['as'],'attributes':_0x168fe3['attributes'],'include':_0x168fe3[_0x826d('0x1f')]?_['map'](_0x168fe3[_0x826d('0x1f')],function(_0x29598f){return{'model':db[_0x29598f['model']],'as':_0x29598f['as'],'attributes':_0x29598f[_0x826d('0x1d')],'include':_0x29598f[_0x826d('0x1f')]?_[_0x826d('0x21')](_0x29598f[_0x826d('0x1f')],function(_0x5b8121){return{'model':db[_0x5b8121[_0x826d('0x20')]],'as':_0x5b8121['as'],'attributes':_0x5b8121[_0x826d('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x826d('0xc')](function(_0x2dd665){logger[_0x826d('0xd')]('GetTrigger',_0x15139b);logger['debug'](_0x826d('0x18'),_0x15139b,JSON[_0x826d('0x11')](_0x2dd665));_0x69237a(_0x2dd665);})[_0x826d('0x17')](function(_0x36637a){logger['error'](_0x826d('0x18'),_0x36637a[_0x826d('0x14')],_0x15139b);_0x13739a(_0x2c771['error'](0x1f4,_0x36637a[_0x826d('0x14')]));});});};exports[_0x826d('0x22')]=function(_0x21e0ea){var _0x5702f4=this;return new Promise(function(_0x40072b,_0x5c6285){return db[_0x826d('0x19')]['find']({'raw':_0x21e0ea[_0x826d('0x1b')]?_0x21e0ea[_0x826d('0x1b')][_0x826d('0x23')]===undefined?!![]:![]:!![],'where':_0x21e0ea[_0x826d('0x1b')]?_0x21e0ea[_0x826d('0x1b')][_0x826d('0x1c')]||null:null,'attributes':_0x21e0ea[_0x826d('0x1b')]?_0x21e0ea[_0x826d('0x1b')][_0x826d('0x1d')]||null:null,'include':_0x21e0ea[_0x826d('0x1b')]?_0x21e0ea['options'][_0x826d('0x1f')]?_[_0x826d('0x21')](_0x21e0ea[_0x826d('0x1b')][_0x826d('0x1f')],function(_0x5047a3){return{'model':db[_0x5047a3[_0x826d('0x20')]],'as':_0x5047a3['as'],'attributes':_0x5047a3[_0x826d('0x1d')],'include':_0x5047a3['include']?_['map'](_0x5047a3['include'],function(_0x9769c2){return{'model':db[_0x9769c2['model']],'as':_0x9769c2['as'],'attributes':_0x9769c2['attributes'],'include':_0x9769c2[_0x826d('0x1f')]?_[_0x826d('0x21')](_0x9769c2['include'],function(_0x570ea0){return{'model':db[_0x570ea0[_0x826d('0x20')]],'as':_0x570ea0['as'],'attributes':_0x570ea0['attributes']};}):[]};}):[]};}):[]:[]})[_0x826d('0xc')](function(_0x347ad9){logger[_0x826d('0xd')](_0x826d('0x22'),_0x21e0ea);logger[_0x826d('0xe')](_0x826d('0x22'),_0x21e0ea,JSON['stringify'](_0x347ad9));_0x40072b(_0x347ad9);})['catch'](function(_0x392f9c){logger[_0x826d('0x12')]('ShowTrigger',_0x392f9c[_0x826d('0x14')],_0x21e0ea);_0x5c6285(_0x5702f4['error'](0x1f4,_0x392f9c[_0x826d('0x14')]));});});};
\ No newline at end of file
+var _0x665d=['Trigger','find','ShowTrigger','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','Trigger,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','GetTrigger','findAll','options','raw','where','attributes','limit','include','map','model','info'];(function(_0x217e19,_0x15a3de){var _0x58fafe=function(_0x42c25e){while(--_0x42c25e){_0x217e19['push'](_0x217e19['shift']());}};_0x58fafe(++_0x15a3de);}(_0x665d,0x150));var _0xd665=function(_0x52be03,_0x5bf5f6){_0x52be03=_0x52be03-0x0;var _0xc64bda=_0x665d[_0x52be03];return _0xc64bda;};'use strict';var _=require(_0xd665('0x0'));var util=require(_0xd665('0x1'));var moment=require(_0xd665('0x2'));var BPromise=require(_0xd665('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd665('0x4'));var db=require(_0xd665('0x5'))['db'];var utils=require(_0xd665('0x6'));var logger=require('../../config/logger')(_0xd665('0x7'));var config=require(_0xd665('0x8'));var jayson=require(_0xd665('0x9'));var client=jayson[_0xd665('0xa')][_0xd665('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x50718f,_0x33b153,_0x525860){return new BPromise(function(_0x59a3b5,_0x5a6681){return client[_0xd665('0xc')](_0x50718f,_0x525860)[_0xd665('0xd')](function(_0x3fc2d8){logger['info'](_0xd665('0xe'),_0x33b153,'request\x20sent');logger[_0xd665('0xf')]('Trigger,\x20%s,\x20%s,\x20%s',_0x33b153,_0xd665('0x10'),JSON[_0xd665('0x11')](_0x3fc2d8));if(_0x3fc2d8[_0xd665('0x12')]){if(_0x3fc2d8[_0xd665('0x12')][_0xd665('0x13')]===0x1f4){logger[_0xd665('0x12')](_0xd665('0xe'),_0x33b153,_0x3fc2d8[_0xd665('0x12')]['message']);return _0x5a6681(_0x3fc2d8[_0xd665('0x12')][_0xd665('0x14')]);}logger[_0xd665('0x12')](_0xd665('0xe'),_0x33b153,_0x3fc2d8[_0xd665('0x12')][_0xd665('0x14')]);return _0x59a3b5(_0x3fc2d8[_0xd665('0x12')]['message']);}else{logger['info'](_0xd665('0xe'),_0x33b153,_0xd665('0x10'));_0x59a3b5(_0x3fc2d8[_0xd665('0x15')][_0xd665('0x14')]);}})[_0xd665('0x16')](function(_0x2321c1){logger[_0xd665('0x12')](_0xd665('0xe'),_0x33b153,_0x2321c1);_0x5a6681(_0x2321c1);});});}exports[_0xd665('0x17')]=function(_0x3774c6){var _0xac596d=this;return new Promise(function(_0x5258c1,_0x5e865a){return db['Trigger'][_0xd665('0x18')]({'raw':_0x3774c6['options']?_0x3774c6[_0xd665('0x19')][_0xd665('0x1a')]===undefined?!![]:![]:!![],'where':_0x3774c6[_0xd665('0x19')]?_0x3774c6[_0xd665('0x19')][_0xd665('0x1b')]||null:null,'attributes':_0x3774c6['options']?_0x3774c6['options'][_0xd665('0x1c')]||null:null,'limit':_0x3774c6['options']?_0x3774c6['options'][_0xd665('0x1d')]||null:null,'include':_0x3774c6[_0xd665('0x19')]?_0x3774c6['options'][_0xd665('0x1e')]?_[_0xd665('0x1f')](_0x3774c6[_0xd665('0x19')]['include'],function(_0x287347){return{'model':db[_0x287347[_0xd665('0x20')]],'as':_0x287347['as'],'attributes':_0x287347['attributes'],'include':_0x287347[_0xd665('0x1e')]?_[_0xd665('0x1f')](_0x287347[_0xd665('0x1e')],function(_0x1b709b){return{'model':db[_0x1b709b[_0xd665('0x20')]],'as':_0x1b709b['as'],'attributes':_0x1b709b[_0xd665('0x1c')],'include':_0x1b709b[_0xd665('0x1e')]?_[_0xd665('0x1f')](_0x1b709b[_0xd665('0x1e')],function(_0x49e00d){return{'model':db[_0x49e00d[_0xd665('0x20')]],'as':_0x49e00d['as'],'attributes':_0x49e00d[_0xd665('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xd665('0xd')](function(_0xce3e36){logger[_0xd665('0x21')]('GetTrigger',_0x3774c6);logger[_0xd665('0xf')](_0xd665('0x17'),_0x3774c6,JSON[_0xd665('0x11')](_0xce3e36));_0x5258c1(_0xce3e36);})['catch'](function(_0x10a673){logger[_0xd665('0x12')](_0xd665('0x17'),_0x10a673[_0xd665('0x14')],_0x3774c6);_0x5e865a(_0xac596d[_0xd665('0x12')](0x1f4,_0x10a673[_0xd665('0x14')]));});});};exports['ShowTrigger']=function(_0x47198c){var _0x1c142d=this;return new Promise(function(_0x18bd6c,_0x5c98f6){return db[_0xd665('0x22')][_0xd665('0x23')]({'raw':_0x47198c['options']?_0x47198c[_0xd665('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x47198c[_0xd665('0x19')]?_0x47198c[_0xd665('0x19')][_0xd665('0x1b')]||null:null,'attributes':_0x47198c['options']?_0x47198c[_0xd665('0x19')][_0xd665('0x1c')]||null:null,'include':_0x47198c[_0xd665('0x19')]?_0x47198c[_0xd665('0x19')][_0xd665('0x1e')]?_[_0xd665('0x1f')](_0x47198c['options'][_0xd665('0x1e')],function(_0x208787){return{'model':db[_0x208787[_0xd665('0x20')]],'as':_0x208787['as'],'attributes':_0x208787[_0xd665('0x1c')],'include':_0x208787[_0xd665('0x1e')]?_[_0xd665('0x1f')](_0x208787[_0xd665('0x1e')],function(_0x1a0a30){return{'model':db[_0x1a0a30[_0xd665('0x20')]],'as':_0x1a0a30['as'],'attributes':_0x1a0a30[_0xd665('0x1c')],'include':_0x1a0a30[_0xd665('0x1e')]?_[_0xd665('0x1f')](_0x1a0a30['include'],function(_0x14e506){return{'model':db[_0x14e506[_0xd665('0x20')]],'as':_0x14e506['as'],'attributes':_0x14e506['attributes']};}):[]};}):[]};}):[]:[]})[_0xd665('0xd')](function(_0x536a65){logger[_0xd665('0x21')]('ShowTrigger',_0x47198c);logger['debug'](_0xd665('0x24'),_0x47198c,JSON['stringify'](_0x536a65));_0x18bd6c(_0x536a65);})[_0xd665('0x16')](function(_0x2f0073){logger[_0xd665('0x12')](_0xd665('0x24'),_0x2f0073[_0xd665('0x14')],_0x47198c);_0x5c98f6(_0x1c142d['error'](0x1f4,_0x2f0073['message']));});});};
\ No newline at end of file
index 9e46816..feaaa24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe349=['/:id','post','/:id/clone','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./trunk.controller','get','isAuthenticated','index'];(function(_0x4965d1,_0xb546d4){var _0x59e849=function(_0x2df6e9){while(--_0x2df6e9){_0x4965d1['push'](_0x4965d1['shift']());}};_0x59e849(++_0xb546d4);}(_0xe349,0x1d3));var _0x9e34=function(_0x367e5b,_0x5721e4){_0x367e5b=_0x367e5b-0x0;var _0x4b909e=_0xe349[_0x367e5b];return _0x4b909e;};'use strict';var multer=require(_0x9e34('0x0'));var util=require(_0x9e34('0x1'));var path=require(_0x9e34('0x2'));var timeout=require(_0x9e34('0x3'));var express=require(_0x9e34('0x4'));var router=express[_0x9e34('0x5')]();var fs_extra=require(_0x9e34('0x6'));var auth=require(_0x9e34('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x9e34('0x8'));var controller=require(_0x9e34('0x9'));router[_0x9e34('0xa')]('/',auth[_0x9e34('0xb')](),controller[_0x9e34('0xc')]);router['get'](_0x9e34('0xd'),auth[_0x9e34('0xb')](),controller['show']);router[_0x9e34('0xe')](_0x9e34('0xf'),auth[_0x9e34('0xb')](),controller['clone']);router[_0x9e34('0xe')]('/',auth[_0x9e34('0xb')](),controller['create']);router[_0x9e34('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x9e34('0x11')]);router[_0x9e34('0x12')](_0x9e34('0xd'),auth[_0x9e34('0xb')](),controller['destroy']);module[_0x9e34('0x13')]=router;
\ No newline at end of file
+var _0xbe84=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','./trunk.controller','get','isAuthenticated','/:id','show','post','/:id/clone','clone','create','put','update','delete','destroy','multer','path','connect-timeout','express'];(function(_0x50cbb2,_0xca64fa){var _0x429ab9=function(_0x5959b5){while(--_0x5959b5){_0x50cbb2['push'](_0x50cbb2['shift']());}};_0x429ab9(++_0xca64fa);}(_0xbe84,0x8f));var _0x4be8=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xbe84[_0x484e36];return _0xafc85d;};'use strict';var multer=require(_0x4be8('0x0'));var util=require('util');var path=require(_0x4be8('0x1'));var timeout=require(_0x4be8('0x2'));var express=require(_0x4be8('0x3'));var router=express[_0x4be8('0x4')]();var fs_extra=require(_0x4be8('0x5'));var auth=require(_0x4be8('0x6'));var interaction=require(_0x4be8('0x7'));var config=require('../../config/environment');var controller=require(_0x4be8('0x8'));router[_0x4be8('0x9')]('/',auth[_0x4be8('0xa')](),controller['index']);router[_0x4be8('0x9')](_0x4be8('0xb'),auth[_0x4be8('0xa')](),controller[_0x4be8('0xc')]);router[_0x4be8('0xd')](_0x4be8('0xe'),auth['isAuthenticated'](),controller[_0x4be8('0xf')]);router[_0x4be8('0xd')]('/',auth[_0x4be8('0xa')](),controller[_0x4be8('0x10')]);router[_0x4be8('0x11')](_0x4be8('0xb'),auth[_0x4be8('0xa')](),controller[_0x4be8('0x12')]);router[_0x4be8('0x13')](_0x4be8('0xb'),auth[_0x4be8('0xa')](),controller[_0x4be8('0x14')]);module['exports']=router;
\ No newline at end of file
index 7f693a8..29f4fba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5509=['STRING','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','setDataValue','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','shortinfo','inband','auto','yes','nonat','nat','getDataValue','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','never','INTEGER','\x22\x22\x20<>','always','accept','refuse','uas','pai','fingerprint','certificate','active','passive','actpass','dynamic','update,nonat','sequelize','exports','name','ENUM','user','peer','friend'];(function(_0x81a85c,_0x4465da){var _0x6c33f3=function(_0x45b76f){while(--_0x45b76f){_0x81a85c['push'](_0x81a85c['shift']());}};_0x6c33f3(++_0x4465da);}(_0x5509,0x1c4));var _0x9550=function(_0x245582,_0x46c511){_0x245582=_0x245582-0x0;var _0x554d12=_0x5509[_0x245582];return _0x554d12;};'use strict';var Sequelize=require(_0x9550('0x0'));module[_0x9550('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x9550('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x9550('0x3')]('friend',_0x9550('0x4'),_0x9550('0x5')),'allowNull':![],'defaultValue':_0x9550('0x6')},'context':{'type':Sequelize[_0x9550('0x7')],'allowNull':![],'defaultValue':_0x9550('0x8')},'callingpres':{'type':Sequelize['ENUM'](_0x9550('0x9'),'ALLOWED_PASSED_SCREEN',_0x9550('0xa'),_0x9550('0xb'),_0x9550('0xc'),_0x9550('0xd'),_0x9550('0xe'),_0x9550('0xf'))},'deny':{'type':Sequelize[_0x9550('0x7')]},'permit':{'type':Sequelize[_0x9550('0x7')]},'secret':{'type':Sequelize[_0x9550('0x7')]},'md5secret':{'type':Sequelize[_0x9550('0x7')]},'remotesecret':{'type':Sequelize[_0x9550('0x7')]},'transport':{'type':Sequelize[_0x9550('0x7')],'defaultValue':'udp','set':function(_0x10f4e2){this[_0x9550('0x10')](_0x9550('0x11'),_0x10f4e2?_0x10f4e2[_0x9550('0x12')](','):null);},'get':function(){return this['getDataValue'](_0x9550('0x11'))?this['getDataValue'](_0x9550('0x11'))[_0x9550('0x13')](','):null;},'comment':_0x9550('0x14')},'dtmfmode':{'type':Sequelize[_0x9550('0x3')](_0x9550('0x15'),'info',_0x9550('0x16'),_0x9550('0x17'),_0x9550('0x18')),'defaultValue':_0x9550('0x15')},'directmedia':{'type':Sequelize['ENUM'](_0x9550('0x19'),'no',_0x9550('0x1a'),'update','outgoing'),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x9550('0x3')](_0x9550('0x19'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x9550('0x7')]},'directmediadeny':{'type':Sequelize[_0x9550('0x7')]},'nat':{'type':Sequelize[_0x9550('0x7')],'defaultValue':'force_rport,comedia','set':function(_0x55ca6a){this[_0x9550('0x10')](_0x9550('0x1b'),_0x55ca6a?_0x55ca6a[_0x9550('0x12')](','):null);},'get':function(){return this['getDataValue'](_0x9550('0x1b'))?this[_0x9550('0x1c')](_0x9550('0x1b'))[_0x9550('0x13')](','):null;},'comment':_0x9550('0x1d')},'callgroup':{'type':Sequelize[_0x9550('0x7')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0x9550('0x7')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x9550('0x7')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x9550('0x7')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x9550('0x7')],'defaultValue':_0x9550('0x1e')},'allow':{'type':Sequelize[_0x9550('0x7')],'allowNull':![],'defaultValue':_0x9550('0x1f'),'set':function(_0x5af087){this[_0x9550('0x10')](_0x9550('0x20'),_0x5af087?_0x5af087[_0x9550('0x12')](';'):'ulaw;alaw;gsm');},'get':function(){return this[_0x9550('0x1c')](_0x9550('0x20'))?this[_0x9550('0x1c')](_0x9550('0x20'))[_0x9550('0x13')](';'):null;},'comment':_0x9550('0x21')},'autoframing':{'type':Sequelize[_0x9550('0x3')]('yes','no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':_0x9550('0x22'),'set':function(_0x50e6b3){this[_0x9550('0x10')](_0x9550('0x23'),_0x50e6b3?_0x50e6b3[_0x9550('0x12')](','):null);},'get':function(){return this[_0x9550('0x1c')](_0x9550('0x23'))?this[_0x9550('0x1c')](_0x9550('0x23'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x9550('0x3')](_0x9550('0x19'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x9550('0x3')]('yes','no',_0x9550('0x24'))},'promiscredir':{'type':Sequelize[_0x9550('0x3')](_0x9550('0x19'),'no')},'useclientcode':{'type':Sequelize[_0x9550('0x3')](_0x9550('0x19'),'no')},'accountcode':{'type':Sequelize[_0x9550('0x25')](0xb)},'setvar':{'type':Sequelize[_0x9550('0x7')]},'callerid':{'type':Sequelize[_0x9550('0x7')],'defaultValue':_0x9550('0x26')},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize[_0x9550('0x3')]('yes','no'),'defaultValue':_0x9550('0x19')},'busylevel':{'type':Sequelize[_0x9550('0x25')](0xb)},'allowoverlap':{'type':Sequelize[_0x9550('0x3')](_0x9550('0x19'),'no')},'allowsubscribe':{'type':Sequelize['ENUM'](_0x9550('0x19'),'no')},'allowtransfer':{'type':Sequelize['ENUM']('yes','no')},'ignoresdpversion':{'type':Sequelize[_0x9550('0x3')](_0x9550('0x19'),'no')},'subscribecontext':{'type':Sequelize[_0x9550('0x7')]},'template':{'type':Sequelize[_0x9550('0x7')]},'videosupport':{'type':Sequelize['ENUM'](_0x9550('0x19'),'no',_0x9550('0x27')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize[_0x9550('0x3')](_0x9550('0x19'),'no')},'mailbox':{'type':Sequelize[_0x9550('0x7')]},'session_timers':{'type':Sequelize[_0x9550('0x3')](_0x9550('0x28'),_0x9550('0x29'),'originate')},'session_expires':{'type':Sequelize[_0x9550('0x25')](0xb)},'session_minse':{'type':Sequelize[_0x9550('0x25')](0xb)},'session_refresher':{'type':Sequelize['ENUM']('uac',_0x9550('0x2a')),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x9550('0x7')]},'regexten':{'type':Sequelize[_0x9550('0x7')]},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize[_0x9550('0x7')]},'port':{'type':Sequelize[_0x9550('0x25')](0x5)},'qualify':{'type':Sequelize['ENUM'](_0x9550('0x19'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x9550('0x25')](0xb)},'defaultip':{'type':Sequelize['STRING']},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize[_0x9550('0x25')](0xb)},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpkeepalive':{'type':Sequelize[_0x9550('0x25')](0xb)},'sendrpid':{'type':Sequelize['ENUM'](_0x9550('0x19'),'no',_0x9550('0x2b')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x9550('0x7')]},'callbackextension':{'type':Sequelize[_0x9550('0x7')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0x9550('0x25')](0xb)},'qualifyfreq':{'type':Sequelize[_0x9550('0x25')](0xb)},'contactpermit':{'type':Sequelize[_0x9550('0x7')]},'contactdeny':{'type':Sequelize[_0x9550('0x7')]},'contactacl':{'type':Sequelize[_0x9550('0x7')]},'unsolicited_mailbox':{'type':Sequelize[_0x9550('0x7')]},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize[_0x9550('0x25')](0xb)},'encryption':{'type':Sequelize[_0x9550('0x3')](_0x9550('0x19'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x9550('0x3')](_0x9550('0x19'),'no')},'force_avp':{'type':Sequelize[_0x9550('0x3')](_0x9550('0x19'),'no')},'icesupport':{'type':Sequelize['ENUM'](_0x9550('0x19'),'no')},'dtlsenable':{'type':Sequelize['ENUM'](_0x9550('0x19'),'no')},'dtlsverify':{'type':Sequelize[_0x9550('0x3')]('yes','no',_0x9550('0x2c'),_0x9550('0x2d'))},'dtlsrekey':{'type':Sequelize[_0x9550('0x25')](0xb)},'dtlscertfile':{'type':Sequelize[_0x9550('0x7')]},'dtlsprivatekey':{'type':Sequelize[_0x9550('0x7')]},'dtlscipher':{'type':Sequelize[_0x9550('0x7')]},'dtlscafile':{'type':Sequelize['STRING']},'dtlscapath':{'type':Sequelize[_0x9550('0x7')]},'dtlssetup':{'type':Sequelize[_0x9550('0x3')](_0x9550('0x2e'),_0x9550('0x2f'),_0x9550('0x30')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x9550('0x7')]},'usereqphone':{'type':Sequelize['ENUM'](_0x9550('0x19'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x9550('0x7')]},'recordofffeature':{'type':Sequelize[_0x9550('0x7')]},'call_limit':{'type':Sequelize[_0x9550('0x25')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x9550('0x3')](_0x9550('0x19'),'no')},'subscribemwi':{'type':Sequelize[_0x9550('0x3')](_0x9550('0x19'),'no')},'vmexten':{'type':Sequelize['STRING']},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize[_0x9550('0x7')]},'parkinglot':{'type':Sequelize[_0x9550('0x7')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x9550('0x7')],'defaultValue':_0x9550('0x31')},'canreinvite':{'type':Sequelize[_0x9550('0x3')](_0x9550('0x19'),'no',_0x9550('0x1a'),'update',_0x9550('0x32')),'defaultValue':'no'},'registry':{'type':Sequelize[_0x9550('0x7')]},'otherFields':{'type':Sequelize[_0x9550('0x7')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
+var _0xf71c=['update','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','join','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','\x22\x22\x20<>','always','accept','originate','uac','uas','pai','passive','actpass','update,nonat','BOOLEAN','exports','STRING','name','friend','user','peer','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB','setDataValue','transport','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','ENUM','rfc2833','info','shortinfo','inband','yes','nonat'];(function(_0x12d69b,_0x5345bb){var _0xaec0be=function(_0x14e343){while(--_0x14e343){_0x12d69b['push'](_0x12d69b['shift']());}};_0xaec0be(++_0x5345bb);}(_0xf71c,0x138));var _0xcf71=function(_0x42960e,_0x295b4a){_0x42960e=_0x42960e-0x0;var _0x3a9b50=_0xf71c[_0x42960e];return _0x3a9b50;};'use strict';var Sequelize=require('sequelize');module[_0xcf71('0x0')]={'name':{'type':Sequelize[_0xcf71('0x1')],'allowNull':![],'unique':_0xcf71('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0xcf71('0x3'),_0xcf71('0x4'),_0xcf71('0x5')),'allowNull':![],'defaultValue':_0xcf71('0x3')},'context':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xcf71('0x6')},'callingpres':{'type':Sequelize['ENUM'](_0xcf71('0x7'),_0xcf71('0x8'),'ALLOWED_FAILED_SCREEN','ALLOWED',_0xcf71('0x9'),_0xcf71('0xa'),'PROHIB_FAILED_SCREEN',_0xcf71('0xb'))},'deny':{'type':Sequelize[_0xcf71('0x1')]},'permit':{'type':Sequelize['STRING']},'secret':{'type':Sequelize[_0xcf71('0x1')]},'md5secret':{'type':Sequelize[_0xcf71('0x1')]},'remotesecret':{'type':Sequelize[_0xcf71('0x1')]},'transport':{'type':Sequelize[_0xcf71('0x1')],'defaultValue':'udp','set':function(_0x1b2845){this[_0xcf71('0xc')](_0xcf71('0xd'),_0x1b2845?_0x1b2845['join'](','):null);},'get':function(){return this[_0xcf71('0xe')](_0xcf71('0xd'))?this[_0xcf71('0xe')](_0xcf71('0xd'))[_0xcf71('0xf')](','):null;},'comment':_0xcf71('0x10')},'dtmfmode':{'type':Sequelize[_0xcf71('0x11')](_0xcf71('0x12'),_0xcf71('0x13'),_0xcf71('0x14'),_0xcf71('0x15'),'auto'),'defaultValue':_0xcf71('0x12')},'directmedia':{'type':Sequelize['ENUM'](_0xcf71('0x16'),'no',_0xcf71('0x17'),_0xcf71('0x18'),'outgoing'),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xcf71('0x11')](_0xcf71('0x16'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xcf71('0x1')]},'directmediadeny':{'type':Sequelize[_0xcf71('0x1')]},'nat':{'type':Sequelize[_0xcf71('0x1')],'defaultValue':'force_rport,comedia','set':function(_0x2e24bf){this[_0xcf71('0xc')](_0xcf71('0x19'),_0x2e24bf?_0x2e24bf['join'](','):null);},'get':function(){return this[_0xcf71('0xe')](_0xcf71('0x19'))?this[_0xcf71('0xe')]('nat')[_0xcf71('0xf')](','):null;},'comment':_0xcf71('0x1a')},'callgroup':{'type':Sequelize[_0xcf71('0x1')]},'namedcallgroup':{'type':Sequelize[_0xcf71('0x1')]},'pickupgroup':{'type':Sequelize[_0xcf71('0x1')]},'namedpickupgroup':{'type':Sequelize[_0xcf71('0x1')]},'language':{'type':Sequelize[_0xcf71('0x1')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xcf71('0x1')],'allowNull':!![]},'disallow':{'type':Sequelize[_0xcf71('0x1')],'defaultValue':_0xcf71('0x1b')},'allow':{'type':Sequelize[_0xcf71('0x1')],'allowNull':![],'defaultValue':_0xcf71('0x1c'),'set':function(_0x35a317){this[_0xcf71('0xc')](_0xcf71('0x1d'),_0x35a317?_0x35a317[_0xcf71('0x1e')](';'):'ulaw;alaw;gsm');},'get':function(){return this['getDataValue'](_0xcf71('0x1d'))?this[_0xcf71('0xe')](_0xcf71('0x1d'))[_0xcf71('0xf')](';'):null;},'comment':_0xcf71('0x1f')},'autoframing':{'type':Sequelize['ENUM'](_0xcf71('0x16'),'no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':_0xcf71('0x20'),'set':function(_0x2aa1a2){this[_0xcf71('0xc')]('insecure',_0x2aa1a2?_0x2aa1a2[_0xcf71('0x1e')](','):null);},'get':function(){return this[_0xcf71('0xe')](_0xcf71('0x21'))?this[_0xcf71('0xe')](_0xcf71('0x21'))[_0xcf71('0xf')](','):null;},'comment':_0xcf71('0x22')},'trustrpid':{'type':Sequelize[_0xcf71('0x11')](_0xcf71('0x16'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xcf71('0x11')](_0xcf71('0x16'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0xcf71('0x16'),'no',_0xcf71('0x23'))},'promiscredir':{'type':Sequelize['ENUM'](_0xcf71('0x16'),'no')},'useclientcode':{'type':Sequelize[_0xcf71('0x11')](_0xcf71('0x16'),'no')},'accountcode':{'type':Sequelize[_0xcf71('0x24')](0xb)},'setvar':{'type':Sequelize[_0xcf71('0x1')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':_0xcf71('0x25')},'amaflags':{'type':Sequelize[_0xcf71('0x1')]},'callcounter':{'type':Sequelize['ENUM'](_0xcf71('0x16'),'no'),'defaultValue':_0xcf71('0x16')},'busylevel':{'type':Sequelize[_0xcf71('0x24')](0xb)},'allowoverlap':{'type':Sequelize[_0xcf71('0x11')]('yes','no')},'allowsubscribe':{'type':Sequelize[_0xcf71('0x11')](_0xcf71('0x16'),'no')},'allowtransfer':{'type':Sequelize[_0xcf71('0x11')](_0xcf71('0x16'),'no')},'ignoresdpversion':{'type':Sequelize[_0xcf71('0x11')]('yes','no')},'subscribecontext':{'type':Sequelize[_0xcf71('0x1')]},'template':{'type':Sequelize[_0xcf71('0x1')]},'videosupport':{'type':Sequelize[_0xcf71('0x11')](_0xcf71('0x16'),'no',_0xcf71('0x26')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xcf71('0x24')](0xb)},'rfc2833compensate':{'type':Sequelize[_0xcf71('0x11')](_0xcf71('0x16'),'no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize[_0xcf71('0x11')](_0xcf71('0x27'),'refuse',_0xcf71('0x28'))},'session_expires':{'type':Sequelize['INTEGER'](0xb)},'session_minse':{'type':Sequelize[_0xcf71('0x24')](0xb)},'session_refresher':{'type':Sequelize[_0xcf71('0x11')](_0xcf71('0x29'),_0xcf71('0x2a')),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0xcf71('0x1')]},'regexten':{'type':Sequelize[_0xcf71('0x1')]},'fromdomain':{'type':Sequelize[_0xcf71('0x1')]},'fromuser':{'type':Sequelize[_0xcf71('0x1')]},'port':{'type':Sequelize[_0xcf71('0x24')](0x5)},'qualify':{'type':Sequelize[_0xcf71('0x11')](_0xcf71('0x16'),'no'),'defaultValue':_0xcf71('0x16')},'keepalive':{'type':Sequelize['INTEGER'](0xb)},'defaultip':{'type':Sequelize[_0xcf71('0x1')]},'defaultuser':{'type':Sequelize[_0xcf71('0x1')]},'rtptimeout':{'type':Sequelize[_0xcf71('0x24')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xcf71('0x24')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xcf71('0x24')](0xb)},'sendrpid':{'type':Sequelize[_0xcf71('0x11')](_0xcf71('0x16'),'no',_0xcf71('0x2b')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING']},'callbackextension':{'type':Sequelize[_0xcf71('0x1')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0xcf71('0x24')](0xb)},'qualifyfreq':{'type':Sequelize[_0xcf71('0x24')](0xb)},'contactpermit':{'type':Sequelize[_0xcf71('0x1')]},'contactdeny':{'type':Sequelize[_0xcf71('0x1')]},'contactacl':{'type':Sequelize[_0xcf71('0x1')]},'unsolicited_mailbox':{'type':Sequelize[_0xcf71('0x1')]},'use_q850_reason':{'type':Sequelize[_0xcf71('0x1')]},'maxforwards':{'type':Sequelize[_0xcf71('0x24')](0xb)},'encryption':{'type':Sequelize[_0xcf71('0x11')](_0xcf71('0x16'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0xcf71('0x16'),'no')},'force_avp':{'type':Sequelize['ENUM'](_0xcf71('0x16'),'no')},'icesupport':{'type':Sequelize[_0xcf71('0x11')](_0xcf71('0x16'),'no')},'dtlsenable':{'type':Sequelize['ENUM'](_0xcf71('0x16'),'no')},'dtlsverify':{'type':Sequelize['ENUM']('yes','no','fingerprint','certificate')},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb)},'dtlscertfile':{'type':Sequelize[_0xcf71('0x1')]},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize[_0xcf71('0x1')]},'dtlscapath':{'type':Sequelize[_0xcf71('0x1')]},'dtlssetup':{'type':Sequelize[_0xcf71('0x11')]('active',_0xcf71('0x2c'),_0xcf71('0x2d')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xcf71('0x1')]},'usereqphone':{'type':Sequelize['ENUM'](_0xcf71('0x16'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xcf71('0x1')]},'recordofffeature':{'type':Sequelize[_0xcf71('0x1')]},'call_limit':{'type':Sequelize[_0xcf71('0x24')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xcf71('0x11')](_0xcf71('0x16'),'no')},'subscribemwi':{'type':Sequelize[_0xcf71('0x11')]('yes','no')},'vmexten':{'type':Sequelize[_0xcf71('0x1')]},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize['STRING']},'parkinglot':{'type':Sequelize[_0xcf71('0x1')]},'description':{'type':Sequelize[_0xcf71('0x1')]},'host':{'type':Sequelize[_0xcf71('0x1')],'defaultValue':'dynamic'},'canreinvite':{'type':Sequelize[_0xcf71('0x11')]('yes','no',_0xcf71('0x17'),_0xcf71('0x18'),_0xcf71('0x2e')),'defaultValue':'no'},'registry':{'type':Sequelize[_0xcf71('0x1')]},'otherFields':{'type':Sequelize[_0xcf71('0x1')]},'active':{'type':Sequelize[_0xcf71('0x2f')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xcf71('0x1')],'defaultValue':'no'}};
\ No newline at end of file
index a921776..143081e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['map','Trunk','rawAttributes','fieldName','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','where','type','filter','merge','options','includeAll','include','findAll','params','clone','find','get','omit','createdAt','body','updatedAt','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','root','server/files/templates/trunk.ejs','utf8','readFileSync','server/files/templates/registry.ejs','render','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','writeFileSync','eml-format','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','info','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','Trunk,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','update','destroy','Trunks','UserProfileResource','stack','name','send','index'];(function(_0x29e82a,_0x1e3e4d){var _0x3dd9d7=function(_0x38494d){while(--_0x38494d){_0x29e82a['push'](_0x29e82a['shift']());}};_0x3dd9d7(++_0x1e3e4d);}(_0x3e74,0x175));var _0x43e7=function(_0x203e91,_0x92c9b2){_0x203e91=_0x203e91-0x0;var _0x1cb343=_0x3e74[_0x203e91];return _0x1cb343;};'use strict';var emlformat=require(_0x43e7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x43e7('0x1'));var jsonpatch=require(_0x43e7('0x2'));var rp=require(_0x43e7('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x43e7('0x4'));var util=require('util');var path=require(_0x43e7('0x5'));var sox=require(_0x43e7('0x6'));var csv=require(_0x43e7('0x7'));var ejs=require(_0x43e7('0x8'));var fs=require('fs');var fs_extra=require(_0x43e7('0x9'));var _=require('lodash');var squel=require(_0x43e7('0xa'));var crypto=require(_0x43e7('0xb'));var jsforce=require(_0x43e7('0xc'));var deskjs=require(_0x43e7('0xd'));var toCsv=require(_0x43e7('0x7'));var querystring=require('querystring');var Papa=require(_0x43e7('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x43e7('0xf'));var as=require(_0x43e7('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x43e7('0x11'))('api');var utils=require(_0x43e7('0x12'));var config=require(_0x43e7('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x43e7('0x14'))['db'];var jayson=require(_0x43e7('0x15'));var client=jayson[_0x43e7('0x16')][_0x43e7('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x4e008c,_0x583d85,_0x2fcb36,_0x21fdd3){return new BPromise(function(_0x44b0bd,_0x51b974){var _0x5e641c=_0x21fdd3||client;return _0x5e641c[_0x43e7('0x18')](_0x4e008c,_0x2fcb36)[_0x43e7('0x19')](function(_0x203378){logger[_0x43e7('0x1a')]('Trunk,\x20%s,\x20%s',_0x583d85,'request\x20sent');logger[_0x43e7('0x1b')](_0x43e7('0x1c'),_0x583d85,_0x43e7('0x1d'),JSON['stringify'](_0x203378));if(_0x203378['error']){if(_0x203378[_0x43e7('0x1e')][_0x43e7('0x1f')]===0x1f4){logger[_0x43e7('0x1e')](_0x43e7('0x20'),_0x583d85,_0x203378[_0x43e7('0x1e')][_0x43e7('0x21')]);return _0x51b974(_0x203378[_0x43e7('0x1e')][_0x43e7('0x21')]);}logger[_0x43e7('0x1e')](_0x43e7('0x20'),_0x583d85,_0x203378[_0x43e7('0x1e')][_0x43e7('0x21')]);return _0x44b0bd(_0x203378['error'][_0x43e7('0x21')]);}else{logger[_0x43e7('0x1a')]('Trunk,\x20%s,\x20%s',_0x583d85,_0x43e7('0x1d'));_0x44b0bd(_0x203378[_0x43e7('0x22')][_0x43e7('0x21')]);}})[_0x43e7('0x23')](function(_0x4077fb){logger[_0x43e7('0x1e')]('Trunk,\x20%s,\x20%s',_0x583d85,_0x4077fb);_0x51b974(_0x4077fb);});});}function respondWithStatusCode(_0x454359,_0x4eea52){_0x4eea52=_0x4eea52||0xcc;return function(_0x4c9df3){if(_0x4c9df3){return _0x454359[_0x43e7('0x24')](_0x4eea52);}return _0x454359[_0x43e7('0x25')](_0x4eea52)['end']();};}function respondWithResult(_0x1f0673,_0x4ca5cf){_0x4ca5cf=_0x4ca5cf||0xc8;return function(_0x326dab){if(_0x326dab){return _0x1f0673['status'](_0x4ca5cf)[_0x43e7('0x26')](_0x326dab);}};}function respondWithFilteredResult(_0x1b5f50,_0x20888b){return function(_0x405f85){if(_0x405f85){var _0x51f4d7=typeof _0x20888b['offset']===_0x43e7('0x27')&&typeof _0x20888b['limit']===_0x43e7('0x27');var _0x40dc8f=_0x405f85[_0x43e7('0x28')];var _0xb1fc63=_0x51f4d7?0x0:_0x20888b['offset'];var _0x33a1a5=_0x51f4d7?_0x405f85[_0x43e7('0x28')]:_0x20888b[_0x43e7('0x29')]+_0x20888b[_0x43e7('0x2a')];var _0x442c3b;if(_0x33a1a5>=_0x40dc8f){_0x33a1a5=_0x40dc8f;_0x442c3b=0xc8;}else{_0x442c3b=0xce;}_0x1b5f50[_0x43e7('0x25')](_0x442c3b);return _0x1b5f50[_0x43e7('0x2b')](_0x43e7('0x2c'),_0xb1fc63+'-'+_0x33a1a5+'/'+_0x40dc8f)[_0x43e7('0x26')](_0x405f85);}return null;};}function patchUpdates(_0x35dbcd){return function(_0x17df44){try{jsonpatch[_0x43e7('0x2d')](_0x17df44,_0x35dbcd,!![]);}catch(_0x2bde44){return BPromise[_0x43e7('0x2e')](_0x2bde44);}return _0x17df44['save']();};}function saveUpdates(_0x238321,_0x44f6b0){return function(_0x3b8f78){if(_0x3b8f78){return _0x3b8f78[_0x43e7('0x2f')](_0x238321)[_0x43e7('0x19')](function(_0x4c8650){return _0x4c8650;});}return null;};}function removeEntity(_0x1eba65,_0x49b83d){return function(_0x30d47e){if(_0x30d47e){return _0x30d47e[_0x43e7('0x30')]()['then'](function(){var _0x5a7342=_0x30d47e['get']({'plain':!![]});var _0xf8320=_0x43e7('0x31');return db[_0x43e7('0x32')][_0x43e7('0x30')]({'where':{'type':_0xf8320,'resourceId':_0x5a7342['id']}})[_0x43e7('0x19')](function(){return _0x30d47e;});})[_0x43e7('0x19')](function(){_0x1eba65['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ac23d,_0x59e5b2){return function(_0x4e8e86){if(!_0x4e8e86){_0x4ac23d['sendStatus'](0x194);}return _0x4e8e86;};}function handleError(_0x5cb753,_0x14d888){_0x14d888=_0x14d888||0x1f4;return function(_0x49cda6){logger[_0x43e7('0x1e')](_0x49cda6[_0x43e7('0x33')]);if(_0x49cda6[_0x43e7('0x34')]){delete _0x49cda6[_0x43e7('0x34')];}_0x5cb753[_0x43e7('0x25')](_0x14d888)[_0x43e7('0x35')](_0x49cda6);};}exports[_0x43e7('0x36')]=function(_0x4f1a5f,_0x5332d9){var _0x5d84f4={},_0xfa0474={},_0xfe70e9={'count':0x0,'rows':[]};var _0x199ff6=_[_0x43e7('0x37')](db[_0x43e7('0x38')][_0x43e7('0x39')],function(_0x1d4589){return{'name':_0x1d4589[_0x43e7('0x3a')],'type':_0x1d4589['type'][_0x43e7('0x3b')]};});_0xfa0474[_0x43e7('0x3c')]=_['map'](_0x199ff6,_0x43e7('0x34'));_0xfa0474['query']=_[_0x43e7('0x3d')](_0x4f1a5f[_0x43e7('0x3e')]);_0xfa0474[_0x43e7('0x3f')]=_[_0x43e7('0x40')](_0xfa0474[_0x43e7('0x3c')],_0xfa0474[_0x43e7('0x3e')]);_0x5d84f4['attributes']=_['intersection'](_0xfa0474[_0x43e7('0x3c')],qs[_0x43e7('0x41')](_0x4f1a5f[_0x43e7('0x3e')][_0x43e7('0x41')]));_0x5d84f4[_0x43e7('0x42')]=_0x5d84f4['attributes'][_0x43e7('0x43')]?_0x5d84f4[_0x43e7('0x42')]:_0xfa0474['model'];if(!_0x4f1a5f[_0x43e7('0x3e')]['hasOwnProperty'](_0x43e7('0x44'))){_0x5d84f4['limit']=qs[_0x43e7('0x2a')](_0x4f1a5f[_0x43e7('0x3e')][_0x43e7('0x2a')]);_0x5d84f4[_0x43e7('0x29')]=qs['offset'](_0x4f1a5f['query'][_0x43e7('0x29')]);}_0x5d84f4[_0x43e7('0x45')]=qs[_0x43e7('0x46')](_0x4f1a5f[_0x43e7('0x3e')]['sort']);_0x5d84f4['where']=qs['filters'](_[_0x43e7('0x47')](_0x4f1a5f['query'],_0xfa0474[_0x43e7('0x3f')]),_0x199ff6);if(_0x4f1a5f['query']['filter']){_0x5d84f4[_0x43e7('0x48')]=_['merge'](_0x5d84f4[_0x43e7('0x48')],{'$or':_[_0x43e7('0x37')](_0x199ff6,function(_0x257bd8){if(_0x257bd8[_0x43e7('0x49')]!=='VIRTUAL'){var _0x91f1e4={};_0x91f1e4[_0x257bd8[_0x43e7('0x34')]]={'$like':'%'+_0x4f1a5f[_0x43e7('0x3e')][_0x43e7('0x4a')]+'%'};return _0x91f1e4;}})});}_0x5d84f4=_[_0x43e7('0x4b')]({},_0x5d84f4,_0x4f1a5f[_0x43e7('0x4c')]);var _0x51eef4={'where':_0x5d84f4['where']};return db[_0x43e7('0x38')][_0x43e7('0x28')](_0x51eef4)[_0x43e7('0x19')](function(_0x4c00a8){_0xfe70e9['count']=_0x4c00a8;if(_0x4f1a5f['query'][_0x43e7('0x4d')]){_0x5d84f4[_0x43e7('0x4e')]=[{'all':!![]}];}return db['Trunk'][_0x43e7('0x4f')](_0x5d84f4);})[_0x43e7('0x19')](function(_0x3c96fe){_0xfe70e9['rows']=_0x3c96fe;return _0xfe70e9;})['then'](respondWithFilteredResult(_0x5332d9,_0x5d84f4))['catch'](handleError(_0x5332d9,null));};exports['show']=function(_0x214e7e,_0xe955fc){var _0x52fea5={'raw':![],'where':{'id':_0x214e7e[_0x43e7('0x50')]['id']}},_0x23e7cb={};_0x23e7cb[_0x43e7('0x3c')]=_[_0x43e7('0x3d')](db['Trunk'][_0x43e7('0x39')]);_0x23e7cb['query']=_['keys'](_0x214e7e[_0x43e7('0x3e')]);_0x23e7cb[_0x43e7('0x3f')]=_[_0x43e7('0x40')](_0x23e7cb[_0x43e7('0x3c')],_0x23e7cb[_0x43e7('0x3e')]);_0x52fea5[_0x43e7('0x42')]=_[_0x43e7('0x40')](_0x23e7cb[_0x43e7('0x3c')],qs[_0x43e7('0x41')](_0x214e7e[_0x43e7('0x3e')]['fields']));_0x52fea5[_0x43e7('0x42')]=_0x52fea5[_0x43e7('0x42')]['length']?_0x52fea5[_0x43e7('0x42')]:_0x23e7cb['model'];if(_0x214e7e[_0x43e7('0x3e')][_0x43e7('0x4d')]){_0x52fea5[_0x43e7('0x4e')]=[{'all':!![]}];}_0x52fea5=_[_0x43e7('0x4b')]({},_0x52fea5,_0x214e7e[_0x43e7('0x4c')]);return db['Trunk']['find'](_0x52fea5)[_0x43e7('0x19')](handleEntityNotFound(_0xe955fc,null))[_0x43e7('0x19')](respondWithResult(_0xe955fc,null))[_0x43e7('0x23')](handleError(_0xe955fc,null));};exports[_0x43e7('0x51')]=function(_0x23d835,_0x25bb44){var _0xa47464={'where':{'id':_0x23d835[_0x43e7('0x50')]['id']}},_0x44f8a0={};_0x44f8a0[_0x43e7('0x3c')]=_[_0x43e7('0x3d')](db['Trunk'][_0x43e7('0x39')]);_0xa47464[_0x43e7('0x42')]=_['intersection'](_0x44f8a0[_0x43e7('0x3c')],qs[_0x43e7('0x41')](_0x23d835[_0x43e7('0x3e')]['fields']));_0xa47464['attributes']=_0xa47464[_0x43e7('0x42')][_0x43e7('0x43')]?_0xa47464['attributes']:_0x44f8a0[_0x43e7('0x3c')];if(_0x23d835['query']['includeAll']){_0xa47464[_0x43e7('0x4e')]=[{'all':!![]}];}_0xa47464=_[_0x43e7('0x4b')]({},_0xa47464,_0x23d835[_0x43e7('0x4c')]);return db[_0x43e7('0x38')][_0x43e7('0x52')](_0xa47464)['then'](handleEntityNotFound(_0x25bb44,null))[_0x43e7('0x19')](function(_0xdb9fbe){if(_0xdb9fbe){var _0x4d89bd=_0xdb9fbe[_0x43e7('0x53')]({'plain':!![]});_0x4d89bd=qs[_0x43e7('0x54')](_0x4d89bd,['id',_0x43e7('0x55'),'updatedAt']);_0x23d835['body']=_['omit'](_0x23d835[_0x43e7('0x56')],['id',_0x43e7('0x55'),_0x43e7('0x57')]);return db[_0x43e7('0x38')]['create'](_['merge'](_0x4d89bd,_0x23d835[_0x43e7('0x56')]),{'include':_0x23d835[_0x43e7('0x3e')][_0x43e7('0x4d')]?[{'all':!![]}]:undefined})[_0x43e7('0x19')](function(_0x5ea0db){var _0x4438c0=_0x23d835[_0x43e7('0x58')][_0x43e7('0x53')]({'plain':!![]});if(!_0x4438c0)throw new Error(_0x43e7('0x59'));if(_0x4438c0[_0x43e7('0x5a')]===_0x43e7('0x58')){var _0x4665db=_0x5ea0db[_0x43e7('0x53')]({'plain':!![]});var _0x406155=_0x43e7('0x31');return db[_0x43e7('0x5b')]['find']({'where':{'name':_0x406155,'userProfileId':_0x4438c0['userProfileId']},'raw':!![]})[_0x43e7('0x19')](function(_0x58a3a8){if(_0x58a3a8&&_0x58a3a8['autoAssociation']===0x0){return db['UserProfileResource'][_0x43e7('0x5c')]({'name':_0x4665db[_0x43e7('0x34')],'resourceId':_0x4665db['id'],'type':_0x58a3a8['name'],'sectionId':_0x58a3a8['id']},{})[_0x43e7('0x19')](function(){return _0x5ea0db;});}else{return _0x5ea0db;}})[_0x43e7('0x23')](function(_0x1d8438){logger['error'](_0x43e7('0x5d'),_0x1d8438);throw _0x1d8438;});}return _0x5ea0db;});}})[_0x43e7('0x19')](respondWithResult(_0x25bb44,0xc9))[_0x43e7('0x23')](handleError(_0x25bb44,null));};exports[_0x43e7('0x5c')]=function(_0x2f43d7,_0x472a19,_0x1e02fa){var _0x515f01;return db[_0x43e7('0x38')][_0x43e7('0x5c')](_0x2f43d7[_0x43e7('0x56')],{'raw':!![]})['then'](function(_0x56b06d){_0x515f01=_0x56b06d;return db[_0x43e7('0x38')]['findAll']({'raw':!![]});})['then'](function(_0x1b793d){var _0x154e47=fs['readFileSync'](path[_0x43e7('0x5e')](config[_0x43e7('0x5f')],_0x43e7('0x60')),_0x43e7('0x61'));var _0x16499c=fs[_0x43e7('0x62')](path[_0x43e7('0x5e')](config['root'],_0x43e7('0x63')),_0x43e7('0x61'));var _0x4e5956=ejs[_0x43e7('0x64')](_0x154e47,{'trunks':_0x1b793d||[]});fs['writeFileSync'](_0x43e7('0x65'),_0x4e5956);if(_0x515f01[_0x43e7('0x66')]){var _0x37301b=ejs[_0x43e7('0x64')](_0x16499c,{'trunks':_0x1b793d||[]});fs['writeFileSync'](_0x43e7('0x67'),_0x37301b);}})[_0x43e7('0x19')](function(){return respondWithRpcPromise(_0x43e7('0x68'),'create',{'module':_0x43e7('0x69')});})[_0x43e7('0x19')](function(){var _0x219dc6=_0x2f43d7[_0x43e7('0x58')][_0x43e7('0x53')]({'plain':!![]});if(!_0x219dc6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x219dc6[_0x43e7('0x5a')]===_0x43e7('0x58')){var _0x35d133=_0x515f01[_0x43e7('0x53')]({'plain':!![]});return db[_0x43e7('0x5b')][_0x43e7('0x52')]({'where':{'name':_0x43e7('0x31'),'userProfileId':_0x219dc6['userProfileId']},'raw':!![]})['then'](function(_0x405faa){if(_0x405faa&&_0x405faa['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x35d133[_0x43e7('0x34')],'resourceId':_0x35d133['id'],'type':_0x405faa[_0x43e7('0x34')],'sectionId':_0x405faa['id']},{})[_0x43e7('0x19')](function(){return _0x515f01;});}else{return _0x515f01;}})[_0x43e7('0x23')](function(_0x18713b){logger[_0x43e7('0x1e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x18713b);throw _0x18713b;});}return _0x515f01;})[_0x43e7('0x19')](respondWithResult(_0x472a19,0xc9))[_0x43e7('0x23')](handleError(_0x472a19,null));};exports[_0x43e7('0x2f')]=function(_0x5b4c76,_0x2abca0,_0xea84ec){var _0x184ae3;return db[_0x43e7('0x38')][_0x43e7('0x52')]({'where':{'id':_0x5b4c76[_0x43e7('0x50')]['id']}})[_0x43e7('0x19')](handleEntityNotFound(_0x2abca0,null))[_0x43e7('0x19')](saveUpdates(_0x5b4c76['body'],null))['then'](function(_0x55990c){if(_0x55990c){_0x184ae3=_0x55990c;return db[_0x43e7('0x38')][_0x43e7('0x4f')]({'raw':!![]});}})['then'](function(_0x3fe23f){if(_0x3fe23f){var _0x39a787=fs[_0x43e7('0x62')](path[_0x43e7('0x5e')](config['root'],'server/files/templates/trunk.ejs'),'utf8');var _0x177a7a=fs[_0x43e7('0x62')](path['join'](config['root'],_0x43e7('0x63')),_0x43e7('0x61'));var _0x3b7e5b=ejs['render'](_0x39a787,{'trunks':_0x3fe23f||[]});fs[_0x43e7('0x6a')](_0x43e7('0x65'),_0x3b7e5b);var _0x401654=ejs[_0x43e7('0x64')](_0x177a7a,{'trunks':_0x3fe23f||[]});fs['writeFileSync'](_0x43e7('0x67'),_0x401654);return respondWithRpcPromise('Reload',_0x43e7('0x2f'),{'module':_0x43e7('0x69')});}return null;})[_0x43e7('0x19')](function(_0x90667c){if(_0x90667c){return _0x184ae3;}})[_0x43e7('0x19')](respondWithResult(_0x2abca0,null))[_0x43e7('0x23')](handleError(_0x2abca0,null));};exports[_0x43e7('0x30')]=function(_0x5e8d4e,_0x109c86,_0x40257e){var _0x1aea4e;return db[_0x43e7('0x38')]['find']({'where':{'id':_0x5e8d4e['params']['id']}})['then'](handleEntityNotFound(_0x109c86,null))[_0x43e7('0x19')](removeEntity(_0x109c86,null))['then'](function(){return db[_0x43e7('0x38')][_0x43e7('0x4f')]({'raw':!![]});})[_0x43e7('0x19')](function(_0x7387f6){var _0xa75254=fs[_0x43e7('0x62')](path[_0x43e7('0x5e')](config[_0x43e7('0x5f')],_0x43e7('0x60')),_0x43e7('0x61'));var _0x3de22e=fs['readFileSync'](path[_0x43e7('0x5e')](config[_0x43e7('0x5f')],_0x43e7('0x63')),_0x43e7('0x61'));var _0x206e54=ejs['render'](_0xa75254,{'trunks':_0x7387f6});var _0x5e04ec=ejs[_0x43e7('0x64')](_0x3de22e,{'trunks':_0x7387f6});fs[_0x43e7('0x6a')]('/etc/asterisk/sip_xcally_trunks.conf',_0x206e54);fs[_0x43e7('0x6a')](_0x43e7('0x67'),_0x5e04ec);return respondWithRpcPromise('Reload','destroy',{'module':_0x43e7('0x69')});})[_0x43e7('0x23')](handleError(_0x109c86,null));};
\ No newline at end of file
+var _0xbec5=['readFileSync','root','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_registers.conf','Reload','Unable\x20to\x20retrieve\x20the\x20current\x20user','update','/etc/asterisk/sip_xcally_trunks.conf','chan_sip.so','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','sendStatus','status','end','offset','limit','undefined','count','set','json','apply','reject','Trunks','UserProfileResource','destroy','stack','name','send','map','Trunk','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','length','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','attributes','find','clone','get','omit','updatedAt','body','createdAt','create','user','role','UserProfileSection','userProfileId','autoAssociation','join','server/files/templates/trunk.ejs','utf8'];(function(_0x470f16,_0x515010){var _0xa7407f=function(_0x4f7e9d){while(--_0x4f7e9d){_0x470f16['push'](_0x470f16['shift']());}};_0xa7407f(++_0x515010);}(_0xbec5,0xe5));var _0x5bec=function(_0x2652ef,_0x234230){_0x2652ef=_0x2652ef-0x0;var _0x2db578=_0xbec5[_0x2652ef];return _0x2db578;};'use strict';var emlformat=require(_0x5bec('0x0'));var rimraf=require(_0x5bec('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5bec('0x2'));var rp=require(_0x5bec('0x3'));var moment=require(_0x5bec('0x4'));var BPromise=require(_0x5bec('0x5'));var Mustache=require(_0x5bec('0x6'));var util=require('util');var path=require(_0x5bec('0x7'));var sox=require(_0x5bec('0x8'));var csv=require(_0x5bec('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5bec('0xa'));var _=require(_0x5bec('0xb'));var squel=require(_0x5bec('0xc'));var crypto=require(_0x5bec('0xd'));var jsforce=require(_0x5bec('0xe'));var deskjs=require(_0x5bec('0xf'));var toCsv=require(_0x5bec('0x9'));var querystring=require(_0x5bec('0x10'));var Papa=require('papaparse');var Redis=require(_0x5bec('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x5bec('0x12'));var as=require(_0x5bec('0x13'));var hardwareService=require(_0x5bec('0x14'));var logger=require('../../config/logger')(_0x5bec('0x15'));var utils=require(_0x5bec('0x16'));var config=require(_0x5bec('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x5bec('0x18'))['db'];var jayson=require(_0x5bec('0x19'));var client=jayson['client'][_0x5bec('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0xaa984d,_0x35393a,_0x6888a4,_0x3198e0){return new BPromise(function(_0xcd6d90,_0x24dcd6){var _0x43fd2a=_0x3198e0||client;return _0x43fd2a[_0x5bec('0x1b')](_0xaa984d,_0x6888a4)[_0x5bec('0x1c')](function(_0x31b9e4){logger[_0x5bec('0x1d')](_0x5bec('0x1e'),_0x35393a,'request\x20sent');logger['debug'](_0x5bec('0x1f'),_0x35393a,_0x5bec('0x20'),JSON[_0x5bec('0x21')](_0x31b9e4));if(_0x31b9e4[_0x5bec('0x22')]){if(_0x31b9e4['error']['code']===0x1f4){logger[_0x5bec('0x22')](_0x5bec('0x1e'),_0x35393a,_0x31b9e4['error'][_0x5bec('0x23')]);return _0x24dcd6(_0x31b9e4[_0x5bec('0x22')][_0x5bec('0x23')]);}logger[_0x5bec('0x22')]('Trunk,\x20%s,\x20%s',_0x35393a,_0x31b9e4[_0x5bec('0x22')]['message']);return _0xcd6d90(_0x31b9e4[_0x5bec('0x22')][_0x5bec('0x23')]);}else{logger[_0x5bec('0x1d')](_0x5bec('0x1e'),_0x35393a,_0x5bec('0x20'));_0xcd6d90(_0x31b9e4['result'][_0x5bec('0x23')]);}})['catch'](function(_0x2b2d26){logger[_0x5bec('0x22')]('Trunk,\x20%s,\x20%s',_0x35393a,_0x2b2d26);_0x24dcd6(_0x2b2d26);});});}function respondWithStatusCode(_0xa414f8,_0xbef70b){_0xbef70b=_0xbef70b||0xcc;return function(_0x4e0ca2){if(_0x4e0ca2){return _0xa414f8[_0x5bec('0x24')](_0xbef70b);}return _0xa414f8[_0x5bec('0x25')](_0xbef70b)[_0x5bec('0x26')]();};}function respondWithResult(_0x20da89,_0x226d55){_0x226d55=_0x226d55||0xc8;return function(_0x131143){if(_0x131143){return _0x20da89[_0x5bec('0x25')](_0x226d55)['json'](_0x131143);}};}function respondWithFilteredResult(_0x5b63ab,_0x5e44b3){return function(_0x2961bd){if(_0x2961bd){var _0x2cdd2f=typeof _0x5e44b3[_0x5bec('0x27')]==='undefined'&&typeof _0x5e44b3[_0x5bec('0x28')]===_0x5bec('0x29');var _0x57331b=_0x2961bd[_0x5bec('0x2a')];var _0x63ac8=_0x2cdd2f?0x0:_0x5e44b3['offset'];var _0x5336b3=_0x2cdd2f?_0x2961bd[_0x5bec('0x2a')]:_0x5e44b3[_0x5bec('0x27')]+_0x5e44b3[_0x5bec('0x28')];var _0x2c7a7b;if(_0x5336b3>=_0x57331b){_0x5336b3=_0x57331b;_0x2c7a7b=0xc8;}else{_0x2c7a7b=0xce;}_0x5b63ab[_0x5bec('0x25')](_0x2c7a7b);return _0x5b63ab[_0x5bec('0x2b')]('Content-Range',_0x63ac8+'-'+_0x5336b3+'/'+_0x57331b)[_0x5bec('0x2c')](_0x2961bd);}return null;};}function patchUpdates(_0x59b5b6){return function(_0x45863b){try{jsonpatch[_0x5bec('0x2d')](_0x45863b,_0x59b5b6,!![]);}catch(_0x3034c9){return BPromise[_0x5bec('0x2e')](_0x3034c9);}return _0x45863b['save']();};}function saveUpdates(_0x2b42c8,_0x1aba46){return function(_0xfc7d41){if(_0xfc7d41){return _0xfc7d41['update'](_0x2b42c8)[_0x5bec('0x1c')](function(_0x4cfb89){return _0x4cfb89;});}return null;};}function removeEntity(_0x14cdbf,_0x207192){return function(_0x29df14){if(_0x29df14){return _0x29df14['destroy']()[_0x5bec('0x1c')](function(){var _0x420ad4=_0x29df14['get']({'plain':!![]});var _0x34b441=_0x5bec('0x2f');return db[_0x5bec('0x30')][_0x5bec('0x31')]({'where':{'type':_0x34b441,'resourceId':_0x420ad4['id']}})[_0x5bec('0x1c')](function(){return _0x29df14;});})['then'](function(){_0x14cdbf[_0x5bec('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d3793,_0x384f04){return function(_0x182b86){if(!_0x182b86){_0x2d3793[_0x5bec('0x24')](0x194);}return _0x182b86;};}function handleError(_0x2e421e,_0x1923fc){_0x1923fc=_0x1923fc||0x1f4;return function(_0x49c8ef){logger[_0x5bec('0x22')](_0x49c8ef[_0x5bec('0x32')]);if(_0x49c8ef[_0x5bec('0x33')]){delete _0x49c8ef['name'];}_0x2e421e[_0x5bec('0x25')](_0x1923fc)[_0x5bec('0x34')](_0x49c8ef);};}exports['index']=function(_0xdb0430,_0x58c34e){var _0x400e22={},_0x2c0b08={},_0x402e5d={'count':0x0,'rows':[]};var _0x49cdfa=_[_0x5bec('0x35')](db[_0x5bec('0x36')][_0x5bec('0x37')],function(_0x139859){return{'name':_0x139859[_0x5bec('0x38')],'type':_0x139859[_0x5bec('0x39')][_0x5bec('0x3a')]};});_0x2c0b08['model']=_[_0x5bec('0x35')](_0x49cdfa,_0x5bec('0x33'));_0x2c0b08[_0x5bec('0x3b')]=_[_0x5bec('0x3c')](_0xdb0430['query']);_0x2c0b08[_0x5bec('0x3d')]=_[_0x5bec('0x3e')](_0x2c0b08[_0x5bec('0x3f')],_0x2c0b08['query']);_0x400e22['attributes']=_[_0x5bec('0x3e')](_0x2c0b08[_0x5bec('0x3f')],qs[_0x5bec('0x40')](_0xdb0430[_0x5bec('0x3b')][_0x5bec('0x40')]));_0x400e22['attributes']=_0x400e22['attributes'][_0x5bec('0x41')]?_0x400e22['attributes']:_0x2c0b08[_0x5bec('0x3f')];if(!_0xdb0430[_0x5bec('0x3b')][_0x5bec('0x42')]('nolimit')){_0x400e22[_0x5bec('0x28')]=qs[_0x5bec('0x28')](_0xdb0430['query'][_0x5bec('0x28')]);_0x400e22[_0x5bec('0x27')]=qs[_0x5bec('0x27')](_0xdb0430[_0x5bec('0x3b')][_0x5bec('0x27')]);}_0x400e22[_0x5bec('0x43')]=qs[_0x5bec('0x44')](_0xdb0430['query']['sort']);_0x400e22[_0x5bec('0x45')]=qs['filters'](_['pick'](_0xdb0430[_0x5bec('0x3b')],_0x2c0b08['filters']),_0x49cdfa);if(_0xdb0430['query']['filter']){_0x400e22[_0x5bec('0x45')]=_[_0x5bec('0x46')](_0x400e22[_0x5bec('0x45')],{'$or':_[_0x5bec('0x35')](_0x49cdfa,function(_0x48858a){if(_0x48858a[_0x5bec('0x39')]!==_0x5bec('0x47')){var _0xa4d32={};_0xa4d32[_0x48858a[_0x5bec('0x33')]]={'$like':'%'+_0xdb0430['query'][_0x5bec('0x48')]+'%'};return _0xa4d32;}})});}_0x400e22=_[_0x5bec('0x46')]({},_0x400e22,_0xdb0430[_0x5bec('0x49')]);var _0x51a3f9={'where':_0x400e22[_0x5bec('0x45')]};return db['Trunk'][_0x5bec('0x2a')](_0x51a3f9)[_0x5bec('0x1c')](function(_0x133d5c){_0x402e5d[_0x5bec('0x2a')]=_0x133d5c;if(_0xdb0430['query'][_0x5bec('0x4a')]){_0x400e22[_0x5bec('0x4b')]=[{'all':!![]}];}return db[_0x5bec('0x36')][_0x5bec('0x4c')](_0x400e22);})[_0x5bec('0x1c')](function(_0x123758){_0x402e5d[_0x5bec('0x4d')]=_0x123758;return _0x402e5d;})['then'](respondWithFilteredResult(_0x58c34e,_0x400e22))[_0x5bec('0x4e')](handleError(_0x58c34e,null));};exports[_0x5bec('0x4f')]=function(_0x5775ca,_0x273e09){var _0x3e6180={'raw':![],'where':{'id':_0x5775ca[_0x5bec('0x50')]['id']}},_0x34ee24={};_0x34ee24[_0x5bec('0x3f')]=_[_0x5bec('0x3c')](db[_0x5bec('0x36')]['rawAttributes']);_0x34ee24[_0x5bec('0x3b')]=_['keys'](_0x5775ca[_0x5bec('0x3b')]);_0x34ee24[_0x5bec('0x3d')]=_[_0x5bec('0x3e')](_0x34ee24[_0x5bec('0x3f')],_0x34ee24[_0x5bec('0x3b')]);_0x3e6180[_0x5bec('0x51')]=_[_0x5bec('0x3e')](_0x34ee24[_0x5bec('0x3f')],qs[_0x5bec('0x40')](_0x5775ca[_0x5bec('0x3b')]['fields']));_0x3e6180[_0x5bec('0x51')]=_0x3e6180['attributes']['length']?_0x3e6180[_0x5bec('0x51')]:_0x34ee24['model'];if(_0x5775ca['query'][_0x5bec('0x4a')]){_0x3e6180[_0x5bec('0x4b')]=[{'all':!![]}];}_0x3e6180=_[_0x5bec('0x46')]({},_0x3e6180,_0x5775ca['options']);return db[_0x5bec('0x36')][_0x5bec('0x52')](_0x3e6180)[_0x5bec('0x1c')](handleEntityNotFound(_0x273e09,null))[_0x5bec('0x1c')](respondWithResult(_0x273e09,null))['catch'](handleError(_0x273e09,null));};exports[_0x5bec('0x53')]=function(_0x209da3,_0x9cae50){var _0xc8563a={'where':{'id':_0x209da3[_0x5bec('0x50')]['id']}},_0x2f736c={};_0x2f736c[_0x5bec('0x3f')]=_['keys'](db['Trunk'][_0x5bec('0x37')]);_0xc8563a['attributes']=_[_0x5bec('0x3e')](_0x2f736c[_0x5bec('0x3f')],qs['fields'](_0x209da3[_0x5bec('0x3b')]['fields']));_0xc8563a[_0x5bec('0x51')]=_0xc8563a[_0x5bec('0x51')][_0x5bec('0x41')]?_0xc8563a[_0x5bec('0x51')]:_0x2f736c[_0x5bec('0x3f')];if(_0x209da3[_0x5bec('0x3b')][_0x5bec('0x4a')]){_0xc8563a[_0x5bec('0x4b')]=[{'all':!![]}];}_0xc8563a=_[_0x5bec('0x46')]({},_0xc8563a,_0x209da3[_0x5bec('0x49')]);return db[_0x5bec('0x36')][_0x5bec('0x52')](_0xc8563a)[_0x5bec('0x1c')](handleEntityNotFound(_0x9cae50,null))[_0x5bec('0x1c')](function(_0x51b25d){if(_0x51b25d){var _0x2e33a7=_0x51b25d[_0x5bec('0x54')]({'plain':!![]});_0x2e33a7=qs[_0x5bec('0x55')](_0x2e33a7,['id','createdAt',_0x5bec('0x56')]);_0x209da3[_0x5bec('0x57')]=_[_0x5bec('0x55')](_0x209da3[_0x5bec('0x57')],['id',_0x5bec('0x58'),'updatedAt']);return db[_0x5bec('0x36')][_0x5bec('0x59')](_[_0x5bec('0x46')](_0x2e33a7,_0x209da3[_0x5bec('0x57')]),{'include':_0x209da3['query'][_0x5bec('0x4a')]?[{'all':!![]}]:undefined})['then'](function(_0x2b701f){var _0x38deb0=_0x209da3[_0x5bec('0x5a')][_0x5bec('0x54')]({'plain':!![]});if(!_0x38deb0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x38deb0[_0x5bec('0x5b')]===_0x5bec('0x5a')){var _0x1b3c40=_0x2b701f[_0x5bec('0x54')]({'plain':!![]});var _0xc3e3df=_0x5bec('0x2f');return db[_0x5bec('0x5c')][_0x5bec('0x52')]({'where':{'name':_0xc3e3df,'userProfileId':_0x38deb0[_0x5bec('0x5d')]},'raw':!![]})[_0x5bec('0x1c')](function(_0xfa751f){if(_0xfa751f&&_0xfa751f[_0x5bec('0x5e')]===0x0){return db[_0x5bec('0x30')][_0x5bec('0x59')]({'name':_0x1b3c40[_0x5bec('0x33')],'resourceId':_0x1b3c40['id'],'type':_0xfa751f['name'],'sectionId':_0xfa751f['id']},{})[_0x5bec('0x1c')](function(){return _0x2b701f;});}else{return _0x2b701f;}})[_0x5bec('0x4e')](function(_0x4e899c){logger[_0x5bec('0x22')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4e899c);throw _0x4e899c;});}return _0x2b701f;});}})[_0x5bec('0x1c')](respondWithResult(_0x9cae50,0xc9))[_0x5bec('0x4e')](handleError(_0x9cae50,null));};exports['create']=function(_0x5a2a85,_0xd54be0,_0xcac51d){var _0xb6cf85;return db[_0x5bec('0x36')][_0x5bec('0x59')](_0x5a2a85['body'],{'raw':!![]})[_0x5bec('0x1c')](function(_0x39cb06){_0xb6cf85=_0x39cb06;return db['Trunk'][_0x5bec('0x4c')]({'raw':!![]});})[_0x5bec('0x1c')](function(_0x44a945){var _0x34f31c=fs['readFileSync'](path[_0x5bec('0x5f')](config['root'],_0x5bec('0x60')),_0x5bec('0x61'));var _0x3ede1d=fs[_0x5bec('0x62')](path[_0x5bec('0x5f')](config[_0x5bec('0x63')],_0x5bec('0x64')),_0x5bec('0x61'));var _0x1ee139=ejs[_0x5bec('0x65')](_0x34f31c,{'trunks':_0x44a945||[]});fs[_0x5bec('0x66')]('/etc/asterisk/sip_xcally_trunks.conf',_0x1ee139);if(_0xb6cf85['registry']){var _0x3c305e=ejs[_0x5bec('0x65')](_0x3ede1d,{'trunks':_0x44a945||[]});fs[_0x5bec('0x66')](_0x5bec('0x67'),_0x3c305e);}})[_0x5bec('0x1c')](function(){return respondWithRpcPromise(_0x5bec('0x68'),_0x5bec('0x59'),{'module':'chan_sip.so'});})['then'](function(){var _0xc81e8f=_0x5a2a85[_0x5bec('0x5a')][_0x5bec('0x54')]({'plain':!![]});if(!_0xc81e8f)throw new Error(_0x5bec('0x69'));if(_0xc81e8f[_0x5bec('0x5b')]===_0x5bec('0x5a')){var _0x17cd00=_0xb6cf85[_0x5bec('0x54')]({'plain':!![]});return db[_0x5bec('0x5c')][_0x5bec('0x52')]({'where':{'name':_0x5bec('0x2f'),'userProfileId':_0xc81e8f[_0x5bec('0x5d')]},'raw':!![]})[_0x5bec('0x1c')](function(_0x325044){if(_0x325044&&_0x325044[_0x5bec('0x5e')]===0x0){return db[_0x5bec('0x30')][_0x5bec('0x59')]({'name':_0x17cd00[_0x5bec('0x33')],'resourceId':_0x17cd00['id'],'type':_0x325044[_0x5bec('0x33')],'sectionId':_0x325044['id']},{})[_0x5bec('0x1c')](function(){return _0xb6cf85;});}else{return _0xb6cf85;}})['catch'](function(_0x2e76c0){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2e76c0);throw _0x2e76c0;});}return _0xb6cf85;})[_0x5bec('0x1c')](respondWithResult(_0xd54be0,0xc9))['catch'](handleError(_0xd54be0,null));};exports[_0x5bec('0x6a')]=function(_0x5d6af3,_0x5ca280,_0x2e849b){var _0x1b5ec0;return db['Trunk'][_0x5bec('0x52')]({'where':{'id':_0x5d6af3[_0x5bec('0x50')]['id']}})[_0x5bec('0x1c')](handleEntityNotFound(_0x5ca280,null))[_0x5bec('0x1c')](saveUpdates(_0x5d6af3[_0x5bec('0x57')],null))[_0x5bec('0x1c')](function(_0xb76af2){if(_0xb76af2){_0x1b5ec0=_0xb76af2;return db[_0x5bec('0x36')]['findAll']({'raw':!![]});}})['then'](function(_0x2e8cd3){if(_0x2e8cd3){var _0x122c7f=fs[_0x5bec('0x62')](path[_0x5bec('0x5f')](config['root'],_0x5bec('0x60')),'utf8');var _0x44ceec=fs[_0x5bec('0x62')](path[_0x5bec('0x5f')](config[_0x5bec('0x63')],_0x5bec('0x64')),_0x5bec('0x61'));var _0x38be2d=ejs[_0x5bec('0x65')](_0x122c7f,{'trunks':_0x2e8cd3||[]});fs['writeFileSync'](_0x5bec('0x6b'),_0x38be2d);var _0xe5f9e5=ejs[_0x5bec('0x65')](_0x44ceec,{'trunks':_0x2e8cd3||[]});fs[_0x5bec('0x66')](_0x5bec('0x67'),_0xe5f9e5);return respondWithRpcPromise('Reload',_0x5bec('0x6a'),{'module':_0x5bec('0x6c')});}return null;})['then'](function(_0x195c12){if(_0x195c12){return _0x1b5ec0;}})['then'](respondWithResult(_0x5ca280,null))[_0x5bec('0x4e')](handleError(_0x5ca280,null));};exports[_0x5bec('0x31')]=function(_0x4646a3,_0x313e1c,_0x437c3e){var _0x3d7600;return db[_0x5bec('0x36')][_0x5bec('0x52')]({'where':{'id':_0x4646a3[_0x5bec('0x50')]['id']}})[_0x5bec('0x1c')](handleEntityNotFound(_0x313e1c,null))[_0x5bec('0x1c')](removeEntity(_0x313e1c,null))[_0x5bec('0x1c')](function(){return db[_0x5bec('0x36')][_0x5bec('0x4c')]({'raw':!![]});})[_0x5bec('0x1c')](function(_0x1eaf2f){var _0x317e2a=fs[_0x5bec('0x62')](path['join'](config[_0x5bec('0x63')],'server/files/templates/trunk.ejs'),_0x5bec('0x61'));var _0xfcef92=fs['readFileSync'](path['join'](config[_0x5bec('0x63')],'server/files/templates/registry.ejs'),_0x5bec('0x61'));var _0x4b70df=ejs[_0x5bec('0x65')](_0x317e2a,{'trunks':_0x1eaf2f});var _0x27b40b=ejs['render'](_0xfcef92,{'trunks':_0x1eaf2f});fs[_0x5bec('0x66')]('/etc/asterisk/sip_xcally_trunks.conf',_0x4b70df);fs[_0x5bec('0x66')]('/etc/asterisk/sip_xcally_registers.conf',_0x27b40b);return respondWithRpcPromise(_0x5bec('0x68'),_0x5bec('0x31'),{'module':'chan_sip.so'});})[_0x5bec('0x4e')](handleError(_0x313e1c,null));};
\ No newline at end of file
index 7e84407..8a59d44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19bb=['../../config/logger','path','./trunk.attributes','exports','define','Trunk','util'];(function(_0x2e655a,_0x6d5799){var _0x26f13b=function(_0x2dd535){while(--_0x2dd535){_0x2e655a['push'](_0x2e655a['shift']());}};_0x26f13b(++_0x6d5799);}(_0x19bb,0x1f0));var _0xb19b=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x19bb[_0x19950b];return _0x3c6b41;};'use strict';var _=require('lodash');var util=require(_0xb19b('0x0'));var logger=require(_0xb19b('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb19b('0x2'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb19b('0x3'));module[_0xb19b('0x4')]=function(_0xe18baf,_0x503d37){return _0xe18baf[_0xb19b('0x5')](_0xb19b('0x6'),attributes,{'tableName':'tools_trunks','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2096=['define','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./trunk.attributes','exports'];(function(_0x147435,_0x11366f){var _0x2cac98=function(_0x15b73d){while(--_0x15b73d){_0x147435['push'](_0x147435['shift']());}};_0x2cac98(++_0x11366f);}(_0x2096,0x9d));var _0x6209=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x2096[_0x45d55e];return _0x29812a;};'use strict';var _=require(_0x6209('0x0'));var util=require(_0x6209('0x1'));var logger=require(_0x6209('0x2'))(_0x6209('0x3'));var moment=require(_0x6209('0x4'));var BPromise=require(_0x6209('0x5'));var rp=require(_0x6209('0x6'));var fs=require('fs');var path=require(_0x6209('0x7'));var rimraf=require(_0x6209('0x8'));var config=require(_0x6209('0x9'));var attributes=require(_0x6209('0xa'));module[_0x6209('0xb')]=function(_0x4404ba,_0x63bbd8){return _0x4404ba[_0x6209('0xc')]('Trunk',attributes,{'tableName':'tools_trunks','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0994a6c..2687757 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe21a=['message','catch','GetTrunk','Trunk','findAll','options','where','include','map','model','attributes','ShowTrunk','raw','lodash','util','bluebird','randomstring','ioredis','rpc','jayson/promise','client','http','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x409353,_0xe9f04d){var _0x4f4b59=function(_0x64b587){while(--_0x64b587){_0x409353['push'](_0x409353['shift']());}};_0x4f4b59(++_0xe9f04d);}(_0xe21a,0xc1));var _0xae21=function(_0x5eb631,_0x3bcd2b){_0x5eb631=_0x5eb631-0x0;var _0x3f892b=_0xe21a[_0x5eb631];return _0x3f892b;};'use strict';var _=require(_0xae21('0x0'));var util=require(_0xae21('0x1'));var moment=require('moment');var BPromise=require(_0xae21('0x2'));var rs=require(_0xae21('0x3'));var fs=require('fs');var Redis=require(_0xae21('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xae21('0x5'));var config=require('../../config/environment');var jayson=require(_0xae21('0x6'));var client=jayson[_0xae21('0x7')][_0xae21('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3d5817,_0x58a0e5,_0x328c66){return new BPromise(function(_0x9f6b10,_0x12fa66){return client['request'](_0x3d5817,_0x328c66)[_0xae21('0x9')](function(_0x1b8848){logger[_0xae21('0xa')](_0xae21('0xb'),_0x58a0e5,_0xae21('0xc'));logger[_0xae21('0xd')]('Trunk,\x20%s,\x20%s,\x20%s',_0x58a0e5,'request\x20sent',JSON[_0xae21('0xe')](_0x1b8848));if(_0x1b8848[_0xae21('0xf')]){if(_0x1b8848[_0xae21('0xf')][_0xae21('0x10')]===0x1f4){logger['error']('Trunk,\x20%s,\x20%s',_0x58a0e5,_0x1b8848[_0xae21('0xf')][_0xae21('0x11')]);return _0x12fa66(_0x1b8848[_0xae21('0xf')][_0xae21('0x11')]);}logger[_0xae21('0xf')](_0xae21('0xb'),_0x58a0e5,_0x1b8848[_0xae21('0xf')][_0xae21('0x11')]);return _0x9f6b10(_0x1b8848[_0xae21('0xf')]['message']);}else{logger['info'](_0xae21('0xb'),_0x58a0e5,_0xae21('0xc'));_0x9f6b10(_0x1b8848['result'][_0xae21('0x11')]);}})[_0xae21('0x12')](function(_0x4f9153){logger[_0xae21('0xf')](_0xae21('0xb'),_0x58a0e5,_0x4f9153);_0x12fa66(_0x4f9153);});});}exports[_0xae21('0x13')]=function(_0x320ee7){var _0x5ac870=this;return new Promise(function(_0x4275af,_0x4096df){return db[_0xae21('0x14')][_0xae21('0x15')]({'raw':_0x320ee7[_0xae21('0x16')]?_0x320ee7['options']['raw']===undefined?!![]:![]:!![],'where':_0x320ee7['options']?_0x320ee7[_0xae21('0x16')][_0xae21('0x17')]||null:null,'attributes':_0x320ee7[_0xae21('0x16')]?_0x320ee7['options']['attributes']||null:null,'limit':_0x320ee7[_0xae21('0x16')]?_0x320ee7[_0xae21('0x16')]['limit']||null:null,'include':_0x320ee7['options']?_0x320ee7[_0xae21('0x16')][_0xae21('0x18')]?_[_0xae21('0x19')](_0x320ee7[_0xae21('0x16')][_0xae21('0x18')],function(_0xafb77){return{'model':db[_0xafb77[_0xae21('0x1a')]],'as':_0xafb77['as'],'attributes':_0xafb77[_0xae21('0x1b')],'include':_0xafb77[_0xae21('0x18')]?_[_0xae21('0x19')](_0xafb77['include'],function(_0x68e22d){return{'model':db[_0x68e22d['model']],'as':_0x68e22d['as'],'attributes':_0x68e22d[_0xae21('0x1b')],'include':_0x68e22d[_0xae21('0x18')]?_[_0xae21('0x19')](_0x68e22d['include'],function(_0x2a16cd){return{'model':db[_0x2a16cd[_0xae21('0x1a')]],'as':_0x2a16cd['as'],'attributes':_0x2a16cd[_0xae21('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xae21('0x9')](function(_0x310f25){logger['info'](_0xae21('0x13'),_0x320ee7);logger[_0xae21('0xd')](_0xae21('0x13'),_0x320ee7,JSON['stringify'](_0x310f25));_0x4275af(_0x310f25);})[_0xae21('0x12')](function(_0x3acc8c){logger[_0xae21('0xf')](_0xae21('0x13'),_0x3acc8c[_0xae21('0x11')],_0x320ee7);_0x4096df(_0x5ac870[_0xae21('0xf')](0x1f4,_0x3acc8c[_0xae21('0x11')]));});});};exports[_0xae21('0x1c')]=function(_0x3cdb01){var _0x4de74a=this;return new Promise(function(_0x418dd8,_0x5ecc88){return db[_0xae21('0x14')]['find']({'raw':_0x3cdb01['options']?_0x3cdb01[_0xae21('0x16')][_0xae21('0x1d')]===undefined?!![]:![]:!![],'where':_0x3cdb01[_0xae21('0x16')]?_0x3cdb01[_0xae21('0x16')]['where']||null:null,'attributes':_0x3cdb01[_0xae21('0x16')]?_0x3cdb01['options']['attributes']||null:null,'include':_0x3cdb01['options']?_0x3cdb01[_0xae21('0x16')]['include']?_[_0xae21('0x19')](_0x3cdb01[_0xae21('0x16')][_0xae21('0x18')],function(_0x322004){return{'model':db[_0x322004[_0xae21('0x1a')]],'as':_0x322004['as'],'attributes':_0x322004[_0xae21('0x1b')],'include':_0x322004[_0xae21('0x18')]?_['map'](_0x322004[_0xae21('0x18')],function(_0x526869){return{'model':db[_0x526869[_0xae21('0x1a')]],'as':_0x526869['as'],'attributes':_0x526869[_0xae21('0x1b')],'include':_0x526869[_0xae21('0x18')]?_['map'](_0x526869[_0xae21('0x18')],function(_0x3738d8){return{'model':db[_0x3738d8[_0xae21('0x1a')]],'as':_0x3738d8['as'],'attributes':_0x3738d8[_0xae21('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xae21('0x9')](function(_0x5bab6e){logger[_0xae21('0xa')]('ShowTrunk',_0x3cdb01);logger[_0xae21('0xd')](_0xae21('0x1c'),_0x3cdb01,JSON[_0xae21('0xe')](_0x5bab6e));_0x418dd8(_0x5bab6e);})[_0xae21('0x12')](function(_0x2e162a){logger[_0xae21('0xf')](_0xae21('0x1c'),_0x2e162a[_0xae21('0x11')],_0x3cdb01);_0x5ecc88(_0x4de74a['error'](0x1f4,_0x2e162a['message']));});});};
\ No newline at end of file
+var _0x642a=['Trunk','findAll','options','where','attributes','limit','include','map','model','then','GetTrunk','debug','stringify','ShowTrunk','find','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','Trunk,\x20%s,\x20%s','request\x20sent','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','result','catch'];(function(_0x43e1b9,_0x5a85a0){var _0x114281=function(_0x40c91a){while(--_0x40c91a){_0x43e1b9['push'](_0x43e1b9['shift']());}};_0x114281(++_0x5a85a0);}(_0x642a,0x1f0));var _0xa642=function(_0x5f3d1d,_0xbdd451){_0x5f3d1d=_0x5f3d1d-0x0;var _0x5b8d9a=_0x642a[_0x5f3d1d];return _0x5b8d9a;};'use strict';var _=require(_0xa642('0x0'));var util=require(_0xa642('0x1'));var moment=require(_0xa642('0x2'));var BPromise=require(_0xa642('0x3'));var rs=require(_0xa642('0x4'));var fs=require('fs');var Redis=require(_0xa642('0x5'));var db=require(_0xa642('0x6'))['db'];var utils=require(_0xa642('0x7'));var logger=require(_0xa642('0x8'))(_0xa642('0x9'));var config=require(_0xa642('0xa'));var jayson=require(_0xa642('0xb'));var client=jayson[_0xa642('0xc')][_0xa642('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x2a4caf,_0x52018c,_0x16c992){return new BPromise(function(_0x35044a,_0x2a466e){return client[_0xa642('0xe')](_0x2a4caf,_0x16c992)['then'](function(_0xeefb94){logger[_0xa642('0xf')](_0xa642('0x10'),_0x52018c,_0xa642('0x11'));logger['debug'](_0xa642('0x12'),_0x52018c,'request\x20sent',JSON['stringify'](_0xeefb94));if(_0xeefb94['error']){if(_0xeefb94[_0xa642('0x13')][_0xa642('0x14')]===0x1f4){logger['error'](_0xa642('0x10'),_0x52018c,_0xeefb94['error'][_0xa642('0x15')]);return _0x2a466e(_0xeefb94[_0xa642('0x13')]['message']);}logger[_0xa642('0x13')](_0xa642('0x10'),_0x52018c,_0xeefb94[_0xa642('0x13')][_0xa642('0x15')]);return _0x35044a(_0xeefb94[_0xa642('0x13')][_0xa642('0x15')]);}else{logger['info'](_0xa642('0x10'),_0x52018c,_0xa642('0x11'));_0x35044a(_0xeefb94[_0xa642('0x16')][_0xa642('0x15')]);}})[_0xa642('0x17')](function(_0x3ff72a){logger[_0xa642('0x13')](_0xa642('0x10'),_0x52018c,_0x3ff72a);_0x2a466e(_0x3ff72a);});});}exports['GetTrunk']=function(_0x504f42){var _0x193270=this;return new Promise(function(_0x543bf2,_0x33924e){return db[_0xa642('0x18')][_0xa642('0x19')]({'raw':_0x504f42['options']?_0x504f42[_0xa642('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x504f42['options']?_0x504f42[_0xa642('0x1a')][_0xa642('0x1b')]||null:null,'attributes':_0x504f42[_0xa642('0x1a')]?_0x504f42[_0xa642('0x1a')][_0xa642('0x1c')]||null:null,'limit':_0x504f42[_0xa642('0x1a')]?_0x504f42[_0xa642('0x1a')][_0xa642('0x1d')]||null:null,'include':_0x504f42[_0xa642('0x1a')]?_0x504f42[_0xa642('0x1a')][_0xa642('0x1e')]?_[_0xa642('0x1f')](_0x504f42['options'][_0xa642('0x1e')],function(_0x10bb9e){return{'model':db[_0x10bb9e[_0xa642('0x20')]],'as':_0x10bb9e['as'],'attributes':_0x10bb9e[_0xa642('0x1c')],'include':_0x10bb9e[_0xa642('0x1e')]?_['map'](_0x10bb9e[_0xa642('0x1e')],function(_0x117ec6){return{'model':db[_0x117ec6['model']],'as':_0x117ec6['as'],'attributes':_0x117ec6[_0xa642('0x1c')],'include':_0x117ec6[_0xa642('0x1e')]?_[_0xa642('0x1f')](_0x117ec6[_0xa642('0x1e')],function(_0x5e47b4){return{'model':db[_0x5e47b4[_0xa642('0x20')]],'as':_0x5e47b4['as'],'attributes':_0x5e47b4[_0xa642('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xa642('0x21')](function(_0x10dd84){logger[_0xa642('0xf')](_0xa642('0x22'),_0x504f42);logger[_0xa642('0x23')](_0xa642('0x22'),_0x504f42,JSON[_0xa642('0x24')](_0x10dd84));_0x543bf2(_0x10dd84);})[_0xa642('0x17')](function(_0x38aefd){logger[_0xa642('0x13')]('GetTrunk',_0x38aefd[_0xa642('0x15')],_0x504f42);_0x33924e(_0x193270[_0xa642('0x13')](0x1f4,_0x38aefd[_0xa642('0x15')]));});});};exports[_0xa642('0x25')]=function(_0x3566c9){var _0x17e05c=this;return new Promise(function(_0x4e62d5,_0x547852){return db[_0xa642('0x18')][_0xa642('0x26')]({'raw':_0x3566c9['options']?_0x3566c9[_0xa642('0x1a')][_0xa642('0x27')]===undefined?!![]:![]:!![],'where':_0x3566c9[_0xa642('0x1a')]?_0x3566c9[_0xa642('0x1a')][_0xa642('0x1b')]||null:null,'attributes':_0x3566c9[_0xa642('0x1a')]?_0x3566c9[_0xa642('0x1a')][_0xa642('0x1c')]||null:null,'include':_0x3566c9['options']?_0x3566c9[_0xa642('0x1a')][_0xa642('0x1e')]?_['map'](_0x3566c9[_0xa642('0x1a')][_0xa642('0x1e')],function(_0x2c95b3){return{'model':db[_0x2c95b3[_0xa642('0x20')]],'as':_0x2c95b3['as'],'attributes':_0x2c95b3['attributes'],'include':_0x2c95b3[_0xa642('0x1e')]?_['map'](_0x2c95b3[_0xa642('0x1e')],function(_0x3adb65){return{'model':db[_0x3adb65[_0xa642('0x20')]],'as':_0x3adb65['as'],'attributes':_0x3adb65['attributes'],'include':_0x3adb65[_0xa642('0x1e')]?_['map'](_0x3adb65['include'],function(_0x20c786){return{'model':db[_0x20c786[_0xa642('0x20')]],'as':_0x20c786['as'],'attributes':_0x20c786[_0xa642('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xa642('0x21')](function(_0x2a9689){logger[_0xa642('0xf')](_0xa642('0x25'),_0x3566c9);logger[_0xa642('0x23')](_0xa642('0x25'),_0x3566c9,JSON[_0xa642('0x24')](_0x2a9689));_0x4e62d5(_0x2a9689);})['catch'](function(_0x19c051){logger[_0xa642('0x13')](_0xa642('0x25'),_0x19c051['message'],_0x3566c9);_0x547852(_0x17e05c[_0xa642('0x13')](0x1f4,_0x19c051['message']));});});};
\ No newline at end of file
index 1c24361..07b2817 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1bf=['../../components/auth/service','./user-setting.controller','/:id','update','exports','express','Router'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xf1bf,0x1a9));var _0xff1b=function(_0xe33db5,_0x5cde4c){_0xe33db5=_0xe33db5-0x0;var _0xbf67f6=_0xf1bf[_0xe33db5];return _0xbf67f6;};'use strict';var express=require(_0xff1b('0x0'));var router=express[_0xff1b('0x1')]();var auth=require(_0xff1b('0x2'));var controller=require(_0xff1b('0x3'));router['put'](_0xff1b('0x4'),auth['isAuthenticated'](),controller[_0xff1b('0x5')]);module[_0xff1b('0x6')]=router;
\ No newline at end of file
+var _0x0f33=['isAuthenticated','exports','express','Router','../../components/auth/service','./user-setting.controller','put','/:id'];(function(_0x572191,_0x3bc27e){var _0x13d364=function(_0xc01b0){while(--_0xc01b0){_0x572191['push'](_0x572191['shift']());}};_0x13d364(++_0x3bc27e);}(_0x0f33,0xfa));var _0x30f3=function(_0x21d318,_0x38ebe9){_0x21d318=_0x21d318-0x0;var _0x56a879=_0x0f33[_0x21d318];return _0x56a879;};'use strict';var express=require(_0x30f3('0x0'));var router=express[_0x30f3('0x1')]();var auth=require(_0x30f3('0x2'));var controller=require(_0x30f3('0x3'));router[_0x30f3('0x4')](_0x30f3('0x5'),auth[_0x30f3('0x6')](),controller['update']);module[_0x30f3('0x7')]=router;
\ No newline at end of file
index 90bd196..9416b83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35ae=['DATE','INTEGER','UserId','sequelize','debug','exports','ENUM','error','TEXT'];(function(_0x7bb2e7,_0x56c514){var _0x40cba4=function(_0xa6729c){while(--_0xa6729c){_0x7bb2e7['push'](_0x7bb2e7['shift']());}};_0x40cba4(++_0x56c514);}(_0x35ae,0x150));var _0xe35a=function(_0x5642f6,_0x24a53a){_0x5642f6=_0x5642f6-0x0;var _0x597670=_0x35ae[_0x5642f6];return _0x597670;};'use strict';var Sequelize=require(_0xe35a('0x0'));const CLIENT_SIDE_LOG_LEVELS=['error','warning','info',_0xe35a('0x1')];module[_0xe35a('0x2')]={'clientSideLoggingLevel':{'type':Sequelize[_0xe35a('0x3')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0xe35a('0x4'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0xe35a('0x5')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0xe35a('0x6')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0xe35a('0x7')],'unique':_0xe35a('0x8')}};
\ No newline at end of file
+var _0xf30c=['TEXT','DATE','sequelize','error','info','debug','BOOLEAN'];(function(_0xe45d7,_0x4222f2){var _0x1c005c=function(_0x4986d2){while(--_0x4986d2){_0xe45d7['push'](_0xe45d7['shift']());}};_0x1c005c(++_0x4222f2);}(_0xf30c,0x167));var _0xcf30=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf30c[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xcf30('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0xcf30('0x1'),'warning',_0xcf30('0x2'),_0xcf30('0x3')];module['exports']={'clientSideLoggingLevel':{'type':Sequelize['ENUM'](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0xcf30('0x1'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0xcf30('0x4')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0xcf30('0x5')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0xcf30('0x6')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize['INTEGER'],'unique':'UserId'}};
\ No newline at end of file
index 9a3e374..e2d50d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1c4=['../../config/environment','../../mysqldb','socket.io-emitter','./user-setting.socket','register','redis','defaults','localhost','status','update','then','sendStatus','error','stack','send','role','admin','params','Invalid\x20user\x20setting\x20id','UserSetting','find','body','catch','lodash','ioredis','../../config/logger','api'];(function(_0x1a3eb8,_0x39b985){var _0x5f5bd0=function(_0x5793c2){while(--_0x5793c2){_0x1a3eb8['push'](_0x1a3eb8['shift']());}};_0x5f5bd0(++_0x39b985);}(_0xc1c4,0x1c7));var _0x4c1c=function(_0x2f9dfb,_0x18cd87){_0x2f9dfb=_0x2f9dfb-0x0;var _0xb10ace=_0xc1c4[_0x2f9dfb];return _0xb10ace;};'use strict';var _=require(_0x4c1c('0x0'));var Redis=require(_0x4c1c('0x1'));var logger=require(_0x4c1c('0x2'))(_0x4c1c('0x3'));var config=require(_0x4c1c('0x4'));var db=require(_0x4c1c('0x5'))['db'];var socket=require(_0x4c1c('0x6'))(new Redis(config['redis']));require(_0x4c1c('0x7'))[_0x4c1c('0x8')](socket);config[_0x4c1c('0x9')]=_[_0x4c1c('0xa')](config['redis'],{'host':_0x4c1c('0xb'),'port':0x18eb});function respondWithResult(_0x4f5a4f,_0x5863d0){_0x5863d0=_0x5863d0||0xc8;return function(_0x20e276){if(_0x20e276){return _0x4f5a4f[_0x4c1c('0xc')](_0x5863d0)['json'](_0x20e276);}};}function saveUpdates(_0x13cb7b){return function(_0x14e74d){if(_0x14e74d){return _0x14e74d[_0x4c1c('0xd')](_0x13cb7b)[_0x4c1c('0xe')](function(_0x1ac32d){return _0x1ac32d;});}return null;};}function handleEntityNotFound(_0x4eeccd){return function(_0x5cf2d1){if(!_0x5cf2d1){_0x4eeccd[_0x4c1c('0xf')](0x194);}return _0x5cf2d1;};}function handleError(_0x206650,_0x41278a){_0x41278a=_0x41278a||0x1f4;return function(_0x132319){logger[_0x4c1c('0x10')](_0x132319[_0x4c1c('0x11')]);if(_0x132319['name']){delete _0x132319['name'];}_0x206650[_0x4c1c('0xc')](_0x41278a)[_0x4c1c('0x12')](_0x132319);};}exports[_0x4c1c('0xd')]=function(_0x30f8d0,_0x2aaa4e){if(_0x30f8d0['user'][_0x4c1c('0x13')]!==_0x4c1c('0x14'))throw new Error('Unauthorized');if(isNaN(Number(_0x30f8d0[_0x4c1c('0x15')]['id'])))throw new Error(_0x4c1c('0x16'));return db[_0x4c1c('0x17')][_0x4c1c('0x18')]({'where':{'id':_0x30f8d0[_0x4c1c('0x15')]['id']}})[_0x4c1c('0xe')](handleEntityNotFound(_0x2aaa4e,null))[_0x4c1c('0xe')](saveUpdates(_0x30f8d0[_0x4c1c('0x19')],null))[_0x4c1c('0xe')](respondWithResult(_0x2aaa4e,null))[_0x4c1c('0x1a')](handleError(_0x2aaa4e,null));};
\ No newline at end of file
+var _0xf822=['json','then','sendStatus','error','stack','name','update','role','admin','UserSetting','find','params','body','catch','lodash','../../config/logger','api','../../config/environment','../../mysqldb','socket.io-emitter','redis','register','defaults','localhost','status'];(function(_0x2a13ea,_0x443c34){var _0x49d2ae=function(_0x20be20){while(--_0x20be20){_0x2a13ea['push'](_0x2a13ea['shift']());}};_0x49d2ae(++_0x443c34);}(_0xf822,0x19e));var _0x2f82=function(_0x388d52,_0x1a282){_0x388d52=_0x388d52-0x0;var _0x4d45b7=_0xf822[_0x388d52];return _0x4d45b7;};'use strict';var _=require(_0x2f82('0x0'));var Redis=require('ioredis');var logger=require(_0x2f82('0x1'))(_0x2f82('0x2'));var config=require(_0x2f82('0x3'));var db=require(_0x2f82('0x4'))['db'];var socket=require(_0x2f82('0x5'))(new Redis(config[_0x2f82('0x6')]));require('./user-setting.socket')[_0x2f82('0x7')](socket);config[_0x2f82('0x6')]=_[_0x2f82('0x8')](config['redis'],{'host':_0x2f82('0x9'),'port':0x18eb});function respondWithResult(_0x50ec5d,_0x39a4db){_0x39a4db=_0x39a4db||0xc8;return function(_0x236d70){if(_0x236d70){return _0x50ec5d[_0x2f82('0xa')](_0x39a4db)[_0x2f82('0xb')](_0x236d70);}};}function saveUpdates(_0x2fe3d5){return function(_0x25272a){if(_0x25272a){return _0x25272a['update'](_0x2fe3d5)[_0x2f82('0xc')](function(_0xa32e4a){return _0xa32e4a;});}return null;};}function handleEntityNotFound(_0x5d1451){return function(_0xb306e8){if(!_0xb306e8){_0x5d1451[_0x2f82('0xd')](0x194);}return _0xb306e8;};}function handleError(_0x439143,_0x48139a){_0x48139a=_0x48139a||0x1f4;return function(_0x48b245){logger[_0x2f82('0xe')](_0x48b245[_0x2f82('0xf')]);if(_0x48b245[_0x2f82('0x10')]){delete _0x48b245[_0x2f82('0x10')];}_0x439143['status'](_0x48139a)['send'](_0x48b245);};}exports[_0x2f82('0x11')]=function(_0x2987e5,_0x12b57a){if(_0x2987e5['user'][_0x2f82('0x12')]!==_0x2f82('0x13'))throw new Error('Unauthorized');if(isNaN(Number(_0x2987e5['params']['id'])))throw new Error('Invalid\x20user\x20setting\x20id');return db[_0x2f82('0x14')][_0x2f82('0x15')]({'where':{'id':_0x2987e5[_0x2f82('0x16')]['id']}})[_0x2f82('0xc')](handleEntityNotFound(_0x12b57a,null))['then'](saveUpdates(_0x2987e5[_0x2f82('0x17')],null))['then'](respondWithResult(_0x12b57a,null))[_0x2f82('0x18')](handleError(_0x12b57a,null));};
\ No newline at end of file
index 06d2f2f..5323b78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf71=['hasOwnProperty','events','../../mysqldb','UserSetting','setMaxListeners','save','update','remove','emit'];(function(_0x3a3a35,_0x2d6894){var _0x1cf736=function(_0xc8707d){while(--_0xc8707d){_0x3a3a35['push'](_0x3a3a35['shift']());}};_0x1cf736(++_0x2d6894);}(_0xcf71,0x1c3));var _0x1cf7=function(_0x3adc9f,_0x5d49d5){_0x3adc9f=_0x3adc9f-0x0;var _0x432a40=_0xcf71[_0x3adc9f];return _0x432a40;};'use strict';var EventEmitter=require(_0x1cf7('0x0'));var UserSetting=require(_0x1cf7('0x1'))['db'][_0x1cf7('0x2')];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0x1cf7('0x3')](0x0);var events={'afterCreate':_0x1cf7('0x4'),'afterUpdate':_0x1cf7('0x5'),'afterDestroy':_0x1cf7('0x6')};function emitEvent(_0x2b7476){return function(_0x12133c,_0x177207,_0x3f48b7){UserSettingEvents[_0x1cf7('0x7')](_0x2b7476+':'+_0x12133c['id'],_0x12133c);UserSettingEvents[_0x1cf7('0x7')](_0x2b7476,_0x12133c);_0x3f48b7(null);};}for(var e in events){if(events[_0x1cf7('0x8')](e)){var event=events[e];UserSetting['hook'](e,emitEvent(event));}}module['exports']=UserSettingEvents;
\ No newline at end of file
+var _0x2c74=['../../mysqldb','UserSetting','setMaxListeners','save','remove','hasOwnProperty','exports'];(function(_0x287006,_0x1142de){var _0x3e1a27=function(_0xee1d29){while(--_0xee1d29){_0x287006['push'](_0x287006['shift']());}};_0x3e1a27(++_0x1142de);}(_0x2c74,0x10a));var _0x42c7=function(_0x25e7bc,_0x6c04a4){_0x25e7bc=_0x25e7bc-0x0;var _0x42ecf6=_0x2c74[_0x25e7bc];return _0x42ecf6;};'use strict';var EventEmitter=require('events');var UserSetting=require(_0x42c7('0x0'))['db'][_0x42c7('0x1')];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0x42c7('0x2')](0x0);var events={'afterCreate':_0x42c7('0x3'),'afterUpdate':'update','afterDestroy':_0x42c7('0x4')};function emitEvent(_0x3ab63e){return function(_0x1f8cba,_0x50fe07,_0x3484e7){UserSettingEvents['emit'](_0x3ab63e+':'+_0x1f8cba['id'],_0x1f8cba);UserSettingEvents['emit'](_0x3ab63e,_0x1f8cba);_0x3484e7(null);};}for(var e in events){if(events[_0x42c7('0x5')](e)){var event=events[e];UserSetting['hook'](e,emitEvent(event));}}module[_0x42c7('0x6')]=UserSettingEvents;
\ No newline at end of file
index d75d165..4df2fc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dd2=['clientSideLoggingEnabledSince','exports','define','user_settings','clientSideLoggingEnabled'];(function(_0x2ec91c,_0x2c55e6){var _0x25de0e=function(_0x1adcb8){while(--_0x1adcb8){_0x2ec91c['push'](_0x2ec91c['shift']());}};_0x25de0e(++_0x2c55e6);}(_0x4dd2,0xf1));var _0x24dd=function(_0x2cba09,_0x23ee85){_0x2cba09=_0x2cba09-0x0;var _0x10d084=_0x4dd2[_0x2cba09];return _0x10d084;};'use strict';var attributes=require('./user-setting.attributes');module[_0x24dd('0x0')]=function(_0x2ee27b){return _0x2ee27b[_0x24dd('0x1')]('UserSetting',attributes,{'tableName':_0x24dd('0x2'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5c459c){if(!_0x5c459c[_0x24dd('0x3')])_0x5c459c['clientSideLoggingEnabledSince']=null;else if(_0x5c459c[_0x24dd('0x4')]===null)_0x5c459c[_0x24dd('0x4')]=new Date();}}});};
\ No newline at end of file
+var _0x6e6c=['UserSetting','clientSideLoggingEnabled','clientSideLoggingEnabledSince','./user-setting.attributes','exports','define'];(function(_0x32e808,_0x36008d){var _0x2be803=function(_0x59fac7){while(--_0x59fac7){_0x32e808['push'](_0x32e808['shift']());}};_0x2be803(++_0x36008d);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6e6c[_0x14add3];return _0x4a174f;};'use strict';var attributes=require(_0xc6e6('0x0'));module[_0xc6e6('0x1')]=function(_0x545f2c){return _0x545f2c[_0xc6e6('0x2')](_0xc6e6('0x3'),attributes,{'tableName':'user_settings','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x550e47){if(!_0x550e47[_0xc6e6('0x4')])_0x550e47['clientSideLoggingEnabledSince']=null;else if(_0x550e47[_0xc6e6('0x5')]===null)_0x550e47['clientSideLoggingEnabledSince']=new Date();}}});};
\ No newline at end of file
index 711193d..ed4c560 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a94=['UserId','register','./user-setting.events','save','remove','update','emit','user-setting:update','user-setting:update:user-'];(function(_0x7c5a37,_0x646d35){var _0xa11c72=function(_0x4cd06a){while(--_0x4cd06a){_0x7c5a37['push'](_0x7c5a37['shift']());}};_0xa11c72(++_0x646d35);}(_0x0a94,0xe3));var _0x40a9=function(_0x25980b,_0x583a0b){_0x25980b=_0x25980b-0x0;var _0x23369c=_0x0a94[_0x25980b];return _0x23369c;};'use strict';var UserSettingEvents=require(_0x40a9('0x0'));var events=[_0x40a9('0x1'),_0x40a9('0x2'),_0x40a9('0x3')];function createListener(_0x31dd76,_0x371c4b){return function(_0x2293d3){_0x371c4b[_0x40a9('0x4')](_0x31dd76,_0x2293d3);if(_0x31dd76===_0x40a9('0x5')){_0x371c4b[_0x40a9('0x4')](_0x40a9('0x6')+_0x2293d3[_0x40a9('0x7')],_0x2293d3);}};}exports[_0x40a9('0x8')]=function(_0x253662){for(var _0x10427=0x0,_0x24468d=events['length'];_0x10427<_0x24468d;_0x10427++){var _0x196f47=events[_0x10427];var _0x1ba06d=createListener('user-setting:'+_0x196f47,_0x253662);UserSettingEvents['on'](_0x196f47,_0x1ba06d);}};
\ No newline at end of file
+var _0x4bcf=['emit','UserId','register','user-setting:','./user-setting.events','save','update'];(function(_0x1fc5ac,_0x2df7f3){var _0x4002ed=function(_0x494a4e){while(--_0x494a4e){_0x1fc5ac['push'](_0x1fc5ac['shift']());}};_0x4002ed(++_0x2df7f3);}(_0x4bcf,0x1cb));var _0xf4bc=function(_0x3e3819,_0x562054){_0x3e3819=_0x3e3819-0x0;var _0x148457=_0x4bcf[_0x3e3819];return _0x148457;};'use strict';var UserSettingEvents=require(_0xf4bc('0x0'));var events=[_0xf4bc('0x1'),'remove',_0xf4bc('0x2')];function createListener(_0x43b3b4,_0x2a39cb){return function(_0x17b3f5){_0x2a39cb['emit'](_0x43b3b4,_0x17b3f5);if(_0x43b3b4==='user-setting:update'){_0x2a39cb[_0xf4bc('0x3')]('user-setting:update:user-'+_0x17b3f5[_0xf4bc('0x4')],_0x17b3f5);}};}exports[_0xf4bc('0x5')]=function(_0x404f6a){for(var _0x3b26ba=0x0,_0x50b268=events['length'];_0x3b26ba<_0x50b268;_0x3b26ba++){var _0x411be6=events[_0x3b26ba];var _0x54fcbe=createListener(_0xf4bc('0x6')+_0x411be6,_0x404f6a);UserSettingEvents['on'](_0x411be6,_0x54fcbe);}};
\ No newline at end of file
index 29792ed..1eca8c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fec=['getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','post','addContacts','create','/create_many','bulkCreate','diskStorage','join','root','server/files/images/','format','%s-%s','now','single','file','addAvatar','/:id/login','login','logout','/:id/pause','pause','unpause','/:id/teams','addTeams','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','addSquareProjects','createApiKey','update','put','/:id/password','changePassword','removeQueues','delete','removeTeams','destroy','removeMailInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeApiKey','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./user.controller','get','isAuthenticated','index','/describe','describe','/whoami','whoami','/presence','/:id','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','/:id/lists','getLists','getAgents'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x5fec,0x13a));var _0xc5fe=function(_0x55d82f,_0x2c1622){_0x55d82f=_0x55d82f-0x0;var _0x801703=_0x5fec[_0x55d82f];return _0x801703;};'use strict';var multer=require(_0xc5fe('0x0'));var util=require(_0xc5fe('0x1'));var path=require('path');var timeout=require(_0xc5fe('0x2'));var express=require(_0xc5fe('0x3'));var router=express[_0xc5fe('0x4')]();var fs_extra=require(_0xc5fe('0x5'));var auth=require(_0xc5fe('0x6'));var interaction=require(_0xc5fe('0x7'));var config=require('../../config/environment');var controller=require(_0xc5fe('0x8'));router[_0xc5fe('0x9')]('/',auth[_0xc5fe('0xa')](),controller[_0xc5fe('0xb')]);router[_0xc5fe('0x9')](_0xc5fe('0xc'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0xd')]);router['get'](_0xc5fe('0xe'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0xf')]);router[_0xc5fe('0x9')](_0xc5fe('0x10'),auth[_0xc5fe('0xa')](),controller['getPresence']);router[_0xc5fe('0x9')](_0xc5fe('0x11'),auth[_0xc5fe('0xa')](),controller['show']);router['get'](_0xc5fe('0x12'),controller[_0xc5fe('0x13')]);router[_0xc5fe('0x9')](_0xc5fe('0x14'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x15')]);router[_0xc5fe('0x9')](_0xc5fe('0x16'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x17')]);router[_0xc5fe('0x9')](_0xc5fe('0x18'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x19')]);router[_0xc5fe('0x9')](_0xc5fe('0x1a'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x1b')]);router[_0xc5fe('0x9')](_0xc5fe('0x1c'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x1d')]);router[_0xc5fe('0x9')](_0xc5fe('0x1e'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x1f')]);router[_0xc5fe('0x9')]('/:id/screen_recordings',auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x20')]);router[_0xc5fe('0x9')](_0xc5fe('0x21'),auth['isAuthenticated'](),controller[_0xc5fe('0x22')]);router[_0xc5fe('0x9')](_0xc5fe('0x23'),auth[_0xc5fe('0xa')](),controller['getOpenchannelInteractions']);router[_0xc5fe('0x9')](_0xc5fe('0x24'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x25')]);router[_0xc5fe('0x9')](_0xc5fe('0x26'),auth['isAuthenticated'](),controller[_0xc5fe('0x27')]);router[_0xc5fe('0x9')](_0xc5fe('0x28'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x29')]);router[_0xc5fe('0x9')](_0xc5fe('0x2a'),auth[_0xc5fe('0xa')](),controller['getWhatsappInteractions']);router[_0xc5fe('0x9')]('/:id/teams',auth[_0xc5fe('0xa')](),controller['getTeams']);router[_0xc5fe('0x9')](_0xc5fe('0x2b'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x2c')]);router[_0xc5fe('0x9')]('/:id/agents',auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x2d')]);router['get']('/:id/prefixes',auth['isAuthenticated'](),controller[_0xc5fe('0x2e')]);router[_0xc5fe('0x9')](_0xc5fe('0x2f'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x30')]);router[_0xc5fe('0x9')]('/:id/mail_accounts',auth[_0xc5fe('0xa')](),controller['getMailAccounts']);router[_0xc5fe('0x9')](_0xc5fe('0x31'),auth['isAuthenticated'](),controller[_0xc5fe('0x32')]);router['get'](_0xc5fe('0x33'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x34')]);router[_0xc5fe('0x9')](_0xc5fe('0x35'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x36')]);router[_0xc5fe('0x9')](_0xc5fe('0x37'),auth[_0xc5fe('0xa')](),controller['getWhatsappAccounts']);router[_0xc5fe('0x9')](_0xc5fe('0x38'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x39')]);router[_0xc5fe('0x9')](_0xc5fe('0x3a'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x3b')]);router[_0xc5fe('0x9')](_0xc5fe('0x3c'),auth['isAuthenticated'](),controller['getApiKey']);router[_0xc5fe('0x3d')](_0xc5fe('0x16'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x3e')]);router[_0xc5fe('0x3d')]('/',auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x3f')]);router[_0xc5fe('0x3d')](_0xc5fe('0x40'),auth['isAuthenticated'](),controller[_0xc5fe('0x41')]);router[_0xc5fe('0x3d')](_0xc5fe('0x18'),auth[_0xc5fe('0xa')](),controller['addQueues']);var upload=multer({'storage':multer[_0xc5fe('0x42')]({'destination':function(_0x2205c9,_0x2752ed,_0x5d4be9){_0x5d4be9(null,path[_0xc5fe('0x43')](config[_0xc5fe('0x44')],_0xc5fe('0x45')));},'filename':function(_0x58287e,_0x4002cd,_0x229392){_0x229392(null,util[_0xc5fe('0x46')](_0xc5fe('0x47'),Date[_0xc5fe('0x48')](),_0x4002cd['originalname']));}})});router[_0xc5fe('0x3d')]('/:id/avatar',upload[_0xc5fe('0x49')](_0xc5fe('0x4a')),controller[_0xc5fe('0x4b')]);router['post'](_0xc5fe('0x4c'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x4d')]);router[_0xc5fe('0x3d')]('/:id/logout',auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x4e')]);router[_0xc5fe('0x3d')](_0xc5fe('0x4f'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x50')]);router[_0xc5fe('0x3d')]('/:id/unpause',auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x51')]);router['post'](_0xc5fe('0x52'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x53')]);router[_0xc5fe('0x3d')](_0xc5fe('0x54'),auth['isAuthenticated'](),controller[_0xc5fe('0x55')]);router['post'](_0xc5fe('0x56'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x57')]);router[_0xc5fe('0x3d')](_0xc5fe('0x58'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x59')]);router[_0xc5fe('0x3d')](_0xc5fe('0x5a'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x5b')]);router[_0xc5fe('0x3d')](_0xc5fe('0x5c'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x5d')]);router[_0xc5fe('0x3d')](_0xc5fe('0x5e'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x5f')]);router[_0xc5fe('0x3d')](_0xc5fe('0x2f'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x60')]);router['post']('/:id/mail_accounts',auth['isAuthenticated'](),controller[_0xc5fe('0x61')]);router[_0xc5fe('0x3d')]('/:id/openchannel_accounts',auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x62')]);router[_0xc5fe('0x3d')](_0xc5fe('0x33'),auth['isAuthenticated'](),controller[_0xc5fe('0x63')]);router['post']('/:id/chat_websites',auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x64')]);router['post']('/:id/whatsapp_accounts',auth['isAuthenticated'](),controller[_0xc5fe('0x65')]);router[_0xc5fe('0x3d')]('/:id/square_projects',auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x66')]);router[_0xc5fe('0x3d')]('/:id/api_key',auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x67')]);router['put'](_0xc5fe('0x11'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x68')]);router[_0xc5fe('0x69')](_0xc5fe('0x6a'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x6b')]);router['delete'](_0xc5fe('0x18'),auth['isAuthenticated'](),controller[_0xc5fe('0x6c')]);router[_0xc5fe('0x6d')](_0xc5fe('0x52'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x6e')]);router[_0xc5fe('0x6d')](_0xc5fe('0x11'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x6f')]);router[_0xc5fe('0x6d')](_0xc5fe('0x54'),auth['isAuthenticated'](),controller['removeChatInteractions']);router[_0xc5fe('0x6d')](_0xc5fe('0x56'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x70')]);router[_0xc5fe('0x6d')](_0xc5fe('0x58'),auth[_0xc5fe('0xa')](),controller['removeFaxInteractions']);router['delete'](_0xc5fe('0x5a'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x71')]);router[_0xc5fe('0x6d')](_0xc5fe('0x5c'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x72')]);router[_0xc5fe('0x6d')]('/:id/whatsapp_interactions',auth[_0xc5fe('0xa')](),controller['removeWhatsappInteractions']);router[_0xc5fe('0x6d')](_0xc5fe('0x2f'),auth['isAuthenticated'](),controller['removeFaxAccounts']);router['delete']('/:id/mail_accounts',auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x73')]);router['delete'](_0xc5fe('0x31'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x74')]);router[_0xc5fe('0x6d')](_0xc5fe('0x33'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x75')]);router[_0xc5fe('0x6d')](_0xc5fe('0x35'),auth[_0xc5fe('0xa')](),controller[_0xc5fe('0x76')]);router['delete'](_0xc5fe('0x37'),auth['isAuthenticated'](),controller['removeWhatsappAccounts']);router[_0xc5fe('0x6d')]('/:id/square_projects',auth[_0xc5fe('0xa')](),controller['removeSquareProjects']);router[_0xc5fe('0x6d')](_0xc5fe('0x3c'),auth['isAuthenticated'](),controller[_0xc5fe('0x77')]);module['exports']=router;
\ No newline at end of file
+var _0xfbec=['originalname','file','addAvatar','/:id/login','login','pause','/:id/unpause','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addMailInteractions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addFaxAccounts','/:id/mail_accounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','/:id/chat_websites','addChatWebsites','addWhatsappAccounts','addSquareProjects','put','/:id','/:id/password','delete','removeQueues','destroy','removeMailInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeFaxAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','exports','multer','util','express','fs-extra','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','describe','/whoami','whoami','/presence','show','/:id/avatar','/:id/open_tabs','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getLists','/:id/agents','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','/:id/api_key','post','addContacts','create','/create_many','join','root','format','%s-%s','now'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xfbec,0x92));var _0xcfbe=function(_0x28e697,_0x2bcf8d){_0x28e697=_0x28e697-0x0;var _0x5842ce=_0xfbec[_0x28e697];return _0x5842ce;};'use strict';var multer=require(_0xcfbe('0x0'));var util=require(_0xcfbe('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xcfbe('0x2'));var router=express['Router']();var fs_extra=require(_0xcfbe('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xcfbe('0x4'));var config=require(_0xcfbe('0x5'));var controller=require('./user.controller');router[_0xcfbe('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0xcfbe('0x6')](_0xcfbe('0x7'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x9')]);router[_0xcfbe('0x6')](_0xcfbe('0xa'),auth['isAuthenticated'](),controller[_0xcfbe('0xb')]);router['get'](_0xcfbe('0xc'),auth[_0xcfbe('0x8')](),controller['getPresence']);router['get']('/:id',auth[_0xcfbe('0x8')](),controller[_0xcfbe('0xd')]);router[_0xcfbe('0x6')](_0xcfbe('0xe'),controller['getAvatar']);router[_0xcfbe('0x6')](_0xcfbe('0xf'),auth[_0xcfbe('0x8')](),controller['getOpenTabs']);router[_0xcfbe('0x6')]('/:id/contacts',auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x10')]);router[_0xcfbe('0x6')](_0xcfbe('0x11'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x12')]);router[_0xcfbe('0x6')](_0xcfbe('0x13'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x14')]);router[_0xcfbe('0x6')](_0xcfbe('0x15'),auth['isAuthenticated'](),controller[_0xcfbe('0x16')]);router[_0xcfbe('0x6')](_0xcfbe('0x17'),auth['isAuthenticated'](),controller[_0xcfbe('0x18')]);router[_0xcfbe('0x6')](_0xcfbe('0x19'),auth[_0xcfbe('0x8')](),controller['getScreenRecordings']);router[_0xcfbe('0x6')](_0xcfbe('0x1a'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x1b')]);router['get'](_0xcfbe('0x1c'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x1d')]);router[_0xcfbe('0x6')]('/:id/mail/interactions',auth[_0xcfbe('0x8')](),controller['getMailInteractions']);router[_0xcfbe('0x6')](_0xcfbe('0x1e'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x1f')]);router[_0xcfbe('0x6')](_0xcfbe('0x20'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x21')]);router[_0xcfbe('0x6')](_0xcfbe('0x22'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x23')]);router[_0xcfbe('0x6')](_0xcfbe('0x24'),auth[_0xcfbe('0x8')](),controller['getTeams']);router['get']('/:id/lists',auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x25')]);router[_0xcfbe('0x6')](_0xcfbe('0x26'),auth['isAuthenticated'](),controller[_0xcfbe('0x27')]);router[_0xcfbe('0x6')](_0xcfbe('0x28'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x29')]);router[_0xcfbe('0x6')](_0xcfbe('0x2a'),auth[_0xcfbe('0x8')](),controller['getFaxAccounts']);router['get']('/:id/mail_accounts',auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x2b')]);router[_0xcfbe('0x6')](_0xcfbe('0x2c'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x2d')]);router['get'](_0xcfbe('0x2e'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x2f')]);router[_0xcfbe('0x6')]('/:id/chat_websites',auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x30')]);router[_0xcfbe('0x6')](_0xcfbe('0x31'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x32')]);router[_0xcfbe('0x6')](_0xcfbe('0x33'),auth[_0xcfbe('0x8')](),controller['getSquareProjects']);router[_0xcfbe('0x6')]('/:id/scheduled_calls',auth['isAuthenticated'](),controller['getScheduledCalls']);router[_0xcfbe('0x6')](_0xcfbe('0x34'),auth['isAuthenticated'](),controller['getApiKey']);router[_0xcfbe('0x35')]('/:id/contacts',auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x36')]);router['post']('/',auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x37')]);router['post'](_0xcfbe('0x38'),auth[_0xcfbe('0x8')](),controller['bulkCreate']);router[_0xcfbe('0x35')](_0xcfbe('0x11'),auth['isAuthenticated'](),controller['addQueues']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xad9551,_0x2628d5,_0x2bc154){_0x2bc154(null,path[_0xcfbe('0x39')](config[_0xcfbe('0x3a')],'server/files/images/'));},'filename':function(_0x4c285e,_0x189ea1,_0x5aa2fa){_0x5aa2fa(null,util[_0xcfbe('0x3b')](_0xcfbe('0x3c'),Date[_0xcfbe('0x3d')](),_0x189ea1[_0xcfbe('0x3e')]));}})});router[_0xcfbe('0x35')](_0xcfbe('0xe'),upload['single'](_0xcfbe('0x3f')),controller[_0xcfbe('0x40')]);router['post'](_0xcfbe('0x41'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x42')]);router['post']('/:id/logout',auth[_0xcfbe('0x8')](),controller['logout']);router['post']('/:id/pause',auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x43')]);router['post'](_0xcfbe('0x44'),auth[_0xcfbe('0x8')](),controller['unpause']);router[_0xcfbe('0x35')](_0xcfbe('0x24'),auth[_0xcfbe('0x8')](),controller['addTeams']);router[_0xcfbe('0x35')](_0xcfbe('0x45'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x46')]);router[_0xcfbe('0x35')](_0xcfbe('0x47'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x48')]);router[_0xcfbe('0x35')]('/:id/fax_interactions',auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x49')]);router['post'](_0xcfbe('0x4a'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x4b')]);router[_0xcfbe('0x35')](_0xcfbe('0x4c'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x4d')]);router[_0xcfbe('0x35')](_0xcfbe('0x4e'),auth[_0xcfbe('0x8')](),controller['addWhatsappInteractions']);router[_0xcfbe('0x35')](_0xcfbe('0x2a'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x4f')]);router['post'](_0xcfbe('0x50'),auth['isAuthenticated'](),controller[_0xcfbe('0x51')]);router[_0xcfbe('0x35')]('/:id/openchannel_accounts',auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x52')]);router[_0xcfbe('0x35')](_0xcfbe('0x2e'),auth['isAuthenticated'](),controller[_0xcfbe('0x53')]);router['post'](_0xcfbe('0x54'),auth['isAuthenticated'](),controller[_0xcfbe('0x55')]);router[_0xcfbe('0x35')](_0xcfbe('0x31'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x56')]);router['post'](_0xcfbe('0x33'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x57')]);router[_0xcfbe('0x35')](_0xcfbe('0x34'),auth[_0xcfbe('0x8')](),controller['createApiKey']);router[_0xcfbe('0x58')](_0xcfbe('0x59'),auth[_0xcfbe('0x8')](),controller['update']);router[_0xcfbe('0x58')](_0xcfbe('0x5a'),auth[_0xcfbe('0x8')](),controller['changePassword']);router[_0xcfbe('0x5b')](_0xcfbe('0x11'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x5c')]);router['delete'](_0xcfbe('0x24'),auth[_0xcfbe('0x8')](),controller['removeTeams']);router['delete'](_0xcfbe('0x59'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x5d')]);router[_0xcfbe('0x5b')](_0xcfbe('0x45'),auth['isAuthenticated'](),controller['removeChatInteractions']);router[_0xcfbe('0x5b')](_0xcfbe('0x47'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x5e')]);router[_0xcfbe('0x5b')]('/:id/fax_interactions',auth[_0xcfbe('0x8')](),controller['removeFaxInteractions']);router[_0xcfbe('0x5b')](_0xcfbe('0x4a'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x5f')]);router[_0xcfbe('0x5b')](_0xcfbe('0x4c'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x60')]);router[_0xcfbe('0x5b')](_0xcfbe('0x4e'),auth[_0xcfbe('0x8')](),controller['removeWhatsappInteractions']);router[_0xcfbe('0x5b')](_0xcfbe('0x2a'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x61')]);router['delete'](_0xcfbe('0x50'),auth['isAuthenticated'](),controller['removeMailAccounts']);router[_0xcfbe('0x5b')](_0xcfbe('0x2c'),auth['isAuthenticated'](),controller[_0xcfbe('0x62')]);router['delete']('/:id/sms_accounts',auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x63')]);router[_0xcfbe('0x5b')]('/:id/chat_websites',auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x64')]);router['delete'](_0xcfbe('0x31'),auth[_0xcfbe('0x8')](),controller[_0xcfbe('0x65')]);router[_0xcfbe('0x5b')]('/:id/square_projects',auth['isAuthenticated'](),controller[_0xcfbe('0x66')]);router[_0xcfbe('0x5b')](_0xcfbe('0x34'),auth[_0xcfbe('0x8')](),controller['removeApiKey']);module[_0xcfbe('0x67')]=router;
\ No newline at end of file
index d0c0bc7..4b0e5c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['certificate','passive','nonat','update,nonat','TEXT','showWebBar','wss','encryption','force_avp','icesupport','dtlsenable','dtlssetup','dtlscertfile','rtcp_mux','avpf','dtlsverify','actpass','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','blockedAt','loginAttempts','sequelize','moment','util','STRING','setDataValue','name','defaultuser','callerid','getDataValue','internal','email','admin','user','agent','telephone','INTEGER','format','fullname','BOOLEAN','DATE','dynamic','ENUM','friend','peer','from-sip','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_FAILED_SCREEN','PROHIB','udp','join','transport','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','yes','update','outgoing','force_rport,comedia','nat','split','ulaw;alaw;gsm','allow','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas'];(function(_0x1d9163,_0x79567d){var _0xb42197=function(_0x3818e8){while(--_0x3818e8){_0x1d9163['push'](_0x1d9163['shift']());}};_0xb42197(++_0x79567d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa9e0[_0x2f3848];return _0x102668;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var _=require('lodash');module['exports']={'name':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x333808){this[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x333808);this[_0x0a9e('0x4')](_0x0a9e('0x6'),_0x333808);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':![],'set':function(_0x441e3a){this[_0x0a9e('0x4')]('fullname',_0x441e3a);this['setDataValue'](_0x0a9e('0x7'),util['format']('\x22%s\x22\x20<%s>',_0x441e3a,this[_0x0a9e('0x8')](_0x0a9e('0x9'))));}},'alias':{'type':Sequelize[_0x0a9e('0x3')]},'email':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':![],'unique':_0x0a9e('0xa'),'validate':{'isEmail':!![]},'set':function(_0xbd1168){if(_0xbd1168){this['setDataValue']('email',_0xbd1168['toLowerCase']());}}},'role':{'type':Sequelize['ENUM'](_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe')),'allowNull':![]},'password':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x0a9e('0x3')],'defaultValue':'local'},'internal':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':![],'unique':_0x0a9e('0x9'),'set':function(_0x2b4227){this[_0x0a9e('0x4')](_0x0a9e('0x9'),_0x2b4227);this[_0x0a9e('0x4')]('accountcode',_0x2b4227);this[_0x0a9e('0x4')]('callerid',util[_0x0a9e('0x10')]('\x22%s\x22\x20<%s>',this[_0x0a9e('0x8')](_0x0a9e('0x11')),_0x2b4227));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x0a9e('0x3')]},'mobile':{'type':Sequelize['STRING']},'address':{'type':Sequelize[_0x0a9e('0x3')]},'zipcode':{'type':Sequelize[_0x0a9e('0x3')]},'userpic':{'type':Sequelize[_0x0a9e('0x3')]},'city':{'type':Sequelize[_0x0a9e('0x3')]},'country':{'type':Sequelize[_0x0a9e('0x3')]},'online':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x0a9e('0x13')]},'voicePause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x0a9e('0x3')],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0x0a9e('0x13')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x0a9e('0xf')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x0a9e('0xf')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![],'defaultValue':_0x0a9e('0x14')},'ipaddr':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'port':{'type':Sequelize[_0x0a9e('0xf')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x16'),_0x0a9e('0xc'),_0x0a9e('0x17')),'allowNull':!![],'defaultValue':_0x0a9e('0x16')},'context':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![],'defaultValue':_0x0a9e('0x18')},'callingpres':{'type':Sequelize[_0x0a9e('0x15')]('ALLOWED_NOT_SCREENED',_0x0a9e('0x19'),_0x0a9e('0x1a'),_0x0a9e('0x1b'),_0x0a9e('0x1c'),'PROHIB_PASSED_SCREEN',_0x0a9e('0x1d'),_0x0a9e('0x1e')),'allowNull':!![]},'deny':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'permit':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'secret':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'transport':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![],'defaultValue':_0x0a9e('0x1f'),'set':function(_0x540530){this[_0x0a9e('0x4')]('transport',_0x540530?_0x540530[_0x0a9e('0x20')](','):null);},'get':function(){return this[_0x0a9e('0x8')](_0x0a9e('0x21'))?this[_0x0a9e('0x8')](_0x0a9e('0x21'))['split'](','):null;},'comment':_0x0a9e('0x22')},'dtmfmode':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x23'),_0x0a9e('0x24'),_0x0a9e('0x25'),_0x0a9e('0x26'),_0x0a9e('0x27')),'allowNull':!![],'defaultValue':_0x0a9e('0x23')},'directmedia':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no','nonat',_0x0a9e('0x29'),_0x0a9e('0x2a')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'nat':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![],'defaultValue':_0x0a9e('0x2b'),'set':function(_0x15de0e){this['setDataValue']('nat',_0x15de0e?_0x15de0e[_0x0a9e('0x20')](','):null);},'get':function(){return this['getDataValue'](_0x0a9e('0x2c'))?this[_0x0a9e('0x8')](_0x0a9e('0x2c'))[_0x0a9e('0x2d')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x0a9e('0x3')]},'namedcallgroup':{'type':Sequelize[_0x0a9e('0x3')]},'pickupgroup':{'type':Sequelize[_0x0a9e('0x3')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x0a9e('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x0a9e('0x3')]},'disallow':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x0a9e('0x2e'),'set':function(_0x40d766){this['setDataValue'](_0x0a9e('0x2f'),_0x40d766?_0x40d766[_0x0a9e('0x20')](';'):_0x0a9e('0x2e'));},'get':function(){return this[_0x0a9e('0x8')]('allow')?this['getDataValue'](_0x0a9e('0x2f'))[_0x0a9e('0x2d')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![],'set':function(_0x5b4f5e){this[_0x0a9e('0x4')](_0x0a9e('0x30'),_0x5b4f5e?_0x5b4f5e[_0x0a9e('0x20')](','):null);},'get':function(){return this[_0x0a9e('0x8')](_0x0a9e('0x30'))?this[_0x0a9e('0x8')](_0x0a9e('0x30'))[_0x0a9e('0x2d')](','):null;},'comment':_0x0a9e('0x31')},'trustrpid':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![],'defaultValue':_0x0a9e('0x32')},'amaflags':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':_0x0a9e('0x28')},'busylevel':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x0a9e('0x15')]('yes','no',_0x0a9e('0x33')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x0a9e('0x15')]('yes','no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x34'),_0x0a9e('0x35'),_0x0a9e('0x36')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize['ENUM'](_0x0a9e('0x37'),_0x0a9e('0x38')),'allowNull':!![],'defaultValue':_0x0a9e('0x38')},'t38pt_usertpsource':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize['STRING'],'allowNull':!![]},'contactdeny':{'type':Sequelize['STRING'],'allowNull':!![]},'contactacl':{'type':Sequelize['STRING'],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x0a9e('0x15')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no','fingerprint',_0x0a9e('0x39')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x0a9e('0xf')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x0a9e('0x15')]('active',_0x0a9e('0x3a'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING'],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0x0a9e('0x28'),'no',_0x0a9e('0x3b'),_0x0a9e('0x29'),_0x0a9e('0x3c')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x0a9e('0x3')]},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0x0a9e('0x13')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x0a9e('0x3d')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x3649cc){this['setDataValue'](_0x0a9e('0x3e'),_0x3649cc);var _0x5ba1f9=this['get']({'plain':!![]});switch(_0x3649cc){case 0x0:case 0x1:var _0x5674ee=_0x5ba1f9[_0x0a9e('0x21')]?_['isArray'](_0x5ba1f9[_0x0a9e('0x21')])?_0x5ba1f9[_0x0a9e('0x21')][_0x0a9e('0x20')]():_0x5ba1f9[_0x0a9e('0x21')]:_0x0a9e('0x1f');if(_0x5674ee===_0x0a9e('0x3f')){_0x5674ee='udp';}this[_0x0a9e('0x4')]('transport',_0x5674ee);this[_0x0a9e('0x4')](_0x0a9e('0x40'),'no');this[_0x0a9e('0x4')]('avpf',null);this[_0x0a9e('0x4')](_0x0a9e('0x41'),null);this[_0x0a9e('0x4')](_0x0a9e('0x42'),null);this['setDataValue'](_0x0a9e('0x43'),null);this[_0x0a9e('0x4')]('dtlsverify',null);this[_0x0a9e('0x4')](_0x0a9e('0x44'),null);this[_0x0a9e('0x4')](_0x0a9e('0x45'),null);this[_0x0a9e('0x4')]('dtlsprivatekey',null);this[_0x0a9e('0x4')](_0x0a9e('0x46'),'no');break;case 0x2:this[_0x0a9e('0x4')]('transport',_0x0a9e('0x3f'));this['setDataValue']('encryption',_0x0a9e('0x28'));this[_0x0a9e('0x4')](_0x0a9e('0x47'),_0x0a9e('0x28'));this[_0x0a9e('0x4')](_0x0a9e('0x41'),_0x0a9e('0x28'));this[_0x0a9e('0x4')](_0x0a9e('0x42'),_0x0a9e('0x28'));this[_0x0a9e('0x4')](_0x0a9e('0x43'),_0x0a9e('0x28'));this[_0x0a9e('0x4')](_0x0a9e('0x48'),'no');this[_0x0a9e('0x4')](_0x0a9e('0x44'),_0x0a9e('0x49'));this['setDataValue'](_0x0a9e('0x45'),_0x5ba1f9[_0x0a9e('0x45')]||_0x0a9e('0x4a'));this['setDataValue'](_0x0a9e('0x4b'),_0x5ba1f9[_0x0a9e('0x4b')]||'/etc/pki/tls/private/motion.key');this[_0x0a9e('0x4')](_0x0a9e('0x46'),_0x0a9e('0x28'));break;default:}}},'permissions':{'type':Sequelize[_0x0a9e('0x3d')],'set':function(_0x13b5c0){this['setDataValue']('permissions',_0x13b5c0?_0x13b5c0['join'](','):[]);},'get':function(){return this[_0x0a9e('0x8')](_0x0a9e('0x4c'))?_[_0x0a9e('0x4d')](this[_0x0a9e('0x8')](_0x0a9e('0x4c'))[_0x0a9e('0x2d')](','),function(_0xeef20){return parseInt(_0xeef20,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x0a9e('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize[_0x0a9e('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize['STRING'],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x0a9e('0x15')](_0x0a9e('0x28'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'phoneBarEnableJaws':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x0a9e('0x4e')],'get':function(){return this[_0x0a9e('0x8')]('phoneBarEnableScreenRecordingByAgent')?this[_0x0a9e('0x8')](_0x0a9e('0x4f')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0x0a9e('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x0a9e('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![],'set':function(_0xdb98ca){if(typeof _0xdb98ca===_0x0a9e('0x50')){var _0x3df0e3=_0xdb98ca==='1'?!![]:_0xdb98ca==='0'?![]:_0xdb98ca===_0x0a9e('0x51')?!![]:_0xdb98ca===_0x0a9e('0x52')?![]:![];this[_0x0a9e('0x4')](_0x0a9e('0x53'),_0x3df0e3);}else{this[_0x0a9e('0x4')](_0x0a9e('0x53'),_0xdb98ca);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0xf4120f){this[_0x0a9e('0x4')](_0x0a9e('0x54'),_0xf4120f);if(_0xf4120f===!![]){this['setDataValue'](_0x0a9e('0x55'),moment());this[_0x0a9e('0x4')](_0x0a9e('0x56'),0x0);}else{this[_0x0a9e('0x4')]('blockedAt',null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x0a9e('0xf')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x0a9e('0x12')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize[_0x0a9e('0xf')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xedd9=['rfc2833','info','shortinfo','inband','auto','yes','update','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','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]','never','\x22\x22\x20<>','always','accept','refuse','originate','uas','certificate','active','passive','actpass','nonat','update,nonat','DATE','showWebBar','get','isArray','wss','encryption','force_avp','icesupport','dtlsverify','rtcp_mux','dtlsenable','dtlssetup','dtlscertfile','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','/etc/pki/tls/private/motion.key','TEXT','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','false','screenrecording','blocked','loginAttempts','blockedAt','UNSIGNED','moment','util','lodash','exports','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','callerid','format','\x22%s\x22\x20<%s>','internal','email','ENUM','admin','user','agent','telephone','local','accountcode','getDataValue','fullname','BOOLEAN','INTEGER','dynamic','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'];(function(_0x5adcab,_0x320048){var _0x24d1e7=function(_0x4f3b30){while(--_0x4f3b30){_0x5adcab['push'](_0x5adcab['shift']());}};_0x24d1e7(++_0x320048);}(_0xedd9,0xfc));var _0x9edd=function(_0x56e6e9,_0x2dcf46){_0x56e6e9=_0x56e6e9-0x0;var _0x522fcf=_0xedd9[_0x56e6e9];return _0x522fcf;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x9edd('0x0'));var util=require(_0x9edd('0x1'));var _=require(_0x9edd('0x2'));module[_0x9edd('0x3')]={'name':{'type':Sequelize[_0x9edd('0x4')],'allowNull':![],'unique':_0x9edd('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x3e6d3a){this[_0x9edd('0x6')]('name',_0x3e6d3a);this[_0x9edd('0x6')](_0x9edd('0x7'),_0x3e6d3a);},'comment':_0x9edd('0x8')},'fullname':{'type':Sequelize[_0x9edd('0x4')],'allowNull':![],'set':function(_0x5319f7){this[_0x9edd('0x6')]('fullname',_0x5319f7);this[_0x9edd('0x6')](_0x9edd('0x9'),util[_0x9edd('0xa')](_0x9edd('0xb'),_0x5319f7,this['getDataValue'](_0x9edd('0xc'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x9edd('0x4')],'allowNull':![],'unique':_0x9edd('0xd'),'validate':{'isEmail':!![]},'set':function(_0x523026){if(_0x523026){this[_0x9edd('0x6')](_0x9edd('0xd'),_0x523026['toLowerCase']());}}},'role':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0xf'),_0x9edd('0x10'),_0x9edd('0x11'),_0x9edd('0x12')),'allowNull':![]},'password':{'type':Sequelize[_0x9edd('0x4')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x9edd('0x4')],'defaultValue':_0x9edd('0x13')},'internal':{'type':Sequelize['INTEGER'](0xb),'allowNull':![],'unique':_0x9edd('0xc'),'set':function(_0x44fc7c){this[_0x9edd('0x6')](_0x9edd('0xc'),_0x44fc7c);this[_0x9edd('0x6')](_0x9edd('0x14'),_0x44fc7c);this[_0x9edd('0x6')](_0x9edd('0x9'),util['format'](_0x9edd('0xb'),this[_0x9edd('0x15')](_0x9edd('0x16')),_0x44fc7c));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x9edd('0x4')]},'mobile':{'type':Sequelize[_0x9edd('0x4')]},'address':{'type':Sequelize[_0x9edd('0x4')]},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0x9edd('0x4')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x9edd('0x4')]},'online':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'mailPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x9edd('0x4')],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x9edd('0x18')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x9edd('0x19')},'ipaddr':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'port':{'type':Sequelize[_0x9edd('0x18')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize['STRING'],'allowNull':!![]},'lastms':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x1a'),'user',_0x9edd('0x1b')),'allowNull':!![],'defaultValue':_0x9edd('0x1a')},'context':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![],'defaultValue':_0x9edd('0x1c')},'callingpres':{'type':Sequelize['ENUM'](_0x9edd('0x1d'),_0x9edd('0x1e'),_0x9edd('0x1f'),_0x9edd('0x20'),_0x9edd('0x21'),_0x9edd('0x22'),_0x9edd('0x23'),_0x9edd('0x24')),'allowNull':!![]},'deny':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'permit':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'secret':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'transport':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![],'defaultValue':_0x9edd('0x25'),'set':function(_0x5af178){this[_0x9edd('0x6')](_0x9edd('0x26'),_0x5af178?_0x5af178[_0x9edd('0x27')](','):null);},'get':function(){return this['getDataValue'](_0x9edd('0x26'))?this[_0x9edd('0x15')](_0x9edd('0x26'))[_0x9edd('0x28')](','):null;},'comment':_0x9edd('0x29')},'dtmfmode':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2a'),_0x9edd('0x2b'),_0x9edd('0x2c'),_0x9edd('0x2d'),_0x9edd('0x2e')),'allowNull':!![],'defaultValue':_0x9edd('0x2a')},'directmedia':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no','nonat',_0x9edd('0x30'),'outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'nat':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![],'defaultValue':'force_rport,comedia','set':function(_0x6de835){this[_0x9edd('0x6')](_0x9edd('0x31'),_0x6de835?_0x6de835[_0x9edd('0x27')](','):null);},'get':function(){return this[_0x9edd('0x15')](_0x9edd('0x31'))?this[_0x9edd('0x15')](_0x9edd('0x31'))[_0x9edd('0x28')](','):null;},'comment':_0x9edd('0x32')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x9edd('0x4')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0x9edd('0x4')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x9edd('0x4')]},'disallow':{'type':Sequelize[_0x9edd('0x4')],'allowNull':![],'defaultValue':_0x9edd('0x33')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9edd('0x34'),'set':function(_0xcbd0ef){this[_0x9edd('0x6')]('allow',_0xcbd0ef?_0xcbd0ef[_0x9edd('0x27')](';'):'ulaw;alaw;gsm');},'get':function(){return this[_0x9edd('0x15')](_0x9edd('0x35'))?this['getDataValue'](_0x9edd('0x35'))[_0x9edd('0x28')](';'):null;},'comment':_0x9edd('0x36')},'autoframing':{'type':Sequelize[_0x9edd('0xe')]('yes','no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![],'set':function(_0x5bbdf8){this[_0x9edd('0x6')](_0x9edd('0x37'),_0x5bbdf8?_0x5bbdf8['join'](','):null);},'get':function(){return this[_0x9edd('0x15')]('insecure')?this['getDataValue'](_0x9edd('0x37'))[_0x9edd('0x28')](','):null;},'comment':_0x9edd('0x38')},'trustrpid':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no',_0x9edd('0x39')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize['STRING'],'allowNull':!![]},'callerid':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![],'defaultValue':_0x9edd('0x3a')},'amaflags':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![],'defaultValue':_0x9edd('0x2f')},'busylevel':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0x9edd('0x2f'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0x9edd('0x2f'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'template':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM'](_0x9edd('0x2f'),'no',_0x9edd('0x3b')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x9edd('0x2f'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x3c'),_0x9edd('0x3d'),_0x9edd('0x3e')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x9edd('0xe')]('uac',_0x9edd('0x3f')),'allowNull':!![],'defaultValue':_0x9edd('0x3f')},'t38pt_usertpsource':{'type':Sequelize['STRING'],'allowNull':!![]},'regexten':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0x9edd('0x2f'),'no'),'allowNull':!![],'defaultValue':_0x9edd('0x2f')},'keepalive':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM'](_0x9edd('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'callbackextension':{'type':Sequelize['STRING'],'allowNull':!![]},'timert1':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM'](_0x9edd('0x2f'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize['ENUM'](_0x9edd('0x2f'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize['ENUM']('yes','no','fingerprint',_0x9edd('0x40')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'dtlscipher':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscafile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x41'),_0x9edd('0x42'),_0x9edd('0x43')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x9edd('0x18')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM'](_0x9edd('0x2f'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x9edd('0xe')]('yes','no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x9edd('0xe')](_0x9edd('0x2f'),'no',_0x9edd('0x44'),_0x9edd('0x30'),_0x9edd('0x45')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0x9edd('0x46')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0,'set':function(_0x3e9a3e){this[_0x9edd('0x6')](_0x9edd('0x47'),_0x3e9a3e);var _0x5df1d7=this[_0x9edd('0x48')]({'plain':!![]});switch(_0x3e9a3e){case 0x0:case 0x1:var _0x507cce=_0x5df1d7[_0x9edd('0x26')]?_[_0x9edd('0x49')](_0x5df1d7[_0x9edd('0x26')])?_0x5df1d7['transport'][_0x9edd('0x27')]():_0x5df1d7['transport']:_0x9edd('0x25');if(_0x507cce===_0x9edd('0x4a')){_0x507cce='udp';}this[_0x9edd('0x6')]('transport',_0x507cce);this[_0x9edd('0x6')](_0x9edd('0x4b'),'no');this[_0x9edd('0x6')]('avpf',null);this[_0x9edd('0x6')](_0x9edd('0x4c'),null);this[_0x9edd('0x6')](_0x9edd('0x4d'),null);this[_0x9edd('0x6')]('dtlsenable',null);this['setDataValue'](_0x9edd('0x4e'),null);this[_0x9edd('0x6')]('dtlssetup',null);this['setDataValue']('dtlscertfile',null);this[_0x9edd('0x6')]('dtlsprivatekey',null);this['setDataValue'](_0x9edd('0x4f'),'no');break;case 0x2:this[_0x9edd('0x6')]('transport',_0x9edd('0x4a'));this[_0x9edd('0x6')](_0x9edd('0x4b'),'yes');this[_0x9edd('0x6')]('avpf',_0x9edd('0x2f'));this[_0x9edd('0x6')]('force_avp',_0x9edd('0x2f'));this[_0x9edd('0x6')]('icesupport',_0x9edd('0x2f'));this[_0x9edd('0x6')](_0x9edd('0x50'),_0x9edd('0x2f'));this['setDataValue'](_0x9edd('0x4e'),'no');this['setDataValue'](_0x9edd('0x51'),_0x9edd('0x43'));this[_0x9edd('0x6')]('dtlscertfile',_0x5df1d7[_0x9edd('0x52')]||_0x9edd('0x53'));this[_0x9edd('0x6')](_0x9edd('0x54'),_0x5df1d7[_0x9edd('0x54')]||_0x9edd('0x55'));this[_0x9edd('0x6')]('rtcp_mux','yes');break;default:}}},'permissions':{'type':Sequelize[_0x9edd('0x56')],'set':function(_0x3c7874){this[_0x9edd('0x6')](_0x9edd('0x57'),_0x3c7874?_0x3c7874[_0x9edd('0x27')](','):[]);},'get':function(){return this['getDataValue'](_0x9edd('0x57'))?_[_0x9edd('0x58')](this[_0x9edd('0x15')]('permissions')[_0x9edd('0x28')](','),function(_0x29d70d){return parseInt(_0x29d70d,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize[_0x9edd('0x4')]},'phoneBarBusyNumber':{'type':Sequelize[_0x9edd('0x4')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x9edd('0x4')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x9edd('0xe')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x9edd('0x4')]},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x9edd('0x59')],'get':function(){return this[_0x9edd('0x15')](_0x9edd('0x5a'))?this['getDataValue']('phoneBarEnableScreenRecordingByAgent'):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'interface':{'type':Sequelize[_0x9edd('0x4')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x9edd('0x4')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![],'set':function(_0x1eabcd){if(typeof _0x1eabcd===_0x9edd('0x5b')){var _0xef1397=_0x1eabcd==='1'?!![]:_0x1eabcd==='0'?![]:_0x1eabcd==='true'?!![]:_0x1eabcd===_0x9edd('0x5c')?![]:![];this[_0x9edd('0x6')](_0x9edd('0x5d'),_0xef1397);}else{this[_0x9edd('0x6')](_0x9edd('0x5d'),_0x1eabcd);}}},'blocked':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![],'set':function(_0x14fa8a){this['setDataValue'](_0x9edd('0x5e'),_0x14fa8a);if(_0x14fa8a===!![]){this[_0x9edd('0x6')]('blockedAt',moment());this[_0x9edd('0x6')](_0x9edd('0x5f'),0x0);}else{this['setDataValue'](_0x9edd('0x60'),null);}}},'blockedAt':{'type':Sequelize[_0x9edd('0x46')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'disabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x9edd('0x18')](0x5)[_0x9edd('0x61')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x9edd('0x17')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize[_0x9edd('0x18')],'defaultValue':0x0}};
\ No newline at end of file
index 961db21..7f5ac5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68e4=['removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','addFaxAccounts','removeFaxAccounts','MailAccount','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','removeOpenchannelAccounts','SmsAccount','getSmsAccounts','addSmsAccounts','removeSmsAccounts','ChatWebsite','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','SquareProject','getSquareProjects','addSquareProjects','removeSquareProjects','$and','$or','$lte','$ne','$between','$notBetween','$in','$notIn','$like','$notLike','$notILike','$overlap','$contains','$contained','$any','CmHopper','lastName','dialActive','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','removeApiKey','apiKeyIat','queues','isEmpty','inbound','flatten','sequelize','lower','col','asc','substring','uniqBy','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unavailable','ringing','voiceStatus','slice','charAt','toUpperCase','QueryTypes','select','field','ui.','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','../../errors/api','APIBadRequestError','APINotFoundError','handleError','../../mysqldb','socket.io-emitter','redis','./user.socket','localhost','client','http','then','info','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','User,\x20%s,\x20%s','message','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','update','emit','userNotification:recalc:','destroy','get','role','admin','Users','user','Agents','agent','Telephones','telephone','filter','ignore','map','value','includes','name','UserProfileResource','stack','index','fieldName','type','key','password','salt','getOptions','where','User','query','includeAll','include','true','UserSetting','attributes','findAll','rows','openTabs','length','push','chat','dataValues','sms','fax','openchannel','all','catch','show','model','differenceBy','rawAttributes','keys','filters','intersection','fields','userSetting','merge','find','whatsapp','mail','body','describe','addContacts','params','ids','omit','internal','findById','securePassword','max','min_internal','isNil','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','voicemail','mailbox','VoiceMail','fullname','email','permissions','101','102','113','110','106','109','100','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','userProfileId','UserProfileSection','autoAssociation','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','compact','changePassword','oldPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Wrong\x20credentials','newPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','findOne','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','updatePasswordsHistory','addQueues','online','loginInPause','voicePause','isValidChannel','Unknown\x20channel','add','capitalize','Queues','penalty','spread','toLowerCase','Queue:save','VoiceQueue','voice','interface','SIP/%s','each','UserVoiceQueueRt','upsert','removeQueues','channel','remove','isArray','QueueId','Queue:remove','userpic','file','filename','getAvatar','join','server/files/images/logos/default_profile.png','server/files/images/','download','root','getOpenTabs','ChatOpenTabs','CHAT','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','createdAt','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','concat','getContacts','CmContact','order','sort','pick','options','hasOwnProperty','CmList','List','Tag','Tags','tag','nolimit','getQueues','Queue','Unknown\x20role','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','getWhatsappInteractions','WhatsappInteraction','login','phone','mobile','format','LOCAL/%s@from-sip/n','intrf','user:forcelogout','connection','remoteAddress','socket','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','resolve','pause','updateAttributes','DEFAULT\x20PAUSE','unpause','mailPause','chatPause','whatsapppause','pauseType','lastPauseAt','manual','Pause','QueuePause','getTeams','Team','addTeams','Body\x20parameter\x20\x27ids\x27\x20is\x20required','User\x20with\x20id\x20%s\x20not\x20found','flattenDeep','addAgent','getDataValue','TeamVoicePrefix','VoicePrefixId','removeTeams','Query\x20parameter\x20\x27ids\x27\x20is\x20required','removeAgent','Voice','UserVoicePrefix','getLists','getAgents','send','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save'];(function(_0x40b48f,_0xeb1b76){var _0x4c1f21=function(_0x494b4a){while(--_0x494b4a){_0x40b48f['push'](_0x40b48f['shift']());}};_0x4c1f21(++_0xeb1b76);}(_0x68e4,0x69));var _0x468e=function(_0x35c52a,_0x3ac84d){_0x35c52a=_0x35c52a-0x0;var _0x20cb39=_0x68e4[_0x35c52a];return _0x20cb39;};'use strict';var moment=require(_0x468e('0x0'));var BPromise=require(_0x468e('0x1'));var util=require(_0x468e('0x2'));var path=require(_0x468e('0x3'));var fs=require('fs');var _=require(_0x468e('0x4'));var squel=require(_0x468e('0x5'));var jayson=require(_0x468e('0x6'));var Redis=require(_0x468e('0x7'));var authService=require(_0x468e('0x8'));var qs=require('../../components/parsers/qs');var logger=require(_0x468e('0x9'))(_0x468e('0xa'));var utils=require(_0x468e('0xb'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var APIBadRequestError=require(_0x468e('0xc'))[_0x468e('0xd')];var APINotFoundError=require(_0x468e('0xc'))[_0x468e('0xe')];var APIHandleError=require(_0x468e('0xc'))[_0x468e('0xf')];var db=require(_0x468e('0x10'))['db'];var socket=require(_0x468e('0x11'))(new Redis(config[_0x468e('0x12')]));require(_0x468e('0x13'))['register'](socket);config['redis']=_['defaults'](config[_0x468e('0x12')],{'host':_0x468e('0x14'),'port':0x18eb});var client=jayson[_0x468e('0x15')][_0x468e('0x16')]({'port':0x232a});var values;function respondWithRpcPromise(_0xd33876,_0x146f40,_0x32ec1c,_0x2decee){return new BPromise(function(_0x69db34,_0x1b95a4){var _0x5df352=_0x2decee||client;return _0x5df352['request'](_0xd33876,_0x32ec1c)[_0x468e('0x17')](function(_0x1631c1){logger[_0x468e('0x18')]('User,\x20%s,\x20%s',_0x146f40,_0x468e('0x19'));logger[_0x468e('0x1a')](_0x468e('0x1b'),_0x146f40,_0x468e('0x19'),JSON[_0x468e('0x1c')](_0x1631c1));if(_0x1631c1[_0x468e('0x1d')]){if(_0x1631c1[_0x468e('0x1d')][_0x468e('0x1e')]===0x1f4){logger[_0x468e('0x1d')](_0x468e('0x1f'),_0x146f40,_0x1631c1['error']['message']);return _0x1b95a4(_0x1631c1[_0x468e('0x1d')][_0x468e('0x20')]);}logger['error']('User,\x20%s,\x20%s',_0x146f40,_0x1631c1['error'][_0x468e('0x20')]);return _0x69db34(_0x1631c1[_0x468e('0x1d')]['message']);}else{logger[_0x468e('0x18')](_0x468e('0x1f'),_0x146f40,'request\x20sent');_0x69db34(_0x1631c1['result'][_0x468e('0x20')]);}})['catch'](function(_0x3b3ebb){logger['error']('User,\x20%s,\x20%s',_0x146f40,_0x3b3ebb);_0x1b95a4(_0x3b3ebb);});});}function respondWithStatusCode(_0x35ba10,_0x53aca5){_0x53aca5=_0x53aca5||0xcc;return function(_0x45ad3c){if(_0x45ad3c){return _0x35ba10[_0x468e('0x21')](_0x53aca5);}return _0x35ba10['status'](_0x53aca5)[_0x468e('0x22')]();};}function respondWithResult(_0x2d37bc,_0x125cbd){_0x125cbd=_0x125cbd||0xc8;return function(_0x304ae7){if(_0x304ae7){return _0x2d37bc[_0x468e('0x23')](_0x125cbd)[_0x468e('0x24')](_0x304ae7);}};}function respondWithFilteredResult(_0x3926a8,_0x4bef8c){return function(_0x4ee003){if(_0x4ee003){var _0x11322b=typeof _0x4bef8c[_0x468e('0x25')]===_0x468e('0x26')&&typeof _0x4bef8c[_0x468e('0x27')]===_0x468e('0x26');var _0x5a002b=_0x4ee003[_0x468e('0x28')];var _0x2f266f=_0x11322b?0x0:_0x4bef8c[_0x468e('0x25')];var _0x3d42a5=_0x11322b?_0x4ee003[_0x468e('0x28')]:_0x4bef8c[_0x468e('0x25')]+_0x4bef8c[_0x468e('0x27')];var _0x52ef8c;if(_0x3d42a5>=_0x5a002b){_0x3d42a5=_0x5a002b;_0x52ef8c=0xc8;}else{_0x52ef8c=0xce;}_0x3926a8[_0x468e('0x23')](_0x52ef8c);return _0x3926a8[_0x468e('0x29')](_0x468e('0x2a'),_0x2f266f+'-'+_0x3d42a5+'/'+_0x5a002b)[_0x468e('0x24')](_0x4ee003);}return null;};}function saveUpdates(_0x4c0d07){return function(_0x5522fc){if(_0x5522fc){return _0x5522fc[_0x468e('0x2b')](_0x4c0d07)[_0x468e('0x17')](function(_0x858fcf){socket[_0x468e('0x2c')](_0x468e('0x2d')+_0x858fcf['id'],{});return _0x858fcf;});}return null;};}function removeEntity(_0x4efc61){return function(_0x5536ba){if(_0x5536ba){return _0x5536ba[_0x468e('0x2e')]()[_0x468e('0x17')](function(){var _0x549a87=_0x5536ba[_0x468e('0x2f')]({'plain':!![]});if(_0x549a87[_0x468e('0x30')]===_0x468e('0x31'))return;var _0xfa5e59=[{'name':_0x468e('0x32'),'value':_0x468e('0x33'),'ignore':!![]},{'name':_0x468e('0x34'),'value':_0x468e('0x35'),'ignore':![]},{'name':_0x468e('0x36'),'value':_0x468e('0x37'),'ignore':![]}];var _0x16f870=_(_0xfa5e59)[_0x468e('0x38')](_0x468e('0x39'))[_0x468e('0x3a')](_0x468e('0x3b'))[_0x468e('0x3b')]();if(_[_0x468e('0x3c')](_0x16f870,_0x549a87[_0x468e('0x30')])){return;}var _0x6e11d=_['find'](_0xfa5e59,[_0x468e('0x3b'),_0x549a87[_0x468e('0x30')]])[_0x468e('0x3d')];return db[_0x468e('0x3e')][_0x468e('0x2e')]({'where':{'type':_0x6e11d,'resourceId':_0x549a87['id']}})[_0x468e('0x17')](function(){return _0x5536ba;});})[_0x468e('0x17')](function(){_0x4efc61['status'](0xcc)[_0x468e('0x22')]();});}};}function handleEntityNotFound(_0x414638){return function(_0x2f5d43){if(!_0x2f5d43){_0x414638['sendStatus'](0x194);}return _0x2f5d43;};}function handleError(_0x1a421b,_0x4c3fe5){_0x4c3fe5=_0x4c3fe5||0x1f4;return function(_0x391aef){logger[_0x468e('0x1d')](_0x391aef[_0x468e('0x3f')]);if(_0x391aef[_0x468e('0x3d')]){delete _0x391aef[_0x468e('0x3d')];}_0x1a421b[_0x468e('0x23')](_0x4c3fe5)['send'](_0x391aef);};}exports[_0x468e('0x40')]=function(_0x564d15,_0x54b7be){var _0xdd8017={},_0x43bd06={'count':0x0,'rows':[]};var _0x1c1c92=_(db['User']['rawAttributes'])['map'](function(_0x29ce20){return{'name':_0x29ce20[_0x468e('0x41')],'type':_0x29ce20[_0x468e('0x42')][_0x468e('0x43')]};})[_0x468e('0x38')](function(_0x5a6d13){return!_['includes']([_0x468e('0x44'),_0x468e('0x45')],_0x5a6d13['name']);})[_0x468e('0x3b')]();_0xdd8017=qs[_0x468e('0x46')](_0x1c1c92,_0x564d15);var _0x5b9602={'where':_0xdd8017[_0x468e('0x47')]};return db[_0x468e('0x48')][_0x468e('0x28')](_0x5b9602)[_0x468e('0x17')](function(_0x5013cf){_0x43bd06[_0x468e('0x28')]=_0x5013cf;if(_0x564d15[_0x468e('0x49')][_0x468e('0x4a')]){_0xdd8017[_0x468e('0x4b')]=[{'all':!![]}];}if(_0x564d15[_0x468e('0x49')]['userSetting']===_0x468e('0x4c')){_0xdd8017[_0x468e('0x4b')]=[{'model':db[_0x468e('0x4d')],'as':'userSetting'}];}if(!_[_0x468e('0x3c')](_0xdd8017[_0x468e('0x4e')],'id')){_0xdd8017[_0x468e('0x4e')]['push']('id');}return db[_0x468e('0x48')][_0x468e('0x4f')](_0xdd8017);})[_0x468e('0x17')](function(_0xb10b43){_0x43bd06[_0x468e('0x50')]=_0xb10b43;if(_0x564d15[_0x468e('0x49')][_0x468e('0x51')]===_0x468e('0x4c')){var _0x65d415=[];for(var _0x2f2362=0x0;_0x2f2362<_0x43bd06[_0x468e('0x50')][_0x468e('0x52')];_0x2f2362++){_0x65d415[_0x468e('0x53')](get_open_tabs(_0x468e('0x54'),_0x43bd06[_0x468e('0x50')][_0x2f2362][_0x468e('0x55')]));_0x65d415[_0x468e('0x53')](get_open_tabs(_0x468e('0x56'),_0x43bd06[_0x468e('0x50')][_0x2f2362][_0x468e('0x55')]));_0x65d415[_0x468e('0x53')](get_open_tabs(_0x468e('0x57'),_0x43bd06[_0x468e('0x50')][_0x2f2362][_0x468e('0x55')]));_0x65d415[_0x468e('0x53')](get_open_tabs('mail',_0x43bd06[_0x468e('0x50')][_0x2f2362][_0x468e('0x55')]));_0x65d415[_0x468e('0x53')](get_open_tabs(_0x468e('0x58'),_0x43bd06[_0x468e('0x50')][_0x2f2362][_0x468e('0x55')]));_0x65d415['push'](get_open_tabs('whatsapp',_0x43bd06[_0x468e('0x50')][_0x2f2362]['dataValues']));}return BPromise[_0x468e('0x59')](_0x65d415)[_0x468e('0x17')](function(){return _0x43bd06;});}else{return _0x43bd06;}})[_0x468e('0x17')](respondWithFilteredResult(_0x54b7be,_0xdd8017))[_0x468e('0x5a')](handleError(_0x54b7be,null));};exports[_0x468e('0x5b')]=function(_0x1657a2,_0x5dab25){var _0x21b866={'raw':![],'where':{'id':_0x1657a2['params']['id']}},_0x376773={};_0x376773[_0x468e('0x5c')]=_[_0x468e('0x5d')](_['keys'](db[_0x468e('0x48')][_0x468e('0x5e')]),[_0x468e('0x44'),'salt']);_0x376773[_0x468e('0x49')]=_[_0x468e('0x5f')](_0x1657a2['query']);_0x376773[_0x468e('0x60')]=_[_0x468e('0x61')](_0x376773[_0x468e('0x5c')],_0x376773[_0x468e('0x49')]);_0x21b866[_0x468e('0x4e')]=_[_0x468e('0x61')](_0x376773[_0x468e('0x5c')],qs[_0x468e('0x62')](_0x1657a2[_0x468e('0x49')][_0x468e('0x62')]));_0x21b866['attributes']=_0x21b866[_0x468e('0x4e')][_0x468e('0x52')]?_0x21b866[_0x468e('0x4e')]:_0x376773[_0x468e('0x5c')];if(_0x1657a2[_0x468e('0x49')][_0x468e('0x4a')]){_0x21b866[_0x468e('0x4b')]=[{'all':!![]}];}if(_0x1657a2[_0x468e('0x49')][_0x468e('0x63')]===_0x468e('0x4c')){_0x21b866[_0x468e('0x4b')]=[{'model':db[_0x468e('0x4d')],'as':'userSetting'}];}_0x21b866=_[_0x468e('0x64')]({},_0x21b866,_0x1657a2['options']);if(!_[_0x468e('0x3c')](_0x21b866[_0x468e('0x4e')],'id')){_0x21b866[_0x468e('0x4e')][_0x468e('0x53')]('id');}return db[_0x468e('0x48')][_0x468e('0x65')](_0x21b866)[_0x468e('0x17')](handleEntityNotFound(_0x5dab25,null))[_0x468e('0x17')](function(_0x3f0485){var _0x49b87e=[];values=_0x3f0485;if(_0x1657a2[_0x468e('0x49')][_0x468e('0x51')]==='true'){_0x49b87e['push'](get_open_tabs(_0x468e('0x54'),_0x3f0485[_0x468e('0x55')]));_0x49b87e[_0x468e('0x53')](get_open_tabs('sms',_0x3f0485[_0x468e('0x55')]));_0x49b87e[_0x468e('0x53')](get_open_tabs(_0x468e('0x58'),_0x3f0485[_0x468e('0x55')]));_0x49b87e[_0x468e('0x53')](get_open_tabs(_0x468e('0x66'),_0x3f0485[_0x468e('0x55')]));_0x49b87e[_0x468e('0x53')](get_open_tabs(_0x468e('0x57'),_0x3f0485[_0x468e('0x55')]));_0x49b87e[_0x468e('0x53')](get_open_tabs(_0x468e('0x67'),_0x3f0485['dataValues']));return BPromise[_0x468e('0x59')](_0x49b87e);}else{return values;}})[_0x468e('0x17')](function(){return values;})[_0x468e('0x17')](respondWithResult(_0x5dab25,null))[_0x468e('0x5a')](handleError(_0x5dab25,null));};exports['update']=function(_0x5b7173,_0x236bdc){if(_0x5b7173[_0x468e('0x68')]['id']){delete _0x5b7173[_0x468e('0x68')]['id'];}delete _0x5b7173[_0x468e('0x68')][_0x468e('0x30')];return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x5b7173['params']['id']}})['then'](handleEntityNotFound(_0x236bdc,null))['then'](saveUpdates(_0x5b7173[_0x468e('0x68')],null))[_0x468e('0x17')](respondWithResult(_0x236bdc,null))[_0x468e('0x5a')](handleError(_0x236bdc,null));};exports[_0x468e('0x69')]=function(_0x70d869,_0x55ccd2){return db['User'][_0x468e('0x69')]()[_0x468e('0x17')](respondWithResult(_0x55ccd2,null))[_0x468e('0x5a')](handleError(_0x55ccd2,null));};exports[_0x468e('0x6a')]=function(_0x2a1d81,_0x2a8947){return db['User'][_0x468e('0x65')]({'where':{'id':_0x2a1d81[_0x468e('0x6b')]['id']}})['then'](handleEntityNotFound(_0x2a8947,null))['then'](function(_0x50276d){if(_0x50276d){return _0x50276d['addContacts'](_0x2a1d81[_0x468e('0x68')][_0x468e('0x6c')],_[_0x468e('0x6d')](_0x2a1d81['body'],[_0x468e('0x6c'),'id'])||{});}})[_0x468e('0x17')](respondWithResult(_0x2a8947,null))[_0x468e('0x5a')](handleError(_0x2a8947,null));};function validateUser(_0xb1a12e){return new BPromise(function(_0x196f5b,_0x5152e3){if(_0xb1a12e[_0x468e('0x6e')])return _0x196f5b(_0xb1a12e);return db['Setting'][_0x468e('0x6f')](0x1)[_0x468e('0x17')](function(_0x14e2c6){if(_0x14e2c6[_0x468e('0x70')])authService['validatePasswordPattern'](_0xb1a12e[_0x468e('0x44')]);db['User'][_0x468e('0x71')](_0x468e('0x6e'))['then'](function(_0x75a4e4){if(_['isNil'](_0x75a4e4)){_0xb1a12e[_0x468e('0x6e')]=_0x14e2c6[_0x468e('0x72')]||0x1;return;}if(_[_0x468e('0x73')](_0x14e2c6[_0x468e('0x72')])||_0x14e2c6[_0x468e('0x72')]===_0x75a4e4){_0xb1a12e[_0x468e('0x6e')]=_0x75a4e4+0x1;return;}if(_0x14e2c6[_0x468e('0x72')]>_0x75a4e4){_0xb1a12e[_0x468e('0x6e')]=_0x14e2c6['min_internal'];return;}return db['sequelize']['query'](_0x468e('0x74'),{'type':db['sequelize']['QueryTypes'][_0x468e('0x75')]})[_0x468e('0x17')](function(_0x1f7e1c){if(_0x1f7e1c&&_0x1f7e1c[_0x468e('0x52')]){for(var _0x3d7d62=0x0,_0x282460=_0x1f7e1c[_0x468e('0x52')];_0x3d7d62<_0x282460&&_[_0x468e('0x73')](_0xb1a12e[_0x468e('0x6e')]);_0x3d7d62++){if(_0x14e2c6['min_internal']<=_0x1f7e1c[_0x3d7d62]['from']){_0xb1a12e[_0x468e('0x6e')]=_0x1f7e1c[_0x3d7d62][_0x468e('0x76')];}else if(_0x14e2c6[_0x468e('0x72')]>_0x1f7e1c[_0x3d7d62][_0x468e('0x76')]&&_0x14e2c6[_0x468e('0x72')]<=_0x1f7e1c[_0x3d7d62]['to']){_0xb1a12e['internal']=_0x14e2c6[_0x468e('0x72')];}}}if(_[_0x468e('0x73')](_0xb1a12e[_0x468e('0x6e')])){_0xb1a12e['internal']=_0x75a4e4+0x1;}return _0x196f5b(_0xb1a12e);});});})[_0x468e('0x5a')](function(_0x2e5c19){_0x5152e3(_0x2e5c19);});});}function updateUser(_0x3c3567){return new BPromise(function(_0x32b9b5,_0x40c405){try{if(_0x3c3567[_0x468e('0x77')]){_0x3c3567[_0x468e('0x78')]=_0x3c3567[_0x468e('0x6e')];_0x3c3567[_0x468e('0x79')]={'mailbox':_0x3c3567[_0x468e('0x6e')],'password':_0x3c3567[_0x468e('0x44')],'fullname':_0x3c3567[_0x468e('0x7a')],'email':_0x3c3567[_0x468e('0x7b')]};}if(_0x3c3567[_0x468e('0x30')]==='agent'){if(!_0x3c3567[_0x468e('0x7c')])_0x3c3567['permissions']=[_0x468e('0x7d'),_0x468e('0x7e'),'103',_0x468e('0x7f'),_0x468e('0x80'),'104','105',_0x468e('0x81'),'107','108',_0x468e('0x82'),_0x468e('0x83'),_0x468e('0x84'),_0x468e('0x85'),_0x468e('0x86')];}_0x32b9b5(_0x3c3567);}catch(_0x45b573){_0x40c405(_0x45b573);}});}exports[_0x468e('0x87')]=function(_0x5e4832,_0x43bb37){if(_0x5e4832[_0x468e('0x33')]['role']==='agent')throw new Error(_0x468e('0x88'));if(_0x5e4832['body']['role']==='user'&&_0x5e4832['user'][_0x468e('0x30')]!==_0x468e('0x31')){throw new Error(_0x468e('0x89'));}if(_0x5e4832['body']['role']===_0x468e('0x31')&&_0x5e4832[_0x468e('0x33')][_0x468e('0x30')]!==_0x468e('0x31')){throw new Error(_0x468e('0x8a'));}return licenseUtil[_0x468e('0x8b')]([_0x5e4832['body']])[_0x468e('0x17')](function(){return validateUser(_0x5e4832['body']);})[_0x468e('0x17')](function(_0x3ef016){return updateUser(_0x3ef016)[_0x468e('0x17')](function(_0x3d7a93){if(_0x3d7a93[_0x468e('0x30')]==='admin'){_0x3d7a93['settingsEnabled']=_0x5e4832[_0x468e('0x33')][_0x468e('0x8c')];delete _0x3d7a93[_0x468e('0x8d')];}return _0x3d7a93;});})[_0x468e('0x17')](function(_0x3dfa94){return db[_0x468e('0x48')][_0x468e('0x87')](_0x3dfa94,{'include':[{'model':db['VoiceMail'],'as':_0x468e('0x79')}]});})[_0x468e('0x17')](function(_0x514a34){if(_0x5e4832['body'][_0x468e('0x30')]===_0x468e('0x33'))return _0x514a34;if(_0x5e4832[_0x468e('0x33')][_0x468e('0x30')]!=='user')return _0x514a34;return db[_0x468e('0x8e')][_0x468e('0x65')]({'where':{'name':_0x514a34[_0x468e('0x30')]===_0x468e('0x35')?_0x468e('0x34'):_0x468e('0x36'),'userProfileId':_0x5e4832[_0x468e('0x33')]['userProfileId']},'raw':!![]})[_0x468e('0x17')](function(_0x3736fd){if(!_0x3736fd||_0x3736fd[_0x468e('0x8f')]!=0x0)return _0x514a34;return db[_0x468e('0x3e')][_0x468e('0x87')]({'name':_0x514a34['name'],'resourceId':_0x514a34['id'],'type':_0x3736fd[_0x468e('0x3d')],'sectionId':_0x3736fd['id']},{})[_0x468e('0x17')](function(){return _0x514a34;});})['catch'](function(_0x5b52dd){logger[_0x468e('0x1d')](_0x468e('0x90'),_0x5b52dd);throw _0x5b52dd;});})[_0x468e('0x17')](respondWithResult(_0x43bb37,0xc9))[_0x468e('0x5a')](handleError(_0x43bb37,null));};exports[_0x468e('0x91')]=function(_0x1d05e5,_0x8b0037){var _0x587456=_0x1d05e5[_0x468e('0x68')];var _0x52f65b=[];if(_0x1d05e5[_0x468e('0x33')]['role']===_0x468e('0x35'))throw new Error(_0x468e('0x88'));if(_[_0x468e('0x92')](_0x587456,['role',_0x468e('0x33')])&&_0x1d05e5['user'][_0x468e('0x30')]!==_0x468e('0x31')){throw new Error(_0x468e('0x89'));}if(_['some'](_0x587456,['role',_0x468e('0x31')])&&_0x1d05e5[_0x468e('0x33')][_0x468e('0x30')]!==_0x468e('0x31')){throw new Error(_0x468e('0x93'));}return licenseUtil['checkUserLimits'](_0x587456)['then'](function(){return validateUser(_0x587456[0x0]);})['then'](function(){for(var _0x1c3b58=0x1;_0x1c3b58<_0x587456[_0x468e('0x52')];_0x1c3b58++){var _0x59d8d1=_0x587456[_0x1c3b58-0x1]['internal'];if(!_0x587456[_0x1c3b58]['internal'])_0x587456[_0x1c3b58][_0x468e('0x6e')]=_0x59d8d1+0x1;_0x52f65b[_0x468e('0x53')](validateUser(_0x587456[_0x1c3b58]));}return BPromise[_0x468e('0x59')](_0x52f65b);})[_0x468e('0x17')](function(){_0x52f65b=[];for(var _0x196b10=0x0;_0x196b10<_0x587456[_0x468e('0x52')];_0x196b10++){_0x52f65b['push'](updateUser(_0x587456[_0x196b10]));}return BPromise[_0x468e('0x59')](_0x52f65b);})[_0x468e('0x17')](function(){return BPromise['each'](_0x587456,function(_0x2eff92){return db[_0x468e('0x48')]['create'](_0x2eff92,{'include':[{'model':db[_0x468e('0x79')],'as':_0x468e('0x79')}]})[_0x468e('0x17')](function(_0x52ac80){_0x2eff92['id']=_0x52ac80['id'];return _0x2eff92;});});})[_0x468e('0x17')](function(_0x4fc2a5){if(_0x1d05e5['body'][_0x468e('0x30')]===_0x468e('0x33'))return _0x4fc2a5;if(_0x1d05e5[_0x468e('0x33')][_0x468e('0x30')]!==_0x468e('0x33'))return _0x4fc2a5;var _0x614c41=_['some'](_0x4fc2a5,function(_0x229948){return _0x229948[_0x468e('0x30')]===_0x468e('0x35')||_0x229948[_0x468e('0x30')]===_0x468e('0x37');});if(!_0x614c41)return _0x4fc2a5;return db['UserProfileSection'][_0x468e('0x4f')]({'where':{'name':{'$or':[_0x468e('0x34'),'Telephones']},'userProfileId':_0x1d05e5[_0x468e('0x33')][_0x468e('0x8d')]},'raw':!![]})[_0x468e('0x17')](function(_0x32a759){if(_['isEmpty'](_0x32a759)||!_['some'](_0x32a759,[_0x468e('0x8f'),0x0]))return _0x4fc2a5;_0x52f65b=[];var _0x2f601a=_(_0x32a759)[_0x468e('0x3a')](function(_0x267780){if(_0x267780['autoAssociation']===0x1)return;return _0x267780[_0x468e('0x3d')]===_0x468e('0x34')?'agent':'telephone';})[_0x468e('0x94')]()[_0x468e('0x3b')]();for(var _0x40198d=0x0;_0x40198d<_0x4fc2a5[_0x468e('0x52')];_0x40198d++){if(!_[_0x468e('0x3c')](_0x2f601a,_0x4fc2a5[_0x40198d]['role']))return;var _0xb48de0=_0x4fc2a5[_0x40198d][_0x468e('0x30')]===_0x468e('0x35')?'Agents':_0x468e('0x36');_0x52f65b[_0x468e('0x53')](db[_0x468e('0x3e')][_0x468e('0x87')]({'name':_0x4fc2a5[_0x40198d]['name'],'resourceId':_0x4fc2a5[_0x40198d]['id'],'type':_0xb48de0,'sectionId':_['find'](_0x32a759,[_0x468e('0x3d'),_0xb48de0])['id']},{}));}return BPromise[_0x468e('0x59')](_0x52f65b);});})[_0x468e('0x17')](respondWithResult(_0x8b0037,0xc9))[_0x468e('0x5a')](handleError(_0x8b0037,null));};exports[_0x468e('0x95')]=function(_0x11aa39,_0x48b3d1){if(_0x11aa39['body']['id']){delete _0x11aa39[_0x468e('0x68')]['id'];}return db[_0x468e('0x48')]['find']({'where':{'id':_0x11aa39[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](function(_0x2c749c){if(!_0x2c749c)return null;if(_0x2c749c['id']===_0x11aa39[_0x468e('0x33')]['id']){if(!_0x11aa39['body'][_0x468e('0x96')]||!_0x11aa39['body']['newPassword']){throw new db[(_0x468e('0x97'))][(_0x468e('0x98'))](_0x468e('0x99'));}if(!_0x2c749c[_0x468e('0x9a')](_0x11aa39[_0x468e('0x68')][_0x468e('0x96')])){throw new db['Sequelize'][(_0x468e('0x98'))](_0x468e('0x9b'));}if(_0x11aa39[_0x468e('0x68')][_0x468e('0x96')]===_0x11aa39[_0x468e('0x68')][_0x468e('0x9c')]){throw new db['Sequelize'][(_0x468e('0x98'))](_0x468e('0x9d'));}}else if(_0x11aa39[_0x468e('0x33')][_0x468e('0x30')]===_0x468e('0x31')){if(!_0x11aa39[_0x468e('0x68')][_0x468e('0x9c')]){throw new db[(_0x468e('0x97'))]['ValidationError'](_0x468e('0x9e'));}}else if(_0x11aa39[_0x468e('0x33')][_0x468e('0x30')]===_0x468e('0x33')){if(!_0x11aa39[_0x468e('0x68')]['newPassword']){throw new db[(_0x468e('0x97'))][(_0x468e('0x98'))](_0x468e('0x9e'));}if(_0x2c749c[_0x468e('0x30')]!==_0x468e('0x35')){throw new db[(_0x468e('0x97'))]['ValidationError'](_0x468e('0x88'));}}else{throw new db[(_0x468e('0x97'))]['ValidationError'](_0x468e('0x88'));}return _0x2c749c;})['then'](handleEntityNotFound(_0x48b3d1,null))['then'](function(_0x6b8645){return db[_0x468e('0x9f')][_0x468e('0xa0')]({'attributes':['id',_0x468e('0x70'),_0x468e('0xa1'),_0x468e('0xa2')]})[_0x468e('0x17')](function(_0x1a522a){if(_0x1a522a[_0x468e('0x70')])authService[_0x468e('0xa3')](_0x11aa39[_0x468e('0x68')]['newPassword']);if(!_0x1a522a['enforcePasswordHistory']||!_0x6b8645[_0x468e('0xa4')])return _0x6b8645;authService[_0x468e('0xa5')](_0x11aa39[_0x468e('0x68')][_0x468e('0x9c')],_0x6b8645[_0x468e('0xa4')],_0x1a522a['passwordHistoryLimit']);return _0x6b8645;})['then'](saveUpdates({'password':_0x11aa39[_0x468e('0x68')][_0x468e('0x9c')],'passwordResetAt':_0x11aa39[_0x468e('0x33')]['id']==_0x11aa39[_0x468e('0x6b')]['id']?moment():null,'previousPasswords':authService[_0x468e('0xa6')](_0x11aa39[_0x468e('0x68')]['newPassword'],_0x6b8645[_0x468e('0xa4')])},null));})[_0x468e('0x17')](respondWithResult(_0x48b3d1,null))[_0x468e('0x5a')](handleError(_0x48b3d1,null));};exports[_0x468e('0xa7')]=function(_0x27c10f,_0x6de19b){var _0x4a6434=_0x27c10f['body']['channel'];return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x27c10f[_0x468e('0x6b')]['id']},'attributes':['id','name',_0x468e('0x30'),_0x468e('0xa8'),_0x468e('0xa9'),_0x468e('0xaa'),'interface']})[_0x468e('0x17')](handleEntityNotFound(_0x6de19b,null))[_0x468e('0x17')](function(_0x59598a){if(_0x59598a){if(!utils[_0x468e('0xab')](_0x4a6434)){throw new db[(_0x468e('0x97'))][(_0x468e('0x98'))](_0x468e('0xac'));}return _0x59598a[_0x468e('0xad')+_[_0x468e('0xae')](_0x4a6434['toLowerCase']())+_0x468e('0xaf')](_0x27c10f[_0x468e('0x68')][_0x468e('0x6c')],{'penalty':_0x27c10f[_0x468e('0x68')][_0x468e('0xb0')]||0x0})[_0x468e('0xb1')](function(_0x3b0927){for(var _0x43b871=0x0;_0x43b871<_0x27c10f[_0x468e('0x68')]['ids'][_0x468e('0x52')];_0x43b871+=0x1){var _0x12e07b={'UserId':Number(_0x27c10f[_0x468e('0x6b')]['id'])};_0x12e07b[_[_0x468e('0xae')](_0x4a6434[_0x468e('0xb2')]())+'QueueId']=Number(_0x27c10f[_0x468e('0x68')]['ids'][_0x43b871]);socket['emit'](_0x468e('0x33')+_['capitalize'](_0x4a6434['toLowerCase']())+_0x468e('0xb3'),_0x12e07b);}return _0x3b0927;})[_0x468e('0x17')](function(){if(_0x4a6434==='voice'){return db[_0x468e('0xb4')]['findAll']({'where':{'id':_0x27c10f['body'][_0x468e('0x6c')]||[]},'raw':!![],'attributes':['id','name']});}})[_0x468e('0x17')](function(_0x3bdbf7){var _0x296c9f=_0x59598a['get']({'plain':!![]});var _0x398658=[];if(_0x4a6434===_0x468e('0xb5')&&_0x296c9f[_0x468e('0x30')]===_0x468e('0x35')&&_0x296c9f['online']){for(var _0x516860=0x0;_0x516860<_0x3bdbf7['length'];_0x516860+=0x1){_0x398658[_0x468e('0x53')]({'membername':_0x296c9f[_0x468e('0x3d')],'UserId':_0x296c9f['id'],'queue_name':_0x3bdbf7[_0x516860]['name'],'VoiceQueueId':_0x3bdbf7[_0x516860]['id'],'interface':_[_0x468e('0x73')](_0x296c9f[_0x468e('0xb6')])?util['format'](_0x468e('0xb7'),_0x296c9f['name']):_0x296c9f[_0x468e('0xb6')],'paused':_0x296c9f[_0x468e('0xaa')]||![],'penalty':_0x27c10f[_0x468e('0x68')]['penalty']||0x0});}return BPromise[_0x468e('0xb8')](_0x398658,function(_0x1d8267){return db[_0x468e('0xb9')][_0x468e('0xba')](_0x1d8267);});}return _0x59598a;});}})[_0x468e('0x17')](respondWithStatusCode(_0x6de19b,null))[_0x468e('0x5a')](handleError(_0x6de19b,null));};exports[_0x468e('0xbb')]=function(_0x589725,_0x1050aa){var _0x26a37b,_0x49022a;return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x589725[_0x468e('0x6b')]['id']},'attributes':['id',_0x468e('0x3d'),_0x468e('0x30')]})[_0x468e('0x17')](handleEntityNotFound(_0x1050aa,null))[_0x468e('0x17')](function(_0x52410c){if(_0x52410c){_0x26a37b=_0x52410c;if(!_0x589725[_0x468e('0x49')][_0x468e('0xbc')]||!utils['isValidChannel'](_0x589725[_0x468e('0x49')][_0x468e('0xbc')])){throw new db['Sequelize'][(_0x468e('0x98'))](_0x468e('0xac'));}return _0x52410c[_0x468e('0xbd')+_[_0x468e('0xae')](_0x589725[_0x468e('0x49')][_0x468e('0xbc')][_0x468e('0xb2')]())+_0x468e('0xaf')](_0x589725[_0x468e('0x49')][_0x468e('0x6c')]);}})[_0x468e('0x17')](function(_0x32cde5){if(_[_0x468e('0xbe')](_0x589725[_0x468e('0x49')][_0x468e('0x6c')])){for(var _0x39836f=0x0;_0x39836f<_0x589725[_0x468e('0x49')][_0x468e('0x6c')]['length'];_0x39836f+=0x1){_0x49022a={'UserId':Number(_0x589725[_0x468e('0x6b')]['id'])};_0x49022a[_[_0x468e('0xae')](_0x589725['query'][_0x468e('0xbc')][_0x468e('0xb2')]())+_0x468e('0xbf')]=Number(_0x589725[_0x468e('0x49')][_0x468e('0x6c')][_0x39836f]);socket[_0x468e('0x2c')](_0x468e('0x33')+_[_0x468e('0xae')](_0x589725[_0x468e('0x49')]['channel'][_0x468e('0xb2')]())+_0x468e('0xc0'),_0x49022a);}}else{_0x49022a={'UserId':Number(_0x589725['params']['id'])};_0x49022a[_['capitalize'](_0x589725[_0x468e('0x49')][_0x468e('0xbc')][_0x468e('0xb2')]())+'QueueId']=Number(_0x589725[_0x468e('0x49')][_0x468e('0x6c')]);socket[_0x468e('0x2c')]('user'+_[_0x468e('0xae')](_0x589725[_0x468e('0x49')][_0x468e('0xbc')][_0x468e('0xb2')]())+_0x468e('0xc0'),_0x49022a);}return _0x32cde5;})['then'](function(){if(_0x589725[_0x468e('0x49')][_0x468e('0xbc')]==='voice'){return db[_0x468e('0xb9')]['destroy']({'where':{'UserId':_0x589725[_0x468e('0x6b')]['id'],'VoiceQueueId':_0x589725[_0x468e('0x49')]['ids']},'individualHooks':!![]})['then'](function(){return _0x26a37b;});}return _0x26a37b;})[_0x468e('0x17')](respondWithStatusCode(_0x1050aa,null))['catch'](handleError(_0x1050aa,null));};exports['addAvatar']=function(_0x529c35,_0x120eda){_0x529c35[_0x468e('0x68')][_0x468e('0xc1')]=_0x529c35[_0x468e('0xc2')][_0x468e('0xc3')];return db[_0x468e('0x48')]['find']({'where':{'id':_0x529c35[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x120eda,null))[_0x468e('0x17')](saveUpdates(_0x529c35[_0x468e('0x68')],null))[_0x468e('0x17')](respondWithResult(_0x120eda,null))[_0x468e('0x5a')](handleError(_0x120eda,null));};exports[_0x468e('0xc4')]=function(_0x170a46,_0x5444bf){var _0x16a7d7=path[_0x468e('0xc5')](config['root'],_0x468e('0xc6'));return db['User']['find']({'where':{'id':_0x170a46['params']['id']},'attributes':['id',_0x468e('0xc1')],'raw':!![]})[_0x468e('0x17')](handleEntityNotFound(_0x5444bf,null))['then'](function(_0x55d990){if(_0x55d990){if(_[_0x468e('0x73')](_0x55d990[_0x468e('0xc1')])){return _0x5444bf['download'](_0x16a7d7);}else{if(!fs['existsSync'](path[_0x468e('0xc5')](config['root'],_0x468e('0xc7'),_0x55d990[_0x468e('0xc1')]))){return _0x5444bf[_0x468e('0xc8')](_0x16a7d7);}return _0x5444bf[_0x468e('0xc8')](path[_0x468e('0xc5')](config[_0x468e('0xc9')],'server/files/images/',_0x55d990[_0x468e('0xc1')]));}}})[_0x468e('0x5a')](handleError(_0x5444bf,null));};exports[_0x468e('0xca')]=function(_0x1195f2,_0x514949){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x1195f2[_0x468e('0x6b')]['id']},'attributes':['id']})[_0x468e('0x17')](handleEntityNotFound(_0x514949,null))[_0x468e('0x17')](function(_0x19ba9e){var _0x5af4b8=[];values=_0x19ba9e[_0x468e('0x55')];_0x5af4b8[_0x468e('0x53')](get_open_tabs(_0x468e('0x54'),_0x19ba9e[_0x468e('0x55')]));_0x5af4b8[_0x468e('0x53')](get_open_tabs('sms',_0x19ba9e['dataValues']));_0x5af4b8[_0x468e('0x53')](get_open_tabs(_0x468e('0x58'),_0x19ba9e[_0x468e('0x55')]));_0x5af4b8[_0x468e('0x53')](get_open_tabs('whatsapp',_0x19ba9e[_0x468e('0x55')]));_0x5af4b8[_0x468e('0x53')](get_open_tabs(_0x468e('0x57'),_0x19ba9e['dataValues']));_0x5af4b8['push'](get_open_tabs(_0x468e('0x67'),_0x19ba9e[_0x468e('0x55')]));return BPromise['all'](_0x5af4b8);})['then'](function(_0xdd5c82){if(_0xdd5c82){var _0x14034f=_[_0x468e('0x3a')](values[_0x468e('0xcb')],function(_0x1d257b){return{'channel':_0x468e('0xcc'),'id':_0x1d257b['id'],'createdAt':_0x1d257b['createdAt']};});var _0x1b08ed=_['map'](values['FaxOpenTabs'],function(_0x4528a5){return{'channel':'FAX','id':_0x4528a5['id'],'createdAt':_0x4528a5['createdAt']};});var _0x2e0b20=_[_0x468e('0x3a')](values[_0x468e('0xcd')],function(_0x3cedb1){return{'channel':_0x468e('0xce'),'id':_0x3cedb1['id'],'createdAt':_0x3cedb1['createdAt']};});var _0x4d8d1d=_[_0x468e('0x3a')](values[_0x468e('0xcf')],function(_0x3b3b2b){return{'channel':_0x468e('0xd0'),'id':_0x3b3b2b['id'],'createdAt':_0x3b3b2b[_0x468e('0xd1')]};});var _0x3f13b5=_[_0x468e('0x3a')](values[_0x468e('0xd2')],function(_0x95a7d9){return{'channel':_0x468e('0xd3'),'id':_0x95a7d9['id'],'createdAt':_0x95a7d9[_0x468e('0xd1')]};});var _0x549b5c=_[_0x468e('0x3a')](values[_0x468e('0xd4')],function(_0x551088){return{'channel':_0x468e('0xd5'),'id':_0x551088['id'],'createdAt':_0x551088[_0x468e('0xd1')]};});var _0x268f51=_[_0x468e('0xd6')](_0x14034f,_0x1b08ed,_0x2e0b20,_0x4d8d1d,_0x3f13b5,_0x549b5c);var _0x30a2d3={'count':_0x268f51[_0x468e('0x52')],'rows':_0x268f51};return _0x30a2d3;}else return null;})[_0x468e('0x17')](respondWithResult(_0x514949,null))[_0x468e('0x5a')](handleError(_0x514949,null));};exports[_0x468e('0xd7')]=function(_0x4c3f82,_0x4eafcc){var _0x3df559={};var _0x3e91a5={};var _0x52edbc;var _0x5690d1;return db[_0x468e('0x48')][_0x468e('0xa0')]({'where':{'id':_0x4c3f82[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x4eafcc,null))['then'](function(_0x4a74f3){if(_0x4a74f3){_0x52edbc=_0x4a74f3;_0x3e91a5[_0x468e('0x5c')]=_[_0x468e('0x5f')](db[_0x468e('0xd8')][_0x468e('0x5e')]);_0x3e91a5[_0x468e('0x49')]=_['keys'](_0x4c3f82['query']);_0x3e91a5['filters']=_['intersection'](_0x3e91a5['model'],_0x3e91a5[_0x468e('0x49')]);_0x3df559['attributes']=_[_0x468e('0x61')](_0x3e91a5['model'],qs[_0x468e('0x62')](_0x4c3f82[_0x468e('0x49')][_0x468e('0x62')]));_0x3df559[_0x468e('0x4e')]=_0x3df559[_0x468e('0x4e')][_0x468e('0x52')]?_0x3df559['attributes']:_0x3e91a5['model'];_0x3df559[_0x468e('0xd9')]=qs[_0x468e('0xda')](_0x4c3f82[_0x468e('0x49')][_0x468e('0xda')]);_0x3df559[_0x468e('0x47')]=qs[_0x468e('0x60')](_[_0x468e('0xdb')](_0x4c3f82[_0x468e('0x49')],_0x3e91a5[_0x468e('0x60')]));if(_0x4c3f82[_0x468e('0x49')][_0x468e('0x38')]){_0x3df559[_0x468e('0x47')]=_[_0x468e('0x64')](_0x3df559[_0x468e('0x47')],{'$or':_[_0x468e('0x3a')](_0x3df559['attributes'],function(_0x4f8ebf){var _0x16a575={};_0x16a575[_0x4f8ebf]={'$like':'%'+_0x4c3f82[_0x468e('0x49')]['filter']+'%'};return _0x16a575;})});}_0x3df559=_['merge']({},_0x3df559,_0x4c3f82[_0x468e('0xdc')]);return _0x52edbc[_0x468e('0xd7')](_0x3df559);}})['then'](function(_0x52c738){if(_0x52c738){_0x5690d1=_0x52c738[_0x468e('0x52')];if(_0x4c3f82[_0x468e('0x49')][_0x468e('0xdd')](_0x468e('0x4a'))){_0x3df559[_0x468e('0x4b')]=[{'model':db[_0x468e('0xde')],'as':_0x468e('0xdf'),'required':![]},{'model':db[_0x468e('0xe0')],'as':_0x468e('0xe1'),'attributes':['id','name','color'],'where':_0x4c3f82[_0x468e('0x49')][_0x468e('0xe2')]?{'id':_0x4c3f82['query']['tag']}:undefined,'required':_0x4c3f82[_0x468e('0x49')][_0x468e('0xe2')]?!![]:![]}];}if(!_0x4c3f82[_0x468e('0x49')][_0x468e('0xdd')](_0x468e('0xe3'))){_0x3df559['limit']=qs['limit'](_0x4c3f82[_0x468e('0x49')]['limit']);_0x3df559[_0x468e('0x25')]=qs[_0x468e('0x25')](_0x4c3f82[_0x468e('0x49')][_0x468e('0x25')]);}return _0x52edbc[_0x468e('0xd7')](_0x3df559);}})[_0x468e('0x17')](function(_0x1c8ade){if(_0x1c8ade){return _0x1c8ade?{'count':_0x5690d1,'rows':_0x1c8ade}:null;}})[_0x468e('0x17')](respondWithResult(_0x4eafcc,null))['catch'](handleError(_0x4eafcc,null));};exports[_0x468e('0xe4')]=function(_0x561cd3,_0x546566){var _0x2b069a;var _0x1c93b7={};var _0x36e461;return db[_0x468e('0x48')][_0x468e('0xa0')]({'where':{'id':_0x561cd3[_0x468e('0x6b')]['id']},'attributes':['id',_0x468e('0x3d'),_0x468e('0x30')]})['then'](handleEntityNotFound(_0x546566,null))[_0x468e('0x17')](function(_0x3d1276){if(!utils['isValidChannel'](_0x561cd3[_0x468e('0x49')][_0x468e('0xbc')])){throw new db[(_0x468e('0x97'))][(_0x468e('0x98'))](_0x468e('0xac'));}_0x2b069a=_0x3d1276;var _0x2442ef={};_0x2442ef[_0x468e('0x5c')]=_[_0x468e('0x5f')](db[_['capitalize'](_0x561cd3[_0x468e('0x49')]['channel'])+_0x468e('0xe5')]['rawAttributes']);_0x2442ef[_0x468e('0x49')]=_[_0x468e('0x5f')](_0x561cd3[_0x468e('0x49')]);_0x2442ef[_0x468e('0x60')]=_[_0x468e('0x61')](_0x2442ef[_0x468e('0x5c')],_0x2442ef[_0x468e('0x49')]);_0x1c93b7[_0x468e('0x4e')]=_[_0x468e('0x61')](_0x2442ef[_0x468e('0x5c')],qs['fields'](_0x561cd3[_0x468e('0x49')][_0x468e('0x62')]));_0x1c93b7[_0x468e('0x4e')]=_0x1c93b7[_0x468e('0x4e')][_0x468e('0x52')]?_0x1c93b7[_0x468e('0x4e')]:_0x2442ef[_0x468e('0x5c')];_0x1c93b7[_0x468e('0xd9')]=qs['sort'](_0x561cd3[_0x468e('0x49')]['sort']);_0x1c93b7[_0x468e('0x47')]=qs[_0x468e('0x60')](_['pick'](_0x561cd3[_0x468e('0x49')],_0x2442ef[_0x468e('0x60')]));if(_0x561cd3['query'][_0x468e('0x38')]){_0x1c93b7['where']=_[_0x468e('0x64')](_0x1c93b7[_0x468e('0x47')],{'$or':_[_0x468e('0x3a')](_0x1c93b7[_0x468e('0x4e')],function(_0xa25735){var _0x445dc3={};_0x445dc3[_0xa25735]={'$like':'%'+_0x561cd3['query'][_0x468e('0x38')]+'%'};return _0x445dc3;})});}_0x1c93b7=_[_0x468e('0x64')]({},_0x1c93b7,_0x561cd3[_0x468e('0xdc')]);switch(_0x2b069a[_0x468e('0x30')]){case _0x468e('0x31'):return db[_[_0x468e('0xae')](_0x561cd3['query']['channel'])+_0x468e('0xe5')]['findAll'](_0x1c93b7);case _0x468e('0x33'):case'agent':return _0x2b069a['get'+_[_0x468e('0xae')](_0x561cd3[_0x468e('0x49')][_0x468e('0xbc')])+_0x468e('0xaf')](_0x1c93b7);default:throw new db[(_0x468e('0x97'))][(_0x468e('0x98'))](_0x468e('0xe6'));}})['then'](function(_0x30f469){_0x36e461=_0x30f469[_0x468e('0x52')];if(!_0x561cd3[_0x468e('0x49')][_0x468e('0xdd')]('nolimit')){_0x1c93b7[_0x468e('0x27')]=qs[_0x468e('0x27')](_0x561cd3[_0x468e('0x49')][_0x468e('0x27')]);_0x1c93b7[_0x468e('0x25')]=qs['offset'](_0x561cd3[_0x468e('0x49')][_0x468e('0x25')]);}switch(_0x2b069a[_0x468e('0x30')]){case _0x468e('0x31'):return db[_[_0x468e('0xae')](_0x561cd3[_0x468e('0x49')][_0x468e('0xbc')])+'Queue'][_0x468e('0x4f')](_0x1c93b7);case _0x468e('0x33'):case'agent':return _0x2b069a[_0x468e('0x2f')+_[_0x468e('0xae')](_0x561cd3[_0x468e('0x49')][_0x468e('0xbc')])+_0x468e('0xaf')](_0x1c93b7);}})[_0x468e('0x17')](function(_0x4718ab){return{'count':_0x36e461,'rows':_0x4718ab};})[_0x468e('0x17')](respondWithResult(_0x546566,null))[_0x468e('0x5a')](handleError(_0x546566,null));};exports[_0x468e('0xe7')]=function(_0x34ec3e,_0x2c750c){var _0x57180b={};var _0x5b4d8e={};var _0x20a320;var _0x2f5901;return db[_0x468e('0x48')][_0x468e('0xa0')]({'where':{'id':_0x34ec3e['params']['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x2c750c,null))[_0x468e('0x17')](function(_0xde328){if(_0xde328){_0x20a320=_0xde328;_0x5b4d8e[_0x468e('0x5c')]=_[_0x468e('0x5f')](db[_0x468e('0xb9')][_0x468e('0x5e')]);_0x5b4d8e[_0x468e('0x49')]=_['keys'](_0x34ec3e[_0x468e('0x49')]);_0x5b4d8e[_0x468e('0x60')]=_[_0x468e('0x61')](_0x5b4d8e[_0x468e('0x5c')],_0x5b4d8e[_0x468e('0x49')]);_0x57180b['attributes']=_[_0x468e('0x61')](_0x5b4d8e[_0x468e('0x5c')],qs[_0x468e('0x62')](_0x34ec3e['query'][_0x468e('0x62')]));_0x57180b[_0x468e('0x4e')]=_0x57180b[_0x468e('0x4e')]['length']?_0x57180b['attributes']:_0x5b4d8e[_0x468e('0x5c')];_0x57180b[_0x468e('0xd9')]=qs[_0x468e('0xda')](_0x34ec3e['query'][_0x468e('0xda')]);_0x57180b[_0x468e('0x47')]=qs['filters'](_[_0x468e('0xdb')](_0x34ec3e[_0x468e('0x49')],_0x5b4d8e[_0x468e('0x60')]));if(_0x34ec3e[_0x468e('0x49')][_0x468e('0x38')]){_0x57180b[_0x468e('0x47')]=_[_0x468e('0x64')](_0x57180b[_0x468e('0x47')],{'$or':_[_0x468e('0x3a')](_0x57180b['attributes'],function(_0x451ee0){var _0x1e3c71={};_0x1e3c71[_0x451ee0]={'$like':'%'+_0x34ec3e[_0x468e('0x49')]['filter']+'%'};return _0x1e3c71;})});}_0x57180b=_['merge']({},_0x57180b,_0x34ec3e[_0x468e('0xdc')]);return _0x20a320[_0x468e('0xe7')](_0x57180b);}})[_0x468e('0x17')](function(_0x4721e6){if(_0x4721e6){_0x2f5901=_0x4721e6[_0x468e('0x52')];if(!_0x34ec3e['query'][_0x468e('0xdd')](_0x468e('0xe3'))){_0x57180b[_0x468e('0x27')]=qs['limit'](_0x34ec3e[_0x468e('0x49')][_0x468e('0x27')]);_0x57180b[_0x468e('0x25')]=qs[_0x468e('0x25')](_0x34ec3e[_0x468e('0x49')]['offset']);}return _0x20a320[_0x468e('0xe7')](_0x57180b);}})[_0x468e('0x17')](function(_0x44d55f){if(_0x44d55f){return _0x44d55f?{'count':_0x2f5901,'rows':_0x44d55f}:null;}})[_0x468e('0x17')](respondWithResult(_0x2c750c,null))['catch'](handleError(_0x2c750c,null));};exports[_0x468e('0xe8')]=function(_0x45a81d,_0x2c8adf){var _0x5c3b5f={};var _0xa41289={};var _0x16f44e;var _0x4cc032;return db[_0x468e('0x48')][_0x468e('0xa0')]({'where':{'id':_0x45a81d['params']['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x2c8adf,null))[_0x468e('0x17')](function(_0x15e677){if(_0x15e677){_0x16f44e=_0x15e677;_0xa41289['model']=_['keys'](db[_0x468e('0xe9')][_0x468e('0x5e')]);_0xa41289[_0x468e('0x49')]=_[_0x468e('0x5f')](_0x45a81d[_0x468e('0x49')]);_0xa41289[_0x468e('0x60')]=_[_0x468e('0x61')](_0xa41289[_0x468e('0x5c')],_0xa41289[_0x468e('0x49')]);_0x5c3b5f[_0x468e('0x4e')]=_[_0x468e('0x61')](_0xa41289[_0x468e('0x5c')],qs[_0x468e('0x62')](_0x45a81d[_0x468e('0x49')]['fields']));_0x5c3b5f[_0x468e('0x4e')]=_0x5c3b5f['attributes'][_0x468e('0x52')]?_0x5c3b5f[_0x468e('0x4e')]:_0xa41289[_0x468e('0x5c')];_0x5c3b5f['order']=qs[_0x468e('0xda')](_0x45a81d[_0x468e('0x49')][_0x468e('0xda')]);_0x5c3b5f[_0x468e('0x47')]=qs[_0x468e('0x60')](_['pick'](_0x45a81d[_0x468e('0x49')],_0xa41289[_0x468e('0x60')]));if(_0x45a81d['query'][_0x468e('0x38')]){_0x5c3b5f[_0x468e('0x47')]=_['merge'](_0x5c3b5f[_0x468e('0x47')],{'$or':_[_0x468e('0x3a')](_0x5c3b5f[_0x468e('0x4e')],function(_0x446ac9){var _0x13a60f={};_0x13a60f[_0x446ac9]={'$like':'%'+_0x45a81d[_0x468e('0x49')][_0x468e('0x38')]+'%'};return _0x13a60f;})});}_0x5c3b5f=_[_0x468e('0x64')]({},_0x5c3b5f,_0x45a81d[_0x468e('0xdc')]);return _0x16f44e[_0x468e('0xe8')](_0x5c3b5f);}})['then'](function(_0x267ab4){if(_0x267ab4){_0x4cc032=_0x267ab4[_0x468e('0x52')];if(!_0x45a81d[_0x468e('0x49')][_0x468e('0xdd')](_0x468e('0xe3'))){_0x5c3b5f[_0x468e('0x27')]=qs[_0x468e('0x27')](_0x45a81d[_0x468e('0x49')][_0x468e('0x27')]);_0x5c3b5f[_0x468e('0x25')]=qs[_0x468e('0x25')](_0x45a81d[_0x468e('0x49')][_0x468e('0x25')]);}return _0x16f44e[_0x468e('0xe8')](_0x5c3b5f);}})['then'](function(_0x167931){if(_0x167931){return _0x167931?{'count':_0x4cc032,'rows':_0x167931}:null;}})[_0x468e('0x17')](respondWithResult(_0x2c8adf,null))[_0x468e('0x5a')](handleError(_0x2c8adf,null));};exports[_0x468e('0xea')]=function(_0x401cc8,_0x513aab){var _0x43d910={'raw':!![],'where':{}};var _0x5a0b01={};var _0x200b69={'count':0x0,'rows':[]};return db[_0x468e('0x48')][_0x468e('0xa0')]({'where':{'id':_0x401cc8[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x513aab,null))[_0x468e('0x17')](function(_0x20fceb){if(_0x20fceb){_0x5a0b01[_0x468e('0x5c')]=_[_0x468e('0x5f')](db[_0x468e('0xeb')][_0x468e('0x5e')]);_0x5a0b01['query']=_[_0x468e('0x5f')](_0x401cc8[_0x468e('0x49')]);_0x5a0b01[_0x468e('0x60')]=_[_0x468e('0x61')](_0x5a0b01[_0x468e('0x5c')],_0x5a0b01['query']);_0x43d910[_0x468e('0x4e')]=_[_0x468e('0x61')](_0x5a0b01[_0x468e('0x5c')],qs[_0x468e('0x62')](_0x401cc8[_0x468e('0x49')][_0x468e('0x62')]));_0x43d910[_0x468e('0x4e')]=_0x43d910[_0x468e('0x4e')]['length']?_0x43d910[_0x468e('0x4e')]:_0x5a0b01[_0x468e('0x5c')];if(!_0x401cc8[_0x468e('0x49')][_0x468e('0xdd')](_0x468e('0xe3'))){_0x43d910[_0x468e('0x27')]=qs['limit'](_0x401cc8['query'][_0x468e('0x27')]);_0x43d910[_0x468e('0x25')]=qs[_0x468e('0x25')](_0x401cc8['query'][_0x468e('0x25')]);}_0x43d910[_0x468e('0xd9')]=qs[_0x468e('0xda')](_0x401cc8[_0x468e('0x49')][_0x468e('0xda')]);_0x43d910[_0x468e('0x47')]=qs['filters'](_['pick'](_0x401cc8[_0x468e('0x49')],_0x5a0b01[_0x468e('0x60')]));_0x43d910[_0x468e('0x47')][_0x468e('0xec')]=_0x20fceb['id'];if(_0x401cc8[_0x468e('0x49')][_0x468e('0x38')]){_0x43d910['where']=_[_0x468e('0x64')](_0x43d910['where'],{'$or':_['map'](_0x43d910[_0x468e('0x4e')],function(_0x2b56eb){var _0x41796c={};_0x41796c[_0x2b56eb]={'$like':'%'+_0x401cc8[_0x468e('0x49')][_0x468e('0x38')]+'%'};return _0x41796c;})});}_0x43d910=_[_0x468e('0x64')]({},_0x43d910,_0x401cc8['options']);return db[_0x468e('0xeb')]['count']({'where':_0x43d910['where']})[_0x468e('0x17')](function(_0x2ad6c5){_0x200b69[_0x468e('0x28')]=_0x2ad6c5;if(_0x401cc8['query']['includeAll']){_0x43d910[_0x468e('0x4b')]=[{'all':!![]}];}return db[_0x468e('0xeb')]['findAll'](_0x43d910);})[_0x468e('0x17')](function(_0x4df4dc){_0x200b69['rows']=_0x4df4dc;return _0x200b69;});}})[_0x468e('0x17')](respondWithFilteredResult(_0x513aab,_0x43d910))['catch'](handleError(_0x513aab,null));};exports[_0x468e('0xed')]=function(_0x22e174,_0x1ec0c8){var _0x1472fd={'raw':!![],'where':{}};var _0x3fc395={};var _0x3052db={'count':0x0,'rows':[]};return db[_0x468e('0x48')][_0x468e('0xa0')]({'where':{'id':_0x22e174['params']['id']}})['then'](handleEntityNotFound(_0x1ec0c8,null))[_0x468e('0x17')](function(_0x232f1b){if(_0x232f1b){_0x3fc395['model']=_[_0x468e('0x5f')](db[_0x468e('0xee')][_0x468e('0x5e')]);_0x3fc395[_0x468e('0x49')]=_['keys'](_0x22e174['query']);_0x3fc395[_0x468e('0x60')]=_[_0x468e('0x61')](_0x3fc395['model'],_0x3fc395[_0x468e('0x49')]);_0x1472fd[_0x468e('0x4e')]=_[_0x468e('0x61')](_0x3fc395['model'],qs[_0x468e('0x62')](_0x22e174[_0x468e('0x49')]['fields']));_0x1472fd[_0x468e('0x4e')]=_0x1472fd[_0x468e('0x4e')]['length']?_0x1472fd['attributes']:_0x3fc395[_0x468e('0x5c')];if(!_0x22e174[_0x468e('0x49')][_0x468e('0xdd')](_0x468e('0xe3'))){_0x1472fd[_0x468e('0x27')]=qs['limit'](_0x22e174['query']['limit']);_0x1472fd[_0x468e('0x25')]=qs[_0x468e('0x25')](_0x22e174['query']['offset']);}_0x1472fd[_0x468e('0xd9')]=qs[_0x468e('0xda')](_0x22e174[_0x468e('0x49')][_0x468e('0xda')]);_0x1472fd[_0x468e('0x47')]=qs[_0x468e('0x60')](_[_0x468e('0xdb')](_0x22e174[_0x468e('0x49')],_0x3fc395[_0x468e('0x60')]));_0x1472fd[_0x468e('0x47')][_0x468e('0xec')]=_0x232f1b['id'];if(_0x22e174[_0x468e('0x49')]['filter']){_0x1472fd[_0x468e('0x47')]=_[_0x468e('0x64')](_0x1472fd[_0x468e('0x47')],{'$or':_['map'](_0x1472fd[_0x468e('0x4e')],function(_0x3a1383){var _0x392481={};_0x392481[_0x3a1383]={'$like':'%'+_0x22e174[_0x468e('0x49')]['filter']+'%'};return _0x392481;})});}_0x1472fd=_[_0x468e('0x64')]({},_0x1472fd,_0x22e174[_0x468e('0xdc')]);return db[_0x468e('0xee')][_0x468e('0x28')]({'where':_0x1472fd[_0x468e('0x47')]})[_0x468e('0x17')](function(_0x735300){_0x3052db[_0x468e('0x28')]=_0x735300;if(_0x22e174['query'][_0x468e('0x4a')]){_0x1472fd[_0x468e('0x4b')]=[{'all':!![]}];}return db[_0x468e('0xee')][_0x468e('0x4f')](_0x1472fd);})[_0x468e('0x17')](function(_0x571530){_0x3052db[_0x468e('0x50')]=_0x571530;return _0x3052db;});}})[_0x468e('0x17')](respondWithFilteredResult(_0x1ec0c8,_0x1472fd))[_0x468e('0x5a')](handleError(_0x1ec0c8,null));};exports[_0x468e('0xef')]=function(_0x51dd6c,_0x4adcaa){var _0x2c2dbe={};var _0x1ca7b2={};var _0x4798f8;var _0x5df615;return db[_0x468e('0x48')][_0x468e('0xa0')]({'where':{'id':_0x51dd6c['params']['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x4adcaa,null))[_0x468e('0x17')](function(_0x4506dc){if(_0x4506dc){_0x4798f8=_0x4506dc;_0x1ca7b2['model']=_[_0x468e('0x5f')](db[_0x468e('0xf0')]['rawAttributes']);_0x1ca7b2[_0x468e('0x49')]=_[_0x468e('0x5f')](_0x51dd6c[_0x468e('0x49')]);_0x1ca7b2[_0x468e('0x60')]=_[_0x468e('0x61')](_0x1ca7b2['model'],_0x1ca7b2[_0x468e('0x49')]);_0x2c2dbe[_0x468e('0x4e')]=_[_0x468e('0x61')](_0x1ca7b2['model'],qs[_0x468e('0x62')](_0x51dd6c[_0x468e('0x49')][_0x468e('0x62')]));_0x2c2dbe[_0x468e('0x4e')]=_0x2c2dbe['attributes'][_0x468e('0x52')]?_0x2c2dbe[_0x468e('0x4e')]:_0x1ca7b2['model'];_0x2c2dbe[_0x468e('0xd9')]=qs[_0x468e('0xda')](_0x51dd6c[_0x468e('0x49')][_0x468e('0xda')]);_0x2c2dbe['where']=qs[_0x468e('0x60')](_['pick'](_0x51dd6c[_0x468e('0x49')],_0x1ca7b2[_0x468e('0x60')]));if(_0x51dd6c['query'][_0x468e('0x38')]){_0x2c2dbe[_0x468e('0x47')]=_['merge'](_0x2c2dbe[_0x468e('0x47')],{'$or':_[_0x468e('0x3a')](_0x2c2dbe[_0x468e('0x4e')],function(_0x54a2c2){var _0x4818e4={};_0x4818e4[_0x54a2c2]={'$like':'%'+_0x51dd6c[_0x468e('0x49')][_0x468e('0x38')]+'%'};return _0x4818e4;})});}_0x2c2dbe=_[_0x468e('0x64')]({},_0x2c2dbe,_0x51dd6c[_0x468e('0xdc')]);return _0x4798f8['getChatInteractions'](_0x2c2dbe);}})['then'](function(_0xca4c86){if(_0xca4c86){_0x5df615=_0xca4c86[_0x468e('0x52')];if(!_0x51dd6c[_0x468e('0x49')][_0x468e('0xdd')](_0x468e('0xe3'))){_0x2c2dbe[_0x468e('0x27')]=qs['limit'](_0x51dd6c[_0x468e('0x49')][_0x468e('0x27')]);_0x2c2dbe[_0x468e('0x25')]=qs['offset'](_0x51dd6c[_0x468e('0x49')]['offset']);}return _0x4798f8[_0x468e('0xef')](_0x2c2dbe);}})[_0x468e('0x17')](function(_0x44613f){if(_0x44613f){return _0x44613f?{'count':_0x5df615,'rows':_0x44613f}:null;}})[_0x468e('0x17')](respondWithResult(_0x4adcaa,null))[_0x468e('0x5a')](handleError(_0x4adcaa,null));};exports[_0x468e('0xf1')]=function(_0x4f539,_0x2fb9b5){var _0x180f67={};var _0x70451={};var _0x464a6e;var _0x3dd3c0;return db[_0x468e('0x48')]['findOne']({'where':{'id':_0x4f539['params']['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x2fb9b5,null))['then'](function(_0xdb3ef6){if(_0xdb3ef6){_0x464a6e=_0xdb3ef6;_0x70451[_0x468e('0x5c')]=_[_0x468e('0x5f')](db[_0x468e('0xf2')][_0x468e('0x5e')]);_0x70451[_0x468e('0x49')]=_['keys'](_0x4f539[_0x468e('0x49')]);_0x70451['filters']=_[_0x468e('0x61')](_0x70451[_0x468e('0x5c')],_0x70451[_0x468e('0x49')]);_0x180f67[_0x468e('0x4e')]=_[_0x468e('0x61')](_0x70451[_0x468e('0x5c')],qs[_0x468e('0x62')](_0x4f539[_0x468e('0x49')]['fields']));_0x180f67[_0x468e('0x4e')]=_0x180f67['attributes'][_0x468e('0x52')]?_0x180f67[_0x468e('0x4e')]:_0x70451[_0x468e('0x5c')];_0x180f67[_0x468e('0xd9')]=qs[_0x468e('0xda')](_0x4f539[_0x468e('0x49')][_0x468e('0xda')]);_0x180f67['where']=qs[_0x468e('0x60')](_[_0x468e('0xdb')](_0x4f539[_0x468e('0x49')],_0x70451[_0x468e('0x60')]));if(_0x4f539['query'][_0x468e('0x38')]){_0x180f67[_0x468e('0x47')]=_[_0x468e('0x64')](_0x180f67['where'],{'$or':_[_0x468e('0x3a')](_0x180f67[_0x468e('0x4e')],function(_0x2edb2b){var _0x1ec115={};_0x1ec115[_0x2edb2b]={'$like':'%'+_0x4f539['query'][_0x468e('0x38')]+'%'};return _0x1ec115;})});}_0x180f67=_['merge']({},_0x180f67,_0x4f539[_0x468e('0xdc')]);return _0x464a6e['getOpenchannelInteractions'](_0x180f67);}})['then'](function(_0x313958){if(_0x313958){_0x3dd3c0=_0x313958[_0x468e('0x52')];if(!_0x4f539[_0x468e('0x49')][_0x468e('0xdd')](_0x468e('0xe3'))){_0x180f67[_0x468e('0x27')]=qs['limit'](_0x4f539['query'][_0x468e('0x27')]);_0x180f67[_0x468e('0x25')]=qs[_0x468e('0x25')](_0x4f539[_0x468e('0x49')]['offset']);}return _0x464a6e[_0x468e('0xf1')](_0x180f67);}})['then'](function(_0x12abc1){if(_0x12abc1){return _0x12abc1?{'count':_0x3dd3c0,'rows':_0x12abc1}:null;}})[_0x468e('0x17')](respondWithResult(_0x2fb9b5,null))['catch'](handleError(_0x2fb9b5,null));};exports[_0x468e('0xf3')]=function(_0x55dc8c,_0x2f6f55){var _0x21f7bc={'raw':!![],'where':{}};var _0xd6fcd={};var _0x34d291={'count':0x0,'rows':[]};return db[_0x468e('0x48')]['findOne']({'where':{'id':_0x55dc8c[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x2f6f55,null))[_0x468e('0x17')](function(_0xc777e6){if(_0xc777e6){_0xd6fcd['model']=_[_0x468e('0x5f')](db[_0x468e('0xf4')][_0x468e('0x5e')]);_0xd6fcd[_0x468e('0x49')]=_[_0x468e('0x5f')](_0x55dc8c[_0x468e('0x49')]);_0xd6fcd[_0x468e('0x60')]=_[_0x468e('0x61')](_0xd6fcd[_0x468e('0x5c')],_0xd6fcd['query']);_0x21f7bc[_0x468e('0x4e')]=_[_0x468e('0x61')](_0xd6fcd[_0x468e('0x5c')],qs[_0x468e('0x62')](_0x55dc8c['query'][_0x468e('0x62')]));_0x21f7bc[_0x468e('0x4e')]=_0x21f7bc[_0x468e('0x4e')][_0x468e('0x52')]?_0x21f7bc[_0x468e('0x4e')]:_0xd6fcd['model'];if(!_0x55dc8c[_0x468e('0x49')][_0x468e('0xdd')](_0x468e('0xe3'))){_0x21f7bc[_0x468e('0x27')]=qs[_0x468e('0x27')](_0x55dc8c[_0x468e('0x49')][_0x468e('0x27')]);_0x21f7bc[_0x468e('0x25')]=qs[_0x468e('0x25')](_0x55dc8c['query'][_0x468e('0x25')]);}_0x21f7bc[_0x468e('0xd9')]=qs[_0x468e('0xda')](_0x55dc8c[_0x468e('0x49')][_0x468e('0xda')]);_0x21f7bc[_0x468e('0x47')]=qs[_0x468e('0x60')](_['pick'](_0x55dc8c[_0x468e('0x49')],_0xd6fcd[_0x468e('0x60')]));_0x21f7bc[_0x468e('0x47')][_0x468e('0xec')]=_0xc777e6['id'];if(_0x55dc8c[_0x468e('0x49')][_0x468e('0x38')]){_0x21f7bc[_0x468e('0x47')]=_[_0x468e('0x64')](_0x21f7bc[_0x468e('0x47')],{'$or':_[_0x468e('0x3a')](_0x21f7bc['attributes'],function(_0xdc052c){var _0x48f955={};_0x48f955[_0xdc052c]={'$like':'%'+_0x55dc8c['query']['filter']+'%'};return _0x48f955;})});}_0x21f7bc=_['merge']({},_0x21f7bc,_0x55dc8c['options']);return db['MailInteraction']['count']({'where':_0x21f7bc[_0x468e('0x47')]})[_0x468e('0x17')](function(_0x219e09){_0x34d291['count']=_0x219e09;if(_0x55dc8c[_0x468e('0x49')][_0x468e('0x4a')]){_0x21f7bc[_0x468e('0x4b')]=[{'all':!![]}];}return db[_0x468e('0xf4')][_0x468e('0x4f')](_0x21f7bc);})[_0x468e('0x17')](function(_0x4ed996){_0x34d291[_0x468e('0x50')]=_0x4ed996;return _0x34d291;});}})[_0x468e('0x17')](respondWithFilteredResult(_0x2f6f55,_0x21f7bc))[_0x468e('0x5a')](handleError(_0x2f6f55,null));};exports[_0x468e('0xf5')]=function(_0x57909b,_0x14ab4c){var _0x5571d5={};var _0x36db7e={};var _0xb19cfc;var _0xea2067;return db['User'][_0x468e('0xa0')]({'where':{'id':_0x57909b[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x14ab4c,null))[_0x468e('0x17')](function(_0x5cd4b8){if(_0x5cd4b8){_0xb19cfc=_0x5cd4b8;_0x36db7e['model']=_[_0x468e('0x5f')](db[_0x468e('0xf6')][_0x468e('0x5e')]);_0x36db7e[_0x468e('0x49')]=_[_0x468e('0x5f')](_0x57909b[_0x468e('0x49')]);_0x36db7e[_0x468e('0x60')]=_[_0x468e('0x61')](_0x36db7e[_0x468e('0x5c')],_0x36db7e[_0x468e('0x49')]);_0x5571d5['attributes']=_['intersection'](_0x36db7e[_0x468e('0x5c')],qs[_0x468e('0x62')](_0x57909b[_0x468e('0x49')][_0x468e('0x62')]));_0x5571d5[_0x468e('0x4e')]=_0x5571d5[_0x468e('0x4e')][_0x468e('0x52')]?_0x5571d5['attributes']:_0x36db7e[_0x468e('0x5c')];_0x5571d5[_0x468e('0xd9')]=qs[_0x468e('0xda')](_0x57909b[_0x468e('0x49')][_0x468e('0xda')]);_0x5571d5['where']=qs[_0x468e('0x60')](_['pick'](_0x57909b['query'],_0x36db7e[_0x468e('0x60')]));if(_0x57909b[_0x468e('0x49')][_0x468e('0x38')]){_0x5571d5[_0x468e('0x47')]=_[_0x468e('0x64')](_0x5571d5[_0x468e('0x47')],{'$or':_[_0x468e('0x3a')](_0x5571d5[_0x468e('0x4e')],function(_0x33a43c){var _0x45cb0e={};_0x45cb0e[_0x33a43c]={'$like':'%'+_0x57909b[_0x468e('0x49')][_0x468e('0x38')]+'%'};return _0x45cb0e;})});}_0x5571d5=_[_0x468e('0x64')]({},_0x5571d5,_0x57909b[_0x468e('0xdc')]);return _0xb19cfc[_0x468e('0xf5')](_0x5571d5);}})[_0x468e('0x17')](function(_0x3e88ea){if(_0x3e88ea){_0xea2067=_0x3e88ea[_0x468e('0x52')];if(!_0x57909b[_0x468e('0x49')][_0x468e('0xdd')](_0x468e('0xe3'))){_0x5571d5['limit']=qs[_0x468e('0x27')](_0x57909b[_0x468e('0x49')][_0x468e('0x27')]);_0x5571d5[_0x468e('0x25')]=qs[_0x468e('0x25')](_0x57909b[_0x468e('0x49')][_0x468e('0x25')]);}return _0xb19cfc[_0x468e('0xf5')](_0x5571d5);}})[_0x468e('0x17')](function(_0x3bd8ea){if(_0x3bd8ea){return _0x3bd8ea?{'count':_0xea2067,'rows':_0x3bd8ea}:null;}})[_0x468e('0x17')](respondWithResult(_0x14ab4c,null))[_0x468e('0x5a')](handleError(_0x14ab4c,null));};exports[_0x468e('0xf7')]=function(_0x3fdd99,_0x10c948){var _0x572ac5={};var _0x217eea={};var _0x5dafcd;var _0xf6cfe;return db[_0x468e('0x48')][_0x468e('0xa0')]({'where':{'id':_0x3fdd99[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x10c948,null))[_0x468e('0x17')](function(_0x2b9159){if(_0x2b9159){_0x5dafcd=_0x2b9159;_0x217eea[_0x468e('0x5c')]=_[_0x468e('0x5f')](db['FaxInteraction'][_0x468e('0x5e')]);_0x217eea[_0x468e('0x49')]=_[_0x468e('0x5f')](_0x3fdd99[_0x468e('0x49')]);_0x217eea[_0x468e('0x60')]=_[_0x468e('0x61')](_0x217eea[_0x468e('0x5c')],_0x217eea[_0x468e('0x49')]);_0x572ac5[_0x468e('0x4e')]=_[_0x468e('0x61')](_0x217eea[_0x468e('0x5c')],qs[_0x468e('0x62')](_0x3fdd99[_0x468e('0x49')][_0x468e('0x62')]));_0x572ac5[_0x468e('0x4e')]=_0x572ac5['attributes'][_0x468e('0x52')]?_0x572ac5[_0x468e('0x4e')]:_0x217eea[_0x468e('0x5c')];_0x572ac5[_0x468e('0xd9')]=qs[_0x468e('0xda')](_0x3fdd99[_0x468e('0x49')][_0x468e('0xda')]);_0x572ac5[_0x468e('0x47')]=qs[_0x468e('0x60')](_[_0x468e('0xdb')](_0x3fdd99['query'],_0x217eea['filters']));if(_0x3fdd99[_0x468e('0x49')][_0x468e('0x38')]){_0x572ac5[_0x468e('0x47')]=_[_0x468e('0x64')](_0x572ac5[_0x468e('0x47')],{'$or':_['map'](_0x572ac5[_0x468e('0x4e')],function(_0x324a4f){var _0x56436a={};_0x56436a[_0x324a4f]={'$like':'%'+_0x3fdd99['query'][_0x468e('0x38')]+'%'};return _0x56436a;})});}_0x572ac5=_['merge']({},_0x572ac5,_0x3fdd99[_0x468e('0xdc')]);return _0x5dafcd['getFaxInteractions'](_0x572ac5);}})['then'](function(_0x538313){if(_0x538313){_0xf6cfe=_0x538313[_0x468e('0x52')];if(!_0x3fdd99[_0x468e('0x49')]['hasOwnProperty'](_0x468e('0xe3'))){_0x572ac5[_0x468e('0x27')]=qs['limit'](_0x3fdd99[_0x468e('0x49')][_0x468e('0x27')]);_0x572ac5['offset']=qs['offset'](_0x3fdd99[_0x468e('0x49')]['offset']);}return _0x5dafcd[_0x468e('0xf7')](_0x572ac5);}})['then'](function(_0x289217){if(_0x289217){return _0x289217?{'count':_0xf6cfe,'rows':_0x289217}:null;}})[_0x468e('0x17')](respondWithResult(_0x10c948,null))[_0x468e('0x5a')](handleError(_0x10c948,null));};exports[_0x468e('0xf8')]=function(_0x215a52,_0x661167){var _0x3c7220={};var _0x208ffd={};var _0x2bdb32;var _0x5c2b2f;return db[_0x468e('0x48')][_0x468e('0xa0')]({'where':{'id':_0x215a52[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x661167,null))[_0x468e('0x17')](function(_0x14ead8){if(_0x14ead8){_0x2bdb32=_0x14ead8;_0x208ffd[_0x468e('0x5c')]=_['keys'](db[_0x468e('0xf9')][_0x468e('0x5e')]);_0x208ffd[_0x468e('0x49')]=_[_0x468e('0x5f')](_0x215a52[_0x468e('0x49')]);_0x208ffd[_0x468e('0x60')]=_[_0x468e('0x61')](_0x208ffd['model'],_0x208ffd[_0x468e('0x49')]);_0x3c7220[_0x468e('0x4e')]=_['intersection'](_0x208ffd['model'],qs[_0x468e('0x62')](_0x215a52[_0x468e('0x49')][_0x468e('0x62')]));_0x3c7220[_0x468e('0x4e')]=_0x3c7220[_0x468e('0x4e')]['length']?_0x3c7220['attributes']:_0x208ffd[_0x468e('0x5c')];_0x3c7220[_0x468e('0xd9')]=qs[_0x468e('0xda')](_0x215a52['query'][_0x468e('0xda')]);_0x3c7220[_0x468e('0x47')]=qs[_0x468e('0x60')](_['pick'](_0x215a52[_0x468e('0x49')],_0x208ffd[_0x468e('0x60')]));if(_0x215a52[_0x468e('0x49')][_0x468e('0x38')]){_0x3c7220['where']=_[_0x468e('0x64')](_0x3c7220[_0x468e('0x47')],{'$or':_[_0x468e('0x3a')](_0x3c7220[_0x468e('0x4e')],function(_0xda070c){var _0x5df431={};_0x5df431[_0xda070c]={'$like':'%'+_0x215a52[_0x468e('0x49')][_0x468e('0x38')]+'%'};return _0x5df431;})});}_0x3c7220=_[_0x468e('0x64')]({},_0x3c7220,_0x215a52['options']);return _0x2bdb32[_0x468e('0xf8')](_0x3c7220);}})[_0x468e('0x17')](function(_0x450b4d){if(_0x450b4d){_0x5c2b2f=_0x450b4d[_0x468e('0x52')];if(!_0x215a52[_0x468e('0x49')][_0x468e('0xdd')]('nolimit')){_0x3c7220[_0x468e('0x27')]=qs[_0x468e('0x27')](_0x215a52[_0x468e('0x49')][_0x468e('0x27')]);_0x3c7220[_0x468e('0x25')]=qs['offset'](_0x215a52[_0x468e('0x49')]['offset']);}return _0x2bdb32['getWhatsappInteractions'](_0x3c7220);}})[_0x468e('0x17')](function(_0x1f931a){if(_0x1f931a){return _0x1f931a?{'count':_0x5c2b2f,'rows':_0x1f931a}:null;}})[_0x468e('0x17')](respondWithResult(_0x661167,null))['catch'](handleError(_0x661167,null));};exports[_0x468e('0xfa')]=function(_0x5f323a,_0x392da4,_0xf9e0a9){var _0x2d304f;var _0x54d62b;var _0x4f336f;var _0x79210d=!_[_0x468e('0x73')](_0x5f323a[_0x468e('0x6b')]['id'])?_0x5f323a[_0x468e('0x6b')]['id']:!_[_0x468e('0x73')](_0x5f323a[_0x468e('0x33')]['id'])?_0x5f323a[_0x468e('0x33')]['id']:null;return db[_0x468e('0x48')]['find']({'where':{'id':_0x79210d,'role':{'$or':[_0x468e('0x31'),_0x468e('0x33'),_0x468e('0x35')]}},'attributes':['id','name',_0x468e('0xfb'),_0x468e('0xfc'),'role','internal',_0x468e('0xa9')]})[_0x468e('0x17')](function(_0x2fd4dc){if(_0x2fd4dc){if(_0x2fd4dc[_0x468e('0x30')]===_0x468e('0x35')){_0x2d304f=_0x2fd4dc;if(_0x5f323a[_0x468e('0x68')][_0x468e('0xb6')]){_0x4f336f=util[_0x468e('0xfd')](_0x468e('0xfe'),_0x2d304f[_0x5f323a[_0x468e('0x68')][_0x468e('0xb6')]]);}else if(_0x5f323a[_0x468e('0x68')]['intrf']){_0x4f336f=util['format']('SIP/%s',_0x5f323a['body'][_0x468e('0xff')]);}else{_0x4f336f=util['format'](_0x468e('0xb7'),_0x2d304f['name']);}socket['to'](util['format']('user:%s',_0x2d304f[_0x468e('0x3d')]))['emit'](_0x468e('0x100'),{'user':{'id':_0x2d304f['id'],'name':_0x2d304f['name']},'ip':_0x5f323a['headers']['x-forwarded-for']||_0x5f323a[_0x468e('0x101')][_0x468e('0x102')]||_0x5f323a[_0x468e('0x103')][_0x468e('0x102')]||_0x5f323a[_0x468e('0x101')][_0x468e('0x103')][_0x468e('0x102')]});return db[_0x468e('0xb9')]['destroy']({'where':{'membername':_0x2d304f[_0x468e('0x3d')]},'individualHooks':!![]});}}else{throw new db[(_0x468e('0x97'))][(_0x468e('0x98'))](_0x468e('0x104'));}})['then'](function(){if(_0x2d304f){return _0x2d304f[_0x468e('0x105')]({'raw':!![]});}})[_0x468e('0x17')](function(_0x5489b1){if(_0x2d304f){var _0x535d5b=[];if(_0x5489b1){_0x54d62b=_0x5489b1;if(_0x54d62b[_0x468e('0x52')]){for(var _0x2ae924=0x0;_0x2ae924<_0x54d62b[_0x468e('0x52')];_0x2ae924++){_0x535d5b[_0x468e('0x53')]({'membername':_0x2d304f[_0x468e('0x3d')],'UserId':_0x2d304f['id'],'queue_name':_0x54d62b[_0x2ae924]['name'],'VoiceQueueId':_0x54d62b[_0x2ae924]['id'],'interface':_0x4f336f,'paused':_0x2d304f[_0x468e('0xa9')]||![],'penalty':_0x54d62b[_0x2ae924][_0x468e('0x106')]||0x0});}return BPromise['each'](_0x535d5b,function(_0x96825c){return db['UserVoiceQueueRt']['upsert'](_0x96825c);});}}}})[_0x468e('0x17')](function(){if(_0x2d304f){return db[_0x468e('0x107')][_0x468e('0x4f')]({'where':{'membername':_0x2d304f[_0x468e('0x3d')],'exitAt':null}});}})[_0x468e('0x17')](function(_0x3a0367){if(_0x2d304f){var _0x5d6b5c=[];_0x3a0367[_0x468e('0x108')](function(_0x332fb5){_0x5d6b5c[_0x468e('0x53')](_0x332fb5[_0x468e('0x2b')]({'exitAt':moment()[_0x468e('0xfd')](_0x468e('0x109'))}));});return BPromise['all'](_0x5d6b5c);}})[_0x468e('0x17')](function(){if(_0x2d304f){var _0x1b9819=[];var _0x1ab1ec=[];var _0x27e9dd=utils[_0x468e('0x10a')]();var _0x2f8a7e={'membername':_0x2d304f['name'],'interface':_0x4f336f,'enterAt':moment()['format'](_0x468e('0x109')),'role':_0x2d304f['role'],'internal':_0x2d304f['internal']};_0x27e9dd[_0x468e('0x108')](function(_0xa98abd){_0x1b9819[_0x468e('0x53')](_[_0x468e('0x64')]({'channel':_0xa98abd,'type':_0x468e('0x10b'),'data1':_0x5f323a[_0x468e('0x68')][_0x468e('0x10c')],'data2':_0x4f336f},_0x2f8a7e));if(_0x2d304f[_0x468e('0xa9')]){_0x1ab1ec[_0x468e('0x53')](_['merge']({'channel':_0xa98abd,'type':_0x468e('0x10d'),'data1':_0x468e('0x10e')},_0x2f8a7e));}});return db[_0x468e('0x107')][_0x468e('0x91')](_0x1b9819[_0x468e('0xd6')](_0x1ab1ec),{'individualHooks':!![]});}})[_0x468e('0x17')](function(){if(_0x2d304f){return _0x2d304f[_0x468e('0x2b')]({'online':!![],'lastLoginAt':moment()[_0x468e('0xfd')](_0x468e('0x109')),'voicePause':_0x2d304f['loginInPause']||![],'mailPause':_0x2d304f[_0x468e('0xa9')]||![],'chatPause':_0x2d304f[_0x468e('0xa9')]||![],'faxPause':_0x2d304f[_0x468e('0xa9')]||![],'smsPause':_0x2d304f[_0x468e('0xa9')]||![],'openchannelPause':_0x2d304f[_0x468e('0xa9')]||![],'whatsappPause':_0x2d304f[_0x468e('0xa9')]||![],'pauseType':_0x2d304f[_0x468e('0xa9')]?'LOGININPAUSE':null,'interface':_0x4f336f,'lastPauseAt':moment()['format'](_0x468e('0x109'))});}})[_0x468e('0x17')](function(_0x3be572){if(_0x5f323a[_0x468e('0x10f')]){return _0xf9e0a9();}else{return BPromise[_0x468e('0x110')](_0x3be572)[_0x468e('0x17')](respondWithResult(_0x392da4,null));}})['catch'](handleError(_0x392da4,null));};exports['logout']=function(_0x349d73,_0x46e9df){var _0x1c2dbf;return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x349d73[_0x468e('0x6b')]['id'],'role':_0x468e('0x35')},'attributes':['id',_0x468e('0x3d'),_0x468e('0x30')]})[_0x468e('0x17')](handleEntityNotFound(_0x46e9df,null))['then'](function(_0x597201){if(_0x597201){_0x1c2dbf=_0x597201;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x1c2dbf[_0x468e('0x3d')]},'individualHooks':!![]});}})[_0x468e('0x17')](function(){return db[_0x468e('0x107')][_0x468e('0x4f')]({'where':{'membername':_0x1c2dbf['name'],'exitAt':null}});})['then'](function(_0x45ab2f){var _0x3c5f3e=[];_0x45ab2f[_0x468e('0x108')](function(_0x5e1393){_0x3c5f3e[_0x468e('0x53')](_0x5e1393['update']({'exitAt':moment()[_0x468e('0xfd')](_0x468e('0x109'))}));});return BPromise[_0x468e('0x59')](_0x3c5f3e);})[_0x468e('0x17')](function(){return _0x1c2dbf[_0x468e('0x2b')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x468e('0x17')](respondWithResult(_0x46e9df,null))[_0x468e('0x5a')](handleError(_0x46e9df,null));};exports[_0x468e('0x111')]=function(_0x493501,_0x2e8908){var _0x3e402c;return db['UserVoiceQueueRt'][_0x468e('0x2b')]({'paused':0x1},{'where':{'UserId':_0x493501[_0x468e('0x6b')]['id']},'individualHooks':!![]})['then'](function(){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x493501[_0x468e('0x6b')]['id'],'role':_0x468e('0x35')},'attributes':['id',_0x468e('0x3d'),_0x468e('0x30'),_0x468e('0x6e'),_0x468e('0xb6')]});})[_0x468e('0x17')](handleEntityNotFound(_0x2e8908,null))[_0x468e('0x17')](function(_0x15d1e6){if(_0x15d1e6){_0x3e402c=_0x15d1e6;return respondWithRpcPromise('QueuePause',_0x468e('0x111'),{'id':_0x3e402c['id'],'name':_0x3e402c[_0x468e('0x3d')],'pause':!![]});}})['then'](function(){if(_0x3e402c){return db[_0x468e('0x107')][_0x468e('0x4f')]({'where':{'membername':_0x3e402c[_0x468e('0x3d')],'type':_0x468e('0x10d'),'exitAt':null}});}})[_0x468e('0x17')](function(_0x20c24b){if(_0x20c24b[_0x468e('0x52')]){var _0x19c1ae=moment()[_0x468e('0xfd')](_0x468e('0x109'));for(var _0x4c22ad=0x0,_0x52f5de=_0x20c24b['length'];_0x4c22ad<_0x52f5de;_0x4c22ad++){_0x20c24b[_0x4c22ad][_0x468e('0x112')]({'exitAt':_0x19c1ae});}}})['then'](function(){var _0x5d6a03=[];var _0x3968b8=utils[_0x468e('0x10a')]();_0x3968b8[_0x468e('0x108')](function(_0x451663){_0x5d6a03[_0x468e('0x53')]({'channel':_0x451663,'membername':_0x3e402c[_0x468e('0x3d')],'interface':_[_0x468e('0x73')](_0x3e402c[_0x468e('0xb6')])?util[_0x468e('0xfd')](_0x468e('0xb7'),_0x3e402c[_0x468e('0x3d')]):_0x3e402c[_0x468e('0xb6')],'type':'PAUSE','enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x493501['body'][_0x468e('0x42')]||_0x468e('0x113'),'role':_0x3e402c['role'],'internal':_0x3e402c[_0x468e('0x6e')]});});return db[_0x468e('0x107')][_0x468e('0x91')](_0x5d6a03,{'individualHooks':!![]});})[_0x468e('0x17')](function(){return _0x3e402c[_0x468e('0x2b')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x493501['body'][_0x468e('0x42')]||_0x468e('0x113'),'lastPauseAt':moment()[_0x468e('0xfd')](_0x468e('0x109'))});})[_0x468e('0x17')](respondWithResult(_0x2e8908,null))[_0x468e('0x5a')](handleError(_0x2e8908,null));};exports[_0x468e('0x114')]=function(_0x199ba3,_0x15a0d9){var _0x24f4ca;return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x199ba3[_0x468e('0x6b')]['id']},'attributes':['id',_0x468e('0x3d'),_0x468e('0x30'),_0x468e('0xaa'),_0x468e('0x115'),_0x468e('0x116'),'faxPause','openchannelPause','smsPause',_0x468e('0x117'),_0x468e('0x118'),_0x468e('0x119')]})[_0x468e('0x17')](handleEntityNotFound(_0x15a0d9,null))[_0x468e('0x17')](function(_0x51f93a){if(_0x51f93a){_0x24f4ca=_0x51f93a;if(_0x199ba3[_0x468e('0x68')][_0x468e('0xbc')]&&!utils[_0x468e('0xab')](_0x199ba3[_0x468e('0x68')]['channel'])){throw new db[(_0x468e('0x97'))]['ValidationError']('Unknown\x20channel');}switch(_0x199ba3[_0x468e('0x68')][_0x468e('0xbc')]){case _0x468e('0xb5'):return respondWithRpcPromise('QueuePause',_0x468e('0x114'),{'id':_0x24f4ca['id'],'name':_0x24f4ca[_0x468e('0x3d')],'pause':![]})[_0x468e('0x17')](function(){return db[_0x468e('0xb9')][_0x468e('0x2b')]({'paused':0x0},{'where':{'UserId':_0x24f4ca['id']},'individualHooks':!![]});})[_0x468e('0x17')](function(){return db[_0x468e('0x107')]['find']({'where':{'channel':_0x199ba3[_0x468e('0x68')][_0x468e('0xbc')],'membername':_0x24f4ca['name'],'type':_0x468e('0x10d'),'exitAt':null}});})['then'](function(_0x4f69a3){if(_0x4f69a3){return _0x4f69a3[_0x468e('0x2b')]({'exitAt':moment()[_0x468e('0xfd')](_0x468e('0x109')),'data2':_0x468e('0x11a')},{'individualHooks':!![]});}return null;})[_0x468e('0x17')](function(){return _0x24f4ca[_0x468e('0x2b')]({'voicePause':![]});});case _0x468e('0x67'):case'chat':case _0x468e('0x57'):case _0x468e('0x56'):case _0x468e('0x66'):case _0x468e('0x58'):return db[_0x468e('0x107')]['find']({'where':{'channel':_0x199ba3[_0x468e('0x68')][_0x468e('0xbc')],'membername':_0x24f4ca[_0x468e('0x3d')],'type':_0x468e('0x10d'),'exitAt':null}})[_0x468e('0x17')](function(_0x17f2e7){if(_0x17f2e7){return _0x17f2e7[_0x468e('0x2b')]({'exitAt':moment()[_0x468e('0xfd')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x468e('0x11a')},{'individualHooks':!![]});}return null;})[_0x468e('0x17')](function(){var _0x5e49e8={};_[_0x468e('0x29')](_0x5e49e8,util['format']('%s%s',_0x199ba3[_0x468e('0x68')][_0x468e('0xbc')],_0x468e('0x11b')),![]);return _0x24f4ca[_0x468e('0x2b')](_0x5e49e8);});default:return respondWithRpcPromise(_0x468e('0x11c'),_0x468e('0x114'),{'id':_0x24f4ca['id'],'name':_0x24f4ca[_0x468e('0x3d')],'pause':![]})['then'](function(){return db['UserVoiceQueueRt'][_0x468e('0x2b')]({'paused':0x0},{'where':{'UserId':_0x24f4ca['id']}});})[_0x468e('0x17')](function(){return db['MemberReport'][_0x468e('0x4f')]({'where':{'membername':_0x24f4ca[_0x468e('0x3d')],'type':_0x468e('0x10d'),'exitAt':null}});})[_0x468e('0x17')](function(_0x215afe){var _0x49eea5=[];_0x215afe['forEach'](function(_0x32f305){_0x49eea5[_0x468e('0x53')](_0x32f305[_0x468e('0x2b')]({'exitAt':moment()[_0x468e('0xfd')](_0x468e('0x109')),'data2':_0x468e('0x11a')}));});return BPromise[_0x468e('0x59')](_0x49eea5);})[_0x468e('0x17')](function(){return _0x24f4ca[_0x468e('0x2b')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})['then'](respondWithResult(_0x15a0d9,null))[_0x468e('0x5a')](handleError(_0x15a0d9,null));};exports[_0x468e('0x11d')]=function(_0x2d1013,_0x5a4d04){var _0x216156={};var _0x1731e0={};var _0x594a17;var _0x1431c3;return db[_0x468e('0x48')][_0x468e('0xa0')]({'where':{'id':_0x2d1013[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x5a4d04,null))[_0x468e('0x17')](function(_0xa01f3d){if(_0xa01f3d){_0x594a17=_0xa01f3d;_0x1731e0['model']=_['keys'](db[_0x468e('0x11e')][_0x468e('0x5e')]);_0x1731e0['query']=_['keys'](_0x2d1013[_0x468e('0x49')]);_0x1731e0[_0x468e('0x60')]=_[_0x468e('0x61')](_0x1731e0[_0x468e('0x5c')],_0x1731e0['query']);_0x216156[_0x468e('0x4e')]=_[_0x468e('0x61')](_0x1731e0[_0x468e('0x5c')],qs[_0x468e('0x62')](_0x2d1013[_0x468e('0x49')][_0x468e('0x62')]));_0x216156[_0x468e('0x4e')]=_0x216156[_0x468e('0x4e')][_0x468e('0x52')]?_0x216156[_0x468e('0x4e')]:_0x1731e0[_0x468e('0x5c')];_0x216156['order']=qs[_0x468e('0xda')](_0x2d1013[_0x468e('0x49')]['sort']);_0x216156[_0x468e('0x47')]=qs['filters'](_[_0x468e('0xdb')](_0x2d1013[_0x468e('0x49')],_0x1731e0[_0x468e('0x60')]));if(_0x2d1013['query'][_0x468e('0x38')]){_0x216156[_0x468e('0x47')]=_[_0x468e('0x64')](_0x216156[_0x468e('0x47')],{'$or':_['map'](_0x216156[_0x468e('0x4e')],function(_0x2c30ef){var _0x190864={};_0x190864[_0x2c30ef]={'$like':'%'+_0x2d1013['query'][_0x468e('0x38')]+'%'};return _0x190864;})});}_0x216156=_['merge']({},_0x216156,_0x2d1013['options']);return _0x594a17[_0x468e('0x11d')](_0x216156);}})[_0x468e('0x17')](function(_0x1c7bc7){if(_0x1c7bc7){_0x1431c3=_0x1c7bc7[_0x468e('0x52')];if(!_0x2d1013[_0x468e('0x49')][_0x468e('0xdd')](_0x468e('0xe3'))){_0x216156[_0x468e('0x27')]=qs[_0x468e('0x27')](_0x2d1013[_0x468e('0x49')][_0x468e('0x27')]);_0x216156['offset']=qs[_0x468e('0x25')](_0x2d1013[_0x468e('0x49')]['offset']);}return _0x594a17[_0x468e('0x11d')](_0x216156);}})[_0x468e('0x17')](function(_0x33d161){if(_0x33d161){return _0x33d161?{'count':_0x1431c3,'rows':_0x33d161}:null;}})[_0x468e('0x17')](respondWithResult(_0x5a4d04,null))[_0x468e('0x5a')](handleError(_0x5a4d04,null));};exports[_0x468e('0x11f')]=function(_0x51e951,_0x35bcbe){var _0x22c818=_0x51e951['params']['id'];var _0xa4fc38=_0x51e951[_0x468e('0x68')]?_0x51e951[_0x468e('0x68')][_0x468e('0x6c')]:null;var _0x2635a4=[];return Promise['resolve']()[_0x468e('0x17')](function(){if(!_0xa4fc38)throw new APIBadRequestError(_0x468e('0x120'));})[_0x468e('0x17')](function(){return db[_0x468e('0x48')][_0x468e('0xa0')]({'where':{'id':_0x22c818}});})['then'](function(_0x2fd243){if(!_0x2fd243)throw new APINotFoundError(util[_0x468e('0xfd')](_0x468e('0x121'),_0x51e951['params']['id']));return db['sequelize']['transaction'](function(_0x472988){return _0x2fd243[_0x468e('0x11f')](_0xa4fc38,{'transaction':_0x472988})['then'](function(){return db[_0x468e('0x11e')][_0x468e('0x4f')]({'where':{'id':{'$in':_0xa4fc38}}});})[_0x468e('0x17')](function(_0x35e02d){var _0x1a1122=_[_0x468e('0x3a')](_0x35e02d,function(_0x3df8fc){return _0x3df8fc['getAssociatedQueues']();});return Promise[_0x468e('0x59')](_0x1a1122);})[_0x468e('0x17')](function(_0x26f50b){_0x2635a4=_[_0x468e('0x122')](_0x26f50b);var _0x4e1e0f=_[_0x468e('0x3a')](_0x2635a4,function(_0x42efc1){return _0x42efc1[_0x468e('0x123')](_0x2fd243['id'],{'transaction':_0x472988});});return Promise[_0x468e('0x59')](_0x4e1e0f);})[_0x468e('0x17')](function(){if(!_0x2fd243[_0x468e('0xa8')])return;var _0x2ac227=_[_0x468e('0x38')](_0x2635a4,function(_0x379e00){return _0x379e00[_0x468e('0x124')]('channel')==='Voice';});var _0x21a179=_[_0x468e('0x3a')](_0x2ac227,function(_0x4d96ac){return db[_0x468e('0xb9')][_0x468e('0xba')]({'membername':_0x2fd243[_0x468e('0x3d')],'UserId':_0x2fd243['id'],'queue_name':_0x4d96ac[_0x468e('0x3d')],'VoiceQueueId':_0x4d96ac['id'],'interface':_[_0x468e('0x73')](_0x2fd243[_0x468e('0xb6')])?util[_0x468e('0xfd')](_0x468e('0xb7'),_0x2fd243[_0x468e('0x3d')]):_0x2fd243[_0x468e('0xb6')],'paused':_0x2fd243[_0x468e('0xaa')]||![],'penalty':_0x2fd243[_0x468e('0xb0')]},{'transaction':_0x472988});});return Promise[_0x468e('0x59')](_0x21a179);})[_0x468e('0x17')](function(){return db[_0x468e('0x125')][_0x468e('0x4f')]({'where':{'teamId':{'$in':_0xa4fc38}}});})[_0x468e('0x17')](function(_0x11b7d5){var _0x2bf530=_[_0x468e('0x3a')](_0x11b7d5,function(_0x3993a2){return db['UserVoicePrefix'][_0x468e('0x87')]({'UserId':_0x2fd243['id'],'VoicePrefixId':_0x3993a2[_0x468e('0x126')]},{'transaction':_0x472988});});return Promise[_0x468e('0x59')](_0x2bf530);});});})[_0x468e('0x17')](function(){for(var _0x551bf5=0x0;_0x551bf5<_0x2635a4[_0x468e('0x52')];_0x551bf5++){var _0x467be6=_0x2635a4[_0x551bf5]['getDataValue'](_0x468e('0xbc'));var _0x55cbeb=_0x467be6+_0x468e('0xbf');socket[_0x468e('0x2c')](_0x468e('0x33')+_0x467be6+_0x468e('0xb3'),{'UserId':_0x22c818,['queueField']:_0x2635a4[_0x551bf5]['id']});}})['then'](respondWithStatusCode(_0x35bcbe,null))['catch'](APIHandleError(_0x35bcbe));};exports[_0x468e('0x127')]=function(_0x2defc4,_0x136b22){var _0x5caa42=_0x2defc4['params']['id'];var _0x1e6956=null;if(_0x2defc4[_0x468e('0x49')][_0x468e('0x6c')]){_0x1e6956=_['isArray'](_0x2defc4[_0x468e('0x49')][_0x468e('0x6c')])?_0x2defc4[_0x468e('0x49')][_0x468e('0x6c')]:[_0x2defc4['query'][_0x468e('0x6c')]];}var _0x26cf34=[];return Promise[_0x468e('0x110')]()['then'](function(){if(!_0x1e6956)throw new APIBadRequestError(_0x468e('0x128'));})[_0x468e('0x17')](function(){return db[_0x468e('0x48')]['findOne']({'where':{'id':_0x5caa42}});})['then'](function(_0x3c5eb8){if(!_0x3c5eb8)throw new APINotFoundError(util[_0x468e('0xfd')](_0x468e('0x121'),_0x2defc4[_0x468e('0x6b')]['id']));return db['sequelize']['transaction'](function(_0x25f526){return _0x3c5eb8[_0x468e('0x127')](_0x1e6956,{'transaction':_0x25f526})['then'](function(){return db['Team'][_0x468e('0x4f')]({'where':{'id':{'$in':_0x1e6956}}});})[_0x468e('0x17')](function(_0x37f4f3){var _0x27031c=_[_0x468e('0x3a')](_0x37f4f3,function(_0x1c1f7c){return _0x1c1f7c['getAssociatedQueues']();});return Promise[_0x468e('0x59')](_0x27031c);})['then'](function(_0x134865){_0x26cf34=_[_0x468e('0x122')](_0x134865);var _0x58c943=_[_0x468e('0x3a')](_0x26cf34,function(_0x2b5969){return _0x2b5969[_0x468e('0x129')](_0x3c5eb8['id'],{'transaction':_0x25f526});});return Promise[_0x468e('0x59')](_0x58c943);})['then'](function(){if(!_0x3c5eb8['online'])return;var _0x58259c=_[_0x468e('0x38')](_0x26cf34,function(_0x49898d){return _0x49898d['getDataValue']('channel')===_0x468e('0x12a');});var _0x4077ce=_[_0x468e('0x3a')](_0x58259c,function(_0x35fb4b){return db['UserVoiceQueueRt'][_0x468e('0x2e')]({'where':{'VoiceQueueId':_0x35fb4b['id'],'UserId':_0x3c5eb8['id']},'transaction':_0x25f526});});return Promise[_0x468e('0x59')](_0x4077ce);})['then'](function(){return db[_0x468e('0x125')][_0x468e('0x4f')]({'where':{'teamId':{'$in':_0x1e6956}}});})[_0x468e('0x17')](function(_0x5a5ce3){var _0x4a7596=_[_0x468e('0x3a')](_0x5a5ce3,function(_0x46bef1){return db[_0x468e('0x12b')][_0x468e('0x2e')]({'where':{'UserId':_0x3c5eb8['id'],'VoicePrefixId':_0x46bef1[_0x468e('0x126')]}},{'transaction':_0x25f526});});return Promise['all'](_0x4a7596);});});})[_0x468e('0x17')](function(){for(var _0x32697c=0x0;_0x32697c<_0x26cf34[_0x468e('0x52')];_0x32697c++){var _0x1c2d4a=_0x26cf34[_0x32697c][_0x468e('0x124')](_0x468e('0xbc'));var _0x2d7eb8=_0x1c2d4a+_0x468e('0xbf');socket['emit']('user'+_0x1c2d4a+_0x468e('0xc0'),{'UserId':_0x5caa42,['queueField']:_0x26cf34[_0x32697c]['id']});}})[_0x468e('0x17')](respondWithStatusCode(_0x136b22,null))[_0x468e('0x5a')](APIHandleError(_0x136b22));};exports['getLists']=function(_0x525f16,_0x338047){var _0x10bf21={};var _0x124c00={};var _0x4477a9;var _0x461251;return db['User'][_0x468e('0xa0')]({'where':{'id':_0x525f16['params']['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x338047,null))[_0x468e('0x17')](function(_0x2daeed){if(_0x2daeed){_0x4477a9=_0x2daeed;_0x124c00[_0x468e('0x5c')]=_[_0x468e('0x5f')](db[_0x468e('0xde')][_0x468e('0x5e')]);_0x124c00[_0x468e('0x49')]=_[_0x468e('0x5f')](_0x525f16['query']);_0x124c00[_0x468e('0x60')]=_['intersection'](_0x124c00[_0x468e('0x5c')],_0x124c00[_0x468e('0x49')]);_0x10bf21[_0x468e('0x4e')]=_[_0x468e('0x61')](_0x124c00[_0x468e('0x5c')],qs[_0x468e('0x62')](_0x525f16[_0x468e('0x49')]['fields']));_0x10bf21[_0x468e('0x4e')]=_0x10bf21[_0x468e('0x4e')][_0x468e('0x52')]?_0x10bf21[_0x468e('0x4e')]:_0x124c00[_0x468e('0x5c')];_0x10bf21['order']=qs[_0x468e('0xda')](_0x525f16[_0x468e('0x49')][_0x468e('0xda')]);_0x10bf21[_0x468e('0x47')]=qs['filters'](_[_0x468e('0xdb')](_0x525f16['query'],_0x124c00['filters']));if(_0x525f16[_0x468e('0x49')][_0x468e('0x38')]){_0x10bf21[_0x468e('0x47')]=_[_0x468e('0x64')](_0x10bf21[_0x468e('0x47')],{'$or':_[_0x468e('0x3a')](_0x10bf21[_0x468e('0x4e')],function(_0x5d40fb){var _0x34f5d={};_0x34f5d[_0x5d40fb]={'$like':'%'+_0x525f16[_0x468e('0x49')][_0x468e('0x38')]+'%'};return _0x34f5d;})});}_0x10bf21=_[_0x468e('0x64')]({},_0x10bf21,_0x525f16[_0x468e('0xdc')]);return _0x4477a9[_0x468e('0x12c')](_0x10bf21);}})['then'](function(_0xdcd0f7){if(_0xdcd0f7){_0x461251=_0xdcd0f7[_0x468e('0x52')];if(!_0x525f16['query'][_0x468e('0xdd')](_0x468e('0xe3'))){_0x10bf21[_0x468e('0x27')]=qs[_0x468e('0x27')](_0x525f16[_0x468e('0x49')][_0x468e('0x27')]);_0x10bf21[_0x468e('0x25')]=qs[_0x468e('0x25')](_0x525f16['query']['offset']);}return _0x4477a9[_0x468e('0x12c')](_0x10bf21);}})[_0x468e('0x17')](function(_0x57316c){if(_0x57316c){return _0x57316c?{'count':_0x461251,'rows':_0x57316c}:null;}})[_0x468e('0x17')](respondWithResult(_0x338047,null))[_0x468e('0x5a')](handleError(_0x338047,null));};exports[_0x468e('0x12d')]=function(_0x22e088,_0x15cba3){var _0x4145ac={};var _0x40eebf={};var _0x239ca7;return db[_0x468e('0x48')]['findOne']({'where':{'id':_0x22e088[_0x468e('0x6b')]['id']}})['then'](handleEntityNotFound(_0x15cba3,null))[_0x468e('0x17')](function(_0x4058f8){if(_0x4058f8){_0x239ca7=_0x4058f8;_0x40eebf['model']=_['keys'](db[_0x468e('0x48')]['rawAttributes']);_0x40eebf[_0x468e('0x49')]=_['keys'](_0x22e088[_0x468e('0x49')]);_0x40eebf[_0x468e('0x60')]=_['intersection'](_0x40eebf['model'],_0x40eebf['query']);_0x4145ac['attributes']=_['intersection'](_0x40eebf[_0x468e('0x5c')],qs['fields'](_0x22e088['query'][_0x468e('0x62')]));_0x4145ac[_0x468e('0x4e')]=_0x4145ac['attributes'][_0x468e('0x52')]?_0x4145ac[_0x468e('0x4e')]:_0x40eebf[_0x468e('0x5c')];_0x4145ac[_0x468e('0xd9')]=qs[_0x468e('0xda')](_0x22e088[_0x468e('0x49')][_0x468e('0xda')]);_0x4145ac[_0x468e('0x47')]=qs[_0x468e('0x60')](_[_0x468e('0xdb')](_0x22e088[_0x468e('0x49')],_0x40eebf[_0x468e('0x60')]));if(_0x22e088['query'][_0x468e('0x38')]){_0x4145ac[_0x468e('0x47')]=_[_0x468e('0x64')](_0x4145ac[_0x468e('0x47')],{'$or':_[_0x468e('0x3a')](_0x4145ac[_0x468e('0x4e')],function(_0x204830){var _0x2465c7={};_0x2465c7[_0x204830]={'$like':'%'+_0x22e088[_0x468e('0x49')][_0x468e('0x38')]+'%'};return _0x2465c7;})});}_0x4145ac['model']=db[_0x468e('0x48')];_0x4145ac['as']=_0x468e('0x34');_0x4145ac=_[_0x468e('0x64')]({},_0x4145ac,_0x22e088['options']);return _0x239ca7[_0x468e('0x105')]({'include':[_0x4145ac]});}})[_0x468e('0x17')](function(_0x2aee1f){if(_0x2aee1f){var _0x232b2a={},_0x2dbd94=[];for(var _0x2f06e1=0x0;_0x2f06e1<_0x2aee1f[_0x468e('0x52')];_0x2f06e1+=0x1){for(var _0x36ec78=0x0,_0x18739b;_0x36ec78<_0x2aee1f[_0x2f06e1]['Agents'][_0x468e('0x52')];_0x36ec78+=0x1){_0x18739b=_0x2aee1f[_0x2f06e1][_0x468e('0x34')][_0x36ec78]['get']({'plain':!![]});_0x232b2a[_0x18739b['id']]=_0x18739b;}}_0x232b2a=_['values'](_0x232b2a);for(var _0x536900=qs[_0x468e('0x25')](_0x22e088[_0x468e('0x49')]['offset']);_0x536900<_0x232b2a['length']&&_0x2dbd94[_0x468e('0x52')]<qs[_0x468e('0x27')](_0x22e088[_0x468e('0x49')]['limit']);_0x536900+=0x1){if(_0x232b2a[_0x536900]){_0x2dbd94[_0x468e('0x53')](_0x232b2a[_0x536900]);}}return{'count':_0x232b2a[_0x468e('0x52')],'rows':_0x2dbd94};}})['then'](respondWithResult(_0x15cba3,null))[_0x468e('0x5a')](handleError(_0x15cba3,null));};exports['destroy']=function(_0x52b9f1,_0x1efaa4){if(_0x52b9f1[_0x468e('0x33')]['id']==_0x52b9f1[_0x468e('0x6b')]['id']){return _0x1efaa4[_0x468e('0x23')](0x1f4)[_0x468e('0x12e')]({'message':_0x468e('0x12f')});}return db[_0x468e('0x48')]['find']({'where':{'id':_0x52b9f1[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x1efaa4,null))['then'](removeEntity(_0x1efaa4,null))[_0x468e('0x5a')](handleError(_0x1efaa4,null));};exports['addChatInteractions']=function(_0x48765a,_0x32c0c5){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x48765a[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x32c0c5,null))[_0x468e('0x17')](function(_0x233a5a){if(_0x233a5a){return _0x233a5a[_0x468e('0x130')](_0x48765a['body'][_0x468e('0x6c')],_[_0x468e('0x6d')](_0x48765a[_0x468e('0x68')],['ids','id'])||{})[_0x468e('0xb1')](function(){for(var _0x551af9=0x0;_0x551af9<_0x48765a[_0x468e('0x68')][_0x468e('0x6c')][_0x468e('0x52')];_0x551af9+=0x1){socket['emit'](_0x468e('0x131'),{'ChatInteractionId':Number(_0x48765a['body'][_0x468e('0x6c')][_0x551af9]),'UserId':Number(_0x48765a[_0x468e('0x6b')]['id'])});}return _0x48765a['body'][_0x468e('0x6c')];});}})[_0x468e('0x17')](respondWithResult(_0x32c0c5,null))[_0x468e('0x5a')](handleError(_0x32c0c5,null));};exports[_0x468e('0x132')]=function(_0x2c3781,_0x4590a3){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x2c3781[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x4590a3,null))['then'](function(_0x5b1c80){if(_0x5b1c80){return _0x5b1c80['removeChatInteractions'](_0x2c3781['query'][_0x468e('0x6c')])[_0x468e('0x17')](function(){if(_[_0x468e('0xbe')](_0x2c3781[_0x468e('0x49')][_0x468e('0x6c')])){for(var _0x519b60=0x0;_0x519b60<_0x2c3781[_0x468e('0x49')][_0x468e('0x6c')][_0x468e('0x52')];_0x519b60+=0x1){socket['emit'](_0x468e('0x133'),{'ChatInteractionId':Number(_0x2c3781[_0x468e('0x49')][_0x468e('0x6c')][_0x519b60]),'UserId':Number(_0x2c3781[_0x468e('0x6b')]['id'])});}}else{socket[_0x468e('0x2c')](_0x468e('0x133'),{'ChatInteractionId':Number(_0x2c3781[_0x468e('0x49')][_0x468e('0x6c')]),'UserId':Number(_0x2c3781[_0x468e('0x6b')]['id'])});}});}})[_0x468e('0x17')](respondWithStatusCode(_0x4590a3,null))[_0x468e('0x5a')](handleError(_0x4590a3,null));};exports['addMailInteractions']=function(_0x129803,_0x561405){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x129803['params']['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x561405,null))[_0x468e('0x17')](function(_0x234670){if(_0x234670){return _0x234670[_0x468e('0x134')](_0x129803[_0x468e('0x68')][_0x468e('0x6c')],_[_0x468e('0x6d')](_0x129803['body'],[_0x468e('0x6c'),'id'])||{})[_0x468e('0xb1')](function(){for(var _0x4171a8=0x0;_0x4171a8<_0x129803[_0x468e('0x68')]['ids'][_0x468e('0x52')];_0x4171a8+=0x1){socket[_0x468e('0x2c')]('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x129803[_0x468e('0x68')][_0x468e('0x6c')][_0x4171a8]),'UserId':Number(_0x129803[_0x468e('0x6b')]['id'])});}return _0x129803[_0x468e('0x68')][_0x468e('0x6c')];});}})[_0x468e('0x17')](respondWithResult(_0x561405,null))[_0x468e('0x5a')](handleError(_0x561405,null));};exports[_0x468e('0x135')]=function(_0x18636f,_0x3244cc){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x18636f['params']['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x3244cc,null))[_0x468e('0x17')](function(_0x22afb8){if(_0x22afb8){return _0x22afb8['removeMailInteractions'](_0x18636f['query'][_0x468e('0x6c')])[_0x468e('0x17')](function(){if(_[_0x468e('0xbe')](_0x18636f[_0x468e('0x49')]['ids'])){for(var _0x1fa03c=0x0;_0x1fa03c<_0x18636f[_0x468e('0x49')][_0x468e('0x6c')]['length'];_0x1fa03c+=0x1){socket[_0x468e('0x2c')](_0x468e('0x136'),{'MailInteractionId':Number(_0x18636f[_0x468e('0x49')][_0x468e('0x6c')][_0x1fa03c]),'UserId':Number(_0x18636f[_0x468e('0x6b')]['id'])});}}else{socket[_0x468e('0x2c')](_0x468e('0x136'),{'MailInteractionId':Number(_0x18636f[_0x468e('0x49')][_0x468e('0x6c')]),'UserId':Number(_0x18636f[_0x468e('0x6b')]['id'])});}});}})[_0x468e('0x17')](respondWithStatusCode(_0x3244cc,null))[_0x468e('0x5a')](handleError(_0x3244cc,null));};exports[_0x468e('0x137')]=function(_0x2c96bf,_0x434c49){return db['User']['find']({'where':{'id':_0x2c96bf['params']['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x434c49,null))[_0x468e('0x17')](function(_0xd9e000){if(_0xd9e000){return _0xd9e000['addFaxInteractions'](_0x2c96bf[_0x468e('0x68')][_0x468e('0x6c')],_[_0x468e('0x6d')](_0x2c96bf['body'],[_0x468e('0x6c'),'id'])||{})[_0x468e('0xb1')](function(){for(var _0x276898=0x0;_0x276898<_0x2c96bf[_0x468e('0x68')][_0x468e('0x6c')][_0x468e('0x52')];_0x276898+=0x1){socket[_0x468e('0x2c')](_0x468e('0x138'),{'FaxInteractionId':Number(_0x2c96bf[_0x468e('0x68')]['ids'][_0x276898]),'UserId':Number(_0x2c96bf[_0x468e('0x6b')]['id'])});}return _0x2c96bf[_0x468e('0x68')]['ids'];});}})[_0x468e('0x17')](respondWithResult(_0x434c49,null))['catch'](handleError(_0x434c49,null));};exports[_0x468e('0x139')]=function(_0x258d61,_0x56e584){return db['User'][_0x468e('0x65')]({'where':{'id':_0x258d61['params']['id']}})['then'](handleEntityNotFound(_0x56e584,null))[_0x468e('0x17')](function(_0x5ff79e){if(_0x5ff79e){return _0x5ff79e['removeFaxInteractions'](_0x258d61[_0x468e('0x49')][_0x468e('0x6c')])[_0x468e('0x17')](function(){if(_[_0x468e('0xbe')](_0x258d61[_0x468e('0x49')][_0x468e('0x6c')])){for(var _0x57bdef=0x0;_0x57bdef<_0x258d61[_0x468e('0x49')][_0x468e('0x6c')]['length'];_0x57bdef+=0x1){socket['emit'](_0x468e('0x13a'),{'FaxInteractionId':Number(_0x258d61[_0x468e('0x49')][_0x468e('0x6c')][_0x57bdef]),'UserId':Number(_0x258d61['params']['id'])});}}else{socket[_0x468e('0x2c')](_0x468e('0x13a'),{'FaxInteractionId':Number(_0x258d61[_0x468e('0x49')][_0x468e('0x6c')]),'UserId':Number(_0x258d61[_0x468e('0x6b')]['id'])});}});}})['then'](respondWithStatusCode(_0x56e584,null))[_0x468e('0x5a')](handleError(_0x56e584,null));};exports[_0x468e('0x13b')]=function(_0x10b23c,_0x118e38){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x10b23c[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x118e38,null))['then'](function(_0x311a5b){if(_0x311a5b){return _0x311a5b['addSmsInteractions'](_0x10b23c[_0x468e('0x68')][_0x468e('0x6c')],_[_0x468e('0x6d')](_0x10b23c[_0x468e('0x68')],[_0x468e('0x6c'),'id'])||{})[_0x468e('0xb1')](function(){for(var _0x2f1d30=0x0;_0x2f1d30<_0x10b23c[_0x468e('0x68')][_0x468e('0x6c')][_0x468e('0x52')];_0x2f1d30+=0x1){socket[_0x468e('0x2c')](_0x468e('0x13c'),{'SmsInteractionId':Number(_0x10b23c[_0x468e('0x68')][_0x468e('0x6c')][_0x2f1d30]),'UserId':Number(_0x10b23c['params']['id'])});}return _0x10b23c['body'][_0x468e('0x6c')];});}})[_0x468e('0x17')](respondWithResult(_0x118e38,null))[_0x468e('0x5a')](handleError(_0x118e38,null));};exports['removeSmsInteractions']=function(_0x135021,_0x4e6403){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x135021[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x4e6403,null))[_0x468e('0x17')](function(_0x5a5a44){if(_0x5a5a44){return _0x5a5a44[_0x468e('0x13d')](_0x135021[_0x468e('0x49')]['ids'])[_0x468e('0x17')](function(){if(_[_0x468e('0xbe')](_0x135021[_0x468e('0x49')][_0x468e('0x6c')])){for(var _0x522a17=0x0;_0x522a17<_0x135021['query'][_0x468e('0x6c')]['length'];_0x522a17+=0x1){socket[_0x468e('0x2c')](_0x468e('0x13e'),{'SmsInteractionId':Number(_0x135021[_0x468e('0x49')][_0x468e('0x6c')][_0x522a17]),'UserId':Number(_0x135021['params']['id'])});}}else{socket[_0x468e('0x2c')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x135021[_0x468e('0x49')][_0x468e('0x6c')]),'UserId':Number(_0x135021[_0x468e('0x6b')]['id'])});}});}})[_0x468e('0x17')](respondWithStatusCode(_0x4e6403,null))[_0x468e('0x5a')](handleError(_0x4e6403,null));};exports[_0x468e('0x13f')]=function(_0x2ba98e,_0x513cc2){return db[_0x468e('0x48')]['find']({'where':{'id':_0x2ba98e['params']['id']}})['then'](handleEntityNotFound(_0x513cc2,null))[_0x468e('0x17')](function(_0x22c22d){if(_0x22c22d){return _0x22c22d['addOpenchannelInteractions'](_0x2ba98e[_0x468e('0x68')][_0x468e('0x6c')],_[_0x468e('0x6d')](_0x2ba98e[_0x468e('0x68')],[_0x468e('0x6c'),'id'])||{})[_0x468e('0xb1')](function(){for(var _0x3ac583=0x0;_0x3ac583<_0x2ba98e[_0x468e('0x68')][_0x468e('0x6c')][_0x468e('0x52')];_0x3ac583+=0x1){socket[_0x468e('0x2c')](_0x468e('0x140'),{'OpenchannelInteractionId':Number(_0x2ba98e[_0x468e('0x68')][_0x468e('0x6c')][_0x3ac583]),'UserId':Number(_0x2ba98e[_0x468e('0x6b')]['id'])});}return _0x2ba98e[_0x468e('0x68')]['ids'];});}})[_0x468e('0x17')](respondWithResult(_0x513cc2,null))[_0x468e('0x5a')](handleError(_0x513cc2,null));};exports[_0x468e('0x141')]=function(_0x4ab5e7,_0x27b339){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x4ab5e7[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x27b339,null))[_0x468e('0x17')](function(_0x58986f){if(_0x58986f){return _0x58986f[_0x468e('0x141')](_0x4ab5e7[_0x468e('0x49')][_0x468e('0x6c')])[_0x468e('0x17')](function(){if(_['isArray'](_0x4ab5e7[_0x468e('0x49')][_0x468e('0x6c')])){for(var _0x1bf8cc=0x0;_0x1bf8cc<_0x4ab5e7[_0x468e('0x49')][_0x468e('0x6c')][_0x468e('0x52')];_0x1bf8cc+=0x1){socket[_0x468e('0x2c')](_0x468e('0x142'),{'OpenchannelInteractionId':Number(_0x4ab5e7[_0x468e('0x49')][_0x468e('0x6c')][_0x1bf8cc]),'UserId':Number(_0x4ab5e7[_0x468e('0x6b')]['id'])});}}else{socket['emit'](_0x468e('0x142'),{'OpenchannelInteractionId':Number(_0x4ab5e7[_0x468e('0x49')][_0x468e('0x6c')]),'UserId':Number(_0x4ab5e7[_0x468e('0x6b')]['id'])});}});}})[_0x468e('0x17')](respondWithStatusCode(_0x27b339,null))[_0x468e('0x5a')](handleError(_0x27b339,null));};exports[_0x468e('0x143')]=function(_0x15808b,_0x550f40){return db['User'][_0x468e('0x65')]({'where':{'id':_0x15808b[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x550f40,null))['then'](function(_0x10650c){if(_0x10650c){return _0x10650c[_0x468e('0x143')](_0x15808b['body'][_0x468e('0x6c')],_[_0x468e('0x6d')](_0x15808b[_0x468e('0x68')],[_0x468e('0x6c'),'id'])||{})[_0x468e('0xb1')](function(){for(var _0x6e0d66=0x0;_0x6e0d66<_0x15808b['body'][_0x468e('0x6c')][_0x468e('0x52')];_0x6e0d66+=0x1){socket[_0x468e('0x2c')]('user_has_whatsapp_interactions:save',{'WhatsappInteractionId':Number(_0x15808b[_0x468e('0x68')][_0x468e('0x6c')][_0x6e0d66]),'UserId':Number(_0x15808b[_0x468e('0x6b')]['id'])});}return _0x15808b[_0x468e('0x68')][_0x468e('0x6c')];});}})[_0x468e('0x17')](respondWithResult(_0x550f40,null))[_0x468e('0x5a')](handleError(_0x550f40,null));};exports[_0x468e('0x144')]=function(_0x26b7d2,_0x1f0c8f){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x26b7d2[_0x468e('0x6b')]['id']}})['then'](handleEntityNotFound(_0x1f0c8f,null))[_0x468e('0x17')](function(_0x1d41dc){if(_0x1d41dc){return _0x1d41dc[_0x468e('0x144')](_0x26b7d2[_0x468e('0x49')][_0x468e('0x6c')]);}})[_0x468e('0x17')](respondWithStatusCode(_0x1f0c8f,null))['catch'](handleError(_0x1f0c8f,null));};exports[_0x468e('0x145')]=function(_0x1b79ff,_0x583da8){var _0x4c64bd={};var _0x14a225={};var _0x2db1ba;var _0x1ecac6;return db[_0x468e('0x48')][_0x468e('0xa0')]({'where':{'id':_0x1b79ff[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x583da8,null))['then'](function(_0x515e86){if(_0x515e86){_0x2db1ba=_0x515e86;_0x14a225[_0x468e('0x5c')]=_['keys'](db[_0x468e('0x146')][_0x468e('0x5e')]);_0x14a225['query']=_[_0x468e('0x5f')](_0x1b79ff[_0x468e('0x49')]);_0x14a225[_0x468e('0x60')]=_[_0x468e('0x61')](_0x14a225[_0x468e('0x5c')],_0x14a225[_0x468e('0x49')]);_0x4c64bd[_0x468e('0x4e')]=_[_0x468e('0x61')](_0x14a225[_0x468e('0x5c')],qs[_0x468e('0x62')](_0x1b79ff[_0x468e('0x49')][_0x468e('0x62')]));_0x4c64bd[_0x468e('0x4e')]=_0x4c64bd['attributes'][_0x468e('0x52')]?_0x4c64bd[_0x468e('0x4e')]:_0x14a225[_0x468e('0x5c')];_0x4c64bd[_0x468e('0xd9')]=qs['sort'](_0x1b79ff[_0x468e('0x49')][_0x468e('0xda')]);_0x4c64bd[_0x468e('0x47')]=qs['filters'](_[_0x468e('0xdb')](_0x1b79ff[_0x468e('0x49')],_0x14a225['filters']));if(_0x1b79ff[_0x468e('0x49')][_0x468e('0x38')]){_0x4c64bd[_0x468e('0x47')]=_[_0x468e('0x64')](_0x4c64bd[_0x468e('0x47')],{'$or':_[_0x468e('0x3a')](_0x4c64bd[_0x468e('0x4e')],function(_0x2555f8){var _0x94f5bd={};_0x94f5bd[_0x2555f8]={'$like':'%'+_0x1b79ff[_0x468e('0x49')][_0x468e('0x38')]+'%'};return _0x94f5bd;})});}_0x4c64bd=_[_0x468e('0x64')]({},_0x4c64bd,_0x1b79ff[_0x468e('0xdc')]);return _0x2db1ba[_0x468e('0x145')](_0x4c64bd);}})[_0x468e('0x17')](function(_0x552ea1){if(_0x552ea1){_0x1ecac6=_0x552ea1[_0x468e('0x52')];if(!_0x1b79ff[_0x468e('0x49')][_0x468e('0xdd')](_0x468e('0xe3'))){_0x4c64bd[_0x468e('0x27')]=qs[_0x468e('0x27')](_0x1b79ff[_0x468e('0x49')]['limit']);_0x4c64bd[_0x468e('0x25')]=qs[_0x468e('0x25')](_0x1b79ff[_0x468e('0x49')][_0x468e('0x25')]);}return _0x2db1ba[_0x468e('0x145')](_0x4c64bd);}})[_0x468e('0x17')](function(_0x5716b3){if(_0x5716b3){return _0x5716b3?{'count':_0x1ecac6,'rows':_0x5716b3}:null;}})[_0x468e('0x17')](respondWithResult(_0x583da8,null))[_0x468e('0x5a')](handleError(_0x583da8,null));};exports[_0x468e('0x147')]=function(_0x53aab9,_0x371643){var _0x94d6d7={};var _0x185edf={};var _0x5808b0;var _0x5ae578;return db['User'][_0x468e('0xa0')]({'where':{'id':_0x53aab9[_0x468e('0x6b')]['id']}})['then'](handleEntityNotFound(_0x371643,null))['then'](function(_0x1ca454){if(_0x1ca454){_0x5808b0=_0x1ca454;_0x185edf[_0x468e('0x5c')]=_['keys'](db['FaxAccount'][_0x468e('0x5e')]);_0x185edf[_0x468e('0x49')]=_['keys'](_0x53aab9['query']);_0x185edf['filters']=_['intersection'](_0x185edf[_0x468e('0x5c')],_0x185edf['query']);_0x94d6d7[_0x468e('0x4e')]=_[_0x468e('0x61')](_0x185edf[_0x468e('0x5c')],qs['fields'](_0x53aab9[_0x468e('0x49')]['fields']));_0x94d6d7['attributes']=_0x94d6d7[_0x468e('0x4e')][_0x468e('0x52')]?_0x94d6d7['attributes']:_0x185edf[_0x468e('0x5c')];_0x94d6d7[_0x468e('0xd9')]=qs[_0x468e('0xda')](_0x53aab9[_0x468e('0x49')][_0x468e('0xda')]);_0x94d6d7[_0x468e('0x47')]=qs[_0x468e('0x60')](_[_0x468e('0xdb')](_0x53aab9[_0x468e('0x49')],_0x185edf[_0x468e('0x60')]));if(_0x53aab9[_0x468e('0x49')][_0x468e('0x38')]){_0x94d6d7['where']=_['merge'](_0x94d6d7['where'],{'$or':_[_0x468e('0x3a')](_0x94d6d7[_0x468e('0x4e')],function(_0x3c283d){var _0x1cddf4={};_0x1cddf4[_0x3c283d]={'$like':'%'+_0x53aab9[_0x468e('0x49')][_0x468e('0x38')]+'%'};return _0x1cddf4;})});}_0x94d6d7=_[_0x468e('0x64')]({},_0x94d6d7,_0x53aab9[_0x468e('0xdc')]);return _0x5808b0[_0x468e('0x147')](_0x94d6d7);}})[_0x468e('0x17')](function(_0x555314){if(_0x555314){_0x5ae578=_0x555314[_0x468e('0x52')];if(!_0x53aab9[_0x468e('0x49')]['hasOwnProperty'](_0x468e('0xe3'))){_0x94d6d7[_0x468e('0x27')]=qs['limit'](_0x53aab9[_0x468e('0x49')][_0x468e('0x27')]);_0x94d6d7[_0x468e('0x25')]=qs[_0x468e('0x25')](_0x53aab9[_0x468e('0x49')][_0x468e('0x25')]);}return _0x5808b0[_0x468e('0x147')](_0x94d6d7);}})[_0x468e('0x17')](function(_0x2822c0){if(_0x2822c0){return _0x2822c0?{'count':_0x5ae578,'rows':_0x2822c0}:null;}})['then'](respondWithResult(_0x371643,null))[_0x468e('0x5a')](handleError(_0x371643,null));};exports[_0x468e('0x148')]=function(_0x49d288,_0x1800f2){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x49d288[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x1800f2,null))[_0x468e('0x17')](function(_0x2e3669){if(_0x2e3669){return _0x2e3669[_0x468e('0x148')](_0x49d288[_0x468e('0x68')][_0x468e('0x6c')],_[_0x468e('0x6d')](_0x49d288[_0x468e('0x68')],[_0x468e('0x6c'),'id'])||{});}})['then'](respondWithResult(_0x1800f2,null))[_0x468e('0x5a')](handleError(_0x1800f2,null));};exports[_0x468e('0x149')]=function(_0x59952b,_0x9114e7){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x59952b[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x9114e7,null))[_0x468e('0x17')](function(_0x3fccc6){if(_0x3fccc6){return _0x3fccc6['removeFaxAccounts'](_0x59952b[_0x468e('0x49')]['ids']);}})['then'](respondWithStatusCode(_0x9114e7,null))['catch'](handleError(_0x9114e7,null));};exports['getMailAccounts']=function(_0xb1015a,_0x416c41){var _0xb7b40d={};var _0xb5165c={};var _0x30dcee;var _0x14ea0c;return db[_0x468e('0x48')][_0x468e('0xa0')]({'where':{'id':_0xb1015a[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x416c41,null))[_0x468e('0x17')](function(_0x485fcd){if(_0x485fcd){_0x30dcee=_0x485fcd;_0xb5165c[_0x468e('0x5c')]=_[_0x468e('0x5f')](db[_0x468e('0x14a')][_0x468e('0x5e')]);_0xb5165c['query']=_[_0x468e('0x5f')](_0xb1015a[_0x468e('0x49')]);_0xb5165c[_0x468e('0x60')]=_[_0x468e('0x61')](_0xb5165c[_0x468e('0x5c')],_0xb5165c[_0x468e('0x49')]);_0xb7b40d['attributes']=_[_0x468e('0x61')](_0xb5165c[_0x468e('0x5c')],qs['fields'](_0xb1015a['query']['fields']));_0xb7b40d['attributes']=_0xb7b40d[_0x468e('0x4e')][_0x468e('0x52')]?_0xb7b40d[_0x468e('0x4e')]:_0xb5165c[_0x468e('0x5c')];_0xb7b40d['order']=qs[_0x468e('0xda')](_0xb1015a['query'][_0x468e('0xda')]);_0xb7b40d[_0x468e('0x47')]=qs[_0x468e('0x60')](_[_0x468e('0xdb')](_0xb1015a[_0x468e('0x49')],_0xb5165c[_0x468e('0x60')]));if(_0xb1015a['query'][_0x468e('0x38')]){_0xb7b40d['where']=_[_0x468e('0x64')](_0xb7b40d['where'],{'$or':_['map'](_0xb7b40d[_0x468e('0x4e')],function(_0x1183a1){var _0x3390eb={};_0x3390eb[_0x1183a1]={'$like':'%'+_0xb1015a[_0x468e('0x49')][_0x468e('0x38')]+'%'};return _0x3390eb;})});}_0xb7b40d=_[_0x468e('0x64')]({},_0xb7b40d,_0xb1015a['options']);return _0x30dcee[_0x468e('0x14b')](_0xb7b40d);}})[_0x468e('0x17')](function(_0x2c9f40){if(_0x2c9f40){_0x14ea0c=_0x2c9f40['length'];if(!_0xb1015a['query']['hasOwnProperty']('nolimit')){_0xb7b40d[_0x468e('0x27')]=qs[_0x468e('0x27')](_0xb1015a['query']['limit']);_0xb7b40d[_0x468e('0x25')]=qs[_0x468e('0x25')](_0xb1015a[_0x468e('0x49')]['offset']);}return _0x30dcee[_0x468e('0x14b')](_0xb7b40d);}})[_0x468e('0x17')](function(_0x301f2c){if(_0x301f2c){return _0x301f2c?{'count':_0x14ea0c,'rows':_0x301f2c}:null;}})[_0x468e('0x17')](respondWithResult(_0x416c41,null))[_0x468e('0x5a')](handleError(_0x416c41,null));};exports[_0x468e('0x14c')]=function(_0x5f3be5,_0x57538c){return db['User'][_0x468e('0x65')]({'where':{'id':_0x5f3be5[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x57538c,null))[_0x468e('0x17')](function(_0x39899b){if(_0x39899b){return _0x39899b[_0x468e('0x14c')](_0x5f3be5[_0x468e('0x68')][_0x468e('0x6c')],_[_0x468e('0x6d')](_0x5f3be5[_0x468e('0x68')],[_0x468e('0x6c'),'id'])||{});}})[_0x468e('0x17')](respondWithResult(_0x57538c,null))[_0x468e('0x5a')](handleError(_0x57538c,null));};exports[_0x468e('0x14d')]=function(_0xdc7fe6,_0x4410f7){return db['User'][_0x468e('0x65')]({'where':{'id':_0xdc7fe6['params']['id']}})['then'](handleEntityNotFound(_0x4410f7,null))[_0x468e('0x17')](function(_0xb65440){if(_0xb65440){return _0xb65440[_0x468e('0x14d')](_0xdc7fe6[_0x468e('0x49')][_0x468e('0x6c')]);}})['then'](respondWithStatusCode(_0x4410f7,null))[_0x468e('0x5a')](handleError(_0x4410f7,null));};exports[_0x468e('0x14e')]=function(_0x22943c,_0x2663b0){var _0x161025={};var _0x16c9be={};var _0x3e3446;var _0x45f379;return db[_0x468e('0x48')]['findOne']({'where':{'id':_0x22943c[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x2663b0,null))['then'](function(_0x24daec){if(_0x24daec){_0x3e3446=_0x24daec;_0x16c9be['model']=_[_0x468e('0x5f')](db[_0x468e('0x14f')]['rawAttributes']);_0x16c9be['query']=_[_0x468e('0x5f')](_0x22943c['query']);_0x16c9be[_0x468e('0x60')]=_[_0x468e('0x61')](_0x16c9be[_0x468e('0x5c')],_0x16c9be[_0x468e('0x49')]);_0x161025[_0x468e('0x4e')]=_[_0x468e('0x61')](_0x16c9be['model'],qs[_0x468e('0x62')](_0x22943c[_0x468e('0x49')]['fields']));_0x161025['attributes']=_0x161025['attributes'][_0x468e('0x52')]?_0x161025[_0x468e('0x4e')]:_0x16c9be[_0x468e('0x5c')];_0x161025['order']=qs[_0x468e('0xda')](_0x22943c[_0x468e('0x49')][_0x468e('0xda')]);_0x161025['where']=qs['filters'](_[_0x468e('0xdb')](_0x22943c[_0x468e('0x49')],_0x16c9be[_0x468e('0x60')]));if(_0x22943c[_0x468e('0x49')]['filter']){_0x161025['where']=_[_0x468e('0x64')](_0x161025[_0x468e('0x47')],{'$or':_[_0x468e('0x3a')](_0x161025['attributes'],function(_0x2a850b){var _0x2b9b82={};_0x2b9b82[_0x2a850b]={'$like':'%'+_0x22943c['query'][_0x468e('0x38')]+'%'};return _0x2b9b82;})});}_0x161025=_[_0x468e('0x64')]({},_0x161025,_0x22943c[_0x468e('0xdc')]);return _0x3e3446[_0x468e('0x14e')](_0x161025);}})[_0x468e('0x17')](function(_0x30cfcd){if(_0x30cfcd){_0x45f379=_0x30cfcd['length'];if(!_0x22943c[_0x468e('0x49')][_0x468e('0xdd')](_0x468e('0xe3'))){_0x161025[_0x468e('0x27')]=qs['limit'](_0x22943c[_0x468e('0x49')][_0x468e('0x27')]);_0x161025['offset']=qs['offset'](_0x22943c[_0x468e('0x49')]['offset']);}return _0x3e3446[_0x468e('0x14e')](_0x161025);}})[_0x468e('0x17')](function(_0x43a069){if(_0x43a069){return _0x43a069?{'count':_0x45f379,'rows':_0x43a069}:null;}})[_0x468e('0x17')](respondWithResult(_0x2663b0,null))[_0x468e('0x5a')](handleError(_0x2663b0,null));};exports['addOpenchannelAccounts']=function(_0x3287e0,_0x5aae04){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x3287e0['params']['id']}})['then'](handleEntityNotFound(_0x5aae04,null))[_0x468e('0x17')](function(_0x11a6fd){if(_0x11a6fd){return _0x11a6fd['addOpenchannelAccounts'](_0x3287e0[_0x468e('0x68')][_0x468e('0x6c')],_[_0x468e('0x6d')](_0x3287e0[_0x468e('0x68')],[_0x468e('0x6c'),'id'])||{});}})[_0x468e('0x17')](respondWithResult(_0x5aae04,null))[_0x468e('0x5a')](handleError(_0x5aae04,null));};exports[_0x468e('0x150')]=function(_0x42b6f2,_0x962d5){return db['User'][_0x468e('0x65')]({'where':{'id':_0x42b6f2[_0x468e('0x6b')]['id']}})['then'](handleEntityNotFound(_0x962d5,null))[_0x468e('0x17')](function(_0x359f54){if(_0x359f54){return _0x359f54[_0x468e('0x150')](_0x42b6f2[_0x468e('0x49')][_0x468e('0x6c')]);}})[_0x468e('0x17')](respondWithStatusCode(_0x962d5,null))[_0x468e('0x5a')](handleError(_0x962d5,null));};exports['getSmsAccounts']=function(_0x57f426,_0x5d6689){var _0x2f562d={};var _0x44f33c={};var _0xde3ad5;var _0x244ff2;return db[_0x468e('0x48')][_0x468e('0xa0')]({'where':{'id':_0x57f426[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x5d6689,null))['then'](function(_0x2800dc){if(_0x2800dc){_0xde3ad5=_0x2800dc;_0x44f33c['model']=_[_0x468e('0x5f')](db[_0x468e('0x151')][_0x468e('0x5e')]);_0x44f33c['query']=_[_0x468e('0x5f')](_0x57f426[_0x468e('0x49')]);_0x44f33c[_0x468e('0x60')]=_[_0x468e('0x61')](_0x44f33c[_0x468e('0x5c')],_0x44f33c[_0x468e('0x49')]);_0x2f562d[_0x468e('0x4e')]=_[_0x468e('0x61')](_0x44f33c['model'],qs['fields'](_0x57f426['query']['fields']));_0x2f562d[_0x468e('0x4e')]=_0x2f562d['attributes'][_0x468e('0x52')]?_0x2f562d[_0x468e('0x4e')]:_0x44f33c['model'];_0x2f562d[_0x468e('0xd9')]=qs[_0x468e('0xda')](_0x57f426[_0x468e('0x49')]['sort']);_0x2f562d['where']=qs['filters'](_[_0x468e('0xdb')](_0x57f426[_0x468e('0x49')],_0x44f33c['filters']));if(_0x57f426[_0x468e('0x49')]['filter']){_0x2f562d['where']=_['merge'](_0x2f562d[_0x468e('0x47')],{'$or':_[_0x468e('0x3a')](_0x2f562d[_0x468e('0x4e')],function(_0x543fbd){var _0x44f402={};_0x44f402[_0x543fbd]={'$like':'%'+_0x57f426[_0x468e('0x49')][_0x468e('0x38')]+'%'};return _0x44f402;})});}_0x2f562d=_[_0x468e('0x64')]({},_0x2f562d,_0x57f426['options']);return _0xde3ad5[_0x468e('0x152')](_0x2f562d);}})['then'](function(_0x4e4d23){if(_0x4e4d23){_0x244ff2=_0x4e4d23[_0x468e('0x52')];if(!_0x57f426[_0x468e('0x49')][_0x468e('0xdd')]('nolimit')){_0x2f562d['limit']=qs[_0x468e('0x27')](_0x57f426[_0x468e('0x49')][_0x468e('0x27')]);_0x2f562d[_0x468e('0x25')]=qs['offset'](_0x57f426[_0x468e('0x49')][_0x468e('0x25')]);}return _0xde3ad5[_0x468e('0x152')](_0x2f562d);}})[_0x468e('0x17')](function(_0x49347a){if(_0x49347a){return _0x49347a?{'count':_0x244ff2,'rows':_0x49347a}:null;}})[_0x468e('0x17')](respondWithResult(_0x5d6689,null))[_0x468e('0x5a')](handleError(_0x5d6689,null));};exports[_0x468e('0x153')]=function(_0x6e7c32,_0xd48e9){return db[_0x468e('0x48')]['find']({'where':{'id':_0x6e7c32[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0xd48e9,null))[_0x468e('0x17')](function(_0x22a598){if(_0x22a598){return _0x22a598[_0x468e('0x153')](_0x6e7c32[_0x468e('0x68')][_0x468e('0x6c')],_[_0x468e('0x6d')](_0x6e7c32[_0x468e('0x68')],[_0x468e('0x6c'),'id'])||{});}})[_0x468e('0x17')](respondWithResult(_0xd48e9,null))[_0x468e('0x5a')](handleError(_0xd48e9,null));};exports[_0x468e('0x154')]=function(_0x2abc57,_0x14e46a){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x2abc57['params']['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x14e46a,null))[_0x468e('0x17')](function(_0x51384c){if(_0x51384c){return _0x51384c[_0x468e('0x154')](_0x2abc57[_0x468e('0x49')]['ids']);}})[_0x468e('0x17')](respondWithStatusCode(_0x14e46a,null))[_0x468e('0x5a')](handleError(_0x14e46a,null));};exports['getChatWebsites']=function(_0x15d34f,_0x478b46){var _0x4097af={};var _0x5dc958={};var _0x358113;var _0x38ef1e;return db['User'][_0x468e('0xa0')]({'where':{'id':_0x15d34f[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x478b46,null))[_0x468e('0x17')](function(_0x401a3c){if(_0x401a3c){_0x358113=_0x401a3c;_0x5dc958[_0x468e('0x5c')]=_[_0x468e('0x5f')](db[_0x468e('0x155')]['rawAttributes']);_0x5dc958[_0x468e('0x49')]=_[_0x468e('0x5f')](_0x15d34f[_0x468e('0x49')]);_0x5dc958[_0x468e('0x60')]=_['intersection'](_0x5dc958[_0x468e('0x5c')],_0x5dc958[_0x468e('0x49')]);_0x4097af[_0x468e('0x4e')]=_['intersection'](_0x5dc958['model'],qs[_0x468e('0x62')](_0x15d34f[_0x468e('0x49')][_0x468e('0x62')]));_0x4097af[_0x468e('0x4e')]=_0x4097af[_0x468e('0x4e')][_0x468e('0x52')]?_0x4097af[_0x468e('0x4e')]:_0x5dc958[_0x468e('0x5c')];_0x4097af['order']=qs[_0x468e('0xda')](_0x15d34f[_0x468e('0x49')][_0x468e('0xda')]);_0x4097af[_0x468e('0x47')]=qs[_0x468e('0x60')](_[_0x468e('0xdb')](_0x15d34f[_0x468e('0x49')],_0x5dc958['filters']));if(_0x15d34f[_0x468e('0x49')]['filter']){_0x4097af[_0x468e('0x47')]=_[_0x468e('0x64')](_0x4097af[_0x468e('0x47')],{'$or':_[_0x468e('0x3a')](_0x4097af[_0x468e('0x4e')],function(_0x385972){var _0x13538c={};_0x13538c[_0x385972]={'$like':'%'+_0x15d34f[_0x468e('0x49')][_0x468e('0x38')]+'%'};return _0x13538c;})});}_0x4097af=_[_0x468e('0x64')]({},_0x4097af,_0x15d34f[_0x468e('0xdc')]);return _0x358113[_0x468e('0x156')](_0x4097af);}})[_0x468e('0x17')](function(_0x22ce61){if(_0x22ce61){_0x38ef1e=_0x22ce61[_0x468e('0x52')];if(!_0x15d34f[_0x468e('0x49')]['hasOwnProperty']('nolimit')){_0x4097af[_0x468e('0x27')]=qs['limit'](_0x15d34f[_0x468e('0x49')][_0x468e('0x27')]);_0x4097af[_0x468e('0x25')]=qs[_0x468e('0x25')](_0x15d34f[_0x468e('0x49')][_0x468e('0x25')]);}return _0x358113['getChatWebsites'](_0x4097af);}})[_0x468e('0x17')](function(_0x125a21){if(_0x125a21){return _0x125a21?{'count':_0x38ef1e,'rows':_0x125a21}:null;}})[_0x468e('0x17')](respondWithResult(_0x478b46,null))[_0x468e('0x5a')](handleError(_0x478b46,null));};exports[_0x468e('0x157')]=function(_0x3c589a,_0x58f6a){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x3c589a[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x58f6a,null))['then'](function(_0x462a81){if(_0x462a81){return _0x462a81[_0x468e('0x157')](_0x3c589a['body'][_0x468e('0x6c')],_[_0x468e('0x6d')](_0x3c589a[_0x468e('0x68')],['ids','id'])||{});}})['then'](respondWithResult(_0x58f6a,null))['catch'](handleError(_0x58f6a,null));};exports[_0x468e('0x158')]=function(_0x292ee3,_0x4dbbd3){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x292ee3[_0x468e('0x6b')]['id']}})['then'](handleEntityNotFound(_0x4dbbd3,null))[_0x468e('0x17')](function(_0x33926c){if(_0x33926c){return _0x33926c[_0x468e('0x158')](_0x292ee3['query']['ids']);}})[_0x468e('0x17')](respondWithStatusCode(_0x4dbbd3,null))[_0x468e('0x5a')](handleError(_0x4dbbd3,null));};exports[_0x468e('0x159')]=function(_0x35d0d7,_0x1e2998){var _0xe2cf38={};var _0x174d0b={};var _0x5e57c2;var _0xff25c6;return db[_0x468e('0x48')][_0x468e('0xa0')]({'where':{'id':_0x35d0d7[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x1e2998,null))[_0x468e('0x17')](function(_0x4c20f6){if(_0x4c20f6){_0x5e57c2=_0x4c20f6;_0x174d0b[_0x468e('0x5c')]=_[_0x468e('0x5f')](db['WhatsappAccount'][_0x468e('0x5e')]);_0x174d0b[_0x468e('0x49')]=_[_0x468e('0x5f')](_0x35d0d7[_0x468e('0x49')]);_0x174d0b[_0x468e('0x60')]=_[_0x468e('0x61')](_0x174d0b[_0x468e('0x5c')],_0x174d0b['query']);_0xe2cf38[_0x468e('0x4e')]=_[_0x468e('0x61')](_0x174d0b[_0x468e('0x5c')],qs['fields'](_0x35d0d7[_0x468e('0x49')][_0x468e('0x62')]));_0xe2cf38[_0x468e('0x4e')]=_0xe2cf38[_0x468e('0x4e')][_0x468e('0x52')]?_0xe2cf38[_0x468e('0x4e')]:_0x174d0b[_0x468e('0x5c')];_0xe2cf38[_0x468e('0xd9')]=qs['sort'](_0x35d0d7[_0x468e('0x49')][_0x468e('0xda')]);_0xe2cf38[_0x468e('0x47')]=qs[_0x468e('0x60')](_[_0x468e('0xdb')](_0x35d0d7['query'],_0x174d0b[_0x468e('0x60')]));if(_0x35d0d7[_0x468e('0x49')][_0x468e('0x38')]){_0xe2cf38[_0x468e('0x47')]=_[_0x468e('0x64')](_0xe2cf38[_0x468e('0x47')],{'$or':_['map'](_0xe2cf38[_0x468e('0x4e')],function(_0x3fb009){var _0x4e51ed={};_0x4e51ed[_0x3fb009]={'$like':'%'+_0x35d0d7[_0x468e('0x49')][_0x468e('0x38')]+'%'};return _0x4e51ed;})});}_0xe2cf38=_[_0x468e('0x64')]({},_0xe2cf38,_0x35d0d7['options']);return _0x5e57c2[_0x468e('0x159')](_0xe2cf38);}})['then'](function(_0x25cfb5){if(_0x25cfb5){_0xff25c6=_0x25cfb5[_0x468e('0x52')];if(!_0x35d0d7[_0x468e('0x49')][_0x468e('0xdd')]('nolimit')){_0xe2cf38['limit']=qs['limit'](_0x35d0d7[_0x468e('0x49')][_0x468e('0x27')]);_0xe2cf38[_0x468e('0x25')]=qs[_0x468e('0x25')](_0x35d0d7[_0x468e('0x49')][_0x468e('0x25')]);}return _0x5e57c2[_0x468e('0x159')](_0xe2cf38);}})[_0x468e('0x17')](function(_0x143b63){if(_0x143b63){return _0x143b63?{'count':_0xff25c6,'rows':_0x143b63}:null;}})[_0x468e('0x17')](respondWithResult(_0x1e2998,null))[_0x468e('0x5a')](handleError(_0x1e2998,null));};exports[_0x468e('0x15a')]=function(_0x1e41ee,_0x297d23){return db['User'][_0x468e('0x65')]({'where':{'id':_0x1e41ee[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x297d23,null))[_0x468e('0x17')](function(_0x4212f4){if(_0x4212f4){return _0x4212f4[_0x468e('0x15a')](_0x1e41ee[_0x468e('0x68')]['ids'],_[_0x468e('0x6d')](_0x1e41ee[_0x468e('0x68')],[_0x468e('0x6c'),'id'])||{});}})['then'](respondWithResult(_0x297d23,null))[_0x468e('0x5a')](handleError(_0x297d23,null));};exports[_0x468e('0x15b')]=function(_0x113123,_0x3eb64c){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x113123['params']['id']}})['then'](handleEntityNotFound(_0x3eb64c,null))[_0x468e('0x17')](function(_0x1da7cd){if(_0x1da7cd){return _0x1da7cd[_0x468e('0x15b')](_0x113123[_0x468e('0x49')][_0x468e('0x6c')]);}})[_0x468e('0x17')](respondWithStatusCode(_0x3eb64c,null))[_0x468e('0x5a')](handleError(_0x3eb64c,null));};exports['getSquareProjects']=function(_0x2a4722,_0x405491){var _0x303292={};var _0x23704a={};var _0x380bd6;var _0x509212;return db[_0x468e('0x48')]['findOne']({'where':{'id':_0x2a4722[_0x468e('0x6b')]['id']}})['then'](handleEntityNotFound(_0x405491,null))[_0x468e('0x17')](function(_0x531530){if(_0x531530){_0x380bd6=_0x531530;_0x23704a[_0x468e('0x5c')]=_[_0x468e('0x5f')](db[_0x468e('0x15c')][_0x468e('0x5e')]);_0x23704a[_0x468e('0x49')]=_['keys'](_0x2a4722[_0x468e('0x49')]);_0x23704a['filters']=_[_0x468e('0x61')](_0x23704a[_0x468e('0x5c')],_0x23704a['query']);_0x303292[_0x468e('0x4e')]=_['intersection'](_0x23704a[_0x468e('0x5c')],qs[_0x468e('0x62')](_0x2a4722[_0x468e('0x49')][_0x468e('0x62')]));_0x303292[_0x468e('0x4e')]=_0x303292[_0x468e('0x4e')]['length']?_0x303292[_0x468e('0x4e')]:_0x23704a[_0x468e('0x5c')];_0x303292['order']=qs['sort'](_0x2a4722[_0x468e('0x49')][_0x468e('0xda')]);_0x303292[_0x468e('0x47')]=qs[_0x468e('0x60')](_[_0x468e('0xdb')](_0x2a4722[_0x468e('0x49')],_0x23704a[_0x468e('0x60')]));if(_0x2a4722[_0x468e('0x49')][_0x468e('0x38')]){_0x303292['where']=_[_0x468e('0x64')](_0x303292[_0x468e('0x47')],{'$or':_[_0x468e('0x3a')](_0x303292[_0x468e('0x4e')],function(_0x1217a4){var _0x5875da={};_0x5875da[_0x1217a4]={'$like':'%'+_0x2a4722['query']['filter']+'%'};return _0x5875da;})});}_0x303292=_['merge']({},_0x303292,_0x2a4722[_0x468e('0xdc')]);return _0x380bd6[_0x468e('0x15d')](_0x303292);}})[_0x468e('0x17')](function(_0x1fbf60){if(_0x1fbf60){_0x509212=_0x1fbf60[_0x468e('0x52')];if(!_0x2a4722[_0x468e('0x49')]['hasOwnProperty'](_0x468e('0xe3'))){_0x303292[_0x468e('0x27')]=qs[_0x468e('0x27')](_0x2a4722[_0x468e('0x49')]['limit']);_0x303292[_0x468e('0x25')]=qs['offset'](_0x2a4722[_0x468e('0x49')][_0x468e('0x25')]);}return _0x380bd6[_0x468e('0x15d')](_0x303292);}})['then'](function(_0x46724d){if(_0x46724d){return _0x46724d?{'count':_0x509212,'rows':_0x46724d}:null;}})[_0x468e('0x17')](respondWithResult(_0x405491,null))[_0x468e('0x5a')](handleError(_0x405491,null));};exports['addSquareProjects']=function(_0x2f8224,_0x2455a3){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x2f8224['params']['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x2455a3,null))[_0x468e('0x17')](function(_0x41b6e3){if(_0x41b6e3){return _0x41b6e3[_0x468e('0x15e')](_0x2f8224['body']['ids'],_['omit'](_0x2f8224[_0x468e('0x68')],[_0x468e('0x6c'),'id'])||{});}})[_0x468e('0x17')](respondWithResult(_0x2455a3,null))[_0x468e('0x5a')](handleError(_0x2455a3,null));};exports[_0x468e('0x15f')]=function(_0x240c1d,_0x16709b){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x240c1d[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x16709b,null))[_0x468e('0x17')](function(_0x79ccae){if(_0x79ccae){return _0x79ccae[_0x468e('0x15f')](_0x240c1d[_0x468e('0x49')]['ids']);}})[_0x468e('0x17')](respondWithStatusCode(_0x16709b,null))[_0x468e('0x5a')](handleError(_0x16709b,null));};exports['getScheduledCalls']=function(_0x143e91,_0x41c58a){var _0xb24be2={},_0x24ba35={},_0x1de6a7={'count':0x0,'rows':[]};var _0xdb2c09=db['CmHopper'][_0x468e('0x5e')];_0x24ba35[_0x468e('0x5c')]=_['keys'](_0xdb2c09);_0x24ba35['query']=_[_0x468e('0x5f')](_0x143e91['query']);_0x24ba35['filters']=_['intersection'](_0x24ba35['model'],_0x24ba35['query']);_0x24ba35[_0x468e('0x60')]=_['concat'](_0x24ba35['filters'],[_0x468e('0x160'),_0x468e('0x161'),'$gt','$gte','$lt',_0x468e('0x162'),_0x468e('0x163'),'$eq','$not',_0x468e('0x164'),_0x468e('0x165'),_0x468e('0x166'),_0x468e('0x167'),_0x468e('0x168'),_0x468e('0x169'),'$iLike',_0x468e('0x16a'),_0x468e('0x168'),_0x468e('0x16b'),_0x468e('0x16c'),_0x468e('0x16d'),_0x468e('0x16e')]);_0xb24be2[_0x468e('0x4e')]=_[_0x468e('0x61')](_0x24ba35['model'],qs['fields'](_0x143e91['query'][_0x468e('0x62')]));_0xb24be2[_0x468e('0x4e')]=_0xb24be2[_0x468e('0x4e')][_0x468e('0x52')]?_0xb24be2[_0x468e('0x4e')]:_0x24ba35[_0x468e('0x5c')];if(!_0x143e91['query'][_0x468e('0xdd')](_0x468e('0xe3'))){_0xb24be2['limit']=qs[_0x468e('0x27')](_0x143e91[_0x468e('0x49')][_0x468e('0x27')]);_0xb24be2[_0x468e('0x25')]=qs[_0x468e('0x25')](_0x143e91[_0x468e('0x49')][_0x468e('0x25')]);}_0xb24be2[_0x468e('0xd9')]=qs[_0x468e('0xda')](_0x143e91[_0x468e('0x49')]['sort']);_0xb24be2['where']=qs[_0x468e('0x60')](_[_0x468e('0xdb')](_0x143e91[_0x468e('0x49')],_0x24ba35[_0x468e('0x60')]));if(_0x143e91['query']['filter']){_0xb24be2[_0x468e('0x47')]=_[_0x468e('0x64')](_0xb24be2[_0x468e('0x47')],{'$or':_['map'](_0xb24be2[_0x468e('0x4e')],function(_0x496a59){var _0x486e9d={};_0x486e9d[_0x496a59]={'$like':'%'+_0x143e91[_0x468e('0x49')][_0x468e('0x38')]+'%'};return _0x486e9d;})});}_0xb24be2['where']={'$and':[_0xb24be2[_0x468e('0x47')],{'$or':[{'UserId':_0x143e91[_0x468e('0x6b')]['id']},{'OwnerId':_0x143e91[_0x468e('0x6b')]['id']}]}]};_0xb24be2=_[_0x468e('0x64')]({},_0xb24be2,_0x143e91[_0x468e('0xdc')]);var _0x50c885={'where':_0xb24be2[_0x468e('0x47')]};return db[_0x468e('0x16f')]['count'](_0x50c885)['then'](function(_0x3061fe){_0x1de6a7[_0x468e('0x28')]=_0x3061fe;if(_0x143e91[_0x468e('0x49')]['includeAll']){_0xb24be2[_0x468e('0x4b')]=[{'attributes':['id','firstName',_0x468e('0x170'),_0x468e('0xfb')],'model':db[_0x468e('0xd8')],'as':'Contact'},{'attributes':['id',_0x468e('0x3d'),_0x468e('0x171')],'model':db[_0x468e('0xb4')],'as':_0x468e('0xe5')}];}return db[_0x468e('0x16f')]['findAll'](_0xb24be2);})[_0x468e('0x17')](function(_0x4f3718){_0x1de6a7[_0x468e('0x50')]=_0x4f3718;return _0x1de6a7;})[_0x468e('0x17')](respondWithFilteredResult(_0x41c58a,_0xb24be2))[_0x468e('0x5a')](handleError(_0x41c58a,null));};exports['getApiKey']=function(_0x3c9196,_0x7db361){if(!_['isNil'](_0x3c9196['user']['id'])&&(_0x3c9196['user'][_0x468e('0x30')]=='admin'||_0x3c9196['user'][_0x468e('0x30')]==_0x468e('0x33'))){return db['User'][_0x468e('0xa0')]({'where':{'id':_0x3c9196[_0x468e('0x6b')]['id']},'raw':!![]})[_0x468e('0x17')](function(_0x22be0b){return authService[_0x468e('0x172')](_0x22be0b);})[_0x468e('0x17')](function(_0x2f6120){if(_0x2f6120){return _0x7db361['status'](0xc8)[_0x468e('0x24')]({'api_key':_0x2f6120[_0x468e('0x173')]});}else{return _0x7db361[_0x468e('0x23')](0xcc)['json']({'message':_0x468e('0x174')});}})['catch'](handleError(_0x7db361,0x193));}else{return _0x7db361['status'](0x191)[_0x468e('0x24')]({'message':_0x468e('0x175')});}};exports[_0x468e('0x176')]=function(_0x1dac40,_0x264732){if(!_[_0x468e('0x73')](_0x1dac40[_0x468e('0x33')]['id'])&&(_0x1dac40[_0x468e('0x33')][_0x468e('0x30')]==_0x468e('0x31')||_0x1dac40['user'][_0x468e('0x30')]=='user')){return db[_0x468e('0x48')]['find']({'where':{'id':_0x1dac40['params']['id']}})[_0x468e('0x17')](function(_0x537cb5){return authService[_0x468e('0x177')](_0x537cb5);})[_0x468e('0x17')](function(_0x5c5660){return db[_0x468e('0x48')][_0x468e('0x2b')]({'apiKeyIat':_0x5c5660[_0x468e('0x178')],'apiKeyNonce':_0x5c5660[_0x468e('0x179')]},{'where':{'id':_0x1dac40[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](function(){return _0x264732[_0x468e('0x23')](0xc8)[_0x468e('0x24')]({'api_key':_0x5c5660[_0x468e('0x173')]});});})[_0x468e('0x5a')](handleError(_0x264732,0x193));}else{return _0x264732[_0x468e('0x23')](0x191)['json']({'message':_0x468e('0x175')});}};exports[_0x468e('0x17a')]=function(_0x11cdbf,_0x5f0748){if(!_[_0x468e('0x73')](_0x11cdbf[_0x468e('0x33')]['id'])&&(_0x11cdbf[_0x468e('0x33')][_0x468e('0x30')]==_0x468e('0x31')||_0x11cdbf[_0x468e('0x33')][_0x468e('0x30')]==_0x468e('0x33'))){return db[_0x468e('0x48')][_0x468e('0x65')]({'where':{'id':_0x11cdbf[_0x468e('0x6b')]['id']}})[_0x468e('0x17')](handleEntityNotFound(_0x5f0748,null))['then'](function(_0x56ecbf){if(_0x56ecbf&&_0x56ecbf['apiKeyNonce']&&_0x56ecbf[_0x468e('0x17b')])return _0x56ecbf;else throw{'message':'API\x20key\x20not\x20available'};})[_0x468e('0x17')](function(){return db['User'][_0x468e('0x2b')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x11cdbf[_0x468e('0x6b')]['id']}});})[_0x468e('0x17')](respondWithStatusCode(_0x5f0748,0xc8))[_0x468e('0x5a')](handleError(_0x5f0748,0x193));}else{return _0x5f0748[_0x468e('0x23')](0x191)[_0x468e('0x24')]({'message':_0x468e('0x175')});}};exports['whoami']=function(_0x2aacb3,_0x3addb5){var _0x11d07b=_0x2aacb3[_0x468e('0x33')]['get']({'plain':!![]});if(!_0x11d07b){return _0x3addb5[_0x468e('0x23')](0x191)[_0x468e('0x12e')]('Unable\x20to\x20retrieve\x20the\x20current\x20user');}else{Promise[_0x468e('0x110')]()[_0x468e('0x17')](function(){if(_0x2aacb3['query'][_0x468e('0x63')]!==_0x468e('0x4c'))return;return _0x2aacb3['user']['getUserSetting']();})[_0x468e('0x17')](function(_0x2752a9){if(!_0x2752a9)return;return _0x2752a9[_0x468e('0x2f')]({'plain':!![]});})[_0x468e('0x17')](function(_0x27193a){_0x11d07b[_0x468e('0x63')]=_0x27193a;return _0x3addb5[_0x468e('0x23')](0xc8)[_0x468e('0x24')](_0x11d07b);});}};exports['getPresence']=function(_0x172110,_0x1e9953){var _0x192bfd={'offset':0x0},_0x3a1aee={'count':0x0,'rows':[]};Promise[_0x468e('0x110')]()[_0x468e('0x17')](function(){if(!_0x172110[_0x468e('0x49')][_0x468e('0x38')]&&!_0x172110[_0x468e('0x49')]['teams']&&!_0x172110['query'][_0x468e('0x17c')])return[];return Promise[_0x468e('0x110')]()[_0x468e('0x17')](function(){var _0x5c9a89=[];if(!_[_0x468e('0x17d')](_0x172110[_0x468e('0x49')]['teams'])){_0x5c9a89[_0x468e('0x53')](db[_0x468e('0x11e')][_0x468e('0x4f')]({'attributes':['id','name'],'where':{'id':_0x172110[_0x468e('0x49')]['teams']}}));}if(!_[_0x468e('0x17d')](_0x172110[_0x468e('0x49')][_0x468e('0x17c')])){_0x5c9a89[_0x468e('0x53')](db['VoiceQueue'][_0x468e('0x4f')]({'attributes':['id',_0x468e('0x3d')],'type':_0x468e('0x17e'),'where':{'id':_0x172110[_0x468e('0x49')]['queues']}}));}return Promise['all'](_0x5c9a89);})[_0x468e('0x17')](function(_0x24b464){var _0x771d35=_['flatten'](_0x24b464)[_0x468e('0x3a')](function(_0x484778){return _0x484778[_0x468e('0x12d')]({'attributes':['id',_0x468e('0x3d'),_0x468e('0x6e'),_0x468e('0xa8')],'raw':!![]});});return Promise[_0x468e('0x59')](_0x771d35);})[_0x468e('0x17')](function(_0x2e83fd){var _0x473933=_[_0x468e('0x17f')](_0x2e83fd);if(!_0x172110[_0x468e('0x49')][_0x468e('0x38')])return _0x473933;if(_['isEmpty'](_0x473933)){return db[_0x468e('0x48')][_0x468e('0x4f')]({'attributes':['id',_0x468e('0x3d'),_0x468e('0x6e'),'online'],'where':{'role':_0x468e('0x35'),'$or':[db[_0x468e('0x180')][_0x468e('0x47')](db[_0x468e('0x180')]['fn'](_0x468e('0x181'),db[_0x468e('0x180')][_0x468e('0x182')]('name')),{'$like':'%'+_0x172110['query'][_0x468e('0x38')][_0x468e('0xb2')]()+'%'}),{'internal':{'$like':'%'+_0x172110[_0x468e('0x49')][_0x468e('0x38')]+'%'}}]},'raw':!![]});}else{return _(_0x473933)[_0x468e('0x17f')]()[_0x468e('0x38')](function(_0x1f431a){return _0x1f431a[_0x468e('0x3d')][_0x468e('0xb2')]()[_0x468e('0x3c')](_0x172110['query'][_0x468e('0x38')][_0x468e('0xb2')]())||_0x1f431a['internal']['toString']()[_0x468e('0x3c')](_0x172110[_0x468e('0x49')]['filter']);})['value']();}})[_0x468e('0x17')](function(_0x2402c3){var _0x40b0c3=_0x468e('0x3d');var _0x4cb726='asc';if(_0x172110[_0x468e('0x49')][_0x468e('0xda')]){_0x4cb726=_0x172110[_0x468e('0x49')][_0x468e('0xda')][0x0]==='-'?'desc':'asc';_0x40b0c3=_0x4cb726===_0x468e('0x183')?_0x172110[_0x468e('0x49')][_0x468e('0xda')]:_0x172110[_0x468e('0x49')]['sort'][_0x468e('0x184')](0x1);}return _(_0x2402c3)[_0x468e('0x185')]('id')['orderBy']([function(_0xd1ba7f){return _0x40b0c3===_0x468e('0x3d')?_0xd1ba7f[_0x40b0c3][_0x468e('0xb2')]():_0xd1ba7f[_0x40b0c3];}],[_0x4cb726])[_0x468e('0x3a')](function(_0x288d63){return _['pick'](_0x288d63,['id',_0x468e('0x3d'),'internal',_0x468e('0xa8')]);})[_0x468e('0x3b')]();})[_0x468e('0x17')](function(_0x20e986){return client[_0x468e('0x186')]('Agents',_0x172110)[_0x468e('0x17')](function(_0x41cd40){if(_0x41cd40['error'])throw new Error(_0x468e('0x187'));var _0x4180d3=_0x41cd40[_0x468e('0x188')];var _0x2c42b4=jayson['client'][_0x468e('0x16')]({'port':0x232c});return _0x2c42b4[_0x468e('0x186')]('Agents',_0x172110)['then'](function(_0x50ecd2){if(_0x50ecd2[_0x468e('0x1d')])throw new Error(_0x468e('0x189'));var _0x40eb54=_0x50ecd2[_0x468e('0x188')];return _['merge']({},_0x40eb54,_0x4180d3);});})['then'](function(_0x38d69d){return _[_0x468e('0x3a')](_0x20e986,function(_0x3e6d79){var _0x1c6b2a=_[_0x468e('0x65')](_0x38d69d[_0x468e('0x50')],['id',_0x3e6d79['id']]);if(!_0x1c6b2a||!_0x3e6d79['online']){_0x3e6d79[_0x468e('0x23')]=_0x468e('0x18a');}else if(_0x1c6b2a[_0x468e('0xaa')]){_0x3e6d79[_0x468e('0x23')]=_0x468e('0x111');}else{_0x3e6d79['status']=_[_0x468e('0x3c')]([_0x468e('0x18b'),'unknown',_0x468e('0x18c'),_0x468e('0x18d'),null,undefined],_0x1c6b2a[_0x468e('0x18e')])?'online':'busy';}return _0x3e6d79;});});});})[_0x468e('0x17')](function(_0x2fba09){if(!_0x172110[_0x468e('0x49')]['hasOwnProperty']('nolimit')){_0x192bfd['limit']=qs[_0x468e('0x27')](_0x172110['query']['limit']||0xa);_0x192bfd[_0x468e('0x25')]=qs[_0x468e('0x25')](_0x172110[_0x468e('0x49')][_0x468e('0x25')]);}_0x3a1aee['count']=_0x2fba09[_0x468e('0x52')];_0x3a1aee[_0x468e('0x50')]=_0x192bfd[_0x468e('0x27')]?_0x2fba09[_0x468e('0x18f')](_0x192bfd[_0x468e('0x25')],_0x192bfd[_0x468e('0x25')]+_0x192bfd[_0x468e('0x27')]):_0x2fba09;return _0x3a1aee;})[_0x468e('0x17')](respondWithFilteredResult(_0x1e9953,_0x192bfd))[_0x468e('0x5a')](handleError(_0x1e9953,null));};function get_open_tabs(_0x56bb5c,_0x202fb4){var _0x42714b=_0x56bb5c[_0x468e('0x190')](0x0)[_0x468e('0x191')]()+_0x56bb5c[_0x468e('0x18f')](0x1);var _0x2456cc={'type':db[_0x468e('0x97')][_0x468e('0x192')]['SELECT'],'raw':!![]};return new BPromise(function(_0x2fac95,_0x4ff2af){var _0x3874b7=squel[_0x468e('0x193')]()[_0x468e('0x194')](_0x468e('0x195')+_0x42714b+'InteractionId','id')['field'](_0x468e('0x196'))[_0x468e('0x76')](_0x468e('0x197')+_0x56bb5c+_0x468e('0x198'),'ui')[_0x468e('0x47')](_0x468e('0x199'),_0x202fb4['id']);return db['sequelize']['query'](_0x3874b7[_0x468e('0x19a')](),_0x2456cc)[_0x468e('0x17')](function(_0x1dbac7){_0x202fb4[_0x42714b+'OpenTabs']=_0x1dbac7;_0x2fac95(_0x1dbac7);})[_0x468e('0x5a')](function(_0x7c7461){_0x4ff2af(_0x7c7461);});});}
\ No newline at end of file
+var _0x7dc8=['headers','x-forwarded-for','connection','remoteAddress','socket','getVoiceQueues','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','LOGIN','device','PAUSE','LOGININPAUSE','isMiddleware','resolve','pause','updateAttributes','getChannels','DEFAULT\x20PAUSE','unpause','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsapppause','pauseType','lastPauseAt','QueuePause','manual','%s%s','Pause','getTeams','Team','Body\x20parameter\x20\x27ids\x27\x20is\x20required','User\x20with\x20id\x20%s\x20not\x20found','transaction','flattenDeep','addAgent','getDataValue','upsert','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','Query\x20parameter\x20\x27ids\x27\x20is\x20required','removeTeams','getAssociatedQueues','removeAgent','Voice','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','spread','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','CmHopper','$and','$or','$gt','$gte','$lte','$eq','$notBetween','$in','$notIn','$notLike','$iLike','$like','$overlap','$contained','$any','lastName','Contact','dialActive','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','createApiKey','generateApiKey','nonce','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','removeApiKey','API\x20key\x20not\x20available','whoami','getUserSetting','getPresence','queues','teams','inbound','flatten','col','toString','desc','substring','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','ringing','voiceStatus','busy','slice','charAt','QueryTypes','ui.','InteractionId','field','ui.createdAt','user_has_','ui.UserId\x20=\x20?','OpenTabs','moment','bluebird','path','lodash','squel','jayson/promise','ioredis','../../config/logger','../../config/utils','APIBadRequestError','../../errors/api','APINotFoundError','handleError','../../mysqldb','socket.io-emitter','redis','./user.socket','register','localhost','client','http','request','then','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','end','json','offset','limit','undefined','count','status','set','update','emit','get','role','user','Agents','agent','Telephones','telephone','map','value','includes','find','name','destroy','stack','send','index','User','rawAttributes','fieldName','key','salt','where','query','includeAll','include','true','userSetting','attributes','rows','openTabs','push','chat','dataValues','mail','openchannel','whatsapp','show','params','model','differenceBy','password','keys','filters','intersection','fields','length','UserSetting','options','sms','fax','all','body','describe','addContacts','omit','ids','internal','findById','securePassword','validatePasswordPattern','max','isNil','min_internal','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)','sequelize','SELECT','from','voicemail','mailbox','VoiceMail','fullname','permissions','101','113','110','104','105','106','107','108','100','111','114','create','admin','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','userProfileId','UserProfileSection','autoAssociation','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','findAll','isEmpty','compact','UserProfileResource','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Unauthorized','Setting','findOne','previousPasswords','passwordHistoryLimit','updatePasswordsHistory','addQueues','channel','online','loginInPause','voicePause','interface','isValidChannel','Unknown\x20channel','Queues','penalty','capitalize','toLowerCase','QueueId','Queue:save','voice','VoiceQueue','format','SIP/%s','UserVoiceQueueRt','removeQueues','remove','isArray','Queue:remove','userpic','file','filename','getAvatar','join','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','root','getOpenTabs','ChatOpenTabs','FaxOpenTabs','OpenchannelOpenTabs','OPENCHANNEL','MAIL','createdAt','SMS','concat','getContacts','CmContact','order','sort','filter','merge','hasOwnProperty','CmList','Tag','color','tag','nolimit','getQueues','Queue','pick','Unknown\x20role','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','FaxInteraction','getFaxInteractions','getWhatsappInteractions','WhatsappInteraction','phone','mobile','LOCAL/%s@from-sip/n','intrf','user:%s','user:forcelogout'];(function(_0xc49087,_0x4012dd){var _0x4110a8=function(_0xd1b727){while(--_0xd1b727){_0xc49087['push'](_0xc49087['shift']());}};_0x4110a8(++_0x4012dd);}(_0x7dc8,0xa4));var _0x87dc=function(_0x5ec6d3,_0x30be67){_0x5ec6d3=_0x5ec6d3-0x0;var _0x165dc4=_0x7dc8[_0x5ec6d3];return _0x165dc4;};'use strict';var moment=require(_0x87dc('0x0'));var BPromise=require(_0x87dc('0x1'));var util=require('util');var path=require(_0x87dc('0x2'));var fs=require('fs');var _=require(_0x87dc('0x3'));var squel=require(_0x87dc('0x4'));var jayson=require(_0x87dc('0x5'));var Redis=require(_0x87dc('0x6'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var logger=require(_0x87dc('0x7'))('api');var utils=require(_0x87dc('0x8'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var APIBadRequestError=require('../../errors/api')[_0x87dc('0x9')];var APINotFoundError=require(_0x87dc('0xa'))[_0x87dc('0xb')];var APIHandleError=require('../../errors/api')[_0x87dc('0xc')];var db=require(_0x87dc('0xd'))['db'];var socket=require(_0x87dc('0xe'))(new Redis(config[_0x87dc('0xf')]));require(_0x87dc('0x10'))[_0x87dc('0x11')](socket);config['redis']=_['defaults'](config[_0x87dc('0xf')],{'host':_0x87dc('0x12'),'port':0x18eb});var client=jayson[_0x87dc('0x13')][_0x87dc('0x14')]({'port':0x232a});var values;function respondWithRpcPromise(_0x4e6210,_0xab5a57,_0x2980ec,_0x5d89f6){return new BPromise(function(_0x3b8159,_0x23c70a){var _0x1f78ce=_0x5d89f6||client;return _0x1f78ce[_0x87dc('0x15')](_0x4e6210,_0x2980ec)[_0x87dc('0x16')](function(_0x56e13a){logger['info'](_0x87dc('0x17'),_0xab5a57,_0x87dc('0x18'));logger[_0x87dc('0x19')](_0x87dc('0x1a'),_0xab5a57,_0x87dc('0x18'),JSON[_0x87dc('0x1b')](_0x56e13a));if(_0x56e13a[_0x87dc('0x1c')]){if(_0x56e13a[_0x87dc('0x1c')][_0x87dc('0x1d')]===0x1f4){logger['error'](_0x87dc('0x17'),_0xab5a57,_0x56e13a[_0x87dc('0x1c')][_0x87dc('0x1e')]);return _0x23c70a(_0x56e13a[_0x87dc('0x1c')]['message']);}logger[_0x87dc('0x1c')]('User,\x20%s,\x20%s',_0xab5a57,_0x56e13a[_0x87dc('0x1c')][_0x87dc('0x1e')]);return _0x3b8159(_0x56e13a[_0x87dc('0x1c')][_0x87dc('0x1e')]);}else{logger[_0x87dc('0x1f')](_0x87dc('0x17'),_0xab5a57,'request\x20sent');_0x3b8159(_0x56e13a[_0x87dc('0x20')][_0x87dc('0x1e')]);}})[_0x87dc('0x21')](function(_0xd0a94e){logger[_0x87dc('0x1c')](_0x87dc('0x17'),_0xab5a57,_0xd0a94e);_0x23c70a(_0xd0a94e);});});}function respondWithStatusCode(_0x14a305,_0x56da90){_0x56da90=_0x56da90||0xcc;return function(_0x12b5e0){if(_0x12b5e0){return _0x14a305[_0x87dc('0x22')](_0x56da90);}return _0x14a305['status'](_0x56da90)[_0x87dc('0x23')]();};}function respondWithResult(_0x29810e,_0x2eff1a){_0x2eff1a=_0x2eff1a||0xc8;return function(_0x29907f){if(_0x29907f){return _0x29810e['status'](_0x2eff1a)[_0x87dc('0x24')](_0x29907f);}};}function respondWithFilteredResult(_0x1b5e9b,_0x2c3487){return function(_0x38b49b){if(_0x38b49b){var _0xb5e56c=typeof _0x2c3487[_0x87dc('0x25')]==='undefined'&&typeof _0x2c3487[_0x87dc('0x26')]===_0x87dc('0x27');var _0x4667af=_0x38b49b[_0x87dc('0x28')];var _0x2f4c2d=_0xb5e56c?0x0:_0x2c3487['offset'];var _0x4cc9b6=_0xb5e56c?_0x38b49b['count']:_0x2c3487[_0x87dc('0x25')]+_0x2c3487[_0x87dc('0x26')];var _0x1914c2;if(_0x4cc9b6>=_0x4667af){_0x4cc9b6=_0x4667af;_0x1914c2=0xc8;}else{_0x1914c2=0xce;}_0x1b5e9b[_0x87dc('0x29')](_0x1914c2);return _0x1b5e9b[_0x87dc('0x2a')]('Content-Range',_0x2f4c2d+'-'+_0x4cc9b6+'/'+_0x4667af)[_0x87dc('0x24')](_0x38b49b);}return null;};}function saveUpdates(_0x28e3e5){return function(_0x705c11){if(_0x705c11){return _0x705c11[_0x87dc('0x2b')](_0x28e3e5)['then'](function(_0x3e446e){socket[_0x87dc('0x2c')]('userNotification:recalc:'+_0x3e446e['id'],{});return _0x3e446e;});}return null;};}function removeEntity(_0x2acff6){return function(_0x104888){if(_0x104888){return _0x104888['destroy']()[_0x87dc('0x16')](function(){var _0x3a41bc=_0x104888[_0x87dc('0x2d')]({'plain':!![]});if(_0x3a41bc[_0x87dc('0x2e')]==='admin')return;var _0xd666bf=[{'name':'Users','value':_0x87dc('0x2f'),'ignore':!![]},{'name':_0x87dc('0x30'),'value':_0x87dc('0x31'),'ignore':![]},{'name':_0x87dc('0x32'),'value':_0x87dc('0x33'),'ignore':![]}];var _0x56f399=_(_0xd666bf)['filter']('ignore')[_0x87dc('0x34')](_0x87dc('0x35'))[_0x87dc('0x35')]();if(_[_0x87dc('0x36')](_0x56f399,_0x3a41bc[_0x87dc('0x2e')])){return;}var _0x18d9b5=_[_0x87dc('0x37')](_0xd666bf,[_0x87dc('0x35'),_0x3a41bc[_0x87dc('0x2e')]])[_0x87dc('0x38')];return db['UserProfileResource'][_0x87dc('0x39')]({'where':{'type':_0x18d9b5,'resourceId':_0x3a41bc['id']}})[_0x87dc('0x16')](function(){return _0x104888;});})['then'](function(){_0x2acff6[_0x87dc('0x29')](0xcc)[_0x87dc('0x23')]();});}};}function handleEntityNotFound(_0xc2de2d){return function(_0x1f1ea2){if(!_0x1f1ea2){_0xc2de2d['sendStatus'](0x194);}return _0x1f1ea2;};}function handleError(_0xb9aeb4,_0x344e61){_0x344e61=_0x344e61||0x1f4;return function(_0x2e057e){logger['error'](_0x2e057e[_0x87dc('0x3a')]);if(_0x2e057e['name']){delete _0x2e057e[_0x87dc('0x38')];}_0xb9aeb4['status'](_0x344e61)[_0x87dc('0x3b')](_0x2e057e);};}exports[_0x87dc('0x3c')]=function(_0x485611,_0xffe15f){var _0x54a3a7={},_0x52bebb={'count':0x0,'rows':[]};var _0x19ea17=_(db[_0x87dc('0x3d')][_0x87dc('0x3e')])['map'](function(_0x8a87f7){return{'name':_0x8a87f7[_0x87dc('0x3f')],'type':_0x8a87f7['type'][_0x87dc('0x40')]};})['filter'](function(_0x462070){return!_['includes'](['password',_0x87dc('0x41')],_0x462070[_0x87dc('0x38')]);})[_0x87dc('0x35')]();_0x54a3a7=qs['getOptions'](_0x19ea17,_0x485611);var _0x153c8e={'where':_0x54a3a7[_0x87dc('0x42')]};return db[_0x87dc('0x3d')][_0x87dc('0x28')](_0x153c8e)[_0x87dc('0x16')](function(_0x1a1e49){_0x52bebb[_0x87dc('0x28')]=_0x1a1e49;if(_0x485611[_0x87dc('0x43')][_0x87dc('0x44')]){_0x54a3a7[_0x87dc('0x45')]=[{'all':!![]}];}if(_0x485611['query']['userSetting']===_0x87dc('0x46')){_0x54a3a7['include']=[{'model':db['UserSetting'],'as':_0x87dc('0x47')}];}if(!_[_0x87dc('0x36')](_0x54a3a7['attributes'],'id')){_0x54a3a7[_0x87dc('0x48')]['push']('id');}return db[_0x87dc('0x3d')]['findAll'](_0x54a3a7);})[_0x87dc('0x16')](function(_0x3102c1){_0x52bebb[_0x87dc('0x49')]=_0x3102c1;if(_0x485611[_0x87dc('0x43')][_0x87dc('0x4a')]===_0x87dc('0x46')){var _0x236ef0=[];for(var _0x2105da=0x0;_0x2105da<_0x52bebb[_0x87dc('0x49')]['length'];_0x2105da++){_0x236ef0[_0x87dc('0x4b')](get_open_tabs(_0x87dc('0x4c'),_0x52bebb[_0x87dc('0x49')][_0x2105da][_0x87dc('0x4d')]));_0x236ef0[_0x87dc('0x4b')](get_open_tabs('sms',_0x52bebb['rows'][_0x2105da][_0x87dc('0x4d')]));_0x236ef0[_0x87dc('0x4b')](get_open_tabs('fax',_0x52bebb[_0x87dc('0x49')][_0x2105da][_0x87dc('0x4d')]));_0x236ef0[_0x87dc('0x4b')](get_open_tabs(_0x87dc('0x4e'),_0x52bebb[_0x87dc('0x49')][_0x2105da][_0x87dc('0x4d')]));_0x236ef0[_0x87dc('0x4b')](get_open_tabs(_0x87dc('0x4f'),_0x52bebb[_0x87dc('0x49')][_0x2105da][_0x87dc('0x4d')]));_0x236ef0[_0x87dc('0x4b')](get_open_tabs(_0x87dc('0x50'),_0x52bebb[_0x87dc('0x49')][_0x2105da][_0x87dc('0x4d')]));}return BPromise['all'](_0x236ef0)[_0x87dc('0x16')](function(){return _0x52bebb;});}else{return _0x52bebb;}})['then'](respondWithFilteredResult(_0xffe15f,_0x54a3a7))[_0x87dc('0x21')](handleError(_0xffe15f,null));};exports[_0x87dc('0x51')]=function(_0x480d95,_0x4e6c5d){var _0x1f4b59={'raw':![],'where':{'id':_0x480d95[_0x87dc('0x52')]['id']}},_0x5bfbe5={};_0x5bfbe5[_0x87dc('0x53')]=_[_0x87dc('0x54')](_['keys'](db['User'][_0x87dc('0x3e')]),[_0x87dc('0x55'),'salt']);_0x5bfbe5[_0x87dc('0x43')]=_[_0x87dc('0x56')](_0x480d95[_0x87dc('0x43')]);_0x5bfbe5[_0x87dc('0x57')]=_[_0x87dc('0x58')](_0x5bfbe5['model'],_0x5bfbe5[_0x87dc('0x43')]);_0x1f4b59[_0x87dc('0x48')]=_[_0x87dc('0x58')](_0x5bfbe5[_0x87dc('0x53')],qs['fields'](_0x480d95['query'][_0x87dc('0x59')]));_0x1f4b59[_0x87dc('0x48')]=_0x1f4b59[_0x87dc('0x48')][_0x87dc('0x5a')]?_0x1f4b59[_0x87dc('0x48')]:_0x5bfbe5[_0x87dc('0x53')];if(_0x480d95[_0x87dc('0x43')][_0x87dc('0x44')]){_0x1f4b59[_0x87dc('0x45')]=[{'all':!![]}];}if(_0x480d95['query'][_0x87dc('0x47')]===_0x87dc('0x46')){_0x1f4b59[_0x87dc('0x45')]=[{'model':db[_0x87dc('0x5b')],'as':_0x87dc('0x47')}];}_0x1f4b59=_['merge']({},_0x1f4b59,_0x480d95[_0x87dc('0x5c')]);if(!_[_0x87dc('0x36')](_0x1f4b59[_0x87dc('0x48')],'id')){_0x1f4b59[_0x87dc('0x48')][_0x87dc('0x4b')]('id');}return db['User'][_0x87dc('0x37')](_0x1f4b59)[_0x87dc('0x16')](handleEntityNotFound(_0x4e6c5d,null))['then'](function(_0x301687){var _0x5e05b0=[];values=_0x301687;if(_0x480d95[_0x87dc('0x43')][_0x87dc('0x4a')]===_0x87dc('0x46')){_0x5e05b0['push'](get_open_tabs(_0x87dc('0x4c'),_0x301687[_0x87dc('0x4d')]));_0x5e05b0[_0x87dc('0x4b')](get_open_tabs(_0x87dc('0x5d'),_0x301687[_0x87dc('0x4d')]));_0x5e05b0[_0x87dc('0x4b')](get_open_tabs(_0x87dc('0x4f'),_0x301687[_0x87dc('0x4d')]));_0x5e05b0[_0x87dc('0x4b')](get_open_tabs(_0x87dc('0x50'),_0x301687[_0x87dc('0x4d')]));_0x5e05b0[_0x87dc('0x4b')](get_open_tabs(_0x87dc('0x5e'),_0x301687[_0x87dc('0x4d')]));_0x5e05b0['push'](get_open_tabs(_0x87dc('0x4e'),_0x301687[_0x87dc('0x4d')]));return BPromise[_0x87dc('0x5f')](_0x5e05b0);}else{return values;}})[_0x87dc('0x16')](function(){return values;})[_0x87dc('0x16')](respondWithResult(_0x4e6c5d,null))[_0x87dc('0x21')](handleError(_0x4e6c5d,null));};exports['update']=function(_0x529a50,_0x83262a){if(_0x529a50[_0x87dc('0x60')]['id']){delete _0x529a50[_0x87dc('0x60')]['id'];}delete _0x529a50[_0x87dc('0x60')]['role'];return db[_0x87dc('0x3d')]['find']({'where':{'id':_0x529a50[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x83262a,null))[_0x87dc('0x16')](saveUpdates(_0x529a50[_0x87dc('0x60')],null))[_0x87dc('0x16')](respondWithResult(_0x83262a,null))[_0x87dc('0x21')](handleError(_0x83262a,null));};exports['describe']=function(_0x5948e9,_0x39fd66){return db[_0x87dc('0x3d')][_0x87dc('0x61')]()[_0x87dc('0x16')](respondWithResult(_0x39fd66,null))[_0x87dc('0x21')](handleError(_0x39fd66,null));};exports[_0x87dc('0x62')]=function(_0x14d99b,_0x41c91a){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x14d99b['params']['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x41c91a,null))['then'](function(_0x127814){if(_0x127814){return _0x127814[_0x87dc('0x62')](_0x14d99b[_0x87dc('0x60')]['ids'],_[_0x87dc('0x63')](_0x14d99b[_0x87dc('0x60')],[_0x87dc('0x64'),'id'])||{});}})[_0x87dc('0x16')](respondWithResult(_0x41c91a,null))[_0x87dc('0x21')](handleError(_0x41c91a,null));};function validateUser(_0x126dbf){return new BPromise(function(_0x91a3a8,_0x5480a5){if(_0x126dbf[_0x87dc('0x65')])return _0x91a3a8(_0x126dbf);return db['Setting'][_0x87dc('0x66')](0x1)[_0x87dc('0x16')](function(_0x101702){if(_0x101702[_0x87dc('0x67')])authService[_0x87dc('0x68')](_0x126dbf[_0x87dc('0x55')]);db[_0x87dc('0x3d')][_0x87dc('0x69')]('internal')[_0x87dc('0x16')](function(_0x2305a9){if(_[_0x87dc('0x6a')](_0x2305a9)){_0x126dbf['internal']=_0x101702[_0x87dc('0x6b')]||0x1;return;}if(_['isNil'](_0x101702[_0x87dc('0x6b')])||_0x101702[_0x87dc('0x6b')]===_0x2305a9){_0x126dbf[_0x87dc('0x65')]=_0x2305a9+0x1;return;}if(_0x101702['min_internal']>_0x2305a9){_0x126dbf[_0x87dc('0x65')]=_0x101702[_0x87dc('0x6b')];return;}return db['sequelize'][_0x87dc('0x43')](_0x87dc('0x6c'),{'type':db[_0x87dc('0x6d')]['QueryTypes'][_0x87dc('0x6e')]})[_0x87dc('0x16')](function(_0x31a921){if(_0x31a921&&_0x31a921['length']){for(var _0x4ee532=0x0,_0xc47ed2=_0x31a921[_0x87dc('0x5a')];_0x4ee532<_0xc47ed2&&_[_0x87dc('0x6a')](_0x126dbf[_0x87dc('0x65')]);_0x4ee532++){if(_0x101702[_0x87dc('0x6b')]<=_0x31a921[_0x4ee532][_0x87dc('0x6f')]){_0x126dbf[_0x87dc('0x65')]=_0x31a921[_0x4ee532][_0x87dc('0x6f')];}else if(_0x101702[_0x87dc('0x6b')]>_0x31a921[_0x4ee532][_0x87dc('0x6f')]&&_0x101702[_0x87dc('0x6b')]<=_0x31a921[_0x4ee532]['to']){_0x126dbf['internal']=_0x101702[_0x87dc('0x6b')];}}}if(_['isNil'](_0x126dbf[_0x87dc('0x65')])){_0x126dbf['internal']=_0x2305a9+0x1;}return _0x91a3a8(_0x126dbf);});});})[_0x87dc('0x21')](function(_0x32cda3){_0x5480a5(_0x32cda3);});});}function updateUser(_0x4b863c){return new BPromise(function(_0x34fe8f,_0x4f513a){try{if(_0x4b863c[_0x87dc('0x70')]){_0x4b863c[_0x87dc('0x71')]=_0x4b863c[_0x87dc('0x65')];_0x4b863c[_0x87dc('0x72')]={'mailbox':_0x4b863c[_0x87dc('0x65')],'password':_0x4b863c[_0x87dc('0x55')],'fullname':_0x4b863c[_0x87dc('0x73')],'email':_0x4b863c['email']};}if(_0x4b863c[_0x87dc('0x2e')]==='agent'){if(!_0x4b863c[_0x87dc('0x74')])_0x4b863c[_0x87dc('0x74')]=[_0x87dc('0x75'),'102','103',_0x87dc('0x76'),_0x87dc('0x77'),_0x87dc('0x78'),_0x87dc('0x79'),_0x87dc('0x7a'),_0x87dc('0x7b'),_0x87dc('0x7c'),'109',_0x87dc('0x7d'),_0x87dc('0x7e'),_0x87dc('0x7f'),'115'];}_0x34fe8f(_0x4b863c);}catch(_0x5bec18){_0x4f513a(_0x5bec18);}});}exports[_0x87dc('0x80')]=function(_0x2a044a,_0x4c0299){if(_0x2a044a[_0x87dc('0x2f')]['role']===_0x87dc('0x31'))throw new Error('Unauthorized');if(_0x2a044a['body'][_0x87dc('0x2e')]===_0x87dc('0x2f')&&_0x2a044a['user'][_0x87dc('0x2e')]!==_0x87dc('0x81')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0x2a044a['body'][_0x87dc('0x2e')]===_0x87dc('0x81')&&_0x2a044a[_0x87dc('0x2f')][_0x87dc('0x2e')]!==_0x87dc('0x81')){throw new Error(_0x87dc('0x82'));}return licenseUtil[_0x87dc('0x83')]([_0x2a044a[_0x87dc('0x60')]])[_0x87dc('0x16')](function(){return validateUser(_0x2a044a['body']);})[_0x87dc('0x16')](function(_0x17c52f){return updateUser(_0x17c52f)['then'](function(_0x1d3012){if(_0x1d3012['role']===_0x87dc('0x81')){_0x1d3012['settingsEnabled']=_0x2a044a[_0x87dc('0x2f')]['settingsEnabled'];delete _0x1d3012[_0x87dc('0x84')];}return _0x1d3012;});})['then'](function(_0x4b8f70){return db[_0x87dc('0x3d')]['create'](_0x4b8f70,{'include':[{'model':db['VoiceMail'],'as':_0x87dc('0x72')}]});})['then'](function(_0x18b7e0){if(_0x2a044a[_0x87dc('0x60')][_0x87dc('0x2e')]===_0x87dc('0x2f'))return _0x18b7e0;if(_0x2a044a['user'][_0x87dc('0x2e')]!=='user')return _0x18b7e0;return db[_0x87dc('0x85')][_0x87dc('0x37')]({'where':{'name':_0x18b7e0[_0x87dc('0x2e')]==='agent'?_0x87dc('0x30'):_0x87dc('0x32'),'userProfileId':_0x2a044a[_0x87dc('0x2f')][_0x87dc('0x84')]},'raw':!![]})[_0x87dc('0x16')](function(_0x87ebe3){if(!_0x87ebe3||_0x87ebe3[_0x87dc('0x86')]!=0x0)return _0x18b7e0;return db['UserProfileResource'][_0x87dc('0x80')]({'name':_0x18b7e0[_0x87dc('0x38')],'resourceId':_0x18b7e0['id'],'type':_0x87ebe3[_0x87dc('0x38')],'sectionId':_0x87ebe3['id']},{})[_0x87dc('0x16')](function(){return _0x18b7e0;});})[_0x87dc('0x21')](function(_0x162fcc){logger[_0x87dc('0x1c')](_0x87dc('0x87'),_0x162fcc);throw _0x162fcc;});})[_0x87dc('0x16')](respondWithResult(_0x4c0299,0xc9))['catch'](handleError(_0x4c0299,null));};exports[_0x87dc('0x88')]=function(_0x5c19b7,_0x4bb297){var _0x54a361=_0x5c19b7['body'];var _0x2b0772=[];if(_0x5c19b7['user'][_0x87dc('0x2e')]===_0x87dc('0x31'))throw new Error('Unauthorized');if(_[_0x87dc('0x89')](_0x54a361,[_0x87dc('0x2e'),_0x87dc('0x2f')])&&_0x5c19b7[_0x87dc('0x2f')][_0x87dc('0x2e')]!==_0x87dc('0x81')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_[_0x87dc('0x89')](_0x54a361,['role',_0x87dc('0x81')])&&_0x5c19b7[_0x87dc('0x2f')][_0x87dc('0x2e')]!==_0x87dc('0x81')){throw new Error(_0x87dc('0x8a'));}return licenseUtil[_0x87dc('0x83')](_0x54a361)[_0x87dc('0x16')](function(){return validateUser(_0x54a361[0x0]);})[_0x87dc('0x16')](function(){for(var _0x10426f=0x1;_0x10426f<_0x54a361[_0x87dc('0x5a')];_0x10426f++){var _0x3f57be=_0x54a361[_0x10426f-0x1][_0x87dc('0x65')];if(!_0x54a361[_0x10426f][_0x87dc('0x65')])_0x54a361[_0x10426f][_0x87dc('0x65')]=_0x3f57be+0x1;_0x2b0772[_0x87dc('0x4b')](validateUser(_0x54a361[_0x10426f]));}return BPromise[_0x87dc('0x5f')](_0x2b0772);})[_0x87dc('0x16')](function(){_0x2b0772=[];for(var _0x222a35=0x0;_0x222a35<_0x54a361['length'];_0x222a35++){_0x2b0772[_0x87dc('0x4b')](updateUser(_0x54a361[_0x222a35]));}return BPromise[_0x87dc('0x5f')](_0x2b0772);})[_0x87dc('0x16')](function(){return BPromise[_0x87dc('0x8b')](_0x54a361,function(_0x4648c6){return db[_0x87dc('0x3d')][_0x87dc('0x80')](_0x4648c6,{'include':[{'model':db['VoiceMail'],'as':_0x87dc('0x72')}]})['then'](function(_0x551daf){_0x4648c6['id']=_0x551daf['id'];return _0x4648c6;});});})[_0x87dc('0x16')](function(_0x463733){if(_0x5c19b7[_0x87dc('0x60')][_0x87dc('0x2e')]===_0x87dc('0x2f'))return _0x463733;if(_0x5c19b7[_0x87dc('0x2f')]['role']!==_0x87dc('0x2f'))return _0x463733;var _0x5652ed=_[_0x87dc('0x89')](_0x463733,function(_0x3d2421){return _0x3d2421['role']===_0x87dc('0x31')||_0x3d2421['role']==='telephone';});if(!_0x5652ed)return _0x463733;return db[_0x87dc('0x85')][_0x87dc('0x8c')]({'where':{'name':{'$or':[_0x87dc('0x30'),'Telephones']},'userProfileId':_0x5c19b7[_0x87dc('0x2f')]['userProfileId']},'raw':!![]})[_0x87dc('0x16')](function(_0x43da2c){if(_[_0x87dc('0x8d')](_0x43da2c)||!_[_0x87dc('0x89')](_0x43da2c,[_0x87dc('0x86'),0x0]))return _0x463733;_0x2b0772=[];var _0x2329ce=_(_0x43da2c)[_0x87dc('0x34')](function(_0x1631c0){if(_0x1631c0[_0x87dc('0x86')]===0x1)return;return _0x1631c0[_0x87dc('0x38')]===_0x87dc('0x30')?'agent':_0x87dc('0x33');})[_0x87dc('0x8e')]()[_0x87dc('0x35')]();for(var _0x273440=0x0;_0x273440<_0x463733[_0x87dc('0x5a')];_0x273440++){if(!_['includes'](_0x2329ce,_0x463733[_0x273440]['role']))return;var _0x23f758=_0x463733[_0x273440][_0x87dc('0x2e')]===_0x87dc('0x31')?_0x87dc('0x30'):_0x87dc('0x32');_0x2b0772[_0x87dc('0x4b')](db[_0x87dc('0x8f')][_0x87dc('0x80')]({'name':_0x463733[_0x273440][_0x87dc('0x38')],'resourceId':_0x463733[_0x273440]['id'],'type':_0x23f758,'sectionId':_['find'](_0x43da2c,[_0x87dc('0x38'),_0x23f758])['id']},{}));}return BPromise[_0x87dc('0x5f')](_0x2b0772);});})[_0x87dc('0x16')](respondWithResult(_0x4bb297,0xc9))[_0x87dc('0x21')](handleError(_0x4bb297,null));};exports[_0x87dc('0x90')]=function(_0x448519,_0x249dc2){if(_0x448519[_0x87dc('0x60')]['id']){delete _0x448519[_0x87dc('0x60')]['id'];}return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x448519[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](function(_0xf725f6){if(!_0xf725f6)return null;if(_0xf725f6['id']===_0x448519[_0x87dc('0x2f')]['id']){if(!_0x448519['body'][_0x87dc('0x91')]||!_0x448519[_0x87dc('0x60')][_0x87dc('0x92')]){throw new db[(_0x87dc('0x93'))][(_0x87dc('0x94'))](_0x87dc('0x95'));}if(!_0xf725f6['authenticate'](_0x448519['body'][_0x87dc('0x91')])){throw new db[(_0x87dc('0x93'))]['ValidationError']('Wrong\x20credentials');}if(_0x448519[_0x87dc('0x60')][_0x87dc('0x91')]===_0x448519[_0x87dc('0x60')][_0x87dc('0x92')]){throw new db[(_0x87dc('0x93'))][(_0x87dc('0x94'))](_0x87dc('0x96'));}}else if(_0x448519['user'][_0x87dc('0x2e')]===_0x87dc('0x81')){if(!_0x448519['body'][_0x87dc('0x92')]){throw new db[(_0x87dc('0x93'))]['ValidationError'](_0x87dc('0x97'));}}else if(_0x448519['user'][_0x87dc('0x2e')]===_0x87dc('0x2f')){if(!_0x448519[_0x87dc('0x60')][_0x87dc('0x92')]){throw new db['Sequelize'][(_0x87dc('0x94'))](_0x87dc('0x97'));}if(_0xf725f6['role']!=='agent'){throw new db['Sequelize'][(_0x87dc('0x94'))](_0x87dc('0x98'));}}else{throw new db[(_0x87dc('0x93'))][(_0x87dc('0x94'))](_0x87dc('0x98'));}return _0xf725f6;})['then'](handleEntityNotFound(_0x249dc2,null))[_0x87dc('0x16')](function(_0x2a2e24){return db[_0x87dc('0x99')][_0x87dc('0x9a')]({'attributes':['id',_0x87dc('0x67'),'enforcePasswordHistory','passwordHistoryLimit']})['then'](function(_0x2eadb9){if(_0x2eadb9[_0x87dc('0x67')])authService[_0x87dc('0x68')](_0x448519[_0x87dc('0x60')][_0x87dc('0x92')]);if(!_0x2eadb9['enforcePasswordHistory']||!_0x2a2e24[_0x87dc('0x9b')])return _0x2a2e24;authService['validatePasswordHistory'](_0x448519[_0x87dc('0x60')][_0x87dc('0x92')],_0x2a2e24[_0x87dc('0x9b')],_0x2eadb9[_0x87dc('0x9c')]);return _0x2a2e24;})[_0x87dc('0x16')](saveUpdates({'password':_0x448519[_0x87dc('0x60')][_0x87dc('0x92')],'passwordResetAt':_0x448519[_0x87dc('0x2f')]['id']==_0x448519[_0x87dc('0x52')]['id']?moment():null,'previousPasswords':authService[_0x87dc('0x9d')](_0x448519[_0x87dc('0x60')][_0x87dc('0x92')],_0x2a2e24[_0x87dc('0x9b')])},null));})[_0x87dc('0x16')](respondWithResult(_0x249dc2,null))['catch'](handleError(_0x249dc2,null));};exports[_0x87dc('0x9e')]=function(_0x496dc0,_0xa1f060){var _0x1aa5fb=_0x496dc0[_0x87dc('0x60')][_0x87dc('0x9f')];return db[_0x87dc('0x3d')]['find']({'where':{'id':_0x496dc0[_0x87dc('0x52')]['id']},'attributes':['id','name',_0x87dc('0x2e'),_0x87dc('0xa0'),_0x87dc('0xa1'),_0x87dc('0xa2'),_0x87dc('0xa3')]})[_0x87dc('0x16')](handleEntityNotFound(_0xa1f060,null))[_0x87dc('0x16')](function(_0x1c1cfc){if(_0x1c1cfc){if(!utils[_0x87dc('0xa4')](_0x1aa5fb)){throw new db[(_0x87dc('0x93'))]['ValidationError'](_0x87dc('0xa5'));}return _0x1c1cfc['add'+_['capitalize'](_0x1aa5fb['toLowerCase']())+_0x87dc('0xa6')](_0x496dc0[_0x87dc('0x60')][_0x87dc('0x64')],{'penalty':_0x496dc0[_0x87dc('0x60')][_0x87dc('0xa7')]||0x0})['spread'](function(_0x2c41de){for(var _0x46c4c0=0x0;_0x46c4c0<_0x496dc0[_0x87dc('0x60')][_0x87dc('0x64')]['length'];_0x46c4c0+=0x1){var _0x33e345={'UserId':Number(_0x496dc0['params']['id'])};_0x33e345[_[_0x87dc('0xa8')](_0x1aa5fb[_0x87dc('0xa9')]())+_0x87dc('0xaa')]=Number(_0x496dc0[_0x87dc('0x60')][_0x87dc('0x64')][_0x46c4c0]);socket[_0x87dc('0x2c')](_0x87dc('0x2f')+_['capitalize'](_0x1aa5fb[_0x87dc('0xa9')]())+_0x87dc('0xab'),_0x33e345);}return _0x2c41de;})['then'](function(){if(_0x1aa5fb===_0x87dc('0xac')){return db[_0x87dc('0xad')][_0x87dc('0x8c')]({'where':{'id':_0x496dc0[_0x87dc('0x60')]['ids']||[]},'raw':!![],'attributes':['id',_0x87dc('0x38')]});}})[_0x87dc('0x16')](function(_0x5b8876){var _0x4373aa=_0x1c1cfc[_0x87dc('0x2d')]({'plain':!![]});var _0x10129d=[];if(_0x1aa5fb===_0x87dc('0xac')&&_0x4373aa[_0x87dc('0x2e')]===_0x87dc('0x31')&&_0x4373aa[_0x87dc('0xa0')]){for(var _0x578bdd=0x0;_0x578bdd<_0x5b8876[_0x87dc('0x5a')];_0x578bdd+=0x1){_0x10129d[_0x87dc('0x4b')]({'membername':_0x4373aa[_0x87dc('0x38')],'UserId':_0x4373aa['id'],'queue_name':_0x5b8876[_0x578bdd][_0x87dc('0x38')],'VoiceQueueId':_0x5b8876[_0x578bdd]['id'],'interface':_[_0x87dc('0x6a')](_0x4373aa[_0x87dc('0xa3')])?util[_0x87dc('0xae')](_0x87dc('0xaf'),_0x4373aa[_0x87dc('0x38')]):_0x4373aa['interface'],'paused':_0x4373aa['voicePause']||![],'penalty':_0x496dc0['body'][_0x87dc('0xa7')]||0x0});}return BPromise[_0x87dc('0x8b')](_0x10129d,function(_0x2edbed){return db[_0x87dc('0xb0')]['upsert'](_0x2edbed);});}return _0x1c1cfc;});}})[_0x87dc('0x16')](respondWithStatusCode(_0xa1f060,null))['catch'](handleError(_0xa1f060,null));};exports[_0x87dc('0xb1')]=function(_0x13153b,_0x3cf783){var _0x436be4,_0x4b64a0;return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x13153b[_0x87dc('0x52')]['id']},'attributes':['id',_0x87dc('0x38'),_0x87dc('0x2e')]})['then'](handleEntityNotFound(_0x3cf783,null))[_0x87dc('0x16')](function(_0x2dfcc7){if(_0x2dfcc7){_0x436be4=_0x2dfcc7;if(!_0x13153b[_0x87dc('0x43')][_0x87dc('0x9f')]||!utils[_0x87dc('0xa4')](_0x13153b[_0x87dc('0x43')][_0x87dc('0x9f')])){throw new db['Sequelize']['ValidationError']('Unknown\x20channel');}return _0x2dfcc7[_0x87dc('0xb2')+_[_0x87dc('0xa8')](_0x13153b[_0x87dc('0x43')][_0x87dc('0x9f')][_0x87dc('0xa9')]())+_0x87dc('0xa6')](_0x13153b['query'][_0x87dc('0x64')]);}})['then'](function(_0x3d5d8f){if(_[_0x87dc('0xb3')](_0x13153b[_0x87dc('0x43')][_0x87dc('0x64')])){for(var _0x179bca=0x0;_0x179bca<_0x13153b[_0x87dc('0x43')][_0x87dc('0x64')][_0x87dc('0x5a')];_0x179bca+=0x1){_0x4b64a0={'UserId':Number(_0x13153b[_0x87dc('0x52')]['id'])};_0x4b64a0[_[_0x87dc('0xa8')](_0x13153b[_0x87dc('0x43')]['channel']['toLowerCase']())+'QueueId']=Number(_0x13153b[_0x87dc('0x43')][_0x87dc('0x64')][_0x179bca]);socket[_0x87dc('0x2c')](_0x87dc('0x2f')+_[_0x87dc('0xa8')](_0x13153b[_0x87dc('0x43')][_0x87dc('0x9f')][_0x87dc('0xa9')]())+'Queue:remove',_0x4b64a0);}}else{_0x4b64a0={'UserId':Number(_0x13153b['params']['id'])};_0x4b64a0[_['capitalize'](_0x13153b['query']['channel'][_0x87dc('0xa9')]())+_0x87dc('0xaa')]=Number(_0x13153b[_0x87dc('0x43')][_0x87dc('0x64')]);socket[_0x87dc('0x2c')](_0x87dc('0x2f')+_['capitalize'](_0x13153b[_0x87dc('0x43')][_0x87dc('0x9f')][_0x87dc('0xa9')]())+_0x87dc('0xb4'),_0x4b64a0);}return _0x3d5d8f;})['then'](function(){if(_0x13153b['query'][_0x87dc('0x9f')]==='voice'){return db['UserVoiceQueueRt'][_0x87dc('0x39')]({'where':{'UserId':_0x13153b['params']['id'],'VoiceQueueId':_0x13153b[_0x87dc('0x43')][_0x87dc('0x64')]},'individualHooks':!![]})[_0x87dc('0x16')](function(){return _0x436be4;});}return _0x436be4;})[_0x87dc('0x16')](respondWithStatusCode(_0x3cf783,null))[_0x87dc('0x21')](handleError(_0x3cf783,null));};exports['addAvatar']=function(_0x53958f,_0x21348c){_0x53958f[_0x87dc('0x60')][_0x87dc('0xb5')]=_0x53958f[_0x87dc('0xb6')][_0x87dc('0xb7')];return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x53958f[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x21348c,null))['then'](saveUpdates(_0x53958f[_0x87dc('0x60')],null))[_0x87dc('0x16')](respondWithResult(_0x21348c,null))[_0x87dc('0x21')](handleError(_0x21348c,null));};exports[_0x87dc('0xb8')]=function(_0x41b755,_0x5629a5){var _0x585388=path[_0x87dc('0xb9')](config['root'],_0x87dc('0xba'));return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x41b755[_0x87dc('0x52')]['id']},'attributes':['id','userpic'],'raw':!![]})[_0x87dc('0x16')](handleEntityNotFound(_0x5629a5,null))[_0x87dc('0x16')](function(_0x1ee206){if(_0x1ee206){if(_[_0x87dc('0x6a')](_0x1ee206[_0x87dc('0xb5')])){return _0x5629a5[_0x87dc('0xbb')](_0x585388);}else{if(!fs[_0x87dc('0xbc')](path[_0x87dc('0xb9')](config['root'],_0x87dc('0xbd'),_0x1ee206[_0x87dc('0xb5')]))){return _0x5629a5[_0x87dc('0xbb')](_0x585388);}return _0x5629a5[_0x87dc('0xbb')](path[_0x87dc('0xb9')](config[_0x87dc('0xbe')],_0x87dc('0xbd'),_0x1ee206[_0x87dc('0xb5')]));}}})['catch'](handleError(_0x5629a5,null));};exports[_0x87dc('0xbf')]=function(_0x44cc8a,_0xe67e3){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x44cc8a['params']['id']},'attributes':['id']})[_0x87dc('0x16')](handleEntityNotFound(_0xe67e3,null))[_0x87dc('0x16')](function(_0x485420){var _0x238962=[];values=_0x485420[_0x87dc('0x4d')];_0x238962[_0x87dc('0x4b')](get_open_tabs(_0x87dc('0x4c'),_0x485420[_0x87dc('0x4d')]));_0x238962[_0x87dc('0x4b')](get_open_tabs('sms',_0x485420[_0x87dc('0x4d')]));_0x238962[_0x87dc('0x4b')](get_open_tabs(_0x87dc('0x4f'),_0x485420[_0x87dc('0x4d')]));_0x238962[_0x87dc('0x4b')](get_open_tabs(_0x87dc('0x50'),_0x485420[_0x87dc('0x4d')]));_0x238962[_0x87dc('0x4b')](get_open_tabs('fax',_0x485420[_0x87dc('0x4d')]));_0x238962[_0x87dc('0x4b')](get_open_tabs('mail',_0x485420[_0x87dc('0x4d')]));return BPromise[_0x87dc('0x5f')](_0x238962);})[_0x87dc('0x16')](function(_0x5d0b57){if(_0x5d0b57){var _0x3abcea=_[_0x87dc('0x34')](values[_0x87dc('0xc0')],function(_0x1b59be){return{'channel':'CHAT','id':_0x1b59be['id'],'createdAt':_0x1b59be['createdAt']};});var _0x5987d9=_[_0x87dc('0x34')](values[_0x87dc('0xc1')],function(_0x338bb2){return{'channel':'FAX','id':_0x338bb2['id'],'createdAt':_0x338bb2['createdAt']};});var _0x59bd35=_[_0x87dc('0x34')](values[_0x87dc('0xc2')],function(_0x3f2f55){return{'channel':_0x87dc('0xc3'),'id':_0x3f2f55['id'],'createdAt':_0x3f2f55['createdAt']};});var _0x10a343=_[_0x87dc('0x34')](values['MailOpenTabs'],function(_0x405043){return{'channel':_0x87dc('0xc4'),'id':_0x405043['id'],'createdAt':_0x405043[_0x87dc('0xc5')]};});var _0x52eec4=_['map'](values['SmsOpenTabs'],function(_0x2662fa){return{'channel':_0x87dc('0xc6'),'id':_0x2662fa['id'],'createdAt':_0x2662fa[_0x87dc('0xc5')]};});var _0x14d6d7=_[_0x87dc('0x34')](values['WhatsappOpenTabs'],function(_0x2b9429){return{'channel':'WHATSAPP','id':_0x2b9429['id'],'createdAt':_0x2b9429[_0x87dc('0xc5')]};});var _0x2fa5e9=_[_0x87dc('0xc7')](_0x3abcea,_0x5987d9,_0x59bd35,_0x10a343,_0x52eec4,_0x14d6d7);var _0xa789a8={'count':_0x2fa5e9[_0x87dc('0x5a')],'rows':_0x2fa5e9};return _0xa789a8;}else return null;})['then'](respondWithResult(_0xe67e3,null))[_0x87dc('0x21')](handleError(_0xe67e3,null));};exports[_0x87dc('0xc8')]=function(_0x242596,_0x18d0a7){var _0x46df2f={};var _0x410c3d={};var _0x26dea2;var _0x706ff;return db[_0x87dc('0x3d')]['findOne']({'where':{'id':_0x242596[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x18d0a7,null))[_0x87dc('0x16')](function(_0x47e890){if(_0x47e890){_0x26dea2=_0x47e890;_0x410c3d['model']=_[_0x87dc('0x56')](db[_0x87dc('0xc9')]['rawAttributes']);_0x410c3d[_0x87dc('0x43')]=_[_0x87dc('0x56')](_0x242596[_0x87dc('0x43')]);_0x410c3d[_0x87dc('0x57')]=_[_0x87dc('0x58')](_0x410c3d[_0x87dc('0x53')],_0x410c3d[_0x87dc('0x43')]);_0x46df2f[_0x87dc('0x48')]=_[_0x87dc('0x58')](_0x410c3d[_0x87dc('0x53')],qs[_0x87dc('0x59')](_0x242596[_0x87dc('0x43')]['fields']));_0x46df2f[_0x87dc('0x48')]=_0x46df2f['attributes'][_0x87dc('0x5a')]?_0x46df2f['attributes']:_0x410c3d[_0x87dc('0x53')];_0x46df2f[_0x87dc('0xca')]=qs[_0x87dc('0xcb')](_0x242596[_0x87dc('0x43')]['sort']);_0x46df2f['where']=qs[_0x87dc('0x57')](_['pick'](_0x242596['query'],_0x410c3d[_0x87dc('0x57')]));if(_0x242596['query'][_0x87dc('0xcc')]){_0x46df2f['where']=_[_0x87dc('0xcd')](_0x46df2f[_0x87dc('0x42')],{'$or':_['map'](_0x46df2f[_0x87dc('0x48')],function(_0x237d79){var _0x451229={};_0x451229[_0x237d79]={'$like':'%'+_0x242596[_0x87dc('0x43')][_0x87dc('0xcc')]+'%'};return _0x451229;})});}_0x46df2f=_[_0x87dc('0xcd')]({},_0x46df2f,_0x242596['options']);return _0x26dea2[_0x87dc('0xc8')](_0x46df2f);}})[_0x87dc('0x16')](function(_0x388f85){if(_0x388f85){_0x706ff=_0x388f85[_0x87dc('0x5a')];if(_0x242596[_0x87dc('0x43')][_0x87dc('0xce')](_0x87dc('0x44'))){_0x46df2f[_0x87dc('0x45')]=[{'model':db[_0x87dc('0xcf')],'as':'List','required':![]},{'model':db[_0x87dc('0xd0')],'as':'Tags','attributes':['id',_0x87dc('0x38'),_0x87dc('0xd1')],'where':_0x242596[_0x87dc('0x43')][_0x87dc('0xd2')]?{'id':_0x242596[_0x87dc('0x43')]['tag']}:undefined,'required':_0x242596[_0x87dc('0x43')][_0x87dc('0xd2')]?!![]:![]}];}if(!_0x242596['query'][_0x87dc('0xce')](_0x87dc('0xd3'))){_0x46df2f['limit']=qs['limit'](_0x242596[_0x87dc('0x43')]['limit']);_0x46df2f[_0x87dc('0x25')]=qs[_0x87dc('0x25')](_0x242596[_0x87dc('0x43')][_0x87dc('0x25')]);}return _0x26dea2['getContacts'](_0x46df2f);}})[_0x87dc('0x16')](function(_0x404b7a){if(_0x404b7a){return _0x404b7a?{'count':_0x706ff,'rows':_0x404b7a}:null;}})[_0x87dc('0x16')](respondWithResult(_0x18d0a7,null))[_0x87dc('0x21')](handleError(_0x18d0a7,null));};exports[_0x87dc('0xd4')]=function(_0x5f01b1,_0x48b32d){var _0x3ef3df;var _0x188d87={};var _0x40356a;return db[_0x87dc('0x3d')][_0x87dc('0x9a')]({'where':{'id':_0x5f01b1[_0x87dc('0x52')]['id']},'attributes':['id','name','role']})[_0x87dc('0x16')](handleEntityNotFound(_0x48b32d,null))[_0x87dc('0x16')](function(_0x113a36){if(!utils['isValidChannel'](_0x5f01b1['query'][_0x87dc('0x9f')])){throw new db[(_0x87dc('0x93'))][(_0x87dc('0x94'))]('Unknown\x20channel');}_0x3ef3df=_0x113a36;var _0x3202a4={};_0x3202a4[_0x87dc('0x53')]=_[_0x87dc('0x56')](db[_[_0x87dc('0xa8')](_0x5f01b1['query']['channel'])+_0x87dc('0xd5')][_0x87dc('0x3e')]);_0x3202a4[_0x87dc('0x43')]=_[_0x87dc('0x56')](_0x5f01b1[_0x87dc('0x43')]);_0x3202a4[_0x87dc('0x57')]=_[_0x87dc('0x58')](_0x3202a4[_0x87dc('0x53')],_0x3202a4[_0x87dc('0x43')]);_0x188d87[_0x87dc('0x48')]=_[_0x87dc('0x58')](_0x3202a4[_0x87dc('0x53')],qs[_0x87dc('0x59')](_0x5f01b1[_0x87dc('0x43')]['fields']));_0x188d87[_0x87dc('0x48')]=_0x188d87['attributes']['length']?_0x188d87[_0x87dc('0x48')]:_0x3202a4[_0x87dc('0x53')];_0x188d87[_0x87dc('0xca')]=qs['sort'](_0x5f01b1['query'][_0x87dc('0xcb')]);_0x188d87[_0x87dc('0x42')]=qs['filters'](_[_0x87dc('0xd6')](_0x5f01b1['query'],_0x3202a4[_0x87dc('0x57')]));if(_0x5f01b1[_0x87dc('0x43')][_0x87dc('0xcc')]){_0x188d87[_0x87dc('0x42')]=_['merge'](_0x188d87[_0x87dc('0x42')],{'$or':_['map'](_0x188d87['attributes'],function(_0x2affbd){var _0x32ea1d={};_0x32ea1d[_0x2affbd]={'$like':'%'+_0x5f01b1[_0x87dc('0x43')][_0x87dc('0xcc')]+'%'};return _0x32ea1d;})});}_0x188d87=_[_0x87dc('0xcd')]({},_0x188d87,_0x5f01b1[_0x87dc('0x5c')]);switch(_0x3ef3df[_0x87dc('0x2e')]){case'admin':return db[_['capitalize'](_0x5f01b1['query'][_0x87dc('0x9f')])+_0x87dc('0xd5')][_0x87dc('0x8c')](_0x188d87);case _0x87dc('0x2f'):case _0x87dc('0x31'):return _0x3ef3df[_0x87dc('0x2d')+_[_0x87dc('0xa8')](_0x5f01b1['query']['channel'])+_0x87dc('0xa6')](_0x188d87);default:throw new db[(_0x87dc('0x93'))]['ValidationError'](_0x87dc('0xd7'));}})[_0x87dc('0x16')](function(_0x4ad6bb){_0x40356a=_0x4ad6bb['length'];if(!_0x5f01b1['query'][_0x87dc('0xce')]('nolimit')){_0x188d87[_0x87dc('0x26')]=qs[_0x87dc('0x26')](_0x5f01b1[_0x87dc('0x43')]['limit']);_0x188d87[_0x87dc('0x25')]=qs[_0x87dc('0x25')](_0x5f01b1[_0x87dc('0x43')][_0x87dc('0x25')]);}switch(_0x3ef3df['role']){case'admin':return db[_[_0x87dc('0xa8')](_0x5f01b1['query'][_0x87dc('0x9f')])+_0x87dc('0xd5')][_0x87dc('0x8c')](_0x188d87);case _0x87dc('0x2f'):case _0x87dc('0x31'):return _0x3ef3df['get'+_[_0x87dc('0xa8')](_0x5f01b1[_0x87dc('0x43')][_0x87dc('0x9f')])+_0x87dc('0xa6')](_0x188d87);}})[_0x87dc('0x16')](function(_0x15a09e){return{'count':_0x40356a,'rows':_0x15a09e};})[_0x87dc('0x16')](respondWithResult(_0x48b32d,null))[_0x87dc('0x21')](handleError(_0x48b32d,null));};exports[_0x87dc('0xd8')]=function(_0x7aacd1,_0x1a0a62){var _0x1de475={};var _0x32241f={};var _0x239c5d;var _0x5c6e49;return db[_0x87dc('0x3d')]['findOne']({'where':{'id':_0x7aacd1['params']['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x1a0a62,null))[_0x87dc('0x16')](function(_0x3087b9){if(_0x3087b9){_0x239c5d=_0x3087b9;_0x32241f[_0x87dc('0x53')]=_['keys'](db[_0x87dc('0xb0')][_0x87dc('0x3e')]);_0x32241f['query']=_[_0x87dc('0x56')](_0x7aacd1[_0x87dc('0x43')]);_0x32241f[_0x87dc('0x57')]=_['intersection'](_0x32241f[_0x87dc('0x53')],_0x32241f[_0x87dc('0x43')]);_0x1de475[_0x87dc('0x48')]=_[_0x87dc('0x58')](_0x32241f[_0x87dc('0x53')],qs[_0x87dc('0x59')](_0x7aacd1[_0x87dc('0x43')][_0x87dc('0x59')]));_0x1de475['attributes']=_0x1de475[_0x87dc('0x48')]['length']?_0x1de475['attributes']:_0x32241f[_0x87dc('0x53')];_0x1de475[_0x87dc('0xca')]=qs[_0x87dc('0xcb')](_0x7aacd1[_0x87dc('0x43')]['sort']);_0x1de475['where']=qs['filters'](_['pick'](_0x7aacd1[_0x87dc('0x43')],_0x32241f[_0x87dc('0x57')]));if(_0x7aacd1[_0x87dc('0x43')][_0x87dc('0xcc')]){_0x1de475['where']=_[_0x87dc('0xcd')](_0x1de475['where'],{'$or':_['map'](_0x1de475[_0x87dc('0x48')],function(_0x318fb3){var _0x426696={};_0x426696[_0x318fb3]={'$like':'%'+_0x7aacd1[_0x87dc('0x43')]['filter']+'%'};return _0x426696;})});}_0x1de475=_[_0x87dc('0xcd')]({},_0x1de475,_0x7aacd1['options']);return _0x239c5d[_0x87dc('0xd8')](_0x1de475);}})[_0x87dc('0x16')](function(_0xa0e017){if(_0xa0e017){_0x5c6e49=_0xa0e017[_0x87dc('0x5a')];if(!_0x7aacd1[_0x87dc('0x43')]['hasOwnProperty'](_0x87dc('0xd3'))){_0x1de475[_0x87dc('0x26')]=qs[_0x87dc('0x26')](_0x7aacd1[_0x87dc('0x43')][_0x87dc('0x26')]);_0x1de475[_0x87dc('0x25')]=qs[_0x87dc('0x25')](_0x7aacd1[_0x87dc('0x43')][_0x87dc('0x25')]);}return _0x239c5d[_0x87dc('0xd8')](_0x1de475);}})[_0x87dc('0x16')](function(_0x3678fa){if(_0x3678fa){return _0x3678fa?{'count':_0x5c6e49,'rows':_0x3678fa}:null;}})[_0x87dc('0x16')](respondWithResult(_0x1a0a62,null))[_0x87dc('0x21')](handleError(_0x1a0a62,null));};exports[_0x87dc('0xd9')]=function(_0x27c71f,_0x38b6cf){var _0x4770f9={};var _0x5a6566={};var _0x4751d5;var _0x45ca0d;return db[_0x87dc('0x3d')][_0x87dc('0x9a')]({'where':{'id':_0x27c71f[_0x87dc('0x52')]['id']}})['then'](handleEntityNotFound(_0x38b6cf,null))[_0x87dc('0x16')](function(_0x1602e6){if(_0x1602e6){_0x4751d5=_0x1602e6;_0x5a6566[_0x87dc('0x53')]=_['keys'](db[_0x87dc('0xda')]['rawAttributes']);_0x5a6566['query']=_['keys'](_0x27c71f[_0x87dc('0x43')]);_0x5a6566['filters']=_[_0x87dc('0x58')](_0x5a6566[_0x87dc('0x53')],_0x5a6566[_0x87dc('0x43')]);_0x4770f9[_0x87dc('0x48')]=_['intersection'](_0x5a6566[_0x87dc('0x53')],qs[_0x87dc('0x59')](_0x27c71f[_0x87dc('0x43')][_0x87dc('0x59')]));_0x4770f9[_0x87dc('0x48')]=_0x4770f9[_0x87dc('0x48')][_0x87dc('0x5a')]?_0x4770f9[_0x87dc('0x48')]:_0x5a6566['model'];_0x4770f9['order']=qs[_0x87dc('0xcb')](_0x27c71f[_0x87dc('0x43')][_0x87dc('0xcb')]);_0x4770f9[_0x87dc('0x42')]=qs[_0x87dc('0x57')](_[_0x87dc('0xd6')](_0x27c71f[_0x87dc('0x43')],_0x5a6566[_0x87dc('0x57')]));if(_0x27c71f[_0x87dc('0x43')]['filter']){_0x4770f9[_0x87dc('0x42')]=_[_0x87dc('0xcd')](_0x4770f9[_0x87dc('0x42')],{'$or':_[_0x87dc('0x34')](_0x4770f9[_0x87dc('0x48')],function(_0x3525e3){var _0xb02bcb={};_0xb02bcb[_0x3525e3]={'$like':'%'+_0x27c71f['query']['filter']+'%'};return _0xb02bcb;})});}_0x4770f9=_[_0x87dc('0xcd')]({},_0x4770f9,_0x27c71f['options']);return _0x4751d5[_0x87dc('0xd9')](_0x4770f9);}})['then'](function(_0x4c6bc4){if(_0x4c6bc4){_0x45ca0d=_0x4c6bc4[_0x87dc('0x5a')];if(!_0x27c71f[_0x87dc('0x43')][_0x87dc('0xce')](_0x87dc('0xd3'))){_0x4770f9[_0x87dc('0x26')]=qs[_0x87dc('0x26')](_0x27c71f[_0x87dc('0x43')][_0x87dc('0x26')]);_0x4770f9[_0x87dc('0x25')]=qs[_0x87dc('0x25')](_0x27c71f['query'][_0x87dc('0x25')]);}return _0x4751d5[_0x87dc('0xd9')](_0x4770f9);}})[_0x87dc('0x16')](function(_0x2ae266){if(_0x2ae266){return _0x2ae266?{'count':_0x45ca0d,'rows':_0x2ae266}:null;}})[_0x87dc('0x16')](respondWithResult(_0x38b6cf,null))[_0x87dc('0x21')](handleError(_0x38b6cf,null));};exports[_0x87dc('0xdb')]=function(_0x165de8,_0x5dcc87){var _0x1d9cfb={'raw':!![],'where':{}};var _0x5275f6={};var _0x201e03={'count':0x0,'rows':[]};return db[_0x87dc('0x3d')][_0x87dc('0x9a')]({'where':{'id':_0x165de8[_0x87dc('0x52')]['id']}})['then'](handleEntityNotFound(_0x5dcc87,null))['then'](function(_0x19f1cc){if(_0x19f1cc){_0x5275f6[_0x87dc('0x53')]=_[_0x87dc('0x56')](db[_0x87dc('0xdc')][_0x87dc('0x3e')]);_0x5275f6[_0x87dc('0x43')]=_[_0x87dc('0x56')](_0x165de8[_0x87dc('0x43')]);_0x5275f6[_0x87dc('0x57')]=_[_0x87dc('0x58')](_0x5275f6[_0x87dc('0x53')],_0x5275f6['query']);_0x1d9cfb[_0x87dc('0x48')]=_[_0x87dc('0x58')](_0x5275f6[_0x87dc('0x53')],qs[_0x87dc('0x59')](_0x165de8[_0x87dc('0x43')][_0x87dc('0x59')]));_0x1d9cfb[_0x87dc('0x48')]=_0x1d9cfb['attributes'][_0x87dc('0x5a')]?_0x1d9cfb['attributes']:_0x5275f6[_0x87dc('0x53')];if(!_0x165de8[_0x87dc('0x43')]['hasOwnProperty'](_0x87dc('0xd3'))){_0x1d9cfb['limit']=qs['limit'](_0x165de8[_0x87dc('0x43')][_0x87dc('0x26')]);_0x1d9cfb['offset']=qs[_0x87dc('0x25')](_0x165de8[_0x87dc('0x43')][_0x87dc('0x25')]);}_0x1d9cfb['order']=qs[_0x87dc('0xcb')](_0x165de8[_0x87dc('0x43')][_0x87dc('0xcb')]);_0x1d9cfb[_0x87dc('0x42')]=qs['filters'](_['pick'](_0x165de8[_0x87dc('0x43')],_0x5275f6[_0x87dc('0x57')]));_0x1d9cfb[_0x87dc('0x42')][_0x87dc('0xdd')]=_0x19f1cc['id'];if(_0x165de8[_0x87dc('0x43')][_0x87dc('0xcc')]){_0x1d9cfb[_0x87dc('0x42')]=_[_0x87dc('0xcd')](_0x1d9cfb[_0x87dc('0x42')],{'$or':_[_0x87dc('0x34')](_0x1d9cfb['attributes'],function(_0x1d8f56){var _0x41db8d={};_0x41db8d[_0x1d8f56]={'$like':'%'+_0x165de8[_0x87dc('0x43')][_0x87dc('0xcc')]+'%'};return _0x41db8d;})});}_0x1d9cfb=_[_0x87dc('0xcd')]({},_0x1d9cfb,_0x165de8[_0x87dc('0x5c')]);return db['VoiceRecording'][_0x87dc('0x28')]({'where':_0x1d9cfb[_0x87dc('0x42')]})[_0x87dc('0x16')](function(_0x176e61){_0x201e03[_0x87dc('0x28')]=_0x176e61;if(_0x165de8[_0x87dc('0x43')][_0x87dc('0x44')]){_0x1d9cfb[_0x87dc('0x45')]=[{'all':!![]}];}return db['VoiceRecording']['findAll'](_0x1d9cfb);})[_0x87dc('0x16')](function(_0x54df30){_0x201e03[_0x87dc('0x49')]=_0x54df30;return _0x201e03;});}})[_0x87dc('0x16')](respondWithFilteredResult(_0x5dcc87,_0x1d9cfb))[_0x87dc('0x21')](handleError(_0x5dcc87,null));};exports['getScreenRecordings']=function(_0x30c531,_0x2998db){var _0x1c6992={'raw':!![],'where':{}};var _0x401bdd={};var _0x116a06={'count':0x0,'rows':[]};return db[_0x87dc('0x3d')]['findOne']({'where':{'id':_0x30c531[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x2998db,null))[_0x87dc('0x16')](function(_0x53e624){if(_0x53e624){_0x401bdd[_0x87dc('0x53')]=_[_0x87dc('0x56')](db[_0x87dc('0xde')]['rawAttributes']);_0x401bdd[_0x87dc('0x43')]=_[_0x87dc('0x56')](_0x30c531[_0x87dc('0x43')]);_0x401bdd['filters']=_[_0x87dc('0x58')](_0x401bdd[_0x87dc('0x53')],_0x401bdd[_0x87dc('0x43')]);_0x1c6992['attributes']=_[_0x87dc('0x58')](_0x401bdd[_0x87dc('0x53')],qs[_0x87dc('0x59')](_0x30c531[_0x87dc('0x43')]['fields']));_0x1c6992[_0x87dc('0x48')]=_0x1c6992[_0x87dc('0x48')]['length']?_0x1c6992['attributes']:_0x401bdd[_0x87dc('0x53')];if(!_0x30c531[_0x87dc('0x43')][_0x87dc('0xce')](_0x87dc('0xd3'))){_0x1c6992[_0x87dc('0x26')]=qs['limit'](_0x30c531[_0x87dc('0x43')][_0x87dc('0x26')]);_0x1c6992[_0x87dc('0x25')]=qs[_0x87dc('0x25')](_0x30c531[_0x87dc('0x43')][_0x87dc('0x25')]);}_0x1c6992['order']=qs[_0x87dc('0xcb')](_0x30c531[_0x87dc('0x43')]['sort']);_0x1c6992[_0x87dc('0x42')]=qs[_0x87dc('0x57')](_['pick'](_0x30c531['query'],_0x401bdd[_0x87dc('0x57')]));_0x1c6992[_0x87dc('0x42')][_0x87dc('0xdd')]=_0x53e624['id'];if(_0x30c531[_0x87dc('0x43')][_0x87dc('0xcc')]){_0x1c6992[_0x87dc('0x42')]=_[_0x87dc('0xcd')](_0x1c6992['where'],{'$or':_[_0x87dc('0x34')](_0x1c6992['attributes'],function(_0x5081d3){var _0x356fad={};_0x356fad[_0x5081d3]={'$like':'%'+_0x30c531[_0x87dc('0x43')][_0x87dc('0xcc')]+'%'};return _0x356fad;})});}_0x1c6992=_['merge']({},_0x1c6992,_0x30c531[_0x87dc('0x5c')]);return db[_0x87dc('0xde')][_0x87dc('0x28')]({'where':_0x1c6992[_0x87dc('0x42')]})[_0x87dc('0x16')](function(_0x4e0dff){_0x116a06[_0x87dc('0x28')]=_0x4e0dff;if(_0x30c531['query'][_0x87dc('0x44')]){_0x1c6992[_0x87dc('0x45')]=[{'all':!![]}];}return db[_0x87dc('0xde')][_0x87dc('0x8c')](_0x1c6992);})[_0x87dc('0x16')](function(_0xad4027){_0x116a06[_0x87dc('0x49')]=_0xad4027;return _0x116a06;});}})[_0x87dc('0x16')](respondWithFilteredResult(_0x2998db,_0x1c6992))['catch'](handleError(_0x2998db,null));};exports[_0x87dc('0xdf')]=function(_0x3785fd,_0x5511e9){var _0x16e105={};var _0x56f52f={};var _0x564b70;var _0x3c7fdc;return db[_0x87dc('0x3d')][_0x87dc('0x9a')]({'where':{'id':_0x3785fd[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x5511e9,null))[_0x87dc('0x16')](function(_0x328f19){if(_0x328f19){_0x564b70=_0x328f19;_0x56f52f['model']=_[_0x87dc('0x56')](db[_0x87dc('0xe0')][_0x87dc('0x3e')]);_0x56f52f[_0x87dc('0x43')]=_['keys'](_0x3785fd[_0x87dc('0x43')]);_0x56f52f[_0x87dc('0x57')]=_[_0x87dc('0x58')](_0x56f52f[_0x87dc('0x53')],_0x56f52f[_0x87dc('0x43')]);_0x16e105[_0x87dc('0x48')]=_[_0x87dc('0x58')](_0x56f52f[_0x87dc('0x53')],qs[_0x87dc('0x59')](_0x3785fd[_0x87dc('0x43')]['fields']));_0x16e105['attributes']=_0x16e105[_0x87dc('0x48')][_0x87dc('0x5a')]?_0x16e105['attributes']:_0x56f52f[_0x87dc('0x53')];_0x16e105['order']=qs[_0x87dc('0xcb')](_0x3785fd[_0x87dc('0x43')][_0x87dc('0xcb')]);_0x16e105['where']=qs[_0x87dc('0x57')](_[_0x87dc('0xd6')](_0x3785fd[_0x87dc('0x43')],_0x56f52f[_0x87dc('0x57')]));if(_0x3785fd[_0x87dc('0x43')][_0x87dc('0xcc')]){_0x16e105[_0x87dc('0x42')]=_[_0x87dc('0xcd')](_0x16e105['where'],{'$or':_[_0x87dc('0x34')](_0x16e105['attributes'],function(_0x660ed6){var _0x8a44e4={};_0x8a44e4[_0x660ed6]={'$like':'%'+_0x3785fd[_0x87dc('0x43')][_0x87dc('0xcc')]+'%'};return _0x8a44e4;})});}_0x16e105=_['merge']({},_0x16e105,_0x3785fd[_0x87dc('0x5c')]);return _0x564b70['getChatInteractions'](_0x16e105);}})['then'](function(_0x4b6471){if(_0x4b6471){_0x3c7fdc=_0x4b6471['length'];if(!_0x3785fd['query'][_0x87dc('0xce')](_0x87dc('0xd3'))){_0x16e105[_0x87dc('0x26')]=qs[_0x87dc('0x26')](_0x3785fd[_0x87dc('0x43')][_0x87dc('0x26')]);_0x16e105[_0x87dc('0x25')]=qs[_0x87dc('0x25')](_0x3785fd[_0x87dc('0x43')][_0x87dc('0x25')]);}return _0x564b70[_0x87dc('0xdf')](_0x16e105);}})[_0x87dc('0x16')](function(_0x75ea83){if(_0x75ea83){return _0x75ea83?{'count':_0x3c7fdc,'rows':_0x75ea83}:null;}})['then'](respondWithResult(_0x5511e9,null))[_0x87dc('0x21')](handleError(_0x5511e9,null));};exports[_0x87dc('0xe1')]=function(_0x4f93e7,_0x325a00){var _0x499b41={};var _0xfe5a70={};var _0x453ad3;var _0x20d483;return db['User']['findOne']({'where':{'id':_0x4f93e7[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x325a00,null))[_0x87dc('0x16')](function(_0x2e9af4){if(_0x2e9af4){_0x453ad3=_0x2e9af4;_0xfe5a70[_0x87dc('0x53')]=_[_0x87dc('0x56')](db[_0x87dc('0xe2')][_0x87dc('0x3e')]);_0xfe5a70[_0x87dc('0x43')]=_['keys'](_0x4f93e7[_0x87dc('0x43')]);_0xfe5a70[_0x87dc('0x57')]=_[_0x87dc('0x58')](_0xfe5a70['model'],_0xfe5a70[_0x87dc('0x43')]);_0x499b41[_0x87dc('0x48')]=_['intersection'](_0xfe5a70[_0x87dc('0x53')],qs[_0x87dc('0x59')](_0x4f93e7[_0x87dc('0x43')][_0x87dc('0x59')]));_0x499b41['attributes']=_0x499b41[_0x87dc('0x48')][_0x87dc('0x5a')]?_0x499b41['attributes']:_0xfe5a70[_0x87dc('0x53')];_0x499b41[_0x87dc('0xca')]=qs[_0x87dc('0xcb')](_0x4f93e7['query'][_0x87dc('0xcb')]);_0x499b41[_0x87dc('0x42')]=qs[_0x87dc('0x57')](_[_0x87dc('0xd6')](_0x4f93e7['query'],_0xfe5a70['filters']));if(_0x4f93e7[_0x87dc('0x43')][_0x87dc('0xcc')]){_0x499b41['where']=_[_0x87dc('0xcd')](_0x499b41[_0x87dc('0x42')],{'$or':_[_0x87dc('0x34')](_0x499b41[_0x87dc('0x48')],function(_0x16ca83){var _0x4fc58d={};_0x4fc58d[_0x16ca83]={'$like':'%'+_0x4f93e7[_0x87dc('0x43')][_0x87dc('0xcc')]+'%'};return _0x4fc58d;})});}_0x499b41=_[_0x87dc('0xcd')]({},_0x499b41,_0x4f93e7[_0x87dc('0x5c')]);return _0x453ad3[_0x87dc('0xe1')](_0x499b41);}})[_0x87dc('0x16')](function(_0x300043){if(_0x300043){_0x20d483=_0x300043[_0x87dc('0x5a')];if(!_0x4f93e7['query'][_0x87dc('0xce')](_0x87dc('0xd3'))){_0x499b41[_0x87dc('0x26')]=qs[_0x87dc('0x26')](_0x4f93e7[_0x87dc('0x43')][_0x87dc('0x26')]);_0x499b41['offset']=qs['offset'](_0x4f93e7['query'][_0x87dc('0x25')]);}return _0x453ad3[_0x87dc('0xe1')](_0x499b41);}})['then'](function(_0x195a0e){if(_0x195a0e){return _0x195a0e?{'count':_0x20d483,'rows':_0x195a0e}:null;}})[_0x87dc('0x16')](respondWithResult(_0x325a00,null))[_0x87dc('0x21')](handleError(_0x325a00,null));};exports[_0x87dc('0xe3')]=function(_0x56cd7f,_0x2f7ed4){var _0x1aa9d4={'raw':!![],'where':{}};var _0x33b6bd={};var _0x1140d9={'count':0x0,'rows':[]};return db['User'][_0x87dc('0x9a')]({'where':{'id':_0x56cd7f[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x2f7ed4,null))['then'](function(_0x4dfd09){if(_0x4dfd09){_0x33b6bd[_0x87dc('0x53')]=_[_0x87dc('0x56')](db[_0x87dc('0xe4')][_0x87dc('0x3e')]);_0x33b6bd['query']=_[_0x87dc('0x56')](_0x56cd7f['query']);_0x33b6bd[_0x87dc('0x57')]=_['intersection'](_0x33b6bd[_0x87dc('0x53')],_0x33b6bd[_0x87dc('0x43')]);_0x1aa9d4[_0x87dc('0x48')]=_['intersection'](_0x33b6bd['model'],qs[_0x87dc('0x59')](_0x56cd7f[_0x87dc('0x43')][_0x87dc('0x59')]));_0x1aa9d4['attributes']=_0x1aa9d4[_0x87dc('0x48')][_0x87dc('0x5a')]?_0x1aa9d4[_0x87dc('0x48')]:_0x33b6bd[_0x87dc('0x53')];if(!_0x56cd7f['query']['hasOwnProperty'](_0x87dc('0xd3'))){_0x1aa9d4['limit']=qs['limit'](_0x56cd7f[_0x87dc('0x43')][_0x87dc('0x26')]);_0x1aa9d4[_0x87dc('0x25')]=qs[_0x87dc('0x25')](_0x56cd7f['query'][_0x87dc('0x25')]);}_0x1aa9d4['order']=qs['sort'](_0x56cd7f[_0x87dc('0x43')][_0x87dc('0xcb')]);_0x1aa9d4[_0x87dc('0x42')]=qs[_0x87dc('0x57')](_[_0x87dc('0xd6')](_0x56cd7f['query'],_0x33b6bd[_0x87dc('0x57')]));_0x1aa9d4[_0x87dc('0x42')][_0x87dc('0xdd')]=_0x4dfd09['id'];if(_0x56cd7f[_0x87dc('0x43')][_0x87dc('0xcc')]){_0x1aa9d4[_0x87dc('0x42')]=_['merge'](_0x1aa9d4[_0x87dc('0x42')],{'$or':_[_0x87dc('0x34')](_0x1aa9d4[_0x87dc('0x48')],function(_0x14a8f4){var _0x3666cc={};_0x3666cc[_0x14a8f4]={'$like':'%'+_0x56cd7f[_0x87dc('0x43')][_0x87dc('0xcc')]+'%'};return _0x3666cc;})});}_0x1aa9d4=_['merge']({},_0x1aa9d4,_0x56cd7f[_0x87dc('0x5c')]);return db[_0x87dc('0xe4')][_0x87dc('0x28')]({'where':_0x1aa9d4[_0x87dc('0x42')]})[_0x87dc('0x16')](function(_0x2023cd){_0x1140d9[_0x87dc('0x28')]=_0x2023cd;if(_0x56cd7f['query'][_0x87dc('0x44')]){_0x1aa9d4[_0x87dc('0x45')]=[{'all':!![]}];}return db['MailInteraction'][_0x87dc('0x8c')](_0x1aa9d4);})[_0x87dc('0x16')](function(_0x59cfa8){_0x1140d9[_0x87dc('0x49')]=_0x59cfa8;return _0x1140d9;});}})[_0x87dc('0x16')](respondWithFilteredResult(_0x2f7ed4,_0x1aa9d4))[_0x87dc('0x21')](handleError(_0x2f7ed4,null));};exports[_0x87dc('0xe5')]=function(_0x3c8e3a,_0x82604c){var _0x2c6274={};var _0x1dd300={};var _0x546450;var _0x55fc8f;return db[_0x87dc('0x3d')][_0x87dc('0x9a')]({'where':{'id':_0x3c8e3a[_0x87dc('0x52')]['id']}})['then'](handleEntityNotFound(_0x82604c,null))['then'](function(_0x5eb1df){if(_0x5eb1df){_0x546450=_0x5eb1df;_0x1dd300['model']=_[_0x87dc('0x56')](db[_0x87dc('0xe6')]['rawAttributes']);_0x1dd300[_0x87dc('0x43')]=_[_0x87dc('0x56')](_0x3c8e3a[_0x87dc('0x43')]);_0x1dd300[_0x87dc('0x57')]=_['intersection'](_0x1dd300[_0x87dc('0x53')],_0x1dd300[_0x87dc('0x43')]);_0x2c6274[_0x87dc('0x48')]=_[_0x87dc('0x58')](_0x1dd300[_0x87dc('0x53')],qs['fields'](_0x3c8e3a[_0x87dc('0x43')][_0x87dc('0x59')]));_0x2c6274[_0x87dc('0x48')]=_0x2c6274[_0x87dc('0x48')][_0x87dc('0x5a')]?_0x2c6274[_0x87dc('0x48')]:_0x1dd300[_0x87dc('0x53')];_0x2c6274[_0x87dc('0xca')]=qs['sort'](_0x3c8e3a[_0x87dc('0x43')][_0x87dc('0xcb')]);_0x2c6274[_0x87dc('0x42')]=qs[_0x87dc('0x57')](_[_0x87dc('0xd6')](_0x3c8e3a[_0x87dc('0x43')],_0x1dd300['filters']));if(_0x3c8e3a['query'][_0x87dc('0xcc')]){_0x2c6274[_0x87dc('0x42')]=_[_0x87dc('0xcd')](_0x2c6274[_0x87dc('0x42')],{'$or':_[_0x87dc('0x34')](_0x2c6274[_0x87dc('0x48')],function(_0x5d76b1){var _0x3a96ef={};_0x3a96ef[_0x5d76b1]={'$like':'%'+_0x3c8e3a[_0x87dc('0x43')][_0x87dc('0xcc')]+'%'};return _0x3a96ef;})});}_0x2c6274=_[_0x87dc('0xcd')]({},_0x2c6274,_0x3c8e3a[_0x87dc('0x5c')]);return _0x546450[_0x87dc('0xe5')](_0x2c6274);}})['then'](function(_0x319f14){if(_0x319f14){_0x55fc8f=_0x319f14[_0x87dc('0x5a')];if(!_0x3c8e3a[_0x87dc('0x43')][_0x87dc('0xce')](_0x87dc('0xd3'))){_0x2c6274[_0x87dc('0x26')]=qs[_0x87dc('0x26')](_0x3c8e3a[_0x87dc('0x43')][_0x87dc('0x26')]);_0x2c6274[_0x87dc('0x25')]=qs[_0x87dc('0x25')](_0x3c8e3a[_0x87dc('0x43')][_0x87dc('0x25')]);}return _0x546450[_0x87dc('0xe5')](_0x2c6274);}})[_0x87dc('0x16')](function(_0x116306){if(_0x116306){return _0x116306?{'count':_0x55fc8f,'rows':_0x116306}:null;}})[_0x87dc('0x16')](respondWithResult(_0x82604c,null))['catch'](handleError(_0x82604c,null));};exports['getFaxInteractions']=function(_0x107ef8,_0x3865d4){var _0x4497c0={};var _0x3709d3={};var _0x51e549;var _0x364bfc;return db[_0x87dc('0x3d')]['findOne']({'where':{'id':_0x107ef8[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x3865d4,null))[_0x87dc('0x16')](function(_0x5004f1){if(_0x5004f1){_0x51e549=_0x5004f1;_0x3709d3[_0x87dc('0x53')]=_[_0x87dc('0x56')](db[_0x87dc('0xe7')][_0x87dc('0x3e')]);_0x3709d3[_0x87dc('0x43')]=_[_0x87dc('0x56')](_0x107ef8[_0x87dc('0x43')]);_0x3709d3['filters']=_[_0x87dc('0x58')](_0x3709d3[_0x87dc('0x53')],_0x3709d3[_0x87dc('0x43')]);_0x4497c0[_0x87dc('0x48')]=_[_0x87dc('0x58')](_0x3709d3[_0x87dc('0x53')],qs[_0x87dc('0x59')](_0x107ef8['query'][_0x87dc('0x59')]));_0x4497c0[_0x87dc('0x48')]=_0x4497c0['attributes'][_0x87dc('0x5a')]?_0x4497c0['attributes']:_0x3709d3[_0x87dc('0x53')];_0x4497c0[_0x87dc('0xca')]=qs[_0x87dc('0xcb')](_0x107ef8[_0x87dc('0x43')][_0x87dc('0xcb')]);_0x4497c0[_0x87dc('0x42')]=qs[_0x87dc('0x57')](_['pick'](_0x107ef8[_0x87dc('0x43')],_0x3709d3[_0x87dc('0x57')]));if(_0x107ef8[_0x87dc('0x43')][_0x87dc('0xcc')]){_0x4497c0[_0x87dc('0x42')]=_['merge'](_0x4497c0['where'],{'$or':_[_0x87dc('0x34')](_0x4497c0[_0x87dc('0x48')],function(_0x6917d6){var _0x2b6e1d={};_0x2b6e1d[_0x6917d6]={'$like':'%'+_0x107ef8[_0x87dc('0x43')][_0x87dc('0xcc')]+'%'};return _0x2b6e1d;})});}_0x4497c0=_[_0x87dc('0xcd')]({},_0x4497c0,_0x107ef8['options']);return _0x51e549[_0x87dc('0xe8')](_0x4497c0);}})[_0x87dc('0x16')](function(_0x7531fb){if(_0x7531fb){_0x364bfc=_0x7531fb[_0x87dc('0x5a')];if(!_0x107ef8[_0x87dc('0x43')][_0x87dc('0xce')]('nolimit')){_0x4497c0[_0x87dc('0x26')]=qs[_0x87dc('0x26')](_0x107ef8[_0x87dc('0x43')]['limit']);_0x4497c0[_0x87dc('0x25')]=qs['offset'](_0x107ef8[_0x87dc('0x43')][_0x87dc('0x25')]);}return _0x51e549[_0x87dc('0xe8')](_0x4497c0);}})[_0x87dc('0x16')](function(_0x13df89){if(_0x13df89){return _0x13df89?{'count':_0x364bfc,'rows':_0x13df89}:null;}})[_0x87dc('0x16')](respondWithResult(_0x3865d4,null))[_0x87dc('0x21')](handleError(_0x3865d4,null));};exports[_0x87dc('0xe9')]=function(_0xf9b1b0,_0x3bced1){var _0x5eb337={};var _0x4c3587={};var _0x307f5e;var _0x13b1e4;return db[_0x87dc('0x3d')][_0x87dc('0x9a')]({'where':{'id':_0xf9b1b0['params']['id']}})['then'](handleEntityNotFound(_0x3bced1,null))[_0x87dc('0x16')](function(_0x374b7e){if(_0x374b7e){_0x307f5e=_0x374b7e;_0x4c3587[_0x87dc('0x53')]=_[_0x87dc('0x56')](db[_0x87dc('0xea')][_0x87dc('0x3e')]);_0x4c3587[_0x87dc('0x43')]=_[_0x87dc('0x56')](_0xf9b1b0['query']);_0x4c3587[_0x87dc('0x57')]=_[_0x87dc('0x58')](_0x4c3587['model'],_0x4c3587['query']);_0x5eb337[_0x87dc('0x48')]=_[_0x87dc('0x58')](_0x4c3587['model'],qs[_0x87dc('0x59')](_0xf9b1b0[_0x87dc('0x43')]['fields']));_0x5eb337[_0x87dc('0x48')]=_0x5eb337[_0x87dc('0x48')]['length']?_0x5eb337[_0x87dc('0x48')]:_0x4c3587[_0x87dc('0x53')];_0x5eb337[_0x87dc('0xca')]=qs['sort'](_0xf9b1b0[_0x87dc('0x43')]['sort']);_0x5eb337['where']=qs[_0x87dc('0x57')](_[_0x87dc('0xd6')](_0xf9b1b0[_0x87dc('0x43')],_0x4c3587[_0x87dc('0x57')]));if(_0xf9b1b0[_0x87dc('0x43')]['filter']){_0x5eb337[_0x87dc('0x42')]=_[_0x87dc('0xcd')](_0x5eb337[_0x87dc('0x42')],{'$or':_[_0x87dc('0x34')](_0x5eb337[_0x87dc('0x48')],function(_0x3bb787){var _0x3ecb33={};_0x3ecb33[_0x3bb787]={'$like':'%'+_0xf9b1b0[_0x87dc('0x43')][_0x87dc('0xcc')]+'%'};return _0x3ecb33;})});}_0x5eb337=_[_0x87dc('0xcd')]({},_0x5eb337,_0xf9b1b0[_0x87dc('0x5c')]);return _0x307f5e[_0x87dc('0xe9')](_0x5eb337);}})[_0x87dc('0x16')](function(_0x291066){if(_0x291066){_0x13b1e4=_0x291066[_0x87dc('0x5a')];if(!_0xf9b1b0['query'][_0x87dc('0xce')](_0x87dc('0xd3'))){_0x5eb337[_0x87dc('0x26')]=qs[_0x87dc('0x26')](_0xf9b1b0[_0x87dc('0x43')][_0x87dc('0x26')]);_0x5eb337[_0x87dc('0x25')]=qs[_0x87dc('0x25')](_0xf9b1b0[_0x87dc('0x43')][_0x87dc('0x25')]);}return _0x307f5e['getWhatsappInteractions'](_0x5eb337);}})[_0x87dc('0x16')](function(_0x2b125b){if(_0x2b125b){return _0x2b125b?{'count':_0x13b1e4,'rows':_0x2b125b}:null;}})[_0x87dc('0x16')](respondWithResult(_0x3bced1,null))[_0x87dc('0x21')](handleError(_0x3bced1,null));};exports['login']=function(_0xa88a82,_0x343d97,_0x2c6cc3){var _0x5f053a;var _0xe32deb;var _0x3073da;var _0x5344df=!_[_0x87dc('0x6a')](_0xa88a82[_0x87dc('0x52')]['id'])?_0xa88a82[_0x87dc('0x52')]['id']:!_[_0x87dc('0x6a')](_0xa88a82['user']['id'])?_0xa88a82[_0x87dc('0x2f')]['id']:null;return db[_0x87dc('0x3d')]['find']({'where':{'id':_0x5344df,'role':{'$or':[_0x87dc('0x81'),'user',_0x87dc('0x31')]}},'attributes':['id',_0x87dc('0x38'),_0x87dc('0xeb'),_0x87dc('0xec'),'role',_0x87dc('0x65'),_0x87dc('0xa1')]})[_0x87dc('0x16')](function(_0x130acd){if(_0x130acd){if(_0x130acd[_0x87dc('0x2e')]===_0x87dc('0x31')){_0x5f053a=_0x130acd;if(_0xa88a82[_0x87dc('0x60')][_0x87dc('0xa3')]){_0x3073da=util['format'](_0x87dc('0xed'),_0x5f053a[_0xa88a82['body'][_0x87dc('0xa3')]]);}else if(_0xa88a82[_0x87dc('0x60')][_0x87dc('0xee')]){_0x3073da=util[_0x87dc('0xae')](_0x87dc('0xaf'),_0xa88a82[_0x87dc('0x60')]['intrf']);}else{_0x3073da=util[_0x87dc('0xae')](_0x87dc('0xaf'),_0x5f053a[_0x87dc('0x38')]);}socket['to'](util[_0x87dc('0xae')](_0x87dc('0xef'),_0x5f053a[_0x87dc('0x38')]))[_0x87dc('0x2c')](_0x87dc('0xf0'),{'user':{'id':_0x5f053a['id'],'name':_0x5f053a[_0x87dc('0x38')]},'ip':_0xa88a82[_0x87dc('0xf1')][_0x87dc('0xf2')]||_0xa88a82[_0x87dc('0xf3')][_0x87dc('0xf4')]||_0xa88a82[_0x87dc('0xf5')][_0x87dc('0xf4')]||_0xa88a82[_0x87dc('0xf3')][_0x87dc('0xf5')]['remoteAddress']});return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x5f053a['name']},'individualHooks':!![]});}}else{throw new db[(_0x87dc('0x93'))][(_0x87dc('0x94'))]('User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method');}})[_0x87dc('0x16')](function(){if(_0x5f053a){return _0x5f053a[_0x87dc('0xf6')]({'raw':!![]});}})[_0x87dc('0x16')](function(_0x2beea5){if(_0x5f053a){var _0x4090bb=[];if(_0x2beea5){_0xe32deb=_0x2beea5;if(_0xe32deb[_0x87dc('0x5a')]){for(var _0x478888=0x0;_0x478888<_0xe32deb['length'];_0x478888++){_0x4090bb[_0x87dc('0x4b')]({'membername':_0x5f053a[_0x87dc('0x38')],'UserId':_0x5f053a['id'],'queue_name':_0xe32deb[_0x478888]['name'],'VoiceQueueId':_0xe32deb[_0x478888]['id'],'interface':_0x3073da,'paused':_0x5f053a[_0x87dc('0xa1')]||![],'penalty':_0xe32deb[_0x478888]['UserVoiceQueue.penalty']||0x0});}return BPromise['each'](_0x4090bb,function(_0x1564ab){return db[_0x87dc('0xb0')]['upsert'](_0x1564ab);});}}}})[_0x87dc('0x16')](function(){if(_0x5f053a){return db[_0x87dc('0xf7')][_0x87dc('0x8c')]({'where':{'membername':_0x5f053a[_0x87dc('0x38')],'exitAt':null}});}})[_0x87dc('0x16')](function(_0x38d885){if(_0x5f053a){var _0xafa4d6=[];_0x38d885[_0x87dc('0xf8')](function(_0x46ff86){_0xafa4d6[_0x87dc('0x4b')](_0x46ff86[_0x87dc('0x2b')]({'exitAt':moment()[_0x87dc('0xae')](_0x87dc('0xf9'))}));});return BPromise['all'](_0xafa4d6);}})[_0x87dc('0x16')](function(){if(_0x5f053a){var _0x315332=[];var _0x4b5d1a=[];var _0x1607d0=utils['getChannels']();var _0xb642a3={'membername':_0x5f053a[_0x87dc('0x38')],'interface':_0x3073da,'enterAt':moment()[_0x87dc('0xae')](_0x87dc('0xf9')),'role':_0x5f053a[_0x87dc('0x2e')],'internal':_0x5f053a['internal']};_0x1607d0[_0x87dc('0xf8')](function(_0x358931){_0x315332['push'](_[_0x87dc('0xcd')]({'channel':_0x358931,'type':_0x87dc('0xfa'),'data1':_0xa88a82['body'][_0x87dc('0xfb')],'data2':_0x3073da},_0xb642a3));if(_0x5f053a[_0x87dc('0xa1')]){_0x4b5d1a[_0x87dc('0x4b')](_[_0x87dc('0xcd')]({'channel':_0x358931,'type':_0x87dc('0xfc'),'data1':_0x87dc('0xfd')},_0xb642a3));}});return db[_0x87dc('0xf7')][_0x87dc('0x88')](_0x315332[_0x87dc('0xc7')](_0x4b5d1a),{'individualHooks':!![]});}})['then'](function(){if(_0x5f053a){return _0x5f053a[_0x87dc('0x2b')]({'online':!![],'lastLoginAt':moment()[_0x87dc('0xae')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x5f053a['loginInPause']||![],'mailPause':_0x5f053a[_0x87dc('0xa1')]||![],'chatPause':_0x5f053a['loginInPause']||![],'faxPause':_0x5f053a[_0x87dc('0xa1')]||![],'smsPause':_0x5f053a['loginInPause']||![],'openchannelPause':_0x5f053a[_0x87dc('0xa1')]||![],'whatsappPause':_0x5f053a[_0x87dc('0xa1')]||![],'pauseType':_0x5f053a['loginInPause']?'LOGININPAUSE':null,'interface':_0x3073da,'lastPauseAt':moment()[_0x87dc('0xae')](_0x87dc('0xf9'))});}})[_0x87dc('0x16')](function(_0x17925b){if(_0xa88a82[_0x87dc('0xfe')]){return _0x2c6cc3();}else{return BPromise[_0x87dc('0xff')](_0x17925b)['then'](respondWithResult(_0x343d97,null));}})['catch'](handleError(_0x343d97,null));};exports['logout']=function(_0x3e173b,_0x2e52a9){var _0x481a7b;return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x3e173b[_0x87dc('0x52')]['id'],'role':_0x87dc('0x31')},'attributes':['id','name',_0x87dc('0x2e')]})[_0x87dc('0x16')](handleEntityNotFound(_0x2e52a9,null))['then'](function(_0x48aef1){if(_0x48aef1){_0x481a7b=_0x48aef1;return db[_0x87dc('0xb0')]['destroy']({'where':{'membername':_0x481a7b[_0x87dc('0x38')]},'individualHooks':!![]});}})[_0x87dc('0x16')](function(){return db[_0x87dc('0xf7')][_0x87dc('0x8c')]({'where':{'membername':_0x481a7b['name'],'exitAt':null}});})['then'](function(_0x388b46){var _0x5568e9=[];_0x388b46['forEach'](function(_0x3435be){_0x5568e9[_0x87dc('0x4b')](_0x3435be[_0x87dc('0x2b')]({'exitAt':moment()[_0x87dc('0xae')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x87dc('0x5f')](_0x5568e9);})[_0x87dc('0x16')](function(){return _0x481a7b[_0x87dc('0x2b')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x87dc('0x16')](respondWithResult(_0x2e52a9,null))[_0x87dc('0x21')](handleError(_0x2e52a9,null));};exports[_0x87dc('0x100')]=function(_0x116c67,_0x2a7d93){var _0x2ddce7;return db[_0x87dc('0xb0')][_0x87dc('0x2b')]({'paused':0x1},{'where':{'UserId':_0x116c67['params']['id']},'individualHooks':!![]})[_0x87dc('0x16')](function(){return db['User'][_0x87dc('0x37')]({'where':{'id':_0x116c67[_0x87dc('0x52')]['id'],'role':_0x87dc('0x31')},'attributes':['id',_0x87dc('0x38'),'role',_0x87dc('0x65'),_0x87dc('0xa3')]});})[_0x87dc('0x16')](handleEntityNotFound(_0x2a7d93,null))[_0x87dc('0x16')](function(_0x54b5cc){if(_0x54b5cc){_0x2ddce7=_0x54b5cc;return respondWithRpcPromise('QueuePause','pause',{'id':_0x2ddce7['id'],'name':_0x2ddce7[_0x87dc('0x38')],'pause':!![]});}})[_0x87dc('0x16')](function(){if(_0x2ddce7){return db[_0x87dc('0xf7')][_0x87dc('0x8c')]({'where':{'membername':_0x2ddce7[_0x87dc('0x38')],'type':_0x87dc('0xfc'),'exitAt':null}});}})[_0x87dc('0x16')](function(_0x21c1c5){if(_0x21c1c5['length']){var _0x134a63=moment()['format'](_0x87dc('0xf9'));for(var _0x9e39d8=0x0,_0x5a776=_0x21c1c5[_0x87dc('0x5a')];_0x9e39d8<_0x5a776;_0x9e39d8++){_0x21c1c5[_0x9e39d8][_0x87dc('0x101')]({'exitAt':_0x134a63});}}})[_0x87dc('0x16')](function(){var _0x164ad4=[];var _0x554655=utils[_0x87dc('0x102')]();_0x554655[_0x87dc('0xf8')](function(_0x5eb6e6){_0x164ad4[_0x87dc('0x4b')]({'channel':_0x5eb6e6,'membername':_0x2ddce7[_0x87dc('0x38')],'interface':_[_0x87dc('0x6a')](_0x2ddce7['interface'])?util['format'](_0x87dc('0xaf'),_0x2ddce7[_0x87dc('0x38')]):_0x2ddce7['interface'],'type':_0x87dc('0xfc'),'enterAt':moment()[_0x87dc('0xae')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x116c67['body']['type']||_0x87dc('0x103'),'role':_0x2ddce7[_0x87dc('0x2e')],'internal':_0x2ddce7[_0x87dc('0x65')]});});return db['MemberReport']['bulkCreate'](_0x164ad4,{'individualHooks':!![]});})[_0x87dc('0x16')](function(){return _0x2ddce7[_0x87dc('0x2b')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x116c67[_0x87dc('0x60')]['type']||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x87dc('0xae')](_0x87dc('0xf9'))});})['then'](respondWithResult(_0x2a7d93,null))[_0x87dc('0x21')](handleError(_0x2a7d93,null));};exports[_0x87dc('0x104')]=function(_0x5a8d43,_0x14b18a){var _0x2bfac6;return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x5a8d43[_0x87dc('0x52')]['id']},'attributes':['id','name','role','voicePause',_0x87dc('0x105'),_0x87dc('0x106'),_0x87dc('0x107'),_0x87dc('0x108'),_0x87dc('0x109'),_0x87dc('0x10a'),_0x87dc('0x10b'),_0x87dc('0x10c')]})[_0x87dc('0x16')](handleEntityNotFound(_0x14b18a,null))['then'](function(_0x48b6dd){if(_0x48b6dd){_0x2bfac6=_0x48b6dd;if(_0x5a8d43[_0x87dc('0x60')][_0x87dc('0x9f')]&&!utils['isValidChannel'](_0x5a8d43[_0x87dc('0x60')][_0x87dc('0x9f')])){throw new db['Sequelize'][(_0x87dc('0x94'))](_0x87dc('0xa5'));}switch(_0x5a8d43[_0x87dc('0x60')][_0x87dc('0x9f')]){case _0x87dc('0xac'):return respondWithRpcPromise(_0x87dc('0x10d'),_0x87dc('0x104'),{'id':_0x2bfac6['id'],'name':_0x2bfac6['name'],'pause':![]})[_0x87dc('0x16')](function(){return db['UserVoiceQueueRt'][_0x87dc('0x2b')]({'paused':0x0},{'where':{'UserId':_0x2bfac6['id']},'individualHooks':!![]});})['then'](function(){return db[_0x87dc('0xf7')][_0x87dc('0x37')]({'where':{'channel':_0x5a8d43[_0x87dc('0x60')][_0x87dc('0x9f')],'membername':_0x2bfac6[_0x87dc('0x38')],'type':_0x87dc('0xfc'),'exitAt':null}});})[_0x87dc('0x16')](function(_0x58da0d){if(_0x58da0d){return _0x58da0d['update']({'exitAt':moment()[_0x87dc('0xae')](_0x87dc('0xf9')),'data2':_0x87dc('0x10e')},{'individualHooks':!![]});}return null;})[_0x87dc('0x16')](function(){return _0x2bfac6[_0x87dc('0x2b')]({'voicePause':![]});});case'mail':case'chat':case _0x87dc('0x5e'):case _0x87dc('0x5d'):case _0x87dc('0x50'):case'openchannel':return db['MemberReport'][_0x87dc('0x37')]({'where':{'channel':_0x5a8d43[_0x87dc('0x60')][_0x87dc('0x9f')],'membername':_0x2bfac6[_0x87dc('0x38')],'type':_0x87dc('0xfc'),'exitAt':null}})[_0x87dc('0x16')](function(_0x2b6423){if(_0x2b6423){return _0x2b6423[_0x87dc('0x2b')]({'exitAt':moment()[_0x87dc('0xae')](_0x87dc('0xf9')),'data2':_0x87dc('0x10e')},{'individualHooks':!![]});}return null;})['then'](function(){var _0x1f03bf={};_[_0x87dc('0x2a')](_0x1f03bf,util[_0x87dc('0xae')](_0x87dc('0x10f'),_0x5a8d43[_0x87dc('0x60')][_0x87dc('0x9f')],_0x87dc('0x110')),![]);return _0x2bfac6[_0x87dc('0x2b')](_0x1f03bf);});default:return respondWithRpcPromise(_0x87dc('0x10d'),_0x87dc('0x104'),{'id':_0x2bfac6['id'],'name':_0x2bfac6[_0x87dc('0x38')],'pause':![]})[_0x87dc('0x16')](function(){return db[_0x87dc('0xb0')]['update']({'paused':0x0},{'where':{'UserId':_0x2bfac6['id']}});})[_0x87dc('0x16')](function(){return db[_0x87dc('0xf7')][_0x87dc('0x8c')]({'where':{'membername':_0x2bfac6[_0x87dc('0x38')],'type':_0x87dc('0xfc'),'exitAt':null}});})[_0x87dc('0x16')](function(_0x4ac639){var _0x3066f1=[];_0x4ac639[_0x87dc('0xf8')](function(_0x4ae384){_0x3066f1[_0x87dc('0x4b')](_0x4ae384[_0x87dc('0x2b')]({'exitAt':moment()[_0x87dc('0xae')](_0x87dc('0xf9')),'data2':_0x87dc('0x10e')}));});return BPromise[_0x87dc('0x5f')](_0x3066f1);})[_0x87dc('0x16')](function(){return _0x2bfac6[_0x87dc('0x2b')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})['then'](respondWithResult(_0x14b18a,null))[_0x87dc('0x21')](handleError(_0x14b18a,null));};exports[_0x87dc('0x111')]=function(_0x43f1ad,_0x2cf594){var _0x49aae6={};var _0x55e2a0={};var _0x4e9cd9;var _0x454f66;return db[_0x87dc('0x3d')][_0x87dc('0x9a')]({'where':{'id':_0x43f1ad[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x2cf594,null))['then'](function(_0x182825){if(_0x182825){_0x4e9cd9=_0x182825;_0x55e2a0['model']=_[_0x87dc('0x56')](db[_0x87dc('0x112')][_0x87dc('0x3e')]);_0x55e2a0[_0x87dc('0x43')]=_[_0x87dc('0x56')](_0x43f1ad[_0x87dc('0x43')]);_0x55e2a0[_0x87dc('0x57')]=_[_0x87dc('0x58')](_0x55e2a0[_0x87dc('0x53')],_0x55e2a0[_0x87dc('0x43')]);_0x49aae6[_0x87dc('0x48')]=_[_0x87dc('0x58')](_0x55e2a0[_0x87dc('0x53')],qs[_0x87dc('0x59')](_0x43f1ad[_0x87dc('0x43')][_0x87dc('0x59')]));_0x49aae6['attributes']=_0x49aae6[_0x87dc('0x48')][_0x87dc('0x5a')]?_0x49aae6[_0x87dc('0x48')]:_0x55e2a0[_0x87dc('0x53')];_0x49aae6[_0x87dc('0xca')]=qs[_0x87dc('0xcb')](_0x43f1ad[_0x87dc('0x43')][_0x87dc('0xcb')]);_0x49aae6[_0x87dc('0x42')]=qs[_0x87dc('0x57')](_[_0x87dc('0xd6')](_0x43f1ad[_0x87dc('0x43')],_0x55e2a0[_0x87dc('0x57')]));if(_0x43f1ad[_0x87dc('0x43')]['filter']){_0x49aae6['where']=_[_0x87dc('0xcd')](_0x49aae6['where'],{'$or':_[_0x87dc('0x34')](_0x49aae6[_0x87dc('0x48')],function(_0x53332d){var _0x1f4ff2={};_0x1f4ff2[_0x53332d]={'$like':'%'+_0x43f1ad[_0x87dc('0x43')][_0x87dc('0xcc')]+'%'};return _0x1f4ff2;})});}_0x49aae6=_[_0x87dc('0xcd')]({},_0x49aae6,_0x43f1ad[_0x87dc('0x5c')]);return _0x4e9cd9[_0x87dc('0x111')](_0x49aae6);}})[_0x87dc('0x16')](function(_0x3a2b66){if(_0x3a2b66){_0x454f66=_0x3a2b66[_0x87dc('0x5a')];if(!_0x43f1ad[_0x87dc('0x43')][_0x87dc('0xce')](_0x87dc('0xd3'))){_0x49aae6['limit']=qs[_0x87dc('0x26')](_0x43f1ad[_0x87dc('0x43')][_0x87dc('0x26')]);_0x49aae6['offset']=qs[_0x87dc('0x25')](_0x43f1ad['query'][_0x87dc('0x25')]);}return _0x4e9cd9[_0x87dc('0x111')](_0x49aae6);}})[_0x87dc('0x16')](function(_0x8863f8){if(_0x8863f8){return _0x8863f8?{'count':_0x454f66,'rows':_0x8863f8}:null;}})[_0x87dc('0x16')](respondWithResult(_0x2cf594,null))[_0x87dc('0x21')](handleError(_0x2cf594,null));};exports['addTeams']=function(_0x5a80c6,_0x45e1dc){var _0xacbeed=_0x5a80c6[_0x87dc('0x52')]['id'];var _0x3428a4=_0x5a80c6['body']?_0x5a80c6[_0x87dc('0x60')]['ids']:null;var _0x27c99a=[];return Promise[_0x87dc('0xff')]()[_0x87dc('0x16')](function(){if(!_0x3428a4)throw new APIBadRequestError(_0x87dc('0x113'));})[_0x87dc('0x16')](function(){return db[_0x87dc('0x3d')]['findOne']({'where':{'id':_0xacbeed}});})['then'](function(_0x109256){if(!_0x109256)throw new APINotFoundError(util[_0x87dc('0xae')](_0x87dc('0x114'),_0x5a80c6[_0x87dc('0x52')]['id']));return db[_0x87dc('0x6d')][_0x87dc('0x115')](function(_0x1f4bf2){return _0x109256['addTeams'](_0x3428a4,{'transaction':_0x1f4bf2})[_0x87dc('0x16')](function(){return db['Team'][_0x87dc('0x8c')]({'where':{'id':{'$in':_0x3428a4}}});})[_0x87dc('0x16')](function(_0x27f6e4){var _0x4697c2=_[_0x87dc('0x34')](_0x27f6e4,function(_0x343838){return _0x343838['getAssociatedQueues']();});return Promise[_0x87dc('0x5f')](_0x4697c2);})['then'](function(_0x246842){_0x27c99a=_[_0x87dc('0x116')](_0x246842);var _0x306080=_[_0x87dc('0x34')](_0x27c99a,function(_0x2f6606){return _0x2f6606[_0x87dc('0x117')](_0x109256['id'],{'transaction':_0x1f4bf2});});return Promise[_0x87dc('0x5f')](_0x306080);})[_0x87dc('0x16')](function(){if(!_0x109256[_0x87dc('0xa0')])return;var _0x519442=_['filter'](_0x27c99a,function(_0x2cd784){return _0x2cd784[_0x87dc('0x118')](_0x87dc('0x9f'))==='Voice';});var _0x16257e=_['map'](_0x519442,function(_0x2b46be){return db[_0x87dc('0xb0')][_0x87dc('0x119')]({'membername':_0x109256[_0x87dc('0x38')],'UserId':_0x109256['id'],'queue_name':_0x2b46be[_0x87dc('0x38')],'VoiceQueueId':_0x2b46be['id'],'interface':_[_0x87dc('0x6a')](_0x109256[_0x87dc('0xa3')])?util[_0x87dc('0xae')](_0x87dc('0xaf'),_0x109256['name']):_0x109256[_0x87dc('0xa3')],'paused':_0x109256['voicePause']||![],'penalty':_0x109256['penalty']},{'transaction':_0x1f4bf2});});return Promise[_0x87dc('0x5f')](_0x16257e);})['then'](function(){return db[_0x87dc('0x11a')][_0x87dc('0x8c')]({'where':{'teamId':{'$in':_0x3428a4}}});})[_0x87dc('0x16')](function(_0x397fc0){var _0x534d91=_[_0x87dc('0x34')](_0x397fc0,function(_0x25ce0d){return db[_0x87dc('0x11b')][_0x87dc('0x80')]({'UserId':_0x109256['id'],'VoicePrefixId':_0x25ce0d[_0x87dc('0x11c')]},{'transaction':_0x1f4bf2});});return Promise['all'](_0x534d91);});});})[_0x87dc('0x16')](function(){for(var _0x16330a=0x0;_0x16330a<_0x27c99a[_0x87dc('0x5a')];_0x16330a++){var _0x5e1add=_0x27c99a[_0x16330a][_0x87dc('0x118')](_0x87dc('0x9f'));var _0x46a9e7=_0x5e1add+_0x87dc('0xaa');socket[_0x87dc('0x2c')](_0x87dc('0x2f')+_0x5e1add+_0x87dc('0xab'),{'UserId':_0xacbeed,['queueField']:_0x27c99a[_0x16330a]['id']});}})[_0x87dc('0x16')](respondWithStatusCode(_0x45e1dc,null))[_0x87dc('0x21')](APIHandleError(_0x45e1dc));};exports['removeTeams']=function(_0xeadc67,_0x271f02){var _0x43fa70=_0xeadc67[_0x87dc('0x52')]['id'];var _0x3d6c8c=null;if(_0xeadc67[_0x87dc('0x43')][_0x87dc('0x64')]){_0x3d6c8c=_[_0x87dc('0xb3')](_0xeadc67[_0x87dc('0x43')][_0x87dc('0x64')])?_0xeadc67[_0x87dc('0x43')][_0x87dc('0x64')]:[_0xeadc67[_0x87dc('0x43')]['ids']];}var _0x31eb51=[];return Promise[_0x87dc('0xff')]()[_0x87dc('0x16')](function(){if(!_0x3d6c8c)throw new APIBadRequestError(_0x87dc('0x11d'));})['then'](function(){return db['User'][_0x87dc('0x9a')]({'where':{'id':_0x43fa70}});})['then'](function(_0xc367de){if(!_0xc367de)throw new APINotFoundError(util[_0x87dc('0xae')](_0x87dc('0x114'),_0xeadc67[_0x87dc('0x52')]['id']));return db['sequelize'][_0x87dc('0x115')](function(_0x2fd0f2){return _0xc367de[_0x87dc('0x11e')](_0x3d6c8c,{'transaction':_0x2fd0f2})[_0x87dc('0x16')](function(){return db[_0x87dc('0x112')][_0x87dc('0x8c')]({'where':{'id':{'$in':_0x3d6c8c}}});})[_0x87dc('0x16')](function(_0x372ad0){var _0x86039b=_[_0x87dc('0x34')](_0x372ad0,function(_0x23b7e3){return _0x23b7e3[_0x87dc('0x11f')]();});return Promise['all'](_0x86039b);})[_0x87dc('0x16')](function(_0x3b8f30){_0x31eb51=_[_0x87dc('0x116')](_0x3b8f30);var _0x1f8e0e=_[_0x87dc('0x34')](_0x31eb51,function(_0x47cc7b){return _0x47cc7b[_0x87dc('0x120')](_0xc367de['id'],{'transaction':_0x2fd0f2});});return Promise[_0x87dc('0x5f')](_0x1f8e0e);})[_0x87dc('0x16')](function(){if(!_0xc367de['online'])return;var _0x318bf5=_[_0x87dc('0xcc')](_0x31eb51,function(_0x49c971){return _0x49c971[_0x87dc('0x118')](_0x87dc('0x9f'))===_0x87dc('0x121');});var _0x21de10=_[_0x87dc('0x34')](_0x318bf5,function(_0x2b484d){return db[_0x87dc('0xb0')][_0x87dc('0x39')]({'where':{'VoiceQueueId':_0x2b484d['id'],'UserId':_0xc367de['id']},'transaction':_0x2fd0f2});});return Promise[_0x87dc('0x5f')](_0x21de10);})[_0x87dc('0x16')](function(){return db[_0x87dc('0x11a')]['findAll']({'where':{'teamId':{'$in':_0x3d6c8c}}});})[_0x87dc('0x16')](function(_0x4a3e75){var _0x4d34e4=_['map'](_0x4a3e75,function(_0x454155){return db['UserVoicePrefix'][_0x87dc('0x39')]({'where':{'UserId':_0xc367de['id'],'VoicePrefixId':_0x454155[_0x87dc('0x11c')]}},{'transaction':_0x2fd0f2});});return Promise[_0x87dc('0x5f')](_0x4d34e4);});});})['then'](function(){for(var _0x2ccb99=0x0;_0x2ccb99<_0x31eb51[_0x87dc('0x5a')];_0x2ccb99++){var _0x288590=_0x31eb51[_0x2ccb99][_0x87dc('0x118')](_0x87dc('0x9f'));var _0x1b54f4=_0x288590+_0x87dc('0xaa');socket[_0x87dc('0x2c')](_0x87dc('0x2f')+_0x288590+'Queue:remove',{'UserId':_0x43fa70,['queueField']:_0x31eb51[_0x2ccb99]['id']});}})[_0x87dc('0x16')](respondWithStatusCode(_0x271f02,null))[_0x87dc('0x21')](APIHandleError(_0x271f02));};exports[_0x87dc('0x122')]=function(_0x3a4bda,_0x13cbdf){var _0x50c70b={};var _0x5ae51c={};var _0x10c85c;var _0x4e13b2;return db[_0x87dc('0x3d')][_0x87dc('0x9a')]({'where':{'id':_0x3a4bda[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x13cbdf,null))['then'](function(_0x6fe653){if(_0x6fe653){_0x10c85c=_0x6fe653;_0x5ae51c['model']=_[_0x87dc('0x56')](db[_0x87dc('0xcf')]['rawAttributes']);_0x5ae51c['query']=_['keys'](_0x3a4bda[_0x87dc('0x43')]);_0x5ae51c[_0x87dc('0x57')]=_[_0x87dc('0x58')](_0x5ae51c[_0x87dc('0x53')],_0x5ae51c[_0x87dc('0x43')]);_0x50c70b[_0x87dc('0x48')]=_['intersection'](_0x5ae51c['model'],qs[_0x87dc('0x59')](_0x3a4bda[_0x87dc('0x43')]['fields']));_0x50c70b[_0x87dc('0x48')]=_0x50c70b[_0x87dc('0x48')][_0x87dc('0x5a')]?_0x50c70b['attributes']:_0x5ae51c[_0x87dc('0x53')];_0x50c70b['order']=qs[_0x87dc('0xcb')](_0x3a4bda[_0x87dc('0x43')]['sort']);_0x50c70b[_0x87dc('0x42')]=qs[_0x87dc('0x57')](_['pick'](_0x3a4bda['query'],_0x5ae51c[_0x87dc('0x57')]));if(_0x3a4bda[_0x87dc('0x43')][_0x87dc('0xcc')]){_0x50c70b[_0x87dc('0x42')]=_[_0x87dc('0xcd')](_0x50c70b[_0x87dc('0x42')],{'$or':_['map'](_0x50c70b[_0x87dc('0x48')],function(_0x3c9c70){var _0x320d3f={};_0x320d3f[_0x3c9c70]={'$like':'%'+_0x3a4bda['query'][_0x87dc('0xcc')]+'%'};return _0x320d3f;})});}_0x50c70b=_['merge']({},_0x50c70b,_0x3a4bda[_0x87dc('0x5c')]);return _0x10c85c[_0x87dc('0x122')](_0x50c70b);}})[_0x87dc('0x16')](function(_0x1137f0){if(_0x1137f0){_0x4e13b2=_0x1137f0[_0x87dc('0x5a')];if(!_0x3a4bda[_0x87dc('0x43')]['hasOwnProperty'](_0x87dc('0xd3'))){_0x50c70b[_0x87dc('0x26')]=qs[_0x87dc('0x26')](_0x3a4bda[_0x87dc('0x43')][_0x87dc('0x26')]);_0x50c70b[_0x87dc('0x25')]=qs[_0x87dc('0x25')](_0x3a4bda[_0x87dc('0x43')][_0x87dc('0x25')]);}return _0x10c85c[_0x87dc('0x122')](_0x50c70b);}})[_0x87dc('0x16')](function(_0x5e1936){if(_0x5e1936){return _0x5e1936?{'count':_0x4e13b2,'rows':_0x5e1936}:null;}})[_0x87dc('0x16')](respondWithResult(_0x13cbdf,null))['catch'](handleError(_0x13cbdf,null));};exports[_0x87dc('0x123')]=function(_0x4bcc6c,_0x47c852){var _0x436be1={};var _0x2682ac={};var _0x33d6ab;return db[_0x87dc('0x3d')]['findOne']({'where':{'id':_0x4bcc6c[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x47c852,null))['then'](function(_0x348fa6){if(_0x348fa6){_0x33d6ab=_0x348fa6;_0x2682ac[_0x87dc('0x53')]=_[_0x87dc('0x56')](db[_0x87dc('0x3d')]['rawAttributes']);_0x2682ac[_0x87dc('0x43')]=_[_0x87dc('0x56')](_0x4bcc6c[_0x87dc('0x43')]);_0x2682ac['filters']=_[_0x87dc('0x58')](_0x2682ac[_0x87dc('0x53')],_0x2682ac[_0x87dc('0x43')]);_0x436be1[_0x87dc('0x48')]=_[_0x87dc('0x58')](_0x2682ac[_0x87dc('0x53')],qs[_0x87dc('0x59')](_0x4bcc6c[_0x87dc('0x43')][_0x87dc('0x59')]));_0x436be1[_0x87dc('0x48')]=_0x436be1[_0x87dc('0x48')][_0x87dc('0x5a')]?_0x436be1['attributes']:_0x2682ac[_0x87dc('0x53')];_0x436be1[_0x87dc('0xca')]=qs[_0x87dc('0xcb')](_0x4bcc6c[_0x87dc('0x43')]['sort']);_0x436be1[_0x87dc('0x42')]=qs[_0x87dc('0x57')](_[_0x87dc('0xd6')](_0x4bcc6c[_0x87dc('0x43')],_0x2682ac[_0x87dc('0x57')]));if(_0x4bcc6c[_0x87dc('0x43')][_0x87dc('0xcc')]){_0x436be1[_0x87dc('0x42')]=_[_0x87dc('0xcd')](_0x436be1[_0x87dc('0x42')],{'$or':_[_0x87dc('0x34')](_0x436be1[_0x87dc('0x48')],function(_0x38a8bd){var _0x50e85d={};_0x50e85d[_0x38a8bd]={'$like':'%'+_0x4bcc6c[_0x87dc('0x43')][_0x87dc('0xcc')]+'%'};return _0x50e85d;})});}_0x436be1['model']=db['User'];_0x436be1['as']=_0x87dc('0x30');_0x436be1=_[_0x87dc('0xcd')]({},_0x436be1,_0x4bcc6c['options']);return _0x33d6ab[_0x87dc('0xf6')]({'include':[_0x436be1]});}})[_0x87dc('0x16')](function(_0x47f493){if(_0x47f493){var _0x56c693={},_0x520556=[];for(var _0x97bbaf=0x0;_0x97bbaf<_0x47f493['length'];_0x97bbaf+=0x1){for(var _0x2723c4=0x0,_0x92b84a;_0x2723c4<_0x47f493[_0x97bbaf][_0x87dc('0x30')][_0x87dc('0x5a')];_0x2723c4+=0x1){_0x92b84a=_0x47f493[_0x97bbaf]['Agents'][_0x2723c4]['get']({'plain':!![]});_0x56c693[_0x92b84a['id']]=_0x92b84a;}}_0x56c693=_[_0x87dc('0x124')](_0x56c693);for(var _0x5e61de=qs[_0x87dc('0x25')](_0x4bcc6c[_0x87dc('0x43')]['offset']);_0x5e61de<_0x56c693['length']&&_0x520556[_0x87dc('0x5a')]<qs['limit'](_0x4bcc6c[_0x87dc('0x43')][_0x87dc('0x26')]);_0x5e61de+=0x1){if(_0x56c693[_0x5e61de]){_0x520556['push'](_0x56c693[_0x5e61de]);}}return{'count':_0x56c693[_0x87dc('0x5a')],'rows':_0x520556};}})['then'](respondWithResult(_0x47c852,null))['catch'](handleError(_0x47c852,null));};exports[_0x87dc('0x39')]=function(_0x151241,_0x1cf831){if(_0x151241['user']['id']==_0x151241[_0x87dc('0x52')]['id']){return _0x1cf831['status'](0x1f4)[_0x87dc('0x3b')]({'message':_0x87dc('0x125')});}return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x151241[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x1cf831,null))[_0x87dc('0x16')](removeEntity(_0x1cf831,null))[_0x87dc('0x21')](handleError(_0x1cf831,null));};exports[_0x87dc('0x126')]=function(_0x5de128,_0x147dc2){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x5de128[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x147dc2,null))[_0x87dc('0x16')](function(_0x2f74c0){if(_0x2f74c0){return _0x2f74c0[_0x87dc('0x126')](_0x5de128[_0x87dc('0x60')]['ids'],_[_0x87dc('0x63')](_0x5de128[_0x87dc('0x60')],[_0x87dc('0x64'),'id'])||{})[_0x87dc('0x127')](function(){for(var _0x1c0b36=0x0;_0x1c0b36<_0x5de128[_0x87dc('0x60')][_0x87dc('0x64')][_0x87dc('0x5a')];_0x1c0b36+=0x1){socket[_0x87dc('0x2c')](_0x87dc('0x128'),{'ChatInteractionId':Number(_0x5de128[_0x87dc('0x60')][_0x87dc('0x64')][_0x1c0b36]),'UserId':Number(_0x5de128[_0x87dc('0x52')]['id'])});}return _0x5de128[_0x87dc('0x60')][_0x87dc('0x64')];});}})[_0x87dc('0x16')](respondWithResult(_0x147dc2,null))[_0x87dc('0x21')](handleError(_0x147dc2,null));};exports['removeChatInteractions']=function(_0x190cf8,_0x562393){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x190cf8['params']['id']}})['then'](handleEntityNotFound(_0x562393,null))[_0x87dc('0x16')](function(_0x368ce8){if(_0x368ce8){return _0x368ce8[_0x87dc('0x129')](_0x190cf8['query'][_0x87dc('0x64')])[_0x87dc('0x16')](function(){if(_[_0x87dc('0xb3')](_0x190cf8[_0x87dc('0x43')][_0x87dc('0x64')])){for(var _0x5d8903=0x0;_0x5d8903<_0x190cf8[_0x87dc('0x43')]['ids'][_0x87dc('0x5a')];_0x5d8903+=0x1){socket[_0x87dc('0x2c')](_0x87dc('0x12a'),{'ChatInteractionId':Number(_0x190cf8[_0x87dc('0x43')][_0x87dc('0x64')][_0x5d8903]),'UserId':Number(_0x190cf8['params']['id'])});}}else{socket[_0x87dc('0x2c')](_0x87dc('0x12a'),{'ChatInteractionId':Number(_0x190cf8['query']['ids']),'UserId':Number(_0x190cf8[_0x87dc('0x52')]['id'])});}});}})['then'](respondWithStatusCode(_0x562393,null))[_0x87dc('0x21')](handleError(_0x562393,null));};exports[_0x87dc('0x12b')]=function(_0x53bc17,_0x387fd3){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x53bc17[_0x87dc('0x52')]['id']}})['then'](handleEntityNotFound(_0x387fd3,null))[_0x87dc('0x16')](function(_0x4fc789){if(_0x4fc789){return _0x4fc789['addMailInteractions'](_0x53bc17[_0x87dc('0x60')][_0x87dc('0x64')],_['omit'](_0x53bc17[_0x87dc('0x60')],['ids','id'])||{})[_0x87dc('0x127')](function(){for(var _0x16ed04=0x0;_0x16ed04<_0x53bc17['body'][_0x87dc('0x64')][_0x87dc('0x5a')];_0x16ed04+=0x1){socket[_0x87dc('0x2c')](_0x87dc('0x12c'),{'MailInteractionId':Number(_0x53bc17[_0x87dc('0x60')]['ids'][_0x16ed04]),'UserId':Number(_0x53bc17[_0x87dc('0x52')]['id'])});}return _0x53bc17[_0x87dc('0x60')]['ids'];});}})[_0x87dc('0x16')](respondWithResult(_0x387fd3,null))[_0x87dc('0x21')](handleError(_0x387fd3,null));};exports[_0x87dc('0x12d')]=function(_0x26f0ee,_0x2ce769){return db['User'][_0x87dc('0x37')]({'where':{'id':_0x26f0ee[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x2ce769,null))['then'](function(_0x41a886){if(_0x41a886){return _0x41a886[_0x87dc('0x12d')](_0x26f0ee[_0x87dc('0x43')]['ids'])[_0x87dc('0x16')](function(){if(_[_0x87dc('0xb3')](_0x26f0ee[_0x87dc('0x43')]['ids'])){for(var _0x12e912=0x0;_0x12e912<_0x26f0ee[_0x87dc('0x43')][_0x87dc('0x64')][_0x87dc('0x5a')];_0x12e912+=0x1){socket[_0x87dc('0x2c')](_0x87dc('0x12e'),{'MailInteractionId':Number(_0x26f0ee[_0x87dc('0x43')]['ids'][_0x12e912]),'UserId':Number(_0x26f0ee[_0x87dc('0x52')]['id'])});}}else{socket[_0x87dc('0x2c')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x26f0ee[_0x87dc('0x43')][_0x87dc('0x64')]),'UserId':Number(_0x26f0ee[_0x87dc('0x52')]['id'])});}});}})['then'](respondWithStatusCode(_0x2ce769,null))[_0x87dc('0x21')](handleError(_0x2ce769,null));};exports[_0x87dc('0x12f')]=function(_0x3563b8,_0x31db60){return db['User'][_0x87dc('0x37')]({'where':{'id':_0x3563b8[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x31db60,null))[_0x87dc('0x16')](function(_0x13b055){if(_0x13b055){return _0x13b055[_0x87dc('0x12f')](_0x3563b8[_0x87dc('0x60')][_0x87dc('0x64')],_[_0x87dc('0x63')](_0x3563b8['body'],['ids','id'])||{})['spread'](function(){for(var _0x2d0cca=0x0;_0x2d0cca<_0x3563b8[_0x87dc('0x60')][_0x87dc('0x64')][_0x87dc('0x5a')];_0x2d0cca+=0x1){socket[_0x87dc('0x2c')](_0x87dc('0x130'),{'FaxInteractionId':Number(_0x3563b8[_0x87dc('0x60')][_0x87dc('0x64')][_0x2d0cca]),'UserId':Number(_0x3563b8[_0x87dc('0x52')]['id'])});}return _0x3563b8[_0x87dc('0x60')][_0x87dc('0x64')];});}})[_0x87dc('0x16')](respondWithResult(_0x31db60,null))[_0x87dc('0x21')](handleError(_0x31db60,null));};exports['removeFaxInteractions']=function(_0x218ad9,_0x455eaf){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x218ad9['params']['id']}})['then'](handleEntityNotFound(_0x455eaf,null))['then'](function(_0x1debc7){if(_0x1debc7){return _0x1debc7[_0x87dc('0x131')](_0x218ad9[_0x87dc('0x43')]['ids'])['then'](function(){if(_[_0x87dc('0xb3')](_0x218ad9[_0x87dc('0x43')]['ids'])){for(var _0x2685b0=0x0;_0x2685b0<_0x218ad9[_0x87dc('0x43')]['ids'][_0x87dc('0x5a')];_0x2685b0+=0x1){socket[_0x87dc('0x2c')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x218ad9[_0x87dc('0x43')][_0x87dc('0x64')][_0x2685b0]),'UserId':Number(_0x218ad9['params']['id'])});}}else{socket[_0x87dc('0x2c')](_0x87dc('0x132'),{'FaxInteractionId':Number(_0x218ad9[_0x87dc('0x43')][_0x87dc('0x64')]),'UserId':Number(_0x218ad9[_0x87dc('0x52')]['id'])});}});}})['then'](respondWithStatusCode(_0x455eaf,null))['catch'](handleError(_0x455eaf,null));};exports[_0x87dc('0x133')]=function(_0x17333c,_0x9f4e6b){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x17333c['params']['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x9f4e6b,null))[_0x87dc('0x16')](function(_0x4267f0){if(_0x4267f0){return _0x4267f0['addSmsInteractions'](_0x17333c[_0x87dc('0x60')]['ids'],_[_0x87dc('0x63')](_0x17333c[_0x87dc('0x60')],[_0x87dc('0x64'),'id'])||{})['spread'](function(){for(var _0x3d11c8=0x0;_0x3d11c8<_0x17333c[_0x87dc('0x60')][_0x87dc('0x64')][_0x87dc('0x5a')];_0x3d11c8+=0x1){socket[_0x87dc('0x2c')](_0x87dc('0x134'),{'SmsInteractionId':Number(_0x17333c[_0x87dc('0x60')][_0x87dc('0x64')][_0x3d11c8]),'UserId':Number(_0x17333c[_0x87dc('0x52')]['id'])});}return _0x17333c['body'][_0x87dc('0x64')];});}})['then'](respondWithResult(_0x9f4e6b,null))[_0x87dc('0x21')](handleError(_0x9f4e6b,null));};exports[_0x87dc('0x135')]=function(_0x36a19a,_0x2977c8){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x36a19a[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x2977c8,null))['then'](function(_0x11d62e){if(_0x11d62e){return _0x11d62e[_0x87dc('0x135')](_0x36a19a[_0x87dc('0x43')]['ids'])[_0x87dc('0x16')](function(){if(_[_0x87dc('0xb3')](_0x36a19a['query'][_0x87dc('0x64')])){for(var _0x4a457d=0x0;_0x4a457d<_0x36a19a[_0x87dc('0x43')]['ids'][_0x87dc('0x5a')];_0x4a457d+=0x1){socket['emit'](_0x87dc('0x136'),{'SmsInteractionId':Number(_0x36a19a[_0x87dc('0x43')][_0x87dc('0x64')][_0x4a457d]),'UserId':Number(_0x36a19a[_0x87dc('0x52')]['id'])});}}else{socket[_0x87dc('0x2c')](_0x87dc('0x136'),{'SmsInteractionId':Number(_0x36a19a['query']['ids']),'UserId':Number(_0x36a19a[_0x87dc('0x52')]['id'])});}});}})[_0x87dc('0x16')](respondWithStatusCode(_0x2977c8,null))[_0x87dc('0x21')](handleError(_0x2977c8,null));};exports['addOpenchannelInteractions']=function(_0x38f2c0,_0x1213fa){return db['User'][_0x87dc('0x37')]({'where':{'id':_0x38f2c0['params']['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x1213fa,null))['then'](function(_0x111aa8){if(_0x111aa8){return _0x111aa8[_0x87dc('0x137')](_0x38f2c0['body'][_0x87dc('0x64')],_[_0x87dc('0x63')](_0x38f2c0[_0x87dc('0x60')],['ids','id'])||{})[_0x87dc('0x127')](function(){for(var _0x1df9bd=0x0;_0x1df9bd<_0x38f2c0[_0x87dc('0x60')]['ids'][_0x87dc('0x5a')];_0x1df9bd+=0x1){socket[_0x87dc('0x2c')](_0x87dc('0x138'),{'OpenchannelInteractionId':Number(_0x38f2c0[_0x87dc('0x60')][_0x87dc('0x64')][_0x1df9bd]),'UserId':Number(_0x38f2c0[_0x87dc('0x52')]['id'])});}return _0x38f2c0['body'][_0x87dc('0x64')];});}})[_0x87dc('0x16')](respondWithResult(_0x1213fa,null))[_0x87dc('0x21')](handleError(_0x1213fa,null));};exports[_0x87dc('0x139')]=function(_0x4888d0,_0x525c88){return db[_0x87dc('0x3d')]['find']({'where':{'id':_0x4888d0[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x525c88,null))['then'](function(_0x102968){if(_0x102968){return _0x102968[_0x87dc('0x139')](_0x4888d0[_0x87dc('0x43')]['ids'])[_0x87dc('0x16')](function(){if(_[_0x87dc('0xb3')](_0x4888d0[_0x87dc('0x43')][_0x87dc('0x64')])){for(var _0x3e3c59=0x0;_0x3e3c59<_0x4888d0['query'][_0x87dc('0x64')][_0x87dc('0x5a')];_0x3e3c59+=0x1){socket[_0x87dc('0x2c')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x4888d0[_0x87dc('0x43')][_0x87dc('0x64')][_0x3e3c59]),'UserId':Number(_0x4888d0[_0x87dc('0x52')]['id'])});}}else{socket[_0x87dc('0x2c')](_0x87dc('0x13a'),{'OpenchannelInteractionId':Number(_0x4888d0[_0x87dc('0x43')][_0x87dc('0x64')]),'UserId':Number(_0x4888d0['params']['id'])});}});}})[_0x87dc('0x16')](respondWithStatusCode(_0x525c88,null))[_0x87dc('0x21')](handleError(_0x525c88,null));};exports['addWhatsappInteractions']=function(_0xe3d1a2,_0x32add8){return db['User'][_0x87dc('0x37')]({'where':{'id':_0xe3d1a2[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x32add8,null))['then'](function(_0x48b7a3){if(_0x48b7a3){return _0x48b7a3[_0x87dc('0x13b')](_0xe3d1a2[_0x87dc('0x60')]['ids'],_[_0x87dc('0x63')](_0xe3d1a2[_0x87dc('0x60')],['ids','id'])||{})[_0x87dc('0x127')](function(){for(var _0x4ac446=0x0;_0x4ac446<_0xe3d1a2[_0x87dc('0x60')][_0x87dc('0x64')][_0x87dc('0x5a')];_0x4ac446+=0x1){socket['emit'](_0x87dc('0x13c'),{'WhatsappInteractionId':Number(_0xe3d1a2[_0x87dc('0x60')][_0x87dc('0x64')][_0x4ac446]),'UserId':Number(_0xe3d1a2[_0x87dc('0x52')]['id'])});}return _0xe3d1a2['body'][_0x87dc('0x64')];});}})[_0x87dc('0x16')](respondWithResult(_0x32add8,null))[_0x87dc('0x21')](handleError(_0x32add8,null));};exports[_0x87dc('0x13d')]=function(_0xa5fbf1,_0x4442e8){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0xa5fbf1[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x4442e8,null))[_0x87dc('0x16')](function(_0x1d0e47){if(_0x1d0e47){return _0x1d0e47[_0x87dc('0x13d')](_0xa5fbf1[_0x87dc('0x43')][_0x87dc('0x64')]);}})[_0x87dc('0x16')](respondWithStatusCode(_0x4442e8,null))[_0x87dc('0x21')](handleError(_0x4442e8,null));};exports[_0x87dc('0x13e')]=function(_0x25c342,_0x18f5cd){var _0x4eec50={};var _0x2f0500={};var _0x3a9f77;var _0x455189;return db['User'][_0x87dc('0x9a')]({'where':{'id':_0x25c342[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x18f5cd,null))[_0x87dc('0x16')](function(_0x2bbdea){if(_0x2bbdea){_0x3a9f77=_0x2bbdea;_0x2f0500[_0x87dc('0x53')]=_['keys'](db[_0x87dc('0x13f')]['rawAttributes']);_0x2f0500['query']=_[_0x87dc('0x56')](_0x25c342[_0x87dc('0x43')]);_0x2f0500[_0x87dc('0x57')]=_[_0x87dc('0x58')](_0x2f0500[_0x87dc('0x53')],_0x2f0500[_0x87dc('0x43')]);_0x4eec50['attributes']=_[_0x87dc('0x58')](_0x2f0500[_0x87dc('0x53')],qs[_0x87dc('0x59')](_0x25c342['query'][_0x87dc('0x59')]));_0x4eec50['attributes']=_0x4eec50[_0x87dc('0x48')][_0x87dc('0x5a')]?_0x4eec50[_0x87dc('0x48')]:_0x2f0500['model'];_0x4eec50[_0x87dc('0xca')]=qs['sort'](_0x25c342[_0x87dc('0x43')][_0x87dc('0xcb')]);_0x4eec50[_0x87dc('0x42')]=qs['filters'](_['pick'](_0x25c342[_0x87dc('0x43')],_0x2f0500[_0x87dc('0x57')]));if(_0x25c342[_0x87dc('0x43')][_0x87dc('0xcc')]){_0x4eec50[_0x87dc('0x42')]=_[_0x87dc('0xcd')](_0x4eec50[_0x87dc('0x42')],{'$or':_[_0x87dc('0x34')](_0x4eec50['attributes'],function(_0x1174ea){var _0x49815d={};_0x49815d[_0x1174ea]={'$like':'%'+_0x25c342['query']['filter']+'%'};return _0x49815d;})});}_0x4eec50=_['merge']({},_0x4eec50,_0x25c342[_0x87dc('0x5c')]);return _0x3a9f77[_0x87dc('0x13e')](_0x4eec50);}})[_0x87dc('0x16')](function(_0x2a78d1){if(_0x2a78d1){_0x455189=_0x2a78d1[_0x87dc('0x5a')];if(!_0x25c342['query'][_0x87dc('0xce')](_0x87dc('0xd3'))){_0x4eec50[_0x87dc('0x26')]=qs[_0x87dc('0x26')](_0x25c342['query'][_0x87dc('0x26')]);_0x4eec50[_0x87dc('0x25')]=qs[_0x87dc('0x25')](_0x25c342['query'][_0x87dc('0x25')]);}return _0x3a9f77[_0x87dc('0x13e')](_0x4eec50);}})['then'](function(_0x3703f1){if(_0x3703f1){return _0x3703f1?{'count':_0x455189,'rows':_0x3703f1}:null;}})[_0x87dc('0x16')](respondWithResult(_0x18f5cd,null))[_0x87dc('0x21')](handleError(_0x18f5cd,null));};exports[_0x87dc('0x140')]=function(_0x460f9f,_0x375b20){var _0x4d6f6e={};var _0x52c97f={};var _0x465042;var _0xfc3f23;return db[_0x87dc('0x3d')][_0x87dc('0x9a')]({'where':{'id':_0x460f9f[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x375b20,null))[_0x87dc('0x16')](function(_0x5ae615){if(_0x5ae615){_0x465042=_0x5ae615;_0x52c97f[_0x87dc('0x53')]=_[_0x87dc('0x56')](db[_0x87dc('0x141')][_0x87dc('0x3e')]);_0x52c97f[_0x87dc('0x43')]=_['keys'](_0x460f9f[_0x87dc('0x43')]);_0x52c97f[_0x87dc('0x57')]=_[_0x87dc('0x58')](_0x52c97f[_0x87dc('0x53')],_0x52c97f[_0x87dc('0x43')]);_0x4d6f6e[_0x87dc('0x48')]=_[_0x87dc('0x58')](_0x52c97f[_0x87dc('0x53')],qs[_0x87dc('0x59')](_0x460f9f[_0x87dc('0x43')][_0x87dc('0x59')]));_0x4d6f6e[_0x87dc('0x48')]=_0x4d6f6e[_0x87dc('0x48')][_0x87dc('0x5a')]?_0x4d6f6e['attributes']:_0x52c97f[_0x87dc('0x53')];_0x4d6f6e[_0x87dc('0xca')]=qs[_0x87dc('0xcb')](_0x460f9f['query'][_0x87dc('0xcb')]);_0x4d6f6e['where']=qs[_0x87dc('0x57')](_['pick'](_0x460f9f[_0x87dc('0x43')],_0x52c97f['filters']));if(_0x460f9f[_0x87dc('0x43')][_0x87dc('0xcc')]){_0x4d6f6e[_0x87dc('0x42')]=_[_0x87dc('0xcd')](_0x4d6f6e[_0x87dc('0x42')],{'$or':_[_0x87dc('0x34')](_0x4d6f6e[_0x87dc('0x48')],function(_0x3f5db7){var _0x310e1f={};_0x310e1f[_0x3f5db7]={'$like':'%'+_0x460f9f[_0x87dc('0x43')]['filter']+'%'};return _0x310e1f;})});}_0x4d6f6e=_[_0x87dc('0xcd')]({},_0x4d6f6e,_0x460f9f[_0x87dc('0x5c')]);return _0x465042[_0x87dc('0x140')](_0x4d6f6e);}})[_0x87dc('0x16')](function(_0x5a5511){if(_0x5a5511){_0xfc3f23=_0x5a5511[_0x87dc('0x5a')];if(!_0x460f9f[_0x87dc('0x43')][_0x87dc('0xce')](_0x87dc('0xd3'))){_0x4d6f6e[_0x87dc('0x26')]=qs[_0x87dc('0x26')](_0x460f9f[_0x87dc('0x43')][_0x87dc('0x26')]);_0x4d6f6e['offset']=qs[_0x87dc('0x25')](_0x460f9f['query'][_0x87dc('0x25')]);}return _0x465042['getFaxAccounts'](_0x4d6f6e);}})[_0x87dc('0x16')](function(_0x3892d4){if(_0x3892d4){return _0x3892d4?{'count':_0xfc3f23,'rows':_0x3892d4}:null;}})[_0x87dc('0x16')](respondWithResult(_0x375b20,null))[_0x87dc('0x21')](handleError(_0x375b20,null));};exports[_0x87dc('0x142')]=function(_0x5418f6,_0x3d1ef7){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x5418f6[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x3d1ef7,null))[_0x87dc('0x16')](function(_0x21a05e){if(_0x21a05e){return _0x21a05e[_0x87dc('0x142')](_0x5418f6['body'][_0x87dc('0x64')],_['omit'](_0x5418f6[_0x87dc('0x60')],[_0x87dc('0x64'),'id'])||{});}})[_0x87dc('0x16')](respondWithResult(_0x3d1ef7,null))[_0x87dc('0x21')](handleError(_0x3d1ef7,null));};exports['removeFaxAccounts']=function(_0x229e24,_0x80c09d){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x229e24[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x80c09d,null))['then'](function(_0x3eb933){if(_0x3eb933){return _0x3eb933[_0x87dc('0x143')](_0x229e24[_0x87dc('0x43')][_0x87dc('0x64')]);}})[_0x87dc('0x16')](respondWithStatusCode(_0x80c09d,null))[_0x87dc('0x21')](handleError(_0x80c09d,null));};exports[_0x87dc('0x144')]=function(_0x289e6c,_0x35985c){var _0x30628f={};var _0x48cc77={};var _0x263324;var _0x393582;return db[_0x87dc('0x3d')][_0x87dc('0x9a')]({'where':{'id':_0x289e6c[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x35985c,null))[_0x87dc('0x16')](function(_0x367eba){if(_0x367eba){_0x263324=_0x367eba;_0x48cc77[_0x87dc('0x53')]=_['keys'](db[_0x87dc('0x145')][_0x87dc('0x3e')]);_0x48cc77[_0x87dc('0x43')]=_[_0x87dc('0x56')](_0x289e6c[_0x87dc('0x43')]);_0x48cc77[_0x87dc('0x57')]=_[_0x87dc('0x58')](_0x48cc77['model'],_0x48cc77[_0x87dc('0x43')]);_0x30628f[_0x87dc('0x48')]=_['intersection'](_0x48cc77[_0x87dc('0x53')],qs[_0x87dc('0x59')](_0x289e6c[_0x87dc('0x43')][_0x87dc('0x59')]));_0x30628f[_0x87dc('0x48')]=_0x30628f[_0x87dc('0x48')]['length']?_0x30628f[_0x87dc('0x48')]:_0x48cc77[_0x87dc('0x53')];_0x30628f['order']=qs[_0x87dc('0xcb')](_0x289e6c[_0x87dc('0x43')][_0x87dc('0xcb')]);_0x30628f[_0x87dc('0x42')]=qs['filters'](_[_0x87dc('0xd6')](_0x289e6c[_0x87dc('0x43')],_0x48cc77[_0x87dc('0x57')]));if(_0x289e6c[_0x87dc('0x43')][_0x87dc('0xcc')]){_0x30628f[_0x87dc('0x42')]=_[_0x87dc('0xcd')](_0x30628f[_0x87dc('0x42')],{'$or':_[_0x87dc('0x34')](_0x30628f['attributes'],function(_0xdade9b){var _0x3f7649={};_0x3f7649[_0xdade9b]={'$like':'%'+_0x289e6c[_0x87dc('0x43')][_0x87dc('0xcc')]+'%'};return _0x3f7649;})});}_0x30628f=_['merge']({},_0x30628f,_0x289e6c[_0x87dc('0x5c')]);return _0x263324['getMailAccounts'](_0x30628f);}})['then'](function(_0x5119ea){if(_0x5119ea){_0x393582=_0x5119ea['length'];if(!_0x289e6c['query']['hasOwnProperty'](_0x87dc('0xd3'))){_0x30628f[_0x87dc('0x26')]=qs[_0x87dc('0x26')](_0x289e6c['query'][_0x87dc('0x26')]);_0x30628f[_0x87dc('0x25')]=qs['offset'](_0x289e6c[_0x87dc('0x43')][_0x87dc('0x25')]);}return _0x263324[_0x87dc('0x144')](_0x30628f);}})[_0x87dc('0x16')](function(_0x38a688){if(_0x38a688){return _0x38a688?{'count':_0x393582,'rows':_0x38a688}:null;}})[_0x87dc('0x16')](respondWithResult(_0x35985c,null))[_0x87dc('0x21')](handleError(_0x35985c,null));};exports['addMailAccounts']=function(_0x39d103,_0x45e715){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x39d103['params']['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x45e715,null))[_0x87dc('0x16')](function(_0x3df8ce){if(_0x3df8ce){return _0x3df8ce['addMailAccounts'](_0x39d103['body']['ids'],_[_0x87dc('0x63')](_0x39d103[_0x87dc('0x60')],[_0x87dc('0x64'),'id'])||{});}})[_0x87dc('0x16')](respondWithResult(_0x45e715,null))[_0x87dc('0x21')](handleError(_0x45e715,null));};exports['removeMailAccounts']=function(_0x44a54d,_0x2b7ed7){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x44a54d[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x2b7ed7,null))[_0x87dc('0x16')](function(_0x1365d8){if(_0x1365d8){return _0x1365d8[_0x87dc('0x146')](_0x44a54d[_0x87dc('0x43')]['ids']);}})[_0x87dc('0x16')](respondWithStatusCode(_0x2b7ed7,null))[_0x87dc('0x21')](handleError(_0x2b7ed7,null));};exports[_0x87dc('0x147')]=function(_0x56cb68,_0x36f8b2){var _0x3972e9={};var _0x2eff66={};var _0x27e01c;var _0x2da0be;return db[_0x87dc('0x3d')][_0x87dc('0x9a')]({'where':{'id':_0x56cb68[_0x87dc('0x52')]['id']}})['then'](handleEntityNotFound(_0x36f8b2,null))[_0x87dc('0x16')](function(_0x1493e9){if(_0x1493e9){_0x27e01c=_0x1493e9;_0x2eff66[_0x87dc('0x53')]=_[_0x87dc('0x56')](db[_0x87dc('0x148')][_0x87dc('0x3e')]);_0x2eff66[_0x87dc('0x43')]=_['keys'](_0x56cb68[_0x87dc('0x43')]);_0x2eff66[_0x87dc('0x57')]=_['intersection'](_0x2eff66[_0x87dc('0x53')],_0x2eff66[_0x87dc('0x43')]);_0x3972e9[_0x87dc('0x48')]=_[_0x87dc('0x58')](_0x2eff66['model'],qs[_0x87dc('0x59')](_0x56cb68[_0x87dc('0x43')][_0x87dc('0x59')]));_0x3972e9['attributes']=_0x3972e9[_0x87dc('0x48')][_0x87dc('0x5a')]?_0x3972e9[_0x87dc('0x48')]:_0x2eff66[_0x87dc('0x53')];_0x3972e9['order']=qs[_0x87dc('0xcb')](_0x56cb68[_0x87dc('0x43')][_0x87dc('0xcb')]);_0x3972e9[_0x87dc('0x42')]=qs['filters'](_['pick'](_0x56cb68[_0x87dc('0x43')],_0x2eff66[_0x87dc('0x57')]));if(_0x56cb68[_0x87dc('0x43')][_0x87dc('0xcc')]){_0x3972e9['where']=_['merge'](_0x3972e9['where'],{'$or':_[_0x87dc('0x34')](_0x3972e9[_0x87dc('0x48')],function(_0x3697cd){var _0x548fed={};_0x548fed[_0x3697cd]={'$like':'%'+_0x56cb68['query'][_0x87dc('0xcc')]+'%'};return _0x548fed;})});}_0x3972e9=_['merge']({},_0x3972e9,_0x56cb68[_0x87dc('0x5c')]);return _0x27e01c[_0x87dc('0x147')](_0x3972e9);}})[_0x87dc('0x16')](function(_0x4b8f8b){if(_0x4b8f8b){_0x2da0be=_0x4b8f8b[_0x87dc('0x5a')];if(!_0x56cb68[_0x87dc('0x43')][_0x87dc('0xce')](_0x87dc('0xd3'))){_0x3972e9[_0x87dc('0x26')]=qs[_0x87dc('0x26')](_0x56cb68[_0x87dc('0x43')]['limit']);_0x3972e9[_0x87dc('0x25')]=qs[_0x87dc('0x25')](_0x56cb68['query']['offset']);}return _0x27e01c[_0x87dc('0x147')](_0x3972e9);}})[_0x87dc('0x16')](function(_0xa3c59c){if(_0xa3c59c){return _0xa3c59c?{'count':_0x2da0be,'rows':_0xa3c59c}:null;}})['then'](respondWithResult(_0x36f8b2,null))['catch'](handleError(_0x36f8b2,null));};exports['addOpenchannelAccounts']=function(_0x30cb9e,_0x5b970a){return db[_0x87dc('0x3d')]['find']({'where':{'id':_0x30cb9e[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x5b970a,null))['then'](function(_0x5078db){if(_0x5078db){return _0x5078db[_0x87dc('0x149')](_0x30cb9e[_0x87dc('0x60')]['ids'],_[_0x87dc('0x63')](_0x30cb9e['body'],['ids','id'])||{});}})[_0x87dc('0x16')](respondWithResult(_0x5b970a,null))[_0x87dc('0x21')](handleError(_0x5b970a,null));};exports[_0x87dc('0x14a')]=function(_0xf03ed3,_0x35d236){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0xf03ed3[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x35d236,null))[_0x87dc('0x16')](function(_0x32f458){if(_0x32f458){return _0x32f458[_0x87dc('0x14a')](_0xf03ed3[_0x87dc('0x43')]['ids']);}})['then'](respondWithStatusCode(_0x35d236,null))[_0x87dc('0x21')](handleError(_0x35d236,null));};exports['getSmsAccounts']=function(_0x5225a2,_0x153f0c){var _0xdf2fbf={};var _0x39424d={};var _0x19a2df;var _0xb13024;return db['User']['findOne']({'where':{'id':_0x5225a2['params']['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x153f0c,null))['then'](function(_0x4c67c8){if(_0x4c67c8){_0x19a2df=_0x4c67c8;_0x39424d['model']=_[_0x87dc('0x56')](db['SmsAccount'][_0x87dc('0x3e')]);_0x39424d[_0x87dc('0x43')]=_[_0x87dc('0x56')](_0x5225a2[_0x87dc('0x43')]);_0x39424d['filters']=_[_0x87dc('0x58')](_0x39424d['model'],_0x39424d[_0x87dc('0x43')]);_0xdf2fbf[_0x87dc('0x48')]=_[_0x87dc('0x58')](_0x39424d[_0x87dc('0x53')],qs['fields'](_0x5225a2['query']['fields']));_0xdf2fbf[_0x87dc('0x48')]=_0xdf2fbf[_0x87dc('0x48')][_0x87dc('0x5a')]?_0xdf2fbf[_0x87dc('0x48')]:_0x39424d[_0x87dc('0x53')];_0xdf2fbf[_0x87dc('0xca')]=qs[_0x87dc('0xcb')](_0x5225a2[_0x87dc('0x43')][_0x87dc('0xcb')]);_0xdf2fbf['where']=qs[_0x87dc('0x57')](_['pick'](_0x5225a2['query'],_0x39424d[_0x87dc('0x57')]));if(_0x5225a2[_0x87dc('0x43')]['filter']){_0xdf2fbf['where']=_[_0x87dc('0xcd')](_0xdf2fbf[_0x87dc('0x42')],{'$or':_['map'](_0xdf2fbf[_0x87dc('0x48')],function(_0x14563f){var _0x3f6920={};_0x3f6920[_0x14563f]={'$like':'%'+_0x5225a2[_0x87dc('0x43')][_0x87dc('0xcc')]+'%'};return _0x3f6920;})});}_0xdf2fbf=_[_0x87dc('0xcd')]({},_0xdf2fbf,_0x5225a2['options']);return _0x19a2df[_0x87dc('0x14b')](_0xdf2fbf);}})[_0x87dc('0x16')](function(_0x26a6f){if(_0x26a6f){_0xb13024=_0x26a6f['length'];if(!_0x5225a2[_0x87dc('0x43')][_0x87dc('0xce')](_0x87dc('0xd3'))){_0xdf2fbf['limit']=qs[_0x87dc('0x26')](_0x5225a2[_0x87dc('0x43')]['limit']);_0xdf2fbf[_0x87dc('0x25')]=qs[_0x87dc('0x25')](_0x5225a2[_0x87dc('0x43')][_0x87dc('0x25')]);}return _0x19a2df[_0x87dc('0x14b')](_0xdf2fbf);}})[_0x87dc('0x16')](function(_0x451ef9){if(_0x451ef9){return _0x451ef9?{'count':_0xb13024,'rows':_0x451ef9}:null;}})['then'](respondWithResult(_0x153f0c,null))[_0x87dc('0x21')](handleError(_0x153f0c,null));};exports[_0x87dc('0x14c')]=function(_0x43f186,_0x327f2e){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x43f186['params']['id']}})['then'](handleEntityNotFound(_0x327f2e,null))['then'](function(_0x5ca2db){if(_0x5ca2db){return _0x5ca2db['addSmsAccounts'](_0x43f186[_0x87dc('0x60')][_0x87dc('0x64')],_[_0x87dc('0x63')](_0x43f186[_0x87dc('0x60')],[_0x87dc('0x64'),'id'])||{});}})[_0x87dc('0x16')](respondWithResult(_0x327f2e,null))[_0x87dc('0x21')](handleError(_0x327f2e,null));};exports[_0x87dc('0x14d')]=function(_0x2fbdb2,_0x260969){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x2fbdb2[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x260969,null))[_0x87dc('0x16')](function(_0x111c12){if(_0x111c12){return _0x111c12[_0x87dc('0x14d')](_0x2fbdb2[_0x87dc('0x43')][_0x87dc('0x64')]);}})['then'](respondWithStatusCode(_0x260969,null))[_0x87dc('0x21')](handleError(_0x260969,null));};exports[_0x87dc('0x14e')]=function(_0x1ba486,_0x51293d){var _0x1104a0={};var _0x488baf={};var _0x86b41f;var _0x1eae65;return db[_0x87dc('0x3d')][_0x87dc('0x9a')]({'where':{'id':_0x1ba486[_0x87dc('0x52')]['id']}})['then'](handleEntityNotFound(_0x51293d,null))[_0x87dc('0x16')](function(_0xedaecd){if(_0xedaecd){_0x86b41f=_0xedaecd;_0x488baf[_0x87dc('0x53')]=_[_0x87dc('0x56')](db[_0x87dc('0x14f')][_0x87dc('0x3e')]);_0x488baf['query']=_[_0x87dc('0x56')](_0x1ba486[_0x87dc('0x43')]);_0x488baf['filters']=_['intersection'](_0x488baf['model'],_0x488baf[_0x87dc('0x43')]);_0x1104a0[_0x87dc('0x48')]=_[_0x87dc('0x58')](_0x488baf[_0x87dc('0x53')],qs[_0x87dc('0x59')](_0x1ba486['query'][_0x87dc('0x59')]));_0x1104a0[_0x87dc('0x48')]=_0x1104a0[_0x87dc('0x48')][_0x87dc('0x5a')]?_0x1104a0[_0x87dc('0x48')]:_0x488baf[_0x87dc('0x53')];_0x1104a0['order']=qs[_0x87dc('0xcb')](_0x1ba486[_0x87dc('0x43')][_0x87dc('0xcb')]);_0x1104a0[_0x87dc('0x42')]=qs['filters'](_[_0x87dc('0xd6')](_0x1ba486[_0x87dc('0x43')],_0x488baf[_0x87dc('0x57')]));if(_0x1ba486['query'][_0x87dc('0xcc')]){_0x1104a0['where']=_['merge'](_0x1104a0['where'],{'$or':_[_0x87dc('0x34')](_0x1104a0[_0x87dc('0x48')],function(_0xaa0370){var _0x5de843={};_0x5de843[_0xaa0370]={'$like':'%'+_0x1ba486[_0x87dc('0x43')][_0x87dc('0xcc')]+'%'};return _0x5de843;})});}_0x1104a0=_[_0x87dc('0xcd')]({},_0x1104a0,_0x1ba486[_0x87dc('0x5c')]);return _0x86b41f[_0x87dc('0x14e')](_0x1104a0);}})[_0x87dc('0x16')](function(_0x306f9c){if(_0x306f9c){_0x1eae65=_0x306f9c[_0x87dc('0x5a')];if(!_0x1ba486[_0x87dc('0x43')][_0x87dc('0xce')](_0x87dc('0xd3'))){_0x1104a0[_0x87dc('0x26')]=qs[_0x87dc('0x26')](_0x1ba486[_0x87dc('0x43')][_0x87dc('0x26')]);_0x1104a0['offset']=qs['offset'](_0x1ba486['query'][_0x87dc('0x25')]);}return _0x86b41f[_0x87dc('0x14e')](_0x1104a0);}})[_0x87dc('0x16')](function(_0xa240d2){if(_0xa240d2){return _0xa240d2?{'count':_0x1eae65,'rows':_0xa240d2}:null;}})[_0x87dc('0x16')](respondWithResult(_0x51293d,null))[_0x87dc('0x21')](handleError(_0x51293d,null));};exports[_0x87dc('0x150')]=function(_0x127367,_0x24b52c){return db['User'][_0x87dc('0x37')]({'where':{'id':_0x127367[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x24b52c,null))[_0x87dc('0x16')](function(_0x447466){if(_0x447466){return _0x447466[_0x87dc('0x150')](_0x127367['body']['ids'],_[_0x87dc('0x63')](_0x127367[_0x87dc('0x60')],[_0x87dc('0x64'),'id'])||{});}})['then'](respondWithResult(_0x24b52c,null))[_0x87dc('0x21')](handleError(_0x24b52c,null));};exports['removeChatWebsites']=function(_0x48db08,_0x658cd0){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x48db08[_0x87dc('0x52')]['id']}})['then'](handleEntityNotFound(_0x658cd0,null))[_0x87dc('0x16')](function(_0x552b1a){if(_0x552b1a){return _0x552b1a[_0x87dc('0x151')](_0x48db08['query']['ids']);}})[_0x87dc('0x16')](respondWithStatusCode(_0x658cd0,null))[_0x87dc('0x21')](handleError(_0x658cd0,null));};exports[_0x87dc('0x152')]=function(_0x570e68,_0x4ea070){var _0x141cc9={};var _0xb7c555={};var _0x1e3929;var _0x2a5081;return db['User']['findOne']({'where':{'id':_0x570e68['params']['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x4ea070,null))[_0x87dc('0x16')](function(_0x7ec363){if(_0x7ec363){_0x1e3929=_0x7ec363;_0xb7c555[_0x87dc('0x53')]=_['keys'](db[_0x87dc('0x153')][_0x87dc('0x3e')]);_0xb7c555[_0x87dc('0x43')]=_[_0x87dc('0x56')](_0x570e68['query']);_0xb7c555[_0x87dc('0x57')]=_['intersection'](_0xb7c555[_0x87dc('0x53')],_0xb7c555[_0x87dc('0x43')]);_0x141cc9[_0x87dc('0x48')]=_[_0x87dc('0x58')](_0xb7c555[_0x87dc('0x53')],qs[_0x87dc('0x59')](_0x570e68[_0x87dc('0x43')]['fields']));_0x141cc9[_0x87dc('0x48')]=_0x141cc9[_0x87dc('0x48')]['length']?_0x141cc9[_0x87dc('0x48')]:_0xb7c555[_0x87dc('0x53')];_0x141cc9['order']=qs[_0x87dc('0xcb')](_0x570e68[_0x87dc('0x43')][_0x87dc('0xcb')]);_0x141cc9[_0x87dc('0x42')]=qs[_0x87dc('0x57')](_[_0x87dc('0xd6')](_0x570e68[_0x87dc('0x43')],_0xb7c555[_0x87dc('0x57')]));if(_0x570e68[_0x87dc('0x43')][_0x87dc('0xcc')]){_0x141cc9['where']=_[_0x87dc('0xcd')](_0x141cc9[_0x87dc('0x42')],{'$or':_[_0x87dc('0x34')](_0x141cc9[_0x87dc('0x48')],function(_0x3eb86e){var _0x4c9218={};_0x4c9218[_0x3eb86e]={'$like':'%'+_0x570e68[_0x87dc('0x43')]['filter']+'%'};return _0x4c9218;})});}_0x141cc9=_['merge']({},_0x141cc9,_0x570e68['options']);return _0x1e3929['getWhatsappAccounts'](_0x141cc9);}})['then'](function(_0x2f8328){if(_0x2f8328){_0x2a5081=_0x2f8328['length'];if(!_0x570e68['query'][_0x87dc('0xce')](_0x87dc('0xd3'))){_0x141cc9[_0x87dc('0x26')]=qs[_0x87dc('0x26')](_0x570e68[_0x87dc('0x43')]['limit']);_0x141cc9['offset']=qs[_0x87dc('0x25')](_0x570e68['query']['offset']);}return _0x1e3929[_0x87dc('0x152')](_0x141cc9);}})['then'](function(_0x5c5848){if(_0x5c5848){return _0x5c5848?{'count':_0x2a5081,'rows':_0x5c5848}:null;}})[_0x87dc('0x16')](respondWithResult(_0x4ea070,null))[_0x87dc('0x21')](handleError(_0x4ea070,null));};exports[_0x87dc('0x154')]=function(_0x45dc5d,_0x113f17){return db['User']['find']({'where':{'id':_0x45dc5d[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x113f17,null))['then'](function(_0x1e0d14){if(_0x1e0d14){return _0x1e0d14[_0x87dc('0x154')](_0x45dc5d[_0x87dc('0x60')][_0x87dc('0x64')],_['omit'](_0x45dc5d[_0x87dc('0x60')],[_0x87dc('0x64'),'id'])||{});}})['then'](respondWithResult(_0x113f17,null))[_0x87dc('0x21')](handleError(_0x113f17,null));};exports[_0x87dc('0x155')]=function(_0x39d096,_0x38b81d){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x39d096[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x38b81d,null))['then'](function(_0x1fdfdc){if(_0x1fdfdc){return _0x1fdfdc['removeWhatsappAccounts'](_0x39d096['query']['ids']);}})[_0x87dc('0x16')](respondWithStatusCode(_0x38b81d,null))[_0x87dc('0x21')](handleError(_0x38b81d,null));};exports[_0x87dc('0x156')]=function(_0x467c62,_0x10675f){var _0x5a9786={};var _0x522261={};var _0x504038;var _0x20f88e;return db[_0x87dc('0x3d')][_0x87dc('0x9a')]({'where':{'id':_0x467c62['params']['id']}})['then'](handleEntityNotFound(_0x10675f,null))[_0x87dc('0x16')](function(_0x111f49){if(_0x111f49){_0x504038=_0x111f49;_0x522261[_0x87dc('0x53')]=_[_0x87dc('0x56')](db[_0x87dc('0x157')][_0x87dc('0x3e')]);_0x522261[_0x87dc('0x43')]=_[_0x87dc('0x56')](_0x467c62[_0x87dc('0x43')]);_0x522261[_0x87dc('0x57')]=_[_0x87dc('0x58')](_0x522261[_0x87dc('0x53')],_0x522261['query']);_0x5a9786[_0x87dc('0x48')]=_[_0x87dc('0x58')](_0x522261[_0x87dc('0x53')],qs[_0x87dc('0x59')](_0x467c62[_0x87dc('0x43')][_0x87dc('0x59')]));_0x5a9786[_0x87dc('0x48')]=_0x5a9786[_0x87dc('0x48')][_0x87dc('0x5a')]?_0x5a9786[_0x87dc('0x48')]:_0x522261['model'];_0x5a9786[_0x87dc('0xca')]=qs[_0x87dc('0xcb')](_0x467c62[_0x87dc('0x43')][_0x87dc('0xcb')]);_0x5a9786[_0x87dc('0x42')]=qs[_0x87dc('0x57')](_['pick'](_0x467c62['query'],_0x522261[_0x87dc('0x57')]));if(_0x467c62[_0x87dc('0x43')][_0x87dc('0xcc')]){_0x5a9786[_0x87dc('0x42')]=_[_0x87dc('0xcd')](_0x5a9786[_0x87dc('0x42')],{'$or':_[_0x87dc('0x34')](_0x5a9786[_0x87dc('0x48')],function(_0x2074b5){var _0x64630e={};_0x64630e[_0x2074b5]={'$like':'%'+_0x467c62[_0x87dc('0x43')][_0x87dc('0xcc')]+'%'};return _0x64630e;})});}_0x5a9786=_[_0x87dc('0xcd')]({},_0x5a9786,_0x467c62[_0x87dc('0x5c')]);return _0x504038[_0x87dc('0x156')](_0x5a9786);}})[_0x87dc('0x16')](function(_0x31d4ed){if(_0x31d4ed){_0x20f88e=_0x31d4ed['length'];if(!_0x467c62[_0x87dc('0x43')][_0x87dc('0xce')](_0x87dc('0xd3'))){_0x5a9786[_0x87dc('0x26')]=qs['limit'](_0x467c62[_0x87dc('0x43')][_0x87dc('0x26')]);_0x5a9786[_0x87dc('0x25')]=qs[_0x87dc('0x25')](_0x467c62['query']['offset']);}return _0x504038[_0x87dc('0x156')](_0x5a9786);}})['then'](function(_0x4624c7){if(_0x4624c7){return _0x4624c7?{'count':_0x20f88e,'rows':_0x4624c7}:null;}})[_0x87dc('0x16')](respondWithResult(_0x10675f,null))[_0x87dc('0x21')](handleError(_0x10675f,null));};exports[_0x87dc('0x158')]=function(_0x1d1402,_0x490408){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x1d1402[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x490408,null))['then'](function(_0x4f3f2b){if(_0x4f3f2b){return _0x4f3f2b['addSquareProjects'](_0x1d1402['body'][_0x87dc('0x64')],_[_0x87dc('0x63')](_0x1d1402['body'],[_0x87dc('0x64'),'id'])||{});}})['then'](respondWithResult(_0x490408,null))[_0x87dc('0x21')](handleError(_0x490408,null));};exports['removeSquareProjects']=function(_0xf4f278,_0x23100b){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0xf4f278[_0x87dc('0x52')]['id']}})['then'](handleEntityNotFound(_0x23100b,null))[_0x87dc('0x16')](function(_0x54055f){if(_0x54055f){return _0x54055f[_0x87dc('0x159')](_0xf4f278['query']['ids']);}})['then'](respondWithStatusCode(_0x23100b,null))[_0x87dc('0x21')](handleError(_0x23100b,null));};exports['getScheduledCalls']=function(_0x8e851a,_0x4df2f1){var _0x4b9563={},_0x295f0d={},_0x4a703f={'count':0x0,'rows':[]};var _0x4e3aac=db[_0x87dc('0x15a')][_0x87dc('0x3e')];_0x295f0d[_0x87dc('0x53')]=_[_0x87dc('0x56')](_0x4e3aac);_0x295f0d['query']=_['keys'](_0x8e851a[_0x87dc('0x43')]);_0x295f0d['filters']=_['intersection'](_0x295f0d['model'],_0x295f0d[_0x87dc('0x43')]);_0x295f0d[_0x87dc('0x57')]=_[_0x87dc('0xc7')](_0x295f0d['filters'],[_0x87dc('0x15b'),_0x87dc('0x15c'),_0x87dc('0x15d'),_0x87dc('0x15e'),'$lt',_0x87dc('0x15f'),'$ne',_0x87dc('0x160'),'$not','$between',_0x87dc('0x161'),_0x87dc('0x162'),_0x87dc('0x163'),'$like',_0x87dc('0x164'),_0x87dc('0x165'),'$notILike',_0x87dc('0x166'),_0x87dc('0x167'),'$contains',_0x87dc('0x168'),_0x87dc('0x169')]);_0x4b9563['attributes']=_[_0x87dc('0x58')](_0x295f0d[_0x87dc('0x53')],qs[_0x87dc('0x59')](_0x8e851a['query'][_0x87dc('0x59')]));_0x4b9563['attributes']=_0x4b9563[_0x87dc('0x48')][_0x87dc('0x5a')]?_0x4b9563['attributes']:_0x295f0d[_0x87dc('0x53')];if(!_0x8e851a[_0x87dc('0x43')][_0x87dc('0xce')]('nolimit')){_0x4b9563[_0x87dc('0x26')]=qs[_0x87dc('0x26')](_0x8e851a[_0x87dc('0x43')][_0x87dc('0x26')]);_0x4b9563[_0x87dc('0x25')]=qs[_0x87dc('0x25')](_0x8e851a['query'][_0x87dc('0x25')]);}_0x4b9563[_0x87dc('0xca')]=qs['sort'](_0x8e851a['query'][_0x87dc('0xcb')]);_0x4b9563[_0x87dc('0x42')]=qs[_0x87dc('0x57')](_[_0x87dc('0xd6')](_0x8e851a[_0x87dc('0x43')],_0x295f0d['filters']));if(_0x8e851a[_0x87dc('0x43')][_0x87dc('0xcc')]){_0x4b9563[_0x87dc('0x42')]=_[_0x87dc('0xcd')](_0x4b9563[_0x87dc('0x42')],{'$or':_['map'](_0x4b9563[_0x87dc('0x48')],function(_0x2e5fe5){var _0x252e78={};_0x252e78[_0x2e5fe5]={'$like':'%'+_0x8e851a[_0x87dc('0x43')][_0x87dc('0xcc')]+'%'};return _0x252e78;})});}_0x4b9563[_0x87dc('0x42')]={'$and':[_0x4b9563[_0x87dc('0x42')],{'$or':[{'UserId':_0x8e851a[_0x87dc('0x52')]['id']},{'OwnerId':_0x8e851a['params']['id']}]}]};_0x4b9563=_[_0x87dc('0xcd')]({},_0x4b9563,_0x8e851a[_0x87dc('0x5c')]);var _0x52d55e={'where':_0x4b9563[_0x87dc('0x42')]};return db[_0x87dc('0x15a')][_0x87dc('0x28')](_0x52d55e)['then'](function(_0x39f85a){_0x4a703f[_0x87dc('0x28')]=_0x39f85a;if(_0x8e851a[_0x87dc('0x43')]['includeAll']){_0x4b9563[_0x87dc('0x45')]=[{'attributes':['id','firstName',_0x87dc('0x16a'),_0x87dc('0xeb')],'model':db[_0x87dc('0xc9')],'as':_0x87dc('0x16b')},{'attributes':['id',_0x87dc('0x38'),_0x87dc('0x16c')],'model':db[_0x87dc('0xad')],'as':_0x87dc('0xd5')}];}return db['CmHopper'][_0x87dc('0x8c')](_0x4b9563);})[_0x87dc('0x16')](function(_0x333ec9){_0x4a703f[_0x87dc('0x49')]=_0x333ec9;return _0x4a703f;})[_0x87dc('0x16')](respondWithFilteredResult(_0x4df2f1,_0x4b9563))[_0x87dc('0x21')](handleError(_0x4df2f1,null));};exports[_0x87dc('0x16d')]=function(_0x23cc5e,_0x11e38b){if(!_[_0x87dc('0x6a')](_0x23cc5e['user']['id'])&&(_0x23cc5e[_0x87dc('0x2f')]['role']=='admin'||_0x23cc5e[_0x87dc('0x2f')][_0x87dc('0x2e')]==_0x87dc('0x2f'))){return db[_0x87dc('0x3d')]['findOne']({'where':{'id':_0x23cc5e[_0x87dc('0x52')]['id']},'raw':!![]})['then'](function(_0x4c35e0){return authService[_0x87dc('0x16e')](_0x4c35e0);})[_0x87dc('0x16')](function(_0x120f0e){if(_0x120f0e){return _0x11e38b['status'](0xc8)['json']({'api_key':_0x120f0e[_0x87dc('0x16f')]});}else{return _0x11e38b[_0x87dc('0x29')](0xcc)[_0x87dc('0x24')]({'message':_0x87dc('0x170')});}})[_0x87dc('0x21')](handleError(_0x11e38b,0x193));}else{return _0x11e38b[_0x87dc('0x29')](0x191)[_0x87dc('0x24')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0x87dc('0x171')]=function(_0x252445,_0x30055c){if(!_[_0x87dc('0x6a')](_0x252445[_0x87dc('0x2f')]['id'])&&(_0x252445['user'][_0x87dc('0x2e')]==_0x87dc('0x81')||_0x252445['user']['role']==_0x87dc('0x2f'))){return db[_0x87dc('0x3d')]['find']({'where':{'id':_0x252445[_0x87dc('0x52')]['id']}})[_0x87dc('0x16')](function(_0x55feb0){return authService[_0x87dc('0x172')](_0x55feb0);})[_0x87dc('0x16')](function(_0x4db1a1){return db['User'][_0x87dc('0x2b')]({'apiKeyIat':_0x4db1a1['iat'],'apiKeyNonce':_0x4db1a1[_0x87dc('0x173')]},{'where':{'id':_0x252445['params']['id']}})[_0x87dc('0x16')](function(){return _0x30055c[_0x87dc('0x29')](0xc8)['json']({'api_key':_0x4db1a1[_0x87dc('0x16f')]});});})['catch'](handleError(_0x30055c,0x193));}else{return _0x30055c[_0x87dc('0x29')](0x191)['json']({'message':_0x87dc('0x174')});}};exports[_0x87dc('0x175')]=function(_0x173625,_0x3e6af4){if(!_[_0x87dc('0x6a')](_0x173625['user']['id'])&&(_0x173625[_0x87dc('0x2f')][_0x87dc('0x2e')]==_0x87dc('0x81')||_0x173625['user'][_0x87dc('0x2e')]=='user')){return db[_0x87dc('0x3d')][_0x87dc('0x37')]({'where':{'id':_0x173625['params']['id']}})[_0x87dc('0x16')](handleEntityNotFound(_0x3e6af4,null))['then'](function(_0x536958){if(_0x536958&&_0x536958['apiKeyNonce']&&_0x536958['apiKeyIat'])return _0x536958;else throw{'message':_0x87dc('0x176')};})[_0x87dc('0x16')](function(){return db[_0x87dc('0x3d')][_0x87dc('0x2b')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x173625[_0x87dc('0x52')]['id']}});})['then'](respondWithStatusCode(_0x3e6af4,0xc8))[_0x87dc('0x21')](handleError(_0x3e6af4,0x193));}else{return _0x3e6af4[_0x87dc('0x29')](0x191)['json']({'message':_0x87dc('0x174')});}};exports[_0x87dc('0x177')]=function(_0x4ca41a,_0x6ee0cc){var _0x58c2bc=_0x4ca41a[_0x87dc('0x2f')][_0x87dc('0x2d')]({'plain':!![]});if(!_0x58c2bc){return _0x6ee0cc['status'](0x191)[_0x87dc('0x3b')]('Unable\x20to\x20retrieve\x20the\x20current\x20user');}else{Promise[_0x87dc('0xff')]()[_0x87dc('0x16')](function(){if(_0x4ca41a[_0x87dc('0x43')][_0x87dc('0x47')]!==_0x87dc('0x46'))return;return _0x4ca41a['user'][_0x87dc('0x178')]();})[_0x87dc('0x16')](function(_0x311957){if(!_0x311957)return;return _0x311957[_0x87dc('0x2d')]({'plain':!![]});})[_0x87dc('0x16')](function(_0x1ea8f3){_0x58c2bc[_0x87dc('0x47')]=_0x1ea8f3;return _0x6ee0cc[_0x87dc('0x29')](0xc8)[_0x87dc('0x24')](_0x58c2bc);});}};exports[_0x87dc('0x179')]=function(_0x327f5f,_0x2c92ce){var _0x3a50e8={'offset':0x0},_0x44f409={'count':0x0,'rows':[]};Promise[_0x87dc('0xff')]()[_0x87dc('0x16')](function(){if(!_0x327f5f[_0x87dc('0x43')][_0x87dc('0xcc')]&&!_0x327f5f[_0x87dc('0x43')]['teams']&&!_0x327f5f[_0x87dc('0x43')][_0x87dc('0x17a')])return[];return Promise[_0x87dc('0xff')]()[_0x87dc('0x16')](function(){var _0x411971=[];if(!_[_0x87dc('0x8d')](_0x327f5f[_0x87dc('0x43')][_0x87dc('0x17b')])){_0x411971[_0x87dc('0x4b')](db[_0x87dc('0x112')]['findAll']({'attributes':['id',_0x87dc('0x38')],'where':{'id':_0x327f5f[_0x87dc('0x43')]['teams']}}));}if(!_[_0x87dc('0x8d')](_0x327f5f['query'][_0x87dc('0x17a')])){_0x411971['push'](db[_0x87dc('0xad')][_0x87dc('0x8c')]({'attributes':['id',_0x87dc('0x38')],'type':_0x87dc('0x17c'),'where':{'id':_0x327f5f[_0x87dc('0x43')][_0x87dc('0x17a')]}}));}return Promise[_0x87dc('0x5f')](_0x411971);})['then'](function(_0x22dd85){var _0x24b461=_[_0x87dc('0x17d')](_0x22dd85)[_0x87dc('0x34')](function(_0x147812){return _0x147812[_0x87dc('0x123')]({'attributes':['id',_0x87dc('0x38'),_0x87dc('0x65'),_0x87dc('0xa0')],'raw':!![]});});return Promise[_0x87dc('0x5f')](_0x24b461);})[_0x87dc('0x16')](function(_0x539b47){var _0x4fc62c=_['flatten'](_0x539b47);if(!_0x327f5f[_0x87dc('0x43')][_0x87dc('0xcc')])return _0x4fc62c;if(_['isEmpty'](_0x4fc62c)){return db[_0x87dc('0x3d')]['findAll']({'attributes':['id','name',_0x87dc('0x65'),_0x87dc('0xa0')],'where':{'role':'agent','$or':[db[_0x87dc('0x6d')][_0x87dc('0x42')](db[_0x87dc('0x6d')]['fn']('lower',db[_0x87dc('0x6d')][_0x87dc('0x17e')](_0x87dc('0x38'))),{'$like':'%'+_0x327f5f[_0x87dc('0x43')]['filter'][_0x87dc('0xa9')]()+'%'}),{'internal':{'$like':'%'+_0x327f5f[_0x87dc('0x43')][_0x87dc('0xcc')]+'%'}}]},'raw':!![]});}else{return _(_0x4fc62c)[_0x87dc('0x17d')]()[_0x87dc('0xcc')](function(_0x5e8487){return _0x5e8487[_0x87dc('0x38')][_0x87dc('0xa9')]()[_0x87dc('0x36')](_0x327f5f[_0x87dc('0x43')][_0x87dc('0xcc')]['toLowerCase']())||_0x5e8487[_0x87dc('0x65')][_0x87dc('0x17f')]()[_0x87dc('0x36')](_0x327f5f['query'][_0x87dc('0xcc')]);})['value']();}})['then'](function(_0x1da3d8){var _0x31112f='name';var _0x26688f='asc';if(_0x327f5f[_0x87dc('0x43')][_0x87dc('0xcb')]){_0x26688f=_0x327f5f[_0x87dc('0x43')][_0x87dc('0xcb')][0x0]==='-'?_0x87dc('0x180'):'asc';_0x31112f=_0x26688f==='asc'?_0x327f5f[_0x87dc('0x43')]['sort']:_0x327f5f[_0x87dc('0x43')][_0x87dc('0xcb')][_0x87dc('0x181')](0x1);}return _(_0x1da3d8)['uniqBy']('id')['orderBy']([function(_0x34e9b3){return _0x31112f===_0x87dc('0x38')?_0x34e9b3[_0x31112f][_0x87dc('0xa9')]():_0x34e9b3[_0x31112f];}],[_0x26688f])[_0x87dc('0x34')](function(_0x2565d2){return _[_0x87dc('0xd6')](_0x2565d2,['id',_0x87dc('0x38'),_0x87dc('0x65'),_0x87dc('0xa0')]);})[_0x87dc('0x35')]();})[_0x87dc('0x16')](function(_0x5410bc){return client[_0x87dc('0x15')](_0x87dc('0x30'),_0x327f5f)[_0x87dc('0x16')](function(_0x3022f8){if(_0x3022f8[_0x87dc('0x1c')])throw new Error(_0x87dc('0x182'));var _0x181e56=_0x3022f8[_0x87dc('0x20')];var _0x2f6592=jayson['client'][_0x87dc('0x14')]({'port':0x232c});return _0x2f6592[_0x87dc('0x15')](_0x87dc('0x30'),_0x327f5f)['then'](function(_0xe2f41){if(_0xe2f41['error'])throw new Error(_0x87dc('0x183'));var _0x1a7108=_0xe2f41[_0x87dc('0x20')];return _['merge']({},_0x1a7108,_0x181e56);});})[_0x87dc('0x16')](function(_0x2d3144){return _['map'](_0x5410bc,function(_0x2a376d){var _0x5876ce=_[_0x87dc('0x37')](_0x2d3144['rows'],['id',_0x2a376d['id']]);if(!_0x5876ce||!_0x2a376d[_0x87dc('0xa0')]){_0x2a376d['status']=_0x87dc('0x184');}else if(_0x5876ce[_0x87dc('0xa2')]){_0x2a376d['status']=_0x87dc('0x100');}else{_0x2a376d[_0x87dc('0x29')]=_['includes']([_0x87dc('0x185'),_0x87dc('0x186'),_0x87dc('0x187'),_0x87dc('0x188'),null,undefined],_0x5876ce[_0x87dc('0x189')])?_0x87dc('0xa0'):_0x87dc('0x18a');}return _0x2a376d;});});});})[_0x87dc('0x16')](function(_0xdd31f5){if(!_0x327f5f[_0x87dc('0x43')][_0x87dc('0xce')](_0x87dc('0xd3'))){_0x3a50e8[_0x87dc('0x26')]=qs[_0x87dc('0x26')](_0x327f5f[_0x87dc('0x43')][_0x87dc('0x26')]||0xa);_0x3a50e8[_0x87dc('0x25')]=qs[_0x87dc('0x25')](_0x327f5f[_0x87dc('0x43')]['offset']);}_0x44f409[_0x87dc('0x28')]=_0xdd31f5[_0x87dc('0x5a')];_0x44f409[_0x87dc('0x49')]=_0x3a50e8['limit']?_0xdd31f5[_0x87dc('0x18b')](_0x3a50e8[_0x87dc('0x25')],_0x3a50e8[_0x87dc('0x25')]+_0x3a50e8[_0x87dc('0x26')]):_0xdd31f5;return _0x44f409;})['then'](respondWithFilteredResult(_0x2c92ce,_0x3a50e8))[_0x87dc('0x21')](handleError(_0x2c92ce,null));};function get_open_tabs(_0x32cdac,_0xedc1da){var _0x36fdaf=_0x32cdac[_0x87dc('0x18c')](0x0)['toUpperCase']()+_0x32cdac[_0x87dc('0x18b')](0x1);var _0x379ba7={'type':db[_0x87dc('0x93')][_0x87dc('0x18d')][_0x87dc('0x6e')],'raw':!![]};return new BPromise(function(_0x64fa4e,_0x515ce9){var _0x1d1913=squel['select']()['field'](_0x87dc('0x18e')+_0x36fdaf+_0x87dc('0x18f'),'id')[_0x87dc('0x190')](_0x87dc('0x191'))[_0x87dc('0x6f')](_0x87dc('0x192')+_0x32cdac+'_interactions','ui')[_0x87dc('0x42')](_0x87dc('0x193'),_0xedc1da['id']);return db['sequelize'][_0x87dc('0x43')](_0x1d1913['toString'](),_0x379ba7)[_0x87dc('0x16')](function(_0xac6e43){_0xedc1da[_0x36fdaf+_0x87dc('0x194')]=_0xac6e43;_0x64fa4e(_0xac6e43);})[_0x87dc('0x21')](function(_0x32208a){_0x515ce9(_0x32208a);});});}
\ No newline at end of file
index 89aede7..53cdee3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a3b=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','User'];(function(_0x968f4f,_0xeba365){var _0x525be6=function(_0x16e584){while(--_0x16e584){_0x968f4f['push'](_0x968f4f['shift']());}};_0x525be6(++_0xeba365);}(_0x7a3b,0x1d3));var _0xb7a3=function(_0x589f5c,_0x39f94d){_0x589f5c=_0x589f5c-0x0;var _0x1d6291=_0x7a3b[_0x589f5c];return _0x1d6291;};'use strict';var EventEmitter=require(_0xb7a3('0x0'));var User=require(_0xb7a3('0x1'))['db'][_0xb7a3('0x2')];var UserEvents=new EventEmitter();UserEvents[_0xb7a3('0x3')](0x0);var events={'afterCreate':_0xb7a3('0x4'),'afterUpdate':_0xb7a3('0x5'),'afterDestroy':_0xb7a3('0x6')};function emitEvent(_0x2d5d08){return function(_0x44e4e4,_0x448d14,_0xd5fd62){UserEvents[_0xb7a3('0x7')](_0x2d5d08+':'+_0x44e4e4['id'],_0x44e4e4);UserEvents['emit'](_0x2d5d08,_0x44e4e4);_0xd5fd62(null);};}for(var e in events){if(events[_0xb7a3('0x8')](e)){var event=events[e];User[_0xb7a3('0x9')](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
+var _0x3aee=['hook','events','update','remove','emit','hasOwnProperty'];(function(_0x4350c2,_0x112f3c){var _0x8b6406=function(_0x49e845){while(--_0x49e845){_0x4350c2['push'](_0x4350c2['shift']());}};_0x8b6406(++_0x112f3c);}(_0x3aee,0x79));var _0xe3ae=function(_0x31abee,_0x11ff0c){_0x31abee=_0x31abee-0x0;var _0x3c1761=_0x3aee[_0x31abee];return _0x3c1761;};'use strict';var EventEmitter=require(_0xe3ae('0x0'));var User=require('../../mysqldb')['db']['User'];var UserEvents=new EventEmitter();UserEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xe3ae('0x1'),'afterDestroy':_0xe3ae('0x2')};function emitEvent(_0x3936e9){return function(_0x1bdf93,_0x12a6c8,_0x5b1e29){UserEvents['emit'](_0x3936e9+':'+_0x1bdf93['id'],_0x1bdf93);UserEvents[_0xe3ae('0x3')](_0x3936e9,_0x1bdf93);_0x5b1e29(null);};}for(var e in events){if(events[_0xe3ae('0x4')](e)){var event=events[e];User[_0xe3ae('0x5')](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
index 0b4d1c9..b759cf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1873=['SIP/%s,,tTxX','priority','VoiceChanSpy','findAll','internal','concat','models','User','users','utf8','userProfileId','undefined','resolve','privacyEnabled','then','catch','UserProfile','find','updatePassword','userSetting','error','VoiceExtension','chanspy','bulkCreate','changed','destroy','system','password','encryptPassword','function','Missing\x20Callback','randomBytes','salt','base64','pbkdf2Sync','sha1','toString','provider','makeSalt','md5secret',':asterisk:','bluebird','md5','lodash','./user.attributes','length','context','from-sip','format','%s%s','push','Set','CDR(type)=%s','record','merge','MixMonitor','recordingFormat','auth','Authenticate','ChanSpy','options','join','StopMixMonitor','wav','WAV','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','name'];(function(_0x4ecc35,_0xb59ad4){var _0x2f1372=function(_0x2ed4d4){while(--_0x2ed4d4){_0x4ecc35['push'](_0x4ecc35['shift']());}};_0x2f1372(++_0xb59ad4);}(_0x1873,0x1d9));var _0x3187=function(_0x173fa3,_0x5a632b){_0x173fa3=_0x173fa3-0x0;var _0x6dbc0c=_0x1873[_0x173fa3];return _0x6dbc0c;};'use strict';var BPromise=require(_0x3187('0x0'));var crypto=require('crypto');var util=require('util');var md5=require(_0x3187('0x1'));var _=require(_0x3187('0x2'));var attributes=require(_0x3187('0x3'));var authTypes=['google'];var validatePresenceOf=function(_0x1d23a9){return _0x1d23a9&&_0x1d23a9[_0x3187('0x4')];};var getChanSpyApplications=function(_0x416b60,_0x332896,_0x59d4aa){var _0x2ef661={'context':_0x416b60[_0x3187('0x5')]||_0x3187('0x6'),'type':'system','isApp':![],'UserId':_0x416b60['id']};var _0x4b43ec=[];for(var _0x362317=0x0,_0x4566bf=0x1;_0x362317<_0x59d4aa[_0x3187('0x4')];_0x362317++,_0x4566bf=0x1){var _0x1393f7={'exten':util[_0x3187('0x7')](_0x3187('0x8'),_0x59d4aa[_0x362317]['prefix'],_0x332896),'ChanSpyId':_0x59d4aa[_0x362317]['id']};_0x4b43ec[_0x3187('0x9')](_['merge']({'app':_0x3187('0xa'),'appdata':util['format'](_0x3187('0xb'),'chanspy'),'priority':_0x4566bf++},_0x2ef661,_0x1393f7));if(_0x59d4aa[_0x362317][_0x3187('0xc')]){_0x4b43ec[_0x3187('0x9')](_[_0x3187('0xd')]({'app':_0x3187('0xe'),'appdata':util[_0x3187('0x7')]('${UNIQUEID}.%s,a',_0x59d4aa[_0x362317][_0x3187('0xf')]),'priority':_0x4566bf++},_0x2ef661,_0x1393f7));}if(_0x59d4aa[_0x362317][_0x3187('0x10')]){_0x4b43ec['push'](_[_0x3187('0xd')]({'app':_0x3187('0x11'),'appdata':_0x59d4aa[_0x362317]['password'],'priority':_0x4566bf++},_0x2ef661,_0x1393f7));}_0x4b43ec[_0x3187('0x9')](_[_0x3187('0xd')]({'app':_0x3187('0x12'),'appdata':util[_0x3187('0x7')]('SIP/%s,%s',_0x416b60['name'],_0x59d4aa[_0x362317][_0x3187('0x13')]?_0x59d4aa[_0x362317][_0x3187('0x13')][_0x3187('0x14')](''):''),'priority':_0x4566bf++},_0x2ef661,_0x1393f7));if(_0x59d4aa[_0x362317][_0x3187('0xc')]){_0x4b43ec[_0x3187('0x9')](_[_0x3187('0xd')]({'app':_0x3187('0x15'),'priority':_0x4566bf++},_0x2ef661,_0x1393f7));}}return _0x4b43ec;};var getUserApplications=function(_0x2aeb56,_0x35bbfa){var _0x49283c=[_0x3187('0x16'),_0x3187('0x17'),'gsm'];var _0xd85390={'context':_0x2aeb56[_0x3187('0x5')]||_0x3187('0x6'),'exten':_0x35bbfa,'type':'system','isApp':![],'UserId':_0x2aeb56['id']};var _0x3daa8e=[{'app':_0x3187('0xa'),'appdata':_0x3187('0x18')}];if(_0x2aeb56[_0x3187('0x19')]&&_[_0x3187('0x1a')](_0x49283c,_0x2aeb56[_0x3187('0x19')])){_0x3daa8e['push']({'app':_0x3187('0xa'),'appdata':_0x3187('0x1b')});_0x3daa8e['push']({'app':_0x3187('0xa'),'appdata':util[_0x3187('0x7')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x2aeb56[_0x3187('0x19')])});_0x3daa8e[_0x3187('0x9')]({'app':_0x3187('0x1c'),'appdata':util[_0x3187('0x7')](_0x3187('0x1d'),_0x2aeb56[_0x3187('0x1e')])});}else{_0x3daa8e['push']({'app':_0x3187('0x1c'),'appdata':util[_0x3187('0x7')](_0x3187('0x1f'),_0x2aeb56['name'])});}_0x3daa8e[_0x3187('0x9')]({'app':'Hangup'});for(var _0x482752=0x0;_0x482752<_0x3daa8e['length'];_0x482752++){_0x3daa8e[_0x482752][_0x3187('0x20')]=_0x482752+0x1;_0x3daa8e[_0x482752]=_['defaults'](_0x3daa8e[_0x482752],_0xd85390);}return _0x3daa8e;};var getChanSpyPromise=function(_0x3e707c,_0x443de1){return new BPromise(function(_0x238ca1,_0x42dc19){return _0x3e707c[_0x3187('0x21')][_0x3187('0x22')]()['then'](function(_0x4ac8c7){if(_0x4ac8c7){var _0x45a5f3=getChanSpyApplications(_0x443de1,_0x443de1[_0x3187('0x23')],_0x4ac8c7);if(_0x443de1[_0x3187('0x23')]!=_0x443de1['name']){_0x45a5f3=_0x45a5f3[_0x3187('0x24')](getChanSpyApplications(_0x443de1,_0x443de1[_0x3187('0x1e')],_0x4ac8c7));}return _0x238ca1(_0x45a5f3);}return _0x238ca1([]);})['catch'](function(_0x51e645){_0x42dc19(_0x51e645);});});};module['exports']=function(_0x2123c9){var _0x6b93c6=_0x2123c9[_0x3187('0x25')];return _0x2123c9['define'](_0x3187('0x26'),attributes,{'tableName':_0x3187('0x27'),'charset':_0x3187('0x28'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x44dca9,_0x8470cc,_0x341fac){var _0x34b25a=typeof _0x44dca9[_0x3187('0x29')]===_0x3187('0x2a')?BPromise[_0x3187('0x2b')](null):_0x6b93c6['UserProfile']['find']({'where':{'id':_0x44dca9[_0x3187('0x29')]}});_0x34b25a['then'](function(_0x246891){if(_0x246891){_0x44dca9[_0x3187('0x2c')]=_0x246891[_0x3187('0x2c')];}})[_0x3187('0x2d')](function(){_0x44dca9['updateMd5Password']();_0x44dca9['updatePassword'](_0x341fac);})[_0x3187('0x2e')](function(_0x225804){_0x341fac(_0x225804);});},'beforeUpdate':function(_0x49be44,_0x916b97,_0x278d24){Promise[_0x3187('0x2b')]()['then'](function(){if(_0x49be44['changed'](_0x3187('0x29'))===![])return;return _0x6b93c6[_0x3187('0x2f')][_0x3187('0x30')]({'where':{'id':_0x49be44[_0x3187('0x29')]}})[_0x3187('0x2d')](function(_0x4e59e5){if(_0x4e59e5)_0x49be44[_0x3187('0x2c')]=_0x4e59e5['privacyEnabled'];return;});})[_0x3187('0x2d')](function(){if(_0x49be44['changed']('password')){_0x49be44['updateMd5Password']();return _0x49be44[_0x3187('0x31')](_0x278d24);}_0x278d24();})[_0x3187('0x2e')](function(_0x3ced9d){_0x278d24(_0x3ced9d);});},'afterCreate':function(_0x846b03,_0x46148c,_0x237029){var _0x105aa6=getUserApplications(_0x846b03,_0x846b03[_0x3187('0x23')]);if(_0x846b03[_0x3187('0x23')]!=_0x846b03[_0x3187('0x1e')]){_0x105aa6=_0x105aa6['concat'](getUserApplications(_0x846b03,_0x846b03['name']));}return Promise['resolve']()[_0x3187('0x2d')](function(){if(!_0x846b03[_0x3187('0x32')]){return _0x846b03['createUserSetting']({'clientSideLoggingLevel':_0x3187('0x33'),'clientSideLoggingEnabled':![]});}})['then'](function(){return _0x6b93c6[_0x3187('0x34')]['bulkCreate'](_0x105aa6);})[_0x3187('0x2d')](function(){if(_0x846b03[_0x3187('0x35')]){return getChanSpyPromise(_0x6b93c6,_0x846b03);}})[_0x3187('0x2d')](function(_0x405a6f){if(_0x405a6f&&_0x405a6f[_0x3187('0x4')]){return _0x6b93c6[_0x3187('0x34')][_0x3187('0x36')](_0x405a6f);}})[_0x3187('0x2d')](function(){_0x237029();})[_0x3187('0x2e')](function(_0x58763e){_0x237029(_0x58763e);});},'afterUpdate':function(_0x52f7e5,_0xc9528d,_0x3b9fc9){return BPromise['resolve']()['then'](function(){if(_0x52f7e5[_0x3187('0x37')](_0x3187('0x35'))||_0x52f7e5[_0x3187('0x37')](_0x3187('0x5'))){return _0x6b93c6['VoiceExtension'][_0x3187('0x38')]({'where':{'UserId':_0x52f7e5['id'],'type':_0x3187('0x39'),'ChanSpyId':{'$ne':null}}})[_0x3187('0x2d')](function(){if(_0x52f7e5[_0x3187('0x35')]){return getChanSpyPromise(_0x6b93c6,_0x52f7e5)['then'](function(_0xdec849){if(_0xdec849&&_0xdec849['length']){return _0x6b93c6[_0x3187('0x34')][_0x3187('0x36')](_0xdec849);}});}});}})[_0x3187('0x2d')](function(){if(_0x52f7e5['changed'](_0x3187('0x19'))||_0x52f7e5[_0x3187('0x37')](_0x3187('0x5'))){return _0x6b93c6[_0x3187('0x34')][_0x3187('0x38')]({'where':{'UserId':_0x52f7e5['id'],'type':_0x3187('0x39'),'ChanSpyId':null}})[_0x3187('0x2d')](function(){var _0x542e20=getUserApplications(_0x52f7e5,_0x52f7e5[_0x3187('0x23')]);if(_0x52f7e5[_0x3187('0x23')]!=_0x52f7e5['name']){_0x542e20=_0x542e20[_0x3187('0x24')](getUserApplications(_0x52f7e5,_0x52f7e5[_0x3187('0x1e')]));}return _0x6b93c6['VoiceExtension']['bulkCreate'](_0x542e20);});}})[_0x3187('0x2d')](function(){_0x3b9fc9();})[_0x3187('0x2e')](function(_0x14bd99){_0x3b9fc9(_0x14bd99);});},'afterDestroy':function(_0x59de58){return _0x6b93c6['VoiceExtension']['destroy']({'where':{'UserId':_0x59de58['id'],'type':_0x3187('0x39')}});}},'instanceMethods':{'authenticate':function(_0x3e26a9,_0x391e0e){if(!_0x391e0e){return this[_0x3187('0x3a')]===this['encryptPassword'](_0x3e26a9);}var _0x410d5e=this;this[_0x3187('0x3b')](_0x3e26a9,function(_0x4dc034,_0x50c2b0){if(_0x4dc034){_0x391e0e(_0x4dc034);}if(_0x410d5e[_0x3187('0x3a')]===_0x50c2b0){_0x391e0e(null,!![]);}else{_0x391e0e(null,![]);}});},'makeSalt':function(_0x3463b0,_0x3bbc3c){var _0x2c7dcd=0x10;if(typeof arguments[0x0]===_0x3187('0x3c')){_0x3bbc3c=arguments[0x0];_0x3463b0=_0x2c7dcd;}else if(typeof arguments[0x1]===_0x3187('0x3c')){_0x3bbc3c=arguments[0x1];}else{throw new Error(_0x3187('0x3d'));}if(!_0x3463b0){_0x3463b0=_0x2c7dcd;}return crypto[_0x3187('0x3e')](_0x3463b0,function(_0xf08ee8,_0x5212eb){if(_0xf08ee8){_0x3bbc3c(_0xf08ee8);}return _0x3bbc3c(null,_0x5212eb['toString']('base64'));});},'encryptPassword':function(_0x3a435e,_0x20b1a5){if(!_0x3a435e||!this[_0x3187('0x3f')]){return _0x20b1a5?_0x20b1a5(null):null;}var _0x563c49=0x2710;var _0xba67c5=0x40;var _0x49d081=new Buffer(this[_0x3187('0x3f')],_0x3187('0x40'));if(!_0x20b1a5){return crypto[_0x3187('0x41')](_0x3a435e,_0x49d081,_0x563c49,_0xba67c5,_0x3187('0x42'))[_0x3187('0x43')](_0x3187('0x40'));}return crypto['pbkdf2'](_0x3a435e,_0x49d081,_0x563c49,_0xba67c5,_0x3187('0x42'),function(_0x46c710,_0x44daa1){if(_0x46c710){_0x20b1a5(_0x46c710);}return _0x20b1a5(null,_0x44daa1[_0x3187('0x43')](_0x3187('0x40')));});},'updatePassword':function(_0x17dee3){if(!this[_0x3187('0x3a')]){return _0x17dee3(null);}if(!validatePresenceOf(this['password'])&&authTypes['indexOf'](this[_0x3187('0x44')])===-0x1){_0x17dee3(new Error('Invalid\x20password'));}var _0x1df401=this;this[_0x3187('0x45')](function(_0x540a3b,_0x896a9a){if(_0x540a3b){return _0x17dee3(_0x540a3b);}_0x1df401[_0x3187('0x3f')]=_0x896a9a;_0x1df401[_0x3187('0x3b')](_0x1df401[_0x3187('0x3a')],function(_0x4daffa,_0x32b9b5){if(_0x4daffa){_0x17dee3(_0x4daffa);}_0x1df401['password']=_0x32b9b5;_0x17dee3(null);});});},'updateMd5Password':function(){this[_0x3187('0x46')]=md5(this['name']+_0x3187('0x47')+this['password']);return this[_0x3187('0x46')];}}});};
\ No newline at end of file
+var _0x223d=['Hangup','priority','defaults','findAll','then','internal','concat','catch','exports','define','User','users','utf8','utf8_bin','userProfileId','resolve','find','privacyEnabled','updateMd5Password','updatePassword','changed','UserProfile','userSetting','createUserSetting','VoiceExtension','chanspy','bulkCreate','destroy','context','encryptPassword','function','randomBytes','base64','salt','toString','pbkdf2','sha1','indexOf','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','bluebird','crypto','util','lodash','./user.attributes','google','length','from-sip','system','format','%s%s','prefix','push','Set','CDR(type)=%s','merge','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX'];(function(_0x26d7c5,_0x1533f8){var _0x74759d=function(_0x4672a8){while(--_0x4672a8){_0x26d7c5['push'](_0x26d7c5['shift']());}};_0x74759d(++_0x1533f8);}(_0x223d,0x10f));var _0xd223=function(_0x21f3c0,_0x2c6a6c){_0x21f3c0=_0x21f3c0-0x0;var _0x4da09c=_0x223d[_0x21f3c0];return _0x4da09c;};'use strict';var BPromise=require(_0xd223('0x0'));var crypto=require(_0xd223('0x1'));var util=require(_0xd223('0x2'));var md5=require('md5');var _=require(_0xd223('0x3'));var attributes=require(_0xd223('0x4'));var authTypes=[_0xd223('0x5')];var validatePresenceOf=function(_0xf11cf1){return _0xf11cf1&&_0xf11cf1[_0xd223('0x6')];};var getChanSpyApplications=function(_0x63dffc,_0x12d035,_0x56b395){var _0x2effb6={'context':_0x63dffc['context']||_0xd223('0x7'),'type':_0xd223('0x8'),'isApp':![],'UserId':_0x63dffc['id']};var _0x28ed7a=[];for(var _0x57d83c=0x0,_0x5a8114=0x1;_0x57d83c<_0x56b395['length'];_0x57d83c++,_0x5a8114=0x1){var _0x47e3fe={'exten':util[_0xd223('0x9')](_0xd223('0xa'),_0x56b395[_0x57d83c][_0xd223('0xb')],_0x12d035),'ChanSpyId':_0x56b395[_0x57d83c]['id']};_0x28ed7a[_0xd223('0xc')](_['merge']({'app':_0xd223('0xd'),'appdata':util[_0xd223('0x9')](_0xd223('0xe'),'chanspy'),'priority':_0x5a8114++},_0x2effb6,_0x47e3fe));if(_0x56b395[_0x57d83c]['record']){_0x28ed7a['push'](_[_0xd223('0xf')]({'app':_0xd223('0x10'),'appdata':util[_0xd223('0x9')](_0xd223('0x11'),_0x56b395[_0x57d83c][_0xd223('0x12')]),'priority':_0x5a8114++},_0x2effb6,_0x47e3fe));}if(_0x56b395[_0x57d83c]['auth']){_0x28ed7a[_0xd223('0xc')](_[_0xd223('0xf')]({'app':_0xd223('0x13'),'appdata':_0x56b395[_0x57d83c][_0xd223('0x14')],'priority':_0x5a8114++},_0x2effb6,_0x47e3fe));}_0x28ed7a[_0xd223('0xc')](_[_0xd223('0xf')]({'app':_0xd223('0x15'),'appdata':util[_0xd223('0x9')](_0xd223('0x16'),_0x63dffc[_0xd223('0x17')],_0x56b395[_0x57d83c][_0xd223('0x18')]?_0x56b395[_0x57d83c][_0xd223('0x18')]['join'](''):''),'priority':_0x5a8114++},_0x2effb6,_0x47e3fe));if(_0x56b395[_0x57d83c]['record']){_0x28ed7a[_0xd223('0xc')](_[_0xd223('0xf')]({'app':'StopMixMonitor','priority':_0x5a8114++},_0x2effb6,_0x47e3fe));}}return _0x28ed7a;};var getUserApplications=function(_0x49e0c3,_0x486c9c){var _0x4033dc=['wav','WAV',_0xd223('0x19')];var _0x4a5a39={'context':_0x49e0c3['context']||'from-sip','exten':_0x486c9c,'type':_0xd223('0x8'),'isApp':![],'UserId':_0x49e0c3['id']};var _0x22992b=[{'app':_0xd223('0xd'),'appdata':_0xd223('0x1a')}];if(_0x49e0c3[_0xd223('0x1b')]&&_[_0xd223('0x1c')](_0x4033dc,_0x49e0c3[_0xd223('0x1b')])){_0x22992b[_0xd223('0xc')]({'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x22992b[_0xd223('0xc')]({'app':_0xd223('0xd'),'appdata':util[_0xd223('0x9')](_0xd223('0x1d'),_0x49e0c3[_0xd223('0x1b')])});_0x22992b[_0xd223('0xc')]({'app':_0xd223('0x1e'),'appdata':util[_0xd223('0x9')](_0xd223('0x1f'),_0x49e0c3[_0xd223('0x17')])});}else{_0x22992b[_0xd223('0xc')]({'app':_0xd223('0x1e'),'appdata':util['format'](_0xd223('0x20'),_0x49e0c3['name'])});}_0x22992b[_0xd223('0xc')]({'app':_0xd223('0x21')});for(var _0x11d733=0x0;_0x11d733<_0x22992b[_0xd223('0x6')];_0x11d733++){_0x22992b[_0x11d733][_0xd223('0x22')]=_0x11d733+0x1;_0x22992b[_0x11d733]=_[_0xd223('0x23')](_0x22992b[_0x11d733],_0x4a5a39);}return _0x22992b;};var getChanSpyPromise=function(_0x121ca6,_0x45ba5c){return new BPromise(function(_0x2aca6b,_0x31b3c1){return _0x121ca6['VoiceChanSpy'][_0xd223('0x24')]()[_0xd223('0x25')](function(_0x24cece){if(_0x24cece){var _0x23cb2e=getChanSpyApplications(_0x45ba5c,_0x45ba5c[_0xd223('0x26')],_0x24cece);if(_0x45ba5c['internal']!=_0x45ba5c[_0xd223('0x17')]){_0x23cb2e=_0x23cb2e[_0xd223('0x27')](getChanSpyApplications(_0x45ba5c,_0x45ba5c[_0xd223('0x17')],_0x24cece));}return _0x2aca6b(_0x23cb2e);}return _0x2aca6b([]);})[_0xd223('0x28')](function(_0x78a6f7){_0x31b3c1(_0x78a6f7);});});};module[_0xd223('0x29')]=function(_0x13585a){var _0xe6cb16=_0x13585a['models'];return _0x13585a[_0xd223('0x2a')](_0xd223('0x2b'),attributes,{'tableName':_0xd223('0x2c'),'charset':_0xd223('0x2d'),'collate':_0xd223('0x2e'),'hooks':{'beforeCreate':function(_0x1f41cf,_0x1e8066,_0xa6d90d){var _0x1abb14=typeof _0x1f41cf[_0xd223('0x2f')]==='undefined'?BPromise[_0xd223('0x30')](null):_0xe6cb16['UserProfile'][_0xd223('0x31')]({'where':{'id':_0x1f41cf[_0xd223('0x2f')]}});_0x1abb14[_0xd223('0x25')](function(_0x2b8855){if(_0x2b8855){_0x1f41cf[_0xd223('0x32')]=_0x2b8855[_0xd223('0x32')];}})[_0xd223('0x25')](function(){_0x1f41cf[_0xd223('0x33')]();_0x1f41cf[_0xd223('0x34')](_0xa6d90d);})['catch'](function(_0x1b07bd){_0xa6d90d(_0x1b07bd);});},'beforeUpdate':function(_0x416052,_0x1be58b,_0x45ded7){Promise['resolve']()[_0xd223('0x25')](function(){if(_0x416052[_0xd223('0x35')]('userProfileId')===![])return;return _0xe6cb16[_0xd223('0x36')][_0xd223('0x31')]({'where':{'id':_0x416052[_0xd223('0x2f')]}})[_0xd223('0x25')](function(_0x550b4f){if(_0x550b4f)_0x416052[_0xd223('0x32')]=_0x550b4f[_0xd223('0x32')];return;});})[_0xd223('0x25')](function(){if(_0x416052[_0xd223('0x35')](_0xd223('0x14'))){_0x416052['updateMd5Password']();return _0x416052['updatePassword'](_0x45ded7);}_0x45ded7();})[_0xd223('0x28')](function(_0x458226){_0x45ded7(_0x458226);});},'afterCreate':function(_0x3f2a58,_0x56bd7d,_0x37985d){var _0x526e04=getUserApplications(_0x3f2a58,_0x3f2a58[_0xd223('0x26')]);if(_0x3f2a58[_0xd223('0x26')]!=_0x3f2a58[_0xd223('0x17')]){_0x526e04=_0x526e04[_0xd223('0x27')](getUserApplications(_0x3f2a58,_0x3f2a58[_0xd223('0x17')]));}return Promise[_0xd223('0x30')]()['then'](function(){if(!_0x3f2a58[_0xd223('0x37')]){return _0x3f2a58[_0xd223('0x38')]({'clientSideLoggingLevel':'error','clientSideLoggingEnabled':![]});}})[_0xd223('0x25')](function(){return _0xe6cb16[_0xd223('0x39')]['bulkCreate'](_0x526e04);})[_0xd223('0x25')](function(){if(_0x3f2a58[_0xd223('0x3a')]){return getChanSpyPromise(_0xe6cb16,_0x3f2a58);}})['then'](function(_0x51b5af){if(_0x51b5af&&_0x51b5af[_0xd223('0x6')]){return _0xe6cb16['VoiceExtension'][_0xd223('0x3b')](_0x51b5af);}})['then'](function(){_0x37985d();})[_0xd223('0x28')](function(_0x1af485){_0x37985d(_0x1af485);});},'afterUpdate':function(_0x1539b4,_0x3e88fe,_0x4b758c){return BPromise['resolve']()[_0xd223('0x25')](function(){if(_0x1539b4[_0xd223('0x35')](_0xd223('0x3a'))||_0x1539b4[_0xd223('0x35')]('context')){return _0xe6cb16[_0xd223('0x39')][_0xd223('0x3c')]({'where':{'UserId':_0x1539b4['id'],'type':_0xd223('0x8'),'ChanSpyId':{'$ne':null}}})[_0xd223('0x25')](function(){if(_0x1539b4['chanspy']){return getChanSpyPromise(_0xe6cb16,_0x1539b4)[_0xd223('0x25')](function(_0x48a49a){if(_0x48a49a&&_0x48a49a[_0xd223('0x6')]){return _0xe6cb16[_0xd223('0x39')][_0xd223('0x3b')](_0x48a49a);}});}});}})[_0xd223('0x25')](function(){if(_0x1539b4['changed'](_0xd223('0x1b'))||_0x1539b4[_0xd223('0x35')](_0xd223('0x3d'))){return _0xe6cb16[_0xd223('0x39')][_0xd223('0x3c')]({'where':{'UserId':_0x1539b4['id'],'type':_0xd223('0x8'),'ChanSpyId':null}})[_0xd223('0x25')](function(){var _0x5f4d90=getUserApplications(_0x1539b4,_0x1539b4[_0xd223('0x26')]);if(_0x1539b4[_0xd223('0x26')]!=_0x1539b4[_0xd223('0x17')]){_0x5f4d90=_0x5f4d90[_0xd223('0x27')](getUserApplications(_0x1539b4,_0x1539b4[_0xd223('0x17')]));}return _0xe6cb16['VoiceExtension'][_0xd223('0x3b')](_0x5f4d90);});}})[_0xd223('0x25')](function(){_0x4b758c();})[_0xd223('0x28')](function(_0x4c0304){_0x4b758c(_0x4c0304);});},'afterDestroy':function(_0x4ed7a4){return _0xe6cb16[_0xd223('0x39')][_0xd223('0x3c')]({'where':{'UserId':_0x4ed7a4['id'],'type':_0xd223('0x8')}});}},'instanceMethods':{'authenticate':function(_0x2f6ade,_0x1a567c){if(!_0x1a567c){return this[_0xd223('0x14')]===this[_0xd223('0x3e')](_0x2f6ade);}var _0x1aa8e1=this;this[_0xd223('0x3e')](_0x2f6ade,function(_0x38e7aa,_0x7c5552){if(_0x38e7aa){_0x1a567c(_0x38e7aa);}if(_0x1aa8e1['password']===_0x7c5552){_0x1a567c(null,!![]);}else{_0x1a567c(null,![]);}});},'makeSalt':function(_0x189e94,_0x114d8b){var _0x2275df=0x10;if(typeof arguments[0x0]===_0xd223('0x3f')){_0x114d8b=arguments[0x0];_0x189e94=_0x2275df;}else if(typeof arguments[0x1]===_0xd223('0x3f')){_0x114d8b=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x189e94){_0x189e94=_0x2275df;}return crypto[_0xd223('0x40')](_0x189e94,function(_0xfcffa8,_0x2d9a21){if(_0xfcffa8){_0x114d8b(_0xfcffa8);}return _0x114d8b(null,_0x2d9a21['toString'](_0xd223('0x41')));});},'encryptPassword':function(_0x2e3459,_0x10afe3){if(!_0x2e3459||!this[_0xd223('0x42')]){return _0x10afe3?_0x10afe3(null):null;}var _0x37ae22=0x2710;var _0x3bf88b=0x40;var _0x3090f9=new Buffer(this[_0xd223('0x42')],_0xd223('0x41'));if(!_0x10afe3){return crypto['pbkdf2Sync'](_0x2e3459,_0x3090f9,_0x37ae22,_0x3bf88b,'sha1')[_0xd223('0x43')](_0xd223('0x41'));}return crypto[_0xd223('0x44')](_0x2e3459,_0x3090f9,_0x37ae22,_0x3bf88b,_0xd223('0x45'),function(_0x5a99d6,_0x5bab04){if(_0x5a99d6){_0x10afe3(_0x5a99d6);}return _0x10afe3(null,_0x5bab04[_0xd223('0x43')](_0xd223('0x41')));});},'updatePassword':function(_0x4475b9){if(!this[_0xd223('0x14')]){return _0x4475b9(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0xd223('0x46')](this[_0xd223('0x47')])===-0x1){_0x4475b9(new Error(_0xd223('0x48')));}var _0x2fbc77=this;this[_0xd223('0x49')](function(_0x498f92,_0x563a26){if(_0x498f92){return _0x4475b9(_0x498f92);}_0x2fbc77['salt']=_0x563a26;_0x2fbc77[_0xd223('0x3e')](_0x2fbc77[_0xd223('0x14')],function(_0x8b8944,_0x2e85d4){if(_0x8b8944){_0x4475b9(_0x8b8944);}_0x2fbc77[_0xd223('0x14')]=_0x2e85d4;_0x4475b9(null);});});},'updateMd5Password':function(){this[_0xd223('0x4a')]=md5(this[_0xd223('0x17')]+_0xd223('0x4b')+this[_0xd223('0x14')]);return this['md5secret'];}}});};
\ No newline at end of file
index 5cdeadf..99f6fad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cd3=['loginInPause','count','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','all','LOGIN','callysquare','merge','concat','LOGININPAUSE','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./user.socket','register','request','then','info','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','error','User,\x20%s,\x20%s','message','catch','GetUser','findAll','options','raw','where','limit','map','model','attributes','include','ShowUser','User','PauseUser','find','role','internal','interface','UserVoiceQueueRt','update','MemberReport','name','PAUSE','format','YYYY-MM-DD\x20HH:mm:ss','length','updateAttributes','getChannels','isNil','SIP/%s','body','type','DEFAULT\x20PAUSE','uniqueid','bulkCreate','UnpauseUser','findOne','channel','isValidChannel','Unknown\x20channel','voice','mail','chat','fax','sms','openchannel','whatsapp','system','set','forEach','push','LogoutUser','LoginUser','mobile','phone'];(function(_0xae9230,_0x474cf4){var _0x226283=function(_0x4dadad){while(--_0x4dadad){_0xae9230['push'](_0xae9230['shift']());}};_0x226283(++_0x474cf4);}(_0x1cd3,0xc6));var _0x31cd=function(_0x3c67e6,_0x4154f0){_0x3c67e6=_0x3c67e6-0x0;var _0x206106=_0x1cd3[_0x3c67e6];return _0x206106;};'use strict';var _=require(_0x31cd('0x0'));var util=require(_0x31cd('0x1'));var moment=require(_0x31cd('0x2'));var BPromise=require(_0x31cd('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x31cd('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x31cd('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x31cd('0x6'));var jayson=require(_0x31cd('0x7'));var client=jayson['client'][_0x31cd('0x8')]({'port':0x232a});config[_0x31cd('0x9')]=_[_0x31cd('0xa')](config[_0x31cd('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x31cd('0xb'))(new Redis(config[_0x31cd('0x9')]));require(_0x31cd('0xc'))[_0x31cd('0xd')](socket);function respondWithRpcPromise(_0x215aad,_0x20d72b,_0x755e20){return new BPromise(function(_0x271b80,_0x4ad328){return client[_0x31cd('0xe')](_0x215aad,_0x755e20)[_0x31cd('0xf')](function(_0x2e74b7){logger[_0x31cd('0x10')]('User,\x20%s,\x20%s',_0x20d72b,_0x31cd('0x11'));logger[_0x31cd('0x12')](_0x31cd('0x13'),_0x20d72b,'request\x20sent',JSON['stringify'](_0x2e74b7));if(_0x2e74b7[_0x31cd('0x14')]){if(_0x2e74b7['error']['code']===0x1f4){logger[_0x31cd('0x14')](_0x31cd('0x15'),_0x20d72b,_0x2e74b7['error']['message']);return _0x4ad328(_0x2e74b7['error'][_0x31cd('0x16')]);}logger[_0x31cd('0x14')](_0x31cd('0x15'),_0x20d72b,_0x2e74b7[_0x31cd('0x14')][_0x31cd('0x16')]);return _0x271b80(_0x2e74b7[_0x31cd('0x14')]['message']);}else{logger['info']('User,\x20%s,\x20%s',_0x20d72b,_0x31cd('0x11'));_0x271b80(_0x2e74b7['result'][_0x31cd('0x16')]);}})[_0x31cd('0x17')](function(_0x433b53){logger[_0x31cd('0x14')](_0x31cd('0x15'),_0x20d72b,_0x433b53);_0x4ad328(_0x433b53);});});}exports[_0x31cd('0x18')]=function(_0x40c8bd){var _0xdae91b=this;return new Promise(function(_0x4aa2f,_0x3fee15){return db['User'][_0x31cd('0x19')]({'raw':_0x40c8bd[_0x31cd('0x1a')]?_0x40c8bd[_0x31cd('0x1a')][_0x31cd('0x1b')]===undefined?!![]:![]:!![],'where':_0x40c8bd[_0x31cd('0x1a')]?_0x40c8bd[_0x31cd('0x1a')][_0x31cd('0x1c')]||null:null,'attributes':_0x40c8bd[_0x31cd('0x1a')]?_0x40c8bd[_0x31cd('0x1a')]['attributes']||null:null,'limit':_0x40c8bd[_0x31cd('0x1a')]?_0x40c8bd[_0x31cd('0x1a')][_0x31cd('0x1d')]||null:null,'include':_0x40c8bd[_0x31cd('0x1a')]?_0x40c8bd[_0x31cd('0x1a')]['include']?_[_0x31cd('0x1e')](_0x40c8bd[_0x31cd('0x1a')]['include'],function(_0x3b6a84){return{'model':db[_0x3b6a84[_0x31cd('0x1f')]],'as':_0x3b6a84['as'],'attributes':_0x3b6a84[_0x31cd('0x20')],'include':_0x3b6a84[_0x31cd('0x21')]?_[_0x31cd('0x1e')](_0x3b6a84['include'],function(_0x1b22d1){return{'model':db[_0x1b22d1[_0x31cd('0x1f')]],'as':_0x1b22d1['as'],'attributes':_0x1b22d1['attributes'],'include':_0x1b22d1[_0x31cd('0x21')]?_[_0x31cd('0x1e')](_0x1b22d1[_0x31cd('0x21')],function(_0x367a8f){return{'model':db[_0x367a8f[_0x31cd('0x1f')]],'as':_0x367a8f['as'],'attributes':_0x367a8f['attributes']};}):[]};}):[]};}):[]:[]})[_0x31cd('0xf')](function(_0x2036f9){logger[_0x31cd('0x10')]('GetUser',_0x40c8bd);logger['debug']('GetUser',_0x40c8bd,JSON['stringify'](_0x2036f9));_0x4aa2f(_0x2036f9);})[_0x31cd('0x17')](function(_0x5d564b){logger['error'](_0x31cd('0x18'),_0x5d564b[_0x31cd('0x16')],_0x40c8bd);_0x3fee15(_0xdae91b[_0x31cd('0x14')](0x1f4,_0x5d564b[_0x31cd('0x16')]));});});};exports[_0x31cd('0x22')]=function(_0x4d32f8){var _0x44fe41=this;return new Promise(function(_0x391662,_0x15c26c){return db[_0x31cd('0x23')]['find']({'raw':_0x4d32f8[_0x31cd('0x1a')]?_0x4d32f8['options']['raw']===undefined?!![]:![]:!![],'where':_0x4d32f8[_0x31cd('0x1a')]?_0x4d32f8[_0x31cd('0x1a')][_0x31cd('0x1c')]||null:null,'attributes':_0x4d32f8[_0x31cd('0x1a')]?_0x4d32f8['options'][_0x31cd('0x20')]||null:null,'include':_0x4d32f8[_0x31cd('0x1a')]?_0x4d32f8[_0x31cd('0x1a')]['include']?_['map'](_0x4d32f8['options']['include'],function(_0x552636){return{'model':db[_0x552636[_0x31cd('0x1f')]],'as':_0x552636['as'],'attributes':_0x552636[_0x31cd('0x20')],'include':_0x552636[_0x31cd('0x21')]?_[_0x31cd('0x1e')](_0x552636['include'],function(_0x1f79ac){return{'model':db[_0x1f79ac['model']],'as':_0x1f79ac['as'],'attributes':_0x1f79ac[_0x31cd('0x20')],'include':_0x1f79ac[_0x31cd('0x21')]?_[_0x31cd('0x1e')](_0x1f79ac['include'],function(_0x540231){return{'model':db[_0x540231['model']],'as':_0x540231['as'],'attributes':_0x540231[_0x31cd('0x20')]};}):[]};}):[]};}):[]:[]})[_0x31cd('0xf')](function(_0x48624e){logger[_0x31cd('0x10')](_0x31cd('0x22'),_0x4d32f8);logger[_0x31cd('0x12')](_0x31cd('0x22'),_0x4d32f8,JSON['stringify'](_0x48624e));_0x391662(_0x48624e);})[_0x31cd('0x17')](function(_0x314a38){logger[_0x31cd('0x14')](_0x31cd('0x22'),_0x314a38[_0x31cd('0x16')],_0x4d32f8);_0x15c26c(_0x44fe41['error'](0x1f4,_0x314a38[_0x31cd('0x16')]));});});};exports[_0x31cd('0x24')]=function(_0x3c09c7){var _0x3d7cab=this;return new Promise(function(_0x5e4854,_0x5938fc){var _0x27e391;return db[_0x31cd('0x23')][_0x31cd('0x25')]({'where':_0x3c09c7[_0x31cd('0x1a')][_0x31cd('0x1c')]||{},'attributes':['id','name',_0x31cd('0x26'),_0x31cd('0x27'),_0x31cd('0x28')]})['then'](function(_0x1ef2d0){if(_0x1ef2d0){_0x27e391=_0x1ef2d0;return db[_0x31cd('0x29')][_0x31cd('0x2a')]({'paused':0x1},{'where':{'UserId':_0x27e391['id']},'individualHooks':!![]});}})[_0x31cd('0xf')](function(){if(_0x27e391){return db[_0x31cd('0x2b')]['findAll']({'where':{'membername':_0x27e391[_0x31cd('0x2c')],'type':_0x31cd('0x2d'),'exitAt':null}});}})[_0x31cd('0xf')](function(_0x456200){if(_0x27e391){if(_0x456200&&_0x456200['length']){var _0x225ca4=moment()[_0x31cd('0x2e')](_0x31cd('0x2f'));for(var _0x108af3=0x0,_0x36660b=_0x456200[_0x31cd('0x30')];_0x108af3<_0x36660b;_0x108af3++){_0x456200[_0x108af3][_0x31cd('0x31')]({'exitAt':_0x225ca4});}}}})[_0x31cd('0xf')](function(){if(_0x27e391){var _0x3d7076=[];var _0x11afbf=utils[_0x31cd('0x32')]();_0x11afbf['forEach'](function(_0xafa16b){_0x3d7076['push']({'channel':_0xafa16b,'membername':_0x27e391[_0x31cd('0x2c')],'interface':_[_0x31cd('0x33')](_0x27e391['interface'])?util['format'](_0x31cd('0x34'),_0x27e391[_0x31cd('0x2c')]):_0x27e391[_0x31cd('0x28')],'type':_0x31cd('0x2d'),'enterAt':moment()[_0x31cd('0x2e')](_0x31cd('0x2f')),'data1':_0x3c09c7[_0x31cd('0x35')][_0x31cd('0x36')]||_0x31cd('0x37'),'role':_0x27e391[_0x31cd('0x26')],'internal':_0x27e391['internal'],'uniqueid':_0x3c09c7[_0x31cd('0x35')][_0x31cd('0x38')]||null});});return db[_0x31cd('0x2b')][_0x31cd('0x39')](_0x3d7076,{'individualHooks':!![]});}})[_0x31cd('0xf')](function(){if(_0x27e391){return _0x27e391['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x3c09c7[_0x31cd('0x35')][_0x31cd('0x36')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()['format'](_0x31cd('0x2f'))});}})[_0x31cd('0xf')](function(_0x1ad993){_0x5e4854(_0x1ad993);})['catch'](function(_0x4b3d0e){_0x5938fc(_0x3d7cab[_0x31cd('0x14')](0x1f4,_0x4b3d0e[_0x31cd('0x16')]));});});};exports[_0x31cd('0x3a')]=function(_0x528a31){var _0x23a09b=this;return new Promise(function(_0x26f50e,_0x2d6725){var _0x39f3a5;return db['User'][_0x31cd('0x3b')]({'where':_0x528a31[_0x31cd('0x1a')][_0x31cd('0x1c')]||{},'attributes':['id','name']})[_0x31cd('0xf')](function(_0x55b204){if(_0x55b204){_0x39f3a5=_0x55b204;if(_0x528a31[_0x31cd('0x35')][_0x31cd('0x3c')]&&!utils[_0x31cd('0x3d')](_0x528a31[_0x31cd('0x35')]['channel'])){throw new Error(_0x31cd('0x3e'));}switch(_0x528a31[_0x31cd('0x35')][_0x31cd('0x3c')]){case _0x31cd('0x3f'):return db[_0x31cd('0x29')][_0x31cd('0x2a')]({'paused':0x0},{'where':{'UserId':_0x39f3a5['id']}})[_0x31cd('0xf')](function(){return db[_0x31cd('0x2b')][_0x31cd('0x25')]({'where':{'channel':_0x528a31['body'][_0x31cd('0x3c')],'membername':_0x39f3a5[_0x31cd('0x2c')],'type':'PAUSE','exitAt':null}});})[_0x31cd('0xf')](function(_0x361ec5){if(_0x361ec5){return _0x361ec5[_0x31cd('0x2a')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':'system'},{'individualHooks':!![]});}return null;})[_0x31cd('0xf')](function(){return _0x39f3a5[_0x31cd('0x2a')]({'voicePause':![]});});case _0x31cd('0x40'):case _0x31cd('0x41'):case _0x31cd('0x42'):case _0x31cd('0x43'):case _0x31cd('0x44'):case _0x31cd('0x45'):return db[_0x31cd('0x2b')]['find']({'where':{'channel':_0x528a31[_0x31cd('0x35')][_0x31cd('0x3c')],'membername':_0x39f3a5[_0x31cd('0x2c')],'type':_0x31cd('0x2d'),'exitAt':null}})[_0x31cd('0xf')](function(_0x40d7c3){return _0x40d7c3[_0x31cd('0x2a')]({'exitAt':moment()[_0x31cd('0x2e')](_0x31cd('0x2f')),'data2':_0x31cd('0x46')},{'individualHooks':!![]});})['then'](function(){var _0x2551f6={};_[_0x31cd('0x47')](_0x2551f6,util['format']('%s%s',_0x528a31[_0x31cd('0x35')]['channel'],'Pause'),![]);return _0x39f3a5[_0x31cd('0x2a')](_0x2551f6);});default:return db['UserVoiceQueueRt'][_0x31cd('0x2a')]({'paused':0x0},{'where':{'UserId':_0x39f3a5['id']}})[_0x31cd('0xf')](function(){return db['MemberReport'][_0x31cd('0x19')]({'where':{'membername':_0x39f3a5[_0x31cd('0x2c')],'type':'PAUSE','exitAt':null}});})['then'](function(_0x52d877){var _0x585675=[];_0x52d877[_0x31cd('0x48')](function(_0x41e12b){_0x585675[_0x31cd('0x49')](_0x41e12b[_0x31cd('0x2a')]({'exitAt':moment()[_0x31cd('0x2e')](_0x31cd('0x2f')),'data2':_0x31cd('0x46')}));});return BPromise['all'](_0x585675);})['then'](function(){return _0x39f3a5[_0x31cd('0x2a')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x31cd('0xf')](function(_0x3101c1){_0x26f50e(_0x3101c1);})[_0x31cd('0x17')](function(_0x172823){_0x2d6725(_0x23a09b[_0x31cd('0x14')](0x1f4,_0x172823[_0x31cd('0x16')]));});});};exports[_0x31cd('0x4a')]=function(_0x4177d4){var _0x3b9948=this;return new Promise(function(_0x5b307e,_0x170504){var _0x32a80b;return db[_0x31cd('0x23')][_0x31cd('0x3b')]({'where':_0x4177d4[_0x31cd('0x1a')][_0x31cd('0x1c')]||{},'attributes':['id','name']})[_0x31cd('0xf')](function(_0x374762){if(_0x374762){_0x32a80b=_0x374762;return db[_0x31cd('0x29')]['destroy']({'where':{'membername':_0x32a80b[_0x31cd('0x2c')]},'individualHooks':!![]});}})['then'](function(){if(_0x32a80b){return db[_0x31cd('0x2b')]['findAll']({'where':{'membername':_0x32a80b['name'],'exitAt':null}});}})[_0x31cd('0xf')](function(_0x445662){if(_0x32a80b){if(_0x445662&&_0x445662['length']){var _0x4d3396=[];_0x445662[_0x31cd('0x48')](function(_0xbc4b69){_0x4d3396['push'](_0xbc4b69[_0x31cd('0x2a')]({'exitAt':moment()[_0x31cd('0x2e')](_0x31cd('0x2f'))}));});return BPromise['all'](_0x4d3396);}}})[_0x31cd('0xf')](function(){if(_0x32a80b){return _0x32a80b['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x31cd('0xf')](function(_0x1343c5){_0x5b307e(_0x1343c5);})[_0x31cd('0x17')](function(_0x533c1c){_0x170504(_0x3b9948[_0x31cd('0x14')](0x1f4,_0x533c1c['message']));});});};exports[_0x31cd('0x4b')]=function(_0x4f1f06){var _0x416156=this;return new Promise(function(_0x145f52,_0x22285c){var _0x4a37c3;var _0x49b4fc;var _0x38e7c8;var _0x52b473;return db[_0x31cd('0x23')][_0x31cd('0x3b')]({'where':_0x4f1f06[_0x31cd('0x1a')][_0x31cd('0x1c')]||{},'attributes':['id','name',_0x31cd('0x26'),_0x31cd('0x4c'),_0x31cd('0x4d'),_0x31cd('0x27'),_0x31cd('0x4e'),_0x31cd('0x28')]})['then'](function(_0x1ec973){if(_0x1ec973){_0x4a37c3=_0x1ec973;_0x52b473=_0x4f1f06[_0x31cd('0x35')][_0x31cd('0x28')]?_0x4f1f06[_0x31cd('0x35')][_0x31cd('0x28')]:util[_0x31cd('0x2e')](_0x31cd('0x34'),_0x4a37c3['name']);return db[_0x31cd('0x23')][_0x31cd('0x4f')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x4a37c3['id']}}});}})[_0x31cd('0xf')](function(_0x1e52a0){if(_0x1e52a0){_0x38e7c8=_0x1e52a0;return require('../../config/license/util')[_0x31cd('0x50')]();}})[_0x31cd('0xf')](function(_0x317789){if(_0x317789&&_0x317789[_0x31cd('0x51')]&&_0x38e7c8>=_0x317789['agents']){throw new Error(_0x31cd('0x52'));}})[_0x31cd('0xf')](function(){if(_0x4a37c3){return db[_0x31cd('0x29')]['destroy']({'where':{'membername':_0x4a37c3['name']},'individualHooks':!![]});}})[_0x31cd('0xf')](function(){if(_0x4a37c3){return _0x4a37c3[_0x31cd('0x53')]({'raw':!![]});}})['then'](function(_0x284cd6){if(_0x4a37c3){if(_0x284cd6){var _0x49c2bb=[];_0x49b4fc=_0x284cd6;if(_0x49b4fc[_0x31cd('0x30')]){for(var _0x60ec3a=0x0;_0x60ec3a<_0x49b4fc[_0x31cd('0x30')];_0x60ec3a++){_0x49c2bb[_0x31cd('0x49')](db[_0x31cd('0x29')][_0x31cd('0x54')]({'membername':_0x4a37c3['name'],'UserId':_0x4a37c3['id'],'queue_name':_0x49b4fc[_0x60ec3a]['name'],'VoiceQueueId':_0x49b4fc[_0x60ec3a]['id'],'interface':_0x52b473,'paused':_0x4a37c3['loginInPause']||![],'penalty':_0x49b4fc[_0x60ec3a][_0x31cd('0x55')]||0x0}));}return BPromise[_0x31cd('0x56')](_0x49c2bb);}}}})[_0x31cd('0xf')](function(){if(_0x4a37c3){return db[_0x31cd('0x2b')]['findAll']({'where':{'membername':_0x4a37c3[_0x31cd('0x2c')],'exitAt':null}});}})['then'](function(_0x7bccc1){if(_0x4a37c3){if(_0x7bccc1&&_0x7bccc1[_0x31cd('0x30')]){var _0x1487e9=[];_0x7bccc1['forEach'](function(_0x5c6b9d){_0x1487e9[_0x31cd('0x49')](_0x5c6b9d[_0x31cd('0x2a')]({'exitAt':moment()[_0x31cd('0x2e')](_0x31cd('0x2f'))}));});return BPromise[_0x31cd('0x56')](_0x1487e9);}}})[_0x31cd('0xf')](function(_0x893a52){if(_0x4a37c3){var _0x4e1baf=[];var _0x5e2597=[];var _0x51d1d6=utils['getChannels']();var _0x41f6b3={'membername':_0x4a37c3[_0x31cd('0x2c')],'interface':_0x52b473,'enterAt':moment()[_0x31cd('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x4a37c3[_0x31cd('0x26')],'internal':_0x4a37c3[_0x31cd('0x27')]};_0x51d1d6[_0x31cd('0x48')](function(_0x1bedd4){_0x4e1baf['push'](_['merge']({'channel':_0x1bedd4,'type':_0x31cd('0x57'),'data1':_0x31cd('0x58'),'data2':_0x52b473},_0x41f6b3));if(_0x4a37c3[_0x31cd('0x4e')]){_0x5e2597['push'](_[_0x31cd('0x59')]({'channel':_0x1bedd4,'type':_0x31cd('0x2d'),'data1':'LOGININPAUSE'},_0x41f6b3));}});return db[_0x31cd('0x2b')][_0x31cd('0x39')](_0x4e1baf[_0x31cd('0x5a')](_0x5e2597),{'individualHooks':!![]});}})[_0x31cd('0xf')](function(){if(_0x4a37c3){return _0x4a37c3[_0x31cd('0x2a')]({'online':!![],'lastLoginAt':moment()[_0x31cd('0x2e')](_0x31cd('0x2f')),'voicePause':_0x4a37c3['loginInPause']||![],'mailPause':_0x4a37c3[_0x31cd('0x4e')]||![],'chatPause':_0x4a37c3[_0x31cd('0x4e')]||![],'faxPause':_0x4a37c3[_0x31cd('0x4e')]||![],'smsPause':_0x4a37c3[_0x31cd('0x4e')]||![],'openchannelPause':_0x4a37c3[_0x31cd('0x4e')]||![],'pauseType':_0x4a37c3['loginInPause']?_0x31cd('0x5b'):null,'lastPauseAt':moment()[_0x31cd('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x52b473});}})[_0x31cd('0xf')](function(_0x521df1){_0x145f52(_0x521df1);})[_0x31cd('0x17')](function(_0x20df6d){_0x22285c(_0x416156[_0x31cd('0x14')](0x1f4,_0x20df6d[_0x31cd('0x16')]));});});};
\ No newline at end of file
+var _0xca93=['../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./user.socket','register','request','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','code','result','catch','GetUser','User','findAll','options','raw','where','attributes','map','model','include','then','message','ShowUser','PauseUser','name','role','internal','interface','update','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','forEach','push','isNil','SIP/%s','body','type','DEFAULT\x20PAUSE','bulkCreate','UnpauseUser','channel','voice','MemberReport','find','PAUSE','system','mail','chat','openchannel','whatsapp','%s%s','UserVoiceQueueRt','LogoutUser','findOne','destroy','all','mobile','loginInPause','agent','getLicense','agents','getVoiceQueues','upsert','UserVoiceQueue.penalty','getChannels','merge','LOGIN','callysquare','LOGININPAUSE','lodash','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0xca93,0xaa));var _0x3ca9=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xca93[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x3ca9('0x0'));var util=require(_0x3ca9('0x1'));var moment=require(_0x3ca9('0x2'));var BPromise=require(_0x3ca9('0x3'));var rs=require(_0x3ca9('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3ca9('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3ca9('0x6'))(_0x3ca9('0x7'));var config=require(_0x3ca9('0x8'));var jayson=require(_0x3ca9('0x9'));var client=jayson['client'][_0x3ca9('0xa')]({'port':0x232a});config[_0x3ca9('0xb')]=_[_0x3ca9('0xc')](config['redis'],{'host':_0x3ca9('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3ca9('0xb')]));require(_0x3ca9('0xe'))[_0x3ca9('0xf')](socket);function respondWithRpcPromise(_0x3a9a7a,_0x3a712d,_0x31c618){return new BPromise(function(_0x2289fa,_0x16ef51){return client[_0x3ca9('0x10')](_0x3a9a7a,_0x31c618)['then'](function(_0x3ca289){logger[_0x3ca9('0x11')](_0x3ca9('0x12'),_0x3a712d,_0x3ca9('0x13'));logger[_0x3ca9('0x14')](_0x3ca9('0x15'),_0x3a712d,_0x3ca9('0x13'),JSON[_0x3ca9('0x16')](_0x3ca289));if(_0x3ca289['error']){if(_0x3ca289[_0x3ca9('0x17')][_0x3ca9('0x18')]===0x1f4){logger['error'](_0x3ca9('0x12'),_0x3a712d,_0x3ca289[_0x3ca9('0x17')]['message']);return _0x16ef51(_0x3ca289['error']['message']);}logger[_0x3ca9('0x17')]('User,\x20%s,\x20%s',_0x3a712d,_0x3ca289[_0x3ca9('0x17')]['message']);return _0x2289fa(_0x3ca289['error']['message']);}else{logger[_0x3ca9('0x11')](_0x3ca9('0x12'),_0x3a712d,_0x3ca9('0x13'));_0x2289fa(_0x3ca289[_0x3ca9('0x19')]['message']);}})[_0x3ca9('0x1a')](function(_0x5ec392){logger[_0x3ca9('0x17')](_0x3ca9('0x12'),_0x3a712d,_0x5ec392);_0x16ef51(_0x5ec392);});});}exports[_0x3ca9('0x1b')]=function(_0x84e73c){var _0x2a5352=this;return new Promise(function(_0x20a290,_0x118031){return db[_0x3ca9('0x1c')][_0x3ca9('0x1d')]({'raw':_0x84e73c[_0x3ca9('0x1e')]?_0x84e73c[_0x3ca9('0x1e')][_0x3ca9('0x1f')]===undefined?!![]:![]:!![],'where':_0x84e73c[_0x3ca9('0x1e')]?_0x84e73c['options'][_0x3ca9('0x20')]||null:null,'attributes':_0x84e73c['options']?_0x84e73c[_0x3ca9('0x1e')][_0x3ca9('0x21')]||null:null,'limit':_0x84e73c[_0x3ca9('0x1e')]?_0x84e73c[_0x3ca9('0x1e')]['limit']||null:null,'include':_0x84e73c[_0x3ca9('0x1e')]?_0x84e73c[_0x3ca9('0x1e')]['include']?_[_0x3ca9('0x22')](_0x84e73c[_0x3ca9('0x1e')]['include'],function(_0xd9b731){return{'model':db[_0xd9b731[_0x3ca9('0x23')]],'as':_0xd9b731['as'],'attributes':_0xd9b731[_0x3ca9('0x21')],'include':_0xd9b731[_0x3ca9('0x24')]?_[_0x3ca9('0x22')](_0xd9b731['include'],function(_0x311c79){return{'model':db[_0x311c79[_0x3ca9('0x23')]],'as':_0x311c79['as'],'attributes':_0x311c79[_0x3ca9('0x21')],'include':_0x311c79[_0x3ca9('0x24')]?_[_0x3ca9('0x22')](_0x311c79[_0x3ca9('0x24')],function(_0x2526e0){return{'model':db[_0x2526e0[_0x3ca9('0x23')]],'as':_0x2526e0['as'],'attributes':_0x2526e0['attributes']};}):[]};}):[]};}):[]:[]})[_0x3ca9('0x25')](function(_0x244edd){logger[_0x3ca9('0x11')](_0x3ca9('0x1b'),_0x84e73c);logger[_0x3ca9('0x14')]('GetUser',_0x84e73c,JSON[_0x3ca9('0x16')](_0x244edd));_0x20a290(_0x244edd);})['catch'](function(_0x42d796){logger[_0x3ca9('0x17')](_0x3ca9('0x1b'),_0x42d796[_0x3ca9('0x26')],_0x84e73c);_0x118031(_0x2a5352[_0x3ca9('0x17')](0x1f4,_0x42d796[_0x3ca9('0x26')]));});});};exports[_0x3ca9('0x27')]=function(_0x3a4391){var _0x22ea4a=this;return new Promise(function(_0x119f9c,_0x16fcd2){return db['User']['find']({'raw':_0x3a4391[_0x3ca9('0x1e')]?_0x3a4391[_0x3ca9('0x1e')][_0x3ca9('0x1f')]===undefined?!![]:![]:!![],'where':_0x3a4391[_0x3ca9('0x1e')]?_0x3a4391['options'][_0x3ca9('0x20')]||null:null,'attributes':_0x3a4391[_0x3ca9('0x1e')]?_0x3a4391['options']['attributes']||null:null,'include':_0x3a4391[_0x3ca9('0x1e')]?_0x3a4391['options'][_0x3ca9('0x24')]?_[_0x3ca9('0x22')](_0x3a4391[_0x3ca9('0x1e')]['include'],function(_0x3b3155){return{'model':db[_0x3b3155[_0x3ca9('0x23')]],'as':_0x3b3155['as'],'attributes':_0x3b3155[_0x3ca9('0x21')],'include':_0x3b3155[_0x3ca9('0x24')]?_[_0x3ca9('0x22')](_0x3b3155['include'],function(_0x40b7a7){return{'model':db[_0x40b7a7[_0x3ca9('0x23')]],'as':_0x40b7a7['as'],'attributes':_0x40b7a7[_0x3ca9('0x21')],'include':_0x40b7a7[_0x3ca9('0x24')]?_[_0x3ca9('0x22')](_0x40b7a7['include'],function(_0x2b883a){return{'model':db[_0x2b883a[_0x3ca9('0x23')]],'as':_0x2b883a['as'],'attributes':_0x2b883a[_0x3ca9('0x21')]};}):[]};}):[]};}):[]:[]})[_0x3ca9('0x25')](function(_0x1a00c2){logger[_0x3ca9('0x11')](_0x3ca9('0x27'),_0x3a4391);logger['debug'](_0x3ca9('0x27'),_0x3a4391,JSON[_0x3ca9('0x16')](_0x1a00c2));_0x119f9c(_0x1a00c2);})[_0x3ca9('0x1a')](function(_0x28960c){logger[_0x3ca9('0x17')](_0x3ca9('0x27'),_0x28960c[_0x3ca9('0x26')],_0x3a4391);_0x16fcd2(_0x22ea4a[_0x3ca9('0x17')](0x1f4,_0x28960c[_0x3ca9('0x26')]));});});};exports[_0x3ca9('0x28')]=function(_0x4dcc9d){var _0x40f2ec=this;return new Promise(function(_0x595180,_0x5e1fdc){var _0x17acb3;return db['User']['find']({'where':_0x4dcc9d[_0x3ca9('0x1e')][_0x3ca9('0x20')]||{},'attributes':['id',_0x3ca9('0x29'),_0x3ca9('0x2a'),_0x3ca9('0x2b'),_0x3ca9('0x2c')]})['then'](function(_0x4ac4f0){if(_0x4ac4f0){_0x17acb3=_0x4ac4f0;return db['UserVoiceQueueRt'][_0x3ca9('0x2d')]({'paused':0x1},{'where':{'UserId':_0x17acb3['id']},'individualHooks':!![]});}})[_0x3ca9('0x25')](function(){if(_0x17acb3){return db['MemberReport'][_0x3ca9('0x1d')]({'where':{'membername':_0x17acb3[_0x3ca9('0x29')],'type':'PAUSE','exitAt':null}});}})[_0x3ca9('0x25')](function(_0x55e1f9){if(_0x17acb3){if(_0x55e1f9&&_0x55e1f9[_0x3ca9('0x2e')]){var _0x366ccc=moment()[_0x3ca9('0x2f')](_0x3ca9('0x30'));for(var _0x4e8815=0x0,_0x3acd5c=_0x55e1f9[_0x3ca9('0x2e')];_0x4e8815<_0x3acd5c;_0x4e8815++){_0x55e1f9[_0x4e8815][_0x3ca9('0x31')]({'exitAt':_0x366ccc});}}}})[_0x3ca9('0x25')](function(){if(_0x17acb3){var _0x568ff0=[];var _0x394fdf=utils['getChannels']();_0x394fdf[_0x3ca9('0x32')](function(_0x405046){_0x568ff0[_0x3ca9('0x33')]({'channel':_0x405046,'membername':_0x17acb3[_0x3ca9('0x29')],'interface':_[_0x3ca9('0x34')](_0x17acb3[_0x3ca9('0x2c')])?util[_0x3ca9('0x2f')](_0x3ca9('0x35'),_0x17acb3[_0x3ca9('0x29')]):_0x17acb3[_0x3ca9('0x2c')],'type':'PAUSE','enterAt':moment()[_0x3ca9('0x2f')](_0x3ca9('0x30')),'data1':_0x4dcc9d[_0x3ca9('0x36')][_0x3ca9('0x37')]||_0x3ca9('0x38'),'role':_0x17acb3[_0x3ca9('0x2a')],'internal':_0x17acb3[_0x3ca9('0x2b')],'uniqueid':_0x4dcc9d[_0x3ca9('0x36')]['uniqueid']||null});});return db['MemberReport'][_0x3ca9('0x39')](_0x568ff0,{'individualHooks':!![]});}})[_0x3ca9('0x25')](function(){if(_0x17acb3){return _0x17acb3['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x4dcc9d[_0x3ca9('0x36')]['type']||_0x3ca9('0x38'),'lastPauseAt':moment()['format'](_0x3ca9('0x30'))});}})[_0x3ca9('0x25')](function(_0x2f9f6a){_0x595180(_0x2f9f6a);})[_0x3ca9('0x1a')](function(_0x54022b){_0x5e1fdc(_0x40f2ec[_0x3ca9('0x17')](0x1f4,_0x54022b['message']));});});};exports[_0x3ca9('0x3a')]=function(_0xd5819a){var _0x15bc0b=this;return new Promise(function(_0x3e627b,_0x5afcdb){var _0x9292b9;return db[_0x3ca9('0x1c')]['findOne']({'where':_0xd5819a['options'][_0x3ca9('0x20')]||{},'attributes':['id',_0x3ca9('0x29')]})[_0x3ca9('0x25')](function(_0x11c175){if(_0x11c175){_0x9292b9=_0x11c175;if(_0xd5819a['body'][_0x3ca9('0x3b')]&&!utils['isValidChannel'](_0xd5819a[_0x3ca9('0x36')]['channel'])){throw new Error('Unknown\x20channel');}switch(_0xd5819a['body'][_0x3ca9('0x3b')]){case _0x3ca9('0x3c'):return db['UserVoiceQueueRt'][_0x3ca9('0x2d')]({'paused':0x0},{'where':{'UserId':_0x9292b9['id']}})['then'](function(){return db[_0x3ca9('0x3d')][_0x3ca9('0x3e')]({'where':{'channel':_0xd5819a[_0x3ca9('0x36')]['channel'],'membername':_0x9292b9[_0x3ca9('0x29')],'type':_0x3ca9('0x3f'),'exitAt':null}});})[_0x3ca9('0x25')](function(_0x5a4f7a){if(_0x5a4f7a){return _0x5a4f7a[_0x3ca9('0x2d')]({'exitAt':moment()[_0x3ca9('0x2f')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x3ca9('0x40')},{'individualHooks':!![]});}return null;})[_0x3ca9('0x25')](function(){return _0x9292b9[_0x3ca9('0x2d')]({'voicePause':![]});});case _0x3ca9('0x41'):case _0x3ca9('0x42'):case'fax':case'sms':case _0x3ca9('0x43'):case _0x3ca9('0x44'):return db[_0x3ca9('0x3d')]['find']({'where':{'channel':_0xd5819a[_0x3ca9('0x36')][_0x3ca9('0x3b')],'membername':_0x9292b9[_0x3ca9('0x29')],'type':'PAUSE','exitAt':null}})[_0x3ca9('0x25')](function(_0x4db2aa){return _0x4db2aa[_0x3ca9('0x2d')]({'exitAt':moment()[_0x3ca9('0x2f')](_0x3ca9('0x30')),'data2':_0x3ca9('0x40')},{'individualHooks':!![]});})[_0x3ca9('0x25')](function(){var _0x2a95c1={};_['set'](_0x2a95c1,util[_0x3ca9('0x2f')](_0x3ca9('0x45'),_0xd5819a['body'][_0x3ca9('0x3b')],'Pause'),![]);return _0x9292b9[_0x3ca9('0x2d')](_0x2a95c1);});default:return db[_0x3ca9('0x46')]['update']({'paused':0x0},{'where':{'UserId':_0x9292b9['id']}})[_0x3ca9('0x25')](function(){return db[_0x3ca9('0x3d')][_0x3ca9('0x1d')]({'where':{'membername':_0x9292b9['name'],'type':_0x3ca9('0x3f'),'exitAt':null}});})['then'](function(_0x3e43db){var _0x4d7ad0=[];_0x3e43db[_0x3ca9('0x32')](function(_0x19aab4){_0x4d7ad0[_0x3ca9('0x33')](_0x19aab4[_0x3ca9('0x2d')]({'exitAt':moment()[_0x3ca9('0x2f')](_0x3ca9('0x30')),'data2':_0x3ca9('0x40')}));});return BPromise['all'](_0x4d7ad0);})[_0x3ca9('0x25')](function(){return _0x9292b9[_0x3ca9('0x2d')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x3ca9('0x25')](function(_0x256d64){_0x3e627b(_0x256d64);})[_0x3ca9('0x1a')](function(_0x79c96b){_0x5afcdb(_0x15bc0b[_0x3ca9('0x17')](0x1f4,_0x79c96b[_0x3ca9('0x26')]));});});};exports[_0x3ca9('0x47')]=function(_0x44ac4a){var _0x29ad47=this;return new Promise(function(_0x27198e,_0x198acb){var _0x9e4b0a;return db[_0x3ca9('0x1c')][_0x3ca9('0x48')]({'where':_0x44ac4a[_0x3ca9('0x1e')][_0x3ca9('0x20')]||{},'attributes':['id',_0x3ca9('0x29')]})[_0x3ca9('0x25')](function(_0x3af924){if(_0x3af924){_0x9e4b0a=_0x3af924;return db[_0x3ca9('0x46')][_0x3ca9('0x49')]({'where':{'membername':_0x9e4b0a[_0x3ca9('0x29')]},'individualHooks':!![]});}})[_0x3ca9('0x25')](function(){if(_0x9e4b0a){return db[_0x3ca9('0x3d')][_0x3ca9('0x1d')]({'where':{'membername':_0x9e4b0a[_0x3ca9('0x29')],'exitAt':null}});}})['then'](function(_0x1771ba){if(_0x9e4b0a){if(_0x1771ba&&_0x1771ba['length']){var _0x1f91a4=[];_0x1771ba[_0x3ca9('0x32')](function(_0x2d2890){_0x1f91a4['push'](_0x2d2890[_0x3ca9('0x2d')]({'exitAt':moment()[_0x3ca9('0x2f')](_0x3ca9('0x30'))}));});return BPromise[_0x3ca9('0x4a')](_0x1f91a4);}}})[_0x3ca9('0x25')](function(){if(_0x9e4b0a){return _0x9e4b0a[_0x3ca9('0x2d')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x3ca9('0x25')](function(_0x17ae19){_0x27198e(_0x17ae19);})[_0x3ca9('0x1a')](function(_0x5d0bcd){_0x198acb(_0x29ad47[_0x3ca9('0x17')](0x1f4,_0x5d0bcd[_0x3ca9('0x26')]));});});};exports['LoginUser']=function(_0x45394c){var _0x431490=this;return new Promise(function(_0x39b49c,_0x5ab434){var _0x340605;var _0x5ab8b5;var _0x1a0fcf;var _0x28ee3e;return db[_0x3ca9('0x1c')][_0x3ca9('0x48')]({'where':_0x45394c[_0x3ca9('0x1e')][_0x3ca9('0x20')]||{},'attributes':['id',_0x3ca9('0x29'),'role',_0x3ca9('0x4b'),'phone',_0x3ca9('0x2b'),_0x3ca9('0x4c'),_0x3ca9('0x2c')]})[_0x3ca9('0x25')](function(_0x543ac6){if(_0x543ac6){_0x340605=_0x543ac6;_0x28ee3e=_0x45394c[_0x3ca9('0x36')][_0x3ca9('0x2c')]?_0x45394c[_0x3ca9('0x36')][_0x3ca9('0x2c')]:util[_0x3ca9('0x2f')]('SIP/%s',_0x340605[_0x3ca9('0x29')]);return db['User']['count']({'where':{'role':_0x3ca9('0x4d'),'online':!![],'id':{'$ne':_0x340605['id']}}});}})['then'](function(_0x4d758b){if(_0x4d758b){_0x1a0fcf=_0x4d758b;return require('../../config/license/util')[_0x3ca9('0x4e')]();}})['then'](function(_0x43e57a){if(_0x43e57a&&_0x43e57a[_0x3ca9('0x4f')]&&_0x1a0fcf>=_0x43e57a[_0x3ca9('0x4f')]){throw new Error('Maximum\x20login\x20has\x20been\x20reached');}})[_0x3ca9('0x25')](function(){if(_0x340605){return db[_0x3ca9('0x46')]['destroy']({'where':{'membername':_0x340605[_0x3ca9('0x29')]},'individualHooks':!![]});}})[_0x3ca9('0x25')](function(){if(_0x340605){return _0x340605[_0x3ca9('0x50')]({'raw':!![]});}})[_0x3ca9('0x25')](function(_0x4e31e0){if(_0x340605){if(_0x4e31e0){var _0x57c6d5=[];_0x5ab8b5=_0x4e31e0;if(_0x5ab8b5['length']){for(var _0x37057d=0x0;_0x37057d<_0x5ab8b5[_0x3ca9('0x2e')];_0x37057d++){_0x57c6d5['push'](db['UserVoiceQueueRt'][_0x3ca9('0x51')]({'membername':_0x340605[_0x3ca9('0x29')],'UserId':_0x340605['id'],'queue_name':_0x5ab8b5[_0x37057d][_0x3ca9('0x29')],'VoiceQueueId':_0x5ab8b5[_0x37057d]['id'],'interface':_0x28ee3e,'paused':_0x340605[_0x3ca9('0x4c')]||![],'penalty':_0x5ab8b5[_0x37057d][_0x3ca9('0x52')]||0x0}));}return BPromise['all'](_0x57c6d5);}}}})[_0x3ca9('0x25')](function(){if(_0x340605){return db[_0x3ca9('0x3d')][_0x3ca9('0x1d')]({'where':{'membername':_0x340605[_0x3ca9('0x29')],'exitAt':null}});}})[_0x3ca9('0x25')](function(_0x2128aa){if(_0x340605){if(_0x2128aa&&_0x2128aa[_0x3ca9('0x2e')]){var _0x222042=[];_0x2128aa[_0x3ca9('0x32')](function(_0x58274e){_0x222042['push'](_0x58274e['update']({'exitAt':moment()[_0x3ca9('0x2f')](_0x3ca9('0x30'))}));});return BPromise['all'](_0x222042);}}})[_0x3ca9('0x25')](function(_0x365e5f){if(_0x340605){var _0x243e41=[];var _0x45af7f=[];var _0x3b5ace=utils[_0x3ca9('0x53')]();var _0xb0620={'membername':_0x340605[_0x3ca9('0x29')],'interface':_0x28ee3e,'enterAt':moment()['format'](_0x3ca9('0x30')),'role':_0x340605[_0x3ca9('0x2a')],'internal':_0x340605['internal']};_0x3b5ace[_0x3ca9('0x32')](function(_0x5544c0){_0x243e41[_0x3ca9('0x33')](_[_0x3ca9('0x54')]({'channel':_0x5544c0,'type':_0x3ca9('0x55'),'data1':_0x3ca9('0x56'),'data2':_0x28ee3e},_0xb0620));if(_0x340605[_0x3ca9('0x4c')]){_0x45af7f[_0x3ca9('0x33')](_[_0x3ca9('0x54')]({'channel':_0x5544c0,'type':_0x3ca9('0x3f'),'data1':_0x3ca9('0x57')},_0xb0620));}});return db['MemberReport'][_0x3ca9('0x39')](_0x243e41['concat'](_0x45af7f),{'individualHooks':!![]});}})['then'](function(){if(_0x340605){return _0x340605[_0x3ca9('0x2d')]({'online':!![],'lastLoginAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x340605[_0x3ca9('0x4c')]||![],'mailPause':_0x340605[_0x3ca9('0x4c')]||![],'chatPause':_0x340605[_0x3ca9('0x4c')]||![],'faxPause':_0x340605[_0x3ca9('0x4c')]||![],'smsPause':_0x340605[_0x3ca9('0x4c')]||![],'openchannelPause':_0x340605[_0x3ca9('0x4c')]||![],'pauseType':_0x340605[_0x3ca9('0x4c')]?'LOGININPAUSE':null,'lastPauseAt':moment()[_0x3ca9('0x2f')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x28ee3e});}})[_0x3ca9('0x25')](function(_0x2d52c6){_0x39b49c(_0x2d52c6);})['catch'](function(_0x5a1de9){_0x5ab434(_0x431490[_0x3ca9('0x17')](0x1f4,_0x5a1de9[_0x3ca9('0x26')]));});});};
\ No newline at end of file
index f7af8ee..248b74f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0460=['emit','removeListener','register','length','./user.events','save','remove','update'];(function(_0x45c536,_0x52a556){var _0x10e06d=function(_0x3fcca0){while(--_0x3fcca0){_0x45c536['push'](_0x45c536['shift']());}};_0x10e06d(++_0x52a556);}(_0x0460,0x144));var _0x0046=function(_0x2801d2,_0x8627e4){_0x2801d2=_0x2801d2-0x0;var _0x2503ff=_0x0460[_0x2801d2];return _0x2503ff;};'use strict';var UserEvents=require(_0x0046('0x0'));var events=[_0x0046('0x1'),_0x0046('0x2'),_0x0046('0x3')];function createListener(_0x397e85,_0x3bcc1f){return function(_0x519a1c){_0x3bcc1f[_0x0046('0x4')](_0x397e85,_0x519a1c);};}function removeListener(_0x39b48b,_0x442211){return function(){UserEvents[_0x0046('0x5')](_0x39b48b,_0x442211);};}exports[_0x0046('0x6')]=function(_0x4a26ed){for(var _0x36d70e=0x0,_0x2a2712=events[_0x0046('0x7')];_0x36d70e<_0x2a2712;_0x36d70e++){var _0x2b58be=events[_0x36d70e];var _0x259415=createListener('user:'+_0x2b58be,_0x4a26ed);UserEvents['on'](_0x2b58be,_0x259415);}};
\ No newline at end of file
+var _0xcbd7=['removeListener','register','user:','./user.events','save','remove','update','emit'];(function(_0x4d7b67,_0x5b3c9f){var _0x2d85e6=function(_0x4c1558){while(--_0x4c1558){_0x4d7b67['push'](_0x4d7b67['shift']());}};_0x2d85e6(++_0x5b3c9f);}(_0xcbd7,0x1a3));var _0x7cbd=function(_0x4b2888,_0x451c93){_0x4b2888=_0x4b2888-0x0;var _0x3278e1=_0xcbd7[_0x4b2888];return _0x3278e1;};'use strict';var UserEvents=require(_0x7cbd('0x0'));var events=[_0x7cbd('0x1'),_0x7cbd('0x2'),_0x7cbd('0x3')];function createListener(_0x2e014e,_0x3a0a1a){return function(_0x4f4099){_0x3a0a1a[_0x7cbd('0x4')](_0x2e014e,_0x4f4099);};}function removeListener(_0x9d2739,_0x21b971){return function(){UserEvents[_0x7cbd('0x5')](_0x9d2739,_0x21b971);};}exports[_0x7cbd('0x6')]=function(_0x5dc199){for(var _0x12c933=0x0,_0x4ca6d8=events['length'];_0x12c933<_0x4ca6d8;_0x12c933++){var _0x532419=events[_0x12c933];var _0x4f76b7=createListener(_0x7cbd('0x7')+_0x532419,_0x5dc199);UserEvents['on'](_0x532419,_0x4f76b7);}};
\ No newline at end of file
index 75ef6b9..96e0a11 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(_0x42acfc,_0x349f46){var _0x24b053=function(_0x49409e){while(--_0x49409e){_0x42acfc['push'](_0x42acfc['shift']());}};_0x24b053(++_0x349f46);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xa9e0[_0x4baae2];return _0x1a2285;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x4aa285,_0x1fe00d){var _0x2777ee=function(_0x181d0f){while(--_0x181d0f){_0x4aa285['push'](_0x4aa285['shift']());}};_0x2777ee(++_0x1fe00d);}(_0x9c44,0x178));var _0x49c4=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x9c44[_0x32f7d7];return _0x133d09;};'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 889c1b2..32d7af9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd99=['sequelize','exports','INTEGER'];(function(_0x26505e,_0x144bdb){var _0xa60fab=function(_0x1d458c){while(--_0x1d458c){_0x26505e['push'](_0x26505e['shift']());}};_0xa60fab(++_0x144bdb);}(_0xfd99,0x11a));var _0x9fd9=function(_0x4ff094,_0x13986b){_0x4ff094=_0x4ff094-0x0;var _0x3a7e2a=_0xfd99[_0x4ff094];return _0x3a7e2a;};'use strict';var Sequelize=require(_0x9fd9('0x0'));module[_0x9fd9('0x1')]={'penalty':{'type':Sequelize[_0x9fd9('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x66f7=['INTEGER','exports'];(function(_0x454599,_0x6018be){var _0xc33aee=function(_0x55e953){while(--_0x55e953){_0x454599['push'](_0x454599['shift']());}};_0xc33aee(++_0x6018be);}(_0x66f7,0x16b));var _0x766f=function(_0x3f3ad8,_0x4bc014){_0x3f3ad8=_0x3f3ad8-0x0;var _0x3a2667=_0x66f7[_0x3f3ad8];return _0x3a2667;};'use strict';var Sequelize=require('sequelize');module[_0x766f('0x0')]={'penalty':{'type':Sequelize[_0x766f('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 41245a0..6ab93c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f34=['moment','bluebird','request-promise','rimraf','../../config/environment','./userChatQueue.attributes','exports','define','UserChatQueue','user_has_chat_queues','lodash','util','../../config/logger'];(function(_0x3a520f,_0xea524f){var _0x33eb1c=function(_0x2729ba){while(--_0x2729ba){_0x3a520f['push'](_0x3a520f['shift']());}};_0x33eb1c(++_0xea524f);}(_0x0f34,0x1c4));var _0x40f3=function(_0x146214,_0x13482f){_0x146214=_0x146214-0x0;var _0x2c2acb=_0x0f34[_0x146214];return _0x2c2acb;};'use strict';var _=require(_0x40f3('0x0'));var util=require(_0x40f3('0x1'));var logger=require(_0x40f3('0x2'))('api');var moment=require(_0x40f3('0x3'));var BPromise=require(_0x40f3('0x4'));var rp=require(_0x40f3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x40f3('0x6'));var config=require(_0x40f3('0x7'));var attributes=require(_0x40f3('0x8'));module[_0x40f3('0x9')]=function(_0x1073ca,_0x1765b0){return _0x1073ca[_0x40f3('0xa')](_0x40f3('0xb'),attributes,{'tableName':_0x40f3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0f64=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','user_has_chat_queues'];(function(_0x4f1423,_0x13cc99){var _0x33c235=function(_0x48f704){while(--_0x48f704){_0x4f1423['push'](_0x4f1423['shift']());}};_0x33c235(++_0x13cc99);}(_0x0f64,0x84));var _0x40f6=function(_0x59ea32,_0x484649){_0x59ea32=_0x59ea32-0x0;var _0x27eacd=_0x0f64[_0x59ea32];return _0x27eacd;};'use strict';var _=require(_0x40f6('0x0'));var util=require('util');var logger=require(_0x40f6('0x1'))(_0x40f6('0x2'));var moment=require(_0x40f6('0x3'));var BPromise=require(_0x40f6('0x4'));var rp=require(_0x40f6('0x5'));var fs=require('fs');var path=require(_0x40f6('0x6'));var rimraf=require(_0x40f6('0x7'));var config=require(_0x40f6('0x8'));var attributes=require('./userChatQueue.attributes');module[_0x40f6('0x9')]=function(_0x32208a,_0x5d2da1){return _0x32208a[_0x40f6('0xa')]('UserChatQueue',attributes,{'tableName':_0x40f6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fef5eba..e193ded 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06f3=['http','request','then','info','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','UserChatQueue,\x20%s,\x20%s','message','result','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x2dd879,_0x2e620a){var _0x5c51b8=function(_0xddfd34){while(--_0xddfd34){_0x2dd879['push'](_0x2dd879['shift']());}};_0x5c51b8(++_0x2e620a);}(_0x06f3,0x7a));var _0x306f=function(_0x35bdcf,_0x21421c){_0x35bdcf=_0x35bdcf-0x0;var _0x5a4fc7=_0x06f3[_0x35bdcf];return _0x5a4fc7;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x306f('0x0'));var BPromise=require(_0x306f('0x1'));var rs=require(_0x306f('0x2'));var fs=require('fs');var Redis=require(_0x306f('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x306f('0x4'));var logger=require(_0x306f('0x5'))(_0x306f('0x6'));var config=require(_0x306f('0x7'));var jayson=require(_0x306f('0x8'));var client=jayson[_0x306f('0x9')][_0x306f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xea06aa,_0x43a4ea,_0x45edc2){return new BPromise(function(_0x498223,_0x58083b){return client[_0x306f('0xb')](_0xea06aa,_0x45edc2)[_0x306f('0xc')](function(_0x4e18bf){logger[_0x306f('0xd')]('UserChatQueue,\x20%s,\x20%s',_0x43a4ea,'request\x20sent');logger[_0x306f('0xe')](_0x306f('0xf'),_0x43a4ea,'request\x20sent',JSON[_0x306f('0x10')](_0x4e18bf));if(_0x4e18bf[_0x306f('0x11')]){if(_0x4e18bf['error']['code']===0x1f4){logger[_0x306f('0x11')](_0x306f('0x12'),_0x43a4ea,_0x4e18bf[_0x306f('0x11')]['message']);return _0x58083b(_0x4e18bf[_0x306f('0x11')]['message']);}logger['error'](_0x306f('0x12'),_0x43a4ea,_0x4e18bf[_0x306f('0x11')][_0x306f('0x13')]);return _0x498223(_0x4e18bf[_0x306f('0x11')][_0x306f('0x13')]);}else{logger[_0x306f('0xd')](_0x306f('0x12'),_0x43a4ea,'request\x20sent');_0x498223(_0x4e18bf[_0x306f('0x14')]['message']);}})[_0x306f('0x15')](function(_0x210f33){logger[_0x306f('0x11')](_0x306f('0x12'),_0x43a4ea,_0x210f33);_0x58083b(_0x210f33);});});}
\ No newline at end of file
+var _0xad30=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','UserChatQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','lodash','util','moment'];(function(_0x5d82d9,_0x3d7694){var _0x3dfd86=function(_0x53735e){while(--_0x53735e){_0x5d82d9['push'](_0x5d82d9['shift']());}};_0x3dfd86(++_0x3d7694);}(_0xad30,0xcf));var _0x0ad3=function(_0x30dfdb,_0x1e30b9){_0x30dfdb=_0x30dfdb-0x0;var _0x16f8dc=_0xad30[_0x30dfdb];return _0x16f8dc;};'use strict';var _=require(_0x0ad3('0x0'));var util=require(_0x0ad3('0x1'));var moment=require(_0x0ad3('0x2'));var BPromise=require('bluebird');var rs=require(_0x0ad3('0x3'));var fs=require('fs');var Redis=require(_0x0ad3('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0ad3('0x5'));var logger=require(_0x0ad3('0x6'))(_0x0ad3('0x7'));var config=require(_0x0ad3('0x8'));var jayson=require(_0x0ad3('0x9'));var client=jayson[_0x0ad3('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xddfe45,_0x209439,_0x1f4ec6){return new BPromise(function(_0x2ec5ca,_0x1c5c9c){return client[_0x0ad3('0xb')](_0xddfe45,_0x1f4ec6)[_0x0ad3('0xc')](function(_0xff9a33){logger['info'](_0x0ad3('0xd'),_0x209439,_0x0ad3('0xe'));logger['debug']('UserChatQueue,\x20%s,\x20%s,\x20%s',_0x209439,'request\x20sent',JSON[_0x0ad3('0xf')](_0xff9a33));if(_0xff9a33[_0x0ad3('0x10')]){if(_0xff9a33[_0x0ad3('0x10')][_0x0ad3('0x11')]===0x1f4){logger['error']('UserChatQueue,\x20%s,\x20%s',_0x209439,_0xff9a33[_0x0ad3('0x10')][_0x0ad3('0x12')]);return _0x1c5c9c(_0xff9a33[_0x0ad3('0x10')][_0x0ad3('0x12')]);}logger[_0x0ad3('0x10')](_0x0ad3('0xd'),_0x209439,_0xff9a33['error']['message']);return _0x2ec5ca(_0xff9a33[_0x0ad3('0x10')][_0x0ad3('0x12')]);}else{logger[_0x0ad3('0x13')](_0x0ad3('0xd'),_0x209439,_0x0ad3('0xe'));_0x2ec5ca(_0xff9a33[_0x0ad3('0x14')][_0x0ad3('0x12')]);}})['catch'](function(_0x3528b9){logger[_0x0ad3('0x10')](_0x0ad3('0xd'),_0x209439,_0x3528b9);_0x1c5c9c(_0x3528b9);});});}
\ No newline at end of file
index 8a31c39..e63a6b5 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(_0x300645,_0x329b0e){var _0x33afda=function(_0x404674){while(--_0x404674){_0x300645['push'](_0x300645['shift']());}};_0x33afda(++_0x329b0e);}(_0xedd9,0xfc));var _0x9edd=function(_0x2978c5,_0x2c91ee){_0x2978c5=_0x2978c5-0x0;var _0x39c76b=_0xedd9[_0x2978c5];return _0x39c76b;};'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(_0xd3bcf8,_0x994fdb){var _0x296170=function(_0x2f5519){while(--_0x2f5519){_0xd3bcf8['push'](_0xd3bcf8['shift']());}};_0x296170(++_0x994fdb);}(_0x9c44,0x178));var _0x49c4=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0x9c44[_0x2e4aa2];return _0x5e6092;};'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 38374d8..254933d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae90=['sequelize','INTEGER','STRING'];(function(_0x3655f6,_0x459cf3){var _0x32ac71=function(_0x24d681){while(--_0x24d681){_0x3655f6['push'](_0x3655f6['shift']());}};_0x32ac71(++_0x459cf3);}(_0xae90,0xb7));var _0x0ae9=function(_0x4d53bd,_0x3ae24f){_0x4d53bd=_0x4d53bd-0x0;var _0x222e56=_0xae90[_0x4d53bd];return _0x222e56;};'use strict';var Sequelize=require(_0x0ae9('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x0ae9('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x0ae9('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x0ae9('0x2')]}};
\ No newline at end of file
+var _0x2519=['INTEGER','STRING','sequelize','exports'];(function(_0x3cdb05,_0x5c4598){var _0x459517=function(_0x23de70){while(--_0x23de70){_0x3cdb05['push'](_0x3cdb05['shift']());}};_0x459517(++_0x5c4598);}(_0x2519,0xea));var _0x9251=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x2519[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x9251('0x0'));module[_0x9251('0x1')]={'penalty':{'type':Sequelize[_0x9251('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x9251('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x9251('0x3')]}};
\ No newline at end of file
index 4afe672..edd4012 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f65=['define','UserFaxQueue','user_has_fax_queues','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x1553e8,_0x3a82d8){var _0x52370c=function(_0x200212){while(--_0x200212){_0x1553e8['push'](_0x1553e8['shift']());}};_0x52370c(++_0x3a82d8);}(_0x1f65,0x16f));var _0x51f6=function(_0x4adf3a,_0x5f41e2){_0x4adf3a=_0x4adf3a-0x0;var _0x24dd3f=_0x1f65[_0x4adf3a];return _0x24dd3f;};'use strict';var _=require(_0x51f6('0x0'));var util=require(_0x51f6('0x1'));var logger=require('../../config/logger')(_0x51f6('0x2'));var moment=require(_0x51f6('0x3'));var BPromise=require(_0x51f6('0x4'));var rp=require(_0x51f6('0x5'));var fs=require('fs');var path=require(_0x51f6('0x6'));var rimraf=require(_0x51f6('0x7'));var config=require(_0x51f6('0x8'));var attributes=require('./userFaxQueue.attributes');module[_0x51f6('0x9')]=function(_0x30d8f6,_0x5116f0){return _0x30d8f6[_0x51f6('0xa')](_0x51f6('0xb'),attributes,{'tableName':_0x51f6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbabe=['./userFaxQueue.attributes','exports','define','UserFaxQueue','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x27f019,_0x160b9f){var _0x38b90d=function(_0x4a6b1a){while(--_0x4a6b1a){_0x27f019['push'](_0x27f019['shift']());}};_0x38b90d(++_0x160b9f);}(_0xbabe,0x7c));var _0xebab=function(_0x5136c4,_0x3b08ca){_0x5136c4=_0x5136c4-0x0;var _0x538167=_0xbabe[_0x5136c4];return _0x538167;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xebab('0x0'))(_0xebab('0x1'));var moment=require(_0xebab('0x2'));var BPromise=require(_0xebab('0x3'));var rp=require(_0xebab('0x4'));var fs=require('fs');var path=require(_0xebab('0x5'));var rimraf=require(_0xebab('0x6'));var config=require(_0xebab('0x7'));var attributes=require(_0xebab('0x8'));module[_0xebab('0x9')]=function(_0x5d00bc,_0x102ba8){return _0x5d00bc[_0xebab('0xa')](_0xebab('0xb'),attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8d46545..b6d44ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a26=['../../config/environment','jayson/promise','client','http','request','then','info','UserFaxQueue,\x20%s,\x20%s','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x154940,_0x4a448a){var _0x401409=function(_0x45cdcf){while(--_0x45cdcf){_0x154940['push'](_0x154940['shift']());}};_0x401409(++_0x4a448a);}(_0x2a26,0x123));var _0x62a2=function(_0x1b1365,_0x205568){_0x1b1365=_0x1b1365-0x0;var _0x5edfd8=_0x2a26[_0x1b1365];return _0x5edfd8;};'use strict';var _=require(_0x62a2('0x0'));var util=require(_0x62a2('0x1'));var moment=require(_0x62a2('0x2'));var BPromise=require(_0x62a2('0x3'));var rs=require(_0x62a2('0x4'));var fs=require('fs');var Redis=require(_0x62a2('0x5'));var db=require(_0x62a2('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x62a2('0x7'))('rpc');var config=require(_0x62a2('0x8'));var jayson=require(_0x62a2('0x9'));var client=jayson[_0x62a2('0xa')][_0x62a2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x20f4e4,_0x282c7f,_0x42346f){return new BPromise(function(_0x46ab0e,_0x3b91d7){return client[_0x62a2('0xc')](_0x20f4e4,_0x42346f)[_0x62a2('0xd')](function(_0x1eccf0){logger[_0x62a2('0xe')](_0x62a2('0xf'),_0x282c7f,'request\x20sent');logger[_0x62a2('0x10')]('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0x282c7f,'request\x20sent',JSON[_0x62a2('0x11')](_0x1eccf0));if(_0x1eccf0[_0x62a2('0x12')]){if(_0x1eccf0[_0x62a2('0x12')][_0x62a2('0x13')]===0x1f4){logger[_0x62a2('0x12')](_0x62a2('0xf'),_0x282c7f,_0x1eccf0['error'][_0x62a2('0x14')]);return _0x3b91d7(_0x1eccf0[_0x62a2('0x12')][_0x62a2('0x14')]);}logger[_0x62a2('0x12')](_0x62a2('0xf'),_0x282c7f,_0x1eccf0['error'][_0x62a2('0x14')]);return _0x46ab0e(_0x1eccf0['error'][_0x62a2('0x14')]);}else{logger[_0x62a2('0xe')](_0x62a2('0xf'),_0x282c7f,'request\x20sent');_0x46ab0e(_0x1eccf0[_0x62a2('0x15')][_0x62a2('0x14')]);}})[_0x62a2('0x16')](function(_0x3c04ca){logger[_0x62a2('0x12')](_0x62a2('0xf'),_0x282c7f,_0x3c04ca);_0x3b91d7(_0x3c04ca);});});}
\ No newline at end of file
+var _0xca83=['catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','UserFaxQueue,\x20%s,\x20%s','info','result'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0xca83,0x1b9));var _0x3ca8=function(_0x19b3f9,_0xade753){_0x19b3f9=_0x19b3f9-0x0;var _0x18c3f6=_0xca83[_0x19b3f9];return _0x18c3f6;};'use strict';var _=require('lodash');var util=require(_0x3ca8('0x0'));var moment=require(_0x3ca8('0x1'));var BPromise=require(_0x3ca8('0x2'));var rs=require(_0x3ca8('0x3'));var fs=require('fs');var Redis=require(_0x3ca8('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3ca8('0x5'));var logger=require(_0x3ca8('0x6'))(_0x3ca8('0x7'));var config=require(_0x3ca8('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x3ca8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xabf348,_0x38a8a0,_0x194022){return new BPromise(function(_0x4eb033,_0x3c1598){return client['request'](_0xabf348,_0x194022)['then'](function(_0x1d5aad){logger['info']('UserFaxQueue,\x20%s,\x20%s',_0x38a8a0,'request\x20sent');logger[_0x3ca8('0xa')](_0x3ca8('0xb'),_0x38a8a0,_0x3ca8('0xc'),JSON['stringify'](_0x1d5aad));if(_0x1d5aad[_0x3ca8('0xd')]){if(_0x1d5aad[_0x3ca8('0xd')][_0x3ca8('0xe')]===0x1f4){logger['error']('UserFaxQueue,\x20%s,\x20%s',_0x38a8a0,_0x1d5aad[_0x3ca8('0xd')][_0x3ca8('0xf')]);return _0x3c1598(_0x1d5aad[_0x3ca8('0xd')][_0x3ca8('0xf')]);}logger[_0x3ca8('0xd')](_0x3ca8('0x10'),_0x38a8a0,_0x1d5aad[_0x3ca8('0xd')][_0x3ca8('0xf')]);return _0x4eb033(_0x1d5aad[_0x3ca8('0xd')][_0x3ca8('0xf')]);}else{logger[_0x3ca8('0x11')](_0x3ca8('0x10'),_0x38a8a0,_0x3ca8('0xc'));_0x4eb033(_0x1d5aad[_0x3ca8('0x12')]['message']);}})[_0x3ca8('0x13')](function(_0x4a3446){logger[_0x3ca8('0xd')](_0x3ca8('0x10'),_0x38a8a0,_0x4a3446);_0x3c1598(_0x4a3446);});});}
\ No newline at end of file
index 6f9c8c2..f9a70ac 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(_0x27e83c,_0xe6fa23){var _0x20464c=function(_0x46b8ce){while(--_0x46b8ce){_0x27e83c['push'](_0x27e83c['shift']());}};_0x20464c(++_0xe6fa23);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xa9e0[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x3c691c,_0x2ab37a){var _0x1a8046=function(_0x10f5f8){while(--_0x10f5f8){_0x3c691c['push'](_0x3c691c['shift']());}};_0x1a8046(++_0x2ab37a);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x2c0ded,_0x3de22c){_0x2c0ded=_0x2c0ded-0x0;var _0x4473e5=_0xcb91[_0x2c0ded];return _0x4473e5;};'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 48add3f..98eba56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1744=['INTEGER','sequelize'];(function(_0x4127ad,_0x2f1373){var _0x370f68=function(_0x4e4768){while(--_0x4e4768){_0x4127ad['push'](_0x4127ad['shift']());}};_0x370f68(++_0x2f1373);}(_0x1744,0xa1));var _0x4174=function(_0x238a32,_0x596754){_0x238a32=_0x238a32-0x0;var _0x266ed5=_0x1744[_0x238a32];return _0x266ed5;};'use strict';var Sequelize=require(_0x4174('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x4174('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xff76=['INTEGER','exports'];(function(_0x87b0ff,_0x314389){var _0x3bc0b2=function(_0x41682b){while(--_0x41682b){_0x87b0ff['push'](_0x87b0ff['shift']());}};_0x3bc0b2(++_0x314389);}(_0xff76,0x125));var _0x6ff7=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0xff76[_0x4e9628];return _0x27bc8c;};'use strict';var Sequelize=require('sequelize');module[_0x6ff7('0x0')]={'penalty':{'type':Sequelize[_0x6ff7('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 30d16b5..b309752 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2f3=['lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./userMailQueue.attributes','define','UserMailQueue'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xb2f3,0x176));var _0x3b2f=function(_0x2c7618,_0x26be9c){_0x2c7618=_0x2c7618-0x0;var _0x5ce3f0=_0xb2f3[_0x2c7618];return _0x5ce3f0;};'use strict';var _=require(_0x3b2f('0x0'));var util=require(_0x3b2f('0x1'));var logger=require(_0x3b2f('0x2'))('api');var moment=require(_0x3b2f('0x3'));var BPromise=require('bluebird');var rp=require(_0x3b2f('0x4'));var fs=require('fs');var path=require(_0x3b2f('0x5'));var rimraf=require(_0x3b2f('0x6'));var config=require(_0x3b2f('0x7'));var attributes=require(_0x3b2f('0x8'));module['exports']=function(_0x17da01,_0x289a51){return _0x17da01[_0x3b2f('0x9')](_0x3b2f('0xa'),attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd30f=['user_has_mail_queues','lodash','moment','bluebird','request-promise','path','../../config/environment','UserMailQueue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd30f,0x111));var _0xfd30=function(_0x237798,_0x463ae9){_0x237798=_0x237798-0x0;var _0x3b50f6=_0xd30f[_0x237798];return _0x3b50f6;};'use strict';var _=require(_0xfd30('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xfd30('0x1'));var BPromise=require(_0xfd30('0x2'));var rp=require(_0xfd30('0x3'));var fs=require('fs');var path=require(_0xfd30('0x4'));var rimraf=require('rimraf');var config=require(_0xfd30('0x5'));var attributes=require('./userMailQueue.attributes');module['exports']=function(_0x3ab311,_0x5b56b2){return _0x3ab311['define'](_0xfd30('0x6'),attributes,{'tableName':_0xfd30('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d3ae3bd..c5cddec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','stringify','error','code','message','UserMailQueue,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x21eb31,_0x3077b2){var _0x510ef9=function(_0x2ac719){while(--_0x2ac719){_0x21eb31['push'](_0x21eb31['shift']());}};_0x510ef9(++_0x3077b2);}(_0x5fc3,0xa8));var _0x35fc=function(_0x212bf5,_0x165cbd){_0x212bf5=_0x212bf5-0x0;var _0xfcad21=_0x5fc3[_0x212bf5];return _0xfcad21;};'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')]('UserMailQueue,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('UserMailQueue,\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']('UserMailQueue,\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);});});}
\ 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(_0x30413a,_0x2120da){var _0x33f109=function(_0x4b00af){while(--_0x4b00af){_0x30413a['push'](_0x30413a['shift']());}};_0x33f109(++_0x2120da);}(_0x4b84,0x1cc));var _0x44b8=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0x4b84[_0x1b349a];return _0x5d1f7c;};'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 e48f2c7..1804f28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a66=['multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller','post','isAuthenticated','sendUserNotification'];(function(_0x333eab,_0x134ea2){var _0x38d9f1=function(_0x36b062){while(--_0x36b062){_0x333eab['push'](_0x333eab['shift']());}};_0x38d9f1(++_0x134ea2);}(_0x1a66,0x90));var _0x61a6=function(_0x70af04,_0x3e91f7){_0x70af04=_0x70af04-0x0;var _0x7b85bc=_0x1a66[_0x70af04];return _0x7b85bc;};'use strict';var multer=require(_0x61a6('0x0'));var util=require(_0x61a6('0x1'));var path=require(_0x61a6('0x2'));var timeout=require(_0x61a6('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x61a6('0x4'));var auth=require(_0x61a6('0x5'));var interaction=require(_0x61a6('0x6'));var config=require(_0x61a6('0x7'));var controller=require(_0x61a6('0x8'));router[_0x61a6('0x9')]('/',auth[_0x61a6('0xa')](),controller[_0x61a6('0xb')]);module['exports']=router;
\ No newline at end of file
+var _0x2675=['express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','sendUserNotification','exports','util','path','connect-timeout'];(function(_0x791b5a,_0x22a118){var _0x1295ea=function(_0x560862){while(--_0x560862){_0x791b5a['push'](_0x791b5a['shift']());}};_0x1295ea(++_0x22a118);}(_0x2675,0xf7));var _0x5267=function(_0x27c294,_0x2c5f3e){_0x27c294=_0x27c294-0x0;var _0x205171=_0x2675[_0x27c294];return _0x205171;};'use strict';var multer=require('multer');var util=require(_0x5267('0x0'));var path=require(_0x5267('0x1'));var timeout=require(_0x5267('0x2'));var express=require(_0x5267('0x3'));var router=express['Router']();var fs_extra=require(_0x5267('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5267('0x5'));var config=require(_0x5267('0x6'));var controller=require('./userNotification.controller');router['post']('/',auth[_0x5267('0x7')](),controller[_0x5267('0x8')]);module[_0x5267('0x9')]=router;
\ No newline at end of file
index 326e2d5..4addb34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70c1=['STRING','exports'];(function(_0x1b2434,_0x3d2a37){var _0x3f85cf=function(_0x5545be){while(--_0x5545be){_0x1b2434['push'](_0x1b2434['shift']());}};_0x3f85cf(++_0x3d2a37);}(_0x70c1,0x115));var _0x170c=function(_0x240aab,_0x2c142d){_0x240aab=_0x240aab-0x0;var _0x29c033=_0x70c1[_0x240aab];return _0x29c033;};'use strict';var Sequelize=require('sequelize');module[_0x170c('0x0')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0x170c('0x1')]},'recipientsId':{'type':Sequelize['TEXT']},'recipientsDescription':{'type':Sequelize[_0x170c('0x1')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
+var _0x40d6=['sequelize','exports','TEXT','STRING','BOOLEAN'];(function(_0x19c43e,_0xbdd218){var _0x54e51c=function(_0x43829d){while(--_0x43829d){_0x19c43e['push'](_0x19c43e['shift']());}};_0x54e51c(++_0xbdd218);}(_0x40d6,0x1a9));var _0x640d=function(_0x51b1b3,_0x5c46a3){_0x51b1b3=_0x51b1b3-0x0;var _0x196257=_0x40d6[_0x51b1b3];return _0x196257;};'use strict';var Sequelize=require(_0x640d('0x0'));module[_0x640d('0x1')]={'body':{'type':Sequelize[_0x640d('0x2')]},'senderName':{'type':Sequelize[_0x640d('0x3')]},'recipientsId':{'type':Sequelize['TEXT']},'recipientsDescription':{'type':Sequelize[_0x640d('0x3')]},'beep':{'type':Sequelize[_0x640d('0x4')]}};
\ No newline at end of file
index f2d2cb8..78e642e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19d7=['recipient','emit','catch','Template','findOne','html','render','startCase','User','union','ids','queue','replace','push','all','flatten','getAgents','map','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./userNotification.socket','sendStatus','status','end','json','limit','undefined','count','offset','set','apply','update','destroy','stack','name','send','sendUserNotification','body','text','hasOwnProperty','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','error','chatqueue','mailqueue','voicequeue','whatsappqueue','team','user','includes','model','toLowerCase','senderName','fullname','recipientsDescription','isEmpty','SenderId','then','recipientsId','sortBy','sequelize','transaction','UserNotification','create','beep','forEach'];(function(_0x3e9343,_0x4d10ac){var _0x4282ee=function(_0x50b615){while(--_0x50b615){_0x3e9343['push'](_0x3e9343['shift']());}};_0x4282ee(++_0x4d10ac);}(_0x19d7,0x135));var _0x719d=function(_0x189436,_0x15fc22){_0x189436=_0x189436-0x0;var _0x56d5de=_0x19d7[_0x189436];return _0x56d5de;};'use strict';var emlformat=require(_0x719d('0x0'));var rimraf=require(_0x719d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x719d('0x2'));var rp=require(_0x719d('0x3'));var moment=require(_0x719d('0x4'));var BPromise=require(_0x719d('0x5'));var Mustache=require(_0x719d('0x6'));var util=require(_0x719d('0x7'));var path=require('path');var sox=require(_0x719d('0x8'));var csv=require(_0x719d('0x9'));var ejs=require(_0x719d('0xa'));var fs=require('fs');var fs_extra=require(_0x719d('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x719d('0xc'));var deskjs=require(_0x719d('0xd'));var toCsv=require(_0x719d('0x9'));var querystring=require(_0x719d('0xe'));var Papa=require(_0x719d('0xf'));var Redis=require(_0x719d('0x10'));var authService=require(_0x719d('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x719d('0x12'));var hardwareService=require(_0x719d('0x13'));var logger=require(_0x719d('0x14'))(_0x719d('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x719d('0x16'));var db=require(_0x719d('0x17'))['db'];config[_0x719d('0x18')]=_[_0x719d('0x19')](config[_0x719d('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x719d('0x1a'))(new Redis(config[_0x719d('0x18')]));require(_0x719d('0x1b'))['register'](socket);function respondWithStatusCode(_0x85e4be,_0x368fc1){_0x368fc1=_0x368fc1||0xcc;return function(_0x29d825){if(_0x29d825){return _0x85e4be[_0x719d('0x1c')](_0x368fc1);}return _0x85e4be[_0x719d('0x1d')](_0x368fc1)[_0x719d('0x1e')]();};}function respondWithResult(_0x26a480,_0x168cc2){_0x168cc2=_0x168cc2||0xc8;return function(_0x2cd587){if(_0x2cd587){return _0x26a480['status'](_0x168cc2)[_0x719d('0x1f')](_0x2cd587);}};}function respondWithFilteredResult(_0x2d0916,_0x11faf2){return function(_0x326749){if(_0x326749){var _0x3e1265=typeof _0x11faf2['offset']==='undefined'&&typeof _0x11faf2[_0x719d('0x20')]===_0x719d('0x21');var _0x2fa01f=_0x326749['count'];var _0x22debc=_0x3e1265?0x0:_0x11faf2['offset'];var _0x21b3a1=_0x3e1265?_0x326749[_0x719d('0x22')]:_0x11faf2[_0x719d('0x23')]+_0x11faf2[_0x719d('0x20')];var _0x439fe3;if(_0x21b3a1>=_0x2fa01f){_0x21b3a1=_0x2fa01f;_0x439fe3=0xc8;}else{_0x439fe3=0xce;}_0x2d0916[_0x719d('0x1d')](_0x439fe3);return _0x2d0916[_0x719d('0x24')]('Content-Range',_0x22debc+'-'+_0x21b3a1+'/'+_0x2fa01f)[_0x719d('0x1f')](_0x326749);}return null;};}function patchUpdates(_0x48b324){return function(_0x1efda4){try{jsonpatch[_0x719d('0x25')](_0x1efda4,_0x48b324,!![]);}catch(_0x5a2136){return BPromise['reject'](_0x5a2136);}return _0x1efda4['save']();};}function saveUpdates(_0x5cc8c2,_0x287fa8){return function(_0x5cee9e){if(_0x5cee9e){return _0x5cee9e[_0x719d('0x26')](_0x5cc8c2)['then'](function(_0xca4b9e){return _0xca4b9e;});}return null;};}function removeEntity(_0x3c8830,_0x2c6bb6){return function(_0xc1c6c5){if(_0xc1c6c5){return _0xc1c6c5[_0x719d('0x27')]()['then'](function(){_0x3c8830[_0x719d('0x1d')](0xcc)[_0x719d('0x1e')]();});}};}function handleEntityNotFound(_0x2dae57,_0x1f1f01){return function(_0x54b40b){if(!_0x54b40b){_0x2dae57[_0x719d('0x1c')](0x194);}return _0x54b40b;};}function handleError(_0x16c97f,_0xa908b){_0xa908b=_0xa908b||0x1f4;return function(_0x56ea7e){logger['error'](_0x56ea7e[_0x719d('0x28')]);if(_0x56ea7e[_0x719d('0x29')]){delete _0x56ea7e[_0x719d('0x29')];}_0x16c97f['status'](_0xa908b)[_0x719d('0x2a')](_0x56ea7e);};}exports[_0x719d('0x2b')]=function(_0x58b9db,_0x5eb5a7,_0x2dbacf){if(!_0x58b9db[_0x719d('0x2c')]['hasOwnProperty'](_0x719d('0x2d'))&&!_0x58b9db[_0x719d('0x2c')][_0x719d('0x2e')](_0x719d('0x2f'))){throw new db[(_0x719d('0x30'))][(_0x719d('0x31'))](_0x719d('0x32'));}else{if(_0x58b9db['body']['hasOwnProperty'](_0x719d('0x2f'))&&!_0x58b9db[_0x719d('0x2c')][_0x719d('0x2e')](_0x719d('0x33'))){throw new db[(_0x719d('0x30'))][(_0x719d('0x31'))](_0x719d('0x34'));}if(!_0x58b9db[_0x719d('0x2c')][_0x719d('0x2e')](_0x719d('0x35'))){throw new db['Sequelize'][(_0x719d('0x31'))](_0x719d('0x36'));}else{try{var _0x44d8ac=JSON['parse'](_0x58b9db[_0x719d('0x2c')][_0x719d('0x35')]);}catch(_0x1f253e){logger[_0x719d('0x37')](_0x1f253e);throw new db[(_0x719d('0x30'))]['ValidationError']('Invalid\x20\x27recipients\x27\x20object');}var _0x1a9d97=[_0x719d('0x38'),'faxqueue',_0x719d('0x39'),'openchannelqueue','smsqueue',_0x719d('0x3a'),_0x719d('0x3b'),_0x719d('0x3c'),_0x719d('0x3d')];if(_['some'](_0x44d8ac,function(_0x41558d){return!_[_0x719d('0x3e')](_0x1a9d97,_0x41558d[_0x719d('0x3f')][_0x719d('0x40')]());})){throw new db['Sequelize']['ValidationError']('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x13160f={};_0x13160f['senderName']=_0x58b9db[_0x719d('0x2c')][_0x719d('0x2e')](_0x719d('0x41'))?_0x58b9db['body'][_0x719d('0x41')]:_0x58b9db[_0x719d('0x3d')][_0x719d('0x42')];_0x13160f[_0x719d('0x43')]=_[_0x719d('0x44')](_0x58b9db['body'][_0x719d('0x43')])?null:_0x58b9db['body']['recipientsDescription'];_0x13160f['beep']=_0x58b9db[_0x719d('0x2c')]['beep']||![];_0x13160f[_0x719d('0x45')]=_0x58b9db[_0x719d('0x3d')]['id'];return getContent(_0x58b9db[_0x719d('0x2c')])[_0x719d('0x46')](function(_0x4fc25d){_0x13160f[_0x719d('0x2c')]=_0x4fc25d;return getRecipients(_0x44d8ac);})[_0x719d('0x46')](function(_0x3cb7c1){_0x13160f[_0x719d('0x47')]=_[_0x719d('0x48')](_0x3cb7c1)['join'](',');return db[_0x719d('0x49')][_0x719d('0x4a')](function(_0x5d8d45){return db[_0x719d('0x4b')][_0x719d('0x4c')](_0x13160f,{'raw':!![],'transaction':_0x5d8d45})[_0x719d('0x46')](function(_0x24a4f3){var _0x46f3b0={'sender':_0x13160f[_0x719d('0x41')],'description':_0x13160f[_0x719d('0x43')],'content':_0x13160f[_0x719d('0x2c')],'beep':_0x13160f[_0x719d('0x4d')]};_0x3cb7c1[_0x719d('0x4e')](function(_0x14bc40){_0x46f3b0[_0x719d('0x4f')]=_0x14bc40;socket[_0x719d('0x50')]('userNotification:send',_0x46f3b0);});return _0x24a4f3;});});})[_0x719d('0x46')](respondWithResult(_0x5eb5a7,0xc9))[_0x719d('0x51')](handleError(_0x5eb5a7,null));};function getContent(_0x3ffb7b){return new BPromise(function(_0x73ed6,_0x380cb9){if(_0x3ffb7b[_0x719d('0x2d')]){_0x73ed6(_0x3ffb7b['text']);return;}return db[_0x719d('0x52')][_0x719d('0x53')]({'attributes':[_0x719d('0x54')],'where':{'id':_0x3ffb7b['TemplateId']},'raw':!![]})[_0x719d('0x46')](function(_0x3691d4){if(!_0x3691d4)throw new db[(_0x719d('0x30'))][(_0x719d('0x31'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x2d4a2c=Mustache[_0x719d('0x55')](_0x3691d4[_0x719d('0x54')],_0x3ffb7b[_0x719d('0x33')]);_0x73ed6(_0x2d4a2c);})[_0x719d('0x51')](function(_0x5c27d5){_0x380cb9(_0x5c27d5);});});}function getRecipients(_0x5b7321){return new BPromise(function(_0x93bacc,_0x24c739){var _0x1859b1=[];var _0x5401cc=[];_0x5b7321[_0x719d('0x4e')](function(_0x2fc5c1){var _0x3f1ddc=_[_0x719d('0x56')](_0x2fc5c1['model'][_0x719d('0x40')]());if(_0x3f1ddc===_0x719d('0x57')){_0x1859b1=_[_0x719d('0x58')](_0x1859b1,_0x2fc5c1[_0x719d('0x59')]);}else{if(_[_0x719d('0x3e')](_0x3f1ddc,_0x719d('0x5a')))_0x3f1ddc=_0x3f1ddc[_0x719d('0x5b')](_0x719d('0x5a'),'Queue');_0x2fc5c1['ids'][_0x719d('0x4e')](function(_0x557a44){_0x5401cc[_0x719d('0x5c')](getAgents(_0x3f1ddc,_0x557a44));});}});return BPromise[_0x719d('0x5d')](_0x5401cc)[_0x719d('0x46')](function(_0xdc1d6b){_0x1859b1=_[_0x719d('0x58')](_0x1859b1,_[_0x719d('0x5e')](_0xdc1d6b));_0x93bacc(_0x1859b1);})[_0x719d('0x51')](function(_0x822ded){_0x24c739(_0x822ded);});});}function getAgents(_0x5bf87f,_0x4afbb2){return new BPromise(function(_0x4197bb,_0x587f5b){return db[_0x5bf87f][_0x719d('0x53')]({'where':{'id':_0x4afbb2}})[_0x719d('0x46')](function(_0x432f80){return _0x432f80[_0x719d('0x5f')]({'attributes':['id'],'raw':!![]})[_0x719d('0x46')](function(_0x522d50){var _0x246583=_[_0x719d('0x60')](_0x522d50,'id');_0x4197bb(_0x246583);});})[_0x719d('0x51')](function(_0x44fa9b){_0x587f5b(_0x44fa9b);});});}
\ No newline at end of file
+var _0xdc1d=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./userNotification.socket','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','error','stack','name','send','sendUserNotification','body','hasOwnProperty','text','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','recipients','Sequelize','parse','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','team','user','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','transaction','UserNotification','create','emit','userNotification:send','catch','Template','findOne','render','forEach','startCase','union','ids','queue','replace','Queue','push','all','flatten','map','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api'];(function(_0x3ddb85,_0x412868){var _0x173b4c=function(_0x30af66){while(--_0x30af66){_0x3ddb85['push'](_0x3ddb85['shift']());}};_0x173b4c(++_0x412868);}(_0xdc1d,0x1d9));var _0xddc1=function(_0x3615ed,_0x4eef00){_0x3615ed=_0x3615ed-0x0;var _0x485831=_0xdc1d[_0x3615ed];return _0x485831;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xddc1('0x0'));var zipdir=require(_0xddc1('0x1'));var jsonpatch=require(_0xddc1('0x2'));var rp=require(_0xddc1('0x3'));var moment=require(_0xddc1('0x4'));var BPromise=require(_0xddc1('0x5'));var Mustache=require(_0xddc1('0x6'));var util=require(_0xddc1('0x7'));var path=require(_0xddc1('0x8'));var sox=require('sox');var csv=require(_0xddc1('0x9'));var ejs=require(_0xddc1('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xddc1('0xb'));var squel=require(_0xddc1('0xc'));var crypto=require(_0xddc1('0xd'));var jsforce=require(_0xddc1('0xe'));var deskjs=require(_0xddc1('0xf'));var toCsv=require(_0xddc1('0x9'));var querystring=require(_0xddc1('0x10'));var Papa=require(_0xddc1('0x11'));var Redis=require(_0xddc1('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xddc1('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xddc1('0x14'));var logger=require('../../config/logger')(_0xddc1('0x15'));var utils=require(_0xddc1('0x16'));var config=require(_0xddc1('0x17'));var licenseUtil=require(_0xddc1('0x18'));var db=require(_0xddc1('0x19'))['db'];config['redis']=_['defaults'](config[_0xddc1('0x1a')],{'host':_0xddc1('0x1b'),'port':0x18eb});var socket=require(_0xddc1('0x1c'))(new Redis(config[_0xddc1('0x1a')]));require(_0xddc1('0x1d'))['register'](socket);function respondWithStatusCode(_0x4dc4db,_0x186489){_0x186489=_0x186489||0xcc;return function(_0x3e2e05){if(_0x3e2e05){return _0x4dc4db['sendStatus'](_0x186489);}return _0x4dc4db['status'](_0x186489)[_0xddc1('0x1e')]();};}function respondWithResult(_0x1da8f2,_0x363800){_0x363800=_0x363800||0xc8;return function(_0x22220e){if(_0x22220e){return _0x1da8f2[_0xddc1('0x1f')](_0x363800)[_0xddc1('0x20')](_0x22220e);}};}function respondWithFilteredResult(_0x597014,_0x1b496b){return function(_0x13f5d2){if(_0x13f5d2){var _0x32273e=typeof _0x1b496b[_0xddc1('0x21')]==='undefined'&&typeof _0x1b496b[_0xddc1('0x22')]===_0xddc1('0x23');var _0x277d55=_0x13f5d2[_0xddc1('0x24')];var _0x4834ec=_0x32273e?0x0:_0x1b496b[_0xddc1('0x21')];var _0x229f97=_0x32273e?_0x13f5d2[_0xddc1('0x24')]:_0x1b496b[_0xddc1('0x21')]+_0x1b496b[_0xddc1('0x22')];var _0x4ab3db;if(_0x229f97>=_0x277d55){_0x229f97=_0x277d55;_0x4ab3db=0xc8;}else{_0x4ab3db=0xce;}_0x597014[_0xddc1('0x1f')](_0x4ab3db);return _0x597014[_0xddc1('0x25')](_0xddc1('0x26'),_0x4834ec+'-'+_0x229f97+'/'+_0x277d55)[_0xddc1('0x20')](_0x13f5d2);}return null;};}function patchUpdates(_0x4914fa){return function(_0x5c438b){try{jsonpatch[_0xddc1('0x27')](_0x5c438b,_0x4914fa,!![]);}catch(_0x4bed5a){return BPromise[_0xddc1('0x28')](_0x4bed5a);}return _0x5c438b['save']();};}function saveUpdates(_0xa4ae9c,_0x4dcf7d){return function(_0x3fdaf4){if(_0x3fdaf4){return _0x3fdaf4[_0xddc1('0x29')](_0xa4ae9c)[_0xddc1('0x2a')](function(_0x50e6c7){return _0x50e6c7;});}return null;};}function removeEntity(_0x1d3288,_0x7b0199){return function(_0x1a8fb4){if(_0x1a8fb4){return _0x1a8fb4['destroy']()['then'](function(){_0x1d3288['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x23aa91,_0x31e13b){return function(_0x40eebe){if(!_0x40eebe){_0x23aa91['sendStatus'](0x194);}return _0x40eebe;};}function handleError(_0x2ef25c,_0x46aac3){_0x46aac3=_0x46aac3||0x1f4;return function(_0x29c916){logger[_0xddc1('0x2b')](_0x29c916[_0xddc1('0x2c')]);if(_0x29c916[_0xddc1('0x2d')]){delete _0x29c916[_0xddc1('0x2d')];}_0x2ef25c['status'](_0x46aac3)[_0xddc1('0x2e')](_0x29c916);};}exports[_0xddc1('0x2f')]=function(_0x2eda99,_0x4c1f73,_0x1c84a1){if(!_0x2eda99[_0xddc1('0x30')][_0xddc1('0x31')](_0xddc1('0x32'))&&!_0x2eda99[_0xddc1('0x30')]['hasOwnProperty']('TemplateId')){throw new db['Sequelize'][(_0xddc1('0x33'))](_0xddc1('0x34'));}else{if(_0x2eda99[_0xddc1('0x30')][_0xddc1('0x31')]('TemplateId')&&!_0x2eda99[_0xddc1('0x30')]['hasOwnProperty'](_0xddc1('0x35'))){throw new db['Sequelize'][(_0xddc1('0x33'))](_0xddc1('0x36'));}if(!_0x2eda99[_0xddc1('0x30')][_0xddc1('0x31')](_0xddc1('0x37'))){throw new db[(_0xddc1('0x38'))][(_0xddc1('0x33'))]('Missing\x20\x27recipients\x27\x20parameter');}else{try{var _0x20f8da=JSON[_0xddc1('0x39')](_0x2eda99[_0xddc1('0x30')][_0xddc1('0x37')]);}catch(_0x3e49a2){logger[_0xddc1('0x2b')](_0x3e49a2);throw new db[(_0xddc1('0x38'))]['ValidationError']('Invalid\x20\x27recipients\x27\x20object');}var _0x21a9ca=[_0xddc1('0x3a'),_0xddc1('0x3b'),_0xddc1('0x3c'),_0xddc1('0x3d'),_0xddc1('0x3e'),'voicequeue','whatsappqueue',_0xddc1('0x3f'),_0xddc1('0x40')];if(_[_0xddc1('0x41')](_0x20f8da,function(_0x348471){return!_[_0xddc1('0x42')](_0x21a9ca,_0x348471[_0xddc1('0x43')][_0xddc1('0x44')]());})){throw new db[(_0xddc1('0x38'))][(_0xddc1('0x33'))](_0xddc1('0x45'));}}}var _0x861787={};_0x861787[_0xddc1('0x46')]=_0x2eda99[_0xddc1('0x30')][_0xddc1('0x31')](_0xddc1('0x46'))?_0x2eda99[_0xddc1('0x30')][_0xddc1('0x46')]:_0x2eda99[_0xddc1('0x40')][_0xddc1('0x47')];_0x861787[_0xddc1('0x48')]=_[_0xddc1('0x49')](_0x2eda99['body'][_0xddc1('0x48')])?null:_0x2eda99['body'][_0xddc1('0x48')];_0x861787[_0xddc1('0x4a')]=_0x2eda99[_0xddc1('0x30')][_0xddc1('0x4a')]||![];_0x861787[_0xddc1('0x4b')]=_0x2eda99[_0xddc1('0x40')]['id'];return getContent(_0x2eda99['body'])[_0xddc1('0x2a')](function(_0x2dcc8c){_0x861787[_0xddc1('0x30')]=_0x2dcc8c;return getRecipients(_0x20f8da);})[_0xddc1('0x2a')](function(_0x8f912e){_0x861787[_0xddc1('0x4c')]=_[_0xddc1('0x4d')](_0x8f912e)[_0xddc1('0x4e')](',');return db['sequelize'][_0xddc1('0x4f')](function(_0x26fd16){return db[_0xddc1('0x50')][_0xddc1('0x51')](_0x861787,{'raw':!![],'transaction':_0x26fd16})[_0xddc1('0x2a')](function(_0x3c1ac2){var _0xa1e465={'sender':_0x861787[_0xddc1('0x46')],'description':_0x861787[_0xddc1('0x48')],'content':_0x861787['body'],'beep':_0x861787[_0xddc1('0x4a')]};_0x8f912e['forEach'](function(_0x2e9d21){_0xa1e465['recipient']=_0x2e9d21;socket[_0xddc1('0x52')](_0xddc1('0x53'),_0xa1e465);});return _0x3c1ac2;});});})['then'](respondWithResult(_0x4c1f73,0xc9))[_0xddc1('0x54')](handleError(_0x4c1f73,null));};function getContent(_0x31831b){return new BPromise(function(_0x491ee4,_0x577182){if(_0x31831b['text']){_0x491ee4(_0x31831b[_0xddc1('0x32')]);return;}return db[_0xddc1('0x55')][_0xddc1('0x56')]({'attributes':['html'],'where':{'id':_0x31831b['TemplateId']},'raw':!![]})[_0xddc1('0x2a')](function(_0x283d4a){if(!_0x283d4a)throw new db[(_0xddc1('0x38'))][(_0xddc1('0x33'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x3f76b9=Mustache[_0xddc1('0x57')](_0x283d4a['html'],_0x31831b[_0xddc1('0x35')]);_0x491ee4(_0x3f76b9);})[_0xddc1('0x54')](function(_0x450ba9){_0x577182(_0x450ba9);});});}function getRecipients(_0x2a3492){return new BPromise(function(_0x6ae7a2,_0x58e021){var _0x2d5158=[];var _0x547a90=[];_0x2a3492[_0xddc1('0x58')](function(_0x71f6d3){var _0xbb1bbe=_[_0xddc1('0x59')](_0x71f6d3['model'][_0xddc1('0x44')]());if(_0xbb1bbe==='User'){_0x2d5158=_[_0xddc1('0x5a')](_0x2d5158,_0x71f6d3[_0xddc1('0x5b')]);}else{if(_[_0xddc1('0x42')](_0xbb1bbe,_0xddc1('0x5c')))_0xbb1bbe=_0xbb1bbe[_0xddc1('0x5d')](_0xddc1('0x5c'),_0xddc1('0x5e'));_0x71f6d3[_0xddc1('0x5b')]['forEach'](function(_0x423d84){_0x547a90[_0xddc1('0x5f')](getAgents(_0xbb1bbe,_0x423d84));});}});return BPromise[_0xddc1('0x60')](_0x547a90)['then'](function(_0x511b2c){_0x2d5158=_['union'](_0x2d5158,_[_0xddc1('0x61')](_0x511b2c));_0x6ae7a2(_0x2d5158);})['catch'](function(_0x1ce9e1){_0x58e021(_0x1ce9e1);});});}function getAgents(_0x1c2d17,_0x3baeec){return new BPromise(function(_0x319ba6,_0x4fcdac){return db[_0x1c2d17][_0xddc1('0x56')]({'where':{'id':_0x3baeec}})[_0xddc1('0x2a')](function(_0x1a694c){return _0x1a694c['getAgents']({'attributes':['id'],'raw':!![]})[_0xddc1('0x2a')](function(_0x5c9453){var _0x2d026f=_[_0xddc1('0x62')](_0x5c9453,'id');_0x319ba6(_0x2d026f);});})[_0xddc1('0x54')](function(_0x223ec4){_0x4fcdac(_0x223ec4);});});}
\ No newline at end of file
index c99f17c..ee789f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf788=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserNotification'];(function(_0x373dee,_0x1a8c45){var _0x46798f=function(_0xc389f0){while(--_0xc389f0){_0x373dee['push'](_0x373dee['shift']());}};_0x46798f(++_0x1a8c45);}(_0xf788,0x8c));var _0x8f78=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0xf788[_0x550d12];return _0x12103d;};'use strict';var EventEmitter=require(_0x8f78('0x0'));var UserNotification=require(_0x8f78('0x1'))['db'][_0x8f78('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x8f78('0x3')](0x0);var events={'afterCreate':_0x8f78('0x4'),'afterUpdate':_0x8f78('0x5'),'afterDestroy':_0x8f78('0x6')};function emitEvent(_0xc1ea3c){return function(_0x2bc4ba,_0x492d03,_0x3a6707){UserNotificationEvents[_0x8f78('0x7')](_0xc1ea3c+':'+_0x2bc4ba['id'],_0x2bc4ba);UserNotificationEvents[_0x8f78('0x7')](_0xc1ea3c,_0x2bc4ba);_0x3a6707(null);};}for(var e in events){if(events[_0x8f78('0x8')](e)){var event=events[e];UserNotification[_0x8f78('0x9')](e,emitEvent(event));}}module[_0x8f78('0xa')]=UserNotificationEvents;
\ No newline at end of file
+var _0x1035=['UserNotification','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x389a12,_0x41a036){var _0x1db8a9=function(_0x273f40){while(--_0x273f40){_0x389a12['push'](_0x389a12['shift']());}};_0x1db8a9(++_0x41a036);}(_0x1035,0x8a));var _0x5103=function(_0x2c98f5,_0x3505bd){_0x2c98f5=_0x2c98f5-0x0;var _0x1d5794=_0x1035[_0x2c98f5];return _0x1d5794;};'use strict';var EventEmitter=require(_0x5103('0x0'));var UserNotification=require(_0x5103('0x1'))['db'][_0x5103('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x5103('0x3')](0x0);var events={'afterCreate':_0x5103('0x4'),'afterUpdate':_0x5103('0x5'),'afterDestroy':'remove'};function emitEvent(_0x5a4422){return function(_0x54c8ea,_0x31c9a0,_0x4669f2){UserNotificationEvents[_0x5103('0x6')](_0x5a4422+':'+_0x54c8ea['id'],_0x54c8ea);UserNotificationEvents[_0x5103('0x6')](_0x5a4422,_0x54c8ea);_0x4669f2(null);};}for(var e in events){if(events[_0x5103('0x7')](e)){var event=events[e];UserNotification[_0x5103('0x8')](e,emitEvent(event));}}module[_0x5103('0x9')]=UserNotificationEvents;
\ No newline at end of file
index 53c63d7..a7b5387 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb18=['rimraf','exports','define','UserNotification','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0xdb18,0x14a));var _0x8db1=function(_0x40617e,_0x45f18c){_0x40617e=_0x40617e-0x0;var _0x10e3c3=_0xdb18[_0x40617e];return _0x10e3c3;};'use strict';var _=require(_0x8db1('0x0'));var util=require(_0x8db1('0x1'));var logger=require(_0x8db1('0x2'))(_0x8db1('0x3'));var moment=require(_0x8db1('0x4'));var BPromise=require(_0x8db1('0x5'));var rp=require(_0x8db1('0x6'));var fs=require('fs');var path=require(_0x8db1('0x7'));var rimraf=require(_0x8db1('0x8'));var config=require('../../config/environment');var attributes=require('./userNotification.attributes');module[_0x8db1('0x9')]=function(_0x20959c,_0x18dc49){return _0x20959c[_0x8db1('0xa')](_0x8db1('0xb'),attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x8db1('0xc')});};
\ No newline at end of file
+var _0xf93f=['path','rimraf','../../config/environment','./userNotification.attributes','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','moment'];(function(_0x169e6c,_0x25a025){var _0x3d1479=function(_0x883058){while(--_0x883058){_0x169e6c['push'](_0x169e6c['shift']());}};_0x3d1479(++_0x25a025);}(_0xf93f,0x97));var _0xff93=function(_0x114728,_0x5188e1){_0x114728=_0x114728-0x0;var _0x2e7f57=_0xf93f[_0x114728];return _0x2e7f57;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xff93('0x0'))(_0xff93('0x1'));var moment=require(_0xff93('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xff93('0x3'));var rimraf=require(_0xff93('0x4'));var config=require(_0xff93('0x5'));var attributes=require(_0xff93('0x6'));module['exports']=function(_0x4e5b5e,_0x19343b){return _0x4e5b5e['define'](_0xff93('0x7'),attributes,{'tableName':_0xff93('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xff93('0x9'),'collate':_0xff93('0xa')});};
\ No newline at end of file
index ab27c11..e29e843 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d75=['request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','UserNotification,\x20%s,\x20%s','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./userNotification.socket','register','request','then','info'];(function(_0x52b054,_0x11c4c4){var _0x1b75f1=function(_0x245a7a){while(--_0x245a7a){_0x52b054['push'](_0x52b054['shift']());}};_0x1b75f1(++_0x11c4c4);}(_0x5d75,0x1ba));var _0x55d7=function(_0x268dc8,_0x4cf7dc){_0x268dc8=_0x268dc8-0x0;var _0x470258=_0x5d75[_0x268dc8];return _0x470258;};'use strict';var _=require(_0x55d7('0x0'));var util=require('util');var moment=require(_0x55d7('0x1'));var BPromise=require('bluebird');var rs=require(_0x55d7('0x2'));var fs=require('fs');var Redis=require(_0x55d7('0x3'));var db=require(_0x55d7('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x55d7('0x5'));var config=require(_0x55d7('0x6'));var jayson=require(_0x55d7('0x7'));var client=jayson['client']['http']({'port':0x232a});config[_0x55d7('0x8')]=_[_0x55d7('0x9')](config[_0x55d7('0x8')],{'host':_0x55d7('0xa'),'port':0x18eb});var socket=require(_0x55d7('0xb'))(new Redis(config['redis']));require(_0x55d7('0xc'))[_0x55d7('0xd')](socket);function respondWithRpcPromise(_0x2e7168,_0x48cca3,_0x4fba54){return new BPromise(function(_0x518673,_0x4ce6bd){return client[_0x55d7('0xe')](_0x2e7168,_0x4fba54)[_0x55d7('0xf')](function(_0x3b1375){logger[_0x55d7('0x10')]('UserNotification,\x20%s,\x20%s',_0x48cca3,_0x55d7('0x11'));logger[_0x55d7('0x12')](_0x55d7('0x13'),_0x48cca3,_0x55d7('0x11'),JSON[_0x55d7('0x14')](_0x3b1375));if(_0x3b1375[_0x55d7('0x15')]){if(_0x3b1375['error'][_0x55d7('0x16')]===0x1f4){logger[_0x55d7('0x15')](_0x55d7('0x17'),_0x48cca3,_0x3b1375[_0x55d7('0x15')]['message']);return _0x4ce6bd(_0x3b1375[_0x55d7('0x15')][_0x55d7('0x18')]);}logger[_0x55d7('0x15')](_0x55d7('0x17'),_0x48cca3,_0x3b1375['error'][_0x55d7('0x18')]);return _0x518673(_0x3b1375[_0x55d7('0x15')][_0x55d7('0x18')]);}else{logger['info'](_0x55d7('0x17'),_0x48cca3,_0x55d7('0x11'));_0x518673(_0x3b1375[_0x55d7('0x19')][_0x55d7('0x18')]);}})[_0x55d7('0x1a')](function(_0x541c8d){logger[_0x55d7('0x15')]('UserNotification,\x20%s,\x20%s',_0x48cca3,_0x541c8d);_0x4ce6bd(_0x541c8d);});});}
\ No newline at end of file
+var _0xab5c=['UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./userNotification.socket','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x42b0cd,_0x354a08){var _0x11abc1=function(_0xc3d979){while(--_0xc3d979){_0x42b0cd['push'](_0x42b0cd['shift']());}};_0x11abc1(++_0x354a08);}(_0xab5c,0xde));var _0xcab5=function(_0x117369,_0x17246b){_0x117369=_0x117369-0x0;var _0x25a188=_0xab5c[_0x117369];return _0x25a188;};'use strict';var _=require(_0xcab5('0x0'));var util=require('util');var moment=require(_0xcab5('0x1'));var BPromise=require(_0xcab5('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcab5('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xcab5('0x4'));var logger=require(_0xcab5('0x5'))(_0xcab5('0x6'));var config=require(_0xcab5('0x7'));var jayson=require(_0xcab5('0x8'));var client=jayson[_0xcab5('0x9')][_0xcab5('0xa')]({'port':0x232a});config['redis']=_[_0xcab5('0xb')](config[_0xcab5('0xc')],{'host':_0xcab5('0xd'),'port':0x18eb});var socket=require(_0xcab5('0xe'))(new Redis(config['redis']));require(_0xcab5('0xf'))['register'](socket);function respondWithRpcPromise(_0x42b15b,_0x2fd86b,_0x45e65d){return new BPromise(function(_0x563d32,_0x4a46bf){return client['request'](_0x42b15b,_0x45e65d)[_0xcab5('0x10')](function(_0x16290c){logger[_0xcab5('0x11')](_0xcab5('0x12'),_0x2fd86b,_0xcab5('0x13'));logger[_0xcab5('0x14')](_0xcab5('0x15'),_0x2fd86b,_0xcab5('0x13'),JSON[_0xcab5('0x16')](_0x16290c));if(_0x16290c[_0xcab5('0x17')]){if(_0x16290c[_0xcab5('0x17')]['code']===0x1f4){logger[_0xcab5('0x17')](_0xcab5('0x12'),_0x2fd86b,_0x16290c[_0xcab5('0x17')][_0xcab5('0x18')]);return _0x4a46bf(_0x16290c[_0xcab5('0x17')]['message']);}logger[_0xcab5('0x17')]('UserNotification,\x20%s,\x20%s',_0x2fd86b,_0x16290c[_0xcab5('0x17')][_0xcab5('0x18')]);return _0x563d32(_0x16290c['error'][_0xcab5('0x18')]);}else{logger[_0xcab5('0x11')](_0xcab5('0x12'),_0x2fd86b,_0xcab5('0x13'));_0x563d32(_0x16290c[_0xcab5('0x19')][_0xcab5('0x18')]);}})[_0xcab5('0x1a')](function(_0x22d3a6){logger[_0xcab5('0x17')](_0xcab5('0x12'),_0x2fd86b,_0x22d3a6);_0x4a46bf(_0x22d3a6);});});}
\ No newline at end of file
index e4406da..97f47d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c51=['save','remove','update','register','length','userNotification:','./userNotification.events'];(function(_0x2e6dbf,_0x57dd06){var _0x2680e5=function(_0x4018f4){while(--_0x4018f4){_0x2e6dbf['push'](_0x2e6dbf['shift']());}};_0x2680e5(++_0x57dd06);}(_0x6c51,0x76));var _0x16c5=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6c51[_0x14add3];return _0x4a174f;};'use strict';var UserNotificationEvents=require(_0x16c5('0x0'));var events=[_0x16c5('0x1'),_0x16c5('0x2'),_0x16c5('0x3')];function createListener(_0xd726f1,_0x5a1ef4){return function(_0x6da2fa){_0x5a1ef4['emit'](_0xd726f1,_0x6da2fa);};}function removeListener(_0x38c331,_0x2942f8){return function(){UserNotificationEvents['removeListener'](_0x38c331,_0x2942f8);};}exports[_0x16c5('0x4')]=function(_0x40d1b3){for(var _0x177e58=0x0,_0x26fe28=events[_0x16c5('0x5')];_0x177e58<_0x26fe28;_0x177e58++){var _0x241218=events[_0x177e58];var _0x5a8314=createListener(_0x16c5('0x6')+_0x241218,_0x40d1b3);UserNotificationEvents['on'](_0x241218,_0x5a8314);}};
\ No newline at end of file
+var _0x0938=['register','length','userNotification:','save','remove','removeListener'];(function(_0x257495,_0x18269b){var _0x3849aa=function(_0x1ca94e){while(--_0x1ca94e){_0x257495['push'](_0x257495['shift']());}};_0x3849aa(++_0x18269b);}(_0x0938,0x183));var _0x8093=function(_0x438d6b,_0x105026){_0x438d6b=_0x438d6b-0x0;var _0x261104=_0x0938[_0x438d6b];return _0x261104;};'use strict';var UserNotificationEvents=require('./userNotification.events');var events=[_0x8093('0x0'),_0x8093('0x1'),'update'];function createListener(_0x359ca6,_0x2122ee){return function(_0x43629d){_0x2122ee['emit'](_0x359ca6,_0x43629d);};}function removeListener(_0x231320,_0x43b536){return function(){UserNotificationEvents[_0x8093('0x2')](_0x231320,_0x43b536);};}exports[_0x8093('0x3')]=function(_0x59d174){for(var _0x5199e9=0x0,_0x11b3ab=events[_0x8093('0x4')];_0x5199e9<_0x11b3ab;_0x5199e9++){var _0x1f07b7=events[_0x5199e9];var _0x46b947=createListener(_0x8093('0x5')+_0x1f07b7,_0x59d174);UserNotificationEvents['on'](_0x1f07b7,_0x46b947);}};
\ No newline at end of file
index fc0c0ef..b5bb54d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x40c84c,_0x483fcb){var _0x447e63=function(_0x23e36f){while(--_0x23e36f){_0x40c84c['push'](_0x40c84c['shift']());}};_0x447e63(++_0x483fcb);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x34d993,_0x3c7017){var _0x4728c7=function(_0x12f5ca){while(--_0x12f5ca){_0x34d993['push'](_0x34d993['shift']());}};_0x4728c7(++_0x3c7017);}(_0x9c44,0x178));var _0x49c4=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x9c44[_0x1d1779];return _0x2377e9;};'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 c4da248..8a4025b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a95=['INTEGER','sequelize','exports'];(function(_0x5d8eb7,_0x2b87c4){var _0x42d426=function(_0x57e418){while(--_0x57e418){_0x5d8eb7['push'](_0x5d8eb7['shift']());}};_0x42d426(++_0x2b87c4);}(_0x9a95,0xb5));var _0x59a9=function(_0x466d94,_0x48809c){_0x466d94=_0x466d94-0x0;var _0x12c62d=_0x9a95[_0x466d94];return _0x12c62d;};'use strict';var Sequelize=require(_0x59a9('0x0'));module[_0x59a9('0x1')]={'penalty':{'type':Sequelize[_0x59a9('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x47d3=['sequelize','exports'];(function(_0x292f93,_0x2c6e8e){var _0x5a94b1=function(_0x25735e){while(--_0x25735e){_0x292f93['push'](_0x292f93['shift']());}};_0x5a94b1(++_0x2c6e8e);}(_0x47d3,0x16c));var _0x347d=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x47d3[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0x347d('0x0'));module[_0x347d('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 5fb5406..9e474c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ad6=['request-promise','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports','define','user_has_openchannel_queues','lodash','util','api','bluebird'];(function(_0x5b60b1,_0x50244e){var _0x4eec60=function(_0x565389){while(--_0x565389){_0x5b60b1['push'](_0x5b60b1['shift']());}};_0x4eec60(++_0x50244e);}(_0x9ad6,0xc8));var _0x69ad=function(_0x20c19c,_0x4f465e){_0x20c19c=_0x20c19c-0x0;var _0x465a7c=_0x9ad6[_0x20c19c];return _0x465a7c;};'use strict';var _=require(_0x69ad('0x0'));var util=require(_0x69ad('0x1'));var logger=require('../../config/logger')(_0x69ad('0x2'));var moment=require('moment');var BPromise=require(_0x69ad('0x3'));var rp=require(_0x69ad('0x4'));var fs=require('fs');var path=require(_0x69ad('0x5'));var rimraf=require(_0x69ad('0x6'));var config=require(_0x69ad('0x7'));var attributes=require(_0x69ad('0x8'));module[_0x69ad('0x9')]=function(_0x138068,_0x4868ef){return _0x138068[_0x69ad('0xa')]('UserOpenchannelQueue',attributes,{'tableName':_0x69ad('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd13c=['rimraf','../../config/environment','exports','define','UserOpenchannelQueue','lodash','../../config/logger','api','moment','bluebird','path'];(function(_0x71cd05,_0x36ac11){var _0x59c9e7=function(_0x5472cd){while(--_0x5472cd){_0x71cd05['push'](_0x71cd05['shift']());}};_0x59c9e7(++_0x36ac11);}(_0xd13c,0x186));var _0xcd13=function(_0x3cbd90,_0x4524cb){_0x3cbd90=_0x3cbd90-0x0;var _0x2c6063=_0xd13c[_0x3cbd90];return _0x2c6063;};'use strict';var _=require(_0xcd13('0x0'));var util=require('util');var logger=require(_0xcd13('0x1'))(_0xcd13('0x2'));var moment=require(_0xcd13('0x3'));var BPromise=require(_0xcd13('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xcd13('0x5'));var rimraf=require(_0xcd13('0x6'));var config=require(_0xcd13('0x7'));var attributes=require('./userOpenchannelQueue.attributes');module[_0xcd13('0x8')]=function(_0x26587a,_0x350696){return _0x26587a[_0xcd13('0x9')](_0xcd13('0xa'),attributes,{'tableName':'user_has_openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a750c4b..a335173 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeee2=['request','then','request\x20sent','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','UserOpenchannelQueue,\x20%s,\x20%s','message','info','result','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x20b80b,_0x788618){var _0x40820d=function(_0x1cae91){while(--_0x1cae91){_0x20b80b['push'](_0x20b80b['shift']());}};_0x40820d(++_0x788618);}(_0xeee2,0x1c2));var _0x2eee=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xeee2[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x2eee('0x0'));var util=require('util');var moment=require(_0x2eee('0x1'));var BPromise=require('bluebird');var rs=require(_0x2eee('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2eee('0x3'))['db'];var utils=require(_0x2eee('0x4'));var logger=require(_0x2eee('0x5'))(_0x2eee('0x6'));var config=require(_0x2eee('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x2eee('0x8')][_0x2eee('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1c20f6,_0x35b08d,_0x13aa2f){return new BPromise(function(_0xba4f7b,_0x27dd5e){return client[_0x2eee('0xa')](_0x1c20f6,_0x13aa2f)[_0x2eee('0xb')](function(_0x2d3903){logger['info']('UserOpenchannelQueue,\x20%s,\x20%s',_0x35b08d,_0x2eee('0xc'));logger['debug'](_0x2eee('0xd'),_0x35b08d,'request\x20sent',JSON[_0x2eee('0xe')](_0x2d3903));if(_0x2d3903[_0x2eee('0xf')]){if(_0x2d3903[_0x2eee('0xf')]['code']===0x1f4){logger['error'](_0x2eee('0x10'),_0x35b08d,_0x2d3903[_0x2eee('0xf')][_0x2eee('0x11')]);return _0x27dd5e(_0x2d3903[_0x2eee('0xf')][_0x2eee('0x11')]);}logger[_0x2eee('0xf')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x35b08d,_0x2d3903[_0x2eee('0xf')][_0x2eee('0x11')]);return _0xba4f7b(_0x2d3903[_0x2eee('0xf')]['message']);}else{logger[_0x2eee('0x12')](_0x2eee('0x10'),_0x35b08d,_0x2eee('0xc'));_0xba4f7b(_0x2d3903[_0x2eee('0x13')][_0x2eee('0x11')]);}})['catch'](function(_0x4452db){logger[_0x2eee('0xf')](_0x2eee('0x10'),_0x35b08d,_0x4452db);_0x27dd5e(_0x4452db);});});}
\ No newline at end of file
+var _0xaec6=['UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','request','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent'];(function(_0x4e7820,_0x4a4775){var _0x556da1=function(_0x2e0f67){while(--_0x2e0f67){_0x4e7820['push'](_0x4e7820['shift']());}};_0x556da1(++_0x4a4775);}(_0xaec6,0x16f));var _0x6aec=function(_0x629b36,_0x129c04){_0x629b36=_0x629b36-0x0;var _0x1ec401=_0xaec6[_0x629b36];return _0x1ec401;};'use strict';var _=require(_0x6aec('0x0'));var util=require(_0x6aec('0x1'));var moment=require(_0x6aec('0x2'));var BPromise=require('bluebird');var rs=require(_0x6aec('0x3'));var fs=require('fs');var Redis=require(_0x6aec('0x4'));var db=require(_0x6aec('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6aec('0x6'));var config=require(_0x6aec('0x7'));var jayson=require(_0x6aec('0x8'));var client=jayson[_0x6aec('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x191634,_0x10474b,_0x2097af){return new BPromise(function(_0x5fef0,_0x153d1f){return client[_0x6aec('0xa')](_0x191634,_0x2097af)['then'](function(_0x3b2567){logger['info'](_0x6aec('0xb'),_0x10474b,_0x6aec('0xc'));logger['debug'](_0x6aec('0xd'),_0x10474b,'request\x20sent',JSON['stringify'](_0x3b2567));if(_0x3b2567[_0x6aec('0xe')]){if(_0x3b2567[_0x6aec('0xe')][_0x6aec('0xf')]===0x1f4){logger[_0x6aec('0xe')](_0x6aec('0xb'),_0x10474b,_0x3b2567[_0x6aec('0xe')][_0x6aec('0x10')]);return _0x153d1f(_0x3b2567[_0x6aec('0xe')][_0x6aec('0x10')]);}logger[_0x6aec('0xe')](_0x6aec('0xb'),_0x10474b,_0x3b2567[_0x6aec('0xe')][_0x6aec('0x10')]);return _0x5fef0(_0x3b2567['error']['message']);}else{logger[_0x6aec('0x11')](_0x6aec('0xb'),_0x10474b,_0x6aec('0xc'));_0x5fef0(_0x3b2567[_0x6aec('0x12')][_0x6aec('0x10')]);}})[_0x6aec('0x13')](function(_0x5a9273){logger[_0x6aec('0xe')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x10474b,_0x5a9273);_0x153d1f(_0x5a9273);});});}
\ No newline at end of file
index d8f8b87..c0dd244 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x878c=['express','fs-extra','../../components/auth/service','../../components/interaction/service','./userProfile.controller','get','isAuthenticated','index','/:id','show','/:id/sections','getSections','getResources','create','/:id/clone','clone','post','/:id/resources','addResources','put','delete','destroy','removeSections','removeResources','exports','multer','path'];(function(_0x56562d,_0x578183){var _0xdafef9=function(_0x27453e){while(--_0x27453e){_0x56562d['push'](_0x56562d['shift']());}};_0xdafef9(++_0x578183);}(_0x878c,0x1e4));var _0xc878=function(_0x4aaaa4,_0xd306d3){_0x4aaaa4=_0x4aaaa4-0x0;var _0x44e7e2=_0x878c[_0x4aaaa4];return _0x44e7e2;};'use strict';var multer=require(_0xc878('0x0'));var util=require('util');var path=require(_0xc878('0x1'));var timeout=require('connect-timeout');var express=require(_0xc878('0x2'));var router=express['Router']();var fs_extra=require(_0xc878('0x3'));var auth=require(_0xc878('0x4'));var interaction=require(_0xc878('0x5'));var config=require('../../config/environment');var controller=require(_0xc878('0x6'));router[_0xc878('0x7')]('/',auth[_0xc878('0x8')](),controller[_0xc878('0x9')]);router[_0xc878('0x7')]('/describe',auth[_0xc878('0x8')](),controller['describe']);router[_0xc878('0x7')](_0xc878('0xa'),auth[_0xc878('0x8')](),controller[_0xc878('0xb')]);router[_0xc878('0x7')](_0xc878('0xc'),auth[_0xc878('0x8')](),controller[_0xc878('0xd')]);router[_0xc878('0x7')]('/:id/resources',auth[_0xc878('0x8')](),controller[_0xc878('0xe')]);router['post']('/',auth[_0xc878('0x8')](),controller[_0xc878('0xf')]);router['post'](_0xc878('0x10'),auth[_0xc878('0x8')](),controller[_0xc878('0x11')]);router[_0xc878('0x12')](_0xc878('0xc'),auth[_0xc878('0x8')](),controller['addSections']);router[_0xc878('0x12')](_0xc878('0x13'),auth[_0xc878('0x8')](),controller[_0xc878('0x14')]);router[_0xc878('0x15')]('/:id',auth[_0xc878('0x8')](),controller['update']);router[_0xc878('0x16')](_0xc878('0xa'),auth['isAuthenticated'](),controller[_0xc878('0x17')]);router['delete'](_0xc878('0xc'),auth['isAuthenticated'](),controller[_0xc878('0x18')]);router[_0xc878('0x16')](_0xc878('0x13'),auth['isAuthenticated'](),controller[_0xc878('0x19')]);module[_0xc878('0x1a')]=router;
\ No newline at end of file
+var _0x1aa2=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/describe','isAuthenticated','describe','/:id','show','/:id/sections','getSections','/:id/resources','post','create','/:id/clone','clone','addSections','addResources','put','destroy','removeResources','exports','multer'];(function(_0x615441,_0x3f7f3f){var _0x174a63=function(_0x410580){while(--_0x410580){_0x615441['push'](_0x615441['shift']());}};_0x174a63(++_0x3f7f3f);}(_0x1aa2,0x6f));var _0x21aa=function(_0x237546,_0xa81b26){_0x237546=_0x237546-0x0;var _0x233e29=_0x1aa2[_0x237546];return _0x233e29;};'use strict';var multer=require(_0x21aa('0x0'));var util=require(_0x21aa('0x1'));var path=require(_0x21aa('0x2'));var timeout=require(_0x21aa('0x3'));var express=require('express');var router=express[_0x21aa('0x4')]();var fs_extra=require(_0x21aa('0x5'));var auth=require(_0x21aa('0x6'));var interaction=require(_0x21aa('0x7'));var config=require(_0x21aa('0x8'));var controller=require('./userProfile.controller');router[_0x21aa('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x21aa('0x9')](_0x21aa('0xa'),auth[_0x21aa('0xb')](),controller[_0x21aa('0xc')]);router[_0x21aa('0x9')](_0x21aa('0xd'),auth[_0x21aa('0xb')](),controller[_0x21aa('0xe')]);router['get'](_0x21aa('0xf'),auth[_0x21aa('0xb')](),controller[_0x21aa('0x10')]);router['get'](_0x21aa('0x11'),auth[_0x21aa('0xb')](),controller['getResources']);router[_0x21aa('0x12')]('/',auth[_0x21aa('0xb')](),controller[_0x21aa('0x13')]);router[_0x21aa('0x12')](_0x21aa('0x14'),auth[_0x21aa('0xb')](),controller[_0x21aa('0x15')]);router[_0x21aa('0x12')]('/:id/sections',auth[_0x21aa('0xb')](),controller[_0x21aa('0x16')]);router[_0x21aa('0x12')]('/:id/resources',auth[_0x21aa('0xb')](),controller[_0x21aa('0x17')]);router[_0x21aa('0x18')](_0x21aa('0xd'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x21aa('0xd'),auth['isAuthenticated'](),controller[_0x21aa('0x19')]);router['delete'](_0x21aa('0xf'),auth[_0x21aa('0xb')](),controller['removeSections']);router['delete'](_0x21aa('0x11'),auth['isAuthenticated'](),controller[_0x21aa('0x1a')]);module[_0x21aa('0x1b')]=router;
\ No newline at end of file
index 1d624da..8f2cbfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8ba=['join','getDataValue','split','BOOLEAN','sequelize','STRING','name','setDataValue','crudPermissions'];(function(_0x1bc657,_0xaad706){var _0x5aa1ad=function(_0x5cb40f){while(--_0x5cb40f){_0x1bc657['push'](_0x1bc657['shift']());}};_0x5aa1ad(++_0xaad706);}(_0xf8ba,0x16c));var _0xaf8b=function(_0x404eed,_0x5390c5){_0x404eed=_0x404eed-0x0;var _0xd45887=_0xf8ba[_0x404eed];return _0xd45887;};'use strict';var Sequelize=require(_0xaf8b('0x0'));module['exports']={'name':{'type':Sequelize[_0xaf8b('0x1')],'allowNull':![],'unique':_0xaf8b('0x2')},'crudPermissions':{'type':Sequelize[_0xaf8b('0x1')],'set':function(_0x49b371){this[_0xaf8b('0x3')](_0xaf8b('0x4'),_0x49b371?_0x49b371[_0xaf8b('0x5')](''):[]);},'get':function(){return this['getDataValue'](_0xaf8b('0x4'))?this[_0xaf8b('0x6')](_0xaf8b('0x4'))[_0xaf8b('0x7')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xaf8b('0x1')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xaf8b('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xaf8b('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xaf8b('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xaf8b('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xaf8b('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xaf8b('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xaf8b('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xaf8b('0x8')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x1785=['crudPermissions','join','getDataValue','BOOLEAN','sequelize','exports','STRING','name','setDataValue'];(function(_0x256090,_0x353322){var _0xe9eed1=function(_0x2c8735){while(--_0x2c8735){_0x256090['push'](_0x256090['shift']());}};_0xe9eed1(++_0x353322);}(_0x1785,0x151));var _0x5178=function(_0x428774,_0x383962){_0x428774=_0x428774-0x0;var _0x53a01c=_0x1785[_0x428774];return _0x53a01c;};'use strict';var Sequelize=require(_0x5178('0x0'));module[_0x5178('0x1')]={'name':{'type':Sequelize[_0x5178('0x2')],'allowNull':![],'unique':_0x5178('0x3')},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x495fc1){this[_0x5178('0x4')](_0x5178('0x5'),_0x495fc1?_0x495fc1[_0x5178('0x6')](''):[]);},'get':function(){return this[_0x5178('0x7')](_0x5178('0x5'))?this[_0x5178('0x7')](_0x5178('0x5'))['split'](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x5178('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x5178('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x5178('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x5178('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x5178('0x8')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x5178('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x5178('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x5178('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index 68771d3..7a79429 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cda=['each','push','getSections','enabled','includes','isEmpty','subsections','findOne','Dashboard','forEach','resourceId','addResources','bulkCreate','removeResources','ids','getResources','section','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','redis','defaults','localhost','register','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','reject','update','then','destroy','error','stack','name','send','index','UserProfile','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','filter','catch','show','length','include','options','find','create','body','clone','params','includeAll','get','omit','createdAt','updatedAt','crudPermissions','sequelize','transaction','UserProfileSection','findAll','autoAssociation','map','sectionId','userProfileId','Resources','UserProfileResource','describe','addSections'];(function(_0xe72729,_0x503951){var _0x3f679b=function(_0x58939f){while(--_0x58939f){_0xe72729['push'](_0xe72729['shift']());}};_0x3f679b(++_0x503951);}(_0x8cda,0x1db));var _0xa8cd=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8cda[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa8cd('0x0'));var zipdir=require(_0xa8cd('0x1'));var jsonpatch=require(_0xa8cd('0x2'));var rp=require(_0xa8cd('0x3'));var moment=require(_0xa8cd('0x4'));var BPromise=require(_0xa8cd('0x5'));var Mustache=require('mustache');var util=require(_0xa8cd('0x6'));var path=require(_0xa8cd('0x7'));var sox=require(_0xa8cd('0x8'));var csv=require('to-csv');var ejs=require(_0xa8cd('0x9'));var fs=require('fs');var fs_extra=require(_0xa8cd('0xa'));var _=require(_0xa8cd('0xb'));var squel=require(_0xa8cd('0xc'));var crypto=require(_0xa8cd('0xd'));var jsforce=require(_0xa8cd('0xe'));var deskjs=require(_0xa8cd('0xf'));var toCsv=require(_0xa8cd('0x10'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa8cd('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa8cd('0x12'));var hardwareService=require(_0xa8cd('0x13'));var logger=require('../../config/logger')(_0xa8cd('0x14'));var utils=require(_0xa8cd('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa8cd('0x16'))['db'];config[_0xa8cd('0x17')]=_[_0xa8cd('0x18')](config[_0xa8cd('0x17')],{'host':_0xa8cd('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa8cd('0x17')]));require('./userProfile.socket')[_0xa8cd('0x1a')](socket);function respondWithStatusCode(_0x5ccd85,_0x213e36){_0x213e36=_0x213e36||0xcc;return function(_0x52d73b){if(_0x52d73b){return _0x5ccd85[_0xa8cd('0x1b')](_0x213e36);}return _0x5ccd85[_0xa8cd('0x1c')](_0x213e36)[_0xa8cd('0x1d')]();};}function respondWithResult(_0x5bfc4c,_0x4e3efd){_0x4e3efd=_0x4e3efd||0xc8;return function(_0x812e89){if(_0x812e89){return _0x5bfc4c[_0xa8cd('0x1c')](_0x4e3efd)[_0xa8cd('0x1e')](_0x812e89);}};}function respondWithFilteredResult(_0x177ca2,_0x55c494){return function(_0x128a90){if(_0x128a90){var _0x52252b=typeof _0x55c494[_0xa8cd('0x1f')]===_0xa8cd('0x20')&&typeof _0x55c494['limit']===_0xa8cd('0x20');var _0x1260e5=_0x128a90['count'];var _0x2acedd=_0x52252b?0x0:_0x55c494[_0xa8cd('0x1f')];var _0x1ecce0=_0x52252b?_0x128a90[_0xa8cd('0x21')]:_0x55c494[_0xa8cd('0x1f')]+_0x55c494['limit'];var _0xdd4de1;if(_0x1ecce0>=_0x1260e5){_0x1ecce0=_0x1260e5;_0xdd4de1=0xc8;}else{_0xdd4de1=0xce;}_0x177ca2[_0xa8cd('0x1c')](_0xdd4de1);return _0x177ca2[_0xa8cd('0x22')](_0xa8cd('0x23'),_0x2acedd+'-'+_0x1ecce0+'/'+_0x1260e5)['json'](_0x128a90);}return null;};}function patchUpdates(_0x1f15c0){return function(_0x514665){try{jsonpatch['apply'](_0x514665,_0x1f15c0,!![]);}catch(_0x28574f){return BPromise[_0xa8cd('0x24')](_0x28574f);}return _0x514665['save']();};}function saveUpdates(_0x1c7b31,_0x26d35a){return function(_0xfd170){if(_0xfd170){return _0xfd170[_0xa8cd('0x25')](_0x1c7b31)[_0xa8cd('0x26')](function(_0x2d1ef5){return _0x2d1ef5;});}return null;};}function removeEntity(_0x1f369d,_0x4a5221){return function(_0x3c5812){if(_0x3c5812){return _0x3c5812[_0xa8cd('0x27')]()[_0xa8cd('0x26')](function(){_0x1f369d[_0xa8cd('0x1c')](0xcc)[_0xa8cd('0x1d')]();});}};}function handleEntityNotFound(_0x433a5d,_0x4e5230){return function(_0x38946b){if(!_0x38946b){_0x433a5d[_0xa8cd('0x1b')](0x194);}return _0x38946b;};}function handleError(_0x6b6028,_0x16997c){_0x16997c=_0x16997c||0x1f4;return function(_0xe973cb){logger[_0xa8cd('0x28')](_0xe973cb[_0xa8cd('0x29')]);if(_0xe973cb[_0xa8cd('0x2a')]){delete _0xe973cb[_0xa8cd('0x2a')];}_0x6b6028[_0xa8cd('0x1c')](_0x16997c)[_0xa8cd('0x2b')](_0xe973cb);};}exports[_0xa8cd('0x2c')]=function(_0x471052,_0x44ea2f){var _0x2b4c53={},_0x3c188f={},_0x4b7671={'count':0x0,'rows':[]};var _0x4cca4b=_['map'](db[_0xa8cd('0x2d')][_0xa8cd('0x2e')],function(_0x39e1d7){return{'name':_0x39e1d7[_0xa8cd('0x2f')],'type':_0x39e1d7[_0xa8cd('0x30')][_0xa8cd('0x31')]};});_0x3c188f['model']=_['map'](_0x4cca4b,'name');_0x3c188f[_0xa8cd('0x32')]=_[_0xa8cd('0x33')](_0x471052[_0xa8cd('0x32')]);_0x3c188f[_0xa8cd('0x34')]=_[_0xa8cd('0x35')](_0x3c188f[_0xa8cd('0x36')],_0x3c188f[_0xa8cd('0x32')]);_0x2b4c53['attributes']=_[_0xa8cd('0x35')](_0x3c188f[_0xa8cd('0x36')],qs['fields'](_0x471052[_0xa8cd('0x32')][_0xa8cd('0x37')]));_0x2b4c53[_0xa8cd('0x38')]=_0x2b4c53[_0xa8cd('0x38')]['length']?_0x2b4c53[_0xa8cd('0x38')]:_0x3c188f[_0xa8cd('0x36')];if(!_0x471052['query'][_0xa8cd('0x39')](_0xa8cd('0x3a'))){_0x2b4c53[_0xa8cd('0x3b')]=qs[_0xa8cd('0x3b')](_0x471052['query']['limit']);_0x2b4c53[_0xa8cd('0x1f')]=qs['offset'](_0x471052[_0xa8cd('0x32')]['offset']);}_0x2b4c53[_0xa8cd('0x3c')]=qs[_0xa8cd('0x3d')](_0x471052['query'][_0xa8cd('0x3d')]);_0x2b4c53[_0xa8cd('0x3e')]=qs[_0xa8cd('0x34')](_[_0xa8cd('0x3f')](_0x471052[_0xa8cd('0x32')],_0x3c188f[_0xa8cd('0x34')]),_0x4cca4b);if(_0x471052[_0xa8cd('0x32')]['filter']){_0x2b4c53[_0xa8cd('0x3e')]=_[_0xa8cd('0x40')](_0x2b4c53['where'],{'$or':_['map'](_0x4cca4b,function(_0x111621){if(_0x111621[_0xa8cd('0x30')]!==_0xa8cd('0x41')){var _0x1d58a4={};_0x1d58a4[_0x111621[_0xa8cd('0x2a')]]={'$like':'%'+_0x471052[_0xa8cd('0x32')][_0xa8cd('0x42')]+'%'};return _0x1d58a4;}})});}_0x2b4c53=_[_0xa8cd('0x40')]({},_0x2b4c53,_0x471052['options']);var _0x232e8f={'where':_0x2b4c53['where']};return db[_0xa8cd('0x2d')]['count'](_0x232e8f)[_0xa8cd('0x26')](function(_0x27a64c){_0x4b7671[_0xa8cd('0x21')]=_0x27a64c;if(_0x471052[_0xa8cd('0x32')]['includeAll']){_0x2b4c53['include']=[{'all':!![]}];}return db['UserProfile']['findAll'](_0x2b4c53);})[_0xa8cd('0x26')](function(_0x40c80d){_0x4b7671['rows']=_0x40c80d;return _0x4b7671;})[_0xa8cd('0x26')](respondWithFilteredResult(_0x44ea2f,_0x2b4c53))[_0xa8cd('0x43')](handleError(_0x44ea2f,null));};exports[_0xa8cd('0x44')]=function(_0x33a638,_0x279b9c){var _0x1ccc6a={'raw':![],'where':{'id':_0x33a638['params']['id']}},_0x535bbe={};_0x535bbe[_0xa8cd('0x36')]=_[_0xa8cd('0x33')](db[_0xa8cd('0x2d')][_0xa8cd('0x2e')]);_0x535bbe['query']=_[_0xa8cd('0x33')](_0x33a638[_0xa8cd('0x32')]);_0x535bbe[_0xa8cd('0x34')]=_[_0xa8cd('0x35')](_0x535bbe['model'],_0x535bbe['query']);_0x1ccc6a['attributes']=_[_0xa8cd('0x35')](_0x535bbe[_0xa8cd('0x36')],qs['fields'](_0x33a638[_0xa8cd('0x32')][_0xa8cd('0x37')]));_0x1ccc6a[_0xa8cd('0x38')]=_0x1ccc6a[_0xa8cd('0x38')][_0xa8cd('0x45')]?_0x1ccc6a[_0xa8cd('0x38')]:_0x535bbe['model'];if(_0x33a638['query']['includeAll']){_0x1ccc6a[_0xa8cd('0x46')]=[{'all':!![]}];}_0x1ccc6a=_[_0xa8cd('0x40')]({},_0x1ccc6a,_0x33a638[_0xa8cd('0x47')]);return db[_0xa8cd('0x2d')][_0xa8cd('0x48')](_0x1ccc6a)[_0xa8cd('0x26')](handleEntityNotFound(_0x279b9c,null))[_0xa8cd('0x26')](respondWithResult(_0x279b9c,null))[_0xa8cd('0x43')](handleError(_0x279b9c,null));};exports[_0xa8cd('0x49')]=function(_0x534f5a,_0x5429e8){return db[_0xa8cd('0x2d')]['create'](_0x534f5a[_0xa8cd('0x4a')],{})[_0xa8cd('0x26')](respondWithResult(_0x5429e8,0xc9))[_0xa8cd('0x43')](handleError(_0x5429e8,null));};exports[_0xa8cd('0x4b')]=function(_0x33a9a6,_0x5df0fa){var _0x4847b7={'where':{'id':_0x33a9a6[_0xa8cd('0x4c')]['id']}},_0x5093f9={};_0x5093f9[_0xa8cd('0x36')]=_[_0xa8cd('0x33')](db[_0xa8cd('0x2d')][_0xa8cd('0x2e')]);_0x4847b7[_0xa8cd('0x38')]=_[_0xa8cd('0x35')](_0x5093f9[_0xa8cd('0x36')],qs[_0xa8cd('0x37')](_0x33a9a6[_0xa8cd('0x32')][_0xa8cd('0x37')]));_0x4847b7[_0xa8cd('0x38')]=_0x4847b7[_0xa8cd('0x38')][_0xa8cd('0x45')]?_0x4847b7[_0xa8cd('0x38')]:_0x5093f9['model'];if(_0x33a9a6['query'][_0xa8cd('0x4d')]){_0x4847b7[_0xa8cd('0x46')]=[{'all':!![]}];}_0x4847b7=_['merge']({},_0x4847b7,_0x33a9a6[_0xa8cd('0x47')]);return db[_0xa8cd('0x2d')]['find'](_0x4847b7)[_0xa8cd('0x26')](handleEntityNotFound(_0x5df0fa,null))[_0xa8cd('0x26')](function(_0x354f15){if(_0x354f15){var _0x5acfed=_0x354f15[_0xa8cd('0x4e')]({'plain':!![]});_0x5acfed=qs[_0xa8cd('0x4f')](_0x5acfed,['id',_0xa8cd('0x50'),_0xa8cd('0x51'),_0xa8cd('0x52')]);_0x33a9a6[_0xa8cd('0x4a')]=_['omit'](_0x33a9a6[_0xa8cd('0x4a')],['id',_0xa8cd('0x50'),_0xa8cd('0x51')]);return db[_0xa8cd('0x53')][_0xa8cd('0x54')](function(_0x53ab38){return db[_0xa8cd('0x2d')]['create'](_[_0xa8cd('0x40')](_0x5acfed,_0x33a9a6[_0xa8cd('0x4a')]),{'include':_0x33a9a6['query'][_0xa8cd('0x4d')]?[{'all':!![]}]:undefined,'transaction':_0x53ab38})[_0xa8cd('0x26')](function(_0x40581a){var _0x227b80=_0x40581a['get']({'plain':!![]});return db[_0xa8cd('0x55')][_0xa8cd('0x56')]({'where':{'userProfileId':_0x33a9a6[_0xa8cd('0x4c')]['id']},'raw':!![]})['then'](function(_0x5983d1){if(_0x5983d1){return BPromise['each'](_0x5983d1,function(_0x6ab814){return new BPromise(function(_0x4618eb,_0x1f9d44){if(_0x6ab814[_0xa8cd('0x57')]===null||_0x6ab814[_0xa8cd('0x57')]===0x1)_0x4618eb(null);return db['UserProfileResource'][_0xa8cd('0x56')]({'where':{'sectionId':_0x6ab814['id']},'raw':!![]})[_0xa8cd('0x26')](function(_0x287a4b){var _0x15a592=_[_0xa8cd('0x58')](_0x287a4b,function(_0x520796){return qs['omit'](_0x520796,['id','createdAt',_0xa8cd('0x51'),_0xa8cd('0x59')]);});_0x4618eb(_0x15a592);})[_0xa8cd('0x43')](function(_0x44dcab){_0x1f9d44(_0x44dcab);});})[_0xa8cd('0x26')](function(_0x15b32f){var _0x4356b9=qs[_0xa8cd('0x4f')](_0x6ab814,['id','createdAt',_0xa8cd('0x51')]);_0x4356b9[_0xa8cd('0x5a')]=_0x227b80['id'];if(_0x15b32f)_0x4356b9[_0xa8cd('0x5b')]=_0x15b32f;return _0x4356b9;})[_0xa8cd('0x26')](function(_0x4aad4f){return db['UserProfileSection']['create'](_0x4aad4f,{'include':[{'model':db[_0xa8cd('0x5c')],'as':'Resources'}],'raw':!![],'transaction':_0x53ab38});});})[_0xa8cd('0x26')](function(){return _0x227b80;});}});});});}})[_0xa8cd('0x26')](respondWithResult(_0x5df0fa,0xc9))[_0xa8cd('0x43')](handleError(_0x5df0fa,null));};exports[_0xa8cd('0x25')]=function(_0x3fb117,_0x3c5aa2){if(_0x3fb117[_0xa8cd('0x4a')]['id']){delete _0x3fb117[_0xa8cd('0x4a')]['id'];}return db['UserProfile'][_0xa8cd('0x48')]({'where':{'id':_0x3fb117[_0xa8cd('0x4c')]['id']}})[_0xa8cd('0x26')](handleEntityNotFound(_0x3c5aa2,null))[_0xa8cd('0x26')](saveUpdates(_0x3fb117['body'],null))['then'](respondWithResult(_0x3c5aa2,null))[_0xa8cd('0x43')](handleError(_0x3c5aa2,null));};exports['destroy']=function(_0x3b7fa4,_0x1e0b1d){return db[_0xa8cd('0x2d')][_0xa8cd('0x48')]({'where':{'id':_0x3b7fa4[_0xa8cd('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1e0b1d,null))[_0xa8cd('0x26')](removeEntity(_0x1e0b1d,null))[_0xa8cd('0x43')](handleError(_0x1e0b1d,null));};exports[_0xa8cd('0x5d')]=function(_0x3e0413,_0x2a1cfa){return db[_0xa8cd('0x2d')][_0xa8cd('0x5d')]()['then'](respondWithResult(_0x2a1cfa,null))['catch'](handleError(_0x2a1cfa,null));};exports[_0xa8cd('0x5e')]=function(_0x381fc9,_0x4455a4){var _0x6da10e=_0x381fc9[_0xa8cd('0x4a')];return db['UserProfile'][_0xa8cd('0x48')]({'where':{'id':_0x381fc9['params']['id']}})['then'](handleEntityNotFound(_0x4455a4,null))[_0xa8cd('0x26')](function(_0x5d5f87){if(_0x5d5f87){return db[_0xa8cd('0x53')][_0xa8cd('0x54')](function(_0x25fc91){return db[_0xa8cd('0x55')][_0xa8cd('0x27')]({'where':{'userProfileId':_0x381fc9['params']['id'],'sectionId':_[_0xa8cd('0x58')](_0x6da10e,function(_0x4e03f5){return _0x4e03f5['sectionId'];})},'transaction':_0x25fc91})[_0xa8cd('0x26')](function(){var _0x20ff08=_[_0xa8cd('0x58')](_0x6da10e,function(_0x168c7f){_0x168c7f['userProfileId']=_0x381fc9[_0xa8cd('0x4c')]['id'];return _0x168c7f;});var _0x593af2=[];return BPromise[_0xa8cd('0x5f')](_0x20ff08,function(_0x47456e){return db['UserProfileSection'][_0xa8cd('0x49')](_0x47456e,{'include':[{'model':db[_0xa8cd('0x5c')],'as':_0xa8cd('0x5b')}],'raw':!![],'transaction':_0x25fc91})[_0xa8cd('0x26')](function(_0x15f010){_0x593af2[_0xa8cd('0x60')](_0x15f010[_0xa8cd('0x4e')]({'plain':!![]}));});})[_0xa8cd('0x26')](function(){return _0x593af2;});});});}})['then'](function(_0xdcfe2e){return _0xdcfe2e;})['then'](respondWithResult(_0x4455a4,null))[_0xa8cd('0x43')](handleError(_0x4455a4,null));};exports['removeSections']=function(_0x478288,_0x31a04f){var _0x64922a;return db['UserProfile'][_0xa8cd('0x48')]({'where':{'id':_0x478288['params']['id']},'attributes':['id',_0xa8cd('0x2a')]})[_0xa8cd('0x26')](handleEntityNotFound(_0x31a04f,null))[_0xa8cd('0x26')](function(_0x36203d){if(_0x36203d){_0x64922a=_0x36203d;return db['UserProfileSection']['destroy']({'where':{'userProfileId':_0x478288['params']['id'],'sectionId':_0x478288[_0xa8cd('0x32')]['ids']}});}})['then'](function(){return _0x64922a;})[_0xa8cd('0x26')](respondWithStatusCode(_0x31a04f,null))[_0xa8cd('0x43')](handleError(_0x31a04f,null));};exports[_0xa8cd('0x61')]=function(_0x403018,_0x2d00c3){var _0x1b8566=[];var _0xd1a613=[];return db[_0xa8cd('0x55')][_0xa8cd('0x56')]({'where':{'userProfileId':_0x403018['params']['id']},'raw':!![]})[_0xa8cd('0x26')](function(_0x253526){_0x1b8566=_['filter'](_0x253526,function(_0x436491){return _0x436491[_0xa8cd('0x62')]===0x1||_[_0xa8cd('0x63')]([0x3eb,0x709],_0x436491[_0xa8cd('0x59')]);});if(!_[_0xa8cd('0x64')](_0x1b8566)){return _[_0xa8cd('0x58')](_0x1b8566,function(_0x2234ac){return _0x2234ac[_0xa8cd('0x59')];});}else{return;}})[_0xa8cd('0x26')](function(_0x428867){if(_0x428867)_0xd1a613=_0x428867;if(_[_0xa8cd('0x63')](_0xd1a613,0x64)){var _0x596875=_[_0xa8cd('0x48')](_0x1b8566,{'sectionId':0x64});return hasDefaultDashboard(_0x596875)[_0xa8cd('0x26')](function(_0x29fed5){return _[_0xa8cd('0x58')](_0x1b8566,function(_0x1815a3){if(_0x1815a3[_0xa8cd('0x59')]===0x64){_0x1815a3[_0xa8cd('0x65')]=_0x29fed5;}return _0x1815a3;});});}else{return;}})['then'](function(_0x4f3515){if(_0x4f3515)_0x1b8566=_0x4f3515;if(_[_0xa8cd('0x63')](_0xd1a613,0x3eb)){var _0x27aa84=_[_0xa8cd('0x48')](_0x1b8566,{'sectionId':0x3eb});return getCustomDashboards(_0x27aa84)[_0xa8cd('0x26')](function(_0x5ee8d1){return _[_0xa8cd('0x58')](_0x1b8566,function(_0x446e33){if(_0x27aa84['enabled']){if(_0x446e33[_0xa8cd('0x59')]===0x3eb){_0x446e33[_0xa8cd('0x65')]=_0x5ee8d1;}}else{if(_0x446e33[_0xa8cd('0x59')]===0x64){_0x446e33[_0xa8cd('0x65')]=_0x5ee8d1;}}return _0x446e33;});});}else{return;}})[_0xa8cd('0x26')](function(_0x3d8ae){if(_0x3d8ae)_0x1b8566=_0x3d8ae;if(_['includes'](_0xd1a613,0x709)){var _0x7f56d9=_[_0xa8cd('0x48')](_0x1b8566,{'sectionId':0x709});return getPlugins(_0x7f56d9)[_0xa8cd('0x26')](function(_0x365e48){if(_0x7f56d9[_0xa8cd('0x62')]){return _[_0xa8cd('0x58')](_0x1b8566,function(_0x21af76){if(_0x21af76[_0xa8cd('0x59')]===0x709){_0x21af76[_0xa8cd('0x65')]=_0x365e48;}return _0x21af76;});}else{var _0xf966f0={'sectionId':0x76c,'enabled':0x1,'subsections':_0x365e48};var _0x9f065a=_['map'](_0x1b8566);_0x9f065a[_0xa8cd('0x60')](_0xf966f0);return _0x9f065a;}});}else{return;}})[_0xa8cd('0x26')](function(_0x26194e){if(_0x26194e)_0x1b8566=_0x26194e;return _[_0xa8cd('0x42')](_0x1b8566,[_0xa8cd('0x62'),0x1]);})[_0xa8cd('0x26')](respondWithResult(_0x2d00c3,null))['catch'](handleError(_0x2d00c3,null));};function hasDefaultDashboard(_0x1f019f){var _0x95f09b=[0x65];return new BPromise(function(_0x352617,_0x2d2e83){try{if(_0x1f019f[_0xa8cd('0x57')]){_0x352617(_0x95f09b);}else{return db['UserProfileResource'][_0xa8cd('0x66')]({'where':{'sectionId':_0x1f019f['id']},'raw':!![]})[_0xa8cd('0x26')](function(_0x1a4f68){_0x1a4f68?_0x352617(_0x95f09b):_0x352617();});}}catch(_0x494caa){_0x2d2e83(_0x494caa);}});}function getCustomDashboards(_0x474756){var _0x8bb466=[];return new BPromise(function(_0x53db82,_0x57a99f){try{if(_0x474756[_0xa8cd('0x57')]){return db[_0xa8cd('0x67')][_0xa8cd('0x56')]({'raw':!![]})['then'](function(_0x1fd074){_0x1fd074[_0xa8cd('0x68')](function(_0x312935){_0x8bb466['push'](_0x312935['id']+0x1869f);});_0x53db82(_0x8bb466);});}else{return db[_0xa8cd('0x5c')][_0xa8cd('0x56')]({'where':{'sectionId':_0x474756['id']},'raw':!![]})[_0xa8cd('0x26')](function(_0x176fbc){_0x176fbc[_0xa8cd('0x68')](function(_0x6e4db3){_0x8bb466[_0xa8cd('0x60')](_0x6e4db3[_0xa8cd('0x69')]+0x1869f);});_0x53db82(_0x8bb466);});}}catch(_0x34f424){_0x57a99f(_0x34f424);}});}function getPlugins(_0x4f5f41){var _0x577e9b=[];return new BPromise(function(_0x28c02d,_0x127d8f){try{if(_0x4f5f41[_0xa8cd('0x57')]){return db['Plugin'][_0xa8cd('0x56')]({'raw':!![]})[_0xa8cd('0x26')](function(_0x2ce8d6){_0x2ce8d6[_0xa8cd('0x68')](function(_0x26801b){_0x577e9b[_0xa8cd('0x60')](_0x26801b['id']+0x15b38);});_0x28c02d(_0x577e9b);});}else{return db[_0xa8cd('0x5c')][_0xa8cd('0x56')]({'where':{'sectionId':_0x4f5f41['id']},'raw':!![]})[_0xa8cd('0x26')](function(_0x51f14c){_0x51f14c[_0xa8cd('0x68')](function(_0x257195){_0x577e9b[_0xa8cd('0x60')](_0x257195[_0xa8cd('0x69')]+0x15b38);});_0x28c02d(_0x577e9b);});}}catch(_0x5d58d9){_0x127d8f(_0x5d58d9);}});}exports[_0xa8cd('0x6a')]=function(_0x596b1c,_0x91877c){return db[_0xa8cd('0x2d')]['find']({'where':{'id':_0x596b1c[_0xa8cd('0x4c')]['id']}})[_0xa8cd('0x26')](handleEntityNotFound(_0x91877c,null))['then'](function(_0xd8e16){if(_0xd8e16){return db['sequelize'][_0xa8cd('0x54')](function(_0x262f69){return db[_0xa8cd('0x55')][_0xa8cd('0x56')]({'where':{'userProfileId':_0x596b1c[_0xa8cd('0x4c')]['id']},'attributes':['id'],'raw':!![]})[_0xa8cd('0x26')](function(_0x282ff7){if(_0x282ff7){return db[_0xa8cd('0x55')]['destroy']({'where':{'userProfileId':_0x596b1c[_0xa8cd('0x4c')]['id'],'id':_[_0xa8cd('0x58')](_0x282ff7,function(_0x58cd26){return _0x58cd26['id'];})},'transaction':_0x262f69});}})[_0xa8cd('0x26')](function(_0xf9d5e7){var _0x17e56a=_[_0xa8cd('0x58')](_0x596b1c['body'],function(_0x1e44bf){_0x1e44bf[_0xa8cd('0x5a')]=_0x596b1c[_0xa8cd('0x4c')]['id'];return _0x1e44bf;});return db[_0xa8cd('0x55')][_0xa8cd('0x6b')](_0x17e56a,{'raw':!![],'transaction':_0x262f69});})[_0xa8cd('0x26')](function(_0x49b044){var _0x2fff05=_['filter'](_[_0xa8cd('0x58')](_0x49b044,function(_0x543dbd){return _0x543dbd['get']({'plain':!![]});}),{'includeAll':![]});if(_0x2fff05){return db[_0xa8cd('0x55')][_0xa8cd('0x56')]({'where':{'userProfileId':_0x596b1c[_0xa8cd('0x4c')]['id'],'sectionId':_[_0xa8cd('0x58')](_0x2fff05,function(_0x1f835c){return _0x1f835c[_0xa8cd('0x59')];})},'attributes':['id',_0xa8cd('0x59')],'raw':!![]})['then'](function(_0x3b274b){var _0x1d70c5=_[_0xa8cd('0x58')](_0x596b1c[_0xa8cd('0x4a')],function(_0x49d63f){_0x49d63f[_0xa8cd('0x5a')]=_0x596b1c['params']['id'];return _0x49d63f;});return db['UserProfileResource'][_0xa8cd('0x6b')](_0x1d70c5,{'raw':!![],'transaction':_0x262f69});});}})[_0xa8cd('0x43')](handleError(_0x91877c,null));});}})['then'](function(_0x3ca5cb){var _0x43aece=_[_0xa8cd('0x58')](_0x3ca5cb,function(_0x136776){return _0x136776['get']({'plain':!![]});});})[_0xa8cd('0x26')](respondWithResult(_0x91877c,null))['catch'](handleError(_0x91877c,null));};exports['removeResources']=function(_0x544a0b,_0x2e1683,_0x16aade){return db[_0xa8cd('0x2d')][_0xa8cd('0x48')]({'where':{'id':_0x544a0b[_0xa8cd('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2e1683,null))['then'](function(_0xbc6652){if(_0xbc6652){return _0xbc6652[_0xa8cd('0x6c')](_0x544a0b['query'][_0xa8cd('0x6d')]);}})[_0xa8cd('0x26')](respondWithStatusCode(_0x2e1683,null))[_0xa8cd('0x43')](handleError(_0x2e1683,null));};exports[_0xa8cd('0x6e')]=function(_0x2d82b0,_0x39b7f3){var _0x45f387={};if(!_0x2d82b0[_0xa8cd('0x32')][_0xa8cd('0x6f')])throw new Error(_0xa8cd('0x70'));if(!_0x2d82b0[_0xa8cd('0x32')]['hasOwnProperty'](_0xa8cd('0x3a'))){_0x45f387['limit']=qs[_0xa8cd('0x3b')](_0x2d82b0[_0xa8cd('0x32')]['limit']);_0x45f387[_0xa8cd('0x1f')]=qs['offset'](_0x2d82b0[_0xa8cd('0x32')][_0xa8cd('0x1f')]);}return db[_0xa8cd('0x2d')]['find']({'where':{'id':_0x2d82b0[_0xa8cd('0x4c')]['id']}})[_0xa8cd('0x26')](function(_0x5c0f8){if(!_0x5c0f8)throw new Error(_0xa8cd('0x71')+_0x2d82b0[_0xa8cd('0x4c')]['id']);return db[_0xa8cd('0x2d')][_0xa8cd('0x6e')](_0x2d82b0);})[_0xa8cd('0x26')](respondWithFilteredResult(_0x39b7f3,_0x45f387))['catch'](handleError(_0x39b7f3,null));};
\ No newline at end of file
+var _0x676c=['sendStatus','error','name','send','index','UserProfile','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','sort','where','pick','filter','merge','type','VIRTUAL','options','include','rows','catch','params','includeAll','find','create','body','clone','get','omit','createdAt','updatedAt','crudPermissions','transaction','UserProfileSection','findAll','autoAssociation','UserProfileResource','sectionId','userProfileId','Resources','destroy','describe','addSections','sequelize','each','ids','getSections','enabled','includes','isEmpty','subsections','findOne','Dashboard','forEach','push','resourceId','Plugin','bulkCreate','removeResources','getResources','section','hasOwnProperty','nolimit','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./userProfile.socket','register','status','json','offset','limit','undefined','count','reject','update','then','end'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x676c,0x198));var _0xc676=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x676c[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xc676('0x0'));var rimraf=require(_0xc676('0x1'));var zipdir=require(_0xc676('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc676('0x3'));var moment=require(_0xc676('0x4'));var BPromise=require(_0xc676('0x5'));var Mustache=require(_0xc676('0x6'));var util=require(_0xc676('0x7'));var path=require(_0xc676('0x8'));var sox=require('sox');var csv=require(_0xc676('0x9'));var ejs=require(_0xc676('0xa'));var fs=require('fs');var fs_extra=require(_0xc676('0xb'));var _=require(_0xc676('0xc'));var squel=require(_0xc676('0xd'));var crypto=require('crypto');var jsforce=require(_0xc676('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc676('0xf'));var Papa=require(_0xc676('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc676('0x11'));var as=require(_0xc676('0x12'));var hardwareService=require(_0xc676('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xc676('0x14'));var config=require(_0xc676('0x15'));var licenseUtil=require(_0xc676('0x16'));var db=require(_0xc676('0x17'))['db'];config['redis']=_[_0xc676('0x18')](config[_0xc676('0x19')],{'host':_0xc676('0x1a'),'port':0x18eb});var socket=require(_0xc676('0x1b'))(new Redis(config[_0xc676('0x19')]));require(_0xc676('0x1c'))[_0xc676('0x1d')](socket);function respondWithStatusCode(_0x4f8832,_0x274463){_0x274463=_0x274463||0xcc;return function(_0x4fbfb7){if(_0x4fbfb7){return _0x4f8832['sendStatus'](_0x274463);}return _0x4f8832[_0xc676('0x1e')](_0x274463)['end']();};}function respondWithResult(_0x51e6d4,_0x560ca8){_0x560ca8=_0x560ca8||0xc8;return function(_0x50b8c4){if(_0x50b8c4){return _0x51e6d4['status'](_0x560ca8)[_0xc676('0x1f')](_0x50b8c4);}};}function respondWithFilteredResult(_0x1468bc,_0x294d84){return function(_0x3b3215){if(_0x3b3215){var _0x3f1f5d=typeof _0x294d84[_0xc676('0x20')]==='undefined'&&typeof _0x294d84[_0xc676('0x21')]===_0xc676('0x22');var _0x4fe489=_0x3b3215[_0xc676('0x23')];var _0xfc64cb=_0x3f1f5d?0x0:_0x294d84[_0xc676('0x20')];var _0x27afd=_0x3f1f5d?_0x3b3215[_0xc676('0x23')]:_0x294d84[_0xc676('0x20')]+_0x294d84[_0xc676('0x21')];var _0xc533a9;if(_0x27afd>=_0x4fe489){_0x27afd=_0x4fe489;_0xc533a9=0xc8;}else{_0xc533a9=0xce;}_0x1468bc['status'](_0xc533a9);return _0x1468bc['set']('Content-Range',_0xfc64cb+'-'+_0x27afd+'/'+_0x4fe489)[_0xc676('0x1f')](_0x3b3215);}return null;};}function patchUpdates(_0x5ca0a2){return function(_0xb8623f){try{jsonpatch['apply'](_0xb8623f,_0x5ca0a2,!![]);}catch(_0x54389a){return BPromise[_0xc676('0x24')](_0x54389a);}return _0xb8623f['save']();};}function saveUpdates(_0x113ec5,_0x16f78d){return function(_0x1d330b){if(_0x1d330b){return _0x1d330b[_0xc676('0x25')](_0x113ec5)[_0xc676('0x26')](function(_0x4ca666){return _0x4ca666;});}return null;};}function removeEntity(_0x187960,_0x24f330){return function(_0x2f474a){if(_0x2f474a){return _0x2f474a['destroy']()[_0xc676('0x26')](function(){_0x187960['status'](0xcc)[_0xc676('0x27')]();});}};}function handleEntityNotFound(_0x145e3a,_0x4d430d){return function(_0x361f97){if(!_0x361f97){_0x145e3a[_0xc676('0x28')](0x194);}return _0x361f97;};}function handleError(_0x54e185,_0x39ecac){_0x39ecac=_0x39ecac||0x1f4;return function(_0x230b36){logger[_0xc676('0x29')](_0x230b36['stack']);if(_0x230b36[_0xc676('0x2a')]){delete _0x230b36[_0xc676('0x2a')];}_0x54e185[_0xc676('0x1e')](_0x39ecac)[_0xc676('0x2b')](_0x230b36);};}exports[_0xc676('0x2c')]=function(_0x4fb134,_0x1bd277){var _0x19338b={},_0x3e1b89={},_0x39d9a0={'count':0x0,'rows':[]};var _0xed17d6=_['map'](db[_0xc676('0x2d')][_0xc676('0x2e')],function(_0x617203){return{'name':_0x617203[_0xc676('0x2f')],'type':_0x617203['type'][_0xc676('0x30')]};});_0x3e1b89[_0xc676('0x31')]=_[_0xc676('0x32')](_0xed17d6,_0xc676('0x2a'));_0x3e1b89[_0xc676('0x33')]=_[_0xc676('0x34')](_0x4fb134[_0xc676('0x33')]);_0x3e1b89[_0xc676('0x35')]=_[_0xc676('0x36')](_0x3e1b89['model'],_0x3e1b89['query']);_0x19338b['attributes']=_[_0xc676('0x36')](_0x3e1b89[_0xc676('0x31')],qs[_0xc676('0x37')](_0x4fb134[_0xc676('0x33')]['fields']));_0x19338b[_0xc676('0x38')]=_0x19338b[_0xc676('0x38')][_0xc676('0x39')]?_0x19338b[_0xc676('0x38')]:_0x3e1b89[_0xc676('0x31')];if(!_0x4fb134[_0xc676('0x33')]['hasOwnProperty']('nolimit')){_0x19338b[_0xc676('0x21')]=qs['limit'](_0x4fb134[_0xc676('0x33')][_0xc676('0x21')]);_0x19338b[_0xc676('0x20')]=qs[_0xc676('0x20')](_0x4fb134['query']['offset']);}_0x19338b['order']=qs[_0xc676('0x3a')](_0x4fb134[_0xc676('0x33')][_0xc676('0x3a')]);_0x19338b[_0xc676('0x3b')]=qs[_0xc676('0x35')](_[_0xc676('0x3c')](_0x4fb134[_0xc676('0x33')],_0x3e1b89[_0xc676('0x35')]),_0xed17d6);if(_0x4fb134[_0xc676('0x33')][_0xc676('0x3d')]){_0x19338b[_0xc676('0x3b')]=_[_0xc676('0x3e')](_0x19338b[_0xc676('0x3b')],{'$or':_[_0xc676('0x32')](_0xed17d6,function(_0x455c7a){if(_0x455c7a[_0xc676('0x3f')]!==_0xc676('0x40')){var _0x569cd5={};_0x569cd5[_0x455c7a[_0xc676('0x2a')]]={'$like':'%'+_0x4fb134[_0xc676('0x33')][_0xc676('0x3d')]+'%'};return _0x569cd5;}})});}_0x19338b=_['merge']({},_0x19338b,_0x4fb134[_0xc676('0x41')]);var _0x1373b6={'where':_0x19338b[_0xc676('0x3b')]};return db[_0xc676('0x2d')][_0xc676('0x23')](_0x1373b6)[_0xc676('0x26')](function(_0x18bd1a){_0x39d9a0['count']=_0x18bd1a;if(_0x4fb134[_0xc676('0x33')]['includeAll']){_0x19338b[_0xc676('0x42')]=[{'all':!![]}];}return db[_0xc676('0x2d')]['findAll'](_0x19338b);})[_0xc676('0x26')](function(_0x3869f6){_0x39d9a0[_0xc676('0x43')]=_0x3869f6;return _0x39d9a0;})[_0xc676('0x26')](respondWithFilteredResult(_0x1bd277,_0x19338b))[_0xc676('0x44')](handleError(_0x1bd277,null));};exports['show']=function(_0x58eee7,_0x2a5be2){var _0x14bf27={'raw':![],'where':{'id':_0x58eee7[_0xc676('0x45')]['id']}},_0x5d574b={};_0x5d574b[_0xc676('0x31')]=_[_0xc676('0x34')](db[_0xc676('0x2d')]['rawAttributes']);_0x5d574b[_0xc676('0x33')]=_['keys'](_0x58eee7[_0xc676('0x33')]);_0x5d574b[_0xc676('0x35')]=_[_0xc676('0x36')](_0x5d574b['model'],_0x5d574b[_0xc676('0x33')]);_0x14bf27['attributes']=_['intersection'](_0x5d574b[_0xc676('0x31')],qs['fields'](_0x58eee7[_0xc676('0x33')]['fields']));_0x14bf27['attributes']=_0x14bf27[_0xc676('0x38')]['length']?_0x14bf27[_0xc676('0x38')]:_0x5d574b['model'];if(_0x58eee7[_0xc676('0x33')][_0xc676('0x46')]){_0x14bf27[_0xc676('0x42')]=[{'all':!![]}];}_0x14bf27=_[_0xc676('0x3e')]({},_0x14bf27,_0x58eee7['options']);return db['UserProfile'][_0xc676('0x47')](_0x14bf27)[_0xc676('0x26')](handleEntityNotFound(_0x2a5be2,null))['then'](respondWithResult(_0x2a5be2,null))[_0xc676('0x44')](handleError(_0x2a5be2,null));};exports[_0xc676('0x48')]=function(_0x59be1a,_0x38d1bc){return db[_0xc676('0x2d')][_0xc676('0x48')](_0x59be1a[_0xc676('0x49')],{})[_0xc676('0x26')](respondWithResult(_0x38d1bc,0xc9))['catch'](handleError(_0x38d1bc,null));};exports[_0xc676('0x4a')]=function(_0xe02ca1,_0x4ab617){var _0x3ec90d={'where':{'id':_0xe02ca1[_0xc676('0x45')]['id']}},_0x201f9f={};_0x201f9f[_0xc676('0x31')]=_['keys'](db[_0xc676('0x2d')][_0xc676('0x2e')]);_0x3ec90d[_0xc676('0x38')]=_[_0xc676('0x36')](_0x201f9f['model'],qs[_0xc676('0x37')](_0xe02ca1[_0xc676('0x33')][_0xc676('0x37')]));_0x3ec90d[_0xc676('0x38')]=_0x3ec90d[_0xc676('0x38')]['length']?_0x3ec90d[_0xc676('0x38')]:_0x201f9f[_0xc676('0x31')];if(_0xe02ca1[_0xc676('0x33')]['includeAll']){_0x3ec90d[_0xc676('0x42')]=[{'all':!![]}];}_0x3ec90d=_[_0xc676('0x3e')]({},_0x3ec90d,_0xe02ca1['options']);return db[_0xc676('0x2d')]['find'](_0x3ec90d)[_0xc676('0x26')](handleEntityNotFound(_0x4ab617,null))[_0xc676('0x26')](function(_0x3ac42f){if(_0x3ac42f){var _0x2c2b1a=_0x3ac42f[_0xc676('0x4b')]({'plain':!![]});_0x2c2b1a=qs[_0xc676('0x4c')](_0x2c2b1a,['id',_0xc676('0x4d'),_0xc676('0x4e'),_0xc676('0x4f')]);_0xe02ca1['body']=_['omit'](_0xe02ca1[_0xc676('0x49')],['id',_0xc676('0x4d'),_0xc676('0x4e')]);return db['sequelize'][_0xc676('0x50')](function(_0x50ced3){return db[_0xc676('0x2d')][_0xc676('0x48')](_[_0xc676('0x3e')](_0x2c2b1a,_0xe02ca1[_0xc676('0x49')]),{'include':_0xe02ca1[_0xc676('0x33')][_0xc676('0x46')]?[{'all':!![]}]:undefined,'transaction':_0x50ced3})[_0xc676('0x26')](function(_0x422ef9){var _0x2a1025=_0x422ef9[_0xc676('0x4b')]({'plain':!![]});return db[_0xc676('0x51')][_0xc676('0x52')]({'where':{'userProfileId':_0xe02ca1[_0xc676('0x45')]['id']},'raw':!![]})['then'](function(_0x4d08b2){if(_0x4d08b2){return BPromise['each'](_0x4d08b2,function(_0x1ddb8c){return new BPromise(function(_0xd0d4df,_0x40f657){if(_0x1ddb8c[_0xc676('0x53')]===null||_0x1ddb8c[_0xc676('0x53')]===0x1)_0xd0d4df(null);return db[_0xc676('0x54')]['findAll']({'where':{'sectionId':_0x1ddb8c['id']},'raw':!![]})['then'](function(_0x24fd4e){var _0xc78f43=_[_0xc676('0x32')](_0x24fd4e,function(_0x2860ee){return qs[_0xc676('0x4c')](_0x2860ee,['id',_0xc676('0x4d'),_0xc676('0x4e'),_0xc676('0x55')]);});_0xd0d4df(_0xc78f43);})[_0xc676('0x44')](function(_0x54ef77){_0x40f657(_0x54ef77);});})[_0xc676('0x26')](function(_0x390aac){var _0x2e210b=qs[_0xc676('0x4c')](_0x1ddb8c,['id','createdAt','updatedAt']);_0x2e210b[_0xc676('0x56')]=_0x2a1025['id'];if(_0x390aac)_0x2e210b[_0xc676('0x57')]=_0x390aac;return _0x2e210b;})[_0xc676('0x26')](function(_0x27bad6){return db['UserProfileSection'][_0xc676('0x48')](_0x27bad6,{'include':[{'model':db[_0xc676('0x54')],'as':_0xc676('0x57')}],'raw':!![],'transaction':_0x50ced3});});})[_0xc676('0x26')](function(){return _0x2a1025;});}});});});}})[_0xc676('0x26')](respondWithResult(_0x4ab617,0xc9))[_0xc676('0x44')](handleError(_0x4ab617,null));};exports[_0xc676('0x25')]=function(_0x3fa0be,_0x5e3307){if(_0x3fa0be[_0xc676('0x49')]['id']){delete _0x3fa0be[_0xc676('0x49')]['id'];}return db[_0xc676('0x2d')][_0xc676('0x47')]({'where':{'id':_0x3fa0be[_0xc676('0x45')]['id']}})[_0xc676('0x26')](handleEntityNotFound(_0x5e3307,null))[_0xc676('0x26')](saveUpdates(_0x3fa0be[_0xc676('0x49')],null))[_0xc676('0x26')](respondWithResult(_0x5e3307,null))[_0xc676('0x44')](handleError(_0x5e3307,null));};exports[_0xc676('0x58')]=function(_0x12b4a8,_0x45b0d9){return db['UserProfile']['find']({'where':{'id':_0x12b4a8[_0xc676('0x45')]['id']}})['then'](handleEntityNotFound(_0x45b0d9,null))[_0xc676('0x26')](removeEntity(_0x45b0d9,null))[_0xc676('0x44')](handleError(_0x45b0d9,null));};exports[_0xc676('0x59')]=function(_0x24ab6d,_0x168af1){return db[_0xc676('0x2d')][_0xc676('0x59')]()[_0xc676('0x26')](respondWithResult(_0x168af1,null))[_0xc676('0x44')](handleError(_0x168af1,null));};exports[_0xc676('0x5a')]=function(_0x18219d,_0x4ab37a){var _0x1c6699=_0x18219d['body'];return db[_0xc676('0x2d')][_0xc676('0x47')]({'where':{'id':_0x18219d['params']['id']}})[_0xc676('0x26')](handleEntityNotFound(_0x4ab37a,null))['then'](function(_0x52da6b){if(_0x52da6b){return db[_0xc676('0x5b')][_0xc676('0x50')](function(_0x387c57){return db[_0xc676('0x51')]['destroy']({'where':{'userProfileId':_0x18219d[_0xc676('0x45')]['id'],'sectionId':_['map'](_0x1c6699,function(_0xbed790){return _0xbed790[_0xc676('0x55')];})},'transaction':_0x387c57})['then'](function(){var _0x1c5abb=_['map'](_0x1c6699,function(_0x11453e){_0x11453e['userProfileId']=_0x18219d['params']['id'];return _0x11453e;});var _0x48e420=[];return BPromise[_0xc676('0x5c')](_0x1c5abb,function(_0x5958f7){return db[_0xc676('0x51')]['create'](_0x5958f7,{'include':[{'model':db['UserProfileResource'],'as':'Resources'}],'raw':!![],'transaction':_0x387c57})[_0xc676('0x26')](function(_0xfa3d3b){_0x48e420['push'](_0xfa3d3b[_0xc676('0x4b')]({'plain':!![]}));});})[_0xc676('0x26')](function(){return _0x48e420;});});});}})[_0xc676('0x26')](function(_0x6370e){return _0x6370e;})[_0xc676('0x26')](respondWithResult(_0x4ab37a,null))[_0xc676('0x44')](handleError(_0x4ab37a,null));};exports['removeSections']=function(_0x3545cf,_0x1c3a78){var _0x1f469e;return db[_0xc676('0x2d')]['find']({'where':{'id':_0x3545cf[_0xc676('0x45')]['id']},'attributes':['id',_0xc676('0x2a')]})[_0xc676('0x26')](handleEntityNotFound(_0x1c3a78,null))['then'](function(_0x5b0734){if(_0x5b0734){_0x1f469e=_0x5b0734;return db[_0xc676('0x51')][_0xc676('0x58')]({'where':{'userProfileId':_0x3545cf['params']['id'],'sectionId':_0x3545cf['query'][_0xc676('0x5d')]}});}})[_0xc676('0x26')](function(){return _0x1f469e;})[_0xc676('0x26')](respondWithStatusCode(_0x1c3a78,null))[_0xc676('0x44')](handleError(_0x1c3a78,null));};exports[_0xc676('0x5e')]=function(_0x3f9766,_0x362850){var _0x3e9174=[];var _0x34d02f=[];return db['UserProfileSection'][_0xc676('0x52')]({'where':{'userProfileId':_0x3f9766[_0xc676('0x45')]['id']},'raw':!![]})[_0xc676('0x26')](function(_0x218fdc){_0x3e9174=_[_0xc676('0x3d')](_0x218fdc,function(_0xe100b4){return _0xe100b4[_0xc676('0x5f')]===0x1||_[_0xc676('0x60')]([0x3eb,0x709],_0xe100b4[_0xc676('0x55')]);});if(!_[_0xc676('0x61')](_0x3e9174)){return _[_0xc676('0x32')](_0x3e9174,function(_0xdda349){return _0xdda349[_0xc676('0x55')];});}else{return;}})[_0xc676('0x26')](function(_0x58c3be){if(_0x58c3be)_0x34d02f=_0x58c3be;if(_[_0xc676('0x60')](_0x34d02f,0x64)){var _0x48bc81=_[_0xc676('0x47')](_0x3e9174,{'sectionId':0x64});return hasDefaultDashboard(_0x48bc81)[_0xc676('0x26')](function(_0x38b734){return _['map'](_0x3e9174,function(_0x4a8225){if(_0x4a8225['sectionId']===0x64){_0x4a8225['subsections']=_0x38b734;}return _0x4a8225;});});}else{return;}})[_0xc676('0x26')](function(_0x58efc3){if(_0x58efc3)_0x3e9174=_0x58efc3;if(_[_0xc676('0x60')](_0x34d02f,0x3eb)){var _0x3ce83f=_[_0xc676('0x47')](_0x3e9174,{'sectionId':0x3eb});return getCustomDashboards(_0x3ce83f)[_0xc676('0x26')](function(_0x327f5f){return _[_0xc676('0x32')](_0x3e9174,function(_0x4d75e7){if(_0x3ce83f[_0xc676('0x5f')]){if(_0x4d75e7[_0xc676('0x55')]===0x3eb){_0x4d75e7[_0xc676('0x62')]=_0x327f5f;}}else{if(_0x4d75e7[_0xc676('0x55')]===0x64){_0x4d75e7[_0xc676('0x62')]=_0x327f5f;}}return _0x4d75e7;});});}else{return;}})[_0xc676('0x26')](function(_0x5d0034){if(_0x5d0034)_0x3e9174=_0x5d0034;if(_[_0xc676('0x60')](_0x34d02f,0x709)){var _0x4aa910=_[_0xc676('0x47')](_0x3e9174,{'sectionId':0x709});return getPlugins(_0x4aa910)[_0xc676('0x26')](function(_0x1c09d0){if(_0x4aa910['enabled']){return _[_0xc676('0x32')](_0x3e9174,function(_0x23b124){if(_0x23b124[_0xc676('0x55')]===0x709){_0x23b124[_0xc676('0x62')]=_0x1c09d0;}return _0x23b124;});}else{var _0x543479={'sectionId':0x76c,'enabled':0x1,'subsections':_0x1c09d0};var _0xbf3084=_[_0xc676('0x32')](_0x3e9174);_0xbf3084['push'](_0x543479);return _0xbf3084;}});}else{return;}})['then'](function(_0x8353e9){if(_0x8353e9)_0x3e9174=_0x8353e9;return _[_0xc676('0x3d')](_0x3e9174,[_0xc676('0x5f'),0x1]);})[_0xc676('0x26')](respondWithResult(_0x362850,null))['catch'](handleError(_0x362850,null));};function hasDefaultDashboard(_0x2a6449){var _0x1e194f=[0x65];return new BPromise(function(_0x2fb2c2,_0x102877){try{if(_0x2a6449[_0xc676('0x53')]){_0x2fb2c2(_0x1e194f);}else{return db['UserProfileResource'][_0xc676('0x63')]({'where':{'sectionId':_0x2a6449['id']},'raw':!![]})[_0xc676('0x26')](function(_0x14678e){_0x14678e?_0x2fb2c2(_0x1e194f):_0x2fb2c2();});}}catch(_0x36ced8){_0x102877(_0x36ced8);}});}function getCustomDashboards(_0x24536a){var _0x152b23=[];return new BPromise(function(_0x27fe90,_0x863661){try{if(_0x24536a[_0xc676('0x53')]){return db[_0xc676('0x64')][_0xc676('0x52')]({'raw':!![]})[_0xc676('0x26')](function(_0x4c2d26){_0x4c2d26[_0xc676('0x65')](function(_0x45a2c8){_0x152b23[_0xc676('0x66')](_0x45a2c8['id']+0x1869f);});_0x27fe90(_0x152b23);});}else{return db[_0xc676('0x54')][_0xc676('0x52')]({'where':{'sectionId':_0x24536a['id']},'raw':!![]})[_0xc676('0x26')](function(_0x5647ca){_0x5647ca[_0xc676('0x65')](function(_0x4afdd1){_0x152b23['push'](_0x4afdd1[_0xc676('0x67')]+0x1869f);});_0x27fe90(_0x152b23);});}}catch(_0x44c3a5){_0x863661(_0x44c3a5);}});}function getPlugins(_0xb13080){var _0x32065e=[];return new BPromise(function(_0x115577,_0x2db110){try{if(_0xb13080[_0xc676('0x53')]){return db[_0xc676('0x68')][_0xc676('0x52')]({'raw':!![]})[_0xc676('0x26')](function(_0x187d67){_0x187d67[_0xc676('0x65')](function(_0x441d55){_0x32065e[_0xc676('0x66')](_0x441d55['id']+0x15b38);});_0x115577(_0x32065e);});}else{return db['UserProfileResource'][_0xc676('0x52')]({'where':{'sectionId':_0xb13080['id']},'raw':!![]})[_0xc676('0x26')](function(_0x3583f8){_0x3583f8[_0xc676('0x65')](function(_0x3dd858){_0x32065e[_0xc676('0x66')](_0x3dd858['resourceId']+0x15b38);});_0x115577(_0x32065e);});}}catch(_0x4daec7){_0x2db110(_0x4daec7);}});}exports['addResources']=function(_0x1710f3,_0x259040){return db['UserProfile'][_0xc676('0x47')]({'where':{'id':_0x1710f3['params']['id']}})[_0xc676('0x26')](handleEntityNotFound(_0x259040,null))[_0xc676('0x26')](function(_0x3f2501){if(_0x3f2501){return db[_0xc676('0x5b')][_0xc676('0x50')](function(_0x263406){return db[_0xc676('0x51')][_0xc676('0x52')]({'where':{'userProfileId':_0x1710f3[_0xc676('0x45')]['id']},'attributes':['id'],'raw':!![]})[_0xc676('0x26')](function(_0xbe60c6){if(_0xbe60c6){return db[_0xc676('0x51')][_0xc676('0x58')]({'where':{'userProfileId':_0x1710f3[_0xc676('0x45')]['id'],'id':_[_0xc676('0x32')](_0xbe60c6,function(_0x5c3e05){return _0x5c3e05['id'];})},'transaction':_0x263406});}})[_0xc676('0x26')](function(_0x4d4c4c){var _0x2c8391=_['map'](_0x1710f3['body'],function(_0x55f99b){_0x55f99b[_0xc676('0x56')]=_0x1710f3['params']['id'];return _0x55f99b;});return db[_0xc676('0x51')][_0xc676('0x69')](_0x2c8391,{'raw':!![],'transaction':_0x263406});})[_0xc676('0x26')](function(_0x38f7e8){var _0x162963=_[_0xc676('0x3d')](_[_0xc676('0x32')](_0x38f7e8,function(_0x35590a){return _0x35590a[_0xc676('0x4b')]({'plain':!![]});}),{'includeAll':![]});if(_0x162963){return db['UserProfileSection'][_0xc676('0x52')]({'where':{'userProfileId':_0x1710f3[_0xc676('0x45')]['id'],'sectionId':_['map'](_0x162963,function(_0x51d8c6){return _0x51d8c6[_0xc676('0x55')];})},'attributes':['id',_0xc676('0x55')],'raw':!![]})[_0xc676('0x26')](function(_0x155b64){var _0xd87ce9=_[_0xc676('0x32')](_0x1710f3[_0xc676('0x49')],function(_0x1bf394){_0x1bf394['userProfileId']=_0x1710f3[_0xc676('0x45')]['id'];return _0x1bf394;});return db[_0xc676('0x54')]['bulkCreate'](_0xd87ce9,{'raw':!![],'transaction':_0x263406});});}})[_0xc676('0x44')](handleError(_0x259040,null));});}})['then'](function(_0x20aebb){var _0xcb1cb2=_[_0xc676('0x32')](_0x20aebb,function(_0x398af6){return _0x398af6[_0xc676('0x4b')]({'plain':!![]});});})[_0xc676('0x26')](respondWithResult(_0x259040,null))[_0xc676('0x44')](handleError(_0x259040,null));};exports[_0xc676('0x6a')]=function(_0xdaf7cb,_0x526ac5,_0x3547e5){return db[_0xc676('0x2d')][_0xc676('0x47')]({'where':{'id':_0xdaf7cb['params']['id']}})[_0xc676('0x26')](handleEntityNotFound(_0x526ac5,null))[_0xc676('0x26')](function(_0x20de47){if(_0x20de47){return _0x20de47['removeResources'](_0xdaf7cb[_0xc676('0x33')]['ids']);}})[_0xc676('0x26')](respondWithStatusCode(_0x526ac5,null))[_0xc676('0x44')](handleError(_0x526ac5,null));};exports[_0xc676('0x6b')]=function(_0x2e7601,_0x3b6b66){var _0x1f183d={};if(!_0x2e7601[_0xc676('0x33')][_0xc676('0x6c')])throw new Error('Missing\x20section\x20parameter');if(!_0x2e7601[_0xc676('0x33')][_0xc676('0x6d')](_0xc676('0x6e'))){_0x1f183d[_0xc676('0x21')]=qs[_0xc676('0x21')](_0x2e7601['query'][_0xc676('0x21')]);_0x1f183d[_0xc676('0x20')]=qs[_0xc676('0x20')](_0x2e7601[_0xc676('0x33')][_0xc676('0x20')]);}return db['UserProfile'][_0xc676('0x47')]({'where':{'id':_0x2e7601[_0xc676('0x45')]['id']}})[_0xc676('0x26')](function(_0x275a4e){if(!_0x275a4e)throw new Error(_0xc676('0x6f')+_0x2e7601['params']['id']);return db['UserProfile'][_0xc676('0x6b')](_0x2e7601);})[_0xc676('0x26')](respondWithFilteredResult(_0x3b6b66,_0x1f183d))[_0xc676('0x44')](handleError(_0x3b6b66,null));};
\ No newline at end of file
index af16162..56cf1e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9fc=['../../mysqldb','UserProfile','setMaxListeners','save','remove','hasOwnProperty','exports','events'];(function(_0x55c43e,_0x46f17a){var _0x4be57f=function(_0x36dea7){while(--_0x36dea7){_0x55c43e['push'](_0x55c43e['shift']());}};_0x4be57f(++_0x46f17a);}(_0xa9fc,0x19f));var _0xca9f=function(_0x35da42,_0x5c2610){_0x35da42=_0x35da42-0x0;var _0x370035=_0xa9fc[_0x35da42];return _0x370035;};'use strict';var EventEmitter=require(_0xca9f('0x0'));var UserProfile=require(_0xca9f('0x1'))['db'][_0xca9f('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xca9f('0x3')](0x0);var events={'afterCreate':_0xca9f('0x4'),'afterUpdate':'update','afterDestroy':_0xca9f('0x5')};function emitEvent(_0x4dc099){return function(_0xe81cd,_0x32709b,_0x5d2ddf){UserProfileEvents['emit'](_0x4dc099+':'+_0xe81cd['id'],_0xe81cd);UserProfileEvents['emit'](_0x4dc099,_0xe81cd);_0x5d2ddf(null);};}for(var e in events){if(events[_0xca9f('0x6')](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0xca9f('0x7')]=UserProfileEvents;
\ No newline at end of file
+var _0x11e5=['emit','hasOwnProperty','hook','events','UserProfile','setMaxListeners','update','remove'];(function(_0x5eb4fd,_0x48bbed){var _0x5371d3=function(_0x17e038){while(--_0x17e038){_0x5eb4fd['push'](_0x5eb4fd['shift']());}};_0x5371d3(++_0x48bbed);}(_0x11e5,0x8b));var _0x511e=function(_0x3d1684,_0x103504){_0x3d1684=_0x3d1684-0x0;var _0x20dbaa=_0x11e5[_0x3d1684];return _0x20dbaa;};'use strict';var EventEmitter=require(_0x511e('0x0'));var UserProfile=require('../../mysqldb')['db'][_0x511e('0x1')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x511e('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x511e('0x3'),'afterDestroy':_0x511e('0x4')};function emitEvent(_0x101e06){return function(_0x5cab33,_0x249e4d,_0x4fbd4f){UserProfileEvents['emit'](_0x101e06+':'+_0x5cab33['id'],_0x5cab33);UserProfileEvents[_0x511e('0x5')](_0x101e06,_0x5cab33);_0x4fbd4f(null);};}for(var e in events){if(events[_0x511e('0x6')](e)){var event=events[e];UserProfile[_0x511e('0x7')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
index 27d268e..9576802 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd4f=['Schedule','sounds','tags','Tag','templates','Template','triggers','trunks','variables','Plugin','extractedreports','Reports','reportId','metrics','toUpperCase','slice','Sequelize','QueryTypes','ui.','InteractionId','ui.createdAt','user_has_','_interactions','where','ui.UserId\x20=\x20?','sequelize','query','toString','define','UserProfile','user_profiles','raw','section','mergeResources','length','push','UserProfileSection','find','params','all','ignore','isEmpty','union','rawAttributes','keys','intersection','attributes','fields','nolimit','limit','offset','order','sort','filters','pick','merge','key','VIRTUAL','foreignKey','forEach','options','includeAll','include','reportType','default','DefaultReports','CustomReports','count','ids','color','tag','ThroughTags','rows','openTabs','chat','dataValues','fax','mail','openchannel','whatsapp','lodash','exports','models','filter','findAll','then','map','field','model','associatedResources','name','catch','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','toLowerCase','squareprojects','SquareProject','odbc','childModel','SquareOdbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projectName','projects','JscriptyProject','CmContact','Lists','ListId','CmList','companies','CmCompany','CmCustomField','chatqueues','ChatQueue','ChatWebsite','FaxQueue','faxaccounts','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','VoiceMail','voicerecordings','VoiceRecording','Agents','membername','User','role','agent','Telephones','VoiceQueues','queue','VoiceQueue','type','inbound','outbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','MailQueue','mailaccounts','mailsubstatuses','MailSubstatus','openchannelqueues','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','SmsAccount','WhatsappQueue','whatsappaccounts','teams','voicequeues','queuecampaigns','users','agents','telephones','admin','user','zendeskaccounts','ZendeskAccount','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','SugarcrmAccount','deskaccounts','DeskAccount','ZohoAccount','CannedAnswer','dispositions','Disposition','customdashboards','intervals','Interval','pauses','Pause','scheduler'];(function(_0x1df644,_0x513cd7){var _0x236bdb=function(_0x43bc01){while(--_0x43bc01){_0x1df644['push'](_0x1df644['shift']());}};_0x236bdb(++_0x513cd7);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x79ffa7,_0x3e1107){_0x79ffa7=_0x79ffa7-0x0;var _0x3f6731=_0xdd4f[_0x79ffa7];return _0x3f6731;};'use strict';var _=require(_0xfdd4('0x0'));var attributes=require('./userProfile.attributes');var qs=require('../../components/parsers/qs');var squel=require('squel');module[_0xfdd4('0x1')]=function(_0x19cda7){var _0x5918d1=_0x19cda7[_0xfdd4('0x2')];function _0x3175f6(_0x6b2b0d,_0x554e44){return new Promise(function(_0x398015,_0x43cbcf){if(!_0x554e44)return _0x398015(null);var _0x30e080=_0x554e44[_0xfdd4('0x3')]?{[_0x554e44[_0xfdd4('0x3')]['field']]:_0x554e44[_0xfdd4('0x3')]['value']}:undefined;return _0x5918d1[_0x6b2b0d][_0xfdd4('0x4')]({'where':_0x30e080,'raw':!![]})[_0xfdd4('0x5')](function(_0x1e823e){_0x554e44['associatedResources']=_[_0xfdd4('0x6')](_0x1e823e,'id');_0x398015(_0x554e44);})['catch'](function(_0x27a9f3){_0x43cbcf(_0x27a9f3);});});}function _0x3ce77a(_0x210c7d,_0x382350){return new Promise(function(_0x35e22d,_0xc9fcf1){var _0x1e21ca=_0x210c7d[_0xfdd4('0x3')]?{[_0x210c7d[_0xfdd4('0x3')][_0xfdd4('0x7')]]:_0x210c7d[_0xfdd4('0x3')]['value']}:undefined;return _0x5918d1[_0x210c7d[_0xfdd4('0x8')]][_0xfdd4('0x4')]({'where':_0x1e21ca,'raw':!![]})[_0xfdd4('0x5')](function(_0x57b21f){_0x382350[_0xfdd4('0x9')]=_['map'](_0x57b21f,function(_0x467824){return _0x467824[_0xfdd4('0xa')];});_0x35e22d(_0x382350);})[_0xfdd4('0xb')](function(_0x431255){_0xc9fcf1(_0x431255);});});}function _0x37b05f(_0x52cf2c,_0x47ed1d,_0x559c77){if(!_0x47ed1d)return Promise[_0xfdd4('0xc')](null);return new Promise(function(_0x216c7e,_0x2eb174){return _0x5918d1[_0xfdd4('0xd')][_0xfdd4('0x4')]({'where':{'sectionId':_0x47ed1d['id']},'raw':!![]})[_0xfdd4('0x5')](function(_0x1746e1){if(_0x52cf2c[_0xfdd4('0x7')]&&_0x52cf2c[_0xfdd4('0x7')]!=='id'){_0x47ed1d['associatedResources']=_[_0xfdd4('0x6')](_0x1746e1,function(_0x3e8eac){return _0x3e8eac[_0x52cf2c[_0xfdd4('0x7')]];});}else{if(_0x559c77===_0xfdd4('0xe')){_0x47ed1d[_0xfdd4('0x9')]=_[_0xfdd4('0x6')](_0x1746e1,function(_0x452afb){return{'id':_0x452afb[_0xfdd4('0xf')],'type':_0x452afb['type']};});}else{_0x47ed1d[_0xfdd4('0x9')]=_[_0xfdd4('0x6')](_0x1746e1,function(_0x2a24e8){return _0x2a24e8[_0xfdd4('0xf')];});}}_0x216c7e(_0x47ed1d);})[_0xfdd4('0xb')](function(_0x144acd){_0x2eb174(_0x144acd);});});}function _0x451767(_0x277ec1,_0x538b00){var _0x1e14da={'parentSections':[]};switch(_0x277ec1[_0xfdd4('0x10')]()){case _0xfdd4('0x11'):_0x1e14da['childModel']=_0xfdd4('0x12');break;case _0xfdd4('0x13'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x15');break;case _0xfdd4('0x16'):_0x1e14da['childModel']=_0xfdd4('0x17');_0x1e14da[_0xfdd4('0x18')]=[{'name':_0xfdd4('0x19'),'field':_0xfdd4('0xa'),'foreignKey':_0xfdd4('0x1a')}];break;case _0xfdd4('0x1b'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x1c');break;case'contacts':_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x1d');_0x1e14da[_0xfdd4('0x18')]=[{'name':_0xfdd4('0x1e'),'field':'id','foreignKey':_0xfdd4('0x1f')}];break;case'lists':_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x20');break;case _0xfdd4('0x21'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x22');break;case'globalcustomfields':_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x23');break;case _0xfdd4('0x24'):_0x1e14da['childModel']=_0xfdd4('0x25');break;case'chatwebsites':_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x26');break;case'faxqueues':_0x1e14da['childModel']=_0xfdd4('0x27');break;case _0xfdd4('0x28'):_0x1e14da['childModel']='FaxAccount';break;case _0xfdd4('0x29'):case _0xfdd4('0x2a'):case _0xfdd4('0x2b'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x2c');break;case _0xfdd4('0x2d'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x2e');break;case _0xfdd4('0x2f'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x30');break;case _0xfdd4('0x31'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x32');_0x1e14da[_0xfdd4('0x18')]=[{'name':_0xfdd4('0x33'),'field':_0xfdd4('0xa'),'foreignKey':_0xfdd4('0x34'),'model':_0xfdd4('0x35'),'filter':{'field':_0xfdd4('0x36'),'value':[_0xfdd4('0x37')]}},{'name':_0xfdd4('0x38'),'field':_0xfdd4('0xa'),'foreignKey':_0xfdd4('0x34'),'model':_0xfdd4('0x35'),'filter':{'field':_0xfdd4('0x36'),'value':['telephone']}},{'name':_0xfdd4('0x39'),'field':_0xfdd4('0xa'),'foreignKey':_0xfdd4('0x3a'),'model':_0xfdd4('0x3b'),'filter':{'field':_0xfdd4('0x3c'),'value':[_0xfdd4('0x3d')]}},{'name':'QueueCampaigns','field':_0xfdd4('0xa'),'foreignKey':'queue','model':_0xfdd4('0x3b'),'filter':{'field':_0xfdd4('0x3c'),'value':[_0xfdd4('0x3e')]}}];break;case _0xfdd4('0x3f'):_0x1e14da['childModel']=_0xfdd4('0x40');break;case _0xfdd4('0x41'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x42');break;case _0xfdd4('0x43'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x44');break;case _0xfdd4('0x45'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x46');break;case'mailqueues':_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x47');break;case _0xfdd4('0x48'):_0x1e14da[_0xfdd4('0x14')]='MailAccount';break;case _0xfdd4('0x49'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x4a');break;case _0xfdd4('0x4b'):_0x1e14da[_0xfdd4('0x14')]='OpenchannelQueue';break;case _0xfdd4('0x4c'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x4d');break;case _0xfdd4('0x4e'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x4f');break;case _0xfdd4('0x50'):_0x1e14da['childModel']=_0xfdd4('0x51');break;case'whatsappqueues':_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x52');break;case _0xfdd4('0x53'):_0x1e14da[_0xfdd4('0x14')]='WhatsappAccount';break;case _0xfdd4('0x54'):_0x1e14da[_0xfdd4('0x14')]='Team';break;case _0xfdd4('0x55'):case _0xfdd4('0x56'):_0x1e14da['childModel']=_0xfdd4('0x3b');if(_0x538b00){_0x1e14da['parentSections']=[{'name':'VoiceQueues'},{'name':'QueueCampaigns'}];}break;case _0xfdd4('0x57'):case _0xfdd4('0x58'):case _0xfdd4('0x59'):_0x1e14da['childModel']=_0xfdd4('0x35');if(_0x538b00){_0x1e14da[_0xfdd4('0x18')]=[{'name':'Users','filter':{'field':_0xfdd4('0x36'),'value':[_0xfdd4('0x5a'),_0xfdd4('0x5b')]},'ignore':!![]},{'name':_0xfdd4('0x33')},{'name':_0xfdd4('0x38')}];}break;case _0xfdd4('0x5c'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x5d');break;case _0xfdd4('0x5e'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x5f');break;case _0xfdd4('0x60'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x61');break;case'sugarcrmaccounts':_0x1e14da['childModel']=_0xfdd4('0x62');break;case _0xfdd4('0x63'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x64');break;case'zohoaccounts':_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x65');break;case'vtigeraccounts':_0x1e14da['childModel']='User';break;case'cannedanswers':_0x1e14da['childModel']=_0xfdd4('0x66');break;case _0xfdd4('0x67'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x68');break;case _0xfdd4('0x69'):_0x1e14da[_0xfdd4('0x14')]='Dashboard';break;case _0xfdd4('0x6a'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x6b');break;case _0xfdd4('0x6c'):_0x1e14da['childModel']=_0xfdd4('0x6d');break;case _0xfdd4('0x6e'):_0x1e14da['childModel']=_0xfdd4('0x6f');break;case _0xfdd4('0x70'):_0x1e14da['childModel']='Sound';break;case _0xfdd4('0x71'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x72');break;case _0xfdd4('0x73'):_0x1e14da[_0xfdd4('0x14')]=_0xfdd4('0x74');break;case _0xfdd4('0x75'):_0x1e14da[_0xfdd4('0x14')]='Trigger';break;case _0xfdd4('0x76'):_0x1e14da['childModel']='Trunk';break;case _0xfdd4('0x77'):_0x1e14da[_0xfdd4('0x14')]='Variable';break;case'plugins':_0x1e14da['childModel']=_0xfdd4('0x78');break;case _0xfdd4('0x79'):_0x1e14da['childModel']=_0xfdd4('0xe');_0x1e14da[_0xfdd4('0x18')]=[{'name':_0xfdd4('0x7a'),'field':'id','foreignKey':_0xfdd4('0x7b')}];break;case _0xfdd4('0x7c'):_0x1e14da['childModel']='AnalyticMetric';break;}return _0x1e14da;}function _0x483942(_0x5d0136,_0x3e5cb0){var _0x14d07e=_0x5d0136['charAt'](0x0)[_0xfdd4('0x7d')]()+_0x5d0136[_0xfdd4('0x7e')](0x1);var _0x4d4304={'type':_0x5918d1[_0xfdd4('0x7f')][_0xfdd4('0x80')]['SELECT'],'raw':!![]};return new Promise(function(_0x1497ff,_0x2b7081){var _0xd4e5e4=squel['select']()[_0xfdd4('0x7')](_0xfdd4('0x81')+_0x14d07e+_0xfdd4('0x82'),'id')[_0xfdd4('0x7')](_0xfdd4('0x83'))['from'](_0xfdd4('0x84')+_0x5d0136+_0xfdd4('0x85'),'ui')[_0xfdd4('0x86')](_0xfdd4('0x87'),_0x3e5cb0['id']);return _0x5918d1[_0xfdd4('0x88')][_0xfdd4('0x89')](_0xd4e5e4[_0xfdd4('0x8a')](),_0x4d4304)[_0xfdd4('0x5')](function(_0x38b58b){_0x3e5cb0[_0x14d07e+'OpenTabs']=_0x38b58b;_0x1497ff(_0x38b58b);})[_0xfdd4('0xb')](function(_0x2799b2){_0x2b7081(_0x2799b2);});});}return _0x19cda7[_0xfdd4('0x8b')](_0xfdd4('0x8c'),attributes,{'tableName':_0xfdd4('0x8d'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x593f5c){var _0x46e7eb={'raw':_0x593f5c[_0xfdd4('0x89')][_0xfdd4('0x8e')],'where':{}};var _0x12e917={};var _0x383175={'count':0x0,'rows':[]};var _0x2be970=_0x593f5c[_0xfdd4('0x89')][_0xfdd4('0x8f')];var _0x35c7ab=_0x593f5c[_0xfdd4('0x89')][_0xfdd4('0x90')]||![];var _0x2792c4=_0x451767(_0x2be970,_0x35c7ab);if(!_0x2792c4[_0xfdd4('0x14')])throw new Error('Invalid\x20section\x20\x27'+_0x2be970+'\x27');var _0xb9d86a=[{'name':_0x2be970}];if(!_['isEmpty'](_0x2792c4[_0xfdd4('0x18')]))_0xb9d86a=_0x2792c4[_0xfdd4('0x18')];var _0x393e11=[];for(var _0x36843c=0x0;_0x36843c<_0xb9d86a[_0xfdd4('0x91')];_0x36843c++){_0x393e11[_0xfdd4('0x92')](_0x5918d1[_0xfdd4('0x93')][_0xfdd4('0x94')]({'where':{'userProfileId':_0x593f5c[_0xfdd4('0x95')]['id'],'name':_0xb9d86a[_0x36843c][_0xfdd4('0xa')]},'raw':!![]}));}return Promise[_0xfdd4('0x96')](_0x393e11)[_0xfdd4('0x5')](function(_0x50e984){var _0x4bac59=_['filter'](_0x50e984,function(_0x3feda6){return _0x3feda6?_0x3feda6:undefined;});var _0x2fcfe4=_['filter'](_0xb9d86a,[_0xfdd4('0x97'),!![]]);var _0x3f027b=_[_0xfdd4('0x98')](_0x4bac59)&&_[_0xfdd4('0x98')](_0x2fcfe4)?null:_[_0xfdd4('0x99')](_0x2fcfe4,_0x4bac59);if(!_0x3f027b)return null;var _0x4b14bf=[];for(var _0x150537=0x0;_0x150537<_0x3f027b[_0xfdd4('0x91')];_0x150537++){var _0x3958cd=_['find'](_0xb9d86a,function(_0x366f1c){return _0x3f027b[_0x150537]?_0x366f1c['name']===_0x3f027b[_0x150537][_0xfdd4('0xa')]:null;});if(_0x3958cd){if(_0x3f027b[_0x150537][_0xfdd4('0x97')]){_0x4b14bf[_0xfdd4('0x92')](_0x3175f6(_0x2792c4[_0xfdd4('0x14')],_0x3f027b[_0x150537]));}else{if(!_0x3f027b[_0x150537]['autoAssociation']){_0x4b14bf[_0xfdd4('0x92')](_0x37b05f(_0x3958cd,_0x3f027b[_0x150537],_0x2792c4[_0xfdd4('0x14')]));}else{if(_0x3958cd['model']){_0x4b14bf[_0xfdd4('0x92')](_0x3ce77a(_0x3958cd,_0x3f027b[_0x150537]));}}}}}return Promise[_0xfdd4('0x96')](_0x4b14bf);})[_0xfdd4('0x5')](function(_0x53c8ac){var _0x1a1028=_0x53c8ac;var _0x26c0ac=null;if(_0x1a1028){_0x26c0ac=_0x1a1028[_0xfdd4('0x91')]===0x1?_0x1a1028[0x0]:null;}if(!_0x26c0ac&&!_0x1a1028)return _0x383175;var _0x535b07=_0x5918d1[_0x2792c4[_0xfdd4('0x14')]][_0xfdd4('0x9a')];_0x12e917[_0xfdd4('0x8')]=_[_0xfdd4('0x9b')](_0x535b07);_0x12e917[_0xfdd4('0x89')]=_[_0xfdd4('0x9b')](_0x593f5c[_0xfdd4('0x89')]);_0x12e917['filters']=_[_0xfdd4('0x9c')](_0x12e917[_0xfdd4('0x8')],_0x12e917[_0xfdd4('0x89')]);_0x46e7eb[_0xfdd4('0x9d')]=_[_0xfdd4('0x9c')](_0x12e917[_0xfdd4('0x8')],qs[_0xfdd4('0x9e')](_0x593f5c[_0xfdd4('0x89')]['fields']));_0x46e7eb[_0xfdd4('0x9d')]=_0x46e7eb['attributes']['length']?_0x46e7eb[_0xfdd4('0x9d')]:_0x12e917['model'];if(!_0x593f5c[_0xfdd4('0x89')]['hasOwnProperty'](_0xfdd4('0x9f'))){_0x46e7eb[_0xfdd4('0xa0')]=qs[_0xfdd4('0xa0')](_0x593f5c[_0xfdd4('0x89')][_0xfdd4('0xa0')]);_0x46e7eb[_0xfdd4('0xa1')]=qs[_0xfdd4('0xa1')](_0x593f5c['query']['offset']);}_0x46e7eb[_0xfdd4('0xa2')]=qs['sort'](_0x593f5c[_0xfdd4('0x89')][_0xfdd4('0xa3')]);_0x46e7eb[_0xfdd4('0x86')]=qs[_0xfdd4('0xa4')](_[_0xfdd4('0xa5')](_0x593f5c[_0xfdd4('0x89')],_0x12e917[_0xfdd4('0xa4')]));if(_0x593f5c['query']['filter']){_0x46e7eb[_0xfdd4('0x86')]=_[_0xfdd4('0xa6')](_0x46e7eb[_0xfdd4('0x86')],{'$or':_[_0xfdd4('0x6')](_0x535b07,function(_0x1deacd){if(_0x1deacd[_0xfdd4('0x3c')][_0xfdd4('0xa7')]!==_0xfdd4('0xa8')){var _0xf78c69={};_0xf78c69[_0x1deacd[_0xfdd4('0x7')]]={'$like':'%'+_0x593f5c[_0xfdd4('0x89')][_0xfdd4('0x3')]+'%'};return _0xf78c69;}})});}var _0x256ce8=[];var _0x48c480=null;var _0x4bb814={};if(_0x26c0ac){_0x48c480=_[_0xfdd4('0x94')](_0xb9d86a,[_0xfdd4('0xa'),_0x26c0ac['name']]);if(_0x48c480['field']){_0x4bb814={};if(_0x2792c4[_0xfdd4('0x14')]===_0xfdd4('0xe')){_0x4bb814[_0x48c480['foreignKey']]=_[_0xfdd4('0x6')](_0x26c0ac[_0xfdd4('0x9')],'id');}else{_0x4bb814[_0x48c480[_0xfdd4('0xa9')]]=_0x26c0ac[_0xfdd4('0x9')];}_0x256ce8[_0xfdd4('0x92')](_0x4bb814);}else{_0x46e7eb[_0xfdd4('0x86')]['id']=_0x26c0ac['associatedResources'];}}else{for(var _0x3924c7=0x0;_0x3924c7<_0x1a1028[_0xfdd4('0x91')];_0x3924c7++){_0x48c480=_[_0xfdd4('0x94')](_0xb9d86a,[_0xfdd4('0xa'),_0x1a1028[_0x3924c7][_0xfdd4('0xa')]]);if(_0x48c480[_0xfdd4('0x7')]){_0x4bb814={};_0x4bb814[_0x48c480[_0xfdd4('0xa9')]]=_0x1a1028[_0x3924c7][_0xfdd4('0x9')];_0x256ce8['push'](_0x4bb814);}else{if(!_0x46e7eb['where']['id'])_0x46e7eb[_0xfdd4('0x86')]['id']=[];_0x1a1028[_0x3924c7]['associatedResources'][_0xfdd4('0xaa')](function(_0x1b4f61){_0x46e7eb[_0xfdd4('0x86')]['id'][_0xfdd4('0x92')](_0x1b4f61);});}}}if(!_[_0xfdd4('0x98')](_0x256ce8)){_0x46e7eb['where']=_['merge'](_0x46e7eb[_0xfdd4('0x86')],{'$and':{'$or':_0x256ce8}});}_0x46e7eb=_['merge']({},_0x46e7eb,_0x593f5c[_0xfdd4('0xab')]);if(_0x26c0ac&&!_0x26c0ac['autoAssociation']&&_0x2792c4[_0xfdd4('0x14')]===_0xfdd4('0xe')){if(_0x593f5c[_0xfdd4('0x89')][_0xfdd4('0xac')]){_0x46e7eb[_0xfdd4('0xad')]=[{'all':!![]}];}return _0x5918d1[_0x2792c4[_0xfdd4('0x14')]][_0xfdd4('0x4')](_0x46e7eb)[_0xfdd4('0x5')](function(_0x3d23df){var _0x1ce2d7=[];_0x3d23df[_0xfdd4('0xaa')](function(_0x4a25bb){var _0xf15402;switch(_0x4a25bb[_0xfdd4('0xae')]){case _0xfdd4('0xaf'):_0xf15402=_[_0xfdd4('0x94')](_0x26c0ac[_0xfdd4('0x9')],function(_0x33a5a0){return _0x33a5a0['id']===_0x4a25bb[_0xfdd4('0x7b')]&&_0x33a5a0[_0xfdd4('0x3c')]===_0xfdd4('0xb0');});break;case'custom':_0xf15402=_['find'](_0x26c0ac[_0xfdd4('0x9')],function(_0x244d6d){return _0x244d6d['id']===_0x4a25bb[_0xfdd4('0x7b')]&&_0x244d6d['type']===_0xfdd4('0xb1');});break;}if(_0xf15402)_0x1ce2d7[_0xfdd4('0x92')](_0x4a25bb);});_0x383175[_0xfdd4('0xb2')]=_0x1ce2d7[_0xfdd4('0x91')];_0x383175['rows']=_0x1ce2d7;return _0x383175;});}else{if(!_['isEmpty'](_0x593f5c[_0xfdd4('0x89')][_0xfdd4('0xb3')])){_0x46e7eb[_0xfdd4('0x86')]['id']=_0x46e7eb['where']['id']?_[_0xfdd4('0x9c')](_0x46e7eb[_0xfdd4('0x86')]['id'],_0x593f5c[_0xfdd4('0x89')][_0xfdd4('0xb3')]):_0x593f5c[_0xfdd4('0x89')][_0xfdd4('0xb3')];}return _0x5918d1[_0x2792c4['childModel']]['count']({'where':_0x46e7eb[_0xfdd4('0x86')]})[_0xfdd4('0x5')](function(_0x6a1410){_0x383175[_0xfdd4('0xb2')]=_0x6a1410;if(_0x593f5c[_0xfdd4('0x89')][_0xfdd4('0xac')]){if(_0x2792c4[_0xfdd4('0x14')]===_0xfdd4('0x1d')){_0x46e7eb['include']=[{'model':_0x5918d1[_0xfdd4('0x72')],'as':'Tags','attributes':['id',_0xfdd4('0xa'),_0xfdd4('0xb4')],'required':_0x593f5c['query'][_0xfdd4('0xb5')]?!![]:![]},{'model':_0x5918d1[_0xfdd4('0x72')],'as':_0xfdd4('0xb6'),'attributes':['id',_0xfdd4('0xa'),_0xfdd4('0xb4')],'through':_0x593f5c[_0xfdd4('0x89')][_0xfdd4('0xb5')]?{'attributes':[],'where':{'TagId':_0x593f5c[_0xfdd4('0x89')][_0xfdd4('0xb5')]||undefined}}:{},'required':_0x593f5c['query'][_0xfdd4('0xb5')]?!![]:![]}];}else{_0x46e7eb['include']=[{'all':!![]}];}}return _0x5918d1[_0x2792c4[_0xfdd4('0x14')]]['findAll'](_0x46e7eb);})['then'](function(_0x43d22e){_0x383175[_0xfdd4('0xb7')]=_0x43d22e;if(_0x2be970===_0xfdd4('0x33')&&_0x593f5c[_0xfdd4('0x89')][_0xfdd4('0xb8')]==='true'){var _0x45dccd=[];for(var _0x1fad79=0x0;_0x1fad79<_0x383175[_0xfdd4('0xb7')][_0xfdd4('0x91')];_0x1fad79++){_0x45dccd[_0xfdd4('0x92')](_0x483942(_0xfdd4('0xb9'),_0x383175['rows'][_0x1fad79][_0xfdd4('0xba')]));_0x45dccd[_0xfdd4('0x92')](_0x483942('sms',_0x383175['rows'][_0x1fad79][_0xfdd4('0xba')]));_0x45dccd[_0xfdd4('0x92')](_0x483942(_0xfdd4('0xbb'),_0x383175['rows'][_0x1fad79]['dataValues']));_0x45dccd[_0xfdd4('0x92')](_0x483942(_0xfdd4('0xbc'),_0x383175[_0xfdd4('0xb7')][_0x1fad79]['dataValues']));_0x45dccd['push'](_0x483942(_0xfdd4('0xbd'),_0x383175[_0xfdd4('0xb7')][_0x1fad79][_0xfdd4('0xba')]));_0x45dccd['push'](_0x483942(_0xfdd4('0xbe'),_0x383175['rows'][_0x1fad79][_0xfdd4('0xba')]));}return Promise[_0xfdd4('0x96')](_0x45dccd)[_0xfdd4('0x5')](function(){return _0x383175;});}return _0x383175;});}});}}});};
\ No newline at end of file
+var _0x4213=['smsqueues','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','WhatsappAccount','teams','Team','voicequeues','queuecampaigns','VoiceQueues','users','telephones','Users','admin','user','Agents','zendeskaccounts','salesforceaccounts','SalesforceAccount','FreshdeskAccount','sugarcrmaccounts','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','CannedAnswer','dispositions','customdashboards','Dashboard','intervals','pauses','Pause','scheduler','Schedule','sounds','tags','templates','Template','triggers','trunks','Trunk','variables','Variable','plugins','Plugin','Reports','reportId','metrics','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','ui.','InteractionId','ui.createdAt','from','user_has_','_interactions','ui.UserId\x20=\x20?','query','toString','define','UserProfile','user_profiles','raw','section','mergeResources','Invalid\x20section\x20\x27','push','find','ignore','isEmpty','union','autoAssociation','rawAttributes','keys','filters','intersection','attributes','fields','nolimit','limit','offset','order','sort','where','pick','merge','key','foreignKey','length','forEach','options','includeAll','include','reportType','default','DefaultReports','custom','CustomReports','count','ids','Tags','color','ThroughTags','tag','rows','chat','dataValues','fax','mail','openchannel','whatsapp','all','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','filter','field','value','findAll','catch','model','then','map','name','UserProfileResource','associatedResources','AnalyticExtractedReport','resourceId','type','squareprojects','childModel','SquareProject','SquareOdbc','parentSections','SquareProjects','projectName','projects','JscriptyProject','CmContact','ListId','companies','globalcustomfields','CmCustomField','chatwebsites','ChatWebsite','faxqueues','FaxQueue','faxaccounts','FaxAccount','inboundroutes','VoiceExtension','VoiceContext','voicemails','VoiceMail','VoiceRecording','User','role','agent','Telephones','membername','QueueCampaigns','VoiceQueue','outbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','OpenchannelAccount'];(function(_0x29dcb6,_0x163c34){var _0x3ac4ba=function(_0x5a91f0){while(--_0x5a91f0){_0x29dcb6['push'](_0x29dcb6['shift']());}};_0x3ac4ba(++_0x163c34);}(_0x4213,0x77));var _0x3421=function(_0x3b4de2,_0x525d6b){_0x3b4de2=_0x3b4de2-0x0;var _0x530dfa=_0x4213[_0x3b4de2];return _0x530dfa;};'use strict';var _=require(_0x3421('0x0'));var attributes=require(_0x3421('0x1'));var qs=require(_0x3421('0x2'));var squel=require(_0x3421('0x3'));module[_0x3421('0x4')]=function(_0x153f3a){var _0x1bab18=_0x153f3a['models'];function _0xdbd54e(_0x5c3719,_0x459c5e){return new Promise(function(_0xfe969c,_0x2155f8){if(!_0x459c5e)return _0xfe969c(null);var _0x2a04e0=_0x459c5e['filter']?{[_0x459c5e[_0x3421('0x5')][_0x3421('0x6')]]:_0x459c5e[_0x3421('0x5')][_0x3421('0x7')]}:undefined;return _0x1bab18[_0x5c3719][_0x3421('0x8')]({'where':_0x2a04e0,'raw':!![]})['then'](function(_0x1f20cf){_0x459c5e['associatedResources']=_['map'](_0x1f20cf,'id');_0xfe969c(_0x459c5e);})[_0x3421('0x9')](function(_0x4b9d24){_0x2155f8(_0x4b9d24);});});}function _0x2d8676(_0x3c1c44,_0x113554){return new Promise(function(_0x38b521,_0x2f12b1){var _0x55c317=_0x3c1c44[_0x3421('0x5')]?{[_0x3c1c44['filter'][_0x3421('0x6')]]:_0x3c1c44[_0x3421('0x5')][_0x3421('0x7')]}:undefined;return _0x1bab18[_0x3c1c44[_0x3421('0xa')]][_0x3421('0x8')]({'where':_0x55c317,'raw':!![]})[_0x3421('0xb')](function(_0x25ffd4){_0x113554['associatedResources']=_[_0x3421('0xc')](_0x25ffd4,function(_0x4b5f43){return _0x4b5f43[_0x3421('0xd')];});_0x38b521(_0x113554);})[_0x3421('0x9')](function(_0x59ae45){_0x2f12b1(_0x59ae45);});});}function _0x1e33ab(_0x4c6f7b,_0x16bc8f,_0x23694b){if(!_0x16bc8f)return Promise['resolve'](null);return new Promise(function(_0x3584d6,_0x3dec08){return _0x1bab18[_0x3421('0xe')][_0x3421('0x8')]({'where':{'sectionId':_0x16bc8f['id']},'raw':!![]})[_0x3421('0xb')](function(_0x200fdd){if(_0x4c6f7b[_0x3421('0x6')]&&_0x4c6f7b[_0x3421('0x6')]!=='id'){_0x16bc8f[_0x3421('0xf')]=_[_0x3421('0xc')](_0x200fdd,function(_0x538a8b){return _0x538a8b[_0x4c6f7b['field']];});}else{if(_0x23694b===_0x3421('0x10')){_0x16bc8f['associatedResources']=_['map'](_0x200fdd,function(_0x545b1c){return{'id':_0x545b1c[_0x3421('0x11')],'type':_0x545b1c[_0x3421('0x12')]};});}else{_0x16bc8f[_0x3421('0xf')]=_[_0x3421('0xc')](_0x200fdd,function(_0x132e8e){return _0x132e8e[_0x3421('0x11')];});}}_0x3584d6(_0x16bc8f);})[_0x3421('0x9')](function(_0x705591){_0x3dec08(_0x705591);});});}function _0xb9af5f(_0x34389e,_0x48fb3d){var _0x57a4af={'parentSections':[]};switch(_0x34389e['toLowerCase']()){case _0x3421('0x13'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x15');break;case'odbc':_0x57a4af['childModel']=_0x3421('0x16');break;case'squarerecordings':_0x57a4af[_0x3421('0x14')]='SquareRecording';_0x57a4af[_0x3421('0x17')]=[{'name':_0x3421('0x18'),'field':_0x3421('0xd'),'foreignKey':_0x3421('0x19')}];break;case _0x3421('0x1a'):_0x57a4af['childModel']=_0x3421('0x1b');break;case'contacts':_0x57a4af['childModel']=_0x3421('0x1c');_0x57a4af['parentSections']=[{'name':'Lists','field':'id','foreignKey':_0x3421('0x1d')}];break;case'lists':_0x57a4af[_0x3421('0x14')]='CmList';break;case _0x3421('0x1e'):_0x57a4af[_0x3421('0x14')]='CmCompany';break;case _0x3421('0x1f'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x20');break;case'chatqueues':_0x57a4af[_0x3421('0x14')]='ChatQueue';break;case _0x3421('0x21'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x22');break;case _0x3421('0x23'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x24');break;case _0x3421('0x25'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x26');break;case _0x3421('0x27'):case'internalroutes':case'outboundroutes':_0x57a4af[_0x3421('0x14')]=_0x3421('0x28');break;case'contexts':_0x57a4af[_0x3421('0x14')]=_0x3421('0x29');break;case _0x3421('0x2a'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x2b');break;case'voicerecordings':_0x57a4af[_0x3421('0x14')]=_0x3421('0x2c');_0x57a4af[_0x3421('0x17')]=[{'name':'Agents','field':_0x3421('0xd'),'foreignKey':'membername','model':_0x3421('0x2d'),'filter':{'field':_0x3421('0x2e'),'value':[_0x3421('0x2f')]}},{'name':_0x3421('0x30'),'field':_0x3421('0xd'),'foreignKey':_0x3421('0x31'),'model':_0x3421('0x2d'),'filter':{'field':'role','value':['telephone']}},{'name':'VoiceQueues','field':_0x3421('0xd'),'foreignKey':'queue','model':'VoiceQueue','filter':{'field':_0x3421('0x12'),'value':['inbound']}},{'name':_0x3421('0x32'),'field':_0x3421('0xd'),'foreignKey':'queue','model':_0x3421('0x33'),'filter':{'field':_0x3421('0x12'),'value':[_0x3421('0x34')]}}];break;case _0x3421('0x35'):_0x57a4af['childModel']=_0x3421('0x36');break;case _0x3421('0x37'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x38');break;case _0x3421('0x39'):_0x57a4af['childModel']=_0x3421('0x3a');break;case _0x3421('0x3b'):_0x57a4af['childModel']=_0x3421('0x3c');break;case'mailqueues':_0x57a4af['childModel']='MailQueue';break;case _0x3421('0x3d'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x3e');break;case _0x3421('0x3f'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x40');break;case _0x3421('0x41'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x42');break;case _0x3421('0x43'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x44');break;case _0x3421('0x45'):_0x57a4af[_0x3421('0x14')]='SmsQueue';break;case _0x3421('0x46'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x47');break;case _0x3421('0x48'):_0x57a4af['childModel']=_0x3421('0x49');break;case'whatsappaccounts':_0x57a4af[_0x3421('0x14')]=_0x3421('0x4a');break;case _0x3421('0x4b'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x4c');break;case _0x3421('0x4d'):case _0x3421('0x4e'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x33');if(_0x48fb3d){_0x57a4af[_0x3421('0x17')]=[{'name':_0x3421('0x4f')},{'name':_0x3421('0x32')}];}break;case _0x3421('0x50'):case'agents':case _0x3421('0x51'):_0x57a4af['childModel']=_0x3421('0x2d');if(_0x48fb3d){_0x57a4af[_0x3421('0x17')]=[{'name':_0x3421('0x52'),'filter':{'field':_0x3421('0x2e'),'value':[_0x3421('0x53'),_0x3421('0x54')]},'ignore':!![]},{'name':_0x3421('0x55')},{'name':_0x3421('0x30')}];}break;case _0x3421('0x56'):_0x57a4af[_0x3421('0x14')]='ZendeskAccount';break;case _0x3421('0x57'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x58');break;case'freshdeskaccounts':_0x57a4af['childModel']=_0x3421('0x59');break;case _0x3421('0x5a'):_0x57a4af[_0x3421('0x14')]='SugarcrmAccount';break;case _0x3421('0x5b'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x5c');break;case _0x3421('0x5d'):_0x57a4af['childModel']=_0x3421('0x5e');break;case _0x3421('0x5f'):_0x57a4af[_0x3421('0x14')]='User';break;case'cannedanswers':_0x57a4af['childModel']=_0x3421('0x60');break;case _0x3421('0x61'):_0x57a4af['childModel']='Disposition';break;case _0x3421('0x62'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x63');break;case _0x3421('0x64'):_0x57a4af[_0x3421('0x14')]='Interval';break;case _0x3421('0x65'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x66');break;case _0x3421('0x67'):_0x57a4af['childModel']=_0x3421('0x68');break;case _0x3421('0x69'):_0x57a4af[_0x3421('0x14')]='Sound';break;case _0x3421('0x6a'):_0x57a4af['childModel']='Tag';break;case _0x3421('0x6b'):_0x57a4af['childModel']=_0x3421('0x6c');break;case _0x3421('0x6d'):_0x57a4af[_0x3421('0x14')]='Trigger';break;case _0x3421('0x6e'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x6f');break;case _0x3421('0x70'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x71');break;case _0x3421('0x72'):_0x57a4af[_0x3421('0x14')]=_0x3421('0x73');break;case'extractedreports':_0x57a4af[_0x3421('0x14')]=_0x3421('0x10');_0x57a4af['parentSections']=[{'name':_0x3421('0x74'),'field':'id','foreignKey':_0x3421('0x75')}];break;case _0x3421('0x76'):_0x57a4af['childModel']=_0x3421('0x77');break;}return _0x57a4af;}function _0x27085d(_0x447456,_0xfe91d7){var _0x1bca2c=_0x447456[_0x3421('0x78')](0x0)[_0x3421('0x79')]()+_0x447456[_0x3421('0x7a')](0x1);var _0x31fd9b={'type':_0x1bab18[_0x3421('0x7b')][_0x3421('0x7c')][_0x3421('0x7d')],'raw':!![]};return new Promise(function(_0x5ac16a,_0x10be7c){var _0x3a8883=squel['select']()[_0x3421('0x6')](_0x3421('0x7e')+_0x1bca2c+_0x3421('0x7f'),'id')[_0x3421('0x6')](_0x3421('0x80'))[_0x3421('0x81')](_0x3421('0x82')+_0x447456+_0x3421('0x83'),'ui')['where'](_0x3421('0x84'),_0xfe91d7['id']);return _0x1bab18['sequelize'][_0x3421('0x85')](_0x3a8883[_0x3421('0x86')](),_0x31fd9b)[_0x3421('0xb')](function(_0x897cde){_0xfe91d7[_0x1bca2c+'OpenTabs']=_0x897cde;_0x5ac16a(_0x897cde);})[_0x3421('0x9')](function(_0x21e11b){_0x10be7c(_0x21e11b);});});}return _0x153f3a[_0x3421('0x87')](_0x3421('0x88'),attributes,{'tableName':_0x3421('0x89'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x823366){var _0x5e6c4d={'raw':_0x823366[_0x3421('0x85')][_0x3421('0x8a')],'where':{}};var _0x1e9971={};var _0x278bbf={'count':0x0,'rows':[]};var _0x443b0a=_0x823366[_0x3421('0x85')][_0x3421('0x8b')];var _0x3d7c9a=_0x823366['query'][_0x3421('0x8c')]||![];var _0x46717b=_0xb9af5f(_0x443b0a,_0x3d7c9a);if(!_0x46717b[_0x3421('0x14')])throw new Error(_0x3421('0x8d')+_0x443b0a+'\x27');var _0x347299=[{'name':_0x443b0a}];if(!_['isEmpty'](_0x46717b['parentSections']))_0x347299=_0x46717b[_0x3421('0x17')];var _0x103d84=[];for(var _0x230f65=0x0;_0x230f65<_0x347299['length'];_0x230f65++){_0x103d84[_0x3421('0x8e')](_0x1bab18['UserProfileSection'][_0x3421('0x8f')]({'where':{'userProfileId':_0x823366['params']['id'],'name':_0x347299[_0x230f65]['name']},'raw':!![]}));}return Promise['all'](_0x103d84)['then'](function(_0x4fd786){var _0x326b54=_[_0x3421('0x5')](_0x4fd786,function(_0x2f64a4){return _0x2f64a4?_0x2f64a4:undefined;});var _0x994444=_[_0x3421('0x5')](_0x347299,[_0x3421('0x90'),!![]]);var _0x231067=_[_0x3421('0x91')](_0x326b54)&&_[_0x3421('0x91')](_0x994444)?null:_[_0x3421('0x92')](_0x994444,_0x326b54);if(!_0x231067)return null;var _0x5c7a78=[];for(var _0x297184=0x0;_0x297184<_0x231067['length'];_0x297184++){var _0x252b28=_[_0x3421('0x8f')](_0x347299,function(_0x40e0a6){return _0x231067[_0x297184]?_0x40e0a6[_0x3421('0xd')]===_0x231067[_0x297184][_0x3421('0xd')]:null;});if(_0x252b28){if(_0x231067[_0x297184][_0x3421('0x90')]){_0x5c7a78[_0x3421('0x8e')](_0xdbd54e(_0x46717b[_0x3421('0x14')],_0x231067[_0x297184]));}else{if(!_0x231067[_0x297184][_0x3421('0x93')]){_0x5c7a78['push'](_0x1e33ab(_0x252b28,_0x231067[_0x297184],_0x46717b[_0x3421('0x14')]));}else{if(_0x252b28[_0x3421('0xa')]){_0x5c7a78[_0x3421('0x8e')](_0x2d8676(_0x252b28,_0x231067[_0x297184]));}}}}}return Promise['all'](_0x5c7a78);})['then'](function(_0x54554a){var _0x5dba56=_0x54554a;var _0x8b3181=null;if(_0x5dba56){_0x8b3181=_0x5dba56['length']===0x1?_0x5dba56[0x0]:null;}if(!_0x8b3181&&!_0x5dba56)return _0x278bbf;var _0x2b3837=_0x1bab18[_0x46717b[_0x3421('0x14')]][_0x3421('0x94')];_0x1e9971[_0x3421('0xa')]=_['keys'](_0x2b3837);_0x1e9971[_0x3421('0x85')]=_[_0x3421('0x95')](_0x823366[_0x3421('0x85')]);_0x1e9971[_0x3421('0x96')]=_[_0x3421('0x97')](_0x1e9971[_0x3421('0xa')],_0x1e9971['query']);_0x5e6c4d[_0x3421('0x98')]=_[_0x3421('0x97')](_0x1e9971[_0x3421('0xa')],qs[_0x3421('0x99')](_0x823366[_0x3421('0x85')][_0x3421('0x99')]));_0x5e6c4d[_0x3421('0x98')]=_0x5e6c4d['attributes']['length']?_0x5e6c4d[_0x3421('0x98')]:_0x1e9971[_0x3421('0xa')];if(!_0x823366[_0x3421('0x85')]['hasOwnProperty'](_0x3421('0x9a'))){_0x5e6c4d['limit']=qs[_0x3421('0x9b')](_0x823366['query'][_0x3421('0x9b')]);_0x5e6c4d[_0x3421('0x9c')]=qs[_0x3421('0x9c')](_0x823366[_0x3421('0x85')][_0x3421('0x9c')]);}_0x5e6c4d[_0x3421('0x9d')]=qs[_0x3421('0x9e')](_0x823366[_0x3421('0x85')][_0x3421('0x9e')]);_0x5e6c4d[_0x3421('0x9f')]=qs[_0x3421('0x96')](_[_0x3421('0xa0')](_0x823366['query'],_0x1e9971[_0x3421('0x96')]));if(_0x823366[_0x3421('0x85')][_0x3421('0x5')]){_0x5e6c4d[_0x3421('0x9f')]=_[_0x3421('0xa1')](_0x5e6c4d[_0x3421('0x9f')],{'$or':_[_0x3421('0xc')](_0x2b3837,function(_0x271222){if(_0x271222['type'][_0x3421('0xa2')]!=='VIRTUAL'){var _0x4d92ed={};_0x4d92ed[_0x271222['field']]={'$like':'%'+_0x823366[_0x3421('0x85')][_0x3421('0x5')]+'%'};return _0x4d92ed;}})});}var _0x3e28eb=[];var _0x22ff90=null;var _0x5ee132={};if(_0x8b3181){_0x22ff90=_[_0x3421('0x8f')](_0x347299,[_0x3421('0xd'),_0x8b3181[_0x3421('0xd')]]);if(_0x22ff90[_0x3421('0x6')]){_0x5ee132={};if(_0x46717b[_0x3421('0x14')]===_0x3421('0x10')){_0x5ee132[_0x22ff90[_0x3421('0xa3')]]=_[_0x3421('0xc')](_0x8b3181[_0x3421('0xf')],'id');}else{_0x5ee132[_0x22ff90[_0x3421('0xa3')]]=_0x8b3181[_0x3421('0xf')];}_0x3e28eb[_0x3421('0x8e')](_0x5ee132);}else{_0x5e6c4d[_0x3421('0x9f')]['id']=_0x8b3181[_0x3421('0xf')];}}else{for(var _0x456644=0x0;_0x456644<_0x5dba56[_0x3421('0xa4')];_0x456644++){_0x22ff90=_[_0x3421('0x8f')](_0x347299,['name',_0x5dba56[_0x456644]['name']]);if(_0x22ff90[_0x3421('0x6')]){_0x5ee132={};_0x5ee132[_0x22ff90['foreignKey']]=_0x5dba56[_0x456644][_0x3421('0xf')];_0x3e28eb[_0x3421('0x8e')](_0x5ee132);}else{if(!_0x5e6c4d['where']['id'])_0x5e6c4d[_0x3421('0x9f')]['id']=[];_0x5dba56[_0x456644][_0x3421('0xf')][_0x3421('0xa5')](function(_0x87404){_0x5e6c4d[_0x3421('0x9f')]['id'][_0x3421('0x8e')](_0x87404);});}}}if(!_[_0x3421('0x91')](_0x3e28eb)){_0x5e6c4d[_0x3421('0x9f')]=_[_0x3421('0xa1')](_0x5e6c4d[_0x3421('0x9f')],{'$and':{'$or':_0x3e28eb}});}_0x5e6c4d=_[_0x3421('0xa1')]({},_0x5e6c4d,_0x823366[_0x3421('0xa6')]);if(_0x8b3181&&!_0x8b3181[_0x3421('0x93')]&&_0x46717b['childModel']===_0x3421('0x10')){if(_0x823366['query'][_0x3421('0xa7')]){_0x5e6c4d[_0x3421('0xa8')]=[{'all':!![]}];}return _0x1bab18[_0x46717b['childModel']][_0x3421('0x8')](_0x5e6c4d)['then'](function(_0x554b53){var _0x233fd9=[];_0x554b53[_0x3421('0xa5')](function(_0x3e88fa){var _0x52104f;switch(_0x3e88fa[_0x3421('0xa9')]){case _0x3421('0xaa'):_0x52104f=_[_0x3421('0x8f')](_0x8b3181['associatedResources'],function(_0x5a3bfd){return _0x5a3bfd['id']===_0x3e88fa[_0x3421('0x75')]&&_0x5a3bfd[_0x3421('0x12')]===_0x3421('0xab');});break;case _0x3421('0xac'):_0x52104f=_['find'](_0x8b3181[_0x3421('0xf')],function(_0x1fcd4b){return _0x1fcd4b['id']===_0x3e88fa[_0x3421('0x75')]&&_0x1fcd4b[_0x3421('0x12')]===_0x3421('0xad');});break;}if(_0x52104f)_0x233fd9[_0x3421('0x8e')](_0x3e88fa);});_0x278bbf[_0x3421('0xae')]=_0x233fd9[_0x3421('0xa4')];_0x278bbf['rows']=_0x233fd9;return _0x278bbf;});}else{if(!_[_0x3421('0x91')](_0x823366[_0x3421('0x85')]['ids'])){_0x5e6c4d['where']['id']=_0x5e6c4d[_0x3421('0x9f')]['id']?_[_0x3421('0x97')](_0x5e6c4d[_0x3421('0x9f')]['id'],_0x823366[_0x3421('0x85')][_0x3421('0xaf')]):_0x823366['query']['ids'];}return _0x1bab18[_0x46717b[_0x3421('0x14')]]['count']({'where':_0x5e6c4d['where']})[_0x3421('0xb')](function(_0x1a5b7c){_0x278bbf[_0x3421('0xae')]=_0x1a5b7c;if(_0x823366[_0x3421('0x85')]['includeAll']){if(_0x46717b['childModel']===_0x3421('0x1c')){_0x5e6c4d['include']=[{'model':_0x1bab18['Tag'],'as':_0x3421('0xb0'),'attributes':['id',_0x3421('0xd'),_0x3421('0xb1')],'required':_0x823366['query']['tag']?!![]:![]},{'model':_0x1bab18['Tag'],'as':_0x3421('0xb2'),'attributes':['id',_0x3421('0xd'),_0x3421('0xb1')],'through':_0x823366[_0x3421('0x85')][_0x3421('0xb3')]?{'attributes':[],'where':{'TagId':_0x823366[_0x3421('0x85')][_0x3421('0xb3')]||undefined}}:{},'required':_0x823366['query'][_0x3421('0xb3')]?!![]:![]}];}else{_0x5e6c4d[_0x3421('0xa8')]=[{'all':!![]}];}}return _0x1bab18[_0x46717b[_0x3421('0x14')]][_0x3421('0x8')](_0x5e6c4d);})[_0x3421('0xb')](function(_0x25258b){_0x278bbf[_0x3421('0xb4')]=_0x25258b;if(_0x443b0a===_0x3421('0x55')&&_0x823366[_0x3421('0x85')]['openTabs']==='true'){var _0x171d32=[];for(var _0x5537c2=0x0;_0x5537c2<_0x278bbf[_0x3421('0xb4')]['length'];_0x5537c2++){_0x171d32[_0x3421('0x8e')](_0x27085d(_0x3421('0xb5'),_0x278bbf[_0x3421('0xb4')][_0x5537c2][_0x3421('0xb6')]));_0x171d32[_0x3421('0x8e')](_0x27085d('sms',_0x278bbf['rows'][_0x5537c2][_0x3421('0xb6')]));_0x171d32[_0x3421('0x8e')](_0x27085d(_0x3421('0xb7'),_0x278bbf[_0x3421('0xb4')][_0x5537c2]['dataValues']));_0x171d32[_0x3421('0x8e')](_0x27085d(_0x3421('0xb8'),_0x278bbf[_0x3421('0xb4')][_0x5537c2][_0x3421('0xb6')]));_0x171d32[_0x3421('0x8e')](_0x27085d(_0x3421('0xb9'),_0x278bbf[_0x3421('0xb4')][_0x5537c2]['dataValues']));_0x171d32[_0x3421('0x8e')](_0x27085d(_0x3421('0xba'),_0x278bbf['rows'][_0x5537c2][_0x3421('0xb6')]));}return Promise[_0x3421('0xbb')](_0x171d32)[_0x3421('0xb')](function(){return _0x278bbf;});}return _0x278bbf;});}});}}});};
\ No newline at end of file
index c170010..34e4b44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb458=['error','code','message','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','./userProfile.socket','register','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x2ea60a,_0x4f5d9d){var _0x5137f2=function(_0x2b831a){while(--_0x2b831a){_0x2ea60a['push'](_0x2ea60a['shift']());}};_0x5137f2(++_0x4f5d9d);}(_0xb458,0x94));var _0x8b45=function(_0x2b8962,_0x84a6a7){_0x2b8962=_0x2b8962-0x0;var _0x5a0e33=_0xb458[_0x2b8962];return _0x5a0e33;};'use strict';var _=require(_0x8b45('0x0'));var util=require(_0x8b45('0x1'));var moment=require(_0x8b45('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8b45('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x8b45('0x4'));var logger=require(_0x8b45('0x5'))(_0x8b45('0x6'));var config=require(_0x8b45('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x8b45('0x8')][_0x8b45('0x9')]({'port':0x232a});config[_0x8b45('0xa')]=_[_0x8b45('0xb')](config[_0x8b45('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8b45('0xa')]));require(_0x8b45('0xc'))[_0x8b45('0xd')](socket);function respondWithRpcPromise(_0x2a9c49,_0x16ad9a,_0x244adc){return new BPromise(function(_0xf4b398,_0xca52fb){return client['request'](_0x2a9c49,_0x244adc)[_0x8b45('0xe')](function(_0x30999d){logger[_0x8b45('0xf')](_0x8b45('0x10'),_0x16ad9a,_0x8b45('0x11'));logger[_0x8b45('0x12')]('UserProfile,\x20%s,\x20%s,\x20%s',_0x16ad9a,_0x8b45('0x11'),JSON[_0x8b45('0x13')](_0x30999d));if(_0x30999d[_0x8b45('0x14')]){if(_0x30999d[_0x8b45('0x14')][_0x8b45('0x15')]===0x1f4){logger['error'](_0x8b45('0x10'),_0x16ad9a,_0x30999d[_0x8b45('0x14')][_0x8b45('0x16')]);return _0xca52fb(_0x30999d[_0x8b45('0x14')][_0x8b45('0x16')]);}logger[_0x8b45('0x14')](_0x8b45('0x10'),_0x16ad9a,_0x30999d['error']['message']);return _0xf4b398(_0x30999d[_0x8b45('0x14')][_0x8b45('0x16')]);}else{logger[_0x8b45('0xf')]('UserProfile,\x20%s,\x20%s',_0x16ad9a,'request\x20sent');_0xf4b398(_0x30999d['result'][_0x8b45('0x16')]);}})[_0x8b45('0x17')](function(_0x40bfd7){logger['error'](_0x8b45('0x10'),_0x16ad9a,_0x40bfd7);_0xca52fb(_0x40bfd7);});});}
\ No newline at end of file
+var _0x0d91=['UserProfile,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','request','then','UserProfile,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2c4cd2,_0x166b91){var _0x3e31f0=function(_0x596d9d){while(--_0x596d9d){_0x2c4cd2['push'](_0x2c4cd2['shift']());}};_0x3e31f0(++_0x166b91);}(_0x0d91,0x76));var _0x10d9=function(_0x58284c,_0x52bfa7){_0x58284c=_0x58284c-0x0;var _0x4fc8bb=_0x0d91[_0x58284c];return _0x4fc8bb;};'use strict';var _=require(_0x10d9('0x0'));var util=require(_0x10d9('0x1'));var moment=require(_0x10d9('0x2'));var BPromise=require(_0x10d9('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x10d9('0x4'));var db=require(_0x10d9('0x5'))['db'];var utils=require(_0x10d9('0x6'));var logger=require('../../config/logger')(_0x10d9('0x7'));var config=require(_0x10d9('0x8'));var jayson=require(_0x10d9('0x9'));var client=jayson['client'][_0x10d9('0xa')]({'port':0x232a});config[_0x10d9('0xb')]=_[_0x10d9('0xc')](config[_0x10d9('0xb')],{'host':_0x10d9('0xd'),'port':0x18eb});var socket=require(_0x10d9('0xe'))(new Redis(config[_0x10d9('0xb')]));require(_0x10d9('0xf'))[_0x10d9('0x10')](socket);function respondWithRpcPromise(_0x1aeeea,_0x698aa4,_0x258ecc){return new BPromise(function(_0x3fe0de,_0x2332c7){return client[_0x10d9('0x11')](_0x1aeeea,_0x258ecc)[_0x10d9('0x12')](function(_0x273a4c){logger['info'](_0x10d9('0x13'),_0x698aa4,_0x10d9('0x14'));logger[_0x10d9('0x15')](_0x10d9('0x16'),_0x698aa4,_0x10d9('0x14'),JSON['stringify'](_0x273a4c));if(_0x273a4c[_0x10d9('0x17')]){if(_0x273a4c['error'][_0x10d9('0x18')]===0x1f4){logger[_0x10d9('0x17')](_0x10d9('0x13'),_0x698aa4,_0x273a4c[_0x10d9('0x17')][_0x10d9('0x19')]);return _0x2332c7(_0x273a4c[_0x10d9('0x17')][_0x10d9('0x19')]);}logger[_0x10d9('0x17')](_0x10d9('0x13'),_0x698aa4,_0x273a4c[_0x10d9('0x17')]['message']);return _0x3fe0de(_0x273a4c['error'][_0x10d9('0x19')]);}else{logger[_0x10d9('0x1a')](_0x10d9('0x13'),_0x698aa4,_0x10d9('0x14'));_0x3fe0de(_0x273a4c['result'][_0x10d9('0x19')]);}})[_0x10d9('0x1b')](function(_0x1cff55){logger[_0x10d9('0x17')]('UserProfile,\x20%s,\x20%s',_0x698aa4,_0x1cff55);_0x2332c7(_0x1cff55);});});}
\ No newline at end of file
index 2eff0c4..8bd63a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1c4=['save','remove','update','emit','register','length','userProfile:','./userProfile.events'];(function(_0x2f1e0e,_0x46a26c){var _0x5563c1=function(_0x135b74){while(--_0x135b74){_0x2f1e0e['push'](_0x2f1e0e['shift']());}};_0x5563c1(++_0x46a26c);}(_0xb1c4,0x9f));var _0x4b1c=function(_0x580d9f,_0x33d079){_0x580d9f=_0x580d9f-0x0;var _0xf9d34b=_0xb1c4[_0x580d9f];return _0xf9d34b;};'use strict';var UserProfileEvents=require(_0x4b1c('0x0'));var events=[_0x4b1c('0x1'),_0x4b1c('0x2'),_0x4b1c('0x3')];function createListener(_0x8b081d,_0x21b76f){return function(_0x238f01){_0x21b76f[_0x4b1c('0x4')](_0x8b081d,_0x238f01);};}function removeListener(_0x31aa80,_0x23045c){return function(){UserProfileEvents['removeListener'](_0x31aa80,_0x23045c);};}exports[_0x4b1c('0x5')]=function(_0x2d3c07){for(var _0x17c5ff=0x0,_0x41b48d=events[_0x4b1c('0x6')];_0x17c5ff<_0x41b48d;_0x17c5ff++){var _0x38e300=events[_0x17c5ff];var _0x271f7c=createListener(_0x4b1c('0x7')+_0x38e300,_0x2d3c07);UserProfileEvents['on'](_0x38e300,_0x271f7c);}};
\ No newline at end of file
+var _0xf9ec=['./userProfile.events','save','remove','removeListener','register','length','userProfile:'];(function(_0xe51138,_0x3300dc){var _0x829660=function(_0x41279f){while(--_0x41279f){_0xe51138['push'](_0xe51138['shift']());}};_0x829660(++_0x3300dc);}(_0xf9ec,0x18f));var _0xcf9e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf9ec[_0x20a584];return _0x4b41a8;};'use strict';var UserProfileEvents=require(_0xcf9e('0x0'));var events=[_0xcf9e('0x1'),_0xcf9e('0x2'),'update'];function createListener(_0xe812cd,_0x113ffc){return function(_0x16a15c){_0x113ffc['emit'](_0xe812cd,_0x16a15c);};}function removeListener(_0x1a7397,_0x6ff45){return function(){UserProfileEvents[_0xcf9e('0x3')](_0x1a7397,_0x6ff45);};}exports[_0xcf9e('0x4')]=function(_0x22c700){for(var _0x1ca50a=0x0,_0x3bd4db=events[_0xcf9e('0x5')];_0x1ca50a<_0x3bd4db;_0x1ca50a++){var _0x25753b=events[_0x1ca50a];var _0x4d2617=createListener(_0xcf9e('0x6')+_0x25753b,_0x22c700);UserProfileEvents['on'](_0x25753b,_0x4d2617);}};
\ No newline at end of file
index 6c27f87..f218ee6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe017=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','post','create','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x3337b6,_0x42c7f9){var _0x568270=function(_0x56e5df){while(--_0x56e5df){_0x3337b6['push'](_0x3337b6['shift']());}};_0x568270(++_0x42c7f9);}(_0xe017,0x19d));var _0x7e01=function(_0xe6188c,_0x2c1713){_0xe6188c=_0xe6188c-0x0;var _0x2290fd=_0xe017[_0xe6188c];return _0x2290fd;};'use strict';var multer=require(_0x7e01('0x0'));var util=require(_0x7e01('0x1'));var path=require(_0x7e01('0x2'));var timeout=require(_0x7e01('0x3'));var express=require(_0x7e01('0x4'));var router=express[_0x7e01('0x5')]();var fs_extra=require(_0x7e01('0x6'));var auth=require(_0x7e01('0x7'));var interaction=require(_0x7e01('0x8'));var config=require(_0x7e01('0x9'));var controller=require('./userProfileResource.controller');router[_0x7e01('0xa')]('/',auth[_0x7e01('0xb')](),controller[_0x7e01('0xc')]);router['get']('/describe',auth[_0x7e01('0xb')](),controller[_0x7e01('0xd')]);router['get'](_0x7e01('0xe'),auth[_0x7e01('0xb')](),controller['show']);router[_0x7e01('0xf')]('/',auth[_0x7e01('0xb')](),controller[_0x7e01('0x10')]);router[_0x7e01('0x11')](_0x7e01('0xe'),auth[_0x7e01('0xb')](),controller[_0x7e01('0x12')]);router[_0x7e01('0x13')](_0x7e01('0xe'),auth[_0x7e01('0xb')](),controller['destroy']);module[_0x7e01('0x14')]=router;
\ No newline at end of file
+var _0x1362=['get','/describe','/:id','post','create','put','update','delete','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./userProfileResource.controller','isAuthenticated'];(function(_0x395d84,_0x70e4e9){var _0x4f3b89=function(_0x54fb6e){while(--_0x54fb6e){_0x395d84['push'](_0x395d84['shift']());}};_0x4f3b89(++_0x70e4e9);}(_0x1362,0xbe));var _0x2136=function(_0x5d8a3b,_0x1f09f7){_0x5d8a3b=_0x5d8a3b-0x0;var _0x2e80c1=_0x1362[_0x5d8a3b];return _0x2e80c1;};'use strict';var multer=require(_0x2136('0x0'));var util=require(_0x2136('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x2136('0x2')]();var fs_extra=require(_0x2136('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x2136('0x4'));var config=require(_0x2136('0x5'));var controller=require(_0x2136('0x6'));router['get']('/',auth[_0x2136('0x7')](),controller['index']);router[_0x2136('0x8')](_0x2136('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x2136('0x8')](_0x2136('0xa'),auth[_0x2136('0x7')](),controller['show']);router[_0x2136('0xb')]('/',auth[_0x2136('0x7')](),controller[_0x2136('0xc')]);router[_0x2136('0xd')](_0x2136('0xa'),auth[_0x2136('0x7')](),controller[_0x2136('0xe')]);router[_0x2136('0xf')](_0x2136('0xa'),auth[_0x2136('0x7')](),controller[_0x2136('0x10')]);module[_0x2136('0x11')]=router;
\ No newline at end of file
index 7a4959a..2476243 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb845=['sequelize','exports','STRING','INTEGER'];(function(_0x423549,_0x242e63){var _0xdcb104=function(_0x6bff59){while(--_0x6bff59){_0x423549['push'](_0x423549['shift']());}};_0xdcb104(++_0x242e63);}(_0xb845,0x194));var _0x5b84=function(_0x1f5352,_0x49667e){_0x1f5352=_0x1f5352-0x0;var _0x4a7d8f=_0xb845[_0x1f5352];return _0x4a7d8f;};'use strict';var Sequelize=require(_0x5b84('0x0'));module[_0x5b84('0x1')]={'name':{'type':Sequelize[_0x5b84('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x5b84('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x5b84('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x4fe2=['INTEGER','sequelize','STRING'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x4fe2,0x1c9));var _0x24fe=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x4fe2[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require(_0x24fe('0x0'));module['exports']={'name':{'type':Sequelize[_0x24fe('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x24fe('0x2')],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 2bf550e..21c8690 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0598=['include','rows','catch','show','params','keys','rawAttributes','includeAll','find','create','body','describe','eml-format','rimraf','fast-json-patch','bluebird','mustache','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','sendStatus','status','json','undefined','limit','count','offset','set','apply','update','destroy','then','end','error','stack','name','index','map','UserProfileResource','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options'];(function(_0x28d18d,_0x55896b){var _0x470640=function(_0x57e78b){while(--_0x57e78b){_0x28d18d['push'](_0x28d18d['shift']());}};_0x470640(++_0x55896b);}(_0x0598,0x92));var _0x8059=function(_0x3849d4,_0x26b85a){_0x3849d4=_0x3849d4-0x0;var _0x5e5fd8=_0x0598[_0x3849d4];return _0x5e5fd8;};'use strict';var emlformat=require(_0x8059('0x0'));var rimraf=require(_0x8059('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8059('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x8059('0x3'));var Mustache=require(_0x8059('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x8059('0x5'));var ejs=require(_0x8059('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8059('0x7'));var crypto=require(_0x8059('0x8'));var jsforce=require(_0x8059('0x9'));var deskjs=require(_0x8059('0xa'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x8059('0xb'));var Redis=require(_0x8059('0xc'));var authService=require(_0x8059('0xd'));var qs=require(_0x8059('0xe'));var as=require(_0x8059('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8059('0x10'));var utils=require(_0x8059('0x11'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1ead10,_0x2d26e2){_0x2d26e2=_0x2d26e2||0xcc;return function(_0x306467){if(_0x306467){return _0x1ead10[_0x8059('0x12')](_0x2d26e2);}return _0x1ead10[_0x8059('0x13')](_0x2d26e2)['end']();};}function respondWithResult(_0x11218f,_0x5480a5){_0x5480a5=_0x5480a5||0xc8;return function(_0x346b23){if(_0x346b23){return _0x11218f['status'](_0x5480a5)[_0x8059('0x14')](_0x346b23);}};}function respondWithFilteredResult(_0x13bf07,_0x4810fd){return function(_0x4d3873){if(_0x4d3873){var _0x516c1f=typeof _0x4810fd['offset']===_0x8059('0x15')&&typeof _0x4810fd[_0x8059('0x16')]===_0x8059('0x15');var _0x246c9d=_0x4d3873[_0x8059('0x17')];var _0x4b6d55=_0x516c1f?0x0:_0x4810fd[_0x8059('0x18')];var _0x2bb670=_0x516c1f?_0x4d3873[_0x8059('0x17')]:_0x4810fd[_0x8059('0x18')]+_0x4810fd['limit'];var _0x5456a9;if(_0x2bb670>=_0x246c9d){_0x2bb670=_0x246c9d;_0x5456a9=0xc8;}else{_0x5456a9=0xce;}_0x13bf07['status'](_0x5456a9);return _0x13bf07[_0x8059('0x19')]('Content-Range',_0x4b6d55+'-'+_0x2bb670+'/'+_0x246c9d)[_0x8059('0x14')](_0x4d3873);}return null;};}function patchUpdates(_0x56d794){return function(_0x466a88){try{jsonpatch[_0x8059('0x1a')](_0x466a88,_0x56d794,!![]);}catch(_0x1e9ac5){return BPromise['reject'](_0x1e9ac5);}return _0x466a88['save']();};}function saveUpdates(_0x21a80f,_0x232f1b){return function(_0x32aeda){if(_0x32aeda){return _0x32aeda[_0x8059('0x1b')](_0x21a80f)['then'](function(_0x3bc226){return _0x3bc226;});}return null;};}function removeEntity(_0x21ac82,_0x3da080){return function(_0x5449d9){if(_0x5449d9){return _0x5449d9[_0x8059('0x1c')]()[_0x8059('0x1d')](function(){_0x21ac82[_0x8059('0x13')](0xcc)[_0x8059('0x1e')]();});}};}function handleEntityNotFound(_0x59d3a6,_0x140f64){return function(_0x2cd179){if(!_0x2cd179){_0x59d3a6[_0x8059('0x12')](0x194);}return _0x2cd179;};}function handleError(_0x3e2d2b,_0x202b30){_0x202b30=_0x202b30||0x1f4;return function(_0x54b88b){logger[_0x8059('0x1f')](_0x54b88b[_0x8059('0x20')]);if(_0x54b88b[_0x8059('0x21')]){delete _0x54b88b['name'];}_0x3e2d2b['status'](_0x202b30)['send'](_0x54b88b);};}exports[_0x8059('0x22')]=function(_0xbebe0e,_0xc32b1f){var _0x1009af={},_0x59abe9={},_0x1eb71b={'count':0x0,'rows':[]};var _0x50b737=_[_0x8059('0x23')](db[_0x8059('0x24')]['rawAttributes'],function(_0x3814f5){return{'name':_0x3814f5[_0x8059('0x25')],'type':_0x3814f5[_0x8059('0x26')][_0x8059('0x27')]};});_0x59abe9[_0x8059('0x28')]=_[_0x8059('0x23')](_0x50b737,_0x8059('0x21'));_0x59abe9[_0x8059('0x29')]=_['keys'](_0xbebe0e[_0x8059('0x29')]);_0x59abe9[_0x8059('0x2a')]=_[_0x8059('0x2b')](_0x59abe9[_0x8059('0x28')],_0x59abe9[_0x8059('0x29')]);_0x1009af['attributes']=_[_0x8059('0x2b')](_0x59abe9[_0x8059('0x28')],qs[_0x8059('0x2c')](_0xbebe0e[_0x8059('0x29')][_0x8059('0x2c')]));_0x1009af[_0x8059('0x2d')]=_0x1009af[_0x8059('0x2d')][_0x8059('0x2e')]?_0x1009af[_0x8059('0x2d')]:_0x59abe9[_0x8059('0x28')];if(!_0xbebe0e['query'][_0x8059('0x2f')]('nolimit')){_0x1009af[_0x8059('0x16')]=qs['limit'](_0xbebe0e['query'][_0x8059('0x16')]);_0x1009af['offset']=qs[_0x8059('0x18')](_0xbebe0e['query'][_0x8059('0x18')]);}_0x1009af['order']=qs[_0x8059('0x30')](_0xbebe0e[_0x8059('0x29')]['sort']);_0x1009af[_0x8059('0x31')]=qs[_0x8059('0x2a')](_[_0x8059('0x32')](_0xbebe0e['query'],_0x59abe9[_0x8059('0x2a')]),_0x50b737);if(_0xbebe0e['query'][_0x8059('0x33')]){_0x1009af['where']=_[_0x8059('0x34')](_0x1009af[_0x8059('0x31')],{'$or':_[_0x8059('0x23')](_0x50b737,function(_0xb3b3c1){if(_0xb3b3c1['type']!==_0x8059('0x35')){var _0x55aaec={};_0x55aaec[_0xb3b3c1['name']]={'$like':'%'+_0xbebe0e[_0x8059('0x29')][_0x8059('0x33')]+'%'};return _0x55aaec;}})});}_0x1009af=_[_0x8059('0x34')]({},_0x1009af,_0xbebe0e[_0x8059('0x36')]);var _0x2f68b0={'where':_0x1009af['where']};return db['UserProfileResource']['count'](_0x2f68b0)['then'](function(_0x373e10){_0x1eb71b[_0x8059('0x17')]=_0x373e10;if(_0xbebe0e[_0x8059('0x29')]['includeAll']){_0x1009af[_0x8059('0x37')]=[{'all':!![]}];}return db[_0x8059('0x24')]['findAll'](_0x1009af);})[_0x8059('0x1d')](function(_0x2980cb){_0x1eb71b[_0x8059('0x38')]=_0x2980cb;return _0x1eb71b;})['then'](respondWithFilteredResult(_0xc32b1f,_0x1009af))[_0x8059('0x39')](handleError(_0xc32b1f,null));};exports[_0x8059('0x3a')]=function(_0x57eb56,_0x338493){var _0x280047={'raw':![],'where':{'id':_0x57eb56[_0x8059('0x3b')]['id']}},_0x3f00de={};_0x3f00de[_0x8059('0x28')]=_[_0x8059('0x3c')](db[_0x8059('0x24')][_0x8059('0x3d')]);_0x3f00de[_0x8059('0x29')]=_[_0x8059('0x3c')](_0x57eb56[_0x8059('0x29')]);_0x3f00de[_0x8059('0x2a')]=_[_0x8059('0x2b')](_0x3f00de[_0x8059('0x28')],_0x3f00de[_0x8059('0x29')]);_0x280047[_0x8059('0x2d')]=_[_0x8059('0x2b')](_0x3f00de[_0x8059('0x28')],qs[_0x8059('0x2c')](_0x57eb56[_0x8059('0x29')][_0x8059('0x2c')]));_0x280047[_0x8059('0x2d')]=_0x280047[_0x8059('0x2d')]['length']?_0x280047[_0x8059('0x2d')]:_0x3f00de['model'];if(_0x57eb56['query'][_0x8059('0x3e')]){_0x280047['include']=[{'all':!![]}];}_0x280047=_[_0x8059('0x34')]({},_0x280047,_0x57eb56['options']);return db[_0x8059('0x24')][_0x8059('0x3f')](_0x280047)[_0x8059('0x1d')](handleEntityNotFound(_0x338493,null))[_0x8059('0x1d')](respondWithResult(_0x338493,null))[_0x8059('0x39')](handleError(_0x338493,null));};exports[_0x8059('0x40')]=function(_0x538ab6,_0x301dca){return db['UserProfileResource'][_0x8059('0x40')](_0x538ab6[_0x8059('0x41')],{})[_0x8059('0x1d')](respondWithResult(_0x301dca,0xc9))['catch'](handleError(_0x301dca,null));};exports[_0x8059('0x1b')]=function(_0x120665,_0x46bec8){if(_0x120665[_0x8059('0x41')]['id']){delete _0x120665['body']['id'];}return db[_0x8059('0x24')][_0x8059('0x3f')]({'where':{'id':_0x120665[_0x8059('0x3b')]['id']}})['then'](handleEntityNotFound(_0x46bec8,null))[_0x8059('0x1d')](saveUpdates(_0x120665['body'],null))['then'](respondWithResult(_0x46bec8,null))[_0x8059('0x39')](handleError(_0x46bec8,null));};exports['destroy']=function(_0x20caa3,_0x54d2d2){return db[_0x8059('0x24')][_0x8059('0x3f')]({'where':{'id':_0x20caa3['params']['id']}})[_0x8059('0x1d')](handleEntityNotFound(_0x54d2d2,null))['then'](removeEntity(_0x54d2d2,null))[_0x8059('0x39')](handleError(_0x54d2d2,null));};exports[_0x8059('0x42')]=function(_0x429cf0,_0x5d5f16){return db[_0x8059('0x24')]['describe']()[_0x8059('0x1d')](respondWithResult(_0x5d5f16,null))[_0x8059('0x39')](handleError(_0x5d5f16,null));};
\ No newline at end of file
+var _0x7880=['destroy','error','stack','name','send','index','UserProfileResource','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','merge','VIRTUAL','include','findAll','rows','catch','show','params','keys','options','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','limit','set','json','apply','reject','save','update','then'];(function(_0x16d369,_0xbbaa52){var _0x53c1ca=function(_0x49908d){while(--_0x49908d){_0x16d369['push'](_0x16d369['shift']());}};_0x53c1ca(++_0xbbaa52);}(_0x7880,0x1f4));var _0x0788=function(_0x743b6c,_0x4dbc78){_0x743b6c=_0x743b6c-0x0;var _0x41575a=_0x7880[_0x743b6c];return _0x41575a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0788('0x0'));var zipdir=require(_0x0788('0x1'));var jsonpatch=require(_0x0788('0x2'));var rp=require(_0x0788('0x3'));var moment=require(_0x0788('0x4'));var BPromise=require(_0x0788('0x5'));var Mustache=require('mustache');var util=require(_0x0788('0x6'));var path=require(_0x0788('0x7'));var sox=require(_0x0788('0x8'));var csv=require(_0x0788('0x9'));var ejs=require(_0x0788('0xa'));var fs=require('fs');var fs_extra=require(_0x0788('0xb'));var _=require(_0x0788('0xc'));var squel=require(_0x0788('0xd'));var crypto=require(_0x0788('0xe'));var jsforce=require(_0x0788('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x0788('0x9'));var querystring=require('querystring');var Papa=require(_0x0788('0x10'));var Redis=require('ioredis');var authService=require(_0x0788('0x11'));var qs=require(_0x0788('0x12'));var as=require(_0x0788('0x13'));var hardwareService=require(_0x0788('0x14'));var logger=require(_0x0788('0x15'))('api');var utils=require(_0x0788('0x16'));var config=require(_0x0788('0x17'));var licenseUtil=require(_0x0788('0x18'));var db=require(_0x0788('0x19'))['db'];function respondWithStatusCode(_0x311729,_0xce4342){_0xce4342=_0xce4342||0xcc;return function(_0x261ebc){if(_0x261ebc){return _0x311729['sendStatus'](_0xce4342);}return _0x311729[_0x0788('0x1a')](_0xce4342)[_0x0788('0x1b')]();};}function respondWithResult(_0x3bdcdf,_0x13cf07){_0x13cf07=_0x13cf07||0xc8;return function(_0x51e5d3){if(_0x51e5d3){return _0x3bdcdf[_0x0788('0x1a')](_0x13cf07)['json'](_0x51e5d3);}};}function respondWithFilteredResult(_0x195f14,_0x170d56){return function(_0x3fd1e4){if(_0x3fd1e4){var _0xb406fb=typeof _0x170d56[_0x0788('0x1c')]===_0x0788('0x1d')&&typeof _0x170d56['limit']==='undefined';var _0x17d805=_0x3fd1e4[_0x0788('0x1e')];var _0x5b2bdc=_0xb406fb?0x0:_0x170d56[_0x0788('0x1c')];var _0x415f19=_0xb406fb?_0x3fd1e4[_0x0788('0x1e')]:_0x170d56['offset']+_0x170d56[_0x0788('0x1f')];var _0x3fb723;if(_0x415f19>=_0x17d805){_0x415f19=_0x17d805;_0x3fb723=0xc8;}else{_0x3fb723=0xce;}_0x195f14['status'](_0x3fb723);return _0x195f14[_0x0788('0x20')]('Content-Range',_0x5b2bdc+'-'+_0x415f19+'/'+_0x17d805)[_0x0788('0x21')](_0x3fd1e4);}return null;};}function patchUpdates(_0x48bc5f){return function(_0x17cca3){try{jsonpatch[_0x0788('0x22')](_0x17cca3,_0x48bc5f,!![]);}catch(_0x18ff22){return BPromise[_0x0788('0x23')](_0x18ff22);}return _0x17cca3[_0x0788('0x24')]();};}function saveUpdates(_0x4f0005,_0x48ec43){return function(_0x2270d4){if(_0x2270d4){return _0x2270d4[_0x0788('0x25')](_0x4f0005)[_0x0788('0x26')](function(_0x7a99a1){return _0x7a99a1;});}return null;};}function removeEntity(_0x5ba1da,_0x4d5c93){return function(_0x79204e){if(_0x79204e){return _0x79204e[_0x0788('0x27')]()[_0x0788('0x26')](function(){_0x5ba1da['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x240459,_0xa1f7dc){return function(_0x5f2dda){if(!_0x5f2dda){_0x240459['sendStatus'](0x194);}return _0x5f2dda;};}function handleError(_0x5a54a5,_0x44798c){_0x44798c=_0x44798c||0x1f4;return function(_0x57fda1){logger[_0x0788('0x28')](_0x57fda1[_0x0788('0x29')]);if(_0x57fda1[_0x0788('0x2a')]){delete _0x57fda1[_0x0788('0x2a')];}_0x5a54a5[_0x0788('0x1a')](_0x44798c)[_0x0788('0x2b')](_0x57fda1);};}exports[_0x0788('0x2c')]=function(_0x3ffe4f,_0x5b7594){var _0x5a5178={},_0x3c5246={},_0x40d345={'count':0x0,'rows':[]};var _0x54979a=_['map'](db[_0x0788('0x2d')][_0x0788('0x2e')],function(_0x20fcd8){return{'name':_0x20fcd8[_0x0788('0x2f')],'type':_0x20fcd8[_0x0788('0x30')][_0x0788('0x31')]};});_0x3c5246[_0x0788('0x32')]=_[_0x0788('0x33')](_0x54979a,_0x0788('0x2a'));_0x3c5246[_0x0788('0x34')]=_['keys'](_0x3ffe4f[_0x0788('0x34')]);_0x3c5246[_0x0788('0x35')]=_[_0x0788('0x36')](_0x3c5246[_0x0788('0x32')],_0x3c5246[_0x0788('0x34')]);_0x5a5178[_0x0788('0x37')]=_[_0x0788('0x36')](_0x3c5246[_0x0788('0x32')],qs[_0x0788('0x38')](_0x3ffe4f[_0x0788('0x34')]['fields']));_0x5a5178['attributes']=_0x5a5178['attributes']['length']?_0x5a5178['attributes']:_0x3c5246['model'];if(!_0x3ffe4f[_0x0788('0x34')][_0x0788('0x39')](_0x0788('0x3a'))){_0x5a5178['limit']=qs[_0x0788('0x1f')](_0x3ffe4f[_0x0788('0x34')][_0x0788('0x1f')]);_0x5a5178[_0x0788('0x1c')]=qs['offset'](_0x3ffe4f[_0x0788('0x34')]['offset']);}_0x5a5178[_0x0788('0x3b')]=qs['sort'](_0x3ffe4f[_0x0788('0x34')][_0x0788('0x3c')]);_0x5a5178['where']=qs[_0x0788('0x35')](_[_0x0788('0x3d')](_0x3ffe4f['query'],_0x3c5246[_0x0788('0x35')]),_0x54979a);if(_0x3ffe4f['query'][_0x0788('0x3e')]){_0x5a5178['where']=_[_0x0788('0x3f')](_0x5a5178['where'],{'$or':_[_0x0788('0x33')](_0x54979a,function(_0x57fec9){if(_0x57fec9['type']!==_0x0788('0x40')){var _0x68d9d4={};_0x68d9d4[_0x57fec9[_0x0788('0x2a')]]={'$like':'%'+_0x3ffe4f[_0x0788('0x34')][_0x0788('0x3e')]+'%'};return _0x68d9d4;}})});}_0x5a5178=_['merge']({},_0x5a5178,_0x3ffe4f['options']);var _0x530d83={'where':_0x5a5178['where']};return db[_0x0788('0x2d')][_0x0788('0x1e')](_0x530d83)[_0x0788('0x26')](function(_0x358a22){_0x40d345[_0x0788('0x1e')]=_0x358a22;if(_0x3ffe4f['query']['includeAll']){_0x5a5178[_0x0788('0x41')]=[{'all':!![]}];}return db[_0x0788('0x2d')][_0x0788('0x42')](_0x5a5178);})[_0x0788('0x26')](function(_0x236b63){_0x40d345[_0x0788('0x43')]=_0x236b63;return _0x40d345;})[_0x0788('0x26')](respondWithFilteredResult(_0x5b7594,_0x5a5178))[_0x0788('0x44')](handleError(_0x5b7594,null));};exports[_0x0788('0x45')]=function(_0x50e8f5,_0x5581e6){var _0x441aec={'raw':![],'where':{'id':_0x50e8f5[_0x0788('0x46')]['id']}},_0x1d579d={};_0x1d579d['model']=_['keys'](db['UserProfileResource'][_0x0788('0x2e')]);_0x1d579d[_0x0788('0x34')]=_[_0x0788('0x47')](_0x50e8f5[_0x0788('0x34')]);_0x1d579d[_0x0788('0x35')]=_[_0x0788('0x36')](_0x1d579d[_0x0788('0x32')],_0x1d579d[_0x0788('0x34')]);_0x441aec['attributes']=_[_0x0788('0x36')](_0x1d579d[_0x0788('0x32')],qs[_0x0788('0x38')](_0x50e8f5[_0x0788('0x34')]['fields']));_0x441aec[_0x0788('0x37')]=_0x441aec[_0x0788('0x37')]['length']?_0x441aec['attributes']:_0x1d579d['model'];if(_0x50e8f5[_0x0788('0x34')]['includeAll']){_0x441aec[_0x0788('0x41')]=[{'all':!![]}];}_0x441aec=_[_0x0788('0x3f')]({},_0x441aec,_0x50e8f5[_0x0788('0x48')]);return db[_0x0788('0x2d')][_0x0788('0x49')](_0x441aec)[_0x0788('0x26')](handleEntityNotFound(_0x5581e6,null))[_0x0788('0x26')](respondWithResult(_0x5581e6,null))[_0x0788('0x44')](handleError(_0x5581e6,null));};exports['create']=function(_0x4c6366,_0x39c3cc){return db[_0x0788('0x2d')][_0x0788('0x4a')](_0x4c6366['body'],{})[_0x0788('0x26')](respondWithResult(_0x39c3cc,0xc9))[_0x0788('0x44')](handleError(_0x39c3cc,null));};exports[_0x0788('0x25')]=function(_0x4563cd,_0x2395ad){if(_0x4563cd['body']['id']){delete _0x4563cd['body']['id'];}return db[_0x0788('0x2d')][_0x0788('0x49')]({'where':{'id':_0x4563cd['params']['id']}})[_0x0788('0x26')](handleEntityNotFound(_0x2395ad,null))['then'](saveUpdates(_0x4563cd[_0x0788('0x4b')],null))[_0x0788('0x26')](respondWithResult(_0x2395ad,null))[_0x0788('0x44')](handleError(_0x2395ad,null));};exports[_0x0788('0x27')]=function(_0x3c757a,_0x379928){return db[_0x0788('0x2d')][_0x0788('0x49')]({'where':{'id':_0x3c757a['params']['id']}})[_0x0788('0x26')](handleEntityNotFound(_0x379928,null))[_0x0788('0x26')](removeEntity(_0x379928,null))[_0x0788('0x44')](handleError(_0x379928,null));};exports['describe']=function(_0x1693d0,_0x5d32ae){return db['UserProfileResource'][_0x0788('0x4c')]()[_0x0788('0x26')](respondWithResult(_0x5d32ae,null))[_0x0788('0x44')](handleError(_0x5d32ae,null));};
\ No newline at end of file
index 32ee383..0bc152d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa123=['./userProfileResource.attributes','exports','UserProfileResource','compositeIndex','resourceId','sectionId','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x50c951,_0x4774b5){var _0x4800c8=function(_0x3c429c){while(--_0x3c429c){_0x50c951['push'](_0x50c951['shift']());}};_0x4800c8(++_0x4774b5);}(_0xa123,0x1d4));var _0x3a12=function(_0x2f25cd,_0x2ed5a4){_0x2f25cd=_0x2f25cd-0x0;var _0x2cf3c2=_0xa123[_0x2f25cd];return _0x2cf3c2;};'use strict';var _=require(_0x3a12('0x0'));var util=require('util');var logger=require(_0x3a12('0x1'))(_0x3a12('0x2'));var moment=require(_0x3a12('0x3'));var BPromise=require(_0x3a12('0x4'));var rp=require(_0x3a12('0x5'));var fs=require('fs');var path=require(_0x3a12('0x6'));var rimraf=require(_0x3a12('0x7'));var config=require('../../config/environment');var attributes=require(_0x3a12('0x8'));module[_0x3a12('0x9')]=function(_0x1fc4e7,_0x20c149){return _0x1fc4e7['define'](_0x3a12('0xa'),attributes,{'tableName':'user_profile_has_resources','paranoid':![],'indexes':[{'name':_0x3a12('0xb'),'fields':[_0x3a12('0xc'),_0x3a12('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3a1b=['define','compositeIndex','sectionId','lodash','util','api','bluebird','rimraf','../../config/environment','exports'];(function(_0xd81e55,_0x10e0b1){var _0x5df59d=function(_0x57770c){while(--_0x57770c){_0xd81e55['push'](_0xd81e55['shift']());}};_0x5df59d(++_0x10e0b1);}(_0x3a1b,0x67));var _0xb3a1=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0x3a1b[_0x11005e];return _0x29338f;};'use strict';var _=require(_0xb3a1('0x0'));var util=require(_0xb3a1('0x1'));var logger=require('../../config/logger')(_0xb3a1('0x2'));var moment=require('moment');var BPromise=require(_0xb3a1('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb3a1('0x4'));var config=require(_0xb3a1('0x5'));var attributes=require('./userProfileResource.attributes');module[_0xb3a1('0x6')]=function(_0x1690c2,_0x4eb729){return _0x1690c2[_0xb3a1('0x7')]('UserProfileResource',attributes,{'tableName':'user_profile_has_resources','paranoid':![],'indexes':[{'name':_0xb3a1('0x8'),'fields':['resourceId',_0xb3a1('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 477621c..cea9517 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9df4=['UserProfileResource,\x20%s,\x20%s,\x20%s','error','UserProfileResource,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug'];(function(_0x16eb13,_0x3d592f){var _0x2b6230=function(_0x1f963a){while(--_0x1f963a){_0x16eb13['push'](_0x16eb13['shift']());}};_0x2b6230(++_0x3d592f);}(_0x9df4,0x1a8));var _0x49df=function(_0x2d4cf0,_0x209abe){_0x2d4cf0=_0x2d4cf0-0x0;var _0x22353c=_0x9df4[_0x2d4cf0];return _0x22353c;};'use strict';var _=require(_0x49df('0x0'));var util=require('util');var moment=require(_0x49df('0x1'));var BPromise=require(_0x49df('0x2'));var rs=require(_0x49df('0x3'));var fs=require('fs');var Redis=require(_0x49df('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x49df('0x5'));var logger=require(_0x49df('0x6'))(_0x49df('0x7'));var config=require(_0x49df('0x8'));var jayson=require(_0x49df('0x9'));var client=jayson[_0x49df('0xa')][_0x49df('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4e633f,_0x5c2506,_0x264480){return new BPromise(function(_0x2061a7,_0x1ce875){return client[_0x49df('0xc')](_0x4e633f,_0x264480)[_0x49df('0xd')](function(_0x3701d7){logger['info']('UserProfileResource,\x20%s,\x20%s',_0x5c2506,_0x49df('0xe'));logger[_0x49df('0xf')](_0x49df('0x10'),_0x5c2506,'request\x20sent',JSON['stringify'](_0x3701d7));if(_0x3701d7[_0x49df('0x11')]){if(_0x3701d7['error']['code']===0x1f4){logger[_0x49df('0x11')](_0x49df('0x12'),_0x5c2506,_0x3701d7[_0x49df('0x11')][_0x49df('0x13')]);return _0x1ce875(_0x3701d7['error'][_0x49df('0x13')]);}logger[_0x49df('0x11')]('UserProfileResource,\x20%s,\x20%s',_0x5c2506,_0x3701d7[_0x49df('0x11')]['message']);return _0x2061a7(_0x3701d7['error'][_0x49df('0x13')]);}else{logger['info'](_0x49df('0x12'),_0x5c2506,'request\x20sent');_0x2061a7(_0x3701d7[_0x49df('0x14')][_0x49df('0x13')]);}})[_0x49df('0x15')](function(_0x393059){logger[_0x49df('0x11')](_0x49df('0x12'),_0x5c2506,_0x393059);_0x1ce875(_0x393059);});});}
\ No newline at end of file
+var _0x09b5=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring'];(function(_0x5d7141,_0x59c862){var _0x101738=function(_0x148419){while(--_0x148419){_0x5d7141['push'](_0x5d7141['shift']());}};_0x101738(++_0x59c862);}(_0x09b5,0x128));var _0x509b=function(_0x36f2f6,_0x102e0f){_0x36f2f6=_0x36f2f6-0x0;var _0x2ebf71=_0x09b5[_0x36f2f6];return _0x2ebf71;};'use strict';var _=require(_0x509b('0x0'));var util=require(_0x509b('0x1'));var moment=require('moment');var BPromise=require(_0x509b('0x2'));var rs=require(_0x509b('0x3'));var fs=require('fs');var Redis=require(_0x509b('0x4'));var db=require(_0x509b('0x5'))['db'];var utils=require(_0x509b('0x6'));var logger=require(_0x509b('0x7'))(_0x509b('0x8'));var config=require(_0x509b('0x9'));var jayson=require(_0x509b('0xa'));var client=jayson[_0x509b('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4c770c,_0x4c9e83,_0x3e7676){return new BPromise(function(_0x4ac759,_0x44b62d){return client[_0x509b('0xc')](_0x4c770c,_0x3e7676)[_0x509b('0xd')](function(_0x5be802){logger[_0x509b('0xe')](_0x509b('0xf'),_0x4c9e83,_0x509b('0x10'));logger[_0x509b('0x11')](_0x509b('0x12'),_0x4c9e83,_0x509b('0x10'),JSON[_0x509b('0x13')](_0x5be802));if(_0x5be802[_0x509b('0x14')]){if(_0x5be802['error'][_0x509b('0x15')]===0x1f4){logger['error'](_0x509b('0xf'),_0x4c9e83,_0x5be802[_0x509b('0x14')][_0x509b('0x16')]);return _0x44b62d(_0x5be802[_0x509b('0x14')][_0x509b('0x16')]);}logger[_0x509b('0x14')](_0x509b('0xf'),_0x4c9e83,_0x5be802[_0x509b('0x14')][_0x509b('0x16')]);return _0x4ac759(_0x5be802['error'][_0x509b('0x16')]);}else{logger['info'](_0x509b('0xf'),_0x4c9e83,_0x509b('0x10'));_0x4ac759(_0x5be802[_0x509b('0x17')][_0x509b('0x16')]);}})[_0x509b('0x18')](function(_0x4c1041){logger[_0x509b('0x14')]('UserProfileResource,\x20%s,\x20%s',_0x4c9e83,_0x4c1041);_0x44b62d(_0x4c1041);});});}
\ No newline at end of file
index 2c5d69f..3535a20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dc6=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','get','/describe','describe','/:id','post','create','put'];(function(_0x341e0f,_0x4a09d0){var _0x59555a=function(_0x4343a8){while(--_0x4343a8){_0x341e0f['push'](_0x341e0f['shift']());}};_0x59555a(++_0x4a09d0);}(_0x2dc6,0x145));var _0x62dc=function(_0x44566f,_0x3c4d7e){_0x44566f=_0x44566f-0x0;var _0x1aca1e=_0x2dc6[_0x44566f];return _0x1aca1e;};'use strict';var multer=require(_0x62dc('0x0'));var util=require(_0x62dc('0x1'));var path=require(_0x62dc('0x2'));var timeout=require(_0x62dc('0x3'));var express=require(_0x62dc('0x4'));var router=express[_0x62dc('0x5')]();var fs_extra=require(_0x62dc('0x6'));var auth=require(_0x62dc('0x7'));var interaction=require(_0x62dc('0x8'));var config=require('../../config/environment');var controller=require('./userProfileSection.controller');router['get']('/',auth[_0x62dc('0x9')](),controller['index']);router[_0x62dc('0xa')](_0x62dc('0xb'),auth[_0x62dc('0x9')](),controller[_0x62dc('0xc')]);router[_0x62dc('0xa')](_0x62dc('0xd'),auth[_0x62dc('0x9')](),controller['show']);router[_0x62dc('0xe')]('/',auth[_0x62dc('0x9')](),controller[_0x62dc('0xf')]);router[_0x62dc('0x10')](_0x62dc('0xd'),auth[_0x62dc('0x9')](),controller['update']);router['delete'](_0x62dc('0xd'),auth[_0x62dc('0x9')](),controller['destroy']);module[_0x62dc('0x11')]=router;
\ No newline at end of file
+var _0x2d6e=['./userProfileSection.controller','get','isAuthenticated','index','describe','/:id','show','post','put','update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x396044,_0x72df41){var _0x499e43=function(_0x2a2b66){while(--_0x2a2b66){_0x396044['push'](_0x396044['shift']());}};_0x499e43(++_0x72df41);}(_0x2d6e,0x186));var _0xe2d6=function(_0x56b284,_0x258e2a){_0x56b284=_0x56b284-0x0;var _0x197a34=_0x2d6e[_0x56b284];return _0x197a34;};'use strict';var multer=require(_0xe2d6('0x0'));var util=require(_0xe2d6('0x1'));var path=require('path');var timeout=require(_0xe2d6('0x2'));var express=require(_0xe2d6('0x3'));var router=express[_0xe2d6('0x4')]();var fs_extra=require(_0xe2d6('0x5'));var auth=require(_0xe2d6('0x6'));var interaction=require(_0xe2d6('0x7'));var config=require(_0xe2d6('0x8'));var controller=require(_0xe2d6('0x9'));router[_0xe2d6('0xa')]('/',auth[_0xe2d6('0xb')](),controller[_0xe2d6('0xc')]);router[_0xe2d6('0xa')]('/describe',auth[_0xe2d6('0xb')](),controller[_0xe2d6('0xd')]);router['get'](_0xe2d6('0xe'),auth[_0xe2d6('0xb')](),controller[_0xe2d6('0xf')]);router[_0xe2d6('0x10')]('/',auth[_0xe2d6('0xb')](),controller['create']);router[_0xe2d6('0x11')](_0xe2d6('0xe'),auth[_0xe2d6('0xb')](),controller[_0xe2d6('0x12')]);router['delete'](_0xe2d6('0xe'),auth[_0xe2d6('0xb')](),controller[_0xe2d6('0x13')]);module[_0xe2d6('0x14')]=router;
\ No newline at end of file
index 7212b9b..4bffd02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3266=['getDataValue','split','sequelize','exports','STRING','INTEGER','BOOLEAN','crudPermissions'];(function(_0x1645af,_0x435623){var _0x5c36ea=function(_0x5c6993){while(--_0x5c6993){_0x1645af['push'](_0x1645af['shift']());}};_0x5c36ea(++_0x435623);}(_0x3266,0x6a));var _0x6326=function(_0x2272b5,_0x362458){_0x2272b5=_0x2272b5-0x0;var _0x110156=_0x3266[_0x2272b5];return _0x110156;};'use strict';var Sequelize=require(_0x6326('0x0'));module[_0x6326('0x1')]={'name':{'type':Sequelize[_0x6326('0x2')],'allowNull':![]},'category':{'type':Sequelize[_0x6326('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x6326('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0x6326('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x6326('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x6326('0x2')],'set':function(_0x265264){this['setDataValue'](_0x6326('0x5'),_0x265264?_0x265264['join'](''):[]);},'get':function(){return this[_0x6326('0x6')](_0x6326('0x5'))?this[_0x6326('0x6')]('crudPermissions')[_0x6326('0x7')](''):[];}}};
\ No newline at end of file
+var _0xfef3=['sequelize','STRING','INTEGER','BOOLEAN','crudPermissions','join','getDataValue','split'];(function(_0x5c338d,_0x2c9274){var _0x28f8f5=function(_0x3b0562){while(--_0x3b0562){_0x5c338d['push'](_0x5c338d['shift']());}};_0x28f8f5(++_0x2c9274);}(_0xfef3,0x118));var _0x3fef=function(_0x5cfa4f,_0x4d8fe9){_0x5cfa4f=_0x5cfa4f-0x0;var _0x2e5acd=_0xfef3[_0x5cfa4f];return _0x2e5acd;};'use strict';var Sequelize=require(_0x3fef('0x0'));module['exports']={'name':{'type':Sequelize[_0x3fef('0x1')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0x3fef('0x2')],'allowNull':![]},'enabled':{'type':Sequelize[_0x3fef('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x3fef('0x1')],'set':function(_0x3b71e5){this['setDataValue'](_0x3fef('0x4'),_0x3b71e5?_0x3b71e5[_0x3fef('0x5')](''):[]);},'get':function(){return this['getDataValue'](_0x3fef('0x4'))?this[_0x3fef('0x6')](_0x3fef('0x4'))[_0x3fef('0x7')](''):[];}}};
\ No newline at end of file
index 001c50a..20ae650 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f0c=['rows','catch','show','merge','create','body','params','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','send','map','rawAttributes','fieldName','type','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','VIRTUAL','options','UserProfileSection','includeAll','include','findAll'];(function(_0x1173c9,_0x491690){var _0x5322b5=function(_0x1bf701){while(--_0x1bf701){_0x1173c9['push'](_0x1173c9['shift']());}};_0x5322b5(++_0x491690);}(_0x4f0c,0x1dd));var _0xc4f0=function(_0x3bec67,_0x212a19){_0x3bec67=_0x3bec67-0x0;var _0x3bead4=_0x4f0c[_0x3bec67];return _0x3bead4;};'use strict';var emlformat=require(_0xc4f0('0x0'));var rimraf=require(_0xc4f0('0x1'));var zipdir=require(_0xc4f0('0x2'));var jsonpatch=require(_0xc4f0('0x3'));var rp=require(_0xc4f0('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc4f0('0x5'));var util=require(_0xc4f0('0x6'));var path=require(_0xc4f0('0x7'));var sox=require(_0xc4f0('0x8'));var csv=require(_0xc4f0('0x9'));var ejs=require(_0xc4f0('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc4f0('0xb'));var squel=require(_0xc4f0('0xc'));var crypto=require(_0xc4f0('0xd'));var jsforce=require(_0xc4f0('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xc4f0('0x9'));var querystring=require('querystring');var Papa=require(_0xc4f0('0xf'));var Redis=require(_0xc4f0('0x10'));var authService=require(_0xc4f0('0x11'));var qs=require(_0xc4f0('0x12'));var as=require(_0xc4f0('0x13'));var hardwareService=require(_0xc4f0('0x14'));var logger=require(_0xc4f0('0x15'))(_0xc4f0('0x16'));var utils=require('../../config/utils');var config=require(_0xc4f0('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x15af77,_0x4632d4){_0x4632d4=_0x4632d4||0xcc;return function(_0x82a6dc){if(_0x82a6dc){return _0x15af77['sendStatus'](_0x4632d4);}return _0x15af77[_0xc4f0('0x18')](_0x4632d4)[_0xc4f0('0x19')]();};}function respondWithResult(_0x54c3c8,_0x3f958f){_0x3f958f=_0x3f958f||0xc8;return function(_0x44d3e9){if(_0x44d3e9){return _0x54c3c8[_0xc4f0('0x18')](_0x3f958f)['json'](_0x44d3e9);}};}function respondWithFilteredResult(_0x452cc1,_0x383536){return function(_0x5cc15d){if(_0x5cc15d){var _0x4ffbe2=typeof _0x383536[_0xc4f0('0x1a')]===_0xc4f0('0x1b')&&typeof _0x383536[_0xc4f0('0x1c')]===_0xc4f0('0x1b');var _0x5f123e=_0x5cc15d[_0xc4f0('0x1d')];var _0x271d26=_0x4ffbe2?0x0:_0x383536[_0xc4f0('0x1a')];var _0x2a5e34=_0x4ffbe2?_0x5cc15d[_0xc4f0('0x1d')]:_0x383536['offset']+_0x383536[_0xc4f0('0x1c')];var _0x261861;if(_0x2a5e34>=_0x5f123e){_0x2a5e34=_0x5f123e;_0x261861=0xc8;}else{_0x261861=0xce;}_0x452cc1[_0xc4f0('0x18')](_0x261861);return _0x452cc1[_0xc4f0('0x1e')](_0xc4f0('0x1f'),_0x271d26+'-'+_0x2a5e34+'/'+_0x5f123e)[_0xc4f0('0x20')](_0x5cc15d);}return null;};}function patchUpdates(_0x2bd796){return function(_0x2ebe47){try{jsonpatch[_0xc4f0('0x21')](_0x2ebe47,_0x2bd796,!![]);}catch(_0x5d3a95){return BPromise[_0xc4f0('0x22')](_0x5d3a95);}return _0x2ebe47[_0xc4f0('0x23')]();};}function saveUpdates(_0x42797f,_0x12be0f){return function(_0x4f2c69){if(_0x4f2c69){return _0x4f2c69[_0xc4f0('0x24')](_0x42797f)['then'](function(_0x2853a8){return _0x2853a8;});}return null;};}function removeEntity(_0x404cd8,_0xf59864){return function(_0x11699b){if(_0x11699b){return _0x11699b[_0xc4f0('0x25')]()[_0xc4f0('0x26')](function(){_0x404cd8[_0xc4f0('0x18')](0xcc)[_0xc4f0('0x19')]();});}};}function handleEntityNotFound(_0x5df160,_0x1ec157){return function(_0x54a767){if(!_0x54a767){_0x5df160[_0xc4f0('0x27')](0x194);}return _0x54a767;};}function handleError(_0x43ba18,_0xa82e4a){_0xa82e4a=_0xa82e4a||0x1f4;return function(_0x379b7c){logger[_0xc4f0('0x28')](_0x379b7c[_0xc4f0('0x29')]);if(_0x379b7c[_0xc4f0('0x2a')]){delete _0x379b7c[_0xc4f0('0x2a')];}_0x43ba18[_0xc4f0('0x18')](_0xa82e4a)[_0xc4f0('0x2b')](_0x379b7c);};}exports['index']=function(_0x3de354,_0xee99b7){var _0xe20f41={},_0x396e5c={},_0x26e791={'count':0x0,'rows':[]};var _0x495b9f=_[_0xc4f0('0x2c')](db['UserProfileSection'][_0xc4f0('0x2d')],function(_0xeefafd){return{'name':_0xeefafd[_0xc4f0('0x2e')],'type':_0xeefafd[_0xc4f0('0x2f')]['key']};});_0x396e5c[_0xc4f0('0x30')]=_[_0xc4f0('0x2c')](_0x495b9f,_0xc4f0('0x2a'));_0x396e5c['query']=_[_0xc4f0('0x31')](_0x3de354[_0xc4f0('0x32')]);_0x396e5c['filters']=_[_0xc4f0('0x33')](_0x396e5c[_0xc4f0('0x30')],_0x396e5c[_0xc4f0('0x32')]);_0xe20f41[_0xc4f0('0x34')]=_['intersection'](_0x396e5c['model'],qs[_0xc4f0('0x35')](_0x3de354[_0xc4f0('0x32')]['fields']));_0xe20f41[_0xc4f0('0x34')]=_0xe20f41[_0xc4f0('0x34')][_0xc4f0('0x36')]?_0xe20f41[_0xc4f0('0x34')]:_0x396e5c['model'];if(!_0x3de354['query'][_0xc4f0('0x37')](_0xc4f0('0x38'))){_0xe20f41[_0xc4f0('0x1c')]=qs[_0xc4f0('0x1c')](_0x3de354[_0xc4f0('0x32')]['limit']);_0xe20f41['offset']=qs['offset'](_0x3de354[_0xc4f0('0x32')][_0xc4f0('0x1a')]);}_0xe20f41[_0xc4f0('0x39')]=qs[_0xc4f0('0x3a')](_0x3de354[_0xc4f0('0x32')]['sort']);_0xe20f41[_0xc4f0('0x3b')]=qs['filters'](_[_0xc4f0('0x3c')](_0x3de354['query'],_0x396e5c[_0xc4f0('0x3d')]),_0x495b9f);if(_0x3de354[_0xc4f0('0x32')][_0xc4f0('0x3e')]){_0xe20f41[_0xc4f0('0x3b')]=_['merge'](_0xe20f41[_0xc4f0('0x3b')],{'$or':_[_0xc4f0('0x2c')](_0x495b9f,function(_0x76db78){if(_0x76db78[_0xc4f0('0x2f')]!==_0xc4f0('0x3f')){var _0x73dbdc={};_0x73dbdc[_0x76db78[_0xc4f0('0x2a')]]={'$like':'%'+_0x3de354[_0xc4f0('0x32')][_0xc4f0('0x3e')]+'%'};return _0x73dbdc;}})});}_0xe20f41=_['merge']({},_0xe20f41,_0x3de354[_0xc4f0('0x40')]);var _0x4d2d4d={'where':_0xe20f41[_0xc4f0('0x3b')]};return db[_0xc4f0('0x41')][_0xc4f0('0x1d')](_0x4d2d4d)['then'](function(_0x456b80){_0x26e791['count']=_0x456b80;if(_0x3de354['query'][_0xc4f0('0x42')]){_0xe20f41[_0xc4f0('0x43')]=[{'all':!![]}];}return db[_0xc4f0('0x41')][_0xc4f0('0x44')](_0xe20f41);})['then'](function(_0x323edc){_0x26e791[_0xc4f0('0x45')]=_0x323edc;return _0x26e791;})['then'](respondWithFilteredResult(_0xee99b7,_0xe20f41))[_0xc4f0('0x46')](handleError(_0xee99b7,null));};exports[_0xc4f0('0x47')]=function(_0x1685ac,_0x564f0d){var _0x516a29={'raw':![],'where':{'id':_0x1685ac['params']['id']}},_0x10ae1f={};_0x10ae1f['model']=_[_0xc4f0('0x31')](db['UserProfileSection'][_0xc4f0('0x2d')]);_0x10ae1f[_0xc4f0('0x32')]=_[_0xc4f0('0x31')](_0x1685ac[_0xc4f0('0x32')]);_0x10ae1f[_0xc4f0('0x3d')]=_[_0xc4f0('0x33')](_0x10ae1f[_0xc4f0('0x30')],_0x10ae1f['query']);_0x516a29[_0xc4f0('0x34')]=_[_0xc4f0('0x33')](_0x10ae1f[_0xc4f0('0x30')],qs[_0xc4f0('0x35')](_0x1685ac[_0xc4f0('0x32')][_0xc4f0('0x35')]));_0x516a29[_0xc4f0('0x34')]=_0x516a29['attributes']['length']?_0x516a29[_0xc4f0('0x34')]:_0x10ae1f['model'];if(_0x1685ac['query'][_0xc4f0('0x42')]){_0x516a29['include']=[{'all':!![]}];}_0x516a29=_[_0xc4f0('0x48')]({},_0x516a29,_0x1685ac[_0xc4f0('0x40')]);return db[_0xc4f0('0x41')]['find'](_0x516a29)[_0xc4f0('0x26')](handleEntityNotFound(_0x564f0d,null))['then'](respondWithResult(_0x564f0d,null))[_0xc4f0('0x46')](handleError(_0x564f0d,null));};exports[_0xc4f0('0x49')]=function(_0x5f2782,_0x1cf357){return db['UserProfileSection']['create'](_0x5f2782[_0xc4f0('0x4a')],{})[_0xc4f0('0x26')](respondWithResult(_0x1cf357,0xc9))[_0xc4f0('0x46')](handleError(_0x1cf357,null));};exports[_0xc4f0('0x24')]=function(_0x2c0f8b,_0x214d16){if(_0x2c0f8b[_0xc4f0('0x4a')]['id']){delete _0x2c0f8b[_0xc4f0('0x4a')]['id'];}return db[_0xc4f0('0x41')]['find']({'where':{'id':_0x2c0f8b[_0xc4f0('0x4b')]['id']}})[_0xc4f0('0x26')](handleEntityNotFound(_0x214d16,null))[_0xc4f0('0x26')](saveUpdates(_0x2c0f8b[_0xc4f0('0x4a')],null))[_0xc4f0('0x26')](respondWithResult(_0x214d16,null))[_0xc4f0('0x46')](handleError(_0x214d16,null));};exports[_0xc4f0('0x25')]=function(_0x211090,_0x5e84de){return db['UserProfileSection'][_0xc4f0('0x4c')]({'where':{'id':_0x211090['params']['id']}})[_0xc4f0('0x26')](handleEntityNotFound(_0x5e84de,null))[_0xc4f0('0x26')](removeEntity(_0x5e84de,null))[_0xc4f0('0x46')](handleError(_0x5e84de,null));};exports[_0xc4f0('0x4d')]=function(_0x2a22c2,_0x42a334){return db[_0xc4f0('0x41')]['describe']()['then'](respondWithResult(_0x42a334,null))['catch'](handleError(_0x42a334,null));};
\ No newline at end of file
+var _0xa7cf=['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','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','UserProfileSection','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','path','to-csv','ejs','lodash','crypto','jsforce'];(function(_0x39eee5,_0x22efe6){var _0x36ad23=function(_0x269f13){while(--_0x269f13){_0x39eee5['push'](_0x39eee5['shift']());}};_0x36ad23(++_0x22efe6);}(_0xa7cf,0x8c));var _0xfa7c=function(_0xe30e17,_0xce02be){_0xe30e17=_0xe30e17-0x0;var _0x2342c9=_0xa7cf[_0xe30e17];return _0x2342c9;};'use strict';var emlformat=require(_0xfa7c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfa7c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfa7c('0x2'));var moment=require(_0xfa7c('0x3'));var BPromise=require(_0xfa7c('0x4'));var Mustache=require(_0xfa7c('0x5'));var util=require('util');var path=require(_0xfa7c('0x6'));var sox=require('sox');var csv=require(_0xfa7c('0x7'));var ejs=require(_0xfa7c('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfa7c('0x9'));var squel=require('squel');var crypto=require(_0xfa7c('0xa'));var jsforce=require(_0xfa7c('0xb'));var deskjs=require(_0xfa7c('0xc'));var toCsv=require(_0xfa7c('0x7'));var querystring=require(_0xfa7c('0xd'));var Papa=require('papaparse');var Redis=require(_0xfa7c('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xfa7c('0xf'));var as=require(_0xfa7c('0x10'));var hardwareService=require(_0xfa7c('0x11'));var logger=require(_0xfa7c('0x12'))(_0xfa7c('0x13'));var utils=require(_0xfa7c('0x14'));var config=require(_0xfa7c('0x15'));var licenseUtil=require(_0xfa7c('0x16'));var db=require(_0xfa7c('0x17'))['db'];function respondWithStatusCode(_0x194cad,_0x5577f6){_0x5577f6=_0x5577f6||0xcc;return function(_0x20925c){if(_0x20925c){return _0x194cad[_0xfa7c('0x18')](_0x5577f6);}return _0x194cad['status'](_0x5577f6)[_0xfa7c('0x19')]();};}function respondWithResult(_0x415781,_0x136cc5){_0x136cc5=_0x136cc5||0xc8;return function(_0x2152cd){if(_0x2152cd){return _0x415781[_0xfa7c('0x1a')](_0x136cc5)[_0xfa7c('0x1b')](_0x2152cd);}};}function respondWithFilteredResult(_0x532704,_0x46e9c9){return function(_0x5ead23){if(_0x5ead23){var _0x5c87ae=typeof _0x46e9c9[_0xfa7c('0x1c')]===_0xfa7c('0x1d')&&typeof _0x46e9c9[_0xfa7c('0x1e')]===_0xfa7c('0x1d');var _0x3d6d43=_0x5ead23[_0xfa7c('0x1f')];var _0x2f86c4=_0x5c87ae?0x0:_0x46e9c9[_0xfa7c('0x1c')];var _0x34838f=_0x5c87ae?_0x5ead23[_0xfa7c('0x1f')]:_0x46e9c9['offset']+_0x46e9c9[_0xfa7c('0x1e')];var _0x562d36;if(_0x34838f>=_0x3d6d43){_0x34838f=_0x3d6d43;_0x562d36=0xc8;}else{_0x562d36=0xce;}_0x532704[_0xfa7c('0x1a')](_0x562d36);return _0x532704['set'](_0xfa7c('0x20'),_0x2f86c4+'-'+_0x34838f+'/'+_0x3d6d43)[_0xfa7c('0x1b')](_0x5ead23);}return null;};}function patchUpdates(_0x27398b){return function(_0x28aaf5){try{jsonpatch[_0xfa7c('0x21')](_0x28aaf5,_0x27398b,!![]);}catch(_0x7fb5bf){return BPromise[_0xfa7c('0x22')](_0x7fb5bf);}return _0x28aaf5[_0xfa7c('0x23')]();};}function saveUpdates(_0x5372ec,_0x4957c9){return function(_0x3f21f8){if(_0x3f21f8){return _0x3f21f8[_0xfa7c('0x24')](_0x5372ec)[_0xfa7c('0x25')](function(_0x1763e2){return _0x1763e2;});}return null;};}function removeEntity(_0x3b00f7,_0x120549){return function(_0xf6721f){if(_0xf6721f){return _0xf6721f['destroy']()[_0xfa7c('0x25')](function(){_0x3b00f7[_0xfa7c('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ffa92,_0x4a478e){return function(_0x1a14c3){if(!_0x1a14c3){_0x4ffa92[_0xfa7c('0x18')](0x194);}return _0x1a14c3;};}function handleError(_0x38482a,_0x2e43cc){_0x2e43cc=_0x2e43cc||0x1f4;return function(_0x912642){logger[_0xfa7c('0x26')](_0x912642[_0xfa7c('0x27')]);if(_0x912642[_0xfa7c('0x28')]){delete _0x912642['name'];}_0x38482a['status'](_0x2e43cc)[_0xfa7c('0x29')](_0x912642);};}exports[_0xfa7c('0x2a')]=function(_0x1c3adf,_0x324e55){var _0x544dd7={},_0x5eba8c={},_0x48b71c={'count':0x0,'rows':[]};var _0x45364d=_[_0xfa7c('0x2b')](db[_0xfa7c('0x2c')]['rawAttributes'],function(_0x24d315){return{'name':_0x24d315['fieldName'],'type':_0x24d315[_0xfa7c('0x2d')]['key']};});_0x5eba8c[_0xfa7c('0x2e')]=_[_0xfa7c('0x2b')](_0x45364d,_0xfa7c('0x28'));_0x5eba8c[_0xfa7c('0x2f')]=_[_0xfa7c('0x30')](_0x1c3adf[_0xfa7c('0x2f')]);_0x5eba8c['filters']=_[_0xfa7c('0x31')](_0x5eba8c[_0xfa7c('0x2e')],_0x5eba8c[_0xfa7c('0x2f')]);_0x544dd7[_0xfa7c('0x32')]=_[_0xfa7c('0x31')](_0x5eba8c['model'],qs['fields'](_0x1c3adf[_0xfa7c('0x2f')][_0xfa7c('0x33')]));_0x544dd7[_0xfa7c('0x32')]=_0x544dd7['attributes'][_0xfa7c('0x34')]?_0x544dd7[_0xfa7c('0x32')]:_0x5eba8c[_0xfa7c('0x2e')];if(!_0x1c3adf[_0xfa7c('0x2f')][_0xfa7c('0x35')](_0xfa7c('0x36'))){_0x544dd7[_0xfa7c('0x1e')]=qs[_0xfa7c('0x1e')](_0x1c3adf[_0xfa7c('0x2f')][_0xfa7c('0x1e')]);_0x544dd7[_0xfa7c('0x1c')]=qs['offset'](_0x1c3adf[_0xfa7c('0x2f')][_0xfa7c('0x1c')]);}_0x544dd7[_0xfa7c('0x37')]=qs[_0xfa7c('0x38')](_0x1c3adf['query']['sort']);_0x544dd7[_0xfa7c('0x39')]=qs['filters'](_[_0xfa7c('0x3a')](_0x1c3adf[_0xfa7c('0x2f')],_0x5eba8c[_0xfa7c('0x3b')]),_0x45364d);if(_0x1c3adf[_0xfa7c('0x2f')][_0xfa7c('0x3c')]){_0x544dd7[_0xfa7c('0x39')]=_[_0xfa7c('0x3d')](_0x544dd7[_0xfa7c('0x39')],{'$or':_[_0xfa7c('0x2b')](_0x45364d,function(_0x3598b2){if(_0x3598b2[_0xfa7c('0x2d')]!==_0xfa7c('0x3e')){var _0x2866d2={};_0x2866d2[_0x3598b2[_0xfa7c('0x28')]]={'$like':'%'+_0x1c3adf[_0xfa7c('0x2f')][_0xfa7c('0x3c')]+'%'};return _0x2866d2;}})});}_0x544dd7=_[_0xfa7c('0x3d')]({},_0x544dd7,_0x1c3adf[_0xfa7c('0x3f')]);var _0x279207={'where':_0x544dd7[_0xfa7c('0x39')]};return db[_0xfa7c('0x2c')]['count'](_0x279207)[_0xfa7c('0x25')](function(_0x1d350f){_0x48b71c['count']=_0x1d350f;if(_0x1c3adf[_0xfa7c('0x2f')][_0xfa7c('0x40')]){_0x544dd7[_0xfa7c('0x41')]=[{'all':!![]}];}return db[_0xfa7c('0x2c')][_0xfa7c('0x42')](_0x544dd7);})[_0xfa7c('0x25')](function(_0x1ceaee){_0x48b71c[_0xfa7c('0x43')]=_0x1ceaee;return _0x48b71c;})[_0xfa7c('0x25')](respondWithFilteredResult(_0x324e55,_0x544dd7))[_0xfa7c('0x44')](handleError(_0x324e55,null));};exports[_0xfa7c('0x45')]=function(_0x5ce729,_0x226b0f){var _0x3d5c11={'raw':![],'where':{'id':_0x5ce729[_0xfa7c('0x46')]['id']}},_0x3fce93={};_0x3fce93[_0xfa7c('0x2e')]=_[_0xfa7c('0x30')](db['UserProfileSection'][_0xfa7c('0x47')]);_0x3fce93[_0xfa7c('0x2f')]=_[_0xfa7c('0x30')](_0x5ce729['query']);_0x3fce93['filters']=_[_0xfa7c('0x31')](_0x3fce93[_0xfa7c('0x2e')],_0x3fce93['query']);_0x3d5c11[_0xfa7c('0x32')]=_['intersection'](_0x3fce93['model'],qs[_0xfa7c('0x33')](_0x5ce729['query'][_0xfa7c('0x33')]));_0x3d5c11['attributes']=_0x3d5c11[_0xfa7c('0x32')][_0xfa7c('0x34')]?_0x3d5c11[_0xfa7c('0x32')]:_0x3fce93[_0xfa7c('0x2e')];if(_0x5ce729['query'][_0xfa7c('0x40')]){_0x3d5c11[_0xfa7c('0x41')]=[{'all':!![]}];}_0x3d5c11=_[_0xfa7c('0x3d')]({},_0x3d5c11,_0x5ce729[_0xfa7c('0x3f')]);return db['UserProfileSection'][_0xfa7c('0x48')](_0x3d5c11)['then'](handleEntityNotFound(_0x226b0f,null))['then'](respondWithResult(_0x226b0f,null))[_0xfa7c('0x44')](handleError(_0x226b0f,null));};exports[_0xfa7c('0x49')]=function(_0x515fc2,_0x3b2474){return db[_0xfa7c('0x2c')][_0xfa7c('0x49')](_0x515fc2['body'],{})[_0xfa7c('0x25')](respondWithResult(_0x3b2474,0xc9))[_0xfa7c('0x44')](handleError(_0x3b2474,null));};exports[_0xfa7c('0x24')]=function(_0x29dd6d,_0x4fb3fa){if(_0x29dd6d['body']['id']){delete _0x29dd6d[_0xfa7c('0x4a')]['id'];}return db['UserProfileSection']['find']({'where':{'id':_0x29dd6d[_0xfa7c('0x46')]['id']}})[_0xfa7c('0x25')](handleEntityNotFound(_0x4fb3fa,null))['then'](saveUpdates(_0x29dd6d[_0xfa7c('0x4a')],null))[_0xfa7c('0x25')](respondWithResult(_0x4fb3fa,null))['catch'](handleError(_0x4fb3fa,null));};exports['destroy']=function(_0x24887b,_0x3c4eda){return db[_0xfa7c('0x2c')][_0xfa7c('0x48')]({'where':{'id':_0x24887b['params']['id']}})[_0xfa7c('0x25')](handleEntityNotFound(_0x3c4eda,null))[_0xfa7c('0x25')](removeEntity(_0x3c4eda,null))[_0xfa7c('0x44')](handleError(_0x3c4eda,null));};exports[_0xfa7c('0x4b')]=function(_0x81daa9,_0x511642){return db[_0xfa7c('0x2c')][_0xfa7c('0x4b')]()[_0xfa7c('0x25')](respondWithResult(_0x511642,null))[_0xfa7c('0x44')](handleError(_0x511642,null));};
\ No newline at end of file
index be2b610..2e4fb48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97a1=['exports','define','user_profile_has_sections','compositeIndex','sectionId','userProfileId','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userProfileSection.attributes'];(function(_0xa3c29c,_0x468e80){var _0x266e17=function(_0x278a53){while(--_0x278a53){_0xa3c29c['push'](_0xa3c29c['shift']());}};_0x266e17(++_0x468e80);}(_0x97a1,0x1e6));var _0x197a=function(_0xc378f5,_0x49b94d){_0xc378f5=_0xc378f5-0x0;var _0x484767=_0x97a1[_0xc378f5];return _0x484767;};'use strict';var _=require(_0x197a('0x0'));var util=require('util');var logger=require(_0x197a('0x1'))(_0x197a('0x2'));var moment=require(_0x197a('0x3'));var BPromise=require(_0x197a('0x4'));var rp=require(_0x197a('0x5'));var fs=require('fs');var path=require(_0x197a('0x6'));var rimraf=require(_0x197a('0x7'));var config=require(_0x197a('0x8'));var attributes=require(_0x197a('0x9'));module[_0x197a('0xa')]=function(_0x5a2eb7,_0x2c2e84){return _0x5a2eb7[_0x197a('0xb')]('UserProfileSection',attributes,{'tableName':_0x197a('0xc'),'paranoid':![],'indexes':[{'name':_0x197a('0xd'),'fields':[_0x197a('0xe'),_0x197a('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc51e=['./userProfileSection.attributes','exports','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','util','request-promise','path','rimraf','../../config/environment'];(function(_0x5e7ee3,_0x36333d){var _0x153050=function(_0x2aabc3){while(--_0x2aabc3){_0x5e7ee3['push'](_0x5e7ee3['shift']());}};_0x153050(++_0x36333d);}(_0xc51e,0xab));var _0xec51=function(_0x1e371f,_0x361627){_0x1e371f=_0x1e371f-0x0;var _0x4671ef=_0xc51e[_0x1e371f];return _0x4671ef;};'use strict';var _=require('lodash');var util=require(_0xec51('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xec51('0x1'));var fs=require('fs');var path=require(_0xec51('0x2'));var rimraf=require(_0xec51('0x3'));var config=require(_0xec51('0x4'));var attributes=require(_0xec51('0x5'));module[_0xec51('0x6')]=function(_0x3e5a0d,_0x2c3f62){return _0x3e5a0d['define'](_0xec51('0x7'),attributes,{'tableName':_0xec51('0x8'),'paranoid':![],'indexes':[{'name':_0xec51('0x9'),'fields':[_0xec51('0xa'),'userProfileId']}],'timestamps':!![]});};
\ No newline at end of file
index b62ae4c..eabf428 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd6e=['UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','randomstring','ioredis','rpc','client','http','request','then','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2ff1f6,_0x1bc588){var _0xbae96d=function(_0x505c67){while(--_0x505c67){_0x2ff1f6['push'](_0x2ff1f6['shift']());}};_0xbae96d(++_0x1bc588);}(_0xfd6e,0x16e));var _0xefd6=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xfd6e[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0xefd6('0x0'));var util=require('util');var moment=require(_0xefd6('0x1'));var BPromise=require('bluebird');var rs=require(_0xefd6('0x2'));var fs=require('fs');var Redis=require(_0xefd6('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xefd6('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xefd6('0x5')][_0xefd6('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x26e108,_0xe477f9,_0x340765){return new BPromise(function(_0x5da399,_0x59c636){return client[_0xefd6('0x7')](_0x26e108,_0x340765)[_0xefd6('0x8')](function(_0x3c941a){logger['info'](_0xefd6('0x9'),_0xe477f9,_0xefd6('0xa'));logger[_0xefd6('0xb')](_0xefd6('0xc'),_0xe477f9,'request\x20sent',JSON[_0xefd6('0xd')](_0x3c941a));if(_0x3c941a[_0xefd6('0xe')]){if(_0x3c941a[_0xefd6('0xe')][_0xefd6('0xf')]===0x1f4){logger[_0xefd6('0xe')](_0xefd6('0x9'),_0xe477f9,_0x3c941a[_0xefd6('0xe')][_0xefd6('0x10')]);return _0x59c636(_0x3c941a['error'][_0xefd6('0x10')]);}logger[_0xefd6('0xe')](_0xefd6('0x9'),_0xe477f9,_0x3c941a[_0xefd6('0xe')][_0xefd6('0x10')]);return _0x5da399(_0x3c941a['error'][_0xefd6('0x10')]);}else{logger['info'](_0xefd6('0x9'),_0xe477f9,'request\x20sent');_0x5da399(_0x3c941a[_0xefd6('0x11')][_0xefd6('0x10')]);}})['catch'](function(_0x17bf20){logger[_0xefd6('0xe')](_0xefd6('0x9'),_0xe477f9,_0x17bf20);_0x59c636(_0x17bf20);});});}
\ No newline at end of file
+var _0x3a96=['http','request','then','info','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UserProfileSection,\x20%s,\x20%s','result','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise'];(function(_0x41bf7c,_0x273c92){var _0x1fd40a=function(_0x3671fc){while(--_0x3671fc){_0x41bf7c['push'](_0x41bf7c['shift']());}};_0x1fd40a(++_0x273c92);}(_0x3a96,0x1b2));var _0x63a9=function(_0x443cdf,_0x40a208){_0x443cdf=_0x443cdf-0x0;var _0x575833=_0x3a96[_0x443cdf];return _0x575833;};'use strict';var _=require(_0x63a9('0x0'));var util=require('util');var moment=require(_0x63a9('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x63a9('0x2'));var db=require(_0x63a9('0x3'))['db'];var utils=require(_0x63a9('0x4'));var logger=require(_0x63a9('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x63a9('0x6'));var client=jayson['client'][_0x63a9('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x342509,_0x45e3c0,_0x50af0d){return new BPromise(function(_0xea0c70,_0x18062d){return client[_0x63a9('0x8')](_0x342509,_0x50af0d)[_0x63a9('0x9')](function(_0x8d2402){logger[_0x63a9('0xa')]('UserProfileSection,\x20%s,\x20%s',_0x45e3c0,_0x63a9('0xb'));logger[_0x63a9('0xc')](_0x63a9('0xd'),_0x45e3c0,'request\x20sent',JSON[_0x63a9('0xe')](_0x8d2402));if(_0x8d2402[_0x63a9('0xf')]){if(_0x8d2402[_0x63a9('0xf')][_0x63a9('0x10')]===0x1f4){logger['error']('UserProfileSection,\x20%s,\x20%s',_0x45e3c0,_0x8d2402['error'][_0x63a9('0x11')]);return _0x18062d(_0x8d2402[_0x63a9('0xf')][_0x63a9('0x11')]);}logger['error'](_0x63a9('0x12'),_0x45e3c0,_0x8d2402[_0x63a9('0xf')]['message']);return _0xea0c70(_0x8d2402[_0x63a9('0xf')][_0x63a9('0x11')]);}else{logger[_0x63a9('0xa')](_0x63a9('0x12'),_0x45e3c0,_0x63a9('0xb'));_0xea0c70(_0x8d2402[_0x63a9('0x13')]['message']);}})[_0x63a9('0x14')](function(_0xa8cb9){logger[_0x63a9('0xf')](_0x63a9('0x12'),_0x45e3c0,_0xa8cb9);_0x18062d(_0xa8cb9);});});}
\ No newline at end of file
index c18af23..2444fb7 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(_0x45a945,_0x2e8b66){var _0x403af5=function(_0x3a1c80){while(--_0x3a1c80){_0x45a945['push'](_0x45a945['shift']());}};_0x403af5(++_0x2e8b66);}(_0x9c44,0x178));var _0x49c4=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0x9c44[_0x21549c];return _0x426cbd;};'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(_0x3bf02f,_0xecb23a){var _0x2868bd=function(_0x4ec537){while(--_0x4ec537){_0x3bf02f['push'](_0x3bf02f['shift']());}};_0x2868bd(++_0xecb23a);}(_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 3618d5f..5fa5d20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0995=['INTEGER','sequelize','exports'];(function(_0x2d1cf4,_0x2ea9ee){var _0x554a7c=function(_0x55cc39){while(--_0x55cc39){_0x2d1cf4['push'](_0x2d1cf4['shift']());}};_0x554a7c(++_0x2ea9ee);}(_0x0995,0x7f));var _0x5099=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0995[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x5099('0x0'));module[_0x5099('0x1')]={'penalty':{'type':Sequelize[_0x5099('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe3e3=['INTEGER'];(function(_0x8806f5,_0x259bc6){var _0x39a9a8=function(_0x5c1806){while(--_0x5c1806){_0x8806f5['push'](_0x8806f5['shift']());}};_0x39a9a8(++_0x259bc6);}(_0xe3e3,0x9c));var _0x3e3e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xe3e3[_0xbca1b1];return _0x4e1686;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0x3e3e('0x0')],'defaultValue':0x0}};
\ No newline at end of file
index df109c0..89f7530 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfa0=['path','../../config/environment','exports','define','UserSmsQueue','user_has_sms_queues','lodash','../../config/logger','api','bluebird','request-promise'];(function(_0x43428a,_0x423c0a){var _0x48d457=function(_0x28f3c5){while(--_0x28f3c5){_0x43428a['push'](_0x43428a['shift']());}};_0x48d457(++_0x423c0a);}(_0xdfa0,0x69));var _0x0dfa=function(_0x10425e,_0x59681d){_0x10425e=_0x10425e-0x0;var _0x2ceaa7=_0xdfa0[_0x10425e];return _0x2ceaa7;};'use strict';var _=require(_0x0dfa('0x0'));var util=require('util');var logger=require(_0x0dfa('0x1'))(_0x0dfa('0x2'));var moment=require('moment');var BPromise=require(_0x0dfa('0x3'));var rp=require(_0x0dfa('0x4'));var fs=require('fs');var path=require(_0x0dfa('0x5'));var rimraf=require('rimraf');var config=require(_0x0dfa('0x6'));var attributes=require('./userSmsQueue.attributes');module[_0x0dfa('0x7')]=function(_0x2efe20,_0x4830b6){return _0x2efe20[_0x0dfa('0x8')](_0x0dfa('0x9'),attributes,{'tableName':_0x0dfa('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xed1c=['exports','UserSmsQueue','user_has_sms_queues','lodash','util','request-promise','path','rimraf','./userSmsQueue.attributes'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xed1c,0xe4));var _0xced1=function(_0x5a3138,_0x2667fd){_0x5a3138=_0x5a3138-0x0;var _0x232d67=_0xed1c[_0x5a3138];return _0x232d67;};'use strict';var _=require(_0xced1('0x0'));var util=require(_0xced1('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xced1('0x2'));var fs=require('fs');var path=require(_0xced1('0x3'));var rimraf=require(_0xced1('0x4'));var config=require('../../config/environment');var attributes=require(_0xced1('0x5'));module[_0xced1('0x6')]=function(_0x466657,_0x37b22b){return _0x466657['define'](_0xced1('0x7'),attributes,{'tableName':_0xced1('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b726d92..612e23b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x266a=['code','message','info','UserSmsQueue,\x20%s,\x20%s','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x53c4f8,_0x44ccaf){var _0x416458=function(_0x2632aa){while(--_0x2632aa){_0x53c4f8['push'](_0x53c4f8['shift']());}};_0x416458(++_0x44ccaf);}(_0x266a,0xcd));var _0xa266=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x266a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa266('0x0'));var util=require(_0xa266('0x1'));var moment=require(_0xa266('0x2'));var BPromise=require(_0xa266('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa266('0x4'));var db=require(_0xa266('0x5'))['db'];var utils=require(_0xa266('0x6'));var logger=require(_0xa266('0x7'))(_0xa266('0x8'));var config=require(_0xa266('0x9'));var jayson=require(_0xa266('0xa'));var client=jayson[_0xa266('0xb')][_0xa266('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x55a696,_0x102e3b,_0x5853f6){return new BPromise(function(_0x1dd870,_0x5ef04a){return client[_0xa266('0xd')](_0x55a696,_0x5853f6)[_0xa266('0xe')](function(_0x5b5278){logger['info']('UserSmsQueue,\x20%s,\x20%s',_0x102e3b,_0xa266('0xf'));logger[_0xa266('0x10')](_0xa266('0x11'),_0x102e3b,_0xa266('0xf'),JSON[_0xa266('0x12')](_0x5b5278));if(_0x5b5278['error']){if(_0x5b5278[_0xa266('0x13')][_0xa266('0x14')]===0x1f4){logger[_0xa266('0x13')]('UserSmsQueue,\x20%s,\x20%s',_0x102e3b,_0x5b5278[_0xa266('0x13')][_0xa266('0x15')]);return _0x5ef04a(_0x5b5278[_0xa266('0x13')][_0xa266('0x15')]);}logger[_0xa266('0x13')]('UserSmsQueue,\x20%s,\x20%s',_0x102e3b,_0x5b5278[_0xa266('0x13')][_0xa266('0x15')]);return _0x1dd870(_0x5b5278[_0xa266('0x13')][_0xa266('0x15')]);}else{logger[_0xa266('0x16')](_0xa266('0x17'),_0x102e3b,_0xa266('0xf'));_0x1dd870(_0x5b5278[_0xa266('0x18')][_0xa266('0x15')]);}})['catch'](function(_0x3dc817){logger[_0xa266('0x13')]('UserSmsQueue,\x20%s,\x20%s',_0x102e3b,_0x3dc817);_0x5ef04a(_0x3dc817);});});}
\ No newline at end of file
+var _0x60a5=['rpc','jayson/promise','client','http','request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger'];(function(_0x51666b,_0x48e537){var _0x1858fa=function(_0x578ff0){while(--_0x578ff0){_0x51666b['push'](_0x51666b['shift']());}};_0x1858fa(++_0x48e537);}(_0x60a5,0x6d));var _0x560a=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0x60a5[_0x311c35];return _0x5cc50c;};'use strict';var _=require(_0x560a('0x0'));var util=require(_0x560a('0x1'));var moment=require('moment');var BPromise=require(_0x560a('0x2'));var rs=require(_0x560a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x560a('0x4'));var logger=require(_0x560a('0x5'))(_0x560a('0x6'));var config=require('../../config/environment');var jayson=require(_0x560a('0x7'));var client=jayson[_0x560a('0x8')][_0x560a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xa191d6,_0x17a9e9,_0x5f4cc4){return new BPromise(function(_0x17494f,_0x511af5){return client[_0x560a('0xa')](_0xa191d6,_0x5f4cc4)[_0x560a('0xb')](function(_0x186a8e){logger[_0x560a('0xc')](_0x560a('0xd'),_0x17a9e9,_0x560a('0xe'));logger[_0x560a('0xf')](_0x560a('0x10'),_0x17a9e9,'request\x20sent',JSON[_0x560a('0x11')](_0x186a8e));if(_0x186a8e['error']){if(_0x186a8e[_0x560a('0x12')][_0x560a('0x13')]===0x1f4){logger['error'](_0x560a('0xd'),_0x17a9e9,_0x186a8e['error']['message']);return _0x511af5(_0x186a8e[_0x560a('0x12')][_0x560a('0x14')]);}logger[_0x560a('0x12')](_0x560a('0xd'),_0x17a9e9,_0x186a8e['error'][_0x560a('0x14')]);return _0x17494f(_0x186a8e[_0x560a('0x12')][_0x560a('0x14')]);}else{logger[_0x560a('0xc')](_0x560a('0xd'),_0x17a9e9,'request\x20sent');_0x17494f(_0x186a8e[_0x560a('0x15')][_0x560a('0x14')]);}})[_0x560a('0x16')](function(_0x3bc727){logger[_0x560a('0x12')](_0x560a('0xd'),_0x17a9e9,_0x3bc727);_0x511af5(_0x3bc727);});});}
\ No newline at end of file
index 0bbe918..d172802 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34de=['sequelize','exports','INTEGER'];(function(_0x433557,_0x3d3c32){var _0x36e895=function(_0x1eaf76){while(--_0x1eaf76){_0x433557['push'](_0x433557['shift']());}};_0x36e895(++_0x3d3c32);}(_0x34de,0x195));var _0xe34d=function(_0x366433,_0x162bce){_0x366433=_0x366433-0x0;var _0x2a5f22=_0x34de[_0x366433];return _0x2a5f22;};'use strict';var Sequelize=require(_0xe34d('0x0'));module[_0xe34d('0x1')]={'UserId':{'type':Sequelize[_0xe34d('0x2')]},'VoicePrefixId':{'type':Sequelize[_0xe34d('0x2')]}};
\ No newline at end of file
+var _0x08b7=['INTEGER','sequelize','exports'];(function(_0x5ac5d6,_0x51eb3e){var _0x2c8e34=function(_0x5103c7){while(--_0x5103c7){_0x5ac5d6['push'](_0x5ac5d6['shift']());}};_0x2c8e34(++_0x51eb3e);}(_0x08b7,0x139));var _0x708b=function(_0xcc37df,_0x38c339){_0xcc37df=_0xcc37df-0x0;var _0xf3d968=_0x08b7[_0xcc37df];return _0xf3d968;};'use strict';var Sequelize=require(_0x708b('0x0'));module[_0x708b('0x1')]={'UserId':{'type':Sequelize[_0x708b('0x2')]},'VoicePrefixId':{'type':Sequelize[_0x708b('0x2')]}};
\ No newline at end of file
index ca5ebaa..cbb070a 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(_0x347194,_0x1ad9de){var _0x41dafe=function(_0xc8abcb){while(--_0xc8abcb){_0x347194['push'](_0x347194['shift']());}};_0x41dafe(++_0x1ad9de);}(_0xa9e0,0x123));var _0x0a9e=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0xa9e0[_0x387777];return _0x3f84c0;};'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(_0x5c5344,_0x51217f){var _0x1f8ea8=function(_0x5183e2){while(--_0x5183e2){_0x5c5344['push'](_0x5c5344['shift']());}};_0x1f8ea8(++_0x51217f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xa9e0[_0x4ea69d];return _0x5318e0;};'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 a9244cc..33878d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x5b38b4,_0x5722ae){var _0x5ec659=function(_0x5a71f9){while(--_0x5a71f9){_0x5b38b4['push'](_0x5b38b4['shift']());}};_0x5ec659(++_0x5722ae);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x218972,_0x1f9794){_0x218972=_0x218972-0x0;var _0x1bb1a8=_0xcb91[_0x218972];return _0x1bb1a8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x3e0e36,_0xa450e8){var _0x1ca34f=function(_0x3c3997){while(--_0x3c3997){_0x3e0e36['push'](_0x3e0e36['shift']());}};_0x1ca34f(++_0xa450e8);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5581ba,_0x268887){_0x5581ba=_0x5581ba-0x0;var _0x1e927f=_0xcb91[_0x5581ba];return _0x1e927f;};'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 31d5035..f91b3f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b50=['INTEGER','sequelize','exports'];(function(_0x2cdf4e,_0x210079){var _0x5a4400=function(_0x297ee3){while(--_0x297ee3){_0x2cdf4e['push'](_0x2cdf4e['shift']());}};_0x5a4400(++_0x210079);}(_0x8b50,0x13f));var _0x08b5=function(_0x4bcee,_0x10ecc8){_0x4bcee=_0x4bcee-0x0;var _0x683b46=_0x8b50[_0x4bcee];return _0x683b46;};'use strict';var Sequelize=require(_0x08b5('0x0'));module[_0x08b5('0x1')]={'penalty':{'type':Sequelize[_0x08b5('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xad01=['sequelize','exports','INTEGER'];(function(_0x6d97c6,_0x13e5fc){var _0x423e2e=function(_0x2cf47a){while(--_0x2cf47a){_0x6d97c6['push'](_0x6d97c6['shift']());}};_0x423e2e(++_0x13e5fc);}(_0xad01,0x1d4));var _0x1ad0=function(_0x29b9fc,_0x589cde){_0x29b9fc=_0x29b9fc-0x0;var _0x448ba2=_0xad01[_0x29b9fc];return _0x448ba2;};'use strict';var Sequelize=require(_0x1ad0('0x0'));module[_0x1ad0('0x1')]={'penalty':{'type':Sequelize[_0x1ad0('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 027cf35..d23ee7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ad6=['define','UserVoiceQueue','user_has_voice_queues','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x4ad6,0x1d7));var _0x64ad=function(_0x281c0c,_0x24a393){_0x281c0c=_0x281c0c-0x0;var _0x13b524=_0x4ad6[_0x281c0c];return _0x13b524;};'use strict';var _=require(_0x64ad('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x64ad('0x1'));var moment=require(_0x64ad('0x2'));var BPromise=require(_0x64ad('0x3'));var rp=require(_0x64ad('0x4'));var fs=require('fs');var path=require(_0x64ad('0x5'));var rimraf=require(_0x64ad('0x6'));var config=require(_0x64ad('0x7'));var attributes=require('./userVoiceQueue.attributes');module[_0x64ad('0x8')]=function(_0x49f830,_0x504bde){return _0x49f830[_0x64ad('0x9')](_0x64ad('0xa'),attributes,{'tableName':_0x64ad('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x09fb=['path','exports','define','UserVoiceQueue','user_has_voice_queues','lodash','util','../../config/logger','api','moment'];(function(_0x4b66ae,_0x367707){var _0x3bb455=function(_0x40958e){while(--_0x40958e){_0x4b66ae['push'](_0x4b66ae['shift']());}};_0x3bb455(++_0x367707);}(_0x09fb,0x91));var _0xb09f=function(_0x44db40,_0x715978){_0x44db40=_0x44db40-0x0;var _0x5791d7=_0x09fb[_0x44db40];return _0x5791d7;};'use strict';var _=require(_0xb09f('0x0'));var util=require(_0xb09f('0x1'));var logger=require(_0xb09f('0x2'))(_0xb09f('0x3'));var moment=require(_0xb09f('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb09f('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./userVoiceQueue.attributes');module[_0xb09f('0x6')]=function(_0x50802e,_0x23fa9f){return _0x50802e[_0xb09f('0x7')](_0xb09f('0x8'),attributes,{'tableName':_0xb09f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3cf58f7..c703a53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7536=['jayson/promise','http','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','lodash','bluebird','randomstring','ioredis','../../config/logger','../../config/environment'];(function(_0x5f6244,_0x5d9d00){var _0x2c9dad=function(_0x236383){while(--_0x236383){_0x5f6244['push'](_0x5f6244['shift']());}};_0x2c9dad(++_0x5d9d00);}(_0x7536,0x144));var _0x6753=function(_0x282999,_0x4df660){_0x282999=_0x282999-0x0;var _0x30681f=_0x7536[_0x282999];return _0x30681f;};'use strict';var _=require(_0x6753('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x6753('0x1'));var rs=require(_0x6753('0x2'));var fs=require('fs');var Redis=require(_0x6753('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6753('0x4'))('rpc');var config=require(_0x6753('0x5'));var jayson=require(_0x6753('0x6'));var client=jayson['client'][_0x6753('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x3e72d7,_0x44539e,_0x24623c){return new BPromise(function(_0x4c21d3,_0x28f776){return client['request'](_0x3e72d7,_0x24623c)['then'](function(_0x444394){logger[_0x6753('0x8')](_0x6753('0x9'),_0x44539e,_0x6753('0xa'));logger['debug'](_0x6753('0xb'),_0x44539e,'request\x20sent',JSON[_0x6753('0xc')](_0x444394));if(_0x444394[_0x6753('0xd')]){if(_0x444394[_0x6753('0xd')]['code']===0x1f4){logger['error']('UserVoiceQueue,\x20%s,\x20%s',_0x44539e,_0x444394[_0x6753('0xd')][_0x6753('0xe')]);return _0x28f776(_0x444394['error'][_0x6753('0xe')]);}logger[_0x6753('0xd')](_0x6753('0x9'),_0x44539e,_0x444394[_0x6753('0xd')][_0x6753('0xe')]);return _0x4c21d3(_0x444394['error']['message']);}else{logger[_0x6753('0x8')](_0x6753('0x9'),_0x44539e,'request\x20sent');_0x4c21d3(_0x444394['result'][_0x6753('0xe')]);}})['catch'](function(_0x40b92c){logger[_0x6753('0xd')]('UserVoiceQueue,\x20%s,\x20%s',_0x44539e,_0x40b92c);_0x28f776(_0x40b92c);});});}
\ No newline at end of file
+var _0xe8a3=['debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent'];(function(_0x54b48e,_0x3f0f72){var _0x3c6965=function(_0xfdc434){while(--_0xfdc434){_0x54b48e['push'](_0x54b48e['shift']());}};_0x3c6965(++_0x3f0f72);}(_0xe8a3,0x1d5));var _0x3e8a=function(_0x23929d,_0x2d8984){_0x23929d=_0x23929d-0x0;var _0x52d817=_0xe8a3[_0x23929d];return _0x52d817;};'use strict';var _=require(_0x3e8a('0x0'));var util=require('util');var moment=require(_0x3e8a('0x1'));var BPromise=require(_0x3e8a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3e8a('0x3'));var db=require(_0x3e8a('0x4'))['db'];var utils=require(_0x3e8a('0x5'));var logger=require(_0x3e8a('0x6'))(_0x3e8a('0x7'));var config=require('../../config/environment');var jayson=require(_0x3e8a('0x8'));var client=jayson[_0x3e8a('0x9')][_0x3e8a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x18e52d,_0x384302,_0x4427c6){return new BPromise(function(_0x4aaf0b,_0x17f901){return client['request'](_0x18e52d,_0x4427c6)[_0x3e8a('0xb')](function(_0x525eb6){logger[_0x3e8a('0xc')](_0x3e8a('0xd'),_0x384302,_0x3e8a('0xe'));logger[_0x3e8a('0xf')](_0x3e8a('0x10'),_0x384302,_0x3e8a('0xe'),JSON[_0x3e8a('0x11')](_0x525eb6));if(_0x525eb6[_0x3e8a('0x12')]){if(_0x525eb6[_0x3e8a('0x12')][_0x3e8a('0x13')]===0x1f4){logger[_0x3e8a('0x12')](_0x3e8a('0xd'),_0x384302,_0x525eb6[_0x3e8a('0x12')][_0x3e8a('0x14')]);return _0x17f901(_0x525eb6[_0x3e8a('0x12')][_0x3e8a('0x14')]);}logger['error'](_0x3e8a('0xd'),_0x384302,_0x525eb6[_0x3e8a('0x12')][_0x3e8a('0x14')]);return _0x4aaf0b(_0x525eb6[_0x3e8a('0x12')]['message']);}else{logger[_0x3e8a('0xc')](_0x3e8a('0xd'),_0x384302,_0x3e8a('0xe'));_0x4aaf0b(_0x525eb6['result'][_0x3e8a('0x14')]);}})[_0x3e8a('0x15')](function(_0x4404ca){logger[_0x3e8a('0x12')]('UserVoiceQueue,\x20%s,\x20%s',_0x384302,_0x4404ca);_0x17f901(_0x4404ca);});});}
\ No newline at end of file
index 06784e0..f0ca773 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(_0x291ae0,_0x15cd9f){var _0x851e93=function(_0x4a0504){while(--_0x4a0504){_0x291ae0['push'](_0x291ae0['shift']());}};_0x851e93(++_0x15cd9f);}(_0x70e0,0x17b));var _0x070e=function(_0x550423,_0x285f46){_0x550423=_0x550423-0x0;var _0x3a24dd=_0x70e0[_0x550423];return _0x3a24dd;};'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 _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x151624,_0x1200fe){var _0x583ee9=function(_0x34add0){while(--_0x34add0){_0x151624['push'](_0x151624['shift']());}};_0x583ee9(++_0x1200fe);}(_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 25622a1..552638f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb899=['Required\x20by\x20Asterisk','queue_interface','sequelize','exports','INTEGER','STRING'];(function(_0x2b54e5,_0x4fc35f){var _0x4743ef=function(_0x550bed){while(--_0x550bed){_0x2b54e5['push'](_0x2b54e5['shift']());}};_0x4743ef(++_0x4fc35f);}(_0xb899,0x18e));var _0x9b89=function(_0x434720,_0x6d484a){_0x434720=_0x434720-0x0;var _0x34e8bd=_0xb899[_0x434720];return _0x34e8bd;};'use strict';var Sequelize=require(_0x9b89('0x0'));module[_0x9b89('0x1')]={'uniqueid':{'type':Sequelize[_0x9b89('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0x9b89('0x3')],'allowNull':![],'comment':_0x9b89('0x4')},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize[_0x9b89('0x3')],'allowNull':![],'unique':_0x9b89('0x5'),'comment':_0x9b89('0x4')},'VoiceQueueId':{'type':Sequelize[_0x9b89('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0x9b89('0x3')],'allowNull':![],'unique':_0x9b89('0x5'),'comment':_0x9b89('0x4')},'penalty':{'type':Sequelize[_0x9b89('0x2')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0x9b89('0x4')}};
\ No newline at end of file
+var _0x0b8d=['exports','INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface'];(function(_0x4bd06e,_0x593701){var _0x85ebb=function(_0x26a7f2){while(--_0x26a7f2){_0x4bd06e['push'](_0x4bd06e['shift']());}};_0x85ebb(++_0x593701);}(_0x0b8d,0x195));var _0xd0b8=function(_0x1573ea,_0x434f02){_0x1573ea=_0x1573ea-0x0;var _0x51c0e2=_0x0b8d[_0x1573ea];return _0x51c0e2;};'use strict';var Sequelize=require('sequelize');module[_0xd0b8('0x0')]={'uniqueid':{'type':Sequelize[_0xd0b8('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xd0b8('0x2')},'membername':{'type':Sequelize[_0xd0b8('0x3')],'allowNull':![],'comment':_0xd0b8('0x2')},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize[_0xd0b8('0x3')],'allowNull':![],'unique':'queue_interface','comment':_0xd0b8('0x2')},'VoiceQueueId':{'type':Sequelize[_0xd0b8('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0xd0b8('0x3')],'allowNull':![],'unique':_0xd0b8('0x4'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize[_0xd0b8('0x1')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'},'paused':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0xd0b8('0x2')}};
\ No newline at end of file
index 70c747d..aef0e8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27ae=['../../mysqldb','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x3ac258,_0x1d42db){var _0x229ac3=function(_0x3b34e0){while(--_0x3b34e0){_0x3ac258['push'](_0x3ac258['shift']());}};_0x229ac3(++_0x1d42db);}(_0x27ae,0x130));var _0xe27a=function(_0x14015e,_0x1a4688){_0x14015e=_0x14015e-0x0;var _0x543b37=_0x27ae[_0x14015e];return _0x543b37;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require(_0xe27a('0x0'))['db']['UserVoiceQueueRt'];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe27a('0x1'),'afterUpdate':_0xe27a('0x2'),'afterDestroy':_0xe27a('0x3')};function emitEvent(_0x424385){return function(_0x2c62c9,_0x5e7c56,_0x3e23f5){UserVoiceQueueRtEvents[_0xe27a('0x4')](_0x424385+':'+_0x2c62c9['id'],_0x2c62c9);UserVoiceQueueRtEvents[_0xe27a('0x4')](_0x424385,_0x2c62c9);_0x3e23f5(null);};}for(var e in events){if(events[_0xe27a('0x5')](e)){var event=events[e];UserVoiceQueueRt[_0xe27a('0x6')](e,emitEvent(event));}}module[_0xe27a('0x7')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0xa24d=['emit','hook','exports','events','../../mysqldb','UserVoiceQueueRt','setMaxListeners','save','remove'];(function(_0x30bde9,_0x4d71f8){var _0xd9382=function(_0x3d9013){while(--_0x3d9013){_0x30bde9['push'](_0x30bde9['shift']());}};_0xd9382(++_0x4d71f8);}(_0xa24d,0xae));var _0xda24=function(_0x3ddd29,_0x26f096){_0x3ddd29=_0x3ddd29-0x0;var _0x34cb20=_0xa24d[_0x3ddd29];return _0x34cb20;};'use strict';var EventEmitter=require(_0xda24('0x0'));var UserVoiceQueueRt=require(_0xda24('0x1'))['db'][_0xda24('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xda24('0x3')](0x0);var events={'afterCreate':_0xda24('0x4'),'afterUpdate':'update','afterDestroy':_0xda24('0x5')};function emitEvent(_0x19e409){return function(_0x3a6a84,_0x5ef03c,_0x26e225){UserVoiceQueueRtEvents[_0xda24('0x6')](_0x19e409+':'+_0x3a6a84['id'],_0x3a6a84);UserVoiceQueueRtEvents[_0xda24('0x6')](_0x19e409,_0x3a6a84);_0x26e225(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserVoiceQueueRt[_0xda24('0x7')](e,emitEvent(event));}}module[_0xda24('0x8')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index a5685ac..120693e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d66=['path','rimraf','define','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x41bfa8,_0x2222f0){var _0x5a689e=function(_0x9c9b27){while(--_0x9c9b27){_0x41bfa8['push'](_0x41bfa8['shift']());}};_0x5a689e(++_0x2222f0);}(_0x6d66,0x89));var _0x66d6=function(_0x203a84,_0xc43060){_0x203a84=_0x203a84-0x0;var _0x39f788=_0x6d66[_0x203a84];return _0x39f788;};'use strict';var _=require(_0x66d6('0x0'));var util=require(_0x66d6('0x1'));var logger=require(_0x66d6('0x2'))('api');var moment=require(_0x66d6('0x3'));var BPromise=require(_0x66d6('0x4'));var rp=require(_0x66d6('0x5'));var fs=require('fs');var path=require(_0x66d6('0x6'));var rimraf=require(_0x66d6('0x7'));var config=require('../../config/environment');var attributes=require('./userVoiceQueueRt.attributes');module['exports']=function(_0x56b4ea,_0x423e5c){return _0x56b4ea[_0x66d6('0x8')](_0x66d6('0x9'),attributes,{'tableName':_0x66d6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcfb2=['util','api','bluebird','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes','define','user_has_voice_queues_rt'];(function(_0x3c0005,_0x243bc6){var _0x566ac1=function(_0x1156a8){while(--_0x1156a8){_0x3c0005['push'](_0x3c0005['shift']());}};_0x566ac1(++_0x243bc6);}(_0xcfb2,0x10e));var _0x2cfb=function(_0x353a58,_0x48ec36){_0x353a58=_0x353a58-0x0;var _0x2a7c8c=_0xcfb2[_0x353a58];return _0x2a7c8c;};'use strict';var _=require('lodash');var util=require(_0x2cfb('0x0'));var logger=require('../../config/logger')(_0x2cfb('0x1'));var moment=require('moment');var BPromise=require(_0x2cfb('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2cfb('0x3'));var rimraf=require(_0x2cfb('0x4'));var config=require(_0x2cfb('0x5'));var attributes=require(_0x2cfb('0x6'));module['exports']=function(_0x394a4c,_0x4a58cf){return _0x394a4c[_0x2cfb('0x7')]('UserVoiceQueueRt',attributes,{'tableName':_0x2cfb('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 740cc7d..56355c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e1a=['options','raw','sequelize','`paused`\x20=\x201,\x201,\x20null','debug','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','./userVoiceQueueRt.socket','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll'];(function(_0x3bc30b,_0x2ec91b){var _0x310299=function(_0x1a24a7){while(--_0x1a24a7){_0x3bc30b['push'](_0x3bc30b['shift']());}};_0x310299(++_0x2ec91b);}(_0x3e1a,0xb4));var _0xa3e1=function(_0x5d6e38,_0x5cbd37){_0x5d6e38=_0x5d6e38-0x0;var _0x217e35=_0x3e1a[_0x5d6e38];return _0x217e35;};'use strict';var _=require(_0xa3e1('0x0'));var util=require(_0xa3e1('0x1'));var moment=require(_0xa3e1('0x2'));var BPromise=require(_0xa3e1('0x3'));var rs=require(_0xa3e1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa3e1('0x5'))['db'];var utils=require(_0xa3e1('0x6'));var logger=require(_0xa3e1('0x7'))(_0xa3e1('0x8'));var config=require(_0xa3e1('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xa3e1('0xa')][_0xa3e1('0xb')]({'port':0x232a});config[_0xa3e1('0xc')]=_['defaults'](config[_0xa3e1('0xc')],{'host':_0xa3e1('0xd'),'port':0x18eb});var socket=require(_0xa3e1('0xe'))(new Redis(config[_0xa3e1('0xc')]));require(_0xa3e1('0xf'))['register'](socket);function respondWithRpcPromise(_0x3e2720,_0x22d266,_0x10fe9c){return new BPromise(function(_0x262712,_0x3d9300){return client[_0xa3e1('0x10')](_0x3e2720,_0x10fe9c)[_0xa3e1('0x11')](function(_0xcce3ba){logger[_0xa3e1('0x12')](_0xa3e1('0x13'),_0x22d266,'request\x20sent');logger['debug'](_0xa3e1('0x14'),_0x22d266,_0xa3e1('0x15'),JSON[_0xa3e1('0x16')](_0xcce3ba));if(_0xcce3ba[_0xa3e1('0x17')]){if(_0xcce3ba['error']['code']===0x1f4){logger[_0xa3e1('0x17')](_0xa3e1('0x13'),_0x22d266,_0xcce3ba[_0xa3e1('0x17')][_0xa3e1('0x18')]);return _0x3d9300(_0xcce3ba[_0xa3e1('0x17')][_0xa3e1('0x18')]);}logger[_0xa3e1('0x17')](_0xa3e1('0x13'),_0x22d266,_0xcce3ba[_0xa3e1('0x17')]['message']);return _0x262712(_0xcce3ba[_0xa3e1('0x17')][_0xa3e1('0x18')]);}else{logger[_0xa3e1('0x12')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x22d266,'request\x20sent');_0x262712(_0xcce3ba[_0xa3e1('0x19')][_0xa3e1('0x18')]);}})[_0xa3e1('0x1a')](function(_0x3dc859){logger[_0xa3e1('0x17')](_0xa3e1('0x13'),_0x22d266,_0x3dc859);_0x3d9300(_0x3dc859);});});}exports[_0xa3e1('0x1b')]=function(_0xa6ac3a){var _0x132a90=this;return new Promise(function(_0x2e5a35,_0x4067a1){return db[_0xa3e1('0x1c')][_0xa3e1('0x1d')]({'raw':_0xa6ac3a[_0xa3e1('0x1e')]?_0xa6ac3a[_0xa3e1('0x1e')][_0xa3e1('0x1f')]===undefined?!![]:![]:!![],'where':_0xa6ac3a['options']?_0xa6ac3a[_0xa3e1('0x1e')]['where']||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xa3e1('0x20')]['literal'](_0xa3e1('0x21')))),'outboundQueuePauses']]})['then'](function(_0xbabdc6){logger['info'](_0xa3e1('0x1b'),_0xa6ac3a);logger[_0xa3e1('0x22')](_0xa3e1('0x1b'),_0xa6ac3a,JSON[_0xa3e1('0x16')](_0xbabdc6));_0x2e5a35(_0xbabdc6);})[_0xa3e1('0x1a')](function(_0x313ee3){logger[_0xa3e1('0x17')]('GetVoiceQueueRtPauses',_0x313ee3[_0xa3e1('0x18')],_0xa6ac3a);_0x4067a1(_0x132a90[_0xa3e1('0x17')](0x1f4,_0x313ee3['message']));});});};
\ No newline at end of file
+var _0x7a5b=['http','defaults','redis','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','request','debug','request\x20sent','stringify','error','code','UserVoiceQueueRt,\x20%s,\x20%s','message','info','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','sequelize','literal','then','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client'];(function(_0x3077d9,_0x3a0e32){var _0x15f56e=function(_0x159200){while(--_0x159200){_0x3077d9['push'](_0x3077d9['shift']());}};_0x15f56e(++_0x3a0e32);}(_0x7a5b,0x1d7));var _0xb7a5=function(_0x3f9d72,_0x43449d){_0x3f9d72=_0x3f9d72-0x0;var _0x3b4dc5=_0x7a5b[_0x3f9d72];return _0x3b4dc5;};'use strict';var _=require(_0xb7a5('0x0'));var util=require(_0xb7a5('0x1'));var moment=require('moment');var BPromise=require(_0xb7a5('0x2'));var rs=require(_0xb7a5('0x3'));var fs=require('fs');var Redis=require(_0xb7a5('0x4'));var db=require(_0xb7a5('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xb7a5('0x6'))(_0xb7a5('0x7'));var config=require('../../config/environment');var jayson=require(_0xb7a5('0x8'));var client=jayson[_0xb7a5('0x9')][_0xb7a5('0xa')]({'port':0x232a});config['redis']=_[_0xb7a5('0xb')](config[_0xb7a5('0xc')],{'host':_0xb7a5('0xd'),'port':0x18eb});var socket=require(_0xb7a5('0xe'))(new Redis(config[_0xb7a5('0xc')]));require(_0xb7a5('0xf'))[_0xb7a5('0x10')](socket);function respondWithRpcPromise(_0x33915c,_0xcaf834,_0x4ae8cc){return new BPromise(function(_0x5483ed,_0x4ab439){return client[_0xb7a5('0x11')](_0x33915c,_0x4ae8cc)['then'](function(_0x698135){logger['info']('UserVoiceQueueRt,\x20%s,\x20%s',_0xcaf834,'request\x20sent');logger[_0xb7a5('0x12')]('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0xcaf834,_0xb7a5('0x13'),JSON[_0xb7a5('0x14')](_0x698135));if(_0x698135[_0xb7a5('0x15')]){if(_0x698135['error'][_0xb7a5('0x16')]===0x1f4){logger[_0xb7a5('0x15')](_0xb7a5('0x17'),_0xcaf834,_0x698135[_0xb7a5('0x15')][_0xb7a5('0x18')]);return _0x4ab439(_0x698135[_0xb7a5('0x15')][_0xb7a5('0x18')]);}logger[_0xb7a5('0x15')](_0xb7a5('0x17'),_0xcaf834,_0x698135[_0xb7a5('0x15')][_0xb7a5('0x18')]);return _0x5483ed(_0x698135[_0xb7a5('0x15')][_0xb7a5('0x18')]);}else{logger[_0xb7a5('0x19')](_0xb7a5('0x17'),_0xcaf834,_0xb7a5('0x13'));_0x5483ed(_0x698135[_0xb7a5('0x1a')]['message']);}})[_0xb7a5('0x1b')](function(_0x172609){logger[_0xb7a5('0x15')](_0xb7a5('0x17'),_0xcaf834,_0x172609);_0x4ab439(_0x172609);});});}exports[_0xb7a5('0x1c')]=function(_0x4c67c2){var _0x5bfc41=this;return new Promise(function(_0x3ba101,_0x34da52){return db[_0xb7a5('0x1d')][_0xb7a5('0x1e')]({'raw':_0x4c67c2[_0xb7a5('0x1f')]?_0x4c67c2[_0xb7a5('0x1f')][_0xb7a5('0x20')]===undefined?!![]:![]:!![],'where':_0x4c67c2[_0xb7a5('0x1f')]?_0x4c67c2[_0xb7a5('0x1f')][_0xb7a5('0x21')]||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db[_0xb7a5('0x22')]['fn']('IF',db[_0xb7a5('0x22')][_0xb7a5('0x23')]('`paused`\x20=\x201,\x201,\x20null'))),'outboundQueuePauses']]})[_0xb7a5('0x24')](function(_0x1afea9){logger[_0xb7a5('0x19')](_0xb7a5('0x1c'),_0x4c67c2);logger[_0xb7a5('0x12')](_0xb7a5('0x1c'),_0x4c67c2,JSON[_0xb7a5('0x14')](_0x1afea9));_0x3ba101(_0x1afea9);})[_0xb7a5('0x1b')](function(_0x3e5d18){logger[_0xb7a5('0x15')](_0xb7a5('0x1c'),_0x3e5d18[_0xb7a5('0x18')],_0x4c67c2);_0x34da52(_0x5bfc41[_0xb7a5('0x15')](0x1f4,_0x3e5d18[_0xb7a5('0x18')]));});});};
\ No newline at end of file
index 7ff0eab..c1b2469 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9ab=['emit','removeListener','register','length','userVoiceQueueRt:','./userVoiceQueueRt.events','save','remove'];(function(_0x36c5b0,_0x5001da){var _0xf19333=function(_0x1e880a){while(--_0x1e880a){_0x36c5b0['push'](_0x36c5b0['shift']());}};_0xf19333(++_0x5001da);}(_0xc9ab,0x125));var _0xbc9a=function(_0x4277b0,_0x1fc0ae){_0x4277b0=_0x4277b0-0x0;var _0x342cd6=_0xc9ab[_0x4277b0];return _0x342cd6;};'use strict';var UserVoiceQueueRtEvents=require(_0xbc9a('0x0'));var events=[_0xbc9a('0x1'),_0xbc9a('0x2'),'update'];function createListener(_0x503c08,_0x48a781){return function(_0x278d63){_0x48a781[_0xbc9a('0x3')](_0x503c08,_0x278d63);};}function removeListener(_0x23d40c,_0x33e557){return function(){UserVoiceQueueRtEvents[_0xbc9a('0x4')](_0x23d40c,_0x33e557);};}exports[_0xbc9a('0x5')]=function(_0x5478ec){for(var _0x4745ed=0x0,_0x477055=events[_0xbc9a('0x6')];_0x4745ed<_0x477055;_0x4745ed++){var _0x26f5f4=events[_0x4745ed];var _0x14c87a=createListener(_0xbc9a('0x7')+_0x26f5f4,_0x5478ec);UserVoiceQueueRtEvents['on'](_0x26f5f4,_0x14c87a);}};
\ No newline at end of file
+var _0x102b=['length','userVoiceQueueRt:','save','update','emit','removeListener'];(function(_0x145cfb,_0x146228){var _0x3ca733=function(_0x2f03ed){while(--_0x2f03ed){_0x145cfb['push'](_0x145cfb['shift']());}};_0x3ca733(++_0x146228);}(_0x102b,0x1be));var _0xb102=function(_0x2c54ad,_0x2700b7){_0x2c54ad=_0x2c54ad-0x0;var _0x21fba4=_0x102b[_0x2c54ad];return _0x21fba4;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=[_0xb102('0x0'),'remove',_0xb102('0x1')];function createListener(_0x3e1311,_0x42172c){return function(_0x1be904){_0x42172c[_0xb102('0x2')](_0x3e1311,_0x1be904);};}function removeListener(_0x1402fb,_0x19e35d){return function(){UserVoiceQueueRtEvents[_0xb102('0x3')](_0x1402fb,_0x19e35d);};}exports['register']=function(_0x3325b7){for(var _0x370baa=0x0,_0xd131eb=events[_0xb102('0x4')];_0x370baa<_0xd131eb;_0x370baa++){var _0x1ee0c0=events[_0x370baa];var _0x5879bb=createListener(_0xb102('0x5')+_0x1ee0c0,_0x3325b7);UserVoiceQueueRtEvents['on'](_0x1ee0c0,_0x5879bb);}};
\ No newline at end of file
index 4b96432..1858108 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x371d05,_0x598ae4){var _0x2f5e21=function(_0x3ee4dc){while(--_0x3ee4dc){_0x371d05['push'](_0x371d05['shift']());}};_0x2f5e21(++_0x598ae4);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x855ad3,_0x47ece8){var _0x521743=function(_0x383c99){while(--_0x383c99){_0x855ad3['push'](_0x855ad3['shift']());}};_0x521743(++_0x47ece8);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3e2fcf,_0x579110){_0x3e2fcf=_0x3e2fcf-0x0;var _0x497db7=_0xcb91[_0x3e2fcf];return _0x497db7;};'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 23b09bb..7188033 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd645=['exports','sequelize'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xd645,0x13b));var _0x5d64=function(_0x3a323d,_0x4754e4){_0x3a323d=_0x3a323d-0x0;var _0x3a1a1c=_0xd645[_0x3a323d];return _0x3a1a1c;};'use strict';var Sequelize=require(_0x5d64('0x0'));module[_0x5d64('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6640=['sequelize','exports'];(function(_0x187bab,_0x1b9253){var _0x578066=function(_0x4634f1){while(--_0x4634f1){_0x187bab['push'](_0x187bab['shift']());}};_0x578066(++_0x1b9253);}(_0x6640,0x160));var _0x0664=function(_0x725b8e,_0xc22b48){_0x725b8e=_0x725b8e-0x0;var _0x43ac45=_0x6640[_0x725b8e];return _0x43ac45;};'use strict';var Sequelize=require(_0x0664('0x0'));module[_0x0664('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index a68e75f..831cf4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa12=['user_has_whatsapp_queues','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','define','UserWhatsappQueue'];(function(_0x3215c8,_0x329596){var _0x4570a8=function(_0x375e19){while(--_0x375e19){_0x3215c8['push'](_0x3215c8['shift']());}};_0x4570a8(++_0x329596);}(_0xfa12,0x109));var _0x2fa1=function(_0x296e52,_0x428515){_0x296e52=_0x296e52-0x0;var _0x286070=_0xfa12[_0x296e52];return _0x286070;};'use strict';var _=require(_0x2fa1('0x0'));var util=require(_0x2fa1('0x1'));var logger=require(_0x2fa1('0x2'))(_0x2fa1('0x3'));var moment=require(_0x2fa1('0x4'));var BPromise=require(_0x2fa1('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2fa1('0x6'));var rimraf=require(_0x2fa1('0x7'));var config=require(_0x2fa1('0x8'));var attributes=require('./userWhatsappQueue.attributes');module['exports']=function(_0x3599b0,_0x250032){return _0x3599b0[_0x2fa1('0x9')](_0x2fa1('0xa'),attributes,{'tableName':_0x2fa1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf754=['../../config/environment','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0xd6ab66,_0xa949c7){var _0x462d81=function(_0x1dcf09){while(--_0x1dcf09){_0xd6ab66['push'](_0xd6ab66['shift']());}};_0x462d81(++_0xa949c7);}(_0xf754,0x67));var _0x4f75=function(_0x4ecde6,_0x482d96){_0x4ecde6=_0x4ecde6-0x0;var _0x56a387=_0xf754[_0x4ecde6];return _0x56a387;};'use strict';var _=require(_0x4f75('0x0'));var util=require(_0x4f75('0x1'));var logger=require(_0x4f75('0x2'))(_0x4f75('0x3'));var moment=require(_0x4f75('0x4'));var BPromise=require(_0x4f75('0x5'));var rp=require(_0x4f75('0x6'));var fs=require('fs');var path=require(_0x4f75('0x7'));var rimraf=require(_0x4f75('0x8'));var config=require(_0x4f75('0x9'));var attributes=require('./userWhatsappQueue.attributes');module[_0x4f75('0xa')]=function(_0x4198c7,_0x151729){return _0x4198c7[_0x4f75('0xb')](_0x4f75('0xc'),attributes,{'tableName':_0x4f75('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bcf5ccb..43d14c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaff0=['error','code','message','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','request','then','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xaff0,0x1e9));var _0x0aff=function(_0x4201c5,_0x26dbd8){_0x4201c5=_0x4201c5-0x0;var _0x3958fd=_0xaff0[_0x4201c5];return _0x3958fd;};'use strict';var _=require(_0x0aff('0x0'));var util=require(_0x0aff('0x1'));var moment=require('moment');var BPromise=require(_0x0aff('0x2'));var rs=require(_0x0aff('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0aff('0x4'))['db'];var utils=require(_0x0aff('0x5'));var logger=require(_0x0aff('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x0aff('0x7'));var client=jayson[_0x0aff('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f127f,_0x50a9e8,_0x49f954){return new BPromise(function(_0x19ad2,_0x1bf5e0){return client[_0x0aff('0x9')](_0x1f127f,_0x49f954)[_0x0aff('0xa')](function(_0x1654d4){logger[_0x0aff('0xb')](_0x0aff('0xc'),_0x50a9e8,_0x0aff('0xd'));logger[_0x0aff('0xe')](_0x0aff('0xf'),_0x50a9e8,_0x0aff('0xd'),JSON[_0x0aff('0x10')](_0x1654d4));if(_0x1654d4[_0x0aff('0x11')]){if(_0x1654d4['error'][_0x0aff('0x12')]===0x1f4){logger[_0x0aff('0x11')](_0x0aff('0xc'),_0x50a9e8,_0x1654d4['error'][_0x0aff('0x13')]);return _0x1bf5e0(_0x1654d4['error'][_0x0aff('0x13')]);}logger[_0x0aff('0x11')](_0x0aff('0xc'),_0x50a9e8,_0x1654d4['error'][_0x0aff('0x13')]);return _0x19ad2(_0x1654d4[_0x0aff('0x11')][_0x0aff('0x13')]);}else{logger[_0x0aff('0xb')](_0x0aff('0xc'),_0x50a9e8,_0x0aff('0xd'));_0x19ad2(_0x1654d4[_0x0aff('0x14')][_0x0aff('0x13')]);}})[_0x0aff('0x15')](function(_0x1acde0){logger['error']('UserWhatsappQueue,\x20%s,\x20%s',_0x50a9e8,_0x1acde0);_0x1bf5e0(_0x1acde0);});});}
\ No newline at end of file
+var _0xe139=['request','then','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http'];(function(_0x4fb047,_0x2bfcb0){var _0x505a5a=function(_0x525cee){while(--_0x525cee){_0x4fb047['push'](_0x4fb047['shift']());}};_0x505a5a(++_0x2bfcb0);}(_0xe139,0x80));var _0x9e13=function(_0x4157b3,_0x5b37b2){_0x4157b3=_0x4157b3-0x0;var _0x93c896=_0xe139[_0x4157b3];return _0x93c896;};'use strict';var _=require(_0x9e13('0x0'));var util=require(_0x9e13('0x1'));var moment=require('moment');var BPromise=require(_0x9e13('0x2'));var rs=require(_0x9e13('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9e13('0x4'))['db'];var utils=require(_0x9e13('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x9e13('0x6'));var jayson=require(_0x9e13('0x7'));var client=jayson[_0x9e13('0x8')][_0x9e13('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1ed035,_0x10c269,_0x114c5b){return new BPromise(function(_0x30f2e2,_0x522835){return client[_0x9e13('0xa')](_0x1ed035,_0x114c5b)[_0x9e13('0xb')](function(_0x1b8331){logger[_0x9e13('0xc')](_0x9e13('0xd'),_0x10c269,_0x9e13('0xe'));logger[_0x9e13('0xf')](_0x9e13('0x10'),_0x10c269,'request\x20sent',JSON[_0x9e13('0x11')](_0x1b8331));if(_0x1b8331['error']){if(_0x1b8331[_0x9e13('0x12')][_0x9e13('0x13')]===0x1f4){logger[_0x9e13('0x12')](_0x9e13('0xd'),_0x10c269,_0x1b8331[_0x9e13('0x12')][_0x9e13('0x14')]);return _0x522835(_0x1b8331['error']['message']);}logger[_0x9e13('0x12')](_0x9e13('0xd'),_0x10c269,_0x1b8331[_0x9e13('0x12')][_0x9e13('0x14')]);return _0x30f2e2(_0x1b8331[_0x9e13('0x12')]['message']);}else{logger[_0x9e13('0xc')](_0x9e13('0xd'),_0x10c269,_0x9e13('0xe'));_0x30f2e2(_0x1b8331[_0x9e13('0x15')][_0x9e13('0x14')]);}})[_0x9e13('0x16')](function(_0x1e4c67){logger[_0x9e13('0x12')](_0x9e13('0xd'),_0x10c269,_0x1e4c67);_0x522835(_0x1e4c67);});});}
\ No newline at end of file
index f636e6a..4aa3f58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97d5=['get','isAuthenticated','index','/:id','show','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3441e9,_0x269c8a){var _0x7f9ada=function(_0x4e62fd){while(--_0x4e62fd){_0x3441e9['push'](_0x3441e9['shift']());}};_0x7f9ada(++_0x269c8a);}(_0x97d5,0x199));var _0x597d=function(_0x3115e1,_0x583989){_0x3115e1=_0x3115e1-0x0;var _0x28521e=_0x97d5[_0x3115e1];return _0x28521e;};'use strict';var multer=require(_0x597d('0x0'));var util=require(_0x597d('0x1'));var path=require(_0x597d('0x2'));var timeout=require(_0x597d('0x3'));var express=require(_0x597d('0x4'));var router=express[_0x597d('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x597d('0x6'));var interaction=require(_0x597d('0x7'));var config=require(_0x597d('0x8'));var controller=require('./variable.controller');router[_0x597d('0x9')]('/',auth[_0x597d('0xa')](),controller[_0x597d('0xb')]);router[_0x597d('0x9')](_0x597d('0xc'),auth[_0x597d('0xa')](),controller[_0x597d('0xd')]);router['post']('/',auth[_0x597d('0xa')](),controller[_0x597d('0xe')]);router['put'](_0x597d('0xc'),auth['isAuthenticated'](),controller[_0x597d('0xf')]);router[_0x597d('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x597d('0x11')]);module[_0x597d('0x12')]=router;
\ No newline at end of file
+var _0x0c02=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','get','isAuthenticated','index','post','create','put','/:id','exports','util','path','express','Router'];(function(_0xefb4e,_0xe56689){var _0x36c78c=function(_0x158fe3){while(--_0x158fe3){_0xefb4e['push'](_0xefb4e['shift']());}};_0x36c78c(++_0xe56689);}(_0x0c02,0x84));var _0x20c0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0c02[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x20c0('0x0'));var path=require(_0x20c0('0x1'));var timeout=require('connect-timeout');var express=require(_0x20c0('0x2'));var router=express[_0x20c0('0x3')]();var fs_extra=require(_0x20c0('0x4'));var auth=require(_0x20c0('0x5'));var interaction=require(_0x20c0('0x6'));var config=require(_0x20c0('0x7'));var controller=require(_0x20c0('0x8'));router[_0x20c0('0x9')]('/',auth[_0x20c0('0xa')](),controller[_0x20c0('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x20c0('0xc')]('/',auth[_0x20c0('0xa')](),controller[_0x20c0('0xd')]);router[_0x20c0('0xe')](_0x20c0('0xf'),auth[_0x20c0('0xa')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x20c0('0x10')]=router;
\ No newline at end of file
index 86875fc..3448f47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b82=['exports','STRING','name','sequelize'];(function(_0x5adea6,_0x397a04){var _0x21b3c0=function(_0x44b8f1){while(--_0x44b8f1){_0x5adea6['push'](_0x5adea6['shift']());}};_0x21b3c0(++_0x397a04);}(_0x2b82,0x11f));var _0x22b8=function(_0x244059,_0x35bddb){_0x244059=_0x244059-0x0;var _0x52f322=_0x2b82[_0x244059];return _0x52f322;};'use strict';var Sequelize=require(_0x22b8('0x0'));module[_0x22b8('0x1')]={'name':{'type':Sequelize[_0x22b8('0x2')],'unique':_0x22b8('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x22b8('0x2')]}};
\ No newline at end of file
+var _0xdcd9=['name','exports'];(function(_0x5c299b,_0x40978e){var _0x68877=function(_0x4bac0c){while(--_0x4bac0c){_0x5c299b['push'](_0x5c299b['shift']());}};_0x68877(++_0x40978e);}(_0xdcd9,0xf5));var _0x9dcd=function(_0x203d64,_0x18a630){_0x203d64=_0x203d64-0x0;var _0x38d585=_0xdcd9[_0x203d64];return _0x38d585;};'use strict';var Sequelize=require('sequelize');module[_0x9dcd('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x9dcd('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f50506d..e0f98d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20a2=['order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','undefined','limit','count','offset','Content-Range','apply','save','update','then','destroy','get','Variables','UserProfileResource','end','error','stack','name','send','index','Variable','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','nolimit'];(function(_0x1c4e75,_0x524fe4){var _0x119a2a=function(_0x4cc245){while(--_0x4cc245){_0x1c4e75['push'](_0x1c4e75['shift']());}};_0x119a2a(++_0x524fe4);}(_0x20a2,0x1b2));var _0x220a=function(_0x59bd64,_0x237f2b){_0x59bd64=_0x59bd64-0x0;var _0x378c0e=_0x20a2[_0x59bd64];return _0x378c0e;};'use strict';var emlformat=require(_0x220a('0x0'));var rimraf=require(_0x220a('0x1'));var zipdir=require(_0x220a('0x2'));var jsonpatch=require(_0x220a('0x3'));var rp=require(_0x220a('0x4'));var moment=require(_0x220a('0x5'));var BPromise=require(_0x220a('0x6'));var Mustache=require('mustache');var util=require(_0x220a('0x7'));var path=require(_0x220a('0x8'));var sox=require(_0x220a('0x9'));var csv=require('to-csv');var ejs=require(_0x220a('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x220a('0xb'));var squel=require(_0x220a('0xc'));var crypto=require(_0x220a('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x220a('0xe'));var toCsv=require(_0x220a('0xf'));var querystring=require('querystring');var Papa=require(_0x220a('0x10'));var Redis=require(_0x220a('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x220a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x220a('0x13'))('api');var utils=require(_0x220a('0x14'));var config=require(_0x220a('0x15'));var licenseUtil=require(_0x220a('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3b6b0a,_0x25985f){_0x25985f=_0x25985f||0xcc;return function(_0x2bd0cc){if(_0x2bd0cc){return _0x3b6b0a[_0x220a('0x17')](_0x25985f);}return _0x3b6b0a[_0x220a('0x18')](_0x25985f)['end']();};}function respondWithResult(_0x3f458c,_0x485488){_0x485488=_0x485488||0xc8;return function(_0x1c2121){if(_0x1c2121){return _0x3f458c[_0x220a('0x18')](_0x485488)['json'](_0x1c2121);}};}function respondWithFilteredResult(_0x1887a6,_0x5a6ed4){return function(_0x2a6437){if(_0x2a6437){var _0x16224e=typeof _0x5a6ed4['offset']===_0x220a('0x19')&&typeof _0x5a6ed4[_0x220a('0x1a')]==='undefined';var _0x36abf2=_0x2a6437[_0x220a('0x1b')];var _0x22e430=_0x16224e?0x0:_0x5a6ed4[_0x220a('0x1c')];var _0x26b58e=_0x16224e?_0x2a6437[_0x220a('0x1b')]:_0x5a6ed4[_0x220a('0x1c')]+_0x5a6ed4['limit'];var _0x221455;if(_0x26b58e>=_0x36abf2){_0x26b58e=_0x36abf2;_0x221455=0xc8;}else{_0x221455=0xce;}_0x1887a6['status'](_0x221455);return _0x1887a6['set'](_0x220a('0x1d'),_0x22e430+'-'+_0x26b58e+'/'+_0x36abf2)['json'](_0x2a6437);}return null;};}function patchUpdates(_0x4406ee){return function(_0x17f089){try{jsonpatch[_0x220a('0x1e')](_0x17f089,_0x4406ee,!![]);}catch(_0x751669){return BPromise['reject'](_0x751669);}return _0x17f089[_0x220a('0x1f')]();};}function saveUpdates(_0x170b4f,_0xb11b00){return function(_0x33dd05){if(_0x33dd05){return _0x33dd05[_0x220a('0x20')](_0x170b4f)[_0x220a('0x21')](function(_0x5802cf){return _0x5802cf;});}return null;};}function removeEntity(_0x5bb110,_0x25a27d){return function(_0x1e9305){if(_0x1e9305){return _0x1e9305[_0x220a('0x22')]()[_0x220a('0x21')](function(){var _0x987c5b=_0x1e9305[_0x220a('0x23')]({'plain':!![]});var _0x4db0e1=_0x220a('0x24');return db[_0x220a('0x25')]['destroy']({'where':{'type':_0x4db0e1,'resourceId':_0x987c5b['id']}})[_0x220a('0x21')](function(){return _0x1e9305;});})[_0x220a('0x21')](function(){_0x5bb110[_0x220a('0x18')](0xcc)[_0x220a('0x26')]();});}};}function handleEntityNotFound(_0xca29dd,_0x482bbe){return function(_0x229207){if(!_0x229207){_0xca29dd[_0x220a('0x17')](0x194);}return _0x229207;};}function handleError(_0x3cc143,_0x2d4976){_0x2d4976=_0x2d4976||0x1f4;return function(_0x448bf7){logger[_0x220a('0x27')](_0x448bf7[_0x220a('0x28')]);if(_0x448bf7[_0x220a('0x29')]){delete _0x448bf7[_0x220a('0x29')];}_0x3cc143['status'](_0x2d4976)[_0x220a('0x2a')](_0x448bf7);};}exports[_0x220a('0x2b')]=function(_0x3bea2d,_0x18d165){var _0xac220f={},_0x461721={},_0x5a58c9={'count':0x0,'rows':[]};var _0x58bfbf=_['map'](db[_0x220a('0x2c')]['rawAttributes'],function(_0x8c6f2){return{'name':_0x8c6f2[_0x220a('0x2d')],'type':_0x8c6f2[_0x220a('0x2e')][_0x220a('0x2f')]};});_0x461721[_0x220a('0x30')]=_[_0x220a('0x31')](_0x58bfbf,_0x220a('0x29'));_0x461721[_0x220a('0x32')]=_[_0x220a('0x33')](_0x3bea2d[_0x220a('0x32')]);_0x461721[_0x220a('0x34')]=_['intersection'](_0x461721[_0x220a('0x30')],_0x461721[_0x220a('0x32')]);_0xac220f[_0x220a('0x35')]=_[_0x220a('0x36')](_0x461721[_0x220a('0x30')],qs[_0x220a('0x37')](_0x3bea2d['query'][_0x220a('0x37')]));_0xac220f[_0x220a('0x35')]=_0xac220f[_0x220a('0x35')][_0x220a('0x38')]?_0xac220f['attributes']:_0x461721[_0x220a('0x30')];if(!_0x3bea2d[_0x220a('0x32')]['hasOwnProperty'](_0x220a('0x39'))){_0xac220f['limit']=qs[_0x220a('0x1a')](_0x3bea2d[_0x220a('0x32')][_0x220a('0x1a')]);_0xac220f[_0x220a('0x1c')]=qs[_0x220a('0x1c')](_0x3bea2d[_0x220a('0x32')][_0x220a('0x1c')]);}_0xac220f[_0x220a('0x3a')]=qs[_0x220a('0x3b')](_0x3bea2d[_0x220a('0x32')][_0x220a('0x3b')]);_0xac220f['where']=qs[_0x220a('0x34')](_[_0x220a('0x3c')](_0x3bea2d['query'],_0x461721[_0x220a('0x34')]),_0x58bfbf);if(_0x3bea2d[_0x220a('0x32')][_0x220a('0x3d')]){_0xac220f[_0x220a('0x3e')]=_[_0x220a('0x3f')](_0xac220f[_0x220a('0x3e')],{'$or':_[_0x220a('0x31')](_0x58bfbf,function(_0xa781f8){if(_0xa781f8[_0x220a('0x2e')]!==_0x220a('0x40')){var _0x4585ee={};_0x4585ee[_0xa781f8[_0x220a('0x29')]]={'$like':'%'+_0x3bea2d[_0x220a('0x32')][_0x220a('0x3d')]+'%'};return _0x4585ee;}})});}_0xac220f=_['merge']({},_0xac220f,_0x3bea2d['options']);var _0x368dd4={'where':_0xac220f['where']};return db[_0x220a('0x2c')][_0x220a('0x1b')](_0x368dd4)['then'](function(_0x56734a){_0x5a58c9[_0x220a('0x1b')]=_0x56734a;if(_0x3bea2d[_0x220a('0x32')][_0x220a('0x41')]){_0xac220f[_0x220a('0x42')]=[{'all':!![]}];}return db[_0x220a('0x2c')][_0x220a('0x43')](_0xac220f);})[_0x220a('0x21')](function(_0x4a8d06){_0x5a58c9[_0x220a('0x44')]=_0x4a8d06;return _0x5a58c9;})['then'](respondWithFilteredResult(_0x18d165,_0xac220f))[_0x220a('0x45')](handleError(_0x18d165,null));};exports[_0x220a('0x46')]=function(_0x4cc7bc,_0x194058){var _0x36aa14={'raw':!![],'where':{'id':_0x4cc7bc[_0x220a('0x47')]['id']}},_0x43d68a={};_0x43d68a['model']=_['keys'](db[_0x220a('0x2c')][_0x220a('0x48')]);_0x43d68a[_0x220a('0x32')]=_['keys'](_0x4cc7bc[_0x220a('0x32')]);_0x43d68a[_0x220a('0x34')]=_['intersection'](_0x43d68a['model'],_0x43d68a[_0x220a('0x32')]);_0x36aa14['attributes']=_['intersection'](_0x43d68a[_0x220a('0x30')],qs[_0x220a('0x37')](_0x4cc7bc[_0x220a('0x32')][_0x220a('0x37')]));_0x36aa14[_0x220a('0x35')]=_0x36aa14[_0x220a('0x35')][_0x220a('0x38')]?_0x36aa14[_0x220a('0x35')]:_0x43d68a['model'];if(_0x4cc7bc[_0x220a('0x32')][_0x220a('0x41')]){_0x36aa14[_0x220a('0x42')]=[{'all':!![]}];}_0x36aa14=_[_0x220a('0x3f')]({},_0x36aa14,_0x4cc7bc[_0x220a('0x49')]);return db[_0x220a('0x2c')]['find'](_0x36aa14)['then'](handleEntityNotFound(_0x194058,null))[_0x220a('0x21')](respondWithResult(_0x194058,null))[_0x220a('0x45')](handleError(_0x194058,null));};exports['create']=function(_0x212e64,_0x4a7df2){return db[_0x220a('0x2c')][_0x220a('0x4a')](_0x212e64[_0x220a('0x4b')],{})[_0x220a('0x21')](function(_0x1d91cb){var _0x5ac3fe=_0x212e64[_0x220a('0x4c')][_0x220a('0x23')]({'plain':!![]});if(!_0x5ac3fe)throw new Error(_0x220a('0x4d'));if(_0x5ac3fe[_0x220a('0x4e')]===_0x220a('0x4c')){var _0x22cda0=_0x1d91cb[_0x220a('0x23')]({'plain':!![]});var _0x194e4f='Variables';return db[_0x220a('0x4f')][_0x220a('0x50')]({'where':{'name':_0x194e4f,'userProfileId':_0x5ac3fe['userProfileId']},'raw':!![]})[_0x220a('0x21')](function(_0x467c6c){if(_0x467c6c&&_0x467c6c['autoAssociation']===0x0){return db['UserProfileResource'][_0x220a('0x4a')]({'name':_0x22cda0[_0x220a('0x29')],'resourceId':_0x22cda0['id'],'type':_0x467c6c['name'],'sectionId':_0x467c6c['id']},{})[_0x220a('0x21')](function(){return _0x1d91cb;});}else{return _0x1d91cb;}})[_0x220a('0x45')](function(_0x11320b){logger[_0x220a('0x27')](_0x220a('0x51'),_0x11320b);throw _0x11320b;});}return _0x1d91cb;})[_0x220a('0x21')](respondWithResult(_0x4a7df2,0xc9))[_0x220a('0x45')](handleError(_0x4a7df2,null));};exports[_0x220a('0x20')]=function(_0x440e8b,_0x4d5fdf){if(_0x440e8b[_0x220a('0x4b')]['id']){delete _0x440e8b[_0x220a('0x4b')]['id'];}return db[_0x220a('0x2c')]['find']({'where':{'id':_0x440e8b[_0x220a('0x47')]['id']}})['then'](handleEntityNotFound(_0x4d5fdf,null))[_0x220a('0x21')](saveUpdates(_0x440e8b[_0x220a('0x4b')],null))['then'](respondWithResult(_0x4d5fdf,null))[_0x220a('0x45')](handleError(_0x4d5fdf,null));};exports[_0x220a('0x22')]=function(_0x1519c6,_0x1e18c8){return db[_0x220a('0x2c')][_0x220a('0x50')]({'where':{'id':_0x1519c6['params']['id']}})['then'](handleEntityNotFound(_0x1e18c8,null))['then'](removeEntity(_0x1e18c8,null))[_0x220a('0x45')](handleError(_0x1e18c8,null));};
\ No newline at end of file
+var _0x8d82=['UserProfileSection','userProfileId','autoAssociation','eml-format','zip-dir','request-promise','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/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','then','get','Variables','UserProfileResource','sendStatus','error','stack','name','send','index','Variable','fieldName','type','key','model','keys','filters','intersection','attributes','query','fields','length','hasOwnProperty','nolimit','sort','where','merge','map','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x8d82,0x105));var _0x28d8=function(_0x1b1cf7,_0x5ed74b){_0x1b1cf7=_0x1b1cf7-0x0;var _0x19f5e5=_0x8d82[_0x1b1cf7];return _0x19f5e5;};'use strict';var emlformat=require(_0x28d8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x28d8('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x28d8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x28d8('0x3'));var util=require('util');var path=require(_0x28d8('0x4'));var sox=require(_0x28d8('0x5'));var csv=require(_0x28d8('0x6'));var ejs=require(_0x28d8('0x7'));var fs=require('fs');var fs_extra=require(_0x28d8('0x8'));var _=require(_0x28d8('0x9'));var squel=require(_0x28d8('0xa'));var crypto=require(_0x28d8('0xb'));var jsforce=require(_0x28d8('0xc'));var deskjs=require(_0x28d8('0xd'));var toCsv=require(_0x28d8('0x6'));var querystring=require(_0x28d8('0xe'));var Papa=require(_0x28d8('0xf'));var Redis=require(_0x28d8('0x10'));var authService=require(_0x28d8('0x11'));var qs=require(_0x28d8('0x12'));var as=require(_0x28d8('0x13'));var hardwareService=require(_0x28d8('0x14'));var logger=require(_0x28d8('0x15'))(_0x28d8('0x16'));var utils=require(_0x28d8('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x28d8('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a7727,_0x2d7b88){_0x2d7b88=_0x2d7b88||0xcc;return function(_0x388dbb){if(_0x388dbb){return _0x1a7727['sendStatus'](_0x2d7b88);}return _0x1a7727[_0x28d8('0x19')](_0x2d7b88)[_0x28d8('0x1a')]();};}function respondWithResult(_0x1e1af0,_0xf461ff){_0xf461ff=_0xf461ff||0xc8;return function(_0x3742ca){if(_0x3742ca){return _0x1e1af0['status'](_0xf461ff)[_0x28d8('0x1b')](_0x3742ca);}};}function respondWithFilteredResult(_0x4e3930,_0x450788){return function(_0x2d635c){if(_0x2d635c){var _0x1cea79=typeof _0x450788['offset']===_0x28d8('0x1c')&&typeof _0x450788[_0x28d8('0x1d')]==='undefined';var _0x1e61aa=_0x2d635c[_0x28d8('0x1e')];var _0x212b54=_0x1cea79?0x0:_0x450788['offset'];var _0x5cddec=_0x1cea79?_0x2d635c['count']:_0x450788[_0x28d8('0x1f')]+_0x450788[_0x28d8('0x1d')];var _0x7aae77;if(_0x5cddec>=_0x1e61aa){_0x5cddec=_0x1e61aa;_0x7aae77=0xc8;}else{_0x7aae77=0xce;}_0x4e3930[_0x28d8('0x19')](_0x7aae77);return _0x4e3930[_0x28d8('0x20')](_0x28d8('0x21'),_0x212b54+'-'+_0x5cddec+'/'+_0x1e61aa)['json'](_0x2d635c);}return null;};}function patchUpdates(_0x1fc102){return function(_0x46e83a){try{jsonpatch[_0x28d8('0x22')](_0x46e83a,_0x1fc102,!![]);}catch(_0x5e8ac2){return BPromise[_0x28d8('0x23')](_0x5e8ac2);}return _0x46e83a[_0x28d8('0x24')]();};}function saveUpdates(_0x302ff0,_0x435703){return function(_0x2ad3dc){if(_0x2ad3dc){return _0x2ad3dc[_0x28d8('0x25')](_0x302ff0)['then'](function(_0x2816bc){return _0x2816bc;});}return null;};}function removeEntity(_0xeee49e,_0x4fccfc){return function(_0x2ce1b5){if(_0x2ce1b5){return _0x2ce1b5[_0x28d8('0x26')]()[_0x28d8('0x27')](function(){var _0x5c5fd5=_0x2ce1b5[_0x28d8('0x28')]({'plain':!![]});var _0x288bc0=_0x28d8('0x29');return db[_0x28d8('0x2a')]['destroy']({'where':{'type':_0x288bc0,'resourceId':_0x5c5fd5['id']}})[_0x28d8('0x27')](function(){return _0x2ce1b5;});})[_0x28d8('0x27')](function(){_0xeee49e[_0x28d8('0x19')](0xcc)[_0x28d8('0x1a')]();});}};}function handleEntityNotFound(_0x126da0,_0x319dce){return function(_0x59a51c){if(!_0x59a51c){_0x126da0[_0x28d8('0x2b')](0x194);}return _0x59a51c;};}function handleError(_0x5441e4,_0x42718f){_0x42718f=_0x42718f||0x1f4;return function(_0x4dd64a){logger[_0x28d8('0x2c')](_0x4dd64a[_0x28d8('0x2d')]);if(_0x4dd64a[_0x28d8('0x2e')]){delete _0x4dd64a[_0x28d8('0x2e')];}_0x5441e4[_0x28d8('0x19')](_0x42718f)[_0x28d8('0x2f')](_0x4dd64a);};}exports[_0x28d8('0x30')]=function(_0x542900,_0x39dafd){var _0x567dd8={},_0x473385={},_0x3fdf31={'count':0x0,'rows':[]};var _0x362ce4=_['map'](db[_0x28d8('0x31')]['rawAttributes'],function(_0x23354a){return{'name':_0x23354a[_0x28d8('0x32')],'type':_0x23354a[_0x28d8('0x33')][_0x28d8('0x34')]};});_0x473385[_0x28d8('0x35')]=_['map'](_0x362ce4,_0x28d8('0x2e'));_0x473385['query']=_[_0x28d8('0x36')](_0x542900['query']);_0x473385[_0x28d8('0x37')]=_[_0x28d8('0x38')](_0x473385[_0x28d8('0x35')],_0x473385['query']);_0x567dd8[_0x28d8('0x39')]=_[_0x28d8('0x38')](_0x473385[_0x28d8('0x35')],qs['fields'](_0x542900[_0x28d8('0x3a')][_0x28d8('0x3b')]));_0x567dd8[_0x28d8('0x39')]=_0x567dd8[_0x28d8('0x39')][_0x28d8('0x3c')]?_0x567dd8[_0x28d8('0x39')]:_0x473385[_0x28d8('0x35')];if(!_0x542900[_0x28d8('0x3a')][_0x28d8('0x3d')](_0x28d8('0x3e'))){_0x567dd8[_0x28d8('0x1d')]=qs['limit'](_0x542900[_0x28d8('0x3a')][_0x28d8('0x1d')]);_0x567dd8[_0x28d8('0x1f')]=qs[_0x28d8('0x1f')](_0x542900[_0x28d8('0x3a')][_0x28d8('0x1f')]);}_0x567dd8['order']=qs[_0x28d8('0x3f')](_0x542900[_0x28d8('0x3a')][_0x28d8('0x3f')]);_0x567dd8[_0x28d8('0x40')]=qs['filters'](_['pick'](_0x542900[_0x28d8('0x3a')],_0x473385['filters']),_0x362ce4);if(_0x542900[_0x28d8('0x3a')]['filter']){_0x567dd8[_0x28d8('0x40')]=_[_0x28d8('0x41')](_0x567dd8[_0x28d8('0x40')],{'$or':_[_0x28d8('0x42')](_0x362ce4,function(_0x5683dd){if(_0x5683dd[_0x28d8('0x33')]!==_0x28d8('0x43')){var _0x443760={};_0x443760[_0x5683dd[_0x28d8('0x2e')]]={'$like':'%'+_0x542900[_0x28d8('0x3a')][_0x28d8('0x44')]+'%'};return _0x443760;}})});}_0x567dd8=_['merge']({},_0x567dd8,_0x542900[_0x28d8('0x45')]);var _0xfaf7b8={'where':_0x567dd8[_0x28d8('0x40')]};return db[_0x28d8('0x31')][_0x28d8('0x1e')](_0xfaf7b8)['then'](function(_0x1fb17d){_0x3fdf31['count']=_0x1fb17d;if(_0x542900[_0x28d8('0x3a')][_0x28d8('0x46')]){_0x567dd8[_0x28d8('0x47')]=[{'all':!![]}];}return db[_0x28d8('0x31')][_0x28d8('0x48')](_0x567dd8);})[_0x28d8('0x27')](function(_0x354819){_0x3fdf31[_0x28d8('0x49')]=_0x354819;return _0x3fdf31;})[_0x28d8('0x27')](respondWithFilteredResult(_0x39dafd,_0x567dd8))[_0x28d8('0x4a')](handleError(_0x39dafd,null));};exports[_0x28d8('0x4b')]=function(_0x44e8d4,_0x2d4918){var _0x5aa5f1={'raw':!![],'where':{'id':_0x44e8d4[_0x28d8('0x4c')]['id']}},_0x1c5507={};_0x1c5507[_0x28d8('0x35')]=_[_0x28d8('0x36')](db[_0x28d8('0x31')]['rawAttributes']);_0x1c5507[_0x28d8('0x3a')]=_[_0x28d8('0x36')](_0x44e8d4['query']);_0x1c5507['filters']=_[_0x28d8('0x38')](_0x1c5507[_0x28d8('0x35')],_0x1c5507[_0x28d8('0x3a')]);_0x5aa5f1[_0x28d8('0x39')]=_['intersection'](_0x1c5507['model'],qs[_0x28d8('0x3b')](_0x44e8d4['query'][_0x28d8('0x3b')]));_0x5aa5f1[_0x28d8('0x39')]=_0x5aa5f1[_0x28d8('0x39')][_0x28d8('0x3c')]?_0x5aa5f1[_0x28d8('0x39')]:_0x1c5507[_0x28d8('0x35')];if(_0x44e8d4['query']['includeAll']){_0x5aa5f1[_0x28d8('0x47')]=[{'all':!![]}];}_0x5aa5f1=_[_0x28d8('0x41')]({},_0x5aa5f1,_0x44e8d4[_0x28d8('0x45')]);return db[_0x28d8('0x31')][_0x28d8('0x4d')](_0x5aa5f1)[_0x28d8('0x27')](handleEntityNotFound(_0x2d4918,null))[_0x28d8('0x27')](respondWithResult(_0x2d4918,null))[_0x28d8('0x4a')](handleError(_0x2d4918,null));};exports[_0x28d8('0x4e')]=function(_0x252535,_0x27c7f9){return db[_0x28d8('0x31')]['create'](_0x252535[_0x28d8('0x4f')],{})[_0x28d8('0x27')](function(_0x328137){var _0x460f81=_0x252535[_0x28d8('0x50')]['get']({'plain':!![]});if(!_0x460f81)throw new Error(_0x28d8('0x51'));if(_0x460f81[_0x28d8('0x52')]===_0x28d8('0x50')){var _0x35a15e=_0x328137[_0x28d8('0x28')]({'plain':!![]});var _0x274d9f=_0x28d8('0x29');return db[_0x28d8('0x53')][_0x28d8('0x4d')]({'where':{'name':_0x274d9f,'userProfileId':_0x460f81[_0x28d8('0x54')]},'raw':!![]})[_0x28d8('0x27')](function(_0x1d4973){if(_0x1d4973&&_0x1d4973[_0x28d8('0x55')]===0x0){return db[_0x28d8('0x2a')]['create']({'name':_0x35a15e[_0x28d8('0x2e')],'resourceId':_0x35a15e['id'],'type':_0x1d4973[_0x28d8('0x2e')],'sectionId':_0x1d4973['id']},{})[_0x28d8('0x27')](function(){return _0x328137;});}else{return _0x328137;}})[_0x28d8('0x4a')](function(_0x2c600b){logger[_0x28d8('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2c600b);throw _0x2c600b;});}return _0x328137;})[_0x28d8('0x27')](respondWithResult(_0x27c7f9,0xc9))['catch'](handleError(_0x27c7f9,null));};exports[_0x28d8('0x25')]=function(_0x3c5621,_0x41e030){if(_0x3c5621[_0x28d8('0x4f')]['id']){delete _0x3c5621[_0x28d8('0x4f')]['id'];}return db[_0x28d8('0x31')]['find']({'where':{'id':_0x3c5621[_0x28d8('0x4c')]['id']}})[_0x28d8('0x27')](handleEntityNotFound(_0x41e030,null))[_0x28d8('0x27')](saveUpdates(_0x3c5621['body'],null))[_0x28d8('0x27')](respondWithResult(_0x41e030,null))[_0x28d8('0x4a')](handleError(_0x41e030,null));};exports[_0x28d8('0x26')]=function(_0x502272,_0x16d1b8){return db[_0x28d8('0x31')][_0x28d8('0x4d')]({'where':{'id':_0x502272['params']['id']}})[_0x28d8('0x27')](handleEntityNotFound(_0x16d1b8,null))['then'](removeEntity(_0x16d1b8,null))[_0x28d8('0x4a')](handleError(_0x16d1b8,null));};
\ No newline at end of file
index 9e1129b..7eccdfd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe793=['path','rimraf','./variable.attributes','exports','define','tools_variables','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x1ca3b5,_0x1a4517){var _0xff5e4c=function(_0x89e573){while(--_0x89e573){_0x1ca3b5['push'](_0x1ca3b5['shift']());}};_0xff5e4c(++_0x1a4517);}(_0xe793,0xd2));var _0x3e79=function(_0x516eef,_0x3c0047){_0x516eef=_0x516eef-0x0;var _0x25c38f=_0xe793[_0x516eef];return _0x25c38f;};'use strict';var _=require(_0x3e79('0x0'));var util=require(_0x3e79('0x1'));var logger=require(_0x3e79('0x2'))('api');var moment=require(_0x3e79('0x3'));var BPromise=require(_0x3e79('0x4'));var rp=require(_0x3e79('0x5'));var fs=require('fs');var path=require(_0x3e79('0x6'));var rimraf=require(_0x3e79('0x7'));var config=require('../../config/environment');var attributes=require(_0x3e79('0x8'));module[_0x3e79('0x9')]=function(_0x4fcb5f,_0x1e0942){return _0x4fcb5f[_0x3e79('0xa')]('Variable',attributes,{'tableName':_0x3e79('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0c14=['api','moment','bluebird','request-promise','path','rimraf','define','tools_variables','lodash','util'];(function(_0xdd62e3,_0x257fe9){var _0x3e10b5=function(_0x2a19c5){while(--_0x2a19c5){_0xdd62e3['push'](_0xdd62e3['shift']());}};_0x3e10b5(++_0x257fe9);}(_0x0c14,0x1de));var _0x40c1=function(_0x1c8c28,_0x3ee093){_0x1c8c28=_0x1c8c28-0x0;var _0x1f59b4=_0x0c14[_0x1c8c28];return _0x1f59b4;};'use strict';var _=require(_0x40c1('0x0'));var util=require(_0x40c1('0x1'));var logger=require('../../config/logger')(_0x40c1('0x2'));var moment=require(_0x40c1('0x3'));var BPromise=require(_0x40c1('0x4'));var rp=require(_0x40c1('0x5'));var fs=require('fs');var path=require(_0x40c1('0x6'));var rimraf=require(_0x40c1('0x7'));var config=require('../../config/environment');var attributes=require('./variable.attributes');module['exports']=function(_0x3f9064,_0x561c34){return _0x3f9064[_0x40c1('0x8')]('Variable',attributes,{'tableName':_0x40c1('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8cb2c4b..06874a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['model','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ShowVariable','options','where','include','map','attributes'];(function(_0x41340e,_0x1a8f17){var _0x581223=function(_0xc21897){while(--_0xc21897){_0x41340e['push'](_0x41340e['shift']());}};_0x581223(++_0x1a8f17);}(_0x814b,0x1a2));var _0xb814=function(_0x47568e,_0x5ccdaf){_0x47568e=_0x47568e-0x0;var _0x33815b=_0x814b[_0x47568e];return _0x33815b;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var moment=require(_0xb814('0x2'));var BPromise=require(_0xb814('0x3'));var rs=require(_0xb814('0x4'));var fs=require('fs');var Redis=require(_0xb814('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb814('0x6'));var logger=require(_0xb814('0x7'))(_0xb814('0x8'));var config=require(_0xb814('0x9'));var jayson=require(_0xb814('0xa'));var client=jayson[_0xb814('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b0829,_0x2e6272,_0x5c8539){return new BPromise(function(_0x271af9,_0x2913a6){return client[_0xb814('0xc')](_0x3b0829,_0x5c8539)[_0xb814('0xd')](function(_0x1fea33){logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));logger[_0xb814('0x11')](_0xb814('0x12'),_0x2e6272,_0xb814('0x10'),JSON['stringify'](_0x1fea33));if(_0x1fea33[_0xb814('0x13')]){if(_0x1fea33['error'][_0xb814('0x14')]===0x1f4){logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x2913a6(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x271af9(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}else{logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));_0x271af9(_0x1fea33[_0xb814('0x16')][_0xb814('0x15')]);}})[_0xb814('0x17')](function(_0x21b73f){logger[_0xb814('0x13')]('Variable,\x20%s,\x20%s',_0x2e6272,_0x21b73f);_0x2913a6(_0x21b73f);});});}exports[_0xb814('0x18')]=function(_0x55ba16){var _0x270598=this;return new Promise(function(_0xfac75b,_0x4c3007){return db['Variable']['find']({'raw':_0x55ba16[_0xb814('0x19')]?_0x55ba16['options']['raw']===undefined?!![]:![]:!![],'where':_0x55ba16[_0xb814('0x19')]?_0x55ba16[_0xb814('0x19')][_0xb814('0x1a')]||null:null,'attributes':_0x55ba16['options']?_0x55ba16[_0xb814('0x19')]['attributes']||null:null,'include':_0x55ba16[_0xb814('0x19')]?_0x55ba16[_0xb814('0x19')][_0xb814('0x1b')]?_[_0xb814('0x1c')](_0x55ba16[_0xb814('0x19')][_0xb814('0x1b')],function(_0x1f5d40){return{'model':db[_0x1f5d40['model']],'as':_0x1f5d40['as'],'attributes':_0x1f5d40[_0xb814('0x1d')],'include':_0x1f5d40['include']?_[_0xb814('0x1c')](_0x1f5d40[_0xb814('0x1b')],function(_0x31c7ec){return{'model':db[_0x31c7ec[_0xb814('0x1e')]],'as':_0x31c7ec['as'],'attributes':_0x31c7ec[_0xb814('0x1d')],'include':_0x31c7ec[_0xb814('0x1b')]?_[_0xb814('0x1c')](_0x31c7ec['include'],function(_0x392222){return{'model':db[_0x392222[_0xb814('0x1e')]],'as':_0x392222['as'],'attributes':_0x392222[_0xb814('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xb814('0xd')](function(_0x32ed56){logger[_0xb814('0xe')](_0xb814('0x18'),_0x55ba16);logger[_0xb814('0x11')]('ShowVariable',_0x55ba16,JSON[_0xb814('0x1f')](_0x32ed56));_0xfac75b(_0x32ed56);})[_0xb814('0x17')](function(_0x52ed64){logger[_0xb814('0x13')](_0xb814('0x18'),_0x52ed64[_0xb814('0x15')],_0x55ba16);_0x4c3007(_0x270598['error'](0x1f4,_0x52ed64[_0xb814('0x15')]));});});};
\ No newline at end of file
+var _0xa41a=['debug','Variable,\x20%s,\x20%s,\x20%s','error','message','result','catch','ShowVariable','options','raw','where','attributes','include','map','model','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Variable,\x20%s,\x20%s','request\x20sent'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0xa41a,0x6b));var _0xaa41=function(_0x13a15a,_0x37c211){_0x13a15a=_0x13a15a-0x0;var _0x1671fe=_0xa41a[_0x13a15a];return _0x1671fe;};'use strict';var _=require(_0xaa41('0x0'));var util=require(_0xaa41('0x1'));var moment=require('moment');var BPromise=require(_0xaa41('0x2'));var rs=require(_0xaa41('0x3'));var fs=require('fs');var Redis=require(_0xaa41('0x4'));var db=require(_0xaa41('0x5'))['db'];var utils=require(_0xaa41('0x6'));var logger=require(_0xaa41('0x7'))(_0xaa41('0x8'));var config=require(_0xaa41('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xaa41('0xa')][_0xaa41('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x54bc5a,_0x5b1fff,_0x179545){return new BPromise(function(_0x202cce,_0x588ab4){return client[_0xaa41('0xc')](_0x54bc5a,_0x179545)[_0xaa41('0xd')](function(_0x409dab){logger[_0xaa41('0xe')](_0xaa41('0xf'),_0x5b1fff,_0xaa41('0x10'));logger[_0xaa41('0x11')](_0xaa41('0x12'),_0x5b1fff,_0xaa41('0x10'),JSON['stringify'](_0x409dab));if(_0x409dab[_0xaa41('0x13')]){if(_0x409dab[_0xaa41('0x13')]['code']===0x1f4){logger['error'](_0xaa41('0xf'),_0x5b1fff,_0x409dab['error'][_0xaa41('0x14')]);return _0x588ab4(_0x409dab[_0xaa41('0x13')][_0xaa41('0x14')]);}logger[_0xaa41('0x13')](_0xaa41('0xf'),_0x5b1fff,_0x409dab['error'][_0xaa41('0x14')]);return _0x202cce(_0x409dab[_0xaa41('0x13')][_0xaa41('0x14')]);}else{logger[_0xaa41('0xe')](_0xaa41('0xf'),_0x5b1fff,_0xaa41('0x10'));_0x202cce(_0x409dab[_0xaa41('0x15')]['message']);}})[_0xaa41('0x16')](function(_0x16b930){logger[_0xaa41('0x13')](_0xaa41('0xf'),_0x5b1fff,_0x16b930);_0x588ab4(_0x16b930);});});}exports[_0xaa41('0x17')]=function(_0xd20ddf){var _0x29efe5=this;return new Promise(function(_0x46e6d3,_0x150ddf){return db['Variable']['find']({'raw':_0xd20ddf[_0xaa41('0x18')]?_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x19')]===undefined?!![]:![]:!![],'where':_0xd20ddf['options']?_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x1a')]||null:null,'attributes':_0xd20ddf['options']?_0xd20ddf['options'][_0xaa41('0x1b')]||null:null,'include':_0xd20ddf['options']?_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x1c')]?_[_0xaa41('0x1d')](_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x1c')],function(_0x4eb01f){return{'model':db[_0x4eb01f[_0xaa41('0x1e')]],'as':_0x4eb01f['as'],'attributes':_0x4eb01f[_0xaa41('0x1b')],'include':_0x4eb01f[_0xaa41('0x1c')]?_[_0xaa41('0x1d')](_0x4eb01f[_0xaa41('0x1c')],function(_0xa1f024){return{'model':db[_0xa1f024['model']],'as':_0xa1f024['as'],'attributes':_0xa1f024['attributes'],'include':_0xa1f024[_0xaa41('0x1c')]?_['map'](_0xa1f024['include'],function(_0x12e362){return{'model':db[_0x12e362['model']],'as':_0x12e362['as'],'attributes':_0x12e362['attributes']};}):[]};}):[]};}):[]:[]})[_0xaa41('0xd')](function(_0x9c8c21){logger[_0xaa41('0xe')](_0xaa41('0x17'),_0xd20ddf);logger[_0xaa41('0x11')](_0xaa41('0x17'),_0xd20ddf,JSON['stringify'](_0x9c8c21));_0x46e6d3(_0x9c8c21);})[_0xaa41('0x16')](function(_0x1f0275){logger[_0xaa41('0x13')](_0xaa41('0x17'),_0x1f0275[_0xaa41('0x14')],_0xd20ddf);_0x150ddf(_0x29efe5[_0xaa41('0x13')](0x1f4,_0x1f0275[_0xaa41('0x14')]));});});};
\ No newline at end of file
index 1f3c961..3a22ffb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x005c=['isAuthenticated','canUpdate','fetch','/reset','reset','get','/restart','restart','/migrations','exports','express','../../components/auth/service','./version.controller','index','/fetch'];(function(_0x1a8d33,_0x13df3f){var _0x126bba=function(_0x2a53f0){while(--_0x2a53f0){_0x1a8d33['push'](_0x1a8d33['shift']());}};_0x126bba(++_0x13df3f);}(_0x005c,0xdc));var _0xc005=function(_0x174df2,_0x58ed30){_0x174df2=_0x174df2-0x0;var _0x392e21=_0x005c[_0x174df2];return _0x392e21;};'use strict';var express=require(_0xc005('0x0'));var router=express['Router']();var auth=require(_0xc005('0x1'));var controller=require(_0xc005('0x2'));router['get']('/',controller[_0xc005('0x3')]);router['get'](_0xc005('0x4'),auth[_0xc005('0x5')](),auth[_0xc005('0x6')](),controller[_0xc005('0x7')]);router['get'](_0xc005('0x8'),auth[_0xc005('0x5')](),auth[_0xc005('0x6')](),controller[_0xc005('0x9')]);router[_0xc005('0xa')]('/pull',auth['isAuthenticated'](),auth[_0xc005('0x6')](),controller['pull']);router[_0xc005('0xa')](_0xc005('0xb'),auth['isAuthenticated'](),controller[_0xc005('0xc')]);router[_0xc005('0xa')](_0xc005('0xd'),controller['migrations']);module[_0xc005('0xe')]=router;
\ No newline at end of file
+var _0x1a33=['canUpdate','fetch','reset','isAuthenticated','pull','/restart','restart','/migrations','migrations','get','index','/fetch'];(function(_0x3c1039,_0x42c942){var _0x636cfb=function(_0x209972){while(--_0x209972){_0x3c1039['push'](_0x3c1039['shift']());}};_0x636cfb(++_0x42c942);}(_0x1a33,0xb1));var _0x31a3=function(_0x5f1481,_0x437014){_0x5f1481=_0x5f1481-0x0;var _0x4a50a7=_0x1a33[_0x5f1481];return _0x4a50a7;};'use strict';var express=require('express');var router=express['Router']();var auth=require('../../components/auth/service');var controller=require('./version.controller');router[_0x31a3('0x0')]('/',controller[_0x31a3('0x1')]);router['get'](_0x31a3('0x2'),auth['isAuthenticated'](),auth[_0x31a3('0x3')](),controller[_0x31a3('0x4')]);router['get']('/reset',auth['isAuthenticated'](),auth['canUpdate'](),controller[_0x31a3('0x5')]);router[_0x31a3('0x0')]('/pull',auth[_0x31a3('0x6')](),auth[_0x31a3('0x3')](),controller[_0x31a3('0x7')]);router['get'](_0x31a3('0x8'),auth[_0x31a3('0x6')](),controller[_0x31a3('0x9')]);router[_0x31a3('0x0')](_0x31a3('0xa'),controller[_0x31a3('0xb')]);module['exports']=router;
\ No newline at end of file
index 451e68e..77713a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6958=['exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','index','query','fetch','tags','latest','exports','status','master','error','json','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','pull','restart','then','pm2\x20restart\x20motion\x20%s','readdirSync','join','root','server','migrations','length','replace','.js','sort','Migration','sequelize','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','catch','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','pkginfo','version','compare-versions','child_process'];(function(_0x48a0ef,_0x15f9ae){var _0x2ee71e=function(_0xf2ae6b){while(--_0xf2ae6b){_0x48a0ef['push'](_0x48a0ef['shift']());}};_0x2ee71e(++_0x15f9ae);}(_0x6958,0x1e9));var _0x8695=function(_0x428693,_0x158705){_0x428693=_0x428693-0x0;var _0x1c2a28=_0x6958[_0x428693];return _0x1c2a28;};'use strict';var Umzug=require(_0x8695('0x0'));var path=require(_0x8695('0x1'));var fs=require('fs');var _=require('lodash');var pkginfo=require(_0x8695('0x2'))(module,_0x8695('0x3'));var compareVersions=require(_0x8695('0x4'));var exec=require(_0x8695('0x5'))[_0x8695('0x6')];var db=require(_0x8695('0x7'))['db'];var config=require(_0x8695('0x8'));var pm2=require(_0x8695('0x9'));var logger=require(_0x8695('0xa'))(_0x8695('0xb'));var git=require(_0x8695('0xc'))(config['root']);exports[_0x8695('0xd')]=function(_0x2e95da,_0x208d05){var _0x3e43e3={'current':module['exports']['version'],'phonebar':0x2};if(_0x2e95da['query']&&_0x2e95da[_0x8695('0xe')]['latest']){return git[_0x8695('0xf')]()[_0x8695('0x10')](function(_0x5b5794,_0x1efca1){_0x3e43e3[_0x8695('0x11')]=(_0x5b5794?module[_0x8695('0x12')][_0x8695('0x3')]:_0x1efca1[_0x8695('0x11')])||'2.0.0';return _0x208d05['status'](0xc8)['json'](_0x3e43e3);});}else{return _0x208d05[_0x8695('0x13')](0xc8)['json'](_0x3e43e3);}};exports['fetch']=function(_0x2b01e0,_0x480a5e){return git[_0x8695('0xf')](['origin',_0x8695('0x14')],function(_0x3185a9){if(_0x3185a9){logger[_0x8695('0x15')](_0x3185a9);return _0x480a5e[_0x8695('0x13')](0x1f4)[_0x8695('0x16')](_0x3185a9);}logger[_0x8695('0x17')](_0x8695('0x18'));return _0x480a5e[_0x8695('0x13')](0xc8)[_0x8695('0x16')]({'output':_0x8695('0x19')});});};exports[_0x8695('0x1a')]=function(_0x32ff33,_0x38b4f3){return git[_0x8695('0x1a')]([_0x8695('0x1b'),_0x8695('0x1c')],function(_0x4f5e7e){if(_0x4f5e7e){logger[_0x8695('0x15')](_0x4f5e7e);return _0x38b4f3['status'](0x1f4)[_0x8695('0x16')](_0x4f5e7e);}logger[_0x8695('0x17')](_0x8695('0x1d'));return _0x38b4f3[_0x8695('0x13')](0xc8)[_0x8695('0x16')]({'output':_0x8695('0x1e')});});};exports[_0x8695('0x1f')]=function(_0x7f3db,_0x1b04d3){exec('npm\x20install\x20--production',function(_0x498155,_0x4bdb05,_0x4f0694){logger[_0x8695('0x17')](_0x4bdb05);logger[_0x8695('0x17')](_0x4f0694);if(_0x498155){logger[_0x8695('0x15')](_0x498155);return _0x1b04d3[_0x8695('0x13')](0x1f4)[_0x8695('0x16')](_0x498155);}return _0x1b04d3['status'](0xc8)[_0x8695('0x16')]({'output':_0x4bdb05});});};exports[_0x8695('0x20')]=function(_0x23652b,_0xc56a6d){return pm2[_0x8695('0x20')]('motion2')[_0x8695('0x21')](function(_0x2e9591){logger[_0x8695('0x17')](_0x8695('0x22'),_0x2e9591);return _0xc56a6d[_0x8695('0x13')](0xc8)[_0x8695('0x16')]({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})['catch'](function(_0x1151c1){logger['error'](_0x1151c1);return _0xc56a6d[_0x8695('0x13')](0x1f4)['json'](_0x1151c1);});};exports['migrations']=function(_0x42915f,_0x1f316c){var _0x487022=fs[_0x8695('0x23')](path[_0x8695('0x24')](config[_0x8695('0x25')],_0x8695('0x26'),_0x8695('0x27')));var _0x13a691=[];for(var _0x5ea45d=0x0;_0x5ea45d<_0x487022[_0x8695('0x28')];_0x5ea45d++){var _0x54f5ee=_0x487022[_0x5ea45d][_0x8695('0x29')](_0x8695('0x2a'),'');if(compareVersions(module[_0x8695('0x12')][_0x8695('0x3')],_0x54f5ee)===-0x1){_0x13a691['push'](_0x54f5ee);}}if(_0x13a691[_0x8695('0x28')]){var _0x2f814f=_0x13a691[_0x8695('0x2b')](compareVersions);var _0x23e5df=new Umzug({'storage':'sequelize','storageOptions':{'model':db[_0x8695('0x2c')],'modelName':_0x8695('0x2c'),'columnName':_0x8695('0x3')},'migrations':{'params':[db[_0x8695('0x2d')][_0x8695('0x2e')](),db[_0x8695('0x2d')][_0x8695('0x2f')],function(){throw new Error(_0x8695('0x30'));}],'path':path[_0x8695('0x24')](config[_0x8695('0x25')],'server',_0x8695('0x27')),'pattern':/\.js$/}});_0x23e5df['up']({'migrations':_['map'](_0x2f814f,function(_0xe9b9b9){return _0xe9b9b9+_0x8695('0x2a');})})[_0x8695('0x21')](function(){return _0x1f316c[_0x8695('0x13')](0xc8)[_0x8695('0x16')]({'output':_0x8695('0x31')+module['exports'][_0x8695('0x3')]+_0x8695('0x32')+_[_0x8695('0x33')](_0x2f814f),'migrations':_['join'](_0x2f814f)});})[_0x8695('0x34')](function(_0x5588ef){if(_0x5588ef instanceof db[_0x8695('0x2d')][_0x8695('0x35')]){return _0x1f316c[_0x8695('0x13')](0xc8)[_0x8695('0x16')]({'output':_0x8695('0x36')});}else{return _0x1f316c[_0x8695('0x13')](0x1f4)[_0x8695('0x16')](_0x5588ef);}});}else{return _0x1f316c[_0x8695('0x13')](0xc8)[_0x8695('0x16')]({'output':_0x8695('0x36')});}};
\ No newline at end of file
+var _0x402c=['Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','server','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','path','pkginfo','version','compare-versions','child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','root','index','exports','query','tags','latest','2.0.0','status','json','fetch','origin','master','error','git\x20fetch\x20origin\x20master','reset','info','git\x20reset\x20--hard\x20FETCH_HEAD','npm\x20install\x20--production','restart','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','join','length','.js','sort','Migration','sequelize','getQueryInterface'];(function(_0x5e5849,_0x164a94){var _0x4b7d84=function(_0x5a7682){while(--_0x5a7682){_0x5e5849['push'](_0x5e5849['shift']());}};_0x4b7d84(++_0x164a94);}(_0x402c,0x16c));var _0xc402=function(_0x3cbb14,_0x3c95a7){_0x3cbb14=_0x3cbb14-0x0;var _0x2bfb35=_0x402c[_0x3cbb14];return _0x2bfb35;};'use strict';var Umzug=require('umzug');var path=require(_0xc402('0x0'));var fs=require('fs');var _=require('lodash');var pkginfo=require(_0xc402('0x1'))(module,_0xc402('0x2'));var compareVersions=require(_0xc402('0x3'));var exec=require(_0xc402('0x4'))[_0xc402('0x5')];var db=require(_0xc402('0x6'))['db'];var config=require(_0xc402('0x7'));var pm2=require(_0xc402('0x8'));var logger=require(_0xc402('0x9'))(_0xc402('0xa'));var git=require('simple-git')(config[_0xc402('0xb')]);exports[_0xc402('0xc')]=function(_0x2176f5,_0x136a95){var _0x565f54={'current':module[_0xc402('0xd')][_0xc402('0x2')],'phonebar':0x2};if(_0x2176f5[_0xc402('0xe')]&&_0x2176f5[_0xc402('0xe')]['latest']){return git['fetch']()[_0xc402('0xf')](function(_0x806b93,_0x2b14d0){_0x565f54[_0xc402('0x10')]=(_0x806b93?module[_0xc402('0xd')][_0xc402('0x2')]:_0x2b14d0['latest'])||_0xc402('0x11');return _0x136a95[_0xc402('0x12')](0xc8)[_0xc402('0x13')](_0x565f54);});}else{return _0x136a95[_0xc402('0x12')](0xc8)[_0xc402('0x13')](_0x565f54);}};exports[_0xc402('0x14')]=function(_0x3f5f5b,_0x56d762){return git[_0xc402('0x14')]([_0xc402('0x15'),_0xc402('0x16')],function(_0xef1984){if(_0xef1984){logger[_0xc402('0x17')](_0xef1984);return _0x56d762[_0xc402('0x12')](0x1f4)['json'](_0xef1984);}logger['info']('git\x20fetch');return _0x56d762[_0xc402('0x12')](0xc8)['json']({'output':_0xc402('0x18')});});};exports[_0xc402('0x19')]=function(_0x1df82d,_0x3e6745){return git['reset'](['--hard','FETCH_HEAD'],function(_0x434507){if(_0x434507){logger[_0xc402('0x17')](_0x434507);return _0x3e6745[_0xc402('0x12')](0x1f4)['json'](_0x434507);}logger[_0xc402('0x1a')](_0xc402('0x1b'));return _0x3e6745['status'](0xc8)[_0xc402('0x13')]({'output':'git\x20reset\x20--hard'});});};exports['pull']=function(_0x1e4097,_0x4e7658){exec(_0xc402('0x1c'),function(_0x244c1b,_0x2bd863,_0xe45af0){logger[_0xc402('0x1a')](_0x2bd863);logger[_0xc402('0x1a')](_0xe45af0);if(_0x244c1b){logger[_0xc402('0x17')](_0x244c1b);return _0x4e7658['status'](0x1f4)[_0xc402('0x13')](_0x244c1b);}return _0x4e7658[_0xc402('0x12')](0xc8)['json']({'output':_0x2bd863});});};exports[_0xc402('0x1d')]=function(_0x56703b,_0x5dfdd4){return pm2[_0xc402('0x1d')](_0xc402('0x1e'))[_0xc402('0x1f')](function(_0x2835b5){logger[_0xc402('0x1a')](_0xc402('0x20'),_0x2835b5);return _0x5dfdd4[_0xc402('0x12')](0xc8)['json']({'output':_0xc402('0x21')});})[_0xc402('0x22')](function(_0x3c934b){logger[_0xc402('0x17')](_0x3c934b);return _0x5dfdd4[_0xc402('0x12')](0x1f4)[_0xc402('0x13')](_0x3c934b);});};exports[_0xc402('0x23')]=function(_0x35f114,_0x16cdde){var _0x44b1a5=fs[_0xc402('0x24')](path[_0xc402('0x25')](config[_0xc402('0xb')],'server',_0xc402('0x23')));var _0x2f0722=[];for(var _0x4bb73d=0x0;_0x4bb73d<_0x44b1a5[_0xc402('0x26')];_0x4bb73d++){var _0x59bb78=_0x44b1a5[_0x4bb73d]['replace'](_0xc402('0x27'),'');if(compareVersions(module[_0xc402('0xd')]['version'],_0x59bb78)===-0x1){_0x2f0722['push'](_0x59bb78);}}if(_0x2f0722[_0xc402('0x26')]){var _0x59b070=_0x2f0722[_0xc402('0x28')](compareVersions);var _0x5eb9d9=new Umzug({'storage':'sequelize','storageOptions':{'model':db[_0xc402('0x29')],'modelName':'Migration','columnName':'version'},'migrations':{'params':[db[_0xc402('0x2a')][_0xc402('0x2b')](),db[_0xc402('0x2a')]['constructor'],function(){throw new Error(_0xc402('0x2c'));}],'path':path['join'](config[_0xc402('0xb')],_0xc402('0x2d'),'migrations'),'pattern':/\.js$/}});_0x5eb9d9['up']({'migrations':_['map'](_0x59b070,function(_0x2c3954){return _0x2c3954+_0xc402('0x27');})})[_0xc402('0x1f')](function(){return _0x16cdde['status'](0xc8)[_0xc402('0x13')]({'output':_0xc402('0x2e')+module['exports'][_0xc402('0x2')]+_0xc402('0x2f')+_[_0xc402('0x30')](_0x59b070),'migrations':_[_0xc402('0x25')](_0x59b070)});})['catch'](function(_0xc9b8be){if(_0xc9b8be instanceof db[_0xc402('0x2a')][_0xc402('0x31')]){return _0x16cdde['status'](0xc8)[_0xc402('0x13')]({'output':_0xc402('0x32')});}else{return _0x16cdde[_0xc402('0x12')](0x1f4)[_0xc402('0x13')](_0xc9b8be);}});}else{return _0x16cdde['status'](0xc8)['json']({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
index 1e36c10..b2988e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb53=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceAgentReport.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x2aec52,_0x59d962){var _0x3b8835=function(_0x3e2604){while(--_0x3e2604){_0x2aec52['push'](_0x2aec52['shift']());}};_0x3b8835(++_0x59d962);}(_0xdb53,0x17a));var _0x3db5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdb53[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0x3db5('0x0'));var path=require(_0x3db5('0x1'));var timeout=require(_0x3db5('0x2'));var express=require(_0x3db5('0x3'));var router=express[_0x3db5('0x4')]();var fs_extra=require(_0x3db5('0x5'));var auth=require(_0x3db5('0x6'));var interaction=require(_0x3db5('0x7'));var config=require('../../config/environment');var controller=require(_0x3db5('0x8'));router[_0x3db5('0x9')]('/',auth[_0x3db5('0xa')](),controller[_0x3db5('0xb')]);router[_0x3db5('0x9')]('/describe',auth[_0x3db5('0xa')](),controller['describe']);router[_0x3db5('0x9')](_0x3db5('0xc'),auth[_0x3db5('0xa')](),controller[_0x3db5('0xd')]);router[_0x3db5('0xe')]('/',auth[_0x3db5('0xa')](),controller[_0x3db5('0xf')]);router[_0x3db5('0x10')](_0x3db5('0xc'),auth['isAuthenticated'](),controller[_0x3db5('0x11')]);router[_0x3db5('0x12')](_0x3db5('0xc'),auth[_0x3db5('0xa')](),controller[_0x3db5('0x13')]);module[_0x3db5('0x14')]=router;
\ No newline at end of file
+var _0x70a9=['post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','/describe','/:id','show'];(function(_0x58a0bb,_0x3464b8){var _0x1f1146=function(_0x1178ed){while(--_0x1178ed){_0x58a0bb['push'](_0x58a0bb['shift']());}};_0x1f1146(++_0x3464b8);}(_0x70a9,0x16f));var _0x970a=function(_0x5ec776,_0x157fa7){_0x5ec776=_0x5ec776-0x0;var _0x4414ca=_0x70a9[_0x5ec776];return _0x4414ca;};'use strict';var multer=require(_0x970a('0x0'));var util=require(_0x970a('0x1'));var path=require('path');var timeout=require(_0x970a('0x2'));var express=require('express');var router=express[_0x970a('0x3')]();var fs_extra=require(_0x970a('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x970a('0x5'));var config=require(_0x970a('0x6'));var controller=require(_0x970a('0x7'));router[_0x970a('0x8')]('/',auth[_0x970a('0x9')](),controller['index']);router['get'](_0x970a('0xa'),auth[_0x970a('0x9')](),controller['describe']);router[_0x970a('0x8')](_0x970a('0xb'),auth['isAuthenticated'](),controller[_0x970a('0xc')]);router[_0x970a('0xd')]('/',auth[_0x970a('0x9')](),controller[_0x970a('0xe')]);router[_0x970a('0xf')]('/:id',auth[_0x970a('0x9')](),controller[_0x970a('0x10')]);router[_0x970a('0x11')](_0x970a('0xb'),auth['isAuthenticated'](),controller[_0x970a('0x12')]);module[_0x970a('0x13')]=router;
\ No newline at end of file
index dd3ff32..1512836 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae6e=['INTEGER','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING','DATE','BOOLEAN'];(function(_0xd16a3c,_0x480ff9){var _0x53fc3f=function(_0x52400c){while(--_0x52400c){_0xd16a3c['push'](_0xd16a3c['shift']());}};_0x53fc3f(++_0x480ff9);}(_0xae6e,0x1e5));var _0xeae6=function(_0x2914b6,_0x5316eb){_0x2914b6=_0x2914b6-0x0;var _0x5ce55a=_0xae6e[_0x2914b6];return _0x5ce55a;};'use strict';var Sequelize=require(_0xeae6('0x0'));module[_0xeae6('0x1')]={'type':{'type':Sequelize[_0xeae6('0x2')]},'uniqueid':{'type':Sequelize[_0xeae6('0x2')]},'calleridnum':{'type':Sequelize[_0xeae6('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xeae6('0x2')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xeae6('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize['DATE']},'agentcompleteAt':{'type':Sequelize['DATE']},'agentringnoanswerAt':{'type':Sequelize[_0xeae6('0x3')]},'agentdumpAt':{'type':Sequelize[_0xeae6('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0xeae6('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xeae6('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0xeae6('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xeae6('0x5')]},'reason':{'type':Sequelize[_0xeae6('0x2')]},'lastevent':{'type':Sequelize[_0xeae6('0x2')]},'channel':{'type':Sequelize[_0xeae6('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xeae6('0x2')]},'connectedlinenum':{'type':Sequelize[_0xeae6('0x2')]},'connectedlinename':{'type':Sequelize[_0xeae6('0x2')]},'language':{'type':Sequelize[_0xeae6('0x2')]},'accountcode':{'type':Sequelize[_0xeae6('0x2')]},'context':{'type':Sequelize[_0xeae6('0x2')]},'exten':{'type':Sequelize[_0xeae6('0x2')]},'priority':{'type':Sequelize[_0xeae6('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xeae6('0x5')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0xeae6('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xeae6('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xeae6('0x2')]},'destlanguage':{'type':Sequelize[_0xeae6('0x2')]},'destaccountcode':{'type':Sequelize[_0xeae6('0x2')]},'destcontext':{'type':Sequelize[_0xeae6('0x2')]},'destexten':{'type':Sequelize[_0xeae6('0x2')]},'destpriority':{'type':Sequelize[_0xeae6('0x2')]},'destuniqueid':{'type':Sequelize[_0xeae6('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize['STRING']},'answeredelsewheremembername':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0xeae6('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xeae6('0x2')],'comment':_0xeae6('0x6')},'transferexten':{'type':Sequelize[_0xeae6('0x2')]},'transferuniqueid':{'type':Sequelize['STRING']},'agententerreason':{'type':Sequelize[_0xeae6('0x5')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x536f=['DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','STRING'];(function(_0x1ea554,_0x50a8d8){var _0xd488b9=function(_0x4d1f6a){while(--_0x4d1f6a){_0x1ea554['push'](_0x1ea554['shift']());}};_0xd488b9(++_0x50a8d8);}(_0x536f,0x70));var _0xf536=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x536f[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0xf536('0x0'));module['exports']={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xf536('0x1')]},'queue':{'type':Sequelize[_0xf536('0x1')]},'interface':{'type':Sequelize[_0xf536('0x1')]},'membername':{'type':Sequelize[_0xf536('0x1')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0xf536('0x2')]},'agentcompleteAt':{'type':Sequelize['DATE']},'agentringnoanswerAt':{'type':Sequelize[_0xf536('0x2')]},'agentdumpAt':{'type':Sequelize[_0xf536('0x2')]},'holdtime':{'type':Sequelize[_0xf536('0x3')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xf536('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0xf536('0x3')]},'agentacw':{'type':Sequelize[_0xf536('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xf536('0x3')]},'reason':{'type':Sequelize['STRING']},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xf536('0x1')]},'channelstate':{'type':Sequelize[_0xf536('0x3')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0xf536('0x1')]},'language':{'type':Sequelize[_0xf536('0x1')]},'accountcode':{'type':Sequelize[_0xf536('0x1')]},'context':{'type':Sequelize[_0xf536('0x1')]},'exten':{'type':Sequelize[_0xf536('0x1')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0xf536('0x1')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0xf536('0x1')]},'destcalleridnum':{'type':Sequelize[_0xf536('0x1')]},'destcalleridname':{'type':Sequelize[_0xf536('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xf536('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xf536('0x1')]},'destlanguage':{'type':Sequelize[_0xf536('0x1')]},'destaccountcode':{'type':Sequelize[_0xf536('0x1')]},'destcontext':{'type':Sequelize[_0xf536('0x1')]},'destexten':{'type':Sequelize[_0xf536('0x1')]},'destpriority':{'type':Sequelize[_0xf536('0x1')]},'destuniqueid':{'type':Sequelize[_0xf536('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xf536('0x1')]},'answeredelsewheremembername':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0xf536('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0xf536('0x5')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0xf536('0x1')]},'agententerreason':{'type':Sequelize[_0xf536('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 35f1ec4..d069e59 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(_0x580647,_0x43d2c3){var _0x5f0792=function(_0x386cef){while(--_0x386cef){_0x580647['push'](_0x580647['shift']());}};_0x5f0792(++_0x43d2c3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xa9e0[_0x139a3c];return _0x2b375b;};'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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0xa9e0[_0x173d7e];return _0x2220d6;};'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 0241126..9089f6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x097c=['bluebird','request-promise','path','../../config/environment','exports','define','report_agent','lodash','util','../../config/logger','moment'];(function(_0x3be20a,_0x1de1e7){var _0x230cef=function(_0x2123fa){while(--_0x2123fa){_0x3be20a['push'](_0x3be20a['shift']());}};_0x230cef(++_0x1de1e7);}(_0x097c,0x1d5));var _0xc097=function(_0x1b388d,_0x1f7f6d){_0x1b388d=_0x1b388d-0x0;var _0xb568b1=_0x097c[_0x1b388d];return _0xb568b1;};'use strict';var _=require(_0xc097('0x0'));var util=require(_0xc097('0x1'));var logger=require(_0xc097('0x2'))('api');var moment=require(_0xc097('0x3'));var BPromise=require(_0xc097('0x4'));var rp=require(_0xc097('0x5'));var fs=require('fs');var path=require(_0xc097('0x6'));var rimraf=require('rimraf');var config=require(_0xc097('0x7'));var attributes=require('./voiceAgentReport.attributes');module[_0xc097('0x8')]=function(_0x3c9603,_0x31bc9a){return _0x3c9603[_0xc097('0x9')]('VoiceAgentReport',attributes,{'tableName':_0xc097('0xa'),'paranoid':![],'indexes':[{'fields':['uniqueid','destuniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2123=['bluebird','request-promise','path','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define','VoiceAgentReport','uniqueid','lodash','util','../../config/logger','api','moment'];(function(_0xf0ffc0,_0x1b0462){var _0x3ff6f2=function(_0x3a8224){while(--_0x3a8224){_0xf0ffc0['push'](_0xf0ffc0['shift']());}};_0x3ff6f2(++_0x1b0462);}(_0x2123,0x190));var _0x3212=function(_0x5d12f7,_0x3cc1c0){_0x5d12f7=_0x5d12f7-0x0;var _0x426422=_0x2123[_0x5d12f7];return _0x426422;};'use strict';var _=require(_0x3212('0x0'));var util=require(_0x3212('0x1'));var logger=require(_0x3212('0x2'))(_0x3212('0x3'));var moment=require(_0x3212('0x4'));var BPromise=require(_0x3212('0x5'));var rp=require(_0x3212('0x6'));var fs=require('fs');var path=require(_0x3212('0x7'));var rimraf=require(_0x3212('0x8'));var config=require(_0x3212('0x9'));var attributes=require(_0x3212('0xa'));module[_0x3212('0xb')]=function(_0x5d9d36,_0x3859e4){return _0x5d9d36[_0x3212('0xc')](_0x3212('0xd'),attributes,{'tableName':'report_agent','paranoid':![],'indexes':[{'fields':[_0x3212('0xe'),'destuniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index a2e2898..89b3ccc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88b3=['catch','body','options','raw','then','CreateVoiceAgentReport','UpdateVoiceAgentReport','VoiceAgentReport','update','attributes','limit','stringify','moment','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','info','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','error','message','result'];(function(_0x38f411,_0x5864cc){var _0x2a6132=function(_0x206d69){while(--_0x206d69){_0x38f411['push'](_0x38f411['shift']());}};_0x2a6132(++_0x5864cc);}(_0x88b3,0xb4));var _0x388b=function(_0x4604e1,_0x2d7cb2){_0x4604e1=_0x4604e1-0x0;var _0x3b2b80=_0x88b3[_0x4604e1];return _0x3b2b80;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x388b('0x0'));var BPromise=require(_0x388b('0x1'));var rs=require(_0x388b('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x388b('0x3'));var logger=require(_0x388b('0x4'))('rpc');var config=require(_0x388b('0x5'));var jayson=require(_0x388b('0x6'));var client=jayson[_0x388b('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x30dcf6,_0x34e932,_0x2f357d){return new BPromise(function(_0x1e181f,_0x53259b){return client['request'](_0x30dcf6,_0x2f357d)['then'](function(_0x125322){logger[_0x388b('0x8')](_0x388b('0x9'),_0x34e932,_0x388b('0xa'));logger[_0x388b('0xb')](_0x388b('0xc'),_0x34e932,'request\x20sent',JSON['stringify'](_0x125322));if(_0x125322[_0x388b('0xd')]){if(_0x125322[_0x388b('0xd')]['code']===0x1f4){logger[_0x388b('0xd')]('VoiceAgentReport,\x20%s,\x20%s',_0x34e932,_0x125322[_0x388b('0xd')][_0x388b('0xe')]);return _0x53259b(_0x125322[_0x388b('0xd')]['message']);}logger[_0x388b('0xd')](_0x388b('0x9'),_0x34e932,_0x125322['error'][_0x388b('0xe')]);return _0x1e181f(_0x125322[_0x388b('0xd')]['message']);}else{logger[_0x388b('0x8')](_0x388b('0x9'),_0x34e932,'request\x20sent');_0x1e181f(_0x125322[_0x388b('0xf')][_0x388b('0xe')]);}})[_0x388b('0x10')](function(_0x199589){logger[_0x388b('0xd')](_0x388b('0x9'),_0x34e932,_0x199589);_0x53259b(_0x199589);});});}exports['CreateVoiceAgentReport']=function(_0x2a2bce){var _0xa62276=this;return new Promise(function(_0x16e7af,_0x52fd55){return db['VoiceAgentReport']['create'](_0x2a2bce[_0x388b('0x11')],{'raw':_0x2a2bce['options']?_0x2a2bce[_0x388b('0x12')][_0x388b('0x13')]===undefined?!![]:![]:!![]})[_0x388b('0x14')](function(_0x1719d0){logger[_0x388b('0x8')](_0x388b('0x15'),_0x2a2bce);logger['debug']('CreateVoiceAgentReport',_0x2a2bce,JSON['stringify'](_0x1719d0));_0x16e7af(_0x1719d0);})[_0x388b('0x10')](function(_0x12fc0e){logger['error'](_0x388b('0x15'),_0x12fc0e[_0x388b('0xe')],_0x2a2bce);_0x52fd55(_0xa62276[_0x388b('0xd')](0x1f4,_0x12fc0e[_0x388b('0xe')]));});});};exports[_0x388b('0x16')]=function(_0x4bac5a){var _0x4c1a23=this;return new Promise(function(_0xf2e464,_0x2eeefc){return db[_0x388b('0x17')][_0x388b('0x18')](_0x4bac5a[_0x388b('0x11')],{'raw':_0x4bac5a['options']?_0x4bac5a['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4bac5a[_0x388b('0x12')]?_0x4bac5a['options']['where']||null:null,'attributes':_0x4bac5a['options']?_0x4bac5a[_0x388b('0x12')][_0x388b('0x19')]||null:null,'limit':_0x4bac5a[_0x388b('0x12')]?_0x4bac5a[_0x388b('0x12')][_0x388b('0x1a')]||null:null})[_0x388b('0x14')](function(_0x59e446){logger[_0x388b('0x8')](_0x388b('0x16'),_0x4bac5a);logger[_0x388b('0xb')](_0x388b('0x16'),_0x4bac5a,JSON[_0x388b('0x1b')](_0x59e446));_0xf2e464(_0x59e446);})['catch'](function(_0x4fc14e){logger[_0x388b('0xd')](_0x388b('0x16'),_0x4fc14e[_0x388b('0xe')],_0x4bac5a);_0x2eeefc(_0x4c1a23[_0x388b('0xd')](0x1f4,_0x4fc14e[_0x388b('0xe')]));});});};
\ No newline at end of file
+var _0xcae7=['VoiceAgentReport,\x20%s,\x20%s','message','result','catch','CreateVoiceAgentReport','VoiceAgentReport','create','body','options','update','raw','where','attributes','limit','UpdateVoiceAgentReport','debug','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','stringify','error'];(function(_0x17928f,_0x4ad33f){var _0x500b63=function(_0x127644){while(--_0x127644){_0x17928f['push'](_0x17928f['shift']());}};_0x500b63(++_0x4ad33f);}(_0xcae7,0xab));var _0x7cae=function(_0x1cee55,_0xe75188){_0x1cee55=_0x1cee55-0x0;var _0x4f640a=_0xcae7[_0x1cee55];return _0x4f640a;};'use strict';var _=require(_0x7cae('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x7cae('0x1'));var rs=require(_0x7cae('0x2'));var fs=require('fs');var Redis=require(_0x7cae('0x3'));var db=require(_0x7cae('0x4'))['db'];var utils=require(_0x7cae('0x5'));var logger=require('../../config/logger')(_0x7cae('0x6'));var config=require(_0x7cae('0x7'));var jayson=require(_0x7cae('0x8'));var client=jayson[_0x7cae('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xc7b0d,_0xdce7e6,_0x73648d){return new BPromise(function(_0x499987,_0x425894){return client['request'](_0xc7b0d,_0x73648d)[_0x7cae('0xa')](function(_0x5e3b47){logger[_0x7cae('0xb')]('VoiceAgentReport,\x20%s,\x20%s',_0xdce7e6,_0x7cae('0xc'));logger['debug']('VoiceAgentReport,\x20%s,\x20%s,\x20%s',_0xdce7e6,_0x7cae('0xc'),JSON[_0x7cae('0xd')](_0x5e3b47));if(_0x5e3b47[_0x7cae('0xe')]){if(_0x5e3b47[_0x7cae('0xe')]['code']===0x1f4){logger[_0x7cae('0xe')](_0x7cae('0xf'),_0xdce7e6,_0x5e3b47[_0x7cae('0xe')][_0x7cae('0x10')]);return _0x425894(_0x5e3b47[_0x7cae('0xe')][_0x7cae('0x10')]);}logger[_0x7cae('0xe')]('VoiceAgentReport,\x20%s,\x20%s',_0xdce7e6,_0x5e3b47['error'][_0x7cae('0x10')]);return _0x499987(_0x5e3b47[_0x7cae('0xe')][_0x7cae('0x10')]);}else{logger[_0x7cae('0xb')](_0x7cae('0xf'),_0xdce7e6,_0x7cae('0xc'));_0x499987(_0x5e3b47[_0x7cae('0x11')][_0x7cae('0x10')]);}})[_0x7cae('0x12')](function(_0x4053ad){logger[_0x7cae('0xe')]('VoiceAgentReport,\x20%s,\x20%s',_0xdce7e6,_0x4053ad);_0x425894(_0x4053ad);});});}exports[_0x7cae('0x13')]=function(_0x9f07de){var _0x1b983d=this;return new Promise(function(_0x12ed5b,_0x1aad69){return db[_0x7cae('0x14')][_0x7cae('0x15')](_0x9f07de[_0x7cae('0x16')],{'raw':_0x9f07de[_0x7cae('0x17')]?_0x9f07de[_0x7cae('0x17')]['raw']===undefined?!![]:![]:!![]})[_0x7cae('0xa')](function(_0x4ffe22){logger[_0x7cae('0xb')](_0x7cae('0x13'),_0x9f07de);logger['debug']('CreateVoiceAgentReport',_0x9f07de,JSON['stringify'](_0x4ffe22));_0x12ed5b(_0x4ffe22);})[_0x7cae('0x12')](function(_0x191cc9){logger[_0x7cae('0xe')](_0x7cae('0x13'),_0x191cc9[_0x7cae('0x10')],_0x9f07de);_0x1aad69(_0x1b983d[_0x7cae('0xe')](0x1f4,_0x191cc9[_0x7cae('0x10')]));});});};exports['UpdateVoiceAgentReport']=function(_0x900b34){var _0x1a794d=this;return new Promise(function(_0x26a6cb,_0x1d7af7){return db[_0x7cae('0x14')][_0x7cae('0x18')](_0x900b34[_0x7cae('0x16')],{'raw':_0x900b34['options']?_0x900b34[_0x7cae('0x17')][_0x7cae('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x900b34[_0x7cae('0x17')]?_0x900b34[_0x7cae('0x17')][_0x7cae('0x1a')]||null:null,'attributes':_0x900b34[_0x7cae('0x17')]?_0x900b34[_0x7cae('0x17')][_0x7cae('0x1b')]||null:null,'limit':_0x900b34[_0x7cae('0x17')]?_0x900b34[_0x7cae('0x17')][_0x7cae('0x1c')]||null:null})[_0x7cae('0xa')](function(_0x2fed2a){logger[_0x7cae('0xb')](_0x7cae('0x1d'),_0x900b34);logger[_0x7cae('0x1e')](_0x7cae('0x1d'),_0x900b34,JSON['stringify'](_0x2fed2a));_0x26a6cb(_0x2fed2a);})['catch'](function(_0x1400c4){logger[_0x7cae('0xe')](_0x7cae('0x1d'),_0x1400c4[_0x7cae('0x10')],_0x900b34);_0x1d7af7(_0x1a794d[_0x7cae('0xe')](0x1f4,_0x1400c4['message']));});});};
\ No newline at end of file
index 6aedcf7..426a554 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b8f=['destroy','exports','util','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./voiceCallReport.controller','get','index','/describe','isAuthenticated','/:id','show','post','create','put'];(function(_0x500923,_0x3689d9){var _0x4c4e33=function(_0x48f469){while(--_0x48f469){_0x500923['push'](_0x500923['shift']());}};_0x4c4e33(++_0x3689d9);}(_0x6b8f,0x1bc));var _0xf6b8=function(_0x16d888,_0x4bb65a){_0x16d888=_0x16d888-0x0;var _0x89aeb3=_0x6b8f[_0x16d888];return _0x89aeb3;};'use strict';var multer=require('multer');var util=require(_0xf6b8('0x0'));var path=require('path');var timeout=require(_0xf6b8('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf6b8('0x2'));var auth=require(_0xf6b8('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xf6b8('0x4'));var controller=require(_0xf6b8('0x5'));router[_0xf6b8('0x6')]('/',auth['isAuthenticated'](),controller[_0xf6b8('0x7')]);router[_0xf6b8('0x6')](_0xf6b8('0x8'),auth[_0xf6b8('0x9')](),controller['describe']);router['get'](_0xf6b8('0xa'),auth['isAuthenticated'](),controller[_0xf6b8('0xb')]);router[_0xf6b8('0xc')]('/',auth[_0xf6b8('0x9')](),controller[_0xf6b8('0xd')]);router[_0xf6b8('0xe')](_0xf6b8('0xa'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xf6b8('0xa'),auth[_0xf6b8('0x9')](),controller[_0xf6b8('0xf')]);module[_0xf6b8('0x10')]=router;
\ No newline at end of file
+var _0xd6d6=['create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get','index','/describe','isAuthenticated','describe','/:id','post'];(function(_0x17799e,_0x176154){var _0x27e472=function(_0x680bd1){while(--_0x680bd1){_0x17799e['push'](_0x17799e['shift']());}};_0x27e472(++_0x176154);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x44ae16,_0x54dd18){_0x44ae16=_0x44ae16-0x0;var _0x20e17f=_0xd6d6[_0x44ae16];return _0x20e17f;};'use strict';var multer=require(_0x6d6d('0x0'));var util=require(_0x6d6d('0x1'));var path=require(_0x6d6d('0x2'));var timeout=require(_0x6d6d('0x3'));var express=require('express');var router=express[_0x6d6d('0x4')]();var fs_extra=require(_0x6d6d('0x5'));var auth=require(_0x6d6d('0x6'));var interaction=require(_0x6d6d('0x7'));var config=require(_0x6d6d('0x8'));var controller=require(_0x6d6d('0x9'));router[_0x6d6d('0xa')]('/',auth['isAuthenticated'](),controller[_0x6d6d('0xb')]);router[_0x6d6d('0xa')](_0x6d6d('0xc'),auth[_0x6d6d('0xd')](),controller[_0x6d6d('0xe')]);router[_0x6d6d('0xa')](_0x6d6d('0xf'),auth['isAuthenticated'](),controller['show']);router[_0x6d6d('0x10')]('/',auth[_0x6d6d('0xd')](),controller[_0x6d6d('0x11')]);router[_0x6d6d('0x12')](_0x6d6d('0xf'),auth['isAuthenticated'](),controller[_0x6d6d('0x13')]);router[_0x6d6d('0x14')]('/:id',auth['isAuthenticated'](),controller[_0x6d6d('0x15')]);module[_0x6d6d('0x16')]=router;
\ No newline at end of file
index 1ebe875..48d6f05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53e6=['sequelize','exports','STRING','ENUM','inbound','outbound','DATE','INTEGER'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x53e6,0x178));var _0x653e=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x53e6[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require(_0x653e('0x0'));module[_0x653e('0x1')]={'uniqueid':{'type':Sequelize[_0x653e('0x2')]},'type':{'type':Sequelize[_0x653e('0x3')](_0x653e('0x4'),'internal',_0x653e('0x5'),'inbound-fax','outbound-fax','dialer')},'tag':{'type':Sequelize[_0x653e('0x2')]},'accountcode':{'type':Sequelize[_0x653e('0x2')]},'source':{'type':Sequelize[_0x653e('0x2')]},'destination':{'type':Sequelize[_0x653e('0x2')]},'destinationcontext':{'type':Sequelize[_0x653e('0x2')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x653e('0x2')]},'destinationchannel':{'type':Sequelize[_0x653e('0x2')]},'lastapplication':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize[_0x653e('0x6')]},'systemanswertime':{'type':Sequelize[_0x653e('0x6')]},'answertime':{'type':Sequelize[_0x653e('0x6')]},'endtime':{'type':Sequelize[_0x653e('0x6')]},'duration':{'type':Sequelize[_0x653e('0x7')]},'billableseconds':{'type':Sequelize[_0x653e('0x7')]},'mohtime':{'type':Sequelize[_0x653e('0x7')],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x653e('0x2')]},'userfield':{'type':Sequelize[_0x653e('0x2')]},'userDisposition':{'type':Sequelize[_0x653e('0x2')]},'userSecondDisposition':{'type':Sequelize[_0x653e('0x2')]},'userThirdDisposition':{'type':Sequelize[_0x653e('0x2')]},'note':{'type':Sequelize[_0x653e('0x2')]},'prefix':{'type':Sequelize['STRING']},'routeid':{'type':Sequelize[_0x653e('0x7')]},'sipcallid':{'type':Sequelize[_0x653e('0x2')]}};
\ No newline at end of file
+var _0xc49e=['inbound-fax','outbound-fax','dialer','DATE','INTEGER','sequelize','exports','STRING','ENUM','inbound','outbound'];(function(_0x290200,_0x2da108){var _0xf5b3eb=function(_0x10ac02){while(--_0x10ac02){_0x290200['push'](_0x290200['shift']());}};_0xf5b3eb(++_0x2da108);}(_0xc49e,0x1bd));var _0xec49=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xc49e[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require(_0xec49('0x0'));module[_0xec49('0x1')]={'uniqueid':{'type':Sequelize[_0xec49('0x2')]},'type':{'type':Sequelize[_0xec49('0x3')](_0xec49('0x4'),'internal',_0xec49('0x5'),_0xec49('0x6'),_0xec49('0x7'),_0xec49('0x8'))},'tag':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xec49('0x2')]},'source':{'type':Sequelize[_0xec49('0x2')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0xec49('0x2')]},'callerid':{'type':Sequelize[_0xec49('0x2')]},'channel':{'type':Sequelize[_0xec49('0x2')]},'destinationchannel':{'type':Sequelize[_0xec49('0x2')]},'lastapplication':{'type':Sequelize[_0xec49('0x2')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize[_0xec49('0x9')]},'systemanswertime':{'type':Sequelize[_0xec49('0x9')]},'answertime':{'type':Sequelize[_0xec49('0x9')]},'endtime':{'type':Sequelize['DATE']},'duration':{'type':Sequelize[_0xec49('0xa')]},'billableseconds':{'type':Sequelize[_0xec49('0xa')]},'mohtime':{'type':Sequelize[_0xec49('0xa')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xec49('0x2')]},'amaflags':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0xec49('0x2')]},'userDisposition':{'type':Sequelize[_0xec49('0x2')]},'userSecondDisposition':{'type':Sequelize[_0xec49('0x2')]},'userThirdDisposition':{'type':Sequelize[_0xec49('0x2')]},'note':{'type':Sequelize[_0xec49('0x2')]},'prefix':{'type':Sequelize[_0xec49('0x2')]},'routeid':{'type':Sequelize[_0xec49('0xa')]},'sipcallid':{'type':Sequelize[_0xec49('0x2')]}};
\ No newline at end of file
index a29b4d9..9a92702 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x276a75,_0x4becef){var _0x2beb89=function(_0x3b4c64){while(--_0x3b4c64){_0x276a75['push'](_0x276a75['shift']());}};_0x2beb89(++_0x4becef);}(_0xdb28,0x106));var _0x8db2=function(_0x2e6f6a,_0x35fc4d){_0x2e6f6a=_0x2e6f6a-0x0;var _0x1ff6f6=_0xdb28[_0x2e6f6a];return _0x1ff6f6;};'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
+var _0x2ef3=['pick','filter','merge','options','VoiceCallReport','then','includeAll','include','fullname','alias','User','findAll','rows','catch','show','params','keys','find','create','destroy','describe','body','uniqueid','user','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where'];(function(_0x454018,_0x46e33a){var _0x24697d=function(_0x3ec647){while(--_0x3ec647){_0x454018['push'](_0x454018['shift']());}};_0x24697d(++_0x46e33a);}(_0x2ef3,0xba));var _0x32ef=function(_0x343fe6,_0xf51404){_0x343fe6=_0x343fe6-0x0;var _0x18c8c4=_0x2ef3[_0x343fe6];return _0x18c8c4;};'use strict';var emlformat=require(_0x32ef('0x0'));var rimraf=require(_0x32ef('0x1'));var zipdir=require(_0x32ef('0x2'));var jsonpatch=require(_0x32ef('0x3'));var rp=require(_0x32ef('0x4'));var moment=require(_0x32ef('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x32ef('0x6'));var util=require(_0x32ef('0x7'));var path=require('path');var sox=require(_0x32ef('0x8'));var csv=require(_0x32ef('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x32ef('0xa'));var squel=require(_0x32ef('0xb'));var crypto=require(_0x32ef('0xc'));var jsforce=require(_0x32ef('0xd'));var deskjs=require(_0x32ef('0xe'));var toCsv=require(_0x32ef('0x9'));var querystring=require(_0x32ef('0xf'));var Papa=require(_0x32ef('0x10'));var Redis=require(_0x32ef('0x11'));var authService=require(_0x32ef('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x32ef('0x13'));var logger=require(_0x32ef('0x14'))(_0x32ef('0x15'));var utils=require(_0x32ef('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x32ef('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a5106,_0x49d590){_0x49d590=_0x49d590||0xcc;return function(_0x3e98df){if(_0x3e98df){return _0x1a5106[_0x32ef('0x18')](_0x49d590);}return _0x1a5106['status'](_0x49d590)['end']();};}function respondWithResult(_0x19ce1,_0x4d8009){_0x4d8009=_0x4d8009||0xc8;return function(_0x326fce){if(_0x326fce){return _0x19ce1[_0x32ef('0x19')](_0x4d8009)[_0x32ef('0x1a')](_0x326fce);}};}function respondWithFilteredResult(_0x54c7f5,_0x57aff1){return function(_0x55bf0b){if(_0x55bf0b){var _0x531e30=typeof _0x57aff1[_0x32ef('0x1b')]===_0x32ef('0x1c')&&typeof _0x57aff1[_0x32ef('0x1d')]==='undefined';var _0x5d559b=_0x55bf0b[_0x32ef('0x1e')];var _0x1a9476=_0x531e30?0x0:_0x57aff1[_0x32ef('0x1b')];var _0x57863c=_0x531e30?_0x55bf0b[_0x32ef('0x1e')]:_0x57aff1[_0x32ef('0x1b')]+_0x57aff1['limit'];var _0x304505;if(_0x57863c>=_0x5d559b){_0x57863c=_0x5d559b;_0x304505=0xc8;}else{_0x304505=0xce;}_0x54c7f5[_0x32ef('0x19')](_0x304505);return _0x54c7f5[_0x32ef('0x1f')](_0x32ef('0x20'),_0x1a9476+'-'+_0x57863c+'/'+_0x5d559b)[_0x32ef('0x1a')](_0x55bf0b);}return null;};}function patchUpdates(_0x3aec05){return function(_0x4de441){try{jsonpatch[_0x32ef('0x21')](_0x4de441,_0x3aec05,!![]);}catch(_0x5cc3ef){return BPromise[_0x32ef('0x22')](_0x5cc3ef);}return _0x4de441[_0x32ef('0x23')]();};}function saveUpdates(_0x49f2d8,_0x1af371){return function(_0x97780){if(_0x97780){return _0x97780[_0x32ef('0x24')](_0x49f2d8)['then'](function(_0x57f5e5){return _0x57f5e5;});}return null;};}function removeEntity(_0x22f2d7,_0xb30fab){return function(_0x225feb){if(_0x225feb){return _0x225feb['destroy']()['then'](function(){_0x22f2d7[_0x32ef('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51a412,_0x278495){return function(_0x14d4b3){if(!_0x14d4b3){_0x51a412[_0x32ef('0x18')](0x194);}return _0x14d4b3;};}function handleError(_0x1dbe98,_0x15ce54){_0x15ce54=_0x15ce54||0x1f4;return function(_0x234175){logger[_0x32ef('0x25')](_0x234175[_0x32ef('0x26')]);if(_0x234175[_0x32ef('0x27')]){delete _0x234175[_0x32ef('0x27')];}_0x1dbe98[_0x32ef('0x19')](_0x15ce54)[_0x32ef('0x28')](_0x234175);};}exports['index']=function(_0xd65fde,_0x2f5d06){var _0x5a04cd={},_0x12de1a={},_0x3c569d={'count':0x0,'rows':[]};var _0x30b250=_[_0x32ef('0x29')](db['VoiceCallReport'][_0x32ef('0x2a')],function(_0x22bf86){return{'name':_0x22bf86[_0x32ef('0x2b')],'type':_0x22bf86[_0x32ef('0x2c')][_0x32ef('0x2d')]};});_0x12de1a[_0x32ef('0x2e')]=_[_0x32ef('0x29')](_0x30b250,'name');_0x12de1a[_0x32ef('0x2f')]=_['keys'](_0xd65fde[_0x32ef('0x2f')]);_0x12de1a[_0x32ef('0x30')]=_['intersection'](_0x12de1a[_0x32ef('0x2e')],_0x12de1a[_0x32ef('0x2f')]);_0x5a04cd[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0x12de1a[_0x32ef('0x2e')],qs['fields'](_0xd65fde['query'][_0x32ef('0x33')]));_0x5a04cd['attributes']=_0x5a04cd[_0x32ef('0x31')][_0x32ef('0x34')]?_0x5a04cd[_0x32ef('0x31')]:_0x12de1a[_0x32ef('0x2e')];if(!_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x35')]('nolimit')){_0x5a04cd['limit']=qs['limit'](_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x1d')]);_0x5a04cd[_0x32ef('0x1b')]=qs['offset'](_0xd65fde['query'][_0x32ef('0x1b')]);}_0x5a04cd[_0x32ef('0x36')]=qs[_0x32ef('0x37')](_0xd65fde['query']['sort']);_0x5a04cd[_0x32ef('0x38')]=qs[_0x32ef('0x30')](_[_0x32ef('0x39')](_0xd65fde[_0x32ef('0x2f')],_0x12de1a[_0x32ef('0x30')]),_0x30b250);if(_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3a')]){_0x5a04cd[_0x32ef('0x38')]=_[_0x32ef('0x3b')](_0x5a04cd['where'],{'$or':_[_0x32ef('0x29')](_0x30b250,function(_0x36e374){if(_0x36e374[_0x32ef('0x2c')]!=='VIRTUAL'){var _0x365125={};_0x365125[_0x36e374[_0x32ef('0x27')]]={'$like':'%'+_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3a')]+'%'};return _0x365125;}})});}_0x5a04cd=_[_0x32ef('0x3b')]({},_0x5a04cd,_0xd65fde[_0x32ef('0x3c')]);var _0x256c40={'where':_0x5a04cd[_0x32ef('0x38')]};return db[_0x32ef('0x3d')][_0x32ef('0x1e')](_0x256c40)[_0x32ef('0x3e')](function(_0x4615b4){_0x3c569d['count']=_0x4615b4;if(_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3f')]){_0x5a04cd[_0x32ef('0x40')]=[{'attributes':['id',_0x32ef('0x27'),_0x32ef('0x41'),_0x32ef('0x42')],'model':db[_0x32ef('0x43')],'as':'User'}];}return db['VoiceCallReport'][_0x32ef('0x44')](_0x5a04cd);})[_0x32ef('0x3e')](function(_0x2a33dd){_0x3c569d[_0x32ef('0x45')]=_0x2a33dd;return _0x3c569d;})['then'](respondWithFilteredResult(_0x2f5d06,_0x5a04cd))[_0x32ef('0x46')](handleError(_0x2f5d06,null));};exports[_0x32ef('0x47')]=function(_0x5d2f06,_0x4744ba){var _0x4bc5bc={'raw':!![],'where':{'id':_0x5d2f06[_0x32ef('0x48')]['id']}},_0xcb3c08={};_0xcb3c08[_0x32ef('0x2e')]=_[_0x32ef('0x49')](db[_0x32ef('0x3d')][_0x32ef('0x2a')]);_0xcb3c08[_0x32ef('0x2f')]=_[_0x32ef('0x49')](_0x5d2f06[_0x32ef('0x2f')]);_0xcb3c08[_0x32ef('0x30')]=_['intersection'](_0xcb3c08[_0x32ef('0x2e')],_0xcb3c08['query']);_0x4bc5bc[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0xcb3c08[_0x32ef('0x2e')],qs['fields'](_0x5d2f06[_0x32ef('0x2f')][_0x32ef('0x33')]));_0x4bc5bc[_0x32ef('0x31')]=_0x4bc5bc[_0x32ef('0x31')][_0x32ef('0x34')]?_0x4bc5bc[_0x32ef('0x31')]:_0xcb3c08[_0x32ef('0x2e')];if(_0x5d2f06['query']['includeAll']){_0x4bc5bc[_0x32ef('0x40')]=[{'all':!![]}];}_0x4bc5bc=_[_0x32ef('0x3b')]({},_0x4bc5bc,_0x5d2f06[_0x32ef('0x3c')]);return db[_0x32ef('0x3d')][_0x32ef('0x4a')](_0x4bc5bc)[_0x32ef('0x3e')](handleEntityNotFound(_0x4744ba,null))[_0x32ef('0x3e')](respondWithResult(_0x4744ba,null))[_0x32ef('0x46')](handleError(_0x4744ba,null));};exports[_0x32ef('0x4b')]=function(_0x1ebedf,_0x35a294){return db[_0x32ef('0x3d')][_0x32ef('0x4b')](_0x1ebedf['body'],{})[_0x32ef('0x3e')](respondWithResult(_0x35a294,0xc9))[_0x32ef('0x46')](handleError(_0x35a294,null));};exports[_0x32ef('0x4c')]=function(_0xd42609,_0x1cc9f3){return db[_0x32ef('0x3d')][_0x32ef('0x4a')]({'where':{'id':_0xd42609[_0x32ef('0x48')]['id']}})[_0x32ef('0x3e')](handleEntityNotFound(_0x1cc9f3,null))[_0x32ef('0x3e')](removeEntity(_0x1cc9f3,null))[_0x32ef('0x46')](handleError(_0x1cc9f3,null));};exports[_0x32ef('0x4d')]=function(_0x272377,_0x326445){return db[_0x32ef('0x3d')][_0x32ef('0x4d')]()[_0x32ef('0x3e')](respondWithResult(_0x326445,null))[_0x32ef('0x46')](handleError(_0x326445,null));};exports['update']=function(_0x515ac9,_0x179c2f){if(_0x515ac9[_0x32ef('0x4e')][_0x32ef('0x4f')]){delete _0x515ac9[_0x32ef('0x4e')][_0x32ef('0x4f')];}return db[_0x32ef('0x3d')][_0x32ef('0x4a')]({'where':{'uniqueid':_0x515ac9[_0x32ef('0x48')]['id'],'UserId':{'$or':[null,_0x515ac9[_0x32ef('0x50')]['id']]}}})[_0x32ef('0x3e')](handleEntityNotFound(_0x179c2f,null))[_0x32ef('0x3e')](saveUpdates(_0x515ac9['body'],null))[_0x32ef('0x3e')](respondWithResult(_0x179c2f,null))[_0x32ef('0x46')](handleError(_0x179c2f,null));};
\ No newline at end of file
index a4035b5..a63938d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc343=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceCallReport.attributes','exports','uniqueid','lodash'];(function(_0x50a0c2,_0x4befab){var _0x5ebadd=function(_0x3a3342){while(--_0x3a3342){_0x50a0c2['push'](_0x50a0c2['shift']());}};_0x5ebadd(++_0x4befab);}(_0xc343,0x9b));var _0x3c34=function(_0x29d0a7,_0x27b72c){_0x29d0a7=_0x29d0a7-0x0;var _0x583edb=_0xc343[_0x29d0a7];return _0x583edb;};'use strict';var _=require(_0x3c34('0x0'));var util=require(_0x3c34('0x1'));var logger=require(_0x3c34('0x2'))(_0x3c34('0x3'));var moment=require(_0x3c34('0x4'));var BPromise=require(_0x3c34('0x5'));var rp=require(_0x3c34('0x6'));var fs=require('fs');var path=require(_0x3c34('0x7'));var rimraf=require(_0x3c34('0x8'));var config=require(_0x3c34('0x9'));var attributes=require(_0x3c34('0xa'));module[_0x3c34('0xb')]=function(_0xb99b85,_0x57b39e){return _0xb99b85['define']('VoiceCallReport',attributes,{'tableName':'report_call','paranoid':![],'indexes':[{'fields':[_0x3c34('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6a78=['util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./voiceCallReport.attributes','exports','define','VoiceCallReport','report_call','lodash'];(function(_0xb7968d,_0x5c70e0){var _0x3de57f=function(_0x220d50){while(--_0x220d50){_0xb7968d['push'](_0xb7968d['shift']());}};_0x3de57f(++_0x5c70e0);}(_0x6a78,0x67));var _0x86a7=function(_0x5b409b,_0x109995){_0x5b409b=_0x5b409b-0x0;var _0x22c2d8=_0x6a78[_0x5b409b];return _0x22c2d8;};'use strict';var _=require(_0x86a7('0x0'));var util=require(_0x86a7('0x1'));var logger=require(_0x86a7('0x2'))('api');var moment=require('moment');var BPromise=require(_0x86a7('0x3'));var rp=require(_0x86a7('0x4'));var fs=require('fs');var path=require(_0x86a7('0x5'));var rimraf=require(_0x86a7('0x6'));var config=require(_0x86a7('0x7'));var attributes=require(_0x86a7('0x8'));module[_0x86a7('0x9')]=function(_0x2d6842,_0x308dad){return _0x2d6842[_0x86a7('0xa')](_0x86a7('0xb'),attributes,{'tableName':_0x86a7('0xc'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index e1b7228..c03b034 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57d0=['attributes','limit','include','map','model','GetVoiceCallReport','CreateVoiceCallReport','VoiceCallReport','create','body','raw','info','UpdateVoiceCallReport','update','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','then','VoiceCallReport,\x20%s,\x20%s','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','findAll','options','where'];(function(_0x37a5d0,_0x45a5cc){var _0x452952=function(_0x536acc){while(--_0x536acc){_0x37a5d0['push'](_0x37a5d0['shift']());}};_0x452952(++_0x45a5cc);}(_0x57d0,0x164));var _0x057d=function(_0x2cdec6,_0x39d4c8){_0x2cdec6=_0x2cdec6-0x0;var _0xa36703=_0x57d0[_0x2cdec6];return _0xa36703;};'use strict';var _=require(_0x057d('0x0'));var util=require(_0x057d('0x1'));var moment=require(_0x057d('0x2'));var BPromise=require(_0x057d('0x3'));var rs=require(_0x057d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x057d('0x5'))['db'];var utils=require(_0x057d('0x6'));var logger=require('../../config/logger')(_0x057d('0x7'));var config=require('../../config/environment');var jayson=require(_0x057d('0x8'));var client=jayson['client'][_0x057d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x172640,_0x476196,_0x401288){return new BPromise(function(_0x3ce07e,_0x1a2276){return client[_0x057d('0xa')](_0x172640,_0x401288)[_0x057d('0xb')](function(_0x44d3d2){logger['info'](_0x057d('0xc'),_0x476196,'request\x20sent');logger[_0x057d('0xd')](_0x057d('0xe'),_0x476196,'request\x20sent',JSON[_0x057d('0xf')](_0x44d3d2));if(_0x44d3d2[_0x057d('0x10')]){if(_0x44d3d2['error'][_0x057d('0x11')]===0x1f4){logger[_0x057d('0x10')]('VoiceCallReport,\x20%s,\x20%s',_0x476196,_0x44d3d2['error'][_0x057d('0x12')]);return _0x1a2276(_0x44d3d2[_0x057d('0x10')]['message']);}logger['error'](_0x057d('0xc'),_0x476196,_0x44d3d2[_0x057d('0x10')][_0x057d('0x12')]);return _0x3ce07e(_0x44d3d2[_0x057d('0x10')][_0x057d('0x12')]);}else{logger['info']('VoiceCallReport,\x20%s,\x20%s',_0x476196,_0x057d('0x13'));_0x3ce07e(_0x44d3d2['result'][_0x057d('0x12')]);}})[_0x057d('0x14')](function(_0x2fc96d){logger[_0x057d('0x10')](_0x057d('0xc'),_0x476196,_0x2fc96d);_0x1a2276(_0x2fc96d);});});}exports['GetVoiceCallReport']=function(_0xb4a4ce){var _0x447b43=this;return new Promise(function(_0x56c340,_0x378e63){return db['VoiceCallReport'][_0x057d('0x15')]({'raw':_0xb4a4ce[_0x057d('0x16')]?_0xb4a4ce[_0x057d('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0xb4a4ce[_0x057d('0x16')]?_0xb4a4ce[_0x057d('0x16')][_0x057d('0x17')]||null:null,'attributes':_0xb4a4ce[_0x057d('0x16')]?_0xb4a4ce['options'][_0x057d('0x18')]||null:null,'limit':_0xb4a4ce[_0x057d('0x16')]?_0xb4a4ce['options'][_0x057d('0x19')]||null:null,'include':_0xb4a4ce['options']?_0xb4a4ce[_0x057d('0x16')][_0x057d('0x1a')]?_[_0x057d('0x1b')](_0xb4a4ce[_0x057d('0x16')][_0x057d('0x1a')],function(_0x1fb1dd){return{'model':db[_0x1fb1dd[_0x057d('0x1c')]],'as':_0x1fb1dd['as'],'attributes':_0x1fb1dd['attributes'],'include':_0x1fb1dd[_0x057d('0x1a')]?_[_0x057d('0x1b')](_0x1fb1dd[_0x057d('0x1a')],function(_0x533077){return{'model':db[_0x533077[_0x057d('0x1c')]],'as':_0x533077['as'],'attributes':_0x533077['attributes'],'include':_0x533077[_0x057d('0x1a')]?_[_0x057d('0x1b')](_0x533077[_0x057d('0x1a')],function(_0x3d6ae4){return{'model':db[_0x3d6ae4[_0x057d('0x1c')]],'as':_0x3d6ae4['as'],'attributes':_0x3d6ae4[_0x057d('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4c05c5){logger['info'](_0x057d('0x1d'),_0xb4a4ce);logger[_0x057d('0xd')](_0x057d('0x1d'),_0xb4a4ce,JSON[_0x057d('0xf')](_0x4c05c5));_0x56c340(_0x4c05c5);})[_0x057d('0x14')](function(_0x38a3f2){logger[_0x057d('0x10')](_0x057d('0x1d'),_0x38a3f2[_0x057d('0x12')],_0xb4a4ce);_0x378e63(_0x447b43['error'](0x1f4,_0x38a3f2[_0x057d('0x12')]));});});};exports[_0x057d('0x1e')]=function(_0x3c35b){var _0x2fa6fa=this;return new Promise(function(_0x2daca3,_0x519e4c){return db[_0x057d('0x1f')][_0x057d('0x20')](_0x3c35b[_0x057d('0x21')],{'raw':_0x3c35b[_0x057d('0x16')]?_0x3c35b['options'][_0x057d('0x22')]===undefined?!![]:![]:!![]})['then'](function(_0x25f452){logger[_0x057d('0x23')](_0x057d('0x1e'),_0x3c35b);logger[_0x057d('0xd')](_0x057d('0x1e'),_0x3c35b,JSON['stringify'](_0x25f452));_0x2daca3(_0x25f452);})['catch'](function(_0x347efa){logger['error'](_0x057d('0x1e'),_0x347efa[_0x057d('0x12')],_0x3c35b);_0x519e4c(_0x2fa6fa[_0x057d('0x10')](0x1f4,_0x347efa[_0x057d('0x12')]));});});};exports[_0x057d('0x24')]=function(_0x1c2e35){var _0x1e6af5=this;return new Promise(function(_0x36dfda,_0x5cc6f5){return db[_0x057d('0x1f')][_0x057d('0x25')](_0x1c2e35['body'],{'raw':_0x1c2e35['options']?_0x1c2e35[_0x057d('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1c2e35['options']?_0x1c2e35[_0x057d('0x16')][_0x057d('0x17')]||null:null,'attributes':_0x1c2e35[_0x057d('0x16')]?_0x1c2e35[_0x057d('0x16')][_0x057d('0x18')]||null:null,'limit':_0x1c2e35[_0x057d('0x16')]?_0x1c2e35[_0x057d('0x16')][_0x057d('0x19')]||null:null})[_0x057d('0xb')](function(_0x40cd05){logger[_0x057d('0x23')]('UpdateVoiceCallReport',_0x1c2e35);logger['debug'](_0x057d('0x24'),_0x1c2e35,JSON[_0x057d('0xf')](_0x40cd05));_0x36dfda(_0x40cd05);})[_0x057d('0x14')](function(_0x425e66){logger[_0x057d('0x10')](_0x057d('0x24'),_0x425e66[_0x057d('0x12')],_0x1c2e35);_0x5cc6f5(_0x1e6af5[_0x057d('0x10')](0x1f4,_0x425e66[_0x057d('0x12')]));});});};
\ No newline at end of file
+var _0x147b=['raw','where','limit','include','map','model','attributes','stringify','CreateVoiceCallReport','create','body','update','UpdateVoiceCallReport','lodash','util','moment','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','VoiceCallReport,\x20%s,\x20%s','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options'];(function(_0x5b1d28,_0x213f66){var _0x7c9496=function(_0x5348a2){while(--_0x5348a2){_0x5b1d28['push'](_0x5b1d28['shift']());}};_0x7c9496(++_0x213f66);}(_0x147b,0x1ee));var _0xb147=function(_0x1f9d1f,_0x19595b){_0x1f9d1f=_0x1f9d1f-0x0;var _0x8d6f77=_0x147b[_0x1f9d1f];return _0x8d6f77;};'use strict';var _=require(_0xb147('0x0'));var util=require(_0xb147('0x1'));var moment=require(_0xb147('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb147('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb147('0x4'));var logger=require('../../config/logger')(_0xb147('0x5'));var config=require(_0xb147('0x6'));var jayson=require(_0xb147('0x7'));var client=jayson[_0xb147('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x24f1fa,_0xac6880,_0x3e2ee1){return new BPromise(function(_0x798fcb,_0x5e98fc){return client[_0xb147('0x9')](_0x24f1fa,_0x3e2ee1)[_0xb147('0xa')](function(_0x33bf77){logger[_0xb147('0xb')](_0xb147('0xc'),_0xac6880,'request\x20sent');logger[_0xb147('0xd')](_0xb147('0xe'),_0xac6880,_0xb147('0xf'),JSON['stringify'](_0x33bf77));if(_0x33bf77['error']){if(_0x33bf77[_0xb147('0x10')]['code']===0x1f4){logger[_0xb147('0x10')]('VoiceCallReport,\x20%s,\x20%s',_0xac6880,_0x33bf77[_0xb147('0x10')][_0xb147('0x11')]);return _0x5e98fc(_0x33bf77[_0xb147('0x10')][_0xb147('0x11')]);}logger[_0xb147('0x10')]('VoiceCallReport,\x20%s,\x20%s',_0xac6880,_0x33bf77[_0xb147('0x10')]['message']);return _0x798fcb(_0x33bf77[_0xb147('0x10')][_0xb147('0x11')]);}else{logger[_0xb147('0xb')]('VoiceCallReport,\x20%s,\x20%s',_0xac6880,_0xb147('0xf'));_0x798fcb(_0x33bf77[_0xb147('0x12')][_0xb147('0x11')]);}})[_0xb147('0x13')](function(_0x5f2b8c){logger[_0xb147('0x10')](_0xb147('0xc'),_0xac6880,_0x5f2b8c);_0x5e98fc(_0x5f2b8c);});});}exports[_0xb147('0x14')]=function(_0x43eb24){var _0x5448fd=this;return new Promise(function(_0x5dfb04,_0xf22809){return db[_0xb147('0x15')][_0xb147('0x16')]({'raw':_0x43eb24[_0xb147('0x17')]?_0x43eb24[_0xb147('0x17')][_0xb147('0x18')]===undefined?!![]:![]:!![],'where':_0x43eb24[_0xb147('0x17')]?_0x43eb24[_0xb147('0x17')][_0xb147('0x19')]||null:null,'attributes':_0x43eb24[_0xb147('0x17')]?_0x43eb24[_0xb147('0x17')]['attributes']||null:null,'limit':_0x43eb24[_0xb147('0x17')]?_0x43eb24['options'][_0xb147('0x1a')]||null:null,'include':_0x43eb24[_0xb147('0x17')]?_0x43eb24['options'][_0xb147('0x1b')]?_[_0xb147('0x1c')](_0x43eb24['options']['include'],function(_0x449f24){return{'model':db[_0x449f24[_0xb147('0x1d')]],'as':_0x449f24['as'],'attributes':_0x449f24[_0xb147('0x1e')],'include':_0x449f24[_0xb147('0x1b')]?_[_0xb147('0x1c')](_0x449f24['include'],function(_0x273610){return{'model':db[_0x273610[_0xb147('0x1d')]],'as':_0x273610['as'],'attributes':_0x273610[_0xb147('0x1e')],'include':_0x273610[_0xb147('0x1b')]?_['map'](_0x273610[_0xb147('0x1b')],function(_0x12b2ea){return{'model':db[_0x12b2ea['model']],'as':_0x12b2ea['as'],'attributes':_0x12b2ea['attributes']};}):[]};}):[]};}):[]:[]})[_0xb147('0xa')](function(_0x483c46){logger[_0xb147('0xb')](_0xb147('0x14'),_0x43eb24);logger[_0xb147('0xd')](_0xb147('0x14'),_0x43eb24,JSON[_0xb147('0x1f')](_0x483c46));_0x5dfb04(_0x483c46);})[_0xb147('0x13')](function(_0x3718f4){logger[_0xb147('0x10')]('GetVoiceCallReport',_0x3718f4[_0xb147('0x11')],_0x43eb24);_0xf22809(_0x5448fd[_0xb147('0x10')](0x1f4,_0x3718f4[_0xb147('0x11')]));});});};exports[_0xb147('0x20')]=function(_0x20aa43){var _0x1f086d=this;return new Promise(function(_0x53b088,_0xe14a90){return db[_0xb147('0x15')][_0xb147('0x21')](_0x20aa43[_0xb147('0x22')],{'raw':_0x20aa43[_0xb147('0x17')]?_0x20aa43[_0xb147('0x17')]['raw']===undefined?!![]:![]:!![]})[_0xb147('0xa')](function(_0x341d38){logger[_0xb147('0xb')]('CreateVoiceCallReport',_0x20aa43);logger['debug'](_0xb147('0x20'),_0x20aa43,JSON[_0xb147('0x1f')](_0x341d38));_0x53b088(_0x341d38);})[_0xb147('0x13')](function(_0x31f2aa){logger['error'](_0xb147('0x20'),_0x31f2aa[_0xb147('0x11')],_0x20aa43);_0xe14a90(_0x1f086d[_0xb147('0x10')](0x1f4,_0x31f2aa[_0xb147('0x11')]));});});};exports['UpdateVoiceCallReport']=function(_0xfa8ad3){var _0x290f46=this;return new Promise(function(_0x3efda7,_0xb10090){return db[_0xb147('0x15')][_0xb147('0x23')](_0xfa8ad3[_0xb147('0x22')],{'raw':_0xfa8ad3[_0xb147('0x17')]?_0xfa8ad3[_0xb147('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xfa8ad3['options']?_0xfa8ad3[_0xb147('0x17')][_0xb147('0x19')]||null:null,'attributes':_0xfa8ad3[_0xb147('0x17')]?_0xfa8ad3[_0xb147('0x17')][_0xb147('0x1e')]||null:null,'limit':_0xfa8ad3[_0xb147('0x17')]?_0xfa8ad3[_0xb147('0x17')][_0xb147('0x1a')]||null:null})[_0xb147('0xa')](function(_0x1d4da9){logger[_0xb147('0xb')](_0xb147('0x24'),_0xfa8ad3);logger[_0xb147('0xd')]('UpdateVoiceCallReport',_0xfa8ad3,JSON[_0xb147('0x1f')](_0x1d4da9));_0x3efda7(_0x1d4da9);})[_0xb147('0x13')](function(_0x50b787){logger[_0xb147('0x10')]('UpdateVoiceCallReport',_0x50b787[_0xb147('0x11')],_0xfa8ad3);_0xb10090(_0x290f46['error'](0x1f4,_0x50b787[_0xb147('0x11')]));});});};
\ No newline at end of file
index c73f9a5..744bf29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4968=['create','put','/:id','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','post'];(function(_0xabb819,_0x542f77){var _0x6fb295=function(_0xa8952f){while(--_0xa8952f){_0xabb819['push'](_0xabb819['shift']());}};_0x6fb295(++_0x542f77);}(_0x4968,0x106));var _0x8496=function(_0x621b44,_0x1bd9e1){_0x621b44=_0x621b44-0x0;var _0x44c647=_0x4968[_0x621b44];return _0x44c647;};'use strict';var multer=require(_0x8496('0x0'));var util=require('util');var path=require(_0x8496('0x1'));var timeout=require(_0x8496('0x2'));var express=require('express');var router=express[_0x8496('0x3')]();var fs_extra=require(_0x8496('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x8496('0x5'));var controller=require(_0x8496('0x6'));router[_0x8496('0x7')]('/',auth[_0x8496('0x8')](),controller['index']);router[_0x8496('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x8496('0x9')]('/',auth[_0x8496('0x8')](),controller[_0x8496('0xa')]);router[_0x8496('0xb')](_0x8496('0xc'),auth['isAuthenticated'](),controller[_0x8496('0xd')]);router[_0x8496('0xe')](_0x8496('0xc'),auth[_0x8496('0x8')](),controller[_0x8496('0xf')]);module[_0x8496('0x10')]=router;
\ No newline at end of file
+var _0x8dbb=['../../components/auth/service','../../components/interaction/service','./voiceChanSpy.controller','isAuthenticated','index','get','show','post','create','put','/:id','update','delete','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x5df2ff,_0x48300e){var _0x594f25=function(_0x1f5788){while(--_0x1f5788){_0x5df2ff['push'](_0x5df2ff['shift']());}};_0x594f25(++_0x48300e);}(_0x8dbb,0xf1));var _0xb8db=function(_0x20c06e,_0x251af7){_0x20c06e=_0x20c06e-0x0;var _0x241cee=_0x8dbb[_0x20c06e];return _0x241cee;};'use strict';var multer=require(_0xb8db('0x0'));var util=require(_0xb8db('0x1'));var path=require(_0xb8db('0x2'));var timeout=require(_0xb8db('0x3'));var express=require('express');var router=express[_0xb8db('0x4')]();var fs_extra=require(_0xb8db('0x5'));var auth=require(_0xb8db('0x6'));var interaction=require(_0xb8db('0x7'));var config=require('../../config/environment');var controller=require(_0xb8db('0x8'));router['get']('/',auth[_0xb8db('0x9')](),controller[_0xb8db('0xa')]);router[_0xb8db('0xb')]('/:id',auth[_0xb8db('0x9')](),controller[_0xb8db('0xc')]);router[_0xb8db('0xd')]('/',auth[_0xb8db('0x9')](),controller[_0xb8db('0xe')]);router[_0xb8db('0xf')](_0xb8db('0x10'),auth[_0xb8db('0x9')](),controller[_0xb8db('0x11')]);router[_0xb8db('0x12')](_0xb8db('0x10'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 9563996..71f6141 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc6c=['getDataValue','exports','STRING','setDataValue','options','join'];(function(_0x33d474,_0x4d71c1){var _0xd04d3c=function(_0x366601){while(--_0x366601){_0x33d474['push'](_0x33d474['shift']());}};_0xd04d3c(++_0x4d71c1);}(_0xbc6c,0xcd));var _0xcbc6=function(_0x43fe95,_0x282ec1){_0x43fe95=_0x43fe95-0x0;var _0x3538d6=_0xbc6c[_0x43fe95];return _0x3538d6;};'use strict';var Sequelize=require('sequelize');module[_0xcbc6('0x0')]={'name':{'type':Sequelize[_0xcbc6('0x1')]},'prefix':{'type':Sequelize[_0xcbc6('0x1')],'unique':'name','allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0x37ae6a){this[_0xcbc6('0x2')](_0xcbc6('0x3'),_0x37ae6a?_0x37ae6a[_0xcbc6('0x4')](''):[]);},'get':function(){return this[_0xcbc6('0x5')](_0xcbc6('0x3'))?this['getDataValue']('options')['split'](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xcbc6('0x1')]},'description':{'type':Sequelize[_0xcbc6('0x1')]}};
\ No newline at end of file
+var _0x6769=['BOOLEAN','sequelize','exports','STRING','name','setDataValue','options','join','getDataValue','split'];(function(_0x39b1bd,_0x554c9f){var _0x1dfb46=function(_0x4a15de){while(--_0x4a15de){_0x39b1bd['push'](_0x39b1bd['shift']());}};_0x1dfb46(++_0x554c9f);}(_0x6769,0x10f));var _0x9676=function(_0x5f5d08,_0xe4c654){_0x5f5d08=_0x5f5d08-0x0;var _0x4cd697=_0x6769[_0x5f5d08];return _0x4cd697;};'use strict';var Sequelize=require(_0x9676('0x0'));module[_0x9676('0x1')]={'name':{'type':Sequelize[_0x9676('0x2')]},'prefix':{'type':Sequelize[_0x9676('0x2')],'unique':_0x9676('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x9676('0x2')],'set':function(_0x5ab851){this[_0x9676('0x4')](_0x9676('0x5'),_0x5ab851?_0x5ab851[_0x9676('0x6')](''):[]);},'get':function(){return this['getDataValue'](_0x9676('0x5'))?this[_0x9676('0x7')](_0x9676('0x5'))[_0x9676('0x8')](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize['STRING']},'record':{'type':Sequelize[_0x9676('0x9')],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x9676('0x2')]}};
\ No newline at end of file
index 121ce64..e5146aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc73e=['show','params','includeAll','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChanSpies','UserProfileSection','autoAssociation','UserProfileResource','create','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','request-promise','util','path','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','destroy','then','get','stack','name','index','map','VoiceChanSpy','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','where','pick','merge','options','include','findAll','rows','catch'];(function(_0x39eeac,_0x3536ca){var _0x1068ab=function(_0x1c67fc){while(--_0x1c67fc){_0x39eeac['push'](_0x39eeac['shift']());}};_0x1068ab(++_0x3536ca);}(_0xc73e,0x1e9));var _0xec73=function(_0x2abf64,_0x9d7429){_0x2abf64=_0x2abf64-0x0;var _0x72ed34=_0xc73e[_0x2abf64];return _0x72ed34;};'use strict';var emlformat=require(_0xec73('0x0'));var rimraf=require(_0xec73('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xec73('0x2'));var rp=require(_0xec73('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xec73('0x4'));var path=require(_0xec73('0x5'));var sox=require('sox');var csv=require(_0xec73('0x6'));var ejs=require(_0xec73('0x7'));var fs=require('fs');var fs_extra=require(_0xec73('0x8'));var _=require(_0xec73('0x9'));var squel=require('squel');var crypto=require(_0xec73('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xec73('0xb'));var toCsv=require(_0xec73('0x6'));var querystring=require(_0xec73('0xc'));var Papa=require(_0xec73('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xec73('0xe'));var as=require(_0xec73('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xec73('0x10'));var utils=require(_0xec73('0x11'));var config=require(_0xec73('0x12'));var licenseUtil=require(_0xec73('0x13'));var db=require(_0xec73('0x14'))['db'];function respondWithStatusCode(_0x19d0f2,_0x1e67ac){_0x1e67ac=_0x1e67ac||0xcc;return function(_0x5f5594){if(_0x5f5594){return _0x19d0f2[_0xec73('0x15')](_0x1e67ac);}return _0x19d0f2['status'](_0x1e67ac)[_0xec73('0x16')]();};}function respondWithResult(_0x4be73c,_0x10f003){_0x10f003=_0x10f003||0xc8;return function(_0x1e4869){if(_0x1e4869){return _0x4be73c[_0xec73('0x17')](_0x10f003)[_0xec73('0x18')](_0x1e4869);}};}function respondWithFilteredResult(_0x3690c3,_0x2a3296){return function(_0x35be28){if(_0x35be28){var _0x2b4e70=typeof _0x2a3296['offset']===_0xec73('0x19')&&typeof _0x2a3296[_0xec73('0x1a')]===_0xec73('0x19');var _0x219119=_0x35be28[_0xec73('0x1b')];var _0x2d646e=_0x2b4e70?0x0:_0x2a3296['offset'];var _0x1bacbf=_0x2b4e70?_0x35be28[_0xec73('0x1b')]:_0x2a3296[_0xec73('0x1c')]+_0x2a3296['limit'];var _0x57ac66;if(_0x1bacbf>=_0x219119){_0x1bacbf=_0x219119;_0x57ac66=0xc8;}else{_0x57ac66=0xce;}_0x3690c3[_0xec73('0x17')](_0x57ac66);return _0x3690c3[_0xec73('0x1d')](_0xec73('0x1e'),_0x2d646e+'-'+_0x1bacbf+'/'+_0x219119)[_0xec73('0x18')](_0x35be28);}return null;};}function patchUpdates(_0x1169c4){return function(_0x5d4c7c){try{jsonpatch['apply'](_0x5d4c7c,_0x1169c4,!![]);}catch(_0x3eeaff){return BPromise[_0xec73('0x1f')](_0x3eeaff);}return _0x5d4c7c[_0xec73('0x20')]();};}function saveUpdates(_0x60bfec,_0x451715){return function(_0x4a862b){if(_0x4a862b){return _0x4a862b[_0xec73('0x21')](_0x60bfec)['then'](function(_0x3d58bc){return _0x3d58bc;});}return null;};}function removeEntity(_0x4f95d2,_0x4df08e){return function(_0x490ee2){if(_0x490ee2){return _0x490ee2[_0xec73('0x22')]()[_0xec73('0x23')](function(){var _0x2caf6b=_0x490ee2[_0xec73('0x24')]({'plain':!![]});var _0x3df864='ChanSpies';return db['UserProfileResource'][_0xec73('0x22')]({'where':{'type':_0x3df864,'resourceId':_0x2caf6b['id']}})[_0xec73('0x23')](function(){return _0x490ee2;});})['then'](function(){_0x4f95d2[_0xec73('0x17')](0xcc)[_0xec73('0x16')]();});}};}function handleEntityNotFound(_0x3bf259,_0x4dc430){return function(_0x23ff51){if(!_0x23ff51){_0x3bf259[_0xec73('0x15')](0x194);}return _0x23ff51;};}function handleError(_0x370e7a,_0x28361e){_0x28361e=_0x28361e||0x1f4;return function(_0x49a1da){logger['error'](_0x49a1da[_0xec73('0x25')]);if(_0x49a1da[_0xec73('0x26')]){delete _0x49a1da[_0xec73('0x26')];}_0x370e7a[_0xec73('0x17')](_0x28361e)['send'](_0x49a1da);};}exports[_0xec73('0x27')]=function(_0x269ca5,_0x24268b){var _0x90341f={},_0x3d46e9={},_0x3dffd0={'count':0x0,'rows':[]};var _0x47cb62=_[_0xec73('0x28')](db[_0xec73('0x29')][_0xec73('0x2a')],function(_0x4049ec){return{'name':_0x4049ec[_0xec73('0x2b')],'type':_0x4049ec[_0xec73('0x2c')]['key']};});_0x3d46e9[_0xec73('0x2d')]=_[_0xec73('0x28')](_0x47cb62,_0xec73('0x26'));_0x3d46e9[_0xec73('0x2e')]=_[_0xec73('0x2f')](_0x269ca5[_0xec73('0x2e')]);_0x3d46e9[_0xec73('0x30')]=_['intersection'](_0x3d46e9[_0xec73('0x2d')],_0x3d46e9['query']);_0x90341f[_0xec73('0x31')]=_[_0xec73('0x32')](_0x3d46e9[_0xec73('0x2d')],qs[_0xec73('0x33')](_0x269ca5[_0xec73('0x2e')][_0xec73('0x33')]));_0x90341f[_0xec73('0x31')]=_0x90341f[_0xec73('0x31')][_0xec73('0x34')]?_0x90341f['attributes']:_0x3d46e9['model'];if(!_0x269ca5[_0xec73('0x2e')][_0xec73('0x35')](_0xec73('0x36'))){_0x90341f[_0xec73('0x1a')]=qs[_0xec73('0x1a')](_0x269ca5[_0xec73('0x2e')][_0xec73('0x1a')]);_0x90341f[_0xec73('0x1c')]=qs['offset'](_0x269ca5[_0xec73('0x2e')][_0xec73('0x1c')]);}_0x90341f[_0xec73('0x37')]=qs['sort'](_0x269ca5['query']['sort']);_0x90341f[_0xec73('0x38')]=qs['filters'](_[_0xec73('0x39')](_0x269ca5['query'],_0x3d46e9['filters']),_0x47cb62);if(_0x269ca5[_0xec73('0x2e')]['filter']){_0x90341f[_0xec73('0x38')]=_['merge'](_0x90341f[_0xec73('0x38')],{'$or':_['map'](_0x47cb62,function(_0x3a971e){if(_0x3a971e[_0xec73('0x2c')]!=='VIRTUAL'){var _0x50623e={};_0x50623e[_0x3a971e['name']]={'$like':'%'+_0x269ca5[_0xec73('0x2e')]['filter']+'%'};return _0x50623e;}})});}_0x90341f=_[_0xec73('0x3a')]({},_0x90341f,_0x269ca5[_0xec73('0x3b')]);var _0x3c7ecd={'where':_0x90341f['where']};return db[_0xec73('0x29')][_0xec73('0x1b')](_0x3c7ecd)[_0xec73('0x23')](function(_0x1c5e2b){_0x3dffd0[_0xec73('0x1b')]=_0x1c5e2b;if(_0x269ca5['query']['includeAll']){_0x90341f[_0xec73('0x3c')]=[{'all':!![]}];}return db[_0xec73('0x29')][_0xec73('0x3d')](_0x90341f);})[_0xec73('0x23')](function(_0x1f6eeb){_0x3dffd0[_0xec73('0x3e')]=_0x1f6eeb;return _0x3dffd0;})[_0xec73('0x23')](respondWithFilteredResult(_0x24268b,_0x90341f))[_0xec73('0x3f')](handleError(_0x24268b,null));};exports[_0xec73('0x40')]=function(_0xe7862b,_0x27e8ac){var _0x1a43ef={'raw':![],'where':{'id':_0xe7862b[_0xec73('0x41')]['id']}},_0x474009={};_0x474009['model']=_['keys'](db[_0xec73('0x29')][_0xec73('0x2a')]);_0x474009[_0xec73('0x2e')]=_[_0xec73('0x2f')](_0xe7862b[_0xec73('0x2e')]);_0x474009[_0xec73('0x30')]=_[_0xec73('0x32')](_0x474009[_0xec73('0x2d')],_0x474009[_0xec73('0x2e')]);_0x1a43ef['attributes']=_['intersection'](_0x474009[_0xec73('0x2d')],qs['fields'](_0xe7862b[_0xec73('0x2e')]['fields']));_0x1a43ef[_0xec73('0x31')]=_0x1a43ef[_0xec73('0x31')][_0xec73('0x34')]?_0x1a43ef[_0xec73('0x31')]:_0x474009[_0xec73('0x2d')];if(_0xe7862b['query'][_0xec73('0x42')]){_0x1a43ef[_0xec73('0x3c')]=[{'all':!![]}];}_0x1a43ef=_['merge']({},_0x1a43ef,_0xe7862b[_0xec73('0x3b')]);return db[_0xec73('0x29')][_0xec73('0x43')](_0x1a43ef)[_0xec73('0x23')](handleEntityNotFound(_0x27e8ac,null))[_0xec73('0x23')](respondWithResult(_0x27e8ac,null))['catch'](handleError(_0x27e8ac,null));};exports['create']=function(_0x42e20f,_0x2a7bec){return db[_0xec73('0x29')]['create'](_0x42e20f[_0xec73('0x44')],{})['then'](function(_0x32af0e){var _0x990149=_0x42e20f[_0xec73('0x45')][_0xec73('0x24')]({'plain':!![]});if(!_0x990149)throw new Error(_0xec73('0x46'));if(_0x990149[_0xec73('0x47')]==='user'){var _0x5ab01e=_0x32af0e[_0xec73('0x24')]({'plain':!![]});var _0x56209d=_0xec73('0x48');return db[_0xec73('0x49')][_0xec73('0x43')]({'where':{'name':_0x56209d,'userProfileId':_0x990149['userProfileId']},'raw':!![]})[_0xec73('0x23')](function(_0xcb3229){if(_0xcb3229&&_0xcb3229[_0xec73('0x4a')]===0x0){return db[_0xec73('0x4b')][_0xec73('0x4c')]({'name':_0x5ab01e[_0xec73('0x26')],'resourceId':_0x5ab01e['id'],'type':_0xcb3229[_0xec73('0x26')],'sectionId':_0xcb3229['id']},{})[_0xec73('0x23')](function(){return _0x32af0e;});}else{return _0x32af0e;}})[_0xec73('0x3f')](function(_0x332ab5){logger[_0xec73('0x4d')](_0xec73('0x4e'),_0x332ab5);throw _0x332ab5;});}return _0x32af0e;})[_0xec73('0x23')](respondWithResult(_0x2a7bec,0xc9))[_0xec73('0x3f')](handleError(_0x2a7bec,null));};exports['update']=function(_0x3c76c5,_0x375e5d){if(_0x3c76c5[_0xec73('0x44')]['id']){delete _0x3c76c5[_0xec73('0x44')]['id'];}return db[_0xec73('0x29')][_0xec73('0x43')]({'where':{'id':_0x3c76c5['params']['id']}})[_0xec73('0x23')](handleEntityNotFound(_0x375e5d,null))[_0xec73('0x23')](saveUpdates(_0x3c76c5[_0xec73('0x44')],null))['then'](respondWithResult(_0x375e5d,null))[_0xec73('0x3f')](handleError(_0x375e5d,null));};exports[_0xec73('0x22')]=function(_0x631a54,_0x290ee8){return db[_0xec73('0x29')][_0xec73('0x43')]({'where':{'id':_0x631a54[_0xec73('0x41')]['id']}})[_0xec73('0x23')](handleEntityNotFound(_0x290ee8,null))['then'](removeEntity(_0x290ee8,null))[_0xec73('0x3f')](handleError(_0x290ee8,null));};
\ No newline at end of file
+var _0xc678=['type','key','query','keys','filters','intersection','attributes','fields','length','model','nolimit','order','sort','where','merge','map','VIRTUAL','filter','options','VoiceChanSpy','includeAll','rows','catch','show','params','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChanSpies','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','destroy','get','sendStatus','error','stack','name','send','index','rawAttributes','fieldName'];(function(_0x59b301,_0x2145e0){var _0xeb947e=function(_0x2d030d){while(--_0x2d030d){_0x59b301['push'](_0x59b301['shift']());}};_0xeb947e(++_0x2145e0);}(_0xc678,0x1b4));var _0x8c67=function(_0x510a58,_0x1fedc5){_0x510a58=_0x510a58-0x0;var _0x4b4fd8=_0xc678[_0x510a58];return _0x4b4fd8;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x8c67('0x0'));var jsonpatch=require(_0x8c67('0x1'));var rp=require(_0x8c67('0x2'));var moment=require('moment');var BPromise=require(_0x8c67('0x3'));var Mustache=require(_0x8c67('0x4'));var util=require(_0x8c67('0x5'));var path=require(_0x8c67('0x6'));var sox=require('sox');var csv=require(_0x8c67('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8c67('0x8'));var _=require(_0x8c67('0x9'));var squel=require('squel');var crypto=require(_0x8c67('0xa'));var jsforce=require(_0x8c67('0xb'));var deskjs=require(_0x8c67('0xc'));var toCsv=require(_0x8c67('0x7'));var querystring=require(_0x8c67('0xd'));var Papa=require('papaparse');var Redis=require(_0x8c67('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x8c67('0xf'));var as=require(_0x8c67('0x10'));var hardwareService=require(_0x8c67('0x11'));var logger=require('../../config/logger')(_0x8c67('0x12'));var utils=require(_0x8c67('0x13'));var config=require(_0x8c67('0x14'));var licenseUtil=require(_0x8c67('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2feeb5,_0x5822b4){_0x5822b4=_0x5822b4||0xcc;return function(_0x4da441){if(_0x4da441){return _0x2feeb5['sendStatus'](_0x5822b4);}return _0x2feeb5['status'](_0x5822b4)[_0x8c67('0x16')]();};}function respondWithResult(_0x576614,_0x2fa385){_0x2fa385=_0x2fa385||0xc8;return function(_0x5a3bd1){if(_0x5a3bd1){return _0x576614[_0x8c67('0x17')](_0x2fa385)[_0x8c67('0x18')](_0x5a3bd1);}};}function respondWithFilteredResult(_0x28fbb0,_0x3b20df){return function(_0x5b990d){if(_0x5b990d){var _0x3be259=typeof _0x3b20df[_0x8c67('0x19')]===_0x8c67('0x1a')&&typeof _0x3b20df[_0x8c67('0x1b')]==='undefined';var _0x4dbd5c=_0x5b990d[_0x8c67('0x1c')];var _0x3e9ab8=_0x3be259?0x0:_0x3b20df[_0x8c67('0x19')];var _0x544717=_0x3be259?_0x5b990d[_0x8c67('0x1c')]:_0x3b20df[_0x8c67('0x19')]+_0x3b20df['limit'];var _0xf40d1a;if(_0x544717>=_0x4dbd5c){_0x544717=_0x4dbd5c;_0xf40d1a=0xc8;}else{_0xf40d1a=0xce;}_0x28fbb0['status'](_0xf40d1a);return _0x28fbb0[_0x8c67('0x1d')](_0x8c67('0x1e'),_0x3e9ab8+'-'+_0x544717+'/'+_0x4dbd5c)[_0x8c67('0x18')](_0x5b990d);}return null;};}function patchUpdates(_0x2bd6b3){return function(_0x40c1dd){try{jsonpatch['apply'](_0x40c1dd,_0x2bd6b3,!![]);}catch(_0x387a69){return BPromise[_0x8c67('0x1f')](_0x387a69);}return _0x40c1dd['save']();};}function saveUpdates(_0x3a2c3b,_0x5486e8){return function(_0x122304){if(_0x122304){return _0x122304[_0x8c67('0x20')](_0x3a2c3b)[_0x8c67('0x21')](function(_0x3cc3ae){return _0x3cc3ae;});}return null;};}function removeEntity(_0x381942,_0x5dc805){return function(_0x2658a1){if(_0x2658a1){return _0x2658a1[_0x8c67('0x22')]()[_0x8c67('0x21')](function(){var _0xbb787e=_0x2658a1[_0x8c67('0x23')]({'plain':!![]});var _0xf32c63='ChanSpies';return db['UserProfileResource'][_0x8c67('0x22')]({'where':{'type':_0xf32c63,'resourceId':_0xbb787e['id']}})['then'](function(){return _0x2658a1;});})['then'](function(){_0x381942[_0x8c67('0x17')](0xcc)[_0x8c67('0x16')]();});}};}function handleEntityNotFound(_0x2f72ed,_0x506a77){return function(_0x3716e1){if(!_0x3716e1){_0x2f72ed[_0x8c67('0x24')](0x194);}return _0x3716e1;};}function handleError(_0x2e6747,_0x1c8181){_0x1c8181=_0x1c8181||0x1f4;return function(_0x4e87db){logger[_0x8c67('0x25')](_0x4e87db[_0x8c67('0x26')]);if(_0x4e87db[_0x8c67('0x27')]){delete _0x4e87db[_0x8c67('0x27')];}_0x2e6747[_0x8c67('0x17')](_0x1c8181)[_0x8c67('0x28')](_0x4e87db);};}exports[_0x8c67('0x29')]=function(_0x4d095d,_0x16f214){var _0x33f29a={},_0x603d29={},_0x3e428c={'count':0x0,'rows':[]};var _0x1d9bef=_['map'](db['VoiceChanSpy'][_0x8c67('0x2a')],function(_0x1469a3){return{'name':_0x1469a3[_0x8c67('0x2b')],'type':_0x1469a3[_0x8c67('0x2c')][_0x8c67('0x2d')]};});_0x603d29['model']=_['map'](_0x1d9bef,_0x8c67('0x27'));_0x603d29[_0x8c67('0x2e')]=_[_0x8c67('0x2f')](_0x4d095d['query']);_0x603d29[_0x8c67('0x30')]=_[_0x8c67('0x31')](_0x603d29['model'],_0x603d29['query']);_0x33f29a[_0x8c67('0x32')]=_['intersection'](_0x603d29['model'],qs[_0x8c67('0x33')](_0x4d095d[_0x8c67('0x2e')][_0x8c67('0x33')]));_0x33f29a[_0x8c67('0x32')]=_0x33f29a[_0x8c67('0x32')][_0x8c67('0x34')]?_0x33f29a[_0x8c67('0x32')]:_0x603d29[_0x8c67('0x35')];if(!_0x4d095d['query']['hasOwnProperty'](_0x8c67('0x36'))){_0x33f29a['limit']=qs[_0x8c67('0x1b')](_0x4d095d['query'][_0x8c67('0x1b')]);_0x33f29a[_0x8c67('0x19')]=qs[_0x8c67('0x19')](_0x4d095d[_0x8c67('0x2e')]['offset']);}_0x33f29a[_0x8c67('0x37')]=qs[_0x8c67('0x38')](_0x4d095d['query'][_0x8c67('0x38')]);_0x33f29a[_0x8c67('0x39')]=qs[_0x8c67('0x30')](_['pick'](_0x4d095d['query'],_0x603d29[_0x8c67('0x30')]),_0x1d9bef);if(_0x4d095d[_0x8c67('0x2e')]['filter']){_0x33f29a[_0x8c67('0x39')]=_[_0x8c67('0x3a')](_0x33f29a[_0x8c67('0x39')],{'$or':_[_0x8c67('0x3b')](_0x1d9bef,function(_0x4ca856){if(_0x4ca856['type']!==_0x8c67('0x3c')){var _0x14afcc={};_0x14afcc[_0x4ca856['name']]={'$like':'%'+_0x4d095d['query'][_0x8c67('0x3d')]+'%'};return _0x14afcc;}})});}_0x33f29a=_[_0x8c67('0x3a')]({},_0x33f29a,_0x4d095d[_0x8c67('0x3e')]);var _0xd6dc2f={'where':_0x33f29a[_0x8c67('0x39')]};return db[_0x8c67('0x3f')][_0x8c67('0x1c')](_0xd6dc2f)[_0x8c67('0x21')](function(_0x3fa0ae){_0x3e428c[_0x8c67('0x1c')]=_0x3fa0ae;if(_0x4d095d['query'][_0x8c67('0x40')]){_0x33f29a['include']=[{'all':!![]}];}return db['VoiceChanSpy']['findAll'](_0x33f29a);})[_0x8c67('0x21')](function(_0x4915cf){_0x3e428c[_0x8c67('0x41')]=_0x4915cf;return _0x3e428c;})[_0x8c67('0x21')](respondWithFilteredResult(_0x16f214,_0x33f29a))[_0x8c67('0x42')](handleError(_0x16f214,null));};exports[_0x8c67('0x43')]=function(_0x956de0,_0x5f207b){var _0x29b2db={'raw':![],'where':{'id':_0x956de0[_0x8c67('0x44')]['id']}},_0x27d655={};_0x27d655[_0x8c67('0x35')]=_['keys'](db[_0x8c67('0x3f')][_0x8c67('0x2a')]);_0x27d655[_0x8c67('0x2e')]=_[_0x8c67('0x2f')](_0x956de0[_0x8c67('0x2e')]);_0x27d655['filters']=_[_0x8c67('0x31')](_0x27d655[_0x8c67('0x35')],_0x27d655[_0x8c67('0x2e')]);_0x29b2db[_0x8c67('0x32')]=_['intersection'](_0x27d655[_0x8c67('0x35')],qs[_0x8c67('0x33')](_0x956de0[_0x8c67('0x2e')][_0x8c67('0x33')]));_0x29b2db[_0x8c67('0x32')]=_0x29b2db[_0x8c67('0x32')]['length']?_0x29b2db[_0x8c67('0x32')]:_0x27d655[_0x8c67('0x35')];if(_0x956de0['query']['includeAll']){_0x29b2db[_0x8c67('0x45')]=[{'all':!![]}];}_0x29b2db=_['merge']({},_0x29b2db,_0x956de0[_0x8c67('0x3e')]);return db['VoiceChanSpy'][_0x8c67('0x46')](_0x29b2db)[_0x8c67('0x21')](handleEntityNotFound(_0x5f207b,null))[_0x8c67('0x21')](respondWithResult(_0x5f207b,null))[_0x8c67('0x42')](handleError(_0x5f207b,null));};exports['create']=function(_0xc74be9,_0x304a6d){return db[_0x8c67('0x3f')][_0x8c67('0x47')](_0xc74be9[_0x8c67('0x48')],{})[_0x8c67('0x21')](function(_0x45bf57){var _0x23800b=_0xc74be9[_0x8c67('0x49')][_0x8c67('0x23')]({'plain':!![]});if(!_0x23800b)throw new Error(_0x8c67('0x4a'));if(_0x23800b[_0x8c67('0x4b')]===_0x8c67('0x49')){var _0x5147cf=_0x45bf57[_0x8c67('0x23')]({'plain':!![]});var _0x180f62=_0x8c67('0x4c');return db[_0x8c67('0x4d')][_0x8c67('0x46')]({'where':{'name':_0x180f62,'userProfileId':_0x23800b['userProfileId']},'raw':!![]})[_0x8c67('0x21')](function(_0x54adae){if(_0x54adae&&_0x54adae['autoAssociation']===0x0){return db[_0x8c67('0x4e')][_0x8c67('0x47')]({'name':_0x5147cf[_0x8c67('0x27')],'resourceId':_0x5147cf['id'],'type':_0x54adae['name'],'sectionId':_0x54adae['id']},{})[_0x8c67('0x21')](function(){return _0x45bf57;});}else{return _0x45bf57;}})['catch'](function(_0x50fb02){logger[_0x8c67('0x25')](_0x8c67('0x4f'),_0x50fb02);throw _0x50fb02;});}return _0x45bf57;})[_0x8c67('0x21')](respondWithResult(_0x304a6d,0xc9))[_0x8c67('0x42')](handleError(_0x304a6d,null));};exports[_0x8c67('0x20')]=function(_0x485ced,_0xc9ff67){if(_0x485ced[_0x8c67('0x48')]['id']){delete _0x485ced['body']['id'];}return db[_0x8c67('0x3f')][_0x8c67('0x46')]({'where':{'id':_0x485ced[_0x8c67('0x44')]['id']}})[_0x8c67('0x21')](handleEntityNotFound(_0xc9ff67,null))[_0x8c67('0x21')](saveUpdates(_0x485ced['body'],null))[_0x8c67('0x21')](respondWithResult(_0xc9ff67,null))[_0x8c67('0x42')](handleError(_0xc9ff67,null));};exports[_0x8c67('0x22')]=function(_0x5f829e,_0x57da09){return db['VoiceChanSpy']['find']({'where':{'id':_0x5f829e[_0x8c67('0x44')]['id']}})[_0x8c67('0x21')](handleEntityNotFound(_0x57da09,null))[_0x8c67('0x21')](removeEntity(_0x57da09,null))[_0x8c67('0x42')](handleError(_0x57da09,null));};
\ No newline at end of file
index 3c7a510..75d5754 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x323b=['bulkCreate','util','bluebird','./voiceChanSpy.attributes','context','format','%s%s','prefix','push','merge','CDR(type)=%s','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','record','StopMixMonitor','length','internal','then','catch','exports','define','VoiceChanSpy','VoiceExtension','destroy'];(function(_0x2d16d8,_0x295ba2){var _0x40e2bf=function(_0x45c1cf){while(--_0x45c1cf){_0x2d16d8['push'](_0x2d16d8['shift']());}};_0x40e2bf(++_0x295ba2);}(_0x323b,0x85));var _0xb323=function(_0xc92a6a,_0x4c6c8d){_0xc92a6a=_0xc92a6a-0x0;var _0xcc78e6=_0x323b[_0xc92a6a];return _0xcc78e6;};'use strict';var _=require('lodash');var util=require(_0xb323('0x0'));var BPromise=require(_0xb323('0x1'));var attributes=require(_0xb323('0x2'));var getUserApplications=function(_0xa54392,_0xfab57a,_0x3db122){var _0x3ba79d=0x1;var _0x4dc402=[];var _0x49cdf9={'context':_0xfab57a[_0xb323('0x3')]||'from-sip','exten':util[_0xb323('0x4')](_0xb323('0x5'),_0xa54392[_0xb323('0x6')],_0x3db122),'type':'system','isApp':![],'ChanSpyId':_0xa54392['id'],'UserId':_0xfab57a['id']};_0x4dc402[_0xb323('0x7')](_[_0xb323('0x8')]({'app':'Set','appdata':util[_0xb323('0x4')](_0xb323('0x9'),'chanspy'),'priority':_0x3ba79d++},_0x49cdf9));if(_0xa54392['record']){_0x4dc402[_0xb323('0x7')](_[_0xb323('0x8')]({'app':_0xb323('0xa'),'appdata':util['format'](_0xb323('0xb'),_0xa54392[_0xb323('0xc')]),'priority':_0x3ba79d++},_0x49cdf9));}if(_0xa54392[_0xb323('0xd')]){_0x4dc402[_0xb323('0x7')](_[_0xb323('0x8')]({'app':_0xb323('0xe'),'appdata':_0xa54392[_0xb323('0xf')],'priority':_0x3ba79d++},_0x49cdf9));}_0x4dc402[_0xb323('0x7')](_[_0xb323('0x8')]({'app':_0xb323('0x10'),'appdata':util['format'](_0xb323('0x11'),_0xfab57a[_0xb323('0x12')],_0xa54392[_0xb323('0x13')]?_0xa54392[_0xb323('0x13')][_0xb323('0x14')](''):''),'priority':_0x3ba79d++},_0x49cdf9));if(_0xa54392[_0xb323('0x15')]){_0x4dc402['push'](_[_0xb323('0x8')]({'app':_0xb323('0x16'),'priority':_0x3ba79d++},_0x49cdf9));}return _0x4dc402;};var getChanSpyApplications=function(_0x378cef,_0x3c104e){var _0x5db99c=[];for(var _0x46567d=0x0,_0x583fe2=0x1;_0x46567d<_0x3c104e[_0xb323('0x17')];_0x46567d++,_0x583fe2=0x1){_0x5db99c=_0x5db99c['concat'](getUserApplications(_0x378cef,_0x3c104e[_0x46567d],_0x3c104e[_0x46567d][_0xb323('0x18')]));if(_0x3c104e[_0x46567d]['internal']!=_0x3c104e[_0x46567d][_0xb323('0x12')]){_0x5db99c=_0x5db99c['concat'](getUserApplications(_0x378cef,_0x3c104e[_0x46567d],_0x3c104e[_0x46567d]['name']));}}return _0x5db99c;};var getChanSpyPromise=function(_0x6fb4e2,_0x3bedac){return new BPromise(function(_0x18bb73,_0x351a70){return _0x6fb4e2['User']['findAll']({'attributes':['id',_0xb323('0x12'),_0xb323('0x18')],'where':{'role':'agent','chanspy':!![]},'raw':!![]})[_0xb323('0x19')](function(_0xe10679){if(_0xe10679){return _0x18bb73(getChanSpyApplications(_0x3bedac,_0xe10679));}return _0x18bb73([]);})[_0xb323('0x1a')](function(_0xa80c1b){_0x351a70(_0xa80c1b);});});};module[_0xb323('0x1b')]=function(_0x3e4c84,_0x12e18a){var _0x148e6e=_0x3e4c84['models'];return _0x3e4c84[_0xb323('0x1c')](_0xb323('0x1d'),attributes,{'tableName':'voice_chanspy','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x586005,_0x24f923,_0x5dc5cf){return getChanSpyPromise(_0x148e6e,_0x586005)[_0xb323('0x19')](function(_0x32902){if(_0x32902&&_0x32902[_0xb323('0x17')]){return _0x148e6e[_0xb323('0x1e')]['bulkCreate'](_0x32902);}})['then'](function(){_0x5dc5cf();})[_0xb323('0x1a')](function(_0x128583){_0x5dc5cf(_0x128583);});},'afterUpdate':function(_0xd18ecf,_0x18681a,_0x2c49d8){return _0x148e6e[_0xb323('0x1e')][_0xb323('0x1f')]({'where':{'ChanSpyId':_0xd18ecf['id']}})[_0xb323('0x19')](function(){return getChanSpyPromise(_0x148e6e,_0xd18ecf);})[_0xb323('0x19')](function(_0x37e926){if(_0x37e926&&_0x37e926[_0xb323('0x17')]){return _0x148e6e['VoiceExtension'][_0xb323('0x20')](_0x37e926);}})[_0xb323('0x19')](function(){_0x2c49d8();})[_0xb323('0x1a')](function(_0x574024){_0x2c49d8(_0x574024);});},'afterDestroy':function(_0x353953,_0x3ef363,_0x310e91){return _0x148e6e[_0xb323('0x1e')]['destroy']({'where':{'ChanSpyId':_0x353953['id']}})[_0xb323('0x19')](function(){_0x310e91();})[_0xb323('0x1a')](function(_0x5cf415){_0x310e91(_0x5cf415);});}}});};
\ No newline at end of file
+var _0x74e6=['SIP/%s,%s','name','options','StopMixMonitor','length','concat','internal','User','findAll','agent','then','exports','models','define','VoiceChanSpy','voice_chanspy','VoiceExtension','catch','destroy','lodash','bluebird','./voiceChanSpy.attributes','context','prefix','system','push','merge','Set','format','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','password'];(function(_0x28ef4e,_0x202aa3){var _0x1aa097=function(_0x38ca63){while(--_0x38ca63){_0x28ef4e['push'](_0x28ef4e['shift']());}};_0x1aa097(++_0x202aa3);}(_0x74e6,0xcc));var _0x674e=function(_0xd7aa97,_0x172edc){_0xd7aa97=_0xd7aa97-0x0;var _0x93dfa5=_0x74e6[_0xd7aa97];return _0x93dfa5;};'use strict';var _=require(_0x674e('0x0'));var util=require('util');var BPromise=require(_0x674e('0x1'));var attributes=require(_0x674e('0x2'));var getUserApplications=function(_0x454676,_0x51860d,_0x13dc69){var _0x5c3ae9=0x1;var _0x123e68=[];var _0x4c8595={'context':_0x51860d[_0x674e('0x3')]||'from-sip','exten':util['format']('%s%s',_0x454676[_0x674e('0x4')],_0x13dc69),'type':_0x674e('0x5'),'isApp':![],'ChanSpyId':_0x454676['id'],'UserId':_0x51860d['id']};_0x123e68[_0x674e('0x6')](_[_0x674e('0x7')]({'app':_0x674e('0x8'),'appdata':util[_0x674e('0x9')](_0x674e('0xa'),_0x674e('0xb')),'priority':_0x5c3ae9++},_0x4c8595));if(_0x454676[_0x674e('0xc')]){_0x123e68['push'](_['merge']({'app':_0x674e('0xd'),'appdata':util[_0x674e('0x9')](_0x674e('0xe'),_0x454676[_0x674e('0xf')]),'priority':_0x5c3ae9++},_0x4c8595));}if(_0x454676[_0x674e('0x10')]){_0x123e68['push'](_[_0x674e('0x7')]({'app':'Authenticate','appdata':_0x454676[_0x674e('0x11')],'priority':_0x5c3ae9++},_0x4c8595));}_0x123e68[_0x674e('0x6')](_['merge']({'app':'ChanSpy','appdata':util[_0x674e('0x9')](_0x674e('0x12'),_0x51860d[_0x674e('0x13')],_0x454676[_0x674e('0x14')]?_0x454676['options']['join'](''):''),'priority':_0x5c3ae9++},_0x4c8595));if(_0x454676[_0x674e('0xc')]){_0x123e68[_0x674e('0x6')](_[_0x674e('0x7')]({'app':_0x674e('0x15'),'priority':_0x5c3ae9++},_0x4c8595));}return _0x123e68;};var getChanSpyApplications=function(_0x1b35aa,_0x3d460c){var _0x272035=[];for(var _0x14d094=0x0,_0xd1e3bb=0x1;_0x14d094<_0x3d460c[_0x674e('0x16')];_0x14d094++,_0xd1e3bb=0x1){_0x272035=_0x272035[_0x674e('0x17')](getUserApplications(_0x1b35aa,_0x3d460c[_0x14d094],_0x3d460c[_0x14d094][_0x674e('0x18')]));if(_0x3d460c[_0x14d094][_0x674e('0x18')]!=_0x3d460c[_0x14d094][_0x674e('0x13')]){_0x272035=_0x272035[_0x674e('0x17')](getUserApplications(_0x1b35aa,_0x3d460c[_0x14d094],_0x3d460c[_0x14d094][_0x674e('0x13')]));}}return _0x272035;};var getChanSpyPromise=function(_0x13490b,_0x5b1bad){return new BPromise(function(_0x47712d,_0x4fd729){return _0x13490b[_0x674e('0x19')][_0x674e('0x1a')]({'attributes':['id','name',_0x674e('0x18')],'where':{'role':_0x674e('0x1b'),'chanspy':!![]},'raw':!![]})[_0x674e('0x1c')](function(_0x2bcec9){if(_0x2bcec9){return _0x47712d(getChanSpyApplications(_0x5b1bad,_0x2bcec9));}return _0x47712d([]);})['catch'](function(_0x35b668){_0x4fd729(_0x35b668);});});};module[_0x674e('0x1d')]=function(_0x279cc8,_0x50bb68){var _0x2b2baa=_0x279cc8[_0x674e('0x1e')];return _0x279cc8[_0x674e('0x1f')](_0x674e('0x20'),attributes,{'tableName':_0x674e('0x21'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0xb47f37,_0x57b8ce,_0x29656d){return getChanSpyPromise(_0x2b2baa,_0xb47f37)[_0x674e('0x1c')](function(_0x312dd1){if(_0x312dd1&&_0x312dd1['length']){return _0x2b2baa[_0x674e('0x22')]['bulkCreate'](_0x312dd1);}})[_0x674e('0x1c')](function(){_0x29656d();})[_0x674e('0x23')](function(_0x3ed281){_0x29656d(_0x3ed281);});},'afterUpdate':function(_0x19dcf2,_0x300080,_0x4c5e82){return _0x2b2baa[_0x674e('0x22')][_0x674e('0x24')]({'where':{'ChanSpyId':_0x19dcf2['id']}})[_0x674e('0x1c')](function(){return getChanSpyPromise(_0x2b2baa,_0x19dcf2);})[_0x674e('0x1c')](function(_0xa540a2){if(_0xa540a2&&_0xa540a2['length']){return _0x2b2baa[_0x674e('0x22')]['bulkCreate'](_0xa540a2);}})[_0x674e('0x1c')](function(){_0x4c5e82();})[_0x674e('0x23')](function(_0x771edd){_0x4c5e82(_0x771edd);});},'afterDestroy':function(_0x2b09a9,_0xb301df,_0x1277e3){return _0x2b2baa[_0x674e('0x22')]['destroy']({'where':{'ChanSpyId':_0x2b09a9['id']}})[_0x674e('0x1c')](function(){_0x1277e3();})[_0x674e('0x23')](function(_0x1e238a){_0x1277e3(_0x1e238a);});}}});};
\ No newline at end of file
index 47e9964..c1a8fce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe57=['error','code','VoiceChanSpy,\x20%s,\x20%s','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','request\x20sent','debug'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xfe57,0x195));var _0x7fe5=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0xfe57[_0x18ab2a];return _0x16dcee;};'use strict';var _=require(_0x7fe5('0x0'));var util=require(_0x7fe5('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x7fe5('0x2'));var fs=require('fs');var Redis=require(_0x7fe5('0x3'));var db=require(_0x7fe5('0x4'))['db'];var utils=require(_0x7fe5('0x5'));var logger=require(_0x7fe5('0x6'))(_0x7fe5('0x7'));var config=require(_0x7fe5('0x8'));var jayson=require(_0x7fe5('0x9'));var client=jayson[_0x7fe5('0xa')][_0x7fe5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xd6146b,_0x2632de,_0x36ff81){return new BPromise(function(_0x4ab081,_0x13b391){return client['request'](_0xd6146b,_0x36ff81)[_0x7fe5('0xc')](function(_0x2ae7f3){logger['info']('VoiceChanSpy,\x20%s,\x20%s',_0x2632de,_0x7fe5('0xd'));logger[_0x7fe5('0xe')]('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x2632de,_0x7fe5('0xd'),JSON['stringify'](_0x2ae7f3));if(_0x2ae7f3['error']){if(_0x2ae7f3[_0x7fe5('0xf')][_0x7fe5('0x10')]===0x1f4){logger[_0x7fe5('0xf')](_0x7fe5('0x11'),_0x2632de,_0x2ae7f3['error'][_0x7fe5('0x12')]);return _0x13b391(_0x2ae7f3[_0x7fe5('0xf')]['message']);}logger[_0x7fe5('0xf')]('VoiceChanSpy,\x20%s,\x20%s',_0x2632de,_0x2ae7f3[_0x7fe5('0xf')][_0x7fe5('0x12')]);return _0x4ab081(_0x2ae7f3['error'][_0x7fe5('0x12')]);}else{logger['info'](_0x7fe5('0x11'),_0x2632de,_0x7fe5('0xd'));_0x4ab081(_0x2ae7f3[_0x7fe5('0x13')][_0x7fe5('0x12')]);}})[_0x7fe5('0x14')](function(_0x104bc8){logger['error'](_0x7fe5('0x11'),_0x2632de,_0x104bc8);_0x13b391(_0x104bc8);});});}
\ No newline at end of file
+var _0x4522=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','stringify','error','code','VoiceChanSpy,\x20%s,\x20%s','message','result','catch','moment','bluebird','randomstring','../../mysqldb'];(function(_0x4f1a71,_0x24af44){var _0x229492=function(_0x579368){while(--_0x579368){_0x4f1a71['push'](_0x4f1a71['shift']());}};_0x229492(++_0x24af44);}(_0x4522,0x1a0));var _0x2452=function(_0x214bc8,_0x1a0646){_0x214bc8=_0x214bc8-0x0;var _0x1bbb3d=_0x4522[_0x214bc8];return _0x1bbb3d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x2452('0x0'));var BPromise=require(_0x2452('0x1'));var rs=require(_0x2452('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2452('0x3'))['db'];var utils=require(_0x2452('0x4'));var logger=require(_0x2452('0x5'))(_0x2452('0x6'));var config=require(_0x2452('0x7'));var jayson=require(_0x2452('0x8'));var client=jayson[_0x2452('0x9')][_0x2452('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2f0139,_0x149807,_0x3bc193){return new BPromise(function(_0x33b935,_0x24073f){return client[_0x2452('0xb')](_0x2f0139,_0x3bc193)[_0x2452('0xc')](function(_0x2995b5){logger['info']('VoiceChanSpy,\x20%s,\x20%s',_0x149807,_0x2452('0xd'));logger['debug']('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x149807,_0x2452('0xd'),JSON[_0x2452('0xe')](_0x2995b5));if(_0x2995b5[_0x2452('0xf')]){if(_0x2995b5[_0x2452('0xf')][_0x2452('0x10')]===0x1f4){logger[_0x2452('0xf')](_0x2452('0x11'),_0x149807,_0x2995b5[_0x2452('0xf')]['message']);return _0x24073f(_0x2995b5['error']['message']);}logger[_0x2452('0xf')]('VoiceChanSpy,\x20%s,\x20%s',_0x149807,_0x2995b5[_0x2452('0xf')]['message']);return _0x33b935(_0x2995b5[_0x2452('0xf')][_0x2452('0x12')]);}else{logger['info'](_0x2452('0x11'),_0x149807,'request\x20sent');_0x33b935(_0x2995b5[_0x2452('0x13')][_0x2452('0x12')]);}})[_0x2452('0x14')](function(_0xdede20){logger['error'](_0x2452('0x11'),_0x149807,_0xdede20);_0x24073f(_0xdede20);});});}
\ No newline at end of file
index 5ccc2b9..0b3102e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd48e=['isAuthenticated','show','post','/:id','update','delete','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceContext.controller','get'];(function(_0x50e04c,_0xa533f5){var _0x5288ed=function(_0x392721){while(--_0x392721){_0x50e04c['push'](_0x50e04c['shift']());}};_0x5288ed(++_0xa533f5);}(_0xd48e,0x187));var _0xed48=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0xd48e[_0x565c49];return _0x20ca34;};'use strict';var multer=require('multer');var util=require(_0xed48('0x0'));var path=require(_0xed48('0x1'));var timeout=require('connect-timeout');var express=require(_0xed48('0x2'));var router=express[_0xed48('0x3')]();var fs_extra=require(_0xed48('0x4'));var auth=require(_0xed48('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xed48('0x6'));var controller=require(_0xed48('0x7'));router[_0xed48('0x8')]('/',auth[_0xed48('0x9')](),controller['index']);router[_0xed48('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xed48('0xa')]);router[_0xed48('0xb')]('/',auth[_0xed48('0x9')](),controller['create']);router['put'](_0xed48('0xc'),auth[_0xed48('0x9')](),controller[_0xed48('0xd')]);router[_0xed48('0xe')]('/:id',auth[_0xed48('0x9')](),controller['destroy']);module[_0xed48('0xf')]=router;
\ No newline at end of file
+var _0x4966=['create','put','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceContext.controller','index','get','/:id','isAuthenticated','show','post'];(function(_0x3da4a7,_0xfa2f0a){var _0x17163b=function(_0xdeb801){while(--_0xdeb801){_0x3da4a7['push'](_0x3da4a7['shift']());}};_0x17163b(++_0xfa2f0a);}(_0x4966,0x146));var _0x6496=function(_0x4a0b21,_0x1d310d){_0x4a0b21=_0x4a0b21-0x0;var _0xbc48b8=_0x4966[_0x4a0b21];return _0xbc48b8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6496('0x0'));var timeout=require(_0x6496('0x1'));var express=require(_0x6496('0x2'));var router=express[_0x6496('0x3')]();var fs_extra=require(_0x6496('0x4'));var auth=require(_0x6496('0x5'));var interaction=require(_0x6496('0x6'));var config=require('../../config/environment');var controller=require(_0x6496('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x6496('0x8')]);router[_0x6496('0x9')](_0x6496('0xa'),auth[_0x6496('0xb')](),controller[_0x6496('0xc')]);router[_0x6496('0xd')]('/',auth[_0x6496('0xb')](),controller[_0x6496('0xe')]);router[_0x6496('0xf')](_0x6496('0xa'),auth[_0x6496('0xb')](),controller[_0x6496('0x10')]);router[_0x6496('0x11')](_0x6496('0xa'),auth[_0x6496('0xb')](),controller[_0x6496('0x12')]);module[_0x6496('0x13')]=router;
\ No newline at end of file
index 7560701..092c949 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e1e=['STRING','name','BOOLEAN','exports'];(function(_0xf4b055,_0x54a88e){var _0x40f460=function(_0x2f787d){while(--_0x2f787d){_0xf4b055['push'](_0xf4b055['shift']());}};_0x40f460(++_0x54a88e);}(_0x2e1e,0x137));var _0xe2e1=function(_0x506d2f,_0x5ab76e){_0x506d2f=_0x506d2f-0x0;var _0x101255=_0x2e1e[_0x506d2f];return _0x101255;};'use strict';var Sequelize=require('sequelize');module[_0xe2e1('0x0')]={'name':{'type':Sequelize[_0xe2e1('0x1')],'unique':_0xe2e1('0x2')},'description':{'type':Sequelize[_0xe2e1('0x1')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xe2e1('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xbf83=['STRING','sequelize','exports'];(function(_0x2a3ebd,_0x282528){var _0x836f23=function(_0xcf55a6){while(--_0xcf55a6){_0x2a3ebd['push'](_0x2a3ebd['shift']());}};_0x836f23(++_0x282528);}(_0xbf83,0xf7));var _0x3bf8=function(_0x2face0,_0x534e62){_0x2face0=_0x2face0-0x0;var _0x26e8c5=_0xbf83[_0x2face0];return _0x26e8c5;};'use strict';var Sequelize=require(_0x3bf8('0x0'));module[_0x3bf8('0x1')]={'name':{'type':Sequelize[_0x3bf8('0x2')],'unique':'name'},'description':{'type':Sequelize[_0x3bf8('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
index 2860069..ddd1589 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa064=['../../config/license/hardware','api','../../config/environment','../../mysqldb','jayson/promise','http','request','then','info','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','error','code','VoiceContext,\x20%s,\x20%s','message','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','destroy','get','Contexts','UserProfileResource','stack','name','index','VoiceContext','rawAttributes','fieldName','key','model','keys','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','map','type','VIRTUAL','merge','includeAll','findAll','rows','catch','show','params','include','create','readFileSync','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','update','find','join','root','chan_sip.so','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x580647,_0x43d2c3){var _0x5f0792=function(_0x386cef){while(--_0x386cef){_0x580647['push'](_0x580647['shift']());}};_0x5f0792(++_0x43d2c3);}(_0xa064,0xb9));var _0x4a06=function(_0x3d075a,_0x507f04){_0x3d075a=_0x3d075a-0x0;var _0x418be1=_0xa064[_0x3d075a];return _0x418be1;};'use strict';var emlformat=require(_0x4a06('0x0'));var rimraf=require(_0x4a06('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4a06('0x2'));var rp=require(_0x4a06('0x3'));var moment=require(_0x4a06('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4a06('0x5'));var util=require('util');var path=require(_0x4a06('0x6'));var sox=require(_0x4a06('0x7'));var csv=require(_0x4a06('0x8'));var ejs=require(_0x4a06('0x9'));var fs=require('fs');var fs_extra=require(_0x4a06('0xa'));var _=require(_0x4a06('0xb'));var squel=require(_0x4a06('0xc'));var crypto=require(_0x4a06('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4a06('0x8'));var querystring=require(_0x4a06('0xe'));var Papa=require(_0x4a06('0xf'));var Redis=require('ioredis');var authService=require(_0x4a06('0x10'));var qs=require(_0x4a06('0x11'));var as=require(_0x4a06('0x12'));var hardwareService=require(_0x4a06('0x13'));var logger=require('../../config/logger')(_0x4a06('0x14'));var utils=require('../../config/utils');var config=require(_0x4a06('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x4a06('0x16'))['db'];var jayson=require(_0x4a06('0x17'));var client=jayson['client'][_0x4a06('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x4cab2a,_0x289f9d,_0x11df95,_0x2501a5){return new BPromise(function(_0x10c5ac,_0x45e695){var _0x439e08=_0x2501a5||client;return _0x439e08[_0x4a06('0x19')](_0x4cab2a,_0x11df95)[_0x4a06('0x1a')](function(_0x2bea2c){logger[_0x4a06('0x1b')]('VoiceContext,\x20%s,\x20%s',_0x289f9d,_0x4a06('0x1c'));logger[_0x4a06('0x1d')](_0x4a06('0x1e'),_0x289f9d,'request\x20sent',JSON['stringify'](_0x2bea2c));if(_0x2bea2c[_0x4a06('0x1f')]){if(_0x2bea2c[_0x4a06('0x1f')][_0x4a06('0x20')]===0x1f4){logger['error'](_0x4a06('0x21'),_0x289f9d,_0x2bea2c[_0x4a06('0x1f')][_0x4a06('0x22')]);return _0x45e695(_0x2bea2c[_0x4a06('0x1f')]['message']);}logger['error'](_0x4a06('0x21'),_0x289f9d,_0x2bea2c[_0x4a06('0x1f')][_0x4a06('0x22')]);return _0x10c5ac(_0x2bea2c[_0x4a06('0x1f')][_0x4a06('0x22')]);}else{logger[_0x4a06('0x1b')](_0x4a06('0x21'),_0x289f9d,_0x4a06('0x1c'));_0x10c5ac(_0x2bea2c['result']['message']);}})['catch'](function(_0x58ad82){logger[_0x4a06('0x1f')](_0x4a06('0x21'),_0x289f9d,_0x58ad82);_0x45e695(_0x58ad82);});});}function respondWithStatusCode(_0x44a036,_0x1ac5a6){_0x1ac5a6=_0x1ac5a6||0xcc;return function(_0x3d7e04){if(_0x3d7e04){return _0x44a036[_0x4a06('0x23')](_0x1ac5a6);}return _0x44a036[_0x4a06('0x24')](_0x1ac5a6)[_0x4a06('0x25')]();};}function respondWithResult(_0x45e1f0,_0x213132){_0x213132=_0x213132||0xc8;return function(_0x5b6d53){if(_0x5b6d53){return _0x45e1f0[_0x4a06('0x24')](_0x213132)[_0x4a06('0x26')](_0x5b6d53);}};}function respondWithFilteredResult(_0x4b750a,_0x2dd26d){return function(_0x2aa2ed){if(_0x2aa2ed){var _0x5b4fc0=typeof _0x2dd26d[_0x4a06('0x27')]===_0x4a06('0x28')&&typeof _0x2dd26d[_0x4a06('0x29')]===_0x4a06('0x28');var _0x54b9bd=_0x2aa2ed[_0x4a06('0x2a')];var _0x484448=_0x5b4fc0?0x0:_0x2dd26d[_0x4a06('0x27')];var _0x5d7b30=_0x5b4fc0?_0x2aa2ed[_0x4a06('0x2a')]:_0x2dd26d[_0x4a06('0x27')]+_0x2dd26d[_0x4a06('0x29')];var _0xac6660;if(_0x5d7b30>=_0x54b9bd){_0x5d7b30=_0x54b9bd;_0xac6660=0xc8;}else{_0xac6660=0xce;}_0x4b750a[_0x4a06('0x24')](_0xac6660);return _0x4b750a[_0x4a06('0x2b')](_0x4a06('0x2c'),_0x484448+'-'+_0x5d7b30+'/'+_0x54b9bd)[_0x4a06('0x26')](_0x2aa2ed);}return null;};}function patchUpdates(_0x3a841a){return function(_0x4707c1){try{jsonpatch['apply'](_0x4707c1,_0x3a841a,!![]);}catch(_0x5b5039){return BPromise[_0x4a06('0x2d')](_0x5b5039);}return _0x4707c1[_0x4a06('0x2e')]();};}function saveUpdates(_0x1b8c14,_0x13d163){return function(_0x5d5c1f){if(_0x5d5c1f){return _0x5d5c1f['update'](_0x1b8c14)[_0x4a06('0x1a')](function(_0x5a7880){return _0x5a7880;});}return null;};}function removeEntity(_0x20eef9,_0x250cfa){return function(_0x12e768){if(_0x12e768){return _0x12e768[_0x4a06('0x2f')]()['then'](function(){var _0x1c7cf6=_0x12e768[_0x4a06('0x30')]({'plain':!![]});var _0x56fda8=_0x4a06('0x31');return db[_0x4a06('0x32')][_0x4a06('0x2f')]({'where':{'type':_0x56fda8,'resourceId':_0x1c7cf6['id']}})[_0x4a06('0x1a')](function(){return _0x12e768;});})['then'](function(){_0x20eef9[_0x4a06('0x24')](0xcc)[_0x4a06('0x25')]();});}};}function handleEntityNotFound(_0x512fd3,_0x14af27){return function(_0x4a0397){if(!_0x4a0397){_0x512fd3[_0x4a06('0x23')](0x194);}return _0x4a0397;};}function handleError(_0x5bb73a,_0x1bdc4b){_0x1bdc4b=_0x1bdc4b||0x1f4;return function(_0x2604de){logger[_0x4a06('0x1f')](_0x2604de[_0x4a06('0x33')]);if(_0x2604de[_0x4a06('0x34')]){delete _0x2604de['name'];}_0x5bb73a[_0x4a06('0x24')](_0x1bdc4b)['send'](_0x2604de);};}exports[_0x4a06('0x35')]=function(_0x1c6b4b,_0x15da5e){var _0x2af197={},_0x4bd18f={},_0x279e2e={'count':0x0,'rows':[]};var _0x287f3f=_['map'](db[_0x4a06('0x36')][_0x4a06('0x37')],function(_0x4a2157){return{'name':_0x4a2157[_0x4a06('0x38')],'type':_0x4a2157['type'][_0x4a06('0x39')]};});_0x4bd18f[_0x4a06('0x3a')]=_['map'](_0x287f3f,'name');_0x4bd18f['query']=_[_0x4a06('0x3b')](_0x1c6b4b['query']);_0x4bd18f['filters']=_[_0x4a06('0x3c')](_0x4bd18f['model'],_0x4bd18f[_0x4a06('0x3d')]);_0x2af197['attributes']=_[_0x4a06('0x3c')](_0x4bd18f[_0x4a06('0x3a')],qs[_0x4a06('0x3e')](_0x1c6b4b[_0x4a06('0x3d')][_0x4a06('0x3e')]));_0x2af197[_0x4a06('0x3f')]=_0x2af197['attributes'][_0x4a06('0x40')]?_0x2af197[_0x4a06('0x3f')]:_0x4bd18f[_0x4a06('0x3a')];if(!_0x1c6b4b['query'][_0x4a06('0x41')](_0x4a06('0x42'))){_0x2af197['limit']=qs[_0x4a06('0x29')](_0x1c6b4b[_0x4a06('0x3d')][_0x4a06('0x29')]);_0x2af197[_0x4a06('0x27')]=qs[_0x4a06('0x27')](_0x1c6b4b[_0x4a06('0x3d')][_0x4a06('0x27')]);}_0x2af197[_0x4a06('0x43')]=qs[_0x4a06('0x44')](_0x1c6b4b[_0x4a06('0x3d')][_0x4a06('0x44')]);_0x2af197[_0x4a06('0x45')]=qs['filters'](_[_0x4a06('0x46')](_0x1c6b4b['query'],_0x4bd18f[_0x4a06('0x47')]),_0x287f3f);if(_0x1c6b4b[_0x4a06('0x3d')][_0x4a06('0x48')]){_0x2af197[_0x4a06('0x45')]=_['merge'](_0x2af197[_0x4a06('0x45')],{'$or':_[_0x4a06('0x49')](_0x287f3f,function(_0x5af7ea){if(_0x5af7ea[_0x4a06('0x4a')]!==_0x4a06('0x4b')){var _0x5f4ac7={};_0x5f4ac7[_0x5af7ea[_0x4a06('0x34')]]={'$like':'%'+_0x1c6b4b[_0x4a06('0x3d')][_0x4a06('0x48')]+'%'};return _0x5f4ac7;}})});}_0x2af197=_[_0x4a06('0x4c')]({},_0x2af197,_0x1c6b4b['options']);var _0x5db6f0={'where':_0x2af197[_0x4a06('0x45')]};return db[_0x4a06('0x36')][_0x4a06('0x2a')](_0x5db6f0)['then'](function(_0xfcb72b){_0x279e2e[_0x4a06('0x2a')]=_0xfcb72b;if(_0x1c6b4b[_0x4a06('0x3d')][_0x4a06('0x4d')]){_0x2af197['include']=[{'all':!![]}];}return db[_0x4a06('0x36')][_0x4a06('0x4e')](_0x2af197);})[_0x4a06('0x1a')](function(_0x1e2bf9){_0x279e2e[_0x4a06('0x4f')]=_0x1e2bf9;return _0x279e2e;})[_0x4a06('0x1a')](respondWithFilteredResult(_0x15da5e,_0x2af197))[_0x4a06('0x50')](handleError(_0x15da5e,null));};exports[_0x4a06('0x51')]=function(_0xb5b82,_0x32feb1){var _0x2bd1fd={'raw':![],'where':{'id':_0xb5b82[_0x4a06('0x52')]['id']}},_0x5e764e={};_0x5e764e[_0x4a06('0x3a')]=_[_0x4a06('0x3b')](db[_0x4a06('0x36')]['rawAttributes']);_0x5e764e['query']=_[_0x4a06('0x3b')](_0xb5b82[_0x4a06('0x3d')]);_0x5e764e['filters']=_[_0x4a06('0x3c')](_0x5e764e[_0x4a06('0x3a')],_0x5e764e[_0x4a06('0x3d')]);_0x2bd1fd[_0x4a06('0x3f')]=_[_0x4a06('0x3c')](_0x5e764e[_0x4a06('0x3a')],qs[_0x4a06('0x3e')](_0xb5b82[_0x4a06('0x3d')][_0x4a06('0x3e')]));_0x2bd1fd[_0x4a06('0x3f')]=_0x2bd1fd[_0x4a06('0x3f')]['length']?_0x2bd1fd['attributes']:_0x5e764e[_0x4a06('0x3a')];if(_0xb5b82[_0x4a06('0x3d')]['includeAll']){_0x2bd1fd[_0x4a06('0x53')]=[{'all':!![]}];}_0x2bd1fd=_[_0x4a06('0x4c')]({},_0x2bd1fd,_0xb5b82['options']);return db['VoiceContext']['find'](_0x2bd1fd)[_0x4a06('0x1a')](handleEntityNotFound(_0x32feb1,null))[_0x4a06('0x1a')](respondWithResult(_0x32feb1,null))[_0x4a06('0x50')](handleError(_0x32feb1,null));};exports['create']=function(_0x387e34,_0x10fff2,_0x4bdfec){var _0xce55aa;return db[_0x4a06('0x36')][_0x4a06('0x54')](_0x387e34['body'],{'raw':!![]})['then'](function(_0x45f918){_0xce55aa=_0x45f918;return db[_0x4a06('0x36')][_0x4a06('0x4e')]({'raw':!![]});})[_0x4a06('0x1a')](function(_0x565e90){var _0x3b28d6=fs[_0x4a06('0x55')](path['join'](config['root'],_0x4a06('0x56')),_0x4a06('0x57'));var _0x43cffc=ejs[_0x4a06('0x58')](_0x3b28d6,{'contexts':_0x565e90||[]});fs[_0x4a06('0x59')](_0x4a06('0x5a'),_0x43cffc);})[_0x4a06('0x1a')](function(){return respondWithRpcPromise(_0x4a06('0x5b'),_0x4a06('0x54'),{'module':'chan_sip.so'});})[_0x4a06('0x1a')](function(){var _0x5f2e0b=_0x387e34[_0x4a06('0x5c')][_0x4a06('0x30')]({'plain':!![]});if(!_0x5f2e0b)throw new Error(_0x4a06('0x5d'));if(_0x5f2e0b[_0x4a06('0x5e')]===_0x4a06('0x5c')){var _0x58157f=_0xce55aa['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0x4a06('0x31'),'userProfileId':_0x5f2e0b[_0x4a06('0x5f')]},'raw':!![]})[_0x4a06('0x1a')](function(_0x4a732d){if(_0x4a732d&&_0x4a732d[_0x4a06('0x60')]===0x0){return db[_0x4a06('0x32')][_0x4a06('0x54')]({'name':_0x58157f[_0x4a06('0x34')],'resourceId':_0x58157f['id'],'type':_0x4a732d[_0x4a06('0x34')],'sectionId':_0x4a732d['id']},{})[_0x4a06('0x1a')](function(){return _0xce55aa;});}else{return _0xce55aa;}})['catch'](function(_0x4dacfd){logger[_0x4a06('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4dacfd);throw _0x4dacfd;});}return _0xce55aa;})[_0x4a06('0x1a')](respondWithResult(_0x10fff2,0xc9))[_0x4a06('0x50')](handleError(_0x10fff2,null));};exports[_0x4a06('0x61')]=function(_0x46a374,_0x119a99,_0x4080a4){var _0xe0c636;return db['VoiceContext'][_0x4a06('0x62')]({'where':{'id':_0x46a374['params']['id']}})[_0x4a06('0x1a')](handleEntityNotFound(_0x119a99,null))[_0x4a06('0x1a')](saveUpdates(_0x46a374['body'],null))[_0x4a06('0x1a')](function(_0xfc0d54){if(_0xfc0d54){_0xe0c636=_0xfc0d54;return db[_0x4a06('0x36')][_0x4a06('0x4e')]({'raw':!![]});}})[_0x4a06('0x1a')](function(_0x1baf67){var _0x147af7=fs[_0x4a06('0x55')](path[_0x4a06('0x63')](config[_0x4a06('0x64')],_0x4a06('0x56')),_0x4a06('0x57'));var _0x14ecc8=ejs[_0x4a06('0x58')](_0x147af7,{'contexts':_0x1baf67||[]});fs[_0x4a06('0x59')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x14ecc8);})[_0x4a06('0x1a')](function(){return respondWithRpcPromise(_0x4a06('0x5b'),_0x4a06('0x61'),{'module':_0x4a06('0x65')});})[_0x4a06('0x1a')](function(){return _0xe0c636;})[_0x4a06('0x1a')](respondWithResult(_0x119a99,null))[_0x4a06('0x50')](handleError(_0x119a99,null));};exports[_0x4a06('0x2f')]=function(_0x51e82e,_0x34a23d,_0x1f81fb){var _0xbee986;return db[_0x4a06('0x36')][_0x4a06('0x62')]({'where':{'id':_0x51e82e[_0x4a06('0x52')]['id']}})[_0x4a06('0x1a')](handleEntityNotFound(_0x34a23d,null))['then'](removeEntity(_0x34a23d,null))[_0x4a06('0x1a')](function(){return db[_0x4a06('0x36')][_0x4a06('0x4e')]({'raw':!![]});})[_0x4a06('0x1a')](function(_0x181ac2){var _0x467feb=fs[_0x4a06('0x55')](path[_0x4a06('0x63')](config[_0x4a06('0x64')],_0x4a06('0x56')),_0x4a06('0x57'));var _0x2f6d2a=ejs[_0x4a06('0x58')](_0x467feb,{'contexts':_0x181ac2});fs[_0x4a06('0x59')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x2f6d2a);return respondWithRpcPromise(_0x4a06('0x5b'),_0x4a06('0x2f'),{'module':_0x4a06('0x65')});})[_0x4a06('0x50')](handleError(_0x34a23d,null));};
\ No newline at end of file
+var _0xe507=['desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','client','request','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','destroy','then','get','Contexts','UserProfileResource','stack','name','send','index','map','VoiceContext','rawAttributes','fieldName','type','key','model','intersection','query','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','include','findAll','rows','show','fields','find','body','readFileSync','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','create','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','join','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0xe507,0xc4));var _0x7e50=function(_0x3337b6,_0x42c7f9){_0x3337b6=_0x3337b6-0x0;var _0x568270=_0xe507[_0x3337b6];return _0x568270;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7e50('0x0'));var zipdir=require(_0x7e50('0x1'));var jsonpatch=require(_0x7e50('0x2'));var rp=require('request-promise');var moment=require(_0x7e50('0x3'));var BPromise=require(_0x7e50('0x4'));var Mustache=require(_0x7e50('0x5'));var util=require(_0x7e50('0x6'));var path=require(_0x7e50('0x7'));var sox=require(_0x7e50('0x8'));var csv=require(_0x7e50('0x9'));var ejs=require(_0x7e50('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7e50('0xb'));var squel=require(_0x7e50('0xc'));var crypto=require('crypto');var jsforce=require(_0x7e50('0xd'));var deskjs=require(_0x7e50('0xe'));var toCsv=require('to-csv');var querystring=require(_0x7e50('0xf'));var Papa=require('papaparse');var Redis=require(_0x7e50('0x10'));var authService=require(_0x7e50('0x11'));var qs=require(_0x7e50('0x12'));var as=require(_0x7e50('0x13'));var hardwareService=require(_0x7e50('0x14'));var logger=require('../../config/logger')(_0x7e50('0x15'));var utils=require(_0x7e50('0x16'));var config=require(_0x7e50('0x17'));var licenseUtil=require(_0x7e50('0x18'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0x7e50('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3d226e,_0x3f041,_0x57210a,_0x486f1c){return new BPromise(function(_0x5b1196,_0x359d62){var _0x544e1c=_0x486f1c||client;return _0x544e1c[_0x7e50('0x1a')](_0x3d226e,_0x57210a)['then'](function(_0x564f4b){logger[_0x7e50('0x1b')](_0x7e50('0x1c'),_0x3f041,_0x7e50('0x1d'));logger[_0x7e50('0x1e')](_0x7e50('0x1f'),_0x3f041,_0x7e50('0x1d'),JSON[_0x7e50('0x20')](_0x564f4b));if(_0x564f4b[_0x7e50('0x21')]){if(_0x564f4b[_0x7e50('0x21')][_0x7e50('0x22')]===0x1f4){logger[_0x7e50('0x21')](_0x7e50('0x1c'),_0x3f041,_0x564f4b[_0x7e50('0x21')][_0x7e50('0x23')]);return _0x359d62(_0x564f4b[_0x7e50('0x21')][_0x7e50('0x23')]);}logger['error']('VoiceContext,\x20%s,\x20%s',_0x3f041,_0x564f4b[_0x7e50('0x21')][_0x7e50('0x23')]);return _0x5b1196(_0x564f4b[_0x7e50('0x21')][_0x7e50('0x23')]);}else{logger[_0x7e50('0x1b')](_0x7e50('0x1c'),_0x3f041,_0x7e50('0x1d'));_0x5b1196(_0x564f4b[_0x7e50('0x24')][_0x7e50('0x23')]);}})[_0x7e50('0x25')](function(_0x477f54){logger[_0x7e50('0x21')](_0x7e50('0x1c'),_0x3f041,_0x477f54);_0x359d62(_0x477f54);});});}function respondWithStatusCode(_0x1e6923,_0x220a4c){_0x220a4c=_0x220a4c||0xcc;return function(_0x1c3370){if(_0x1c3370){return _0x1e6923[_0x7e50('0x26')](_0x220a4c);}return _0x1e6923[_0x7e50('0x27')](_0x220a4c)[_0x7e50('0x28')]();};}function respondWithResult(_0x5eb457,_0x175b4a){_0x175b4a=_0x175b4a||0xc8;return function(_0x5c64ec){if(_0x5c64ec){return _0x5eb457[_0x7e50('0x27')](_0x175b4a)[_0x7e50('0x29')](_0x5c64ec);}};}function respondWithFilteredResult(_0x2d2ae3,_0x533e38){return function(_0x33ca2d){if(_0x33ca2d){var _0x4f04ab=typeof _0x533e38['offset']===_0x7e50('0x2a')&&typeof _0x533e38[_0x7e50('0x2b')]===_0x7e50('0x2a');var _0x3145fb=_0x33ca2d['count'];var _0x27f838=_0x4f04ab?0x0:_0x533e38[_0x7e50('0x2c')];var _0x19944d=_0x4f04ab?_0x33ca2d[_0x7e50('0x2d')]:_0x533e38['offset']+_0x533e38[_0x7e50('0x2b')];var _0x10e76c;if(_0x19944d>=_0x3145fb){_0x19944d=_0x3145fb;_0x10e76c=0xc8;}else{_0x10e76c=0xce;}_0x2d2ae3[_0x7e50('0x27')](_0x10e76c);return _0x2d2ae3[_0x7e50('0x2e')](_0x7e50('0x2f'),_0x27f838+'-'+_0x19944d+'/'+_0x3145fb)[_0x7e50('0x29')](_0x33ca2d);}return null;};}function patchUpdates(_0x390bff){return function(_0xd7bb16){try{jsonpatch[_0x7e50('0x30')](_0xd7bb16,_0x390bff,!![]);}catch(_0x123a78){return BPromise[_0x7e50('0x31')](_0x123a78);}return _0xd7bb16[_0x7e50('0x32')]();};}function saveUpdates(_0x45b98b,_0x3b0dba){return function(_0x21e12f){if(_0x21e12f){return _0x21e12f[_0x7e50('0x33')](_0x45b98b)['then'](function(_0x4dcbfb){return _0x4dcbfb;});}return null;};}function removeEntity(_0x5e8e20,_0x2d9b74){return function(_0x3d0951){if(_0x3d0951){return _0x3d0951[_0x7e50('0x34')]()[_0x7e50('0x35')](function(){var _0x212853=_0x3d0951[_0x7e50('0x36')]({'plain':!![]});var _0x373d6b=_0x7e50('0x37');return db[_0x7e50('0x38')][_0x7e50('0x34')]({'where':{'type':_0x373d6b,'resourceId':_0x212853['id']}})[_0x7e50('0x35')](function(){return _0x3d0951;});})[_0x7e50('0x35')](function(){_0x5e8e20[_0x7e50('0x27')](0xcc)[_0x7e50('0x28')]();});}};}function handleEntityNotFound(_0x20957a,_0x1ae690){return function(_0x3059e8){if(!_0x3059e8){_0x20957a[_0x7e50('0x26')](0x194);}return _0x3059e8;};}function handleError(_0x40d7f1,_0x1d1ab9){_0x1d1ab9=_0x1d1ab9||0x1f4;return function(_0x3482f0){logger[_0x7e50('0x21')](_0x3482f0[_0x7e50('0x39')]);if(_0x3482f0[_0x7e50('0x3a')]){delete _0x3482f0[_0x7e50('0x3a')];}_0x40d7f1['status'](_0x1d1ab9)[_0x7e50('0x3b')](_0x3482f0);};}exports[_0x7e50('0x3c')]=function(_0x54cc16,_0x5bb54f){var _0x236ab2={},_0x490076={},_0x473973={'count':0x0,'rows':[]};var _0x49ad9e=_[_0x7e50('0x3d')](db[_0x7e50('0x3e')][_0x7e50('0x3f')],function(_0x22250c){return{'name':_0x22250c[_0x7e50('0x40')],'type':_0x22250c[_0x7e50('0x41')][_0x7e50('0x42')]};});_0x490076[_0x7e50('0x43')]=_[_0x7e50('0x3d')](_0x49ad9e,'name');_0x490076['query']=_['keys'](_0x54cc16['query']);_0x490076['filters']=_[_0x7e50('0x44')](_0x490076['model'],_0x490076[_0x7e50('0x45')]);_0x236ab2['attributes']=_[_0x7e50('0x44')](_0x490076['model'],qs['fields'](_0x54cc16['query']['fields']));_0x236ab2[_0x7e50('0x46')]=_0x236ab2[_0x7e50('0x46')][_0x7e50('0x47')]?_0x236ab2['attributes']:_0x490076['model'];if(!_0x54cc16[_0x7e50('0x45')][_0x7e50('0x48')](_0x7e50('0x49'))){_0x236ab2[_0x7e50('0x2b')]=qs[_0x7e50('0x2b')](_0x54cc16[_0x7e50('0x45')][_0x7e50('0x2b')]);_0x236ab2[_0x7e50('0x2c')]=qs[_0x7e50('0x2c')](_0x54cc16[_0x7e50('0x45')][_0x7e50('0x2c')]);}_0x236ab2[_0x7e50('0x4a')]=qs[_0x7e50('0x4b')](_0x54cc16['query']['sort']);_0x236ab2[_0x7e50('0x4c')]=qs[_0x7e50('0x4d')](_[_0x7e50('0x4e')](_0x54cc16[_0x7e50('0x45')],_0x490076[_0x7e50('0x4d')]),_0x49ad9e);if(_0x54cc16[_0x7e50('0x45')][_0x7e50('0x4f')]){_0x236ab2[_0x7e50('0x4c')]=_['merge'](_0x236ab2[_0x7e50('0x4c')],{'$or':_[_0x7e50('0x3d')](_0x49ad9e,function(_0x24148f){if(_0x24148f[_0x7e50('0x41')]!==_0x7e50('0x50')){var _0xfc1958={};_0xfc1958[_0x24148f['name']]={'$like':'%'+_0x54cc16['query']['filter']+'%'};return _0xfc1958;}})});}_0x236ab2=_[_0x7e50('0x51')]({},_0x236ab2,_0x54cc16[_0x7e50('0x52')]);var _0xa418e9={'where':_0x236ab2[_0x7e50('0x4c')]};return db[_0x7e50('0x3e')][_0x7e50('0x2d')](_0xa418e9)['then'](function(_0x43f9c6){_0x473973[_0x7e50('0x2d')]=_0x43f9c6;if(_0x54cc16['query']['includeAll']){_0x236ab2[_0x7e50('0x53')]=[{'all':!![]}];}return db[_0x7e50('0x3e')][_0x7e50('0x54')](_0x236ab2);})[_0x7e50('0x35')](function(_0x33daaf){_0x473973[_0x7e50('0x55')]=_0x33daaf;return _0x473973;})[_0x7e50('0x35')](respondWithFilteredResult(_0x5bb54f,_0x236ab2))['catch'](handleError(_0x5bb54f,null));};exports[_0x7e50('0x56')]=function(_0x3f9ed0,_0x42d57e){var _0x83a7c={'raw':![],'where':{'id':_0x3f9ed0['params']['id']}},_0x3abcb9={};_0x3abcb9['model']=_['keys'](db[_0x7e50('0x3e')][_0x7e50('0x3f')]);_0x3abcb9['query']=_['keys'](_0x3f9ed0[_0x7e50('0x45')]);_0x3abcb9['filters']=_[_0x7e50('0x44')](_0x3abcb9[_0x7e50('0x43')],_0x3abcb9[_0x7e50('0x45')]);_0x83a7c['attributes']=_[_0x7e50('0x44')](_0x3abcb9[_0x7e50('0x43')],qs[_0x7e50('0x57')](_0x3f9ed0[_0x7e50('0x45')][_0x7e50('0x57')]));_0x83a7c[_0x7e50('0x46')]=_0x83a7c[_0x7e50('0x46')]['length']?_0x83a7c['attributes']:_0x3abcb9[_0x7e50('0x43')];if(_0x3f9ed0[_0x7e50('0x45')]['includeAll']){_0x83a7c['include']=[{'all':!![]}];}_0x83a7c=_[_0x7e50('0x51')]({},_0x83a7c,_0x3f9ed0[_0x7e50('0x52')]);return db[_0x7e50('0x3e')][_0x7e50('0x58')](_0x83a7c)[_0x7e50('0x35')](handleEntityNotFound(_0x42d57e,null))[_0x7e50('0x35')](respondWithResult(_0x42d57e,null))['catch'](handleError(_0x42d57e,null));};exports['create']=function(_0x4834de,_0x47acca,_0x518765){var _0x2c11dd;return db[_0x7e50('0x3e')]['create'](_0x4834de[_0x7e50('0x59')],{'raw':!![]})[_0x7e50('0x35')](function(_0x46dddb){_0x2c11dd=_0x46dddb;return db[_0x7e50('0x3e')][_0x7e50('0x54')]({'raw':!![]});})['then'](function(_0x4aec07){var _0x41add0=fs[_0x7e50('0x5a')](path['join'](config[_0x7e50('0x5b')],_0x7e50('0x5c')),_0x7e50('0x5d'));var _0x1beb17=ejs[_0x7e50('0x5e')](_0x41add0,{'contexts':_0x4aec07||[]});fs[_0x7e50('0x5f')](_0x7e50('0x60'),_0x1beb17);})[_0x7e50('0x35')](function(){return respondWithRpcPromise(_0x7e50('0x61'),_0x7e50('0x62'),{'module':_0x7e50('0x63')});})[_0x7e50('0x35')](function(){var _0x44e445=_0x4834de['user'][_0x7e50('0x36')]({'plain':!![]});if(!_0x44e445)throw new Error(_0x7e50('0x64'));if(_0x44e445['role']==='user'){var _0x38e3b9=_0x2c11dd[_0x7e50('0x36')]({'plain':!![]});return db[_0x7e50('0x65')]['find']({'where':{'name':_0x7e50('0x37'),'userProfileId':_0x44e445[_0x7e50('0x66')]},'raw':!![]})[_0x7e50('0x35')](function(_0x4a3f8d){if(_0x4a3f8d&&_0x4a3f8d[_0x7e50('0x67')]===0x0){return db['UserProfileResource'][_0x7e50('0x62')]({'name':_0x38e3b9['name'],'resourceId':_0x38e3b9['id'],'type':_0x4a3f8d[_0x7e50('0x3a')],'sectionId':_0x4a3f8d['id']},{})[_0x7e50('0x35')](function(){return _0x2c11dd;});}else{return _0x2c11dd;}})[_0x7e50('0x25')](function(_0x4ef9a0){logger[_0x7e50('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4ef9a0);throw _0x4ef9a0;});}return _0x2c11dd;})[_0x7e50('0x35')](respondWithResult(_0x47acca,0xc9))[_0x7e50('0x25')](handleError(_0x47acca,null));};exports['update']=function(_0x49dc10,_0x5b6c76,_0x4dea5c){var _0xdb007a;return db[_0x7e50('0x3e')][_0x7e50('0x58')]({'where':{'id':_0x49dc10['params']['id']}})[_0x7e50('0x35')](handleEntityNotFound(_0x5b6c76,null))[_0x7e50('0x35')](saveUpdates(_0x49dc10[_0x7e50('0x59')],null))['then'](function(_0x5b77bd){if(_0x5b77bd){_0xdb007a=_0x5b77bd;return db[_0x7e50('0x3e')][_0x7e50('0x54')]({'raw':!![]});}})[_0x7e50('0x35')](function(_0x2d5869){var _0x2eb6c0=fs[_0x7e50('0x5a')](path[_0x7e50('0x68')](config['root'],_0x7e50('0x5c')),'utf8');var _0x1b19d0=ejs[_0x7e50('0x5e')](_0x2eb6c0,{'contexts':_0x2d5869||[]});fs[_0x7e50('0x5f')](_0x7e50('0x60'),_0x1b19d0);})[_0x7e50('0x35')](function(){return respondWithRpcPromise(_0x7e50('0x61'),_0x7e50('0x33'),{'module':_0x7e50('0x63')});})[_0x7e50('0x35')](function(){return _0xdb007a;})['then'](respondWithResult(_0x5b6c76,null))['catch'](handleError(_0x5b6c76,null));};exports[_0x7e50('0x34')]=function(_0x499620,_0x157164,_0x377eca){var _0x4be10b;return db[_0x7e50('0x3e')][_0x7e50('0x58')]({'where':{'id':_0x499620['params']['id']}})[_0x7e50('0x35')](handleEntityNotFound(_0x157164,null))[_0x7e50('0x35')](removeEntity(_0x157164,null))[_0x7e50('0x35')](function(){return db[_0x7e50('0x3e')][_0x7e50('0x54')]({'raw':!![]});})[_0x7e50('0x35')](function(_0x820231){var _0x4a76f1=fs[_0x7e50('0x5a')](path[_0x7e50('0x68')](config[_0x7e50('0x5b')],_0x7e50('0x5c')),_0x7e50('0x5d'));var _0x2cf2f3=ejs['render'](_0x4a76f1,{'contexts':_0x820231});fs[_0x7e50('0x5f')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x2cf2f3);return respondWithRpcPromise(_0x7e50('0x61'),_0x7e50('0x34'),{'module':_0x7e50('0x63')});})['catch'](handleError(_0x157164,null));};
\ No newline at end of file
index 0a59ef1..3042fab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0215=['bluebird','request-promise','path','../../config/environment','./voiceContext.attributes','exports','define','VoiceContext','util','../../config/logger','api','moment'];(function(_0x2cde2c,_0x5b06c9){var _0x31160d=function(_0x33cb74){while(--_0x33cb74){_0x2cde2c['push'](_0x2cde2c['shift']());}};_0x31160d(++_0x5b06c9);}(_0x0215,0x140));var _0x5021=function(_0x1e2080,_0x53283b){_0x1e2080=_0x1e2080-0x0;var _0x260111=_0x0215[_0x1e2080];return _0x260111;};'use strict';var _=require('lodash');var util=require(_0x5021('0x0'));var logger=require(_0x5021('0x1'))(_0x5021('0x2'));var moment=require(_0x5021('0x3'));var BPromise=require(_0x5021('0x4'));var rp=require(_0x5021('0x5'));var fs=require('fs');var path=require(_0x5021('0x6'));var rimraf=require('rimraf');var config=require(_0x5021('0x7'));var attributes=require(_0x5021('0x8'));module[_0x5021('0x9')]=function(_0xe04415,_0x3d2bd5){return _0xe04415[_0x5021('0xa')](_0x5021('0xb'),attributes,{'tableName':'voice_contexts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3996=['rimraf','../../config/environment','./voiceContext.attributes','exports','define','voice_contexts','lodash','api','bluebird','request-promise'];(function(_0x226595,_0x6abbed){var _0x1abac3=function(_0x1547d8){while(--_0x1547d8){_0x226595['push'](_0x226595['shift']());}};_0x1abac3(++_0x6abbed);}(_0x3996,0x92));var _0x6399=function(_0x11af6e,_0x1f7e64){_0x11af6e=_0x11af6e-0x0;var _0x4b2088=_0x3996[_0x11af6e];return _0x4b2088;};'use strict';var _=require(_0x6399('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x6399('0x1'));var moment=require('moment');var BPromise=require(_0x6399('0x2'));var rp=require(_0x6399('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6399('0x4'));var config=require(_0x6399('0x5'));var attributes=require(_0x6399('0x6'));module[_0x6399('0x7')]=function(_0x2ab125,_0x1c1196){return _0x2ab125[_0x6399('0x8')]('VoiceContext',attributes,{'tableName':_0x6399('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 230e96a..b960764 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf151=['message','info','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','request','then','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x94089c,_0x5015a8){var _0x5d9e64=function(_0xd467fc){while(--_0xd467fc){_0x94089c['push'](_0x94089c['shift']());}};_0x5d9e64(++_0x5015a8);}(_0xf151,0xab));var _0x1f15=function(_0x4d8800,_0x2131b5){_0x4d8800=_0x4d8800-0x0;var _0x7f7681=_0xf151[_0x4d8800];return _0x7f7681;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x1f15('0x0'));var BPromise=require(_0x1f15('0x1'));var rs=require(_0x1f15('0x2'));var fs=require('fs');var Redis=require(_0x1f15('0x3'));var db=require(_0x1f15('0x4'))['db'];var utils=require(_0x1f15('0x5'));var logger=require(_0x1f15('0x6'))(_0x1f15('0x7'));var config=require('../../config/environment');var jayson=require(_0x1f15('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5ecda5,_0x1a1c65,_0x166156){return new BPromise(function(_0xc7ae4b,_0x5d0bc8){return client[_0x1f15('0x9')](_0x5ecda5,_0x166156)[_0x1f15('0xa')](function(_0x590e7c){logger['info'](_0x1f15('0xb'),_0x1a1c65,_0x1f15('0xc'));logger[_0x1f15('0xd')](_0x1f15('0xe'),_0x1a1c65,'request\x20sent',JSON[_0x1f15('0xf')](_0x590e7c));if(_0x590e7c[_0x1f15('0x10')]){if(_0x590e7c[_0x1f15('0x10')][_0x1f15('0x11')]===0x1f4){logger['error']('VoiceContext,\x20%s,\x20%s',_0x1a1c65,_0x590e7c[_0x1f15('0x10')][_0x1f15('0x12')]);return _0x5d0bc8(_0x590e7c[_0x1f15('0x10')][_0x1f15('0x12')]);}logger[_0x1f15('0x10')](_0x1f15('0xb'),_0x1a1c65,_0x590e7c['error'][_0x1f15('0x12')]);return _0xc7ae4b(_0x590e7c[_0x1f15('0x10')][_0x1f15('0x12')]);}else{logger[_0x1f15('0x13')]('VoiceContext,\x20%s,\x20%s',_0x1a1c65,_0x1f15('0xc'));_0xc7ae4b(_0x590e7c['result'][_0x1f15('0x12')]);}})[_0x1f15('0x14')](function(_0x2960d2){logger['error']('VoiceContext,\x20%s,\x20%s',_0x1a1c65,_0x2960d2);_0x5d0bc8(_0x2960d2);});});}
\ No newline at end of file
+var _0x2292=['lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x1c31c6,_0x112488){var _0x497d0b=function(_0x1177f7){while(--_0x1177f7){_0x1c31c6['push'](_0x1c31c6['shift']());}};_0x497d0b(++_0x112488);}(_0x2292,0x11e));var _0x2229=function(_0x22dbd1,_0x47e0bb){_0x22dbd1=_0x22dbd1-0x0;var _0x50a4fd=_0x2292[_0x22dbd1];return _0x50a4fd;};'use strict';var _=require(_0x2229('0x0'));var util=require('util');var moment=require(_0x2229('0x1'));var BPromise=require(_0x2229('0x2'));var rs=require(_0x2229('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2229('0x4'));var logger=require(_0x2229('0x5'))(_0x2229('0x6'));var config=require(_0x2229('0x7'));var jayson=require(_0x2229('0x8'));var client=jayson[_0x2229('0x9')][_0x2229('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x460424,_0x5576e2,_0x5237de){return new BPromise(function(_0x118f03,_0xea1ad7){return client['request'](_0x460424,_0x5237de)[_0x2229('0xb')](function(_0x185cb6){logger[_0x2229('0xc')](_0x2229('0xd'),_0x5576e2,_0x2229('0xe'));logger[_0x2229('0xf')](_0x2229('0x10'),_0x5576e2,_0x2229('0xe'),JSON[_0x2229('0x11')](_0x185cb6));if(_0x185cb6['error']){if(_0x185cb6[_0x2229('0x12')][_0x2229('0x13')]===0x1f4){logger[_0x2229('0x12')](_0x2229('0xd'),_0x5576e2,_0x185cb6[_0x2229('0x12')][_0x2229('0x14')]);return _0xea1ad7(_0x185cb6[_0x2229('0x12')][_0x2229('0x14')]);}logger[_0x2229('0x12')](_0x2229('0xd'),_0x5576e2,_0x185cb6[_0x2229('0x12')][_0x2229('0x14')]);return _0x118f03(_0x185cb6[_0x2229('0x12')]['message']);}else{logger[_0x2229('0xc')]('VoiceContext,\x20%s,\x20%s',_0x5576e2,_0x2229('0xe'));_0x118f03(_0x185cb6['result'][_0x2229('0x14')]);}})[_0x2229('0x15')](function(_0x2f2f7c){logger[_0x2229('0x12')]('VoiceContext,\x20%s,\x20%s',_0x5576e2,_0x2f2f7c);_0xea1ad7(_0x2f2f7c);});});}
\ No newline at end of file
index 72d7a4b..db512fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1996=['path','connect-timeout','express','Router','../../components/interaction/service','./voiceDialReport.controller','get','describe','/:id','show','isAuthenticated','create','put','update','delete','destroy','exports','multer'];(function(_0x4d2993,_0x1c9473){var _0x427374=function(_0x149dfd){while(--_0x149dfd){_0x4d2993['push'](_0x4d2993['shift']());}};_0x427374(++_0x1c9473);}(_0x1996,0x1e5));var _0x6199=function(_0x4f4df3,_0x266f0e){_0x4f4df3=_0x4f4df3-0x0;var _0x42694c=_0x1996[_0x4f4df3];return _0x42694c;};'use strict';var multer=require(_0x6199('0x0'));var util=require('util');var path=require(_0x6199('0x1'));var timeout=require(_0x6199('0x2'));var express=require(_0x6199('0x3'));var router=express[_0x6199('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x6199('0x5'));var config=require('../../config/environment');var controller=require(_0x6199('0x6'));router[_0x6199('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6199('0x7')]('/describe',auth['isAuthenticated'](),controller[_0x6199('0x8')]);router['get'](_0x6199('0x9'),auth['isAuthenticated'](),controller[_0x6199('0xa')]);router['post']('/',auth[_0x6199('0xb')](),controller[_0x6199('0xc')]);router[_0x6199('0xd')](_0x6199('0x9'),auth[_0x6199('0xb')](),controller[_0x6199('0xe')]);router[_0x6199('0xf')]('/:id',auth[_0x6199('0xb')](),controller[_0x6199('0x10')]);module[_0x6199('0x11')]=router;
\ No newline at end of file
+var _0xb73b=['./voiceDialReport.controller','isAuthenticated','index','/describe','describe','get','show','put','/:id','update','delete','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb73b,0x14f));var _0xbb73=function(_0x3f2bc1,_0x381eb5){_0x3f2bc1=_0x3f2bc1-0x0;var _0x4ce8ea=_0xb73b[_0x3f2bc1];return _0x4ce8ea;};'use strict';var multer=require(_0xbb73('0x0'));var util=require(_0xbb73('0x1'));var path=require('path');var timeout=require(_0xbb73('0x2'));var express=require(_0xbb73('0x3'));var router=express[_0xbb73('0x4')]();var fs_extra=require(_0xbb73('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xbb73('0x6'));var config=require('../../config/environment');var controller=require(_0xbb73('0x7'));router['get']('/',auth[_0xbb73('0x8')](),controller[_0xbb73('0x9')]);router['get'](_0xbb73('0xa'),auth['isAuthenticated'](),controller[_0xbb73('0xb')]);router[_0xbb73('0xc')]('/:id',auth['isAuthenticated'](),controller[_0xbb73('0xd')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xbb73('0xe')](_0xbb73('0xf'),auth[_0xbb73('0x8')](),controller[_0xbb73('0x10')]);router[_0xbb73('0x11')](_0xbb73('0xf'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index ffedcad..c73f8c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84ab=['INTEGER','DATE','called,connect,complete','sequelize','exports','STRING'];(function(_0x41d9e7,_0x33ef4a){var _0x282c36=function(_0x2bb2a5){while(--_0x2bb2a5){_0x41d9e7['push'](_0x41d9e7['shift']());}};_0x282c36(++_0x33ef4a);}(_0x84ab,0x12f));var _0xb84a=function(_0x5d8018,_0x588592){_0x5d8018=_0x5d8018-0x0;var _0x151ac4=_0x84ab[_0x5d8018];return _0x151ac4;};'use strict';var Sequelize=require(_0xb84a('0x0'));module[_0xb84a('0x1')]={'privilege':{'type':Sequelize[_0xb84a('0x2')]},'channel':{'type':Sequelize[_0xb84a('0x2')]},'channelstate':{'type':Sequelize[_0xb84a('0x3')]},'channelstatedesc':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xb84a('0x2')]},'calleridname':{'type':Sequelize[_0xb84a('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0xb84a('0x2')]},'language':{'type':Sequelize[_0xb84a('0x2')]},'accountcode':{'type':Sequelize[_0xb84a('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0xb84a('0x2')]},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0xb84a('0x2')]},'destchannelstate':{'type':Sequelize[_0xb84a('0x3')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0xb84a('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xb84a('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xb84a('0x2')]},'destlanguage':{'type':Sequelize[_0xb84a('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0xb84a('0x3')]},'destuniqueid':{'type':Sequelize[_0xb84a('0x2')]},'destlinkedid':{'type':Sequelize[_0xb84a('0x2')]},'dialstring':{'type':Sequelize[_0xb84a('0x2')]},'dialstatus':{'type':Sequelize[_0xb84a('0x2')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xb84a('0x4')]},'endtime':{'type':Sequelize[_0xb84a('0x4')]},'lastevent':{'type':Sequelize[_0xb84a('0x2')],'comment':_0xb84a('0x5')},'routeId':{'type':Sequelize[_0xb84a('0x3')]},'duration':{'type':Sequelize[_0xb84a('0x3')]},'holdtime':{'type':Sequelize[_0xb84a('0x3')]},'billableseconds':{'type':Sequelize[_0xb84a('0x3')]}};
\ No newline at end of file
+var _0x425d=['sequelize','STRING','INTEGER','DATE'];(function(_0x330661,_0x41c56f){var _0x80ead5=function(_0x1002c9){while(--_0x1002c9){_0x330661['push'](_0x330661['shift']());}};_0x80ead5(++_0x41c56f);}(_0x425d,0x1e0));var _0xd425=function(_0x26a62b,_0x4ce537){_0x26a62b=_0x26a62b-0x0;var _0x213992=_0x425d[_0x26a62b];return _0x213992;};'use strict';var Sequelize=require(_0xd425('0x0'));module['exports']={'privilege':{'type':Sequelize[_0xd425('0x1')]},'channel':{'type':Sequelize[_0xd425('0x1')]},'channelstate':{'type':Sequelize[_0xd425('0x2')]},'channelstatedesc':{'type':Sequelize[_0xd425('0x1')]},'calleridnum':{'type':Sequelize[_0xd425('0x1')]},'calleridname':{'type':Sequelize[_0xd425('0x1')]},'connectedlinenum':{'type':Sequelize[_0xd425('0x1')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xd425('0x1')]},'accountcode':{'type':Sequelize[_0xd425('0x1')]},'context':{'type':Sequelize[_0xd425('0x1')]},'exten':{'type':Sequelize[_0xd425('0x1')]},'priority':{'type':Sequelize[_0xd425('0x2')]},'uniqueid':{'type':Sequelize[_0xd425('0x1')]},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0xd425('0x1')]},'destchannelstate':{'type':Sequelize[_0xd425('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0xd425('0x1')]},'destcalleridnum':{'type':Sequelize[_0xd425('0x1')]},'destcalleridname':{'type':Sequelize[_0xd425('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xd425('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xd425('0x1')]},'destlanguage':{'type':Sequelize[_0xd425('0x1')]},'destaccountcode':{'type':Sequelize[_0xd425('0x1')]},'destcontext':{'type':Sequelize[_0xd425('0x1')]},'destexten':{'type':Sequelize[_0xd425('0x1')]},'destpriority':{'type':Sequelize[_0xd425('0x2')]},'destuniqueid':{'type':Sequelize[_0xd425('0x1')]},'destlinkedid':{'type':Sequelize[_0xd425('0x1')]},'dialstring':{'type':Sequelize[_0xd425('0x1')]},'dialstatus':{'type':Sequelize[_0xd425('0x1')]},'starttime':{'type':Sequelize[_0xd425('0x3')]},'answertime':{'type':Sequelize[_0xd425('0x3')]},'endtime':{'type':Sequelize[_0xd425('0x3')]},'lastevent':{'type':Sequelize[_0xd425('0x1')],'comment':'called,connect,complete'},'routeId':{'type':Sequelize[_0xd425('0x2')]},'duration':{'type':Sequelize[_0xd425('0x2')]},'holdtime':{'type':Sequelize[_0xd425('0x2')]},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index b902631..0befb84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc362=['nolimit','limit','order','sort','where','pick','filter','type','VIRTUAL','then','includeAll','include','findAll','rows','catch','show','keys','rawAttributes','merge','options','VoiceDialReport','create','body','find','params','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','Content-Range','apply','save','update','destroy','end','stack','name','send','index','map','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x181af2,_0x4ede30){var _0x1e719c=function(_0x57d912){while(--_0x57d912){_0x181af2['push'](_0x181af2['shift']());}};_0x1e719c(++_0x4ede30);}(_0xc362,0xbe));var _0x2c36=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc362[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x2c36('0x0'));var rimraf=require(_0x2c36('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2c36('0x2'));var rp=require(_0x2c36('0x3'));var moment=require(_0x2c36('0x4'));var BPromise=require(_0x2c36('0x5'));var Mustache=require(_0x2c36('0x6'));var util=require(_0x2c36('0x7'));var path=require(_0x2c36('0x8'));var sox=require(_0x2c36('0x9'));var csv=require(_0x2c36('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2c36('0xb'));var _=require(_0x2c36('0xc'));var squel=require('squel');var crypto=require(_0x2c36('0xd'));var jsforce=require(_0x2c36('0xe'));var deskjs=require(_0x2c36('0xf'));var toCsv=require(_0x2c36('0xa'));var querystring=require(_0x2c36('0x10'));var Papa=require(_0x2c36('0x11'));var Redis=require(_0x2c36('0x12'));var authService=require(_0x2c36('0x13'));var qs=require(_0x2c36('0x14'));var as=require(_0x2c36('0x15'));var hardwareService=require(_0x2c36('0x16'));var logger=require(_0x2c36('0x17'))(_0x2c36('0x18'));var utils=require(_0x2c36('0x19'));var config=require(_0x2c36('0x1a'));var licenseUtil=require(_0x2c36('0x1b'));var db=require(_0x2c36('0x1c'))['db'];function respondWithStatusCode(_0x26cd72,_0x2ac002){_0x2ac002=_0x2ac002||0xcc;return function(_0x28f7f3){if(_0x28f7f3){return _0x26cd72[_0x2c36('0x1d')](_0x2ac002);}return _0x26cd72[_0x2c36('0x1e')](_0x2ac002)['end']();};}function respondWithResult(_0xb07bb1,_0x59cc0e){_0x59cc0e=_0x59cc0e||0xc8;return function(_0x806291){if(_0x806291){return _0xb07bb1['status'](_0x59cc0e)[_0x2c36('0x1f')](_0x806291);}};}function respondWithFilteredResult(_0x101441,_0x1109d9){return function(_0x3db6f4){if(_0x3db6f4){var _0x3a284c=typeof _0x1109d9[_0x2c36('0x20')]===_0x2c36('0x21')&&typeof _0x1109d9['limit']===_0x2c36('0x21');var _0x9db7a2=_0x3db6f4[_0x2c36('0x22')];var _0x592f5f=_0x3a284c?0x0:_0x1109d9[_0x2c36('0x20')];var _0x168bf9=_0x3a284c?_0x3db6f4[_0x2c36('0x22')]:_0x1109d9[_0x2c36('0x20')]+_0x1109d9['limit'];var _0x1c293c;if(_0x168bf9>=_0x9db7a2){_0x168bf9=_0x9db7a2;_0x1c293c=0xc8;}else{_0x1c293c=0xce;}_0x101441['status'](_0x1c293c);return _0x101441['set'](_0x2c36('0x23'),_0x592f5f+'-'+_0x168bf9+'/'+_0x9db7a2)[_0x2c36('0x1f')](_0x3db6f4);}return null;};}function patchUpdates(_0x56fba3){return function(_0x5e48ba){try{jsonpatch[_0x2c36('0x24')](_0x5e48ba,_0x56fba3,!![]);}catch(_0x346806){return BPromise['reject'](_0x346806);}return _0x5e48ba[_0x2c36('0x25')]();};}function saveUpdates(_0x4d9b8a,_0xebeac8){return function(_0x335363){if(_0x335363){return _0x335363[_0x2c36('0x26')](_0x4d9b8a)['then'](function(_0x392110){return _0x392110;});}return null;};}function removeEntity(_0x13ada5,_0x2fc838){return function(_0x55061e){if(_0x55061e){return _0x55061e[_0x2c36('0x27')]()['then'](function(){_0x13ada5[_0x2c36('0x1e')](0xcc)[_0x2c36('0x28')]();});}};}function handleEntityNotFound(_0x4bcd52,_0x3944f1){return function(_0x51c9c7){if(!_0x51c9c7){_0x4bcd52[_0x2c36('0x1d')](0x194);}return _0x51c9c7;};}function handleError(_0x46156d,_0x3fa94e){_0x3fa94e=_0x3fa94e||0x1f4;return function(_0x241bfe){logger['error'](_0x241bfe[_0x2c36('0x29')]);if(_0x241bfe[_0x2c36('0x2a')]){delete _0x241bfe[_0x2c36('0x2a')];}_0x46156d['status'](_0x3fa94e)[_0x2c36('0x2b')](_0x241bfe);};}exports[_0x2c36('0x2c')]=function(_0x89c43,_0x4430ff){var _0x2a596e={},_0x34e36a={},_0x41bc95={'count':0x0,'rows':[]};var _0x508e77=_[_0x2c36('0x2d')](db['VoiceDialReport']['rawAttributes'],function(_0x31c27e){return{'name':_0x31c27e[_0x2c36('0x2e')],'type':_0x31c27e['type'][_0x2c36('0x2f')]};});_0x34e36a[_0x2c36('0x30')]=_['map'](_0x508e77,'name');_0x34e36a[_0x2c36('0x31')]=_['keys'](_0x89c43[_0x2c36('0x31')]);_0x34e36a[_0x2c36('0x32')]=_[_0x2c36('0x33')](_0x34e36a[_0x2c36('0x30')],_0x34e36a['query']);_0x2a596e[_0x2c36('0x34')]=_[_0x2c36('0x33')](_0x34e36a[_0x2c36('0x30')],qs[_0x2c36('0x35')](_0x89c43[_0x2c36('0x31')][_0x2c36('0x35')]));_0x2a596e[_0x2c36('0x34')]=_0x2a596e[_0x2c36('0x34')][_0x2c36('0x36')]?_0x2a596e['attributes']:_0x34e36a[_0x2c36('0x30')];if(!_0x89c43[_0x2c36('0x31')][_0x2c36('0x37')](_0x2c36('0x38'))){_0x2a596e[_0x2c36('0x39')]=qs['limit'](_0x89c43['query']['limit']);_0x2a596e[_0x2c36('0x20')]=qs[_0x2c36('0x20')](_0x89c43[_0x2c36('0x31')][_0x2c36('0x20')]);}_0x2a596e[_0x2c36('0x3a')]=qs[_0x2c36('0x3b')](_0x89c43[_0x2c36('0x31')][_0x2c36('0x3b')]);_0x2a596e[_0x2c36('0x3c')]=qs[_0x2c36('0x32')](_[_0x2c36('0x3d')](_0x89c43[_0x2c36('0x31')],_0x34e36a[_0x2c36('0x32')]),_0x508e77);if(_0x89c43['query'][_0x2c36('0x3e')]){_0x2a596e[_0x2c36('0x3c')]=_['merge'](_0x2a596e[_0x2c36('0x3c')],{'$or':_['map'](_0x508e77,function(_0x5281fb){if(_0x5281fb[_0x2c36('0x3f')]!==_0x2c36('0x40')){var _0x109d66={};_0x109d66[_0x5281fb[_0x2c36('0x2a')]]={'$like':'%'+_0x89c43[_0x2c36('0x31')][_0x2c36('0x3e')]+'%'};return _0x109d66;}})});}_0x2a596e=_['merge']({},_0x2a596e,_0x89c43['options']);var _0x19d4b6={'where':_0x2a596e[_0x2c36('0x3c')]};return db['VoiceDialReport'][_0x2c36('0x22')](_0x19d4b6)[_0x2c36('0x41')](function(_0x12b81d){_0x41bc95[_0x2c36('0x22')]=_0x12b81d;if(_0x89c43[_0x2c36('0x31')][_0x2c36('0x42')]){_0x2a596e[_0x2c36('0x43')]=[{'all':!![]}];}return db['VoiceDialReport'][_0x2c36('0x44')](_0x2a596e);})[_0x2c36('0x41')](function(_0x563c6f){_0x41bc95[_0x2c36('0x45')]=_0x563c6f;return _0x41bc95;})['then'](respondWithFilteredResult(_0x4430ff,_0x2a596e))[_0x2c36('0x46')](handleError(_0x4430ff,null));};exports[_0x2c36('0x47')]=function(_0x599615,_0x45c82b){var _0x477a30={'raw':!![],'where':{'id':_0x599615['params']['id']}},_0x2d1405={};_0x2d1405[_0x2c36('0x30')]=_[_0x2c36('0x48')](db['VoiceDialReport'][_0x2c36('0x49')]);_0x2d1405[_0x2c36('0x31')]=_[_0x2c36('0x48')](_0x599615[_0x2c36('0x31')]);_0x2d1405[_0x2c36('0x32')]=_['intersection'](_0x2d1405[_0x2c36('0x30')],_0x2d1405[_0x2c36('0x31')]);_0x477a30['attributes']=_[_0x2c36('0x33')](_0x2d1405['model'],qs['fields'](_0x599615[_0x2c36('0x31')][_0x2c36('0x35')]));_0x477a30['attributes']=_0x477a30[_0x2c36('0x34')]['length']?_0x477a30[_0x2c36('0x34')]:_0x2d1405[_0x2c36('0x30')];if(_0x599615[_0x2c36('0x31')][_0x2c36('0x42')]){_0x477a30['include']=[{'all':!![]}];}_0x477a30=_[_0x2c36('0x4a')]({},_0x477a30,_0x599615[_0x2c36('0x4b')]);return db[_0x2c36('0x4c')]['find'](_0x477a30)[_0x2c36('0x41')](handleEntityNotFound(_0x45c82b,null))['then'](respondWithResult(_0x45c82b,null))[_0x2c36('0x46')](handleError(_0x45c82b,null));};exports[_0x2c36('0x4d')]=function(_0x1c8435,_0x1c7aba){return db[_0x2c36('0x4c')]['create'](_0x1c8435['body'],{})[_0x2c36('0x41')](respondWithResult(_0x1c7aba,0xc9))[_0x2c36('0x46')](handleError(_0x1c7aba,null));};exports[_0x2c36('0x26')]=function(_0x26f64b,_0x304c3e){if(_0x26f64b[_0x2c36('0x4e')]['id']){delete _0x26f64b['body']['id'];}return db[_0x2c36('0x4c')][_0x2c36('0x4f')]({'where':{'id':_0x26f64b[_0x2c36('0x50')]['id']}})[_0x2c36('0x41')](handleEntityNotFound(_0x304c3e,null))[_0x2c36('0x41')](saveUpdates(_0x26f64b[_0x2c36('0x4e')],null))[_0x2c36('0x41')](respondWithResult(_0x304c3e,null))['catch'](handleError(_0x304c3e,null));};exports[_0x2c36('0x27')]=function(_0x1f06f0,_0x118610){return db['VoiceDialReport'][_0x2c36('0x4f')]({'where':{'id':_0x1f06f0[_0x2c36('0x50')]['id']}})[_0x2c36('0x41')](handleEntityNotFound(_0x118610,null))[_0x2c36('0x41')](removeEntity(_0x118610,null))[_0x2c36('0x46')](handleError(_0x118610,null));};exports[_0x2c36('0x51')]=function(_0x46b15b,_0x4d80ca){return db['VoiceDialReport']['describe']()[_0x2c36('0x41')](respondWithResult(_0x4d80ca,null))['catch'](handleError(_0x4d80ca,null));};
\ No newline at end of file
+var _0xa526=['update','then','destroy','error','stack','name','send','index','map','VoiceDialReport','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','options','includeAll','findAll','rows','params','rawAttributes','include','find','catch','create','body','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','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','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','save'];(function(_0x173aca,_0x4cfe9f){var _0x5dbf81=function(_0x10c012){while(--_0x10c012){_0x173aca['push'](_0x173aca['shift']());}};_0x5dbf81(++_0x4cfe9f);}(_0xa526,0xbf));var _0x6a52=function(_0x53b133,_0x176261){_0x53b133=_0x53b133-0x0;var _0x5647e0=_0xa526[_0x53b133];return _0x5647e0;};'use strict';var emlformat=require(_0x6a52('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6a52('0x1'));var jsonpatch=require(_0x6a52('0x2'));var rp=require('request-promise');var moment=require(_0x6a52('0x3'));var BPromise=require(_0x6a52('0x4'));var Mustache=require(_0x6a52('0x5'));var util=require(_0x6a52('0x6'));var path=require(_0x6a52('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x6a52('0x8'));var fs=require('fs');var fs_extra=require(_0x6a52('0x9'));var _=require(_0x6a52('0xa'));var squel=require(_0x6a52('0xb'));var crypto=require(_0x6a52('0xc'));var jsforce=require(_0x6a52('0xd'));var deskjs=require(_0x6a52('0xe'));var toCsv=require(_0x6a52('0xf'));var querystring=require(_0x6a52('0x10'));var Papa=require('papaparse');var Redis=require(_0x6a52('0x11'));var authService=require(_0x6a52('0x12'));var qs=require(_0x6a52('0x13'));var as=require(_0x6a52('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6a52('0x15'))(_0x6a52('0x16'));var utils=require(_0x6a52('0x17'));var config=require(_0x6a52('0x18'));var licenseUtil=require(_0x6a52('0x19'));var db=require(_0x6a52('0x1a'))['db'];function respondWithStatusCode(_0x16207e,_0x45b0c9){_0x45b0c9=_0x45b0c9||0xcc;return function(_0x40515e){if(_0x40515e){return _0x16207e[_0x6a52('0x1b')](_0x45b0c9);}return _0x16207e[_0x6a52('0x1c')](_0x45b0c9)[_0x6a52('0x1d')]();};}function respondWithResult(_0x4c8b6d,_0x4eec47){_0x4eec47=_0x4eec47||0xc8;return function(_0x5251e5){if(_0x5251e5){return _0x4c8b6d[_0x6a52('0x1c')](_0x4eec47)['json'](_0x5251e5);}};}function respondWithFilteredResult(_0x48299a,_0x375b21){return function(_0x3db2fd){if(_0x3db2fd){var _0x4c7142=typeof _0x375b21[_0x6a52('0x1e')]===_0x6a52('0x1f')&&typeof _0x375b21[_0x6a52('0x20')]===_0x6a52('0x1f');var _0x2def0f=_0x3db2fd[_0x6a52('0x21')];var _0x170501=_0x4c7142?0x0:_0x375b21[_0x6a52('0x1e')];var _0x549b87=_0x4c7142?_0x3db2fd['count']:_0x375b21[_0x6a52('0x1e')]+_0x375b21['limit'];var _0x36a294;if(_0x549b87>=_0x2def0f){_0x549b87=_0x2def0f;_0x36a294=0xc8;}else{_0x36a294=0xce;}_0x48299a[_0x6a52('0x1c')](_0x36a294);return _0x48299a['set'](_0x6a52('0x22'),_0x170501+'-'+_0x549b87+'/'+_0x2def0f)[_0x6a52('0x23')](_0x3db2fd);}return null;};}function patchUpdates(_0x4164d8){return function(_0x97720b){try{jsonpatch['apply'](_0x97720b,_0x4164d8,!![]);}catch(_0x80a05){return BPromise['reject'](_0x80a05);}return _0x97720b[_0x6a52('0x24')]();};}function saveUpdates(_0x3c5baf,_0x555a79){return function(_0x14bc60){if(_0x14bc60){return _0x14bc60[_0x6a52('0x25')](_0x3c5baf)[_0x6a52('0x26')](function(_0x42ebf3){return _0x42ebf3;});}return null;};}function removeEntity(_0x2e4a69,_0x58346a){return function(_0x2354aa){if(_0x2354aa){return _0x2354aa[_0x6a52('0x27')]()[_0x6a52('0x26')](function(){_0x2e4a69['status'](0xcc)[_0x6a52('0x1d')]();});}};}function handleEntityNotFound(_0x3b59f8,_0x9af4fe){return function(_0x546f47){if(!_0x546f47){_0x3b59f8[_0x6a52('0x1b')](0x194);}return _0x546f47;};}function handleError(_0x1482ec,_0x3faced){_0x3faced=_0x3faced||0x1f4;return function(_0x4f52b3){logger[_0x6a52('0x28')](_0x4f52b3[_0x6a52('0x29')]);if(_0x4f52b3['name']){delete _0x4f52b3[_0x6a52('0x2a')];}_0x1482ec['status'](_0x3faced)[_0x6a52('0x2b')](_0x4f52b3);};}exports[_0x6a52('0x2c')]=function(_0x12f586,_0x32c35c){var _0x4bdd93={},_0x1c3c4e={},_0x2627a2={'count':0x0,'rows':[]};var _0x516644=_[_0x6a52('0x2d')](db[_0x6a52('0x2e')]['rawAttributes'],function(_0x1402a4){return{'name':_0x1402a4[_0x6a52('0x2f')],'type':_0x1402a4[_0x6a52('0x30')][_0x6a52('0x31')]};});_0x1c3c4e[_0x6a52('0x32')]=_['map'](_0x516644,_0x6a52('0x2a'));_0x1c3c4e['query']=_[_0x6a52('0x33')](_0x12f586[_0x6a52('0x34')]);_0x1c3c4e[_0x6a52('0x35')]=_[_0x6a52('0x36')](_0x1c3c4e[_0x6a52('0x32')],_0x1c3c4e['query']);_0x4bdd93[_0x6a52('0x37')]=_['intersection'](_0x1c3c4e[_0x6a52('0x32')],qs[_0x6a52('0x38')](_0x12f586[_0x6a52('0x34')][_0x6a52('0x38')]));_0x4bdd93[_0x6a52('0x37')]=_0x4bdd93['attributes'][_0x6a52('0x39')]?_0x4bdd93[_0x6a52('0x37')]:_0x1c3c4e[_0x6a52('0x32')];if(!_0x12f586['query']['hasOwnProperty'](_0x6a52('0x3a'))){_0x4bdd93[_0x6a52('0x20')]=qs[_0x6a52('0x20')](_0x12f586[_0x6a52('0x34')][_0x6a52('0x20')]);_0x4bdd93['offset']=qs[_0x6a52('0x1e')](_0x12f586[_0x6a52('0x34')][_0x6a52('0x1e')]);}_0x4bdd93[_0x6a52('0x3b')]=qs[_0x6a52('0x3c')](_0x12f586[_0x6a52('0x34')]['sort']);_0x4bdd93['where']=qs[_0x6a52('0x35')](_[_0x6a52('0x3d')](_0x12f586[_0x6a52('0x34')],_0x1c3c4e['filters']),_0x516644);if(_0x12f586[_0x6a52('0x34')][_0x6a52('0x3e')]){_0x4bdd93[_0x6a52('0x3f')]=_[_0x6a52('0x40')](_0x4bdd93[_0x6a52('0x3f')],{'$or':_[_0x6a52('0x2d')](_0x516644,function(_0x382f63){if(_0x382f63[_0x6a52('0x30')]!=='VIRTUAL'){var _0x1bdd4b={};_0x1bdd4b[_0x382f63[_0x6a52('0x2a')]]={'$like':'%'+_0x12f586[_0x6a52('0x34')][_0x6a52('0x3e')]+'%'};return _0x1bdd4b;}})});}_0x4bdd93=_['merge']({},_0x4bdd93,_0x12f586[_0x6a52('0x41')]);var _0x5c5c1c={'where':_0x4bdd93[_0x6a52('0x3f')]};return db[_0x6a52('0x2e')][_0x6a52('0x21')](_0x5c5c1c)['then'](function(_0x5ebb53){_0x2627a2[_0x6a52('0x21')]=_0x5ebb53;if(_0x12f586[_0x6a52('0x34')][_0x6a52('0x42')]){_0x4bdd93['include']=[{'all':!![]}];}return db[_0x6a52('0x2e')][_0x6a52('0x43')](_0x4bdd93);})['then'](function(_0x5e6c6d){_0x2627a2[_0x6a52('0x44')]=_0x5e6c6d;return _0x2627a2;})[_0x6a52('0x26')](respondWithFilteredResult(_0x32c35c,_0x4bdd93))['catch'](handleError(_0x32c35c,null));};exports['show']=function(_0x372a42,_0x3d6ead){var _0x6837ff={'raw':!![],'where':{'id':_0x372a42[_0x6a52('0x45')]['id']}},_0x681493={};_0x681493[_0x6a52('0x32')]=_['keys'](db['VoiceDialReport'][_0x6a52('0x46')]);_0x681493['query']=_[_0x6a52('0x33')](_0x372a42[_0x6a52('0x34')]);_0x681493[_0x6a52('0x35')]=_[_0x6a52('0x36')](_0x681493[_0x6a52('0x32')],_0x681493[_0x6a52('0x34')]);_0x6837ff[_0x6a52('0x37')]=_[_0x6a52('0x36')](_0x681493[_0x6a52('0x32')],qs['fields'](_0x372a42['query'][_0x6a52('0x38')]));_0x6837ff[_0x6a52('0x37')]=_0x6837ff[_0x6a52('0x37')]['length']?_0x6837ff['attributes']:_0x681493['model'];if(_0x372a42[_0x6a52('0x34')][_0x6a52('0x42')]){_0x6837ff[_0x6a52('0x47')]=[{'all':!![]}];}_0x6837ff=_['merge']({},_0x6837ff,_0x372a42[_0x6a52('0x41')]);return db['VoiceDialReport'][_0x6a52('0x48')](_0x6837ff)[_0x6a52('0x26')](handleEntityNotFound(_0x3d6ead,null))[_0x6a52('0x26')](respondWithResult(_0x3d6ead,null))[_0x6a52('0x49')](handleError(_0x3d6ead,null));};exports[_0x6a52('0x4a')]=function(_0x46aeae,_0x58629b){return db[_0x6a52('0x2e')]['create'](_0x46aeae[_0x6a52('0x4b')],{})[_0x6a52('0x26')](respondWithResult(_0x58629b,0xc9))['catch'](handleError(_0x58629b,null));};exports['update']=function(_0x53941a,_0xbd0840){if(_0x53941a['body']['id']){delete _0x53941a[_0x6a52('0x4b')]['id'];}return db['VoiceDialReport']['find']({'where':{'id':_0x53941a['params']['id']}})[_0x6a52('0x26')](handleEntityNotFound(_0xbd0840,null))['then'](saveUpdates(_0x53941a[_0x6a52('0x4b')],null))[_0x6a52('0x26')](respondWithResult(_0xbd0840,null))['catch'](handleError(_0xbd0840,null));};exports['destroy']=function(_0x1c1e91,_0x357149){return db[_0x6a52('0x2e')][_0x6a52('0x48')]({'where':{'id':_0x1c1e91[_0x6a52('0x45')]['id']}})[_0x6a52('0x26')](handleEntityNotFound(_0x357149,null))[_0x6a52('0x26')](removeEntity(_0x357149,null))[_0x6a52('0x49')](handleError(_0x357149,null));};exports['describe']=function(_0x2ce322,_0x3df294){return db['VoiceDialReport']['describe']()[_0x6a52('0x26')](respondWithResult(_0x3df294,null))['catch'](handleError(_0x3df294,null));};
\ No newline at end of file
index 793b6ec..29db19e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1be1=['api','bluebird','../../config/environment','./voiceDialReport.attributes','define','VoiceDialReport','report_dial','uniqueid','lodash','util','../../config/logger'];(function(_0x59ab65,_0x410a52){var _0x57db9b=function(_0x19dc31){while(--_0x19dc31){_0x59ab65['push'](_0x59ab65['shift']());}};_0x57db9b(++_0x410a52);}(_0x1be1,0x19f));var _0x11be=function(_0x4870e5,_0x46f967){_0x4870e5=_0x4870e5-0x0;var _0x2f7e81=_0x1be1[_0x4870e5];return _0x2f7e81;};'use strict';var _=require(_0x11be('0x0'));var util=require(_0x11be('0x1'));var logger=require(_0x11be('0x2'))(_0x11be('0x3'));var moment=require('moment');var BPromise=require(_0x11be('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x11be('0x5'));var attributes=require(_0x11be('0x6'));module['exports']=function(_0x41b27b,_0x3c7c73){return _0x41b27b[_0x11be('0x7')](_0x11be('0x8'),attributes,{'tableName':_0x11be('0x9'),'paranoid':![],'indexes':[{'fields':[_0x11be('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7d82=['VoiceDialReport','uniqueid','lodash','../../config/logger','moment','bluebird','path','../../config/environment','exports','define'];(function(_0x4aba8b,_0xc6cade){var _0x5064db=function(_0x231148){while(--_0x231148){_0x4aba8b['push'](_0x4aba8b['shift']());}};_0x5064db(++_0xc6cade);}(_0x7d82,0x174));var _0x27d8=function(_0x3e2f25,_0x299646){_0x3e2f25=_0x3e2f25-0x0;var _0x58816b=_0x7d82[_0x3e2f25];return _0x58816b;};'use strict';var _=require(_0x27d8('0x0'));var util=require('util');var logger=require(_0x27d8('0x1'))('api');var moment=require(_0x27d8('0x2'));var BPromise=require(_0x27d8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x27d8('0x4'));var rimraf=require('rimraf');var config=require(_0x27d8('0x5'));var attributes=require('./voiceDialReport.attributes');module[_0x27d8('0x6')]=function(_0x449d6a,_0x459925){return _0x449d6a[_0x27d8('0x7')](_0x27d8('0x8'),attributes,{'tableName':'report_dial','paranoid':![],'indexes':[{'fields':[_0x27d8('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 1dcecd4..760f4e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50c8=['catch','CreateVoiceDialReport','VoiceDialReport','create','options','raw','then','UpdateVoiceDialReport','update','body','where','attributes','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','VoiceDialReport,\x20%s,\x20%s','message'];(function(_0x337570,_0xdd86bc){var _0x27b1fb=function(_0x567d79){while(--_0x567d79){_0x337570['push'](_0x337570['shift']());}};_0x27b1fb(++_0xdd86bc);}(_0x50c8,0x124));var _0x850c=function(_0x4c7fb5,_0x2548ef){_0x4c7fb5=_0x4c7fb5-0x0;var _0x2e10ac=_0x50c8[_0x4c7fb5];return _0x2e10ac;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x850c('0x0'));var db=require('../../mysqldb')['db'];var utils=require(_0x850c('0x1'));var logger=require(_0x850c('0x2'))('rpc');var config=require(_0x850c('0x3'));var jayson=require(_0x850c('0x4'));var client=jayson[_0x850c('0x5')][_0x850c('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x2d0251,_0x3a50c7,_0x36d5bd){return new BPromise(function(_0xa3e277,_0x48d1ea){return client[_0x850c('0x7')](_0x2d0251,_0x36d5bd)['then'](function(_0x16ee27){logger[_0x850c('0x8')]('VoiceDialReport,\x20%s,\x20%s',_0x3a50c7,_0x850c('0x9'));logger[_0x850c('0xa')](_0x850c('0xb'),_0x3a50c7,_0x850c('0x9'),JSON[_0x850c('0xc')](_0x16ee27));if(_0x16ee27[_0x850c('0xd')]){if(_0x16ee27['error']['code']===0x1f4){logger['error'](_0x850c('0xe'),_0x3a50c7,_0x16ee27['error'][_0x850c('0xf')]);return _0x48d1ea(_0x16ee27['error'][_0x850c('0xf')]);}logger[_0x850c('0xd')](_0x850c('0xe'),_0x3a50c7,_0x16ee27[_0x850c('0xd')]['message']);return _0xa3e277(_0x16ee27[_0x850c('0xd')][_0x850c('0xf')]);}else{logger[_0x850c('0x8')](_0x850c('0xe'),_0x3a50c7,_0x850c('0x9'));_0xa3e277(_0x16ee27['result'][_0x850c('0xf')]);}})[_0x850c('0x10')](function(_0x31c03a){logger[_0x850c('0xd')](_0x850c('0xe'),_0x3a50c7,_0x31c03a);_0x48d1ea(_0x31c03a);});});}exports[_0x850c('0x11')]=function(_0x293fce){var _0x2da318=this;return new Promise(function(_0x3e71d8,_0x243fa2){return db[_0x850c('0x12')][_0x850c('0x13')](_0x293fce['body'],{'raw':_0x293fce[_0x850c('0x14')]?_0x293fce[_0x850c('0x14')][_0x850c('0x15')]===undefined?!![]:![]:!![]})[_0x850c('0x16')](function(_0x5b11cb){logger['info']('CreateVoiceDialReport',_0x293fce);logger['debug'](_0x850c('0x11'),_0x293fce,JSON[_0x850c('0xc')](_0x5b11cb));_0x3e71d8(_0x5b11cb);})[_0x850c('0x10')](function(_0x397366){logger['error']('CreateVoiceDialReport',_0x397366[_0x850c('0xf')],_0x293fce);_0x243fa2(_0x2da318[_0x850c('0xd')](0x1f4,_0x397366[_0x850c('0xf')]));});});};exports[_0x850c('0x17')]=function(_0x37a370){var _0xffeb8b=this;return new Promise(function(_0x5b8c8b,_0x52069b){return db['VoiceDialReport'][_0x850c('0x18')](_0x37a370[_0x850c('0x19')],{'raw':_0x37a370[_0x850c('0x14')]?_0x37a370[_0x850c('0x14')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x37a370[_0x850c('0x14')]?_0x37a370['options'][_0x850c('0x1a')]||null:null,'attributes':_0x37a370[_0x850c('0x14')]?_0x37a370[_0x850c('0x14')][_0x850c('0x1b')]||null:null,'limit':_0x37a370[_0x850c('0x14')]?_0x37a370['options']['limit']||null:null})[_0x850c('0x16')](function(_0x595a68){logger[_0x850c('0x8')]('UpdateVoiceDialReport',_0x37a370);logger[_0x850c('0xa')](_0x850c('0x17'),_0x37a370,JSON['stringify'](_0x595a68));_0x5b8c8b(_0x595a68);})[_0x850c('0x10')](function(_0xe4ff9d){logger['error'](_0x850c('0x17'),_0xe4ff9d['message'],_0x37a370);_0x52069b(_0xffeb8b[_0x850c('0xd')](0x1f4,_0xe4ff9d[_0x850c('0xf')]));});});};
\ No newline at end of file
+var _0x4f44=['../../config/logger','jayson/promise','http','request','then','info','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VoiceDialReport,\x20%s,\x20%s','CreateVoiceDialReport','VoiceDialReport','body','options','catch','UpdateVoiceDialReport','update','raw','where','attributes','limit','lodash','moment','bluebird','../../mysqldb','../../config/utils'];(function(_0x2dc4b2,_0x38b3c9){var _0x2d9953=function(_0x4f033a){while(--_0x4f033a){_0x2dc4b2['push'](_0x2dc4b2['shift']());}};_0x2d9953(++_0x38b3c9);}(_0x4f44,0xeb));var _0x44f4=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x4f44[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x44f4('0x0'));var util=require('util');var moment=require(_0x44f4('0x1'));var BPromise=require(_0x44f4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x44f4('0x3'))['db'];var utils=require(_0x44f4('0x4'));var logger=require(_0x44f4('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x44f4('0x6'));var client=jayson['client'][_0x44f4('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x3e364d,_0xd5ec5,_0x2c725f){return new BPromise(function(_0x5a447d,_0x3dbc50){return client[_0x44f4('0x8')](_0x3e364d,_0x2c725f)[_0x44f4('0x9')](function(_0x2abb17){logger[_0x44f4('0xa')]('VoiceDialReport,\x20%s,\x20%s',_0xd5ec5,_0x44f4('0xb'));logger[_0x44f4('0xc')](_0x44f4('0xd'),_0xd5ec5,'request\x20sent',JSON[_0x44f4('0xe')](_0x2abb17));if(_0x2abb17[_0x44f4('0xf')]){if(_0x2abb17[_0x44f4('0xf')][_0x44f4('0x10')]===0x1f4){logger['error']('VoiceDialReport,\x20%s,\x20%s',_0xd5ec5,_0x2abb17['error'][_0x44f4('0x11')]);return _0x3dbc50(_0x2abb17[_0x44f4('0xf')]['message']);}logger[_0x44f4('0xf')]('VoiceDialReport,\x20%s,\x20%s',_0xd5ec5,_0x2abb17[_0x44f4('0xf')][_0x44f4('0x11')]);return _0x5a447d(_0x2abb17[_0x44f4('0xf')][_0x44f4('0x11')]);}else{logger[_0x44f4('0xa')](_0x44f4('0x12'),_0xd5ec5,_0x44f4('0xb'));_0x5a447d(_0x2abb17['result'][_0x44f4('0x11')]);}})['catch'](function(_0xb635c5){logger[_0x44f4('0xf')]('VoiceDialReport,\x20%s,\x20%s',_0xd5ec5,_0xb635c5);_0x3dbc50(_0xb635c5);});});}exports[_0x44f4('0x13')]=function(_0x14f776){var _0x30b981=this;return new Promise(function(_0x5e13ab,_0x4f8127){return db[_0x44f4('0x14')]['create'](_0x14f776[_0x44f4('0x15')],{'raw':_0x14f776[_0x44f4('0x16')]?_0x14f776[_0x44f4('0x16')]['raw']===undefined?!![]:![]:!![]})[_0x44f4('0x9')](function(_0x3882c2){logger[_0x44f4('0xa')](_0x44f4('0x13'),_0x14f776);logger[_0x44f4('0xc')]('CreateVoiceDialReport',_0x14f776,JSON[_0x44f4('0xe')](_0x3882c2));_0x5e13ab(_0x3882c2);})[_0x44f4('0x17')](function(_0x18ac8f){logger['error']('CreateVoiceDialReport',_0x18ac8f[_0x44f4('0x11')],_0x14f776);_0x4f8127(_0x30b981['error'](0x1f4,_0x18ac8f[_0x44f4('0x11')]));});});};exports[_0x44f4('0x18')]=function(_0x26ef5b){var _0x56e4d2=this;return new Promise(function(_0x2fee95,_0x539fd3){return db['VoiceDialReport'][_0x44f4('0x19')](_0x26ef5b[_0x44f4('0x15')],{'raw':_0x26ef5b[_0x44f4('0x16')]?_0x26ef5b[_0x44f4('0x16')][_0x44f4('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x26ef5b[_0x44f4('0x16')]?_0x26ef5b[_0x44f4('0x16')][_0x44f4('0x1b')]||null:null,'attributes':_0x26ef5b['options']?_0x26ef5b[_0x44f4('0x16')][_0x44f4('0x1c')]||null:null,'limit':_0x26ef5b['options']?_0x26ef5b[_0x44f4('0x16')][_0x44f4('0x1d')]||null:null})[_0x44f4('0x9')](function(_0x101ce7){logger['info']('UpdateVoiceDialReport',_0x26ef5b);logger[_0x44f4('0xc')](_0x44f4('0x18'),_0x26ef5b,JSON[_0x44f4('0xe')](_0x101ce7));_0x2fee95(_0x101ce7);})['catch'](function(_0x26235a){logger['error'](_0x44f4('0x18'),_0x26235a[_0x44f4('0x11')],_0x26ef5b);_0x539fd3(_0x56e4d2['error'](0x1f4,_0x26235a['message']));});});};
\ No newline at end of file
index 1320060..20d28fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbee8=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','index','/:id','isAuthenticated','show','post','/:id/applications','addApplications','put','update','delete','destroy','exports','multer','util'];(function(_0x259f97,_0x2a17ac){var _0x26b146=function(_0x20612f){while(--_0x20612f){_0x259f97['push'](_0x259f97['shift']());}};_0x26b146(++_0x2a17ac);}(_0xbee8,0x71));var _0x8bee=function(_0x322bef,_0x4890d4){_0x322bef=_0x322bef-0x0;var _0x229e60=_0xbee8[_0x322bef];return _0x229e60;};'use strict';var multer=require(_0x8bee('0x0'));var util=require(_0x8bee('0x1'));var path=require(_0x8bee('0x2'));var timeout=require(_0x8bee('0x3'));var express=require(_0x8bee('0x4'));var router=express[_0x8bee('0x5')]();var fs_extra=require(_0x8bee('0x6'));var auth=require(_0x8bee('0x7'));var interaction=require(_0x8bee('0x8'));var config=require(_0x8bee('0x9'));var controller=require(_0x8bee('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x8bee('0xb')]);router['get'](_0x8bee('0xc'),auth[_0x8bee('0xd')](),controller[_0x8bee('0xe')]);router[_0x8bee('0xf')]('/',auth[_0x8bee('0xd')](),controller['create']);router[_0x8bee('0xf')](_0x8bee('0x10'),auth[_0x8bee('0xd')](),controller[_0x8bee('0x11')]);router[_0x8bee('0x12')](_0x8bee('0xc'),auth[_0x8bee('0xd')](),controller[_0x8bee('0x13')]);router[_0x8bee('0x14')](_0x8bee('0xc'),auth[_0x8bee('0xd')](),controller[_0x8bee('0x15')]);module[_0x8bee('0x16')]=router;
\ No newline at end of file
+var _0x6dd1=['isAuthenticated','index','show','post','create','/:id/applications','addApplications','update','delete','destroy','multer','util','connect-timeout','express','Router','../../config/environment','get'];(function(_0x433650,_0x2780ed){var _0x13ce1d=function(_0x342294){while(--_0x342294){_0x433650['push'](_0x433650['shift']());}};_0x13ce1d(++_0x2780ed);}(_0x6dd1,0x1d5));var _0x16dd=function(_0x4bfe5d,_0x564ff9){_0x4bfe5d=_0x4bfe5d-0x0;var _0x3de032=_0x6dd1[_0x4bfe5d];return _0x3de032;};'use strict';var multer=require(_0x16dd('0x0'));var util=require(_0x16dd('0x1'));var path=require('path');var timeout=require(_0x16dd('0x2'));var express=require(_0x16dd('0x3'));var router=express[_0x16dd('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x16dd('0x5'));var controller=require('./voiceExtension.controller');router[_0x16dd('0x6')]('/',auth[_0x16dd('0x7')](),controller[_0x16dd('0x8')]);router[_0x16dd('0x6')]('/:id',auth[_0x16dd('0x7')](),controller[_0x16dd('0x9')]);router[_0x16dd('0xa')]('/',auth[_0x16dd('0x7')](),controller[_0x16dd('0xb')]);router['post'](_0x16dd('0xc'),auth[_0x16dd('0x7')](),controller[_0x16dd('0xd')]);router['put']('/:id',auth[_0x16dd('0x7')](),controller[_0x16dd('0xe')]);router[_0x16dd('0xf')]('/:id',auth[_0x16dd('0x7')](),controller[_0x16dd('0x10')]);module['exports']=router;
\ No newline at end of file
index df199d4..1791906 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca30=['system','any','*,*,*,*','INTEGER','BOOLEAN','VIRTUAL','exten','sequelize','STRING','compositeIndex','outbound','internal','inbound-fax','outbound-fax'];(function(_0x2369a8,_0x30ace4){var _0x5bb213=function(_0xf5fc4e){while(--_0xf5fc4e){_0x2369a8['push'](_0x2369a8['shift']());}};_0x5bb213(++_0x30ace4);}(_0xca30,0x103));var _0x0ca3=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0xca30[_0x13b02f];return _0x12e9a6;};'use strict';var Sequelize=require(_0x0ca3('0x0'));module['exports']={'context':{'type':Sequelize[_0x0ca3('0x1')],'allowNull':![],'unique':_0x0ca3('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':_0x0ca3('0x2')},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0x0ca3('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize['ENUM']('inbound',_0x0ca3('0x3'),_0x0ca3('0x4'),_0x0ca3('0x5'),_0x0ca3('0x6'),_0x0ca3('0x7'),_0x0ca3('0x8')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x0ca3('0x1')],'allowNull':![],'defaultValue':_0x0ca3('0x9')},'IntervalId':{'type':Sequelize[_0x0ca3('0xa')]},'isApp':{'type':Sequelize[_0x0ca3('0xb')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x0ca3('0x1')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize[_0x0ca3('0xb')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x0ca3('0xa')]},'recordingFormat':{'type':Sequelize[_0x0ca3('0x1')],'defaultValue':'wav'},'answer':{'type':Sequelize[_0x0ca3('0xb')],'defaultValue':!![]},'name':{'type':Sequelize[_0x0ca3('0xc')],'get':function(_0x311297){return this['getDataValue'](_0x0ca3('0xd'));}},'alias':{'type':Sequelize[_0x0ca3('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0xafe3=['NoOp','ENUM','inbound','outbound','internal','inbound-fax','outbound-fax','any','*,*,*,*','BOOLEAN','INTEGER','wav','getDataValue','exten','sequelize','exports','STRING','compositeIndex'];(function(_0x338a7c,_0x3d1205){var _0x417047=function(_0xac9e3b){while(--_0xac9e3b){_0x338a7c['push'](_0x338a7c['shift']());}};_0x417047(++_0x3d1205);}(_0xafe3,0xf8));var _0x3afe=function(_0x234150,_0x3976e0){_0x234150=_0x234150-0x0;var _0x3e5c24=_0xafe3[_0x234150];return _0x3e5c24;};'use strict';var Sequelize=require(_0x3afe('0x0'));module[_0x3afe('0x1')]={'context':{'type':Sequelize[_0x3afe('0x2')],'allowNull':![],'unique':_0x3afe('0x3'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x3afe('0x2')],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':_0x3afe('0x3')},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x3afe('0x2')],'allowNull':![],'defaultValue':_0x3afe('0x4')},'appdata':{'type':Sequelize[_0x3afe('0x2')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x3afe('0x5')](_0x3afe('0x6'),_0x3afe('0x7'),_0x3afe('0x8'),_0x3afe('0x9'),_0x3afe('0xa'),'system',_0x3afe('0xb')),'allowNull':![]},'description':{'type':Sequelize[_0x3afe('0x2')]},'interval':{'type':Sequelize[_0x3afe('0x2')],'allowNull':![],'defaultValue':_0x3afe('0xc')},'IntervalId':{'type':Sequelize['INTEGER']},'isApp':{'type':Sequelize[_0x3afe('0xd')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x3afe('0x2')],'defaultValue':null},'callerID':{'type':Sequelize[_0x3afe('0x2')],'allowNull':!![]},'record':{'type':Sequelize[_0x3afe('0xd')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x3afe('0xe')]},'recordingFormat':{'type':Sequelize[_0x3afe('0x2')],'defaultValue':_0x3afe('0xf')},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x595f6c){return this[_0x3afe('0x10')](_0x3afe('0x11'));}},'alias':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
index 5c27039..4f686e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb46d=['json','ioredis','../../components/parsers/qs','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','end','status','offset','undefined','limit','count','set','Content-Range','get','inbound','OutboundRoutes','outbound','InternalRoutes','internal','map','value','includes','type','find','name','UserProfileResource','destroy','then','sendStatus','error','send','index','VoiceExtension','rawAttributes','fieldName','model','keys','filters','intersection','attributes','fields','length','query','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','show','params','catch','startsWith','body','exten','concat','create','user','InboundRoutes','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','description','recordingFormat','cutdigits','mandatoryDisposition','alias','addApplications','sequelize','transaction','Transaction','READ_COMMITTED','VoiceExtensionId','isApp','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','stack','finally'];(function(_0x57c7e1,_0x2b6afa){var _0x30e63f=function(_0x163e73){while(--_0x163e73){_0x57c7e1['push'](_0x57c7e1['shift']());}};_0x30e63f(++_0x2b6afa);}(_0xb46d,0x165));var _0xdb46=function(_0x5d07ff,_0x1f976f){_0x5d07ff=_0x5d07ff-0x0;var _0x5226ad=_0xb46d[_0x5d07ff];return _0x5226ad;};'use strict';var _=require('lodash');var Redis=require(_0xdb46('0x0'));var qs=require(_0xdb46('0x1'));var logger=require('../../config/logger')(_0xdb46('0x2'));var config=require('../../config/environment');var db=require(_0xdb46('0x3'))['db'];config[_0xdb46('0x4')]=_[_0xdb46('0x5')](config['redis'],{'host':_0xdb46('0x6'),'port':0x18eb});var socket=require(_0xdb46('0x7'))(new Redis(config[_0xdb46('0x4')]));require('./voiceExtension.socket')[_0xdb46('0x8')](socket);function respondWithStatusCode(_0x2c122a,_0x5bb787){_0x5bb787=_0x5bb787||0xcc;return function(_0x5e905b){if(_0x5e905b){return _0x2c122a['sendStatus'](_0x5bb787);}return _0x2c122a['status'](_0x5bb787)[_0xdb46('0x9')]();};}function respondWithResult(_0x3ada04,_0x34674c){_0x34674c=_0x34674c||0xc8;return function(_0x3fa5b5){if(_0x3fa5b5){return _0x3ada04[_0xdb46('0xa')](_0x34674c)['json'](_0x3fa5b5);}};}function respondWithFilteredResult(_0x2cfd90,_0x2595c){return function(_0x30200e){if(_0x30200e){var _0x1ce6c0=typeof _0x2595c[_0xdb46('0xb')]===_0xdb46('0xc')&&typeof _0x2595c[_0xdb46('0xd')]===_0xdb46('0xc');var _0x4e149d=_0x30200e[_0xdb46('0xe')];var _0x36b540=_0x1ce6c0?0x0:_0x2595c[_0xdb46('0xb')];var _0x3a05fd=_0x1ce6c0?_0x30200e[_0xdb46('0xe')]:_0x2595c[_0xdb46('0xb')]+_0x2595c[_0xdb46('0xd')];var _0x2924f7;if(_0x3a05fd>=_0x4e149d){_0x3a05fd=_0x4e149d;_0x2924f7=0xc8;}else{_0x2924f7=0xce;}_0x2cfd90[_0xdb46('0xa')](_0x2924f7);return _0x2cfd90[_0xdb46('0xf')](_0xdb46('0x10'),_0x36b540+'-'+_0x3a05fd+'/'+_0x4e149d)['json'](_0x30200e);}return null;};}function removeEntity(_0x360db0){return function(_0x272a9a){if(_0x272a9a){return _0x272a9a['destroy']()['then'](function(){var _0x3eab4b=_0x272a9a[_0xdb46('0x11')]({'plain':!![]});var _0x2f3c62=[{'name':'InboundRoutes','value':_0xdb46('0x12'),'ignore':![]},{'name':_0xdb46('0x13'),'value':_0xdb46('0x14'),'ignore':![]},{'name':_0xdb46('0x15'),'value':_0xdb46('0x16'),'ignore':![]}];var _0x4614ca=_(_0x2f3c62)['filter']('ignore')[_0xdb46('0x17')](_0xdb46('0x18'))[_0xdb46('0x18')]();if(_[_0xdb46('0x19')](_0x4614ca,_0x3eab4b[_0xdb46('0x1a')])){return;}var _0x1ccfc2=_[_0xdb46('0x1b')](_0x2f3c62,[_0xdb46('0x18'),_0x3eab4b[_0xdb46('0x1a')]])[_0xdb46('0x1c')];return db[_0xdb46('0x1d')][_0xdb46('0x1e')]({'where':{'type':_0x1ccfc2,'resourceId':_0x3eab4b['id']}})['then'](function(){return _0x272a9a;});})[_0xdb46('0x1f')](function(){_0x360db0[_0xdb46('0xa')](0xcc)['end']();});}};}function handleEntityNotFound(_0x40d3e5){return function(_0x2285ac){if(!_0x2285ac){_0x40d3e5[_0xdb46('0x20')](0x194);}return _0x2285ac;};}function handleError(_0x63d61b,_0x3b1ee4){_0x3b1ee4=_0x3b1ee4||0x1f4;return function(_0x911759){logger[_0xdb46('0x21')](_0x911759['stack']);if(_0x911759[_0xdb46('0x1c')]){delete _0x911759[_0xdb46('0x1c')];}_0x63d61b[_0xdb46('0xa')](_0x3b1ee4)[_0xdb46('0x22')](_0x911759);};}exports[_0xdb46('0x23')]=function(_0x533325,_0x31407a){var _0x2d0494={},_0x18bae5={},_0x3f6bc3={'count':0x0,'rows':[]};var _0x57bb00=_[_0xdb46('0x17')](db[_0xdb46('0x24')][_0xdb46('0x25')],function(_0x2ae9b7){return{'name':_0x2ae9b7[_0xdb46('0x26')],'type':_0x2ae9b7[_0xdb46('0x1a')]['key']};});_0x18bae5[_0xdb46('0x27')]=_[_0xdb46('0x17')](_0x57bb00,_0xdb46('0x1c'));_0x18bae5['query']=_[_0xdb46('0x28')](_0x533325['query']);_0x18bae5[_0xdb46('0x29')]=_[_0xdb46('0x2a')](_0x18bae5['model'],_0x18bae5['query']);_0x2d0494[_0xdb46('0x2b')]=_['intersection'](_0x18bae5[_0xdb46('0x27')],qs[_0xdb46('0x2c')](_0x533325['query'][_0xdb46('0x2c')]));_0x2d0494[_0xdb46('0x2b')]=_0x2d0494['attributes'][_0xdb46('0x2d')]?_0x2d0494[_0xdb46('0x2b')]:_0x18bae5['model'];if(!_0x533325[_0xdb46('0x2e')]['hasOwnProperty'](_0xdb46('0x2f'))){_0x2d0494[_0xdb46('0xd')]=qs['limit'](_0x533325[_0xdb46('0x2e')][_0xdb46('0xd')]);_0x2d0494[_0xdb46('0xb')]=qs[_0xdb46('0xb')](_0x533325[_0xdb46('0x2e')][_0xdb46('0xb')]);}_0x2d0494[_0xdb46('0x30')]=qs[_0xdb46('0x31')](_0x533325[_0xdb46('0x2e')][_0xdb46('0x31')]);_0x2d0494[_0xdb46('0x32')]=qs['filters'](_[_0xdb46('0x33')](_0x533325[_0xdb46('0x2e')],_0x18bae5[_0xdb46('0x29')]),_0x57bb00);if(_0x533325[_0xdb46('0x2e')][_0xdb46('0x34')]){_0x2d0494['where']=_[_0xdb46('0x35')](_0x2d0494[_0xdb46('0x32')],{'$or':_['map'](_0x57bb00,function(_0x963e56){if(_0x963e56[_0xdb46('0x1a')]!=='VIRTUAL'){var _0x2e1afd={};_0x2e1afd[_0x963e56[_0xdb46('0x1c')]]={'$like':'%'+_0x533325[_0xdb46('0x2e')][_0xdb46('0x34')]+'%'};return _0x2e1afd;}})});}_0x2d0494=_[_0xdb46('0x35')]({},_0x2d0494,_0x533325[_0xdb46('0x36')]);var _0x526c00={'where':_0x2d0494[_0xdb46('0x32')]};return db[_0xdb46('0x24')]['count'](_0x526c00)[_0xdb46('0x1f')](function(_0xfe3a45){_0x3f6bc3['count']=_0xfe3a45;if(_0x533325[_0xdb46('0x2e')][_0xdb46('0x37')]){_0x2d0494[_0xdb46('0x38')]=[{'all':!![]}];}return db[_0xdb46('0x24')]['findAll'](_0x2d0494);})[_0xdb46('0x1f')](function(_0x15540e){_0x3f6bc3['rows']=_0x15540e;return _0x3f6bc3;})['then'](respondWithFilteredResult(_0x31407a,_0x2d0494))['catch'](handleError(_0x31407a,null));};exports[_0xdb46('0x39')]=function(_0x48cefa,_0x6281b6){var _0x5156ef={'raw':![],'where':{'id':_0x48cefa[_0xdb46('0x3a')]['id']}},_0x45bd9e={};_0x45bd9e['model']=_[_0xdb46('0x28')](db[_0xdb46('0x24')][_0xdb46('0x25')]);_0x45bd9e[_0xdb46('0x2e')]=_[_0xdb46('0x28')](_0x48cefa[_0xdb46('0x2e')]);_0x45bd9e['filters']=_[_0xdb46('0x2a')](_0x45bd9e[_0xdb46('0x27')],_0x45bd9e['query']);_0x5156ef[_0xdb46('0x2b')]=_['intersection'](_0x45bd9e[_0xdb46('0x27')],qs[_0xdb46('0x2c')](_0x48cefa[_0xdb46('0x2e')][_0xdb46('0x2c')]));_0x5156ef[_0xdb46('0x2b')]=_0x5156ef['attributes'][_0xdb46('0x2d')]?_0x5156ef[_0xdb46('0x2b')]:_0x45bd9e[_0xdb46('0x27')];if(_0x48cefa['query']['includeAll']){_0x5156ef[_0xdb46('0x38')]=[{'all':!![]}];}_0x5156ef=_[_0xdb46('0x35')]({},_0x5156ef,_0x48cefa[_0xdb46('0x36')]);return db['VoiceExtension'][_0xdb46('0x1b')](_0x5156ef)[_0xdb46('0x1f')](handleEntityNotFound(_0x6281b6,null))[_0xdb46('0x1f')](respondWithResult(_0x6281b6,null))[_0xdb46('0x3b')](handleError(_0x6281b6,null));};exports[_0xdb46('0x1e')]=function(_0x204515,_0x490c26){return db[_0xdb46('0x24')][_0xdb46('0x1b')]({'where':{'id':_0x204515[_0xdb46('0x3a')]['id']}})[_0xdb46('0x1f')](handleEntityNotFound(_0x490c26,null))[_0xdb46('0x1f')](removeEntity(_0x490c26,null))[_0xdb46('0x3b')](handleError(_0x490c26,null));};exports['create']=function(_0xdeaf95,_0x3be140){if(_0xdeaf95['body'][_0xdb46('0x1a')]===_0xdb46('0x14')&&!_[_0xdb46('0x3c')](_0xdeaf95[_0xdb46('0x3d')][_0xdb46('0x3e')],'_')){_0xdeaf95['body'][_0xdb46('0x3e')]='_'[_0xdb46('0x3f')](_0xdeaf95[_0xdb46('0x3d')][_0xdb46('0x3e')]);}return db['VoiceExtension'][_0xdb46('0x40')](_0xdeaf95[_0xdb46('0x3d')],{'raw':![]})[_0xdb46('0x1f')](function(_0x595a5c){var _0x4f281a=_0xdeaf95[_0xdb46('0x41')][_0xdb46('0x11')]({'plain':!![]});if(!_0x4f281a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4f281a['role']==='user'){var _0x83fa32=_0x595a5c['get']({'plain':!![]});var _0x1a2fa0=[{'name':_0xdb46('0x42'),'value':_0xdb46('0x12')},{'name':_0xdb46('0x13'),'value':'outbound'},{'name':_0xdb46('0x15'),'value':'internal'}];var _0x5ae072=_[_0xdb46('0x1b')](_0x1a2fa0,['value',_0x83fa32[_0xdb46('0x1a')]])['name'];return db[_0xdb46('0x43')][_0xdb46('0x1b')]({'where':{'name':_0x5ae072,'userProfileId':_0x4f281a['userProfileId']},'raw':!![]})[_0xdb46('0x1f')](function(_0x1e9938){if(_0x1e9938&&_0x1e9938[_0xdb46('0x44')]===0x0){return db[_0xdb46('0x1d')][_0xdb46('0x40')]({'name':_0x83fa32[_0xdb46('0x1c')],'resourceId':_0x83fa32['id'],'type':_0x1e9938[_0xdb46('0x1c')],'sectionId':_0x1e9938['id']},{})[_0xdb46('0x1f')](function(){return _0x595a5c;});}else{return _0x595a5c;}})['catch'](function(_0x450be8){logger[_0xdb46('0x21')](_0xdb46('0x45'),_0x450be8);throw _0x450be8;});}return _0x595a5c;})[_0xdb46('0x1f')](respondWithResult(_0x3be140,0xc9))[_0xdb46('0x3b')](handleError(_0x3be140,null));};exports['update']=function(_0x3816fe,_0x102a37){if(_0x3816fe[_0xdb46('0x3d')]['id']){delete _0x3816fe['body']['id'];}return db[_0xdb46('0x24')][_0xdb46('0x1b')]({'where':{'id':_0x3816fe[_0xdb46('0x3a')]['id']}})[_0xdb46('0x1f')](handleEntityNotFound(_0x102a37,null))[_0xdb46('0x1f')](function(_0x1788f0){if(_0x1788f0){return db['VoiceExtension'][_0xdb46('0x46')](_[_0xdb46('0x33')](_0x3816fe[_0xdb46('0x3d')],[_0xdb46('0x3e'),'context',_0xdb46('0x47'),_0xdb46('0x48'),_0xdb46('0x49'),_0xdb46('0x4a'),_0xdb46('0x4b')]),{'where':{'context':_0x1788f0['context'],'exten':_0x1788f0[_0xdb46('0x3e')]},'individualHooks':!![]})[_0xdb46('0x1f')](function(_0x48bacd){return _0x48bacd;});}return null;})[_0xdb46('0x1f')](respondWithStatusCode(_0x102a37,null))['catch'](handleError(_0x102a37,null));};exports[_0xdb46('0x4c')]=function(_0x521919,_0x5a65eb){var _0x160e91=_0x521919[_0xdb46('0x3a')]['id'];var _0x1a237a=_0x521919['body'];var _0x246d87=0xc8;var _0x5db772=null;return db[_0xdb46('0x4d')][_0xdb46('0x4e')]({'isolationLevel':db[_0xdb46('0x4d')][_0xdb46('0x4f')]['ISOLATION_LEVELS'][_0xdb46('0x50')]},function(_0x5a80fe){return db['VoiceExtension']['findOne']({'where':{'id':_0x160e91},'transaction':_0x5a80fe})[_0xdb46('0x1f')](function(_0x5bb44a){if(_0x5bb44a){return db['VoiceExtension'][_0xdb46('0x1e')]({'where':{'VoiceExtensionId':_0x160e91},'transaction':_0x5a80fe})[_0xdb46('0x1f')](function(){var _0x2efe43=_[_0xdb46('0x17')](_0x1a237a,function(_0x123d00){_0x123d00[_0xdb46('0x51')]=_0x160e91;_0x123d00[_0xdb46('0x52')]=!![];return _0x123d00;});return _0x5bb44a['createRouting'](_0x2efe43);})[_0xdb46('0x1f')](function(_0x392ffd){return db[_0xdb46('0x24')][_0xdb46('0x53')](_0x392ffd,{'transaction':_0x5a80fe});});}else{_0x246d87=0x194;_0x5db772=[];}});})[_0xdb46('0x1f')](function(){if(_0x246d87!==0x194){return db[_0xdb46('0x24')][_0xdb46('0x54')]({'where':{'isApp':!![],'VoiceExtensionId':_0x160e91},'order':_0xdb46('0x55')})[_0xdb46('0x1f')](function(_0x2efa22){_0x5db772=_0x2efa22;});}})[_0xdb46('0x3b')](function(_0x5d2e33){_0x246d87=0x1f4;logger[_0xdb46('0x21')](_0x5d2e33[_0xdb46('0x56')]);if(_0x5d2e33['name']){delete _0x5d2e33[_0xdb46('0x1c')];}_0x5db772=_0x5d2e33;})[_0xdb46('0x57')](function(){if(_0x5db772===null){_0x5a65eb[_0xdb46('0x20')](_0x246d87);}else{if(_0x246d87===0x1f4){_0x5a65eb[_0xdb46('0xa')](_0x246d87)['send'](_0x5db772);}else{_0x5a65eb[_0xdb46('0xa')](_0x246d87)[_0xdb46('0x58')](_0x5db772);}}});};
\ No newline at end of file
+var _0x04e2=['stack','send','index','map','VoiceExtension','rawAttributes','query','keys','intersection','model','attributes','fields','length','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','include','show','params','catch','body','exten','concat','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','OutboundRoutes','internal','UserProfileSection','update','description','recordingFormat','mandatoryDisposition','alias','context','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','finally','sendStatus','lodash','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./voiceExtension.socket','register','end','status','offset','undefined','limit','count','set','Content-Range','json','destroy','then','get','InboundRoutes','inbound','outbound','InternalRoutes','value','includes','type','find','name','error'];(function(_0x3318fe,_0x3f5d89){var _0x574ad=function(_0x2e843e){while(--_0x2e843e){_0x3318fe['push'](_0x3318fe['shift']());}};_0x574ad(++_0x3f5d89);}(_0x04e2,0x19b));var _0x204e=function(_0x4d68b0,_0x3c971e){_0x4d68b0=_0x4d68b0-0x0;var _0x2efe58=_0x04e2[_0x4d68b0];return _0x2efe58;};'use strict';var _=require(_0x204e('0x0'));var Redis=require(_0x204e('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0x204e('0x2'))(_0x204e('0x3'));var config=require(_0x204e('0x4'));var db=require(_0x204e('0x5'))['db'];config['redis']=_[_0x204e('0x6')](config[_0x204e('0x7')],{'host':_0x204e('0x8'),'port':0x18eb});var socket=require(_0x204e('0x9'))(new Redis(config['redis']));require(_0x204e('0xa'))[_0x204e('0xb')](socket);function respondWithStatusCode(_0x5150b0,_0x5d7781){_0x5d7781=_0x5d7781||0xcc;return function(_0x411398){if(_0x411398){return _0x5150b0['sendStatus'](_0x5d7781);}return _0x5150b0['status'](_0x5d7781)[_0x204e('0xc')]();};}function respondWithResult(_0x28cc53,_0x3d45d7){_0x3d45d7=_0x3d45d7||0xc8;return function(_0x4adbb5){if(_0x4adbb5){return _0x28cc53[_0x204e('0xd')](_0x3d45d7)['json'](_0x4adbb5);}};}function respondWithFilteredResult(_0x48a010,_0x54165e){return function(_0x48e51f){if(_0x48e51f){var _0x5dbf58=typeof _0x54165e[_0x204e('0xe')]===_0x204e('0xf')&&typeof _0x54165e[_0x204e('0x10')]==='undefined';var _0xbf1798=_0x48e51f[_0x204e('0x11')];var _0x48f64c=_0x5dbf58?0x0:_0x54165e[_0x204e('0xe')];var _0x774589=_0x5dbf58?_0x48e51f['count']:_0x54165e[_0x204e('0xe')]+_0x54165e[_0x204e('0x10')];var _0x141893;if(_0x774589>=_0xbf1798){_0x774589=_0xbf1798;_0x141893=0xc8;}else{_0x141893=0xce;}_0x48a010[_0x204e('0xd')](_0x141893);return _0x48a010[_0x204e('0x12')](_0x204e('0x13'),_0x48f64c+'-'+_0x774589+'/'+_0xbf1798)[_0x204e('0x14')](_0x48e51f);}return null;};}function removeEntity(_0x1fdef4){return function(_0x758fb6){if(_0x758fb6){return _0x758fb6[_0x204e('0x15')]()[_0x204e('0x16')](function(){var _0x4cb1bb=_0x758fb6[_0x204e('0x17')]({'plain':!![]});var _0x5eb417=[{'name':_0x204e('0x18'),'value':_0x204e('0x19'),'ignore':![]},{'name':'OutboundRoutes','value':_0x204e('0x1a'),'ignore':![]},{'name':_0x204e('0x1b'),'value':'internal','ignore':![]}];var _0x7ba094=_(_0x5eb417)['filter']('ignore')['map'](_0x204e('0x1c'))[_0x204e('0x1c')]();if(_[_0x204e('0x1d')](_0x7ba094,_0x4cb1bb[_0x204e('0x1e')])){return;}var _0x565e3d=_[_0x204e('0x1f')](_0x5eb417,[_0x204e('0x1c'),_0x4cb1bb[_0x204e('0x1e')]])[_0x204e('0x20')];return db['UserProfileResource']['destroy']({'where':{'type':_0x565e3d,'resourceId':_0x4cb1bb['id']}})[_0x204e('0x16')](function(){return _0x758fb6;});})[_0x204e('0x16')](function(){_0x1fdef4[_0x204e('0xd')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d0290){return function(_0x5d0abc){if(!_0x5d0abc){_0x3d0290['sendStatus'](0x194);}return _0x5d0abc;};}function handleError(_0xf57b0b,_0x334a7d){_0x334a7d=_0x334a7d||0x1f4;return function(_0x327495){logger[_0x204e('0x21')](_0x327495[_0x204e('0x22')]);if(_0x327495[_0x204e('0x20')]){delete _0x327495['name'];}_0xf57b0b['status'](_0x334a7d)[_0x204e('0x23')](_0x327495);};}exports[_0x204e('0x24')]=function(_0x5238f8,_0xba7255){var _0x30dfe2={},_0x23d5e3={},_0x5de3c1={'count':0x0,'rows':[]};var _0x1972e6=_[_0x204e('0x25')](db[_0x204e('0x26')][_0x204e('0x27')],function(_0x17a5d4){return{'name':_0x17a5d4['fieldName'],'type':_0x17a5d4[_0x204e('0x1e')]['key']};});_0x23d5e3['model']=_[_0x204e('0x25')](_0x1972e6,_0x204e('0x20'));_0x23d5e3[_0x204e('0x28')]=_[_0x204e('0x29')](_0x5238f8[_0x204e('0x28')]);_0x23d5e3['filters']=_[_0x204e('0x2a')](_0x23d5e3[_0x204e('0x2b')],_0x23d5e3[_0x204e('0x28')]);_0x30dfe2[_0x204e('0x2c')]=_[_0x204e('0x2a')](_0x23d5e3[_0x204e('0x2b')],qs[_0x204e('0x2d')](_0x5238f8[_0x204e('0x28')]['fields']));_0x30dfe2[_0x204e('0x2c')]=_0x30dfe2[_0x204e('0x2c')][_0x204e('0x2e')]?_0x30dfe2[_0x204e('0x2c')]:_0x23d5e3[_0x204e('0x2b')];if(!_0x5238f8[_0x204e('0x28')]['hasOwnProperty'](_0x204e('0x2f'))){_0x30dfe2['limit']=qs[_0x204e('0x10')](_0x5238f8[_0x204e('0x28')][_0x204e('0x10')]);_0x30dfe2[_0x204e('0xe')]=qs[_0x204e('0xe')](_0x5238f8[_0x204e('0x28')][_0x204e('0xe')]);}_0x30dfe2[_0x204e('0x30')]=qs[_0x204e('0x31')](_0x5238f8['query']['sort']);_0x30dfe2['where']=qs[_0x204e('0x32')](_[_0x204e('0x33')](_0x5238f8['query'],_0x23d5e3[_0x204e('0x32')]),_0x1972e6);if(_0x5238f8[_0x204e('0x28')][_0x204e('0x34')]){_0x30dfe2[_0x204e('0x35')]=_[_0x204e('0x36')](_0x30dfe2['where'],{'$or':_[_0x204e('0x25')](_0x1972e6,function(_0x1b6fb9){if(_0x1b6fb9['type']!==_0x204e('0x37')){var _0x72d38f={};_0x72d38f[_0x1b6fb9[_0x204e('0x20')]]={'$like':'%'+_0x5238f8[_0x204e('0x28')][_0x204e('0x34')]+'%'};return _0x72d38f;}})});}_0x30dfe2=_[_0x204e('0x36')]({},_0x30dfe2,_0x5238f8[_0x204e('0x38')]);var _0x44bc2a={'where':_0x30dfe2[_0x204e('0x35')]};return db['VoiceExtension'][_0x204e('0x11')](_0x44bc2a)[_0x204e('0x16')](function(_0xa6358){_0x5de3c1[_0x204e('0x11')]=_0xa6358;if(_0x5238f8[_0x204e('0x28')]['includeAll']){_0x30dfe2[_0x204e('0x39')]=[{'all':!![]}];}return db['VoiceExtension']['findAll'](_0x30dfe2);})['then'](function(_0x3df2f4){_0x5de3c1['rows']=_0x3df2f4;return _0x5de3c1;})[_0x204e('0x16')](respondWithFilteredResult(_0xba7255,_0x30dfe2))['catch'](handleError(_0xba7255,null));};exports[_0x204e('0x3a')]=function(_0x218f86,_0x272539){var _0x3c4aa7={'raw':![],'where':{'id':_0x218f86[_0x204e('0x3b')]['id']}},_0x1b4fd5={};_0x1b4fd5[_0x204e('0x2b')]=_[_0x204e('0x29')](db[_0x204e('0x26')]['rawAttributes']);_0x1b4fd5['query']=_[_0x204e('0x29')](_0x218f86[_0x204e('0x28')]);_0x1b4fd5['filters']=_[_0x204e('0x2a')](_0x1b4fd5['model'],_0x1b4fd5[_0x204e('0x28')]);_0x3c4aa7[_0x204e('0x2c')]=_[_0x204e('0x2a')](_0x1b4fd5[_0x204e('0x2b')],qs[_0x204e('0x2d')](_0x218f86[_0x204e('0x28')]['fields']));_0x3c4aa7['attributes']=_0x3c4aa7['attributes']['length']?_0x3c4aa7['attributes']:_0x1b4fd5[_0x204e('0x2b')];if(_0x218f86[_0x204e('0x28')]['includeAll']){_0x3c4aa7[_0x204e('0x39')]=[{'all':!![]}];}_0x3c4aa7=_[_0x204e('0x36')]({},_0x3c4aa7,_0x218f86['options']);return db[_0x204e('0x26')][_0x204e('0x1f')](_0x3c4aa7)['then'](handleEntityNotFound(_0x272539,null))[_0x204e('0x16')](respondWithResult(_0x272539,null))[_0x204e('0x3c')](handleError(_0x272539,null));};exports[_0x204e('0x15')]=function(_0x5b1200,_0x2080b6){return db[_0x204e('0x26')][_0x204e('0x1f')]({'where':{'id':_0x5b1200[_0x204e('0x3b')]['id']}})[_0x204e('0x16')](handleEntityNotFound(_0x2080b6,null))[_0x204e('0x16')](removeEntity(_0x2080b6,null))[_0x204e('0x3c')](handleError(_0x2080b6,null));};exports['create']=function(_0xd5c072,_0x15a2a8){if(_0xd5c072[_0x204e('0x3d')][_0x204e('0x1e')]===_0x204e('0x1a')&&!_['startsWith'](_0xd5c072[_0x204e('0x3d')][_0x204e('0x3e')],'_')){_0xd5c072[_0x204e('0x3d')]['exten']='_'[_0x204e('0x3f')](_0xd5c072[_0x204e('0x3d')]['exten']);}return db['VoiceExtension'][_0x204e('0x40')](_0xd5c072['body'],{'raw':![]})[_0x204e('0x16')](function(_0x215a48){var _0x2378c0=_0xd5c072[_0x204e('0x41')][_0x204e('0x17')]({'plain':!![]});if(!_0x2378c0)throw new Error(_0x204e('0x42'));if(_0x2378c0[_0x204e('0x43')]===_0x204e('0x41')){var _0x899b9d=_0x215a48[_0x204e('0x17')]({'plain':!![]});var _0x220325=[{'name':_0x204e('0x18'),'value':_0x204e('0x19')},{'name':_0x204e('0x44'),'value':_0x204e('0x1a')},{'name':_0x204e('0x1b'),'value':_0x204e('0x45')}];var _0x2bcc30=_['find'](_0x220325,[_0x204e('0x1c'),_0x899b9d[_0x204e('0x1e')]])[_0x204e('0x20')];return db[_0x204e('0x46')][_0x204e('0x1f')]({'where':{'name':_0x2bcc30,'userProfileId':_0x2378c0['userProfileId']},'raw':!![]})[_0x204e('0x16')](function(_0x1d5fd3){if(_0x1d5fd3&&_0x1d5fd3['autoAssociation']===0x0){return db['UserProfileResource'][_0x204e('0x40')]({'name':_0x899b9d[_0x204e('0x20')],'resourceId':_0x899b9d['id'],'type':_0x1d5fd3[_0x204e('0x20')],'sectionId':_0x1d5fd3['id']},{})[_0x204e('0x16')](function(){return _0x215a48;});}else{return _0x215a48;}})['catch'](function(_0x19fb07){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x19fb07);throw _0x19fb07;});}return _0x215a48;})[_0x204e('0x16')](respondWithResult(_0x15a2a8,0xc9))['catch'](handleError(_0x15a2a8,null));};exports['update']=function(_0x508129,_0x5910aa){if(_0x508129[_0x204e('0x3d')]['id']){delete _0x508129[_0x204e('0x3d')]['id'];}return db['VoiceExtension'][_0x204e('0x1f')]({'where':{'id':_0x508129[_0x204e('0x3b')]['id']}})[_0x204e('0x16')](handleEntityNotFound(_0x5910aa,null))[_0x204e('0x16')](function(_0x11d4ed){if(_0x11d4ed){return db[_0x204e('0x26')][_0x204e('0x47')](_[_0x204e('0x33')](_0x508129[_0x204e('0x3d')],[_0x204e('0x3e'),'context',_0x204e('0x48'),_0x204e('0x49'),'cutdigits',_0x204e('0x4a'),_0x204e('0x4b')]),{'where':{'context':_0x11d4ed[_0x204e('0x4c')],'exten':_0x11d4ed[_0x204e('0x3e')]},'individualHooks':!![]})['then'](function(_0x1a19ff){return _0x1a19ff;});}return null;})[_0x204e('0x16')](respondWithStatusCode(_0x5910aa,null))[_0x204e('0x3c')](handleError(_0x5910aa,null));};exports[_0x204e('0x4d')]=function(_0xaf086b,_0x355fbb){var _0x2197d8=_0xaf086b[_0x204e('0x3b')]['id'];var _0x305076=_0xaf086b[_0x204e('0x3d')];var _0x1ba78a=0xc8;var _0x414529=null;return db[_0x204e('0x4e')][_0x204e('0x4f')]({'isolationLevel':db[_0x204e('0x4e')][_0x204e('0x50')][_0x204e('0x51')][_0x204e('0x52')]},function(_0x1bcadf){return db[_0x204e('0x26')][_0x204e('0x53')]({'where':{'id':_0x2197d8},'transaction':_0x1bcadf})[_0x204e('0x16')](function(_0x9e3824){if(_0x9e3824){return db[_0x204e('0x26')][_0x204e('0x15')]({'where':{'VoiceExtensionId':_0x2197d8},'transaction':_0x1bcadf})[_0x204e('0x16')](function(){var _0x5a7c74=_[_0x204e('0x25')](_0x305076,function(_0x4e7b55){_0x4e7b55['VoiceExtensionId']=_0x2197d8;_0x4e7b55['isApp']=!![];return _0x4e7b55;});return _0x9e3824['createRouting'](_0x5a7c74);})[_0x204e('0x16')](function(_0x108e16){return db[_0x204e('0x26')][_0x204e('0x54')](_0x108e16,{'transaction':_0x1bcadf});});}else{_0x1ba78a=0x194;_0x414529=[];}});})['then'](function(){if(_0x1ba78a!==0x194){return db[_0x204e('0x26')][_0x204e('0x55')]({'where':{'isApp':!![],'VoiceExtensionId':_0x2197d8},'order':_0x204e('0x56')})[_0x204e('0x16')](function(_0xc56ef0){_0x414529=_0xc56ef0;});}})['catch'](function(_0x2375c3){_0x1ba78a=0x1f4;logger[_0x204e('0x21')](_0x2375c3['stack']);if(_0x2375c3[_0x204e('0x20')]){delete _0x2375c3[_0x204e('0x20')];}_0x414529=_0x2375c3;})[_0x204e('0x57')](function(){if(_0x414529===null){_0x355fbb[_0x204e('0x58')](_0x1ba78a);}else{if(_0x1ba78a===0x1f4){_0x355fbb[_0x204e('0xd')](_0x1ba78a)[_0x204e('0x23')](_0x414529);}else{_0x355fbb[_0x204e('0xd')](_0x1ba78a)[_0x204e('0x14')](_0x414529);}}});};
\ No newline at end of file
index 901b600..99ae7c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a4e=['update','emit','hasOwnProperty','hook','VoiceExtension','setMaxListeners','save'];(function(_0x497e57,_0xc40aab){var _0x45aee3=function(_0x52caf0){while(--_0x52caf0){_0x497e57['push'](_0x497e57['shift']());}};_0x45aee3(++_0xc40aab);}(_0x6a4e,0x7b));var _0xe6a4=function(_0x1fac35,_0x3e8082){_0x1fac35=_0x1fac35-0x0;var _0xdd273=_0x6a4e[_0x1fac35];return _0xdd273;};'use strict';var EventEmitter=require('events');var VoiceExtension=require('../../mysqldb')['db'][_0xe6a4('0x0')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xe6a4('0x1')](0x0);var events={'afterCreate':_0xe6a4('0x2'),'afterUpdate':_0xe6a4('0x3'),'afterDestroy':'remove'};function emitEvent(_0x30f21f){return function(_0x110ded,_0x63feba,_0x41a1f6){VoiceExtensionEvents[_0xe6a4('0x4')](_0x30f21f+':'+_0x110ded['id'],_0x110ded);VoiceExtensionEvents[_0xe6a4('0x4')](_0x30f21f,_0x110ded);_0x41a1f6(null);};}for(var e in events){if(events[_0xe6a4('0x5')](e)){var event=events[e];VoiceExtension[_0xe6a4('0x6')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
+var _0x47de=['hasOwnProperty','exports','../../mysqldb','VoiceExtension','setMaxListeners','emit'];(function(_0x29771f,_0x1189ae){var _0x279baf=function(_0xd66325){while(--_0xd66325){_0x29771f['push'](_0x29771f['shift']());}};_0x279baf(++_0x1189ae);}(_0x47de,0xbc));var _0xe47d=function(_0x1f0fcc,_0x4eddde){_0x1f0fcc=_0x1f0fcc-0x0;var _0x17f201=_0x47de[_0x1f0fcc];return _0x17f201;};'use strict';var EventEmitter=require('events');var VoiceExtension=require(_0xe47d('0x0'))['db'][_0xe47d('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xe47d('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x54c7bb){return function(_0x15a61d,_0x2f0311,_0x54f800){VoiceExtensionEvents[_0xe47d('0x3')](_0x54c7bb+':'+_0x15a61d['id'],_0x15a61d);VoiceExtensionEvents[_0xe47d('0x3')](_0x54c7bb,_0x15a61d);_0x54f800(null);};}for(var e in events){if(events[_0xe47d('0x4')](e)){var event=events[e];VoiceExtension['hook'](e,emitEvent(event));}}module[_0xe47d('0x5')]=VoiceExtensionEvents;
\ No newline at end of file
index 2885d0b..b73d917 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b36=['trunk','timeout','options','url','split','name','param','phone','prefix','SIP','join','none','indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','findAll','interval','IntervalId','length','*,*,*,*','intervals','map','filter','toLowerCase','tag','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','NoOp(No\x20number\x20available)','queue','includes','appType','custom','answer','XCALLY-MOTION-ANSWER=1',',${EXTEN},','outboundDial','appdata','priority','last','concat','define','voice_extensions','get','then','Hangup','./voiceExtension.attributes','exports','models','type','Set','CDR(type)=','context','exten','NoOp','alias','CDR(routeAlias)=','No\x20alias\x20set','inbound','push','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','outbound','CDR(type)=outbound','${EXTEN:','cutdigits','${EXTEN}','CDR(routeid)=','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','outboundrouteid=','hasOwnProperty','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav'];(function(_0x2e2b50,_0xf76aa6){var _0x53fc89=function(_0x3e72b6){while(--_0x3e72b6){_0x2e2b50['push'](_0x2e2b50['shift']());}};_0x53fc89(++_0xf76aa6);}(_0x0b36,0x80));var _0x60b3=function(_0xd2f4f5,_0x341930){_0xd2f4f5=_0xd2f4f5-0x0;var _0x41fc10=_0x0b36[_0xd2f4f5];return _0x41fc10;};'use strict';var _=require('lodash');var attributes=require(_0x60b3('0x0'));module[_0x60b3('0x1')]=function(_0x57e07d){var _0xea4103=_0x57e07d[_0x60b3('0x2')];function _0x39df81(_0x452c82){var _0x1a765b=0x2;var _0x53c01c=[{'type':_0x452c82[_0x60b3('0x3')],'app':_0x60b3('0x4'),'appdata':_0x60b3('0x5')+_0x452c82['type'],'context':_0x452c82[_0x60b3('0x6')],'exten':_0x452c82[_0x60b3('0x7')],'priority':_0x1a765b++,'VoiceExtensionId':_0x452c82['id']},{'type':_0x452c82['type'],'app':_0x452c82['alias']?_0x60b3('0x4'):_0x60b3('0x8'),'appdata':_0x452c82[_0x60b3('0x9')]?_0x60b3('0xa')+_0x452c82[_0x60b3('0x9')]:_0x60b3('0xb'),'context':_0x452c82[_0x60b3('0x6')],'exten':_0x452c82[_0x60b3('0x7')],'priority':_0x1a765b++,'VoiceExtensionId':_0x452c82['id']}];if(_0x452c82[_0x60b3('0x3')]===_0x60b3('0xc')){_0x53c01c[_0x60b3('0xd')]({'type':_0x60b3('0xc'),'app':'Set','appdata':'CDR(routeid)='+_0x452c82['id'],'context':_0x452c82['context'],'exten':_0x452c82['exten'],'priority':_0x1a765b++,'VoiceExtensionId':_0x452c82['id']});}_0x53c01c[_0x60b3('0xd')]({'type':_0x452c82[_0x60b3('0x3')],'app':_0x60b3('0x4'),'appdata':_0x60b3('0xe'),'context':_0x452c82['context'],'exten':_0x452c82[_0x60b3('0x7')],'priority':_0x1a765b++,'VoiceExtensionId':_0x452c82['id']},{'type':_0x452c82[_0x60b3('0x3')],'app':'Set','appdata':_0x60b3('0xf'),'context':_0x452c82[_0x60b3('0x6')],'exten':_0x452c82[_0x60b3('0x7')],'priority':_0x1a765b++,'VoiceExtensionId':_0x452c82['id']},{'type':_0x452c82['type'],'app':'Set','appdata':'MONITOR_OPTIONS=ab','context':_0x452c82[_0x60b3('0x6')],'exten':_0x452c82['exten'],'priority':_0x1a765b++,'VoiceExtensionId':_0x452c82['id']});return _0x53c01c;}function _0x4be434(_0x64fbb6){var _0x5ac95c=0x2;var _0x55ea82=[{'type':_0x60b3('0x10'),'app':_0x60b3('0x4'),'appdata':_0x60b3('0x11'),'context':_0x64fbb6[_0x60b3('0x6')],'exten':_0x64fbb6['exten'],'priority':_0x5ac95c++,'VoiceExtensionId':_0x64fbb6['id']},{'type':'outbound','app':_0x64fbb6[_0x60b3('0x9')]?_0x60b3('0x4'):_0x60b3('0x8'),'appdata':_0x64fbb6[_0x60b3('0x9')]?_0x60b3('0xa')+_0x64fbb6[_0x60b3('0x9')]:'No\x20alias\x20set','context':_0x64fbb6['context'],'exten':_0x64fbb6[_0x60b3('0x7')],'priority':_0x5ac95c++,'VoiceExtensionId':_0x64fbb6['id']},{'type':_0x60b3('0x10'),'app':'Set','appdata':'CDR(destination)='+(_0x64fbb6['cutdigits']?_0x60b3('0x12')+_0x64fbb6[_0x60b3('0x13')]+'}':_0x60b3('0x14')),'context':_0x64fbb6['context'],'exten':_0x64fbb6[_0x60b3('0x7')],'priority':_0x5ac95c++,'VoiceExtensionId':_0x64fbb6['id']},{'type':_0x60b3('0x10'),'app':_0x60b3('0x4'),'appdata':_0x60b3('0x15')+_0x64fbb6['id'],'context':_0x64fbb6[_0x60b3('0x6')],'exten':_0x64fbb6['exten'],'priority':_0x5ac95c++,'VoiceExtensionId':_0x64fbb6['id']},{'type':'outbound','app':_0x60b3('0x16'),'appdata':_0x60b3('0x17')+(_0x5ac95c+0x2)+_0x60b3('0x18')+(_0x5ac95c+0x1)+')','context':_0x64fbb6[_0x60b3('0x6')],'exten':_0x64fbb6['exten'],'priority':_0x5ac95c++,'VoiceExtensionId':_0x64fbb6['id']},{'type':_0x60b3('0x10'),'app':_0x60b3('0x4'),'appdata':_0x64fbb6[_0x60b3('0x13')]?_0x60b3('0x19')+_0x64fbb6['cutdigits']+'}':'CDR(prefix)=noprefix','context':_0x64fbb6['context'],'exten':_0x64fbb6['exten'],'priority':_0x5ac95c++,'VoiceExtensionId':_0x64fbb6['id']},{'type':_0x60b3('0x10'),'app':'Set','appdata':_0x60b3('0xe'),'context':_0x64fbb6[_0x60b3('0x6')],'exten':_0x64fbb6[_0x60b3('0x7')],'priority':_0x5ac95c++,'VoiceExtensionId':_0x64fbb6['id']},{'type':_0x60b3('0x10'),'app':_0x60b3('0x4'),'appdata':_0x60b3('0xf'),'context':_0x64fbb6[_0x60b3('0x6')],'exten':_0x64fbb6[_0x60b3('0x7')],'priority':_0x5ac95c++,'VoiceExtensionId':_0x64fbb6['id']},{'type':_0x60b3('0x10'),'app':_0x60b3('0x4'),'appdata':'MONITOR_OPTIONS=ab','context':_0x64fbb6[_0x60b3('0x6')],'exten':_0x64fbb6['exten'],'priority':_0x5ac95c++,'VoiceExtensionId':_0x64fbb6['id']},{'type':_0x60b3('0x10'),'app':'Set','appdata':_0x60b3('0x1a')+_0x64fbb6['id'],'context':_0x64fbb6[_0x60b3('0x6')],'exten':_0x64fbb6[_0x60b3('0x7')],'priority':_0x5ac95c++,'VoiceExtensionId':_0x64fbb6['id']}];if(_0x64fbb6[_0x60b3('0x1b')](_0x60b3('0x1c'))&&_0x64fbb6[_0x60b3('0x1c')]!=='none'){_0x55ea82[_0x60b3('0xd')]({'type':'outbound','app':_0x60b3('0x4'),'appdata':_0x60b3('0x1d'),'context':_0x64fbb6[_0x60b3('0x6')],'exten':_0x64fbb6[_0x60b3('0x7')],'priority':_0x5ac95c++,'VoiceExtensionId':_0x64fbb6['id']},{'type':_0x60b3('0x10'),'app':_0x60b3('0x4'),'appdata':_0x60b3('0x1e')+_0x64fbb6[_0x60b3('0x1c')]||_0x60b3('0x1f'),'context':_0x64fbb6[_0x60b3('0x6')],'exten':_0x64fbb6[_0x60b3('0x7')],'priority':_0x5ac95c++,'VoiceExtensionId':_0x64fbb6['id']});}return _0x55ea82;}function _0x2bce33(_0x269dff,_0x1e0648){var _0x2212f7=[{'name':_0x60b3('0x20'),'param':0x0},{'name':_0x60b3('0x21'),'param':0x1},{'name':_0x60b3('0x22'),'param':0x2},{'name':_0x60b3('0x23'),'param':0x3}];var _0x1de7d7={};var _0x2fe5ba=_0x1e0648[_0x60b3('0x24')](',');var _0x1acab3=[];for(var _0x49e144=0x0;_0x49e144<_0x2212f7['length'];_0x49e144++){switch(_0x2212f7[_0x49e144][_0x60b3('0x25')]){case _0x60b3('0x20'):_0x1de7d7['trunk']=_0x2fe5ba[_0x2212f7[_0x49e144][_0x60b3('0x26')]][_0x60b3('0x24')]('/')[0x1];_0x1de7d7[_0x60b3('0x27')]=_0x2fe5ba[_0x2212f7[_0x49e144][_0x60b3('0x26')]][_0x60b3('0x24')]('/')[0x2];_0x1de7d7[_0x60b3('0x28')]=_0x1de7d7[_0x60b3('0x27')]?_0x1de7d7[_0x60b3('0x27')]['split']('$')[0x0]:undefined;_0x1de7d7['phone']=_0x269dff['cutdigits']?(_0x1de7d7['prefix']||'')+_0x60b3('0x12')+_0x269dff['cutdigits']+'}':(_0x1de7d7[_0x60b3('0x28')]||'')+_0x60b3('0x14');_0x1acab3[_0x2212f7[_0x49e144]['param']]=[_0x60b3('0x29'),_0x1de7d7[_0x60b3('0x20')],_0x1de7d7[_0x60b3('0x27')]][_0x60b3('0x2a')]('/');break;case'options':_0x1de7d7[_0x60b3('0x22')]=_0x2fe5ba[_0x2212f7[_0x49e144][_0x60b3('0x26')]];if(_0x269dff[_0x60b3('0x1c')]!==_0x60b3('0x2b')){if(_0x1de7d7[_0x60b3('0x22')][_0x60b3('0x2c')]('U(xcally-mixmonitor-context)')<0x0){_0x1de7d7[_0x60b3('0x22')]+=_0x60b3('0x2d');}}else{_0x1de7d7[_0x60b3('0x22')]=_0x1de7d7[_0x60b3('0x22')][_0x60b3('0x2e')](_0x60b3('0x2d'),'');}_0x1acab3[_0x2212f7[_0x49e144][_0x60b3('0x26')]]=_0x1de7d7['options'];break;default:_0x1acab3[_0x2212f7[_0x49e144]['param']]=_0x2fe5ba[_0x2212f7[_0x49e144][_0x60b3('0x26')]];}}return _0x1acab3['join'](',');}function _0x35aced(_0x12ac6d,_0x420704,_0x433d1b){return new Promise(function(_0x1d77ec,_0x2425bd){var _0x106280=[];if(_[_0x60b3('0x2f')](_0x420704))return _0x1d77ec(_0x106280);_0xea4103[_0x60b3('0x30')][_0x60b3('0x31')]({'attributes':['id',_0x60b3('0x32'),_0x60b3('0x33')],'raw':!![]})['then'](function(_0x1b3a79){for(var _0x57179e=0x0,_0x1a122e=0x0;_0x57179e<_0x420704[_0x60b3('0x34')];_0x57179e++,_0x1a122e=0x0){var _0x198ba2=_0x420704[_0x57179e];var _0x2193e7=[];var _0x93676f=[];delete _0x198ba2['id'];if(_0x198ba2['interval']!==_0x60b3('0x35')){_0x198ba2[_0x60b3('0x36')]=[_0x198ba2[_0x60b3('0x32')]];}else{_0x198ba2[_0x60b3('0x36')]=_0x198ba2[_0x60b3('0x33')]?_[_0x60b3('0x37')](_[_0x60b3('0x38')](_0x1b3a79,{'IntervalId':_0x198ba2['IntervalId']}),_0x60b3('0x32')):[];}_0x198ba2[_0x60b3('0x6')]=_0x12ac6d[_0x60b3('0x6')];_0x198ba2['exten']=_0x12ac6d[_0x60b3('0x7')];if(_0x198ba2[_0x60b3('0x3')])_0x198ba2[_0x60b3('0x3')]=_0x198ba2[_0x60b3('0x3')][_0x60b3('0x39')]();if(_0x12ac6d[_0x60b3('0x3')]===_0x60b3('0x10')){if(_0x198ba2[_0x60b3('0x1b')](_0x60b3('0x3a'))&&_0x198ba2[_0x60b3('0x3a')]&&_0x198ba2['tag']!=='--'){_0x2193e7[_0x60b3('0xd')]({'type':_0x198ba2['type']['toLowerCase'](),'app':_0x60b3('0x4'),'appdata':_0x60b3('0x3b')+_0x198ba2[_0x60b3('0x3a')],'context':_0x12ac6d[_0x60b3('0x6')],'exten':_0x12ac6d[_0x60b3('0x7')],'priority':_0x198ba2[_0x60b3('0x36')][_0x60b3('0x34')]+_0x433d1b+_0x1a122e++,'VoiceExtensionId':_0x12ac6d['id']});}_0x2193e7[_0x60b3('0xd')]({'type':_0x198ba2['type']['toLowerCase'](),'app':_0x60b3('0x16'),'appdata':_0x60b3('0x3c')+(_0x198ba2[_0x60b3('0x3d')]?'Set(CALLERID(all)='+_0x198ba2['callerID']+')':_0x60b3('0x3e')),'context':_0x12ac6d[_0x60b3('0x6')],'exten':_0x12ac6d[_0x60b3('0x7')],'priority':_0x198ba2[_0x60b3('0x36')][_0x60b3('0x34')]+_0x433d1b+_0x1a122e++,'VoiceExtensionId':_0x12ac6d['id']});}else{if(_0x198ba2[_0x60b3('0x1b')]('answer')){if([_0x60b3('0x3f'),'playback'][_0x60b3('0x40')](_0x198ba2['app'][_0x60b3('0x39')]())&&_0x198ba2[_0x60b3('0x41')]!==_0x60b3('0x42')){if(_0x198ba2[_0x60b3('0x43')]){_0x2193e7['push']({'type':_0x198ba2[_0x60b3('0x3')][_0x60b3('0x39')](),'app':_0x60b3('0x16'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x12ac6d[_0x60b3('0x6')],'exten':_0x12ac6d['exten'],'priority':_0x198ba2[_0x60b3('0x36')][_0x60b3('0x34')]+_0x433d1b+_0x1a122e++,'VoiceExtensionId':_0x12ac6d['id']});_0x2193e7[_0x60b3('0xd')]({'type':_0x198ba2[_0x60b3('0x3')][_0x60b3('0x39')](),'app':_0x60b3('0x4'),'appdata':_0x60b3('0x44'),'context':_0x12ac6d[_0x60b3('0x6')],'exten':_0x12ac6d[_0x60b3('0x7')],'priority':_0x198ba2['intervals'][_0x60b3('0x34')]+_0x433d1b+_0x1a122e++,'VoiceExtensionId':_0x12ac6d['id']});}else{_0x2193e7['push']({'type':_0x198ba2[_0x60b3('0x3')][_0x60b3('0x39')](),'app':_0x60b3('0x16'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x12ac6d[_0x60b3('0x6')],'exten':_0x12ac6d['exten'],'priority':_0x198ba2[_0x60b3('0x36')]['length']+_0x433d1b+_0x1a122e++,'VoiceExtensionId':_0x12ac6d['id']});_0x2193e7['push']({'type':_0x198ba2['type'][_0x60b3('0x39')](),'app':_0x60b3('0x4'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x12ac6d[_0x60b3('0x6')],'exten':_0x12ac6d['exten'],'priority':_0x198ba2[_0x60b3('0x36')]['length']+_0x433d1b+_0x1a122e++,'VoiceExtensionId':_0x12ac6d['id']});}}}}for(var _0x209530=0x0;_0x209530<_0x198ba2[_0x60b3('0x36')]['length'];_0x209530++){var _0x5652f3=_0x433d1b+_0x198ba2[_0x60b3('0x36')][_0x60b3('0x34')];var _0x591296=_0x209530===_0x198ba2[_0x60b3('0x36')]['length']-0x1?_0x433d1b+_0x2193e7['length']+_0x93676f[_0x60b3('0x34')]+0x2:_0x433d1b+_0x209530+0x1;_0x2193e7['splice'](_0x209530,0x0,{'type':_0x12ac6d[_0x60b3('0x3')],'app':'GotoIfTime','appdata':_0x198ba2['intervals'][_0x209530]+'?'+_0x12ac6d[_0x60b3('0x6')]+',${EXTEN},'+_0x5652f3+':'+_0x12ac6d['context']+_0x60b3('0x45')+_0x591296,'exten':_0x12ac6d[_0x60b3('0x7')],'context':_0x12ac6d[_0x60b3('0x6')],'priority':_0x433d1b+_0x209530,'VoiceExtensionId':_0x12ac6d['id']});}if(_0x198ba2[_0x60b3('0x41')]===_0x60b3('0x46'))_0x198ba2['appdata']=_0x2bce33(_0x12ac6d,_0x198ba2[_0x60b3('0x47')]);_0x198ba2[_0x60b3('0x48')]=_0x2193e7[_0x60b3('0x34')]?_[_0x60b3('0x49')](_0x2193e7)[_0x60b3('0x48')]+0x1:_0x433d1b;_0x106280=_[_0x60b3('0x4a')](_0x106280,_0x2193e7,[_0x198ba2],_0x93676f);_0x433d1b=_[_0x60b3('0x49')](_0x106280)['priority']+0x1;}return _0x1d77ec(_0x106280);})['catch'](function(_0x22e175){_0x2425bd(_0x22e175);});});}return _0x57e07d[_0x60b3('0x4b')]('VoiceExtension',attributes,{'tableName':_0x60b3('0x4c'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0xd5cc96){var _0x23047f=this[_0x60b3('0x4d')]({'plain':!![]});var _0x2972e6=_0x23047f['type']===_0x60b3('0x10')?_0x4be434(_0x23047f):_0x39df81(_0x23047f);return _0x35aced(_0x23047f,_0xd5cc96,_['last'](_0x2972e6)['priority']+0x1)[_0x60b3('0x4e')](function(_0x204f85){var _0x4f0ecd=_['concat'](_0x2972e6,_0x204f85);_0x4f0ecd[_0x60b3('0xd')]({'type':_0x23047f['type'],'app':_0x60b3('0x4f'),'exten':_0x23047f['exten'],'context':_0x23047f[_0x60b3('0x6')],'priority':_[_0x60b3('0x49')](_0x4f0ecd)[_0x60b3('0x48')]+0x1,'VoiceExtensionId':_0x23047f['id']});return _0x4f0ecd;});}}});};
\ No newline at end of file
+var _0x799b=['NoOp','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','trunk','timeout','options','split','length','name','param','phone','prefix','SIP','U(xcally-mixmonitor-context)','replace','join','isEmpty','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals','map','filter','tag','toLowerCase','callerID','NoOp(No\x20number\x20available)','queue','playback','appType','answer','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice','GotoIfTime',',${EXTEN},','priority','last','concat','catch','define','VoiceExtension','get','Hangup','lodash','models','type','CDR(type)=','context','exten','alias','Set','CDR(routeAlias)=','No\x20alias\x20set','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','CDR(type)=outbound','outbound'];(function(_0x2d91d3,_0x3d778b){var _0x48d712=function(_0x57d4e7){while(--_0x57d4e7){_0x2d91d3['push'](_0x2d91d3['shift']());}};_0x48d712(++_0x3d778b);}(_0x799b,0x8c));var _0xb799=function(_0x25af1c,_0x1908c2){_0x25af1c=_0x25af1c-0x0;var _0x339e87=_0x799b[_0x25af1c];return _0x339e87;};'use strict';var _=require(_0xb799('0x0'));var attributes=require('./voiceExtension.attributes');module['exports']=function(_0xde4cf7){var _0x539b08=_0xde4cf7[_0xb799('0x1')];function _0x41bafc(_0x1808db){var _0x1dda29=0x2;var _0x4fdc5b=[{'type':_0x1808db[_0xb799('0x2')],'app':'Set','appdata':_0xb799('0x3')+_0x1808db['type'],'context':_0x1808db[_0xb799('0x4')],'exten':_0x1808db[_0xb799('0x5')],'priority':_0x1dda29++,'VoiceExtensionId':_0x1808db['id']},{'type':_0x1808db[_0xb799('0x2')],'app':_0x1808db[_0xb799('0x6')]?_0xb799('0x7'):'NoOp','appdata':_0x1808db[_0xb799('0x6')]?_0xb799('0x8')+_0x1808db['alias']:_0xb799('0x9'),'context':_0x1808db[_0xb799('0x4')],'exten':_0x1808db[_0xb799('0x5')],'priority':_0x1dda29++,'VoiceExtensionId':_0x1808db['id']}];if(_0x1808db[_0xb799('0x2')]===_0xb799('0xa')){_0x4fdc5b[_0xb799('0xb')]({'type':_0xb799('0xa'),'app':_0xb799('0x7'),'appdata':_0xb799('0xc')+_0x1808db['id'],'context':_0x1808db['context'],'exten':_0x1808db[_0xb799('0x5')],'priority':_0x1dda29++,'VoiceExtensionId':_0x1808db['id']});}_0x4fdc5b[_0xb799('0xb')]({'type':_0x1808db[_0xb799('0x2')],'app':_0xb799('0x7'),'appdata':_0xb799('0xd'),'context':_0x1808db[_0xb799('0x4')],'exten':_0x1808db[_0xb799('0x5')],'priority':_0x1dda29++,'VoiceExtensionId':_0x1808db['id']},{'type':_0x1808db[_0xb799('0x2')],'app':_0xb799('0x7'),'appdata':_0xb799('0xe'),'context':_0x1808db[_0xb799('0x4')],'exten':_0x1808db[_0xb799('0x5')],'priority':_0x1dda29++,'VoiceExtensionId':_0x1808db['id']},{'type':_0x1808db[_0xb799('0x2')],'app':'Set','appdata':_0xb799('0xf'),'context':_0x1808db[_0xb799('0x4')],'exten':_0x1808db[_0xb799('0x5')],'priority':_0x1dda29++,'VoiceExtensionId':_0x1808db['id']});return _0x4fdc5b;}function _0x5056fc(_0x4b9bf4){var _0xfc7e9e=0x2;var _0x2dc654=[{'type':'outbound','app':_0xb799('0x7'),'appdata':_0xb799('0x10'),'context':_0x4b9bf4[_0xb799('0x4')],'exten':_0x4b9bf4[_0xb799('0x5')],'priority':_0xfc7e9e++,'VoiceExtensionId':_0x4b9bf4['id']},{'type':_0xb799('0x11'),'app':_0x4b9bf4['alias']?_0xb799('0x7'):_0xb799('0x12'),'appdata':_0x4b9bf4['alias']?_0xb799('0x8')+_0x4b9bf4[_0xb799('0x6')]:_0xb799('0x9'),'context':_0x4b9bf4[_0xb799('0x4')],'exten':_0x4b9bf4[_0xb799('0x5')],'priority':_0xfc7e9e++,'VoiceExtensionId':_0x4b9bf4['id']},{'type':_0xb799('0x11'),'app':'Set','appdata':_0xb799('0x13')+(_0x4b9bf4[_0xb799('0x14')]?_0xb799('0x15')+_0x4b9bf4[_0xb799('0x14')]+'}':_0xb799('0x16')),'context':_0x4b9bf4[_0xb799('0x4')],'exten':_0x4b9bf4[_0xb799('0x5')],'priority':_0xfc7e9e++,'VoiceExtensionId':_0x4b9bf4['id']},{'type':_0xb799('0x11'),'app':'Set','appdata':'CDR(routeid)='+_0x4b9bf4['id'],'context':_0x4b9bf4['context'],'exten':_0x4b9bf4['exten'],'priority':_0xfc7e9e++,'VoiceExtensionId':_0x4b9bf4['id']},{'type':_0xb799('0x11'),'app':_0xb799('0x17'),'appdata':_0xb799('0x18')+(_0xfc7e9e+0x2)+_0xb799('0x19')+(_0xfc7e9e+0x1)+')','context':_0x4b9bf4['context'],'exten':_0x4b9bf4['exten'],'priority':_0xfc7e9e++,'VoiceExtensionId':_0x4b9bf4['id']},{'type':_0xb799('0x11'),'app':_0xb799('0x7'),'appdata':_0x4b9bf4[_0xb799('0x14')]?_0xb799('0x1a')+_0x4b9bf4[_0xb799('0x14')]+'}':_0xb799('0x1b'),'context':_0x4b9bf4[_0xb799('0x4')],'exten':_0x4b9bf4[_0xb799('0x5')],'priority':_0xfc7e9e++,'VoiceExtensionId':_0x4b9bf4['id']},{'type':_0xb799('0x11'),'app':_0xb799('0x7'),'appdata':_0xb799('0xd'),'context':_0x4b9bf4[_0xb799('0x4')],'exten':_0x4b9bf4[_0xb799('0x5')],'priority':_0xfc7e9e++,'VoiceExtensionId':_0x4b9bf4['id']},{'type':_0xb799('0x11'),'app':_0xb799('0x7'),'appdata':_0xb799('0xe'),'context':_0x4b9bf4['context'],'exten':_0x4b9bf4[_0xb799('0x5')],'priority':_0xfc7e9e++,'VoiceExtensionId':_0x4b9bf4['id']},{'type':_0xb799('0x11'),'app':_0xb799('0x7'),'appdata':_0xb799('0xf'),'context':_0x4b9bf4[_0xb799('0x4')],'exten':_0x4b9bf4[_0xb799('0x5')],'priority':_0xfc7e9e++,'VoiceExtensionId':_0x4b9bf4['id']},{'type':_0xb799('0x11'),'app':_0xb799('0x7'),'appdata':_0xb799('0x1c')+_0x4b9bf4['id'],'context':_0x4b9bf4[_0xb799('0x4')],'exten':_0x4b9bf4[_0xb799('0x5')],'priority':_0xfc7e9e++,'VoiceExtensionId':_0x4b9bf4['id']}];if(_0x4b9bf4[_0xb799('0x1d')](_0xb799('0x1e'))&&_0x4b9bf4[_0xb799('0x1e')]!==_0xb799('0x1f')){_0x2dc654[_0xb799('0xb')]({'type':'outbound','app':_0xb799('0x7'),'appdata':_0xb799('0x20'),'context':_0x4b9bf4[_0xb799('0x4')],'exten':_0x4b9bf4[_0xb799('0x5')],'priority':_0xfc7e9e++,'VoiceExtensionId':_0x4b9bf4['id']},{'type':_0xb799('0x11'),'app':_0xb799('0x7'),'appdata':_0xb799('0x21')+_0x4b9bf4['recordingFormat']||'wav','context':_0x4b9bf4[_0xb799('0x4')],'exten':_0x4b9bf4[_0xb799('0x5')],'priority':_0xfc7e9e++,'VoiceExtensionId':_0x4b9bf4['id']});}return _0x2dc654;}function _0x1c738(_0x5a3d8b,_0x2dc8f6){var _0x26be25=[{'name':_0xb799('0x22'),'param':0x0},{'name':_0xb799('0x23'),'param':0x1},{'name':_0xb799('0x24'),'param':0x2},{'name':'url','param':0x3}];var _0x4ca6c0={};var _0x234cb8=_0x2dc8f6[_0xb799('0x25')](',');var _0x38b8d6=[];for(var _0x5c143f=0x0;_0x5c143f<_0x26be25[_0xb799('0x26')];_0x5c143f++){switch(_0x26be25[_0x5c143f][_0xb799('0x27')]){case _0xb799('0x22'):_0x4ca6c0[_0xb799('0x22')]=_0x234cb8[_0x26be25[_0x5c143f][_0xb799('0x28')]][_0xb799('0x25')]('/')[0x1];_0x4ca6c0[_0xb799('0x29')]=_0x234cb8[_0x26be25[_0x5c143f][_0xb799('0x28')]][_0xb799('0x25')]('/')[0x2];_0x4ca6c0[_0xb799('0x2a')]=_0x4ca6c0[_0xb799('0x29')]?_0x4ca6c0[_0xb799('0x29')][_0xb799('0x25')]('$')[0x0]:undefined;_0x4ca6c0[_0xb799('0x29')]=_0x5a3d8b[_0xb799('0x14')]?(_0x4ca6c0['prefix']||'')+_0xb799('0x15')+_0x5a3d8b[_0xb799('0x14')]+'}':(_0x4ca6c0[_0xb799('0x2a')]||'')+_0xb799('0x16');_0x38b8d6[_0x26be25[_0x5c143f]['param']]=[_0xb799('0x2b'),_0x4ca6c0[_0xb799('0x22')],_0x4ca6c0[_0xb799('0x29')]]['join']('/');break;case'options':_0x4ca6c0[_0xb799('0x24')]=_0x234cb8[_0x26be25[_0x5c143f][_0xb799('0x28')]];if(_0x5a3d8b[_0xb799('0x1e')]!=='none'){if(_0x4ca6c0['options']['indexOf'](_0xb799('0x2c'))<0x0){_0x4ca6c0[_0xb799('0x24')]+=_0xb799('0x2c');}}else{_0x4ca6c0[_0xb799('0x24')]=_0x4ca6c0['options'][_0xb799('0x2d')](_0xb799('0x2c'),'');}_0x38b8d6[_0x26be25[_0x5c143f][_0xb799('0x28')]]=_0x4ca6c0[_0xb799('0x24')];break;default:_0x38b8d6[_0x26be25[_0x5c143f]['param']]=_0x234cb8[_0x26be25[_0x5c143f][_0xb799('0x28')]];}}return _0x38b8d6[_0xb799('0x2e')](',');}function _0x12e243(_0x339569,_0x3cd079,_0x4ec6d7){return new Promise(function(_0x2f2594,_0x24e5c1){var _0x234a4d=[];if(_[_0xb799('0x2f')](_0x3cd079))return _0x2f2594(_0x234a4d);_0x539b08[_0xb799('0x30')][_0xb799('0x31')]({'attributes':['id',_0xb799('0x32'),_0xb799('0x33')],'raw':!![]})[_0xb799('0x34')](function(_0x77dadc){for(var _0x115ba6=0x0,_0x375bf0=0x0;_0x115ba6<_0x3cd079[_0xb799('0x26')];_0x115ba6++,_0x375bf0=0x0){var _0x42680e=_0x3cd079[_0x115ba6];var _0x1659ef=[];var _0x1faf0d=[];delete _0x42680e['id'];if(_0x42680e[_0xb799('0x32')]!==_0xb799('0x35')){_0x42680e[_0xb799('0x36')]=[_0x42680e[_0xb799('0x32')]];}else{_0x42680e[_0xb799('0x36')]=_0x42680e[_0xb799('0x33')]?_[_0xb799('0x37')](_[_0xb799('0x38')](_0x77dadc,{'IntervalId':_0x42680e[_0xb799('0x33')]}),_0xb799('0x32')):[];}_0x42680e[_0xb799('0x4')]=_0x339569['context'];_0x42680e[_0xb799('0x5')]=_0x339569[_0xb799('0x5')];if(_0x42680e['type'])_0x42680e[_0xb799('0x2')]=_0x42680e[_0xb799('0x2')]['toLowerCase']();if(_0x339569[_0xb799('0x2')]===_0xb799('0x11')){if(_0x42680e[_0xb799('0x1d')](_0xb799('0x39'))&&_0x42680e[_0xb799('0x39')]&&_0x42680e[_0xb799('0x39')]!=='--'){_0x1659ef['push']({'type':_0x42680e[_0xb799('0x2')]['toLowerCase'](),'app':_0xb799('0x7'),'appdata':'CDR(tag)='+_0x42680e['tag'],'context':_0x339569['context'],'exten':_0x339569[_0xb799('0x5')],'priority':_0x42680e[_0xb799('0x36')][_0xb799('0x26')]+_0x4ec6d7+_0x375bf0++,'VoiceExtensionId':_0x339569['id']});}_0x1659ef[_0xb799('0xb')]({'type':_0x42680e['type'][_0xb799('0x3a')](),'app':'ExecIf','appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):'+(_0x42680e[_0xb799('0x3b')]?'Set(CALLERID(all)='+_0x42680e['callerID']+')':_0xb799('0x3c')),'context':_0x339569[_0xb799('0x4')],'exten':_0x339569['exten'],'priority':_0x42680e[_0xb799('0x36')][_0xb799('0x26')]+_0x4ec6d7+_0x375bf0++,'VoiceExtensionId':_0x339569['id']});}else{if(_0x42680e['hasOwnProperty']('answer')){if([_0xb799('0x3d'),_0xb799('0x3e')]['includes'](_0x42680e['app'][_0xb799('0x3a')]())&&_0x42680e[_0xb799('0x3f')]!=='custom'){if(_0x42680e[_0xb799('0x40')]){_0x1659ef[_0xb799('0xb')]({'type':_0x42680e[_0xb799('0x2')]['toLowerCase'](),'app':'ExecIf','appdata':_0xb799('0x41'),'context':_0x339569['context'],'exten':_0x339569[_0xb799('0x5')],'priority':_0x42680e[_0xb799('0x36')][_0xb799('0x26')]+_0x4ec6d7+_0x375bf0++,'VoiceExtensionId':_0x339569['id']});_0x1659ef[_0xb799('0xb')]({'type':_0x42680e[_0xb799('0x2')][_0xb799('0x3a')](),'app':_0xb799('0x7'),'appdata':_0xb799('0x42'),'context':_0x339569['context'],'exten':_0x339569['exten'],'priority':_0x42680e[_0xb799('0x36')][_0xb799('0x26')]+_0x4ec6d7+_0x375bf0++,'VoiceExtensionId':_0x339569['id']});}else{_0x1659ef[_0xb799('0xb')]({'type':_0x42680e[_0xb799('0x2')]['toLowerCase'](),'app':_0xb799('0x17'),'appdata':_0xb799('0x43'),'context':_0x339569['context'],'exten':_0x339569[_0xb799('0x5')],'priority':_0x42680e[_0xb799('0x36')][_0xb799('0x26')]+_0x4ec6d7+_0x375bf0++,'VoiceExtensionId':_0x339569['id']});_0x1659ef[_0xb799('0xb')]({'type':_0x42680e[_0xb799('0x2')][_0xb799('0x3a')](),'app':_0xb799('0x7'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x339569[_0xb799('0x4')],'exten':_0x339569[_0xb799('0x5')],'priority':_0x42680e[_0xb799('0x36')][_0xb799('0x26')]+_0x4ec6d7+_0x375bf0++,'VoiceExtensionId':_0x339569['id']});}}}}for(var _0x14264a=0x0;_0x14264a<_0x42680e['intervals'][_0xb799('0x26')];_0x14264a++){var _0x1171ed=_0x4ec6d7+_0x42680e[_0xb799('0x36')][_0xb799('0x26')];var _0xdecc12=_0x14264a===_0x42680e[_0xb799('0x36')]['length']-0x1?_0x4ec6d7+_0x1659ef['length']+_0x1faf0d[_0xb799('0x26')]+0x2:_0x4ec6d7+_0x14264a+0x1;_0x1659ef[_0xb799('0x44')](_0x14264a,0x0,{'type':_0x339569[_0xb799('0x2')],'app':_0xb799('0x45'),'appdata':_0x42680e[_0xb799('0x36')][_0x14264a]+'?'+_0x339569[_0xb799('0x4')]+',${EXTEN},'+_0x1171ed+':'+_0x339569[_0xb799('0x4')]+_0xb799('0x46')+_0xdecc12,'exten':_0x339569[_0xb799('0x5')],'context':_0x339569[_0xb799('0x4')],'priority':_0x4ec6d7+_0x14264a,'VoiceExtensionId':_0x339569['id']});}if(_0x42680e[_0xb799('0x3f')]==='outboundDial')_0x42680e['appdata']=_0x1c738(_0x339569,_0x42680e['appdata']);_0x42680e[_0xb799('0x47')]=_0x1659ef[_0xb799('0x26')]?_[_0xb799('0x48')](_0x1659ef)[_0xb799('0x47')]+0x1:_0x4ec6d7;_0x234a4d=_[_0xb799('0x49')](_0x234a4d,_0x1659ef,[_0x42680e],_0x1faf0d);_0x4ec6d7=_[_0xb799('0x48')](_0x234a4d)[_0xb799('0x47')]+0x1;}return _0x2f2594(_0x234a4d);})[_0xb799('0x4a')](function(_0x14dfad){_0x24e5c1(_0x14dfad);});});}return _0xde4cf7[_0xb799('0x4b')](_0xb799('0x4c'),attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x244811){var _0x6bcf66=this[_0xb799('0x4d')]({'plain':!![]});var _0x3508f0=_0x6bcf66['type']===_0xb799('0x11')?_0x5056fc(_0x6bcf66):_0x41bafc(_0x6bcf66);return _0x12e243(_0x6bcf66,_0x244811,_[_0xb799('0x48')](_0x3508f0)[_0xb799('0x47')]+0x1)[_0xb799('0x34')](function(_0x34b076){var _0x374b1f=_[_0xb799('0x49')](_0x3508f0,_0x34b076);_0x374b1f[_0xb799('0xb')]({'type':_0x6bcf66[_0xb799('0x2')],'app':_0xb799('0x4e'),'exten':_0x6bcf66[_0xb799('0x5')],'context':_0x6bcf66[_0xb799('0x4')],'priority':_[_0xb799('0x48')](_0x374b1f)[_0xb799('0x47')]+0x1,'VoiceExtensionId':_0x6bcf66['id']});return _0x374b1f;});}}});};
\ No newline at end of file
index c7f62d7..41a3a80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf29c=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','./voiceExtension.socket','register','request','then','info','request\x20sent','debug','error','code','VoiceExtension,\x20%s,\x20%s','message','result','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','attributes','limit','include','map','model','stringify','catch','util'];(function(_0x289794,_0xad3f58){var _0x125fd0=function(_0x3b611a){while(--_0x3b611a){_0x289794['push'](_0x289794['shift']());}};_0x125fd0(++_0xad3f58);}(_0xf29c,0xc7));var _0xcf29=function(_0x1399ad,_0x211cc0){_0x1399ad=_0x1399ad-0x0;var _0x2e3e6f=_0xf29c[_0x1399ad];return _0x2e3e6f;};'use strict';var _=require('lodash');var util=require(_0xcf29('0x0'));var moment=require(_0xcf29('0x1'));var BPromise=require(_0xcf29('0x2'));var rs=require(_0xcf29('0x3'));var fs=require('fs');var Redis=require(_0xcf29('0x4'));var db=require(_0xcf29('0x5'))['db'];var utils=require(_0xcf29('0x6'));var logger=require(_0xcf29('0x7'))(_0xcf29('0x8'));var config=require(_0xcf29('0x9'));var jayson=require(_0xcf29('0xa'));var client=jayson[_0xcf29('0xb')][_0xcf29('0xc')]({'port':0x232a});config[_0xcf29('0xd')]=_[_0xcf29('0xe')](config[_0xcf29('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcf29('0xd')]));require(_0xcf29('0xf'))[_0xcf29('0x10')](socket);function respondWithRpcPromise(_0x18bfa3,_0x4268c6,_0x2f3bd5){return new BPromise(function(_0x2ed7fa,_0x38b122){return client[_0xcf29('0x11')](_0x18bfa3,_0x2f3bd5)[_0xcf29('0x12')](function(_0xb13a72){logger[_0xcf29('0x13')]('VoiceExtension,\x20%s,\x20%s',_0x4268c6,_0xcf29('0x14'));logger[_0xcf29('0x15')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x4268c6,_0xcf29('0x14'),JSON['stringify'](_0xb13a72));if(_0xb13a72[_0xcf29('0x16')]){if(_0xb13a72[_0xcf29('0x16')][_0xcf29('0x17')]===0x1f4){logger[_0xcf29('0x16')](_0xcf29('0x18'),_0x4268c6,_0xb13a72[_0xcf29('0x16')][_0xcf29('0x19')]);return _0x38b122(_0xb13a72[_0xcf29('0x16')][_0xcf29('0x19')]);}logger['error'](_0xcf29('0x18'),_0x4268c6,_0xb13a72['error'][_0xcf29('0x19')]);return _0x2ed7fa(_0xb13a72['error'][_0xcf29('0x19')]);}else{logger['info'](_0xcf29('0x18'),_0x4268c6,'request\x20sent');_0x2ed7fa(_0xb13a72[_0xcf29('0x1a')][_0xcf29('0x19')]);}})['catch'](function(_0xe2b5b1){logger[_0xcf29('0x16')]('VoiceExtension,\x20%s,\x20%s',_0x4268c6,_0xe2b5b1);_0x38b122(_0xe2b5b1);});});}exports[_0xcf29('0x1b')]=function(_0x1aa003){var _0x51f4b8=this;return new Promise(function(_0x47efbc,_0x5f47b2){return db[_0xcf29('0x1c')][_0xcf29('0x1d')]({'raw':_0x1aa003[_0xcf29('0x1e')]?_0x1aa003[_0xcf29('0x1e')][_0xcf29('0x1f')]===undefined?!![]:![]:!![],'where':_0x1aa003[_0xcf29('0x1e')]?_0x1aa003[_0xcf29('0x1e')][_0xcf29('0x20')]||null:null,'attributes':_0x1aa003[_0xcf29('0x1e')]?_0x1aa003[_0xcf29('0x1e')][_0xcf29('0x21')]||null:null,'limit':_0x1aa003[_0xcf29('0x1e')]?_0x1aa003['options'][_0xcf29('0x22')]||null:null,'include':_0x1aa003[_0xcf29('0x1e')]?_0x1aa003[_0xcf29('0x1e')][_0xcf29('0x23')]?_[_0xcf29('0x24')](_0x1aa003[_0xcf29('0x1e')]['include'],function(_0x57902b){return{'model':db[_0x57902b[_0xcf29('0x25')]],'as':_0x57902b['as'],'attributes':_0x57902b[_0xcf29('0x21')],'include':_0x57902b[_0xcf29('0x23')]?_['map'](_0x57902b[_0xcf29('0x23')],function(_0x23f396){return{'model':db[_0x23f396[_0xcf29('0x25')]],'as':_0x23f396['as'],'attributes':_0x23f396['attributes'],'include':_0x23f396[_0xcf29('0x23')]?_[_0xcf29('0x24')](_0x23f396[_0xcf29('0x23')],function(_0x744931){return{'model':db[_0x744931[_0xcf29('0x25')]],'as':_0x744931['as'],'attributes':_0x744931[_0xcf29('0x21')]};}):[]};}):[]};}):[]:[]})[_0xcf29('0x12')](function(_0x5e7aaf){logger[_0xcf29('0x13')](_0xcf29('0x1b'),_0x1aa003);logger[_0xcf29('0x15')](_0xcf29('0x1b'),_0x1aa003,JSON[_0xcf29('0x26')](_0x5e7aaf));_0x47efbc(_0x5e7aaf);})[_0xcf29('0x27')](function(_0xd587d0){logger[_0xcf29('0x16')]('GetVoiceExtension',_0xd587d0[_0xcf29('0x19')],_0x1aa003);_0x5f47b2(_0x51f4b8[_0xcf29('0x16')](0x1f4,_0xd587d0[_0xcf29('0x19')]));});});};
\ No newline at end of file
+var _0x3468=['code','message','result','catch','GetVoiceExtension','findAll','options','raw','where','attributes','include','map','model','lodash','bluebird','../../mysqldb','../../config/utils','../../config/logger','client','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','stringify','error'];(function(_0x565715,_0xc4ca8){var _0x11bb93=function(_0x4812f2){while(--_0x4812f2){_0x565715['push'](_0x565715['shift']());}};_0x11bb93(++_0xc4ca8);}(_0x3468,0x8d));var _0x8346=function(_0x44057a,_0xadc388){_0x44057a=_0x44057a-0x0;var _0x323719=_0x3468[_0x44057a];return _0x323719;};'use strict';var _=require(_0x8346('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x8346('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8346('0x2'))['db'];var utils=require(_0x8346('0x3'));var logger=require(_0x8346('0x4'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x8346('0x5')]['http']({'port':0x232a});config[_0x8346('0x6')]=_[_0x8346('0x7')](config[_0x8346('0x6')],{'host':_0x8346('0x8'),'port':0x18eb});var socket=require(_0x8346('0x9'))(new Redis(config[_0x8346('0x6')]));require(_0x8346('0xa'))[_0x8346('0xb')](socket);function respondWithRpcPromise(_0xa9c056,_0x2bc2a4,_0x35b247){return new BPromise(function(_0x3caac8,_0x461116){return client['request'](_0xa9c056,_0x35b247)[_0x8346('0xc')](function(_0x265c06){logger[_0x8346('0xd')](_0x8346('0xe'),_0x2bc2a4,_0x8346('0xf'));logger[_0x8346('0x10')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x2bc2a4,_0x8346('0xf'),JSON[_0x8346('0x11')](_0x265c06));if(_0x265c06[_0x8346('0x12')]){if(_0x265c06[_0x8346('0x12')][_0x8346('0x13')]===0x1f4){logger[_0x8346('0x12')](_0x8346('0xe'),_0x2bc2a4,_0x265c06['error'][_0x8346('0x14')]);return _0x461116(_0x265c06['error'][_0x8346('0x14')]);}logger['error'](_0x8346('0xe'),_0x2bc2a4,_0x265c06['error'][_0x8346('0x14')]);return _0x3caac8(_0x265c06['error']['message']);}else{logger[_0x8346('0xd')](_0x8346('0xe'),_0x2bc2a4,'request\x20sent');_0x3caac8(_0x265c06[_0x8346('0x15')][_0x8346('0x14')]);}})[_0x8346('0x16')](function(_0x4dc342){logger[_0x8346('0x12')](_0x8346('0xe'),_0x2bc2a4,_0x4dc342);_0x461116(_0x4dc342);});});}exports[_0x8346('0x17')]=function(_0x4f616a){var _0x3a7419=this;return new Promise(function(_0x375eb4,_0x1a911d){return db['VoiceExtension'][_0x8346('0x18')]({'raw':_0x4f616a[_0x8346('0x19')]?_0x4f616a[_0x8346('0x19')][_0x8346('0x1a')]===undefined?!![]:![]:!![],'where':_0x4f616a['options']?_0x4f616a['options'][_0x8346('0x1b')]||null:null,'attributes':_0x4f616a['options']?_0x4f616a[_0x8346('0x19')][_0x8346('0x1c')]||null:null,'limit':_0x4f616a[_0x8346('0x19')]?_0x4f616a[_0x8346('0x19')]['limit']||null:null,'include':_0x4f616a[_0x8346('0x19')]?_0x4f616a[_0x8346('0x19')][_0x8346('0x1d')]?_[_0x8346('0x1e')](_0x4f616a[_0x8346('0x19')][_0x8346('0x1d')],function(_0x1e69d4){return{'model':db[_0x1e69d4[_0x8346('0x1f')]],'as':_0x1e69d4['as'],'attributes':_0x1e69d4[_0x8346('0x1c')],'include':_0x1e69d4[_0x8346('0x1d')]?_['map'](_0x1e69d4[_0x8346('0x1d')],function(_0x45c678){return{'model':db[_0x45c678[_0x8346('0x1f')]],'as':_0x45c678['as'],'attributes':_0x45c678['attributes'],'include':_0x45c678[_0x8346('0x1d')]?_['map'](_0x45c678[_0x8346('0x1d')],function(_0x5a3223){return{'model':db[_0x5a3223[_0x8346('0x1f')]],'as':_0x5a3223['as'],'attributes':_0x5a3223[_0x8346('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x8346('0xc')](function(_0x881eca){logger[_0x8346('0xd')](_0x8346('0x17'),_0x4f616a);logger[_0x8346('0x10')](_0x8346('0x17'),_0x4f616a,JSON[_0x8346('0x11')](_0x881eca));_0x375eb4(_0x881eca);})[_0x8346('0x16')](function(_0x4b0523){logger[_0x8346('0x12')](_0x8346('0x17'),_0x4b0523[_0x8346('0x14')],_0x4f616a);_0x1a911d(_0x3a7419[_0x8346('0x12')](0x1f4,_0x4b0523[_0x8346('0x14')]));});});};
\ No newline at end of file
index 968cfbd..5639271 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['length','./voiceExtension.events','remove','update','emit','removeListener','register'];(function(_0x586bb8,_0x2f0b9a){var _0x3631d0=function(_0x4423d2){while(--_0x4423d2){_0x586bb8['push'](_0x586bb8['shift']());}};_0x3631d0(++_0x2f0b9a);}(_0x4975,0x86));var _0x5497=function(_0x311793,_0x53628d){_0x311793=_0x311793-0x0;var _0x1e5835=_0x4975[_0x311793];return _0x1e5835;};'use strict';var VoiceExtensionEvents=require(_0x5497('0x0'));var events=['save',_0x5497('0x1'),_0x5497('0x2')];function createListener(_0xfc7927,_0x349f5f){return function(_0x135f6f){_0x349f5f[_0x5497('0x3')](_0xfc7927,_0x135f6f);};}function removeListener(_0x14cecb,_0xeb31af){return function(){VoiceExtensionEvents[_0x5497('0x4')](_0x14cecb,_0xeb31af);};}exports[_0x5497('0x5')]=function(_0x539a27){for(var _0x37e48d=0x0,_0x4f563d=events[_0x5497('0x6')];_0x37e48d<_0x4f563d;_0x37e48d++){var _0x674a2a=events[_0x37e48d];var _0x368e8b=createListener('voiceExtension:'+_0x674a2a,_0x539a27);VoiceExtensionEvents['on'](_0x674a2a,_0x368e8b);}};
\ No newline at end of file
+var _0x5fab=['emit','removeListener','register','length','./voiceExtension.events','save','update'];(function(_0xad27cd,_0x4a3d39){var _0x1cac39=function(_0xfc2926){while(--_0xfc2926){_0xad27cd['push'](_0xad27cd['shift']());}};_0x1cac39(++_0x4a3d39);}(_0x5fab,0x177));var _0xb5fa=function(_0x5ed928,_0x2dbbdc){_0x5ed928=_0x5ed928-0x0;var _0x2effcc=_0x5fab[_0x5ed928];return _0x2effcc;};'use strict';var VoiceExtensionEvents=require(_0xb5fa('0x0'));var events=[_0xb5fa('0x1'),'remove',_0xb5fa('0x2')];function createListener(_0x2e2a50,_0x3fc227){return function(_0x316ad0){_0x3fc227[_0xb5fa('0x3')](_0x2e2a50,_0x316ad0);};}function removeListener(_0x595d8b,_0x29390a){return function(){VoiceExtensionEvents[_0xb5fa('0x4')](_0x595d8b,_0x29390a);};}exports[_0xb5fa('0x5')]=function(_0x44df89){for(var _0x4a0249=0x0,_0x5d70f6=events[_0xb5fa('0x6')];_0x4a0249<_0x5d70f6;_0x4a0249++){var _0x1aec3e=events[_0x4a0249];var _0x9c7bce=createListener('voiceExtension:'+_0x1aec3e,_0x44df89);VoiceExtensionEvents['on'](_0x1aec3e,_0x9c7bce);}};
\ No newline at end of file
index 80fd2ca..22ecc54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1883=['index','/:id','/:id/messages','getMessages','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','get','isAuthenticated'];(function(_0xb99421,_0xaab133){var _0x4b3ec7=function(_0x591d1a){while(--_0x591d1a){_0xb99421['push'](_0xb99421['shift']());}};_0x4b3ec7(++_0xaab133);}(_0x1883,0xab));var _0x3188=function(_0x439ae8,_0x4ff7c8){_0x439ae8=_0x439ae8-0x0;var _0x3d79c7=_0x1883[_0x439ae8];return _0x3d79c7;};'use strict';var multer=require(_0x3188('0x0'));var util=require(_0x3188('0x1'));var path=require(_0x3188('0x2'));var timeout=require(_0x3188('0x3'));var express=require(_0x3188('0x4'));var router=express[_0x3188('0x5')]();var fs_extra=require(_0x3188('0x6'));var auth=require(_0x3188('0x7'));var interaction=require(_0x3188('0x8'));var config=require(_0x3188('0x9'));var controller=require(_0x3188('0xa'));router[_0x3188('0xb')]('/',auth[_0x3188('0xc')](),controller[_0x3188('0xd')]);router[_0x3188('0xb')](_0x3188('0xe'),auth[_0x3188('0xc')](),controller['show']);router[_0x3188('0xb')](_0x3188('0xf'),auth['isAuthenticated'](),controller[_0x3188('0x10')]);router['post']('/',auth[_0x3188('0xc')](),controller[_0x3188('0x11')]);router[_0x3188('0x12')](_0x3188('0xe'),auth['isAuthenticated'](),controller[_0x3188('0x13')]);router[_0x3188('0x14')]('/:id',auth['isAuthenticated'](),controller[_0x3188('0x15')]);module[_0x3188('0x16')]=router;
\ No newline at end of file
+var _0xadb5=['delete','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/messages','getMessages','post','create','update'];(function(_0x4b4f24,_0x5654a8){var _0x1c13d4=function(_0x4940bf){while(--_0x4940bf){_0x4b4f24['push'](_0x4b4f24['shift']());}};_0x1c13d4(++_0x5654a8);}(_0xadb5,0xad));var _0x5adb=function(_0x27e7d2,_0x588866){_0x27e7d2=_0x27e7d2-0x0;var _0x5a75c1=_0xadb5[_0x27e7d2];return _0x5a75c1;};'use strict';var multer=require('multer');var util=require(_0x5adb('0x0'));var path=require('path');var timeout=require(_0x5adb('0x1'));var express=require(_0x5adb('0x2'));var router=express[_0x5adb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5adb('0x4'));var interaction=require(_0x5adb('0x5'));var config=require(_0x5adb('0x6'));var controller=require('./voiceMail.controller');router[_0x5adb('0x7')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0x9')]);router[_0x5adb('0x7')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xb')]);router[_0x5adb('0x7')](_0x5adb('0xc'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xd')]);router[_0x5adb('0xe')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0xf')]);router['put']('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x10')]);router[_0x5adb('0x11')]('/:id',auth[_0x5adb('0x8')](),controller['destroy']);module[_0x5adb('0x12')]=router;
\ No newline at end of file
index 35e0466..01404d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc15c=['contest_mailbox','setDataValue','email','string','trim','ENUM','yes','TIMESTAMP','INTEGER','getDataValue','fullname','mailbox','STRING'];(function(_0x4d7924,_0x1782f2){var _0x2b5beb=function(_0x24e6dc){while(--_0x24e6dc){_0x4d7924['push'](_0x4d7924['shift']());}};_0x2b5beb(++_0x1782f2);}(_0xc15c,0x19f));var _0xcc15=function(_0xbbaf36,_0x4735a0){_0xbbaf36=_0xbbaf36-0x0;var _0x103947=_0xc15c[_0xbbaf36];return _0x103947;};'use strict';var Sequelize=require('sequelize');module['exports']={'customer_id':{'type':Sequelize[_0xcc15('0x0')]},'context':{'type':Sequelize[_0xcc15('0x0')],'defaultValue':'from-voicemail','unique':_0xcc15('0x1')},'mailbox':{'type':Sequelize[_0xcc15('0x0')],'defaultValue':'','allowNull':![],'unique':_0xcc15('0x1')},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0xcc15('0x0')]},'email':{'type':Sequelize[_0xcc15('0x0')],'validate':{'isEmail':!![]},'set':function(_0x5b80e7){this[_0xcc15('0x2')](_0xcc15('0x3'),typeof _0x5b80e7===_0xcc15('0x4')&&_0x5b80e7[_0xcc15('0x5')]()?_0x5b80e7[_0xcc15('0x5')]():null);}},'pager':{'type':Sequelize[_0xcc15('0x0')]},'tz':{'type':Sequelize[_0xcc15('0x0')],'defaultValue':'central'},'attach':{'type':Sequelize[_0xcc15('0x6')](_0xcc15('0x7'),'no'),'defaultValue':_0xcc15('0x7'),'allowNull':![]},'saycid':{'type':Sequelize[_0xcc15('0x6')](_0xcc15('0x7'),'no'),'defaultValue':_0xcc15('0x7'),'allowNull':![]},'dialout':{'type':Sequelize[_0xcc15('0x0')]},'callback':{'type':Sequelize['STRING']},'review':{'type':Sequelize['ENUM'](_0xcc15('0x7'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize['ENUM'](_0xcc15('0x7'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xcc15('0x6')](_0xcc15('0x7'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xcc15('0x6')](_0xcc15('0x7'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize['ENUM'](_0xcc15('0x7'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xcc15('0x6')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xcc15('0x6')](_0xcc15('0x7'),'no'),'defaultValue':_0xcc15('0x7'),'allowNull':![]},'forcename':{'type':Sequelize['ENUM'](_0xcc15('0x7'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0xcc15('0x6')](_0xcc15('0x7'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0xcc15('0x7'),'allowNull':![]},'stamp':{'type':_0xcc15('0x8')},'emailsubject':{'type':Sequelize[_0xcc15('0x0')]},'emailbody':{'type':Sequelize[_0xcc15('0x0')]},'maxsecs':{'type':Sequelize[_0xcc15('0x9')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xcc15('0x9')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xcc15('0xa')](_0xcc15('0xb'))+'\x20-\x20'+this[_0xcc15('0xa')](_0xcc15('0xc'));}}};
\ No newline at end of file
+var _0xd886=['yes','INTEGER','getDataValue','fullname','mailbox','exports','STRING','from-voicemail','email','trim','central','ENUM'];(function(_0x4488c9,_0x6ca39b){var _0xdcf1ff=function(_0x53ce67){while(--_0x53ce67){_0x4488c9['push'](_0x4488c9['shift']());}};_0xdcf1ff(++_0x6ca39b);}(_0xd886,0x191));var _0x6d88=function(_0x1dcf07,_0x5a47df){_0x1dcf07=_0x1dcf07-0x0;var _0x24df7e=_0xd886[_0x1dcf07];return _0x24df7e;};'use strict';var Sequelize=require('sequelize');module[_0x6d88('0x0')]={'customer_id':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x6d88('0x1')],'defaultValue':_0x6d88('0x2'),'unique':'contest_mailbox'},'mailbox':{'type':Sequelize[_0x6d88('0x1')],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0x6d88('0x1')]},'email':{'type':Sequelize[_0x6d88('0x1')],'validate':{'isEmail':!![]},'set':function(_0x472ed8){this['setDataValue'](_0x6d88('0x3'),typeof _0x472ed8==='string'&&_0x472ed8[_0x6d88('0x4')]()?_0x472ed8['trim']():null);}},'pager':{'type':Sequelize[_0x6d88('0x1')]},'tz':{'type':Sequelize[_0x6d88('0x1')],'defaultValue':_0x6d88('0x5')},'attach':{'type':Sequelize[_0x6d88('0x6')](_0x6d88('0x7'),'no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize[_0x6d88('0x6')](_0x6d88('0x7'),'no'),'defaultValue':_0x6d88('0x7'),'allowNull':![]},'dialout':{'type':Sequelize[_0x6d88('0x1')]},'callback':{'type':Sequelize['STRING']},'review':{'type':Sequelize[_0x6d88('0x6')](_0x6d88('0x7'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x6d88('0x6')](_0x6d88('0x7'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x6d88('0x6')]('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x6d88('0x6')](_0x6d88('0x7'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x6d88('0x6')]('yes','no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x6d88('0x6')](_0x6d88('0x7'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize['ENUM'](_0x6d88('0x7'),'no'),'defaultValue':_0x6d88('0x7'),'allowNull':![]},'forcename':{'type':Sequelize[_0x6d88('0x6')]('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM'](_0x6d88('0x7'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x6d88('0x6')]('yes','no'),'defaultValue':_0x6d88('0x7'),'allowNull':![]},'stamp':{'type':'TIMESTAMP'},'emailsubject':{'type':Sequelize[_0x6d88('0x1')]},'emailbody':{'type':Sequelize[_0x6d88('0x1')]},'maxsecs':{'type':Sequelize[_0x6d88('0x8')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x6d88('0x8')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x6d88('0x9')](_0x6d88('0xa'))+'\x20-\x20'+this[_0x6d88('0x9')](_0x6d88('0xb'));}}};
\ No newline at end of file
index a3cea88..2ace2dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0972=['find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getMessages','findOne','pick','mailbox','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','destroy','get','Voicemails','error','stack','name','index','map','VoiceMail','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','VIRTUAL','include','findAll','rows','catch','params','length','options'];(function(_0x3e69ae,_0x366e8d){var _0x3d7f42=function(_0x5df093){while(--_0x5df093){_0x3e69ae['push'](_0x3e69ae['shift']());}};_0x3d7f42(++_0x366e8d);}(_0x0972,0x64));var _0x2097=function(_0x57c489,_0x3ae1ea){_0x57c489=_0x57c489-0x0;var _0x4fefd4=_0x0972[_0x57c489];return _0x4fefd4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2097('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2097('0x1'));var rp=require('request-promise');var moment=require(_0x2097('0x2'));var BPromise=require(_0x2097('0x3'));var Mustache=require('mustache');var util=require(_0x2097('0x4'));var path=require(_0x2097('0x5'));var sox=require(_0x2097('0x6'));var csv=require(_0x2097('0x7'));var ejs=require(_0x2097('0x8'));var fs=require('fs');var fs_extra=require(_0x2097('0x9'));var _=require(_0x2097('0xa'));var squel=require('squel');var crypto=require(_0x2097('0xb'));var jsforce=require(_0x2097('0xc'));var deskjs=require(_0x2097('0xd'));var toCsv=require(_0x2097('0x7'));var querystring=require(_0x2097('0xe'));var Papa=require('papaparse');var Redis=require(_0x2097('0xf'));var authService=require(_0x2097('0x10'));var qs=require(_0x2097('0x11'));var as=require(_0x2097('0x12'));var hardwareService=require(_0x2097('0x13'));var logger=require(_0x2097('0x14'))(_0x2097('0x15'));var utils=require(_0x2097('0x16'));var config=require(_0x2097('0x17'));var licenseUtil=require(_0x2097('0x18'));var db=require(_0x2097('0x19'))['db'];function respondWithStatusCode(_0x3b2f94,_0x170005){_0x170005=_0x170005||0xcc;return function(_0x16871b){if(_0x16871b){return _0x3b2f94[_0x2097('0x1a')](_0x170005);}return _0x3b2f94[_0x2097('0x1b')](_0x170005)[_0x2097('0x1c')]();};}function respondWithResult(_0x1c9ef9,_0x2c3e41){_0x2c3e41=_0x2c3e41||0xc8;return function(_0x354387){if(_0x354387){return _0x1c9ef9['status'](_0x2c3e41)[_0x2097('0x1d')](_0x354387);}};}function respondWithFilteredResult(_0x35c062,_0x4d31bc){return function(_0x4eec05){if(_0x4eec05){var _0x4fc8c5=typeof _0x4d31bc[_0x2097('0x1e')]==='undefined'&&typeof _0x4d31bc[_0x2097('0x1f')]===_0x2097('0x20');var _0x43fec9=_0x4eec05[_0x2097('0x21')];var _0x44c584=_0x4fc8c5?0x0:_0x4d31bc['offset'];var _0x324652=_0x4fc8c5?_0x4eec05[_0x2097('0x21')]:_0x4d31bc[_0x2097('0x1e')]+_0x4d31bc[_0x2097('0x1f')];var _0x1d3804;if(_0x324652>=_0x43fec9){_0x324652=_0x43fec9;_0x1d3804=0xc8;}else{_0x1d3804=0xce;}_0x35c062[_0x2097('0x1b')](_0x1d3804);return _0x35c062[_0x2097('0x22')](_0x2097('0x23'),_0x44c584+'-'+_0x324652+'/'+_0x43fec9)['json'](_0x4eec05);}return null;};}function patchUpdates(_0x4d957e){return function(_0xf65dc6){try{jsonpatch['apply'](_0xf65dc6,_0x4d957e,!![]);}catch(_0x227c00){return BPromise[_0x2097('0x24')](_0x227c00);}return _0xf65dc6['save']();};}function saveUpdates(_0x442db7,_0x5b0582){return function(_0x2e17c8){if(_0x2e17c8){return _0x2e17c8[_0x2097('0x25')](_0x442db7)[_0x2097('0x26')](function(_0x20b93a){return _0x20b93a;});}return null;};}function removeEntity(_0x36b15e,_0x35047b){return function(_0x56390a){if(_0x56390a){return _0x56390a[_0x2097('0x27')]()['then'](function(){var _0x3f9279=_0x56390a[_0x2097('0x28')]({'plain':!![]});var _0x345875=_0x2097('0x29');return db['UserProfileResource'][_0x2097('0x27')]({'where':{'type':_0x345875,'resourceId':_0x3f9279['id']}})[_0x2097('0x26')](function(){return _0x56390a;});})['then'](function(){_0x36b15e[_0x2097('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x29b879,_0x48ae06){return function(_0xbc0339){if(!_0xbc0339){_0x29b879[_0x2097('0x1a')](0x194);}return _0xbc0339;};}function handleError(_0x407a2a,_0x7eefb4){_0x7eefb4=_0x7eefb4||0x1f4;return function(_0x410afa){logger[_0x2097('0x2a')](_0x410afa[_0x2097('0x2b')]);if(_0x410afa['name']){delete _0x410afa[_0x2097('0x2c')];}_0x407a2a[_0x2097('0x1b')](_0x7eefb4)['send'](_0x410afa);};}exports[_0x2097('0x2d')]=function(_0x41487d,_0x59fb84){var _0x4d0916={},_0x312c77={},_0x11b051={'count':0x0,'rows':[]};var _0x1649c8=_[_0x2097('0x2e')](db[_0x2097('0x2f')][_0x2097('0x30')],function(_0x56c538){return{'name':_0x56c538[_0x2097('0x31')],'type':_0x56c538['type'][_0x2097('0x32')]};});_0x312c77[_0x2097('0x33')]=_[_0x2097('0x2e')](_0x1649c8,_0x2097('0x2c'));_0x312c77[_0x2097('0x34')]=_[_0x2097('0x35')](_0x41487d[_0x2097('0x34')]);_0x312c77[_0x2097('0x36')]=_[_0x2097('0x37')](_0x312c77['model'],_0x312c77[_0x2097('0x34')]);_0x4d0916[_0x2097('0x38')]=_[_0x2097('0x37')](_0x312c77['model'],qs[_0x2097('0x39')](_0x41487d[_0x2097('0x34')][_0x2097('0x39')]));_0x4d0916[_0x2097('0x38')]=_0x4d0916['attributes']['length']?_0x4d0916['attributes']:_0x312c77[_0x2097('0x33')];if(!_0x41487d[_0x2097('0x34')][_0x2097('0x3a')](_0x2097('0x3b'))){_0x4d0916[_0x2097('0x1f')]=qs[_0x2097('0x1f')](_0x41487d['query'][_0x2097('0x1f')]);_0x4d0916[_0x2097('0x1e')]=qs[_0x2097('0x1e')](_0x41487d[_0x2097('0x34')][_0x2097('0x1e')]);}_0x4d0916[_0x2097('0x3c')]=qs['sort'](_0x41487d[_0x2097('0x34')][_0x2097('0x3d')]);_0x4d0916[_0x2097('0x3e')]=qs['filters'](_['pick'](_0x41487d[_0x2097('0x34')],_0x312c77[_0x2097('0x36')]),_0x1649c8);if(_0x41487d[_0x2097('0x34')][_0x2097('0x3f')]){_0x4d0916[_0x2097('0x3e')]=_[_0x2097('0x40')](_0x4d0916[_0x2097('0x3e')],{'$or':_[_0x2097('0x2e')](_0x1649c8,function(_0x23c4a5){if(_0x23c4a5[_0x2097('0x41')]!==_0x2097('0x42')){var _0x1ef92a={};_0x1ef92a[_0x23c4a5['name']]={'$like':'%'+_0x41487d[_0x2097('0x34')][_0x2097('0x3f')]+'%'};return _0x1ef92a;}})});}_0x4d0916=_[_0x2097('0x40')]({},_0x4d0916,_0x41487d['options']);var _0x1394df={'where':_0x4d0916[_0x2097('0x3e')]};return db[_0x2097('0x2f')][_0x2097('0x21')](_0x1394df)[_0x2097('0x26')](function(_0xd4d89e){_0x11b051[_0x2097('0x21')]=_0xd4d89e;if(_0x41487d[_0x2097('0x34')]['includeAll']){_0x4d0916[_0x2097('0x43')]=[{'all':!![]}];}return db[_0x2097('0x2f')][_0x2097('0x44')](_0x4d0916);})[_0x2097('0x26')](function(_0x12e0e2){_0x11b051[_0x2097('0x45')]=_0x12e0e2;return _0x11b051;})[_0x2097('0x26')](respondWithFilteredResult(_0x59fb84,_0x4d0916))[_0x2097('0x46')](handleError(_0x59fb84,null));};exports['show']=function(_0x3fc3fe,_0x5869d8){var _0x3e0739={'raw':!![],'where':{'id':_0x3fc3fe[_0x2097('0x47')]['id']}},_0x298e49={};_0x298e49[_0x2097('0x33')]=_[_0x2097('0x35')](db['VoiceMail'][_0x2097('0x30')]);_0x298e49[_0x2097('0x34')]=_[_0x2097('0x35')](_0x3fc3fe[_0x2097('0x34')]);_0x298e49[_0x2097('0x36')]=_['intersection'](_0x298e49[_0x2097('0x33')],_0x298e49[_0x2097('0x34')]);_0x3e0739[_0x2097('0x38')]=_[_0x2097('0x37')](_0x298e49[_0x2097('0x33')],qs[_0x2097('0x39')](_0x3fc3fe[_0x2097('0x34')][_0x2097('0x39')]));_0x3e0739['attributes']=_0x3e0739[_0x2097('0x38')][_0x2097('0x48')]?_0x3e0739[_0x2097('0x38')]:_0x298e49[_0x2097('0x33')];if(_0x3fc3fe['query']['includeAll']){_0x3e0739['include']=[{'all':!![]}];}_0x3e0739=_[_0x2097('0x40')]({},_0x3e0739,_0x3fc3fe[_0x2097('0x49')]);return db['VoiceMail'][_0x2097('0x4a')](_0x3e0739)[_0x2097('0x26')](handleEntityNotFound(_0x5869d8,null))['then'](respondWithResult(_0x5869d8,null))['catch'](handleError(_0x5869d8,null));};exports[_0x2097('0x4b')]=function(_0x21829d,_0x1b4de6){return db['VoiceMail'][_0x2097('0x4b')](_0x21829d[_0x2097('0x4c')],{})['then'](function(_0x86a05a){var _0x2682a9=_0x21829d[_0x2097('0x4d')][_0x2097('0x28')]({'plain':!![]});if(!_0x2682a9)throw new Error(_0x2097('0x4e'));if(_0x2682a9['role']==='user'){var _0x140b41=_0x86a05a[_0x2097('0x28')]({'plain':!![]});var _0x329632='Voicemails';return db['UserProfileSection'][_0x2097('0x4a')]({'where':{'name':_0x329632,'userProfileId':_0x2682a9[_0x2097('0x4f')]},'raw':!![]})['then'](function(_0x41cd90){if(_0x41cd90&&_0x41cd90[_0x2097('0x50')]===0x0){return db[_0x2097('0x51')][_0x2097('0x4b')]({'name':_0x140b41[_0x2097('0x2c')],'resourceId':_0x140b41['id'],'type':_0x41cd90['name'],'sectionId':_0x41cd90['id']},{})[_0x2097('0x26')](function(){return _0x86a05a;});}else{return _0x86a05a;}})[_0x2097('0x46')](function(_0x190859){logger['error'](_0x2097('0x52'),_0x190859);throw _0x190859;});}return _0x86a05a;})[_0x2097('0x26')](respondWithResult(_0x1b4de6,0xc9))['catch'](handleError(_0x1b4de6,null));};exports[_0x2097('0x25')]=function(_0x4d6ed6,_0x30b4cd){if(_0x4d6ed6['body']['id']){delete _0x4d6ed6['body']['id'];}return db['VoiceMail'][_0x2097('0x4a')]({'where':{'id':_0x4d6ed6['params']['id']}})['then'](handleEntityNotFound(_0x30b4cd,null))[_0x2097('0x26')](saveUpdates(_0x4d6ed6['body'],null))[_0x2097('0x26')](respondWithResult(_0x30b4cd,null))[_0x2097('0x46')](handleError(_0x30b4cd,null));};exports['destroy']=function(_0x3e799f,_0x3e2e45){return db[_0x2097('0x2f')][_0x2097('0x4a')]({'where':{'id':_0x3e799f[_0x2097('0x47')]['id']}})['then'](handleEntityNotFound(_0x3e2e45,null))[_0x2097('0x26')](removeEntity(_0x3e2e45,null))['catch'](handleError(_0x3e2e45,null));};exports[_0x2097('0x53')]=function(_0x140e43,_0x24f166,_0x55e3cd){return db[_0x2097('0x2f')][_0x2097('0x54')]({'where':{'id':_0x140e43[_0x2097('0x47')]['id']}})[_0x2097('0x26')](handleEntityNotFound(_0x24f166,null))[_0x2097('0x26')](function(_0x56cfbf){var _0x5b9fa2;var _0x265eac={},_0x275578={};_0x275578['model']=_['keys'](db['VoiceMailMessage']['rawAttributes']);_0x275578[_0x2097('0x34')]=_['keys'](_0x140e43[_0x2097('0x34')]);_0x275578[_0x2097('0x36')]=_['intersection'](_0x275578[_0x2097('0x33')],_0x275578[_0x2097('0x34')]);_0x265eac[_0x2097('0x38')]=_[_0x2097('0x37')](_0x275578[_0x2097('0x33')],qs[_0x2097('0x39')](_0x140e43[_0x2097('0x34')][_0x2097('0x39')]));_0x265eac[_0x2097('0x38')]=_0x265eac['attributes'][_0x2097('0x48')]?_0x265eac[_0x2097('0x38')]:_0x275578[_0x2097('0x33')];if(!_0x140e43[_0x2097('0x34')][_0x2097('0x3a')](_0x2097('0x3b'))){_0x265eac['limit']=qs[_0x2097('0x1f')](_0x140e43[_0x2097('0x34')][_0x2097('0x1f')]);_0x265eac[_0x2097('0x1e')]=qs[_0x2097('0x1e')](_0x140e43['query'][_0x2097('0x1e')]);}_0x265eac[_0x2097('0x3c')]=qs['sort'](_0x140e43['query']['sort']);_0x265eac[_0x2097('0x3e')]=qs[_0x2097('0x36')](_[_0x2097('0x55')](_0x140e43[_0x2097('0x34')],_0x275578[_0x2097('0x36')]));if(_0x140e43[_0x2097('0x34')][_0x2097('0x3f')]){_0x265eac[_0x2097('0x3e')]=_[_0x2097('0x40')](_0x265eac['where'],{'$or':_['map'](_0x265eac[_0x2097('0x38')],function(_0x34d832){var _0x1eeb30={};_0x1eeb30[_0x34d832]={'$like':'%'+_0x140e43[_0x2097('0x34')][_0x2097('0x3f')]+'%'};return _0x1eeb30;})});}_0x265eac[_0x2097('0x3e')]=_['merge'](_0x265eac[_0x2097('0x3e')],{'mailboxuser':_0x56cfbf[_0x2097('0x56')]});_0x265eac=_[_0x2097('0x40')]({},_0x265eac,_0x140e43[_0x2097('0x49')]);return db['VoiceMailMessage']['findAndCountAll'](_0x265eac)[_0x2097('0x26')](respondWithFilteredResult(_0x24f166,_0x265eac));})[_0x2097('0x46')](handleError(_0x24f166,null));};
\ No newline at end of file
+var _0xd8b0=['find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','findOne','VoiceMailMessage','rawAttributes','nolimit','order','eml-format','rimraf','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','save','update','then','destroy','Voicemails','error','name','index','VoiceMail','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','limit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','catch','show','params','options'];(function(_0x28c727,_0x4d0310){var _0x42e0b9=function(_0x4c296d){while(--_0x4c296d){_0x28c727['push'](_0x28c727['shift']());}};_0x42e0b9(++_0x4d0310);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x0d8b('0x0'));var rimraf=require(_0x0d8b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0d8b('0x2'));var BPromise=require(_0x0d8b('0x3'));var Mustache=require(_0x0d8b('0x4'));var util=require(_0x0d8b('0x5'));var path=require(_0x0d8b('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0d8b('0x7'));var fs=require('fs');var fs_extra=require(_0x0d8b('0x8'));var _=require(_0x0d8b('0x9'));var squel=require('squel');var crypto=require(_0x0d8b('0xa'));var jsforce=require(_0x0d8b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0d8b('0xc'));var querystring=require(_0x0d8b('0xd'));var Papa=require(_0x0d8b('0xe'));var Redis=require(_0x0d8b('0xf'));var authService=require(_0x0d8b('0x10'));var qs=require(_0x0d8b('0x11'));var as=require(_0x0d8b('0x12'));var hardwareService=require(_0x0d8b('0x13'));var logger=require('../../config/logger')(_0x0d8b('0x14'));var utils=require('../../config/utils');var config=require(_0x0d8b('0x15'));var licenseUtil=require(_0x0d8b('0x16'));var db=require(_0x0d8b('0x17'))['db'];function respondWithStatusCode(_0x92cdd8,_0x35a07b){_0x35a07b=_0x35a07b||0xcc;return function(_0x32bb1a){if(_0x32bb1a){return _0x92cdd8[_0x0d8b('0x18')](_0x35a07b);}return _0x92cdd8[_0x0d8b('0x19')](_0x35a07b)[_0x0d8b('0x1a')]();};}function respondWithResult(_0x2ce75e,_0x5ad086){_0x5ad086=_0x5ad086||0xc8;return function(_0xe65334){if(_0xe65334){return _0x2ce75e[_0x0d8b('0x19')](_0x5ad086)[_0x0d8b('0x1b')](_0xe65334);}};}function respondWithFilteredResult(_0x4f6f21,_0x23eb7b){return function(_0xa86349){if(_0xa86349){var _0x17f7df=typeof _0x23eb7b[_0x0d8b('0x1c')]===_0x0d8b('0x1d')&&typeof _0x23eb7b['limit']===_0x0d8b('0x1d');var _0x4586c2=_0xa86349[_0x0d8b('0x1e')];var _0x5fecbd=_0x17f7df?0x0:_0x23eb7b[_0x0d8b('0x1c')];var _0x18dd2d=_0x17f7df?_0xa86349[_0x0d8b('0x1e')]:_0x23eb7b[_0x0d8b('0x1c')]+_0x23eb7b['limit'];var _0x27512e;if(_0x18dd2d>=_0x4586c2){_0x18dd2d=_0x4586c2;_0x27512e=0xc8;}else{_0x27512e=0xce;}_0x4f6f21[_0x0d8b('0x19')](_0x27512e);return _0x4f6f21[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x5fecbd+'-'+_0x18dd2d+'/'+_0x4586c2)[_0x0d8b('0x1b')](_0xa86349);}return null;};}function patchUpdates(_0x5b709c){return function(_0x393beb){try{jsonpatch[_0x0d8b('0x21')](_0x393beb,_0x5b709c,!![]);}catch(_0x50ec1e){return BPromise['reject'](_0x50ec1e);}return _0x393beb[_0x0d8b('0x22')]();};}function saveUpdates(_0x54a9a7,_0x56c729){return function(_0x5527d8){if(_0x5527d8){return _0x5527d8[_0x0d8b('0x23')](_0x54a9a7)[_0x0d8b('0x24')](function(_0x214778){return _0x214778;});}return null;};}function removeEntity(_0x38efc8,_0x221071){return function(_0x2c64e2){if(_0x2c64e2){return _0x2c64e2[_0x0d8b('0x25')]()[_0x0d8b('0x24')](function(){var _0x27b695=_0x2c64e2['get']({'plain':!![]});var _0xe8bbee=_0x0d8b('0x26');return db['UserProfileResource'][_0x0d8b('0x25')]({'where':{'type':_0xe8bbee,'resourceId':_0x27b695['id']}})['then'](function(){return _0x2c64e2;});})[_0x0d8b('0x24')](function(){_0x38efc8[_0x0d8b('0x19')](0xcc)[_0x0d8b('0x1a')]();});}};}function handleEntityNotFound(_0x4fe6f9,_0x59a905){return function(_0x28f639){if(!_0x28f639){_0x4fe6f9[_0x0d8b('0x18')](0x194);}return _0x28f639;};}function handleError(_0x4c05ee,_0xcbc4ac){_0xcbc4ac=_0xcbc4ac||0x1f4;return function(_0x59aa83){logger[_0x0d8b('0x27')](_0x59aa83['stack']);if(_0x59aa83[_0x0d8b('0x28')]){delete _0x59aa83['name'];}_0x4c05ee[_0x0d8b('0x19')](_0xcbc4ac)['send'](_0x59aa83);};}exports[_0x0d8b('0x29')]=function(_0x544735,_0x3c8887){var _0x106e4c={},_0x2c058d={},_0x56120a={'count':0x0,'rows':[]};var _0x4c80a2=_['map'](db[_0x0d8b('0x2a')]['rawAttributes'],function(_0x3cdf3c){return{'name':_0x3cdf3c['fieldName'],'type':_0x3cdf3c['type'][_0x0d8b('0x2b')]};});_0x2c058d[_0x0d8b('0x2c')]=_[_0x0d8b('0x2d')](_0x4c80a2,_0x0d8b('0x28'));_0x2c058d[_0x0d8b('0x2e')]=_[_0x0d8b('0x2f')](_0x544735[_0x0d8b('0x2e')]);_0x2c058d[_0x0d8b('0x30')]=_['intersection'](_0x2c058d[_0x0d8b('0x2c')],_0x2c058d[_0x0d8b('0x2e')]);_0x106e4c['attributes']=_[_0x0d8b('0x31')](_0x2c058d[_0x0d8b('0x2c')],qs[_0x0d8b('0x32')](_0x544735['query'][_0x0d8b('0x32')]));_0x106e4c[_0x0d8b('0x33')]=_0x106e4c[_0x0d8b('0x33')][_0x0d8b('0x34')]?_0x106e4c[_0x0d8b('0x33')]:_0x2c058d['model'];if(!_0x544735[_0x0d8b('0x2e')][_0x0d8b('0x35')]('nolimit')){_0x106e4c[_0x0d8b('0x36')]=qs[_0x0d8b('0x36')](_0x544735[_0x0d8b('0x2e')][_0x0d8b('0x36')]);_0x106e4c[_0x0d8b('0x1c')]=qs['offset'](_0x544735['query'][_0x0d8b('0x1c')]);}_0x106e4c['order']=qs['sort'](_0x544735[_0x0d8b('0x2e')][_0x0d8b('0x37')]);_0x106e4c[_0x0d8b('0x38')]=qs[_0x0d8b('0x30')](_[_0x0d8b('0x39')](_0x544735[_0x0d8b('0x2e')],_0x2c058d['filters']),_0x4c80a2);if(_0x544735[_0x0d8b('0x2e')][_0x0d8b('0x3a')]){_0x106e4c[_0x0d8b('0x38')]=_[_0x0d8b('0x3b')](_0x106e4c[_0x0d8b('0x38')],{'$or':_[_0x0d8b('0x2d')](_0x4c80a2,function(_0xf1680e){if(_0xf1680e['type']!==_0x0d8b('0x3c')){var _0x34acb5={};_0x34acb5[_0xf1680e[_0x0d8b('0x28')]]={'$like':'%'+_0x544735[_0x0d8b('0x2e')]['filter']+'%'};return _0x34acb5;}})});}_0x106e4c=_[_0x0d8b('0x3b')]({},_0x106e4c,_0x544735['options']);var _0x37b26c={'where':_0x106e4c[_0x0d8b('0x38')]};return db[_0x0d8b('0x2a')][_0x0d8b('0x1e')](_0x37b26c)[_0x0d8b('0x24')](function(_0x3e632e){_0x56120a[_0x0d8b('0x1e')]=_0x3e632e;if(_0x544735[_0x0d8b('0x2e')][_0x0d8b('0x3d')]){_0x106e4c[_0x0d8b('0x3e')]=[{'all':!![]}];}return db['VoiceMail']['findAll'](_0x106e4c);})['then'](function(_0x4d0811){_0x56120a['rows']=_0x4d0811;return _0x56120a;})[_0x0d8b('0x24')](respondWithFilteredResult(_0x3c8887,_0x106e4c))[_0x0d8b('0x3f')](handleError(_0x3c8887,null));};exports[_0x0d8b('0x40')]=function(_0x5100cf,_0x4a76a3){var _0x1b216d={'raw':!![],'where':{'id':_0x5100cf[_0x0d8b('0x41')]['id']}},_0x192de1={};_0x192de1['model']=_[_0x0d8b('0x2f')](db[_0x0d8b('0x2a')]['rawAttributes']);_0x192de1['query']=_[_0x0d8b('0x2f')](_0x5100cf['query']);_0x192de1[_0x0d8b('0x30')]=_['intersection'](_0x192de1['model'],_0x192de1[_0x0d8b('0x2e')]);_0x1b216d[_0x0d8b('0x33')]=_['intersection'](_0x192de1['model'],qs['fields'](_0x5100cf['query'][_0x0d8b('0x32')]));_0x1b216d[_0x0d8b('0x33')]=_0x1b216d[_0x0d8b('0x33')]['length']?_0x1b216d[_0x0d8b('0x33')]:_0x192de1[_0x0d8b('0x2c')];if(_0x5100cf[_0x0d8b('0x2e')][_0x0d8b('0x3d')]){_0x1b216d[_0x0d8b('0x3e')]=[{'all':!![]}];}_0x1b216d=_[_0x0d8b('0x3b')]({},_0x1b216d,_0x5100cf[_0x0d8b('0x42')]);return db[_0x0d8b('0x2a')][_0x0d8b('0x43')](_0x1b216d)[_0x0d8b('0x24')](handleEntityNotFound(_0x4a76a3,null))[_0x0d8b('0x24')](respondWithResult(_0x4a76a3,null))[_0x0d8b('0x3f')](handleError(_0x4a76a3,null));};exports[_0x0d8b('0x44')]=function(_0x3e569b,_0x570af8){return db[_0x0d8b('0x2a')][_0x0d8b('0x44')](_0x3e569b[_0x0d8b('0x45')],{})[_0x0d8b('0x24')](function(_0x574b90){var _0x371fa0=_0x3e569b['user']['get']({'plain':!![]});if(!_0x371fa0)throw new Error(_0x0d8b('0x46'));if(_0x371fa0[_0x0d8b('0x47')]===_0x0d8b('0x48')){var _0x4396b5=_0x574b90['get']({'plain':!![]});var _0x131579=_0x0d8b('0x26');return db[_0x0d8b('0x49')][_0x0d8b('0x43')]({'where':{'name':_0x131579,'userProfileId':_0x371fa0[_0x0d8b('0x4a')]},'raw':!![]})['then'](function(_0x5c0824){if(_0x5c0824&&_0x5c0824['autoAssociation']===0x0){return db['UserProfileResource'][_0x0d8b('0x44')]({'name':_0x4396b5[_0x0d8b('0x28')],'resourceId':_0x4396b5['id'],'type':_0x5c0824['name'],'sectionId':_0x5c0824['id']},{})['then'](function(){return _0x574b90;});}else{return _0x574b90;}})[_0x0d8b('0x3f')](function(_0x3d3cb6){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3d3cb6);throw _0x3d3cb6;});}return _0x574b90;})[_0x0d8b('0x24')](respondWithResult(_0x570af8,0xc9))[_0x0d8b('0x3f')](handleError(_0x570af8,null));};exports[_0x0d8b('0x23')]=function(_0x346c0d,_0x2d5519){if(_0x346c0d['body']['id']){delete _0x346c0d[_0x0d8b('0x45')]['id'];}return db[_0x0d8b('0x2a')]['find']({'where':{'id':_0x346c0d['params']['id']}})[_0x0d8b('0x24')](handleEntityNotFound(_0x2d5519,null))[_0x0d8b('0x24')](saveUpdates(_0x346c0d['body'],null))['then'](respondWithResult(_0x2d5519,null))[_0x0d8b('0x3f')](handleError(_0x2d5519,null));};exports[_0x0d8b('0x25')]=function(_0x377027,_0xb58818){return db['VoiceMail'][_0x0d8b('0x43')]({'where':{'id':_0x377027['params']['id']}})['then'](handleEntityNotFound(_0xb58818,null))[_0x0d8b('0x24')](removeEntity(_0xb58818,null))[_0x0d8b('0x3f')](handleError(_0xb58818,null));};exports['getMessages']=function(_0x4a8f33,_0x44ed23,_0x3d7161){return db[_0x0d8b('0x2a')][_0x0d8b('0x4b')]({'where':{'id':_0x4a8f33[_0x0d8b('0x41')]['id']}})[_0x0d8b('0x24')](handleEntityNotFound(_0x44ed23,null))[_0x0d8b('0x24')](function(_0x3bead7){var _0x5418d8;var _0x24a859={},_0x37dc9f={};_0x37dc9f[_0x0d8b('0x2c')]=_[_0x0d8b('0x2f')](db[_0x0d8b('0x4c')][_0x0d8b('0x4d')]);_0x37dc9f[_0x0d8b('0x2e')]=_[_0x0d8b('0x2f')](_0x4a8f33[_0x0d8b('0x2e')]);_0x37dc9f['filters']=_[_0x0d8b('0x31')](_0x37dc9f[_0x0d8b('0x2c')],_0x37dc9f[_0x0d8b('0x2e')]);_0x24a859[_0x0d8b('0x33')]=_[_0x0d8b('0x31')](_0x37dc9f['model'],qs[_0x0d8b('0x32')](_0x4a8f33[_0x0d8b('0x2e')][_0x0d8b('0x32')]));_0x24a859[_0x0d8b('0x33')]=_0x24a859[_0x0d8b('0x33')]['length']?_0x24a859['attributes']:_0x37dc9f[_0x0d8b('0x2c')];if(!_0x4a8f33[_0x0d8b('0x2e')][_0x0d8b('0x35')](_0x0d8b('0x4e'))){_0x24a859['limit']=qs[_0x0d8b('0x36')](_0x4a8f33[_0x0d8b('0x2e')][_0x0d8b('0x36')]);_0x24a859['offset']=qs[_0x0d8b('0x1c')](_0x4a8f33['query'][_0x0d8b('0x1c')]);}_0x24a859[_0x0d8b('0x4f')]=qs[_0x0d8b('0x37')](_0x4a8f33[_0x0d8b('0x2e')][_0x0d8b('0x37')]);_0x24a859[_0x0d8b('0x38')]=qs['filters'](_[_0x0d8b('0x39')](_0x4a8f33['query'],_0x37dc9f[_0x0d8b('0x30')]));if(_0x4a8f33[_0x0d8b('0x2e')][_0x0d8b('0x3a')]){_0x24a859[_0x0d8b('0x38')]=_['merge'](_0x24a859[_0x0d8b('0x38')],{'$or':_[_0x0d8b('0x2d')](_0x24a859[_0x0d8b('0x33')],function(_0x2332fc){var _0x2ccdae={};_0x2ccdae[_0x2332fc]={'$like':'%'+_0x4a8f33[_0x0d8b('0x2e')][_0x0d8b('0x3a')]+'%'};return _0x2ccdae;})});}_0x24a859[_0x0d8b('0x38')]=_[_0x0d8b('0x3b')](_0x24a859[_0x0d8b('0x38')],{'mailboxuser':_0x3bead7['mailbox']});_0x24a859=_['merge']({},_0x24a859,_0x4a8f33[_0x0d8b('0x42')]);return db[_0x0d8b('0x4c')]['findAndCountAll'](_0x24a859)[_0x0d8b('0x24')](respondWithFilteredResult(_0x44ed23,_0x24a859));})['catch'](handleError(_0x44ed23,null));};
\ No newline at end of file
index 4c70463..67d833a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9591=['VoiceMail','mailbox_context','mailbox','context','moment','path','rimraf','../../config/environment','exports','define'];(function(_0x2b6985,_0x48aaaa){var _0x696bc1=function(_0x4e2702){while(--_0x4e2702){_0x2b6985['push'](_0x2b6985['shift']());}};_0x696bc1(++_0x48aaaa);}(_0x9591,0x162));var _0x1959=function(_0x399ccf,_0x3f41e3){_0x399ccf=_0x399ccf-0x0;var _0x4bc775=_0x9591[_0x399ccf];return _0x4bc775;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x1959('0x0'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x1959('0x1'));var rimraf=require(_0x1959('0x2'));var config=require(_0x1959('0x3'));var attributes=require('./voiceMail.attributes');module[_0x1959('0x4')]=function(_0x93e1e6,_0x4893be){return _0x93e1e6[_0x1959('0x5')](_0x1959('0x6'),attributes,{'tableName':'voice_voicemail','paranoid':![],'indexes':[{'name':_0x1959('0x7'),'fields':[_0x1959('0x8'),_0x1959('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x30b5=['request-promise','path','rimraf','./voiceMail.attributes','exports','define','voice_voicemail','mailbox','context','lodash','util','../../config/logger','bluebird'];(function(_0x23aa6b,_0x538c5c){var _0x354d85=function(_0x2d255b){while(--_0x2d255b){_0x23aa6b['push'](_0x23aa6b['shift']());}};_0x354d85(++_0x538c5c);}(_0x30b5,0xd9));var _0x530b=function(_0x1deb03,_0xd05ad8){_0x1deb03=_0x1deb03-0x0;var _0x189fe7=_0x30b5[_0x1deb03];return _0x189fe7;};'use strict';var _=require(_0x530b('0x0'));var util=require(_0x530b('0x1'));var logger=require(_0x530b('0x2'))('api');var moment=require('moment');var BPromise=require(_0x530b('0x3'));var rp=require(_0x530b('0x4'));var fs=require('fs');var path=require(_0x530b('0x5'));var rimraf=require(_0x530b('0x6'));var config=require('../../config/environment');var attributes=require(_0x530b('0x7'));module[_0x530b('0x8')]=function(_0x381f27,_0x5eb630){return _0x381f27[_0x530b('0x9')]('VoiceMail',attributes,{'tableName':_0x530b('0xa'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':[_0x530b('0xb'),_0x530b('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 7ae280a..6015496 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76dc=['request','then','info','VoiceMail,\x20%s,\x20%s','debug','VoiceMail,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','lodash','util','moment','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x36eaaa,_0x326732){var _0x461349=function(_0x4e4180){while(--_0x4e4180){_0x36eaaa['push'](_0x36eaaa['shift']());}};_0x461349(++_0x326732);}(_0x76dc,0x186));var _0xc76d=function(_0x575748,_0x5196ba){_0x575748=_0x575748-0x0;var _0xee4c29=_0x76dc[_0x575748];return _0xee4c29;};'use strict';var _=require(_0xc76d('0x0'));var util=require(_0xc76d('0x1'));var moment=require(_0xc76d('0x2'));var BPromise=require('bluebird');var rs=require(_0xc76d('0x3'));var fs=require('fs');var Redis=require(_0xc76d('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc76d('0x5'))('rpc');var config=require(_0xc76d('0x6'));var jayson=require(_0xc76d('0x7'));var client=jayson[_0xc76d('0x8')][_0xc76d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2fe7ec,_0x170d22,_0x567b0a){return new BPromise(function(_0x47ca89,_0x1e4ff9){return client[_0xc76d('0xa')](_0x2fe7ec,_0x567b0a)[_0xc76d('0xb')](function(_0x40c8eb){logger[_0xc76d('0xc')](_0xc76d('0xd'),_0x170d22,'request\x20sent');logger[_0xc76d('0xe')](_0xc76d('0xf'),_0x170d22,_0xc76d('0x10'),JSON['stringify'](_0x40c8eb));if(_0x40c8eb[_0xc76d('0x11')]){if(_0x40c8eb[_0xc76d('0x11')]['code']===0x1f4){logger[_0xc76d('0x11')](_0xc76d('0xd'),_0x170d22,_0x40c8eb['error']['message']);return _0x1e4ff9(_0x40c8eb[_0xc76d('0x11')][_0xc76d('0x12')]);}logger['error'](_0xc76d('0xd'),_0x170d22,_0x40c8eb[_0xc76d('0x11')][_0xc76d('0x12')]);return _0x47ca89(_0x40c8eb[_0xc76d('0x11')]['message']);}else{logger['info']('VoiceMail,\x20%s,\x20%s',_0x170d22,_0xc76d('0x10'));_0x47ca89(_0x40c8eb[_0xc76d('0x13')]['message']);}})['catch'](function(_0x2b8e94){logger['error'](_0xc76d('0xd'),_0x170d22,_0x2b8e94);_0x1e4ff9(_0x2b8e94);});});}
\ No newline at end of file
+var _0x1805=['then','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http'];(function(_0x2eb795,_0x53ae4f){var _0x568a65=function(_0x9f0564){while(--_0x9f0564){_0x2eb795['push'](_0x2eb795['shift']());}};_0x568a65(++_0x53ae4f);}(_0x1805,0x113));var _0x5180=function(_0x28dced,_0x5a4f6c){_0x28dced=_0x28dced-0x0;var _0x35c91c=_0x1805[_0x28dced];return _0x35c91c;};'use strict';var _=require(_0x5180('0x0'));var util=require('util');var moment=require(_0x5180('0x1'));var BPromise=require(_0x5180('0x2'));var rs=require(_0x5180('0x3'));var fs=require('fs');var Redis=require(_0x5180('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x5180('0x5'));var logger=require(_0x5180('0x6'))(_0x5180('0x7'));var config=require('../../config/environment');var jayson=require(_0x5180('0x8'));var client=jayson[_0x5180('0x9')][_0x5180('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1fe59f,_0x385b91,_0x2444f3){return new BPromise(function(_0x2d5dc5,_0x5ab9b5){return client['request'](_0x1fe59f,_0x2444f3)[_0x5180('0xb')](function(_0x164f63){logger['info'](_0x5180('0xc'),_0x385b91,_0x5180('0xd'));logger[_0x5180('0xe')](_0x5180('0xf'),_0x385b91,_0x5180('0xd'),JSON[_0x5180('0x10')](_0x164f63));if(_0x164f63[_0x5180('0x11')]){if(_0x164f63[_0x5180('0x11')]['code']===0x1f4){logger[_0x5180('0x11')]('VoiceMail,\x20%s,\x20%s',_0x385b91,_0x164f63[_0x5180('0x11')][_0x5180('0x12')]);return _0x5ab9b5(_0x164f63[_0x5180('0x11')]['message']);}logger[_0x5180('0x11')](_0x5180('0xc'),_0x385b91,_0x164f63['error'][_0x5180('0x12')]);return _0x2d5dc5(_0x164f63[_0x5180('0x11')][_0x5180('0x12')]);}else{logger[_0x5180('0x13')](_0x5180('0xc'),_0x385b91,_0x5180('0xd'));_0x2d5dc5(_0x164f63[_0x5180('0x14')][_0x5180('0x12')]);}})[_0x5180('0x15')](function(_0x1cdd77){logger['error'](_0x5180('0xc'),_0x385b91,_0x1cdd77);_0x5ab9b5(_0x1cdd77);});});}
\ No newline at end of file
index 94e6f3b..18f8aa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7def=['create','delete','destroy','multer','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceMailMessage.controller','get','isAuthenticated','post'];(function(_0x54a946,_0x30a84e){var _0x4484af=function(_0x104920){while(--_0x104920){_0x54a946['push'](_0x54a946['shift']());}};_0x4484af(++_0x30a84e);}(_0x7def,0x1bd));var _0xf7de=function(_0x2fc012,_0x503e5b){_0x2fc012=_0x2fc012-0x0;var _0x2891f9=_0x7def[_0x2fc012];return _0x2891f9;};'use strict';var multer=require(_0xf7de('0x0'));var util=require('util');var path=require(_0xf7de('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf7de('0x2')]();var fs_extra=require(_0xf7de('0x3'));var auth=require(_0xf7de('0x4'));var interaction=require(_0xf7de('0x5'));var config=require('../../config/environment');var controller=require(_0xf7de('0x6'));router[_0xf7de('0x7')]('/',auth[_0xf7de('0x8')](),controller['index']);router[_0xf7de('0x7')]('/:id',auth[_0xf7de('0x8')](),controller['show']);router[_0xf7de('0x7')]('/:id/download',auth[_0xf7de('0x8')](),controller['download']);router[_0xf7de('0x9')]('/',auth[_0xf7de('0x8')](),controller[_0xf7de('0xa')]);router['put']('/:id',auth[_0xf7de('0x8')](),controller['update']);router[_0xf7de('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xf7de('0xc')]);module['exports']=router;
\ No newline at end of file
+var _0x2bb7=['../../components/auth/service','../../components/interaction/service','get','index','/:id','show','download','post','isAuthenticated','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x5e06f5,_0x4b705e){var _0x2526d0=function(_0x1641bd){while(--_0x1641bd){_0x5e06f5['push'](_0x5e06f5['shift']());}};_0x2526d0(++_0x4b705e);}(_0x2bb7,0x189));var _0x72bb=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x2bb7[_0x3bf83f];return _0x22c4a9;};'use strict';var multer=require('multer');var util=require(_0x72bb('0x0'));var path=require(_0x72bb('0x1'));var timeout=require(_0x72bb('0x2'));var express=require(_0x72bb('0x3'));var router=express[_0x72bb('0x4')]();var fs_extra=require(_0x72bb('0x5'));var auth=require(_0x72bb('0x6'));var interaction=require(_0x72bb('0x7'));var config=require('../../config/environment');var controller=require('./voiceMailMessage.controller');router[_0x72bb('0x8')]('/',auth['isAuthenticated'](),controller[_0x72bb('0x9')]);router['get'](_0x72bb('0xa'),auth['isAuthenticated'](),controller[_0x72bb('0xb')]);router[_0x72bb('0x8')]('/:id/download',auth['isAuthenticated'](),controller[_0x72bb('0xc')]);router[_0x72bb('0xd')]('/',auth[_0x72bb('0xe')](),controller[_0x72bb('0xf')]);router[_0x72bb('0x10')](_0x72bb('0xa'),auth['isAuthenticated'](),controller[_0x72bb('0x11')]);router[_0x72bb('0x12')](_0x72bb('0xa'),auth[_0x72bb('0xe')](),controller[_0x72bb('0x13')]);module[_0x72bb('0x14')]=router;
\ No newline at end of file
index 60ea8ba..323a5b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde78=['sequelize','exports','VIRTUAL','getDataValue','INTEGER','STRING','BLOB','long','TIMESTAMP','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP'];(function(_0x3833b5,_0x5c34bc){var _0x253a43=function(_0x2f3632){while(--_0x2f3632){_0x3833b5['push'](_0x3833b5['shift']());}};_0x253a43(++_0x5c34bc);}(_0xde78,0x17c));var _0x8de7=function(_0x3452a8,_0x4bfaa4){_0x3452a8=_0x3452a8-0x0;var _0x233814=_0xde78[_0x3452a8];return _0x233814;};'use strict';var Sequelize=require(_0x8de7('0x0'));module[_0x8de7('0x1')]={'name':{'type':Sequelize[_0x8de7('0x2')],'get':function(_0x4963c3){return this[_0x8de7('0x3')]('id');}},'msgnum':{'type':Sequelize[_0x8de7('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x8de7('0x5')],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize[_0x8de7('0x5')],'defaultValue':''},'origtime':{'type':Sequelize[_0x8de7('0x5')],'defaultValue':''},'duration':{'type':Sequelize[_0x8de7('0x5')],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x8de7('0x5')],'defaultValue':''},'recording':{'type':Sequelize[_0x8de7('0x6')](_0x8de7('0x7')),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0x8de7('0x8'),'defaultValue':Sequelize['literal'](_0x8de7('0x9'))}};
\ No newline at end of file
+var _0x771c=['TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','getDataValue','INTEGER','STRING','BLOB','long'];(function(_0x4e39e4,_0x431a3b){var _0x661ad1=function(_0x43b6c3){while(--_0x43b6c3){_0x4e39e4['push'](_0x4e39e4['shift']());}};_0x661ad1(++_0x431a3b);}(_0x771c,0x1b0));var _0xc771=function(_0x380f78,_0x59add8){_0x380f78=_0x380f78-0x0;var _0x1d3ecd=_0x771c[_0x380f78];return _0x1d3ecd;};'use strict';var Sequelize=require(_0xc771('0x0'));module[_0xc771('0x1')]={'name':{'type':Sequelize[_0xc771('0x2')],'get':function(_0x539550){return this[_0xc771('0x3')]('id');}},'msgnum':{'type':Sequelize[_0xc771('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize[_0xc771('0x5')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xc771('0x5')],'defaultValue':''},'callerid':{'type':Sequelize[_0xc771('0x5')],'defaultValue':''},'origtime':{'type':Sequelize[_0xc771('0x5')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xc771('0x5')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xc771('0x5')],'defaultValue':''},'recording':{'type':Sequelize[_0xc771('0x6')](_0xc771('0x7')),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize[_0xc771('0x5')],'defaultValue':''},'stamp':{'type':_0xc771('0x8'),'defaultValue':Sequelize[_0xc771('0x9')](_0xc771('0xa'))}};
\ No newline at end of file
index 6ad479d..b021b9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7811=['count','set','Content-Range','apply','update','destroy','then','stack','name','send','index','map','VoiceMailMessage','rawAttributes','fieldName','key','model','differenceBy','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','create','body','params','download','recording','msg_id','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','.wav\x22','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','lodash','crypto','jsforce','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','end','status','json','offset','undefined','limit'];(function(_0x16b561,_0x5a914f){var _0x22599f=function(_0x27ce85){while(--_0x27ce85){_0x16b561['push'](_0x16b561['shift']());}};_0x22599f(++_0x5a914f);}(_0x7811,0x140));var _0x1781=function(_0x588fb7,_0x16c606){_0x588fb7=_0x588fb7-0x0;var _0x538362=_0x7811[_0x588fb7];return _0x538362;};'use strict';var emlformat=require(_0x1781('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1781('0x1'));var jsonpatch=require(_0x1781('0x2'));var rp=require(_0x1781('0x3'));var moment=require(_0x1781('0x4'));var BPromise=require(_0x1781('0x5'));var Mustache=require(_0x1781('0x6'));var util=require(_0x1781('0x7'));var path=require(_0x1781('0x8'));var sox=require(_0x1781('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1781('0xa'));var squel=require('squel');var crypto=require(_0x1781('0xb'));var jsforce=require(_0x1781('0xc'));var deskjs=require(_0x1781('0xd'));var toCsv=require(_0x1781('0xe'));var querystring=require(_0x1781('0xf'));var Papa=require(_0x1781('0x10'));var Redis=require(_0x1781('0x11'));var authService=require(_0x1781('0x12'));var qs=require(_0x1781('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x1781('0x14'));var logger=require(_0x1781('0x15'))('api');var utils=require(_0x1781('0x16'));var config=require(_0x1781('0x17'));var licenseUtil=require(_0x1781('0x18'));var db=require(_0x1781('0x19'))['db'];function respondWithStatusCode(_0x4999cb,_0x2362f0){_0x2362f0=_0x2362f0||0xcc;return function(_0x55fd05){if(_0x55fd05){return _0x4999cb['sendStatus'](_0x2362f0);}return _0x4999cb['status'](_0x2362f0)[_0x1781('0x1a')]();};}function respondWithResult(_0x210356,_0x4bdf5c){_0x4bdf5c=_0x4bdf5c||0xc8;return function(_0xa84426){if(_0xa84426){return _0x210356[_0x1781('0x1b')](_0x4bdf5c)[_0x1781('0x1c')](_0xa84426);}};}function respondWithFilteredResult(_0x2d8351,_0x59ee74){return function(_0x4c5483){if(_0x4c5483){var _0x272183=typeof _0x59ee74[_0x1781('0x1d')]===_0x1781('0x1e')&&typeof _0x59ee74[_0x1781('0x1f')]==='undefined';var _0x1aec0d=_0x4c5483['count'];var _0x4d74d8=_0x272183?0x0:_0x59ee74[_0x1781('0x1d')];var _0x17ca2d=_0x272183?_0x4c5483[_0x1781('0x20')]:_0x59ee74['offset']+_0x59ee74['limit'];var _0x470d01;if(_0x17ca2d>=_0x1aec0d){_0x17ca2d=_0x1aec0d;_0x470d01=0xc8;}else{_0x470d01=0xce;}_0x2d8351[_0x1781('0x1b')](_0x470d01);return _0x2d8351[_0x1781('0x21')](_0x1781('0x22'),_0x4d74d8+'-'+_0x17ca2d+'/'+_0x1aec0d)[_0x1781('0x1c')](_0x4c5483);}return null;};}function patchUpdates(_0x497754){return function(_0xb82e67){try{jsonpatch[_0x1781('0x23')](_0xb82e67,_0x497754,!![]);}catch(_0x3afa17){return BPromise['reject'](_0x3afa17);}return _0xb82e67['save']();};}function saveUpdates(_0x44de7c,_0x444a4d){return function(_0x49000f){if(_0x49000f){return _0x49000f[_0x1781('0x24')](_0x44de7c)['then'](function(_0x1e69e6){return _0x1e69e6;});}return null;};}function removeEntity(_0x530e65,_0x4c66b0){return function(_0x24124e){if(_0x24124e){return _0x24124e[_0x1781('0x25')]()[_0x1781('0x26')](function(){_0x530e65[_0x1781('0x1b')](0xcc)[_0x1781('0x1a')]();});}};}function handleEntityNotFound(_0x145607,_0x354633){return function(_0x272c3d){if(!_0x272c3d){_0x145607['sendStatus'](0x194);}return _0x272c3d;};}function handleError(_0x66b39c,_0x20a6f2){_0x20a6f2=_0x20a6f2||0x1f4;return function(_0x1d9705){logger['error'](_0x1d9705[_0x1781('0x27')]);if(_0x1d9705[_0x1781('0x28')]){delete _0x1d9705[_0x1781('0x28')];}_0x66b39c['status'](_0x20a6f2)[_0x1781('0x29')](_0x1d9705);};}exports[_0x1781('0x2a')]=function(_0x18b11b,_0x1bbb00){var _0x4d499e={},_0x2708ff={},_0x156050={'count':0x0,'rows':[]};var _0x42418e=_[_0x1781('0x2b')](db[_0x1781('0x2c')][_0x1781('0x2d')],function(_0x4e36a2){return{'name':_0x4e36a2[_0x1781('0x2e')],'type':_0x4e36a2['type'][_0x1781('0x2f')]};});_0x2708ff[_0x1781('0x30')]=_[_0x1781('0x31')](_[_0x1781('0x2b')](_0x42418e,_0x1781('0x28')),['name']);_0x2708ff[_0x1781('0x32')]=_[_0x1781('0x33')](_0x18b11b['query']);_0x2708ff[_0x1781('0x34')]=_[_0x1781('0x35')](_0x2708ff[_0x1781('0x30')],_0x2708ff[_0x1781('0x32')]);_0x4d499e[_0x1781('0x36')]=_['intersection'](_0x2708ff[_0x1781('0x30')],qs[_0x1781('0x37')](_0x18b11b[_0x1781('0x32')][_0x1781('0x37')]));_0x4d499e['attributes']=_0x4d499e[_0x1781('0x36')][_0x1781('0x38')]?_0x4d499e[_0x1781('0x36')]:_0x2708ff[_0x1781('0x30')];if(!_0x18b11b[_0x1781('0x32')][_0x1781('0x39')](_0x1781('0x3a'))){_0x4d499e['limit']=qs[_0x1781('0x1f')](_0x18b11b['query'][_0x1781('0x1f')]);_0x4d499e['offset']=qs[_0x1781('0x1d')](_0x18b11b[_0x1781('0x32')]['offset']);}_0x4d499e[_0x1781('0x3b')]=qs[_0x1781('0x3c')](_0x18b11b[_0x1781('0x32')][_0x1781('0x3c')]);_0x4d499e['where']=qs[_0x1781('0x34')](_[_0x1781('0x3d')](_0x18b11b[_0x1781('0x32')],_0x2708ff[_0x1781('0x34')]),_0x42418e);if(_0x18b11b[_0x1781('0x32')][_0x1781('0x3e')]){_0x4d499e[_0x1781('0x3f')]=_[_0x1781('0x40')](_0x4d499e['where'],{'$or':_[_0x1781('0x2b')](_0x42418e,function(_0xfdbc07){if(_0xfdbc07[_0x1781('0x41')]!==_0x1781('0x42')){var _0x4fdf71={};_0x4fdf71[_0xfdbc07[_0x1781('0x28')]]={'$like':'%'+_0x18b11b[_0x1781('0x32')]['filter']+'%'};return _0x4fdf71;}})});}_0x4d499e=_['merge']({},_0x4d499e,_0x18b11b[_0x1781('0x43')]);var _0x1f29f8={'where':_0x4d499e[_0x1781('0x3f')]};return db[_0x1781('0x2c')]['count'](_0x1f29f8)[_0x1781('0x26')](function(_0x4a882a){_0x156050['count']=_0x4a882a;if(_0x18b11b[_0x1781('0x32')][_0x1781('0x44')]){_0x4d499e[_0x1781('0x45')]=[{'all':!![]}];}return db['VoiceMailMessage'][_0x1781('0x46')](_0x4d499e);})[_0x1781('0x26')](function(_0x2ba5f6){_0x156050[_0x1781('0x47')]=_0x2ba5f6;return _0x156050;})[_0x1781('0x26')](respondWithFilteredResult(_0x1bbb00,_0x4d499e))[_0x1781('0x48')](handleError(_0x1bbb00,null));};exports[_0x1781('0x49')]=function(_0x4753cf,_0x19daf4){var _0x340d26={'raw':!![],'where':{'id':_0x4753cf['params']['id']}},_0x3a5d35={};_0x3a5d35[_0x1781('0x30')]=_['keys'](db[_0x1781('0x2c')][_0x1781('0x2d')]);_0x3a5d35[_0x1781('0x32')]=_[_0x1781('0x33')](_0x4753cf['query']);_0x3a5d35[_0x1781('0x34')]=_[_0x1781('0x35')](_0x3a5d35[_0x1781('0x30')],_0x3a5d35[_0x1781('0x32')]);_0x340d26[_0x1781('0x36')]=_['intersection'](_0x3a5d35[_0x1781('0x30')],qs[_0x1781('0x37')](_0x4753cf['query'][_0x1781('0x37')]));_0x340d26[_0x1781('0x36')]=_0x340d26[_0x1781('0x36')][_0x1781('0x38')]?_0x340d26['attributes']:_0x3a5d35['model'];if(_0x4753cf[_0x1781('0x32')][_0x1781('0x44')]){_0x340d26['include']=[{'all':!![]}];}_0x340d26=_['merge']({},_0x340d26,_0x4753cf[_0x1781('0x43')]);return db[_0x1781('0x2c')][_0x1781('0x4a')](_0x340d26)[_0x1781('0x26')](handleEntityNotFound(_0x19daf4,null))[_0x1781('0x26')](respondWithResult(_0x19daf4,null))[_0x1781('0x48')](handleError(_0x19daf4,null));};exports[_0x1781('0x4b')]=function(_0x4142b4,_0xc0fb30){return db[_0x1781('0x2c')]['create'](_0x4142b4[_0x1781('0x4c')],{})[_0x1781('0x26')](respondWithResult(_0xc0fb30,0xc9))[_0x1781('0x48')](handleError(_0xc0fb30,null));};exports[_0x1781('0x24')]=function(_0x23cade,_0x354092){if(_0x23cade[_0x1781('0x4c')]['id']){delete _0x23cade[_0x1781('0x4c')]['id'];}return db['VoiceMailMessage'][_0x1781('0x4a')]({'where':{'id':_0x23cade[_0x1781('0x4d')]['id']}})[_0x1781('0x26')](handleEntityNotFound(_0x354092,null))['then'](saveUpdates(_0x23cade[_0x1781('0x4c')],null))[_0x1781('0x26')](respondWithResult(_0x354092,null))[_0x1781('0x48')](handleError(_0x354092,null));};exports[_0x1781('0x25')]=function(_0x3b5ac6,_0x31ffd6){return db[_0x1781('0x2c')][_0x1781('0x4a')]({'where':{'id':_0x3b5ac6['params']['id']}})['then'](handleEntityNotFound(_0x31ffd6,null))[_0x1781('0x26')](removeEntity(_0x31ffd6,null))['catch'](handleError(_0x31ffd6,null));};exports[_0x1781('0x4e')]=function(_0x2b5136,_0x49d00d,_0x569e0d){return db['VoiceMailMessage'][_0x1781('0x4a')]({'where':{'id':_0x2b5136[_0x1781('0x4d')]['id']},'attributes':['id',_0x1781('0x4f'),_0x1781('0x50')]})['then'](handleEntityNotFound(_0x49d00d,null))['then'](function(_0x2f3dc8){if(_0x2f3dc8){if(!_0x2f3dc8[_0x1781('0x4f')]){throw new db[(_0x1781('0x51'))][(_0x1781('0x52'))](_0x1781('0x53'));}var _0x4c1e62={'Content-Type':_0x1781('0x54'),'Content-Disposition':_0x1781('0x55')};if(_0x2f3dc8[_0x1781('0x50')]){_0x4c1e62[_0x1781('0x56')]='attachment;\x20filename=\x22'+_0x2f3dc8[_0x1781('0x50')]+_0x1781('0x57');}_0x49d00d[_0x1781('0x21')](_0x4c1e62);return _0x49d00d[_0x1781('0x29')](new Buffer(_0x2f3dc8[_0x1781('0x4f')]));}})[_0x1781('0x48')](handleError(_0x49d00d,null));};
\ No newline at end of file
+var _0x1a22=['then','destroy','error','stack','name','send','index','map','VoiceMailMessage','fieldName','type','key','model','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','rawAttributes','length','include','find','catch','create','body','params','download','recording','msg_id','ValidationError','attachment;\x20filename=\x22','.wav\x22','set','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','reject','save','update'];(function(_0x27886d,_0x306322){var _0x40ed2e=function(_0x3e3508){while(--_0x3e3508){_0x27886d['push'](_0x27886d['shift']());}};_0x40ed2e(++_0x306322);}(_0x1a22,0x82));var _0x21a2=function(_0x2d8ca8,_0x22bcb6){_0x2d8ca8=_0x2d8ca8-0x0;var _0x268164=_0x1a22[_0x2d8ca8];return _0x268164;};'use strict';var emlformat=require(_0x21a2('0x0'));var rimraf=require(_0x21a2('0x1'));var zipdir=require(_0x21a2('0x2'));var jsonpatch=require(_0x21a2('0x3'));var rp=require('request-promise');var moment=require(_0x21a2('0x4'));var BPromise=require(_0x21a2('0x5'));var Mustache=require('mustache');var util=require(_0x21a2('0x6'));var path=require('path');var sox=require(_0x21a2('0x7'));var csv=require(_0x21a2('0x8'));var ejs=require(_0x21a2('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x21a2('0xa'));var crypto=require(_0x21a2('0xb'));var jsforce=require(_0x21a2('0xc'));var deskjs=require(_0x21a2('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x21a2('0xe'));var Redis=require(_0x21a2('0xf'));var authService=require(_0x21a2('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x21a2('0x11'));var logger=require(_0x21a2('0x12'))(_0x21a2('0x13'));var utils=require(_0x21a2('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x21a2('0x15'))['db'];function respondWithStatusCode(_0xed0df3,_0x16fc03){_0x16fc03=_0x16fc03||0xcc;return function(_0x1be68d){if(_0x1be68d){return _0xed0df3[_0x21a2('0x16')](_0x16fc03);}return _0xed0df3[_0x21a2('0x17')](_0x16fc03)[_0x21a2('0x18')]();};}function respondWithResult(_0x29be82,_0x240f30){_0x240f30=_0x240f30||0xc8;return function(_0xf95ed9){if(_0xf95ed9){return _0x29be82[_0x21a2('0x17')](_0x240f30)[_0x21a2('0x19')](_0xf95ed9);}};}function respondWithFilteredResult(_0x5738c4,_0x5bf2a6){return function(_0x3b64c8){if(_0x3b64c8){var _0x5be484=typeof _0x5bf2a6['offset']===_0x21a2('0x1a')&&typeof _0x5bf2a6[_0x21a2('0x1b')]===_0x21a2('0x1a');var _0x396319=_0x3b64c8[_0x21a2('0x1c')];var _0x50902f=_0x5be484?0x0:_0x5bf2a6[_0x21a2('0x1d')];var _0xdac1b9=_0x5be484?_0x3b64c8[_0x21a2('0x1c')]:_0x5bf2a6[_0x21a2('0x1d')]+_0x5bf2a6[_0x21a2('0x1b')];var _0x7d457b;if(_0xdac1b9>=_0x396319){_0xdac1b9=_0x396319;_0x7d457b=0xc8;}else{_0x7d457b=0xce;}_0x5738c4[_0x21a2('0x17')](_0x7d457b);return _0x5738c4['set'](_0x21a2('0x1e'),_0x50902f+'-'+_0xdac1b9+'/'+_0x396319)[_0x21a2('0x19')](_0x3b64c8);}return null;};}function patchUpdates(_0x24caa4){return function(_0x246210){try{jsonpatch['apply'](_0x246210,_0x24caa4,!![]);}catch(_0xa4ffb1){return BPromise[_0x21a2('0x1f')](_0xa4ffb1);}return _0x246210[_0x21a2('0x20')]();};}function saveUpdates(_0x4df2d5,_0xd611c3){return function(_0x518e5c){if(_0x518e5c){return _0x518e5c[_0x21a2('0x21')](_0x4df2d5)[_0x21a2('0x22')](function(_0x92dcc2){return _0x92dcc2;});}return null;};}function removeEntity(_0xe50920,_0x312c53){return function(_0x135085){if(_0x135085){return _0x135085[_0x21a2('0x23')]()['then'](function(){_0xe50920['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xfb7747,_0x32aded){return function(_0x3352ac){if(!_0x3352ac){_0xfb7747[_0x21a2('0x16')](0x194);}return _0x3352ac;};}function handleError(_0x183255,_0x12f28a){_0x12f28a=_0x12f28a||0x1f4;return function(_0x21fefe){logger[_0x21a2('0x24')](_0x21fefe[_0x21a2('0x25')]);if(_0x21fefe[_0x21a2('0x26')]){delete _0x21fefe['name'];}_0x183255['status'](_0x12f28a)[_0x21a2('0x27')](_0x21fefe);};}exports[_0x21a2('0x28')]=function(_0x32dbc6,_0xb4318e){var _0x2fc0ac={},_0x69adfb={},_0x534b71={'count':0x0,'rows':[]};var _0x16b0f9=_[_0x21a2('0x29')](db[_0x21a2('0x2a')]['rawAttributes'],function(_0x2549d1){return{'name':_0x2549d1[_0x21a2('0x2b')],'type':_0x2549d1[_0x21a2('0x2c')][_0x21a2('0x2d')]};});_0x69adfb[_0x21a2('0x2e')]=_['differenceBy'](_[_0x21a2('0x29')](_0x16b0f9,_0x21a2('0x26')),[_0x21a2('0x26')]);_0x69adfb['query']=_[_0x21a2('0x2f')](_0x32dbc6[_0x21a2('0x30')]);_0x69adfb['filters']=_[_0x21a2('0x31')](_0x69adfb['model'],_0x69adfb[_0x21a2('0x30')]);_0x2fc0ac[_0x21a2('0x32')]=_[_0x21a2('0x31')](_0x69adfb[_0x21a2('0x2e')],qs[_0x21a2('0x33')](_0x32dbc6[_0x21a2('0x30')][_0x21a2('0x33')]));_0x2fc0ac[_0x21a2('0x32')]=_0x2fc0ac['attributes']['length']?_0x2fc0ac[_0x21a2('0x32')]:_0x69adfb['model'];if(!_0x32dbc6[_0x21a2('0x30')][_0x21a2('0x34')](_0x21a2('0x35'))){_0x2fc0ac[_0x21a2('0x1b')]=qs[_0x21a2('0x1b')](_0x32dbc6['query'][_0x21a2('0x1b')]);_0x2fc0ac['offset']=qs[_0x21a2('0x1d')](_0x32dbc6[_0x21a2('0x30')]['offset']);}_0x2fc0ac[_0x21a2('0x36')]=qs[_0x21a2('0x37')](_0x32dbc6[_0x21a2('0x30')][_0x21a2('0x37')]);_0x2fc0ac[_0x21a2('0x38')]=qs[_0x21a2('0x39')](_[_0x21a2('0x3a')](_0x32dbc6[_0x21a2('0x30')],_0x69adfb[_0x21a2('0x39')]),_0x16b0f9);if(_0x32dbc6['query'][_0x21a2('0x3b')]){_0x2fc0ac[_0x21a2('0x38')]=_[_0x21a2('0x3c')](_0x2fc0ac[_0x21a2('0x38')],{'$or':_[_0x21a2('0x29')](_0x16b0f9,function(_0xa28c5e){if(_0xa28c5e[_0x21a2('0x2c')]!==_0x21a2('0x3d')){var _0x2157a1={};_0x2157a1[_0xa28c5e[_0x21a2('0x26')]]={'$like':'%'+_0x32dbc6[_0x21a2('0x30')][_0x21a2('0x3b')]+'%'};return _0x2157a1;}})});}_0x2fc0ac=_[_0x21a2('0x3c')]({},_0x2fc0ac,_0x32dbc6[_0x21a2('0x3e')]);var _0x404076={'where':_0x2fc0ac['where']};return db[_0x21a2('0x2a')][_0x21a2('0x1c')](_0x404076)['then'](function(_0x579a3d){_0x534b71[_0x21a2('0x1c')]=_0x579a3d;if(_0x32dbc6[_0x21a2('0x30')][_0x21a2('0x3f')]){_0x2fc0ac['include']=[{'all':!![]}];}return db[_0x21a2('0x2a')][_0x21a2('0x40')](_0x2fc0ac);})[_0x21a2('0x22')](function(_0xd5943a){_0x534b71[_0x21a2('0x41')]=_0xd5943a;return _0x534b71;})[_0x21a2('0x22')](respondWithFilteredResult(_0xb4318e,_0x2fc0ac))['catch'](handleError(_0xb4318e,null));};exports[_0x21a2('0x42')]=function(_0x15cc5d,_0x3435dc){var _0x3a7f53={'raw':!![],'where':{'id':_0x15cc5d['params']['id']}},_0x4aedb7={};_0x4aedb7[_0x21a2('0x2e')]=_[_0x21a2('0x2f')](db[_0x21a2('0x2a')][_0x21a2('0x43')]);_0x4aedb7[_0x21a2('0x30')]=_[_0x21a2('0x2f')](_0x15cc5d[_0x21a2('0x30')]);_0x4aedb7[_0x21a2('0x39')]=_['intersection'](_0x4aedb7[_0x21a2('0x2e')],_0x4aedb7[_0x21a2('0x30')]);_0x3a7f53[_0x21a2('0x32')]=_[_0x21a2('0x31')](_0x4aedb7['model'],qs[_0x21a2('0x33')](_0x15cc5d['query']['fields']));_0x3a7f53[_0x21a2('0x32')]=_0x3a7f53[_0x21a2('0x32')][_0x21a2('0x44')]?_0x3a7f53[_0x21a2('0x32')]:_0x4aedb7[_0x21a2('0x2e')];if(_0x15cc5d['query']['includeAll']){_0x3a7f53[_0x21a2('0x45')]=[{'all':!![]}];}_0x3a7f53=_[_0x21a2('0x3c')]({},_0x3a7f53,_0x15cc5d[_0x21a2('0x3e')]);return db['VoiceMailMessage'][_0x21a2('0x46')](_0x3a7f53)['then'](handleEntityNotFound(_0x3435dc,null))['then'](respondWithResult(_0x3435dc,null))[_0x21a2('0x47')](handleError(_0x3435dc,null));};exports[_0x21a2('0x48')]=function(_0x435e0b,_0x41ea3a){return db[_0x21a2('0x2a')]['create'](_0x435e0b[_0x21a2('0x49')],{})[_0x21a2('0x22')](respondWithResult(_0x41ea3a,0xc9))[_0x21a2('0x47')](handleError(_0x41ea3a,null));};exports[_0x21a2('0x21')]=function(_0x37691b,_0x5649b7){if(_0x37691b[_0x21a2('0x49')]['id']){delete _0x37691b[_0x21a2('0x49')]['id'];}return db['VoiceMailMessage']['find']({'where':{'id':_0x37691b[_0x21a2('0x4a')]['id']}})[_0x21a2('0x22')](handleEntityNotFound(_0x5649b7,null))[_0x21a2('0x22')](saveUpdates(_0x37691b['body'],null))[_0x21a2('0x22')](respondWithResult(_0x5649b7,null))['catch'](handleError(_0x5649b7,null));};exports[_0x21a2('0x23')]=function(_0x458eb2,_0x334ef0){return db[_0x21a2('0x2a')]['find']({'where':{'id':_0x458eb2[_0x21a2('0x4a')]['id']}})['then'](handleEntityNotFound(_0x334ef0,null))['then'](removeEntity(_0x334ef0,null))[_0x21a2('0x47')](handleError(_0x334ef0,null));};exports[_0x21a2('0x4b')]=function(_0x4b193e,_0x35b741,_0x1f72e3){return db[_0x21a2('0x2a')][_0x21a2('0x46')]({'where':{'id':_0x4b193e[_0x21a2('0x4a')]['id']},'attributes':['id',_0x21a2('0x4c'),_0x21a2('0x4d')]})[_0x21a2('0x22')](handleEntityNotFound(_0x35b741,null))[_0x21a2('0x22')](function(_0xcf1679){if(_0xcf1679){if(!_0xcf1679[_0x21a2('0x4c')]){throw new db['Sequelize'][(_0x21a2('0x4e'))]('VoiceMailMessage\x20not\x20found');}var _0x59632e={'Content-Type':'audio/wav','Content-Disposition':'attachment'};if(_0xcf1679[_0x21a2('0x4d')]){_0x59632e['Content-Disposition']=_0x21a2('0x4f')+_0xcf1679[_0x21a2('0x4d')]+_0x21a2('0x50');}_0x35b741[_0x21a2('0x51')](_0x59632e);return _0x35b741[_0x21a2('0x27')](new Buffer(_0xcf1679[_0x21a2('0x4c')]));}})[_0x21a2('0x47')](handleError(_0x35b741,null));};
\ No newline at end of file
index 9eefcef..ac0f380 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a33=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','../../config/logger'];(function(_0x565ed7,_0x398228){var _0x183ad7=function(_0x5a43d7){while(--_0x5a43d7){_0x565ed7['push'](_0x565ed7['shift']());}};_0x183ad7(++_0x398228);}(_0x7a33,0x1c0));var _0x37a3=function(_0x139704,_0x17365b){_0x139704=_0x139704-0x0;var _0x2bdbbc=_0x7a33[_0x139704];return _0x2bdbbc;};'use strict';var _=require(_0x37a3('0x0'));var util=require('util');var logger=require(_0x37a3('0x1'))(_0x37a3('0x2'));var moment=require(_0x37a3('0x3'));var BPromise=require(_0x37a3('0x4'));var rp=require(_0x37a3('0x5'));var fs=require('fs');var path=require(_0x37a3('0x6'));var rimraf=require(_0x37a3('0x7'));var config=require(_0x37a3('0x8'));var attributes=require(_0x37a3('0x9'));module[_0x37a3('0xa')]=function(_0x10dae9,_0x542201){return _0x10dae9[_0x37a3('0xb')](_0x37a3('0xc'),attributes,{'tableName':_0x37a3('0xd'),'paranoid':![],'indexes':[{'name':_0x37a3('0xe'),'fields':[_0x37a3('0xe')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xa916=['./voiceMailMessage.attributes','define','voice_voicemail_messages','dir','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x2660c9,_0x22e0c7){var _0x2de7fe=function(_0x2aaeef){while(--_0x2aaeef){_0x2660c9['push'](_0x2660c9['shift']());}};_0x2de7fe(++_0x22e0c7);}(_0xa916,0x94));var _0x6a91=function(_0xb3d48d,_0xa90785){_0xb3d48d=_0xb3d48d-0x0;var _0x501bad=_0xa916[_0xb3d48d];return _0x501bad;};'use strict';var _=require('lodash');var util=require(_0x6a91('0x0'));var logger=require(_0x6a91('0x1'))(_0x6a91('0x2'));var moment=require(_0x6a91('0x3'));var BPromise=require(_0x6a91('0x4'));var rp=require(_0x6a91('0x5'));var fs=require('fs');var path=require(_0x6a91('0x6'));var rimraf=require('rimraf');var config=require(_0x6a91('0x7'));var attributes=require(_0x6a91('0x8'));module['exports']=function(_0x5b9d95,_0x3bc2ae){return _0x5b9d95[_0x6a91('0x9')]('VoiceMailMessage',attributes,{'tableName':_0x6a91('0xa'),'paranoid':![],'indexes':[{'name':_0x6a91('0xb'),'fields':[_0x6a91('0xb')]}],'timestamps':![]});};
\ No newline at end of file
index 9b393f8..150dc30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c15=['VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info'];(function(_0x5aa974,_0x448a92){var _0x2dfffc=function(_0x25bb71){while(--_0x25bb71){_0x5aa974['push'](_0x5aa974['shift']());}};_0x2dfffc(++_0x448a92);}(_0x7c15,0xca));var _0x57c1=function(_0x2d3fd4,_0x5f4a8b){_0x2d3fd4=_0x2d3fd4-0x0;var _0x2e3ccc=_0x7c15[_0x2d3fd4];return _0x2e3ccc;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x57c1('0x0'));var BPromise=require(_0x57c1('0x1'));var rs=require(_0x57c1('0x2'));var fs=require('fs');var Redis=require(_0x57c1('0x3'));var db=require(_0x57c1('0x4'))['db'];var utils=require(_0x57c1('0x5'));var logger=require(_0x57c1('0x6'))(_0x57c1('0x7'));var config=require(_0x57c1('0x8'));var jayson=require(_0x57c1('0x9'));var client=jayson[_0x57c1('0xa')][_0x57c1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x39696d,_0x5bb780,_0x3272cd){return new BPromise(function(_0x3b596d,_0x274274){return client[_0x57c1('0xc')](_0x39696d,_0x3272cd)['then'](function(_0x1c4b82){logger[_0x57c1('0xd')](_0x57c1('0xe'),_0x5bb780,_0x57c1('0xf'));logger[_0x57c1('0x10')](_0x57c1('0x11'),_0x5bb780,_0x57c1('0xf'),JSON[_0x57c1('0x12')](_0x1c4b82));if(_0x1c4b82['error']){if(_0x1c4b82[_0x57c1('0x13')][_0x57c1('0x14')]===0x1f4){logger[_0x57c1('0x13')](_0x57c1('0xe'),_0x5bb780,_0x1c4b82['error']['message']);return _0x274274(_0x1c4b82['error'][_0x57c1('0x15')]);}logger[_0x57c1('0x13')]('VoiceMailMessage,\x20%s,\x20%s',_0x5bb780,_0x1c4b82[_0x57c1('0x13')][_0x57c1('0x15')]);return _0x3b596d(_0x1c4b82[_0x57c1('0x13')]['message']);}else{logger['info']('VoiceMailMessage,\x20%s,\x20%s',_0x5bb780,'request\x20sent');_0x3b596d(_0x1c4b82[_0x57c1('0x16')]['message']);}})[_0x57c1('0x17')](function(_0x44b01a){logger[_0x57c1('0x13')](_0x57c1('0xe'),_0x5bb780,_0x44b01a);_0x274274(_0x44b01a);});});}
\ No newline at end of file
+var _0x162e=['then','VoiceMailMessage,\x20%s,\x20%s','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http'];(function(_0x4b5dd6,_0x490653){var _0x388637=function(_0x467dec){while(--_0x467dec){_0x4b5dd6['push'](_0x4b5dd6['shift']());}};_0x388637(++_0x490653);}(_0x162e,0x88));var _0xe162=function(_0x379078,_0x177ab7){_0x379078=_0x379078-0x0;var _0x5af3bb=_0x162e[_0x379078];return _0x5af3bb;};'use strict';var _=require(_0xe162('0x0'));var util=require(_0xe162('0x1'));var moment=require(_0xe162('0x2'));var BPromise=require('bluebird');var rs=require(_0xe162('0x3'));var fs=require('fs');var Redis=require(_0xe162('0x4'));var db=require(_0xe162('0x5'))['db'];var utils=require(_0xe162('0x6'));var logger=require('../../config/logger')(_0xe162('0x7'));var config=require('../../config/environment');var jayson=require(_0xe162('0x8'));var client=jayson[_0xe162('0x9')][_0xe162('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5311f1,_0xdcf73c,_0x382fce){return new BPromise(function(_0x90985b,_0x24aded){return client['request'](_0x5311f1,_0x382fce)[_0xe162('0xb')](function(_0x17b824){logger['info'](_0xe162('0xc'),_0xdcf73c,'request\x20sent');logger[_0xe162('0xd')](_0xe162('0xe'),_0xdcf73c,_0xe162('0xf'),JSON['stringify'](_0x17b824));if(_0x17b824[_0xe162('0x10')]){if(_0x17b824[_0xe162('0x10')][_0xe162('0x11')]===0x1f4){logger[_0xe162('0x10')](_0xe162('0xc'),_0xdcf73c,_0x17b824[_0xe162('0x10')][_0xe162('0x12')]);return _0x24aded(_0x17b824['error'][_0xe162('0x12')]);}logger[_0xe162('0x10')](_0xe162('0xc'),_0xdcf73c,_0x17b824[_0xe162('0x10')]['message']);return _0x90985b(_0x17b824['error'][_0xe162('0x12')]);}else{logger[_0xe162('0x13')](_0xe162('0xc'),_0xdcf73c,_0xe162('0xf'));_0x90985b(_0x17b824[_0xe162('0x14')][_0xe162('0x12')]);}})['catch'](function(_0xef2466){logger[_0xe162('0x10')](_0xe162('0xc'),_0xdcf73c,_0xef2466);_0x24aded(_0xef2466);});});}
\ No newline at end of file
index 7d6647c..88cfa3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f21=['exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','isAuthenticated','index','get','/:id','show','getSounds','post','create','/:id/sounds','addSound','put','update','delete','/:id/sounds/:id2'];(function(_0x3d0c7e,_0x553d2d){var _0x38c6b4=function(_0x531fad){while(--_0x531fad){_0x3d0c7e['push'](_0x3d0c7e['shift']());}};_0x38c6b4(++_0x553d2d);}(_0x4f21,0x151));var _0x14f2=function(_0x41b29e,_0x34b288){_0x41b29e=_0x41b29e-0x0;var _0xacd517=_0x4f21[_0x41b29e];return _0xacd517;};'use strict';var multer=require(_0x14f2('0x0'));var util=require(_0x14f2('0x1'));var path=require(_0x14f2('0x2'));var timeout=require('connect-timeout');var express=require(_0x14f2('0x3'));var router=express[_0x14f2('0x4')]();var fs_extra=require(_0x14f2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x14f2('0x6'));var config=require(_0x14f2('0x7'));var controller=require(_0x14f2('0x8'));router['get']('/',auth[_0x14f2('0x9')](),controller[_0x14f2('0xa')]);router[_0x14f2('0xb')](_0x14f2('0xc'),auth[_0x14f2('0x9')](),controller[_0x14f2('0xd')]);router[_0x14f2('0xb')]('/:id/sounds',auth[_0x14f2('0x9')](),controller[_0x14f2('0xe')]);router[_0x14f2('0xf')]('/',auth['isAuthenticated'](),controller[_0x14f2('0x10')]);router[_0x14f2('0xf')](_0x14f2('0x11'),auth[_0x14f2('0x9')](),controller[_0x14f2('0x12')]);router[_0x14f2('0x13')]('/:id',auth[_0x14f2('0x9')](),controller[_0x14f2('0x14')]);router[_0x14f2('0x15')]('/:id',auth[_0x14f2('0x9')](),controller['destroy']);router[_0x14f2('0x15')](_0x14f2('0x16'),auth[_0x14f2('0x9')](),controller['removeSound']);module[_0x14f2('0x17')]=router;
\ No newline at end of file
+var _0xa9b8=['path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','show','/:id/sounds','getSounds','post','put','/:id','delete','destroy','/:id/sounds/:id2','exports'];(function(_0x2005a5,_0x84446b){var _0x321623=function(_0x3bfaf){while(--_0x3bfaf){_0x2005a5['push'](_0x2005a5['shift']());}};_0x321623(++_0x84446b);}(_0xa9b8,0x156));var _0x8a9b=function(_0x7d8f3b,_0x141b51){_0x7d8f3b=_0x7d8f3b-0x0;var _0x4ae116=_0xa9b8[_0x7d8f3b];return _0x4ae116;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x8a9b('0x0'));var timeout=require(_0x8a9b('0x1'));var express=require(_0x8a9b('0x2'));var router=express[_0x8a9b('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x8a9b('0x4'));var interaction=require(_0x8a9b('0x5'));var config=require(_0x8a9b('0x6'));var controller=require('./voiceMusicOnHold.controller');router['get']('/',auth[_0x8a9b('0x7')](),controller['index']);router[_0x8a9b('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x8a9b('0x9')]);router[_0x8a9b('0x8')](_0x8a9b('0xa'),auth[_0x8a9b('0x7')](),controller[_0x8a9b('0xb')]);router[_0x8a9b('0xc')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0x8a9b('0xa'),auth['isAuthenticated'](),controller['addSound']);router[_0x8a9b('0xd')](_0x8a9b('0xe'),auth[_0x8a9b('0x7')](),controller['update']);router[_0x8a9b('0xf')](_0x8a9b('0xe'),auth['isAuthenticated'](),controller[_0x8a9b('0x10')]);router[_0x8a9b('0xf')](_0x8a9b('0x11'),auth[_0x8a9b('0x7')](),controller['removeSound']);module[_0x8a9b('0x12')]=router;
\ No newline at end of file
index e2ca553..d0022df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8aa3=['quietmp3','mp3','alpha','BOOLEAN','sequelize','STRING','name','ENUM','custom','files','mp3nb','quietmp3nb'];(function(_0x5f16f8,_0x35c4bf){var _0x4745b2=function(_0x53e810){while(--_0x53e810){_0x5f16f8['push'](_0x5f16f8['shift']());}};_0x4745b2(++_0x35c4bf);}(_0x8aa3,0x100));var _0x38aa=function(_0x31bfd7,_0x44c55a){_0x31bfd7=_0x31bfd7-0x0;var _0x9ca658=_0x8aa3[_0x31bfd7];return _0x9ca658;};'use strict';var Sequelize=require(_0x38aa('0x0'));module['exports']={'name':{'type':Sequelize[_0x38aa('0x1')],'allowNull':![],'unique':_0x38aa('0x2')},'mode':{'type':Sequelize[_0x38aa('0x3')](_0x38aa('0x4'),_0x38aa('0x5'),_0x38aa('0x6'),_0x38aa('0x7'),_0x38aa('0x8'),_0x38aa('0x9')),'allowNull':!![],'defaultValue':_0x38aa('0x5')},'directory':{'type':Sequelize[_0x38aa('0x1')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize['STRING'],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x38aa('0xa')},'format':{'type':Sequelize[_0x38aa('0x1')],'allowNull':!![]},'stamp':{'type':'TIMESTAMP'},'defaultEntry':{'type':Sequelize[_0x38aa('0xb')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x7a49=['quietmp3nb','mp3','TIMESTAMP','sequelize','exports','STRING','name','ENUM','custom','files','mp3nb'];(function(_0x3411fa,_0x57f41d){var _0x5f20d1=function(_0x3a40ba){while(--_0x3a40ba){_0x3411fa['push'](_0x3411fa['shift']());}};_0x5f20d1(++_0x57f41d);}(_0x7a49,0xd4));var _0x97a4=function(_0x147e00,_0x5393d8){_0x147e00=_0x147e00-0x0;var _0x189f56=_0x7a49[_0x147e00];return _0x189f56;};'use strict';var Sequelize=require(_0x97a4('0x0'));module[_0x97a4('0x1')]={'name':{'type':Sequelize[_0x97a4('0x2')],'allowNull':![],'unique':_0x97a4('0x3')},'mode':{'type':Sequelize[_0x97a4('0x4')](_0x97a4('0x5'),_0x97a4('0x6'),_0x97a4('0x7'),_0x97a4('0x8'),'quietmp3',_0x97a4('0x9')),'allowNull':!![],'defaultValue':_0x97a4('0x6')},'directory':{'type':Sequelize[_0x97a4('0x2')],'allowNull':!![]},'application':{'type':Sequelize[_0x97a4('0x2')],'allowNull':!![]},'digit':{'type':Sequelize[_0x97a4('0x2')],'allowNull':!![]},'sort':{'type':Sequelize[_0x97a4('0x2')],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0x97a4('0x2')],'allowNull':!![]},'stamp':{'type':_0x97a4('0xa')},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
index aa66dde..669930f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe521=['save','update','then','destroy','get','MusicOnHolds','UserProfileResource','end','sendStatus','error','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','nolimit','order','sort','where','filter','merge','options','include','findAll','rows','catch','show','keys','length','find','body','params','create','sequelize','transaction','mode','files','directory','join','root','mkdirSync','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','readdirSync','forEach','unlinkSync','Sequelize','ValidationError','message','addSound','Sound','save_name','converted_format','createdAt','server/files/sounds/converted','format','%s.%s','basename','extname','symlinkSync','removeSound','id2','getSounds','hasOwnProperty','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','status','json','offset','undefined','limit','count','set','apply','reject'];(function(_0x448259,_0x1a98eb){var _0x8c7382=function(_0x5cc40d){while(--_0x5cc40d){_0x448259['push'](_0x448259['shift']());}};_0x8c7382(++_0x1a98eb);}(_0xe521,0xbc));var _0x1e52=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe521[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x1e52('0x0'));var rimraf=require(_0x1e52('0x1'));var zipdir=require(_0x1e52('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1e52('0x3'));var moment=require(_0x1e52('0x4'));var BPromise=require(_0x1e52('0x5'));var Mustache=require('mustache');var util=require(_0x1e52('0x6'));var path=require(_0x1e52('0x7'));var sox=require(_0x1e52('0x8'));var csv=require(_0x1e52('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1e52('0xa'));var _=require(_0x1e52('0xb'));var squel=require(_0x1e52('0xc'));var crypto=require('crypto');var jsforce=require(_0x1e52('0xd'));var deskjs=require(_0x1e52('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x1e52('0xf'));var Redis=require('ioredis');var authService=require(_0x1e52('0x10'));var qs=require(_0x1e52('0x11'));var as=require(_0x1e52('0x12'));var hardwareService=require(_0x1e52('0x13'));var logger=require(_0x1e52('0x14'))(_0x1e52('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x1e52('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e1525,_0x1e6411){_0x1e6411=_0x1e6411||0xcc;return function(_0x229c34){if(_0x229c34){return _0x1e1525['sendStatus'](_0x1e6411);}return _0x1e1525[_0x1e52('0x17')](_0x1e6411)['end']();};}function respondWithResult(_0x17a8d5,_0x5a69e1){_0x5a69e1=_0x5a69e1||0xc8;return function(_0x53430c){if(_0x53430c){return _0x17a8d5['status'](_0x5a69e1)[_0x1e52('0x18')](_0x53430c);}};}function respondWithFilteredResult(_0x375e06,_0x25e8e8){return function(_0x450f3){if(_0x450f3){var _0x19e702=typeof _0x25e8e8[_0x1e52('0x19')]===_0x1e52('0x1a')&&typeof _0x25e8e8[_0x1e52('0x1b')]===_0x1e52('0x1a');var _0xe9721c=_0x450f3[_0x1e52('0x1c')];var _0x1df92f=_0x19e702?0x0:_0x25e8e8[_0x1e52('0x19')];var _0x68577e=_0x19e702?_0x450f3[_0x1e52('0x1c')]:_0x25e8e8[_0x1e52('0x19')]+_0x25e8e8[_0x1e52('0x1b')];var _0xed3bd9;if(_0x68577e>=_0xe9721c){_0x68577e=_0xe9721c;_0xed3bd9=0xc8;}else{_0xed3bd9=0xce;}_0x375e06[_0x1e52('0x17')](_0xed3bd9);return _0x375e06[_0x1e52('0x1d')]('Content-Range',_0x1df92f+'-'+_0x68577e+'/'+_0xe9721c)[_0x1e52('0x18')](_0x450f3);}return null;};}function patchUpdates(_0x5812f8){return function(_0x2cbf1e){try{jsonpatch[_0x1e52('0x1e')](_0x2cbf1e,_0x5812f8,!![]);}catch(_0x43988d){return BPromise[_0x1e52('0x1f')](_0x43988d);}return _0x2cbf1e[_0x1e52('0x20')]();};}function saveUpdates(_0x5880a6,_0x4aedc5){return function(_0x271209){if(_0x271209){return _0x271209[_0x1e52('0x21')](_0x5880a6)[_0x1e52('0x22')](function(_0x5f2537){return _0x5f2537;});}return null;};}function removeEntity(_0x3e78f7,_0x58c874){return function(_0x1476d1){if(_0x1476d1){return _0x1476d1[_0x1e52('0x23')]()[_0x1e52('0x22')](function(){var _0x425ed7=_0x1476d1[_0x1e52('0x24')]({'plain':!![]});var _0x39c737=_0x1e52('0x25');return db[_0x1e52('0x26')][_0x1e52('0x23')]({'where':{'type':_0x39c737,'resourceId':_0x425ed7['id']}})[_0x1e52('0x22')](function(){return _0x1476d1;});})[_0x1e52('0x22')](function(){_0x3e78f7[_0x1e52('0x17')](0xcc)[_0x1e52('0x27')]();});}};}function handleEntityNotFound(_0x457405,_0x572041){return function(_0x49771d){if(!_0x49771d){_0x457405[_0x1e52('0x28')](0x194);}return _0x49771d;};}function handleError(_0x5d9a79,_0x139715){_0x139715=_0x139715||0x1f4;return function(_0x5dcb57){logger[_0x1e52('0x29')](_0x5dcb57['stack']);if(_0x5dcb57['name']){delete _0x5dcb57[_0x1e52('0x2a')];}_0x5d9a79[_0x1e52('0x17')](_0x139715)[_0x1e52('0x2b')](_0x5dcb57);};}exports[_0x1e52('0x2c')]=function(_0x5cc9d4,_0x5130f6){var _0x303ca4={},_0x13b061={},_0xf487b1={'count':0x0,'rows':[]};var _0x13c04d=_[_0x1e52('0x2d')](db[_0x1e52('0x2e')][_0x1e52('0x2f')],function(_0x2e308d){return{'name':_0x2e308d[_0x1e52('0x30')],'type':_0x2e308d[_0x1e52('0x31')][_0x1e52('0x32')]};});_0x13b061['model']=_[_0x1e52('0x2d')](_0x13c04d,'name');_0x13b061['query']=_['keys'](_0x5cc9d4[_0x1e52('0x33')]);_0x13b061[_0x1e52('0x34')]=_[_0x1e52('0x35')](_0x13b061[_0x1e52('0x36')],_0x13b061[_0x1e52('0x33')]);_0x303ca4[_0x1e52('0x37')]=_['intersection'](_0x13b061[_0x1e52('0x36')],qs[_0x1e52('0x38')](_0x5cc9d4[_0x1e52('0x33')][_0x1e52('0x38')]));_0x303ca4[_0x1e52('0x37')]=_0x303ca4[_0x1e52('0x37')]['length']?_0x303ca4[_0x1e52('0x37')]:_0x13b061[_0x1e52('0x36')];if(!_0x5cc9d4[_0x1e52('0x33')]['hasOwnProperty'](_0x1e52('0x39'))){_0x303ca4[_0x1e52('0x1b')]=qs[_0x1e52('0x1b')](_0x5cc9d4['query'][_0x1e52('0x1b')]);_0x303ca4[_0x1e52('0x19')]=qs['offset'](_0x5cc9d4['query'][_0x1e52('0x19')]);}_0x303ca4[_0x1e52('0x3a')]=qs['sort'](_0x5cc9d4['query'][_0x1e52('0x3b')]);delete _0x5cc9d4[_0x1e52('0x33')][_0x1e52('0x3b')];_0x303ca4[_0x1e52('0x3c')]=qs[_0x1e52('0x34')](_['pick'](_0x5cc9d4['query'],_0x13b061[_0x1e52('0x34')]),_0x13c04d);if(_0x5cc9d4[_0x1e52('0x33')][_0x1e52('0x3d')]){_0x303ca4[_0x1e52('0x3c')]=_[_0x1e52('0x3e')](_0x303ca4['where'],{'$or':_[_0x1e52('0x2d')](_0x13c04d,function(_0x322e3e){if(_0x322e3e[_0x1e52('0x31')]!=='VIRTUAL'){var _0x300b6e={};_0x300b6e[_0x322e3e['name']]={'$like':'%'+_0x5cc9d4[_0x1e52('0x33')]['filter']+'%'};return _0x300b6e;}})});}_0x303ca4=_[_0x1e52('0x3e')]({},_0x303ca4,_0x5cc9d4[_0x1e52('0x3f')]);var _0x4ec4d7={'where':_0x303ca4[_0x1e52('0x3c')]};return db['VoiceMusicOnHold'][_0x1e52('0x1c')](_0x4ec4d7)['then'](function(_0x736880){_0xf487b1[_0x1e52('0x1c')]=_0x736880;if(_0x5cc9d4[_0x1e52('0x33')]['includeAll']){_0x303ca4[_0x1e52('0x40')]=[{'all':!![]}];}return db[_0x1e52('0x2e')][_0x1e52('0x41')](_0x303ca4);})[_0x1e52('0x22')](function(_0x52f6db){_0xf487b1[_0x1e52('0x42')]=_0x52f6db;return _0xf487b1;})[_0x1e52('0x22')](respondWithFilteredResult(_0x5130f6,_0x303ca4))[_0x1e52('0x43')](handleError(_0x5130f6,null));};exports[_0x1e52('0x44')]=function(_0x1f25e0,_0x201977){var _0xd3a686={'raw':![],'where':{'id':_0x1f25e0['params']['id']}},_0x44ae55={};_0x44ae55['model']=_[_0x1e52('0x45')](db[_0x1e52('0x2e')][_0x1e52('0x2f')]);_0x44ae55[_0x1e52('0x33')]=_['keys'](_0x1f25e0[_0x1e52('0x33')]);_0x44ae55['filters']=_[_0x1e52('0x35')](_0x44ae55[_0x1e52('0x36')],_0x44ae55[_0x1e52('0x33')]);_0xd3a686['attributes']=_['intersection'](_0x44ae55[_0x1e52('0x36')],qs[_0x1e52('0x38')](_0x1f25e0[_0x1e52('0x33')][_0x1e52('0x38')]));_0xd3a686[_0x1e52('0x37')]=_0xd3a686['attributes'][_0x1e52('0x46')]?_0xd3a686['attributes']:_0x44ae55['model'];if(_0x1f25e0[_0x1e52('0x33')]['includeAll']){_0xd3a686[_0x1e52('0x40')]=[{'all':!![]}];}_0xd3a686=_[_0x1e52('0x3e')]({},_0xd3a686,_0x1f25e0[_0x1e52('0x3f')]);return db[_0x1e52('0x2e')][_0x1e52('0x47')](_0xd3a686)['then'](handleEntityNotFound(_0x201977,null))['then'](respondWithResult(_0x201977,null))[_0x1e52('0x43')](handleError(_0x201977,null));};exports[_0x1e52('0x21')]=function(_0x1779ab,_0x3334bd){if(_0x1779ab[_0x1e52('0x48')]['id']){delete _0x1779ab[_0x1e52('0x48')]['id'];}return db['VoiceMusicOnHold']['find']({'where':{'id':_0x1779ab[_0x1e52('0x49')]['id']}})[_0x1e52('0x22')](handleEntityNotFound(_0x3334bd,null))[_0x1e52('0x22')](saveUpdates(_0x1779ab[_0x1e52('0x48')],null))[_0x1e52('0x22')](respondWithResult(_0x3334bd,null))[_0x1e52('0x43')](handleError(_0x3334bd,null));};exports[_0x1e52('0x4a')]=function(_0x3d0caf,_0x3b09c6,_0x48b6d7){return db[_0x1e52('0x4b')][_0x1e52('0x4c')](function(_0x595df8){if(_0x3d0caf[_0x1e52('0x48')][_0x1e52('0x4d')]===_0x1e52('0x4e')){_0x3d0caf[_0x1e52('0x48')][_0x1e52('0x4f')]=path[_0x1e52('0x50')](config[_0x1e52('0x51')],'server/files/moh',_0x3d0caf[_0x1e52('0x48')][_0x1e52('0x2a')]);}return db[_0x1e52('0x2e')][_0x1e52('0x4a')](_0x3d0caf[_0x1e52('0x48')],{'transaction':_0x595df8})[_0x1e52('0x22')](function(_0x541f49){if(_0x3d0caf[_0x1e52('0x48')]['mode']===_0x1e52('0x4e')){fs[_0x1e52('0x52')](_0x541f49[_0x1e52('0x4f')],parseInt(_0x1e52('0x53'),0x8));}var _0x2b5d73=_0x3d0caf[_0x1e52('0x54')][_0x1e52('0x24')]({'plain':!![]});if(!_0x2b5d73)throw new Error(_0x1e52('0x55'));if(_0x2b5d73[_0x1e52('0x56')]===_0x1e52('0x54')){var _0x12d86e=_0x541f49[_0x1e52('0x24')]({'plain':!![]});return db[_0x1e52('0x57')]['find']({'where':{'name':'MusicOnHolds','userProfileId':_0x2b5d73[_0x1e52('0x58')]},'raw':!![]})[_0x1e52('0x22')](function(_0x192382){if(_0x192382&&_0x192382['autoAssociation']===0x0){return db[_0x1e52('0x26')][_0x1e52('0x4a')]({'name':_0x12d86e[_0x1e52('0x2a')],'resourceId':_0x12d86e['id'],'type':_0x192382[_0x1e52('0x2a')],'sectionId':_0x192382['id']},{})[_0x1e52('0x22')](function(){return _0x541f49;});}else{return _0x541f49;}})[_0x1e52('0x43')](function(_0x3ae42){logger[_0x1e52('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3ae42);});}return _0x541f49;});})[_0x1e52('0x22')](respondWithResult(_0x3b09c6,0xc9))[_0x1e52('0x43')](handleError(_0x3b09c6,null));};exports[_0x1e52('0x23')]=function(_0x198a44,_0x7f5357,_0x1b38dc){var _0x1d7970;return db['VoiceMusicOnHold'][_0x1e52('0x47')]({'where':{'id':_0x198a44[_0x1e52('0x49')]['id']}})[_0x1e52('0x22')](function(_0xd2a63b){if(_0xd2a63b){return db[_0x1e52('0x4b')]['transaction'](function(_0x2f1593){return _0xd2a63b['destroy']({'transaction':_0x2f1593,'raw':!![]})['then'](function(_0x4ed4f7){if(_0x4ed4f7['directory']){fs[_0x1e52('0x59')](_0x4ed4f7[_0x1e52('0x4f')])[_0x1e52('0x5a')](function(_0x444beb){fs[_0x1e52('0x5b')](path[_0x1e52('0x50')](_0x4ed4f7[_0x1e52('0x4f')],_0x444beb));});fs['rmdirSync'](_0x4ed4f7['directory']);}return _0x4ed4f7;});})['catch'](function(_0x2c34a1){throw new db[(_0x1e52('0x5c'))][(_0x1e52('0x5d'))](_0x2c34a1[_0x1e52('0x5e')]);});}})['then'](handleEntityNotFound(_0x7f5357,null))[_0x1e52('0x22')](removeEntity(_0x7f5357,null))[_0x1e52('0x43')](handleError(_0x7f5357,null));};exports[_0x1e52('0x5f')]=function(_0x36479d,_0x5ba11f,_0x21145d){return db['sequelize'][_0x1e52('0x4c')](function(_0x312e24){var _0x13bcc4;return db[_0x1e52('0x2e')]['find']({'where':{'id':_0x36479d[_0x1e52('0x49')]['id']}})[_0x1e52('0x22')](function(_0x1ecdbc){if(_0x1ecdbc){_0x13bcc4=_0x1ecdbc;return _0x1ecdbc[_0x1e52('0x5f')](_0x36479d[_0x1e52('0x48')]['id'],{'transaction':_0x312e24});}})['then'](function(_0x41b0d6){if(_0x41b0d6){return db[_0x1e52('0x60')]['findOne']({'where':{'id':_0x36479d['body']['id']},'attributes':['id',_0x1e52('0x2a'),_0x1e52('0x61'),_0x1e52('0x62'),_0x1e52('0x63')],'raw':!![]});}})[_0x1e52('0x22')](function(_0x44fd88){if(_0x44fd88){var _0x402aca=path[_0x1e52('0x50')](config['root'],_0x1e52('0x64'),util[_0x1e52('0x65')](_0x1e52('0x66'),path[_0x1e52('0x67')](_0x44fd88[_0x1e52('0x61')],path[_0x1e52('0x68')](_0x44fd88[_0x1e52('0x61')])),_0x44fd88[_0x1e52('0x62')]));var _0x2640e2=path['join'](config['root'],'server/files/moh',_0x13bcc4[_0x1e52('0x2a')],util[_0x1e52('0x65')](_0x1e52('0x66'),_0x44fd88[_0x1e52('0x2a')],_0x44fd88[_0x1e52('0x62')]));fs[_0x1e52('0x69')](_0x402aca,_0x2640e2);return _0x44fd88;}})[_0x1e52('0x43')](function(_0x5b8658){throw new db[(_0x1e52('0x5c'))][(_0x1e52('0x5d'))](_0x5b8658[_0x1e52('0x5e')]);});})[_0x1e52('0x22')](handleEntityNotFound(_0x5ba11f,null))[_0x1e52('0x22')](respondWithResult(_0x5ba11f,0xc9))[_0x1e52('0x43')](handleError(_0x5ba11f,null));};exports[_0x1e52('0x6a')]=function(_0x1053cc,_0x54374b,_0x1be2b4){return db[_0x1e52('0x4b')][_0x1e52('0x4c')](function(_0x1bb60f){var _0x16de11;return db[_0x1e52('0x2e')]['findOne']({'where':{'id':_0x1053cc[_0x1e52('0x49')]['id']}})['then'](handleEntityNotFound(_0x54374b,null))[_0x1e52('0x22')](function(_0x5124de){if(_0x5124de){_0x16de11=_0x5124de;return _0x5124de[_0x1e52('0x6a')](_0x1053cc[_0x1e52('0x49')][_0x1e52('0x6b')]);}})[_0x1e52('0x22')](function(_0x3b7514){if(_0x3b7514){return db[_0x1e52('0x60')]['findOne']({'where':{'id':_0x1053cc[_0x1e52('0x49')][_0x1e52('0x6b')]},'attributes':['id',_0x1e52('0x2a'),_0x1e52('0x61'),_0x1e52('0x62'),'createdAt'],'raw':!![]});}})[_0x1e52('0x22')](function(_0x33271b){if(_0x33271b){fs['unlinkSync'](path[_0x1e52('0x50')](_0x16de11[_0x1e52('0x4f')],util['format'](_0x1e52('0x66'),_0x33271b[_0x1e52('0x2a')],_0x33271b[_0x1e52('0x62')])));return _0x33271b;}})[_0x1e52('0x43')](function(_0x2d608f){throw new db[(_0x1e52('0x5c'))][(_0x1e52('0x5d'))](_0x2d608f[_0x1e52('0x5e')]);});})[_0x1e52('0x22')](handleEntityNotFound(_0x54374b,null))[_0x1e52('0x22')](respondWithStatusCode(_0x54374b,0xcc))[_0x1e52('0x43')](handleError(_0x54374b,null));};exports['getSounds']=function(_0x268f80,_0x1ab17d,_0x50c99e){var _0x606681={};var _0x4d94a3={};var _0x1ab32a;var _0x25afb4;return db['VoiceMusicOnHold']['findOne']({'where':{'id':_0x268f80['params']['id']}})[_0x1e52('0x22')](handleEntityNotFound(_0x1ab17d,null))[_0x1e52('0x22')](function(_0xd2618d){if(_0xd2618d){_0x1ab32a=_0xd2618d;_0x4d94a3[_0x1e52('0x36')]=_[_0x1e52('0x45')](db['Sound']['rawAttributes']);_0x4d94a3['query']=_[_0x1e52('0x45')](_0x268f80[_0x1e52('0x33')]);_0x4d94a3['filters']=_[_0x1e52('0x35')](_0x4d94a3[_0x1e52('0x36')],_0x4d94a3['query']);_0x606681[_0x1e52('0x37')]=_['intersection'](_0x4d94a3['model'],qs[_0x1e52('0x38')](_0x268f80['query'][_0x1e52('0x38')]));_0x606681[_0x1e52('0x37')]=_0x606681['attributes']['length']?_0x606681[_0x1e52('0x37')]:_0x4d94a3[_0x1e52('0x36')];_0x606681[_0x1e52('0x3a')]=qs[_0x1e52('0x3b')](_0x268f80[_0x1e52('0x33')][_0x1e52('0x3b')]);_0x606681[_0x1e52('0x3c')]=qs[_0x1e52('0x34')](_['pick'](_0x268f80[_0x1e52('0x33')],_0x4d94a3[_0x1e52('0x34')]));if(_0x268f80[_0x1e52('0x33')][_0x1e52('0x3d')]){_0x606681[_0x1e52('0x3c')]=_[_0x1e52('0x3e')](_0x606681[_0x1e52('0x3c')],{'$or':_[_0x1e52('0x2d')](_0x606681[_0x1e52('0x37')],function(_0x15e90f){var _0x321675={};_0x321675[_0x15e90f]={'$like':'%'+_0x268f80['query'][_0x1e52('0x3d')]+'%'};return _0x321675;})});}_0x606681=_[_0x1e52('0x3e')]({},_0x606681,_0x268f80[_0x1e52('0x3f')]);return _0x1ab32a[_0x1e52('0x6c')](_0x606681);}})[_0x1e52('0x22')](function(_0x363622){if(_0x363622){_0x25afb4=_0x363622[_0x1e52('0x46')];if(!_0x268f80[_0x1e52('0x33')][_0x1e52('0x6d')]('nolimit')){_0x606681[_0x1e52('0x1b')]=qs[_0x1e52('0x1b')](_0x268f80['query'][_0x1e52('0x1b')]);_0x606681['offset']=qs[_0x1e52('0x19')](_0x268f80[_0x1e52('0x33')][_0x1e52('0x19')]);}return _0x1ab32a['getSounds'](_0x606681);}})[_0x1e52('0x22')](function(_0x7541e5){if(_0x7541e5){return _0x7541e5?{'count':_0x25afb4,'rows':_0x7541e5}:null;}})[_0x1e52('0x22')](respondWithResult(_0x1ab17d,null))['catch'](handleError(_0x1ab17d,null));};
\ No newline at end of file
+var _0x7d6b=['squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','destroy','then','get','UserProfileResource','error','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','keys','query','filters','model','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','rows','catch','params','intersection','find','body','create','sequelize','transaction','files','directory','root','server/files/moh','mode','mkdirSync','0777','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','MusicOnHolds','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','forEach','unlinkSync','join','rmdirSync','Sequelize','ValidationError','message','addSound','Sound','findOne','save_name','converted_format','createdAt','server/files/sounds/converted','format','%s.%s','basename','extname','symlinkSync','removeSound','id2','merge','nolimit','getSounds','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash'];(function(_0x1a1e88,_0x2e5d64){var _0x396990=function(_0x2b3bcb){while(--_0x2b3bcb){_0x1a1e88['push'](_0x1a1e88['shift']());}};_0x396990(++_0x2e5d64);}(_0x7d6b,0x152));var _0xb7d6=function(_0x20e60a,_0x442aa4){_0x20e60a=_0x20e60a-0x0;var _0x3eacec=_0x7d6b[_0x20e60a];return _0x3eacec;};'use strict';var emlformat=require(_0xb7d6('0x0'));var rimraf=require(_0xb7d6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb7d6('0x2'));var rp=require(_0xb7d6('0x3'));var moment=require(_0xb7d6('0x4'));var BPromise=require(_0xb7d6('0x5'));var Mustache=require(_0xb7d6('0x6'));var util=require(_0xb7d6('0x7'));var path=require(_0xb7d6('0x8'));var sox=require('sox');var csv=require(_0xb7d6('0x9'));var ejs=require(_0xb7d6('0xa'));var fs=require('fs');var fs_extra=require(_0xb7d6('0xb'));var _=require(_0xb7d6('0xc'));var squel=require(_0xb7d6('0xd'));var crypto=require(_0xb7d6('0xe'));var jsforce=require(_0xb7d6('0xf'));var deskjs=require(_0xb7d6('0x10'));var toCsv=require('to-csv');var querystring=require(_0xb7d6('0x11'));var Papa=require(_0xb7d6('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb7d6('0x13'));var as=require(_0xb7d6('0x14'));var hardwareService=require(_0xb7d6('0x15'));var logger=require(_0xb7d6('0x16'))(_0xb7d6('0x17'));var utils=require('../../config/utils');var config=require(_0xb7d6('0x18'));var licenseUtil=require(_0xb7d6('0x19'));var db=require(_0xb7d6('0x1a'))['db'];function respondWithStatusCode(_0x1d2b10,_0xe3feb5){_0xe3feb5=_0xe3feb5||0xcc;return function(_0xdd9c12){if(_0xdd9c12){return _0x1d2b10['sendStatus'](_0xe3feb5);}return _0x1d2b10[_0xb7d6('0x1b')](_0xe3feb5)[_0xb7d6('0x1c')]();};}function respondWithResult(_0x229a5d,_0x1a6ab1){_0x1a6ab1=_0x1a6ab1||0xc8;return function(_0x250422){if(_0x250422){return _0x229a5d[_0xb7d6('0x1b')](_0x1a6ab1)[_0xb7d6('0x1d')](_0x250422);}};}function respondWithFilteredResult(_0x5a2ef7,_0xfcf996){return function(_0x91d787){if(_0x91d787){var _0x1c9eee=typeof _0xfcf996[_0xb7d6('0x1e')]===_0xb7d6('0x1f')&&typeof _0xfcf996['limit']==='undefined';var _0x159d00=_0x91d787[_0xb7d6('0x20')];var _0x3a24e5=_0x1c9eee?0x0:_0xfcf996[_0xb7d6('0x1e')];var _0x75980c=_0x1c9eee?_0x91d787[_0xb7d6('0x20')]:_0xfcf996[_0xb7d6('0x1e')]+_0xfcf996[_0xb7d6('0x21')];var _0x44a73d;if(_0x75980c>=_0x159d00){_0x75980c=_0x159d00;_0x44a73d=0xc8;}else{_0x44a73d=0xce;}_0x5a2ef7[_0xb7d6('0x1b')](_0x44a73d);return _0x5a2ef7[_0xb7d6('0x22')](_0xb7d6('0x23'),_0x3a24e5+'-'+_0x75980c+'/'+_0x159d00)['json'](_0x91d787);}return null;};}function patchUpdates(_0x4f2ffa){return function(_0x2dc4db){try{jsonpatch[_0xb7d6('0x24')](_0x2dc4db,_0x4f2ffa,!![]);}catch(_0x3fc956){return BPromise[_0xb7d6('0x25')](_0x3fc956);}return _0x2dc4db['save']();};}function saveUpdates(_0x2bc754,_0x2a1dff){return function(_0x15d858){if(_0x15d858){return _0x15d858[_0xb7d6('0x26')](_0x2bc754)['then'](function(_0x4652c0){return _0x4652c0;});}return null;};}function removeEntity(_0x34695e,_0x298c1b){return function(_0x48ee00){if(_0x48ee00){return _0x48ee00[_0xb7d6('0x27')]()[_0xb7d6('0x28')](function(){var _0x5d2ac5=_0x48ee00[_0xb7d6('0x29')]({'plain':!![]});var _0x5a6c2b='MusicOnHolds';return db[_0xb7d6('0x2a')][_0xb7d6('0x27')]({'where':{'type':_0x5a6c2b,'resourceId':_0x5d2ac5['id']}})[_0xb7d6('0x28')](function(){return _0x48ee00;});})[_0xb7d6('0x28')](function(){_0x34695e[_0xb7d6('0x1b')](0xcc)[_0xb7d6('0x1c')]();});}};}function handleEntityNotFound(_0x32602a,_0x2eb342){return function(_0x3d9529){if(!_0x3d9529){_0x32602a['sendStatus'](0x194);}return _0x3d9529;};}function handleError(_0x39e81d,_0x1394dd){_0x1394dd=_0x1394dd||0x1f4;return function(_0x110402){logger[_0xb7d6('0x2b')](_0x110402[_0xb7d6('0x2c')]);if(_0x110402['name']){delete _0x110402[_0xb7d6('0x2d')];}_0x39e81d['status'](_0x1394dd)[_0xb7d6('0x2e')](_0x110402);};}exports[_0xb7d6('0x2f')]=function(_0x38b8b5,_0x14d863){var _0x376a14={},_0x5930b0={},_0x261875={'count':0x0,'rows':[]};var _0x679379=_[_0xb7d6('0x30')](db[_0xb7d6('0x31')][_0xb7d6('0x32')],function(_0x56e2fd){return{'name':_0x56e2fd[_0xb7d6('0x33')],'type':_0x56e2fd[_0xb7d6('0x34')]['key']};});_0x5930b0['model']=_[_0xb7d6('0x30')](_0x679379,'name');_0x5930b0['query']=_[_0xb7d6('0x35')](_0x38b8b5[_0xb7d6('0x36')]);_0x5930b0[_0xb7d6('0x37')]=_['intersection'](_0x5930b0[_0xb7d6('0x38')],_0x5930b0[_0xb7d6('0x36')]);_0x376a14['attributes']=_['intersection'](_0x5930b0[_0xb7d6('0x38')],qs[_0xb7d6('0x39')](_0x38b8b5[_0xb7d6('0x36')][_0xb7d6('0x39')]));_0x376a14[_0xb7d6('0x3a')]=_0x376a14[_0xb7d6('0x3a')][_0xb7d6('0x3b')]?_0x376a14[_0xb7d6('0x3a')]:_0x5930b0[_0xb7d6('0x38')];if(!_0x38b8b5[_0xb7d6('0x36')][_0xb7d6('0x3c')]('nolimit')){_0x376a14['limit']=qs[_0xb7d6('0x21')](_0x38b8b5[_0xb7d6('0x36')][_0xb7d6('0x21')]);_0x376a14['offset']=qs[_0xb7d6('0x1e')](_0x38b8b5[_0xb7d6('0x36')][_0xb7d6('0x1e')]);}_0x376a14[_0xb7d6('0x3d')]=qs['sort'](_0x38b8b5[_0xb7d6('0x36')][_0xb7d6('0x3e')]);delete _0x38b8b5['query'][_0xb7d6('0x3e')];_0x376a14[_0xb7d6('0x3f')]=qs[_0xb7d6('0x37')](_[_0xb7d6('0x40')](_0x38b8b5[_0xb7d6('0x36')],_0x5930b0[_0xb7d6('0x37')]),_0x679379);if(_0x38b8b5['query'][_0xb7d6('0x41')]){_0x376a14[_0xb7d6('0x3f')]=_['merge'](_0x376a14[_0xb7d6('0x3f')],{'$or':_[_0xb7d6('0x30')](_0x679379,function(_0x2ec106){if(_0x2ec106['type']!==_0xb7d6('0x42')){var _0x23a165={};_0x23a165[_0x2ec106[_0xb7d6('0x2d')]]={'$like':'%'+_0x38b8b5[_0xb7d6('0x36')][_0xb7d6('0x41')]+'%'};return _0x23a165;}})});}_0x376a14=_['merge']({},_0x376a14,_0x38b8b5[_0xb7d6('0x43')]);var _0x1a8631={'where':_0x376a14[_0xb7d6('0x3f')]};return db[_0xb7d6('0x31')][_0xb7d6('0x20')](_0x1a8631)[_0xb7d6('0x28')](function(_0x997913){_0x261875[_0xb7d6('0x20')]=_0x997913;if(_0x38b8b5[_0xb7d6('0x36')][_0xb7d6('0x44')]){_0x376a14[_0xb7d6('0x45')]=[{'all':!![]}];}return db[_0xb7d6('0x31')]['findAll'](_0x376a14);})['then'](function(_0xde92fd){_0x261875[_0xb7d6('0x46')]=_0xde92fd;return _0x261875;})[_0xb7d6('0x28')](respondWithFilteredResult(_0x14d863,_0x376a14))[_0xb7d6('0x47')](handleError(_0x14d863,null));};exports['show']=function(_0x342c4a,_0xe2daa4){var _0x43f618={'raw':![],'where':{'id':_0x342c4a[_0xb7d6('0x48')]['id']}},_0x1dbf5d={};_0x1dbf5d[_0xb7d6('0x38')]=_[_0xb7d6('0x35')](db['VoiceMusicOnHold'][_0xb7d6('0x32')]);_0x1dbf5d['query']=_[_0xb7d6('0x35')](_0x342c4a[_0xb7d6('0x36')]);_0x1dbf5d[_0xb7d6('0x37')]=_[_0xb7d6('0x49')](_0x1dbf5d[_0xb7d6('0x38')],_0x1dbf5d[_0xb7d6('0x36')]);_0x43f618[_0xb7d6('0x3a')]=_['intersection'](_0x1dbf5d[_0xb7d6('0x38')],qs[_0xb7d6('0x39')](_0x342c4a[_0xb7d6('0x36')][_0xb7d6('0x39')]));_0x43f618[_0xb7d6('0x3a')]=_0x43f618[_0xb7d6('0x3a')][_0xb7d6('0x3b')]?_0x43f618['attributes']:_0x1dbf5d[_0xb7d6('0x38')];if(_0x342c4a[_0xb7d6('0x36')][_0xb7d6('0x44')]){_0x43f618[_0xb7d6('0x45')]=[{'all':!![]}];}_0x43f618=_['merge']({},_0x43f618,_0x342c4a[_0xb7d6('0x43')]);return db[_0xb7d6('0x31')][_0xb7d6('0x4a')](_0x43f618)[_0xb7d6('0x28')](handleEntityNotFound(_0xe2daa4,null))['then'](respondWithResult(_0xe2daa4,null))['catch'](handleError(_0xe2daa4,null));};exports[_0xb7d6('0x26')]=function(_0x1978f2,_0x1368e3){if(_0x1978f2[_0xb7d6('0x4b')]['id']){delete _0x1978f2[_0xb7d6('0x4b')]['id'];}return db[_0xb7d6('0x31')]['find']({'where':{'id':_0x1978f2['params']['id']}})[_0xb7d6('0x28')](handleEntityNotFound(_0x1368e3,null))['then'](saveUpdates(_0x1978f2[_0xb7d6('0x4b')],null))['then'](respondWithResult(_0x1368e3,null))['catch'](handleError(_0x1368e3,null));};exports[_0xb7d6('0x4c')]=function(_0xe26200,_0x13a5c4,_0x417bbd){return db[_0xb7d6('0x4d')][_0xb7d6('0x4e')](function(_0x407f58){if(_0xe26200['body']['mode']===_0xb7d6('0x4f')){_0xe26200['body'][_0xb7d6('0x50')]=path['join'](config[_0xb7d6('0x51')],_0xb7d6('0x52'),_0xe26200['body'][_0xb7d6('0x2d')]);}return db[_0xb7d6('0x31')][_0xb7d6('0x4c')](_0xe26200[_0xb7d6('0x4b')],{'transaction':_0x407f58})['then'](function(_0x33f986){if(_0xe26200['body'][_0xb7d6('0x53')]===_0xb7d6('0x4f')){fs[_0xb7d6('0x54')](_0x33f986[_0xb7d6('0x50')],parseInt(_0xb7d6('0x55'),0x8));}var _0x7d3c6=_0xe26200['user'][_0xb7d6('0x29')]({'plain':!![]});if(!_0x7d3c6)throw new Error(_0xb7d6('0x56'));if(_0x7d3c6['role']===_0xb7d6('0x57')){var _0x22d4f0=_0x33f986[_0xb7d6('0x29')]({'plain':!![]});return db[_0xb7d6('0x58')]['find']({'where':{'name':_0xb7d6('0x59'),'userProfileId':_0x7d3c6[_0xb7d6('0x5a')]},'raw':!![]})['then'](function(_0x3bbad2){if(_0x3bbad2&&_0x3bbad2[_0xb7d6('0x5b')]===0x0){return db[_0xb7d6('0x2a')][_0xb7d6('0x4c')]({'name':_0x22d4f0['name'],'resourceId':_0x22d4f0['id'],'type':_0x3bbad2[_0xb7d6('0x2d')],'sectionId':_0x3bbad2['id']},{})[_0xb7d6('0x28')](function(){return _0x33f986;});}else{return _0x33f986;}})[_0xb7d6('0x47')](function(_0x446a21){logger['error'](_0xb7d6('0x5c'),_0x446a21);});}return _0x33f986;});})[_0xb7d6('0x28')](respondWithResult(_0x13a5c4,0xc9))['catch'](handleError(_0x13a5c4,null));};exports[_0xb7d6('0x27')]=function(_0x401f2f,_0x5931d7,_0x44f9f5){var _0x563e07;return db[_0xb7d6('0x31')]['find']({'where':{'id':_0x401f2f[_0xb7d6('0x48')]['id']}})[_0xb7d6('0x28')](function(_0x76547){if(_0x76547){return db[_0xb7d6('0x4d')]['transaction'](function(_0x1e3bd0){return _0x76547[_0xb7d6('0x27')]({'transaction':_0x1e3bd0,'raw':!![]})[_0xb7d6('0x28')](function(_0x5562e0){if(_0x5562e0[_0xb7d6('0x50')]){fs['readdirSync'](_0x5562e0[_0xb7d6('0x50')])[_0xb7d6('0x5d')](function(_0x33c351){fs[_0xb7d6('0x5e')](path[_0xb7d6('0x5f')](_0x5562e0[_0xb7d6('0x50')],_0x33c351));});fs[_0xb7d6('0x60')](_0x5562e0[_0xb7d6('0x50')]);}return _0x5562e0;});})[_0xb7d6('0x47')](function(_0x2b2680){throw new db[(_0xb7d6('0x61'))][(_0xb7d6('0x62'))](_0x2b2680[_0xb7d6('0x63')]);});}})[_0xb7d6('0x28')](handleEntityNotFound(_0x5931d7,null))['then'](removeEntity(_0x5931d7,null))[_0xb7d6('0x47')](handleError(_0x5931d7,null));};exports[_0xb7d6('0x64')]=function(_0x177457,_0x54c7ba,_0x4711ef){return db[_0xb7d6('0x4d')][_0xb7d6('0x4e')](function(_0x3227b3){var _0x4d7839;return db[_0xb7d6('0x31')][_0xb7d6('0x4a')]({'where':{'id':_0x177457[_0xb7d6('0x48')]['id']}})['then'](function(_0xef174d){if(_0xef174d){_0x4d7839=_0xef174d;return _0xef174d[_0xb7d6('0x64')](_0x177457[_0xb7d6('0x4b')]['id'],{'transaction':_0x3227b3});}})['then'](function(_0x36c43a){if(_0x36c43a){return db[_0xb7d6('0x65')][_0xb7d6('0x66')]({'where':{'id':_0x177457['body']['id']},'attributes':['id',_0xb7d6('0x2d'),_0xb7d6('0x67'),_0xb7d6('0x68'),_0xb7d6('0x69')],'raw':!![]});}})[_0xb7d6('0x28')](function(_0x520302){if(_0x520302){var _0xb3abe9=path[_0xb7d6('0x5f')](config[_0xb7d6('0x51')],_0xb7d6('0x6a'),util[_0xb7d6('0x6b')](_0xb7d6('0x6c'),path[_0xb7d6('0x6d')](_0x520302[_0xb7d6('0x67')],path[_0xb7d6('0x6e')](_0x520302[_0xb7d6('0x67')])),_0x520302[_0xb7d6('0x68')]));var _0x6c0970=path['join'](config['root'],_0xb7d6('0x52'),_0x4d7839[_0xb7d6('0x2d')],util[_0xb7d6('0x6b')](_0xb7d6('0x6c'),_0x520302['name'],_0x520302[_0xb7d6('0x68')]));fs[_0xb7d6('0x6f')](_0xb3abe9,_0x6c0970);return _0x520302;}})[_0xb7d6('0x47')](function(_0xe9df55){throw new db[(_0xb7d6('0x61'))][(_0xb7d6('0x62'))](_0xe9df55[_0xb7d6('0x63')]);});})[_0xb7d6('0x28')](handleEntityNotFound(_0x54c7ba,null))[_0xb7d6('0x28')](respondWithResult(_0x54c7ba,0xc9))['catch'](handleError(_0x54c7ba,null));};exports[_0xb7d6('0x70')]=function(_0x273ad7,_0x5b659e,_0x5f2c89){return db['sequelize'][_0xb7d6('0x4e')](function(_0x5e6382){var _0xeb278d;return db['VoiceMusicOnHold'][_0xb7d6('0x66')]({'where':{'id':_0x273ad7[_0xb7d6('0x48')]['id']}})[_0xb7d6('0x28')](handleEntityNotFound(_0x5b659e,null))[_0xb7d6('0x28')](function(_0x540f99){if(_0x540f99){_0xeb278d=_0x540f99;return _0x540f99[_0xb7d6('0x70')](_0x273ad7[_0xb7d6('0x48')][_0xb7d6('0x71')]);}})[_0xb7d6('0x28')](function(_0x2756d0){if(_0x2756d0){return db[_0xb7d6('0x65')][_0xb7d6('0x66')]({'where':{'id':_0x273ad7[_0xb7d6('0x48')][_0xb7d6('0x71')]},'attributes':['id','name',_0xb7d6('0x67'),_0xb7d6('0x68'),_0xb7d6('0x69')],'raw':!![]});}})['then'](function(_0xebb0fa){if(_0xebb0fa){fs[_0xb7d6('0x5e')](path[_0xb7d6('0x5f')](_0xeb278d[_0xb7d6('0x50')],util[_0xb7d6('0x6b')](_0xb7d6('0x6c'),_0xebb0fa[_0xb7d6('0x2d')],_0xebb0fa['converted_format'])));return _0xebb0fa;}})[_0xb7d6('0x47')](function(_0x2d66cf){throw new db[(_0xb7d6('0x61'))]['ValidationError'](_0x2d66cf[_0xb7d6('0x63')]);});})[_0xb7d6('0x28')](handleEntityNotFound(_0x5b659e,null))[_0xb7d6('0x28')](respondWithStatusCode(_0x5b659e,0xcc))[_0xb7d6('0x47')](handleError(_0x5b659e,null));};exports['getSounds']=function(_0x43cfc8,_0x2caa3a,_0x42fbad){var _0x207b3={};var _0x20cff9={};var _0x4581d6;var _0x1f906e;return db[_0xb7d6('0x31')]['findOne']({'where':{'id':_0x43cfc8[_0xb7d6('0x48')]['id']}})['then'](handleEntityNotFound(_0x2caa3a,null))[_0xb7d6('0x28')](function(_0x3c33ff){if(_0x3c33ff){_0x4581d6=_0x3c33ff;_0x20cff9['model']=_['keys'](db[_0xb7d6('0x65')][_0xb7d6('0x32')]);_0x20cff9[_0xb7d6('0x36')]=_[_0xb7d6('0x35')](_0x43cfc8[_0xb7d6('0x36')]);_0x20cff9[_0xb7d6('0x37')]=_[_0xb7d6('0x49')](_0x20cff9['model'],_0x20cff9['query']);_0x207b3[_0xb7d6('0x3a')]=_[_0xb7d6('0x49')](_0x20cff9['model'],qs[_0xb7d6('0x39')](_0x43cfc8[_0xb7d6('0x36')]['fields']));_0x207b3['attributes']=_0x207b3[_0xb7d6('0x3a')][_0xb7d6('0x3b')]?_0x207b3['attributes']:_0x20cff9[_0xb7d6('0x38')];_0x207b3['order']=qs['sort'](_0x43cfc8[_0xb7d6('0x36')][_0xb7d6('0x3e')]);_0x207b3[_0xb7d6('0x3f')]=qs[_0xb7d6('0x37')](_['pick'](_0x43cfc8[_0xb7d6('0x36')],_0x20cff9[_0xb7d6('0x37')]));if(_0x43cfc8[_0xb7d6('0x36')][_0xb7d6('0x41')]){_0x207b3['where']=_[_0xb7d6('0x72')](_0x207b3[_0xb7d6('0x3f')],{'$or':_['map'](_0x207b3[_0xb7d6('0x3a')],function(_0x461909){var _0x41a5c5={};_0x41a5c5[_0x461909]={'$like':'%'+_0x43cfc8[_0xb7d6('0x36')]['filter']+'%'};return _0x41a5c5;})});}_0x207b3=_['merge']({},_0x207b3,_0x43cfc8[_0xb7d6('0x43')]);return _0x4581d6['getSounds'](_0x207b3);}})[_0xb7d6('0x28')](function(_0x19687f){if(_0x19687f){_0x1f906e=_0x19687f['length'];if(!_0x43cfc8[_0xb7d6('0x36')][_0xb7d6('0x3c')](_0xb7d6('0x73'))){_0x207b3['limit']=qs['limit'](_0x43cfc8[_0xb7d6('0x36')][_0xb7d6('0x21')]);_0x207b3[_0xb7d6('0x1e')]=qs['offset'](_0x43cfc8['query'][_0xb7d6('0x1e')]);}return _0x4581d6[_0xb7d6('0x74')](_0x207b3);}})[_0xb7d6('0x28')](function(_0x432f23){if(_0x432f23){return _0x432f23?{'count':_0x1f906e,'rows':_0x432f23}:null;}})[_0xb7d6('0x28')](respondWithResult(_0x2caa3a,null))[_0xb7d6('0x47')](handleError(_0x2caa3a,null));};
\ No newline at end of file
index dc2d5c3..d633b87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e63=['util','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','VoiceMusicOnHold','voice_musiconhold'];(function(_0x3d6bab,_0x3242db){var _0x348415=function(_0x324f3b){while(--_0x324f3b){_0x3d6bab['push'](_0x3d6bab['shift']());}};_0x348415(++_0x3242db);}(_0x6e63,0x15e));var _0x36e6=function(_0x3b5daf,_0x79c877){_0x3b5daf=_0x3b5daf-0x0;var _0x3ba272=_0x6e63[_0x3b5daf];return _0x3ba272;};'use strict';var _=require('lodash');var util=require(_0x36e6('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x36e6('0x1'));var BPromise=require(_0x36e6('0x2'));var rp=require(_0x36e6('0x3'));var fs=require('fs');var path=require(_0x36e6('0x4'));var rimraf=require(_0x36e6('0x5'));var config=require(_0x36e6('0x6'));var attributes=require('./voiceMusicOnHold.attributes');module[_0x36e6('0x7')]=function(_0x208dc6,_0x1a8fa8){return _0x208dc6['define'](_0x36e6('0x8'),attributes,{'tableName':_0x36e6('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb772=['voice_musiconhold','lodash','api','moment','bluebird','request-promise','rimraf','define','VoiceMusicOnHold'];(function(_0x22ef39,_0x56cc82){var _0x1edb6a=function(_0x12c8c3){while(--_0x12c8c3){_0x22ef39['push'](_0x22ef39['shift']());}};_0x1edb6a(++_0x56cc82);}(_0xb772,0xeb));var _0x2b77=function(_0x444b94,_0x579356){_0x444b94=_0x444b94-0x0;var _0x93f415=_0xb772[_0x444b94];return _0x93f415;};'use strict';var _=require(_0x2b77('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2b77('0x1'));var moment=require(_0x2b77('0x2'));var BPromise=require(_0x2b77('0x3'));var rp=require(_0x2b77('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2b77('0x5'));var config=require('../../config/environment');var attributes=require('./voiceMusicOnHold.attributes');module['exports']=function(_0x20a3dd,_0x2de635){return _0x20a3dd[_0x2b77('0x6')](_0x2b77('0x7'),attributes,{'tableName':_0x2b77('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 93dbcb8..1ff23ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0xdad76e,_0x284029){var _0x4a5958=function(_0x53aea9){while(--_0x53aea9){_0xdad76e['push'](_0xdad76e['shift']());}};_0x4a5958(++_0x284029);}(_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
+var _0xa9e0=['http','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\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(_0x1a613d,_0x44190b){var _0x584267=function(_0x1a8e4e){while(--_0x1a8e4e){_0x1a613d['push'](_0x1a613d['shift']());}};_0x584267(++_0x44190b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'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 d350625..25ea94f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb66=['/describe','isAuthenticated','describe','/:id','show','/:id/users','getAgents','create','post','addAgents','addTeams','destroy','delete','removeAgents','removeTeams','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get'];(function(_0x56e0e8,_0x16ef91){var _0x2dab50=function(_0x4fe720){while(--_0x4fe720){_0x56e0e8['push'](_0x56e0e8['shift']());}};_0x2dab50(++_0x16ef91);}(_0xcb66,0x19f));var _0x6cb6=function(_0x2e0443,_0x7e5974){_0x2e0443=_0x2e0443-0x0;var _0x52d450=_0xcb66[_0x2e0443];return _0x52d450;};'use strict';var multer=require('multer');var util=require(_0x6cb6('0x0'));var path=require(_0x6cb6('0x1'));var timeout=require(_0x6cb6('0x2'));var express=require(_0x6cb6('0x3'));var router=express[_0x6cb6('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x6cb6('0x5'));var interaction=require(_0x6cb6('0x6'));var config=require(_0x6cb6('0x7'));var controller=require(_0x6cb6('0x8'));router[_0x6cb6('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x6cb6('0x9')](_0x6cb6('0xa'),auth[_0x6cb6('0xb')](),controller[_0x6cb6('0xc')]);router[_0x6cb6('0x9')](_0x6cb6('0xd'),auth[_0x6cb6('0xb')](),controller[_0x6cb6('0xe')]);router[_0x6cb6('0x9')](_0x6cb6('0xf'),auth[_0x6cb6('0xb')](),controller[_0x6cb6('0x10')]);router[_0x6cb6('0x9')]('/:id/teams',auth['isAuthenticated'](),controller['getTeams']);router['post']('/',auth[_0x6cb6('0xb')](),controller[_0x6cb6('0x11')]);router[_0x6cb6('0x12')](_0x6cb6('0xf'),auth['isAuthenticated'](),controller[_0x6cb6('0x13')]);router[_0x6cb6('0x12')]('/:id/teams',auth[_0x6cb6('0xb')](),controller[_0x6cb6('0x14')]);router['put'](_0x6cb6('0xd'),auth[_0x6cb6('0xb')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x6cb6('0x15')]);router[_0x6cb6('0x16')](_0x6cb6('0xf'),auth[_0x6cb6('0xb')](),controller[_0x6cb6('0x17')]);router[_0x6cb6('0x16')]('/:id/teams',auth[_0x6cb6('0xb')](),controller[_0x6cb6('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0xb68a=['index','/describe','describe','/:id','show','/:id/users','getTeams','create','post','addAgents','/:id/teams','update','delete','destroy','removeTeams','exports','multer','util','path','express','Router','../../config/environment','get','isAuthenticated'];(function(_0x3230ab,_0x46eac4){var _0x486975=function(_0x5b9129){while(--_0x5b9129){_0x3230ab['push'](_0x3230ab['shift']());}};_0x486975(++_0x46eac4);}(_0xb68a,0x1a8));var _0xab68=function(_0x3f2fea,_0x3c4ea8){_0x3f2fea=_0x3f2fea-0x0;var _0x69a4d5=_0xb68a[_0x3f2fea];return _0x69a4d5;};'use strict';var multer=require(_0xab68('0x0'));var util=require(_0xab68('0x1'));var path=require(_0xab68('0x2'));var timeout=require('connect-timeout');var express=require(_0xab68('0x3'));var router=express[_0xab68('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xab68('0x5'));var controller=require('./voicePrefix.controller');router[_0xab68('0x6')]('/',auth[_0xab68('0x7')](),controller[_0xab68('0x8')]);router[_0xab68('0x6')](_0xab68('0x9'),auth['isAuthenticated'](),controller[_0xab68('0xa')]);router['get'](_0xab68('0xb'),auth[_0xab68('0x7')](),controller[_0xab68('0xc')]);router[_0xab68('0x6')](_0xab68('0xd'),auth['isAuthenticated'](),controller['getAgents']);router['get']('/:id/teams',auth[_0xab68('0x7')](),controller[_0xab68('0xe')]);router['post']('/',auth[_0xab68('0x7')](),controller[_0xab68('0xf')]);router[_0xab68('0x10')](_0xab68('0xd'),auth[_0xab68('0x7')](),controller[_0xab68('0x11')]);router[_0xab68('0x10')](_0xab68('0x12'),auth['isAuthenticated'](),controller['addTeams']);router['put'](_0xab68('0xb'),auth[_0xab68('0x7')](),controller[_0xab68('0x13')]);router[_0xab68('0x14')](_0xab68('0xb'),auth[_0xab68('0x7')](),controller[_0xab68('0x15')]);router[_0xab68('0x14')](_0xab68('0xd'),auth[_0xab68('0x7')](),controller['removeAgents']);router[_0xab68('0x14')](_0xab68('0x12'),auth['isAuthenticated'](),controller[_0xab68('0x16')]);module[_0xab68('0x17')]=router;
\ No newline at end of file
index 1e0839a..da835ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2289=['system-','getDataValue','INTEGER','exports','STRING','name'];(function(_0x44c935,_0x3653f0){var _0x465bee=function(_0x211d20){while(--_0x211d20){_0x44c935['push'](_0x44c935['shift']());}};_0x465bee(++_0x3653f0);}(_0x2289,0x7b));var _0x9228=function(_0x277c64,_0x5a4d3b){_0x277c64=_0x277c64-0x0;var _0x24ce40=_0x2289[_0x277c64];return _0x24ce40;};'use strict';var Sequelize=require('sequelize');module[_0x9228('0x0')]={'name':{'type':Sequelize[_0x9228('0x1')],'allowNull':![],'unique':_0x9228('0x2')},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x1b0746){return _0x9228('0x3')+this[_0x9228('0x4')]('name')+'-';}},'description':{'type':Sequelize[_0x9228('0x1')]},'callerIdAll':{'type':Sequelize[_0x9228('0x1')]},'VoiceExtensionId':{'type':Sequelize[_0x9228('0x5')]}};
\ No newline at end of file
+var _0x8f79=['VIRTUAL','system-','sequelize','exports','name'];(function(_0x4bf005,_0x21349e){var _0x2d2f5c=function(_0x1a85ba){while(--_0x1a85ba){_0x4bf005['push'](_0x4bf005['shift']());}};_0x2d2f5c(++_0x21349e);}(_0x8f79,0x179));var _0x98f7=function(_0x4efd69,_0x29696b){_0x4efd69=_0x4efd69-0x0;var _0x12bdc3=_0x8f79[_0x4efd69];return _0x12bdc3;};'use strict';var Sequelize=require(_0x98f7('0x0'));module[_0x98f7('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x98f7('0x2')},'prefix':{'type':Sequelize[_0x98f7('0x3')],'get':function(_0x101471){return _0x98f7('0x4')+this['getDataValue']('name')+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 62414b0..b90cc67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0120=['get','VoicePrefixes','UserProfileResource','stack','name','send','index','VoicePrefix','rawAttributes','fieldName','type','key','map','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','find','describe','create','transaction','body','VoiceExtension','VoiceExtensionId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','app','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','bulkCreate','Extensions\x20creation\x20failed','push','CDR(prefix)=','callerIdAll','Set','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','${EXTEN:','charAt','system-','addAgents','params','ids','omit','spread','emit','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','getTeams','Agents','online','interface','flatMap','sequelize','addTeams','each','TeamVoicePrefix','upsert','findOrCreate','userVoicePrefix:save','removeTeams','from','team_has_voice_prefixes','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','TeamId','includes','union','compact','value','isEmpty','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','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','defaults','./voicePrefix.socket','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy'];(function(_0x37d6ac,_0x3b34b7){var _0x2e7db6=function(_0xbd655){while(--_0xbd655){_0x37d6ac['push'](_0x37d6ac['shift']());}};_0x2e7db6(++_0x3b34b7);}(_0x0120,0x6f));var _0x0012=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0x0120[_0x297fd3];return _0x2af381;};'use strict';var emlformat=require(_0x0012('0x0'));var rimraf=require(_0x0012('0x1'));var zipdir=require(_0x0012('0x2'));var jsonpatch=require(_0x0012('0x3'));var rp=require(_0x0012('0x4'));var moment=require(_0x0012('0x5'));var BPromise=require(_0x0012('0x6'));var Mustache=require(_0x0012('0x7'));var util=require(_0x0012('0x8'));var path=require(_0x0012('0x9'));var sox=require(_0x0012('0xa'));var csv=require(_0x0012('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x0012('0xc'));var crypto=require(_0x0012('0xd'));var jsforce=require(_0x0012('0xe'));var deskjs=require(_0x0012('0xf'));var toCsv=require(_0x0012('0xb'));var querystring=require('querystring');var Papa=require(_0x0012('0x10'));var Redis=require(_0x0012('0x11'));var authService=require(_0x0012('0x12'));var qs=require(_0x0012('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0012('0x14'));var logger=require('../../config/logger')(_0x0012('0x15'));var utils=require(_0x0012('0x16'));var config=require(_0x0012('0x17'));var licenseUtil=require(_0x0012('0x18'));var db=require(_0x0012('0x19'))['db'];config['redis']=_[_0x0012('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0012('0x1b'))['register'](socket);function respondWithStatusCode(_0x3995fd,_0xf658bc){_0xf658bc=_0xf658bc||0xcc;return function(_0x47a6ef){if(_0x47a6ef){return _0x3995fd[_0x0012('0x1c')](_0xf658bc);}return _0x3995fd[_0x0012('0x1d')](_0xf658bc)[_0x0012('0x1e')]();};}function respondWithResult(_0x3b8dfc,_0x522e9b){_0x522e9b=_0x522e9b||0xc8;return function(_0x4e72da){if(_0x4e72da){return _0x3b8dfc[_0x0012('0x1d')](_0x522e9b)[_0x0012('0x1f')](_0x4e72da);}};}function respondWithFilteredResult(_0x3948bf,_0x2e88a8){return function(_0x1d0423){if(_0x1d0423){var _0x22ded1=typeof _0x2e88a8[_0x0012('0x20')]===_0x0012('0x21')&&typeof _0x2e88a8['limit']===_0x0012('0x21');var _0x56b0e1=_0x1d0423['count'];var _0x45d00b=_0x22ded1?0x0:_0x2e88a8[_0x0012('0x20')];var _0xa2e623=_0x22ded1?_0x1d0423[_0x0012('0x22')]:_0x2e88a8['offset']+_0x2e88a8['limit'];var _0x460d82;if(_0xa2e623>=_0x56b0e1){_0xa2e623=_0x56b0e1;_0x460d82=0xc8;}else{_0x460d82=0xce;}_0x3948bf[_0x0012('0x1d')](_0x460d82);return _0x3948bf[_0x0012('0x23')](_0x0012('0x24'),_0x45d00b+'-'+_0xa2e623+'/'+_0x56b0e1)[_0x0012('0x1f')](_0x1d0423);}return null;};}function patchUpdates(_0x2e6a2c){return function(_0x2c9a96){try{jsonpatch[_0x0012('0x25')](_0x2c9a96,_0x2e6a2c,!![]);}catch(_0x57487e){return BPromise[_0x0012('0x26')](_0x57487e);}return _0x2c9a96[_0x0012('0x27')]();};}function saveUpdates(_0x4cf4bd,_0x36cf42){return function(_0x13a78e){if(_0x13a78e){return _0x13a78e[_0x0012('0x28')](_0x4cf4bd)[_0x0012('0x29')](function(_0x42bcd7){return _0x42bcd7;});}return null;};}function removeEntity(_0x5e820b,_0x351ffd){return function(_0x18b0a7){if(_0x18b0a7){return _0x18b0a7[_0x0012('0x2a')]()[_0x0012('0x29')](function(){var _0x173cb3=_0x18b0a7[_0x0012('0x2b')]({'plain':!![]});var _0x15d48a=_0x0012('0x2c');return db[_0x0012('0x2d')][_0x0012('0x2a')]({'where':{'type':_0x15d48a,'resourceId':_0x173cb3['id']}})[_0x0012('0x29')](function(){return _0x18b0a7;});})[_0x0012('0x29')](function(){_0x5e820b[_0x0012('0x1d')](0xcc)[_0x0012('0x1e')]();});}};}function handleEntityNotFound(_0x1282bb,_0x276389){return function(_0x1b676d){if(!_0x1b676d){_0x1282bb[_0x0012('0x1c')](0x194);}return _0x1b676d;};}function handleError(_0x1c23e0,_0x291085){_0x291085=_0x291085||0x1f4;return function(_0x1bb14d){logger['error'](_0x1bb14d[_0x0012('0x2e')]);if(_0x1bb14d[_0x0012('0x2f')]){delete _0x1bb14d['name'];}_0x1c23e0[_0x0012('0x1d')](_0x291085)[_0x0012('0x30')](_0x1bb14d);};}exports[_0x0012('0x31')]=function(_0x1b6cef,_0x287b05){var _0x47d73b={},_0x13f169={},_0x187f4b={'count':0x0,'rows':[]};var _0x2e7487=_['map'](db[_0x0012('0x32')][_0x0012('0x33')],function(_0x398990){return{'name':_0x398990[_0x0012('0x34')],'type':_0x398990[_0x0012('0x35')][_0x0012('0x36')]};});_0x13f169['model']=_[_0x0012('0x37')](_0x2e7487,_0x0012('0x2f'));_0x13f169[_0x0012('0x38')]=_[_0x0012('0x39')](_0x1b6cef['query']);_0x13f169['filters']=_[_0x0012('0x3a')](_0x13f169[_0x0012('0x3b')],_0x13f169[_0x0012('0x38')]);_0x47d73b[_0x0012('0x3c')]=_[_0x0012('0x3a')](_0x13f169[_0x0012('0x3b')],qs[_0x0012('0x3d')](_0x1b6cef['query'][_0x0012('0x3d')]));_0x47d73b[_0x0012('0x3c')]=_0x47d73b['attributes'][_0x0012('0x3e')]?_0x47d73b[_0x0012('0x3c')]:_0x13f169[_0x0012('0x3b')];if(!_0x1b6cef[_0x0012('0x38')][_0x0012('0x3f')](_0x0012('0x40'))){_0x47d73b[_0x0012('0x41')]=qs['limit'](_0x1b6cef[_0x0012('0x38')]['limit']);_0x47d73b[_0x0012('0x20')]=qs['offset'](_0x1b6cef['query'][_0x0012('0x20')]);}_0x47d73b[_0x0012('0x42')]=qs[_0x0012('0x43')](_0x1b6cef['query'][_0x0012('0x43')]);_0x47d73b[_0x0012('0x44')]=qs[_0x0012('0x45')](_[_0x0012('0x46')](_0x1b6cef[_0x0012('0x38')],_0x13f169[_0x0012('0x45')]),_0x2e7487);if(_0x1b6cef[_0x0012('0x38')][_0x0012('0x47')]){_0x47d73b['where']=_[_0x0012('0x48')](_0x47d73b[_0x0012('0x44')],{'$or':_[_0x0012('0x37')](_0x2e7487,function(_0x1799f2){if(_0x1799f2[_0x0012('0x35')]!==_0x0012('0x49')){var _0x375317={};_0x375317[_0x1799f2['name']]={'$like':'%'+_0x1b6cef['query'][_0x0012('0x47')]+'%'};return _0x375317;}})});}_0x47d73b=_['merge']({},_0x47d73b,_0x1b6cef[_0x0012('0x4a')]);var _0x30af1b={'where':_0x47d73b[_0x0012('0x44')]};return db[_0x0012('0x32')][_0x0012('0x22')](_0x30af1b)['then'](function(_0x1bd93a){_0x187f4b[_0x0012('0x22')]=_0x1bd93a;if(_0x1b6cef['query'][_0x0012('0x4b')]){_0x47d73b[_0x0012('0x4c')]=[{'all':!![]}];}return db[_0x0012('0x32')][_0x0012('0x4d')](_0x47d73b);})['then'](function(_0x4ba00e){_0x187f4b[_0x0012('0x4e')]=_0x4ba00e;return _0x187f4b;})['then'](respondWithFilteredResult(_0x287b05,_0x47d73b))[_0x0012('0x4f')](handleError(_0x287b05,null));};exports['show']=function(_0xdd4689,_0x1296fd){var _0x3daefd={'raw':![],'where':{'id':_0xdd4689['params']['id']}},_0x364f8e={};_0x364f8e[_0x0012('0x3b')]=_['keys'](db[_0x0012('0x32')][_0x0012('0x33')]);_0x364f8e[_0x0012('0x38')]=_[_0x0012('0x39')](_0xdd4689[_0x0012('0x38')]);_0x364f8e[_0x0012('0x45')]=_[_0x0012('0x3a')](_0x364f8e['model'],_0x364f8e[_0x0012('0x38')]);_0x3daefd[_0x0012('0x3c')]=_[_0x0012('0x3a')](_0x364f8e[_0x0012('0x3b')],qs[_0x0012('0x3d')](_0xdd4689[_0x0012('0x38')]['fields']));_0x3daefd['attributes']=_0x3daefd['attributes']['length']?_0x3daefd[_0x0012('0x3c')]:_0x364f8e[_0x0012('0x3b')];if(_0xdd4689[_0x0012('0x38')][_0x0012('0x4b')]){_0x3daefd[_0x0012('0x4c')]=[{'all':!![]}];}_0x3daefd=_['merge']({},_0x3daefd,_0xdd4689[_0x0012('0x4a')]);return db[_0x0012('0x32')][_0x0012('0x50')](_0x3daefd)[_0x0012('0x29')](handleEntityNotFound(_0x1296fd,null))[_0x0012('0x29')](respondWithResult(_0x1296fd,null))[_0x0012('0x4f')](handleError(_0x1296fd,null));};exports[_0x0012('0x2a')]=function(_0x26fb2b,_0x2177a6){return db[_0x0012('0x32')][_0x0012('0x50')]({'where':{'id':_0x26fb2b['params']['id']}})[_0x0012('0x29')](handleEntityNotFound(_0x2177a6,null))[_0x0012('0x29')](removeEntity(_0x2177a6,null))[_0x0012('0x4f')](handleError(_0x2177a6,null));};exports['describe']=function(_0x2d4ee7,_0x2f451b){return db[_0x0012('0x32')][_0x0012('0x51')]()[_0x0012('0x29')](respondWithResult(_0x2f451b,null))['catch'](handleError(_0x2f451b,null));};exports[_0x0012('0x52')]=function(_0x552f02,_0x430973){var _0x42f296;return db['sequelize'][_0x0012('0x53')](function(_0x19cf31){return db[_0x0012('0x32')][_0x0012('0x52')](_0x552f02[_0x0012('0x54')],{'transaction':_0x19cf31})[_0x0012('0x29')](function(_0x4e9f7e){_0x42f296=_0x4e9f7e[_0x0012('0x2b')]({'plain':!![]});return db[_0x0012('0x55')][_0x0012('0x50')]({'where':{'id':_0x42f296[_0x0012('0x56')]},'raw':!![]})['then'](function(_0x102637){return createVoicePrefixExtensions(_0x42f296,_0x102637,_0x19cf31);});});})[_0x0012('0x29')](function(){var _0x2e79aa=_0x552f02['user'][_0x0012('0x2b')]({'plain':!![]});if(!_0x2e79aa)throw new Error(_0x0012('0x57'));if(_0x2e79aa[_0x0012('0x58')]===_0x0012('0x59')){var _0x1a48d9=_0x42f296;return db[_0x0012('0x5a')][_0x0012('0x50')]({'where':{'name':_0x0012('0x2c'),'userProfileId':_0x2e79aa[_0x0012('0x5b')]},'raw':!![]})[_0x0012('0x29')](function(_0x263634){if(_0x263634&&_0x263634['autoAssociation']===0x0){return db['UserProfileResource'][_0x0012('0x52')]({'name':_0x1a48d9[_0x0012('0x2f')],'resourceId':_0x1a48d9['id'],'type':_0x263634[_0x0012('0x2f')],'sectionId':_0x263634['id']},{})[_0x0012('0x29')](function(){return _0x42f296;});}else{return _0x42f296;}})['catch'](function(_0x248497){logger[_0x0012('0x5c')](_0x0012('0x5d'),_0x248497);throw _0x248497;});}return _0x42f296;})[_0x0012('0x29')](respondWithResult(_0x430973,null))[_0x0012('0x4f')](handleError(_0x430973,null));};function Extension(_0x130045,_0x51eae3,_0x17eaff,_0x490644){this[_0x0012('0x5e')]=_0x0012('0x5f');this[_0x0012('0x60')]=_0x130045;this[_0x0012('0x61')]=_0x17eaff;this[_0x0012('0x35')]='system';this[_0x0012('0x62')]=_0x0012('0x63');this[_0x0012('0x64')]=_0x51eae3;this[_0x0012('0x65')]=_0x490644;}function createVoicePrefixExtensions(_0x2ceed5,_0x3d32c2,_0x562d6d){return new BPromise(function(_0x4e4d52,_0x4ea93b){var _0xd7db34=new Extension(formatPrefixName(_0x2ceed5[_0x0012('0x66')]),0x1,'NoOp','Voice\x20Prefix');_0xd7db34['VoicePrefixId']=_0x2ceed5['id'];return db[_0x0012('0x55')][_0x0012('0x52')](_0xd7db34,{'transaction':_0x562d6d})[_0x0012('0x29')](function(_0x472843){var _0x1f0af9=_0x472843[_0x0012('0x2b')]({'plain':!![]});var _0x10cb5e=_[_0x0012('0x37')](addVoicePrefixExtensions(_0x2ceed5,_0x3d32c2),function(_0x2612e2){_0x2612e2[_0x0012('0x56')]=_0x1f0af9['id'];_0x2612e2['VoicePrefixId']=_0x2ceed5['id'];return _0x2612e2;});return db[_0x0012('0x55')][_0x0012('0x67')](_0x10cb5e,{'transaction':_0x562d6d})[_0x0012('0x29')](function(_0x5cfc9f){if(!_0x5cfc9f){return _0x4ea93b(_0x0012('0x68'));}else{return _0x4e4d52(_0x5cfc9f);}})[_0x0012('0x4f')](function(_0x4cba06){return _0x4ea93b(_0x4cba06);});});;});};function addVoicePrefixExtensions(_0x388466,_0x534840){var _0x2958c7=[];var _0x1661c2=formatPrefixName(_0x388466[_0x0012('0x66')]);_0x2958c7[_0x0012('0x69')](new Extension(_0x1661c2,0x2,'Set',_0x0012('0x6a')+_0x388466[_0x0012('0x2f')]));if(_0x388466[_0x0012('0x6b')]){_0x2958c7[_0x0012('0x69')](new Extension(_0x1661c2,0x3,_0x0012('0x6c'),_0x0012('0x6d')+_0x388466[_0x0012('0x6b')]));}else{_0x2958c7['push'](new Extension(_0x1661c2,0x3,'NoOp',_0x0012('0x6e')));}_0x2958c7[_0x0012('0x69')](new Extension(_0x1661c2,0x4,_0x0012('0x6f'),_0x534840[_0x0012('0x5e')]+','+_0x0012('0x70')+(0x8+_0x388466[_0x0012('0x2f')][_0x0012('0x3e')])+'}'+','+0x1));return _0x2958c7;}function formatPrefixName(_0x38cc51){var _0x548487='_';for(var _0x15b058=0x0;_0x15b058<_0x38cc51[_0x0012('0x3e')];_0x15b058++){if(_0x38cc51[_0x0012('0x71')](_0x15b058)=='-'){_0x548487+=_0x38cc51[_0x0012('0x71')](_0x15b058);}else{_0x548487+='['+_0x38cc51[_0x0012('0x71')](_0x15b058)+']';}}_0x548487+='.';return _0x548487;}exports[_0x0012('0x28')]=function(_0x496ab9,_0x4fc9b1,_0x571247){var _0x49963a=_0x496ab9['body'];_0x49963a['prefix']=_0x0012('0x72')+_0x49963a[_0x0012('0x2f')]+'-';return db['sequelize'][_0x0012('0x53')](function(_0x1c93e7){return db[_0x0012('0x32')][_0x0012('0x28')](_0x49963a,{'where':{'id':_0x49963a['id']},'transaction':_0x1c93e7})[_0x0012('0x29')](function(){return db['VoiceExtension'][_0x0012('0x2a')]({'where':{'VoicePrefixId':_0x49963a['id']},'transaction':_0x1c93e7})[_0x0012('0x29')](function(){return db[_0x0012('0x55')][_0x0012('0x50')]({'where':{'id':_0x49963a[_0x0012('0x56')]},'raw':!![]})[_0x0012('0x29')](function(_0x47e12a){return createVoicePrefixExtensions(_0x49963a,_0x47e12a,_0x1c93e7);});});});})['then'](function(){return db[_0x0012('0x32')]['findById'](_0x49963a['id']);})[_0x0012('0x29')](respondWithResult(_0x4fc9b1,null))[_0x0012('0x4f')](handleError(_0x4fc9b1,null));};exports[_0x0012('0x73')]=function(_0xdd97af,_0x521a88,_0x493a0d){return db[_0x0012('0x32')][_0x0012('0x50')]({'where':{'id':_0xdd97af[_0x0012('0x74')]['id']}})['then'](handleEntityNotFound(_0x521a88,null))[_0x0012('0x29')](function(_0x48d748){if(_0x48d748){return _0x48d748['addAgents'](_0xdd97af['body'][_0x0012('0x75')],_[_0x0012('0x76')](_0xdd97af['body'],[_0x0012('0x75'),'id'])||{})[_0x0012('0x77')](function(_0x574cf7){for(var _0x4e0a8f=0x0;_0x4e0a8f<_0xdd97af[_0x0012('0x54')]['ids'][_0x0012('0x3e')];_0x4e0a8f+=0x1){socket[_0x0012('0x78')]('userVoicePrefix:save',{'UserId':Number(_0xdd97af['body'][_0x0012('0x75')][_0x4e0a8f]),'VoicePrefixId':Number(_0xdd97af[_0x0012('0x74')]['id'])});}return _0x574cf7;});}})[_0x0012('0x29')](respondWithResult(_0x521a88,null))[_0x0012('0x4f')](handleError(_0x521a88,null));};exports['removeAgents']=function(_0x523419,_0x2852ac,_0x58d4dc){return db[_0x0012('0x32')][_0x0012('0x50')]({'where':{'id':_0x523419['params']['id']}})[_0x0012('0x29')](handleEntityNotFound(_0x2852ac,null))[_0x0012('0x29')](function(_0xd6f0ff){if(_0xd6f0ff){return _0xd6f0ff[_0x0012('0x79')](_0x523419[_0x0012('0x38')][_0x0012('0x75')])[_0x0012('0x29')](function(){if(_[_0x0012('0x7a')](_0x523419[_0x0012('0x38')][_0x0012('0x75')])){for(var _0x4a2ce1=0x0;_0x4a2ce1<_0x523419[_0x0012('0x38')]['ids']['length'];_0x4a2ce1+=0x1){socket['emit']('userVoicePrefix:remove',{'UserId':Number(_0x523419['query'][_0x0012('0x75')][_0x4a2ce1]),'VoicePrefixId':Number(_0x523419['params']['id'])});}}else{socket[_0x0012('0x78')](_0x0012('0x7b'),{'UserId':Number(_0x523419[_0x0012('0x38')]['ids']),'VoicePrefixId':Number(_0x523419[_0x0012('0x74')]['id'])});}});}})[_0x0012('0x29')](respondWithStatusCode(_0x2852ac,null))[_0x0012('0x4f')](handleError(_0x2852ac,null));};exports[_0x0012('0x7c')]=function(_0x35d36e,_0x26e6ed,_0xd6b12a){var _0x5dc5b5={};var _0x399108={};var _0x482684;var _0x526fae;return db[_0x0012('0x32')][_0x0012('0x7d')]({'where':{'id':_0x35d36e['params']['id']}})[_0x0012('0x29')](handleEntityNotFound(_0x26e6ed,null))['then'](function(_0xe913ef){if(_0xe913ef){_0x482684=_0xe913ef;_0x399108[_0x0012('0x3b')]=_[_0x0012('0x39')](db[_0x0012('0x7e')]['rawAttributes']);_0x399108[_0x0012('0x38')]=_[_0x0012('0x39')](_0x35d36e[_0x0012('0x38')]);_0x399108[_0x0012('0x45')]=_[_0x0012('0x3a')](_0x399108['model'],_0x399108[_0x0012('0x38')]);_0x5dc5b5[_0x0012('0x3c')]=_[_0x0012('0x3a')](_0x399108[_0x0012('0x3b')],qs[_0x0012('0x3d')](_0x35d36e['query'][_0x0012('0x3d')]));_0x5dc5b5['attributes']=_0x5dc5b5[_0x0012('0x3c')][_0x0012('0x3e')]?_0x5dc5b5['attributes']:_0x399108[_0x0012('0x3b')];_0x5dc5b5[_0x0012('0x42')]=qs['sort'](_0x35d36e[_0x0012('0x38')][_0x0012('0x43')]);_0x5dc5b5[_0x0012('0x44')]=qs[_0x0012('0x45')](_[_0x0012('0x46')](_0x35d36e[_0x0012('0x38')],_0x399108[_0x0012('0x45')]));if(_0x35d36e['query'][_0x0012('0x47')]){_0x5dc5b5[_0x0012('0x44')]=_[_0x0012('0x48')](_0x5dc5b5[_0x0012('0x44')],{'$or':_[_0x0012('0x37')](_0x5dc5b5[_0x0012('0x3c')],function(_0x203996){var _0x4da831={};_0x4da831[_0x203996]={'$like':'%'+_0x35d36e[_0x0012('0x38')][_0x0012('0x47')]+'%'};return _0x4da831;})});}_0x5dc5b5=_[_0x0012('0x48')]({},_0x5dc5b5,_0x35d36e[_0x0012('0x4a')]);return _0x482684[_0x0012('0x7c')](_0x5dc5b5);}})[_0x0012('0x29')](function(_0x119e75){if(_0x119e75){_0x526fae=_0x119e75['length'];if(!_0x35d36e[_0x0012('0x38')]['hasOwnProperty'](_0x0012('0x40'))){_0x5dc5b5[_0x0012('0x41')]=qs[_0x0012('0x41')](_0x35d36e[_0x0012('0x38')]['limit']);_0x5dc5b5[_0x0012('0x20')]=qs[_0x0012('0x20')](_0x35d36e[_0x0012('0x38')][_0x0012('0x20')]);}return _0x482684[_0x0012('0x7c')](_0x5dc5b5);}})[_0x0012('0x29')](function(_0x384731){if(_0x384731){return _0x384731?{'count':_0x526fae,'rows':_0x384731}:null;}})[_0x0012('0x29')](respondWithResult(_0x26e6ed,null))[_0x0012('0x4f')](handleError(_0x26e6ed,null));};exports[_0x0012('0x7f')]=function(_0x2cd7f9,_0x30739b,_0x529ad1){var _0x4de297={};var _0x493cf8={};var _0x10acaa;var _0x6b90b3;return db['VoicePrefix'][_0x0012('0x7d')]({'where':{'id':_0x2cd7f9['params']['id']}})[_0x0012('0x29')](handleEntityNotFound(_0x30739b,null))['then'](function(_0x2ecb66){if(_0x2ecb66){_0x10acaa=_0x2ecb66;_0x493cf8['model']=_['keys'](db['Team'][_0x0012('0x33')]);_0x493cf8[_0x0012('0x38')]=_['keys'](_0x2cd7f9[_0x0012('0x38')]);_0x493cf8[_0x0012('0x45')]=_[_0x0012('0x3a')](_0x493cf8['model'],_0x493cf8[_0x0012('0x38')]);_0x4de297[_0x0012('0x3c')]=_[_0x0012('0x3a')](_0x493cf8['model'],qs[_0x0012('0x3d')](_0x2cd7f9[_0x0012('0x38')][_0x0012('0x3d')]));_0x4de297[_0x0012('0x3c')]=_0x4de297['attributes'][_0x0012('0x3e')]?_0x4de297['attributes']:_0x493cf8[_0x0012('0x3b')];_0x4de297['order']=qs[_0x0012('0x43')](_0x2cd7f9[_0x0012('0x38')][_0x0012('0x43')]);_0x4de297[_0x0012('0x44')]=qs['filters'](_[_0x0012('0x46')](_0x2cd7f9[_0x0012('0x38')],_0x493cf8['filters']));if(_0x2cd7f9[_0x0012('0x38')][_0x0012('0x47')]){_0x4de297[_0x0012('0x44')]=_[_0x0012('0x48')](_0x4de297[_0x0012('0x44')],{'$or':_[_0x0012('0x37')](_0x4de297['attributes'],function(_0x49cd17){var _0x5d13c2={};_0x5d13c2[_0x49cd17]={'$like':'%'+_0x2cd7f9[_0x0012('0x38')][_0x0012('0x47')]+'%'};return _0x5d13c2;})});}_0x4de297=_[_0x0012('0x48')]({},_0x4de297,_0x2cd7f9[_0x0012('0x4a')]);return _0x10acaa[_0x0012('0x7f')](_0x4de297);}})[_0x0012('0x29')](function(_0x314645){if(_0x314645){_0x6b90b3=_0x314645[_0x0012('0x3e')];if(!_0x2cd7f9[_0x0012('0x38')][_0x0012('0x3f')](_0x0012('0x40'))){_0x4de297[_0x0012('0x41')]=qs[_0x0012('0x41')](_0x2cd7f9[_0x0012('0x38')][_0x0012('0x41')]);_0x4de297[_0x0012('0x20')]=qs['offset'](_0x2cd7f9[_0x0012('0x38')][_0x0012('0x20')]);}return _0x10acaa[_0x0012('0x7f')](_0x4de297);}})[_0x0012('0x29')](function(_0x3e8b0a){if(_0x3e8b0a){return _0x3e8b0a?{'count':_0x6b90b3,'rows':_0x3e8b0a}:null;}})[_0x0012('0x29')](respondWithResult(_0x30739b,null))[_0x0012('0x4f')](handleError(_0x30739b,null));};exports['addTeams']=function(_0x5e3240,_0x18aee3,_0x57f5a3){var _0x346739=_0x5e3240[_0x0012('0x54')][_0x0012('0x75')];var _0x270d2c;return db['Team']['findAll']({'where':{'id':_0x346739},'attributes':['id'],'include':[{'model':db[_0x0012('0x7e')],'as':_0x0012('0x80'),'attributes':['id','name',_0x0012('0x81'),'voicePause',_0x0012('0x82')],'raw':!![]}]})[_0x0012('0x29')](function(_0x22a7f8){if(_0x22a7f8){_0x270d2c=_0x22a7f8;var _0xe30fa=_[_0x0012('0x83')](_0x22a7f8,function(_0x250d30){var _0x300690=_0x250d30[_0x0012('0x2b')]({'plain':!![]});return _0x300690['Agents'];});return db[_0x0012('0x32')][_0x0012('0x50')]({'where':{'id':_0x5e3240['params']['id']}})['then'](function(_0x973452){return db[_0x0012('0x84')][_0x0012('0x53')](function(_0x26fa8a){return _0x973452[_0x0012('0x85')](_0x346739,{'transaction':_0x26fa8a})[_0x0012('0x29')](function(){return BPromise[_0x0012('0x86')](_0x270d2c,function(_0x5d3b2e){return db[_0x0012('0x87')][_0x0012('0x88')]({'TeamId':_0x5d3b2e['id'],'VoicePrefixId':_0x5e3240[_0x0012('0x74')]['id']},{'transaction':_0x26fa8a});});})[_0x0012('0x29')](function(){return BPromise['each'](_0xe30fa,function(_0x558eb3){return db['UserVoicePrefix'][_0x0012('0x89')]({'where':{'UserId':_0x558eb3['id'],'VoicePrefixId':_0x5e3240[_0x0012('0x74')]['id']},'transaction':_0x26fa8a});});})[_0x0012('0x29')](function(){_0xe30fa['forEach'](function(_0x24264b){socket[_0x0012('0x78')](_0x0012('0x8a'),{'UserId':_0x24264b['id'],'VoicePrefixId':_0x973452['id']});});});});});}})[_0x0012('0x29')](respondWithStatusCode(_0x18aee3,null))['catch'](handleError(_0x18aee3,null));};exports[_0x0012('0x8b')]=function(_0x12c6fa,_0x5b1cb3,_0x5cb8b9){return db['Team'][_0x0012('0x4d')]({'where':{'id':_0x12c6fa[_0x0012('0x38')][_0x0012('0x75')]},'attributes':['id'],'include':[{'model':db[_0x0012('0x7e')],'as':_0x0012('0x80'),'attributes':['id'],'raw':!![]}]})[_0x0012('0x29')](handleEntityNotFound(_0x5b1cb3,null))[_0x0012('0x29')](function(_0x2c186c){var _0x1c0814=_[_0x0012('0x37')](_0x2c186c,'id');var _0x1c1b75=[];var _0x272b17=[];var _0x504cba=squel['select']();_0x504cba['field']('tq.TeamId')[_0x0012('0x8c')](_0x0012('0x8d'),'tq')['join']('user_has_teams','ut',_0x0012('0x8e'))['where'](_0x0012('0x8f'),_0x12c6fa['params']['id']);for(var _0x58e8cf=0x0;_0x58e8cf<_0x2c186c[_0x0012('0x3e')];_0x58e8cf+=0x1){let _0x2c692=_0x2c186c[_0x58e8cf];for(var _0x3bad29=0x0;_0x3bad29<_0x2c692[_0x0012('0x80')]['length'];_0x3bad29+=0x1){let _0x4ccd2f=_0x2c692[_0x0012('0x80')][_0x3bad29];var _0x14b576=_0x504cba['clone']();_0x14b576[_0x0012('0x44')](_0x0012('0x90'),_0x4ccd2f['id']);_0x272b17[_0x0012('0x69')](db['sequelize'][_0x0012('0x38')](_0x14b576[_0x0012('0x91')](),{'type':db[_0x0012('0x84')][_0x0012('0x92')][_0x0012('0x93')]})['then'](function(_0x860c38){if(_0x860c38[_0x0012('0x3e')]===0x1){return _0x4ccd2f['id'];}else{var _0x316014=_['every'](_['map'](_0x860c38,_0x0012('0x94')),function(_0x50acf5){return _[_0x0012('0x95')](_0x1c0814,_0x50acf5);});if(_0x316014){return _0x4ccd2f['id'];}}}));}}return BPromise['all'](_0x272b17)[_0x0012('0x29')](function(_0x3153a3){_0x1c1b75=_(_0x1c1b75)[_0x0012('0x96')](_0x3153a3)[_0x0012('0x97')]()[_0x0012('0x98')]();return db['VoicePrefix'][_0x0012('0x50')]({'where':{'id':_0x12c6fa['params']['id']}})[_0x0012('0x29')](function(_0x343e40){return db['sequelize']['transaction'](function(_0x260d80){return _0x343e40[_0x0012('0x8b')](_0x12c6fa[_0x0012('0x38')]['ids'],{'transaction':_0x260d80})[_0x0012('0x29')](function(){if(!_[_0x0012('0x99')](_0x1c1b75)){return _0x343e40[_0x0012('0x79')](_0x1c1b75,{'transaction':_0x260d80});}})[_0x0012('0x29')](function(){_0x1c1b75['forEach'](function(_0x5d5544){socket[_0x0012('0x78')](_0x0012('0x7b'),{'UserId':_0x5d5544,'VoicePrefixId':_0x343e40['id']});});});});});});})['then'](respondWithStatusCode(_0x5b1cb3,null))[_0x0012('0x4f')](handleError(_0x5b1cb3,null));};
\ No newline at end of file
+var _0xd4f4=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','./voicePrefix.socket','register','sendStatus','end','status','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','get','VoicePrefixes','UserProfileResource','error','stack','name','send','index','rawAttributes','fieldName','type','key','map','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','offset','order','sort','where','filters','filter','merge','options','includeAll','include','VoicePrefix','rows','catch','show','keys','find','params','describe','sequelize','create','body','VoiceExtension','VoiceExtensionId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','exten','system','description','priority','prefix','NoOp','Voice\x20Prefix','bulkCreate','push','Set','CDR(prefix)=','callerIdAll','goto','${EXTEN:','length','charAt','system-','findById','addAgents','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','pick','getTeams','findAll','Agents','online','voicePause','interface','flatMap','transaction','addTeams','each','TeamVoicePrefix','upsert','UserVoicePrefix','findOrCreate','forEach','removeTeams','Team','field','tq.TeamId','from','team_has_voice_prefixes','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','TeamId','includes','union','compact','value','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x5ac349,_0x4db0c1){var _0x10deb0=function(_0x3c7cb7){while(--_0x3c7cb7){_0x5ac349['push'](_0x5ac349['shift']());}};_0x10deb0(++_0x4db0c1);}(_0xd4f4,0x8b));var _0x4d4f=function(_0x52cabf,_0x3ce48d){_0x52cabf=_0x52cabf-0x0;var _0xb7b348=_0xd4f4[_0x52cabf];return _0xb7b348;};'use strict';var emlformat=require(_0x4d4f('0x0'));var rimraf=require(_0x4d4f('0x1'));var zipdir=require(_0x4d4f('0x2'));var jsonpatch=require(_0x4d4f('0x3'));var rp=require(_0x4d4f('0x4'));var moment=require(_0x4d4f('0x5'));var BPromise=require(_0x4d4f('0x6'));var Mustache=require(_0x4d4f('0x7'));var util=require(_0x4d4f('0x8'));var path=require(_0x4d4f('0x9'));var sox=require(_0x4d4f('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4d4f('0xb'));var squel=require(_0x4d4f('0xc'));var crypto=require(_0x4d4f('0xd'));var jsforce=require(_0x4d4f('0xe'));var deskjs=require(_0x4d4f('0xf'));var toCsv=require(_0x4d4f('0x10'));var querystring=require(_0x4d4f('0x11'));var Papa=require(_0x4d4f('0x12'));var Redis=require(_0x4d4f('0x13'));var authService=require(_0x4d4f('0x14'));var qs=require(_0x4d4f('0x15'));var as=require(_0x4d4f('0x16'));var hardwareService=require(_0x4d4f('0x17'));var logger=require(_0x4d4f('0x18'))(_0x4d4f('0x19'));var utils=require(_0x4d4f('0x1a'));var config=require(_0x4d4f('0x1b'));var licenseUtil=require(_0x4d4f('0x1c'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x4d4f('0x1d')],{'host':_0x4d4f('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4d4f('0x1d')]));require(_0x4d4f('0x1f'))[_0x4d4f('0x20')](socket);function respondWithStatusCode(_0x59252c,_0x145804){_0x145804=_0x145804||0xcc;return function(_0x2e736b){if(_0x2e736b){return _0x59252c[_0x4d4f('0x21')](_0x145804);}return _0x59252c['status'](_0x145804)[_0x4d4f('0x22')]();};}function respondWithResult(_0x5e4ff5,_0x18a528){_0x18a528=_0x18a528||0xc8;return function(_0x16f8e7){if(_0x16f8e7){return _0x5e4ff5[_0x4d4f('0x23')](_0x18a528)['json'](_0x16f8e7);}};}function respondWithFilteredResult(_0x30b6b1,_0x17a437){return function(_0x51dcf1){if(_0x51dcf1){var _0x5dbbeb=typeof _0x17a437['offset']==='undefined'&&typeof _0x17a437['limit']===_0x4d4f('0x24');var _0x15100a=_0x51dcf1[_0x4d4f('0x25')];var _0x3566a5=_0x5dbbeb?0x0:_0x17a437['offset'];var _0x5b2863=_0x5dbbeb?_0x51dcf1[_0x4d4f('0x25')]:_0x17a437['offset']+_0x17a437[_0x4d4f('0x26')];var _0x1e3e9a;if(_0x5b2863>=_0x15100a){_0x5b2863=_0x15100a;_0x1e3e9a=0xc8;}else{_0x1e3e9a=0xce;}_0x30b6b1[_0x4d4f('0x23')](_0x1e3e9a);return _0x30b6b1[_0x4d4f('0x27')](_0x4d4f('0x28'),_0x3566a5+'-'+_0x5b2863+'/'+_0x15100a)['json'](_0x51dcf1);}return null;};}function patchUpdates(_0x570520){return function(_0x4043f2){try{jsonpatch['apply'](_0x4043f2,_0x570520,!![]);}catch(_0x247077){return BPromise[_0x4d4f('0x29')](_0x247077);}return _0x4043f2[_0x4d4f('0x2a')]();};}function saveUpdates(_0x3f4a55,_0xf3f7a4){return function(_0x497cec){if(_0x497cec){return _0x497cec[_0x4d4f('0x2b')](_0x3f4a55)[_0x4d4f('0x2c')](function(_0x1cf365){return _0x1cf365;});}return null;};}function removeEntity(_0x28443b,_0x5cf9e7){return function(_0x51a7c5){if(_0x51a7c5){return _0x51a7c5[_0x4d4f('0x2d')]()[_0x4d4f('0x2c')](function(){var _0xa2492c=_0x51a7c5[_0x4d4f('0x2e')]({'plain':!![]});var _0x58acbe=_0x4d4f('0x2f');return db[_0x4d4f('0x30')][_0x4d4f('0x2d')]({'where':{'type':_0x58acbe,'resourceId':_0xa2492c['id']}})[_0x4d4f('0x2c')](function(){return _0x51a7c5;});})['then'](function(){_0x28443b[_0x4d4f('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1688bb,_0x333a40){return function(_0x550040){if(!_0x550040){_0x1688bb[_0x4d4f('0x21')](0x194);}return _0x550040;};}function handleError(_0x123383,_0x287a09){_0x287a09=_0x287a09||0x1f4;return function(_0x3d7f14){logger[_0x4d4f('0x31')](_0x3d7f14[_0x4d4f('0x32')]);if(_0x3d7f14['name']){delete _0x3d7f14[_0x4d4f('0x33')];}_0x123383[_0x4d4f('0x23')](_0x287a09)[_0x4d4f('0x34')](_0x3d7f14);};}exports[_0x4d4f('0x35')]=function(_0x104104,_0x4e47e5){var _0x2d6565={},_0x486e33={},_0x35f9e2={'count':0x0,'rows':[]};var _0x537a47=_['map'](db['VoicePrefix'][_0x4d4f('0x36')],function(_0x57fc2b){return{'name':_0x57fc2b[_0x4d4f('0x37')],'type':_0x57fc2b[_0x4d4f('0x38')][_0x4d4f('0x39')]};});_0x486e33['model']=_[_0x4d4f('0x3a')](_0x537a47,_0x4d4f('0x33'));_0x486e33[_0x4d4f('0x3b')]=_['keys'](_0x104104[_0x4d4f('0x3b')]);_0x486e33['filters']=_[_0x4d4f('0x3c')](_0x486e33[_0x4d4f('0x3d')],_0x486e33[_0x4d4f('0x3b')]);_0x2d6565[_0x4d4f('0x3e')]=_[_0x4d4f('0x3c')](_0x486e33[_0x4d4f('0x3d')],qs[_0x4d4f('0x3f')](_0x104104[_0x4d4f('0x3b')]['fields']));_0x2d6565['attributes']=_0x2d6565[_0x4d4f('0x3e')]['length']?_0x2d6565['attributes']:_0x486e33[_0x4d4f('0x3d')];if(!_0x104104[_0x4d4f('0x3b')][_0x4d4f('0x40')](_0x4d4f('0x41'))){_0x2d6565[_0x4d4f('0x26')]=qs['limit'](_0x104104[_0x4d4f('0x3b')][_0x4d4f('0x26')]);_0x2d6565['offset']=qs[_0x4d4f('0x42')](_0x104104[_0x4d4f('0x3b')][_0x4d4f('0x42')]);}_0x2d6565[_0x4d4f('0x43')]=qs[_0x4d4f('0x44')](_0x104104[_0x4d4f('0x3b')][_0x4d4f('0x44')]);_0x2d6565[_0x4d4f('0x45')]=qs[_0x4d4f('0x46')](_['pick'](_0x104104['query'],_0x486e33[_0x4d4f('0x46')]),_0x537a47);if(_0x104104[_0x4d4f('0x3b')][_0x4d4f('0x47')]){_0x2d6565[_0x4d4f('0x45')]=_['merge'](_0x2d6565['where'],{'$or':_[_0x4d4f('0x3a')](_0x537a47,function(_0x3c34bd){if(_0x3c34bd['type']!=='VIRTUAL'){var _0x3591b7={};_0x3591b7[_0x3c34bd[_0x4d4f('0x33')]]={'$like':'%'+_0x104104['query'][_0x4d4f('0x47')]+'%'};return _0x3591b7;}})});}_0x2d6565=_[_0x4d4f('0x48')]({},_0x2d6565,_0x104104[_0x4d4f('0x49')]);var _0x32c6ff={'where':_0x2d6565[_0x4d4f('0x45')]};return db['VoicePrefix'][_0x4d4f('0x25')](_0x32c6ff)['then'](function(_0x45a0c1){_0x35f9e2[_0x4d4f('0x25')]=_0x45a0c1;if(_0x104104['query'][_0x4d4f('0x4a')]){_0x2d6565[_0x4d4f('0x4b')]=[{'all':!![]}];}return db[_0x4d4f('0x4c')]['findAll'](_0x2d6565);})[_0x4d4f('0x2c')](function(_0x48caa2){_0x35f9e2[_0x4d4f('0x4d')]=_0x48caa2;return _0x35f9e2;})['then'](respondWithFilteredResult(_0x4e47e5,_0x2d6565))[_0x4d4f('0x4e')](handleError(_0x4e47e5,null));};exports[_0x4d4f('0x4f')]=function(_0x231134,_0x2939cb){var _0x198c3a={'raw':![],'where':{'id':_0x231134['params']['id']}},_0x4a53e4={};_0x4a53e4[_0x4d4f('0x3d')]=_[_0x4d4f('0x50')](db[_0x4d4f('0x4c')][_0x4d4f('0x36')]);_0x4a53e4['query']=_['keys'](_0x231134['query']);_0x4a53e4[_0x4d4f('0x46')]=_[_0x4d4f('0x3c')](_0x4a53e4[_0x4d4f('0x3d')],_0x4a53e4[_0x4d4f('0x3b')]);_0x198c3a[_0x4d4f('0x3e')]=_[_0x4d4f('0x3c')](_0x4a53e4[_0x4d4f('0x3d')],qs[_0x4d4f('0x3f')](_0x231134[_0x4d4f('0x3b')][_0x4d4f('0x3f')]));_0x198c3a[_0x4d4f('0x3e')]=_0x198c3a[_0x4d4f('0x3e')]['length']?_0x198c3a[_0x4d4f('0x3e')]:_0x4a53e4[_0x4d4f('0x3d')];if(_0x231134['query'][_0x4d4f('0x4a')]){_0x198c3a['include']=[{'all':!![]}];}_0x198c3a=_[_0x4d4f('0x48')]({},_0x198c3a,_0x231134[_0x4d4f('0x49')]);return db['VoicePrefix'][_0x4d4f('0x51')](_0x198c3a)[_0x4d4f('0x2c')](handleEntityNotFound(_0x2939cb,null))[_0x4d4f('0x2c')](respondWithResult(_0x2939cb,null))[_0x4d4f('0x4e')](handleError(_0x2939cb,null));};exports[_0x4d4f('0x2d')]=function(_0x3eae74,_0x11a63e){return db[_0x4d4f('0x4c')][_0x4d4f('0x51')]({'where':{'id':_0x3eae74[_0x4d4f('0x52')]['id']}})[_0x4d4f('0x2c')](handleEntityNotFound(_0x11a63e,null))[_0x4d4f('0x2c')](removeEntity(_0x11a63e,null))['catch'](handleError(_0x11a63e,null));};exports[_0x4d4f('0x53')]=function(_0x539088,_0x59d245){return db['VoicePrefix'][_0x4d4f('0x53')]()[_0x4d4f('0x2c')](respondWithResult(_0x59d245,null))['catch'](handleError(_0x59d245,null));};exports['create']=function(_0x2a3bc4,_0x4c80c4){var _0x5adc7b;return db[_0x4d4f('0x54')]['transaction'](function(_0x17b59e){return db[_0x4d4f('0x4c')][_0x4d4f('0x55')](_0x2a3bc4[_0x4d4f('0x56')],{'transaction':_0x17b59e})['then'](function(_0x224b83){_0x5adc7b=_0x224b83[_0x4d4f('0x2e')]({'plain':!![]});return db[_0x4d4f('0x57')][_0x4d4f('0x51')]({'where':{'id':_0x5adc7b[_0x4d4f('0x58')]},'raw':!![]})['then'](function(_0x10f94e){return createVoicePrefixExtensions(_0x5adc7b,_0x10f94e,_0x17b59e);});});})['then'](function(){var _0x32cba6=_0x2a3bc4['user'][_0x4d4f('0x2e')]({'plain':!![]});if(!_0x32cba6)throw new Error(_0x4d4f('0x59'));if(_0x32cba6['role']===_0x4d4f('0x5a')){var _0x1d8ae6=_0x5adc7b;return db['UserProfileSection'][_0x4d4f('0x51')]({'where':{'name':'VoicePrefixes','userProfileId':_0x32cba6[_0x4d4f('0x5b')]},'raw':!![]})['then'](function(_0x48ad06){if(_0x48ad06&&_0x48ad06[_0x4d4f('0x5c')]===0x0){return db[_0x4d4f('0x30')][_0x4d4f('0x55')]({'name':_0x1d8ae6[_0x4d4f('0x33')],'resourceId':_0x1d8ae6['id'],'type':_0x48ad06[_0x4d4f('0x33')],'sectionId':_0x48ad06['id']},{})['then'](function(){return _0x5adc7b;});}else{return _0x5adc7b;}})['catch'](function(_0xeaccdd){logger['error'](_0x4d4f('0x5d'),_0xeaccdd);throw _0xeaccdd;});}return _0x5adc7b;})[_0x4d4f('0x2c')](respondWithResult(_0x4c80c4,null))[_0x4d4f('0x4e')](handleError(_0x4c80c4,null));};function Extension(_0x4585b5,_0x31aba3,_0x39ae15,_0x585764){this[_0x4d4f('0x5e')]=_0x4d4f('0x5f');this[_0x4d4f('0x60')]=_0x4585b5;this['app']=_0x39ae15;this[_0x4d4f('0x38')]=_0x4d4f('0x61');this[_0x4d4f('0x62')]='Voice\x20Prefix\x20Extension';this[_0x4d4f('0x63')]=_0x31aba3;this['appdata']=_0x585764;}function createVoicePrefixExtensions(_0xcdab8b,_0x2145ca,_0x1fe5ca){return new BPromise(function(_0xe8d3e2,_0x1edb3d){var _0x2e55f5=new Extension(formatPrefixName(_0xcdab8b[_0x4d4f('0x64')]),0x1,_0x4d4f('0x65'),_0x4d4f('0x66'));_0x2e55f5['VoicePrefixId']=_0xcdab8b['id'];return db[_0x4d4f('0x57')][_0x4d4f('0x55')](_0x2e55f5,{'transaction':_0x1fe5ca})['then'](function(_0x1bd4b1){var _0x2a3738=_0x1bd4b1[_0x4d4f('0x2e')]({'plain':!![]});var _0xae8fe=_['map'](addVoicePrefixExtensions(_0xcdab8b,_0x2145ca),function(_0x4013a9){_0x4013a9[_0x4d4f('0x58')]=_0x2a3738['id'];_0x4013a9['VoicePrefixId']=_0xcdab8b['id'];return _0x4013a9;});return db['VoiceExtension'][_0x4d4f('0x67')](_0xae8fe,{'transaction':_0x1fe5ca})[_0x4d4f('0x2c')](function(_0x53b2db){if(!_0x53b2db){return _0x1edb3d('Extensions\x20creation\x20failed');}else{return _0xe8d3e2(_0x53b2db);}})['catch'](function(_0x4752bd){return _0x1edb3d(_0x4752bd);});});;});};function addVoicePrefixExtensions(_0x351fb5,_0x5e0ead){var _0x347bb1=[];var _0xc596ea=formatPrefixName(_0x351fb5[_0x4d4f('0x64')]);_0x347bb1[_0x4d4f('0x68')](new Extension(_0xc596ea,0x2,_0x4d4f('0x69'),_0x4d4f('0x6a')+_0x351fb5[_0x4d4f('0x33')]));if(_0x351fb5[_0x4d4f('0x6b')]){_0x347bb1['push'](new Extension(_0xc596ea,0x3,_0x4d4f('0x69'),'PREFIX-CALLERIDALL='+_0x351fb5[_0x4d4f('0x6b')]));}else{_0x347bb1[_0x4d4f('0x68')](new Extension(_0xc596ea,0x3,_0x4d4f('0x65'),'No\x20callerid\x20available'));}_0x347bb1[_0x4d4f('0x68')](new Extension(_0xc596ea,0x4,_0x4d4f('0x6c'),_0x5e0ead[_0x4d4f('0x5e')]+','+_0x4d4f('0x6d')+(0x8+_0x351fb5['name'][_0x4d4f('0x6e')])+'}'+','+0x1));return _0x347bb1;}function formatPrefixName(_0x4bf7bd){var _0x268b34='_';for(var _0x50d0da=0x0;_0x50d0da<_0x4bf7bd['length'];_0x50d0da++){if(_0x4bf7bd[_0x4d4f('0x6f')](_0x50d0da)=='-'){_0x268b34+=_0x4bf7bd[_0x4d4f('0x6f')](_0x50d0da);}else{_0x268b34+='['+_0x4bf7bd['charAt'](_0x50d0da)+']';}}_0x268b34+='.';return _0x268b34;}exports[_0x4d4f('0x2b')]=function(_0x53a18b,_0x41ffe7,_0x4420f0){var _0x111c01=_0x53a18b[_0x4d4f('0x56')];_0x111c01['prefix']=_0x4d4f('0x70')+_0x111c01[_0x4d4f('0x33')]+'-';return db[_0x4d4f('0x54')]['transaction'](function(_0x781877){return db[_0x4d4f('0x4c')][_0x4d4f('0x2b')](_0x111c01,{'where':{'id':_0x111c01['id']},'transaction':_0x781877})[_0x4d4f('0x2c')](function(){return db[_0x4d4f('0x57')][_0x4d4f('0x2d')]({'where':{'VoicePrefixId':_0x111c01['id']},'transaction':_0x781877})['then'](function(){return db['VoiceExtension'][_0x4d4f('0x51')]({'where':{'id':_0x111c01[_0x4d4f('0x58')]},'raw':!![]})['then'](function(_0x26ed6f){return createVoicePrefixExtensions(_0x111c01,_0x26ed6f,_0x781877);});});});})[_0x4d4f('0x2c')](function(){return db[_0x4d4f('0x4c')][_0x4d4f('0x71')](_0x111c01['id']);})[_0x4d4f('0x2c')](respondWithResult(_0x41ffe7,null))[_0x4d4f('0x4e')](handleError(_0x41ffe7,null));};exports[_0x4d4f('0x72')]=function(_0x1c764b,_0x302cde,_0x44f0c2){return db[_0x4d4f('0x4c')][_0x4d4f('0x51')]({'where':{'id':_0x1c764b[_0x4d4f('0x52')]['id']}})[_0x4d4f('0x2c')](handleEntityNotFound(_0x302cde,null))[_0x4d4f('0x2c')](function(_0x518252){if(_0x518252){return _0x518252[_0x4d4f('0x72')](_0x1c764b[_0x4d4f('0x56')][_0x4d4f('0x73')],_[_0x4d4f('0x74')](_0x1c764b['body'],['ids','id'])||{})[_0x4d4f('0x75')](function(_0x3c8a64){for(var _0x4736db=0x0;_0x4736db<_0x1c764b[_0x4d4f('0x56')][_0x4d4f('0x73')][_0x4d4f('0x6e')];_0x4736db+=0x1){socket[_0x4d4f('0x76')](_0x4d4f('0x77'),{'UserId':Number(_0x1c764b[_0x4d4f('0x56')][_0x4d4f('0x73')][_0x4736db]),'VoicePrefixId':Number(_0x1c764b['params']['id'])});}return _0x3c8a64;});}})[_0x4d4f('0x2c')](respondWithResult(_0x302cde,null))[_0x4d4f('0x4e')](handleError(_0x302cde,null));};exports[_0x4d4f('0x78')]=function(_0x2c8c79,_0x584c53,_0x5240be){return db['VoicePrefix'][_0x4d4f('0x51')]({'where':{'id':_0x2c8c79['params']['id']}})[_0x4d4f('0x2c')](handleEntityNotFound(_0x584c53,null))[_0x4d4f('0x2c')](function(_0xa63721){if(_0xa63721){return _0xa63721[_0x4d4f('0x78')](_0x2c8c79[_0x4d4f('0x3b')][_0x4d4f('0x73')])[_0x4d4f('0x2c')](function(){if(_[_0x4d4f('0x79')](_0x2c8c79['query']['ids'])){for(var _0x42c66c=0x0;_0x42c66c<_0x2c8c79['query'][_0x4d4f('0x73')][_0x4d4f('0x6e')];_0x42c66c+=0x1){socket[_0x4d4f('0x76')]('userVoicePrefix:remove',{'UserId':Number(_0x2c8c79['query']['ids'][_0x42c66c]),'VoicePrefixId':Number(_0x2c8c79[_0x4d4f('0x52')]['id'])});}}else{socket['emit'](_0x4d4f('0x7a'),{'UserId':Number(_0x2c8c79['query'][_0x4d4f('0x73')]),'VoicePrefixId':Number(_0x2c8c79[_0x4d4f('0x52')]['id'])});}});}})[_0x4d4f('0x2c')](respondWithStatusCode(_0x584c53,null))[_0x4d4f('0x4e')](handleError(_0x584c53,null));};exports[_0x4d4f('0x7b')]=function(_0x1670fd,_0x548709,_0x18274e){var _0x3beacf={};var _0x4691b7={};var _0x1f62e0;var _0x328528;return db['VoicePrefix'][_0x4d4f('0x7c')]({'where':{'id':_0x1670fd['params']['id']}})[_0x4d4f('0x2c')](handleEntityNotFound(_0x548709,null))[_0x4d4f('0x2c')](function(_0x2511c8){if(_0x2511c8){_0x1f62e0=_0x2511c8;_0x4691b7[_0x4d4f('0x3d')]=_[_0x4d4f('0x50')](db[_0x4d4f('0x7d')][_0x4d4f('0x36')]);_0x4691b7['query']=_[_0x4d4f('0x50')](_0x1670fd[_0x4d4f('0x3b')]);_0x4691b7[_0x4d4f('0x46')]=_['intersection'](_0x4691b7[_0x4d4f('0x3d')],_0x4691b7['query']);_0x3beacf[_0x4d4f('0x3e')]=_['intersection'](_0x4691b7[_0x4d4f('0x3d')],qs[_0x4d4f('0x3f')](_0x1670fd[_0x4d4f('0x3b')]['fields']));_0x3beacf[_0x4d4f('0x3e')]=_0x3beacf[_0x4d4f('0x3e')][_0x4d4f('0x6e')]?_0x3beacf[_0x4d4f('0x3e')]:_0x4691b7['model'];_0x3beacf[_0x4d4f('0x43')]=qs[_0x4d4f('0x44')](_0x1670fd['query'][_0x4d4f('0x44')]);_0x3beacf[_0x4d4f('0x45')]=qs[_0x4d4f('0x46')](_[_0x4d4f('0x7e')](_0x1670fd[_0x4d4f('0x3b')],_0x4691b7[_0x4d4f('0x46')]));if(_0x1670fd['query'][_0x4d4f('0x47')]){_0x3beacf[_0x4d4f('0x45')]=_['merge'](_0x3beacf[_0x4d4f('0x45')],{'$or':_[_0x4d4f('0x3a')](_0x3beacf[_0x4d4f('0x3e')],function(_0x4686b9){var _0x16d1f7={};_0x16d1f7[_0x4686b9]={'$like':'%'+_0x1670fd[_0x4d4f('0x3b')][_0x4d4f('0x47')]+'%'};return _0x16d1f7;})});}_0x3beacf=_[_0x4d4f('0x48')]({},_0x3beacf,_0x1670fd['options']);return _0x1f62e0[_0x4d4f('0x7b')](_0x3beacf);}})[_0x4d4f('0x2c')](function(_0x4dd3f6){if(_0x4dd3f6){_0x328528=_0x4dd3f6[_0x4d4f('0x6e')];if(!_0x1670fd['query'][_0x4d4f('0x40')]('nolimit')){_0x3beacf[_0x4d4f('0x26')]=qs[_0x4d4f('0x26')](_0x1670fd[_0x4d4f('0x3b')][_0x4d4f('0x26')]);_0x3beacf[_0x4d4f('0x42')]=qs[_0x4d4f('0x42')](_0x1670fd[_0x4d4f('0x3b')][_0x4d4f('0x42')]);}return _0x1f62e0[_0x4d4f('0x7b')](_0x3beacf);}})[_0x4d4f('0x2c')](function(_0x10f882){if(_0x10f882){return _0x10f882?{'count':_0x328528,'rows':_0x10f882}:null;}})[_0x4d4f('0x2c')](respondWithResult(_0x548709,null))['catch'](handleError(_0x548709,null));};exports['getTeams']=function(_0x41c81d,_0x5d6abf,_0x2208d8){var _0x2b096e={};var _0x4e6da6={};var _0x53817f;var _0x10955f;return db[_0x4d4f('0x4c')][_0x4d4f('0x7c')]({'where':{'id':_0x41c81d['params']['id']}})['then'](handleEntityNotFound(_0x5d6abf,null))[_0x4d4f('0x2c')](function(_0x274ff2){if(_0x274ff2){_0x53817f=_0x274ff2;_0x4e6da6[_0x4d4f('0x3d')]=_[_0x4d4f('0x50')](db['Team'][_0x4d4f('0x36')]);_0x4e6da6[_0x4d4f('0x3b')]=_[_0x4d4f('0x50')](_0x41c81d['query']);_0x4e6da6['filters']=_[_0x4d4f('0x3c')](_0x4e6da6[_0x4d4f('0x3d')],_0x4e6da6[_0x4d4f('0x3b')]);_0x2b096e[_0x4d4f('0x3e')]=_[_0x4d4f('0x3c')](_0x4e6da6['model'],qs[_0x4d4f('0x3f')](_0x41c81d[_0x4d4f('0x3b')][_0x4d4f('0x3f')]));_0x2b096e['attributes']=_0x2b096e[_0x4d4f('0x3e')]['length']?_0x2b096e[_0x4d4f('0x3e')]:_0x4e6da6[_0x4d4f('0x3d')];_0x2b096e[_0x4d4f('0x43')]=qs[_0x4d4f('0x44')](_0x41c81d[_0x4d4f('0x3b')]['sort']);_0x2b096e[_0x4d4f('0x45')]=qs[_0x4d4f('0x46')](_[_0x4d4f('0x7e')](_0x41c81d[_0x4d4f('0x3b')],_0x4e6da6['filters']));if(_0x41c81d[_0x4d4f('0x3b')]['filter']){_0x2b096e['where']=_[_0x4d4f('0x48')](_0x2b096e[_0x4d4f('0x45')],{'$or':_['map'](_0x2b096e[_0x4d4f('0x3e')],function(_0x50b0a3){var _0x1177a3={};_0x1177a3[_0x50b0a3]={'$like':'%'+_0x41c81d[_0x4d4f('0x3b')][_0x4d4f('0x47')]+'%'};return _0x1177a3;})});}_0x2b096e=_[_0x4d4f('0x48')]({},_0x2b096e,_0x41c81d[_0x4d4f('0x49')]);return _0x53817f[_0x4d4f('0x7f')](_0x2b096e);}})[_0x4d4f('0x2c')](function(_0x3fe348){if(_0x3fe348){_0x10955f=_0x3fe348['length'];if(!_0x41c81d[_0x4d4f('0x3b')][_0x4d4f('0x40')]('nolimit')){_0x2b096e[_0x4d4f('0x26')]=qs['limit'](_0x41c81d[_0x4d4f('0x3b')][_0x4d4f('0x26')]);_0x2b096e[_0x4d4f('0x42')]=qs['offset'](_0x41c81d['query']['offset']);}return _0x53817f[_0x4d4f('0x7f')](_0x2b096e);}})['then'](function(_0xb5d71b){if(_0xb5d71b){return _0xb5d71b?{'count':_0x10955f,'rows':_0xb5d71b}:null;}})[_0x4d4f('0x2c')](respondWithResult(_0x5d6abf,null))[_0x4d4f('0x4e')](handleError(_0x5d6abf,null));};exports['addTeams']=function(_0x5b6061,_0x230ff0,_0x28ae80){var _0x42be25=_0x5b6061[_0x4d4f('0x56')][_0x4d4f('0x73')];var _0x13279e;return db['Team'][_0x4d4f('0x80')]({'where':{'id':_0x42be25},'attributes':['id'],'include':[{'model':db[_0x4d4f('0x7d')],'as':_0x4d4f('0x81'),'attributes':['id',_0x4d4f('0x33'),_0x4d4f('0x82'),_0x4d4f('0x83'),_0x4d4f('0x84')],'raw':!![]}]})[_0x4d4f('0x2c')](function(_0x1a1e6f){if(_0x1a1e6f){_0x13279e=_0x1a1e6f;var _0x152400=_[_0x4d4f('0x85')](_0x1a1e6f,function(_0x3c6f1b){var _0x25e63c=_0x3c6f1b[_0x4d4f('0x2e')]({'plain':!![]});return _0x25e63c['Agents'];});return db[_0x4d4f('0x4c')][_0x4d4f('0x51')]({'where':{'id':_0x5b6061[_0x4d4f('0x52')]['id']}})[_0x4d4f('0x2c')](function(_0xc01ac4){return db[_0x4d4f('0x54')][_0x4d4f('0x86')](function(_0x472938){return _0xc01ac4[_0x4d4f('0x87')](_0x42be25,{'transaction':_0x472938})['then'](function(){return BPromise[_0x4d4f('0x88')](_0x13279e,function(_0x72d583){return db[_0x4d4f('0x89')][_0x4d4f('0x8a')]({'TeamId':_0x72d583['id'],'VoicePrefixId':_0x5b6061[_0x4d4f('0x52')]['id']},{'transaction':_0x472938});});})[_0x4d4f('0x2c')](function(){return BPromise[_0x4d4f('0x88')](_0x152400,function(_0x28fd35){return db[_0x4d4f('0x8b')][_0x4d4f('0x8c')]({'where':{'UserId':_0x28fd35['id'],'VoicePrefixId':_0x5b6061['params']['id']},'transaction':_0x472938});});})['then'](function(){_0x152400[_0x4d4f('0x8d')](function(_0x8850a4){socket['emit'](_0x4d4f('0x77'),{'UserId':_0x8850a4['id'],'VoicePrefixId':_0xc01ac4['id']});});});});});}})[_0x4d4f('0x2c')](respondWithStatusCode(_0x230ff0,null))[_0x4d4f('0x4e')](handleError(_0x230ff0,null));};exports[_0x4d4f('0x8e')]=function(_0x15028c,_0x1659f6,_0x77dac1){return db[_0x4d4f('0x8f')][_0x4d4f('0x80')]({'where':{'id':_0x15028c[_0x4d4f('0x3b')][_0x4d4f('0x73')]},'attributes':['id'],'include':[{'model':db[_0x4d4f('0x7d')],'as':_0x4d4f('0x81'),'attributes':['id'],'raw':!![]}]})[_0x4d4f('0x2c')](handleEntityNotFound(_0x1659f6,null))['then'](function(_0x342b63){var _0x524ed0=_[_0x4d4f('0x3a')](_0x342b63,'id');var _0x3fd499=[];var _0x17a39f=[];var _0x27b4d6=squel['select']();_0x27b4d6[_0x4d4f('0x90')](_0x4d4f('0x91'))[_0x4d4f('0x92')](_0x4d4f('0x93'),'tq')[_0x4d4f('0x94')](_0x4d4f('0x95'),'ut',_0x4d4f('0x96'))['where'](_0x4d4f('0x97'),_0x15028c[_0x4d4f('0x52')]['id']);for(var _0x2f4bad=0x0;_0x2f4bad<_0x342b63[_0x4d4f('0x6e')];_0x2f4bad+=0x1){let _0x4501b5=_0x342b63[_0x2f4bad];for(var _0x12eda1=0x0;_0x12eda1<_0x4501b5['Agents']['length'];_0x12eda1+=0x1){let _0x11ee76=_0x4501b5['Agents'][_0x12eda1];var _0x2ea6b4=_0x27b4d6[_0x4d4f('0x98')]();_0x2ea6b4['where'](_0x4d4f('0x99'),_0x11ee76['id']);_0x17a39f[_0x4d4f('0x68')](db[_0x4d4f('0x54')][_0x4d4f('0x3b')](_0x2ea6b4[_0x4d4f('0x9a')](),{'type':db[_0x4d4f('0x54')][_0x4d4f('0x9b')]['SELECT']})[_0x4d4f('0x2c')](function(_0x5d05cb){if(_0x5d05cb[_0x4d4f('0x6e')]===0x1){return _0x11ee76['id'];}else{var _0x2d1337=_['every'](_['map'](_0x5d05cb,_0x4d4f('0x9c')),function(_0x17894c){return _[_0x4d4f('0x9d')](_0x524ed0,_0x17894c);});if(_0x2d1337){return _0x11ee76['id'];}}}));}}return BPromise['all'](_0x17a39f)[_0x4d4f('0x2c')](function(_0x118642){_0x3fd499=_(_0x3fd499)[_0x4d4f('0x9e')](_0x118642)[_0x4d4f('0x9f')]()[_0x4d4f('0xa0')]();return db[_0x4d4f('0x4c')][_0x4d4f('0x51')]({'where':{'id':_0x15028c[_0x4d4f('0x52')]['id']}})[_0x4d4f('0x2c')](function(_0x51e70f){return db[_0x4d4f('0x54')][_0x4d4f('0x86')](function(_0x23485f){return _0x51e70f[_0x4d4f('0x8e')](_0x15028c['query'][_0x4d4f('0x73')],{'transaction':_0x23485f})['then'](function(){if(!_['isEmpty'](_0x3fd499)){return _0x51e70f[_0x4d4f('0x78')](_0x3fd499,{'transaction':_0x23485f});}})[_0x4d4f('0x2c')](function(){_0x3fd499[_0x4d4f('0x8d')](function(_0x3de9b3){socket[_0x4d4f('0x76')](_0x4d4f('0x7a'),{'UserId':_0x3de9b3,'VoicePrefixId':_0x51e70f['id']});});});});});});})[_0x4d4f('0x2c')](respondWithStatusCode(_0x1659f6,null))[_0x4d4f('0x4e')](handleError(_0x1659f6,null));};
\ No newline at end of file
index ac27f03..45a0c7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x358f=['emit','VoicePrefix','save','update','remove'];(function(_0xffb2d5,_0x331aca){var _0x22e83a=function(_0x5d42c2){while(--_0x5d42c2){_0xffb2d5['push'](_0xffb2d5['shift']());}};_0x22e83a(++_0x331aca);}(_0x358f,0x12d));var _0xf358=function(_0x29bb17,_0x3e4210){_0x29bb17=_0x29bb17-0x0;var _0x32c8b2=_0x358f[_0x29bb17];return _0x32c8b2;};'use strict';var EventEmitter=require('events');var VoicePrefix=require('../../mysqldb')['db'][_0xf358('0x0')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf358('0x1'),'afterUpdate':_0xf358('0x2'),'afterDestroy':_0xf358('0x3')};function emitEvent(_0xd59b68){return function(_0x5b96d1,_0x2a6753,_0x1afe01){VoicePrefixEvents[_0xf358('0x4')](_0xd59b68+':'+_0x5b96d1['id'],_0x5b96d1);VoicePrefixEvents[_0xf358('0x4')](_0xd59b68,_0x5b96d1);_0x1afe01(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module['exports']=VoicePrefixEvents;
\ No newline at end of file
+var _0xc2b6=['hook','events','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x155882,_0x240858){var _0x5aaf42=function(_0x11f7f1){while(--_0x11f7f1){_0x155882['push'](_0x155882['shift']());}};_0x5aaf42(++_0x240858);}(_0xc2b6,0x141));var _0x6c2b=function(_0x2e04ef,_0x31a596){_0x2e04ef=_0x2e04ef-0x0;var _0x5722b0=_0xc2b6[_0x2e04ef];return _0x5722b0;};'use strict';var EventEmitter=require(_0x6c2b('0x0'));var VoicePrefix=require('../../mysqldb')['db']['VoicePrefix'];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x6c2b('0x1')](0x0);var events={'afterCreate':_0x6c2b('0x2'),'afterUpdate':_0x6c2b('0x3'),'afterDestroy':_0x6c2b('0x4')};function emitEvent(_0x386c44){return function(_0x32cb9d,_0x13329a,_0x576b9c){VoicePrefixEvents[_0x6c2b('0x5')](_0x386c44+':'+_0x32cb9d['id'],_0x32cb9d);VoicePrefixEvents['emit'](_0x386c44,_0x32cb9d);_0x576b9c(null);};}for(var e in events){if(events[_0x6c2b('0x6')](e)){var event=events[e];VoicePrefix[_0x6c2b('0x7')](e,emitEvent(event));}}module['exports']=VoicePrefixEvents;
\ No newline at end of file
index cb94326..3851d70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0e4=['rimraf','./voicePrefix.attributes','exports','define','VoicePrefix','voice_prefixes','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa0e4,0xca));var _0x4a0e=function(_0x26bd8e,_0x2a9fdf){_0x26bd8e=_0x26bd8e-0x0;var _0x3a659d=_0xa0e4[_0x26bd8e];return _0x3a659d;};'use strict';var _=require(_0x4a0e('0x0'));var util=require(_0x4a0e('0x1'));var logger=require(_0x4a0e('0x2'))(_0x4a0e('0x3'));var moment=require(_0x4a0e('0x4'));var BPromise=require(_0x4a0e('0x5'));var rp=require(_0x4a0e('0x6'));var fs=require('fs');var path=require(_0x4a0e('0x7'));var rimraf=require(_0x4a0e('0x8'));var config=require('../../config/environment');var attributes=require(_0x4a0e('0x9'));module[_0x4a0e('0xa')]=function(_0x402849,_0x13af2e){return _0x402849[_0x4a0e('0xb')](_0x4a0e('0xc'),attributes,{'tableName':_0x4a0e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xacc4=['api','moment','bluebird','request-promise','path','rimraf','./voicePrefix.attributes','exports','define','VoicePrefix','voice_prefixes','lodash','../../config/logger'];(function(_0x45ecc9,_0x499141){var _0x485584=function(_0x1b57b1){while(--_0x1b57b1){_0x45ecc9['push'](_0x45ecc9['shift']());}};_0x485584(++_0x499141);}(_0xacc4,0x150));var _0x4acc=function(_0x2adbeb,_0x5581be){_0x2adbeb=_0x2adbeb-0x0;var _0x5e18a6=_0xacc4[_0x2adbeb];return _0x5e18a6;};'use strict';var _=require(_0x4acc('0x0'));var util=require('util');var logger=require(_0x4acc('0x1'))(_0x4acc('0x2'));var moment=require(_0x4acc('0x3'));var BPromise=require(_0x4acc('0x4'));var rp=require(_0x4acc('0x5'));var fs=require('fs');var path=require(_0x4acc('0x6'));var rimraf=require(_0x4acc('0x7'));var config=require('../../config/environment');var attributes=require(_0x4acc('0x8'));module[_0x4acc('0x9')]=function(_0x2b5320,_0x120927){return _0x2b5320[_0x4acc('0xa')](_0x4acc('0xb'),attributes,{'tableName':_0x4acc('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0ed4bbc..89d3cf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87f1=['defaults','redis','localhost','socket.io-emitter','./voicePrefix.socket','request','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http'];(function(_0x4e9327,_0x27a85e){var _0xb22635=function(_0x572dfc){while(--_0x572dfc){_0x4e9327['push'](_0x4e9327['shift']());}};_0xb22635(++_0x27a85e);}(_0x87f1,0x170));var _0x187f=function(_0x1072c3,_0x119dbf){_0x1072c3=_0x1072c3-0x0;var _0x56f5aa=_0x87f1[_0x1072c3];return _0x56f5aa;};'use strict';var _=require('lodash');var util=require(_0x187f('0x0'));var moment=require(_0x187f('0x1'));var BPromise=require(_0x187f('0x2'));var rs=require(_0x187f('0x3'));var fs=require('fs');var Redis=require(_0x187f('0x4'));var db=require(_0x187f('0x5'))['db'];var utils=require(_0x187f('0x6'));var logger=require('../../config/logger')(_0x187f('0x7'));var config=require('../../config/environment');var jayson=require(_0x187f('0x8'));var client=jayson['client'][_0x187f('0x9')]({'port':0x232a});config['redis']=_[_0x187f('0xa')](config[_0x187f('0xb')],{'host':_0x187f('0xc'),'port':0x18eb});var socket=require(_0x187f('0xd'))(new Redis(config[_0x187f('0xb')]));require(_0x187f('0xe'))['register'](socket);function respondWithRpcPromise(_0x3009ae,_0x181e68,_0x5d5d93){return new BPromise(function(_0x4b5bc7,_0x1b088d){return client[_0x187f('0xf')](_0x3009ae,_0x5d5d93)[_0x187f('0x10')](function(_0x44b31d){logger[_0x187f('0x11')](_0x187f('0x12'),_0x181e68,_0x187f('0x13'));logger[_0x187f('0x14')](_0x187f('0x15'),_0x181e68,_0x187f('0x13'),JSON['stringify'](_0x44b31d));if(_0x44b31d['error']){if(_0x44b31d[_0x187f('0x16')][_0x187f('0x17')]===0x1f4){logger[_0x187f('0x16')](_0x187f('0x12'),_0x181e68,_0x44b31d[_0x187f('0x16')][_0x187f('0x18')]);return _0x1b088d(_0x44b31d[_0x187f('0x16')]['message']);}logger[_0x187f('0x16')]('VoicePrefix,\x20%s,\x20%s',_0x181e68,_0x44b31d['error'][_0x187f('0x18')]);return _0x4b5bc7(_0x44b31d[_0x187f('0x16')]['message']);}else{logger[_0x187f('0x11')]('VoicePrefix,\x20%s,\x20%s',_0x181e68,'request\x20sent');_0x4b5bc7(_0x44b31d[_0x187f('0x19')][_0x187f('0x18')]);}})[_0x187f('0x1a')](function(_0xae97a2){logger['error']('VoicePrefix,\x20%s,\x20%s',_0x181e68,_0xae97a2);_0x1b088d(_0xae97a2);});});}
\ No newline at end of file
+var _0x707d=['message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./voicePrefix.socket','register','request','then','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x197703,_0x487802){var _0x2f7691=function(_0x36c78c){while(--_0x36c78c){_0x197703['push'](_0x197703['shift']());}};_0x2f7691(++_0x487802);}(_0x707d,0x18b));var _0xd707=function(_0xc462ae,_0x8abd83){_0xc462ae=_0xc462ae-0x0;var _0x45bd78=_0x707d[_0xc462ae];return _0x45bd78;};'use strict';var _=require(_0xd707('0x0'));var util=require(_0xd707('0x1'));var moment=require(_0xd707('0x2'));var BPromise=require(_0xd707('0x3'));var rs=require(_0xd707('0x4'));var fs=require('fs');var Redis=require(_0xd707('0x5'));var db=require(_0xd707('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xd707('0x7'))(_0xd707('0x8'));var config=require(_0xd707('0x9'));var jayson=require(_0xd707('0xa'));var client=jayson['client'][_0xd707('0xb')]({'port':0x232a});config[_0xd707('0xc')]=_['defaults'](config[_0xd707('0xc')],{'host':_0xd707('0xd'),'port':0x18eb});var socket=require(_0xd707('0xe'))(new Redis(config['redis']));require(_0xd707('0xf'))[_0xd707('0x10')](socket);function respondWithRpcPromise(_0x4eb413,_0x1fcab0,_0x122cb6){return new BPromise(function(_0x588b55,_0x5af991){return client[_0xd707('0x11')](_0x4eb413,_0x122cb6)[_0xd707('0x12')](function(_0x249ede){logger['info'](_0xd707('0x13'),_0x1fcab0,_0xd707('0x14'));logger[_0xd707('0x15')]('VoicePrefix,\x20%s,\x20%s,\x20%s',_0x1fcab0,'request\x20sent',JSON[_0xd707('0x16')](_0x249ede));if(_0x249ede[_0xd707('0x17')]){if(_0x249ede['error'][_0xd707('0x18')]===0x1f4){logger[_0xd707('0x17')]('VoicePrefix,\x20%s,\x20%s',_0x1fcab0,_0x249ede[_0xd707('0x17')][_0xd707('0x19')]);return _0x5af991(_0x249ede['error']['message']);}logger[_0xd707('0x17')]('VoicePrefix,\x20%s,\x20%s',_0x1fcab0,_0x249ede[_0xd707('0x17')][_0xd707('0x19')]);return _0x588b55(_0x249ede['error'][_0xd707('0x19')]);}else{logger[_0xd707('0x1a')](_0xd707('0x13'),_0x1fcab0,_0xd707('0x14'));_0x588b55(_0x249ede[_0xd707('0x1b')][_0xd707('0x19')]);}})['catch'](function(_0x49a6c4){logger[_0xd707('0x17')]('VoicePrefix,\x20%s,\x20%s',_0x1fcab0,_0x49a6c4);_0x5af991(_0x49a6c4);});});}
\ No newline at end of file
index 5ce49c0..4d5d291 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc4c=['remove','removeListener','length','voicePrefix:','./voicePrefix.events','save'];(function(_0x58eec7,_0x2353db){var _0x25c5d3=function(_0x1ae895){while(--_0x1ae895){_0x58eec7['push'](_0x58eec7['shift']());}};_0x25c5d3(++_0x2353db);}(_0xfc4c,0xca));var _0xcfc4=function(_0xadbc36,_0x5de764){_0xadbc36=_0xadbc36-0x0;var _0x14bff8=_0xfc4c[_0xadbc36];return _0x14bff8;};'use strict';var VoicePrefixEvents=require(_0xcfc4('0x0'));var events=[_0xcfc4('0x1'),_0xcfc4('0x2'),'update'];function createListener(_0x29323d,_0xb8f67b){return function(_0x3a0bd9){_0xb8f67b['emit'](_0x29323d,_0x3a0bd9);};}function removeListener(_0x57bf8a,_0x436d9b){return function(){VoicePrefixEvents[_0xcfc4('0x3')](_0x57bf8a,_0x436d9b);};}exports['register']=function(_0x4a4db3){for(var _0x30b6d4=0x0,_0x53486d=events[_0xcfc4('0x4')];_0x30b6d4<_0x53486d;_0x30b6d4++){var _0x4578f4=events[_0x30b6d4];var _0x520566=createListener(_0xcfc4('0x5')+_0x4578f4,_0x4a4db3);VoicePrefixEvents['on'](_0x4578f4,_0x520566);}};
\ No newline at end of file
+var _0x9cff=['save','remove','update','emit','removeListener','register','length','voicePrefix:'];(function(_0x419531,_0x279305){var _0x265f70=function(_0x501ca2){while(--_0x501ca2){_0x419531['push'](_0x419531['shift']());}};_0x265f70(++_0x279305);}(_0x9cff,0x1b0));var _0xf9cf=function(_0x4ccc32,_0x540512){_0x4ccc32=_0x4ccc32-0x0;var _0x5b87d5=_0x9cff[_0x4ccc32];return _0x5b87d5;};'use strict';var VoicePrefixEvents=require('./voicePrefix.events');var events=[_0xf9cf('0x0'),_0xf9cf('0x1'),_0xf9cf('0x2')];function createListener(_0x55364a,_0x197da2){return function(_0x142fc6){_0x197da2[_0xf9cf('0x3')](_0x55364a,_0x142fc6);};}function removeListener(_0x5060e0,_0x2da91){return function(){VoicePrefixEvents[_0xf9cf('0x4')](_0x5060e0,_0x2da91);};}exports[_0xf9cf('0x5')]=function(_0x183113){for(var _0xcacbdc=0x0,_0x27e2b1=events[_0xf9cf('0x6')];_0xcacbdc<_0x27e2b1;_0xcacbdc++){var _0x19d7f9=events[_0xcacbdc];var _0x1c29f6=createListener(_0xf9cf('0x7')+_0x19d7f9,_0x183113);VoicePrefixEvents['on'](_0x19d7f9,_0x1c29f6);}};
\ No newline at end of file
index b794402..78d77c6 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(_0x347f45,_0x1537ac){var _0x3d5d1f=function(_0x10fa5c){while(--_0x10fa5c){_0x347f45['push'](_0x347f45['shift']());}};_0x3d5d1f(++_0x1537ac);}(_0xa9e0,0x123));var _0x0a9e=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xa9e0[_0x31e29a];return _0x32d892;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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(_0x1e6e4e,_0x2b1b09){var _0x3d746b=function(_0x4483dd){while(--_0x4483dd){_0x1e6e4e['push'](_0x1e6e4e['shift']());}};_0x3d746b(++_0x2b1b09);}(_0xb10b,0x12a));var _0xbb10=function(_0x825ea9,_0x56c3ea){_0x825ea9=_0x825ea9-0x0;var _0x4282a8=_0xb10b[_0x825ea9];return _0x4282a8;};'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 5b62676..baabb33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dfb=['rrordered','setDataValue','strategy','dialMethod','getDataValue','booked','progressive','predictive','power','INTEGER','yes','TEXT','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','preview','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','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','Queue\x20Timeout\x20Seconds\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','onlyIfOpen','always','Active/Disactive\x20AMD','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#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','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','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)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','ENUM','outbound','inbound','ringall','leastrecent','fewestcalls','rrmemory','linear','wrandom'];(function(_0x55cc58,_0x5ce0af){var _0x26062e=function(_0x59e29d){while(--_0x59e29d){_0x55cc58['push'](_0x55cc58['shift']());}};_0x26062e(++_0x5ce0af);}(_0x0dfb,0xeb));var _0xb0df=function(_0x1a7755,_0x2f8ee9){_0x1a7755=_0x1a7755-0x0;var _0x55d109=_0x0dfb[_0x1a7755];return _0x55d109;};'use strict';var Sequelize=require('sequelize');module[_0xb0df('0x0')]={'name':{'type':Sequelize[_0xb0df('0x1')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xb0df('0x2')]('inbound',_0xb0df('0x3')),'allowNull':![],'defaultValue':_0xb0df('0x4')},'musiconhold':{'type':Sequelize[_0xb0df('0x1')],'defaultValue':'default'},'announce':{'type':Sequelize['STRING'],'defaultValue':''},'strategy':{'type':Sequelize[_0xb0df('0x2')]('rr',_0xb0df('0x5'),_0xb0df('0x6'),_0xb0df('0x7'),'random',_0xb0df('0x8'),_0xb0df('0x9'),_0xb0df('0xa'),_0xb0df('0xb')),'allowNull':![],'defaultValue':'ringall','set':function(_0x5c60d3){this[_0xb0df('0xc')](_0xb0df('0xd'),_0x5c60d3?_0x5c60d3:_0xb0df('0x8'));},'get':function(){var _0x2dc58a=this['getDataValue']('type');var _0x4f8673=this['getDataValue'](_0xb0df('0xe'));var _0xe7552d=this[_0xb0df('0xf')](_0xb0df('0xd'));if(_0x2dc58a===_0xb0df('0x4')){return _0xe7552d;}if(_0x4f8673==='booked'&&_0xe7552d===_0xb0df('0x8')||_0x4f8673===_0xb0df('0x10')&&_0xe7552d==='roundrobin'){return _0xe7552d;}if(_0x4f8673===_0xb0df('0x11')||_0x4f8673===_0xb0df('0x12')||_0x4f8673===_0xb0df('0x13')){return _0xe7552d;}return null;}},'servicelevel':{'type':Sequelize[_0xb0df('0x14')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xb0df('0x1')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize[_0xb0df('0x14')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xb0df('0x14')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xb0df('0x1')]},'weight':{'type':Sequelize[_0xb0df('0x14')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xb0df('0x14')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xb0df('0x2')]('yes','no'),'defaultValue':_0xb0df('0x15')},'autopause':{'type':Sequelize['ENUM']('yes','no','all'),'defaultValue':'no'},'autopausedelay':{'type':Sequelize['INTEGER'](0xb)},'autopausebusy':{'type':Sequelize[_0xb0df('0x2')](_0xb0df('0x15'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xb0df('0x2')](_0xb0df('0x15'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xb0df('0x14')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xb0df('0x2')](_0xb0df('0x15'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xb0df('0x2')]('yes','no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xb0df('0x2')]('yes','no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xb0df('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xb0df('0x14')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xb0df('0x14')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0xb0df('0x14')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xb0df('0x2')]('yes','no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xb0df('0x2')](_0xb0df('0x15'),'no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize[_0xb0df('0x2')]('yes','no','once'),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xb0df('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xb0df('0x2')](_0xb0df('0x15'),'no')},'announce_position_limit':{'type':Sequelize[_0xb0df('0x14')](0xb)},'announce_round_seconds':{'type':Sequelize[_0xb0df('0x2')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xb0df('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize[_0xb0df('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xb0df('0x1')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xb0df('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xb0df('0x1')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xb0df('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xb0df('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xb0df('0x1')]},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize[_0xb0df('0x1')]},'queue_periodic_announce':{'type':Sequelize[_0xb0df('0x1')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize[_0xb0df('0x16')],'set':function(_0x5216aa){this[_0xb0df('0xc')](_0xb0df('0x17'),_0x5216aa?_0x5216aa[_0xb0df('0x18')](','):[]);},'get':function(){return this[_0xb0df('0xf')](_0xb0df('0x17'))?this[_0xb0df('0xf')]('periodic_announce')[_0xb0df('0x19')](','):[];}},'joinempty':{'type':Sequelize[_0xb0df('0x1')],'defaultValue':_0xb0df('0x15'),'set':function(_0x35cef1){this['setDataValue'](_0xb0df('0x1a'),_0x35cef1?_0x35cef1['join'](','):undefined);},'get':function(){return this[_0xb0df('0xf')](_0xb0df('0x1a'))?this[_0xb0df('0xf')](_0xb0df('0x1a'))[_0xb0df('0x19')](','):undefined;}},'leavewhenempty':{'type':Sequelize['STRING'],'defaultValue':'no','set':function(_0x3bac7a){this[_0xb0df('0xc')](_0xb0df('0x1b'),_0x3bac7a?_0x3bac7a[_0xb0df('0x18')](','):undefined);},'get':function(){return this[_0xb0df('0xf')](_0xb0df('0x1b'))?this[_0xb0df('0xf')](_0xb0df('0x1b'))['split'](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xb0df('0x2')](_0xb0df('0x15'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xb0df('0x14')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xb0df('0x2')](_0xb0df('0x15'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xb0df('0x1')]},'description':{'type':Sequelize[_0xb0df('0x1')]},'acw':{'type':Sequelize[_0xb0df('0x1c')],'defaultValue':0x0,'set':function(_0x578386){this[_0xb0df('0xc')](_0xb0df('0x1d'),_0x578386);if(_0x578386){if(this[_0xb0df('0xf')](_0xb0df('0x1e'))<0x2){this['setDataValue']('wrapuptime',0x2);}}}},'acwTimeout':{'type':Sequelize[_0xb0df('0x14')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xb0df('0x1c')],'defaultValue':0x0,'comment':_0xb0df('0x1f')},'dialMethod':{'type':Sequelize[_0xb0df('0x2')](_0xb0df('0x20'),'progressive',_0xb0df('0x13'),_0xb0df('0x12'),_0xb0df('0x10')),'defaultValue':_0xb0df('0x11'),'comment':_0xb0df('0x21')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)[_0xb0df('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xb0df('0x23')},'dialLimitQueue':{'type':Sequelize[_0xb0df('0x14')](0x4)[_0xb0df('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xb0df('0x24')},'dialPowerLevel':{'type':Sequelize[_0xb0df('0x25')](0x2)[_0xb0df('0x22')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xb0df('0x26')},'dialPredictiveOptimization':{'type':Sequelize[_0xb0df('0x2')]('agentBusyFactor',_0xb0df('0x27')),'defaultValue':_0xb0df('0x27'),'comment':_0xb0df('0x28')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0xb0df('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xb0df('0x29')},'dialPredictiveInterval':{'type':Sequelize[_0xb0df('0x14')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xb0df('0x2a')},'dialOriginateCallerIdName':{'type':Sequelize[_0xb0df('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xb0df('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0xb0df('0x14')](0x3)[_0xb0df('0x22')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb0df('0x2b')},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':_0xb0df('0x2c'),'comment':_0xb0df('0x2d')},'dialQueueTimeout':{'type':Sequelize[_0xb0df('0x14')](0x3)[_0xb0df('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb0df('0x2e')},'dialQueueProject':{'type':Sequelize[_0xb0df('0x1')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize[_0xb0df('0x14')](0x3)[_0xb0df('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0xb0df('0x14')](0x5)[_0xb0df('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb0df('0x2f')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb0df('0x30')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xb0df('0x22')],'defaultValue':0x3,'comment':_0xb0df('0x31')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xb0df('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb0df('0x32')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xb0df('0x33')},'dialTimezone':{'type':Sequelize[_0xb0df('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xb0df('0x1')],'defaultValue':_0xb0df('0x34')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xb0df('0x2')]('always',_0xb0df('0x35'),_0xb0df('0x36')),'defaultValue':_0xb0df('0x37')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xb0df('0x38')},'dialAMDInitialSilence':{'type':Sequelize[_0xb0df('0x14')](0x9)[_0xb0df('0x22')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0xb0df('0x14')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xb0df('0x39')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xb0df('0x14')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xb0df('0x3a')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xb0df('0x14')](0x9)[_0xb0df('0x22')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xb0df('0x3b')},'dialAMDMinWordLength':{'type':Sequelize[_0xb0df('0x14')](0x9)[_0xb0df('0x22')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xb0df('0x3c')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xb0df('0x14')](0x9)[_0xb0df('0x22')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xb0df('0x3d')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0xb0df('0x22')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xb0df('0x3e')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xb0df('0x14')](0x9)[_0xb0df('0x22')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xb0df('0x3f')},'dialRecallMeTimeout':{'type':Sequelize[_0xb0df('0x14')](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xb0df('0x40')},'dialRecallInQueue':{'type':Sequelize[_0xb0df('0x1c')],'defaultValue':0x0,'comment':_0xb0df('0x41')},'dialOrderByScheduledAt':{'type':Sequelize[_0xb0df('0x2')](_0xb0df('0x42'),_0xb0df('0x43')),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0xb0df('0x1')],'comment':_0xb0df('0x44')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xb0df('0x1c')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xb0df('0x1c')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0xb0df('0x22')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xb0df('0x45')},'dialCutDigit':{'type':Sequelize[_0xb0df('0x14')](0x3)[_0xb0df('0x22')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xb0df('0x46')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xb0df('0x14')](0x3)[_0xb0df('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xb0df('0x14')](0x5)[_0xb0df('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb0df('0x47')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xb0df('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb0df('0x48')},'dialDropRetryFrequency':{'type':Sequelize[_0xb0df('0x14')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb0df('0x49')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xb0df('0x14')](0x3)[_0xb0df('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0xb0df('0x14')](0x3)[_0xb0df('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb0df('0x4a')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb0df('0x4b')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xb0df('0x14')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xb0df('0x4c')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xb0df('0x14')](0x5)[_0xb0df('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xb0df('0x4d')},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':_0xb0df('0x4e')},'mandatoryDisposition':{'type':Sequelize[_0xb0df('0x1c')],'defaultValue':![],'comment':_0xb0df('0x4f'),'set':function(_0x443e9f){if(!_0x443e9f)this[_0xb0df('0xc')](_0xb0df('0x50'),null);this[_0xb0df('0xc')](_0xb0df('0x51'),_0x443e9f);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xb0df('0x14')](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0xb0df('0x22')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0xb0df('0x1c')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize['INTEGER'](0x3)[_0xb0df('0x22')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0xb0df('0x1c')],'defaultValue':![]}};
\ No newline at end of file
+var _0x4b86=['progressive','Dial\x20Method.','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','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\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','name','ENUM','outbound','inbound','default','ringall','fewestcalls','linear','wrandom','rrordered','setDataValue','strategy','rrmemory','getDataValue','type','dialMethod','booked','roundrobin','INTEGER','yes','all','TEXT','periodic_announce','split','joinempty','join','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','preview','power','predictive'];(function(_0x4fbb15,_0x21be0c){var _0x436338=function(_0x3b5a05){while(--_0x3b5a05){_0x4fbb15['push'](_0x4fbb15['shift']());}};_0x436338(++_0x21be0c);}(_0x4b86,0x8d));var _0x64b8=function(_0x3cea78,_0x4a6751){_0x3cea78=_0x3cea78-0x0;var _0x33b66b=_0x4b86[_0x3cea78];return _0x33b66b;};'use strict';var Sequelize=require(_0x64b8('0x0'));module[_0x64b8('0x1')]={'name':{'type':Sequelize[_0x64b8('0x2')],'allowNull':![],'unique':_0x64b8('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x64b8('0x4')]('inbound',_0x64b8('0x5')),'allowNull':![],'defaultValue':_0x64b8('0x6')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':_0x64b8('0x7')},'announce':{'type':Sequelize[_0x64b8('0x2')],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr',_0x64b8('0x8'),'leastrecent',_0x64b8('0x9'),'random','rrmemory',_0x64b8('0xa'),_0x64b8('0xb'),_0x64b8('0xc')),'allowNull':![],'defaultValue':'ringall','set':function(_0x4fd4e4){this[_0x64b8('0xd')](_0x64b8('0xe'),_0x4fd4e4?_0x4fd4e4:_0x64b8('0xf'));},'get':function(){var _0x89af98=this[_0x64b8('0x10')](_0x64b8('0x11'));var _0x41a93c=this['getDataValue'](_0x64b8('0x12'));var _0x38838f=this[_0x64b8('0x10')](_0x64b8('0xe'));if(_0x89af98===_0x64b8('0x6')){return _0x38838f;}if(_0x41a93c==='booked'&&_0x38838f===_0x64b8('0xf')||_0x41a93c===_0x64b8('0x13')&&_0x38838f===_0x64b8('0x14')){return _0x38838f;}if(_0x41a93c==='progressive'||_0x41a93c==='predictive'||_0x41a93c==='power'){return _0x38838f;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x64b8('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x64b8('0x15')](0xb)},'timeout':{'type':Sequelize[_0x64b8('0x15')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x64b8('0x15')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x64b8('0x2')]},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x64b8('0x15')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x64b8('0x4')](_0x64b8('0x16'),'no'),'defaultValue':_0x64b8('0x16')},'autopause':{'type':Sequelize['ENUM'](_0x64b8('0x16'),'no',_0x64b8('0x17')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x64b8('0x15')](0xb)},'autopausebusy':{'type':Sequelize[_0x64b8('0x4')](_0x64b8('0x16'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x64b8('0x15')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x64b8('0x4')](_0x64b8('0x16'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x64b8('0x4')](_0x64b8('0x16'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x64b8('0x4')](_0x64b8('0x16'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x64b8('0x4')](_0x64b8('0x16'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x64b8('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x64b8('0x15')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x64b8('0x15')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x64b8('0x15')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM'](_0x64b8('0x16'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x64b8('0x4')]('yes','no'),'defaultValue':_0x64b8('0x16')},'announce_holdtime':{'type':Sequelize[_0x64b8('0x4')](_0x64b8('0x16'),'no','once'),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x64b8('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize['ENUM'](_0x64b8('0x16'),'no')},'announce_position_limit':{'type':Sequelize[_0x64b8('0x15')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x64b8('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x64b8('0x2')]},'queue_youarenext':{'type':Sequelize['STRING'],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x64b8('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x64b8('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x64b8('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x64b8('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x64b8('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x64b8('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x64b8('0x2')]},'queue_quantity1':{'type':Sequelize[_0x64b8('0x2')]},'queue_quantity2':{'type':Sequelize['STRING']},'queue_periodic_announce':{'type':Sequelize[_0x64b8('0x2')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize[_0x64b8('0x18')],'set':function(_0x501c74){this[_0x64b8('0xd')](_0x64b8('0x19'),_0x501c74?_0x501c74['join'](','):[]);},'get':function(){return this['getDataValue'](_0x64b8('0x19'))?this[_0x64b8('0x10')](_0x64b8('0x19'))[_0x64b8('0x1a')](','):[];}},'joinempty':{'type':Sequelize[_0x64b8('0x2')],'defaultValue':_0x64b8('0x16'),'set':function(_0x506e25){this[_0x64b8('0xd')](_0x64b8('0x1b'),_0x506e25?_0x506e25[_0x64b8('0x1c')](','):undefined);},'get':function(){return this[_0x64b8('0x10')](_0x64b8('0x1b'))?this[_0x64b8('0x10')](_0x64b8('0x1b'))[_0x64b8('0x1a')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x64b8('0x2')],'defaultValue':'no','set':function(_0x455b36){this[_0x64b8('0xd')](_0x64b8('0x1d'),_0x455b36?_0x455b36[_0x64b8('0x1c')](','):undefined);},'get':function(){return this[_0x64b8('0x10')]('leavewhenempty')?this['getDataValue']('leavewhenempty')[_0x64b8('0x1a')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x64b8('0x4')](_0x64b8('0x16'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x64b8('0x15')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x64b8('0x4')](_0x64b8('0x16'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x64b8('0x2')]},'description':{'type':Sequelize['STRING']},'acw':{'type':Sequelize[_0x64b8('0x1e')],'defaultValue':0x0,'set':function(_0x248a2f){this[_0x64b8('0xd')](_0x64b8('0x1f'),_0x248a2f);if(_0x248a2f){if(this[_0x64b8('0x10')](_0x64b8('0x20'))<0x2){this['setDataValue'](_0x64b8('0x20'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x64b8('0x15')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x64b8('0x1e')],'defaultValue':0x0,'comment':_0x64b8('0x21')},'dialMethod':{'type':Sequelize[_0x64b8('0x4')](_0x64b8('0x22'),'progressive',_0x64b8('0x23'),_0x64b8('0x24'),_0x64b8('0x13')),'defaultValue':_0x64b8('0x25'),'comment':_0x64b8('0x26')},'dialLimitChannel':{'type':Sequelize[_0x64b8('0x15')](0x4)[_0x64b8('0x27')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize[_0x64b8('0x15')](0x4)[_0x64b8('0x27')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x64b8('0x28')},'dialPowerLevel':{'type':Sequelize[_0x64b8('0x29')](0x2)[_0x64b8('0x27')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x64b8('0x2a')},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0x64b8('0x2b'),_0x64b8('0x2c')),'defaultValue':_0x64b8('0x2c'),'comment':'Only\x20for\x20predictive\x20method.'},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x64b8('0x29')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x64b8('0x2d')},'dialPredictiveInterval':{'type':Sequelize[_0x64b8('0x15')](0x3)[_0x64b8('0x27')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x64b8('0x2e')},'dialOriginateCallerIdName':{'type':Sequelize[_0x64b8('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x64b8('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x64b8('0x15')](0x3)[_0x64b8('0x27')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize[_0x64b8('0x2')],'defaultValue':_0x64b8('0x2f'),'comment':_0x64b8('0x30')},'dialQueueTimeout':{'type':Sequelize[_0x64b8('0x15')](0x3)[_0x64b8('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x64b8('0x31')},'dialQueueProject':{'type':Sequelize[_0x64b8('0x2')],'comment':_0x64b8('0x32')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x64b8('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x64b8('0x33')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x64b8('0x15')](0x5)[_0x64b8('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x64b8('0x34')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x64b8('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x64b8('0x35')},'dialBusyRetryFrequency':{'type':Sequelize[_0x64b8('0x15')](0x5)[_0x64b8('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x64b8('0x36')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x64b8('0x15')](0x3)[_0x64b8('0x27')],'defaultValue':0x3,'comment':_0x64b8('0x37')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x64b8('0x15')](0x5)[_0x64b8('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x64b8('0x38')},'dialGlobalMaxRetry':{'type':Sequelize[_0x64b8('0x15')](0x3)[_0x64b8('0x27')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x64b8('0x39')},'dialTimezone':{'type':Sequelize[_0x64b8('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x64b8('0x2')],'defaultValue':'07:00-22:00,*,*,*'},'dialPrefix':{'type':Sequelize[_0x64b8('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x64b8('0x4')](_0x64b8('0x3a'),_0x64b8('0x3b'),_0x64b8('0x3c')),'defaultValue':_0x64b8('0x3a')},'dialAMDActive':{'type':Sequelize[_0x64b8('0x1e')],'defaultValue':0x0,'comment':_0x64b8('0x3d')},'dialAMDInitialSilence':{'type':Sequelize[_0x64b8('0x15')](0x9)[_0x64b8('0x27')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x64b8('0x3e')},'dialAMDGreeting':{'type':Sequelize[_0x64b8('0x15')](0x9)[_0x64b8('0x27')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x64b8('0x3f')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x64b8('0x15')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x64b8('0x40')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x64b8('0x15')](0x9)[_0x64b8('0x27')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x64b8('0x41')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x64b8('0x27')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x64b8('0x42')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x64b8('0x15')](0x9)[_0x64b8('0x27')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x64b8('0x15')](0x9)[_0x64b8('0x27')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0x64b8('0x15')](0x5)[_0x64b8('0x27')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x64b8('0x43')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x64b8('0x15')](0x9)[_0x64b8('0x27')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x64b8('0x44')},'dialRecallMeTimeout':{'type':Sequelize[_0x64b8('0x15')](0x5)[_0x64b8('0x27')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x64b8('0x45')},'dialRecallInQueue':{'type':Sequelize[_0x64b8('0x1e')],'defaultValue':0x0,'comment':_0x64b8('0x46')},'dialOrderByScheduledAt':{'type':Sequelize[_0x64b8('0x4')](_0x64b8('0x47'),_0x64b8('0x48')),'defaultValue':_0x64b8('0x47')},'dialQueueProject2':{'type':Sequelize['STRING'],'comment':_0x64b8('0x32')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x64b8('0x1e')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x64b8('0x1e')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x64b8('0x27')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x64b8('0x49')},'dialCutDigit':{'type':Sequelize[_0x64b8('0x15')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x64b8('0x4a')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x64b8('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x64b8('0x4b')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x64b8('0x15')](0x5)[_0x64b8('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x64b8('0x4c')},'dialDropMaxRetry':{'type':Sequelize[_0x64b8('0x15')](0x3)[_0x64b8('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x64b8('0x4d')},'dialDropRetryFrequency':{'type':Sequelize[_0x64b8('0x15')](0x5)[_0x64b8('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x64b8('0x4e')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x64b8('0x15')](0x3)[_0x64b8('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x64b8('0x4f')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x64b8('0x15')](0x5)[_0x64b8('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x64b8('0x50')},'dialMachineMaxRetry':{'type':Sequelize[_0x64b8('0x15')](0x3)[_0x64b8('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x64b8('0x51')},'dialMachineRetryFrequency':{'type':Sequelize[_0x64b8('0x15')](0x5)[_0x64b8('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x64b8('0x52')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x64b8('0x15')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x64b8('0x53')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x64b8('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x64b8('0x54')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x64b8('0x15')],'allowNull':!![],'comment':_0x64b8('0x55')},'mandatoryDisposition':{'type':Sequelize[_0x64b8('0x1e')],'defaultValue':![],'comment':_0x64b8('0x56'),'set':function(_0x15fa4b){if(!_0x15fa4b)this[_0x64b8('0xd')](_0x64b8('0x57'),null);this[_0x64b8('0xd')](_0x64b8('0x58'),_0x15fa4b);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x64b8('0x15')](0x3)[_0x64b8('0x27')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x64b8('0x15')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x64b8('0x1e')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0x64b8('0x15')](0x3)[_0x64b8('0x27')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0x64b8('0x1e')],'defaultValue':![]}};
\ No newline at end of file
index 87f47fd..dfa53b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c03=['limit','count','set','Content-Range','apply','reject','save','then','destroy','get','outbound','filter','ignore','map','value','type','find','name','end','sendStatus','error','stack','send','index','VoiceQueue','rawAttributes','key','model','query','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','keys','intersection','create','user','role','VoiceQueues','QueueCampaigns','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','inbound','UserProfileSection','update','getHoppers','CmHopper','rows','getHopperHistories','findOne','CmHopperHistory','nolimit','VoiceQueueId','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','Agents','online','voicePause','flatMap','forEach','penalty','sequelize','TeamVoiceQueue','each','UserVoiceQueue','UserVoiceQueueRt','isNil','SIP/%s','interface','userVoiceQueue:save','removeTeams','ids','select','field','from','team_has_voice_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','transaction','isEmpty','removeAgents','emit','userVoiceQueue:remove','addAgents','spread','upsert','format','isArray','getAgents','getMembers','getLists','addLists','dialCheckDuplicateType','always','insert','into','cm_hopper','phone','ContactId','ListId','deletedAt\x20IS\x20NULL','CmListId','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','cm_hopper_final','scheduledAt','cm_contacts','COALESCE(phone,\x27\x27)','ListId\x20=\x20?','cm_hopper_additional_phones','CmHopperId','OrderBy','h.id','ci.item','ci.OrderBy+1','join','h.ContactId=ci.CmContactId','h.scheduledat=?','ci.ItemClass=?','PHONE','removeLists','getBlackLists','CmList','addBlackLists','cm_hopper_black','NOW()','removeBlackLists','eml-format','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','defaults','redis','localhost','socket.io-emitter','./voiceQueue.socket','status','json','offset','undefined'];(function(_0x24b6c4,_0x9d934a){var _0x2f9ddc=function(_0x46647a){while(--_0x46647a){_0x24b6c4['push'](_0x24b6c4['shift']());}};_0x2f9ddc(++_0x9d934a);}(_0x3c03,0x16d));var _0x33c0=function(_0x1abb09,_0x18ee91){_0x1abb09=_0x1abb09-0x0;var _0xea1c07=_0x3c03[_0x1abb09];return _0xea1c07;};'use strict';var emlformat=require(_0x33c0('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x33c0('0x1'));var moment=require(_0x33c0('0x2'));var BPromise=require(_0x33c0('0x3'));var Mustache=require(_0x33c0('0x4'));var util=require('util');var path=require(_0x33c0('0x5'));var sox=require(_0x33c0('0x6'));var csv=require(_0x33c0('0x7'));var ejs=require(_0x33c0('0x8'));var fs=require('fs');var fs_extra=require(_0x33c0('0x9'));var _=require(_0x33c0('0xa'));var squel=require(_0x33c0('0xb'));var crypto=require('crypto');var jsforce=require(_0x33c0('0xc'));var deskjs=require(_0x33c0('0xd'));var toCsv=require('to-csv');var querystring=require(_0x33c0('0xe'));var Papa=require(_0x33c0('0xf'));var Redis=require('ioredis');var authService=require(_0x33c0('0x10'));var qs=require(_0x33c0('0x11'));var as=require(_0x33c0('0x12'));var hardwareService=require(_0x33c0('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x33c0('0x14'));var config=require(_0x33c0('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_[_0x33c0('0x16')](config[_0x33c0('0x17')],{'host':_0x33c0('0x18'),'port':0x18eb});var socket=require(_0x33c0('0x19'))(new Redis(config[_0x33c0('0x17')]));require(_0x33c0('0x1a'))['register'](socket);function respondWithStatusCode(_0x2f2e52,_0x3f78f0){_0x3f78f0=_0x3f78f0||0xcc;return function(_0x1d954c){if(_0x1d954c){return _0x2f2e52['sendStatus'](_0x3f78f0);}return _0x2f2e52[_0x33c0('0x1b')](_0x3f78f0)['end']();};}function respondWithResult(_0x1e4134,_0x5a88cb){_0x5a88cb=_0x5a88cb||0xc8;return function(_0x115715){if(_0x115715){return _0x1e4134[_0x33c0('0x1b')](_0x5a88cb)[_0x33c0('0x1c')](_0x115715);}};}function respondWithFilteredResult(_0x1729b9,_0x392232){return function(_0x192dc0){if(_0x192dc0){var _0x4a1fd3=typeof _0x392232[_0x33c0('0x1d')]===_0x33c0('0x1e')&&typeof _0x392232[_0x33c0('0x1f')]===_0x33c0('0x1e');var _0x1090f1=_0x192dc0[_0x33c0('0x20')];var _0x55f970=_0x4a1fd3?0x0:_0x392232[_0x33c0('0x1d')];var _0x84311e=_0x4a1fd3?_0x192dc0[_0x33c0('0x20')]:_0x392232[_0x33c0('0x1d')]+_0x392232['limit'];var _0x2e0b2c;if(_0x84311e>=_0x1090f1){_0x84311e=_0x1090f1;_0x2e0b2c=0xc8;}else{_0x2e0b2c=0xce;}_0x1729b9[_0x33c0('0x1b')](_0x2e0b2c);return _0x1729b9[_0x33c0('0x21')](_0x33c0('0x22'),_0x55f970+'-'+_0x84311e+'/'+_0x1090f1)[_0x33c0('0x1c')](_0x192dc0);}return null;};}function patchUpdates(_0x302758){return function(_0x13268c){try{jsonpatch[_0x33c0('0x23')](_0x13268c,_0x302758,!![]);}catch(_0x1f8a7e){return BPromise[_0x33c0('0x24')](_0x1f8a7e);}return _0x13268c[_0x33c0('0x25')]();};}function saveUpdates(_0x3a55e4,_0x360686){return function(_0x401e3a){if(_0x401e3a){return _0x401e3a['update'](_0x3a55e4)[_0x33c0('0x26')](function(_0x2b1af2){return _0x2b1af2;});}return null;};}function removeEntity(_0x27cafa,_0x3eda05){return function(_0x4ac4ff){if(_0x4ac4ff){return _0x4ac4ff[_0x33c0('0x27')]()[_0x33c0('0x26')](function(){var _0x41dd88=_0x4ac4ff[_0x33c0('0x28')]({'plain':!![]});var _0x12a58a=[{'name':'VoiceQueues','value':'inbound','ignore':![]},{'name':'QueueCampaigns','value':_0x33c0('0x29'),'ignore':![]}];var _0x26b32f=_(_0x12a58a)[_0x33c0('0x2a')](_0x33c0('0x2b'))[_0x33c0('0x2c')](_0x33c0('0x2d'))[_0x33c0('0x2d')]();if(_['includes'](_0x26b32f,_0x41dd88[_0x33c0('0x2e')])){return;}var _0x546372=_[_0x33c0('0x2f')](_0x12a58a,[_0x33c0('0x2d'),_0x41dd88[_0x33c0('0x2e')]])[_0x33c0('0x30')];return db['UserProfileResource'][_0x33c0('0x27')]({'where':{'type':_0x546372,'resourceId':_0x41dd88['id']}})[_0x33c0('0x26')](function(){return _0x4ac4ff;});})[_0x33c0('0x26')](function(){_0x27cafa[_0x33c0('0x1b')](0xcc)[_0x33c0('0x31')]();});}};}function handleEntityNotFound(_0x49c39a,_0x425301){return function(_0x2a0361){if(!_0x2a0361){_0x49c39a[_0x33c0('0x32')](0x194);}return _0x2a0361;};}function handleError(_0x2933b3,_0x3faefb){_0x3faefb=_0x3faefb||0x1f4;return function(_0x2d84e4){logger[_0x33c0('0x33')](_0x2d84e4[_0x33c0('0x34')]);if(_0x2d84e4[_0x33c0('0x30')]){delete _0x2d84e4[_0x33c0('0x30')];}_0x2933b3[_0x33c0('0x1b')](_0x3faefb)[_0x33c0('0x35')](_0x2d84e4);};}exports[_0x33c0('0x36')]=function(_0x364813,_0xf65e1d){var _0x15eeca={},_0x931cce={},_0x375261={'count':0x0,'rows':[]};var _0x2c467d=_['map'](db[_0x33c0('0x37')][_0x33c0('0x38')],function(_0x584070){return{'name':_0x584070['fieldName'],'type':_0x584070[_0x33c0('0x2e')][_0x33c0('0x39')]};});_0x931cce[_0x33c0('0x3a')]=_[_0x33c0('0x2c')](_0x2c467d,_0x33c0('0x30'));_0x931cce[_0x33c0('0x3b')]=_['keys'](_0x364813[_0x33c0('0x3b')]);_0x931cce[_0x33c0('0x3c')]=_['intersection'](_0x931cce[_0x33c0('0x3a')],_0x931cce[_0x33c0('0x3b')]);_0x15eeca[_0x33c0('0x3d')]=_['intersection'](_0x931cce[_0x33c0('0x3a')],qs[_0x33c0('0x3e')](_0x364813[_0x33c0('0x3b')][_0x33c0('0x3e')]));_0x15eeca[_0x33c0('0x3d')]=_0x15eeca['attributes'][_0x33c0('0x3f')]?_0x15eeca[_0x33c0('0x3d')]:_0x931cce[_0x33c0('0x3a')];if(!_0x364813[_0x33c0('0x3b')][_0x33c0('0x40')]('nolimit')){_0x15eeca[_0x33c0('0x1f')]=qs[_0x33c0('0x1f')](_0x364813[_0x33c0('0x3b')][_0x33c0('0x1f')]);_0x15eeca[_0x33c0('0x1d')]=qs['offset'](_0x364813[_0x33c0('0x3b')]['offset']);}_0x15eeca[_0x33c0('0x41')]=qs[_0x33c0('0x42')](_0x364813[_0x33c0('0x3b')][_0x33c0('0x42')]);_0x15eeca[_0x33c0('0x43')]=qs[_0x33c0('0x3c')](_[_0x33c0('0x44')](_0x364813[_0x33c0('0x3b')],_0x931cce[_0x33c0('0x3c')]),_0x2c467d);if(_0x364813['query']['filter']){_0x15eeca['where']=_[_0x33c0('0x45')](_0x15eeca[_0x33c0('0x43')],{'$or':_[_0x33c0('0x2c')](_0x2c467d,function(_0x50c489){if(_0x50c489[_0x33c0('0x2e')]!==_0x33c0('0x46')){var _0x59f811={};_0x59f811[_0x50c489['name']]={'$like':'%'+_0x364813[_0x33c0('0x3b')][_0x33c0('0x2a')]+'%'};return _0x59f811;}})});}_0x15eeca=_['merge']({},_0x15eeca,_0x364813[_0x33c0('0x47')]);var _0x206bbf={'where':_0x15eeca[_0x33c0('0x43')]};return db[_0x33c0('0x37')][_0x33c0('0x20')](_0x206bbf)[_0x33c0('0x26')](function(_0xab3409){_0x375261['count']=_0xab3409;if(_0x364813[_0x33c0('0x3b')][_0x33c0('0x48')]){_0x15eeca[_0x33c0('0x49')]=[{'all':!![]}];}return db[_0x33c0('0x37')][_0x33c0('0x4a')](_0x15eeca);})[_0x33c0('0x26')](function(_0x2ec429){_0x375261['rows']=_0x2ec429;return _0x375261;})[_0x33c0('0x26')](respondWithFilteredResult(_0xf65e1d,_0x15eeca))[_0x33c0('0x4b')](handleError(_0xf65e1d,null));};exports[_0x33c0('0x4c')]=function(_0x463864,_0x2d613e){var _0x45da6b={'raw':![],'where':{'id':_0x463864[_0x33c0('0x4d')]['id']}},_0x56e239={};_0x56e239['model']=_[_0x33c0('0x4e')](db['VoiceQueue'][_0x33c0('0x38')]);_0x56e239['query']=_[_0x33c0('0x4e')](_0x463864[_0x33c0('0x3b')]);_0x56e239[_0x33c0('0x3c')]=_[_0x33c0('0x4f')](_0x56e239[_0x33c0('0x3a')],_0x56e239[_0x33c0('0x3b')]);_0x45da6b[_0x33c0('0x3d')]=_['intersection'](_0x56e239[_0x33c0('0x3a')],qs[_0x33c0('0x3e')](_0x463864[_0x33c0('0x3b')][_0x33c0('0x3e')]));_0x45da6b['attributes']=_0x45da6b[_0x33c0('0x3d')]['length']?_0x45da6b[_0x33c0('0x3d')]:_0x56e239[_0x33c0('0x3a')];if(_0x463864[_0x33c0('0x3b')][_0x33c0('0x48')]){_0x45da6b[_0x33c0('0x49')]=[{'all':!![]}];}_0x45da6b=_[_0x33c0('0x45')]({},_0x45da6b,_0x463864[_0x33c0('0x47')]);return db['VoiceQueue'][_0x33c0('0x2f')](_0x45da6b)['then'](handleEntityNotFound(_0x2d613e,null))[_0x33c0('0x26')](respondWithResult(_0x2d613e,null))[_0x33c0('0x4b')](handleError(_0x2d613e,null));};exports[_0x33c0('0x50')]=function(_0x38a0e7,_0x169f20){return db[_0x33c0('0x37')][_0x33c0('0x50')](_0x38a0e7['body'],{})[_0x33c0('0x26')](function(_0xda8a75){var _0x3a2eed=_0x38a0e7[_0x33c0('0x51')][_0x33c0('0x28')]({'plain':!![]});if(!_0x3a2eed)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3a2eed[_0x33c0('0x52')]===_0x33c0('0x51')){var _0x1861f7=_0xda8a75[_0x33c0('0x28')]({'plain':!![]});var _0x554463=[{'name':_0x33c0('0x53'),'value':'inbound'},{'name':_0x33c0('0x54'),'value':_0x33c0('0x29')}];var _0x59e681=_[_0x33c0('0x2f')](_0x554463,[_0x33c0('0x2d'),_0x1861f7[_0x33c0('0x2e')]])['name'];return db['UserProfileSection'][_0x33c0('0x2f')]({'where':{'name':_0x59e681,'userProfileId':_0x3a2eed[_0x33c0('0x55')]},'raw':!![]})[_0x33c0('0x26')](function(_0x1dc4f4){if(_0x1dc4f4&&_0x1dc4f4[_0x33c0('0x56')]===0x0){return db[_0x33c0('0x57')]['create']({'name':_0x1861f7[_0x33c0('0x30')],'resourceId':_0x1861f7['id'],'type':_0x1dc4f4[_0x33c0('0x30')],'sectionId':_0x1dc4f4['id']},{})['then'](function(){return _0xda8a75;});}else{return _0xda8a75;}})[_0x33c0('0x4b')](function(_0x3a0fd9){logger['error'](_0x33c0('0x58'),_0x3a0fd9);throw _0x3a0fd9;});}return _0xda8a75;})[_0x33c0('0x26')](respondWithResult(_0x169f20,0xc9))[_0x33c0('0x4b')](handleError(_0x169f20,null));};exports[_0x33c0('0x59')]=function(_0x26019b,_0x4c8442){var _0x3d4809={'where':{'id':_0x26019b[_0x33c0('0x4d')]['id']}},_0x22d81a={};_0x22d81a[_0x33c0('0x3a')]=_[_0x33c0('0x4e')](db['VoiceQueue'][_0x33c0('0x38')]);_0x3d4809[_0x33c0('0x3d')]=_['intersection'](_0x22d81a[_0x33c0('0x3a')],qs[_0x33c0('0x3e')](_0x26019b[_0x33c0('0x3b')]['fields']));_0x3d4809[_0x33c0('0x3d')]=_0x3d4809['attributes'][_0x33c0('0x3f')]?_0x3d4809['attributes']:_0x22d81a[_0x33c0('0x3a')];if(_0x26019b[_0x33c0('0x3b')][_0x33c0('0x48')]){_0x3d4809['include']=[{'all':!![]}];}_0x3d4809=_[_0x33c0('0x45')]({},_0x3d4809,_0x26019b[_0x33c0('0x47')]);return db[_0x33c0('0x37')]['find'](_0x3d4809)[_0x33c0('0x26')](handleEntityNotFound(_0x4c8442,null))[_0x33c0('0x26')](function(_0x20f0ae){if(_0x20f0ae){var _0x102840=_0x20f0ae[_0x33c0('0x28')]({'plain':!![]});_0x102840=qs[_0x33c0('0x5a')](_0x102840,['id',_0x33c0('0x5b'),_0x33c0('0x5c')]);_0x26019b[_0x33c0('0x5d')]=_[_0x33c0('0x5a')](_0x26019b[_0x33c0('0x5d')],['id',_0x33c0('0x5b'),'updatedAt']);return db[_0x33c0('0x37')]['create'](_[_0x33c0('0x45')](_0x102840,_0x26019b['body']),{'include':_0x26019b[_0x33c0('0x3b')][_0x33c0('0x48')]?[{'all':!![]}]:undefined})['then'](function(_0x560e72){var _0xdf84bb=_0x26019b['user'][_0x33c0('0x28')]({'plain':!![]});if(!_0xdf84bb)throw new Error(_0x33c0('0x5e'));if(_0xdf84bb[_0x33c0('0x52')]===_0x33c0('0x51')){var _0x2f93f7=_0x560e72[_0x33c0('0x28')]({'plain':!![]});var _0x4a5c10=[{'name':_0x33c0('0x53'),'value':_0x33c0('0x5f')},{'name':_0x33c0('0x54'),'value':_0x33c0('0x29')}];var _0x39c3b5=_['find'](_0x4a5c10,[_0x33c0('0x2d'),_0x2f93f7[_0x33c0('0x2e')]])[_0x33c0('0x30')];return db[_0x33c0('0x60')][_0x33c0('0x2f')]({'where':{'name':_0x39c3b5,'userProfileId':_0xdf84bb[_0x33c0('0x55')]},'raw':!![]})['then'](function(_0x32fdbe){if(_0x32fdbe&&_0x32fdbe['autoAssociation']===0x0){return db['UserProfileResource'][_0x33c0('0x50')]({'name':_0x2f93f7[_0x33c0('0x30')],'resourceId':_0x2f93f7['id'],'type':_0x32fdbe[_0x33c0('0x30')],'sectionId':_0x32fdbe['id']},{})[_0x33c0('0x26')](function(){return _0x560e72;});}else{return _0x560e72;}})[_0x33c0('0x4b')](function(_0x1789e5){logger['error'](_0x33c0('0x58'),_0x1789e5);throw _0x1789e5;});}return _0x560e72;});}})[_0x33c0('0x26')](respondWithResult(_0x4c8442,0xc9))['catch'](handleError(_0x4c8442,null));};exports[_0x33c0('0x61')]=function(_0x4c7eb9,_0x115a6b){if(_0x4c7eb9[_0x33c0('0x5d')]['id']){delete _0x4c7eb9[_0x33c0('0x5d')]['id'];}return db['VoiceQueue']['find']({'where':{'id':_0x4c7eb9['params']['id']}})[_0x33c0('0x26')](handleEntityNotFound(_0x115a6b,null))[_0x33c0('0x26')](saveUpdates(_0x4c7eb9[_0x33c0('0x5d')],null))['then'](respondWithResult(_0x115a6b,null))[_0x33c0('0x4b')](handleError(_0x115a6b,null));};exports[_0x33c0('0x27')]=function(_0x3bd454,_0x3e75d2){return db['VoiceQueue']['find']({'where':{'id':_0x3bd454[_0x33c0('0x4d')]['id']}})['then'](handleEntityNotFound(_0x3e75d2,null))['then'](removeEntity(_0x3e75d2,null))[_0x33c0('0x4b')](handleError(_0x3e75d2,null));};exports[_0x33c0('0x62')]=function(_0x3dd063,_0xe98e6d,_0x501710){var _0x25117c={'raw':![],'where':{}};var _0x1375aa={};var _0x215e82={'count':0x0,'rows':[]};return db['VoiceQueue']['findOne']({'where':{'id':_0x3dd063[_0x33c0('0x4d')]['id']}})[_0x33c0('0x26')](handleEntityNotFound(_0xe98e6d,null))[_0x33c0('0x26')](function(_0x2a9d34){if(_0x2a9d34){_0x1375aa[_0x33c0('0x3a')]=_[_0x33c0('0x4e')](db[_0x33c0('0x63')]['rawAttributes']);_0x1375aa[_0x33c0('0x3b')]=_[_0x33c0('0x4e')](_0x3dd063[_0x33c0('0x3b')]);_0x1375aa[_0x33c0('0x3c')]=_[_0x33c0('0x4f')](_0x1375aa['model'],_0x1375aa['query']);_0x25117c[_0x33c0('0x3d')]=_[_0x33c0('0x4f')](_0x1375aa['model'],qs[_0x33c0('0x3e')](_0x3dd063['query'][_0x33c0('0x3e')]));_0x25117c[_0x33c0('0x3d')]=_0x25117c[_0x33c0('0x3d')][_0x33c0('0x3f')]?_0x25117c['attributes']:_0x1375aa[_0x33c0('0x3a')];if(!_0x3dd063[_0x33c0('0x3b')][_0x33c0('0x40')]('nolimit')){_0x25117c['limit']=qs[_0x33c0('0x1f')](_0x3dd063[_0x33c0('0x3b')][_0x33c0('0x1f')]);_0x25117c[_0x33c0('0x1d')]=qs[_0x33c0('0x1d')](_0x3dd063[_0x33c0('0x3b')][_0x33c0('0x1d')]);}_0x25117c[_0x33c0('0x41')]=qs['sort'](_0x3dd063[_0x33c0('0x3b')][_0x33c0('0x42')]);_0x25117c[_0x33c0('0x43')]=qs[_0x33c0('0x3c')](_[_0x33c0('0x44')](_0x3dd063[_0x33c0('0x3b')],_0x1375aa['filters']));_0x25117c[_0x33c0('0x43')]['VoiceQueueId']=_0x2a9d34['id'];if(_0x3dd063[_0x33c0('0x3b')][_0x33c0('0x2a')]){_0x25117c[_0x33c0('0x43')]=_[_0x33c0('0x45')](_0x25117c[_0x33c0('0x43')],{'$or':_['map'](_0x25117c['attributes'],function(_0x5c5996){var _0x23de10={};_0x23de10[_0x5c5996]={'$like':'%'+_0x3dd063['query'][_0x33c0('0x2a')]+'%'};return _0x23de10;})});}_0x25117c=_[_0x33c0('0x45')]({},_0x25117c,_0x3dd063[_0x33c0('0x47')]);return db[_0x33c0('0x63')]['count']({'where':_0x25117c[_0x33c0('0x43')]})[_0x33c0('0x26')](function(_0xc7bcd6){_0x215e82[_0x33c0('0x20')]=_0xc7bcd6;if(_0x3dd063[_0x33c0('0x3b')]['includeAll']){_0x25117c[_0x33c0('0x49')]=[{'all':!![]}];}return db['CmHopper'][_0x33c0('0x4a')](_0x25117c);})[_0x33c0('0x26')](function(_0x594bb0){_0x215e82[_0x33c0('0x64')]=_0x594bb0;return _0x215e82;});}})[_0x33c0('0x26')](respondWithFilteredResult(_0xe98e6d,_0x25117c))[_0x33c0('0x4b')](handleError(_0xe98e6d,null));};exports[_0x33c0('0x65')]=function(_0x3af9a6,_0x2e224f,_0x27f4de){var _0x42d33a={'raw':!![],'where':{}};var _0x42b3c1={};var _0x4f3d6a={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x33c0('0x66')]({'where':{'id':_0x3af9a6['params']['id']}})['then'](handleEntityNotFound(_0x2e224f,null))[_0x33c0('0x26')](function(_0x4f3032){if(_0x4f3032){_0x42b3c1[_0x33c0('0x3a')]=_[_0x33c0('0x4e')](db[_0x33c0('0x67')]['rawAttributes']);_0x42b3c1[_0x33c0('0x3b')]=_[_0x33c0('0x4e')](_0x3af9a6[_0x33c0('0x3b')]);_0x42b3c1[_0x33c0('0x3c')]=_[_0x33c0('0x4f')](_0x42b3c1['model'],_0x42b3c1[_0x33c0('0x3b')]);_0x42d33a['attributes']=_['intersection'](_0x42b3c1[_0x33c0('0x3a')],qs[_0x33c0('0x3e')](_0x3af9a6[_0x33c0('0x3b')][_0x33c0('0x3e')]));_0x42d33a[_0x33c0('0x3d')]=_0x42d33a[_0x33c0('0x3d')][_0x33c0('0x3f')]?_0x42d33a[_0x33c0('0x3d')]:_0x42b3c1['model'];if(!_0x3af9a6[_0x33c0('0x3b')][_0x33c0('0x40')](_0x33c0('0x68'))){_0x42d33a[_0x33c0('0x1f')]=qs[_0x33c0('0x1f')](_0x3af9a6['query'][_0x33c0('0x1f')]);_0x42d33a['offset']=qs['offset'](_0x3af9a6[_0x33c0('0x3b')][_0x33c0('0x1d')]);}_0x42d33a['order']=qs['sort'](_0x3af9a6[_0x33c0('0x3b')][_0x33c0('0x42')]);_0x42d33a[_0x33c0('0x43')]=qs['filters'](_[_0x33c0('0x44')](_0x3af9a6[_0x33c0('0x3b')],_0x42b3c1[_0x33c0('0x3c')]));_0x42d33a[_0x33c0('0x43')][_0x33c0('0x69')]=_0x4f3032['id'];if(_0x3af9a6[_0x33c0('0x3b')][_0x33c0('0x2a')]){_0x42d33a['where']=_[_0x33c0('0x45')](_0x42d33a[_0x33c0('0x43')],{'$or':_[_0x33c0('0x2c')](_0x42d33a[_0x33c0('0x3d')],function(_0x395f11){var _0x57a704={};_0x57a704[_0x395f11]={'$like':'%'+_0x3af9a6[_0x33c0('0x3b')]['filter']+'%'};return _0x57a704;})});}_0x42d33a=_[_0x33c0('0x45')]({},_0x42d33a,_0x3af9a6[_0x33c0('0x47')]);return db[_0x33c0('0x67')][_0x33c0('0x20')]({'where':_0x42d33a['where']})[_0x33c0('0x26')](function(_0x20571d){_0x4f3d6a[_0x33c0('0x20')]=_0x20571d;if(_0x3af9a6['query'][_0x33c0('0x48')]){_0x42d33a[_0x33c0('0x49')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x33c0('0x4a')](_0x42d33a);})[_0x33c0('0x26')](function(_0x27d53c){_0x4f3d6a[_0x33c0('0x64')]=_0x27d53c;return _0x4f3d6a;});}})['then'](respondWithFilteredResult(_0x2e224f,_0x42d33a))[_0x33c0('0x4b')](handleError(_0x2e224f,null));};exports['getHopperFinals']=function(_0xf79c10,_0x1b82d6,_0xbb3ef1){var _0xd22e70={'raw':!![],'where':{}};var _0x2f5e98={};var _0x42b8b6={'count':0x0,'rows':[]};return db[_0x33c0('0x37')][_0x33c0('0x66')]({'where':{'id':_0xf79c10[_0x33c0('0x4d')]['id']}})[_0x33c0('0x26')](handleEntityNotFound(_0x1b82d6,null))[_0x33c0('0x26')](function(_0x5bab02){if(_0x5bab02){_0x2f5e98['model']=_[_0x33c0('0x4e')](db['CmHopperFinal']['rawAttributes']);_0x2f5e98[_0x33c0('0x3b')]=_['keys'](_0xf79c10['query']);_0x2f5e98[_0x33c0('0x3c')]=_[_0x33c0('0x4f')](_0x2f5e98[_0x33c0('0x3a')],_0x2f5e98[_0x33c0('0x3b')]);_0xd22e70[_0x33c0('0x3d')]=_[_0x33c0('0x4f')](_0x2f5e98[_0x33c0('0x3a')],qs[_0x33c0('0x3e')](_0xf79c10[_0x33c0('0x3b')][_0x33c0('0x3e')]));_0xd22e70[_0x33c0('0x3d')]=_0xd22e70[_0x33c0('0x3d')][_0x33c0('0x3f')]?_0xd22e70[_0x33c0('0x3d')]:_0x2f5e98[_0x33c0('0x3a')];if(!_0xf79c10[_0x33c0('0x3b')][_0x33c0('0x40')](_0x33c0('0x68'))){_0xd22e70[_0x33c0('0x1f')]=qs[_0x33c0('0x1f')](_0xf79c10[_0x33c0('0x3b')][_0x33c0('0x1f')]);_0xd22e70[_0x33c0('0x1d')]=qs[_0x33c0('0x1d')](_0xf79c10[_0x33c0('0x3b')][_0x33c0('0x1d')]);}_0xd22e70[_0x33c0('0x41')]=qs[_0x33c0('0x42')](_0xf79c10[_0x33c0('0x3b')][_0x33c0('0x42')]);_0xd22e70[_0x33c0('0x43')]=qs[_0x33c0('0x3c')](_['pick'](_0xf79c10[_0x33c0('0x3b')],_0x2f5e98[_0x33c0('0x3c')]));_0xd22e70['where'][_0x33c0('0x69')]=_0x5bab02['id'];if(_0xf79c10[_0x33c0('0x3b')][_0x33c0('0x2a')]){_0xd22e70[_0x33c0('0x43')]=_['merge'](_0xd22e70['where'],{'$or':_[_0x33c0('0x2c')](_0xd22e70['attributes'],function(_0x15d002){var _0x23a5b4={};_0x23a5b4[_0x15d002]={'$like':'%'+_0xf79c10[_0x33c0('0x3b')][_0x33c0('0x2a')]+'%'};return _0x23a5b4;})});}_0xd22e70=_[_0x33c0('0x45')]({},_0xd22e70,_0xf79c10['options']);return db[_0x33c0('0x6a')][_0x33c0('0x20')]({'where':_0xd22e70[_0x33c0('0x43')]})[_0x33c0('0x26')](function(_0x5c0929){_0x42b8b6[_0x33c0('0x20')]=_0x5c0929;if(_0xf79c10[_0x33c0('0x3b')]['includeAll']){_0xd22e70[_0x33c0('0x49')]=[{'all':!![]}];}return db[_0x33c0('0x6a')]['findAll'](_0xd22e70);})[_0x33c0('0x26')](function(_0x3e3d04){_0x42b8b6['rows']=_0x3e3d04;return _0x42b8b6;});}})[_0x33c0('0x26')](respondWithFilteredResult(_0x1b82d6,_0xd22e70))[_0x33c0('0x4b')](handleError(_0x1b82d6,null));};exports[_0x33c0('0x6b')]=function(_0x4e5fd5,_0x757b,_0x5dcb0b){var _0x50d5a5={'raw':!![],'where':{}};var _0x325d5e={};var _0x74c61e={'count':0x0,'rows':[]};return db[_0x33c0('0x37')][_0x33c0('0x66')]({'where':{'id':_0x4e5fd5['params']['id']}})['then'](handleEntityNotFound(_0x757b,null))['then'](function(_0x3dd410){if(_0x3dd410){_0x325d5e[_0x33c0('0x3a')]=_[_0x33c0('0x4e')](db[_0x33c0('0x6c')][_0x33c0('0x38')]);_0x325d5e[_0x33c0('0x3b')]=_['keys'](_0x4e5fd5['query']);_0x325d5e['filters']=_[_0x33c0('0x4f')](_0x325d5e[_0x33c0('0x3a')],_0x325d5e['query']);_0x50d5a5[_0x33c0('0x3d')]=_['intersection'](_0x325d5e[_0x33c0('0x3a')],qs['fields'](_0x4e5fd5[_0x33c0('0x3b')][_0x33c0('0x3e')]));_0x50d5a5[_0x33c0('0x3d')]=_0x50d5a5[_0x33c0('0x3d')][_0x33c0('0x3f')]?_0x50d5a5[_0x33c0('0x3d')]:_0x325d5e[_0x33c0('0x3a')];if(!_0x4e5fd5[_0x33c0('0x3b')][_0x33c0('0x40')](_0x33c0('0x68'))){_0x50d5a5[_0x33c0('0x1f')]=qs['limit'](_0x4e5fd5[_0x33c0('0x3b')][_0x33c0('0x1f')]);_0x50d5a5[_0x33c0('0x1d')]=qs[_0x33c0('0x1d')](_0x4e5fd5[_0x33c0('0x3b')][_0x33c0('0x1d')]);}_0x50d5a5[_0x33c0('0x41')]=qs['sort'](_0x4e5fd5['query'][_0x33c0('0x42')]);_0x50d5a5['where']=qs[_0x33c0('0x3c')](_[_0x33c0('0x44')](_0x4e5fd5[_0x33c0('0x3b')],_0x325d5e[_0x33c0('0x3c')]));_0x50d5a5['where']['VoiceQueueId']=_0x3dd410['id'];if(_0x4e5fd5[_0x33c0('0x3b')][_0x33c0('0x2a')]){_0x50d5a5[_0x33c0('0x43')]=_[_0x33c0('0x45')](_0x50d5a5['where'],{'$or':_[_0x33c0('0x2c')](_0x50d5a5[_0x33c0('0x3d')],function(_0xdd6dad){var _0x49782d={};_0x49782d[_0xdd6dad]={'$like':'%'+_0x4e5fd5['query'][_0x33c0('0x2a')]+'%'};return _0x49782d;})});}_0x50d5a5=_['merge']({},_0x50d5a5,_0x4e5fd5[_0x33c0('0x47')]);return db[_0x33c0('0x6c')]['count']({'where':_0x50d5a5[_0x33c0('0x43')]})[_0x33c0('0x26')](function(_0x2ae281){_0x74c61e[_0x33c0('0x20')]=_0x2ae281;if(_0x4e5fd5[_0x33c0('0x3b')][_0x33c0('0x48')]){_0x50d5a5['include']=[{'all':!![]}];}return db[_0x33c0('0x6c')][_0x33c0('0x4a')](_0x50d5a5);})[_0x33c0('0x26')](function(_0x9a23d3){_0x74c61e[_0x33c0('0x64')]=_0x9a23d3;return _0x74c61e;});}})[_0x33c0('0x26')](respondWithFilteredResult(_0x757b,_0x50d5a5))[_0x33c0('0x4b')](handleError(_0x757b,null));};exports[_0x33c0('0x6d')]=function(_0x36d0a4,_0x499ac8,_0x486988){var _0x187f5a={};var _0x56efc7={};var _0x4ea51f;var _0x2faedc;return db[_0x33c0('0x37')][_0x33c0('0x66')]({'where':{'id':_0x36d0a4[_0x33c0('0x4d')]['id']}})['then'](handleEntityNotFound(_0x499ac8,null))[_0x33c0('0x26')](function(_0xb8b0f){if(_0xb8b0f){_0x4ea51f=_0xb8b0f;_0x56efc7[_0x33c0('0x3a')]=_[_0x33c0('0x4e')](db[_0x33c0('0x6e')]['rawAttributes']);_0x56efc7['query']=_['keys'](_0x36d0a4['query']);_0x56efc7[_0x33c0('0x3c')]=_[_0x33c0('0x4f')](_0x56efc7[_0x33c0('0x3a')],_0x56efc7[_0x33c0('0x3b')]);_0x187f5a['attributes']=_[_0x33c0('0x4f')](_0x56efc7[_0x33c0('0x3a')],qs[_0x33c0('0x3e')](_0x36d0a4['query'][_0x33c0('0x3e')]));_0x187f5a[_0x33c0('0x3d')]=_0x187f5a[_0x33c0('0x3d')]['length']?_0x187f5a['attributes']:_0x56efc7[_0x33c0('0x3a')];_0x187f5a[_0x33c0('0x41')]=qs[_0x33c0('0x42')](_0x36d0a4[_0x33c0('0x3b')][_0x33c0('0x42')]);_0x187f5a[_0x33c0('0x43')]=qs[_0x33c0('0x3c')](_[_0x33c0('0x44')](_0x36d0a4['query'],_0x56efc7[_0x33c0('0x3c')]));if(_0x36d0a4[_0x33c0('0x3b')][_0x33c0('0x2a')]){_0x187f5a['where']=_[_0x33c0('0x45')](_0x187f5a[_0x33c0('0x43')],{'$or':_[_0x33c0('0x2c')](_0x187f5a[_0x33c0('0x3d')],function(_0x346616){var _0x306073={};_0x306073[_0x346616]={'$like':'%'+_0x36d0a4[_0x33c0('0x3b')][_0x33c0('0x2a')]+'%'};return _0x306073;})});}_0x187f5a=_[_0x33c0('0x45')]({},_0x187f5a,_0x36d0a4[_0x33c0('0x47')]);return _0x4ea51f[_0x33c0('0x6d')](_0x187f5a);}})[_0x33c0('0x26')](function(_0x3d2cc2){if(_0x3d2cc2){_0x2faedc=_0x3d2cc2[_0x33c0('0x3f')];if(!_0x36d0a4[_0x33c0('0x3b')][_0x33c0('0x40')]('nolimit')){_0x187f5a[_0x33c0('0x1f')]=qs[_0x33c0('0x1f')](_0x36d0a4['query'][_0x33c0('0x1f')]);_0x187f5a[_0x33c0('0x1d')]=qs[_0x33c0('0x1d')](_0x36d0a4[_0x33c0('0x3b')][_0x33c0('0x1d')]);}return _0x4ea51f['getTeams'](_0x187f5a);}})[_0x33c0('0x26')](function(_0x2e05c2){if(_0x2e05c2){return _0x2e05c2?{'count':_0x2faedc,'rows':_0x2e05c2}:null;}})[_0x33c0('0x26')](respondWithResult(_0x499ac8,null))[_0x33c0('0x4b')](handleError(_0x499ac8,null));};exports[_0x33c0('0x6f')]=function(_0xe81955,_0x2751c1,_0x3811a2){var _0xb794f7=_0xe81955['body'][_0x33c0('0x70')];var _0x2f52db=_[_0x33c0('0x2c')](_0xb794f7,'id');return db['Team'][_0x33c0('0x4a')]({'where':{'id':_0x2f52db},'attributes':['id'],'include':[{'model':db[_0x33c0('0x71')],'as':_0x33c0('0x72'),'attributes':['id',_0x33c0('0x30'),_0x33c0('0x73'),_0x33c0('0x74'),'interface'],'raw':!![]}]})['then'](function(_0x33261f){if(_0x33261f){var _0x214f96=_[_0x33c0('0x75')](_0x33261f,function(_0xe623ce){var _0x3fcae0=_0xe623ce[_0x33c0('0x28')]({'plain':!![]});_0x3fcae0[_0x33c0('0x72')][_0x33c0('0x76')](function(_0x546053){_0x546053['penalty']=_[_0x33c0('0x2f')](_0xb794f7,{'id':_0x3fcae0['id']})[_0x33c0('0x77')];});return _0x3fcae0[_0x33c0('0x72')];});return db[_0x33c0('0x37')][_0x33c0('0x2f')]({'where':{'id':_0xe81955[_0x33c0('0x4d')]['id']}})[_0x33c0('0x26')](function(_0x85480c){return db[_0x33c0('0x78')]['transaction'](function(_0x197625){return _0x85480c[_0x33c0('0x6f')](_0x2f52db,{'transaction':_0x197625})[_0x33c0('0x26')](function(){return BPromise['each'](_0xb794f7,function(_0x3eff05){return db[_0x33c0('0x79')]['upsert']({'TeamId':_0x3eff05['id'],'VoiceQueueId':_0xe81955[_0x33c0('0x4d')]['id'],'penalty':_0x3eff05['penalty']},{'transaction':_0x197625});});})[_0x33c0('0x26')](function(){return BPromise[_0x33c0('0x7a')](_0x214f96,function(_0x187c9f){return db[_0x33c0('0x7b')]['findOrCreate']({'where':{'UserId':_0x187c9f['id'],'VoiceQueueId':_0xe81955[_0x33c0('0x4d')]['id']},'defaults':{'penalty':_0x187c9f[_0x33c0('0x77')]},'transaction':_0x197625});});})['then'](function(){return BPromise[_0x33c0('0x7a')](_[_0x33c0('0x2a')](_0x214f96,{'online':!![]}),function(_0x150c9f){return db[_0x33c0('0x7c')]['upsert']({'membername':_0x150c9f['name'],'UserId':_0x150c9f['id'],'queue_name':_0x85480c[_0x33c0('0x30')],'VoiceQueueId':_0x85480c['id'],'interface':_[_0x33c0('0x7d')](_0x150c9f['interface'])?util['format'](_0x33c0('0x7e'),_0x150c9f[_0x33c0('0x30')]):_0x150c9f[_0x33c0('0x7f')],'paused':_0x150c9f[_0x33c0('0x74')]||![],'penalty':_0x150c9f[_0x33c0('0x77')]},{'transaction':_0x197625});});})[_0x33c0('0x26')](function(){_0x214f96[_0x33c0('0x76')](function(_0x4dac72){socket['emit'](_0x33c0('0x80'),{'UserId':_0x4dac72['id'],'VoiceQueueId':_0x85480c['id']});});});});});}})[_0x33c0('0x26')](respondWithStatusCode(_0x2751c1,null))['catch'](handleError(_0x2751c1,null));};exports[_0x33c0('0x81')]=function(_0x4cc9c8,_0x59d511,_0x56e434){return db[_0x33c0('0x6e')][_0x33c0('0x4a')]({'where':{'id':_0x4cc9c8[_0x33c0('0x3b')][_0x33c0('0x82')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x33c0('0x72'),'attributes':['id'],'raw':!![]}]})[_0x33c0('0x26')](handleEntityNotFound(_0x59d511,null))[_0x33c0('0x26')](function(_0x16c34e){var _0x567a7a=_[_0x33c0('0x2c')](_0x16c34e,'id');var _0x2bad08=[];var _0x60c25a=[];var _0x40e70e=squel[_0x33c0('0x83')]();_0x40e70e[_0x33c0('0x84')]('tq.TeamId')[_0x33c0('0x85')](_0x33c0('0x86'),'tq')['join'](_0x33c0('0x87'),'ut',_0x33c0('0x88'))['where'](_0x33c0('0x89'),_0x4cc9c8[_0x33c0('0x4d')]['id']);for(var _0x596b06=0x0;_0x596b06<_0x16c34e['length'];_0x596b06+=0x1){let _0x3ca642=_0x16c34e[_0x596b06];for(var _0x47df2b=0x0;_0x47df2b<_0x3ca642['Agents']['length'];_0x47df2b+=0x1){let _0xeadbd2=_0x3ca642['Agents'][_0x47df2b];var _0x32edfb=_0x40e70e[_0x33c0('0x59')]();_0x32edfb['where'](_0x33c0('0x8a'),_0xeadbd2['id']);_0x60c25a[_0x33c0('0x8b')](db['sequelize'][_0x33c0('0x3b')](_0x32edfb[_0x33c0('0x8c')](),{'type':db[_0x33c0('0x78')][_0x33c0('0x8d')][_0x33c0('0x8e')]})[_0x33c0('0x26')](function(_0x88335c){if(_0x88335c['length']===0x1){return _0xeadbd2['id'];}else{var _0x37d2b3=_[_0x33c0('0x8f')](_[_0x33c0('0x2c')](_0x88335c,_0x33c0('0x90')),function(_0x370ae4){return _[_0x33c0('0x91')](_0x567a7a,_0x370ae4);});if(_0x37d2b3){return _0xeadbd2['id'];}}}));}}return BPromise[_0x33c0('0x92')](_0x60c25a)['then'](function(_0x108182){_0x2bad08=_(_0x2bad08)[_0x33c0('0x93')](_0x108182)[_0x33c0('0x94')]()[_0x33c0('0x2d')]();return db[_0x33c0('0x37')][_0x33c0('0x2f')]({'where':{'id':_0x4cc9c8[_0x33c0('0x4d')]['id']}})['then'](function(_0x10234b){return db['sequelize'][_0x33c0('0x95')](function(_0x358460){return _0x10234b['removeTeams'](_0x4cc9c8[_0x33c0('0x3b')]['ids'],{'transaction':_0x358460})[_0x33c0('0x26')](function(){if(!_[_0x33c0('0x96')](_0x2bad08)){return _0x10234b[_0x33c0('0x97')](_0x2bad08,{'transaction':_0x358460})['then'](function(){return db[_0x33c0('0x7c')][_0x33c0('0x27')]({'where':{'VoiceQueueId':_0x4cc9c8['params']['id'],'UserId':_0x2bad08},'transaction':_0x358460});});}})['then'](function(){_0x2bad08[_0x33c0('0x76')](function(_0x537b78){socket[_0x33c0('0x98')](_0x33c0('0x99'),{'UserId':_0x537b78,'VoiceQueueId':_0x10234b['id']});});});});});});})[_0x33c0('0x26')](respondWithStatusCode(_0x59d511,null))['catch'](handleError(_0x59d511,null));};exports[_0x33c0('0x9a')]=function(_0x141ce0,_0x55d3c4,_0x3e2195){var _0x3e54cb,_0x47bb19;return db[_0x33c0('0x37')][_0x33c0('0x2f')]({'where':{'id':_0x141ce0['params']['id']}})[_0x33c0('0x26')](handleEntityNotFound(_0x55d3c4,null))[_0x33c0('0x26')](function(_0x5873fd){if(_0x5873fd){_0x47bb19=_0x5873fd;return _0x5873fd['addAgents'](_0x141ce0['body'][_0x33c0('0x82')],_[_0x33c0('0x5a')](_0x141ce0['body'],[_0x33c0('0x82'),'id'])||{})[_0x33c0('0x9b')](function(_0x4f0a3a){for(var _0x370774=0x0;_0x370774<_0x141ce0[_0x33c0('0x5d')][_0x33c0('0x82')][_0x33c0('0x3f')];_0x370774+=0x1){socket[_0x33c0('0x98')](_0x33c0('0x80'),{'UserId':Number(_0x141ce0[_0x33c0('0x5d')][_0x33c0('0x82')][_0x370774]),'VoiceQueueId':Number(_0x141ce0['params']['id'])});}return _0x4f0a3a;});}})[_0x33c0('0x26')](function(_0x199e52){_0x3e54cb=_0x199e52||[];if(_0x47bb19){return db['User']['findAll']({'where':{'id':_0x141ce0[_0x33c0('0x5d')][_0x33c0('0x82')]},'attributes':['id','name','online',_0x33c0('0x74'),'interface'],'raw':!![]});}})[_0x33c0('0x26')](function(_0x1c5993){if(!_[_0x33c0('0x96')](_0x1c5993)){var _0x3a6643=[];for(var _0x137e57=0x0;_0x137e57<_0x1c5993[_0x33c0('0x3f')];_0x137e57++){if(_0x1c5993[_0x137e57][_0x33c0('0x73')]){_0x3a6643[_0x33c0('0x8b')](db[_0x33c0('0x7c')][_0x33c0('0x9c')]({'membername':_0x1c5993[_0x137e57][_0x33c0('0x30')],'UserId':_0x1c5993[_0x137e57]['id'],'queue_name':_0x47bb19[_0x33c0('0x30')],'VoiceQueueId':_0x47bb19['id'],'interface':_[_0x33c0('0x7d')](_0x1c5993[_0x137e57][_0x33c0('0x7f')])?util[_0x33c0('0x9d')](_0x33c0('0x7e'),_0x1c5993[_0x137e57][_0x33c0('0x30')]):_0x1c5993[_0x137e57]['interface'],'paused':_0x1c5993[_0x137e57][_0x33c0('0x74')]||![],'penalty':_0x141ce0[_0x33c0('0x5d')]['penalty']||0x0}));}}return BPromise['all'](_0x3a6643);}})['then'](function(){return _0x3e54cb;})[_0x33c0('0x26')](respondWithResult(_0x55d3c4,null))[_0x33c0('0x4b')](handleError(_0x55d3c4,null));};exports[_0x33c0('0x97')]=function(_0x57dda6,_0x3dfad1,_0x2758c3){return db[_0x33c0('0x37')][_0x33c0('0x2f')]({'where':{'id':_0x57dda6[_0x33c0('0x4d')]['id']}})[_0x33c0('0x26')](handleEntityNotFound(_0x3dfad1,null))['then'](function(_0xf3a9b7){if(_0xf3a9b7){return _0xf3a9b7[_0x33c0('0x97')](_0x57dda6[_0x33c0('0x3b')][_0x33c0('0x82')])[_0x33c0('0x26')](function(){if(_[_0x33c0('0x9e')](_0x57dda6[_0x33c0('0x3b')]['ids'])){for(var _0x5ab7f7=0x0;_0x5ab7f7<_0x57dda6['query'][_0x33c0('0x82')][_0x33c0('0x3f')];_0x5ab7f7+=0x1){socket[_0x33c0('0x98')]('userVoiceQueue:remove',{'UserId':Number(_0x57dda6[_0x33c0('0x3b')]['ids'][_0x5ab7f7]),'VoiceQueueId':Number(_0x57dda6[_0x33c0('0x4d')]['id'])});}}else{socket['emit']('userVoiceQueue:remove',{'UserId':Number(_0x57dda6[_0x33c0('0x3b')]['ids']),'VoiceQueueId':Number(_0x57dda6[_0x33c0('0x4d')]['id'])});}});}})[_0x33c0('0x26')](function(_0x20a8dc){return db[_0x33c0('0x7c')][_0x33c0('0x27')]({'where':{'VoiceQueueId':_0x57dda6['params']['id'],'UserId':_0x57dda6[_0x33c0('0x3b')][_0x33c0('0x82')]}})[_0x33c0('0x26')](function(){return _0x20a8dc;});})[_0x33c0('0x26')](respondWithStatusCode(_0x3dfad1,null))['catch'](handleError(_0x3dfad1,null));};exports[_0x33c0('0x9f')]=function(_0x54b77a,_0x1023b0,_0x256e86){var _0x556266={};var _0x53c62a={};var _0xa3e38e;var _0x3826bd;return db['VoiceQueue'][_0x33c0('0x66')]({'where':{'id':_0x54b77a[_0x33c0('0x4d')]['id']}})[_0x33c0('0x26')](handleEntityNotFound(_0x1023b0,null))[_0x33c0('0x26')](function(_0xf9ff25){if(_0xf9ff25){_0xa3e38e=_0xf9ff25;_0x53c62a[_0x33c0('0x3a')]=_['keys'](db[_0x33c0('0x71')][_0x33c0('0x38')]);_0x53c62a['query']=_[_0x33c0('0x4e')](_0x54b77a['query']);_0x53c62a['filters']=_[_0x33c0('0x4f')](_0x53c62a[_0x33c0('0x3a')],_0x53c62a[_0x33c0('0x3b')]);_0x556266[_0x33c0('0x3d')]=_[_0x33c0('0x4f')](_0x53c62a[_0x33c0('0x3a')],qs['fields'](_0x54b77a['query'][_0x33c0('0x3e')]));_0x556266[_0x33c0('0x3d')]=_0x556266['attributes']['length']?_0x556266['attributes']:_0x53c62a['model'];_0x556266[_0x33c0('0x41')]=qs['sort'](_0x54b77a['query'][_0x33c0('0x42')]);_0x556266[_0x33c0('0x43')]=qs['filters'](_[_0x33c0('0x44')](_0x54b77a[_0x33c0('0x3b')],_0x53c62a[_0x33c0('0x3c')]));if(_0x54b77a['query'][_0x33c0('0x2a')]){_0x556266[_0x33c0('0x43')]=_[_0x33c0('0x45')](_0x556266[_0x33c0('0x43')],{'$or':_[_0x33c0('0x2c')](_0x556266['attributes'],function(_0x46593e){var _0x121331={};_0x121331[_0x46593e]={'$like':'%'+_0x54b77a['query'][_0x33c0('0x2a')]+'%'};return _0x121331;})});}_0x556266=_[_0x33c0('0x45')]({},_0x556266,_0x54b77a[_0x33c0('0x47')]);return _0xa3e38e[_0x33c0('0x9f')](_0x556266);}})['then'](function(_0x126253){if(_0x126253){_0x3826bd=_0x126253[_0x33c0('0x3f')];if(!_0x54b77a[_0x33c0('0x3b')]['hasOwnProperty'](_0x33c0('0x68'))){_0x556266[_0x33c0('0x1f')]=qs[_0x33c0('0x1f')](_0x54b77a['query'][_0x33c0('0x1f')]);_0x556266[_0x33c0('0x1d')]=qs[_0x33c0('0x1d')](_0x54b77a[_0x33c0('0x3b')][_0x33c0('0x1d')]);}return _0xa3e38e[_0x33c0('0x9f')](_0x556266);}})[_0x33c0('0x26')](function(_0x5f9441){if(_0x5f9441){return _0x5f9441?{'count':_0x3826bd,'rows':_0x5f9441}:null;}})[_0x33c0('0x26')](respondWithResult(_0x1023b0,null))[_0x33c0('0x4b')](handleError(_0x1023b0,null));};exports[_0x33c0('0xa0')]=function(_0x89187c,_0x295796,_0x19110f){var _0x533984={};var _0x52754b={};var _0x1affb9;var _0x517462;return db[_0x33c0('0x37')][_0x33c0('0x66')]({'where':{'id':_0x89187c['params']['id']}})['then'](handleEntityNotFound(_0x295796,null))[_0x33c0('0x26')](function(_0x329cd0){if(_0x329cd0){_0x1affb9=_0x329cd0;_0x52754b[_0x33c0('0x3a')]=_[_0x33c0('0x4e')](db[_0x33c0('0x7c')]['rawAttributes']);_0x52754b[_0x33c0('0x3b')]=_[_0x33c0('0x4e')](_0x89187c[_0x33c0('0x3b')]);_0x52754b[_0x33c0('0x3c')]=_[_0x33c0('0x4f')](_0x52754b[_0x33c0('0x3a')],_0x52754b['query']);_0x533984[_0x33c0('0x3d')]=_[_0x33c0('0x4f')](_0x52754b[_0x33c0('0x3a')],qs['fields'](_0x89187c[_0x33c0('0x3b')][_0x33c0('0x3e')]));_0x533984[_0x33c0('0x3d')]=_0x533984['attributes'][_0x33c0('0x3f')]?_0x533984['attributes']:_0x52754b[_0x33c0('0x3a')];_0x533984[_0x33c0('0x41')]=qs[_0x33c0('0x42')](_0x89187c[_0x33c0('0x3b')][_0x33c0('0x42')]);_0x533984[_0x33c0('0x43')]=qs[_0x33c0('0x3c')](_['pick'](_0x89187c[_0x33c0('0x3b')],_0x52754b[_0x33c0('0x3c')]));if(_0x89187c['query'][_0x33c0('0x2a')]){_0x533984[_0x33c0('0x43')]=_[_0x33c0('0x45')](_0x533984[_0x33c0('0x43')],{'$or':_['map'](_0x533984[_0x33c0('0x3d')],function(_0x7fc0a2){var _0x128965={};_0x128965[_0x7fc0a2]={'$like':'%'+_0x89187c[_0x33c0('0x3b')][_0x33c0('0x2a')]+'%'};return _0x128965;})});}_0x533984=_[_0x33c0('0x45')]({},_0x533984,_0x89187c[_0x33c0('0x47')]);return _0x1affb9['getMembers'](_0x533984);}})[_0x33c0('0x26')](function(_0x1106df){if(_0x1106df){_0x517462=_0x1106df[_0x33c0('0x3f')];if(!_0x89187c['query'][_0x33c0('0x40')](_0x33c0('0x68'))){_0x533984[_0x33c0('0x1f')]=qs[_0x33c0('0x1f')](_0x89187c[_0x33c0('0x3b')][_0x33c0('0x1f')]);_0x533984[_0x33c0('0x1d')]=qs[_0x33c0('0x1d')](_0x89187c[_0x33c0('0x3b')]['offset']);}return _0x1affb9[_0x33c0('0xa0')](_0x533984);}})[_0x33c0('0x26')](function(_0x13e1f4){return _0x13e1f4?{'count':_0x517462,'rows':_0x13e1f4}:null;})['then'](respondWithResult(_0x295796,null))[_0x33c0('0x4b')](handleError(_0x295796,null));};exports[_0x33c0('0xa1')]=function(_0x4a6a29,_0x4f6180,_0x2badce){var _0x4f6d6a={};var _0x2026ff={};var _0x359240;var _0x24039d;return db[_0x33c0('0x37')][_0x33c0('0x66')]({'where':{'id':_0x4a6a29['params']['id']}})[_0x33c0('0x26')](handleEntityNotFound(_0x4f6180,null))[_0x33c0('0x26')](function(_0x1ea231){if(_0x1ea231){_0x359240=_0x1ea231;_0x2026ff[_0x33c0('0x3a')]=_['keys'](db['CmList'][_0x33c0('0x38')]);_0x2026ff['query']=_[_0x33c0('0x4e')](_0x4a6a29[_0x33c0('0x3b')]);_0x2026ff[_0x33c0('0x3c')]=_[_0x33c0('0x4f')](_0x2026ff[_0x33c0('0x3a')],_0x2026ff[_0x33c0('0x3b')]);_0x4f6d6a['attributes']=_[_0x33c0('0x4f')](_0x2026ff[_0x33c0('0x3a')],qs[_0x33c0('0x3e')](_0x4a6a29['query'][_0x33c0('0x3e')]));_0x4f6d6a[_0x33c0('0x3d')]=_0x4f6d6a['attributes'][_0x33c0('0x3f')]?_0x4f6d6a[_0x33c0('0x3d')]:_0x2026ff[_0x33c0('0x3a')];_0x4f6d6a[_0x33c0('0x41')]=qs[_0x33c0('0x42')](_0x4a6a29[_0x33c0('0x3b')][_0x33c0('0x42')]);_0x4f6d6a[_0x33c0('0x43')]=qs[_0x33c0('0x3c')](_[_0x33c0('0x44')](_0x4a6a29[_0x33c0('0x3b')],_0x2026ff[_0x33c0('0x3c')]));if(_0x4a6a29[_0x33c0('0x3b')][_0x33c0('0x2a')]){_0x4f6d6a[_0x33c0('0x43')]=_[_0x33c0('0x45')](_0x4f6d6a[_0x33c0('0x43')],{'$or':_[_0x33c0('0x2c')](_0x4f6d6a['attributes'],function(_0x234447){var _0x156999={};_0x156999[_0x234447]={'$like':'%'+_0x4a6a29[_0x33c0('0x3b')][_0x33c0('0x2a')]+'%'};return _0x156999;})});}_0x4f6d6a=_[_0x33c0('0x45')]({},_0x4f6d6a,_0x4a6a29[_0x33c0('0x47')]);return _0x359240[_0x33c0('0xa1')](_0x4f6d6a);}})['then'](function(_0x16c628){if(_0x16c628){_0x24039d=_0x16c628['length'];if(!_0x4a6a29[_0x33c0('0x3b')][_0x33c0('0x40')](_0x33c0('0x68'))){_0x4f6d6a['limit']=qs[_0x33c0('0x1f')](_0x4a6a29[_0x33c0('0x3b')][_0x33c0('0x1f')]);_0x4f6d6a['offset']=qs[_0x33c0('0x1d')](_0x4a6a29[_0x33c0('0x3b')]['offset']);}return _0x359240['getLists'](_0x4f6d6a);}})[_0x33c0('0x26')](function(_0x1d6aed){if(_0x1d6aed){return _0x1d6aed?{'count':_0x24039d,'rows':_0x1d6aed}:null;}})[_0x33c0('0x26')](respondWithResult(_0x4f6180,null))[_0x33c0('0x4b')](handleError(_0x4f6180,null));};exports[_0x33c0('0xa2')]=function(_0xeae4e9,_0x14bd3b,_0x5a6b92){var _0x23a859=moment()[_0x33c0('0x9d')]('YYYY-MM-DD\x20HH:mm:ss');var _0x12a181,_0x475c0b;return db[_0x33c0('0x37')][_0x33c0('0x2f')]({'where':{'id':_0xeae4e9[_0x33c0('0x4d')]['id']}})[_0x33c0('0x26')](handleEntityNotFound(_0x14bd3b,null))[_0x33c0('0x26')](function(_0xa16302){if(_0xa16302){_0x475c0b=_0xa16302;return _0xa16302[_0x33c0('0xa2')](_0xeae4e9['body'][_0x33c0('0x82')],_[_0x33c0('0x5a')](_0xeae4e9[_0x33c0('0x5d')],[_0x33c0('0x82'),'id'])||{});}return null;})[_0x33c0('0x9b')](function(_0x48ab21){var _0x26cbc7;_0x12a181=_0x48ab21||[];var _0x5d1e6d=[];if(_0x48ab21){for(var _0x59765e=0x0;_0x59765e<_0x48ab21[_0x33c0('0x3f')];_0x59765e+=0x1){var _0xe6629f=_0x48ab21[_0x59765e][_0x33c0('0x28')]({'plain':!![]});_0x475c0b['dialCheckDuplicateType']=_0xeae4e9['body'][_0x33c0('0xa3')]?_0xeae4e9[_0x33c0('0x5d')]['dialCheckDuplicateType']:_0x475c0b['dialCheckDuplicateType'];switch(_0x475c0b[_0x33c0('0xa3')]){case _0x33c0('0xa4'):_0x26cbc7=squel[_0x33c0('0xa5')]()[_0x33c0('0xa6')](_0x33c0('0xa7'))['fromQuery']([_0x33c0('0xa8'),'scheduledAt',_0x33c0('0xa9'),_0x33c0('0xaa'),'VoiceQueueId',_0x33c0('0x5b'),_0x33c0('0x5c')],squel[_0x33c0('0x83')]()[_0x33c0('0x84')](_0x33c0('0xa8'),_0x33c0('0xa8'))['field']('\x27'+_0x23a859+'\x27','scheduledAt')[_0x33c0('0x84')]('id','ContactId')['field'](_0xe6629f['CmListId']['toString'](),_0x33c0('0xaa'))[_0x33c0('0x84')](_0xeae4e9[_0x33c0('0x4d')]['id'][_0x33c0('0x8c')](),_0x33c0('0x69'))['field']('\x27'+_0x23a859+'\x27',_0x33c0('0x5b'))[_0x33c0('0x84')]('\x27'+_0x23a859+'\x27','updatedAt')[_0x33c0('0x85')]('cm_contacts')[_0x33c0('0x43')](_0x33c0('0xab'))[_0x33c0('0x43')]('ListId\x20=\x20?',_0xe6629f[_0x33c0('0xac')]['toString']())[_0x33c0('0x43')](_0x33c0('0xad'))[_0x33c0('0x43')](_0x33c0('0xae'),squel['select']()[_0x33c0('0x84')]('COALESCE(calleridnum,\x27\x27)')['from'](_0x33c0('0xaf'))[_0x33c0('0x43')]('VoiceQueueId\x20=\x20?',_0xeae4e9['params']['id']['toString']()))[_0x33c0('0x43')](_0x33c0('0xae'),squel['select']()[_0x33c0('0x84')]('COALESCE(phone,\x27\x27)')[_0x33c0('0x85')](_0x33c0('0xa7'))['where'](_0x33c0('0x89'),_0xeae4e9['params']['id']['toString']())))[_0x33c0('0x8c')]();break;case'onlyIfOpen':_0x26cbc7=squel[_0x33c0('0xa5')]()[_0x33c0('0xa6')](_0x33c0('0xa7'))['fromQuery']([_0x33c0('0xa8'),'scheduledAt',_0x33c0('0xa9'),'ListId','VoiceQueueId',_0x33c0('0x5b'),'updatedAt'],squel[_0x33c0('0x83')]()['field'](_0x33c0('0xa8'),_0x33c0('0xa8'))[_0x33c0('0x84')]('\x27'+_0x23a859+'\x27',_0x33c0('0xb0'))[_0x33c0('0x84')]('id',_0x33c0('0xa9'))[_0x33c0('0x84')](_0xe6629f[_0x33c0('0xac')][_0x33c0('0x8c')](),_0x33c0('0xaa'))[_0x33c0('0x84')](_0xeae4e9[_0x33c0('0x4d')]['id'][_0x33c0('0x8c')](),'VoiceQueueId')[_0x33c0('0x84')]('\x27'+_0x23a859+'\x27',_0x33c0('0x5b'))[_0x33c0('0x84')]('\x27'+_0x23a859+'\x27',_0x33c0('0x5c'))['from'](_0x33c0('0xb1'))[_0x33c0('0x43')]('deletedAt\x20IS\x20NULL')[_0x33c0('0x43')]('ListId\x20=\x20?',_0xe6629f[_0x33c0('0xac')][_0x33c0('0x8c')]())[_0x33c0('0x43')]('phone\x20IS\x20NOT\x20NULL')[_0x33c0('0x43')](_0x33c0('0xae'),squel[_0x33c0('0x83')]()['field'](_0x33c0('0xb2'))[_0x33c0('0x85')](_0x33c0('0xa7'))[_0x33c0('0x43')](_0x33c0('0x89'),_0xeae4e9['params']['id'][_0x33c0('0x8c')]())))[_0x33c0('0x8c')]();break;default:_0x26cbc7=squel['insert']()[_0x33c0('0xa6')](_0x33c0('0xa7'))['fromQuery']([_0x33c0('0xa8'),_0x33c0('0xb0'),_0x33c0('0xa9'),'ListId','VoiceQueueId',_0x33c0('0x5b'),_0x33c0('0x5c')],squel[_0x33c0('0x83')]()[_0x33c0('0x84')](_0x33c0('0xa8'),_0x33c0('0xa8'))[_0x33c0('0x84')]('\x27'+_0x23a859+'\x27',_0x33c0('0xb0'))['field']('id','ContactId')[_0x33c0('0x84')](_0xe6629f[_0x33c0('0xac')][_0x33c0('0x8c')](),_0x33c0('0xaa'))[_0x33c0('0x84')](_0xeae4e9[_0x33c0('0x4d')]['id'][_0x33c0('0x8c')](),_0x33c0('0x69'))['field']('\x27'+_0x23a859+'\x27',_0x33c0('0x5b'))[_0x33c0('0x84')]('\x27'+_0x23a859+'\x27',_0x33c0('0x5c'))[_0x33c0('0x85')](_0x33c0('0xb1'))[_0x33c0('0x43')](_0x33c0('0xab'))[_0x33c0('0x43')](_0x33c0('0xb3'),_0xe6629f[_0x33c0('0xac')][_0x33c0('0x8c')]())[_0x33c0('0x43')](_0x33c0('0xad')))[_0x33c0('0x8c')]();}_0x5d1e6d['push'](db[_0x33c0('0x78')][_0x33c0('0x3b')](_0x26cbc7));}return BPromise['all'](_0x5d1e6d);}})[_0x33c0('0x26')](function(){var _0x54736b=[];var _0xa58d98=squel[_0x33c0('0xa5')]()[_0x33c0('0xa6')](_0x33c0('0xb4'))['fromQuery']([_0x33c0('0xb5'),_0x33c0('0xa8'),_0x33c0('0xb6'),_0x33c0('0x5b'),_0x33c0('0x5c')],squel[_0x33c0('0x83')]()[_0x33c0('0x84')](_0x33c0('0xb7'))[_0x33c0('0x84')](_0x33c0('0xb8'))[_0x33c0('0x84')](_0x33c0('0xb9'))['field']('\x27'+_0x23a859+'\x27',_0x33c0('0x5b'))[_0x33c0('0x84')]('\x27'+_0x23a859+'\x27',_0x33c0('0x5c'))[_0x33c0('0x85')]('cm_contact_has_items','ci')[_0x33c0('0xba')](_0x33c0('0xa7'),'h',_0x33c0('0xbb'))['where'](_0x33c0('0xbc'),_0x23a859)['where'](_0x33c0('0xbd'),_0x33c0('0xbe')))[_0x33c0('0x8c')]();_0x54736b[_0x33c0('0x8b')](db[_0x33c0('0x78')][_0x33c0('0x3b')](_0xa58d98));return BPromise[_0x33c0('0x92')](_0x54736b);})[_0x33c0('0x26')](function(){return _0x12a181;})[_0x33c0('0x26')](respondWithResult(_0x14bd3b,null))[_0x33c0('0x4b')](handleError(_0x14bd3b,null));};exports['removeLists']=function(_0x182358,_0x3d8b7,_0x299656){return db[_0x33c0('0x37')][_0x33c0('0x2f')]({'where':{'id':_0x182358[_0x33c0('0x4d')]['id']}})[_0x33c0('0x26')](handleEntityNotFound(_0x3d8b7,null))[_0x33c0('0x26')](function(_0x5d402a){if(_0x5d402a){return _0x5d402a[_0x33c0('0xbf')](_0x182358[_0x33c0('0x3b')]['ids']);}})[_0x33c0('0x26')](function(_0x1793e9){if(_0x1793e9){return db[_0x33c0('0x63')][_0x33c0('0x27')]({'where':{'ListId':_0x182358['query'][_0x33c0('0x82')],'VoiceQueueId':_0x182358[_0x33c0('0x4d')]['id']}})['then'](function(){return _0x1793e9;});}})[_0x33c0('0x26')](respondWithStatusCode(_0x3d8b7,null))[_0x33c0('0x4b')](handleError(_0x3d8b7,null));};exports[_0x33c0('0xc0')]=function(_0x35e787,_0xe03662,_0x49a25b){var _0x2f6189={};var _0x30719e={};var _0x3116f8;var _0x14636d;return db[_0x33c0('0x37')][_0x33c0('0x66')]({'where':{'id':_0x35e787[_0x33c0('0x4d')]['id']}})[_0x33c0('0x26')](handleEntityNotFound(_0xe03662,null))[_0x33c0('0x26')](function(_0xa6b98d){if(_0xa6b98d){_0x3116f8=_0xa6b98d;_0x30719e[_0x33c0('0x3a')]=_[_0x33c0('0x4e')](db[_0x33c0('0xc1')]['rawAttributes']);_0x30719e[_0x33c0('0x3b')]=_[_0x33c0('0x4e')](_0x35e787[_0x33c0('0x3b')]);_0x30719e['filters']=_[_0x33c0('0x4f')](_0x30719e[_0x33c0('0x3a')],_0x30719e['query']);_0x2f6189[_0x33c0('0x3d')]=_[_0x33c0('0x4f')](_0x30719e[_0x33c0('0x3a')],qs[_0x33c0('0x3e')](_0x35e787[_0x33c0('0x3b')][_0x33c0('0x3e')]));_0x2f6189['attributes']=_0x2f6189[_0x33c0('0x3d')][_0x33c0('0x3f')]?_0x2f6189['attributes']:_0x30719e[_0x33c0('0x3a')];_0x2f6189['order']=qs[_0x33c0('0x42')](_0x35e787[_0x33c0('0x3b')][_0x33c0('0x42')]);_0x2f6189[_0x33c0('0x43')]=qs[_0x33c0('0x3c')](_[_0x33c0('0x44')](_0x35e787[_0x33c0('0x3b')],_0x30719e['filters']));if(_0x35e787[_0x33c0('0x3b')][_0x33c0('0x2a')]){_0x2f6189['where']=_[_0x33c0('0x45')](_0x2f6189[_0x33c0('0x43')],{'$or':_[_0x33c0('0x2c')](_0x2f6189[_0x33c0('0x3d')],function(_0xd98262){var _0x178a07={};_0x178a07[_0xd98262]={'$like':'%'+_0x35e787[_0x33c0('0x3b')][_0x33c0('0x2a')]+'%'};return _0x178a07;})});}_0x2f6189=_[_0x33c0('0x45')]({},_0x2f6189,_0x35e787[_0x33c0('0x47')]);return _0x3116f8[_0x33c0('0xc0')](_0x2f6189);}})[_0x33c0('0x26')](function(_0x56b8ca){if(_0x56b8ca){_0x14636d=_0x56b8ca[_0x33c0('0x3f')];if(!_0x35e787[_0x33c0('0x3b')][_0x33c0('0x40')](_0x33c0('0x68'))){_0x2f6189['limit']=qs['limit'](_0x35e787[_0x33c0('0x3b')][_0x33c0('0x1f')]);_0x2f6189['offset']=qs[_0x33c0('0x1d')](_0x35e787[_0x33c0('0x3b')][_0x33c0('0x1d')]);}return _0x3116f8['getBlackLists'](_0x2f6189);}})[_0x33c0('0x26')](function(_0x5ca917){if(_0x5ca917){return _0x5ca917?{'count':_0x14636d,'rows':_0x5ca917}:null;}})[_0x33c0('0x26')](respondWithResult(_0xe03662,null))[_0x33c0('0x4b')](handleError(_0xe03662,null));};exports[_0x33c0('0xc2')]=function(_0x1023af,_0x2b6c7e,_0x1bc992){var _0x5c69b4,_0x36f192;return db[_0x33c0('0x37')][_0x33c0('0x2f')]({'where':{'id':_0x1023af['params']['id']}})[_0x33c0('0x26')](handleEntityNotFound(_0x2b6c7e,null))[_0x33c0('0x26')](function(_0x414ea2){if(_0x414ea2){_0x36f192=_0x414ea2;return _0x414ea2['addBlackLists'](_0x1023af[_0x33c0('0x5d')]['ids'],_[_0x33c0('0x5a')](_0x1023af['body'],[_0x33c0('0x82'),'id'])||{});}return null;})[_0x33c0('0x9b')](function(_0x11c354){var _0x56e7a0;_0x5c69b4=_0x11c354||[];var _0x2b68e6=[];if(_0x11c354){for(var _0x3c06a2=0x0;_0x3c06a2<_0x11c354[_0x33c0('0x3f')];_0x3c06a2+=0x1){var _0x145373=_0x11c354[_0x3c06a2][_0x33c0('0x28')]({'plain':!![]});_0x56e7a0=squel[_0x33c0('0xa5')]()[_0x33c0('0xa6')](_0x33c0('0xc3'))['fromQuery']([_0x33c0('0xa8'),'ContactId',_0x33c0('0xaa'),_0x33c0('0x69'),_0x33c0('0x5b'),_0x33c0('0x5c')],squel[_0x33c0('0x83')]()['field'](_0x33c0('0xa8'),_0x33c0('0xa8'))['field']('id',_0x33c0('0xa9'))[_0x33c0('0x84')](_0x145373[_0x33c0('0xac')]['toString'](),_0x33c0('0xaa'))[_0x33c0('0x84')](_0x1023af[_0x33c0('0x4d')]['id'][_0x33c0('0x8c')](),'VoiceQueueId')[_0x33c0('0x84')](_0x33c0('0xc4'),_0x33c0('0x5b'))[_0x33c0('0x84')](_0x33c0('0xc4'),_0x33c0('0x5c'))[_0x33c0('0x85')](_0x33c0('0xb1'))[_0x33c0('0x43')](_0x33c0('0xab'))[_0x33c0('0x43')]('ListId\x20=\x20?',_0x145373['CmListId'][_0x33c0('0x8c')]())[_0x33c0('0x43')](_0x33c0('0xad')))[_0x33c0('0x8c')]();_0x2b68e6[_0x33c0('0x8b')](db[_0x33c0('0x78')][_0x33c0('0x3b')](_0x56e7a0));}return BPromise[_0x33c0('0x92')](_0x2b68e6);}})[_0x33c0('0x26')](function(){return _0x5c69b4;})[_0x33c0('0x26')](respondWithResult(_0x2b6c7e,null))['catch'](handleError(_0x2b6c7e,null));};exports['removeBlackLists']=function(_0x1fe3ee,_0x1099a1,_0x48dc62){return db['VoiceQueue'][_0x33c0('0x2f')]({'where':{'id':_0x1fe3ee['params']['id']}})[_0x33c0('0x26')](handleEntityNotFound(_0x1099a1,null))[_0x33c0('0x26')](function(_0x56ec8c){if(_0x56ec8c){return _0x56ec8c[_0x33c0('0xc5')](_0x1fe3ee[_0x33c0('0x3b')][_0x33c0('0x82')]);}})[_0x33c0('0x26')](function(_0x34629b){if(_0x34629b){return db[_0x33c0('0x6c')][_0x33c0('0x27')]({'where':{'ListId':_0x1fe3ee[_0x33c0('0x3b')]['ids'],'VoiceQueueId':_0x1fe3ee['params']['id']}})[_0x33c0('0x26')](function(){return _0x34629b;});}})[_0x33c0('0x26')](respondWithStatusCode(_0x1099a1,null))['catch'](handleError(_0x1099a1,null));};
\ No newline at end of file
+var _0xee87=['findOrCreate','UserVoiceQueueRt','isNil','interface','format','SIP/%s','voicePause','forEach','emit','userVoiceQueue:save','ids','field','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','sequelize','QueryTypes','SELECT','every','union','compact','removeTeams','isEmpty','userVoiceQueue:remove','addAgents','push','all','removeAgents','isArray','getAgents','getMembers','getLists','addLists','YYYY-MM-DD\x20HH:mm:ss','dialCheckDuplicateType','always','into','cm_hopper','fromQuery','phone','ContactId','ListId','select','scheduledAt','CmListId','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','cm_hopper_final','insert','cm_hopper_additional_phones','CmHopperId','OrderBy','ci.item','ci.OrderBy+1','cm_contact_has_items','h.ContactId=ci.CmContactId','h.scheduledat=?','ci.ItemClass=?','PHONE','removeLists','getBlackLists','CmList','spread','NOW()','removeBlackLists','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket','register','sendStatus','status','end','json','undefined','offset','count','limit','set','Content-Range','apply','save','update','then','destroy','VoiceQueues','inbound','outbound','filter','map','value','includes','find','type','name','UserProfileResource','error','stack','index','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','VoiceQueue','includeAll','findAll','catch','params','length','include','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','QueueCampaigns','UserProfileSection','userProfileId','autoAssociation','create','omit','createdAt','updatedAt','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getHoppers','findOne','CmHopper','VoiceQueueId','rows','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','User','online','Agents','penalty','transaction','each','upsert','UserVoiceQueue'];(function(_0x573fa2,_0x3a8d61){var _0x47c404=function(_0x597b86){while(--_0x597b86){_0x573fa2['push'](_0x573fa2['shift']());}};_0x47c404(++_0x3a8d61);}(_0xee87,0x10d));var _0x7ee8=function(_0x1c6793,_0x85ee98){_0x1c6793=_0x1c6793-0x0;var _0x2d7942=_0xee87[_0x1c6793];return _0x2d7942;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7ee8('0x0'));var zipdir=require(_0x7ee8('0x1'));var jsonpatch=require(_0x7ee8('0x2'));var rp=require(_0x7ee8('0x3'));var moment=require(_0x7ee8('0x4'));var BPromise=require(_0x7ee8('0x5'));var Mustache=require(_0x7ee8('0x6'));var util=require(_0x7ee8('0x7'));var path=require(_0x7ee8('0x8'));var sox=require(_0x7ee8('0x9'));var csv=require('to-csv');var ejs=require(_0x7ee8('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7ee8('0xb'));var squel=require(_0x7ee8('0xc'));var crypto=require(_0x7ee8('0xd'));var jsforce=require(_0x7ee8('0xe'));var deskjs=require(_0x7ee8('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x7ee8('0x10'));var Redis=require('ioredis');var authService=require(_0x7ee8('0x11'));var qs=require(_0x7ee8('0x12'));var as=require(_0x7ee8('0x13'));var hardwareService=require(_0x7ee8('0x14'));var logger=require(_0x7ee8('0x15'))(_0x7ee8('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x7ee8('0x17'));var db=require(_0x7ee8('0x18'))['db'];config[_0x7ee8('0x19')]=_[_0x7ee8('0x1a')](config[_0x7ee8('0x19')],{'host':_0x7ee8('0x1b'),'port':0x18eb});var socket=require(_0x7ee8('0x1c'))(new Redis(config[_0x7ee8('0x19')]));require(_0x7ee8('0x1d'))[_0x7ee8('0x1e')](socket);function respondWithStatusCode(_0x1669d7,_0x3ac36a){_0x3ac36a=_0x3ac36a||0xcc;return function(_0x59a5d3){if(_0x59a5d3){return _0x1669d7[_0x7ee8('0x1f')](_0x3ac36a);}return _0x1669d7[_0x7ee8('0x20')](_0x3ac36a)[_0x7ee8('0x21')]();};}function respondWithResult(_0x192d8c,_0xf4a2c8){_0xf4a2c8=_0xf4a2c8||0xc8;return function(_0xc46e32){if(_0xc46e32){return _0x192d8c[_0x7ee8('0x20')](_0xf4a2c8)[_0x7ee8('0x22')](_0xc46e32);}};}function respondWithFilteredResult(_0x124442,_0x18d962){return function(_0x4028a7){if(_0x4028a7){var _0xf14110=typeof _0x18d962['offset']===_0x7ee8('0x23')&&typeof _0x18d962['limit']===_0x7ee8('0x23');var _0x459ad1=_0x4028a7['count'];var _0x59e544=_0xf14110?0x0:_0x18d962[_0x7ee8('0x24')];var _0x46a49d=_0xf14110?_0x4028a7[_0x7ee8('0x25')]:_0x18d962[_0x7ee8('0x24')]+_0x18d962[_0x7ee8('0x26')];var _0x49f7e0;if(_0x46a49d>=_0x459ad1){_0x46a49d=_0x459ad1;_0x49f7e0=0xc8;}else{_0x49f7e0=0xce;}_0x124442[_0x7ee8('0x20')](_0x49f7e0);return _0x124442[_0x7ee8('0x27')](_0x7ee8('0x28'),_0x59e544+'-'+_0x46a49d+'/'+_0x459ad1)['json'](_0x4028a7);}return null;};}function patchUpdates(_0x27bff9){return function(_0x406c2c){try{jsonpatch[_0x7ee8('0x29')](_0x406c2c,_0x27bff9,!![]);}catch(_0x1bcdd9){return BPromise['reject'](_0x1bcdd9);}return _0x406c2c[_0x7ee8('0x2a')]();};}function saveUpdates(_0x273bbe,_0x1342ca){return function(_0x5568cb){if(_0x5568cb){return _0x5568cb[_0x7ee8('0x2b')](_0x273bbe)[_0x7ee8('0x2c')](function(_0x3118fe){return _0x3118fe;});}return null;};}function removeEntity(_0x5ae459,_0x3f9cae){return function(_0x3870e9){if(_0x3870e9){return _0x3870e9[_0x7ee8('0x2d')]()['then'](function(){var _0x27c94c=_0x3870e9['get']({'plain':!![]});var _0x4d23fb=[{'name':_0x7ee8('0x2e'),'value':_0x7ee8('0x2f'),'ignore':![]},{'name':'QueueCampaigns','value':_0x7ee8('0x30'),'ignore':![]}];var _0x534075=_(_0x4d23fb)[_0x7ee8('0x31')]('ignore')[_0x7ee8('0x32')]('value')[_0x7ee8('0x33')]();if(_[_0x7ee8('0x34')](_0x534075,_0x27c94c['type'])){return;}var _0x2034c5=_[_0x7ee8('0x35')](_0x4d23fb,[_0x7ee8('0x33'),_0x27c94c[_0x7ee8('0x36')]])[_0x7ee8('0x37')];return db[_0x7ee8('0x38')][_0x7ee8('0x2d')]({'where':{'type':_0x2034c5,'resourceId':_0x27c94c['id']}})['then'](function(){return _0x3870e9;});})[_0x7ee8('0x2c')](function(){_0x5ae459['status'](0xcc)[_0x7ee8('0x21')]();});}};}function handleEntityNotFound(_0x6544db,_0x4871d4){return function(_0x344796){if(!_0x344796){_0x6544db['sendStatus'](0x194);}return _0x344796;};}function handleError(_0xf99337,_0x1582ea){_0x1582ea=_0x1582ea||0x1f4;return function(_0x513bce){logger[_0x7ee8('0x39')](_0x513bce[_0x7ee8('0x3a')]);if(_0x513bce[_0x7ee8('0x37')]){delete _0x513bce[_0x7ee8('0x37')];}_0xf99337[_0x7ee8('0x20')](_0x1582ea)['send'](_0x513bce);};}exports[_0x7ee8('0x3b')]=function(_0x340852,_0x249173){var _0x505b3a={},_0x314cf7={},_0x54b5b4={'count':0x0,'rows':[]};var _0x20b1de=_[_0x7ee8('0x32')](db['VoiceQueue'][_0x7ee8('0x3c')],function(_0x18780b){return{'name':_0x18780b[_0x7ee8('0x3d')],'type':_0x18780b['type'][_0x7ee8('0x3e')]};});_0x314cf7['model']=_[_0x7ee8('0x32')](_0x20b1de,_0x7ee8('0x37'));_0x314cf7[_0x7ee8('0x3f')]=_[_0x7ee8('0x40')](_0x340852[_0x7ee8('0x3f')]);_0x314cf7[_0x7ee8('0x41')]=_[_0x7ee8('0x42')](_0x314cf7[_0x7ee8('0x43')],_0x314cf7[_0x7ee8('0x3f')]);_0x505b3a[_0x7ee8('0x44')]=_[_0x7ee8('0x42')](_0x314cf7[_0x7ee8('0x43')],qs[_0x7ee8('0x45')](_0x340852[_0x7ee8('0x3f')]['fields']));_0x505b3a['attributes']=_0x505b3a[_0x7ee8('0x44')]['length']?_0x505b3a[_0x7ee8('0x44')]:_0x314cf7[_0x7ee8('0x43')];if(!_0x340852[_0x7ee8('0x3f')][_0x7ee8('0x46')](_0x7ee8('0x47'))){_0x505b3a[_0x7ee8('0x26')]=qs[_0x7ee8('0x26')](_0x340852[_0x7ee8('0x3f')][_0x7ee8('0x26')]);_0x505b3a[_0x7ee8('0x24')]=qs[_0x7ee8('0x24')](_0x340852[_0x7ee8('0x3f')][_0x7ee8('0x24')]);}_0x505b3a[_0x7ee8('0x48')]=qs[_0x7ee8('0x49')](_0x340852[_0x7ee8('0x3f')][_0x7ee8('0x49')]);_0x505b3a[_0x7ee8('0x4a')]=qs[_0x7ee8('0x41')](_[_0x7ee8('0x4b')](_0x340852['query'],_0x314cf7[_0x7ee8('0x41')]),_0x20b1de);if(_0x340852[_0x7ee8('0x3f')]['filter']){_0x505b3a[_0x7ee8('0x4a')]=_[_0x7ee8('0x4c')](_0x505b3a['where'],{'$or':_[_0x7ee8('0x32')](_0x20b1de,function(_0x21c649){if(_0x21c649['type']!==_0x7ee8('0x4d')){var _0x533cb3={};_0x533cb3[_0x21c649['name']]={'$like':'%'+_0x340852['query']['filter']+'%'};return _0x533cb3;}})});}_0x505b3a=_[_0x7ee8('0x4c')]({},_0x505b3a,_0x340852[_0x7ee8('0x4e')]);var _0x4e2f6f={'where':_0x505b3a[_0x7ee8('0x4a')]};return db[_0x7ee8('0x4f')][_0x7ee8('0x25')](_0x4e2f6f)[_0x7ee8('0x2c')](function(_0x443108){_0x54b5b4[_0x7ee8('0x25')]=_0x443108;if(_0x340852[_0x7ee8('0x3f')][_0x7ee8('0x50')]){_0x505b3a['include']=[{'all':!![]}];}return db[_0x7ee8('0x4f')][_0x7ee8('0x51')](_0x505b3a);})['then'](function(_0xd5d48a){_0x54b5b4['rows']=_0xd5d48a;return _0x54b5b4;})['then'](respondWithFilteredResult(_0x249173,_0x505b3a))[_0x7ee8('0x52')](handleError(_0x249173,null));};exports['show']=function(_0xdd4aa5,_0x37fc8b){var _0x3a5f72={'raw':![],'where':{'id':_0xdd4aa5[_0x7ee8('0x53')]['id']}},_0x50fd2f={};_0x50fd2f['model']=_[_0x7ee8('0x40')](db[_0x7ee8('0x4f')]['rawAttributes']);_0x50fd2f[_0x7ee8('0x3f')]=_[_0x7ee8('0x40')](_0xdd4aa5[_0x7ee8('0x3f')]);_0x50fd2f[_0x7ee8('0x41')]=_['intersection'](_0x50fd2f['model'],_0x50fd2f[_0x7ee8('0x3f')]);_0x3a5f72[_0x7ee8('0x44')]=_['intersection'](_0x50fd2f[_0x7ee8('0x43')],qs['fields'](_0xdd4aa5['query'][_0x7ee8('0x45')]));_0x3a5f72[_0x7ee8('0x44')]=_0x3a5f72[_0x7ee8('0x44')][_0x7ee8('0x54')]?_0x3a5f72[_0x7ee8('0x44')]:_0x50fd2f[_0x7ee8('0x43')];if(_0xdd4aa5[_0x7ee8('0x3f')][_0x7ee8('0x50')]){_0x3a5f72[_0x7ee8('0x55')]=[{'all':!![]}];}_0x3a5f72=_[_0x7ee8('0x4c')]({},_0x3a5f72,_0xdd4aa5['options']);return db[_0x7ee8('0x4f')][_0x7ee8('0x35')](_0x3a5f72)['then'](handleEntityNotFound(_0x37fc8b,null))[_0x7ee8('0x2c')](respondWithResult(_0x37fc8b,null))[_0x7ee8('0x52')](handleError(_0x37fc8b,null));};exports['create']=function(_0x108ced,_0x1f5d06){return db['VoiceQueue']['create'](_0x108ced[_0x7ee8('0x56')],{})[_0x7ee8('0x2c')](function(_0x5b048d){var _0xfbf87f=_0x108ced[_0x7ee8('0x57')][_0x7ee8('0x58')]({'plain':!![]});if(!_0xfbf87f)throw new Error(_0x7ee8('0x59'));if(_0xfbf87f[_0x7ee8('0x5a')]===_0x7ee8('0x57')){var _0xf29280=_0x5b048d['get']({'plain':!![]});var _0x1b2dc1=[{'name':_0x7ee8('0x2e'),'value':_0x7ee8('0x2f')},{'name':_0x7ee8('0x5b'),'value':_0x7ee8('0x30')}];var _0xde1329=_[_0x7ee8('0x35')](_0x1b2dc1,[_0x7ee8('0x33'),_0xf29280[_0x7ee8('0x36')]])[_0x7ee8('0x37')];return db[_0x7ee8('0x5c')]['find']({'where':{'name':_0xde1329,'userProfileId':_0xfbf87f[_0x7ee8('0x5d')]},'raw':!![]})['then'](function(_0x36b730){if(_0x36b730&&_0x36b730[_0x7ee8('0x5e')]===0x0){return db[_0x7ee8('0x38')][_0x7ee8('0x5f')]({'name':_0xf29280[_0x7ee8('0x37')],'resourceId':_0xf29280['id'],'type':_0x36b730[_0x7ee8('0x37')],'sectionId':_0x36b730['id']},{})[_0x7ee8('0x2c')](function(){return _0x5b048d;});}else{return _0x5b048d;}})[_0x7ee8('0x52')](function(_0x288e52){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x288e52);throw _0x288e52;});}return _0x5b048d;})[_0x7ee8('0x2c')](respondWithResult(_0x1f5d06,0xc9))[_0x7ee8('0x52')](handleError(_0x1f5d06,null));};exports['clone']=function(_0x4366ba,_0x3756db){var _0x2a7b97={'where':{'id':_0x4366ba['params']['id']}},_0x5cda8a={};_0x5cda8a[_0x7ee8('0x43')]=_[_0x7ee8('0x40')](db[_0x7ee8('0x4f')][_0x7ee8('0x3c')]);_0x2a7b97['attributes']=_[_0x7ee8('0x42')](_0x5cda8a[_0x7ee8('0x43')],qs[_0x7ee8('0x45')](_0x4366ba['query']['fields']));_0x2a7b97[_0x7ee8('0x44')]=_0x2a7b97[_0x7ee8('0x44')]['length']?_0x2a7b97[_0x7ee8('0x44')]:_0x5cda8a[_0x7ee8('0x43')];if(_0x4366ba[_0x7ee8('0x3f')][_0x7ee8('0x50')]){_0x2a7b97[_0x7ee8('0x55')]=[{'all':!![]}];}_0x2a7b97=_[_0x7ee8('0x4c')]({},_0x2a7b97,_0x4366ba['options']);return db[_0x7ee8('0x4f')]['find'](_0x2a7b97)[_0x7ee8('0x2c')](handleEntityNotFound(_0x3756db,null))[_0x7ee8('0x2c')](function(_0x430106){if(_0x430106){var _0x4b8b92=_0x430106[_0x7ee8('0x58')]({'plain':!![]});_0x4b8b92=qs[_0x7ee8('0x60')](_0x4b8b92,['id',_0x7ee8('0x61'),_0x7ee8('0x62')]);_0x4366ba[_0x7ee8('0x56')]=_[_0x7ee8('0x60')](_0x4366ba[_0x7ee8('0x56')],['id',_0x7ee8('0x61'),_0x7ee8('0x62')]);return db[_0x7ee8('0x4f')][_0x7ee8('0x5f')](_['merge'](_0x4b8b92,_0x4366ba[_0x7ee8('0x56')]),{'include':_0x4366ba[_0x7ee8('0x3f')]['includeAll']?[{'all':!![]}]:undefined})[_0x7ee8('0x2c')](function(_0x12d114){var _0x5a89f7=_0x4366ba['user'][_0x7ee8('0x58')]({'plain':!![]});if(!_0x5a89f7)throw new Error(_0x7ee8('0x59'));if(_0x5a89f7['role']===_0x7ee8('0x57')){var _0x2d20b1=_0x12d114[_0x7ee8('0x58')]({'plain':!![]});var _0x512024=[{'name':'VoiceQueues','value':_0x7ee8('0x2f')},{'name':_0x7ee8('0x5b'),'value':_0x7ee8('0x30')}];var _0x10e136=_[_0x7ee8('0x35')](_0x512024,[_0x7ee8('0x33'),_0x2d20b1[_0x7ee8('0x36')]])[_0x7ee8('0x37')];return db[_0x7ee8('0x5c')][_0x7ee8('0x35')]({'where':{'name':_0x10e136,'userProfileId':_0x5a89f7['userProfileId']},'raw':!![]})[_0x7ee8('0x2c')](function(_0xa3e044){if(_0xa3e044&&_0xa3e044[_0x7ee8('0x5e')]===0x0){return db[_0x7ee8('0x38')]['create']({'name':_0x2d20b1[_0x7ee8('0x37')],'resourceId':_0x2d20b1['id'],'type':_0xa3e044[_0x7ee8('0x37')],'sectionId':_0xa3e044['id']},{})['then'](function(){return _0x12d114;});}else{return _0x12d114;}})['catch'](function(_0x542045){logger[_0x7ee8('0x39')](_0x7ee8('0x63'),_0x542045);throw _0x542045;});}return _0x12d114;});}})[_0x7ee8('0x2c')](respondWithResult(_0x3756db,0xc9))[_0x7ee8('0x52')](handleError(_0x3756db,null));};exports[_0x7ee8('0x2b')]=function(_0x47c168,_0x2e8632){if(_0x47c168[_0x7ee8('0x56')]['id']){delete _0x47c168[_0x7ee8('0x56')]['id'];}return db[_0x7ee8('0x4f')][_0x7ee8('0x35')]({'where':{'id':_0x47c168['params']['id']}})[_0x7ee8('0x2c')](handleEntityNotFound(_0x2e8632,null))[_0x7ee8('0x2c')](saveUpdates(_0x47c168['body'],null))[_0x7ee8('0x2c')](respondWithResult(_0x2e8632,null))['catch'](handleError(_0x2e8632,null));};exports[_0x7ee8('0x2d')]=function(_0x40708b,_0x2bb1fb){return db['VoiceQueue']['find']({'where':{'id':_0x40708b['params']['id']}})['then'](handleEntityNotFound(_0x2bb1fb,null))['then'](removeEntity(_0x2bb1fb,null))['catch'](handleError(_0x2bb1fb,null));};exports[_0x7ee8('0x64')]=function(_0x466f88,_0x5038c1,_0x417de3){var _0x4ed794={'raw':![],'where':{}};var _0x3f9079={};var _0x3a4818={'count':0x0,'rows':[]};return db[_0x7ee8('0x4f')][_0x7ee8('0x65')]({'where':{'id':_0x466f88[_0x7ee8('0x53')]['id']}})[_0x7ee8('0x2c')](handleEntityNotFound(_0x5038c1,null))[_0x7ee8('0x2c')](function(_0x3216f2){if(_0x3216f2){_0x3f9079['model']=_['keys'](db[_0x7ee8('0x66')][_0x7ee8('0x3c')]);_0x3f9079[_0x7ee8('0x3f')]=_[_0x7ee8('0x40')](_0x466f88[_0x7ee8('0x3f')]);_0x3f9079[_0x7ee8('0x41')]=_[_0x7ee8('0x42')](_0x3f9079[_0x7ee8('0x43')],_0x3f9079['query']);_0x4ed794[_0x7ee8('0x44')]=_[_0x7ee8('0x42')](_0x3f9079[_0x7ee8('0x43')],qs[_0x7ee8('0x45')](_0x466f88[_0x7ee8('0x3f')][_0x7ee8('0x45')]));_0x4ed794['attributes']=_0x4ed794['attributes'][_0x7ee8('0x54')]?_0x4ed794[_0x7ee8('0x44')]:_0x3f9079[_0x7ee8('0x43')];if(!_0x466f88[_0x7ee8('0x3f')][_0x7ee8('0x46')]('nolimit')){_0x4ed794[_0x7ee8('0x26')]=qs[_0x7ee8('0x26')](_0x466f88['query'][_0x7ee8('0x26')]);_0x4ed794[_0x7ee8('0x24')]=qs[_0x7ee8('0x24')](_0x466f88[_0x7ee8('0x3f')][_0x7ee8('0x24')]);}_0x4ed794[_0x7ee8('0x48')]=qs[_0x7ee8('0x49')](_0x466f88['query']['sort']);_0x4ed794['where']=qs[_0x7ee8('0x41')](_[_0x7ee8('0x4b')](_0x466f88['query'],_0x3f9079[_0x7ee8('0x41')]));_0x4ed794[_0x7ee8('0x4a')][_0x7ee8('0x67')]=_0x3216f2['id'];if(_0x466f88[_0x7ee8('0x3f')][_0x7ee8('0x31')]){_0x4ed794[_0x7ee8('0x4a')]=_['merge'](_0x4ed794[_0x7ee8('0x4a')],{'$or':_[_0x7ee8('0x32')](_0x4ed794[_0x7ee8('0x44')],function(_0x2ca26b){var _0x4693b1={};_0x4693b1[_0x2ca26b]={'$like':'%'+_0x466f88[_0x7ee8('0x3f')][_0x7ee8('0x31')]+'%'};return _0x4693b1;})});}_0x4ed794=_[_0x7ee8('0x4c')]({},_0x4ed794,_0x466f88[_0x7ee8('0x4e')]);return db['CmHopper'][_0x7ee8('0x25')]({'where':_0x4ed794[_0x7ee8('0x4a')]})[_0x7ee8('0x2c')](function(_0x2e8a9d){_0x3a4818[_0x7ee8('0x25')]=_0x2e8a9d;if(_0x466f88[_0x7ee8('0x3f')][_0x7ee8('0x50')]){_0x4ed794[_0x7ee8('0x55')]=[{'all':!![]}];}return db[_0x7ee8('0x66')][_0x7ee8('0x51')](_0x4ed794);})[_0x7ee8('0x2c')](function(_0x3428c2){_0x3a4818[_0x7ee8('0x68')]=_0x3428c2;return _0x3a4818;});}})[_0x7ee8('0x2c')](respondWithFilteredResult(_0x5038c1,_0x4ed794))['catch'](handleError(_0x5038c1,null));};exports['getHopperHistories']=function(_0x432a04,_0x207f47,_0x3ccfb4){var _0x45515c={'raw':!![],'where':{}};var _0x2d978b={};var _0x3f9131={'count':0x0,'rows':[]};return db[_0x7ee8('0x4f')][_0x7ee8('0x65')]({'where':{'id':_0x432a04[_0x7ee8('0x53')]['id']}})['then'](handleEntityNotFound(_0x207f47,null))[_0x7ee8('0x2c')](function(_0x19ded1){if(_0x19ded1){_0x2d978b[_0x7ee8('0x43')]=_[_0x7ee8('0x40')](db[_0x7ee8('0x69')][_0x7ee8('0x3c')]);_0x2d978b[_0x7ee8('0x3f')]=_[_0x7ee8('0x40')](_0x432a04[_0x7ee8('0x3f')]);_0x2d978b['filters']=_[_0x7ee8('0x42')](_0x2d978b[_0x7ee8('0x43')],_0x2d978b[_0x7ee8('0x3f')]);_0x45515c[_0x7ee8('0x44')]=_['intersection'](_0x2d978b[_0x7ee8('0x43')],qs['fields'](_0x432a04[_0x7ee8('0x3f')][_0x7ee8('0x45')]));_0x45515c[_0x7ee8('0x44')]=_0x45515c['attributes'][_0x7ee8('0x54')]?_0x45515c[_0x7ee8('0x44')]:_0x2d978b[_0x7ee8('0x43')];if(!_0x432a04[_0x7ee8('0x3f')][_0x7ee8('0x46')]('nolimit')){_0x45515c['limit']=qs[_0x7ee8('0x26')](_0x432a04[_0x7ee8('0x3f')][_0x7ee8('0x26')]);_0x45515c[_0x7ee8('0x24')]=qs[_0x7ee8('0x24')](_0x432a04[_0x7ee8('0x3f')]['offset']);}_0x45515c[_0x7ee8('0x48')]=qs[_0x7ee8('0x49')](_0x432a04[_0x7ee8('0x3f')][_0x7ee8('0x49')]);_0x45515c[_0x7ee8('0x4a')]=qs['filters'](_[_0x7ee8('0x4b')](_0x432a04[_0x7ee8('0x3f')],_0x2d978b['filters']));_0x45515c[_0x7ee8('0x4a')]['VoiceQueueId']=_0x19ded1['id'];if(_0x432a04[_0x7ee8('0x3f')][_0x7ee8('0x31')]){_0x45515c[_0x7ee8('0x4a')]=_[_0x7ee8('0x4c')](_0x45515c[_0x7ee8('0x4a')],{'$or':_['map'](_0x45515c['attributes'],function(_0x2b3d6d){var _0x5ac85e={};_0x5ac85e[_0x2b3d6d]={'$like':'%'+_0x432a04[_0x7ee8('0x3f')][_0x7ee8('0x31')]+'%'};return _0x5ac85e;})});}_0x45515c=_['merge']({},_0x45515c,_0x432a04[_0x7ee8('0x4e')]);return db[_0x7ee8('0x69')][_0x7ee8('0x25')]({'where':_0x45515c['where']})[_0x7ee8('0x2c')](function(_0x3753d7){_0x3f9131[_0x7ee8('0x25')]=_0x3753d7;if(_0x432a04[_0x7ee8('0x3f')][_0x7ee8('0x50')]){_0x45515c[_0x7ee8('0x55')]=[{'all':!![]}];}return db[_0x7ee8('0x69')][_0x7ee8('0x51')](_0x45515c);})[_0x7ee8('0x2c')](function(_0x53ceaf){_0x3f9131[_0x7ee8('0x68')]=_0x53ceaf;return _0x3f9131;});}})[_0x7ee8('0x2c')](respondWithFilteredResult(_0x207f47,_0x45515c))[_0x7ee8('0x52')](handleError(_0x207f47,null));};exports[_0x7ee8('0x6a')]=function(_0x2e2293,_0x2a9acc,_0x3c6f90){var _0x467372={'raw':!![],'where':{}};var _0xd627f9={};var _0x410bd2={'count':0x0,'rows':[]};return db[_0x7ee8('0x4f')][_0x7ee8('0x65')]({'where':{'id':_0x2e2293[_0x7ee8('0x53')]['id']}})[_0x7ee8('0x2c')](handleEntityNotFound(_0x2a9acc,null))['then'](function(_0x14d353){if(_0x14d353){_0xd627f9['model']=_[_0x7ee8('0x40')](db['CmHopperFinal']['rawAttributes']);_0xd627f9[_0x7ee8('0x3f')]=_[_0x7ee8('0x40')](_0x2e2293[_0x7ee8('0x3f')]);_0xd627f9['filters']=_[_0x7ee8('0x42')](_0xd627f9[_0x7ee8('0x43')],_0xd627f9[_0x7ee8('0x3f')]);_0x467372[_0x7ee8('0x44')]=_[_0x7ee8('0x42')](_0xd627f9[_0x7ee8('0x43')],qs['fields'](_0x2e2293['query'][_0x7ee8('0x45')]));_0x467372[_0x7ee8('0x44')]=_0x467372[_0x7ee8('0x44')][_0x7ee8('0x54')]?_0x467372[_0x7ee8('0x44')]:_0xd627f9[_0x7ee8('0x43')];if(!_0x2e2293['query']['hasOwnProperty'](_0x7ee8('0x47'))){_0x467372[_0x7ee8('0x26')]=qs[_0x7ee8('0x26')](_0x2e2293[_0x7ee8('0x3f')][_0x7ee8('0x26')]);_0x467372[_0x7ee8('0x24')]=qs[_0x7ee8('0x24')](_0x2e2293[_0x7ee8('0x3f')][_0x7ee8('0x24')]);}_0x467372[_0x7ee8('0x48')]=qs[_0x7ee8('0x49')](_0x2e2293[_0x7ee8('0x3f')]['sort']);_0x467372[_0x7ee8('0x4a')]=qs[_0x7ee8('0x41')](_['pick'](_0x2e2293[_0x7ee8('0x3f')],_0xd627f9[_0x7ee8('0x41')]));_0x467372['where'][_0x7ee8('0x67')]=_0x14d353['id'];if(_0x2e2293[_0x7ee8('0x3f')]['filter']){_0x467372[_0x7ee8('0x4a')]=_[_0x7ee8('0x4c')](_0x467372[_0x7ee8('0x4a')],{'$or':_[_0x7ee8('0x32')](_0x467372['attributes'],function(_0x40adba){var _0x4e276f={};_0x4e276f[_0x40adba]={'$like':'%'+_0x2e2293[_0x7ee8('0x3f')]['filter']+'%'};return _0x4e276f;})});}_0x467372=_[_0x7ee8('0x4c')]({},_0x467372,_0x2e2293[_0x7ee8('0x4e')]);return db[_0x7ee8('0x6b')]['count']({'where':_0x467372['where']})['then'](function(_0x3de823){_0x410bd2['count']=_0x3de823;if(_0x2e2293['query'][_0x7ee8('0x50')]){_0x467372[_0x7ee8('0x55')]=[{'all':!![]}];}return db[_0x7ee8('0x6b')][_0x7ee8('0x51')](_0x467372);})['then'](function(_0x95f49c){_0x410bd2[_0x7ee8('0x68')]=_0x95f49c;return _0x410bd2;});}})[_0x7ee8('0x2c')](respondWithFilteredResult(_0x2a9acc,_0x467372))[_0x7ee8('0x52')](handleError(_0x2a9acc,null));};exports[_0x7ee8('0x6c')]=function(_0x17cc8f,_0x2061c5,_0x2b828a){var _0x22d7fe={'raw':!![],'where':{}};var _0x5ace84={};var _0xf9acb2={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x7ee8('0x65')]({'where':{'id':_0x17cc8f[_0x7ee8('0x53')]['id']}})[_0x7ee8('0x2c')](handleEntityNotFound(_0x2061c5,null))[_0x7ee8('0x2c')](function(_0x4d6533){if(_0x4d6533){_0x5ace84[_0x7ee8('0x43')]=_[_0x7ee8('0x40')](db[_0x7ee8('0x6d')][_0x7ee8('0x3c')]);_0x5ace84['query']=_['keys'](_0x17cc8f['query']);_0x5ace84[_0x7ee8('0x41')]=_[_0x7ee8('0x42')](_0x5ace84[_0x7ee8('0x43')],_0x5ace84[_0x7ee8('0x3f')]);_0x22d7fe[_0x7ee8('0x44')]=_['intersection'](_0x5ace84[_0x7ee8('0x43')],qs[_0x7ee8('0x45')](_0x17cc8f['query'][_0x7ee8('0x45')]));_0x22d7fe[_0x7ee8('0x44')]=_0x22d7fe[_0x7ee8('0x44')][_0x7ee8('0x54')]?_0x22d7fe[_0x7ee8('0x44')]:_0x5ace84[_0x7ee8('0x43')];if(!_0x17cc8f[_0x7ee8('0x3f')]['hasOwnProperty']('nolimit')){_0x22d7fe[_0x7ee8('0x26')]=qs[_0x7ee8('0x26')](_0x17cc8f['query'][_0x7ee8('0x26')]);_0x22d7fe[_0x7ee8('0x24')]=qs['offset'](_0x17cc8f[_0x7ee8('0x3f')][_0x7ee8('0x24')]);}_0x22d7fe[_0x7ee8('0x48')]=qs[_0x7ee8('0x49')](_0x17cc8f[_0x7ee8('0x3f')]['sort']);_0x22d7fe[_0x7ee8('0x4a')]=qs[_0x7ee8('0x41')](_[_0x7ee8('0x4b')](_0x17cc8f[_0x7ee8('0x3f')],_0x5ace84[_0x7ee8('0x41')]));_0x22d7fe['where'][_0x7ee8('0x67')]=_0x4d6533['id'];if(_0x17cc8f[_0x7ee8('0x3f')][_0x7ee8('0x31')]){_0x22d7fe[_0x7ee8('0x4a')]=_[_0x7ee8('0x4c')](_0x22d7fe[_0x7ee8('0x4a')],{'$or':_[_0x7ee8('0x32')](_0x22d7fe[_0x7ee8('0x44')],function(_0x38c7b5){var _0x198cd3={};_0x198cd3[_0x38c7b5]={'$like':'%'+_0x17cc8f[_0x7ee8('0x3f')][_0x7ee8('0x31')]+'%'};return _0x198cd3;})});}_0x22d7fe=_[_0x7ee8('0x4c')]({},_0x22d7fe,_0x17cc8f[_0x7ee8('0x4e')]);return db[_0x7ee8('0x6d')][_0x7ee8('0x25')]({'where':_0x22d7fe[_0x7ee8('0x4a')]})[_0x7ee8('0x2c')](function(_0x75383d){_0xf9acb2[_0x7ee8('0x25')]=_0x75383d;if(_0x17cc8f['query'][_0x7ee8('0x50')]){_0x22d7fe[_0x7ee8('0x55')]=[{'all':!![]}];}return db[_0x7ee8('0x6d')]['findAll'](_0x22d7fe);})['then'](function(_0x51e18e){_0xf9acb2[_0x7ee8('0x68')]=_0x51e18e;return _0xf9acb2;});}})[_0x7ee8('0x2c')](respondWithFilteredResult(_0x2061c5,_0x22d7fe))['catch'](handleError(_0x2061c5,null));};exports[_0x7ee8('0x6e')]=function(_0x3ba633,_0x35d274,_0x41414d){var _0x237c44={};var _0x15a784={};var _0x543ff7;var _0x8c1bdd;return db['VoiceQueue'][_0x7ee8('0x65')]({'where':{'id':_0x3ba633[_0x7ee8('0x53')]['id']}})[_0x7ee8('0x2c')](handleEntityNotFound(_0x35d274,null))[_0x7ee8('0x2c')](function(_0x34e80b){if(_0x34e80b){_0x543ff7=_0x34e80b;_0x15a784[_0x7ee8('0x43')]=_[_0x7ee8('0x40')](db[_0x7ee8('0x6f')][_0x7ee8('0x3c')]);_0x15a784[_0x7ee8('0x3f')]=_[_0x7ee8('0x40')](_0x3ba633[_0x7ee8('0x3f')]);_0x15a784[_0x7ee8('0x41')]=_[_0x7ee8('0x42')](_0x15a784[_0x7ee8('0x43')],_0x15a784[_0x7ee8('0x3f')]);_0x237c44[_0x7ee8('0x44')]=_[_0x7ee8('0x42')](_0x15a784[_0x7ee8('0x43')],qs[_0x7ee8('0x45')](_0x3ba633[_0x7ee8('0x3f')][_0x7ee8('0x45')]));_0x237c44[_0x7ee8('0x44')]=_0x237c44[_0x7ee8('0x44')][_0x7ee8('0x54')]?_0x237c44['attributes']:_0x15a784['model'];_0x237c44[_0x7ee8('0x48')]=qs[_0x7ee8('0x49')](_0x3ba633['query'][_0x7ee8('0x49')]);_0x237c44[_0x7ee8('0x4a')]=qs[_0x7ee8('0x41')](_['pick'](_0x3ba633[_0x7ee8('0x3f')],_0x15a784['filters']));if(_0x3ba633[_0x7ee8('0x3f')][_0x7ee8('0x31')]){_0x237c44[_0x7ee8('0x4a')]=_['merge'](_0x237c44[_0x7ee8('0x4a')],{'$or':_[_0x7ee8('0x32')](_0x237c44[_0x7ee8('0x44')],function(_0x4c4d9a){var _0x3dcfd2={};_0x3dcfd2[_0x4c4d9a]={'$like':'%'+_0x3ba633['query'][_0x7ee8('0x31')]+'%'};return _0x3dcfd2;})});}_0x237c44=_[_0x7ee8('0x4c')]({},_0x237c44,_0x3ba633['options']);return _0x543ff7[_0x7ee8('0x6e')](_0x237c44);}})['then'](function(_0x50d063){if(_0x50d063){_0x8c1bdd=_0x50d063['length'];if(!_0x3ba633[_0x7ee8('0x3f')][_0x7ee8('0x46')]('nolimit')){_0x237c44['limit']=qs[_0x7ee8('0x26')](_0x3ba633[_0x7ee8('0x3f')][_0x7ee8('0x26')]);_0x237c44[_0x7ee8('0x24')]=qs[_0x7ee8('0x24')](_0x3ba633['query'][_0x7ee8('0x24')]);}return _0x543ff7['getTeams'](_0x237c44);}})[_0x7ee8('0x2c')](function(_0x1ad204){if(_0x1ad204){return _0x1ad204?{'count':_0x8c1bdd,'rows':_0x1ad204}:null;}})[_0x7ee8('0x2c')](respondWithResult(_0x35d274,null))[_0x7ee8('0x52')](handleError(_0x35d274,null));};exports[_0x7ee8('0x70')]=function(_0x544a69,_0x1399cc,_0x24d409){var _0x1bb1db=_0x544a69[_0x7ee8('0x56')]['teams'];var _0x198316=_['map'](_0x1bb1db,'id');return db[_0x7ee8('0x6f')]['findAll']({'where':{'id':_0x198316},'attributes':['id'],'include':[{'model':db[_0x7ee8('0x71')],'as':'Agents','attributes':['id','name',_0x7ee8('0x72'),'voicePause','interface'],'raw':!![]}]})[_0x7ee8('0x2c')](function(_0x729e61){if(_0x729e61){var _0x2f667f=_['flatMap'](_0x729e61,function(_0x57a39f){var _0x2032eb=_0x57a39f['get']({'plain':!![]});_0x2032eb[_0x7ee8('0x73')]['forEach'](function(_0x200a09){_0x200a09[_0x7ee8('0x74')]=_['find'](_0x1bb1db,{'id':_0x2032eb['id']})[_0x7ee8('0x74')];});return _0x2032eb[_0x7ee8('0x73')];});return db['VoiceQueue']['find']({'where':{'id':_0x544a69[_0x7ee8('0x53')]['id']}})['then'](function(_0x142f31){return db['sequelize'][_0x7ee8('0x75')](function(_0x5d34bc){return _0x142f31[_0x7ee8('0x70')](_0x198316,{'transaction':_0x5d34bc})[_0x7ee8('0x2c')](function(){return BPromise[_0x7ee8('0x76')](_0x1bb1db,function(_0x21598a){return db['TeamVoiceQueue'][_0x7ee8('0x77')]({'TeamId':_0x21598a['id'],'VoiceQueueId':_0x544a69[_0x7ee8('0x53')]['id'],'penalty':_0x21598a['penalty']},{'transaction':_0x5d34bc});});})['then'](function(){return BPromise['each'](_0x2f667f,function(_0x1fe507){return db[_0x7ee8('0x78')][_0x7ee8('0x79')]({'where':{'UserId':_0x1fe507['id'],'VoiceQueueId':_0x544a69[_0x7ee8('0x53')]['id']},'defaults':{'penalty':_0x1fe507[_0x7ee8('0x74')]},'transaction':_0x5d34bc});});})[_0x7ee8('0x2c')](function(){return BPromise[_0x7ee8('0x76')](_[_0x7ee8('0x31')](_0x2f667f,{'online':!![]}),function(_0x11f336){return db[_0x7ee8('0x7a')][_0x7ee8('0x77')]({'membername':_0x11f336[_0x7ee8('0x37')],'UserId':_0x11f336['id'],'queue_name':_0x142f31['name'],'VoiceQueueId':_0x142f31['id'],'interface':_[_0x7ee8('0x7b')](_0x11f336[_0x7ee8('0x7c')])?util[_0x7ee8('0x7d')](_0x7ee8('0x7e'),_0x11f336['name']):_0x11f336[_0x7ee8('0x7c')],'paused':_0x11f336[_0x7ee8('0x7f')]||![],'penalty':_0x11f336[_0x7ee8('0x74')]},{'transaction':_0x5d34bc});});})['then'](function(){_0x2f667f[_0x7ee8('0x80')](function(_0x32d87b){socket[_0x7ee8('0x81')](_0x7ee8('0x82'),{'UserId':_0x32d87b['id'],'VoiceQueueId':_0x142f31['id']});});});});});}})[_0x7ee8('0x2c')](respondWithStatusCode(_0x1399cc,null))[_0x7ee8('0x52')](handleError(_0x1399cc,null));};exports['removeTeams']=function(_0x1e0144,_0x41efac,_0x55b3cf){return db[_0x7ee8('0x6f')]['findAll']({'where':{'id':_0x1e0144[_0x7ee8('0x3f')][_0x7ee8('0x83')]},'attributes':['id'],'include':[{'model':db[_0x7ee8('0x71')],'as':_0x7ee8('0x73'),'attributes':['id'],'raw':!![]}]})[_0x7ee8('0x2c')](handleEntityNotFound(_0x41efac,null))[_0x7ee8('0x2c')](function(_0x71430e){var _0x11f468=_['map'](_0x71430e,'id');var _0x5a8060=[];var _0x18eed8=[];var _0x4f905c=squel['select']();_0x4f905c[_0x7ee8('0x84')]('tq.TeamId')['from'](_0x7ee8('0x85'),'tq')[_0x7ee8('0x86')](_0x7ee8('0x87'),'ut',_0x7ee8('0x88'))[_0x7ee8('0x4a')](_0x7ee8('0x89'),_0x1e0144['params']['id']);for(var _0xef90b6=0x0;_0xef90b6<_0x71430e[_0x7ee8('0x54')];_0xef90b6+=0x1){let _0x1df5a8=_0x71430e[_0xef90b6];for(var _0xc1a42b=0x0;_0xc1a42b<_0x1df5a8[_0x7ee8('0x73')][_0x7ee8('0x54')];_0xc1a42b+=0x1){let _0x47af5b=_0x1df5a8[_0x7ee8('0x73')][_0xc1a42b];var _0x53b64a=_0x4f905c[_0x7ee8('0x8a')]();_0x53b64a[_0x7ee8('0x4a')](_0x7ee8('0x8b'),_0x47af5b['id']);_0x18eed8['push'](db['sequelize']['query'](_0x53b64a[_0x7ee8('0x8c')](),{'type':db[_0x7ee8('0x8d')][_0x7ee8('0x8e')][_0x7ee8('0x8f')]})['then'](function(_0xc7431){if(_0xc7431['length']===0x1){return _0x47af5b['id'];}else{var _0x25301b=_[_0x7ee8('0x90')](_[_0x7ee8('0x32')](_0xc7431,'TeamId'),function(_0x5c7b96){return _[_0x7ee8('0x34')](_0x11f468,_0x5c7b96);});if(_0x25301b){return _0x47af5b['id'];}}}));}}return BPromise['all'](_0x18eed8)[_0x7ee8('0x2c')](function(_0x4b90df){_0x5a8060=_(_0x5a8060)[_0x7ee8('0x91')](_0x4b90df)[_0x7ee8('0x92')]()['value']();return db['VoiceQueue'][_0x7ee8('0x35')]({'where':{'id':_0x1e0144[_0x7ee8('0x53')]['id']}})[_0x7ee8('0x2c')](function(_0x3c3fe1){return db[_0x7ee8('0x8d')]['transaction'](function(_0x17befb){return _0x3c3fe1[_0x7ee8('0x93')](_0x1e0144[_0x7ee8('0x3f')][_0x7ee8('0x83')],{'transaction':_0x17befb})[_0x7ee8('0x2c')](function(){if(!_[_0x7ee8('0x94')](_0x5a8060)){return _0x3c3fe1['removeAgents'](_0x5a8060,{'transaction':_0x17befb})[_0x7ee8('0x2c')](function(){return db[_0x7ee8('0x7a')][_0x7ee8('0x2d')]({'where':{'VoiceQueueId':_0x1e0144[_0x7ee8('0x53')]['id'],'UserId':_0x5a8060},'transaction':_0x17befb});});}})[_0x7ee8('0x2c')](function(){_0x5a8060[_0x7ee8('0x80')](function(_0x5a9807){socket[_0x7ee8('0x81')](_0x7ee8('0x95'),{'UserId':_0x5a9807,'VoiceQueueId':_0x3c3fe1['id']});});});});});});})['then'](respondWithStatusCode(_0x41efac,null))[_0x7ee8('0x52')](handleError(_0x41efac,null));};exports[_0x7ee8('0x96')]=function(_0x206a5f,_0xcc0495,_0x20712f){var _0x5d06b8,_0x2484da;return db[_0x7ee8('0x4f')]['find']({'where':{'id':_0x206a5f['params']['id']}})[_0x7ee8('0x2c')](handleEntityNotFound(_0xcc0495,null))[_0x7ee8('0x2c')](function(_0x47ac2d){if(_0x47ac2d){_0x2484da=_0x47ac2d;return _0x47ac2d['addAgents'](_0x206a5f[_0x7ee8('0x56')]['ids'],_[_0x7ee8('0x60')](_0x206a5f[_0x7ee8('0x56')],[_0x7ee8('0x83'),'id'])||{})['spread'](function(_0x5d066e){for(var _0x2d9a34=0x0;_0x2d9a34<_0x206a5f[_0x7ee8('0x56')]['ids']['length'];_0x2d9a34+=0x1){socket['emit'](_0x7ee8('0x82'),{'UserId':Number(_0x206a5f[_0x7ee8('0x56')][_0x7ee8('0x83')][_0x2d9a34]),'VoiceQueueId':Number(_0x206a5f[_0x7ee8('0x53')]['id'])});}return _0x5d066e;});}})[_0x7ee8('0x2c')](function(_0x3ea284){_0x5d06b8=_0x3ea284||[];if(_0x2484da){return db[_0x7ee8('0x71')][_0x7ee8('0x51')]({'where':{'id':_0x206a5f[_0x7ee8('0x56')][_0x7ee8('0x83')]},'attributes':['id','name',_0x7ee8('0x72'),_0x7ee8('0x7f'),'interface'],'raw':!![]});}})[_0x7ee8('0x2c')](function(_0x491b3d){if(!_[_0x7ee8('0x94')](_0x491b3d)){var _0x1721f7=[];for(var _0x2b3b24=0x0;_0x2b3b24<_0x491b3d['length'];_0x2b3b24++){if(_0x491b3d[_0x2b3b24]['online']){_0x1721f7[_0x7ee8('0x97')](db[_0x7ee8('0x7a')][_0x7ee8('0x77')]({'membername':_0x491b3d[_0x2b3b24]['name'],'UserId':_0x491b3d[_0x2b3b24]['id'],'queue_name':_0x2484da['name'],'VoiceQueueId':_0x2484da['id'],'interface':_[_0x7ee8('0x7b')](_0x491b3d[_0x2b3b24][_0x7ee8('0x7c')])?util[_0x7ee8('0x7d')](_0x7ee8('0x7e'),_0x491b3d[_0x2b3b24][_0x7ee8('0x37')]):_0x491b3d[_0x2b3b24][_0x7ee8('0x7c')],'paused':_0x491b3d[_0x2b3b24][_0x7ee8('0x7f')]||![],'penalty':_0x206a5f[_0x7ee8('0x56')][_0x7ee8('0x74')]||0x0}));}}return BPromise[_0x7ee8('0x98')](_0x1721f7);}})['then'](function(){return _0x5d06b8;})['then'](respondWithResult(_0xcc0495,null))[_0x7ee8('0x52')](handleError(_0xcc0495,null));};exports['removeAgents']=function(_0x2fc0b2,_0x319923,_0x1ba908){return db[_0x7ee8('0x4f')][_0x7ee8('0x35')]({'where':{'id':_0x2fc0b2['params']['id']}})[_0x7ee8('0x2c')](handleEntityNotFound(_0x319923,null))[_0x7ee8('0x2c')](function(_0x140a96){if(_0x140a96){return _0x140a96[_0x7ee8('0x99')](_0x2fc0b2[_0x7ee8('0x3f')][_0x7ee8('0x83')])[_0x7ee8('0x2c')](function(){if(_[_0x7ee8('0x9a')](_0x2fc0b2[_0x7ee8('0x3f')][_0x7ee8('0x83')])){for(var _0x331735=0x0;_0x331735<_0x2fc0b2[_0x7ee8('0x3f')][_0x7ee8('0x83')][_0x7ee8('0x54')];_0x331735+=0x1){socket[_0x7ee8('0x81')](_0x7ee8('0x95'),{'UserId':Number(_0x2fc0b2[_0x7ee8('0x3f')]['ids'][_0x331735]),'VoiceQueueId':Number(_0x2fc0b2[_0x7ee8('0x53')]['id'])});}}else{socket[_0x7ee8('0x81')]('userVoiceQueue:remove',{'UserId':Number(_0x2fc0b2[_0x7ee8('0x3f')][_0x7ee8('0x83')]),'VoiceQueueId':Number(_0x2fc0b2[_0x7ee8('0x53')]['id'])});}});}})[_0x7ee8('0x2c')](function(_0x5a357c){return db[_0x7ee8('0x7a')][_0x7ee8('0x2d')]({'where':{'VoiceQueueId':_0x2fc0b2['params']['id'],'UserId':_0x2fc0b2[_0x7ee8('0x3f')]['ids']}})[_0x7ee8('0x2c')](function(){return _0x5a357c;});})[_0x7ee8('0x2c')](respondWithStatusCode(_0x319923,null))['catch'](handleError(_0x319923,null));};exports['getAgents']=function(_0x51b57c,_0x1de97d,_0x339dfd){var _0x493384={};var _0x522db1={};var _0x2bebfa;var _0x41ea9e;return db[_0x7ee8('0x4f')][_0x7ee8('0x65')]({'where':{'id':_0x51b57c[_0x7ee8('0x53')]['id']}})[_0x7ee8('0x2c')](handleEntityNotFound(_0x1de97d,null))[_0x7ee8('0x2c')](function(_0x155cd9){if(_0x155cd9){_0x2bebfa=_0x155cd9;_0x522db1[_0x7ee8('0x43')]=_[_0x7ee8('0x40')](db[_0x7ee8('0x71')][_0x7ee8('0x3c')]);_0x522db1[_0x7ee8('0x3f')]=_[_0x7ee8('0x40')](_0x51b57c[_0x7ee8('0x3f')]);_0x522db1['filters']=_[_0x7ee8('0x42')](_0x522db1[_0x7ee8('0x43')],_0x522db1['query']);_0x493384[_0x7ee8('0x44')]=_[_0x7ee8('0x42')](_0x522db1[_0x7ee8('0x43')],qs[_0x7ee8('0x45')](_0x51b57c[_0x7ee8('0x3f')][_0x7ee8('0x45')]));_0x493384[_0x7ee8('0x44')]=_0x493384['attributes'][_0x7ee8('0x54')]?_0x493384[_0x7ee8('0x44')]:_0x522db1[_0x7ee8('0x43')];_0x493384[_0x7ee8('0x48')]=qs[_0x7ee8('0x49')](_0x51b57c[_0x7ee8('0x3f')][_0x7ee8('0x49')]);_0x493384[_0x7ee8('0x4a')]=qs[_0x7ee8('0x41')](_[_0x7ee8('0x4b')](_0x51b57c[_0x7ee8('0x3f')],_0x522db1['filters']));if(_0x51b57c[_0x7ee8('0x3f')]['filter']){_0x493384[_0x7ee8('0x4a')]=_[_0x7ee8('0x4c')](_0x493384['where'],{'$or':_[_0x7ee8('0x32')](_0x493384[_0x7ee8('0x44')],function(_0x1d6fdc){var _0xa954fc={};_0xa954fc[_0x1d6fdc]={'$like':'%'+_0x51b57c[_0x7ee8('0x3f')][_0x7ee8('0x31')]+'%'};return _0xa954fc;})});}_0x493384=_[_0x7ee8('0x4c')]({},_0x493384,_0x51b57c[_0x7ee8('0x4e')]);return _0x2bebfa['getAgents'](_0x493384);}})[_0x7ee8('0x2c')](function(_0x11603f){if(_0x11603f){_0x41ea9e=_0x11603f['length'];if(!_0x51b57c[_0x7ee8('0x3f')][_0x7ee8('0x46')]('nolimit')){_0x493384[_0x7ee8('0x26')]=qs['limit'](_0x51b57c['query']['limit']);_0x493384[_0x7ee8('0x24')]=qs[_0x7ee8('0x24')](_0x51b57c[_0x7ee8('0x3f')][_0x7ee8('0x24')]);}return _0x2bebfa[_0x7ee8('0x9b')](_0x493384);}})[_0x7ee8('0x2c')](function(_0x5431be){if(_0x5431be){return _0x5431be?{'count':_0x41ea9e,'rows':_0x5431be}:null;}})[_0x7ee8('0x2c')](respondWithResult(_0x1de97d,null))[_0x7ee8('0x52')](handleError(_0x1de97d,null));};exports[_0x7ee8('0x9c')]=function(_0x590b90,_0x47b0e0,_0x171ed6){var _0x19b5fa={};var _0x392ca3={};var _0x305a93;var _0x2df70a;return db[_0x7ee8('0x4f')][_0x7ee8('0x65')]({'where':{'id':_0x590b90['params']['id']}})[_0x7ee8('0x2c')](handleEntityNotFound(_0x47b0e0,null))[_0x7ee8('0x2c')](function(_0x437dd5){if(_0x437dd5){_0x305a93=_0x437dd5;_0x392ca3[_0x7ee8('0x43')]=_['keys'](db[_0x7ee8('0x7a')][_0x7ee8('0x3c')]);_0x392ca3[_0x7ee8('0x3f')]=_[_0x7ee8('0x40')](_0x590b90[_0x7ee8('0x3f')]);_0x392ca3[_0x7ee8('0x41')]=_[_0x7ee8('0x42')](_0x392ca3['model'],_0x392ca3[_0x7ee8('0x3f')]);_0x19b5fa['attributes']=_[_0x7ee8('0x42')](_0x392ca3['model'],qs[_0x7ee8('0x45')](_0x590b90[_0x7ee8('0x3f')]['fields']));_0x19b5fa[_0x7ee8('0x44')]=_0x19b5fa['attributes'][_0x7ee8('0x54')]?_0x19b5fa[_0x7ee8('0x44')]:_0x392ca3['model'];_0x19b5fa[_0x7ee8('0x48')]=qs[_0x7ee8('0x49')](_0x590b90[_0x7ee8('0x3f')]['sort']);_0x19b5fa['where']=qs[_0x7ee8('0x41')](_['pick'](_0x590b90['query'],_0x392ca3[_0x7ee8('0x41')]));if(_0x590b90[_0x7ee8('0x3f')][_0x7ee8('0x31')]){_0x19b5fa[_0x7ee8('0x4a')]=_[_0x7ee8('0x4c')](_0x19b5fa[_0x7ee8('0x4a')],{'$or':_[_0x7ee8('0x32')](_0x19b5fa[_0x7ee8('0x44')],function(_0x3aa8c1){var _0x575c5c={};_0x575c5c[_0x3aa8c1]={'$like':'%'+_0x590b90[_0x7ee8('0x3f')][_0x7ee8('0x31')]+'%'};return _0x575c5c;})});}_0x19b5fa=_[_0x7ee8('0x4c')]({},_0x19b5fa,_0x590b90[_0x7ee8('0x4e')]);return _0x305a93[_0x7ee8('0x9c')](_0x19b5fa);}})[_0x7ee8('0x2c')](function(_0x5d0cb9){if(_0x5d0cb9){_0x2df70a=_0x5d0cb9[_0x7ee8('0x54')];if(!_0x590b90[_0x7ee8('0x3f')]['hasOwnProperty'](_0x7ee8('0x47'))){_0x19b5fa['limit']=qs['limit'](_0x590b90[_0x7ee8('0x3f')]['limit']);_0x19b5fa['offset']=qs[_0x7ee8('0x24')](_0x590b90['query']['offset']);}return _0x305a93[_0x7ee8('0x9c')](_0x19b5fa);}})[_0x7ee8('0x2c')](function(_0x4a02e6){return _0x4a02e6?{'count':_0x2df70a,'rows':_0x4a02e6}:null;})[_0x7ee8('0x2c')](respondWithResult(_0x47b0e0,null))['catch'](handleError(_0x47b0e0,null));};exports[_0x7ee8('0x9d')]=function(_0x309ada,_0x3332af,_0x189f14){var _0x36170b={};var _0x36316e={};var _0x219956;var _0x4747da;return db[_0x7ee8('0x4f')][_0x7ee8('0x65')]({'where':{'id':_0x309ada[_0x7ee8('0x53')]['id']}})[_0x7ee8('0x2c')](handleEntityNotFound(_0x3332af,null))[_0x7ee8('0x2c')](function(_0x28eb9b){if(_0x28eb9b){_0x219956=_0x28eb9b;_0x36316e['model']=_[_0x7ee8('0x40')](db['CmList'][_0x7ee8('0x3c')]);_0x36316e['query']=_[_0x7ee8('0x40')](_0x309ada[_0x7ee8('0x3f')]);_0x36316e[_0x7ee8('0x41')]=_[_0x7ee8('0x42')](_0x36316e[_0x7ee8('0x43')],_0x36316e[_0x7ee8('0x3f')]);_0x36170b[_0x7ee8('0x44')]=_[_0x7ee8('0x42')](_0x36316e[_0x7ee8('0x43')],qs[_0x7ee8('0x45')](_0x309ada[_0x7ee8('0x3f')]['fields']));_0x36170b[_0x7ee8('0x44')]=_0x36170b[_0x7ee8('0x44')][_0x7ee8('0x54')]?_0x36170b[_0x7ee8('0x44')]:_0x36316e[_0x7ee8('0x43')];_0x36170b[_0x7ee8('0x48')]=qs[_0x7ee8('0x49')](_0x309ada[_0x7ee8('0x3f')]['sort']);_0x36170b[_0x7ee8('0x4a')]=qs['filters'](_[_0x7ee8('0x4b')](_0x309ada[_0x7ee8('0x3f')],_0x36316e[_0x7ee8('0x41')]));if(_0x309ada[_0x7ee8('0x3f')][_0x7ee8('0x31')]){_0x36170b[_0x7ee8('0x4a')]=_['merge'](_0x36170b[_0x7ee8('0x4a')],{'$or':_[_0x7ee8('0x32')](_0x36170b[_0x7ee8('0x44')],function(_0x293d3a){var _0x442e9c={};_0x442e9c[_0x293d3a]={'$like':'%'+_0x309ada[_0x7ee8('0x3f')][_0x7ee8('0x31')]+'%'};return _0x442e9c;})});}_0x36170b=_[_0x7ee8('0x4c')]({},_0x36170b,_0x309ada[_0x7ee8('0x4e')]);return _0x219956[_0x7ee8('0x9d')](_0x36170b);}})[_0x7ee8('0x2c')](function(_0x353be6){if(_0x353be6){_0x4747da=_0x353be6[_0x7ee8('0x54')];if(!_0x309ada['query'][_0x7ee8('0x46')](_0x7ee8('0x47'))){_0x36170b['limit']=qs['limit'](_0x309ada[_0x7ee8('0x3f')]['limit']);_0x36170b[_0x7ee8('0x24')]=qs[_0x7ee8('0x24')](_0x309ada['query']['offset']);}return _0x219956[_0x7ee8('0x9d')](_0x36170b);}})['then'](function(_0x2a2ac0){if(_0x2a2ac0){return _0x2a2ac0?{'count':_0x4747da,'rows':_0x2a2ac0}:null;}})[_0x7ee8('0x2c')](respondWithResult(_0x3332af,null))[_0x7ee8('0x52')](handleError(_0x3332af,null));};exports[_0x7ee8('0x9e')]=function(_0x46b208,_0x47c167,_0x56da53){var _0x1bd326=moment()[_0x7ee8('0x7d')](_0x7ee8('0x9f'));var _0x3a7e10,_0x320f0a;return db['VoiceQueue'][_0x7ee8('0x35')]({'where':{'id':_0x46b208['params']['id']}})[_0x7ee8('0x2c')](handleEntityNotFound(_0x47c167,null))[_0x7ee8('0x2c')](function(_0x2fd316){if(_0x2fd316){_0x320f0a=_0x2fd316;return _0x2fd316[_0x7ee8('0x9e')](_0x46b208[_0x7ee8('0x56')]['ids'],_['omit'](_0x46b208[_0x7ee8('0x56')],['ids','id'])||{});}return null;})['spread'](function(_0x6e8003){var _0x98faa4;_0x3a7e10=_0x6e8003||[];var _0x5402af=[];if(_0x6e8003){for(var _0x2e5ca2=0x0;_0x2e5ca2<_0x6e8003[_0x7ee8('0x54')];_0x2e5ca2+=0x1){var _0x5c4904=_0x6e8003[_0x2e5ca2][_0x7ee8('0x58')]({'plain':!![]});_0x320f0a[_0x7ee8('0xa0')]=_0x46b208[_0x7ee8('0x56')][_0x7ee8('0xa0')]?_0x46b208[_0x7ee8('0x56')][_0x7ee8('0xa0')]:_0x320f0a[_0x7ee8('0xa0')];switch(_0x320f0a[_0x7ee8('0xa0')]){case _0x7ee8('0xa1'):_0x98faa4=squel['insert']()[_0x7ee8('0xa2')](_0x7ee8('0xa3'))[_0x7ee8('0xa4')]([_0x7ee8('0xa5'),'scheduledAt',_0x7ee8('0xa6'),_0x7ee8('0xa7'),_0x7ee8('0x67'),_0x7ee8('0x61'),_0x7ee8('0x62')],squel[_0x7ee8('0xa8')]()[_0x7ee8('0x84')](_0x7ee8('0xa5'),_0x7ee8('0xa5'))[_0x7ee8('0x84')]('\x27'+_0x1bd326+'\x27',_0x7ee8('0xa9'))[_0x7ee8('0x84')]('id',_0x7ee8('0xa6'))[_0x7ee8('0x84')](_0x5c4904[_0x7ee8('0xaa')][_0x7ee8('0x8c')](),_0x7ee8('0xa7'))[_0x7ee8('0x84')](_0x46b208[_0x7ee8('0x53')]['id'][_0x7ee8('0x8c')](),'VoiceQueueId')[_0x7ee8('0x84')]('\x27'+_0x1bd326+'\x27',_0x7ee8('0x61'))[_0x7ee8('0x84')]('\x27'+_0x1bd326+'\x27',_0x7ee8('0x62'))[_0x7ee8('0xab')](_0x7ee8('0xac'))[_0x7ee8('0x4a')](_0x7ee8('0xad'))[_0x7ee8('0x4a')](_0x7ee8('0xae'),_0x5c4904[_0x7ee8('0xaa')][_0x7ee8('0x8c')]())[_0x7ee8('0x4a')](_0x7ee8('0xaf'))['where'](_0x7ee8('0xb0'),squel[_0x7ee8('0xa8')]()[_0x7ee8('0x84')]('COALESCE(calleridnum,\x27\x27)')[_0x7ee8('0xab')](_0x7ee8('0xb1'))['where'](_0x7ee8('0x89'),_0x46b208[_0x7ee8('0x53')]['id']['toString']()))['where']('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0x7ee8('0x84')]('COALESCE(phone,\x27\x27)')[_0x7ee8('0xab')](_0x7ee8('0xa3'))['where'](_0x7ee8('0x89'),_0x46b208[_0x7ee8('0x53')]['id']['toString']())))[_0x7ee8('0x8c')]();break;case'onlyIfOpen':_0x98faa4=squel['insert']()['into'](_0x7ee8('0xa3'))[_0x7ee8('0xa4')]([_0x7ee8('0xa5'),_0x7ee8('0xa9'),'ContactId',_0x7ee8('0xa7'),_0x7ee8('0x67'),_0x7ee8('0x61'),_0x7ee8('0x62')],squel[_0x7ee8('0xa8')]()[_0x7ee8('0x84')](_0x7ee8('0xa5'),'phone')[_0x7ee8('0x84')]('\x27'+_0x1bd326+'\x27','scheduledAt')[_0x7ee8('0x84')]('id','ContactId')[_0x7ee8('0x84')](_0x5c4904[_0x7ee8('0xaa')][_0x7ee8('0x8c')](),_0x7ee8('0xa7'))[_0x7ee8('0x84')](_0x46b208[_0x7ee8('0x53')]['id']['toString'](),_0x7ee8('0x67'))[_0x7ee8('0x84')]('\x27'+_0x1bd326+'\x27',_0x7ee8('0x61'))[_0x7ee8('0x84')]('\x27'+_0x1bd326+'\x27',_0x7ee8('0x62'))[_0x7ee8('0xab')](_0x7ee8('0xac'))['where'](_0x7ee8('0xad'))[_0x7ee8('0x4a')](_0x7ee8('0xae'),_0x5c4904[_0x7ee8('0xaa')][_0x7ee8('0x8c')]())[_0x7ee8('0x4a')](_0x7ee8('0xaf'))[_0x7ee8('0x4a')](_0x7ee8('0xb0'),squel[_0x7ee8('0xa8')]()[_0x7ee8('0x84')]('COALESCE(phone,\x27\x27)')[_0x7ee8('0xab')](_0x7ee8('0xa3'))[_0x7ee8('0x4a')](_0x7ee8('0x89'),_0x46b208[_0x7ee8('0x53')]['id'][_0x7ee8('0x8c')]())))[_0x7ee8('0x8c')]();break;default:_0x98faa4=squel['insert']()[_0x7ee8('0xa2')](_0x7ee8('0xa3'))[_0x7ee8('0xa4')]([_0x7ee8('0xa5'),'scheduledAt',_0x7ee8('0xa6'),_0x7ee8('0xa7'),'VoiceQueueId',_0x7ee8('0x61'),'updatedAt'],squel[_0x7ee8('0xa8')]()['field'](_0x7ee8('0xa5'),_0x7ee8('0xa5'))[_0x7ee8('0x84')]('\x27'+_0x1bd326+'\x27','scheduledAt')[_0x7ee8('0x84')]('id',_0x7ee8('0xa6'))['field'](_0x5c4904[_0x7ee8('0xaa')][_0x7ee8('0x8c')](),_0x7ee8('0xa7'))['field'](_0x46b208[_0x7ee8('0x53')]['id'][_0x7ee8('0x8c')](),'VoiceQueueId')['field']('\x27'+_0x1bd326+'\x27',_0x7ee8('0x61'))[_0x7ee8('0x84')]('\x27'+_0x1bd326+'\x27',_0x7ee8('0x62'))[_0x7ee8('0xab')](_0x7ee8('0xac'))[_0x7ee8('0x4a')](_0x7ee8('0xad'))[_0x7ee8('0x4a')](_0x7ee8('0xae'),_0x5c4904[_0x7ee8('0xaa')][_0x7ee8('0x8c')]())[_0x7ee8('0x4a')](_0x7ee8('0xaf')))[_0x7ee8('0x8c')]();}_0x5402af['push'](db[_0x7ee8('0x8d')][_0x7ee8('0x3f')](_0x98faa4));}return BPromise[_0x7ee8('0x98')](_0x5402af);}})['then'](function(){var _0xe364b3=[];var _0x5b10d6=squel[_0x7ee8('0xb2')]()['into'](_0x7ee8('0xb3'))[_0x7ee8('0xa4')]([_0x7ee8('0xb4'),_0x7ee8('0xa5'),_0x7ee8('0xb5'),_0x7ee8('0x61'),_0x7ee8('0x62')],squel[_0x7ee8('0xa8')]()['field']('h.id')['field'](_0x7ee8('0xb6'))[_0x7ee8('0x84')](_0x7ee8('0xb7'))[_0x7ee8('0x84')]('\x27'+_0x1bd326+'\x27','createdAt')[_0x7ee8('0x84')]('\x27'+_0x1bd326+'\x27','updatedAt')[_0x7ee8('0xab')](_0x7ee8('0xb8'),'ci')[_0x7ee8('0x86')]('cm_hopper','h',_0x7ee8('0xb9'))[_0x7ee8('0x4a')](_0x7ee8('0xba'),_0x1bd326)[_0x7ee8('0x4a')](_0x7ee8('0xbb'),_0x7ee8('0xbc')))[_0x7ee8('0x8c')]();_0xe364b3[_0x7ee8('0x97')](db[_0x7ee8('0x8d')][_0x7ee8('0x3f')](_0x5b10d6));return BPromise[_0x7ee8('0x98')](_0xe364b3);})[_0x7ee8('0x2c')](function(){return _0x3a7e10;})[_0x7ee8('0x2c')](respondWithResult(_0x47c167,null))['catch'](handleError(_0x47c167,null));};exports[_0x7ee8('0xbd')]=function(_0x2bcf82,_0x115cc4,_0x2170c7){return db[_0x7ee8('0x4f')][_0x7ee8('0x35')]({'where':{'id':_0x2bcf82['params']['id']}})[_0x7ee8('0x2c')](handleEntityNotFound(_0x115cc4,null))[_0x7ee8('0x2c')](function(_0x296746){if(_0x296746){return _0x296746[_0x7ee8('0xbd')](_0x2bcf82[_0x7ee8('0x3f')]['ids']);}})[_0x7ee8('0x2c')](function(_0xc2a869){if(_0xc2a869){return db[_0x7ee8('0x66')][_0x7ee8('0x2d')]({'where':{'ListId':_0x2bcf82[_0x7ee8('0x3f')]['ids'],'VoiceQueueId':_0x2bcf82[_0x7ee8('0x53')]['id']}})[_0x7ee8('0x2c')](function(){return _0xc2a869;});}})[_0x7ee8('0x2c')](respondWithStatusCode(_0x115cc4,null))[_0x7ee8('0x52')](handleError(_0x115cc4,null));};exports[_0x7ee8('0xbe')]=function(_0x5ab9a7,_0x2b75cb,_0x2c3ab7){var _0x3b4507={};var _0x420d2a={};var _0x1fbb1e;var _0x4a9923;return db['VoiceQueue'][_0x7ee8('0x65')]({'where':{'id':_0x5ab9a7['params']['id']}})[_0x7ee8('0x2c')](handleEntityNotFound(_0x2b75cb,null))[_0x7ee8('0x2c')](function(_0x531a3f){if(_0x531a3f){_0x1fbb1e=_0x531a3f;_0x420d2a[_0x7ee8('0x43')]=_[_0x7ee8('0x40')](db[_0x7ee8('0xbf')][_0x7ee8('0x3c')]);_0x420d2a['query']=_[_0x7ee8('0x40')](_0x5ab9a7['query']);_0x420d2a[_0x7ee8('0x41')]=_[_0x7ee8('0x42')](_0x420d2a[_0x7ee8('0x43')],_0x420d2a[_0x7ee8('0x3f')]);_0x3b4507['attributes']=_[_0x7ee8('0x42')](_0x420d2a[_0x7ee8('0x43')],qs[_0x7ee8('0x45')](_0x5ab9a7[_0x7ee8('0x3f')][_0x7ee8('0x45')]));_0x3b4507[_0x7ee8('0x44')]=_0x3b4507[_0x7ee8('0x44')][_0x7ee8('0x54')]?_0x3b4507[_0x7ee8('0x44')]:_0x420d2a['model'];_0x3b4507[_0x7ee8('0x48')]=qs[_0x7ee8('0x49')](_0x5ab9a7['query'][_0x7ee8('0x49')]);_0x3b4507['where']=qs[_0x7ee8('0x41')](_[_0x7ee8('0x4b')](_0x5ab9a7[_0x7ee8('0x3f')],_0x420d2a[_0x7ee8('0x41')]));if(_0x5ab9a7[_0x7ee8('0x3f')]['filter']){_0x3b4507['where']=_[_0x7ee8('0x4c')](_0x3b4507[_0x7ee8('0x4a')],{'$or':_['map'](_0x3b4507['attributes'],function(_0x1c42de){var _0x2922bd={};_0x2922bd[_0x1c42de]={'$like':'%'+_0x5ab9a7['query'][_0x7ee8('0x31')]+'%'};return _0x2922bd;})});}_0x3b4507=_[_0x7ee8('0x4c')]({},_0x3b4507,_0x5ab9a7[_0x7ee8('0x4e')]);return _0x1fbb1e[_0x7ee8('0xbe')](_0x3b4507);}})[_0x7ee8('0x2c')](function(_0x549f9b){if(_0x549f9b){_0x4a9923=_0x549f9b['length'];if(!_0x5ab9a7[_0x7ee8('0x3f')]['hasOwnProperty'](_0x7ee8('0x47'))){_0x3b4507['limit']=qs[_0x7ee8('0x26')](_0x5ab9a7[_0x7ee8('0x3f')][_0x7ee8('0x26')]);_0x3b4507['offset']=qs[_0x7ee8('0x24')](_0x5ab9a7[_0x7ee8('0x3f')]['offset']);}return _0x1fbb1e[_0x7ee8('0xbe')](_0x3b4507);}})[_0x7ee8('0x2c')](function(_0x135b8e){if(_0x135b8e){return _0x135b8e?{'count':_0x4a9923,'rows':_0x135b8e}:null;}})[_0x7ee8('0x2c')](respondWithResult(_0x2b75cb,null))[_0x7ee8('0x52')](handleError(_0x2b75cb,null));};exports['addBlackLists']=function(_0x15be4d,_0x4f84c9,_0x473298){var _0x39cab2,_0x228b81;return db[_0x7ee8('0x4f')]['find']({'where':{'id':_0x15be4d[_0x7ee8('0x53')]['id']}})['then'](handleEntityNotFound(_0x4f84c9,null))['then'](function(_0x1c36c2){if(_0x1c36c2){_0x228b81=_0x1c36c2;return _0x1c36c2['addBlackLists'](_0x15be4d[_0x7ee8('0x56')][_0x7ee8('0x83')],_[_0x7ee8('0x60')](_0x15be4d[_0x7ee8('0x56')],['ids','id'])||{});}return null;})[_0x7ee8('0xc0')](function(_0x2595bb){var _0x12c437;_0x39cab2=_0x2595bb||[];var _0x118457=[];if(_0x2595bb){for(var _0x11aa26=0x0;_0x11aa26<_0x2595bb[_0x7ee8('0x54')];_0x11aa26+=0x1){var _0xf9bd08=_0x2595bb[_0x11aa26]['get']({'plain':!![]});_0x12c437=squel[_0x7ee8('0xb2')]()[_0x7ee8('0xa2')]('cm_hopper_black')['fromQuery']([_0x7ee8('0xa5'),_0x7ee8('0xa6'),'ListId',_0x7ee8('0x67'),'createdAt','updatedAt'],squel[_0x7ee8('0xa8')]()['field'](_0x7ee8('0xa5'),_0x7ee8('0xa5'))[_0x7ee8('0x84')]('id',_0x7ee8('0xa6'))[_0x7ee8('0x84')](_0xf9bd08[_0x7ee8('0xaa')][_0x7ee8('0x8c')](),'ListId')[_0x7ee8('0x84')](_0x15be4d[_0x7ee8('0x53')]['id']['toString'](),_0x7ee8('0x67'))[_0x7ee8('0x84')](_0x7ee8('0xc1'),'createdAt')[_0x7ee8('0x84')](_0x7ee8('0xc1'),'updatedAt')[_0x7ee8('0xab')]('cm_contacts')['where'](_0x7ee8('0xad'))['where'](_0x7ee8('0xae'),_0xf9bd08[_0x7ee8('0xaa')][_0x7ee8('0x8c')]())[_0x7ee8('0x4a')](_0x7ee8('0xaf')))[_0x7ee8('0x8c')]();_0x118457[_0x7ee8('0x97')](db[_0x7ee8('0x8d')][_0x7ee8('0x3f')](_0x12c437));}return BPromise[_0x7ee8('0x98')](_0x118457);}})[_0x7ee8('0x2c')](function(){return _0x39cab2;})[_0x7ee8('0x2c')](respondWithResult(_0x4f84c9,null))['catch'](handleError(_0x4f84c9,null));};exports[_0x7ee8('0xc2')]=function(_0x396279,_0x3b3db3,_0x2ea550){return db[_0x7ee8('0x4f')][_0x7ee8('0x35')]({'where':{'id':_0x396279['params']['id']}})[_0x7ee8('0x2c')](handleEntityNotFound(_0x3b3db3,null))['then'](function(_0x99f4b7){if(_0x99f4b7){return _0x99f4b7['removeBlackLists'](_0x396279['query']['ids']);}})[_0x7ee8('0x2c')](function(_0x3a03ce){if(_0x3a03ce){return db[_0x7ee8('0x6d')][_0x7ee8('0x2d')]({'where':{'ListId':_0x396279['query'][_0x7ee8('0x83')],'VoiceQueueId':_0x396279[_0x7ee8('0x53')]['id']}})[_0x7ee8('0x2c')](function(){return _0x3a03ce;});}})[_0x7ee8('0x2c')](respondWithStatusCode(_0x3b3db3,null))[_0x7ee8('0x52')](handleError(_0x3b3db3,null));};
\ No newline at end of file
index 58b26eb..99a41f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa53b=['emit','hasOwnProperty','events','../../mysqldb','VoiceQueue','setMaxListeners','save'];(function(_0x49b884,_0x1d8f7b){var _0x52c32f=function(_0x2fbf65){while(--_0x2fbf65){_0x49b884['push'](_0x49b884['shift']());}};_0x52c32f(++_0x1d8f7b);}(_0xa53b,0x6b));var _0xba53=function(_0x23073e,_0x38d503){_0x23073e=_0x23073e-0x0;var _0x4b1437=_0xa53b[_0x23073e];return _0x4b1437;};'use strict';var EventEmitter=require(_0xba53('0x0'));var VoiceQueue=require(_0xba53('0x1'))['db'][_0xba53('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xba53('0x3')](0x0);var events={'afterCreate':_0xba53('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xd55d35){return function(_0x2a9918,_0x54c963,_0x4d6737){VoiceQueueEvents[_0xba53('0x5')](_0xd55d35+':'+_0x2a9918['id'],_0x2a9918);VoiceQueueEvents['emit'](_0xd55d35,_0x2a9918);_0x4d6737(null);};}for(var e in events){if(events[_0xba53('0x6')](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module['exports']=VoiceQueueEvents;
\ No newline at end of file
+var _0x8ab8=['hasOwnProperty','hook','exports','../../mysqldb','VoiceQueue','setMaxListeners','save','update'];(function(_0xe9a984,_0x53e5f0){var _0x458856=function(_0x18bb0a){while(--_0x18bb0a){_0xe9a984['push'](_0xe9a984['shift']());}};_0x458856(++_0x53e5f0);}(_0x8ab8,0x103));var _0x88ab=function(_0x6a5e21,_0x1da198){_0x6a5e21=_0x6a5e21-0x0;var _0x3ce2f8=_0x8ab8[_0x6a5e21];return _0x3ce2f8;};'use strict';var EventEmitter=require('events');var VoiceQueue=require(_0x88ab('0x0'))['db'][_0x88ab('0x1')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x88ab('0x2')](0x0);var events={'afterCreate':_0x88ab('0x3'),'afterUpdate':_0x88ab('0x4'),'afterDestroy':'remove'};function emitEvent(_0x66a653){return function(_0x13fb05,_0x1eb716,_0x510ec1){VoiceQueueEvents['emit'](_0x66a653+':'+_0x13fb05['id'],_0x13fb05);VoiceQueueEvents['emit'](_0x66a653,_0x13fb05);_0x510ec1(null);};}for(var e in events){if(events[_0x88ab('0x5')](e)){var event=events[e];VoiceQueue[_0x88ab('0x6')](e,emitEvent(event));}}module[_0x88ab('0x7')]=VoiceQueueEvents;
\ No newline at end of file
index 4923a01..61f7ea6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['define','voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports'];(function(_0xf93b08,_0x2559d7){var _0x12f72e=function(_0x30534b){while(--_0x30534b){_0xf93b08['push'](_0xf93b08['shift']());}};_0x12f72e(++_0x2559d7);}(_0x008c,0x188));var _0xc008=function(_0x4d560a,_0x48d9dd){_0x4d560a=_0x4d560a-0x0;var _0x368b51=_0x008c[_0x4d560a];return _0x368b51;};'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')]('VoiceQueue',attributes,{'tableName':_0xc008('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x008c=['define','voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports'];(function(_0x32ff1d,_0x3e29bb){var _0x50489e=function(_0x588ff3){while(--_0x588ff3){_0x32ff1d['push'](_0x32ff1d['shift']());}};_0x50489e(++_0x3e29bb);}(_0x008c,0x188));var _0xc008=function(_0x245e2d,_0x1515a6){_0x245e2d=_0x245e2d-0x0;var _0x2d1b6f=_0x008c[_0x245e2d];return _0x2d1b6f;};'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')]('VoiceQueue',attributes,{'tableName':_0xc008('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 746eeb4..aa341a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0de=['error','code','message','result','GetVoiceQueue','findAll','options','raw','limit','include','map','model','attributes','catch','ShowVoiceQueue','VoiceQueue','find','lodash','util','moment','bluebird','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./voiceQueue.socket','register','request','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x5931e8,_0x3b91d0){var _0x2679eb=function(_0x55f9c6){while(--_0x55f9c6){_0x5931e8['push'](_0x5931e8['shift']());}};_0x2679eb(++_0x3b91d0);}(_0xf0de,0x86));var _0xef0d=function(_0x239720,_0x34a063){_0x239720=_0x239720-0x0;var _0x4d660f=_0xf0de[_0x239720];return _0x4d660f;};'use strict';var _=require(_0xef0d('0x0'));var util=require(_0xef0d('0x1'));var moment=require(_0xef0d('0x2'));var BPromise=require(_0xef0d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xef0d('0x4'));var logger=require('../../config/logger')(_0xef0d('0x5'));var config=require(_0xef0d('0x6'));var jayson=require(_0xef0d('0x7'));var client=jayson[_0xef0d('0x8')][_0xef0d('0x9')]({'port':0x232a});config[_0xef0d('0xa')]=_['defaults'](config['redis'],{'host':_0xef0d('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xef0d('0xa')]));require(_0xef0d('0xc'))[_0xef0d('0xd')](socket);function respondWithRpcPromise(_0x546f77,_0x89cf8b,_0x3d163b){return new BPromise(function(_0x449646,_0xe89337){return client[_0xef0d('0xe')](_0x546f77,_0x3d163b)[_0xef0d('0xf')](function(_0x5d9205){logger[_0xef0d('0x10')](_0xef0d('0x11'),_0x89cf8b,_0xef0d('0x12'));logger[_0xef0d('0x13')](_0xef0d('0x14'),_0x89cf8b,'request\x20sent',JSON[_0xef0d('0x15')](_0x5d9205));if(_0x5d9205[_0xef0d('0x16')]){if(_0x5d9205[_0xef0d('0x16')][_0xef0d('0x17')]===0x1f4){logger['error']('VoiceQueue,\x20%s,\x20%s',_0x89cf8b,_0x5d9205[_0xef0d('0x16')][_0xef0d('0x18')]);return _0xe89337(_0x5d9205[_0xef0d('0x16')]['message']);}logger[_0xef0d('0x16')](_0xef0d('0x11'),_0x89cf8b,_0x5d9205[_0xef0d('0x16')][_0xef0d('0x18')]);return _0x449646(_0x5d9205[_0xef0d('0x16')][_0xef0d('0x18')]);}else{logger[_0xef0d('0x10')](_0xef0d('0x11'),_0x89cf8b,_0xef0d('0x12'));_0x449646(_0x5d9205[_0xef0d('0x19')][_0xef0d('0x18')]);}})['catch'](function(_0x292816){logger['error'](_0xef0d('0x11'),_0x89cf8b,_0x292816);_0xe89337(_0x292816);});});}exports[_0xef0d('0x1a')]=function(_0x19dd09){var _0x257881=this;return new Promise(function(_0x181beb,_0x1eacfd){return db['VoiceQueue'][_0xef0d('0x1b')]({'raw':_0x19dd09['options']?_0x19dd09[_0xef0d('0x1c')][_0xef0d('0x1d')]===undefined?!![]:![]:!![],'where':_0x19dd09[_0xef0d('0x1c')]?_0x19dd09[_0xef0d('0x1c')]['where']||null:null,'attributes':_0x19dd09[_0xef0d('0x1c')]?_0x19dd09[_0xef0d('0x1c')]['attributes']||null:null,'limit':_0x19dd09[_0xef0d('0x1c')]?_0x19dd09[_0xef0d('0x1c')][_0xef0d('0x1e')]||null:null,'include':_0x19dd09[_0xef0d('0x1c')]?_0x19dd09[_0xef0d('0x1c')][_0xef0d('0x1f')]?_[_0xef0d('0x20')](_0x19dd09[_0xef0d('0x1c')][_0xef0d('0x1f')],function(_0x4ff56f){return{'model':db[_0x4ff56f[_0xef0d('0x21')]],'as':_0x4ff56f['as'],'attributes':_0x4ff56f[_0xef0d('0x22')],'include':_0x4ff56f[_0xef0d('0x1f')]?_[_0xef0d('0x20')](_0x4ff56f[_0xef0d('0x1f')],function(_0x396747){return{'model':db[_0x396747[_0xef0d('0x21')]],'as':_0x396747['as'],'attributes':_0x396747[_0xef0d('0x22')],'include':_0x396747[_0xef0d('0x1f')]?_[_0xef0d('0x20')](_0x396747[_0xef0d('0x1f')],function(_0x2900ab){return{'model':db[_0x2900ab[_0xef0d('0x21')]],'as':_0x2900ab['as'],'attributes':_0x2900ab[_0xef0d('0x22')]};}):[]};}):[]};}):[]:[]})[_0xef0d('0xf')](function(_0x17bb2){logger[_0xef0d('0x10')]('GetVoiceQueue',_0x19dd09);logger['debug'](_0xef0d('0x1a'),_0x19dd09,JSON['stringify'](_0x17bb2));_0x181beb(_0x17bb2);})[_0xef0d('0x23')](function(_0x164dae){logger[_0xef0d('0x16')](_0xef0d('0x1a'),_0x164dae[_0xef0d('0x18')],_0x19dd09);_0x1eacfd(_0x257881[_0xef0d('0x16')](0x1f4,_0x164dae['message']));});});};exports[_0xef0d('0x24')]=function(_0x30624e){var _0x5548d8=this;return new Promise(function(_0x4b32ff,_0x336229){return db[_0xef0d('0x25')][_0xef0d('0x26')]({'raw':_0x30624e['options']?_0x30624e['options'][_0xef0d('0x1d')]===undefined?!![]:![]:!![],'where':_0x30624e['options']?_0x30624e[_0xef0d('0x1c')]['where']||null:null,'attributes':_0x30624e[_0xef0d('0x1c')]?_0x30624e[_0xef0d('0x1c')][_0xef0d('0x22')]||null:null,'include':_0x30624e[_0xef0d('0x1c')]?_0x30624e['options']['include']?_[_0xef0d('0x20')](_0x30624e[_0xef0d('0x1c')][_0xef0d('0x1f')],function(_0x13cc50){return{'model':db[_0x13cc50[_0xef0d('0x21')]],'as':_0x13cc50['as'],'attributes':_0x13cc50[_0xef0d('0x22')],'include':_0x13cc50[_0xef0d('0x1f')]?_[_0xef0d('0x20')](_0x13cc50['include'],function(_0x41e970){return{'model':db[_0x41e970['model']],'as':_0x41e970['as'],'attributes':_0x41e970[_0xef0d('0x22')],'include':_0x41e970[_0xef0d('0x1f')]?_['map'](_0x41e970[_0xef0d('0x1f')],function(_0x2e22e5){return{'model':db[_0x2e22e5['model']],'as':_0x2e22e5['as'],'attributes':_0x2e22e5[_0xef0d('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x315ea9){logger[_0xef0d('0x10')](_0xef0d('0x24'),_0x30624e);logger[_0xef0d('0x13')]('ShowVoiceQueue',_0x30624e,JSON[_0xef0d('0x15')](_0x315ea9));_0x4b32ff(_0x315ea9);})['catch'](function(_0x1d61da){logger[_0xef0d('0x16')](_0xef0d('0x24'),_0x1d61da[_0xef0d('0x18')],_0x30624e);_0x336229(_0x5548d8[_0xef0d('0x16')](0x1f4,_0x1d61da[_0xef0d('0x18')]));});});};
\ No newline at end of file
+var _0xa976=['stringify','catch','ShowVoiceQueue','find','raw','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','./voiceQueue.socket','register','request','then','VoiceQueue,\x20%s,\x20%s,\x20%s','error','code','VoiceQueue,\x20%s,\x20%s','message','info','request\x20sent','result','GetVoiceQueue','VoiceQueue','findAll','options','where','attributes','limit','include','map','model','debug'];(function(_0x47fd36,_0x41535d){var _0x21a0fc=function(_0x44c07c){while(--_0x44c07c){_0x47fd36['push'](_0x47fd36['shift']());}};_0x21a0fc(++_0x41535d);}(_0xa976,0x83));var _0x6a97=function(_0x308e08,_0x4b56bb){_0x308e08=_0x308e08-0x0;var _0x2b0d2e=_0xa976[_0x308e08];return _0x2b0d2e;};'use strict';var _=require('lodash');var util=require(_0x6a97('0x0'));var moment=require(_0x6a97('0x1'));var BPromise=require(_0x6a97('0x2'));var rs=require(_0x6a97('0x3'));var fs=require('fs');var Redis=require(_0x6a97('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6a97('0x5'));var logger=require(_0x6a97('0x6'))(_0x6a97('0x7'));var config=require(_0x6a97('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x6a97('0x9')][_0x6a97('0xa')]({'port':0x232a});config[_0x6a97('0xb')]=_[_0x6a97('0xc')](config[_0x6a97('0xb')],{'host':_0x6a97('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x6a97('0xe'))[_0x6a97('0xf')](socket);function respondWithRpcPromise(_0x5ad96c,_0x9043ce,_0x414764){return new BPromise(function(_0x3996fc,_0x1c2516){return client[_0x6a97('0x10')](_0x5ad96c,_0x414764)[_0x6a97('0x11')](function(_0x24a55e){logger['info']('VoiceQueue,\x20%s,\x20%s',_0x9043ce,'request\x20sent');logger['debug'](_0x6a97('0x12'),_0x9043ce,'request\x20sent',JSON['stringify'](_0x24a55e));if(_0x24a55e[_0x6a97('0x13')]){if(_0x24a55e[_0x6a97('0x13')][_0x6a97('0x14')]===0x1f4){logger['error'](_0x6a97('0x15'),_0x9043ce,_0x24a55e[_0x6a97('0x13')][_0x6a97('0x16')]);return _0x1c2516(_0x24a55e[_0x6a97('0x13')]['message']);}logger[_0x6a97('0x13')]('VoiceQueue,\x20%s,\x20%s',_0x9043ce,_0x24a55e[_0x6a97('0x13')][_0x6a97('0x16')]);return _0x3996fc(_0x24a55e['error']['message']);}else{logger[_0x6a97('0x17')]('VoiceQueue,\x20%s,\x20%s',_0x9043ce,_0x6a97('0x18'));_0x3996fc(_0x24a55e[_0x6a97('0x19')][_0x6a97('0x16')]);}})['catch'](function(_0x36851c){logger[_0x6a97('0x13')](_0x6a97('0x15'),_0x9043ce,_0x36851c);_0x1c2516(_0x36851c);});});}exports[_0x6a97('0x1a')]=function(_0x57918c){var _0x1b6c98=this;return new Promise(function(_0x3a4b40,_0x535ba3){return db[_0x6a97('0x1b')][_0x6a97('0x1c')]({'raw':_0x57918c['options']?_0x57918c[_0x6a97('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x57918c[_0x6a97('0x1d')]?_0x57918c['options'][_0x6a97('0x1e')]||null:null,'attributes':_0x57918c[_0x6a97('0x1d')]?_0x57918c[_0x6a97('0x1d')][_0x6a97('0x1f')]||null:null,'limit':_0x57918c[_0x6a97('0x1d')]?_0x57918c['options'][_0x6a97('0x20')]||null:null,'include':_0x57918c[_0x6a97('0x1d')]?_0x57918c[_0x6a97('0x1d')][_0x6a97('0x21')]?_[_0x6a97('0x22')](_0x57918c[_0x6a97('0x1d')][_0x6a97('0x21')],function(_0x58b4b8){return{'model':db[_0x58b4b8[_0x6a97('0x23')]],'as':_0x58b4b8['as'],'attributes':_0x58b4b8[_0x6a97('0x1f')],'include':_0x58b4b8[_0x6a97('0x21')]?_[_0x6a97('0x22')](_0x58b4b8[_0x6a97('0x21')],function(_0x51a698){return{'model':db[_0x51a698[_0x6a97('0x23')]],'as':_0x51a698['as'],'attributes':_0x51a698['attributes'],'include':_0x51a698[_0x6a97('0x21')]?_[_0x6a97('0x22')](_0x51a698['include'],function(_0x3b468f){return{'model':db[_0x3b468f[_0x6a97('0x23')]],'as':_0x3b468f['as'],'attributes':_0x3b468f[_0x6a97('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x6a97('0x11')](function(_0x564335){logger[_0x6a97('0x17')](_0x6a97('0x1a'),_0x57918c);logger[_0x6a97('0x24')](_0x6a97('0x1a'),_0x57918c,JSON[_0x6a97('0x25')](_0x564335));_0x3a4b40(_0x564335);})[_0x6a97('0x26')](function(_0x143a66){logger[_0x6a97('0x13')](_0x6a97('0x1a'),_0x143a66[_0x6a97('0x16')],_0x57918c);_0x535ba3(_0x1b6c98[_0x6a97('0x13')](0x1f4,_0x143a66[_0x6a97('0x16')]));});});};exports[_0x6a97('0x27')]=function(_0x339d5f){var _0x190648=this;return new Promise(function(_0x2f0ed3,_0x5bb16){return db[_0x6a97('0x1b')][_0x6a97('0x28')]({'raw':_0x339d5f[_0x6a97('0x1d')]?_0x339d5f[_0x6a97('0x1d')][_0x6a97('0x29')]===undefined?!![]:![]:!![],'where':_0x339d5f[_0x6a97('0x1d')]?_0x339d5f[_0x6a97('0x1d')][_0x6a97('0x1e')]||null:null,'attributes':_0x339d5f[_0x6a97('0x1d')]?_0x339d5f[_0x6a97('0x1d')][_0x6a97('0x1f')]||null:null,'include':_0x339d5f[_0x6a97('0x1d')]?_0x339d5f[_0x6a97('0x1d')][_0x6a97('0x21')]?_[_0x6a97('0x22')](_0x339d5f[_0x6a97('0x1d')]['include'],function(_0x40f1d5){return{'model':db[_0x40f1d5[_0x6a97('0x23')]],'as':_0x40f1d5['as'],'attributes':_0x40f1d5[_0x6a97('0x1f')],'include':_0x40f1d5[_0x6a97('0x21')]?_['map'](_0x40f1d5['include'],function(_0x41f73c){return{'model':db[_0x41f73c[_0x6a97('0x23')]],'as':_0x41f73c['as'],'attributes':_0x41f73c['attributes'],'include':_0x41f73c[_0x6a97('0x21')]?_[_0x6a97('0x22')](_0x41f73c[_0x6a97('0x21')],function(_0x45c5e2){return{'model':db[_0x45c5e2[_0x6a97('0x23')]],'as':_0x45c5e2['as'],'attributes':_0x45c5e2['attributes']};}):[]};}):[]};}):[]:[]})[_0x6a97('0x11')](function(_0x3c489d){logger[_0x6a97('0x17')](_0x6a97('0x27'),_0x339d5f);logger[_0x6a97('0x24')]('ShowVoiceQueue',_0x339d5f,JSON[_0x6a97('0x25')](_0x3c489d));_0x2f0ed3(_0x3c489d);})[_0x6a97('0x26')](function(_0x297be1){logger[_0x6a97('0x13')](_0x6a97('0x27'),_0x297be1[_0x6a97('0x16')],_0x339d5f);_0x5bb16(_0x190648[_0x6a97('0x13')](0x1f4,_0x297be1['message']));});});};
\ No newline at end of file
index f9faae9..b0afef6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfae4=['length','voiceQueue:','./voiceQueue.events','save','remove','removeListener','register'];(function(_0xadf489,_0x4891ef){var _0x3c0f96=function(_0xbdc912){while(--_0xbdc912){_0xadf489['push'](_0xadf489['shift']());}};_0x3c0f96(++_0x4891ef);}(_0xfae4,0x160));var _0x4fae=function(_0x1ab3d0,_0x319f87){_0x1ab3d0=_0x1ab3d0-0x0;var _0x5327c7=_0xfae4[_0x1ab3d0];return _0x5327c7;};'use strict';var VoiceQueueEvents=require(_0x4fae('0x0'));var events=[_0x4fae('0x1'),_0x4fae('0x2'),'update'];function createListener(_0x4de8f7,_0x2a97a6){return function(_0x5d49d8){_0x2a97a6['emit'](_0x4de8f7,_0x5d49d8);};}function removeListener(_0x1a93d9,_0x2a7def){return function(){VoiceQueueEvents[_0x4fae('0x3')](_0x1a93d9,_0x2a7def);};}exports[_0x4fae('0x4')]=function(_0x49d081){for(var _0x5cb1c1=0x0,_0x13a2e3=events[_0x4fae('0x5')];_0x5cb1c1<_0x13a2e3;_0x5cb1c1++){var _0x1ec85a=events[_0x5cb1c1];var _0x428310=createListener(_0x4fae('0x6')+_0x1ec85a,_0x49d081);VoiceQueueEvents['on'](_0x1ec85a,_0x428310);}};
\ No newline at end of file
+var _0xf8f4=['voiceQueue:','./voiceQueue.events','remove','update','emit','removeListener','register','length'];(function(_0x3e7232,_0x528812){var _0x3d86f5=function(_0x22f3f0){while(--_0x22f3f0){_0x3e7232['push'](_0x3e7232['shift']());}};_0x3d86f5(++_0x528812);}(_0xf8f4,0xf1));var _0x4f8f=function(_0x2f2fd0,_0x3c980d){_0x2f2fd0=_0x2f2fd0-0x0;var _0x44f94f=_0xf8f4[_0x2f2fd0];return _0x44f94f;};'use strict';var VoiceQueueEvents=require(_0x4f8f('0x0'));var events=['save',_0x4f8f('0x1'),_0x4f8f('0x2')];function createListener(_0x1eb9c7,_0x2f14c6){return function(_0x347db1){_0x2f14c6[_0x4f8f('0x3')](_0x1eb9c7,_0x347db1);};}function removeListener(_0x1f978b,_0x3ebb5c){return function(){VoiceQueueEvents[_0x4f8f('0x4')](_0x1f978b,_0x3ebb5c);};}exports[_0x4f8f('0x5')]=function(_0x2d4dff){for(var _0x41b9d4=0x0,_0x35295a=events[_0x4f8f('0x6')];_0x41b9d4<_0x35295a;_0x41b9d4++){var _0x13ac9f=events[_0x41b9d4];var _0x21310f=createListener(_0x4f8f('0x7')+_0x13ac9f,_0x2d4dff);VoiceQueueEvents['on'](_0x13ac9f,_0x21310f);}};
\ No newline at end of file
index 449e26b..3d82024 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42dd=['post','create','put','/:id','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceQueueReport.controller','isAuthenticated','index','get','/describe','describe','/index','getVoiceQueuesReport','show'];(function(_0x584277,_0x41882d){var _0x4ffda2=function(_0x3c1973){while(--_0x3c1973){_0x584277['push'](_0x584277['shift']());}};_0x4ffda2(++_0x41882d);}(_0x42dd,0x157));var _0xd42d=function(_0x369151,_0x179f72){_0x369151=_0x369151-0x0;var _0x4292d5=_0x42dd[_0x369151];return _0x4292d5;};'use strict';var multer=require(_0xd42d('0x0'));var util=require(_0xd42d('0x1'));var path=require('path');var timeout=require(_0xd42d('0x2'));var express=require(_0xd42d('0x3'));var router=express[_0xd42d('0x4')]();var fs_extra=require(_0xd42d('0x5'));var auth=require(_0xd42d('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd42d('0x7'));var controller=require(_0xd42d('0x8'));router['get']('/',auth[_0xd42d('0x9')](),controller[_0xd42d('0xa')]);router[_0xd42d('0xb')](_0xd42d('0xc'),auth[_0xd42d('0x9')](),controller[_0xd42d('0xd')]);router[_0xd42d('0xb')](_0xd42d('0xe'),auth[_0xd42d('0x9')](),controller[_0xd42d('0xf')]);router[_0xd42d('0xb')]('/:id',auth[_0xd42d('0x9')](),controller[_0xd42d('0x10')]);router[_0xd42d('0x11')]('/',auth[_0xd42d('0x9')](),controller[_0xd42d('0x12')]);router[_0xd42d('0x13')](_0xd42d('0x14'),auth['isAuthenticated'](),controller[_0xd42d('0x15')]);router[_0xd42d('0x16')]('/:id',auth[_0xd42d('0x9')](),controller['destroy']);module[_0xd42d('0x17')]=router;
\ No newline at end of file
+var _0x8893=['show','post','create','put','update','delete','destroy','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/index','getVoiceQueuesReport'];(function(_0x1f51d3,_0x48efc4){var _0x36849a=function(_0x4f5d72){while(--_0x4f5d72){_0x1f51d3['push'](_0x1f51d3['shift']());}};_0x36849a(++_0x48efc4);}(_0x8893,0xc5));var _0x3889=function(_0x2ad131,_0x19dbdc){_0x2ad131=_0x2ad131-0x0;var _0x5415ae=_0x8893[_0x2ad131];return _0x5415ae;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3889('0x0'));var timeout=require(_0x3889('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x3889('0x2'));var auth=require(_0x3889('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x3889('0x4'));var controller=require('./voiceQueueReport.controller');router['get']('/',auth[_0x3889('0x5')](),controller[_0x3889('0x6')]);router[_0x3889('0x7')](_0x3889('0x8'),auth[_0x3889('0x5')](),controller[_0x3889('0x9')]);router[_0x3889('0x7')](_0x3889('0xa'),auth[_0x3889('0x5')](),controller[_0x3889('0xb')]);router[_0x3889('0x7')]('/:id',auth[_0x3889('0x5')](),controller[_0x3889('0xc')]);router[_0x3889('0xd')]('/',auth[_0x3889('0x5')](),controller[_0x3889('0xe')]);router[_0x3889('0xf')]('/:id',auth[_0x3889('0x5')](),controller[_0x3889('0x10')]);router[_0x3889('0x11')]('/:id',auth[_0x3889('0x5')](),controller[_0x3889('0x12')]);module['exports']=router;
\ No newline at end of file
index 63f18d1..65e0a11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa380=['queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','moment','exports','STRING','DATE','getDataValue','queuecallerjoinAt','format','diff','seconds','setDataValue'];(function(_0x29631f,_0xdb767){var _0x486d87=function(_0x33a1bb){while(--_0x33a1bb){_0x29631f['push'](_0x29631f['shift']());}};_0x486d87(++_0xdb767);}(_0xa380,0x17c));var _0x0a38=function(_0x5e8345,_0xf0d7fb){_0x5e8345=_0x5e8345-0x0;var _0x18844d=_0xa380[_0x5e8345];return _0x18844d;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x0a38('0x0'));module[_0x0a38('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x0a38('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x0a38('0x2')]},'queue':{'type':Sequelize[_0x0a38('0x2')]},'queuecallerjoinAt':{'type':Sequelize[_0x0a38('0x3')]},'queuecallerleaveAt':{'type':Sequelize[_0x0a38('0x3')],'set':function(_0x541043){var _0x52f959=moment(_0x541043);var _0x15f369=moment(this[_0x0a38('0x4')](_0x0a38('0x5')))[_0x0a38('0x6')]('YYYY-MM-DD\x20HH:mm:ss');var _0x3c9d20=_0x52f959[_0x0a38('0x7')](_0x15f369,_0x0a38('0x8'));this[_0x0a38('0x9')](_0x0a38('0xa'),_0x541043);this[_0x0a38('0x9')](_0x0a38('0xb'),_0x3c9d20||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize[_0x0a38('0xc')]},'queuecallerabandon':{'type':Sequelize[_0x0a38('0xd')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x0a38('0x3')]},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x0a38('0x3')]},'queuecallerexit':{'type':Sequelize[_0x0a38('0xd')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x0a38('0x3')]},'queuecallerexitreason':{'type':Sequelize[_0x0a38('0x2')],'comment':_0x0a38('0xe')},'originalposition':{'type':Sequelize[_0x0a38('0xc')]},'channel':{'type':Sequelize[_0x0a38('0x2')]},'connectedlinenum':{'type':Sequelize[_0x0a38('0x2')]},'connectedlinename':{'type':Sequelize[_0x0a38('0x2')]},'accountcode':{'type':Sequelize[_0x0a38('0x2')]},'context':{'type':Sequelize[_0x0a38('0x2')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x0a38('0x2')]},'holdtime':{'type':Sequelize[_0x0a38('0xc')]},'mohtime':{'type':Sequelize[_0x0a38('0xc')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x0a38('0xd')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x0a38('0x2')]},'transfer':{'type':Sequelize[_0x0a38('0xd')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x0a38('0x2')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x0a38('0x2')]},'transferuniqueid':{'type':Sequelize[_0x0a38('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x0a38('0x2')]},'thirdDisposition':{'type':Sequelize[_0x0a38('0x2')]},'queuecallerenterreason':{'type':Sequelize[_0x0a38('0xc')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x593b=['STRING','DATE','getDataValue','format','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','queuecallerleaveAt','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','moment','exports'];(function(_0x58c422,_0x52cc53){var _0xecfd66=function(_0xe56a5f){while(--_0xe56a5f){_0x58c422['push'](_0x58c422['shift']());}};_0xecfd66(++_0x52cc53);}(_0x593b,0x11e));var _0xb593=function(_0x3063bc,_0x4dadcb){_0x3063bc=_0x3063bc-0x0;var _0xacfa64=_0x593b[_0x3063bc];return _0xacfa64;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xb593('0x0'));module[_0xb593('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xb593('0x2')]},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0xb593('0x3')]},'queuecallerleaveAt':{'type':Sequelize[_0xb593('0x3')],'set':function(_0x23bcd8){var _0x5bff98=moment(_0x23bcd8);var _0x2a6538=moment(this[_0xb593('0x4')]('queuecallerjoinAt'))[_0xb593('0x5')](_0xb593('0x6'));var _0x5e6fb6=_0x5bff98[_0xb593('0x7')](_0x2a6538,_0xb593('0x8'));this[_0xb593('0x9')](_0xb593('0xa'),_0x23bcd8);this[_0xb593('0x9')](_0xb593('0xb'),_0x5e6fb6||null);}},'position':{'type':Sequelize[_0xb593('0xc')]},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize[_0xb593('0xd')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xb593('0x3')]},'queuecallercomplete':{'type':Sequelize[_0xb593('0xd')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xb593('0x3')]},'queuecallerexit':{'type':Sequelize[_0xb593('0xd')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xb593('0x3')]},'queuecallerexitreason':{'type':Sequelize['STRING'],'comment':_0xb593('0xe')},'originalposition':{'type':Sequelize['INTEGER']},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xb593('0x2')]},'connectedlinename':{'type':Sequelize[_0xb593('0x2')]},'accountcode':{'type':Sequelize[_0xb593('0x2')]},'context':{'type':Sequelize[_0xb593('0x2')]},'exten':{'type':Sequelize[_0xb593('0x2')]},'priority':{'type':Sequelize[_0xb593('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0xb593('0xc')],'defaultValue':0x0},'assigned':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xb593('0x2')]},'transfer':{'type':Sequelize[_0xb593('0xd')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xb593('0x2')],'comment':_0xb593('0xf')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0xb593('0x2')]},'disposition':{'type':Sequelize[_0xb593('0x2')]},'secondDisposition':{'type':Sequelize[_0xb593('0x2')]},'thirdDisposition':{'type':Sequelize[_0xb593('0x2')]},'queuecallerenterreason':{'type':Sequelize[_0xb593('0xc')],'defaultValue':0x0}};
\ No newline at end of file
index 0a49831..46116ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f38=['order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','include','rows','show','params','fields','catch','create','body','find','describe','findAll','getVoiceQueuesReport','eml-format','rimraf','zip-dir','moment','bluebird','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./voiceQueueReport.socket','register','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','name','send','index','map','VoiceQueueReport','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','length','hasOwnProperty'];(function(_0x488ceb,_0x38c965){var _0x93d517=function(_0x3c9d14){while(--_0x3c9d14){_0x488ceb['push'](_0x488ceb['shift']());}};_0x93d517(++_0x38c965);}(_0x2f38,0x65));var _0x82f3=function(_0x14f8f9,_0x53d4e0){_0x14f8f9=_0x14f8f9-0x0;var _0x16dc9b=_0x2f38[_0x14f8f9];return _0x16dc9b;};'use strict';var emlformat=require(_0x82f3('0x0'));var rimraf=require(_0x82f3('0x1'));var zipdir=require(_0x82f3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x82f3('0x3'));var BPromise=require(_0x82f3('0x4'));var Mustache=require('mustache');var util=require(_0x82f3('0x5'));var path=require('path');var sox=require(_0x82f3('0x6'));var csv=require(_0x82f3('0x7'));var ejs=require(_0x82f3('0x8'));var fs=require('fs');var fs_extra=require(_0x82f3('0x9'));var _=require('lodash');var squel=require(_0x82f3('0xa'));var crypto=require('crypto');var jsforce=require(_0x82f3('0xb'));var deskjs=require(_0x82f3('0xc'));var toCsv=require(_0x82f3('0x7'));var querystring=require(_0x82f3('0xd'));var Papa=require(_0x82f3('0xe'));var Redis=require(_0x82f3('0xf'));var authService=require(_0x82f3('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x82f3('0x11'));var hardwareService=require(_0x82f3('0x12'));var logger=require('../../config/logger')(_0x82f3('0x13'));var utils=require(_0x82f3('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x82f3('0x15'));var db=require(_0x82f3('0x16'))['db'];config[_0x82f3('0x17')]=_[_0x82f3('0x18')](config[_0x82f3('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x82f3('0x19'))(new Redis(config[_0x82f3('0x17')]));require(_0x82f3('0x1a'))[_0x82f3('0x1b')](socket);function respondWithStatusCode(_0xd27ef3,_0x2b712e){_0x2b712e=_0x2b712e||0xcc;return function(_0x36c45d){if(_0x36c45d){return _0xd27ef3['sendStatus'](_0x2b712e);}return _0xd27ef3[_0x82f3('0x1c')](_0x2b712e)[_0x82f3('0x1d')]();};}function respondWithResult(_0xa4ab0e,_0x13c24f){_0x13c24f=_0x13c24f||0xc8;return function(_0x13a26f){if(_0x13a26f){return _0xa4ab0e[_0x82f3('0x1c')](_0x13c24f)[_0x82f3('0x1e')](_0x13a26f);}};}function respondWithFilteredResult(_0x13282a,_0xbf6520){return function(_0x55cd76){if(_0x55cd76){var _0x22015d=typeof _0xbf6520[_0x82f3('0x1f')]===_0x82f3('0x20')&&typeof _0xbf6520[_0x82f3('0x21')]==='undefined';var _0x271cd6=_0x55cd76[_0x82f3('0x22')];var _0x25fb3c=_0x22015d?0x0:_0xbf6520[_0x82f3('0x1f')];var _0x2b5913=_0x22015d?_0x55cd76['count']:_0xbf6520[_0x82f3('0x1f')]+_0xbf6520[_0x82f3('0x21')];var _0x3a1f4a;if(_0x2b5913>=_0x271cd6){_0x2b5913=_0x271cd6;_0x3a1f4a=0xc8;}else{_0x3a1f4a=0xce;}_0x13282a['status'](_0x3a1f4a);return _0x13282a['set'](_0x82f3('0x23'),_0x25fb3c+'-'+_0x2b5913+'/'+_0x271cd6)['json'](_0x55cd76);}return null;};}function patchUpdates(_0x218f09){return function(_0x3ed98f){try{jsonpatch[_0x82f3('0x24')](_0x3ed98f,_0x218f09,!![]);}catch(_0x48bdbe){return BPromise[_0x82f3('0x25')](_0x48bdbe);}return _0x3ed98f[_0x82f3('0x26')]();};}function saveUpdates(_0x62bd49,_0x3599df){return function(_0x173076){if(_0x173076){return _0x173076[_0x82f3('0x27')](_0x62bd49)[_0x82f3('0x28')](function(_0x1240ed){return _0x1240ed;});}return null;};}function removeEntity(_0x53e1f8,_0x27f0e6){return function(_0x4a0951){if(_0x4a0951){return _0x4a0951[_0x82f3('0x29')]()['then'](function(){_0x53e1f8['status'](0xcc)[_0x82f3('0x1d')]();});}};}function handleEntityNotFound(_0x29b213,_0x3e8f87){return function(_0x544380){if(!_0x544380){_0x29b213[_0x82f3('0x2a')](0x194);}return _0x544380;};}function handleError(_0x251ca7,_0x278b44){_0x278b44=_0x278b44||0x1f4;return function(_0x14cf48){logger['error'](_0x14cf48['stack']);if(_0x14cf48[_0x82f3('0x2b')]){delete _0x14cf48[_0x82f3('0x2b')];}_0x251ca7[_0x82f3('0x1c')](_0x278b44)[_0x82f3('0x2c')](_0x14cf48);};}exports[_0x82f3('0x2d')]=function(_0x2d84ca,_0x2c514f){var _0x3cd8ba={},_0x4102b5={},_0x38a3e7={'count':0x0,'rows':[]};var _0x5c2beb=_[_0x82f3('0x2e')](db[_0x82f3('0x2f')][_0x82f3('0x30')],function(_0x37223d){return{'name':_0x37223d[_0x82f3('0x31')],'type':_0x37223d[_0x82f3('0x32')]['key']};});_0x4102b5[_0x82f3('0x33')]=_[_0x82f3('0x2e')](_0x5c2beb,_0x82f3('0x2b'));_0x4102b5[_0x82f3('0x34')]=_[_0x82f3('0x35')](_0x2d84ca[_0x82f3('0x34')]);_0x4102b5[_0x82f3('0x36')]=_['intersection'](_0x4102b5[_0x82f3('0x33')],_0x4102b5[_0x82f3('0x34')]);_0x3cd8ba[_0x82f3('0x37')]=_[_0x82f3('0x38')](_0x4102b5[_0x82f3('0x33')],qs['fields'](_0x2d84ca[_0x82f3('0x34')]['fields']));_0x3cd8ba[_0x82f3('0x37')]=_0x3cd8ba[_0x82f3('0x37')][_0x82f3('0x39')]?_0x3cd8ba[_0x82f3('0x37')]:_0x4102b5[_0x82f3('0x33')];if(!_0x2d84ca[_0x82f3('0x34')][_0x82f3('0x3a')]('nolimit')){_0x3cd8ba[_0x82f3('0x21')]=qs[_0x82f3('0x21')](_0x2d84ca[_0x82f3('0x34')]['limit']);_0x3cd8ba['offset']=qs[_0x82f3('0x1f')](_0x2d84ca[_0x82f3('0x34')][_0x82f3('0x1f')]);}_0x3cd8ba[_0x82f3('0x3b')]=qs[_0x82f3('0x3c')](_0x2d84ca[_0x82f3('0x34')]['sort']);_0x3cd8ba[_0x82f3('0x3d')]=qs[_0x82f3('0x36')](_[_0x82f3('0x3e')](_0x2d84ca[_0x82f3('0x34')],_0x4102b5[_0x82f3('0x36')]),_0x5c2beb);if(_0x2d84ca[_0x82f3('0x34')]['filter']){_0x3cd8ba[_0x82f3('0x3d')]=_['merge'](_0x3cd8ba[_0x82f3('0x3d')],{'$or':_[_0x82f3('0x2e')](_0x5c2beb,function(_0x4a9c6f){if(_0x4a9c6f[_0x82f3('0x32')]!==_0x82f3('0x3f')){var _0x4798a5={};_0x4798a5[_0x4a9c6f[_0x82f3('0x2b')]]={'$like':'%'+_0x2d84ca[_0x82f3('0x34')][_0x82f3('0x40')]+'%'};return _0x4798a5;}})});}_0x3cd8ba=_[_0x82f3('0x41')]({},_0x3cd8ba,_0x2d84ca[_0x82f3('0x42')]);var _0x11f639={'where':_0x3cd8ba[_0x82f3('0x3d')]};return db[_0x82f3('0x2f')][_0x82f3('0x22')](_0x11f639)[_0x82f3('0x28')](function(_0x556a5e){_0x38a3e7[_0x82f3('0x22')]=_0x556a5e;if(_0x2d84ca[_0x82f3('0x34')][_0x82f3('0x43')]){_0x3cd8ba[_0x82f3('0x44')]=[{'all':!![]}];}return db[_0x82f3('0x2f')]['findAll'](_0x3cd8ba);})['then'](function(_0x2d76a3){_0x38a3e7[_0x82f3('0x45')]=_0x2d76a3;return _0x38a3e7;})[_0x82f3('0x28')](respondWithFilteredResult(_0x2c514f,_0x3cd8ba))['catch'](handleError(_0x2c514f,null));};exports[_0x82f3('0x46')]=function(_0x994fe7,_0x33d1cc){var _0x3c9570={'raw':![],'where':{'id':_0x994fe7[_0x82f3('0x47')]['id']}},_0x111227={};_0x111227[_0x82f3('0x33')]=_[_0x82f3('0x35')](db['VoiceQueueReport']['rawAttributes']);_0x111227[_0x82f3('0x34')]=_['keys'](_0x994fe7[_0x82f3('0x34')]);_0x111227[_0x82f3('0x36')]=_[_0x82f3('0x38')](_0x111227[_0x82f3('0x33')],_0x111227['query']);_0x3c9570[_0x82f3('0x37')]=_['intersection'](_0x111227[_0x82f3('0x33')],qs[_0x82f3('0x48')](_0x994fe7[_0x82f3('0x34')][_0x82f3('0x48')]));_0x3c9570[_0x82f3('0x37')]=_0x3c9570[_0x82f3('0x37')][_0x82f3('0x39')]?_0x3c9570[_0x82f3('0x37')]:_0x111227[_0x82f3('0x33')];if(_0x994fe7[_0x82f3('0x34')][_0x82f3('0x43')]){_0x3c9570[_0x82f3('0x44')]=[{'all':!![]}];}_0x3c9570=_['merge']({},_0x3c9570,_0x994fe7[_0x82f3('0x42')]);return db[_0x82f3('0x2f')]['find'](_0x3c9570)[_0x82f3('0x28')](handleEntityNotFound(_0x33d1cc,null))[_0x82f3('0x28')](respondWithResult(_0x33d1cc,null))[_0x82f3('0x49')](handleError(_0x33d1cc,null));};exports[_0x82f3('0x4a')]=function(_0xc88af9,_0x44d425){return db[_0x82f3('0x2f')][_0x82f3('0x4a')](_0xc88af9['body'],{})[_0x82f3('0x28')](respondWithResult(_0x44d425,0xc9))[_0x82f3('0x49')](handleError(_0x44d425,null));};exports[_0x82f3('0x27')]=function(_0x562032,_0x2b5f1e){if(_0x562032[_0x82f3('0x4b')]['id']){delete _0x562032[_0x82f3('0x4b')]['id'];}return db[_0x82f3('0x2f')][_0x82f3('0x4c')]({'where':{'id':_0x562032[_0x82f3('0x47')]['id']}})[_0x82f3('0x28')](handleEntityNotFound(_0x2b5f1e,null))['then'](saveUpdates(_0x562032['body'],null))[_0x82f3('0x28')](respondWithResult(_0x2b5f1e,null))['catch'](handleError(_0x2b5f1e,null));};exports[_0x82f3('0x29')]=function(_0x1d1115,_0x583378){return db[_0x82f3('0x2f')][_0x82f3('0x4c')]({'where':{'id':_0x1d1115[_0x82f3('0x47')]['id']}})[_0x82f3('0x28')](handleEntityNotFound(_0x583378,null))[_0x82f3('0x28')](removeEntity(_0x583378,null))['catch'](handleError(_0x583378,null));};exports[_0x82f3('0x4d')]=function(_0x2d831e,_0x3be5c4){return db[_0x82f3('0x2f')][_0x82f3('0x4d')]()[_0x82f3('0x28')](respondWithResult(_0x3be5c4,null))['catch'](handleError(_0x3be5c4,null));};exports['getVoiceQueuesReport']=function(_0x122f50,_0x45ece2){var _0x21fa55={},_0x928697={},_0x14348f={'count':0x0,'rows':[]};_0x928697[_0x82f3('0x33')]=_['keys'](db[_0x82f3('0x2f')][_0x82f3('0x30')]);_0x928697[_0x82f3('0x34')]=_['keys'](_0x122f50['query']);_0x928697[_0x82f3('0x36')]=_[_0x82f3('0x38')](_0x928697[_0x82f3('0x33')],_0x928697[_0x82f3('0x34')]);_0x21fa55[_0x82f3('0x37')]=_[_0x82f3('0x38')](_0x928697[_0x82f3('0x33')],qs[_0x82f3('0x48')](_0x122f50['query']['fields']));_0x21fa55[_0x82f3('0x37')]=_0x21fa55[_0x82f3('0x37')]['length']?_0x21fa55[_0x82f3('0x37')]:_0x928697[_0x82f3('0x33')];if(!_0x122f50[_0x82f3('0x34')][_0x82f3('0x3a')]('nolimit')){_0x21fa55[_0x82f3('0x21')]=qs['limit'](_0x122f50[_0x82f3('0x34')]['limit']);_0x21fa55[_0x82f3('0x1f')]=qs['offset'](_0x122f50[_0x82f3('0x34')][_0x82f3('0x1f')]);}_0x21fa55['order']=qs[_0x82f3('0x3c')](_0x122f50['query']['sort']);_0x21fa55['where']=qs['filters'](_['pick'](_0x122f50[_0x82f3('0x34')],_0x928697[_0x82f3('0x36')]));if(_0x122f50[_0x82f3('0x34')]['filter']){_0x21fa55[_0x82f3('0x3d')]=_['merge'](_0x21fa55[_0x82f3('0x3d')],{'$or':_[_0x82f3('0x2e')](_0x21fa55['attributes'],function(_0x50819e){var _0x1b230c={};_0x1b230c[_0x50819e]={'$like':'%'+_0x122f50[_0x82f3('0x34')][_0x82f3('0x40')]+'%'};return _0x1b230c;})});}_0x21fa55=_[_0x82f3('0x41')]({},_0x21fa55,_0x122f50['options']);var _0x3bc428={'where':_0x21fa55[_0x82f3('0x3d')]};return db[_0x82f3('0x2f')][_0x82f3('0x22')](_0x3bc428)[_0x82f3('0x28')](function(_0x546d81){_0x14348f['count']=_0x546d81;if(_0x122f50[_0x82f3('0x34')]['includeAll']){_0x21fa55[_0x82f3('0x44')]=[{'all':!![]}];}return db[_0x82f3('0x2f')][_0x82f3('0x4e')](_0x21fa55);})[_0x82f3('0x28')](function(_0x208fe7){_0x14348f[_0x82f3('0x45')]=_0x208fe7;return _0x14348f;})[_0x82f3('0x28')](respondWithFilteredResult(_0x45ece2,_0x21fa55,_0x82f3('0x4f')))['catch'](handleError(_0x45ece2,null,_0x82f3('0x4f')));};
\ No newline at end of file
+var _0x6e6c=['socket.io-emitter','sendStatus','status','end','undefined','limit','count','offset','set','json','apply','reject','update','then','destroy','error','stack','name','send','index','map','VoiceQueueReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','length','hasOwnProperty','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','fields','find','create','body','describe','getVoiceQueuesReport','nolimit','order','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis'];(function(_0x4c516c,_0x12fbb2){var _0x130aa5=function(_0x1ab5d2){while(--_0x1ab5d2){_0x4c516c['push'](_0x4c516c['shift']());}};_0x130aa5(++_0x12fbb2);}(_0x6e6c,0x1c2));var _0xc6e6=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6e6c[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xc6e6('0x0'));var rimraf=require(_0xc6e6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc6e6('0x2'));var rp=require(_0xc6e6('0x3'));var moment=require(_0xc6e6('0x4'));var BPromise=require(_0xc6e6('0x5'));var Mustache=require(_0xc6e6('0x6'));var util=require(_0xc6e6('0x7'));var path=require('path');var sox=require(_0xc6e6('0x8'));var csv=require(_0xc6e6('0x9'));var ejs=require(_0xc6e6('0xa'));var fs=require('fs');var fs_extra=require(_0xc6e6('0xb'));var _=require('lodash');var squel=require(_0xc6e6('0xc'));var crypto=require(_0xc6e6('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xc6e6('0xe'));var toCsv=require(_0xc6e6('0x9'));var querystring=require(_0xc6e6('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xc6e6('0x10'));var qs=require(_0xc6e6('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc6e6('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xc6e6('0x13'));var config=require(_0xc6e6('0x14'));var licenseUtil=require(_0xc6e6('0x15'));var db=require(_0xc6e6('0x16'))['db'];config[_0xc6e6('0x17')]=_['defaults'](config[_0xc6e6('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0xc6e6('0x18'))(new Redis(config[_0xc6e6('0x17')]));require('./voiceQueueReport.socket')['register'](socket);function respondWithStatusCode(_0x546ee5,_0x25b92f){_0x25b92f=_0x25b92f||0xcc;return function(_0x17b73c){if(_0x17b73c){return _0x546ee5[_0xc6e6('0x19')](_0x25b92f);}return _0x546ee5[_0xc6e6('0x1a')](_0x25b92f)[_0xc6e6('0x1b')]();};}function respondWithResult(_0x4121b0,_0x458618){_0x458618=_0x458618||0xc8;return function(_0x444d66){if(_0x444d66){return _0x4121b0['status'](_0x458618)['json'](_0x444d66);}};}function respondWithFilteredResult(_0x39165c,_0x10d67e){return function(_0x1f7c46){if(_0x1f7c46){var _0x3ce889=typeof _0x10d67e['offset']===_0xc6e6('0x1c')&&typeof _0x10d67e[_0xc6e6('0x1d')]==='undefined';var _0x3a7900=_0x1f7c46[_0xc6e6('0x1e')];var _0x7d782f=_0x3ce889?0x0:_0x10d67e[_0xc6e6('0x1f')];var _0x55f116=_0x3ce889?_0x1f7c46[_0xc6e6('0x1e')]:_0x10d67e[_0xc6e6('0x1f')]+_0x10d67e['limit'];var _0x2db224;if(_0x55f116>=_0x3a7900){_0x55f116=_0x3a7900;_0x2db224=0xc8;}else{_0x2db224=0xce;}_0x39165c[_0xc6e6('0x1a')](_0x2db224);return _0x39165c[_0xc6e6('0x20')]('Content-Range',_0x7d782f+'-'+_0x55f116+'/'+_0x3a7900)[_0xc6e6('0x21')](_0x1f7c46);}return null;};}function patchUpdates(_0x3a30dc){return function(_0x2101af){try{jsonpatch[_0xc6e6('0x22')](_0x2101af,_0x3a30dc,!![]);}catch(_0x2f9206){return BPromise[_0xc6e6('0x23')](_0x2f9206);}return _0x2101af['save']();};}function saveUpdates(_0x32c761,_0x22737c){return function(_0x41876e){if(_0x41876e){return _0x41876e[_0xc6e6('0x24')](_0x32c761)[_0xc6e6('0x25')](function(_0x30529e){return _0x30529e;});}return null;};}function removeEntity(_0x2dc621,_0x163027){return function(_0x4aa69b){if(_0x4aa69b){return _0x4aa69b[_0xc6e6('0x26')]()['then'](function(){_0x2dc621[_0xc6e6('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x12cff2,_0x37ae9c){return function(_0x52bfa7){if(!_0x52bfa7){_0x12cff2[_0xc6e6('0x19')](0x194);}return _0x52bfa7;};}function handleError(_0x5b7a5b,_0x59553){_0x59553=_0x59553||0x1f4;return function(_0x49de86){logger[_0xc6e6('0x27')](_0x49de86[_0xc6e6('0x28')]);if(_0x49de86[_0xc6e6('0x29')]){delete _0x49de86['name'];}_0x5b7a5b['status'](_0x59553)[_0xc6e6('0x2a')](_0x49de86);};}exports[_0xc6e6('0x2b')]=function(_0x2111a9,_0x86f87e){var _0x96eeca={},_0x243a82={},_0x1ca853={'count':0x0,'rows':[]};var _0x3dfb96=_[_0xc6e6('0x2c')](db[_0xc6e6('0x2d')][_0xc6e6('0x2e')],function(_0xe5fd68){return{'name':_0xe5fd68[_0xc6e6('0x2f')],'type':_0xe5fd68[_0xc6e6('0x30')][_0xc6e6('0x31')]};});_0x243a82[_0xc6e6('0x32')]=_[_0xc6e6('0x2c')](_0x3dfb96,'name');_0x243a82[_0xc6e6('0x33')]=_[_0xc6e6('0x34')](_0x2111a9[_0xc6e6('0x33')]);_0x243a82['filters']=_[_0xc6e6('0x35')](_0x243a82[_0xc6e6('0x32')],_0x243a82[_0xc6e6('0x33')]);_0x96eeca[_0xc6e6('0x36')]=_[_0xc6e6('0x35')](_0x243a82[_0xc6e6('0x32')],qs['fields'](_0x2111a9[_0xc6e6('0x33')]['fields']));_0x96eeca[_0xc6e6('0x36')]=_0x96eeca[_0xc6e6('0x36')][_0xc6e6('0x37')]?_0x96eeca[_0xc6e6('0x36')]:_0x243a82[_0xc6e6('0x32')];if(!_0x2111a9[_0xc6e6('0x33')][_0xc6e6('0x38')]('nolimit')){_0x96eeca[_0xc6e6('0x1d')]=qs[_0xc6e6('0x1d')](_0x2111a9['query'][_0xc6e6('0x1d')]);_0x96eeca[_0xc6e6('0x1f')]=qs[_0xc6e6('0x1f')](_0x2111a9[_0xc6e6('0x33')][_0xc6e6('0x1f')]);}_0x96eeca['order']=qs['sort'](_0x2111a9['query'][_0xc6e6('0x39')]);_0x96eeca[_0xc6e6('0x3a')]=qs[_0xc6e6('0x3b')](_[_0xc6e6('0x3c')](_0x2111a9[_0xc6e6('0x33')],_0x243a82['filters']),_0x3dfb96);if(_0x2111a9['query'][_0xc6e6('0x3d')]){_0x96eeca[_0xc6e6('0x3a')]=_[_0xc6e6('0x3e')](_0x96eeca[_0xc6e6('0x3a')],{'$or':_[_0xc6e6('0x2c')](_0x3dfb96,function(_0x556019){if(_0x556019[_0xc6e6('0x30')]!==_0xc6e6('0x3f')){var _0x1949af={};_0x1949af[_0x556019[_0xc6e6('0x29')]]={'$like':'%'+_0x2111a9[_0xc6e6('0x33')][_0xc6e6('0x3d')]+'%'};return _0x1949af;}})});}_0x96eeca=_['merge']({},_0x96eeca,_0x2111a9[_0xc6e6('0x40')]);var _0x45b374={'where':_0x96eeca[_0xc6e6('0x3a')]};return db['VoiceQueueReport'][_0xc6e6('0x1e')](_0x45b374)[_0xc6e6('0x25')](function(_0x3dc866){_0x1ca853[_0xc6e6('0x1e')]=_0x3dc866;if(_0x2111a9[_0xc6e6('0x33')][_0xc6e6('0x41')]){_0x96eeca[_0xc6e6('0x42')]=[{'all':!![]}];}return db['VoiceQueueReport']['findAll'](_0x96eeca);})[_0xc6e6('0x25')](function(_0x6651c5){_0x1ca853[_0xc6e6('0x43')]=_0x6651c5;return _0x1ca853;})[_0xc6e6('0x25')](respondWithFilteredResult(_0x86f87e,_0x96eeca))[_0xc6e6('0x44')](handleError(_0x86f87e,null));};exports[_0xc6e6('0x45')]=function(_0xc2aef5,_0xb879a){var _0x2d731e={'raw':![],'where':{'id':_0xc2aef5[_0xc6e6('0x46')]['id']}},_0x40471b={};_0x40471b[_0xc6e6('0x32')]=_[_0xc6e6('0x34')](db[_0xc6e6('0x2d')][_0xc6e6('0x2e')]);_0x40471b[_0xc6e6('0x33')]=_[_0xc6e6('0x34')](_0xc2aef5[_0xc6e6('0x33')]);_0x40471b['filters']=_[_0xc6e6('0x35')](_0x40471b[_0xc6e6('0x32')],_0x40471b[_0xc6e6('0x33')]);_0x2d731e[_0xc6e6('0x36')]=_[_0xc6e6('0x35')](_0x40471b[_0xc6e6('0x32')],qs[_0xc6e6('0x47')](_0xc2aef5[_0xc6e6('0x33')][_0xc6e6('0x47')]));_0x2d731e[_0xc6e6('0x36')]=_0x2d731e[_0xc6e6('0x36')][_0xc6e6('0x37')]?_0x2d731e['attributes']:_0x40471b[_0xc6e6('0x32')];if(_0xc2aef5['query'][_0xc6e6('0x41')]){_0x2d731e[_0xc6e6('0x42')]=[{'all':!![]}];}_0x2d731e=_[_0xc6e6('0x3e')]({},_0x2d731e,_0xc2aef5[_0xc6e6('0x40')]);return db[_0xc6e6('0x2d')][_0xc6e6('0x48')](_0x2d731e)[_0xc6e6('0x25')](handleEntityNotFound(_0xb879a,null))[_0xc6e6('0x25')](respondWithResult(_0xb879a,null))[_0xc6e6('0x44')](handleError(_0xb879a,null));};exports[_0xc6e6('0x49')]=function(_0x432078,_0x1b1da7){return db[_0xc6e6('0x2d')][_0xc6e6('0x49')](_0x432078[_0xc6e6('0x4a')],{})[_0xc6e6('0x25')](respondWithResult(_0x1b1da7,0xc9))[_0xc6e6('0x44')](handleError(_0x1b1da7,null));};exports[_0xc6e6('0x24')]=function(_0x5b1030,_0x3862ff){if(_0x5b1030[_0xc6e6('0x4a')]['id']){delete _0x5b1030['body']['id'];}return db[_0xc6e6('0x2d')][_0xc6e6('0x48')]({'where':{'id':_0x5b1030[_0xc6e6('0x46')]['id']}})['then'](handleEntityNotFound(_0x3862ff,null))[_0xc6e6('0x25')](saveUpdates(_0x5b1030[_0xc6e6('0x4a')],null))[_0xc6e6('0x25')](respondWithResult(_0x3862ff,null))[_0xc6e6('0x44')](handleError(_0x3862ff,null));};exports[_0xc6e6('0x26')]=function(_0x50c95c,_0x1d9e18){return db[_0xc6e6('0x2d')]['find']({'where':{'id':_0x50c95c[_0xc6e6('0x46')]['id']}})[_0xc6e6('0x25')](handleEntityNotFound(_0x1d9e18,null))['then'](removeEntity(_0x1d9e18,null))['catch'](handleError(_0x1d9e18,null));};exports[_0xc6e6('0x4b')]=function(_0x5440d2,_0x3dce39){return db[_0xc6e6('0x2d')]['describe']()[_0xc6e6('0x25')](respondWithResult(_0x3dce39,null))[_0xc6e6('0x44')](handleError(_0x3dce39,null));};exports[_0xc6e6('0x4c')]=function(_0x53655e,_0x298f1c){var _0x20f9c0={},_0x3b971b={},_0x420547={'count':0x0,'rows':[]};_0x3b971b[_0xc6e6('0x32')]=_[_0xc6e6('0x34')](db['VoiceQueueReport'][_0xc6e6('0x2e')]);_0x3b971b[_0xc6e6('0x33')]=_[_0xc6e6('0x34')](_0x53655e['query']);_0x3b971b[_0xc6e6('0x3b')]=_[_0xc6e6('0x35')](_0x3b971b['model'],_0x3b971b[_0xc6e6('0x33')]);_0x20f9c0[_0xc6e6('0x36')]=_[_0xc6e6('0x35')](_0x3b971b[_0xc6e6('0x32')],qs['fields'](_0x53655e[_0xc6e6('0x33')]['fields']));_0x20f9c0['attributes']=_0x20f9c0[_0xc6e6('0x36')][_0xc6e6('0x37')]?_0x20f9c0[_0xc6e6('0x36')]:_0x3b971b[_0xc6e6('0x32')];if(!_0x53655e[_0xc6e6('0x33')][_0xc6e6('0x38')](_0xc6e6('0x4d'))){_0x20f9c0[_0xc6e6('0x1d')]=qs[_0xc6e6('0x1d')](_0x53655e[_0xc6e6('0x33')][_0xc6e6('0x1d')]);_0x20f9c0[_0xc6e6('0x1f')]=qs[_0xc6e6('0x1f')](_0x53655e[_0xc6e6('0x33')]['offset']);}_0x20f9c0[_0xc6e6('0x4e')]=qs[_0xc6e6('0x39')](_0x53655e[_0xc6e6('0x33')][_0xc6e6('0x39')]);_0x20f9c0[_0xc6e6('0x3a')]=qs[_0xc6e6('0x3b')](_[_0xc6e6('0x3c')](_0x53655e[_0xc6e6('0x33')],_0x3b971b[_0xc6e6('0x3b')]));if(_0x53655e[_0xc6e6('0x33')][_0xc6e6('0x3d')]){_0x20f9c0['where']=_[_0xc6e6('0x3e')](_0x20f9c0[_0xc6e6('0x3a')],{'$or':_[_0xc6e6('0x2c')](_0x20f9c0[_0xc6e6('0x36')],function(_0x45ede9){var _0x499dcd={};_0x499dcd[_0x45ede9]={'$like':'%'+_0x53655e[_0xc6e6('0x33')][_0xc6e6('0x3d')]+'%'};return _0x499dcd;})});}_0x20f9c0=_[_0xc6e6('0x3e')]({},_0x20f9c0,_0x53655e[_0xc6e6('0x40')]);var _0x6690ec={'where':_0x20f9c0[_0xc6e6('0x3a')]};return db[_0xc6e6('0x2d')][_0xc6e6('0x1e')](_0x6690ec)['then'](function(_0x456076){_0x420547[_0xc6e6('0x1e')]=_0x456076;if(_0x53655e[_0xc6e6('0x33')][_0xc6e6('0x41')]){_0x20f9c0[_0xc6e6('0x42')]=[{'all':!![]}];}return db['VoiceQueueReport']['findAll'](_0x20f9c0);})['then'](function(_0x2bcde8){_0x420547[_0xc6e6('0x43')]=_0x2bcde8;return _0x420547;})[_0xc6e6('0x25')](respondWithFilteredResult(_0x298f1c,_0x20f9c0,_0xc6e6('0x4c')))['catch'](handleError(_0x298f1c,null,'getVoiceQueuesReport'));};
\ No newline at end of file
index f8a9356..9e1bda2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa853=['exports','events','../../mysqldb','VoiceQueueReport','setMaxListeners','update','remove','emit','hook'];(function(_0x507f06,_0x5cc093){var _0x1ca5bb=function(_0xa90fc0){while(--_0xa90fc0){_0x507f06['push'](_0x507f06['shift']());}};_0x1ca5bb(++_0x5cc093);}(_0xa853,0x76));var _0x3a85=function(_0x5419ce,_0x39f254){_0x5419ce=_0x5419ce-0x0;var _0xc68fe8=_0xa853[_0x5419ce];return _0xc68fe8;};'use strict';var EventEmitter=require(_0x3a85('0x0'));var VoiceQueueReport=require(_0x3a85('0x1'))['db'][_0x3a85('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x3a85('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3a85('0x4'),'afterDestroy':_0x3a85('0x5')};function emitEvent(_0x56c840){return function(_0x518b45,_0x52a486,_0x3e6de0){VoiceQueueReportEvents[_0x3a85('0x6')](_0x56c840+':'+_0x518b45['id'],_0x518b45);VoiceQueueReportEvents[_0x3a85('0x6')](_0x56c840,_0x518b45);_0x3e6de0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport[_0x3a85('0x7')](e,emitEvent(event));}}module[_0x3a85('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xaf31=['../../mysqldb','VoiceQueueReport','save','update','remove','emit','exports','events'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xaf31,0x18f));var _0x1af3=function(_0x1ee634,_0x121ac1){_0x1ee634=_0x1ee634-0x0;var _0x43713e=_0xaf31[_0x1ee634];return _0x43713e;};'use strict';var EventEmitter=require(_0x1af3('0x0'));var VoiceQueueReport=require(_0x1af3('0x1'))['db'][_0x1af3('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1af3('0x3'),'afterUpdate':_0x1af3('0x4'),'afterDestroy':_0x1af3('0x5')};function emitEvent(_0x2b2498){return function(_0x167211,_0x236a51,_0xe65623){VoiceQueueReportEvents['emit'](_0x2b2498+':'+_0x167211['id'],_0x167211);VoiceQueueReportEvents[_0x1af3('0x6')](_0x2b2498,_0x167211);_0xe65623(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0x1af3('0x7')]=VoiceQueueReportEvents;
\ No newline at end of file
index 055f934..857937a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb82d=['./voiceQueueReport.attributes','exports','define','VoiceQueueReport','report_queue','lodash','util','api','moment','bluebird','path'];(function(_0x5d4222,_0x6196fb){var _0x54fa2d=function(_0x5085c9){while(--_0x5085c9){_0x5d4222['push'](_0x5d4222['shift']());}};_0x54fa2d(++_0x6196fb);}(_0xb82d,0x94));var _0xdb82=function(_0xdbf8f2,_0x409a32){_0xdbf8f2=_0xdbf8f2-0x0;var _0x4ed5d2=_0xb82d[_0xdbf8f2];return _0x4ed5d2;};'use strict';var _=require(_0xdb82('0x0'));var util=require(_0xdb82('0x1'));var logger=require('../../config/logger')(_0xdb82('0x2'));var moment=require(_0xdb82('0x3'));var BPromise=require(_0xdb82('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xdb82('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xdb82('0x6'));module[_0xdb82('0x7')]=function(_0x3ea3e6,_0x558ffe){return _0x3ea3e6[_0xdb82('0x8')](_0xdb82('0x9'),attributes,{'tableName':_0xdb82('0xa'),'paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6de8=['calleridnum','util','../../config/logger','api','moment','path','rimraf','../../config/environment','exports','define'];(function(_0x1cd51f,_0x297954){var _0x54208a=function(_0x33fbf7){while(--_0x33fbf7){_0x1cd51f['push'](_0x1cd51f['shift']());}};_0x54208a(++_0x297954);}(_0x6de8,0xa1));var _0x86de=function(_0x3f993e,_0x2d5757){_0x3f993e=_0x3f993e-0x0;var _0x39c135=_0x6de8[_0x3f993e];return _0x39c135;};'use strict';var _=require('lodash');var util=require(_0x86de('0x0'));var logger=require(_0x86de('0x1'))(_0x86de('0x2'));var moment=require(_0x86de('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x86de('0x4'));var rimraf=require(_0x86de('0x5'));var config=require(_0x86de('0x6'));var attributes=require('./voiceQueueReport.attributes');module[_0x86de('0x7')]=function(_0xbea9ea,_0x53090d){return _0xbea9ea[_0x86de('0x8')]('VoiceQueueReport',attributes,{'tableName':'report_queue','paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':[_0x86de('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 3ca6f8f..e94f7e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd82f=['socket.io-emitter','register','then','info','debug','request\x20sent','stringify','error','VoiceQueueReport,\x20%s,\x20%s','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','options','raw','attributes','include','map','model','CreateVoiceQueueReport','body','UpdateVoiceQueueReport','update','where','bluebird','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost'];(function(_0x1b4b23,_0x5dd6d6){var _0x2a325b=function(_0x175462){while(--_0x175462){_0x1b4b23['push'](_0x1b4b23['shift']());}};_0x2a325b(++_0x5dd6d6);}(_0xd82f,0xa1));var _0xfd82=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xd82f[_0x59ee6f];return _0x4c0979;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xfd82('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xfd82('0x1'));var logger=require(_0xfd82('0x2'))(_0xfd82('0x3'));var config=require('../../config/environment');var jayson=require(_0xfd82('0x4'));var client=jayson[_0xfd82('0x5')][_0xfd82('0x6')]({'port':0x232a});config['redis']=_['defaults'](config[_0xfd82('0x7')],{'host':_0xfd82('0x8'),'port':0x18eb});var socket=require(_0xfd82('0x9'))(new Redis(config['redis']));require('./voiceQueueReport.socket')[_0xfd82('0xa')](socket);function respondWithRpcPromise(_0x3a33b7,_0x37c104,_0x8cd1de){return new BPromise(function(_0xccbefe,_0x17c991){return client['request'](_0x3a33b7,_0x8cd1de)[_0xfd82('0xb')](function(_0x400162){logger[_0xfd82('0xc')]('VoiceQueueReport,\x20%s,\x20%s',_0x37c104,'request\x20sent');logger[_0xfd82('0xd')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x37c104,_0xfd82('0xe'),JSON[_0xfd82('0xf')](_0x400162));if(_0x400162['error']){if(_0x400162[_0xfd82('0x10')]['code']===0x1f4){logger['error'](_0xfd82('0x11'),_0x37c104,_0x400162[_0xfd82('0x10')][_0xfd82('0x12')]);return _0x17c991(_0x400162['error'][_0xfd82('0x12')]);}logger[_0xfd82('0x10')]('VoiceQueueReport,\x20%s,\x20%s',_0x37c104,_0x400162[_0xfd82('0x10')][_0xfd82('0x12')]);return _0xccbefe(_0x400162[_0xfd82('0x10')]['message']);}else{logger[_0xfd82('0xc')](_0xfd82('0x11'),_0x37c104,_0xfd82('0xe'));_0xccbefe(_0x400162[_0xfd82('0x13')][_0xfd82('0x12')]);}})[_0xfd82('0x14')](function(_0x2dca61){logger[_0xfd82('0x10')](_0xfd82('0x11'),_0x37c104,_0x2dca61);_0x17c991(_0x2dca61);});});}exports[_0xfd82('0x15')]=function(_0x103aaa){var _0x26088f=this;return new Promise(function(_0x22cce2,_0xc0932d){return db[_0xfd82('0x16')]['findAll']({'raw':_0x103aaa[_0xfd82('0x17')]?_0x103aaa[_0xfd82('0x17')][_0xfd82('0x18')]===undefined?!![]:![]:!![],'where':_0x103aaa['options']?_0x103aaa[_0xfd82('0x17')]['where']||null:null,'attributes':_0x103aaa[_0xfd82('0x17')]?_0x103aaa[_0xfd82('0x17')][_0xfd82('0x19')]||null:null,'limit':_0x103aaa[_0xfd82('0x17')]?_0x103aaa['options']['limit']||null:null,'include':_0x103aaa[_0xfd82('0x17')]?_0x103aaa['options'][_0xfd82('0x1a')]?_[_0xfd82('0x1b')](_0x103aaa[_0xfd82('0x17')][_0xfd82('0x1a')],function(_0x4535b8){return{'model':db[_0x4535b8[_0xfd82('0x1c')]],'as':_0x4535b8['as'],'attributes':_0x4535b8[_0xfd82('0x19')],'include':_0x4535b8[_0xfd82('0x1a')]?_[_0xfd82('0x1b')](_0x4535b8[_0xfd82('0x1a')],function(_0x5e36da){return{'model':db[_0x5e36da['model']],'as':_0x5e36da['as'],'attributes':_0x5e36da[_0xfd82('0x19')],'include':_0x5e36da[_0xfd82('0x1a')]?_[_0xfd82('0x1b')](_0x5e36da[_0xfd82('0x1a')],function(_0x35cc3c){return{'model':db[_0x35cc3c[_0xfd82('0x1c')]],'as':_0x35cc3c['as'],'attributes':_0x35cc3c[_0xfd82('0x19')]};}):[]};}):[]};}):[]:[]})[_0xfd82('0xb')](function(_0x925d6){logger[_0xfd82('0xc')](_0xfd82('0x15'),_0x103aaa);logger[_0xfd82('0xd')]('GetVoiceQueueReport',_0x103aaa,JSON['stringify'](_0x925d6));_0x22cce2(_0x925d6);})[_0xfd82('0x14')](function(_0x1c90af){logger[_0xfd82('0x10')](_0xfd82('0x15'),_0x1c90af['message'],_0x103aaa);_0xc0932d(_0x26088f[_0xfd82('0x10')](0x1f4,_0x1c90af['message']));});});};exports[_0xfd82('0x1d')]=function(_0x59e037){var _0x4edf07=this;return new Promise(function(_0x2051ba,_0xdebf45){return db[_0xfd82('0x16')]['create'](_0x59e037[_0xfd82('0x1e')],{'raw':_0x59e037[_0xfd82('0x17')]?_0x59e037[_0xfd82('0x17')]['raw']===undefined?!![]:![]:!![]})[_0xfd82('0xb')](function(_0x28412e){logger[_0xfd82('0xc')]('CreateVoiceQueueReport',_0x59e037);logger['debug'](_0xfd82('0x1d'),_0x59e037,JSON['stringify'](_0x28412e));_0x2051ba(_0x28412e);})[_0xfd82('0x14')](function(_0x366083){logger[_0xfd82('0x10')](_0xfd82('0x1d'),_0x366083[_0xfd82('0x12')],_0x59e037);_0xdebf45(_0x4edf07[_0xfd82('0x10')](0x1f4,_0x366083[_0xfd82('0x12')]));});});};exports[_0xfd82('0x1f')]=function(_0x4f1029){var _0x2d21c4=this;return new Promise(function(_0x267afa,_0x1635e1){return db[_0xfd82('0x16')][_0xfd82('0x20')](_0x4f1029[_0xfd82('0x1e')],{'raw':_0x4f1029[_0xfd82('0x17')]?_0x4f1029['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f1029[_0xfd82('0x17')]?_0x4f1029[_0xfd82('0x17')][_0xfd82('0x21')]||null:null,'attributes':_0x4f1029[_0xfd82('0x17')]?_0x4f1029[_0xfd82('0x17')][_0xfd82('0x19')]||null:null,'limit':_0x4f1029[_0xfd82('0x17')]?_0x4f1029[_0xfd82('0x17')]['limit']||null:null})[_0xfd82('0xb')](function(_0x4c2632){logger['info']('UpdateVoiceQueueReport',_0x4f1029);logger[_0xfd82('0xd')](_0xfd82('0x1f'),_0x4f1029,JSON[_0xfd82('0xf')](_0x4c2632));_0x267afa(_0x4c2632);})[_0xfd82('0x14')](function(_0x639179){logger[_0xfd82('0x10')]('UpdateVoiceQueueReport',_0x639179[_0xfd82('0x12')],_0x4f1029);_0x1635e1(_0x2d21c4[_0xfd82('0x10')](0x1f4,_0x639179[_0xfd82('0x12')]));});});};
\ No newline at end of file
+var _0x8dea=['body','raw','CreateVoiceQueueReport','update','UpdateVoiceQueueReport','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','redis','defaults','localhost','register','request','then','info','debug','request\x20sent','stringify','error','code','VoiceQueueReport,\x20%s,\x20%s','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','where','attributes','limit','include','map','model'];(function(_0x2a51df,_0x1c067b){var _0x4e2e07=function(_0x29e164){while(--_0x29e164){_0x2a51df['push'](_0x2a51df['shift']());}};_0x4e2e07(++_0x1c067b);}(_0x8dea,0x1f1));var _0xa8de=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x8dea[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xa8de('0x0'));var util=require(_0xa8de('0x1'));var moment=require(_0xa8de('0x2'));var BPromise=require(_0xa8de('0x3'));var rs=require(_0xa8de('0x4'));var fs=require('fs');var Redis=require(_0xa8de('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xa8de('0x6'));var logger=require('../../config/logger')(_0xa8de('0x7'));var config=require(_0xa8de('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xa8de('0x9')]['http']({'port':0x232a});config[_0xa8de('0xa')]=_[_0xa8de('0xb')](config[_0xa8de('0xa')],{'host':_0xa8de('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./voiceQueueReport.socket')[_0xa8de('0xd')](socket);function respondWithRpcPromise(_0x52ddc4,_0x419cb0,_0x5c009d){return new BPromise(function(_0x2010d6,_0x4fb601){return client[_0xa8de('0xe')](_0x52ddc4,_0x5c009d)[_0xa8de('0xf')](function(_0x5f1060){logger[_0xa8de('0x10')]('VoiceQueueReport,\x20%s,\x20%s',_0x419cb0,'request\x20sent');logger[_0xa8de('0x11')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x419cb0,_0xa8de('0x12'),JSON[_0xa8de('0x13')](_0x5f1060));if(_0x5f1060[_0xa8de('0x14')]){if(_0x5f1060[_0xa8de('0x14')][_0xa8de('0x15')]===0x1f4){logger[_0xa8de('0x14')](_0xa8de('0x16'),_0x419cb0,_0x5f1060[_0xa8de('0x14')][_0xa8de('0x17')]);return _0x4fb601(_0x5f1060[_0xa8de('0x14')][_0xa8de('0x17')]);}logger['error'](_0xa8de('0x16'),_0x419cb0,_0x5f1060[_0xa8de('0x14')][_0xa8de('0x17')]);return _0x2010d6(_0x5f1060[_0xa8de('0x14')][_0xa8de('0x17')]);}else{logger[_0xa8de('0x10')]('VoiceQueueReport,\x20%s,\x20%s',_0x419cb0,_0xa8de('0x12'));_0x2010d6(_0x5f1060[_0xa8de('0x18')][_0xa8de('0x17')]);}})[_0xa8de('0x19')](function(_0x162eef){logger[_0xa8de('0x14')](_0xa8de('0x16'),_0x419cb0,_0x162eef);_0x4fb601(_0x162eef);});});}exports[_0xa8de('0x1a')]=function(_0x339569){var _0x156fe8=this;return new Promise(function(_0x57221a,_0x5c3c90){return db[_0xa8de('0x1b')][_0xa8de('0x1c')]({'raw':_0x339569[_0xa8de('0x1d')]?_0x339569[_0xa8de('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x339569[_0xa8de('0x1d')]?_0x339569['options'][_0xa8de('0x1e')]||null:null,'attributes':_0x339569[_0xa8de('0x1d')]?_0x339569[_0xa8de('0x1d')][_0xa8de('0x1f')]||null:null,'limit':_0x339569['options']?_0x339569[_0xa8de('0x1d')][_0xa8de('0x20')]||null:null,'include':_0x339569[_0xa8de('0x1d')]?_0x339569[_0xa8de('0x1d')][_0xa8de('0x21')]?_[_0xa8de('0x22')](_0x339569['options'][_0xa8de('0x21')],function(_0x2f607d){return{'model':db[_0x2f607d[_0xa8de('0x23')]],'as':_0x2f607d['as'],'attributes':_0x2f607d[_0xa8de('0x1f')],'include':_0x2f607d[_0xa8de('0x21')]?_[_0xa8de('0x22')](_0x2f607d[_0xa8de('0x21')],function(_0x3ee5be){return{'model':db[_0x3ee5be[_0xa8de('0x23')]],'as':_0x3ee5be['as'],'attributes':_0x3ee5be[_0xa8de('0x1f')],'include':_0x3ee5be[_0xa8de('0x21')]?_[_0xa8de('0x22')](_0x3ee5be[_0xa8de('0x21')],function(_0x536c2e){return{'model':db[_0x536c2e[_0xa8de('0x23')]],'as':_0x536c2e['as'],'attributes':_0x536c2e[_0xa8de('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xa8de('0xf')](function(_0x244b6e){logger['info']('GetVoiceQueueReport',_0x339569);logger['debug'](_0xa8de('0x1a'),_0x339569,JSON['stringify'](_0x244b6e));_0x57221a(_0x244b6e);})[_0xa8de('0x19')](function(_0x2e57e0){logger[_0xa8de('0x14')](_0xa8de('0x1a'),_0x2e57e0[_0xa8de('0x17')],_0x339569);_0x5c3c90(_0x156fe8[_0xa8de('0x14')](0x1f4,_0x2e57e0['message']));});});};exports['CreateVoiceQueueReport']=function(_0x215143){var _0x26ac72=this;return new Promise(function(_0x3360e9,_0x415ee4){return db[_0xa8de('0x1b')]['create'](_0x215143[_0xa8de('0x24')],{'raw':_0x215143[_0xa8de('0x1d')]?_0x215143[_0xa8de('0x1d')][_0xa8de('0x25')]===undefined?!![]:![]:!![]})[_0xa8de('0xf')](function(_0x2aae01){logger[_0xa8de('0x10')](_0xa8de('0x26'),_0x215143);logger[_0xa8de('0x11')](_0xa8de('0x26'),_0x215143,JSON['stringify'](_0x2aae01));_0x3360e9(_0x2aae01);})[_0xa8de('0x19')](function(_0x25fe23){logger[_0xa8de('0x14')](_0xa8de('0x26'),_0x25fe23[_0xa8de('0x17')],_0x215143);_0x415ee4(_0x26ac72[_0xa8de('0x14')](0x1f4,_0x25fe23[_0xa8de('0x17')]));});});};exports['UpdateVoiceQueueReport']=function(_0x3a1630){var _0x4e505f=this;return new Promise(function(_0x4d261a,_0x5278b2){return db[_0xa8de('0x1b')][_0xa8de('0x27')](_0x3a1630[_0xa8de('0x24')],{'raw':_0x3a1630['options']?_0x3a1630[_0xa8de('0x1d')][_0xa8de('0x25')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3a1630[_0xa8de('0x1d')]?_0x3a1630['options'][_0xa8de('0x1e')]||null:null,'attributes':_0x3a1630[_0xa8de('0x1d')]?_0x3a1630[_0xa8de('0x1d')][_0xa8de('0x1f')]||null:null,'limit':_0x3a1630[_0xa8de('0x1d')]?_0x3a1630[_0xa8de('0x1d')]['limit']||null:null})['then'](function(_0x47006c){logger[_0xa8de('0x10')](_0xa8de('0x28'),_0x3a1630);logger[_0xa8de('0x11')](_0xa8de('0x28'),_0x3a1630,JSON[_0xa8de('0x13')](_0x47006c));_0x4d261a(_0x47006c);})[_0xa8de('0x19')](function(_0x4bb73a){logger[_0xa8de('0x14')](_0xa8de('0x28'),_0x4bb73a[_0xa8de('0x17')],_0x3a1630);_0x5278b2(_0x4e505f['error'](0x1f4,_0x4bb73a['message']));});});};
\ No newline at end of file
index 5cd0391..9ea0296 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa676=['removeListener','register','length','./voiceQueueReport.events','save','remove','update','emit'];(function(_0x33a956,_0x51bdd0){var _0xf3319=function(_0x4a6e41){while(--_0x4a6e41){_0x33a956['push'](_0x33a956['shift']());}};_0xf3319(++_0x51bdd0);}(_0xa676,0x15b));var _0x6a67=function(_0x2503b6,_0x4f03a9){_0x2503b6=_0x2503b6-0x0;var _0x5b71d3=_0xa676[_0x2503b6];return _0x5b71d3;};'use strict';var VoiceQueueReportEvents=require(_0x6a67('0x0'));var events=[_0x6a67('0x1'),_0x6a67('0x2'),_0x6a67('0x3')];function createListener(_0x4b4a92,_0x39cae7){return function(_0x4cbc3a){_0x39cae7[_0x6a67('0x4')](_0x4b4a92,_0x4cbc3a);};}function removeListener(_0xc9c82c,_0x126217){return function(){VoiceQueueReportEvents[_0x6a67('0x5')](_0xc9c82c,_0x126217);};}exports[_0x6a67('0x6')]=function(_0x203032){for(var _0x2c33b6=0x0,_0x367af9=events[_0x6a67('0x7')];_0x2c33b6<_0x367af9;_0x2c33b6++){var _0xa3467c=events[_0x2c33b6];var _0x3c8493=createListener('voiceQueueReport:'+_0xa3467c,_0x203032);VoiceQueueReportEvents['on'](_0xa3467c,_0x3c8493);}};
\ No newline at end of file
+var _0xa633=['voiceQueueReport:','./voiceQueueReport.events','update','removeListener','register','length'];(function(_0x5c3c0b,_0x4ee35e){var _0x52ecd2=function(_0x3cf575){while(--_0x3cf575){_0x5c3c0b['push'](_0x5c3c0b['shift']());}};_0x52ecd2(++_0x4ee35e);}(_0xa633,0x15d));var _0x3a63=function(_0x48301c,_0x2be7fd){_0x48301c=_0x48301c-0x0;var _0x487737=_0xa633[_0x48301c];return _0x487737;};'use strict';var VoiceQueueReportEvents=require(_0x3a63('0x0'));var events=['save','remove',_0x3a63('0x1')];function createListener(_0x47b39e,_0x529bef){return function(_0x121a91){_0x529bef['emit'](_0x47b39e,_0x121a91);};}function removeListener(_0x1d0884,_0x169e18){return function(){VoiceQueueReportEvents[_0x3a63('0x2')](_0x1d0884,_0x169e18);};}exports[_0x3a63('0x3')]=function(_0x1315cb){for(var _0xc9221d=0x0,_0x7ebc45=events[_0x3a63('0x4')];_0xc9221d<_0x7ebc45;_0xc9221d++){var _0x567ff5=events[_0xc9221d];var _0x574b7c=createListener(_0x3a63('0x5')+_0x567ff5,_0x1315cb);VoiceQueueReportEvents['on'](_0x567ff5,_0x574b7c);}};
\ No newline at end of file
index 033db74..7f0abdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2121=['put','update','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceQueuesLog.controller','isAuthenticated','index','get','/:id','show','create'];(function(_0x5a38bc,_0x4665e4){var _0x1af6dc=function(_0x10cd31){while(--_0x10cd31){_0x5a38bc['push'](_0x5a38bc['shift']());}};_0x1af6dc(++_0x4665e4);}(_0x2121,0x1b4));var _0x1212=function(_0x32eea7,_0x135736){_0x32eea7=_0x32eea7-0x0;var _0x28abc5=_0x2121[_0x32eea7];return _0x28abc5;};'use strict';var multer=require(_0x1212('0x0'));var util=require(_0x1212('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x1212('0x2'));var router=express[_0x1212('0x3')]();var fs_extra=require(_0x1212('0x4'));var auth=require(_0x1212('0x5'));var interaction=require(_0x1212('0x6'));var config=require('../../config/environment');var controller=require(_0x1212('0x7'));router['get']('/',auth[_0x1212('0x8')](),controller[_0x1212('0x9')]);router[_0x1212('0xa')](_0x1212('0xb'),auth[_0x1212('0x8')](),controller[_0x1212('0xc')]);router['post']('/',auth[_0x1212('0x8')](),controller[_0x1212('0xd')]);router[_0x1212('0xe')](_0x1212('0xb'),auth[_0x1212('0x8')](),controller[_0x1212('0xf')]);router['delete']('/:id',auth[_0x1212('0x8')](),controller[_0x1212('0x10')]);module[_0x1212('0x11')]=router;
\ No newline at end of file
+var _0xb2ef=['Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','multer','util','path','express'];(function(_0x56fe98,_0x43dc16){var _0x212f4f=function(_0xc3427d){while(--_0xc3427d){_0x56fe98['push'](_0x56fe98['shift']());}};_0x212f4f(++_0x43dc16);}(_0xb2ef,0xa7));var _0xfb2e=function(_0x48ebe4,_0x53cbe2){_0x48ebe4=_0x48ebe4-0x0;var _0x48a385=_0xb2ef[_0x48ebe4];return _0x48a385;};'use strict';var multer=require(_0xfb2e('0x0'));var util=require(_0xfb2e('0x1'));var path=require(_0xfb2e('0x2'));var timeout=require('connect-timeout');var express=require(_0xfb2e('0x3'));var router=express[_0xfb2e('0x4')]();var fs_extra=require(_0xfb2e('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xfb2e('0x6'));var config=require(_0xfb2e('0x7'));var controller=require(_0xfb2e('0x8'));router[_0xfb2e('0x9')]('/',auth[_0xfb2e('0xa')](),controller[_0xfb2e('0xb')]);router[_0xfb2e('0x9')](_0xfb2e('0xc'),auth[_0xfb2e('0xa')](),controller[_0xfb2e('0xd')]);router['post']('/',auth[_0xfb2e('0xa')](),controller[_0xfb2e('0xe')]);router[_0xfb2e('0xf')]('/:id',auth['isAuthenticated'](),controller[_0xfb2e('0x10')]);router[_0xfb2e('0x11')]('/:id',auth[_0xfb2e('0xa')](),controller[_0xfb2e('0x12')]);module['exports']=router;
\ No newline at end of file
index 754d0a1..f042232 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b7a=['DATE','format','YYYY-MM-DD\x20HH:mm:ss','moment','exports','STRING'];(function(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0x0b7a,0x141));var _0xa0b7=function(_0x4c1814,_0x442e92){_0x4c1814=_0x4c1814-0x0;var _0x5a3304=_0x0b7a[_0x4c1814];return _0x5a3304;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xa0b7('0x0'));module[_0xa0b7('0x1')]={'time':{'type':Sequelize[_0xa0b7('0x2')]},'callid':{'type':Sequelize[_0xa0b7('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xa0b7('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xa0b7('0x2')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0xa0b7('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0xa0b7('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xa0b7('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xa0b7('0x2')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xa0b7('0x3')],'allowNull':![],'defaultValue':moment()[_0xa0b7('0x4')](_0xa0b7('0x5'))}};
\ No newline at end of file
+var _0x4ca4=['DATE','sequelize','moment','exports','STRING'];(function(_0x3fb8c7,_0x4bf727){var _0x3e3559=function(_0x20aba1){while(--_0x20aba1){_0x3fb8c7['push'](_0x3fb8c7['shift']());}};_0x3e3559(++_0x4bf727);}(_0x4ca4,0x100));var _0x44ca=function(_0x2a000f,_0x59b823){_0x2a000f=_0x2a000f-0x0;var _0x17321f=_0x4ca4[_0x2a000f];return _0x17321f;};'use strict';var Sequelize=require(_0x44ca('0x0'));var moment=require(_0x44ca('0x1'));module[_0x44ca('0x2')]={'time':{'type':Sequelize[_0x44ca('0x3')]},'callid':{'type':Sequelize[_0x44ca('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x44ca('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x44ca('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x44ca('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x44ca('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x44ca('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x44ca('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x44ca('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x44ca('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x44ca('0x4')],'allowNull':![],'defaultValue':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')}};
\ No newline at end of file
index f8d771f..413601d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62c4=['query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','name','filter','includeAll','include','rows','catch','show','options','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','to-csv','ejs','fs-extra','squel','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','reject','save','update','destroy','then','error','stack','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','key','model'];(function(_0x2d61b2,_0x142947){var _0x12df89=function(_0x31c717){while(--_0x31c717){_0x2d61b2['push'](_0x2d61b2['shift']());}};_0x12df89(++_0x142947);}(_0x62c4,0x64));var _0x462c=function(_0x73c08a,_0x15d3e1){_0x73c08a=_0x73c08a-0x0;var _0x24bbff=_0x62c4[_0x73c08a];return _0x24bbff;};'use strict';var emlformat=require(_0x462c('0x0'));var rimraf=require(_0x462c('0x1'));var zipdir=require(_0x462c('0x2'));var jsonpatch=require(_0x462c('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x462c('0x4'));var util=require(_0x462c('0x5'));var path=require(_0x462c('0x6'));var sox=require('sox');var csv=require(_0x462c('0x7'));var ejs=require(_0x462c('0x8'));var fs=require('fs');var fs_extra=require(_0x462c('0x9'));var _=require('lodash');var squel=require(_0x462c('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x462c('0xb'));var toCsv=require(_0x462c('0x7'));var querystring=require(_0x462c('0xc'));var Papa=require(_0x462c('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x462c('0xe'));var as=require(_0x462c('0xf'));var hardwareService=require(_0x462c('0x10'));var logger=require(_0x462c('0x11'))('api');var utils=require(_0x462c('0x12'));var config=require(_0x462c('0x13'));var licenseUtil=require(_0x462c('0x14'));var db=require(_0x462c('0x15'))['db'];function respondWithStatusCode(_0x5271cb,_0x25c1ac){_0x25c1ac=_0x25c1ac||0xcc;return function(_0x162fba){if(_0x162fba){return _0x5271cb[_0x462c('0x16')](_0x25c1ac);}return _0x5271cb[_0x462c('0x17')](_0x25c1ac)[_0x462c('0x18')]();};}function respondWithResult(_0x351872,_0x1f5a86){_0x1f5a86=_0x1f5a86||0xc8;return function(_0x597cf8){if(_0x597cf8){return _0x351872[_0x462c('0x17')](_0x1f5a86)[_0x462c('0x19')](_0x597cf8);}};}function respondWithFilteredResult(_0x333915,_0x5ea6fa){return function(_0x5ed8b9){if(_0x5ed8b9){var _0x58ca24=typeof _0x5ea6fa['offset']===_0x462c('0x1a')&&typeof _0x5ea6fa[_0x462c('0x1b')]===_0x462c('0x1a');var _0x1a3a92=_0x5ed8b9['count'];var _0x344c05=_0x58ca24?0x0:_0x5ea6fa[_0x462c('0x1c')];var _0x4ccb5a=_0x58ca24?_0x5ed8b9[_0x462c('0x1d')]:_0x5ea6fa['offset']+_0x5ea6fa[_0x462c('0x1b')];var _0xce3da6;if(_0x4ccb5a>=_0x1a3a92){_0x4ccb5a=_0x1a3a92;_0xce3da6=0xc8;}else{_0xce3da6=0xce;}_0x333915['status'](_0xce3da6);return _0x333915[_0x462c('0x1e')]('Content-Range',_0x344c05+'-'+_0x4ccb5a+'/'+_0x1a3a92)[_0x462c('0x19')](_0x5ed8b9);}return null;};}function patchUpdates(_0x2143a0){return function(_0x36bc3c){try{jsonpatch['apply'](_0x36bc3c,_0x2143a0,!![]);}catch(_0x2d7776){return BPromise[_0x462c('0x1f')](_0x2d7776);}return _0x36bc3c[_0x462c('0x20')]();};}function saveUpdates(_0x10d29c,_0x3cd134){return function(_0x4989ec){if(_0x4989ec){return _0x4989ec[_0x462c('0x21')](_0x10d29c)['then'](function(_0x4ce6a3){return _0x4ce6a3;});}return null;};}function removeEntity(_0x14fec8,_0x597bf1){return function(_0x4c68fd){if(_0x4c68fd){return _0x4c68fd[_0x462c('0x22')]()[_0x462c('0x23')](function(){_0x14fec8[_0x462c('0x17')](0xcc)[_0x462c('0x18')]();});}};}function handleEntityNotFound(_0x471bf5,_0x338415){return function(_0x20c4a8){if(!_0x20c4a8){_0x471bf5[_0x462c('0x16')](0x194);}return _0x20c4a8;};}function handleError(_0x189ad3,_0x8413bf){_0x8413bf=_0x8413bf||0x1f4;return function(_0x4580e9){logger[_0x462c('0x24')](_0x4580e9[_0x462c('0x25')]);if(_0x4580e9['name']){delete _0x4580e9['name'];}_0x189ad3[_0x462c('0x17')](_0x8413bf)['send'](_0x4580e9);};}exports[_0x462c('0x26')]=function(_0x335214,_0xd7642b){var _0x3591e6={},_0x3ea45f={},_0x5c6781={'count':0x0,'rows':[]};var _0x4fc7a2=_[_0x462c('0x27')](db[_0x462c('0x28')][_0x462c('0x29')],function(_0x286b57){return{'name':_0x286b57[_0x462c('0x2a')],'type':_0x286b57[_0x462c('0x2b')][_0x462c('0x2c')]};});_0x3ea45f[_0x462c('0x2d')]=_[_0x462c('0x27')](_0x4fc7a2,'name');_0x3ea45f[_0x462c('0x2e')]=_[_0x462c('0x2f')](_0x335214[_0x462c('0x2e')]);_0x3ea45f[_0x462c('0x30')]=_['intersection'](_0x3ea45f['model'],_0x3ea45f[_0x462c('0x2e')]);_0x3591e6[_0x462c('0x31')]=_[_0x462c('0x32')](_0x3ea45f['model'],qs[_0x462c('0x33')](_0x335214[_0x462c('0x2e')][_0x462c('0x33')]));_0x3591e6['attributes']=_0x3591e6['attributes'][_0x462c('0x34')]?_0x3591e6['attributes']:_0x3ea45f[_0x462c('0x2d')];if(!_0x335214[_0x462c('0x2e')][_0x462c('0x35')](_0x462c('0x36'))){_0x3591e6['limit']=qs['limit'](_0x335214[_0x462c('0x2e')][_0x462c('0x1b')]);_0x3591e6[_0x462c('0x1c')]=qs[_0x462c('0x1c')](_0x335214[_0x462c('0x2e')][_0x462c('0x1c')]);}_0x3591e6[_0x462c('0x37')]=qs[_0x462c('0x38')](_0x335214[_0x462c('0x2e')][_0x462c('0x38')]);_0x3591e6[_0x462c('0x39')]=qs[_0x462c('0x30')](_[_0x462c('0x3a')](_0x335214['query'],_0x3ea45f['filters']),_0x4fc7a2);if(_0x335214['query']['filter']){_0x3591e6['where']=_[_0x462c('0x3b')](_0x3591e6[_0x462c('0x39')],{'$or':_['map'](_0x4fc7a2,function(_0x539394){if(_0x539394[_0x462c('0x2b')]!==_0x462c('0x3c')){var _0x5402f6={};_0x5402f6[_0x539394[_0x462c('0x3d')]]={'$like':'%'+_0x335214[_0x462c('0x2e')][_0x462c('0x3e')]+'%'};return _0x5402f6;}})});}_0x3591e6=_[_0x462c('0x3b')]({},_0x3591e6,_0x335214['options']);var _0x565d8c={'where':_0x3591e6[_0x462c('0x39')]};return db[_0x462c('0x28')]['count'](_0x565d8c)[_0x462c('0x23')](function(_0x2a3a88){_0x5c6781[_0x462c('0x1d')]=_0x2a3a88;if(_0x335214[_0x462c('0x2e')][_0x462c('0x3f')]){_0x3591e6[_0x462c('0x40')]=[{'all':!![]}];}return db[_0x462c('0x28')]['findAll'](_0x3591e6);})[_0x462c('0x23')](function(_0x5e73bc){_0x5c6781[_0x462c('0x41')]=_0x5e73bc;return _0x5c6781;})[_0x462c('0x23')](respondWithFilteredResult(_0xd7642b,_0x3591e6))[_0x462c('0x42')](handleError(_0xd7642b,null));};exports[_0x462c('0x43')]=function(_0x2ccc5e,_0x269da6){var _0x54b711={'raw':!![],'where':{'id':_0x2ccc5e['params']['id']}},_0x5d40f9={};_0x5d40f9[_0x462c('0x2d')]=_[_0x462c('0x2f')](db['VoiceQueuesLog'][_0x462c('0x29')]);_0x5d40f9[_0x462c('0x2e')]=_[_0x462c('0x2f')](_0x2ccc5e[_0x462c('0x2e')]);_0x5d40f9[_0x462c('0x30')]=_[_0x462c('0x32')](_0x5d40f9['model'],_0x5d40f9[_0x462c('0x2e')]);_0x54b711['attributes']=_[_0x462c('0x32')](_0x5d40f9[_0x462c('0x2d')],qs[_0x462c('0x33')](_0x2ccc5e['query']['fields']));_0x54b711[_0x462c('0x31')]=_0x54b711[_0x462c('0x31')][_0x462c('0x34')]?_0x54b711[_0x462c('0x31')]:_0x5d40f9['model'];if(_0x2ccc5e[_0x462c('0x2e')]['includeAll']){_0x54b711[_0x462c('0x40')]=[{'all':!![]}];}_0x54b711=_['merge']({},_0x54b711,_0x2ccc5e[_0x462c('0x44')]);return db[_0x462c('0x28')][_0x462c('0x45')](_0x54b711)[_0x462c('0x23')](handleEntityNotFound(_0x269da6,null))[_0x462c('0x23')](respondWithResult(_0x269da6,null))[_0x462c('0x42')](handleError(_0x269da6,null));};exports[_0x462c('0x46')]=function(_0x542ede,_0x38ad69){return db[_0x462c('0x28')]['create'](_0x542ede[_0x462c('0x47')],{})[_0x462c('0x23')](respondWithResult(_0x38ad69,0xc9))[_0x462c('0x42')](handleError(_0x38ad69,null));};exports[_0x462c('0x21')]=function(_0x1db0ae,_0x2392d3){if(_0x1db0ae[_0x462c('0x47')]['id']){delete _0x1db0ae[_0x462c('0x47')]['id'];}return db[_0x462c('0x28')][_0x462c('0x45')]({'where':{'id':_0x1db0ae[_0x462c('0x48')]['id']}})['then'](handleEntityNotFound(_0x2392d3,null))['then'](saveUpdates(_0x1db0ae[_0x462c('0x47')],null))['then'](respondWithResult(_0x2392d3,null))[_0x462c('0x42')](handleError(_0x2392d3,null));};exports[_0x462c('0x22')]=function(_0x583a98,_0x32ea44){return db[_0x462c('0x28')]['find']({'where':{'id':_0x583a98[_0x462c('0x48')]['id']}})['then'](handleEntityNotFound(_0x32ea44,null))[_0x462c('0x23')](removeEntity(_0x32ea44,null))[_0x462c('0x42')](handleError(_0x32ea44,null));};
\ No newline at end of file
+var _0x3b98=['filters','intersection','attributes','fields','nolimit','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','params','length','find','create','body','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','then','destroy','error','name','send','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','key','model','keys','query'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x3b98,0x187));var _0x83b9=function(_0x52c1b8,_0x586764){_0x52c1b8=_0x52c1b8-0x0;var _0x236441=_0x3b98[_0x52c1b8];return _0x236441;};'use strict';var emlformat=require(_0x83b9('0x0'));var rimraf=require(_0x83b9('0x1'));var zipdir=require(_0x83b9('0x2'));var jsonpatch=require(_0x83b9('0x3'));var rp=require(_0x83b9('0x4'));var moment=require(_0x83b9('0x5'));var BPromise=require(_0x83b9('0x6'));var Mustache=require(_0x83b9('0x7'));var util=require(_0x83b9('0x8'));var path=require(_0x83b9('0x9'));var sox=require(_0x83b9('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x83b9('0xb'));var _=require(_0x83b9('0xc'));var squel=require(_0x83b9('0xd'));var crypto=require(_0x83b9('0xe'));var jsforce=require(_0x83b9('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x83b9('0x10'));var Papa=require(_0x83b9('0x11'));var Redis=require(_0x83b9('0x12'));var authService=require(_0x83b9('0x13'));var qs=require(_0x83b9('0x14'));var as=require(_0x83b9('0x15'));var hardwareService=require(_0x83b9('0x16'));var logger=require('../../config/logger')(_0x83b9('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x83b9('0x18'));var db=require(_0x83b9('0x19'))['db'];function respondWithStatusCode(_0x5168f8,_0x4375bc){_0x4375bc=_0x4375bc||0xcc;return function(_0x38e916){if(_0x38e916){return _0x5168f8[_0x83b9('0x1a')](_0x4375bc);}return _0x5168f8[_0x83b9('0x1b')](_0x4375bc)[_0x83b9('0x1c')]();};}function respondWithResult(_0x29456a,_0xdcb317){_0xdcb317=_0xdcb317||0xc8;return function(_0x1b71fe){if(_0x1b71fe){return _0x29456a['status'](_0xdcb317)['json'](_0x1b71fe);}};}function respondWithFilteredResult(_0x3b9351,_0x7399bb){return function(_0x22195f){if(_0x22195f){var _0x33af87=typeof _0x7399bb[_0x83b9('0x1d')]===_0x83b9('0x1e')&&typeof _0x7399bb[_0x83b9('0x1f')]===_0x83b9('0x1e');var _0x3a0f90=_0x22195f[_0x83b9('0x20')];var _0x4b2978=_0x33af87?0x0:_0x7399bb[_0x83b9('0x1d')];var _0x55cc5f=_0x33af87?_0x22195f[_0x83b9('0x20')]:_0x7399bb[_0x83b9('0x1d')]+_0x7399bb[_0x83b9('0x1f')];var _0x51b2a2;if(_0x55cc5f>=_0x3a0f90){_0x55cc5f=_0x3a0f90;_0x51b2a2=0xc8;}else{_0x51b2a2=0xce;}_0x3b9351['status'](_0x51b2a2);return _0x3b9351['set'](_0x83b9('0x21'),_0x4b2978+'-'+_0x55cc5f+'/'+_0x3a0f90)[_0x83b9('0x22')](_0x22195f);}return null;};}function patchUpdates(_0x3fd5e4){return function(_0x21cfb9){try{jsonpatch[_0x83b9('0x23')](_0x21cfb9,_0x3fd5e4,!![]);}catch(_0x113d43){return BPromise[_0x83b9('0x24')](_0x113d43);}return _0x21cfb9[_0x83b9('0x25')]();};}function saveUpdates(_0x3f9e61,_0x160386){return function(_0x2c1419){if(_0x2c1419){return _0x2c1419['update'](_0x3f9e61)[_0x83b9('0x26')](function(_0x65026a){return _0x65026a;});}return null;};}function removeEntity(_0x28812f,_0x2b05c5){return function(_0x1a7fd2){if(_0x1a7fd2){return _0x1a7fd2[_0x83b9('0x27')]()[_0x83b9('0x26')](function(){_0x28812f[_0x83b9('0x1b')](0xcc)[_0x83b9('0x1c')]();});}};}function handleEntityNotFound(_0x41eac9,_0x3e5b0d){return function(_0x279ad0){if(!_0x279ad0){_0x41eac9[_0x83b9('0x1a')](0x194);}return _0x279ad0;};}function handleError(_0x40ec64,_0x4c2c14){_0x4c2c14=_0x4c2c14||0x1f4;return function(_0x5cfbce){logger[_0x83b9('0x28')](_0x5cfbce['stack']);if(_0x5cfbce[_0x83b9('0x29')]){delete _0x5cfbce[_0x83b9('0x29')];}_0x40ec64[_0x83b9('0x1b')](_0x4c2c14)[_0x83b9('0x2a')](_0x5cfbce);};}exports[_0x83b9('0x2b')]=function(_0x258998,_0x41e5cc){var _0x55db37={},_0x1d0e01={},_0x1da8f7={'count':0x0,'rows':[]};var _0x31c76b=_[_0x83b9('0x2c')](db[_0x83b9('0x2d')][_0x83b9('0x2e')],function(_0x28846a){return{'name':_0x28846a[_0x83b9('0x2f')],'type':_0x28846a[_0x83b9('0x30')][_0x83b9('0x31')]};});_0x1d0e01[_0x83b9('0x32')]=_['map'](_0x31c76b,_0x83b9('0x29'));_0x1d0e01['query']=_[_0x83b9('0x33')](_0x258998[_0x83b9('0x34')]);_0x1d0e01[_0x83b9('0x35')]=_[_0x83b9('0x36')](_0x1d0e01['model'],_0x1d0e01['query']);_0x55db37[_0x83b9('0x37')]=_[_0x83b9('0x36')](_0x1d0e01[_0x83b9('0x32')],qs[_0x83b9('0x38')](_0x258998[_0x83b9('0x34')]['fields']));_0x55db37[_0x83b9('0x37')]=_0x55db37[_0x83b9('0x37')]['length']?_0x55db37['attributes']:_0x1d0e01[_0x83b9('0x32')];if(!_0x258998['query']['hasOwnProperty'](_0x83b9('0x39'))){_0x55db37[_0x83b9('0x1f')]=qs[_0x83b9('0x1f')](_0x258998[_0x83b9('0x34')][_0x83b9('0x1f')]);_0x55db37[_0x83b9('0x1d')]=qs[_0x83b9('0x1d')](_0x258998[_0x83b9('0x34')][_0x83b9('0x1d')]);}_0x55db37['order']=qs['sort'](_0x258998[_0x83b9('0x34')][_0x83b9('0x3a')]);_0x55db37['where']=qs[_0x83b9('0x35')](_[_0x83b9('0x3b')](_0x258998['query'],_0x1d0e01[_0x83b9('0x35')]),_0x31c76b);if(_0x258998['query'][_0x83b9('0x3c')]){_0x55db37[_0x83b9('0x3d')]=_[_0x83b9('0x3e')](_0x55db37['where'],{'$or':_[_0x83b9('0x2c')](_0x31c76b,function(_0x10b6d1){if(_0x10b6d1[_0x83b9('0x30')]!=='VIRTUAL'){var _0x34bc02={};_0x34bc02[_0x10b6d1[_0x83b9('0x29')]]={'$like':'%'+_0x258998[_0x83b9('0x34')][_0x83b9('0x3c')]+'%'};return _0x34bc02;}})});}_0x55db37=_[_0x83b9('0x3e')]({},_0x55db37,_0x258998[_0x83b9('0x3f')]);var _0x428c0e={'where':_0x55db37[_0x83b9('0x3d')]};return db[_0x83b9('0x2d')][_0x83b9('0x20')](_0x428c0e)['then'](function(_0x1913e5){_0x1da8f7['count']=_0x1913e5;if(_0x258998[_0x83b9('0x34')][_0x83b9('0x40')]){_0x55db37[_0x83b9('0x41')]=[{'all':!![]}];}return db[_0x83b9('0x2d')][_0x83b9('0x42')](_0x55db37);})[_0x83b9('0x26')](function(_0x170e0b){_0x1da8f7[_0x83b9('0x43')]=_0x170e0b;return _0x1da8f7;})['then'](respondWithFilteredResult(_0x41e5cc,_0x55db37))['catch'](handleError(_0x41e5cc,null));};exports['show']=function(_0x3c963c,_0x224ce5){var _0x31b087={'raw':!![],'where':{'id':_0x3c963c[_0x83b9('0x44')]['id']}},_0x293f77={};_0x293f77[_0x83b9('0x32')]=_['keys'](db[_0x83b9('0x2d')][_0x83b9('0x2e')]);_0x293f77[_0x83b9('0x34')]=_['keys'](_0x3c963c[_0x83b9('0x34')]);_0x293f77[_0x83b9('0x35')]=_[_0x83b9('0x36')](_0x293f77[_0x83b9('0x32')],_0x293f77[_0x83b9('0x34')]);_0x31b087[_0x83b9('0x37')]=_[_0x83b9('0x36')](_0x293f77[_0x83b9('0x32')],qs[_0x83b9('0x38')](_0x3c963c[_0x83b9('0x34')]['fields']));_0x31b087['attributes']=_0x31b087[_0x83b9('0x37')][_0x83b9('0x45')]?_0x31b087[_0x83b9('0x37')]:_0x293f77['model'];if(_0x3c963c['query']['includeAll']){_0x31b087[_0x83b9('0x41')]=[{'all':!![]}];}_0x31b087=_[_0x83b9('0x3e')]({},_0x31b087,_0x3c963c['options']);return db[_0x83b9('0x2d')][_0x83b9('0x46')](_0x31b087)[_0x83b9('0x26')](handleEntityNotFound(_0x224ce5,null))['then'](respondWithResult(_0x224ce5,null))['catch'](handleError(_0x224ce5,null));};exports[_0x83b9('0x47')]=function(_0x4d3941,_0x14fec6){return db[_0x83b9('0x2d')][_0x83b9('0x47')](_0x4d3941[_0x83b9('0x48')],{})[_0x83b9('0x26')](respondWithResult(_0x14fec6,0xc9))[_0x83b9('0x49')](handleError(_0x14fec6,null));};exports['update']=function(_0x2589b1,_0x12dd91){if(_0x2589b1[_0x83b9('0x48')]['id']){delete _0x2589b1[_0x83b9('0x48')]['id'];}return db[_0x83b9('0x2d')][_0x83b9('0x46')]({'where':{'id':_0x2589b1[_0x83b9('0x44')]['id']}})['then'](handleEntityNotFound(_0x12dd91,null))[_0x83b9('0x26')](saveUpdates(_0x2589b1[_0x83b9('0x48')],null))[_0x83b9('0x26')](respondWithResult(_0x12dd91,null))[_0x83b9('0x49')](handleError(_0x12dd91,null));};exports[_0x83b9('0x27')]=function(_0x9e1358,_0x3ed1dd){return db['VoiceQueuesLog'][_0x83b9('0x46')]({'where':{'id':_0x9e1358[_0x83b9('0x44')]['id']}})[_0x83b9('0x26')](handleEntityNotFound(_0x3ed1dd,null))[_0x83b9('0x26')](removeEntity(_0x3ed1dd,null))[_0x83b9('0x49')](handleError(_0x3ed1dd,null));};
\ No newline at end of file
index 3a4131d..f36f2e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1347=['VoiceQueuesLog','voice_queues_log','event_dtm','event','util','../../config/logger','moment','bluebird','path','rimraf','exports','define'];(function(_0x3788ca,_0x20810d){var _0x5964cc=function(_0x1c9002){while(--_0x1c9002){_0x3788ca['push'](_0x3788ca['shift']());}};_0x5964cc(++_0x20810d);}(_0x1347,0xd0));var _0x7134=function(_0x3a2e4b,_0x1fc1f7){_0x3a2e4b=_0x3a2e4b-0x0;var _0x3697d9=_0x1347[_0x3a2e4b];return _0x3697d9;};'use strict';var _=require('lodash');var util=require(_0x7134('0x0'));var logger=require(_0x7134('0x1'))('api');var moment=require(_0x7134('0x2'));var BPromise=require(_0x7134('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7134('0x4'));var rimraf=require(_0x7134('0x5'));var config=require('../../config/environment');var attributes=require('./voiceQueuesLog.attributes');module[_0x7134('0x6')]=function(_0x59ea30,_0x334b27){return _0x59ea30[_0x7134('0x7')](_0x7134('0x8'),attributes,{'tableName':_0x7134('0x9'),'paranoid':![],'indexes':[{'name':_0x7134('0xa'),'fields':[_0x7134('0xb'),'dtm']}],'timestamps':![]});};
\ No newline at end of file
+var _0x1e9c=['./voiceQueuesLog.attributes','define','VoiceQueuesLog','voice_queues_log','event','lodash','api','moment','request-promise','rimraf','../../config/environment'];(function(_0x289e64,_0x5adb3c){var _0x30246c=function(_0x1bf7f6){while(--_0x1bf7f6){_0x289e64['push'](_0x289e64['shift']());}};_0x30246c(++_0x5adb3c);}(_0x1e9c,0xec));var _0xc1e9=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x1e9c[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xc1e9('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc1e9('0x1'));var moment=require(_0xc1e9('0x2'));var BPromise=require('bluebird');var rp=require(_0xc1e9('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc1e9('0x4'));var config=require(_0xc1e9('0x5'));var attributes=require(_0xc1e9('0x6'));module['exports']=function(_0x185cac,_0x2387a9){return _0x185cac[_0xc1e9('0x7')](_0xc1e9('0x8'),attributes,{'tableName':_0xc1e9('0x9'),'paranoid':![],'indexes':[{'name':'event_dtm','fields':[_0xc1e9('0xa'),'dtm']}],'timestamps':![]});};
\ No newline at end of file
index 921c0cd..0091b46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1aa8=['then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','error','code','message','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','request'];(function(_0x205655,_0x575792){var _0x23be40=function(_0x3ac7c6){while(--_0x3ac7c6){_0x205655['push'](_0x205655['shift']());}};_0x23be40(++_0x575792);}(_0x1aa8,0x197));var _0x81aa=function(_0x1ba9cc,_0x14ad57){_0x1ba9cc=_0x1ba9cc-0x0;var _0x26d161=_0x1aa8[_0x1ba9cc];return _0x26d161;};'use strict';var _=require(_0x81aa('0x0'));var util=require('util');var moment=require(_0x81aa('0x1'));var BPromise=require(_0x81aa('0x2'));var rs=require(_0x81aa('0x3'));var fs=require('fs');var Redis=require(_0x81aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x81aa('0x5'))(_0x81aa('0x6'));var config=require(_0x81aa('0x7'));var jayson=require(_0x81aa('0x8'));var client=jayson[_0x81aa('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x285823,_0x517a5d,_0x5ba651){return new BPromise(function(_0x50f089,_0x820c53){return client[_0x81aa('0xa')](_0x285823,_0x5ba651)[_0x81aa('0xb')](function(_0x373dca){logger[_0x81aa('0xc')](_0x81aa('0xd'),_0x517a5d,_0x81aa('0xe'));logger[_0x81aa('0xf')]('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x517a5d,_0x81aa('0xe'),JSON['stringify'](_0x373dca));if(_0x373dca[_0x81aa('0x10')]){if(_0x373dca[_0x81aa('0x10')][_0x81aa('0x11')]===0x1f4){logger['error'](_0x81aa('0xd'),_0x517a5d,_0x373dca[_0x81aa('0x10')][_0x81aa('0x12')]);return _0x820c53(_0x373dca['error'][_0x81aa('0x12')]);}logger[_0x81aa('0x10')](_0x81aa('0xd'),_0x517a5d,_0x373dca['error'][_0x81aa('0x12')]);return _0x50f089(_0x373dca[_0x81aa('0x10')][_0x81aa('0x12')]);}else{logger[_0x81aa('0xc')]('VoiceQueuesLog,\x20%s,\x20%s',_0x517a5d,_0x81aa('0xe'));_0x50f089(_0x373dca['result'][_0x81aa('0x12')]);}})['catch'](function(_0x4611d0){logger[_0x81aa('0x10')](_0x81aa('0xd'),_0x517a5d,_0x4611d0);_0x820c53(_0x4611d0);});});}
\ No newline at end of file
+var _0xa09f=['rpc','jayson/promise','client','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','code','message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x819464,_0x46fc91){var _0x49dcc0=function(_0x36b2b2){while(--_0x36b2b2){_0x819464['push'](_0x819464['shift']());}};_0x49dcc0(++_0x46fc91);}(_0xa09f,0x188));var _0xfa09=function(_0x2ff0a0,_0x198294){_0x2ff0a0=_0x2ff0a0-0x0;var _0x161e8e=_0xa09f[_0x2ff0a0];return _0x161e8e;};'use strict';var _=require('lodash');var util=require(_0xfa09('0x0'));var moment=require(_0xfa09('0x1'));var BPromise=require(_0xfa09('0x2'));var rs=require(_0xfa09('0x3'));var fs=require('fs');var Redis=require(_0xfa09('0x4'));var db=require(_0xfa09('0x5'))['db'];var utils=require(_0xfa09('0x6'));var logger=require(_0xfa09('0x7'))(_0xfa09('0x8'));var config=require('../../config/environment');var jayson=require(_0xfa09('0x9'));var client=jayson[_0xfa09('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x327d3c,_0x38232d,_0x489f3c){return new BPromise(function(_0x23c615,_0x116de8){return client['request'](_0x327d3c,_0x489f3c)['then'](function(_0x450f54){logger[_0xfa09('0xb')](_0xfa09('0xc'),_0x38232d,_0xfa09('0xd'));logger[_0xfa09('0xe')](_0xfa09('0xf'),_0x38232d,'request\x20sent',JSON[_0xfa09('0x10')](_0x450f54));if(_0x450f54[_0xfa09('0x11')]){if(_0x450f54[_0xfa09('0x11')][_0xfa09('0x12')]===0x1f4){logger[_0xfa09('0x11')](_0xfa09('0xc'),_0x38232d,_0x450f54['error'][_0xfa09('0x13')]);return _0x116de8(_0x450f54[_0xfa09('0x11')][_0xfa09('0x13')]);}logger['error'](_0xfa09('0xc'),_0x38232d,_0x450f54['error'][_0xfa09('0x13')]);return _0x23c615(_0x450f54[_0xfa09('0x11')][_0xfa09('0x13')]);}else{logger[_0xfa09('0xb')](_0xfa09('0xc'),_0x38232d,_0xfa09('0xd'));_0x23c615(_0x450f54['result'][_0xfa09('0x13')]);}})['catch'](function(_0x2f5789){logger[_0xfa09('0x11')](_0xfa09('0xc'),_0x38232d,_0x2f5789);_0x116de8(_0x2f5789);});});}
\ No newline at end of file
index 98e5214..c2bddee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6ef=['downloadTranscribe','post','put','/:id','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','./voiceRecording.controller','get','isAuthenticated','/describe','describe','show','/:id/downloads','downloads','/:id/transcribe'];(function(_0x107615,_0x5f1c68){var _0x220fa9=function(_0x596d69){while(--_0x596d69){_0x107615['push'](_0x107615['shift']());}};_0x220fa9(++_0x5f1c68);}(_0xa6ef,0x160));var _0xfa6e=function(_0x4830b9,_0x407565){_0x4830b9=_0x4830b9-0x0;var _0x122366=_0xa6ef[_0x4830b9];return _0x122366;};'use strict';var multer=require(_0xfa6e('0x0'));var util=require(_0xfa6e('0x1'));var path=require(_0xfa6e('0x2'));var timeout=require('connect-timeout');var express=require(_0xfa6e('0x3'));var router=express[_0xfa6e('0x4')]();var fs_extra=require(_0xfa6e('0x5'));var auth=require(_0xfa6e('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xfa6e('0x7'));router[_0xfa6e('0x8')]('/',auth[_0xfa6e('0x9')](),controller['index']);router['get'](_0xfa6e('0xa'),auth[_0xfa6e('0x9')](),controller[_0xfa6e('0xb')]);router[_0xfa6e('0x8')]('/:id',auth[_0xfa6e('0x9')](),controller[_0xfa6e('0xc')]);router[_0xfa6e('0x8')]('/:id/download',auth[_0xfa6e('0x9')](),controller['download']);router['get'](_0xfa6e('0xd'),controller[_0xfa6e('0xe')]);router[_0xfa6e('0x8')](_0xfa6e('0xf'),auth[_0xfa6e('0x9')](),controller[_0xfa6e('0x10')]);router[_0xfa6e('0x11')]('/',auth['isAuthenticated'](),controller['create']);router[_0xfa6e('0x11')]('/:id/transcribe',auth[_0xfa6e('0x9')](),controller['runTranscribe']);router[_0xfa6e('0x12')](_0xfa6e('0x13'),auth['isAuthenticated'](),controller['update']);router[_0xfa6e('0x14')](_0xfa6e('0x13'),auth['isAuthenticated'](),controller[_0xfa6e('0x15')]);module[_0xfa6e('0x16')]=router;
\ No newline at end of file
+var _0x0037=['/:id/transcribe','downloadTranscribe','create','post','put','/:id','update','delete','destroy','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceRecording.controller','get','index','/describe','describe','isAuthenticated','show','/:id/download','/:id/downloads','downloads'];(function(_0x49f44b,_0x270a89){var _0x26ffef=function(_0x2d678b){while(--_0x2d678b){_0x49f44b['push'](_0x49f44b['shift']());}};_0x26ffef(++_0x270a89);}(_0x0037,0x11c));var _0x7003=function(_0x2840d4,_0x3d3a07){_0x2840d4=_0x2840d4-0x0;var _0xd1301=_0x0037[_0x2840d4];return _0xd1301;};'use strict';var multer=require(_0x7003('0x0'));var util=require(_0x7003('0x1'));var path=require('path');var timeout=require(_0x7003('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x7003('0x3'));var auth=require(_0x7003('0x4'));var interaction=require(_0x7003('0x5'));var config=require('../../config/environment');var controller=require(_0x7003('0x6'));router[_0x7003('0x7')]('/',auth['isAuthenticated'](),controller[_0x7003('0x8')]);router['get'](_0x7003('0x9'),auth['isAuthenticated'](),controller[_0x7003('0xa')]);router[_0x7003('0x7')]('/:id',auth[_0x7003('0xb')](),controller[_0x7003('0xc')]);router[_0x7003('0x7')](_0x7003('0xd'),auth[_0x7003('0xb')](),controller['download']);router[_0x7003('0x7')](_0x7003('0xe'),controller[_0x7003('0xf')]);router[_0x7003('0x7')](_0x7003('0x10'),auth[_0x7003('0xb')](),controller[_0x7003('0x11')]);router['post']('/',auth[_0x7003('0xb')](),controller[_0x7003('0x12')]);router[_0x7003('0x13')](_0x7003('0x10'),auth[_0x7003('0xb')](),controller['runTranscribe']);router[_0x7003('0x14')](_0x7003('0x15'),auth['isAuthenticated'](),controller[_0x7003('0x16')]);router[_0x7003('0x17')]('/:id',auth[_0x7003('0xb')](),controller[_0x7003('0x18')]);module['exports']=router;
\ No newline at end of file
index 0539be1..a8b6076 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(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xa9e0[_0x4ea69d];return _0x5318e0;};'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(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0xa9e0[_0x376b45];return _0x2341b3;};'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 c11292a..5e6ef70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2964=['query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','filter','merge','VIRTUAL','options','VoiceRecording','includeAll','include','findAll','rows','catch','show','params','find','create','update','body','describe','download','uniqueid','value','format','%s.cypher','existsSync','secrets','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','extname','unlink','message','downloads','sequelize','MD5','col','token','push','$and','decryptFile','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','File:\x20\x22','listBuckets','createBucket','upload','TranscribeService','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','location','Location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJobName','transcribeName','TranscriptionJob','transcribeStatus','TranscriptionJobStatus','runTranscribe','../../components/encryptor','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeAccountId','transcribeRegion','language','sentimentRegion','bucket','Sentiment\x20Analysis\x20not\x20configured','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','runSentiment','writeFile','fileText','root','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','lodash','crypto','jsforce','desk.js','papaparse','aws-sdk','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','destroy','then','error','stack','name','index','rawAttributes','fieldName','type','key','model'];(function(_0x584229,_0x11c7c9){var _0x334eae=function(_0x5ceba4){while(--_0x5ceba4){_0x584229['push'](_0x584229['shift']());}};_0x334eae(++_0x11c7c9);}(_0x2964,0x68));var _0x4296=function(_0x2f9659,_0x469ed3){_0x2f9659=_0x2f9659-0x0;var _0x188d3b=_0x2964[_0x2f9659];return _0x188d3b;};'use strict';var emlformat=require(_0x4296('0x0'));var rimraf=require(_0x4296('0x1'));var zipdir=require(_0x4296('0x2'));var jsonpatch=require(_0x4296('0x3'));var rp=require('request-promise');var moment=require(_0x4296('0x4'));var BPromise=require(_0x4296('0x5'));var Mustache=require(_0x4296('0x6'));var util=require(_0x4296('0x7'));var path=require(_0x4296('0x8'));var sox=require(_0x4296('0x9'));var csv=require(_0x4296('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4296('0xb'));var squel=require('squel');var crypto=require(_0x4296('0xc'));var jsforce=require(_0x4296('0xd'));var deskjs=require(_0x4296('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4296('0xf'));var AWS=require(_0x4296('0x10'));var uuidv4=require('uuid/v4');var Redis=require(_0x4296('0x11'));var authService=require(_0x4296('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4296('0x13'));var logger=require(_0x4296('0x14'))(_0x4296('0x15'));var utils=require('../../config/utils');var config=require(_0x4296('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x4296('0x17'))['db'];function respondWithStatusCode(_0x290040,_0x125ada){_0x125ada=_0x125ada||0xcc;return function(_0x1ab98a){if(_0x1ab98a){return _0x290040[_0x4296('0x18')](_0x125ada);}return _0x290040[_0x4296('0x19')](_0x125ada)[_0x4296('0x1a')]();};}function respondWithResult(_0x54eaef,_0x7fa2b4){_0x7fa2b4=_0x7fa2b4||0xc8;return function(_0x1a83c5){if(_0x1a83c5){return _0x54eaef[_0x4296('0x19')](_0x7fa2b4)[_0x4296('0x1b')](_0x1a83c5);}};}function respondWithFilteredResult(_0x836bda,_0x2a9e12){return function(_0x171c3b){if(_0x171c3b){var _0x29305a=typeof _0x2a9e12[_0x4296('0x1c')]===_0x4296('0x1d')&&typeof _0x2a9e12[_0x4296('0x1e')]==='undefined';var _0x122214=_0x171c3b[_0x4296('0x1f')];var _0x112012=_0x29305a?0x0:_0x2a9e12[_0x4296('0x1c')];var _0x1587ba=_0x29305a?_0x171c3b[_0x4296('0x1f')]:_0x2a9e12['offset']+_0x2a9e12[_0x4296('0x1e')];var _0x4fd0a4;if(_0x1587ba>=_0x122214){_0x1587ba=_0x122214;_0x4fd0a4=0xc8;}else{_0x4fd0a4=0xce;}_0x836bda[_0x4296('0x19')](_0x4fd0a4);return _0x836bda[_0x4296('0x20')]('Content-Range',_0x112012+'-'+_0x1587ba+'/'+_0x122214)[_0x4296('0x1b')](_0x171c3b);}return null;};}function patchUpdates(_0x28b80d){return function(_0x457169){try{jsonpatch[_0x4296('0x21')](_0x457169,_0x28b80d,!![]);}catch(_0x328496){return BPromise[_0x4296('0x22')](_0x328496);}return _0x457169['save']();};}function saveUpdates(_0xcbe34c,_0xaf77f7){return function(_0xb31e47){if(_0xb31e47){return _0xb31e47['update'](_0xcbe34c)['then'](function(_0x5b4c7c){return _0x5b4c7c;});}return null;};}function removeEntity(_0x300ff9,_0x1e7d44){return function(_0x221bcd){if(_0x221bcd){return _0x221bcd[_0x4296('0x23')]()[_0x4296('0x24')](function(){_0x300ff9[_0x4296('0x19')](0xcc)[_0x4296('0x1a')]();});}};}function handleEntityNotFound(_0x5527aa,_0x340f55){return function(_0x411915){if(!_0x411915){_0x5527aa[_0x4296('0x18')](0x194);}return _0x411915;};}function handleError(_0x15c5f0,_0x364a56){_0x364a56=_0x364a56||0x1f4;return function(_0x2bab09){logger[_0x4296('0x25')](_0x2bab09[_0x4296('0x26')]);if(_0x2bab09[_0x4296('0x27')]){delete _0x2bab09[_0x4296('0x27')];}_0x15c5f0['status'](_0x364a56)['send'](_0x2bab09);};}exports[_0x4296('0x28')]=function(_0x28a3c7,_0x493f4b){var _0x5c120b={},_0x372632={},_0x596a78={'count':0x0,'rows':[]};var _0x2834e8=_['map'](db['VoiceRecording'][_0x4296('0x29')],function(_0x1d39aa){return{'name':_0x1d39aa[_0x4296('0x2a')],'type':_0x1d39aa[_0x4296('0x2b')][_0x4296('0x2c')]};});_0x372632[_0x4296('0x2d')]=_['differenceBy'](_['map'](_0x2834e8,'name'),['format']);_0x372632[_0x4296('0x2e')]=_[_0x4296('0x2f')](_0x28a3c7['query']);_0x372632['filters']=_[_0x4296('0x30')](_0x372632[_0x4296('0x2d')],_0x372632[_0x4296('0x2e')]);_0x5c120b[_0x4296('0x31')]=_[_0x4296('0x30')](_0x372632['model'],qs['fields'](_0x28a3c7[_0x4296('0x2e')][_0x4296('0x32')]));_0x5c120b[_0x4296('0x31')]=_0x5c120b[_0x4296('0x31')][_0x4296('0x33')]?_0x5c120b[_0x4296('0x31')]:_0x372632[_0x4296('0x2d')];if(!_0x28a3c7[_0x4296('0x2e')][_0x4296('0x34')]('nolimit')){_0x5c120b[_0x4296('0x1e')]=qs[_0x4296('0x1e')](_0x28a3c7[_0x4296('0x2e')][_0x4296('0x1e')]);_0x5c120b[_0x4296('0x1c')]=qs[_0x4296('0x1c')](_0x28a3c7[_0x4296('0x2e')][_0x4296('0x1c')]);}_0x5c120b['order']=qs[_0x4296('0x35')](_0x28a3c7[_0x4296('0x2e')][_0x4296('0x35')]);_0x5c120b[_0x4296('0x36')]=qs[_0x4296('0x37')](_[_0x4296('0x38')](_0x28a3c7[_0x4296('0x2e')],_0x372632[_0x4296('0x37')]),_0x2834e8);if(_0x28a3c7[_0x4296('0x2e')][_0x4296('0x39')]){_0x5c120b[_0x4296('0x36')]=_[_0x4296('0x3a')](_0x5c120b[_0x4296('0x36')],{'$or':_['map'](_0x2834e8,function(_0x26fc09){if(_0x26fc09[_0x4296('0x2b')]!==_0x4296('0x3b')){var _0x5c01c9={};_0x5c01c9[_0x26fc09['name']]={'$like':'%'+_0x28a3c7['query'][_0x4296('0x39')]+'%'};return _0x5c01c9;}})});}_0x5c120b=_['merge']({},_0x5c120b,_0x28a3c7[_0x4296('0x3c')]);var _0x53abba={'where':_0x5c120b[_0x4296('0x36')]};return db[_0x4296('0x3d')][_0x4296('0x1f')](_0x53abba)[_0x4296('0x24')](function(_0x279014){_0x596a78['count']=_0x279014;if(_0x28a3c7[_0x4296('0x2e')][_0x4296('0x3e')]){_0x5c120b[_0x4296('0x3f')]=[{'all':!![]}];}return db[_0x4296('0x3d')][_0x4296('0x40')](_0x5c120b);})[_0x4296('0x24')](function(_0x7b4c2d){_0x596a78[_0x4296('0x41')]=_0x7b4c2d;return _0x596a78;})[_0x4296('0x24')](respondWithFilteredResult(_0x493f4b,_0x5c120b))[_0x4296('0x42')](handleError(_0x493f4b,null));};exports[_0x4296('0x43')]=function(_0x405e4b,_0x3bf1f4){var _0x5c296a={'raw':![],'where':{'id':_0x405e4b[_0x4296('0x44')]['id']}},_0x105665={};_0x105665[_0x4296('0x2d')]=_[_0x4296('0x2f')](db[_0x4296('0x3d')][_0x4296('0x29')]);_0x105665['query']=_[_0x4296('0x2f')](_0x405e4b[_0x4296('0x2e')]);_0x105665[_0x4296('0x37')]=_[_0x4296('0x30')](_0x105665[_0x4296('0x2d')],_0x105665['query']);_0x5c296a[_0x4296('0x31')]=_[_0x4296('0x30')](_0x105665[_0x4296('0x2d')],qs[_0x4296('0x32')](_0x405e4b['query']['fields']));_0x5c296a[_0x4296('0x31')]=_0x5c296a['attributes']['length']?_0x5c296a[_0x4296('0x31')]:_0x105665[_0x4296('0x2d')];if(_0x405e4b['query'][_0x4296('0x3e')]){_0x5c296a[_0x4296('0x3f')]=[{'all':!![]}];}_0x5c296a=_['merge']({},_0x5c296a,_0x405e4b[_0x4296('0x3c')]);return db[_0x4296('0x3d')][_0x4296('0x45')](_0x5c296a)[_0x4296('0x24')](handleEntityNotFound(_0x3bf1f4,null))['then'](respondWithResult(_0x3bf1f4,null))[_0x4296('0x42')](handleError(_0x3bf1f4,null));};exports[_0x4296('0x46')]=function(_0x1b25cd,_0x5508aa){return db[_0x4296('0x3d')]['create'](_0x1b25cd['body'],{})[_0x4296('0x24')](respondWithResult(_0x5508aa,0xc9))[_0x4296('0x42')](handleError(_0x5508aa,null));};exports[_0x4296('0x47')]=function(_0x4080ce,_0x127511){if(_0x4080ce[_0x4296('0x48')]['id']){delete _0x4080ce[_0x4296('0x48')]['id'];}return db[_0x4296('0x3d')][_0x4296('0x45')]({'where':{'id':_0x4080ce[_0x4296('0x44')]['id']}})[_0x4296('0x24')](handleEntityNotFound(_0x127511,null))[_0x4296('0x24')](saveUpdates(_0x4080ce[_0x4296('0x48')],null))['then'](respondWithResult(_0x127511,null))[_0x4296('0x42')](handleError(_0x127511,null));};exports['describe']=function(_0x5c99b1,_0x492dd6){return db[_0x4296('0x3d')][_0x4296('0x49')]()[_0x4296('0x24')](respondWithResult(_0x492dd6,null))[_0x4296('0x42')](handleError(_0x492dd6,null));};exports[_0x4296('0x4a')]=function(_0x5074b4,_0x2296bc,_0x1842cd){var _0x4a868b=require('../../components/encryptor');var _0x143349=![];var _0x13f201={};if(_0x5074b4[_0x4296('0x2e')][_0x4296('0x2b')]&&_0x5074b4['query'][_0x4296('0x2b')]===_0x4296('0x4b')){_0x13f201['uniqueid']=_0x5074b4[_0x4296('0x44')]['id'];}else{_0x13f201['id']=_0x5074b4[_0x4296('0x44')]['id'];}return db[_0x4296('0x3d')][_0x4296('0x45')]({'where':_0x13f201,'attributes':['id','value'],'raw':!![]})[_0x4296('0x24')](handleEntityNotFound(_0x2296bc,null))['then'](function(_0x3f32ac){if(_0x3f32ac){var _0xa1d0e8=_0x3f32ac[_0x4296('0x4c')];var _0x3a66f9=util[_0x4296('0x4d')](_0x4296('0x4e'),_0xa1d0e8);if(fs[_0x4296('0x4f')](_0x3a66f9)){_0x143349=!![];return _0x4a868b['decryptFile'](_0x3a66f9,_0xa1d0e8,config[_0x4296('0x50')][_0x4296('0x51')])[_0x4296('0x24')](function(){return _0x3f32ac;});}return _0x3f32ac;}})[_0x4296('0x24')](function(_0x1bc538){if(_0x1bc538){var _0x6f5e79=_0x1bc538['value'];if(!fs[_0x4296('0x4f')](_0x6f5e79)){throw new db[(_0x4296('0x52'))][(_0x4296('0x53'))](_0x4296('0x54'));}if(_0x1bc538[_0x4296('0x55')]){return _0x2296bc['download'](_0x6f5e79,_0x1bc538[_0x4296('0x55')]+path[_0x4296('0x56')](_0x6f5e79),function(){if(_0x143349){fs[_0x4296('0x57')](_0x6f5e79);}});}else{return _0x2296bc[_0x4296('0x4a')](_0x6f5e79,function(_0x597e36){if(_0x143349){fs[_0x4296('0x57')](_0x6f5e79);}});}}})['catch'](function(_0x65e180){if(_0x65e180[_0x4296('0x58')]===_0x4296('0x54')){_0x2296bc['status'](0x194)['send']('Not\x20found');}else{return handleError(_0x2296bc,null);}});};exports[_0x4296('0x59')]=function(_0x255854,_0x4a91fb,_0x5b5c0f){var _0x13adf2=require('../../components/encryptor');var _0x33f042=![];var _0x225311={'$and':[db[_0x4296('0x5a')][_0x4296('0x36')](db['sequelize']['fn'](_0x4296('0x5b'),db[_0x4296('0x5a')][_0x4296('0x5c')]('uniqueid')),_0x255854[_0x4296('0x2e')][_0x4296('0x5d')])]};if(_0x255854[_0x4296('0x2e')][_0x4296('0x2b')]&&_0x255854['query']['type']===_0x4296('0x4b')){_0x225311['$and'][_0x4296('0x5e')]({'uniqueid':_0x255854['params']['id']});}else{_0x225311[_0x4296('0x5f')]['push']({'id':_0x255854['params']['id']});}return db[_0x4296('0x3d')][_0x4296('0x45')]({'where':_0x225311,'attributes':['id',_0x4296('0x4c')],'raw':!![]})[_0x4296('0x24')](handleEntityNotFound(_0x4a91fb,null))['then'](function(_0x4247ed){if(_0x4247ed){var _0x1ebe81=util['format'](_0x4296('0x4e'),_0x4247ed['value']);if(fs[_0x4296('0x4f')](_0x1ebe81)){_0x33f042=!![];return _0x13adf2[_0x4296('0x60')](_0x1ebe81,_0x4247ed['value'],config[_0x4296('0x50')][_0x4296('0x51')])[_0x4296('0x24')](function(){return _0x4247ed;});}return _0x4247ed;}})['then'](function(_0x5e4625){if(_0x5e4625){if(!fs[_0x4296('0x4f')](_0x5e4625[_0x4296('0x4c')])){throw new db[(_0x4296('0x52'))][(_0x4296('0x53'))]('VoiceRecording\x20not\x20found');}if(_0x5e4625[_0x4296('0x55')]){return _0x4a91fb['download'](_0x5e4625[_0x4296('0x4c')],_0x5e4625[_0x4296('0x55')]+path[_0x4296('0x56')](_0x5e4625['value']),function(){if(_0x33f042){fs['unlink'](_0x5e4625[_0x4296('0x4c')]);}});}else{return _0x4a91fb[_0x4296('0x4a')](_0x5e4625[_0x4296('0x4c')],function(_0x4c0188){if(_0x33f042){fs[_0x4296('0x57')](_0x5e4625[_0x4296('0x4c')]);}});}}})[_0x4296('0x42')](handleError(_0x4a91fb,null));};exports['destroy']=function(_0x1025a4,_0x167100){return db[_0x4296('0x3d')]['find']({'where':{'id':_0x1025a4[_0x4296('0x44')]['id']}})[_0x4296('0x24')](function(_0xe1c9cd){if(_['isNil'](_0xe1c9cd)){throw new ReferenceError(_0x4296('0x61'));}return _0xe1c9cd;})['then'](function(_0x554243){var _0x35ab6d=_0x554243[_0x4296('0x4c')];logger[_0x4296('0x62')](_0x4296('0x63'),_0x35ab6d);if(!_[_0x4296('0x64')](_0x554243[_0x4296('0x4c')])&&fs[_0x4296('0x4f')](_0x35ab6d)){logger[_0x4296('0x62')]('File:\x20\x22'+_0x35ab6d+_0x4296('0x65'));fs[_0x4296('0x66')](_0x35ab6d);}_0x35ab6d=_0x35ab6d+_0x4296('0x67');if(!_[_0x4296('0x64')](_0x554243[_0x4296('0x4c')])&&fs['existsSync'](_0x35ab6d)){logger[_0x4296('0x62')](_0x4296('0x68')+_0x35ab6d+_0x4296('0x65'));fs['unlinkSync'](_0x35ab6d);}return _0x554243;})[_0x4296('0x24')](function(_0x3d4a52){if(!_0x3d4a52)throw new InternalError();return _0x3d4a52['destroy']();})[_0x4296('0x24')](function(){_0x167100[_0x4296('0x19')](0xcc)[_0x4296('0x1a')]();})[_0x4296('0x42')](handleError(_0x167100,null));};function getBucketslist(_0x207c7f,_0x3ae5cd,_0x2222c2){return new Promise(function(_0x577495,_0x12ae1f){var _0x59810b=new AWS['S3']({'accessKeyId':_0x3ae5cd,'secretAccessKey':_0x207c7f,'region':_0x2222c2});_0x59810b[_0x4296('0x69')]({},function(_0x3aaebb,_0x348349){if(_0x3aaebb){return _0x12ae1f(_0x3aaebb);}else{return _0x577495(_0x348349);}});});}function createBucket(_0x41231b,_0x5509a2,_0x37a2a6,_0x135660){return new Promise(function(_0x59fc1e,_0x723d38){var _0x45378b=new AWS['S3']({'accessKeyId':_0x5509a2,'secretAccessKey':_0x41231b,'region':_0x37a2a6});_0x45378b[_0x4296('0x6a')]({'Bucket':_0x135660},function(_0x1e828b,_0x189bb5){if(_0x1e828b){return _0x723d38(_0x1e828b);}else{return _0x59fc1e(_0x189bb5);}});});}function uploadFile(_0x4c425c,_0x426fca,_0x16652d,_0x2ef59a,_0x3de107,_0x1eff37){return new Promise(function(_0x30e234,_0x32445c){var _0x1c178a=new AWS['S3']({'accessKeyId':_0x426fca,'secretAccessKey':_0x4c425c,'region':_0x16652d});_0x1c178a[_0x4296('0x6b')]({'Bucket':_0x2ef59a,'Key':_0x3de107,'Body':_0x1eff37},function(_0x1d6b91,_0x2fc1cf){if(_0x1d6b91){return _0x32445c(_0x1d6b91);}else{return _0x30e234(_0x2fc1cf);}});});}function startTranscribe(_0x68d8a6,_0x2a9b89,_0x2b41ca,_0x515225,_0x18c42a,_0x521867){return new Promise(function(_0x4cb1c1,_0x47cb72){var _0x42ecf6=new AWS[(_0x4296('0x6c'))]({'accessKeyId':_0x2a9b89,'secretAccessKey':_0x68d8a6,'region':_0x2b41ca});_0x42ecf6['startTranscriptionJob']({'TranscriptionJobName':_0x515225,'LanguageCode':_0x18c42a,'Media':{'MediaFileUri':_0x521867}},function(_0x47dd1b,_0x4c473b){if(_0x47dd1b){return _0x47cb72(_0x47dd1b);}else{return _0x4cb1c1(_0x4c473b);}});});}function transcribe(_0x527ca0,_0x3d9ff7,_0x2abed0,_0x4cca15,_0x421713,_0x42321e,_0x16a35a){return new Promise(function(_0x10571e,_0xef2f0c){var _0x4e5a79={};logger[_0x4296('0x62')](util[_0x4296('0x4d')](_0x4296('0x6d'),_0x527ca0,_0x421713));return uploadFile(_0x3d9ff7,_0x2abed0,_0x4cca15,_0x421713,path[_0x4296('0x6e')](_0x42321e),fs[_0x4296('0x6f')](_0x42321e))['then'](function(_0x526f94){logger[_0x4296('0x62')](util['format']('[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)',_0x527ca0,_0x421713,_0x526f94['Location']));_0x4e5a79['bucket']=_0x526f94['Bucket'];_0x4e5a79[_0x4296('0x70')]=_0x526f94[_0x4296('0x71')];logger[_0x4296('0x62')](util[_0x4296('0x4d')](_0x4296('0x72'),_0x527ca0));return startTranscribe(_0x3d9ff7,_0x2abed0,_0x4cca15,uuidv4(),_0x16a35a,_0x526f94[_0x4296('0x71')]);})[_0x4296('0x24')](function(_0x34400d){logger['info'](util['format'](_0x4296('0x73'),_0x527ca0,_0x34400d['TranscriptionJob'][_0x4296('0x74')]));_0x4e5a79[_0x4296('0x75')]=_0x34400d[_0x4296('0x76')]['TranscriptionJobName'];_0x4e5a79[_0x4296('0x77')]=_0x34400d[_0x4296('0x76')][_0x4296('0x78')];return _0x10571e(_0x4e5a79);})[_0x4296('0x42')](function(_0x30bcbb){return _0xef2f0c(_0x30bcbb);});});}exports[_0x4296('0x79')]=function(_0x4559b0,_0x31f154,_0x5aa8e7){var _0x198508;var _0x242904;var _0x7a4200;var _0x498b7a=require(_0x4296('0x7a'));return db[_0x4296('0x3d')][_0x4296('0x7b')]({'where':{'id':_0x4559b0[_0x4296('0x44')]['id']}})[_0x4296('0x24')](function(_0x31c1da){if(_0x31c1da){var _0x270d5e=util[_0x4296('0x4d')]('%s.cypher',_0x31c1da['value']);if(fs[_0x4296('0x4f')](_0x270d5e)){cypher=!![];return _0x498b7a[_0x4296('0x60')](_0x270d5e,_0x31c1da[_0x4296('0x4c')],config[_0x4296('0x50')]['recording'])[_0x4296('0x24')](function(){return _0x31c1da;});}return _0x31c1da;}})[_0x4296('0x24')](function(_0x58d351){if(!_0x58d351){throw new db[(_0x4296('0x52'))][(_0x4296('0x53'))](_0x4296('0x7c'));}_0x242904=_0x58d351;return db[_0x4296('0x7d')][_0x4296('0x7b')]({'where':{'id':0x1}});})[_0x4296('0x24')](handleEntityNotFound(_0x31f154,null))[_0x4296('0x24')](function(_0x1ff1cc){if(_0x1ff1cc){_0x198508=_0x1ff1cc;if(!_0x198508[_0x4296('0x7e')]||!_0x198508[_0x4296('0x7f')]||!_0x198508[_0x4296('0x80')]||!_0x198508[_0x4296('0x81')]||!_0x198508['bucket']){throw new db['Sequelize'][(_0x4296('0x53'))]('Transcribe\x20not\x20configured');}if(_0x4559b0[_0x4296('0x48')]['runSentiment']&&(!_0x198508['sentiment']||!_0x198508['sentimentAccountId']||!_0x198508[_0x4296('0x82')]||!_0x198508['language']||!_0x198508[_0x4296('0x83')])){throw new db[(_0x4296('0x52'))]['ValidationError'](_0x4296('0x84'));}return db['CloudProvider'][_0x4296('0x7b')]({'where':{'id':_0x198508[_0x4296('0x7f')]}});}})['then'](function(_0x2cade4){if(!_0x2cade4){throw new db[(_0x4296('0x52'))][(_0x4296('0x53'))](_0x4296('0x85'));}if(!_0x2cade4[_0x4296('0x86')]||!_0x2cade4[_0x4296('0x87')]){throw new db[(_0x4296('0x52'))][(_0x4296('0x53'))](_0x4296('0x88'));}_0x7a4200=_0x2cade4;return getBucketslist(_0x7a4200[_0x4296('0x86')],_0x7a4200[_0x4296('0x87')],_0x198508[_0x4296('0x80')]);})['then'](function(_0x48d5bf){if(_0x48d5bf&&_0x48d5bf[_0x4296('0x89')]){var _0x5b5b7b=_[_0x4296('0x45')](_0x48d5bf[_0x4296('0x89')],function(_0x18715b){return _0x18715b[_0x4296('0x8a')]===_0x198508['bucket'];});if(!_0x5b5b7b){logger['info'](util[_0x4296('0x4d')](_0x4296('0x8b'),_0x4559b0[_0x4296('0x44')]['id'],_0x198508[_0x4296('0x83')]));return createBucket(_0x7a4200[_0x4296('0x86')],_0x7a4200[_0x4296('0x87')],_0x198508['transcribeRegion'],_0x198508['bucket']);}logger[_0x4296('0x62')](util['format'](_0x4296('0x8c'),_0x4559b0[_0x4296('0x44')]['id'],_0x198508[_0x4296('0x83')]));return;}})['then'](function(_0x55def7){if(_0x242904[_0x4296('0x77')]===_0x4296('0x8d')){return transcribe(_0x4559b0[_0x4296('0x44')]['id'],_0x7a4200['data1'],_0x7a4200[_0x4296('0x87')],_0x198508[_0x4296('0x80')],_0x198508[_0x4296('0x83')],_0x242904['value'],_0x198508['language']);}else{logger['info'](util[_0x4296('0x4d')](_0x4296('0x8e'),_0x4559b0[_0x4296('0x44')]['id']));return{'transcribeStatus':_0x4296('0x8f')};}})['then'](function(_0x5c6a2d){if(_0x5c6a2d){_0x5c6a2d[_0x4296('0x90')]=_0x4559b0[_0x4296('0x48')][_0x4296('0x91')];return _0x242904['updateAttributes'](_0x5c6a2d);}})[_0x4296('0x24')](respondWithResult(_0x31f154,null))[_0x4296('0x42')](handleError(_0x31f154,null));};function writeFile(_0x272003,_0x51112a){return new Promise(function(_0x5f1256,_0x11cbed){fs[_0x4296('0x92')](_0x51112a,_0x272003,function(_0x221b4c,_0x26f829){if(_0x221b4c){return _0x11cbed(_0x221b4c);}else{return _0x5f1256(_0x26f829);}});});}exports['downloadTranscribe']=function(_0x437fb3,_0x5eea04,_0x6a4271){return db[_0x4296('0x3d')][_0x4296('0x7b')]({'where':{'id':_0x437fb3['params']['id']}})[_0x4296('0x24')](handleEntityNotFound(_0x5eea04))['then'](function(_0x49631d){if(_0x49631d&&_0x49631d[_0x4296('0x93')]){var _0x2766bb=_0x49631d[_0x4296('0x93')];var _0x35a039=config[_0x4296('0x94')]+'/server/files/transcribes/transcribe_'+_0x49631d['id']+'.txt';if(fs[_0x4296('0x4f')](_0x35a039)){return _0x35a039;}return writeFile(_0x2766bb,_0x35a039)[_0x4296('0x24')](function(){return _0x35a039;});}else{throw new db[(_0x4296('0x52'))][(_0x4296('0x53'))](_0x4296('0x95'));}})[_0x4296('0x24')](function(_0x573cb2){return _0x5eea04[_0x4296('0x4a')](_0x573cb2);})[_0x4296('0x42')](handleError(_0x5eea04));};
\ No newline at end of file
+var _0x74e4=['zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','aws-sdk','uuid/v4','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','VoiceRecording','fieldName','type','key','model','differenceBy','format','keys','filters','intersection','query','attributes','length','hasOwnProperty','nolimit','order','where','pick','filter','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','fields','include','create','body','describe','../../components/encryptor','uniqueid','params','value','existsSync','decryptFile','secrets','recording','VoiceRecording\x20not\x20found','filename','download','extname','unlink','downloads','sequelize','MD5','col','token','$and','push','find','%s.cypher','Sequelize','isNil','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','upload','TranscribeService','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','runTranscribe','ValidationError','Voice\x20Recording\x20not\x20found','Setting','findOne','transcribe','transcribeAccountId','transcribeRegion','language','Transcribe\x20not\x20configured','runSentiment','sentiment','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','Cloud\x20Provider\x20not\x20available','data2','Cloud\x20Provider\x20not\x20configured','data1','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','transcribeStatus','NEW','IN_PROGRESS','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','eml-format','rimraf'];(function(_0x79cd6f,_0x540c50){var _0x116436=function(_0x3e4d17){while(--_0x3e4d17){_0x79cd6f['push'](_0x79cd6f['shift']());}};_0x116436(++_0x540c50);}(_0x74e4,0x9c));var _0x474e=function(_0x107f31,_0x525054){_0x107f31=_0x107f31-0x0;var _0x22b23f=_0x74e4[_0x107f31];return _0x22b23f;};'use strict';var emlformat=require(_0x474e('0x0'));var rimraf=require(_0x474e('0x1'));var zipdir=require(_0x474e('0x2'));var jsonpatch=require(_0x474e('0x3'));var rp=require(_0x474e('0x4'));var moment=require(_0x474e('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x474e('0x6'));var util=require(_0x474e('0x7'));var path=require(_0x474e('0x8'));var sox=require(_0x474e('0x9'));var csv=require(_0x474e('0xa'));var ejs=require(_0x474e('0xb'));var fs=require('fs');var fs_extra=require(_0x474e('0xc'));var _=require(_0x474e('0xd'));var squel=require('squel');var crypto=require(_0x474e('0xe'));var jsforce=require(_0x474e('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x474e('0xa'));var querystring=require('querystring');var Papa=require(_0x474e('0x10'));var AWS=require(_0x474e('0x11'));var uuidv4=require(_0x474e('0x12'));var Redis=require('ioredis');var authService=require(_0x474e('0x13'));var qs=require(_0x474e('0x14'));var as=require(_0x474e('0x15'));var hardwareService=require(_0x474e('0x16'));var logger=require(_0x474e('0x17'))(_0x474e('0x18'));var utils=require(_0x474e('0x19'));var config=require(_0x474e('0x1a'));var licenseUtil=require(_0x474e('0x1b'));var db=require(_0x474e('0x1c'))['db'];function respondWithStatusCode(_0x1d5c08,_0x73f020){_0x73f020=_0x73f020||0xcc;return function(_0x5ddd6d){if(_0x5ddd6d){return _0x1d5c08[_0x474e('0x1d')](_0x73f020);}return _0x1d5c08[_0x474e('0x1e')](_0x73f020)[_0x474e('0x1f')]();};}function respondWithResult(_0x112684,_0x42a9ef){_0x42a9ef=_0x42a9ef||0xc8;return function(_0x20f4c4){if(_0x20f4c4){return _0x112684[_0x474e('0x1e')](_0x42a9ef)[_0x474e('0x20')](_0x20f4c4);}};}function respondWithFilteredResult(_0x3bedae,_0x11d9d4){return function(_0x741014){if(_0x741014){var _0x344ee2=typeof _0x11d9d4[_0x474e('0x21')]===_0x474e('0x22')&&typeof _0x11d9d4[_0x474e('0x23')]===_0x474e('0x22');var _0x504fcd=_0x741014[_0x474e('0x24')];var _0x304b4a=_0x344ee2?0x0:_0x11d9d4['offset'];var _0x349344=_0x344ee2?_0x741014[_0x474e('0x24')]:_0x11d9d4[_0x474e('0x21')]+_0x11d9d4[_0x474e('0x23')];var _0x4055e0;if(_0x349344>=_0x504fcd){_0x349344=_0x504fcd;_0x4055e0=0xc8;}else{_0x4055e0=0xce;}_0x3bedae[_0x474e('0x1e')](_0x4055e0);return _0x3bedae['set'](_0x474e('0x25'),_0x304b4a+'-'+_0x349344+'/'+_0x504fcd)['json'](_0x741014);}return null;};}function patchUpdates(_0x2a7f50){return function(_0x2e76ec){try{jsonpatch[_0x474e('0x26')](_0x2e76ec,_0x2a7f50,!![]);}catch(_0x4d448c){return BPromise[_0x474e('0x27')](_0x4d448c);}return _0x2e76ec[_0x474e('0x28')]();};}function saveUpdates(_0x212837,_0x45bc43){return function(_0x54bdd2){if(_0x54bdd2){return _0x54bdd2[_0x474e('0x29')](_0x212837)[_0x474e('0x2a')](function(_0x28bc60){return _0x28bc60;});}return null;};}function removeEntity(_0x41b2aa,_0x23f7e9){return function(_0x1cfc05){if(_0x1cfc05){return _0x1cfc05[_0x474e('0x2b')]()[_0x474e('0x2a')](function(){_0x41b2aa['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4398d6,_0x485d86){return function(_0x1b485c){if(!_0x1b485c){_0x4398d6[_0x474e('0x1d')](0x194);}return _0x1b485c;};}function handleError(_0x3ecf83,_0x2a2aa5){_0x2a2aa5=_0x2a2aa5||0x1f4;return function(_0x5e9c29){logger[_0x474e('0x2c')](_0x5e9c29[_0x474e('0x2d')]);if(_0x5e9c29[_0x474e('0x2e')]){delete _0x5e9c29[_0x474e('0x2e')];}_0x3ecf83[_0x474e('0x1e')](_0x2a2aa5)[_0x474e('0x2f')](_0x5e9c29);};}exports[_0x474e('0x30')]=function(_0xa5f226,_0x4a8d6d){var _0x2d7370={},_0x67a5ec={},_0x48e95d={'count':0x0,'rows':[]};var _0x2bea6f=_[_0x474e('0x31')](db[_0x474e('0x32')]['rawAttributes'],function(_0x9b7581){return{'name':_0x9b7581[_0x474e('0x33')],'type':_0x9b7581[_0x474e('0x34')][_0x474e('0x35')]};});_0x67a5ec[_0x474e('0x36')]=_[_0x474e('0x37')](_[_0x474e('0x31')](_0x2bea6f,_0x474e('0x2e')),[_0x474e('0x38')]);_0x67a5ec['query']=_[_0x474e('0x39')](_0xa5f226['query']);_0x67a5ec[_0x474e('0x3a')]=_[_0x474e('0x3b')](_0x67a5ec[_0x474e('0x36')],_0x67a5ec[_0x474e('0x3c')]);_0x2d7370[_0x474e('0x3d')]=_['intersection'](_0x67a5ec[_0x474e('0x36')],qs['fields'](_0xa5f226[_0x474e('0x3c')]['fields']));_0x2d7370[_0x474e('0x3d')]=_0x2d7370[_0x474e('0x3d')][_0x474e('0x3e')]?_0x2d7370[_0x474e('0x3d')]:_0x67a5ec[_0x474e('0x36')];if(!_0xa5f226['query'][_0x474e('0x3f')](_0x474e('0x40'))){_0x2d7370[_0x474e('0x23')]=qs[_0x474e('0x23')](_0xa5f226[_0x474e('0x3c')][_0x474e('0x23')]);_0x2d7370[_0x474e('0x21')]=qs['offset'](_0xa5f226['query']['offset']);}_0x2d7370[_0x474e('0x41')]=qs['sort'](_0xa5f226[_0x474e('0x3c')]['sort']);_0x2d7370[_0x474e('0x42')]=qs['filters'](_[_0x474e('0x43')](_0xa5f226[_0x474e('0x3c')],_0x67a5ec['filters']),_0x2bea6f);if(_0xa5f226[_0x474e('0x3c')][_0x474e('0x44')]){_0x2d7370[_0x474e('0x42')]=_['merge'](_0x2d7370[_0x474e('0x42')],{'$or':_[_0x474e('0x31')](_0x2bea6f,function(_0x5b2eeb){if(_0x5b2eeb[_0x474e('0x34')]!==_0x474e('0x45')){var _0x458dd8={};_0x458dd8[_0x5b2eeb[_0x474e('0x2e')]]={'$like':'%'+_0xa5f226[_0x474e('0x3c')][_0x474e('0x44')]+'%'};return _0x458dd8;}})});}_0x2d7370=_[_0x474e('0x46')]({},_0x2d7370,_0xa5f226[_0x474e('0x47')]);var _0x560e3e={'where':_0x2d7370['where']};return db[_0x474e('0x32')][_0x474e('0x24')](_0x560e3e)['then'](function(_0x496011){_0x48e95d['count']=_0x496011;if(_0xa5f226[_0x474e('0x3c')][_0x474e('0x48')]){_0x2d7370['include']=[{'all':!![]}];}return db['VoiceRecording'][_0x474e('0x49')](_0x2d7370);})['then'](function(_0x7355f2){_0x48e95d[_0x474e('0x4a')]=_0x7355f2;return _0x48e95d;})[_0x474e('0x2a')](respondWithFilteredResult(_0x4a8d6d,_0x2d7370))[_0x474e('0x4b')](handleError(_0x4a8d6d,null));};exports[_0x474e('0x4c')]=function(_0x149b23,_0x404504){var _0x1b8efa={'raw':![],'where':{'id':_0x149b23['params']['id']}},_0x30ac52={};_0x30ac52['model']=_[_0x474e('0x39')](db['VoiceRecording']['rawAttributes']);_0x30ac52[_0x474e('0x3c')]=_[_0x474e('0x39')](_0x149b23[_0x474e('0x3c')]);_0x30ac52[_0x474e('0x3a')]=_[_0x474e('0x3b')](_0x30ac52['model'],_0x30ac52[_0x474e('0x3c')]);_0x1b8efa[_0x474e('0x3d')]=_[_0x474e('0x3b')](_0x30ac52['model'],qs[_0x474e('0x4d')](_0x149b23[_0x474e('0x3c')][_0x474e('0x4d')]));_0x1b8efa[_0x474e('0x3d')]=_0x1b8efa[_0x474e('0x3d')][_0x474e('0x3e')]?_0x1b8efa['attributes']:_0x30ac52['model'];if(_0x149b23[_0x474e('0x3c')][_0x474e('0x48')]){_0x1b8efa[_0x474e('0x4e')]=[{'all':!![]}];}_0x1b8efa=_[_0x474e('0x46')]({},_0x1b8efa,_0x149b23['options']);return db['VoiceRecording']['find'](_0x1b8efa)['then'](handleEntityNotFound(_0x404504,null))[_0x474e('0x2a')](respondWithResult(_0x404504,null))[_0x474e('0x4b')](handleError(_0x404504,null));};exports[_0x474e('0x4f')]=function(_0x407c24,_0x40a24c){return db['VoiceRecording']['create'](_0x407c24[_0x474e('0x50')],{})[_0x474e('0x2a')](respondWithResult(_0x40a24c,0xc9))['catch'](handleError(_0x40a24c,null));};exports[_0x474e('0x29')]=function(_0xa4ef77,_0x2d6d7c){if(_0xa4ef77[_0x474e('0x50')]['id']){delete _0xa4ef77[_0x474e('0x50')]['id'];}return db[_0x474e('0x32')]['find']({'where':{'id':_0xa4ef77['params']['id']}})['then'](handleEntityNotFound(_0x2d6d7c,null))[_0x474e('0x2a')](saveUpdates(_0xa4ef77[_0x474e('0x50')],null))[_0x474e('0x2a')](respondWithResult(_0x2d6d7c,null))[_0x474e('0x4b')](handleError(_0x2d6d7c,null));};exports[_0x474e('0x51')]=function(_0x11965b,_0x1c2a05){return db['VoiceRecording'][_0x474e('0x51')]()[_0x474e('0x2a')](respondWithResult(_0x1c2a05,null))['catch'](handleError(_0x1c2a05,null));};exports['download']=function(_0xa340be,_0x2453b9,_0x1d5be0){var _0x5960cc=require(_0x474e('0x52'));var _0x5603b2=![];var _0x19c348={};if(_0xa340be['query'][_0x474e('0x34')]&&_0xa340be['query'][_0x474e('0x34')]===_0x474e('0x53')){_0x19c348[_0x474e('0x53')]=_0xa340be['params']['id'];}else{_0x19c348['id']=_0xa340be[_0x474e('0x54')]['id'];}return db[_0x474e('0x32')]['find']({'where':_0x19c348,'attributes':['id',_0x474e('0x55')],'raw':!![]})['then'](handleEntityNotFound(_0x2453b9,null))[_0x474e('0x2a')](function(_0x5e1caf){if(_0x5e1caf){var _0x329c20=_0x5e1caf[_0x474e('0x55')];var _0x499e16=util[_0x474e('0x38')]('%s.cypher',_0x329c20);if(fs[_0x474e('0x56')](_0x499e16)){_0x5603b2=!![];return _0x5960cc[_0x474e('0x57')](_0x499e16,_0x329c20,config[_0x474e('0x58')][_0x474e('0x59')])[_0x474e('0x2a')](function(){return _0x5e1caf;});}return _0x5e1caf;}})[_0x474e('0x2a')](function(_0x2cf123){if(_0x2cf123){var _0x5a3df9=_0x2cf123['value'];if(!fs[_0x474e('0x56')](_0x5a3df9)){throw new db['Sequelize']['ValidationError'](_0x474e('0x5a'));}if(_0x2cf123[_0x474e('0x5b')]){return _0x2453b9[_0x474e('0x5c')](_0x5a3df9,_0x2cf123[_0x474e('0x5b')]+path[_0x474e('0x5d')](_0x5a3df9),function(){if(_0x5603b2){fs[_0x474e('0x5e')](_0x5a3df9);}});}else{return _0x2453b9[_0x474e('0x5c')](_0x5a3df9,function(_0x5d01b2){if(_0x5603b2){fs[_0x474e('0x5e')](_0x5a3df9);}});}}})[_0x474e('0x4b')](function(_0x502357){if(_0x502357['message']===_0x474e('0x5a')){_0x2453b9[_0x474e('0x1e')](0x194)[_0x474e('0x2f')]('Not\x20found');}else{return handleError(_0x2453b9,null);}});};exports[_0x474e('0x5f')]=function(_0x2c10cc,_0x20ecc4,_0x1cb3c0){var _0x4d6b60=require(_0x474e('0x52'));var _0x6df026=![];var _0x51093e={'$and':[db[_0x474e('0x60')]['where'](db[_0x474e('0x60')]['fn'](_0x474e('0x61'),db[_0x474e('0x60')][_0x474e('0x62')](_0x474e('0x53'))),_0x2c10cc['query'][_0x474e('0x63')])]};if(_0x2c10cc[_0x474e('0x3c')][_0x474e('0x34')]&&_0x2c10cc[_0x474e('0x3c')][_0x474e('0x34')]===_0x474e('0x53')){_0x51093e[_0x474e('0x64')][_0x474e('0x65')]({'uniqueid':_0x2c10cc[_0x474e('0x54')]['id']});}else{_0x51093e[_0x474e('0x64')][_0x474e('0x65')]({'id':_0x2c10cc[_0x474e('0x54')]['id']});}return db[_0x474e('0x32')][_0x474e('0x66')]({'where':_0x51093e,'attributes':['id',_0x474e('0x55')],'raw':!![]})[_0x474e('0x2a')](handleEntityNotFound(_0x20ecc4,null))[_0x474e('0x2a')](function(_0x359b9e){if(_0x359b9e){var _0x3483e1=util['format'](_0x474e('0x67'),_0x359b9e[_0x474e('0x55')]);if(fs['existsSync'](_0x3483e1)){_0x6df026=!![];return _0x4d6b60[_0x474e('0x57')](_0x3483e1,_0x359b9e[_0x474e('0x55')],config[_0x474e('0x58')][_0x474e('0x59')])[_0x474e('0x2a')](function(){return _0x359b9e;});}return _0x359b9e;}})[_0x474e('0x2a')](function(_0x4882e5){if(_0x4882e5){if(!fs['existsSync'](_0x4882e5[_0x474e('0x55')])){throw new db[(_0x474e('0x68'))]['ValidationError'](_0x474e('0x5a'));}if(_0x4882e5[_0x474e('0x5b')]){return _0x20ecc4['download'](_0x4882e5[_0x474e('0x55')],_0x4882e5[_0x474e('0x5b')]+path[_0x474e('0x5d')](_0x4882e5[_0x474e('0x55')]),function(){if(_0x6df026){fs[_0x474e('0x5e')](_0x4882e5[_0x474e('0x55')]);}});}else{return _0x20ecc4[_0x474e('0x5c')](_0x4882e5['value'],function(_0x45da62){if(_0x6df026){fs[_0x474e('0x5e')](_0x4882e5[_0x474e('0x55')]);}});}}})['catch'](handleError(_0x20ecc4,null));};exports['destroy']=function(_0x437755,_0x2fa255){return db[_0x474e('0x32')]['find']({'where':{'id':_0x437755[_0x474e('0x54')]['id']}})[_0x474e('0x2a')](function(_0x3e98df){if(_[_0x474e('0x69')](_0x3e98df)){throw new ReferenceError('Entity\x20not\x20found');}return _0x3e98df;})['then'](function(_0x3bc636){var _0x549641=_0x3bc636['value'];logger[_0x474e('0x6a')](_0x474e('0x6b'),_0x549641);if(!_[_0x474e('0x69')](_0x3bc636['value'])&&fs[_0x474e('0x56')](_0x549641)){logger[_0x474e('0x6a')](_0x474e('0x6c')+_0x549641+_0x474e('0x6d'));fs[_0x474e('0x6e')](_0x549641);}_0x549641=_0x549641+_0x474e('0x6f');if(!_[_0x474e('0x69')](_0x3bc636[_0x474e('0x55')])&&fs[_0x474e('0x56')](_0x549641)){logger[_0x474e('0x6a')](_0x474e('0x6c')+_0x549641+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x474e('0x6e')](_0x549641);}return _0x3bc636;})[_0x474e('0x2a')](function(_0x397adf){if(!_0x397adf)throw new InternalError();return _0x397adf[_0x474e('0x2b')]();})[_0x474e('0x2a')](function(){_0x2fa255[_0x474e('0x1e')](0xcc)['end']();})['catch'](handleError(_0x2fa255,null));};function getBucketslist(_0x3078dc,_0x3f4d2a,_0x4c0c6e){return new Promise(function(_0xf487e8,_0x232467){var _0x295913=new AWS['S3']({'accessKeyId':_0x3f4d2a,'secretAccessKey':_0x3078dc,'region':_0x4c0c6e});_0x295913['listBuckets']({},function(_0x1dc0a4,_0x5ce01e){if(_0x1dc0a4){return _0x232467(_0x1dc0a4);}else{return _0xf487e8(_0x5ce01e);}});});}function createBucket(_0x26655a,_0x37e273,_0x1695df,_0xf4307a){return new Promise(function(_0x582dd6,_0x2968eb){var _0x1f28dd=new AWS['S3']({'accessKeyId':_0x37e273,'secretAccessKey':_0x26655a,'region':_0x1695df});_0x1f28dd['createBucket']({'Bucket':_0xf4307a},function(_0x4ae63b,_0x4fb92f){if(_0x4ae63b){return _0x2968eb(_0x4ae63b);}else{return _0x582dd6(_0x4fb92f);}});});}function uploadFile(_0x5999e7,_0x19a7d7,_0x4d2d1c,_0x2b03ef,_0xbefdce,_0x276621){return new Promise(function(_0x3b7b59,_0x3f3f0f){var _0x566692=new AWS['S3']({'accessKeyId':_0x19a7d7,'secretAccessKey':_0x5999e7,'region':_0x4d2d1c});_0x566692[_0x474e('0x70')]({'Bucket':_0x2b03ef,'Key':_0xbefdce,'Body':_0x276621},function(_0x27e40b,_0x3eefcb){if(_0x27e40b){return _0x3f3f0f(_0x27e40b);}else{return _0x3b7b59(_0x3eefcb);}});});}function startTranscribe(_0x2dd875,_0x1ad853,_0x84c8a5,_0x2da5b0,_0x5d1c75,_0x528466){return new Promise(function(_0x22c9ff,_0x5310d2){var _0x543f11=new AWS[(_0x474e('0x71'))]({'accessKeyId':_0x1ad853,'secretAccessKey':_0x2dd875,'region':_0x84c8a5});_0x543f11['startTranscriptionJob']({'TranscriptionJobName':_0x2da5b0,'LanguageCode':_0x5d1c75,'Media':{'MediaFileUri':_0x528466}},function(_0x3e7517,_0x443549){if(_0x3e7517){return _0x5310d2(_0x3e7517);}else{return _0x22c9ff(_0x443549);}});});}function transcribe(_0x286d1b,_0x54e66,_0x2a05b7,_0x18f7e7,_0x37ac91,_0x50dca0,_0xc3da4a){return new Promise(function(_0x226973,_0x42207e){var _0xf2b3a8={};logger[_0x474e('0x6a')](util[_0x474e('0x38')](_0x474e('0x72'),_0x286d1b,_0x37ac91));return uploadFile(_0x54e66,_0x2a05b7,_0x18f7e7,_0x37ac91,path['basename'](_0x50dca0),fs['readFileSync'](_0x50dca0))[_0x474e('0x2a')](function(_0x213d9f){logger['info'](util[_0x474e('0x38')](_0x474e('0x73'),_0x286d1b,_0x37ac91,_0x213d9f[_0x474e('0x74')]));_0xf2b3a8[_0x474e('0x75')]=_0x213d9f[_0x474e('0x76')];_0xf2b3a8[_0x474e('0x77')]=_0x213d9f[_0x474e('0x74')];logger[_0x474e('0x6a')](util[_0x474e('0x38')](_0x474e('0x78'),_0x286d1b));return startTranscribe(_0x54e66,_0x2a05b7,_0x18f7e7,uuidv4(),_0xc3da4a,_0x213d9f[_0x474e('0x74')]);})['then'](function(_0x1594c8){logger[_0x474e('0x6a')](util[_0x474e('0x38')](_0x474e('0x79'),_0x286d1b,_0x1594c8[_0x474e('0x7a')][_0x474e('0x7b')]));_0xf2b3a8[_0x474e('0x7c')]=_0x1594c8[_0x474e('0x7a')][_0x474e('0x7b')];_0xf2b3a8['transcribeStatus']=_0x1594c8[_0x474e('0x7a')]['TranscriptionJobStatus'];return _0x226973(_0xf2b3a8);})[_0x474e('0x4b')](function(_0xcb5baa){return _0x42207e(_0xcb5baa);});});}exports[_0x474e('0x7d')]=function(_0x25c15a,_0x148441,_0x38692b){var _0x2c08e4;var _0x139221;var _0x21ba1c;var _0x5dec29=require(_0x474e('0x52'));return db[_0x474e('0x32')]['findOne']({'where':{'id':_0x25c15a[_0x474e('0x54')]['id']}})[_0x474e('0x2a')](function(_0x1b40c5){if(_0x1b40c5){var _0x3f6803=util[_0x474e('0x38')](_0x474e('0x67'),_0x1b40c5[_0x474e('0x55')]);if(fs[_0x474e('0x56')](_0x3f6803)){cypher=!![];return _0x5dec29[_0x474e('0x57')](_0x3f6803,_0x1b40c5['value'],config[_0x474e('0x58')][_0x474e('0x59')])[_0x474e('0x2a')](function(){return _0x1b40c5;});}return _0x1b40c5;}})['then'](function(_0x494777){if(!_0x494777){throw new db[(_0x474e('0x68'))][(_0x474e('0x7e'))](_0x474e('0x7f'));}_0x139221=_0x494777;return db[_0x474e('0x80')][_0x474e('0x81')]({'where':{'id':0x1}});})[_0x474e('0x2a')](handleEntityNotFound(_0x148441,null))[_0x474e('0x2a')](function(_0x13dd36){if(_0x13dd36){_0x2c08e4=_0x13dd36;if(!_0x2c08e4[_0x474e('0x82')]||!_0x2c08e4[_0x474e('0x83')]||!_0x2c08e4[_0x474e('0x84')]||!_0x2c08e4[_0x474e('0x85')]||!_0x2c08e4['bucket']){throw new db['Sequelize']['ValidationError'](_0x474e('0x86'));}if(_0x25c15a[_0x474e('0x50')][_0x474e('0x87')]&&(!_0x2c08e4[_0x474e('0x88')]||!_0x2c08e4['sentimentAccountId']||!_0x2c08e4['sentimentRegion']||!_0x2c08e4['language']||!_0x2c08e4[_0x474e('0x75')])){throw new db[(_0x474e('0x68'))]['ValidationError'](_0x474e('0x89'));}return db[_0x474e('0x8a')]['findOne']({'where':{'id':_0x2c08e4[_0x474e('0x83')]}});}})[_0x474e('0x2a')](function(_0x54126f){if(!_0x54126f){throw new db[(_0x474e('0x68'))][(_0x474e('0x7e'))](_0x474e('0x8b'));}if(!_0x54126f['data1']||!_0x54126f[_0x474e('0x8c')]){throw new db[(_0x474e('0x68'))]['ValidationError'](_0x474e('0x8d'));}_0x21ba1c=_0x54126f;return getBucketslist(_0x21ba1c[_0x474e('0x8e')],_0x21ba1c['data2'],_0x2c08e4['transcribeRegion']);})['then'](function(_0x56f5d0){if(_0x56f5d0&&_0x56f5d0[_0x474e('0x8f')]){var _0x2b0fa8=_[_0x474e('0x66')](_0x56f5d0[_0x474e('0x8f')],function(_0x3abb33){return _0x3abb33[_0x474e('0x90')]===_0x2c08e4[_0x474e('0x75')];});if(!_0x2b0fa8){logger[_0x474e('0x6a')](util[_0x474e('0x38')](_0x474e('0x91'),_0x25c15a[_0x474e('0x54')]['id'],_0x2c08e4[_0x474e('0x75')]));return createBucket(_0x21ba1c[_0x474e('0x8e')],_0x21ba1c['data2'],_0x2c08e4[_0x474e('0x84')],_0x2c08e4['bucket']);}logger[_0x474e('0x6a')](util[_0x474e('0x38')](_0x474e('0x92'),_0x25c15a[_0x474e('0x54')]['id'],_0x2c08e4[_0x474e('0x75')]));return;}})[_0x474e('0x2a')](function(_0xada886){if(_0x139221[_0x474e('0x93')]===_0x474e('0x94')){return transcribe(_0x25c15a[_0x474e('0x54')]['id'],_0x21ba1c[_0x474e('0x8e')],_0x21ba1c['data2'],_0x2c08e4[_0x474e('0x84')],_0x2c08e4[_0x474e('0x75')],_0x139221[_0x474e('0x55')],_0x2c08e4['language']);}else{logger[_0x474e('0x6a')](util[_0x474e('0x38')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x25c15a[_0x474e('0x54')]['id']));return{'transcribeStatus':_0x474e('0x95')};}})['then'](function(_0x519e09){if(_0x519e09){_0x519e09[_0x474e('0x96')]=_0x25c15a['body']['runSentiment'];return _0x139221[_0x474e('0x97')](_0x519e09);}})[_0x474e('0x2a')](respondWithResult(_0x148441,null))['catch'](handleError(_0x148441,null));};function writeFile(_0xd525ba,_0x4e48eb){return new Promise(function(_0x51e587,_0x47ec3c){fs[_0x474e('0x98')](_0x4e48eb,_0xd525ba,function(_0x5600d9,_0x2ec630){if(_0x5600d9){return _0x47ec3c(_0x5600d9);}else{return _0x51e587(_0x2ec630);}});});}exports[_0x474e('0x99')]=function(_0x725a93,_0x3b3eda,_0x31f883){return db[_0x474e('0x32')][_0x474e('0x81')]({'where':{'id':_0x725a93[_0x474e('0x54')]['id']}})['then'](handleEntityNotFound(_0x3b3eda))[_0x474e('0x2a')](function(_0x1e29ef){if(_0x1e29ef&&_0x1e29ef[_0x474e('0x9a')]){var _0x210013=_0x1e29ef[_0x474e('0x9a')];var _0x29e13f=config[_0x474e('0x9b')]+_0x474e('0x9c')+_0x1e29ef['id']+_0x474e('0x9d');if(fs[_0x474e('0x56')](_0x29e13f)){return _0x29e13f;}return writeFile(_0x210013,_0x29e13f)['then'](function(){return _0x29e13f;});}else{throw new db[(_0x474e('0x68'))][(_0x474e('0x7e'))]('Transcript\x20not\x20available');}})[_0x474e('0x2a')](function(_0x4000f1){return _0x3b3eda[_0x474e('0x5c')](_0x4000f1);})[_0x474e('0x4b')](handleError(_0x3b3eda));};
\ No newline at end of file
index 8344fd7..d36b5ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ccb=['rimraf','../../config/environment','./voiceRecording.attributes','exports','define','VoiceRecording','voice_recordings','util','api','moment','request-promise','path'];(function(_0x37995c,_0x54a637){var _0x303853=function(_0x3e691c){while(--_0x3e691c){_0x37995c['push'](_0x37995c['shift']());}};_0x303853(++_0x54a637);}(_0x3ccb,0xd3));var _0xb3cc=function(_0x50b850,_0x797ed2){_0x50b850=_0x50b850-0x0;var _0x348619=_0x3ccb[_0x50b850];return _0x348619;};'use strict';var _=require('lodash');var util=require(_0xb3cc('0x0'));var logger=require('../../config/logger')(_0xb3cc('0x1'));var moment=require(_0xb3cc('0x2'));var BPromise=require('bluebird');var rp=require(_0xb3cc('0x3'));var fs=require('fs');var path=require(_0xb3cc('0x4'));var rimraf=require(_0xb3cc('0x5'));var config=require(_0xb3cc('0x6'));var attributes=require(_0xb3cc('0x7'));module[_0xb3cc('0x8')]=function(_0x515f86,_0x783d78){return _0x515f86[_0xb3cc('0x9')](_0xb3cc('0xa'),attributes,{'tableName':_0xb3cc('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x46cb=['voice_recordings','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./voiceRecording.attributes','exports','define'];(function(_0x3c596b,_0x2e289d){var _0x5e1287=function(_0x52eea1){while(--_0x52eea1){_0x3c596b['push'](_0x3c596b['shift']());}};_0x5e1287(++_0x2e289d);}(_0x46cb,0x84));var _0xb46c=function(_0x12d2d7,_0x253ea8){_0x12d2d7=_0x12d2d7-0x0;var _0x1defcb=_0x46cb[_0x12d2d7];return _0x1defcb;};'use strict';var _=require(_0xb46c('0x0'));var util=require(_0xb46c('0x1'));var logger=require(_0xb46c('0x2'))(_0xb46c('0x3'));var moment=require('moment');var BPromise=require(_0xb46c('0x4'));var rp=require(_0xb46c('0x5'));var fs=require('fs');var path=require(_0xb46c('0x6'));var rimraf=require(_0xb46c('0x7'));var config=require('../../config/environment');var attributes=require(_0xb46c('0x8'));module[_0xb46c('0x9')]=function(_0x3a2fa2,_0x53bb7c){return _0x3a2fa2[_0xb46c('0xa')]('VoiceRecording',attributes,{'tableName':_0xb46c('0xb'),'paranoid':![],'indexes':[{'name':_0xb46c('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 36b91f0..b50e05c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2272=['client','http','request','then','info','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceRecording,\x20%s,\x20%s','message','result','catch','UpdateVoiceRecording','VoiceRecording','update','body','options','raw','where','attributes','limit','CreateVoiceRecording','Setting','findOne','callRecordingEncryption','format','%s.cypher','encryptFile','secrets','recording','unlink','value','CreateVoiceRecording\x20file\x20encrypted','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise'];(function(_0x56e6c6,_0x4486ce){var _0x21547e=function(_0x5f0730){while(--_0x5f0730){_0x56e6c6['push'](_0x56e6c6['shift']());}};_0x21547e(++_0x4486ce);}(_0x2272,0xd8));var _0x2227=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x2272[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x2227('0x0'));var util=require(_0x2227('0x1'));var moment=require(_0x2227('0x2'));var BPromise=require(_0x2227('0x3'));var rs=require(_0x2227('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2227('0x5'))['db'];var utils=require(_0x2227('0x6'));var logger=require(_0x2227('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x2227('0x8'));var client=jayson[_0x2227('0x9')][_0x2227('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2591db,_0xaec623,_0x1413d2){return new BPromise(function(_0x41fc3f,_0x34bdd0){return client[_0x2227('0xb')](_0x2591db,_0x1413d2)[_0x2227('0xc')](function(_0x496bbd){logger[_0x2227('0xd')]('VoiceRecording,\x20%s,\x20%s',_0xaec623,_0x2227('0xe'));logger[_0x2227('0xf')](_0x2227('0x10'),_0xaec623,_0x2227('0xe'),JSON[_0x2227('0x11')](_0x496bbd));if(_0x496bbd['error']){if(_0x496bbd[_0x2227('0x12')][_0x2227('0x13')]===0x1f4){logger[_0x2227('0x12')](_0x2227('0x14'),_0xaec623,_0x496bbd[_0x2227('0x12')][_0x2227('0x15')]);return _0x34bdd0(_0x496bbd['error']['message']);}logger['error'](_0x2227('0x14'),_0xaec623,_0x496bbd['error'][_0x2227('0x15')]);return _0x41fc3f(_0x496bbd[_0x2227('0x12')]['message']);}else{logger[_0x2227('0xd')](_0x2227('0x14'),_0xaec623,_0x2227('0xe'));_0x41fc3f(_0x496bbd[_0x2227('0x16')][_0x2227('0x15')]);}})[_0x2227('0x17')](function(_0x508e92){logger[_0x2227('0x12')](_0x2227('0x14'),_0xaec623,_0x508e92);_0x34bdd0(_0x508e92);});});}exports[_0x2227('0x18')]=function(_0x531f75){var _0x11bf80=this;return new Promise(function(_0x620012,_0x65e3b6){return db[_0x2227('0x19')][_0x2227('0x1a')](_0x531f75[_0x2227('0x1b')],{'raw':_0x531f75[_0x2227('0x1c')]?_0x531f75['options'][_0x2227('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x531f75['options']?_0x531f75[_0x2227('0x1c')][_0x2227('0x1e')]||null:null,'attributes':_0x531f75[_0x2227('0x1c')]?_0x531f75[_0x2227('0x1c')][_0x2227('0x1f')]||null:null,'limit':_0x531f75[_0x2227('0x1c')]?_0x531f75[_0x2227('0x1c')][_0x2227('0x20')]||null:null})[_0x2227('0xc')](function(_0x34c090){logger[_0x2227('0xd')]('UpdateVoiceRecording',_0x531f75);logger[_0x2227('0xf')](_0x2227('0x18'),_0x531f75,JSON['stringify'](_0x34c090));_0x620012(_0x34c090);})[_0x2227('0x17')](function(_0xbfdce1){logger['error']('UpdateVoiceRecording',_0xbfdce1[_0x2227('0x15')],_0x531f75);_0x65e3b6(_0x11bf80[_0x2227('0x12')](0x1f4,_0xbfdce1[_0x2227('0x15')]));});});};exports[_0x2227('0x21')]=function(_0x5be889){var _0x191a3e=this;return new Promise(function(_0x301304,_0x2d8ea0){var _0x1957ee=require('../../components/encryptor');var _0x204def;return db[_0x2227('0x22')][_0x2227('0x23')]({'attributes':['id',_0x2227('0x24')],'where':{'id':0x1},'raw':!![]})[_0x2227('0xc')](function(_0x4789eb){_0x204def=_0x4789eb;return db['VoiceRecording']['create'](_0x5be889[_0x2227('0x1b')]);})['then'](function(_0x2ba581){if(_0x204def[_0x2227('0x24')]&&fs['existsSync'](_0x2ba581['value'])){var _0x1f1ba7=util[_0x2227('0x25')](_0x2227('0x26'),_0x2ba581['value']);return _0x1957ee[_0x2227('0x27')](_0x2ba581['value'],_0x1f1ba7,config[_0x2227('0x28')][_0x2227('0x29')])[_0x2227('0xc')](function(){fs[_0x2227('0x2a')](_0x2ba581[_0x2227('0x2b')]);logger[_0x2227('0xd')](_0x2227('0x2c'));return _0x2ba581;});}return _0x2ba581;})[_0x2227('0xc')](function(_0xd38f59){logger[_0x2227('0xd')](_0x2227('0x21'),_0x5be889);logger['debug'](_0x2227('0x21'),_0x5be889,JSON[_0x2227('0x11')](_0xd38f59));_0x301304(_0xd38f59);})[_0x2227('0x17')](function(_0x6cd5d7){logger['error'](_0x2227('0x21'),_0x6cd5d7[_0x2227('0x15')],_0x5be889);_0x2d8ea0(_0x191a3e[_0x2227('0x12')](0x1f4,_0x6cd5d7[_0x2227('0x15')]));});});};
\ No newline at end of file
+var _0x323f=['UpdateVoiceRecording','VoiceRecording','body','options','raw','where','attributes','limit','catch','CreateVoiceRecording','Setting','findOne','callRecordingEncryption','create','existsSync','value','%s.cypher','encryptFile','secrets','unlink','CreateVoiceRecording\x20file\x20encrypted','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x5db011,_0x599799){var _0x285c3f=function(_0x2b3792){while(--_0x2b3792){_0x5db011['push'](_0x5db011['shift']());}};_0x285c3f(++_0x599799);}(_0x323f,0x1ee));var _0xf323=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x323f[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0xf323('0x0'));var moment=require('moment');var BPromise=require(_0xf323('0x1'));var rs=require(_0xf323('0x2'));var fs=require('fs');var Redis=require(_0xf323('0x3'));var db=require(_0xf323('0x4'))['db'];var utils=require(_0xf323('0x5'));var logger=require(_0xf323('0x6'))(_0xf323('0x7'));var config=require(_0xf323('0x8'));var jayson=require(_0xf323('0x9'));var client=jayson[_0xf323('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0xb9a667,_0x444cba,_0x1af70d){return new BPromise(function(_0x2c8271,_0x8abeac){return client[_0xf323('0xb')](_0xb9a667,_0x1af70d)[_0xf323('0xc')](function(_0x2b24a2){logger[_0xf323('0xd')](_0xf323('0xe'),_0x444cba,_0xf323('0xf'));logger[_0xf323('0x10')](_0xf323('0x11'),_0x444cba,_0xf323('0xf'),JSON[_0xf323('0x12')](_0x2b24a2));if(_0x2b24a2[_0xf323('0x13')]){if(_0x2b24a2[_0xf323('0x13')]['code']===0x1f4){logger[_0xf323('0x13')](_0xf323('0xe'),_0x444cba,_0x2b24a2[_0xf323('0x13')]['message']);return _0x8abeac(_0x2b24a2[_0xf323('0x13')][_0xf323('0x14')]);}logger[_0xf323('0x13')](_0xf323('0xe'),_0x444cba,_0x2b24a2[_0xf323('0x13')][_0xf323('0x14')]);return _0x2c8271(_0x2b24a2['error']['message']);}else{logger[_0xf323('0xd')](_0xf323('0xe'),_0x444cba,_0xf323('0xf'));_0x2c8271(_0x2b24a2[_0xf323('0x15')][_0xf323('0x14')]);}})['catch'](function(_0xd6c25){logger[_0xf323('0x13')](_0xf323('0xe'),_0x444cba,_0xd6c25);_0x8abeac(_0xd6c25);});});}exports[_0xf323('0x16')]=function(_0x49b115){var _0x2db977=this;return new Promise(function(_0x272aec,_0x1a459d){return db[_0xf323('0x17')]['update'](_0x49b115[_0xf323('0x18')],{'raw':_0x49b115[_0xf323('0x19')]?_0x49b115['options'][_0xf323('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x49b115[_0xf323('0x19')]?_0x49b115[_0xf323('0x19')][_0xf323('0x1b')]||null:null,'attributes':_0x49b115['options']?_0x49b115[_0xf323('0x19')][_0xf323('0x1c')]||null:null,'limit':_0x49b115[_0xf323('0x19')]?_0x49b115['options'][_0xf323('0x1d')]||null:null})[_0xf323('0xc')](function(_0x3e1c49){logger[_0xf323('0xd')](_0xf323('0x16'),_0x49b115);logger[_0xf323('0x10')](_0xf323('0x16'),_0x49b115,JSON[_0xf323('0x12')](_0x3e1c49));_0x272aec(_0x3e1c49);})[_0xf323('0x1e')](function(_0x47fb15){logger[_0xf323('0x13')](_0xf323('0x16'),_0x47fb15[_0xf323('0x14')],_0x49b115);_0x1a459d(_0x2db977[_0xf323('0x13')](0x1f4,_0x47fb15[_0xf323('0x14')]));});});};exports[_0xf323('0x1f')]=function(_0x4d737d){var _0x30ed93=this;return new Promise(function(_0x56ce33,_0x1570d4){var _0x3902eb=require('../../components/encryptor');var _0x46663b;return db[_0xf323('0x20')][_0xf323('0x21')]({'attributes':['id',_0xf323('0x22')],'where':{'id':0x1},'raw':!![]})[_0xf323('0xc')](function(_0x5b8b60){_0x46663b=_0x5b8b60;return db[_0xf323('0x17')][_0xf323('0x23')](_0x4d737d[_0xf323('0x18')]);})[_0xf323('0xc')](function(_0x4260f3){if(_0x46663b[_0xf323('0x22')]&&fs[_0xf323('0x24')](_0x4260f3[_0xf323('0x25')])){var _0x139adc=util['format'](_0xf323('0x26'),_0x4260f3[_0xf323('0x25')]);return _0x3902eb[_0xf323('0x27')](_0x4260f3[_0xf323('0x25')],_0x139adc,config[_0xf323('0x28')]['recording'])[_0xf323('0xc')](function(){fs[_0xf323('0x29')](_0x4260f3[_0xf323('0x25')]);logger[_0xf323('0xd')](_0xf323('0x2a'));return _0x4260f3;});}return _0x4260f3;})['then'](function(_0x33487c){logger[_0xf323('0xd')](_0xf323('0x1f'),_0x4d737d);logger[_0xf323('0x10')]('CreateVoiceRecording',_0x4d737d,JSON[_0xf323('0x12')](_0x33487c));_0x56ce33(_0x33487c);})['catch'](function(_0x372c47){logger[_0xf323('0x13')]('CreateVoiceRecording',_0x372c47[_0xf323('0x14')],_0x4d737d);_0x1570d4(_0x30ed93['error'](0x1f4,_0x372c47[_0xf323('0x14')]));});});};
\ No newline at end of file
index 71f3c42..57bb762 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f67=['path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','get','isAuthenticated','index','/describe','/:id','post','put','update','delete','destroy','exports','util'];(function(_0x4c71f0,_0x52151f){var _0x2ceb53=function(_0x882b0e){while(--_0x882b0e){_0x4c71f0['push'](_0x4c71f0['shift']());}};_0x2ceb53(++_0x52151f);}(_0x9f67,0x1c1));var _0x79f6=function(_0x44efb6,_0x4e9365){_0x44efb6=_0x44efb6-0x0;var _0x279949=_0x9f67[_0x44efb6];return _0x279949;};'use strict';var multer=require('multer');var util=require(_0x79f6('0x0'));var path=require(_0x79f6('0x1'));var timeout=require('connect-timeout');var express=require(_0x79f6('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x79f6('0x3'));var interaction=require(_0x79f6('0x4'));var config=require(_0x79f6('0x5'));var controller=require(_0x79f6('0x6'));router[_0x79f6('0x7')]('/',auth[_0x79f6('0x8')](),controller[_0x79f6('0x9')]);router[_0x79f6('0x7')](_0x79f6('0xa'),auth[_0x79f6('0x8')](),controller['describe']);router['get'](_0x79f6('0xb'),auth[_0x79f6('0x8')](),controller['show']);router[_0x79f6('0xc')]('/',auth[_0x79f6('0x8')](),controller['create']);router[_0x79f6('0xd')](_0x79f6('0xb'),auth[_0x79f6('0x8')](),controller[_0x79f6('0xe')]);router[_0x79f6('0xf')](_0x79f6('0xb'),auth[_0x79f6('0x8')](),controller[_0x79f6('0x10')]);module[_0x79f6('0x11')]=router;
\ No newline at end of file
+var _0xc013=['../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','get','isAuthenticated','index','describe','/:id','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x20820d,_0x25f330){var _0x39f43a=function(_0x4f2218){while(--_0x4f2218){_0x20820d['push'](_0x20820d['shift']());}};_0x39f43a(++_0x25f330);}(_0xc013,0x99));var _0x3c01=function(_0x5806c3,_0x5105d8){_0x5806c3=_0x5806c3-0x0;var _0x48ac77=_0xc013[_0x5806c3];return _0x48ac77;};'use strict';var multer=require(_0x3c01('0x0'));var util=require(_0x3c01('0x1'));var path=require(_0x3c01('0x2'));var timeout=require(_0x3c01('0x3'));var express=require(_0x3c01('0x4'));var router=express[_0x3c01('0x5')]();var fs_extra=require(_0x3c01('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x3c01('0x7'));var config=require(_0x3c01('0x8'));var controller=require(_0x3c01('0x9'));router[_0x3c01('0xa')]('/',auth[_0x3c01('0xb')](),controller[_0x3c01('0xc')]);router[_0x3c01('0xa')]('/describe',auth[_0x3c01('0xb')](),controller[_0x3c01('0xd')]);router[_0x3c01('0xa')](_0x3c01('0xe'),auth[_0x3c01('0xb')](),controller['show']);router['post']('/',auth[_0x3c01('0xb')](),controller[_0x3c01('0xf')]);router[_0x3c01('0x10')](_0x3c01('0xe'),auth[_0x3c01('0xb')](),controller[_0x3c01('0x11')]);router[_0x3c01('0x12')]('/:id',auth[_0x3c01('0xb')](),controller[_0x3c01('0x13')]);module['exports']=router;
\ No newline at end of file
index 861ca14..5b9e1fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4df1=['Yes','moment','exports','ENUM','blind','STRING'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x4df1,0x1f3));var _0x14df=function(_0x6c7d7b,_0x2234b7){_0x6c7d7b=_0x6c7d7b-0x0;var _0x4e4580=_0x4df1[_0x6c7d7b];return _0x4e4580;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x14df('0x0'));module[_0x14df('0x1')]={'type':{'type':Sequelize[_0x14df('0x2')](_0x14df('0x3'),'attended')},'result':{'type':Sequelize[_0x14df('0x4')]},'transfererchannel':{'type':Sequelize[_0x14df('0x4')]},'transferercalleridnum':{'type':Sequelize[_0x14df('0x4')]},'transferercalleridname':{'type':Sequelize[_0x14df('0x4')]},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize['STRING']},'transfereraccountcode':{'type':Sequelize[_0x14df('0x4')]},'transferercontext':{'type':Sequelize[_0x14df('0x4')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0x14df('0x4')]},'transfereechannel':{'type':Sequelize[_0x14df('0x4')]},'transfereecalleridnum':{'type':Sequelize[_0x14df('0x4')]},'transfereecalleridname':{'type':Sequelize[_0x14df('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x14df('0x4')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0x14df('0x4')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0x14df('0x4')]},'transfereelinkedid':{'type':Sequelize[_0x14df('0x4')]},'isexternal':{'type':Sequelize['ENUM'](_0x14df('0x5'),'No')},'context':{'type':Sequelize[_0x14df('0x4')]},'extension':{'type':Sequelize[_0x14df('0x4')]}};
\ No newline at end of file
+var _0xd084=['Yes','sequelize','moment','exports','ENUM','attended','STRING'];(function(_0x34e4c9,_0x3693df){var _0xfe95d6=function(_0x1c6836){while(--_0x1c6836){_0x34e4c9['push'](_0x34e4c9['shift']());}};_0xfe95d6(++_0x3693df);}(_0xd084,0x19e));var _0x4d08=function(_0x4a694e,_0x3e4264){_0x4a694e=_0x4a694e-0x0;var _0x23b0ab=_0xd084[_0x4a694e];return _0x23b0ab;};'use strict';var Sequelize=require(_0x4d08('0x0'));var moment=require(_0x4d08('0x1'));module[_0x4d08('0x2')]={'type':{'type':Sequelize[_0x4d08('0x3')]('blind',_0x4d08('0x4'))},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize[_0x4d08('0x5')]},'transferercalleridnum':{'type':Sequelize[_0x4d08('0x5')]},'transferercalleridname':{'type':Sequelize[_0x4d08('0x5')]},'transfererconnectedlinenum':{'type':Sequelize[_0x4d08('0x5')]},'transfererconnectedlinename':{'type':Sequelize[_0x4d08('0x5')]},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize[_0x4d08('0x5')]},'transfererexten':{'type':Sequelize[_0x4d08('0x5')]},'transfererlinkedid':{'type':Sequelize[_0x4d08('0x5')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0x4d08('0x5')]},'transfereecalleridname':{'type':Sequelize[_0x4d08('0x5')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x4d08('0x5')]},'transfereeconnectedlinename':{'type':Sequelize[_0x4d08('0x5')]},'transfereeaccountcode':{'type':Sequelize[_0x4d08('0x5')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0x4d08('0x5')]},'transfereelinkedid':{'type':Sequelize[_0x4d08('0x5')]},'isexternal':{'type':Sequelize[_0x4d08('0x3')](_0x4d08('0x6'),'No')},'context':{'type':Sequelize[_0x4d08('0x5')]},'extension':{'type':Sequelize[_0x4d08('0x5')]}};
\ No newline at end of file
index 6bc0adc..551774c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7be1=['map','VoiceTransferReport','rawAttributes','fieldName','type','model','query','keys','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filters','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','reject','save','update','then','destroy','error','stack','name','send'];(function(_0x1a3232,_0xb4551e){var _0x4b7463=function(_0x1ab0ab){while(--_0x1ab0ab){_0x1a3232['push'](_0x1a3232['shift']());}};_0x4b7463(++_0xb4551e);}(_0x7be1,0x192));var _0x17be=function(_0x4295bc,_0x55b581){_0x4295bc=_0x4295bc-0x0;var _0x2f0298=_0x7be1[_0x4295bc];return _0x2f0298;};'use strict';var emlformat=require(_0x17be('0x0'));var rimraf=require(_0x17be('0x1'));var zipdir=require(_0x17be('0x2'));var jsonpatch=require(_0x17be('0x3'));var rp=require('request-promise');var moment=require(_0x17be('0x4'));var BPromise=require(_0x17be('0x5'));var Mustache=require(_0x17be('0x6'));var util=require(_0x17be('0x7'));var path=require(_0x17be('0x8'));var sox=require(_0x17be('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x17be('0xa'));var _=require(_0x17be('0xb'));var squel=require('squel');var crypto=require(_0x17be('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x17be('0xd'));var toCsv=require(_0x17be('0xe'));var querystring=require(_0x17be('0xf'));var Papa=require('papaparse');var Redis=require(_0x17be('0x10'));var authService=require(_0x17be('0x11'));var qs=require(_0x17be('0x12'));var as=require(_0x17be('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x17be('0x14'))(_0x17be('0x15'));var utils=require('../../config/utils');var config=require(_0x17be('0x16'));var licenseUtil=require(_0x17be('0x17'));var db=require(_0x17be('0x18'))['db'];function respondWithStatusCode(_0x475eca,_0xd0ccc7){_0xd0ccc7=_0xd0ccc7||0xcc;return function(_0x497a21){if(_0x497a21){return _0x475eca[_0x17be('0x19')](_0xd0ccc7);}return _0x475eca[_0x17be('0x1a')](_0xd0ccc7)[_0x17be('0x1b')]();};}function respondWithResult(_0xc6ad2d,_0x114a93){_0x114a93=_0x114a93||0xc8;return function(_0x51c580){if(_0x51c580){return _0xc6ad2d['status'](_0x114a93)['json'](_0x51c580);}};}function respondWithFilteredResult(_0xdc398b,_0x407711){return function(_0x5337c8){if(_0x5337c8){var _0x5b5c95=typeof _0x407711[_0x17be('0x1c')]===_0x17be('0x1d')&&typeof _0x407711[_0x17be('0x1e')]===_0x17be('0x1d');var _0x33a717=_0x5337c8[_0x17be('0x1f')];var _0x4fb8a6=_0x5b5c95?0x0:_0x407711[_0x17be('0x1c')];var _0x446588=_0x5b5c95?_0x5337c8[_0x17be('0x1f')]:_0x407711[_0x17be('0x1c')]+_0x407711[_0x17be('0x1e')];var _0x2b54c3;if(_0x446588>=_0x33a717){_0x446588=_0x33a717;_0x2b54c3=0xc8;}else{_0x2b54c3=0xce;}_0xdc398b[_0x17be('0x1a')](_0x2b54c3);return _0xdc398b[_0x17be('0x20')]('Content-Range',_0x4fb8a6+'-'+_0x446588+'/'+_0x33a717)['json'](_0x5337c8);}return null;};}function patchUpdates(_0x3cc005){return function(_0x18bc58){try{jsonpatch['apply'](_0x18bc58,_0x3cc005,!![]);}catch(_0x4c7830){return BPromise[_0x17be('0x21')](_0x4c7830);}return _0x18bc58[_0x17be('0x22')]();};}function saveUpdates(_0x4f36af,_0x174a6c){return function(_0x26605b){if(_0x26605b){return _0x26605b[_0x17be('0x23')](_0x4f36af)[_0x17be('0x24')](function(_0x1b733a){return _0x1b733a;});}return null;};}function removeEntity(_0x21c261,_0x1b129b){return function(_0x16ae0e){if(_0x16ae0e){return _0x16ae0e[_0x17be('0x25')]()[_0x17be('0x24')](function(){_0x21c261[_0x17be('0x1a')](0xcc)[_0x17be('0x1b')]();});}};}function handleEntityNotFound(_0x42748d,_0x472f20){return function(_0x218cae){if(!_0x218cae){_0x42748d['sendStatus'](0x194);}return _0x218cae;};}function handleError(_0x3837c7,_0x53a804){_0x53a804=_0x53a804||0x1f4;return function(_0x23534e){logger[_0x17be('0x26')](_0x23534e[_0x17be('0x27')]);if(_0x23534e[_0x17be('0x28')]){delete _0x23534e[_0x17be('0x28')];}_0x3837c7[_0x17be('0x1a')](_0x53a804)[_0x17be('0x29')](_0x23534e);};}exports['index']=function(_0x597e59,_0x5da35e){var _0x5b121a={},_0x23debc={},_0x144f9e={'count':0x0,'rows':[]};var _0x332c0f=_[_0x17be('0x2a')](db[_0x17be('0x2b')][_0x17be('0x2c')],function(_0x1701d1){return{'name':_0x1701d1[_0x17be('0x2d')],'type':_0x1701d1[_0x17be('0x2e')]['key']};});_0x23debc[_0x17be('0x2f')]=_[_0x17be('0x2a')](_0x332c0f,_0x17be('0x28'));_0x23debc[_0x17be('0x30')]=_[_0x17be('0x31')](_0x597e59[_0x17be('0x30')]);_0x23debc['filters']=_['intersection'](_0x23debc[_0x17be('0x2f')],_0x23debc[_0x17be('0x30')]);_0x5b121a[_0x17be('0x32')]=_[_0x17be('0x33')](_0x23debc[_0x17be('0x2f')],qs[_0x17be('0x34')](_0x597e59['query'][_0x17be('0x34')]));_0x5b121a['attributes']=_0x5b121a['attributes'][_0x17be('0x35')]?_0x5b121a['attributes']:_0x23debc[_0x17be('0x2f')];if(!_0x597e59[_0x17be('0x30')]['hasOwnProperty'](_0x17be('0x36'))){_0x5b121a[_0x17be('0x1e')]=qs['limit'](_0x597e59[_0x17be('0x30')]['limit']);_0x5b121a[_0x17be('0x1c')]=qs[_0x17be('0x1c')](_0x597e59[_0x17be('0x30')][_0x17be('0x1c')]);}_0x5b121a[_0x17be('0x37')]=qs[_0x17be('0x38')](_0x597e59[_0x17be('0x30')]['sort']);_0x5b121a[_0x17be('0x39')]=qs['filters'](_[_0x17be('0x3a')](_0x597e59[_0x17be('0x30')],_0x23debc[_0x17be('0x3b')]),_0x332c0f);if(_0x597e59[_0x17be('0x30')]['filter']){_0x5b121a[_0x17be('0x39')]=_['merge'](_0x5b121a[_0x17be('0x39')],{'$or':_['map'](_0x332c0f,function(_0x23a1ee){if(_0x23a1ee[_0x17be('0x2e')]!==_0x17be('0x3c')){var _0x53e4f9={};_0x53e4f9[_0x23a1ee[_0x17be('0x28')]]={'$like':'%'+_0x597e59[_0x17be('0x30')]['filter']+'%'};return _0x53e4f9;}})});}_0x5b121a=_[_0x17be('0x3d')]({},_0x5b121a,_0x597e59[_0x17be('0x3e')]);var _0x4c523f={'where':_0x5b121a[_0x17be('0x39')]};return db[_0x17be('0x2b')]['count'](_0x4c523f)[_0x17be('0x24')](function(_0x317f80){_0x144f9e[_0x17be('0x1f')]=_0x317f80;if(_0x597e59[_0x17be('0x30')][_0x17be('0x3f')]){_0x5b121a['include']=[{'all':!![]}];}return db[_0x17be('0x2b')][_0x17be('0x40')](_0x5b121a);})[_0x17be('0x24')](function(_0x1a943c){_0x144f9e[_0x17be('0x41')]=_0x1a943c;return _0x144f9e;})[_0x17be('0x24')](respondWithFilteredResult(_0x5da35e,_0x5b121a))[_0x17be('0x42')](handleError(_0x5da35e,null));};exports[_0x17be('0x43')]=function(_0x14c8c9,_0xddba06){var _0x5cf614={'raw':!![],'where':{'id':_0x14c8c9[_0x17be('0x44')]['id']}},_0x139bfd={};_0x139bfd[_0x17be('0x2f')]=_[_0x17be('0x31')](db[_0x17be('0x2b')]['rawAttributes']);_0x139bfd[_0x17be('0x30')]=_[_0x17be('0x31')](_0x14c8c9[_0x17be('0x30')]);_0x139bfd[_0x17be('0x3b')]=_[_0x17be('0x33')](_0x139bfd[_0x17be('0x2f')],_0x139bfd[_0x17be('0x30')]);_0x5cf614['attributes']=_[_0x17be('0x33')](_0x139bfd[_0x17be('0x2f')],qs[_0x17be('0x34')](_0x14c8c9[_0x17be('0x30')]['fields']));_0x5cf614[_0x17be('0x32')]=_0x5cf614[_0x17be('0x32')][_0x17be('0x35')]?_0x5cf614[_0x17be('0x32')]:_0x139bfd[_0x17be('0x2f')];if(_0x14c8c9[_0x17be('0x30')]['includeAll']){_0x5cf614[_0x17be('0x45')]=[{'all':!![]}];}_0x5cf614=_[_0x17be('0x3d')]({},_0x5cf614,_0x14c8c9[_0x17be('0x3e')]);return db[_0x17be('0x2b')][_0x17be('0x46')](_0x5cf614)[_0x17be('0x24')](handleEntityNotFound(_0xddba06,null))['then'](respondWithResult(_0xddba06,null))[_0x17be('0x42')](handleError(_0xddba06,null));};exports[_0x17be('0x47')]=function(_0x5edf0b,_0x1b344a){return db[_0x17be('0x2b')][_0x17be('0x47')](_0x5edf0b[_0x17be('0x48')],{})[_0x17be('0x24')](respondWithResult(_0x1b344a,0xc9))[_0x17be('0x42')](handleError(_0x1b344a,null));};exports[_0x17be('0x23')]=function(_0x186ad0,_0x4106c0){if(_0x186ad0['body']['id']){delete _0x186ad0[_0x17be('0x48')]['id'];}return db[_0x17be('0x2b')][_0x17be('0x46')]({'where':{'id':_0x186ad0[_0x17be('0x44')]['id']}})[_0x17be('0x24')](handleEntityNotFound(_0x4106c0,null))['then'](saveUpdates(_0x186ad0[_0x17be('0x48')],null))['then'](respondWithResult(_0x4106c0,null))[_0x17be('0x42')](handleError(_0x4106c0,null));};exports['destroy']=function(_0x24dbab,_0x4ec3f8){return db[_0x17be('0x2b')][_0x17be('0x46')]({'where':{'id':_0x24dbab['params']['id']}})[_0x17be('0x24')](handleEntityNotFound(_0x4ec3f8,null))['then'](removeEntity(_0x4ec3f8,null))['catch'](handleError(_0x4ec3f8,null));};exports['describe']=function(_0x41279d,_0x1b15ea){return db[_0x17be('0x2b')][_0x17be('0x49')]()[_0x17be('0x24')](respondWithResult(_0x1b15ea,null))['catch'](handleError(_0x1b15ea,null));};
\ No newline at end of file
+var _0xfad2=['create','body','describe','eml-format','rimraf','moment','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','end','error','name','send','index','VoiceTransferReport','rawAttributes','fieldName','type','key','keys','intersection','model','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge','map','options','includeAll','include','findAll','catch','show','params','find'];(function(_0x5d0609,_0x127562){var _0xaa3fd1=function(_0x47f457){while(--_0x47f457){_0x5d0609['push'](_0x5d0609['shift']());}};_0xaa3fd1(++_0x127562);}(_0xfad2,0x175));var _0x2fad=function(_0x16a085,_0x11bdc0){_0x16a085=_0x16a085-0x0;var _0x3ea422=_0xfad2[_0x16a085];return _0x3ea422;};'use strict';var emlformat=require(_0x2fad('0x0'));var rimraf=require(_0x2fad('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x2fad('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x2fad('0x3'));var util=require(_0x2fad('0x4'));var path=require(_0x2fad('0x5'));var sox=require('sox');var csv=require(_0x2fad('0x6'));var ejs=require(_0x2fad('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2fad('0x8'));var squel=require(_0x2fad('0x9'));var crypto=require(_0x2fad('0xa'));var jsforce=require(_0x2fad('0xb'));var deskjs=require(_0x2fad('0xc'));var toCsv=require(_0x2fad('0x6'));var querystring=require(_0x2fad('0xd'));var Papa=require(_0x2fad('0xe'));var Redis=require(_0x2fad('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x2fad('0x10'));var as=require(_0x2fad('0x11'));var hardwareService=require(_0x2fad('0x12'));var logger=require(_0x2fad('0x13'))(_0x2fad('0x14'));var utils=require('../../config/utils');var config=require(_0x2fad('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x2fad('0x16'))['db'];function respondWithStatusCode(_0x488f19,_0x5659b5){_0x5659b5=_0x5659b5||0xcc;return function(_0x138bd8){if(_0x138bd8){return _0x488f19[_0x2fad('0x17')](_0x5659b5);}return _0x488f19[_0x2fad('0x18')](_0x5659b5)['end']();};}function respondWithResult(_0x4a56bd,_0x45dd25){_0x45dd25=_0x45dd25||0xc8;return function(_0xd81e11){if(_0xd81e11){return _0x4a56bd[_0x2fad('0x18')](_0x45dd25)[_0x2fad('0x19')](_0xd81e11);}};}function respondWithFilteredResult(_0x1def35,_0x2d4508){return function(_0x4ec6cf){if(_0x4ec6cf){var _0x20b71a=typeof _0x2d4508[_0x2fad('0x1a')]===_0x2fad('0x1b')&&typeof _0x2d4508[_0x2fad('0x1c')]==='undefined';var _0x1e84f9=_0x4ec6cf[_0x2fad('0x1d')];var _0x1c9a15=_0x20b71a?0x0:_0x2d4508[_0x2fad('0x1a')];var _0x49ba38=_0x20b71a?_0x4ec6cf['count']:_0x2d4508[_0x2fad('0x1a')]+_0x2d4508[_0x2fad('0x1c')];var _0x12122e;if(_0x49ba38>=_0x1e84f9){_0x49ba38=_0x1e84f9;_0x12122e=0xc8;}else{_0x12122e=0xce;}_0x1def35[_0x2fad('0x18')](_0x12122e);return _0x1def35[_0x2fad('0x1e')](_0x2fad('0x1f'),_0x1c9a15+'-'+_0x49ba38+'/'+_0x1e84f9)[_0x2fad('0x19')](_0x4ec6cf);}return null;};}function patchUpdates(_0x5a0a8b){return function(_0x4550cc){try{jsonpatch['apply'](_0x4550cc,_0x5a0a8b,!![]);}catch(_0x272a1e){return BPromise[_0x2fad('0x20')](_0x272a1e);}return _0x4550cc[_0x2fad('0x21')]();};}function saveUpdates(_0x5463fd,_0x4190c9){return function(_0x2ae48a){if(_0x2ae48a){return _0x2ae48a[_0x2fad('0x22')](_0x5463fd)[_0x2fad('0x23')](function(_0x3e1266){return _0x3e1266;});}return null;};}function removeEntity(_0x224f25,_0xa0ad30){return function(_0x4cdf3e){if(_0x4cdf3e){return _0x4cdf3e[_0x2fad('0x24')]()[_0x2fad('0x23')](function(){_0x224f25[_0x2fad('0x18')](0xcc)[_0x2fad('0x25')]();});}};}function handleEntityNotFound(_0xe60361,_0x4d2669){return function(_0x2845a6){if(!_0x2845a6){_0xe60361['sendStatus'](0x194);}return _0x2845a6;};}function handleError(_0x30e08d,_0x3e6d75){_0x3e6d75=_0x3e6d75||0x1f4;return function(_0x3428cd){logger[_0x2fad('0x26')](_0x3428cd['stack']);if(_0x3428cd[_0x2fad('0x27')]){delete _0x3428cd[_0x2fad('0x27')];}_0x30e08d[_0x2fad('0x18')](_0x3e6d75)[_0x2fad('0x28')](_0x3428cd);};}exports[_0x2fad('0x29')]=function(_0x3581ed,_0x412486){var _0x1a4649={},_0x4ed52e={},_0x2b8a71={'count':0x0,'rows':[]};var _0x2e4f32=_['map'](db[_0x2fad('0x2a')][_0x2fad('0x2b')],function(_0xd801e6){return{'name':_0xd801e6[_0x2fad('0x2c')],'type':_0xd801e6[_0x2fad('0x2d')][_0x2fad('0x2e')]};});_0x4ed52e['model']=_['map'](_0x2e4f32,_0x2fad('0x27'));_0x4ed52e['query']=_[_0x2fad('0x2f')](_0x3581ed['query']);_0x4ed52e['filters']=_[_0x2fad('0x30')](_0x4ed52e[_0x2fad('0x31')],_0x4ed52e[_0x2fad('0x32')]);_0x1a4649[_0x2fad('0x33')]=_[_0x2fad('0x30')](_0x4ed52e[_0x2fad('0x31')],qs['fields'](_0x3581ed[_0x2fad('0x32')][_0x2fad('0x34')]));_0x1a4649[_0x2fad('0x33')]=_0x1a4649[_0x2fad('0x33')][_0x2fad('0x35')]?_0x1a4649[_0x2fad('0x33')]:_0x4ed52e['model'];if(!_0x3581ed[_0x2fad('0x32')][_0x2fad('0x36')](_0x2fad('0x37'))){_0x1a4649['limit']=qs['limit'](_0x3581ed[_0x2fad('0x32')]['limit']);_0x1a4649[_0x2fad('0x1a')]=qs[_0x2fad('0x1a')](_0x3581ed['query'][_0x2fad('0x1a')]);}_0x1a4649['order']=qs['sort'](_0x3581ed[_0x2fad('0x32')][_0x2fad('0x38')]);_0x1a4649[_0x2fad('0x39')]=qs['filters'](_[_0x2fad('0x3a')](_0x3581ed[_0x2fad('0x32')],_0x4ed52e[_0x2fad('0x3b')]),_0x2e4f32);if(_0x3581ed[_0x2fad('0x32')][_0x2fad('0x3c')]){_0x1a4649['where']=_[_0x2fad('0x3d')](_0x1a4649[_0x2fad('0x39')],{'$or':_[_0x2fad('0x3e')](_0x2e4f32,function(_0x2365b0){if(_0x2365b0[_0x2fad('0x2d')]!=='VIRTUAL'){var _0x56c90f={};_0x56c90f[_0x2365b0['name']]={'$like':'%'+_0x3581ed[_0x2fad('0x32')][_0x2fad('0x3c')]+'%'};return _0x56c90f;}})});}_0x1a4649=_[_0x2fad('0x3d')]({},_0x1a4649,_0x3581ed[_0x2fad('0x3f')]);var _0x1a8efc={'where':_0x1a4649[_0x2fad('0x39')]};return db[_0x2fad('0x2a')][_0x2fad('0x1d')](_0x1a8efc)[_0x2fad('0x23')](function(_0x2d0935){_0x2b8a71['count']=_0x2d0935;if(_0x3581ed[_0x2fad('0x32')][_0x2fad('0x40')]){_0x1a4649[_0x2fad('0x41')]=[{'all':!![]}];}return db[_0x2fad('0x2a')][_0x2fad('0x42')](_0x1a4649);})[_0x2fad('0x23')](function(_0x18c4c9){_0x2b8a71['rows']=_0x18c4c9;return _0x2b8a71;})[_0x2fad('0x23')](respondWithFilteredResult(_0x412486,_0x1a4649))[_0x2fad('0x43')](handleError(_0x412486,null));};exports[_0x2fad('0x44')]=function(_0x1f74b2,_0x17b1b2){var _0x448363={'raw':!![],'where':{'id':_0x1f74b2[_0x2fad('0x45')]['id']}},_0x16264d={};_0x16264d[_0x2fad('0x31')]=_[_0x2fad('0x2f')](db['VoiceTransferReport']['rawAttributes']);_0x16264d[_0x2fad('0x32')]=_[_0x2fad('0x2f')](_0x1f74b2['query']);_0x16264d[_0x2fad('0x3b')]=_['intersection'](_0x16264d[_0x2fad('0x31')],_0x16264d[_0x2fad('0x32')]);_0x448363[_0x2fad('0x33')]=_['intersection'](_0x16264d[_0x2fad('0x31')],qs[_0x2fad('0x34')](_0x1f74b2['query'][_0x2fad('0x34')]));_0x448363[_0x2fad('0x33')]=_0x448363[_0x2fad('0x33')][_0x2fad('0x35')]?_0x448363[_0x2fad('0x33')]:_0x16264d['model'];if(_0x1f74b2[_0x2fad('0x32')]['includeAll']){_0x448363[_0x2fad('0x41')]=[{'all':!![]}];}_0x448363=_[_0x2fad('0x3d')]({},_0x448363,_0x1f74b2[_0x2fad('0x3f')]);return db[_0x2fad('0x2a')][_0x2fad('0x46')](_0x448363)[_0x2fad('0x23')](handleEntityNotFound(_0x17b1b2,null))['then'](respondWithResult(_0x17b1b2,null))['catch'](handleError(_0x17b1b2,null));};exports[_0x2fad('0x47')]=function(_0x3de8da,_0x4cd68f){return db[_0x2fad('0x2a')][_0x2fad('0x47')](_0x3de8da[_0x2fad('0x48')],{})[_0x2fad('0x23')](respondWithResult(_0x4cd68f,0xc9))[_0x2fad('0x43')](handleError(_0x4cd68f,null));};exports[_0x2fad('0x22')]=function(_0x1af37a,_0x41ec0e){if(_0x1af37a[_0x2fad('0x48')]['id']){delete _0x1af37a[_0x2fad('0x48')]['id'];}return db[_0x2fad('0x2a')][_0x2fad('0x46')]({'where':{'id':_0x1af37a[_0x2fad('0x45')]['id']}})['then'](handleEntityNotFound(_0x41ec0e,null))[_0x2fad('0x23')](saveUpdates(_0x1af37a[_0x2fad('0x48')],null))[_0x2fad('0x23')](respondWithResult(_0x41ec0e,null))[_0x2fad('0x43')](handleError(_0x41ec0e,null));};exports[_0x2fad('0x24')]=function(_0x547b99,_0x2f2dae){return db['VoiceTransferReport'][_0x2fad('0x46')]({'where':{'id':_0x547b99[_0x2fad('0x45')]['id']}})[_0x2fad('0x23')](handleEntityNotFound(_0x2f2dae,null))[_0x2fad('0x23')](removeEntity(_0x2f2dae,null))[_0x2fad('0x43')](handleError(_0x2f2dae,null));};exports[_0x2fad('0x49')]=function(_0x3435a8,_0x80ac8){return db[_0x2fad('0x2a')][_0x2fad('0x49')]()['then'](respondWithResult(_0x80ac8,null))['catch'](handleError(_0x80ac8,null));};
\ No newline at end of file
index 2439403..6a542c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a9d=['api','moment','bluebird','rimraf','exports','define','VoiceTransferReport','report_call_transfer','lodash','../../config/logger'];(function(_0x292bab,_0x4eb300){var _0x18b22a=function(_0x5e8aff){while(--_0x5e8aff){_0x292bab['push'](_0x292bab['shift']());}};_0x18b22a(++_0x4eb300);}(_0x1a9d,0x10c));var _0xd1a9=function(_0x27d984,_0x16b0ac){_0x27d984=_0x27d984-0x0;var _0x6a44c=_0x1a9d[_0x27d984];return _0x6a44c;};'use strict';var _=require(_0xd1a9('0x0'));var util=require('util');var logger=require(_0xd1a9('0x1'))(_0xd1a9('0x2'));var moment=require(_0xd1a9('0x3'));var BPromise=require(_0xd1a9('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xd1a9('0x5'));var config=require('../../config/environment');var attributes=require('./voiceTransferReport.attributes');module[_0xd1a9('0x6')]=function(_0x53aa79,_0x52b2b6){return _0x53aa79[_0xd1a9('0x7')](_0xd1a9('0x8'),attributes,{'tableName':_0xd1a9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf4e5=['rimraf','../../config/environment','exports','report_call_transfer','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x25a79e,_0x3fe142){var _0x53e3f4=function(_0x433cbc){while(--_0x433cbc){_0x25a79e['push'](_0x25a79e['shift']());}};_0x53e3f4(++_0x3fe142);}(_0xf4e5,0xd5));var _0x5f4e=function(_0x312ed6,_0xea11be){_0x312ed6=_0x312ed6-0x0;var _0x311b8f=_0xf4e5[_0x312ed6];return _0x311b8f;};'use strict';var _=require(_0x5f4e('0x0'));var util=require(_0x5f4e('0x1'));var logger=require(_0x5f4e('0x2'))(_0x5f4e('0x3'));var moment=require(_0x5f4e('0x4'));var BPromise=require('bluebird');var rp=require(_0x5f4e('0x5'));var fs=require('fs');var path=require(_0x5f4e('0x6'));var rimraf=require(_0x5f4e('0x7'));var config=require(_0x5f4e('0x8'));var attributes=require('./voiceTransferReport.attributes');module[_0x5f4e('0x9')]=function(_0x359251,_0x3e2dcf){return _0x359251['define']('VoiceTransferReport',attributes,{'tableName':_0x5f4e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 20f657e..586600b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabcc=['http','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','error','message','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','raw','debug','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x5901b9,_0x3c3829){var _0x43cd20=function(_0x17a3bd){while(--_0x17a3bd){_0x5901b9['push'](_0x5901b9['shift']());}};_0x43cd20(++_0x3c3829);}(_0xabcc,0x19f));var _0xcabc=function(_0x49b61a,_0x49b8c4){_0x49b61a=_0x49b61a-0x0;var _0x1ef179=_0xabcc[_0x49b61a];return _0x1ef179;};'use strict';var _=require('lodash');var util=require(_0xcabc('0x0'));var moment=require(_0xcabc('0x1'));var BPromise=require(_0xcabc('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcabc('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xcabc('0x4'));var logger=require(_0xcabc('0x5'))(_0xcabc('0x6'));var config=require(_0xcabc('0x7'));var jayson=require(_0xcabc('0x8'));var client=jayson[_0xcabc('0x9')][_0xcabc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4d9ae7,_0x34ff21,_0x19fae8){return new BPromise(function(_0x5dad45,_0x32d545){return client['request'](_0x4d9ae7,_0x19fae8)[_0xcabc('0xb')](function(_0xbbae30){logger[_0xcabc('0xc')](_0xcabc('0xd'),_0x34ff21,_0xcabc('0xe'));logger['debug']('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x34ff21,_0xcabc('0xe'),JSON['stringify'](_0xbbae30));if(_0xbbae30[_0xcabc('0xf')]){if(_0xbbae30[_0xcabc('0xf')]['code']===0x1f4){logger[_0xcabc('0xf')](_0xcabc('0xd'),_0x34ff21,_0xbbae30[_0xcabc('0xf')]['message']);return _0x32d545(_0xbbae30[_0xcabc('0xf')][_0xcabc('0x10')]);}logger[_0xcabc('0xf')](_0xcabc('0xd'),_0x34ff21,_0xbbae30[_0xcabc('0xf')][_0xcabc('0x10')]);return _0x5dad45(_0xbbae30[_0xcabc('0xf')]['message']);}else{logger[_0xcabc('0xc')]('VoiceTransferReport,\x20%s,\x20%s',_0x34ff21,_0xcabc('0xe'));_0x5dad45(_0xbbae30['result']['message']);}})[_0xcabc('0x11')](function(_0x4af5cc){logger['error'](_0xcabc('0xd'),_0x34ff21,_0x4af5cc);_0x32d545(_0x4af5cc);});});}exports[_0xcabc('0x12')]=function(_0x3731b3){var _0x2c35eb=this;return new Promise(function(_0x15c9bd,_0x439192){return db[_0xcabc('0x13')][_0xcabc('0x14')](_0x3731b3[_0xcabc('0x15')],{'raw':_0x3731b3[_0xcabc('0x16')]?_0x3731b3[_0xcabc('0x16')][_0xcabc('0x17')]===undefined?!![]:![]:!![]})[_0xcabc('0xb')](function(_0x3d3af8){logger['info'](_0xcabc('0x12'),_0x3731b3);logger[_0xcabc('0x18')](_0xcabc('0x12'),_0x3731b3,JSON['stringify'](_0x3d3af8));_0x15c9bd(_0x3d3af8);})['catch'](function(_0x18fa6f){logger[_0xcabc('0xf')](_0xcabc('0x12'),_0x18fa6f['message'],_0x3731b3);_0x439192(_0x2c35eb[_0xcabc('0xf')](0x1f4,_0x18fa6f['message']));});});};
\ No newline at end of file
+var _0x5ce8=['rpc','../../config/environment','jayson/promise','client','http','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','CreateVoiceTransferReport','VoiceTransferReport','create','body','raw','then','stringify','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x513ff4,_0x2609c1){var _0x444b0c=function(_0x4a6263){while(--_0x4a6263){_0x513ff4['push'](_0x513ff4['shift']());}};_0x444b0c(++_0x2609c1);}(_0x5ce8,0xf5));var _0x85ce=function(_0x38dd9b,_0xa92a41){_0x38dd9b=_0x38dd9b-0x0;var _0x519fc6=_0x5ce8[_0x38dd9b];return _0x519fc6;};'use strict';var _=require(_0x85ce('0x0'));var util=require(_0x85ce('0x1'));var moment=require('moment');var BPromise=require(_0x85ce('0x2'));var rs=require(_0x85ce('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x85ce('0x4'))['db'];var utils=require(_0x85ce('0x5'));var logger=require(_0x85ce('0x6'))(_0x85ce('0x7'));var config=require(_0x85ce('0x8'));var jayson=require(_0x85ce('0x9'));var client=jayson[_0x85ce('0xa')][_0x85ce('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4ab66c,_0x2b3218,_0x1ce91f){return new BPromise(function(_0x29c0b3,_0x2da538){return client['request'](_0x4ab66c,_0x1ce91f)['then'](function(_0x2f2a5){logger[_0x85ce('0xc')](_0x85ce('0xd'),_0x2b3218,_0x85ce('0xe'));logger[_0x85ce('0xf')]('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x2b3218,_0x85ce('0xe'),JSON['stringify'](_0x2f2a5));if(_0x2f2a5[_0x85ce('0x10')]){if(_0x2f2a5[_0x85ce('0x10')][_0x85ce('0x11')]===0x1f4){logger[_0x85ce('0x10')](_0x85ce('0xd'),_0x2b3218,_0x2f2a5[_0x85ce('0x10')][_0x85ce('0x12')]);return _0x2da538(_0x2f2a5[_0x85ce('0x10')][_0x85ce('0x12')]);}logger[_0x85ce('0x10')]('VoiceTransferReport,\x20%s,\x20%s',_0x2b3218,_0x2f2a5[_0x85ce('0x10')][_0x85ce('0x12')]);return _0x29c0b3(_0x2f2a5[_0x85ce('0x10')][_0x85ce('0x12')]);}else{logger[_0x85ce('0xc')]('VoiceTransferReport,\x20%s,\x20%s',_0x2b3218,'request\x20sent');_0x29c0b3(_0x2f2a5[_0x85ce('0x13')][_0x85ce('0x12')]);}})['catch'](function(_0x561dc8){logger[_0x85ce('0x10')]('VoiceTransferReport,\x20%s,\x20%s',_0x2b3218,_0x561dc8);_0x2da538(_0x561dc8);});});}exports[_0x85ce('0x14')]=function(_0x3bbb69){var _0x58cdf8=this;return new Promise(function(_0x1a7055,_0x150a0b){return db[_0x85ce('0x15')][_0x85ce('0x16')](_0x3bbb69[_0x85ce('0x17')],{'raw':_0x3bbb69['options']?_0x3bbb69['options'][_0x85ce('0x18')]===undefined?!![]:![]:!![]})[_0x85ce('0x19')](function(_0x49097d){logger[_0x85ce('0xc')](_0x85ce('0x14'),_0x3bbb69);logger[_0x85ce('0xf')](_0x85ce('0x14'),_0x3bbb69,JSON[_0x85ce('0x1a')](_0x49097d));_0x1a7055(_0x49097d);})[_0x85ce('0x1b')](function(_0x36c4a8){logger[_0x85ce('0x10')](_0x85ce('0x14'),_0x36c4a8['message'],_0x3bbb69);_0x150a0b(_0x58cdf8['error'](0x1f4,_0x36c4a8['message']));});});};
\ No newline at end of file
index beec0fe..4bd5341 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b02=['Router','../../components/auth/service','./webbar.controller','isAuthenticated','originate','post','/hangup','isWebrtcLicence','/answer','/hold','/unhold','unhold','/calls','calls','/transfer','transfer','exports','express'];(function(_0x137dee,_0x20ff35){var _0x46469f=function(_0x14053e){while(--_0x14053e){_0x137dee['push'](_0x137dee['shift']());}};_0x46469f(++_0x20ff35);}(_0x5b02,0xe9));var _0x25b0=function(_0x279ea0,_0xa32c67){_0x279ea0=_0x279ea0-0x0;var _0x1bd789=_0x5b02[_0x279ea0];return _0x1bd789;};'use strict';var express=require(_0x25b0('0x0'));var router=express[_0x25b0('0x1')]();var auth=require(_0x25b0('0x2'));var controller=require(_0x25b0('0x3'));router['post']('/originate',auth[_0x25b0('0x4')](),auth['isWebrtcLicence'](),controller[_0x25b0('0x5')]);router[_0x25b0('0x6')](_0x25b0('0x7'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller['hangup']);router[_0x25b0('0x6')](_0x25b0('0x9'),auth['isAuthenticated'](),auth[_0x25b0('0x8')](),controller['answer']);router['post'](_0x25b0('0xa'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller['hold']);router[_0x25b0('0x6')](_0x25b0('0xb'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller[_0x25b0('0xc')]);router[_0x25b0('0x6')](_0x25b0('0xd'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller[_0x25b0('0xe')]);router[_0x25b0('0x6')](_0x25b0('0xf'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller[_0x25b0('0x10')]);module[_0x25b0('0x11')]=router;
\ No newline at end of file
+var _0xb43b=['/transfer','transfer','express','Router','./webbar.controller','post','/originate','isWebrtcLicence','originate','/hangup','hangup','/answer','isAuthenticated','answer','/unhold','unhold'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xb43b,0x1b2));var _0xbb43=function(_0x141500,_0x2ffbc9){_0x141500=_0x141500-0x0;var _0x4326ed=_0xb43b[_0x141500];return _0x4326ed;};'use strict';var express=require(_0xbb43('0x0'));var router=express[_0xbb43('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0xbb43('0x2'));router[_0xbb43('0x3')](_0xbb43('0x4'),auth['isAuthenticated'](),auth[_0xbb43('0x5')](),controller[_0xbb43('0x6')]);router[_0xbb43('0x3')](_0xbb43('0x7'),auth['isAuthenticated'](),auth['isWebrtcLicence'](),controller[_0xbb43('0x8')]);router['post'](_0xbb43('0x9'),auth[_0xbb43('0xa')](),auth[_0xbb43('0x5')](),controller[_0xbb43('0xb')]);router[_0xbb43('0x3')]('/hold',auth[_0xbb43('0xa')](),auth[_0xbb43('0x5')](),controller['hold']);router[_0xbb43('0x3')](_0xbb43('0xc'),auth[_0xbb43('0xa')](),auth[_0xbb43('0x5')](),controller[_0xbb43('0xd')]);router[_0xbb43('0x3')]('/calls',auth[_0xbb43('0xa')](),auth[_0xbb43('0x5')](),controller['calls']);router['post'](_0xbb43('0xe'),auth['isAuthenticated'](),auth['isWebrtcLicence'](),controller[_0xbb43('0xf')]);module['exports']=router;
\ No newline at end of file
index 76bba74..119408b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8a8=['webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','callNumber\x20is\x20required','string','userId\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:','error','stack','name','status','send','NotFound','request','then','code','message','result','catch','findOne','agent','all','filter','rows','UserId','sessionId','length','sessionId\x20','body','callNumber','callerId','callbackUrl','entityFound:','format','user:%s','webbar:originate','hangup','json','userId','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','unhold','unhold\x20fired:','webbar:unhold','calls','conference\x20fired:','conference\x20executed!','transfer','transfer\x20fired:','transferNumber'];(function(_0x1d1511,_0x460f5b){var _0x4e654c=function(_0x30ea7f){while(--_0x30ea7f){_0x1d1511['push'](_0x1d1511['shift']());}};_0x4e654c(++_0x460f5b);}(_0xa8a8,0xec));var _0x8a8a=function(_0x57e2c1,_0x2950be){_0x57e2c1=_0x57e2c1-0x0;var _0x1699c3=_0xa8a8[_0x57e2c1];return _0x1699c3;};'use strict';var path=require(_0x8a8a('0x0'));var fs=require('fs');var _=require(_0x8a8a('0x1'));var db=require(_0x8a8a('0x2'))['db'];var config=require(_0x8a8a('0x3'));var util=require('util');var BPromise=require(_0x8a8a('0x4'));var jayson=require(_0x8a8a('0x5'));var amiClient=jayson[_0x8a8a('0x6')][_0x8a8a('0x7')]({'port':0x232a});var logger=require(_0x8a8a('0x8'))(_0x8a8a('0x9'));var Redis=require(_0x8a8a('0xa'));config[_0x8a8a('0xb')]=_[_0x8a8a('0xc')](config[_0x8a8a('0xb')],{'host':_0x8a8a('0xd'),'port':0x18eb});var io=require(_0x8a8a('0xe'))(new Redis(config[_0x8a8a('0xb')]));var Schema=require(_0x8a8a('0xf'));var originateValidation=new Schema({'userId':{'type':_0x8a8a('0x10'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':'string','required':[!![],_0x8a8a('0x11')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x8a8a('0x12')}});var hangupValidation=new Schema({'userId':{'type':_0x8a8a('0x10'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x8a8a('0x12'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x8a8a('0x10'),'required':[!![],_0x8a8a('0x13')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0x8a8a('0x10'),'required':[!![],_0x8a8a('0x13')]},'sessionId':{'type':_0x8a8a('0x12'),'required':[!![],_0x8a8a('0x14')]},'transferNumber':{'type':'string','required':[!![],_0x8a8a('0x15')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x8a8a('0x13')]},'sessionId':{'type':_0x8a8a('0x12'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x8a8a('0x10'),'required':[!![],_0x8a8a('0x13')]},'sessionId':{'type':_0x8a8a('0x12'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x8a8a('0x10'),'required':[!![],_0x8a8a('0x13')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],_0x8a8a('0x13')]}});function emit(_0x568b83,_0x1f36b6,_0x3046ae){logger[_0x8a8a('0x16')](_0x568b83,_0x1f36b6,JSON[_0x8a8a('0x17')](_0x3046ae));io['to'](_0x568b83)[_0x8a8a('0x18')](_0x1f36b6,_0x3046ae);}function handleError(_0x5dd616){return function(_0x9d55f9){console[_0x8a8a('0x19')](_0x8a8a('0x1a'),_0x9d55f9,_0x9d55f9 instanceof RangeError);logger[_0x8a8a('0x1b')](_0x9d55f9[_0x8a8a('0x1c')]);if(_0x9d55f9 instanceof RangeError){if(_0x9d55f9[_0x8a8a('0x1d')]){delete _0x9d55f9['name'];}_0x5dd616['status'](0x194)['send'](_0x9d55f9);}else{if(_0x9d55f9['name']){delete _0x9d55f9['name'];}_0x5dd616[_0x8a8a('0x1e')](0x1f4)[_0x8a8a('0x1f')](_0x9d55f9);}};}function checkError(){return function(_0xe0f449){if(!_0xe0f449){throw new RangeError(_0x8a8a('0x20'));}return _0xe0f449;};}function respondWithRpcPromise(_0x22ebd4,_0x2f6af2){return new BPromise(function(_0x242bac,_0xe0321c){var _0x25d5d4=amiClient;return _0x25d5d4[_0x8a8a('0x21')](_0x22ebd4,_0x2f6af2)[_0x8a8a('0x22')](function(_0x3aa2bb){if(_0x3aa2bb[_0x8a8a('0x1b')]){if(_0x3aa2bb[_0x8a8a('0x1b')][_0x8a8a('0x23')]===0x1f4){return _0xe0321c(_0x3aa2bb['error'][_0x8a8a('0x24')]);}return _0x242bac(_0x3aa2bb[_0x8a8a('0x1b')][_0x8a8a('0x24')]);}else{_0x242bac(_0x3aa2bb[_0x8a8a('0x25')]);}})[_0x8a8a('0x26')](function(_0x251315){_0xe0321c(_0x251315);});});}function getAgent(_0x3aa46d){return db['User'][_0x8a8a('0x27')]({'where':{'id':_0x3aa46d,'role':_0x8a8a('0x28')}})[_0x8a8a('0x22')](checkError());}function getAgentCheckSession(_0x54ff7e,_0x58f42b){return new BPromise(function(_0x2dafcd,_0x129d11){var _0x5c70bd=respondWithRpcPromise('VoiceChannels');var _0x4b3bc5=getAgent(_0x54ff7e);Promise[_0x8a8a('0x29')]([_0x5c70bd,_0x4b3bc5])['then'](function(_0x10b916){var _0xdd6221=_0x10b916[0x0];var _0x49ea81=_0x10b916[0x1];var _0x36c7f8=_[_0x8a8a('0x2a')](_0xdd6221[_0x8a8a('0x2b')],function(_0x8df0cb){return _0x8df0cb[_0x8a8a('0x2c')]==_0x49ea81['id']&&_0x8df0cb[_0x8a8a('0x2d')]==_0x58f42b;});if(_0x36c7f8[_0x8a8a('0x2e')]==0x1){_0x2dafcd(_0x49ea81);}else{_0x129d11(new RangeError(_0x8a8a('0x2f')+_0x58f42b+'\x20not\x20found!'));}});});}exports['originate']=function(_0x56e79e,_0x2a00a7){logger[_0x8a8a('0x16')]('originate\x20fired:',_0x56e79e[_0x8a8a('0x30')]);var _0x304e83=originateValidation['validate'](_0x56e79e[_0x8a8a('0x30')]);if(_0x304e83[_0x8a8a('0x2e')]>0x0){return _0x2a00a7[_0x8a8a('0x1e')](0x190)['json'](_0x304e83);}var _0x5bee53=_0x56e79e[_0x8a8a('0x30')]['userId'];var _0x2a3198=_0x56e79e[_0x8a8a('0x30')][_0x8a8a('0x31')];var _0x196698=_0x56e79e[_0x8a8a('0x30')][_0x8a8a('0x32')];var _0x37ce45=_0x56e79e[_0x8a8a('0x30')][_0x8a8a('0x33')];return getAgent(_0x5bee53)[_0x8a8a('0x22')](function(_0x27de26){logger[_0x8a8a('0x16')](_0x8a8a('0x34'),_0x27de26[_0x8a8a('0x1d')]);emit(util[_0x8a8a('0x35')](_0x8a8a('0x36'),_0x27de26[_0x8a8a('0x1d')]),_0x8a8a('0x37'),{'callNumber':_0x2a3198,'callerId':_0x196698,'callbackUrl':_0x37ce45});return _0x2a00a7['status'](0xc8)['json']({'error':![],'message':'originate\x20executed!'});})[_0x8a8a('0x26')](handleError(_0x2a00a7));};exports[_0x8a8a('0x38')]=function(_0x376de3,_0x117a5c){logger[_0x8a8a('0x16')]('hangup\x20fired:',_0x376de3['body']);var _0x8d8481=hangupValidation['validate'](_0x376de3[_0x8a8a('0x30')]);if(_0x8d8481['length']>0x0){return _0x117a5c['status'](0x190)[_0x8a8a('0x39')](_0x8d8481);}var _0x1ac761=_0x376de3[_0x8a8a('0x30')][_0x8a8a('0x3a')];var _0x31307c=_0x376de3[_0x8a8a('0x30')][_0x8a8a('0x2d')];return getAgent(_0x1ac761)['then'](function(_0x40d509){logger[_0x8a8a('0x16')](_0x8a8a('0x34'),_0x40d509['name']);emit(util[_0x8a8a('0x35')](_0x8a8a('0x36'),_0x40d509[_0x8a8a('0x1d')]),'webbar:hangup',{'sessionId':_0x31307c});return _0x117a5c[_0x8a8a('0x1e')](0xc8)[_0x8a8a('0x39')]({'error':![],'message':_0x8a8a('0x3b')});})[_0x8a8a('0x26')](handleError(_0x117a5c));};exports[_0x8a8a('0x3c')]=function(_0x3e5b15,_0x4ffdd9){logger['info'](_0x8a8a('0x3d'),_0x3e5b15['body']);var _0x13e0d4=answerValidation[_0x8a8a('0xf')](_0x3e5b15['body']);if(_0x13e0d4['length']>0x0){return _0x4ffdd9[_0x8a8a('0x1e')](0x190)[_0x8a8a('0x39')](_0x13e0d4);}var _0x41d986=_0x3e5b15[_0x8a8a('0x30')]['userId'];var _0x103223=_0x3e5b15['body'][_0x8a8a('0x2d')];return getAgent(_0x41d986)[_0x8a8a('0x22')](function(_0x4c19ff){logger[_0x8a8a('0x16')](_0x8a8a('0x34'),_0x4c19ff[_0x8a8a('0x1d')]);emit(util['format'](_0x8a8a('0x36'),_0x4c19ff[_0x8a8a('0x1d')]),_0x8a8a('0x3e'),{'sessionId':_0x103223});return _0x4ffdd9['status'](0xc8)['json']({'error':![],'message':_0x8a8a('0x3f')});})[_0x8a8a('0x26')](handleError(_0x4ffdd9));};exports[_0x8a8a('0x40')]=function(_0x5c6c98,_0x18449b){logger[_0x8a8a('0x16')](_0x8a8a('0x41'),_0x5c6c98[_0x8a8a('0x30')]);var _0x2d4c11=holdValidation[_0x8a8a('0xf')](_0x5c6c98[_0x8a8a('0x30')]);if(_0x2d4c11[_0x8a8a('0x2e')]>0x0){return _0x18449b[_0x8a8a('0x1e')](0x190)[_0x8a8a('0x39')](_0x2d4c11);}var _0x150b42=_0x5c6c98['body'][_0x8a8a('0x3a')];var _0x3ba9d9=_0x5c6c98[_0x8a8a('0x30')][_0x8a8a('0x2d')];return getAgent(_0x150b42)[_0x8a8a('0x22')](function(_0x2e22b0){logger['info'](_0x8a8a('0x34'),_0x2e22b0[_0x8a8a('0x1d')]);emit(util[_0x8a8a('0x35')](_0x8a8a('0x36'),_0x2e22b0['name']),_0x8a8a('0x42'),{'sessionId':_0x3ba9d9});return _0x18449b[_0x8a8a('0x1e')](0xc8)[_0x8a8a('0x39')]({'error':![],'message':'hold\x20executed!'});})['catch'](handleError(_0x18449b));};exports[_0x8a8a('0x43')]=function(_0x39a8e0,_0xf4b6ee){logger[_0x8a8a('0x16')](_0x8a8a('0x44'),_0x39a8e0[_0x8a8a('0x30')]);var _0x1d1b5c=unholdValidation[_0x8a8a('0xf')](_0x39a8e0[_0x8a8a('0x30')]);if(_0x1d1b5c['length']>0x0){return _0xf4b6ee['status'](0x190)[_0x8a8a('0x39')](_0x1d1b5c);}var _0x10f689=_0x39a8e0['body']['userId'];var _0x171463=_0x39a8e0['body'][_0x8a8a('0x2d')];return getAgent(_0x10f689)['then'](function(_0x4642d5){logger[_0x8a8a('0x16')](_0x8a8a('0x34'),_0x4642d5[_0x8a8a('0x1d')]);emit(util[_0x8a8a('0x35')](_0x8a8a('0x36'),_0x4642d5[_0x8a8a('0x1d')]),_0x8a8a('0x45'),{'sessionId':_0x171463});return _0xf4b6ee[_0x8a8a('0x1e')](0xc8)[_0x8a8a('0x39')]({'error':![],'message':'unhold\x20executed!'});})[_0x8a8a('0x26')](handleError(_0xf4b6ee));};exports[_0x8a8a('0x46')]=function(_0x32a4ed,_0x1e3bf5){logger[_0x8a8a('0x16')]('calls\x20fired:',_0x1e3bf5[_0x8a8a('0x30')]);var _0x140673=callsValidation['validate'](_0x32a4ed['body']);if(_0x140673[_0x8a8a('0x2e')]>0x0){return _0x1e3bf5[_0x8a8a('0x1e')](0x190)[_0x8a8a('0x39')](_0x140673);}var _0x2ba3bf=_0x32a4ed[_0x8a8a('0x30')][_0x8a8a('0x3a')];var _0x5ed59c=respondWithRpcPromise('VoiceChannels');var _0x495371=getAgent(_0x2ba3bf);return Promise[_0x8a8a('0x29')]([_0x5ed59c,_0x495371])['then'](function(_0x3984dd){var _0xb84ee7=_0x3984dd[0x0];var _0x4e1ca8=_0x3984dd[0x1];var _0x225801=_[_0x8a8a('0x2a')](_0xb84ee7[_0x8a8a('0x2b')],function(_0x119fb5){return _0x119fb5['UserId']==_0x4e1ca8['id'];});return _0x1e3bf5[_0x8a8a('0x1e')](0xc8)['json']({'count':_0x225801[_0x8a8a('0x2e')],'rows':_0x225801});})[_0x8a8a('0x26')](handleError(_0x1e3bf5));};exports['conference']=function(_0x254e4c,_0x101543){logger[_0x8a8a('0x16')](_0x8a8a('0x47'),_0x254e4c['body']);var _0x2b9e36=conferenceValidation[_0x8a8a('0xf')](_0x254e4c[_0x8a8a('0x30')]);if(_0x2b9e36['length']>0x0){return _0x101543['status'](0x190)[_0x8a8a('0x39')](_0x2b9e36);}var _0x4a18fb=_0x254e4c['body']['userId'];return getAgent(_0x4a18fb)[_0x8a8a('0x22')](function(_0x7d79a4){logger['info'](_0x8a8a('0x34'),_0x7d79a4['name']);emit(util['format'](_0x8a8a('0x36'),_0x7d79a4[_0x8a8a('0x1d')]),'webbar:conference');return _0x101543[_0x8a8a('0x1e')](0xc8)[_0x8a8a('0x39')]({'error':![],'message':_0x8a8a('0x48')});})[_0x8a8a('0x26')](handleError(_0x101543));};exports[_0x8a8a('0x49')]=function(_0x126dba,_0x4c8272){logger[_0x8a8a('0x16')](_0x8a8a('0x4a'),_0x126dba['body']);var _0x2ce579=transferValidation[_0x8a8a('0xf')](_0x126dba[_0x8a8a('0x30')]);if(_0x2ce579[_0x8a8a('0x2e')]>0x0){return _0x4c8272[_0x8a8a('0x1e')](0x190)[_0x8a8a('0x39')](_0x2ce579);}var _0x81c1dd=_0x126dba[_0x8a8a('0x30')][_0x8a8a('0x3a')];var _0x176ad3=_0x126dba['body'][_0x8a8a('0x2d')];var _0x2f7537=_0x126dba['body'][_0x8a8a('0x4b')];return getAgent(_0x81c1dd)[_0x8a8a('0x22')](function(_0x2640e3){logger[_0x8a8a('0x16')](_0x8a8a('0x34'),_0x2640e3['name']);emit(util[_0x8a8a('0x35')](_0x8a8a('0x36'),_0x2640e3[_0x8a8a('0x1d')]),_0x8a8a('0x4c'),{'sessionId':_0x176ad3,'transferNumber':_0x2f7537});return _0x4c8272[_0x8a8a('0x1e')](0xc8)[_0x8a8a('0x39')]({'error':![],'message':_0x8a8a('0x4d')});})['catch'](handleError(_0x4c8272));};
\ No newline at end of file
+var _0xd691=['conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','path','lodash','../../mysqldb','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','socket.io-emitter','validate','number','userId\x20is\x20required','string','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','emit','error','stack','name','status','send','NotFound','then','message','result','findOne','agent','VoiceChannels','all','filter','rows','UserId','length','sessionId\x20','\x20not\x20found!','originate','body','json','userId','callNumber','callerId','callbackUrl','entityFound:','format','webbar:originate','originate\x20executed!','sessionId','user:%s','catch','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','conference','conference\x20fired:','webbar:conference'];(function(_0x1d8424,_0x1dacfb){var _0x459265=function(_0x2496dc){while(--_0x2496dc){_0x1d8424['push'](_0x1d8424['shift']());}};_0x459265(++_0x1dacfb);}(_0xd691,0xe6));var _0x1d69=function(_0x34f470,_0x464db5){_0x34f470=_0x34f470-0x0;var _0x3ac6cd=_0xd691[_0x34f470];return _0x3ac6cd;};'use strict';var path=require(_0x1d69('0x0'));var fs=require('fs');var _=require(_0x1d69('0x1'));var db=require(_0x1d69('0x2'))['db'];var config=require('../../config/environment');var util=require(_0x1d69('0x3'));var BPromise=require(_0x1d69('0x4'));var jayson=require(_0x1d69('0x5'));var amiClient=jayson[_0x1d69('0x6')][_0x1d69('0x7')]({'port':0x232a});var logger=require(_0x1d69('0x8'))(_0x1d69('0x9'));var Redis=require(_0x1d69('0xa'));config[_0x1d69('0xb')]=_[_0x1d69('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x1d69('0xd'))(new Redis(config['redis']));var Schema=require(_0x1d69('0xe'));var originateValidation=new Schema({'userId':{'type':_0x1d69('0xf'),'required':[!![],_0x1d69('0x10')]},'callNumber':{'type':_0x1d69('0x11'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':_0x1d69('0x11')},'callbackUrl':{'type':_0x1d69('0x11')}});var hangupValidation=new Schema({'userId':{'type':_0x1d69('0xf'),'required':[!![],_0x1d69('0x10')]},'sessionId':{'type':_0x1d69('0x11'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x1d69('0x11'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x1d69('0xf'),'required':[!![],_0x1d69('0x10')]},'sessionId':{'type':_0x1d69('0x11'),'required':[!![],_0x1d69('0x12')]},'transferNumber':{'type':_0x1d69('0x11'),'required':[!![],_0x1d69('0x13')]}});var holdValidation=new Schema({'userId':{'type':_0x1d69('0xf'),'required':[!![],_0x1d69('0x10')]},'sessionId':{'type':_0x1d69('0x11'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x1d69('0xf'),'required':[!![],_0x1d69('0x10')]},'sessionId':{'type':_0x1d69('0x11'),'required':![]}});var callsValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':_0x1d69('0xf'),'required':[!![],_0x1d69('0x10')]}});function emit(_0x29dd32,_0x5fe486,_0x3ec720){logger[_0x1d69('0x14')](_0x29dd32,_0x5fe486,JSON['stringify'](_0x3ec720));io['to'](_0x29dd32)[_0x1d69('0x15')](_0x5fe486,_0x3ec720);}function handleError(_0xcf076b){return function(_0x34f6d4){console['log']('handleError:',_0x34f6d4,_0x34f6d4 instanceof RangeError);logger[_0x1d69('0x16')](_0x34f6d4[_0x1d69('0x17')]);if(_0x34f6d4 instanceof RangeError){if(_0x34f6d4[_0x1d69('0x18')]){delete _0x34f6d4['name'];}_0xcf076b[_0x1d69('0x19')](0x194)[_0x1d69('0x1a')](_0x34f6d4);}else{if(_0x34f6d4[_0x1d69('0x18')]){delete _0x34f6d4[_0x1d69('0x18')];}_0xcf076b[_0x1d69('0x19')](0x1f4)[_0x1d69('0x1a')](_0x34f6d4);}};}function checkError(){return function(_0x34c920){if(!_0x34c920){throw new RangeError(_0x1d69('0x1b'));}return _0x34c920;};}function respondWithRpcPromise(_0x5c90eb,_0x7821f8){return new BPromise(function(_0x122238,_0x1786e1){var _0x228d18=amiClient;return _0x228d18['request'](_0x5c90eb,_0x7821f8)[_0x1d69('0x1c')](function(_0x411ca0){if(_0x411ca0[_0x1d69('0x16')]){if(_0x411ca0['error']['code']===0x1f4){return _0x1786e1(_0x411ca0['error'][_0x1d69('0x1d')]);}return _0x122238(_0x411ca0[_0x1d69('0x16')][_0x1d69('0x1d')]);}else{_0x122238(_0x411ca0[_0x1d69('0x1e')]);}})['catch'](function(_0x3af518){_0x1786e1(_0x3af518);});});}function getAgent(_0x33b5e9){return db['User'][_0x1d69('0x1f')]({'where':{'id':_0x33b5e9,'role':_0x1d69('0x20')}})[_0x1d69('0x1c')](checkError());}function getAgentCheckSession(_0x30aefe,_0x2d3f2e){return new BPromise(function(_0x247130,_0x5cca6a){var _0x23043c=respondWithRpcPromise(_0x1d69('0x21'));var _0x3c6b2b=getAgent(_0x30aefe);Promise[_0x1d69('0x22')]([_0x23043c,_0x3c6b2b])[_0x1d69('0x1c')](function(_0x1e5818){var _0x2fd8d3=_0x1e5818[0x0];var _0x215052=_0x1e5818[0x1];var _0x156825=_[_0x1d69('0x23')](_0x2fd8d3[_0x1d69('0x24')],function(_0x5e8e8e){return _0x5e8e8e[_0x1d69('0x25')]==_0x215052['id']&&_0x5e8e8e['sessionId']==_0x2d3f2e;});if(_0x156825[_0x1d69('0x26')]==0x1){_0x247130(_0x215052);}else{_0x5cca6a(new RangeError(_0x1d69('0x27')+_0x2d3f2e+_0x1d69('0x28')));}});});}exports[_0x1d69('0x29')]=function(_0x582da2,_0x59b677){logger[_0x1d69('0x14')]('originate\x20fired:',_0x582da2[_0x1d69('0x2a')]);var _0x2db151=originateValidation[_0x1d69('0xe')](_0x582da2[_0x1d69('0x2a')]);if(_0x2db151[_0x1d69('0x26')]>0x0){return _0x59b677[_0x1d69('0x19')](0x190)[_0x1d69('0x2b')](_0x2db151);}var _0x1894d9=_0x582da2[_0x1d69('0x2a')][_0x1d69('0x2c')];var _0xa0d7f9=_0x582da2[_0x1d69('0x2a')][_0x1d69('0x2d')];var _0x441d1c=_0x582da2['body'][_0x1d69('0x2e')];var _0x2cf204=_0x582da2[_0x1d69('0x2a')][_0x1d69('0x2f')];return getAgent(_0x1894d9)[_0x1d69('0x1c')](function(_0x4c8414){logger[_0x1d69('0x14')](_0x1d69('0x30'),_0x4c8414[_0x1d69('0x18')]);emit(util[_0x1d69('0x31')]('user:%s',_0x4c8414[_0x1d69('0x18')]),_0x1d69('0x32'),{'callNumber':_0xa0d7f9,'callerId':_0x441d1c,'callbackUrl':_0x2cf204});return _0x59b677[_0x1d69('0x19')](0xc8)[_0x1d69('0x2b')]({'error':![],'message':_0x1d69('0x33')});})['catch'](handleError(_0x59b677));};exports['hangup']=function(_0x49ce52,_0x896d0e){logger[_0x1d69('0x14')]('hangup\x20fired:',_0x49ce52[_0x1d69('0x2a')]);var _0x23335c=hangupValidation[_0x1d69('0xe')](_0x49ce52['body']);if(_0x23335c[_0x1d69('0x26')]>0x0){return _0x896d0e[_0x1d69('0x19')](0x190)[_0x1d69('0x2b')](_0x23335c);}var _0x30be3e=_0x49ce52['body'][_0x1d69('0x2c')];var _0x353a83=_0x49ce52[_0x1d69('0x2a')][_0x1d69('0x34')];return getAgent(_0x30be3e)['then'](function(_0x1a46ae){logger[_0x1d69('0x14')](_0x1d69('0x30'),_0x1a46ae[_0x1d69('0x18')]);emit(util[_0x1d69('0x31')](_0x1d69('0x35'),_0x1a46ae[_0x1d69('0x18')]),'webbar:hangup',{'sessionId':_0x353a83});return _0x896d0e[_0x1d69('0x19')](0xc8)[_0x1d69('0x2b')]({'error':![],'message':'hangup\x20executed!'});})[_0x1d69('0x36')](handleError(_0x896d0e));};exports['answer']=function(_0x11b2e0,_0x399609){logger[_0x1d69('0x14')](_0x1d69('0x37'),_0x11b2e0['body']);var _0x1d6fee=answerValidation[_0x1d69('0xe')](_0x11b2e0[_0x1d69('0x2a')]);if(_0x1d6fee['length']>0x0){return _0x399609[_0x1d69('0x19')](0x190)['json'](_0x1d6fee);}var _0x531387=_0x11b2e0[_0x1d69('0x2a')][_0x1d69('0x2c')];var _0x5451b6=_0x11b2e0[_0x1d69('0x2a')]['sessionId'];return getAgent(_0x531387)[_0x1d69('0x1c')](function(_0x1dc676){logger['info'](_0x1d69('0x30'),_0x1dc676[_0x1d69('0x18')]);emit(util[_0x1d69('0x31')]('user:%s',_0x1dc676[_0x1d69('0x18')]),_0x1d69('0x38'),{'sessionId':_0x5451b6});return _0x399609[_0x1d69('0x19')](0xc8)[_0x1d69('0x2b')]({'error':![],'message':_0x1d69('0x39')});})[_0x1d69('0x36')](handleError(_0x399609));};exports[_0x1d69('0x3a')]=function(_0x746cdb,_0x357a76){logger[_0x1d69('0x14')](_0x1d69('0x3b'),_0x746cdb[_0x1d69('0x2a')]);var _0x2dbc0c=holdValidation[_0x1d69('0xe')](_0x746cdb[_0x1d69('0x2a')]);if(_0x2dbc0c[_0x1d69('0x26')]>0x0){return _0x357a76['status'](0x190)[_0x1d69('0x2b')](_0x2dbc0c);}var _0x11cf7c=_0x746cdb[_0x1d69('0x2a')]['userId'];var _0x4b38fd=_0x746cdb[_0x1d69('0x2a')]['sessionId'];return getAgent(_0x11cf7c)[_0x1d69('0x1c')](function(_0x370645){logger[_0x1d69('0x14')]('entityFound:',_0x370645['name']);emit(util[_0x1d69('0x31')]('user:%s',_0x370645[_0x1d69('0x18')]),'webbar:hold',{'sessionId':_0x4b38fd});return _0x357a76['status'](0xc8)[_0x1d69('0x2b')]({'error':![],'message':_0x1d69('0x3c')});})[_0x1d69('0x36')](handleError(_0x357a76));};exports[_0x1d69('0x3d')]=function(_0x442041,_0x4e6453){logger[_0x1d69('0x14')](_0x1d69('0x3e'),_0x442041['body']);var _0x28bb7b=unholdValidation[_0x1d69('0xe')](_0x442041[_0x1d69('0x2a')]);if(_0x28bb7b[_0x1d69('0x26')]>0x0){return _0x4e6453['status'](0x190)[_0x1d69('0x2b')](_0x28bb7b);}var _0x5a4e1c=_0x442041[_0x1d69('0x2a')][_0x1d69('0x2c')];var _0x37749b=_0x442041['body'][_0x1d69('0x34')];return getAgent(_0x5a4e1c)['then'](function(_0x2d90ec){logger[_0x1d69('0x14')](_0x1d69('0x30'),_0x2d90ec['name']);emit(util[_0x1d69('0x31')]('user:%s',_0x2d90ec[_0x1d69('0x18')]),_0x1d69('0x3f'),{'sessionId':_0x37749b});return _0x4e6453[_0x1d69('0x19')](0xc8)[_0x1d69('0x2b')]({'error':![],'message':_0x1d69('0x40')});})[_0x1d69('0x36')](handleError(_0x4e6453));};exports[_0x1d69('0x41')]=function(_0x143fd9,_0x29502a){logger[_0x1d69('0x14')](_0x1d69('0x42'),_0x29502a[_0x1d69('0x2a')]);var _0x25f7e5=callsValidation[_0x1d69('0xe')](_0x143fd9[_0x1d69('0x2a')]);if(_0x25f7e5[_0x1d69('0x26')]>0x0){return _0x29502a[_0x1d69('0x19')](0x190)['json'](_0x25f7e5);}var _0x2d2a7f=_0x143fd9[_0x1d69('0x2a')]['userId'];var _0x76ead1=respondWithRpcPromise('VoiceChannels');var _0x3b26c6=getAgent(_0x2d2a7f);return Promise[_0x1d69('0x22')]([_0x76ead1,_0x3b26c6])['then'](function(_0x5bd4d0){var _0x1d33c2=_0x5bd4d0[0x0];var _0x3b705d=_0x5bd4d0[0x1];var _0x329076=_[_0x1d69('0x23')](_0x1d33c2['rows'],function(_0x402b3c){return _0x402b3c[_0x1d69('0x25')]==_0x3b705d['id'];});return _0x29502a[_0x1d69('0x19')](0xc8)[_0x1d69('0x2b')]({'count':_0x329076[_0x1d69('0x26')],'rows':_0x329076});})[_0x1d69('0x36')](handleError(_0x29502a));};exports[_0x1d69('0x43')]=function(_0x323e7e,_0x8dcb5d){logger[_0x1d69('0x14')](_0x1d69('0x44'),_0x323e7e[_0x1d69('0x2a')]);var _0x362bdd=conferenceValidation['validate'](_0x323e7e[_0x1d69('0x2a')]);if(_0x362bdd[_0x1d69('0x26')]>0x0){return _0x8dcb5d[_0x1d69('0x19')](0x190)['json'](_0x362bdd);}var _0x44cd1c=_0x323e7e[_0x1d69('0x2a')][_0x1d69('0x2c')];return getAgent(_0x44cd1c)[_0x1d69('0x1c')](function(_0x8f8b31){logger[_0x1d69('0x14')](_0x1d69('0x30'),_0x8f8b31[_0x1d69('0x18')]);emit(util[_0x1d69('0x31')](_0x1d69('0x35'),_0x8f8b31[_0x1d69('0x18')]),_0x1d69('0x45'));return _0x8dcb5d[_0x1d69('0x19')](0xc8)[_0x1d69('0x2b')]({'error':![],'message':_0x1d69('0x46')});})['catch'](handleError(_0x8dcb5d));};exports[_0x1d69('0x47')]=function(_0x7bb6f5,_0x1df70c){logger[_0x1d69('0x14')](_0x1d69('0x48'),_0x7bb6f5['body']);var _0x38370e=transferValidation[_0x1d69('0xe')](_0x7bb6f5[_0x1d69('0x2a')]);if(_0x38370e['length']>0x0){return _0x1df70c[_0x1d69('0x19')](0x190)[_0x1d69('0x2b')](_0x38370e);}var _0x2e34bc=_0x7bb6f5['body'][_0x1d69('0x2c')];var _0x331d1a=_0x7bb6f5['body'][_0x1d69('0x34')];var _0x5d5bc4=_0x7bb6f5['body'][_0x1d69('0x49')];return getAgent(_0x2e34bc)['then'](function(_0x18d13c){logger['info'](_0x1d69('0x30'),_0x18d13c[_0x1d69('0x18')]);emit(util[_0x1d69('0x31')](_0x1d69('0x35'),_0x18d13c[_0x1d69('0x18')]),_0x1d69('0x4a'),{'sessionId':_0x331d1a,'transferNumber':_0x5d5bc4});return _0x1df70c['status'](0xc8)[_0x1d69('0x2b')]({'error':![],'message':'transfer\x20executed!'});})[_0x1d69('0x36')](handleError(_0x1df70c));};
\ No newline at end of file
index d040cd6..5a271d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2fe=['removeAgents','exports','multer','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','/:id/dispositions','getAgents','/:id/applications','getApplications','post','addDisposition','/:id/canned_answers','addAnswer','/:id/users','addAgents','addApplications','/:id/notify','notify','send','put','destroy','delete','removeDispositions','removeAnswers'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xe2fe,0x86));var _0xee2f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe2fe[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xee2f('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xee2f('0x1'));var express=require('express');var router=express[_0xee2f('0x2')]();var fs_extra=require(_0xee2f('0x3'));var auth=require(_0xee2f('0x4'));var interaction=require(_0xee2f('0x5'));var config=require(_0xee2f('0x6'));var controller=require('./whatsappAccount.controller');router[_0xee2f('0x7')]('/',auth[_0xee2f('0x8')](),controller['index']);router[_0xee2f('0x7')](_0xee2f('0x9'),auth['isAuthenticated'](),controller[_0xee2f('0xa')]);router['get'](_0xee2f('0xb'),auth[_0xee2f('0x8')](),controller['show']);router[_0xee2f('0x7')](_0xee2f('0xc'),auth['isAuthenticated'](),controller['getDispositions']);router['get']('/:id/canned_answers',auth[_0xee2f('0x8')](),controller['getAnswers']);router['get']('/:id/users',auth[_0xee2f('0x8')](),controller[_0xee2f('0xd')]);router[_0xee2f('0x7')](_0xee2f('0xe'),auth[_0xee2f('0x8')](),controller[_0xee2f('0xf')]);router['post']('/',auth[_0xee2f('0x8')](),controller['create']);router[_0xee2f('0x10')](_0xee2f('0xc'),auth['isAuthenticated'](),controller[_0xee2f('0x11')]);router[_0xee2f('0x10')](_0xee2f('0x12'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x13')]);router['post'](_0xee2f('0x14'),auth['isAuthenticated'](),controller[_0xee2f('0x15')]);router[_0xee2f('0x10')]('/:id/applications',auth['isAuthenticated'](),controller[_0xee2f('0x16')]);router['post'](_0xee2f('0x17'),controller[_0xee2f('0x18')]);router[_0xee2f('0x10')]('/:id/send',auth[_0xee2f('0x8')](),controller[_0xee2f('0x19')]);router[_0xee2f('0x1a')](_0xee2f('0xb'),auth[_0xee2f('0x8')](),controller['update']);router['delete'](_0xee2f('0xb'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x1b')]);router[_0xee2f('0x1c')](_0xee2f('0xc'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x1d')]);router['delete'](_0xee2f('0x12'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x1e')]);router[_0xee2f('0x1c')](_0xee2f('0x14'),auth[_0xee2f('0x8')](),controller[_0xee2f('0x1f')]);module[_0xee2f('0x20')]=router;
\ No newline at end of file
+var _0x4137=['get','index','/describe','isAuthenticated','/:id','show','getDispositions','/:id/canned_answers','/:id/users','getAgents','/:id/applications','create','/:id/dispositions','post','addAnswer','addAgents','addApplications','notify','/:id/send','put','update','delete','destroy','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller'];(function(_0x3113eb,_0x14862e){var _0x7b6641=function(_0x58f9b2){while(--_0x58f9b2){_0x3113eb['push'](_0x3113eb['shift']());}};_0x7b6641(++_0x14862e);}(_0x4137,0xf8));var _0x7413=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x4137[_0x5d6456];return _0x4d66c1;};'use strict';var multer=require(_0x7413('0x0'));var util=require(_0x7413('0x1'));var path=require(_0x7413('0x2'));var timeout=require(_0x7413('0x3'));var express=require(_0x7413('0x4'));var router=express[_0x7413('0x5')]();var fs_extra=require(_0x7413('0x6'));var auth=require(_0x7413('0x7'));var interaction=require(_0x7413('0x8'));var config=require(_0x7413('0x9'));var controller=require(_0x7413('0xa'));router[_0x7413('0xb')]('/',auth['isAuthenticated'](),controller[_0x7413('0xc')]);router[_0x7413('0xb')](_0x7413('0xd'),auth[_0x7413('0xe')](),controller['describe']);router[_0x7413('0xb')](_0x7413('0xf'),auth['isAuthenticated'](),controller[_0x7413('0x10')]);router[_0x7413('0xb')]('/:id/dispositions',auth[_0x7413('0xe')](),controller[_0x7413('0x11')]);router[_0x7413('0xb')](_0x7413('0x12'),auth[_0x7413('0xe')](),controller['getAnswers']);router[_0x7413('0xb')](_0x7413('0x13'),auth['isAuthenticated'](),controller[_0x7413('0x14')]);router[_0x7413('0xb')](_0x7413('0x15'),auth['isAuthenticated'](),controller['getApplications']);router['post']('/',auth[_0x7413('0xe')](),controller[_0x7413('0x16')]);router['post'](_0x7413('0x17'),auth[_0x7413('0xe')](),controller['addDisposition']);router[_0x7413('0x18')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x7413('0x19')]);router['post'](_0x7413('0x13'),auth['isAuthenticated'](),controller[_0x7413('0x1a')]);router[_0x7413('0x18')](_0x7413('0x15'),auth[_0x7413('0xe')](),controller[_0x7413('0x1b')]);router[_0x7413('0x18')]('/:id/notify',controller[_0x7413('0x1c')]);router[_0x7413('0x18')](_0x7413('0x1d'),auth[_0x7413('0xe')](),controller['send']);router[_0x7413('0x1e')](_0x7413('0xf'),auth[_0x7413('0xe')](),controller[_0x7413('0x1f')]);router[_0x7413('0x20')](_0x7413('0xf'),auth[_0x7413('0xe')](),controller[_0x7413('0x21')]);router['delete']('/:id/dispositions',auth[_0x7413('0xe')](),controller['removeDispositions']);router[_0x7413('0x20')](_0x7413('0x12'),auth[_0x7413('0xe')](),controller[_0x7413('0x22')]);router[_0x7413('0x20')](_0x7413('0x13'),auth[_0x7413('0xe')](),controller[_0x7413('0x23')]);module[_0x7413('0x24')]=router;
\ No newline at end of file
index 1e062f1..e9aa8c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38a4=['name','STRING','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','mandatoryDisposition','randomstring','exports'];(function(_0x4e7d25,_0x58285f){var _0x526fe6=function(_0x4f0aec){while(--_0x4f0aec){_0x4e7d25['push'](_0x4e7d25['shift']());}};_0x526fe6(++_0x58285f);}(_0x38a4,0x191));var _0x438a=function(_0x486ec5,_0x3bf4c8){_0x486ec5=_0x486ec5-0x0;var _0x3fb13e=_0x38a4[_0x486ec5];return _0x3fb13e;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x438a('0x0'));module[_0x438a('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x438a('0x2'),'allowNull':![]},'key':{'type':Sequelize[_0x438a('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x438a('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x438a('0x3')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM']('twilio',_0x438a('0x4'))},'accountSid':{'type':Sequelize[_0x438a('0x3')]},'baseUrl':{'type':Sequelize[_0x438a('0x3')]},'authToken':{'type':Sequelize[_0x438a('0x3')]},'notificationTemplate':{'type':Sequelize[_0x438a('0x5')],'defaultValue':function(){return _0x438a('0x6');}},'notificationSound':{'type':Sequelize[_0x438a('0x7')],'defaultValue':![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x438a('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x438a('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x438a('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x438a('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x438a('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x438a('0x8')],'comment':_0x438a('0x9')},'mandatoryDisposition':{'type':Sequelize[_0x438a('0x7')],'defaultValue':![],'comment':_0x438a('0xa'),'set':function(_0x4344d0){if(!_0x4344d0){this[_0x438a('0xb')]('mandatoryDispositionPauseId',null);}this[_0x438a('0xb')](_0x438a('0xc'),_0x4344d0);}},'description':{'type':Sequelize[_0x438a('0x3')]}};
\ No newline at end of file
+var _0xb3f7=['BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','randomstring','name','STRING','ENUM','sinch','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0x3f1d6d,_0x3feffb){var _0x125f57=function(_0x49a48e){while(--_0x49a48e){_0x3f1d6d['push'](_0x3f1d6d['shift']());}};_0x125f57(++_0x3feffb);}(_0xb3f7,0x131));var _0x7b3f=function(_0x4b3b04,_0x221774){_0x4b3b04=_0x4b3b04-0x0;var _0x540e7c=_0xb3f7[_0x4b3b04];return _0x540e7c;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x7b3f('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x7b3f('0x1'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x7b3f('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x7b3f('0x2')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x7b3f('0x2')]},'type':{'type':Sequelize[_0x7b3f('0x3')]('twilio',_0x7b3f('0x4'))},'accountSid':{'type':Sequelize['STRING']},'baseUrl':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x7b3f('0x2')]},'notificationTemplate':{'type':Sequelize[_0x7b3f('0x5')],'defaultValue':function(){return _0x7b3f('0x6');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x7b3f('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x7b3f('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x7b3f('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x7b3f('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x7b3f('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x7b3f('0x8')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x7b3f('0x7')],'defaultValue':![],'comment':_0x7b3f('0x9'),'set':function(_0x3f3e20){if(!_0x3f3e20){this[_0x7b3f('0xa')](_0x7b3f('0xb'),null);}this['setDataValue'](_0x7b3f('0xc'),_0x3f3e20);}},'description':{'type':Sequelize[_0x7b3f('0x2')]}};
\ No newline at end of file
index 3f4452b..ce671a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcc2=['role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','removeDispositions','ids','addAnswer','getAnswers','findOne','CannedAnswer','nolimit','order','include','rows','addAgents','spread','emit','userWhatsappAccount:save','removeAgents','userWhatsappAccount:remove','getAgents','addApplications','Transaction','READ_COMMITTED','WhatsappApplication','bulkCreate','priority','stack','getApplications','notify','Applications','account','type','sinch','statuses','state','read','WhatsappMessage','timestamp','orderBy','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','mobile','twilio','from','replace','whatsapp:','Body','messageId','MessageSid','notifications','message_id','from\x20is\x20mandatory','isNil','mapKey','includes','CmList','ListId','Contacts','DESC','list','omit','contact','WhatsappInteraction','interaction','autoclose','applications','push','close','unmanaged','*,*,*,*','created','AttachmentId','UserId','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','stringify','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','out','dataValues','Messages','zip-dir','fast-json-patch','moment','bluebird','mustache','util','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./whatsappAccount.socket','register','client','http','request','then','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','get','WhatsappAccounts','end','name','send','index','Pause','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','fieldName','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x40a99c,_0x3d4a0d){var _0x402379=function(_0x3b2a58){while(--_0x3b2a58){_0x40a99c['push'](_0x40a99c['shift']());}};_0x402379(++_0x3d4a0d);}(_0xbcc2,0x68));var _0x2bcc=function(_0x288843,_0xa8ae27){_0x288843=_0x288843-0x0;var _0x116bad=_0xbcc2[_0x288843];return _0x116bad;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2bcc('0x0'));var jsonpatch=require(_0x2bcc('0x1'));var rp=require('request-promise');var moment=require(_0x2bcc('0x2'));var BPromise=require(_0x2bcc('0x3'));var Mustache=require(_0x2bcc('0x4'));var util=require(_0x2bcc('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x2bcc('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2bcc('0x7'));var _=require(_0x2bcc('0x8'));var squel=require('squel');var crypto=require(_0x2bcc('0x9'));var jsforce=require(_0x2bcc('0xa'));var deskjs=require(_0x2bcc('0xb'));var toCsv=require(_0x2bcc('0x6'));var querystring=require(_0x2bcc('0xc'));var Papa=require('papaparse');var Redis=require(_0x2bcc('0xd'));var authService=require(_0x2bcc('0xe'));var qs=require(_0x2bcc('0xf'));var as=require(_0x2bcc('0x10'));var hardwareService=require(_0x2bcc('0x11'));var logger=require(_0x2bcc('0x12'))(_0x2bcc('0x13'));var utils=require('../../config/utils');var config=require(_0x2bcc('0x14'));var licenseUtil=require(_0x2bcc('0x15'));var db=require(_0x2bcc('0x16'))['db'];config[_0x2bcc('0x17')]=_[_0x2bcc('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x2bcc('0x19'))(new Redis(config[_0x2bcc('0x17')]));require(_0x2bcc('0x1a'))[_0x2bcc('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0x2bcc('0x1c')][_0x2bcc('0x1d')]({'port':0x232c});function respondWithRpcPromise(_0x5c056d,_0x1d4561,_0x180c05,_0x53faee){return new BPromise(function(_0x389fd6,_0x48d14b){var _0x2b97d5=_0x53faee||client;return _0x2b97d5[_0x2bcc('0x1e')](_0x5c056d,_0x180c05)[_0x2bcc('0x1f')](function(_0x114e0a){logger['info'](_0x2bcc('0x20'),_0x1d4561,_0x2bcc('0x21'));logger[_0x2bcc('0x22')](_0x2bcc('0x23'),_0x1d4561,_0x2bcc('0x21'),JSON['stringify'](_0x114e0a));if(_0x114e0a['error']){if(_0x114e0a[_0x2bcc('0x24')][_0x2bcc('0x25')]===0x1f4){logger[_0x2bcc('0x24')]('WhatsappAccount,\x20%s,\x20%s',_0x1d4561,_0x114e0a[_0x2bcc('0x24')][_0x2bcc('0x26')]);return _0x48d14b(_0x114e0a[_0x2bcc('0x24')][_0x2bcc('0x26')]);}logger[_0x2bcc('0x24')]('WhatsappAccount,\x20%s,\x20%s',_0x1d4561,_0x114e0a[_0x2bcc('0x24')]['message']);return _0x389fd6(_0x114e0a[_0x2bcc('0x24')][_0x2bcc('0x26')]);}else{logger[_0x2bcc('0x27')](_0x2bcc('0x20'),_0x1d4561,'request\x20sent');_0x389fd6(_0x114e0a[_0x2bcc('0x28')][_0x2bcc('0x26')]);}})[_0x2bcc('0x29')](function(_0x4765fc){logger[_0x2bcc('0x24')](_0x2bcc('0x20'),_0x1d4561,_0x4765fc);_0x48d14b(_0x4765fc);});});}function respondWithStatusCode(_0x3a8ae8,_0x204bbd){_0x204bbd=_0x204bbd||0xcc;return function(_0x436056){if(_0x436056){return _0x3a8ae8[_0x2bcc('0x2a')](_0x204bbd);}return _0x3a8ae8[_0x2bcc('0x2b')](_0x204bbd)['end']();};}function respondWithResult(_0x25aa32,_0x297a74){_0x297a74=_0x297a74||0xc8;return function(_0x4c8167){if(_0x4c8167){return _0x25aa32[_0x2bcc('0x2b')](_0x297a74)[_0x2bcc('0x2c')](_0x4c8167);}};}function respondWithFilteredResult(_0x2a4b9c,_0x3f7994){return function(_0x28ff85){if(_0x28ff85){var _0x30924d=typeof _0x3f7994[_0x2bcc('0x2d')]===_0x2bcc('0x2e')&&typeof _0x3f7994[_0x2bcc('0x2f')]==='undefined';var _0x2eaff2=_0x28ff85[_0x2bcc('0x30')];var _0x2fad2a=_0x30924d?0x0:_0x3f7994['offset'];var _0x5530f0=_0x30924d?_0x28ff85[_0x2bcc('0x30')]:_0x3f7994[_0x2bcc('0x2d')]+_0x3f7994[_0x2bcc('0x2f')];var _0x29d7b5;if(_0x5530f0>=_0x2eaff2){_0x5530f0=_0x2eaff2;_0x29d7b5=0xc8;}else{_0x29d7b5=0xce;}_0x2a4b9c['status'](_0x29d7b5);return _0x2a4b9c[_0x2bcc('0x31')](_0x2bcc('0x32'),_0x2fad2a+'-'+_0x5530f0+'/'+_0x2eaff2)['json'](_0x28ff85);}return null;};}function patchUpdates(_0x3d2849){return function(_0x5bfad3){try{jsonpatch[_0x2bcc('0x33')](_0x5bfad3,_0x3d2849,!![]);}catch(_0x3e45a7){return BPromise['reject'](_0x3e45a7);}return _0x5bfad3[_0x2bcc('0x34')]();};}function saveUpdates(_0x436418,_0x563f81){return function(_0x35d5ac){if(_0x35d5ac){return _0x35d5ac[_0x2bcc('0x35')](_0x436418)[_0x2bcc('0x1f')](function(_0x1f690d){return _0x1f690d;});}return null;};}function removeEntity(_0x2f4d69,_0x18c5f1){return function(_0x5474ef){if(_0x5474ef){return _0x5474ef[_0x2bcc('0x36')]()[_0x2bcc('0x1f')](function(){var _0x5b41b2=_0x5474ef[_0x2bcc('0x37')]({'plain':!![]});var _0x4eb59e=_0x2bcc('0x38');return db['UserProfileResource'][_0x2bcc('0x36')]({'where':{'type':_0x4eb59e,'resourceId':_0x5b41b2['id']}})[_0x2bcc('0x1f')](function(){return _0x5474ef;});})[_0x2bcc('0x1f')](function(){_0x2f4d69[_0x2bcc('0x2b')](0xcc)[_0x2bcc('0x39')]();});}};}function handleEntityNotFound(_0x240200,_0x30cf04){return function(_0x1a21a6){if(!_0x1a21a6){_0x240200[_0x2bcc('0x2a')](0x194);}return _0x1a21a6;};}function handleError(_0x274a40,_0xbd19ca){_0xbd19ca=_0xbd19ca||0x1f4;return function(_0x8e9a3d){logger[_0x2bcc('0x24')](_0x8e9a3d['stack']);if(_0x8e9a3d[_0x2bcc('0x3a')]){delete _0x8e9a3d[_0x2bcc('0x3a')];}_0x274a40[_0x2bcc('0x2b')](_0xbd19ca)[_0x2bcc('0x3b')](_0x8e9a3d);};}exports[_0x2bcc('0x3c')]=function(_0x48adc4,_0x408fe1){var _0x440fd3={'include':[{'model':db[_0x2bcc('0x3d')],'as':_0x2bcc('0x3e')}]},_0x56701a={},_0x3cd620={'count':0x0,'rows':[]};var _0x5a0f43=_[_0x2bcc('0x3f')](db[_0x2bcc('0x40')][_0x2bcc('0x41')],function(_0x4ddfc3){return{'name':_0x4ddfc3[_0x2bcc('0x42')],'type':_0x4ddfc3['type']['key']};});_0x56701a[_0x2bcc('0x43')]=_[_0x2bcc('0x3f')](_0x5a0f43,'name');_0x56701a['query']=_[_0x2bcc('0x44')](_0x48adc4['query']);_0x56701a[_0x2bcc('0x45')]=_[_0x2bcc('0x46')](_0x56701a[_0x2bcc('0x43')],_0x56701a[_0x2bcc('0x47')]);_0x440fd3[_0x2bcc('0x48')]=_[_0x2bcc('0x46')](_0x56701a['model'],qs['fields'](_0x48adc4['query'][_0x2bcc('0x49')]));_0x440fd3[_0x2bcc('0x48')]=_0x440fd3[_0x2bcc('0x48')][_0x2bcc('0x4a')]?_0x440fd3[_0x2bcc('0x48')]:_0x56701a['model'];if(!_0x48adc4[_0x2bcc('0x47')][_0x2bcc('0x4b')]('nolimit')){_0x440fd3[_0x2bcc('0x2f')]=qs[_0x2bcc('0x2f')](_0x48adc4[_0x2bcc('0x47')][_0x2bcc('0x2f')]);_0x440fd3[_0x2bcc('0x2d')]=qs[_0x2bcc('0x2d')](_0x48adc4[_0x2bcc('0x47')][_0x2bcc('0x2d')]);}_0x440fd3['order']=qs[_0x2bcc('0x4c')](_0x48adc4[_0x2bcc('0x47')][_0x2bcc('0x4c')]);_0x440fd3[_0x2bcc('0x4d')]=qs[_0x2bcc('0x45')](_[_0x2bcc('0x4e')](_0x48adc4['query'],_0x56701a[_0x2bcc('0x45')]),_0x5a0f43);if(_0x48adc4[_0x2bcc('0x47')][_0x2bcc('0x4f')]){_0x440fd3[_0x2bcc('0x4d')]=_[_0x2bcc('0x50')](_0x440fd3[_0x2bcc('0x4d')],{'$or':_[_0x2bcc('0x3f')](_0x5a0f43,function(_0x2711bc){if(_0x2711bc['type']!==_0x2bcc('0x51')){var _0x410f09={};_0x410f09[_0x2711bc[_0x2bcc('0x3a')]]={'$like':'%'+_0x48adc4[_0x2bcc('0x47')][_0x2bcc('0x4f')]+'%'};return _0x410f09;}})});}_0x440fd3=_[_0x2bcc('0x50')]({},_0x440fd3,_0x48adc4[_0x2bcc('0x52')]);var _0x13344f={'where':_0x440fd3[_0x2bcc('0x4d')]};return db['WhatsappAccount'][_0x2bcc('0x30')](_0x13344f)[_0x2bcc('0x1f')](function(_0x1ce3fe){_0x3cd620['count']=_0x1ce3fe;if(_0x48adc4[_0x2bcc('0x47')][_0x2bcc('0x53')]){_0x440fd3['include']=[{'all':!![]}];}return db[_0x2bcc('0x40')][_0x2bcc('0x54')](_0x440fd3);})[_0x2bcc('0x1f')](function(_0x18afa6){_0x3cd620['rows']=_0x18afa6;return _0x3cd620;})[_0x2bcc('0x1f')](respondWithFilteredResult(_0x408fe1,_0x440fd3))['catch'](handleError(_0x408fe1,null));};exports['show']=function(_0x2d6f37,_0x46f42a){var _0x1aa7bb={'raw':![],'where':{'id':_0x2d6f37['params']['id']},'include':[{'model':db[_0x2bcc('0x3d')],'as':_0x2bcc('0x3e')}]},_0x371fab={};_0x371fab[_0x2bcc('0x43')]=_[_0x2bcc('0x44')](db['WhatsappAccount']['rawAttributes']);_0x371fab['query']=_[_0x2bcc('0x44')](_0x2d6f37[_0x2bcc('0x47')]);_0x371fab[_0x2bcc('0x45')]=_['intersection'](_0x371fab[_0x2bcc('0x43')],_0x371fab['query']);_0x1aa7bb[_0x2bcc('0x48')]=_[_0x2bcc('0x46')](_0x371fab['model'],qs['fields'](_0x2d6f37['query']['fields']));_0x1aa7bb[_0x2bcc('0x48')]=_0x1aa7bb['attributes'][_0x2bcc('0x4a')]?_0x1aa7bb[_0x2bcc('0x48')]:_0x371fab[_0x2bcc('0x43')];if(_0x2d6f37['query']['includeAll']){_0x1aa7bb['include']=[{'all':!![]}];}_0x1aa7bb=_[_0x2bcc('0x50')]({},_0x1aa7bb,_0x2d6f37[_0x2bcc('0x52')]);return db[_0x2bcc('0x40')][_0x2bcc('0x55')](_0x1aa7bb)['then'](handleEntityNotFound(_0x46f42a,null))[_0x2bcc('0x1f')](respondWithResult(_0x46f42a,null))[_0x2bcc('0x29')](handleError(_0x46f42a,null));};exports[_0x2bcc('0x56')]=function(_0x7c6e,_0x567041){return db['WhatsappAccount'][_0x2bcc('0x56')](_0x7c6e[_0x2bcc('0x57')],{})['then'](function(_0x5e9e40){var _0xc518f8=_0x7c6e[_0x2bcc('0x58')][_0x2bcc('0x37')]({'plain':!![]});if(!_0xc518f8)throw new Error(_0x2bcc('0x59'));if(_0xc518f8[_0x2bcc('0x5a')]===_0x2bcc('0x58')){var _0x17bf27=_0x5e9e40[_0x2bcc('0x37')]({'plain':!![]});var _0x2f467a=_0x2bcc('0x38');return db[_0x2bcc('0x5b')]['find']({'where':{'name':_0x2f467a,'userProfileId':_0xc518f8[_0x2bcc('0x5c')]},'raw':!![]})[_0x2bcc('0x1f')](function(_0x211e23){if(_0x211e23&&_0x211e23[_0x2bcc('0x5d')]===0x0){return db[_0x2bcc('0x5e')][_0x2bcc('0x56')]({'name':_0x17bf27[_0x2bcc('0x3a')],'resourceId':_0x17bf27['id'],'type':_0x211e23[_0x2bcc('0x3a')],'sectionId':_0x211e23['id']},{})['then'](function(){return _0x5e9e40;});}else{return _0x5e9e40;}})[_0x2bcc('0x29')](function(_0x57c2d2){logger[_0x2bcc('0x24')](_0x2bcc('0x5f'),_0x57c2d2);throw _0x57c2d2;});}return _0x5e9e40;})[_0x2bcc('0x1f')](respondWithResult(_0x567041,0xc9))[_0x2bcc('0x29')](handleError(_0x567041,null));};exports[_0x2bcc('0x35')]=function(_0x351d71,_0x53a3ad){if(_0x351d71[_0x2bcc('0x57')]['id']){delete _0x351d71[_0x2bcc('0x57')]['id'];}return db[_0x2bcc('0x40')][_0x2bcc('0x55')]({'where':{'id':_0x351d71['params']['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x2bcc('0x1f')](handleEntityNotFound(_0x53a3ad,null))[_0x2bcc('0x1f')](saveUpdates(_0x351d71[_0x2bcc('0x57')],null))[_0x2bcc('0x1f')](respondWithResult(_0x53a3ad,null))[_0x2bcc('0x29')](handleError(_0x53a3ad,null));};exports[_0x2bcc('0x36')]=function(_0x1cf00f,_0xa6395c){return db[_0x2bcc('0x40')][_0x2bcc('0x55')]({'where':{'id':_0x1cf00f[_0x2bcc('0x60')]['id']}})[_0x2bcc('0x1f')](handleEntityNotFound(_0xa6395c,null))['then'](removeEntity(_0xa6395c,null))[_0x2bcc('0x29')](handleError(_0xa6395c,null));};exports[_0x2bcc('0x61')]=function(_0x539290,_0x37d6af){return db[_0x2bcc('0x40')]['describe']()[_0x2bcc('0x1f')](respondWithResult(_0x37d6af,null))[_0x2bcc('0x29')](handleError(_0x37d6af,null));};exports[_0x2bcc('0x62')]=function(_0x2cfc79,_0x581739,_0x3dbdb4){if(_0x2cfc79[_0x2bcc('0x57')]['id']){delete _0x2cfc79[_0x2bcc('0x57')]['id'];}return db['WhatsappAccount'][_0x2bcc('0x55')]({'where':{'id':_0x2cfc79[_0x2bcc('0x60')]['id']}})[_0x2bcc('0x1f')](handleEntityNotFound(_0x581739,null))[_0x2bcc('0x1f')](function(_0x430f5a){if(_0x430f5a){_0x2cfc79['body'][_0x2bcc('0x63')]=_0x430f5a['id'];return db[_0x2bcc('0x64')][_0x2bcc('0x56')](_0x2cfc79[_0x2bcc('0x57')]);}})['then'](respondWithResult(_0x581739,null))[_0x2bcc('0x29')](handleError(_0x581739,null));};exports[_0x2bcc('0x65')]=function(_0x252fcf,_0x1c35df,_0x1295db){var _0x784432={'raw':![],'where':{}};var _0x5d9e62={};var _0x5d6682={'count':0x0,'rows':[]};return db['WhatsappAccount']['findOne']({'where':{'id':_0x252fcf[_0x2bcc('0x60')]['id']}})['then'](handleEntityNotFound(_0x1c35df,null))['then'](function(_0x30ce51){if(_0x30ce51){_0x5d9e62[_0x2bcc('0x43')]=_['keys'](db[_0x2bcc('0x64')][_0x2bcc('0x41')]);_0x5d9e62['query']=_['keys'](_0x252fcf['query']);_0x5d9e62['filters']=_[_0x2bcc('0x46')](_0x5d9e62[_0x2bcc('0x43')],_0x5d9e62[_0x2bcc('0x47')]);_0x784432[_0x2bcc('0x48')]=_[_0x2bcc('0x46')](_0x5d9e62[_0x2bcc('0x43')],qs['fields'](_0x252fcf['query'][_0x2bcc('0x49')]));_0x784432[_0x2bcc('0x48')]=_0x784432[_0x2bcc('0x48')]['length']?_0x784432[_0x2bcc('0x48')]:_0x5d9e62['model'];if(!_0x252fcf[_0x2bcc('0x47')][_0x2bcc('0x4b')]('nolimit')){_0x784432['limit']=qs['limit'](_0x252fcf[_0x2bcc('0x47')][_0x2bcc('0x2f')]);_0x784432[_0x2bcc('0x2d')]=qs[_0x2bcc('0x2d')](_0x252fcf[_0x2bcc('0x47')][_0x2bcc('0x2d')]);}_0x784432['order']=qs[_0x2bcc('0x4c')](_0x252fcf[_0x2bcc('0x47')]['sort']);_0x784432[_0x2bcc('0x4d')]=qs[_0x2bcc('0x45')](_[_0x2bcc('0x4e')](_0x252fcf[_0x2bcc('0x47')],_0x5d9e62[_0x2bcc('0x45')]));_0x784432[_0x2bcc('0x4d')]['WhatsappAccountId']=_0x30ce51['id'];if(_0x252fcf[_0x2bcc('0x47')][_0x2bcc('0x4f')]){_0x784432[_0x2bcc('0x4d')]=_[_0x2bcc('0x50')](_0x784432[_0x2bcc('0x4d')],{'$or':_[_0x2bcc('0x3f')](_0x784432['attributes'],function(_0xf40bff){var _0x4a0e70={};_0x4a0e70[_0xf40bff]={'$like':'%'+_0x252fcf[_0x2bcc('0x47')][_0x2bcc('0x4f')]+'%'};return _0x4a0e70;})});}_0x784432=_[_0x2bcc('0x50')]({},_0x784432,_0x252fcf[_0x2bcc('0x52')]);return db[_0x2bcc('0x64')][_0x2bcc('0x30')]({'where':_0x784432[_0x2bcc('0x4d')]})[_0x2bcc('0x1f')](function(_0x5ee842){_0x5d6682[_0x2bcc('0x30')]=_0x5ee842;if(_0x252fcf['query'][_0x2bcc('0x53')]){_0x784432['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0x784432);})['then'](function(_0x33d30d){_0x5d6682['rows']=_0x33d30d;return _0x5d6682;});}})[_0x2bcc('0x1f')](respondWithFilteredResult(_0x1c35df,_0x784432))['catch'](handleError(_0x1c35df,null));};exports['removeDispositions']=function(_0x9c1f40,_0x1779bb,_0xbfecff){return db['WhatsappAccount'][_0x2bcc('0x55')]({'where':{'id':_0x9c1f40['params']['id']}})[_0x2bcc('0x1f')](handleEntityNotFound(_0x1779bb,null))['then'](function(_0x45fdb9){if(_0x45fdb9){return _0x45fdb9[_0x2bcc('0x66')](_0x9c1f40[_0x2bcc('0x47')][_0x2bcc('0x67')]);}})[_0x2bcc('0x1f')](respondWithStatusCode(_0x1779bb,null))[_0x2bcc('0x29')](handleError(_0x1779bb,null));};exports[_0x2bcc('0x68')]=function(_0x3b53ae,_0x171da0,_0x3b0a90){if(_0x3b53ae[_0x2bcc('0x57')]['id']){delete _0x3b53ae[_0x2bcc('0x57')]['id'];}return db[_0x2bcc('0x40')]['find']({'where':{'id':_0x3b53ae[_0x2bcc('0x60')]['id']}})[_0x2bcc('0x1f')](handleEntityNotFound(_0x171da0,null))[_0x2bcc('0x1f')](function(_0x5e35e3){if(_0x5e35e3){_0x3b53ae[_0x2bcc('0x57')][_0x2bcc('0x63')]=_0x5e35e3['id'];return db['CannedAnswer']['create'](_0x3b53ae[_0x2bcc('0x57')]);}})[_0x2bcc('0x1f')](respondWithResult(_0x171da0,null))[_0x2bcc('0x29')](handleError(_0x171da0,null));};exports[_0x2bcc('0x69')]=function(_0x272e55,_0x2750ba,_0x3afc51){var _0x31ed0b={'raw':![],'where':{}};var _0x247f24={};var _0x2f982f={'count':0x0,'rows':[]};return db[_0x2bcc('0x40')][_0x2bcc('0x6a')]({'where':{'id':_0x272e55[_0x2bcc('0x60')]['id']}})[_0x2bcc('0x1f')](handleEntityNotFound(_0x2750ba,null))[_0x2bcc('0x1f')](function(_0x5e64d3){if(_0x5e64d3){_0x247f24[_0x2bcc('0x43')]=_['keys'](db[_0x2bcc('0x6b')][_0x2bcc('0x41')]);_0x247f24['query']=_['keys'](_0x272e55[_0x2bcc('0x47')]);_0x247f24[_0x2bcc('0x45')]=_[_0x2bcc('0x46')](_0x247f24['model'],_0x247f24['query']);_0x31ed0b['attributes']=_[_0x2bcc('0x46')](_0x247f24['model'],qs['fields'](_0x272e55[_0x2bcc('0x47')][_0x2bcc('0x49')]));_0x31ed0b[_0x2bcc('0x48')]=_0x31ed0b[_0x2bcc('0x48')]['length']?_0x31ed0b[_0x2bcc('0x48')]:_0x247f24[_0x2bcc('0x43')];if(!_0x272e55['query'][_0x2bcc('0x4b')](_0x2bcc('0x6c'))){_0x31ed0b[_0x2bcc('0x2f')]=qs[_0x2bcc('0x2f')](_0x272e55[_0x2bcc('0x47')][_0x2bcc('0x2f')]);_0x31ed0b[_0x2bcc('0x2d')]=qs['offset'](_0x272e55[_0x2bcc('0x47')]['offset']);}_0x31ed0b[_0x2bcc('0x6d')]=qs[_0x2bcc('0x4c')](_0x272e55[_0x2bcc('0x47')][_0x2bcc('0x4c')]);_0x31ed0b[_0x2bcc('0x4d')]=qs['filters'](_[_0x2bcc('0x4e')](_0x272e55[_0x2bcc('0x47')],_0x247f24['filters']));_0x31ed0b['where'][_0x2bcc('0x63')]=_0x5e64d3['id'];if(_0x272e55[_0x2bcc('0x47')][_0x2bcc('0x4f')]){_0x31ed0b[_0x2bcc('0x4d')]=_['merge'](_0x31ed0b[_0x2bcc('0x4d')],{'$or':_[_0x2bcc('0x3f')](_0x31ed0b['attributes'],function(_0x1c66a8){var _0x8bb711={};_0x8bb711[_0x1c66a8]={'$like':'%'+_0x272e55['query'][_0x2bcc('0x4f')]+'%'};return _0x8bb711;})});}_0x31ed0b=_[_0x2bcc('0x50')]({},_0x31ed0b,_0x272e55[_0x2bcc('0x52')]);return db[_0x2bcc('0x6b')][_0x2bcc('0x30')]({'where':_0x31ed0b[_0x2bcc('0x4d')]})['then'](function(_0x55c71b){_0x2f982f[_0x2bcc('0x30')]=_0x55c71b;if(_0x272e55[_0x2bcc('0x47')][_0x2bcc('0x53')]){_0x31ed0b[_0x2bcc('0x6e')]=[{'all':!![]}];}return db[_0x2bcc('0x6b')][_0x2bcc('0x54')](_0x31ed0b);})['then'](function(_0x300522){_0x2f982f[_0x2bcc('0x6f')]=_0x300522;return _0x2f982f;});}})[_0x2bcc('0x1f')](respondWithFilteredResult(_0x2750ba,_0x31ed0b))['catch'](handleError(_0x2750ba,null));};exports['removeAnswers']=function(_0x4d199b,_0x450bdb,_0x2d5c14){return db[_0x2bcc('0x40')]['find']({'where':{'id':_0x4d199b[_0x2bcc('0x60')]['id']}})[_0x2bcc('0x1f')](handleEntityNotFound(_0x450bdb,null))[_0x2bcc('0x1f')](function(_0x44599d){if(_0x44599d){return _0x44599d['removeAnswers'](_0x4d199b[_0x2bcc('0x47')][_0x2bcc('0x67')]);}})['then'](respondWithStatusCode(_0x450bdb,null))['catch'](handleError(_0x450bdb,null));};exports['addAgents']=function(_0x5e5ea0,_0x3b9419,_0x49fc1a){return db['WhatsappAccount']['find']({'where':{'id':_0x5e5ea0[_0x2bcc('0x60')]['id']}})['then'](handleEntityNotFound(_0x3b9419,null))[_0x2bcc('0x1f')](function(_0xb6e807){if(_0xb6e807){return _0xb6e807[_0x2bcc('0x70')](_0x5e5ea0['body']['ids'],_['omit'](_0x5e5ea0[_0x2bcc('0x57')],[_0x2bcc('0x67'),'id'])||{})[_0x2bcc('0x71')](function(_0x3d3c04){for(var _0x41126e=0x0;_0x41126e<_0x5e5ea0[_0x2bcc('0x57')][_0x2bcc('0x67')]['length'];_0x41126e+=0x1){socket[_0x2bcc('0x72')](_0x2bcc('0x73'),{'UserId':Number(_0x5e5ea0['body'][_0x2bcc('0x67')][_0x41126e]),'WhatsappAccountId':Number(_0x5e5ea0[_0x2bcc('0x60')]['id'])});}return _0x3d3c04;});}})[_0x2bcc('0x1f')](respondWithResult(_0x3b9419,null))['catch'](handleError(_0x3b9419,null));};exports[_0x2bcc('0x74')]=function(_0xa899d2,_0x154c11,_0x759403){return db['WhatsappAccount'][_0x2bcc('0x55')]({'where':{'id':_0xa899d2[_0x2bcc('0x60')]['id']}})[_0x2bcc('0x1f')](handleEntityNotFound(_0x154c11,null))[_0x2bcc('0x1f')](function(_0x1d6142){if(_0x1d6142){return _0x1d6142[_0x2bcc('0x74')](_0xa899d2[_0x2bcc('0x47')][_0x2bcc('0x67')])[_0x2bcc('0x1f')](function(){if(_['isArray'](_0xa899d2[_0x2bcc('0x47')][_0x2bcc('0x67')])){for(var _0x5c7560=0x0;_0x5c7560<_0xa899d2[_0x2bcc('0x47')][_0x2bcc('0x67')]['length'];_0x5c7560+=0x1){socket[_0x2bcc('0x72')](_0x2bcc('0x75'),{'UserId':Number(_0xa899d2[_0x2bcc('0x47')]['ids'][_0x5c7560]),'WhatsappAccountId':Number(_0xa899d2[_0x2bcc('0x60')]['id'])});}}else{socket[_0x2bcc('0x72')](_0x2bcc('0x75'),{'UserId':Number(_0xa899d2[_0x2bcc('0x47')][_0x2bcc('0x67')]),'WhatsappAccountId':Number(_0xa899d2[_0x2bcc('0x60')]['id'])});}});}})[_0x2bcc('0x1f')](respondWithStatusCode(_0x154c11,null))[_0x2bcc('0x29')](handleError(_0x154c11,null));};exports[_0x2bcc('0x76')]=function(_0x319dcb,_0x236dd6,_0x2bd1b3){var _0x4f6528={};var _0x11c98f={};var _0x2b10e4;var _0x444465;return db['WhatsappAccount'][_0x2bcc('0x6a')]({'where':{'id':_0x319dcb[_0x2bcc('0x60')]['id']}})['then'](handleEntityNotFound(_0x236dd6,null))[_0x2bcc('0x1f')](function(_0x5a7ceb){if(_0x5a7ceb){_0x2b10e4=_0x5a7ceb;_0x11c98f['model']=_[_0x2bcc('0x44')](db['User']['rawAttributes']);_0x11c98f[_0x2bcc('0x47')]=_[_0x2bcc('0x44')](_0x319dcb[_0x2bcc('0x47')]);_0x11c98f[_0x2bcc('0x45')]=_[_0x2bcc('0x46')](_0x11c98f[_0x2bcc('0x43')],_0x11c98f[_0x2bcc('0x47')]);_0x4f6528[_0x2bcc('0x48')]=_[_0x2bcc('0x46')](_0x11c98f[_0x2bcc('0x43')],qs[_0x2bcc('0x49')](_0x319dcb['query'][_0x2bcc('0x49')]));_0x4f6528[_0x2bcc('0x48')]=_0x4f6528['attributes']['length']?_0x4f6528[_0x2bcc('0x48')]:_0x11c98f['model'];_0x4f6528[_0x2bcc('0x6d')]=qs[_0x2bcc('0x4c')](_0x319dcb[_0x2bcc('0x47')]['sort']);_0x4f6528[_0x2bcc('0x4d')]=qs[_0x2bcc('0x45')](_[_0x2bcc('0x4e')](_0x319dcb[_0x2bcc('0x47')],_0x11c98f[_0x2bcc('0x45')]));if(_0x319dcb[_0x2bcc('0x47')][_0x2bcc('0x4f')]){_0x4f6528['where']=_[_0x2bcc('0x50')](_0x4f6528[_0x2bcc('0x4d')],{'$or':_[_0x2bcc('0x3f')](_0x4f6528[_0x2bcc('0x48')],function(_0xb3af2a){var _0x1a48d4={};_0x1a48d4[_0xb3af2a]={'$like':'%'+_0x319dcb[_0x2bcc('0x47')][_0x2bcc('0x4f')]+'%'};return _0x1a48d4;})});}_0x4f6528=_[_0x2bcc('0x50')]({},_0x4f6528,_0x319dcb[_0x2bcc('0x52')]);return _0x2b10e4['getAgents'](_0x4f6528);}})['then'](function(_0x582196){if(_0x582196){_0x444465=_0x582196[_0x2bcc('0x4a')];if(!_0x319dcb[_0x2bcc('0x47')]['hasOwnProperty'](_0x2bcc('0x6c'))){_0x4f6528[_0x2bcc('0x2f')]=qs[_0x2bcc('0x2f')](_0x319dcb[_0x2bcc('0x47')]['limit']);_0x4f6528[_0x2bcc('0x2d')]=qs[_0x2bcc('0x2d')](_0x319dcb[_0x2bcc('0x47')]['offset']);}return _0x2b10e4[_0x2bcc('0x76')](_0x4f6528);}})[_0x2bcc('0x1f')](function(_0x40a807){if(_0x40a807){return _0x40a807?{'count':_0x444465,'rows':_0x40a807}:null;}})[_0x2bcc('0x1f')](respondWithResult(_0x236dd6,null))[_0x2bcc('0x29')](handleError(_0x236dd6,null));};exports[_0x2bcc('0x77')]=function(_0x3bce32,_0x4b35f9){var _0x31e3a2=_0x3bce32[_0x2bcc('0x60')]['id'];var _0x1e32f2=_0x3bce32[_0x2bcc('0x57')];var _0x5258dc=0xc8;var _0x4fa3b3=null;return db['sequelize']['transaction']({'isolationLevel':db['sequelize'][_0x2bcc('0x78')]['ISOLATION_LEVELS'][_0x2bcc('0x79')]},function(_0x10221a){return db[_0x2bcc('0x40')][_0x2bcc('0x6a')]({'where':{'id':_0x31e3a2},'transaction':_0x10221a})[_0x2bcc('0x1f')](function(_0x1ee667){if(_0x1ee667){return db[_0x2bcc('0x7a')][_0x2bcc('0x36')]({'where':{'WhatsappAccountId':_0x31e3a2},'transaction':_0x10221a})[_0x2bcc('0x1f')](function(){var _0x9cbfcb=_[_0x2bcc('0x3f')](_0x1e32f2,function(_0x3b280f){_0x3b280f['WhatsappAccountId']=_0x31e3a2;return _0x3b280f;});return db[_0x2bcc('0x7a')][_0x2bcc('0x7b')](_0x9cbfcb,{'transaction':_0x10221a});});}else{_0x5258dc=0x194;_0x4fa3b3=[];}});})[_0x2bcc('0x1f')](function(){if(_0x5258dc!==0x194){return db[_0x2bcc('0x7a')]['findAndCountAll']({'where':{'WhatsappAccountId':_0x31e3a2},'order':_0x2bcc('0x7c')})[_0x2bcc('0x1f')](function(_0x33f5ee){_0x4fa3b3=_0x33f5ee;});}})[_0x2bcc('0x29')](function(_0x238c26){_0x5258dc=0x1f4;logger['error'](_0x238c26[_0x2bcc('0x7d')]);if(_0x238c26[_0x2bcc('0x3a')]){delete _0x238c26[_0x2bcc('0x3a')];}_0x4fa3b3=_0x238c26;})['finally'](function(){if(_0x4fa3b3===null){_0x4b35f9[_0x2bcc('0x2a')](_0x5258dc);}else{if(_0x5258dc===0x1f4){_0x4b35f9['status'](_0x5258dc)['send'](_0x4fa3b3);}else{_0x4b35f9[_0x2bcc('0x2b')](_0x5258dc)['json'](_0x4fa3b3);}}});};exports[_0x2bcc('0x7e')]=function(_0x4775a,_0x54819a,_0x4fe71e){var _0x5a401a={};var _0x3c1363={};var _0x31494d;var _0x40c38e;return db[_0x2bcc('0x40')][_0x2bcc('0x6a')]({'where':{'id':_0x4775a[_0x2bcc('0x60')]['id']}})['then'](handleEntityNotFound(_0x54819a,null))[_0x2bcc('0x1f')](function(_0x19c171){if(_0x19c171){_0x31494d=_0x19c171;_0x3c1363[_0x2bcc('0x43')]=_[_0x2bcc('0x44')](db[_0x2bcc('0x7a')][_0x2bcc('0x41')]);_0x3c1363[_0x2bcc('0x47')]=_[_0x2bcc('0x44')](_0x4775a[_0x2bcc('0x47')]);_0x3c1363['filters']=_[_0x2bcc('0x46')](_0x3c1363['model'],_0x3c1363[_0x2bcc('0x47')]);_0x5a401a[_0x2bcc('0x48')]=_[_0x2bcc('0x46')](_0x3c1363[_0x2bcc('0x43')],qs['fields'](_0x4775a[_0x2bcc('0x47')]['fields']));_0x5a401a[_0x2bcc('0x48')]=_0x5a401a[_0x2bcc('0x48')]['length']?_0x5a401a[_0x2bcc('0x48')]:_0x3c1363[_0x2bcc('0x43')];_0x5a401a['order']=qs['sort'](_0x4775a['query'][_0x2bcc('0x4c')]);_0x5a401a[_0x2bcc('0x4d')]=qs[_0x2bcc('0x45')](_[_0x2bcc('0x4e')](_0x4775a[_0x2bcc('0x47')],_0x3c1363[_0x2bcc('0x45')]));if(_0x4775a[_0x2bcc('0x47')][_0x2bcc('0x4f')]){_0x5a401a['where']=_[_0x2bcc('0x50')](_0x5a401a[_0x2bcc('0x4d')],{'$or':_[_0x2bcc('0x3f')](_0x5a401a[_0x2bcc('0x48')],function(_0x460e4a){var _0x1a349a={};_0x1a349a[_0x460e4a]={'$like':'%'+_0x4775a[_0x2bcc('0x47')][_0x2bcc('0x4f')]+'%'};return _0x1a349a;})});}_0x5a401a=_['merge']({},_0x5a401a,_0x4775a[_0x2bcc('0x52')]);return _0x31494d[_0x2bcc('0x7e')](_0x5a401a);}})[_0x2bcc('0x1f')](function(_0x410539){if(_0x410539){_0x40c38e=_0x410539[_0x2bcc('0x4a')];if(!_0x4775a['query'][_0x2bcc('0x4b')](_0x2bcc('0x6c'))){_0x5a401a[_0x2bcc('0x2f')]=qs[_0x2bcc('0x2f')](_0x4775a[_0x2bcc('0x47')][_0x2bcc('0x2f')]);_0x5a401a[_0x2bcc('0x2d')]=qs[_0x2bcc('0x2d')](_0x4775a[_0x2bcc('0x47')]['offset']);}return _0x31494d[_0x2bcc('0x7e')](_0x5a401a);}})['then'](function(_0x4e3d7f){if(_0x4e3d7f){return _0x4e3d7f?{'count':_0x40c38e,'rows':_0x4e3d7f}:null;}})[_0x2bcc('0x1f')](respondWithResult(_0x54819a,null))[_0x2bcc('0x29')](handleError(_0x54819a,null));};exports[_0x2bcc('0x7f')]=function(_0x1b001e,_0x2f7cd4,_0x44984b){var _0x47256e={'channel':'whatsapp'};var _0x2771e7=[];var _0x364af5=[];var _0x4ce117={};return db[_0x2bcc('0x40')][_0x2bcc('0x55')]({'where':{'id':_0x1b001e['params']['id']},'include':[{'model':db['WhatsappApplication'],'as':_0x2bcc('0x80')}]})[_0x2bcc('0x1f')](handleEntityNotFound(_0x2f7cd4,null))[_0x2bcc('0x1f')](function(_0x300e15){_0x47256e['account']=_0x300e15;if(_0x47256e['account']&&_0x47256e[_0x2bcc('0x81')][_0x2bcc('0x82')]===_0x2bcc('0x83')&&_0x1b001e['body'][_0x2bcc('0x84')]){if(_0x1b001e[_0x2bcc('0x57')][_0x2bcc('0x84')][_0x2bcc('0x4a')]===0x0)return;if(_0x1b001e[_0x2bcc('0x57')][_0x2bcc('0x84')][0x0][_0x2bcc('0x85')]!==_0x2bcc('0x86'))return;return db[_0x2bcc('0x87')][_0x2bcc('0x35')]({'read':!![],'readAt':_0x1b001e['body'][_0x2bcc('0x84')][0x0][_0x2bcc('0x88')]},{'where':{'messageId':_0x1b001e[_0x2bcc('0x57')]['statuses'][0x0]['message_id']},'individualHooks':!![]})[_0x2bcc('0x1f')](function(_0x253c6a){return _0x2f7cd4[_0x2bcc('0x2b')](0xc8)[_0x2bcc('0x2c')](_0x253c6a);});}_0x47256e['applications']=_[_0x2bcc('0x89')](_0x300e15[_0x2bcc('0x80')],['priority'],[_0x2bcc('0x8a')]);if(_0x47256e[_0x2bcc('0x81')][_0x2bcc('0x80')]){delete _0x47256e[_0x2bcc('0x81')][_0x2bcc('0x80')];}return db[_0x2bcc('0x8b')][_0x2bcc('0x61')]()['then'](function(_0x4a1f25){if(!_0x4a1f25){throw new db[(_0x2bcc('0x8c'))][(_0x2bcc('0x8d'))](_0x2bcc('0x8e'));}_0x2771e7=_[_0x2bcc('0x8f')](_[_0x2bcc('0x44')](_0x4a1f25),[_0x2bcc('0x90'),_0x2bcc('0x91')]);_0x364af5=_['difference'](_['keys'](_0x4a1f25),[_0x2bcc('0x90'),_0x2bcc('0x91'),_0x2bcc('0x92'),'ListId']);_0x47256e['body']={'mapKey':_0x2bcc('0x93')};if(_0x47256e[_0x2bcc('0x81')]&&_0x47256e['account'][_0x2bcc('0x82')]===_0x2bcc('0x94')){_0x47256e['body'][_0x2bcc('0x95')]=_0x1b001e[_0x2bcc('0x57')]['From'][_0x2bcc('0x96')](_0x2bcc('0x97'),'');_0x47256e[_0x2bcc('0x57')][_0x2bcc('0x57')]=_0x1b001e[_0x2bcc('0x57')][_0x2bcc('0x98')];_0x47256e[_0x2bcc('0x57')][_0x2bcc('0x99')]=_0x1b001e[_0x2bcc('0x57')][_0x2bcc('0x9a')];}if(_0x47256e['account']&&_0x47256e['account'][_0x2bcc('0x82')]===_0x2bcc('0x83')){_0x47256e['body']['from']=_0x1b001e[_0x2bcc('0x57')][_0x2bcc('0x9b')][0x0][_0x2bcc('0x95')];_0x47256e[_0x2bcc('0x57')][_0x2bcc('0x57')]=_0x1b001e[_0x2bcc('0x57')][_0x2bcc('0x9b')][0x0][_0x2bcc('0x26')][_0x2bcc('0x57')];_0x47256e['body'][_0x2bcc('0x99')]=_0x1b001e[_0x2bcc('0x57')][_0x2bcc('0x9b')][0x0][_0x2bcc('0x9c')];}if(_0x47256e[_0x2bcc('0x57')]['id']){delete _0x47256e[_0x2bcc('0x57')]['id'];}if(_['isNil'](_0x47256e[_0x2bcc('0x57')]['from'])){throw new db[(_0x2bcc('0x8c'))][(_0x2bcc('0x8d'))](_0x2bcc('0x9d'));}if(_[_0x2bcc('0x9e')](_0x47256e[_0x2bcc('0x57')][_0x2bcc('0x57')])||_0x47256e[_0x2bcc('0x57')]['body']===''){throw new db[(_0x2bcc('0x8c'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x2bcc('0x9e')](_0x47256e[_0x2bcc('0x57')][_0x2bcc('0x9f')])){throw new db[(_0x2bcc('0x8c'))]['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x364af5);}if(!_[_0x2bcc('0xa0')](_0x364af5,_0x47256e[_0x2bcc('0x57')][_0x2bcc('0x9f')])){throw new db[(_0x2bcc('0x8c'))][(_0x2bcc('0x8d'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x364af5);}_0x4ce117[_0x47256e[_0x2bcc('0x57')][_0x2bcc('0x9f')]]=_0x47256e[_0x2bcc('0x57')]['from'];return db[_0x2bcc('0xa1')]['find']({'where':{'id':_0x47256e[_0x2bcc('0x81')][_0x2bcc('0xa2')]},'include':[{'model':db['CmContact'],'as':_0x2bcc('0xa3'),'where':_0x4ce117,'limit':0x1,'order':[[_0x2bcc('0x91'),_0x2bcc('0xa4')]]}]});})[_0x2bcc('0x1f')](handleEntityNotFound(_0x2f7cd4,null))[_0x2bcc('0x1f')](function(_0x4993e1){if(_0x4993e1){_0x47256e[_0x2bcc('0xa5')]=_[_0x2bcc('0xa6')](_0x4993e1,[_0x2bcc('0xa3')]);if(_0x4993e1['Contacts'][_0x2bcc('0x4a')]){return _0x4993e1[_0x2bcc('0xa3')][0x0];}var _0x583c05=_[_0x2bcc('0x18')](_0x47256e[_0x2bcc('0x57')],{'firstName':_0x47256e['body'][_0x2bcc('0x95')],'ListId':_0x4993e1['id']});_0x583c05[_0x47256e[_0x2bcc('0x57')][_0x2bcc('0x9f')]]=_0x47256e['body'][_0x2bcc('0x95')];return db[_0x2bcc('0x8b')][_0x2bcc('0x56')](_0x583c05,{'fields':_0x2771e7,'raw':!![]});}})[_0x2bcc('0x1f')](handleEntityNotFound(_0x2f7cd4,null))[_0x2bcc('0x1f')](function(_0x554d35){if(_0x554d35){_0x47256e[_0x2bcc('0xa7')]=_0x554d35;var _0x915451={'ContactId':_0x554d35['id'],'phone':_0x47256e[_0x2bcc('0x57')][_0x2bcc('0x95')],'WhatsappAccountId':_0x1b001e[_0x2bcc('0x60')]['id']};var _0x5a0b7f={'ContactId':_0x554d35['id'],'WhatsappAccountId':_0x1b001e[_0x2bcc('0x60')]['id'],'closed':![]};return db[_0x2bcc('0xa8')][_0x2bcc('0x55')]({'where':_0x5a0b7f})[_0x2bcc('0x1f')](function(_0xd8b5ea){if(_0xd8b5ea){return[_0xd8b5ea,![]];}return db[_0x2bcc('0xa8')][_0x2bcc('0x56')](_0x915451)[_0x2bcc('0x1f')](function(_0x4cea38){return[_0x4cea38,!![]];});});}})['spread'](function(_0x5cc3d0,_0x388871){_0x47256e[_0x2bcc('0xa9')]=_0x5cc3d0[_0x2bcc('0x37')]({'plain':!![]});_0x47256e[_0x2bcc('0xa9')]['created']=![];if(_0x388871){if(_0x47256e[_0x2bcc('0x81')][_0x2bcc('0xaa')]){_0x47256e[_0x2bcc('0xab')][_0x2bcc('0xac')]({'id':0x0,'priority':_0x47256e[_0x2bcc('0xab')]['length']+0x1,'app':_0x2bcc('0xad'),'appdata':_0x2bcc('0xae'),'interval':_0x2bcc('0xaf')});}_0x47256e[_0x2bcc('0xa9')][_0x2bcc('0xb0')]=!![];}return db[_0x2bcc('0x87')][_0x2bcc('0x56')]({'phone':_0x47256e[_0x2bcc('0x57')]['from'],'messageId':_0x47256e['body']['messageId'],'body':_0x47256e[_0x2bcc('0x57')][_0x2bcc('0x57')],'WhatsappAccountId':_0x1b001e[_0x2bcc('0x60')]['id'],'WhatsappInteractionId':_0x5cc3d0['id'],'direction':'in','ContactId':_0x5cc3d0['ContactId'],'AttachmentId':_0x47256e['body'][_0x2bcc('0xb1')]});})['then'](function(_0x37e3db){_0x47256e['message']=_0x37e3db;if(_0x47256e[_0x2bcc('0xa9')][_0x2bcc('0xb2')]){return db['User']['find']({'attributes':['id',_0x2bcc('0x3a')],'where':{'id':_0x47256e[_0x2bcc('0xa9')][_0x2bcc('0xb2')]}})[_0x2bcc('0x1f')](function(_0x47f9c4){if(_0x47f9c4){_0x47256e[_0x2bcc('0xab')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x47f9c4[_0x2bcc('0x3a')]+','+(_0x47256e[_0x2bcc('0x81')]['waitForTheAssignedAgent']||0xa),'interval':_0x2bcc('0xaf')});}return respondWithRpcPromise(_0x2bcc('0xb3'),_0x2bcc('0xb4'),_0x47256e);});}return respondWithRpcPromise(_0x2bcc('0xb3'),'startRouting',_0x47256e);})[_0x2bcc('0x1f')](function(_0x1871a1){if(_0x1871a1){var _0x313b70=0xc8;var _0x49c02e=_0x2bcc('0xb5');logger[_0x2bcc('0x27')](_0x2bcc('0x23'),_0x49c02e,_0x313b70,_0x2bcc('0xb6'));logger[_0x2bcc('0x22')](_0x2bcc('0xb7'),_0x49c02e,_0x313b70,'entity\x20found',JSON[_0x2bcc('0xb8')](_0x1871a1));if(_0x47256e[_0x2bcc('0x81')][_0x2bcc('0x82')]===_0x2bcc('0x94')){return _0x2f7cd4[_0x2bcc('0x2b')](_0x313b70)['set'](_0x2bcc('0xb9'),_0x2bcc('0xba'))[_0x2bcc('0x3b')](_0x2bcc('0xbb'));}else{return _0x2f7cd4['status'](_0x313b70)['json'](_0x1871a1);}}});})['catch'](handleError(_0x2f7cd4,null));};exports[_0x2bcc('0x3b')]=function(_0x35bc62,_0xfeb331,_0xfba866){var _0x484f46,_0x1ff68c,_0x3815c5;if(_[_0x2bcc('0x9e')](_0x35bc62[_0x2bcc('0x57')][_0x2bcc('0x57')])||_0x35bc62[_0x2bcc('0x57')][_0x2bcc('0x57')]===''){throw new db['Sequelize'][(_0x2bcc('0x8d'))](_0x2bcc('0xbc'));}if(_[_0x2bcc('0x9e')](_0x35bc62[_0x2bcc('0x57')]['to'])){throw new db[(_0x2bcc('0x8c'))][(_0x2bcc('0x8d'))](_0x2bcc('0xbd'));}_0x484f46=_0x35bc62[_0x2bcc('0x57')]['to'];return db[_0x2bcc('0x40')][_0x2bcc('0x55')]({'where':{'id':_0x35bc62[_0x2bcc('0x60')]['id']},'include':[{'model':db['CmList'],'as':_0x2bcc('0xbe'),'include':[{'model':db['CmContact'],'as':'Contacts','where':{'mobile':_0x484f46},'limit':0x1,'order':[[_0x2bcc('0x91'),_0x2bcc('0xa4')]]}]}]})['then'](handleEntityNotFound(_0xfeb331,null))[_0x2bcc('0x1f')](function(_0x1cdead){if(_0x1cdead&&_0x1cdead[_0x2bcc('0xbe')]){_0x1ff68c=_0x1cdead['get']({'plain':!![]});if(_0x1ff68c[_0x2bcc('0xbe')]&&_0x1ff68c[_0x2bcc('0xbe')]['Contacts'][_0x2bcc('0x4a')]){return _0x1ff68c['List'][_0x2bcc('0xa3')][0x0];}return db['CmContact'][_0x2bcc('0x56')](_[_0x2bcc('0x18')](_0x35bc62[_0x2bcc('0x57')],{'firstName':_0x484f46,'mobile':_0x484f46,'phone':_0x484f46,'ListId':_0x1ff68c['ListId']}));}})[_0x2bcc('0x1f')](handleEntityNotFound(_0xfeb331,null))[_0x2bcc('0x1f')](function(_0xb03976){if(_0xb03976){_0x3815c5=_0xb03976;return db[_0x2bcc('0xa8')][_0x2bcc('0x55')]({'where':{'ContactId':_0x3815c5['id'],'closed':![],'WhatsappAccountId':_0x1ff68c['id']}})[_0x2bcc('0x1f')](function(_0x4d7765){if(_0x4d7765){return[_0x4d7765,![]];}return db['WhatsappInteraction'][_0x2bcc('0x56')]({'UserId':_0x35bc62[_0x2bcc('0x58')]['id'],'ContactId':_0x3815c5['id'],'WhatsappAccountId':_0x1ff68c['id'],'phone':_0x484f46,'firstMsgDirection':_0x2bcc('0xbf'),'Messages':[_['merge'](_0x35bc62[_0x2bcc('0x57')],{'read':![],'body':_0x35bc62['body'][_0x2bcc('0x57')],'phone':_0x484f46,'WhatsappAccountId':_0x1ff68c['id'],'UserId':_0x35bc62[_0x2bcc('0x58')]['id'],'ContactId':_0x3815c5['id']})]},{'include':[{'model':db[_0x2bcc('0x87')],'as':'Messages'}]})[_0x2bcc('0x1f')](function(_0x511013){return[_0x511013,!![]];});});}})['spread'](function(_0xf03a92,_0x1dab33){if(_0x1dab33){return _0xf03a92;}return db[_0x2bcc('0x87')][_0x2bcc('0x56')](_[_0x2bcc('0x50')](_0x35bc62[_0x2bcc('0x57')],{'read':![],'body':_0x35bc62[_0x2bcc('0x57')][_0x2bcc('0x57')],'phone':_0x484f46,'WhatsappAccountId':_0x1ff68c['id'],'WhatsappInteractionId':_0xf03a92['id'],'UserId':_0x35bc62[_0x2bcc('0x58')]['id'],'ContactId':_0x3815c5['id']}))[_0x2bcc('0x1f')](function(_0x2f7cce){_0xf03a92[_0x2bcc('0xc0')][_0x2bcc('0xc1')]=[];_0xf03a92[_0x2bcc('0xc0')]['Messages'][_0x2bcc('0xac')](_0x2f7cce[_0x2bcc('0xc0')]);return _0xf03a92;});})[_0x2bcc('0x1f')](respondWithResult(_0xfeb331,null))['catch'](handleError(_0xfeb331,null));};
\ No newline at end of file
+var _0xed6d=['to\x20is\x20mandatory','List','dataValues','Messages','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','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','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','jayson/promise','http','request','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','count','limit','Content-Range','reject','save','update','then','destroy','UserProfileResource','stack','name','send','Pause','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','fieldName','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','WhatsappAccountId','getDispositions','Disposition','nolimit','order','options','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','addAgents','omit','spread','removeAgents','isArray','emit','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','Transaction','READ_COMMITTED','WhatsappApplication','bulkCreate','findAndCountAll','finally','getApplications','Applications','account','type','sinch','statuses','state','read','timestamp','applications','orderBy','priority','asc','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','replace','Body','messageId','MessageSid','notifications','message_id','isNil','from\x20is\x20mandatory','Sequelize','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','CmList','CmContact','DESC','list','Contacts','contact','WhatsappInteraction','interaction','created','autoclose','push','close','unmanaged','WhatsappMessage','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>'];(function(_0x1c7502,_0x5d2c70){var _0x2165fa=function(_0x5a64a2){while(--_0x5a64a2){_0x1c7502['push'](_0x1c7502['shift']());}};_0x2165fa(++_0x5d2c70);}(_0xed6d,0xc8));var _0xded6=function(_0x4a747d,_0x3b747f){_0x4a747d=_0x4a747d-0x0;var _0x3a5b5c=_0xed6d[_0x4a747d];return _0x3a5b5c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xded6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xded6('0x1'));var rp=require(_0xded6('0x2'));var moment=require('moment');var BPromise=require(_0xded6('0x3'));var Mustache=require(_0xded6('0x4'));var util=require(_0xded6('0x5'));var path=require('path');var sox=require(_0xded6('0x6'));var csv=require(_0xded6('0x7'));var ejs=require(_0xded6('0x8'));var fs=require('fs');var fs_extra=require(_0xded6('0x9'));var _=require(_0xded6('0xa'));var squel=require('squel');var crypto=require(_0xded6('0xb'));var jsforce=require(_0xded6('0xc'));var deskjs=require(_0xded6('0xd'));var toCsv=require(_0xded6('0x7'));var querystring=require('querystring');var Papa=require(_0xded6('0xe'));var Redis=require(_0xded6('0xf'));var authService=require(_0xded6('0x10'));var qs=require(_0xded6('0x11'));var as=require(_0xded6('0x12'));var hardwareService=require(_0xded6('0x13'));var logger=require(_0xded6('0x14'))(_0xded6('0x15'));var utils=require('../../config/utils');var config=require(_0xded6('0x16'));var licenseUtil=require(_0xded6('0x17'));var db=require(_0xded6('0x18'))['db'];config['redis']=_[_0xded6('0x19')](config[_0xded6('0x1a')],{'host':_0xded6('0x1b'),'port':0x18eb});var socket=require(_0xded6('0x1c'))(new Redis(config[_0xded6('0x1a')]));require('./whatsappAccount.socket')['register'](socket);var jayson=require(_0xded6('0x1d'));var client=jayson['client'][_0xded6('0x1e')]({'port':0x232c});function respondWithRpcPromise(_0x4a64fb,_0xab194a,_0x43c225,_0x3cedaa){return new BPromise(function(_0x32a500,_0x34f18c){var _0x437ae2=_0x3cedaa||client;return _0x437ae2[_0xded6('0x1f')](_0x4a64fb,_0x43c225)['then'](function(_0xc35a0e){logger[_0xded6('0x20')](_0xded6('0x21'),_0xab194a,_0xded6('0x22'));logger[_0xded6('0x23')](_0xded6('0x24'),_0xab194a,'request\x20sent',JSON[_0xded6('0x25')](_0xc35a0e));if(_0xc35a0e['error']){if(_0xc35a0e[_0xded6('0x26')][_0xded6('0x27')]===0x1f4){logger[_0xded6('0x26')](_0xded6('0x21'),_0xab194a,_0xc35a0e[_0xded6('0x26')]['message']);return _0x34f18c(_0xc35a0e[_0xded6('0x26')][_0xded6('0x28')]);}logger[_0xded6('0x26')]('WhatsappAccount,\x20%s,\x20%s',_0xab194a,_0xc35a0e[_0xded6('0x26')]['message']);return _0x32a500(_0xc35a0e['error'][_0xded6('0x28')]);}else{logger[_0xded6('0x20')](_0xded6('0x21'),_0xab194a,_0xded6('0x22'));_0x32a500(_0xc35a0e[_0xded6('0x29')][_0xded6('0x28')]);}})[_0xded6('0x2a')](function(_0x53efc0){logger[_0xded6('0x26')](_0xded6('0x21'),_0xab194a,_0x53efc0);_0x34f18c(_0x53efc0);});});}function respondWithStatusCode(_0x4d74ab,_0x2953b6){_0x2953b6=_0x2953b6||0xcc;return function(_0x3d1516){if(_0x3d1516){return _0x4d74ab[_0xded6('0x2b')](_0x2953b6);}return _0x4d74ab[_0xded6('0x2c')](_0x2953b6)[_0xded6('0x2d')]();};}function respondWithResult(_0x416ec7,_0x22c597){_0x22c597=_0x22c597||0xc8;return function(_0x4ef3aa){if(_0x4ef3aa){return _0x416ec7[_0xded6('0x2c')](_0x22c597)[_0xded6('0x2e')](_0x4ef3aa);}};}function respondWithFilteredResult(_0x40f994,_0xa8b5c){return function(_0x446e74){if(_0x446e74){var _0x4274a2=typeof _0xa8b5c[_0xded6('0x2f')]==='undefined'&&typeof _0xa8b5c['limit']==='undefined';var _0x3279b7=_0x446e74[_0xded6('0x30')];var _0x2f2daa=_0x4274a2?0x0:_0xa8b5c[_0xded6('0x2f')];var _0x589972=_0x4274a2?_0x446e74[_0xded6('0x30')]:_0xa8b5c[_0xded6('0x2f')]+_0xa8b5c[_0xded6('0x31')];var _0x2cfadd;if(_0x589972>=_0x3279b7){_0x589972=_0x3279b7;_0x2cfadd=0xc8;}else{_0x2cfadd=0xce;}_0x40f994[_0xded6('0x2c')](_0x2cfadd);return _0x40f994['set'](_0xded6('0x32'),_0x2f2daa+'-'+_0x589972+'/'+_0x3279b7)[_0xded6('0x2e')](_0x446e74);}return null;};}function patchUpdates(_0x18692c){return function(_0xadae9d){try{jsonpatch['apply'](_0xadae9d,_0x18692c,!![]);}catch(_0x1b0fbf){return BPromise[_0xded6('0x33')](_0x1b0fbf);}return _0xadae9d[_0xded6('0x34')]();};}function saveUpdates(_0x52b480,_0x585ab3){return function(_0x433a53){if(_0x433a53){return _0x433a53[_0xded6('0x35')](_0x52b480)[_0xded6('0x36')](function(_0x4e1d9f){return _0x4e1d9f;});}return null;};}function removeEntity(_0x5b0943,_0x1cccbd){return function(_0x37ae14){if(_0x37ae14){return _0x37ae14[_0xded6('0x37')]()[_0xded6('0x36')](function(){var _0x568e19=_0x37ae14['get']({'plain':!![]});var _0x3dacf1='WhatsappAccounts';return db[_0xded6('0x38')][_0xded6('0x37')]({'where':{'type':_0x3dacf1,'resourceId':_0x568e19['id']}})[_0xded6('0x36')](function(){return _0x37ae14;});})[_0xded6('0x36')](function(){_0x5b0943[_0xded6('0x2c')](0xcc)[_0xded6('0x2d')]();});}};}function handleEntityNotFound(_0x13812b,_0x598883){return function(_0xc1b14d){if(!_0xc1b14d){_0x13812b[_0xded6('0x2b')](0x194);}return _0xc1b14d;};}function handleError(_0x8598e5,_0x464548){_0x464548=_0x464548||0x1f4;return function(_0x9a8799){logger[_0xded6('0x26')](_0x9a8799[_0xded6('0x39')]);if(_0x9a8799[_0xded6('0x3a')]){delete _0x9a8799[_0xded6('0x3a')];}_0x8598e5[_0xded6('0x2c')](_0x464548)[_0xded6('0x3b')](_0x9a8799);};}exports['index']=function(_0x4d7b6d,_0x1338a5){var _0x3f844c={'include':[{'model':db[_0xded6('0x3c')],'as':_0xded6('0x3d')}]},_0x52aa47={},_0x297baa={'count':0x0,'rows':[]};var _0x1a709e=_[_0xded6('0x3e')](db[_0xded6('0x3f')][_0xded6('0x40')],function(_0x17e443){return{'name':_0x17e443[_0xded6('0x41')],'type':_0x17e443['type']['key']};});_0x52aa47['model']=_[_0xded6('0x3e')](_0x1a709e,_0xded6('0x3a'));_0x52aa47[_0xded6('0x42')]=_[_0xded6('0x43')](_0x4d7b6d[_0xded6('0x42')]);_0x52aa47[_0xded6('0x44')]=_[_0xded6('0x45')](_0x52aa47[_0xded6('0x46')],_0x52aa47[_0xded6('0x42')]);_0x3f844c[_0xded6('0x47')]=_[_0xded6('0x45')](_0x52aa47['model'],qs['fields'](_0x4d7b6d[_0xded6('0x42')][_0xded6('0x48')]));_0x3f844c[_0xded6('0x47')]=_0x3f844c[_0xded6('0x47')][_0xded6('0x49')]?_0x3f844c[_0xded6('0x47')]:_0x52aa47[_0xded6('0x46')];if(!_0x4d7b6d[_0xded6('0x42')][_0xded6('0x4a')]('nolimit')){_0x3f844c[_0xded6('0x31')]=qs[_0xded6('0x31')](_0x4d7b6d[_0xded6('0x42')][_0xded6('0x31')]);_0x3f844c['offset']=qs[_0xded6('0x2f')](_0x4d7b6d[_0xded6('0x42')][_0xded6('0x2f')]);}_0x3f844c['order']=qs[_0xded6('0x4b')](_0x4d7b6d[_0xded6('0x42')][_0xded6('0x4b')]);_0x3f844c[_0xded6('0x4c')]=qs[_0xded6('0x44')](_[_0xded6('0x4d')](_0x4d7b6d['query'],_0x52aa47[_0xded6('0x44')]),_0x1a709e);if(_0x4d7b6d[_0xded6('0x42')][_0xded6('0x4e')]){_0x3f844c['where']=_[_0xded6('0x4f')](_0x3f844c[_0xded6('0x4c')],{'$or':_[_0xded6('0x3e')](_0x1a709e,function(_0x177e9e){if(_0x177e9e['type']!==_0xded6('0x50')){var _0x17abb7={};_0x17abb7[_0x177e9e[_0xded6('0x3a')]]={'$like':'%'+_0x4d7b6d[_0xded6('0x42')][_0xded6('0x4e')]+'%'};return _0x17abb7;}})});}_0x3f844c=_[_0xded6('0x4f')]({},_0x3f844c,_0x4d7b6d['options']);var _0x1e268b={'where':_0x3f844c[_0xded6('0x4c')]};return db[_0xded6('0x3f')][_0xded6('0x30')](_0x1e268b)[_0xded6('0x36')](function(_0x269e42){_0x297baa[_0xded6('0x30')]=_0x269e42;if(_0x4d7b6d[_0xded6('0x42')][_0xded6('0x51')]){_0x3f844c[_0xded6('0x52')]=[{'all':!![]}];}return db['WhatsappAccount'][_0xded6('0x53')](_0x3f844c);})['then'](function(_0x4f9e97){_0x297baa[_0xded6('0x54')]=_0x4f9e97;return _0x297baa;})[_0xded6('0x36')](respondWithFilteredResult(_0x1338a5,_0x3f844c))[_0xded6('0x2a')](handleError(_0x1338a5,null));};exports['show']=function(_0xed50f8,_0x5d5ff3){var _0x75512b={'raw':![],'where':{'id':_0xed50f8[_0xded6('0x55')]['id']},'include':[{'model':db[_0xded6('0x3c')],'as':_0xded6('0x3d')}]},_0x3c9503={};_0x3c9503['model']=_[_0xded6('0x43')](db[_0xded6('0x3f')]['rawAttributes']);_0x3c9503[_0xded6('0x42')]=_['keys'](_0xed50f8[_0xded6('0x42')]);_0x3c9503[_0xded6('0x44')]=_[_0xded6('0x45')](_0x3c9503[_0xded6('0x46')],_0x3c9503[_0xded6('0x42')]);_0x75512b['attributes']=_[_0xded6('0x45')](_0x3c9503[_0xded6('0x46')],qs[_0xded6('0x48')](_0xed50f8['query'][_0xded6('0x48')]));_0x75512b[_0xded6('0x47')]=_0x75512b[_0xded6('0x47')][_0xded6('0x49')]?_0x75512b[_0xded6('0x47')]:_0x3c9503[_0xded6('0x46')];if(_0xed50f8[_0xded6('0x42')][_0xded6('0x51')]){_0x75512b[_0xded6('0x52')]=[{'all':!![]}];}_0x75512b=_[_0xded6('0x4f')]({},_0x75512b,_0xed50f8['options']);return db[_0xded6('0x3f')][_0xded6('0x56')](_0x75512b)[_0xded6('0x36')](handleEntityNotFound(_0x5d5ff3,null))['then'](respondWithResult(_0x5d5ff3,null))[_0xded6('0x2a')](handleError(_0x5d5ff3,null));};exports[_0xded6('0x57')]=function(_0x1c5fb6,_0x4ca533){return db[_0xded6('0x3f')][_0xded6('0x57')](_0x1c5fb6[_0xded6('0x58')],{})[_0xded6('0x36')](function(_0x4dcace){var _0x3599ac=_0x1c5fb6['user']['get']({'plain':!![]});if(!_0x3599ac)throw new Error(_0xded6('0x59'));if(_0x3599ac[_0xded6('0x5a')]===_0xded6('0x5b')){var _0x324c50=_0x4dcace[_0xded6('0x5c')]({'plain':!![]});var _0x6e43d='WhatsappAccounts';return db['UserProfileSection'][_0xded6('0x56')]({'where':{'name':_0x6e43d,'userProfileId':_0x3599ac[_0xded6('0x5d')]},'raw':!![]})[_0xded6('0x36')](function(_0x5c3fdb){if(_0x5c3fdb&&_0x5c3fdb[_0xded6('0x5e')]===0x0){return db['UserProfileResource'][_0xded6('0x57')]({'name':_0x324c50['name'],'resourceId':_0x324c50['id'],'type':_0x5c3fdb[_0xded6('0x3a')],'sectionId':_0x5c3fdb['id']},{})[_0xded6('0x36')](function(){return _0x4dcace;});}else{return _0x4dcace;}})[_0xded6('0x2a')](function(_0x5d8e03){logger[_0xded6('0x26')](_0xded6('0x5f'),_0x5d8e03);throw _0x5d8e03;});}return _0x4dcace;})[_0xded6('0x36')](respondWithResult(_0x4ca533,0xc9))[_0xded6('0x2a')](handleError(_0x4ca533,null));};exports[_0xded6('0x35')]=function(_0x2f912e,_0x24c38d){if(_0x2f912e[_0xded6('0x58')]['id']){delete _0x2f912e[_0xded6('0x58')]['id'];}return db['WhatsappAccount'][_0xded6('0x56')]({'where':{'id':_0x2f912e[_0xded6('0x55')]['id']},'include':[{'model':db['Pause'],'as':_0xded6('0x3d')}]})[_0xded6('0x36')](handleEntityNotFound(_0x24c38d,null))['then'](saveUpdates(_0x2f912e['body'],null))['then'](respondWithResult(_0x24c38d,null))['catch'](handleError(_0x24c38d,null));};exports[_0xded6('0x37')]=function(_0x406842,_0x4cb4ab){return db[_0xded6('0x3f')]['find']({'where':{'id':_0x406842[_0xded6('0x55')]['id']}})[_0xded6('0x36')](handleEntityNotFound(_0x4cb4ab,null))[_0xded6('0x36')](removeEntity(_0x4cb4ab,null))['catch'](handleError(_0x4cb4ab,null));};exports[_0xded6('0x60')]=function(_0x4ea463,_0x5ceb14){return db[_0xded6('0x3f')][_0xded6('0x60')]()[_0xded6('0x36')](respondWithResult(_0x5ceb14,null))[_0xded6('0x2a')](handleError(_0x5ceb14,null));};exports['addDisposition']=function(_0x32a94e,_0x2190a9,_0x22f5c6){if(_0x32a94e[_0xded6('0x58')]['id']){delete _0x32a94e[_0xded6('0x58')]['id'];}return db['WhatsappAccount'][_0xded6('0x56')]({'where':{'id':_0x32a94e[_0xded6('0x55')]['id']}})['then'](handleEntityNotFound(_0x2190a9,null))['then'](function(_0x4d7f08){if(_0x4d7f08){_0x32a94e[_0xded6('0x58')][_0xded6('0x61')]=_0x4d7f08['id'];return db['Disposition'][_0xded6('0x57')](_0x32a94e[_0xded6('0x58')]);}})[_0xded6('0x36')](respondWithResult(_0x2190a9,null))[_0xded6('0x2a')](handleError(_0x2190a9,null));};exports[_0xded6('0x62')]=function(_0x2f1c77,_0x865e88,_0x446f8f){var _0x56fdba={'raw':![],'where':{}};var _0x2d1e2d={};var _0x1e9513={'count':0x0,'rows':[]};return db[_0xded6('0x3f')]['findOne']({'where':{'id':_0x2f1c77[_0xded6('0x55')]['id']}})[_0xded6('0x36')](handleEntityNotFound(_0x865e88,null))[_0xded6('0x36')](function(_0x56719f){if(_0x56719f){_0x2d1e2d['model']=_[_0xded6('0x43')](db[_0xded6('0x63')]['rawAttributes']);_0x2d1e2d[_0xded6('0x42')]=_[_0xded6('0x43')](_0x2f1c77[_0xded6('0x42')]);_0x2d1e2d[_0xded6('0x44')]=_[_0xded6('0x45')](_0x2d1e2d['model'],_0x2d1e2d[_0xded6('0x42')]);_0x56fdba[_0xded6('0x47')]=_[_0xded6('0x45')](_0x2d1e2d['model'],qs['fields'](_0x2f1c77[_0xded6('0x42')][_0xded6('0x48')]));_0x56fdba['attributes']=_0x56fdba[_0xded6('0x47')][_0xded6('0x49')]?_0x56fdba['attributes']:_0x2d1e2d[_0xded6('0x46')];if(!_0x2f1c77['query']['hasOwnProperty'](_0xded6('0x64'))){_0x56fdba[_0xded6('0x31')]=qs['limit'](_0x2f1c77[_0xded6('0x42')]['limit']);_0x56fdba[_0xded6('0x2f')]=qs[_0xded6('0x2f')](_0x2f1c77[_0xded6('0x42')]['offset']);}_0x56fdba[_0xded6('0x65')]=qs[_0xded6('0x4b')](_0x2f1c77[_0xded6('0x42')][_0xded6('0x4b')]);_0x56fdba['where']=qs[_0xded6('0x44')](_['pick'](_0x2f1c77[_0xded6('0x42')],_0x2d1e2d[_0xded6('0x44')]));_0x56fdba[_0xded6('0x4c')][_0xded6('0x61')]=_0x56719f['id'];if(_0x2f1c77['query']['filter']){_0x56fdba[_0xded6('0x4c')]=_[_0xded6('0x4f')](_0x56fdba[_0xded6('0x4c')],{'$or':_[_0xded6('0x3e')](_0x56fdba[_0xded6('0x47')],function(_0x40c46a){var _0x2fa08d={};_0x2fa08d[_0x40c46a]={'$like':'%'+_0x2f1c77[_0xded6('0x42')][_0xded6('0x4e')]+'%'};return _0x2fa08d;})});}_0x56fdba=_['merge']({},_0x56fdba,_0x2f1c77[_0xded6('0x66')]);return db[_0xded6('0x63')][_0xded6('0x30')]({'where':_0x56fdba[_0xded6('0x4c')]})[_0xded6('0x36')](function(_0x2ad39c){_0x1e9513[_0xded6('0x30')]=_0x2ad39c;if(_0x2f1c77['query']['includeAll']){_0x56fdba[_0xded6('0x52')]=[{'all':!![]}];}return db[_0xded6('0x63')][_0xded6('0x53')](_0x56fdba);})['then'](function(_0x214df2){_0x1e9513[_0xded6('0x54')]=_0x214df2;return _0x1e9513;});}})['then'](respondWithFilteredResult(_0x865e88,_0x56fdba))['catch'](handleError(_0x865e88,null));};exports['removeDispositions']=function(_0x5761d3,_0x53d4de,_0x16d736){return db[_0xded6('0x3f')][_0xded6('0x56')]({'where':{'id':_0x5761d3[_0xded6('0x55')]['id']}})[_0xded6('0x36')](handleEntityNotFound(_0x53d4de,null))[_0xded6('0x36')](function(_0xfcb1e5){if(_0xfcb1e5){return _0xfcb1e5[_0xded6('0x67')](_0x5761d3[_0xded6('0x42')][_0xded6('0x68')]);}})['then'](respondWithStatusCode(_0x53d4de,null))[_0xded6('0x2a')](handleError(_0x53d4de,null));};exports[_0xded6('0x69')]=function(_0x2a8eb7,_0x11a4ab,_0x4f7893){if(_0x2a8eb7['body']['id']){delete _0x2a8eb7[_0xded6('0x58')]['id'];}return db[_0xded6('0x3f')][_0xded6('0x56')]({'where':{'id':_0x2a8eb7[_0xded6('0x55')]['id']}})[_0xded6('0x36')](handleEntityNotFound(_0x11a4ab,null))['then'](function(_0x5e8b6a){if(_0x5e8b6a){_0x2a8eb7['body'][_0xded6('0x61')]=_0x5e8b6a['id'];return db[_0xded6('0x6a')]['create'](_0x2a8eb7['body']);}})[_0xded6('0x36')](respondWithResult(_0x11a4ab,null))['catch'](handleError(_0x11a4ab,null));};exports[_0xded6('0x6b')]=function(_0x58a6fe,_0x5bf4e2,_0x2daf0b){var _0x5da1c8={'raw':![],'where':{}};var _0x5be32c={};var _0x9cdb91={'count':0x0,'rows':[]};return db[_0xded6('0x3f')][_0xded6('0x6c')]({'where':{'id':_0x58a6fe['params']['id']}})[_0xded6('0x36')](handleEntityNotFound(_0x5bf4e2,null))[_0xded6('0x36')](function(_0x5996c3){if(_0x5996c3){_0x5be32c[_0xded6('0x46')]=_[_0xded6('0x43')](db['CannedAnswer']['rawAttributes']);_0x5be32c[_0xded6('0x42')]=_[_0xded6('0x43')](_0x58a6fe[_0xded6('0x42')]);_0x5be32c['filters']=_['intersection'](_0x5be32c[_0xded6('0x46')],_0x5be32c[_0xded6('0x42')]);_0x5da1c8[_0xded6('0x47')]=_[_0xded6('0x45')](_0x5be32c['model'],qs[_0xded6('0x48')](_0x58a6fe[_0xded6('0x42')][_0xded6('0x48')]));_0x5da1c8[_0xded6('0x47')]=_0x5da1c8[_0xded6('0x47')][_0xded6('0x49')]?_0x5da1c8[_0xded6('0x47')]:_0x5be32c['model'];if(!_0x58a6fe[_0xded6('0x42')][_0xded6('0x4a')]('nolimit')){_0x5da1c8['limit']=qs['limit'](_0x58a6fe[_0xded6('0x42')][_0xded6('0x31')]);_0x5da1c8['offset']=qs[_0xded6('0x2f')](_0x58a6fe[_0xded6('0x42')][_0xded6('0x2f')]);}_0x5da1c8['order']=qs[_0xded6('0x4b')](_0x58a6fe['query'][_0xded6('0x4b')]);_0x5da1c8[_0xded6('0x4c')]=qs[_0xded6('0x44')](_[_0xded6('0x4d')](_0x58a6fe[_0xded6('0x42')],_0x5be32c[_0xded6('0x44')]));_0x5da1c8[_0xded6('0x4c')][_0xded6('0x61')]=_0x5996c3['id'];if(_0x58a6fe['query'][_0xded6('0x4e')]){_0x5da1c8[_0xded6('0x4c')]=_[_0xded6('0x4f')](_0x5da1c8[_0xded6('0x4c')],{'$or':_[_0xded6('0x3e')](_0x5da1c8['attributes'],function(_0xcb28f4){var _0x35ef3b={};_0x35ef3b[_0xcb28f4]={'$like':'%'+_0x58a6fe[_0xded6('0x42')][_0xded6('0x4e')]+'%'};return _0x35ef3b;})});}_0x5da1c8=_[_0xded6('0x4f')]({},_0x5da1c8,_0x58a6fe[_0xded6('0x66')]);return db[_0xded6('0x6a')][_0xded6('0x30')]({'where':_0x5da1c8[_0xded6('0x4c')]})['then'](function(_0x34a159){_0x9cdb91[_0xded6('0x30')]=_0x34a159;if(_0x58a6fe['query'][_0xded6('0x51')]){_0x5da1c8['include']=[{'all':!![]}];}return db[_0xded6('0x6a')][_0xded6('0x53')](_0x5da1c8);})[_0xded6('0x36')](function(_0x49948b){_0x9cdb91['rows']=_0x49948b;return _0x9cdb91;});}})[_0xded6('0x36')](respondWithFilteredResult(_0x5bf4e2,_0x5da1c8))['catch'](handleError(_0x5bf4e2,null));};exports['removeAnswers']=function(_0x425f32,_0x29768c,_0x398d59){return db[_0xded6('0x3f')][_0xded6('0x56')]({'where':{'id':_0x425f32[_0xded6('0x55')]['id']}})[_0xded6('0x36')](handleEntityNotFound(_0x29768c,null))[_0xded6('0x36')](function(_0x3c9604){if(_0x3c9604){return _0x3c9604['removeAnswers'](_0x425f32[_0xded6('0x42')][_0xded6('0x68')]);}})[_0xded6('0x36')](respondWithStatusCode(_0x29768c,null))[_0xded6('0x2a')](handleError(_0x29768c,null));};exports[_0xded6('0x6d')]=function(_0x3fa8f1,_0x70a631,_0x44a899){return db['WhatsappAccount'][_0xded6('0x56')]({'where':{'id':_0x3fa8f1[_0xded6('0x55')]['id']}})['then'](handleEntityNotFound(_0x70a631,null))['then'](function(_0x425e67){if(_0x425e67){return _0x425e67[_0xded6('0x6d')](_0x3fa8f1[_0xded6('0x58')]['ids'],_[_0xded6('0x6e')](_0x3fa8f1[_0xded6('0x58')],[_0xded6('0x68'),'id'])||{})[_0xded6('0x6f')](function(_0x1c406c){for(var _0x521dcf=0x0;_0x521dcf<_0x3fa8f1['body'][_0xded6('0x68')][_0xded6('0x49')];_0x521dcf+=0x1){socket['emit']('userWhatsappAccount:save',{'UserId':Number(_0x3fa8f1[_0xded6('0x58')][_0xded6('0x68')][_0x521dcf]),'WhatsappAccountId':Number(_0x3fa8f1['params']['id'])});}return _0x1c406c;});}})[_0xded6('0x36')](respondWithResult(_0x70a631,null))[_0xded6('0x2a')](handleError(_0x70a631,null));};exports[_0xded6('0x70')]=function(_0x17c8e4,_0x13b665,_0x41f010){return db[_0xded6('0x3f')][_0xded6('0x56')]({'where':{'id':_0x17c8e4[_0xded6('0x55')]['id']}})[_0xded6('0x36')](handleEntityNotFound(_0x13b665,null))[_0xded6('0x36')](function(_0x2054e8){if(_0x2054e8){return _0x2054e8['removeAgents'](_0x17c8e4['query'][_0xded6('0x68')])[_0xded6('0x36')](function(){if(_[_0xded6('0x71')](_0x17c8e4['query'][_0xded6('0x68')])){for(var _0x57e8b4=0x0;_0x57e8b4<_0x17c8e4[_0xded6('0x42')][_0xded6('0x68')][_0xded6('0x49')];_0x57e8b4+=0x1){socket[_0xded6('0x72')](_0xded6('0x73'),{'UserId':Number(_0x17c8e4[_0xded6('0x42')][_0xded6('0x68')][_0x57e8b4]),'WhatsappAccountId':Number(_0x17c8e4['params']['id'])});}}else{socket['emit']('userWhatsappAccount:remove',{'UserId':Number(_0x17c8e4['query'][_0xded6('0x68')]),'WhatsappAccountId':Number(_0x17c8e4[_0xded6('0x55')]['id'])});}});}})[_0xded6('0x36')](respondWithStatusCode(_0x13b665,null))[_0xded6('0x2a')](handleError(_0x13b665,null));};exports[_0xded6('0x74')]=function(_0x3c85c9,_0xf474cb,_0x3bb886){var _0x39860d={};var _0x2bdd58={};var _0x212744;var _0xb59eda;return db[_0xded6('0x3f')]['findOne']({'where':{'id':_0x3c85c9[_0xded6('0x55')]['id']}})[_0xded6('0x36')](handleEntityNotFound(_0xf474cb,null))[_0xded6('0x36')](function(_0x4dc934){if(_0x4dc934){_0x212744=_0x4dc934;_0x2bdd58[_0xded6('0x46')]=_[_0xded6('0x43')](db[_0xded6('0x75')][_0xded6('0x40')]);_0x2bdd58['query']=_[_0xded6('0x43')](_0x3c85c9[_0xded6('0x42')]);_0x2bdd58[_0xded6('0x44')]=_[_0xded6('0x45')](_0x2bdd58[_0xded6('0x46')],_0x2bdd58[_0xded6('0x42')]);_0x39860d[_0xded6('0x47')]=_[_0xded6('0x45')](_0x2bdd58[_0xded6('0x46')],qs[_0xded6('0x48')](_0x3c85c9[_0xded6('0x42')][_0xded6('0x48')]));_0x39860d[_0xded6('0x47')]=_0x39860d[_0xded6('0x47')][_0xded6('0x49')]?_0x39860d[_0xded6('0x47')]:_0x2bdd58['model'];_0x39860d[_0xded6('0x65')]=qs['sort'](_0x3c85c9[_0xded6('0x42')][_0xded6('0x4b')]);_0x39860d[_0xded6('0x4c')]=qs[_0xded6('0x44')](_[_0xded6('0x4d')](_0x3c85c9[_0xded6('0x42')],_0x2bdd58[_0xded6('0x44')]));if(_0x3c85c9[_0xded6('0x42')]['filter']){_0x39860d[_0xded6('0x4c')]=_['merge'](_0x39860d[_0xded6('0x4c')],{'$or':_['map'](_0x39860d['attributes'],function(_0x6e8386){var _0x50d1ae={};_0x50d1ae[_0x6e8386]={'$like':'%'+_0x3c85c9[_0xded6('0x42')][_0xded6('0x4e')]+'%'};return _0x50d1ae;})});}_0x39860d=_[_0xded6('0x4f')]({},_0x39860d,_0x3c85c9[_0xded6('0x66')]);return _0x212744[_0xded6('0x74')](_0x39860d);}})[_0xded6('0x36')](function(_0xfe4f9c){if(_0xfe4f9c){_0xb59eda=_0xfe4f9c[_0xded6('0x49')];if(!_0x3c85c9['query'][_0xded6('0x4a')](_0xded6('0x64'))){_0x39860d['limit']=qs[_0xded6('0x31')](_0x3c85c9[_0xded6('0x42')][_0xded6('0x31')]);_0x39860d[_0xded6('0x2f')]=qs[_0xded6('0x2f')](_0x3c85c9[_0xded6('0x42')][_0xded6('0x2f')]);}return _0x212744[_0xded6('0x74')](_0x39860d);}})[_0xded6('0x36')](function(_0x447918){if(_0x447918){return _0x447918?{'count':_0xb59eda,'rows':_0x447918}:null;}})[_0xded6('0x36')](respondWithResult(_0xf474cb,null))['catch'](handleError(_0xf474cb,null));};exports[_0xded6('0x76')]=function(_0x5fb715,_0x439bc2){var _0x43267b=_0x5fb715[_0xded6('0x55')]['id'];var _0x489426=_0x5fb715[_0xded6('0x58')];var _0x1c2338=0xc8;var _0x4e3ba2=null;return db[_0xded6('0x77')]['transaction']({'isolationLevel':db[_0xded6('0x77')][_0xded6('0x78')]['ISOLATION_LEVELS'][_0xded6('0x79')]},function(_0x54dfed){return db[_0xded6('0x3f')][_0xded6('0x6c')]({'where':{'id':_0x43267b},'transaction':_0x54dfed})[_0xded6('0x36')](function(_0x3fe22a){if(_0x3fe22a){return db[_0xded6('0x7a')]['destroy']({'where':{'WhatsappAccountId':_0x43267b},'transaction':_0x54dfed})[_0xded6('0x36')](function(){var _0x1ae297=_[_0xded6('0x3e')](_0x489426,function(_0x594741){_0x594741[_0xded6('0x61')]=_0x43267b;return _0x594741;});return db[_0xded6('0x7a')][_0xded6('0x7b')](_0x1ae297,{'transaction':_0x54dfed});});}else{_0x1c2338=0x194;_0x4e3ba2=[];}});})[_0xded6('0x36')](function(){if(_0x1c2338!==0x194){return db[_0xded6('0x7a')][_0xded6('0x7c')]({'where':{'WhatsappAccountId':_0x43267b},'order':'priority'})['then'](function(_0x16d0fd){_0x4e3ba2=_0x16d0fd;});}})['catch'](function(_0x103843){_0x1c2338=0x1f4;logger['error'](_0x103843[_0xded6('0x39')]);if(_0x103843[_0xded6('0x3a')]){delete _0x103843['name'];}_0x4e3ba2=_0x103843;})[_0xded6('0x7d')](function(){if(_0x4e3ba2===null){_0x439bc2[_0xded6('0x2b')](_0x1c2338);}else{if(_0x1c2338===0x1f4){_0x439bc2[_0xded6('0x2c')](_0x1c2338)[_0xded6('0x3b')](_0x4e3ba2);}else{_0x439bc2[_0xded6('0x2c')](_0x1c2338)['json'](_0x4e3ba2);}}});};exports[_0xded6('0x7e')]=function(_0x330432,_0x59f674,_0x53b87d){var _0x240923={};var _0x48e788={};var _0xba3272;var _0x58e9ef;return db[_0xded6('0x3f')][_0xded6('0x6c')]({'where':{'id':_0x330432[_0xded6('0x55')]['id']}})[_0xded6('0x36')](handleEntityNotFound(_0x59f674,null))['then'](function(_0x5ea007){if(_0x5ea007){_0xba3272=_0x5ea007;_0x48e788[_0xded6('0x46')]=_[_0xded6('0x43')](db[_0xded6('0x7a')][_0xded6('0x40')]);_0x48e788[_0xded6('0x42')]=_[_0xded6('0x43')](_0x330432[_0xded6('0x42')]);_0x48e788[_0xded6('0x44')]=_['intersection'](_0x48e788[_0xded6('0x46')],_0x48e788['query']);_0x240923['attributes']=_[_0xded6('0x45')](_0x48e788[_0xded6('0x46')],qs[_0xded6('0x48')](_0x330432['query']['fields']));_0x240923[_0xded6('0x47')]=_0x240923[_0xded6('0x47')][_0xded6('0x49')]?_0x240923[_0xded6('0x47')]:_0x48e788[_0xded6('0x46')];_0x240923[_0xded6('0x65')]=qs[_0xded6('0x4b')](_0x330432['query'][_0xded6('0x4b')]);_0x240923[_0xded6('0x4c')]=qs[_0xded6('0x44')](_[_0xded6('0x4d')](_0x330432['query'],_0x48e788[_0xded6('0x44')]));if(_0x330432['query'][_0xded6('0x4e')]){_0x240923[_0xded6('0x4c')]=_[_0xded6('0x4f')](_0x240923[_0xded6('0x4c')],{'$or':_[_0xded6('0x3e')](_0x240923[_0xded6('0x47')],function(_0x29ff24){var _0xae0e9={};_0xae0e9[_0x29ff24]={'$like':'%'+_0x330432[_0xded6('0x42')][_0xded6('0x4e')]+'%'};return _0xae0e9;})});}_0x240923=_[_0xded6('0x4f')]({},_0x240923,_0x330432[_0xded6('0x66')]);return _0xba3272['getApplications'](_0x240923);}})[_0xded6('0x36')](function(_0x58d4be){if(_0x58d4be){_0x58e9ef=_0x58d4be[_0xded6('0x49')];if(!_0x330432['query']['hasOwnProperty'](_0xded6('0x64'))){_0x240923[_0xded6('0x31')]=qs['limit'](_0x330432[_0xded6('0x42')]['limit']);_0x240923[_0xded6('0x2f')]=qs['offset'](_0x330432[_0xded6('0x42')][_0xded6('0x2f')]);}return _0xba3272[_0xded6('0x7e')](_0x240923);}})[_0xded6('0x36')](function(_0x571015){if(_0x571015){return _0x571015?{'count':_0x58e9ef,'rows':_0x571015}:null;}})[_0xded6('0x36')](respondWithResult(_0x59f674,null))[_0xded6('0x2a')](handleError(_0x59f674,null));};exports['notify']=function(_0x238b9d,_0x44bc71,_0x4f79e1){var _0x21125a={'channel':'whatsapp'};var _0x2f662b=[];var _0x2830b=[];var _0x561b18={};return db[_0xded6('0x3f')][_0xded6('0x56')]({'where':{'id':_0x238b9d['params']['id']},'include':[{'model':db[_0xded6('0x7a')],'as':_0xded6('0x7f')}]})[_0xded6('0x36')](handleEntityNotFound(_0x44bc71,null))['then'](function(_0x9c70ed){_0x21125a['account']=_0x9c70ed;if(_0x21125a[_0xded6('0x80')]&&_0x21125a[_0xded6('0x80')][_0xded6('0x81')]===_0xded6('0x82')&&_0x238b9d[_0xded6('0x58')][_0xded6('0x83')]){if(_0x238b9d['body'][_0xded6('0x83')][_0xded6('0x49')]===0x0)return;if(_0x238b9d[_0xded6('0x58')]['statuses'][0x0][_0xded6('0x84')]!==_0xded6('0x85'))return;return db['WhatsappMessage']['update']({'read':!![],'readAt':_0x238b9d[_0xded6('0x58')][_0xded6('0x83')][0x0][_0xded6('0x86')]},{'where':{'messageId':_0x238b9d[_0xded6('0x58')][_0xded6('0x83')][0x0]['message_id']},'individualHooks':!![]})[_0xded6('0x36')](function(_0x5664e3){return _0x44bc71['status'](0xc8)['json'](_0x5664e3);});}_0x21125a[_0xded6('0x87')]=_[_0xded6('0x88')](_0x9c70ed['Applications'],[_0xded6('0x89')],[_0xded6('0x8a')]);if(_0x21125a['account'][_0xded6('0x7f')]){delete _0x21125a['account'][_0xded6('0x7f')];}return db['CmContact']['describe']()[_0xded6('0x36')](function(_0x186155){if(!_0x186155){throw new db['Sequelize'][(_0xded6('0x8b'))](_0xded6('0x8c'));}_0x2f662b=_[_0xded6('0x8d')](_['keys'](_0x186155),[_0xded6('0x8e'),'updatedAt']);_0x2830b=_[_0xded6('0x8d')](_[_0xded6('0x43')](_0x186155),[_0xded6('0x8e'),_0xded6('0x8f'),_0xded6('0x90'),_0xded6('0x91')]);_0x21125a['body']={'mapKey':_0xded6('0x92')};if(_0x21125a[_0xded6('0x80')]&&_0x21125a['account'][_0xded6('0x81')]===_0xded6('0x93')){_0x21125a['body'][_0xded6('0x94')]=_0x238b9d[_0xded6('0x58')][_0xded6('0x95')][_0xded6('0x96')]('whatsapp:','');_0x21125a[_0xded6('0x58')][_0xded6('0x58')]=_0x238b9d[_0xded6('0x58')][_0xded6('0x97')];_0x21125a['body'][_0xded6('0x98')]=_0x238b9d[_0xded6('0x58')][_0xded6('0x99')];}if(_0x21125a['account']&&_0x21125a[_0xded6('0x80')][_0xded6('0x81')]===_0xded6('0x82')){_0x21125a['body'][_0xded6('0x94')]=_0x238b9d[_0xded6('0x58')][_0xded6('0x9a')][0x0][_0xded6('0x94')];_0x21125a['body'][_0xded6('0x58')]=_0x238b9d[_0xded6('0x58')][_0xded6('0x9a')][0x0]['message'][_0xded6('0x58')];_0x21125a[_0xded6('0x58')][_0xded6('0x98')]=_0x238b9d[_0xded6('0x58')][_0xded6('0x9a')][0x0][_0xded6('0x9b')];}if(_0x21125a[_0xded6('0x58')]['id']){delete _0x21125a[_0xded6('0x58')]['id'];}if(_[_0xded6('0x9c')](_0x21125a['body'][_0xded6('0x94')])){throw new db['Sequelize'][(_0xded6('0x8b'))](_0xded6('0x9d'));}if(_[_0xded6('0x9c')](_0x21125a[_0xded6('0x58')]['body'])||_0x21125a[_0xded6('0x58')]['body']===''){throw new db[(_0xded6('0x9e'))][(_0xded6('0x8b'))](_0xded6('0x9f'));}if(_[_0xded6('0x9c')](_0x21125a[_0xded6('0x58')]['mapKey'])){throw new db[(_0xded6('0x9e'))][(_0xded6('0x8b'))](_0xded6('0xa0')+_0x2830b);}if(!_[_0xded6('0xa1')](_0x2830b,_0x21125a[_0xded6('0x58')][_0xded6('0xa2')])){throw new db[(_0xded6('0x9e'))][(_0xded6('0x8b'))](_0xded6('0xa3')+_0x2830b);}_0x561b18[_0x21125a[_0xded6('0x58')][_0xded6('0xa2')]]=_0x21125a[_0xded6('0x58')][_0xded6('0x94')];return db[_0xded6('0xa4')][_0xded6('0x56')]({'where':{'id':_0x21125a[_0xded6('0x80')]['ListId']},'include':[{'model':db[_0xded6('0xa5')],'as':'Contacts','where':_0x561b18,'limit':0x1,'order':[['updatedAt',_0xded6('0xa6')]]}]});})[_0xded6('0x36')](handleEntityNotFound(_0x44bc71,null))['then'](function(_0x557c56){if(_0x557c56){_0x21125a[_0xded6('0xa7')]=_[_0xded6('0x6e')](_0x557c56,[_0xded6('0xa8')]);if(_0x557c56[_0xded6('0xa8')][_0xded6('0x49')]){return _0x557c56['Contacts'][0x0];}var _0x12391d=_[_0xded6('0x19')](_0x21125a[_0xded6('0x58')],{'firstName':_0x21125a[_0xded6('0x58')][_0xded6('0x94')],'ListId':_0x557c56['id']});_0x12391d[_0x21125a[_0xded6('0x58')][_0xded6('0xa2')]]=_0x21125a[_0xded6('0x58')]['from'];return db['CmContact'][_0xded6('0x57')](_0x12391d,{'fields':_0x2f662b,'raw':!![]});}})[_0xded6('0x36')](handleEntityNotFound(_0x44bc71,null))[_0xded6('0x36')](function(_0x2d688d){if(_0x2d688d){_0x21125a[_0xded6('0xa9')]=_0x2d688d;var _0x1942af={'ContactId':_0x2d688d['id'],'phone':_0x21125a[_0xded6('0x58')][_0xded6('0x94')],'WhatsappAccountId':_0x238b9d['params']['id']};var _0x5272c6={'ContactId':_0x2d688d['id'],'WhatsappAccountId':_0x238b9d[_0xded6('0x55')]['id'],'closed':![]};return db[_0xded6('0xaa')][_0xded6('0x56')]({'where':_0x5272c6})[_0xded6('0x36')](function(_0x4133c8){if(_0x4133c8){return[_0x4133c8,![]];}return db[_0xded6('0xaa')]['create'](_0x1942af)[_0xded6('0x36')](function(_0x50c04a){return[_0x50c04a,!![]];});});}})[_0xded6('0x6f')](function(_0x16bdfe,_0x58939b){_0x21125a[_0xded6('0xab')]=_0x16bdfe['get']({'plain':!![]});_0x21125a[_0xded6('0xab')][_0xded6('0xac')]=![];if(_0x58939b){if(_0x21125a[_0xded6('0x80')][_0xded6('0xad')]){_0x21125a[_0xded6('0x87')][_0xded6('0xae')]({'id':0x0,'priority':_0x21125a[_0xded6('0x87')]['length']+0x1,'app':_0xded6('0xaf'),'appdata':_0xded6('0xb0'),'interval':'*,*,*,*'});}_0x21125a[_0xded6('0xab')][_0xded6('0xac')]=!![];}return db[_0xded6('0xb1')][_0xded6('0x57')]({'phone':_0x21125a['body'][_0xded6('0x94')],'messageId':_0x21125a[_0xded6('0x58')][_0xded6('0x98')],'body':_0x21125a[_0xded6('0x58')][_0xded6('0x58')],'WhatsappAccountId':_0x238b9d[_0xded6('0x55')]['id'],'WhatsappInteractionId':_0x16bdfe['id'],'direction':'in','ContactId':_0x16bdfe[_0xded6('0xb2')],'AttachmentId':_0x21125a[_0xded6('0x58')][_0xded6('0xb3')]});})[_0xded6('0x36')](function(_0x1cc086){_0x21125a[_0xded6('0x28')]=_0x1cc086;if(_0x21125a[_0xded6('0xab')][_0xded6('0xb4')]){return db[_0xded6('0x75')]['find']({'attributes':['id','name'],'where':{'id':_0x21125a[_0xded6('0xab')][_0xded6('0xb4')]}})[_0xded6('0x36')](function(_0x5e9e3d){if(_0x5e9e3d){_0x21125a[_0xded6('0x87')][_0xded6('0xb5')]({'id':0x0,'priority':0x0,'app':_0xded6('0xb6'),'appdata':_0x5e9e3d[_0xded6('0x3a')]+','+(_0x21125a['account'][_0xded6('0xb7')]||0xa),'interval':_0xded6('0xb8')});}return respondWithRpcPromise(_0xded6('0xb9'),_0xded6('0xba'),_0x21125a);});}return respondWithRpcPromise('Start','startRouting',_0x21125a);})[_0xded6('0x36')](function(_0x547bce){if(_0x547bce){var _0x45de93=0xc8;var _0x2e3c2a=_0xded6('0xbb');logger[_0xded6('0x20')](_0xded6('0x24'),_0x2e3c2a,_0x45de93,_0xded6('0xbc'));logger[_0xded6('0x23')](_0xded6('0xbd'),_0x2e3c2a,_0x45de93,'entity\x20found',JSON['stringify'](_0x547bce));if(_0x21125a[_0xded6('0x80')][_0xded6('0x81')]==='twilio'){return _0x44bc71[_0xded6('0x2c')](_0x45de93)['set']('Content-Type',_0xded6('0xbe'))[_0xded6('0x3b')](_0xded6('0xbf'));}else{return _0x44bc71[_0xded6('0x2c')](_0x45de93)[_0xded6('0x2e')](_0x547bce);}}});})[_0xded6('0x2a')](handleError(_0x44bc71,null));};exports[_0xded6('0x3b')]=function(_0xf81106,_0x48924a,_0x10fa08){var _0x2cfdef,_0xbb2289,_0x4a54d5;if(_['isNil'](_0xf81106[_0xded6('0x58')][_0xded6('0x58')])||_0xf81106[_0xded6('0x58')][_0xded6('0x58')]===''){throw new db[(_0xded6('0x9e'))][(_0xded6('0x8b'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xded6('0x9c')](_0xf81106[_0xded6('0x58')]['to'])){throw new db['Sequelize'][(_0xded6('0x8b'))](_0xded6('0xc0'));}_0x2cfdef=_0xf81106[_0xded6('0x58')]['to'];return db[_0xded6('0x3f')][_0xded6('0x56')]({'where':{'id':_0xf81106[_0xded6('0x55')]['id']},'include':[{'model':db['CmList'],'as':_0xded6('0xc1'),'include':[{'model':db[_0xded6('0xa5')],'as':_0xded6('0xa8'),'where':{'mobile':_0x2cfdef},'limit':0x1,'order':[[_0xded6('0x8f'),_0xded6('0xa6')]]}]}]})[_0xded6('0x36')](handleEntityNotFound(_0x48924a,null))['then'](function(_0x54ff78){if(_0x54ff78&&_0x54ff78['List']){_0xbb2289=_0x54ff78[_0xded6('0x5c')]({'plain':!![]});if(_0xbb2289[_0xded6('0xc1')]&&_0xbb2289['List']['Contacts']['length']){return _0xbb2289['List'][_0xded6('0xa8')][0x0];}return db[_0xded6('0xa5')]['create'](_['defaults'](_0xf81106['body'],{'firstName':_0x2cfdef,'mobile':_0x2cfdef,'phone':_0x2cfdef,'ListId':_0xbb2289[_0xded6('0x91')]}));}})['then'](handleEntityNotFound(_0x48924a,null))[_0xded6('0x36')](function(_0x31a248){if(_0x31a248){_0x4a54d5=_0x31a248;return db['WhatsappInteraction'][_0xded6('0x56')]({'where':{'ContactId':_0x4a54d5['id'],'closed':![],'WhatsappAccountId':_0xbb2289['id']}})[_0xded6('0x36')](function(_0x537db6){if(_0x537db6){return[_0x537db6,![]];}return db['WhatsappInteraction']['create']({'UserId':_0xf81106[_0xded6('0x5b')]['id'],'ContactId':_0x4a54d5['id'],'WhatsappAccountId':_0xbb2289['id'],'phone':_0x2cfdef,'firstMsgDirection':'out','Messages':[_[_0xded6('0x4f')](_0xf81106['body'],{'read':![],'body':_0xf81106[_0xded6('0x58')][_0xded6('0x58')],'phone':_0x2cfdef,'WhatsappAccountId':_0xbb2289['id'],'UserId':_0xf81106[_0xded6('0x5b')]['id'],'ContactId':_0x4a54d5['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':'Messages'}]})[_0xded6('0x36')](function(_0x269199){return[_0x269199,!![]];});});}})[_0xded6('0x6f')](function(_0x56f209,_0x175799){if(_0x175799){return _0x56f209;}return db['WhatsappMessage']['create'](_['merge'](_0xf81106[_0xded6('0x58')],{'read':![],'body':_0xf81106[_0xded6('0x58')]['body'],'phone':_0x2cfdef,'WhatsappAccountId':_0xbb2289['id'],'WhatsappInteractionId':_0x56f209['id'],'UserId':_0xf81106['user']['id'],'ContactId':_0x4a54d5['id']}))[_0xded6('0x36')](function(_0x5a08ee){_0x56f209[_0xded6('0xc2')]['Messages']=[];_0x56f209[_0xded6('0xc2')][_0xded6('0xc3')][_0xded6('0xae')](_0x5a08ee[_0xded6('0xc2')]);return _0x56f209;});})[_0xded6('0x36')](respondWithResult(_0x48924a,null))['catch'](handleError(_0x48924a,null));};
\ No newline at end of file
index f8bd1e6..e790d77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x342d=['remove','emit','events','../../mysqldb','setMaxListeners'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x342d,0x197));var _0xd342=function(_0xaa9e7,_0x4c5841){_0xaa9e7=_0xaa9e7-0x0;var _0x47d3bd=_0x342d[_0xaa9e7];return _0x47d3bd;};'use strict';var EventEmitter=require(_0xd342('0x0'));var WhatsappAccount=require(_0xd342('0x1'))['db']['WhatsappAccount'];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0xd342('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xd342('0x3')};function emitEvent(_0x6efb3f){return function(_0x1ddc25,_0x460f07,_0x65484d){WhatsappAccountEvents['emit'](_0x6efb3f+':'+_0x1ddc25['id'],_0x1ddc25);WhatsappAccountEvents[_0xd342('0x4')](_0x6efb3f,_0x1ddc25);_0x65484d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
+var _0x85c8=['emit','hasOwnProperty','hook','exports','../../mysqldb','WhatsappAccount','setMaxListeners','save'];(function(_0x33cf43,_0x4b4de9){var _0x521db5=function(_0x994173){while(--_0x994173){_0x33cf43['push'](_0x33cf43['shift']());}};_0x521db5(++_0x4b4de9);}(_0x85c8,0x154));var _0x885c=function(_0x5def59,_0x64ebe1){_0x5def59=_0x5def59-0x0;var _0x1008a5=_0x85c8[_0x5def59];return _0x1008a5;};'use strict';var EventEmitter=require('events');var WhatsappAccount=require(_0x885c('0x0'))['db'][_0x885c('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x885c('0x2')](0x0);var events={'afterCreate':_0x885c('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x235f39){return function(_0x1b7715,_0x3d0b5c,_0x3ac4dd){WhatsappAccountEvents[_0x885c('0x4')](_0x235f39+':'+_0x1b7715['id'],_0x1b7715);WhatsappAccountEvents[_0x885c('0x4')](_0x235f39,_0x1b7715);_0x3ac4dd(null);};}for(var e in events){if(events[_0x885c('0x5')](e)){var event=events[e];WhatsappAccount[_0x885c('0x6')](e,emitEvent(event));}}module[_0x885c('0x7')]=WhatsappAccountEvents;
\ No newline at end of file
index 12b52cc..edd4a51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf12d=['util','../../config/logger','api','moment','bluebird','path','define','WhatsappAccount','whatsapp_accounts','lodash'];(function(_0x2fe4db,_0xac13d5){var _0x322005=function(_0xa6cd29){while(--_0xa6cd29){_0x2fe4db['push'](_0x2fe4db['shift']());}};_0x322005(++_0xac13d5);}(_0xf12d,0x167));var _0xdf12=function(_0x542673,_0xf71adb){_0x542673=_0x542673-0x0;var _0x41713b=_0xf12d[_0x542673];return _0x41713b;};'use strict';var _=require(_0xdf12('0x0'));var util=require(_0xdf12('0x1'));var logger=require(_0xdf12('0x2'))(_0xdf12('0x3'));var moment=require(_0xdf12('0x4'));var BPromise=require(_0xdf12('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xdf12('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./whatsappAccount.attributes');module['exports']=function(_0x573c76,_0x167528){return _0x573c76[_0xdf12('0x7')](_0xdf12('0x8'),attributes,{'tableName':_0xdf12('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd6d0=['util','api','moment','path','../../config/environment','./whatsappAccount.attributes','exports','WhatsappAccount'];(function(_0x20589d,_0x55d5bf){var _0x422de9=function(_0x44cbbb){while(--_0x44cbbb){_0x20589d['push'](_0x20589d['shift']());}};_0x422de9(++_0x55d5bf);}(_0xd6d0,0x110));var _0x0d6d=function(_0x7e7905,_0x5360b5){_0x7e7905=_0x7e7905-0x0;var _0x3fc91f=_0xd6d0[_0x7e7905];return _0x3fc91f;};'use strict';var _=require('lodash');var util=require(_0x0d6d('0x0'));var logger=require('../../config/logger')(_0x0d6d('0x1'));var moment=require(_0x0d6d('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x0d6d('0x3'));var rimraf=require('rimraf');var config=require(_0x0d6d('0x4'));var attributes=require(_0x0d6d('0x5'));module[_0x0d6d('0x6')]=function(_0x30ad78,_0x12f3cd){return _0x30ad78['define'](_0x0d6d('0x7'),attributes,{'tableName':'whatsapp_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 68798ad..e0532f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a80=['attributes','include','map','model','catch','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','ShowWhatsappAccount','WhatsappAccount','find','raw','options','where'];(function(_0x1b8baf,_0x29b919){var _0x41d2f4=function(_0x499fc0){while(--_0x499fc0){_0x1b8baf['push'](_0x1b8baf['shift']());}};_0x41d2f4(++_0x29b919);}(_0x8a80,0x1c1));var _0x08a8=function(_0x3d4f51,_0x22fc8f){_0x3d4f51=_0x3d4f51-0x0;var _0x113b49=_0x8a80[_0x3d4f51];return _0x113b49;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x08a8('0x0'));var BPromise=require(_0x08a8('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x08a8('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x08a8('0x3'));var logger=require(_0x08a8('0x4'))(_0x08a8('0x5'));var config=require(_0x08a8('0x6'));var jayson=require(_0x08a8('0x7'));var client=jayson[_0x08a8('0x8')]['http']({'port':0x232a});config[_0x08a8('0x9')]=_[_0x08a8('0xa')](config['redis'],{'host':_0x08a8('0xb'),'port':0x18eb});var socket=require(_0x08a8('0xc'))(new Redis(config[_0x08a8('0x9')]));require(_0x08a8('0xd'))[_0x08a8('0xe')](socket);function respondWithRpcPromise(_0x3ebe3a,_0x446bdb,_0x5a818d){return new BPromise(function(_0x13aaad,_0x120add){return client['request'](_0x3ebe3a,_0x5a818d)[_0x08a8('0xf')](function(_0x2236f0){logger[_0x08a8('0x10')](_0x08a8('0x11'),_0x446bdb,_0x08a8('0x12'));logger[_0x08a8('0x13')](_0x08a8('0x14'),_0x446bdb,_0x08a8('0x12'),JSON[_0x08a8('0x15')](_0x2236f0));if(_0x2236f0[_0x08a8('0x16')]){if(_0x2236f0[_0x08a8('0x16')][_0x08a8('0x17')]===0x1f4){logger[_0x08a8('0x16')](_0x08a8('0x11'),_0x446bdb,_0x2236f0[_0x08a8('0x16')][_0x08a8('0x18')]);return _0x120add(_0x2236f0[_0x08a8('0x16')][_0x08a8('0x18')]);}logger['error'](_0x08a8('0x11'),_0x446bdb,_0x2236f0[_0x08a8('0x16')]['message']);return _0x13aaad(_0x2236f0['error'][_0x08a8('0x18')]);}else{logger['info'](_0x08a8('0x11'),_0x446bdb,_0x08a8('0x12'));_0x13aaad(_0x2236f0[_0x08a8('0x19')]['message']);}})['catch'](function(_0x3cdaad){logger[_0x08a8('0x16')](_0x08a8('0x11'),_0x446bdb,_0x3cdaad);_0x120add(_0x3cdaad);});});}exports[_0x08a8('0x1a')]=function(_0x3a1b5d){var _0x4fd551=this;return new Promise(function(_0x3e98b9,_0x5391a6){return db[_0x08a8('0x1b')][_0x08a8('0x1c')]({'raw':_0x3a1b5d['options']?_0x3a1b5d['options'][_0x08a8('0x1d')]===undefined?!![]:![]:!![],'where':_0x3a1b5d[_0x08a8('0x1e')]?_0x3a1b5d[_0x08a8('0x1e')][_0x08a8('0x1f')]||null:null,'attributes':_0x3a1b5d[_0x08a8('0x1e')]?_0x3a1b5d[_0x08a8('0x1e')][_0x08a8('0x20')]||null:null,'include':_0x3a1b5d[_0x08a8('0x1e')]?_0x3a1b5d[_0x08a8('0x1e')][_0x08a8('0x21')]?_[_0x08a8('0x22')](_0x3a1b5d[_0x08a8('0x1e')]['include'],function(_0x27977a){return{'model':db[_0x27977a[_0x08a8('0x23')]],'as':_0x27977a['as'],'attributes':_0x27977a['attributes'],'include':_0x27977a['include']?_[_0x08a8('0x22')](_0x27977a[_0x08a8('0x21')],function(_0x41e985){return{'model':db[_0x41e985[_0x08a8('0x23')]],'as':_0x41e985['as'],'attributes':_0x41e985['attributes'],'include':_0x41e985[_0x08a8('0x21')]?_[_0x08a8('0x22')](_0x41e985[_0x08a8('0x21')],function(_0x290869){return{'model':db[_0x290869[_0x08a8('0x23')]],'as':_0x290869['as'],'attributes':_0x290869[_0x08a8('0x20')]};}):[]};}):[]};}):[]:[]})[_0x08a8('0xf')](function(_0x47dc31){logger[_0x08a8('0x10')]('ShowWhatsappAccount',_0x3a1b5d);logger[_0x08a8('0x13')](_0x08a8('0x1a'),_0x3a1b5d,JSON[_0x08a8('0x15')](_0x47dc31));_0x3e98b9(_0x47dc31);})[_0x08a8('0x24')](function(_0x254abd){logger[_0x08a8('0x16')]('ShowWhatsappAccount',_0x254abd['message'],_0x3a1b5d);_0x5391a6(_0x4fd551[_0x08a8('0x16')](0x1f4,_0x254abd[_0x08a8('0x18')]));});});};
\ No newline at end of file
+var _0x0005=['socket.io-emitter','then','info','WhatsappAccount,\x20%s,\x20%s','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','attributes','include','map','model','util','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost'];(function(_0x5cc72c,_0x347000){var _0x2c8346=function(_0x57a0c4){while(--_0x57a0c4){_0x5cc72c['push'](_0x5cc72c['shift']());}};_0x2c8346(++_0x347000);}(_0x0005,0x1d4));var _0x5000=function(_0x5e2fa9,_0x3204ff){_0x5e2fa9=_0x5e2fa9-0x0;var _0x59f3a2=_0x0005[_0x5e2fa9];return _0x59f3a2;};'use strict';var _=require('lodash');var util=require(_0x5000('0x0'));var moment=require(_0x5000('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5000('0x2'));var db=require(_0x5000('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x5000('0x4'))(_0x5000('0x5'));var config=require(_0x5000('0x6'));var jayson=require(_0x5000('0x7'));var client=jayson[_0x5000('0x8')]['http']({'port':0x232a});config[_0x5000('0x9')]=_[_0x5000('0xa')](config['redis'],{'host':_0x5000('0xb'),'port':0x18eb});var socket=require(_0x5000('0xc'))(new Redis(config[_0x5000('0x9')]));require('./whatsappAccount.socket')['register'](socket);function respondWithRpcPromise(_0x5cfd1d,_0x578135,_0x2b099e){return new BPromise(function(_0x4ecb88,_0x177053){return client['request'](_0x5cfd1d,_0x2b099e)[_0x5000('0xd')](function(_0x6c4a04){logger[_0x5000('0xe')](_0x5000('0xf'),_0x578135,'request\x20sent');logger[_0x5000('0x10')](_0x5000('0x11'),_0x578135,_0x5000('0x12'),JSON[_0x5000('0x13')](_0x6c4a04));if(_0x6c4a04[_0x5000('0x14')]){if(_0x6c4a04[_0x5000('0x14')]['code']===0x1f4){logger[_0x5000('0x14')](_0x5000('0xf'),_0x578135,_0x6c4a04['error']['message']);return _0x177053(_0x6c4a04[_0x5000('0x14')][_0x5000('0x15')]);}logger['error'](_0x5000('0xf'),_0x578135,_0x6c4a04[_0x5000('0x14')]['message']);return _0x4ecb88(_0x6c4a04[_0x5000('0x14')][_0x5000('0x15')]);}else{logger[_0x5000('0xe')]('WhatsappAccount,\x20%s,\x20%s',_0x578135,_0x5000('0x12'));_0x4ecb88(_0x6c4a04[_0x5000('0x16')][_0x5000('0x15')]);}})[_0x5000('0x17')](function(_0x2f557d){logger[_0x5000('0x14')]('WhatsappAccount,\x20%s,\x20%s',_0x578135,_0x2f557d);_0x177053(_0x2f557d);});});}exports[_0x5000('0x18')]=function(_0x11e7d0){var _0x1ce5c6=this;return new Promise(function(_0x6036f8,_0x352443){return db[_0x5000('0x19')][_0x5000('0x1a')]({'raw':_0x11e7d0[_0x5000('0x1b')]?_0x11e7d0[_0x5000('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x11e7d0[_0x5000('0x1b')]?_0x11e7d0[_0x5000('0x1b')]['where']||null:null,'attributes':_0x11e7d0[_0x5000('0x1b')]?_0x11e7d0['options'][_0x5000('0x1c')]||null:null,'include':_0x11e7d0[_0x5000('0x1b')]?_0x11e7d0[_0x5000('0x1b')][_0x5000('0x1d')]?_['map'](_0x11e7d0[_0x5000('0x1b')]['include'],function(_0x41e5da){return{'model':db[_0x41e5da['model']],'as':_0x41e5da['as'],'attributes':_0x41e5da[_0x5000('0x1c')],'include':_0x41e5da[_0x5000('0x1d')]?_[_0x5000('0x1e')](_0x41e5da['include'],function(_0x59bb66){return{'model':db[_0x59bb66[_0x5000('0x1f')]],'as':_0x59bb66['as'],'attributes':_0x59bb66[_0x5000('0x1c')],'include':_0x59bb66['include']?_[_0x5000('0x1e')](_0x59bb66['include'],function(_0x1b04ba){return{'model':db[_0x1b04ba[_0x5000('0x1f')]],'as':_0x1b04ba['as'],'attributes':_0x1b04ba['attributes']};}):[]};}):[]};}):[]:[]})[_0x5000('0xd')](function(_0x3759d3){logger[_0x5000('0xe')](_0x5000('0x18'),_0x11e7d0);logger[_0x5000('0x10')]('ShowWhatsappAccount',_0x11e7d0,JSON[_0x5000('0x13')](_0x3759d3));_0x6036f8(_0x3759d3);})[_0x5000('0x17')](function(_0x1258b1){logger[_0x5000('0x14')](_0x5000('0x18'),_0x1258b1['message'],_0x11e7d0);_0x352443(_0x1ce5c6[_0x5000('0x14')](0x1f4,_0x1258b1[_0x5000('0x15')]));});});};
\ No newline at end of file
index abdd552..9f318e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69af=['./whatsappAccount.events','save','remove','update','removeListener','register'];(function(_0x1dce32,_0x7f7a3b){var _0xdbcf58=function(_0x542a33){while(--_0x542a33){_0x1dce32['push'](_0x1dce32['shift']());}};_0xdbcf58(++_0x7f7a3b);}(_0x69af,0x1c8));var _0xf69a=function(_0x38dfb4,_0x19e943){_0x38dfb4=_0x38dfb4-0x0;var _0x1c9ae1=_0x69af[_0x38dfb4];return _0x1c9ae1;};'use strict';var WhatsappAccountEvents=require(_0xf69a('0x0'));var events=[_0xf69a('0x1'),_0xf69a('0x2'),_0xf69a('0x3')];function createListener(_0x2c68ed,_0x2863de){return function(_0x721958){_0x2863de['emit'](_0x2c68ed,_0x721958);};}function removeListener(_0x3aa327,_0x4dc905){return function(){WhatsappAccountEvents[_0xf69a('0x4')](_0x3aa327,_0x4dc905);};}exports[_0xf69a('0x5')]=function(_0xc828c6){for(var _0xd331be=0x0,_0x4193db=events['length'];_0xd331be<_0x4193db;_0xd331be++){var _0x4264b3=events[_0xd331be];var _0x682c79=createListener('whatsappAccount:'+_0x4264b3,_0xc828c6);WhatsappAccountEvents['on'](_0x4264b3,_0x682c79);}};
\ No newline at end of file
+var _0x5cb5=['emit','removeListener','whatsappAccount:','./whatsappAccount.events','save','remove','update'];(function(_0x3889ae,_0x4770c3){var _0x6533dd=function(_0x4275f7){while(--_0x4275f7){_0x3889ae['push'](_0x3889ae['shift']());}};_0x6533dd(++_0x4770c3);}(_0x5cb5,0x1c3));var _0x55cb=function(_0x2d2b04,_0x21a33f){_0x2d2b04=_0x2d2b04-0x0;var _0x3fe1e7=_0x5cb5[_0x2d2b04];return _0x3fe1e7;};'use strict';var WhatsappAccountEvents=require(_0x55cb('0x0'));var events=[_0x55cb('0x1'),_0x55cb('0x2'),_0x55cb('0x3')];function createListener(_0x420713,_0x1bd929){return function(_0x5b75cf){_0x1bd929[_0x55cb('0x4')](_0x420713,_0x5b75cf);};}function removeListener(_0x1e57f0,_0x202dcf){return function(){WhatsappAccountEvents[_0x55cb('0x5')](_0x1e57f0,_0x202dcf);};}exports['register']=function(_0x3ba74b){for(var _0x3ee08f=0x0,_0xf568d5=events['length'];_0x3ee08f<_0xf568d5;_0x3ee08f++){var _0x5796c1=events[_0x3ee08f];var _0x2ea5a6=createListener(_0x55cb('0x6')+_0x5796c1,_0x3ba74b);WhatsappAccountEvents['on'](_0x5796c1,_0x2ea5a6);}};
\ No newline at end of file
index cbcd35e..0044c17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4c4=['/:id','update','delete','exports','util','connect-timeout','express','fs-extra','../../config/environment','get','index','isAuthenticated','show','put'];(function(_0x1a53f0,_0x3e915e){var _0x1f536b=function(_0x12a30f){while(--_0x12a30f){_0x1a53f0['push'](_0x1a53f0['shift']());}};_0x1f536b(++_0x3e915e);}(_0xf4c4,0x17e));var _0x4f4c=function(_0x1c510a,_0x1413a9){_0x1c510a=_0x1c510a-0x0;var _0x23cedd=_0xf4c4[_0x1c510a];return _0x23cedd;};'use strict';var multer=require('multer');var util=require(_0x4f4c('0x0'));var path=require('path');var timeout=require(_0x4f4c('0x1'));var express=require(_0x4f4c('0x2'));var router=express['Router']();var fs_extra=require(_0x4f4c('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x4f4c('0x4'));var controller=require('./whatsappApplication.controller');router[_0x4f4c('0x5')]('/',auth['isAuthenticated'](),controller[_0x4f4c('0x6')]);router['get']('/:id',auth[_0x4f4c('0x7')](),controller[_0x4f4c('0x8')]);router['post']('/',auth[_0x4f4c('0x7')](),controller['create']);router[_0x4f4c('0x9')](_0x4f4c('0xa'),auth[_0x4f4c('0x7')](),controller[_0x4f4c('0xb')]);router[_0x4f4c('0xc')]('/:id',auth[_0x4f4c('0x7')](),controller['destroy']);module[_0x4f4c('0xd')]=router;
\ No newline at end of file
+var _0xec36=['/:id','destroy','exports','path','connect-timeout','fs-extra','./whatsappApplication.controller','index','get','isAuthenticated','post','create','put','delete'];(function(_0x5830ff,_0x22e446){var _0x345d0d=function(_0x2de10f){while(--_0x2de10f){_0x5830ff['push'](_0x5830ff['shift']());}};_0x345d0d(++_0x22e446);}(_0xec36,0x73));var _0x6ec3=function(_0x483102,_0x54e93d){_0x483102=_0x483102-0x0;var _0x5cc885=_0xec36[_0x483102];return _0x5cc885;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6ec3('0x0'));var timeout=require(_0x6ec3('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x6ec3('0x2'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6ec3('0x3'));router['get']('/',auth['isAuthenticated'](),controller[_0x6ec3('0x4')]);router[_0x6ec3('0x5')]('/:id',auth[_0x6ec3('0x6')](),controller['show']);router[_0x6ec3('0x7')]('/',auth[_0x6ec3('0x6')](),controller[_0x6ec3('0x8')]);router[_0x6ec3('0x9')]('/:id',auth[_0x6ec3('0x6')](),controller['update']);router[_0x6ec3('0xa')](_0x6ec3('0xb'),auth[_0x6ec3('0x6')](),controller[_0x6ec3('0xc')]);module[_0x6ec3('0xd')]=router;
\ No newline at end of file
index be7a7d2..8685aae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5574=['INTEGER','STRING','noop','*,*,*,*','sequelize','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5574,0xb2));var _0x4557=function(_0xb0b2de,_0x12f32f){_0xb0b2de=_0xb0b2de-0x0;var _0x2c9055=_0x5574[_0xb0b2de];return _0x2c9055;};'use strict';var Sequelize=require(_0x4557('0x0'));module[_0x4557('0x1')]={'priority':{'type':Sequelize[_0x4557('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x4557('0x3')],'allowNull':![],'defaultValue':_0x4557('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x4557('0x3')]},'interval':{'type':Sequelize[_0x4557('0x3')],'defaultValue':_0x4557('0x5')}};
\ No newline at end of file
+var _0x224d=['*,*,*,*','sequelize','exports','INTEGER','STRING','noop','TEXT'];(function(_0x17e4f9,_0x4318be){var _0xf6cb46=function(_0x329493){while(--_0x329493){_0x17e4f9['push'](_0x17e4f9['shift']());}};_0xf6cb46(++_0x4318be);}(_0x224d,0xf6));var _0xd224=function(_0xa1e030,_0x579969){_0xa1e030=_0xa1e030-0x0;var _0x1619bb=_0x224d[_0xa1e030];return _0x1619bb;};'use strict';var Sequelize=require(_0xd224('0x0'));module[_0xd224('0x1')]={'priority':{'type':Sequelize[_0xd224('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xd224('0x3')],'allowNull':![],'defaultValue':_0xd224('0x4')},'appdata':{'type':Sequelize[_0xd224('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xd224('0x3')],'defaultValue':_0xd224('0x6')}};
\ No newline at end of file
index e7de910..0f6ea89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8969=['catch','show','params','rawAttributes','find','create','body','update','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','map','WhatsappApplication','type','keys','query','filters','model','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll'];(function(_0x2db4f0,_0x3990ba){var _0x1a89e8=function(_0x2423fe){while(--_0x2423fe){_0x2db4f0['push'](_0x2db4f0['shift']());}};_0x1a89e8(++_0x3990ba);}(_0x8969,0x130));var _0x9896=function(_0x3f6d8c,_0x1587ea){_0x3f6d8c=_0x3f6d8c-0x0;var _0x1172da=_0x8969[_0x3f6d8c];return _0x1172da;};'use strict';var emlformat=require(_0x9896('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9896('0x1'));var jsonpatch=require(_0x9896('0x2'));var rp=require(_0x9896('0x3'));var moment=require(_0x9896('0x4'));var BPromise=require(_0x9896('0x5'));var Mustache=require(_0x9896('0x6'));var util=require(_0x9896('0x7'));var path=require('path');var sox=require(_0x9896('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9896('0x9'));var _=require(_0x9896('0xa'));var squel=require(_0x9896('0xb'));var crypto=require('crypto');var jsforce=require(_0x9896('0xc'));var deskjs=require(_0x9896('0xd'));var toCsv=require(_0x9896('0xe'));var querystring=require('querystring');var Papa=require(_0x9896('0xf'));var Redis=require(_0x9896('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9896('0x11'));var as=require(_0x9896('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9896('0x13'))(_0x9896('0x14'));var utils=require(_0x9896('0x15'));var config=require(_0x9896('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5520ac,_0x331757){_0x331757=_0x331757||0xcc;return function(_0x1f77b4){if(_0x1f77b4){return _0x5520ac[_0x9896('0x17')](_0x331757);}return _0x5520ac[_0x9896('0x18')](_0x331757)[_0x9896('0x19')]();};}function respondWithResult(_0x240012,_0x29f386){_0x29f386=_0x29f386||0xc8;return function(_0x3c6f13){if(_0x3c6f13){return _0x240012[_0x9896('0x18')](_0x29f386)[_0x9896('0x1a')](_0x3c6f13);}};}function respondWithFilteredResult(_0x51dce3,_0xa13db9){return function(_0x51e8cc){if(_0x51e8cc){var _0x36596b=typeof _0xa13db9[_0x9896('0x1b')]===_0x9896('0x1c')&&typeof _0xa13db9[_0x9896('0x1d')]==='undefined';var _0x45eb2d=_0x51e8cc[_0x9896('0x1e')];var _0x3f8061=_0x36596b?0x0:_0xa13db9[_0x9896('0x1b')];var _0x4f79dc=_0x36596b?_0x51e8cc[_0x9896('0x1e')]:_0xa13db9['offset']+_0xa13db9[_0x9896('0x1d')];var _0x3cb195;if(_0x4f79dc>=_0x45eb2d){_0x4f79dc=_0x45eb2d;_0x3cb195=0xc8;}else{_0x3cb195=0xce;}_0x51dce3['status'](_0x3cb195);return _0x51dce3[_0x9896('0x1f')](_0x9896('0x20'),_0x3f8061+'-'+_0x4f79dc+'/'+_0x45eb2d)[_0x9896('0x1a')](_0x51e8cc);}return null;};}function patchUpdates(_0x3038fd){return function(_0x281bd8){try{jsonpatch[_0x9896('0x21')](_0x281bd8,_0x3038fd,!![]);}catch(_0x5670e2){return BPromise[_0x9896('0x22')](_0x5670e2);}return _0x281bd8[_0x9896('0x23')]();};}function saveUpdates(_0x4276e3,_0xc6372c){return function(_0x2724b3){if(_0x2724b3){return _0x2724b3['update'](_0x4276e3)[_0x9896('0x24')](function(_0x472992){return _0x472992;});}return null;};}function removeEntity(_0x173eb6,_0x550ed9){return function(_0x5ea62d){if(_0x5ea62d){return _0x5ea62d[_0x9896('0x25')]()[_0x9896('0x24')](function(){_0x173eb6[_0x9896('0x18')](0xcc)[_0x9896('0x19')]();});}};}function handleEntityNotFound(_0xd33728,_0x50f060){return function(_0x5b7592){if(!_0x5b7592){_0xd33728['sendStatus'](0x194);}return _0x5b7592;};}function handleError(_0x39a2d0,_0x559100){_0x559100=_0x559100||0x1f4;return function(_0x2b681e){logger[_0x9896('0x26')](_0x2b681e[_0x9896('0x27')]);if(_0x2b681e[_0x9896('0x28')]){delete _0x2b681e[_0x9896('0x28')];}_0x39a2d0[_0x9896('0x18')](_0x559100)[_0x9896('0x29')](_0x2b681e);};}exports[_0x9896('0x2a')]=function(_0xb2ce2e,_0x3102db){var _0x17a8fe={},_0x45129f={},_0x81b71d={'count':0x0,'rows':[]};var _0x3d3364=_[_0x9896('0x2b')](db[_0x9896('0x2c')]['rawAttributes'],function(_0x24df7d){return{'name':_0x24df7d['fieldName'],'type':_0x24df7d[_0x9896('0x2d')]['key']};});_0x45129f['model']=_[_0x9896('0x2b')](_0x3d3364,_0x9896('0x28'));_0x45129f['query']=_[_0x9896('0x2e')](_0xb2ce2e[_0x9896('0x2f')]);_0x45129f[_0x9896('0x30')]=_['intersection'](_0x45129f[_0x9896('0x31')],_0x45129f[_0x9896('0x2f')]);_0x17a8fe['attributes']=_[_0x9896('0x32')](_0x45129f[_0x9896('0x31')],qs[_0x9896('0x33')](_0xb2ce2e[_0x9896('0x2f')][_0x9896('0x33')]));_0x17a8fe[_0x9896('0x34')]=_0x17a8fe[_0x9896('0x34')][_0x9896('0x35')]?_0x17a8fe[_0x9896('0x34')]:_0x45129f[_0x9896('0x31')];if(!_0xb2ce2e[_0x9896('0x2f')][_0x9896('0x36')]('nolimit')){_0x17a8fe[_0x9896('0x1d')]=qs[_0x9896('0x1d')](_0xb2ce2e[_0x9896('0x2f')][_0x9896('0x1d')]);_0x17a8fe[_0x9896('0x1b')]=qs['offset'](_0xb2ce2e[_0x9896('0x2f')][_0x9896('0x1b')]);}_0x17a8fe[_0x9896('0x37')]=qs[_0x9896('0x38')](_0xb2ce2e[_0x9896('0x2f')][_0x9896('0x38')]);_0x17a8fe[_0x9896('0x39')]=qs[_0x9896('0x30')](_[_0x9896('0x3a')](_0xb2ce2e[_0x9896('0x2f')],_0x45129f[_0x9896('0x30')]),_0x3d3364);if(_0xb2ce2e[_0x9896('0x2f')][_0x9896('0x3b')]){_0x17a8fe['where']=_[_0x9896('0x3c')](_0x17a8fe['where'],{'$or':_['map'](_0x3d3364,function(_0x53a9bd){if(_0x53a9bd[_0x9896('0x2d')]!==_0x9896('0x3d')){var _0x1386cc={};_0x1386cc[_0x53a9bd[_0x9896('0x28')]]={'$like':'%'+_0xb2ce2e[_0x9896('0x2f')][_0x9896('0x3b')]+'%'};return _0x1386cc;}})});}_0x17a8fe=_[_0x9896('0x3c')]({},_0x17a8fe,_0xb2ce2e[_0x9896('0x3e')]);var _0x271c13={'where':_0x17a8fe['where']};return db[_0x9896('0x2c')][_0x9896('0x1e')](_0x271c13)[_0x9896('0x24')](function(_0x14f372){_0x81b71d[_0x9896('0x1e')]=_0x14f372;if(_0xb2ce2e[_0x9896('0x2f')][_0x9896('0x3f')]){_0x17a8fe[_0x9896('0x40')]=[{'all':!![]}];}return db[_0x9896('0x2c')][_0x9896('0x41')](_0x17a8fe);})[_0x9896('0x24')](function(_0x58b611){_0x81b71d['rows']=_0x58b611;return _0x81b71d;})[_0x9896('0x24')](respondWithFilteredResult(_0x3102db,_0x17a8fe))[_0x9896('0x42')](handleError(_0x3102db,null));};exports[_0x9896('0x43')]=function(_0x4e2926,_0x30543d){var _0x4503c3={'raw':!![],'where':{'id':_0x4e2926[_0x9896('0x44')]['id']}},_0x4f7669={};_0x4f7669[_0x9896('0x31')]=_['keys'](db[_0x9896('0x2c')][_0x9896('0x45')]);_0x4f7669[_0x9896('0x2f')]=_['keys'](_0x4e2926[_0x9896('0x2f')]);_0x4f7669[_0x9896('0x30')]=_[_0x9896('0x32')](_0x4f7669['model'],_0x4f7669[_0x9896('0x2f')]);_0x4503c3[_0x9896('0x34')]=_['intersection'](_0x4f7669['model'],qs[_0x9896('0x33')](_0x4e2926[_0x9896('0x2f')][_0x9896('0x33')]));_0x4503c3[_0x9896('0x34')]=_0x4503c3[_0x9896('0x34')][_0x9896('0x35')]?_0x4503c3[_0x9896('0x34')]:_0x4f7669[_0x9896('0x31')];if(_0x4e2926[_0x9896('0x2f')][_0x9896('0x3f')]){_0x4503c3[_0x9896('0x40')]=[{'all':!![]}];}_0x4503c3=_[_0x9896('0x3c')]({},_0x4503c3,_0x4e2926['options']);return db['WhatsappApplication'][_0x9896('0x46')](_0x4503c3)[_0x9896('0x24')](handleEntityNotFound(_0x30543d,null))[_0x9896('0x24')](respondWithResult(_0x30543d,null))[_0x9896('0x42')](handleError(_0x30543d,null));};exports[_0x9896('0x47')]=function(_0x4332f0,_0x1f2aa5){return db[_0x9896('0x2c')][_0x9896('0x47')](_0x4332f0[_0x9896('0x48')],{})[_0x9896('0x24')](respondWithResult(_0x1f2aa5,0xc9))[_0x9896('0x42')](handleError(_0x1f2aa5,null));};exports[_0x9896('0x49')]=function(_0x5325f2,_0x223381){if(_0x5325f2[_0x9896('0x48')]['id']){delete _0x5325f2[_0x9896('0x48')]['id'];}return db[_0x9896('0x2c')][_0x9896('0x46')]({'where':{'id':_0x5325f2['params']['id']}})['then'](handleEntityNotFound(_0x223381,null))['then'](saveUpdates(_0x5325f2[_0x9896('0x48')],null))[_0x9896('0x24')](respondWithResult(_0x223381,null))[_0x9896('0x42')](handleError(_0x223381,null));};exports['destroy']=function(_0x134819,_0x3d0bea){return db[_0x9896('0x2c')][_0x9896('0x46')]({'where':{'id':_0x134819[_0x9896('0x44')]['id']}})[_0x9896('0x24')](handleEntityNotFound(_0x3d0bea,null))['then'](removeEntity(_0x3d0bea,null))['catch'](handleError(_0x3d0bea,null));};
\ No newline at end of file
+var _0xc359=['querystring','papaparse','../../components/auth/service','../../components/parsers/qs','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','WhatsappApplication','rawAttributes','type','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','pick','VIRTUAL','filter','merge','includeAll','include','rows','catch','show','params','keys','length','options','find','create','body','rimraf','fast-json-patch','request-promise','moment','mustache','path','to-csv','crypto','jsforce','desk.js'];(function(_0x5c38bd,_0x2a3bf){var _0xae028a=function(_0x43efc7){while(--_0x43efc7){_0x5c38bd['push'](_0x5c38bd['shift']());}};_0xae028a(++_0x2a3bf);}(_0xc359,0x1d9));var _0x9c35=function(_0x1c7f48,_0x255687){_0x1c7f48=_0x1c7f48-0x0;var _0x274c31=_0xc359[_0x1c7f48];return _0x274c31;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9c35('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9c35('0x1'));var rp=require(_0x9c35('0x2'));var moment=require(_0x9c35('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x9c35('0x4'));var util=require('util');var path=require(_0x9c35('0x5'));var sox=require('sox');var csv=require(_0x9c35('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x9c35('0x7'));var jsforce=require(_0x9c35('0x8'));var deskjs=require(_0x9c35('0x9'));var toCsv=require(_0x9c35('0x6'));var querystring=require(_0x9c35('0xa'));var Papa=require(_0x9c35('0xb'));var Redis=require('ioredis');var authService=require(_0x9c35('0xc'));var qs=require(_0x9c35('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9c35('0xe'));var utils=require('../../config/utils');var config=require(_0x9c35('0xf'));var licenseUtil=require(_0x9c35('0x10'));var db=require(_0x9c35('0x11'))['db'];function respondWithStatusCode(_0x575589,_0x24210f){_0x24210f=_0x24210f||0xcc;return function(_0x7dd8f){if(_0x7dd8f){return _0x575589[_0x9c35('0x12')](_0x24210f);}return _0x575589[_0x9c35('0x13')](_0x24210f)[_0x9c35('0x14')]();};}function respondWithResult(_0x4cc2ca,_0x280758){_0x280758=_0x280758||0xc8;return function(_0x4470df){if(_0x4470df){return _0x4cc2ca[_0x9c35('0x13')](_0x280758)[_0x9c35('0x15')](_0x4470df);}};}function respondWithFilteredResult(_0x2af21e,_0x308392){return function(_0x9e7d2d){if(_0x9e7d2d){var _0x77588e=typeof _0x308392[_0x9c35('0x16')]===_0x9c35('0x17')&&typeof _0x308392[_0x9c35('0x18')]===_0x9c35('0x17');var _0x1ef1d8=_0x9e7d2d[_0x9c35('0x19')];var _0x26db4b=_0x77588e?0x0:_0x308392['offset'];var _0x1d0227=_0x77588e?_0x9e7d2d[_0x9c35('0x19')]:_0x308392[_0x9c35('0x16')]+_0x308392[_0x9c35('0x18')];var _0x4d606f;if(_0x1d0227>=_0x1ef1d8){_0x1d0227=_0x1ef1d8;_0x4d606f=0xc8;}else{_0x4d606f=0xce;}_0x2af21e[_0x9c35('0x13')](_0x4d606f);return _0x2af21e[_0x9c35('0x1a')](_0x9c35('0x1b'),_0x26db4b+'-'+_0x1d0227+'/'+_0x1ef1d8)[_0x9c35('0x15')](_0x9e7d2d);}return null;};}function patchUpdates(_0x69d118){return function(_0x4a84dd){try{jsonpatch[_0x9c35('0x1c')](_0x4a84dd,_0x69d118,!![]);}catch(_0x57ef15){return BPromise[_0x9c35('0x1d')](_0x57ef15);}return _0x4a84dd[_0x9c35('0x1e')]();};}function saveUpdates(_0x29f569,_0x8ffae5){return function(_0x3d2193){if(_0x3d2193){return _0x3d2193[_0x9c35('0x1f')](_0x29f569)[_0x9c35('0x20')](function(_0x52aa95){return _0x52aa95;});}return null;};}function removeEntity(_0x572b46,_0x1bc7e4){return function(_0x2997d3){if(_0x2997d3){return _0x2997d3[_0x9c35('0x21')]()[_0x9c35('0x20')](function(){_0x572b46['status'](0xcc)[_0x9c35('0x14')]();});}};}function handleEntityNotFound(_0x578e00,_0x223d9e){return function(_0x4bf0ea){if(!_0x4bf0ea){_0x578e00['sendStatus'](0x194);}return _0x4bf0ea;};}function handleError(_0x39cd10,_0xaf9e58){_0xaf9e58=_0xaf9e58||0x1f4;return function(_0x2cba78){logger['error'](_0x2cba78[_0x9c35('0x22')]);if(_0x2cba78['name']){delete _0x2cba78[_0x9c35('0x23')];}_0x39cd10[_0x9c35('0x13')](_0xaf9e58)[_0x9c35('0x24')](_0x2cba78);};}exports[_0x9c35('0x25')]=function(_0x4525c9,_0x4f272a){var _0x4593e3={},_0x16e8dd={},_0x568925={'count':0x0,'rows':[]};var _0x476f94=_[_0x9c35('0x26')](db[_0x9c35('0x27')][_0x9c35('0x28')],function(_0x345fbc){return{'name':_0x345fbc['fieldName'],'type':_0x345fbc[_0x9c35('0x29')][_0x9c35('0x2a')]};});_0x16e8dd[_0x9c35('0x2b')]=_[_0x9c35('0x26')](_0x476f94,_0x9c35('0x23'));_0x16e8dd[_0x9c35('0x2c')]=_['keys'](_0x4525c9[_0x9c35('0x2c')]);_0x16e8dd['filters']=_[_0x9c35('0x2d')](_0x16e8dd[_0x9c35('0x2b')],_0x16e8dd[_0x9c35('0x2c')]);_0x4593e3[_0x9c35('0x2e')]=_[_0x9c35('0x2d')](_0x16e8dd['model'],qs[_0x9c35('0x2f')](_0x4525c9[_0x9c35('0x2c')]['fields']));_0x4593e3['attributes']=_0x4593e3[_0x9c35('0x2e')]['length']?_0x4593e3['attributes']:_0x16e8dd['model'];if(!_0x4525c9[_0x9c35('0x2c')][_0x9c35('0x30')](_0x9c35('0x31'))){_0x4593e3[_0x9c35('0x18')]=qs[_0x9c35('0x18')](_0x4525c9[_0x9c35('0x2c')]['limit']);_0x4593e3[_0x9c35('0x16')]=qs[_0x9c35('0x16')](_0x4525c9[_0x9c35('0x2c')][_0x9c35('0x16')]);}_0x4593e3['order']=qs[_0x9c35('0x32')](_0x4525c9[_0x9c35('0x2c')][_0x9c35('0x32')]);_0x4593e3[_0x9c35('0x33')]=qs[_0x9c35('0x34')](_[_0x9c35('0x35')](_0x4525c9[_0x9c35('0x2c')],_0x16e8dd['filters']),_0x476f94);if(_0x4525c9['query']['filter']){_0x4593e3[_0x9c35('0x33')]=_['merge'](_0x4593e3[_0x9c35('0x33')],{'$or':_['map'](_0x476f94,function(_0x49aadb){if(_0x49aadb[_0x9c35('0x29')]!==_0x9c35('0x36')){var _0x20f06e={};_0x20f06e[_0x49aadb[_0x9c35('0x23')]]={'$like':'%'+_0x4525c9[_0x9c35('0x2c')][_0x9c35('0x37')]+'%'};return _0x20f06e;}})});}_0x4593e3=_[_0x9c35('0x38')]({},_0x4593e3,_0x4525c9['options']);var _0x289222={'where':_0x4593e3['where']};return db[_0x9c35('0x27')]['count'](_0x289222)['then'](function(_0x4fc454){_0x568925['count']=_0x4fc454;if(_0x4525c9[_0x9c35('0x2c')][_0x9c35('0x39')]){_0x4593e3[_0x9c35('0x3a')]=[{'all':!![]}];}return db[_0x9c35('0x27')]['findAll'](_0x4593e3);})[_0x9c35('0x20')](function(_0xff952f){_0x568925[_0x9c35('0x3b')]=_0xff952f;return _0x568925;})['then'](respondWithFilteredResult(_0x4f272a,_0x4593e3))[_0x9c35('0x3c')](handleError(_0x4f272a,null));};exports[_0x9c35('0x3d')]=function(_0xc0d025,_0x3ac8e9){var _0x4269b0={'raw':!![],'where':{'id':_0xc0d025[_0x9c35('0x3e')]['id']}},_0x45d102={};_0x45d102[_0x9c35('0x2b')]=_[_0x9c35('0x3f')](db[_0x9c35('0x27')][_0x9c35('0x28')]);_0x45d102['query']=_[_0x9c35('0x3f')](_0xc0d025[_0x9c35('0x2c')]);_0x45d102[_0x9c35('0x34')]=_[_0x9c35('0x2d')](_0x45d102[_0x9c35('0x2b')],_0x45d102[_0x9c35('0x2c')]);_0x4269b0[_0x9c35('0x2e')]=_[_0x9c35('0x2d')](_0x45d102[_0x9c35('0x2b')],qs[_0x9c35('0x2f')](_0xc0d025[_0x9c35('0x2c')][_0x9c35('0x2f')]));_0x4269b0[_0x9c35('0x2e')]=_0x4269b0[_0x9c35('0x2e')][_0x9c35('0x40')]?_0x4269b0[_0x9c35('0x2e')]:_0x45d102[_0x9c35('0x2b')];if(_0xc0d025[_0x9c35('0x2c')][_0x9c35('0x39')]){_0x4269b0[_0x9c35('0x3a')]=[{'all':!![]}];}_0x4269b0=_[_0x9c35('0x38')]({},_0x4269b0,_0xc0d025[_0x9c35('0x41')]);return db['WhatsappApplication'][_0x9c35('0x42')](_0x4269b0)['then'](handleEntityNotFound(_0x3ac8e9,null))[_0x9c35('0x20')](respondWithResult(_0x3ac8e9,null))[_0x9c35('0x3c')](handleError(_0x3ac8e9,null));};exports[_0x9c35('0x43')]=function(_0x587af6,_0x307beb){return db[_0x9c35('0x27')][_0x9c35('0x43')](_0x587af6['body'],{})[_0x9c35('0x20')](respondWithResult(_0x307beb,0xc9))[_0x9c35('0x3c')](handleError(_0x307beb,null));};exports['update']=function(_0x1972dc,_0x4d6833){if(_0x1972dc[_0x9c35('0x44')]['id']){delete _0x1972dc[_0x9c35('0x44')]['id'];}return db[_0x9c35('0x27')][_0x9c35('0x42')]({'where':{'id':_0x1972dc[_0x9c35('0x3e')]['id']}})[_0x9c35('0x20')](handleEntityNotFound(_0x4d6833,null))[_0x9c35('0x20')](saveUpdates(_0x1972dc[_0x9c35('0x44')],null))[_0x9c35('0x20')](respondWithResult(_0x4d6833,null))['catch'](handleError(_0x4d6833,null));};exports[_0x9c35('0x21')]=function(_0x257d9c,_0x22d1c8){return db['WhatsappApplication']['find']({'where':{'id':_0x257d9c[_0x9c35('0x3e')]['id']}})[_0x9c35('0x20')](handleEntityNotFound(_0x22d1c8,null))['then'](removeEntity(_0x22d1c8,null))[_0x9c35('0x3c')](handleError(_0x22d1c8,null));};
\ No newline at end of file
index dd9041a..b849192 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19da=['exports','define','WhatsappApplication','whatsapp_applications','utf8mb4','util','api','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x2b56af,_0x22be29){var _0xd575a4=function(_0x163dff){while(--_0x163dff){_0x2b56af['push'](_0x2b56af['shift']());}};_0xd575a4(++_0x22be29);}(_0x19da,0x9f));var _0xa19d=function(_0xbbfe59,_0x46067f){_0xbbfe59=_0xbbfe59-0x0;var _0x28a2a4=_0x19da[_0xbbfe59];return _0x28a2a4;};'use strict';var _=require('lodash');var util=require(_0xa19d('0x0'));var logger=require('../../config/logger')(_0xa19d('0x1'));var moment=require('moment');var BPromise=require(_0xa19d('0x2'));var rp=require(_0xa19d('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa19d('0x4'));var config=require(_0xa19d('0x5'));var attributes=require('./whatsappApplication.attributes');module[_0xa19d('0x6')]=function(_0x330adb,_0x1f6e10){return _0x330adb[_0xa19d('0x7')](_0xa19d('0x8'),attributes,{'tableName':_0xa19d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xa19d('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x3c17=['bluebird','request-promise','rimraf','../../config/environment','./whatsappApplication.attributes','exports','WhatsappApplication','whatsapp_applications','utf8mb4','lodash','../../config/logger','moment'];(function(_0x5d44ff,_0x252a6f){var _0x5d09a7=function(_0x30914d){while(--_0x30914d){_0x5d44ff['push'](_0x5d44ff['shift']());}};_0x5d09a7(++_0x252a6f);}(_0x3c17,0x1a1));var _0x73c1=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0x3c17[_0x25bea7];return _0x175952;};'use strict';var _=require(_0x73c1('0x0'));var util=require('util');var logger=require(_0x73c1('0x1'))('api');var moment=require(_0x73c1('0x2'));var BPromise=require(_0x73c1('0x3'));var rp=require(_0x73c1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x73c1('0x5'));var config=require(_0x73c1('0x6'));var attributes=require(_0x73c1('0x7'));module[_0x73c1('0x8')]=function(_0x48c943,_0x382f82){return _0x48c943['define'](_0x73c1('0x9'),attributes,{'tableName':_0x73c1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x73c1('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 85bbb06..e2b696f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d6=['WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x5bd2f0,_0x3ffffa){var _0x4d619f=function(_0xfd4565){while(--_0xfd4565){_0x5bd2f0['push'](_0x5bd2f0['shift']());}};_0x4d619f(++_0x3ffffa);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x40ce69,_0x5af128){_0x40ce69=_0x40ce69-0x0;var _0x4cfc7a=_0xd6d6[_0x40ce69];return _0x4cfc7a;};'use strict';var _=require(_0x6d6d('0x0'));var util=require(_0x6d6d('0x1'));var moment=require(_0x6d6d('0x2'));var BPromise=require(_0x6d6d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6d6d('0x4'));var db=require(_0x6d6d('0x5'))['db'];var utils=require(_0x6d6d('0x6'));var logger=require(_0x6d6d('0x7'))(_0x6d6d('0x8'));var config=require(_0x6d6d('0x9'));var jayson=require(_0x6d6d('0xa'));var client=jayson['client'][_0x6d6d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1bf731,_0x44f83d,_0x18f824){return new BPromise(function(_0xd49f57,_0x408f88){return client[_0x6d6d('0xc')](_0x1bf731,_0x18f824)['then'](function(_0x51dd38){logger[_0x6d6d('0xd')](_0x6d6d('0xe'),_0x44f83d,_0x6d6d('0xf'));logger[_0x6d6d('0x10')](_0x6d6d('0x11'),_0x44f83d,'request\x20sent',JSON[_0x6d6d('0x12')](_0x51dd38));if(_0x51dd38[_0x6d6d('0x13')]){if(_0x51dd38['error']['code']===0x1f4){logger[_0x6d6d('0x13')](_0x6d6d('0xe'),_0x44f83d,_0x51dd38[_0x6d6d('0x13')][_0x6d6d('0x14')]);return _0x408f88(_0x51dd38[_0x6d6d('0x13')][_0x6d6d('0x14')]);}logger[_0x6d6d('0x13')](_0x6d6d('0xe'),_0x44f83d,_0x51dd38['error'][_0x6d6d('0x14')]);return _0xd49f57(_0x51dd38[_0x6d6d('0x13')][_0x6d6d('0x14')]);}else{logger[_0x6d6d('0xd')](_0x6d6d('0xe'),_0x44f83d,'request\x20sent');_0xd49f57(_0x51dd38[_0x6d6d('0x15')]['message']);}})[_0x6d6d('0x16')](function(_0x2cbc86){logger[_0x6d6d('0x13')]('WhatsappApplication,\x20%s,\x20%s',_0x44f83d,_0x2cbc86);_0x408f88(_0x2cbc86);});});}
\ No newline at end of file
+var _0x4c4e=['result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x20b84e,_0x2de419){var _0x287134=function(_0xb1d8fe){while(--_0xb1d8fe){_0x20b84e['push'](_0x20b84e['shift']());}};_0x287134(++_0x2de419);}(_0x4c4e,0x152));var _0xe4c4=function(_0x49b26e,_0x365d54){_0x49b26e=_0x49b26e-0x0;var _0x2022b6=_0x4c4e[_0x49b26e];return _0x2022b6;};'use strict';var _=require(_0xe4c4('0x0'));var util=require('util');var moment=require(_0xe4c4('0x1'));var BPromise=require(_0xe4c4('0x2'));var rs=require(_0xe4c4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe4c4('0x4'))['db'];var utils=require(_0xe4c4('0x5'));var logger=require(_0xe4c4('0x6'))('rpc');var config=require(_0xe4c4('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe4c4('0x8')][_0xe4c4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x262b64,_0xad105,_0x22085a){return new BPromise(function(_0x329d29,_0x28a42e){return client[_0xe4c4('0xa')](_0x262b64,_0x22085a)['then'](function(_0x589b2e){logger[_0xe4c4('0xb')](_0xe4c4('0xc'),_0xad105,_0xe4c4('0xd'));logger[_0xe4c4('0xe')](_0xe4c4('0xf'),_0xad105,_0xe4c4('0xd'),JSON['stringify'](_0x589b2e));if(_0x589b2e[_0xe4c4('0x10')]){if(_0x589b2e[_0xe4c4('0x10')][_0xe4c4('0x11')]===0x1f4){logger[_0xe4c4('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0xad105,_0x589b2e[_0xe4c4('0x10')][_0xe4c4('0x12')]);return _0x28a42e(_0x589b2e['error'][_0xe4c4('0x12')]);}logger[_0xe4c4('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0xad105,_0x589b2e[_0xe4c4('0x10')][_0xe4c4('0x12')]);return _0x329d29(_0x589b2e['error'][_0xe4c4('0x12')]);}else{logger[_0xe4c4('0xb')](_0xe4c4('0xc'),_0xad105,_0xe4c4('0xd'));_0x329d29(_0x589b2e[_0xe4c4('0x13')][_0xe4c4('0x12')]);}})[_0xe4c4('0x14')](function(_0x1038cb){logger[_0xe4c4('0x10')](_0xe4c4('0xc'),_0xad105,_0x1038cb);_0x28a42e(_0x1038cb);});});}
\ No newline at end of file
index 20f457f..efe8bde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa23f=['/:id/messages','/:id/tags','tracked','whatsapp','addTags','put','whatsappinteraction:update','update','delete','whatsappinteraction:destroy','destroy','removeTags','multer','util','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','getMessages','/:id/download','download','post'];(function(_0x4de4d0,_0x250c68){var _0x1084a2=function(_0x45d2ea){while(--_0x45d2ea){_0x4de4d0['push'](_0x4de4d0['shift']());}};_0x1084a2(++_0x250c68);}(_0xa23f,0x7c));var _0xfa23=function(_0x17fb6a,_0x1d89e4){_0x17fb6a=_0x17fb6a-0x0;var _0x334652=_0xa23f[_0x17fb6a];return _0x334652;};'use strict';var multer=require(_0xfa23('0x0'));var util=require(_0xfa23('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xfa23('0x2'));var router=express[_0xfa23('0x3')]();var fs_extra=require(_0xfa23('0x4'));var auth=require(_0xfa23('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xfa23('0x6'));var controller=require('./whatsappInteraction.controller');router[_0xfa23('0x7')]('/',auth[_0xfa23('0x8')](),controller[_0xfa23('0x9')]);router[_0xfa23('0x7')]('/describe',auth[_0xfa23('0x8')](),controller['describe']);router[_0xfa23('0x7')](_0xfa23('0xa'),auth[_0xfa23('0x8')](),controller[_0xfa23('0xb')]);router[_0xfa23('0x7')]('/:id/messages',auth['isAuthenticated'](),controller[_0xfa23('0xc')]);router['get'](_0xfa23('0xd'),auth['isAuthenticated'](),controller[_0xfa23('0xe')]);router[_0xfa23('0xf')]('/',auth[_0xfa23('0x8')](),controller['create']);router[_0xfa23('0xf')](_0xfa23('0x10'),auth[_0xfa23('0x8')](),controller['addMessage']);router['post'](_0xfa23('0x11'),auth[_0xfa23('0x8')](),interaction[_0xfa23('0x12')](_0xfa23('0x13'),'whatsappinteraction:addtags'),controller[_0xfa23('0x14')]);router[_0xfa23('0x15')](_0xfa23('0xa'),auth[_0xfa23('0x8')](),interaction['tracked'](_0xfa23('0x13'),_0xfa23('0x16')),controller[_0xfa23('0x17')]);router[_0xfa23('0x18')](_0xfa23('0xa'),auth['isAuthenticated'](),interaction['tracked']('whatsapp',_0xfa23('0x19')),controller[_0xfa23('0x1a')]);router['delete'](_0xfa23('0x11'),auth[_0xfa23('0x8')](),controller[_0xfa23('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0x4819=['whatsappinteraction:addtags','put','whatsappinteraction:update','update','delete','removeTags','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','isAuthenticated','/describe','describe','get','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','whatsapp'];(function(_0x31991b,_0xaf75d2){var _0x307304=function(_0x2f36c5){while(--_0x2f36c5){_0x31991b['push'](_0x31991b['shift']());}};_0x307304(++_0xaf75d2);}(_0x4819,0xcd));var _0x9481=function(_0x5c5fb4,_0x2cb903){_0x5c5fb4=_0x5c5fb4-0x0;var _0x4c0813=_0x4819[_0x5c5fb4];return _0x4c0813;};'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']('/',auth[_0x9481('0xa')](),controller['index']);router['get'](_0x9481('0xb'),auth[_0x9481('0xa')](),controller[_0x9481('0xc')]);router[_0x9481('0xd')](_0x9481('0xe'),auth['isAuthenticated'](),controller[_0x9481('0xf')]);router['get'](_0x9481('0x10'),auth['isAuthenticated'](),controller[_0x9481('0x11')]);router[_0x9481('0xd')](_0x9481('0x12'),auth[_0x9481('0xa')](),controller[_0x9481('0x13')]);router[_0x9481('0x14')]('/',auth[_0x9481('0xa')](),controller[_0x9481('0x15')]);router[_0x9481('0x14')]('/:id/messages',auth['isAuthenticated'](),controller[_0x9481('0x16')]);router[_0x9481('0x14')](_0x9481('0x17'),auth[_0x9481('0xa')](),interaction[_0x9481('0x18')](_0x9481('0x19'),_0x9481('0x1a')),controller['addTags']);router[_0x9481('0x1b')](_0x9481('0xe'),auth['isAuthenticated'](),interaction[_0x9481('0x18')]('whatsapp',_0x9481('0x1c')),controller[_0x9481('0x1d')]);router[_0x9481('0x1e')](_0x9481('0xe'),auth['isAuthenticated'](),interaction['tracked'](_0x9481('0x19'),'whatsappinteraction:destroy'),controller['destroy']);router[_0x9481('0x1e')](_0x9481('0x17'),auth[_0x9481('0xa')](),controller[_0x9481('0x1f')]);module[_0x9481('0x20')]=router;
\ No newline at end of file
index 9294e11..325f3eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe292=['exports','BOOLEAN','STRING','DATE','ENUM','out'];(function(_0x1a11c2,_0x485a96){var _0x266cdf=function(_0x59c6df){while(--_0x59c6df){_0x1a11c2['push'](_0x1a11c2['shift']());}};_0x266cdf(++_0x485a96);}(_0xe292,0x19e));var _0x2e29=function(_0x550440,_0x3a5c32){_0x550440=_0x550440-0x0;var _0x2e2a84=_0xe292[_0x550440];return _0x2e2a84;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0x2e29('0x0')]={'closed':{'type':Sequelize[_0x2e29('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x2e29('0x2')]},'thirdDisposition':{'type':Sequelize[_0x2e29('0x2')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x2e29('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x2e29('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x2e29('0x4')]('in',_0x2e29('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x2e29('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x00e0=['ENUM','out','BOOLEAN','sequelize','moment','exports','DATE','STRING'];(function(_0x18fd5c,_0x452ebb){var _0x19e42e=function(_0x9f350e){while(--_0x9f350e){_0x18fd5c['push'](_0x18fd5c['shift']());}};_0x19e42e(++_0x452ebb);}(_0x00e0,0x1e3));var _0x000e=function(_0x55ce2c,_0x2a9cd6){_0x55ce2c=_0x55ce2c-0x0;var _0x1c1750=_0x00e0[_0x55ce2c];return _0x1c1750;};'use strict';var Sequelize=require(_0x000e('0x0'));var moment=require(_0x000e('0x1'));module[_0x000e('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x000e('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x000e('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x000e('0x5')]('in',_0x000e('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x000e('0x5')]('in',_0x000e('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x000e('0x7')],'defaultValue':![]}};
\ No newline at end of file
index 6d133e9..fe250ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58cc=['WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','sequelize','toString','keyBy','fields','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','i.*','Contact.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','WhatsappInteractionId','all','rows','catch','show','params','includeAll','include','options','create','body','addMessage','WhatsappMessage','ids','omit','getMessages','findOne','merge','findAll','addTags','setTags','spread','color','emit','whatsappInteractionTags:save','removeTags','download','unix','join','root','tmp','server','files','attachments','firstName','Attachment','Messages','direction','secret','WhatsappAccount','Account','get','mkdirSync','Whatsapp','Owner','N.A.','format','YYYY-MM-DD\x20HH:mm:ss','closedAt','disposition','basename','existsSync','pipe','out','lastName','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','update','destroy','then','error','stack','name','Users','map','fullname','TagIds','Tags','split','forEach','push','waiting','talking','answered','unmanaged','total','closed','UserId','index','WhatsappInteraction','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','length','hasOwnProperty','nolimit','sort','where','pick','select','field','from','tools_tags','u.id','left_join','users','u.id\x20=\x20ui.UserId','whatsapp_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','whatsapp_accounts','me.WhatsappInteractionId\x20=\x20i.id','expr','search','parseSearch','conditions','unreadMessages','having','`\x20=\x200','Contact','operator','value','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','buildExpression','text','Tag','User','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','start','some','compact','isEmpty'];(function(_0x42f009,_0x5e27b1){var _0x22a1e0=function(_0x297993){while(--_0x297993){_0x42f009['push'](_0x42f009['shift']());}};_0x22a1e0(++_0x5e27b1);}(_0x58cc,0x7a));var _0xc58c=function(_0x3b96cf,_0x1592f2){_0x3b96cf=_0x3b96cf-0x0;var _0x2e315a=_0x58cc[_0x3b96cf];return _0x2e315a;};'use strict';var emlformat=require(_0xc58c('0x0'));var rimraf=require(_0xc58c('0x1'));var zipdir=require(_0xc58c('0x2'));var jsonpatch=require(_0xc58c('0x3'));var rp=require(_0xc58c('0x4'));var moment=require(_0xc58c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xc58c('0x6'));var util=require(_0xc58c('0x7'));var path=require(_0xc58c('0x8'));var sox=require(_0xc58c('0x9'));var csv=require(_0xc58c('0xa'));var ejs=require(_0xc58c('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc58c('0xc'));var crypto=require(_0xc58c('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xc58c('0xe'));var toCsv=require(_0xc58c('0xa'));var querystring=require('querystring');var Papa=require(_0xc58c('0xf'));var Redis=require('ioredis');var authService=require(_0xc58c('0x10'));var qs=require(_0xc58c('0x11'));var as=require(_0xc58c('0x12'));var pdf=require(_0xc58c('0x13'));var hardwareService=require(_0xc58c('0x14'));var logger=require(_0xc58c('0x15'))('api');var utils=require(_0xc58c('0x16'));var config=require(_0xc58c('0x17'));var licenseUtil=require(_0xc58c('0x18'));var db=require(_0xc58c('0x19'))['db'];config[_0xc58c('0x1a')]=_[_0xc58c('0x1b')](config[_0xc58c('0x1a')],{'host':_0xc58c('0x1c'),'port':0x18eb});var socket=require(_0xc58c('0x1d'))(new Redis(config[_0xc58c('0x1a')]));require('./whatsappInteraction.socket')[_0xc58c('0x1e')](socket);function respondWithStatusCode(_0x59b60a,_0x5fc334){_0x5fc334=_0x5fc334||0xcc;return function(_0x2086a2){if(_0x2086a2){return _0x59b60a[_0xc58c('0x1f')](_0x5fc334);}return _0x59b60a[_0xc58c('0x20')](_0x5fc334)[_0xc58c('0x21')]();};}function respondWithResult(_0x3fc914,_0x294b48){_0x294b48=_0x294b48||0xc8;return function(_0xf1601f){if(_0xf1601f){return _0x3fc914[_0xc58c('0x20')](_0x294b48)[_0xc58c('0x22')](_0xf1601f);}};}function respondWithFilteredResult(_0x212be5,_0x4a9536){return function(_0x3e544b){if(_0x3e544b){var _0x475711=typeof _0x4a9536[_0xc58c('0x23')]===_0xc58c('0x24')&&typeof _0x4a9536['limit']===_0xc58c('0x24');var _0x36325b=_0x3e544b[_0xc58c('0x25')];var _0x4e1165=_0x475711?0x0:_0x4a9536['offset'];var _0x545e8e=_0x475711?_0x3e544b[_0xc58c('0x25')]:_0x4a9536[_0xc58c('0x23')]+_0x4a9536[_0xc58c('0x26')];var _0x2bc0a0;if(_0x545e8e>=_0x36325b){_0x545e8e=_0x36325b;_0x2bc0a0=0xc8;}else{_0x2bc0a0=0xce;}_0x212be5['status'](_0x2bc0a0);return _0x212be5['set'](_0xc58c('0x27'),_0x4e1165+'-'+_0x545e8e+'/'+_0x36325b)[_0xc58c('0x22')](_0x3e544b);}return null;};}function patchUpdates(_0x4b0800){return function(_0x182de6){try{jsonpatch[_0xc58c('0x28')](_0x182de6,_0x4b0800,!![]);}catch(_0x1e3f82){return BPromise['reject'](_0x1e3f82);}return _0x182de6['save']();};}function saveUpdates(_0x4729dd,_0x1d2717){return function(_0x2a529e){if(_0x2a529e){return _0x2a529e[_0xc58c('0x29')](_0x4729dd)['then'](function(_0x293774){return _0x293774;});}return null;};}function removeEntity(_0x407828,_0x46e8f7){return function(_0x3b5b3f){if(_0x3b5b3f){return _0x3b5b3f[_0xc58c('0x2a')]()[_0xc58c('0x2b')](function(){_0x407828[_0xc58c('0x20')](0xcc)[_0xc58c('0x21')]();});}};}function handleEntityNotFound(_0x4d6ae4,_0x161c6f){return function(_0x2477df){if(!_0x2477df){_0x4d6ae4[_0xc58c('0x1f')](0x194);}return _0x2477df;};}function handleError(_0x585110,_0x3dd9cc){_0x3dd9cc=_0x3dd9cc||0x1f4;return function(_0x1efc74){logger[_0xc58c('0x2c')](_0x1efc74[_0xc58c('0x2d')]);if(_0x1efc74['name']){delete _0x1efc74[_0xc58c('0x2e')];}_0x585110[_0xc58c('0x20')](_0x3dd9cc)['send'](_0x1efc74);};}function getInteractionUsers(_0xb62ba5,_0x2c0d29){return new BPromise(function(_0x521a1a,_0x16461c){try{if(_0x2c0d29[_0xb62ba5['id']]){_0xb62ba5[_0xc58c('0x2f')]=_[_0xc58c('0x30')](_0x2c0d29[_0xb62ba5['id']],function(_0x428cb5){return{'id':_0x428cb5['id'],'fullname':_0x428cb5[_0xc58c('0x31')]};});}}catch(_0x3950e6){_0x16461c(_0x3950e6);}_0x521a1a(_0xb62ba5);});}function getInteractionTags(_0x1077d5,_0x149efe){return new BPromise(function(_0x310ec1,_0x526520){try{if(_0x1077d5[_0xc58c('0x32')]){_0x1077d5[_0xc58c('0x33')]=[];_0x1077d5[_0xc58c('0x32')][_0xc58c('0x34')](',')[_0xc58c('0x35')](function(_0x19b752){_0x1077d5[_0xc58c('0x33')][_0xc58c('0x36')](_0x149efe[_0x19b752]);});}delete _0x1077d5['TagIds'];}catch(_0x2f5cb8){_0x526520(_0x2f5cb8);}_0x310ec1(_0x1077d5);});}function updateWhatsappInteraction(_0x388f55,_0x1a87ce,_0x156632){return new BPromise(function(_0x3b61e9,_0x1cfe83){return getInteractionUsers(_0x388f55,_0x156632)['then'](function(_0x2d7f00){return getInteractionTags(_0x2d7f00,_0x1a87ce);})[_0xc58c('0x2b')](function(_0x19c397){return getStateInteraction(_0x19c397);})[_0xc58c('0x2b')](function(_0x28b009){_0x3b61e9(_0x28b009);})['catch'](function(_0x13103b){_0x1cfe83(_0x13103b);});});}function getStateInteraction(_0x11b108){return new BPromise(function(_0x79b0e1){_0x11b108[_0xc58c('0x37')]=0x0;_0x11b108[_0xc58c('0x38')]=0x0;_0x11b108[_0xc58c('0x39')]=0x0;_0x11b108[_0xc58c('0x3a')]=0x0;_0x11b108[_0xc58c('0x3b')]=0x0;if(!_0x11b108[_0xc58c('0x3c')]&&!_0x11b108[_0xc58c('0x3d')]){_0x11b108[_0xc58c('0x37')]+=0x1;}if(!_0x11b108[_0xc58c('0x3c')]&&_0x11b108[_0xc58c('0x3d')]){_0x11b108[_0xc58c('0x38')]+=0x1;if(_0x11b108[_0xc58c('0x37')]){_0x11b108[_0xc58c('0x37')]-=0x1;}}if(_0x11b108[_0xc58c('0x3c')]&&_0x11b108[_0xc58c('0x3d')]){_0x11b108[_0xc58c('0x39')]+=0x1;if(_0x11b108[_0xc58c('0x38')]){_0x11b108[_0xc58c('0x38')]-=0x1;}}if(_0x11b108['closed']&&!_0x11b108['UserId']){_0x11b108['unmanaged']+=0x1;if(_0x11b108[_0xc58c('0x37')]){_0x11b108[_0xc58c('0x37')]-=0x1;}}_0x11b108['total']+=0x1;_0x79b0e1(_0x11b108);});}exports[_0xc58c('0x3e')]=function(_0x1b9511,_0x4f8356){var _0x256d2d={},_0x10a410={},_0xd2702d={'count':0x0,'rows':[]};var _0x3db8dc=_[_0xc58c('0x30')](db[_0xc58c('0x3f')][_0xc58c('0x40')],function(_0x45db67){return{'name':_0x45db67[_0xc58c('0x41')],'type':_0x45db67[_0xc58c('0x42')]['key']};});_0x10a410[_0xc58c('0x43')]=_['map'](_0x3db8dc,_0xc58c('0x2e'));_0x10a410[_0xc58c('0x44')]=_[_0xc58c('0x45')](_0x1b9511[_0xc58c('0x44')]);_0x10a410[_0xc58c('0x46')]=_['intersection'](_0x10a410[_0xc58c('0x43')],_0x10a410[_0xc58c('0x44')]);_0x256d2d[_0xc58c('0x47')]=_[_0xc58c('0x48')](_0x10a410['model'],qs['fields'](_0x1b9511[_0xc58c('0x44')]['fields']));_0x256d2d[_0xc58c('0x47')]=_0x256d2d['attributes'][_0xc58c('0x49')]?_0x256d2d[_0xc58c('0x47')]:_0x10a410[_0xc58c('0x43')];if(!_0x1b9511[_0xc58c('0x44')][_0xc58c('0x4a')](_0xc58c('0x4b'))){_0x256d2d[_0xc58c('0x26')]=qs[_0xc58c('0x26')](_0x1b9511[_0xc58c('0x44')][_0xc58c('0x26')]);_0x256d2d[_0xc58c('0x23')]=qs[_0xc58c('0x23')](_0x1b9511[_0xc58c('0x44')][_0xc58c('0x23')]);}_0x256d2d['order']=qs['sort'](_0x1b9511[_0xc58c('0x44')][_0xc58c('0x4c')]);_0x256d2d[_0xc58c('0x4d')]=qs[_0xc58c('0x46')](_[_0xc58c('0x4e')](_0x1b9511[_0xc58c('0x44')],_0x10a410[_0xc58c('0x46')]),_0x3db8dc);var _0x43b031=[];var _0x3ec019=squel[_0xc58c('0x4f')]()[_0xc58c('0x50')]('id')[_0xc58c('0x50')](_0xc58c('0x2e'))[_0xc58c('0x50')]('color')[_0xc58c('0x51')](_0xc58c('0x52'));var _0x3296eb=squel[_0xc58c('0x4f')]()[_0xc58c('0x50')](_0xc58c('0x53'))[_0xc58c('0x50')]('u.fullname')[_0xc58c('0x50')]('ui.WhatsappInteractionId')[_0xc58c('0x51')]('user_has_whatsapp_interactions','ui')[_0xc58c('0x54')](_0xc58c('0x55'),'u',_0xc58c('0x56'));var _0x4ca991=squel['select']()[_0xc58c('0x51')](_0xc58c('0x57'),'i')[_0xc58c('0x54')](_0xc58c('0x58'),'c',_0xc58c('0x59'))[_0xc58c('0x54')](_0xc58c('0x55'),'o',_0xc58c('0x5a'))[_0xc58c('0x54')](_0xc58c('0x5b'),'a','a.id\x20=\x20i.WhatsappAccountId')['left_join']('whatsapp_messages','me',_0xc58c('0x5c'))[_0xc58c('0x54')]('whatsapp_interaction_has_tags','it','it.WhatsappInteractionId\x20=\x20i.id')[_0xc58c('0x54')](_0xc58c('0x52'),'t','t.id\x20=\x20it.TagId');var _0x57d8b2=squel[_0xc58c('0x5d')]();var _0x346dde=[];var _0x5aeb95=squel[_0xc58c('0x5d')]();var _0x39a940;if(_0x1b9511[_0xc58c('0x44')][_0xc58c('0x5e')]){_0x39a940=as[_0xc58c('0x5f')](_0x1b9511[_0xc58c('0x44')]['search']);var _0x4e2ceb=_0x39a940['sqlOperator'];for(var _0x52f0f5=0x0;_0x52f0f5<_0x39a940[_0xc58c('0x60')]['length'];_0x52f0f5++){var _0x872939=_0x39a940[_0xc58c('0x60')][_0x52f0f5];var _0x59167e='i';var _0x43863a=_['find'](_0x3db8dc,[_0xc58c('0x2e'),_0x872939[_0xc58c('0x50')]]);if(!_0x43863a){switch(_0x872939[_0xc58c('0x50')]){case _0xc58c('0x61'):if(_0x872939['value']==0x1){_0x4ca991[_0xc58c('0x62')]('`'+_0x872939[_0xc58c('0x50')]+_0xc58c('0x63'));}else{_0x4ca991[_0xc58c('0x62')]('`'+_0x872939['field']+'`\x20>\x200');}break;case _0xc58c('0x64'):if(_0x872939[_0xc58c('0x65')]==='$substring'){if(_0x872939[_0xc58c('0x66')][_0xc58c('0x34')]('\x20')[_0xc58c('0x49')]>0x1){_0x57d8b2[_0x4e2ceb]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xc58c('0x67')](_0x872939[_0xc58c('0x66')]),null);}else{var _0x34556f='%'+_0x872939[_0xc58c('0x66')]+'%';_0x57d8b2[_0x4e2ceb](_0xc58c('0x68'),_0x34556f,_0x34556f,_0x34556f);}}else{_0x43863a=_[_0xc58c('0x69')](_0x3db8dc,[_0xc58c('0x2e'),_0xc58c('0x6a')]);_0x872939['field']=_0xc58c('0x6a');_0x3e249b=as[_0xc58c('0x6b')](_0x59167e,_0x43863a[_0xc58c('0x42')],_0x872939);_0x57d8b2[_0x4e2ceb](_0x3e249b[_0xc58c('0x6c')],_0x3e249b[_0xc58c('0x66')]['start'],_0x3e249b['value'][_0xc58c('0x21')]);}break;case _0xc58c('0x6d'):var _0x554697=_0x872939[_0xc58c('0x66')][_0xc58c('0x34')](',')[_0xc58c('0x30')](function(_0x224503){return Number(_0x224503);});_0x554697[_0xc58c('0x35')](function(_0x264d08){_0x5aeb95['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x264d08+',%');});_0x346dde=_['union'](_0x346dde,_0x554697);break;case _0xc58c('0x6e'):if(_0x872939[_0xc58c('0x65')]===_0xc58c('0x6f')){_0x57d8b2[_0x4e2ceb](_0xc58c('0x70'),'%'+_0x872939[_0xc58c('0x66')]+'%',null);}else{_0x43863a=_[_0xc58c('0x69')](_0x3db8dc,['name',_0xc58c('0x3d')]);_0x872939[_0xc58c('0x50')]=_0xc58c('0x3d');_0x3e249b=as['buildExpression'](_0x59167e,_0x43863a['type'],_0x872939);_0x57d8b2[_0x4e2ceb](_0x3e249b['text'],_0x3e249b[_0xc58c('0x66')][_0xc58c('0x71')],_0x3e249b['value'][_0xc58c('0x21')]);}break;case'body':_0x3e249b=as['buildExpression']('me',null,_0x872939);_0x57d8b2[_0x4e2ceb](_0x3e249b[_0xc58c('0x6c')],_0x3e249b[_0xc58c('0x66')][_0xc58c('0x71')],_0x3e249b[_0xc58c('0x66')][_0xc58c('0x21')]);break;}}else{var _0x3e249b=as[_0xc58c('0x6b')](_0x59167e,_0x43863a['type'],_0x872939);_0x57d8b2[_0x4e2ceb](_0x3e249b['text'],_0x3e249b[_0xc58c('0x66')][_0xc58c('0x71')],_0x3e249b[_0xc58c('0x66')][_0xc58c('0x21')]);}}}else{var _0x2aa25f=_(_0x1b9511[_0xc58c('0x44')])[_0xc58c('0x45')]()[_0xc58c('0x30')](function(_0x44fd09){return _[_0xc58c('0x72')](_0x3db8dc,[_0xc58c('0x2e'),_0x44fd09])?_0x44fd09:undefined;})[_0xc58c('0x73')]()[_0xc58c('0x66')]();if(!_[_0xc58c('0x74')](_0x2aa25f)){_0x2aa25f[_0xc58c('0x35')](function(_0x1d77f8){if(_0x1d77f8===_0xc58c('0x75')){_0x4ca991[_0xc58c('0x4d')](_0xc58c('0x76'),[][_0xc58c('0x77')](_0x1b9511['query'][_0x1d77f8]));}else if(_0x1d77f8===_0xc58c('0x78')){var _0x1a4796=JSON[_0xc58c('0x79')](_0x1b9511[_0xc58c('0x44')][_0x1d77f8])[_0xc58c('0x7a')];var _0x5173c3=JSON['parse'](_0x1b9511[_0xc58c('0x44')][_0x1d77f8])[_0xc58c('0x7b')];_0x4ca991[_0xc58c('0x4d')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x1a4796,_0x5173c3);}else{if(_0x1b9511['query'][_0x1d77f8]===_0xc58c('0x7c')){_0x4ca991[_0xc58c('0x4d')]('i.'+_0x1d77f8+_0xc58c('0x7d'));}else{_0x4ca991[_0xc58c('0x4d')]('i.'+_0x1d77f8+_0xc58c('0x7e'),_0x1b9511[_0xc58c('0x44')][_0x1d77f8]);}}});}if(_0x1b9511[_0xc58c('0x44')][_0xc58c('0x7f')]){if(_0x1b9511[_0xc58c('0x44')][_0xc58c('0x7f')]==0x1){_0x4ca991[_0xc58c('0x62')]('`unreadMessages`\x20=\x200');}else{_0x4ca991[_0xc58c('0x62')](_0xc58c('0x80'));}}if(_0x1b9511[_0xc58c('0x44')][_0xc58c('0x81')]){_0x346dde=_[_0xc58c('0x82')](_0x1b9511[_0xc58c('0x44')][_0xc58c('0x81')])?_0x1b9511[_0xc58c('0x44')]['tag']:new Array(_0x1b9511[_0xc58c('0x44')]['tag']);_0x346dde[_0xc58c('0x35')](function(_0x34eb5c){_0x5aeb95['or'](_0xc58c('0x83'),'%,'+_0x34eb5c+',%');});}if(_0x1b9511[_0xc58c('0x44')][_0xc58c('0x84')]){var _0x4a1ae6=_0x1b9511[_0xc58c('0x44')]['filter'][_0xc58c('0x85')]('\x5c','\x5c\x5c')[_0xc58c('0x85')](/'/g,'\x27\x27');if(qs[_0xc58c('0x86')](_0x4a1ae6)){_0x57d8b2['or'](_0xc58c('0x87'),_0x4a1ae6+'%')['or'](_0xc58c('0x88'),_0x4a1ae6+'%');}else{_0x57d8b2['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xc58c('0x67')](_0x4a1ae6))['or'](_0xc58c('0x89'),_0x4a1ae6+'%');}}}_0x4ca991['where'](_0x57d8b2);_0x4ca991[_0xc58c('0x8a')](_0xc58c('0x8b'));var _0x460d59={'type':db[_0xc58c('0x8c')][_0xc58c('0x8d')][_0xc58c('0x8e')],'raw':!![]};var _0x1a280e=_0x4ca991['clone']();_0x1a280e[_0xc58c('0x50')](_0xc58c('0x8b'));_0x1a280e[_0xc58c('0x50')](_0xc58c('0x8f'),_0xc58c('0x61'));if(_0x256d2d[_0xc58c('0x90')]){_0x256d2d[_0xc58c('0x90')]['forEach'](function(_0x4fc8cb){var _0x542566=_0x4fc8cb[0x0]===_0xc58c('0x91')?_0x4fc8cb[0x0]:'i.'+_0x4fc8cb[0x0];_0x4ca991['order'](_0x542566,_0x4fc8cb[0x1]==='DESC'?![]:!![]);});}if(!_[_0xc58c('0x74')](_0x346dde)){_0x4ca991[_0xc58c('0x62')](_0x5aeb95);_0x1a280e['where']('t.id\x20IN\x20?',_0x346dde);}BPromise[_0xc58c('0x92')]()['then'](function(){if(!_0x39a940){if(_0x1b9511[_0xc58c('0x44')][_0xc58c('0x75')])return;_0x1a280e[_0xc58c('0x4d')](_0xc58c('0x93'));_0x4ca991[_0xc58c('0x4d')](_0xc58c('0x93'));return;}if(_0x1b9511[_0xc58c('0x94')]['role']!==_0xc58c('0x95'))return;return _0x1b9511[_0xc58c('0x94')][_0xc58c('0x96')]({'attributes':['id'],'raw':!![]})[_0xc58c('0x2b')](function(_0x81cc3b){if(_[_0xc58c('0x74')](_0x81cc3b)){_0x1a280e[_0xc58c('0x4d')](_0xc58c('0x97'));_0x4ca991[_0xc58c('0x4d')](_0xc58c('0x97'));}else{_0x1a280e[_0xc58c('0x4d')](_0xc58c('0x76'),_['map'](_0x81cc3b,'id'));_0x4ca991[_0xc58c('0x4d')]('i.WhatsappAccountId\x20IN\x20?',_[_0xc58c('0x30')](_0x81cc3b,'id'));}});})[_0xc58c('0x2b')](function(){if(_0x1b9511[_0xc58c('0x94')]['role']==='agent'&&!_0x39a940&&!_0x1b9511[_0xc58c('0x44')][_0xc58c('0x75')])return[];return db[_0xc58c('0x98')]['query'](_0x1a280e['toString'](),_0x460d59);})[_0xc58c('0x2b')](function(_0x32eb3a){_0xd2702d[_0xc58c('0x25')]=_0x32eb3a[_0xc58c('0x49')];if(_0xd2702d[_0xc58c('0x25')]===0x0)return[];return db[_0xc58c('0x98')][_0xc58c('0x44')](_0x3ec019[_0xc58c('0x99')](),_0x460d59)[_0xc58c('0x2b')](function(_0xd7f8bc){_0x43b031=_[_0xc58c('0x9a')](_0xd7f8bc,'id');_0x460d59=_['merge'](_0x460d59,{'model':db['WhatsappInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1b9511[_0xc58c('0x44')][_0xc58c('0x9b')]){_0x256d2d[_0xc58c('0x47')]['forEach'](function(_0x34150e){_0x4ca991[_0xc58c('0x50')]('i.'+_0x34150e);});}else{_0x4ca991[_0xc58c('0x50')](_0xc58c('0x8f'),_0xc58c('0x61'));_0x4ca991[_0xc58c('0x50')](_0xc58c('0x9c'),'Account.key');_0x4ca991['field'](_0xc58c('0x9d'),_0xc58c('0x9e'));_0x4ca991['field'](_0xc58c('0x9f'),_0xc58c('0x91'));_0x4ca991['field'](_0xc58c('0xa0'));_0x4ca991[_0xc58c('0x50')]('c.firstName',_0xc58c('0xa1'));_0x4ca991[_0xc58c('0x50')](_0xc58c('0xa2'),_0xc58c('0xa3'));_0x4ca991['field']('c.email',_0xc58c('0xa4'));_0x4ca991[_0xc58c('0x50')](_0xc58c('0xa5'),_0xc58c('0xa6'));_0x4ca991[_0xc58c('0x50')](_0xc58c('0xa7'),_0xc58c('0xa8'));_0x4ca991[_0xc58c('0x50')](_0xc58c('0xa9'),_0xc58c('0xaa'));_0x4ca991[_0xc58c('0x50')](_0xc58c('0xab'),_0xc58c('0xac'));_0x4ca991[_0xc58c('0x50')](_0xc58c('0xad'),_0xc58c('0xae'));_0x4ca991[_0xc58c('0x50')](_0xc58c('0xaf'),_0xc58c('0x32'));}if(_0x256d2d[_0xc58c('0x26')])_0x4ca991[_0xc58c('0x26')](_0x256d2d[_0xc58c('0x26')]);if(_0x256d2d[_0xc58c('0x23')])_0x4ca991[_0xc58c('0x23')](_0x256d2d[_0xc58c('0x23')]);return db[_0xc58c('0x98')][_0xc58c('0x44')](_0x4ca991[_0xc58c('0x99')](),_0x460d59);})[_0xc58c('0x2b')](function(_0x125099){if(_0x125099['length']>0x0)_0x3296eb['where'](_0xc58c('0xb0'),_[_0xc58c('0x30')](_0x125099,'id'));return db[_0xc58c('0x98')][_0xc58c('0x44')](_0x3296eb[_0xc58c('0x99')](),_0x460d59)['then'](function(_0x51d717){var _0x10f38f=_['groupBy'](_0x51d717,_0xc58c('0xb1'));var _0x533e81=[];_0x125099[_0xc58c('0x35')](function(_0x4330f3){_0x533e81[_0xc58c('0x36')](updateWhatsappInteraction(_0x4330f3,_0x43b031,_0x10f38f));});return BPromise[_0xc58c('0xb2')](_0x533e81);});});})['then'](function(_0x2325f9){_0xd2702d[_0xc58c('0xb3')]=_0x2325f9;return _0xd2702d;})[_0xc58c('0x2b')](respondWithFilteredResult(_0x4f8356,_0x256d2d))[_0xc58c('0xb4')](handleError(_0x4f8356,null));};exports[_0xc58c('0xb5')]=function(_0x3a5fa4,_0xd07b06){var _0x29ac71={'raw':![],'where':{'id':_0x3a5fa4[_0xc58c('0xb6')]['id']}},_0x10acdd={};_0x10acdd[_0xc58c('0x43')]=_['keys'](db[_0xc58c('0x3f')]['rawAttributes']);_0x10acdd['query']=_[_0xc58c('0x45')](_0x3a5fa4[_0xc58c('0x44')]);_0x10acdd[_0xc58c('0x46')]=_[_0xc58c('0x48')](_0x10acdd['model'],_0x10acdd['query']);_0x29ac71[_0xc58c('0x47')]=_[_0xc58c('0x48')](_0x10acdd['model'],qs[_0xc58c('0x9b')](_0x3a5fa4[_0xc58c('0x44')]['fields']));_0x29ac71[_0xc58c('0x47')]=_0x29ac71[_0xc58c('0x47')][_0xc58c('0x49')]?_0x29ac71['attributes']:_0x10acdd['model'];if(_0x3a5fa4['query'][_0xc58c('0xb7')]){_0x29ac71[_0xc58c('0xb8')]=[{'all':!![]}];}_0x29ac71=_['merge']({},_0x29ac71,_0x3a5fa4[_0xc58c('0xb9')]);return db[_0xc58c('0x3f')][_0xc58c('0x69')](_0x29ac71)[_0xc58c('0x2b')](handleEntityNotFound(_0xd07b06,null))[_0xc58c('0x2b')](respondWithResult(_0xd07b06,null))[_0xc58c('0xb4')](handleError(_0xd07b06,null));};exports[_0xc58c('0xba')]=function(_0x29a2a7,_0x52fd33){return db['WhatsappInteraction'][_0xc58c('0xba')](_0x29a2a7[_0xc58c('0xbb')],{})['then'](respondWithResult(_0x52fd33,0xc9))[_0xc58c('0xb4')](handleError(_0x52fd33,null));};exports['update']=function(_0x13a486,_0x3cf9c6){if(_0x13a486[_0xc58c('0xbb')]['id']){delete _0x13a486[_0xc58c('0xbb')]['id'];}return db[_0xc58c('0x3f')][_0xc58c('0x69')]({'where':{'id':_0x13a486['params']['id']}})[_0xc58c('0x2b')](handleEntityNotFound(_0x3cf9c6,null))[_0xc58c('0x2b')](saveUpdates(_0x13a486[_0xc58c('0xbb')],null))[_0xc58c('0x2b')](respondWithResult(_0x3cf9c6,null))[_0xc58c('0xb4')](handleError(_0x3cf9c6,null));};exports[_0xc58c('0x2a')]=function(_0x4da91b,_0x4013a7){return db[_0xc58c('0x3f')][_0xc58c('0x69')]({'where':{'id':_0x4da91b[_0xc58c('0xb6')]['id']}})['then'](handleEntityNotFound(_0x4013a7,null))[_0xc58c('0x2b')](removeEntity(_0x4013a7,null))[_0xc58c('0xb4')](handleError(_0x4013a7,null));};exports['describe']=function(_0x5a8278,_0x4f835f){return db[_0xc58c('0x3f')]['describe']()[_0xc58c('0x2b')](respondWithResult(_0x4f835f,null))[_0xc58c('0xb4')](handleError(_0x4f835f,null));};exports[_0xc58c('0xbc')]=function(_0xf8acea,_0x4de682,_0x17bfb6){return db[_0xc58c('0xbd')][_0xc58c('0x69')]({'where':{'id':_0xf8acea['params']['id']}})[_0xc58c('0x2b')](handleEntityNotFound(_0x4de682,null))[_0xc58c('0x2b')](function(_0x2e3863){if(_0x2e3863){return _0x2e3863['addMessage'](_0xf8acea['body'][_0xc58c('0xbe')],_[_0xc58c('0xbf')](_0xf8acea[_0xc58c('0xbb')],[_0xc58c('0xbe'),'id'])||{});}})[_0xc58c('0x2b')](respondWithResult(_0x4de682,null))['catch'](handleError(_0x4de682,null));};exports[_0xc58c('0xc0')]=function(_0x54f17f,_0x49331f,_0x59479a){var _0x5a7423={'raw':![],'where':{}};var _0xd3f87d={};var _0x3eceb6={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0xc58c('0xc1')]({'where':{'id':_0x54f17f['params']['id']}})[_0xc58c('0x2b')](handleEntityNotFound(_0x49331f,null))[_0xc58c('0x2b')](function(_0x2ddf28){if(_0x2ddf28){_0xd3f87d[_0xc58c('0x43')]=_[_0xc58c('0x45')](db[_0xc58c('0xbd')][_0xc58c('0x40')]);_0xd3f87d[_0xc58c('0x44')]=_[_0xc58c('0x45')](_0x54f17f[_0xc58c('0x44')]);_0xd3f87d[_0xc58c('0x46')]=_['intersection'](_0xd3f87d[_0xc58c('0x43')],_0xd3f87d[_0xc58c('0x44')]);_0x5a7423[_0xc58c('0x47')]=_[_0xc58c('0x48')](_0xd3f87d[_0xc58c('0x43')],qs['fields'](_0x54f17f[_0xc58c('0x44')][_0xc58c('0x9b')]));_0x5a7423['attributes']=_0x5a7423['attributes'][_0xc58c('0x49')]?_0x5a7423[_0xc58c('0x47')]:_0xd3f87d[_0xc58c('0x43')];if(!_0x54f17f[_0xc58c('0x44')]['hasOwnProperty'](_0xc58c('0x4b'))){_0x5a7423[_0xc58c('0x26')]=qs[_0xc58c('0x26')](_0x54f17f[_0xc58c('0x44')]['limit']);_0x5a7423[_0xc58c('0x23')]=qs[_0xc58c('0x23')](_0x54f17f[_0xc58c('0x44')]['offset']);}_0x5a7423['order']=qs['sort'](_0x54f17f[_0xc58c('0x44')][_0xc58c('0x4c')]);_0x5a7423[_0xc58c('0x4d')]=qs[_0xc58c('0x46')](_[_0xc58c('0x4e')](_0x54f17f[_0xc58c('0x44')],_0xd3f87d['filters']));_0x5a7423[_0xc58c('0x4d')][_0xc58c('0xb1')]=_0x2ddf28['id'];if(_0x54f17f['query']['filter']){_0x5a7423[_0xc58c('0x4d')]=_['merge'](_0x5a7423['where'],{'$or':_[_0xc58c('0x30')](_0x5a7423[_0xc58c('0x47')],function(_0x1d2933){var _0x3b7d08={};_0x3b7d08[_0x1d2933]={'$like':'%'+_0x54f17f[_0xc58c('0x44')][_0xc58c('0x84')]+'%'};return _0x3b7d08;})});}if(_0x54f17f[_0xc58c('0x44')][_0xc58c('0x7a')]){var _0x10e867=_0x54f17f[_0xc58c('0x44')][_0xc58c('0x7a')][_0xc58c('0x34')](',');var _0x318f1c={};_0x318f1c[_0x10e867[0x0]]={'$gte':moment(_0x10e867[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x5a7423[_0xc58c('0x4d')]=_[_0xc58c('0xc2')](_0x5a7423[_0xc58c('0x4d')],_0x318f1c);}_0x5a7423=_[_0xc58c('0xc2')]({},_0x5a7423,_0x54f17f[_0xc58c('0xb9')]);return db['WhatsappMessage'][_0xc58c('0x25')]({'where':_0x5a7423[_0xc58c('0x4d')]})['then'](function(_0xbd8e20){_0x3eceb6['count']=_0xbd8e20;if(_0x54f17f[_0xc58c('0x44')][_0xc58c('0xb7')]){_0x5a7423['include']=[{'all':!![]}];}return db[_0xc58c('0xbd')][_0xc58c('0xc3')](_0x5a7423);})[_0xc58c('0x2b')](function(_0x2e0edb){_0x3eceb6[_0xc58c('0xb3')]=_0x2e0edb;return _0x3eceb6;});}})[_0xc58c('0x2b')](respondWithFilteredResult(_0x49331f,_0x5a7423))[_0xc58c('0xb4')](handleError(_0x49331f,null));};exports[_0xc58c('0xc4')]=function(_0x6c806a,_0x410b72,_0x2c36e0){return db['WhatsappInteraction'][_0xc58c('0x69')]({'where':{'id':_0x6c806a[_0xc58c('0xb6')]['id']}})[_0xc58c('0x2b')](handleEntityNotFound(_0x410b72,null))['then'](function(_0x516a7c){if(_0x516a7c){return _0x516a7c[_0xc58c('0xc5')](_0x6c806a['body'][_0xc58c('0xbe')],_[_0xc58c('0xbf')](_0x6c806a[_0xc58c('0xbb')],[_0xc58c('0xbe'),'id'])||{})[_0xc58c('0xc6')](function(){return db[_0xc58c('0x6d')][_0xc58c('0xc3')]({'attributes':['id',_0xc58c('0x2e'),_0xc58c('0xc7')],'where':{'id':_0x6c806a[_0xc58c('0xbb')][_0xc58c('0xbe')]}});})[_0xc58c('0x2b')](function(_0x2b90ea){socket[_0xc58c('0xc8')](_0xc58c('0xc9'),{'id':Number(_0x6c806a[_0xc58c('0xb6')]['id']),'tags':_0x2b90ea||[]});return{'id':Number(_0x6c806a[_0xc58c('0xb6')]['id']),'tags':_0x2b90ea||[]};});}})[_0xc58c('0x2b')](respondWithResult(_0x410b72,null))['catch'](handleError(_0x410b72,null));};exports[_0xc58c('0xca')]=function(_0x55f84f,_0xb8bf53,_0x4fccef){return db[_0xc58c('0x3f')]['find']({'where':{'id':_0x55f84f['params']['id']}})['then'](handleEntityNotFound(_0xb8bf53,null))[_0xc58c('0x2b')](function(_0x4169e2){if(_0x4169e2){return _0x4169e2[_0xc58c('0xca')](_0x55f84f['query'][_0xc58c('0xbe')]);}})[_0xc58c('0x2b')](respondWithStatusCode(_0xb8bf53,null))['catch'](handleError(_0xb8bf53,null));};exports[_0xc58c('0xcb')]=function(_0x103f4c,_0x38c834){var _0x50ae1a=moment()[_0xc58c('0xcc')]()[_0xc58c('0x99')]();var _0x2fb133=path[_0xc58c('0xcd')](config[_0xc58c('0xce')],'server','files',_0xc58c('0xcf'));var _0x2e26c8=path[_0xc58c('0xcd')](config[_0xc58c('0xce')],_0xc58c('0xd0'),_0xc58c('0xd1'),_0xc58c('0xd2'));var _0x520d2e=path[_0xc58c('0xcd')](_0x2fb133,_0x50ae1a);var _0x5cde08=util['format']('transcript-%d-%s.zip',_0x103f4c['params']['id'],_0x50ae1a);var _0x5c0857=path[_0xc58c('0xcd')](_0x2fb133,_0x5cde08);var _0x1bb3cf=[];_0x1bb3cf[_0xc58c('0x36')]({'model':db[_0xc58c('0x6e')],'as':_0xc58c('0x6e'),'attributes':['id',_0xc58c('0x31')],'raw':!![]});_0x1bb3cf['push']({'model':db['CmContact'],'as':_0xc58c('0x64'),'attributes':['id',_0xc58c('0xd3'),'lastName'],'raw':!![]});if(_0x103f4c[_0xc58c('0x44')][_0xc58c('0xd2')]){_0x1bb3cf[_0xc58c('0x36')]({'model':db[_0xc58c('0xd4')],'as':_0xc58c('0xd4'),'raw':!![]});}var _0x1d8e85=[{'model':db[_0xc58c('0xbd')],'as':_0xc58c('0xd5'),'attributes':['id','body',_0xc58c('0x78'),_0xc58c('0xd6'),_0xc58c('0xd7'),'read'],'include':_0x1bb3cf}];_0x1d8e85[_0xc58c('0x36')]({'model':db[_0xc58c('0xd8')],'as':_0xc58c('0xd9'),'attributes':['id','name']});_0x1d8e85[_0xc58c('0x36')]({'model':db[_0xc58c('0x6e')],'as':'Owner','attributes':['id','fullname']});return db['WhatsappInteraction'][_0xc58c('0x69')]({'where':{'id':_0x103f4c[_0xc58c('0xb6')]['id']},'include':_0x1d8e85})[_0xc58c('0x2b')](handleEntityNotFound(_0x38c834,null))[_0xc58c('0x2b')](function(_0x458143){if(_0x458143){var _0x5e154f=_0x458143[_0xc58c('0xda')]({'plain':!![]});fs[_0xc58c('0xdb')](_0x520d2e);var _0x1ea6c2={'channel':_0xc58c('0xdc'),'account':_0x5e154f[_0xc58c('0xd9')]['name'],'agent':_0x5e154f[_0xc58c('0xdd')]?_0x5e154f[_0xc58c('0xdd')][_0xc58c('0x31')]:_0xc58c('0xde'),'createdAt':moment(_0x5e154f['createdAt'])[_0xc58c('0xdf')](_0xc58c('0xe0'))['toString'](),'closedAt':_0x5e154f[_0xc58c('0x3c')]?moment(_0x5e154f[_0xc58c('0xe1')])[_0xc58c('0xdf')](_0xc58c('0xe0'))[_0xc58c('0x99')]():'','disposition':_0x5e154f[_0xc58c('0xe2')],'messages':_(_0x5e154f[_0xc58c('0xd5')])[_0xc58c('0x84')]({'secret':![]})[_0xc58c('0x30')](function(_0x5a4b87){if(_0x5a4b87[_0xc58c('0xd4')]){var _0x2788b5=path[_0xc58c('0xcd')](_0x2e26c8,_0x5a4b87[_0xc58c('0xd4')][_0xc58c('0xe3')]);if(fs[_0xc58c('0xe4')](_0x2788b5)){fs['createReadStream'](_0x2788b5)[_0xc58c('0xe5')](fs['createWriteStream'](path[_0xc58c('0xcd')](_0x520d2e,_0x5a4b87['Attachment']['basename'])));}}return{'date':moment(_0x5a4b87[_0xc58c('0x78')])['format'](_0xc58c('0xe0'))[_0xc58c('0x99')](),'sender':_0x5a4b87[_0xc58c('0xd6')]===_0xc58c('0xe6')?_0x5a4b87[_0xc58c('0x6e')]?_0x5a4b87[_0xc58c('0x6e')][_0xc58c('0x31')]:'System':_0x5a4b87[_0xc58c('0x64')][_0xc58c('0xd3')]+(_0x5a4b87['Contact'][_0xc58c('0xe7')]?'\x20'+_0x5a4b87[_0xc58c('0x64')][_0xc58c('0xe7')]:''),'body':_0x5a4b87[_0xc58c('0xd4')]?_0x5a4b87['Attachment'][_0xc58c('0xe3')]:_0x5a4b87[_0xc58c('0xbb')],'direction':_0x5a4b87[_0xc58c('0xd6')]==='out'?'A':'C','secret':_0x5a4b87[_0xc58c('0xd7')],'read':_0x5a4b87['read'],'attachment':_0x5a4b87[_0xc58c('0xd4')]};})['value']()};return ejs[_0xc58c('0xe8')](path[_0xc58c('0xcd')](config[_0xc58c('0xce')],'server',_0xc58c('0xe9'),_0xc58c('0xea')),{'interaction':_0x1ea6c2})[_0xc58c('0x2b')](function(_0x5dab6e){var _0x4d8488=path['join'](_0x520d2e,_0xc58c('0xeb')+_0x5e154f['id']+'-'+_0x50ae1a+_0xc58c('0xec'));var _0x58f300={'path':_0x4d8488,'channel':_0xc58c('0xdc'),'interactionId':_0x5e154f['id']};return pdf[_0xc58c('0xed')](_0x5dab6e,_0x58f300);})[_0xc58c('0x2b')](function(){return new BPromise(function(_0x22f40f,_0x5f4fcc){zipdir(_0x520d2e,{'saveTo':_0x5c0857},function(_0xbfd97d,_0x1ee4e6){if(_0xbfd97d)return _0x5f4fcc(_0xbfd97d);return _0x22f40f(_0x1ee4e6);});})[_0xc58c('0x2b')](function(){return new BPromise(function(_0x2d216b,_0x4dfee2){rimraf(_0x520d2e,function(_0x17044e){if(_0x17044e)_0x4dfee2(_0x17044e);return _0x2d216b();});});})[_0xc58c('0x2b')](function(){return _0x38c834[_0xc58c('0xcb')](_0x5c0857,_0x5cde08,function(_0x564b9f){if(_0x564b9f){console['log']('err',_0x564b9f);}else{fs[_0xc58c('0xee')](_0x5c0857);}});});});}else{return _0x38c834[_0xc58c('0x1f')](0xc8);}})['catch'](handleError(_0x38c834,null));};
\ No newline at end of file
+var _0xb5fa=['lastName','renderFile','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','update','then','error','stack','name','Users','TagIds','Tags','split','push','catch','waiting','talking','answered','unmanaged','total','UserId','closed','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','sort','pick','select','field','color','from','tools_tags','u.id','u.fullname','user_has_whatsapp_interactions','users','u.id\x20=\x20ui.UserId','left_join','cm_contacts','whatsapp_accounts','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','search','parseSearch','sqlOperator','conditions','length','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','buildExpression','body','some','compact','isEmpty','forEach','i.WhatsappAccountId\x20IN\x20?','createdAt','$gte','$lte','where','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','DESC','t.id\x20IN\x20?','resolve','WhatsappAccountId','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','role','user','i.WhatsappAccountId\x20IS\x20NULL','agent','sequelize','keyBy','merge','WhatsappInteraction','a.key','Account.key','Account.mandatoryDisposition','c.firstName','Contact.firstName','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)','toString','ui.WhatsappInteractionId\x20IN\x20?','groupBy','WhatsappInteractionId','all','rows','params','includeAll','options','create','describe','WhatsappMessage','addMessage','ids','omit','getMessages','nolimit','format','findAll','setTags','emit','whatsappInteractionTags:save','removeTags','download','root','server','files','tmp','join','attachments','transcript-%d-%s.zip','fullname','CmContact','firstName','Attachment','Messages','direction','secret','WhatsappAccount','Account','Owner','get','mkdirSync','Whatsapp','N.A.','YYYY-MM-DD\x20HH:mm:ss','closedAt','disposition','existsSync','createReadStream','pipe','createWriteStream','basename','out','System'];(function(_0x397783,_0x518453){var _0x14b612=function(_0x27060b){while(--_0x27060b){_0x397783['push'](_0x397783['shift']());}};_0x14b612(++_0x518453);}(_0xb5fa,0xf8));var _0xab5f=function(_0x44fe78,_0x3ba0a0){_0x44fe78=_0x44fe78-0x0;var _0x3c7601=_0xb5fa[_0x44fe78];return _0x3c7601;};'use strict';var emlformat=require(_0xab5f('0x0'));var rimraf=require(_0xab5f('0x1'));var zipdir=require(_0xab5f('0x2'));var jsonpatch=require(_0xab5f('0x3'));var rp=require(_0xab5f('0x4'));var moment=require(_0xab5f('0x5'));var BPromise=require(_0xab5f('0x6'));var Mustache=require(_0xab5f('0x7'));var util=require(_0xab5f('0x8'));var path=require(_0xab5f('0x9'));var sox=require(_0xab5f('0xa'));var csv=require(_0xab5f('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xab5f('0xc'));var crypto=require(_0xab5f('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xab5f('0xe'));var toCsv=require(_0xab5f('0xb'));var querystring=require(_0xab5f('0xf'));var Papa=require(_0xab5f('0x10'));var Redis=require(_0xab5f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xab5f('0x12'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0xab5f('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xab5f('0x14'))(_0xab5f('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xab5f('0x16'))['db'];config[_0xab5f('0x17')]=_['defaults'](config[_0xab5f('0x17')],{'host':_0xab5f('0x18'),'port':0x18eb});var socket=require(_0xab5f('0x19'))(new Redis(config[_0xab5f('0x17')]));require(_0xab5f('0x1a'))[_0xab5f('0x1b')](socket);function respondWithStatusCode(_0x4319c7,_0x425053){_0x425053=_0x425053||0xcc;return function(_0x32def2){if(_0x32def2){return _0x4319c7[_0xab5f('0x1c')](_0x425053);}return _0x4319c7[_0xab5f('0x1d')](_0x425053)[_0xab5f('0x1e')]();};}function respondWithResult(_0x177e6d,_0x22588b){_0x22588b=_0x22588b||0xc8;return function(_0x3d5485){if(_0x3d5485){return _0x177e6d[_0xab5f('0x1d')](_0x22588b)[_0xab5f('0x1f')](_0x3d5485);}};}function respondWithFilteredResult(_0x340190,_0x4aca7d){return function(_0x2caadb){if(_0x2caadb){var _0x4da25e=typeof _0x4aca7d[_0xab5f('0x20')]===_0xab5f('0x21')&&typeof _0x4aca7d[_0xab5f('0x22')]===_0xab5f('0x21');var _0x4c344f=_0x2caadb[_0xab5f('0x23')];var _0x413412=_0x4da25e?0x0:_0x4aca7d[_0xab5f('0x20')];var _0x1bc5ae=_0x4da25e?_0x2caadb[_0xab5f('0x23')]:_0x4aca7d[_0xab5f('0x20')]+_0x4aca7d['limit'];var _0x3fca4c;if(_0x1bc5ae>=_0x4c344f){_0x1bc5ae=_0x4c344f;_0x3fca4c=0xc8;}else{_0x3fca4c=0xce;}_0x340190[_0xab5f('0x1d')](_0x3fca4c);return _0x340190[_0xab5f('0x24')]('Content-Range',_0x413412+'-'+_0x1bc5ae+'/'+_0x4c344f)[_0xab5f('0x1f')](_0x2caadb);}return null;};}function patchUpdates(_0x134a23){return function(_0x811e76){try{jsonpatch[_0xab5f('0x25')](_0x811e76,_0x134a23,!![]);}catch(_0x297dff){return BPromise[_0xab5f('0x26')](_0x297dff);}return _0x811e76['save']();};}function saveUpdates(_0x55daaf,_0x3c5847){return function(_0x3f3bae){if(_0x3f3bae){return _0x3f3bae[_0xab5f('0x27')](_0x55daaf)[_0xab5f('0x28')](function(_0x3fb403){return _0x3fb403;});}return null;};}function removeEntity(_0x49972a,_0x3db1a6){return function(_0x38d793){if(_0x38d793){return _0x38d793['destroy']()[_0xab5f('0x28')](function(){_0x49972a[_0xab5f('0x1d')](0xcc)[_0xab5f('0x1e')]();});}};}function handleEntityNotFound(_0x391fec,_0x4fee82){return function(_0x144281){if(!_0x144281){_0x391fec[_0xab5f('0x1c')](0x194);}return _0x144281;};}function handleError(_0x1e1fa9,_0x239229){_0x239229=_0x239229||0x1f4;return function(_0x5e43a5){logger[_0xab5f('0x29')](_0x5e43a5[_0xab5f('0x2a')]);if(_0x5e43a5[_0xab5f('0x2b')]){delete _0x5e43a5[_0xab5f('0x2b')];}_0x1e1fa9[_0xab5f('0x1d')](_0x239229)['send'](_0x5e43a5);};}function getInteractionUsers(_0x5c6229,_0x7f5308){return new BPromise(function(_0x464287,_0x290df8){try{if(_0x7f5308[_0x5c6229['id']]){_0x5c6229[_0xab5f('0x2c')]=_['map'](_0x7f5308[_0x5c6229['id']],function(_0x56a8e9){return{'id':_0x56a8e9['id'],'fullname':_0x56a8e9['fullname']};});}}catch(_0x5f2c8e){_0x290df8(_0x5f2c8e);}_0x464287(_0x5c6229);});}function getInteractionTags(_0x494c4b,_0xcfaa90){return new BPromise(function(_0x312140,_0x18ca34){try{if(_0x494c4b[_0xab5f('0x2d')]){_0x494c4b[_0xab5f('0x2e')]=[];_0x494c4b[_0xab5f('0x2d')][_0xab5f('0x2f')](',')['forEach'](function(_0x2acdfc){_0x494c4b[_0xab5f('0x2e')][_0xab5f('0x30')](_0xcfaa90[_0x2acdfc]);});}delete _0x494c4b[_0xab5f('0x2d')];}catch(_0x2ba2e6){_0x18ca34(_0x2ba2e6);}_0x312140(_0x494c4b);});}function updateWhatsappInteraction(_0x42af45,_0x4e86d2,_0x39c74d){return new BPromise(function(_0x529c2d,_0x3e02f6){return getInteractionUsers(_0x42af45,_0x39c74d)['then'](function(_0x55c8ab){return getInteractionTags(_0x55c8ab,_0x4e86d2);})['then'](function(_0x4e7fc1){return getStateInteraction(_0x4e7fc1);})[_0xab5f('0x28')](function(_0x56e0f3){_0x529c2d(_0x56e0f3);})[_0xab5f('0x31')](function(_0x137502){_0x3e02f6(_0x137502);});});}function getStateInteraction(_0x41023a){return new BPromise(function(_0x6fb3fc){_0x41023a[_0xab5f('0x32')]=0x0;_0x41023a[_0xab5f('0x33')]=0x0;_0x41023a[_0xab5f('0x34')]=0x0;_0x41023a[_0xab5f('0x35')]=0x0;_0x41023a[_0xab5f('0x36')]=0x0;if(!_0x41023a['closed']&&!_0x41023a[_0xab5f('0x37')]){_0x41023a['waiting']+=0x1;}if(!_0x41023a[_0xab5f('0x38')]&&_0x41023a[_0xab5f('0x37')]){_0x41023a[_0xab5f('0x33')]+=0x1;if(_0x41023a['waiting']){_0x41023a[_0xab5f('0x32')]-=0x1;}}if(_0x41023a[_0xab5f('0x38')]&&_0x41023a[_0xab5f('0x37')]){_0x41023a[_0xab5f('0x34')]+=0x1;if(_0x41023a[_0xab5f('0x33')]){_0x41023a[_0xab5f('0x33')]-=0x1;}}if(_0x41023a[_0xab5f('0x38')]&&!_0x41023a['UserId']){_0x41023a[_0xab5f('0x35')]+=0x1;if(_0x41023a[_0xab5f('0x32')]){_0x41023a[_0xab5f('0x32')]-=0x1;}}_0x41023a[_0xab5f('0x36')]+=0x1;_0x6fb3fc(_0x41023a);});}exports[_0xab5f('0x39')]=function(_0x141a34,_0x41184c){var _0x1d1f7d={},_0x4aaaa3={},_0x484fde={'count':0x0,'rows':[]};var _0x24878b=_[_0xab5f('0x3a')](db['WhatsappInteraction'][_0xab5f('0x3b')],function(_0x579946){return{'name':_0x579946[_0xab5f('0x3c')],'type':_0x579946[_0xab5f('0x3d')]['key']};});_0x4aaaa3[_0xab5f('0x3e')]=_['map'](_0x24878b,_0xab5f('0x2b'));_0x4aaaa3[_0xab5f('0x3f')]=_[_0xab5f('0x40')](_0x141a34[_0xab5f('0x3f')]);_0x4aaaa3[_0xab5f('0x41')]=_[_0xab5f('0x42')](_0x4aaaa3['model'],_0x4aaaa3[_0xab5f('0x3f')]);_0x1d1f7d[_0xab5f('0x43')]=_[_0xab5f('0x42')](_0x4aaaa3[_0xab5f('0x3e')],qs[_0xab5f('0x44')](_0x141a34[_0xab5f('0x3f')]['fields']));_0x1d1f7d[_0xab5f('0x43')]=_0x1d1f7d[_0xab5f('0x43')]['length']?_0x1d1f7d[_0xab5f('0x43')]:_0x4aaaa3['model'];if(!_0x141a34[_0xab5f('0x3f')][_0xab5f('0x45')]('nolimit')){_0x1d1f7d[_0xab5f('0x22')]=qs[_0xab5f('0x22')](_0x141a34[_0xab5f('0x3f')][_0xab5f('0x22')]);_0x1d1f7d[_0xab5f('0x20')]=qs[_0xab5f('0x20')](_0x141a34[_0xab5f('0x3f')][_0xab5f('0x20')]);}_0x1d1f7d['order']=qs[_0xab5f('0x46')](_0x141a34[_0xab5f('0x3f')][_0xab5f('0x46')]);_0x1d1f7d['where']=qs[_0xab5f('0x41')](_[_0xab5f('0x47')](_0x141a34[_0xab5f('0x3f')],_0x4aaaa3[_0xab5f('0x41')]),_0x24878b);var _0x3e699e=[];var _0x14e815=squel[_0xab5f('0x48')]()[_0xab5f('0x49')]('id')[_0xab5f('0x49')](_0xab5f('0x2b'))[_0xab5f('0x49')](_0xab5f('0x4a'))[_0xab5f('0x4b')](_0xab5f('0x4c'));var _0x5f1018=squel[_0xab5f('0x48')]()[_0xab5f('0x49')](_0xab5f('0x4d'))[_0xab5f('0x49')](_0xab5f('0x4e'))['field']('ui.WhatsappInteractionId')[_0xab5f('0x4b')](_0xab5f('0x4f'),'ui')['left_join'](_0xab5f('0x50'),'u',_0xab5f('0x51'));var _0x85fd96=squel[_0xab5f('0x48')]()['from']('whatsapp_interactions','i')[_0xab5f('0x52')](_0xab5f('0x53'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xab5f('0x52')](_0xab5f('0x50'),'o','o.id\x20=\x20i.UserId')['left_join'](_0xab5f('0x54'),'a','a.id\x20=\x20i.WhatsappAccountId')[_0xab5f('0x52')](_0xab5f('0x55'),'me',_0xab5f('0x56'))[_0xab5f('0x52')](_0xab5f('0x57'),'it',_0xab5f('0x58'))[_0xab5f('0x52')](_0xab5f('0x4c'),'t',_0xab5f('0x59'));var _0x454932=squel['expr']();var _0x36db0a=[];var _0x493235=squel['expr']();var _0x43a51b;if(_0x141a34['query'][_0xab5f('0x5a')]){_0x43a51b=as[_0xab5f('0x5b')](_0x141a34[_0xab5f('0x3f')][_0xab5f('0x5a')]);var _0x1b9cbd=_0x43a51b[_0xab5f('0x5c')];for(var _0x269eb8=0x0;_0x269eb8<_0x43a51b[_0xab5f('0x5d')][_0xab5f('0x5e')];_0x269eb8++){var _0x51b5d5=_0x43a51b[_0xab5f('0x5d')][_0x269eb8];var _0x201896='i';var _0x1d8952=_[_0xab5f('0x5f')](_0x24878b,['name',_0x51b5d5[_0xab5f('0x49')]]);if(!_0x1d8952){switch(_0x51b5d5[_0xab5f('0x49')]){case _0xab5f('0x60'):if(_0x51b5d5[_0xab5f('0x61')]==0x1){_0x85fd96[_0xab5f('0x62')]('`'+_0x51b5d5['field']+_0xab5f('0x63'));}else{_0x85fd96[_0xab5f('0x62')]('`'+_0x51b5d5['field']+_0xab5f('0x64'));}break;case _0xab5f('0x65'):if(_0x51b5d5[_0xab5f('0x66')]===_0xab5f('0x67')){if(_0x51b5d5[_0xab5f('0x61')][_0xab5f('0x2f')]('\x20')[_0xab5f('0x5e')]>0x1){_0x454932[_0x1b9cbd]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xab5f('0x68')](_0x51b5d5[_0xab5f('0x61')]),null);}else{var _0x2d10e6='%'+_0x51b5d5[_0xab5f('0x61')]+'%';_0x454932[_0x1b9cbd](_0xab5f('0x69'),_0x2d10e6,_0x2d10e6,_0x2d10e6);}}else{_0x1d8952=_[_0xab5f('0x5f')](_0x24878b,['name','ContactId']);_0x51b5d5[_0xab5f('0x49')]=_0xab5f('0x6a');_0x15b9b1=as['buildExpression'](_0x201896,_0x1d8952[_0xab5f('0x3d')],_0x51b5d5);_0x454932[_0x1b9cbd](_0x15b9b1[_0xab5f('0x6b')],_0x15b9b1['value'][_0xab5f('0x6c')],_0x15b9b1[_0xab5f('0x61')][_0xab5f('0x1e')]);}break;case _0xab5f('0x6d'):var _0x5dde1b=_0x51b5d5['value'][_0xab5f('0x2f')](',')[_0xab5f('0x3a')](function(_0x1e4cd6){return Number(_0x1e4cd6);});_0x5dde1b['forEach'](function(_0x41fab8){_0x493235['or'](_0xab5f('0x6e'),'%,'+_0x41fab8+',%');});_0x36db0a=_['union'](_0x36db0a,_0x5dde1b);break;case _0xab5f('0x6f'):if(_0x51b5d5[_0xab5f('0x66')]===_0xab5f('0x67')){_0x454932[_0x1b9cbd](_0xab5f('0x70'),'%'+_0x51b5d5[_0xab5f('0x61')]+'%',null);}else{_0x1d8952=_[_0xab5f('0x5f')](_0x24878b,[_0xab5f('0x2b'),_0xab5f('0x37')]);_0x51b5d5[_0xab5f('0x49')]=_0xab5f('0x37');_0x15b9b1=as[_0xab5f('0x71')](_0x201896,_0x1d8952['type'],_0x51b5d5);_0x454932[_0x1b9cbd](_0x15b9b1[_0xab5f('0x6b')],_0x15b9b1[_0xab5f('0x61')][_0xab5f('0x6c')],_0x15b9b1[_0xab5f('0x61')]['end']);}break;case _0xab5f('0x72'):_0x15b9b1=as[_0xab5f('0x71')]('me',null,_0x51b5d5);_0x454932[_0x1b9cbd](_0x15b9b1['text'],_0x15b9b1[_0xab5f('0x61')][_0xab5f('0x6c')],_0x15b9b1['value']['end']);break;}}else{var _0x15b9b1=as[_0xab5f('0x71')](_0x201896,_0x1d8952[_0xab5f('0x3d')],_0x51b5d5);_0x454932[_0x1b9cbd](_0x15b9b1[_0xab5f('0x6b')],_0x15b9b1[_0xab5f('0x61')][_0xab5f('0x6c')],_0x15b9b1[_0xab5f('0x61')][_0xab5f('0x1e')]);}}}else{var _0x58442f=_(_0x141a34[_0xab5f('0x3f')])[_0xab5f('0x40')]()[_0xab5f('0x3a')](function(_0x610c3e){return _[_0xab5f('0x73')](_0x24878b,[_0xab5f('0x2b'),_0x610c3e])?_0x610c3e:undefined;})[_0xab5f('0x74')]()[_0xab5f('0x61')]();if(!_[_0xab5f('0x75')](_0x58442f)){_0x58442f[_0xab5f('0x76')](function(_0x5ca3b1){if(_0x5ca3b1==='WhatsappAccountId'){_0x85fd96['where'](_0xab5f('0x77'),[]['concat'](_0x141a34[_0xab5f('0x3f')][_0x5ca3b1]));}else if(_0x5ca3b1===_0xab5f('0x78')){var _0x5ec60c=JSON['parse'](_0x141a34[_0xab5f('0x3f')][_0x5ca3b1])[_0xab5f('0x79')];var _0x14e83f=JSON['parse'](_0x141a34[_0xab5f('0x3f')][_0x5ca3b1])[_0xab5f('0x7a')];_0x85fd96[_0xab5f('0x7b')](_0xab5f('0x7c'),_0x5ec60c,_0x14e83f);}else{if(_0x141a34[_0xab5f('0x3f')][_0x5ca3b1]===_0xab5f('0x7d')){_0x85fd96[_0xab5f('0x7b')]('i.'+_0x5ca3b1+_0xab5f('0x7e'));}else{_0x85fd96[_0xab5f('0x7b')]('i.'+_0x5ca3b1+_0xab5f('0x7f'),_0x141a34['query'][_0x5ca3b1]);}}});}if(_0x141a34['query'][_0xab5f('0x80')]){if(_0x141a34['query'][_0xab5f('0x80')]==0x1){_0x85fd96['having'](_0xab5f('0x81'));}else{_0x85fd96[_0xab5f('0x62')]('`unreadMessages`\x20>\x200');}}if(_0x141a34['query'][_0xab5f('0x82')]){_0x36db0a=_[_0xab5f('0x83')](_0x141a34[_0xab5f('0x3f')][_0xab5f('0x82')])?_0x141a34[_0xab5f('0x3f')][_0xab5f('0x82')]:new Array(_0x141a34[_0xab5f('0x3f')]['tag']);_0x36db0a['forEach'](function(_0x2c29e7){_0x493235['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2c29e7+',%');});}if(_0x141a34[_0xab5f('0x3f')][_0xab5f('0x84')]){var _0x5d4ed8=_0x141a34[_0xab5f('0x3f')][_0xab5f('0x84')][_0xab5f('0x85')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0x5d4ed8)){_0x454932['or'](_0xab5f('0x86'),_0x5d4ed8+'%')['or'](_0xab5f('0x87'),_0x5d4ed8+'%');}else{_0x454932['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x5d4ed8))['or'](_0xab5f('0x88'),_0x5d4ed8+'%');}}}_0x85fd96[_0xab5f('0x7b')](_0x454932);_0x85fd96[_0xab5f('0x89')](_0xab5f('0x8a'));var _0x12430f={'type':db[_0xab5f('0x8b')][_0xab5f('0x8c')]['SELECT'],'raw':!![]};var _0x23acfb=_0x85fd96['clone']();_0x23acfb[_0xab5f('0x49')](_0xab5f('0x8a'));_0x23acfb[_0xab5f('0x49')](_0xab5f('0x8d'),_0xab5f('0x60'));if(_0x1d1f7d[_0xab5f('0x8e')]){_0x1d1f7d['order'][_0xab5f('0x76')](function(_0x12f94e){var _0x12756c=_0x12f94e[0x0]===_0xab5f('0x8f')?_0x12f94e[0x0]:'i.'+_0x12f94e[0x0];_0x85fd96[_0xab5f('0x8e')](_0x12756c,_0x12f94e[0x1]===_0xab5f('0x90')?![]:!![]);});}if(!_['isEmpty'](_0x36db0a)){_0x85fd96[_0xab5f('0x62')](_0x493235);_0x23acfb[_0xab5f('0x7b')](_0xab5f('0x91'),_0x36db0a);}BPromise[_0xab5f('0x92')]()['then'](function(){if(!_0x43a51b){if(_0x141a34['query'][_0xab5f('0x93')])return;_0x23acfb[_0xab5f('0x7b')](_0xab5f('0x94'));_0x85fd96[_0xab5f('0x7b')](_0xab5f('0x94'));return;}if(_0x141a34['user'][_0xab5f('0x95')]!=='agent')return;return _0x141a34[_0xab5f('0x96')]['getWhatsappAccounts']({'attributes':['id'],'raw':!![]})[_0xab5f('0x28')](function(_0x502538){if(_[_0xab5f('0x75')](_0x502538)){_0x23acfb[_0xab5f('0x7b')](_0xab5f('0x97'));_0x85fd96[_0xab5f('0x7b')](_0xab5f('0x97'));}else{_0x23acfb[_0xab5f('0x7b')](_0xab5f('0x77'),_[_0xab5f('0x3a')](_0x502538,'id'));_0x85fd96[_0xab5f('0x7b')](_0xab5f('0x77'),_[_0xab5f('0x3a')](_0x502538,'id'));}});})[_0xab5f('0x28')](function(){if(_0x141a34[_0xab5f('0x96')][_0xab5f('0x95')]===_0xab5f('0x98')&&!_0x43a51b&&!_0x141a34['query'][_0xab5f('0x93')])return[];return db['sequelize'][_0xab5f('0x3f')](_0x23acfb['toString'](),_0x12430f);})[_0xab5f('0x28')](function(_0x81d183){_0x484fde[_0xab5f('0x23')]=_0x81d183[_0xab5f('0x5e')];if(_0x484fde['count']===0x0)return[];return db[_0xab5f('0x99')]['query'](_0x14e815['toString'](),_0x12430f)['then'](function(_0x5d349e){_0x3e699e=_[_0xab5f('0x9a')](_0x5d349e,'id');_0x12430f=_[_0xab5f('0x9b')](_0x12430f,{'model':db[_0xab5f('0x9c')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x141a34[_0xab5f('0x3f')][_0xab5f('0x44')]){_0x1d1f7d[_0xab5f('0x43')]['forEach'](function(_0x32c470){_0x85fd96[_0xab5f('0x49')]('i.'+_0x32c470);});}else{_0x85fd96[_0xab5f('0x49')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xab5f('0x60'));_0x85fd96[_0xab5f('0x49')](_0xab5f('0x9d'),_0xab5f('0x9e'));_0x85fd96[_0xab5f('0x49')]('a.mandatoryDisposition',_0xab5f('0x9f'));_0x85fd96[_0xab5f('0x49')]('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',_0xab5f('0x8f'));_0x85fd96[_0xab5f('0x49')]('i.*');_0x85fd96[_0xab5f('0x49')](_0xab5f('0xa0'),_0xab5f('0xa1'));_0x85fd96['field']('c.lastName',_0xab5f('0xa2'));_0x85fd96[_0xab5f('0x49')](_0xab5f('0xa3'),_0xab5f('0xa4'));_0x85fd96['field'](_0xab5f('0xa5'),'Contact.phone');_0x85fd96[_0xab5f('0x49')](_0xab5f('0xa6'),_0xab5f('0xa7'));_0x85fd96[_0xab5f('0x49')](_0xab5f('0xa8'),_0xab5f('0xa9'));_0x85fd96[_0xab5f('0x49')](_0xab5f('0xaa'),_0xab5f('0xab'));_0x85fd96[_0xab5f('0x49')](_0xab5f('0xac'),_0xab5f('0xad'));_0x85fd96[_0xab5f('0x49')](_0xab5f('0xae'),_0xab5f('0x2d'));}if(_0x1d1f7d[_0xab5f('0x22')])_0x85fd96[_0xab5f('0x22')](_0x1d1f7d['limit']);if(_0x1d1f7d[_0xab5f('0x20')])_0x85fd96['offset'](_0x1d1f7d[_0xab5f('0x20')]);return db[_0xab5f('0x99')]['query'](_0x85fd96[_0xab5f('0xaf')](),_0x12430f);})[_0xab5f('0x28')](function(_0x22b3d9){if(_0x22b3d9[_0xab5f('0x5e')]>0x0)_0x5f1018[_0xab5f('0x7b')](_0xab5f('0xb0'),_[_0xab5f('0x3a')](_0x22b3d9,'id'));return db[_0xab5f('0x99')][_0xab5f('0x3f')](_0x5f1018[_0xab5f('0xaf')](),_0x12430f)[_0xab5f('0x28')](function(_0x2fbc0f){var _0x323cd8=_[_0xab5f('0xb1')](_0x2fbc0f,_0xab5f('0xb2'));var _0x3f54f7=[];_0x22b3d9[_0xab5f('0x76')](function(_0x43e7f8){_0x3f54f7[_0xab5f('0x30')](updateWhatsappInteraction(_0x43e7f8,_0x3e699e,_0x323cd8));});return BPromise[_0xab5f('0xb3')](_0x3f54f7);});});})['then'](function(_0x5b2035){_0x484fde[_0xab5f('0xb4')]=_0x5b2035;return _0x484fde;})[_0xab5f('0x28')](respondWithFilteredResult(_0x41184c,_0x1d1f7d))[_0xab5f('0x31')](handleError(_0x41184c,null));};exports['show']=function(_0x24cd3c,_0x3dab9a){var _0xe05cfd={'raw':![],'where':{'id':_0x24cd3c[_0xab5f('0xb5')]['id']}},_0x12e073={};_0x12e073['model']=_['keys'](db[_0xab5f('0x9c')][_0xab5f('0x3b')]);_0x12e073['query']=_['keys'](_0x24cd3c[_0xab5f('0x3f')]);_0x12e073[_0xab5f('0x41')]=_[_0xab5f('0x42')](_0x12e073[_0xab5f('0x3e')],_0x12e073['query']);_0xe05cfd[_0xab5f('0x43')]=_['intersection'](_0x12e073[_0xab5f('0x3e')],qs[_0xab5f('0x44')](_0x24cd3c[_0xab5f('0x3f')][_0xab5f('0x44')]));_0xe05cfd[_0xab5f('0x43')]=_0xe05cfd[_0xab5f('0x43')][_0xab5f('0x5e')]?_0xe05cfd['attributes']:_0x12e073[_0xab5f('0x3e')];if(_0x24cd3c[_0xab5f('0x3f')][_0xab5f('0xb6')]){_0xe05cfd['include']=[{'all':!![]}];}_0xe05cfd=_[_0xab5f('0x9b')]({},_0xe05cfd,_0x24cd3c[_0xab5f('0xb7')]);return db[_0xab5f('0x9c')][_0xab5f('0x5f')](_0xe05cfd)[_0xab5f('0x28')](handleEntityNotFound(_0x3dab9a,null))[_0xab5f('0x28')](respondWithResult(_0x3dab9a,null))[_0xab5f('0x31')](handleError(_0x3dab9a,null));};exports['create']=function(_0x3e57c6,_0x18ff4e){return db[_0xab5f('0x9c')][_0xab5f('0xb8')](_0x3e57c6[_0xab5f('0x72')],{})[_0xab5f('0x28')](respondWithResult(_0x18ff4e,0xc9))['catch'](handleError(_0x18ff4e,null));};exports['update']=function(_0x17fd76,_0x1b419c){if(_0x17fd76[_0xab5f('0x72')]['id']){delete _0x17fd76[_0xab5f('0x72')]['id'];}return db['WhatsappInteraction'][_0xab5f('0x5f')]({'where':{'id':_0x17fd76['params']['id']}})[_0xab5f('0x28')](handleEntityNotFound(_0x1b419c,null))[_0xab5f('0x28')](saveUpdates(_0x17fd76[_0xab5f('0x72')],null))[_0xab5f('0x28')](respondWithResult(_0x1b419c,null))[_0xab5f('0x31')](handleError(_0x1b419c,null));};exports['destroy']=function(_0x52a486,_0x595b26){return db['WhatsappInteraction'][_0xab5f('0x5f')]({'where':{'id':_0x52a486['params']['id']}})[_0xab5f('0x28')](handleEntityNotFound(_0x595b26,null))[_0xab5f('0x28')](removeEntity(_0x595b26,null))[_0xab5f('0x31')](handleError(_0x595b26,null));};exports[_0xab5f('0xb9')]=function(_0x217a50,_0xfa5759){return db['WhatsappInteraction']['describe']()[_0xab5f('0x28')](respondWithResult(_0xfa5759,null))[_0xab5f('0x31')](handleError(_0xfa5759,null));};exports['addMessage']=function(_0x303f60,_0x46e581,_0x176553){return db[_0xab5f('0xba')][_0xab5f('0x5f')]({'where':{'id':_0x303f60[_0xab5f('0xb5')]['id']}})[_0xab5f('0x28')](handleEntityNotFound(_0x46e581,null))[_0xab5f('0x28')](function(_0x1cce17){if(_0x1cce17){return _0x1cce17[_0xab5f('0xbb')](_0x303f60[_0xab5f('0x72')][_0xab5f('0xbc')],_[_0xab5f('0xbd')](_0x303f60[_0xab5f('0x72')],[_0xab5f('0xbc'),'id'])||{});}})[_0xab5f('0x28')](respondWithResult(_0x46e581,null))['catch'](handleError(_0x46e581,null));};exports[_0xab5f('0xbe')]=function(_0x1a5a12,_0x2a7196,_0x34d741){var _0x5ce2a2={'raw':![],'where':{}};var _0xe88324={};var _0x2d0cee={'count':0x0,'rows':[]};return db[_0xab5f('0x9c')]['findOne']({'where':{'id':_0x1a5a12[_0xab5f('0xb5')]['id']}})['then'](handleEntityNotFound(_0x2a7196,null))[_0xab5f('0x28')](function(_0x23a906){if(_0x23a906){_0xe88324['model']=_[_0xab5f('0x40')](db['WhatsappMessage'][_0xab5f('0x3b')]);_0xe88324[_0xab5f('0x3f')]=_[_0xab5f('0x40')](_0x1a5a12[_0xab5f('0x3f')]);_0xe88324[_0xab5f('0x41')]=_[_0xab5f('0x42')](_0xe88324[_0xab5f('0x3e')],_0xe88324[_0xab5f('0x3f')]);_0x5ce2a2[_0xab5f('0x43')]=_[_0xab5f('0x42')](_0xe88324[_0xab5f('0x3e')],qs['fields'](_0x1a5a12['query'][_0xab5f('0x44')]));_0x5ce2a2['attributes']=_0x5ce2a2[_0xab5f('0x43')][_0xab5f('0x5e')]?_0x5ce2a2['attributes']:_0xe88324[_0xab5f('0x3e')];if(!_0x1a5a12[_0xab5f('0x3f')]['hasOwnProperty'](_0xab5f('0xbf'))){_0x5ce2a2['limit']=qs[_0xab5f('0x22')](_0x1a5a12[_0xab5f('0x3f')]['limit']);_0x5ce2a2[_0xab5f('0x20')]=qs[_0xab5f('0x20')](_0x1a5a12[_0xab5f('0x3f')]['offset']);}_0x5ce2a2[_0xab5f('0x8e')]=qs[_0xab5f('0x46')](_0x1a5a12['query'][_0xab5f('0x46')]);_0x5ce2a2[_0xab5f('0x7b')]=qs[_0xab5f('0x41')](_[_0xab5f('0x47')](_0x1a5a12[_0xab5f('0x3f')],_0xe88324[_0xab5f('0x41')]));_0x5ce2a2[_0xab5f('0x7b')][_0xab5f('0xb2')]=_0x23a906['id'];if(_0x1a5a12['query'][_0xab5f('0x84')]){_0x5ce2a2[_0xab5f('0x7b')]=_[_0xab5f('0x9b')](_0x5ce2a2[_0xab5f('0x7b')],{'$or':_[_0xab5f('0x3a')](_0x5ce2a2[_0xab5f('0x43')],function(_0xae2ddb){var _0x2924f9={};_0x2924f9[_0xae2ddb]={'$like':'%'+_0x1a5a12[_0xab5f('0x3f')]['filter']+'%'};return _0x2924f9;})});}if(_0x1a5a12['query']['$gte']){var _0x3efd43=_0x1a5a12['query'][_0xab5f('0x79')][_0xab5f('0x2f')](',');var _0x3ed2a8={};_0x3ed2a8[_0x3efd43[0x0]]={'$gte':moment(_0x3efd43[0x1])[_0xab5f('0xc0')]('YYYY-MM-DD\x20HH:mm:ss')};_0x5ce2a2[_0xab5f('0x7b')]=_['merge'](_0x5ce2a2[_0xab5f('0x7b')],_0x3ed2a8);}_0x5ce2a2=_[_0xab5f('0x9b')]({},_0x5ce2a2,_0x1a5a12['options']);return db[_0xab5f('0xba')]['count']({'where':_0x5ce2a2[_0xab5f('0x7b')]})[_0xab5f('0x28')](function(_0x505047){_0x2d0cee[_0xab5f('0x23')]=_0x505047;if(_0x1a5a12['query']['includeAll']){_0x5ce2a2['include']=[{'all':!![]}];}return db[_0xab5f('0xba')][_0xab5f('0xc1')](_0x5ce2a2);})[_0xab5f('0x28')](function(_0x1f9abf){_0x2d0cee[_0xab5f('0xb4')]=_0x1f9abf;return _0x2d0cee;});}})[_0xab5f('0x28')](respondWithFilteredResult(_0x2a7196,_0x5ce2a2))[_0xab5f('0x31')](handleError(_0x2a7196,null));};exports['addTags']=function(_0x10c60d,_0x4be3c4,_0x4da443){return db[_0xab5f('0x9c')]['find']({'where':{'id':_0x10c60d[_0xab5f('0xb5')]['id']}})['then'](handleEntityNotFound(_0x4be3c4,null))[_0xab5f('0x28')](function(_0x2eb968){if(_0x2eb968){return _0x2eb968[_0xab5f('0xc2')](_0x10c60d[_0xab5f('0x72')][_0xab5f('0xbc')],_[_0xab5f('0xbd')](_0x10c60d[_0xab5f('0x72')],[_0xab5f('0xbc'),'id'])||{})['spread'](function(){return db[_0xab5f('0x6d')][_0xab5f('0xc1')]({'attributes':['id','name','color'],'where':{'id':_0x10c60d[_0xab5f('0x72')][_0xab5f('0xbc')]}});})[_0xab5f('0x28')](function(_0x11ab73){socket[_0xab5f('0xc3')](_0xab5f('0xc4'),{'id':Number(_0x10c60d[_0xab5f('0xb5')]['id']),'tags':_0x11ab73||[]});return{'id':Number(_0x10c60d[_0xab5f('0xb5')]['id']),'tags':_0x11ab73||[]};});}})[_0xab5f('0x28')](respondWithResult(_0x4be3c4,null))[_0xab5f('0x31')](handleError(_0x4be3c4,null));};exports[_0xab5f('0xc5')]=function(_0x5dc376,_0x332556,_0x1f4e9b){return db[_0xab5f('0x9c')][_0xab5f('0x5f')]({'where':{'id':_0x5dc376[_0xab5f('0xb5')]['id']}})['then'](handleEntityNotFound(_0x332556,null))[_0xab5f('0x28')](function(_0x3b1a93){if(_0x3b1a93){return _0x3b1a93[_0xab5f('0xc5')](_0x5dc376[_0xab5f('0x3f')][_0xab5f('0xbc')]);}})[_0xab5f('0x28')](respondWithStatusCode(_0x332556,null))[_0xab5f('0x31')](handleError(_0x332556,null));};exports[_0xab5f('0xc6')]=function(_0x562b48,_0xb29308){var _0x544cfb=moment()['unix']()[_0xab5f('0xaf')]();var _0x46e175=path['join'](config[_0xab5f('0xc7')],_0xab5f('0xc8'),_0xab5f('0xc9'),_0xab5f('0xca'));var _0x1d1c17=path[_0xab5f('0xcb')](config[_0xab5f('0xc7')],'server',_0xab5f('0xc9'),_0xab5f('0xcc'));var _0x172b67=path[_0xab5f('0xcb')](_0x46e175,_0x544cfb);var _0x56ddfa=util[_0xab5f('0xc0')](_0xab5f('0xcd'),_0x562b48[_0xab5f('0xb5')]['id'],_0x544cfb);var _0x5898d0=path[_0xab5f('0xcb')](_0x46e175,_0x56ddfa);var _0x4a09b4=[];_0x4a09b4['push']({'model':db['User'],'as':_0xab5f('0x6f'),'attributes':['id',_0xab5f('0xce')],'raw':!![]});_0x4a09b4[_0xab5f('0x30')]({'model':db[_0xab5f('0xcf')],'as':'Contact','attributes':['id',_0xab5f('0xd0'),'lastName'],'raw':!![]});if(_0x562b48[_0xab5f('0x3f')][_0xab5f('0xcc')]){_0x4a09b4[_0xab5f('0x30')]({'model':db[_0xab5f('0xd1')],'as':_0xab5f('0xd1'),'raw':!![]});}var _0x20ffaa=[{'model':db[_0xab5f('0xba')],'as':_0xab5f('0xd2'),'attributes':['id',_0xab5f('0x72'),_0xab5f('0x78'),_0xab5f('0xd3'),_0xab5f('0xd4'),_0xab5f('0x80')],'include':_0x4a09b4}];_0x20ffaa[_0xab5f('0x30')]({'model':db[_0xab5f('0xd5')],'as':_0xab5f('0xd6'),'attributes':['id',_0xab5f('0x2b')]});_0x20ffaa[_0xab5f('0x30')]({'model':db[_0xab5f('0x6f')],'as':_0xab5f('0xd7'),'attributes':['id',_0xab5f('0xce')]});return db[_0xab5f('0x9c')]['find']({'where':{'id':_0x562b48[_0xab5f('0xb5')]['id']},'include':_0x20ffaa})[_0xab5f('0x28')](handleEntityNotFound(_0xb29308,null))['then'](function(_0x115ef9){if(_0x115ef9){var _0x8ff3ac=_0x115ef9[_0xab5f('0xd8')]({'plain':!![]});fs[_0xab5f('0xd9')](_0x172b67);var _0x490af7={'channel':_0xab5f('0xda'),'account':_0x8ff3ac[_0xab5f('0xd6')][_0xab5f('0x2b')],'agent':_0x8ff3ac['Owner']?_0x8ff3ac[_0xab5f('0xd7')][_0xab5f('0xce')]:_0xab5f('0xdb'),'createdAt':moment(_0x8ff3ac[_0xab5f('0x78')])[_0xab5f('0xc0')](_0xab5f('0xdc'))[_0xab5f('0xaf')](),'closedAt':_0x8ff3ac[_0xab5f('0x38')]?moment(_0x8ff3ac[_0xab5f('0xdd')])[_0xab5f('0xc0')]('YYYY-MM-DD\x20HH:mm:ss')[_0xab5f('0xaf')]():'','disposition':_0x8ff3ac[_0xab5f('0xde')],'messages':_(_0x8ff3ac[_0xab5f('0xd2')])[_0xab5f('0x84')]({'secret':![]})['map'](function(_0xa331c){if(_0xa331c[_0xab5f('0xd1')]){var _0x3fb6fd=path[_0xab5f('0xcb')](_0x1d1c17,_0xa331c['Attachment']['basename']);if(fs[_0xab5f('0xdf')](_0x3fb6fd)){fs[_0xab5f('0xe0')](_0x3fb6fd)[_0xab5f('0xe1')](fs[_0xab5f('0xe2')](path[_0xab5f('0xcb')](_0x172b67,_0xa331c['Attachment'][_0xab5f('0xe3')])));}}return{'date':moment(_0xa331c[_0xab5f('0x78')])[_0xab5f('0xc0')](_0xab5f('0xdc'))[_0xab5f('0xaf')](),'sender':_0xa331c[_0xab5f('0xd3')]===_0xab5f('0xe4')?_0xa331c[_0xab5f('0x6f')]?_0xa331c[_0xab5f('0x6f')]['fullname']:_0xab5f('0xe5'):_0xa331c[_0xab5f('0x65')]['firstName']+(_0xa331c[_0xab5f('0x65')][_0xab5f('0xe6')]?'\x20'+_0xa331c[_0xab5f('0x65')][_0xab5f('0xe6')]:''),'body':_0xa331c[_0xab5f('0xd1')]?_0xa331c['Attachment'][_0xab5f('0xe3')]:_0xa331c[_0xab5f('0x72')],'direction':_0xa331c['direction']===_0xab5f('0xe4')?'A':'C','secret':_0xa331c[_0xab5f('0xd4')],'read':_0xa331c['read'],'attachment':_0xa331c[_0xab5f('0xd1')]};})['value']()};return ejs[_0xab5f('0xe7')](path[_0xab5f('0xcb')](config[_0xab5f('0xc7')],_0xab5f('0xc8'),_0xab5f('0xe8'),_0xab5f('0xe9')),{'interaction':_0x490af7})[_0xab5f('0x28')](function(_0xe3a487){var _0x2f61d8=path[_0xab5f('0xcb')](_0x172b67,_0xab5f('0xea')+_0x8ff3ac['id']+'-'+_0x544cfb+'.pdf');var _0x408566={'path':_0x2f61d8,'channel':_0xab5f('0xda'),'interactionId':_0x8ff3ac['id']};return pdf[_0xab5f('0xeb')](_0xe3a487,_0x408566);})[_0xab5f('0x28')](function(){return new BPromise(function(_0x3eb0ae,_0x195bcf){zipdir(_0x172b67,{'saveTo':_0x5898d0},function(_0x186440,_0x55e0df){if(_0x186440)return _0x195bcf(_0x186440);return _0x3eb0ae(_0x55e0df);});})[_0xab5f('0x28')](function(){return new BPromise(function(_0x32058f,_0x3d1ef7){rimraf(_0x172b67,function(_0x257dcb){if(_0x257dcb)_0x3d1ef7(_0x257dcb);return _0x32058f();});});})[_0xab5f('0x28')](function(){return _0xb29308[_0xab5f('0xc6')](_0x5898d0,_0x56ddfa,function(_0x580990){if(_0x580990){console[_0xab5f('0xec')](_0xab5f('0xed'),_0x580990);}else{fs[_0xab5f('0xee')](_0x5898d0);}});});});}else{return _0xb29308[_0xab5f('0x1c')](0xc8);}})[_0xab5f('0x31')](handleError(_0xb29308,null));};
\ No newline at end of file
index 3fef728..7d6ee6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe148=['WhatsappMessage','save','update','remove','getUsers','setDataValue','Users','map','findAll','length','catch','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xe148,0x9e));var _0x8e14=function(_0x4ca288,_0x254dd8){_0x4ca288=_0x4ca288-0x0;var _0x2362c1=_0xe148[_0x4ca288];return _0x2362c1;};'use strict';var EventEmitter=require(_0x8e14('0x0'));var WhatsappInteraction=require(_0x8e14('0x1'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0x8e14('0x1'))['db'][_0x8e14('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8e14('0x3'),'afterUpdate':_0x8e14('0x4'),'afterDestroy':_0x8e14('0x5')};function emitEvent(_0x19169d){return function(_0x5db794,_0x5d8319,_0x33307e){_0x5db794[_0x8e14('0x6')]({'attributes':['id'],'raw':!![]})['then'](function(_0x1a8608){_0x5db794[_0x8e14('0x7')](_0x8e14('0x8'),_0x1a8608[_0x8e14('0x9')](function(_0x57b082){return{'id':_0x57b082['id']};}));return WhatsappMessage[_0x8e14('0xa')]({'where':{'WhatsappInteractionId':_0x5db794['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x46abf4){_0x5db794[_0x8e14('0x7')]('unreadMessages',_0x46abf4[_0x8e14('0xb')]);WhatsappInteractionEvents['emit'](_0x19169d+':'+_0x5db794['id'],_0x5db794);WhatsappInteractionEvents['emit'](_0x19169d,_0x5db794);_0x33307e(null);})[_0x8e14('0xc')](_0x33307e(null));};}for(var e in events){if(events[_0x8e14('0xd')](e)){var event=events[e];WhatsappInteraction[_0x8e14('0xe')](e,emitEvent(event));}}module[_0x8e14('0xf')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x74f4=['events','../../mysqldb','WhatsappMessage','save','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook'];(function(_0x492afd,_0xe433b1){var _0x4652e2=function(_0x4066bd){while(--_0x4066bd){_0x492afd['push'](_0x492afd['shift']());}};_0x4652e2(++_0xe433b1);}(_0x74f4,0xaa));var _0x474f=function(_0x5e484b,_0x9d161d){_0x5e484b=_0x5e484b-0x0;var _0x2e4aae=_0x74f4[_0x5e484b];return _0x2e4aae;};'use strict';var EventEmitter=require(_0x474f('0x0'));var WhatsappInteraction=require(_0x474f('0x1'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0x474f('0x1'))['db'][_0x474f('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x474f('0x3'),'afterUpdate':'update','afterDestroy':_0x474f('0x4')};function emitEvent(_0x978477){return function(_0x301664,_0x503ad4,_0x5b6d20){_0x301664[_0x474f('0x5')]({'attributes':['id'],'raw':!![]})[_0x474f('0x6')](function(_0x23c5ce){_0x301664[_0x474f('0x7')](_0x474f('0x8'),_0x23c5ce[_0x474f('0x9')](function(_0x3b06be){return{'id':_0x3b06be['id']};}));return WhatsappMessage[_0x474f('0xa')]({'where':{'WhatsappInteractionId':_0x301664['id'],'direction':'in','read':![]},'raw':!![]});})[_0x474f('0x6')](function(_0x403d67){_0x301664['setDataValue'](_0x474f('0xb'),_0x403d67[_0x474f('0xc')]);WhatsappInteractionEvents[_0x474f('0xd')](_0x978477+':'+_0x301664['id'],_0x301664);WhatsappInteractionEvents['emit'](_0x978477,_0x301664);_0x5b6d20(null);})[_0x474f('0xe')](_0x5b6d20(null));};}for(var e in events){if(events[_0x474f('0xf')](e)){var event=events[e];WhatsappInteraction[_0x474f('0x10')](e,emitEvent(event));}}module['exports']=WhatsappInteractionEvents;
\ No newline at end of file
index 1ca379a..c422537 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7dd=['util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./whatsappInteraction.attributes','exports','define','WhatsappInteraction','whatsapp_interactions','changed','lodash'];(function(_0x5c0663,_0x1b25b3){var _0x420907=function(_0x521f52){while(--_0x521f52){_0x5c0663['push'](_0x5c0663['shift']());}};_0x420907(++_0x1b25b3);}(_0xa7dd,0x109));var _0xda7d=function(_0x3828a9,_0x268863){_0x3828a9=_0x3828a9-0x0;var _0x16e7f5=_0xa7dd[_0x3828a9];return _0x16e7f5;};'use strict';var _=require(_0xda7d('0x0'));var util=require(_0xda7d('0x1'));var logger=require(_0xda7d('0x2'))(_0xda7d('0x3'));var moment=require(_0xda7d('0x4'));var BPromise=require('bluebird');var rp=require(_0xda7d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xda7d('0x6'));var config=require(_0xda7d('0x7'));var attributes=require(_0xda7d('0x8'));module[_0xda7d('0x9')]=function(_0x1517b2,_0x306b9e){return _0x1517b2[_0xda7d('0xa')](_0xda7d('0xb'),attributes,{'tableName':_0xda7d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5a0354,_0x5d6339,_0x3fdaa5){if(_0x5a0354[_0xda7d('0xd')]('closed')){_0x5a0354['closedAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}_0x3fdaa5(null,_0x5a0354);}}});};
\ No newline at end of file
+var _0xf96f=['whatsapp_interactions','changed','closed','format','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','WhatsappInteraction'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf96f,0x7c));var _0xff96=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xf96f[_0x1facfa];return _0x9ec701;};'use strict';var _=require('lodash');var util=require(_0xff96('0x0'));var logger=require(_0xff96('0x1'))(_0xff96('0x2'));var moment=require(_0xff96('0x3'));var BPromise=require(_0xff96('0x4'));var rp=require(_0xff96('0x5'));var fs=require('fs');var path=require(_0xff96('0x6'));var rimraf=require(_0xff96('0x7'));var config=require(_0xff96('0x8'));var attributes=require('./whatsappInteraction.attributes');module['exports']=function(_0xf1da35,_0x59fd7e){return _0xf1da35[_0xff96('0x9')](_0xff96('0xa'),attributes,{'tableName':_0xff96('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1903c4,_0x44d53d,_0x455546){if(_0x1903c4[_0xff96('0xc')](_0xff96('0xd'))){_0x1903c4['closedAt']=moment()[_0xff96('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x455546(null,_0x1903c4);}}});};
\ No newline at end of file
index 1cdeeec..c18c27c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9a6=['localhost','socket.io-emitter','./whatsappInteraction.socket','request','then','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','body','options','raw','limit','debug','stringify','AddTagsToWhatsappInteraction','find','where','addTags','omit','spread','AddTags','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults'];(function(_0x4934e1,_0x476c05){var _0xd04010=function(_0x2818fe){while(--_0x2818fe){_0x4934e1['push'](_0x4934e1['shift']());}};_0xd04010(++_0x476c05);}(_0xe9a6,0xc1));var _0x6e9a=function(_0x79fd76,_0x4c1a14){_0x79fd76=_0x79fd76-0x0;var _0x5ecc0b=_0xe9a6[_0x79fd76];return _0x5ecc0b;};'use strict';var _=require(_0x6e9a('0x0'));var util=require('util');var moment=require(_0x6e9a('0x1'));var BPromise=require('bluebird');var rs=require(_0x6e9a('0x2'));var fs=require('fs');var Redis=require(_0x6e9a('0x3'));var db=require(_0x6e9a('0x4'))['db'];var utils=require(_0x6e9a('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x6e9a('0x6'));var jayson=require(_0x6e9a('0x7'));var client=jayson[_0x6e9a('0x8')][_0x6e9a('0x9')]({'port':0x232a});config[_0x6e9a('0xa')]=_[_0x6e9a('0xb')](config[_0x6e9a('0xa')],{'host':_0x6e9a('0xc'),'port':0x18eb});var socket=require(_0x6e9a('0xd'))(new Redis(config[_0x6e9a('0xa')]));require(_0x6e9a('0xe'))['register'](socket);function respondWithRpcPromise(_0x539c6d,_0x5d72cd,_0x6f0f3){return new BPromise(function(_0x1689e8,_0xb89ae7){return client[_0x6e9a('0xf')](_0x539c6d,_0x6f0f3)[_0x6e9a('0x10')](function(_0xd77aa9){logger['info'](_0x6e9a('0x11'),_0x5d72cd,'request\x20sent');logger['debug']('WhatsappInteraction,\x20%s,\x20%s,\x20%s',_0x5d72cd,_0x6e9a('0x12'),JSON['stringify'](_0xd77aa9));if(_0xd77aa9[_0x6e9a('0x13')]){if(_0xd77aa9[_0x6e9a('0x13')][_0x6e9a('0x14')]===0x1f4){logger['error'](_0x6e9a('0x11'),_0x5d72cd,_0xd77aa9[_0x6e9a('0x13')][_0x6e9a('0x15')]);return _0xb89ae7(_0xd77aa9[_0x6e9a('0x13')]['message']);}logger[_0x6e9a('0x13')](_0x6e9a('0x11'),_0x5d72cd,_0xd77aa9[_0x6e9a('0x13')][_0x6e9a('0x15')]);return _0x1689e8(_0xd77aa9['error']['message']);}else{logger[_0x6e9a('0x16')](_0x6e9a('0x11'),_0x5d72cd,_0x6e9a('0x12'));_0x1689e8(_0xd77aa9[_0x6e9a('0x17')][_0x6e9a('0x15')]);}})[_0x6e9a('0x18')](function(_0x5a23c2){logger['error'](_0x6e9a('0x11'),_0x5d72cd,_0x5a23c2);_0xb89ae7(_0x5a23c2);});});}exports[_0x6e9a('0x19')]=function(_0x2bddc6){var _0x1e877f=this;return new Promise(function(_0x49a208,_0x1659a4){return db[_0x6e9a('0x1a')][_0x6e9a('0x1b')](_0x2bddc6[_0x6e9a('0x1c')],{'raw':_0x2bddc6[_0x6e9a('0x1d')]?_0x2bddc6[_0x6e9a('0x1d')][_0x6e9a('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2bddc6[_0x6e9a('0x1d')]?_0x2bddc6[_0x6e9a('0x1d')]['where']||null:null,'attributes':_0x2bddc6[_0x6e9a('0x1d')]?_0x2bddc6[_0x6e9a('0x1d')]['attributes']||null:null,'limit':_0x2bddc6[_0x6e9a('0x1d')]?_0x2bddc6[_0x6e9a('0x1d')][_0x6e9a('0x1f')]||null:null})[_0x6e9a('0x10')](function(_0x20049b){logger[_0x6e9a('0x16')](_0x6e9a('0x19'),_0x2bddc6);logger[_0x6e9a('0x20')](_0x6e9a('0x19'),_0x2bddc6,JSON[_0x6e9a('0x21')](_0x20049b));_0x49a208(_0x20049b);})['catch'](function(_0x42c202){logger[_0x6e9a('0x13')]('UpdateWhatsappInteraction',_0x42c202[_0x6e9a('0x15')],_0x2bddc6);_0x1659a4(_0x1e877f['error'](0x1f4,_0x42c202[_0x6e9a('0x15')]));});});};exports[_0x6e9a('0x22')]=function(_0x1cb9ee){return new Promise(function(_0x27b2ce,_0x3836ae){return db[_0x6e9a('0x1a')][_0x6e9a('0x23')]({'where':_0x1cb9ee[_0x6e9a('0x1d')]?_0x1cb9ee[_0x6e9a('0x1d')][_0x6e9a('0x24')]||null:null})['then'](function(_0x385d7e){if(_0x385d7e){return _0x385d7e[_0x6e9a('0x25')](_0x1cb9ee[_0x6e9a('0x1c')]['ids'],_[_0x6e9a('0x26')](_0x1cb9ee[_0x6e9a('0x1c')],['ids','id'])||{});}})[_0x6e9a('0x27')](function(_0xa5d05c){logger[_0x6e9a('0x16')](_0x6e9a('0x28'),_0x1cb9ee);logger[_0x6e9a('0x20')](_0x6e9a('0x28'),_0x1cb9ee,JSON[_0x6e9a('0x21')](_0xa5d05c));_0x27b2ce(_0xa5d05c);})[_0x6e9a('0x18')](function(_0x4715f3){logger['error'](_0x6e9a('0x28'),_0x4715f3[_0x6e9a('0x15')],_0x1cb9ee);_0x3836ae(_this[_0x6e9a('0x13')](0x1f4,_0x4715f3[_0x6e9a('0x15')]));});});};
\ No newline at end of file
+var _0xe780=['WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UpdateWhatsappInteraction','WhatsappInteraction','body','options','catch','AddTagsToWhatsappInteraction','find','addTags','ids','omit','info','AddTags','lodash','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','request','then','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x40e6d8,_0x9870c6){var _0x17915a=function(_0x10f23d){while(--_0x10f23d){_0x40e6d8['push'](_0x40e6d8['shift']());}};_0x17915a(++_0x9870c6);}(_0xe780,0x1d8));var _0x0e78=function(_0x3ea91b,_0x3da50b){_0x3ea91b=_0x3ea91b-0x0;var _0x2ae3dc=_0xe780[_0x3ea91b];return _0x2ae3dc;};'use strict';var _=require(_0x0e78('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x0e78('0x1'));var rs=require(_0x0e78('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0e78('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x0e78('0x4'))(_0x0e78('0x5'));var config=require('../../config/environment');var jayson=require(_0x0e78('0x6'));var client=jayson['client']['http']({'port':0x232a});config[_0x0e78('0x7')]=_[_0x0e78('0x8')](config[_0x0e78('0x7')],{'host':_0x0e78('0x9'),'port':0x18eb});var socket=require(_0x0e78('0xa'))(new Redis(config[_0x0e78('0x7')]));require(_0x0e78('0xb'))[_0x0e78('0xc')](socket);function respondWithRpcPromise(_0x27632e,_0x4eaa0d,_0x4186a8){return new BPromise(function(_0x4c812f,_0x9bd1e3){return client[_0x0e78('0xd')](_0x27632e,_0x4186a8)[_0x0e78('0xe')](function(_0x3d4975){logger['info'](_0x0e78('0xf'),_0x4eaa0d,_0x0e78('0x10'));logger[_0x0e78('0x11')](_0x0e78('0x12'),_0x4eaa0d,'request\x20sent',JSON[_0x0e78('0x13')](_0x3d4975));if(_0x3d4975['error']){if(_0x3d4975[_0x0e78('0x14')][_0x0e78('0x15')]===0x1f4){logger[_0x0e78('0x14')](_0x0e78('0xf'),_0x4eaa0d,_0x3d4975[_0x0e78('0x14')][_0x0e78('0x16')]);return _0x9bd1e3(_0x3d4975[_0x0e78('0x14')][_0x0e78('0x16')]);}logger[_0x0e78('0x14')](_0x0e78('0xf'),_0x4eaa0d,_0x3d4975[_0x0e78('0x14')][_0x0e78('0x16')]);return _0x4c812f(_0x3d4975[_0x0e78('0x14')][_0x0e78('0x16')]);}else{logger['info'](_0x0e78('0xf'),_0x4eaa0d,_0x0e78('0x10'));_0x4c812f(_0x3d4975['result'][_0x0e78('0x16')]);}})['catch'](function(_0x52f769){logger[_0x0e78('0x14')](_0x0e78('0xf'),_0x4eaa0d,_0x52f769);_0x9bd1e3(_0x52f769);});});}exports[_0x0e78('0x17')]=function(_0x40a8f0){var _0x3467e6=this;return new Promise(function(_0x5eaae1,_0x435b4c){return db[_0x0e78('0x18')]['update'](_0x40a8f0[_0x0e78('0x19')],{'raw':_0x40a8f0['options']?_0x40a8f0[_0x0e78('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x40a8f0[_0x0e78('0x1a')]?_0x40a8f0[_0x0e78('0x1a')]['where']||null:null,'attributes':_0x40a8f0['options']?_0x40a8f0['options']['attributes']||null:null,'limit':_0x40a8f0[_0x0e78('0x1a')]?_0x40a8f0[_0x0e78('0x1a')]['limit']||null:null})[_0x0e78('0xe')](function(_0x172029){logger['info'](_0x0e78('0x17'),_0x40a8f0);logger['debug'](_0x0e78('0x17'),_0x40a8f0,JSON[_0x0e78('0x13')](_0x172029));_0x5eaae1(_0x172029);})[_0x0e78('0x1b')](function(_0x289703){logger[_0x0e78('0x14')](_0x0e78('0x17'),_0x289703[_0x0e78('0x16')],_0x40a8f0);_0x435b4c(_0x3467e6[_0x0e78('0x14')](0x1f4,_0x289703[_0x0e78('0x16')]));});});};exports[_0x0e78('0x1c')]=function(_0x258040){return new Promise(function(_0x549380,_0x2aa6f1){return db['WhatsappInteraction'][_0x0e78('0x1d')]({'where':_0x258040['options']?_0x258040['options']['where']||null:null})[_0x0e78('0xe')](function(_0x4a4a0a){if(_0x4a4a0a){return _0x4a4a0a[_0x0e78('0x1e')](_0x258040[_0x0e78('0x19')][_0x0e78('0x1f')],_[_0x0e78('0x20')](_0x258040[_0x0e78('0x19')],['ids','id'])||{});}})['spread'](function(_0x13dbb8){logger[_0x0e78('0x21')](_0x0e78('0x22'),_0x258040);logger[_0x0e78('0x11')](_0x0e78('0x22'),_0x258040,JSON[_0x0e78('0x13')](_0x13dbb8));_0x549380(_0x13dbb8);})[_0x0e78('0x1b')](function(_0x3bd8a9){logger[_0x0e78('0x14')]('AddTags',_0x3bd8a9[_0x0e78('0x16')],_0x258040);_0x2aa6f1(_this[_0x0e78('0x14')](0x1f4,_0x3bd8a9[_0x0e78('0x16')]));});});};
\ No newline at end of file
index 3b5cd3b..1292ce7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9ef=['removeListener','register','whatsappInteraction:','./whatsappInteraction.events','save','update','emit'];(function(_0xd7b0a4,_0x53c7d3){var _0x184e9e=function(_0x325bbd){while(--_0x325bbd){_0xd7b0a4['push'](_0xd7b0a4['shift']());}};_0x184e9e(++_0x53c7d3);}(_0xb9ef,0x14c));var _0xfb9e=function(_0xd2fbb9,_0x3ad4e3){_0xd2fbb9=_0xd2fbb9-0x0;var _0x1f1679=_0xb9ef[_0xd2fbb9];return _0x1f1679;};'use strict';var WhatsappInteractionEvents=require(_0xfb9e('0x0'));var events=[_0xfb9e('0x1'),'remove',_0xfb9e('0x2')];function createListener(_0x321c76,_0x56fdb8){return function(_0x2c9935){_0x56fdb8[_0xfb9e('0x3')](_0x321c76,_0x2c9935);};}function removeListener(_0x4e2513,_0x5135de){return function(){WhatsappInteractionEvents[_0xfb9e('0x4')](_0x4e2513,_0x5135de);};}exports[_0xfb9e('0x5')]=function(_0x2f021e){for(var _0x50069e=0x0,_0x26d853=events['length'];_0x50069e<_0x26d853;_0x50069e++){var _0x23fcac=events[_0x50069e];var _0x1b692a=createListener(_0xfb9e('0x6')+_0x23fcac,_0x2f021e);WhatsappInteractionEvents['on'](_0x23fcac,_0x1b692a);}};
\ No newline at end of file
+var _0xb747=['save','update','removeListener','length','whatsappInteraction:','./whatsappInteraction.events'];(function(_0x551b0a,_0x41348c){var _0x5dacb8=function(_0x1123cf){while(--_0x1123cf){_0x551b0a['push'](_0x551b0a['shift']());}};_0x5dacb8(++_0x41348c);}(_0xb747,0x15b));var _0x7b74=function(_0x121f56,_0x2a1e92){_0x121f56=_0x121f56-0x0;var _0x5b37d3=_0xb747[_0x121f56];return _0x5b37d3;};'use strict';var WhatsappInteractionEvents=require(_0x7b74('0x0'));var events=[_0x7b74('0x1'),'remove',_0x7b74('0x2')];function createListener(_0x2e5ced,_0x271985){return function(_0x1c5a88){_0x271985['emit'](_0x2e5ced,_0x1c5a88);};}function removeListener(_0x3b5300,_0x541b59){return function(){WhatsappInteractionEvents[_0x7b74('0x3')](_0x3b5300,_0x541b59);};}exports['register']=function(_0x29e5ca){for(var _0x3db3bc=0x0,_0x365666=events[_0x7b74('0x4')];_0x3db3bc<_0x365666;_0x3db3bc++){var _0x552eed=events[_0x3db3bc];var _0x4f20e5=createListener(_0x7b74('0x5')+_0x552eed,_0x29e5ca);WhatsappInteractionEvents['on'](_0x552eed,_0x4f20e5);}};
\ No newline at end of file
index f9d7c51..4635cb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf466=['/:id/reject','reject','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','post','tracked','whatsapp','whatsappmessage:create','create','/:id/status','status','update','put','/:id/accept','accept'];(function(_0x58f14c,_0x3dfa82){var _0x1e8e50=function(_0x4ef2c2){while(--_0x4ef2c2){_0x58f14c['push'](_0x58f14c['shift']());}};_0x1e8e50(++_0x3dfa82);}(_0xf466,0xbe));var _0x6f46=function(_0x15023f,_0x342b87){_0x15023f=_0x15023f-0x0;var _0x1d3400=_0xf466[_0x15023f];return _0x1d3400;};'use strict';var multer=require(_0x6f46('0x0'));var util=require('util');var path=require(_0x6f46('0x1'));var timeout=require(_0x6f46('0x2'));var express=require(_0x6f46('0x3'));var router=express[_0x6f46('0x4')]();var fs_extra=require(_0x6f46('0x5'));var auth=require(_0x6f46('0x6'));var interaction=require(_0x6f46('0x7'));var config=require(_0x6f46('0x8'));var controller=require(_0x6f46('0x9'));router[_0x6f46('0xa')]('/',auth[_0x6f46('0xb')](),controller[_0x6f46('0xc')]);router[_0x6f46('0xa')](_0x6f46('0xd'),auth[_0x6f46('0xb')](),controller[_0x6f46('0xe')]);router[_0x6f46('0xa')](_0x6f46('0xf'),auth[_0x6f46('0xb')](),controller['show']);router[_0x6f46('0x10')]('/',auth[_0x6f46('0xb')](),interaction[_0x6f46('0x11')](_0x6f46('0x12'),_0x6f46('0x13')),controller[_0x6f46('0x14')]);router[_0x6f46('0x10')](_0x6f46('0x15'),controller[_0x6f46('0x16')]);router['put'](_0x6f46('0xf'),auth['isAuthenticated'](),controller[_0x6f46('0x17')]);router[_0x6f46('0x18')](_0x6f46('0x19'),auth[_0x6f46('0xb')](),controller[_0x6f46('0x1a')]);router[_0x6f46('0x18')](_0x6f46('0x1b'),auth[_0x6f46('0xb')](),controller[_0x6f46('0x1c')]);router[_0x6f46('0x1d')](_0x6f46('0xf'),auth[_0x6f46('0xb')](),controller[_0x6f46('0x1e')]);module['exports']=router;
\ No newline at end of file
+var _0x9be0=['put','/:id/reject','reject','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','isAuthenticated','index','/describe','describe','show','post','whatsapp','whatsappmessage:create','create','/:id/status','status','/:id','update'];(function(_0x4697fa,_0x21c841){var _0x390950=function(_0x3deb8a){while(--_0x3deb8a){_0x4697fa['push'](_0x4697fa['shift']());}};_0x390950(++_0x21c841);}(_0x9be0,0xca));var _0x09be=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x9be0[_0x4565bf];return _0x5610ba;};'use strict';var multer=require('multer');var util=require(_0x09be('0x0'));var path=require(_0x09be('0x1'));var timeout=require(_0x09be('0x2'));var express=require('express');var router=express[_0x09be('0x3')]();var fs_extra=require(_0x09be('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x09be('0x5'));var config=require(_0x09be('0x6'));var controller=require(_0x09be('0x7'));router[_0x09be('0x8')]('/',auth[_0x09be('0x9')](),controller[_0x09be('0xa')]);router[_0x09be('0x8')](_0x09be('0xb'),auth[_0x09be('0x9')](),controller[_0x09be('0xc')]);router[_0x09be('0x8')]('/:id',auth[_0x09be('0x9')](),controller[_0x09be('0xd')]);router[_0x09be('0xe')]('/',auth[_0x09be('0x9')](),interaction['tracked'](_0x09be('0xf'),_0x09be('0x10')),controller[_0x09be('0x11')]);router['post'](_0x09be('0x12'),controller[_0x09be('0x13')]);router['put'](_0x09be('0x14'),auth['isAuthenticated'](),controller[_0x09be('0x15')]);router[_0x09be('0x16')]('/:id/accept',auth[_0x09be('0x9')](),controller['accept']);router['put'](_0x09be('0x17'),auth[_0x09be('0x9')](),controller[_0x09be('0x18')]);router[_0x09be('0x19')](_0x09be('0x14'),auth['isAuthenticated'](),controller[_0x09be('0x1a')]);module[_0x09be('0x1b')]=router;
\ No newline at end of file
index b4bf6ff..54dcaa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0704=['STRING','DATE','sequelize','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x9ced5b,_0x15a90c){var _0x58b551=function(_0x2bef92){while(--_0x2bef92){_0x9ced5b['push'](_0x9ced5b['shift']());}};_0x58b551(++_0x15a90c);}(_0x0704,0x1c2));var _0x4070=function(_0x1918f,_0x2a8725){_0x1918f=_0x1918f-0x0;var _0x3bd2f5=_0x0704[_0x1918f];return _0x3bd2f5;};'use strict';var Sequelize=require(_0x4070('0x0'));module['exports']={'body':{'type':Sequelize[_0x4070('0x1')](_0x4070('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x4070('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x4070('0x4')]('in',_0x4070('0x5')),'defaultValue':_0x4070('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x4070('0x6')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0x4070('0x7')]},'secret':{'type':Sequelize[_0x4070('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x4070('0x6')]},'providerResponse':{'type':Sequelize[_0x4070('0x1')]}};
\ No newline at end of file
+var _0x1a61=['sequelize','TEXT','BOOLEAN','ENUM','out','DATE'];(function(_0x12ef39,_0x18d320){var _0x47a734=function(_0x112dcf){while(--_0x112dcf){_0x12ef39['push'](_0x12ef39['shift']());}};_0x47a734(++_0x18d320);}(_0x1a61,0x1e6));var _0x11a6=function(_0x247a31,_0x4cb880){_0x247a31=_0x247a31-0x0;var _0x703c8b=_0x1a61[_0x247a31];return _0x703c8b;};'use strict';var Sequelize=require(_0x11a6('0x0'));module['exports']={'body':{'type':Sequelize[_0x11a6('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x11a6('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0x11a6('0x3')]('in',_0x11a6('0x4')),'defaultValue':_0x11a6('0x4'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0x11a6('0x5')]},'secret':{'type':Sequelize[_0x11a6('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x11a6('0x1')]}};
\ No newline at end of file
index e88c450..343558c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x774d=['jsforce','querystring','papaparse','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappMessage.socket','jayson/promise','client','http','request','then','info','WhatsappMessage,\x20%s,\x20%s','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','stack','name','send','index','map','WhatsappMessage','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','merge','where','VIRTUAL','filter','count','includeAll','include','findAll','rows','show','params','options','find','create','body','update','destroy','whatsapp-interactions','accept','whatsapp','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','WhatsappInteraction','WhatsappInteractionId','isNil','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','null','AcceptMessage','acceptMessage','ContactId','sequelize','QueryTypes','contact','User','fullname','email','internal','agent','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','SELECT','rejectmessage','WhatsappAccount','received\x20delivery\x20report\x20from','MessageSid','messageId','MessageStatus','read','WhatsappAccount,\x20%s,\x20%s,\x20%s','twilio','inspect','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x121946,_0xc99c0){var _0x379f96=function(_0x1a5ef4){while(--_0x1a5ef4){_0x121946['push'](_0x121946['shift']());}};_0x379f96(++_0xc99c0);}(_0x774d,0x10b));var _0xd774=function(_0x59d29d,_0x2d1a34){_0x59d29d=_0x59d29d-0x0;var _0x777eeb=_0x774d[_0x59d29d];return _0x777eeb;};'use strict';var emlformat=require(_0xd774('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd774('0x1'));var jsonpatch=require(_0xd774('0x2'));var rp=require(_0xd774('0x3'));var moment=require(_0xd774('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd774('0x5'));var util=require(_0xd774('0x6'));var path=require(_0xd774('0x7'));var sox=require(_0xd774('0x8'));var csv=require(_0xd774('0x9'));var ejs=require(_0xd774('0xa'));var fs=require('fs');var fs_extra=require(_0xd774('0xb'));var _=require(_0xd774('0xc'));var squel=require(_0xd774('0xd'));var crypto=require(_0xd774('0xe'));var jsforce=require(_0xd774('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xd774('0x9'));var querystring=require(_0xd774('0x10'));var Papa=require(_0xd774('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xd774('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd774('0x13'))(_0xd774('0x14'));var utils=require(_0xd774('0x15'));var config=require(_0xd774('0x16'));var licenseUtil=require(_0xd774('0x17'));var db=require(_0xd774('0x18'))['db'];config[_0xd774('0x19')]=_['defaults'](config['redis'],{'host':_0xd774('0x1a'),'port':0x18eb});var socket=require(_0xd774('0x1b'))(new Redis(config['redis']));require(_0xd774('0x1c'))['register'](socket);var jayson=require(_0xd774('0x1d'));var client=jayson[_0xd774('0x1e')][_0xd774('0x1f')]({'port':0x232c});var client9002=jayson[_0xd774('0x1e')][_0xd774('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x11f292,_0x1920c4,_0x566420,_0x211391){return new BPromise(function(_0x6ea9ab,_0x23df90){var _0x162ff3=_0x211391||client;return _0x162ff3[_0xd774('0x20')](_0x11f292,_0x566420)[_0xd774('0x21')](function(_0x3a6595){logger[_0xd774('0x22')](_0xd774('0x23'),_0x1920c4,'request\x20sent');logger['debug'](_0xd774('0x24'),_0x1920c4,_0xd774('0x25'),JSON['stringify'](_0x3a6595));if(_0x3a6595['error']){if(_0x3a6595['error'][_0xd774('0x26')]===0x1f4){logger['error'](_0xd774('0x23'),_0x1920c4,_0x3a6595[_0xd774('0x27')][_0xd774('0x28')]);return _0x23df90(_0x3a6595[_0xd774('0x27')][_0xd774('0x28')]);}logger[_0xd774('0x27')]('WhatsappMessage,\x20%s,\x20%s',_0x1920c4,_0x3a6595[_0xd774('0x27')][_0xd774('0x28')]);return _0x6ea9ab(_0x3a6595['error'][_0xd774('0x28')]);}else{logger['info'](_0xd774('0x23'),_0x1920c4,_0xd774('0x25'));_0x6ea9ab(_0x3a6595[_0xd774('0x29')]['message']);}})[_0xd774('0x2a')](function(_0x51b90d){logger[_0xd774('0x27')](_0xd774('0x23'),_0x1920c4,_0x51b90d);_0x23df90(_0x51b90d);});});}function respondWithStatusCode(_0x20f80e,_0x99d4da){_0x99d4da=_0x99d4da||0xcc;return function(_0x54bacc){if(_0x54bacc){return _0x20f80e[_0xd774('0x2b')](_0x99d4da);}return _0x20f80e[_0xd774('0x2c')](_0x99d4da)[_0xd774('0x2d')]();};}function respondWithResult(_0x3e14a8,_0x1abc0e){_0x1abc0e=_0x1abc0e||0xc8;return function(_0x1ca10e){if(_0x1ca10e){return _0x3e14a8['status'](_0x1abc0e)[_0xd774('0x2e')](_0x1ca10e);}};}function respondWithFilteredResult(_0x25e3e2,_0x20c050){return function(_0x41dfc8){if(_0x41dfc8){var _0x21703f=typeof _0x20c050[_0xd774('0x2f')]===_0xd774('0x30')&&typeof _0x20c050[_0xd774('0x31')]==='undefined';var _0x5d9afb=_0x41dfc8['count'];var _0x574c74=_0x21703f?0x0:_0x20c050[_0xd774('0x2f')];var _0x35489b=_0x21703f?_0x41dfc8['count']:_0x20c050['offset']+_0x20c050[_0xd774('0x31')];var _0x1a769d;if(_0x35489b>=_0x5d9afb){_0x35489b=_0x5d9afb;_0x1a769d=0xc8;}else{_0x1a769d=0xce;}_0x25e3e2[_0xd774('0x2c')](_0x1a769d);return _0x25e3e2[_0xd774('0x32')](_0xd774('0x33'),_0x574c74+'-'+_0x35489b+'/'+_0x5d9afb)['json'](_0x41dfc8);}return null;};}function patchUpdates(_0x4ccfeb){return function(_0x2cbe1c){try{jsonpatch[_0xd774('0x34')](_0x2cbe1c,_0x4ccfeb,!![]);}catch(_0xf4a9e3){return BPromise[_0xd774('0x35')](_0xf4a9e3);}return _0x2cbe1c[_0xd774('0x36')]();};}function saveUpdates(_0x114d3f,_0x5d5736){return function(_0x18a96f){if(_0x18a96f){return _0x18a96f['update'](_0x114d3f)[_0xd774('0x21')](function(_0x422ae8){return _0x422ae8;});}return null;};}function removeEntity(_0x238b6c,_0x5187c){return function(_0x2b1b28){if(_0x2b1b28){return _0x2b1b28['destroy']()[_0xd774('0x21')](function(){_0x238b6c[_0xd774('0x2c')](0xcc)[_0xd774('0x2d')]();});}};}function handleEntityNotFound(_0x3deede,_0x4746b9){return function(_0x2346d5){if(!_0x2346d5){_0x3deede[_0xd774('0x2b')](0x194);}return _0x2346d5;};}function handleError(_0xa87cb7,_0x15d21c){_0x15d21c=_0x15d21c||0x1f4;return function(_0x4ff856){logger[_0xd774('0x27')](_0x4ff856[_0xd774('0x37')]);if(_0x4ff856[_0xd774('0x38')]){delete _0x4ff856['name'];}_0xa87cb7[_0xd774('0x2c')](_0x15d21c)[_0xd774('0x39')](_0x4ff856);};}exports[_0xd774('0x3a')]=function(_0x5ae2bc,_0x108a7d){var _0xfa5bb5={},_0x202aef={},_0x13ecee={'count':0x0,'rows':[]};var _0x63bcfb=_[_0xd774('0x3b')](db[_0xd774('0x3c')][_0xd774('0x3d')],function(_0x2eb2e1){return{'name':_0x2eb2e1['fieldName'],'type':_0x2eb2e1[_0xd774('0x3e')][_0xd774('0x3f')]};});_0x202aef[_0xd774('0x40')]=_[_0xd774('0x3b')](_0x63bcfb,_0xd774('0x38'));_0x202aef[_0xd774('0x41')]=_[_0xd774('0x42')](_0x5ae2bc['query']);_0x202aef[_0xd774('0x43')]=_[_0xd774('0x44')](_0x202aef['model'],_0x202aef['query']);_0xfa5bb5['attributes']=_['intersection'](_0x202aef[_0xd774('0x40')],qs[_0xd774('0x45')](_0x5ae2bc[_0xd774('0x41')][_0xd774('0x45')]));_0xfa5bb5[_0xd774('0x46')]=_0xfa5bb5[_0xd774('0x46')][_0xd774('0x47')]?_0xfa5bb5[_0xd774('0x46')]:_0x202aef[_0xd774('0x40')];if(!_0x5ae2bc['query'][_0xd774('0x48')](_0xd774('0x49'))){_0xfa5bb5[_0xd774('0x31')]=qs[_0xd774('0x31')](_0x5ae2bc[_0xd774('0x41')][_0xd774('0x31')]);_0xfa5bb5['offset']=qs[_0xd774('0x2f')](_0x5ae2bc[_0xd774('0x41')][_0xd774('0x2f')]);}_0xfa5bb5['order']=qs['sort'](_0x5ae2bc['query']['sort']);_0xfa5bb5['where']=qs[_0xd774('0x43')](_['pick'](_0x5ae2bc['query'],_0x202aef[_0xd774('0x43')]),_0x63bcfb);if(_0x5ae2bc[_0xd774('0x41')]['filter']){_0xfa5bb5['where']=_[_0xd774('0x4a')](_0xfa5bb5[_0xd774('0x4b')],{'$or':_[_0xd774('0x3b')](_0x63bcfb,function(_0x25090d){if(_0x25090d[_0xd774('0x3e')]!==_0xd774('0x4c')){var _0x5543f3={};_0x5543f3[_0x25090d[_0xd774('0x38')]]={'$like':'%'+_0x5ae2bc[_0xd774('0x41')][_0xd774('0x4d')]+'%'};return _0x5543f3;}})});}_0xfa5bb5=_[_0xd774('0x4a')]({},_0xfa5bb5,_0x5ae2bc['options']);var _0x552cd7={'where':_0xfa5bb5[_0xd774('0x4b')]};return db[_0xd774('0x3c')][_0xd774('0x4e')](_0x552cd7)[_0xd774('0x21')](function(_0x22e320){_0x13ecee[_0xd774('0x4e')]=_0x22e320;if(_0x5ae2bc[_0xd774('0x41')][_0xd774('0x4f')]){_0xfa5bb5[_0xd774('0x50')]=[{'all':!![]}];}return db[_0xd774('0x3c')][_0xd774('0x51')](_0xfa5bb5);})['then'](function(_0x264693){_0x13ecee[_0xd774('0x52')]=_0x264693;return _0x13ecee;})['then'](respondWithFilteredResult(_0x108a7d,_0xfa5bb5))[_0xd774('0x2a')](handleError(_0x108a7d,null));};exports[_0xd774('0x53')]=function(_0x425d9c,_0xb016e4){var _0x358b95={'raw':!![],'where':{'id':_0x425d9c[_0xd774('0x54')]['id']}},_0x31f9a4={};_0x31f9a4[_0xd774('0x40')]=_[_0xd774('0x42')](db['WhatsappMessage']['rawAttributes']);_0x31f9a4['query']=_[_0xd774('0x42')](_0x425d9c[_0xd774('0x41')]);_0x31f9a4[_0xd774('0x43')]=_[_0xd774('0x44')](_0x31f9a4['model'],_0x31f9a4[_0xd774('0x41')]);_0x358b95[_0xd774('0x46')]=_[_0xd774('0x44')](_0x31f9a4[_0xd774('0x40')],qs[_0xd774('0x45')](_0x425d9c[_0xd774('0x41')][_0xd774('0x45')]));_0x358b95[_0xd774('0x46')]=_0x358b95[_0xd774('0x46')][_0xd774('0x47')]?_0x358b95[_0xd774('0x46')]:_0x31f9a4[_0xd774('0x40')];if(_0x425d9c[_0xd774('0x41')][_0xd774('0x4f')]){_0x358b95['include']=[{'all':!![]}];}_0x358b95=_['merge']({},_0x358b95,_0x425d9c[_0xd774('0x55')]);return db['WhatsappMessage'][_0xd774('0x56')](_0x358b95)['then'](handleEntityNotFound(_0xb016e4,null))[_0xd774('0x21')](respondWithResult(_0xb016e4,null))[_0xd774('0x2a')](handleError(_0xb016e4,null));};exports[_0xd774('0x57')]=function(_0x4e33be,_0xb1820f){return db['WhatsappMessage']['create'](_0x4e33be[_0xd774('0x58')],{})[_0xd774('0x21')](respondWithResult(_0xb1820f,0xc9))['catch'](handleError(_0xb1820f,null));};exports[_0xd774('0x59')]=function(_0x24344a,_0x6b32ba){if(_0x24344a[_0xd774('0x58')]['id']){delete _0x24344a['body']['id'];}return db['WhatsappMessage'][_0xd774('0x56')]({'where':{'id':_0x24344a[_0xd774('0x54')]['id']}})['then'](handleEntityNotFound(_0x6b32ba,null))[_0xd774('0x21')](saveUpdates(_0x24344a[_0xd774('0x58')],null))[_0xd774('0x21')](respondWithResult(_0x6b32ba,null))[_0xd774('0x2a')](handleError(_0x6b32ba,null));};exports[_0xd774('0x5a')]=function(_0x33c30e,_0x4572d2){return db['WhatsappMessage'][_0xd774('0x56')]({'where':{'id':_0x33c30e[_0xd774('0x54')]['id']}})[_0xd774('0x21')](handleEntityNotFound(_0x4572d2,null))[_0xd774('0x21')](removeEntity(_0x4572d2,null))[_0xd774('0x2a')](handleError(_0x4572d2,null));};exports['describe']=function(_0x640e53,_0x2979a3){return db[_0xd774('0x3c')]['describe']()[_0xd774('0x21')](respondWithResult(_0x2979a3,null))[_0xd774('0x2a')](handleError(_0x2979a3,null));};var interaction_log=require(_0xd774('0x13'))(_0xd774('0x5b'));exports[_0xd774('0x5c')]=function(_0x32b031,_0x387724,_0xfe7df0){var _0x4cfa56={'agent':{},'channel':_0xd774('0x5d')};if(_0x32b031['body']['id']){delete _0x32b031[_0xd774('0x58')]['id'];}_0x32b031['body']['read']=!![];_0x32b031[_0xd774('0x58')]['readAt']=moment()[_0xd774('0x5e')](_0xd774('0x5f'));_0x32b031[_0xd774('0x58')]['UserId']=_0x32b031[_0xd774('0x58')][_0xd774('0x60')]||_0x32b031[_0xd774('0x61')]['id'];_0x4cfa56['agent']['id']=_0x32b031[_0xd774('0x58')][_0xd774('0x60')];return db['WhatsappMessage'][_0xd774('0x56')]({'where':{'id':_0x32b031[_0xd774('0x54')]['id'],'UserId':null}})[_0xd774('0x21')](handleEntityNotFound(_0x387724,null))['then'](saveUpdates(_0x32b031[_0xd774('0x58')],null))[_0xd774('0x21')](function(_0x332a8f){if(_0x332a8f){_0x4cfa56['message']=_0x332a8f[_0xd774('0x62')]({'plain':!![]});return db[_0xd774('0x63')][_0xd774('0x56')]({'where':{'id':_0x332a8f[_0xd774('0x64')]}});}return null;})[_0xd774('0x21')](handleEntityNotFound(_0x387724,null))[_0xd774('0x21')](function(_0x5a9c51){if(_0x5a9c51){return _0x5a9c51['update']({'UserId':_0x32b031['body'][_0xd774('0x60')],'read1stAt':_[_0xd774('0x65')](_0x5a9c51[_0xd774('0x66')])?moment()[_0xd774('0x5e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0xd1ca47){if(_0xd1ca47){_0x4cfa56[_0xd774('0x67')]=_0xd1ca47[_0xd774('0x62')]({'plain':!![]});interaction_log[_0xd774('0x22')](_0xd774('0x68'),_0x32b031[_0xd774('0x61')]['id'],_0x32b031[_0xd774('0x61')][_0xd774('0x38')],_0x32b031['user'][_0xd774('0x69')],_0x4cfa56['interaction']['id'],_0x32b031[_0xd774('0x58')]?JSON[_0xd774('0x6a')](_0x32b031[_0xd774('0x58')]):_0xd774('0x6b'));return respondWithRpcPromise(_0xd774('0x6c'),_0xd774('0x6d'),_0x4cfa56);}return null;})[_0xd774('0x21')](function(_0x20f244){var _0x153c25='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x20f244['message'][_0xd774('0x6e')];return db[_0xd774('0x6f')][_0xd774('0x41')](_0x153c25,{'type':db['Sequelize'][_0xd774('0x70')]['SELECT'],'raw':!![]})['then'](function(_0x2c050d){return _0x2c050d;});})[_0xd774('0x21')](function(_0x286a79){if(_0x286a79){_0x4cfa56['message'][_0xd774('0x71')]=_0x286a79[0x0];if(!_0x32b031[_0xd774('0x58')][_0xd774('0x60')])return;return db[_0xd774('0x72')][_0xd774('0x56')]({'where':{'id':_0x32b031[_0xd774('0x58')]['UserId'],'role':'agent'},'attributes':['id',_0xd774('0x38'),_0xd774('0x73'),_0xd774('0x74'),_0xd774('0x75')],'raw':!![]});}return null;})[_0xd774('0x21')](function(_0x42a92a){if(!_0x42a92a)return null;_0x4cfa56[_0xd774('0x28')][_0xd774('0x76')]=_0x42a92a;return _0x4cfa56;})[_0xd774('0x21')](function(_0x436b40){if(_0x436b40){if(_0x32b031[_0xd774('0x58')][_0xd774('0x77')]){_0x4cfa56['message'][_0xd774('0x78')]=util['format'](_0xd774('0x79'),_0x32b031[_0xd774('0x61')][_0xd774('0x38')]);_0x4cfa56[_0xd774('0x28')][_0xd774('0x7a')]=_0x4cfa56[_0xd774('0x7a')];_0x4cfa56['message'][_0xd774('0x7b')]=_0x4cfa56[_0xd774('0x7a')];_0x4cfa56[_0xd774('0x28')][_0xd774('0x7c')]='accept';return respondWithRpcPromise(_0xd774('0x7d'),_0xd774('0x7d'),{'event':_0xd774('0x7e'),'message':_0x4cfa56[_0xd774('0x28')]},client9002)[_0xd774('0x21')](function(){return _0x4cfa56;});}return _0x4cfa56;}return null;})[_0xd774('0x21')](respondWithResult(_0x387724,null))[_0xd774('0x2a')](handleError(_0x387724,null));};var interaction_log=require('../../config/logger')(_0xd774('0x5b'));exports[_0xd774('0x35')]=function(_0xbdf19f,_0x183db2,_0x216278){var _0x25727f={'agent':{},'channel':_0xd774('0x5d')};if(_0xbdf19f['body']['id']){delete _0xbdf19f[_0xd774('0x58')]['id'];}_0xbdf19f[_0xd774('0x58')][_0xd774('0x60')]=_0xbdf19f[_0xd774('0x58')]['UserId']||_0xbdf19f[_0xd774('0x61')]['id'];_0x25727f[_0xd774('0x76')]['id']=_0xbdf19f[_0xd774('0x58')]['UserId'];return db['WhatsappMessage'][_0xd774('0x56')]({'where':{'id':_0xbdf19f[_0xd774('0x54')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x183db2,null))[_0xd774('0x21')](function(_0x1f8e18){if(_0x1f8e18){_0x25727f[_0xd774('0x28')]=_0x1f8e18[_0xd774('0x62')]({'plain':!![]});return db[_0xd774('0x63')][_0xd774('0x56')]({'where':{'id':_0x1f8e18[_0xd774('0x64')]}});}return null;})[_0xd774('0x21')](handleEntityNotFound(_0x183db2,null))[_0xd774('0x21')](function(_0x143b99){if(_0x143b99){_0x25727f[_0xd774('0x67')]=_0x143b99[_0xd774('0x62')]({'plain':!![]});interaction_log[_0xd774('0x22')](_0xd774('0x7f'),_0xbdf19f[_0xd774('0x61')]['id'],_0xbdf19f[_0xd774('0x61')]['name'],_0xbdf19f[_0xd774('0x61')][_0xd774('0x69')],_0x25727f['interaction']['id'],_0xbdf19f[_0xd774('0x58')]?JSON[_0xd774('0x6a')](_0xbdf19f[_0xd774('0x58')]):'null');return respondWithRpcPromise(_0xd774('0x80'),_0xd774('0x81'),_0x25727f);}return null;})[_0xd774('0x21')](function(_0x54d9ef){var _0x30b051='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x54d9ef[_0xd774('0x28')]['ContactId'];return db[_0xd774('0x6f')][_0xd774('0x41')](_0x30b051,{'type':db['Sequelize'][_0xd774('0x70')][_0xd774('0x82')],'raw':!![]})[_0xd774('0x21')](function(_0x27c245){return _0x27c245;});})['then'](function(_0x4fbabd){if(_0x4fbabd){_0x25727f[_0xd774('0x28')]['contact']=_0x4fbabd[0x0];if(!_0xbdf19f[_0xd774('0x58')][_0xd774('0x60')])return;return db[_0xd774('0x72')][_0xd774('0x56')]({'where':{'id':_0xbdf19f[_0xd774('0x58')]['UserId'],'role':'agent'},'attributes':['id','name','fullname',_0xd774('0x74'),_0xd774('0x75')],'raw':!![]});}return null;})[_0xd774('0x21')](function(_0x3c8717){if(!_0x3c8717)return null;_0x25727f[_0xd774('0x28')][_0xd774('0x76')]=_0x3c8717;return _0x25727f;})[_0xd774('0x21')](function(_0x4252f1){if(_0x4252f1){_0x4252f1[_0xd774('0x28')][_0xd774('0x78')]=util[_0xd774('0x5e')](_0xd774('0x79'),_0xbdf19f[_0xd774('0x61')]['name']);_0x4252f1[_0xd774('0x28')][_0xd774('0x7a')]=_0x25727f[_0xd774('0x7a')];_0x4252f1['message'][_0xd774('0x7b')]=_0x25727f[_0xd774('0x7a')];_0x4252f1[_0xd774('0x28')][_0xd774('0x7c')]=_0xd774('0x35');respondWithRpcPromise('EventManager',_0xd774('0x7d'),{'event':_0xd774('0x83'),'message':_0x4252f1['message']},client9002);return _0x25727f;}return null;})[_0xd774('0x21')](respondWithResult(_0x183db2,null))[_0xd774('0x2a')](handleError(_0x183db2,null));};exports[_0xd774('0x2c')]=function(_0xdcfb06,_0x3602d3,_0x46d7f8){if(_0xdcfb06[_0xd774('0x58')]['id']){delete _0xdcfb06[_0xd774('0x58')]['id'];}var _0x54b034;return db[_0xd774('0x3c')][_0xd774('0x56')]({'where':{'id':_0xdcfb06[_0xd774('0x54')]['id']}})[_0xd774('0x21')](handleEntityNotFound(_0x3602d3,null))[_0xd774('0x21')](function(_0x25f4bc){if(_0x25f4bc){_0x54b034=_0x25f4bc;return db[_0xd774('0x84')]['find']({'where':{'id':_0x25f4bc['WhatsappAccountId']}});}})[_0xd774('0x21')](handleEntityNotFound(_0x3602d3,null))['then'](function(_0x318b31){if(_0x318b31){logger['debug']('WhatsppMessage,\x20%s,\x20%s,\x20%s',_0xd774('0x2c'),_0xd774('0x85'),_0x318b31[_0xd774('0x3e')],util['inspect'](_0xdcfb06[_0xd774('0x58')],{'showHidden':![],'depth':null}));switch(_0x318b31[_0xd774('0x3e')]){case'twilio':if(_0xdcfb06[_0xd774('0x58')]['MessageSid']&&_0xdcfb06['body'][_0xd774('0x86')]===_0x54b034[_0xd774('0x87')]&&_0xdcfb06[_0xd774('0x58')][_0xd774('0x88')]&&_0xdcfb06[_0xd774('0x58')][_0xd774('0x88')]===_0xd774('0x89')){return _0x54b034[_0xd774('0x59')]({'read':!![]});}else{logger[_0xd774('0x27')](_0xd774('0x8a'),_0xd774('0x2c'),_0xd774('0x8b'),util[_0xd774('0x8c')](_0xdcfb06['body'],{'showHidden':![],'depth':null}));}break;}return _0x54b034;}})[_0xd774('0x21')](respondWithResult(_0x3602d3,null))[_0xd774('0x2a')](handleError(_0x3602d3,null));};
\ No newline at end of file
+var _0x22b3=['WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','sendStatus','status','end','offset','undefined','count','set','json','apply','reject','save','update','destroy','stack','name','send','index','map','WhatsappMessage','rawAttributes','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','limit','sort','pick','filter','where','merge','VIRTUAL','findAll','rows','show','params','keys','include','options','create','body','find','describe','whatsapp-interactions','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','WhatsappInteraction','WhatsappInteractionId','isNil','role','interaction','null','AcceptMessage','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','manual','interface','SIP/%s','channel','motionChannel','EventManager','acceptmessage','whatsapp','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','internal','event','rejectmessage','WhatsappAccount','debug','WhatsppMessage,\x20%s,\x20%s,\x20%s','inspect','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','twilio','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','redis','localhost','./whatsappMessage.socket','register','jayson/promise','client','http','request','then','info','WhatsappMessage,\x20%s,\x20%s'];(function(_0x367bfc,_0x278556){var _0x50f6d3=function(_0x3f1bd4){while(--_0x3f1bd4){_0x367bfc['push'](_0x367bfc['shift']());}};_0x50f6d3(++_0x278556);}(_0x22b3,0xf2));var _0x322b=function(_0x489c9d,_0x4f5c2d){_0x489c9d=_0x489c9d-0x0;var _0x190f53=_0x22b3[_0x489c9d];return _0x190f53;};'use strict';var emlformat=require(_0x322b('0x0'));var rimraf=require(_0x322b('0x1'));var zipdir=require(_0x322b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x322b('0x3'));var moment=require(_0x322b('0x4'));var BPromise=require(_0x322b('0x5'));var Mustache=require(_0x322b('0x6'));var util=require(_0x322b('0x7'));var path=require(_0x322b('0x8'));var sox=require(_0x322b('0x9'));var csv=require(_0x322b('0xa'));var ejs=require(_0x322b('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x322b('0xc'));var squel=require(_0x322b('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x322b('0xe'));var toCsv=require('to-csv');var querystring=require(_0x322b('0xf'));var Papa=require(_0x322b('0x10'));var Redis=require(_0x322b('0x11'));var authService=require(_0x322b('0x12'));var qs=require(_0x322b('0x13'));var as=require(_0x322b('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x322b('0x15'))(_0x322b('0x16'));var utils=require(_0x322b('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x322b('0x18'));var db=require('../../mysqldb')['db'];config[_0x322b('0x19')]=_['defaults'](config[_0x322b('0x19')],{'host':_0x322b('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x322b('0x19')]));require(_0x322b('0x1b'))[_0x322b('0x1c')](socket);var jayson=require(_0x322b('0x1d'));var client=jayson[_0x322b('0x1e')][_0x322b('0x1f')]({'port':0x232c});var client9002=jayson[_0x322b('0x1e')][_0x322b('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x36b0ea,_0x4e897a,_0x32d288,_0x13c230){return new BPromise(function(_0x3cd93e,_0x4ba5f9){var _0x11bcae=_0x13c230||client;return _0x11bcae[_0x322b('0x20')](_0x36b0ea,_0x32d288)[_0x322b('0x21')](function(_0x514f7a){logger[_0x322b('0x22')](_0x322b('0x23'),_0x4e897a,'request\x20sent');logger['debug'](_0x322b('0x24'),_0x4e897a,_0x322b('0x25'),JSON[_0x322b('0x26')](_0x514f7a));if(_0x514f7a[_0x322b('0x27')]){if(_0x514f7a[_0x322b('0x27')][_0x322b('0x28')]===0x1f4){logger[_0x322b('0x27')]('WhatsappMessage,\x20%s,\x20%s',_0x4e897a,_0x514f7a[_0x322b('0x27')][_0x322b('0x29')]);return _0x4ba5f9(_0x514f7a['error'][_0x322b('0x29')]);}logger[_0x322b('0x27')](_0x322b('0x23'),_0x4e897a,_0x514f7a['error']['message']);return _0x3cd93e(_0x514f7a[_0x322b('0x27')][_0x322b('0x29')]);}else{logger[_0x322b('0x22')](_0x322b('0x23'),_0x4e897a,_0x322b('0x25'));_0x3cd93e(_0x514f7a['result'][_0x322b('0x29')]);}})[_0x322b('0x2a')](function(_0xafd38b){logger[_0x322b('0x27')](_0x322b('0x23'),_0x4e897a,_0xafd38b);_0x4ba5f9(_0xafd38b);});});}function respondWithStatusCode(_0x297f1b,_0x351024){_0x351024=_0x351024||0xcc;return function(_0xc3815e){if(_0xc3815e){return _0x297f1b[_0x322b('0x2b')](_0x351024);}return _0x297f1b[_0x322b('0x2c')](_0x351024)[_0x322b('0x2d')]();};}function respondWithResult(_0x474621,_0x4f9653){_0x4f9653=_0x4f9653||0xc8;return function(_0x5e7316){if(_0x5e7316){return _0x474621[_0x322b('0x2c')](_0x4f9653)['json'](_0x5e7316);}};}function respondWithFilteredResult(_0x152d8c,_0x1ef63a){return function(_0x322fe8){if(_0x322fe8){var _0x4b1a9c=typeof _0x1ef63a[_0x322b('0x2e')]===_0x322b('0x2f')&&typeof _0x1ef63a['limit']===_0x322b('0x2f');var _0x19b3e8=_0x322fe8[_0x322b('0x30')];var _0x3be84b=_0x4b1a9c?0x0:_0x1ef63a['offset'];var _0x53e17f=_0x4b1a9c?_0x322fe8[_0x322b('0x30')]:_0x1ef63a[_0x322b('0x2e')]+_0x1ef63a['limit'];var _0x5128e9;if(_0x53e17f>=_0x19b3e8){_0x53e17f=_0x19b3e8;_0x5128e9=0xc8;}else{_0x5128e9=0xce;}_0x152d8c[_0x322b('0x2c')](_0x5128e9);return _0x152d8c[_0x322b('0x31')]('Content-Range',_0x3be84b+'-'+_0x53e17f+'/'+_0x19b3e8)[_0x322b('0x32')](_0x322fe8);}return null;};}function patchUpdates(_0x2693f4){return function(_0x4616a4){try{jsonpatch[_0x322b('0x33')](_0x4616a4,_0x2693f4,!![]);}catch(_0x30df15){return BPromise[_0x322b('0x34')](_0x30df15);}return _0x4616a4[_0x322b('0x35')]();};}function saveUpdates(_0x39cef1,_0x5663d3){return function(_0x5e7bc4){if(_0x5e7bc4){return _0x5e7bc4[_0x322b('0x36')](_0x39cef1)[_0x322b('0x21')](function(_0xa2f42){return _0xa2f42;});}return null;};}function removeEntity(_0x386052,_0x49c178){return function(_0x51fe2b){if(_0x51fe2b){return _0x51fe2b[_0x322b('0x37')]()[_0x322b('0x21')](function(){_0x386052[_0x322b('0x2c')](0xcc)[_0x322b('0x2d')]();});}};}function handleEntityNotFound(_0x2870ac,_0x4cd0bc){return function(_0x57c3b2){if(!_0x57c3b2){_0x2870ac[_0x322b('0x2b')](0x194);}return _0x57c3b2;};}function handleError(_0x43c57b,_0x56a86b){_0x56a86b=_0x56a86b||0x1f4;return function(_0xa50f38){logger[_0x322b('0x27')](_0xa50f38[_0x322b('0x38')]);if(_0xa50f38[_0x322b('0x39')]){delete _0xa50f38[_0x322b('0x39')];}_0x43c57b['status'](_0x56a86b)[_0x322b('0x3a')](_0xa50f38);};}exports[_0x322b('0x3b')]=function(_0x8559c0,_0x424f9e){var _0x3cd9a5={},_0x5a2581={},_0x1d95be={'count':0x0,'rows':[]};var _0x453cbd=_[_0x322b('0x3c')](db[_0x322b('0x3d')][_0x322b('0x3e')],function(_0x2b0a4b){return{'name':_0x2b0a4b['fieldName'],'type':_0x2b0a4b[_0x322b('0x3f')][_0x322b('0x40')]};});_0x5a2581[_0x322b('0x41')]=_[_0x322b('0x3c')](_0x453cbd,_0x322b('0x39'));_0x5a2581['query']=_['keys'](_0x8559c0[_0x322b('0x42')]);_0x5a2581[_0x322b('0x43')]=_['intersection'](_0x5a2581[_0x322b('0x41')],_0x5a2581[_0x322b('0x42')]);_0x3cd9a5[_0x322b('0x44')]=_[_0x322b('0x45')](_0x5a2581['model'],qs[_0x322b('0x46')](_0x8559c0[_0x322b('0x42')][_0x322b('0x46')]));_0x3cd9a5[_0x322b('0x44')]=_0x3cd9a5[_0x322b('0x44')][_0x322b('0x47')]?_0x3cd9a5['attributes']:_0x5a2581[_0x322b('0x41')];if(!_0x8559c0[_0x322b('0x42')][_0x322b('0x48')]('nolimit')){_0x3cd9a5[_0x322b('0x49')]=qs[_0x322b('0x49')](_0x8559c0[_0x322b('0x42')][_0x322b('0x49')]);_0x3cd9a5[_0x322b('0x2e')]=qs['offset'](_0x8559c0[_0x322b('0x42')][_0x322b('0x2e')]);}_0x3cd9a5['order']=qs[_0x322b('0x4a')](_0x8559c0['query'][_0x322b('0x4a')]);_0x3cd9a5['where']=qs[_0x322b('0x43')](_[_0x322b('0x4b')](_0x8559c0[_0x322b('0x42')],_0x5a2581[_0x322b('0x43')]),_0x453cbd);if(_0x8559c0[_0x322b('0x42')][_0x322b('0x4c')]){_0x3cd9a5[_0x322b('0x4d')]=_[_0x322b('0x4e')](_0x3cd9a5['where'],{'$or':_[_0x322b('0x3c')](_0x453cbd,function(_0x50c064){if(_0x50c064['type']!==_0x322b('0x4f')){var _0x3f0d95={};_0x3f0d95[_0x50c064[_0x322b('0x39')]]={'$like':'%'+_0x8559c0['query'][_0x322b('0x4c')]+'%'};return _0x3f0d95;}})});}_0x3cd9a5=_[_0x322b('0x4e')]({},_0x3cd9a5,_0x8559c0['options']);var _0x7f3009={'where':_0x3cd9a5[_0x322b('0x4d')]};return db[_0x322b('0x3d')]['count'](_0x7f3009)['then'](function(_0x9dcb2c){_0x1d95be[_0x322b('0x30')]=_0x9dcb2c;if(_0x8559c0[_0x322b('0x42')]['includeAll']){_0x3cd9a5['include']=[{'all':!![]}];}return db[_0x322b('0x3d')][_0x322b('0x50')](_0x3cd9a5);})[_0x322b('0x21')](function(_0x1d41ca){_0x1d95be[_0x322b('0x51')]=_0x1d41ca;return _0x1d95be;})[_0x322b('0x21')](respondWithFilteredResult(_0x424f9e,_0x3cd9a5))[_0x322b('0x2a')](handleError(_0x424f9e,null));};exports[_0x322b('0x52')]=function(_0x1d09a6,_0x59c24f){var _0x60b16b={'raw':!![],'where':{'id':_0x1d09a6[_0x322b('0x53')]['id']}},_0x26f0d1={};_0x26f0d1[_0x322b('0x41')]=_[_0x322b('0x54')](db['WhatsappMessage'][_0x322b('0x3e')]);_0x26f0d1[_0x322b('0x42')]=_[_0x322b('0x54')](_0x1d09a6[_0x322b('0x42')]);_0x26f0d1[_0x322b('0x43')]=_[_0x322b('0x45')](_0x26f0d1[_0x322b('0x41')],_0x26f0d1['query']);_0x60b16b['attributes']=_['intersection'](_0x26f0d1['model'],qs[_0x322b('0x46')](_0x1d09a6[_0x322b('0x42')]['fields']));_0x60b16b[_0x322b('0x44')]=_0x60b16b[_0x322b('0x44')]['length']?_0x60b16b[_0x322b('0x44')]:_0x26f0d1[_0x322b('0x41')];if(_0x1d09a6['query']['includeAll']){_0x60b16b[_0x322b('0x55')]=[{'all':!![]}];}_0x60b16b=_[_0x322b('0x4e')]({},_0x60b16b,_0x1d09a6[_0x322b('0x56')]);return db[_0x322b('0x3d')]['find'](_0x60b16b)[_0x322b('0x21')](handleEntityNotFound(_0x59c24f,null))['then'](respondWithResult(_0x59c24f,null))['catch'](handleError(_0x59c24f,null));};exports[_0x322b('0x57')]=function(_0x3b604f,_0x479a20){return db['WhatsappMessage'][_0x322b('0x57')](_0x3b604f[_0x322b('0x58')],{})[_0x322b('0x21')](respondWithResult(_0x479a20,0xc9))[_0x322b('0x2a')](handleError(_0x479a20,null));};exports[_0x322b('0x36')]=function(_0x42b39d,_0x54c422){if(_0x42b39d[_0x322b('0x58')]['id']){delete _0x42b39d['body']['id'];}return db[_0x322b('0x3d')]['find']({'where':{'id':_0x42b39d['params']['id']}})[_0x322b('0x21')](handleEntityNotFound(_0x54c422,null))[_0x322b('0x21')](saveUpdates(_0x42b39d[_0x322b('0x58')],null))[_0x322b('0x21')](respondWithResult(_0x54c422,null))[_0x322b('0x2a')](handleError(_0x54c422,null));};exports[_0x322b('0x37')]=function(_0xe496b9,_0x281583){return db[_0x322b('0x3d')][_0x322b('0x59')]({'where':{'id':_0xe496b9[_0x322b('0x53')]['id']}})[_0x322b('0x21')](handleEntityNotFound(_0x281583,null))['then'](removeEntity(_0x281583,null))[_0x322b('0x2a')](handleError(_0x281583,null));};exports[_0x322b('0x5a')]=function(_0x2c0474,_0x3db73b){return db['WhatsappMessage']['describe']()[_0x322b('0x21')](respondWithResult(_0x3db73b,null))[_0x322b('0x2a')](handleError(_0x3db73b,null));};var interaction_log=require('../../config/logger')(_0x322b('0x5b'));exports[_0x322b('0x5c')]=function(_0x340fb0,_0x560a8b,_0x22d7e2){var _0x5218a9={'agent':{},'channel':'whatsapp'};if(_0x340fb0[_0x322b('0x58')]['id']){delete _0x340fb0[_0x322b('0x58')]['id'];}_0x340fb0[_0x322b('0x58')][_0x322b('0x5d')]=!![];_0x340fb0[_0x322b('0x58')][_0x322b('0x5e')]=moment()[_0x322b('0x5f')](_0x322b('0x60'));_0x340fb0[_0x322b('0x58')][_0x322b('0x61')]=_0x340fb0[_0x322b('0x58')][_0x322b('0x61')]||_0x340fb0[_0x322b('0x62')]['id'];_0x5218a9[_0x322b('0x63')]['id']=_0x340fb0[_0x322b('0x58')]['UserId'];return db[_0x322b('0x3d')][_0x322b('0x59')]({'where':{'id':_0x340fb0[_0x322b('0x53')]['id'],'UserId':null}})[_0x322b('0x21')](handleEntityNotFound(_0x560a8b,null))[_0x322b('0x21')](saveUpdates(_0x340fb0['body'],null))['then'](function(_0x323e41){if(_0x323e41){_0x5218a9['message']=_0x323e41[_0x322b('0x64')]({'plain':!![]});return db[_0x322b('0x65')][_0x322b('0x59')]({'where':{'id':_0x323e41[_0x322b('0x66')]}});}return null;})[_0x322b('0x21')](handleEntityNotFound(_0x560a8b,null))[_0x322b('0x21')](function(_0x5a51e4){if(_0x5a51e4){return _0x5a51e4[_0x322b('0x36')]({'UserId':_0x340fb0[_0x322b('0x58')][_0x322b('0x61')],'read1stAt':_[_0x322b('0x67')](_0x5a51e4['read1stAt'])?moment()['format'](_0x322b('0x60')):undefined});}return null;})[_0x322b('0x21')](function(_0x4ec713){if(_0x4ec713){_0x5218a9['interaction']=_0x4ec713[_0x322b('0x64')]({'plain':!![]});interaction_log['info']('[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x340fb0['user']['id'],_0x340fb0[_0x322b('0x62')]['name'],_0x340fb0[_0x322b('0x62')][_0x322b('0x68')],_0x5218a9[_0x322b('0x69')]['id'],_0x340fb0[_0x322b('0x58')]?JSON[_0x322b('0x26')](_0x340fb0[_0x322b('0x58')]):_0x322b('0x6a'));return respondWithRpcPromise(_0x322b('0x6b'),'acceptMessage',_0x5218a9);}return null;})[_0x322b('0x21')](function(_0xbd0562){var _0x3e146e='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xbd0562['message'][_0x322b('0x6c')];return db[_0x322b('0x6d')][_0x322b('0x42')](_0x3e146e,{'type':db[_0x322b('0x6e')][_0x322b('0x6f')][_0x322b('0x70')],'raw':!![]})[_0x322b('0x21')](function(_0x4bf3ad){return _0x4bf3ad;});})[_0x322b('0x21')](function(_0x403d31){if(_0x403d31){_0x5218a9[_0x322b('0x29')][_0x322b('0x71')]=_0x403d31[0x0];if(!_0x340fb0['body'][_0x322b('0x61')])return;return db[_0x322b('0x72')][_0x322b('0x59')]({'where':{'id':_0x340fb0[_0x322b('0x58')]['UserId'],'role':_0x322b('0x63')},'attributes':['id',_0x322b('0x39'),_0x322b('0x73'),_0x322b('0x74'),'internal'],'raw':!![]});}return null;})[_0x322b('0x21')](function(_0x29b3a0){if(!_0x29b3a0)return null;_0x5218a9[_0x322b('0x29')][_0x322b('0x63')]=_0x29b3a0;return _0x5218a9;})[_0x322b('0x21')](function(_0x1ce54f){if(_0x1ce54f){if(_0x340fb0['body'][_0x322b('0x75')]){_0x5218a9[_0x322b('0x29')][_0x322b('0x76')]=util[_0x322b('0x5f')](_0x322b('0x77'),_0x340fb0[_0x322b('0x62')][_0x322b('0x39')]);_0x5218a9[_0x322b('0x29')][_0x322b('0x78')]=_0x5218a9[_0x322b('0x78')];_0x5218a9['message'][_0x322b('0x79')]=_0x5218a9[_0x322b('0x78')];_0x5218a9[_0x322b('0x29')]['event']='accept';return respondWithRpcPromise(_0x322b('0x7a'),_0x322b('0x7a'),{'event':_0x322b('0x7b'),'message':_0x5218a9[_0x322b('0x29')]},client9002)[_0x322b('0x21')](function(){return _0x5218a9;});}return _0x5218a9;}return null;})['then'](respondWithResult(_0x560a8b,null))['catch'](handleError(_0x560a8b,null));};var interaction_log=require(_0x322b('0x15'))(_0x322b('0x5b'));exports['reject']=function(_0x929e55,_0x4b2f58,_0x384868){var _0x22eaaf={'agent':{},'channel':_0x322b('0x7c')};if(_0x929e55[_0x322b('0x58')]['id']){delete _0x929e55[_0x322b('0x58')]['id'];}_0x929e55[_0x322b('0x58')][_0x322b('0x61')]=_0x929e55[_0x322b('0x58')][_0x322b('0x61')]||_0x929e55[_0x322b('0x62')]['id'];_0x22eaaf['agent']['id']=_0x929e55[_0x322b('0x58')][_0x322b('0x61')];return db[_0x322b('0x3d')][_0x322b('0x59')]({'where':{'id':_0x929e55[_0x322b('0x53')]['id'],'UserId':null}})[_0x322b('0x21')](handleEntityNotFound(_0x4b2f58,null))[_0x322b('0x21')](function(_0x3970d5){if(_0x3970d5){_0x22eaaf['message']=_0x3970d5[_0x322b('0x64')]({'plain':!![]});return db['WhatsappInteraction']['find']({'where':{'id':_0x3970d5[_0x322b('0x66')]}});}return null;})[_0x322b('0x21')](handleEntityNotFound(_0x4b2f58,null))[_0x322b('0x21')](function(_0x26cc83){if(_0x26cc83){_0x22eaaf['interaction']=_0x26cc83[_0x322b('0x64')]({'plain':!![]});interaction_log[_0x322b('0x22')]('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x929e55[_0x322b('0x62')]['id'],_0x929e55[_0x322b('0x62')][_0x322b('0x39')],_0x929e55[_0x322b('0x62')]['role'],_0x22eaaf['interaction']['id'],_0x929e55[_0x322b('0x58')]?JSON[_0x322b('0x26')](_0x929e55[_0x322b('0x58')]):_0x322b('0x6a'));return respondWithRpcPromise(_0x322b('0x7d'),'rejectMessage',_0x22eaaf);}return null;})[_0x322b('0x21')](function(_0xc03592){var _0xb64d4a=_0x322b('0x7e')+_0xc03592[_0x322b('0x29')]['ContactId'];return db[_0x322b('0x6d')]['query'](_0xb64d4a,{'type':db[_0x322b('0x6e')]['QueryTypes'][_0x322b('0x70')],'raw':!![]})[_0x322b('0x21')](function(_0x241ffd){return _0x241ffd;});})[_0x322b('0x21')](function(_0x24bb83){if(_0x24bb83){_0x22eaaf[_0x322b('0x29')][_0x322b('0x71')]=_0x24bb83[0x0];if(!_0x929e55['body'][_0x322b('0x61')])return;return db[_0x322b('0x72')]['find']({'where':{'id':_0x929e55[_0x322b('0x58')][_0x322b('0x61')],'role':_0x322b('0x63')},'attributes':['id',_0x322b('0x39'),'fullname','email',_0x322b('0x7f')],'raw':!![]});}return null;})[_0x322b('0x21')](function(_0x3a9f5b){if(!_0x3a9f5b)return null;_0x22eaaf['message']['agent']=_0x3a9f5b;return _0x22eaaf;})['then'](function(_0x10e690){if(_0x10e690){_0x10e690['message'][_0x322b('0x76')]=util['format'](_0x322b('0x77'),_0x929e55[_0x322b('0x62')]['name']);_0x10e690[_0x322b('0x29')][_0x322b('0x78')]=_0x22eaaf[_0x322b('0x78')];_0x10e690[_0x322b('0x29')][_0x322b('0x79')]=_0x22eaaf[_0x322b('0x78')];_0x10e690[_0x322b('0x29')][_0x322b('0x80')]=_0x322b('0x34');respondWithRpcPromise(_0x322b('0x7a'),_0x322b('0x7a'),{'event':_0x322b('0x81'),'message':_0x10e690[_0x322b('0x29')]},client9002);return _0x22eaaf;}return null;})[_0x322b('0x21')](respondWithResult(_0x4b2f58,null))[_0x322b('0x2a')](handleError(_0x4b2f58,null));};exports[_0x322b('0x2c')]=function(_0x13f054,_0x3578cc,_0x513a51){if(_0x13f054['body']['id']){delete _0x13f054[_0x322b('0x58')]['id'];}var _0x31fce8;return db[_0x322b('0x3d')][_0x322b('0x59')]({'where':{'id':_0x13f054['params']['id']}})[_0x322b('0x21')](handleEntityNotFound(_0x3578cc,null))[_0x322b('0x21')](function(_0x483c2c){if(_0x483c2c){_0x31fce8=_0x483c2c;return db[_0x322b('0x82')][_0x322b('0x59')]({'where':{'id':_0x483c2c['WhatsappAccountId']}});}})[_0x322b('0x21')](handleEntityNotFound(_0x3578cc,null))['then'](function(_0x31a211){if(_0x31a211){logger[_0x322b('0x83')](_0x322b('0x84'),_0x322b('0x2c'),'received\x20delivery\x20report\x20from',_0x31a211['type'],util[_0x322b('0x85')](_0x13f054['body'],{'showHidden':![],'depth':null}));switch(_0x31a211['type']){case'twilio':if(_0x13f054[_0x322b('0x58')][_0x322b('0x86')]&&_0x13f054[_0x322b('0x58')][_0x322b('0x86')]===_0x31fce8[_0x322b('0x87')]&&_0x13f054['body'][_0x322b('0x88')]&&_0x13f054[_0x322b('0x58')]['MessageStatus']===_0x322b('0x5d')){return _0x31fce8[_0x322b('0x36')]({'read':!![]});}else{logger[_0x322b('0x27')](_0x322b('0x89'),'status',_0x322b('0x8a'),util[_0x322b('0x85')](_0x13f054[_0x322b('0x58')],{'showHidden':![],'depth':null}));}break;}return _0x31fce8;}})[_0x322b('0x21')](respondWithResult(_0x3578cc,null))[_0x322b('0x2a')](handleError(_0x3578cc,null));};
\ No newline at end of file
index 1a2b41d..0a32696 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x235a=['../../mysqldb','WhatsappMessage','save','remove','emit','hasOwnProperty','exports','events'];(function(_0x2ea690,_0x48fa8a){var _0x2bcff5=function(_0x3c3c4c){while(--_0x3c3c4c){_0x2ea690['push'](_0x2ea690['shift']());}};_0x2bcff5(++_0x48fa8a);}(_0x235a,0x1ef));var _0xa235=function(_0x100ee3,_0x4be854){_0x100ee3=_0x100ee3-0x0;var _0x2682c2=_0x235a[_0x100ee3];return _0x2682c2;};'use strict';var EventEmitter=require(_0xa235('0x0'));var WhatsappMessage=require(_0xa235('0x1'))['db'][_0xa235('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa235('0x3'),'afterUpdate':'update','afterDestroy':_0xa235('0x4')};function emitEvent(_0x2f7920){return function(_0x277a68,_0x314ebf,_0x2e6eca){WhatsappMessageEvents[_0xa235('0x5')](_0x2f7920+':'+_0x277a68['id'],_0x277a68);WhatsappMessageEvents[_0xa235('0x5')](_0x2f7920,_0x277a68);_0x2e6eca(null);};}for(var e in events){if(events[_0xa235('0x6')](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module[_0xa235('0x7')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0xa7fa=['events','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x3b1e3f,_0xf8826b){var _0x3b1cd3=function(_0x26ad44){while(--_0x26ad44){_0x3b1e3f['push'](_0x3b1e3f['shift']());}};_0x3b1cd3(++_0xf8826b);}(_0xa7fa,0xfc));var _0xaa7f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa7fa[_0x14add3];return _0x4a174f;};'use strict';var EventEmitter=require(_0xaa7f('0x0'));var WhatsappMessage=require('../../mysqldb')['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0xaa7f('0x1')](0x0);var events={'afterCreate':_0xaa7f('0x2'),'afterUpdate':_0xaa7f('0x3'),'afterDestroy':_0xaa7f('0x4')};function emitEvent(_0x5b7455){return function(_0x39fd71,_0x310190,_0xc238d5){WhatsappMessageEvents[_0xaa7f('0x5')](_0x5b7455+':'+_0x39fd71['id'],_0x39fd71);WhatsappMessageEvents['emit'](_0x5b7455,_0x39fd71);_0xc238d5(null);};}for(var e in events){if(events[_0xaa7f('0x6')](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
index 876a8ef..69c533a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaba=['token','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','sinch','baseUrl','/whatsapp/v1/','/messages/','POST','Bearer\x20','application/json','statuses','message_id','catch','WhatsappMessage,\x20%s','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','node-fetch','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','then','update','error','secret','WhatsappAccount','WhatsappAccountId','type','twilio','accountSid','authToken','phone','messages','whatsapp:','/status?token='];(function(_0x26de39,_0x2f1b7f){var _0x20df5b=function(_0x5f0588){while(--_0x5f0588){_0x26de39['push'](_0x26de39['shift']());}};_0x20df5b(++_0x2f1b7f);}(_0xeaba,0x134));var _0xaeab=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0xeaba[_0xc4001c];return _0x49f7bc;};'use strict';var _=require(_0xaeab('0x0'));var util=require(_0xaeab('0x1'));var logger=require(_0xaeab('0x2'))(_0xaeab('0x3'));var moment=require('moment');var BPromise=require(_0xaeab('0x4'));var rp=require('request-promise');var fetch=require(_0xaeab('0x5'));var fs=require('fs');var path=require(_0xaeab('0x6'));var rimraf=require(_0xaeab('0x7'));var config=require(_0xaeab('0x8'));var attributes=require(_0xaeab('0x9'));module[_0xaeab('0xa')]=function(_0x410a4b,_0x42edbb){return _0x410a4b['define'](_0xaeab('0xb'),attributes,{'tableName':_0xaeab('0xc'),'paranoid':![],'indexes':[{'name':_0xaeab('0xd'),'fields':[_0xaeab('0xd')]},{'name':_0xaeab('0xe'),'fields':[_0xaeab('0xf')],'type':_0xaeab('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xee85be,_0x38a9a0,_0x4fd8e8){var _0x23264f=_0x410a4b[_0xaeab('0x11')];var _0x599ee6=_0xee85be[_0xaeab('0x12')]({'plain':!![]});if(_0x599ee6[_0xaeab('0x13')][_0xaeab('0x14')]()==='in'||_0x599ee6[_0xaeab('0x13')][_0xaeab('0x14')]()===_0xaeab('0x15')&&!_0x599ee6['secret']&&!_['isNil'](_0x599ee6[_0xaeab('0x16')])){_0x23264f[_0xaeab('0x17')][_0xaeab('0x18')]({'where':{'id':_0x599ee6[_0xaeab('0x19')]}})[_0xaeab('0x1a')](function(_0x40f064){if(_0x40f064){_0x40f064[_0xaeab('0x1b')]({'lastMsgAt':_0x599ee6['createdAt'],'lastMsgDirection':_0x599ee6[_0xaeab('0x13')][_0xaeab('0x14')]()});}})['catch'](function(_0x1a4992){console[_0xaeab('0x1c')](_0x1a4992);});}if(_0x599ee6[_0xaeab('0x13')]===_0xaeab('0x15')&&!_0x599ee6[_0xaeab('0x1d')]){var _0x23b4bf;_0x23264f[_0xaeab('0x1e')]['find']({'where':{'id':_0x599ee6[_0xaeab('0x1f')]},'raw':!![]})[_0xaeab('0x1a')](function(_0x4aa23d){_0x23b4bf=_0x4aa23d;if(_0x23b4bf&&_0x23b4bf[_0xaeab('0x20')]){switch(_0x23b4bf[_0xaeab('0x20')]){case _0xaeab('0x21'):var _0x40a445=require(_0xaeab('0x21'));if(_0x23b4bf[_0xaeab('0x22')]&&_0x23b4bf[_0xaeab('0x23')]&&_0x23b4bf[_0xaeab('0x24')]){var _0x547072=new _0x40a445(_0x23b4bf['accountSid'],_0x23b4bf[_0xaeab('0x23')]);_0x547072[_0xaeab('0x25')]['create']({'body':_0x599ee6[_0xaeab('0xf')],'to':_0xaeab('0x26')+_0x599ee6['phone'],'from':_0xaeab('0x26')+_0x23b4bf[_0xaeab('0x24')],'statusCallback':_0x23b4bf['remote']+'/api/whatsapp/messages/'+_0x599ee6['id']+_0xaeab('0x27')+_0x23b4bf[_0xaeab('0x28')]})[_0xaeab('0x1a')](function(_0x3e5002){if(_0x3e5002[_0xaeab('0x29')]){return _0xee85be['update']({'messageId':_0x3e5002[_0xaeab('0x29')]});}})['catch'](function(_0xee4919){logger[_0xaeab('0x1c')](_0xaeab('0x2a'),_0xaeab('0x2b'),_0xaeab('0x21'),util['inspect'](_0xee4919,{'showHidden':![],'depth':null}));});}else{logger[_0xaeab('0x1c')]('WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0xaeab('0x2c'):var _0x290e28=_0x23b4bf[_0xaeab('0x22')];var _0x55fec3=_0x23b4bf[_0xaeab('0x23')];var _0x5ebda0=_0x23b4bf[_0xaeab('0x2d')]+_0xaeab('0x2e')+_0x290e28+_0xaeab('0x2f');var _0x1302fd={'to':[_0x599ee6[_0xaeab('0x24')]],'message':{'type':'text','text':_0x599ee6[_0xaeab('0xf')]}};var _0x28da3d={'method':_0xaeab('0x30'),'uri':_0x5ebda0,'headers':{'Authorization':_0xaeab('0x31')+_0x55fec3,'Content-Type':_0xaeab('0x32')},'body':_0x1302fd,'json':!![]};rp(_0x28da3d)[_0xaeab('0x1a')](function(_0x27efa5){if(_0x27efa5[_0xaeab('0x33')][0x0]['message_id']){return _0xee85be[_0xaeab('0x1b')]({'messageId':_0x27efa5['statuses'][0x0][_0xaeab('0x34')]});}})[_0xaeab('0x35')](function(_0x594854){logger['err'](_0xaeab('0x36'),_0x594854);});break;}}})[_0xaeab('0x37')](function(){_0x4fd8e8();});}else{_0x4fd8e8();}}},'charset':_0xaeab('0x38'),'collate':_0xaeab('0x39')});};
\ No newline at end of file
+var _0x47c1=['out','WhatsappAccount','find','type','twilio','accountSid','authToken','phone','messages','whatsapp:','remote','/api/whatsapp/messages/','/status?token=','token','sid','catch','WhatsappMessage,\x20%s,\x20%s,\x20%s','inspect','error','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/whatsapp/v1/','/messages/','text','body','Bearer\x20','application/json','message_id','finally','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','models','get','direction','secret','isNil','WhatsappInteraction','WhatsappInteractionId','then','update','createdAt','toLowerCase'];(function(_0x224ae7,_0x54eadb){var _0x5f493f=function(_0xba3529){while(--_0xba3529){_0x224ae7['push'](_0x224ae7['shift']());}};_0x5f493f(++_0x54eadb);}(_0x47c1,0x14d));var _0x147c=function(_0x15a3ad,_0x1a1ee2){_0x15a3ad=_0x15a3ad-0x0;var _0x2d7283=_0x47c1[_0x15a3ad];return _0x2d7283;};'use strict';var _=require(_0x147c('0x0'));var util=require('util');var logger=require(_0x147c('0x1'))(_0x147c('0x2'));var moment=require(_0x147c('0x3'));var BPromise=require(_0x147c('0x4'));var rp=require(_0x147c('0x5'));var fetch=require('node-fetch');var fs=require('fs');var path=require(_0x147c('0x6'));var rimraf=require(_0x147c('0x7'));var config=require(_0x147c('0x8'));var attributes=require(_0x147c('0x9'));module[_0x147c('0xa')]=function(_0x39a83e,_0x41e4a6){return _0x39a83e[_0x147c('0xb')](_0x147c('0xc'),attributes,{'tableName':_0x147c('0xd'),'paranoid':![],'indexes':[{'name':_0x147c('0xe'),'fields':[_0x147c('0xe')]},{'name':_0x147c('0xf'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4b9f40,_0x50efbf,_0x1c8f20){var _0x1fd5bc=_0x39a83e[_0x147c('0x10')];var _0x18f906=_0x4b9f40[_0x147c('0x11')]({'plain':!![]});if(_0x18f906[_0x147c('0x12')]['toLowerCase']()==='in'||_0x18f906['direction']['toLowerCase']()==='out'&&!_0x18f906[_0x147c('0x13')]&&!_[_0x147c('0x14')](_0x18f906['UserId'])){_0x1fd5bc[_0x147c('0x15')]['findOne']({'where':{'id':_0x18f906[_0x147c('0x16')]}})[_0x147c('0x17')](function(_0xf84b2f){if(_0xf84b2f){_0xf84b2f[_0x147c('0x18')]({'lastMsgAt':_0x18f906[_0x147c('0x19')],'lastMsgDirection':_0x18f906[_0x147c('0x12')][_0x147c('0x1a')]()});}})['catch'](function(_0x1910ad){console['error'](_0x1910ad);});}if(_0x18f906[_0x147c('0x12')]===_0x147c('0x1b')&&!_0x18f906[_0x147c('0x13')]){var _0x407c25;_0x1fd5bc[_0x147c('0x1c')][_0x147c('0x1d')]({'where':{'id':_0x18f906['WhatsappAccountId']},'raw':!![]})[_0x147c('0x17')](function(_0x59e204){_0x407c25=_0x59e204;if(_0x407c25&&_0x407c25[_0x147c('0x1e')]){switch(_0x407c25[_0x147c('0x1e')]){case _0x147c('0x1f'):var _0x13d8fb=require('twilio');if(_0x407c25[_0x147c('0x20')]&&_0x407c25[_0x147c('0x21')]&&_0x407c25[_0x147c('0x22')]){var _0xff0352=new _0x13d8fb(_0x407c25[_0x147c('0x20')],_0x407c25[_0x147c('0x21')]);_0xff0352[_0x147c('0x23')]['create']({'body':_0x18f906['body'],'to':'whatsapp:'+_0x18f906['phone'],'from':_0x147c('0x24')+_0x407c25[_0x147c('0x22')],'statusCallback':_0x407c25[_0x147c('0x25')]+_0x147c('0x26')+_0x18f906['id']+_0x147c('0x27')+_0x407c25[_0x147c('0x28')]})[_0x147c('0x17')](function(_0x29cf98){if(_0x29cf98[_0x147c('0x29')]){return _0x4b9f40[_0x147c('0x18')]({'messageId':_0x29cf98[_0x147c('0x29')]});}})[_0x147c('0x2a')](function(_0x3d72ac){logger['error'](_0x147c('0x2b'),'afterCreate','twilio',util[_0x147c('0x2c')](_0x3d72ac,{'showHidden':![],'depth':null}));});}else{logger[_0x147c('0x2d')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x147c('0x2e'),_0x147c('0x1f'),_0x147c('0x2f'));}break;case _0x147c('0x30'):var _0x38b82c=_0x407c25['accountSid'];var _0xed372e=_0x407c25[_0x147c('0x21')];var _0x7768e2=_0x407c25[_0x147c('0x31')]+_0x147c('0x32')+_0x38b82c+_0x147c('0x33');var _0xd27d40={'to':[_0x18f906[_0x147c('0x22')]],'message':{'type':_0x147c('0x34'),'text':_0x18f906[_0x147c('0x35')]}};var _0x2c5607={'method':'POST','uri':_0x7768e2,'headers':{'Authorization':_0x147c('0x36')+_0xed372e,'Content-Type':_0x147c('0x37')},'body':_0xd27d40,'json':!![]};rp(_0x2c5607)[_0x147c('0x17')](function(_0x400bc5){if(_0x400bc5['statuses'][0x0][_0x147c('0x38')]){return _0x4b9f40[_0x147c('0x18')]({'messageId':_0x400bc5['statuses'][0x0]['message_id']});}})[_0x147c('0x2a')](function(_0x734bbf){logger['err']('WhatsappMessage,\x20%s',_0x734bbf);});break;}}})[_0x147c('0x39')](function(){_0x1c8f20();});}else{_0x1c8f20();}}},'charset':_0x147c('0x3a'),'collate':_0x147c('0x3b')});};
\ No newline at end of file
index 4b5d758..96daa7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4062=['moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','then','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','message','info','result','CreateWhatsappMessage','create','body','options','raw','stringify','lodash','util'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0x4062,0x10e));var _0x2406=function(_0x54b912,_0x23f827){_0x54b912=_0x54b912-0x0;var _0x21dc67=_0x4062[_0x54b912];return _0x21dc67;};'use strict';var _=require(_0x2406('0x0'));var util=require(_0x2406('0x1'));var moment=require(_0x2406('0x2'));var BPromise=require(_0x2406('0x3'));var rs=require(_0x2406('0x4'));var fs=require('fs');var Redis=require(_0x2406('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2406('0x6'))(_0x2406('0x7'));var config=require(_0x2406('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2406('0x9')][_0x2406('0xa')]({'port':0x232a});config[_0x2406('0xb')]=_[_0x2406('0xc')](config[_0x2406('0xb')],{'host':_0x2406('0xd'),'port':0x18eb});var socket=require(_0x2406('0xe'))(new Redis(config[_0x2406('0xb')]));require(_0x2406('0xf'))[_0x2406('0x10')](socket);function respondWithRpcPromise(_0x56226d,_0x5e0a38,_0x4333e6){return new BPromise(function(_0x4f84dd,_0x5545d1){return client[_0x2406('0x11')](_0x56226d,_0x4333e6)[_0x2406('0x12')](function(_0x15b2b5){logger['info'](_0x2406('0x13'),_0x5e0a38,_0x2406('0x14'));logger[_0x2406('0x15')](_0x2406('0x16'),_0x5e0a38,_0x2406('0x14'),JSON['stringify'](_0x15b2b5));if(_0x15b2b5[_0x2406('0x17')]){if(_0x15b2b5[_0x2406('0x17')][_0x2406('0x18')]===0x1f4){logger['error'](_0x2406('0x13'),_0x5e0a38,_0x15b2b5['error']['message']);return _0x5545d1(_0x15b2b5[_0x2406('0x17')]['message']);}logger[_0x2406('0x17')](_0x2406('0x13'),_0x5e0a38,_0x15b2b5[_0x2406('0x17')][_0x2406('0x19')]);return _0x4f84dd(_0x15b2b5[_0x2406('0x17')][_0x2406('0x19')]);}else{logger[_0x2406('0x1a')](_0x2406('0x13'),_0x5e0a38,_0x2406('0x14'));_0x4f84dd(_0x15b2b5[_0x2406('0x1b')][_0x2406('0x19')]);}})['catch'](function(_0x49e9cd){logger['error'](_0x2406('0x13'),_0x5e0a38,_0x49e9cd);_0x5545d1(_0x49e9cd);});});}exports[_0x2406('0x1c')]=function(_0x3df574){var _0xd4f795=this;return new Promise(function(_0x203468,_0x103305){return db['WhatsappMessage'][_0x2406('0x1d')](_0x3df574[_0x2406('0x1e')],{'raw':_0x3df574[_0x2406('0x1f')]?_0x3df574[_0x2406('0x1f')][_0x2406('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x3d8b98){logger['info'](_0x2406('0x1c'),_0x3df574);logger[_0x2406('0x15')](_0x2406('0x1c'),_0x3df574,JSON[_0x2406('0x21')](_0x3d8b98));_0x203468(_0x3d8b98);})['catch'](function(_0x56a39a){logger[_0x2406('0x17')]('CreateWhatsappMessage',_0x56a39a['message'],_0x3df574);_0x103305(_0xd4f795[_0x2406('0x17')](0x1f4,_0x56a39a[_0x2406('0x19')]));});});};
\ No newline at end of file
+var _0x3141=['WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','CreateWhatsappMessage','WhatsappMessage','create','body','options','raw','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','socket.io-emitter','request','then','info','WhatsappMessage,\x20%s,\x20%s','debug'];(function(_0x4bc418,_0x47da7e){var _0x5a7fb2=function(_0x29339b){while(--_0x29339b){_0x4bc418['push'](_0x4bc418['shift']());}};_0x5a7fb2(++_0x47da7e);}(_0x3141,0x178));var _0x1314=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x3141[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x1314('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x1314('0x1'));var fs=require('fs');var Redis=require(_0x1314('0x2'));var db=require(_0x1314('0x3'))['db'];var utils=require(_0x1314('0x4'));var logger=require(_0x1314('0x5'))(_0x1314('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x1314('0x7')][_0x1314('0x8')]({'port':0x232a});config[_0x1314('0x9')]=_['defaults'](config[_0x1314('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x1314('0xa'))(new Redis(config['redis']));require('./whatsappMessage.socket')['register'](socket);function respondWithRpcPromise(_0x1c2013,_0x3b0c84,_0x1b1f3e){return new BPromise(function(_0x4b8332,_0x5506b7){return client[_0x1314('0xb')](_0x1c2013,_0x1b1f3e)[_0x1314('0xc')](function(_0x4d9ae8){logger[_0x1314('0xd')](_0x1314('0xe'),_0x3b0c84,'request\x20sent');logger[_0x1314('0xf')](_0x1314('0x10'),_0x3b0c84,_0x1314('0x11'),JSON[_0x1314('0x12')](_0x4d9ae8));if(_0x4d9ae8[_0x1314('0x13')]){if(_0x4d9ae8['error']['code']===0x1f4){logger[_0x1314('0x13')](_0x1314('0xe'),_0x3b0c84,_0x4d9ae8['error']['message']);return _0x5506b7(_0x4d9ae8[_0x1314('0x13')]['message']);}logger[_0x1314('0x13')]('WhatsappMessage,\x20%s,\x20%s',_0x3b0c84,_0x4d9ae8['error'][_0x1314('0x14')]);return _0x4b8332(_0x4d9ae8[_0x1314('0x13')][_0x1314('0x14')]);}else{logger[_0x1314('0xd')](_0x1314('0xe'),_0x3b0c84,_0x1314('0x11'));_0x4b8332(_0x4d9ae8['result'][_0x1314('0x14')]);}})[_0x1314('0x15')](function(_0x4bcd59){logger[_0x1314('0x13')](_0x1314('0xe'),_0x3b0c84,_0x4bcd59);_0x5506b7(_0x4bcd59);});});}exports[_0x1314('0x16')]=function(_0x461a74){var _0x474c59=this;return new Promise(function(_0x530f04,_0x55ef1d){return db[_0x1314('0x17')][_0x1314('0x18')](_0x461a74[_0x1314('0x19')],{'raw':_0x461a74[_0x1314('0x1a')]?_0x461a74['options'][_0x1314('0x1b')]===undefined?!![]:![]:!![]})[_0x1314('0xc')](function(_0x2bdf4d){logger[_0x1314('0xd')](_0x1314('0x16'),_0x461a74);logger[_0x1314('0xf')]('CreateWhatsappMessage',_0x461a74,JSON[_0x1314('0x12')](_0x2bdf4d));_0x530f04(_0x2bdf4d);})[_0x1314('0x15')](function(_0x28724b){logger['error'](_0x1314('0x16'),_0x28724b[_0x1314('0x14')],_0x461a74);_0x55ef1d(_0x474c59[_0x1314('0x13')](0x1f4,_0x28724b[_0x1314('0x14')]));});});};
\ No newline at end of file
index 66142d6..6a317f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x403e=['removeListener','register','length','./whatsappMessage.events','save','remove','update','emit'];(function(_0x1bd4c8,_0x3a4b6b){var _0x332f21=function(_0x37501e){while(--_0x37501e){_0x1bd4c8['push'](_0x1bd4c8['shift']());}};_0x332f21(++_0x3a4b6b);}(_0x403e,0xab));var _0xe403=function(_0x4755da,_0x45b2bb){_0x4755da=_0x4755da-0x0;var _0x138e32=_0x403e[_0x4755da];return _0x138e32;};'use strict';var WhatsappMessageEvents=require(_0xe403('0x0'));var events=[_0xe403('0x1'),_0xe403('0x2'),_0xe403('0x3')];function createListener(_0x1f315b,_0x25691e){return function(_0x14e2ae){_0x25691e[_0xe403('0x4')](_0x1f315b,_0x14e2ae);};}function removeListener(_0x204421,_0x340c7e){return function(){WhatsappMessageEvents[_0xe403('0x5')](_0x204421,_0x340c7e);};}exports[_0xe403('0x6')]=function(_0x21806a){for(var _0x161857=0x0,_0x4b2d71=events[_0xe403('0x7')];_0x161857<_0x4b2d71;_0x161857++){var _0x5d2b7d=events[_0x161857];var _0x31c2f1=createListener('whatsappMessage:'+_0x5d2b7d,_0x21806a);WhatsappMessageEvents['on'](_0x5d2b7d,_0x31c2f1);}};
\ No newline at end of file
+var _0xec0f=['remove','update','emit','removeListener','register','length','whatsappMessage:','./whatsappMessage.events','save'];(function(_0x4e5552,_0x19ec4e){var _0x60a338=function(_0x40c70e){while(--_0x40c70e){_0x4e5552['push'](_0x4e5552['shift']());}};_0x60a338(++_0x19ec4e);}(_0xec0f,0xb2));var _0xfec0=function(_0x432955,_0x54ce21){_0x432955=_0x432955-0x0;var _0x11f225=_0xec0f[_0x432955];return _0x11f225;};'use strict';var WhatsappMessageEvents=require(_0xfec0('0x0'));var events=[_0xfec0('0x1'),_0xfec0('0x2'),_0xfec0('0x3')];function createListener(_0x26e541,_0x2f3cdb){return function(_0x89c195){_0x2f3cdb[_0xfec0('0x4')](_0x26e541,_0x89c195);};}function removeListener(_0x4df235,_0x1caeff){return function(){WhatsappMessageEvents[_0xfec0('0x5')](_0x4df235,_0x1caeff);};}exports[_0xfec0('0x6')]=function(_0xa2ade6){for(var _0x183786=0x0,_0x1c4f15=events[_0xfec0('0x7')];_0x183786<_0x1c4f15;_0x183786++){var _0x54e684=events[_0x183786];var _0x4833c9=createListener(_0xfec0('0x8')+_0x54e684,_0xa2ade6);WhatsappMessageEvents['on'](_0x54e684,_0x4833c9);}};
\ No newline at end of file
index 21770fd..a9fdc8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f9c=['index','/describe','describe','show','getMembers','/:id/users','getAgents','post','create','/:id/teams','addTeams','addAgents','put','/:id','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','isAuthenticated'];(function(_0x1d77ea,_0x550612){var _0x41ed47=function(_0x1bfec4){while(--_0x1bfec4){_0x1d77ea['push'](_0x1d77ea['shift']());}};_0x41ed47(++_0x550612);}(_0x5f9c,0xaa));var _0xc5f9=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x5f9c[_0x3ab51d];return _0x29a04e;};'use strict';var multer=require(_0xc5f9('0x0'));var util=require(_0xc5f9('0x1'));var path=require(_0xc5f9('0x2'));var timeout=require('connect-timeout');var express=require(_0xc5f9('0x3'));var router=express['Router']();var fs_extra=require(_0xc5f9('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xc5f9('0x5'));var config=require(_0xc5f9('0x6'));var controller=require(_0xc5f9('0x7'));router[_0xc5f9('0x8')]('/',auth[_0xc5f9('0x9')](),controller[_0xc5f9('0xa')]);router['get'](_0xc5f9('0xb'),auth['isAuthenticated'](),controller[_0xc5f9('0xc')]);router[_0xc5f9('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xc5f9('0xd')]);router['get']('/:id/members',auth[_0xc5f9('0x9')](),controller[_0xc5f9('0xe')]);router['get']('/:id/teams',auth['isAuthenticated'](),controller['getTeams']);router[_0xc5f9('0x8')](_0xc5f9('0xf'),auth['isAuthenticated'](),controller[_0xc5f9('0x10')]);router[_0xc5f9('0x11')]('/',auth[_0xc5f9('0x9')](),controller[_0xc5f9('0x12')]);router[_0xc5f9('0x11')](_0xc5f9('0x13'),auth[_0xc5f9('0x9')](),controller[_0xc5f9('0x14')]);router['post']('/:id/users',auth[_0xc5f9('0x9')](),controller[_0xc5f9('0x15')]);router[_0xc5f9('0x16')](_0xc5f9('0x17'),auth['isAuthenticated'](),controller[_0xc5f9('0x18')]);router[_0xc5f9('0x19')]('/:id',auth[_0xc5f9('0x9')](),controller[_0xc5f9('0x1a')]);router['delete']('/:id/teams',auth[_0xc5f9('0x9')](),controller[_0xc5f9('0x1b')]);router[_0xc5f9('0x19')](_0xc5f9('0xf'),auth['isAuthenticated'](),controller[_0xc5f9('0x1c')]);module[_0xc5f9('0x1d')]=router;
\ No newline at end of file
+var _0x4a38=['index','isAuthenticated','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','getAgents','post','create','addAgents','put','update','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./whatsappQueue.controller','get'];(function(_0x3fc97b,_0x20ca29){var _0x3a0c82=function(_0x1c15ec){while(--_0x1c15ec){_0x3fc97b['push'](_0x3fc97b['shift']());}};_0x3a0c82(++_0x20ca29);}(_0x4a38,0x1de));var _0x84a3=function(_0x16e4a2,_0x448a3d){_0x16e4a2=_0x16e4a2-0x0;var _0x430bd8=_0x4a38[_0x16e4a2];return _0x430bd8;};'use strict';var multer=require(_0x84a3('0x0'));var util=require(_0x84a3('0x1'));var path=require('path');var timeout=require(_0x84a3('0x2'));var express=require('express');var router=express[_0x84a3('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x84a3('0x4'));var interaction=require(_0x84a3('0x5'));var config=require('../../config/environment');var controller=require(_0x84a3('0x6'));router[_0x84a3('0x7')]('/',auth['isAuthenticated'](),controller[_0x84a3('0x8')]);router[_0x84a3('0x7')]('/describe',auth[_0x84a3('0x9')](),controller[_0x84a3('0xa')]);router[_0x84a3('0x7')](_0x84a3('0xb'),auth[_0x84a3('0x9')](),controller[_0x84a3('0xc')]);router['get'](_0x84a3('0xd'),auth[_0x84a3('0x9')](),controller[_0x84a3('0xe')]);router[_0x84a3('0x7')](_0x84a3('0xf'),auth[_0x84a3('0x9')](),controller[_0x84a3('0x10')]);router[_0x84a3('0x7')]('/:id/users',auth['isAuthenticated'](),controller[_0x84a3('0x11')]);router[_0x84a3('0x12')]('/',auth['isAuthenticated'](),controller[_0x84a3('0x13')]);router[_0x84a3('0x12')](_0x84a3('0xf'),auth[_0x84a3('0x9')](),controller['addTeams']);router[_0x84a3('0x12')]('/:id/users',auth['isAuthenticated'](),controller[_0x84a3('0x14')]);router[_0x84a3('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x84a3('0x16')]);router['delete'](_0x84a3('0xb'),auth[_0x84a3('0x9')](),controller[_0x84a3('0x17')]);router['delete'](_0x84a3('0xf'),auth[_0x84a3('0x9')](),controller[_0x84a3('0x18')]);router['delete']('/:id/users',auth[_0x84a3('0x9')](),controller[_0x84a3('0x19')]);module[_0x84a3('0x1a')]=router;
\ No newline at end of file
index 141e7c1..2a10d2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45c8=['STRING','name','INTEGER','ENUM','sequelize'];(function(_0x309c5f,_0x1198b7){var _0x2a5140=function(_0x3d4b3a){while(--_0x3d4b3a){_0x309c5f['push'](_0x309c5f['shift']());}};_0x2a5140(++_0x1198b7);}(_0x45c8,0xef));var _0x845c=function(_0x3ec16c,_0x1c200f){_0x3ec16c=_0x3ec16c-0x0;var _0x387689=_0x45c8[_0x3ec16c];return _0x387689;};'use strict';var Sequelize=require(_0x845c('0x0'));module['exports']={'name':{'type':Sequelize[_0x845c('0x1')],'unique':_0x845c('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x845c('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x845c('0x4')]('rrmemory','beepall','roundrobin')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0911=['STRING','name','INTEGER','rrmemory','roundrobin','sequelize','exports'];(function(_0x311c35,_0x534915){var _0x5cc50c=function(_0x3ad680){while(--_0x3ad680){_0x311c35['push'](_0x311c35['shift']());}};_0x5cc50c(++_0x534915);}(_0x0911,0x1a9));var _0x1091=function(_0x3bef2c,_0x5a86fd){_0x3bef2c=_0x3bef2c-0x0;var _0x331503=_0x0911[_0x3bef2c];return _0x331503;};'use strict';var Sequelize=require(_0x1091('0x0'));module[_0x1091('0x1')]={'name':{'type':Sequelize[_0x1091('0x2')],'unique':_0x1091('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x1091('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x1091('0x5'),'beepall',_0x1091('0x6'))},'description':{'type':Sequelize[_0x1091('0x2')]}};
\ No newline at end of file
index 42226cc..efdfe6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d0a=['pick','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','rawAttributes','find','create','body','role','user','get','WhatsappQueues','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserWhatsappQueue','hasOwnProperty','WhatsappQueueId','filter','User','findAndCountAll','agent','whatsappPause','createdAt','format','updatedAt','Team','getTeams','addTeams','Agents','online','interface','sequelize','findOrCreate','forEach','removeTeams','ids','select','field','tq.TeamId','team_has_whatsapp_queues','join','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','transaction','emit','addAgents','omit','removeAgents','isArray','userWhatsappQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','destroy','UserProfileResource','stack','name','send','index','map','WhatsappQueue','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where'];(function(_0x3dbf83,_0x2a7210){var _0x3b6b9e=function(_0x411482){while(--_0x411482){_0x3dbf83['push'](_0x3dbf83['shift']());}};_0x3b6b9e(++_0x2a7210);}(_0x1d0a,0x1f2));var _0xa1d0=function(_0x32c798,_0xd2fe15){_0x32c798=_0x32c798-0x0;var _0x429dbf=_0x1d0a[_0x32c798];return _0x429dbf;};'use strict';var emlformat=require(_0xa1d0('0x0'));var rimraf=require(_0xa1d0('0x1'));var zipdir=require(_0xa1d0('0x2'));var jsonpatch=require(_0xa1d0('0x3'));var rp=require('request-promise');var moment=require(_0xa1d0('0x4'));var BPromise=require(_0xa1d0('0x5'));var Mustache=require('mustache');var util=require(_0xa1d0('0x6'));var path=require(_0xa1d0('0x7'));var sox=require(_0xa1d0('0x8'));var csv=require(_0xa1d0('0x9'));var ejs=require(_0xa1d0('0xa'));var fs=require('fs');var fs_extra=require(_0xa1d0('0xb'));var _=require(_0xa1d0('0xc'));var squel=require(_0xa1d0('0xd'));var crypto=require(_0xa1d0('0xe'));var jsforce=require(_0xa1d0('0xf'));var deskjs=require(_0xa1d0('0x10'));var toCsv=require(_0xa1d0('0x9'));var querystring=require(_0xa1d0('0x11'));var Papa=require(_0xa1d0('0x12'));var Redis=require(_0xa1d0('0x13'));var authService=require(_0xa1d0('0x14'));var qs=require(_0xa1d0('0x15'));var as=require(_0xa1d0('0x16'));var hardwareService=require(_0xa1d0('0x17'));var logger=require(_0xa1d0('0x18'))(_0xa1d0('0x19'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa1d0('0x1a'));var db=require(_0xa1d0('0x1b'))['db'];config[_0xa1d0('0x1c')]=_[_0xa1d0('0x1d')](config[_0xa1d0('0x1c')],{'host':_0xa1d0('0x1e'),'port':0x18eb});var socket=require(_0xa1d0('0x1f'))(new Redis(config[_0xa1d0('0x1c')]));require('./whatsappQueue.socket')[_0xa1d0('0x20')](socket);function respondWithStatusCode(_0x3ae156,_0x345fb1){_0x345fb1=_0x345fb1||0xcc;return function(_0x5e61c9){if(_0x5e61c9){return _0x3ae156[_0xa1d0('0x21')](_0x345fb1);}return _0x3ae156[_0xa1d0('0x22')](_0x345fb1)[_0xa1d0('0x23')]();};}function respondWithResult(_0x2aa63b,_0x42bb93){_0x42bb93=_0x42bb93||0xc8;return function(_0x64a0a6){if(_0x64a0a6){return _0x2aa63b[_0xa1d0('0x22')](_0x42bb93)[_0xa1d0('0x24')](_0x64a0a6);}};}function respondWithFilteredResult(_0x105902,_0x29117d){return function(_0x2c33cd){if(_0x2c33cd){var _0xfc1857=typeof _0x29117d[_0xa1d0('0x25')]==='undefined'&&typeof _0x29117d[_0xa1d0('0x26')]===_0xa1d0('0x27');var _0x242c59=_0x2c33cd[_0xa1d0('0x28')];var _0x22a2ad=_0xfc1857?0x0:_0x29117d[_0xa1d0('0x25')];var _0xd0b400=_0xfc1857?_0x2c33cd[_0xa1d0('0x28')]:_0x29117d[_0xa1d0('0x25')]+_0x29117d['limit'];var _0xe4934c;if(_0xd0b400>=_0x242c59){_0xd0b400=_0x242c59;_0xe4934c=0xc8;}else{_0xe4934c=0xce;}_0x105902[_0xa1d0('0x22')](_0xe4934c);return _0x105902[_0xa1d0('0x29')](_0xa1d0('0x2a'),_0x22a2ad+'-'+_0xd0b400+'/'+_0x242c59)[_0xa1d0('0x24')](_0x2c33cd);}return null;};}function patchUpdates(_0x3a44ac){return function(_0xe414c){try{jsonpatch[_0xa1d0('0x2b')](_0xe414c,_0x3a44ac,!![]);}catch(_0x5f5453){return BPromise['reject'](_0x5f5453);}return _0xe414c[_0xa1d0('0x2c')]();};}function saveUpdates(_0x4aeeaf,_0x18b73f){return function(_0x2f5a51){if(_0x2f5a51){return _0x2f5a51[_0xa1d0('0x2d')](_0x4aeeaf)[_0xa1d0('0x2e')](function(_0x5df1bb){return _0x5df1bb;});}return null;};}function removeEntity(_0x550634,_0x29de99){return function(_0x2fbcff){if(_0x2fbcff){return _0x2fbcff[_0xa1d0('0x2f')]()[_0xa1d0('0x2e')](function(){var _0x2e08a3=_0x2fbcff['get']({'plain':!![]});var _0x51f266='WhatsappQueues';return db[_0xa1d0('0x30')][_0xa1d0('0x2f')]({'where':{'type':_0x51f266,'resourceId':_0x2e08a3['id']}})[_0xa1d0('0x2e')](function(){return _0x2fbcff;});})[_0xa1d0('0x2e')](function(){_0x550634[_0xa1d0('0x22')](0xcc)[_0xa1d0('0x23')]();});}};}function handleEntityNotFound(_0x5be9a9,_0x4b2869){return function(_0x4fb190){if(!_0x4fb190){_0x5be9a9[_0xa1d0('0x21')](0x194);}return _0x4fb190;};}function handleError(_0x3fa086,_0x15c57e){_0x15c57e=_0x15c57e||0x1f4;return function(_0x274ff8){logger['error'](_0x274ff8[_0xa1d0('0x31')]);if(_0x274ff8[_0xa1d0('0x32')]){delete _0x274ff8[_0xa1d0('0x32')];}_0x3fa086['status'](_0x15c57e)[_0xa1d0('0x33')](_0x274ff8);};}exports[_0xa1d0('0x34')]=function(_0x47a20e,_0x4d4207){var _0x188226={},_0x598fc6={},_0x533d8d={'count':0x0,'rows':[]};var _0x16d6b5=_[_0xa1d0('0x35')](db[_0xa1d0('0x36')]['rawAttributes'],function(_0x1cdb66){return{'name':_0x1cdb66[_0xa1d0('0x37')],'type':_0x1cdb66[_0xa1d0('0x38')][_0xa1d0('0x39')]};});_0x598fc6['model']=_['map'](_0x16d6b5,'name');_0x598fc6[_0xa1d0('0x3a')]=_[_0xa1d0('0x3b')](_0x47a20e['query']);_0x598fc6[_0xa1d0('0x3c')]=_[_0xa1d0('0x3d')](_0x598fc6[_0xa1d0('0x3e')],_0x598fc6[_0xa1d0('0x3a')]);_0x188226[_0xa1d0('0x3f')]=_[_0xa1d0('0x3d')](_0x598fc6[_0xa1d0('0x3e')],qs[_0xa1d0('0x40')](_0x47a20e['query']['fields']));_0x188226[_0xa1d0('0x3f')]=_0x188226[_0xa1d0('0x3f')][_0xa1d0('0x41')]?_0x188226[_0xa1d0('0x3f')]:_0x598fc6[_0xa1d0('0x3e')];if(!_0x47a20e['query']['hasOwnProperty'](_0xa1d0('0x42'))){_0x188226[_0xa1d0('0x26')]=qs[_0xa1d0('0x26')](_0x47a20e['query'][_0xa1d0('0x26')]);_0x188226[_0xa1d0('0x25')]=qs[_0xa1d0('0x25')](_0x47a20e[_0xa1d0('0x3a')]['offset']);}_0x188226[_0xa1d0('0x43')]=qs['sort'](_0x47a20e['query'][_0xa1d0('0x44')]);_0x188226[_0xa1d0('0x45')]=qs[_0xa1d0('0x3c')](_[_0xa1d0('0x46')](_0x47a20e[_0xa1d0('0x3a')],_0x598fc6[_0xa1d0('0x3c')]),_0x16d6b5);if(_0x47a20e[_0xa1d0('0x3a')]['filter']){_0x188226[_0xa1d0('0x45')]=_['merge'](_0x188226[_0xa1d0('0x45')],{'$or':_[_0xa1d0('0x35')](_0x16d6b5,function(_0x2e951a){if(_0x2e951a[_0xa1d0('0x38')]!==_0xa1d0('0x47')){var _0x364929={};_0x364929[_0x2e951a[_0xa1d0('0x32')]]={'$like':'%'+_0x47a20e[_0xa1d0('0x3a')]['filter']+'%'};return _0x364929;}})});}_0x188226=_[_0xa1d0('0x48')]({},_0x188226,_0x47a20e[_0xa1d0('0x49')]);var _0x3d99c8={'where':_0x188226[_0xa1d0('0x45')]};return db[_0xa1d0('0x36')][_0xa1d0('0x28')](_0x3d99c8)[_0xa1d0('0x2e')](function(_0x279aff){_0x533d8d['count']=_0x279aff;if(_0x47a20e[_0xa1d0('0x3a')][_0xa1d0('0x4a')]){_0x188226['include']=[{'all':!![]}];}return db[_0xa1d0('0x36')][_0xa1d0('0x4b')](_0x188226);})[_0xa1d0('0x2e')](function(_0x1521b5){_0x533d8d[_0xa1d0('0x4c')]=_0x1521b5;return _0x533d8d;})[_0xa1d0('0x2e')](respondWithFilteredResult(_0x4d4207,_0x188226))[_0xa1d0('0x4d')](handleError(_0x4d4207,null));};exports[_0xa1d0('0x4e')]=function(_0x494771,_0xc57516){var _0x4eaf0d={'raw':!![],'where':{'id':_0x494771[_0xa1d0('0x4f')]['id']}},_0x4832f4={};_0x4832f4['model']=_[_0xa1d0('0x3b')](db[_0xa1d0('0x36')][_0xa1d0('0x50')]);_0x4832f4[_0xa1d0('0x3a')]=_[_0xa1d0('0x3b')](_0x494771[_0xa1d0('0x3a')]);_0x4832f4['filters']=_[_0xa1d0('0x3d')](_0x4832f4[_0xa1d0('0x3e')],_0x4832f4[_0xa1d0('0x3a')]);_0x4eaf0d[_0xa1d0('0x3f')]=_[_0xa1d0('0x3d')](_0x4832f4['model'],qs[_0xa1d0('0x40')](_0x494771[_0xa1d0('0x3a')]['fields']));_0x4eaf0d[_0xa1d0('0x3f')]=_0x4eaf0d[_0xa1d0('0x3f')][_0xa1d0('0x41')]?_0x4eaf0d[_0xa1d0('0x3f')]:_0x4832f4[_0xa1d0('0x3e')];if(_0x494771[_0xa1d0('0x3a')][_0xa1d0('0x4a')]){_0x4eaf0d['include']=[{'all':!![]}];}_0x4eaf0d=_[_0xa1d0('0x48')]({},_0x4eaf0d,_0x494771[_0xa1d0('0x49')]);return db['WhatsappQueue'][_0xa1d0('0x51')](_0x4eaf0d)[_0xa1d0('0x2e')](handleEntityNotFound(_0xc57516,null))['then'](respondWithResult(_0xc57516,null))[_0xa1d0('0x4d')](handleError(_0xc57516,null));};exports[_0xa1d0('0x52')]=function(_0x563884,_0x1b69a5){return db[_0xa1d0('0x36')][_0xa1d0('0x52')](_0x563884[_0xa1d0('0x53')],{})[_0xa1d0('0x2e')](function(_0x1f7498){var _0x2555ac=_0x563884['user']['get']({'plain':!![]});if(!_0x2555ac)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2555ac[_0xa1d0('0x54')]===_0xa1d0('0x55')){var _0x4c6cab=_0x1f7498[_0xa1d0('0x56')]({'plain':!![]});var _0x8b25e4=_0xa1d0('0x57');return db['UserProfileSection']['find']({'where':{'name':_0x8b25e4,'userProfileId':_0x2555ac[_0xa1d0('0x58')]},'raw':!![]})[_0xa1d0('0x2e')](function(_0x2ab8b1){if(_0x2ab8b1&&_0x2ab8b1[_0xa1d0('0x59')]===0x0){return db[_0xa1d0('0x30')]['create']({'name':_0x4c6cab[_0xa1d0('0x32')],'resourceId':_0x4c6cab['id'],'type':_0x2ab8b1['name'],'sectionId':_0x2ab8b1['id']},{})[_0xa1d0('0x2e')](function(){return _0x1f7498;});}else{return _0x1f7498;}})['catch'](function(_0x5dd7cf){logger['error'](_0xa1d0('0x5a'),_0x5dd7cf);throw _0x5dd7cf;});}return _0x1f7498;})[_0xa1d0('0x2e')](respondWithResult(_0x1b69a5,0xc9))['catch'](handleError(_0x1b69a5,null));};exports[_0xa1d0('0x2d')]=function(_0x244a8a,_0x2e46df){if(_0x244a8a['body']['id']){delete _0x244a8a['body']['id'];}return db[_0xa1d0('0x36')][_0xa1d0('0x51')]({'where':{'id':_0x244a8a[_0xa1d0('0x4f')]['id']}})[_0xa1d0('0x2e')](handleEntityNotFound(_0x2e46df,null))[_0xa1d0('0x2e')](saveUpdates(_0x244a8a[_0xa1d0('0x53')],null))[_0xa1d0('0x2e')](respondWithResult(_0x2e46df,null))[_0xa1d0('0x4d')](handleError(_0x2e46df,null));};exports['destroy']=function(_0x36468e,_0x3f326c){return db['WhatsappQueue']['find']({'where':{'id':_0x36468e[_0xa1d0('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3f326c,null))[_0xa1d0('0x2e')](removeEntity(_0x3f326c,null))[_0xa1d0('0x4d')](handleError(_0x3f326c,null));};exports[_0xa1d0('0x5b')]=function(_0x8ad27,_0x3a637f){return db[_0xa1d0('0x36')]['describe']()[_0xa1d0('0x2e')](respondWithResult(_0x3a637f,null))[_0xa1d0('0x4d')](handleError(_0x3a637f,null));};exports[_0xa1d0('0x5c')]=function(_0xb6c410,_0x23ca1d,_0x59b0ee){var _0xebaf84={'raw':!![],'where':{}},_0x912c69={},_0x568085;return db['WhatsappQueue'][_0xa1d0('0x5d')]({'where':{'id':_0xb6c410[_0xa1d0('0x4f')]['id']}})[_0xa1d0('0x2e')](handleEntityNotFound(_0x23ca1d,null))[_0xa1d0('0x2e')](function(_0x54fb99){if(_0x54fb99){_0x568085=_0x54fb99[_0xa1d0('0x56')]({'plain':!![]});_0x912c69[_0xa1d0('0x3e')]=_[_0xa1d0('0x3b')](db[_0xa1d0('0x5e')][_0xa1d0('0x50')]);_0x912c69['query']=_[_0xa1d0('0x3b')](_0xb6c410['query']);_0x912c69[_0xa1d0('0x3c')]=_[_0xa1d0('0x3d')](_0x912c69[_0xa1d0('0x3e')],_0x912c69[_0xa1d0('0x3a')]);_0xebaf84[_0xa1d0('0x3f')]=_[_0xa1d0('0x3d')](_0x912c69['model'],qs[_0xa1d0('0x40')](_0xb6c410[_0xa1d0('0x3a')][_0xa1d0('0x40')]));_0xebaf84[_0xa1d0('0x3f')]=_0xebaf84[_0xa1d0('0x3f')]['length']?_0xebaf84[_0xa1d0('0x3f')]:_0x912c69[_0xa1d0('0x3e')];if(!_0xb6c410[_0xa1d0('0x3a')][_0xa1d0('0x5f')](_0xa1d0('0x42'))){_0xebaf84[_0xa1d0('0x26')]=qs[_0xa1d0('0x26')](_0xb6c410[_0xa1d0('0x3a')][_0xa1d0('0x26')]);_0xebaf84[_0xa1d0('0x25')]=qs[_0xa1d0('0x25')](_0xb6c410[_0xa1d0('0x3a')][_0xa1d0('0x25')]);}_0xebaf84[_0xa1d0('0x43')]=qs[_0xa1d0('0x44')](_0xb6c410[_0xa1d0('0x3a')][_0xa1d0('0x44')]);_0xebaf84[_0xa1d0('0x45')]=qs['filters'](_['pick'](_0xb6c410['query'],_0x912c69[_0xa1d0('0x3c')]));_0xebaf84[_0xa1d0('0x45')][_0xa1d0('0x60')]=_0x54fb99['id'];if(_0xb6c410[_0xa1d0('0x3a')][_0xa1d0('0x61')]){_0xebaf84[_0xa1d0('0x45')]=_[_0xa1d0('0x48')](_0xebaf84[_0xa1d0('0x45')],{'$or':_['map'](_0xebaf84[_0xa1d0('0x3f')],function(_0x36c626){var _0x4552e5={};_0x4552e5[_0x36c626]={'$like':'%'+_0xb6c410[_0xa1d0('0x3a')][_0xa1d0('0x61')]+'%'};return _0x4552e5;})});}_0xebaf84=_[_0xa1d0('0x48')]({},_0xebaf84,_0xb6c410[_0xa1d0('0x49')]);return db[_0xa1d0('0x5e')][_0xa1d0('0x4b')](_0xebaf84);}})[_0xa1d0('0x2e')](function(_0x57c850){if(_0x57c850){return db[_0xa1d0('0x62')][_0xa1d0('0x63')]({'where':{'id':_[_0xa1d0('0x35')](_0x57c850,'UserId'),'role':_0xa1d0('0x64')},'attributes':['id',_0xa1d0('0x32'),_0xa1d0('0x65'),'updatedAt',_0xa1d0('0x66')]});}})[_0xa1d0('0x2e')](function(_0x10a67b){if(_0x10a67b){return{'count':_0x10a67b[_0xa1d0('0x28')],'rows':_[_0xa1d0('0x35')](_0x10a67b[_0xa1d0('0x4c')],function(_0x30b45b){return{'membername':_0x30b45b[_0xa1d0('0x32')],'UserId':_0x30b45b['id'],'queue_name':_0x568085[_0xa1d0('0x32')],'WhatsappQueueId':_0x568085['id'],'interface':util[_0xa1d0('0x67')]('%s/%s','SIP',_0x30b45b[_0xa1d0('0x32')]),'penalty':0x0,'paused':_0x30b45b[_0xa1d0('0x65')],'createdAt':_0x30b45b['createdAt'],'updatedAt':_0x30b45b[_0xa1d0('0x68')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x23ca1d,_0xebaf84))[_0xa1d0('0x4d')](handleError(_0x23ca1d,null));};exports['getTeams']=function(_0x6db449,_0x12be54,_0x203015){var _0x5a03e4={};var _0x3bb361={};var _0x149963;var _0x4948e6;return db[_0xa1d0('0x36')]['findOne']({'where':{'id':_0x6db449[_0xa1d0('0x4f')]['id']}})[_0xa1d0('0x2e')](handleEntityNotFound(_0x12be54,null))[_0xa1d0('0x2e')](function(_0x3e5ca8){if(_0x3e5ca8){_0x149963=_0x3e5ca8;_0x3bb361[_0xa1d0('0x3e')]=_[_0xa1d0('0x3b')](db[_0xa1d0('0x69')][_0xa1d0('0x50')]);_0x3bb361[_0xa1d0('0x3a')]=_['keys'](_0x6db449[_0xa1d0('0x3a')]);_0x3bb361[_0xa1d0('0x3c')]=_[_0xa1d0('0x3d')](_0x3bb361['model'],_0x3bb361[_0xa1d0('0x3a')]);_0x5a03e4[_0xa1d0('0x3f')]=_[_0xa1d0('0x3d')](_0x3bb361['model'],qs[_0xa1d0('0x40')](_0x6db449[_0xa1d0('0x3a')][_0xa1d0('0x40')]));_0x5a03e4[_0xa1d0('0x3f')]=_0x5a03e4[_0xa1d0('0x3f')][_0xa1d0('0x41')]?_0x5a03e4[_0xa1d0('0x3f')]:_0x3bb361[_0xa1d0('0x3e')];_0x5a03e4[_0xa1d0('0x43')]=qs[_0xa1d0('0x44')](_0x6db449[_0xa1d0('0x3a')]['sort']);_0x5a03e4['where']=qs['filters'](_[_0xa1d0('0x46')](_0x6db449[_0xa1d0('0x3a')],_0x3bb361[_0xa1d0('0x3c')]));if(_0x6db449[_0xa1d0('0x3a')]['filter']){_0x5a03e4[_0xa1d0('0x45')]=_['merge'](_0x5a03e4[_0xa1d0('0x45')],{'$or':_[_0xa1d0('0x35')](_0x5a03e4[_0xa1d0('0x3f')],function(_0x2c6f0b){var _0x307651={};_0x307651[_0x2c6f0b]={'$like':'%'+_0x6db449[_0xa1d0('0x3a')][_0xa1d0('0x61')]+'%'};return _0x307651;})});}_0x5a03e4=_[_0xa1d0('0x48')]({},_0x5a03e4,_0x6db449[_0xa1d0('0x49')]);return _0x149963[_0xa1d0('0x6a')](_0x5a03e4);}})[_0xa1d0('0x2e')](function(_0x3b5690){if(_0x3b5690){_0x4948e6=_0x3b5690['length'];if(!_0x6db449[_0xa1d0('0x3a')][_0xa1d0('0x5f')](_0xa1d0('0x42'))){_0x5a03e4[_0xa1d0('0x26')]=qs[_0xa1d0('0x26')](_0x6db449[_0xa1d0('0x3a')][_0xa1d0('0x26')]);_0x5a03e4[_0xa1d0('0x25')]=qs[_0xa1d0('0x25')](_0x6db449[_0xa1d0('0x3a')][_0xa1d0('0x25')]);}return _0x149963[_0xa1d0('0x6a')](_0x5a03e4);}})['then'](function(_0x4172ca){if(_0x4172ca){return _0x4172ca?{'count':_0x4948e6,'rows':_0x4172ca}:null;}})[_0xa1d0('0x2e')](respondWithResult(_0x12be54,null))['catch'](handleError(_0x12be54,null));};exports[_0xa1d0('0x6b')]=function(_0x1cfa29,_0x51e1c4,_0x434e36){var _0x97a766=_0x1cfa29[_0xa1d0('0x53')]['ids'];return db['Team'][_0xa1d0('0x4b')]({'where':{'id':_0x97a766},'attributes':['id'],'include':[{'model':db[_0xa1d0('0x62')],'as':_0xa1d0('0x6c'),'attributes':['id',_0xa1d0('0x32'),_0xa1d0('0x6d'),'voicePause',_0xa1d0('0x6e')],'raw':!![]}]})[_0xa1d0('0x2e')](function(_0x1d1276){if(_0x1d1276){var _0xd3f318=_['flatMap'](_0x1d1276,function(_0xa1bb83){var _0x568cf0=_0xa1bb83[_0xa1d0('0x56')]({'plain':!![]});return _0x568cf0['Agents'];});return db['WhatsappQueue']['find']({'where':{'id':_0x1cfa29[_0xa1d0('0x4f')]['id']}})[_0xa1d0('0x2e')](function(_0x486649){return db[_0xa1d0('0x6f')]['transaction'](function(_0x309a4d){return _0x486649[_0xa1d0('0x6b')](_0x97a766,{'transaction':_0x309a4d})[_0xa1d0('0x2e')](function(){return BPromise['each'](_0xd3f318,function(_0x2dc470){return db[_0xa1d0('0x5e')][_0xa1d0('0x70')]({'where':{'UserId':_0x2dc470['id'],'WhatsappQueueId':_0x1cfa29[_0xa1d0('0x4f')]['id']},'transaction':_0x309a4d});});})['then'](function(){_0xd3f318[_0xa1d0('0x71')](function(_0x425510){socket['emit']('userWhatsappQueue:save',{'UserId':_0x425510['id'],'WhatsappQueueId':_0x486649['id']});});});});});}})['then'](respondWithStatusCode(_0x51e1c4,null))[_0xa1d0('0x4d')](handleError(_0x51e1c4,null));};exports[_0xa1d0('0x72')]=function(_0x580086,_0x5bfcf5,_0x243893){return db[_0xa1d0('0x69')]['findAll']({'where':{'id':_0x580086[_0xa1d0('0x3a')][_0xa1d0('0x73')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xa1d0('0x6c'),'attributes':['id'],'raw':!![]}]})[_0xa1d0('0x2e')](handleEntityNotFound(_0x5bfcf5,null))['then'](function(_0x3f04c5){var _0x9bb14c=_['map'](_0x3f04c5,'id');var _0x14d2af=[];var _0x28881d=[];var _0x12b8e0=squel[_0xa1d0('0x74')]();_0x12b8e0[_0xa1d0('0x75')](_0xa1d0('0x76'))['from'](_0xa1d0('0x77'),'tq')[_0xa1d0('0x78')]('user_has_teams','ut',_0xa1d0('0x79'))['where'](_0xa1d0('0x7a'),_0x580086[_0xa1d0('0x4f')]['id']);for(var _0x4ea34d=0x0;_0x4ea34d<_0x3f04c5[_0xa1d0('0x41')];_0x4ea34d+=0x1){let _0x259be9=_0x3f04c5[_0x4ea34d];for(var _0x241ed4=0x0;_0x241ed4<_0x259be9['Agents']['length'];_0x241ed4+=0x1){let _0x2a4bed=_0x259be9[_0xa1d0('0x6c')][_0x241ed4];var _0xef3c34=_0x12b8e0[_0xa1d0('0x7b')]();_0xef3c34[_0xa1d0('0x45')]('ut.UserId\x20=\x20?',_0x2a4bed['id']);_0x28881d['push'](db[_0xa1d0('0x6f')]['query'](_0xef3c34[_0xa1d0('0x7c')](),{'type':db[_0xa1d0('0x6f')][_0xa1d0('0x7d')][_0xa1d0('0x7e')]})[_0xa1d0('0x2e')](function(_0x5a35e3){if(_0x5a35e3[_0xa1d0('0x41')]===0x1){return _0x2a4bed['id'];}else{var _0x44420b=_[_0xa1d0('0x7f')](_['map'](_0x5a35e3,_0xa1d0('0x80')),function(_0x46202a){return _[_0xa1d0('0x81')](_0x9bb14c,_0x46202a);});if(_0x44420b){return _0x2a4bed['id'];}}}));}}return BPromise[_0xa1d0('0x82')](_0x28881d)[_0xa1d0('0x2e')](function(_0x5a4cf1){_0x14d2af=_(_0x14d2af)[_0xa1d0('0x83')](_0x5a4cf1)[_0xa1d0('0x84')]()[_0xa1d0('0x85')]();return db[_0xa1d0('0x36')]['find']({'where':{'id':_0x580086[_0xa1d0('0x4f')]['id']}})[_0xa1d0('0x2e')](function(_0xf0afee){return db[_0xa1d0('0x6f')][_0xa1d0('0x86')](function(_0x47a93b){return _0xf0afee['removeTeams'](_0x580086[_0xa1d0('0x3a')]['ids'],{'transaction':_0x47a93b})['then'](function(){if(!_['isEmpty'](_0x14d2af)){return _0xf0afee['removeAgents'](_0x14d2af,{'transaction':_0x47a93b});}})[_0xa1d0('0x2e')](function(){_0x14d2af[_0xa1d0('0x71')](function(_0xe0d62c){socket[_0xa1d0('0x87')]('userWhatsappQueue:remove',{'UserId':_0xe0d62c,'WhatsappQueueId':_0xf0afee['id']});});});});});});})[_0xa1d0('0x2e')](respondWithStatusCode(_0x5bfcf5,null))[_0xa1d0('0x4d')](handleError(_0x5bfcf5,null));};exports[_0xa1d0('0x88')]=function(_0x4dd935,_0x5b8384,_0x3a88b2){return db['WhatsappQueue'][_0xa1d0('0x51')]({'where':{'id':_0x4dd935[_0xa1d0('0x4f')]['id']}})[_0xa1d0('0x2e')](handleEntityNotFound(_0x5b8384,null))['then'](function(_0x5bb281){if(_0x5bb281){return _0x5bb281[_0xa1d0('0x88')](_0x4dd935[_0xa1d0('0x53')][_0xa1d0('0x73')],_[_0xa1d0('0x89')](_0x4dd935[_0xa1d0('0x53')],[_0xa1d0('0x73'),'id'])||{})['spread'](function(_0x437342){for(var _0x142077=0x0;_0x142077<_0x4dd935[_0xa1d0('0x53')][_0xa1d0('0x73')][_0xa1d0('0x41')];_0x142077+=0x1){socket['emit']('userWhatsappQueue:save',{'UserId':Number(_0x4dd935['body']['ids'][_0x142077]),'WhatsappQueueId':Number(_0x4dd935['params']['id'])});}return _0x437342;});}})['then'](respondWithResult(_0x5b8384,null))[_0xa1d0('0x4d')](handleError(_0x5b8384,null));};exports[_0xa1d0('0x8a')]=function(_0x2388d8,_0x43c018,_0x2350f6){return db[_0xa1d0('0x36')]['find']({'where':{'id':_0x2388d8[_0xa1d0('0x4f')]['id']}})[_0xa1d0('0x2e')](handleEntityNotFound(_0x43c018,null))[_0xa1d0('0x2e')](function(_0x3ae3c0){if(_0x3ae3c0){return _0x3ae3c0[_0xa1d0('0x8a')](_0x2388d8[_0xa1d0('0x3a')]['ids'])[_0xa1d0('0x2e')](function(){if(_[_0xa1d0('0x8b')](_0x2388d8[_0xa1d0('0x3a')][_0xa1d0('0x73')])){for(var _0x197c27=0x0;_0x197c27<_0x2388d8['query'][_0xa1d0('0x73')]['length'];_0x197c27+=0x1){socket[_0xa1d0('0x87')](_0xa1d0('0x8c'),{'UserId':Number(_0x2388d8[_0xa1d0('0x3a')][_0xa1d0('0x73')][_0x197c27]),'WhatsappQueueId':Number(_0x2388d8[_0xa1d0('0x4f')]['id'])});}}else{socket[_0xa1d0('0x87')](_0xa1d0('0x8c'),{'UserId':Number(_0x2388d8['query'][_0xa1d0('0x73')]),'WhatsappQueueId':Number(_0x2388d8[_0xa1d0('0x4f')]['id'])});}});}})[_0xa1d0('0x2e')](respondWithStatusCode(_0x43c018,null))['catch'](handleError(_0x43c018,null));};exports[_0xa1d0('0x8d')]=function(_0x910612,_0x12443e,_0x345034){var _0x24bfa3={};var _0x17536c={};var _0x309cf6;var _0x5e32c3;return db[_0xa1d0('0x36')][_0xa1d0('0x5d')]({'where':{'id':_0x910612[_0xa1d0('0x4f')]['id']}})[_0xa1d0('0x2e')](handleEntityNotFound(_0x12443e,null))[_0xa1d0('0x2e')](function(_0x2dd10c){if(_0x2dd10c){_0x309cf6=_0x2dd10c;_0x17536c[_0xa1d0('0x3e')]=_[_0xa1d0('0x3b')](db['User'][_0xa1d0('0x50')]);_0x17536c[_0xa1d0('0x3a')]=_[_0xa1d0('0x3b')](_0x910612[_0xa1d0('0x3a')]);_0x17536c['filters']=_[_0xa1d0('0x3d')](_0x17536c[_0xa1d0('0x3e')],_0x17536c[_0xa1d0('0x3a')]);_0x24bfa3['attributes']=_['intersection'](_0x17536c[_0xa1d0('0x3e')],qs[_0xa1d0('0x40')](_0x910612['query']['fields']));_0x24bfa3[_0xa1d0('0x3f')]=_0x24bfa3[_0xa1d0('0x3f')][_0xa1d0('0x41')]?_0x24bfa3[_0xa1d0('0x3f')]:_0x17536c['model'];_0x24bfa3['order']=qs[_0xa1d0('0x44')](_0x910612[_0xa1d0('0x3a')][_0xa1d0('0x44')]);_0x24bfa3[_0xa1d0('0x45')]=qs[_0xa1d0('0x3c')](_[_0xa1d0('0x46')](_0x910612['query'],_0x17536c['filters']));if(_0x910612[_0xa1d0('0x3a')]['filter']){_0x24bfa3[_0xa1d0('0x45')]=_['merge'](_0x24bfa3['where'],{'$or':_[_0xa1d0('0x35')](_0x24bfa3[_0xa1d0('0x3f')],function(_0x35ec0e){var _0x25d79a={};_0x25d79a[_0x35ec0e]={'$like':'%'+_0x910612[_0xa1d0('0x3a')]['filter']+'%'};return _0x25d79a;})});}_0x24bfa3=_[_0xa1d0('0x48')]({},_0x24bfa3,_0x910612[_0xa1d0('0x49')]);return _0x309cf6['getAgents'](_0x24bfa3);}})['then'](function(_0x51732a){if(_0x51732a){_0x5e32c3=_0x51732a[_0xa1d0('0x41')];if(!_0x910612[_0xa1d0('0x3a')][_0xa1d0('0x5f')](_0xa1d0('0x42'))){_0x24bfa3[_0xa1d0('0x26')]=qs[_0xa1d0('0x26')](_0x910612[_0xa1d0('0x3a')]['limit']);_0x24bfa3['offset']=qs[_0xa1d0('0x25')](_0x910612[_0xa1d0('0x3a')][_0xa1d0('0x25')]);}return _0x309cf6['getAgents'](_0x24bfa3);}})['then'](function(_0x583791){if(_0x583791){return _0x583791?{'count':_0x5e32c3,'rows':_0x583791}:null;}})[_0xa1d0('0x2e')](respondWithResult(_0x12443e,null))[_0xa1d0('0x4d')](handleError(_0x12443e,null));};
\ No newline at end of file
+var _0xe32e=['compact','addAgents','omit','spread','removeAgents','isArray','userWhatsappQueue:remove','getAgents','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','destroy','then','get','WhatsappQueues','UserProfileResource','name','send','index','map','WhatsappQueue','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','type','findAll','rows','catch','show','params','includeAll','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserWhatsappQueue','order','pick','WhatsappQueueId','User','agent','whatsappPause','createdAt','updatedAt','getTeams','Team','addTeams','ids','online','voicePause','interface','flatMap','transaction','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','Agents','select','field','tq.TeamId','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','TeamId','includes','all','union'];(function(_0x47878f,_0x48d3bf){var _0x4b05b8=function(_0x3d6597){while(--_0x3d6597){_0x47878f['push'](_0x47878f['shift']());}};_0x4b05b8(++_0x48d3bf);}(_0xe32e,0x11a));var _0xee32=function(_0x4c1411,_0x423224){_0x4c1411=_0x4c1411-0x0;var _0x361457=_0xe32e[_0x4c1411];return _0x361457;};'use strict';var emlformat=require(_0xee32('0x0'));var rimraf=require(_0xee32('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xee32('0x2'));var rp=require('request-promise');var moment=require(_0xee32('0x3'));var BPromise=require(_0xee32('0x4'));var Mustache=require(_0xee32('0x5'));var util=require('util');var path=require(_0xee32('0x6'));var sox=require('sox');var csv=require(_0xee32('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xee32('0x8'));var _=require(_0xee32('0x9'));var squel=require(_0xee32('0xa'));var crypto=require(_0xee32('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xee32('0xc'));var toCsv=require(_0xee32('0x7'));var querystring=require(_0xee32('0xd'));var Papa=require(_0xee32('0xe'));var Redis=require('ioredis');var authService=require(_0xee32('0xf'));var qs=require(_0xee32('0x10'));var as=require(_0xee32('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xee32('0x12'));var utils=require(_0xee32('0x13'));var config=require(_0xee32('0x14'));var licenseUtil=require(_0xee32('0x15'));var db=require('../../mysqldb')['db'];config[_0xee32('0x16')]=_['defaults'](config[_0xee32('0x16')],{'host':_0xee32('0x17'),'port':0x18eb});var socket=require(_0xee32('0x18'))(new Redis(config[_0xee32('0x16')]));require('./whatsappQueue.socket')['register'](socket);function respondWithStatusCode(_0x6283cf,_0x5133c9){_0x5133c9=_0x5133c9||0xcc;return function(_0x55d76e){if(_0x55d76e){return _0x6283cf[_0xee32('0x19')](_0x5133c9);}return _0x6283cf[_0xee32('0x1a')](_0x5133c9)['end']();};}function respondWithResult(_0x37c336,_0x5e7224){_0x5e7224=_0x5e7224||0xc8;return function(_0x2bf284){if(_0x2bf284){return _0x37c336['status'](_0x5e7224)[_0xee32('0x1b')](_0x2bf284);}};}function respondWithFilteredResult(_0xd9caf2,_0x546421){return function(_0x5ed8dc){if(_0x5ed8dc){var _0x4b7405=typeof _0x546421[_0xee32('0x1c')]===_0xee32('0x1d')&&typeof _0x546421['limit']===_0xee32('0x1d');var _0x1a7c75=_0x5ed8dc[_0xee32('0x1e')];var _0x559443=_0x4b7405?0x0:_0x546421[_0xee32('0x1c')];var _0x31b9a3=_0x4b7405?_0x5ed8dc[_0xee32('0x1e')]:_0x546421['offset']+_0x546421[_0xee32('0x1f')];var _0x37e20e;if(_0x31b9a3>=_0x1a7c75){_0x31b9a3=_0x1a7c75;_0x37e20e=0xc8;}else{_0x37e20e=0xce;}_0xd9caf2[_0xee32('0x1a')](_0x37e20e);return _0xd9caf2['set'](_0xee32('0x20'),_0x559443+'-'+_0x31b9a3+'/'+_0x1a7c75)['json'](_0x5ed8dc);}return null;};}function patchUpdates(_0x3cb09f){return function(_0x4b5b93){try{jsonpatch[_0xee32('0x21')](_0x4b5b93,_0x3cb09f,!![]);}catch(_0x503851){return BPromise[_0xee32('0x22')](_0x503851);}return _0x4b5b93[_0xee32('0x23')]();};}function saveUpdates(_0x4e97ab,_0x15119e){return function(_0x23b9fa){if(_0x23b9fa){return _0x23b9fa[_0xee32('0x24')](_0x4e97ab)['then'](function(_0x325314){return _0x325314;});}return null;};}function removeEntity(_0x3798d3,_0x59fd59){return function(_0x1ea531){if(_0x1ea531){return _0x1ea531[_0xee32('0x25')]()[_0xee32('0x26')](function(){var _0x2ed95b=_0x1ea531[_0xee32('0x27')]({'plain':!![]});var _0xd384a5=_0xee32('0x28');return db[_0xee32('0x29')]['destroy']({'where':{'type':_0xd384a5,'resourceId':_0x2ed95b['id']}})[_0xee32('0x26')](function(){return _0x1ea531;});})[_0xee32('0x26')](function(){_0x3798d3[_0xee32('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2738ed,_0x4a78bb){return function(_0x3e3254){if(!_0x3e3254){_0x2738ed['sendStatus'](0x194);}return _0x3e3254;};}function handleError(_0x24ed92,_0x41d843){_0x41d843=_0x41d843||0x1f4;return function(_0x3ca098){logger['error'](_0x3ca098['stack']);if(_0x3ca098[_0xee32('0x2a')]){delete _0x3ca098['name'];}_0x24ed92['status'](_0x41d843)[_0xee32('0x2b')](_0x3ca098);};}exports[_0xee32('0x2c')]=function(_0x449495,_0x1679c0){var _0x243626={},_0x56f7a2={},_0x443dc2={'count':0x0,'rows':[]};var _0x847dc9=_[_0xee32('0x2d')](db[_0xee32('0x2e')][_0xee32('0x2f')],function(_0x4f1b9a){return{'name':_0x4f1b9a[_0xee32('0x30')],'type':_0x4f1b9a['type'][_0xee32('0x31')]};});_0x56f7a2[_0xee32('0x32')]=_['map'](_0x847dc9,_0xee32('0x2a'));_0x56f7a2[_0xee32('0x33')]=_[_0xee32('0x34')](_0x449495[_0xee32('0x33')]);_0x56f7a2['filters']=_[_0xee32('0x35')](_0x56f7a2['model'],_0x56f7a2['query']);_0x243626['attributes']=_[_0xee32('0x35')](_0x56f7a2[_0xee32('0x32')],qs[_0xee32('0x36')](_0x449495[_0xee32('0x33')][_0xee32('0x36')]));_0x243626[_0xee32('0x37')]=_0x243626[_0xee32('0x37')][_0xee32('0x38')]?_0x243626[_0xee32('0x37')]:_0x56f7a2[_0xee32('0x32')];if(!_0x449495[_0xee32('0x33')][_0xee32('0x39')](_0xee32('0x3a'))){_0x243626[_0xee32('0x1f')]=qs[_0xee32('0x1f')](_0x449495[_0xee32('0x33')]['limit']);_0x243626[_0xee32('0x1c')]=qs[_0xee32('0x1c')](_0x449495[_0xee32('0x33')]['offset']);}_0x243626['order']=qs[_0xee32('0x3b')](_0x449495[_0xee32('0x33')][_0xee32('0x3b')]);_0x243626[_0xee32('0x3c')]=qs[_0xee32('0x3d')](_['pick'](_0x449495[_0xee32('0x33')],_0x56f7a2['filters']),_0x847dc9);if(_0x449495[_0xee32('0x33')][_0xee32('0x3e')]){_0x243626[_0xee32('0x3c')]=_[_0xee32('0x3f')](_0x243626[_0xee32('0x3c')],{'$or':_[_0xee32('0x2d')](_0x847dc9,function(_0x4e3c91){if(_0x4e3c91[_0xee32('0x40')]!=='VIRTUAL'){var _0x36a5b6={};_0x36a5b6[_0x4e3c91['name']]={'$like':'%'+_0x449495['query'][_0xee32('0x3e')]+'%'};return _0x36a5b6;}})});}_0x243626=_['merge']({},_0x243626,_0x449495['options']);var _0x348650={'where':_0x243626['where']};return db[_0xee32('0x2e')][_0xee32('0x1e')](_0x348650)[_0xee32('0x26')](function(_0x4c2f4b){_0x443dc2[_0xee32('0x1e')]=_0x4c2f4b;if(_0x449495['query']['includeAll']){_0x243626['include']=[{'all':!![]}];}return db[_0xee32('0x2e')][_0xee32('0x41')](_0x243626);})[_0xee32('0x26')](function(_0xa27f5b){_0x443dc2[_0xee32('0x42')]=_0xa27f5b;return _0x443dc2;})[_0xee32('0x26')](respondWithFilteredResult(_0x1679c0,_0x243626))[_0xee32('0x43')](handleError(_0x1679c0,null));};exports[_0xee32('0x44')]=function(_0xf6b368,_0xc5740c){var _0x3953d1={'raw':!![],'where':{'id':_0xf6b368[_0xee32('0x45')]['id']}},_0x3a4c45={};_0x3a4c45[_0xee32('0x32')]=_['keys'](db[_0xee32('0x2e')]['rawAttributes']);_0x3a4c45['query']=_['keys'](_0xf6b368[_0xee32('0x33')]);_0x3a4c45[_0xee32('0x3d')]=_[_0xee32('0x35')](_0x3a4c45['model'],_0x3a4c45[_0xee32('0x33')]);_0x3953d1[_0xee32('0x37')]=_[_0xee32('0x35')](_0x3a4c45[_0xee32('0x32')],qs[_0xee32('0x36')](_0xf6b368['query'][_0xee32('0x36')]));_0x3953d1[_0xee32('0x37')]=_0x3953d1['attributes']['length']?_0x3953d1[_0xee32('0x37')]:_0x3a4c45[_0xee32('0x32')];if(_0xf6b368[_0xee32('0x33')][_0xee32('0x46')]){_0x3953d1['include']=[{'all':!![]}];}_0x3953d1=_[_0xee32('0x3f')]({},_0x3953d1,_0xf6b368[_0xee32('0x47')]);return db[_0xee32('0x2e')][_0xee32('0x48')](_0x3953d1)['then'](handleEntityNotFound(_0xc5740c,null))[_0xee32('0x26')](respondWithResult(_0xc5740c,null))[_0xee32('0x43')](handleError(_0xc5740c,null));};exports['create']=function(_0x53b7ae,_0x31c86b){return db[_0xee32('0x2e')][_0xee32('0x49')](_0x53b7ae[_0xee32('0x4a')],{})[_0xee32('0x26')](function(_0x4cc868){var _0x14c15e=_0x53b7ae['user'][_0xee32('0x27')]({'plain':!![]});if(!_0x14c15e)throw new Error(_0xee32('0x4b'));if(_0x14c15e['role']===_0xee32('0x4c')){var _0x7ac53e=_0x4cc868[_0xee32('0x27')]({'plain':!![]});var _0xd23b4e='WhatsappQueues';return db[_0xee32('0x4d')][_0xee32('0x48')]({'where':{'name':_0xd23b4e,'userProfileId':_0x14c15e[_0xee32('0x4e')]},'raw':!![]})[_0xee32('0x26')](function(_0x538d33){if(_0x538d33&&_0x538d33[_0xee32('0x4f')]===0x0){return db[_0xee32('0x29')][_0xee32('0x49')]({'name':_0x7ac53e[_0xee32('0x2a')],'resourceId':_0x7ac53e['id'],'type':_0x538d33[_0xee32('0x2a')],'sectionId':_0x538d33['id']},{})[_0xee32('0x26')](function(){return _0x4cc868;});}else{return _0x4cc868;}})[_0xee32('0x43')](function(_0x2f8da7){logger[_0xee32('0x50')](_0xee32('0x51'),_0x2f8da7);throw _0x2f8da7;});}return _0x4cc868;})[_0xee32('0x26')](respondWithResult(_0x31c86b,0xc9))[_0xee32('0x43')](handleError(_0x31c86b,null));};exports[_0xee32('0x24')]=function(_0x264620,_0x53b50c){if(_0x264620[_0xee32('0x4a')]['id']){delete _0x264620['body']['id'];}return db[_0xee32('0x2e')][_0xee32('0x48')]({'where':{'id':_0x264620[_0xee32('0x45')]['id']}})[_0xee32('0x26')](handleEntityNotFound(_0x53b50c,null))[_0xee32('0x26')](saveUpdates(_0x264620[_0xee32('0x4a')],null))[_0xee32('0x26')](respondWithResult(_0x53b50c,null))[_0xee32('0x43')](handleError(_0x53b50c,null));};exports[_0xee32('0x25')]=function(_0x1fef48,_0x1a5079){return db[_0xee32('0x2e')]['find']({'where':{'id':_0x1fef48[_0xee32('0x45')]['id']}})[_0xee32('0x26')](handleEntityNotFound(_0x1a5079,null))['then'](removeEntity(_0x1a5079,null))[_0xee32('0x43')](handleError(_0x1a5079,null));};exports['describe']=function(_0x23d124,_0x50a6a8){return db[_0xee32('0x2e')][_0xee32('0x52')]()[_0xee32('0x26')](respondWithResult(_0x50a6a8,null))[_0xee32('0x43')](handleError(_0x50a6a8,null));};exports[_0xee32('0x53')]=function(_0x24a5c2,_0x18e022,_0x5c60b6){var _0x48d7c3={'raw':!![],'where':{}},_0x84e76={},_0x26ba16;return db[_0xee32('0x2e')][_0xee32('0x54')]({'where':{'id':_0x24a5c2[_0xee32('0x45')]['id']}})[_0xee32('0x26')](handleEntityNotFound(_0x18e022,null))[_0xee32('0x26')](function(_0x30192f){if(_0x30192f){_0x26ba16=_0x30192f[_0xee32('0x27')]({'plain':!![]});_0x84e76[_0xee32('0x32')]=_[_0xee32('0x34')](db[_0xee32('0x55')][_0xee32('0x2f')]);_0x84e76[_0xee32('0x33')]=_[_0xee32('0x34')](_0x24a5c2[_0xee32('0x33')]);_0x84e76[_0xee32('0x3d')]=_[_0xee32('0x35')](_0x84e76['model'],_0x84e76[_0xee32('0x33')]);_0x48d7c3[_0xee32('0x37')]=_[_0xee32('0x35')](_0x84e76[_0xee32('0x32')],qs['fields'](_0x24a5c2[_0xee32('0x33')][_0xee32('0x36')]));_0x48d7c3['attributes']=_0x48d7c3[_0xee32('0x37')][_0xee32('0x38')]?_0x48d7c3[_0xee32('0x37')]:_0x84e76[_0xee32('0x32')];if(!_0x24a5c2[_0xee32('0x33')][_0xee32('0x39')](_0xee32('0x3a'))){_0x48d7c3['limit']=qs[_0xee32('0x1f')](_0x24a5c2[_0xee32('0x33')][_0xee32('0x1f')]);_0x48d7c3[_0xee32('0x1c')]=qs[_0xee32('0x1c')](_0x24a5c2['query'][_0xee32('0x1c')]);}_0x48d7c3[_0xee32('0x56')]=qs[_0xee32('0x3b')](_0x24a5c2[_0xee32('0x33')]['sort']);_0x48d7c3['where']=qs[_0xee32('0x3d')](_[_0xee32('0x57')](_0x24a5c2[_0xee32('0x33')],_0x84e76[_0xee32('0x3d')]));_0x48d7c3['where'][_0xee32('0x58')]=_0x30192f['id'];if(_0x24a5c2[_0xee32('0x33')][_0xee32('0x3e')]){_0x48d7c3['where']=_['merge'](_0x48d7c3[_0xee32('0x3c')],{'$or':_[_0xee32('0x2d')](_0x48d7c3['attributes'],function(_0x546f09){var _0x474079={};_0x474079[_0x546f09]={'$like':'%'+_0x24a5c2['query'][_0xee32('0x3e')]+'%'};return _0x474079;})});}_0x48d7c3=_['merge']({},_0x48d7c3,_0x24a5c2[_0xee32('0x47')]);return db[_0xee32('0x55')]['findAll'](_0x48d7c3);}})[_0xee32('0x26')](function(_0x29c658){if(_0x29c658){return db[_0xee32('0x59')]['findAndCountAll']({'where':{'id':_[_0xee32('0x2d')](_0x29c658,'UserId'),'role':_0xee32('0x5a')},'attributes':['id',_0xee32('0x2a'),_0xee32('0x5b'),'updatedAt',_0xee32('0x5c')]});}})[_0xee32('0x26')](function(_0x36ae7f){if(_0x36ae7f){return{'count':_0x36ae7f[_0xee32('0x1e')],'rows':_[_0xee32('0x2d')](_0x36ae7f[_0xee32('0x42')],function(_0x5b95e3){return{'membername':_0x5b95e3[_0xee32('0x2a')],'UserId':_0x5b95e3['id'],'queue_name':_0x26ba16[_0xee32('0x2a')],'WhatsappQueueId':_0x26ba16['id'],'interface':util['format']('%s/%s','SIP',_0x5b95e3[_0xee32('0x2a')]),'penalty':0x0,'paused':_0x5b95e3[_0xee32('0x5b')],'createdAt':_0x5b95e3[_0xee32('0x5c')],'updatedAt':_0x5b95e3[_0xee32('0x5d')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xee32('0x26')](respondWithFilteredResult(_0x18e022,_0x48d7c3))[_0xee32('0x43')](handleError(_0x18e022,null));};exports[_0xee32('0x5e')]=function(_0x1022b3,_0x1390d2,_0x2ac4b4){var _0x49c531={};var _0x4a6047={};var _0x4d077e;var _0x4005d3;return db[_0xee32('0x2e')]['findOne']({'where':{'id':_0x1022b3[_0xee32('0x45')]['id']}})[_0xee32('0x26')](handleEntityNotFound(_0x1390d2,null))[_0xee32('0x26')](function(_0x2ecaad){if(_0x2ecaad){_0x4d077e=_0x2ecaad;_0x4a6047[_0xee32('0x32')]=_[_0xee32('0x34')](db[_0xee32('0x5f')][_0xee32('0x2f')]);_0x4a6047['query']=_['keys'](_0x1022b3['query']);_0x4a6047['filters']=_[_0xee32('0x35')](_0x4a6047[_0xee32('0x32')],_0x4a6047[_0xee32('0x33')]);_0x49c531[_0xee32('0x37')]=_[_0xee32('0x35')](_0x4a6047['model'],qs[_0xee32('0x36')](_0x1022b3[_0xee32('0x33')][_0xee32('0x36')]));_0x49c531[_0xee32('0x37')]=_0x49c531['attributes'][_0xee32('0x38')]?_0x49c531[_0xee32('0x37')]:_0x4a6047[_0xee32('0x32')];_0x49c531[_0xee32('0x56')]=qs[_0xee32('0x3b')](_0x1022b3[_0xee32('0x33')][_0xee32('0x3b')]);_0x49c531[_0xee32('0x3c')]=qs[_0xee32('0x3d')](_['pick'](_0x1022b3[_0xee32('0x33')],_0x4a6047[_0xee32('0x3d')]));if(_0x1022b3['query'][_0xee32('0x3e')]){_0x49c531['where']=_[_0xee32('0x3f')](_0x49c531[_0xee32('0x3c')],{'$or':_[_0xee32('0x2d')](_0x49c531['attributes'],function(_0x434a8a){var _0x3d4fc4={};_0x3d4fc4[_0x434a8a]={'$like':'%'+_0x1022b3[_0xee32('0x33')][_0xee32('0x3e')]+'%'};return _0x3d4fc4;})});}_0x49c531=_['merge']({},_0x49c531,_0x1022b3[_0xee32('0x47')]);return _0x4d077e[_0xee32('0x5e')](_0x49c531);}})[_0xee32('0x26')](function(_0x58ef2a){if(_0x58ef2a){_0x4005d3=_0x58ef2a['length'];if(!_0x1022b3[_0xee32('0x33')][_0xee32('0x39')](_0xee32('0x3a'))){_0x49c531['limit']=qs[_0xee32('0x1f')](_0x1022b3[_0xee32('0x33')][_0xee32('0x1f')]);_0x49c531['offset']=qs[_0xee32('0x1c')](_0x1022b3[_0xee32('0x33')][_0xee32('0x1c')]);}return _0x4d077e[_0xee32('0x5e')](_0x49c531);}})[_0xee32('0x26')](function(_0x2b053e){if(_0x2b053e){return _0x2b053e?{'count':_0x4005d3,'rows':_0x2b053e}:null;}})[_0xee32('0x26')](respondWithResult(_0x1390d2,null))[_0xee32('0x43')](handleError(_0x1390d2,null));};exports[_0xee32('0x60')]=function(_0x136bb8,_0x40cac1,_0x55e8b8){var _0x253b23=_0x136bb8[_0xee32('0x4a')][_0xee32('0x61')];return db[_0xee32('0x5f')][_0xee32('0x41')]({'where':{'id':_0x253b23},'attributes':['id'],'include':[{'model':db[_0xee32('0x59')],'as':'Agents','attributes':['id',_0xee32('0x2a'),_0xee32('0x62'),_0xee32('0x63'),_0xee32('0x64')],'raw':!![]}]})[_0xee32('0x26')](function(_0x5a6717){if(_0x5a6717){var _0x24c84d=_[_0xee32('0x65')](_0x5a6717,function(_0x21bad2){var _0x5b5d6b=_0x21bad2[_0xee32('0x27')]({'plain':!![]});return _0x5b5d6b['Agents'];});return db[_0xee32('0x2e')]['find']({'where':{'id':_0x136bb8[_0xee32('0x45')]['id']}})[_0xee32('0x26')](function(_0x2a95d3){return db['sequelize'][_0xee32('0x66')](function(_0x4e3286){return _0x2a95d3['addTeams'](_0x253b23,{'transaction':_0x4e3286})['then'](function(){return BPromise['each'](_0x24c84d,function(_0x5d2e35){return db[_0xee32('0x55')][_0xee32('0x67')]({'where':{'UserId':_0x5d2e35['id'],'WhatsappQueueId':_0x136bb8[_0xee32('0x45')]['id']},'transaction':_0x4e3286});});})[_0xee32('0x26')](function(){_0x24c84d[_0xee32('0x68')](function(_0x54d46f){socket[_0xee32('0x69')](_0xee32('0x6a'),{'UserId':_0x54d46f['id'],'WhatsappQueueId':_0x2a95d3['id']});});});});});}})[_0xee32('0x26')](respondWithStatusCode(_0x40cac1,null))['catch'](handleError(_0x40cac1,null));};exports[_0xee32('0x6b')]=function(_0x22e8bf,_0x527b54,_0x164370){return db[_0xee32('0x5f')]['findAll']({'where':{'id':_0x22e8bf[_0xee32('0x33')][_0xee32('0x61')]},'attributes':['id'],'include':[{'model':db[_0xee32('0x59')],'as':_0xee32('0x6c'),'attributes':['id'],'raw':!![]}]})[_0xee32('0x26')](handleEntityNotFound(_0x527b54,null))[_0xee32('0x26')](function(_0x1c224f){var _0x157fd4=_[_0xee32('0x2d')](_0x1c224f,'id');var _0x1c7421=[];var _0x4c3b23=[];var _0x50ed6c=squel[_0xee32('0x6d')]();_0x50ed6c[_0xee32('0x6e')](_0xee32('0x6f'))[_0xee32('0x70')](_0xee32('0x71'),'tq')[_0xee32('0x72')](_0xee32('0x73'),'ut',_0xee32('0x74'))[_0xee32('0x3c')](_0xee32('0x75'),_0x22e8bf[_0xee32('0x45')]['id']);for(var _0x4665e5=0x0;_0x4665e5<_0x1c224f[_0xee32('0x38')];_0x4665e5+=0x1){let _0x283c18=_0x1c224f[_0x4665e5];for(var _0x2274fe=0x0;_0x2274fe<_0x283c18['Agents'][_0xee32('0x38')];_0x2274fe+=0x1){let _0x577cb8=_0x283c18['Agents'][_0x2274fe];var _0x34174e=_0x50ed6c[_0xee32('0x76')]();_0x34174e[_0xee32('0x3c')](_0xee32('0x77'),_0x577cb8['id']);_0x4c3b23[_0xee32('0x78')](db[_0xee32('0x79')][_0xee32('0x33')](_0x34174e[_0xee32('0x7a')](),{'type':db['sequelize'][_0xee32('0x7b')][_0xee32('0x7c')]})[_0xee32('0x26')](function(_0x6cf636){if(_0x6cf636[_0xee32('0x38')]===0x1){return _0x577cb8['id'];}else{var _0x5c4b60=_['every'](_[_0xee32('0x2d')](_0x6cf636,_0xee32('0x7d')),function(_0x145344){return _[_0xee32('0x7e')](_0x157fd4,_0x145344);});if(_0x5c4b60){return _0x577cb8['id'];}}}));}}return BPromise[_0xee32('0x7f')](_0x4c3b23)[_0xee32('0x26')](function(_0x4c65c3){_0x1c7421=_(_0x1c7421)[_0xee32('0x80')](_0x4c65c3)[_0xee32('0x81')]()['value']();return db[_0xee32('0x2e')]['find']({'where':{'id':_0x22e8bf[_0xee32('0x45')]['id']}})['then'](function(_0x370ccd){return db[_0xee32('0x79')]['transaction'](function(_0x1c6c74){return _0x370ccd[_0xee32('0x6b')](_0x22e8bf[_0xee32('0x33')]['ids'],{'transaction':_0x1c6c74})[_0xee32('0x26')](function(){if(!_['isEmpty'](_0x1c7421)){return _0x370ccd['removeAgents'](_0x1c7421,{'transaction':_0x1c6c74});}})['then'](function(){_0x1c7421['forEach'](function(_0x40f16c){socket[_0xee32('0x69')]('userWhatsappQueue:remove',{'UserId':_0x40f16c,'WhatsappQueueId':_0x370ccd['id']});});});});});});})[_0xee32('0x26')](respondWithStatusCode(_0x527b54,null))[_0xee32('0x43')](handleError(_0x527b54,null));};exports[_0xee32('0x82')]=function(_0x423065,_0x613de5,_0x152ced){return db[_0xee32('0x2e')][_0xee32('0x48')]({'where':{'id':_0x423065[_0xee32('0x45')]['id']}})['then'](handleEntityNotFound(_0x613de5,null))[_0xee32('0x26')](function(_0x327502){if(_0x327502){return _0x327502[_0xee32('0x82')](_0x423065[_0xee32('0x4a')][_0xee32('0x61')],_[_0xee32('0x83')](_0x423065['body'],[_0xee32('0x61'),'id'])||{})[_0xee32('0x84')](function(_0x32c6aa){for(var _0x18845a=0x0;_0x18845a<_0x423065['body'][_0xee32('0x61')][_0xee32('0x38')];_0x18845a+=0x1){socket[_0xee32('0x69')]('userWhatsappQueue:save',{'UserId':Number(_0x423065[_0xee32('0x4a')][_0xee32('0x61')][_0x18845a]),'WhatsappQueueId':Number(_0x423065[_0xee32('0x45')]['id'])});}return _0x32c6aa;});}})[_0xee32('0x26')](respondWithResult(_0x613de5,null))[_0xee32('0x43')](handleError(_0x613de5,null));};exports[_0xee32('0x85')]=function(_0x426b17,_0x712554,_0x1888b5){return db[_0xee32('0x2e')][_0xee32('0x48')]({'where':{'id':_0x426b17[_0xee32('0x45')]['id']}})[_0xee32('0x26')](handleEntityNotFound(_0x712554,null))[_0xee32('0x26')](function(_0x1ffb46){if(_0x1ffb46){return _0x1ffb46['removeAgents'](_0x426b17[_0xee32('0x33')][_0xee32('0x61')])[_0xee32('0x26')](function(){if(_[_0xee32('0x86')](_0x426b17[_0xee32('0x33')]['ids'])){for(var _0x4fd9d1=0x0;_0x4fd9d1<_0x426b17[_0xee32('0x33')][_0xee32('0x61')][_0xee32('0x38')];_0x4fd9d1+=0x1){socket[_0xee32('0x69')](_0xee32('0x87'),{'UserId':Number(_0x426b17['query']['ids'][_0x4fd9d1]),'WhatsappQueueId':Number(_0x426b17[_0xee32('0x45')]['id'])});}}else{socket[_0xee32('0x69')]('userWhatsappQueue:remove',{'UserId':Number(_0x426b17[_0xee32('0x33')][_0xee32('0x61')]),'WhatsappQueueId':Number(_0x426b17[_0xee32('0x45')]['id'])});}});}})[_0xee32('0x26')](respondWithStatusCode(_0x712554,null))[_0xee32('0x43')](handleError(_0x712554,null));};exports[_0xee32('0x88')]=function(_0x443dc0,_0x1adbe5,_0x41054a){var _0x2f3804={};var _0x3e848a={};var _0x5b61ee;var _0x2f1666;return db[_0xee32('0x2e')][_0xee32('0x54')]({'where':{'id':_0x443dc0[_0xee32('0x45')]['id']}})[_0xee32('0x26')](handleEntityNotFound(_0x1adbe5,null))[_0xee32('0x26')](function(_0x1ba227){if(_0x1ba227){_0x5b61ee=_0x1ba227;_0x3e848a['model']=_[_0xee32('0x34')](db[_0xee32('0x59')][_0xee32('0x2f')]);_0x3e848a['query']=_[_0xee32('0x34')](_0x443dc0[_0xee32('0x33')]);_0x3e848a['filters']=_[_0xee32('0x35')](_0x3e848a[_0xee32('0x32')],_0x3e848a['query']);_0x2f3804[_0xee32('0x37')]=_['intersection'](_0x3e848a[_0xee32('0x32')],qs[_0xee32('0x36')](_0x443dc0['query']['fields']));_0x2f3804[_0xee32('0x37')]=_0x2f3804[_0xee32('0x37')][_0xee32('0x38')]?_0x2f3804['attributes']:_0x3e848a[_0xee32('0x32')];_0x2f3804[_0xee32('0x56')]=qs['sort'](_0x443dc0[_0xee32('0x33')][_0xee32('0x3b')]);_0x2f3804['where']=qs[_0xee32('0x3d')](_['pick'](_0x443dc0[_0xee32('0x33')],_0x3e848a[_0xee32('0x3d')]));if(_0x443dc0[_0xee32('0x33')][_0xee32('0x3e')]){_0x2f3804['where']=_[_0xee32('0x3f')](_0x2f3804[_0xee32('0x3c')],{'$or':_[_0xee32('0x2d')](_0x2f3804[_0xee32('0x37')],function(_0x31528b){var _0x42d685={};_0x42d685[_0x31528b]={'$like':'%'+_0x443dc0[_0xee32('0x33')][_0xee32('0x3e')]+'%'};return _0x42d685;})});}_0x2f3804=_[_0xee32('0x3f')]({},_0x2f3804,_0x443dc0['options']);return _0x5b61ee[_0xee32('0x88')](_0x2f3804);}})[_0xee32('0x26')](function(_0x29e4f6){if(_0x29e4f6){_0x2f1666=_0x29e4f6[_0xee32('0x38')];if(!_0x443dc0[_0xee32('0x33')][_0xee32('0x39')]('nolimit')){_0x2f3804['limit']=qs[_0xee32('0x1f')](_0x443dc0[_0xee32('0x33')][_0xee32('0x1f')]);_0x2f3804[_0xee32('0x1c')]=qs[_0xee32('0x1c')](_0x443dc0[_0xee32('0x33')]['offset']);}return _0x5b61ee[_0xee32('0x88')](_0x2f3804);}})['then'](function(_0x42e9ca){if(_0x42e9ca){return _0x42e9ca?{'count':_0x2f1666,'rows':_0x42e9ca}:null;}})[_0xee32('0x26')](respondWithResult(_0x1adbe5,null))[_0xee32('0x43')](handleError(_0x1adbe5,null));};
\ No newline at end of file
index bf65ed6..45f17e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd28e=['emit','hook','exports','../../mysqldb','WhatsappQueue','setMaxListeners','save','update','remove'];(function(_0x198010,_0x2951e4){var _0x1e1c86=function(_0x356448){while(--_0x356448){_0x198010['push'](_0x198010['shift']());}};_0x1e1c86(++_0x2951e4);}(_0xd28e,0x111));var _0xed28=function(_0x388cc8,_0x1ccf7a){_0x388cc8=_0x388cc8-0x0;var _0x103d9b=_0xd28e[_0x388cc8];return _0x103d9b;};'use strict';var EventEmitter=require('events');var WhatsappQueue=require(_0xed28('0x0'))['db'][_0xed28('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xed28('0x2')](0x0);var events={'afterCreate':_0xed28('0x3'),'afterUpdate':_0xed28('0x4'),'afterDestroy':_0xed28('0x5')};function emitEvent(_0x12e53e){return function(_0x350e12,_0xaea38e,_0x3819f2){WhatsappQueueEvents[_0xed28('0x6')](_0x12e53e+':'+_0x350e12['id'],_0x350e12);WhatsappQueueEvents['emit'](_0x12e53e,_0x350e12);_0x3819f2(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0xed28('0x7')](e,emitEvent(event));}}module[_0xed28('0x8')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x15b3=['save','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','WhatsappQueue','setMaxListeners'];(function(_0x5774be,_0x2259d3){var _0x4914b4=function(_0x1eebc3){while(--_0x1eebc3){_0x5774be['push'](_0x5774be['shift']());}};_0x4914b4(++_0x2259d3);}(_0x15b3,0x1da));var _0x315b=function(_0xd10b13,_0x2ee757){_0xd10b13=_0xd10b13-0x0;var _0x49afbc=_0x15b3[_0xd10b13];return _0x49afbc;};'use strict';var EventEmitter=require('events');var WhatsappQueue=require(_0x315b('0x0'))['db'][_0x315b('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x315b('0x2')](0x0);var events={'afterCreate':_0x315b('0x3'),'afterUpdate':'update','afterDestroy':_0x315b('0x4')};function emitEvent(_0x5a6bba){return function(_0x2d225c,_0x4f159f,_0x57a16c){WhatsappQueueEvents['emit'](_0x5a6bba+':'+_0x2d225c['id'],_0x2d225c);WhatsappQueueEvents[_0x315b('0x5')](_0x5a6bba,_0x2d225c);_0x57a16c(null);};}for(var e in events){if(events[_0x315b('0x6')](e)){var event=events[e];WhatsappQueue[_0x315b('0x7')](e,emitEvent(event));}}module[_0x315b('0x8')]=WhatsappQueueEvents;
\ No newline at end of file
index 89652f1..b7ef6a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ac7=['request-promise','rimraf','../../config/environment','./whatsappQueue.attributes','exports','define','WhatsappQueue','lodash','util','moment'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0x7ac7,0x101));var _0x77ac=function(_0x425b74,_0x42cc50){_0x425b74=_0x425b74-0x0;var _0x12d71c=_0x7ac7[_0x425b74];return _0x12d71c;};'use strict';var _=require(_0x77ac('0x0'));var util=require(_0x77ac('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x77ac('0x2'));var BPromise=require('bluebird');var rp=require(_0x77ac('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x77ac('0x4'));var config=require(_0x77ac('0x5'));var attributes=require(_0x77ac('0x6'));module[_0x77ac('0x7')]=function(_0x58012c,_0x2ca8a6){return _0x58012c[_0x77ac('0x8')](_0x77ac('0x9'),attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0464=['define','WhatsappQueue','whatsapp_queues','lodash','util','api','bluebird','request-promise','path','rimraf','./whatsappQueue.attributes','exports'];(function(_0x240a39,_0x2410c9){var _0x2512e4=function(_0x3e7b4a){while(--_0x3e7b4a){_0x240a39['push'](_0x240a39['shift']());}};_0x2512e4(++_0x2410c9);}(_0x0464,0xe7));var _0x4046=function(_0x3ba8cd,_0x7cb9d5){_0x3ba8cd=_0x3ba8cd-0x0;var _0x5c8b38=_0x0464[_0x3ba8cd];return _0x5c8b38;};'use strict';var _=require(_0x4046('0x0'));var util=require(_0x4046('0x1'));var logger=require('../../config/logger')(_0x4046('0x2'));var moment=require('moment');var BPromise=require(_0x4046('0x3'));var rp=require(_0x4046('0x4'));var fs=require('fs');var path=require(_0x4046('0x5'));var rimraf=require(_0x4046('0x6'));var config=require('../../config/environment');var attributes=require(_0x4046('0x7'));module[_0x4046('0x8')]=function(_0x393ab2,_0x1f73c1){return _0x393ab2[_0x4046('0x9')](_0x4046('0xa'),attributes,{'tableName':_0x4046('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index de28e19..c4cd3bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab61=['redis','./whatsappQueue.socket','register','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetWhatsappQueue','WhatsappQueue','options','where','attributes','limit','map','include','model','debug','ShowWhatsappQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','defaults'];(function(_0x49de99,_0x1a836a){var _0x366016=function(_0x11de2b){while(--_0x11de2b){_0x49de99['push'](_0x49de99['shift']());}};_0x366016(++_0x1a836a);}(_0xab61,0xb1));var _0x1ab6=function(_0x487480,_0x2957ab){_0x487480=_0x487480-0x0;var _0x3de731=_0xab61[_0x487480];return _0x3de731;};'use strict';var _=require(_0x1ab6('0x0'));var util=require(_0x1ab6('0x1'));var moment=require(_0x1ab6('0x2'));var BPromise=require(_0x1ab6('0x3'));var rs=require(_0x1ab6('0x4'));var fs=require('fs');var Redis=require(_0x1ab6('0x5'));var db=require(_0x1ab6('0x6'))['db'];var utils=require(_0x1ab6('0x7'));var logger=require('../../config/logger')(_0x1ab6('0x8'));var config=require(_0x1ab6('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x1ab6('0xa')][_0x1ab6('0xb')]({'port':0x232a});config['redis']=_[_0x1ab6('0xc')](config[_0x1ab6('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x1ab6('0xe'))[_0x1ab6('0xf')](socket);function respondWithRpcPromise(_0x3b6a97,_0x46d3a5,_0x11745f){return new BPromise(function(_0xbb01e5,_0x8cb316){return client[_0x1ab6('0x10')](_0x3b6a97,_0x11745f)[_0x1ab6('0x11')](function(_0x2017d5){logger[_0x1ab6('0x12')](_0x1ab6('0x13'),_0x46d3a5,_0x1ab6('0x14'));logger['debug']('WhatsappQueue,\x20%s,\x20%s,\x20%s',_0x46d3a5,_0x1ab6('0x14'),JSON[_0x1ab6('0x15')](_0x2017d5));if(_0x2017d5['error']){if(_0x2017d5[_0x1ab6('0x16')][_0x1ab6('0x17')]===0x1f4){logger['error'](_0x1ab6('0x13'),_0x46d3a5,_0x2017d5[_0x1ab6('0x16')][_0x1ab6('0x18')]);return _0x8cb316(_0x2017d5[_0x1ab6('0x16')][_0x1ab6('0x18')]);}logger[_0x1ab6('0x16')]('WhatsappQueue,\x20%s,\x20%s',_0x46d3a5,_0x2017d5[_0x1ab6('0x16')][_0x1ab6('0x18')]);return _0xbb01e5(_0x2017d5[_0x1ab6('0x16')]['message']);}else{logger[_0x1ab6('0x12')](_0x1ab6('0x13'),_0x46d3a5,_0x1ab6('0x14'));_0xbb01e5(_0x2017d5[_0x1ab6('0x19')][_0x1ab6('0x18')]);}})[_0x1ab6('0x1a')](function(_0x2135f9){logger[_0x1ab6('0x16')]('WhatsappQueue,\x20%s,\x20%s',_0x46d3a5,_0x2135f9);_0x8cb316(_0x2135f9);});});}exports[_0x1ab6('0x1b')]=function(_0x475a20){var _0x126d63=this;return new Promise(function(_0x6f8630,_0x59b09d){return db[_0x1ab6('0x1c')]['findAll']({'raw':_0x475a20[_0x1ab6('0x1d')]?_0x475a20[_0x1ab6('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x475a20['options']?_0x475a20[_0x1ab6('0x1d')][_0x1ab6('0x1e')]||null:null,'attributes':_0x475a20[_0x1ab6('0x1d')]?_0x475a20[_0x1ab6('0x1d')][_0x1ab6('0x1f')]||null:null,'limit':_0x475a20[_0x1ab6('0x1d')]?_0x475a20[_0x1ab6('0x1d')][_0x1ab6('0x20')]||null:null,'include':_0x475a20[_0x1ab6('0x1d')]?_0x475a20[_0x1ab6('0x1d')]['include']?_[_0x1ab6('0x21')](_0x475a20[_0x1ab6('0x1d')][_0x1ab6('0x22')],function(_0x55e8e5){return{'model':db[_0x55e8e5[_0x1ab6('0x23')]],'as':_0x55e8e5['as'],'attributes':_0x55e8e5['attributes'],'include':_0x55e8e5[_0x1ab6('0x22')]?_[_0x1ab6('0x21')](_0x55e8e5[_0x1ab6('0x22')],function(_0x4edcb4){return{'model':db[_0x4edcb4[_0x1ab6('0x23')]],'as':_0x4edcb4['as'],'attributes':_0x4edcb4['attributes'],'include':_0x4edcb4[_0x1ab6('0x22')]?_[_0x1ab6('0x21')](_0x4edcb4['include'],function(_0x159f4c){return{'model':db[_0x159f4c[_0x1ab6('0x23')]],'as':_0x159f4c['as'],'attributes':_0x159f4c['attributes']};}):[]};}):[]};}):[]:[]})[_0x1ab6('0x11')](function(_0x290c8a){logger[_0x1ab6('0x12')](_0x1ab6('0x1b'),_0x475a20);logger[_0x1ab6('0x24')](_0x1ab6('0x1b'),_0x475a20,JSON[_0x1ab6('0x15')](_0x290c8a));_0x6f8630(_0x290c8a);})[_0x1ab6('0x1a')](function(_0xba388a){logger['error'](_0x1ab6('0x1b'),_0xba388a[_0x1ab6('0x18')],_0x475a20);_0x59b09d(_0x126d63[_0x1ab6('0x16')](0x1f4,_0xba388a['message']));});});};exports[_0x1ab6('0x25')]=function(_0x393118){var _0x3ed732=this;return new Promise(function(_0x539ee5,_0x46f124){return db[_0x1ab6('0x1c')]['find']({'raw':_0x393118[_0x1ab6('0x1d')]?_0x393118[_0x1ab6('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x393118['options']?_0x393118[_0x1ab6('0x1d')][_0x1ab6('0x1e')]||null:null,'attributes':_0x393118['options']?_0x393118[_0x1ab6('0x1d')][_0x1ab6('0x1f')]||null:null,'include':_0x393118[_0x1ab6('0x1d')]?_0x393118['options'][_0x1ab6('0x22')]?_[_0x1ab6('0x21')](_0x393118['options']['include'],function(_0xe8bd51){return{'model':db[_0xe8bd51[_0x1ab6('0x23')]],'as':_0xe8bd51['as'],'attributes':_0xe8bd51[_0x1ab6('0x1f')],'include':_0xe8bd51['include']?_[_0x1ab6('0x21')](_0xe8bd51[_0x1ab6('0x22')],function(_0x262c6f){return{'model':db[_0x262c6f[_0x1ab6('0x23')]],'as':_0x262c6f['as'],'attributes':_0x262c6f['attributes'],'include':_0x262c6f['include']?_['map'](_0x262c6f[_0x1ab6('0x22')],function(_0x4f1379){return{'model':db[_0x4f1379[_0x1ab6('0x23')]],'as':_0x4f1379['as'],'attributes':_0x4f1379['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4b42a4){logger['info']('ShowWhatsappQueue',_0x393118);logger[_0x1ab6('0x24')](_0x1ab6('0x25'),_0x393118,JSON[_0x1ab6('0x15')](_0x4b42a4));_0x539ee5(_0x4b42a4);})[_0x1ab6('0x1a')](function(_0x11dab2){logger[_0x1ab6('0x16')](_0x1ab6('0x25'),_0x11dab2['message'],_0x393118);_0x46f124(_0x3ed732['error'](0x1f4,_0x11dab2[_0x1ab6('0x18')]));});});};
\ No newline at end of file
+var _0xcb4a=['include','model','map','ShowWhatsappQueue','WhatsappQueue','find','raw','where','info','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','./whatsappQueue.socket','then','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','GetWhatsappQueue','findAll','options','attributes'];(function(_0x20a558,_0x160e0e){var _0x53d3f7=function(_0x259bd8){while(--_0x259bd8){_0x20a558['push'](_0x20a558['shift']());}};_0x53d3f7(++_0x160e0e);}(_0xcb4a,0x18a));var _0xacb4=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0xcb4a[_0x543084];return _0x306a57;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xacb4('0x0'));var BPromise=require(_0xacb4('0x1'));var rs=require(_0xacb4('0x2'));var fs=require('fs');var Redis=require(_0xacb4('0x3'));var db=require(_0xacb4('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xacb4('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xacb4('0x6'));var client=jayson[_0xacb4('0x7')][_0xacb4('0x8')]({'port':0x232a});config[_0xacb4('0x9')]=_[_0xacb4('0xa')](config[_0xacb4('0x9')],{'host':_0xacb4('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xacb4('0xc'))['register'](socket);function respondWithRpcPromise(_0x293e3e,_0x50412e,_0x1cbcd5){return new BPromise(function(_0x593807,_0x56a55e){return client['request'](_0x293e3e,_0x1cbcd5)[_0xacb4('0xd')](function(_0x4b98f2){logger['info'](_0xacb4('0xe'),_0x50412e,_0xacb4('0xf'));logger[_0xacb4('0x10')]('WhatsappQueue,\x20%s,\x20%s,\x20%s',_0x50412e,'request\x20sent',JSON[_0xacb4('0x11')](_0x4b98f2));if(_0x4b98f2[_0xacb4('0x12')]){if(_0x4b98f2['error'][_0xacb4('0x13')]===0x1f4){logger[_0xacb4('0x12')]('WhatsappQueue,\x20%s,\x20%s',_0x50412e,_0x4b98f2['error'][_0xacb4('0x14')]);return _0x56a55e(_0x4b98f2['error'][_0xacb4('0x14')]);}logger[_0xacb4('0x12')](_0xacb4('0xe'),_0x50412e,_0x4b98f2[_0xacb4('0x12')][_0xacb4('0x14')]);return _0x593807(_0x4b98f2[_0xacb4('0x12')]['message']);}else{logger['info'](_0xacb4('0xe'),_0x50412e,_0xacb4('0xf'));_0x593807(_0x4b98f2['result'][_0xacb4('0x14')]);}})[_0xacb4('0x15')](function(_0x56d971){logger[_0xacb4('0x12')]('WhatsappQueue,\x20%s,\x20%s',_0x50412e,_0x56d971);_0x56a55e(_0x56d971);});});}exports[_0xacb4('0x16')]=function(_0x55f9b6){var _0x433e58=this;return new Promise(function(_0x5b35c5,_0xe5a091){return db['WhatsappQueue'][_0xacb4('0x17')]({'raw':_0x55f9b6['options']?_0x55f9b6[_0xacb4('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x55f9b6['options']?_0x55f9b6['options']['where']||null:null,'attributes':_0x55f9b6[_0xacb4('0x18')]?_0x55f9b6[_0xacb4('0x18')][_0xacb4('0x19')]||null:null,'limit':_0x55f9b6['options']?_0x55f9b6[_0xacb4('0x18')]['limit']||null:null,'include':_0x55f9b6[_0xacb4('0x18')]?_0x55f9b6['options'][_0xacb4('0x1a')]?_['map'](_0x55f9b6[_0xacb4('0x18')][_0xacb4('0x1a')],function(_0x3baf6b){return{'model':db[_0x3baf6b[_0xacb4('0x1b')]],'as':_0x3baf6b['as'],'attributes':_0x3baf6b[_0xacb4('0x19')],'include':_0x3baf6b[_0xacb4('0x1a')]?_[_0xacb4('0x1c')](_0x3baf6b[_0xacb4('0x1a')],function(_0x370a0e){return{'model':db[_0x370a0e[_0xacb4('0x1b')]],'as':_0x370a0e['as'],'attributes':_0x370a0e['attributes'],'include':_0x370a0e['include']?_[_0xacb4('0x1c')](_0x370a0e[_0xacb4('0x1a')],function(_0x3c6769){return{'model':db[_0x3c6769[_0xacb4('0x1b')]],'as':_0x3c6769['as'],'attributes':_0x3c6769[_0xacb4('0x19')]};}):[]};}):[]};}):[]:[]})[_0xacb4('0xd')](function(_0x5aeeba){logger['info']('GetWhatsappQueue',_0x55f9b6);logger[_0xacb4('0x10')](_0xacb4('0x16'),_0x55f9b6,JSON['stringify'](_0x5aeeba));_0x5b35c5(_0x5aeeba);})[_0xacb4('0x15')](function(_0x414322){logger[_0xacb4('0x12')]('GetWhatsappQueue',_0x414322[_0xacb4('0x14')],_0x55f9b6);_0xe5a091(_0x433e58['error'](0x1f4,_0x414322[_0xacb4('0x14')]));});});};exports[_0xacb4('0x1d')]=function(_0x4de68f){var _0x13ea99=this;return new Promise(function(_0x14ca5b,_0x4da91a){return db[_0xacb4('0x1e')][_0xacb4('0x1f')]({'raw':_0x4de68f['options']?_0x4de68f['options'][_0xacb4('0x20')]===undefined?!![]:![]:!![],'where':_0x4de68f[_0xacb4('0x18')]?_0x4de68f[_0xacb4('0x18')][_0xacb4('0x21')]||null:null,'attributes':_0x4de68f[_0xacb4('0x18')]?_0x4de68f[_0xacb4('0x18')][_0xacb4('0x19')]||null:null,'include':_0x4de68f[_0xacb4('0x18')]?_0x4de68f[_0xacb4('0x18')]['include']?_[_0xacb4('0x1c')](_0x4de68f['options']['include'],function(_0x57e184){return{'model':db[_0x57e184[_0xacb4('0x1b')]],'as':_0x57e184['as'],'attributes':_0x57e184[_0xacb4('0x19')],'include':_0x57e184[_0xacb4('0x1a')]?_['map'](_0x57e184[_0xacb4('0x1a')],function(_0x1d64da){return{'model':db[_0x1d64da['model']],'as':_0x1d64da['as'],'attributes':_0x1d64da[_0xacb4('0x19')],'include':_0x1d64da['include']?_['map'](_0x1d64da['include'],function(_0x55eb76){return{'model':db[_0x55eb76[_0xacb4('0x1b')]],'as':_0x55eb76['as'],'attributes':_0x55eb76[_0xacb4('0x19')]};}):[]};}):[]};}):[]:[]})[_0xacb4('0xd')](function(_0x5c5a5e){logger[_0xacb4('0x22')]('ShowWhatsappQueue',_0x4de68f);logger[_0xacb4('0x10')](_0xacb4('0x1d'),_0x4de68f,JSON[_0xacb4('0x11')](_0x5c5a5e));_0x14ca5b(_0x5c5a5e);})[_0xacb4('0x15')](function(_0x4b7d81){logger[_0xacb4('0x12')](_0xacb4('0x1d'),_0x4b7d81[_0xacb4('0x14')],_0x4de68f);_0x4da91a(_0x13ea99[_0xacb4('0x12')](0x1f4,_0x4b7d81[_0xacb4('0x14')]));});});};
\ No newline at end of file
index 508dace..2f0e96f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb38=['emit','register','whatsappQueue:','./whatsappQueue.events'];(function(_0x34d856,_0x53891c){var _0x5944e9=function(_0x3cf43){while(--_0x3cf43){_0x34d856['push'](_0x34d856['shift']());}};_0x5944e9(++_0x53891c);}(_0xfb38,0x17f));var _0x8fb3=function(_0x20abea,_0x48795e){_0x20abea=_0x20abea-0x0;var _0x1382f7=_0xfb38[_0x20abea];return _0x1382f7;};'use strict';var WhatsappQueueEvents=require(_0x8fb3('0x0'));var events=['save','remove','update'];function createListener(_0x58cc41,_0x2956ee){return function(_0x475f0f){_0x2956ee[_0x8fb3('0x1')](_0x58cc41,_0x475f0f);};}function removeListener(_0x246e30,_0x2bed07){return function(){WhatsappQueueEvents['removeListener'](_0x246e30,_0x2bed07);};}exports[_0x8fb3('0x2')]=function(_0x36237a){for(var _0x2a77d5=0x0,_0x492415=events['length'];_0x2a77d5<_0x492415;_0x2a77d5++){var _0x3eb3f2=events[_0x2a77d5];var _0x1e950b=createListener(_0x8fb3('0x3')+_0x3eb3f2,_0x36237a);WhatsappQueueEvents['on'](_0x3eb3f2,_0x1e950b);}};
\ No newline at end of file
+var _0x4714=['emit','register','whatsappQueue:','save','remove','update'];(function(_0x564f6a,_0x97c67b){var _0x21f5cf=function(_0x5825da){while(--_0x5825da){_0x564f6a['push'](_0x564f6a['shift']());}};_0x21f5cf(++_0x97c67b);}(_0x4714,0x183));var _0x4471=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x4714[_0x4b369d];return _0x571a98;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=[_0x4471('0x0'),_0x4471('0x1'),_0x4471('0x2')];function createListener(_0x376185,_0x38fd29){return function(_0x32317f){_0x38fd29[_0x4471('0x3')](_0x376185,_0x32317f);};}function removeListener(_0xa20c80,_0x5476ce){return function(){WhatsappQueueEvents['removeListener'](_0xa20c80,_0x5476ce);};}exports[_0x4471('0x4')]=function(_0x341b2e){for(var _0x441dd5=0x0,_0x3187bf=events['length'];_0x441dd5<_0x3187bf;_0x441dd5++){var _0x864b73=events[_0x441dd5];var _0x4809d1=createListener(_0x4471('0x5')+_0x864b73,_0x341b2e);WhatsappQueueEvents['on'](_0x864b73,_0x4809d1);}};
\ No newline at end of file
index baca646..d999af2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcae5=['fs-extra','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','index','/describe','/:id','show','post','isAuthenticated','create','put','update','delete','destroy','util','path','connect-timeout','Router'];(function(_0xbf5269,_0x23ccb4){var _0x1b79fa=function(_0x286998){while(--_0x286998){_0xbf5269['push'](_0xbf5269['shift']());}};_0x1b79fa(++_0x23ccb4);}(_0xcae5,0x164));var _0x5cae=function(_0x1152f4,_0x3f15ee){_0x1152f4=_0x1152f4-0x0;var _0x5e1e1e=_0xcae5[_0x1152f4];return _0x5e1e1e;};'use strict';var multer=require('multer');var util=require(_0x5cae('0x0'));var path=require(_0x5cae('0x1'));var timeout=require(_0x5cae('0x2'));var express=require('express');var router=express[_0x5cae('0x3')]();var fs_extra=require(_0x5cae('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5cae('0x5'));var config=require(_0x5cae('0x6'));var controller=require(_0x5cae('0x7'));router[_0x5cae('0x8')]('/',auth['isAuthenticated'](),controller[_0x5cae('0x9')]);router[_0x5cae('0x8')](_0x5cae('0xa'),auth['isAuthenticated'](),controller['describe']);router['get'](_0x5cae('0xb'),auth['isAuthenticated'](),controller[_0x5cae('0xc')]);router[_0x5cae('0xd')]('/',auth[_0x5cae('0xe')](),controller[_0x5cae('0xf')]);router[_0x5cae('0x10')](_0x5cae('0xb'),auth[_0x5cae('0xe')](),controller[_0x5cae('0x11')]);router[_0x5cae('0x12')](_0x5cae('0xb'),auth[_0x5cae('0xe')](),controller[_0x5cae('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xbde4=['express','Router','fs-extra','isAuthenticated','index','get','/:id','show','post','create','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xbde4,0x1a5));var _0x4bde=function(_0x194018,_0xffeeed){_0x194018=_0x194018-0x0;var _0x15cb9c=_0xbde4[_0x194018];return _0x15cb9c;};'use strict';var multer=require(_0x4bde('0x0'));var util=require(_0x4bde('0x1'));var path=require(_0x4bde('0x2'));var timeout=require(_0x4bde('0x3'));var express=require(_0x4bde('0x4'));var router=express[_0x4bde('0x5')]();var fs_extra=require(_0x4bde('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./whatsappQueueReport.controller');router['get']('/',auth[_0x4bde('0x7')](),controller[_0x4bde('0x8')]);router['get']('/describe',auth[_0x4bde('0x7')](),controller['describe']);router[_0x4bde('0x9')](_0x4bde('0xa'),auth[_0x4bde('0x7')](),controller[_0x4bde('0xb')]);router[_0x4bde('0xc')]('/',auth[_0x4bde('0x7')](),controller[_0x4bde('0xd')]);router['put']('/:id',auth[_0x4bde('0x7')](),controller['update']);router[_0x4bde('0xe')](_0x4bde('0xa'),auth[_0x4bde('0x7')](),controller[_0x4bde('0xf')]);module[_0x4bde('0x10')]=router;
\ No newline at end of file
index db2c6d1..f35126e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x2338cc,_0x56eefb){var _0x110030=function(_0x594d87){while(--_0x594d87){_0x2338cc['push'](_0x2338cc['shift']());}};_0x110030(++_0x56eefb);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
+var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x1ad28b,_0x795242){var _0x1967e0=function(_0x1f7eb8){while(--_0x1f7eb8){_0x1ad28b['push'](_0x1ad28b['shift']());}};_0x1967e0(++_0x795242);}(_0x7a54,0x106));var _0x47a5=function(_0x205162,_0x4628de){_0x205162=_0x205162-0x0;var _0x1191e5=_0x7a54[_0x205162];return _0x1191e5;};'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
index b284299..38d74fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb94=['length','nolimit','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','fs-extra','squel','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','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','WhatsappQueueReport','rawAttributes','type','model','query','keys','intersection','attributes','fields'];(function(_0x52ef0c,_0x3e16c4){var _0x2e864d=function(_0xb5d376){while(--_0xb5d376){_0x52ef0c['push'](_0x52ef0c['shift']());}};_0x2e864d(++_0x3e16c4);}(_0xdb94,0xab));var _0x4db9=function(_0x32595e,_0x1f66aa){_0x32595e=_0x32595e-0x0;var _0x2298c5=_0xdb94[_0x32595e];return _0x2298c5;};'use strict';var emlformat=require(_0x4db9('0x0'));var rimraf=require(_0x4db9('0x1'));var zipdir=require(_0x4db9('0x2'));var jsonpatch=require(_0x4db9('0x3'));var rp=require(_0x4db9('0x4'));var moment=require('moment');var BPromise=require(_0x4db9('0x5'));var Mustache=require(_0x4db9('0x6'));var util=require('util');var path=require('path');var sox=require(_0x4db9('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4db9('0x8'));var _=require('lodash');var squel=require(_0x4db9('0x9'));var crypto=require('crypto');var jsforce=require(_0x4db9('0xa'));var deskjs=require(_0x4db9('0xb'));var toCsv=require(_0x4db9('0xc'));var querystring=require(_0x4db9('0xd'));var Papa=require(_0x4db9('0xe'));var Redis=require(_0x4db9('0xf'));var authService=require(_0x4db9('0x10'));var qs=require(_0x4db9('0x11'));var as=require(_0x4db9('0x12'));var hardwareService=require(_0x4db9('0x13'));var logger=require(_0x4db9('0x14'))('api');var utils=require(_0x4db9('0x15'));var config=require(_0x4db9('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x31222b,_0x5e644c){_0x5e644c=_0x5e644c||0xcc;return function(_0x571685){if(_0x571685){return _0x31222b[_0x4db9('0x17')](_0x5e644c);}return _0x31222b[_0x4db9('0x18')](_0x5e644c)['end']();};}function respondWithResult(_0xd37d63,_0x1f9638){_0x1f9638=_0x1f9638||0xc8;return function(_0x452896){if(_0x452896){return _0xd37d63[_0x4db9('0x18')](_0x1f9638)['json'](_0x452896);}};}function respondWithFilteredResult(_0x5e04ab,_0x102274){return function(_0x34de1a){if(_0x34de1a){var _0x4a037f=typeof _0x102274[_0x4db9('0x19')]===_0x4db9('0x1a')&&typeof _0x102274['limit']==='undefined';var _0x250a80=_0x34de1a[_0x4db9('0x1b')];var _0x462af3=_0x4a037f?0x0:_0x102274[_0x4db9('0x19')];var _0x1d3c33=_0x4a037f?_0x34de1a['count']:_0x102274[_0x4db9('0x19')]+_0x102274[_0x4db9('0x1c')];var _0x11012e;if(_0x1d3c33>=_0x250a80){_0x1d3c33=_0x250a80;_0x11012e=0xc8;}else{_0x11012e=0xce;}_0x5e04ab['status'](_0x11012e);return _0x5e04ab[_0x4db9('0x1d')](_0x4db9('0x1e'),_0x462af3+'-'+_0x1d3c33+'/'+_0x250a80)[_0x4db9('0x1f')](_0x34de1a);}return null;};}function patchUpdates(_0x4c92e8){return function(_0x46b522){try{jsonpatch[_0x4db9('0x20')](_0x46b522,_0x4c92e8,!![]);}catch(_0x4553c2){return BPromise[_0x4db9('0x21')](_0x4553c2);}return _0x46b522[_0x4db9('0x22')]();};}function saveUpdates(_0x159d9b,_0x3585d5){return function(_0x5aef3b){if(_0x5aef3b){return _0x5aef3b[_0x4db9('0x23')](_0x159d9b)[_0x4db9('0x24')](function(_0xcde40c){return _0xcde40c;});}return null;};}function removeEntity(_0x319475,_0x4aaa84){return function(_0x213daa){if(_0x213daa){return _0x213daa[_0x4db9('0x25')]()['then'](function(){_0x319475[_0x4db9('0x18')](0xcc)[_0x4db9('0x26')]();});}};}function handleEntityNotFound(_0x2987c6,_0x4dbb1b){return function(_0x3c8237){if(!_0x3c8237){_0x2987c6[_0x4db9('0x17')](0x194);}return _0x3c8237;};}function handleError(_0x43b95e,_0x2d330e){_0x2d330e=_0x2d330e||0x1f4;return function(_0x3f9f7e){logger[_0x4db9('0x27')](_0x3f9f7e[_0x4db9('0x28')]);if(_0x3f9f7e[_0x4db9('0x29')]){delete _0x3f9f7e[_0x4db9('0x29')];}_0x43b95e[_0x4db9('0x18')](_0x2d330e)[_0x4db9('0x2a')](_0x3f9f7e);};}exports[_0x4db9('0x2b')]=function(_0x2d646d,_0x20f133){var _0x583861={},_0x5031fe={},_0x3951b2={'count':0x0,'rows':[]};var _0x331279=_[_0x4db9('0x2c')](db[_0x4db9('0x2d')][_0x4db9('0x2e')],function(_0x459131){return{'name':_0x459131['fieldName'],'type':_0x459131[_0x4db9('0x2f')]['key']};});_0x5031fe[_0x4db9('0x30')]=_[_0x4db9('0x2c')](_0x331279,_0x4db9('0x29'));_0x5031fe[_0x4db9('0x31')]=_[_0x4db9('0x32')](_0x2d646d['query']);_0x5031fe['filters']=_[_0x4db9('0x33')](_0x5031fe['model'],_0x5031fe[_0x4db9('0x31')]);_0x583861[_0x4db9('0x34')]=_['intersection'](_0x5031fe[_0x4db9('0x30')],qs[_0x4db9('0x35')](_0x2d646d[_0x4db9('0x31')]['fields']));_0x583861[_0x4db9('0x34')]=_0x583861['attributes'][_0x4db9('0x36')]?_0x583861[_0x4db9('0x34')]:_0x5031fe[_0x4db9('0x30')];if(!_0x2d646d['query']['hasOwnProperty'](_0x4db9('0x37'))){_0x583861[_0x4db9('0x1c')]=qs[_0x4db9('0x1c')](_0x2d646d[_0x4db9('0x31')][_0x4db9('0x1c')]);_0x583861[_0x4db9('0x19')]=qs[_0x4db9('0x19')](_0x2d646d[_0x4db9('0x31')][_0x4db9('0x19')]);}_0x583861['order']=qs[_0x4db9('0x38')](_0x2d646d[_0x4db9('0x31')][_0x4db9('0x38')]);_0x583861[_0x4db9('0x39')]=qs['filters'](_[_0x4db9('0x3a')](_0x2d646d[_0x4db9('0x31')],_0x5031fe[_0x4db9('0x3b')]),_0x331279);if(_0x2d646d['query'][_0x4db9('0x3c')]){_0x583861[_0x4db9('0x39')]=_[_0x4db9('0x3d')](_0x583861[_0x4db9('0x39')],{'$or':_['map'](_0x331279,function(_0x5a78b4){if(_0x5a78b4[_0x4db9('0x2f')]!==_0x4db9('0x3e')){var _0x32e62b={};_0x32e62b[_0x5a78b4[_0x4db9('0x29')]]={'$like':'%'+_0x2d646d[_0x4db9('0x31')]['filter']+'%'};return _0x32e62b;}})});}_0x583861=_[_0x4db9('0x3d')]({},_0x583861,_0x2d646d[_0x4db9('0x3f')]);var _0x23affc={'where':_0x583861[_0x4db9('0x39')]};return db[_0x4db9('0x2d')]['count'](_0x23affc)[_0x4db9('0x24')](function(_0x324765){_0x3951b2[_0x4db9('0x1b')]=_0x324765;if(_0x2d646d['query'][_0x4db9('0x40')]){_0x583861[_0x4db9('0x41')]=[{'all':!![]}];}return db[_0x4db9('0x2d')][_0x4db9('0x42')](_0x583861);})[_0x4db9('0x24')](function(_0x24aa2a){_0x3951b2[_0x4db9('0x43')]=_0x24aa2a;return _0x3951b2;})[_0x4db9('0x24')](respondWithFilteredResult(_0x20f133,_0x583861))[_0x4db9('0x44')](handleError(_0x20f133,null));};exports[_0x4db9('0x45')]=function(_0x4bb740,_0x56bd68){var _0x48aaf5={'raw':!![],'where':{'id':_0x4bb740[_0x4db9('0x46')]['id']}},_0x22a021={};_0x22a021['model']=_[_0x4db9('0x32')](db[_0x4db9('0x2d')]['rawAttributes']);_0x22a021['query']=_[_0x4db9('0x32')](_0x4bb740['query']);_0x22a021[_0x4db9('0x3b')]=_[_0x4db9('0x33')](_0x22a021['model'],_0x22a021[_0x4db9('0x31')]);_0x48aaf5[_0x4db9('0x34')]=_['intersection'](_0x22a021[_0x4db9('0x30')],qs[_0x4db9('0x35')](_0x4bb740[_0x4db9('0x31')]['fields']));_0x48aaf5['attributes']=_0x48aaf5[_0x4db9('0x34')][_0x4db9('0x36')]?_0x48aaf5[_0x4db9('0x34')]:_0x22a021[_0x4db9('0x30')];if(_0x4bb740[_0x4db9('0x31')][_0x4db9('0x40')]){_0x48aaf5[_0x4db9('0x41')]=[{'all':!![]}];}_0x48aaf5=_[_0x4db9('0x3d')]({},_0x48aaf5,_0x4bb740[_0x4db9('0x3f')]);return db[_0x4db9('0x2d')][_0x4db9('0x47')](_0x48aaf5)[_0x4db9('0x24')](handleEntityNotFound(_0x56bd68,null))[_0x4db9('0x24')](respondWithResult(_0x56bd68,null))['catch'](handleError(_0x56bd68,null));};exports[_0x4db9('0x48')]=function(_0x2faacf,_0x3852f0){return db[_0x4db9('0x2d')][_0x4db9('0x48')](_0x2faacf[_0x4db9('0x49')],{})[_0x4db9('0x24')](respondWithResult(_0x3852f0,0xc9))[_0x4db9('0x44')](handleError(_0x3852f0,null));};exports[_0x4db9('0x23')]=function(_0x2d6094,_0x10dccb){if(_0x2d6094['body']['id']){delete _0x2d6094['body']['id'];}return db[_0x4db9('0x2d')][_0x4db9('0x47')]({'where':{'id':_0x2d6094[_0x4db9('0x46')]['id']}})[_0x4db9('0x24')](handleEntityNotFound(_0x10dccb,null))[_0x4db9('0x24')](saveUpdates(_0x2d6094[_0x4db9('0x49')],null))[_0x4db9('0x24')](respondWithResult(_0x10dccb,null))[_0x4db9('0x44')](handleError(_0x10dccb,null));};exports['destroy']=function(_0xd8eae3,_0xcb832e){return db[_0x4db9('0x2d')][_0x4db9('0x47')]({'where':{'id':_0xd8eae3[_0x4db9('0x46')]['id']}})[_0x4db9('0x24')](handleEntityNotFound(_0xcb832e,null))[_0x4db9('0x24')](removeEntity(_0xcb832e,null))[_0x4db9('0x44')](handleError(_0xcb832e,null));};exports['describe']=function(_0x45bc79,_0xd6701a){return db[_0x4db9('0x2d')][_0x4db9('0x4a')]()[_0x4db9('0x24')](respondWithResult(_0xd6701a,null))[_0x4db9('0x44')](handleError(_0xd6701a,null));};
\ No newline at end of file
+var _0x63a5=['filter','merge','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','ejs','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','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','WhatsappQueueReport','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x84d7ea,_0xbc6898){var _0x4c2827=function(_0x148dfa){while(--_0x148dfa){_0x84d7ea['push'](_0x84d7ea['shift']());}};_0x4c2827(++_0xbc6898);}(_0x63a5,0x18e));var _0x563a=function(_0x20a558,_0x160e0e){_0x20a558=_0x20a558-0x0;var _0x53d3f7=_0x63a5[_0x20a558];return _0x53d3f7;};'use strict';var emlformat=require(_0x563a('0x0'));var rimraf=require(_0x563a('0x1'));var zipdir=require(_0x563a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x563a('0x3'));var moment=require('moment');var BPromise=require(_0x563a('0x4'));var Mustache=require(_0x563a('0x5'));var util=require(_0x563a('0x6'));var path=require(_0x563a('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x563a('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x563a('0x9'));var squel=require(_0x563a('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x563a('0xb'));var toCsv=require(_0x563a('0xc'));var querystring=require(_0x563a('0xd'));var Papa=require(_0x563a('0xe'));var Redis=require(_0x563a('0xf'));var authService=require(_0x563a('0x10'));var qs=require(_0x563a('0x11'));var as=require(_0x563a('0x12'));var hardwareService=require(_0x563a('0x13'));var logger=require(_0x563a('0x14'))(_0x563a('0x15'));var utils=require(_0x563a('0x16'));var config=require(_0x563a('0x17'));var licenseUtil=require(_0x563a('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x61d5b2,_0x214f42){_0x214f42=_0x214f42||0xcc;return function(_0x10de2e){if(_0x10de2e){return _0x61d5b2[_0x563a('0x19')](_0x214f42);}return _0x61d5b2[_0x563a('0x1a')](_0x214f42)[_0x563a('0x1b')]();};}function respondWithResult(_0x50396b,_0x2cf052){_0x2cf052=_0x2cf052||0xc8;return function(_0x3045ac){if(_0x3045ac){return _0x50396b[_0x563a('0x1a')](_0x2cf052)[_0x563a('0x1c')](_0x3045ac);}};}function respondWithFilteredResult(_0x5a2980,_0x504cb7){return function(_0x414535){if(_0x414535){var _0x2ad667=typeof _0x504cb7['offset']===_0x563a('0x1d')&&typeof _0x504cb7[_0x563a('0x1e')]===_0x563a('0x1d');var _0x9c2f77=_0x414535['count'];var _0x598693=_0x2ad667?0x0:_0x504cb7[_0x563a('0x1f')];var _0x422aaf=_0x2ad667?_0x414535[_0x563a('0x20')]:_0x504cb7['offset']+_0x504cb7['limit'];var _0x52b99a;if(_0x422aaf>=_0x9c2f77){_0x422aaf=_0x9c2f77;_0x52b99a=0xc8;}else{_0x52b99a=0xce;}_0x5a2980['status'](_0x52b99a);return _0x5a2980[_0x563a('0x21')](_0x563a('0x22'),_0x598693+'-'+_0x422aaf+'/'+_0x9c2f77)[_0x563a('0x1c')](_0x414535);}return null;};}function patchUpdates(_0x43b7a8){return function(_0x562fce){try{jsonpatch['apply'](_0x562fce,_0x43b7a8,!![]);}catch(_0x3930f0){return BPromise[_0x563a('0x23')](_0x3930f0);}return _0x562fce[_0x563a('0x24')]();};}function saveUpdates(_0x2beccb,_0x1bf502){return function(_0x2dc7e2){if(_0x2dc7e2){return _0x2dc7e2[_0x563a('0x25')](_0x2beccb)[_0x563a('0x26')](function(_0x506491){return _0x506491;});}return null;};}function removeEntity(_0xd59ba8,_0x5422f6){return function(_0x44e2c1){if(_0x44e2c1){return _0x44e2c1[_0x563a('0x27')]()[_0x563a('0x26')](function(){_0xd59ba8[_0x563a('0x1a')](0xcc)[_0x563a('0x1b')]();});}};}function handleEntityNotFound(_0x1682ee,_0x3642b3){return function(_0x173990){if(!_0x173990){_0x1682ee['sendStatus'](0x194);}return _0x173990;};}function handleError(_0x146ea0,_0x2b688e){_0x2b688e=_0x2b688e||0x1f4;return function(_0x2311f2){logger[_0x563a('0x28')](_0x2311f2[_0x563a('0x29')]);if(_0x2311f2[_0x563a('0x2a')]){delete _0x2311f2[_0x563a('0x2a')];}_0x146ea0[_0x563a('0x1a')](_0x2b688e)[_0x563a('0x2b')](_0x2311f2);};}exports[_0x563a('0x2c')]=function(_0x1a69d5,_0x24d1a8){var _0x1bdfb0={},_0x7696c2={},_0x579cb5={'count':0x0,'rows':[]};var _0x43379c=_[_0x563a('0x2d')](db[_0x563a('0x2e')]['rawAttributes'],function(_0x1e8d43){return{'name':_0x1e8d43[_0x563a('0x2f')],'type':_0x1e8d43[_0x563a('0x30')][_0x563a('0x31')]};});_0x7696c2[_0x563a('0x32')]=_[_0x563a('0x2d')](_0x43379c,_0x563a('0x2a'));_0x7696c2['query']=_[_0x563a('0x33')](_0x1a69d5[_0x563a('0x34')]);_0x7696c2[_0x563a('0x35')]=_[_0x563a('0x36')](_0x7696c2[_0x563a('0x32')],_0x7696c2['query']);_0x1bdfb0['attributes']=_['intersection'](_0x7696c2['model'],qs[_0x563a('0x37')](_0x1a69d5[_0x563a('0x34')][_0x563a('0x37')]));_0x1bdfb0[_0x563a('0x38')]=_0x1bdfb0[_0x563a('0x38')][_0x563a('0x39')]?_0x1bdfb0['attributes']:_0x7696c2['model'];if(!_0x1a69d5[_0x563a('0x34')][_0x563a('0x3a')](_0x563a('0x3b'))){_0x1bdfb0[_0x563a('0x1e')]=qs[_0x563a('0x1e')](_0x1a69d5[_0x563a('0x34')][_0x563a('0x1e')]);_0x1bdfb0[_0x563a('0x1f')]=qs[_0x563a('0x1f')](_0x1a69d5[_0x563a('0x34')][_0x563a('0x1f')]);}_0x1bdfb0[_0x563a('0x3c')]=qs[_0x563a('0x3d')](_0x1a69d5[_0x563a('0x34')][_0x563a('0x3d')]);_0x1bdfb0[_0x563a('0x3e')]=qs['filters'](_[_0x563a('0x3f')](_0x1a69d5[_0x563a('0x34')],_0x7696c2[_0x563a('0x35')]),_0x43379c);if(_0x1a69d5['query'][_0x563a('0x40')]){_0x1bdfb0['where']=_[_0x563a('0x41')](_0x1bdfb0[_0x563a('0x3e')],{'$or':_['map'](_0x43379c,function(_0x52e4a2){if(_0x52e4a2[_0x563a('0x30')]!=='VIRTUAL'){var _0x13b795={};_0x13b795[_0x52e4a2[_0x563a('0x2a')]]={'$like':'%'+_0x1a69d5[_0x563a('0x34')][_0x563a('0x40')]+'%'};return _0x13b795;}})});}_0x1bdfb0=_['merge']({},_0x1bdfb0,_0x1a69d5['options']);var _0x615d2e={'where':_0x1bdfb0['where']};return db[_0x563a('0x2e')][_0x563a('0x20')](_0x615d2e)[_0x563a('0x26')](function(_0x9c392c){_0x579cb5[_0x563a('0x20')]=_0x9c392c;if(_0x1a69d5[_0x563a('0x34')][_0x563a('0x42')]){_0x1bdfb0[_0x563a('0x43')]=[{'all':!![]}];}return db['WhatsappQueueReport'][_0x563a('0x44')](_0x1bdfb0);})['then'](function(_0x20c142){_0x579cb5[_0x563a('0x45')]=_0x20c142;return _0x579cb5;})[_0x563a('0x26')](respondWithFilteredResult(_0x24d1a8,_0x1bdfb0))[_0x563a('0x46')](handleError(_0x24d1a8,null));};exports['show']=function(_0x4b3d38,_0x54ac1e){var _0x2221d4={'raw':!![],'where':{'id':_0x4b3d38[_0x563a('0x47')]['id']}},_0x1255da={};_0x1255da[_0x563a('0x32')]=_[_0x563a('0x33')](db[_0x563a('0x2e')][_0x563a('0x48')]);_0x1255da[_0x563a('0x34')]=_[_0x563a('0x33')](_0x4b3d38[_0x563a('0x34')]);_0x1255da[_0x563a('0x35')]=_[_0x563a('0x36')](_0x1255da[_0x563a('0x32')],_0x1255da[_0x563a('0x34')]);_0x2221d4[_0x563a('0x38')]=_[_0x563a('0x36')](_0x1255da[_0x563a('0x32')],qs[_0x563a('0x37')](_0x4b3d38[_0x563a('0x34')]['fields']));_0x2221d4['attributes']=_0x2221d4[_0x563a('0x38')][_0x563a('0x39')]?_0x2221d4[_0x563a('0x38')]:_0x1255da[_0x563a('0x32')];if(_0x4b3d38[_0x563a('0x34')][_0x563a('0x42')]){_0x2221d4[_0x563a('0x43')]=[{'all':!![]}];}_0x2221d4=_[_0x563a('0x41')]({},_0x2221d4,_0x4b3d38['options']);return db['WhatsappQueueReport'][_0x563a('0x49')](_0x2221d4)[_0x563a('0x26')](handleEntityNotFound(_0x54ac1e,null))[_0x563a('0x26')](respondWithResult(_0x54ac1e,null))[_0x563a('0x46')](handleError(_0x54ac1e,null));};exports[_0x563a('0x4a')]=function(_0x3f2c5d,_0x2689b5){return db[_0x563a('0x2e')]['create'](_0x3f2c5d[_0x563a('0x4b')],{})[_0x563a('0x26')](respondWithResult(_0x2689b5,0xc9))['catch'](handleError(_0x2689b5,null));};exports[_0x563a('0x25')]=function(_0x5a063a,_0x3ea787){if(_0x5a063a[_0x563a('0x4b')]['id']){delete _0x5a063a[_0x563a('0x4b')]['id'];}return db['WhatsappQueueReport'][_0x563a('0x49')]({'where':{'id':_0x5a063a[_0x563a('0x47')]['id']}})[_0x563a('0x26')](handleEntityNotFound(_0x3ea787,null))[_0x563a('0x26')](saveUpdates(_0x5a063a[_0x563a('0x4b')],null))[_0x563a('0x26')](respondWithResult(_0x3ea787,null))[_0x563a('0x46')](handleError(_0x3ea787,null));};exports[_0x563a('0x27')]=function(_0x277d54,_0x2008d4){return db[_0x563a('0x2e')][_0x563a('0x49')]({'where':{'id':_0x277d54[_0x563a('0x47')]['id']}})['then'](handleEntityNotFound(_0x2008d4,null))['then'](removeEntity(_0x2008d4,null))[_0x563a('0x46')](handleError(_0x2008d4,null));};exports[_0x563a('0x4c')]=function(_0x143daa,_0x4a807f){return db['WhatsappQueueReport'][_0x563a('0x4c')]()[_0x563a('0x26')](respondWithResult(_0x4a807f,null))['catch'](handleError(_0x4a807f,null));};
\ No newline at end of file
index e3416d3..bd7415c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b81=['path','rimraf','../../config/environment','./whatsappQueueReport.attributes','exports','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','../../config/logger','moment','bluebird','request-promise'];(function(_0x5a2d38,_0x5a7d09){var _0xb5f96a=function(_0x325555){while(--_0x325555){_0x5a2d38['push'](_0x5a2d38['shift']());}};_0xb5f96a(++_0x5a7d09);}(_0x2b81,0x18f));var _0x12b8=function(_0x25507f,_0x57f1bb){_0x25507f=_0x25507f-0x0;var _0x1e051f=_0x2b81[_0x25507f];return _0x1e051f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x12b8('0x0'))('api');var moment=require(_0x12b8('0x1'));var BPromise=require(_0x12b8('0x2'));var rp=require(_0x12b8('0x3'));var fs=require('fs');var path=require(_0x12b8('0x4'));var rimraf=require(_0x12b8('0x5'));var config=require(_0x12b8('0x6'));var attributes=require(_0x12b8('0x7'));module[_0x12b8('0x8')]=function(_0x480873,_0x1aacfd){return _0x480873[_0x12b8('0x9')](_0x12b8('0xa'),attributes,{'tableName':_0x12b8('0xb'),'paranoid':![],'indexes':[{'name':_0x12b8('0xc'),'fields':[_0x12b8('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x35ec=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./whatsappQueueReport.attributes','exports','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash'];(function(_0x1ceba7,_0x4bf430){var _0x2771c1=function(_0x2184f7){while(--_0x2184f7){_0x1ceba7['push'](_0x1ceba7['shift']());}};_0x2771c1(++_0x4bf430);}(_0x35ec,0x158));var _0xc35e=function(_0x1f1cd9,_0x19aa82){_0x1f1cd9=_0x1f1cd9-0x0;var _0x18839c=_0x35ec[_0x1f1cd9];return _0x18839c;};'use strict';var _=require(_0xc35e('0x0'));var util=require(_0xc35e('0x1'));var logger=require(_0xc35e('0x2'))(_0xc35e('0x3'));var moment=require(_0xc35e('0x4'));var BPromise=require(_0xc35e('0x5'));var rp=require(_0xc35e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc35e('0x7'));var config=require(_0xc35e('0x8'));var attributes=require(_0xc35e('0x9'));module[_0xc35e('0xa')]=function(_0xe66804,_0x5b93d9){return _0xe66804[_0xc35e('0xb')](_0xc35e('0xc'),attributes,{'tableName':_0xc35e('0xd'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xc35e('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 827411e..d953874 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x250a=['../../config/environment','jayson/promise','client','http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','raw','UpdateWhatsappQueueReport','update','where','limit','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x547798,_0x155a92){var _0x9d29c7=function(_0x1404fa){while(--_0x1404fa){_0x547798['push'](_0x547798['shift']());}};_0x9d29c7(++_0x155a92);}(_0x250a,0x122));var _0xa250=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x250a[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0xa250('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xa250('0x1'));var rs=require(_0xa250('0x2'));var fs=require('fs');var Redis=require(_0xa250('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xa250('0x4'));var logger=require(_0xa250('0x5'))(_0xa250('0x6'));var config=require(_0xa250('0x7'));var jayson=require(_0xa250('0x8'));var client=jayson[_0xa250('0x9')][_0xa250('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x338322,_0x51f068,_0x16fcd0){return new BPromise(function(_0x244328,_0x532308){return client[_0xa250('0xb')](_0x338322,_0x16fcd0)[_0xa250('0xc')](function(_0x233186){logger[_0xa250('0xd')](_0xa250('0xe'),_0x51f068,'request\x20sent');logger[_0xa250('0xf')](_0xa250('0x10'),_0x51f068,_0xa250('0x11'),JSON[_0xa250('0x12')](_0x233186));if(_0x233186[_0xa250('0x13')]){if(_0x233186['error']['code']===0x1f4){logger[_0xa250('0x13')](_0xa250('0xe'),_0x51f068,_0x233186[_0xa250('0x13')]['message']);return _0x532308(_0x233186[_0xa250('0x13')][_0xa250('0x14')]);}logger[_0xa250('0x13')]('WhatsappQueueReport,\x20%s,\x20%s',_0x51f068,_0x233186[_0xa250('0x13')][_0xa250('0x14')]);return _0x244328(_0x233186[_0xa250('0x13')][_0xa250('0x14')]);}else{logger[_0xa250('0xd')](_0xa250('0xe'),_0x51f068,_0xa250('0x11'));_0x244328(_0x233186[_0xa250('0x15')][_0xa250('0x14')]);}})[_0xa250('0x16')](function(_0x1277b0){logger[_0xa250('0x13')](_0xa250('0xe'),_0x51f068,_0x1277b0);_0x532308(_0x1277b0);});});}exports[_0xa250('0x17')]=function(_0x51084c){var _0x5d35bc=this;return new Promise(function(_0x3e1162,_0x31d64d){return db[_0xa250('0x18')][_0xa250('0x19')](_0x51084c[_0xa250('0x1a')],{'raw':_0x51084c[_0xa250('0x1b')]?_0x51084c[_0xa250('0x1b')][_0xa250('0x1c')]===undefined?!![]:![]:!![]})[_0xa250('0xc')](function(_0x4e2c39){logger[_0xa250('0xd')]('CreateWhatsappQueueReport',_0x51084c);logger['debug'](_0xa250('0x17'),_0x51084c,JSON['stringify'](_0x4e2c39));_0x3e1162(_0x4e2c39);})[_0xa250('0x16')](function(_0x53294a){logger[_0xa250('0x13')](_0xa250('0x17'),_0x53294a['message'],_0x51084c);_0x31d64d(_0x5d35bc[_0xa250('0x13')](0x1f4,_0x53294a['message']));});});};exports[_0xa250('0x1d')]=function(_0x449138){var _0x267aa2=this;return new Promise(function(_0x1ad17e,_0x3ab0ae){return db[_0xa250('0x18')][_0xa250('0x1e')](_0x449138[_0xa250('0x1a')],{'raw':_0x449138[_0xa250('0x1b')]?_0x449138[_0xa250('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x449138[_0xa250('0x1b')]?_0x449138[_0xa250('0x1b')][_0xa250('0x1f')]||null:null,'attributes':_0x449138[_0xa250('0x1b')]?_0x449138[_0xa250('0x1b')]['attributes']||null:null,'limit':_0x449138[_0xa250('0x1b')]?_0x449138['options'][_0xa250('0x20')]||null:null})['then'](function(_0x2b8251){logger['info']('UpdateWhatsappQueueReport',_0x449138);logger[_0xa250('0xf')](_0xa250('0x1d'),_0x449138,JSON[_0xa250('0x12')](_0x2b8251));_0x1ad17e(_0x2b8251);})[_0xa250('0x16')](function(_0x2a699e){logger[_0xa250('0x13')](_0xa250('0x1d'),_0x2a699e[_0xa250('0x14')],_0x449138);_0x3ab0ae(_0x267aa2[_0xa250('0x13')](0x1f4,_0x2a699e[_0xa250('0x14')]));});});};
\ No newline at end of file
+var _0x5623=['debug','UpdateWhatsappQueueReport','update','limit','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','WhatsappQueueReport,\x20%s,\x20%s','message','info','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','raw'];(function(_0x303bab,_0x43a66a){var _0x55cf8b=function(_0x3d9ceb){while(--_0x3d9ceb){_0x303bab['push'](_0x303bab['shift']());}};_0x55cf8b(++_0x43a66a);}(_0x5623,0x104));var _0x3562=function(_0x7b4dfe,_0x439541){_0x7b4dfe=_0x7b4dfe-0x0;var _0x57e192=_0x5623[_0x7b4dfe];return _0x57e192;};'use strict';var _=require(_0x3562('0x0'));var util=require(_0x3562('0x1'));var moment=require('moment');var BPromise=require(_0x3562('0x2'));var rs=require(_0x3562('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3562('0x4'))['db'];var utils=require(_0x3562('0x5'));var logger=require(_0x3562('0x6'))(_0x3562('0x7'));var config=require(_0x3562('0x8'));var jayson=require(_0x3562('0x9'));var client=jayson['client'][_0x3562('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x44ff5d,_0x187921,_0x47ad1c){return new BPromise(function(_0x3b5c17,_0x5b3fc7){return client['request'](_0x44ff5d,_0x47ad1c)[_0x3562('0xb')](function(_0x4b4479){logger['info']('WhatsappQueueReport,\x20%s,\x20%s',_0x187921,'request\x20sent');logger['debug'](_0x3562('0xc'),_0x187921,_0x3562('0xd'),JSON[_0x3562('0xe')](_0x4b4479));if(_0x4b4479[_0x3562('0xf')]){if(_0x4b4479['error'][_0x3562('0x10')]===0x1f4){logger[_0x3562('0xf')]('WhatsappQueueReport,\x20%s,\x20%s',_0x187921,_0x4b4479[_0x3562('0xf')]['message']);return _0x5b3fc7(_0x4b4479['error']['message']);}logger[_0x3562('0xf')](_0x3562('0x11'),_0x187921,_0x4b4479[_0x3562('0xf')][_0x3562('0x12')]);return _0x3b5c17(_0x4b4479[_0x3562('0xf')][_0x3562('0x12')]);}else{logger[_0x3562('0x13')]('WhatsappQueueReport,\x20%s,\x20%s',_0x187921,_0x3562('0xd'));_0x3b5c17(_0x4b4479[_0x3562('0x14')][_0x3562('0x12')]);}})[_0x3562('0x15')](function(_0x199b29){logger['error']('WhatsappQueueReport,\x20%s,\x20%s',_0x187921,_0x199b29);_0x5b3fc7(_0x199b29);});});}exports[_0x3562('0x16')]=function(_0x4b0af2){var _0x3e894e=this;return new Promise(function(_0x1a37f4,_0x221960){return db[_0x3562('0x17')][_0x3562('0x18')](_0x4b0af2[_0x3562('0x19')],{'raw':_0x4b0af2['options']?_0x4b0af2[_0x3562('0x1a')][_0x3562('0x1b')]===undefined?!![]:![]:!![]})[_0x3562('0xb')](function(_0x22a703){logger[_0x3562('0x13')]('CreateWhatsappQueueReport',_0x4b0af2);logger[_0x3562('0x1c')](_0x3562('0x16'),_0x4b0af2,JSON[_0x3562('0xe')](_0x22a703));_0x1a37f4(_0x22a703);})[_0x3562('0x15')](function(_0x55d8e1){logger[_0x3562('0xf')](_0x3562('0x16'),_0x55d8e1[_0x3562('0x12')],_0x4b0af2);_0x221960(_0x3e894e[_0x3562('0xf')](0x1f4,_0x55d8e1[_0x3562('0x12')]));});});};exports[_0x3562('0x1d')]=function(_0x45171d){var _0x5421b1=this;return new Promise(function(_0x1f2098,_0x526ffb){return db['WhatsappQueueReport'][_0x3562('0x1e')](_0x45171d[_0x3562('0x19')],{'raw':_0x45171d[_0x3562('0x1a')]?_0x45171d[_0x3562('0x1a')][_0x3562('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x45171d[_0x3562('0x1a')]?_0x45171d[_0x3562('0x1a')]['where']||null:null,'attributes':_0x45171d[_0x3562('0x1a')]?_0x45171d[_0x3562('0x1a')]['attributes']||null:null,'limit':_0x45171d[_0x3562('0x1a')]?_0x45171d['options'][_0x3562('0x1f')]||null:null})['then'](function(_0x3e54cf){logger[_0x3562('0x13')](_0x3562('0x1d'),_0x45171d);logger[_0x3562('0x1c')](_0x3562('0x1d'),_0x45171d,JSON[_0x3562('0xe')](_0x3e54cf));_0x1f2098(_0x3e54cf);})[_0x3562('0x15')](function(_0xd45af6){logger['error'](_0x3562('0x1d'),_0xd45af6[_0x3562('0x12')],_0x45171d);_0x526ffb(_0x5421b1['error'](0x1f4,_0xd45af6[_0x3562('0x12')]));});});};
\ No newline at end of file
index 87474e9..ab6d5cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13d3=['../../components/interaction/service','./whatsappTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','put','delete','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x152953,_0x46ff51){var _0x3dbc2c=function(_0x3e1d59){while(--_0x3e1d59){_0x152953['push'](_0x152953['shift']());}};_0x3dbc2c(++_0x46ff51);}(_0x13d3,0x13c));var _0x313d=function(_0x2361b1,_0x38fdb8){_0x2361b1=_0x2361b1-0x0;var _0x125803=_0x13d3[_0x2361b1];return _0x125803;};'use strict';var multer=require(_0x313d('0x0'));var util=require(_0x313d('0x1'));var path=require('path');var timeout=require(_0x313d('0x2'));var express=require(_0x313d('0x3'));var router=express[_0x313d('0x4')]();var fs_extra=require(_0x313d('0x5'));var auth=require(_0x313d('0x6'));var interaction=require(_0x313d('0x7'));var config=require('../../config/environment');var controller=require(_0x313d('0x8'));router['get']('/',auth[_0x313d('0x9')](),controller[_0x313d('0xa')]);router[_0x313d('0xb')](_0x313d('0xc'),auth[_0x313d('0x9')](),controller[_0x313d('0xd')]);router[_0x313d('0xb')](_0x313d('0xe'),auth['isAuthenticated'](),controller[_0x313d('0xf')]);router[_0x313d('0x10')]('/',auth[_0x313d('0x9')](),controller['create']);router[_0x313d('0x11')](_0x313d('0xe'),auth[_0x313d('0x9')](),controller['update']);router[_0x313d('0x12')]('/:id',auth[_0x313d('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x09e6=['update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','isAuthenticated','index','get','describe','/:id','post','create','put'];(function(_0x45d2fc,_0x487f93){var _0x4e2cd7=function(_0x58a8b5){while(--_0x58a8b5){_0x45d2fc['push'](_0x45d2fc['shift']());}};_0x4e2cd7(++_0x487f93);}(_0x09e6,0x6c));var _0x609e=function(_0x24aae7,_0x263838){_0x24aae7=_0x24aae7-0x0;var _0xa5a84a=_0x09e6[_0x24aae7];return _0xa5a84a;};'use strict';var multer=require(_0x609e('0x0'));var util=require(_0x609e('0x1'));var path=require(_0x609e('0x2'));var timeout=require('connect-timeout');var express=require(_0x609e('0x3'));var router=express[_0x609e('0x4')]();var fs_extra=require(_0x609e('0x5'));var auth=require(_0x609e('0x6'));var interaction=require(_0x609e('0x7'));var config=require(_0x609e('0x8'));var controller=require(_0x609e('0x9'));router['get']('/',auth[_0x609e('0xa')](),controller[_0x609e('0xb')]);router[_0x609e('0xc')]('/describe',auth[_0x609e('0xa')](),controller[_0x609e('0xd')]);router['get'](_0x609e('0xe'),auth[_0x609e('0xa')](),controller['show']);router[_0x609e('0xf')]('/',auth[_0x609e('0xa')](),controller[_0x609e('0x10')]);router[_0x609e('0x11')](_0x609e('0xe'),auth[_0x609e('0xa')](),controller[_0x609e('0x12')]);router[_0x609e('0x13')](_0x609e('0xe'),auth[_0x609e('0xa')](),controller[_0x609e('0x14')]);module['exports']=router;
\ No newline at end of file
index 588da61..3ea159d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40ac=['queue','DATE','sequelize','STRING','ENUM','account','agent'];(function(_0x904f36,_0x1f2eac){var _0xc2645c=function(_0x40e08b){while(--_0x40e08b){_0x904f36['push'](_0x904f36['shift']());}};_0xc2645c(++_0x1f2eac);}(_0x40ac,0x1de));var _0xc40a=function(_0x353598,_0x33e234){_0x353598=_0x353598-0x0;var _0x4cf82e=_0x40ac[_0x353598];return _0x4cf82e;};'use strict';var Sequelize=require(_0xc40a('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xc40a('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xc40a('0x2')](_0xc40a('0x3'),_0xc40a('0x4'),_0xc40a('0x5')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xc40a('0x6')]}};
\ No newline at end of file
+var _0x6836=['STRING','account','queue','sequelize','exports'];(function(_0x33048a,_0x19e683){var _0x459b03=function(_0x31d4ed){while(--_0x31d4ed){_0x33048a['push'](_0x33048a['shift']());}};_0x459b03(++_0x19e683);}(_0x6836,0x1c0));var _0x6683=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0x6836[_0x580576];return _0x3f55a0;};'use strict';var Sequelize=require(_0x6683('0x0'));module[_0x6683('0x1')]={'uniqueid':{'type':Sequelize[_0x6683('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x6683('0x3'),'agent',_0x6683('0x4')),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
index e5cecdf..8d54661 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bb0=['send','index','map','WhatsappTransferReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','findAll','catch','show','params','keys','length','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','destroy','then','sendStatus','error','name'];(function(_0x248e45,_0x3c527c){var _0x11583e=function(_0x2f41e8){while(--_0x2f41e8){_0x248e45['push'](_0x248e45['shift']());}};_0x11583e(++_0x3c527c);}(_0x4bb0,0x73));var _0x04bb=function(_0x3a6eba,_0x7db8ac){_0x3a6eba=_0x3a6eba-0x0;var _0x531c0a=_0x4bb0[_0x3a6eba];return _0x531c0a;};'use strict';var emlformat=require(_0x04bb('0x0'));var rimraf=require(_0x04bb('0x1'));var zipdir=require(_0x04bb('0x2'));var jsonpatch=require(_0x04bb('0x3'));var rp=require(_0x04bb('0x4'));var moment=require(_0x04bb('0x5'));var BPromise=require(_0x04bb('0x6'));var Mustache=require(_0x04bb('0x7'));var util=require(_0x04bb('0x8'));var path=require(_0x04bb('0x9'));var sox=require(_0x04bb('0xa'));var csv=require('to-csv');var ejs=require(_0x04bb('0xb'));var fs=require('fs');var fs_extra=require(_0x04bb('0xc'));var _=require(_0x04bb('0xd'));var squel=require(_0x04bb('0xe'));var crypto=require(_0x04bb('0xf'));var jsforce=require(_0x04bb('0x10'));var deskjs=require(_0x04bb('0x11'));var toCsv=require(_0x04bb('0x12'));var querystring=require(_0x04bb('0x13'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x04bb('0x14'));var as=require(_0x04bb('0x15'));var hardwareService=require(_0x04bb('0x16'));var logger=require(_0x04bb('0x17'))('api');var utils=require(_0x04bb('0x18'));var config=require(_0x04bb('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x04bb('0x1a'))['db'];function respondWithStatusCode(_0x1a0370,_0x33f38c){_0x33f38c=_0x33f38c||0xcc;return function(_0x2e7c81){if(_0x2e7c81){return _0x1a0370['sendStatus'](_0x33f38c);}return _0x1a0370[_0x04bb('0x1b')](_0x33f38c)[_0x04bb('0x1c')]();};}function respondWithResult(_0x26c986,_0x4e20fb){_0x4e20fb=_0x4e20fb||0xc8;return function(_0x57d3ab){if(_0x57d3ab){return _0x26c986[_0x04bb('0x1b')](_0x4e20fb)[_0x04bb('0x1d')](_0x57d3ab);}};}function respondWithFilteredResult(_0x3ea048,_0xba2415){return function(_0x41be00){if(_0x41be00){var _0x4f2ec7=typeof _0xba2415[_0x04bb('0x1e')]===_0x04bb('0x1f')&&typeof _0xba2415[_0x04bb('0x20')]==='undefined';var _0x4e4be8=_0x41be00[_0x04bb('0x21')];var _0xa1b844=_0x4f2ec7?0x0:_0xba2415['offset'];var _0x3ce992=_0x4f2ec7?_0x41be00[_0x04bb('0x21')]:_0xba2415[_0x04bb('0x1e')]+_0xba2415['limit'];var _0x3db2dc;if(_0x3ce992>=_0x4e4be8){_0x3ce992=_0x4e4be8;_0x3db2dc=0xc8;}else{_0x3db2dc=0xce;}_0x3ea048['status'](_0x3db2dc);return _0x3ea048[_0x04bb('0x22')](_0x04bb('0x23'),_0xa1b844+'-'+_0x3ce992+'/'+_0x4e4be8)['json'](_0x41be00);}return null;};}function patchUpdates(_0x4689a0){return function(_0x44ce75){try{jsonpatch['apply'](_0x44ce75,_0x4689a0,!![]);}catch(_0x4539e4){return BPromise[_0x04bb('0x24')](_0x4539e4);}return _0x44ce75['save']();};}function saveUpdates(_0x38f872,_0x188c74){return function(_0xdd6527){if(_0xdd6527){return _0xdd6527[_0x04bb('0x25')](_0x38f872)['then'](function(_0x116c51){return _0x116c51;});}return null;};}function removeEntity(_0x2043d2,_0x5d960a){return function(_0x21bfc4){if(_0x21bfc4){return _0x21bfc4[_0x04bb('0x26')]()[_0x04bb('0x27')](function(){_0x2043d2['status'](0xcc)[_0x04bb('0x1c')]();});}};}function handleEntityNotFound(_0x83bb7,_0x529228){return function(_0x4dd82c){if(!_0x4dd82c){_0x83bb7[_0x04bb('0x28')](0x194);}return _0x4dd82c;};}function handleError(_0x839022,_0x19845a){_0x19845a=_0x19845a||0x1f4;return function(_0x2f3a14){logger[_0x04bb('0x29')](_0x2f3a14['stack']);if(_0x2f3a14['name']){delete _0x2f3a14[_0x04bb('0x2a')];}_0x839022[_0x04bb('0x1b')](_0x19845a)[_0x04bb('0x2b')](_0x2f3a14);};}exports[_0x04bb('0x2c')]=function(_0x1fe962,_0x3a6100){var _0x58c64f={},_0x5ba7bf={},_0x33b688={'count':0x0,'rows':[]};var _0x5364ea=_[_0x04bb('0x2d')](db[_0x04bb('0x2e')][_0x04bb('0x2f')],function(_0x137f65){return{'name':_0x137f65[_0x04bb('0x30')],'type':_0x137f65[_0x04bb('0x31')][_0x04bb('0x32')]};});_0x5ba7bf[_0x04bb('0x33')]=_['map'](_0x5364ea,_0x04bb('0x2a'));_0x5ba7bf[_0x04bb('0x34')]=_['keys'](_0x1fe962[_0x04bb('0x34')]);_0x5ba7bf[_0x04bb('0x35')]=_[_0x04bb('0x36')](_0x5ba7bf[_0x04bb('0x33')],_0x5ba7bf[_0x04bb('0x34')]);_0x58c64f[_0x04bb('0x37')]=_[_0x04bb('0x36')](_0x5ba7bf[_0x04bb('0x33')],qs[_0x04bb('0x38')](_0x1fe962['query'][_0x04bb('0x38')]));_0x58c64f[_0x04bb('0x37')]=_0x58c64f[_0x04bb('0x37')]['length']?_0x58c64f[_0x04bb('0x37')]:_0x5ba7bf['model'];if(!_0x1fe962[_0x04bb('0x34')][_0x04bb('0x39')](_0x04bb('0x3a'))){_0x58c64f[_0x04bb('0x20')]=qs['limit'](_0x1fe962[_0x04bb('0x34')][_0x04bb('0x20')]);_0x58c64f[_0x04bb('0x1e')]=qs['offset'](_0x1fe962[_0x04bb('0x34')][_0x04bb('0x1e')]);}_0x58c64f[_0x04bb('0x3b')]=qs[_0x04bb('0x3c')](_0x1fe962[_0x04bb('0x34')][_0x04bb('0x3c')]);_0x58c64f['where']=qs[_0x04bb('0x35')](_[_0x04bb('0x3d')](_0x1fe962['query'],_0x5ba7bf[_0x04bb('0x35')]),_0x5364ea);if(_0x1fe962[_0x04bb('0x34')]['filter']){_0x58c64f[_0x04bb('0x3e')]=_[_0x04bb('0x3f')](_0x58c64f[_0x04bb('0x3e')],{'$or':_[_0x04bb('0x2d')](_0x5364ea,function(_0x39bff5){if(_0x39bff5[_0x04bb('0x31')]!==_0x04bb('0x40')){var _0x107566={};_0x107566[_0x39bff5[_0x04bb('0x2a')]]={'$like':'%'+_0x1fe962['query'][_0x04bb('0x41')]+'%'};return _0x107566;}})});}_0x58c64f=_['merge']({},_0x58c64f,_0x1fe962[_0x04bb('0x42')]);var _0x2b6c10={'where':_0x58c64f[_0x04bb('0x3e')]};return db[_0x04bb('0x2e')][_0x04bb('0x21')](_0x2b6c10)[_0x04bb('0x27')](function(_0x15f68e){_0x33b688['count']=_0x15f68e;if(_0x1fe962[_0x04bb('0x34')][_0x04bb('0x43')]){_0x58c64f['include']=[{'all':!![]}];}return db[_0x04bb('0x2e')][_0x04bb('0x44')](_0x58c64f);})[_0x04bb('0x27')](function(_0x517d3e){_0x33b688['rows']=_0x517d3e;return _0x33b688;})['then'](respondWithFilteredResult(_0x3a6100,_0x58c64f))[_0x04bb('0x45')](handleError(_0x3a6100,null));};exports[_0x04bb('0x46')]=function(_0x5a8a30,_0x4a67fc){var _0x5c8947={'raw':!![],'where':{'id':_0x5a8a30[_0x04bb('0x47')]['id']}},_0xc7b774={};_0xc7b774[_0x04bb('0x33')]=_[_0x04bb('0x48')](db['WhatsappTransferReport'][_0x04bb('0x2f')]);_0xc7b774['query']=_[_0x04bb('0x48')](_0x5a8a30[_0x04bb('0x34')]);_0xc7b774['filters']=_['intersection'](_0xc7b774[_0x04bb('0x33')],_0xc7b774[_0x04bb('0x34')]);_0x5c8947[_0x04bb('0x37')]=_[_0x04bb('0x36')](_0xc7b774[_0x04bb('0x33')],qs[_0x04bb('0x38')](_0x5a8a30['query'][_0x04bb('0x38')]));_0x5c8947[_0x04bb('0x37')]=_0x5c8947['attributes'][_0x04bb('0x49')]?_0x5c8947[_0x04bb('0x37')]:_0xc7b774[_0x04bb('0x33')];if(_0x5a8a30['query'][_0x04bb('0x43')]){_0x5c8947[_0x04bb('0x4a')]=[{'all':!![]}];}_0x5c8947=_[_0x04bb('0x3f')]({},_0x5c8947,_0x5a8a30['options']);return db[_0x04bb('0x2e')][_0x04bb('0x4b')](_0x5c8947)[_0x04bb('0x27')](handleEntityNotFound(_0x4a67fc,null))[_0x04bb('0x27')](respondWithResult(_0x4a67fc,null))[_0x04bb('0x45')](handleError(_0x4a67fc,null));};exports['create']=function(_0x2d294b,_0x1380d0){return db[_0x04bb('0x2e')][_0x04bb('0x4c')](_0x2d294b[_0x04bb('0x4d')],{})[_0x04bb('0x27')](respondWithResult(_0x1380d0,0xc9))['catch'](handleError(_0x1380d0,null));};exports[_0x04bb('0x25')]=function(_0x27b773,_0x3cfdf3){if(_0x27b773[_0x04bb('0x4d')]['id']){delete _0x27b773[_0x04bb('0x4d')]['id'];}return db[_0x04bb('0x2e')][_0x04bb('0x4b')]({'where':{'id':_0x27b773[_0x04bb('0x47')]['id']}})[_0x04bb('0x27')](handleEntityNotFound(_0x3cfdf3,null))[_0x04bb('0x27')](saveUpdates(_0x27b773['body'],null))[_0x04bb('0x27')](respondWithResult(_0x3cfdf3,null))[_0x04bb('0x45')](handleError(_0x3cfdf3,null));};exports[_0x04bb('0x26')]=function(_0x982a2a,_0x1bf9b5){return db[_0x04bb('0x2e')][_0x04bb('0x4b')]({'where':{'id':_0x982a2a[_0x04bb('0x47')]['id']}})[_0x04bb('0x27')](handleEntityNotFound(_0x1bf9b5,null))[_0x04bb('0x27')](removeEntity(_0x1bf9b5,null))[_0x04bb('0x45')](handleError(_0x1bf9b5,null));};exports[_0x04bb('0x4e')]=function(_0x119993,_0x16ce77){return db[_0x04bb('0x2e')][_0x04bb('0x4e')]()[_0x04bb('0x27')](respondWithResult(_0x16ce77,null))['catch'](handleError(_0x16ce77,null));};
\ No newline at end of file
+var _0xeb1c=['where','filters','filter','merge','VIRTUAL','options','includeAll','findAll','catch','params','include','create','body','update','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','Content-Range','apply','save','then','destroy','error','stack','name','send','WhatsappTransferReport','rawAttributes','fieldName','type','model','map','query','keys','intersection','attributes','length','nolimit','order','sort'];(function(_0x333fa3,_0x2563d4){var _0x538c5a=function(_0x46a1d1){while(--_0x46a1d1){_0x333fa3['push'](_0x333fa3['shift']());}};_0x538c5a(++_0x2563d4);}(_0xeb1c,0xa0));var _0xceb1=function(_0xd78858,_0x4ea8b0){_0xd78858=_0xd78858-0x0;var _0x40267f=_0xeb1c[_0xd78858];return _0x40267f;};'use strict';var emlformat=require(_0xceb1('0x0'));var rimraf=require(_0xceb1('0x1'));var zipdir=require(_0xceb1('0x2'));var jsonpatch=require(_0xceb1('0x3'));var rp=require('request-promise');var moment=require(_0xceb1('0x4'));var BPromise=require(_0xceb1('0x5'));var Mustache=require(_0xceb1('0x6'));var util=require(_0xceb1('0x7'));var path=require(_0xceb1('0x8'));var sox=require('sox');var csv=require(_0xceb1('0x9'));var ejs=require(_0xceb1('0xa'));var fs=require('fs');var fs_extra=require(_0xceb1('0xb'));var _=require(_0xceb1('0xc'));var squel=require(_0xceb1('0xd'));var crypto=require(_0xceb1('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xceb1('0xf'));var toCsv=require('to-csv');var querystring=require(_0xceb1('0x10'));var Papa=require('papaparse');var Redis=require(_0xceb1('0x11'));var authService=require(_0xceb1('0x12'));var qs=require(_0xceb1('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xceb1('0x14'));var logger=require(_0xceb1('0x15'))('api');var utils=require(_0xceb1('0x16'));var config=require(_0xceb1('0x17'));var licenseUtil=require(_0xceb1('0x18'));var db=require(_0xceb1('0x19'))['db'];function respondWithStatusCode(_0x1abe6a,_0x2f7cac){_0x2f7cac=_0x2f7cac||0xcc;return function(_0x489337){if(_0x489337){return _0x1abe6a[_0xceb1('0x1a')](_0x2f7cac);}return _0x1abe6a[_0xceb1('0x1b')](_0x2f7cac)[_0xceb1('0x1c')]();};}function respondWithResult(_0x485619,_0x78cc6e){_0x78cc6e=_0x78cc6e||0xc8;return function(_0x3e8ac6){if(_0x3e8ac6){return _0x485619['status'](_0x78cc6e)[_0xceb1('0x1d')](_0x3e8ac6);}};}function respondWithFilteredResult(_0x584507,_0x2bcb8c){return function(_0x282931){if(_0x282931){var _0x41e920=typeof _0x2bcb8c[_0xceb1('0x1e')]==='undefined'&&typeof _0x2bcb8c[_0xceb1('0x1f')]==='undefined';var _0x16f741=_0x282931[_0xceb1('0x20')];var _0x2b2120=_0x41e920?0x0:_0x2bcb8c[_0xceb1('0x1e')];var _0x1a8160=_0x41e920?_0x282931[_0xceb1('0x20')]:_0x2bcb8c[_0xceb1('0x1e')]+_0x2bcb8c[_0xceb1('0x1f')];var _0x287c6e;if(_0x1a8160>=_0x16f741){_0x1a8160=_0x16f741;_0x287c6e=0xc8;}else{_0x287c6e=0xce;}_0x584507[_0xceb1('0x1b')](_0x287c6e);return _0x584507['set'](_0xceb1('0x21'),_0x2b2120+'-'+_0x1a8160+'/'+_0x16f741)[_0xceb1('0x1d')](_0x282931);}return null;};}function patchUpdates(_0x283d62){return function(_0x14a8af){try{jsonpatch[_0xceb1('0x22')](_0x14a8af,_0x283d62,!![]);}catch(_0x36db98){return BPromise['reject'](_0x36db98);}return _0x14a8af[_0xceb1('0x23')]();};}function saveUpdates(_0x2351ab,_0x23bfc3){return function(_0x175ff9){if(_0x175ff9){return _0x175ff9['update'](_0x2351ab)[_0xceb1('0x24')](function(_0x151327){return _0x151327;});}return null;};}function removeEntity(_0x4d6497,_0x42e8cf){return function(_0x169174){if(_0x169174){return _0x169174[_0xceb1('0x25')]()['then'](function(){_0x4d6497[_0xceb1('0x1b')](0xcc)[_0xceb1('0x1c')]();});}};}function handleEntityNotFound(_0x1061f9,_0x16469d){return function(_0x5d96f2){if(!_0x5d96f2){_0x1061f9[_0xceb1('0x1a')](0x194);}return _0x5d96f2;};}function handleError(_0x49eb9e,_0x114b44){_0x114b44=_0x114b44||0x1f4;return function(_0x358d00){logger[_0xceb1('0x26')](_0x358d00[_0xceb1('0x27')]);if(_0x358d00[_0xceb1('0x28')]){delete _0x358d00[_0xceb1('0x28')];}_0x49eb9e['status'](_0x114b44)[_0xceb1('0x29')](_0x358d00);};}exports['index']=function(_0x5bf03d,_0x510c25){var _0x174cda={},_0x4b4f36={},_0x7b4b3d={'count':0x0,'rows':[]};var _0x3a5a15=_['map'](db[_0xceb1('0x2a')][_0xceb1('0x2b')],function(_0x2e5cd3){return{'name':_0x2e5cd3[_0xceb1('0x2c')],'type':_0x2e5cd3[_0xceb1('0x2d')]['key']};});_0x4b4f36[_0xceb1('0x2e')]=_[_0xceb1('0x2f')](_0x3a5a15,_0xceb1('0x28'));_0x4b4f36[_0xceb1('0x30')]=_[_0xceb1('0x31')](_0x5bf03d[_0xceb1('0x30')]);_0x4b4f36['filters']=_[_0xceb1('0x32')](_0x4b4f36[_0xceb1('0x2e')],_0x4b4f36['query']);_0x174cda[_0xceb1('0x33')]=_[_0xceb1('0x32')](_0x4b4f36[_0xceb1('0x2e')],qs['fields'](_0x5bf03d[_0xceb1('0x30')]['fields']));_0x174cda[_0xceb1('0x33')]=_0x174cda[_0xceb1('0x33')][_0xceb1('0x34')]?_0x174cda[_0xceb1('0x33')]:_0x4b4f36[_0xceb1('0x2e')];if(!_0x5bf03d[_0xceb1('0x30')]['hasOwnProperty'](_0xceb1('0x35'))){_0x174cda[_0xceb1('0x1f')]=qs[_0xceb1('0x1f')](_0x5bf03d[_0xceb1('0x30')][_0xceb1('0x1f')]);_0x174cda[_0xceb1('0x1e')]=qs['offset'](_0x5bf03d[_0xceb1('0x30')][_0xceb1('0x1e')]);}_0x174cda[_0xceb1('0x36')]=qs[_0xceb1('0x37')](_0x5bf03d[_0xceb1('0x30')]['sort']);_0x174cda[_0xceb1('0x38')]=qs[_0xceb1('0x39')](_['pick'](_0x5bf03d['query'],_0x4b4f36[_0xceb1('0x39')]),_0x3a5a15);if(_0x5bf03d[_0xceb1('0x30')][_0xceb1('0x3a')]){_0x174cda[_0xceb1('0x38')]=_[_0xceb1('0x3b')](_0x174cda[_0xceb1('0x38')],{'$or':_[_0xceb1('0x2f')](_0x3a5a15,function(_0x320b39){if(_0x320b39[_0xceb1('0x2d')]!==_0xceb1('0x3c')){var _0x40158d={};_0x40158d[_0x320b39[_0xceb1('0x28')]]={'$like':'%'+_0x5bf03d[_0xceb1('0x30')][_0xceb1('0x3a')]+'%'};return _0x40158d;}})});}_0x174cda=_[_0xceb1('0x3b')]({},_0x174cda,_0x5bf03d[_0xceb1('0x3d')]);var _0x1c7312={'where':_0x174cda[_0xceb1('0x38')]};return db[_0xceb1('0x2a')][_0xceb1('0x20')](_0x1c7312)[_0xceb1('0x24')](function(_0x464884){_0x7b4b3d[_0xceb1('0x20')]=_0x464884;if(_0x5bf03d[_0xceb1('0x30')][_0xceb1('0x3e')]){_0x174cda['include']=[{'all':!![]}];}return db[_0xceb1('0x2a')][_0xceb1('0x3f')](_0x174cda);})[_0xceb1('0x24')](function(_0x8e8541){_0x7b4b3d['rows']=_0x8e8541;return _0x7b4b3d;})['then'](respondWithFilteredResult(_0x510c25,_0x174cda))[_0xceb1('0x40')](handleError(_0x510c25,null));};exports['show']=function(_0x4ce178,_0x43385e){var _0x42e55d={'raw':!![],'where':{'id':_0x4ce178[_0xceb1('0x41')]['id']}},_0x3d9aa1={};_0x3d9aa1[_0xceb1('0x2e')]=_[_0xceb1('0x31')](db[_0xceb1('0x2a')][_0xceb1('0x2b')]);_0x3d9aa1[_0xceb1('0x30')]=_[_0xceb1('0x31')](_0x4ce178[_0xceb1('0x30')]);_0x3d9aa1[_0xceb1('0x39')]=_[_0xceb1('0x32')](_0x3d9aa1['model'],_0x3d9aa1[_0xceb1('0x30')]);_0x42e55d['attributes']=_[_0xceb1('0x32')](_0x3d9aa1[_0xceb1('0x2e')],qs['fields'](_0x4ce178[_0xceb1('0x30')]['fields']));_0x42e55d['attributes']=_0x42e55d[_0xceb1('0x33')]['length']?_0x42e55d[_0xceb1('0x33')]:_0x3d9aa1[_0xceb1('0x2e')];if(_0x4ce178['query'][_0xceb1('0x3e')]){_0x42e55d[_0xceb1('0x42')]=[{'all':!![]}];}_0x42e55d=_[_0xceb1('0x3b')]({},_0x42e55d,_0x4ce178[_0xceb1('0x3d')]);return db[_0xceb1('0x2a')]['find'](_0x42e55d)[_0xceb1('0x24')](handleEntityNotFound(_0x43385e,null))[_0xceb1('0x24')](respondWithResult(_0x43385e,null))['catch'](handleError(_0x43385e,null));};exports[_0xceb1('0x43')]=function(_0x519e2f,_0x5b3542){return db[_0xceb1('0x2a')]['create'](_0x519e2f[_0xceb1('0x44')],{})[_0xceb1('0x24')](respondWithResult(_0x5b3542,0xc9))[_0xceb1('0x40')](handleError(_0x5b3542,null));};exports[_0xceb1('0x45')]=function(_0xdbbbf8,_0x229dbe){if(_0xdbbbf8[_0xceb1('0x44')]['id']){delete _0xdbbbf8[_0xceb1('0x44')]['id'];}return db[_0xceb1('0x2a')][_0xceb1('0x46')]({'where':{'id':_0xdbbbf8['params']['id']}})[_0xceb1('0x24')](handleEntityNotFound(_0x229dbe,null))[_0xceb1('0x24')](saveUpdates(_0xdbbbf8['body'],null))[_0xceb1('0x24')](respondWithResult(_0x229dbe,null))[_0xceb1('0x40')](handleError(_0x229dbe,null));};exports['destroy']=function(_0x1f4ff0,_0x30f5a1){return db[_0xceb1('0x2a')][_0xceb1('0x46')]({'where':{'id':_0x1f4ff0[_0xceb1('0x41')]['id']}})[_0xceb1('0x24')](handleEntityNotFound(_0x30f5a1,null))[_0xceb1('0x24')](removeEntity(_0x30f5a1,null))[_0xceb1('0x40')](handleError(_0x30f5a1,null));};exports[_0xceb1('0x47')]=function(_0x5adedb,_0x2c5658){return db[_0xceb1('0x2a')][_0xceb1('0x47')]()[_0xceb1('0x24')](respondWithResult(_0x2c5658,null))[_0xceb1('0x40')](handleError(_0x2c5658,null));};
\ No newline at end of file
index ae6f366..b37c061 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a67=['path','./whatsappTransferReport.attributes','exports','define','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x18f82b,_0x3ea7a0){var _0x5d8128=function(_0x16a009){while(--_0x16a009){_0x18f82b['push'](_0x18f82b['shift']());}};_0x5d8128(++_0x3ea7a0);}(_0x3a67,0xba));var _0x73a6=function(_0x2238e1,_0x3c79e7){_0x2238e1=_0x2238e1-0x0;var _0x2eb713=_0x3a67[_0x2238e1];return _0x2eb713;};'use strict';var _=require(_0x73a6('0x0'));var util=require(_0x73a6('0x1'));var logger=require(_0x73a6('0x2'))('api');var moment=require(_0x73a6('0x3'));var BPromise=require(_0x73a6('0x4'));var rp=require(_0x73a6('0x5'));var fs=require('fs');var path=require(_0x73a6('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x73a6('0x7'));module[_0x73a6('0x8')]=function(_0x1e1da3,_0x47d637){return _0x1e1da3[_0x73a6('0x9')]('WhatsappTransferReport',attributes,{'tableName':_0x73a6('0xa'),'paranoid':![],'indexes':[{'name':_0x73a6('0xb'),'fields':[_0x73a6('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x70d6=['request-promise','path','rimraf','../../config/environment','./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','api','bluebird'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x70d6,0xfa));var _0x670d=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x70d6[_0x173441];return _0x2423a8;};'use strict';var _=require(_0x670d('0x0'));var util=require(_0x670d('0x1'));var logger=require(_0x670d('0x2'))(_0x670d('0x3'));var moment=require('moment');var BPromise=require(_0x670d('0x4'));var rp=require(_0x670d('0x5'));var fs=require('fs');var path=require(_0x670d('0x6'));var rimraf=require(_0x670d('0x7'));var config=require(_0x670d('0x8'));var attributes=require(_0x670d('0x9'));module[_0x670d('0xa')]=function(_0x4f590d,_0xbc562b){return _0x4f590d[_0x670d('0xb')](_0x670d('0xc'),attributes,{'tableName':_0x670d('0xd'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x670d('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 5adac4e..91d232b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cb2=['lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','then','info','WhatsappTransferReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch'];(function(_0x45b1ad,_0x215b03){var _0x3d5696=function(_0x4d9e73){while(--_0x4d9e73){_0x45b1ad['push'](_0x45b1ad['shift']());}};_0x3d5696(++_0x215b03);}(_0x3cb2,0xf0));var _0x23cb=function(_0x5f5ac5,_0x526505){_0x5f5ac5=_0x5f5ac5-0x0;var _0x3697f2=_0x3cb2[_0x5f5ac5];return _0x3697f2;};'use strict';var _=require(_0x23cb('0x0'));var util=require(_0x23cb('0x1'));var moment=require('moment');var BPromise=require(_0x23cb('0x2'));var rs=require(_0x23cb('0x3'));var fs=require('fs');var Redis=require(_0x23cb('0x4'));var db=require(_0x23cb('0x5'))['db'];var utils=require(_0x23cb('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x23cb('0x7'));var jayson=require(_0x23cb('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x270eb6,_0x3d3a89,_0x5929e0){return new BPromise(function(_0x96119a,_0x3abdaa){return client['request'](_0x270eb6,_0x5929e0)[_0x23cb('0x9')](function(_0x96e053){logger[_0x23cb('0xa')](_0x23cb('0xb'),_0x3d3a89,'request\x20sent');logger[_0x23cb('0xc')]('WhatsappTransferReport,\x20%s,\x20%s,\x20%s',_0x3d3a89,_0x23cb('0xd'),JSON[_0x23cb('0xe')](_0x96e053));if(_0x96e053[_0x23cb('0xf')]){if(_0x96e053[_0x23cb('0xf')][_0x23cb('0x10')]===0x1f4){logger[_0x23cb('0xf')](_0x23cb('0xb'),_0x3d3a89,_0x96e053[_0x23cb('0xf')]['message']);return _0x3abdaa(_0x96e053[_0x23cb('0xf')][_0x23cb('0x11')]);}logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0x3d3a89,_0x96e053['error'][_0x23cb('0x11')]);return _0x96119a(_0x96e053[_0x23cb('0xf')][_0x23cb('0x11')]);}else{logger[_0x23cb('0xa')]('WhatsappTransferReport,\x20%s,\x20%s',_0x3d3a89,_0x23cb('0xd'));_0x96119a(_0x96e053[_0x23cb('0x12')][_0x23cb('0x11')]);}})[_0x23cb('0x13')](function(_0x469194){logger[_0x23cb('0xf')](_0x23cb('0xb'),_0x3d3a89,_0x469194);_0x3abdaa(_0x469194);});});}
\ No newline at end of file
+var _0x57be=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','client','http','then','info','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','error','code','WhatsappTransferReport,\x20%s,\x20%s','message'];(function(_0x2ef8b8,_0x59ca49){var _0x1ecc3f=function(_0x5ce49d){while(--_0x5ce49d){_0x2ef8b8['push'](_0x2ef8b8['shift']());}};_0x1ecc3f(++_0x59ca49);}(_0x57be,0xaa));var _0xe57b=function(_0x46f822,_0x220e37){_0x46f822=_0x46f822-0x0;var _0x20b137=_0x57be[_0x46f822];return _0x20b137;};'use strict';var _=require(_0xe57b('0x0'));var util=require(_0xe57b('0x1'));var moment=require(_0xe57b('0x2'));var BPromise=require(_0xe57b('0x3'));var rs=require(_0xe57b('0x4'));var fs=require('fs');var Redis=require(_0xe57b('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xe57b('0x6'));var logger=require(_0xe57b('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe57b('0x8')][_0xe57b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1cf086,_0x46c685,_0x5c0044){return new BPromise(function(_0x5a99a0,_0x256b6a){return client['request'](_0x1cf086,_0x5c0044)[_0xe57b('0xa')](function(_0x2d2c2b){logger[_0xe57b('0xb')]('WhatsappTransferReport,\x20%s,\x20%s',_0x46c685,_0xe57b('0xc'));logger[_0xe57b('0xd')](_0xe57b('0xe'),_0x46c685,_0xe57b('0xc'),JSON['stringify'](_0x2d2c2b));if(_0x2d2c2b[_0xe57b('0xf')]){if(_0x2d2c2b[_0xe57b('0xf')][_0xe57b('0x10')]===0x1f4){logger[_0xe57b('0xf')](_0xe57b('0x11'),_0x46c685,_0x2d2c2b[_0xe57b('0xf')][_0xe57b('0x12')]);return _0x256b6a(_0x2d2c2b[_0xe57b('0xf')][_0xe57b('0x12')]);}logger[_0xe57b('0xf')](_0xe57b('0x11'),_0x46c685,_0x2d2c2b[_0xe57b('0xf')][_0xe57b('0x12')]);return _0x5a99a0(_0x2d2c2b[_0xe57b('0xf')]['message']);}else{logger[_0xe57b('0xb')](_0xe57b('0x11'),_0x46c685,_0xe57b('0xc'));_0x5a99a0(_0x2d2c2b[_0xe57b('0x13')]['message']);}})[_0xe57b('0x14')](function(_0x5d685b){logger['error'](_0xe57b('0x11'),_0x46c685,_0x5d685b);_0x256b6a(_0x5d685b);});});}
\ No newline at end of file
index 9e414db..7c9f4e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc03=['./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','sync','then','default','listen','info','start','filter','exitCode','number','length','map','pm2_env','Online\x20apps:','online','name','join','Offline\x20apps:','status','None','log','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','error','exit','lodash','./config/seedDB','./config/license','./config/environment'];(function(_0xcc3caf,_0x11800f){var _0x5d1173=function(_0x398db1){while(--_0x398db1){_0xcc3caf['push'](_0xcc3caf['shift']());}};_0x5d1173(++_0x11800f);}(_0xdc03,0x65));var _0x3dc0=function(_0x442843,_0x327589){_0x442843=_0x442843-0x0;var _0x52bccb=_0xdc03[_0x442843];return _0x52bccb;};'use strict';var _=require(_0x3dc0('0x0'));var db=require('./mysqldb')['db'];var seedDb=require(_0x3dc0('0x1'));var checkLicense=require(_0x3dc0('0x2'));var rpc=require('./rpc');var config=require(_0x3dc0('0x3'));var logger=require(_0x3dc0('0x4'))(_0x3dc0('0x5'));var pm2=require(_0x3dc0('0x6'));var pm2Config=require(_0x3dc0('0x7'));var schedule=require(_0x3dc0('0x8'));var chat=require('./config/schedule/chat');var whatsapp=require(_0x3dc0('0x9'));var transcribe=require(_0x3dc0('0xa'));var provider=require(_0x3dc0('0xb'));function main(){return db['sequelize'][_0x3dc0('0xc')]()['then'](function(){if(config['seedDB']){return seedDb['default']();}})[_0x3dc0('0xd')](function(){return checkLicense[_0x3dc0('0xe')]();})[_0x3dc0('0xd')](function(){return rpc[_0x3dc0('0xf')]();})[_0x3dc0('0xd')](function(_0x1fb434){logger[_0x3dc0('0x10')](_0x1fb434);return chat['start']();})['then'](function(){return whatsapp[_0x3dc0('0x11')]();})[_0x3dc0('0xd')](function(){return schedule[_0x3dc0('0x11')]();})['then'](function(){return transcribe['start']();})[_0x3dc0('0xd')](function(){return provider['start']();})[_0x3dc0('0xd')](function(_0x49c112){logger['info'](_0x49c112);return pm2[_0x3dc0('0x11')](pm2Config);})[_0x3dc0('0xd')](function(_0x1d250c){var _0x1a69c0=_0x1d250c[_0x3dc0('0x12')](function(_0x309423){return typeof _0x309423[_0x3dc0('0x13')]===_0x3dc0('0x14')&&_0x309423['exitCode']>=0x0;});if(_0x1a69c0[_0x3dc0('0x15')]>0x0){throw new Error(_0x1a69c0[_0x3dc0('0x15')]+'\x20processes\x20failed\x20at\x20startup:\x20'+_[_0x3dc0('0x16')](_0x1a69c0,function(_0xd5b9f1){return'\x22'+_0xd5b9f1[_0x3dc0('0x17')]['name']+'\x22';}));}logger[_0x3dc0('0x10')](_0x3dc0('0x18'),_[_0x3dc0('0x16')](_['filter'](_0x1d250c,{'status':_0x3dc0('0x19')}),_0x3dc0('0x1a'))[_0x3dc0('0x1b')]());logger[_0x3dc0('0x10')](_0x3dc0('0x1c'),_[_0x3dc0('0x16')](_[_0x3dc0('0x12')](_0x1d250c,function(_0x257696){return _0x257696[_0x3dc0('0x1d')]!==_0x3dc0('0x19');}),'name')[_0x3dc0('0x1b')]()||_0x3dc0('0x1e'));console[_0x3dc0('0x1f')]('App\x20Ready!');})['catch'](function(_0x362488){console[_0x3dc0('0x1f')](_0x3dc0('0x20'),_0x362488);logger[_0x3dc0('0x21')]('Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s',_0x362488);process[_0x3dc0('0x22')](0x1);});}main();
\ No newline at end of file
+var _0xa566=['./mysqldb','./config/seedDB','./rpc','./config/environment','./config/logger','app','./config/pm2/config','./config/schedule/cloud-provider','sync','seedDB','default','then','listen','info','start','exitCode','number','length','map','name','filter','status','online','None','log','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash'];(function(_0x2014bc,_0x53fcbc){var _0x4b3d45=function(_0x4d70df){while(--_0x4d70df){_0x2014bc['push'](_0x2014bc['shift']());}};_0x4b3d45(++_0x53fcbc);}(_0xa566,0x1c1));var _0x6a56=function(_0x28b1bd,_0x5cb25f){_0x28b1bd=_0x28b1bd-0x0;var _0xca40f7=_0xa566[_0x28b1bd];return _0xca40f7;};'use strict';var _=require(_0x6a56('0x0'));var db=require(_0x6a56('0x1'))['db'];var seedDb=require(_0x6a56('0x2'));var checkLicense=require('./config/license');var rpc=require(_0x6a56('0x3'));var config=require(_0x6a56('0x4'));var logger=require(_0x6a56('0x5'))(_0x6a56('0x6'));var pm2=require('./config/pm2');var pm2Config=require(_0x6a56('0x7'));var schedule=require('./config/schedule');var chat=require('./config/schedule/chat');var whatsapp=require('./config/schedule/whatsapp');var transcribe=require('./config/schedule/transcribe');var provider=require(_0x6a56('0x8'));function main(){return db['sequelize'][_0x6a56('0x9')]()['then'](function(){if(config[_0x6a56('0xa')]){return seedDb[_0x6a56('0xb')]();}})['then'](function(){return checkLicense[_0x6a56('0xb')]();})[_0x6a56('0xc')](function(){return rpc[_0x6a56('0xd')]();})[_0x6a56('0xc')](function(_0x4d054d){logger[_0x6a56('0xe')](_0x4d054d);return chat[_0x6a56('0xf')]();})['then'](function(){return whatsapp['start']();})[_0x6a56('0xc')](function(){return schedule[_0x6a56('0xf')]();})[_0x6a56('0xc')](function(){return transcribe[_0x6a56('0xf')]();})[_0x6a56('0xc')](function(){return provider[_0x6a56('0xf')]();})[_0x6a56('0xc')](function(_0x5d4fdd){logger[_0x6a56('0xe')](_0x5d4fdd);return pm2[_0x6a56('0xf')](pm2Config);})[_0x6a56('0xc')](function(_0x10fd64){var _0x2583a8=_0x10fd64['filter'](function(_0x232176){return typeof _0x232176[_0x6a56('0x10')]===_0x6a56('0x11')&&_0x232176[_0x6a56('0x10')]>=0x0;});if(_0x2583a8[_0x6a56('0x12')]>0x0){throw new Error(_0x2583a8['length']+'\x20processes\x20failed\x20at\x20startup:\x20'+_[_0x6a56('0x13')](_0x2583a8,function(_0x2288b1){return'\x22'+_0x2288b1['pm2_env'][_0x6a56('0x14')]+'\x22';}));}logger[_0x6a56('0xe')]('Online\x20apps:',_[_0x6a56('0x13')](_[_0x6a56('0x15')](_0x10fd64,{'status':'online'}),_0x6a56('0x14'))['join']());logger[_0x6a56('0xe')]('Offline\x20apps:',_[_0x6a56('0x13')](_[_0x6a56('0x15')](_0x10fd64,function(_0x11e479){return _0x11e479[_0x6a56('0x16')]!==_0x6a56('0x17');}),_0x6a56('0x14'))['join']()||_0x6a56('0x18'));console[_0x6a56('0x19')]('App\x20Ready!');})[_0x6a56('0x1a')](function(_0x2dfb9b){console[_0x6a56('0x19')]('Server\x20failed\x20to\x20start\x20due\x20to\x20error!',_0x2dfb9b);logger[_0x6a56('0x1b')](_0x6a56('0x1c'),_0x2dfb9b);process[_0x6a56('0x1d')](0x1);});}main();
\ No newline at end of file
index 625ea7f..7ab3012 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(_0x3c6ae2,_0x5c52d8){var _0x4edda=function(_0x5593eb){while(--_0x5593eb){_0x3c6ae2['push'](_0x3c6ae2['shift']());}};_0x4edda(++_0x5c52d8);}(_0x9c44,0x178));var _0x49c4=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x9c44[_0x2dea24];return _0x309d58;};'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 _0x34e8=['validatePasswordPattern','test','Sequelize','ValidationError','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','length','splice','unshift','encryptString','join','promisify','sign','secret','secrets','payload','options','verify','toString','hex','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','crypto','bluebird','moment','session','role','fullname','name','internal','email','userpic','permissions','md5secret','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','pauseType','showWebBar','lastPauseAt','crudPermissions','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarExpires','phoneBarRemoteControl','phoneBarRemoteControlPort','interface','userProfileId','privacyEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','chatAutoanswer','emailAutoanswer','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswerDelay','faxAutoanswer','whatsappAutoanswer','whatsappAutoanswerDelay','isChatInteractionAuthorized','user','ChatInteraction','params','closed','disposition','unmanaged','Unmanaged.','Forbidden.','catch','authorization','startsWith','headers','Basic','User','find','pass','status','json','Wrong\x20credentials.','Unknown\x20authorization\x20format','query','getUuid','then','sub','Setting','allowedLoginAttempts','blockDuration','isEqual','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blockedAt','minutes','User\x20not\x20found.','canUpdate','use','getLicense','update','Forbidden','isWebrtcLicence','webrtc','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','motion.token','redirect','/dashboards/general','send','isNil','apiKeyNonce','apiKeyIat','generateApiKey','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'];(function(_0xdd6bfe,_0x58956b){var _0x25bb7f=function(_0x287ac3){while(--_0x287ac3){_0xdd6bfe['push'](_0xdd6bfe['shift']());}};_0x25bb7f(++_0x58956b);}(_0x34e8,0x12c));var _0x834e=function(_0x3c6038,_0x588d31){_0x3c6038=_0x3c6038-0x0;var _0x55a72f=_0x34e8[_0x3c6038];return _0x55a72f;};'use strict';var db=require(_0x834e('0x0'))['db'];var config=require(_0x834e('0x1'));var hardwareConf=require(_0x834e('0x2'));var licenseUtil=require(_0x834e('0x3'));var encryptor=require('../encryptor');var _=require(_0x834e('0x4'));var jwt=require(_0x834e('0x5'));var expressJwt=require(_0x834e('0x6'));var compose=require(_0x834e('0x7'));var basicAuth=require(_0x834e('0x8'));var crypto=require(_0x834e('0x9'));var BPromise=require(_0x834e('0xa'));var util=require('util');var moment=require(_0x834e('0xb'));var validateJwt=expressJwt({'secret':config['secrets'][_0x834e('0xc')]});var userAttributes=['id',_0x834e('0xd'),_0x834e('0xe'),_0x834e('0xf'),_0x834e('0x10'),_0x834e('0x11'),_0x834e('0x12'),_0x834e('0x13'),_0x834e('0x14'),_0x834e('0x15'),_0x834e('0x16'),_0x834e('0x17'),_0x834e('0x18'),_0x834e('0x19'),_0x834e('0x1a'),_0x834e('0x1b'),_0x834e('0x1c'),'lastLoginAt',_0x834e('0x1d'),_0x834e('0x1e'),'allowmessenger',_0x834e('0x1f'),_0x834e('0x20'),_0x834e('0x21'),_0x834e('0x22'),'phoneBarDnd',_0x834e('0x23'),_0x834e('0x24'),'phoneBarEnableSettings',_0x834e('0x25'),'phoneBarPrefixRequired',_0x834e('0x26'),_0x834e('0x27'),'hotdesk',_0x834e('0x28'),_0x834e('0x29'),_0x834e('0x2a'),'settingsEnabled',_0x834e('0x2b'),_0x834e('0x2c'),_0x834e('0x2d'),_0x834e('0x2e'),_0x834e('0x2f'),_0x834e('0x30'),_0x834e('0x31'),'chatAutoanswerDelay',_0x834e('0x32'),_0x834e('0x33'),_0x834e('0x34'),_0x834e('0x35'),'openchannelAutoanswer',_0x834e('0x36'),_0x834e('0x37'),'faxAutoanswerDelay',_0x834e('0x38'),_0x834e('0x39')];exports[_0x834e('0x3a')]=function(){return this['isAuthenticated'](!![])['use'](function(_0x231619,_0x34563b,_0x589dde){if(_0x231619[_0x834e('0x3b')]){_0x589dde();}else{return db[_0x834e('0x3c')]['findOne']({'where':{'id':_0x231619[_0x834e('0x3d')]['id']},'attributes':['id',_0x834e('0x3e'),_0x834e('0x3f')],'raw':!![]})['then'](function(_0x24fcf7){if(_0x24fcf7&&_0x24fcf7[_0x834e('0x3e')]){return _0x34563b['status'](_0x24fcf7['disposition']===_0x834e('0x40')?0x195:0x193)['json']({'message':_0x24fcf7[_0x834e('0x3f')]===_0x834e('0x40')?_0x834e('0x41'):_0x834e('0x42')});}else{_0x589dde();}})[_0x834e('0x43')](function(_0x130cc5){_0x589dde(_0x130cc5);});}});};exports['isAuthenticated']=function isAuthenticated(_0x510780){return compose()['use'](function(_0x58c1d7,_0x2c7a8d,_0x567cea){var _0x106d6a;if(_0x58c1d7['headers'][_0x834e('0x44')]){if(_[_0x834e('0x45')](_0x58c1d7[_0x834e('0x46')][_0x834e('0x44')],_0x834e('0x47'))){var _0x390119=basicAuth(_0x58c1d7);db[_0x834e('0x48')][_0x834e('0x49')]({'where':{'name':_0x390119[_0x834e('0xf')]}})['then'](function(_0xef9ec2){if(!_0xef9ec2||!_0xef9ec2['authenticate'](_0x390119[_0x834e('0x4a')])){return _0x2c7a8d[_0x834e('0x4b')](0x191)[_0x834e('0x4c')]({'message':_0x834e('0x4d')});}_0x58c1d7[_0x834e('0x3b')]={'id':_0xef9ec2['id']};_0x567cea();})[_0x834e('0x43')](function(_0x4696a1){_0x567cea(_0x4696a1);});}else if(_[_0x834e('0x45')](_0x58c1d7[_0x834e('0x46')][_0x834e('0x44')],'Bearer')){validateJwt(_0x58c1d7,_0x2c7a8d,_0x567cea);}else{if(_0x510780){_0x567cea();}else{return _0x2c7a8d[_0x834e('0x4b')](0x193)[_0x834e('0x4c')]({'message':_0x834e('0x4e')});}}}else if(_0x58c1d7[_0x834e('0x4f')]['apikey']){try{var _0x3f88ad={'audience':hardwareConf[_0x834e('0x50')](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x58c1d7['query']['apikey'],_0x3f88ad)[_0x834e('0x51')](function(_0x41bf4d){return db[_0x834e('0x48')][_0x834e('0x49')]({'where':{'id':_0x41bf4d[_0x834e('0x52')]}})[_0x834e('0x51')](function(_0x4c2ef6){_0x106d6a=_0x4c2ef6;return db[_0x834e('0x53')]['findOne']({'where':{'id':0x1},'attributes':[_0x834e('0x54'),_0x834e('0x55')],'raw':!![]});})['then'](function(_0x18ac3b){if(!_0x106d6a||!_[_0x834e('0x56')](_0x106d6a['apiKeyNonce'],_0x41bf4d['nonce'])){return _0x2c7a8d[_0x834e('0x4b')](0x191)[_0x834e('0x4c')]({'message':_0x834e('0x57')});}if(_0x106d6a[_0x834e('0x58')]){return _0x2c7a8d[_0x834e('0x4b')](0x191)['json']({'message':_0x834e('0x59')});}if(_0x106d6a['blocked']){if(_0x18ac3b['blockDuration']>0x0){if(moment(_0x106d6a[_0x834e('0x5a')])['add'](_0x18ac3b[_0x834e('0x55')],_0x834e('0x5b'))>moment()){return _0x2c7a8d[_0x834e('0x4b')](0x191)[_0x834e('0x4c')]({'message':_0x834e('0x59')});}}else{return _0x2c7a8d['status'](0x191)[_0x834e('0x4c')]({'message':_0x834e('0x59')});}}_0x58c1d7[_0x834e('0x3b')]={'id':_0x106d6a['id']};_0x567cea();});})['catch'](function(){return _0x2c7a8d[_0x834e('0x4b')](0x191)[_0x834e('0x4c')]({'message':'Invalid\x20API\x20access\x20key'});});}catch(_0x1e3e71){_0x567cea(_0x1e3e71);}}else if(_0x510780){_0x567cea();}else{return _0x2c7a8d['status'](0x193)[_0x834e('0x4c')]({'message':_0x834e('0x4e')});}})['use'](function(_0x4a6942,_0x22ea21,_0x16969b){if(_0x4a6942[_0x834e('0x3b')]){db[_0x834e('0x48')][_0x834e('0x49')]({'where':{'id':_0x4a6942[_0x834e('0x3b')]['id']},'attributes':userAttributes})[_0x834e('0x51')](function(_0x4a3381){if(!_0x4a3381){return _0x22ea21[_0x834e('0x4b')](0x194)['json']({'message':_0x834e('0x5c')});}_0x4a6942['user']=_0x4a3381;_0x16969b();})[_0x834e('0x43')](function(_0x5a5807){_0x16969b(_0x5a5807);});}else if(_0x510780){_0x16969b();}else{return _0x22ea21[_0x834e('0x4b')](0x194)[_0x834e('0x4c')]({'message':'User\x20object\x20not\x20found.'});}});};exports[_0x834e('0x5d')]=function canUpdate(){return compose()[_0x834e('0x5e')](function(_0xa880cb,_0xd55cc3,_0x252ea0){return licenseUtil[_0x834e('0x5f')]()[_0x834e('0x51')](function(_0x3ccd8e){if(_0x3ccd8e[_0x834e('0x60')]){_0x252ea0();}else{return _0xd55cc3[_0x834e('0x4b')](0x193)['json']({'message':_0x834e('0x61')});}})[_0x834e('0x43')](function(_0x47a8a9){_0x252ea0(_0x47a8a9);});});};exports[_0x834e('0x62')]=function isWebrtcLicence(){return compose()[_0x834e('0x5e')](function(_0x25b035,_0x2112d5,_0x19b5ef){return licenseUtil[_0x834e('0x5f')]()['then'](function(_0x59c855){if(_0x59c855[_0x834e('0x63')]){_0x19b5ef();}else{return _0x2112d5[_0x834e('0x4b')](0x193)[_0x834e('0x4c')]({'message':_0x834e('0x61')});}})[_0x834e('0x43')](function(_0xd1d83b){_0x19b5ef(_0xd1d83b);});});};exports[_0x834e('0x64')]=function(_0x43f599,_0x1419eb,_0x390c45){_0x43f599[_0x834e('0x64')]=!![];return _0x390c45();};exports[_0x834e('0x65')]=function signToken(_0x1a28f6){return signJwt(_0x1a28f6);};exports[_0x834e('0x66')]=function(_0x2aa072,_0x1a3855){if(!_0x2aa072[_0x834e('0x3b')]){return _0x1a3855[_0x834e('0x4b')](0x194)[_0x834e('0x4c')]({'message':_0x834e('0x67')});}var _0x4cfacd={'payload':{'id':_0x2aa072[_0x834e('0x3b')]['id'],'role':_0x2aa072[_0x834e('0x3b')]['role']},'options':{'expiresIn':0x15180}};return signJwt(_0x4cfacd)[_0x834e('0x51')](function(_0x3b0988){_0x1a3855['cookie'](_0x834e('0x68'),_0x3b0988);_0x1a3855[_0x834e('0x69')](_0x834e('0x6a'));})[_0x834e('0x43')](function(_0x4288e4){return _0x1a3855[_0x834e('0x4b')](0x1f4)[_0x834e('0x6b')](_0x4288e4);});};exports['retrieveApiKey']=function(_0x1ad7fe){if(_[_0x834e('0x6c')](_0x1ad7fe[_0x834e('0x6d')])||_[_0x834e('0x6c')](_0x1ad7fe[_0x834e('0x6e')])){return null;}else{return createJwt(_0x1ad7fe);}};exports[_0x834e('0x6f')]=function(_0x344b51){_0x344b51[_0x834e('0x6d')]=generateNonce();_0x344b51['apiKeyIat']=generateIssuedAt();return createJwt(_0x344b51);};exports[_0x834e('0x70')]=function(_0x4dc104,_0x2f4bde){var _0x53a9ee=_0x4dc104[_0x834e('0x4f')]['apikey'];if(_0x53a9ee){var _0x527eef={'nonce':_0x2f4bde[_0x834e('0x6d')],'iat':_0x2f4bde[_0x834e('0x6e')],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf['getUuid']()};return verifyJwt(_0x53a9ee,_0x527eef)[_0x834e('0x51')](function(){return generateApiKey(_0x2f4bde);});}else{throw{'message':_0x834e('0x71')};}};exports[_0x834e('0x72')]=function(_0x387365){var _0x21c417=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x21c417[_0x834e('0x73')](_0x387365))throw new db[(_0x834e('0x74'))][(_0x834e('0x75'))]('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[_0x834e('0x76')]=function(_0x3c70bf,_0x5d5ac2,_0x281342){var _0x4e2b22=encryptor[_0x834e('0x77')](_0x5d5ac2)[_0x834e('0x78')](',');for(var _0x5160c4=0x0;_0x5160c4<_0x281342;_0x5160c4++){if(!_0x4e2b22[_0x5160c4])break;if(_0x3c70bf[_0x834e('0x79')]()===_0x4e2b22[_0x5160c4][_0x834e('0x79')]()){var _0x2de29a=util[_0x834e('0x7a')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x281342);if(_0x281342===0x1){_0x2de29a=_0x834e('0x7b');}throw new db[(_0x834e('0x74'))][(_0x834e('0x75'))](_0x2de29a);}}return;};exports['updatePasswordsHistory']=function(_0x246b8e,_0x1fcae9){var _0x3a7683=_0x1fcae9?encryptor[_0x834e('0x77')](_0x1fcae9)[_0x834e('0x78')](','):[];if(_0x3a7683[_0x834e('0x7c')]===0x5){_0x3a7683[_0x834e('0x7d')](-0x1,0x1);}_0x3a7683[_0x834e('0x7e')](_0x246b8e);return encryptor[_0x834e('0x7f')](_0x3a7683[_0x834e('0x80')](','));};function signJwt(_0x1e4310){var _0x1dfa95=BPromise[_0x834e('0x81')](jwt[_0x834e('0x82')],{'context':jwt});var _0x460a7a=_0x1e4310[_0x834e('0x83')]||config[_0x834e('0x84')][_0x834e('0xc')];return new BPromise(function(_0x193a15,_0x3e3467){_0x1dfa95(_0x1e4310[_0x834e('0x85')],_0x460a7a,_0x1e4310[_0x834e('0x86')])['then'](function(_0x2145cf){_0x193a15(_0x2145cf);})[_0x834e('0x43')](function(_0x45bcc2){_0x3e3467(_0x45bcc2);});});}function verifyJwt(_0x36cc14,_0x4ca099,_0x30faa8){var _0x5a9c70=BPromise['promisify'](jwt[_0x834e('0x87')],{'context':jwt});var _0x2b1ec7=_0x30faa8||config[_0x834e('0x84')][_0x834e('0xc')];return new BPromise(function(_0x216105,_0x3821ad){_0x5a9c70(_0x36cc14,_0x2b1ec7,_0x4ca099)[_0x834e('0x51')](function(_0xe5c8f6){_0x216105(_0xe5c8f6);})['catch'](function(_0xdef8c4){_0x3821ad(_0xdef8c4);});});}function generateNonce(){return crypto['randomBytes'](0x10)[_0x834e('0x88')](_0x834e('0x89'));}function generateIssuedAt(){return Math['floor'](Date['now']()/0x3e8)[_0x834e('0x88')]();}function createJwt(_0x82f2a7){var _0x363cc2={'payload':{'iat':_0x82f2a7[_0x834e('0x6e')],'nonce':_0x82f2a7[_0x834e('0x6d')]},'options':{'algorithm':'HS512','subject':_0x82f2a7['id'][_0x834e('0x88')](),'issuer':hardwareConf[_0x834e('0x50')](),'audience':hardwareConf[_0x834e('0x50')]()}};return signJwt(_0x363cc2)[_0x834e('0x51')](function(_0x3181af){return{'iat':_0x82f2a7[_0x834e('0x6e')],'nonce':_0x82f2a7[_0x834e('0x6d')],'token':_0x3181af};});}
\ No newline at end of file
index 384077e..0512395 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46d0=['session','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createReadStream','createCipher','data','update','binary','write','end','close','unlink','decryptFile','createWriteStream','createDecipher','encryptString','secret','utf8','base64','final','crypto','bluebird','lodash','../../config/environment','../../config/logger','app','secrets'];(function(_0x2fddb9,_0xa1c8a){var _0x321592=function(_0x1e13c6){while(--_0x1e13c6){_0x2fddb9['push'](_0x2fddb9['shift']());}};_0x321592(++_0xa1c8a);}(_0x46d0,0x1b5));var _0x046d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x46d0[_0x3dd15e];return _0x231fd0;};'use strict';var crypto=require(_0x046d('0x0'));var fs=require('fs');var BPromise=require(_0x046d('0x1'));var _=require(_0x046d('0x2'));var config=require(_0x046d('0x3'));var logger=require(_0x046d('0x4'))(_0x046d('0x5'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x046d('0x6')][_0x046d('0x7')],'algorithm':'aes-256-ctr'};const fileOptions={'algorithm':_0x046d('0x8')};if(config['encrypt']&&config[_0x046d('0x9')][_0x046d('0xa')]){var isSupported=isAlgorithmSupported(config[_0x046d('0x9')][_0x046d('0xa')]);if(isSupported){fileOptions[_0x046d('0xa')]=config[_0x046d('0x9')]['algorithm'];}else{var supportedAlgorithms=getSupportedCiphers()[_0x046d('0xb')](',\x20');logger[_0x046d('0xc')](config[_0x046d('0x9')][_0x046d('0xa')],_0x046d('0xd'),supportedAlgorithms);}}function isASupportedCipher(_0x4d2771){return AES_SUPPORTED_RX[_0x046d('0xe')](_0x4d2771);}function getSupportedCiphers(){return crypto[_0x046d('0xf')]()[_0x046d('0x10')](isASupportedCipher);}function isAlgorithmSupported(_0x5ce20b){return getSupportedCiphers()[_0x046d('0x11')](_0x5ce20b)>-0x1;}function combineOptions(_0x411710){var _0x409a00={};for(var _0x524f11 in fileOptions){if(fileOptions['hasOwnProperty'](_0x524f11)){_0x409a00[_0x524f11]=fileOptions[_0x524f11];}}if(_0x411710){for(var _0x55aab0 in _0x411710){if(_0x411710[_0x046d('0x12')](_0x55aab0)){_0x409a00[_0x55aab0]=_0x411710[_0x55aab0];}}}return _0x409a00;}exports[_0x046d('0x13')]=function(_0x5abe7f,_0x775de,_0x4e740a,_0x1757ab){return new BPromise(function(_0x1a91d7,_0x162b5f){_0x1757ab=combineOptions(_0x1757ab);var _0x3769d6=new Buffer(_0x4e740a);var _0x5e7f66=fs[_0x046d('0x14')](_0x5abe7f);var _0x16b573=fs['createWriteStream'](_0x775de);var _0x373c67=crypto[_0x046d('0x15')](_0x1757ab[_0x046d('0xa')],_0x3769d6);_0x5e7f66['on'](_0x046d('0x16'),function(_0x546232){var _0x49f7b2=new Buffer(_0x373c67[_0x046d('0x17')](_0x546232),_0x046d('0x18'));_0x16b573[_0x046d('0x19')](_0x49f7b2);});_0x5e7f66['on'](_0x046d('0x1a'),function(){try{var _0x22cd85=new Buffer(_0x373c67['final'](_0x046d('0x18')),_0x046d('0x18'));_0x16b573[_0x046d('0x19')](_0x22cd85);_0x16b573[_0x046d('0x1a')]();_0x16b573['on'](_0x046d('0x1b'),function(){return _0x1a91d7(_0x775de);});}catch(_0x2c2cac){fs[_0x046d('0x1c')](_0x775de);return _0x162b5f(_0x2c2cac);}});});};exports[_0x046d('0x1d')]=function(_0x3d1fe0,_0x14a616,_0xe1e208,_0x4c436f){return new BPromise(function(_0x104f5f,_0x44cbe9){_0x4c436f=combineOptions(_0x4c436f);var _0x296c25=new Buffer(_0xe1e208);var _0x5d91b6=fs[_0x046d('0x14')](_0x3d1fe0);var _0x5835da=fs[_0x046d('0x1e')](_0x14a616);var _0x3688e3=crypto[_0x046d('0x1f')](_0x4c436f[_0x046d('0xa')],_0x296c25);_0x5d91b6['on'](_0x046d('0x16'),function(_0x501ae3){var _0x4a1133=new Buffer(_0x3688e3[_0x046d('0x17')](_0x501ae3),_0x046d('0x18'));_0x5835da[_0x046d('0x19')](_0x4a1133);});_0x5d91b6['on'](_0x046d('0x1a'),function(){try{var _0xe9cbc1=new Buffer(_0x3688e3['final'](_0x046d('0x18')),'binary');_0x5835da[_0x046d('0x19')](_0xe9cbc1);_0x5835da[_0x046d('0x1a')]();_0x5835da['on'](_0x046d('0x1b'),function(){return _0x104f5f(_0x14a616);});}catch(_0x1ee64b){fs[_0x046d('0x1c')](_0x14a616);return _0x44cbe9(_0x1ee64b);}});});};exports[_0x046d('0x20')]=function(_0x769808,_0x7f2833,_0x1d0205){var _0x34df19=_0x1d0205||stringOptions[_0x046d('0xa')];var _0x372fc5=_0x7f2833||stringOptions[_0x046d('0x21')];var _0x500bec=crypto[_0x046d('0x15')](_0x34df19,_0x372fc5);var _0x380c48=_0x500bec[_0x046d('0x17')](_0x769808,_0x046d('0x22'),_0x046d('0x23'));_0x380c48+=_0x500bec[_0x046d('0x24')]('base64');return _0x380c48;};exports['decryptString']=function(_0x19e6a8,_0x68fa56,_0x438f41){var _0x55e1a0=_0x438f41||stringOptions[_0x046d('0xa')];var _0x571c70=_0x68fa56||stringOptions[_0x046d('0x21')];var _0x21dc06=crypto[_0x046d('0x1f')](_0x55e1a0,_0x571c70);var _0xe7b81e=_0x21dc06[_0x046d('0x17')](_0x19e6a8,'base64',_0x046d('0x22'));_0xe7b81e+=_0x21dc06[_0x046d('0x24')](_0x046d('0x22'));return _0xe7b81e;};
\ No newline at end of file
+var _0x2d52=['secret','createDecipher','crypto','bluebird','lodash','../../config/environment','../../config/logger','app','secrets','aes-256-ctr','aes192','algorithm','error','encrypt','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','hasOwnProperty','encryptFile','createReadStream','createWriteStream','data','update','write','final','binary','end','decryptFile','close','createCipher','utf8','base64','decryptString'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x2d52,0xce));var _0x22d5=function(_0x258fca,_0x3a4493){_0x258fca=_0x258fca-0x0;var _0x5a9124=_0x2d52[_0x258fca];return _0x5a9124;};'use strict';var crypto=require(_0x22d5('0x0'));var fs=require('fs');var BPromise=require(_0x22d5('0x1'));var _=require(_0x22d5('0x2'));var config=require(_0x22d5('0x3'));var logger=require(_0x22d5('0x4'))(_0x22d5('0x5'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x22d5('0x6')]['session'],'algorithm':_0x22d5('0x7')};const fileOptions={'algorithm':_0x22d5('0x8')};if(config['encrypt']&&config['encrypt'][_0x22d5('0x9')]){var isSupported=isAlgorithmSupported(config['encrypt'][_0x22d5('0x9')]);if(isSupported){fileOptions[_0x22d5('0x9')]=config['encrypt'][_0x22d5('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()['join'](',\x20');logger[_0x22d5('0xa')](config[_0x22d5('0xb')][_0x22d5('0x9')],_0x22d5('0xc'),supportedAlgorithms);}}function isASupportedCipher(_0x545aa6){return AES_SUPPORTED_RX[_0x22d5('0xd')](_0x545aa6);}function getSupportedCiphers(){return crypto[_0x22d5('0xe')]()[_0x22d5('0xf')](isASupportedCipher);}function isAlgorithmSupported(_0x4a6119){return getSupportedCiphers()['indexOf'](_0x4a6119)>-0x1;}function combineOptions(_0x1bfefb){var _0x5b4d3c={};for(var _0x29c96a in fileOptions){if(fileOptions[_0x22d5('0x10')](_0x29c96a)){_0x5b4d3c[_0x29c96a]=fileOptions[_0x29c96a];}}if(_0x1bfefb){for(var _0x281065 in _0x1bfefb){if(_0x1bfefb[_0x22d5('0x10')](_0x281065)){_0x5b4d3c[_0x281065]=_0x1bfefb[_0x281065];}}}return _0x5b4d3c;}exports[_0x22d5('0x11')]=function(_0x421327,_0x1eafab,_0x17d8ae,_0x4aa5cd){return new BPromise(function(_0x334b8c,_0x11bdd5){_0x4aa5cd=combineOptions(_0x4aa5cd);var _0x52c061=new Buffer(_0x17d8ae);var _0x49bd92=fs[_0x22d5('0x12')](_0x421327);var _0x355245=fs[_0x22d5('0x13')](_0x1eafab);var _0x146a9a=crypto['createCipher'](_0x4aa5cd['algorithm'],_0x52c061);_0x49bd92['on'](_0x22d5('0x14'),function(_0x32b802){var _0x23cf32=new Buffer(_0x146a9a[_0x22d5('0x15')](_0x32b802),'binary');_0x355245[_0x22d5('0x16')](_0x23cf32);});_0x49bd92['on']('end',function(){try{var _0x3c7c28=new Buffer(_0x146a9a[_0x22d5('0x17')](_0x22d5('0x18')),_0x22d5('0x18'));_0x355245[_0x22d5('0x16')](_0x3c7c28);_0x355245[_0x22d5('0x19')]();_0x355245['on']('close',function(){return _0x334b8c(_0x1eafab);});}catch(_0x4a9106){fs['unlink'](_0x1eafab);return _0x11bdd5(_0x4a9106);}});});};exports[_0x22d5('0x1a')]=function(_0x288ef2,_0x2cb361,_0x5d7170,_0x144deb){return new BPromise(function(_0x366f16,_0x40fc7a){_0x144deb=combineOptions(_0x144deb);var _0x254ab8=new Buffer(_0x5d7170);var _0x48d13c=fs['createReadStream'](_0x288ef2);var _0x55d32e=fs[_0x22d5('0x13')](_0x2cb361);var _0x5ed690=crypto['createDecipher'](_0x144deb['algorithm'],_0x254ab8);_0x48d13c['on'](_0x22d5('0x14'),function(_0x3633de){var _0xe046db=new Buffer(_0x5ed690['update'](_0x3633de),_0x22d5('0x18'));_0x55d32e[_0x22d5('0x16')](_0xe046db);});_0x48d13c['on'](_0x22d5('0x19'),function(){try{var _0x2533c5=new Buffer(_0x5ed690[_0x22d5('0x17')]('binary'),'binary');_0x55d32e['write'](_0x2533c5);_0x55d32e[_0x22d5('0x19')]();_0x55d32e['on'](_0x22d5('0x1b'),function(){return _0x366f16(_0x2cb361);});}catch(_0x3a1055){fs['unlink'](_0x2cb361);return _0x40fc7a(_0x3a1055);}});});};exports['encryptString']=function(_0x2ea236,_0x14f725,_0x3b4852){var _0x2b76bc=_0x3b4852||stringOptions[_0x22d5('0x9')];var _0x3977b7=_0x14f725||stringOptions['secret'];var _0x539545=crypto[_0x22d5('0x1c')](_0x2b76bc,_0x3977b7);var _0x48c9da=_0x539545['update'](_0x2ea236,_0x22d5('0x1d'),_0x22d5('0x1e'));_0x48c9da+=_0x539545[_0x22d5('0x17')](_0x22d5('0x1e'));return _0x48c9da;};exports[_0x22d5('0x1f')]=function(_0x37dc1c,_0x3cd63e,_0x350ab8){var _0x219eab=_0x350ab8||stringOptions[_0x22d5('0x9')];var _0x178a4e=_0x3cd63e||stringOptions[_0x22d5('0x20')];var _0x857753=crypto[_0x22d5('0x21')](_0x219eab,_0x178a4e);var _0x2fc9bc=_0x857753[_0x22d5('0x15')](_0x37dc1c,_0x22d5('0x1e'),'utf8');_0x2fc9bc+=_0x857753[_0x22d5('0x17')]('utf8');return _0x2fc9bc;};
\ No newline at end of file
index 38698c2..d9e9747 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd610=['each','%s%d.%s','csv','writeFileSync','%s.%s','zip','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','exit','util','path','to-csv','zip-dir','../../mysqldb','dbH','argv','savename','AnalyticExtractedReport','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','splitSizeCsv','then','sequelize','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','split','range','push','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','length','existsSync','join','mkdirSync'];(function(_0x4abfb5,_0x3a390a){var _0x942fff=function(_0xbff9b9){while(--_0xbff9b9){_0x4abfb5['push'](_0x4abfb5['shift']());}};_0x942fff(++_0x3a390a);}(_0xd610,0x67));var _0x0d61=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0xd610[_0x50007c];return _0x5c1ec7;};'use strict';var util=require(_0x0d61('0x0'));var path=require(_0x0d61('0x1'));var _=require('lodash');var csv=require(_0x0d61('0x2'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require(_0x0d61('0x3'));var rimraf=require('rimraf');var db=require(_0x0d61('0x4'))['db'];var dbH=require(_0x0d61('0x4'))[_0x0d61('0x5')];var logger=require('../../config/logger')('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x0d61('0x6')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x0d61('0x6')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x5444a7,_0x33e933){var _0x112381={'status':_0x5444a7};var _0x3ad8ba={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x33e933){_0x112381[_0x0d61('0x7')]=_0x33e933;}return db[_0x0d61('0x8')][_0x0d61('0x9')](_0x112381,_0x3ad8ba);}function main(){var _0x5db730=0x1388;var _0x7a0f0f;logger[_0x0d61('0xa')](util['format'](_0x0d61('0xb'),EXTRACTED_REPORT_ID,_0x0d61('0xc')));return db['Setting']['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x0d61('0xd')]})[_0x0d61('0xe')](function(_0x4f0136){if(_0x4f0136){_0x7a0f0f=_0x4f0136;_0x5db730=_0x7a0f0f[_0x0d61('0xd')]||0x1388;}})[_0x0d61('0xe')](function(){return dbH[_0x0d61('0xf')][_0x0d61('0x10')](util[_0x0d61('0x11')](_0x0d61('0x12'),QUERY),{'type':dbH[_0x0d61('0xf')][_0x0d61('0x13')][_0x0d61('0x14')]});})[_0x0d61('0xe')](function(_0x4a9aff){if(!_0x4a9aff[0x0][_0x0d61('0x15')]){return analyticExtractedReport(_0x0d61('0x16'));}var _0x255103=[];var _0x527b47=0x0;if(_0x7a0f0f[_0x0d61('0x17')]){if(_0x4a9aff&&_0x4a9aff['length']){var _0xdf485c=_[_0x0d61('0x18')](_0x4a9aff[0x0][_0x0d61('0x15')]/_0x5db730);var _0xc4189e=Number['isInteger'](_0x4a9aff[0x0][_0x0d61('0x15')]/_0x5db730)?_0x4a9aff[0x0][_0x0d61('0x15')]%_0x5db730:0x0;_0xdf485c['forEach'](function(_0x414af0){if(_0x414af0>0x0){_0x527b47+=_0x5db730;}_0x255103[_0x0d61('0x19')](dbH[_0x0d61('0xf')][_0x0d61('0x10')](util[_0x0d61('0x11')](_0x0d61('0x1a'),QUERY,_0x5db730,_0x527b47),{'type':dbH[_0x0d61('0xf')][_0x0d61('0x13')][_0x0d61('0x14')]}));});if(_0xc4189e>0x0){_0x527b47+=_0x5db730;_0x255103[_0x0d61('0x19')](dbH[_0x0d61('0xf')]['query'](util[_0x0d61('0x11')](_0x0d61('0x1a'),QUERY,_0xc4189e,_0x527b47),{'type':dbH['sequelize']['QueryTypes'][_0x0d61('0x14')]}));}}}else{_0x255103[_0x0d61('0x19')](dbH['sequelize'][_0x0d61('0x10')](QUERY,{'type':dbH[_0x0d61('0xf')][_0x0d61('0x13')][_0x0d61('0x14')]}));}var _0x33e648=path['dirname'](PATH);var _0x1e6bf9=path[_0x0d61('0x1b')](PATH,'.csv');var _0x222734=_0x7a0f0f[_0x0d61('0x17')]&&_0x255103[_0x0d61('0x1c')]>0x1;var _0x148f86=[];if(!fs[_0x0d61('0x1d')](path[_0x0d61('0x1e')](_0x33e648,_0x1e6bf9))&&_0x222734){fs[_0x0d61('0x1f')](path[_0x0d61('0x1e')](_0x33e648,_0x1e6bf9));}return BPromise[_0x0d61('0x20')](_0x255103,function(_0x10ac6c){_0x148f86['push'](_0x10ac6c);})[_0x0d61('0xe')](function(){for(var _0x2e37d5=0x0;_0x2e37d5<_0x148f86[_0x0d61('0x1c')];_0x2e37d5+=0x1){var _0x2f34e8;var _0x57a9c1=_0x148f86[_0x2e37d5];if(_0x222734){_0x2f34e8=path[_0x0d61('0x1e')](_0x33e648,_0x1e6bf9,util['format'](_0x0d61('0x21'),_0x1e6bf9,_0x2e37d5,_0x0d61('0x22')));}else{_0x2f34e8=path[_0x0d61('0x1e')](_0x33e648,util[_0x0d61('0x11')]('%s.%s',_0x1e6bf9,'csv'));}fs[_0x0d61('0x23')](_0x2f34e8,csv(_0x57a9c1));}})[_0x0d61('0xe')](function(){if(_0x222734){return new Promise(function(_0x14cf6f){zipdir(path[_0x0d61('0x1e')](_0x33e648,_0x1e6bf9),{'saveTo':path['join'](_0x33e648,util[_0x0d61('0x11')](_0x0d61('0x24'),_0x1e6bf9,_0x0d61('0x25')))},function(_0x8999fa,_0x19add6){rimraf(path[_0x0d61('0x1e')](_0x33e648,_0x1e6bf9),function(){});_0x14cf6f('zip\x20finished');});});}})[_0x0d61('0xe')](function(){logger[_0x0d61('0xa')](util[_0x0d61('0x11')](_0x0d61('0x26'),EXTRACTED_REPORT_ID,_0x0d61('0xc')));return analyticExtractedReport(_0x0d61('0x27'),_0x222734?util[_0x0d61('0x11')]('%s.%s',_0x1e6bf9,_0x222734?'zip':'csv'):null);});})['catch'](function(_0x3d586b){logger['info'](util[_0x0d61('0x11')](_0x0d61('0x28'),EXTRACTED_REPORT_ID,_0x0d61('0xc')),util[_0x0d61('0x29')](_0x3d586b,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x0d61('0x2a'));})[_0x0d61('0x2b')](function(){process[_0x0d61('0x2c')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x370d=['path','to-csv','bluebird','zip-dir','rimraf','dbH','analytics','argv','AnalyticExtractedReport','update','info','format','CSV','Setting','find','splitSizeCsv','then','sequelize','query','SELECT','num','Empty','split','length','range','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','dirname','basename','.csv','join','mkdirSync','%s%d.%s','writeFileSync','%s.%s','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','zip','csv','catch','inspect','Failed','finally','exit','util'];(function(_0x1937e7,_0x1ea7b2){var _0x527a00=function(_0x580a7a){while(--_0x580a7a){_0x1937e7['push'](_0x1937e7['shift']());}};_0x527a00(++_0x1ea7b2);}(_0x370d,0x92));var _0xd370=function(_0x18f6a1,_0x3d8379){_0x18f6a1=_0x18f6a1-0x0;var _0x5e3307=_0x370d[_0x18f6a1];return _0x5e3307;};'use strict';var util=require(_0xd370('0x0'));var path=require(_0xd370('0x1'));var _=require('lodash');var csv=require(_0xd370('0x2'));var fs=require('fs');var BPromise=require(_0xd370('0x3'));var zipdir=require(_0xd370('0x4'));var rimraf=require(_0xd370('0x5'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0xd370('0x6')];var logger=require('../../config/logger')(_0xd370('0x7'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0xd370('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x44bd86,_0x316c38){var _0x5e0ca8={'status':_0x44bd86};var _0x3732fa={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x316c38){_0x5e0ca8['savename']=_0x316c38;}return db[_0xd370('0x9')][_0xd370('0xa')](_0x5e0ca8,_0x3732fa);}function main(){var _0x17746e=0x1388;var _0x20eaa9;logger[_0xd370('0xb')](util[_0xd370('0xc')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xd370('0xd')));return db[_0xd370('0xe')][_0xd370('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0xd370('0x10')]})['then'](function(_0x19cea4){if(_0x19cea4){_0x20eaa9=_0x19cea4;_0x17746e=_0x20eaa9[_0xd370('0x10')]||0x1388;}})[_0xd370('0x11')](function(){return dbH[_0xd370('0x12')][_0xd370('0x13')](util[_0xd370('0xc')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0xd370('0x12')]['QueryTypes'][_0xd370('0x14')]});})[_0xd370('0x11')](function(_0x37945a){if(!_0x37945a[0x0][_0xd370('0x15')]){return analyticExtractedReport(_0xd370('0x16'));}var _0xc69439=[];var _0x232d1d=0x0;if(_0x20eaa9[_0xd370('0x17')]){if(_0x37945a&&_0x37945a[_0xd370('0x18')]){var _0x53f7f1=_[_0xd370('0x19')](_0x37945a[0x0][_0xd370('0x15')]/_0x17746e);var _0x2aecae=Number[_0xd370('0x1a')](_0x37945a[0x0][_0xd370('0x15')]/_0x17746e)?_0x37945a[0x0]['num']%_0x17746e:0x0;_0x53f7f1[_0xd370('0x1b')](function(_0x3af35f){if(_0x3af35f>0x0){_0x232d1d+=_0x17746e;}_0xc69439[_0xd370('0x1c')](dbH[_0xd370('0x12')][_0xd370('0x13')](util[_0xd370('0xc')](_0xd370('0x1d'),QUERY,_0x17746e,_0x232d1d),{'type':dbH[_0xd370('0x12')][_0xd370('0x1e')][_0xd370('0x14')]}));});if(_0x2aecae>0x0){_0x232d1d+=_0x17746e;_0xc69439[_0xd370('0x1c')](dbH['sequelize'][_0xd370('0x13')](util[_0xd370('0xc')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x2aecae,_0x232d1d),{'type':dbH[_0xd370('0x12')]['QueryTypes']['SELECT']}));}}}else{_0xc69439[_0xd370('0x1c')](dbH[_0xd370('0x12')][_0xd370('0x13')](QUERY,{'type':dbH[_0xd370('0x12')][_0xd370('0x1e')][_0xd370('0x14')]}));}var _0x1a1cac=path[_0xd370('0x1f')](PATH);var _0x36956d=path[_0xd370('0x20')](PATH,_0xd370('0x21'));var _0x3bc7dc=_0x20eaa9[_0xd370('0x17')]&&_0xc69439[_0xd370('0x18')]>0x1;var _0x63fcba=[];if(!fs['existsSync'](path[_0xd370('0x22')](_0x1a1cac,_0x36956d))&&_0x3bc7dc){fs[_0xd370('0x23')](path[_0xd370('0x22')](_0x1a1cac,_0x36956d));}return BPromise['each'](_0xc69439,function(_0x13d414){_0x63fcba[_0xd370('0x1c')](_0x13d414);})[_0xd370('0x11')](function(){for(var _0x2e6765=0x0;_0x2e6765<_0x63fcba[_0xd370('0x18')];_0x2e6765+=0x1){var _0x95f2af;var _0x1118f2=_0x63fcba[_0x2e6765];if(_0x3bc7dc){_0x95f2af=path[_0xd370('0x22')](_0x1a1cac,_0x36956d,util['format'](_0xd370('0x24'),_0x36956d,_0x2e6765,'csv'));}else{_0x95f2af=path['join'](_0x1a1cac,util[_0xd370('0xc')]('%s.%s',_0x36956d,'csv'));}fs[_0xd370('0x25')](_0x95f2af,csv(_0x1118f2));}})[_0xd370('0x11')](function(){if(_0x3bc7dc){return new Promise(function(_0x122030){zipdir(path[_0xd370('0x22')](_0x1a1cac,_0x36956d),{'saveTo':path[_0xd370('0x22')](_0x1a1cac,util[_0xd370('0xc')](_0xd370('0x26'),_0x36956d,'zip'))},function(_0x43bed7,_0xedce18){rimraf(path['join'](_0x1a1cac,_0x36956d),function(){});_0x122030(_0xd370('0x27'));});});}})[_0xd370('0x11')](function(){logger[_0xd370('0xb')](util[_0xd370('0xc')](_0xd370('0x28'),EXTRACTED_REPORT_ID,_0xd370('0xd')));return analyticExtractedReport(_0xd370('0x29'),_0x3bc7dc?util[_0xd370('0xc')](_0xd370('0x26'),_0x36956d,_0x3bc7dc?_0xd370('0x2a'):_0xd370('0x2b')):null);});})[_0xd370('0x2c')](function(_0x227cc6){logger[_0xd370('0xb')](util['format']('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xd370('0xd')),util[_0xd370('0x2d')](_0x227cc6,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xd370('0x2e'));})[_0xd370('0x2f')](function(){process[_0xd370('0x30')](EXIT_CODE);});}main();
\ No newline at end of file
index a564bf8..f79306e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cdc=['Empty','Setting','find','split','splitSizePdf','then','range','isInteger','query','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','QueryTypes','SELECT','dirname','.pdf','existsSync','join','mkdirSync','each','flatten','%s%d.%s','pdf','%s.%s','all','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','center','header','pipe','finish','error','createPdfFromHTML','util','path','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','JSDOM','window','bluebird','../../mysqldb','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','pick','toString','value','fill','auto','body','push','concat','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','length','before','margin','\x20/\x20','footer','Arial','black','right','num'];(function(_0x3a7e01,_0x51204c){var _0x5b8398=function(_0x4dcfab){while(--_0x4dcfab){_0x3a7e01['push'](_0x3a7e01['shift']());}};_0x5b8398(++_0x51204c);}(_0x7cdc,0xe2));var _0xc7cd=function(_0x343a27,_0x1a57f6){_0x343a27=_0x343a27-0x0;var _0x17303f=_0x7cdc[_0x343a27];return _0x17303f;};'use strict';var _=require('lodash');var fs=require('fs');var util=require(_0xc7cd('0x0'));var path=require(_0xc7cd('0x1'));var moment=require('moment');var htmlToPdfmake=require(_0xc7cd('0x2'));var PdfPrinter=require(_0xc7cd('0x3'));var zipdir=require(_0xc7cd('0x4'));var rimraf=require(_0xc7cd('0x5'));var JSDOM=require('jsdom')[_0xc7cd('0x6')];var window=new JSDOM('')[_0xc7cd('0x7')];var BPromise=require(_0xc7cd('0x8'));var db=require(_0xc7cd('0x9'))['db'];var dbH=require(_0xc7cd('0x9'))['dbH'];var logger=require('../../config/logger')('analytics');var EXTRACTED_REPORT_ID=Number(process[_0xc7cd('0xa')][0x2]);var QUERY=process[_0xc7cd('0xa')][0x3];var PATH=process[_0xc7cd('0xa')][0x4];var NAME=process[_0xc7cd('0xa')][0x5];var FORMAT=_0xc7cd('0xb');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x320233,_0x34ff22){var _0x5c54d1={'status':_0x320233};var _0x19463f={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x34ff22){_0x5c54d1[_0xc7cd('0xc')]=_0x34ff22;}return db[_0xc7cd('0xd')][_0xc7cd('0xe')](_0x5c54d1,_0x19463f);}function getHeaders(_0x220113){return _['map'](_0x220113,function(_0x80ff69){return{'text':_0x80ff69,'style':'tableHeader'};});}function getRows(_0x3d58be,_0x5838d9){return _[_0xc7cd('0xf')](_0x5838d9,function(_0x58bc30){return _(_0x58bc30)[_0xc7cd('0x10')](_0x3d58be)[_0xc7cd('0xf')](function(_0x5a3b0b){return _0x5a3b0b?_[_0xc7cd('0x11')](_0x5a3b0b):'';})[_0xc7cd('0x12')]();});}function createTable(_0x568a1c,_0x3ee606){var _0x5c7e59={'widths':_[_0xc7cd('0x13')](Array(_0x568a1c['length']),0x91),'heights':function(_0x4b522c){return _0x4b522c===0x0?_0xc7cd('0x14'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x3b8048=getHeaders(_0x568a1c);_0x5c7e59[_0xc7cd('0x15')][_0xc7cd('0x16')](_0x3b8048);var _0x9d9e14=getRows(_0x568a1c,_0x3ee606);_0x5c7e59[_0xc7cd('0x15')]=_0x5c7e59['body'][_0xc7cd('0x17')](_0x9d9e14);return _0x5c7e59;}function createTables(_0x29503f){var _0x3d3d34=[];var _0x4d832c=_['chunk'](Object['keys'](_0x29503f[0x0]),0x5);_0x4d832c[_0xc7cd('0x18')](function(_0x1c6b23){_0x3d3d34[_0xc7cd('0x16')](createTable(_0x1c6b23,_0x29503f));});return _0x3d3d34;}function getPDFDocDefinition(_0x3f55fb){var _0x172d2f=util[_0xc7cd('0x19')](_0xc7cd('0x1a'),NAME,EXTRACTED_REPORT[_0xc7cd('0x1b')],moment(EXTRACTED_REPORT[_0xc7cd('0x1c')])['format'](FORMAT),moment(EXTRACTED_REPORT['endDate'])['format'](FORMAT));var _0x229685=[];for(var _0x3f38e5=0x0;_0x3f38e5<_0x3f55fb[_0xc7cd('0x1d')];_0x3f38e5++){var _0x4686e3=[];if(_0x3f38e5===0x0){_0x4686e3['push']({'text':_0x172d2f,'style':'header'});}var _0x489f72={'table':_0x3f55fb[_0x3f38e5]};if(_0x3f38e5>0x0){_0x489f72['pageBreak']=_0xc7cd('0x1e');_0x489f72[_0xc7cd('0x1f')]=[0x0,0x46,0x0,0x0];}_0x4686e3[_0xc7cd('0x16')](_0x489f72);_0x229685[_0xc7cd('0x16')](_0x4686e3);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x229685,'footer':function(_0x33f908,_0x5d9da8){return{'text':_0x33f908[_0xc7cd('0x11')]()+_0xc7cd('0x20')+_0x5d9da8,'style':_0xc7cd('0x21')};},'defaultStyle':{'font':_0xc7cd('0x22')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0xc7cd('0x23')},'footer':{'alignment':_0xc7cd('0x24'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x399f8c){var _0x44df6e=0x1388;var _0x1e421b;if(!_0x399f8c[0x0][_0xc7cd('0x25')]){return analyticExtractedReport(_0xc7cd('0x26'));}return db[_0xc7cd('0x27')][_0xc7cd('0x28')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xc7cd('0x29'),_0xc7cd('0x2a')]})[_0xc7cd('0x2b')](function(_0x5a126e){if(_0x5a126e){_0x1e421b=_0x5a126e;_0x44df6e=_0x1e421b[_0xc7cd('0x2a')]||0x3e8;}})['then'](function(){var _0x4b6d94=[];var _0x44c450=0x0;if(_0x1e421b[_0xc7cd('0x29')]){if(_0x399f8c&&_0x399f8c[_0xc7cd('0x1d')]){var _0x5dd1f9=_[_0xc7cd('0x2c')](_0x399f8c[0x0][_0xc7cd('0x25')]/_0x44df6e);var _0x50a7e5=Number[_0xc7cd('0x2d')](_0x399f8c[0x0][_0xc7cd('0x25')]/_0x44df6e)?_0x399f8c[0x0][_0xc7cd('0x25')]%_0x44df6e:0x0;_0x5dd1f9[_0xc7cd('0x18')](function(_0x129758){if(_0x129758>0x0){_0x44c450+=_0x44df6e;}_0x4b6d94['push'](dbH['sequelize'][_0xc7cd('0x2e')](util[_0xc7cd('0x19')](_0xc7cd('0x2f'),QUERY,_0x44df6e,_0x44c450),{'type':dbH[_0xc7cd('0x30')][_0xc7cd('0x31')][_0xc7cd('0x32')]}));});if(_0x50a7e5>0x0){_0x44c450+=_0x44df6e;_0x4b6d94[_0xc7cd('0x16')](dbH[_0xc7cd('0x30')]['query'](util[_0xc7cd('0x19')](_0xc7cd('0x2f'),QUERY,_0x50a7e5,_0x44c450),{'type':dbH[_0xc7cd('0x30')]['QueryTypes'][_0xc7cd('0x32')]}));}}}else{_0x4b6d94[_0xc7cd('0x16')](dbH[_0xc7cd('0x30')][_0xc7cd('0x2e')](QUERY,{'type':dbH[_0xc7cd('0x30')]['QueryTypes']['SELECT']}));}var _0x1ff777=path[_0xc7cd('0x33')](PATH);var _0xe9035b=path['basename'](PATH,_0xc7cd('0x34'));var _0x250787=_0x1e421b[_0xc7cd('0x29')]&&_0x4b6d94[_0xc7cd('0x1d')]>0x1;var _0x8baa40=[];if(!fs[_0xc7cd('0x35')](path[_0xc7cd('0x36')](_0x1ff777,_0xe9035b))&&_0x250787){fs[_0xc7cd('0x37')](path[_0xc7cd('0x36')](_0x1ff777,_0xe9035b));}return BPromise[_0xc7cd('0x38')](_0x4b6d94,function(_0x2e01eb){_0x8baa40['push'](_0x2e01eb);})[_0xc7cd('0x2b')](function(){var _0x325494=[];for(var _0x56e28a=0x0;_0x56e28a<_0x8baa40['length'];_0x56e28a+=0x1){var _0x9f1d64=_0x8baa40[_0x56e28a];var _0xc7591d=createTables(_[_0xc7cd('0x39')](_0x9f1d64));var _0x2865ec;var _0x33f054=getPDFDocDefinition(_0xc7591d);var _0x501bea=getPDFPrinter();var _0x39bc59=_0x501bea['createPdfKitDocument'](_0x33f054);if(_0x250787){_0x2865ec=path[_0xc7cd('0x36')](_0x1ff777,_0xe9035b,util[_0xc7cd('0x19')](_0xc7cd('0x3a'),_0xe9035b,_0x56e28a,_0xc7cd('0x3b')));}else{_0x2865ec=path[_0xc7cd('0x36')](_0x1ff777,util[_0xc7cd('0x19')](_0xc7cd('0x3c'),_0xe9035b,_0xc7cd('0x3b')));}_0x325494[_0xc7cd('0x16')](writePDFDocument(_0x39bc59,_0x2865ec));}return Promise[_0xc7cd('0x3d')](_0x325494);})[_0xc7cd('0x2b')](function(){if(_0x250787){return new Promise(function(_0x1f2db2){zipdir(path['join'](_0x1ff777,_0xe9035b),{'saveTo':path['join'](_0x1ff777,util['format'](_0xc7cd('0x3c'),_0xe9035b,_0xc7cd('0x3e')))},function(){rimraf(path[_0xc7cd('0x36')](_0x1ff777,_0xe9035b),function(){});_0x1f2db2(_0xc7cd('0x3f'));});});}})[_0xc7cd('0x2b')](function(){if(!_0x250787)return;rimraf(path[_0xc7cd('0x36')](_0x1ff777,_0xe9035b),function(){});})[_0xc7cd('0x2b')](function(){logger[_0xc7cd('0x40')](util['format'](_0xc7cd('0x41'),EXTRACTED_REPORT_ID,_0xc7cd('0x42')));return analyticExtractedReport(_0xc7cd('0x43'),_0x250787?util[_0xc7cd('0x19')](_0xc7cd('0x3c'),_0xe9035b,_0x250787?_0xc7cd('0x3e'):_0xc7cd('0x3b')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0xc7cd('0x19')](_0xc7cd('0x44'),EXTRACTED_REPORT_ID,_0xc7cd('0x42')));return db[_0xc7cd('0xd')][_0xc7cd('0x45')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xc7cd('0x2b')](function(_0xe2cda2){EXTRACTED_REPORT=_0xe2cda2;return dbH[_0xc7cd('0x30')]['query'](util[_0xc7cd('0x19')](_0xc7cd('0x46'),QUERY),{'type':dbH[_0xc7cd('0x30')][_0xc7cd('0x31')][_0xc7cd('0x32')]});})[_0xc7cd('0x2b')](extractReport)['catch'](function(_0x2ebc2e){logger[_0xc7cd('0x40')](util['format'](_0xc7cd('0x47'),EXTRACTED_REPORT_ID,'PDF'),util['inspect'](_0x2ebc2e,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xc7cd('0x48'));})[_0xc7cd('0x49')](function(){process[_0xc7cd('0x4a')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x144f3b=new PdfPrinter({'Arial':{'normal':__dirname+_0xc7cd('0x4b'),'bold':__dirname+_0xc7cd('0x4c'),'italics':__dirname+_0xc7cd('0x4d'),'bolditalics':__dirname+_0xc7cd('0x4e')}});return _0x144f3b;}function getPDFDocDefinitionFromHTML(_0x54d3ee,_0x4770b2){var _0x4804e8=util[_0xc7cd('0x19')](_0xc7cd('0x4f'),_0x4770b2[_0xc7cd('0x50')],_0x4770b2[_0xc7cd('0x51')]);var _0x2d6f79=moment()[_0xc7cd('0x19')]('YYYY-MM-DD')[_0xc7cd('0x11')]();var _0xea17e5=htmlToPdfmake(_0x54d3ee,{'window':window,'tableAutoSize':!![]});return{'content':[_0xea17e5],'defaultStyle':{'font':_0xc7cd('0x22')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','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':_0xc7cd('0x52')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':_0xc7cd('0x53')}];},'footer':function(_0x65ba59,_0x291f1e){return[{'text':util['format']('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x4804e8,_0x65ba59,_0x291f1e,_0x2d6f79),'style':_0xc7cd('0x21')}];}};}function writePDFDocument(_0x283a41,_0xd83857){return new Promise(function(_0x1064f6,_0x1fd294){var _0x22bbce=_0x283a41[_0xc7cd('0x54')](fs['createWriteStream'](_0xd83857));_0x22bbce['on']('finish',function(){_0x1064f6(_0xc7cd('0x55'));});_0x22bbce['on'](_0xc7cd('0x56'),function(_0x4fc70a){_0x1fd294(_0x4fc70a);});_0x283a41['end']();});}exports[_0xc7cd('0x57')]=function(_0x2766d4,_0x357b07){var _0xea62bc=getPDFPrinter();var _0x2dde7e=getPDFDocDefinitionFromHTML(_0x2766d4,_0x357b07);var _0x51fcd6=_0xea62bc['createPdfKitDocument'](_0x2dde7e);return writePDFDocument(_0x51fcd6,_0x357b07[_0xc7cd('0x1')])['catch'](function(_0x32e0ab){throw _0x32e0ab;});};
\ No newline at end of file
+var _0x1356=['landscape','right','num','Setting','split','splitSizePdf','then','range','isInteger','query','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','QueryTypes','SELECT','dirname','basename','.pdf','existsSync','join','mkdirSync','createPdfKitDocument','pdf','%s.%s','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Completed','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','inspect','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','Arial','center','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','footer','createWriteStream','finish','error','end','createPdfFromHTML','lodash','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','window','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','tableHeader','toString','value','fill','length','auto','body','push','concat','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','header','margin'];(function(_0x1a3306,_0x2bcb81){var _0x48b05c=function(_0x49ad93){while(--_0x49ad93){_0x1a3306['push'](_0x1a3306['shift']());}};_0x48b05c(++_0x2bcb81);}(_0x1356,0x192));var _0x6135=function(_0x14f027,_0x59ff03){_0x14f027=_0x14f027-0x0;var _0x292172=_0x1356[_0x14f027];return _0x292172;};'use strict';var _=require(_0x6135('0x0'));var fs=require('fs');var util=require('util');var path=require(_0x6135('0x1'));var moment=require(_0x6135('0x2'));var htmlToPdfmake=require(_0x6135('0x3'));var PdfPrinter=require(_0x6135('0x4'));var zipdir=require(_0x6135('0x5'));var rimraf=require(_0x6135('0x6'));var JSDOM=require(_0x6135('0x7'))[_0x6135('0x8')];var window=new JSDOM('')[_0x6135('0x9')];var BPromise=require(_0x6135('0xa'));var db=require(_0x6135('0xb'))['db'];var dbH=require(_0x6135('0xb'))[_0x6135('0xc')];var logger=require(_0x6135('0xd'))(_0x6135('0xe'));var EXTRACTED_REPORT_ID=Number(process[_0x6135('0xf')][0x2]);var QUERY=process[_0x6135('0xf')][0x3];var PATH=process[_0x6135('0xf')][0x4];var NAME=process['argv'][0x5];var FORMAT=_0x6135('0x10');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x25fe6a,_0xa577e8){var _0x13323={'status':_0x25fe6a};var _0x6819c5={'where':{'id':EXTRACTED_REPORT_ID}};if(_0xa577e8){_0x13323[_0x6135('0x11')]=_0xa577e8;}return db[_0x6135('0x12')][_0x6135('0x13')](_0x13323,_0x6819c5);}function getHeaders(_0x36bf1e){return _[_0x6135('0x14')](_0x36bf1e,function(_0x366330){return{'text':_0x366330,'style':_0x6135('0x15')};});}function getRows(_0x644261,_0x3dabb3){return _['map'](_0x3dabb3,function(_0x382dc5){return _(_0x382dc5)['pick'](_0x644261)['map'](function(_0x51d590){return _0x51d590?_[_0x6135('0x16')](_0x51d590):'';})[_0x6135('0x17')]();});}function createTable(_0x350a0d,_0x3db29e){var _0x287657={'widths':_[_0x6135('0x18')](Array(_0x350a0d[_0x6135('0x19')]),0x91),'heights':function(_0x584a86){return _0x584a86===0x0?_0x6135('0x1a'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x3da1b0=getHeaders(_0x350a0d);_0x287657[_0x6135('0x1b')][_0x6135('0x1c')](_0x3da1b0);var _0x148824=getRows(_0x350a0d,_0x3db29e);_0x287657[_0x6135('0x1b')]=_0x287657[_0x6135('0x1b')][_0x6135('0x1d')](_0x148824);return _0x287657;}function createTables(_0x51010b){var _0x48d7e8=[];var _0x3f2692=_['chunk'](Object['keys'](_0x51010b[0x0]),0x5);_0x3f2692[_0x6135('0x1e')](function(_0x198696){_0x48d7e8[_0x6135('0x1c')](createTable(_0x198696,_0x51010b));});return _0x48d7e8;}function getPDFDocDefinition(_0x249d81){var _0x3f9048=util[_0x6135('0x1f')](_0x6135('0x20'),NAME,EXTRACTED_REPORT[_0x6135('0x21')],moment(EXTRACTED_REPORT[_0x6135('0x22')])[_0x6135('0x1f')](FORMAT),moment(EXTRACTED_REPORT[_0x6135('0x23')])[_0x6135('0x1f')](FORMAT));var _0x2562f1=[];for(var _0x16ebde=0x0;_0x16ebde<_0x249d81[_0x6135('0x19')];_0x16ebde++){var _0x244bbf=[];if(_0x16ebde===0x0){_0x244bbf[_0x6135('0x1c')]({'text':_0x3f9048,'style':_0x6135('0x24')});}var _0x397fbb={'table':_0x249d81[_0x16ebde]};if(_0x16ebde>0x0){_0x397fbb['pageBreak']='before';_0x397fbb[_0x6135('0x25')]=[0x0,0x46,0x0,0x0];}_0x244bbf[_0x6135('0x1c')](_0x397fbb);_0x2562f1[_0x6135('0x1c')](_0x244bbf);}return{'pageSize':'A4','pageOrientation':_0x6135('0x26'),'content':_0x2562f1,'footer':function(_0x379bb3,_0x1b2925){return{'text':_0x379bb3[_0x6135('0x16')]()+'\x20/\x20'+_0x1b2925,'style':'footer'};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':_0x6135('0x27'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x9068da){var _0x1c3bc1=0x1388;var _0x4db563;if(!_0x9068da[0x0][_0x6135('0x28')]){return analyticExtractedReport('Empty');}return db[_0x6135('0x29')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x6135('0x2a'),_0x6135('0x2b')]})[_0x6135('0x2c')](function(_0x1b8428){if(_0x1b8428){_0x4db563=_0x1b8428;_0x1c3bc1=_0x4db563[_0x6135('0x2b')]||0x3e8;}})['then'](function(){var _0x3e4fc2=[];var _0x38aee3=0x0;if(_0x4db563[_0x6135('0x2a')]){if(_0x9068da&&_0x9068da[_0x6135('0x19')]){var _0x57533f=_[_0x6135('0x2d')](_0x9068da[0x0]['num']/_0x1c3bc1);var _0x35a38e=Number[_0x6135('0x2e')](_0x9068da[0x0][_0x6135('0x28')]/_0x1c3bc1)?_0x9068da[0x0]['num']%_0x1c3bc1:0x0;_0x57533f[_0x6135('0x1e')](function(_0x398ce8){if(_0x398ce8>0x0){_0x38aee3+=_0x1c3bc1;}_0x3e4fc2[_0x6135('0x1c')](dbH['sequelize'][_0x6135('0x2f')](util[_0x6135('0x1f')](_0x6135('0x30'),QUERY,_0x1c3bc1,_0x38aee3),{'type':dbH['sequelize']['QueryTypes']['SELECT']}));});if(_0x35a38e>0x0){_0x38aee3+=_0x1c3bc1;_0x3e4fc2['push'](dbH[_0x6135('0x31')][_0x6135('0x2f')](util[_0x6135('0x1f')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x35a38e,_0x38aee3),{'type':dbH[_0x6135('0x31')][_0x6135('0x32')][_0x6135('0x33')]}));}}}else{_0x3e4fc2[_0x6135('0x1c')](dbH[_0x6135('0x31')][_0x6135('0x2f')](QUERY,{'type':dbH[_0x6135('0x31')][_0x6135('0x32')][_0x6135('0x33')]}));}var _0x2dfe69=path[_0x6135('0x34')](PATH);var _0x2a0ac2=path[_0x6135('0x35')](PATH,_0x6135('0x36'));var _0x579116=_0x4db563['split']&&_0x3e4fc2['length']>0x1;var _0x530333=[];if(!fs[_0x6135('0x37')](path[_0x6135('0x38')](_0x2dfe69,_0x2a0ac2))&&_0x579116){fs[_0x6135('0x39')](path[_0x6135('0x38')](_0x2dfe69,_0x2a0ac2));}return BPromise['each'](_0x3e4fc2,function(_0x17bc19){_0x530333[_0x6135('0x1c')](_0x17bc19);})[_0x6135('0x2c')](function(){var _0x39f7cb=[];for(var _0x4958bd=0x0;_0x4958bd<_0x530333[_0x6135('0x19')];_0x4958bd+=0x1){var _0x4ed8b5=_0x530333[_0x4958bd];var _0x1a14f5=createTables(_['flatten'](_0x4ed8b5));var _0x259c51;var _0x5818c6=getPDFDocDefinition(_0x1a14f5);var _0xe33014=getPDFPrinter();var _0x5a82f3=_0xe33014[_0x6135('0x3a')](_0x5818c6);if(_0x579116){_0x259c51=path[_0x6135('0x38')](_0x2dfe69,_0x2a0ac2,util[_0x6135('0x1f')]('%s%d.%s',_0x2a0ac2,_0x4958bd,_0x6135('0x3b')));}else{_0x259c51=path[_0x6135('0x38')](_0x2dfe69,util[_0x6135('0x1f')](_0x6135('0x3c'),_0x2a0ac2,_0x6135('0x3b')));}_0x39f7cb[_0x6135('0x1c')](writePDFDocument(_0x5a82f3,_0x259c51));}return Promise['all'](_0x39f7cb);})['then'](function(){if(_0x579116){return new Promise(function(_0x540ca6){zipdir(path['join'](_0x2dfe69,_0x2a0ac2),{'saveTo':path['join'](_0x2dfe69,util[_0x6135('0x1f')](_0x6135('0x3c'),_0x2a0ac2,'zip'))},function(){rimraf(path[_0x6135('0x38')](_0x2dfe69,_0x2a0ac2),function(){});_0x540ca6(_0x6135('0x3d'));});});}})['then'](function(){if(!_0x579116)return;rimraf(path[_0x6135('0x38')](_0x2dfe69,_0x2a0ac2),function(){});})[_0x6135('0x2c')](function(){logger['info'](util[_0x6135('0x1f')](_0x6135('0x3e'),EXTRACTED_REPORT_ID,_0x6135('0x3f')));return analyticExtractedReport(_0x6135('0x40'),_0x579116?util[_0x6135('0x1f')](_0x6135('0x3c'),_0x2a0ac2,_0x579116?'zip':_0x6135('0x3b')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x6135('0x41')](util[_0x6135('0x1f')](_0x6135('0x42'),EXTRACTED_REPORT_ID,'PDF'));return db['AnalyticExtractedReport'][_0x6135('0x43')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x6135('0x2c')](function(_0x1fe6e5){EXTRACTED_REPORT=_0x1fe6e5;return dbH[_0x6135('0x31')][_0x6135('0x2f')](util[_0x6135('0x1f')](_0x6135('0x44'),QUERY),{'type':dbH[_0x6135('0x31')][_0x6135('0x32')][_0x6135('0x33')]});})['then'](extractReport)['catch'](function(_0x27a887){logger[_0x6135('0x41')](util[_0x6135('0x1f')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x6135('0x3f')),util[_0x6135('0x45')](_0x27a887,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x6135('0x46')](function(){process[_0x6135('0x47')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x194e5d=new PdfPrinter({'Arial':{'normal':__dirname+_0x6135('0x48'),'bold':__dirname+_0x6135('0x49'),'italics':__dirname+_0x6135('0x4a'),'bolditalics':__dirname+_0x6135('0x4b')}});return _0x194e5d;}function getPDFDocDefinitionFromHTML(_0x17b9b3,_0x1bea71){var _0x384a4c=util['format'](_0x6135('0x4c'),_0x1bea71[_0x6135('0x4d')],_0x1bea71[_0x6135('0x4e')]);var _0x53e622=moment()['format']('YYYY-MM-DD')['toString']();var _0x15bf6e=htmlToPdfmake(_0x17b9b3,{'window':window,'tableAutoSize':!![]});return{'content':[_0x15bf6e],'defaultStyle':{'font':_0x6135('0x4f')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x6135('0x50'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x6135('0x50'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x6135('0x50')}},'header':function(){return[{'text':'Interaction\x20Transcript','style':_0x6135('0x24')}];},'footer':function(_0x4188f1,_0x2f3b90){return[{'text':util[_0x6135('0x1f')](_0x6135('0x51'),_0x384a4c,_0x4188f1,_0x2f3b90,_0x53e622),'style':_0x6135('0x52')}];}};}function writePDFDocument(_0x2d683b,_0x3deada){return new Promise(function(_0x1e8c71,_0x1cec1a){var _0x3466d6=_0x2d683b['pipe'](fs[_0x6135('0x53')](_0x3deada));_0x3466d6['on'](_0x6135('0x54'),function(){_0x1e8c71(_0x6135('0x54'));});_0x3466d6['on'](_0x6135('0x55'),function(_0xfdb1c){_0x1cec1a(_0xfdb1c);});_0x2d683b[_0x6135('0x56')]();});}exports[_0x6135('0x57')]=function(_0x5a7cb8,_0x79fa1d){var _0x4dfc02=getPDFPrinter();var _0x1acdd1=getPDFDocDefinitionFromHTML(_0x5a7cb8,_0x79fa1d);var _0x10b9d5=_0x4dfc02['createPdfKitDocument'](_0x1acdd1);return writePDFDocument(_0x10b9d5,_0x79fa1d[_0x6135('0x1')])['catch'](function(_0x1e93fd){throw _0x1e93fd;});};
\ No newline at end of file
index 507c7dd..0e5f5c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3a1=['then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','num','Empty','length','range','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','dirname','basename','.xlsx','existsSync','each','join','%s%d.%s','xlsx','writeFileSync','binary','%s.%s','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','finally','exit','bluebird','zip-dir','rimraf','../../mysqldb','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','split','splitSizeXlsx'];(function(_0x1df961,_0x5b4790){var _0x2ca88a=function(_0x489944){while(--_0x489944){_0x1df961['push'](_0x1df961['shift']());}};_0x2ca88a(++_0x5b4790);}(_0xe3a1,0x10a));var _0x1e3a=function(_0x35d262,_0x3b0b54){_0x35d262=_0x35d262-0x0;var _0x44b875=_0xe3a1[_0x35d262];return _0x44b875;};'use strict';var util=require('util');var path=require('path');var _=require('lodash');var fs=require('fs');var json2xls=require('json2xls');var BPromise=require(_0x1e3a('0x0'));var zipdir=require(_0x1e3a('0x1'));var rimraf=require(_0x1e3a('0x2'));var db=require('../../mysqldb')['db'];var dbH=require(_0x1e3a('0x3'))['dbH'];var logger=require('../../config/logger')('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x1e3a('0x4')][0x2]);var QUERY=process[_0x1e3a('0x4')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x556ace,_0x11d6d2){var _0x52d2f0={'status':_0x556ace};var _0x226391={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x11d6d2){_0x52d2f0[_0x1e3a('0x5')]=_0x11d6d2;}return db[_0x1e3a('0x6')][_0x1e3a('0x7')](_0x52d2f0,_0x226391);}function main(){var _0x4ff198=0x1388;var _0x3c4b81;logger[_0x1e3a('0x8')](util[_0x1e3a('0x9')](_0x1e3a('0xa'),EXTRACTED_REPORT_ID,_0x1e3a('0xb')));return db[_0x1e3a('0xc')][_0x1e3a('0xd')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x1e3a('0xe'),_0x1e3a('0xf')]})['then'](function(_0x27739c){if(_0x27739c){_0x3c4b81=_0x27739c;_0x4ff198=_0x3c4b81[_0x1e3a('0xf')]||0x1388;}})[_0x1e3a('0x10')](function(){return dbH[_0x1e3a('0x11')][_0x1e3a('0x12')](util[_0x1e3a('0x9')](_0x1e3a('0x13'),QUERY),{'type':dbH[_0x1e3a('0x11')]['QueryTypes']['SELECT']});})['then'](function(_0x10ee5a){if(!_0x10ee5a[0x0][_0x1e3a('0x14')]){return analyticExtractedReport(_0x1e3a('0x15'));}var _0x102f24=[];var _0x4d855b=0x0;if(_0x3c4b81['split']){if(_0x10ee5a&&_0x10ee5a[_0x1e3a('0x16')]){var _0x3e4b62=_[_0x1e3a('0x17')](_0x10ee5a[0x0][_0x1e3a('0x14')]/_0x4ff198);var _0x1b0ed9=Number['isInteger'](_0x10ee5a[0x0]['num']/_0x4ff198)?_0x10ee5a[0x0][_0x1e3a('0x14')]%_0x4ff198:0x0;_0x3e4b62[_0x1e3a('0x18')](function(_0x10a263){if(_0x10a263>0x0){_0x4d855b+=_0x4ff198;}_0x102f24[_0x1e3a('0x19')](dbH[_0x1e3a('0x11')]['query'](util['format'](_0x1e3a('0x1a'),QUERY,_0x4ff198,_0x4d855b),{'type':dbH[_0x1e3a('0x11')][_0x1e3a('0x1b')][_0x1e3a('0x1c')]}));});if(_0x1b0ed9>0x0){_0x4d855b+=_0x4ff198;_0x102f24[_0x1e3a('0x19')](dbH['sequelize'][_0x1e3a('0x12')](util[_0x1e3a('0x9')](_0x1e3a('0x1a'),QUERY,_0x1b0ed9,_0x4d855b),{'type':dbH['sequelize']['QueryTypes'][_0x1e3a('0x1c')]}));}}}else{_0x102f24[_0x1e3a('0x19')](dbH['sequelize']['query'](QUERY,{'type':dbH['sequelize'][_0x1e3a('0x1b')][_0x1e3a('0x1c')]}));}var _0x30bfd0=path[_0x1e3a('0x1d')](PATH);var _0x4390b0=path[_0x1e3a('0x1e')](PATH,_0x1e3a('0x1f'));var _0x287dd1=_0x3c4b81[_0x1e3a('0xe')]&&_0x102f24['length']>0x1;var _0x387115=[];if(!fs[_0x1e3a('0x20')](path['join'](_0x30bfd0,_0x4390b0))&&_0x287dd1){fs['mkdirSync'](path['join'](_0x30bfd0,_0x4390b0));}return BPromise[_0x1e3a('0x21')](_0x102f24,function(_0x3a6830){_0x387115[_0x1e3a('0x19')](_0x3a6830);})['then'](function(){for(var _0x1c1f7f=0x0;_0x1c1f7f<_0x387115[_0x1e3a('0x16')];_0x1c1f7f+=0x1){var _0x56b9ee;var _0x143fde=_0x387115[_0x1c1f7f];if(_0x287dd1){_0x56b9ee=path[_0x1e3a('0x22')](_0x30bfd0,_0x4390b0,util[_0x1e3a('0x9')](_0x1e3a('0x23'),_0x4390b0,_0x1c1f7f,_0x1e3a('0x24')));}else{_0x56b9ee=path[_0x1e3a('0x22')](_0x30bfd0,util[_0x1e3a('0x9')]('%s.%s',_0x4390b0,'xlsx'));}fs[_0x1e3a('0x25')](_0x56b9ee,json2xls(_0x143fde),_0x1e3a('0x26'));}})[_0x1e3a('0x10')](function(){if(_0x287dd1){return new Promise(function(_0x2eefea){zipdir(path['join'](_0x30bfd0,_0x4390b0),{'saveTo':path['join'](_0x30bfd0,util[_0x1e3a('0x9')](_0x1e3a('0x27'),_0x4390b0,_0x1e3a('0x28')))},function(_0x37e665,_0x47731d){rimraf(path[_0x1e3a('0x22')](_0x30bfd0,_0x4390b0),function(){});_0x2eefea('zip\x20finished');});});}})[_0x1e3a('0x10')](function(){logger[_0x1e3a('0x8')](util[_0x1e3a('0x9')](_0x1e3a('0x29'),EXTRACTED_REPORT_ID,_0x1e3a('0xb')));return analyticExtractedReport(_0x1e3a('0x2a'),_0x287dd1?util[_0x1e3a('0x9')]('%s.%s',_0x4390b0,_0x287dd1?'zip':_0x1e3a('0x24')):null);});})[_0x1e3a('0x2b')](function(_0x315aa6){logger[_0x1e3a('0x8')](util[_0x1e3a('0x9')](_0x1e3a('0x2c'),EXTRACTED_REPORT_ID,_0x1e3a('0xb')),util['inspect'](_0x315aa6,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x1e3a('0x2d')](function(){process[_0x1e3a('0x2e')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xe56e=['push','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','.xlsx','existsSync','join','mkdirSync','each','xlsx','writeFileSync','binary','%s.%s','zip','zip\x20finished','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','exit','util','lodash','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','update','info','format','XLSX','Setting','find','split','splitSizeXlsx','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','length','range'];(function(_0x2abad4,_0x4bdbf7){var _0x55f1e1=function(_0x3b28fe){while(--_0x3b28fe){_0x2abad4['push'](_0x2abad4['shift']());}};_0x55f1e1(++_0x4bdbf7);}(_0xe56e,0xd8));var _0xee56=function(_0x482bb2,_0x3f3405){_0x482bb2=_0x482bb2-0x0;var _0x4dc2b2=_0xe56e[_0x482bb2];return _0x4dc2b2;};'use strict';var util=require(_0xee56('0x0'));var path=require('path');var _=require(_0xee56('0x1'));var fs=require('fs');var json2xls=require('json2xls');var BPromise=require(_0xee56('0x2'));var zipdir=require(_0xee56('0x3'));var rimraf=require(_0xee56('0x4'));var db=require('../../mysqldb')['db'];var dbH=require(_0xee56('0x5'))[_0xee56('0x6')];var logger=require(_0xee56('0x7'))(_0xee56('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0xee56('0x9')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0xee56('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x2d9181,_0x1f14de){var _0x184899={'status':_0x2d9181};var _0x68e2ea={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1f14de){_0x184899[_0xee56('0xa')]=_0x1f14de;}return db[_0xee56('0xb')][_0xee56('0xc')](_0x184899,_0x68e2ea);}function main(){var _0xb48823=0x1388;var _0x3ae72f;logger[_0xee56('0xd')](util[_0xee56('0xe')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xee56('0xf')));return db[_0xee56('0x10')][_0xee56('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xee56('0x12'),_0xee56('0x13')]})[_0xee56('0x14')](function(_0x915dc0){if(_0x915dc0){_0x3ae72f=_0x915dc0;_0xb48823=_0x3ae72f[_0xee56('0x13')]||0x1388;}})['then'](function(){return dbH[_0xee56('0x15')][_0xee56('0x16')](util[_0xee56('0xe')](_0xee56('0x17'),QUERY),{'type':dbH[_0xee56('0x15')][_0xee56('0x18')][_0xee56('0x19')]});})[_0xee56('0x14')](function(_0x53bd49){if(!_0x53bd49[0x0][_0xee56('0x1a')]){return analyticExtractedReport('Empty');}var _0x3b0c2b=[];var _0x1cef1d=0x0;if(_0x3ae72f[_0xee56('0x12')]){if(_0x53bd49&&_0x53bd49[_0xee56('0x1b')]){var _0x3bbdf8=_[_0xee56('0x1c')](_0x53bd49[0x0][_0xee56('0x1a')]/_0xb48823);var _0x2cd651=Number['isInteger'](_0x53bd49[0x0]['num']/_0xb48823)?_0x53bd49[0x0][_0xee56('0x1a')]%_0xb48823:0x0;_0x3bbdf8['forEach'](function(_0x44bce7){if(_0x44bce7>0x0){_0x1cef1d+=_0xb48823;}_0x3b0c2b[_0xee56('0x1d')](dbH[_0xee56('0x15')]['query'](util[_0xee56('0xe')](_0xee56('0x1e'),QUERY,_0xb48823,_0x1cef1d),{'type':dbH['sequelize'][_0xee56('0x18')]['SELECT']}));});if(_0x2cd651>0x0){_0x1cef1d+=_0xb48823;_0x3b0c2b[_0xee56('0x1d')](dbH[_0xee56('0x15')][_0xee56('0x16')](util[_0xee56('0xe')](_0xee56('0x1e'),QUERY,_0x2cd651,_0x1cef1d),{'type':dbH[_0xee56('0x15')][_0xee56('0x18')][_0xee56('0x19')]}));}}}else{_0x3b0c2b[_0xee56('0x1d')](dbH[_0xee56('0x15')][_0xee56('0x16')](QUERY,{'type':dbH[_0xee56('0x15')][_0xee56('0x18')][_0xee56('0x19')]}));}var _0x21f1b1=path['dirname'](PATH);var _0x3860dd=path[_0xee56('0x1f')](PATH,_0xee56('0x20'));var _0x2831f7=_0x3ae72f[_0xee56('0x12')]&&_0x3b0c2b['length']>0x1;var _0x10740e=[];if(!fs[_0xee56('0x21')](path[_0xee56('0x22')](_0x21f1b1,_0x3860dd))&&_0x2831f7){fs[_0xee56('0x23')](path[_0xee56('0x22')](_0x21f1b1,_0x3860dd));}return BPromise[_0xee56('0x24')](_0x3b0c2b,function(_0x570e6b){_0x10740e[_0xee56('0x1d')](_0x570e6b);})[_0xee56('0x14')](function(){for(var _0x149052=0x0;_0x149052<_0x10740e[_0xee56('0x1b')];_0x149052+=0x1){var _0x9cd359;var _0x460770=_0x10740e[_0x149052];if(_0x2831f7){_0x9cd359=path['join'](_0x21f1b1,_0x3860dd,util['format']('%s%d.%s',_0x3860dd,_0x149052,_0xee56('0x25')));}else{_0x9cd359=path['join'](_0x21f1b1,util[_0xee56('0xe')]('%s.%s',_0x3860dd,_0xee56('0x25')));}fs[_0xee56('0x26')](_0x9cd359,json2xls(_0x460770),_0xee56('0x27'));}})[_0xee56('0x14')](function(){if(_0x2831f7){return new Promise(function(_0x3a6870){zipdir(path[_0xee56('0x22')](_0x21f1b1,_0x3860dd),{'saveTo':path[_0xee56('0x22')](_0x21f1b1,util['format'](_0xee56('0x28'),_0x3860dd,_0xee56('0x29')))},function(_0x5697e2,_0x435500){rimraf(path[_0xee56('0x22')](_0x21f1b1,_0x3860dd),function(){});_0x3a6870(_0xee56('0x2a'));});});}})[_0xee56('0x14')](function(){logger['info'](util[_0xee56('0xe')](_0xee56('0x2b'),EXTRACTED_REPORT_ID,_0xee56('0xf')));return analyticExtractedReport(_0xee56('0x2c'),_0x2831f7?util[_0xee56('0xe')](_0xee56('0x28'),_0x3860dd,_0x2831f7?'zip':_0xee56('0x25')):null);});})['catch'](function(_0xe9ed05){logger[_0xee56('0xd')](util['format'](_0xee56('0x2d'),EXTRACTED_REPORT_ID,_0xee56('0xf')),util[_0xee56('0x2e')](_0xe9ed05,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xee56('0x2f'));})['finally'](function(){process[_0xee56('0x30')](EXIT_CODE);});}main();
\ No newline at end of file
index dbfaa9c..68e3ad7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0986=['IntervalId','tag','CDR(tag)=','length','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','answer','indexOf','app','appType','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','last','concat','transaction','destroy','sortBy','catch','error','rewrite','lodash','util','models','findAll','then','intervals','VoiceExtension','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','hasOwnProperty','priority','extensions','extension','push','type','context','VoiceExtensionId','inbound','Set','CDR(routeid)=','outbound','CDR(destination)=','${EXTEN:','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','MONITOR_OPTIONS=ab','toLowerCase','createdAt','updatedAt','interval'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0986,0x1b0));var _0x6098=function(_0x3e5bbf,_0x511d33){_0x3e5bbf=_0x3e5bbf-0x0;var _0x19428f=_0x0986[_0x3e5bbf];return _0x19428f;};'use strict';var _=require(_0x6098('0x0'));var util=require(_0x6098('0x1'));function rewrite(_0x1e9a6a,_0x370707){var _0x358dbc=this;return _0x1e9a6a[_0x6098('0x2')]['Interval'][_0x6098('0x3')]({'raw':!![]})[_0x6098('0x4')](function(_0x1b8030){_0x358dbc[_0x6098('0x5')]=_0x1b8030;return _0x1e9a6a[_0x6098('0x2')]['VoiceExtension'][_0x6098('0x3')]({'where':{'IntervalId':_0x370707['IntervalId']},'raw':!![]});})[_0x6098('0x4')](function(_0xadd64b){return _0x1e9a6a[_0x6098('0x2')][_0x6098('0x6')][_0x6098('0x3')]({'where':{'exten':{'$in':_['uniq'](_[_0x6098('0x7')](_0xadd64b,_0x6098('0x8')))}},'order':[{'raw':_0x6098('0x9')}],'raw':!![]});})[_0x6098('0x4')](function(_0x2b79cf){var _0x53ed3b=_[_0x6098('0xa')](_0x2b79cf,{'priority':'1'});var _0x1829d3=_['filter'](_0x2b79cf,{'isApp':0x1});var _0x418b3f=_[_0x6098('0xb')](_0x1829d3,'exten');var _0x10e226=[_0x6098('0xc'),_0x6098('0xd')];var _0xf9a14=[];var _0x18874b=[];for(var _0x1e907f in _0x418b3f){if(_0x418b3f[_0x6098('0xe')](_0x1e907f)){_0x358dbc[_0x6098('0xf')]=0x2;_0x358dbc[_0x6098('0x10')]=[];_0x358dbc[_0x6098('0x11')]=_['find'](_0x53ed3b,{'exten':_0x418b3f[_0x1e907f][0x0]['exten']});_0x358dbc[_0x6098('0x10')][_0x6098('0x12')]({'type':_0x418b3f[_0x1e907f][0x0][_0x6098('0x13')],'app':'Set','appdata':util['format']('CDR(type)=%s',_0x418b3f[_0x1e907f][0x0][_0x6098('0x13')]),'context':_0x418b3f[_0x1e907f][0x0][_0x6098('0x14')],'exten':_0x418b3f[_0x1e907f][0x0][_0x6098('0x8')],'priority':_0x358dbc[_0x6098('0xf')]++,'VoiceExtensionId':_0x418b3f[_0x1e907f][0x0][_0x6098('0x15')]});if(_0x418b3f[_0x1e907f][0x0]['type']===_0x6098('0x16')){_0x358dbc[_0x6098('0x10')][_0x6098('0x12')]({'type':_0x418b3f[_0x1e907f][0x0]['type'],'app':_0x6098('0x17'),'appdata':_0x6098('0x18')+_0x418b3f[_0x1e907f][0x0][_0x6098('0x15')],'context':_0x418b3f[_0x1e907f][0x0][_0x6098('0x14')],'exten':_0x418b3f[_0x1e907f][0x0][_0x6098('0x8')],'priority':_0x358dbc[_0x6098('0xf')]++,'VoiceExtensionId':_0x418b3f[_0x1e907f][0x0][_0x6098('0x15')]});}else if(_0x418b3f[_0x1e907f][0x0][_0x6098('0x13')]===_0x6098('0x19')){if(_0x358dbc[_0x6098('0x11')]){_0x358dbc['extensions'][_0x6098('0x12')]({'type':_0x418b3f[_0x1e907f][0x0]['type'],'app':'Set','appdata':_0x6098('0x1a')+(_0x358dbc[_0x6098('0x11')]['cutdigits']?_0x6098('0x1b')+_0x358dbc[_0x6098('0x11')][_0x6098('0x1c')]+'}':_0x6098('0x1d')),'context':_0x418b3f[_0x1e907f][0x0][_0x6098('0x14')],'exten':_0x418b3f[_0x1e907f][0x0][_0x6098('0x8')],'priority':_0x358dbc[_0x6098('0xf')]++,'VoiceExtensionId':_0x418b3f[_0x1e907f][0x0][_0x6098('0x15')]});}_0x358dbc[_0x6098('0x10')][_0x6098('0x12')]({'type':_0x418b3f[_0x1e907f][0x0][_0x6098('0x13')],'app':_0x6098('0x17'),'appdata':_0x6098('0x18')+_0x418b3f[_0x1e907f][0x0]['VoiceExtensionId'],'context':_0x418b3f[_0x1e907f][0x0][_0x6098('0x14')],'exten':_0x418b3f[_0x1e907f][0x0][_0x6098('0x8')],'priority':_0x358dbc['priority']++,'VoiceExtensionId':_0x418b3f[_0x1e907f][0x0][_0x6098('0x15')]});var _0x1f76b6=_0x358dbc[_0x6098('0xf')]++;_0x358dbc['extensions'][_0x6098('0x12')]({'type':_0x418b3f[_0x1e907f][0x0][_0x6098('0x13')],'app':_0x6098('0x1e'),'appdata':_0x6098('0x1f')+(_0x1f76b6+0x2)+_0x6098('0x20')+(_0x1f76b6+0x1)+')','context':_0x418b3f[_0x1e907f][0x0][_0x6098('0x14')],'exten':_0x418b3f[_0x1e907f][0x0][_0x6098('0x8')],'priority':_0x1f76b6,'VoiceExtensionId':_0x418b3f[_0x1e907f][0x0][_0x6098('0x15')]});if(_0x358dbc[_0x6098('0x11')]){_0x358dbc[_0x6098('0x10')][_0x6098('0x12')]({'type':_0x418b3f[_0x1e907f][0x0]['type'],'app':_0x6098('0x17'),'appdata':_0x358dbc[_0x6098('0x11')][_0x6098('0x1c')]?_0x6098('0x21')+_0x358dbc[_0x6098('0x11')][_0x6098('0x1c')]+'}':_0x6098('0x22'),'context':_0x418b3f[_0x1e907f][0x0][_0x6098('0x14')],'exten':_0x418b3f[_0x1e907f][0x0][_0x6098('0x8')],'priority':_0x358dbc[_0x6098('0xf')]++,'VoiceExtensionId':_0x418b3f[_0x1e907f][0x0][_0x6098('0x15')]});}_0x358dbc[_0x6098('0x10')][_0x6098('0x12')]({'type':_0x418b3f[_0x1e907f][0x0]['type'],'app':_0x6098('0x17'),'appdata':'outboundrouteid='+_0x418b3f[_0x1e907f][0x0][_0x6098('0x15')],'context':_0x418b3f[_0x1e907f][0x0][_0x6098('0x14')],'exten':_0x418b3f[_0x1e907f][0x0][_0x6098('0x8')],'priority':_0x358dbc[_0x6098('0xf')]++,'VoiceExtensionId':_0x418b3f[_0x1e907f][0x0]['VoiceExtensionId']});if(_0x358dbc[_0x6098('0x11')]&&_0x358dbc['extension'][_0x6098('0xe')](_0x6098('0x23'))&&_0x358dbc[_0x6098('0x11')]['recordingFormat']!==_0x6098('0x24')){_0x358dbc['extensions'][_0x6098('0x12')]({'type':_0x418b3f[_0x1e907f][0x0][_0x6098('0x13')],'app':'Set','appdata':_0x6098('0x25'),'context':_0x418b3f[_0x1e907f][0x0][_0x6098('0x14')],'exten':_0x418b3f[_0x1e907f][0x0]['exten'],'priority':_0x358dbc[_0x6098('0xf')]++,'VoiceExtensionId':_0x418b3f[_0x1e907f][0x0][_0x6098('0x15')]});_0x358dbc[_0x6098('0x10')][_0x6098('0x12')]({'type':_0x418b3f[_0x1e907f][0x0]['type'],'app':_0x6098('0x17'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x358dbc[_0x6098('0x11')][_0x6098('0x23')]||_0x6098('0x26'),'context':_0x418b3f[_0x1e907f][0x0]['context'],'exten':_0x418b3f[_0x1e907f][0x0][_0x6098('0x8')],'priority':_0x358dbc[_0x6098('0xf')]++,'VoiceExtensionId':_0x418b3f[_0x1e907f][0x0][_0x6098('0x15')]});}}_0x358dbc['extensions'][_0x6098('0x12')]({'type':_0x418b3f[_0x1e907f][0x0][_0x6098('0x13')],'app':_0x6098('0x17'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x418b3f[_0x1e907f][0x0]['context'],'exten':_0x418b3f[_0x1e907f][0x0]['exten'],'priority':_0x358dbc['priority']++,'VoiceExtensionId':_0x418b3f[_0x1e907f][0x0]['VoiceExtensionId']});_0x358dbc[_0x6098('0x10')][_0x6098('0x12')]({'type':_0x418b3f[_0x1e907f][0x0]['type'],'app':_0x6098('0x17'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x418b3f[_0x1e907f][0x0][_0x6098('0x14')],'exten':_0x418b3f[_0x1e907f][0x0][_0x6098('0x8')],'priority':_0x358dbc['priority']++,'VoiceExtensionId':_0x418b3f[_0x1e907f][0x0][_0x6098('0x15')]});_0x358dbc[_0x6098('0x10')][_0x6098('0x12')]({'type':_0x418b3f[_0x1e907f][0x0][_0x6098('0x13')],'app':_0x6098('0x17'),'appdata':_0x6098('0x27'),'context':_0x418b3f[_0x1e907f][0x0]['context'],'exten':_0x418b3f[_0x1e907f][0x0]['exten'],'priority':_0x358dbc[_0x6098('0xf')]++,'VoiceExtensionId':_0x418b3f[_0x1e907f][0x0][_0x6098('0x15')]});for(var _0x3374b3=0x0,_0x531fba=0x0;_0x3374b3<_0x418b3f[_0x1e907f]['length'];_0x3374b3+=0x1,_0x531fba=0x0){var _0x255318=_0x418b3f[_0x1e907f][_0x3374b3];if(_0x255318[_0x6098('0x13')]){_0x255318[_0x6098('0x13')]=_0x255318[_0x6098('0x13')][_0x6098('0x28')]();}var _0x3fd214=[];var _0x1a9d65=[];delete _0x255318['id'];delete _0x255318[_0x6098('0x29')];delete _0x255318[_0x6098('0x2a')];var _0x2c7fbe=_0x255318['interval']!=='*,*,*,*'?[_0x255318[_0x6098('0x2b')]]:_0x255318[_0x6098('0x2c')]?_['map'](_[_0x6098('0xa')](_0x358dbc[_0x6098('0x5')],{'IntervalId':_0x255318['IntervalId']}),_0x6098('0x2b')):[];if(_0x255318[_0x6098('0xe')]('tag')){if(_0x255318[_0x6098('0x2d')]&&_0x255318[_0x6098('0x2d')]!=='--'){_0x3fd214[_0x6098('0x12')]({'type':_0x255318['type'],'app':_0x6098('0x17'),'appdata':_0x6098('0x2e')+_0x255318[_0x6098('0x2d')],'context':_0x255318['context'],'exten':_0x255318[_0x6098('0x8')],'priority':_0x2c7fbe[_0x6098('0x2f')]+_0x358dbc[_0x6098('0xf')]+_0x531fba++,'VoiceExtensionId':_0x255318[_0x6098('0x15')]});}}if(_0x255318[_0x6098('0x13')]==='outbound'&&_0x255318[_0x6098('0xe')](_0x6098('0x30'))){if(_0x255318[_0x6098('0x30')]){_0x3fd214[_0x6098('0x12')]({'type':_0x255318[_0x6098('0x13')],'app':_0x6098('0x1e'),'appdata':_0x6098('0x31')+_0x255318[_0x6098('0x30')]+')','context':_0x255318[_0x6098('0x14')],'exten':_0x255318['exten'],'priority':_0x2c7fbe[_0x6098('0x2f')]+_0x358dbc[_0x6098('0xf')]+_0x531fba++,'VoiceExtensionId':_0x255318[_0x6098('0x15')]});}else{_0x3fd214[_0x6098('0x12')]({'type':_0x255318[_0x6098('0x13')],'app':_0x6098('0x1e'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0x255318[_0x6098('0x14')],'exten':_0x255318['exten'],'priority':_0x2c7fbe['length']+_0x358dbc[_0x6098('0xf')]+_0x531fba++,'VoiceExtensionId':_0x255318['VoiceExtensionId']});}}if(_0x255318[_0x6098('0xe')](_0x6098('0x32'))){if(_0x10e226[_0x6098('0x33')](_0x255318[_0x6098('0x34')][_0x6098('0x28')]())>=0x0&&_0x255318[_0x6098('0x35')]!=='custom'){if(_0x255318[_0x6098('0x32')]){_0x3fd214[_0x6098('0x12')]({'type':_0x255318[_0x6098('0x13')],'app':_0x6098('0x1e'),'appdata':_0x6098('0x36'),'context':_0x255318[_0x6098('0x14')],'exten':_0x255318[_0x6098('0x8')],'priority':_0x2c7fbe[_0x6098('0x2f')]+_0x358dbc[_0x6098('0xf')]+_0x531fba++,'VoiceExtensionId':_0x255318[_0x6098('0x15')]});_0x3fd214['push']({'type':_0x255318[_0x6098('0x13')],'app':'Set','appdata':_0x6098('0x37'),'context':_0x255318[_0x6098('0x14')],'exten':_0x255318[_0x6098('0x8')],'priority':_0x2c7fbe[_0x6098('0x2f')]+_0x358dbc[_0x6098('0xf')]+_0x531fba++,'VoiceExtensionId':_0x255318[_0x6098('0x15')]});}else{_0x3fd214[_0x6098('0x12')]({'type':_0x255318[_0x6098('0x13')],'app':'ExecIf','appdata':_0x6098('0x38'),'context':_0x255318[_0x6098('0x14')],'exten':_0x255318[_0x6098('0x8')],'priority':_0x2c7fbe[_0x6098('0x2f')]+_0x358dbc[_0x6098('0xf')]+_0x531fba++,'VoiceExtensionId':_0x255318[_0x6098('0x15')]});_0x3fd214[_0x6098('0x12')]({'type':_0x255318[_0x6098('0x13')],'app':_0x6098('0x17'),'appdata':_0x6098('0x39'),'context':_0x255318[_0x6098('0x14')],'exten':_0x255318[_0x6098('0x8')],'priority':_0x2c7fbe['length']+_0x358dbc[_0x6098('0xf')]+_0x531fba++,'VoiceExtensionId':_0x255318[_0x6098('0x15')]});}}}for(var _0x910ed9=0x0;_0x910ed9<_0x2c7fbe['length'];_0x910ed9+=0x1){var _0x3257b7=_0x358dbc[_0x6098('0xf')]+_0x2c7fbe[_0x6098('0x2f')];var _0x1aa247=_0x910ed9===_0x2c7fbe['length']-0x1?_0x358dbc['priority']+_0x3fd214[_0x6098('0x2f')]+_0x1a9d65[_0x6098('0x2f')]+0x2:_0x358dbc['priority']+_0x910ed9+0x1;_0x3fd214['splice'](_0x910ed9,0x0,{'type':_0x255318[_0x6098('0x13')],'app':_0x6098('0x3a'),'appdata':_0x2c7fbe[_0x910ed9]+'?'+_0x255318[_0x6098('0x14')]+_0x6098('0x3b')+_0x3257b7+':'+_0x255318[_0x6098('0x14')]+_0x6098('0x3b')+_0x1aa247,'exten':_0x255318[_0x6098('0x8')],'context':_0x255318[_0x6098('0x14')],'priority':_0x358dbc[_0x6098('0xf')]+_0x910ed9,'VoiceExtensionId':_0x418b3f[_0x1e907f][0x0][_0x6098('0x15')]});}_0x255318[_0x6098('0xf')]=_0x3fd214[_0x6098('0x2f')]?_[_0x6098('0x3c')](_0x3fd214)['priority']+0x1:_0x358dbc[_0x6098('0xf')];_0x358dbc[_0x6098('0xf')]=(_0x1a9d65[_0x6098('0x2f')]?_[_0x6098('0x3c')](_0x1a9d65)[_0x6098('0xf')]:_0x255318[_0x6098('0xf')])+0x1;_0x358dbc[_0x6098('0x10')]=_[_0x6098('0x3d')](_0x358dbc['extensions'],_0x3fd214,[_0x255318],_0x1a9d65);}_0x358dbc[_0x6098('0x10')][_0x6098('0x12')]({'type':_0x418b3f[_0x1e907f][0x0][_0x6098('0x13')],'app':'Hangup','exten':_0x418b3f[_0x1e907f][0x0][_0x6098('0x8')],'context':_0x418b3f[_0x1e907f][0x0][_0x6098('0x14')],'priority':_0x358dbc['priority'],'VoiceExtensionId':_0x418b3f[_0x1e907f][0x0][_0x6098('0x15')]});_0xf9a14[_0x6098('0x12')](_0x418b3f[_0x1e907f][0x0][_0x6098('0x15')]);_0x18874b=_[_0x6098('0x3d')](_0x18874b,_0x358dbc[_0x6098('0x10')]);}}return _0x1e9a6a[_0x6098('0x3e')](function(_0x3bfbdd){return _0x1e9a6a['models'][_0x6098('0x6')][_0x6098('0x3f')]({'where':{'VoiceExtensionId':{'$in':_0xf9a14}},'transaction':_0x3bfbdd})[_0x6098('0x4')](function(_0x59eb0e){return _0x1e9a6a['models']['VoiceExtension']['bulkCreate'](_[_0x6098('0x40')](_0x18874b,_0x6098('0xf')),{'transaction':_0x3bfbdd});});});})[_0x6098('0x41')](function(_0x2adee1){console[_0x6098('0x42')](_0x2adee1);});}exports[_0x6098('0x43')]=rewrite;
\ No newline at end of file
+var _0x8e5e=['outboundrouteid=','recordingFormat','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','tag','CDR(tag)=','length','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','Hangup','concat','transaction','VoiceExtension','destroy','bulkCreate','sortBy','error','rewrite','lodash','models','findAll','then','intervals','IntervalId','uniq','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','playback','hasOwnProperty','priority','extensions','push','type','Set','CDR(type)=%s','context','VoiceExtensionId','inbound','CDR(routeid)=','outbound','extension','cutdigits','${EXTEN:','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix'];(function(_0x5d46a4,_0x344fb3){var _0x18c5c2=function(_0x23a66e){while(--_0x23a66e){_0x5d46a4['push'](_0x5d46a4['shift']());}};_0x18c5c2(++_0x344fb3);}(_0x8e5e,0x1f1));var _0xe8e5=function(_0x3c7cc4,_0x358aa5){_0x3c7cc4=_0x3c7cc4-0x0;var _0x2ccad1=_0x8e5e[_0x3c7cc4];return _0x2ccad1;};'use strict';var _=require(_0xe8e5('0x0'));var util=require('util');function rewrite(_0x5bd941,_0x118475){var _0x15433f=this;return _0x5bd941[_0xe8e5('0x1')]['Interval'][_0xe8e5('0x2')]({'raw':!![]})[_0xe8e5('0x3')](function(_0x3ad1af){_0x15433f[_0xe8e5('0x4')]=_0x3ad1af;return _0x5bd941[_0xe8e5('0x1')]['VoiceExtension'][_0xe8e5('0x2')]({'where':{'IntervalId':_0x118475[_0xe8e5('0x5')]},'raw':!![]});})[_0xe8e5('0x3')](function(_0x2febd3){return _0x5bd941['models']['VoiceExtension'][_0xe8e5('0x2')]({'where':{'exten':{'$in':_[_0xe8e5('0x6')](_['map'](_0x2febd3,_0xe8e5('0x7')))}},'order':[{'raw':_0xe8e5('0x8')}],'raw':!![]});})[_0xe8e5('0x3')](function(_0x5837f6){var _0x4fde0b=_[_0xe8e5('0x9')](_0x5837f6,{'priority':'1'});var _0x1351fa=_[_0xe8e5('0x9')](_0x5837f6,{'isApp':0x1});var _0x4af282=_[_0xe8e5('0xa')](_0x1351fa,_0xe8e5('0x7'));var _0x5a5570=['queue',_0xe8e5('0xb')];var _0x5bd6ee=[];var _0x59cf9d=[];for(var _0x24da56 in _0x4af282){if(_0x4af282[_0xe8e5('0xc')](_0x24da56)){_0x15433f[_0xe8e5('0xd')]=0x2;_0x15433f[_0xe8e5('0xe')]=[];_0x15433f['extension']=_['find'](_0x4fde0b,{'exten':_0x4af282[_0x24da56][0x0][_0xe8e5('0x7')]});_0x15433f[_0xe8e5('0xe')][_0xe8e5('0xf')]({'type':_0x4af282[_0x24da56][0x0][_0xe8e5('0x10')],'app':_0xe8e5('0x11'),'appdata':util['format'](_0xe8e5('0x12'),_0x4af282[_0x24da56][0x0][_0xe8e5('0x10')]),'context':_0x4af282[_0x24da56][0x0][_0xe8e5('0x13')],'exten':_0x4af282[_0x24da56][0x0][_0xe8e5('0x7')],'priority':_0x15433f[_0xe8e5('0xd')]++,'VoiceExtensionId':_0x4af282[_0x24da56][0x0][_0xe8e5('0x14')]});if(_0x4af282[_0x24da56][0x0][_0xe8e5('0x10')]===_0xe8e5('0x15')){_0x15433f[_0xe8e5('0xe')][_0xe8e5('0xf')]({'type':_0x4af282[_0x24da56][0x0]['type'],'app':_0xe8e5('0x11'),'appdata':_0xe8e5('0x16')+_0x4af282[_0x24da56][0x0][_0xe8e5('0x14')],'context':_0x4af282[_0x24da56][0x0]['context'],'exten':_0x4af282[_0x24da56][0x0]['exten'],'priority':_0x15433f['priority']++,'VoiceExtensionId':_0x4af282[_0x24da56][0x0]['VoiceExtensionId']});}else if(_0x4af282[_0x24da56][0x0][_0xe8e5('0x10')]===_0xe8e5('0x17')){if(_0x15433f[_0xe8e5('0x18')]){_0x15433f['extensions'][_0xe8e5('0xf')]({'type':_0x4af282[_0x24da56][0x0]['type'],'app':'Set','appdata':'CDR(destination)='+(_0x15433f['extension'][_0xe8e5('0x19')]?_0xe8e5('0x1a')+_0x15433f[_0xe8e5('0x18')]['cutdigits']+'}':'${EXTEN}'),'context':_0x4af282[_0x24da56][0x0][_0xe8e5('0x13')],'exten':_0x4af282[_0x24da56][0x0][_0xe8e5('0x7')],'priority':_0x15433f[_0xe8e5('0xd')]++,'VoiceExtensionId':_0x4af282[_0x24da56][0x0][_0xe8e5('0x14')]});}_0x15433f['extensions']['push']({'type':_0x4af282[_0x24da56][0x0][_0xe8e5('0x10')],'app':'Set','appdata':_0xe8e5('0x16')+_0x4af282[_0x24da56][0x0][_0xe8e5('0x14')],'context':_0x4af282[_0x24da56][0x0][_0xe8e5('0x13')],'exten':_0x4af282[_0x24da56][0x0][_0xe8e5('0x7')],'priority':_0x15433f[_0xe8e5('0xd')]++,'VoiceExtensionId':_0x4af282[_0x24da56][0x0][_0xe8e5('0x14')]});var _0x40f3c9=_0x15433f[_0xe8e5('0xd')]++;_0x15433f[_0xe8e5('0xe')][_0xe8e5('0xf')]({'type':_0x4af282[_0x24da56][0x0][_0xe8e5('0x10')],'app':_0xe8e5('0x1b'),'appdata':_0xe8e5('0x1c')+(_0x40f3c9+0x2)+_0xe8e5('0x1d')+(_0x40f3c9+0x1)+')','context':_0x4af282[_0x24da56][0x0][_0xe8e5('0x13')],'exten':_0x4af282[_0x24da56][0x0][_0xe8e5('0x7')],'priority':_0x40f3c9,'VoiceExtensionId':_0x4af282[_0x24da56][0x0][_0xe8e5('0x14')]});if(_0x15433f['extension']){_0x15433f['extensions'][_0xe8e5('0xf')]({'type':_0x4af282[_0x24da56][0x0]['type'],'app':'Set','appdata':_0x15433f[_0xe8e5('0x18')][_0xe8e5('0x19')]?'CDR(prefix)=${EXTEN:0:'+_0x15433f[_0xe8e5('0x18')][_0xe8e5('0x19')]+'}':_0xe8e5('0x1e'),'context':_0x4af282[_0x24da56][0x0]['context'],'exten':_0x4af282[_0x24da56][0x0][_0xe8e5('0x7')],'priority':_0x15433f[_0xe8e5('0xd')]++,'VoiceExtensionId':_0x4af282[_0x24da56][0x0][_0xe8e5('0x14')]});}_0x15433f[_0xe8e5('0xe')]['push']({'type':_0x4af282[_0x24da56][0x0][_0xe8e5('0x10')],'app':_0xe8e5('0x11'),'appdata':_0xe8e5('0x1f')+_0x4af282[_0x24da56][0x0][_0xe8e5('0x14')],'context':_0x4af282[_0x24da56][0x0]['context'],'exten':_0x4af282[_0x24da56][0x0][_0xe8e5('0x7')],'priority':_0x15433f[_0xe8e5('0xd')]++,'VoiceExtensionId':_0x4af282[_0x24da56][0x0]['VoiceExtensionId']});if(_0x15433f[_0xe8e5('0x18')]&&_0x15433f[_0xe8e5('0x18')]['hasOwnProperty'](_0xe8e5('0x20'))&&_0x15433f['extension'][_0xe8e5('0x20')]!=='none'){_0x15433f[_0xe8e5('0xe')]['push']({'type':_0x4af282[_0x24da56][0x0][_0xe8e5('0x10')],'app':_0xe8e5('0x11'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x4af282[_0x24da56][0x0][_0xe8e5('0x13')],'exten':_0x4af282[_0x24da56][0x0][_0xe8e5('0x7')],'priority':_0x15433f[_0xe8e5('0xd')]++,'VoiceExtensionId':_0x4af282[_0x24da56][0x0][_0xe8e5('0x14')]});_0x15433f[_0xe8e5('0xe')]['push']({'type':_0x4af282[_0x24da56][0x0][_0xe8e5('0x10')],'app':_0xe8e5('0x11'),'appdata':_0xe8e5('0x21')+_0x15433f[_0xe8e5('0x18')][_0xe8e5('0x20')]||_0xe8e5('0x22'),'context':_0x4af282[_0x24da56][0x0][_0xe8e5('0x13')],'exten':_0x4af282[_0x24da56][0x0][_0xe8e5('0x7')],'priority':_0x15433f[_0xe8e5('0xd')]++,'VoiceExtensionId':_0x4af282[_0x24da56][0x0][_0xe8e5('0x14')]});}}_0x15433f[_0xe8e5('0xe')][_0xe8e5('0xf')]({'type':_0x4af282[_0x24da56][0x0][_0xe8e5('0x10')],'app':_0xe8e5('0x11'),'appdata':_0xe8e5('0x23'),'context':_0x4af282[_0x24da56][0x0][_0xe8e5('0x13')],'exten':_0x4af282[_0x24da56][0x0]['exten'],'priority':_0x15433f[_0xe8e5('0xd')]++,'VoiceExtensionId':_0x4af282[_0x24da56][0x0]['VoiceExtensionId']});_0x15433f[_0xe8e5('0xe')][_0xe8e5('0xf')]({'type':_0x4af282[_0x24da56][0x0]['type'],'app':_0xe8e5('0x11'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x4af282[_0x24da56][0x0]['context'],'exten':_0x4af282[_0x24da56][0x0][_0xe8e5('0x7')],'priority':_0x15433f[_0xe8e5('0xd')]++,'VoiceExtensionId':_0x4af282[_0x24da56][0x0][_0xe8e5('0x14')]});_0x15433f['extensions'][_0xe8e5('0xf')]({'type':_0x4af282[_0x24da56][0x0][_0xe8e5('0x10')],'app':_0xe8e5('0x11'),'appdata':_0xe8e5('0x24'),'context':_0x4af282[_0x24da56][0x0][_0xe8e5('0x13')],'exten':_0x4af282[_0x24da56][0x0][_0xe8e5('0x7')],'priority':_0x15433f[_0xe8e5('0xd')]++,'VoiceExtensionId':_0x4af282[_0x24da56][0x0]['VoiceExtensionId']});for(var _0x536b74=0x0,_0xb90e82=0x0;_0x536b74<_0x4af282[_0x24da56]['length'];_0x536b74+=0x1,_0xb90e82=0x0){var _0x3d3db6=_0x4af282[_0x24da56][_0x536b74];if(_0x3d3db6['type']){_0x3d3db6['type']=_0x3d3db6['type'][_0xe8e5('0x25')]();}var _0x59be54=[];var _0x306608=[];delete _0x3d3db6['id'];delete _0x3d3db6[_0xe8e5('0x26')];delete _0x3d3db6[_0xe8e5('0x27')];var _0xb4bf55=_0x3d3db6[_0xe8e5('0x28')]!==_0xe8e5('0x29')?[_0x3d3db6['interval']]:_0x3d3db6[_0xe8e5('0x5')]?_['map'](_[_0xe8e5('0x9')](_0x15433f[_0xe8e5('0x4')],{'IntervalId':_0x3d3db6['IntervalId']}),_0xe8e5('0x28')):[];if(_0x3d3db6['hasOwnProperty']('tag')){if(_0x3d3db6['tag']&&_0x3d3db6[_0xe8e5('0x2a')]!=='--'){_0x59be54[_0xe8e5('0xf')]({'type':_0x3d3db6[_0xe8e5('0x10')],'app':'Set','appdata':_0xe8e5('0x2b')+_0x3d3db6[_0xe8e5('0x2a')],'context':_0x3d3db6[_0xe8e5('0x13')],'exten':_0x3d3db6[_0xe8e5('0x7')],'priority':_0xb4bf55[_0xe8e5('0x2c')]+_0x15433f['priority']+_0xb90e82++,'VoiceExtensionId':_0x3d3db6['VoiceExtensionId']});}}if(_0x3d3db6[_0xe8e5('0x10')]===_0xe8e5('0x17')&&_0x3d3db6['hasOwnProperty'](_0xe8e5('0x2d'))){if(_0x3d3db6[_0xe8e5('0x2d')]){_0x59be54['push']({'type':_0x3d3db6[_0xe8e5('0x10')],'app':_0xe8e5('0x1b'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='+_0x3d3db6[_0xe8e5('0x2d')]+')','context':_0x3d3db6[_0xe8e5('0x13')],'exten':_0x3d3db6[_0xe8e5('0x7')],'priority':_0xb4bf55['length']+_0x15433f[_0xe8e5('0xd')]+_0xb90e82++,'VoiceExtensionId':_0x3d3db6[_0xe8e5('0x14')]});}else{_0x59be54[_0xe8e5('0xf')]({'type':_0x3d3db6[_0xe8e5('0x10')],'app':_0xe8e5('0x1b'),'appdata':_0xe8e5('0x2e'),'context':_0x3d3db6[_0xe8e5('0x13')],'exten':_0x3d3db6['exten'],'priority':_0xb4bf55['length']+_0x15433f[_0xe8e5('0xd')]+_0xb90e82++,'VoiceExtensionId':_0x3d3db6['VoiceExtensionId']});}}if(_0x3d3db6[_0xe8e5('0xc')]('answer')){if(_0x5a5570['indexOf'](_0x3d3db6['app']['toLowerCase']())>=0x0&&_0x3d3db6[_0xe8e5('0x2f')]!==_0xe8e5('0x30')){if(_0x3d3db6['answer']){_0x59be54[_0xe8e5('0xf')]({'type':_0x3d3db6[_0xe8e5('0x10')],'app':_0xe8e5('0x1b'),'appdata':_0xe8e5('0x31'),'context':_0x3d3db6['context'],'exten':_0x3d3db6[_0xe8e5('0x7')],'priority':_0xb4bf55[_0xe8e5('0x2c')]+_0x15433f[_0xe8e5('0xd')]+_0xb90e82++,'VoiceExtensionId':_0x3d3db6['VoiceExtensionId']});_0x59be54['push']({'type':_0x3d3db6[_0xe8e5('0x10')],'app':'Set','appdata':_0xe8e5('0x32'),'context':_0x3d3db6[_0xe8e5('0x13')],'exten':_0x3d3db6['exten'],'priority':_0xb4bf55['length']+_0x15433f[_0xe8e5('0xd')]+_0xb90e82++,'VoiceExtensionId':_0x3d3db6[_0xe8e5('0x14')]});}else{_0x59be54[_0xe8e5('0xf')]({'type':_0x3d3db6[_0xe8e5('0x10')],'app':'ExecIf','appdata':_0xe8e5('0x33'),'context':_0x3d3db6[_0xe8e5('0x13')],'exten':_0x3d3db6[_0xe8e5('0x7')],'priority':_0xb4bf55[_0xe8e5('0x2c')]+_0x15433f[_0xe8e5('0xd')]+_0xb90e82++,'VoiceExtensionId':_0x3d3db6[_0xe8e5('0x14')]});_0x59be54[_0xe8e5('0xf')]({'type':_0x3d3db6[_0xe8e5('0x10')],'app':_0xe8e5('0x11'),'appdata':_0xe8e5('0x34'),'context':_0x3d3db6[_0xe8e5('0x13')],'exten':_0x3d3db6[_0xe8e5('0x7')],'priority':_0xb4bf55[_0xe8e5('0x2c')]+_0x15433f[_0xe8e5('0xd')]+_0xb90e82++,'VoiceExtensionId':_0x3d3db6[_0xe8e5('0x14')]});}}}for(var _0x361a40=0x0;_0x361a40<_0xb4bf55[_0xe8e5('0x2c')];_0x361a40+=0x1){var _0x1840cb=_0x15433f[_0xe8e5('0xd')]+_0xb4bf55[_0xe8e5('0x2c')];var _0x1609b0=_0x361a40===_0xb4bf55[_0xe8e5('0x2c')]-0x1?_0x15433f[_0xe8e5('0xd')]+_0x59be54[_0xe8e5('0x2c')]+_0x306608[_0xe8e5('0x2c')]+0x2:_0x15433f[_0xe8e5('0xd')]+_0x361a40+0x1;_0x59be54[_0xe8e5('0x35')](_0x361a40,0x0,{'type':_0x3d3db6[_0xe8e5('0x10')],'app':_0xe8e5('0x36'),'appdata':_0xb4bf55[_0x361a40]+'?'+_0x3d3db6[_0xe8e5('0x13')]+_0xe8e5('0x37')+_0x1840cb+':'+_0x3d3db6['context']+_0xe8e5('0x37')+_0x1609b0,'exten':_0x3d3db6[_0xe8e5('0x7')],'context':_0x3d3db6[_0xe8e5('0x13')],'priority':_0x15433f[_0xe8e5('0xd')]+_0x361a40,'VoiceExtensionId':_0x4af282[_0x24da56][0x0]['VoiceExtensionId']});}_0x3d3db6[_0xe8e5('0xd')]=_0x59be54[_0xe8e5('0x2c')]?_['last'](_0x59be54)[_0xe8e5('0xd')]+0x1:_0x15433f['priority'];_0x15433f[_0xe8e5('0xd')]=(_0x306608[_0xe8e5('0x2c')]?_[_0xe8e5('0x38')](_0x306608)['priority']:_0x3d3db6['priority'])+0x1;_0x15433f[_0xe8e5('0xe')]=_['concat'](_0x15433f['extensions'],_0x59be54,[_0x3d3db6],_0x306608);}_0x15433f['extensions'][_0xe8e5('0xf')]({'type':_0x4af282[_0x24da56][0x0]['type'],'app':_0xe8e5('0x39'),'exten':_0x4af282[_0x24da56][0x0][_0xe8e5('0x7')],'context':_0x4af282[_0x24da56][0x0][_0xe8e5('0x13')],'priority':_0x15433f['priority'],'VoiceExtensionId':_0x4af282[_0x24da56][0x0][_0xe8e5('0x14')]});_0x5bd6ee['push'](_0x4af282[_0x24da56][0x0]['VoiceExtensionId']);_0x59cf9d=_[_0xe8e5('0x3a')](_0x59cf9d,_0x15433f[_0xe8e5('0xe')]);}}return _0x5bd941[_0xe8e5('0x3b')](function(_0x58c241){return _0x5bd941['models'][_0xe8e5('0x3c')][_0xe8e5('0x3d')]({'where':{'VoiceExtensionId':{'$in':_0x5bd6ee}},'transaction':_0x58c241})[_0xe8e5('0x3')](function(_0x4a5d97){return _0x5bd941[_0xe8e5('0x1')][_0xe8e5('0x3c')][_0xe8e5('0x3e')](_[_0xe8e5('0x3f')](_0x59cf9d,_0xe8e5('0xd')),{'transaction':_0x58c241});});});})['catch'](function(_0x33d5a4){console[_0xe8e5('0x40')](_0x33d5a4);});}exports[_0xe8e5('0x41')]=rewrite;
\ No newline at end of file
index 5754f1f..ff9c008 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc718=['unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','info','CmContact','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','localhost','../../../api/cmContact/cmContact.socket','register','undefined','argv','Missing\x20filepath\x20parameter!','null','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','join','hasOwnProperty','firstName','phone','phone\x20not\x20specified!','birthDate','isValid','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','find','Duplicate\x20Contact','create','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','inspect','insert','into','fromQuery','ContactId','createdAt','updatedAt','select','field','NOW()','scheduledAt','toString','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','from','cm_hopper','id\x20IN\x20?','calleridnum','\x20=\x20?','str','cm_hopper_black','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','get','sequelize','query','VoiceQueueId','onlyIfOpen','all','BlackLists','Campaign','Lists','always','CampaignId','generalCheckHopper','finally','emit','contact:csv_','resolve'];(function(_0x764874,_0x3ed544){var _0x29f9d5=function(_0x152dad){while(--_0x152dad){_0x764874['push'](_0x764874['shift']());}};_0x29f9d5(++_0x3ed544);}(_0xc718,0xe2));var _0x8c71=function(_0x49d2f7,_0x1b5de6){_0x49d2f7=_0x49d2f7-0x0;var _0x3745dd=_0xc718[_0x49d2f7];return _0x3745dd;};'use strict';var BPromise=require(_0x8c71('0x0'));var util=require(_0x8c71('0x1'));var _=require(_0x8c71('0x2'));var fs=require('fs');var squel=require(_0x8c71('0x3'));var Papa=require('papaparse');var Redis=require(_0x8c71('0x4'));var db=require(_0x8c71('0x5'))['db'];var config=require(_0x8c71('0x6'));var logger=require(_0x8c71('0x7'))(_0x8c71('0x8'));config[_0x8c71('0x9')]=_['defaults'](config[_0x8c71('0x9')],{'host':_0x8c71('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8c71('0x9')]));require(_0x8c71('0xb'))[_0x8c71('0xc')](socket);try{if(!process['argv'][0x2]||process['argv'][0x2]===_0x8c71('0xd')||process[_0x8c71('0xe')][0x2]==='null'){throw new Error(_0x8c71('0xf'));}var FILEPATH=process[_0x8c71('0xe')][0x2];if(!process[_0x8c71('0xe')][0x3]||process[_0x8c71('0xe')][0x3]==='undefined'||process[_0x8c71('0xe')][0x3]===_0x8c71('0x10')||!process[_0x8c71('0xe')][0x4]||process['argv'][0x4]===_0x8c71('0xd')||process[_0x8c71('0xe')][0x4]===_0x8c71('0x10')){throw new Error('Missing\x20binding\x20parameters!');}var FIELDS=_[_0x8c71('0x11')](process[_0x8c71('0xe')][0x3][_0x8c71('0x12')](','),process[_0x8c71('0xe')][0x4][_0x8c71('0x12')](','));if(!process[_0x8c71('0xe')][0x5]||process[_0x8c71('0xe')][0x5]===_0x8c71('0xd')||process[_0x8c71('0xe')][0x5]==='null'){throw new Error(_0x8c71('0x13'));}var LISTID=process['argv'][0x5];var COMPANYID=process[_0x8c71('0xe')][0x6]&&process[_0x8c71('0xe')][0x6]!=='undefined'&&process[_0x8c71('0xe')][0x6]!==_0x8c71('0x10')?process[_0x8c71('0xe')][0x6]:null;var DUPLICATES=process[_0x8c71('0xe')][0x7]&&process[_0x8c71('0xe')][0x7]!==_0x8c71('0xd')&&process[_0x8c71('0xe')][0x7]!==_0x8c71('0x10')?process[_0x8c71('0xe')][0x7]:null;if(!process[_0x8c71('0xe')][0x8]||process[_0x8c71('0xe')][0x8]==='undefined'||process[_0x8c71('0xe')][0x8]===_0x8c71('0x10')){throw new Error(_0x8c71('0x14'));}var SOCKET_TIMESTAMP=process[_0x8c71('0xe')][0x8];}catch(_0x3c5c92){logger[_0x8c71('0x15')](_0x3c5c92);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(_0x422afb,_0x50e4a0,_0x28dac3,_0x3481e4){var _0x49e3ba={'message':_0x50e4a0};_0x49e3ba[_0x422afb]=!![];if(_0x28dac3){_0x49e3ba[_0x8c71('0x16')]=_0x28dac3;}if(_0x3481e4){_0x49e3ba[_0x8c71('0x17')]=_0x3481e4;}return _0x49e3ba;}function isEmail(_0x411fe6){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))*$/[_0x8c71('0x18')](_0x411fe6);}function checkRow(_0x5c0805,_0x158ffd,_0x1a577b){return new BPromise(function(_0x36d923,_0x5a82e5){if(_['isNil'](_0x5c0805)){return _0x5a82e5(handleCheckRowError(_0x8c71('0x15'),_0x8c71('0x19'),null,_0x1a577b));}if(_0x5c0805['errors']&&_0x5c0805[_0x8c71('0x1a')][_0x8c71('0x1b')]){var _0x55c4b7=_[_0x8c71('0x1c')](_0x5c0805[_0x8c71('0x1a')],_0x8c71('0x1d'))[_0x8c71('0x1e')](';');return _0x5a82e5(handleCheckRowError(_0x8c71('0x15'),_0x55c4b7,null,_0x1a577b));}var _0xac277d={};for(var _0x2bceda in FIELDS){if(FIELDS[_0x8c71('0x1f')](_0x2bceda)&&FIELDS[_0x2bceda]){_0xac277d[_0x2bceda]=_0x5c0805['data'][0x0][FIELDS[_0x2bceda]]||_0x5c0805['data'][0x0]['\ufeff'+FIELDS[_0x2bceda]];}}if(!_0xac277d[_0x8c71('0x20')]){return _0x5a82e5(handleCheckRowError('error','firstName\x20not\x20specified!',null,_0x1a577b));}if(!_0xac277d[_0x8c71('0x21')]){return _0x5a82e5(handleCheckRowError('error',_0x8c71('0x22'),null,_0x1a577b));}if(_0xac277d[_0x8c71('0x23')]){var _0x512788=moment(_0xac277d[_0x8c71('0x23')],'YYYY-MM-DD');if(!_0x512788[_0x8c71('0x24')]()){return _0x5a82e5(handleCheckRowError(_0x8c71('0x15'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x1a577b));}}if(_0xac277d['email']){if(!isEmail(_0xac277d['email'])){return _0x5a82e5(handleCheckRowError('error',_0x8c71('0x25'),null,_0x1a577b));}}_0xac277d[_0x8c71('0x26')]=LISTID;_0xac277d[_0x8c71('0x27')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x8c71('0x1b')]&&_0x158ffd){var _0x32d8db={};for(var _0x222d09=0x0,_0x142335=DUPLICATES['length'];_0x222d09<_0x142335;_0x222d09+=0x1){_0x32d8db[DUPLICATES[_0x222d09]]=_0xac277d[DUPLICATES[_0x222d09]];}var _0x11ac2f=_[_0x8c71('0x28')](_0x158ffd,_0x32d8db);if(_0x11ac2f){return _0x5a82e5(handleCheckRowError('duplicate',_0x8c71('0x29'),_0x11ac2f,_0x1a577b));}}return db['CmContact'][_0x8c71('0x2a')](_0xac277d,{'raw':!![],'hooks':![],'fields':_[_0x8c71('0x2b')](_0xac277d)})[_0x8c71('0x2c')](function(_0x5b6f55){if(DUPLICATES&&DUPLICATES[_0x8c71('0x1b')]&&_0x158ffd){_0x158ffd[_0x8c71('0x2d')](_[_0x8c71('0x2e')](_0xac277d,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x5b6f55['id'];return _0x36d923();})[_0x8c71('0x2f')](function(_0x52dcb2){return _0x5a82e5(handleCheckRowError('error',_0x8c71('0x30')+(_0x52dcb2['message']||JSON[_0x8c71('0x31')](_0x52dcb2)),null,_0x1a577b));});});}function checkHopper(){function _0x5eaf82(){return function(_0xeabec8){logger[_0x8c71('0x15')](_0x8c71('0x32'),_0x8c71('0x33'),util[_0x8c71('0x34')](_0xeabec8,{'showHidden':![],'depth':null}));};}var _0x837bdc=function(_0x500ac2,_0xa84d84){var _0x116dba=squel[_0x8c71('0x35')]()[_0x8c71('0x36')]('cm_hopper')[_0x8c71('0x37')](['phone','scheduledAt',_0x8c71('0x38'),'ListId',_0xa84d84,_0x8c71('0x39'),_0x8c71('0x3a')],squel[_0x8c71('0x3b')]()['field'](_0x8c71('0x21'),_0x8c71('0x21'))[_0x8c71('0x3c')](_0x8c71('0x3d'),_0x8c71('0x3e'))[_0x8c71('0x3c')]('id',_0x8c71('0x38'))[_0x8c71('0x3c')](LISTID[_0x8c71('0x3f')](),_0x8c71('0x26'))['field'](_0x500ac2['id'][_0x8c71('0x3f')](),_0xa84d84)[_0x8c71('0x3c')](_0x8c71('0x3d'),'createdAt')[_0x8c71('0x3c')]('NOW()','updatedAt')['from'](_0x8c71('0x40'))[_0x8c71('0x41')](_0x8c71('0x42'))[_0x8c71('0x41')](_0x8c71('0x43'),LISTID[_0x8c71('0x3f')]())[_0x8c71('0x41')](_0x8c71('0x44'))[_0x8c71('0x41')](_0x8c71('0x45'),squel[_0x8c71('0x3b')]()[_0x8c71('0x3c')](_0x8c71('0x21'))[_0x8c71('0x46')](_0x8c71('0x47'))[_0x8c71('0x41')](_0xa84d84+'\x20=\x20?',_0x500ac2['id']['toString']())))[_0x8c71('0x3f')]();return _0x116dba;};var _0x1053ad=function(_0x367ef5,_0x387ae0){var _0x30997f=squel[_0x8c71('0x35')]()[_0x8c71('0x36')](_0x8c71('0x47'))[_0x8c71('0x37')]([_0x8c71('0x21'),_0x8c71('0x3e'),_0x8c71('0x38'),_0x8c71('0x26'),_0x387ae0,_0x8c71('0x39'),_0x8c71('0x3a')],squel[_0x8c71('0x3b')]()[_0x8c71('0x3c')](_0x8c71('0x21'),'phone')[_0x8c71('0x3c')](_0x8c71('0x3d'),_0x8c71('0x3e'))[_0x8c71('0x3c')]('id','ContactId')[_0x8c71('0x3c')](LISTID[_0x8c71('0x3f')](),_0x8c71('0x26'))[_0x8c71('0x3c')](_0x367ef5['id'][_0x8c71('0x3f')](),_0x387ae0)['field'](_0x8c71('0x3d'),_0x8c71('0x39'))[_0x8c71('0x3c')](_0x8c71('0x3d'),'updatedAt')[_0x8c71('0x46')]('cm_contacts')['where']('deletedAt\x20IS\x20NULL')[_0x8c71('0x41')]('ListId\x20=\x20?',LISTID[_0x8c71('0x3f')]())[_0x8c71('0x41')](_0x8c71('0x48'),squel['str'](hopperContacts))['where'](_0x8c71('0x44'))[_0x8c71('0x41')]('phone\x20NOT\x20IN\x20(?)',squel[_0x8c71('0x3b')]()[_0x8c71('0x3c')](_0x8c71('0x49'))['from']('cm_hopper_final')[_0x8c71('0x41')](_0x387ae0+'\x20=\x20?',_0x367ef5['id'][_0x8c71('0x3f')]()))[_0x8c71('0x41')](_0x8c71('0x45'),squel['select']()[_0x8c71('0x3c')]('phone')[_0x8c71('0x46')](_0x8c71('0x47'))[_0x8c71('0x41')](_0x387ae0+_0x8c71('0x4a'),_0x367ef5['id'][_0x8c71('0x3f')]())))['toString']();return _0x30997f;};function _0x53e5bc(_0x4a3e4f,_0xb0b84d){var _0x54698a=squel[_0x8c71('0x35')]()['into']('cm_hopper')[_0x8c71('0x37')](['phone',_0x8c71('0x3e'),_0x8c71('0x38'),_0x8c71('0x26'),_0xb0b84d,_0x8c71('0x39'),_0x8c71('0x3a')],squel[_0x8c71('0x3b')]()[_0x8c71('0x3c')](_0x8c71('0x21'),_0x8c71('0x21'))[_0x8c71('0x3c')](_0x8c71('0x3d'),_0x8c71('0x3e'))[_0x8c71('0x3c')]('id',_0x8c71('0x38'))[_0x8c71('0x3c')](LISTID[_0x8c71('0x3f')](),_0x8c71('0x26'))[_0x8c71('0x3c')](_0x4a3e4f['id'][_0x8c71('0x3f')](),_0xb0b84d)[_0x8c71('0x3c')](_0x8c71('0x3d'),_0x8c71('0x39'))[_0x8c71('0x3c')](_0x8c71('0x3d'),_0x8c71('0x3a'))[_0x8c71('0x46')](_0x8c71('0x40'))[_0x8c71('0x41')]('deletedAt\x20IS\x20NULL')[_0x8c71('0x41')](_0x8c71('0x43'),LISTID[_0x8c71('0x3f')]())[_0x8c71('0x41')](_0x8c71('0x48'),squel[_0x8c71('0x4b')](hopperContacts))[_0x8c71('0x41')](_0x8c71('0x44')))[_0x8c71('0x3f')]();return _0x54698a;}function _0x849c8f(_0x2770af,_0x375a8f){var _0x45e495=squel[_0x8c71('0x35')]()[_0x8c71('0x36')](_0x8c71('0x4c'))[_0x8c71('0x37')](['phone',_0x8c71('0x38'),'ListId',_0x375a8f,_0x8c71('0x39'),_0x8c71('0x3a')],squel[_0x8c71('0x3b')]()[_0x8c71('0x3c')](_0x8c71('0x21'),'phone')[_0x8c71('0x3c')]('id',_0x8c71('0x38'))['field'](LISTID[_0x8c71('0x3f')](),_0x8c71('0x26'))[_0x8c71('0x3c')](_0x2770af['id'][_0x8c71('0x3f')](),_0x375a8f)['field'](_0x8c71('0x3d'),'createdAt')['field']('NOW()',_0x8c71('0x3a'))[_0x8c71('0x46')]('cm_contacts')[_0x8c71('0x41')]('deletedAt\x20IS\x20NULL')[_0x8c71('0x41')](_0x8c71('0x43'),LISTID[_0x8c71('0x3f')]())['where'](_0x8c71('0x48'),squel[_0x8c71('0x4b')](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL'))[_0x8c71('0x3f')]();return _0x45e495;}return db[_0x8c71('0x4d')][_0x8c71('0x4e')]({'where':{'type':_0x8c71('0x4f')},'attributes':['id',_0x8c71('0x50')],'include':[{'model':db[_0x8c71('0x51')],'as':'Lists','where':{'id':LISTID}}]})['then'](function(_0xbfcf27){var _0x341bef=[];if(_0xbfcf27){var _0x35456f;for(var _0x373c43=0x0,_0x3ffda0;_0x373c43<_0xbfcf27[_0x8c71('0x1b')];_0x373c43+=0x1){_0x3ffda0=_0xbfcf27[_0x373c43][_0x8c71('0x52')]({'plain':!![]});switch(_0x3ffda0[_0x8c71('0x50')]){case'always':_0x341bef[_0x8c71('0x2d')](db[_0x8c71('0x53')][_0x8c71('0x54')](_0x1053ad(_0x3ffda0,_0x8c71('0x55')))[_0x8c71('0x2c')](function(){})[_0x8c71('0x2f')](_0x5eaf82()));break;case _0x8c71('0x56'):_0x341bef['push'](db[_0x8c71('0x53')][_0x8c71('0x54')](_0x837bdc(_0x3ffda0,_0x8c71('0x55')))[_0x8c71('0x2c')](function(){})[_0x8c71('0x2f')](_0x5eaf82()));break;default:_0x341bef[_0x8c71('0x2d')](db[_0x8c71('0x53')][_0x8c71('0x54')](_0x53e5bc(_0x3ffda0,_0x8c71('0x55')))['then'](function(){})[_0x8c71('0x2f')](_0x5eaf82()));}}}return _0x341bef;})[_0x8c71('0x57')]()[_0x8c71('0x2c')](function(){return db[_0x8c71('0x4d')]['findAll']({'where':{'type':_0x8c71('0x4f')},'attributes':['id'],'include':[{'model':db['CmList'],'as':_0x8c71('0x58'),'where':{'id':LISTID}}]})[_0x8c71('0x2c')](function(_0x1e658b){var _0x504c2e=[];if(_0x1e658b){var _0x5948cb;for(var _0x55ba6c=0x0,_0x23bf3f;_0x55ba6c<_0x1e658b[_0x8c71('0x1b')];_0x55ba6c+=0x1){_0x23bf3f=_0x1e658b[_0x55ba6c]['get']({'plain':!![]});_0x504c2e[_0x8c71('0x2d')](db[_0x8c71('0x53')][_0x8c71('0x54')](_0x849c8f(_0x23bf3f,_0x8c71('0x55')))[_0x8c71('0x2c')](function(){})['catch'](_0x5eaf82()));}}return _0x504c2e;})[_0x8c71('0x57')]();})['then'](function(){return db[_0x8c71('0x59')][_0x8c71('0x4e')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x8c71('0x51')],'as':_0x8c71('0x5a'),'where':{'id':LISTID}}]})['then'](function(_0x39fdfa){var _0x1e21a0=[];if(_0x39fdfa){for(var _0x5debba=0x0,_0x3e84d0;_0x5debba<_0x39fdfa[_0x8c71('0x1b')];_0x5debba+=0x1){_0x3e84d0=_0x39fdfa[_0x5debba][_0x8c71('0x52')]({'plain':!![]});switch(_0x3e84d0[_0x8c71('0x50')]){case _0x8c71('0x5b'):_0x1e21a0[_0x8c71('0x2d')](db[_0x8c71('0x53')][_0x8c71('0x54')](_0x1053ad(_0x3e84d0,'CampaignId'))[_0x8c71('0x2c')](function(){})[_0x8c71('0x2f')](_0x5eaf82()));break;case'onlyIfOpen':_0x1e21a0[_0x8c71('0x2d')](db['sequelize'][_0x8c71('0x54')](_0x837bdc(_0x3e84d0,'CampaignId'))[_0x8c71('0x2c')](function(){})[_0x8c71('0x2f')](_0x5eaf82()));break;default:_0x1e21a0[_0x8c71('0x2d')](db[_0x8c71('0x53')][_0x8c71('0x54')](_0x53e5bc(_0x3e84d0,_0x8c71('0x5c')))[_0x8c71('0x2c')](function(){})['catch'](_0x5eaf82()));}}}return _0x1e21a0;})['all']();})['then'](function(){return db[_0x8c71('0x59')][_0x8c71('0x4e')]({'attributes':['id'],'include':[{'model':db[_0x8c71('0x51')],'as':_0x8c71('0x58'),'where':{'id':LISTID}}]})[_0x8c71('0x2c')](function(_0x1db6d2){var _0x4c4069=[];if(_0x1db6d2){for(var _0x599c70=0x0,_0x252b4e;_0x599c70<_0x1db6d2[_0x8c71('0x1b')];_0x599c70+=0x1){_0x252b4e=_0x1db6d2[_0x599c70][_0x8c71('0x52')]({'plain':!![]});_0x4c4069[_0x8c71('0x2d')](db[_0x8c71('0x53')]['query'](_0x849c8f(_0x252b4e,_0x8c71('0x5c')))[_0x8c71('0x2c')](function(){})[_0x8c71('0x2f')](_0x5eaf82()));}}return _0x4c4069;})[_0x8c71('0x57')]();})['catch'](function(_0x43608a){logger[_0x8c71('0x15')]('cmContact,\x20%s,\x20%s',_0x8c71('0x5d'),_0x43608a['message']);});}var processPromises=function(_0x2d99f4){return BPromise[_0x8c71('0x57')](promises)['then'](function(_0x11b8e1){})[_0x8c71('0x2f')](function(_0x2874a9){logger[_0x8c71('0x15')]('Error\x20processing\x20rows\x20block:',JSON['stringify'](_0x2874a9));})[_0x8c71('0x5e')](function(){socket[_0x8c71('0x5f')](_0x8c71('0x60')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x2d99f4){return _0x2d99f4['resume']();}});};var endCsv=function(){return BPromise[_0x8c71('0x61')]()[_0x8c71('0x2c')](function(){if(hopperContacts){return checkHopper();}})['then'](function(){socket[_0x8c71('0x5f')](_0x8c71('0x60')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x8c71('0x62')](FILEPATH);}catch(_0x14f102){logger[_0x8c71('0x15')](_0x8c71('0x63'),JSON['stringify'](_0x14f102));}finally{process[_0x8c71('0x64')](0x0);}});};process['on']('SIGINT',function(){logger[_0x8c71('0x65')]('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise[_0x8c71('0x61')]()[_0x8c71('0x2c')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x8c71('0x12')](',');return db[_0x8c71('0x66')][_0x8c71('0x4e')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x8c71('0x2c')](function(_0x16dfa8){var _0x39f020=fs[_0x8c71('0x67')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x8c71('0x68')](_0x39f020,{'header':!![],'skipEmptyLines':!![],'step':function(_0x7a9359,_0x35a5ad){total+=0x1;var _0x51e976=total;promises[_0x8c71('0x2d')](checkRow(_0x7a9359,_0x16dfa8,_0x51e976)['then'](function(){success+=0x1;})[_0x8c71('0x2f')](function(_0x2267cf){if(_0x2267cf[_0x8c71('0x15')]){errors+=0x1;delete _0x2267cf[_0x8c71('0x15')];}else if(_0x2267cf['duplicate']){duplicates+=0x1;delete _0x2267cf['duplicate'];}rows['push'](_0x2267cf);}));if(total%0xc8===0x0){_0x35a5ad[_0x8c71('0x69')]();return processPromises(_0x35a5ad);}},'complete':function(){return processPromises()['then'](function(){logger[_0x8c71('0x65')](_0x8c71('0x6a'));endCsv();});},'error':function(_0x33b200,_0x189ad1){logger[_0x8c71('0x65')]('CSV\x20parse\x20error',JSON[_0x8c71('0x31')](_0x33b200));endCsv();}});})[_0x8c71('0x2f')](function(_0x1a364b){logger['error'](_0x8c71('0x6b'),JSON['stringify'](_0x1a364b));});}main();
\ No newline at end of file
+var _0xc452=['../../../mysqldb','../../../config/environment','api','defaults','redis','socket.io-emitter','../../../api/cmContact/cmContact.socket','argv','undefined','Missing\x20filepath\x20parameter!','null','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','map','message','join','hasOwnProperty','data','firstName','birthDate','isValid','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','length','duplicate','create','keys','then','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','inspect','insert','into','cm_hopper','fromQuery','phone','ContactId','createdAt','updatedAt','select','field','NOW()','scheduledAt','toString','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','cm_hopper_black','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','Lists','get','push','query','VoiceQueueId','sequelize','all','BlackLists','Campaign','always','CampaignId','finally','emit','contact:csv_','resume','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','CSV\x20import\x20process\x20stopped!','CmContact','createReadStream','parse','info','Error\x20executing\x20contact\x20csv\x20import:','util','lodash','squel','papaparse','ioredis'];(function(_0x2f227c,_0x360c3a){var _0x5032bc=function(_0x824bb){while(--_0x824bb){_0x2f227c['push'](_0x2f227c['shift']());}};_0x5032bc(++_0x360c3a);}(_0xc452,0x139));var _0x2c45=function(_0x338a42,_0x34dea7){_0x338a42=_0x338a42-0x0;var _0x5612f2=_0xc452[_0x338a42];return _0x5612f2;};'use strict';var BPromise=require('bluebird');var util=require(_0x2c45('0x0'));var _=require(_0x2c45('0x1'));var fs=require('fs');var squel=require(_0x2c45('0x2'));var Papa=require(_0x2c45('0x3'));var Redis=require(_0x2c45('0x4'));var db=require(_0x2c45('0x5'))['db'];var config=require(_0x2c45('0x6'));var logger=require('../../../config/logger')(_0x2c45('0x7'));config['redis']=_[_0x2c45('0x8')](config[_0x2c45('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x2c45('0xa'))(new Redis(config[_0x2c45('0x9')]));require(_0x2c45('0xb'))['register'](socket);try{if(!process[_0x2c45('0xc')][0x2]||process[_0x2c45('0xc')][0x2]===_0x2c45('0xd')||process[_0x2c45('0xc')][0x2]==='null'){throw new Error(_0x2c45('0xe'));}var FILEPATH=process[_0x2c45('0xc')][0x2];if(!process[_0x2c45('0xc')][0x3]||process[_0x2c45('0xc')][0x3]===_0x2c45('0xd')||process[_0x2c45('0xc')][0x3]===_0x2c45('0xf')||!process[_0x2c45('0xc')][0x4]||process[_0x2c45('0xc')][0x4]===_0x2c45('0xd')||process[_0x2c45('0xc')][0x4]==='null'){throw new Error('Missing\x20binding\x20parameters!');}var FIELDS=_[_0x2c45('0x10')](process['argv'][0x3][_0x2c45('0x11')](','),process[_0x2c45('0xc')][0x4][_0x2c45('0x11')](','));if(!process['argv'][0x5]||process[_0x2c45('0xc')][0x5]==='undefined'||process[_0x2c45('0xc')][0x5]===_0x2c45('0xf')){throw new Error(_0x2c45('0x12'));}var LISTID=process[_0x2c45('0xc')][0x5];var COMPANYID=process[_0x2c45('0xc')][0x6]&&process[_0x2c45('0xc')][0x6]!=='undefined'&&process[_0x2c45('0xc')][0x6]!=='null'?process[_0x2c45('0xc')][0x6]:null;var DUPLICATES=process[_0x2c45('0xc')][0x7]&&process[_0x2c45('0xc')][0x7]!==_0x2c45('0xd')&&process[_0x2c45('0xc')][0x7]!==_0x2c45('0xf')?process[_0x2c45('0xc')][0x7]:null;if(!process[_0x2c45('0xc')][0x8]||process[_0x2c45('0xc')][0x8]==='undefined'||process[_0x2c45('0xc')][0x8]==='null'){throw new Error(_0x2c45('0x13'));}var SOCKET_TIMESTAMP=process[_0x2c45('0xc')][0x8];}catch(_0x1e0339){logger[_0x2c45('0x14')](_0x1e0339);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(_0x3c48cb,_0x140330,_0x43bcaf,_0x2f6a62){var _0x37a674={'message':_0x140330};_0x37a674[_0x3c48cb]=!![];if(_0x43bcaf){_0x37a674[_0x2c45('0x15')]=_0x43bcaf;}if(_0x2f6a62){_0x37a674[_0x2c45('0x16')]=_0x2f6a62;}return _0x37a674;}function isEmail(_0x46baf3){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))*$/[_0x2c45('0x17')](_0x46baf3);}function checkRow(_0x2d8efe,_0xcb9566,_0x58309d){return new BPromise(function(_0x459a1b,_0x15cc32){if(_['isNil'](_0x2d8efe)){return _0x15cc32(handleCheckRowError(_0x2c45('0x14'),_0x2c45('0x18'),null,_0x58309d));}if(_0x2d8efe[_0x2c45('0x19')]&&_0x2d8efe['errors']['length']){var _0x5bfd56=_[_0x2c45('0x1a')](_0x2d8efe[_0x2c45('0x19')],_0x2c45('0x1b'))[_0x2c45('0x1c')](';');return _0x15cc32(handleCheckRowError('error',_0x5bfd56,null,_0x58309d));}var _0x13e45b={};for(var _0x33472e in FIELDS){if(FIELDS[_0x2c45('0x1d')](_0x33472e)&&FIELDS[_0x33472e]){_0x13e45b[_0x33472e]=_0x2d8efe[_0x2c45('0x1e')][0x0][FIELDS[_0x33472e]]||_0x2d8efe['data'][0x0]['\ufeff'+FIELDS[_0x33472e]];}}if(!_0x13e45b[_0x2c45('0x1f')]){return _0x15cc32(handleCheckRowError(_0x2c45('0x14'),'firstName\x20not\x20specified!',null,_0x58309d));}if(!_0x13e45b['phone']){return _0x15cc32(handleCheckRowError(_0x2c45('0x14'),'phone\x20not\x20specified!',null,_0x58309d));}if(_0x13e45b['birthDate']){var _0x25c4f4=moment(_0x13e45b[_0x2c45('0x20')],'YYYY-MM-DD');if(!_0x25c4f4[_0x2c45('0x21')]()){return _0x15cc32(handleCheckRowError(_0x2c45('0x14'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x58309d));}}if(_0x13e45b['email']){if(!isEmail(_0x13e45b[_0x2c45('0x22')])){return _0x15cc32(handleCheckRowError(_0x2c45('0x14'),_0x2c45('0x23'),null,_0x58309d));}}_0x13e45b[_0x2c45('0x24')]=LISTID;_0x13e45b[_0x2c45('0x25')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0xcb9566){var _0x480f4a={};for(var _0x57283f=0x0,_0x4a775e=DUPLICATES[_0x2c45('0x26')];_0x57283f<_0x4a775e;_0x57283f+=0x1){_0x480f4a[DUPLICATES[_0x57283f]]=_0x13e45b[DUPLICATES[_0x57283f]];}var _0x7dd678=_['find'](_0xcb9566,_0x480f4a);if(_0x7dd678){return _0x15cc32(handleCheckRowError(_0x2c45('0x27'),'Duplicate\x20Contact',_0x7dd678,_0x58309d));}}return db['CmContact'][_0x2c45('0x28')](_0x13e45b,{'raw':!![],'hooks':![],'fields':_[_0x2c45('0x29')](_0x13e45b)})[_0x2c45('0x2a')](function(_0xcb84b){if(DUPLICATES&&DUPLICATES['length']&&_0xcb9566){_0xcb9566['push'](_[_0x2c45('0x2b')](_0x13e45b,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0xcb84b['id'];return _0x459a1b();})[_0x2c45('0x2c')](function(_0x3c2806){return _0x15cc32(handleCheckRowError('error',_0x2c45('0x2d')+(_0x3c2806[_0x2c45('0x1b')]||JSON[_0x2c45('0x2e')](_0x3c2806)),null,_0x58309d));});});}function checkHopper(){function _0x1ce7bd(){return function(_0x46bdb8){logger[_0x2c45('0x14')](_0x2c45('0x2f'),_0x2c45('0x30'),util[_0x2c45('0x31')](_0x46bdb8,{'showHidden':![],'depth':null}));};}var _0x572e11=function(_0x500ca7,_0x1d89ab){var _0x5763ae=squel[_0x2c45('0x32')]()[_0x2c45('0x33')](_0x2c45('0x34'))[_0x2c45('0x35')]([_0x2c45('0x36'),'scheduledAt',_0x2c45('0x37'),_0x2c45('0x24'),_0x1d89ab,_0x2c45('0x38'),_0x2c45('0x39')],squel[_0x2c45('0x3a')]()['field'](_0x2c45('0x36'),_0x2c45('0x36'))[_0x2c45('0x3b')](_0x2c45('0x3c'),_0x2c45('0x3d'))[_0x2c45('0x3b')]('id',_0x2c45('0x37'))[_0x2c45('0x3b')](LISTID[_0x2c45('0x3e')](),'ListId')[_0x2c45('0x3b')](_0x500ca7['id'][_0x2c45('0x3e')](),_0x1d89ab)[_0x2c45('0x3b')](_0x2c45('0x3c'),_0x2c45('0x38'))['field'](_0x2c45('0x3c'),'updatedAt')[_0x2c45('0x3f')](_0x2c45('0x40'))[_0x2c45('0x41')](_0x2c45('0x42'))[_0x2c45('0x41')](_0x2c45('0x43'),LISTID[_0x2c45('0x3e')]())[_0x2c45('0x41')](_0x2c45('0x44'))['where'](_0x2c45('0x45'),squel[_0x2c45('0x3a')]()[_0x2c45('0x3b')](_0x2c45('0x36'))[_0x2c45('0x3f')](_0x2c45('0x34'))['where'](_0x1d89ab+_0x2c45('0x46'),_0x500ca7['id']['toString']())))[_0x2c45('0x3e')]();return _0x5763ae;};var _0x133668=function(_0x4f98b5,_0x46e3a8){var _0x141586=squel['insert']()[_0x2c45('0x33')](_0x2c45('0x34'))[_0x2c45('0x35')]([_0x2c45('0x36'),_0x2c45('0x3d'),_0x2c45('0x37'),_0x2c45('0x24'),_0x46e3a8,_0x2c45('0x38'),_0x2c45('0x39')],squel[_0x2c45('0x3a')]()['field']('phone',_0x2c45('0x36'))['field'](_0x2c45('0x3c'),'scheduledAt')[_0x2c45('0x3b')]('id',_0x2c45('0x37'))[_0x2c45('0x3b')](LISTID[_0x2c45('0x3e')](),_0x2c45('0x24'))['field'](_0x4f98b5['id']['toString'](),_0x46e3a8)['field'](_0x2c45('0x3c'),_0x2c45('0x38'))[_0x2c45('0x3b')](_0x2c45('0x3c'),_0x2c45('0x39'))[_0x2c45('0x3f')](_0x2c45('0x40'))[_0x2c45('0x41')](_0x2c45('0x42'))[_0x2c45('0x41')](_0x2c45('0x43'),LISTID[_0x2c45('0x3e')]())[_0x2c45('0x41')](_0x2c45('0x47'),squel[_0x2c45('0x48')](hopperContacts))[_0x2c45('0x41')](_0x2c45('0x44'))['where'](_0x2c45('0x45'),squel['select']()[_0x2c45('0x3b')](_0x2c45('0x49'))[_0x2c45('0x3f')]('cm_hopper_final')[_0x2c45('0x41')](_0x46e3a8+_0x2c45('0x46'),_0x4f98b5['id'][_0x2c45('0x3e')]()))['where'](_0x2c45('0x45'),squel[_0x2c45('0x3a')]()[_0x2c45('0x3b')](_0x2c45('0x36'))[_0x2c45('0x3f')](_0x2c45('0x34'))[_0x2c45('0x41')](_0x46e3a8+'\x20=\x20?',_0x4f98b5['id']['toString']())))[_0x2c45('0x3e')]();return _0x141586;};function _0x11e9b8(_0x4c7279,_0x486751){var _0x5a4909=squel['insert']()['into'](_0x2c45('0x34'))[_0x2c45('0x35')]([_0x2c45('0x36'),'scheduledAt',_0x2c45('0x37'),_0x2c45('0x24'),_0x486751,'createdAt','updatedAt'],squel[_0x2c45('0x3a')]()['field'](_0x2c45('0x36'),_0x2c45('0x36'))[_0x2c45('0x3b')](_0x2c45('0x3c'),_0x2c45('0x3d'))[_0x2c45('0x3b')]('id',_0x2c45('0x37'))[_0x2c45('0x3b')](LISTID['toString'](),_0x2c45('0x24'))[_0x2c45('0x3b')](_0x4c7279['id'][_0x2c45('0x3e')](),_0x486751)[_0x2c45('0x3b')](_0x2c45('0x3c'),'createdAt')[_0x2c45('0x3b')](_0x2c45('0x3c'),_0x2c45('0x39'))[_0x2c45('0x3f')]('cm_contacts')[_0x2c45('0x41')](_0x2c45('0x42'))['where']('ListId\x20=\x20?',LISTID[_0x2c45('0x3e')]())['where'](_0x2c45('0x47'),squel['str'](hopperContacts))[_0x2c45('0x41')](_0x2c45('0x44')))['toString']();return _0x5a4909;}function _0x5c4b86(_0x206b5f,_0x44d0a9){var _0xbf3d59=squel['insert']()['into'](_0x2c45('0x4a'))['fromQuery']([_0x2c45('0x36'),_0x2c45('0x37'),_0x2c45('0x24'),_0x44d0a9,_0x2c45('0x38'),_0x2c45('0x39')],squel[_0x2c45('0x3a')]()[_0x2c45('0x3b')]('phone',_0x2c45('0x36'))[_0x2c45('0x3b')]('id',_0x2c45('0x37'))[_0x2c45('0x3b')](LISTID[_0x2c45('0x3e')](),_0x2c45('0x24'))[_0x2c45('0x3b')](_0x206b5f['id']['toString'](),_0x44d0a9)[_0x2c45('0x3b')]('NOW()',_0x2c45('0x38'))[_0x2c45('0x3b')](_0x2c45('0x3c'),'updatedAt')[_0x2c45('0x3f')](_0x2c45('0x40'))[_0x2c45('0x41')](_0x2c45('0x42'))[_0x2c45('0x41')](_0x2c45('0x43'),LISTID[_0x2c45('0x3e')]())['where']('id\x20IN\x20?',squel['str'](hopperContacts))[_0x2c45('0x41')](_0x2c45('0x44')))['toString']();return _0xbf3d59;}return db[_0x2c45('0x4b')][_0x2c45('0x4c')]({'where':{'type':_0x2c45('0x4d')},'attributes':['id',_0x2c45('0x4e')],'include':[{'model':db[_0x2c45('0x4f')],'as':_0x2c45('0x50'),'where':{'id':LISTID}}]})['then'](function(_0x55d5e1){var _0x3c50fd=[];if(_0x55d5e1){var _0x264f98;for(var _0x6ceb3c=0x0,_0x3375f2;_0x6ceb3c<_0x55d5e1[_0x2c45('0x26')];_0x6ceb3c+=0x1){_0x3375f2=_0x55d5e1[_0x6ceb3c][_0x2c45('0x51')]({'plain':!![]});switch(_0x3375f2['dialCheckDuplicateType']){case'always':_0x3c50fd[_0x2c45('0x52')](db['sequelize'][_0x2c45('0x53')](_0x133668(_0x3375f2,_0x2c45('0x54')))['then'](function(){})['catch'](_0x1ce7bd()));break;case'onlyIfOpen':_0x3c50fd[_0x2c45('0x52')](db['sequelize'][_0x2c45('0x53')](_0x572e11(_0x3375f2,'VoiceQueueId'))[_0x2c45('0x2a')](function(){})[_0x2c45('0x2c')](_0x1ce7bd()));break;default:_0x3c50fd[_0x2c45('0x52')](db[_0x2c45('0x55')]['query'](_0x11e9b8(_0x3375f2,_0x2c45('0x54')))['then'](function(){})[_0x2c45('0x2c')](_0x1ce7bd()));}}}return _0x3c50fd;})[_0x2c45('0x56')]()[_0x2c45('0x2a')](function(){return db[_0x2c45('0x4b')][_0x2c45('0x4c')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db[_0x2c45('0x4f')],'as':_0x2c45('0x57'),'where':{'id':LISTID}}]})['then'](function(_0x21f766){var _0x1c8d86=[];if(_0x21f766){var _0x4b381e;for(var _0x2c1576=0x0,_0xed83f1;_0x2c1576<_0x21f766[_0x2c45('0x26')];_0x2c1576+=0x1){_0xed83f1=_0x21f766[_0x2c1576][_0x2c45('0x51')]({'plain':!![]});_0x1c8d86[_0x2c45('0x52')](db['sequelize'][_0x2c45('0x53')](_0x5c4b86(_0xed83f1,_0x2c45('0x54')))[_0x2c45('0x2a')](function(){})[_0x2c45('0x2c')](_0x1ce7bd()));}}return _0x1c8d86;})[_0x2c45('0x56')]();})[_0x2c45('0x2a')](function(){return db[_0x2c45('0x58')][_0x2c45('0x4c')]({'attributes':['id',_0x2c45('0x4e')],'include':[{'model':db[_0x2c45('0x4f')],'as':_0x2c45('0x50'),'where':{'id':LISTID}}]})['then'](function(_0x229586){var _0x3fa9a5=[];if(_0x229586){for(var _0x4fbe68=0x0,_0x35387f;_0x4fbe68<_0x229586[_0x2c45('0x26')];_0x4fbe68+=0x1){_0x35387f=_0x229586[_0x4fbe68]['get']({'plain':!![]});switch(_0x35387f[_0x2c45('0x4e')]){case _0x2c45('0x59'):_0x3fa9a5[_0x2c45('0x52')](db[_0x2c45('0x55')]['query'](_0x133668(_0x35387f,'CampaignId'))[_0x2c45('0x2a')](function(){})[_0x2c45('0x2c')](_0x1ce7bd()));break;case'onlyIfOpen':_0x3fa9a5[_0x2c45('0x52')](db[_0x2c45('0x55')][_0x2c45('0x53')](_0x572e11(_0x35387f,'CampaignId'))[_0x2c45('0x2a')](function(){})[_0x2c45('0x2c')](_0x1ce7bd()));break;default:_0x3fa9a5['push'](db[_0x2c45('0x55')][_0x2c45('0x53')](_0x11e9b8(_0x35387f,_0x2c45('0x5a')))[_0x2c45('0x2a')](function(){})[_0x2c45('0x2c')](_0x1ce7bd()));}}}return _0x3fa9a5;})[_0x2c45('0x56')]();})[_0x2c45('0x2a')](function(){return db[_0x2c45('0x58')]['findAll']({'attributes':['id'],'include':[{'model':db[_0x2c45('0x4f')],'as':_0x2c45('0x57'),'where':{'id':LISTID}}]})['then'](function(_0x3f3066){var _0x3c189b=[];if(_0x3f3066){for(var _0x2d52cd=0x0,_0x31096f;_0x2d52cd<_0x3f3066[_0x2c45('0x26')];_0x2d52cd+=0x1){_0x31096f=_0x3f3066[_0x2d52cd]['get']({'plain':!![]});_0x3c189b[_0x2c45('0x52')](db[_0x2c45('0x55')][_0x2c45('0x53')](_0x5c4b86(_0x31096f,_0x2c45('0x5a')))[_0x2c45('0x2a')](function(){})[_0x2c45('0x2c')](_0x1ce7bd()));}}return _0x3c189b;})[_0x2c45('0x56')]();})['catch'](function(_0x106c30){logger[_0x2c45('0x14')]('cmContact,\x20%s,\x20%s','generalCheckHopper',_0x106c30['message']);});}var processPromises=function(_0x10efde){return BPromise['all'](promises)[_0x2c45('0x2a')](function(_0x1a035d){})[_0x2c45('0x2c')](function(_0x498336){logger[_0x2c45('0x14')]('Error\x20processing\x20rows\x20block:',JSON[_0x2c45('0x2e')](_0x498336));})[_0x2c45('0x5b')](function(){socket[_0x2c45('0x5c')](_0x2c45('0x5d')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x10efde){return _0x10efde[_0x2c45('0x5e')]();}});};var endCsv=function(){return BPromise[_0x2c45('0x5f')]()[_0x2c45('0x2a')](function(){if(hopperContacts){return checkHopper();}})['then'](function(){socket[_0x2c45('0x5c')](_0x2c45('0x5d')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x2c45('0x60')](FILEPATH);}catch(_0x211e83){logger[_0x2c45('0x14')](_0x2c45('0x61'),JSON[_0x2c45('0x2e')](_0x211e83));}finally{process[_0x2c45('0x62')](0x0);}});};process['on'](_0x2c45('0x63'),function(){logger['info'](_0x2c45('0x64'));endCsv();});function main(){return BPromise[_0x2c45('0x5f')]()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x2c45('0x11')](',');return db[_0x2c45('0x65')][_0x2c45('0x4c')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x2c45('0x2a')](function(_0x1d9fba){var _0xad4306=fs[_0x2c45('0x66')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x2c45('0x67')](_0xad4306,{'header':!![],'skipEmptyLines':!![],'step':function(_0x1d8951,_0x4194bc){total+=0x1;var _0x561417=total;promises[_0x2c45('0x52')](checkRow(_0x1d8951,_0x1d9fba,_0x561417)[_0x2c45('0x2a')](function(){success+=0x1;})['catch'](function(_0x61143a){if(_0x61143a['error']){errors+=0x1;delete _0x61143a[_0x2c45('0x14')];}else if(_0x61143a['duplicate']){duplicates+=0x1;delete _0x61143a[_0x2c45('0x27')];}rows[_0x2c45('0x52')](_0x61143a);}));if(total%0xc8===0x0){_0x4194bc['pause']();return processPromises(_0x4194bc);}},'complete':function(){return processPromises()[_0x2c45('0x2a')](function(){logger[_0x2c45('0x68')]('CSV\x20parsed\x20correctly!');endCsv();});},'error':function(_0x55ec7a,_0x5d5ba5){logger[_0x2c45('0x68')]('CSV\x20parse\x20error',JSON[_0x2c45('0x2e')](_0x55ec7a));endCsv();}});})[_0x2c45('0x2c')](function(_0x1c4ce2){logger[_0x2c45('0x14')](_0x2c45('0x69'),JSON[_0x2c45('0x2e')](_0x1c4ce2));});}main();
\ No newline at end of file
index f922608..0aa67ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa612=['orderBy','voice_queues_has_cm_lists','VoiceQueueId','CampaignId','campaigns_has_cm_blacklists','voice_queues_has_cm_blacklists','affectedRows','unlink','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','parse','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/environment/shared','import','redis','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','phone','from','join','.id\x20=\x20','\x20=\x20','where','findAll','AdditionalPhones','then','length','split','all','isNil','filter','push','CmContactHasItem','findOne','update','updated','create','PHONE','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','fields','.CmListId','.CmListId\x20=\x20?','\x22always\x22','\x22onlyIfOpen\x22','cm_contacts.id','insert','cm_hopper_black','cm_contacts','cm_contacts.ListId\x20=\x20','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','select','field','ListId\x20=\x20?','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','toString','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_hopper_additional_phones','CmHopperId','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','keys','CompanyId',')\x20NOT\x20IN\x20?','id\x20IN\x20?','min_id','group','info','Received\x20SIGINT','error','exit','errors','query','spread','catch','message','campaigns.id','campaigns.dialTimezone','campaigns','campaigns_has_cm_lists','campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId','sequelize','voice_queues.id','voice_queues','voice_queues_has_cm_lists.CmListId=','timezones','dialTimezone','utcOffset','set','main','stringify','send','start','binding','socket_timestamp','root','server/files/tmp','.csv','includes','header','ContactItemType','name','_description','writeFileSync','createReadStream','data','rows','find','hasOwnProperty','trim','replace','isNaN','isNumber','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','isValid','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','itemTypeId','description','SystemRow','emit','contact:import:','Abort\x20parser','abort','SystemError','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','campaigns_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','each','dialTimezone,utcOffset','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()','DROP\x20TABLE\x20','contactId'];(function(_0x11e3f9,_0x5b60ed){var _0x4cf655=function(_0x1f47c4){while(--_0x1f47c4){_0x11e3f9['push'](_0x11e3f9['shift']());}};_0x4cf655(++_0x5b60ed);}(_0xa612,0x187));var _0x2a61=function(_0x260bf4,_0x4b5c64){_0x260bf4=_0x260bf4-0x0;var _0x178a87=_0xa612[_0x260bf4];return _0x178a87;};'use strict';var fs=require('fs');var path=require(_0x2a61('0x0'));var _=require(_0x2a61('0x1'));var Papa=require(_0x2a61('0x2'));var util=require(_0x2a61('0x3'));var BPromise=require(_0x2a61('0x4'));var moment=require(_0x2a61('0x5'));var squel=require(_0x2a61('0x6'));var Redis=require(_0x2a61('0x7'));var db=require(_0x2a61('0x8'))['db'];var config=require('../../../config/environment');var shared=require(_0x2a61('0x9'));var logger=require('../../../config/logger')(_0x2a61('0xa'));config['redis']=_['defaults'](config[_0x2a61('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x2a61('0xc'))(new Redis(config[_0x2a61('0xb')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0x2a61('0xd')](_0x2a61('0xe'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0x2a61('0xd')](_0x2a61('0xe'));function isEmail(_0x265e2f){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))*$/[_0x2a61('0xf')](_0x265e2f);}function selectNotIn(_0x2962d2,_0x47d74c,_0x385673,_0x268cfd,_0x490cdc){return squel['select']()['field'](_0x2a61('0x10'))[_0x2a61('0x11')](_0x268cfd)[_0x2a61('0x12')](_0x47d74c,null,_0x47d74c+_0x2a61('0x13')+_0x268cfd+'.'+_0x385673)['where'](_0x268cfd+'.'+_0x385673+_0x2a61('0x14')+_0x2962d2+'.'+_0x385673)[_0x2a61('0x15')](_0x47d74c+'.dialCheckDuplicateType\x20IN\x20('+_0x490cdc['join']()+')');}function handleAdditionalPhones(){return new Promise(function(_0x1d48eb,_0x2b3bc4){promisesAdditionalPhones=[];return db['CmContact'][_0x2a61('0x16')]({'raw':!![],'attributes':['id',_0x2a61('0x17')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0x2a61('0x18')](function(_0x545548){if(_0x545548!==null){var _0x454248=[];for(var _0x391b23=0x0;_0x391b23<_0x545548[_0x2a61('0x19')];_0x391b23++){var _0x329f1b=_0x545548[_0x391b23];_0x454248['push'](insertAdditionalPhones(_0x329f1b));}}Promise['all'](_0x454248)[_0x2a61('0x18')](function(){_0x1d48eb({'val':0x1});});});});}function insertAdditionalPhones(_0x1c236e){return new Promise(function(_0x5711ae,_0x2bcb8f){var _0x7da5cd=_0x1c236e[_0x2a61('0x17')];var _0x554540=_0x7da5cd[_0x2a61('0x1a')](';');var _0x518fca=[];orderBy=0x0;for(var _0x311ab1=0x0;_0x311ab1<_0x554540[_0x2a61('0x19')];_0x311ab1++){_0x518fca['push'](splitAdditionalPhone(_0x1c236e['id'],_0x554540[_0x311ab1]));}Promise[_0x2a61('0x1b')](_0x518fca)[_0x2a61('0x18')](function(){_0x5711ae({'val':_0x554540['length']});});});}function splitAdditionalPhone(_0x3626fe,_0xd4a768){return new Promise(function(_0x46e516,_0x9975df){var _0x4c91d3=_0xd4a768['split'](':');var _0x40721f=_0x4c91d3[0x0];var _0x368c18=_0x4c91d3[0x1];if(!_[_0x2a61('0x1c')](_0x368c18)){var _0x126059=_0x368c18[_0x2a61('0x1a')]('|');var _0x551805=[];for(var _0x4dddbe=0x0;_0x4dddbe<_0x126059[_0x2a61('0x19')];_0x4dddbe++){if(_0x126059[_0x4dddbe]!==''){var _0x26acba=_[_0x2a61('0x1d')](promisesAdditionalPhones,{'contactId':_0x3626fe,'phone':_0x126059[_0x4dddbe]});if(_0x26acba[_0x2a61('0x19')]==0x0){orderBy++;promisesAdditionalPhones[_0x2a61('0x1e')]({'contactId':_0x3626fe,'contactTypeId':_0x40721f,'phone':_0x126059[_0x4dddbe],'orderBy':orderBy});}}}_0x46e516({'ok':0x1});}else _0x46e516({'res':0x0});});}function createAdditionalPhone(_0x42884f,_0x3b5890,_0xda05ee,_0x3b00ef){var _0x1eb7ab='';var _0x33a3f5='';var _0x211293=_0xda05ee[_0x2a61('0x1a')]('§');_0x1eb7ab=_0x211293[0x0];if(_0x211293[_0x2a61('0x19')]==0x2)_0x33a3f5=_0x211293[0x1];return new Promise(function(_0x584b86,_0x8ad602){return db[_0x2a61('0x1f')][_0x2a61('0x20')]({'where':{'CmContactId':_0x42884f,'item':_0x1eb7ab}})['then'](function(_0x58503a){if(_0x58503a){return db['CmContactHasItem'][_0x2a61('0x21')]({'ItemTypeId':_0x3b5890,'description':_0x33a3f5,'OrderBy':_0x3b00ef},{'where':{'CmContactId':_0x42884f,'item':_0x1eb7ab}})[_0x2a61('0x18')](function(_0x453c03){_0x584b86({'res':_0x2a61('0x22')});});}else{return db[_0x2a61('0x1f')][_0x2a61('0x23')]({'CmContactId':_0x42884f,'item':_0x1eb7ab,'description':_0x33a3f5,'ItemTypeId':_0x3b5890,'OrderBy':_0x3b00ef,'ItemClass':_0x2a61('0x24')})['then'](function(_0x161be6){_0x584b86({'res':'inserted'});});}});});}function insertCmHopper(_0x769457,_0x2eef54,_0x1ec57a,_0x329e68,_0x36ed86){var _0x270128=[_0x2a61('0x25'),_0x2a61('0x26'),'cm_contacts.id',_0x2a61('0x27'),_0x2eef54+'.'+_0x329e68,_0x2a61('0x28'),_0x2a61('0x29'),_0x2a61('0x2a'),_0x2a61('0x2b'),'\x22'+_0x36ed86+'\x22'];return squel['insert']()[_0x2a61('0x2c')](_0x2a61('0x2d'))[_0x2a61('0x2e')]([_0x2a61('0x10'),_0x2a61('0x2f'),_0x2a61('0x30'),_0x2a61('0x31'),_0x329e68,_0x2a61('0x32'),_0x2a61('0x33'),_0x2a61('0x34'),_0x2a61('0x35'),_0x2a61('0x36')],squel['select']()[_0x2a61('0x37')](_0x270128)[_0x2a61('0x11')](_0x2eef54)[_0x2a61('0x12')]('cm_contacts',null,'cm_contacts.ListId\x20=\x20'+_0x2eef54+_0x2a61('0x38'))[_0x2a61('0x12')](_0x1ec57a,null,_0x1ec57a+_0x2a61('0x13')+_0x2eef54+'.'+_0x329e68)[_0x2a61('0x15')](_0x2eef54+_0x2a61('0x39'),_0x769457)[_0x2a61('0x15')]('cm_contacts.createdAt\x20=\x20?',NOW)['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x2eef54,_0x1ec57a,_0x329e68,_0x2a61('0x2d'),[_0x2a61('0x3a'),_0x2a61('0x3b')]))[_0x2a61('0x15')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x2eef54,_0x1ec57a,_0x329e68,'cm_hopper',['\x22always\x22'])))['toString']();}function insertCmHopperBlack(_0x3e76b0,_0xe0c655,_0x4e04c8,_0x36909e){var _0x2a5750=[_0x2a61('0x25'),_0x2a61('0x3c'),'cm_contacts.ListId',_0xe0c655+'.'+_0x36909e,'cm_contacts.createdAt','cm_contacts.updatedAt'];return squel[_0x2a61('0x3d')]()[_0x2a61('0x2c')](_0x2a61('0x3e'))[_0x2a61('0x2e')]([_0x2a61('0x10'),_0x2a61('0x30'),'ListId',_0x36909e,_0x2a61('0x32'),_0x2a61('0x33')],squel['select']()[_0x2a61('0x37')](_0x2a5750)[_0x2a61('0x11')](_0xe0c655)['join'](_0x2a61('0x3f'),null,_0x2a61('0x40')+_0xe0c655+_0x2a61('0x38'))[_0x2a61('0x12')](_0x4e04c8,null,_0x4e04c8+_0x2a61('0x13')+_0xe0c655+'.'+_0x36909e)['where'](_0xe0c655+_0x2a61('0x39'),_0x3e76b0)['where'](_0x2a61('0x41'),NOW)[_0x2a61('0x15')](_0x2a61('0x42'),squel[_0x2a61('0x43')]()[_0x2a61('0x44')](_0x2a61('0x10'))[_0x2a61('0x11')](_0x2a61('0x3e'))[_0x2a61('0x15')](_0x2a61('0x45'),_0x3e76b0)[_0x2a61('0x15')](_0x36909e+_0x2a61('0x14')+_0xe0c655+'.'+_0x36909e)))['toString']();}function insertTzCmHopper(_0x466483,_0x40e78a,_0x5bc7d0,_0x1a6992,_0x5a6338,_0x3ebb1d){var _0x490ade=['cm_contacts.phone',_0x2a61('0x46')+_0x3ebb1d+_0x2a61('0x47'),'cm_contacts.id','cm_contacts.ListId',_0x40e78a+'.'+_0x1a6992,_0x2a61('0x28'),'cm_contacts.updatedAt',_0x2a61('0x2a'),'cm_contacts.UserId','\x22'+_0x5a6338+'\x22'];var _0x3ff126=squel['insert']()[_0x2a61('0x2c')](_0x2a61('0x2d'))['fromQuery']([_0x2a61('0x10'),_0x2a61('0x2f'),'ContactId',_0x2a61('0x31'),_0x1a6992,'createdAt',_0x2a61('0x33'),_0x2a61('0x34'),_0x2a61('0x35'),_0x2a61('0x36')],squel[_0x2a61('0x43')]()[_0x2a61('0x37')](_0x490ade)[_0x2a61('0x11')](_0x40e78a)[_0x2a61('0x12')](_0x2a61('0x3f'),null,'cm_contacts.ListId\x20=\x20'+_0x40e78a+_0x2a61('0x38'))[_0x2a61('0x12')](_0x5bc7d0,null,_0x5bc7d0+'.id\x20=\x20'+_0x40e78a+'.'+_0x1a6992)[_0x2a61('0x12')](_0x3ebb1d,null,_0x3ebb1d+_0x2a61('0x13')+_0x40e78a+'.'+_0x1a6992)[_0x2a61('0x15')](_0x40e78a+'.CmListId\x20=\x20?',_0x466483)['where'](_0x2a61('0x41'),NOW)['where'](_0x2a61('0x42'),selectNotIn(_0x40e78a,_0x5bc7d0,_0x1a6992,'cm_hopper',[_0x2a61('0x3a'),_0x2a61('0x3b')]))[_0x2a61('0x15')](_0x2a61('0x42'),selectNotIn(_0x40e78a,_0x5bc7d0,_0x1a6992,_0x2a61('0x2d'),[_0x2a61('0x3a')])))[_0x2a61('0x48')]();return _0x3ff126;}function insertTzCmHopperBlack(_0x50f4a4,_0x27c78a,_0x221a7b,_0x191e8e){var _0x41a11b=[_0x2a61('0x25'),'cm_contacts.id','cm_contacts.ListId',_0x27c78a+'.'+_0x191e8e,'cm_contacts.createdAt','cm_contacts.updatedAt'];return squel[_0x2a61('0x3d')]()[_0x2a61('0x2c')]('cm_hopper_black')[_0x2a61('0x2e')]([_0x2a61('0x10'),_0x2a61('0x30'),_0x2a61('0x31'),_0x191e8e,'createdAt',_0x2a61('0x33')],squel[_0x2a61('0x43')]()[_0x2a61('0x37')](_0x41a11b)[_0x2a61('0x11')](_0x27c78a)[_0x2a61('0x12')](_0x2a61('0x3f'),null,_0x2a61('0x40')+_0x27c78a+_0x2a61('0x38'))[_0x2a61('0x12')](_0x221a7b,null,_0x221a7b+'.id\x20=\x20'+_0x27c78a+'.'+_0x191e8e)['where'](_0x27c78a+_0x2a61('0x39'),_0x50f4a4)[_0x2a61('0x15')](_0x2a61('0x41'),NOW)[_0x2a61('0x15')](_0x2a61('0x42'),squel[_0x2a61('0x43')]()[_0x2a61('0x44')](_0x2a61('0x10'))['from'](_0x2a61('0x3e'))[_0x2a61('0x15')](_0x2a61('0x45'),_0x50f4a4)[_0x2a61('0x15')](_0x191e8e+'\x20=\x20'+_0x27c78a+'.'+_0x191e8e)))[_0x2a61('0x48')]();}function insertCmHopperAdditionalPhones(_0x5b144c){var _0x3ec49b=[_0x2a61('0x49'),_0x2a61('0x4a'),_0x2a61('0x4b'),_0x2a61('0x4c'),'cm_contact_has_items.updatedAt'];return squel['insert']()[_0x2a61('0x2c')](_0x2a61('0x4d'))[_0x2a61('0x2e')]([_0x2a61('0x4e'),'phone',_0x2a61('0x4f'),_0x2a61('0x32'),'updatedAt'],squel['select']()[_0x2a61('0x37')](_0x3ec49b)[_0x2a61('0x11')](_0x2a61('0x2d'))[_0x2a61('0x12')]('cm_contacts',null,_0x2a61('0x50'))[_0x2a61('0x12')](_0x2a61('0x51'),null,_0x2a61('0x52'))[_0x2a61('0x15')](_0x2a61('0x53'),_0x5b144c)[_0x2a61('0x15')](_0x2a61('0x41'),NOW))['toString']();}function insertCmContact(_0x4e133a,_0x42c566,_0x259cf1,_0x359e9d){var _0x58cf23=_['concat'](_[_0x2a61('0x54')](_0x359e9d),[_0x2a61('0x31'),_0x2a61('0x55'),_0x2a61('0x32'),'updatedAt']);return squel[_0x2a61('0x3d')]()[_0x2a61('0x2c')](_0x2a61('0x3f'))[_0x2a61('0x2e')](_0x58cf23,squel[_0x2a61('0x43')]()[_0x2a61('0x37')](_0x58cf23)[_0x2a61('0x11')](_0x42c566)[_0x2a61('0x15')]('('+_0x259cf1[_0x2a61('0x12')](',')+_0x2a61('0x56'),squel[_0x2a61('0x43')]()[_0x2a61('0x37')](_0x259cf1)['from'](_0x2a61('0x3f'))[_0x2a61('0x15')](_0x2a61('0x45'),_0x4e133a)[_0x2a61('0x15')]('deletedAt\x20IS\x20NULL'))['where'](_0x2a61('0x57'),squel[_0x2a61('0x43')]()[_0x2a61('0x44')]('MIN(id)',_0x2a61('0x58'))[_0x2a61('0x11')](_0x42c566)[_0x2a61('0x59')](_0x259cf1[_0x2a61('0x12')](','))))[_0x2a61('0x48')]();}function handleStop(){logger[_0x2a61('0x5a')](_0x2a61('0x5b'));stopped=!![];}function handleUncaughtException(_0x4b4e2c){logger[_0x2a61('0x5c')](_0x4b4e2c['message']);process[_0x2a61('0x5d')](0x1);}function handleError(_0x5c6202,_0x5e29f9){stats[_0x2a61('0x5e')][_0x2a61('0x1e')]({'name':_0x5e29f9['code'],'message':_0x5e29f9['message'],'row':_0x5c6202});}function handleQuery(_0x4f705f){logger['info'](_0x4f705f);return db['sequelize'][_0x2a61('0x5f')](_0x4f705f)[_0x2a61('0x60')](function(_0x40621b){results['push'](_0x40621b);})[_0x2a61('0x61')](function(_0x15a8a9){logger[_0x2a61('0x5c')](_0x15a8a9[_0x2a61('0x62')]);});}function updateTzCampaigns(_0x11e925){return new Promise(function(_0x261aee,_0x33cc12){var _0x3af773=squel['select']()[_0x2a61('0x37')]([_0x2a61('0x63'),_0x2a61('0x64')])[_0x2a61('0x11')](_0x2a61('0x65'))[_0x2a61('0x12')](_0x2a61('0x66'),null,_0x2a61('0x67'))['where']('campaigns_has_cm_lists.CmListId='+_0x11e925);db[_0x2a61('0x68')][_0x2a61('0x5f')](_0x3af773[_0x2a61('0x48')]())['spread'](function(_0x577265){var _0x149771=[];for(var _0x4fca68=0x0;_0x4fca68<_0x577265[_0x2a61('0x19')];_0x4fca68++){_0x149771[_0x2a61('0x1e')](getTimezoneData(_0x577265[_0x4fca68],tmp_campaigns));}BPromise['all'](_0x149771)[_0x2a61('0x18')](function(){_0x261aee({'val':0x1});});})[_0x2a61('0x61')](function(_0x253594){logger['error'](_0x253594[_0x2a61('0x62')]);_0x261aee({'val':0x0});});});}function updateTzVoiceQueues(_0x44fce0){return new Promise(function(_0x3e1b53,_0x25c7a6){var _0x521597=squel['select']()['fields']([_0x2a61('0x69'),'voice_queues.dialTimezone'])[_0x2a61('0x11')](_0x2a61('0x6a'))[_0x2a61('0x12')]('voice_queues_has_cm_lists',null,'voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId')[_0x2a61('0x15')](_0x2a61('0x6b')+_0x44fce0);db[_0x2a61('0x68')]['query'](_0x521597['toString']())[_0x2a61('0x60')](function(_0x50ee89){var _0x229629=[];for(var _0x144ccc=0x0;_0x144ccc<_0x50ee89[_0x2a61('0x19')];_0x144ccc++){_0x229629[_0x2a61('0x1e')](getTimezoneData(_0x50ee89[_0x144ccc],tmp_voice_queues));}BPromise['all'](_0x229629)[_0x2a61('0x18')](function(){_0x3e1b53({'val':0x1});});})['catch'](function(_0x26e640){logger[_0x2a61('0x5c')](_0x26e640['message']);_0x3e1b53({'val':0x0});});});}function getTimezoneData(_0x56a744,_0x2e40ad){return new Promise(function(_0x4f9979,_0x27f384){var _0x2ff0de=shared[_0x2a61('0x6c')];var _0x505638=_0x2ff0de[_0x56a744[_0x2a61('0x6d')]];if(_['isNil'](_0x505638)){_0x4f9979({'ret':0x1});}else{var _0xf03911=_0x505638[_0x2a61('0x6e')];var _0x2697d6=squel[_0x2a61('0x3d')]()[_0x2a61('0x2c')](_0x2e40ad)[_0x2a61('0x6f')]('id',_0x56a744['id'])[_0x2a61('0x6f')]('offset',_0xf03911)['set'](_0x2a61('0x6d'),_0x56a744[_0x2a61('0x6d')])[_0x2a61('0x48')]();return db[_0x2a61('0x68')]['query'](_0x2697d6)[_0x2a61('0x60')](function(_0x20ade4){_0x4f9979({'ret':0x1});})[_0x2a61('0x61')](function(_0x24a8b6){logger['error'](_0x24a8b6[_0x2a61('0x62')]);_0x27f384({'ret':0x1});});}});}function handleTZQuery(_0x4beb80){logger['info'](_0x4beb80);return db[_0x2a61('0x68')][_0x2a61('0x5f')](_0x4beb80)[_0x2a61('0x60')](function(_0x515b20){})[_0x2a61('0x61')](function(_0x2186b9){logger[_0x2a61('0x5c')](_0x2186b9[_0x2a61('0x62')]);});}function main(_0x305eb0,_0x368fb4,_0x153311,_0x40417c){logger[_0x2a61('0x5a')](_0x2a61('0x70'),_0x305eb0,JSON[_0x2a61('0x71')](_0x368fb4));process[_0x2a61('0x72')](_0x2a61('0x73'));var _0x72d01f=_0x368fb4[_0x2a61('0x74')];var _0x21922c=_['clone'](_0x72d01f);var _0x57ccc5=_0x368fb4[_0x2a61('0x75')];var _0x3ec5e6=path['join'](config[_0x2a61('0x76')],_0x2a61('0x77'),_0x57ccc5+_0x2a61('0x78'));hasTZ=_[_0x2a61('0x54')](_0x72d01f)[_0x2a61('0x79')](_0x2a61('0x6d'));var _0x5bd538=_[_0x2a61('0x54')](_0x72d01f)[_0x2a61('0x12')]();logger[_0x2a61('0x5a')](_0x2a61('0x7a'),_0x5bd538);db[_0x2a61('0x7b')][_0x2a61('0x16')]({'raw':!![],'attributes':['id',_0x2a61('0x7c')]})[_0x2a61('0x18')](function(_0x1dab75){for(var _0x163c12=0x0;_0x163c12<_0x1dab75[_0x2a61('0x19')];_0x163c12++){if(_0x1dab75[_0x163c12]['name']in _0x72d01f){contactItemTypes[_0x2a61('0x1e')](_0x1dab75[_0x163c12]);delete _0x21922c[_0x1dab75[_0x163c12]['name']];hasAdditionalPhones=!![];}for(var _0x5dfecc in _0x72d01f){if(_0x1dab75[_0x163c12][_0x2a61('0x7c')]+_0x2a61('0x7d')===_0x5dfecc){phoneDescriptions[_0x2a61('0x1e')]({'itemTypeId':_0x1dab75[_0x163c12]['id'],'description':_0x5dfecc});delete _0x21922c[_0x5dfecc];}}}if(hasAdditionalPhones)_0x21922c[_0x2a61('0x17')]='';var _0x4d14a4=_[_0x2a61('0x54')](_0x21922c)[_0x2a61('0x12')]();logger[_0x2a61('0x5a')](_0x2a61('0x7a'),_0x4d14a4);fs[_0x2a61('0x7e')](_0x3ec5e6,_0x4d14a4+'\x0a');Papa['parse'](fs[_0x2a61('0x7f')](_0x305eb0),{'header':!![],'skipEmptyLines':!![],'step':function(_0x258849,_0x1229d1){try{for(var _0x4487bc=0x0,_0x295560=[];_0x4487bc<_0x258849[_0x2a61('0x80')][_0x2a61('0x19')];_0x4487bc++){stats[_0x2a61('0x81')]+=0x1;if(_0x258849[_0x2a61('0x5e')][_0x4487bc]){handleError(_0x258849['data'][_0x4487bc],_0x258849[_0x2a61('0x5e')][_0x4487bc]);}else{var _0xf8aad6=[];var _0x2d3bb0=[];var _0x1a9211={};for(var _0x4086bc in _0x72d01f){let _0x15ba90=contactItemTypes[_0x2a61('0x82')](_0x563559=>_0x563559['name']===_0x4086bc);let _0x17b125=contactItemTypes['find'](_0x5cb603=>_0x5cb603[_0x2a61('0x7c')]+'_description'===_0x4086bc);if(_[_0x2a61('0x1c')](_0x15ba90)&&_[_0x2a61('0x1c')](_0x17b125)){if(_0x72d01f[_0x2a61('0x83')](_0x4086bc)){if(_0x258849[_0x2a61('0x80')][_0x4487bc][_0x72d01f[_0x4086bc]]){var _0x226a11=_[_0x2a61('0x84')](_0x258849[_0x2a61('0x80')][_0x4487bc][_0x72d01f[_0x4086bc]][_0x2a61('0x85')](/"/g,'\x27'));switch(_0x4086bc){case _0x2a61('0x2f'):var _0x1c977a=moment(_0x226a11,_0x2a61('0xe'),!![]);if(_0x1c977a['isValid']()){_0x295560[_0x2a61('0x1e')]('\x22'+_0x226a11+'\x22');}else{_0xf8aad6['push']('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case _0x2a61('0x34'):var _0x936580=parseInt(_0x226a11);_0x226a11=_[_0x2a61('0x86')](_0x936580)||_0x936580<0x0||_0x936580>0x4?_0x40417c?0x3:0x2:_0x936580;_0x295560['push']('\x22'+_0x226a11+'\x22');break;case _0x2a61('0x35'):var _0xb373ce=parseInt(_0x226a11);if(_[_0x2a61('0x87')](_0xb373ce)&&_[_0x2a61('0x79')](_0x153311,_0xb373ce)){_0x295560['push']('\x22'+_0xb373ce+'\x22');}else{_0xf8aad6[_0x2a61('0x1e')]('agent\x20not\x20exists');}break;case _0x2a61('0x88'):if(isEmail(_0x226a11)){_0x295560[_0x2a61('0x1e')]('\x22'+_0x226a11+'\x22');}else{_0xf8aad6[_0x2a61('0x1e')](_0x2a61('0x89'));}break;case _0x2a61('0x8a'):var _0xae74a0=moment(_0x226a11,_0x2a61('0x8b'),!![]);if(_0xae74a0[_0x2a61('0x8c')]()){_0x295560[_0x2a61('0x1e')]('\x22'+_0x226a11+'\x22');}else{_0xf8aad6[_0x2a61('0x1e')](_0x2a61('0x8d'));}break;case _0x2a61('0x6d'):var _0x518d7d=shared[_0x2a61('0x6c')];var _0x5982fb=_0x518d7d[_0x226a11];if(!_['isNil'](_0x5982fb)){var _0x18c04e=_0x5982fb['utcOffset'];_0x295560[_0x2a61('0x1e')]('\x22'+_0x226a11+'\x22');_0x295560[_0x2a61('0x1e')]('\x22'+_0x18c04e+'\x22');}break;default:_0x295560[_0x2a61('0x1e')]('\x22'+_0x226a11+'\x22');}}else{switch(_0x4086bc){case'firstName':case _0x2a61('0x10'):_0xf8aad6[_0x2a61('0x1e')](_0x4086bc+_0x2a61('0x8e'));break;default:_0x295560[_0x2a61('0x1e')]('\x22\x22');}}}}else{var _0x5c7908='';if(!_[_0x2a61('0x1c')](_0x15ba90)){if(!_0x1a9211[_0x2a61('0x83')](_0x15ba90['id'])){if(!_[_0x2a61('0x1c')](_0x258849[_0x2a61('0x80')][_0x4487bc][_0x72d01f[_0x4086bc]])){var _0x226a11=_['trim'](_0x258849['data'][_0x4487bc][_0x72d01f[_0x4086bc]]['replace'](/"/g,'\x27'));var _0x528f41=phoneDescriptions[_0x2a61('0x82')](_0x19d79c=>_0x19d79c[_0x2a61('0x8f')]===_0x15ba90['id']);if(!_[_0x2a61('0x1c')](_0x528f41)){var _0x46d42a=_['trim'](_0x258849[_0x2a61('0x80')][_0x4487bc][_0x72d01f[_0x528f41[_0x2a61('0x90')]]]['replace'](/"/g,'\x27'));if(!_[_0x2a61('0x1c')](_0x46d42a))_0x226a11=_0x226a11+'§'+_0x46d42a;}if(_0x5c7908=='')_0x5c7908=_0x226a11;else _0x5c7908+='|'+_0x226a11;}_0x2d3bb0[_0x2a61('0x1e')](_0x15ba90['id']+':'+_0x5c7908);_0x1a9211[_0x15ba90['id']]=0x1;}}}}if(hasAdditionalPhones){_0x295560['push']('\x22'+_0x2d3bb0['join'](';')+'\x22');}if(_0xf8aad6['length']){handleError(_0x258849[_0x2a61('0x80')][_0x4487bc],{'code':_0x2a61('0x91'),'message':_0xf8aad6[_0x2a61('0x12')]()});}else{fs['appendFileSync'](_0x3ec5e6,_0x295560['join']()+'\x0a');}_0x295560=[];}if(!(stats[_0x2a61('0x81')]%0xc8)){socket[_0x2a61('0x92')](_0x2a61('0x93')+_0x57ccc5,stats);stats[_0x2a61('0x5e')]=[];}}if(stopped){logger[_0x2a61('0x5a')](_0x2a61('0x94'));_0x1229d1[_0x2a61('0x95')]();}}catch(_0x586321){handleError(_0x258849[_0x2a61('0x80')][_0x4487bc],{'code':_0x2a61('0x96'),'message':_0x586321[_0x2a61('0x62')]});logger['error'](_0x2a61('0x97'),_0x586321[_0x2a61('0x62')]);}},'complete':function(){try{var _0x267612=[];var _0x4d1c47=[];var _0x3be1fe=_0x2a61('0x3f');if(_0x368fb4[_0x2a61('0x98')]&&_0x368fb4['duplicates'][_0x2a61('0x19')]){_0x3be1fe=_0x2a61('0x99')+_0x57ccc5;_0x267612[_0x2a61('0x1e')](_0x2a61('0x9a')+_0x3be1fe+_0x2a61('0x9b'));}tmp_campaigns=_0x2a61('0x9c')+_0x57ccc5;tmp_voice_queues='voice_queues_'+_0x57ccc5;_0x4d1c47[_0x2a61('0x1e')]('CREATE\x20TABLE\x20'+tmp_campaigns+_0x2a61('0x9d'));_0x4d1c47[_0x2a61('0x1e')](_0x2a61('0x9a')+tmp_voice_queues+_0x2a61('0x9d'));BPromise[_0x2a61('0x9e')](_0x4d1c47,handleTZQuery)[_0x2a61('0x18')](function(_0x36c99b){updateTzCampaigns(_0x368fb4[_0x2a61('0x31')])[_0x2a61('0x18')](function(_0x41862c){updateTzVoiceQueues(_0x368fb4[_0x2a61('0x31')])[_0x2a61('0x18')](function(_0x43a211){if(hasTZ)_0x4d14a4=_0x4d14a4[_0x2a61('0x85')](_0x2a61('0x6d'),_0x2a61('0x9f'));var _0x5dc551=util[_0x2a61('0xd')](_0x2a61('0xa0'),_0x3ec5e6,_0x3be1fe,_0x4d14a4,_0x368fb4['ListId'],_0x368fb4[_0x2a61('0x55')]||null,NOW,NOW);if(_[_0x2a61('0x1c')](_0x72d01f[_0x2a61('0x2f')])){_0x5dc551+=_0x2a61('0xa1');}_0x267612[_0x2a61('0x1e')](_0x5dc551);if(_0x368fb4[_0x2a61('0x98')]&&_0x368fb4[_0x2a61('0x98')][_0x2a61('0x19')]){_0x267612['push'](insertCmContact(_0x368fb4[_0x2a61('0x31')],_0x3be1fe,_0x368fb4['duplicates'],_0x72d01f));_0x267612[_0x2a61('0x1e')](_0x2a61('0xa2')+_0x3be1fe+';');}BPromise[_0x2a61('0x9e')](_0x267612,handleQuery)[_0x2a61('0x18')](function(_0x4fe9a0){BPromise[_0x2a61('0x1b')]([handleAdditionalPhones()])[_0x2a61('0x18')](function(){_0x267612=[];for(var _0x3febf6=0x0;_0x3febf6<promisesAdditionalPhones['length'];_0x3febf6++){if(promisesAdditionalPhones[_0x3febf6]['phone']!='§'){_0x267612['push'](createAdditionalPhone(promisesAdditionalPhones[_0x3febf6][_0x2a61('0xa3')],promisesAdditionalPhones[_0x3febf6]['contactTypeId'],promisesAdditionalPhones[_0x3febf6][_0x2a61('0x10')],promisesAdditionalPhones[_0x3febf6][_0x2a61('0xa4')]));}}BPromise['all'](_0x267612)[_0x2a61('0x18')](function(){_0x267612=[];if(hasTZ){_0x267612[_0x2a61('0x1e')](insertTzCmHopper(_0x368fb4['ListId'],_0x2a61('0xa5'),_0x2a61('0x6a'),_0x2a61('0xa6'),_0x40417c,tmp_voice_queues));_0x267612[_0x2a61('0x1e')](insertTzCmHopperBlack(_0x368fb4[_0x2a61('0x31')],'voice_queues_has_cm_blacklists','voice_queues',_0x2a61('0xa6')));_0x267612[_0x2a61('0x1e')](insertTzCmHopper(_0x368fb4['ListId'],_0x2a61('0x66'),'campaigns',_0x2a61('0xa7'),_0x40417c,tmp_campaigns));_0x267612[_0x2a61('0x1e')](insertTzCmHopperBlack(_0x368fb4['ListId'],_0x2a61('0xa8'),_0x2a61('0x65'),'CampaignId'));_0x267612[_0x2a61('0x1e')](insertCmHopperAdditionalPhones(_0x368fb4[_0x2a61('0x31')]));}else{_0x267612['push'](insertCmHopper(_0x368fb4['ListId'],'voice_queues_has_cm_lists','voice_queues',_0x2a61('0xa6'),_0x40417c));_0x267612[_0x2a61('0x1e')](insertCmHopperBlack(_0x368fb4[_0x2a61('0x31')],_0x2a61('0xa9'),_0x2a61('0x6a'),_0x2a61('0xa6')));_0x267612[_0x2a61('0x1e')](insertCmHopper(_0x368fb4[_0x2a61('0x31')],'campaigns_has_cm_lists',_0x2a61('0x65'),_0x2a61('0xa7'),_0x40417c));_0x267612[_0x2a61('0x1e')](insertCmHopperBlack(_0x368fb4[_0x2a61('0x31')],_0x2a61('0xa8'),_0x2a61('0x65'),_0x2a61('0xa7')));_0x267612[_0x2a61('0x1e')](insertCmHopperAdditionalPhones(_0x368fb4[_0x2a61('0x31')]));}_0x267612[_0x2a61('0x1e')]('DROP\x20TABLE\x20'+tmp_campaigns+';');_0x267612[_0x2a61('0x1e')]('DROP\x20TABLE\x20'+tmp_voice_queues+';');BPromise[_0x2a61('0x9e')](_0x267612,handleQuery)['then'](function(_0x44ae1e){stats['finish']=!![];stats[_0x2a61('0xaa')]=_0x368fb4[_0x2a61('0x98')]&&_0x368fb4[_0x2a61('0x98')]['length']?results[0x2][_0x2a61('0xaa')]:results[0x0]['affectedRows'];socket[_0x2a61('0x92')](_0x2a61('0x93')+_0x57ccc5,stats);fs[_0x2a61('0xab')](_0x305eb0);fs[_0x2a61('0xab')](_0x3ec5e6);process[_0x2a61('0x5d')](0x0);})[_0x2a61('0x61')](function(_0x5e7d4d){logger[_0x2a61('0x5c')](_0x5e7d4d['message']);process[_0x2a61('0x5d')](0x1);});});});})[_0x2a61('0x61')](function(_0x242c9b){logger[_0x2a61('0x5c')](_0x242c9b[_0x2a61('0x62')]);process[_0x2a61('0x5d')](0x1);});});});});}catch(_0x1bef3f){logger[_0x2a61('0x5c')]('complete',_0x1bef3f['message']);process[_0x2a61('0x5d')](0x1);}},'error':function(_0xdcb378,_0x525e3d,_0x25152a,_0x481736){throw new Error(_0x481736);}});});}function validate(){if(process['argv']&&process[_0x2a61('0xac')][_0x2a61('0x19')]<0x4){throw new Error(_0x2a61('0xad'));}var _0xc72c3a=path[_0x2a61('0x12')](config[_0x2a61('0x76')],_0x2a61('0x77'),process[_0x2a61('0xac')][0x2]);if(!fs[_0x2a61('0xae')](_0xc72c3a)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x2c1cea={};try{_0x2c1cea=JSON['parse'](process[_0x2a61('0xac')][0x3]);if(!_0x2c1cea[_0x2a61('0x74')]){throw new Error(_0x2a61('0xaf'));}if(!_0x2c1cea[_0x2a61('0x74')][_0x2a61('0x10')]){throw new Error(_0x2a61('0xb0'));}if(!_0x2c1cea[_0x2a61('0x74')]['firstName']){throw new Error(_0x2a61('0xb1'));}var _0x1c36ad=0x0;if(_0x2c1cea[_0x2a61('0x74')][_0x2a61('0x35')]){_0x1c36ad=0x1;}if(!_0x2c1cea[_0x2a61('0x31')]){throw new Error(_0x2a61('0xb2'));}}catch(_0x1979e7){throw new Error(_0x2a61('0xb3'));}var _0x47f42b=[];try{_0x47f42b=_[_0x2a61('0xb4')](JSON[_0x2a61('0xb5')](process[_0x2a61('0xac')][0x4]),'id');}catch(_0x12c06c){logger[_0x2a61('0x5a')](_0x2a61('0xb6'));}main(_0xc72c3a,_0x2c1cea,_0x47f42b,_0x1c36ad);}validate();process['on'](_0x2a61('0xb7'),handleStop);process['on'](_0x2a61('0xb8'),handleUncaughtException);
\ No newline at end of file
+var _0x00d9=['updated','create','PHONE','inserted','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.ListId','cm_contacts.updatedAt','cm_contacts.priority','insert','into','scheduledat','ListId','createdAt','updatedAt','priority','UserId','recallme','from','cm_contacts','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','cm_hopper','\x22always\x22','toString','cm_contacts.id','cm_hopper_black','fromQuery','ContactId','cm_contacts.ListId\x20=\x20','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','cm_contacts.createdAt','cm_contacts.UserId','\x22onlyIfOpen\x22','ListId\x20=\x20?','cm_hopper.id','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','fields','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','info','Received\x20SIGINT','message','exit','errors','code','query','spread','error','campaigns.id','campaigns.dialTimezone','campaigns_has_cm_lists','campaigns_has_cm_lists.CmListId=','sequelize','catch','voice_queues.dialTimezone','voice_queues','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','voice_queues_has_cm_lists.CmListId=','utcOffset','set','offset','main','stringify','send','start','binding','socket_timestamp','root','server/files/tmp','.csv','keys','includes','dialTimezone','header','ContactItemType','name','writeFileSync','parse','createReadStream','data','find','_description','hasOwnProperty','trim','isNaN','agent\x20not\x20exists','email\x20wrong\x20format','YYYY-MM-DD','isValid','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','replace','itemTypeId','description','emit','Abort\x20parser','abort','SystemError','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','campaigns_','voice_queues_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','each','dialTimezone,utcOffset','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()','voice_queues_has_cm_lists','VoiceQueueId','campaigns','campaigns_has_cm_blacklists','CampaignId','voice_queues_has_cm_blacklists','DROP\x20TABLE\x20','finish','affectedRows','contact:import:','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','moment','ioredis','../../../mysqldb','../../../config/environment','../../../config/environment/shared','../../../config/logger','import','redis','defaults','localhost','format','select','field','phone','join','.id\x20=\x20','where','\x20=\x20','CmContact','findAll','AdditionalPhones','length','push','all','then','split','isNil','filter','CmContactHasItem','findOne','update'];(function(_0x4a6cf8,_0x5534ef){var _0x22205e=function(_0x3f4d0d){while(--_0x3f4d0d){_0x4a6cf8['push'](_0x4a6cf8['shift']());}};_0x22205e(++_0x5534ef);}(_0x00d9,0x154));var _0x900d=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0x00d9[_0xaa0309];return _0x5de7ce;};'use strict';var fs=require('fs');var path=require(_0x900d('0x0'));var _=require(_0x900d('0x1'));var Papa=require(_0x900d('0x2'));var util=require(_0x900d('0x3'));var BPromise=require(_0x900d('0x4'));var moment=require(_0x900d('0x5'));var squel=require('squel');var Redis=require(_0x900d('0x6'));var db=require(_0x900d('0x7'))['db'];var config=require(_0x900d('0x8'));var shared=require(_0x900d('0x9'));var logger=require(_0x900d('0xa'))(_0x900d('0xb'));config[_0x900d('0xc')]=_[_0x900d('0xd')](config[_0x900d('0xc')],{'host':_0x900d('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x900d('0xc')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0x900d('0xf')]('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(_0x3c3844){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'](_0x3c3844);}function selectNotIn(_0x255eb1,_0x3f62c9,_0x6daad1,_0x102c94,_0x52112c){return squel[_0x900d('0x10')]()[_0x900d('0x11')](_0x900d('0x12'))['from'](_0x102c94)[_0x900d('0x13')](_0x3f62c9,null,_0x3f62c9+_0x900d('0x14')+_0x102c94+'.'+_0x6daad1)[_0x900d('0x15')](_0x102c94+'.'+_0x6daad1+_0x900d('0x16')+_0x255eb1+'.'+_0x6daad1)['where'](_0x3f62c9+'.dialCheckDuplicateType\x20IN\x20('+_0x52112c[_0x900d('0x13')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x297de5,_0x582fe8){promisesAdditionalPhones=[];return db[_0x900d('0x17')][_0x900d('0x18')]({'raw':!![],'attributes':['id',_0x900d('0x19')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})['then'](function(_0x3d1361){if(_0x3d1361!==null){var _0x5bf99f=[];for(var _0x9dad03=0x0;_0x9dad03<_0x3d1361[_0x900d('0x1a')];_0x9dad03++){var _0x5d1c9f=_0x3d1361[_0x9dad03];_0x5bf99f[_0x900d('0x1b')](insertAdditionalPhones(_0x5d1c9f));}}Promise[_0x900d('0x1c')](_0x5bf99f)[_0x900d('0x1d')](function(){_0x297de5({'val':0x1});});});});}function insertAdditionalPhones(_0x2be474){return new Promise(function(_0x444df8,_0x1602c9){var _0x492be3=_0x2be474[_0x900d('0x19')];var _0x5c9631=_0x492be3[_0x900d('0x1e')](';');var _0x3637d9=[];orderBy=0x0;for(var _0x482dc1=0x0;_0x482dc1<_0x5c9631[_0x900d('0x1a')];_0x482dc1++){_0x3637d9[_0x900d('0x1b')](splitAdditionalPhone(_0x2be474['id'],_0x5c9631[_0x482dc1]));}Promise['all'](_0x3637d9)['then'](function(){_0x444df8({'val':_0x5c9631[_0x900d('0x1a')]});});});}function splitAdditionalPhone(_0x4694f3,_0x445d3c){return new Promise(function(_0x44d2d0,_0x4e6343){var _0xbb3834=_0x445d3c['split'](':');var _0xa8de91=_0xbb3834[0x0];var _0x378bcb=_0xbb3834[0x1];if(!_[_0x900d('0x1f')](_0x378bcb)){var _0x432fdb=_0x378bcb[_0x900d('0x1e')]('|');var _0xf892c1=[];for(var _0x539d0e=0x0;_0x539d0e<_0x432fdb[_0x900d('0x1a')];_0x539d0e++){if(_0x432fdb[_0x539d0e]!==''){var _0x2d40e7=_[_0x900d('0x20')](promisesAdditionalPhones,{'contactId':_0x4694f3,'phone':_0x432fdb[_0x539d0e]});if(_0x2d40e7[_0x900d('0x1a')]==0x0){orderBy++;promisesAdditionalPhones[_0x900d('0x1b')]({'contactId':_0x4694f3,'contactTypeId':_0xa8de91,'phone':_0x432fdb[_0x539d0e],'orderBy':orderBy});}}}_0x44d2d0({'ok':0x1});}else _0x44d2d0({'res':0x0});});}function createAdditionalPhone(_0x1b6d40,_0x3f3e28,_0x4a6a0d,_0x5a9168){var _0x2b1d07='';var _0x260c1d='';var _0x1fec9f=_0x4a6a0d[_0x900d('0x1e')]('§');_0x2b1d07=_0x1fec9f[0x0];if(_0x1fec9f[_0x900d('0x1a')]==0x2)_0x260c1d=_0x1fec9f[0x1];return new Promise(function(_0x144370,_0x395602){return db[_0x900d('0x21')][_0x900d('0x22')]({'where':{'CmContactId':_0x1b6d40,'item':_0x2b1d07}})[_0x900d('0x1d')](function(_0x4bc32c){if(_0x4bc32c){return db[_0x900d('0x21')][_0x900d('0x23')]({'ItemTypeId':_0x3f3e28,'description':_0x260c1d,'OrderBy':_0x5a9168},{'where':{'CmContactId':_0x1b6d40,'item':_0x2b1d07}})[_0x900d('0x1d')](function(_0x539743){_0x144370({'res':_0x900d('0x24')});});}else{return db[_0x900d('0x21')][_0x900d('0x25')]({'CmContactId':_0x1b6d40,'item':_0x2b1d07,'description':_0x260c1d,'ItemTypeId':_0x3f3e28,'OrderBy':_0x5a9168,'ItemClass':_0x900d('0x26')})[_0x900d('0x1d')](function(_0x1ccd2e){_0x144370({'res':_0x900d('0x27')});});}});});}function insertCmHopper(_0x33b75a,_0x49c8a8,_0x3d776f,_0x3a0bd0,_0xb8b834){var _0x39658b=[_0x900d('0x28'),_0x900d('0x29'),'cm_contacts.id',_0x900d('0x2a'),_0x49c8a8+'.'+_0x3a0bd0,'cm_contacts.createdAt',_0x900d('0x2b'),_0x900d('0x2c'),'cm_contacts.UserId','\x22'+_0xb8b834+'\x22'];return squel[_0x900d('0x2d')]()[_0x900d('0x2e')]('cm_hopper')['fromQuery']([_0x900d('0x12'),_0x900d('0x2f'),'ContactId',_0x900d('0x30'),_0x3a0bd0,_0x900d('0x31'),_0x900d('0x32'),_0x900d('0x33'),_0x900d('0x34'),_0x900d('0x35')],squel['select']()['fields'](_0x39658b)[_0x900d('0x36')](_0x49c8a8)[_0x900d('0x13')](_0x900d('0x37'),null,'cm_contacts.ListId\x20=\x20'+_0x49c8a8+_0x900d('0x38'))[_0x900d('0x13')](_0x3d776f,null,_0x3d776f+_0x900d('0x14')+_0x49c8a8+'.'+_0x3a0bd0)['where'](_0x49c8a8+_0x900d('0x39'),_0x33b75a)[_0x900d('0x15')](_0x900d('0x3a'),NOW)[_0x900d('0x15')](_0x900d('0x3b'),selectNotIn(_0x49c8a8,_0x3d776f,_0x3a0bd0,_0x900d('0x3c'),[_0x900d('0x3d'),'\x22onlyIfOpen\x22']))['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x49c8a8,_0x3d776f,_0x3a0bd0,_0x900d('0x3c'),['\x22always\x22'])))[_0x900d('0x3e')]();}function insertCmHopperBlack(_0x38ac7a,_0x2f4c9b,_0x28183e,_0x2ea268){var _0x201a26=['cm_contacts.phone',_0x900d('0x3f'),_0x900d('0x2a'),_0x2f4c9b+'.'+_0x2ea268,'cm_contacts.createdAt',_0x900d('0x2b')];return squel[_0x900d('0x2d')]()[_0x900d('0x2e')](_0x900d('0x40'))[_0x900d('0x41')]([_0x900d('0x12'),_0x900d('0x42'),_0x900d('0x30'),_0x2ea268,_0x900d('0x31'),_0x900d('0x32')],squel['select']()['fields'](_0x201a26)[_0x900d('0x36')](_0x2f4c9b)[_0x900d('0x13')](_0x900d('0x37'),null,_0x900d('0x43')+_0x2f4c9b+_0x900d('0x38'))[_0x900d('0x13')](_0x28183e,null,_0x28183e+_0x900d('0x14')+_0x2f4c9b+'.'+_0x2ea268)[_0x900d('0x15')](_0x2f4c9b+_0x900d('0x39'),_0x38ac7a)[_0x900d('0x15')](_0x900d('0x3a'),NOW)[_0x900d('0x15')](_0x900d('0x3b'),squel[_0x900d('0x10')]()[_0x900d('0x11')](_0x900d('0x12'))[_0x900d('0x36')](_0x900d('0x40'))[_0x900d('0x15')]('ListId\x20=\x20?',_0x38ac7a)[_0x900d('0x15')](_0x2ea268+_0x900d('0x16')+_0x2f4c9b+'.'+_0x2ea268)))[_0x900d('0x3e')]();}function insertTzCmHopper(_0x214cf0,_0x487a27,_0x272c09,_0x13acd9,_0x5dcaa1,_0x299bef){var _0x4e0557=['cm_contacts.phone',_0x900d('0x44')+_0x299bef+_0x900d('0x45'),_0x900d('0x3f'),'cm_contacts.ListId',_0x487a27+'.'+_0x13acd9,_0x900d('0x46'),_0x900d('0x2b'),_0x900d('0x2c'),_0x900d('0x47'),'\x22'+_0x5dcaa1+'\x22'];var _0x156500=squel[_0x900d('0x2d')]()[_0x900d('0x2e')](_0x900d('0x3c'))['fromQuery']([_0x900d('0x12'),_0x900d('0x2f'),_0x900d('0x42'),'ListId',_0x13acd9,'createdAt',_0x900d('0x32'),'priority',_0x900d('0x34'),_0x900d('0x35')],squel[_0x900d('0x10')]()['fields'](_0x4e0557)[_0x900d('0x36')](_0x487a27)['join'](_0x900d('0x37'),null,_0x900d('0x43')+_0x487a27+_0x900d('0x38'))[_0x900d('0x13')](_0x272c09,null,_0x272c09+'.id\x20=\x20'+_0x487a27+'.'+_0x13acd9)[_0x900d('0x13')](_0x299bef,null,_0x299bef+_0x900d('0x14')+_0x487a27+'.'+_0x13acd9)[_0x900d('0x15')](_0x487a27+_0x900d('0x39'),_0x214cf0)['where'](_0x900d('0x3a'),NOW)[_0x900d('0x15')](_0x900d('0x3b'),selectNotIn(_0x487a27,_0x272c09,_0x13acd9,_0x900d('0x3c'),['\x22always\x22',_0x900d('0x48')]))['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x487a27,_0x272c09,_0x13acd9,'cm_hopper',[_0x900d('0x3d')])))['toString']();return _0x156500;}function insertTzCmHopperBlack(_0x50494e,_0x4c2c5e,_0xed0765,_0x307194){var _0x48ce7c=[_0x900d('0x28'),'cm_contacts.id',_0x900d('0x2a'),_0x4c2c5e+'.'+_0x307194,_0x900d('0x46'),'cm_contacts.updatedAt'];return squel[_0x900d('0x2d')]()[_0x900d('0x2e')](_0x900d('0x40'))[_0x900d('0x41')]([_0x900d('0x12'),_0x900d('0x42'),_0x900d('0x30'),_0x307194,_0x900d('0x31'),_0x900d('0x32')],squel[_0x900d('0x10')]()['fields'](_0x48ce7c)[_0x900d('0x36')](_0x4c2c5e)[_0x900d('0x13')](_0x900d('0x37'),null,_0x900d('0x43')+_0x4c2c5e+'.CmListId')[_0x900d('0x13')](_0xed0765,null,_0xed0765+_0x900d('0x14')+_0x4c2c5e+'.'+_0x307194)[_0x900d('0x15')](_0x4c2c5e+'.CmListId\x20=\x20?',_0x50494e)[_0x900d('0x15')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x900d('0x15')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x900d('0x10')]()['field']('phone')[_0x900d('0x36')](_0x900d('0x40'))['where'](_0x900d('0x49'),_0x50494e)['where'](_0x307194+_0x900d('0x16')+_0x4c2c5e+'.'+_0x307194)))[_0x900d('0x3e')]();}function insertCmHopperAdditionalPhones(_0x584349){var _0xb622e2=[_0x900d('0x4a'),_0x900d('0x4b'),_0x900d('0x4c'),_0x900d('0x4d'),_0x900d('0x4e')];return squel[_0x900d('0x2d')]()['into'](_0x900d('0x4f'))['fromQuery']([_0x900d('0x50'),_0x900d('0x12'),_0x900d('0x51'),_0x900d('0x31'),_0x900d('0x32')],squel['select']()[_0x900d('0x52')](_0xb622e2)[_0x900d('0x36')](_0x900d('0x3c'))[_0x900d('0x13')](_0x900d('0x37'),null,_0x900d('0x53'))[_0x900d('0x13')]('cm_contact_has_items',null,_0x900d('0x54'))[_0x900d('0x15')](_0x900d('0x55'),_0x584349)['where'](_0x900d('0x3a'),NOW))['toString']();}function insertCmContact(_0x491569,_0x2f2373,_0x2a1bc4,_0x9d20c1){var _0x52d91b=_[_0x900d('0x56')](_['keys'](_0x9d20c1),[_0x900d('0x30'),_0x900d('0x57'),_0x900d('0x31'),_0x900d('0x32')]);return squel[_0x900d('0x2d')]()[_0x900d('0x2e')](_0x900d('0x37'))[_0x900d('0x41')](_0x52d91b,squel[_0x900d('0x10')]()[_0x900d('0x52')](_0x52d91b)[_0x900d('0x36')](_0x2f2373)[_0x900d('0x15')]('('+_0x2a1bc4[_0x900d('0x13')](',')+_0x900d('0x58'),squel[_0x900d('0x10')]()[_0x900d('0x52')](_0x2a1bc4)['from'](_0x900d('0x37'))[_0x900d('0x15')](_0x900d('0x49'),_0x491569)[_0x900d('0x15')](_0x900d('0x59')))[_0x900d('0x15')](_0x900d('0x5a'),squel[_0x900d('0x10')]()[_0x900d('0x11')](_0x900d('0x5b'),_0x900d('0x5c'))['from'](_0x2f2373)['group'](_0x2a1bc4[_0x900d('0x13')](','))))[_0x900d('0x3e')]();}function handleStop(){logger[_0x900d('0x5d')](_0x900d('0x5e'));stopped=!![];}function handleUncaughtException(_0x5a1324){logger['error'](_0x5a1324[_0x900d('0x5f')]);process[_0x900d('0x60')](0x1);}function handleError(_0x49789f,_0x5ad6a1){stats[_0x900d('0x61')][_0x900d('0x1b')]({'name':_0x5ad6a1[_0x900d('0x62')],'message':_0x5ad6a1[_0x900d('0x5f')],'row':_0x49789f});}function handleQuery(_0x57398f){logger['info'](_0x57398f);return db['sequelize'][_0x900d('0x63')](_0x57398f)[_0x900d('0x64')](function(_0x370c42){results[_0x900d('0x1b')](_0x370c42);})['catch'](function(_0x4a0e5e){logger[_0x900d('0x65')](_0x4a0e5e[_0x900d('0x5f')]);});}function updateTzCampaigns(_0x11d41c){return new Promise(function(_0x5dcc06,_0x52c9e5){var _0xfb7503=squel['select']()['fields']([_0x900d('0x66'),_0x900d('0x67')])[_0x900d('0x36')]('campaigns')[_0x900d('0x13')](_0x900d('0x68'),null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')[_0x900d('0x15')](_0x900d('0x69')+_0x11d41c);db[_0x900d('0x6a')][_0x900d('0x63')](_0xfb7503[_0x900d('0x3e')]())['spread'](function(_0x1c5e45){var _0x1ce90e=[];for(var _0x148f60=0x0;_0x148f60<_0x1c5e45[_0x900d('0x1a')];_0x148f60++){_0x1ce90e['push'](getTimezoneData(_0x1c5e45[_0x148f60],tmp_campaigns));}BPromise[_0x900d('0x1c')](_0x1ce90e)[_0x900d('0x1d')](function(){_0x5dcc06({'val':0x1});});})[_0x900d('0x6b')](function(_0x44f9e6){logger[_0x900d('0x65')](_0x44f9e6[_0x900d('0x5f')]);_0x5dcc06({'val':0x0});});});}function updateTzVoiceQueues(_0x5e18e3){return new Promise(function(_0xb9262a,_0x42ffdf){var _0x5535b7=squel[_0x900d('0x10')]()['fields'](['voice_queues.id',_0x900d('0x6c')])[_0x900d('0x36')](_0x900d('0x6d'))[_0x900d('0x13')]('voice_queues_has_cm_lists',null,_0x900d('0x6e'))[_0x900d('0x15')](_0x900d('0x6f')+_0x5e18e3);db[_0x900d('0x6a')][_0x900d('0x63')](_0x5535b7[_0x900d('0x3e')]())[_0x900d('0x64')](function(_0x3ed88c){var _0x4c4009=[];for(var _0x110501=0x0;_0x110501<_0x3ed88c[_0x900d('0x1a')];_0x110501++){_0x4c4009['push'](getTimezoneData(_0x3ed88c[_0x110501],tmp_voice_queues));}BPromise[_0x900d('0x1c')](_0x4c4009)[_0x900d('0x1d')](function(){_0xb9262a({'val':0x1});});})[_0x900d('0x6b')](function(_0x4c40c9){logger[_0x900d('0x65')](_0x4c40c9[_0x900d('0x5f')]);_0xb9262a({'val':0x0});});});}function getTimezoneData(_0x5466e3,_0x549b0c){return new Promise(function(_0x44d8f4,_0x4acfc7){var _0x37021a=shared['timezones'];var _0x32a9a2=_0x37021a[_0x5466e3['dialTimezone']];if(_[_0x900d('0x1f')](_0x32a9a2)){_0x44d8f4({'ret':0x1});}else{var _0x195c99=_0x32a9a2[_0x900d('0x70')];var _0x56dbda=squel[_0x900d('0x2d')]()[_0x900d('0x2e')](_0x549b0c)['set']('id',_0x5466e3['id'])[_0x900d('0x71')](_0x900d('0x72'),_0x195c99)[_0x900d('0x71')]('dialTimezone',_0x5466e3['dialTimezone'])[_0x900d('0x3e')]();return db[_0x900d('0x6a')][_0x900d('0x63')](_0x56dbda)['spread'](function(_0x350c24){_0x44d8f4({'ret':0x1});})['catch'](function(_0x22b410){logger[_0x900d('0x65')](_0x22b410[_0x900d('0x5f')]);_0x4acfc7({'ret':0x1});});}});}function handleTZQuery(_0x4a5b9e){logger['info'](_0x4a5b9e);return db[_0x900d('0x6a')][_0x900d('0x63')](_0x4a5b9e)[_0x900d('0x64')](function(_0x442db0){})[_0x900d('0x6b')](function(_0x2e431d){logger[_0x900d('0x65')](_0x2e431d['message']);});}function main(_0x147d62,_0x45ea09,_0x16fc49,_0x2e3ffc){logger[_0x900d('0x5d')](_0x900d('0x73'),_0x147d62,JSON[_0x900d('0x74')](_0x45ea09));process[_0x900d('0x75')](_0x900d('0x76'));var _0x295d90=_0x45ea09[_0x900d('0x77')];var _0x208d9e=_['clone'](_0x295d90);var _0x4959a7=_0x45ea09[_0x900d('0x78')];var _0x1ff149=path[_0x900d('0x13')](config[_0x900d('0x79')],_0x900d('0x7a'),_0x4959a7+_0x900d('0x7b'));hasTZ=_[_0x900d('0x7c')](_0x295d90)[_0x900d('0x7d')](_0x900d('0x7e'));var _0x965378=_[_0x900d('0x7c')](_0x295d90)[_0x900d('0x13')]();logger[_0x900d('0x5d')](_0x900d('0x7f'),_0x965378);db[_0x900d('0x80')][_0x900d('0x18')]({'raw':!![],'attributes':['id',_0x900d('0x81')]})[_0x900d('0x1d')](function(_0x4a2c85){for(var _0x5b176d=0x0;_0x5b176d<_0x4a2c85['length'];_0x5b176d++){if(_0x4a2c85[_0x5b176d][_0x900d('0x81')]in _0x295d90){contactItemTypes[_0x900d('0x1b')](_0x4a2c85[_0x5b176d]);delete _0x208d9e[_0x4a2c85[_0x5b176d][_0x900d('0x81')]];hasAdditionalPhones=!![];}for(var _0x5bf0c0 in _0x295d90){if(_0x4a2c85[_0x5b176d][_0x900d('0x81')]+'_description'===_0x5bf0c0){phoneDescriptions['push']({'itemTypeId':_0x4a2c85[_0x5b176d]['id'],'description':_0x5bf0c0});delete _0x208d9e[_0x5bf0c0];}}}if(hasAdditionalPhones)_0x208d9e[_0x900d('0x19')]='';var _0xcaa410=_[_0x900d('0x7c')](_0x208d9e)[_0x900d('0x13')]();logger[_0x900d('0x5d')](_0x900d('0x7f'),_0xcaa410);fs[_0x900d('0x82')](_0x1ff149,_0xcaa410+'\x0a');Papa[_0x900d('0x83')](fs[_0x900d('0x84')](_0x147d62),{'header':!![],'skipEmptyLines':!![],'step':function(_0x3594e5,_0x17b436){try{for(var _0x3813e0=0x0,_0x59c49c=[];_0x3813e0<_0x3594e5[_0x900d('0x85')]['length'];_0x3813e0++){stats['rows']+=0x1;if(_0x3594e5[_0x900d('0x61')][_0x3813e0]){handleError(_0x3594e5[_0x900d('0x85')][_0x3813e0],_0x3594e5[_0x900d('0x61')][_0x3813e0]);}else{var _0x420569=[];var _0x9ae68d=[];var _0x45d574={};for(var _0x3ba536 in _0x295d90){let _0x4baca1=contactItemTypes[_0x900d('0x86')](_0xaf57fc=>_0xaf57fc[_0x900d('0x81')]===_0x3ba536);let _0x4c923f=contactItemTypes[_0x900d('0x86')](_0x3b9718=>_0x3b9718[_0x900d('0x81')]+_0x900d('0x87')===_0x3ba536);if(_[_0x900d('0x1f')](_0x4baca1)&&_['isNil'](_0x4c923f)){if(_0x295d90[_0x900d('0x88')](_0x3ba536)){if(_0x3594e5['data'][_0x3813e0][_0x295d90[_0x3ba536]]){var _0x1a921a=_[_0x900d('0x89')](_0x3594e5['data'][_0x3813e0][_0x295d90[_0x3ba536]]['replace'](/"/g,'\x27'));switch(_0x3ba536){case _0x900d('0x2f'):var _0xdbf115=moment(_0x1a921a,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0xdbf115['isValid']()){_0x59c49c[_0x900d('0x1b')]('\x22'+_0x1a921a+'\x22');}else{_0x420569[_0x900d('0x1b')]('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case'priority':var _0x2fd982=parseInt(_0x1a921a);_0x1a921a=_[_0x900d('0x8a')](_0x2fd982)||_0x2fd982<0x0||_0x2fd982>0x4?_0x2e3ffc?0x3:0x2:_0x2fd982;_0x59c49c['push']('\x22'+_0x1a921a+'\x22');break;case _0x900d('0x34'):var _0x3511f3=parseInt(_0x1a921a);if(_['isNumber'](_0x3511f3)&&_[_0x900d('0x7d')](_0x16fc49,_0x3511f3)){_0x59c49c[_0x900d('0x1b')]('\x22'+_0x3511f3+'\x22');}else{_0x420569['push'](_0x900d('0x8b'));}break;case'email':if(isEmail(_0x1a921a)){_0x59c49c['push']('\x22'+_0x1a921a+'\x22');}else{_0x420569[_0x900d('0x1b')](_0x900d('0x8c'));}break;case'dateOfBirth':var _0x5c0f09=moment(_0x1a921a,_0x900d('0x8d'),!![]);if(_0x5c0f09[_0x900d('0x8e')]()){_0x59c49c['push']('\x22'+_0x1a921a+'\x22');}else{_0x420569[_0x900d('0x1b')](_0x900d('0x8f'));}break;case'dialTimezone':var _0x2d94cc=shared['timezones'];var _0x4d651e=_0x2d94cc[_0x1a921a];if(!_[_0x900d('0x1f')](_0x4d651e)){var _0x229cb4=_0x4d651e['utcOffset'];_0x59c49c['push']('\x22'+_0x1a921a+'\x22');_0x59c49c['push']('\x22'+_0x229cb4+'\x22');}break;default:_0x59c49c[_0x900d('0x1b')]('\x22'+_0x1a921a+'\x22');}}else{switch(_0x3ba536){case _0x900d('0x90'):case _0x900d('0x12'):_0x420569[_0x900d('0x1b')](_0x3ba536+_0x900d('0x91'));break;default:_0x59c49c[_0x900d('0x1b')]('\x22\x22');}}}}else{var _0x34cb04='';if(!_[_0x900d('0x1f')](_0x4baca1)){if(!_0x45d574['hasOwnProperty'](_0x4baca1['id'])){if(!_[_0x900d('0x1f')](_0x3594e5[_0x900d('0x85')][_0x3813e0][_0x295d90[_0x3ba536]])){var _0x1a921a=_[_0x900d('0x89')](_0x3594e5[_0x900d('0x85')][_0x3813e0][_0x295d90[_0x3ba536]][_0x900d('0x92')](/"/g,'\x27'));var _0x1125fb=phoneDescriptions[_0x900d('0x86')](_0x2c860c=>_0x2c860c[_0x900d('0x93')]===_0x4baca1['id']);if(!_['isNil'](_0x1125fb)){var _0x19f24c=_[_0x900d('0x89')](_0x3594e5[_0x900d('0x85')][_0x3813e0][_0x295d90[_0x1125fb[_0x900d('0x94')]]][_0x900d('0x92')](/"/g,'\x27'));if(!_[_0x900d('0x1f')](_0x19f24c))_0x1a921a=_0x1a921a+'§'+_0x19f24c;}if(_0x34cb04=='')_0x34cb04=_0x1a921a;else _0x34cb04+='|'+_0x1a921a;}_0x9ae68d[_0x900d('0x1b')](_0x4baca1['id']+':'+_0x34cb04);_0x45d574[_0x4baca1['id']]=0x1;}}}}if(hasAdditionalPhones){_0x59c49c[_0x900d('0x1b')]('\x22'+_0x9ae68d['join'](';')+'\x22');}if(_0x420569[_0x900d('0x1a')]){handleError(_0x3594e5[_0x900d('0x85')][_0x3813e0],{'code':'SystemRow','message':_0x420569[_0x900d('0x13')]()});}else{fs['appendFileSync'](_0x1ff149,_0x59c49c[_0x900d('0x13')]()+'\x0a');}_0x59c49c=[];}if(!(stats['rows']%0xc8)){socket[_0x900d('0x95')]('contact:import:'+_0x4959a7,stats);stats[_0x900d('0x61')]=[];}}if(stopped){logger['info'](_0x900d('0x96'));_0x17b436[_0x900d('0x97')]();}}catch(_0x564a41){handleError(_0x3594e5[_0x900d('0x85')][_0x3813e0],{'code':_0x900d('0x98'),'message':_0x564a41[_0x900d('0x5f')]});logger['error'](_0x900d('0x99'),_0x564a41[_0x900d('0x5f')]);}},'complete':function(){try{var _0x42e15c=[];var _0x2d3f0b=[];var _0x2c6f00='cm_contacts';if(_0x45ea09[_0x900d('0x9a')]&&_0x45ea09[_0x900d('0x9a')][_0x900d('0x1a')]){_0x2c6f00=_0x900d('0x9b')+_0x4959a7;_0x42e15c[_0x900d('0x1b')](_0x900d('0x9c')+_0x2c6f00+_0x900d('0x9d'));}tmp_campaigns=_0x900d('0x9e')+_0x4959a7;tmp_voice_queues=_0x900d('0x9f')+_0x4959a7;_0x2d3f0b[_0x900d('0x1b')](_0x900d('0x9c')+tmp_campaigns+_0x900d('0xa0'));_0x2d3f0b['push'](_0x900d('0x9c')+tmp_voice_queues+_0x900d('0xa0'));BPromise[_0x900d('0xa1')](_0x2d3f0b,handleTZQuery)['then'](function(_0x1bbf36){updateTzCampaigns(_0x45ea09[_0x900d('0x30')])[_0x900d('0x1d')](function(_0x4da4c2){updateTzVoiceQueues(_0x45ea09['ListId'])[_0x900d('0x1d')](function(_0x2125b7){if(hasTZ)_0xcaa410=_0xcaa410[_0x900d('0x92')]('dialTimezone',_0x900d('0xa2'));var _0x196665=util[_0x900d('0xf')](_0x900d('0xa3'),_0x1ff149,_0x2c6f00,_0xcaa410,_0x45ea09[_0x900d('0x30')],_0x45ea09[_0x900d('0x57')]||null,NOW,NOW);if(_[_0x900d('0x1f')](_0x295d90[_0x900d('0x2f')])){_0x196665+=_0x900d('0xa4');}_0x42e15c[_0x900d('0x1b')](_0x196665);if(_0x45ea09[_0x900d('0x9a')]&&_0x45ea09[_0x900d('0x9a')][_0x900d('0x1a')]){_0x42e15c[_0x900d('0x1b')](insertCmContact(_0x45ea09['ListId'],_0x2c6f00,_0x45ea09[_0x900d('0x9a')],_0x295d90));_0x42e15c[_0x900d('0x1b')]('DROP\x20TABLE\x20'+_0x2c6f00+';');}BPromise[_0x900d('0xa1')](_0x42e15c,handleQuery)[_0x900d('0x1d')](function(_0x1c37a5){BPromise[_0x900d('0x1c')]([handleAdditionalPhones()])[_0x900d('0x1d')](function(){_0x42e15c=[];for(var _0x4dfca5=0x0;_0x4dfca5<promisesAdditionalPhones[_0x900d('0x1a')];_0x4dfca5++){if(promisesAdditionalPhones[_0x4dfca5][_0x900d('0x12')]!='§'){_0x42e15c[_0x900d('0x1b')](createAdditionalPhone(promisesAdditionalPhones[_0x4dfca5]['contactId'],promisesAdditionalPhones[_0x4dfca5]['contactTypeId'],promisesAdditionalPhones[_0x4dfca5][_0x900d('0x12')],promisesAdditionalPhones[_0x4dfca5]['orderBy']));}}BPromise[_0x900d('0x1c')](_0x42e15c)[_0x900d('0x1d')](function(){_0x42e15c=[];if(hasTZ){_0x42e15c[_0x900d('0x1b')](insertTzCmHopper(_0x45ea09[_0x900d('0x30')],_0x900d('0xa5'),_0x900d('0x6d'),'VoiceQueueId',_0x2e3ffc,tmp_voice_queues));_0x42e15c[_0x900d('0x1b')](insertTzCmHopperBlack(_0x45ea09['ListId'],'voice_queues_has_cm_blacklists',_0x900d('0x6d'),_0x900d('0xa6')));_0x42e15c['push'](insertTzCmHopper(_0x45ea09[_0x900d('0x30')],_0x900d('0x68'),_0x900d('0xa7'),'CampaignId',_0x2e3ffc,tmp_campaigns));_0x42e15c[_0x900d('0x1b')](insertTzCmHopperBlack(_0x45ea09[_0x900d('0x30')],_0x900d('0xa8'),_0x900d('0xa7'),_0x900d('0xa9')));_0x42e15c[_0x900d('0x1b')](insertCmHopperAdditionalPhones(_0x45ea09[_0x900d('0x30')]));}else{_0x42e15c['push'](insertCmHopper(_0x45ea09[_0x900d('0x30')],_0x900d('0xa5'),_0x900d('0x6d'),_0x900d('0xa6'),_0x2e3ffc));_0x42e15c['push'](insertCmHopperBlack(_0x45ea09['ListId'],_0x900d('0xaa'),_0x900d('0x6d'),'VoiceQueueId'));_0x42e15c['push'](insertCmHopper(_0x45ea09[_0x900d('0x30')],'campaigns_has_cm_lists','campaigns',_0x900d('0xa9'),_0x2e3ffc));_0x42e15c[_0x900d('0x1b')](insertCmHopperBlack(_0x45ea09['ListId'],'campaigns_has_cm_blacklists',_0x900d('0xa7'),_0x900d('0xa9')));_0x42e15c[_0x900d('0x1b')](insertCmHopperAdditionalPhones(_0x45ea09[_0x900d('0x30')]));}_0x42e15c[_0x900d('0x1b')](_0x900d('0xab')+tmp_campaigns+';');_0x42e15c['push'](_0x900d('0xab')+tmp_voice_queues+';');BPromise['each'](_0x42e15c,handleQuery)[_0x900d('0x1d')](function(_0x2fc353){stats[_0x900d('0xac')]=!![];stats['affectedRows']=_0x45ea09[_0x900d('0x9a')]&&_0x45ea09[_0x900d('0x9a')]['length']?results[0x2][_0x900d('0xad')]:results[0x0][_0x900d('0xad')];socket[_0x900d('0x95')](_0x900d('0xae')+_0x4959a7,stats);fs[_0x900d('0xaf')](_0x147d62);fs[_0x900d('0xaf')](_0x1ff149);process['exit'](0x0);})[_0x900d('0x6b')](function(_0x3fa081){logger[_0x900d('0x65')](_0x3fa081[_0x900d('0x5f')]);process[_0x900d('0x60')](0x1);});});});})[_0x900d('0x6b')](function(_0x4521d7){logger[_0x900d('0x65')](_0x4521d7['message']);process[_0x900d('0x60')](0x1);});});});});}catch(_0x47a023){logger[_0x900d('0x65')](_0x900d('0xb0'),_0x47a023[_0x900d('0x5f')]);process[_0x900d('0x60')](0x1);}},'error':function(_0x2287d0,_0x209f60,_0x167233,_0x466ecc){throw new Error(_0x466ecc);}});});}function validate(){if(process[_0x900d('0xb1')]&&process[_0x900d('0xb1')][_0x900d('0x1a')]<0x4){throw new Error(_0x900d('0xb2'));}var _0x352888=path['join'](config['root'],_0x900d('0x7a'),process[_0x900d('0xb1')][0x2]);if(!fs[_0x900d('0xb3')](_0x352888)){throw new Error(_0x900d('0xb4'));}var _0x514b74={};try{_0x514b74=JSON[_0x900d('0x83')](process['argv'][0x3]);if(!_0x514b74['binding']){throw new Error(_0x900d('0xb5'));}if(!_0x514b74['binding']['phone']){throw new Error(_0x900d('0xb6'));}if(!_0x514b74[_0x900d('0x77')][_0x900d('0x90')]){throw new Error('firstName\x20is\x20mandatory');}var _0x2ac7c4=0x0;if(_0x514b74[_0x900d('0x77')]['UserId']){_0x2ac7c4=0x1;}if(!_0x514b74[_0x900d('0x30')]){throw new Error(_0x900d('0xb7'));}}catch(_0x19e585){throw new Error(_0x900d('0xb8'));}var _0x5bef0b=[];try{_0x5bef0b=_['map'](JSON[_0x900d('0x83')](process[_0x900d('0xb1')][0x4]),'id');}catch(_0x537574){logger[_0x900d('0x5d')](_0x900d('0xb9'));}main(_0x352888,_0x514b74,_0x5bef0b,_0x2ac7c4);}validate();process['on'](_0x900d('0xba'),handleStop);process['on'](_0x900d('0xbb'),handleUncaughtException);
\ No newline at end of file
index 9d51eb2..7873329 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2ed=['.id\x20=\x20','where','\x20=\x20','query','select\x20*\x20from\x20','spread','length','isNil','push','then','AdditionalPhones','split','filter','CmContactHasItem','findOne','PHONE','inserted','CmContact','update','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','scheduledat','ListId','createdAt','updatedAt','recallme','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22onlyIfOpen\x22','\x22always\x22','cm_contacts.phone','cm_contacts.id','cm_contacts.updatedAt','cm_hopper_black','ContactId','fields','cm_contacts','field','\x20=\x20?','toString','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','CmHopperId','OrderBy','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId','ListId\x20=\x20?','id\x20IN\x20?','MIN(id)','min_id','group','info','Received\x20SIGINT','error','message','exit','errors','sequelize','catch','main','stringify','clone','socket_timestamp','server/files/tmp','.csv','body','findAll','name','_description','header','parse','createReadStream','data','rows','find','hasOwnProperty','replace','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','priority','UserId','isNumber','includes','agent\x20not\x20exists','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','isValid','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','trim','itemTypeId','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','step','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','each','all','contact','contactId','orderBy','finish','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','binding','body\x20id\x20mandatory','map','No\x20agent\x20available','uncaughtException','path','lodash','util','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','redis','defaults','format','cm_contacts_temp_','test','select','phone','from','join'];(function(_0x4e9628,_0x250573){var _0x27bc8c=function(_0xb3b7ae){while(--_0xb3b7ae){_0x4e9628['push'](_0x4e9628['shift']());}};_0x27bc8c(++_0x250573);}(_0xb2ed,0x86));var _0xdb2e=function(_0x12e073,_0x4d43db){_0x12e073=_0x12e073-0x0;var _0x267748=_0xb2ed[_0x12e073];return _0x267748;};'use strict';var fs=require('fs');var path=require(_0xdb2e('0x0'));var _=require(_0xdb2e('0x1'));var Papa=require('papaparse');var util=require(_0xdb2e('0x2'));var BPromise=require(_0xdb2e('0x3'));var moment=require(_0xdb2e('0x4'));var squel=require(_0xdb2e('0x5'));var Redis=require(_0xdb2e('0x6'));var db=require(_0xdb2e('0x7'))['db'];var config=require(_0xdb2e('0x8'));var logger=require(_0xdb2e('0x9'))('import');config[_0xdb2e('0xa')]=_[_0xdb2e('0xb')](config[_0xdb2e('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdb2e('0xa')]));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()[_0xdb2e('0xc')]('YYYY-MM-DD\x20HH:mm:ss');var tempTableName=_0xdb2e('0xd')+moment()[_0xdb2e('0xc')]('YYYYMMDDHHmmss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x5aecdf){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))*$/[_0xdb2e('0xe')](_0x5aecdf);}function selectNotIn(_0x3ee478,_0x57ec39,_0x58412a,_0x50cd06,_0x12254b){return squel[_0xdb2e('0xf')]()['field'](_0xdb2e('0x10'))[_0xdb2e('0x11')](_0x50cd06)[_0xdb2e('0x12')](_0x57ec39,null,_0x57ec39+_0xdb2e('0x13')+_0x50cd06+'.'+_0x58412a)[_0xdb2e('0x14')](_0x50cd06+'.'+_0x58412a+_0xdb2e('0x15')+_0x3ee478+'.'+_0x58412a)['where'](_0x57ec39+'.dialCheckDuplicateType\x20IN\x20('+_0x12254b[_0xdb2e('0x12')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0xfab440,_0x3180a8){promisesAdditionalPhones=[];promisesContact=[];return db['sequelize'][_0xdb2e('0x16')](_0xdb2e('0x17')+tempTableName)[_0xdb2e('0x18')](function(_0x38a7dc){if(_0x38a7dc!==null){var _0x34bb3c=[];for(var _0x3c4a4f=0x0;_0x3c4a4f<_0x38a7dc[_0xdb2e('0x19')];_0x3c4a4f++){var _0x3d9834=_0x38a7dc[_0x3c4a4f];if(!_[_0xdb2e('0x1a')](_0x3d9834[_0xdb2e('0x10')])){if(!_[_0xdb2e('0x1a')](_0x3d9834['AdditionalPhones']))_0x34bb3c[_0xdb2e('0x1b')](insertAdditionalPhones(_0x3d9834));promisesContact[_0xdb2e('0x1b')]({'contact':_0x3d9834});}}}Promise['all'](_0x34bb3c)[_0xdb2e('0x1c')](function(){_0xfab440({'val':0x1});});})['catch'](function(_0xac9540){logger['error'](_0xac9540['message']);});});}function insertAdditionalPhones(_0x36c9dc){return new Promise(function(_0x5ea956,_0x5efb8e){var _0x14d0a1=_0x36c9dc[_0xdb2e('0x1d')];if(_[_0xdb2e('0x1a')](_0x14d0a1))_0x5efb8e({'val':0x0});else{var _0x318d73=_0x14d0a1['split'](';');var _0x423555=[];orderBy=0x0;for(var _0x4c0852=0x0;_0x4c0852<_0x318d73['length'];_0x4c0852++){_0x423555[_0xdb2e('0x1b')](splitAdditionalPhone(_0x36c9dc['id'],_0x318d73[_0x4c0852]));}Promise['all'](_0x423555)[_0xdb2e('0x1c')](function(){_0x5ea956({'val':_0x318d73[_0xdb2e('0x19')]});});}});}function splitAdditionalPhone(_0x5f1633,_0x222cba){return new Promise(function(_0x5273f3,_0x2c00f1){var _0x4ee94d=_0x222cba['split'](':');var _0x222ceb=_0x4ee94d[0x0];var _0x40bd0e=_0x4ee94d[0x1];if(_0x40bd0e!==''){var _0x4fe00b=_0x40bd0e[_0xdb2e('0x1e')]('|');var _0x219596=[];for(var _0xb66a46=0x0;_0xb66a46<_0x4fe00b[_0xdb2e('0x19')];_0xb66a46++){if(_0x4fe00b[_0xb66a46]!==''){var _0x68185f=_[_0xdb2e('0x1f')](promisesAdditionalPhones,{'contactId':_0x5f1633,'phone':_0x4fe00b[_0xb66a46]});if(_0x68185f[_0xdb2e('0x19')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x5f1633,'contactTypeId':_0x222ceb,'phone':_0x4fe00b[_0xb66a46],'orderBy':orderBy});}}}_0x5273f3({'ok':0x1});}else _0x5273f3({'res':0x0});});}function createAdditionalPhone(_0x6833fa,_0x44e63e,_0x4e5102,_0xa629b6){var _0x582a27='';var _0xa1815a='';var _0x2f231e=_0x4e5102[_0xdb2e('0x1e')]('§');_0x582a27=_0x2f231e[0x0];if(_0x2f231e['length']==0x2)_0xa1815a=_0x2f231e[0x1];return new Promise(function(_0x92aff3,_0x164224){return db[_0xdb2e('0x20')][_0xdb2e('0x21')]({'where':{'CmContactId':_0x6833fa,'item':_0x582a27}})[_0xdb2e('0x1c')](function(_0x4eccc4){if(_0x4eccc4){return db[_0xdb2e('0x20')]['update']({'ItemTypeId':_0x44e63e,'description':_0xa1815a,'OrderBy':_0xa629b6},{'where':{'CmContactId':_0x6833fa,'item':_0x582a27}})[_0xdb2e('0x1c')](function(_0x69c488){_0x92aff3({'res':'updated'});});}else{return db['CmContactHasItem']['create']({'CmContactId':_0x6833fa,'item':_0x582a27,'ItemTypeId':_0x44e63e,'description':_0xa1815a,'OrderBy':_0xa629b6,'ItemClass':_0xdb2e('0x22')})[_0xdb2e('0x1c')](function(_0x407ae8){_0x92aff3({'res':_0xdb2e('0x23')});});}});});}function updateContact(_0x5d1f17){return new Promise(function(_0x37a57e,_0x3d5114){var _0x1a113e=_0x5d1f17['id'];delete _0x5d1f17['id'];return db[_0xdb2e('0x24')][_0xdb2e('0x25')](_0x5d1f17,{'where':{'id':_0x1a113e}})[_0xdb2e('0x1c')](function(_0x160b9c){updatedRows+=0x1;return db['CmHopper'][_0xdb2e('0x25')]({'phone':_0x5d1f17[_0xdb2e('0x10')]},{'where':{'ContactId':_0x1a113e}})[_0xdb2e('0x1c')](function(_0x269655){_0x37a57e({'ret':'OK'});});});});}function insertCmHopper(_0x468d7d,_0x488925,_0x79ec56,_0x3a34dd,_0x1d0d9d){var _0x729240=['cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id',_0xdb2e('0x26'),_0x488925+'.'+_0x3a34dd,_0xdb2e('0x27'),'cm_contacts.updatedAt','cm_contacts.priority',_0xdb2e('0x28'),'\x22'+_0x1d0d9d+'\x22'];return squel[_0xdb2e('0x29')]()[_0xdb2e('0x2a')](_0xdb2e('0x2b'))[_0xdb2e('0x2c')](['phone',_0xdb2e('0x2d'),'ContactId',_0xdb2e('0x2e'),_0x3a34dd,_0xdb2e('0x2f'),_0xdb2e('0x30'),'priority','UserId',_0xdb2e('0x31')],squel[_0xdb2e('0xf')]()['fields'](_0x729240)[_0xdb2e('0x11')](_0x488925)[_0xdb2e('0x12')]('cm_contacts',null,_0xdb2e('0x32')+_0x488925+_0xdb2e('0x33'))[_0xdb2e('0x12')](_0x79ec56,null,_0x79ec56+_0xdb2e('0x13')+_0x488925+'.'+_0x3a34dd)[_0xdb2e('0x14')](_0x488925+_0xdb2e('0x34'),_0x468d7d)[_0xdb2e('0x14')](_0xdb2e('0x35'),NOW)[_0xdb2e('0x14')](_0xdb2e('0x36'),selectNotIn(_0x488925,_0x79ec56,_0x3a34dd,_0xdb2e('0x2b'),['\x22always\x22',_0xdb2e('0x37')]))[_0xdb2e('0x14')](_0xdb2e('0x36'),selectNotIn(_0x488925,_0x79ec56,_0x3a34dd,_0xdb2e('0x2b'),[_0xdb2e('0x38')])))['toString']();}function insertCmHopperBlack(_0xdf2e38,_0x5aa062,_0x2d61b0,_0x29f6a7){var _0x4a3e97=[_0xdb2e('0x39'),_0xdb2e('0x3a'),_0xdb2e('0x26'),_0x5aa062+'.'+_0x29f6a7,_0xdb2e('0x27'),_0xdb2e('0x3b')];return squel[_0xdb2e('0x29')]()[_0xdb2e('0x2a')](_0xdb2e('0x3c'))[_0xdb2e('0x2c')](['phone',_0xdb2e('0x3d'),_0xdb2e('0x2e'),_0x29f6a7,_0xdb2e('0x2f'),_0xdb2e('0x30')],squel[_0xdb2e('0xf')]()[_0xdb2e('0x3e')](_0x4a3e97)[_0xdb2e('0x11')](_0x5aa062)[_0xdb2e('0x12')](_0xdb2e('0x3f'),null,_0xdb2e('0x32')+_0x5aa062+_0xdb2e('0x33'))[_0xdb2e('0x12')](_0x2d61b0,null,_0x2d61b0+_0xdb2e('0x13')+_0x5aa062+'.'+_0x29f6a7)[_0xdb2e('0x14')](_0x5aa062+_0xdb2e('0x34'),_0xdf2e38)[_0xdb2e('0x14')](_0xdb2e('0x35'),NOW)[_0xdb2e('0x14')](_0xdb2e('0x36'),squel['select']()[_0xdb2e('0x40')](_0xdb2e('0x10'))[_0xdb2e('0x11')](_0xdb2e('0x3c'))[_0xdb2e('0x14')]('ListId\x20=\x20?',_0xdf2e38)['where'](_0x29f6a7+_0xdb2e('0x41'),_0x5aa062+'.'+_0x29f6a7)))[_0xdb2e('0x42')]();}function insertCmHopperAdditionalPhones(_0x1ca26f){var _0x456f7c=[_0xdb2e('0x43'),_0xdb2e('0x44'),'cm_contact_has_items.OrderBy',_0xdb2e('0x45'),_0xdb2e('0x46')];return squel[_0xdb2e('0x29')]()[_0xdb2e('0x2a')](_0xdb2e('0x47'))['fromQuery']([_0xdb2e('0x48'),_0xdb2e('0x10'),_0xdb2e('0x49'),'createdAt','updatedAt'],squel[_0xdb2e('0xf')]()[_0xdb2e('0x3e')](_0x456f7c)['from']('cm_hopper')[_0xdb2e('0x12')](_0xdb2e('0x3f'),null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')[_0xdb2e('0x12')](_0xdb2e('0x4a'),null,_0xdb2e('0x4b'))[_0xdb2e('0x14')](_0xdb2e('0x4c'),_0x1ca26f)[_0xdb2e('0x14')](_0xdb2e('0x35'),NOW))[_0xdb2e('0x42')]();}function insertCmContact(_0x4f26c7,_0x401ac3,_0x38789e,_0x30a489){var _0x822ecc=_[_0xdb2e('0x4d')](_[_0xdb2e('0x4e')](_0x30a489),['ListId',_0xdb2e('0x4f'),_0xdb2e('0x2f'),_0xdb2e('0x30')]);return squel['insert']()[_0xdb2e('0x2a')](_0xdb2e('0x3f'))[_0xdb2e('0x2c')](_0x822ecc,squel['select']()[_0xdb2e('0x3e')](_0x822ecc)[_0xdb2e('0x11')](_0x401ac3)['where']('('+_0x38789e[_0xdb2e('0x12')](',')+')\x20NOT\x20IN\x20?',squel[_0xdb2e('0xf')]()[_0xdb2e('0x3e')](_0x38789e)['from'](_0xdb2e('0x3f'))[_0xdb2e('0x14')](_0xdb2e('0x50'),_0x4f26c7))[_0xdb2e('0x14')](_0xdb2e('0x51'),squel[_0xdb2e('0xf')]()[_0xdb2e('0x40')](_0xdb2e('0x52'),_0xdb2e('0x53'))['from'](_0x401ac3)[_0xdb2e('0x54')](_0x38789e[_0xdb2e('0x12')](','))))[_0xdb2e('0x42')]();}function handleStop(){logger[_0xdb2e('0x55')](_0xdb2e('0x56'));stopped=!![];}function handleUncaughtException(_0x35ce39){logger[_0xdb2e('0x57')](_0x35ce39[_0xdb2e('0x58')]);process[_0xdb2e('0x59')](0x1);}function handleError(_0x2dc671,_0x33fdba){stats[_0xdb2e('0x5a')]['push']({'name':_0x33fdba['code'],'message':_0x33fdba[_0xdb2e('0x58')],'row':_0x2dc671});}function handleQuery(_0x22adc6){logger[_0xdb2e('0x55')](_0x22adc6);return db[_0xdb2e('0x5b')][_0xdb2e('0x16')](_0x22adc6)[_0xdb2e('0x18')](function(_0xe46d67){results['push'](_0xe46d67);})[_0xdb2e('0x5c')](function(_0x59bc2e){logger['error'](_0x59bc2e[_0xdb2e('0x58')]);});}function main(_0x7e1db,_0x480a23,_0x228433,_0x59a0e3){logger['info'](_0xdb2e('0x5d'),_0x7e1db,JSON[_0xdb2e('0x5e')](_0x480a23));process['send']('start');var _0x350728=_0x480a23['binding'];var _0x49abb7=_[_0xdb2e('0x5f')](_0x350728);var _0x718114=_0x480a23[_0xdb2e('0x60')];var _0x5d9dbe=path['join'](config['root'],_0xdb2e('0x61'),_0x718114+_0xdb2e('0x62'));logger[_0xdb2e('0x55')](_0xdb2e('0x63'),_0x480a23);db['ContactItemType'][_0xdb2e('0x64')]({'raw':!![],'attributes':['id',_0xdb2e('0x65')]})['then'](function(_0x531ab0){for(var _0x3b8bb6=0x0;_0x3b8bb6<_0x531ab0[_0xdb2e('0x19')];_0x3b8bb6++){if(_0x531ab0[_0x3b8bb6][_0xdb2e('0x65')]in _0x350728){contactItemTypes[_0xdb2e('0x1b')](_0x531ab0[_0x3b8bb6]);delete _0x49abb7[_0x531ab0[_0x3b8bb6]['name']];hasAdditionalPhones=!![];}for(var _0x53f058 in _0x350728){if(_0x531ab0[_0x3b8bb6][_0xdb2e('0x65')]+_0xdb2e('0x66')===_0x53f058){phoneDescriptions['push']({'itemTypeId':_0x531ab0[_0x3b8bb6]['id'],'description':_0x53f058});delete _0x49abb7[_0x53f058];}}}if(hasAdditionalPhones)_0x49abb7[_0xdb2e('0x1d')]='';var _0x17fdef=_['keys'](_0x49abb7)[_0xdb2e('0x12')]();logger[_0xdb2e('0x55')](_0xdb2e('0x67'),_0x17fdef);fs['writeFileSync'](_0x5d9dbe,_0x17fdef+'\x0a');Papa[_0xdb2e('0x68')](fs[_0xdb2e('0x69')](_0x7e1db),{'header':!![],'skipEmptyLines':!![],'step':function(_0xb75ff0,_0x388062){try{for(var _0x101afa=0x0,_0x39ceb7=[];_0x101afa<_0xb75ff0[_0xdb2e('0x6a')][_0xdb2e('0x19')];_0x101afa++){stats[_0xdb2e('0x6b')]+=0x1;if(_0xb75ff0['errors'][_0x101afa]){handleError(_0xb75ff0[_0xdb2e('0x6a')][_0x101afa],_0xb75ff0[_0xdb2e('0x5a')][_0x101afa]);}else{var _0x27c969=[];var _0x6f5ee7=[];var _0x5cc6a9={};for(var _0x343e58 in _0x350728){let _0x233fff=contactItemTypes[_0xdb2e('0x6c')](_0x226fe4=>_0x226fe4[_0xdb2e('0x65')]===_0x343e58);let _0x5a4e69=contactItemTypes[_0xdb2e('0x6c')](_0x46dd02=>_0x46dd02[_0xdb2e('0x65')]+'_description'===_0x343e58);if(_[_0xdb2e('0x1a')](_0x233fff)&&_[_0xdb2e('0x1a')](_0x5a4e69)){if(_0x350728[_0xdb2e('0x6d')](_0x343e58)){if(_0xb75ff0[_0xdb2e('0x6a')][_0x101afa][_0x350728[_0x343e58]]){var _0x4f0691=_['trim'](_0xb75ff0['data'][_0x101afa][_0x350728[_0x343e58]][_0xdb2e('0x6e')](/"/g,'\x27'));switch(_0x343e58){case _0xdb2e('0x2d'):var _0x1faa96=moment(_0x4f0691,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x1faa96['isValid']()){_0x39ceb7[_0xdb2e('0x1b')]('\x22'+_0x4f0691+'\x22');}else{_0x27c969['push'](_0xdb2e('0x6f'));}break;case _0xdb2e('0x70'):var _0x2f37ab=parseInt(_0x4f0691);_0x4f0691=_['isNaN'](_0x2f37ab)||_0x2f37ab<0x0||_0x2f37ab>0x4?_0x59a0e3?0x3:0x2:_0x2f37ab;_0x39ceb7['push']('\x22'+_0x4f0691+'\x22');break;case _0xdb2e('0x71'):var _0x294c42=parseInt(_0x4f0691);if(_[_0xdb2e('0x72')](_0x294c42)&&_[_0xdb2e('0x73')](_0x228433,_0x294c42)){_0x39ceb7[_0xdb2e('0x1b')]('\x22'+_0x294c42+'\x22');}else{_0x27c969['push'](_0xdb2e('0x74'));}break;case'email':if(isEmail(_0x4f0691)){_0x39ceb7[_0xdb2e('0x1b')]('\x22'+_0x4f0691+'\x22');}else{_0x27c969['push'](_0xdb2e('0x75'));}break;case _0xdb2e('0x76'):var _0x272ad3=moment(_0x4f0691,_0xdb2e('0x77'),!![]);if(_0x272ad3[_0xdb2e('0x78')]()){_0x39ceb7[_0xdb2e('0x1b')]('\x22'+_0x4f0691+'\x22');}else{_0x27c969[_0xdb2e('0x1b')](_0xdb2e('0x79'));}break;default:_0x39ceb7[_0xdb2e('0x1b')]('\x22'+_0x4f0691+'\x22');}}else{switch(_0x343e58){case'firstName':case _0xdb2e('0x10'):_0x27c969[_0xdb2e('0x1b')](_0x343e58+_0xdb2e('0x7a'));break;default:_0x39ceb7[_0xdb2e('0x1b')]('\x22\x22');}}}}else{var _0x33693b='';if(!_['isNil'](_0x233fff)){if(!_0x5cc6a9[_0xdb2e('0x6d')](_0x233fff['id'])){for(var _0x2052b3=0x0;_0x2052b3<_0x350728[_0x343e58][_0xdb2e('0x19')];_0x2052b3++){var _0x4f0691=_[_0xdb2e('0x7b')](_0xb75ff0[_0xdb2e('0x6a')][_0x101afa][_0x350728[_0x343e58][_0x2052b3]][_0xdb2e('0x6e')](/"/g,'\x27'));var _0x3651d3=phoneDescriptions[_0xdb2e('0x6c')](_0x3497b5=>_0x3497b5[_0xdb2e('0x7c')]===_0x233fff['id']);if(!_[_0xdb2e('0x1a')](_0x3651d3)){var _0x58464b=_[_0xdb2e('0x7b')](_0xb75ff0[_0xdb2e('0x6a')][_0x101afa][_0x350728[_0x3651d3['description']][0x0]]['replace'](/"/g,'\x27'));if(!_[_0xdb2e('0x1a')](_0x58464b))_0x4f0691=_0x4f0691+'§'+_0x58464b;}if(_0x33693b=='')_0x33693b=_0x4f0691;else _0x33693b+='|'+_0x4f0691;}_0x6f5ee7[_0xdb2e('0x1b')](_0x233fff['id']+':'+_0x33693b);_0x5cc6a9[_0x233fff['id']]=0x1;}}}}if(hasAdditionalPhones){_0x39ceb7[_0xdb2e('0x1b')]('\x22'+_0x6f5ee7[_0xdb2e('0x12')](';')+'\x22');}if(_0x27c969[_0xdb2e('0x19')]){handleError(_0xb75ff0['data'][_0x101afa],{'code':_0xdb2e('0x7d'),'message':_0x27c969[_0xdb2e('0x12')]()});}else{fs[_0xdb2e('0x7e')](_0x5d9dbe,_0x39ceb7[_0xdb2e('0x12')]()+'\x0a');}_0x39ceb7=[];}if(!(stats['rows']%0xc8)){socket[_0xdb2e('0x7f')](_0xdb2e('0x80')+_0x718114,stats);stats[_0xdb2e('0x5a')]=[];}}if(stopped){logger[_0xdb2e('0x55')](_0xdb2e('0x81'));_0x388062['abort']();}}catch(_0x1148f7){handleError(_0xb75ff0['data'][_0x101afa],{'code':'SystemError','message':_0x1148f7[_0xdb2e('0x58')]});logger[_0xdb2e('0x57')](_0xdb2e('0x82'),_0x1148f7['message']);}},'complete':function(){try{var _0x3ffb67=[];var _0x56b76b=tempTableName;_0x3ffb67[_0xdb2e('0x1b')](_0xdb2e('0x83')+_0x56b76b+_0xdb2e('0x84'));logger['info']('CIS\x20len',contactItemTypes['length']);var _0x13301b=util[_0xdb2e('0xc')](_0xdb2e('0x85'),_0x5d9dbe,_0x56b76b,_0x17fdef,_0x480a23['ListId'],_0x480a23[_0xdb2e('0x4f')]||null,NOW,NOW);if(_['isNil'](_0x350728[_0xdb2e('0x2d')])){_0x13301b+=',\x20scheduledAt\x20=\x20NOW()';}_0x3ffb67[_0xdb2e('0x1b')](_0x13301b);BPromise[_0xdb2e('0x86')](_0x3ffb67,handleQuery)['then'](function(_0xce7b59){BPromise[_0xdb2e('0x87')]([handleAdditionalPhones()])[_0xdb2e('0x1c')](function(){_0x3ffb67=[];for(var _0x3ae9c9=0x0;_0x3ae9c9<promisesContact[_0xdb2e('0x19')];_0x3ae9c9++){_0x3ffb67['push'](updateContact(promisesContact[_0x3ae9c9][_0xdb2e('0x88')]));}BPromise['all'](_0x3ffb67)['then'](function(){_0x3ffb67=[];for(var _0x14d401=0x0;_0x14d401<promisesAdditionalPhones['length'];_0x14d401++){_0x3ffb67[_0xdb2e('0x1b')](createAdditionalPhone(promisesAdditionalPhones[_0x14d401][_0xdb2e('0x89')],promisesAdditionalPhones[_0x14d401]['contactTypeId'],promisesAdditionalPhones[_0x14d401][_0xdb2e('0x10')],promisesAdditionalPhones[_0x14d401][_0xdb2e('0x8a')]));}BPromise['all'](_0x3ffb67)[_0xdb2e('0x1c')](function(){_0x3ffb67=[];_0x3ffb67[_0xdb2e('0x1b')](insertCmHopperAdditionalPhones(_0x480a23['ListId']));_0x3ffb67[_0xdb2e('0x1b')]('DROP\x20TABLE\x20'+_0x56b76b+';');BPromise[_0xdb2e('0x86')](_0x3ffb67,handleQuery)['then'](function(_0x51bbda){stats[_0xdb2e('0x8b')]=!![];stats[_0xdb2e('0x8c')]=updatedRows;socket[_0xdb2e('0x7f')](_0xdb2e('0x80')+_0x718114,stats);fs[_0xdb2e('0x8d')](_0x7e1db);fs[_0xdb2e('0x8d')](_0x5d9dbe);process['exit'](0x0);})[_0xdb2e('0x5c')](function(_0x24cfe1){logger[_0xdb2e('0x57')](_0x24cfe1[_0xdb2e('0x58')]);process[_0xdb2e('0x59')](0x1);});});});});})[_0xdb2e('0x5c')](function(_0x36be55){logger[_0xdb2e('0x57')](_0x36be55[_0xdb2e('0x58')]);process[_0xdb2e('0x59')](0x1);});}catch(_0x5c922e){logger[_0xdb2e('0x57')](_0xdb2e('0x8e'),_0x5c922e[_0xdb2e('0x58')]);process[_0xdb2e('0x59')](0x1);}},'error':function(_0x30c6a1,_0x12509e,_0x27c23a,_0x2a7315){throw new Error(_0x2a7315);}});});}function validate(){if(process[_0xdb2e('0x8f')]&&process[_0xdb2e('0x8f')][_0xdb2e('0x19')]<0x4){throw new Error(_0xdb2e('0x90'));}var _0x526209=path[_0xdb2e('0x12')](config['root'],'server/files/tmp',process[_0xdb2e('0x8f')][0x2]);if(!fs[_0xdb2e('0x91')](_0x526209)){throw new Error(_0xdb2e('0x92'));}var _0x3bf4a2={};try{_0x3bf4a2=JSON[_0xdb2e('0x68')](process[_0xdb2e('0x8f')][0x3]);if(!_0x3bf4a2['binding']){throw new Error(_0xdb2e('0x93'));}var _0x52a8d9=0x0;if(_0x3bf4a2[_0xdb2e('0x94')][_0xdb2e('0x71')]){_0x52a8d9=0x1;}if(!_0x3bf4a2[_0xdb2e('0x2e')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x339206){throw new Error(_0xdb2e('0x95'));}var _0x3f09c8=[];try{_0x3f09c8=_[_0xdb2e('0x96')](JSON['parse'](process[_0xdb2e('0x8f')][0x4]),'id');}catch(_0x1036d3){logger[_0xdb2e('0x55')](_0xdb2e('0x97'));}main(_0x526209,_0x3bf4a2,_0x3f09c8,_0x52a8d9);}validate();process['on']('SIGINT',handleStop);process['on'](_0xdb2e('0x98'),handleUncaughtException);
\ No newline at end of file
+var _0x7529=['catch','error','message','split','all','filter','CmContactHasItem','findOne','update','updated','PHONE','CmContact','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','createdAt','priority','UserId','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.id\x20=\x20','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','toString','cm_contacts.updatedAt','cm_hopper_black','updatedAt','fields','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','ListId\x20=\x20?','\x20=\x20?','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','id\x20IN\x20?','MIN(id)','min_id','group','info','exit','code','main','stringify','send','start','clone','socket_timestamp','root','server/files/tmp','.csv','body','ContactItemType','findAll','name','_description','AdditionalPhones','header','writeFileSync','parse','data','rows','errors','find','trim','isValid','isNaN','includes','email','email\x20wrong\x20format','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','hasOwnProperty','replace','description','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','abort','SystemError','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','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','contactId','contactTypeId','DROP\x20TABLE\x20','each','finish','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','binding','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','moment','ioredis','../../../mysqldb','../../../config/environment','redis','defaults','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','cm_contacts_temp_','YYYYMMDDHHmmss','select','field','phone','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','join','sequelize','query','select\x20*\x20from\x20','spread','length','isNil','push','then'];(function(_0x335965,_0x2e6970){var _0x32d93f=function(_0x542b5f){while(--_0x542b5f){_0x335965['push'](_0x335965['shift']());}};_0x32d93f(++_0x2e6970);}(_0x7529,0x1c6));var _0x9752=function(_0x19b92c,_0x3faee9){_0x19b92c=_0x19b92c-0x0;var _0x17f181=_0x7529[_0x19b92c];return _0x17f181;};'use strict';var fs=require('fs');var path=require(_0x9752('0x0'));var _=require(_0x9752('0x1'));var Papa=require(_0x9752('0x2'));var util=require(_0x9752('0x3'));var BPromise=require(_0x9752('0x4'));var moment=require(_0x9752('0x5'));var squel=require('squel');var Redis=require(_0x9752('0x6'));var db=require(_0x9752('0x7'))['db'];var config=require(_0x9752('0x8'));var logger=require('../../../config/logger')('import');config[_0x9752('0x9')]=_[_0x9752('0xa')](config[_0x9752('0x9')],{'host':_0x9752('0xb'),'port':0x18eb});var socket=require(_0x9752('0xc'))(new Redis(config[_0x9752('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()[_0x9752('0xd')](_0x9752('0xe'));var tempTableName=_0x9752('0xf')+moment()['format'](_0x9752('0x10'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x5478fa){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'](_0x5478fa);}function selectNotIn(_0x1f3bc3,_0x24f9d6,_0x19a5b8,_0x329b69,_0x7221ec){return squel[_0x9752('0x11')]()[_0x9752('0x12')](_0x9752('0x13'))['from'](_0x329b69)['join'](_0x24f9d6,null,_0x24f9d6+'.id\x20=\x20'+_0x329b69+'.'+_0x19a5b8)[_0x9752('0x14')](_0x329b69+'.'+_0x19a5b8+_0x9752('0x15')+_0x1f3bc3+'.'+_0x19a5b8)[_0x9752('0x14')](_0x24f9d6+_0x9752('0x16')+_0x7221ec[_0x9752('0x17')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x2201e5,_0x1703bc){promisesAdditionalPhones=[];promisesContact=[];return db[_0x9752('0x18')][_0x9752('0x19')](_0x9752('0x1a')+tempTableName)[_0x9752('0x1b')](function(_0x3df09f){if(_0x3df09f!==null){var _0x1ae153=[];for(var _0x3a2138=0x0;_0x3a2138<_0x3df09f[_0x9752('0x1c')];_0x3a2138++){var _0x3a6532=_0x3df09f[_0x3a2138];if(!_[_0x9752('0x1d')](_0x3a6532[_0x9752('0x13')])){if(!_['isNil'](_0x3a6532['AdditionalPhones']))_0x1ae153[_0x9752('0x1e')](insertAdditionalPhones(_0x3a6532));promisesContact['push']({'contact':_0x3a6532});}}}Promise['all'](_0x1ae153)[_0x9752('0x1f')](function(){_0x2201e5({'val':0x1});});})[_0x9752('0x20')](function(_0x28a44d){logger[_0x9752('0x21')](_0x28a44d[_0x9752('0x22')]);});});}function insertAdditionalPhones(_0x2d4c06){return new Promise(function(_0x55595f,_0x407efb){var _0x3d7eb9=_0x2d4c06['AdditionalPhones'];if(_['isNil'](_0x3d7eb9))_0x407efb({'val':0x0});else{var _0xe5d996=_0x3d7eb9[_0x9752('0x23')](';');var _0x2d14b1=[];orderBy=0x0;for(var _0x3834a3=0x0;_0x3834a3<_0xe5d996['length'];_0x3834a3++){_0x2d14b1[_0x9752('0x1e')](splitAdditionalPhone(_0x2d4c06['id'],_0xe5d996[_0x3834a3]));}Promise[_0x9752('0x24')](_0x2d14b1)[_0x9752('0x1f')](function(){_0x55595f({'val':_0xe5d996[_0x9752('0x1c')]});});}});}function splitAdditionalPhone(_0x3468e4,_0x88f3a5){return new Promise(function(_0x47f24d,_0xc0d4e1){var _0x424ce3=_0x88f3a5[_0x9752('0x23')](':');var _0x56122c=_0x424ce3[0x0];var _0x3f5fc9=_0x424ce3[0x1];if(_0x3f5fc9!==''){var _0x1a821e=_0x3f5fc9[_0x9752('0x23')]('|');var _0x3b89b7=[];for(var _0x4dea08=0x0;_0x4dea08<_0x1a821e['length'];_0x4dea08++){if(_0x1a821e[_0x4dea08]!==''){var _0x17d5e2=_[_0x9752('0x25')](promisesAdditionalPhones,{'contactId':_0x3468e4,'phone':_0x1a821e[_0x4dea08]});if(_0x17d5e2['length']==0x0){orderBy++;promisesAdditionalPhones[_0x9752('0x1e')]({'contactId':_0x3468e4,'contactTypeId':_0x56122c,'phone':_0x1a821e[_0x4dea08],'orderBy':orderBy});}}}_0x47f24d({'ok':0x1});}else _0x47f24d({'res':0x0});});}function createAdditionalPhone(_0x215575,_0x1f9bf1,_0x10190c,_0x515c95){var _0x29c7a8='';var _0x3cf580='';var _0xf3577b=_0x10190c[_0x9752('0x23')]('§');_0x29c7a8=_0xf3577b[0x0];if(_0xf3577b[_0x9752('0x1c')]==0x2)_0x3cf580=_0xf3577b[0x1];return new Promise(function(_0x11712d,_0x42b066){return db[_0x9752('0x26')][_0x9752('0x27')]({'where':{'CmContactId':_0x215575,'item':_0x29c7a8}})[_0x9752('0x1f')](function(_0x15aad5){if(_0x15aad5){return db[_0x9752('0x26')][_0x9752('0x28')]({'ItemTypeId':_0x1f9bf1,'description':_0x3cf580,'OrderBy':_0x515c95},{'where':{'CmContactId':_0x215575,'item':_0x29c7a8}})[_0x9752('0x1f')](function(_0x29e7ce){_0x11712d({'res':_0x9752('0x29')});});}else{return db[_0x9752('0x26')]['create']({'CmContactId':_0x215575,'item':_0x29c7a8,'ItemTypeId':_0x1f9bf1,'description':_0x3cf580,'OrderBy':_0x515c95,'ItemClass':_0x9752('0x2a')})['then'](function(_0x389473){_0x11712d({'res':'inserted'});});}});});}function updateContact(_0x9fcf45){return new Promise(function(_0x88b8c4,_0x324dbe){var _0x1cd208=_0x9fcf45['id'];delete _0x9fcf45['id'];return db[_0x9752('0x2b')]['update'](_0x9fcf45,{'where':{'id':_0x1cd208}})['then'](function(_0x502401){updatedRows+=0x1;return db['CmHopper']['update']({'phone':_0x9fcf45[_0x9752('0x13')]},{'where':{'ContactId':_0x1cd208}})[_0x9752('0x1f')](function(_0x460384){_0x88b8c4({'ret':'OK'});});});});}function insertCmHopper(_0x56db31,_0x233f18,_0x34f5c2,_0x4b1257,_0x3c67f2){var _0x30e018=[_0x9752('0x2c'),_0x9752('0x2d'),_0x9752('0x2e'),_0x9752('0x2f'),_0x233f18+'.'+_0x4b1257,_0x9752('0x30'),'cm_contacts.updatedAt',_0x9752('0x31'),_0x9752('0x32'),'\x22'+_0x3c67f2+'\x22'];return squel[_0x9752('0x33')]()[_0x9752('0x34')](_0x9752('0x35'))[_0x9752('0x36')]([_0x9752('0x13'),_0x9752('0x37'),_0x9752('0x38'),_0x9752('0x39'),_0x4b1257,_0x9752('0x3a'),'updatedAt',_0x9752('0x3b'),_0x9752('0x3c'),'recallme'],squel['select']()['fields'](_0x30e018)[_0x9752('0x3d')](_0x233f18)[_0x9752('0x17')](_0x9752('0x3e'),null,_0x9752('0x3f')+_0x233f18+_0x9752('0x40'))[_0x9752('0x17')](_0x34f5c2,null,_0x34f5c2+_0x9752('0x41')+_0x233f18+'.'+_0x4b1257)[_0x9752('0x14')](_0x233f18+'.CmListId\x20=\x20?',_0x56db31)['where']('cm_contacts.createdAt\x20=\x20?',NOW)[_0x9752('0x14')](_0x9752('0x42'),selectNotIn(_0x233f18,_0x34f5c2,_0x4b1257,_0x9752('0x35'),[_0x9752('0x43'),'\x22onlyIfOpen\x22']))['where'](_0x9752('0x42'),selectNotIn(_0x233f18,_0x34f5c2,_0x4b1257,_0x9752('0x35'),[_0x9752('0x43')])))[_0x9752('0x44')]();}function insertCmHopperBlack(_0x49760e,_0x3008c7,_0x2bdff6,_0x5c0685){var _0x32c6f8=['cm_contacts.phone',_0x9752('0x2e'),'cm_contacts.ListId',_0x3008c7+'.'+_0x5c0685,'cm_contacts.createdAt',_0x9752('0x45')];return squel[_0x9752('0x33')]()[_0x9752('0x34')](_0x9752('0x46'))[_0x9752('0x36')](['phone',_0x9752('0x38'),_0x9752('0x39'),_0x5c0685,_0x9752('0x3a'),_0x9752('0x47')],squel['select']()[_0x9752('0x48')](_0x32c6f8)[_0x9752('0x3d')](_0x3008c7)[_0x9752('0x17')](_0x9752('0x3e'),null,_0x9752('0x3f')+_0x3008c7+_0x9752('0x40'))[_0x9752('0x17')](_0x2bdff6,null,_0x2bdff6+_0x9752('0x41')+_0x3008c7+'.'+_0x5c0685)[_0x9752('0x14')](_0x3008c7+_0x9752('0x49'),_0x49760e)['where'](_0x9752('0x4a'),NOW)[_0x9752('0x14')](_0x9752('0x42'),squel[_0x9752('0x11')]()['field'](_0x9752('0x13'))[_0x9752('0x3d')](_0x9752('0x46'))['where'](_0x9752('0x4b'),_0x49760e)[_0x9752('0x14')](_0x5c0685+_0x9752('0x4c'),_0x3008c7+'.'+_0x5c0685)))[_0x9752('0x44')]();}function insertCmHopperAdditionalPhones(_0x40549c){var _0x3846de=[_0x9752('0x4d'),_0x9752('0x4e'),'cm_contact_has_items.OrderBy',_0x9752('0x4f'),_0x9752('0x50')];return squel['insert']()[_0x9752('0x34')]('cm_hopper_additional_phones')[_0x9752('0x36')](['CmHopperId','phone',_0x9752('0x51'),_0x9752('0x3a'),_0x9752('0x47')],squel[_0x9752('0x11')]()[_0x9752('0x48')](_0x3846de)[_0x9752('0x3d')](_0x9752('0x35'))[_0x9752('0x17')](_0x9752('0x3e'),null,_0x9752('0x52'))[_0x9752('0x17')]('cm_contact_has_items',null,'cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId')[_0x9752('0x14')](_0x9752('0x53'),_0x40549c)[_0x9752('0x14')](_0x9752('0x4a'),NOW))['toString']();}function insertCmContact(_0x3ab71c,_0x1f68f7,_0x981834,_0x4ac4ea){var _0x5c5861=_[_0x9752('0x54')](_[_0x9752('0x55')](_0x4ac4ea),[_0x9752('0x39'),_0x9752('0x56'),_0x9752('0x3a'),'updatedAt']);return squel['insert']()[_0x9752('0x34')](_0x9752('0x3e'))['fromQuery'](_0x5c5861,squel[_0x9752('0x11')]()[_0x9752('0x48')](_0x5c5861)[_0x9752('0x3d')](_0x1f68f7)[_0x9752('0x14')]('('+_0x981834[_0x9752('0x17')](',')+_0x9752('0x57'),squel[_0x9752('0x11')]()[_0x9752('0x48')](_0x981834)[_0x9752('0x3d')](_0x9752('0x3e'))[_0x9752('0x14')]('ListId\x20=\x20?',_0x3ab71c))[_0x9752('0x14')](_0x9752('0x58'),squel[_0x9752('0x11')]()[_0x9752('0x12')](_0x9752('0x59'),_0x9752('0x5a'))[_0x9752('0x3d')](_0x1f68f7)[_0x9752('0x5b')](_0x981834[_0x9752('0x17')](','))))[_0x9752('0x44')]();}function handleStop(){logger[_0x9752('0x5c')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0xd3c1a){logger[_0x9752('0x21')](_0xd3c1a[_0x9752('0x22')]);process[_0x9752('0x5d')](0x1);}function handleError(_0x9ecaeb,_0x1d3fbd){stats['errors'][_0x9752('0x1e')]({'name':_0x1d3fbd[_0x9752('0x5e')],'message':_0x1d3fbd['message'],'row':_0x9ecaeb});}function handleQuery(_0x3df997){logger[_0x9752('0x5c')](_0x3df997);return db[_0x9752('0x18')][_0x9752('0x19')](_0x3df997)[_0x9752('0x1b')](function(_0x204c04){results[_0x9752('0x1e')](_0x204c04);})[_0x9752('0x20')](function(_0x17edf4){logger[_0x9752('0x21')](_0x17edf4[_0x9752('0x22')]);});}function main(_0x246db9,_0x26cf34,_0x5e3d4d,_0x403409){logger[_0x9752('0x5c')](_0x9752('0x5f'),_0x246db9,JSON[_0x9752('0x60')](_0x26cf34));process[_0x9752('0x61')](_0x9752('0x62'));var _0x4c87bc=_0x26cf34['binding'];var _0xdad1c5=_[_0x9752('0x63')](_0x4c87bc);var _0x2dec71=_0x26cf34[_0x9752('0x64')];var _0x3cc42a=path['join'](config[_0x9752('0x65')],_0x9752('0x66'),_0x2dec71+_0x9752('0x67'));logger[_0x9752('0x5c')](_0x9752('0x68'),_0x26cf34);db[_0x9752('0x69')][_0x9752('0x6a')]({'raw':!![],'attributes':['id',_0x9752('0x6b')]})[_0x9752('0x1f')](function(_0x2cadce){for(var _0x1776b7=0x0;_0x1776b7<_0x2cadce[_0x9752('0x1c')];_0x1776b7++){if(_0x2cadce[_0x1776b7][_0x9752('0x6b')]in _0x4c87bc){contactItemTypes[_0x9752('0x1e')](_0x2cadce[_0x1776b7]);delete _0xdad1c5[_0x2cadce[_0x1776b7]['name']];hasAdditionalPhones=!![];}for(var _0x2b8869 in _0x4c87bc){if(_0x2cadce[_0x1776b7][_0x9752('0x6b')]+_0x9752('0x6c')===_0x2b8869){phoneDescriptions[_0x9752('0x1e')]({'itemTypeId':_0x2cadce[_0x1776b7]['id'],'description':_0x2b8869});delete _0xdad1c5[_0x2b8869];}}}if(hasAdditionalPhones)_0xdad1c5[_0x9752('0x6d')]='';var _0x343229=_[_0x9752('0x55')](_0xdad1c5)[_0x9752('0x17')]();logger[_0x9752('0x5c')](_0x9752('0x6e'),_0x343229);fs[_0x9752('0x6f')](_0x3cc42a,_0x343229+'\x0a');Papa[_0x9752('0x70')](fs['createReadStream'](_0x246db9),{'header':!![],'skipEmptyLines':!![],'step':function(_0x1a4b91,_0xe4133b){try{for(var _0x2703ba=0x0,_0x5721ec=[];_0x2703ba<_0x1a4b91[_0x9752('0x71')][_0x9752('0x1c')];_0x2703ba++){stats[_0x9752('0x72')]+=0x1;if(_0x1a4b91[_0x9752('0x73')][_0x2703ba]){handleError(_0x1a4b91[_0x9752('0x71')][_0x2703ba],_0x1a4b91[_0x9752('0x73')][_0x2703ba]);}else{var _0x345cf5=[];var _0x5d90ce=[];var _0x560030={};for(var _0x424fd8 in _0x4c87bc){let _0x1a0298=contactItemTypes[_0x9752('0x74')](_0x531db5=>_0x531db5[_0x9752('0x6b')]===_0x424fd8);let _0x182692=contactItemTypes[_0x9752('0x74')](_0x2a7b09=>_0x2a7b09[_0x9752('0x6b')]+_0x9752('0x6c')===_0x424fd8);if(_[_0x9752('0x1d')](_0x1a0298)&&_[_0x9752('0x1d')](_0x182692)){if(_0x4c87bc['hasOwnProperty'](_0x424fd8)){if(_0x1a4b91['data'][_0x2703ba][_0x4c87bc[_0x424fd8]]){var _0x461fd4=_[_0x9752('0x75')](_0x1a4b91[_0x9752('0x71')][_0x2703ba][_0x4c87bc[_0x424fd8]]['replace'](/"/g,'\x27'));switch(_0x424fd8){case _0x9752('0x37'):var _0x5c1ac9=moment(_0x461fd4,_0x9752('0xe'),!![]);if(_0x5c1ac9[_0x9752('0x76')]()){_0x5721ec['push']('\x22'+_0x461fd4+'\x22');}else{_0x345cf5[_0x9752('0x1e')]('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case'priority':var _0x378fae=parseInt(_0x461fd4);_0x461fd4=_[_0x9752('0x77')](_0x378fae)||_0x378fae<0x0||_0x378fae>0x4?_0x403409?0x3:0x2:_0x378fae;_0x5721ec[_0x9752('0x1e')]('\x22'+_0x461fd4+'\x22');break;case _0x9752('0x3c'):var _0x3ce758=parseInt(_0x461fd4);if(_['isNumber'](_0x3ce758)&&_[_0x9752('0x78')](_0x5e3d4d,_0x3ce758)){_0x5721ec[_0x9752('0x1e')]('\x22'+_0x3ce758+'\x22');}else{_0x345cf5['push']('agent\x20not\x20exists');}break;case _0x9752('0x79'):if(isEmail(_0x461fd4)){_0x5721ec[_0x9752('0x1e')]('\x22'+_0x461fd4+'\x22');}else{_0x345cf5['push'](_0x9752('0x7a'));}break;case _0x9752('0x7b'):var _0x133a00=moment(_0x461fd4,'YYYY-MM-DD',!![]);if(_0x133a00['isValid']()){_0x5721ec[_0x9752('0x1e')]('\x22'+_0x461fd4+'\x22');}else{_0x345cf5['push'](_0x9752('0x7c'));}break;default:_0x5721ec[_0x9752('0x1e')]('\x22'+_0x461fd4+'\x22');}}else{switch(_0x424fd8){case _0x9752('0x7d'):case _0x9752('0x13'):_0x345cf5['push'](_0x424fd8+_0x9752('0x7e'));break;default:_0x5721ec[_0x9752('0x1e')]('\x22\x22');}}}}else{var _0x196201='';if(!_[_0x9752('0x1d')](_0x1a0298)){if(!_0x560030[_0x9752('0x7f')](_0x1a0298['id'])){for(var _0x4a5a40=0x0;_0x4a5a40<_0x4c87bc[_0x424fd8][_0x9752('0x1c')];_0x4a5a40++){var _0x461fd4=_[_0x9752('0x75')](_0x1a4b91[_0x9752('0x71')][_0x2703ba][_0x4c87bc[_0x424fd8][_0x4a5a40]][_0x9752('0x80')](/"/g,'\x27'));var _0x44051d=phoneDescriptions[_0x9752('0x74')](_0x25aa9c=>_0x25aa9c['itemTypeId']===_0x1a0298['id']);if(!_['isNil'](_0x44051d)){var _0x39465a=_[_0x9752('0x75')](_0x1a4b91['data'][_0x2703ba][_0x4c87bc[_0x44051d[_0x9752('0x81')]][0x0]][_0x9752('0x80')](/"/g,'\x27'));if(!_['isNil'](_0x39465a))_0x461fd4=_0x461fd4+'§'+_0x39465a;}if(_0x196201=='')_0x196201=_0x461fd4;else _0x196201+='|'+_0x461fd4;}_0x5d90ce[_0x9752('0x1e')](_0x1a0298['id']+':'+_0x196201);_0x560030[_0x1a0298['id']]=0x1;}}}}if(hasAdditionalPhones){_0x5721ec[_0x9752('0x1e')]('\x22'+_0x5d90ce[_0x9752('0x17')](';')+'\x22');}if(_0x345cf5[_0x9752('0x1c')]){handleError(_0x1a4b91[_0x9752('0x71')][_0x2703ba],{'code':_0x9752('0x82'),'message':_0x345cf5[_0x9752('0x17')]()});}else{fs[_0x9752('0x83')](_0x3cc42a,_0x5721ec['join']()+'\x0a');}_0x5721ec=[];}if(!(stats['rows']%0xc8)){socket[_0x9752('0x84')](_0x9752('0x85')+_0x2dec71,stats);stats[_0x9752('0x73')]=[];}}if(stopped){logger[_0x9752('0x5c')](_0x9752('0x86'));_0xe4133b[_0x9752('0x87')]();}}catch(_0x50d35e){handleError(_0x1a4b91[_0x9752('0x71')][_0x2703ba],{'code':_0x9752('0x88'),'message':_0x50d35e['message']});logger['error']('step',_0x50d35e['message']);}},'complete':function(){try{var _0x2a1866=[];var _0x5ed1c6=tempTableName;_0x2a1866[_0x9752('0x1e')](_0x9752('0x89')+_0x5ed1c6+_0x9752('0x8a'));logger['info'](_0x9752('0x8b'),contactItemTypes[_0x9752('0x1c')]);var _0x49757f=util['format'](_0x9752('0x8c'),_0x3cc42a,_0x5ed1c6,_0x343229,_0x26cf34['ListId'],_0x26cf34['CompanyId']||null,NOW,NOW);if(_[_0x9752('0x1d')](_0x4c87bc['scheduledat'])){_0x49757f+=_0x9752('0x8d');}_0x2a1866[_0x9752('0x1e')](_0x49757f);BPromise['each'](_0x2a1866,handleQuery)[_0x9752('0x1f')](function(_0x269675){BPromise['all']([handleAdditionalPhones()])['then'](function(){_0x2a1866=[];for(var _0x18eb61=0x0;_0x18eb61<promisesContact[_0x9752('0x1c')];_0x18eb61++){_0x2a1866['push'](updateContact(promisesContact[_0x18eb61][_0x9752('0x8e')]));}BPromise[_0x9752('0x24')](_0x2a1866)[_0x9752('0x1f')](function(){_0x2a1866=[];for(var _0x418cb2=0x0;_0x418cb2<promisesAdditionalPhones[_0x9752('0x1c')];_0x418cb2++){_0x2a1866[_0x9752('0x1e')](createAdditionalPhone(promisesAdditionalPhones[_0x418cb2][_0x9752('0x8f')],promisesAdditionalPhones[_0x418cb2][_0x9752('0x90')],promisesAdditionalPhones[_0x418cb2]['phone'],promisesAdditionalPhones[_0x418cb2]['orderBy']));}BPromise['all'](_0x2a1866)[_0x9752('0x1f')](function(){_0x2a1866=[];_0x2a1866[_0x9752('0x1e')](insertCmHopperAdditionalPhones(_0x26cf34['ListId']));_0x2a1866[_0x9752('0x1e')](_0x9752('0x91')+_0x5ed1c6+';');BPromise[_0x9752('0x92')](_0x2a1866,handleQuery)[_0x9752('0x1f')](function(_0x4d1fa7){stats[_0x9752('0x93')]=!![];stats['affectedRows']=updatedRows;socket[_0x9752('0x84')](_0x9752('0x85')+_0x2dec71,stats);fs[_0x9752('0x94')](_0x246db9);fs[_0x9752('0x94')](_0x3cc42a);process[_0x9752('0x5d')](0x0);})['catch'](function(_0x529986){logger[_0x9752('0x21')](_0x529986[_0x9752('0x22')]);process[_0x9752('0x5d')](0x1);});});});});})[_0x9752('0x20')](function(_0x3be9ec){logger[_0x9752('0x21')](_0x3be9ec['message']);process[_0x9752('0x5d')](0x1);});}catch(_0x39f765){logger[_0x9752('0x21')](_0x9752('0x95'),_0x39f765['message']);process[_0x9752('0x5d')](0x1);}},'error':function(_0x4a8413,_0x32252f,_0x47e4a2,_0x35361c){throw new Error(_0x35361c);}});});}function validate(){if(process['argv']&&process[_0x9752('0x96')]['length']<0x4){throw new Error(_0x9752('0x97'));}var _0x448b0e=path[_0x9752('0x17')](config[_0x9752('0x65')],_0x9752('0x66'),process[_0x9752('0x96')][0x2]);if(!fs[_0x9752('0x98')](_0x448b0e)){throw new Error(_0x9752('0x99'));}var _0x9a9e95={};try{_0x9a9e95=JSON[_0x9752('0x70')](process[_0x9752('0x96')][0x3]);if(!_0x9a9e95['binding']){throw new Error(_0x9752('0x9a'));}var _0x44535d=0x0;if(_0x9a9e95[_0x9752('0x9b')][_0x9752('0x3c')]){_0x44535d=0x1;}if(!_0x9a9e95[_0x9752('0x39')]){throw new Error(_0x9752('0x9c'));}}catch(_0x1d3cfb){throw new Error(_0x9752('0x9d'));}var _0xbc2e18=[];try{_0xbc2e18=_[_0x9752('0x9e')](JSON[_0x9752('0x70')](process[_0x9752('0x96')][0x4]),'id');}catch(_0x432b08){logger['info'](_0x9752('0x9f'));}main(_0x448b0e,_0x9a9e95,_0xbc2e18,_0x44535d);}validate();process['on'](_0x9752('0xa0'),handleStop);process['on'](_0x9752('0xa1'),handleUncaughtException);
\ No newline at end of file
index e10b6cc..0613cc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff62=['***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Connect','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','talktime','Called\x20Number','Member\x20Name','starttime','answertime','Complete\x20Time','endtime','duration','Billable\x20Time','billableseconds','getSubjects','string','toLowerCase','inbound','push','variable','queue','outbound','destcalleridnum','voice','***\x20Call\x20Info\x20***','Caller\x20Number','calleridnum','keyValue','calleridname','Call\x20To','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt'];(function(_0x22b715,_0x4c1201){var _0x8bae06=function(_0x538c9e){while(--_0x538c9e){_0x22b715['push'](_0x22b715['shift']());}};_0x8bae06(++_0x4c1201);}(_0xff62,0x12a));var _0x2ff6=function(_0x2e6254,_0x4e5328){_0x2e6254=_0x2e6254-0x0;var _0x7916df=_0xff62[_0x2e6254];return _0x7916df;};'use strict';exports[_0x2ff6('0x0')]=function(_0x27c109,_0x628e84){var _0x3068a8=[{'type':_0x2ff6('0x1'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x27c109[_0x2ff6('0x2')]()){case'voice':switch(_0x628e84['toLowerCase']()){case _0x2ff6('0x3'):_0x3068a8[_0x2ff6('0x4')]({'type':_0x2ff6('0x5'),'content':'','variableName':_0x2ff6('0x6')});_0x3068a8['push']({'type':'variable','content':'','variableName':'calleridnum'});break;case _0x2ff6('0x7'):_0x3068a8[_0x2ff6('0x4')]({'type':_0x2ff6('0x1'),'content':'Outbound\x20Call','variableName':null});_0x3068a8[_0x2ff6('0x4')]({'type':_0x2ff6('0x5'),'content':'','variableName':_0x2ff6('0x8')});break;}}return _0x3068a8;};exports['getDescriptions']=function(_0x423bfb,_0x40a48e){var _0x1c3380=[];switch(_0x423bfb[_0x2ff6('0x2')]()){case _0x2ff6('0x9'):switch(_0x40a48e['toLowerCase']()){case _0x2ff6('0x3'):_0x1c3380=[{'type':'string','content':_0x2ff6('0xa'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x2ff6('0xb'),'keyType':'variable','variableName':_0x2ff6('0xc')},{'type':_0x2ff6('0xd'),'content':'','key':'Caller\x20Name','keyType':_0x2ff6('0x5'),'variableName':_0x2ff6('0xe')},{'type':_0x2ff6('0xd'),'content':'','key':_0x2ff6('0xf'),'keyType':_0x2ff6('0x5'),'variableName':_0x2ff6('0x10')},{'type':_0x2ff6('0xd'),'content':'','key':_0x2ff6('0x11'),'keyType':_0x2ff6('0x5'),'variableName':_0x2ff6('0x6')},{'type':'keyValue','content':'','key':_0x2ff6('0x12'),'keyType':_0x2ff6('0x5'),'variableName':_0x2ff6('0x13')},{'type':_0x2ff6('0xd'),'content':'','key':_0x2ff6('0x14'),'keyType':_0x2ff6('0x5'),'variableName':_0x2ff6('0x15')},{'type':_0x2ff6('0x1'),'content':_0x2ff6('0x16'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x2ff6('0x17'),'keyType':_0x2ff6('0x5'),'variableName':_0x2ff6('0x18')},{'type':_0x2ff6('0xd'),'content':'','key':'Agent\x20Number','keyType':_0x2ff6('0x5'),'variableName':_0x2ff6('0x8')},{'type':_0x2ff6('0x1'),'content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':'Agent\x20Ring','keyType':_0x2ff6('0x5'),'variableName':_0x2ff6('0x15')},{'type':_0x2ff6('0xd'),'content':'','key':_0x2ff6('0x19'),'keyType':_0x2ff6('0x5'),'variableName':'agentconnectAt'},{'type':_0x2ff6('0xd'),'content':'','key':_0x2ff6('0x1a'),'keyType':'variable','variableName':_0x2ff6('0x1b')},{'type':_0x2ff6('0xd'),'content':'','key':_0x2ff6('0x1c'),'keyType':'variable','variableName':_0x2ff6('0x1d')},{'type':_0x2ff6('0xd'),'content':'','key':'Talk\x20Time','keyType':'variable','variableName':_0x2ff6('0x1e')}];break;case _0x2ff6('0x7'):_0x1c3380=[{'type':'string','content':'***\x20Call\x20Info\x20***','variableName':null},{'type':_0x2ff6('0xd'),'content':'','key':_0x2ff6('0x1f'),'keyType':_0x2ff6('0x5'),'keyContent':'','variableName':'destcalleridnum'},{'type':_0x2ff6('0xd'),'content':'','key':_0x2ff6('0x20'),'keyType':_0x2ff6('0x5'),'keyContent':'','variableName':'membername'},{'type':'keyValue','content':'','key':'UniqueId','keyType':_0x2ff6('0x5'),'keyContent':'','variableName':_0x2ff6('0x13')},{'type':_0x2ff6('0xd'),'content':'','key':_0x2ff6('0x14'),'keyType':'variable','keyContent':'','variableName':_0x2ff6('0x21')},{'type':_0x2ff6('0x1'),'content':'***\x20Time\x20Info\x20***'},{'type':_0x2ff6('0xd'),'content':'','key':'Answer\x20Time','keyType':_0x2ff6('0x5'),'keyContent':'','variableName':_0x2ff6('0x22')},{'type':_0x2ff6('0xd'),'content':'','key':_0x2ff6('0x23'),'keyType':'variable','keyContent':'','variableName':_0x2ff6('0x24')},{'type':_0x2ff6('0xd'),'content':'','key':'Duration','keyType':'variable','keyContent':'','variableName':_0x2ff6('0x25')},{'type':_0x2ff6('0xd'),'content':'','key':_0x2ff6('0x26'),'keyType':_0x2ff6('0x5'),'keyContent':'','variableName':_0x2ff6('0x27')}];break;}}return _0x1c3380;};
\ No newline at end of file
+var _0x4dd0=['Call\x20To','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','Agent\x20Complete','Hold\x20Time','Talk\x20Time','talktime','membername','Answer\x20Time','answertime','Duration','duration','billableseconds','getSubjects','[xCALLY\x20Ticket]','voice','toLowerCase','inbound','push','variable','queue','calleridnum','outbound','string','Outbound\x20Call','destcalleridnum','getDescriptions','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','calleridname'];(function(_0x2ff506,_0x1dc14e){var _0x2714a0=function(_0x3c3d8e){while(--_0x3c3d8e){_0x2ff506['push'](_0x2ff506['shift']());}};_0x2714a0(++_0x1dc14e);}(_0x4dd0,0xc5));var _0x04dd=function(_0x5b5a27,_0x4a5a77){_0x5b5a27=_0x5b5a27-0x0;var _0x498600=_0x4dd0[_0x5b5a27];return _0x498600;};'use strict';exports[_0x04dd('0x0')]=function(_0x5d5501,_0x48fbe9){var _0x564938=[{'type':'string','content':_0x04dd('0x1'),'variableName':null}];switch(_0x5d5501['toLowerCase']()){case _0x04dd('0x2'):switch(_0x48fbe9[_0x04dd('0x3')]()){case _0x04dd('0x4'):_0x564938[_0x04dd('0x5')]({'type':_0x04dd('0x6'),'content':'','variableName':_0x04dd('0x7')});_0x564938[_0x04dd('0x5')]({'type':_0x04dd('0x6'),'content':'','variableName':_0x04dd('0x8')});break;case _0x04dd('0x9'):_0x564938[_0x04dd('0x5')]({'type':_0x04dd('0xa'),'content':_0x04dd('0xb'),'variableName':null});_0x564938[_0x04dd('0x5')]({'type':_0x04dd('0x6'),'content':'','variableName':_0x04dd('0xc')});break;}}return _0x564938;};exports[_0x04dd('0xd')]=function(_0x9b68a0,_0x58da28){var _0x1cbbf1=[];switch(_0x9b68a0[_0x04dd('0x3')]()){case _0x04dd('0x2'):switch(_0x58da28['toLowerCase']()){case'inbound':_0x1cbbf1=[{'type':_0x04dd('0xa'),'content':_0x04dd('0xe'),'key':null,'keyType':null,'variableName':null},{'type':_0x04dd('0xf'),'content':'','key':_0x04dd('0x10'),'keyType':_0x04dd('0x6'),'variableName':_0x04dd('0x8')},{'type':'keyValue','content':'','key':'Caller\x20Name','keyType':_0x04dd('0x6'),'variableName':_0x04dd('0x11')},{'type':_0x04dd('0xf'),'content':'','key':_0x04dd('0x12'),'keyType':_0x04dd('0x6'),'variableName':_0x04dd('0x13')},{'type':'keyValue','content':'','key':_0x04dd('0x14'),'keyType':_0x04dd('0x6'),'variableName':_0x04dd('0x7')},{'type':'keyValue','content':'','key':_0x04dd('0x15'),'keyType':_0x04dd('0x6'),'variableName':_0x04dd('0x16')},{'type':_0x04dd('0xf'),'content':'','key':_0x04dd('0x17'),'keyType':'variable','variableName':_0x04dd('0x18')},{'type':'string','content':_0x04dd('0x19'),'key':null,'keyType':null,'variableName':null},{'type':_0x04dd('0xf'),'content':'','key':_0x04dd('0x1a'),'keyType':'variable','variableName':_0x04dd('0x1b')},{'type':_0x04dd('0xf'),'content':'','key':_0x04dd('0x1c'),'keyType':_0x04dd('0x6'),'variableName':_0x04dd('0xc')},{'type':_0x04dd('0xa'),'content':_0x04dd('0x1d'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x04dd('0x1e'),'keyType':'variable','variableName':'agentcalledAt'},{'type':_0x04dd('0xf'),'content':'','key':_0x04dd('0x1f'),'keyType':_0x04dd('0x6'),'variableName':_0x04dd('0x20')},{'type':_0x04dd('0xf'),'content':'','key':_0x04dd('0x21'),'keyType':_0x04dd('0x6'),'variableName':'agentcompleteAt'},{'type':'keyValue','content':'','key':_0x04dd('0x22'),'keyType':_0x04dd('0x6'),'variableName':'holdtime'},{'type':_0x04dd('0xf'),'content':'','key':_0x04dd('0x23'),'keyType':_0x04dd('0x6'),'variableName':_0x04dd('0x24')}];break;case'outbound':_0x1cbbf1=[{'type':_0x04dd('0xa'),'content':_0x04dd('0xe'),'variableName':null},{'type':_0x04dd('0xf'),'content':'','key':'Called\x20Number','keyType':'variable','keyContent':'','variableName':_0x04dd('0xc')},{'type':_0x04dd('0xf'),'content':'','key':'Member\x20Name','keyType':'variable','keyContent':'','variableName':_0x04dd('0x25')},{'type':_0x04dd('0xf'),'content':'','key':_0x04dd('0x15'),'keyType':_0x04dd('0x6'),'keyContent':'','variableName':_0x04dd('0x16')},{'type':_0x04dd('0xf'),'content':'','key':'Date','keyType':_0x04dd('0x6'),'keyContent':'','variableName':'starttime'},{'type':_0x04dd('0xa'),'content':_0x04dd('0x1d')},{'type':_0x04dd('0xf'),'content':'','key':_0x04dd('0x26'),'keyType':_0x04dd('0x6'),'keyContent':'','variableName':_0x04dd('0x27')},{'type':'keyValue','content':'','key':'Complete\x20Time','keyType':_0x04dd('0x6'),'keyContent':'','variableName':'endtime'},{'type':_0x04dd('0xf'),'content':'','key':_0x04dd('0x28'),'keyType':'variable','keyContent':'','variableName':_0x04dd('0x29')},{'type':_0x04dd('0xf'),'content':'','key':'Billable\x20Time','keyType':_0x04dd('0x6'),'keyContent':'','variableName':_0x04dd('0x2a')}];break;}}return _0x1cbbf1;};
\ No newline at end of file
index c24d4ac..7e0430f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e5e=['body','omit','html','phone','fax','mobile','../../mysqldb','../../config/logger','openchannel-interactions','chat-interactions','upperFirst','InteractionId','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','role','stringify','Interaction','findOne','update','then','error','tracked','user','clone'];(function(_0x5e58b2,_0x1b7ed4){var _0x4facd0=function(_0x58d136){while(--_0x58d136){_0x5e58b2['push'](_0x5e58b2['shift']());}};_0x4facd0(++_0x1b7ed4);}(_0x1e5e,0x180));var _0xe1e5=function(_0x2a9479,_0x394989){_0x2a9479=_0x2a9479-0x0;var _0x472b13=_0x1e5e[_0x2a9479];return _0x472b13;};'use strict';var _=require('lodash');var db=require(_0xe1e5('0x0'))['db'];var loggers={'openchannel':require(_0xe1e5('0x1'))(_0xe1e5('0x2')),'mail':require(_0xe1e5('0x1'))('mail-interactions'),'fax':require('../../config/logger')('fax-interactions'),'sms':require(_0xe1e5('0x1'))('sms-interactions'),'chat':require('../../config/logger')(_0xe1e5('0x3')),'whatsapp':require(_0xe1e5('0x1'))('whatsapp-interactions')};function getInteractionId(_0x24ace2,_0x44e35c,_0x24e191){if(_0x24ace2&&_0x24ace2[_['upperFirst'](_0x24e191)+'InteractionId']){return _0x24ace2[_[_0xe1e5('0x4')](_0x24e191)+_0xe1e5('0x5')];}else if(_0x24ace2&&_0x24ace2['id']){return _0x24ace2['id'];}else if(_0x44e35c&&_0x44e35c['id']){return _0x44e35c['id'];}else{return _0xe1e5('0x6');}}function log(_0x599265,_0x37f73c,_0x10d78f,_0x3338fa,_0x2fc983,_0x37f7e4){loggers[_0x2fc983[_0xe1e5('0x7')]()][_0x599265](_0xe1e5('0x8'),_0x37f7e4[_0xe1e5('0x9')](),_0x37f73c?_0x37f73c['id']:null,_0x37f73c?_0x37f73c[_0xe1e5('0xa')]:null,_0x37f73c?_0x37f73c[_0xe1e5('0xb')]:null,getInteractionId(_0x10d78f,_0x3338fa,_0x2fc983),_0x10d78f?JSON[_0xe1e5('0xc')](_0x10d78f):'null');}function updateUser(_0x29bc06,_0x4a07da,_0x53d7a0,_0x140993,_0x598547){db[_[_0xe1e5('0x4')](_0x140993)+_0xe1e5('0xd')][_0xe1e5('0xe')]({'where':{'id':getInteractionId(_0x4a07da,_0x53d7a0,_0x140993)}})['then'](function(_0x105883){if(_0x105883){return _0x105883[_0xe1e5('0xf')]({'UserId':_0x29bc06?_0x29bc06['id']:null});}})[_0xe1e5('0x10')](function(_0x54f910){if(_0x54f910){log('info',_0x29bc06,_0x4a07da,_0x53d7a0,_0x140993,_0x598547);}})['catch'](function(){log(_0xe1e5('0x11'),_0x29bc06,_0x4a07da,_0x53d7a0,_0x140993,_0x598547);});}exports[_0xe1e5('0x12')]=function(_0x5e5551,_0x417641){return function(_0x5752f2,_0x5c44ef,_0x585e9c){var _0x36fb04=_0x5752f2[_0xe1e5('0x13')];var _0x40e4e0={};var _0x4852cb=_0x5752f2['query'];if(_0x40e4e0){_0x40e4e0=_[_0xe1e5('0x14')](_0x5752f2[_0xe1e5('0x15')]);_0x40e4e0=_[_0xe1e5('0x16')](_0x40e4e0,['body',_0xe1e5('0x17'),_0xe1e5('0x18'),_0xe1e5('0x19'),_0xe1e5('0x1a')]);}updateUser(_0x36fb04,_0x40e4e0,_0x4852cb,_0x5e5551,_0x417641);_0x585e9c(null);};};
\ No newline at end of file
+var _0x0765=['whatsapp-interactions','InteractionId','upperFirst','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','role','stringify','null','findOne','then','update','info','catch','error','tracked','query','body','omit','html','phone','mobile','../../mysqldb','../../config/logger','mail-interactions','fax-interactions','chat-interactions'];(function(_0x460a6d,_0x1ecc47){var _0x17cfab=function(_0x3beddb){while(--_0x3beddb){_0x460a6d['push'](_0x460a6d['shift']());}};_0x17cfab(++_0x1ecc47);}(_0x0765,0xee));var _0x5076=function(_0x4337b7,_0x39089b){_0x4337b7=_0x4337b7-0x0;var _0x2cb03d=_0x0765[_0x4337b7];return _0x2cb03d;};'use strict';var _=require('lodash');var db=require(_0x5076('0x0'))['db'];var loggers={'openchannel':require('../../config/logger')('openchannel-interactions'),'mail':require(_0x5076('0x1'))(_0x5076('0x2')),'fax':require('../../config/logger')(_0x5076('0x3')),'sms':require(_0x5076('0x1'))('sms-interactions'),'chat':require(_0x5076('0x1'))(_0x5076('0x4')),'whatsapp':require(_0x5076('0x1'))(_0x5076('0x5'))};function getInteractionId(_0x26ea39,_0x5c1ddf,_0xb740e3){if(_0x26ea39&&_0x26ea39[_['upperFirst'](_0xb740e3)+_0x5076('0x6')]){return _0x26ea39[_[_0x5076('0x7')](_0xb740e3)+_0x5076('0x6')];}else if(_0x26ea39&&_0x26ea39['id']){return _0x26ea39['id'];}else if(_0x5c1ddf&&_0x5c1ddf['id']){return _0x5c1ddf['id'];}else{return'unknown';}}function log(_0xff93a1,_0x1a91f3,_0x38f482,_0x55790d,_0x46a0c4,_0x5a4977){loggers[_0x46a0c4[_0x5076('0x8')]()][_0xff93a1](_0x5076('0x9'),_0x5a4977[_0x5076('0xa')](),_0x1a91f3?_0x1a91f3['id']:null,_0x1a91f3?_0x1a91f3['name']:null,_0x1a91f3?_0x1a91f3[_0x5076('0xb')]:null,getInteractionId(_0x38f482,_0x55790d,_0x46a0c4),_0x38f482?JSON[_0x5076('0xc')](_0x38f482):_0x5076('0xd'));}function updateUser(_0x2ef025,_0x32d2fd,_0x3bed1c,_0x3759a0,_0x28d640){db[_[_0x5076('0x7')](_0x3759a0)+'Interaction'][_0x5076('0xe')]({'where':{'id':getInteractionId(_0x32d2fd,_0x3bed1c,_0x3759a0)}})[_0x5076('0xf')](function(_0x3799ae){if(_0x3799ae){return _0x3799ae[_0x5076('0x10')]({'UserId':_0x2ef025?_0x2ef025['id']:null});}})[_0x5076('0xf')](function(_0x31c9f8){if(_0x31c9f8){log(_0x5076('0x11'),_0x2ef025,_0x32d2fd,_0x3bed1c,_0x3759a0,_0x28d640);}})[_0x5076('0x12')](function(){log(_0x5076('0x13'),_0x2ef025,_0x32d2fd,_0x3bed1c,_0x3759a0,_0x28d640);});}exports[_0x5076('0x14')]=function(_0x44a91f,_0x43d185){return function(_0x1bc8f6,_0x575e18,_0x50e012){var _0x5aa5d5=_0x1bc8f6['user'];var _0xa83969={};var _0x40b0de=_0x1bc8f6[_0x5076('0x15')];if(_0xa83969){_0xa83969=_['clone'](_0x1bc8f6[_0x5076('0x16')]);_0xa83969=_[_0x5076('0x17')](_0xa83969,[_0x5076('0x16'),_0x5076('0x18'),_0x5076('0x19'),'fax',_0x5076('0x1a')]);}updateUser(_0x5aa5d5,_0xa83969,_0x40b0de,_0x44a91f,_0x43d185);_0x50e012(null);};};
\ No newline at end of file
index 47a7f0c..9cabd96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8645=['Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','User','admin','crypto','composable-middleware','../../config/environment','license','data1','split','createDecipher','format','%s:%s:%s','utf8','final','parse','hasOwnProperty','use','License','then','count','json'];(function(_0x1df9b8,_0x4784db){var _0x406c57=function(_0x30c5c8){while(--_0x30c5c8){_0x1df9b8['push'](_0x1df9b8['shift']());}};_0x406c57(++_0x4784db);}(_0x8645,0xca));var _0x5864=function(_0xad630f,_0x4cbc86){_0xad630f=_0xad630f-0x0;var _0x33cc9c=_0x8645[_0xad630f];return _0x33cc9c;};'use strict';var crypto=require(_0x5864('0x0'));var util=require('util');var compose=require(_0x5864('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0x5864('0x2'));function getValueFromLicense(_0x8a4f8e,_0x24df15){if(_0x8a4f8e&&_0x24df15){if(_0x24df15['data1']&&_0x24df15[_0x5864('0x3')]){var _0x3558ed=_0x24df15[_0x5864('0x4')];var _0x2d2bb3=_0x24df15[_0x5864('0x3')];var _0x16a1cb=_0x3558ed[_0x5864('0x5')]('-')[0x4];var _0x462dd2=_0x3558ed[_0x5864('0x5')]('-')[0x0];var _0x3e32d6=crypto[_0x5864('0x6')]('aes-256-ctr',util[_0x5864('0x7')](_0x5864('0x8'),_0x16a1cb,_0x3558ed,_0x462dd2));var _0x3be739=_0x3e32d6['update'](_0x2d2bb3,'base64',_0x5864('0x9'));_0x3be739+=_0x3e32d6[_0x5864('0xa')]('utf8');var _0x48945a=JSON[_0x5864('0xb')](_0x3be739);return _0x48945a[_0x5864('0xc')](_0x8a4f8e)?_0x48945a[_0x8a4f8e]:null;}}return null;}function isLimit(_0xd24c,_0x2bd672,_0x420c81,_0x40813e){var _0x449ac8=_0x2bd672;return compose()[_0x5864('0xd')](function(_0x38ffbc,_0x129a5d,_0x3887ef){return db[_0x5864('0xe')]['findOne']({'where':{'id':0x1},'raw':!![]})[_0x5864('0xf')](function(_0x197955){var _0x227a35=getValueFromLicense(_0xd24c,_0x197955);return _0x227a35?_0x227a35:_0x449ac8;})[_0x5864('0xf')](function(_0x192c02){_0x449ac8=_0x192c02;return _0x420c81[_0x5864('0x10')](_0x40813e);})[_0x5864('0xf')](function(_0x47cf25){if(_0x47cf25>=_0x449ac8){return _0x129a5d['status'](0x193)[_0x5864('0x11')]({'message':util['format'](_0x5864('0x12'),_0xd24c)});}_0x3887ef();})[_0x5864('0x13')](function(_0x26c882){_0x3887ef(_0x26c882);});});}function isUserLimit(){return isLimit('users',0x1,db[_0x5864('0x14')],{'where':{'$or':[{'role':_0x5864('0x15')},{'role':'user'}]}});}exports['isUserLimit']=isUserLimit;
\ No newline at end of file
+var _0x611e=['count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','User','admin','user','isUserLimit','util','composable-middleware','../../config/environment','license','data1','split','createDecipher','aes-256-ctr','format','update','base64','utf8','parse','hasOwnProperty','License','then'];(function(_0x3480cb,_0x1fd6bb){var _0x225801=function(_0x54b5ac){while(--_0x54b5ac){_0x3480cb['push'](_0x3480cb['shift']());}};_0x225801(++_0x1fd6bb);}(_0x611e,0x10e));var _0xe611=function(_0x56af18,_0x9380c2){_0x56af18=_0x56af18-0x0;var _0x4c38b6=_0x611e[_0x56af18];return _0x4c38b6;};'use strict';var crypto=require('crypto');var util=require(_0xe611('0x0'));var compose=require(_0xe611('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0xe611('0x2'));function getValueFromLicense(_0x51dc19,_0x5258b6){if(_0x51dc19&&_0x5258b6){if(_0x5258b6['data1']&&_0x5258b6[_0xe611('0x3')]){var _0x17da8b=_0x5258b6[_0xe611('0x4')];var _0x126e1c=_0x5258b6[_0xe611('0x3')];var _0x2830b0=_0x17da8b['split']('-')[0x4];var _0x573614=_0x17da8b[_0xe611('0x5')]('-')[0x0];var _0x391979=crypto[_0xe611('0x6')](_0xe611('0x7'),util[_0xe611('0x8')]('%s:%s:%s',_0x2830b0,_0x17da8b,_0x573614));var _0x32c300=_0x391979[_0xe611('0x9')](_0x126e1c,_0xe611('0xa'),_0xe611('0xb'));_0x32c300+=_0x391979['final'](_0xe611('0xb'));var _0x1d03c8=JSON[_0xe611('0xc')](_0x32c300);return _0x1d03c8[_0xe611('0xd')](_0x51dc19)?_0x1d03c8[_0x51dc19]:null;}}return null;}function isLimit(_0x4809d8,_0x1353f4,_0x3628d4,_0xd72f29){var _0x21905a=_0x1353f4;return compose()['use'](function(_0x27440d,_0x232df3,_0x1c8ae9){return db[_0xe611('0xe')]['findOne']({'where':{'id':0x1},'raw':!![]})[_0xe611('0xf')](function(_0x33fd40){var _0xa9bbab=getValueFromLicense(_0x4809d8,_0x33fd40);return _0xa9bbab?_0xa9bbab:_0x21905a;})[_0xe611('0xf')](function(_0x6f3506){_0x21905a=_0x6f3506;return _0x3628d4[_0xe611('0x10')](_0xd72f29);})[_0xe611('0xf')](function(_0x1857be){if(_0x1857be>=_0x21905a){return _0x232df3[_0xe611('0x11')](0x193)[_0xe611('0x12')]({'message':util[_0xe611('0x8')](_0xe611('0x13'),_0x4809d8)});}_0x1c8ae9();})[_0xe611('0x14')](function(_0x16153c){_0x1c8ae9(_0x16153c);});});}function isUserLimit(){return isLimit(_0xe611('0x15'),0x1,db[_0xe611('0x16')],{'where':{'$or':[{'role':_0xe611('0x17')},{'role':_0xe611('0x18')}]}});}exports[_0xe611('0x19')]=isUserLimit;
\ No newline at end of file
index 84a493d..c09d596 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf46d=['operator','$between','value','includes','$lte','add','days','YYYY-MM-DD','castTo','text','field','\x20AS\x20','$ne','\x20OR\x20','$in','IN\x20?','$notIn','<>\x20?','$endsWith','LIKE\x20?','$lt','<\x20?','$gt','>\x20?','<=\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','$substring','start','$startsWith','utcOffset','hours','minutes','seconds','lodash','moment','parseSearch','sqlOperator','startsWith','[$or]','[$and]','replace','length','split','forEach','shift','match','indexOf','map','conditions','push','buildExpression','DATE'];(function(_0xa265d1,_0x40e28c){var _0x30e351=function(_0x5b4886){while(--_0x5b4886){_0xa265d1['push'](_0xa265d1['shift']());}};_0x30e351(++_0x40e28c);}(_0xf46d,0x167));var _0xdf46=function(_0x4a82ac,_0x1fb931){_0x4a82ac=_0x4a82ac-0x0;var _0x58ee97=_0xf46d[_0x4a82ac];return _0x58ee97;};'use strict';var _=require(_0xdf46('0x0'));var moment=require(_0xdf46('0x1'));exports[_0xdf46('0x2')]=function(_0xe53895){var _0x13b18e={'conditions':[]};_0x13b18e[_0xdf46('0x3')]=_[_0xdf46('0x4')](_0xe53895,_0xdf46('0x5'))?'or':'and';var _0x1bd718=_0xe53895['replace'](_0xdf46('0x6'),'')[_0xdf46('0x7')](_0xdf46('0x5'),'')['split']('||');for(var _0x4abe35=0x0;_0x4abe35<_0x1bd718[_0xdf46('0x8')];_0x4abe35++){var _0x41deee=_0x1bd718[_0x4abe35][_0xdf46('0x9')](':=');var _0x5e10c1=_0x41deee[0x0];var _0x5628ce=_0x41deee['slice'](0x1);_0x5628ce[_0xdf46('0xa')](function(_0xad7ca2){var _0x3b82b9=_0xad7ca2[_0xdf46('0x9')]('[')[_0xdf46('0xb')]();var _0x4464c9=_0xad7ca2[_0xdf46('0xc')](/\[(.*?)\]/g);_0x4464c9[_0xdf46('0xa')](function(_0x119096){var _0x4f9d38=_0x119096[_0xdf46('0x9')]('[')['filter'](function(_0x2fa898){return _0x2fa898[_0xdf46('0xd')](']')>-0x1;})[_0xdf46('0xe')](function(_0x23eb28){return _0x23eb28[_0xdf46('0x9')](']')[0x0];})[0x0];_0x13b18e[_0xdf46('0xf')][_0xdf46('0x10')]({'field':_0x5e10c1,'operator':_0x3b82b9,'value':_0x4f9d38});});});}return _0x13b18e;};exports[_0xdf46('0x11')]=function(_0x2b651a,_0x2521cc,_0xb6870c){var _0x513184={};if(_0x2521cc===_0xdf46('0x12')){if(_0xb6870c[_0xdf46('0x13')]==='$eq'){_0xb6870c['operator']=_0xdf46('0x14');_0xb6870c[_0xdf46('0x15')]+=','+_0xb6870c[_0xdf46('0x15')];}else if(_[_0xdf46('0x16')](['$gt',_0xdf46('0x17')],_0xb6870c[_0xdf46('0x13')])){_0xb6870c[_0xdf46('0x15')]=moment(_0xb6870c[_0xdf46('0x15')])[_0xdf46('0x18')](0x1,_0xdf46('0x19'))['format'](_0xdf46('0x1a'));}}if(_0xb6870c['castTo']){_0x2521cc=_0xb6870c[_0xdf46('0x1b')];_0x513184[_0xdf46('0x1c')]='CAST('+_0x2b651a+'.'+_0xb6870c[_0xdf46('0x1d')]+_0xdf46('0x1e')+_0xb6870c[_0xdf46('0x1b')]+')\x20'+parseOperator(_0xb6870c['operator']);}else{_0x513184[_0xdf46('0x1c')]=_0x2b651a+'.'+_0xb6870c['field']+'\x20'+parseOperator(_0xb6870c['operator']);}if(_[_0xdf46('0x16')]([_0xdf46('0x1f'),'$notIn'],_0xb6870c[_0xdf46('0x13')]))_0x513184['text']='('+_0x513184[_0xdf46('0x1c')]+_0xdf46('0x20')+_0x2b651a+'.'+_0xb6870c[_0xdf46('0x1d')]+'\x20IS\x20NULL)';_0x513184['value']=parseValue(_0x2521cc,_0xb6870c[_0xdf46('0x13')],_0xb6870c['value']);return _0x513184;};function parseOperator(_0x477aac){var _0x423f13;switch(_0x477aac){case _0xdf46('0x21'):_0x423f13=_0xdf46('0x22');break;case _0xdf46('0x23'):_0x423f13='NOT\x20IN\x20?';break;case'$eq':_0x423f13='=\x20?';break;case _0xdf46('0x1f'):_0x423f13=_0xdf46('0x24');break;case'$substring':case'$startsWith':case _0xdf46('0x25'):_0x423f13=_0xdf46('0x26');break;case _0xdf46('0x27'):_0x423f13=_0xdf46('0x28');break;case _0xdf46('0x29'):_0x423f13=_0xdf46('0x2a');break;case _0xdf46('0x17'):_0x423f13=_0xdf46('0x2b');break;case _0xdf46('0x2c'):_0x423f13=_0xdf46('0x2d');break;case'$between':_0x423f13=_0xdf46('0x2e');break;}return _0x423f13;}function parseValue(_0x4305ac,_0x18cdda,_0x2aadfe){var _0x4117f8={'start':undefined,'end':undefined};switch(_0x18cdda){case _0xdf46('0x21'):case'$notIn':_0x4117f8['start']=_0x2aadfe[_0xdf46('0x9')](',');break;case _0xdf46('0x2f'):_0x4117f8[_0xdf46('0x30')]='%'+_0x2aadfe+'%';break;case _0xdf46('0x31'):_0x4117f8[_0xdf46('0x30')]=_0x2aadfe+'%';break;case'$endsWith':_0x4117f8['start']='%'+_0x2aadfe;break;case'$between':var _0x5c3aba=_0x2aadfe[_0xdf46('0x9')](',');var _0x2aadfe=_0x5c3aba[_0xdf46('0xb')]();var _0x2462c8=_0x5c3aba['pop']();if(_0x4305ac==='DATE'){_0x2aadfe=moment(_0x2aadfe)[_0xdf46('0x32')](0x0,!![])['format']();_0x2462c8=moment(_0x2462c8)[_0xdf46('0x32')](0x0,!![])[_0xdf46('0x18')](0x17,_0xdf46('0x33'))[_0xdf46('0x18')](0x3b,_0xdf46('0x34'))[_0xdf46('0x18')](0x3b,_0xdf46('0x35'))['format']();}_0x4117f8={'start':_0x2aadfe,'end':_0x2462c8};break;default:_0x4117f8['start']=_0x2aadfe;break;}return _0x4117f8;}
\ No newline at end of file
+var _0x363d=['indexOf','map','conditions','push','buildExpression','DATE','operator','$eq','$between','value','includes','$gt','add','format','castTo','text','CAST(','field','\x20AS\x20','$notIn','\x20OR\x20','\x20IS\x20NULL)','NOT\x20IN\x20?','=\x20?','$ne','<>\x20?','$substring','$endsWith','LIKE\x20?','<\x20?','<=\x20?','$gte','>=\x20?','$in','start','$startsWith','pop','utcOffset','hours','minutes','seconds','lodash','moment','parseSearch','sqlOperator','and','replace','[$and]','[$or]','split','length','slice','forEach','shift','match','filter'];(function(_0x1458e8,_0x33fa31){var _0x230cfc=function(_0xcc5c6e){while(--_0xcc5c6e){_0x1458e8['push'](_0x1458e8['shift']());}};_0x230cfc(++_0x33fa31);}(_0x363d,0x141));var _0xd363=function(_0x4cee4b,_0x1dfff3){_0x4cee4b=_0x4cee4b-0x0;var _0x4d891d=_0x363d[_0x4cee4b];return _0x4d891d;};'use strict';var _=require(_0xd363('0x0'));var moment=require(_0xd363('0x1'));exports[_0xd363('0x2')]=function(_0x2e8eef){var _0x1fdb44={'conditions':[]};_0x1fdb44[_0xd363('0x3')]=_['startsWith'](_0x2e8eef,'[$or]')?'or':_0xd363('0x4');var _0x343c77=_0x2e8eef[_0xd363('0x5')](_0xd363('0x6'),'')['replace'](_0xd363('0x7'),'')[_0xd363('0x8')]('||');for(var _0x27fae3=0x0;_0x27fae3<_0x343c77[_0xd363('0x9')];_0x27fae3++){var _0x1a19a4=_0x343c77[_0x27fae3]['split'](':=');var _0x203042=_0x1a19a4[0x0];var _0x12784a=_0x1a19a4[_0xd363('0xa')](0x1);_0x12784a[_0xd363('0xb')](function(_0x408574){var _0x331052=_0x408574['split']('[')[_0xd363('0xc')]();var _0x3ab56e=_0x408574[_0xd363('0xd')](/\[(.*?)\]/g);_0x3ab56e['forEach'](function(_0x456c5d){var _0x31344e=_0x456c5d['split']('[')[_0xd363('0xe')](function(_0x30dd36){return _0x30dd36[_0xd363('0xf')](']')>-0x1;})[_0xd363('0x10')](function(_0x35c602){return _0x35c602[_0xd363('0x8')](']')[0x0];})[0x0];_0x1fdb44[_0xd363('0x11')][_0xd363('0x12')]({'field':_0x203042,'operator':_0x331052,'value':_0x31344e});});});}return _0x1fdb44;};exports[_0xd363('0x13')]=function(_0x444529,_0x22e9a9,_0x5ac54b){var _0x10b76b={};if(_0x22e9a9===_0xd363('0x14')){if(_0x5ac54b[_0xd363('0x15')]===_0xd363('0x16')){_0x5ac54b[_0xd363('0x15')]=_0xd363('0x17');_0x5ac54b['value']+=','+_0x5ac54b[_0xd363('0x18')];}else if(_[_0xd363('0x19')]([_0xd363('0x1a'),'$lte'],_0x5ac54b['operator'])){_0x5ac54b[_0xd363('0x18')]=moment(_0x5ac54b[_0xd363('0x18')])[_0xd363('0x1b')](0x1,'days')[_0xd363('0x1c')]('YYYY-MM-DD');}}if(_0x5ac54b[_0xd363('0x1d')]){_0x22e9a9=_0x5ac54b['castTo'];_0x10b76b[_0xd363('0x1e')]=_0xd363('0x1f')+_0x444529+'.'+_0x5ac54b[_0xd363('0x20')]+_0xd363('0x21')+_0x5ac54b[_0xd363('0x1d')]+')\x20'+parseOperator(_0x5ac54b[_0xd363('0x15')]);}else{_0x10b76b[_0xd363('0x1e')]=_0x444529+'.'+_0x5ac54b[_0xd363('0x20')]+'\x20'+parseOperator(_0x5ac54b[_0xd363('0x15')]);}if(_[_0xd363('0x19')](['$ne',_0xd363('0x22')],_0x5ac54b[_0xd363('0x15')]))_0x10b76b[_0xd363('0x1e')]='('+_0x10b76b[_0xd363('0x1e')]+_0xd363('0x23')+_0x444529+'.'+_0x5ac54b[_0xd363('0x20')]+_0xd363('0x24');_0x10b76b[_0xd363('0x18')]=parseValue(_0x22e9a9,_0x5ac54b[_0xd363('0x15')],_0x5ac54b[_0xd363('0x18')]);return _0x10b76b;};function parseOperator(_0x17ca51){var _0xe8e521;switch(_0x17ca51){case'$in':_0xe8e521='IN\x20?';break;case'$notIn':_0xe8e521=_0xd363('0x25');break;case _0xd363('0x16'):_0xe8e521=_0xd363('0x26');break;case _0xd363('0x27'):_0xe8e521=_0xd363('0x28');break;case _0xd363('0x29'):case'$startsWith':case _0xd363('0x2a'):_0xe8e521=_0xd363('0x2b');break;case'$lt':_0xe8e521=_0xd363('0x2c');break;case _0xd363('0x1a'):_0xe8e521='>\x20?';break;case'$lte':_0xe8e521=_0xd363('0x2d');break;case _0xd363('0x2e'):_0xe8e521=_0xd363('0x2f');break;case _0xd363('0x17'):_0xe8e521='BETWEEN\x20?\x20AND\x20?';break;}return _0xe8e521;}function parseValue(_0x5da69,_0x3a526,_0xeb53d9){var _0x1099c4={'start':undefined,'end':undefined};switch(_0x3a526){case _0xd363('0x30'):case _0xd363('0x22'):_0x1099c4[_0xd363('0x31')]=_0xeb53d9[_0xd363('0x8')](',');break;case _0xd363('0x29'):_0x1099c4['start']='%'+_0xeb53d9+'%';break;case _0xd363('0x32'):_0x1099c4['start']=_0xeb53d9+'%';break;case _0xd363('0x2a'):_0x1099c4[_0xd363('0x31')]='%'+_0xeb53d9;break;case'$between':var _0x5b11ae=_0xeb53d9['split'](',');var _0xeb53d9=_0x5b11ae[_0xd363('0xc')]();var _0x1ecd5d=_0x5b11ae[_0xd363('0x33')]();if(_0x5da69==='DATE'){_0xeb53d9=moment(_0xeb53d9)[_0xd363('0x34')](0x0,!![])[_0xd363('0x1c')]();_0x1ecd5d=moment(_0x1ecd5d)[_0xd363('0x34')](0x0,!![])['add'](0x17,_0xd363('0x35'))[_0xd363('0x1b')](0x3b,_0xd363('0x36'))['add'](0x3b,_0xd363('0x37'))['format']();}_0x1099c4={'start':_0xeb53d9,'end':_0x1ecd5d};break;default:_0x1099c4['start']=_0xeb53d9;break;}return _0x1099c4;}
\ No newline at end of file
index d21356c..cb0b22a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5334=['value','merge','lower','options','lodash','sequelize','moment','parse','keys','includes','fields','split','filters','isEmpty','forOwn','find','DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','$lte','subtract','name','uniqueid','isArray','sort','map','indexOf','priority','cast','col','unsigned','substr','DESC','omit','length','isObject','isString','hasOwnProperty','isNumeric','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','push','getOptions','query','$id','model','intersection','attributes','nolimit','limit','offset','order','where','pick','filter','object','columns'];(function(_0x2a2f6e,_0x31f544){var _0x40e82f=function(_0x5ae273){while(--_0x5ae273){_0x2a2f6e['push'](_0x2a2f6e['shift']());}};_0x40e82f(++_0x31f544);}(_0x5334,0x84));var _0x4533=function(_0x4749b5,_0x3033aa){_0x4749b5=_0x4749b5-0x0;var _0x1ef30a=_0x5334[_0x4749b5];return _0x1ef30a;};'use strict';var _=require(_0x4533('0x0'));var sequelize=require(_0x4533('0x1'));var moment=require(_0x4533('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x35fb80){var _0x39af56=['ne'];try{var _0x52b768=JSON[_0x4533('0x3')](_0x35fb80);var _0x5176b5=Object[_0x4533('0x4')](_0x52b768)[0x0];return _0x39af56[_0x4533('0x5')](_0x5176b5);}catch(_0x5cbca4){return![];}}function getOperatorValue(_0x4a576a){var _0x51b4ce=JSON[_0x4533('0x3')](_0x4a576a);var _0x4dea06=Object['keys'](_0x51b4ce)[0x0];var _0x487906=_0x51b4ce[_0x4dea06];return{['$'+_0x4dea06]:_0x487906};}exports[_0x4533('0x6')]=function(_0x42f94b){var _0x300877=null;if(_0x42f94b){_0x300877=_0x42f94b[_0x4533('0x7')](',');}return _0x300877;};exports[_0x4533('0x8')]=function(_0x21b22f,_0xd417){var _0x4fdbda={};if(!_[_0x4533('0x9')](_0x21b22f)){_[_0x4533('0xa')](_0x21b22f,function(_0x1b52ee,_0x12131a){try{if(_0xd417){var _0x5465bf=_[_0x4533('0xb')](_0xd417,{'name':_0x12131a})||{};if(hasSequelizeOperator(_0x1b52ee)){_0x4fdbda[_0x12131a]=getOperatorValue(_0x1b52ee);}else if(_0x5465bf['type']===_0x4533('0xc')&&_[_0x4533('0xd')](_0x1b52ee)){var _0x45ba67=JSON[_0x4533('0x3')](_0x1b52ee);var _0x57ff74={'$gte':moment(moment(_0x45ba67[_0x4533('0xe')])[_0x4533('0xf')](_0x4533('0x10')))[_0x4533('0x11')]()['format'](),'$lte':moment(moment(_0x45ba67[_0x4533('0x12')])['format']('YYYY-MM-DD'))[_0x4533('0x11')]()[_0x4533('0x13')](0x1,'s')['format']()};_0x4fdbda[_0x12131a]=_0x57ff74;}else if(_0x5465bf[_0x4533('0x14')]===_0x4533('0x15')){_0x4fdbda[_0x12131a]=_0x1b52ee;}else{_0x4fdbda[_0x12131a]=_[_0x4533('0x16')](_0x1b52ee)?_0x1b52ee:JSON['parse'](_0x1b52ee);}}else{_0x4fdbda[_0x12131a]=_[_0x4533('0x16')](_0x1b52ee)?_0x1b52ee:JSON['parse'](_0x1b52ee);}}catch(_0x3ddb36){_0x4fdbda[_0x12131a]=_0x1b52ee[_0x4533('0x7')](',');}});}return _0x4fdbda;};exports['limit']=function(_0xd10c6a){_0xd10c6a=parseInt(_0xd10c6a,0xa);if(!_0xd10c6a||_0xd10c6a<0x0){_0xd10c6a=LIMIT_VALUE;}return _0xd10c6a;};exports['offset']=function(_0x5c2c9c){_0x5c2c9c=parseInt(_0x5c2c9c,0xa);if(!_0x5c2c9c||_0x5c2c9c<0x0){_0x5c2c9c=0x0;}return _0x5c2c9c;};exports[_0x4533('0x17')]=function(_0x9740a6){var _0x49fb91,_0x53fe43=null;if(_0x9740a6){_0x49fb91=_0x9740a6[_0x4533('0x7')](',');_0x53fe43=_[_0x4533('0x18')](_0x49fb91,function(_0x3467ba){if(_0x3467ba[_0x4533('0x19')]('-')===0x0){return[_0x3467ba===_0x4533('0x1a')?sequelize[_0x4533('0x1b')](sequelize[_0x4533('0x1c')]('priority'),_0x4533('0x1d')):_0x3467ba[_0x4533('0x1e')](0x1),_0x4533('0x1f')];}else{return[_0x3467ba==='priority'?sequelize['cast'](sequelize[_0x4533('0x1c')](_0x4533('0x1a')),'unsigned'):_0x3467ba,'ASC'];}});}return _0x53fe43;};exports[_0x4533('0x20')]=function(_0x1fa8be,_0xfd9409){if(_['isEmpty'](_0x1fa8be)){return _0x1fa8be;}if(_[_0x4533('0x16')](_0x1fa8be)){for(var _0x39b261=0x0;_0x39b261<_0x1fa8be[_0x4533('0x21')];_0x39b261+=0x1){_0x1fa8be[_0x39b261]=this[_0x4533('0x20')](_0x1fa8be[_0x39b261],_0xfd9409);}return _0x1fa8be;}if(!_[_0x4533('0x22')](_0x1fa8be)){return _0x1fa8be;}if(_[_0x4533('0x23')](_0xfd9409)){_0xfd9409=[_0xfd9409];}if(!_[_0x4533('0x16')](_0xfd9409)){return _0x1fa8be;}for(var _0x27b653=0x0;_0x27b653<_0xfd9409[_0x4533('0x21')];_0x27b653+=0x1){_['unset'](_0x1fa8be,_0xfd9409[_0x27b653]);}for(var _0x5c1e24 in _0x1fa8be){if(_0x1fa8be[_0x4533('0x24')](_0x5c1e24)){_0x1fa8be[_0x5c1e24]=this['omit'](_0x1fa8be[_0x5c1e24],_0xfd9409);}}return _0x1fa8be;};exports[_0x4533('0x25')]=function(_0x4e2b80){return _0x4e2b80[_0x4533('0x26')](RegExp(_0x4533('0x27')))?!![]:![];};exports[_0x4533('0x28')]=function(_0x4300c1){return _0x4300c1[_0x4533('0x26')](/^\S+@\S+$/)?!![]:![];};exports[_0x4533('0x29')]=function(_0xe584a2){var _0xa58dd1=[];_0xe584a2[_0x4533('0x7')](/[ ,]+/)[_0x4533('0x2a')](function(_0x728791){_0x728791=_0x728791[_0x4533('0x2b')](/([^:]")"+/g,'$1');_0x728791='+'+_0x728791+'*';var _0x7fc887=/[ `!@#$%^&*()_\-?~]/;if(_0x728791['match'](_0x7fc887))_0x728791='\x22'+_0x728791+'\x22';_0xa58dd1[_0x4533('0x2c')](_0x728791);});return _0xa58dd1['join']('\x20');};exports[_0x4533('0x2d')]=function(_0x3f7720,_0xb7f0b1,_0x3b89f0){var _0x24acf5={},_0x6d58aa={};if(_0xb7f0b1[_0x4533('0x2e')][_0x4533('0x2f')]){_0xb7f0b1[_0x4533('0x2e')]['id']=_0xb7f0b1[_0x4533('0x2e')][_0x4533('0x2f')];delete _0xb7f0b1[_0x4533('0x2e')]['$id'];}_0x24acf5[_0x4533('0x30')]=_[_0x4533('0x18')](_0x3f7720,_0x4533('0x14'));_0x24acf5[_0x4533('0x2e')]=_[_0x4533('0x4')](_0xb7f0b1['query']);_0x24acf5[_0x4533('0x8')]=_[_0x4533('0x31')](_0x24acf5[_0x4533('0x30')],_0x24acf5[_0x4533('0x2e')]);_0x6d58aa[_0x4533('0x32')]=_[_0x4533('0x31')](_0x24acf5['model'],this[_0x4533('0x6')](_0xb7f0b1[_0x4533('0x2e')]['fields']));_0x6d58aa[_0x4533('0x32')]=_0x6d58aa[_0x4533('0x32')][_0x4533('0x21')]?_0x6d58aa[_0x4533('0x32')]:_0x24acf5[_0x4533('0x30')];if(!_0xb7f0b1[_0x4533('0x2e')][_0x4533('0x24')](_0x4533('0x33'))){_0x6d58aa[_0x4533('0x34')]=this[_0x4533('0x34')](_0xb7f0b1['query'][_0x4533('0x34')]);_0x6d58aa[_0x4533('0x35')]=this[_0x4533('0x35')](_0xb7f0b1[_0x4533('0x2e')][_0x4533('0x35')]);}_0x6d58aa[_0x4533('0x36')]=this[_0x4533('0x17')](_0xb7f0b1[_0x4533('0x2e')][_0x4533('0x17')]);_0x6d58aa[_0x4533('0x37')]=this[_0x4533('0x8')](_[_0x4533('0x38')](_0xb7f0b1['query'],_0x24acf5['filters']),_0x3f7720);if(_0xb7f0b1[_0x4533('0x2e')]['filter']){var _0x4260e6=_0x3f7720;var _0x97aa9e=_0xb7f0b1[_0x4533('0x2e')][_0x4533('0x39')];if(typeof _0x97aa9e===_0x4533('0x3a')){_0x4260e6=_[_0x4533('0x39')](_0x3f7720,function(_0x2df795){return _[_0x4533('0x5')](_0x97aa9e[_0x4533('0x3b')],_0x2df795[_0x4533('0x14')]);});_0x97aa9e=_0x97aa9e[_0x4533('0x3c')];}_0x6d58aa[_0x4533('0x37')]=_[_0x4533('0x3d')](_0x6d58aa['where'],{'$or':_[_0x4533('0x18')](_0x4260e6,function(_0x556dd9){if(_0x556dd9['type']!=='VIRTUAL'){if(_0x3b89f0){return sequelize['where'](sequelize['fn'](_0x4533('0x3e'),sequelize[_0x4533('0x1c')](_0x556dd9[_0x4533('0x14')])),{'$like':sequelize['fn'](_0x4533('0x3e'),'%'+_0xb7f0b1['query'][_0x4533('0x39')]+'%')});}else{var _0x369284={};_0x369284[_0x556dd9[_0x4533('0x14')]]={'$like':'%'+_0xb7f0b1[_0x4533('0x2e')][_0x4533('0x39')]+'%'};return _0x369284;}}})});}_0x6d58aa=_[_0x4533('0x3d')]({},_0x6d58aa,_0xb7f0b1[_0x4533('0x3f')]);return _0x6d58aa;};
\ No newline at end of file
+var _0xf494=['DATE','isPlainObject','$gte','format','YYYY-MM-DD','utc','name','uniqueid','isArray','sort','map','indexOf','priority','col','unsigned','DESC','cast','length','isObject','isString','unset','omit','isNumeric','^[+]?[0-9]*$','isEmail','replace','match','push','join','getOptions','query','$id','intersection','model','attributes','hasOwnProperty','nolimit','limit','offset','where','pick','filter','object','columns','value','type','lower','options','lodash','sequelize','moment','parse','keys','includes','fields','split','filters','forOwn'];(function(_0x31009c,_0x2500ef){var _0x4df9e7=function(_0x102bfa){while(--_0x102bfa){_0x31009c['push'](_0x31009c['shift']());}};_0x4df9e7(++_0x2500ef);}(_0xf494,0x1c6));var _0x4f49=function(_0x5ec893,_0x55a18b){_0x5ec893=_0x5ec893-0x0;var _0x4497e5=_0xf494[_0x5ec893];return _0x4497e5;};'use strict';var _=require(_0x4f49('0x0'));var sequelize=require(_0x4f49('0x1'));var moment=require(_0x4f49('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x52d22c){var _0x3aeeb8=['ne'];try{var _0x1d54cc=JSON[_0x4f49('0x3')](_0x52d22c);var _0x25677c=Object[_0x4f49('0x4')](_0x1d54cc)[0x0];return _0x3aeeb8[_0x4f49('0x5')](_0x25677c);}catch(_0x3267c1){return![];}}function getOperatorValue(_0x790e8b){var _0xc5e778=JSON[_0x4f49('0x3')](_0x790e8b);var _0x42b0e8=Object['keys'](_0xc5e778)[0x0];var _0x58e9a0=_0xc5e778[_0x42b0e8];return{['$'+_0x42b0e8]:_0x58e9a0};}exports[_0x4f49('0x6')]=function(_0x327bd5){var _0x31a725=null;if(_0x327bd5){_0x31a725=_0x327bd5[_0x4f49('0x7')](',');}return _0x31a725;};exports[_0x4f49('0x8')]=function(_0x174d0d,_0x151d8c){var _0x410884={};if(!_['isEmpty'](_0x174d0d)){_[_0x4f49('0x9')](_0x174d0d,function(_0x411759,_0x5bcfe5){try{if(_0x151d8c){var _0x15e7a1=_['find'](_0x151d8c,{'name':_0x5bcfe5})||{};if(hasSequelizeOperator(_0x411759)){_0x410884[_0x5bcfe5]=getOperatorValue(_0x411759);}else if(_0x15e7a1['type']===_0x4f49('0xa')&&_[_0x4f49('0xb')](_0x411759)){var _0x4bf89f=JSON[_0x4f49('0x3')](_0x411759);var _0x111a8b={'$gte':moment(moment(_0x4bf89f[_0x4f49('0xc')])[_0x4f49('0xd')](_0x4f49('0xe')))[_0x4f49('0xf')]()[_0x4f49('0xd')](),'$lte':moment(moment(_0x4bf89f['$lte'])[_0x4f49('0xd')](_0x4f49('0xe')))[_0x4f49('0xf')]()['subtract'](0x1,'s')['format']()};_0x410884[_0x5bcfe5]=_0x111a8b;}else if(_0x15e7a1[_0x4f49('0x10')]===_0x4f49('0x11')){_0x410884[_0x5bcfe5]=_0x411759;}else{_0x410884[_0x5bcfe5]=_[_0x4f49('0x12')](_0x411759)?_0x411759:JSON['parse'](_0x411759);}}else{_0x410884[_0x5bcfe5]=_[_0x4f49('0x12')](_0x411759)?_0x411759:JSON[_0x4f49('0x3')](_0x411759);}}catch(_0x4e85df){_0x410884[_0x5bcfe5]=_0x411759['split'](',');}});}return _0x410884;};exports['limit']=function(_0x560592){_0x560592=parseInt(_0x560592,0xa);if(!_0x560592||_0x560592<0x0){_0x560592=LIMIT_VALUE;}return _0x560592;};exports['offset']=function(_0xb2081a){_0xb2081a=parseInt(_0xb2081a,0xa);if(!_0xb2081a||_0xb2081a<0x0){_0xb2081a=0x0;}return _0xb2081a;};exports[_0x4f49('0x13')]=function(_0x1c2d70){var _0x407042,_0x5793ac=null;if(_0x1c2d70){_0x407042=_0x1c2d70[_0x4f49('0x7')](',');_0x5793ac=_[_0x4f49('0x14')](_0x407042,function(_0x197a49){if(_0x197a49[_0x4f49('0x15')]('-')===0x0){return[_0x197a49===_0x4f49('0x16')?sequelize['cast'](sequelize[_0x4f49('0x17')](_0x4f49('0x16')),_0x4f49('0x18')):_0x197a49['substr'](0x1),_0x4f49('0x19')];}else{return[_0x197a49===_0x4f49('0x16')?sequelize[_0x4f49('0x1a')](sequelize[_0x4f49('0x17')](_0x4f49('0x16')),_0x4f49('0x18')):_0x197a49,'ASC'];}});}return _0x5793ac;};exports['omit']=function(_0x3a947b,_0x429de7){if(_['isEmpty'](_0x3a947b)){return _0x3a947b;}if(_[_0x4f49('0x12')](_0x3a947b)){for(var _0x2c1519=0x0;_0x2c1519<_0x3a947b[_0x4f49('0x1b')];_0x2c1519+=0x1){_0x3a947b[_0x2c1519]=this['omit'](_0x3a947b[_0x2c1519],_0x429de7);}return _0x3a947b;}if(!_[_0x4f49('0x1c')](_0x3a947b)){return _0x3a947b;}if(_[_0x4f49('0x1d')](_0x429de7)){_0x429de7=[_0x429de7];}if(!_[_0x4f49('0x12')](_0x429de7)){return _0x3a947b;}for(var _0x148153=0x0;_0x148153<_0x429de7[_0x4f49('0x1b')];_0x148153+=0x1){_[_0x4f49('0x1e')](_0x3a947b,_0x429de7[_0x148153]);}for(var _0x4915af in _0x3a947b){if(_0x3a947b['hasOwnProperty'](_0x4915af)){_0x3a947b[_0x4915af]=this[_0x4f49('0x1f')](_0x3a947b[_0x4915af],_0x429de7);}}return _0x3a947b;};exports[_0x4f49('0x20')]=function(_0x605c91){return _0x605c91['match'](RegExp(_0x4f49('0x21')))?!![]:![];};exports[_0x4f49('0x22')]=function(_0x43d8e3){return _0x43d8e3['match'](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x3e207f){var _0x27d004=[];_0x3e207f[_0x4f49('0x7')](/[ ,]+/)['forEach'](function(_0x1eaac6){_0x1eaac6=_0x1eaac6[_0x4f49('0x23')](/([^:]")"+/g,'$1');_0x1eaac6='+'+_0x1eaac6+'*';var _0x173657=/[ `!@#$%^&*()_\-?~]/;if(_0x1eaac6[_0x4f49('0x24')](_0x173657))_0x1eaac6='\x22'+_0x1eaac6+'\x22';_0x27d004[_0x4f49('0x25')](_0x1eaac6);});return _0x27d004[_0x4f49('0x26')]('\x20');};exports[_0x4f49('0x27')]=function(_0x45ae19,_0x1f38d3,_0x310ee2){var _0x2291d4={},_0xf65ac6={};if(_0x1f38d3[_0x4f49('0x28')][_0x4f49('0x29')]){_0x1f38d3[_0x4f49('0x28')]['id']=_0x1f38d3[_0x4f49('0x28')][_0x4f49('0x29')];delete _0x1f38d3[_0x4f49('0x28')][_0x4f49('0x29')];}_0x2291d4['model']=_[_0x4f49('0x14')](_0x45ae19,_0x4f49('0x10'));_0x2291d4[_0x4f49('0x28')]=_[_0x4f49('0x4')](_0x1f38d3[_0x4f49('0x28')]);_0x2291d4[_0x4f49('0x8')]=_[_0x4f49('0x2a')](_0x2291d4[_0x4f49('0x2b')],_0x2291d4[_0x4f49('0x28')]);_0xf65ac6[_0x4f49('0x2c')]=_[_0x4f49('0x2a')](_0x2291d4[_0x4f49('0x2b')],this[_0x4f49('0x6')](_0x1f38d3['query'][_0x4f49('0x6')]));_0xf65ac6[_0x4f49('0x2c')]=_0xf65ac6[_0x4f49('0x2c')][_0x4f49('0x1b')]?_0xf65ac6[_0x4f49('0x2c')]:_0x2291d4[_0x4f49('0x2b')];if(!_0x1f38d3[_0x4f49('0x28')][_0x4f49('0x2d')](_0x4f49('0x2e'))){_0xf65ac6[_0x4f49('0x2f')]=this[_0x4f49('0x2f')](_0x1f38d3[_0x4f49('0x28')][_0x4f49('0x2f')]);_0xf65ac6[_0x4f49('0x30')]=this['offset'](_0x1f38d3[_0x4f49('0x28')][_0x4f49('0x30')]);}_0xf65ac6['order']=this[_0x4f49('0x13')](_0x1f38d3[_0x4f49('0x28')]['sort']);_0xf65ac6[_0x4f49('0x31')]=this[_0x4f49('0x8')](_[_0x4f49('0x32')](_0x1f38d3[_0x4f49('0x28')],_0x2291d4[_0x4f49('0x8')]),_0x45ae19);if(_0x1f38d3[_0x4f49('0x28')][_0x4f49('0x33')]){var _0x5d464e=_0x45ae19;var _0x5e1461=_0x1f38d3['query'][_0x4f49('0x33')];if(typeof _0x5e1461===_0x4f49('0x34')){_0x5d464e=_[_0x4f49('0x33')](_0x45ae19,function(_0x373f90){return _[_0x4f49('0x5')](_0x5e1461[_0x4f49('0x35')],_0x373f90[_0x4f49('0x10')]);});_0x5e1461=_0x5e1461[_0x4f49('0x36')];}_0xf65ac6[_0x4f49('0x31')]=_['merge'](_0xf65ac6['where'],{'$or':_[_0x4f49('0x14')](_0x5d464e,function(_0x432b5d){if(_0x432b5d[_0x4f49('0x37')]!=='VIRTUAL'){if(_0x310ee2){return sequelize[_0x4f49('0x31')](sequelize['fn']('lower',sequelize['col'](_0x432b5d[_0x4f49('0x10')])),{'$like':sequelize['fn'](_0x4f49('0x38'),'%'+_0x1f38d3[_0x4f49('0x28')]['filter']+'%')});}else{var _0x287781={};_0x287781[_0x432b5d[_0x4f49('0x10')]]={'$like':'%'+_0x1f38d3['query'][_0x4f49('0x33')]+'%'};return _0x287781;}}})});}_0xf65ac6=_['merge']({},_0xf65ac6,_0x1f38d3[_0x4f49('0x39')]);return _0xf65ac6;};
\ No newline at end of file
index aed9f01..39c8189 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(_0x1c3f8e,_0x2f7794){var _0x40b720=function(_0xd92bec){while(--_0xd92bec){_0x1c3f8e['push'](_0x1c3f8e['shift']());}};_0x40b720(++_0x2f7794);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'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 _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(_0x36940e,_0x11f338){var _0x3283f2=function(_0x418008){while(--_0x418008){_0x36940e['push'](_0x36940e['shift']());}};_0x3283f2(++_0x11f338);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'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
index cf11080..a55613b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10c9=['internal','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','cpus','map','model','createHash','md5','update','digest','platform','licenseToken','test','dmidecode\x20--string\x20system-uuid','utf8','hostname','macAddress','ipAddress','substring','lodash','bimedia-machine-uuid','execSync','../environment','networkInterfaces','orderBy','keys','length','filter','family','IPv4'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x10c9,0x127));var _0x910c=function(_0x49b3d3,_0x518f0e){_0x49b3d3=_0x49b3d3-0x0;var _0x29d83c=_0x10c9[_0x49b3d3];return _0x29d83c;};'use strict';var _=require(_0x910c('0x0'));var os=require('os');var crypto=require('crypto');var machine=require(_0x910c('0x1'));var exec=require('child_process')[_0x910c('0x2')];var config=require(_0x910c('0x3'));function getInterfaces(){var _0x9e4acd=[];var _0x4e2481=os[_0x910c('0x4')]();var _0x36c7ba=_[_0x910c('0x5')](_[_0x910c('0x6')](_0x4e2481));for(var _0x485f8c=0x0;_0x485f8c<_0x36c7ba[_0x910c('0x7')];_0x485f8c++){var _0x46a932=_0x4e2481[_0x36c7ba[_0x485f8c]][_0x910c('0x8')](function(_0x5d7c7d){return _0x5d7c7d[_0x910c('0x9')]===_0x910c('0xa')&&_0x5d7c7d[_0x910c('0xb')]===![];});_0x9e4acd=_0x9e4acd['concat'](_0x46a932);}return _0x9e4acd;}function getFirstInterface(){var _0x2abf09=_[_0x910c('0xc')](getInterfaces());return{'macAddress':_0x2abf09&&_0x2abf09['mac']?_0x2abf09[_0x910c('0xd')]:_0x910c('0xe'),'ipAddress':_0x2abf09&&_0x2abf09[_0x910c('0xf')]?_0x2abf09[_0x910c('0xf')]:_0x910c('0x10')};}exports[_0x910c('0x11')]=getFirstInterface;function getCPUhash(){var _0x386b89=_[_0x910c('0x5')](os[_0x910c('0x12')]()[_0x910c('0x13')](function(_0x39cc1c){return _0x39cc1c[_0x910c('0x14')];}))['join'](':');return crypto[_0x910c('0x15')](_0x910c('0x16'))[_0x910c('0x17')](_0x386b89)[_0x910c('0x18')]('hex');}exports['getUuid']=function(){var _0x5435fd=os[_0x910c('0x19')]();var _0x105633=/[0-9a-f-]{36}/;if(config[_0x910c('0x1a')]&&_0x105633[_0x910c('0x1b')](config[_0x910c('0x1a')])){return config[_0x910c('0x1a')];}else if(_0x5435fd==='win32'){return exec(_0x910c('0x1c'),{'encoding':_0x910c('0x1d')})['replace']('\x0d\x0a','');}else{var _0x18cd10=getFirstInterface();var _0xd3bbce=getCPUhash();var _0x1b40ff=_0xd3bbce+'|'+os[_0x910c('0x1e')]()+'|'+_0x18cd10[_0x910c('0x1f')]+'|'+_0x18cd10[_0x910c('0x20')];var _0x46d3b0=crypto[_0x910c('0x15')]('md5')[_0x910c('0x17')](_0x1b40ff)[_0x910c('0x18')]('hex');return _0x46d3b0[_0x910c('0x21')](0x0,0x8)+'-'+_0x46d3b0[_0x910c('0x21')](0x8,0xc)+'-'+_0x46d3b0[_0x910c('0x21')](0xc,0x10)+'-'+_0x46d3b0[_0x910c('0x21')](0x10,0x14)+'-'+_0x46d3b0[_0x910c('0x21')](0x14);}};
\ No newline at end of file
+var _0x31ab=['getUuid','test','licenseToken','win32','dmidecode\x20--string\x20system-uuid','utf8','replace','ipAddress','substring','lodash','crypto','bimedia-machine-uuid','execSync','../environment','orderBy','length','filter','family','IPv4','internal','concat','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','map','join','createHash','md5','update','digest','hex'];(function(_0x36500f,_0x1652de){var _0xe29438=function(_0x13c4a6){while(--_0x13c4a6){_0x36500f['push'](_0x36500f['shift']());}};_0xe29438(++_0x1652de);}(_0x31ab,0xcf));var _0xb31a=function(_0x4e7d82,_0x4a0558){_0x4e7d82=_0x4e7d82-0x0;var _0x56cd28=_0x31ab[_0x4e7d82];return _0x56cd28;};'use strict';var _=require(_0xb31a('0x0'));var os=require('os');var crypto=require(_0xb31a('0x1'));var machine=require(_0xb31a('0x2'));var exec=require('child_process')[_0xb31a('0x3')];var config=require(_0xb31a('0x4'));function getInterfaces(){var _0x8c4222=[];var _0x3e0292=os['networkInterfaces']();var _0x1fd382=_[_0xb31a('0x5')](_['keys'](_0x3e0292));for(var _0x2e99c4=0x0;_0x2e99c4<_0x1fd382[_0xb31a('0x6')];_0x2e99c4++){var _0x379709=_0x3e0292[_0x1fd382[_0x2e99c4]][_0xb31a('0x7')](function(_0x31da9e){return _0x31da9e[_0xb31a('0x8')]===_0xb31a('0x9')&&_0x31da9e[_0xb31a('0xa')]===![];});_0x8c4222=_0x8c4222[_0xb31a('0xb')](_0x379709);}return _0x8c4222;}function getFirstInterface(){var _0x5657a6=_['head'](getInterfaces());return{'macAddress':_0x5657a6&&_0x5657a6[_0xb31a('0xc')]?_0x5657a6[_0xb31a('0xc')]:_0xb31a('0xd'),'ipAddress':_0x5657a6&&_0x5657a6[_0xb31a('0xe')]?_0x5657a6['address']:_0xb31a('0xf')};}exports[_0xb31a('0x10')]=getFirstInterface;function getCPUhash(){var _0x1d29ac=_[_0xb31a('0x5')](os['cpus']()[_0xb31a('0x11')](function(_0x11d7e1){return _0x11d7e1['model'];}))[_0xb31a('0x12')](':');return crypto[_0xb31a('0x13')](_0xb31a('0x14'))[_0xb31a('0x15')](_0x1d29ac)[_0xb31a('0x16')](_0xb31a('0x17'));}exports[_0xb31a('0x18')]=function(){var _0x3daa80=os['platform']();var _0x3b862d=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x3b862d[_0xb31a('0x19')](config[_0xb31a('0x1a')])){return config[_0xb31a('0x1a')];}else if(_0x3daa80===_0xb31a('0x1b')){return exec(_0xb31a('0x1c'),{'encoding':_0xb31a('0x1d')})[_0xb31a('0x1e')]('\x0d\x0a','');}else{var _0x55ba4c=getFirstInterface();var _0x113699=getCPUhash();var _0x3b7f5e=_0x113699+'|'+os['hostname']()+'|'+_0x55ba4c['macAddress']+'|'+_0x55ba4c[_0xb31a('0x1f')];var _0x2822f5=crypto['createHash']('md5')[_0xb31a('0x15')](_0x3b7f5e)[_0xb31a('0x16')]('hex');return _0x2822f5[_0xb31a('0x20')](0x0,0x8)+'-'+_0x2822f5[_0xb31a('0x20')](0x8,0xc)+'-'+_0x2822f5[_0xb31a('0x20')](0xc,0x10)+'-'+_0x2822f5[_0xb31a('0x20')](0x10,0x14)+'-'+_0x2822f5[_0xb31a('0x20')](0x14);}};
\ No newline at end of file
index f42d7e7..d514749 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x698d=['toUpperCase','YYYY-MM-DD\x20HH:mm','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','error','message','finally','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','util','moment','bluebird','pkginfo','version','../../components/encryptor','./hardware','../logger','license','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch','get','data1','active','data2','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s'];(function(_0x1a9204,_0x1c9e00){var _0x17ca68=function(_0x1f4399){while(--_0x1f4399){_0x1a9204['push'](_0x1a9204['shift']());}};_0x17ca68(++_0x1c9e00);}(_0x698d,0xd7));var _0xd698=function(_0x104a7e,_0x2b3ba6){_0x104a7e=_0x104a7e-0x0;var _0x89a435=_0x698d[_0x104a7e];return _0x89a435;};'use strict';var util=require(_0xd698('0x0'));var moment=require(_0xd698('0x1'));var rp=require('request-promise');var BPromise=require(_0xd698('0x2'));var pkginfo=require(_0xd698('0x3'))(module,_0xd698('0x4'));var db=require('../../mysqldb')['db'];var encryptor=require(_0xd698('0x5'));var hardware=require(_0xd698('0x6'));var logger=require(_0xd698('0x7'))(_0xd698('0x8'));var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x41d9f1){return new BPromise(function(_0x4505fa,_0x1dca7e){var _0x339ad5=util[_0xd698('0x9')](_0xd698('0xa'),HOST,_0x41d9f1,module[_0xd698('0xb')][_0xd698('0x4')]);if(oldToken){_0x339ad5=util[_0xd698('0x9')](_0xd698('0xc'),HOST,_0x41d9f1,module['exports']['version'],oldToken);}var _0x7e3f0d={'uri':_0x339ad5,'method':_0xd698('0xd'),'timeout':0xea60,'json':!![]};return rp(_0x7e3f0d)[_0xd698('0xe')](function(_0x278bce){_0x4505fa(_0x278bce);})[_0xd698('0xf')](function(_0x3dde31){_0x1dca7e(_0x3dde31);});});}function manageLicense(_0x2dc71d,_0x588987){var _0x1a6012=_0x588987[_0xd698('0x10')]({'plain':!![]});if(!isOldTokenSent&&_0x1a6012[_0xd698('0x11')]!==_0x2dc71d&&!_0x1a6012['data2']){oldToken=_0x1a6012['data1'];}httpRequest(_0x2dc71d)[_0xd698('0xe')](function(_0x13433e){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x13433e[_0xd698('0x12')]){isOldTokenSent=![];if(!_0x1a6012['license']&&_0x1a6012[_0xd698('0x8')]!=_0x13433e['license']||_0x1a6012[_0xd698('0x8')]&&_0x1a6012['data2']){logger['info']('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x1a6012[_0xd698('0x8')]&&!_0x1a6012[_0xd698('0x13')]&&_0x1a6012[_0xd698('0x8')]!=_0x13433e['license']){logger[_0xd698('0x14')](_0xd698('0x15'));}if(_0x1a6012[_0xd698('0x8')]&&!_0x1a6012['data2']&&_0x1a6012[_0xd698('0x8')]==_0x13433e[_0xd698('0x8')]){return _0x588987;}return _0x588987[_0xd698('0x16')]({'data1':_0x2dc71d,'data2':null,'license':_0x13433e['license']});}else{if(_0x13433e['license']||_0x1a6012[_0xd698('0x8')]){if(!_0x1a6012[_0xd698('0x13')]){if(_0x1a6012[_0xd698('0x11')]==_0x2dc71d){GRAY_PERIOD_REASON=_0xd698('0x17');logger[_0xd698('0x14')]('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON='Changed';logger[_0xd698('0x14')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x1a6012[_0xd698('0x11')],_0x2dc71d);}logger[_0xd698('0x14')](_0xd698('0x18'),GRAY_PERIOD_REASON[_0xd698('0x19')](),moment()[_0xd698('0x9')](_0xd698('0x1a')));return _0x588987[_0xd698('0x16')]({'data2':encryptor['encryptString'](moment()[_0xd698('0x9')](_0xd698('0x1a')))});}else{if(moment()[_0xd698('0x1b')](encryptor[_0xd698('0x1c')](_0x1a6012['data2']),_0xd698('0x1d'))>DAYS){logger[_0xd698('0x14')](_0xd698('0x1e'),moment()[_0xd698('0x9')]('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x588987[_0xd698('0x16')]({'data1':_0x2dc71d,'data2':null,'license':null});}}}else{if(_0x1a6012[_0xd698('0x11')]!=_0x2dc71d){logger['info'](_0xd698('0x1f'),_0x1a6012[_0xd698('0x11')],_0x2dc71d);return _0x588987[_0xd698('0x16')]({'data1':_0x2dc71d,'data2':null,'license':null});}}}return _0x588987;})[_0xd698('0xe')](function(_0x285f82){_0x588987=_0x285f82;})[_0xd698('0xf')](function(_0x6071ee){logger[_0xd698('0x20')](_0x6071ee[_0xd698('0x21')]);})[_0xd698('0x22')](function(){setTimeout(function(){manageLicense(hardware[_0xd698('0x23')](),_0x588987);},TIME);});}function defaultLicense(){var _0x2f25d2=hardware[_0xd698('0x23')]();if(_0x2f25d2){return db[_0xd698('0x24')][_0xd698('0x25')]({'where':{'id':0x1},'defaults':{'data1':_0x2f25d2}})[_0xd698('0x26')](function(_0x241c6e,_0x49bcb2){logger[_0xd698('0x14')](_0xd698('0x27'),_0x2f25d2);manageLicense(_0x2f25d2,_0x241c6e);})[_0xd698('0xf')](function(_0x5d3f29){logger['error'](_0x5d3f29[_0xd698('0x21')]);});}}exports['default']=defaultLicense;
\ No newline at end of file
+var _0xd0b2=['%s/api/servers/%s/check?version=%s','%s/api/servers/%s/check?version=%s&oldtoken=%s','exports','GET','then','catch','get','data1','data2','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','toUpperCase','update','encryptString','YYYY-MM-DD\x20HH:mm','diff','days','DEMO\x20START\x20AT\x20%s','error','finally','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','message','default','util','moment','request-promise','bluebird','pkginfo','version','../../components/encryptor','./hardware','../logger','license','format'];(function(_0x116c04,_0x4963da){var _0x9e011d=function(_0x143880){while(--_0x143880){_0x116c04['push'](_0x116c04['shift']());}};_0x9e011d(++_0x4963da);}(_0xd0b2,0x1a3));var _0x2d0b=function(_0x5ea5fe,_0x366077){_0x5ea5fe=_0x5ea5fe-0x0;var _0x10f089=_0xd0b2[_0x5ea5fe];return _0x10f089;};'use strict';var util=require(_0x2d0b('0x0'));var moment=require(_0x2d0b('0x1'));var rp=require(_0x2d0b('0x2'));var BPromise=require(_0x2d0b('0x3'));var pkginfo=require(_0x2d0b('0x4'))(module,_0x2d0b('0x5'));var db=require('../../mysqldb')['db'];var encryptor=require(_0x2d0b('0x6'));var hardware=require(_0x2d0b('0x7'));var logger=require(_0x2d0b('0x8'))(_0x2d0b('0x9'));var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x18d406){return new BPromise(function(_0x43c452,_0x2f8009){var _0x323523=util[_0x2d0b('0xa')](_0x2d0b('0xb'),HOST,_0x18d406,module['exports'][_0x2d0b('0x5')]);if(oldToken){_0x323523=util['format'](_0x2d0b('0xc'),HOST,_0x18d406,module[_0x2d0b('0xd')][_0x2d0b('0x5')],oldToken);}var _0x1ae9eb={'uri':_0x323523,'method':_0x2d0b('0xe'),'timeout':0xea60,'json':!![]};return rp(_0x1ae9eb)[_0x2d0b('0xf')](function(_0x5cbad2){_0x43c452(_0x5cbad2);})[_0x2d0b('0x10')](function(_0x124779){_0x2f8009(_0x124779);});});}function manageLicense(_0x212e5e,_0x55ccd0){var _0x5249ff=_0x55ccd0[_0x2d0b('0x11')]({'plain':!![]});if(!isOldTokenSent&&_0x5249ff[_0x2d0b('0x12')]!==_0x212e5e&&!_0x5249ff[_0x2d0b('0x13')]){oldToken=_0x5249ff['data1'];}httpRequest(_0x212e5e)['then'](function(_0x29be45){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x29be45[_0x2d0b('0x14')]){isOldTokenSent=![];if(!_0x5249ff[_0x2d0b('0x9')]&&_0x5249ff[_0x2d0b('0x9')]!=_0x29be45[_0x2d0b('0x9')]||_0x5249ff[_0x2d0b('0x9')]&&_0x5249ff[_0x2d0b('0x13')]){logger[_0x2d0b('0x15')](_0x2d0b('0x16'));}if(_0x5249ff[_0x2d0b('0x9')]&&!_0x5249ff[_0x2d0b('0x13')]&&_0x5249ff[_0x2d0b('0x9')]!=_0x29be45['license']){logger[_0x2d0b('0x15')](_0x2d0b('0x17'));}if(_0x5249ff['license']&&!_0x5249ff[_0x2d0b('0x13')]&&_0x5249ff[_0x2d0b('0x9')]==_0x29be45[_0x2d0b('0x9')]){return _0x55ccd0;}return _0x55ccd0['update']({'data1':_0x212e5e,'data2':null,'license':_0x29be45[_0x2d0b('0x9')]});}else{if(_0x29be45[_0x2d0b('0x9')]||_0x5249ff['license']){if(!_0x5249ff[_0x2d0b('0x13')]){if(_0x5249ff[_0x2d0b('0x12')]==_0x212e5e){GRAY_PERIOD_REASON=_0x2d0b('0x18');logger[_0x2d0b('0x15')](_0x2d0b('0x19'));}else{GRAY_PERIOD_REASON=_0x2d0b('0x1a');logger['info']('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x5249ff[_0x2d0b('0x12')],_0x212e5e);}logger[_0x2d0b('0x15')]('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON[_0x2d0b('0x1b')](),moment()[_0x2d0b('0xa')]('YYYY-MM-DD\x20HH:mm'));return _0x55ccd0[_0x2d0b('0x1c')]({'data2':encryptor[_0x2d0b('0x1d')](moment()[_0x2d0b('0xa')](_0x2d0b('0x1e')))});}else{if(moment()[_0x2d0b('0x1f')](encryptor['decryptString'](_0x5249ff[_0x2d0b('0x13')]),_0x2d0b('0x20'))>DAYS){logger['info'](_0x2d0b('0x21'),moment()[_0x2d0b('0xa')](_0x2d0b('0x1e')));isOldTokenSent=![];return _0x55ccd0[_0x2d0b('0x1c')]({'data1':_0x212e5e,'data2':null,'license':null});}}}else{if(_0x5249ff[_0x2d0b('0x12')]!=_0x212e5e){logger['info']('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x5249ff['data1'],_0x212e5e);return _0x55ccd0['update']({'data1':_0x212e5e,'data2':null,'license':null});}}}return _0x55ccd0;})['then'](function(_0x310895){_0x55ccd0=_0x310895;})[_0x2d0b('0x10')](function(_0x2786a5){logger[_0x2d0b('0x22')](_0x2786a5['message']);})[_0x2d0b('0x23')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x55ccd0);},TIME);});}function defaultLicense(){var _0xe28b26=hardware[_0x2d0b('0x24')]();if(_0xe28b26){return db[_0x2d0b('0x25')][_0x2d0b('0x26')]({'where':{'id':0x1},'defaults':{'data1':_0xe28b26}})[_0x2d0b('0x27')](function(_0x27dfa3,_0x5d027d){logger[_0x2d0b('0x15')](_0x2d0b('0x28'),_0xe28b26);manageLicense(_0xe28b26,_0x27dfa3);})['catch'](function(_0xf0816c){logger[_0x2d0b('0x22')](_0xf0816c[_0x2d0b('0x29')]);});}}exports[_0x2d0b('0x2a')]=defaultLicense;
\ No newline at end of file
index 5acb49c..1195a76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x721c=['machineUuid','gray','deadline','days','grayReason','changed','disabled','message','role','sequelize','col','count','admin','user','telephone','users','telephones','pick','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash','moment','./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','License','find','defaults','then','catch','data1','isEmpty','data2','split','decryptString','format','%s:%s:%s','parse','demo','uuid'];(function(_0x58d454,_0x1ff0e8){var _0x4fdf0d=function(_0x4f80a4){while(--_0x4f80a4){_0x58d454['push'](_0x58d454['shift']());}};_0x4fdf0d(++_0x1ff0e8);}(_0x721c,0x130));var _0xc721=function(_0x39018e,_0x1c9a04){_0x39018e=_0x39018e-0x0;var _0x388be4=_0x721c[_0x39018e];return _0x388be4;};'use strict';var util=require(_0xc721('0x0'));var _=require(_0xc721('0x1'));var moment=require(_0xc721('0x2'));var BPromise=require('bluebird');var hardware=require(_0xc721('0x3'));var encryptor=require(_0xc721('0x4'));var db=require(_0xc721('0x5'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xc721('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xc721('0x7'),'machineUuid':hardware[_0xc721('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xc721('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0xc721('0x9'),'machineUuid':hardware[_0xc721('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x57f4b7){return new BPromise(function(_0x429bb2,_0x1867c2){return db[_0xc721('0xa')][_0xc721('0xb')](_[_0xc721('0xc')](_0x57f4b7,{'raw':!![],'where':{'id':0x1}}))[_0xc721('0xd')](function(_0x500ae6){return checkLicense(_0x500ae6,null);})[_0xc721('0xd')](function(_0x19bdc0){_0x429bb2(_0x19bdc0);return;})[_0xc721('0xe')](function(_0x414d1c){_0x1867c2(_0x414d1c);});});}function checkLicense(_0x1a95ac,_0x70630f){if(!_0x1a95ac){demoLicense['uuid']=_0x1a95ac[_0xc721('0xf')];return demoLicense;}try{var _0x5d8a1d=_0x70630f||_0x1a95ac['license'];if(_[_0xc721('0x10')](_0x5d8a1d)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x5e089c=_0x1a95ac[_0xc721('0xf')];var _0x437e9b=_0x1a95ac[_0xc721('0x11')];var _0x391fa4=_0x5e089c[_0xc721('0x12')]('-')[0x4];var _0x30855f=_0x5e089c[_0xc721('0x12')]('-')[0x0];var _0x3eef48=encryptor[_0xc721('0x13')](_0x5d8a1d,util[_0xc721('0x14')](_0xc721('0x15'),_0x391fa4,_0x5e089c,_0x30855f));var _0x538fea=JSON[_0xc721('0x16')](_0x3eef48);_0x538fea[_0xc721('0x17')]=![];_0x538fea[_0xc721('0x18')]=_0x5e089c;_0x538fea[_0xc721('0x19')]=hardware[_0xc721('0x8')]();if(_0x437e9b){var _0x3bf778=encryptor['decryptString'](_0x437e9b);_0x538fea[_0xc721('0x1a')]=_0x3bf778;_0x538fea[_0xc721('0x1b')]=moment(_0x3bf778)['add'](0x7,_0xc721('0x1c'))[_0xc721('0x14')]();_0x538fea[_0xc721('0x1d')]=_0x538fea[_0xc721('0x18')]!=_0x538fea[_0xc721('0x19')]?_0xc721('0x1e'):_0xc721('0x1f');}return _0x538fea;}catch(_0x74ade6){breakingLicense['uuid']=_0x1a95ac[_0xc721('0xf')];breakingLicense[_0xc721('0x20')]=_0x74ade6['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0xd714e0,_0x5691e6){getLicense()[_0xc721('0xd')](function(_0x1666e2){return db['User']['findAll']({'attributes':[_0xc721('0x21'),[db['sequelize']['fn']('COUNT',db[_0xc721('0x22')][_0xc721('0x23')](_0xc721('0x21'))),_0xc721('0x24')]],'group':_0xc721('0x21'),'where':{'role':{'$or':[_0xc721('0x25'),_0xc721('0x26'),_0xc721('0x27')]}},'raw':!![]})[_0xc721('0xd')](function(_0x480a05){var _0x16f9cd={'user':_0x1666e2[_0xc721('0x28')]||0x0,'telephone':_0x1666e2[_0xc721('0x29')]||0x0};_0x480a05['forEach'](function(_0xd80324){var _0x5451ef=_0xd80324[_0xc721('0x21')]===_0xc721('0x25')?'user':_0xd80324['role'];_0x16f9cd[_0x5451ef]-=_0xd80324[_0xc721('0x24')];if(_0x16f9cd[_0x5451ef]<0x0)_0x16f9cd[_0x5451ef]=0x0;});_0xd714e0(_0x16f9cd);return;});})['catch'](function(_0x98a865){_0x5691e6(_0x98a865);});});}function checkUserLimits(_0x324247){return new BPromise(function(_0x20016e,_0x2161e4){getLimits()[_0xc721('0xd')](function(_0x18fc31){var _0x415c4a=_[_0xc721('0x2a')](_[_0xc721('0x2b')](_0x324247,'role'),[_0xc721('0x25'),'user','telephone']);var _0x41a9ff=(_0x415c4a[_0xc721('0x25')]||0x0)+(_0x415c4a[_0xc721('0x26')]||0x0);var _0x5a414d=_0x415c4a[_0xc721('0x27')]||0x0;if(_0x41a9ff>_0x18fc31[_0xc721('0x26')])return _0x2161e4(_0xc721('0x2c'));if(_0x5a414d>_0x18fc31['telephone'])return _0x2161e4(_0xc721('0x2d'));return _0x20016e();})['catch'](function(_0x21a627){_0x2161e4(_0x21a627);});});}module[_0xc721('0x2e')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0xfe77=['data1','data2','split','decryptString','format','parse','uuid','machineUuid','gray','deadline','add','days','grayReason','changed','message','User','findAll','role','sequelize','COUNT','admin','user','telephone','users','count','pick','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','lodash','moment','bluebird','./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','License','find','defaults','then','catch','license','isEmpty','License\x20key\x20value\x20not\x20found'];(function(_0x1f1950,_0x542fb2){var _0x3881a2=function(_0x34661b){while(--_0x34661b){_0x1f1950['push'](_0x1f1950['shift']());}};_0x3881a2(++_0x542fb2);}(_0xfe77,0x1c4));var _0x7fe7=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xfe77[_0x14add3];return _0x4a174f;};'use strict';var util=require('util');var _=require(_0x7fe7('0x0'));var moment=require(_0x7fe7('0x1'));var BPromise=require(_0x7fe7('0x2'));var hardware=require(_0x7fe7('0x3'));var encryptor=require(_0x7fe7('0x4'));var db=require(_0x7fe7('0x5'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x7fe7('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x7fe7('0x7'),'machineUuid':hardware[_0x7fe7('0x8')](),'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':_0x7fe7('0x9'),'machineUuid':hardware[_0x7fe7('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x1cf1fa){return new BPromise(function(_0x54c33f,_0x5e9485){return db[_0x7fe7('0xa')][_0x7fe7('0xb')](_[_0x7fe7('0xc')](_0x1cf1fa,{'raw':!![],'where':{'id':0x1}}))[_0x7fe7('0xd')](function(_0x39a1cf){return checkLicense(_0x39a1cf,null);})[_0x7fe7('0xd')](function(_0x19b93c){_0x54c33f(_0x19b93c);return;})[_0x7fe7('0xe')](function(_0x2222f8){_0x5e9485(_0x2222f8);});});}function checkLicense(_0x4872da,_0x10ea53){if(!_0x4872da){demoLicense['uuid']=_0x4872da['data1'];return demoLicense;}try{var _0x58c6bb=_0x10ea53||_0x4872da[_0x7fe7('0xf')];if(_[_0x7fe7('0x10')](_0x58c6bb)){throw new Error(_0x7fe7('0x11'));}var _0x54ae86=_0x4872da[_0x7fe7('0x12')];var _0x46d435=_0x4872da[_0x7fe7('0x13')];var _0x91142f=_0x54ae86[_0x7fe7('0x14')]('-')[0x4];var _0x53b850=_0x54ae86[_0x7fe7('0x14')]('-')[0x0];var _0x3780db=encryptor[_0x7fe7('0x15')](_0x58c6bb,util[_0x7fe7('0x16')]('%s:%s:%s',_0x91142f,_0x54ae86,_0x53b850));var _0x57344c=JSON[_0x7fe7('0x17')](_0x3780db);_0x57344c['demo']=![];_0x57344c[_0x7fe7('0x18')]=_0x54ae86;_0x57344c[_0x7fe7('0x19')]=hardware[_0x7fe7('0x8')]();if(_0x46d435){var _0x517983=encryptor['decryptString'](_0x46d435);_0x57344c[_0x7fe7('0x1a')]=_0x517983;_0x57344c[_0x7fe7('0x1b')]=moment(_0x517983)[_0x7fe7('0x1c')](0x7,_0x7fe7('0x1d'))['format']();_0x57344c[_0x7fe7('0x1e')]=_0x57344c[_0x7fe7('0x18')]!=_0x57344c[_0x7fe7('0x19')]?_0x7fe7('0x1f'):'disabled';}return _0x57344c;}catch(_0x18cd83){breakingLicense[_0x7fe7('0x18')]=_0x4872da[_0x7fe7('0x12')];breakingLicense['message']=_0x18cd83[_0x7fe7('0x20')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x5a64db,_0x4a3398){getLicense()[_0x7fe7('0xd')](function(_0x12fc4a){return db[_0x7fe7('0x21')][_0x7fe7('0x22')]({'attributes':[_0x7fe7('0x23'),[db[_0x7fe7('0x24')]['fn'](_0x7fe7('0x25'),db[_0x7fe7('0x24')]['col'](_0x7fe7('0x23'))),'count']],'group':_0x7fe7('0x23'),'where':{'role':{'$or':[_0x7fe7('0x26'),_0x7fe7('0x27'),_0x7fe7('0x28')]}},'raw':!![]})[_0x7fe7('0xd')](function(_0x419200){var _0xe09d76={'user':_0x12fc4a[_0x7fe7('0x29')]||0x0,'telephone':_0x12fc4a['telephones']||0x0};_0x419200['forEach'](function(_0x4d0135){var _0x2e9702=_0x4d0135[_0x7fe7('0x23')]===_0x7fe7('0x26')?_0x7fe7('0x27'):_0x4d0135[_0x7fe7('0x23')];_0xe09d76[_0x2e9702]-=_0x4d0135[_0x7fe7('0x2a')];if(_0xe09d76[_0x2e9702]<0x0)_0xe09d76[_0x2e9702]=0x0;});_0x5a64db(_0xe09d76);return;});})[_0x7fe7('0xe')](function(_0x5dc27a){_0x4a3398(_0x5dc27a);});});}function checkUserLimits(_0x1aed97){return new BPromise(function(_0x3b72a7,_0x4c95df){getLimits()['then'](function(_0x5384ba){var _0x3be3e3=_[_0x7fe7('0x2b')](_[_0x7fe7('0x2c')](_0x1aed97,_0x7fe7('0x23')),['admin',_0x7fe7('0x27'),_0x7fe7('0x28')]);var _0x6f01eb=(_0x3be3e3[_0x7fe7('0x26')]||0x0)+(_0x3be3e3[_0x7fe7('0x27')]||0x0);var _0x51734e=_0x3be3e3[_0x7fe7('0x28')]||0x0;if(_0x6f01eb>_0x5384ba[_0x7fe7('0x27')])return _0x4c95df(_0x7fe7('0x2d'));if(_0x51734e>_0x5384ba[_0x7fe7('0x28')])return _0x4c95df(_0x7fe7('0x2e'));return _0x3b72a7();})[_0x7fe7('0xe')](function(_0x1961a6){_0x4c95df(_0x1961a6);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 1f12ed9..5c0b533 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7916=['myappanuglar-secret','app-id','exports'];(function(_0x12d6c2,_0x409bc8){var _0x1c9825=function(_0x569f66){while(--_0x569f66){_0x12d6c2['push'](_0x12d6c2['shift']());}};_0x1c9825(++_0x409bc8);}(_0x7916,0x128));var _0x6791=function(_0x35f14f,_0x33cca1){_0x35f14f=_0x35f14f-0x0;var _0x5bfd63=_0x7916[_0x35f14f];return _0x5bfd63;};'use strict';module[_0x6791('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':_0x6791('0x1'),'GOOGLE_ID':_0x6791('0x2'),'GOOGLE_SECRET':'secret','DEBUG':''};
\ No newline at end of file
+var _0x63a5=['myappanuglar-secret','secret','exports','http://localhost:9000'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x63a5,0x18e));var _0x563a=function(_0x4e7d25,_0x58285f){_0x4e7d25=_0x4e7d25-0x0;var _0x526fe6=_0x63a5[_0x4e7d25];return _0x526fe6;};'use strict';module[_0x563a('0x0')]={'DOMAIN':_0x563a('0x1'),'SESSION_SECRET':_0x563a('0x2'),'GOOGLE_ID':'app-id','GOOGLE_SECRET':_0x563a('0x3'),'DEBUG':''};
\ No newline at end of file
index b2e0058..00af456 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x503b=['exports','../utils/loggers','fileLogger'];(function(_0x4f8e07,_0x449b38){var _0x52294e=function(_0x590a2e){while(--_0x590a2e){_0x4f8e07['push'](_0x4f8e07['shift']());}};_0x52294e(++_0x449b38);}(_0x503b,0xdf));var _0xb503=function(_0x36582e,_0x2815a9){_0x36582e=_0x36582e-0x0;var _0x12f550=_0x503b[_0x36582e];return _0x12f550;};'use strict';var fileLogger=require(_0xb503('0x0'))[_0xb503('0x1')];module[_0xb503('0x2')]=fileLogger;
\ No newline at end of file
+var _0xddd9=['fileLogger','exports','../utils/loggers'];(function(_0x4e2ff5,_0x5015b2){var _0x5c20cc=function(_0x5a75bc){while(--_0x5a75bc){_0x4e2ff5['push'](_0x4e2ff5['shift']());}};_0x5c20cc(++_0x5015b2);}(_0xddd9,0x1af));var _0x9ddd=function(_0x2e3658,_0x117e04){_0x2e3658=_0x2e3658-0x0;var _0x4196a1=_0xddd9[_0x2e3658];return _0x4196a1;};'use strict';var fileLogger=require(_0x9ddd('0x0'))[_0x9ddd('0x1')];module[_0x9ddd('0x2')]=fileLogger;
\ No newline at end of file
index 2ad951f..7b7a99e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4270=['../../services/ami/index.js','agi','email','../../services/email/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports','path','express','join','../../services/express/index.js','ami'];(function(_0x384d13,_0x5ef54e){var _0x2d1697=function(_0x1804d7){while(--_0x1804d7){_0x384d13['push'](_0x384d13['shift']());}};_0x2d1697(++_0x5ef54e);}(_0x4270,0x191));var _0x0427=function(_0x5116ab,_0x27a62a){_0x5116ab=_0x5116ab-0x0;var _0x13c0aa=_0x4270[_0x5116ab];return _0x13c0aa;};'use strict';var path=require(_0x0427('0x0'));var os=require('os');var config={'apps':[{'name':_0x0427('0x1'),'script':path[_0x0427('0x2')](__dirname,_0x0427('0x3'))},{'name':_0x0427('0x4'),'script':path[_0x0427('0x2')](__dirname,_0x0427('0x5'))},{'name':_0x0427('0x6'),'script':path[_0x0427('0x2')](__dirname,'../../services/agi/index.js')},{'name':_0x0427('0x7'),'script':path['join'](__dirname,_0x0427('0x8'))},{'name':_0x0427('0x9'),'script':path[_0x0427('0x2')](__dirname,_0x0427('0xa'))},{'name':_0x0427('0xb'),'script':path['join'](__dirname,_0x0427('0xc'))}]};module[_0x0427('0xd')]=config;
\ No newline at end of file
+var _0x05ab=['xdr','path','express','join','../../services/ami/index.js','../../services/agi/index.js','email','../../services/email/index.js','routing'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x05ab,0x10f));var _0xb05a=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0x05ab[_0x1694f5];return _0x5b4321;};'use strict';var path=require(_0xb05a('0x0'));var os=require('os');var config={'apps':[{'name':_0xb05a('0x1'),'script':path[_0xb05a('0x2')](__dirname,'../../services/express/index.js')},{'name':'ami','script':path['join'](__dirname,_0xb05a('0x3'))},{'name':'agi','script':path[_0xb05a('0x2')](__dirname,_0xb05a('0x4'))},{'name':_0xb05a('0x5'),'script':path['join'](__dirname,_0xb05a('0x6'))},{'name':_0xb05a('0x7'),'script':path['join'](__dirname,'../../services/routing/index.js')},{'name':_0xb05a('0x8'),'script':path[_0xb05a('0x2')](__dirname,'../../services/xdr/index.js')}]};module['exports']=config;
\ No newline at end of file
index c035a88..320d8c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ff4=['bluebird','./config','connect','connected','then','disconnect','stop','restart','list','describe','delete','dump','saved','pm2'];(function(_0x2e76a7,_0x23871a){var _0x454cde=function(_0x51724d){while(--_0x51724d){_0x2e76a7['push'](_0x2e76a7['shift']());}};_0x454cde(++_0x23871a);}(_0x6ff4,0x1db));var _0x46ff=function(_0x26e890,_0x38c7a9){_0x26e890=_0x26e890-0x0;var _0x12e460=_0x6ff4[_0x26e890];return _0x12e460;};'use strict';var pm2=require(_0x46ff('0x0'));var BPromise=require(_0x46ff('0x1'));var config=require(_0x46ff('0x2'));function connect(){return new BPromise(function(_0x3f8cef,_0x57a030){return pm2[_0x46ff('0x3')](function(_0x2a1f65){if(_0x2a1f65){return _0x57a030(_0x2a1f65);}return _0x3f8cef(_0x46ff('0x4'));});});};exports['start']=function(_0x4b5e50){return connect()[_0x46ff('0x5')](function(){return new BPromise(function(_0x2b0c77,_0x4218ee){return pm2['start'](_0x4b5e50,function(_0x27c360,_0x3838f6){if(_0x27c360){return _0x4218ee(_0x27c360);}pm2[_0x46ff('0x6')]();return _0x2b0c77(_0x3838f6);});});});};exports[_0x46ff('0x7')]=function(_0x46286c){return connect()[_0x46ff('0x5')](function(){return new BPromise(function(_0x310342,_0x4d4234){return pm2[_0x46ff('0x7')](_0x46286c,function(_0x191192,_0x399a3c){if(_0x191192){return _0x4d4234(_0x191192);}pm2[_0x46ff('0x6')]();return _0x310342(_0x399a3c);});});});};exports[_0x46ff('0x8')]=function(_0x5f340f){return connect()['then'](function(){return new BPromise(function(_0x1d205a,_0x23e158){return pm2[_0x46ff('0x8')](_0x5f340f,function(_0x5c76ba,_0x50be48){if(_0x5c76ba){return _0x23e158(_0x5c76ba);}pm2[_0x46ff('0x6')]();return _0x1d205a(_0x50be48);});});});};exports[_0x46ff('0x9')]=function(){return connect()[_0x46ff('0x5')](function(){return new BPromise(function(_0x1407f2,_0x1fc315){return pm2[_0x46ff('0x9')](function(_0x19b319,_0x567e42){if(_0x19b319){return _0x1fc315(_0x19b319);}pm2['disconnect']();return _0x1407f2(_0x567e42);});});});};exports[_0x46ff('0xa')]=function(_0x4723d2){return connect()[_0x46ff('0x5')](function(){return new BPromise(function(_0x2046db,_0x47ae4b){return pm2[_0x46ff('0xa')](_0x4723d2,function(_0x522be0,_0x487ae6){if(_0x522be0){return _0x47ae4b(_0x522be0);}pm2[_0x46ff('0x6')]();return _0x2046db(_0x487ae6);});});});};exports['delete']=function(_0xd2230a){return connect()[_0x46ff('0x5')](function(){return new BPromise(function(_0x579636,_0x11ddd5){return pm2[_0x46ff('0xb')](_0xd2230a,function(_0x25d6bc,_0x3d14b4){if(_0x25d6bc){return _0x11ddd5(_0x25d6bc);}pm2[_0x46ff('0x6')]();return _0x579636(_0x3d14b4);});});});};exports['dump']=function(){return connect()[_0x46ff('0x5')](function(){return new BPromise(function(_0x227314,_0x2bc6c9){return pm2[_0x46ff('0xc')](function(_0x446f4b){if(_0x446f4b){return _0x2bc6c9(_0x446f4b);}return _0x227314(_0x46ff('0xd'));});});});};
\ No newline at end of file
+var _0x44b1=['start','then','disconnect','stop','restart','list','describe','delete','dump','saved','bluebird','./config','connected'];(function(_0x489411,_0x558ed7){var _0x51e868=function(_0x21ffb4){while(--_0x21ffb4){_0x489411['push'](_0x489411['shift']());}};_0x51e868(++_0x558ed7);}(_0x44b1,0x135));var _0x144b=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0x44b1[_0x5783f4];return _0x28e380;};'use strict';var pm2=require('pm2');var BPromise=require(_0x144b('0x0'));var config=require(_0x144b('0x1'));function connect(){return new BPromise(function(_0x384e9f,_0xa5e8b5){return pm2['connect'](function(_0x268961){if(_0x268961){return _0xa5e8b5(_0x268961);}return _0x384e9f(_0x144b('0x2'));});});};exports[_0x144b('0x3')]=function(_0x1a1321){return connect()[_0x144b('0x4')](function(){return new BPromise(function(_0x51f5cb,_0xb7ef71){return pm2[_0x144b('0x3')](_0x1a1321,function(_0x539ad1,_0x151f34){if(_0x539ad1){return _0xb7ef71(_0x539ad1);}pm2[_0x144b('0x5')]();return _0x51f5cb(_0x151f34);});});});};exports[_0x144b('0x6')]=function(_0x111c5b){return connect()['then'](function(){return new BPromise(function(_0x3bc406,_0x563f6f){return pm2[_0x144b('0x6')](_0x111c5b,function(_0x414f9e,_0x2b4250){if(_0x414f9e){return _0x563f6f(_0x414f9e);}pm2[_0x144b('0x5')]();return _0x3bc406(_0x2b4250);});});});};exports['restart']=function(_0x3a4d1d){return connect()['then'](function(){return new BPromise(function(_0x396dcf,_0x53d0ae){return pm2[_0x144b('0x7')](_0x3a4d1d,function(_0x1e502f,_0x443991){if(_0x1e502f){return _0x53d0ae(_0x1e502f);}pm2[_0x144b('0x5')]();return _0x396dcf(_0x443991);});});});};exports[_0x144b('0x8')]=function(){return connect()[_0x144b('0x4')](function(){return new BPromise(function(_0x3beda8,_0x253b44){return pm2[_0x144b('0x8')](function(_0x2f8595,_0x1f65a6){if(_0x2f8595){return _0x253b44(_0x2f8595);}pm2['disconnect']();return _0x3beda8(_0x1f65a6);});});});};exports[_0x144b('0x9')]=function(_0x100c08){return connect()['then'](function(){return new BPromise(function(_0x263b8b,_0x3d08de){return pm2['describe'](_0x100c08,function(_0x55cde8,_0x2cdeb4){if(_0x55cde8){return _0x3d08de(_0x55cde8);}pm2['disconnect']();return _0x263b8b(_0x2cdeb4);});});});};exports[_0x144b('0xa')]=function(_0x30eb3c){return connect()[_0x144b('0x4')](function(){return new BPromise(function(_0x181ce0,_0x5b1a22){return pm2[_0x144b('0xa')](_0x30eb3c,function(_0x3115c9,_0x1574f4){if(_0x3115c9){return _0x5b1a22(_0x3115c9);}pm2[_0x144b('0x5')]();return _0x181ce0(_0x1574f4);});});});};exports['dump']=function(){return connect()['then'](function(){return new BPromise(function(_0x4ccc4e,_0x1335b2){return pm2[_0x144b('0xb')](function(_0x1b8f9f){if(_0x1b8f9f){return _0x1335b2(_0x1b8f9f);}return _0x4ccc4e(_0x144b('0xc'));});});});};
\ No newline at end of file
index 821121e..3fd4a9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58b8=['emit','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','lodash','util','../../mysqldb','../logger','schedule','defaults','localhost','socket.io-emitter','redis','Setting','find','chatTimeout','then','ChatInteraction','subtract','minutes','join','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','length','info','[CHAT]\x20Sending\x20updates\x20for\x20interactions:'];(function(_0x43f444,_0x5dad88){var _0x15202a=function(_0x4ef623){while(--_0x4ef623){_0x43f444['push'](_0x43f444['shift']());}};_0x15202a(++_0x5dad88);}(_0x58b8,0x17b));var _0x858b=function(_0x4d8764,_0xd13d7b){_0x4d8764=_0x4d8764-0x0;var _0x4e0b49=_0x58b8[_0x4d8764];return _0x4e0b49;};'use strict';var _=require(_0x858b('0x0'));var moment=require('moment');var Redis=require('ioredis');var util=require(_0x858b('0x1'));var config=require('../../config/environment');var db=require(_0x858b('0x2'))['db'];var logger=require(_0x858b('0x3'))(_0x858b('0x4'));config['redis']=_[_0x858b('0x5')](config['redis'],{'host':_0x858b('0x6'),'port':0x18eb});var io=require(_0x858b('0x7'))(new Redis(config[_0x858b('0x8')]));function closeInteractions(){var _0x2f1054=0x0;var _0x2f6ab0=[];return db[_0x858b('0x9')][_0x858b('0xa')]({'raw':!![],'attributes':['id',_0x858b('0xb')],'where':{'id':0x1}})[_0x858b('0xc')](function(_0x37f609){_0x2f1054=_0x37f609[_0x858b('0xb')];if(_0x2f1054){return db[_0x858b('0xd')]['findAll']({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x858b('0xe')](_0x37f609[_0x858b('0xb')],_0x858b('0xf'))}}});}else{return[];}})[_0x858b('0xc')](function(_0x1f4f39){if(_0x1f4f39&&_0x1f4f39['length']){_0x2f6ab0=_['map'](_0x1f4f39||[],'id');logger['info']('[CHAT]\x20Interactions\x20to\x20close:',_0x2f6ab0[_0x858b('0x10')]());return db[_0x858b('0xd')]['update']({'closeReason':_0x858b('0x11'),'disposition':_0x858b('0x12'),'closed':!![],'closedAt':moment()[_0x858b('0x13')](_0x858b('0x14'))},{'where':{'id':_0x2f6ab0}});}})['then'](function(){if(_0x2f6ab0&&_0x2f6ab0[_0x858b('0x15')]){logger[_0x858b('0x16')](_0x858b('0x17'),_0x2f6ab0[_0x858b('0x10')]());for(var _0x538477=0x0;_0x538477<_0x2f6ab0['length'];_0x538477++){io[_0x858b('0x18')](_0x858b('0x19'),{'id':_0x2f6ab0[_0x538477],'closed':!![]});}}})[_0x858b('0x1a')](function(_0x268b0b){logger[_0x858b('0x1b')](_0x858b('0x1c'),_0x268b0b?util[_0x858b('0x1d')](_0x268b0b,{'showHidden':![],'depth':null}):'');});}exports[_0x858b('0x1e')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x92c0=['map','info','join','update','system','format','YYYY-MM-DD\x20HH:mm:ss','emit','catch','[CHAT]\x20Error\x20closing\x20interactions','inspect','lodash','../../config/environment','../../mysqldb','schedule','redis','defaults','localhost','socket.io-emitter','Setting','chatTimeout','then','ChatInteraction','findAll','lastMsgAt','subtract','minutes','length'];(function(_0x57cd4b,_0x16fb74){var _0x54d033=function(_0x1bac0b){while(--_0x1bac0b){_0x57cd4b['push'](_0x57cd4b['shift']());}};_0x54d033(++_0x16fb74);}(_0x92c0,0x1e7));var _0x092c=function(_0x31c23e,_0x1e99e5){_0x31c23e=_0x31c23e-0x0;var _0x38feae=_0x92c0[_0x31c23e];return _0x38feae;};'use strict';var _=require(_0x092c('0x0'));var moment=require('moment');var Redis=require('ioredis');var util=require('util');var config=require(_0x092c('0x1'));var db=require(_0x092c('0x2'))['db'];var logger=require('../logger')(_0x092c('0x3'));config[_0x092c('0x4')]=_[_0x092c('0x5')](config[_0x092c('0x4')],{'host':_0x092c('0x6'),'port':0x18eb});var io=require(_0x092c('0x7'))(new Redis(config[_0x092c('0x4')]));function closeInteractions(){var _0x401667=0x0;var _0x5812dd=[];return db[_0x092c('0x8')]['find']({'raw':!![],'attributes':['id',_0x092c('0x9')],'where':{'id':0x1}})[_0x092c('0xa')](function(_0x236423){_0x401667=_0x236423['chatTimeout'];if(_0x401667){return db[_0x092c('0xb')][_0x092c('0xc')]({'raw':!![],'attributes':['id',_0x092c('0xd')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x092c('0xe')](_0x236423['chatTimeout'],_0x092c('0xf'))}}});}else{return[];}})[_0x092c('0xa')](function(_0x46ec1a){if(_0x46ec1a&&_0x46ec1a[_0x092c('0x10')]){_0x5812dd=_[_0x092c('0x11')](_0x46ec1a||[],'id');logger[_0x092c('0x12')]('[CHAT]\x20Interactions\x20to\x20close:',_0x5812dd[_0x092c('0x13')]());return db['ChatInteraction'][_0x092c('0x14')]({'closeReason':_0x092c('0x15'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0x092c('0x16')](_0x092c('0x17'))},{'where':{'id':_0x5812dd}});}})[_0x092c('0xa')](function(){if(_0x5812dd&&_0x5812dd[_0x092c('0x10')]){logger['info']('[CHAT]\x20Sending\x20updates\x20for\x20interactions:',_0x5812dd['join']());for(var _0x180487=0x0;_0x180487<_0x5812dd[_0x092c('0x10')];_0x180487++){io[_0x092c('0x18')]('chatInteraction:update',{'id':_0x5812dd[_0x180487],'closed':!![]});}}})[_0x092c('0x19')](function(_0x5b3ebb){logger['error'](_0x092c('0x1a'),_0x5b3ebb?util[_0x092c('0x1b')](_0x5b3ebb,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 18f6105..d14a274 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7b2=['startAllRefreshIntervals','../../api/cloudProvider/cloudProvider.oauth.js'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xb7b2,0x8b));var _0x2b7b=function(_0x1674d9,_0x4a5a40){_0x1674d9=_0x1674d9-0x0;var _0x27b215=_0xb7b2[_0x1674d9];return _0x27b215;};'use strict';function start(){var _0x4763f6=require(_0x2b7b('0x0'));return _0x4763f6[_0x2b7b('0x1')]();}module['exports']={'intervals':{},'start':start};
\ No newline at end of file
+var _0x5fc5=['exports','../../api/cloudProvider/cloudProvider.oauth.js','startAllRefreshIntervals'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x5fc5,0xee));var _0x55fc=function(_0x362e19,_0x16decc){_0x362e19=_0x362e19-0x0;var _0x442d64=_0x5fc5[_0x362e19];return _0x442d64;};'use strict';function start(){var _0x34dcd1=require(_0x55fc('0x0'));return _0x34dcd1[_0x55fc('0x1')]();}module[_0x55fc('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
index 170920e..7987dd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7483=['subtract','subtractNumber','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','CloudProvider','keys','jobs','map','toString','keyBy','intersection','difference','length','stop','deleteJob','toRun','index','my\x20id','resolve','run\x20job','cron','isBetween','endAt','add','add\x20cron','stop\x20cron','startAt','update','run','start','path','lodash','cron-job-manager','bluebird','../logger','schedule','../../mysqldb','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','getSmtpOptions','format','\x22%s\x22\x20<%s>','MailAccount','name','Smtp','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','join','../../files/reports','savename','basename','zip','status','message','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','Sent','attachments','sendIfEmpty','request','then','error','error\x20mail','email\x20sent','catch','stringify','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined'];(function(_0x5b086f,_0x306e08){var _0x11964e=function(_0x417822){while(--_0x417822){_0x5b086f['push'](_0x5b086f['shift']());}};_0x11964e(++_0x306e08);}(_0x7483,0x1bf));var _0x3748=function(_0x48bf50,_0xbdd7f5){_0x48bf50=_0x48bf50-0x0;var _0x36ad77=_0x7483[_0x48bf50];return _0x36ad77;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0x3748('0x0'));var _=require(_0x3748('0x1'));var moment=require('moment');var CronJobManager=require(_0x3748('0x2'));var jayson=require('jayson/promise');var BPromise=require(_0x3748('0x3'));var logger=require(_0x3748('0x4'))(_0x3748('0x5'));var db=require(_0x3748('0x6'))['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0x3748('0x7'));var client=jayson[_0x3748('0x8')][_0x3748('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x5750e5,_0x4922cb){return function(){logger[_0x3748('0xa')](_0x3748('0xb'),_0x5750e5[_0x3748('0xc')]);var _0x3fb97d=!![];var _0xad1303=_0x5750e5['MailAccount'][_0x3748('0xd')]();var _0x1c74aa={'account':_0xad1303,'message':{'from':util[_0x3748('0xe')](_0x3748('0xf'),_0x5750e5[_0x3748('0x10')][_0x3748('0x11')],_0x5750e5[_0x3748('0x10')][_0x3748('0xc')]||_0x5750e5[_0x3748('0x10')][_0x3748('0x12')]['user']),'to':_0x5750e5[_0x3748('0xc')],'cc':_0x5750e5['cc'],'bcc':_0x5750e5[_0x3748('0x13')],'subject':util['format'](_0x3748('0x14'),_0x4922cb[_0x3748('0x11')],_0x5750e5['subtractNumber'],_0x5750e5[_0x3748('0x15')])}};var _0x25f6cd=path[_0x3748('0x16')](__dirname,_0x3748('0x17'));var _0x496938=_0x4922cb[_0x3748('0x18')];var _0x571836=util['format']('%s.%s',path[_0x3748('0x19')](_0x4922cb[_0x3748('0x18')],path['extname'](_0x4922cb['savename'])),_0x3748('0x1a'));var _0x38188e=path['join'](_0x25f6cd,_0x496938);var _0x13a07e=path[_0x3748('0x16')](_0x25f6cd,_0x571836);if(fs['existsSync'](_0x38188e)){_0x4922cb[_0x3748('0x1b')]='Sent';_0x1c74aa[_0x3748('0x1c')]['attachments']=[{'filename':_0x496938,'path':_0x38188e}];_0x1c74aa[_0x3748('0x1c')][_0x3748('0x1d')]=util['format'](_0x3748('0x1e'),JSON['stringify'](_0x4922cb,null,0x2));}else if(fs['existsSync'](_0x13a07e)){_0x4922cb['status']=_0x3748('0x1f');_0x1c74aa[_0x3748('0x1c')][_0x3748('0x20')]=[{'filename':_0x571836,'path':_0x13a07e}];}else{_0x1c74aa[_0x3748('0x1c')][_0x3748('0x1d')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x5750e5[_0x3748('0x21')]){_0x3fb97d=![];logger[_0x3748('0xa')]('empty\x20file,\x20email\x20not\x20sent');}}if(_0x3fb97d){return client[_0x3748('0x22')]('SendMail',_0x1c74aa)[_0x3748('0x23')](function(_0xda69a1){if(_0xda69a1['error']){return logger[_0x3748('0x24')](_0x3748('0x25'),JSON['stringify'](_0xda69a1));}return logger[_0x3748('0xa')](_0x3748('0x26'));})[_0x3748('0x27')](function(_0x5bf68b){return logger[_0x3748('0x24')]('error\x20mail',JSON[_0x3748('0x28')](_0x5bf68b));});}};}function handleError(){return function(_0x200061){return logger[_0x3748('0x24')](JSON[_0x3748('0x28')](_0x200061));};}function handleResult(_0x414472){return function(_0x314315){logger[_0x3748('0xa')](_0x3748('0x29'),JSON[_0x3748('0x28')](_0x314315));if(_0x414472[_0x3748('0x10')]&&_0x414472['MailAccount'][_0x3748('0x12')]&&!_[_0x3748('0x2a')](_0x414472[_0x3748('0xc')])){setTimeout(handleSendEmail(_0x414472,_0x314315),0x3c*0x3e8);}};}function handleJob(_0x58194c){return function(){try{if(_[_0x3748('0x2a')](_0x58194c['subtractNumber'])){return logger[_0x3748('0xa')](_0x3748('0x2b'));}if(_[_0x3748('0x2a')](_0x58194c[_0x3748('0x15')])){return logger[_0x3748('0xa')](_0x3748('0x2c'));}var _0x31f6e9={'startDate':moment()[_0x3748('0x2d')](_0x58194c[_0x3748('0x2e')],_0x58194c[_0x3748('0x15')])[_0x3748('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0x3748('0xe')](_0x3748('0x2f')),'type':_0x3748('0x30'),'output':_0x58194c[_0x3748('0x31')],'name':_0x58194c['name']};if(!_['isNil'](_0x58194c[_0x3748('0x32')])){logger['info'](_0x3748('0x33'),_0x58194c[_0x3748('0x32')]);return analyticDefaultReportController[_0x3748('0x34')]({'id':_0x58194c[_0x3748('0x32')]},_0x31f6e9)[_0x3748('0x23')](handleResult(_0x58194c))[_0x3748('0x27')](handleError());}if(!_[_0x3748('0x2a')](_0x58194c[_0x3748('0x35')])){logger[_0x3748('0xa')](_0x3748('0x36'),_0x58194c[_0x3748('0x35')]);return analyticCustomReportController[_0x3748('0x34')]({'id':_0x58194c[_0x3748('0x35')]},_0x31f6e9)['then'](handleResult(_0x58194c))['catch'](handleError());}}catch(_0x7152f4){logger[_0x3748('0x24')](JSON[_0x3748('0x28')](_0x7152f4));}return logger[_0x3748('0xa')](_0x3748('0x37'));};}function getJobs(_0x4eb10a){var _0x24a80e={};if(_0x4eb10a){_0x24a80e['id']=_0x4eb10a;}return db['Schedule']['findAll']({'where':_0x24a80e,'include':[{'model':db['MailAccount'],'attributes':['id',_0x3748('0x11'),_0x3748('0xc')],'include':[{'model':db['MailServerOut'],'as':_0x3748('0x12'),'include':[{'model':db['CloudProvider'],'as':_0x3748('0x38')}]}]}]})['then'](function(_0x20f66c){var _0x550a2b=_[_0x3748('0x39')](manager[_0x3748('0x3a')]);var _0x553f57=_[_0x3748('0x3b')](_0x20f66c,function(_0x5681fe){return _0x5681fe['id'][_0x3748('0x3c')]();});var _0x30bfc3=_[_0x3748('0x3d')](_0x20f66c,function(_0x2bed19){return _0x2bed19['id']['toString']();});var _0x58b8cc=_0x4eb10a?_0x553f57:_['difference'](_0x553f57,_0x550a2b);var _0x3ed870=_[_0x3748('0x3e')](_0x553f57,_0x550a2b);var _0x4d556b=_[_0x3748('0x3f')](_0x550a2b,_0x553f57);var _0x3b13f7;var _0x50b847;for(_0x3b13f7=0x0;_0x3b13f7<_0x4d556b[_0x3748('0x40')]&&!_0x4eb10a;_0x3b13f7+=0x1){_0x50b847=_0x4d556b[_0x3b13f7][_0x3748('0x3c')]();if(manager['exists'](_0x50b847)){manager[_0x3748('0x41')](_0x50b847);manager[_0x3748('0x42')](_0x50b847);logger[_0x3748('0xa')]('delete\x20cron',_0x50b847);}}logger[_0x3748('0xa')](_0x3748('0x43'),JSON[_0x3748('0x28')](_0x58b8cc));for(_0x3b13f7=0x0;_0x3b13f7<_0x58b8cc[_0x3748('0x40')];_0x3b13f7+=0x1){_0x50b847=_0x58b8cc[_0x3b13f7][_0x3748('0x3c')]();logger[_0x3748('0xa')](_0x3748('0x44'),_0x50b847);if(_0x4eb10a){logger[_0x3748('0xa')](_0x3748('0x45'),_0x4eb10a);logger[_0x3748('0xa')](JSON[_0x3748('0x28')](_0x30bfc3[_0x50b847]));BPromise[_0x3748('0x46')]()[_0x3748('0x23')](handleJob(_0x30bfc3[_0x50b847]));logger[_0x3748('0xa')](_0x3748('0x47'),_0x30bfc3[_0x50b847]['name'],_0x30bfc3[_0x50b847][_0x3748('0x48')]);}else if(_0x30bfc3[_0x50b847][_0x3748('0x48')]&&_0x30bfc3[_0x50b847]['active']&&moment()[_0x3748('0x49')](_0x30bfc3[_0x50b847]['startAt'],_0x30bfc3[_0x50b847][_0x3748('0x4a')])){manager[_0x3748('0x4b')](_0x50b847,_0x30bfc3[_0x50b847][_0x3748('0x48')],handleJob(_0x30bfc3[_0x50b847]));manager['start'](_0x50b847);logger[_0x3748('0xa')](_0x3748('0x4c'),_0x30bfc3[_0x50b847]['name'],_0x30bfc3[_0x50b847][_0x3748('0x48')]);}else if(manager['exists'](_0x50b847)){manager[_0x3748('0x41')](_0x50b847);manager[_0x3748('0x42')](_0x50b847);logger[_0x3748('0xa')](_0x3748('0x4d'),_0x30bfc3[_0x50b847][_0x3748('0x11')],_0x30bfc3[_0x50b847][_0x3748('0x48')]);}}for(_0x3b13f7=0x0,_0x50b847;_0x3b13f7<_0x3ed870[_0x3748('0x40')]&&!_0x4eb10a;_0x3b13f7+=0x1){_0x50b847=_0x3ed870[_0x3b13f7][_0x3748('0x3c')]();if(manager['exists'](_0x50b847)){if(_0x30bfc3[_0x50b847][_0x3748('0x48')]&&_0x30bfc3[_0x50b847]['active']&&moment()[_0x3748('0x49')](_0x30bfc3[_0x50b847][_0x3748('0x4e')],_0x30bfc3[_0x50b847][_0x3748('0x4a')])){manager[_0x3748('0x4f')](_0x50b847,_0x30bfc3[_0x50b847][_0x3748('0x48')],handleJob(_0x30bfc3[_0x50b847]));logger[_0x3748('0xa')]('update\x20cron',_0x30bfc3[_0x50b847]['name'],_0x30bfc3[_0x50b847][_0x3748('0x48')]);}else{manager[_0x3748('0x41')](_0x50b847);manager[_0x3748('0x42')](_0x50b847);logger[_0x3748('0xa')]('stop\x20cron',_0x30bfc3[_0x50b847][_0x3748('0x11')],_0x30bfc3[_0x50b847][_0x3748('0x48')]);}}}})[_0x3748('0x27')](function(_0x2d7b29){logger[_0x3748('0x24')](JSON[_0x3748('0x28')](_0x2d7b29));});}exports[_0x3748('0x50')]=function(_0x46b3cf){return getJobs(_0x46b3cf);};exports[_0x3748('0x51')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0x75b8=['stringify','email\x20sent','catch','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','exec\x20defaul\x20report\x20id:%s','DefaultReportId','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','CloudProvider','jobs','toString','keyBy','difference','intersection','length','exists','deleteJob','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','cron','active','startAt','endAt','add','start','add\x20cron','stop','stop\x20cron','isBetween','update\x20cron','util','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','\x22%s\x22\x20<%s>','Smtp','user','bcc','Report\x20%s\x20last\x20%s\x20%s','name','subtractNumber','../../files/reports','%s.%s','basename','savename','zip','join','existsSync','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','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','then','error','error\x20mail'];(function(_0x4214bf,_0x4e65e5){var _0x3e6a53=function(_0x344edc){while(--_0x344edc){_0x4214bf['push'](_0x4214bf['shift']());}};_0x3e6a53(++_0x4e65e5);}(_0x75b8,0x198));var _0x875b=function(_0x24502f,_0x134350){_0x24502f=_0x24502f-0x0;var _0x402fd9=_0x75b8[_0x24502f];return _0x402fd9;};'use strict';var fs=require('fs');var util=require(_0x875b('0x0'));var path=require(_0x875b('0x1'));var _=require(_0x875b('0x2'));var moment=require(_0x875b('0x3'));var CronJobManager=require(_0x875b('0x4'));var jayson=require(_0x875b('0x5'));var BPromise=require(_0x875b('0x6'));var logger=require(_0x875b('0x7'))(_0x875b('0x8'));var db=require(_0x875b('0x9'))['db'];var analyticCustomReportController=require(_0x875b('0xa'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0x875b('0xb')][_0x875b('0xc')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x2076b6,_0x5e0f84){return function(){logger[_0x875b('0xd')](_0x875b('0xe'),_0x2076b6[_0x875b('0xf')]);var _0x2d3a04=!![];var _0x448117=_0x2076b6[_0x875b('0x10')][_0x875b('0x11')]();var _0x10fcf1={'account':_0x448117,'message':{'from':util[_0x875b('0x12')](_0x875b('0x13'),_0x2076b6[_0x875b('0x10')]['name'],_0x2076b6['MailAccount'][_0x875b('0xf')]||_0x2076b6[_0x875b('0x10')][_0x875b('0x14')][_0x875b('0x15')]),'to':_0x2076b6['email'],'cc':_0x2076b6['cc'],'bcc':_0x2076b6[_0x875b('0x16')],'subject':util['format'](_0x875b('0x17'),_0x5e0f84[_0x875b('0x18')],_0x2076b6[_0x875b('0x19')],_0x2076b6['subtractUnit'])}};var _0x28e873=path['join'](__dirname,_0x875b('0x1a'));var _0x36bceb=_0x5e0f84['savename'];var _0x1b4843=util[_0x875b('0x12')](_0x875b('0x1b'),path[_0x875b('0x1c')](_0x5e0f84[_0x875b('0x1d')],path['extname'](_0x5e0f84[_0x875b('0x1d')])),_0x875b('0x1e'));var _0x5b7fd3=path[_0x875b('0x1f')](_0x28e873,_0x36bceb);var _0x560b8c=path['join'](_0x28e873,_0x1b4843);if(fs[_0x875b('0x20')](_0x5b7fd3)){_0x5e0f84[_0x875b('0x21')]=_0x875b('0x22');_0x10fcf1[_0x875b('0x23')][_0x875b('0x24')]=[{'filename':_0x36bceb,'path':_0x5b7fd3}];_0x10fcf1[_0x875b('0x23')][_0x875b('0x25')]=util[_0x875b('0x12')](_0x875b('0x26'),JSON['stringify'](_0x5e0f84,null,0x2));}else if(fs['existsSync'](_0x560b8c)){_0x5e0f84['status']=_0x875b('0x22');_0x10fcf1[_0x875b('0x23')][_0x875b('0x24')]=[{'filename':_0x1b4843,'path':_0x560b8c}];}else{_0x10fcf1[_0x875b('0x23')][_0x875b('0x25')]=_0x875b('0x27');if(!_0x2076b6[_0x875b('0x28')]){_0x2d3a04=![];logger['info'](_0x875b('0x29'));}}if(_0x2d3a04){return client[_0x875b('0x2a')](_0x875b('0x2b'),_0x10fcf1)[_0x875b('0x2c')](function(_0x344b73){if(_0x344b73[_0x875b('0x2d')]){return logger[_0x875b('0x2d')](_0x875b('0x2e'),JSON[_0x875b('0x2f')](_0x344b73));}return logger[_0x875b('0xd')](_0x875b('0x30'));})[_0x875b('0x31')](function(_0x3f9cc6){return logger['error'](_0x875b('0x2e'),JSON[_0x875b('0x2f')](_0x3f9cc6));});}};}function handleError(){return function(_0x2874d0){return logger[_0x875b('0x2d')](JSON[_0x875b('0x2f')](_0x2874d0));};}function handleResult(_0x219775){return function(_0x588db4){logger[_0x875b('0xd')](_0x875b('0x32'),JSON[_0x875b('0x2f')](_0x588db4));if(_0x219775[_0x875b('0x10')]&&_0x219775['MailAccount'][_0x875b('0x14')]&&!_[_0x875b('0x33')](_0x219775[_0x875b('0xf')])){setTimeout(handleSendEmail(_0x219775,_0x588db4),0x3c*0x3e8);}};}function handleJob(_0x2ebe2f){return function(){try{if(_['isNil'](_0x2ebe2f[_0x875b('0x19')])){return logger[_0x875b('0xd')](_0x875b('0x34'));}if(_[_0x875b('0x33')](_0x2ebe2f[_0x875b('0x35')])){return logger[_0x875b('0xd')](_0x875b('0x36'));}var _0x5bbaed={'startDate':moment()['subtract'](_0x2ebe2f[_0x875b('0x19')],_0x2ebe2f[_0x875b('0x35')])[_0x875b('0x12')](_0x875b('0x37')),'endDate':moment()[_0x875b('0x12')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x875b('0x38'),'output':_0x2ebe2f[_0x875b('0x39')],'name':_0x2ebe2f[_0x875b('0x18')]};if(!_[_0x875b('0x33')](_0x2ebe2f['DefaultReportId'])){logger[_0x875b('0xd')](_0x875b('0x3a'),_0x2ebe2f[_0x875b('0x3b')]);return analyticDefaultReportController[_0x875b('0x3c')]({'id':_0x2ebe2f[_0x875b('0x3b')]},_0x5bbaed)['then'](handleResult(_0x2ebe2f))[_0x875b('0x31')](handleError());}if(!_[_0x875b('0x33')](_0x2ebe2f[_0x875b('0x3d')])){logger[_0x875b('0xd')](_0x875b('0x3e'),_0x2ebe2f[_0x875b('0x3d')]);return analyticCustomReportController[_0x875b('0x3c')]({'id':_0x2ebe2f['CustomReportId']},_0x5bbaed)[_0x875b('0x2c')](handleResult(_0x2ebe2f))[_0x875b('0x31')](handleError());}}catch(_0x3c3c2b){logger[_0x875b('0x2d')](JSON[_0x875b('0x2f')](_0x3c3c2b));}return logger['info'](_0x875b('0x3f'));};}function getJobs(_0x3ad131){var _0x132064={};if(_0x3ad131){_0x132064['id']=_0x3ad131;}return db[_0x875b('0x40')]['findAll']({'where':_0x132064,'include':[{'model':db[_0x875b('0x10')],'attributes':['id',_0x875b('0x18'),'email'],'include':[{'model':db['MailServerOut'],'as':_0x875b('0x14'),'include':[{'model':db[_0x875b('0x41')],'as':_0x875b('0x41')}]}]}]})[_0x875b('0x2c')](function(_0x18fa9f){var _0x7abc74=_['keys'](manager[_0x875b('0x42')]);var _0x10dafa=_['map'](_0x18fa9f,function(_0x30b43f){return _0x30b43f['id'][_0x875b('0x43')]();});var _0xe87d6c=_[_0x875b('0x44')](_0x18fa9f,function(_0x26fe01){return _0x26fe01['id'][_0x875b('0x43')]();});var _0x389bd1=_0x3ad131?_0x10dafa:_[_0x875b('0x45')](_0x10dafa,_0x7abc74);var _0x222039=_[_0x875b('0x46')](_0x10dafa,_0x7abc74);var _0x3fd040=_['difference'](_0x7abc74,_0x10dafa);var _0x4b17bd;var _0x363ef2;for(_0x4b17bd=0x0;_0x4b17bd<_0x3fd040[_0x875b('0x47')]&&!_0x3ad131;_0x4b17bd+=0x1){_0x363ef2=_0x3fd040[_0x4b17bd][_0x875b('0x43')]();if(manager[_0x875b('0x48')](_0x363ef2)){manager['stop'](_0x363ef2);manager[_0x875b('0x49')](_0x363ef2);logger[_0x875b('0xd')](_0x875b('0x4a'),_0x363ef2);}}logger[_0x875b('0xd')](_0x875b('0x4b'),JSON['stringify'](_0x389bd1));for(_0x4b17bd=0x0;_0x4b17bd<_0x389bd1[_0x875b('0x47')];_0x4b17bd+=0x1){_0x363ef2=_0x389bd1[_0x4b17bd][_0x875b('0x43')]();logger[_0x875b('0xd')](_0x875b('0x4c'),_0x363ef2);if(_0x3ad131){logger[_0x875b('0xd')](_0x875b('0x4d'),_0x3ad131);logger[_0x875b('0xd')](JSON[_0x875b('0x2f')](_0xe87d6c[_0x363ef2]));BPromise[_0x875b('0x4e')]()[_0x875b('0x2c')](handleJob(_0xe87d6c[_0x363ef2]));logger['info'](_0x875b('0x4f'),_0xe87d6c[_0x363ef2][_0x875b('0x18')],_0xe87d6c[_0x363ef2][_0x875b('0x50')]);}else if(_0xe87d6c[_0x363ef2][_0x875b('0x50')]&&_0xe87d6c[_0x363ef2][_0x875b('0x51')]&&moment()['isBetween'](_0xe87d6c[_0x363ef2][_0x875b('0x52')],_0xe87d6c[_0x363ef2][_0x875b('0x53')])){manager[_0x875b('0x54')](_0x363ef2,_0xe87d6c[_0x363ef2][_0x875b('0x50')],handleJob(_0xe87d6c[_0x363ef2]));manager[_0x875b('0x55')](_0x363ef2);logger['info'](_0x875b('0x56'),_0xe87d6c[_0x363ef2][_0x875b('0x18')],_0xe87d6c[_0x363ef2][_0x875b('0x50')]);}else if(manager[_0x875b('0x48')](_0x363ef2)){manager[_0x875b('0x57')](_0x363ef2);manager[_0x875b('0x49')](_0x363ef2);logger[_0x875b('0xd')](_0x875b('0x58'),_0xe87d6c[_0x363ef2]['name'],_0xe87d6c[_0x363ef2]['cron']);}}for(_0x4b17bd=0x0,_0x363ef2;_0x4b17bd<_0x222039[_0x875b('0x47')]&&!_0x3ad131;_0x4b17bd+=0x1){_0x363ef2=_0x222039[_0x4b17bd][_0x875b('0x43')]();if(manager[_0x875b('0x48')](_0x363ef2)){if(_0xe87d6c[_0x363ef2][_0x875b('0x50')]&&_0xe87d6c[_0x363ef2][_0x875b('0x51')]&&moment()[_0x875b('0x59')](_0xe87d6c[_0x363ef2][_0x875b('0x52')],_0xe87d6c[_0x363ef2][_0x875b('0x53')])){manager['update'](_0x363ef2,_0xe87d6c[_0x363ef2][_0x875b('0x50')],handleJob(_0xe87d6c[_0x363ef2]));logger[_0x875b('0xd')](_0x875b('0x5a'),_0xe87d6c[_0x363ef2]['name'],_0xe87d6c[_0x363ef2][_0x875b('0x50')]);}else{manager[_0x875b('0x57')](_0x363ef2);manager[_0x875b('0x49')](_0x363ef2);logger['info'](_0x875b('0x58'),_0xe87d6c[_0x363ef2]['name'],_0xe87d6c[_0x363ef2][_0x875b('0x50')]);}}}})[_0x875b('0x31')](function(_0x1852ff){logger[_0x875b('0x2d')](JSON[_0x875b('0x2f')](_0x1852ff));});}exports['run']=function(_0x43d7b6){return getJobs(_0x43d7b6);};exports[_0x875b('0x55')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index a2a695c..647afe3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9a7=['[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','No\x20transcribe\x20job\x20to\x20check','Transcribe\x20not\x20configured','transcribeAccountId','push','all','catch','aws-sdk','../../mysqldb','transcribe','TranscribeService','getTranscriptionJob','detectSentiment','info','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','tempSentiment','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','sentimentRegion','bucket','Sequelize','ValidationError','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','format','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Sentiment','SentimentScore','Negative','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','resolve','Sentiment\x20Analysis\x20not\x20configured'];(function(_0x5ecadc,_0x1cf9f1){var _0x565037=function(_0x22908b){while(--_0x22908b){_0x5ecadc['push'](_0x5ecadc['shift']());}};_0x565037(++_0x1cf9f1);}(_0xb9a7,0x112));var _0x7b9a=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xb9a7[_0x40a045];return _0x1a687c;};var _=require('lodash');var AWS=require(_0x7b9a('0x0'));var rp=require('request-promise');var util=require('util');var BPromise=require('bluebird');var db=require(_0x7b9a('0x1'))['db'];var logger=require('../../config/logger')(_0x7b9a('0x2'));function getTranscriptionJob(_0x40ef7d,_0x37b25b,_0x24cae3,_0x5cd5da){return new Promise(function(_0xf6dae2,_0x22764f){var _0x7019fd=new AWS[(_0x7b9a('0x3'))]({'accessKeyId':_0x37b25b,'secretAccessKey':_0x40ef7d,'region':_0x24cae3});_0x7019fd[_0x7b9a('0x4')]({'TranscriptionJobName':_0x5cd5da},function(_0x4d3f20,_0x43d8e2){if(_0x4d3f20){return _0x22764f(_0x4d3f20);}else{return _0xf6dae2(_0x43d8e2);}});});}function sentiment(_0x3e84f1,_0x56a199,_0x511e28,_0x47e220,_0x15bc5b){return new Promise(function(_0x31f3b7,_0x4cf090){var _0x32c85d=new AWS['Comprehend']({'accessKeyId':_0x56a199,'secretAccessKey':_0x3e84f1,'region':_0x511e28});_0x32c85d[_0x7b9a('0x5')]({'Text':_0x47e220,'LanguageCode':_0x15bc5b['substring'](0x0,0x2)},function(_0x3af176,_0x1584a2){if(_0x3af176){return _0x4cf090(_0x3af176);}else{return _0x31f3b7(_0x1584a2);}});});}function checkTranscribeJob(_0x291591,_0x5948ca,_0x32f616){var _0xec5949;return new BPromise(function(_0x5e3875,_0x67553c){logger[_0x7b9a('0x6')](util['format'](_0x7b9a('0x7'),_0x291591['id'],_0x291591[_0x7b9a('0x8')]));return getTranscriptionJob(_0x32f616[_0x7b9a('0x9')],_0x32f616[_0x7b9a('0xa')],_0x5948ca[_0x7b9a('0xb')],_0x291591[_0x7b9a('0x8')])[_0x7b9a('0xc')](function(_0x35e602){logger[_0x7b9a('0x6')](util['format'](_0x7b9a('0xd'),_0x291591['id'],_0x291591['transcribeName'],_0x35e602[_0x7b9a('0xe')][_0x7b9a('0xf')]));if(!_0x291591[_0x7b9a('0x10')]){switch(_0x35e602[_0x7b9a('0xe')][_0x7b9a('0xf')]){case _0x7b9a('0x11'):var _0x27ad55={'transcribeStatus':_0x35e602[_0x7b9a('0xe')][_0x7b9a('0xf')],'fileUri':_0x35e602[_0x7b9a('0xe')][_0x7b9a('0x12')][_0x7b9a('0x13')]};logger[_0x7b9a('0x6')](util['format'](_0x7b9a('0x14'),_0x291591['id']));return rp({'uri':_0x35e602['TranscriptionJob'][_0x7b9a('0x12')]['TranscriptFileUri'],'json':!![]})[_0x7b9a('0xc')](function(_0x331ae6){logger[_0x7b9a('0x6')](util['format'](_0x7b9a('0x15'),_0x291591['id']));if(_0x331ae6&&_0x331ae6[_0x7b9a('0x16')]&&_0x331ae6['results'][_0x7b9a('0x17')]&&_0x331ae6[_0x7b9a('0x16')][_0x7b9a('0x17')][_0x7b9a('0x18')]){_0x27ad55[_0x7b9a('0x10')]='';for(var _0x5b2f52=0x0;_0x5b2f52<_0x331ae6[_0x7b9a('0x16')][_0x7b9a('0x17')]['length'];_0x5b2f52++){_0x27ad55[_0x7b9a('0x10')]+=_0x331ae6['results'][_0x7b9a('0x17')][_0x5b2f52][_0x7b9a('0x19')]+'';}}return _0x291591['update'](_0x27ad55);})['then'](function(){logger[_0x7b9a('0x6')](util['format']('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x291591['id']));if(!_0x291591[_0x7b9a('0x1a')]){throw new db['Sequelize']['ValidationError'](_0x7b9a('0x1b'));}if(!_0x5948ca['sentiment']||!_0x5948ca[_0x7b9a('0x1c')]||!_0x5948ca[_0x7b9a('0x1d')]||!_0x5948ca['language']||!_0x5948ca[_0x7b9a('0x1e')]){throw new db[(_0x7b9a('0x1f'))][(_0x7b9a('0x20'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x27ad55[_0x7b9a('0x10')]){throw new Error(_0x7b9a('0x21'));}if(_0x5948ca[_0x7b9a('0x1c')]===_0x32f616['id']){return _0x32f616;}else{return db[_0x7b9a('0x22')][_0x7b9a('0x23')]({'where':{'id':_settings[_0x7b9a('0x1c')]}});}})['then'](function(_0x4aa495){if(!_0x4aa495){throw new db[(_0x7b9a('0x1f'))][(_0x7b9a('0x20'))](_0x7b9a('0x24'));}if(!_0x4aa495['data1']||!_0x4aa495[_0x7b9a('0xa')]){throw new db[(_0x7b9a('0x1f'))]['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0xec5949=_0x4aa495;logger[_0x7b9a('0x6')](util[_0x7b9a('0x25')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x291591['id']));return sentiment(_0xec5949[_0x7b9a('0x9')],_0xec5949[_0x7b9a('0xa')],_0x5948ca[_0x7b9a('0x1d')],_0x27ad55[_0x7b9a('0x10')],_0x5948ca[_0x7b9a('0x26')]);})['then'](function(_0x46bcd0){logger[_0x7b9a('0x6')](util[_0x7b9a('0x25')](_0x7b9a('0x27'),_0x291591['id']));return _0x291591[_0x7b9a('0x28')]({'sentiment':_0x46bcd0[_0x7b9a('0x29')],'sPositive':_0x46bcd0['SentimentScore']['Positive'],'sNegative':_0x46bcd0[_0x7b9a('0x2a')][_0x7b9a('0x2b')],'sMixed':_0x46bcd0['SentimentScore'][_0x7b9a('0x2c')],'sNeutral':_0x46bcd0[_0x7b9a('0x2a')][_0x7b9a('0x2d')]});})['then'](function(){logger[_0x7b9a('0x6')](util[_0x7b9a('0x25')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x291591['id']));_0x5e3875();});case'FAILED':return _0x291591[_0x7b9a('0x28')]({'transcribeStatus':_0x7b9a('0x2e'),'failureReason':_0x35e602[_0x7b9a('0xe')][_0x7b9a('0x2f')]})[_0x7b9a('0xc')](function(){logger[_0x7b9a('0x6')](util[_0x7b9a('0x25')](_0x7b9a('0x30'),_0x291591['id']));_0x5e3875();});default:logger['info'](util[_0x7b9a('0x25')]('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x291591['id']));break;}}else{return BPromise[_0x7b9a('0x31')]()[_0x7b9a('0xc')](function(){if(!_0x291591[_0x7b9a('0x1a')]){throw new db[(_0x7b9a('0x1f'))][(_0x7b9a('0x20'))](_0x7b9a('0x1b'));}if(!_0x5948ca['sentiment']||!_0x5948ca[_0x7b9a('0x1c')]||!_0x5948ca[_0x7b9a('0x1d')]||!_0x5948ca[_0x7b9a('0x26')]||!_0x5948ca[_0x7b9a('0x1e')]){throw new db['Sequelize'][(_0x7b9a('0x20'))](_0x7b9a('0x32'));}if(!_0x291591[_0x7b9a('0x10')]){throw new Error(_0x7b9a('0x21'));}if(_0x5948ca['sentimentAccountId']===_0x32f616['id']){return _0x32f616;}else{return db[_0x7b9a('0x22')]['findOne']({'where':{'id':_settings[_0x7b9a('0x1c')]}});}})[_0x7b9a('0xc')](function(_0x432e44){if(!_0x432e44){throw new db[(_0x7b9a('0x1f'))][(_0x7b9a('0x20'))](_0x7b9a('0x24'));}if(!_0x432e44['data1']||!_0x432e44[_0x7b9a('0xa')]){throw new db[(_0x7b9a('0x1f'))][(_0x7b9a('0x20'))]('Cloud\x20Provider\x20not\x20configured');}_0xec5949=_0x432e44;logger['info'](util[_0x7b9a('0x25')](_0x7b9a('0x33'),_0x291591['id']));return sentiment(_0xec5949[_0x7b9a('0x9')],_0xec5949[_0x7b9a('0xa')],_0x5948ca[_0x7b9a('0x1d')],_0x291591[_0x7b9a('0x10')],_0x5948ca['language']);})['then'](function(_0x5c9eac){logger[_0x7b9a('0x6')](util[_0x7b9a('0x25')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x291591['id']));return _0x291591[_0x7b9a('0x28')]({'sentiment':_0x5c9eac[_0x7b9a('0x29')],'sPositive':_0x5c9eac[_0x7b9a('0x2a')]['Positive'],'sNegative':_0x5c9eac[_0x7b9a('0x2a')]['Negative'],'sMixed':_0x5c9eac[_0x7b9a('0x2a')][_0x7b9a('0x2c')],'sNeutral':_0x5c9eac[_0x7b9a('0x2a')][_0x7b9a('0x2d')],'transcribeStatus':_0x7b9a('0x11')});})['then'](function(){logger[_0x7b9a('0x6')](util['format'](_0x7b9a('0x30'),_0x291591['id']));_0x5e3875();});}})['catch'](function(_0x4f1b2e){if(_0x4f1b2e){if(!_0x4f1b2e[_0x7b9a('0x34')]||_0x4f1b2e[_0x7b9a('0x34')]!==_0x7b9a('0x35')){logger[_0x7b9a('0x36')](util[_0x7b9a('0x25')](_0x7b9a('0x37'),_0x291591['id']),util[_0x7b9a('0x38')](_0x4f1b2e,{'showHidden':![],'depth':null}));}}_0x5e3875();});});}function checkTranscribe(){var _0x31506d;var _0x1d034b;var _0x5088c7;return db[_0x7b9a('0x39')][_0x7b9a('0x3a')]({'where':{'transcribeStatus':'IN_PROGRESS'}})['then'](function(_0x5dd42d){if(!_0x5dd42d||!_0x5dd42d[_0x7b9a('0x18')]){throw new db[(_0x7b9a('0x1f'))][(_0x7b9a('0x20'))](_0x7b9a('0x3b'));}_0x31506d=_0x5dd42d;return db['Setting'][_0x7b9a('0x23')]({'where':{'id':0x1}});})[_0x7b9a('0xc')](function(_0x287dea){if(!_0x287dea){throw new db[(_0x7b9a('0x1f'))][(_0x7b9a('0x20'))]('Settings\x20not\x20available');}_0x1d034b=_0x287dea;if(!_0x1d034b[_0x7b9a('0x2')]||!_0x1d034b['transcribeAccountId']||!_0x1d034b[_0x7b9a('0xb')]||!_0x1d034b[_0x7b9a('0x26')]||!_0x1d034b[_0x7b9a('0x1e')]){throw new db[(_0x7b9a('0x1f'))]['ValidationError'](_0x7b9a('0x3c'));}return db[_0x7b9a('0x22')][_0x7b9a('0x23')]({'where':{'id':_0x1d034b[_0x7b9a('0x3d')]}});})[_0x7b9a('0xc')](function(_0x3e2f1b){if(!_0x3e2f1b){throw new db[(_0x7b9a('0x1f'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x3e2f1b['data1']||!_0x3e2f1b[_0x7b9a('0xa')]){throw new db[(_0x7b9a('0x1f'))]['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x5088c7=_0x3e2f1b;var _0x58527d=[];_0x31506d['forEach'](function(_0x7c800f){_0x58527d[_0x7b9a('0x3e')](checkTranscribeJob(_0x7c800f,_0x1d034b,_0x5088c7));});return BPromise[_0x7b9a('0x3f')](_0x58527d);})[_0x7b9a('0x40')](function(_0x34f552){if(_0x34f552){if(!_0x34f552[_0x7b9a('0x34')]||_0x34f552[_0x7b9a('0x34')]!==_0x7b9a('0x35')){logger['error'](util[_0x7b9a('0x38')](_0x34f552,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0x5867=['update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','sentimentAccountId','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Negative','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentiment','Transcript\x20not\x20available','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Positive','Mixed','catch','name','SequelizeValidationError','error','VoiceRecording','findAll','IN_PROGRESS','Setting','findOne','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','inspect','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','Comprehend','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data2','transcribeRegion','then','TranscriptionJob','fileText','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','results','transcripts','length'];(function(_0x399131,_0x2db855){var _0xce76e2=function(_0x175a64){while(--_0x175a64){_0x399131['push'](_0x399131['shift']());}};_0xce76e2(++_0x2db855);}(_0x5867,0x1e2));var _0x7586=function(_0x13bbf5,_0x3c3cc2){_0x13bbf5=_0x13bbf5-0x0;var _0x2d9e20=_0x5867[_0x13bbf5];return _0x2d9e20;};var _=require(_0x7586('0x0'));var AWS=require(_0x7586('0x1'));var rp=require(_0x7586('0x2'));var util=require(_0x7586('0x3'));var BPromise=require(_0x7586('0x4'));var db=require(_0x7586('0x5'))['db'];var logger=require(_0x7586('0x6'))(_0x7586('0x7'));function getTranscriptionJob(_0x2811f5,_0x49f688,_0x1bf944,_0x2245c1){return new Promise(function(_0x2b0ce9,_0xac832a){var _0x54a035=new AWS[(_0x7586('0x8'))]({'accessKeyId':_0x49f688,'secretAccessKey':_0x2811f5,'region':_0x1bf944});_0x54a035[_0x7586('0x9')]({'TranscriptionJobName':_0x2245c1},function(_0x12c3ed,_0x516079){if(_0x12c3ed){return _0xac832a(_0x12c3ed);}else{return _0x2b0ce9(_0x516079);}});});}function sentiment(_0x720ca3,_0x4adf34,_0x57449d,_0x490973,_0x186fee){return new Promise(function(_0x12ecad,_0x8387b3){var _0x41ff1c=new AWS[(_0x7586('0xa'))]({'accessKeyId':_0x4adf34,'secretAccessKey':_0x720ca3,'region':_0x57449d});_0x41ff1c['detectSentiment']({'Text':_0x490973,'LanguageCode':_0x186fee[_0x7586('0xb')](0x0,0x2)},function(_0x5be50b,_0x36c906){if(_0x5be50b){return _0x8387b3(_0x5be50b);}else{return _0x12ecad(_0x36c906);}});});}function checkTranscribeJob(_0xa6d6a5,_0x345920,_0x40e1b5){var _0x3b589e;return new BPromise(function(_0x1837f8,_0x45b88c){logger[_0x7586('0xc')](util[_0x7586('0xd')](_0x7586('0xe'),_0xa6d6a5['id'],_0xa6d6a5[_0x7586('0xf')]));return getTranscriptionJob(_0x40e1b5['data1'],_0x40e1b5[_0x7586('0x10')],_0x345920[_0x7586('0x11')],_0xa6d6a5[_0x7586('0xf')])[_0x7586('0x12')](function(_0x3b8cad){logger[_0x7586('0xc')](util[_0x7586('0xd')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0xa6d6a5['id'],_0xa6d6a5[_0x7586('0xf')],_0x3b8cad[_0x7586('0x13')]['TranscriptionJobStatus']));if(!_0xa6d6a5[_0x7586('0x14')]){switch(_0x3b8cad['TranscriptionJob'][_0x7586('0x15')]){case _0x7586('0x16'):var _0x3137b1={'transcribeStatus':_0x3b8cad[_0x7586('0x13')][_0x7586('0x15')],'fileUri':_0x3b8cad[_0x7586('0x13')][_0x7586('0x17')][_0x7586('0x18')]};logger[_0x7586('0xc')](util[_0x7586('0xd')](_0x7586('0x19'),_0xa6d6a5['id']));return rp({'uri':_0x3b8cad[_0x7586('0x13')][_0x7586('0x17')]['TranscriptFileUri'],'json':!![]})[_0x7586('0x12')](function(_0x5c4fcf){logger[_0x7586('0xc')](util[_0x7586('0xd')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0xa6d6a5['id']));if(_0x5c4fcf&&_0x5c4fcf[_0x7586('0x1a')]&&_0x5c4fcf[_0x7586('0x1a')]['transcripts']&&_0x5c4fcf[_0x7586('0x1a')][_0x7586('0x1b')][_0x7586('0x1c')]){_0x3137b1['fileText']='';for(var _0x1848ee=0x0;_0x1848ee<_0x5c4fcf[_0x7586('0x1a')][_0x7586('0x1b')][_0x7586('0x1c')];_0x1848ee++){_0x3137b1[_0x7586('0x14')]+=_0x5c4fcf[_0x7586('0x1a')]['transcripts'][_0x1848ee]['transcript']+'';}}return _0xa6d6a5[_0x7586('0x1d')](_0x3137b1);})['then'](function(){logger[_0x7586('0xc')](util[_0x7586('0xd')](_0x7586('0x1e'),_0xa6d6a5['id']));if(!_0xa6d6a5[_0x7586('0x1f')]){throw new db[(_0x7586('0x20'))][(_0x7586('0x21'))](_0x7586('0x22'));}if(!_0x345920['sentiment']||!_0x345920['sentimentAccountId']||!_0x345920[_0x7586('0x23')]||!_0x345920[_0x7586('0x24')]||!_0x345920[_0x7586('0x25')]){throw new db[(_0x7586('0x20'))][(_0x7586('0x21'))](_0x7586('0x26'));}if(!_0x3137b1[_0x7586('0x14')]){throw new Error('Transcript\x20not\x20available');}if(_0x345920[_0x7586('0x27')]===_0x40e1b5['id']){return _0x40e1b5;}else{return db[_0x7586('0x28')]['findOne']({'where':{'id':_settings[_0x7586('0x27')]}});}})[_0x7586('0x12')](function(_0x50a34d){if(!_0x50a34d){throw new db[(_0x7586('0x20'))][(_0x7586('0x21'))](_0x7586('0x29'));}if(!_0x50a34d[_0x7586('0x2a')]||!_0x50a34d[_0x7586('0x10')]){throw new db[(_0x7586('0x20'))][(_0x7586('0x21'))](_0x7586('0x2b'));}_0x3b589e=_0x50a34d;logger[_0x7586('0xc')](util[_0x7586('0xd')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0xa6d6a5['id']));return sentiment(_0x3b589e[_0x7586('0x2a')],_0x3b589e['data2'],_0x345920[_0x7586('0x23')],_0x3137b1[_0x7586('0x14')],_0x345920[_0x7586('0x24')]);})[_0x7586('0x12')](function(_0x186010){logger[_0x7586('0xc')](util['format'](_0x7586('0x2c'),_0xa6d6a5['id']));return _0xa6d6a5[_0x7586('0x1d')]({'sentiment':_0x186010['Sentiment'],'sPositive':_0x186010[_0x7586('0x2d')]['Positive'],'sNegative':_0x186010[_0x7586('0x2d')][_0x7586('0x2e')],'sMixed':_0x186010['SentimentScore']['Mixed'],'sNeutral':_0x186010[_0x7586('0x2d')][_0x7586('0x2f')]});})['then'](function(){logger[_0x7586('0xc')](util[_0x7586('0xd')](_0x7586('0x1e'),_0xa6d6a5['id']));_0x1837f8();});case _0x7586('0x30'):return _0xa6d6a5[_0x7586('0x1d')]({'transcribeStatus':_0x7586('0x30'),'failureReason':_0x3b8cad[_0x7586('0x13')][_0x7586('0x31')]})['then'](function(){logger['info'](util[_0x7586('0xd')](_0x7586('0x1e'),_0xa6d6a5['id']));_0x1837f8();});default:logger[_0x7586('0xc')](util['format'](_0x7586('0x32'),_0xa6d6a5['id']));break;}}else{return BPromise[_0x7586('0x33')]()[_0x7586('0x12')](function(){if(!_0xa6d6a5[_0x7586('0x1f')]){throw new db[(_0x7586('0x20'))]['ValidationError'](_0x7586('0x22'));}if(!_0x345920[_0x7586('0x34')]||!_0x345920[_0x7586('0x27')]||!_0x345920[_0x7586('0x23')]||!_0x345920[_0x7586('0x24')]||!_0x345920[_0x7586('0x25')]){throw new db[(_0x7586('0x20'))][(_0x7586('0x21'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0xa6d6a5['fileText']){throw new Error(_0x7586('0x35'));}if(_0x345920['sentimentAccountId']===_0x40e1b5['id']){return _0x40e1b5;}else{return db[_0x7586('0x28')]['findOne']({'where':{'id':_settings[_0x7586('0x27')]}});}})[_0x7586('0x12')](function(_0x2fd0d0){if(!_0x2fd0d0){throw new db[(_0x7586('0x20'))]['ValidationError'](_0x7586('0x29'));}if(!_0x2fd0d0[_0x7586('0x2a')]||!_0x2fd0d0['data2']){throw new db[(_0x7586('0x20'))][(_0x7586('0x21'))]('Cloud\x20Provider\x20not\x20configured');}_0x3b589e=_0x2fd0d0;logger[_0x7586('0xc')](util['format'](_0x7586('0x36'),_0xa6d6a5['id']));return sentiment(_0x3b589e[_0x7586('0x2a')],_0x3b589e[_0x7586('0x10')],_0x345920['sentimentRegion'],_0xa6d6a5[_0x7586('0x14')],_0x345920[_0x7586('0x24')]);})[_0x7586('0x12')](function(_0x4b3e03){logger[_0x7586('0xc')](util[_0x7586('0xd')](_0x7586('0x2c'),_0xa6d6a5['id']));return _0xa6d6a5[_0x7586('0x1d')]({'sentiment':_0x4b3e03['Sentiment'],'sPositive':_0x4b3e03[_0x7586('0x2d')][_0x7586('0x37')],'sNegative':_0x4b3e03[_0x7586('0x2d')][_0x7586('0x2e')],'sMixed':_0x4b3e03[_0x7586('0x2d')][_0x7586('0x38')],'sNeutral':_0x4b3e03[_0x7586('0x2d')][_0x7586('0x2f')],'transcribeStatus':_0x7586('0x16')});})['then'](function(){logger[_0x7586('0xc')](util[_0x7586('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0xa6d6a5['id']));_0x1837f8();});}})[_0x7586('0x39')](function(_0x2f11ec){if(_0x2f11ec){if(!_0x2f11ec[_0x7586('0x3a')]||_0x2f11ec[_0x7586('0x3a')]!==_0x7586('0x3b')){logger[_0x7586('0x3c')](util[_0x7586('0xd')]('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0xa6d6a5['id']),util['inspect'](_0x2f11ec,{'showHidden':![],'depth':null}));}}_0x1837f8();});});}function checkTranscribe(){var _0x38b64f;var _0x24fb66;var _0x2bc189;return db[_0x7586('0x3d')][_0x7586('0x3e')]({'where':{'transcribeStatus':_0x7586('0x3f')}})[_0x7586('0x12')](function(_0x5c186c){if(!_0x5c186c||!_0x5c186c[_0x7586('0x1c')]){throw new db[(_0x7586('0x20'))][(_0x7586('0x21'))]('No\x20transcribe\x20job\x20to\x20check');}_0x38b64f=_0x5c186c;return db[_0x7586('0x40')][_0x7586('0x41')]({'where':{'id':0x1}});})[_0x7586('0x12')](function(_0x4dde22){if(!_0x4dde22){throw new db[(_0x7586('0x20'))][(_0x7586('0x21'))](_0x7586('0x42'));}_0x24fb66=_0x4dde22;if(!_0x24fb66[_0x7586('0x7')]||!_0x24fb66[_0x7586('0x43')]||!_0x24fb66[_0x7586('0x11')]||!_0x24fb66[_0x7586('0x24')]||!_0x24fb66[_0x7586('0x25')]){throw new db[(_0x7586('0x20'))][(_0x7586('0x21'))](_0x7586('0x44'));}return db[_0x7586('0x28')][_0x7586('0x41')]({'where':{'id':_0x24fb66[_0x7586('0x43')]}});})['then'](function(_0x5c9aa1){if(!_0x5c9aa1){throw new db['Sequelize']['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x5c9aa1[_0x7586('0x2a')]||!_0x5c9aa1[_0x7586('0x10')]){throw new db['Sequelize']['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x2bc189=_0x5c9aa1;var _0x141ee8=[];_0x38b64f[_0x7586('0x45')](function(_0xac7c7){_0x141ee8[_0x7586('0x46')](checkTranscribeJob(_0xac7c7,_0x24fb66,_0x2bc189));});return BPromise['all'](_0x141ee8);})[_0x7586('0x39')](function(_0x51ebc5){if(_0x51ebc5){if(!_0x51ebc5['name']||_0x51ebc5[_0x7586('0x3a')]!==_0x7586('0x3b')){logger[_0x7586('0x3c')](util[_0x7586('0x47')](_0x51ebc5,{'showHidden':![],'depth':null}));}}});}exports[_0x7586('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index b814289..33a9246 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2c4=['localhost','socket.io-emitter','lastMsgAt','subtract','hours','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','YYYY-MM-DD\x20HH:mm:ss','emit','whatsappInteraction:update','inspect','lodash','moment','ioredis','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults'];(function(_0x20a1b7,_0x3a224f){var _0x425841=function(_0x4a85f4){while(--_0x4a85f4){_0x20a1b7['push'](_0x20a1b7['shift']());}};_0x425841(++_0x3a224f);}(_0xd2c4,0x93));var _0x4d2c=function(_0x54dcad,_0x554f46){_0x54dcad=_0x54dcad-0x0;var _0x537c56=_0xd2c4[_0x54dcad];return _0x537c56;};'use strict';var _=require(_0x4d2c('0x0'));var moment=require(_0x4d2c('0x1'));var Redis=require(_0x4d2c('0x2'));var util=require('util');var config=require(_0x4d2c('0x3'));var db=require(_0x4d2c('0x4'))['db'];var logger=require(_0x4d2c('0x5'))(_0x4d2c('0x6'));config[_0x4d2c('0x7')]=_[_0x4d2c('0x8')](config['redis'],{'host':_0x4d2c('0x9'),'port':0x18eb});var io=require(_0x4d2c('0xa'))(new Redis(config[_0x4d2c('0x7')]));function closeInteractions(){var _0x9db10b=[];return db['WhatsappInteraction']['findAll']({'raw':!![],'attributes':['id',_0x4d2c('0xb')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x4d2c('0xc')](0x18,_0x4d2c('0xd'))}}})[_0x4d2c('0xe')](function(_0x91f55c){if(_0x91f55c&&_0x91f55c[_0x4d2c('0xf')]){_0x9db10b=_[_0x4d2c('0x10')](_0x91f55c||[],'id');logger[_0x4d2c('0x11')](_0x4d2c('0x12'),_0x9db10b[_0x4d2c('0x13')]());return db['WhatsappInteraction'][_0x4d2c('0x14')]({'closeReason':_0x4d2c('0x15'),'disposition':'timeout','closed':!![],'closedAt':moment()['format'](_0x4d2c('0x16'))},{'where':{'id':_0x9db10b}});}})[_0x4d2c('0xe')](function(){if(_0x9db10b&&_0x9db10b[_0x4d2c('0xf')]){logger[_0x4d2c('0x11')]('[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:',_0x9db10b[_0x4d2c('0x13')]());for(var _0x241e69=0x0;_0x241e69<_0x9db10b[_0x4d2c('0xf')];_0x241e69++){io[_0x4d2c('0x17')](_0x4d2c('0x18'),{'id':_0x9db10b[_0x241e69],'closed':!![]});}}})['catch'](function(_0x3b6be8){logger['error']('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x3b6be8?util[_0x4d2c('0x19')](_0x3b6be8,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x0e56=['../../config/environment','../logger','schedule','redis','defaults','localhost','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','hours','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','start','lodash','moment','util'];(function(_0xf46b55,_0x50ff18){var _0x13f862=function(_0x43e629){while(--_0x43e629){_0xf46b55['push'](_0xf46b55['shift']());}};_0x13f862(++_0x50ff18);}(_0x0e56,0xf5));var _0x60e5=function(_0x1900bd,_0x48a6b6){_0x1900bd=_0x1900bd-0x0;var _0x5c162e=_0x0e56[_0x1900bd];return _0x5c162e;};'use strict';var _=require(_0x60e5('0x0'));var moment=require(_0x60e5('0x1'));var Redis=require('ioredis');var util=require(_0x60e5('0x2'));var config=require(_0x60e5('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0x60e5('0x4'))(_0x60e5('0x5'));config[_0x60e5('0x6')]=_[_0x60e5('0x7')](config[_0x60e5('0x6')],{'host':_0x60e5('0x8'),'port':0x18eb});var io=require(_0x60e5('0x9'))(new Redis(config['redis']));function closeInteractions(){var _0x1b44b9=[];return db[_0x60e5('0xa')][_0x60e5('0xb')]({'raw':!![],'attributes':['id',_0x60e5('0xc')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0x60e5('0xd'))}}})[_0x60e5('0xe')](function(_0x46d531){if(_0x46d531&&_0x46d531[_0x60e5('0xf')]){_0x1b44b9=_[_0x60e5('0x10')](_0x46d531||[],'id');logger[_0x60e5('0x11')](_0x60e5('0x12'),_0x1b44b9[_0x60e5('0x13')]());return db[_0x60e5('0xa')][_0x60e5('0x14')]({'closeReason':_0x60e5('0x15'),'disposition':_0x60e5('0x16'),'closed':!![],'closedAt':moment()[_0x60e5('0x17')](_0x60e5('0x18'))},{'where':{'id':_0x1b44b9}});}})[_0x60e5('0xe')](function(){if(_0x1b44b9&&_0x1b44b9[_0x60e5('0xf')]){logger['info'](_0x60e5('0x19'),_0x1b44b9['join']());for(var _0x5864ab=0x0;_0x5864ab<_0x1b44b9[_0x60e5('0xf')];_0x5864ab++){io[_0x60e5('0x1a')]('whatsappInteraction:update',{'id':_0x1b44b9[_0x5864ab],'closed':!![]});}}})[_0x60e5('0x1b')](function(_0xa12117){logger[_0x60e5('0x1c')](_0x60e5('0x1d'),_0xa12117?util['inspect'](_0xa12117,{'showHidden':![],'depth':null}):'');});}exports[_0x60e5('0x1e')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index e56f1b6..5f5323e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28a9=['../mysqldb','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com','now','CmContact','destroy','then','bulkCreate','log','finished\x20populating','CmHopper','hopper1','contacts2','hopper2','catch','util'];(function(_0x286726,_0x20a337){var _0xcd4fe9=function(_0x4d7da6){while(--_0x4d7da6){_0x286726['push'](_0x286726['shift']());}};_0xcd4fe9(++_0x20a337);}(_0x28a9,0x97));var _0x928a=function(_0x371f28,_0x315fc9){_0x371f28=_0x371f28-0x0;var _0x3b690f=_0x28a9[_0x371f28];return _0x3b690f;};'use strict';var util=require(_0x928a('0x0'));var db=require(_0x928a('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x928a('0x2')]({'id':i,'firstName':_0x928a('0x3')+i,'lastName':_0x928a('0x4')+i,'phone':0xf879fb460+i,'email':_0x928a('0x5')+i+_0x928a('0x6')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date[_0x928a('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x928a('0x7')](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':_0x928a('0x3')+i,'lastName':_0x928a('0x4')+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0x928a('0x6')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x928a('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x928a('0x7')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x928a('0x7')](),'updatedAt':Date[_0x928a('0x7')]()});}db[_0x928a('0x8')][_0x928a('0x9')]({'where':{}})[_0x928a('0xa')](function(){return db[_0x928a('0x8')][_0x928a('0xb')](contacts);})[_0x928a('0xa')](function(){console[_0x928a('0xc')](_0x928a('0xd'),'contacts1');return db[_0x928a('0xe')][_0x928a('0x9')]({'where':{}});})['then'](function(){return db[_0x928a('0xe')][_0x928a('0xb')](hopper);})[_0x928a('0xa')](function(){console[_0x928a('0xc')]('finished\x20populating',_0x928a('0xf'));return db[_0x928a('0x8')][_0x928a('0xb')](contacts2);})[_0x928a('0xa')](function(){console[_0x928a('0xc')](_0x928a('0xd'),_0x928a('0x10'));return db[_0x928a('0xe')]['bulkCreate'](hopper2);})[_0x928a('0xa')](function(){console[_0x928a('0xc')](_0x928a('0xd'),_0x928a('0x11'));})[_0x928a('0x12')](function(_0x626c3a){console[_0x928a('0xc')](_0x626c3a);});
\ No newline at end of file
+var _0xdd90=['contacts1','CmHopper','log','hopper1','CmContact','contacts2','util','../mysqldb','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com','now','bulkCreate','then','finished\x20populating'];(function(_0x580eb0,_0x3e5ac8){var _0x3d6b7d=function(_0x4938b9){while(--_0x4938b9){_0x580eb0['push'](_0x580eb0['shift']());}};_0x3d6b7d(++_0x3e5ac8);}(_0xdd90,0x1e2));var _0x0dd9=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xdd90[_0x4e676e];return _0x336a3c;};'use strict';var util=require(_0x0dd9('0x0'));var db=require(_0x0dd9('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x0dd9('0x2')]({'id':i,'firstName':_0x0dd9('0x3')+i,'lastName':_0x0dd9('0x4')+i,'phone':0xf879fb460+i,'email':_0x0dd9('0x5')+i+_0x0dd9('0x6')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0x0dd9('0x7')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x0dd9('0x2')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0x0dd9('0x4')+i,'phone':0xf879fb460+i,'email':_0x0dd9('0x5')+i+'@xcally.com'});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x0dd9('0x2')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x0dd9('0x7')](),'updatedAt':Date['now']()});}db['CmContact']['destroy']({'where':{}})['then'](function(){return db['CmContact'][_0x0dd9('0x8')](contacts);})[_0x0dd9('0x9')](function(){console['log'](_0x0dd9('0xa'),_0x0dd9('0xb'));return db['CmHopper']['destroy']({'where':{}});})['then'](function(){return db[_0x0dd9('0xc')][_0x0dd9('0x8')](hopper);})[_0x0dd9('0x9')](function(){console[_0x0dd9('0xd')](_0x0dd9('0xa'),_0x0dd9('0xe'));return db[_0x0dd9('0xf')][_0x0dd9('0x8')](contacts2);})['then'](function(){console[_0x0dd9('0xd')](_0x0dd9('0xa'),_0x0dd9('0x10'));return db[_0x0dd9('0xc')][_0x0dd9('0x8')](hopper2);})[_0x0dd9('0x9')](function(){console[_0x0dd9('0xd')]('finished\x20populating','hopper2');})['catch'](function(_0x53da8e){console[_0x0dd9('0xd')](_0x53da8e);});
\ No newline at end of file
index 96ad572..d970c5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1f0=['%s%s@xcally.com','password','friend','udp','wss','ulaw','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','\x22%s\x22\x20<%s>','log','add\x20user','catch','util','../mysqldb','push','format','%s%s','agent'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xb1f0,0x117));var _0x0b1f=function(_0x4aa3d0,_0x808994){_0x4aa3d0=_0x4aa3d0-0x0;var _0xb8e894=_0xb1f0[_0x4aa3d0];return _0xb8e894;};'use strict';var util=require(_0x0b1f('0x0'));var db=require(_0x0b1f('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x0b1f('0x2')]({'name':util[_0x0b1f('0x3')](_0x0b1f('0x4'),_0x0b1f('0x5'),i),'fullname':util['format']('%s%s',_0x0b1f('0x5'),i),'email':util[_0x0b1f('0x3')](_0x0b1f('0x6'),'agent',i),'role':_0x0b1f('0x5'),'password':_0x0b1f('0x7'),'internal':0xfa0+i,'type':_0x0b1f('0x8'),'transport':[_0x0b1f('0x9'),'ws',_0x0b1f('0xa')],'disallow':['all'],'allow':[_0x0b1f('0xb')],'defaultuser':util[_0x0b1f('0x3')](_0x0b1f('0x4'),'agent',i),'encryption':_0x0b1f('0xc'),'avpf':_0x0b1f('0xc'),'force_avp':_0x0b1f('0xc'),'icesupport':_0x0b1f('0xc'),'dtlsenable':_0x0b1f('0xc'),'dtlsverify':'no','dtlscertfile':_0x0b1f('0xd'),'dtlsprivatekey':_0x0b1f('0xe'),'dtlssetup':'actpass','callerid':util[_0x0b1f('0x3')](_0x0b1f('0xf'),util['format'](_0x0b1f('0x4'),'agent',i),0xfa0+i)});}db['User']['bulkCreate'](users)['then'](function(){console[_0x0b1f('0x10')](_0x0b1f('0x11'));})[_0x0b1f('0x12')](function(_0x318388){console[_0x0b1f('0x10')](_0x318388);});
\ No newline at end of file
+var _0x3d2c=['/etc/pki/tls/private/motion.key','\x22%s\x22\x20<%s>','User','bulkCreate','then','log','push','%s%s','agent','format','%s%s@xcally.com','password','wss','ulaw','yes'];(function(_0x6d7b1d,_0x2e5a5e){var _0x2114ba=function(_0x432a46){while(--_0x432a46){_0x6d7b1d['push'](_0x6d7b1d['shift']());}};_0x2114ba(++_0x2e5a5e);}(_0x3d2c,0x1c8));var _0xc3d2=function(_0x322bbf,_0x4878d0){_0x322bbf=_0x322bbf-0x0;var _0x49a7b1=_0x3d2c[_0x322bbf];return _0x49a7b1;};'use strict';var util=require('util');var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0xc3d2('0x0')]({'name':util['format'](_0xc3d2('0x1'),_0xc3d2('0x2'),i),'fullname':util[_0xc3d2('0x3')]('%s%s',_0xc3d2('0x2'),i),'email':util['format'](_0xc3d2('0x4'),'agent',i),'role':_0xc3d2('0x2'),'password':_0xc3d2('0x5'),'internal':0xfa0+i,'type':'friend','transport':['udp','ws',_0xc3d2('0x6')],'disallow':['all'],'allow':[_0xc3d2('0x7')],'defaultuser':util[_0xc3d2('0x3')]('%s%s',_0xc3d2('0x2'),i),'encryption':_0xc3d2('0x8'),'avpf':_0xc3d2('0x8'),'force_avp':_0xc3d2('0x8'),'icesupport':'yes','dtlsenable':_0xc3d2('0x8'),'dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':_0xc3d2('0x9'),'dtlssetup':'actpass','callerid':util[_0xc3d2('0x3')](_0xc3d2('0xa'),util[_0xc3d2('0x3')](_0xc3d2('0x1'),'agent',i),0xfa0+i)});}db[_0xc3d2('0xb')][_0xc3d2('0xc')](users)[_0xc3d2('0xd')](function(){console[_0xc3d2('0xe')]('add\x20user');})['catch'](function(_0x3808c5){console['log'](_0x3808c5);});
\ No newline at end of file
index c2893f0..d87f044 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cad=['ChatQueues','SmsQueues','OpenchannelQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','telephone','Campaign','%s:queue:%s','length','format','user:%s','handshake','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','WhatsappInteractions','voice:inbound','voice:outbound','hasOwnProperty','include','push','ChatQueue','FaxQueue','MailQueue','WhatsappQueue','Trunk','VoiceQueue','OpenchannelQueue','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','fax','sms','mail','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','removeChatInteractions','user_has_chat_interactions:remove','removeMailInteractions','emit','user_has_mail_interactions:remove','user_has_fax_interactions:remove','leave','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','catch','join','default','connection','setMaxListeners','address','request','connectedAt','log','SocketIO\x20','nsp','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','Agents','User','name','role','agent','type','ivr','UserProfileSection','then','VoiceQueues'];(function(_0x5748f3,_0x912cca){var _0x53171e=function(_0x468516){while(--_0x468516){_0x5748f3['push'](_0x5748f3['shift']());}};_0x53171e(++_0x912cca);}(_0x4cad,0x179));var _0xd4ca=function(_0x3194f2,_0x182b12){_0x3194f2=_0x3194f2-0x0;var _0xebde01=_0x4cad[_0x3194f2];return _0xebde01;};'use strict';var _=require(_0xd4ca('0x0'));var util=require(_0xd4ca('0x1'));var BPromise=require(_0xd4ca('0x2'));var db=require(_0xd4ca('0x3'))['db'];var config=require(_0xd4ca('0x4'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0xd4ca('0x5'),'model':db[_0xd4ca('0x6')],'attributes':['id',_0xd4ca('0x7'),_0xd4ca('0x8')],'raw':!![],'where':{'role':_0xd4ca('0x9')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xd4ca('0x7')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0xd4ca('0xa')],'where':{'type':_0xd4ca('0xb')}};function getAssociatedResources(_0x46c3bf,_0x310286,_0x2420e8){return db[_0xd4ca('0xc')]['findOne']({'where':{'name':_0x46c3bf,'userProfileId':_0x310286},'raw':!![]})[_0xd4ca('0xd')](function(_0x382bb4){if(_0x382bb4){if(_0x382bb4['autoAssociation']){switch(_0x46c3bf){case _0xd4ca('0xe'):case _0xd4ca('0xf'):case'FaxQueues':case _0xd4ca('0x10'):case'MailQueues':case _0xd4ca('0x11'):case'WhatsappQueues':return db[_0x2420e8][_0xd4ca('0x12')](queryQueues);case _0xd4ca('0x13'):return db[_0x2420e8][_0xd4ca('0x12')](queryTelephones);case _0xd4ca('0x14'):return db[_0x2420e8]['findAll'](queryTrunks);case _0xd4ca('0x15'):return db[_0x2420e8][_0xd4ca('0x12')](queryCampaigns);}}else{return db[_0xd4ca('0x16')][_0xd4ca('0x12')]({'attributes':[_0xd4ca('0x17')],'where':{'sectionId':_0x382bb4['id']},'raw':!![]})[_0xd4ca('0xd')](function(_0x43cd03){if(_0x43cd03){var _0x12a302={'where':{'id':_[_0xd4ca('0x18')](_0x43cd03,'resourceId')},'raw':!![]};switch(_0x2420e8){case _0xd4ca('0x6'):_0x12a302[_0xd4ca('0x19')][_0xd4ca('0x8')]=_0xd4ca('0x1a');break;case _0xd4ca('0x1b'):_0x12a302[_0xd4ca('0x19')][_0xd4ca('0xa')]=_0xd4ca('0xb');break;}return db[_0x2420e8][_0xd4ca('0x12')](_0x12a302);}else{return[];}});}}else{return[];}})['then'](function(_0x1151bd){return _0x1151bd;});}function joinOrLeaveQueues(_0x17e59f,_0x44c043,_0x3661db,_0x12e211){_0x17e59f[_0x44c043](util['format'](_0xd4ca('0x1c'),_0x3661db,_0x12e211[_0xd4ca('0x7')]));if(_0x12e211[_0xd4ca('0x5')]){for(var _0xbd2d6f=0x0;_0xbd2d6f<_0x12e211[_0xd4ca('0x5')][_0xd4ca('0x1d')];_0xbd2d6f+=0x1){_0x17e59f[_0x44c043](util[_0xd4ca('0x1e')](_0xd4ca('0x1f'),_0x12e211[_0xd4ca('0x5')][_0xbd2d6f][_0xd4ca('0x7')]));}}}function joinOrLeave(_0x2c705e,_0x46bfb3,_0x4300d1){var _0x4b7798;if(_0x2c705e[_0xd4ca('0x20')][_0xd4ca('0x21')]['id']){db[_0xd4ca('0x6')][_0xd4ca('0x22')]({'attributes':['id','name',_0xd4ca('0x8'),_0xd4ca('0x23')],'where':{'id':_0x2c705e[_0xd4ca('0x20')][_0xd4ca('0x21')]['id']},'include':[{'model':db[_0xd4ca('0x24')],'as':_0xd4ca('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0xd4ca('0x26')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xd4ca('0x27')],'as':_0xd4ca('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0xd4ca('0x29')],'as':_0xd4ca('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0xd4ca('0x2b')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0xd4ca('0x2c'),'attributes':['id'],'raw':!![]}]})[_0xd4ca('0xd')](function(_0x2bff12){if(_0x2bff12){_0x4b7798=_0x2bff12;_0x2c705e[_0x46bfb3](util[_0xd4ca('0x1e')](_0xd4ca('0x1f'),_0x2bff12[_0xd4ca('0x7')]));var _0x2f4483=[];switch(_0x2bff12[_0xd4ca('0x8')]){case'admin':_0x2c705e[_0x46bfb3](_0xd4ca('0x2d'));_0x2c705e[_0x46bfb3](_0xd4ca('0x2e'));if(queryQueues[_0xd4ca('0x2f')](_0xd4ca('0x30'))){delete queryQueues[_0xd4ca('0x30')];}_0x2f4483[_0xd4ca('0x31')](db['VoiceQueue']['findAll'](queryQueues));_0x2f4483[_0xd4ca('0x31')](db[_0xd4ca('0x32')]['findAll'](queryQueues));_0x2f4483[_0xd4ca('0x31')](db[_0xd4ca('0x33')]['findAll'](queryQueues));_0x2f4483[_0xd4ca('0x31')](db['SmsQueue'][_0xd4ca('0x12')](queryQueues));_0x2f4483[_0xd4ca('0x31')](db[_0xd4ca('0x34')]['findAll'](queryQueues));_0x2f4483[_0xd4ca('0x31')](db['OpenchannelQueue']['findAll'](queryQueues));_0x2f4483[_0xd4ca('0x31')](db[_0xd4ca('0x35')][_0xd4ca('0x12')](queryQueues));_0x2f4483[_0xd4ca('0x31')](db[_0xd4ca('0x6')][_0xd4ca('0x12')](queryTelephones));_0x2f4483[_0xd4ca('0x31')](db[_0xd4ca('0x36')][_0xd4ca('0x12')](queryTrunks));_0x2f4483['push'](db[_0xd4ca('0x1b')][_0xd4ca('0x12')](queryCampaigns));_0x2f4483[_0xd4ca('0x31')](db['User'][_0xd4ca('0x12')](queryAgents));break;case'user':_0x2c705e[_0x46bfb3](_0xd4ca('0x2d'));_0x2c705e[_0x46bfb3](_0xd4ca('0x2e'));_0x2f4483[_0xd4ca('0x31')](getAssociatedResources(_0xd4ca('0xe'),_0x2bff12['userProfileId'],_0xd4ca('0x37')));_0x2f4483[_0xd4ca('0x31')](getAssociatedResources('ChatQueues',_0x2bff12[_0xd4ca('0x23')],_0xd4ca('0x32')));_0x2f4483['push'](getAssociatedResources('FaxQueues',_0x2bff12[_0xd4ca('0x23')],_0xd4ca('0x33')));_0x2f4483[_0xd4ca('0x31')](getAssociatedResources(_0xd4ca('0x10'),_0x2bff12['userProfileId'],'SmsQueue'));_0x2f4483[_0xd4ca('0x31')](getAssociatedResources('MailQueues',_0x2bff12['userProfileId'],_0xd4ca('0x34')));_0x2f4483['push'](getAssociatedResources('OpenchannelQueues',_0x2bff12[_0xd4ca('0x23')],_0xd4ca('0x38')));_0x2f4483['push'](getAssociatedResources('WhatsappQueues',_0x2bff12[_0xd4ca('0x23')],_0xd4ca('0x35')));_0x2f4483[_0xd4ca('0x31')](getAssociatedResources(_0xd4ca('0x13'),_0x2bff12[_0xd4ca('0x23')],_0xd4ca('0x6')));_0x2f4483['push'](getAssociatedResources(_0xd4ca('0x14'),_0x2bff12[_0xd4ca('0x23')],_0xd4ca('0x36')));_0x2f4483[_0xd4ca('0x31')](getAssociatedResources(_0xd4ca('0x15'),_0x2bff12[_0xd4ca('0x23')],_0xd4ca('0x1b')));_0x2f4483[_0xd4ca('0x31')](db['User'][_0xd4ca('0x12')](queryAgents));break;case _0xd4ca('0x9'):_0x2c705e[_0x46bfb3]('voice:inbound');_0x2c705e[_0x46bfb3](_0xd4ca('0x2e'));_0x2f4483[_0xd4ca('0x31')](_0x2bff12[_0xd4ca('0x39')]({'attributes':['id',_0xd4ca('0x7')]}));_0x2f4483[_0xd4ca('0x31')](_0x2bff12[_0xd4ca('0x3a')]({'attributes':['id',_0xd4ca('0x7')]}));_0x2f4483['push'](_0x2bff12[_0xd4ca('0x3b')]({'attributes':['id',_0xd4ca('0x7')]}));_0x2f4483[_0xd4ca('0x31')](_0x2bff12[_0xd4ca('0x3c')]({'attributes':['id',_0xd4ca('0x7')]}));_0x2f4483[_0xd4ca('0x31')](_0x2bff12[_0xd4ca('0x3d')]({'attributes':['id','name']}));_0x2f4483['push'](_0x2bff12[_0xd4ca('0x3e')]({'attributes':['id',_0xd4ca('0x7')]}));_0x2f4483[_0xd4ca('0x31')](_0x2bff12[_0xd4ca('0x3f')]({'attributes':['id','name']}));break;}return BPromise[_0xd4ca('0x40')](_0x2f4483);}})[_0xd4ca('0xd')](function(_0x59d8c6){if(_0x59d8c6&&_0x59d8c6[_0xd4ca('0x1d')]){for(var _0x1472c8=0x0;_0x1472c8<_0x59d8c6[_0xd4ca('0x1d')];_0x1472c8+=0x1){for(var _0x8e57c=0x0;_0x8e57c<_0x59d8c6[_0x1472c8][_0xd4ca('0x1d')];_0x8e57c+=0x1){switch(_0x1472c8){case 0x0:joinOrLeaveQueues(_0x2c705e,_0x46bfb3,_0xd4ca('0x41'),_0x59d8c6[_0x1472c8][_0x8e57c]);break;case 0x1:joinOrLeaveQueues(_0x2c705e,_0x46bfb3,_0xd4ca('0x42'),_0x59d8c6[_0x1472c8][_0x8e57c]);break;case 0x2:joinOrLeaveQueues(_0x2c705e,_0x46bfb3,_0xd4ca('0x43'),_0x59d8c6[_0x1472c8][_0x8e57c]);break;case 0x3:joinOrLeaveQueues(_0x2c705e,_0x46bfb3,_0xd4ca('0x44'),_0x59d8c6[_0x1472c8][_0x8e57c]);break;case 0x4:joinOrLeaveQueues(_0x2c705e,_0x46bfb3,_0xd4ca('0x45'),_0x59d8c6[_0x1472c8][_0x8e57c]);break;case 0x5:joinOrLeaveQueues(_0x2c705e,_0x46bfb3,'openchannel',_0x59d8c6[_0x1472c8][_0x8e57c]);break;case 0x6:joinOrLeaveQueues(_0x2c705e,_0x46bfb3,_0xd4ca('0x46'),_0x59d8c6[_0x1472c8][_0x8e57c]);break;case 0x7:if(_0x4b7798['role']!==_0xd4ca('0x9'))_0x2c705e[_0x46bfb3](util[_0xd4ca('0x1e')](_0xd4ca('0x47'),_0x59d8c6[_0x1472c8][_0x8e57c]['name']));break;case 0x8:if(_0x4b7798[_0xd4ca('0x8')]!==_0xd4ca('0x9'))_0x2c705e[_0x46bfb3](util[_0xd4ca('0x1e')](_0xd4ca('0x48'),_0x59d8c6[_0x1472c8][_0x8e57c][_0xd4ca('0x7')]));break;case 0x9:if(_0x4b7798[_0xd4ca('0x8')]!=='agent')_0x2c705e[_0x46bfb3](util[_0xd4ca('0x1e')](_0xd4ca('0x49'),_0x59d8c6[_0x1472c8][_0x8e57c][_0xd4ca('0xa')],_0x59d8c6[_0x1472c8][_0x8e57c][_0xd4ca('0x7')]));break;case 0xa:_0x2c705e[_0x46bfb3](util[_0xd4ca('0x1e')](_0xd4ca('0x1f'),_0x59d8c6[_0x1472c8][_0x8e57c][_0xd4ca('0x7')]));break;}}}}})['then'](function(){if(_0x46bfb3==='leave'){var _0x1592be=_[_0xd4ca('0x18')](_0x4b7798['ChatInteractions'],'id');return _0x4b7798[_0xd4ca('0x4a')](_0x1592be)[_0xd4ca('0xd')](function(){for(var _0x29c63a=0x0;_0x29c63a<_0x1592be['length'];_0x29c63a+=0x1){_0x4300d1['emit'](_0xd4ca('0x4b'),{'ChatInteractionId':Number(_0x1592be[_0x29c63a]),'UserId':Number(_0x4b7798['id'])});}});}})[_0xd4ca('0xd')](function(){if(_0x46bfb3==='leave'){var _0x94cbc1=_['map'](_0x4b7798['MailInteractions'],'id');return _0x4b7798[_0xd4ca('0x4c')](_0x94cbc1)[_0xd4ca('0xd')](function(){for(var _0x5f22a2=0x0;_0x5f22a2<_0x94cbc1['length'];_0x5f22a2+=0x1){_0x4300d1[_0xd4ca('0x4d')](_0xd4ca('0x4e'),{'MailInteractionId':Number(_0x94cbc1[_0x5f22a2]),'UserId':Number(_0x4b7798['id'])});}});}})[_0xd4ca('0xd')](function(){if(_0x46bfb3==='leave'){var _0x20ed9b=_[_0xd4ca('0x18')](_0x4b7798[_0xd4ca('0x28')],'id');return _0x4b7798['removeFaxInteractions'](_0x20ed9b)[_0xd4ca('0xd')](function(){for(var _0x31d1a1=0x0;_0x31d1a1<_0x20ed9b['length'];_0x31d1a1+=0x1){_0x4300d1[_0xd4ca('0x4d')](_0xd4ca('0x4f'),{'FaxInteractionId':Number(_0x20ed9b[_0x31d1a1]),'UserId':Number(_0x4b7798['id'])});}});}})['then'](function(){if(_0x46bfb3===_0xd4ca('0x50')){var _0x4cb261=_[_0xd4ca('0x18')](_0x4b7798['SmsInteractions'],'id');return _0x4b7798[_0xd4ca('0x51')](_0x4cb261)[_0xd4ca('0xd')](function(){for(var _0x193a5a=0x0;_0x193a5a<_0x4cb261[_0xd4ca('0x1d')];_0x193a5a+=0x1){_0x4300d1[_0xd4ca('0x4d')](_0xd4ca('0x52'),{'SmsInteractionId':Number(_0x4cb261[_0x193a5a]),'UserId':Number(_0x4b7798['id'])});}});}})[_0xd4ca('0xd')](function(){if(_0x46bfb3===_0xd4ca('0x50')){var _0x1629e5=_[_0xd4ca('0x18')](_0x4b7798['OpenchannelInteractions'],'id');return _0x4b7798[_0xd4ca('0x53')](_0x1629e5)[_0xd4ca('0xd')](function(){for(var _0x2dd1bd=0x0;_0x2dd1bd<_0x1629e5['length'];_0x2dd1bd+=0x1){_0x4300d1[_0xd4ca('0x4d')](_0xd4ca('0x54'),{'OpenchannelInteractionId':Number(_0x1629e5[_0x2dd1bd]),'UserId':Number(_0x4b7798['id'])});}});}})['then'](function(){if(_0x46bfb3===_0xd4ca('0x50')){var _0x2fc89f=_[_0xd4ca('0x18')](_0x4b7798[_0xd4ca('0x2c')],'id');return _0x4b7798[_0xd4ca('0x55')](_0x2fc89f)[_0xd4ca('0xd')](function(){for(var _0x17ca49=0x0;_0x17ca49<_0x2fc89f[_0xd4ca('0x1d')];_0x17ca49+=0x1){_0x4300d1[_0xd4ca('0x4d')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x2fc89f[_0x17ca49]),'UserId':Number(_0x4b7798['id'])});}});}})[_0xd4ca('0x56')](function(_0x3d320f){_0x2c705e['log'](_0x3d320f);});}}function onDisconnect(_0x3a4451,_0x5a54f5){joinOrLeave(_0x3a4451,_0xd4ca('0x50'),_0x5a54f5);}function onConnect(_0x3d2f9d){joinOrLeave(_0x3d2f9d,_0xd4ca('0x57'));}exports[_0xd4ca('0x58')]=function(_0x4b37ae){_0x4b37ae['on'](_0xd4ca('0x59'),function(_0xc0bd5a){_0xc0bd5a[_0xd4ca('0x5a')](0x0);_0xc0bd5a[_0xd4ca('0x5b')]=_0xc0bd5a[_0xd4ca('0x5c')][_0xd4ca('0x59')]['remoteAddress']+':'+_0xc0bd5a[_0xd4ca('0x5c')][_0xd4ca('0x59')]['remotePort'];_0xc0bd5a[_0xd4ca('0x5d')]=new Date();_0xc0bd5a[_0xd4ca('0x5e')]=function(_0x300c1e){console[_0xd4ca('0x5e')](_0xd4ca('0x5f')+_0xc0bd5a[_0xd4ca('0x60')]['name']+'['+_0xc0bd5a[_0xd4ca('0x5b')]+']',_0x300c1e);};_0xc0bd5a['on']('disconnect',function(){onDisconnect(_0xc0bd5a,_0x4b37ae);_0xc0bd5a[_0xd4ca('0x5e')]('DISCONNECTED');});onConnect(_0xc0bd5a);_0xc0bd5a[_0xd4ca('0x5e')](_0xd4ca('0x61'));});};
\ No newline at end of file
+var _0x5d0a=['catch','default','connection','setMaxListeners','address','request','remoteAddress','remotePort','connectedAt','log','SocketIO\x20','nsp','CONNECTED','lodash','bluebird','./environment','name','Agents','User','role','agent','telephone','type','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','Telephones','findAll','Trunks','UserProfileResource','resourceId','map','length','format','user:%s','handshake','find','MailInteraction','MailInteractions','FaxInteractions','SmsInteractions','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','voice:inbound','voice:outbound','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','Trunk','Campaign','user','userProfileId','WhatsappQueue','IvrCampaigns','getVoiceQueues','getSmsQueues','getOpenchannelQueues','all','voice','chat','fax','sms','mail','openchannel','whatsapp','trunk:%s','campaign:%s:%s','removeChatInteractions','leave','emit','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions'];(function(_0x58b10a,_0x1db93a){var _0x4eb77b=function(_0x16b221){while(--_0x16b221){_0x58b10a['push'](_0x58b10a['shift']());}};_0x4eb77b(++_0x1db93a);}(_0x5d0a,0x175));var _0xa5d0=function(_0x3d981a,_0x171a05){_0x3d981a=_0x3d981a-0x0;var _0x5d22a3=_0x5d0a[_0x3d981a];return _0x5d22a3;};'use strict';var _=require(_0xa5d0('0x0'));var util=require('util');var BPromise=require(_0xa5d0('0x1'));var db=require('../mysqldb')['db'];var config=require(_0xa5d0('0x2'));var queryQueues={'attributes':['id',_0xa5d0('0x3')],'include':[{'as':_0xa5d0('0x4'),'model':db[_0xa5d0('0x5')],'attributes':['id','name',_0xa5d0('0x6')],'raw':!![],'where':{'role':_0xa5d0('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xa5d0('0x3')],'where':{'role':_0xa5d0('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0xa5d0('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0xa5d0('0x3')],'where':{'role':_0xa5d0('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xa5d0('0x3'),_0xa5d0('0x9')],'where':{'type':_0xa5d0('0xa')}};function getAssociatedResources(_0x3845b3,_0x5e3707,_0x43698e){return db[_0xa5d0('0xb')][_0xa5d0('0xc')]({'where':{'name':_0x3845b3,'userProfileId':_0x5e3707},'raw':!![]})[_0xa5d0('0xd')](function(_0x14fea2){if(_0x14fea2){if(_0x14fea2[_0xa5d0('0xe')]){switch(_0x3845b3){case _0xa5d0('0xf'):case _0xa5d0('0x10'):case _0xa5d0('0x11'):case _0xa5d0('0x12'):case'MailQueues':case _0xa5d0('0x13'):case'WhatsappQueues':return db[_0x43698e]['findAll'](queryQueues);case _0xa5d0('0x14'):return db[_0x43698e][_0xa5d0('0x15')](queryTelephones);case _0xa5d0('0x16'):return db[_0x43698e][_0xa5d0('0x15')](queryTrunks);case'IvrCampaigns':return db[_0x43698e]['findAll'](queryCampaigns);}}else{return db[_0xa5d0('0x17')][_0xa5d0('0x15')]({'attributes':[_0xa5d0('0x18')],'where':{'sectionId':_0x14fea2['id']},'raw':!![]})[_0xa5d0('0xd')](function(_0x3847bb){if(_0x3847bb){var _0x146722={'where':{'id':_[_0xa5d0('0x19')](_0x3847bb,'resourceId')},'raw':!![]};switch(_0x43698e){case _0xa5d0('0x5'):_0x146722['where'][_0xa5d0('0x6')]=_0xa5d0('0x8');break;case'Campaign':_0x146722['where'][_0xa5d0('0x9')]=_0xa5d0('0xa');break;}return db[_0x43698e]['findAll'](_0x146722);}else{return[];}});}}else{return[];}})[_0xa5d0('0xd')](function(_0x348227){return _0x348227;});}function joinOrLeaveQueues(_0x9fab4,_0x204d87,_0x10e7be,_0x9208ba){_0x9fab4[_0x204d87](util['format']('%s:queue:%s',_0x10e7be,_0x9208ba[_0xa5d0('0x3')]));if(_0x9208ba[_0xa5d0('0x4')]){for(var _0x4cc587=0x0;_0x4cc587<_0x9208ba['Agents'][_0xa5d0('0x1a')];_0x4cc587+=0x1){_0x9fab4[_0x204d87](util[_0xa5d0('0x1b')](_0xa5d0('0x1c'),_0x9208ba[_0xa5d0('0x4')][_0x4cc587][_0xa5d0('0x3')]));}}}function joinOrLeave(_0x5bd588,_0x518a60,_0x2de295){var _0x307377;if(_0x5bd588[_0xa5d0('0x1d')]['query']['id']){db[_0xa5d0('0x5')][_0xa5d0('0x1e')]({'attributes':['id',_0xa5d0('0x3'),'role','userProfileId'],'where':{'id':_0x5bd588[_0xa5d0('0x1d')]['query']['id']},'include':[{'model':db['ChatInteraction'],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xa5d0('0x1f')],'as':_0xa5d0('0x20'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0xa5d0('0x21'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0xa5d0('0x22'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0xa5d0('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0xa5d0('0x24')],'as':_0xa5d0('0x25'),'attributes':['id'],'raw':!![]}]})['then'](function(_0x5495cb){if(_0x5495cb){_0x307377=_0x5495cb;_0x5bd588[_0x518a60](util['format'](_0xa5d0('0x1c'),_0x5495cb[_0xa5d0('0x3')]));var _0x28806e=[];switch(_0x5495cb[_0xa5d0('0x6')]){case'admin':_0x5bd588[_0x518a60](_0xa5d0('0x26'));_0x5bd588[_0x518a60](_0xa5d0('0x27'));if(queryQueues['hasOwnProperty'](_0xa5d0('0x28'))){delete queryQueues[_0xa5d0('0x28')];}_0x28806e[_0xa5d0('0x29')](db[_0xa5d0('0x2a')][_0xa5d0('0x15')](queryQueues));_0x28806e[_0xa5d0('0x29')](db[_0xa5d0('0x2b')][_0xa5d0('0x15')](queryQueues));_0x28806e[_0xa5d0('0x29')](db[_0xa5d0('0x2c')][_0xa5d0('0x15')](queryQueues));_0x28806e['push'](db[_0xa5d0('0x2d')][_0xa5d0('0x15')](queryQueues));_0x28806e[_0xa5d0('0x29')](db[_0xa5d0('0x2e')]['findAll'](queryQueues));_0x28806e[_0xa5d0('0x29')](db[_0xa5d0('0x2f')]['findAll'](queryQueues));_0x28806e[_0xa5d0('0x29')](db['WhatsappQueue'][_0xa5d0('0x15')](queryQueues));_0x28806e[_0xa5d0('0x29')](db['User']['findAll'](queryTelephones));_0x28806e['push'](db[_0xa5d0('0x30')]['findAll'](queryTrunks));_0x28806e[_0xa5d0('0x29')](db[_0xa5d0('0x31')]['findAll'](queryCampaigns));_0x28806e[_0xa5d0('0x29')](db[_0xa5d0('0x5')][_0xa5d0('0x15')](queryAgents));break;case _0xa5d0('0x32'):_0x5bd588[_0x518a60](_0xa5d0('0x26'));_0x5bd588[_0x518a60](_0xa5d0('0x27'));_0x28806e[_0xa5d0('0x29')](getAssociatedResources(_0xa5d0('0xf'),_0x5495cb[_0xa5d0('0x33')],_0xa5d0('0x2a')));_0x28806e[_0xa5d0('0x29')](getAssociatedResources(_0xa5d0('0x10'),_0x5495cb['userProfileId'],_0xa5d0('0x2b')));_0x28806e['push'](getAssociatedResources(_0xa5d0('0x11'),_0x5495cb[_0xa5d0('0x33')],_0xa5d0('0x2c')));_0x28806e[_0xa5d0('0x29')](getAssociatedResources(_0xa5d0('0x12'),_0x5495cb[_0xa5d0('0x33')],'SmsQueue'));_0x28806e[_0xa5d0('0x29')](getAssociatedResources('MailQueues',_0x5495cb[_0xa5d0('0x33')],'MailQueue'));_0x28806e['push'](getAssociatedResources(_0xa5d0('0x13'),_0x5495cb[_0xa5d0('0x33')],_0xa5d0('0x2f')));_0x28806e[_0xa5d0('0x29')](getAssociatedResources('WhatsappQueues',_0x5495cb[_0xa5d0('0x33')],_0xa5d0('0x34')));_0x28806e[_0xa5d0('0x29')](getAssociatedResources(_0xa5d0('0x14'),_0x5495cb[_0xa5d0('0x33')],_0xa5d0('0x5')));_0x28806e[_0xa5d0('0x29')](getAssociatedResources('Trunks',_0x5495cb[_0xa5d0('0x33')],_0xa5d0('0x30')));_0x28806e[_0xa5d0('0x29')](getAssociatedResources(_0xa5d0('0x35'),_0x5495cb[_0xa5d0('0x33')],_0xa5d0('0x31')));_0x28806e[_0xa5d0('0x29')](db[_0xa5d0('0x5')]['findAll'](queryAgents));break;case _0xa5d0('0x7'):_0x5bd588[_0x518a60]('voice:inbound');_0x5bd588[_0x518a60](_0xa5d0('0x27'));_0x28806e['push'](_0x5495cb[_0xa5d0('0x36')]({'attributes':['id','name']}));_0x28806e[_0xa5d0('0x29')](_0x5495cb['getChatQueues']({'attributes':['id',_0xa5d0('0x3')]}));_0x28806e[_0xa5d0('0x29')](_0x5495cb['getFaxQueues']({'attributes':['id',_0xa5d0('0x3')]}));_0x28806e[_0xa5d0('0x29')](_0x5495cb[_0xa5d0('0x37')]({'attributes':['id',_0xa5d0('0x3')]}));_0x28806e['push'](_0x5495cb['getMailQueues']({'attributes':['id',_0xa5d0('0x3')]}));_0x28806e[_0xa5d0('0x29')](_0x5495cb[_0xa5d0('0x38')]({'attributes':['id',_0xa5d0('0x3')]}));_0x28806e['push'](_0x5495cb['getWhatsappQueues']({'attributes':['id',_0xa5d0('0x3')]}));break;}return BPromise[_0xa5d0('0x39')](_0x28806e);}})[_0xa5d0('0xd')](function(_0x37c1f6){if(_0x37c1f6&&_0x37c1f6[_0xa5d0('0x1a')]){for(var _0x552bc4=0x0;_0x552bc4<_0x37c1f6['length'];_0x552bc4+=0x1){for(var _0x2297b6=0x0;_0x2297b6<_0x37c1f6[_0x552bc4][_0xa5d0('0x1a')];_0x2297b6+=0x1){switch(_0x552bc4){case 0x0:joinOrLeaveQueues(_0x5bd588,_0x518a60,_0xa5d0('0x3a'),_0x37c1f6[_0x552bc4][_0x2297b6]);break;case 0x1:joinOrLeaveQueues(_0x5bd588,_0x518a60,_0xa5d0('0x3b'),_0x37c1f6[_0x552bc4][_0x2297b6]);break;case 0x2:joinOrLeaveQueues(_0x5bd588,_0x518a60,_0xa5d0('0x3c'),_0x37c1f6[_0x552bc4][_0x2297b6]);break;case 0x3:joinOrLeaveQueues(_0x5bd588,_0x518a60,_0xa5d0('0x3d'),_0x37c1f6[_0x552bc4][_0x2297b6]);break;case 0x4:joinOrLeaveQueues(_0x5bd588,_0x518a60,_0xa5d0('0x3e'),_0x37c1f6[_0x552bc4][_0x2297b6]);break;case 0x5:joinOrLeaveQueues(_0x5bd588,_0x518a60,_0xa5d0('0x3f'),_0x37c1f6[_0x552bc4][_0x2297b6]);break;case 0x6:joinOrLeaveQueues(_0x5bd588,_0x518a60,_0xa5d0('0x40'),_0x37c1f6[_0x552bc4][_0x2297b6]);break;case 0x7:if(_0x307377[_0xa5d0('0x6')]!=='agent')_0x5bd588[_0x518a60](util[_0xa5d0('0x1b')]('telephone:%s',_0x37c1f6[_0x552bc4][_0x2297b6][_0xa5d0('0x3')]));break;case 0x8:if(_0x307377[_0xa5d0('0x6')]!=='agent')_0x5bd588[_0x518a60](util[_0xa5d0('0x1b')](_0xa5d0('0x41'),_0x37c1f6[_0x552bc4][_0x2297b6][_0xa5d0('0x3')]));break;case 0x9:if(_0x307377[_0xa5d0('0x6')]!==_0xa5d0('0x7'))_0x5bd588[_0x518a60](util['format'](_0xa5d0('0x42'),_0x37c1f6[_0x552bc4][_0x2297b6][_0xa5d0('0x9')],_0x37c1f6[_0x552bc4][_0x2297b6][_0xa5d0('0x3')]));break;case 0xa:_0x5bd588[_0x518a60](util[_0xa5d0('0x1b')](_0xa5d0('0x1c'),_0x37c1f6[_0x552bc4][_0x2297b6][_0xa5d0('0x3')]));break;}}}}})['then'](function(){if(_0x518a60==='leave'){var _0x4ad503=_[_0xa5d0('0x19')](_0x307377['ChatInteractions'],'id');return _0x307377[_0xa5d0('0x43')](_0x4ad503)[_0xa5d0('0xd')](function(){for(var _0x15cb17=0x0;_0x15cb17<_0x4ad503['length'];_0x15cb17+=0x1){_0x2de295['emit']('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x4ad503[_0x15cb17]),'UserId':Number(_0x307377['id'])});}});}})[_0xa5d0('0xd')](function(){if(_0x518a60===_0xa5d0('0x44')){var _0x708525=_[_0xa5d0('0x19')](_0x307377[_0xa5d0('0x20')],'id');return _0x307377['removeMailInteractions'](_0x708525)[_0xa5d0('0xd')](function(){for(var _0x189f79=0x0;_0x189f79<_0x708525[_0xa5d0('0x1a')];_0x189f79+=0x1){_0x2de295[_0xa5d0('0x45')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x708525[_0x189f79]),'UserId':Number(_0x307377['id'])});}});}})[_0xa5d0('0xd')](function(){if(_0x518a60==='leave'){var _0x1bdfd5=_[_0xa5d0('0x19')](_0x307377[_0xa5d0('0x21')],'id');return _0x307377[_0xa5d0('0x46')](_0x1bdfd5)[_0xa5d0('0xd')](function(){for(var _0x3caf45=0x0;_0x3caf45<_0x1bdfd5[_0xa5d0('0x1a')];_0x3caf45+=0x1){_0x2de295[_0xa5d0('0x45')](_0xa5d0('0x47'),{'FaxInteractionId':Number(_0x1bdfd5[_0x3caf45]),'UserId':Number(_0x307377['id'])});}});}})['then'](function(){if(_0x518a60===_0xa5d0('0x44')){var _0x78a871=_[_0xa5d0('0x19')](_0x307377['SmsInteractions'],'id');return _0x307377[_0xa5d0('0x48')](_0x78a871)[_0xa5d0('0xd')](function(){for(var _0x52b82c=0x0;_0x52b82c<_0x78a871['length'];_0x52b82c+=0x1){_0x2de295[_0xa5d0('0x45')](_0xa5d0('0x49'),{'SmsInteractionId':Number(_0x78a871[_0x52b82c]),'UserId':Number(_0x307377['id'])});}});}})[_0xa5d0('0xd')](function(){if(_0x518a60==='leave'){var _0x4dc6f1=_[_0xa5d0('0x19')](_0x307377[_0xa5d0('0x23')],'id');return _0x307377[_0xa5d0('0x4a')](_0x4dc6f1)[_0xa5d0('0xd')](function(){for(var _0x542e51=0x0;_0x542e51<_0x4dc6f1[_0xa5d0('0x1a')];_0x542e51+=0x1){_0x2de295['emit'](_0xa5d0('0x4b'),{'OpenchannelInteractionId':Number(_0x4dc6f1[_0x542e51]),'UserId':Number(_0x307377['id'])});}});}})[_0xa5d0('0xd')](function(){if(_0x518a60==='leave'){var _0x5c65a0=_[_0xa5d0('0x19')](_0x307377['WhatsappInteractions'],'id');return _0x307377[_0xa5d0('0x4c')](_0x5c65a0)[_0xa5d0('0xd')](function(){for(var _0x410f28=0x0;_0x410f28<_0x5c65a0[_0xa5d0('0x1a')];_0x410f28+=0x1){_0x2de295[_0xa5d0('0x45')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x5c65a0[_0x410f28]),'UserId':Number(_0x307377['id'])});}});}})[_0xa5d0('0x4d')](function(_0x2b8050){_0x5bd588['log'](_0x2b8050);});}}function onDisconnect(_0x4339c7,_0x8a4d9f){joinOrLeave(_0x4339c7,_0xa5d0('0x44'),_0x8a4d9f);}function onConnect(_0x3dbce2){joinOrLeave(_0x3dbce2,'join');}exports[_0xa5d0('0x4e')]=function(_0x4d4974){_0x4d4974['on'](_0xa5d0('0x4f'),function(_0x20ae77){_0x20ae77[_0xa5d0('0x50')](0x0);_0x20ae77[_0xa5d0('0x51')]=_0x20ae77[_0xa5d0('0x52')][_0xa5d0('0x4f')][_0xa5d0('0x53')]+':'+_0x20ae77[_0xa5d0('0x52')]['connection'][_0xa5d0('0x54')];_0x20ae77[_0xa5d0('0x55')]=new Date();_0x20ae77['log']=function(_0x31311){console[_0xa5d0('0x56')](_0xa5d0('0x57')+_0x20ae77[_0xa5d0('0x58')]['name']+'['+_0x20ae77['address']+']',_0x31311);};_0x20ae77['on']('disconnect',function(){onDisconnect(_0x20ae77,_0x4d4974);_0x20ae77[_0xa5d0('0x56')]('DISCONNECTED');});onConnect(_0x20ae77);_0x20ae77['log'](_0xa5d0('0x59'));});};
\ No newline at end of file
index 8596566..70d1ea3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d39=['Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','info','Trigger,\x20%s','error','catch','channel','motionChannel','resolve','then','ContactId','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','query','Sequelize','QueryTypes','SELECT','UserId','SIP/%s','agent','outgoingmessage','get','event','offlineMessage','interface','name','AfterCreate','changed','closed','substatus','sequelize','contact','format','AfterUpdate','find','fullname','email','length','hasOwnProperty','model','toLowerCase','condition','util','../../mysqldb','jayson/promise','triggers','client','http','Chat','ChatInteraction','newinteraction','afterUpdate','closedinteraction','ChatMessage','afterCreate','newmessage','ChatOfflineMessage','SmsInteraction','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','Mail','MailInteraction','MailMessage'];(function(_0x43fdf8,_0x8426b3){var _0x1160c6=function(_0x281fb6){while(--_0x281fb6){_0x43fdf8['push'](_0x43fdf8['shift']());}};_0x1160c6(++_0x8426b3);}(_0x6d39,0x145));var _0x96d3=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0x6d39[_0x422905];return _0x33dc6c;};'use strict';var util=require(_0x96d3('0x0'));var db=require(_0x96d3('0x1'))['db'];var jayson=require(_0x96d3('0x2'));var logger=require('../logger')(_0x96d3('0x3'));var client=jayson[_0x96d3('0x4')][_0x96d3('0x5')]({'port':0x232a});var triggers=[{'channel':_0x96d3('0x6'),'model':_0x96d3('0x7'),'event':'afterCreate','condition':_0x96d3('0x8'),'callback':afterCreate},{'channel':_0x96d3('0x6'),'model':'ChatInteraction','event':_0x96d3('0x9'),'condition':_0x96d3('0xa'),'callback':afterUpdate},{'channel':_0x96d3('0x6'),'model':_0x96d3('0xb'),'event':_0x96d3('0xc'),'condition':_0x96d3('0xd'),'callback':afterCreateMessage},{'channel':'Chat','model':_0x96d3('0xe'),'event':'afterCreate','condition':_0x96d3('0xd'),'callback':afterCreateOfflineMessage},{'channel':'Sms','model':_0x96d3('0xf'),'event':_0x96d3('0xc'),'condition':_0x96d3('0x8'),'callback':afterCreate},{'channel':'Sms','model':_0x96d3('0xf'),'event':_0x96d3('0x9'),'condition':_0x96d3('0xa'),'callback':afterUpdate},{'channel':'Sms','model':_0x96d3('0x10'),'event':'afterCreate','condition':_0x96d3('0xd'),'callback':afterCreateMessage},{'channel':_0x96d3('0x11'),'model':_0x96d3('0x12'),'event':_0x96d3('0xc'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x96d3('0x11'),'model':_0x96d3('0x12'),'event':'afterUpdate','condition':_0x96d3('0xa'),'callback':afterUpdate},{'channel':_0x96d3('0x11'),'model':_0x96d3('0x13'),'event':_0x96d3('0xc'),'condition':_0x96d3('0xd'),'callback':afterCreateMessage},{'channel':_0x96d3('0x14'),'model':_0x96d3('0x15'),'event':_0x96d3('0xc'),'condition':_0x96d3('0x8'),'callback':afterCreate},{'channel':'Fax','model':'FaxInteraction','event':_0x96d3('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x96d3('0x14'),'model':'FaxMessage','event':_0x96d3('0xc'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x96d3('0x16'),'model':_0x96d3('0x17'),'event':'afterCreate','condition':'newinteraction','callback':afterCreate},{'channel':_0x96d3('0x16'),'model':_0x96d3('0x17'),'event':_0x96d3('0x9'),'condition':_0x96d3('0xa'),'callback':afterUpdate},{'channel':_0x96d3('0x16'),'model':_0x96d3('0x18'),'event':_0x96d3('0xc'),'condition':_0x96d3('0xd'),'callback':afterCreateMessage},{'channel':_0x96d3('0x19'),'model':_0x96d3('0x1a'),'event':_0x96d3('0xc'),'condition':_0x96d3('0x8'),'callback':afterCreate},{'channel':_0x96d3('0x19'),'model':_0x96d3('0x1a'),'event':_0x96d3('0x9'),'condition':_0x96d3('0xa'),'callback':afterUpdate},{'channel':'Openchannel','model':_0x96d3('0x1b'),'event':_0x96d3('0xc'),'condition':_0x96d3('0xd'),'callback':afterCreateMessage}];function request(_0x2d26a3){return client[_0x96d3('0x1c')](_0x96d3('0x1d'),_0x2d26a3)['then'](function(_0x3f83f1){logger[_0x96d3('0x1e')](_0x96d3('0x1f'),_0x96d3('0x1d'),_0x3f83f1);if(_0x3f83f1[_0x96d3('0x20')]){if(_0x3f83f1['error']['code']===0x1f4){logger[_0x96d3('0x20')](_0x96d3('0x1f'),_0x96d3('0x1d'),_0x3f83f1[_0x96d3('0x20')]);}}})[_0x96d3('0x21')](function(_0x4d15cf){logger[_0x96d3('0x20')]('Trigger,\x20%s',_0x96d3('0x1d'),_0x4d15cf);});}function afterCreateMessage(_0x334266){return function(_0x2c347e){_0x2c347e=_0x2c347e['get']({'plain':!![]});_0x2c347e[_0x96d3('0x22')]=_0x334266;_0x2c347e[_0x96d3('0x23')]=_0x334266;_0x2c347e['event']=_0x2c347e['direction'];Promise[_0x96d3('0x24')]()[_0x96d3('0x25')](function(){if(typeof _0x2c347e[_0x96d3('0x26')]===_0x96d3('0x27'))return null;var _0x3011f5=_0x96d3('0x28')+_0x2c347e['ContactId'];return db['sequelize'][_0x96d3('0x29')](_0x3011f5,{'type':db[_0x96d3('0x2a')][_0x96d3('0x2b')][_0x96d3('0x2c')],'raw':!![]});})[_0x96d3('0x25')](function(_0x56c0be){if(_0x56c0be){_0x2c347e['contact']=_0x56c0be[0x0];}if(typeof _0x2c347e['UserId']==='undefined')return;return getAgent(_0x2c347e[_0x96d3('0x2d')]);})[_0x96d3('0x25')](function(_0x92b072){if(_0x92b072){_0x2c347e['interface']=util['format'](_0x96d3('0x2e'),_0x92b072['name']);_0x2c347e[_0x96d3('0x2f')]=_0x92b072;_0x2c347e[_0x96d3('0x22')]=_0x334266;return request({'event':'incomingmessage','message':_0x2c347e});}else{return request({'event':_0x96d3('0x30'),'message':_0x2c347e});}})[_0x96d3('0x21')](function(_0x1dfeac){logger[_0x96d3('0x20')](_0x96d3('0x1f'),'AfterCreateMessage',_0x1dfeac);});};}function afterCreateOfflineMessage(_0x1d8368){return function(_0x2b5d38){_0x2b5d38=_0x2b5d38[_0x96d3('0x31')]({'plain':!![]});_0x2b5d38['channel']=_0x1d8368;_0x2b5d38[_0x96d3('0x23')]=_0x1d8368;_0x2b5d38[_0x96d3('0x32')]=_0x96d3('0x33');return request({'event':_0x2b5d38[_0x96d3('0x32')],'message':_0x2b5d38});};}function afterCreate(_0x3a4814,_0x2f6cbc){return function(_0x1841ad){_0x1841ad=_0x1841ad[_0x96d3('0x31')]({'plain':!![]});_0x1841ad['channel']=_0x3a4814;_0x1841ad[_0x96d3('0x23')]=_0x3a4814;_0x1841ad[_0x96d3('0x32')]='opened';Promise['resolve']()['then'](function(){var _0x16569a=_0x96d3('0x28')+_0x1841ad[_0x96d3('0x26')];return db['sequelize'][_0x96d3('0x29')](_0x16569a,{'type':db[_0x96d3('0x2a')][_0x96d3('0x2b')][_0x96d3('0x2c')],'raw':!![]});})[_0x96d3('0x25')](function(_0x2b04d2){if(_0x2b04d2){_0x1841ad['contact']=_0x2b04d2[0x0];}if(typeof _0x1841ad['UserId']===_0x96d3('0x27'))return;return getAgent(_0x1841ad[_0x96d3('0x2d')]);})[_0x96d3('0x25')](function(_0x356584){if(_0x356584){_0x1841ad[_0x96d3('0x34')]=util['format'](_0x96d3('0x2e'),_0x356584[_0x96d3('0x35')]);_0x1841ad['agent']=_0x356584;}return request({'event':_0x2f6cbc,'message':_0x1841ad});})[_0x96d3('0x21')](function(_0xf8fa34){logger[_0x96d3('0x20')]('Trigger,\x20%s',_0x96d3('0x36'),_0xf8fa34);});};}function afterUpdate(_0x717428){return function(_0x1d633b){var _0x11e0b7=_0x1d633b[_0x96d3('0x37')]('closed')&&_0x1d633b[_0x96d3('0x38')];var _0x1ca8c9=_0x1d633b['changed'](_0x96d3('0x39'));if(_0x11e0b7||_0x1ca8c9){var _0x1d80be=_0x11e0b7?'closedinteraction':_0x96d3('0x39');var _0x36e8c6=_0x1d633b['get']({'plain':!![]});_0x36e8c6[_0x96d3('0x22')]=_0x717428;_0x36e8c6['motionChannel']=_0x717428;_0x36e8c6[_0x96d3('0x32')]=_0x11e0b7?_0x96d3('0x38'):'substatus';var _0x26f3f3=_0x96d3('0x28')+_0x36e8c6[_0x96d3('0x26')];return db[_0x96d3('0x3a')]['query'](_0x26f3f3,{'type':db[_0x96d3('0x2a')][_0x96d3('0x2b')][_0x96d3('0x2c')],'raw':!![]})[_0x96d3('0x25')](function(_0x51d762){if(_0x51d762){_0x36e8c6[_0x96d3('0x3b')]=_0x51d762[0x0];}if(typeof _0x36e8c6[_0x96d3('0x2d')]===_0x96d3('0x27'))return;return getAgent(_0x36e8c6[_0x96d3('0x2d')]);})[_0x96d3('0x25')](function(_0x33c45b){if(_0x33c45b){_0x36e8c6['interface']=util[_0x96d3('0x3c')]('SIP/%s',_0x33c45b['name']);_0x36e8c6[_0x96d3('0x2f')]=_0x33c45b;}return request({'event':_0x1d80be,'message':_0x36e8c6});})['catch'](function(_0x30b648){logger[_0x96d3('0x20')]('Trigger,\x20%s',_0x96d3('0x3d'),_0x30b648);});}};}function getAgent(_0x194263){return db['User'][_0x96d3('0x3e')]({'where':{'id':_0x194263},'attributes':['id',_0x96d3('0x35'),_0x96d3('0x3f'),_0x96d3('0x40'),'internal'],'raw':!![]})[_0x96d3('0x25')](function(_0x1dfbda){return _0x1dfbda;});}exports['default']=function(){for(var _0xe3c14d=0x0;_0xe3c14d<triggers[_0x96d3('0x41')];_0xe3c14d+=0x1){if(db[_0x96d3('0x42')](triggers[_0xe3c14d][_0x96d3('0x43')])){db[triggers[_0xe3c14d]['model']]['hook'](triggers[_0xe3c14d][_0x96d3('0x32')],triggers[_0xe3c14d]['callback'](triggers[_0xe3c14d][_0x96d3('0x22')][_0x96d3('0x44')](),triggers[_0xe3c14d][_0x96d3('0x45')]));}}};
\ No newline at end of file
+var _0xd612=['OpenchannelMessage','request','EventManager','then','error','Trigger,\x20%s','get','channel','event','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','Sequelize','QueryTypes','SELECT','contact','UserId','format','incomingmessage','outgoingmessage','catch','motionChannel','offlineMessage','opened','resolve','ContactId','interface','agent','AfterCreate','closed','substatus','SIP/%s','AfterUpdate','User','find','name','internal','default','hasOwnProperty','model','hook','toLowerCase','util','../../mysqldb','../logger','triggers','client','http','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','ChatOfflineMessage','Sms','SmsInteraction','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','OpenchannelInteraction','Openchannel'];(function(_0x10df18,_0x13338c){var _0x1f9a1d=function(_0x3157f4){while(--_0x3157f4){_0x10df18['push'](_0x10df18['shift']());}};_0x1f9a1d(++_0x13338c);}(_0xd612,0x1d5));var _0x2d61=function(_0x1f86c8,_0x2ec96a){_0x1f86c8=_0x1f86c8-0x0;var _0x1db2f7=_0xd612[_0x1f86c8];return _0x1db2f7;};'use strict';var util=require(_0x2d61('0x0'));var db=require(_0x2d61('0x1'))['db'];var jayson=require('jayson/promise');var logger=require(_0x2d61('0x2'))(_0x2d61('0x3'));var client=jayson[_0x2d61('0x4')][_0x2d61('0x5')]({'port':0x232a});var triggers=[{'channel':_0x2d61('0x6'),'model':_0x2d61('0x7'),'event':_0x2d61('0x8'),'condition':_0x2d61('0x9'),'callback':afterCreate},{'channel':_0x2d61('0x6'),'model':_0x2d61('0x7'),'event':_0x2d61('0xa'),'condition':_0x2d61('0xb'),'callback':afterUpdate},{'channel':_0x2d61('0x6'),'model':_0x2d61('0xc'),'event':_0x2d61('0x8'),'condition':_0x2d61('0xd'),'callback':afterCreateMessage},{'channel':'Chat','model':_0x2d61('0xe'),'event':_0x2d61('0x8'),'condition':_0x2d61('0xd'),'callback':afterCreateOfflineMessage},{'channel':_0x2d61('0xf'),'model':_0x2d61('0x10'),'event':_0x2d61('0x8'),'condition':_0x2d61('0x9'),'callback':afterCreate},{'channel':_0x2d61('0xf'),'model':_0x2d61('0x10'),'event':'afterUpdate','condition':_0x2d61('0xb'),'callback':afterUpdate},{'channel':_0x2d61('0xf'),'model':_0x2d61('0x11'),'event':_0x2d61('0x8'),'condition':_0x2d61('0xd'),'callback':afterCreateMessage},{'channel':_0x2d61('0x12'),'model':_0x2d61('0x13'),'event':_0x2d61('0x8'),'condition':_0x2d61('0x9'),'callback':afterCreate},{'channel':_0x2d61('0x12'),'model':_0x2d61('0x13'),'event':'afterUpdate','condition':_0x2d61('0xb'),'callback':afterUpdate},{'channel':_0x2d61('0x12'),'model':_0x2d61('0x14'),'event':_0x2d61('0x8'),'condition':_0x2d61('0xd'),'callback':afterCreateMessage},{'channel':_0x2d61('0x15'),'model':_0x2d61('0x16'),'event':_0x2d61('0x8'),'condition':_0x2d61('0x9'),'callback':afterCreate},{'channel':'Fax','model':_0x2d61('0x16'),'event':'afterUpdate','condition':_0x2d61('0xb'),'callback':afterUpdate},{'channel':_0x2d61('0x15'),'model':_0x2d61('0x17'),'event':_0x2d61('0x8'),'condition':_0x2d61('0xd'),'callback':afterCreateMessage},{'channel':_0x2d61('0x18'),'model':_0x2d61('0x19'),'event':_0x2d61('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x2d61('0x18'),'model':_0x2d61('0x19'),'event':'afterUpdate','condition':_0x2d61('0xb'),'callback':afterUpdate},{'channel':_0x2d61('0x18'),'model':'MailMessage','event':_0x2d61('0x8'),'condition':_0x2d61('0xd'),'callback':afterCreateMessage},{'channel':'Openchannel','model':_0x2d61('0x1a'),'event':_0x2d61('0x8'),'condition':_0x2d61('0x9'),'callback':afterCreate},{'channel':'Openchannel','model':_0x2d61('0x1a'),'event':_0x2d61('0xa'),'condition':_0x2d61('0xb'),'callback':afterUpdate},{'channel':_0x2d61('0x1b'),'model':_0x2d61('0x1c'),'event':_0x2d61('0x8'),'condition':_0x2d61('0xd'),'callback':afterCreateMessage}];function request(_0x49e3d7){return client[_0x2d61('0x1d')](_0x2d61('0x1e'),_0x49e3d7)[_0x2d61('0x1f')](function(_0x3fe79a){logger['info']('Trigger,\x20%s','EventManager',_0x3fe79a);if(_0x3fe79a[_0x2d61('0x20')]){if(_0x3fe79a['error']['code']===0x1f4){logger[_0x2d61('0x20')](_0x2d61('0x21'),_0x2d61('0x1e'),_0x3fe79a['error']);}}})['catch'](function(_0x401910){logger[_0x2d61('0x20')]('Trigger,\x20%s',_0x2d61('0x1e'),_0x401910);});}function afterCreateMessage(_0x314edb){return function(_0x100b62){_0x100b62=_0x100b62[_0x2d61('0x22')]({'plain':!![]});_0x100b62[_0x2d61('0x23')]=_0x314edb;_0x100b62['motionChannel']=_0x314edb;_0x100b62[_0x2d61('0x24')]=_0x100b62['direction'];Promise['resolve']()[_0x2d61('0x1f')](function(){if(typeof _0x100b62['ContactId']===_0x2d61('0x25'))return null;var _0x5bdaed=_0x2d61('0x26')+_0x100b62['ContactId'];return db[_0x2d61('0x27')][_0x2d61('0x28')](_0x5bdaed,{'type':db[_0x2d61('0x29')][_0x2d61('0x2a')][_0x2d61('0x2b')],'raw':!![]});})[_0x2d61('0x1f')](function(_0x5a7a6b){if(_0x5a7a6b){_0x100b62[_0x2d61('0x2c')]=_0x5a7a6b[0x0];}if(typeof _0x100b62[_0x2d61('0x2d')]===_0x2d61('0x25'))return;return getAgent(_0x100b62[_0x2d61('0x2d')]);})[_0x2d61('0x1f')](function(_0x319bcc){if(_0x319bcc){_0x100b62['interface']=util[_0x2d61('0x2e')]('SIP/%s',_0x319bcc['name']);_0x100b62['agent']=_0x319bcc;_0x100b62[_0x2d61('0x23')]=_0x314edb;return request({'event':_0x2d61('0x2f'),'message':_0x100b62});}else{return request({'event':_0x2d61('0x30'),'message':_0x100b62});}})[_0x2d61('0x31')](function(_0x4677d4){logger[_0x2d61('0x20')](_0x2d61('0x21'),'AfterCreateMessage',_0x4677d4);});};}function afterCreateOfflineMessage(_0x3be434){return function(_0x24b730){_0x24b730=_0x24b730[_0x2d61('0x22')]({'plain':!![]});_0x24b730[_0x2d61('0x23')]=_0x3be434;_0x24b730[_0x2d61('0x32')]=_0x3be434;_0x24b730['event']=_0x2d61('0x33');return request({'event':_0x24b730[_0x2d61('0x24')],'message':_0x24b730});};}function afterCreate(_0x2c4d76,_0x5dcf4b){return function(_0x454c08){_0x454c08=_0x454c08[_0x2d61('0x22')]({'plain':!![]});_0x454c08[_0x2d61('0x23')]=_0x2c4d76;_0x454c08[_0x2d61('0x32')]=_0x2c4d76;_0x454c08['event']=_0x2d61('0x34');Promise[_0x2d61('0x35')]()['then'](function(){var _0x4864ee='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x454c08[_0x2d61('0x36')];return db[_0x2d61('0x27')]['query'](_0x4864ee,{'type':db[_0x2d61('0x29')][_0x2d61('0x2a')][_0x2d61('0x2b')],'raw':!![]});})[_0x2d61('0x1f')](function(_0xa0d742){if(_0xa0d742){_0x454c08[_0x2d61('0x2c')]=_0xa0d742[0x0];}if(typeof _0x454c08[_0x2d61('0x2d')]===_0x2d61('0x25'))return;return getAgent(_0x454c08[_0x2d61('0x2d')]);})[_0x2d61('0x1f')](function(_0x3d4a87){if(_0x3d4a87){_0x454c08[_0x2d61('0x37')]=util['format']('SIP/%s',_0x3d4a87['name']);_0x454c08[_0x2d61('0x38')]=_0x3d4a87;}return request({'event':_0x5dcf4b,'message':_0x454c08});})[_0x2d61('0x31')](function(_0x33a5be){logger['error'](_0x2d61('0x21'),_0x2d61('0x39'),_0x33a5be);});};}function afterUpdate(_0x178998){return function(_0x55a680){var _0x493aaa=_0x55a680['changed'](_0x2d61('0x3a'))&&_0x55a680[_0x2d61('0x3a')];var _0x1261eb=_0x55a680['changed'](_0x2d61('0x3b'));if(_0x493aaa||_0x1261eb){var _0x2f9062=_0x493aaa?_0x2d61('0xb'):'substatus';var _0x5bdaaa=_0x55a680['get']({'plain':!![]});_0x5bdaaa[_0x2d61('0x23')]=_0x178998;_0x5bdaaa[_0x2d61('0x32')]=_0x178998;_0x5bdaaa[_0x2d61('0x24')]=_0x493aaa?'closed':_0x2d61('0x3b');var _0x1804f9=_0x2d61('0x26')+_0x5bdaaa['ContactId'];return db[_0x2d61('0x27')]['query'](_0x1804f9,{'type':db[_0x2d61('0x29')][_0x2d61('0x2a')][_0x2d61('0x2b')],'raw':!![]})[_0x2d61('0x1f')](function(_0x5ac33b){if(_0x5ac33b){_0x5bdaaa[_0x2d61('0x2c')]=_0x5ac33b[0x0];}if(typeof _0x5bdaaa[_0x2d61('0x2d')]===_0x2d61('0x25'))return;return getAgent(_0x5bdaaa['UserId']);})[_0x2d61('0x1f')](function(_0x3ccea6){if(_0x3ccea6){_0x5bdaaa[_0x2d61('0x37')]=util[_0x2d61('0x2e')](_0x2d61('0x3c'),_0x3ccea6['name']);_0x5bdaaa[_0x2d61('0x38')]=_0x3ccea6;}return request({'event':_0x2f9062,'message':_0x5bdaaa});})[_0x2d61('0x31')](function(_0x336741){logger[_0x2d61('0x20')](_0x2d61('0x21'),_0x2d61('0x3d'),_0x336741);});}};}function getAgent(_0x55d7dc){return db[_0x2d61('0x3e')][_0x2d61('0x3f')]({'where':{'id':_0x55d7dc},'attributes':['id',_0x2d61('0x40'),'fullname','email',_0x2d61('0x41')],'raw':!![]})[_0x2d61('0x1f')](function(_0x369b4e){return _0x369b4e;});}exports[_0x2d61('0x42')]=function(){for(var _0x2e42fe=0x0;_0x2e42fe<triggers['length'];_0x2e42fe+=0x1){if(db[_0x2d61('0x43')](triggers[_0x2e42fe][_0x2d61('0x44')])){db[triggers[_0x2e42fe][_0x2d61('0x44')]][_0x2d61('0x45')](triggers[_0x2e42fe][_0x2d61('0x24')],triggers[_0x2e42fe]['callback'](triggers[_0x2e42fe]['channel'][_0x2d61('0x46')](),triggers[_0x2e42fe]['condition']));}}};
\ No newline at end of file
index 0fcc6ed..86774fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9364=['includes','clearBlockUser','isUndefined','updateAttributes','getLicense','role','agent','then','agents','Maximum\x20login\x20has\x20been\x20reached','lodash','bluebird','../mysqldb','./license/util','voice','mail','fax','sms','whatsapp','getChannels','isValidChannel','toLowerCase'];(function(_0x4154e5,_0x55defa){var _0x5bfc66=function(_0x22bdbe){while(--_0x22bdbe){_0x4154e5['push'](_0x4154e5['shift']());}};_0x5bfc66(++_0x55defa);}(_0x9364,0x16a));var _0x4936=function(_0x3dd5d4,_0x328d9c){_0x3dd5d4=_0x3dd5d4-0x0;var _0x23bbd7=_0x9364[_0x3dd5d4];return _0x23bbd7;};'use strict';var _=require(_0x4936('0x0'));var BPromise=require(_0x4936('0x1'));var db=require(_0x4936('0x2'))['db'];var util=require(_0x4936('0x3'));var channels=[_0x4936('0x4'),_0x4936('0x5'),'chat',_0x4936('0x6'),_0x4936('0x7'),_0x4936('0x8'),'openchannel'];exports[_0x4936('0x9')]=function(){return channels;};exports[_0x4936('0xa')]=function(_0x2f5de7){_0x2f5de7=_0x2f5de7[_0x4936('0xb')]();return _[_0x4936('0xc')](channels,_0x2f5de7);};exports[_0x4936('0xd')]=function(_0x282367,_0x3dee96,_0xf86b82,_0x18a7d2){var _0x30d7a6={'loginAttempts':_0x3dee96,'blocked':_0xf86b82};if(!_[_0x4936('0xe')](_0x18a7d2)){_0x30d7a6['blockedAt']=_0x18a7d2;}return _0x282367[_0x4936('0xf')](_0x30d7a6);};exports[_0x4936('0x10')]=function(_0x1f014c){return new BPromise(function(_0x39f62d,_0x2be328){var _0x16402d=0x0;if(_0x1f014c[_0x4936('0x11')]!==_0x4936('0x12')){_0x39f62d(_0x1f014c);}db['User']['count']({'where':{'role':'agent','online':!![],'id':{'$ne':_0x1f014c['id']}}})[_0x4936('0x13')](function(_0xdb728c){_0x16402d=_0xdb728c;return util[_0x4936('0x10')]();})['then'](function(_0x3a036b){if(_0x3a036b&&_0x3a036b['agents']&&_0x16402d>=_0x3a036b[_0x4936('0x14')]){throw Error(_0x4936('0x15'));}_0x39f62d(_0x1f014c);})['catch'](function(_0x39c8d6){_0x2be328(_0x39c8d6);});});};
\ No newline at end of file
+var _0xf74a=['voice','mail','chat','fax','sms','whatsapp','getChannels','isValidChannel','includes','clearBlockUser','blockedAt','updateAttributes','role','agent','User','count','then','getLicense','agents','catch','lodash','bluebird','../mysqldb','./license/util'];(function(_0x42bafd,_0x3f0fe3){var _0x2ed705=function(_0x4311ea){while(--_0x4311ea){_0x42bafd['push'](_0x42bafd['shift']());}};_0x2ed705(++_0x3f0fe3);}(_0xf74a,0xa4));var _0xaf74=function(_0x11fc4d,_0x1777de){_0x11fc4d=_0x11fc4d-0x0;var _0x526855=_0xf74a[_0x11fc4d];return _0x526855;};'use strict';var _=require(_0xaf74('0x0'));var BPromise=require(_0xaf74('0x1'));var db=require(_0xaf74('0x2'))['db'];var util=require(_0xaf74('0x3'));var channels=[_0xaf74('0x4'),_0xaf74('0x5'),_0xaf74('0x6'),_0xaf74('0x7'),_0xaf74('0x8'),_0xaf74('0x9'),'openchannel'];exports[_0xaf74('0xa')]=function(){return channels;};exports[_0xaf74('0xb')]=function(_0xd38426){_0xd38426=_0xd38426['toLowerCase']();return _[_0xaf74('0xc')](channels,_0xd38426);};exports[_0xaf74('0xd')]=function(_0x37027c,_0x1657a8,_0x5a97f1,_0x3a462a){var _0xf18d66={'loginAttempts':_0x1657a8,'blocked':_0x5a97f1};if(!_['isUndefined'](_0x3a462a)){_0xf18d66[_0xaf74('0xe')]=_0x3a462a;}return _0x37027c[_0xaf74('0xf')](_0xf18d66);};exports['getLicense']=function(_0x2dc2eb){return new BPromise(function(_0x3dcacc,_0x5dfd09){var _0x47a028=0x0;if(_0x2dc2eb[_0xaf74('0x10')]!==_0xaf74('0x11')){_0x3dcacc(_0x2dc2eb);}db[_0xaf74('0x12')][_0xaf74('0x13')]({'where':{'role':_0xaf74('0x11'),'online':!![],'id':{'$ne':_0x2dc2eb['id']}}})[_0xaf74('0x14')](function(_0x1f10ab){_0x47a028=_0x1f10ab;return util[_0xaf74('0x15')]();})[_0xaf74('0x14')](function(_0x204aed){if(_0x204aed&&_0x204aed[_0xaf74('0x16')]&&_0x47a028>=_0x204aed['agents']){throw Error('Maximum\x20login\x20has\x20been\x20reached');}_0x3dcacc(_0x2dc2eb);})[_0xaf74('0x17')](function(_0x238365){_0x5dfd09(_0x238365);});});};
\ No newline at end of file
index cda94a3..c2f3bea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['inherits','Bad\x20Request','Entity\x20not\x20found','Not\x20Found','Forbidden','OutOfInterval','stack','status','send','exports','util','../config/logger','api','message','Internal\x20Server\x20Error','name','Error'];(function(_0x43c3f9,_0x1861cb){var _0x4f4f54=function(_0x53ac81){while(--_0x53ac81){_0x43c3f9['push'](_0x43c3f9['shift']());}};_0x4f4f54(++_0x1861cb);}(_0xe706,0xa3));var _0x6e70=function(_0x30c7c5,_0x168208){_0x30c7c5=_0x30c7c5-0x0;var _0x29e24e=_0xe706[_0x30c7c5];return _0x29e24e;};'use strict';var util=require(_0x6e70('0x0'));var logger=require(_0x6e70('0x1'))(_0x6e70('0x2'));var APIError=function(_0x5e8446,_0x2cae77){this[_0x6e70('0x3')]=_0x5e8446||_0x6e70('0x4');this[_0x6e70('0x5')]=_0x2cae77||_0x6e70('0x6');util[_0x6e70('0x7')](APIError,Error);};var APIBadRequestError=function(_0x376a8d){this[_0x6e70('0x3')]=_0x376a8d||_0x6e70('0x8');this[_0x6e70('0x5')]=_0x6e70('0x8');util[_0x6e70('0x7')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x45a2d4){this[_0x6e70('0x3')]=_0x45a2d4||_0x6e70('0x9');this[_0x6e70('0x5')]=_0x6e70('0xa');util[_0x6e70('0x7')](APINotFoundError,APIError);};function getStatusCode(_0x100eb7){switch(_0x100eb7){case _0x6e70('0x8'):return 0x190;case _0x6e70('0xb'),_0x6e70('0xc'):return 0x193;case _0x6e70('0xa'):return 0x194;default:return 0x1f4;}}function handleError(_0x4600f9){return function(_0x5b3d07){logger['error'](_0x5b3d07[_0x6e70('0xd')]);var _0x15a1a5=getStatusCode(_0x5b3d07[_0x6e70('0x5')]);if(_0x5b3d07[_0x6e70('0x5')])delete _0x5b3d07[_0x6e70('0x5')];return _0x4600f9[_0x6e70('0xe')](_0x15a1a5)[_0x6e70('0xf')](_0x5b3d07);};}module[_0x6e70('0x10')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
+var _0xda3f=['inherits','message','Bad\x20Request','Entity\x20not\x20found','name','Not\x20Found','Forbidden','OutOfInterval','error','stack','send','exports','../config/logger','api','Internal\x20Server\x20Error','Error'];(function(_0x2807a1,_0x2063c6){var _0xc3f9b7=function(_0x13bec5){while(--_0x13bec5){_0x2807a1['push'](_0x2807a1['shift']());}};_0xc3f9b7(++_0x2063c6);}(_0xda3f,0xec));var _0xfda3=function(_0x5b2922,_0x599e39){_0x5b2922=_0x5b2922-0x0;var _0x349b57=_0xda3f[_0x5b2922];return _0x349b57;};'use strict';var util=require('util');var logger=require(_0xfda3('0x0'))(_0xfda3('0x1'));var APIError=function(_0x534697,_0x5299b0){this['message']=_0x534697||_0xfda3('0x2');this['name']=_0x5299b0||_0xfda3('0x3');util[_0xfda3('0x4')](APIError,Error);};var APIBadRequestError=function(_0x516500){this[_0xfda3('0x5')]=_0x516500||_0xfda3('0x6');this['name']='Bad\x20Request';util[_0xfda3('0x4')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x42476a){this[_0xfda3('0x5')]=_0x42476a||_0xfda3('0x7');this[_0xfda3('0x8')]=_0xfda3('0x9');util[_0xfda3('0x4')](APINotFoundError,APIError);};function getStatusCode(_0x1b1ea6){switch(_0x1b1ea6){case _0xfda3('0x6'):return 0x190;case _0xfda3('0xa'),_0xfda3('0xb'):return 0x193;case _0xfda3('0x9'):return 0x194;default:return 0x1f4;}}function handleError(_0x4d7841){return function(_0xe933f5){logger[_0xfda3('0xc')](_0xe933f5[_0xfda3('0xd')]);var _0x11afc1=getStatusCode(_0xe933f5[_0xfda3('0x8')]);if(_0xe933f5['name'])delete _0xe933f5[_0xfda3('0x8')];return _0x4d7841['status'](_0x11afc1)[_0xfda3('0xe')](_0xe933f5);};}module[_0xfda3('0xf')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
index b1beaec..d26d625 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5829=['render','json','send','404','status'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x5829,0x116));var _0x9582=function(_0x2fc012,_0x503e5b){_0x2fc012=_0x2fc012-0x0;var _0x2891f9=_0x5829[_0x2fc012];return _0x2891f9;};'use strict';module['exports'][0x194]=function pageNotFound(_0x301fc7,_0x161a34){var _0x4b1759=_0x9582('0x0');var _0xffa594=0x194;var _0x4945cf={'status':_0xffa594};_0x161a34[_0x9582('0x1')](_0x4945cf[_0x9582('0x1')]);_0x161a34[_0x9582('0x2')](_0x4b1759,{},function(_0x33da3b,_0x56b0df){if(_0x33da3b){return _0x161a34['status'](_0x4945cf[_0x9582('0x1')])[_0x9582('0x3')](_0x4945cf);}_0x161a34[_0x9582('0x4')](_0x56b0df);});};
\ No newline at end of file
+var _0x6789=['render','status','send','exports','404'];(function(_0xee741b,_0x10cf16){var _0x9ce0a2=function(_0x196418){while(--_0x196418){_0xee741b['push'](_0xee741b['shift']());}};_0x9ce0a2(++_0x10cf16);}(_0x6789,0xcb));var _0x9678=function(_0x4ef87f,_0x54601d){_0x4ef87f=_0x4ef87f-0x0;var _0x5acc0b=_0x6789[_0x4ef87f];return _0x5acc0b;};'use strict';module[_0x9678('0x0')][0x194]=function pageNotFound(_0x39166b,_0x440db4){var _0x2b6b10=_0x9678('0x1');var _0x47642d=0x194;var _0x3dfa64={'status':_0x47642d};_0x440db4['status'](_0x3dfa64['status']);_0x440db4[_0x9678('0x2')](_0x2b6b10,{},function(_0x3644d3,_0x321b37){if(_0x3644d3){return _0x440db4[_0x9678('0x3')](_0x3dfa64[_0x9678('0x3')])['json'](_0x3dfa64);}_0x440db4[_0x9678('0x4')](_0x321b37);});};
\ No newline at end of file
index ad3e05e..c03ba1e 100644 (file)
@@ -169,12 +169,6 @@ module.exports = {
       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
index c5dfac6..267faaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d51=['MailInteractionId','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessageId','TagId','ListId','Dispositions','FaxAccountId','Answers','Exntensions','FaxInteractionId','fax_interaction_has_tags','user_has_fax_interactions','team_has_fax_queues','FaxQueueReport','SmsAccountId','SmsMessage','sms_interaction_has_tags','SmsInteractionId','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelApplication','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','user_has_openchannel_interactions','AttachmentId','team_has_openchannel_queues','ProactiveActions','user_has_chat_websites','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','team_has_chat_queues','ChatInternalMessage','CompanyId','Phones','CmContactId','JscriptySessions','OpenchannelInteractions','Company','cm_contact_has_tags','AdditionalPhones','CampaignId','OwnerId','OneAll','AutomationAllId','Any','AutomationAnyId','Actions','Intervals','MailApplications','FaxApplications','AnalyticDefaultReport','DefaultReportId','AnalyticCustomReport','CustomReportId','whatsapp_interaction_has_tags','ContactItemType','ItemType','ItemTypeId','Hopper','Trigger','AllConditions','AllCondition','TriggerAllId','AnyConditions','TriggerAnyId','TriggerId','Fields','MetricId','Configurations','SubjectId','Descriptions','DescriptionId','Subject','Description','Field','FieldId','Variable','SugarcrmAccount','SugarcrmField','Subjects','AccountId','VariableId','DeskConfiguration','int_desk_configuration_has_tags','ZohoField','int_zendesk_configuration_has_tags','FreshdeskAccount','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','VtigerConfiguration','ServicenowAccount','FreshsalesConfiguration','ChatQueueReport','FromId','ToId','ProjectId','SquareProjectId','campaigns_has_cm_lists','FromMailAccountId','FromAccount','FromUserId','FromAgent','ToUserId','ToAgent','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','FromChatWebsiteId','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','OpenchannelTransferReport','FromOpenchannelAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','UserProfileSections','userProfileId','UserProfileResource','Resources','sectionId','WhatsappAccountId','user_has_whatsapp_accounts','WhatsappQueueReport','FromWhatsappAccountId','ToWhatsappAccountId','WhatsappQueueId','team_has_whatsapp_queues','../config/environment','jstz','sequelize','defaultsDeep','motion2','xcall','127.0.0.1','mysql','utf8mb4','name','utf8','utf8_general_ci','sequelizeHistory','xC@LL1234','database','username','password','options','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','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','../api/mailQueue/mailQueue.model','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','SmsInteraction','../api/smsInteraction/smsInteraction.model','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmHopper/cmHopper.model','CmHopperBlack','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','Pause','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','../api/contactItemType/contactItemType.model','CmContactHasItem','../api/cmContactHasItem/cmContactHasItem.model','CmHopperAdditionalPhone','Template','../api/trigger/trigger.model','../api/variable/variable.model','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskAccount/intDeskAccount.model','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','../api/network/network.model','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','../api/setting/setting.model','SquareOdbc','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','Campaign','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','../api/userProfileResource/userProfileResource.model','../api/userNotification/userNotification.model','WhatsappAccount','WhatsappApplication','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','../api/user-setting/user-setting.model','hasOne','VoiceMail','cascade','UserId','UserSetting','userSetting','hasMany','Recordings','VoiceExtension','Extensions','HopperFinals','HopperHistory','SmsInteractions','FaxInteraction','FaxInteractions','MailInteractions','WhatsappInteraction','WhatsappInteractions','UserNotification','UserNotifications','SenderId','belongsTo','belongsToMany','Groups','chat_group_has_users','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','user_has_teams','ChatInteractions','user_has_sms_interactions','user_has_whatsapp_interactions','UserVoiceQueue','VoicePrefix','VoicePrefixes','MailQueue','MailQueues','ChatQueues','FaxQueues','SmsQueue','SmsQueues','WhatsappQueues','ChatWebsite','ChatWebsites','FaxAccounts','user_has_fax_accounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','user_has_sms_accounts','WhatsappAccounts','SquareProjects','user_has_square_projects','SpiedAgents','ChanSpyId','VoiceContext','Applications','moh_has_sounds','Members','VoiceQueueId','CmHopper','Hoppers','HopperHistories','HopperBlacks','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','BlackLists','voice_queues_has_cm_blacklists','Messages','mailbox','mailboxuser','QueueCalls','AgentReports','ContactId','MailAccountId','CloudProvider','CloudProviderId','restrict','Imap','Smtp','Disposition','CannedAnswer','Interactions','List','TemplateId','team_has_mail_queues','Teams','Account','Contact','Owner','Tag','mail_interaction_has_tags','Tags','ThroughTags','Users','user_has_mail_interactions'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0x6d51,0x8c));var _0x16d5=function(_0x49a5cd,_0x4c000a){_0x49a5cd=_0x49a5cd-0x0;var _0x5df4a4=_0x6d51[_0x49a5cd];return _0x5df4a4;};'use strict';var config=require(_0x16d5('0x0'));var Sequelize=require('sequelize');var _=require('lodash');var jstz=require(_0x16d5('0x1'));var timezone=jstz['determine']();config[_0x16d5('0x2')]=_[_0x16d5('0x3')](config[_0x16d5('0x2')],{'database':_0x16d5('0x4'),'username':_0x16d5('0x5'),'password':'xC@LL1234','options':{'host':_0x16d5('0x6'),'port':0xcea,'dialect':_0x16d5('0x7'),'dialectOptions':{'charset':_0x16d5('0x8')},'logging':![],'timezone':timezone[_0x16d5('0x9')](),'define':{'charset':_0x16d5('0xa'),'collate':_0x16d5('0xb')}}});config[_0x16d5('0xc')]=_[_0x16d5('0x3')](config[_0x16d5('0xc')],{'database':'motion2','username':_0x16d5('0x5'),'password':_0x16d5('0xd'),'options':{'host':_0x16d5('0x6'),'port':0xcea,'dialect':_0x16d5('0x7'),'dialectOptions':{'charset':_0x16d5('0x8')},'logging':![],'timezone':timezone[_0x16d5('0x9')](),'define':{'charset':_0x16d5('0xa'),'collate':_0x16d5('0xb')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x16d5('0x2')][_0x16d5('0xe')],config[_0x16d5('0x2')][_0x16d5('0xf')],config['sequelize'][_0x16d5('0x10')],config[_0x16d5('0x2')][_0x16d5('0x11')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0x16d5('0xe')],config[_0x16d5('0xc')][_0x16d5('0xf')],config[_0x16d5('0xc')][_0x16d5('0x10')],config[_0x16d5('0xc')]['options'])};db[_0x16d5('0x12')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/user/user.model');db[_0x16d5('0x14')]=db['sequelize'][_0x16d5('0x13')](_0x16d5('0x15'));db['VoiceContext']=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x16'));db['VoiceExtension']=db[_0x16d5('0x2')]['import'](_0x16d5('0x17'));db[_0x16d5('0x18')]=db['sequelize'][_0x16d5('0x13')](_0x16d5('0x19'));db[_0x16d5('0x1a')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x1b'));db[_0x16d5('0x1c')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x1d'));db[_0x16d5('0x1e')]=db[_0x16d5('0x2')]['import'](_0x16d5('0x1f'));db['VoiceMail']=db['sequelize'][_0x16d5('0x13')](_0x16d5('0x20'));db[_0x16d5('0x21')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x22'));db[_0x16d5('0x23')]=db[_0x16d5('0x2')]['import'](_0x16d5('0x24'));db['VoiceDialReport']=db['sequelize'][_0x16d5('0x13')](_0x16d5('0x25'));db[_0x16d5('0x26')]=db['sequelize']['import'](_0x16d5('0x27'));db[_0x16d5('0x28')]=db['sequelize']['import'](_0x16d5('0x29'));db[_0x16d5('0x2a')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x2b'));db[_0x16d5('0x2c')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/trunk/trunk.model');db[_0x16d5('0x2d')]=db['sequelize'][_0x16d5('0x13')](_0x16d5('0x2e'));db[_0x16d5('0x2f')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x30'));db['UserVoiceQueue']=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/userVoiceQueue/userVoiceQueue.model');db[_0x16d5('0x31')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x32'));db[_0x16d5('0x33')]=db['sequelize'][_0x16d5('0x13')](_0x16d5('0x34'));db[_0x16d5('0x35')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/userFaxQueue/userFaxQueue.model');db[_0x16d5('0x36')]=db['sequelize'][_0x16d5('0x13')](_0x16d5('0x37'));db[_0x16d5('0x38')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x39'));db[_0x16d5('0x3a')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x3b'));db[_0x16d5('0x3c')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x3d'));db[_0x16d5('0x3e')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x3f'));db[_0x16d5('0x40')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x41'));db['MailQueue']=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x42'));db['MailSubstatus']=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x43'));db[_0x16d5('0x44')]=db['sequelize'][_0x16d5('0x13')](_0x16d5('0x45'));db[_0x16d5('0x46')]=db[_0x16d5('0x2')]['import'](_0x16d5('0x47'));db[_0x16d5('0x48')]=db[_0x16d5('0x2')]['import']('../api/mailApplication/mailApplication.model');db[_0x16d5('0x49')]=db['sequelize'][_0x16d5('0x13')](_0x16d5('0x4a'));db[_0x16d5('0x4b')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x4c'));db[_0x16d5('0x4d')]=db['sequelize'][_0x16d5('0x13')](_0x16d5('0x4e'));db[_0x16d5('0x4f')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x50'));db[_0x16d5('0x51')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/faxApplication/faxApplication.model');db['FaxInteraction']=db[_0x16d5('0x2')]['import'](_0x16d5('0x52'));db[_0x16d5('0x53')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x54'));db[_0x16d5('0x55')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x56'));db['FaxQueueReport']=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x57'));db[_0x16d5('0x58')]=db[_0x16d5('0x2')]['import'](_0x16d5('0x59'));db[_0x16d5('0x5a')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/smsApplication/smsApplication.model');db[_0x16d5('0x5b')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x5c'));db['SmsMessage']=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/smsMessage/smsMessage.model');db['SmsQueue']=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x5d'));db[_0x16d5('0x5e')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x5f'));db['OpenchannelApplication']=db[_0x16d5('0x2')]['import'](_0x16d5('0x60'));db[_0x16d5('0x61')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x62'));db[_0x16d5('0x63')]=db[_0x16d5('0x2')]['import']('../api/openchannelMessage/openchannelMessage.model');db[_0x16d5('0x64')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x65'));db['ChatWebsite']=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x66'));db[_0x16d5('0x67')]=db['sequelize'][_0x16d5('0x13')]('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x16d5('0x68')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x69'));db[_0x16d5('0x6a')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/chatInteraction/chatInteraction.model');db[_0x16d5('0x6b')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x6c'));db[_0x16d5('0x6d')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x6e'));db[_0x16d5('0x6f')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/chatQueue/chatQueue.model');db[_0x16d5('0x70')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x71'));db[_0x16d5('0x72')]=db['sequelize'][_0x16d5('0x13')](_0x16d5('0x73'));db[_0x16d5('0x74')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x75'));db[_0x16d5('0x76')]=db['sequelize'][_0x16d5('0x13')]('../api/cmContact/cmContact.model');db['CmHopper']=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x77'));db[_0x16d5('0x78')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/cmHopperBlack/cmHopperBlack.model');db[_0x16d5('0x79')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x7a'));db[_0x16d5('0x7b')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x7c'));db[_0x16d5('0x7d')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x7e'));db[_0x16d5('0x7f')]=db[_0x16d5('0x2')]['import'](_0x16d5('0x80'));db[_0x16d5('0x81')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x82'));db[_0x16d5('0x83')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x84'));db['CannedAnswer']=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x85'));db['Disposition']=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x86'));db[_0x16d5('0x87')]=db[_0x16d5('0x2')]['import'](_0x16d5('0x88'));db[_0x16d5('0x89')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/interval/interval.model');db[_0x16d5('0x8a')]=db['sequelize'][_0x16d5('0x13')]('../api/pause/pause.model');db[_0x16d5('0x8b')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x8c'));db[_0x16d5('0x8d')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/voiceQueuesLog/voiceQueuesLog.model');db[_0x16d5('0x8e')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x8f'));db[_0x16d5('0x90')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x91'));db['Tag']=db['sequelize'][_0x16d5('0x13')]('../api/tag/tag.model');db['ContactItemType']=db['sequelize'][_0x16d5('0x13')](_0x16d5('0x92'));db[_0x16d5('0x93')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x94'));db[_0x16d5('0x95')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model');db[_0x16d5('0x96')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/template/template.model');db['Trigger']=db['sequelize'][_0x16d5('0x13')](_0x16d5('0x97'));db['Variable']=db['sequelize'][_0x16d5('0x13')](_0x16d5('0x98'));db[_0x16d5('0x99')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x9a'));db[_0x16d5('0x9b')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x9c'));db['AnalyticCustomReport']=db[_0x16d5('0x2')]['import'](_0x16d5('0x9d'));db['AnalyticDefaultReport']=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x9e'));db[_0x16d5('0x9f')]=db[_0x16d5('0x2')]['import'](_0x16d5('0xa0'));db[_0x16d5('0xa1')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xa2'));db[_0x16d5('0xa3')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xa4'));db[_0x16d5('0xa5')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xa6'));db[_0x16d5('0xa7')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/intSalesforceAccount/intSalesforceAccount.model');db[_0x16d5('0xa8')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xa9'));db[_0x16d5('0xaa')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/intSalesforceField/intSalesforceField.model');db['SugarcrmAccount']=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xab'));db[_0x16d5('0xac')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xad'));db['SugarcrmField']=db['sequelize']['import'](_0x16d5('0xae'));db[_0x16d5('0xaf')]=db['sequelize']['import'](_0x16d5('0xb0'));db['DeskConfiguration']=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xb1'));db[_0x16d5('0xb2')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xb3'));db[_0x16d5('0xb4')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/intZohoAccount/intZohoAccount.model');db[_0x16d5('0xb5')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xb6'));db['ZohoField']=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xb7'));db[_0x16d5('0xb8')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xb9'));db[_0x16d5('0xba')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xbb'));db[_0x16d5('0xbc')]=db['sequelize'][_0x16d5('0x13')]('../api/intZendeskField/intZendeskField.model');db['FreshdeskAccount']=db[_0x16d5('0x2')]['import']('../api/intFreshdeskAccount/intFreshdeskAccount.model');db['FreshdeskConfiguration']=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xbd'));db[_0x16d5('0xbe')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xbf'));db[_0x16d5('0xc0')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xc1'));db['VtigerConfiguration']=db['sequelize'][_0x16d5('0x13')](_0x16d5('0xc2'));db[_0x16d5('0xc3')]=db[_0x16d5('0x2')]['import'](_0x16d5('0xc4'));db['ServicenowAccount']=db[_0x16d5('0x2')]['import']('../api/intServicenowAccount/intServicenowAccount.model');db[_0x16d5('0xc5')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xc6'));db[_0x16d5('0xc7')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xc8'));db[_0x16d5('0xc9')]=db[_0x16d5('0x2')]['import']('../api/intDynamics365Account/intDynamics365Account.model');db[_0x16d5('0xca')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xcb'));db[_0x16d5('0xcc')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xcd'));db[_0x16d5('0xce')]=db['sequelize']['import'](_0x16d5('0xcf'));db['FreshsalesConfiguration']=db[_0x16d5('0x2')]['import'](_0x16d5('0xd0'));db[_0x16d5('0xd1')]=db['sequelize'][_0x16d5('0x13')](_0x16d5('0xd2'));db['Integration']=db['sequelize'][_0x16d5('0x13')](_0x16d5('0x9a'));db['Network']=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xd3'));db['ChatQueueReport']=db['sequelize'][_0x16d5('0x13')]('../api/chatQueueReport/chatQueueReport.model');db['ChatInternalMessage']=db['sequelize'][_0x16d5('0x13')](_0x16d5('0xd4'));db[_0x16d5('0xd5')]=db[_0x16d5('0x2')]['import'](_0x16d5('0xd6'));db[_0x16d5('0xd7')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xd8'));db[_0x16d5('0xd9')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xda'));db[_0x16d5('0xdb')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xdc'));db[_0x16d5('0xdd')]=db[_0x16d5('0x2')]['import'](_0x16d5('0xde'));db[_0x16d5('0xdf')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xe0'));db[_0x16d5('0xe1')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xe2'));db['Setting']=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xe3'));db[_0x16d5('0xe4')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/squareOdbc/squareOdbc.model');db[_0x16d5('0xe5')]=db['sequelize'][_0x16d5('0x13')](_0x16d5('0xe6'));db[_0x16d5('0xe7')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xe8'));db[_0x16d5('0xe9')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xea'));db[_0x16d5('0xeb')]=db['sequelize'][_0x16d5('0x13')](_0x16d5('0xec'));db['License']=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/license/license.model');db[_0x16d5('0xed')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/campaign/campaign.model');db[_0x16d5('0xee')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xef'));db[_0x16d5('0xf0')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xf1'));db[_0x16d5('0xf2')]=db[_0x16d5('0x2')]['import']('../api/plugin/plugin.model');db[_0x16d5('0xf3')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xf4'));db[_0x16d5('0xf5')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xf6'));db[_0x16d5('0xf7')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0xf8'));db['OpenchannelTransferReport']=db[_0x16d5('0x2')]['import']('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0x16d5('0xf9')]=db['sequelize'][_0x16d5('0x13')](_0x16d5('0xfa'));db[_0x16d5('0xfb')]=db['sequelize'][_0x16d5('0x13')](_0x16d5('0xfc'));db['VoicePrefix']=db[_0x16d5('0x2')]['import'](_0x16d5('0xfd'));db[_0x16d5('0xfe')]=db[_0x16d5('0x2')]['import'](_0x16d5('0xff'));db[_0x16d5('0x100')]=db[_0x16d5('0x2')]['import'](_0x16d5('0x101'));db['UserProfileResource']=db['sequelize']['import'](_0x16d5('0x102'));db['UserNotification']=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x103'));db[_0x16d5('0x104')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/whatsappAccount/whatsappAccount.model');db[_0x16d5('0x105')]=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/whatsappApplication/whatsappApplication.model');db['WhatsappInteraction']=db[_0x16d5('0x2')]['import'](_0x16d5('0x106'));db[_0x16d5('0x107')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x108'));db['WhatsappQueueReport']=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/whatsappQueueReport/whatsappQueueReport.model');db[_0x16d5('0x109')]=db[_0x16d5('0x2')]['import'](_0x16d5('0x10a'));db[_0x16d5('0x10b')]=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x10c'));db['CloudProvider']=db[_0x16d5('0x2')][_0x16d5('0x13')]('../api/cloudProvider/cloudProvider.model');db[_0x16d5('0x10d')]=db['sequelize'][_0x16d5('0x13')](_0x16d5('0x10e'));db[_0x16d5('0x10f')]=db['sequelize']['import'](_0x16d5('0x110'));db[_0x16d5('0x111')]=db[_0x16d5('0x2')]['import'](_0x16d5('0x112'));db['UserSetting']=db[_0x16d5('0x2')][_0x16d5('0x13')](_0x16d5('0x113'));db[_0x16d5('0x12')][_0x16d5('0x114')](db[_0x16d5('0x115')],{'as':_0x16d5('0x115'),'onDelete':_0x16d5('0x116'),'foreignKey':_0x16d5('0x117')});db[_0x16d5('0x12')][_0x16d5('0x114')](db[_0x16d5('0x118')],{'as':_0x16d5('0x119'),'onDelete':_0x16d5('0x116'),'foreignKey':_0x16d5('0x117')});db[_0x16d5('0x12')][_0x16d5('0x11a')](db[_0x16d5('0x1c')],{'as':_0x16d5('0x11b'),'foreignKey':'UserId'});db[_0x16d5('0x12')]['hasMany'](db[_0x16d5('0x2f')],{'as':'VoiceQueuesRt','foreignKey':_0x16d5('0x117')});db[_0x16d5('0x12')]['hasMany'](db[_0x16d5('0x11c')],{'as':_0x16d5('0x11d'),'onDelete':'cascade','hooks':!![]});db[_0x16d5('0x12')][_0x16d5('0x11a')](db['CmHopperFinal'],{'as':_0x16d5('0x11e'),'foreignKey':_0x16d5('0x117')});db[_0x16d5('0x12')][_0x16d5('0x11a')](db[_0x16d5('0x7b')],{'as':_0x16d5('0x11f'),'foreignKey':_0x16d5('0x117')});db[_0x16d5('0x12')]['hasMany'](db[_0x16d5('0x7d')],{'as':_0x16d5('0x7d'),'foreignKey':_0x16d5('0x117')});db[_0x16d5('0x12')]['hasMany'](db[_0x16d5('0x61')],{'as':'OpenchannelInteractions','foreignKey':_0x16d5('0x117')});db[_0x16d5('0x12')][_0x16d5('0x11a')](db['ChatInteraction'],{'as':'ChatInteractions','foreignKey':_0x16d5('0x117')});db[_0x16d5('0x12')][_0x16d5('0x11a')](db[_0x16d5('0x5b')],{'as':_0x16d5('0x120'),'foreignKey':_0x16d5('0x117')});db['User'][_0x16d5('0x11a')](db[_0x16d5('0x121')],{'as':_0x16d5('0x122'),'foreignKey':'UserId'});db[_0x16d5('0x12')][_0x16d5('0x11a')](db['MailInteraction'],{'as':_0x16d5('0x123'),'foreignKey':'UserId'});db[_0x16d5('0x12')][_0x16d5('0x11a')](db[_0x16d5('0x124')],{'as':_0x16d5('0x125'),'foreignKey':_0x16d5('0x117')});db['User'][_0x16d5('0x11a')](db[_0x16d5('0x126')],{'as':_0x16d5('0x127'),'foreignKey':_0x16d5('0x128')});db[_0x16d5('0x12')][_0x16d5('0x129')](db[_0x16d5('0xfe')],{'as':'UserProfile','foreignKey':'userProfileId'});db[_0x16d5('0x12')][_0x16d5('0x12a')](db[_0x16d5('0x70')],{'as':_0x16d5('0x12b'),'through':_0x16d5('0x12c')});db[_0x16d5('0x12')][_0x16d5('0x12a')](db[_0x16d5('0x76')],{'as':_0x16d5('0x12d'),'through':_0x16d5('0x12e')});db['User']['belongsToMany'](db[_0x16d5('0xfb')],{'as':_0x16d5('0x12f'),'through':_0x16d5('0x130')});db[_0x16d5('0x12')][_0x16d5('0x12a')](db[_0x16d5('0xeb')],{'through':_0x16d5('0x131')});db[_0x16d5('0x12')]['belongsToMany'](db[_0x16d5('0x44')],{'as':_0x16d5('0x123'),'through':'user_has_mail_interactions'});db[_0x16d5('0x12')][_0x16d5('0x12a')](db[_0x16d5('0x6a')],{'as':_0x16d5('0x132'),'through':'user_has_chat_interactions'});db['User']['belongsToMany'](db[_0x16d5('0x121')],{'as':'FaxInteractions','through':'user_has_fax_interactions'});db[_0x16d5('0x12')][_0x16d5('0x12a')](db[_0x16d5('0x5b')],{'as':_0x16d5('0x120'),'through':_0x16d5('0x133')});db[_0x16d5('0x12')]['belongsToMany'](db[_0x16d5('0x61')],{'as':'OpenchannelInteractions','through':'user_has_openchannel_interactions'});db[_0x16d5('0x12')][_0x16d5('0x12a')](db[_0x16d5('0x124')],{'as':_0x16d5('0x125'),'through':_0x16d5('0x134')});db['User'][_0x16d5('0x12a')](db[_0x16d5('0x1a')],{'as':'VoiceQueues','through':_0x16d5('0x135'),'required':![]});db[_0x16d5('0x12')][_0x16d5('0x12a')](db[_0x16d5('0x136')],{'as':_0x16d5('0x137'),'through':'UserVoicePrefix','required':![]});db[_0x16d5('0x12')][_0x16d5('0x12a')](db[_0x16d5('0x138')],{'as':_0x16d5('0x139'),'through':_0x16d5('0x33'),'required':![]});db['User'][_0x16d5('0x12a')](db[_0x16d5('0x6f')],{'as':_0x16d5('0x13a'),'through':_0x16d5('0x31'),'required':![],'hooks':!![]});db['User'][_0x16d5('0x12a')](db[_0x16d5('0x55')],{'as':_0x16d5('0x13b'),'through':'UserFaxQueue','required':![]});db['User'][_0x16d5('0x12a')](db[_0x16d5('0x13c')],{'as':_0x16d5('0x13d'),'through':_0x16d5('0x36'),'required':![]});db[_0x16d5('0x12')][_0x16d5('0x12a')](db[_0x16d5('0x64')],{'as':'OpenchannelQueues','through':_0x16d5('0x38'),'required':![]});db[_0x16d5('0x12')][_0x16d5('0x12a')](db['WhatsappQueue'],{'as':_0x16d5('0x13e'),'through':'UserWhatsappQueue','required':![]});db[_0x16d5('0x12')][_0x16d5('0x12a')](db[_0x16d5('0xfb')],{'through':'cm_user_has_lists'});db[_0x16d5('0x12')][_0x16d5('0x12a')](db[_0x16d5('0x13f')],{'as':_0x16d5('0x140'),'through':'user_has_chat_websites'});db['User'][_0x16d5('0x12a')](db[_0x16d5('0x4f')],{'as':_0x16d5('0x141'),'through':_0x16d5('0x142')});db[_0x16d5('0x12')][_0x16d5('0x12a')](db[_0x16d5('0x40')],{'as':'MailAccounts','through':_0x16d5('0x143')});db[_0x16d5('0x12')]['belongsToMany'](db[_0x16d5('0x5e')],{'as':_0x16d5('0x144'),'through':_0x16d5('0x145')});db[_0x16d5('0x12')][_0x16d5('0x12a')](db[_0x16d5('0x58')],{'as':'SmsAccounts','through':_0x16d5('0x146')});db[_0x16d5('0x12')][_0x16d5('0x12a')](db[_0x16d5('0x104')],{'as':_0x16d5('0x147'),'through':'user_has_whatsapp_accounts'});db[_0x16d5('0x12')][_0x16d5('0x12a')](db[_0x16d5('0xe5')],{'as':_0x16d5('0x148'),'through':_0x16d5('0x149')});db[_0x16d5('0x14')][_0x16d5('0x11a')](db[_0x16d5('0x11c')],{'as':_0x16d5('0x14a'),'onDelete':'cascade','foreignKey':_0x16d5('0x14b')});db[_0x16d5('0x14c')]['hasMany'](db['VoiceExtension'],{'onDelete':_0x16d5('0x116')});db[_0x16d5('0x11c')][_0x16d5('0x11a')](db[_0x16d5('0x11c')],{'as':_0x16d5('0x14d'),'onDelete':_0x16d5('0x116')});db[_0x16d5('0x18')][_0x16d5('0x12a')](db[_0x16d5('0x90')],{'as':'Sounds','through':_0x16d5('0x14e')});db[_0x16d5('0x1a')]['hasMany'](db[_0x16d5('0x2f')],{'as':_0x16d5('0x14f'),'foreignKey':_0x16d5('0x150')});db[_0x16d5('0x1a')][_0x16d5('0x11a')](db[_0x16d5('0x151')],{'as':_0x16d5('0x152'),'foreignKey':_0x16d5('0x150')});db[_0x16d5('0x1a')][_0x16d5('0x11a')](db[_0x16d5('0x79')],{'as':'HopperFinals','foreignKey':_0x16d5('0x150')});db[_0x16d5('0x1a')][_0x16d5('0x11a')](db[_0x16d5('0x7b')],{'as':_0x16d5('0x153'),'foreignKey':_0x16d5('0x150')});db[_0x16d5('0x1a')][_0x16d5('0x11a')](db[_0x16d5('0x7d')],{'as':'ReportAgentPreview','foreignKey':_0x16d5('0x150')});db[_0x16d5('0x1a')]['hasMany'](db[_0x16d5('0x78')],{'as':_0x16d5('0x154'),'foreignKey':_0x16d5('0x150')});db[_0x16d5('0x1a')][_0x16d5('0x11a')](db[_0x16d5('0xd9')],{'as':'JscriptySessions','foreignKey':_0x16d5('0x150')});db[_0x16d5('0x1a')]['belongsTo'](db[_0x16d5('0x2c')],{'as':_0x16d5('0x2c'),'foreignKey':'TrunkId'});db[_0x16d5('0x1a')]['belongsTo'](db[_0x16d5('0x2c')],{'as':_0x16d5('0x155'),'foreignKey':_0x16d5('0x156')});db[_0x16d5('0x1a')][_0x16d5('0x129')](db['Interval'],{'as':_0x16d5('0x89'),'foreignKey':_0x16d5('0x157')});db[_0x16d5('0x1a')][_0x16d5('0x129')](db['Pause'],{'as':_0x16d5('0x158'),'foreignKey':_0x16d5('0x159')});db[_0x16d5('0x1a')]['belongsToMany'](db[_0x16d5('0xfb')],{'as':_0x16d5('0x12f'),'through':_0x16d5('0x15a')});db['VoiceQueue']['belongsToMany'](db[_0x16d5('0x12')],{'as':_0x16d5('0x15b'),'through':_0x16d5('0x135')});db['VoiceQueue'][_0x16d5('0x12a')](db[_0x16d5('0xeb')],{'as':'Teams','through':_0x16d5('0x10d')});db['VoiceQueue'][_0x16d5('0x12a')](db[_0x16d5('0xfb')],{'as':_0x16d5('0x15c'),'through':_0x16d5('0x15d')});db[_0x16d5('0x1c')][_0x16d5('0x129')](db[_0x16d5('0x12')],{'as':_0x16d5('0x12'),'foreignKey':_0x16d5('0x117')});db[_0x16d5('0x1e')][_0x16d5('0x129')](db[_0x16d5('0x12')],{'as':_0x16d5('0x12'),'foreignKey':_0x16d5('0x117')});db['VoiceMail']['hasMany'](db[_0x16d5('0x21')],{'as':_0x16d5('0x15e'),'onDelete':'cascade','foreignKey':'mailboxuser','sourceKey':_0x16d5('0x15f')});db[_0x16d5('0x21')]['belongsTo'](db[_0x16d5('0x115')],{'foreignKey':_0x16d5('0x160'),'targetKey':_0x16d5('0x15f')});db[_0x16d5('0x23')][_0x16d5('0x11a')](db[_0x16d5('0x28')],{'as':_0x16d5('0x161'),'foreignKey':'uniqueid','constraints':![]});db[_0x16d5('0x23')]['hasMany'](db[_0x16d5('0x26')],{'as':_0x16d5('0x162'),'foreignKey':'uniqueid','constraints':![]});db[_0x16d5('0x23')]['belongsTo'](db[_0x16d5('0x12')],{'as':'User','foreignKey':_0x16d5('0x117')});db[_0x16d5('0x23')][_0x16d5('0x129')](db[_0x16d5('0x76')],{'as':'Contact','foreignKey':_0x16d5('0x163')});db[_0x16d5('0x3c')][_0x16d5('0x129')](db[_0x16d5('0x40')],{'as':_0x16d5('0x40'),'foreignKey':_0x16d5('0x164')});db['MailServerIn']['belongsTo'](db['CloudProvider'],{'as':_0x16d5('0x165'),'foreignKey':_0x16d5('0x166'),'onDelete':_0x16d5('0x167')});db['MailServerOut'][_0x16d5('0x129')](db[_0x16d5('0x40')],{'as':'MailAccount','foreignKey':_0x16d5('0x164')});db[_0x16d5('0x3e')][_0x16d5('0x129')](db[_0x16d5('0x165')],{'as':'CloudProvider','foreignKey':_0x16d5('0x166'),'onDelete':_0x16d5('0x167')});db[_0x16d5('0x40')][_0x16d5('0x114')](db[_0x16d5('0x3c')],{'as':_0x16d5('0x168'),'onDelete':_0x16d5('0x116')});db['MailAccount'][_0x16d5('0x114')](db['MailServerOut'],{'as':_0x16d5('0x169'),'onDelete':'cascade'});db['MailAccount'][_0x16d5('0x11a')](db[_0x16d5('0x16a')],{'as':'Dispositions','foreignKey':'MailAccountId','onDelete':_0x16d5('0x116')});db[_0x16d5('0x40')][_0x16d5('0x11a')](db[_0x16d5('0x16b')],{'as':'Answers','foreignKey':_0x16d5('0x164')});db[_0x16d5('0x40')][_0x16d5('0x11a')](db[_0x16d5('0x46')],{'as':'Messages','foreignKey':_0x16d5('0x164')});db[_0x16d5('0x40')][_0x16d5('0x11a')](db[_0x16d5('0x44')],{'as':_0x16d5('0x16c')});db[_0x16d5('0x40')][_0x16d5('0x11a')](db['MailApplication'],{'as':_0x16d5('0x14d')});db[_0x16d5('0x40')]['belongsTo'](db['CmList'],{'as':_0x16d5('0x16d'),'foreignKey':'ListId'});db['MailAccount'][_0x16d5('0x129')](db['Template'],{'as':_0x16d5('0x96'),'foreignKey':_0x16d5('0x16e')});db['MailAccount']['belongsTo'](db[_0x16d5('0x8a')],{'as':_0x16d5('0x158'),'foreignKey':_0x16d5('0x159')});db[_0x16d5('0x40')][_0x16d5('0x12a')](db[_0x16d5('0x12')],{'as':_0x16d5('0x15b'),'through':'user_has_mail_accounts'});db[_0x16d5('0x138')][_0x16d5('0x12a')](db['User'],{'as':'Agents','through':_0x16d5('0x33')});db[_0x16d5('0x138')]['belongsToMany'](db[_0x16d5('0xeb')],{'through':_0x16d5('0x16f'),'as':_0x16d5('0x170')});db[_0x16d5('0x44')]['hasMany'](db[_0x16d5('0x46')],{'as':_0x16d5('0x15e'),'onDelete':_0x16d5('0x116'),'foreignKey':'MailInteractionId'});db[_0x16d5('0x44')][_0x16d5('0x129')](db[_0x16d5('0x40')],{'as':_0x16d5('0x171'),'foreignKey':_0x16d5('0x164')});db['MailInteraction'][_0x16d5('0x129')](db[_0x16d5('0x76')],{'as':_0x16d5('0x172'),'foreignKey':'ContactId'});db[_0x16d5('0x44')][_0x16d5('0x129')](db[_0x16d5('0x12')],{'as':_0x16d5('0x173'),'foreignKey':_0x16d5('0x117')});db['MailInteraction'][_0x16d5('0x12a')](db[_0x16d5('0x174')],{'through':_0x16d5('0x175'),'as':_0x16d5('0x176')});db[_0x16d5('0x44')][_0x16d5('0x12a')](db[_0x16d5('0x174')],{'through':_0x16d5('0x175'),'as':_0x16d5('0x177')});db[_0x16d5('0x44')][_0x16d5('0x12a')](db[_0x16d5('0x12')],{'as':_0x16d5('0x178'),'through':_0x16d5('0x179'),'foreignKey':_0x16d5('0x17a')});db[_0x16d5('0x46')][_0x16d5('0x11a')](db['Attachment'],{'as':_0x16d5('0x17b'),'onDelete':_0x16d5('0x116')});db[_0x16d5('0x46')]['belongsTo'](db[_0x16d5('0x12')],{'as':_0x16d5('0x12')});db[_0x16d5('0x46')][_0x16d5('0x129')](db[_0x16d5('0x76')],{'onDelete':_0x16d5('0x116'),'as':'Contact'});db[_0x16d5('0x46')][_0x16d5('0x129')](db[_0x16d5('0x44')],{'as':_0x16d5('0x17c'),'foreignKey':'MailInteractionId'});db[_0x16d5('0x46')][_0x16d5('0x129')](db['MailAccount'],{'as':_0x16d5('0x171'),'foreignKey':_0x16d5('0x164')});db[_0x16d5('0x46')][_0x16d5('0x129')](db[_0x16d5('0x13f')],{'as':_0x16d5('0x13f'),'foreignKey':_0x16d5('0x17d')});db[_0x16d5('0x46')][_0x16d5('0x129')](db[_0x16d5('0x6d')],{'as':_0x16d5('0x6d'),'foreignKey':_0x16d5('0x17e')});db['MailApplication'][_0x16d5('0x129')](db[_0x16d5('0x12')],{'onDelete':_0x16d5('0x167')});db['MailApplication'][_0x16d5('0x129')](db['MailQueue'],{'onDelete':_0x16d5('0x167')});db[_0x16d5('0x48')][_0x16d5('0x129')](db[_0x16d5('0x40')],{'onDelete':_0x16d5('0x167')});db[_0x16d5('0x48')][_0x16d5('0x129')](db['Interval'],{'onDelete':_0x16d5('0x167'),'foreignKey':_0x16d5('0x157')});db[_0x16d5('0x48')]['belongsTo'](db['Tag'],{'onDelete':_0x16d5('0x167'),'foreignKey':_0x16d5('0x17f')});db[_0x16d5('0x49')][_0x16d5('0x129')](db[_0x16d5('0x40')],{});db['MailQueueReport'][_0x16d5('0x129')](db[_0x16d5('0xfb')],{'as':_0x16d5('0x16d'),'foreignKey':_0x16d5('0x180')});db[_0x16d5('0x49')]['belongsTo'](db[_0x16d5('0x76')],{'as':_0x16d5('0x172'),'foreignKey':_0x16d5('0x163')});db[_0x16d5('0x49')][_0x16d5('0x129')](db[_0x16d5('0x44')],{});db[_0x16d5('0x49')]['belongsTo'](db['MailMessage'],{});db[_0x16d5('0x49')][_0x16d5('0x129')](db[_0x16d5('0x12')],{});db['MailQueueReport'][_0x16d5('0x129')](db[_0x16d5('0x138')],{});db[_0x16d5('0x4b')][_0x16d5('0x11a')](db[_0x16d5('0x4d')],{'as':'Items','onDelete':_0x16d5('0x116')});db[_0x16d5('0x4f')][_0x16d5('0x11a')](db[_0x16d5('0x16a')],{'as':_0x16d5('0x181'),'foreignKey':_0x16d5('0x182'),'onDelete':_0x16d5('0x116')});db[_0x16d5('0x4f')][_0x16d5('0x11a')](db['CannedAnswer'],{'as':_0x16d5('0x183'),'foreignKey':_0x16d5('0x182')});db[_0x16d5('0x4f')][_0x16d5('0x11a')](db[_0x16d5('0x121')],{'as':_0x16d5('0x16c')});db['FaxAccount'][_0x16d5('0x11a')](db[_0x16d5('0x51')],{'as':_0x16d5('0x14d')});db[_0x16d5('0x4f')][_0x16d5('0x11a')](db[_0x16d5('0x11c')],{'as':_0x16d5('0x184'),'onDelete':'cascade'});db[_0x16d5('0x4f')][_0x16d5('0x11a')](db[_0x16d5('0x53')],{'as':'Messages'});db[_0x16d5('0x4f')]['belongsTo'](db[_0x16d5('0x2c')],{'as':_0x16d5('0x2c')});db[_0x16d5('0x4f')]['belongsTo'](db[_0x16d5('0xfb')],{'as':_0x16d5('0x16d'),'foreignKey':_0x16d5('0x180')});db['FaxAccount'][_0x16d5('0x129')](db['Pause'],{'as':_0x16d5('0x158'),'foreignKey':_0x16d5('0x159')});db[_0x16d5('0x4f')][_0x16d5('0x12a')](db[_0x16d5('0x12')],{'as':'Agents','through':'user_has_fax_accounts'});db['FaxApplication']['belongsTo'](db[_0x16d5('0x12')],{'onDelete':_0x16d5('0x167')});db['FaxApplication'][_0x16d5('0x129')](db[_0x16d5('0x55')],{'onDelete':_0x16d5('0x167')});db['FaxApplication']['belongsTo'](db['FaxAccount'],{'onDelete':_0x16d5('0x167')});db[_0x16d5('0x51')][_0x16d5('0x129')](db[_0x16d5('0x174')],{'onDelete':_0x16d5('0x167'),'foreignKey':_0x16d5('0x17f')});db[_0x16d5('0x121')][_0x16d5('0x11a')](db[_0x16d5('0x53')],{'as':_0x16d5('0x15e'),'onDelete':_0x16d5('0x116'),'foreignKey':_0x16d5('0x185')});db[_0x16d5('0x121')][_0x16d5('0x129')](db['FaxAccount'],{'as':_0x16d5('0x171'),'foreignKey':_0x16d5('0x182')});db['FaxInteraction'][_0x16d5('0x129')](db[_0x16d5('0x76')],{'as':_0x16d5('0x172'),'foreignKey':_0x16d5('0x163')});db[_0x16d5('0x121')][_0x16d5('0x129')](db[_0x16d5('0x12')],{'as':'Owner','foreignKey':_0x16d5('0x117')});db[_0x16d5('0x121')][_0x16d5('0x12a')](db['Tag'],{'through':_0x16d5('0x186'),'as':_0x16d5('0x176')});db[_0x16d5('0x121')]['belongsToMany'](db['Tag'],{'through':'fax_interaction_has_tags','as':_0x16d5('0x177')});db[_0x16d5('0x121')][_0x16d5('0x12a')](db[_0x16d5('0x12')],{'as':_0x16d5('0x178'),'through':_0x16d5('0x187'),'foreignKey':'FaxInteractionId'});db['FaxMessage'][_0x16d5('0x129')](db[_0x16d5('0x12')],{'onDelete':_0x16d5('0x116'),'as':_0x16d5('0x12')});db[_0x16d5('0x53')][_0x16d5('0x129')](db['FaxInteraction'],{'as':_0x16d5('0x17c'),'foreignKey':_0x16d5('0x185')});db[_0x16d5('0x53')][_0x16d5('0x129')](db[_0x16d5('0x76')],{'onDelete':_0x16d5('0x116'),'as':_0x16d5('0x172')});db['FaxMessage']['belongsTo'](db['Attachment'],{'as':_0x16d5('0xf0'),'foreignKey':'AttachmentId'});db[_0x16d5('0x53')][_0x16d5('0x129')](db[_0x16d5('0x4f')],{'as':_0x16d5('0x171'),'foreignKey':_0x16d5('0x182')});db[_0x16d5('0x55')]['belongsToMany'](db[_0x16d5('0x12')],{'as':_0x16d5('0x15b'),'through':'UserFaxQueue'});db['FaxQueue'][_0x16d5('0x12a')](db[_0x16d5('0xeb')],{'through':_0x16d5('0x188'),'as':_0x16d5('0x170')});db[_0x16d5('0x189')]['belongsTo'](db[_0x16d5('0x4f')],{});db['FaxQueueReport'][_0x16d5('0x129')](db[_0x16d5('0xfb')],{'as':_0x16d5('0x16d'),'foreignKey':_0x16d5('0x180')});db[_0x16d5('0x189')][_0x16d5('0x129')](db[_0x16d5('0x76')],{'as':_0x16d5('0x172'),'foreignKey':_0x16d5('0x163')});db[_0x16d5('0x189')][_0x16d5('0x129')](db[_0x16d5('0x121')],{});db[_0x16d5('0x189')]['belongsTo'](db[_0x16d5('0x53')],{});db[_0x16d5('0x189')]['belongsTo'](db[_0x16d5('0x12')],{});db[_0x16d5('0x189')]['belongsTo'](db[_0x16d5('0x55')],{});db[_0x16d5('0x58')][_0x16d5('0x11a')](db[_0x16d5('0x16a')],{'as':_0x16d5('0x181'),'foreignKey':_0x16d5('0x18a'),'onDelete':_0x16d5('0x116')});db[_0x16d5('0x58')]['hasMany'](db[_0x16d5('0x16b')],{'as':_0x16d5('0x183'),'foreignKey':_0x16d5('0x18a')});db[_0x16d5('0x58')][_0x16d5('0x11a')](db[_0x16d5('0x18b')],{'as':_0x16d5('0x15e'),'foreignKey':_0x16d5('0x18a')});db[_0x16d5('0x58')][_0x16d5('0x11a')](db['SmsInteraction'],{'as':'Interactions'});db[_0x16d5('0x58')][_0x16d5('0x11a')](db['SmsApplication'],{'as':'Applications'});db[_0x16d5('0x58')]['belongsTo'](db[_0x16d5('0xfb')],{'as':_0x16d5('0x16d'),'foreignKey':_0x16d5('0x180')});db[_0x16d5('0x58')][_0x16d5('0x129')](db[_0x16d5('0x8a')],{'as':_0x16d5('0x158'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x16d5('0x58')][_0x16d5('0x12a')](db['User'],{'as':_0x16d5('0x15b'),'through':'user_has_sms_accounts'});db['SmsApplication'][_0x16d5('0x129')](db[_0x16d5('0x12')],{'onDelete':_0x16d5('0x167')});db[_0x16d5('0x5a')][_0x16d5('0x129')](db['SmsQueue'],{'onDelete':_0x16d5('0x167')});db['SmsApplication'][_0x16d5('0x129')](db[_0x16d5('0x58')],{'onDelete':_0x16d5('0x167')});db['SmsApplication'][_0x16d5('0x129')](db[_0x16d5('0x89')],{'onDelete':_0x16d5('0x167'),'foreignKey':'IntervalId'});db[_0x16d5('0x5a')]['belongsTo'](db[_0x16d5('0x174')],{'onDelete':_0x16d5('0x167'),'foreignKey':_0x16d5('0x17f')});db[_0x16d5('0x5b')][_0x16d5('0x11a')](db[_0x16d5('0x18b')],{'as':'Messages','onDelete':_0x16d5('0x116'),'foreignKey':'SmsInteractionId'});db['SmsInteraction'][_0x16d5('0x129')](db[_0x16d5('0x58')],{'as':_0x16d5('0x171'),'foreignKey':_0x16d5('0x18a')});db[_0x16d5('0x5b')][_0x16d5('0x129')](db['CmContact'],{'as':_0x16d5('0x172'),'foreignKey':_0x16d5('0x163')});db[_0x16d5('0x5b')][_0x16d5('0x129')](db[_0x16d5('0x12')],{'as':_0x16d5('0x173'),'foreignKey':_0x16d5('0x117')});db[_0x16d5('0x5b')][_0x16d5('0x12a')](db['Tag'],{'through':_0x16d5('0x18c'),'as':_0x16d5('0x176')});db[_0x16d5('0x5b')][_0x16d5('0x12a')](db['Tag'],{'through':_0x16d5('0x18c'),'as':_0x16d5('0x177')});db[_0x16d5('0x5b')][_0x16d5('0x12a')](db['User'],{'as':_0x16d5('0x178'),'through':_0x16d5('0x133'),'foreignKey':_0x16d5('0x18d')});db[_0x16d5('0x18b')][_0x16d5('0x129')](db['User'],{'as':'User'});db[_0x16d5('0x18b')][_0x16d5('0x129')](db['CmContact'],{'onDelete':_0x16d5('0x116'),'as':_0x16d5('0x172')});db[_0x16d5('0x18b')][_0x16d5('0x129')](db[_0x16d5('0x5b')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x16d5('0x18d')});db[_0x16d5('0x18b')][_0x16d5('0x129')](db[_0x16d5('0x58')],{'as':'Account','foreignKey':'SmsAccountId'});db[_0x16d5('0x13c')]['belongsToMany'](db['User'],{'as':'Agents','through':'UserSmsQueue','foreignKey':_0x16d5('0x18e')});db['SmsQueue'][_0x16d5('0x12a')](db[_0x16d5('0xeb')],{'through':_0x16d5('0x18f'),'as':_0x16d5('0x170')});db[_0x16d5('0x5e')][_0x16d5('0x11a')](db[_0x16d5('0x16a')],{'as':_0x16d5('0x181'),'foreignKey':_0x16d5('0x190'),'onDelete':_0x16d5('0x116')});db[_0x16d5('0x5e')][_0x16d5('0x11a')](db[_0x16d5('0x16b')],{'as':_0x16d5('0x183'),'foreignKey':_0x16d5('0x190')});db[_0x16d5('0x5e')][_0x16d5('0x11a')](db[_0x16d5('0x61')],{'as':_0x16d5('0x16c'),'foreignKey':'OpenchannelAccountId'});db[_0x16d5('0x5e')][_0x16d5('0x11a')](db[_0x16d5('0x63')],{'as':_0x16d5('0x15e'),'foreignKey':_0x16d5('0x190')});db['OpenchannelAccount']['hasMany'](db[_0x16d5('0x191')],{'as':_0x16d5('0x14d'),'foreignKey':_0x16d5('0x190')});db[_0x16d5('0x5e')][_0x16d5('0x129')](db[_0x16d5('0xfb')],{'as':_0x16d5('0x16d'),'foreignKey':_0x16d5('0x180')});db[_0x16d5('0x5e')]['belongsTo'](db[_0x16d5('0x8a')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0x16d5('0x5e')]['belongsToMany'](db[_0x16d5('0x12')],{'as':_0x16d5('0x15b'),'through':'user_has_openchannel_accounts'});db['OpenchannelApplication'][_0x16d5('0x129')](db[_0x16d5('0x12')],{'onDelete':_0x16d5('0x167')});db['OpenchannelApplication'][_0x16d5('0x129')](db['OpenchannelQueue'],{'onDelete':_0x16d5('0x167'),'foreignKey':_0x16d5('0x192')});db['OpenchannelApplication'][_0x16d5('0x129')](db[_0x16d5('0x5e')],{'onDelete':_0x16d5('0x167'),'foreignKey':_0x16d5('0x190')});db['OpenchannelApplication']['belongsTo'](db[_0x16d5('0x89')],{'onDelete':_0x16d5('0x167'),'foreignKey':_0x16d5('0x157')});db['OpenchannelApplication'][_0x16d5('0x129')](db[_0x16d5('0x174')],{'onDelete':_0x16d5('0x167'),'foreignKey':_0x16d5('0x17f')});db['OpenchannelInteraction'][_0x16d5('0x11a')](db[_0x16d5('0x63')],{'as':_0x16d5('0x15e'),'onDelete':_0x16d5('0x116'),'foreignKey':_0x16d5('0x193')});db[_0x16d5('0x61')][_0x16d5('0x129')](db[_0x16d5('0x5e')],{'as':_0x16d5('0x171'),'foreignKey':_0x16d5('0x190')});db[_0x16d5('0x61')]['belongsTo'](db['CmContact'],{'as':'Contact','foreignKey':_0x16d5('0x163')});db[_0x16d5('0x61')][_0x16d5('0x129')](db[_0x16d5('0x12')],{'as':_0x16d5('0x173'),'foreignKey':_0x16d5('0x117')});db['OpenchannelInteraction']['belongsToMany'](db[_0x16d5('0x174')],{'through':_0x16d5('0x194'),'as':_0x16d5('0x176')});db['OpenchannelInteraction'][_0x16d5('0x12a')](db[_0x16d5('0x174')],{'through':_0x16d5('0x194'),'as':'ThroughTags'});db[_0x16d5('0x61')][_0x16d5('0x12a')](db[_0x16d5('0x12')],{'as':_0x16d5('0x178'),'through':_0x16d5('0x195'),'foreignKey':'OpenchannelInteractionId'});db[_0x16d5('0x63')][_0x16d5('0x129')](db[_0x16d5('0x12')],{'onDelete':'cascade','as':_0x16d5('0x12')});db[_0x16d5('0x63')][_0x16d5('0x129')](db['CmContact'],{'onDelete':'cascade','as':'Contact'});db['OpenchannelMessage']['belongsTo'](db[_0x16d5('0x61')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x16d5('0x193')});db[_0x16d5('0x63')][_0x16d5('0x129')](db[_0x16d5('0xf0')],{'as':'Attachment','foreignKey':_0x16d5('0x196')});db['OpenchannelMessage'][_0x16d5('0x129')](db[_0x16d5('0x5e')],{'as':_0x16d5('0x171'),'foreignKey':_0x16d5('0x190')});db[_0x16d5('0x64')]['belongsToMany'](db[_0x16d5('0x12')],{'as':_0x16d5('0x15b'),'through':_0x16d5('0x38'),'foreignKey':_0x16d5('0x192')});db[_0x16d5('0x64')]['belongsToMany'](db['Team'],{'through':_0x16d5('0x197'),'as':_0x16d5('0x170')});db[_0x16d5('0x13f')]['hasMany'](db['Disposition'],{'as':_0x16d5('0x181'),'foreignKey':_0x16d5('0x17d'),'onDelete':'cascade'});db[_0x16d5('0x13f')][_0x16d5('0x11a')](db[_0x16d5('0x16b')],{'as':_0x16d5('0x183'),'foreignKey':'ChatWebsiteId'});db[_0x16d5('0x13f')][_0x16d5('0x11a')](db[_0x16d5('0x72')],{'as':_0x16d5('0x198')});db['ChatWebsite'][_0x16d5('0x11a')](db['ChatInteraction'],{'as':'Interactions'});db['ChatWebsite'][_0x16d5('0x11a')](db[_0x16d5('0x68')],{'as':_0x16d5('0x14d')});db['ChatWebsite']['hasMany'](db[_0x16d5('0x6b')],{'as':_0x16d5('0x15e')});db[_0x16d5('0x13f')][_0x16d5('0x129')](db['CmList'],{'as':'List','foreignKey':_0x16d5('0x180')});db[_0x16d5('0x13f')][_0x16d5('0x129')](db[_0x16d5('0x89')],{'as':_0x16d5('0x89'),'foreignKey':_0x16d5('0x157')});db[_0x16d5('0x13f')]['belongsTo'](db[_0x16d5('0x40')],{'as':_0x16d5('0x40'),'foreignKey':'MailAccountId'});db[_0x16d5('0x13f')]['belongsTo'](db[_0x16d5('0x8a')],{'as':_0x16d5('0x158'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x16d5('0x13f')]['belongsToMany'](db[_0x16d5('0x12')],{'as':_0x16d5('0x15b'),'through':_0x16d5('0x199')});db['OpenchannelQueueReport'][_0x16d5('0x129')](db[_0x16d5('0x5e')],{});db[_0x16d5('0x67')]['belongsTo'](db[_0x16d5('0xfb')],{'as':_0x16d5('0x16d'),'foreignKey':'ListId'});db['OpenchannelQueueReport'][_0x16d5('0x129')](db[_0x16d5('0x76')],{'as':_0x16d5('0x172'),'foreignKey':_0x16d5('0x163')});db[_0x16d5('0x67')][_0x16d5('0x129')](db[_0x16d5('0x61')],{});db['OpenchannelQueueReport'][_0x16d5('0x129')](db[_0x16d5('0x63')],{});db[_0x16d5('0x67')]['belongsTo'](db['User'],{});db[_0x16d5('0x67')][_0x16d5('0x129')](db[_0x16d5('0x64')],{});db[_0x16d5('0x68')]['belongsTo'](db['User'],{'as':_0x16d5('0x19a'),'foreignKey':_0x16d5('0x117'),'onDelete':'restrict'});db[_0x16d5('0x68')][_0x16d5('0x129')](db[_0x16d5('0x6f')],{'as':_0x16d5('0x19b'),'foreignKey':_0x16d5('0x19c'),'onDelete':_0x16d5('0x167')});db[_0x16d5('0x68')]['belongsTo'](db[_0x16d5('0x13f')],{'as':_0x16d5('0x19d'),'foreignKey':_0x16d5('0x17d'),'onDelete':_0x16d5('0x167')});db['ChatApplication'][_0x16d5('0x129')](db[_0x16d5('0x174')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x16d5('0x6a')][_0x16d5('0x11a')](db[_0x16d5('0x6b')],{'as':_0x16d5('0x15e'),'onDelete':'cascade','foreignKey':_0x16d5('0x19e')});db[_0x16d5('0x6a')][_0x16d5('0x129')](db[_0x16d5('0x13f')],{'as':_0x16d5('0x171'),'foreignKey':'ChatWebsiteId'});db[_0x16d5('0x6a')][_0x16d5('0x129')](db['CmContact'],{'as':'Contact','foreignKey':'ContactId'});db['ChatInteraction']['belongsTo'](db[_0x16d5('0x12')],{'as':_0x16d5('0x173'),'foreignKey':_0x16d5('0x117')});db[_0x16d5('0x6a')]['belongsToMany'](db['Tag'],{'through':_0x16d5('0x19f'),'as':_0x16d5('0x176')});db['ChatInteraction'][_0x16d5('0x12a')](db[_0x16d5('0x174')],{'through':_0x16d5('0x19f'),'as':'ThroughTags'});db['ChatInteraction'][_0x16d5('0x12a')](db[_0x16d5('0x12')],{'as':'Users','through':'user_has_chat_interactions','foreignKey':'ChatInteractionId'});db[_0x16d5('0x6b')][_0x16d5('0x129')](db['User'],{'onDelete':'cascade','as':_0x16d5('0x12')});db[_0x16d5('0x6b')][_0x16d5('0x129')](db[_0x16d5('0x76')],{'onDelete':_0x16d5('0x116'),'as':_0x16d5('0x172'),'foreignKey':_0x16d5('0x163')});db[_0x16d5('0x6b')]['belongsTo'](db['ChatInteraction'],{'onDelete':_0x16d5('0x116'),'as':_0x16d5('0x17c'),'foreignKey':_0x16d5('0x19e')});db[_0x16d5('0x6b')]['belongsTo'](db[_0x16d5('0xf0')],{'as':_0x16d5('0xf0'),'foreignKey':_0x16d5('0x196')});db[_0x16d5('0x6b')][_0x16d5('0x129')](db[_0x16d5('0x13f')],{'as':_0x16d5('0x171'),'foreignKey':_0x16d5('0x17d')});db[_0x16d5('0x6d')][_0x16d5('0x11a')](db[_0x16d5('0xf0')],{'as':'Attachments','foreignKey':'ChatOfflineMessageId','onDelete':_0x16d5('0x116'),'hooks':!![]});db[_0x16d5('0x6d')]['belongsTo'](db[_0x16d5('0x76')],{'onDelete':_0x16d5('0x116'),'as':_0x16d5('0x172'),'foreignKey':_0x16d5('0x163')});db[_0x16d5('0x6d')][_0x16d5('0x129')](db['ChatWebsite'],{'as':_0x16d5('0x171'),'foreignKey':_0x16d5('0x17d')});db['ChatQueue'][_0x16d5('0x12a')](db['User'],{'as':_0x16d5('0x15b'),'through':'UserChatQueue','hooks':!![]});db[_0x16d5('0x6f')][_0x16d5('0x12a')](db[_0x16d5('0xeb')],{'through':_0x16d5('0x1a0'),'as':_0x16d5('0x170')});db[_0x16d5('0x70')][_0x16d5('0x11a')](db[_0x16d5('0x1a1')],{'as':_0x16d5('0x15e'),'foreignKey':'ChatGroupId','onDelete':_0x16d5('0x116')});db[_0x16d5('0x70')][_0x16d5('0x12a')](db[_0x16d5('0x12')],{'as':_0x16d5('0x14f'),'through':_0x16d5('0x12c')});db[_0x16d5('0x72')][_0x16d5('0x129')](db['ChatWebsite'],{'as':_0x16d5('0x19d'),'foreignKey':_0x16d5('0x17d')});db[_0x16d5('0x74')][_0x16d5('0x11a')](db[_0x16d5('0x76')],{'as':'Contacts','foreignKey':_0x16d5('0x1a2')});db[_0x16d5('0x76')]['hasMany'](db[_0x16d5('0x93')],{'as':_0x16d5('0x1a3'),'foreignKey':_0x16d5('0x1a4')});db['CmContact'][_0x16d5('0x11a')](db[_0x16d5('0x151')],{'as':_0x16d5('0x152'),'foreignKey':_0x16d5('0x163')});db[_0x16d5('0x76')][_0x16d5('0x11a')](db['CmHopperFinal'],{'as':_0x16d5('0x11e'),'foreignKey':_0x16d5('0x163')});db[_0x16d5('0x76')][_0x16d5('0x11a')](db[_0x16d5('0x7b')],{'as':_0x16d5('0x153'),'foreignKey':'ContactId'});db[_0x16d5('0x76')][_0x16d5('0x11a')](db[_0x16d5('0x7d')],{'as':_0x16d5('0x7d'),'foreignKey':_0x16d5('0x163')});db[_0x16d5('0x76')][_0x16d5('0x11a')](db['JscriptySessionReport'],{'as':_0x16d5('0x1a5'),'foreignKey':_0x16d5('0x163')});db[_0x16d5('0x76')][_0x16d5('0x11a')](db[_0x16d5('0x61')],{'as':_0x16d5('0x1a6'),'foreignKey':_0x16d5('0x163'),'onDelete':_0x16d5('0x167')});db['CmContact'][_0x16d5('0x11a')](db[_0x16d5('0x6a')],{'as':_0x16d5('0x132'),'foreignKey':_0x16d5('0x163'),'onDelete':'restrict'});db[_0x16d5('0x76')][_0x16d5('0x11a')](db[_0x16d5('0x5b')],{'as':_0x16d5('0x120'),'foreignKey':_0x16d5('0x163'),'onDelete':_0x16d5('0x167')});db[_0x16d5('0x76')][_0x16d5('0x11a')](db['FaxInteraction'],{'as':_0x16d5('0x122'),'foreignKey':'ContactId','onDelete':_0x16d5('0x167')});db[_0x16d5('0x76')][_0x16d5('0x11a')](db[_0x16d5('0x44')],{'as':_0x16d5('0x123'),'foreignKey':_0x16d5('0x163'),'onDelete':_0x16d5('0x167')});db[_0x16d5('0x76')][_0x16d5('0x129')](db['CmCompany'],{'as':_0x16d5('0x1a7'),'foreignKey':_0x16d5('0x1a2')});db[_0x16d5('0x76')][_0x16d5('0x129')](db['CmList'],{'as':'List','foreignKey':_0x16d5('0x180'),'onDelete':_0x16d5('0x116')});db[_0x16d5('0x76')]['belongsToMany'](db[_0x16d5('0x12')],{'as':_0x16d5('0x178'),'through':'cm_user_has_contacts'});db[_0x16d5('0x76')]['belongsToMany'](db['Tag'],{'as':_0x16d5('0x176'),'through':_0x16d5('0x1a8')});db[_0x16d5('0x76')][_0x16d5('0x12a')](db[_0x16d5('0x174')],{'through':_0x16d5('0x1a8'),'as':'ThroughTags'});db[_0x16d5('0x151')]['hasMany'](db[_0x16d5('0x95')],{'as':_0x16d5('0x1a9'),'foreignKey':'CmHopperId'});db[_0x16d5('0x151')][_0x16d5('0x129')](db['CmContact'],{'as':_0x16d5('0x172'),'foreignKey':_0x16d5('0x163'),'onDelete':'cascade'});db[_0x16d5('0x151')][_0x16d5('0x129')](db[_0x16d5('0xfb')],{'as':'List','foreignKey':_0x16d5('0x180'),'onDelete':_0x16d5('0x116')});db[_0x16d5('0x151')][_0x16d5('0x129')](db['User'],{'as':_0x16d5('0x19a'),'foreignKey':'UserId'});db[_0x16d5('0x151')][_0x16d5('0x129')](db[_0x16d5('0x1a')],{'as':_0x16d5('0x19b'),'foreignKey':_0x16d5('0x150'),'onDelete':_0x16d5('0x116')});db['CmHopper'][_0x16d5('0x129')](db['Campaign'],{'as':_0x16d5('0xed'),'foreignKey':_0x16d5('0x1aa'),'onDelete':_0x16d5('0x116')});db[_0x16d5('0x151')][_0x16d5('0x129')](db['User'],{'as':_0x16d5('0x173'),'foreignKey':_0x16d5('0x1ab')});db['CmHopperBlack'][_0x16d5('0x129')](db[_0x16d5('0x76')],{'as':'Contact','foreignKey':'ContactId','onDelete':_0x16d5('0x116')});db[_0x16d5('0x78')][_0x16d5('0x129')](db['CmList'],{'as':_0x16d5('0x16d'),'foreignKey':'ListId','onDelete':_0x16d5('0x116')});db[_0x16d5('0x78')][_0x16d5('0x129')](db['VoiceQueue'],{'as':_0x16d5('0x19b'),'foreignKey':_0x16d5('0x150'),'onDelete':_0x16d5('0x116')});db[_0x16d5('0x78')]['belongsTo'](db[_0x16d5('0xed')],{'as':_0x16d5('0xed'),'foreignKey':_0x16d5('0x1aa'),'onDelete':_0x16d5('0x116')});db[_0x16d5('0x83')][_0x16d5('0x11a')](db[_0x16d5('0x87')],{'as':{'plural':'All','singular':_0x16d5('0x1ac')},'foreignKey':_0x16d5('0x1ad'),'onDelete':_0x16d5('0x116'),'hooks':!![]});db['Automation']['hasMany'](db[_0x16d5('0x87')],{'as':{'plural':_0x16d5('0x1ae'),'singular':'OneAny'},'foreignKey':_0x16d5('0x1af'),'onDelete':_0x16d5('0x116'),'hooks':!![]});db['Automation'][_0x16d5('0x11a')](db[_0x16d5('0x81')],{'as':_0x16d5('0x1b0'),'foreignKey':'AutomationId','onDelete':_0x16d5('0x116'),'hooks':!![]});db['Disposition']['hasMany'](db['Disposition'],{'as':'Dispositions','foreignKey':'ParentId','onDelete':'cascade'});db['Interval'][_0x16d5('0x11a')](db[_0x16d5('0x89')],{'as':_0x16d5('0x1b1'),'foreignKey':_0x16d5('0x157'),'onDelete':_0x16d5('0x116'),'hooks':!![],'required':![]});db[_0x16d5('0x89')]['hasMany'](db[_0x16d5('0x11c')],{'as':_0x16d5('0x11d'),'foreignKey':_0x16d5('0x157'),'onDelete':_0x16d5('0x167')});db['Interval']['hasMany'](db['MailApplication'],{'as':_0x16d5('0x1b2'),'foreignKey':_0x16d5('0x157')});db[_0x16d5('0x89')][_0x16d5('0x11a')](db[_0x16d5('0x68')],{'as':'ChatApplications','foreignKey':_0x16d5('0x157')});db[_0x16d5('0x89')]['hasMany'](db[_0x16d5('0x51')],{'as':_0x16d5('0x1b3'),'foreignKey':_0x16d5('0x157')});db[_0x16d5('0x89')]['hasMany'](db['SmsApplication'],{'as':'SmsApplications','foreignKey':'IntervalId'});db[_0x16d5('0x8e')]['belongsTo'](db[_0x16d5('0x40')],{});db[_0x16d5('0x8e')][_0x16d5('0x129')](db[_0x16d5('0x1b4')],{'foreignKey':_0x16d5('0x1b5')});db[_0x16d5('0x8e')]['belongsTo'](db[_0x16d5('0x1b6')],{'foreignKey':_0x16d5('0x1b7')});db['Sound'][_0x16d5('0x12a')](db[_0x16d5('0x18')],{'as':'Mohs','through':_0x16d5('0x14e'),'onDelete':_0x16d5('0x167')});db[_0x16d5('0x174')][_0x16d5('0x12a')](db[_0x16d5('0x76')],{'through':_0x16d5('0x1a8')});db[_0x16d5('0x174')][_0x16d5('0x12a')](db[_0x16d5('0x6a')],{'through':_0x16d5('0x19f')});db[_0x16d5('0x174')][_0x16d5('0x12a')](db[_0x16d5('0x44')],{'through':_0x16d5('0x175')});db[_0x16d5('0x174')][_0x16d5('0x12a')](db['SmsInteraction'],{'through':'sms_interaction_has_tags'});db[_0x16d5('0x174')][_0x16d5('0x12a')](db['FaxInteraction'],{'through':_0x16d5('0x186')});db[_0x16d5('0x174')][_0x16d5('0x12a')](db[_0x16d5('0x61')],{'through':'openchannel_interaction_has_tags'});db[_0x16d5('0x174')][_0x16d5('0x12a')](db[_0x16d5('0x124')],{'through':_0x16d5('0x1b8')});db[_0x16d5('0x93')][_0x16d5('0x129')](db[_0x16d5('0x1b9')],{'as':_0x16d5('0x1ba'),'foreignKey':_0x16d5('0x1bb')});db[_0x16d5('0x95')]['belongsTo'](db[_0x16d5('0x151')],{'as':_0x16d5('0x1bc'),'foreignKey':'CmHopperId'});db[_0x16d5('0x93')][_0x16d5('0x129')](db[_0x16d5('0x76')],{'as':_0x16d5('0x172'),'foreignKey':_0x16d5('0x1a4')});db[_0x16d5('0x1bd')][_0x16d5('0x11a')](db[_0x16d5('0x87')],{'as':{'plural':_0x16d5('0x1be'),'singular':_0x16d5('0x1bf')},'foreignKey':_0x16d5('0x1c0'),'onDelete':_0x16d5('0x116'),'hooks':!![]});db['Trigger'][_0x16d5('0x11a')](db['Condition'],{'as':{'plural':_0x16d5('0x1c1'),'singular':'AnyCondition'},'foreignKey':_0x16d5('0x1c2'),'onDelete':_0x16d5('0x116'),'hooks':!![]});db[_0x16d5('0x1bd')][_0x16d5('0x11a')](db[_0x16d5('0x81')],{'as':_0x16d5('0x1b0'),'foreignKey':_0x16d5('0x1c3'),'onDelete':'cascade','hooks':!![]});db['AnalyticCustomReport'][_0x16d5('0x11a')](db[_0x16d5('0xa3')],{'as':'Fields','onDelete':'cascade','foreignKey':_0x16d5('0x1b7'),'hooks':!![]});db['AnalyticDefaultReport'][_0x16d5('0x11a')](db['AnalyticFieldReport'],{'as':_0x16d5('0x1c4'),'onDelete':_0x16d5('0x116'),'foreignKey':'DefaultReportId'});db[_0x16d5('0xa1')][_0x16d5('0x11a')](db[_0x16d5('0xa3')],{'as':_0x16d5('0x1c4'),'onDelete':_0x16d5('0x116'),'foreignKey':_0x16d5('0x1c5')});db[_0x16d5('0xa3')]['belongsTo'](db[_0x16d5('0xa1')],{'foreignKey':_0x16d5('0x1c5')});db['SalesforceAccount'][_0x16d5('0x11a')](db[_0x16d5('0xa8')],{'as':_0x16d5('0x1c6'),'onDelete':_0x16d5('0x116'),'foreignKey':'AccountId'});db[_0x16d5('0xa8')][_0x16d5('0x11a')](db[_0x16d5('0xaa')],{'as':'Subjects','onDelete':'cascade','foreignKey':_0x16d5('0x1c7')});db[_0x16d5('0xa8')][_0x16d5('0x11a')](db[_0x16d5('0xaa')],{'as':_0x16d5('0x1c8'),'onDelete':_0x16d5('0x116'),'foreignKey':_0x16d5('0x1c9')});db[_0x16d5('0xa8')][_0x16d5('0x11a')](db[_0x16d5('0xaa')],{'as':_0x16d5('0x1c4'),'onDelete':_0x16d5('0x116'),'foreignKey':'FieldId'});db[_0x16d5('0xa8')][_0x16d5('0x129')](db[_0x16d5('0xa7')],{'as':_0x16d5('0x171'),'foreignKey':'AccountId'});db['SalesforceField'][_0x16d5('0x11a')](db[_0x16d5('0xaa')],{'as':_0x16d5('0x1ca'),'foreignKey':_0x16d5('0x1c7')});db[_0x16d5('0xaa')][_0x16d5('0x11a')](db['SalesforceField'],{'as':_0x16d5('0x1cb'),'foreignKey':_0x16d5('0x1c9')});db[_0x16d5('0xaa')][_0x16d5('0x11a')](db[_0x16d5('0xaa')],{'as':_0x16d5('0x1cc'),'foreignKey':_0x16d5('0x1cd')});db[_0x16d5('0xaa')][_0x16d5('0x129')](db[_0x16d5('0x1ce')],{'as':_0x16d5('0x1ce'),'foreignKey':'VariableId'});db[_0x16d5('0x1cf')][_0x16d5('0x11a')](db[_0x16d5('0xac')],{'as':_0x16d5('0x1c6'),'onDelete':_0x16d5('0x116'),'foreignKey':'AccountId'});db[_0x16d5('0xac')][_0x16d5('0x11a')](db[_0x16d5('0x1d0')],{'as':_0x16d5('0x1d1'),'onDelete':_0x16d5('0x116'),'foreignKey':_0x16d5('0x1c7')});db[_0x16d5('0xac')][_0x16d5('0x11a')](db['SugarcrmField'],{'as':'Descriptions','onDelete':_0x16d5('0x116'),'foreignKey':'DescriptionId'});db[_0x16d5('0xac')][_0x16d5('0x11a')](db['SugarcrmField'],{'as':_0x16d5('0x1c4'),'onDelete':'cascade','foreignKey':_0x16d5('0x1cd')});db['SugarcrmConfiguration']['belongsTo'](db[_0x16d5('0x1cf')],{'as':_0x16d5('0x171'),'foreignKey':_0x16d5('0x1d2')});db[_0x16d5('0x1d0')][_0x16d5('0x11a')](db['SugarcrmField'],{'as':'Subject','foreignKey':_0x16d5('0x1c7')});db[_0x16d5('0x1d0')][_0x16d5('0x11a')](db[_0x16d5('0x1d0')],{'as':_0x16d5('0x1cb'),'foreignKey':'DescriptionId'});db[_0x16d5('0x1d0')][_0x16d5('0x11a')](db[_0x16d5('0x1d0')],{'as':'Field','foreignKey':'FieldId'});db[_0x16d5('0x1d0')][_0x16d5('0x129')](db[_0x16d5('0x1ce')],{'as':'Variable','foreignKey':_0x16d5('0x1d3')});db[_0x16d5('0xaf')][_0x16d5('0x11a')](db[_0x16d5('0x1d4')],{'as':_0x16d5('0x1c6'),'onDelete':'cascade','foreignKey':_0x16d5('0x1d2')});db[_0x16d5('0x1d4')][_0x16d5('0x11a')](db['DeskField'],{'as':'Subjects','onDelete':_0x16d5('0x116'),'foreignKey':_0x16d5('0x1c7')});db[_0x16d5('0x1d4')][_0x16d5('0x11a')](db['DeskField'],{'as':'Descriptions','onDelete':_0x16d5('0x116'),'foreignKey':'DescriptionId'});db['DeskConfiguration']['hasMany'](db[_0x16d5('0xb2')],{'as':_0x16d5('0x1c4'),'onDelete':_0x16d5('0x116'),'foreignKey':'FieldId'});db[_0x16d5('0x1d4')]['belongsTo'](db[_0x16d5('0xaf')],{'as':_0x16d5('0x171'),'foreignKey':_0x16d5('0x1d2')});db[_0x16d5('0x1d4')][_0x16d5('0x12a')](db[_0x16d5('0x174')],{'through':_0x16d5('0x1d5')});db[_0x16d5('0xb2')][_0x16d5('0x11a')](db[_0x16d5('0xb2')],{'as':'Subject','foreignKey':_0x16d5('0x1c7')});db['DeskField'][_0x16d5('0x11a')](db[_0x16d5('0xb2')],{'as':_0x16d5('0x1cb'),'foreignKey':_0x16d5('0x1c9')});db[_0x16d5('0xb2')][_0x16d5('0x11a')](db[_0x16d5('0xb2')],{'as':_0x16d5('0x1cc'),'foreignKey':'FieldId'});db[_0x16d5('0xb2')]['belongsTo'](db[_0x16d5('0x1ce')],{'as':_0x16d5('0x1ce'),'foreignKey':_0x16d5('0x1d3')});db[_0x16d5('0xb4')][_0x16d5('0x11a')](db[_0x16d5('0xb5')],{'as':_0x16d5('0x1c6'),'onDelete':_0x16d5('0x116'),'foreignKey':_0x16d5('0x1d2')});db[_0x16d5('0xb5')][_0x16d5('0x11a')](db[_0x16d5('0x1d6')],{'as':'Subjects','onDelete':_0x16d5('0x116'),'foreignKey':_0x16d5('0x1c7')});db[_0x16d5('0xb5')][_0x16d5('0x11a')](db[_0x16d5('0x1d6')],{'as':'Descriptions','onDelete':_0x16d5('0x116'),'foreignKey':_0x16d5('0x1c9')});db[_0x16d5('0xb5')][_0x16d5('0x11a')](db['ZohoField'],{'as':_0x16d5('0x1c4'),'onDelete':'cascade','foreignKey':_0x16d5('0x1cd')});db[_0x16d5('0xb5')]['belongsTo'](db['ZohoAccount'],{'as':'Account','foreignKey':_0x16d5('0x1d2')});db[_0x16d5('0x1d6')][_0x16d5('0x11a')](db[_0x16d5('0x1d6')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x16d5('0x1d6')]['hasMany'](db[_0x16d5('0x1d6')],{'as':'Description','foreignKey':_0x16d5('0x1c9')});db['ZohoField'][_0x16d5('0x11a')](db[_0x16d5('0x1d6')],{'as':_0x16d5('0x1cc'),'foreignKey':_0x16d5('0x1cd')});db[_0x16d5('0x1d6')][_0x16d5('0x129')](db['Variable'],{'as':_0x16d5('0x1ce'),'foreignKey':_0x16d5('0x1d3')});db[_0x16d5('0xb8')]['hasMany'](db['ZendeskConfiguration'],{'as':_0x16d5('0x1c6'),'onDelete':'cascade','foreignKey':_0x16d5('0x1d2')});db[_0x16d5('0xba')][_0x16d5('0x11a')](db[_0x16d5('0xbc')],{'as':_0x16d5('0x1d1'),'foreignKey':_0x16d5('0x1c7')});db['ZendeskConfiguration'][_0x16d5('0x11a')](db[_0x16d5('0xbc')],{'as':'Descriptions','foreignKey':_0x16d5('0x1c9')});db[_0x16d5('0xba')]['hasMany'](db['ZendeskField'],{'as':'Fields','foreignKey':'FieldId'});db[_0x16d5('0xba')]['belongsTo'](db[_0x16d5('0xb8')],{'as':_0x16d5('0x171'),'foreignKey':'AccountId'});db['ZendeskConfiguration']['belongsToMany'](db[_0x16d5('0x174')],{'through':_0x16d5('0x1d7')});db[_0x16d5('0xbc')][_0x16d5('0x11a')](db[_0x16d5('0xbc')],{'as':_0x16d5('0x1ca'),'foreignKey':'SubjectId'});db[_0x16d5('0xbc')][_0x16d5('0x11a')](db['ZendeskField'],{'as':_0x16d5('0x1cb'),'foreignKey':_0x16d5('0x1c9')});db[_0x16d5('0xbc')][_0x16d5('0x11a')](db['ZendeskField'],{'as':_0x16d5('0x1cc'),'foreignKey':_0x16d5('0x1cd')});db[_0x16d5('0xbc')]['belongsTo'](db[_0x16d5('0x1ce')],{'as':_0x16d5('0x1ce'),'foreignKey':_0x16d5('0x1d3')});db[_0x16d5('0x1d8')]['hasMany'](db[_0x16d5('0x1d9')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x16d5('0x1d2')});db['FreshdeskConfiguration'][_0x16d5('0x11a')](db[_0x16d5('0xbe')],{'as':_0x16d5('0x1d1'),'onDelete':'cascade','foreignKey':_0x16d5('0x1c7')});db[_0x16d5('0x1d9')][_0x16d5('0x11a')](db[_0x16d5('0xbe')],{'as':_0x16d5('0x1c8'),'onDelete':'cascade','foreignKey':_0x16d5('0x1c9')});db[_0x16d5('0x1d9')][_0x16d5('0x11a')](db['FreshdeskField'],{'as':_0x16d5('0x1c4'),'onDelete':'cascade','foreignKey':_0x16d5('0x1cd')});db[_0x16d5('0x1d9')][_0x16d5('0x129')](db[_0x16d5('0x1d8')],{'as':'Account','foreignKey':_0x16d5('0x1d2')});db['FreshdeskConfiguration'][_0x16d5('0x12a')](db[_0x16d5('0x174')],{'through':_0x16d5('0x1da')});db[_0x16d5('0xbe')][_0x16d5('0x11a')](db[_0x16d5('0xbe')],{'as':_0x16d5('0x1ca'),'foreignKey':_0x16d5('0x1c7')});db['FreshdeskField'][_0x16d5('0x11a')](db[_0x16d5('0xbe')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x16d5('0xbe')][_0x16d5('0x11a')](db[_0x16d5('0xbe')],{'as':'Field','foreignKey':'FieldId'});db[_0x16d5('0xbe')][_0x16d5('0x129')](db[_0x16d5('0x1ce')],{'as':_0x16d5('0x1ce'),'foreignKey':_0x16d5('0x1d3')});db[_0x16d5('0xc0')][_0x16d5('0x11a')](db[_0x16d5('0x1db')],{'as':_0x16d5('0x1c6'),'onDelete':'cascade','foreignKey':_0x16d5('0x1d2')});db[_0x16d5('0x1db')]['hasMany'](db[_0x16d5('0xc3')],{'as':_0x16d5('0x1d1'),'foreignKey':_0x16d5('0x1c7')});db[_0x16d5('0x1db')]['hasMany'](db[_0x16d5('0xc3')],{'as':_0x16d5('0x1c8'),'foreignKey':_0x16d5('0x1c9')});db[_0x16d5('0x1db')][_0x16d5('0x11a')](db[_0x16d5('0xc3')],{'as':_0x16d5('0x1c4'),'foreignKey':_0x16d5('0x1cd')});db['VtigerConfiguration']['belongsTo'](db[_0x16d5('0xc0')],{'as':_0x16d5('0x171'),'foreignKey':'AccountId'});db['VtigerField'][_0x16d5('0x11a')](db[_0x16d5('0xc3')],{'as':_0x16d5('0x1ca'),'foreignKey':_0x16d5('0x1c7')});db[_0x16d5('0xc3')][_0x16d5('0x11a')](db[_0x16d5('0xc3')],{'as':_0x16d5('0x1cb'),'foreignKey':_0x16d5('0x1c9')});db[_0x16d5('0xc3')][_0x16d5('0x11a')](db['VtigerField'],{'as':'Field','foreignKey':_0x16d5('0x1cd')});db[_0x16d5('0xc3')][_0x16d5('0x129')](db['Variable'],{'as':'Variable','foreignKey':_0x16d5('0x1d3')});db[_0x16d5('0x1dc')]['hasMany'](db[_0x16d5('0xc5')],{'as':'Configurations','onDelete':_0x16d5('0x116'),'foreignKey':_0x16d5('0x1d2')});db[_0x16d5('0xc5')][_0x16d5('0x11a')](db[_0x16d5('0xc7')],{'as':_0x16d5('0x1d1'),'foreignKey':_0x16d5('0x1c7')});db[_0x16d5('0xc5')][_0x16d5('0x11a')](db['ServicenowField'],{'as':_0x16d5('0x1c8'),'foreignKey':'DescriptionId'});db[_0x16d5('0xc5')][_0x16d5('0x11a')](db[_0x16d5('0xc7')],{'as':'Fields','foreignKey':_0x16d5('0x1cd')});db[_0x16d5('0xc5')][_0x16d5('0x129')](db['ServicenowAccount'],{'as':_0x16d5('0x171'),'foreignKey':_0x16d5('0x1d2')});db['ServicenowField'][_0x16d5('0x11a')](db[_0x16d5('0xc7')],{'as':'Subject','foreignKey':_0x16d5('0x1c7')});db[_0x16d5('0xc7')][_0x16d5('0x11a')](db[_0x16d5('0xc7')],{'as':'Description','foreignKey':_0x16d5('0x1c9')});db['ServicenowField'][_0x16d5('0x11a')](db[_0x16d5('0xc7')],{'as':_0x16d5('0x1cc'),'foreignKey':'FieldId'});db[_0x16d5('0xc7')][_0x16d5('0x129')](db[_0x16d5('0x1ce')],{'as':'Variable','foreignKey':_0x16d5('0x1d3')});db['Dynamics365Account'][_0x16d5('0x11a')](db[_0x16d5('0xca')],{'as':_0x16d5('0x1c6'),'onDelete':_0x16d5('0x116'),'foreignKey':_0x16d5('0x1d2')});db[_0x16d5('0xc9')]['belongsTo'](db[_0x16d5('0x165')],{'as':'CloudProvider','foreignKey':'CloudProviderId'});db['Dynamics365Configuration'][_0x16d5('0x11a')](db[_0x16d5('0xcc')],{'as':_0x16d5('0x1d1'),'onDelete':_0x16d5('0x116'),'foreignKey':_0x16d5('0x1c7')});db[_0x16d5('0xca')]['hasMany'](db[_0x16d5('0xcc')],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0x16d5('0x1c9')});db[_0x16d5('0xca')][_0x16d5('0x11a')](db[_0x16d5('0xcc')],{'as':'Fields','onDelete':'cascade','foreignKey':_0x16d5('0x1cd')});db[_0x16d5('0xca')][_0x16d5('0x129')](db[_0x16d5('0xc9')],{'as':_0x16d5('0x171'),'foreignKey':_0x16d5('0x1d2')});db[_0x16d5('0xcc')][_0x16d5('0x11a')](db['Dynamics365Field'],{'as':_0x16d5('0x1ca'),'foreignKey':_0x16d5('0x1c7')});db[_0x16d5('0xcc')][_0x16d5('0x11a')](db[_0x16d5('0xcc')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x16d5('0xcc')][_0x16d5('0x11a')](db[_0x16d5('0xcc')],{'as':'Field','foreignKey':_0x16d5('0x1cd')});db[_0x16d5('0xcc')]['belongsTo'](db[_0x16d5('0x1ce')],{'as':'Variable','foreignKey':_0x16d5('0x1d3')});db[_0x16d5('0xce')][_0x16d5('0x11a')](db[_0x16d5('0x1dd')],{'as':_0x16d5('0x1c6'),'onDelete':_0x16d5('0x116'),'foreignKey':_0x16d5('0x1d2')});db[_0x16d5('0x1dd')][_0x16d5('0x11a')](db['FreshsalesField'],{'as':'Subjects','foreignKey':'SubjectId'});db[_0x16d5('0x1dd')][_0x16d5('0x11a')](db['FreshsalesField'],{'as':_0x16d5('0x1c8'),'foreignKey':'DescriptionId'});db[_0x16d5('0x1dd')]['hasMany'](db[_0x16d5('0xd1')],{'as':'Fields','foreignKey':_0x16d5('0x1cd')});db[_0x16d5('0x1dd')]['belongsTo'](db[_0x16d5('0xce')],{'as':_0x16d5('0x171'),'foreignKey':_0x16d5('0x1d2')});db['FreshsalesField'][_0x16d5('0x11a')](db[_0x16d5('0xd1')],{'as':_0x16d5('0x1ca'),'foreignKey':_0x16d5('0x1c7')});db[_0x16d5('0xd1')][_0x16d5('0x11a')](db['FreshsalesField'],{'as':_0x16d5('0x1cb'),'foreignKey':_0x16d5('0x1c9')});db[_0x16d5('0xd1')][_0x16d5('0x11a')](db['FreshsalesField'],{'as':_0x16d5('0x1cc'),'foreignKey':_0x16d5('0x1cd')});db['FreshsalesField']['belongsTo'](db['Variable'],{'as':_0x16d5('0x1ce'),'foreignKey':_0x16d5('0x1d3')});db[_0x16d5('0x1de')][_0x16d5('0x129')](db['ChatWebsite'],{});db[_0x16d5('0x1de')][_0x16d5('0x129')](db[_0x16d5('0xfb')],{'as':_0x16d5('0x16d'),'foreignKey':_0x16d5('0x180')});db[_0x16d5('0x1de')][_0x16d5('0x129')](db[_0x16d5('0x76')],{'as':'Contact','foreignKey':_0x16d5('0x163')});db['ChatQueueReport'][_0x16d5('0x129')](db[_0x16d5('0x6a')],{});db[_0x16d5('0x1de')][_0x16d5('0x129')](db[_0x16d5('0x6b')],{});db[_0x16d5('0x1de')][_0x16d5('0x129')](db[_0x16d5('0x12')],{});db[_0x16d5('0x1de')]['belongsTo'](db['ChatQueue'],{});db[_0x16d5('0x1a1')][_0x16d5('0x129')](db['User'],{'onDelete':_0x16d5('0x116'),'foreignKey':_0x16d5('0x1df')});db['ChatInternalMessage'][_0x16d5('0x129')](db[_0x16d5('0x12')],{'onDelete':'cascade','foreignKey':_0x16d5('0x1e0')});db['JscriptySessionReport'][_0x16d5('0x11a')](db[_0x16d5('0xd7')],{'foreignKey':'SessionId','onDelete':_0x16d5('0x116')});db['JscriptySessionReport'][_0x16d5('0x11a')](db[_0x16d5('0xd5')],{'foreignKey':'SessionId','onDelete':_0x16d5('0x116')});db[_0x16d5('0xdb')]['belongsTo'](db[_0x16d5('0x58')],{});db[_0x16d5('0xdb')][_0x16d5('0x129')](db[_0x16d5('0xfb')],{'as':_0x16d5('0x16d'),'foreignKey':_0x16d5('0x180')});db[_0x16d5('0xdb')]['belongsTo'](db[_0x16d5('0x76')],{'as':'Contact','foreignKey':_0x16d5('0x163')});db[_0x16d5('0xdb')][_0x16d5('0x129')](db[_0x16d5('0x5b')],{});db[_0x16d5('0xdb')][_0x16d5('0x129')](db[_0x16d5('0x18b')],{});db[_0x16d5('0xdb')][_0x16d5('0x129')](db['User'],{});db[_0x16d5('0xdb')][_0x16d5('0x129')](db['SmsQueue'],{});db[_0x16d5('0xe1')]['hasMany'](db[_0x16d5('0xd9')],{'foreignKey':_0x16d5('0x1e1')});db[_0x16d5('0xe1')]['hasMany'](db['JscriptyQuestionReport'],{'foreignKey':'ProjectId'});db[_0x16d5('0xe1')][_0x16d5('0x11a')](db['JscriptyAnswerReport'],{'foreignKey':_0x16d5('0x1e1')});db['SquareProject'][_0x16d5('0x12a')](db[_0x16d5('0x12')],{'as':'Users','through':'user_has_square_projects'});db['Team'][_0x16d5('0x12a')](db[_0x16d5('0x12')],{'as':_0x16d5('0x15b'),'through':'user_has_teams'});db['Team'][_0x16d5('0x12a')](db[_0x16d5('0x1a')],{'through':'TeamVoiceQueue','as':'VoiceQueues'});db[_0x16d5('0xeb')]['belongsToMany'](db[_0x16d5('0x138')],{'through':_0x16d5('0x16f'),'as':'MailQueues'});db['Team'][_0x16d5('0x12a')](db[_0x16d5('0x6f')],{'through':_0x16d5('0x1a0'),'as':'ChatQueues'});db[_0x16d5('0xeb')][_0x16d5('0x12a')](db[_0x16d5('0x55')],{'through':'team_has_fax_queues','as':_0x16d5('0x13b')});db[_0x16d5('0xeb')][_0x16d5('0x12a')](db[_0x16d5('0x13c')],{'through':'team_has_sms_queues','as':_0x16d5('0x13d')});db[_0x16d5('0xeb')][_0x16d5('0x12a')](db['OpenchannelQueue'],{'through':_0x16d5('0x197'),'as':'OpenchannelQueues'});db[_0x16d5('0xeb')]['belongsToMany'](db[_0x16d5('0x10b')],{'through':'team_has_whatsapp_queues','as':'WhatsappQueues'});db[_0x16d5('0xeb')][_0x16d5('0x12a')](db[_0x16d5('0x136')],{'through':_0x16d5('0x10f'),'as':'VoicePrefixes'});db[_0x16d5('0xed')][_0x16d5('0x11a')](db['CmHopper'],{'as':_0x16d5('0x152'),'foreignKey':_0x16d5('0x1aa')});db[_0x16d5('0xed')][_0x16d5('0x11a')](db[_0x16d5('0x79')],{'as':_0x16d5('0x11e'),'foreignKey':_0x16d5('0x1aa')});db[_0x16d5('0xed')][_0x16d5('0x11a')](db['CmHopperHistory'],{'as':_0x16d5('0x153'),'foreignKey':_0x16d5('0x1aa')});db[_0x16d5('0xed')][_0x16d5('0x11a')](db[_0x16d5('0x78')],{'as':_0x16d5('0x154'),'foreignKey':_0x16d5('0x1aa')});db[_0x16d5('0xed')][_0x16d5('0x129')](db['Trunk'],{'as':_0x16d5('0x2c'),'foreignKey':'TrunkId'});db[_0x16d5('0xed')][_0x16d5('0x129')](db[_0x16d5('0x2c')],{'as':_0x16d5('0x155'),'foreignKey':_0x16d5('0x156')});db[_0x16d5('0xed')][_0x16d5('0x129')](db[_0x16d5('0x89')],{'as':_0x16d5('0x89'),'foreignKey':'IntervalId'});db['Campaign'][_0x16d5('0x129')](db[_0x16d5('0xe5')],{'as':_0x16d5('0xe5'),'foreignKey':_0x16d5('0x1e2')});db['Campaign']['belongsToMany'](db[_0x16d5('0xfb')],{'as':_0x16d5('0x12f'),'through':_0x16d5('0x1e3')});db[_0x16d5('0xed')][_0x16d5('0x12a')](db[_0x16d5('0xfb')],{'as':'BlackLists','through':'campaigns_has_cm_blacklists'});db[_0x16d5('0xf0')][_0x16d5('0x129')](db[_0x16d5('0x6d')],{'as':_0x16d5('0x6d'),'foreignKey':'ChatOfflineMessageId'});db[_0x16d5('0xf3')][_0x16d5('0x129')](db[_0x16d5('0x46')],{});db[_0x16d5('0xf3')][_0x16d5('0x129')](db[_0x16d5('0x44')],{});db['MailTransferReport'][_0x16d5('0x129')](db[_0x16d5('0x40')],{'foreignKey':_0x16d5('0x1e4'),'as':_0x16d5('0x1e5')});db['MailTransferReport'][_0x16d5('0x129')](db[_0x16d5('0x12')],{'foreignKey':_0x16d5('0x1e6'),'as':_0x16d5('0x1e7')});db[_0x16d5('0xf3')][_0x16d5('0x129')](db[_0x16d5('0x12')],{'foreignKey':_0x16d5('0x1e8'),'as':_0x16d5('0x1e9')});db[_0x16d5('0xf3')][_0x16d5('0x129')](db[_0x16d5('0x138')],{'foreignKey':_0x16d5('0x1ea'),'as':_0x16d5('0x1eb')});db[_0x16d5('0xf3')][_0x16d5('0x129')](db[_0x16d5('0x40')],{'foreignKey':_0x16d5('0x1ec'),'as':_0x16d5('0x1ed')});db[_0x16d5('0xf5')]['belongsTo'](db[_0x16d5('0x6b')],{});db[_0x16d5('0xf5')][_0x16d5('0x129')](db['ChatInteraction'],{});db[_0x16d5('0xf5')][_0x16d5('0x129')](db[_0x16d5('0x13f')],{'foreignKey':_0x16d5('0x1ee'),'as':_0x16d5('0x1e5')});db[_0x16d5('0xf5')][_0x16d5('0x129')](db['User'],{'foreignKey':'FromUserId','as':_0x16d5('0x1e7')});db[_0x16d5('0xf5')][_0x16d5('0x129')](db[_0x16d5('0x12')],{'foreignKey':'ToUserId','as':_0x16d5('0x1e9')});db[_0x16d5('0xf5')][_0x16d5('0x129')](db[_0x16d5('0x6f')],{'foreignKey':_0x16d5('0x1ef'),'as':_0x16d5('0x1eb')});db[_0x16d5('0xf5')][_0x16d5('0x129')](db['ChatWebsite'],{'foreignKey':_0x16d5('0x1f0'),'as':_0x16d5('0x1ed')});db['FaxTransferReport'][_0x16d5('0x129')](db['FaxMessage'],{});db[_0x16d5('0xf7')][_0x16d5('0x129')](db[_0x16d5('0x121')],{});db[_0x16d5('0xf7')][_0x16d5('0x129')](db[_0x16d5('0x4f')],{'foreignKey':_0x16d5('0x1f1'),'as':'FromAccount'});db[_0x16d5('0xf7')][_0x16d5('0x129')](db[_0x16d5('0x12')],{'foreignKey':_0x16d5('0x1e6'),'as':_0x16d5('0x1e7')});db[_0x16d5('0xf7')][_0x16d5('0x129')](db[_0x16d5('0x12')],{'foreignKey':_0x16d5('0x1e8'),'as':'ToAgent'});db[_0x16d5('0xf7')][_0x16d5('0x129')](db[_0x16d5('0x55')],{'foreignKey':'ToFaxQueueId','as':'ToQueue'});db[_0x16d5('0xf7')][_0x16d5('0x129')](db[_0x16d5('0x4f')],{'foreignKey':'ToFaxAccountId','as':_0x16d5('0x1ed')});db[_0x16d5('0x1f2')][_0x16d5('0x129')](db[_0x16d5('0x63')],{});db[_0x16d5('0x1f2')]['belongsTo'](db[_0x16d5('0x61')],{});db[_0x16d5('0x1f2')][_0x16d5('0x129')](db['OpenchannelAccount'],{'foreignKey':_0x16d5('0x1f3'),'as':_0x16d5('0x1e5')});db[_0x16d5('0x1f2')]['belongsTo'](db[_0x16d5('0x12')],{'foreignKey':_0x16d5('0x1e6'),'as':_0x16d5('0x1e7')});db[_0x16d5('0x1f2')][_0x16d5('0x129')](db[_0x16d5('0x12')],{'foreignKey':_0x16d5('0x1e8'),'as':_0x16d5('0x1e9')});db[_0x16d5('0x1f2')]['belongsTo'](db[_0x16d5('0x64')],{'foreignKey':_0x16d5('0x1f4'),'as':_0x16d5('0x1eb')});db['OpenchannelTransferReport'][_0x16d5('0x129')](db[_0x16d5('0x5e')],{'foreignKey':_0x16d5('0x1f5'),'as':_0x16d5('0x1ed')});db[_0x16d5('0xf9')][_0x16d5('0x129')](db[_0x16d5('0x18b')],{});db[_0x16d5('0xf9')][_0x16d5('0x129')](db[_0x16d5('0x5b')],{});db[_0x16d5('0xf9')][_0x16d5('0x129')](db[_0x16d5('0x58')],{'foreignKey':_0x16d5('0x1f6'),'as':_0x16d5('0x1e5')});db[_0x16d5('0xf9')][_0x16d5('0x129')](db[_0x16d5('0x12')],{'foreignKey':_0x16d5('0x1e6'),'as':_0x16d5('0x1e7')});db[_0x16d5('0xf9')]['belongsTo'](db['User'],{'foreignKey':_0x16d5('0x1e8'),'as':_0x16d5('0x1e9')});db['SmsTransferReport']['belongsTo'](db[_0x16d5('0x13c')],{'foreignKey':_0x16d5('0x1f7'),'as':'ToQueue'});db[_0x16d5('0xf9')][_0x16d5('0x129')](db[_0x16d5('0x58')],{'foreignKey':_0x16d5('0x1f8'),'as':_0x16d5('0x1ed')});db[_0x16d5('0xfb')][_0x16d5('0x11a')](db[_0x16d5('0x16a')],{'as':'Dispositions','foreignKey':_0x16d5('0x180'),'onDelete':'cascade'});db[_0x16d5('0xfb')][_0x16d5('0x11a')](db[_0x16d5('0x7f')],{'as':_0x16d5('0x1f9'),'foreignKey':_0x16d5('0x180')});db['CmList']['hasMany'](db[_0x16d5('0x76')],{'as':_0x16d5('0x12d'),'onDelete':_0x16d5('0x116'),'foreignKey':_0x16d5('0x180')});db[_0x16d5('0xfb')][_0x16d5('0x11a')](db[_0x16d5('0x79')],{'as':_0x16d5('0x11e'),'foreignKey':_0x16d5('0x180')});db['CmList'][_0x16d5('0x11a')](db['CmHopperHistory'],{'as':_0x16d5('0x11f'),'foreignKey':_0x16d5('0x180')});db[_0x16d5('0xfb')][_0x16d5('0x11a')](db[_0x16d5('0x7d')],{'as':_0x16d5('0x7d'),'foreignKey':_0x16d5('0x180')});db[_0x16d5('0xfb')][_0x16d5('0x12a')](db[_0x16d5('0x1a')],{'as':'Queues','through':_0x16d5('0x15a')});db[_0x16d5('0xfb')][_0x16d5('0x12a')](db['User'],{'as':_0x16d5('0x15b'),'through':_0x16d5('0x130')});db[_0x16d5('0x136')][_0x16d5('0x11a')](db['VoiceExtension'],{'as':_0x16d5('0x11d'),'onDelete':'cascade'});db[_0x16d5('0x136')]['belongsToMany'](db['User'],{'as':_0x16d5('0x15b'),'through':_0x16d5('0x111')});db[_0x16d5('0x136')]['belongsToMany'](db[_0x16d5('0xeb')],{'through':_0x16d5('0x10f'),'as':'Teams'});db[_0x16d5('0xfe')]['hasMany'](db['User'],{'as':'Users','foreignKey':'userProfileId'});db['UserProfile'][_0x16d5('0x11a')](db[_0x16d5('0x100')],{'as':_0x16d5('0x1fa'),'foreignKey':_0x16d5('0x1fb'),'onDelete':_0x16d5('0x116')});db['UserProfileSection']['hasMany'](db[_0x16d5('0x1fc')],{'as':_0x16d5('0x1fd'),'foreignKey':_0x16d5('0x1fe'),'onDelete':'cascade'});db[_0x16d5('0x104')][_0x16d5('0x11a')](db['Disposition'],{'as':'Dispositions','foreignKey':_0x16d5('0x1ff'),'onDelete':'cascade'});db[_0x16d5('0x104')][_0x16d5('0x11a')](db[_0x16d5('0x16b')],{'as':_0x16d5('0x183'),'foreignKey':_0x16d5('0x1ff')});db['WhatsappAccount'][_0x16d5('0x11a')](db[_0x16d5('0x107')],{'as':_0x16d5('0x15e'),'foreignKey':_0x16d5('0x1ff')});db[_0x16d5('0x104')][_0x16d5('0x11a')](db['WhatsappInteraction'],{'as':_0x16d5('0x16c')});db[_0x16d5('0x104')]['hasMany'](db[_0x16d5('0x105')],{'as':_0x16d5('0x14d')});db[_0x16d5('0x104')]['belongsTo'](db[_0x16d5('0xfb')],{'as':_0x16d5('0x16d'),'foreignKey':_0x16d5('0x180')});db[_0x16d5('0x104')][_0x16d5('0x129')](db[_0x16d5('0x8a')],{'as':_0x16d5('0x158'),'foreignKey':_0x16d5('0x159')});db[_0x16d5('0x104')][_0x16d5('0x12a')](db[_0x16d5('0x12')],{'as':_0x16d5('0x15b'),'through':_0x16d5('0x200')});db['WhatsappApplication']['belongsTo'](db[_0x16d5('0x12')],{'onDelete':_0x16d5('0x167')});db['WhatsappApplication'][_0x16d5('0x129')](db['WhatsappQueue'],{'onDelete':_0x16d5('0x167')});db[_0x16d5('0x105')][_0x16d5('0x129')](db[_0x16d5('0x104')],{'onDelete':_0x16d5('0x167')});db[_0x16d5('0x105')][_0x16d5('0x129')](db['Interval'],{'onDelete':_0x16d5('0x167'),'foreignKey':_0x16d5('0x157')});db[_0x16d5('0x105')]['belongsTo'](db[_0x16d5('0x174')],{'onDelete':_0x16d5('0x167'),'foreignKey':_0x16d5('0x17f')});db[_0x16d5('0x124')][_0x16d5('0x11a')](db['WhatsappMessage'],{'as':'Messages','onDelete':'cascade','foreignKey':'WhatsappInteractionId'});db[_0x16d5('0x124')]['belongsTo'](db[_0x16d5('0x104')],{'as':_0x16d5('0x171'),'foreignKey':_0x16d5('0x1ff')});db['WhatsappInteraction'][_0x16d5('0x129')](db[_0x16d5('0x76')],{'as':_0x16d5('0x172'),'foreignKey':_0x16d5('0x163')});db[_0x16d5('0x124')][_0x16d5('0x129')](db[_0x16d5('0x12')],{'as':'Owner','foreignKey':_0x16d5('0x117')});db[_0x16d5('0x124')][_0x16d5('0x12a')](db[_0x16d5('0x174')],{'through':'whatsapp_interaction_has_tags','as':_0x16d5('0x176')});db[_0x16d5('0x124')][_0x16d5('0x12a')](db[_0x16d5('0x174')],{'through':_0x16d5('0x1b8'),'as':_0x16d5('0x177')});db[_0x16d5('0x124')]['belongsToMany'](db[_0x16d5('0x12')],{'as':_0x16d5('0x178'),'through':'user_has_whatsapp_interactions','foreignKey':'WhatsappInteractionId'});db['WhatsappMessage'][_0x16d5('0x129')](db[_0x16d5('0x12')],{'as':_0x16d5('0x12')});db[_0x16d5('0x107')]['belongsTo'](db[_0x16d5('0x76')],{'onDelete':_0x16d5('0x116'),'as':_0x16d5('0x172')});db[_0x16d5('0x107')][_0x16d5('0x129')](db[_0x16d5('0x124')],{'onDelete':_0x16d5('0x116'),'as':'Interaction','foreignKey':'WhatsappInteractionId'});db['WhatsappMessage'][_0x16d5('0x129')](db[_0x16d5('0x104')],{'as':_0x16d5('0x171'),'foreignKey':_0x16d5('0x1ff')});db[_0x16d5('0x201')][_0x16d5('0x129')](db[_0x16d5('0x104')],{});db['WhatsappQueueReport'][_0x16d5('0x129')](db['CmList'],{'as':_0x16d5('0x16d'),'foreignKey':_0x16d5('0x180')});db[_0x16d5('0x201')][_0x16d5('0x129')](db[_0x16d5('0x76')],{'as':'Contact','foreignKey':'ContactId'});db[_0x16d5('0x201')][_0x16d5('0x129')](db[_0x16d5('0x124')],{});db[_0x16d5('0x201')]['belongsTo'](db['WhatsappQueue'],{});db['WhatsappQueueReport'][_0x16d5('0x129')](db[_0x16d5('0x107')],{});db['WhatsappQueueReport'][_0x16d5('0x129')](db[_0x16d5('0x12')],{});db[_0x16d5('0x109')][_0x16d5('0x129')](db['WhatsappMessage'],{});db[_0x16d5('0x109')][_0x16d5('0x129')](db['WhatsappInteraction'],{});db[_0x16d5('0x109')][_0x16d5('0x129')](db[_0x16d5('0x104')],{'foreignKey':_0x16d5('0x202'),'as':_0x16d5('0x1e5')});db[_0x16d5('0x109')][_0x16d5('0x129')](db['WhatsappAccount'],{'foreignKey':_0x16d5('0x203'),'as':_0x16d5('0x1ed')});db[_0x16d5('0x109')][_0x16d5('0x129')](db[_0x16d5('0x10b')],{'foreignKey':'ToQueueId','as':_0x16d5('0x1eb')});db[_0x16d5('0x109')][_0x16d5('0x129')](db[_0x16d5('0x12')],{'foreignKey':_0x16d5('0x1e6'),'as':_0x16d5('0x1e7')});db[_0x16d5('0x109')][_0x16d5('0x129')](db['User'],{'foreignKey':'ToUserId','as':_0x16d5('0x1e9')});db['WhatsappQueue'][_0x16d5('0x12a')](db[_0x16d5('0x12')],{'as':'Agents','through':'UserWhatsappQueue','foreignKey':_0x16d5('0x204')});db[_0x16d5('0x10b')]['belongsToMany'](db[_0x16d5('0xeb')],{'through':_0x16d5('0x205'),'as':_0x16d5('0x170')});db[_0x16d5('0x118')]['belongsTo'](db[_0x16d5('0x12')],{'as':'user','foreignKey':_0x16d5('0x117'),'onDelete':_0x16d5('0x116'),'hooks':!![]});db['CloudProvider'][_0x16d5('0x114')](db[_0x16d5('0xc9')],{'as':_0x16d5('0xc9'),'onDelete':'restrict'});db[_0x16d5('0x165')][_0x16d5('0x114')](db['MailServerIn'],{'as':_0x16d5('0x168'),'onDelete':_0x16d5('0x167')});db[_0x16d5('0x165')][_0x16d5('0x114')](db['MailServerOut'],{'as':'Smtp','onDelete':'restrict'});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0xadcd=['MailInteractionId','Account','ContactId','Owner','Tag','mail_interaction_has_tags','Users','user_has_mail_interactions','Contact','Interaction','ChatOfflineMessageId','TagId','MailQueueReport','Items','FaxAccountId','FaxApplication','Exntensions','FaxMessage','FaxInteractionId','fax_interaction_has_tags','Tags','ThroughTags','SmsAccountId','sms_interaction_has_tags','SmsInteractionId','SmsQueueId','OpenchannelAccountId','OpenchannelApplication','OpenchannelInteractionId','openchannel_interaction_has_tags','AttachmentId','ChatWebsiteId','ChatProactiveAction','ProactiveActions','ChatApplication','Agent','Queue','Website','ChatInteractionId','chat_interaction_has_tags','Attachments','team_has_chat_queues','ChatGroupId','CompanyId','Phones','CmContactId','HopperHistories','JscriptySessions','Company','cm_user_has_contacts','cm_contact_has_tags','CmHopperAdditionalPhone','AdditionalPhones','CmHopperId','CampaignId','OwnerId','Automation','All','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','Actions','AutomationId','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','CustomReportId','Mohs','whatsapp_interaction_has_tags','ItemType','ItemTypeId','AllConditions','TriggerAllId','Trigger','AnyConditions','AnyCondition','AnalyticCustomReport','AnalyticFieldReport','Fields','AnalyticMetric','MetricId','SalesforceAccount','Configurations','AccountId','SalesforceField','Subjects','SubjectId','Descriptions','DescriptionId','FieldId','Subject','Description','Field','VariableId','DeskConfiguration','int_desk_configuration_has_tags','int_zendesk_configuration_has_tags','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','ServicenowConfiguration','Dynamics365Field','ChatQueueReport','ToId','SessionId','ProjectId','user_has_square_projects','team_has_fax_queues','team_has_sms_queues','SmsQueues','campaigns_has_cm_blacklists','FromMailAccountId','FromAccount','FromAgent','ToUserId','ToAgent','ToQueue','ToMailAccountId','FromChatWebsiteId','FromUserId','ToChatQueueId','ToChatWebsiteId','ToFaxQueueId','ToOpenchannelQueueId','ToAccount','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','Queues','UserProfileSection','WhatsappAccountId','WhatsappInteractionId','WhatsappQueueReport','FromWhatsappAccountId','ToQueueId','WhatsappQueueId','team_has_whatsapp_queues','user','Imap','exports','sequelize','jstz','motion2','xcall','mysql','utf8mb4','name','utf8','utf8_general_ci','defaultsDeep','sequelizeHistory','xC@LL1234','127.0.0.1','database','username','options','password','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','VoiceExtension','../api/voiceMusicOnHold/voiceMusicOnHold.model','../api/voiceQueue/voiceQueue.model','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','../api/trunk/trunk.model','VoiceTransferReport','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailInteraction','../api/mailInteraction/mailInteraction.model','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/openchannelAccount/openchannelAccount.model','../api/openchannelApplication/openchannelApplication.model','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','ChatWebsite','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','../api/chatApplication/chatApplication.model','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','Action','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','Condition','../api/condition/condition.model','../api/interval/interval.model','Pause','../api/pause/pause.model','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','../api/tag/tag.model','ContactItemType','../api/contactItemType/contactItemType.model','CmContactHasItem','../api/cmContactHasItem/cmContactHasItem.model','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model','../api/template/template.model','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','../api/analyticMetric/analyticMetric.model','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','../api/intServicenowAccount/intServicenowAccount.model','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Network','../api/network/network.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','JscriptyProject','Setting','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareMessage/squareMessage.model','../api/team/team.model','License','../api/license/license.model','Campaign','../api/campaign/campaign.model','Migration','Attachment','../api/attachment/attachment.model','../api/plugin/plugin.model','MailTransferReport','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','UserProfile','../api/userProfile/userProfile.model','../api/userProfileSection/userProfileSection.model','UserProfileResource','UserNotification','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','UserSetting','../api/user-setting/user-setting.model','User','hasOne','cascade','UserId','userSetting','VoiceRecording','Recordings','hasMany','VoiceQueuesRt','Extensions','HopperFinals','HopperHistory','OpenchannelInteractions','ChatInteraction','ChatInteractions','SmsInteractions','FaxInteractions','MailInteractions','WhatsappInteraction','userProfileId','belongsToMany','Groups','chat_group_has_users','Contacts','Lists','Team','user_has_teams','user_has_chat_interactions','user_has_fax_interactions','user_has_sms_interactions','OpenchannelInteraction','user_has_openchannel_interactions','WhatsappInteractions','user_has_whatsapp_interactions','VoiceQueue','VoiceQueues','VoicePrefixes','MailQueues','ChatQueues','FaxQueues','UserSmsQueue','OpenchannelQueue','OpenchannelQueues','UserOpenchannelQueue','WhatsappQueues','cm_user_has_lists','ChatWebsites','user_has_chat_websites','FaxAccounts','user_has_fax_accounts','MailAccount','MailAccounts','user_has_mail_accounts','OpenchannelAccount','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','user_has_whatsapp_accounts','SquareProjects','SpiedAgents','ChanSpyId','VoiceMusicOnHold','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperBlacks','Trunk','TrunkId','TrunkBackup','TrunkBackupId','belongsTo','Interval','IntervalId','mandatoryDispositionPause','voice_queues_has_cm_lists','Teams','BlackLists','voice_queues_has_cm_blacklists','mailboxuser','mailbox','QueueCalls','uniqueid','AgentReports','MailAccountId','CloudProviderId','restrict','Smtp','Dispositions','Answers','MailMessage','Interactions','Applications','List','ListId','Template','mandatoryDispositionPauseId','Agents','team_has_mail_queues','Messages'];(function(_0x48b19c,_0x1e21e7){var _0x33768d=function(_0x32aba1){while(--_0x32aba1){_0x48b19c['push'](_0x48b19c['shift']());}};_0x33768d(++_0x1e21e7);}(_0xadcd,0x91));var _0xdadc=function(_0x4edf05,_0x4884f3){_0x4edf05=_0x4edf05-0x0;var _0x6e67ac=_0xadcd[_0x4edf05];return _0x6e67ac;};'use strict';var config=require('../config/environment');var Sequelize=require(_0xdadc('0x0'));var _=require('lodash');var jstz=require(_0xdadc('0x1'));var timezone=jstz['determine']();config['sequelize']=_['defaultsDeep'](config[_0xdadc('0x0')],{'database':_0xdadc('0x2'),'username':_0xdadc('0x3'),'password':'xC@LL1234','options':{'host':'127.0.0.1','port':0xcea,'dialect':_0xdadc('0x4'),'dialectOptions':{'charset':_0xdadc('0x5')},'logging':![],'timezone':timezone[_0xdadc('0x6')](),'define':{'charset':_0xdadc('0x7'),'collate':_0xdadc('0x8')}}});config['sequelizeHistory']=_[_0xdadc('0x9')](config[_0xdadc('0xa')],{'database':_0xdadc('0x2'),'username':'xcall','password':_0xdadc('0xb'),'options':{'host':_0xdadc('0xc'),'port':0xcea,'dialect':_0xdadc('0x4'),'dialectOptions':{'charset':_0xdadc('0x5')},'logging':![],'timezone':timezone[_0xdadc('0x6')](),'define':{'charset':_0xdadc('0x7'),'collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xdadc('0x0')][_0xdadc('0xd')],config['sequelize'][_0xdadc('0xe')],config[_0xdadc('0x0')]['password'],config['sequelize'][_0xdadc('0xf')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory']['database'],config[_0xdadc('0xa')]['username'],config[_0xdadc('0xa')][_0xdadc('0x10')],config[_0xdadc('0xa')][_0xdadc('0xf')])};db['User']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x12'));db[_0xdadc('0x13')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x14'));db[_0xdadc('0x15')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/voiceContext/voiceContext.model');db[_0xdadc('0x16')]=db['sequelize'][_0xdadc('0x11')]('../api/voiceExtension/voiceExtension.model');db['VoiceMusicOnHold']=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x17'));db['VoiceQueue']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x18'));db['VoiceRecording']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x19'));db[_0xdadc('0x1a')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x1b'));db[_0xdadc('0x1c')]=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x1d'));db[_0xdadc('0x1e')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x1f'));db[_0xdadc('0x20')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x21'));db[_0xdadc('0x22')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/voiceDialReport/voiceDialReport.model');db[_0xdadc('0x23')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x24'));db[_0xdadc('0x25')]=db['sequelize']['import'](_0xdadc('0x26'));db[_0xdadc('0x27')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x28'));db['Trunk']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x29'));db[_0xdadc('0x2a')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/voiceTransferReport/voiceTransferReport.model');db[_0xdadc('0x2b')]=db[_0xdadc('0x0')]['import'](_0xdadc('0x2c'));db[_0xdadc('0x2d')]=db[_0xdadc('0x0')]['import'](_0xdadc('0x2e'));db[_0xdadc('0x2f')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x30'));db[_0xdadc('0x31')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x32'));db[_0xdadc('0x33')]=db[_0xdadc('0x0')]['import'](_0xdadc('0x34'));db['UserSmsQueue']=db['sequelize'][_0xdadc('0x11')]('../api/userSmsQueue/userSmsQueue.model');db['UserOpenchannelQueue']=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x35'));db[_0xdadc('0x36')]=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x37'));db[_0xdadc('0x38')]=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x39'));db[_0xdadc('0x3a')]=db['sequelize'][_0xdadc('0x11')]('../api/mailServerOut/mailServerOut.model');db['MailAccount']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x3b'));db[_0xdadc('0x3c')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x3d'));db['MailSubstatus']=db[_0xdadc('0x0')]['import']('../api/mailSubstatus/mailSubstatus.model');db[_0xdadc('0x3e')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x3f'));db['MailMessage']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x40'));db[_0xdadc('0x41')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x42'));db['MailQueueReport']=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/mailQueueReport/mailQueueReport.model');db[_0xdadc('0x43')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x44'));db[_0xdadc('0x45')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x46'));db[_0xdadc('0x47')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/faxAccount/faxAccount.model');db['FaxApplication']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x48'));db[_0xdadc('0x49')]=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x4a'));db['FaxMessage']=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/faxMessage/faxMessage.model');db[_0xdadc('0x4b')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x4c'));db[_0xdadc('0x4d')]=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x4e'));db[_0xdadc('0x4f')]=db[_0xdadc('0x0')]['import'](_0xdadc('0x50'));db[_0xdadc('0x51')]=db['sequelize']['import']('../api/smsApplication/smsApplication.model');db[_0xdadc('0x52')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x53'));db[_0xdadc('0x54')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x55'));db[_0xdadc('0x56')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/smsQueue/smsQueue.model');db['OpenchannelAccount']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x57'));db['OpenchannelApplication']=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x58'));db['OpenchannelInteraction']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x59'));db[_0xdadc('0x5a')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x5b'));db['OpenchannelQueue']=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/openchannelQueue/openchannelQueue.model');db[_0xdadc('0x5c')]=db['sequelize']['import']('../api/chatWebsite/chatWebsite.model');db[_0xdadc('0x5d')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x5e'));db['ChatApplication']=db[_0xdadc('0x0')]['import'](_0xdadc('0x5f'));db['ChatInteraction']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x60'));db[_0xdadc('0x61')]=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x62'));db[_0xdadc('0x63')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0xdadc('0x64')]=db[_0xdadc('0x0')]['import'](_0xdadc('0x65'));db[_0xdadc('0x66')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x67'));db['ChatProactiveAction']=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x68'));db[_0xdadc('0x69')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x6a'));db[_0xdadc('0x6b')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/cmContact/cmContact.model');db[_0xdadc('0x6c')]=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x6d'));db[_0xdadc('0x6e')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x6f'));db[_0xdadc('0x70')]=db['sequelize']['import'](_0xdadc('0x71'));db[_0xdadc('0x72')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x73'));db[_0xdadc('0x74')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x75'));db[_0xdadc('0x76')]=db['sequelize'][_0xdadc('0x11')]('../api/cmCustomField/cmCustomField.model');db[_0xdadc('0x77')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/action/action.model');db['Automation']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x78'));db[_0xdadc('0x79')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x7a'));db[_0xdadc('0x7b')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/disposition/disposition.model');db[_0xdadc('0x7c')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x7d'));db['Interval']=db[_0xdadc('0x0')]['import'](_0xdadc('0x7e'));db[_0xdadc('0x7f')]=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x80'));db['Cdr']=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x81'));db[_0xdadc('0x82')]=db[_0xdadc('0x0')]['import'](_0xdadc('0x83'));db[_0xdadc('0x84')]=db['sequelize']['import'](_0xdadc('0x85'));db[_0xdadc('0x86')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x87'));db['Tag']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x88'));db[_0xdadc('0x89')]=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x8a'));db[_0xdadc('0x8b')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x8c'));db['CmHopperAdditionalPhone']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x8d'));db['Template']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x8e'));db['Trigger']=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/trigger/trigger.model');db[_0xdadc('0x8f')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x90'));db[_0xdadc('0x91')]=db[_0xdadc('0x0')]['import'](_0xdadc('0x92'));db[_0xdadc('0x93')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x94'));db['AnalyticCustomReport']=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x95'));db[_0xdadc('0x96')]=db[_0xdadc('0x0')]['import'](_0xdadc('0x97'));db[_0xdadc('0x98')]=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x99'));db['AnalyticMetric']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x9a'));db['AnalyticFieldReport']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x9b'));db[_0xdadc('0x9c')]=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x9d'));db['SalesforceAccount']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x9e'));db[_0xdadc('0x9f')]=db[_0xdadc('0x0')]['import'](_0xdadc('0xa0'));db['SalesforceField']=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/intSalesforceField/intSalesforceField.model');db['SugarcrmAccount']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xa1'));db[_0xdadc('0xa2')]=db[_0xdadc('0x0')]['import'](_0xdadc('0xa3'));db[_0xdadc('0xa4')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xa5'));db[_0xdadc('0xa6')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/intDeskAccount/intDeskAccount.model');db['DeskConfiguration']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xa7'));db[_0xdadc('0xa8')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/intDeskField/intDeskField.model');db[_0xdadc('0xa9')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xaa'));db[_0xdadc('0xab')]=db[_0xdadc('0x0')]['import'](_0xdadc('0xac'));db[_0xdadc('0xad')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xae'));db[_0xdadc('0xaf')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xb0'));db[_0xdadc('0xb1')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xb2'));db[_0xdadc('0xb3')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xb4'));db[_0xdadc('0xb5')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xb6'));db['FreshdeskConfiguration']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xb7'));db[_0xdadc('0xb8')]=db['sequelize'][_0xdadc('0x11')](_0xdadc('0xb9'));db[_0xdadc('0xba')]=db['sequelize']['import']('../api/intVtigerAccount/intVtigerAccount.model');db[_0xdadc('0xbb')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xbc'));db[_0xdadc('0xbd')]=db[_0xdadc('0x0')]['import'](_0xdadc('0xbe'));db['ServicenowAccount']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xbf'));db['ServicenowConfiguration']=db[_0xdadc('0x0')]['import'](_0xdadc('0xc0'));db[_0xdadc('0xc1')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xc2'));db[_0xdadc('0xc3')]=db[_0xdadc('0x0')]['import'](_0xdadc('0xc4'));db[_0xdadc('0xc5')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/intDynamics365Configuration/intDynamics365Configuration.model');db['Dynamics365Field']=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/intDynamics365Field/intDynamics365Field.model');db[_0xdadc('0xc6')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xc7'));db[_0xdadc('0xc8')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model');db[_0xdadc('0xc9')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xca'));db['Integration']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x92'));db[_0xdadc('0xcb')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xcc'));db['ChatQueueReport']=db['sequelize'][_0xdadc('0x11')]('../api/chatQueueReport/chatQueueReport.model');db[_0xdadc('0xcd')]=db['sequelize']['import']('../api/chatInternalMessage/chatInternalMessage.model');db[_0xdadc('0xce')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xcf'));db[_0xdadc('0xd0')]=db[_0xdadc('0x0')]['import'](_0xdadc('0xd1'));db[_0xdadc('0xd2')]=db[_0xdadc('0x0')]['import'](_0xdadc('0xd3'));db[_0xdadc('0xd4')]=db[_0xdadc('0x0')]['import'](_0xdadc('0xd5'));db[_0xdadc('0xd6')]=db[_0xdadc('0x0')]['import'](_0xdadc('0xd7'));db[_0xdadc('0xd8')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/squareReportDetail/squareReportDetail.model');db[_0xdadc('0xd9')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/jscriptyProject/jscriptyProject.model');db[_0xdadc('0xda')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/setting/setting.model');db[_0xdadc('0xdb')]=db['sequelize'][_0xdadc('0x11')](_0xdadc('0xdc'));db[_0xdadc('0xdd')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xde'));db[_0xdadc('0xdf')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/squareRecording/squareRecording.model');db['SquareMessage']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xe0'));db['Team']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xe1'));db[_0xdadc('0xe2')]=db[_0xdadc('0x0')]['import'](_0xdadc('0xe3'));db[_0xdadc('0xe4')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xe5'));db[_0xdadc('0xe6')]=db['sequelize']['import']('../api/migration/migration.model');db[_0xdadc('0xe7')]=db[_0xdadc('0x0')]['import'](_0xdadc('0xe8'));db['Plugin']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xe9'));db[_0xdadc('0xea')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/mailTransferReport/mailTransferReport.model');db[_0xdadc('0xeb')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xec'));db[_0xdadc('0xed')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xee'));db[_0xdadc('0xef')]=db[_0xdadc('0x0')]['import'](_0xdadc('0xf0'));db[_0xdadc('0xf1')]=db['sequelize'][_0xdadc('0x11')](_0xdadc('0xf2'));db[_0xdadc('0xf3')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xf4'));db[_0xdadc('0xf5')]=db['sequelize'][_0xdadc('0x11')]('../api/voicePrefix/voicePrefix.model');db[_0xdadc('0xf6')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xf7'));db['UserProfileSection']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xf8'));db[_0xdadc('0xf9')]=db['sequelize'][_0xdadc('0x11')]('../api/userProfileResource/userProfileResource.model');db[_0xdadc('0xfa')]=db['sequelize'][_0xdadc('0x11')]('../api/userNotification/userNotification.model');db[_0xdadc('0xfb')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0xfc'));db[_0xdadc('0xfd')]=db[_0xdadc('0x0')]['import'](_0xdadc('0xfe'));db['WhatsappInteraction']=db['sequelize'][_0xdadc('0x11')]('../api/whatsappInteraction/whatsappInteraction.model');db[_0xdadc('0xff')]=db['sequelize']['import'](_0xdadc('0x100'));db['WhatsappQueueReport']=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x101'));db[_0xdadc('0x102')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x103'));db[_0xdadc('0x104')]=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x105'));db[_0xdadc('0x106')]=db[_0xdadc('0x0')]['import']('../api/cloudProvider/cloudProvider.model');db[_0xdadc('0x107')]=db['sequelize'][_0xdadc('0x11')](_0xdadc('0x108'));db[_0xdadc('0x109')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x10a'));db[_0xdadc('0x10b')]=db[_0xdadc('0x0')][_0xdadc('0x11')]('../api/userVoicePrefix/userVoicePrefix.model');db[_0xdadc('0x10c')]=db[_0xdadc('0x0')][_0xdadc('0x11')](_0xdadc('0x10d'));db[_0xdadc('0x10e')][_0xdadc('0x10f')](db[_0xdadc('0x1c')],{'as':'VoiceMail','onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x111')});db[_0xdadc('0x10e')][_0xdadc('0x10f')](db[_0xdadc('0x10c')],{'as':_0xdadc('0x112'),'onDelete':'cascade','foreignKey':_0xdadc('0x111')});db['User']['hasMany'](db[_0xdadc('0x113')],{'as':_0xdadc('0x114'),'foreignKey':_0xdadc('0x111')});db[_0xdadc('0x10e')][_0xdadc('0x115')](db[_0xdadc('0x2b')],{'as':_0xdadc('0x116'),'foreignKey':_0xdadc('0x111')});db[_0xdadc('0x10e')][_0xdadc('0x115')](db['VoiceExtension'],{'as':_0xdadc('0x117'),'onDelete':_0xdadc('0x110'),'hooks':!![]});db[_0xdadc('0x10e')][_0xdadc('0x115')](db[_0xdadc('0x70')],{'as':_0xdadc('0x118'),'foreignKey':_0xdadc('0x111')});db[_0xdadc('0x10e')][_0xdadc('0x115')](db[_0xdadc('0x72')],{'as':_0xdadc('0x119'),'foreignKey':_0xdadc('0x111')});db[_0xdadc('0x10e')][_0xdadc('0x115')](db[_0xdadc('0x74')],{'as':_0xdadc('0x74'),'foreignKey':'UserId'});db['User'][_0xdadc('0x115')](db['OpenchannelInteraction'],{'as':_0xdadc('0x11a'),'foreignKey':_0xdadc('0x111')});db[_0xdadc('0x10e')][_0xdadc('0x115')](db[_0xdadc('0x11b')],{'as':_0xdadc('0x11c'),'foreignKey':'UserId'});db[_0xdadc('0x10e')]['hasMany'](db[_0xdadc('0x52')],{'as':_0xdadc('0x11d'),'foreignKey':_0xdadc('0x111')});db[_0xdadc('0x10e')]['hasMany'](db['FaxInteraction'],{'as':_0xdadc('0x11e'),'foreignKey':_0xdadc('0x111')});db[_0xdadc('0x10e')][_0xdadc('0x115')](db[_0xdadc('0x3e')],{'as':_0xdadc('0x11f'),'foreignKey':_0xdadc('0x111')});db['User'][_0xdadc('0x115')](db[_0xdadc('0x120')],{'as':'WhatsappInteractions','foreignKey':_0xdadc('0x111')});db[_0xdadc('0x10e')][_0xdadc('0x115')](db[_0xdadc('0xfa')],{'as':'UserNotifications','foreignKey':'SenderId'});db[_0xdadc('0x10e')]['belongsTo'](db[_0xdadc('0xf6')],{'as':_0xdadc('0xf6'),'foreignKey':_0xdadc('0x121')});db['User'][_0xdadc('0x122')](db[_0xdadc('0x66')],{'as':_0xdadc('0x123'),'through':_0xdadc('0x124')});db[_0xdadc('0x10e')][_0xdadc('0x122')](db[_0xdadc('0x6b')],{'as':_0xdadc('0x125'),'through':'cm_user_has_contacts'});db['User'][_0xdadc('0x122')](db['CmList'],{'as':_0xdadc('0x126'),'through':'cm_user_has_lists'});db[_0xdadc('0x10e')][_0xdadc('0x122')](db[_0xdadc('0x127')],{'through':_0xdadc('0x128')});db[_0xdadc('0x10e')]['belongsToMany'](db['MailInteraction'],{'as':_0xdadc('0x11f'),'through':'user_has_mail_interactions'});db[_0xdadc('0x10e')][_0xdadc('0x122')](db['ChatInteraction'],{'as':_0xdadc('0x11c'),'through':_0xdadc('0x129')});db[_0xdadc('0x10e')]['belongsToMany'](db[_0xdadc('0x49')],{'as':_0xdadc('0x11e'),'through':_0xdadc('0x12a')});db['User'][_0xdadc('0x122')](db[_0xdadc('0x52')],{'as':_0xdadc('0x11d'),'through':_0xdadc('0x12b')});db[_0xdadc('0x10e')][_0xdadc('0x122')](db[_0xdadc('0x12c')],{'as':_0xdadc('0x11a'),'through':_0xdadc('0x12d')});db['User']['belongsToMany'](db[_0xdadc('0x120')],{'as':_0xdadc('0x12e'),'through':_0xdadc('0x12f')});db['User']['belongsToMany'](db[_0xdadc('0x130')],{'as':_0xdadc('0x131'),'through':_0xdadc('0x2d'),'required':![]});db[_0xdadc('0x10e')][_0xdadc('0x122')](db[_0xdadc('0xf5')],{'as':_0xdadc('0x132'),'through':_0xdadc('0x10b'),'required':![]});db['User'][_0xdadc('0x122')](db[_0xdadc('0x3c')],{'as':_0xdadc('0x133'),'through':'UserMailQueue','required':![]});db[_0xdadc('0x10e')][_0xdadc('0x122')](db[_0xdadc('0x64')],{'as':_0xdadc('0x134'),'through':_0xdadc('0x2f'),'required':![],'hooks':!![]});db[_0xdadc('0x10e')]['belongsToMany'](db['FaxQueue'],{'as':_0xdadc('0x135'),'through':_0xdadc('0x33'),'required':![]});db['User'][_0xdadc('0x122')](db['SmsQueue'],{'as':'SmsQueues','through':_0xdadc('0x136'),'required':![]});db[_0xdadc('0x10e')][_0xdadc('0x122')](db[_0xdadc('0x137')],{'as':_0xdadc('0x138'),'through':_0xdadc('0x139'),'required':![]});db[_0xdadc('0x10e')][_0xdadc('0x122')](db[_0xdadc('0x104')],{'as':_0xdadc('0x13a'),'through':_0xdadc('0x36'),'required':![]});db['User'][_0xdadc('0x122')](db[_0xdadc('0xf3')],{'through':_0xdadc('0x13b')});db[_0xdadc('0x10e')]['belongsToMany'](db[_0xdadc('0x5c')],{'as':_0xdadc('0x13c'),'through':_0xdadc('0x13d')});db['User'][_0xdadc('0x122')](db[_0xdadc('0x47')],{'as':_0xdadc('0x13e'),'through':_0xdadc('0x13f')});db[_0xdadc('0x10e')][_0xdadc('0x122')](db[_0xdadc('0x140')],{'as':_0xdadc('0x141'),'through':_0xdadc('0x142')});db[_0xdadc('0x10e')][_0xdadc('0x122')](db[_0xdadc('0x143')],{'as':_0xdadc('0x144'),'through':_0xdadc('0x145')});db['User'][_0xdadc('0x122')](db[_0xdadc('0x4f')],{'as':_0xdadc('0x146'),'through':_0xdadc('0x147')});db[_0xdadc('0x10e')][_0xdadc('0x122')](db[_0xdadc('0xfb')],{'as':'WhatsappAccounts','through':_0xdadc('0x148')});db[_0xdadc('0x10e')][_0xdadc('0x122')](db[_0xdadc('0xdd')],{'as':_0xdadc('0x149'),'through':'user_has_square_projects'});db['VoiceChanSpy']['hasMany'](db[_0xdadc('0x16')],{'as':_0xdadc('0x14a'),'onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x14b')});db[_0xdadc('0x15')][_0xdadc('0x115')](db['VoiceExtension'],{'onDelete':_0xdadc('0x110')});db['VoiceExtension'][_0xdadc('0x115')](db['VoiceExtension'],{'as':'Applications','onDelete':_0xdadc('0x110')});db[_0xdadc('0x14c')][_0xdadc('0x122')](db[_0xdadc('0x86')],{'as':_0xdadc('0x14d'),'through':_0xdadc('0x14e')});db[_0xdadc('0x130')]['hasMany'](db[_0xdadc('0x2b')],{'as':_0xdadc('0x14f'),'foreignKey':_0xdadc('0x150')});db['VoiceQueue'][_0xdadc('0x115')](db[_0xdadc('0x6c')],{'as':_0xdadc('0x151'),'foreignKey':_0xdadc('0x150')});db[_0xdadc('0x130')][_0xdadc('0x115')](db['CmHopperFinal'],{'as':_0xdadc('0x118'),'foreignKey':_0xdadc('0x150')});db[_0xdadc('0x130')][_0xdadc('0x115')](db[_0xdadc('0x72')],{'as':'HopperHistories','foreignKey':'VoiceQueueId'});db['VoiceQueue']['hasMany'](db[_0xdadc('0x74')],{'as':_0xdadc('0x74'),'foreignKey':_0xdadc('0x150')});db['VoiceQueue'][_0xdadc('0x115')](db[_0xdadc('0x6e')],{'as':_0xdadc('0x152'),'foreignKey':_0xdadc('0x150')});db[_0xdadc('0x130')][_0xdadc('0x115')](db[_0xdadc('0xd2')],{'as':'JscriptySessions','foreignKey':'VoiceQueueId'});db['VoiceQueue']['belongsTo'](db[_0xdadc('0x153')],{'as':'Trunk','foreignKey':_0xdadc('0x154')});db[_0xdadc('0x130')]['belongsTo'](db['Trunk'],{'as':_0xdadc('0x155'),'foreignKey':_0xdadc('0x156')});db[_0xdadc('0x130')][_0xdadc('0x157')](db[_0xdadc('0x158')],{'as':_0xdadc('0x158'),'foreignKey':_0xdadc('0x159')});db['VoiceQueue']['belongsTo'](db[_0xdadc('0x7f')],{'as':_0xdadc('0x15a'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xdadc('0x130')]['belongsToMany'](db[_0xdadc('0xf3')],{'as':'Lists','through':_0xdadc('0x15b')});db[_0xdadc('0x130')][_0xdadc('0x122')](db[_0xdadc('0x10e')],{'as':'Agents','through':_0xdadc('0x2d')});db['VoiceQueue'][_0xdadc('0x122')](db[_0xdadc('0x127')],{'as':_0xdadc('0x15c'),'through':_0xdadc('0x107')});db['VoiceQueue'][_0xdadc('0x122')](db['CmList'],{'as':_0xdadc('0x15d'),'through':_0xdadc('0x15e')});db[_0xdadc('0x113')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'as':_0xdadc('0x10e'),'foreignKey':_0xdadc('0x111')});db[_0xdadc('0x1a')]['belongsTo'](db['User'],{'as':_0xdadc('0x10e'),'foreignKey':_0xdadc('0x111')});db[_0xdadc('0x1c')][_0xdadc('0x115')](db[_0xdadc('0x1e')],{'as':'Messages','onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x15f'),'sourceKey':_0xdadc('0x160')});db[_0xdadc('0x1e')]['belongsTo'](db[_0xdadc('0x1c')],{'foreignKey':'mailboxuser','targetKey':'mailbox'});db[_0xdadc('0x20')]['hasMany'](db[_0xdadc('0x25')],{'as':_0xdadc('0x161'),'foreignKey':_0xdadc('0x162'),'constraints':![]});db[_0xdadc('0x20')][_0xdadc('0x115')](db[_0xdadc('0x23')],{'as':_0xdadc('0x163'),'foreignKey':_0xdadc('0x162'),'constraints':![]});db[_0xdadc('0x20')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'as':_0xdadc('0x10e'),'foreignKey':_0xdadc('0x111')});db[_0xdadc('0x20')][_0xdadc('0x157')](db['CmContact'],{'as':'Contact','foreignKey':'ContactId'});db[_0xdadc('0x38')][_0xdadc('0x157')](db[_0xdadc('0x140')],{'as':'MailAccount','foreignKey':_0xdadc('0x164')});db[_0xdadc('0x38')][_0xdadc('0x157')](db['CloudProvider'],{'as':_0xdadc('0x106'),'foreignKey':_0xdadc('0x165'),'onDelete':_0xdadc('0x166')});db[_0xdadc('0x3a')][_0xdadc('0x157')](db[_0xdadc('0x140')],{'as':_0xdadc('0x140'),'foreignKey':_0xdadc('0x164')});db[_0xdadc('0x3a')]['belongsTo'](db[_0xdadc('0x106')],{'as':_0xdadc('0x106'),'foreignKey':_0xdadc('0x165'),'onDelete':_0xdadc('0x166')});db[_0xdadc('0x140')]['hasOne'](db[_0xdadc('0x38')],{'as':'Imap','onDelete':_0xdadc('0x110')});db['MailAccount'][_0xdadc('0x10f')](db['MailServerOut'],{'as':_0xdadc('0x167'),'onDelete':_0xdadc('0x110')});db[_0xdadc('0x140')][_0xdadc('0x115')](db[_0xdadc('0x7b')],{'as':_0xdadc('0x168'),'foreignKey':_0xdadc('0x164'),'onDelete':'cascade'});db[_0xdadc('0x140')][_0xdadc('0x115')](db[_0xdadc('0x79')],{'as':_0xdadc('0x169'),'foreignKey':_0xdadc('0x164')});db[_0xdadc('0x140')][_0xdadc('0x115')](db[_0xdadc('0x16a')],{'as':'Messages','foreignKey':'MailAccountId'});db['MailAccount'][_0xdadc('0x115')](db[_0xdadc('0x3e')],{'as':_0xdadc('0x16b')});db[_0xdadc('0x140')][_0xdadc('0x115')](db[_0xdadc('0x41')],{'as':_0xdadc('0x16c')});db['MailAccount'][_0xdadc('0x157')](db['CmList'],{'as':_0xdadc('0x16d'),'foreignKey':_0xdadc('0x16e')});db[_0xdadc('0x140')][_0xdadc('0x157')](db[_0xdadc('0x16f')],{'as':_0xdadc('0x16f'),'foreignKey':'TemplateId'});db[_0xdadc('0x140')][_0xdadc('0x157')](db[_0xdadc('0x7f')],{'as':_0xdadc('0x15a'),'foreignKey':_0xdadc('0x170')});db['MailAccount']['belongsToMany'](db[_0xdadc('0x10e')],{'as':_0xdadc('0x171'),'through':'user_has_mail_accounts'});db[_0xdadc('0x3c')]['belongsToMany'](db['User'],{'as':'Agents','through':'UserMailQueue'});db[_0xdadc('0x3c')][_0xdadc('0x122')](db[_0xdadc('0x127')],{'through':_0xdadc('0x172'),'as':_0xdadc('0x15c')});db[_0xdadc('0x3e')]['hasMany'](db[_0xdadc('0x16a')],{'as':_0xdadc('0x173'),'onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x174')});db[_0xdadc('0x3e')][_0xdadc('0x157')](db[_0xdadc('0x140')],{'as':_0xdadc('0x175'),'foreignKey':'MailAccountId'});db[_0xdadc('0x3e')][_0xdadc('0x157')](db['CmContact'],{'as':'Contact','foreignKey':_0xdadc('0x176')});db[_0xdadc('0x3e')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'as':_0xdadc('0x177'),'foreignKey':_0xdadc('0x111')});db['MailInteraction'][_0xdadc('0x122')](db[_0xdadc('0x178')],{'through':'mail_interaction_has_tags','as':'Tags'});db['MailInteraction'][_0xdadc('0x122')](db[_0xdadc('0x178')],{'through':_0xdadc('0x179'),'as':'ThroughTags'});db['MailInteraction'][_0xdadc('0x122')](db[_0xdadc('0x10e')],{'as':_0xdadc('0x17a'),'through':_0xdadc('0x17b'),'foreignKey':_0xdadc('0x174')});db[_0xdadc('0x16a')][_0xdadc('0x115')](db[_0xdadc('0xe7')],{'as':'Attachments','onDelete':'cascade'});db[_0xdadc('0x16a')]['belongsTo'](db[_0xdadc('0x10e')],{'as':_0xdadc('0x10e')});db[_0xdadc('0x16a')]['belongsTo'](db[_0xdadc('0x6b')],{'onDelete':_0xdadc('0x110'),'as':_0xdadc('0x17c')});db['MailMessage'][_0xdadc('0x157')](db[_0xdadc('0x3e')],{'as':_0xdadc('0x17d'),'foreignKey':_0xdadc('0x174')});db[_0xdadc('0x16a')]['belongsTo'](db[_0xdadc('0x140')],{'as':_0xdadc('0x175'),'foreignKey':_0xdadc('0x164')});db[_0xdadc('0x16a')]['belongsTo'](db[_0xdadc('0x5c')],{'as':_0xdadc('0x5c'),'foreignKey':'ChatWebsiteId'});db[_0xdadc('0x16a')][_0xdadc('0x157')](db[_0xdadc('0x63')],{'as':_0xdadc('0x63'),'foreignKey':_0xdadc('0x17e')});db[_0xdadc('0x41')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'onDelete':_0xdadc('0x166')});db['MailApplication'][_0xdadc('0x157')](db[_0xdadc('0x3c')],{'onDelete':_0xdadc('0x166')});db[_0xdadc('0x41')]['belongsTo'](db['MailAccount'],{'onDelete':_0xdadc('0x166')});db[_0xdadc('0x41')][_0xdadc('0x157')](db[_0xdadc('0x158')],{'onDelete':'restrict','foreignKey':_0xdadc('0x159')});db[_0xdadc('0x41')]['belongsTo'](db['Tag'],{'onDelete':'restrict','foreignKey':_0xdadc('0x17f')});db[_0xdadc('0x180')]['belongsTo'](db['MailAccount'],{});db['MailQueueReport'][_0xdadc('0x157')](db[_0xdadc('0xf3')],{'as':_0xdadc('0x16d'),'foreignKey':_0xdadc('0x16e')});db['MailQueueReport'][_0xdadc('0x157')](db[_0xdadc('0x6b')],{'as':'Contact','foreignKey':_0xdadc('0x176')});db['MailQueueReport']['belongsTo'](db[_0xdadc('0x3e')],{});db[_0xdadc('0x180')][_0xdadc('0x157')](db[_0xdadc('0x16a')],{});db['MailQueueReport'][_0xdadc('0x157')](db[_0xdadc('0x10e')],{});db[_0xdadc('0x180')][_0xdadc('0x157')](db[_0xdadc('0x3c')],{});db[_0xdadc('0x43')][_0xdadc('0x115')](db[_0xdadc('0x45')],{'as':_0xdadc('0x181'),'onDelete':_0xdadc('0x110')});db[_0xdadc('0x47')][_0xdadc('0x115')](db[_0xdadc('0x7b')],{'as':_0xdadc('0x168'),'foreignKey':_0xdadc('0x182'),'onDelete':_0xdadc('0x110')});db[_0xdadc('0x47')]['hasMany'](db[_0xdadc('0x79')],{'as':_0xdadc('0x169'),'foreignKey':_0xdadc('0x182')});db[_0xdadc('0x47')][_0xdadc('0x115')](db[_0xdadc('0x49')],{'as':'Interactions'});db[_0xdadc('0x47')]['hasMany'](db[_0xdadc('0x183')],{'as':_0xdadc('0x16c')});db[_0xdadc('0x47')][_0xdadc('0x115')](db[_0xdadc('0x16')],{'as':_0xdadc('0x184'),'onDelete':_0xdadc('0x110')});db['FaxAccount'][_0xdadc('0x115')](db[_0xdadc('0x185')],{'as':_0xdadc('0x173')});db[_0xdadc('0x47')][_0xdadc('0x157')](db[_0xdadc('0x153')],{'as':'Trunk'});db[_0xdadc('0x47')][_0xdadc('0x157')](db['CmList'],{'as':_0xdadc('0x16d'),'foreignKey':'ListId'});db['FaxAccount']['belongsTo'](db[_0xdadc('0x7f')],{'as':'mandatoryDispositionPause','foreignKey':_0xdadc('0x170')});db[_0xdadc('0x47')]['belongsToMany'](db['User'],{'as':_0xdadc('0x171'),'through':_0xdadc('0x13f')});db[_0xdadc('0x183')][_0xdadc('0x157')](db['User'],{'onDelete':_0xdadc('0x166')});db['FaxApplication'][_0xdadc('0x157')](db[_0xdadc('0x4b')],{'onDelete':_0xdadc('0x166')});db[_0xdadc('0x183')][_0xdadc('0x157')](db[_0xdadc('0x47')],{'onDelete':'restrict'});db[_0xdadc('0x183')][_0xdadc('0x157')](db[_0xdadc('0x178')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0xdadc('0x49')][_0xdadc('0x115')](db[_0xdadc('0x185')],{'as':_0xdadc('0x173'),'onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x186')});db['FaxInteraction'][_0xdadc('0x157')](db[_0xdadc('0x47')],{'as':'Account','foreignKey':_0xdadc('0x182')});db[_0xdadc('0x49')][_0xdadc('0x157')](db[_0xdadc('0x6b')],{'as':_0xdadc('0x17c'),'foreignKey':_0xdadc('0x176')});db[_0xdadc('0x49')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'as':_0xdadc('0x177'),'foreignKey':_0xdadc('0x111')});db[_0xdadc('0x49')][_0xdadc('0x122')](db[_0xdadc('0x178')],{'through':_0xdadc('0x187'),'as':_0xdadc('0x188')});db['FaxInteraction']['belongsToMany'](db[_0xdadc('0x178')],{'through':_0xdadc('0x187'),'as':_0xdadc('0x189')});db[_0xdadc('0x49')][_0xdadc('0x122')](db[_0xdadc('0x10e')],{'as':_0xdadc('0x17a'),'through':_0xdadc('0x12a'),'foreignKey':_0xdadc('0x186')});db[_0xdadc('0x185')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'onDelete':'cascade','as':_0xdadc('0x10e')});db[_0xdadc('0x185')][_0xdadc('0x157')](db[_0xdadc('0x49')],{'as':'Interaction','foreignKey':_0xdadc('0x186')});db['FaxMessage'][_0xdadc('0x157')](db[_0xdadc('0x6b')],{'onDelete':_0xdadc('0x110'),'as':_0xdadc('0x17c')});db[_0xdadc('0x185')]['belongsTo'](db['Attachment'],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0xdadc('0x185')][_0xdadc('0x157')](db[_0xdadc('0x47')],{'as':'Account','foreignKey':_0xdadc('0x182')});db[_0xdadc('0x4b')][_0xdadc('0x122')](db['User'],{'as':_0xdadc('0x171'),'through':_0xdadc('0x33')});db['FaxQueue']['belongsToMany'](db[_0xdadc('0x127')],{'through':'team_has_fax_queues','as':_0xdadc('0x15c')});db['FaxQueueReport']['belongsTo'](db['FaxAccount'],{});db[_0xdadc('0x4d')][_0xdadc('0x157')](db[_0xdadc('0xf3')],{'as':_0xdadc('0x16d'),'foreignKey':_0xdadc('0x16e')});db['FaxQueueReport']['belongsTo'](db['CmContact'],{'as':'Contact','foreignKey':_0xdadc('0x176')});db['FaxQueueReport'][_0xdadc('0x157')](db[_0xdadc('0x49')],{});db[_0xdadc('0x4d')]['belongsTo'](db[_0xdadc('0x185')],{});db['FaxQueueReport']['belongsTo'](db[_0xdadc('0x10e')],{});db[_0xdadc('0x4d')][_0xdadc('0x157')](db[_0xdadc('0x4b')],{});db['SmsAccount'][_0xdadc('0x115')](db[_0xdadc('0x7b')],{'as':_0xdadc('0x168'),'foreignKey':_0xdadc('0x18a'),'onDelete':'cascade'});db[_0xdadc('0x4f')][_0xdadc('0x115')](db[_0xdadc('0x79')],{'as':_0xdadc('0x169'),'foreignKey':_0xdadc('0x18a')});db[_0xdadc('0x4f')][_0xdadc('0x115')](db[_0xdadc('0x54')],{'as':_0xdadc('0x173'),'foreignKey':_0xdadc('0x18a')});db[_0xdadc('0x4f')][_0xdadc('0x115')](db[_0xdadc('0x52')],{'as':_0xdadc('0x16b')});db['SmsAccount'][_0xdadc('0x115')](db[_0xdadc('0x51')],{'as':_0xdadc('0x16c')});db[_0xdadc('0x4f')]['belongsTo'](db[_0xdadc('0xf3')],{'as':'List','foreignKey':'ListId'});db[_0xdadc('0x4f')]['belongsTo'](db[_0xdadc('0x7f')],{'as':_0xdadc('0x15a'),'foreignKey':_0xdadc('0x170')});db[_0xdadc('0x4f')][_0xdadc('0x122')](db[_0xdadc('0x10e')],{'as':_0xdadc('0x171'),'through':'user_has_sms_accounts'});db[_0xdadc('0x51')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'onDelete':_0xdadc('0x166')});db[_0xdadc('0x51')][_0xdadc('0x157')](db[_0xdadc('0x56')],{'onDelete':_0xdadc('0x166')});db[_0xdadc('0x51')][_0xdadc('0x157')](db['SmsAccount'],{'onDelete':_0xdadc('0x166')});db[_0xdadc('0x51')][_0xdadc('0x157')](db[_0xdadc('0x158')],{'onDelete':_0xdadc('0x166'),'foreignKey':_0xdadc('0x159')});db[_0xdadc('0x51')][_0xdadc('0x157')](db[_0xdadc('0x178')],{'onDelete':_0xdadc('0x166'),'foreignKey':_0xdadc('0x17f')});db[_0xdadc('0x52')]['hasMany'](db['SmsMessage'],{'as':_0xdadc('0x173'),'onDelete':_0xdadc('0x110'),'foreignKey':'SmsInteractionId'});db['SmsInteraction'][_0xdadc('0x157')](db[_0xdadc('0x4f')],{'as':_0xdadc('0x175'),'foreignKey':_0xdadc('0x18a')});db[_0xdadc('0x52')]['belongsTo'](db[_0xdadc('0x6b')],{'as':_0xdadc('0x17c'),'foreignKey':_0xdadc('0x176')});db['SmsInteraction']['belongsTo'](db[_0xdadc('0x10e')],{'as':_0xdadc('0x177'),'foreignKey':_0xdadc('0x111')});db['SmsInteraction'][_0xdadc('0x122')](db[_0xdadc('0x178')],{'through':_0xdadc('0x18b'),'as':_0xdadc('0x188')});db[_0xdadc('0x52')][_0xdadc('0x122')](db[_0xdadc('0x178')],{'through':_0xdadc('0x18b'),'as':_0xdadc('0x189')});db[_0xdadc('0x52')][_0xdadc('0x122')](db[_0xdadc('0x10e')],{'as':'Users','through':_0xdadc('0x12b'),'foreignKey':_0xdadc('0x18c')});db[_0xdadc('0x54')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'as':_0xdadc('0x10e')});db['SmsMessage'][_0xdadc('0x157')](db[_0xdadc('0x6b')],{'onDelete':_0xdadc('0x110'),'as':_0xdadc('0x17c')});db['SmsMessage'][_0xdadc('0x157')](db[_0xdadc('0x52')],{'onDelete':'cascade','as':_0xdadc('0x17d'),'foreignKey':'SmsInteractionId'});db[_0xdadc('0x54')][_0xdadc('0x157')](db[_0xdadc('0x4f')],{'as':_0xdadc('0x175'),'foreignKey':_0xdadc('0x18a')});db['SmsQueue'][_0xdadc('0x122')](db[_0xdadc('0x10e')],{'as':_0xdadc('0x171'),'through':_0xdadc('0x136'),'foreignKey':_0xdadc('0x18d')});db[_0xdadc('0x56')][_0xdadc('0x122')](db['Team'],{'through':'team_has_sms_queues','as':'Teams'});db['OpenchannelAccount']['hasMany'](db[_0xdadc('0x7b')],{'as':_0xdadc('0x168'),'foreignKey':_0xdadc('0x18e'),'onDelete':_0xdadc('0x110')});db[_0xdadc('0x143')][_0xdadc('0x115')](db[_0xdadc('0x79')],{'as':_0xdadc('0x169'),'foreignKey':_0xdadc('0x18e')});db[_0xdadc('0x143')]['hasMany'](db[_0xdadc('0x12c')],{'as':_0xdadc('0x16b'),'foreignKey':'OpenchannelAccountId'});db[_0xdadc('0x143')][_0xdadc('0x115')](db[_0xdadc('0x5a')],{'as':_0xdadc('0x173'),'foreignKey':_0xdadc('0x18e')});db[_0xdadc('0x143')][_0xdadc('0x115')](db[_0xdadc('0x18f')],{'as':'Applications','foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0xdadc('0x157')](db[_0xdadc('0xf3')],{'as':_0xdadc('0x16d'),'foreignKey':_0xdadc('0x16e')});db['OpenchannelAccount']['belongsTo'](db[_0xdadc('0x7f')],{'as':'mandatoryDispositionPause','foreignKey':_0xdadc('0x170')});db[_0xdadc('0x143')][_0xdadc('0x122')](db[_0xdadc('0x10e')],{'as':'Agents','through':_0xdadc('0x145')});db[_0xdadc('0x18f')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'onDelete':_0xdadc('0x166')});db[_0xdadc('0x18f')][_0xdadc('0x157')](db[_0xdadc('0x137')],{'onDelete':'restrict','foreignKey':'OpenchannelQueueId'});db['OpenchannelApplication']['belongsTo'](db[_0xdadc('0x143')],{'onDelete':_0xdadc('0x166'),'foreignKey':'OpenchannelAccountId'});db[_0xdadc('0x18f')][_0xdadc('0x157')](db[_0xdadc('0x158')],{'onDelete':_0xdadc('0x166'),'foreignKey':_0xdadc('0x159')});db[_0xdadc('0x18f')][_0xdadc('0x157')](db[_0xdadc('0x178')],{'onDelete':'restrict','foreignKey':_0xdadc('0x17f')});db[_0xdadc('0x12c')]['hasMany'](db[_0xdadc('0x5a')],{'as':_0xdadc('0x173'),'onDelete':'cascade','foreignKey':_0xdadc('0x190')});db[_0xdadc('0x12c')]['belongsTo'](db['OpenchannelAccount'],{'as':_0xdadc('0x175'),'foreignKey':_0xdadc('0x18e')});db[_0xdadc('0x12c')][_0xdadc('0x157')](db[_0xdadc('0x6b')],{'as':'Contact','foreignKey':_0xdadc('0x176')});db['OpenchannelInteraction']['belongsTo'](db[_0xdadc('0x10e')],{'as':_0xdadc('0x177'),'foreignKey':'UserId'});db[_0xdadc('0x12c')][_0xdadc('0x122')](db[_0xdadc('0x178')],{'through':_0xdadc('0x191'),'as':_0xdadc('0x188')});db['OpenchannelInteraction'][_0xdadc('0x122')](db['Tag'],{'through':_0xdadc('0x191'),'as':_0xdadc('0x189')});db[_0xdadc('0x12c')]['belongsToMany'](db['User'],{'as':_0xdadc('0x17a'),'through':_0xdadc('0x12d'),'foreignKey':'OpenchannelInteractionId'});db['OpenchannelMessage'][_0xdadc('0x157')](db['User'],{'onDelete':_0xdadc('0x110'),'as':'User'});db[_0xdadc('0x5a')][_0xdadc('0x157')](db[_0xdadc('0x6b')],{'onDelete':_0xdadc('0x110'),'as':_0xdadc('0x17c')});db[_0xdadc('0x5a')][_0xdadc('0x157')](db[_0xdadc('0x12c')],{'onDelete':_0xdadc('0x110'),'as':_0xdadc('0x17d'),'foreignKey':_0xdadc('0x190')});db[_0xdadc('0x5a')][_0xdadc('0x157')](db[_0xdadc('0xe7')],{'as':'Attachment','foreignKey':_0xdadc('0x192')});db[_0xdadc('0x5a')][_0xdadc('0x157')](db[_0xdadc('0x143')],{'as':'Account','foreignKey':_0xdadc('0x18e')});db[_0xdadc('0x137')][_0xdadc('0x122')](db[_0xdadc('0x10e')],{'as':_0xdadc('0x171'),'through':_0xdadc('0x139'),'foreignKey':'OpenchannelQueueId'});db[_0xdadc('0x137')][_0xdadc('0x122')](db[_0xdadc('0x127')],{'through':'team_has_openchannel_queues','as':_0xdadc('0x15c')});db[_0xdadc('0x5c')][_0xdadc('0x115')](db[_0xdadc('0x7b')],{'as':_0xdadc('0x168'),'foreignKey':'ChatWebsiteId','onDelete':_0xdadc('0x110')});db[_0xdadc('0x5c')][_0xdadc('0x115')](db[_0xdadc('0x79')],{'as':_0xdadc('0x169'),'foreignKey':_0xdadc('0x193')});db[_0xdadc('0x5c')][_0xdadc('0x115')](db[_0xdadc('0x194')],{'as':_0xdadc('0x195')});db[_0xdadc('0x5c')][_0xdadc('0x115')](db[_0xdadc('0x11b')],{'as':_0xdadc('0x16b')});db['ChatWebsite'][_0xdadc('0x115')](db['ChatApplication'],{'as':_0xdadc('0x16c')});db[_0xdadc('0x5c')][_0xdadc('0x115')](db[_0xdadc('0x61')],{'as':'Messages'});db[_0xdadc('0x5c')][_0xdadc('0x157')](db['CmList'],{'as':_0xdadc('0x16d'),'foreignKey':_0xdadc('0x16e')});db[_0xdadc('0x5c')][_0xdadc('0x157')](db[_0xdadc('0x158')],{'as':_0xdadc('0x158'),'foreignKey':'IntervalId'});db[_0xdadc('0x5c')][_0xdadc('0x157')](db['MailAccount'],{'as':_0xdadc('0x140'),'foreignKey':_0xdadc('0x164')});db[_0xdadc('0x5c')][_0xdadc('0x157')](db[_0xdadc('0x7f')],{'as':_0xdadc('0x15a'),'foreignKey':_0xdadc('0x170')});db[_0xdadc('0x5c')][_0xdadc('0x122')](db['User'],{'as':_0xdadc('0x171'),'through':_0xdadc('0x13d')});db['OpenchannelQueueReport'][_0xdadc('0x157')](db['OpenchannelAccount'],{});db[_0xdadc('0x5d')][_0xdadc('0x157')](db[_0xdadc('0xf3')],{'as':'List','foreignKey':_0xdadc('0x16e')});db[_0xdadc('0x5d')][_0xdadc('0x157')](db[_0xdadc('0x6b')],{'as':_0xdadc('0x17c'),'foreignKey':'ContactId'});db[_0xdadc('0x5d')]['belongsTo'](db['OpenchannelInteraction'],{});db[_0xdadc('0x5d')][_0xdadc('0x157')](db[_0xdadc('0x5a')],{});db[_0xdadc('0x5d')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{});db[_0xdadc('0x5d')][_0xdadc('0x157')](db[_0xdadc('0x137')],{});db[_0xdadc('0x196')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'as':_0xdadc('0x197'),'foreignKey':_0xdadc('0x111'),'onDelete':_0xdadc('0x166')});db['ChatApplication'][_0xdadc('0x157')](db['ChatQueue'],{'as':_0xdadc('0x198'),'foreignKey':'ChatQueueId','onDelete':_0xdadc('0x166')});db[_0xdadc('0x196')][_0xdadc('0x157')](db['ChatWebsite'],{'as':_0xdadc('0x199'),'foreignKey':_0xdadc('0x193'),'onDelete':_0xdadc('0x166')});db[_0xdadc('0x196')]['belongsTo'](db[_0xdadc('0x178')],{'onDelete':_0xdadc('0x166'),'foreignKey':_0xdadc('0x17f')});db[_0xdadc('0x11b')][_0xdadc('0x115')](db['ChatMessage'],{'as':_0xdadc('0x173'),'onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x19a')});db[_0xdadc('0x11b')]['belongsTo'](db['ChatWebsite'],{'as':_0xdadc('0x175'),'foreignKey':_0xdadc('0x193')});db[_0xdadc('0x11b')]['belongsTo'](db[_0xdadc('0x6b')],{'as':_0xdadc('0x17c'),'foreignKey':_0xdadc('0x176')});db[_0xdadc('0x11b')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'as':'Owner','foreignKey':'UserId'});db['ChatInteraction'][_0xdadc('0x122')](db[_0xdadc('0x178')],{'through':_0xdadc('0x19b'),'as':_0xdadc('0x188')});db[_0xdadc('0x11b')]['belongsToMany'](db[_0xdadc('0x178')],{'through':_0xdadc('0x19b'),'as':_0xdadc('0x189')});db[_0xdadc('0x11b')]['belongsToMany'](db[_0xdadc('0x10e')],{'as':_0xdadc('0x17a'),'through':_0xdadc('0x129'),'foreignKey':'ChatInteractionId'});db[_0xdadc('0x61')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'onDelete':_0xdadc('0x110'),'as':'User'});db[_0xdadc('0x61')][_0xdadc('0x157')](db[_0xdadc('0x6b')],{'onDelete':_0xdadc('0x110'),'as':_0xdadc('0x17c'),'foreignKey':_0xdadc('0x176')});db[_0xdadc('0x61')]['belongsTo'](db[_0xdadc('0x11b')],{'onDelete':_0xdadc('0x110'),'as':_0xdadc('0x17d'),'foreignKey':_0xdadc('0x19a')});db[_0xdadc('0x61')]['belongsTo'](db[_0xdadc('0xe7')],{'as':_0xdadc('0xe7'),'foreignKey':_0xdadc('0x192')});db[_0xdadc('0x61')][_0xdadc('0x157')](db[_0xdadc('0x5c')],{'as':_0xdadc('0x175'),'foreignKey':_0xdadc('0x193')});db[_0xdadc('0x63')][_0xdadc('0x115')](db[_0xdadc('0xe7')],{'as':_0xdadc('0x19c'),'foreignKey':_0xdadc('0x17e'),'onDelete':'cascade','hooks':!![]});db[_0xdadc('0x63')]['belongsTo'](db[_0xdadc('0x6b')],{'onDelete':'cascade','as':_0xdadc('0x17c'),'foreignKey':_0xdadc('0x176')});db['ChatOfflineMessage'][_0xdadc('0x157')](db['ChatWebsite'],{'as':'Account','foreignKey':_0xdadc('0x193')});db['ChatQueue'][_0xdadc('0x122')](db[_0xdadc('0x10e')],{'as':'Agents','through':_0xdadc('0x2f'),'hooks':!![]});db[_0xdadc('0x64')][_0xdadc('0x122')](db['Team'],{'through':_0xdadc('0x19d'),'as':_0xdadc('0x15c')});db['ChatGroup'][_0xdadc('0x115')](db[_0xdadc('0xcd')],{'as':'Messages','foreignKey':_0xdadc('0x19e'),'onDelete':_0xdadc('0x110')});db[_0xdadc('0x66')]['belongsToMany'](db['User'],{'as':_0xdadc('0x14f'),'through':_0xdadc('0x124')});db[_0xdadc('0x194')]['belongsTo'](db[_0xdadc('0x5c')],{'as':_0xdadc('0x199'),'foreignKey':'ChatWebsiteId'});db[_0xdadc('0x69')][_0xdadc('0x115')](db[_0xdadc('0x6b')],{'as':_0xdadc('0x125'),'foreignKey':_0xdadc('0x19f')});db[_0xdadc('0x6b')][_0xdadc('0x115')](db[_0xdadc('0x8b')],{'as':_0xdadc('0x1a0'),'foreignKey':_0xdadc('0x1a1')});db['CmContact']['hasMany'](db[_0xdadc('0x6c')],{'as':_0xdadc('0x151'),'foreignKey':_0xdadc('0x176')});db[_0xdadc('0x6b')][_0xdadc('0x115')](db[_0xdadc('0x70')],{'as':_0xdadc('0x118'),'foreignKey':_0xdadc('0x176')});db[_0xdadc('0x6b')][_0xdadc('0x115')](db[_0xdadc('0x72')],{'as':_0xdadc('0x1a2'),'foreignKey':_0xdadc('0x176')});db[_0xdadc('0x6b')][_0xdadc('0x115')](db['ReportAgentPreview'],{'as':_0xdadc('0x74'),'foreignKey':_0xdadc('0x176')});db[_0xdadc('0x6b')][_0xdadc('0x115')](db[_0xdadc('0xd2')],{'as':_0xdadc('0x1a3'),'foreignKey':_0xdadc('0x176')});db[_0xdadc('0x6b')][_0xdadc('0x115')](db[_0xdadc('0x12c')],{'as':'OpenchannelInteractions','foreignKey':_0xdadc('0x176'),'onDelete':'restrict'});db[_0xdadc('0x6b')][_0xdadc('0x115')](db[_0xdadc('0x11b')],{'as':_0xdadc('0x11c'),'foreignKey':_0xdadc('0x176'),'onDelete':'restrict'});db[_0xdadc('0x6b')][_0xdadc('0x115')](db[_0xdadc('0x52')],{'as':_0xdadc('0x11d'),'foreignKey':_0xdadc('0x176'),'onDelete':_0xdadc('0x166')});db['CmContact'][_0xdadc('0x115')](db['FaxInteraction'],{'as':_0xdadc('0x11e'),'foreignKey':_0xdadc('0x176'),'onDelete':_0xdadc('0x166')});db[_0xdadc('0x6b')][_0xdadc('0x115')](db[_0xdadc('0x3e')],{'as':_0xdadc('0x11f'),'foreignKey':_0xdadc('0x176'),'onDelete':_0xdadc('0x166')});db[_0xdadc('0x6b')][_0xdadc('0x157')](db[_0xdadc('0x69')],{'as':_0xdadc('0x1a4'),'foreignKey':_0xdadc('0x19f')});db[_0xdadc('0x6b')][_0xdadc('0x157')](db[_0xdadc('0xf3')],{'as':_0xdadc('0x16d'),'foreignKey':_0xdadc('0x16e'),'onDelete':_0xdadc('0x110')});db[_0xdadc('0x6b')][_0xdadc('0x122')](db['User'],{'as':_0xdadc('0x17a'),'through':_0xdadc('0x1a5')});db['CmContact'][_0xdadc('0x122')](db['Tag'],{'as':_0xdadc('0x188'),'through':_0xdadc('0x1a6')});db[_0xdadc('0x6b')][_0xdadc('0x122')](db[_0xdadc('0x178')],{'through':_0xdadc('0x1a6'),'as':_0xdadc('0x189')});db[_0xdadc('0x6c')][_0xdadc('0x115')](db[_0xdadc('0x1a7')],{'as':_0xdadc('0x1a8'),'foreignKey':_0xdadc('0x1a9')});db[_0xdadc('0x6c')]['belongsTo'](db['CmContact'],{'as':_0xdadc('0x17c'),'foreignKey':_0xdadc('0x176'),'onDelete':_0xdadc('0x110')});db['CmHopper'][_0xdadc('0x157')](db[_0xdadc('0xf3')],{'as':_0xdadc('0x16d'),'foreignKey':_0xdadc('0x16e'),'onDelete':_0xdadc('0x110')});db[_0xdadc('0x6c')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'as':_0xdadc('0x197'),'foreignKey':_0xdadc('0x111')});db[_0xdadc('0x6c')][_0xdadc('0x157')](db[_0xdadc('0x130')],{'as':_0xdadc('0x198'),'foreignKey':_0xdadc('0x150'),'onDelete':'cascade'});db[_0xdadc('0x6c')][_0xdadc('0x157')](db['Campaign'],{'as':'Campaign','foreignKey':_0xdadc('0x1aa'),'onDelete':_0xdadc('0x110')});db[_0xdadc('0x6c')]['belongsTo'](db['User'],{'as':_0xdadc('0x177'),'foreignKey':_0xdadc('0x1ab')});db[_0xdadc('0x6e')]['belongsTo'](db[_0xdadc('0x6b')],{'as':_0xdadc('0x17c'),'foreignKey':'ContactId','onDelete':'cascade'});db[_0xdadc('0x6e')][_0xdadc('0x157')](db[_0xdadc('0xf3')],{'as':_0xdadc('0x16d'),'foreignKey':'ListId','onDelete':_0xdadc('0x110')});db['CmHopperBlack'][_0xdadc('0x157')](db[_0xdadc('0x130')],{'as':_0xdadc('0x198'),'foreignKey':_0xdadc('0x150'),'onDelete':_0xdadc('0x110')});db[_0xdadc('0x6e')][_0xdadc('0x157')](db[_0xdadc('0xe4')],{'as':'Campaign','foreignKey':_0xdadc('0x1aa'),'onDelete':'cascade'});db[_0xdadc('0x1ac')][_0xdadc('0x115')](db[_0xdadc('0x7c')],{'as':{'plural':_0xdadc('0x1ad'),'singular':_0xdadc('0x1ae')},'foreignKey':_0xdadc('0x1af'),'onDelete':_0xdadc('0x110'),'hooks':!![]});db[_0xdadc('0x1ac')][_0xdadc('0x115')](db[_0xdadc('0x7c')],{'as':{'plural':_0xdadc('0x1b0'),'singular':_0xdadc('0x1b1')},'foreignKey':_0xdadc('0x1b2'),'onDelete':'cascade','hooks':!![]});db[_0xdadc('0x1ac')][_0xdadc('0x115')](db[_0xdadc('0x77')],{'as':_0xdadc('0x1b3'),'foreignKey':_0xdadc('0x1b4'),'onDelete':_0xdadc('0x110'),'hooks':!![]});db[_0xdadc('0x7b')][_0xdadc('0x115')](db['Disposition'],{'as':_0xdadc('0x168'),'foreignKey':_0xdadc('0x1b5'),'onDelete':_0xdadc('0x110')});db[_0xdadc('0x158')][_0xdadc('0x115')](db[_0xdadc('0x158')],{'as':_0xdadc('0x1b6'),'foreignKey':_0xdadc('0x159'),'onDelete':'cascade','hooks':!![],'required':![]});db[_0xdadc('0x158')][_0xdadc('0x115')](db['VoiceExtension'],{'as':_0xdadc('0x117'),'foreignKey':_0xdadc('0x159'),'onDelete':_0xdadc('0x166')});db[_0xdadc('0x158')][_0xdadc('0x115')](db['MailApplication'],{'as':_0xdadc('0x1b7'),'foreignKey':'IntervalId'});db[_0xdadc('0x158')]['hasMany'](db['ChatApplication'],{'as':_0xdadc('0x1b8'),'foreignKey':_0xdadc('0x159')});db[_0xdadc('0x158')][_0xdadc('0x115')](db[_0xdadc('0x183')],{'as':_0xdadc('0x1b9'),'foreignKey':_0xdadc('0x159')});db['Interval']['hasMany'](db['SmsApplication'],{'as':_0xdadc('0x1ba'),'foreignKey':_0xdadc('0x159')});db[_0xdadc('0x84')][_0xdadc('0x157')](db[_0xdadc('0x140')],{});db[_0xdadc('0x84')][_0xdadc('0x157')](db[_0xdadc('0x96')],{'foreignKey':_0xdadc('0x1bb')});db[_0xdadc('0x84')][_0xdadc('0x157')](db['AnalyticCustomReport'],{'foreignKey':_0xdadc('0x1bc')});db[_0xdadc('0x86')][_0xdadc('0x122')](db[_0xdadc('0x14c')],{'as':_0xdadc('0x1bd'),'through':_0xdadc('0x14e'),'onDelete':'restrict'});db[_0xdadc('0x178')][_0xdadc('0x122')](db[_0xdadc('0x6b')],{'through':'cm_contact_has_tags'});db['Tag'][_0xdadc('0x122')](db['ChatInteraction'],{'through':_0xdadc('0x19b')});db['Tag'][_0xdadc('0x122')](db['MailInteraction'],{'through':_0xdadc('0x179')});db[_0xdadc('0x178')]['belongsToMany'](db['SmsInteraction'],{'through':'sms_interaction_has_tags'});db[_0xdadc('0x178')]['belongsToMany'](db[_0xdadc('0x49')],{'through':_0xdadc('0x187')});db[_0xdadc('0x178')][_0xdadc('0x122')](db[_0xdadc('0x12c')],{'through':'openchannel_interaction_has_tags'});db[_0xdadc('0x178')][_0xdadc('0x122')](db[_0xdadc('0x120')],{'through':_0xdadc('0x1be')});db[_0xdadc('0x8b')][_0xdadc('0x157')](db[_0xdadc('0x89')],{'as':_0xdadc('0x1bf'),'foreignKey':_0xdadc('0x1c0')});db[_0xdadc('0x1a7')][_0xdadc('0x157')](db[_0xdadc('0x6c')],{'as':'Hopper','foreignKey':_0xdadc('0x1a9')});db[_0xdadc('0x8b')][_0xdadc('0x157')](db[_0xdadc('0x6b')],{'as':_0xdadc('0x17c'),'foreignKey':'CmContactId'});db['Trigger'][_0xdadc('0x115')](db[_0xdadc('0x7c')],{'as':{'plural':_0xdadc('0x1c1'),'singular':'AllCondition'},'foreignKey':_0xdadc('0x1c2'),'onDelete':_0xdadc('0x110'),'hooks':!![]});db[_0xdadc('0x1c3')][_0xdadc('0x115')](db[_0xdadc('0x7c')],{'as':{'plural':_0xdadc('0x1c4'),'singular':_0xdadc('0x1c5')},'foreignKey':'TriggerAnyId','onDelete':_0xdadc('0x110'),'hooks':!![]});db[_0xdadc('0x1c3')][_0xdadc('0x115')](db[_0xdadc('0x77')],{'as':_0xdadc('0x1b3'),'foreignKey':'TriggerId','onDelete':'cascade','hooks':!![]});db[_0xdadc('0x1c6')][_0xdadc('0x115')](db[_0xdadc('0x1c7')],{'as':_0xdadc('0x1c8'),'onDelete':'cascade','foreignKey':_0xdadc('0x1bc'),'hooks':!![]});db[_0xdadc('0x96')]['hasMany'](db['AnalyticFieldReport'],{'as':'Fields','onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x1bb')});db[_0xdadc('0x1c9')][_0xdadc('0x115')](db['AnalyticFieldReport'],{'as':_0xdadc('0x1c8'),'onDelete':'cascade','foreignKey':_0xdadc('0x1ca')});db[_0xdadc('0x1c7')]['belongsTo'](db[_0xdadc('0x1c9')],{'foreignKey':'MetricId'});db[_0xdadc('0x1cb')][_0xdadc('0x115')](db[_0xdadc('0x9f')],{'as':_0xdadc('0x1cc'),'onDelete':'cascade','foreignKey':_0xdadc('0x1cd')});db[_0xdadc('0x9f')][_0xdadc('0x115')](db[_0xdadc('0x1ce')],{'as':_0xdadc('0x1cf'),'onDelete':'cascade','foreignKey':_0xdadc('0x1d0')});db['SalesforceConfiguration']['hasMany'](db[_0xdadc('0x1ce')],{'as':_0xdadc('0x1d1'),'onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x1d2')});db[_0xdadc('0x9f')]['hasMany'](db[_0xdadc('0x1ce')],{'as':'Fields','onDelete':'cascade','foreignKey':_0xdadc('0x1d3')});db[_0xdadc('0x9f')][_0xdadc('0x157')](db[_0xdadc('0x1cb')],{'as':_0xdadc('0x175'),'foreignKey':_0xdadc('0x1cd')});db[_0xdadc('0x1ce')]['hasMany'](db[_0xdadc('0x1ce')],{'as':_0xdadc('0x1d4'),'foreignKey':_0xdadc('0x1d0')});db[_0xdadc('0x1ce')][_0xdadc('0x115')](db[_0xdadc('0x1ce')],{'as':_0xdadc('0x1d5'),'foreignKey':_0xdadc('0x1d2')});db['SalesforceField'][_0xdadc('0x115')](db[_0xdadc('0x1ce')],{'as':_0xdadc('0x1d6'),'foreignKey':'FieldId'});db[_0xdadc('0x1ce')][_0xdadc('0x157')](db[_0xdadc('0x8f')],{'as':_0xdadc('0x8f'),'foreignKey':_0xdadc('0x1d7')});db['SugarcrmAccount']['hasMany'](db[_0xdadc('0xa2')],{'as':'Configurations','onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x1cd')});db[_0xdadc('0xa2')]['hasMany'](db[_0xdadc('0xa4')],{'as':_0xdadc('0x1cf'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0xdadc('0xa2')][_0xdadc('0x115')](db['SugarcrmField'],{'as':_0xdadc('0x1d1'),'onDelete':'cascade','foreignKey':_0xdadc('0x1d2')});db[_0xdadc('0xa2')][_0xdadc('0x115')](db[_0xdadc('0xa4')],{'as':_0xdadc('0x1c8'),'onDelete':'cascade','foreignKey':'FieldId'});db[_0xdadc('0xa2')][_0xdadc('0x157')](db['SugarcrmAccount'],{'as':'Account','foreignKey':_0xdadc('0x1cd')});db[_0xdadc('0xa4')][_0xdadc('0x115')](db[_0xdadc('0xa4')],{'as':'Subject','foreignKey':_0xdadc('0x1d0')});db['SugarcrmField'][_0xdadc('0x115')](db[_0xdadc('0xa4')],{'as':'Description','foreignKey':_0xdadc('0x1d2')});db[_0xdadc('0xa4')][_0xdadc('0x115')](db[_0xdadc('0xa4')],{'as':_0xdadc('0x1d6'),'foreignKey':'FieldId'});db[_0xdadc('0xa4')][_0xdadc('0x157')](db[_0xdadc('0x8f')],{'as':_0xdadc('0x8f'),'foreignKey':'VariableId'});db['DeskAccount'][_0xdadc('0x115')](db[_0xdadc('0x1d8')],{'as':_0xdadc('0x1cc'),'onDelete':'cascade','foreignKey':_0xdadc('0x1cd')});db['DeskConfiguration'][_0xdadc('0x115')](db[_0xdadc('0xa8')],{'as':_0xdadc('0x1cf'),'onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x1d0')});db[_0xdadc('0x1d8')]['hasMany'](db[_0xdadc('0xa8')],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0xdadc('0x1d2')});db[_0xdadc('0x1d8')][_0xdadc('0x115')](db[_0xdadc('0xa8')],{'as':'Fields','onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x1d3')});db[_0xdadc('0x1d8')][_0xdadc('0x157')](db['DeskAccount'],{'as':'Account','foreignKey':_0xdadc('0x1cd')});db[_0xdadc('0x1d8')]['belongsToMany'](db[_0xdadc('0x178')],{'through':_0xdadc('0x1d9')});db[_0xdadc('0xa8')][_0xdadc('0x115')](db[_0xdadc('0xa8')],{'as':'Subject','foreignKey':_0xdadc('0x1d0')});db['DeskField'][_0xdadc('0x115')](db['DeskField'],{'as':_0xdadc('0x1d5'),'foreignKey':_0xdadc('0x1d2')});db[_0xdadc('0xa8')]['hasMany'](db[_0xdadc('0xa8')],{'as':_0xdadc('0x1d6'),'foreignKey':_0xdadc('0x1d3')});db[_0xdadc('0xa8')][_0xdadc('0x157')](db[_0xdadc('0x8f')],{'as':'Variable','foreignKey':_0xdadc('0x1d7')});db[_0xdadc('0xa9')]['hasMany'](db['ZohoConfiguration'],{'as':_0xdadc('0x1cc'),'onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x1cd')});db[_0xdadc('0xab')]['hasMany'](db['ZohoField'],{'as':_0xdadc('0x1cf'),'onDelete':'cascade','foreignKey':_0xdadc('0x1d0')});db[_0xdadc('0xab')]['hasMany'](db[_0xdadc('0xad')],{'as':'Descriptions','onDelete':'cascade','foreignKey':'DescriptionId'});db[_0xdadc('0xab')][_0xdadc('0x115')](db[_0xdadc('0xad')],{'as':_0xdadc('0x1c8'),'onDelete':'cascade','foreignKey':_0xdadc('0x1d3')});db[_0xdadc('0xab')][_0xdadc('0x157')](db[_0xdadc('0xa9')],{'as':_0xdadc('0x175'),'foreignKey':_0xdadc('0x1cd')});db[_0xdadc('0xad')][_0xdadc('0x115')](db[_0xdadc('0xad')],{'as':_0xdadc('0x1d4'),'foreignKey':_0xdadc('0x1d0')});db[_0xdadc('0xad')][_0xdadc('0x115')](db[_0xdadc('0xad')],{'as':_0xdadc('0x1d5'),'foreignKey':_0xdadc('0x1d2')});db[_0xdadc('0xad')]['hasMany'](db[_0xdadc('0xad')],{'as':_0xdadc('0x1d6'),'foreignKey':'FieldId'});db['ZohoField'][_0xdadc('0x157')](db[_0xdadc('0x8f')],{'as':_0xdadc('0x8f'),'foreignKey':_0xdadc('0x1d7')});db[_0xdadc('0xaf')][_0xdadc('0x115')](db[_0xdadc('0xb1')],{'as':_0xdadc('0x1cc'),'onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x1cd')});db[_0xdadc('0xb1')][_0xdadc('0x115')](db[_0xdadc('0xb3')],{'as':_0xdadc('0x1cf'),'foreignKey':_0xdadc('0x1d0')});db[_0xdadc('0xb1')]['hasMany'](db[_0xdadc('0xb3')],{'as':'Descriptions','foreignKey':_0xdadc('0x1d2')});db[_0xdadc('0xb1')][_0xdadc('0x115')](db['ZendeskField'],{'as':_0xdadc('0x1c8'),'foreignKey':_0xdadc('0x1d3')});db['ZendeskConfiguration'][_0xdadc('0x157')](db[_0xdadc('0xaf')],{'as':_0xdadc('0x175'),'foreignKey':'AccountId'});db[_0xdadc('0xb1')][_0xdadc('0x122')](db['Tag'],{'through':_0xdadc('0x1da')});db[_0xdadc('0xb3')]['hasMany'](db[_0xdadc('0xb3')],{'as':_0xdadc('0x1d4'),'foreignKey':_0xdadc('0x1d0')});db['ZendeskField'][_0xdadc('0x115')](db[_0xdadc('0xb3')],{'as':_0xdadc('0x1d5'),'foreignKey':_0xdadc('0x1d2')});db[_0xdadc('0xb3')][_0xdadc('0x115')](db[_0xdadc('0xb3')],{'as':'Field','foreignKey':_0xdadc('0x1d3')});db[_0xdadc('0xb3')]['belongsTo'](db['Variable'],{'as':_0xdadc('0x8f'),'foreignKey':'VariableId'});db[_0xdadc('0xb5')][_0xdadc('0x115')](db[_0xdadc('0x1db')],{'as':_0xdadc('0x1cc'),'onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x1cd')});db['FreshdeskConfiguration'][_0xdadc('0x115')](db[_0xdadc('0xb8')],{'as':_0xdadc('0x1cf'),'onDelete':_0xdadc('0x110'),'foreignKey':'SubjectId'});db['FreshdeskConfiguration'][_0xdadc('0x115')](db['FreshdeskField'],{'as':_0xdadc('0x1d1'),'onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x1d2')});db['FreshdeskConfiguration'][_0xdadc('0x115')](db[_0xdadc('0xb8')],{'as':_0xdadc('0x1c8'),'onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x1d3')});db[_0xdadc('0x1db')][_0xdadc('0x157')](db[_0xdadc('0xb5')],{'as':'Account','foreignKey':'AccountId'});db[_0xdadc('0x1db')][_0xdadc('0x122')](db[_0xdadc('0x178')],{'through':_0xdadc('0x1dc')});db['FreshdeskField'][_0xdadc('0x115')](db[_0xdadc('0xb8')],{'as':_0xdadc('0x1d4'),'foreignKey':_0xdadc('0x1d0')});db[_0xdadc('0xb8')][_0xdadc('0x115')](db[_0xdadc('0xb8')],{'as':_0xdadc('0x1d5'),'foreignKey':'DescriptionId'});db['FreshdeskField'][_0xdadc('0x115')](db['FreshdeskField'],{'as':_0xdadc('0x1d6'),'foreignKey':_0xdadc('0x1d3')});db[_0xdadc('0xb8')][_0xdadc('0x157')](db[_0xdadc('0x8f')],{'as':_0xdadc('0x8f'),'foreignKey':_0xdadc('0x1d7')});db[_0xdadc('0xba')][_0xdadc('0x115')](db['VtigerConfiguration'],{'as':_0xdadc('0x1cc'),'onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x1cd')});db['VtigerConfiguration'][_0xdadc('0x115')](db['VtigerField'],{'as':_0xdadc('0x1cf'),'foreignKey':'SubjectId'});db[_0xdadc('0xbb')][_0xdadc('0x115')](db[_0xdadc('0xbd')],{'as':_0xdadc('0x1d1'),'foreignKey':_0xdadc('0x1d2')});db[_0xdadc('0xbb')]['hasMany'](db[_0xdadc('0xbd')],{'as':_0xdadc('0x1c8'),'foreignKey':_0xdadc('0x1d3')});db[_0xdadc('0xbb')]['belongsTo'](db[_0xdadc('0xba')],{'as':_0xdadc('0x175'),'foreignKey':'AccountId'});db[_0xdadc('0xbd')][_0xdadc('0x115')](db['VtigerField'],{'as':'Subject','foreignKey':'SubjectId'});db['VtigerField']['hasMany'](db['VtigerField'],{'as':_0xdadc('0x1d5'),'foreignKey':'DescriptionId'});db[_0xdadc('0xbd')][_0xdadc('0x115')](db[_0xdadc('0xbd')],{'as':_0xdadc('0x1d6'),'foreignKey':_0xdadc('0x1d3')});db[_0xdadc('0xbd')]['belongsTo'](db[_0xdadc('0x8f')],{'as':'Variable','foreignKey':_0xdadc('0x1d7')});db['ServicenowAccount']['hasMany'](db[_0xdadc('0x1dd')],{'as':_0xdadc('0x1cc'),'onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x1cd')});db[_0xdadc('0x1dd')]['hasMany'](db['ServicenowField'],{'as':_0xdadc('0x1cf'),'foreignKey':_0xdadc('0x1d0')});db[_0xdadc('0x1dd')][_0xdadc('0x115')](db[_0xdadc('0xc1')],{'as':_0xdadc('0x1d1'),'foreignKey':'DescriptionId'});db[_0xdadc('0x1dd')][_0xdadc('0x115')](db[_0xdadc('0xc1')],{'as':_0xdadc('0x1c8'),'foreignKey':_0xdadc('0x1d3')});db[_0xdadc('0x1dd')]['belongsTo'](db['ServicenowAccount'],{'as':_0xdadc('0x175'),'foreignKey':_0xdadc('0x1cd')});db[_0xdadc('0xc1')][_0xdadc('0x115')](db['ServicenowField'],{'as':_0xdadc('0x1d4'),'foreignKey':_0xdadc('0x1d0')});db[_0xdadc('0xc1')]['hasMany'](db['ServicenowField'],{'as':'Description','foreignKey':_0xdadc('0x1d2')});db[_0xdadc('0xc1')]['hasMany'](db[_0xdadc('0xc1')],{'as':'Field','foreignKey':'FieldId'});db[_0xdadc('0xc1')][_0xdadc('0x157')](db['Variable'],{'as':'Variable','foreignKey':_0xdadc('0x1d7')});db[_0xdadc('0xc3')][_0xdadc('0x115')](db[_0xdadc('0xc5')],{'as':'Configurations','onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x1cd')});db[_0xdadc('0xc3')][_0xdadc('0x157')](db[_0xdadc('0x106')],{'as':_0xdadc('0x106'),'foreignKey':_0xdadc('0x165')});db['Dynamics365Configuration'][_0xdadc('0x115')](db[_0xdadc('0x1de')],{'as':_0xdadc('0x1cf'),'onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x1d0')});db[_0xdadc('0xc5')][_0xdadc('0x115')](db[_0xdadc('0x1de')],{'as':_0xdadc('0x1d1'),'onDelete':'cascade','foreignKey':_0xdadc('0x1d2')});db['Dynamics365Configuration']['hasMany'](db[_0xdadc('0x1de')],{'as':_0xdadc('0x1c8'),'onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x1d3')});db[_0xdadc('0xc5')][_0xdadc('0x157')](db[_0xdadc('0xc3')],{'as':_0xdadc('0x175'),'foreignKey':_0xdadc('0x1cd')});db[_0xdadc('0x1de')][_0xdadc('0x115')](db[_0xdadc('0x1de')],{'as':_0xdadc('0x1d4'),'foreignKey':_0xdadc('0x1d0')});db[_0xdadc('0x1de')][_0xdadc('0x115')](db[_0xdadc('0x1de')],{'as':'Description','foreignKey':'DescriptionId'});db[_0xdadc('0x1de')][_0xdadc('0x115')](db[_0xdadc('0x1de')],{'as':_0xdadc('0x1d6'),'foreignKey':_0xdadc('0x1d3')});db[_0xdadc('0x1de')][_0xdadc('0x157')](db[_0xdadc('0x8f')],{'as':'Variable','foreignKey':_0xdadc('0x1d7')});db[_0xdadc('0xc6')][_0xdadc('0x115')](db[_0xdadc('0xc8')],{'as':_0xdadc('0x1cc'),'onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x1cd')});db['FreshsalesConfiguration'][_0xdadc('0x115')](db[_0xdadc('0xc9')],{'as':_0xdadc('0x1cf'),'foreignKey':_0xdadc('0x1d0')});db[_0xdadc('0xc8')][_0xdadc('0x115')](db['FreshsalesField'],{'as':_0xdadc('0x1d1'),'foreignKey':_0xdadc('0x1d2')});db[_0xdadc('0xc8')][_0xdadc('0x115')](db[_0xdadc('0xc9')],{'as':_0xdadc('0x1c8'),'foreignKey':'FieldId'});db[_0xdadc('0xc8')]['belongsTo'](db[_0xdadc('0xc6')],{'as':'Account','foreignKey':_0xdadc('0x1cd')});db[_0xdadc('0xc9')]['hasMany'](db[_0xdadc('0xc9')],{'as':_0xdadc('0x1d4'),'foreignKey':_0xdadc('0x1d0')});db[_0xdadc('0xc9')][_0xdadc('0x115')](db[_0xdadc('0xc9')],{'as':'Description','foreignKey':_0xdadc('0x1d2')});db[_0xdadc('0xc9')][_0xdadc('0x115')](db[_0xdadc('0xc9')],{'as':_0xdadc('0x1d6'),'foreignKey':_0xdadc('0x1d3')});db[_0xdadc('0xc9')][_0xdadc('0x157')](db[_0xdadc('0x8f')],{'as':'Variable','foreignKey':_0xdadc('0x1d7')});db['ChatQueueReport']['belongsTo'](db[_0xdadc('0x5c')],{});db[_0xdadc('0x1df')][_0xdadc('0x157')](db[_0xdadc('0xf3')],{'as':_0xdadc('0x16d'),'foreignKey':_0xdadc('0x16e')});db[_0xdadc('0x1df')][_0xdadc('0x157')](db[_0xdadc('0x6b')],{'as':_0xdadc('0x17c'),'foreignKey':'ContactId'});db[_0xdadc('0x1df')][_0xdadc('0x157')](db[_0xdadc('0x11b')],{});db[_0xdadc('0x1df')][_0xdadc('0x157')](db[_0xdadc('0x61')],{});db['ChatQueueReport'][_0xdadc('0x157')](db[_0xdadc('0x10e')],{});db[_0xdadc('0x1df')][_0xdadc('0x157')](db[_0xdadc('0x64')],{});db[_0xdadc('0xcd')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'onDelete':'cascade','foreignKey':'FromId'});db[_0xdadc('0xcd')]['belongsTo'](db['User'],{'onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x1e0')});db['JscriptySessionReport'][_0xdadc('0x115')](db[_0xdadc('0xd0')],{'foreignKey':_0xdadc('0x1e1'),'onDelete':_0xdadc('0x110')});db[_0xdadc('0xd2')][_0xdadc('0x115')](db[_0xdadc('0xce')],{'foreignKey':_0xdadc('0x1e1'),'onDelete':_0xdadc('0x110')});db['SmsQueueReport'][_0xdadc('0x157')](db['SmsAccount'],{});db[_0xdadc('0xd4')]['belongsTo'](db[_0xdadc('0xf3')],{'as':'List','foreignKey':'ListId'});db['SmsQueueReport']['belongsTo'](db[_0xdadc('0x6b')],{'as':_0xdadc('0x17c'),'foreignKey':_0xdadc('0x176')});db[_0xdadc('0xd4')][_0xdadc('0x157')](db[_0xdadc('0x52')],{});db[_0xdadc('0xd4')][_0xdadc('0x157')](db[_0xdadc('0x54')],{});db[_0xdadc('0xd4')]['belongsTo'](db[_0xdadc('0x10e')],{});db[_0xdadc('0xd4')][_0xdadc('0x157')](db[_0xdadc('0x56')],{});db[_0xdadc('0xd9')][_0xdadc('0x115')](db[_0xdadc('0xd2')],{'foreignKey':_0xdadc('0x1e2')});db[_0xdadc('0xd9')][_0xdadc('0x115')](db[_0xdadc('0xd0')],{'foreignKey':_0xdadc('0x1e2')});db['JscriptyProject']['hasMany'](db['JscriptyAnswerReport'],{'foreignKey':_0xdadc('0x1e2')});db[_0xdadc('0xdd')][_0xdadc('0x122')](db['User'],{'as':_0xdadc('0x17a'),'through':_0xdadc('0x1e3')});db[_0xdadc('0x127')][_0xdadc('0x122')](db[_0xdadc('0x10e')],{'as':_0xdadc('0x171'),'through':_0xdadc('0x128')});db[_0xdadc('0x127')][_0xdadc('0x122')](db[_0xdadc('0x130')],{'through':_0xdadc('0x107'),'as':_0xdadc('0x131')});db[_0xdadc('0x127')][_0xdadc('0x122')](db[_0xdadc('0x3c')],{'through':'team_has_mail_queues','as':_0xdadc('0x133')});db[_0xdadc('0x127')]['belongsToMany'](db[_0xdadc('0x64')],{'through':_0xdadc('0x19d'),'as':_0xdadc('0x134')});db['Team']['belongsToMany'](db['FaxQueue'],{'through':_0xdadc('0x1e4'),'as':_0xdadc('0x135')});db[_0xdadc('0x127')][_0xdadc('0x122')](db[_0xdadc('0x56')],{'through':_0xdadc('0x1e5'),'as':_0xdadc('0x1e6')});db[_0xdadc('0x127')][_0xdadc('0x122')](db[_0xdadc('0x137')],{'through':'team_has_openchannel_queues','as':'OpenchannelQueues'});db[_0xdadc('0x127')][_0xdadc('0x122')](db['WhatsappQueue'],{'through':'team_has_whatsapp_queues','as':'WhatsappQueues'});db[_0xdadc('0x127')][_0xdadc('0x122')](db[_0xdadc('0xf5')],{'through':_0xdadc('0x109'),'as':_0xdadc('0x132')});db[_0xdadc('0xe4')][_0xdadc('0x115')](db['CmHopper'],{'as':_0xdadc('0x151'),'foreignKey':_0xdadc('0x1aa')});db[_0xdadc('0xe4')][_0xdadc('0x115')](db[_0xdadc('0x70')],{'as':_0xdadc('0x118'),'foreignKey':_0xdadc('0x1aa')});db[_0xdadc('0xe4')][_0xdadc('0x115')](db['CmHopperHistory'],{'as':_0xdadc('0x1a2'),'foreignKey':_0xdadc('0x1aa')});db['Campaign'][_0xdadc('0x115')](db[_0xdadc('0x6e')],{'as':'HopperBlacks','foreignKey':_0xdadc('0x1aa')});db['Campaign'][_0xdadc('0x157')](db[_0xdadc('0x153')],{'as':'Trunk','foreignKey':_0xdadc('0x154')});db[_0xdadc('0xe4')][_0xdadc('0x157')](db['Trunk'],{'as':'TrunkBackup','foreignKey':_0xdadc('0x156')});db[_0xdadc('0xe4')][_0xdadc('0x157')](db['Interval'],{'as':_0xdadc('0x158'),'foreignKey':_0xdadc('0x159')});db['Campaign'][_0xdadc('0x157')](db['SquareProject'],{'as':'SquareProject','foreignKey':'SquareProjectId'});db['Campaign'][_0xdadc('0x122')](db[_0xdadc('0xf3')],{'as':'Lists','through':'campaigns_has_cm_lists'});db[_0xdadc('0xe4')][_0xdadc('0x122')](db[_0xdadc('0xf3')],{'as':_0xdadc('0x15d'),'through':_0xdadc('0x1e7')});db[_0xdadc('0xe7')][_0xdadc('0x157')](db['ChatOfflineMessage'],{'as':'ChatOfflineMessage','foreignKey':'ChatOfflineMessageId'});db['MailTransferReport'][_0xdadc('0x157')](db[_0xdadc('0x16a')],{});db[_0xdadc('0xea')][_0xdadc('0x157')](db[_0xdadc('0x3e')],{});db[_0xdadc('0xea')][_0xdadc('0x157')](db[_0xdadc('0x140')],{'foreignKey':_0xdadc('0x1e8'),'as':_0xdadc('0x1e9')});db[_0xdadc('0xea')]['belongsTo'](db[_0xdadc('0x10e')],{'foreignKey':'FromUserId','as':_0xdadc('0x1ea')});db[_0xdadc('0xea')][_0xdadc('0x157')](db['User'],{'foreignKey':_0xdadc('0x1eb'),'as':_0xdadc('0x1ec')});db[_0xdadc('0xea')][_0xdadc('0x157')](db[_0xdadc('0x3c')],{'foreignKey':'ToMailQueueId','as':_0xdadc('0x1ed')});db[_0xdadc('0xea')]['belongsTo'](db[_0xdadc('0x140')],{'foreignKey':_0xdadc('0x1ee'),'as':'ToAccount'});db[_0xdadc('0xeb')][_0xdadc('0x157')](db[_0xdadc('0x61')],{});db['ChatTransferReport'][_0xdadc('0x157')](db[_0xdadc('0x11b')],{});db[_0xdadc('0xeb')][_0xdadc('0x157')](db[_0xdadc('0x5c')],{'foreignKey':_0xdadc('0x1ef'),'as':_0xdadc('0x1e9')});db['ChatTransferReport'][_0xdadc('0x157')](db['User'],{'foreignKey':_0xdadc('0x1f0'),'as':_0xdadc('0x1ea')});db['ChatTransferReport'][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'foreignKey':_0xdadc('0x1eb'),'as':_0xdadc('0x1ec')});db['ChatTransferReport']['belongsTo'](db[_0xdadc('0x64')],{'foreignKey':_0xdadc('0x1f1'),'as':'ToQueue'});db['ChatTransferReport']['belongsTo'](db[_0xdadc('0x5c')],{'foreignKey':_0xdadc('0x1f2'),'as':'ToAccount'});db[_0xdadc('0xed')][_0xdadc('0x157')](db['FaxMessage'],{});db[_0xdadc('0xed')][_0xdadc('0x157')](db['FaxInteraction'],{});db['FaxTransferReport'][_0xdadc('0x157')](db[_0xdadc('0x47')],{'foreignKey':'FromFaxAccountId','as':_0xdadc('0x1e9')});db[_0xdadc('0xed')][_0xdadc('0x157')](db['User'],{'foreignKey':_0xdadc('0x1f0'),'as':_0xdadc('0x1ea')});db[_0xdadc('0xed')]['belongsTo'](db['User'],{'foreignKey':_0xdadc('0x1eb'),'as':_0xdadc('0x1ec')});db[_0xdadc('0xed')][_0xdadc('0x157')](db['FaxQueue'],{'foreignKey':_0xdadc('0x1f3'),'as':_0xdadc('0x1ed')});db['FaxTransferReport'][_0xdadc('0x157')](db[_0xdadc('0x47')],{'foreignKey':'ToFaxAccountId','as':'ToAccount'});db['OpenchannelTransferReport'][_0xdadc('0x157')](db[_0xdadc('0x5a')],{});db[_0xdadc('0xef')]['belongsTo'](db[_0xdadc('0x12c')],{});db['OpenchannelTransferReport']['belongsTo'](db[_0xdadc('0x143')],{'foreignKey':'FromOpenchannelAccountId','as':_0xdadc('0x1e9')});db[_0xdadc('0xef')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'foreignKey':_0xdadc('0x1f0'),'as':_0xdadc('0x1ea')});db[_0xdadc('0xef')][_0xdadc('0x157')](db['User'],{'foreignKey':_0xdadc('0x1eb'),'as':'ToAgent'});db[_0xdadc('0xef')]['belongsTo'](db['OpenchannelQueue'],{'foreignKey':_0xdadc('0x1f4'),'as':'ToQueue'});db[_0xdadc('0xef')][_0xdadc('0x157')](db[_0xdadc('0x143')],{'foreignKey':'ToOpenchannelAccountId','as':_0xdadc('0x1f5')});db[_0xdadc('0xf1')]['belongsTo'](db[_0xdadc('0x54')],{});db[_0xdadc('0xf1')][_0xdadc('0x157')](db[_0xdadc('0x52')],{});db[_0xdadc('0xf1')]['belongsTo'](db[_0xdadc('0x4f')],{'foreignKey':_0xdadc('0x1f6'),'as':_0xdadc('0x1e9')});db[_0xdadc('0xf1')]['belongsTo'](db['User'],{'foreignKey':_0xdadc('0x1f0'),'as':'FromAgent'});db[_0xdadc('0xf1')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'foreignKey':'ToUserId','as':_0xdadc('0x1ec')});db[_0xdadc('0xf1')][_0xdadc('0x157')](db['SmsQueue'],{'foreignKey':_0xdadc('0x1f7'),'as':_0xdadc('0x1ed')});db[_0xdadc('0xf1')][_0xdadc('0x157')](db[_0xdadc('0x4f')],{'foreignKey':_0xdadc('0x1f8'),'as':_0xdadc('0x1f5')});db[_0xdadc('0xf3')][_0xdadc('0x115')](db[_0xdadc('0x7b')],{'as':'Dispositions','foreignKey':_0xdadc('0x16e'),'onDelete':_0xdadc('0x110')});db['CmList'][_0xdadc('0x115')](db[_0xdadc('0x76')],{'as':'CustomFields','foreignKey':_0xdadc('0x16e')});db[_0xdadc('0xf3')][_0xdadc('0x115')](db[_0xdadc('0x6b')],{'as':_0xdadc('0x125'),'onDelete':_0xdadc('0x110'),'foreignKey':'ListId'});db[_0xdadc('0xf3')][_0xdadc('0x115')](db[_0xdadc('0x70')],{'as':'HopperFinals','foreignKey':_0xdadc('0x16e')});db[_0xdadc('0xf3')]['hasMany'](db[_0xdadc('0x72')],{'as':_0xdadc('0x119'),'foreignKey':_0xdadc('0x16e')});db[_0xdadc('0xf3')][_0xdadc('0x115')](db[_0xdadc('0x74')],{'as':'ReportAgentPreview','foreignKey':'ListId'});db[_0xdadc('0xf3')][_0xdadc('0x122')](db[_0xdadc('0x130')],{'as':_0xdadc('0x1f9'),'through':_0xdadc('0x15b')});db[_0xdadc('0xf3')][_0xdadc('0x122')](db[_0xdadc('0x10e')],{'as':'Agents','through':_0xdadc('0x13b')});db[_0xdadc('0xf5')]['hasMany'](db[_0xdadc('0x16')],{'as':_0xdadc('0x117'),'onDelete':_0xdadc('0x110')});db[_0xdadc('0xf5')][_0xdadc('0x122')](db[_0xdadc('0x10e')],{'as':'Agents','through':_0xdadc('0x10b')});db['VoicePrefix'][_0xdadc('0x122')](db[_0xdadc('0x127')],{'through':_0xdadc('0x109'),'as':'Teams'});db[_0xdadc('0xf6')]['hasMany'](db['User'],{'as':_0xdadc('0x17a'),'foreignKey':_0xdadc('0x121')});db['UserProfile'][_0xdadc('0x115')](db[_0xdadc('0x1fa')],{'as':'UserProfileSections','foreignKey':_0xdadc('0x121'),'onDelete':_0xdadc('0x110')});db[_0xdadc('0x1fa')][_0xdadc('0x115')](db['UserProfileResource'],{'as':'Resources','foreignKey':'sectionId','onDelete':_0xdadc('0x110')});db['WhatsappAccount']['hasMany'](db[_0xdadc('0x7b')],{'as':_0xdadc('0x168'),'foreignKey':_0xdadc('0x1fb'),'onDelete':_0xdadc('0x110')});db[_0xdadc('0xfb')][_0xdadc('0x115')](db[_0xdadc('0x79')],{'as':_0xdadc('0x169'),'foreignKey':_0xdadc('0x1fb')});db[_0xdadc('0xfb')]['hasMany'](db[_0xdadc('0xff')],{'as':'Messages','foreignKey':_0xdadc('0x1fb')});db[_0xdadc('0xfb')][_0xdadc('0x115')](db['WhatsappInteraction'],{'as':'Interactions'});db['WhatsappAccount']['hasMany'](db[_0xdadc('0xfd')],{'as':'Applications'});db[_0xdadc('0xfb')][_0xdadc('0x157')](db['CmList'],{'as':'List','foreignKey':_0xdadc('0x16e')});db[_0xdadc('0xfb')][_0xdadc('0x157')](db[_0xdadc('0x7f')],{'as':_0xdadc('0x15a'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xdadc('0xfb')][_0xdadc('0x122')](db['User'],{'as':_0xdadc('0x171'),'through':'user_has_whatsapp_accounts'});db[_0xdadc('0xfd')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'onDelete':_0xdadc('0x166')});db[_0xdadc('0xfd')][_0xdadc('0x157')](db['WhatsappQueue'],{'onDelete':_0xdadc('0x166')});db[_0xdadc('0xfd')]['belongsTo'](db[_0xdadc('0xfb')],{'onDelete':_0xdadc('0x166')});db[_0xdadc('0xfd')][_0xdadc('0x157')](db[_0xdadc('0x158')],{'onDelete':'restrict','foreignKey':_0xdadc('0x159')});db[_0xdadc('0xfd')][_0xdadc('0x157')](db[_0xdadc('0x178')],{'onDelete':_0xdadc('0x166'),'foreignKey':_0xdadc('0x17f')});db[_0xdadc('0x120')]['hasMany'](db[_0xdadc('0xff')],{'as':'Messages','onDelete':_0xdadc('0x110'),'foreignKey':_0xdadc('0x1fc')});db['WhatsappInteraction'][_0xdadc('0x157')](db[_0xdadc('0xfb')],{'as':'Account','foreignKey':_0xdadc('0x1fb')});db[_0xdadc('0x120')][_0xdadc('0x157')](db[_0xdadc('0x6b')],{'as':_0xdadc('0x17c'),'foreignKey':'ContactId'});db[_0xdadc('0x120')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'as':'Owner','foreignKey':'UserId'});db['WhatsappInteraction']['belongsToMany'](db[_0xdadc('0x178')],{'through':_0xdadc('0x1be'),'as':_0xdadc('0x188')});db[_0xdadc('0x120')]['belongsToMany'](db['Tag'],{'through':_0xdadc('0x1be'),'as':'ThroughTags'});db[_0xdadc('0x120')][_0xdadc('0x122')](db[_0xdadc('0x10e')],{'as':_0xdadc('0x17a'),'through':_0xdadc('0x12f'),'foreignKey':_0xdadc('0x1fc')});db[_0xdadc('0xff')]['belongsTo'](db[_0xdadc('0x10e')],{'as':_0xdadc('0x10e')});db[_0xdadc('0xff')][_0xdadc('0x157')](db[_0xdadc('0x6b')],{'onDelete':_0xdadc('0x110'),'as':_0xdadc('0x17c')});db[_0xdadc('0xff')][_0xdadc('0x157')](db[_0xdadc('0x120')],{'onDelete':_0xdadc('0x110'),'as':_0xdadc('0x17d'),'foreignKey':'WhatsappInteractionId'});db[_0xdadc('0xff')]['belongsTo'](db[_0xdadc('0xfb')],{'as':_0xdadc('0x175'),'foreignKey':_0xdadc('0x1fb')});db[_0xdadc('0x1fd')][_0xdadc('0x157')](db['WhatsappAccount'],{});db[_0xdadc('0x1fd')][_0xdadc('0x157')](db[_0xdadc('0xf3')],{'as':_0xdadc('0x16d'),'foreignKey':'ListId'});db[_0xdadc('0x1fd')]['belongsTo'](db[_0xdadc('0x6b')],{'as':_0xdadc('0x17c'),'foreignKey':'ContactId'});db[_0xdadc('0x1fd')]['belongsTo'](db[_0xdadc('0x120')],{});db['WhatsappQueueReport'][_0xdadc('0x157')](db[_0xdadc('0x104')],{});db[_0xdadc('0x1fd')][_0xdadc('0x157')](db['WhatsappMessage'],{});db[_0xdadc('0x1fd')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{});db['WhatsappTransferReport'][_0xdadc('0x157')](db['WhatsappMessage'],{});db['WhatsappTransferReport']['belongsTo'](db[_0xdadc('0x120')],{});db[_0xdadc('0x102')][_0xdadc('0x157')](db[_0xdadc('0xfb')],{'foreignKey':_0xdadc('0x1fe'),'as':_0xdadc('0x1e9')});db[_0xdadc('0x102')][_0xdadc('0x157')](db[_0xdadc('0xfb')],{'foreignKey':'ToWhatsappAccountId','as':_0xdadc('0x1f5')});db[_0xdadc('0x102')][_0xdadc('0x157')](db[_0xdadc('0x104')],{'foreignKey':_0xdadc('0x1ff'),'as':_0xdadc('0x1ed')});db[_0xdadc('0x102')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'foreignKey':_0xdadc('0x1f0'),'as':_0xdadc('0x1ea')});db[_0xdadc('0x102')][_0xdadc('0x157')](db[_0xdadc('0x10e')],{'foreignKey':_0xdadc('0x1eb'),'as':_0xdadc('0x1ec')});db['WhatsappQueue'][_0xdadc('0x122')](db['User'],{'as':_0xdadc('0x171'),'through':_0xdadc('0x36'),'foreignKey':_0xdadc('0x200')});db[_0xdadc('0x104')][_0xdadc('0x122')](db[_0xdadc('0x127')],{'through':_0xdadc('0x201'),'as':_0xdadc('0x15c')});db[_0xdadc('0x10c')][_0xdadc('0x157')](db['User'],{'as':_0xdadc('0x202'),'foreignKey':_0xdadc('0x111'),'onDelete':'cascade','hooks':!![]});db[_0xdadc('0x106')][_0xdadc('0x10f')](db['Dynamics365Account'],{'as':_0xdadc('0xc3'),'onDelete':_0xdadc('0x166')});db[_0xdadc('0x106')][_0xdadc('0x10f')](db['MailServerIn'],{'as':_0xdadc('0x203'),'onDelete':'restrict'});db[_0xdadc('0x106')][_0xdadc('0x10f')](db[_0xdadc('0x3a')],{'as':'Smtp','onDelete':_0xdadc('0x166')});module[_0xdadc('0x204')]={'db':db,'dbH':dbH};
\ No newline at end of file
index ee787b7..4bb250e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x271d=['/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','/api/square/reports','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','/api/square/projects','/api/square/recordings','./api/squareRecording','/api/teams','./api/team','./api/license','./api/campaign','/api/migrations','./api/attachment','/api/plugins','/api/mail/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','/api/userProfile/sections','./api/userProfileSection','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','/api/whatsapp/applications','./api/whatsappApplication','/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/cloudProvider','/api/realtime','./api/realtime','/api/user-settings','./api/user-setting','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','./api/authActiveDirectory','/api/jira','./api/jira','/api/rpc','./api/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/api/logs','/apidoc','static','join','root','/demo','/snippet','snippet','3.0.0','/plugins','/:url(api|auth|components|app|bower_components|assets)/*','get','route','sendFile','resolve','appPath','/index.html','path','express','./errors','./config/environment','./utils/client-side-logger','setupLoggers','./api/client-side-logs','default','then','/api/users','./api/user','use','/api/voice/chanspy','/api/voice/contexts','/api/voice/extensions','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','/api/voice/mails/messages','./api/voiceMailMessage','./api/voiceCallReport','/api/voice/dials/reports','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailAccount','/api/mail/substatuses','./api/mailSubstatus','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','./api/faxQueueReport','./api/smsAccount','/api/sms/applications','/api/sms/interactions','/api/sms/messages','./api/smsMessage','/api/sms/queues','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','/api/chat/groups','./api/chatGroup','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','/api/cm/custom_fields','./api/cmCustomField','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','/api/conditions','./api/condition','/api/intervals','/api/pauses','./api/pause','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','/api/sounds','./api/sound','/api/contact_item_types','./api/contactItemType','./api/cmContactHasItem','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','./api/template','/api/triggers','/api/variables','./api/variable','/api/integrations','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','./api/analyticExtractedReport','/api/analytics/metrics','/api/analytics/tree_reports','./api/analyticTreeReport','./api/intSalesforceAccount','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/fields','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/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/intFreshdeskField','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Field','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyQuestionReport'];(function(_0x225e24,_0x478574){var _0x526038=function(_0xfe2533){while(--_0xfe2533){_0x225e24['push'](_0x225e24['shift']());}};_0x526038(++_0x478574);}(_0x271d,0x173));var _0xd271=function(_0x512a1f,_0x413f16){_0x512a1f=_0x512a1f-0x0;var _0x2d242c=_0x271d[_0x512a1f];return _0x2d242c;};'use strict';var path=require(_0xd271('0x0'));var express=require(_0xd271('0x1'));var errors=require(_0xd271('0x2'));var config=require(_0xd271('0x3'));var setupLoggers=require(_0xd271('0x4'))[_0xd271('0x5')];var clientSideLogs=require(_0xd271('0x6'));exports[_0xd271('0x7')]=function(_0x447ee4){return setupLoggers(_0x447ee4)[_0xd271('0x8')](function(){_0x447ee4['use'](_0xd271('0x9'),require(_0xd271('0xa')));_0x447ee4[_0xd271('0xb')](_0xd271('0xc'),require('./api/voiceChanSpy'));_0x447ee4[_0xd271('0xb')](_0xd271('0xd'),require('./api/voiceContext'));_0x447ee4[_0xd271('0xb')](_0xd271('0xe'),require('./api/voiceExtension'));_0x447ee4[_0xd271('0xb')](_0xd271('0xf'),require(_0xd271('0x10')));_0x447ee4[_0xd271('0xb')](_0xd271('0x11'),require(_0xd271('0x12')));_0x447ee4[_0xd271('0xb')](_0xd271('0x13'),require(_0xd271('0x14')));_0x447ee4[_0xd271('0xb')](_0xd271('0x15'),require(_0xd271('0x16')));_0x447ee4[_0xd271('0xb')](_0xd271('0x17'),require('./api/voiceMail'));_0x447ee4['use'](_0xd271('0x18'),require(_0xd271('0x19')));_0x447ee4[_0xd271('0xb')]('/api/voice/calls/reports',require(_0xd271('0x1a')));_0x447ee4[_0xd271('0xb')](_0xd271('0x1b'),require('./api/voiceDialReport'));_0x447ee4[_0xd271('0xb')]('/api/voice/agents/reports',require('./api/voiceAgentReport'));_0x447ee4[_0xd271('0xb')](_0xd271('0x1c'),require(_0xd271('0x1d')));_0x447ee4['use'](_0xd271('0x1e'),require(_0xd271('0x1f')));_0x447ee4[_0xd271('0xb')](_0xd271('0x20'),require(_0xd271('0x21')));_0x447ee4[_0xd271('0xb')](_0xd271('0x22'),require(_0xd271('0x23')));_0x447ee4[_0xd271('0xb')](_0xd271('0x24'),require('./api/mailServerOut'));_0x447ee4[_0xd271('0xb')]('/api/mail/accounts',require(_0xd271('0x25')));_0x447ee4[_0xd271('0xb')]('/api/mail/queues',require('./api/mailQueue'));_0x447ee4[_0xd271('0xb')](_0xd271('0x26'),require(_0xd271('0x27')));_0x447ee4['use']('/api/mail/interactions',require(_0xd271('0x28')));_0x447ee4[_0xd271('0xb')](_0xd271('0x29'),require(_0xd271('0x2a')));_0x447ee4[_0xd271('0xb')](_0xd271('0x2b'),require(_0xd271('0x2c')));_0x447ee4[_0xd271('0xb')](_0xd271('0x2d'),require('./api/mailQueueReport'));_0x447ee4[_0xd271('0xb')]('/api/dashboards',require(_0xd271('0x2e')));_0x447ee4['use'](_0xd271('0x2f'),require(_0xd271('0x30')));_0x447ee4['use'](_0xd271('0x31'),require(_0xd271('0x32')));_0x447ee4['use'](_0xd271('0x33'),require('./api/faxApplication'));_0x447ee4[_0xd271('0xb')](_0xd271('0x34'),require(_0xd271('0x35')));_0x447ee4[_0xd271('0xb')](_0xd271('0x36'),require(_0xd271('0x37')));_0x447ee4[_0xd271('0xb')](_0xd271('0x38'),require(_0xd271('0x39')));_0x447ee4[_0xd271('0xb')]('/api/fax/reports/queue',require(_0xd271('0x3a')));_0x447ee4[_0xd271('0xb')]('/api/sms/accounts',require(_0xd271('0x3b')));_0x447ee4[_0xd271('0xb')](_0xd271('0x3c'),require('./api/smsApplication'));_0x447ee4[_0xd271('0xb')](_0xd271('0x3d'),require('./api/smsInteraction'));_0x447ee4['use'](_0xd271('0x3e'),require(_0xd271('0x3f')));_0x447ee4[_0xd271('0xb')](_0xd271('0x40'),require('./api/smsQueue'));_0x447ee4[_0xd271('0xb')](_0xd271('0x41'),require(_0xd271('0x42')));_0x447ee4['use'](_0xd271('0x43'),require(_0xd271('0x44')));_0x447ee4[_0xd271('0xb')](_0xd271('0x45'),require(_0xd271('0x46')));_0x447ee4[_0xd271('0xb')](_0xd271('0x47'),require(_0xd271('0x48')));_0x447ee4[_0xd271('0xb')](_0xd271('0x49'),require(_0xd271('0x4a')));_0x447ee4[_0xd271('0xb')](_0xd271('0x4b'),require(_0xd271('0x4c')));_0x447ee4[_0xd271('0xb')](_0xd271('0x4d'),require(_0xd271('0x4e')));_0x447ee4[_0xd271('0xb')](_0xd271('0x4f'),require('./api/chatApplication'));_0x447ee4['use']('/api/chat/interactions',require(_0xd271('0x50')));_0x447ee4['use'](_0xd271('0x51'),require(_0xd271('0x52')));_0x447ee4[_0xd271('0xb')](_0xd271('0x53'),require(_0xd271('0x54')));_0x447ee4[_0xd271('0xb')](_0xd271('0x55'),require('./api/chatQueue'));_0x447ee4[_0xd271('0xb')](_0xd271('0x56'),require(_0xd271('0x57')));_0x447ee4[_0xd271('0xb')]('/api/chat/proactive_actions',require('./api/chatProactiveAction'));_0x447ee4[_0xd271('0xb')](_0xd271('0x58'),require(_0xd271('0x59')));_0x447ee4[_0xd271('0xb')](_0xd271('0x5a'),require(_0xd271('0x5b')));_0x447ee4['use']('/api/cm/hopper',require('./api/cmHopper'));_0x447ee4[_0xd271('0xb')](_0xd271('0x5c'),require(_0xd271('0x5d')));_0x447ee4[_0xd271('0xb')](_0xd271('0x5e'),require(_0xd271('0x5f')));_0x447ee4[_0xd271('0xb')](_0xd271('0x60'),require('./api/cmHopperHistory'));_0x447ee4[_0xd271('0xb')](_0xd271('0x61'),require(_0xd271('0x62')));_0x447ee4[_0xd271('0xb')]('/api/actions',require(_0xd271('0x63')));_0x447ee4[_0xd271('0xb')](_0xd271('0x64'),require(_0xd271('0x65')));_0x447ee4[_0xd271('0xb')](_0xd271('0x66'),require(_0xd271('0x67')));_0x447ee4['use'](_0xd271('0x68'),require('./api/disposition'));_0x447ee4[_0xd271('0xb')](_0xd271('0x69'),require(_0xd271('0x6a')));_0x447ee4[_0xd271('0xb')](_0xd271('0x6b'),require('./api/interval'));_0x447ee4[_0xd271('0xb')](_0xd271('0x6c'),require(_0xd271('0x6d')));_0x447ee4[_0xd271('0xb')]('/api/cdr',require(_0xd271('0x6e')));_0x447ee4[_0xd271('0xb')](_0xd271('0x6f'),require(_0xd271('0x70')));_0x447ee4[_0xd271('0xb')](_0xd271('0x71'),require('./api/schedule'));_0x447ee4['use'](_0xd271('0x72'),require(_0xd271('0x73')));_0x447ee4[_0xd271('0xb')]('/api/tags',require('./api/tag'));_0x447ee4['use'](_0xd271('0x74'),require(_0xd271('0x75')));_0x447ee4[_0xd271('0xb')]('/api/cm_contact_has_items',require(_0xd271('0x76')));_0x447ee4[_0xd271('0xb')](_0xd271('0x77'),require(_0xd271('0x78')));_0x447ee4[_0xd271('0xb')]('/api/templates',require(_0xd271('0x79')));_0x447ee4['use'](_0xd271('0x7a'),require('./api/trigger'));_0x447ee4[_0xd271('0xb')](_0xd271('0x7b'),require(_0xd271('0x7c')));_0x447ee4[_0xd271('0xb')](_0xd271('0x7d'),require('./api/integration'));_0x447ee4[_0xd271('0xb')](_0xd271('0x7e'),require(_0xd271('0x7f')));_0x447ee4[_0xd271('0xb')](_0xd271('0x80'),require(_0xd271('0x81')));_0x447ee4[_0xd271('0xb')](_0xd271('0x82'),require(_0xd271('0x83')));_0x447ee4['use']('/api/analytics/extracted_reports',require(_0xd271('0x84')));_0x447ee4[_0xd271('0xb')](_0xd271('0x85'),require('./api/analyticMetric'));_0x447ee4[_0xd271('0xb')]('/api/analytics/field_reports',require('./api/analyticFieldReport'));_0x447ee4[_0xd271('0xb')](_0xd271('0x86'),require(_0xd271('0x87')));_0x447ee4[_0xd271('0xb')]('/api/integrations/salesforce/accounts',require(_0xd271('0x88')));_0x447ee4['use']('/api/integrations/salesforce/configurations',require('./api/intSalesforceConfiguration'));_0x447ee4[_0xd271('0xb')](_0xd271('0x89'),require(_0xd271('0x8a')));_0x447ee4['use'](_0xd271('0x8b'),require(_0xd271('0x8c')));_0x447ee4[_0xd271('0xb')](_0xd271('0x8d'),require(_0xd271('0x8e')));_0x447ee4[_0xd271('0xb')]('/api/integrations/sugarcrm/fields',require('./api/intSugarcrmField'));_0x447ee4['use'](_0xd271('0x8f'),require(_0xd271('0x90')));_0x447ee4[_0xd271('0xb')]('/api/integrations/desk/configurations',require('./api/intDeskConfiguration'));_0x447ee4[_0xd271('0xb')](_0xd271('0x91'),require('./api/intDeskField'));_0x447ee4[_0xd271('0xb')](_0xd271('0x92'),require(_0xd271('0x93')));_0x447ee4[_0xd271('0xb')](_0xd271('0x94'),require('./api/intZohoConfiguration'));_0x447ee4[_0xd271('0xb')]('/api/integrations/zoho/fields',require(_0xd271('0x95')));_0x447ee4['use'](_0xd271('0x96'),require(_0xd271('0x97')));_0x447ee4[_0xd271('0xb')](_0xd271('0x98'),require(_0xd271('0x99')));_0x447ee4['use'](_0xd271('0x9a'),require(_0xd271('0x9b')));_0x447ee4[_0xd271('0xb')](_0xd271('0x9c'),require(_0xd271('0x9d')));_0x447ee4[_0xd271('0xb')](_0xd271('0x9e'),require(_0xd271('0x9f')));_0x447ee4[_0xd271('0xb')](_0xd271('0xa0'),require(_0xd271('0xa1')));_0x447ee4[_0xd271('0xb')]('/api/integrations/vtiger/accounts',require(_0xd271('0xa2')));_0x447ee4[_0xd271('0xb')](_0xd271('0xa3'),require(_0xd271('0xa4')));_0x447ee4[_0xd271('0xb')](_0xd271('0xa5'),require(_0xd271('0xa6')));_0x447ee4['use'](_0xd271('0xa7'),require(_0xd271('0xa8')));_0x447ee4[_0xd271('0xb')](_0xd271('0xa9'),require(_0xd271('0xaa')));_0x447ee4[_0xd271('0xb')](_0xd271('0xab'),require(_0xd271('0xac')));_0x447ee4[_0xd271('0xb')](_0xd271('0xad'),require(_0xd271('0xae')));_0x447ee4[_0xd271('0xb')](_0xd271('0xaf'),require('./api/intDynamics365Configuration'));_0x447ee4[_0xd271('0xb')]('/api/integrations/dynamics365/fields',require(_0xd271('0xb0')));_0x447ee4[_0xd271('0xb')]('/api/integrations/freshsales/accounts',require(_0xd271('0xb1')));_0x447ee4['use'](_0xd271('0xb2'),require(_0xd271('0xb3')));_0x447ee4[_0xd271('0xb')](_0xd271('0xb4'),require(_0xd271('0xb5')));_0x447ee4[_0xd271('0xb')]('/api/networks',require(_0xd271('0xb6')));_0x447ee4[_0xd271('0xb')](_0xd271('0xb7'),require(_0xd271('0xb8')));_0x447ee4[_0xd271('0xb')](_0xd271('0xb9'),require(_0xd271('0xba')));_0x447ee4['use'](_0xd271('0xbb'),require('./api/jscriptyAnswerReport'));_0x447ee4[_0xd271('0xb')]('/api/jscripty/questions/reports',require(_0xd271('0xbc')));_0x447ee4[_0xd271('0xb')](_0xd271('0xbd'),require(_0xd271('0xbe')));_0x447ee4[_0xd271('0xb')](_0xd271('0xbf'),require('./api/smsQueueReport'));_0x447ee4['use'](_0xd271('0xc0'),require('./api/squareReport'));_0x447ee4['use'](_0xd271('0xc1'),require(_0xd271('0xc2')));_0x447ee4['use'](_0xd271('0xc3'),require(_0xd271('0xc4')));_0x447ee4['use'](_0xd271('0xc5'),require(_0xd271('0xc6')));_0x447ee4[_0xd271('0xb')](_0xd271('0xc7'),require('./api/squareOdbc'));_0x447ee4[_0xd271('0xb')](_0xd271('0xc8'),require('./api/squareProject'));_0x447ee4[_0xd271('0xb')](_0xd271('0xc9'),require(_0xd271('0xca')));_0x447ee4[_0xd271('0xb')]('/api/square/messages',require('./api/squareMessage'));_0x447ee4['use'](_0xd271('0xcb'),require(_0xd271('0xcc')));_0x447ee4[_0xd271('0xb')]('/api/license',require(_0xd271('0xcd')));_0x447ee4[_0xd271('0xb')]('/api/campaigns',require(_0xd271('0xce')));_0x447ee4[_0xd271('0xb')](_0xd271('0xcf'),require('./api/migration'));_0x447ee4[_0xd271('0xb')]('/api/attachments',require(_0xd271('0xd0')));_0x447ee4[_0xd271('0xb')](_0xd271('0xd1'),require('./api/plugin'));_0x447ee4['use'](_0xd271('0xd2'),require('./api/mailTransferReport'));_0x447ee4['use']('/api/chat/reports/transfer',require(_0xd271('0xd3')));_0x447ee4[_0xd271('0xb')](_0xd271('0xd4'),require(_0xd271('0xd5')));_0x447ee4[_0xd271('0xb')](_0xd271('0xd6'),require(_0xd271('0xd7')));_0x447ee4[_0xd271('0xb')](_0xd271('0xd8'),require(_0xd271('0xd9')));_0x447ee4[_0xd271('0xb')](_0xd271('0xda'),require('./api/cmList'));_0x447ee4[_0xd271('0xb')](_0xd271('0xdb'),require(_0xd271('0xdc')));_0x447ee4[_0xd271('0xb')](_0xd271('0xdd'),require('./api/userProfile'));_0x447ee4['use'](_0xd271('0xde'),require(_0xd271('0xdf')));_0x447ee4[_0xd271('0xb')]('/api/userProfile/resources',require(_0xd271('0xe0')));_0x447ee4[_0xd271('0xb')](_0xd271('0xe1'),require(_0xd271('0xe2')));_0x447ee4[_0xd271('0xb')](_0xd271('0xe3'),require('./api/whatsappAccount'));_0x447ee4['use'](_0xd271('0xe4'),require(_0xd271('0xe5')));_0x447ee4[_0xd271('0xb')](_0xd271('0xe6'),require(_0xd271('0xe7')));_0x447ee4['use'](_0xd271('0xe8'),require(_0xd271('0xe9')));_0x447ee4[_0xd271('0xb')](_0xd271('0xea'),require(_0xd271('0xeb')));_0x447ee4['use'](_0xd271('0xec'),require(_0xd271('0xed')));_0x447ee4[_0xd271('0xb')](_0xd271('0xee'),require(_0xd271('0xef')));_0x447ee4[_0xd271('0xb')](_0xd271('0xf0'),require(_0xd271('0xf1')));_0x447ee4['use'](_0xd271('0xf2'),require(_0xd271('0xf3')));_0x447ee4[_0xd271('0xb')](_0xd271('0xf4'),require(_0xd271('0xf5')));_0x447ee4[_0xd271('0xb')](_0xd271('0xf6'),require(_0xd271('0xf7')));_0x447ee4['use'](_0xd271('0xf8'),require(_0xd271('0xf9')));_0x447ee4[_0xd271('0xb')]('/api/auth/activedirectory',require(_0xd271('0xfa')));_0x447ee4[_0xd271('0xb')](_0xd271('0xfb'),require(_0xd271('0xfc')));_0x447ee4[_0xd271('0xb')](_0xd271('0xfd'),require(_0xd271('0xfe')));_0x447ee4['use'](_0xd271('0xff'),require(_0xd271('0x100')));_0x447ee4[_0xd271('0xb')](_0xd271('0x101'),require(_0xd271('0x102')));_0x447ee4[_0xd271('0xb')](_0xd271('0x103'),require(_0xd271('0x104')));_0x447ee4[_0xd271('0xb')](_0xd271('0x105'),require(_0xd271('0x106')));_0x447ee4[_0xd271('0xb')](_0xd271('0x107'),clientSideLogs);_0x447ee4[_0xd271('0xb')](_0xd271('0x108'),express[_0xd271('0x109')](path[_0xd271('0x10a')](config[_0xd271('0x10b')],'/apidoc')));_0x447ee4[_0xd271('0xb')]('/www',express[_0xd271('0x109')](path[_0xd271('0x10a')](config[_0xd271('0x10b')],'/www')));_0x447ee4[_0xd271('0xb')](_0xd271('0x10c'),express[_0xd271('0x109')](path[_0xd271('0x10a')](config[_0xd271('0x10b')],_0xd271('0x10c'))));_0x447ee4[_0xd271('0xb')](_0xd271('0x10d'),express['static'](path[_0xd271('0x10a')](config['root'],_0xd271('0x10e'),_0xd271('0x10f'))));_0x447ee4['use'](_0xd271('0x110'),express['static'](path[_0xd271('0x10a')](config[_0xd271('0x10b')],'/server/files/plugins')));_0x447ee4['route'](_0xd271('0x111'))[_0xd271('0x112')](errors[0x194]);_0x447ee4[_0xd271('0x113')]('/*')[_0xd271('0x112')](function(_0x502cc1,_0x54f67e){_0x54f67e[_0xd271('0x114')](path[_0xd271('0x115')](_0x447ee4['get'](_0xd271('0x116'))+_0xd271('0x117')));});return _0x447ee4;});};
\ No newline at end of file
+var _0x0546=['/api/chat/internal/messages','./api/chatInternalMessage','./api/jscriptySessionReport','./api/smsQueueReport','/api/square/reports','/api/square/details/reports','/api/jscripty/projects','./api/setting','./api/squareOdbc','/api/square/projects','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','./api/campaign','/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/openchannelTransferReport','./api/smsTransferReport','/api/cm/lists','./api/cmList','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappMessage','/api/whatsapp/reports/queue','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','./api/user-setting','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','./api/jira','/api/rpc','./api/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','/api/webbar','./api/webbar','/apidoc','static','join','root','/www','/snippet','snippet','/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','path','express','./errors','setupLoggers','./api/client-side-logs','default','then','use','/api/users','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','/api/voice/extensions','/api/voice/mohs','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','./api/voiceAgentReport','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','/api/mail/accounts','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','./api/dashboardItem','./api/faxAccount','/api/fax/applications','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','./api/smsAccount','/api/sms/applications','./api/smsInteraction','/api/sms/messages','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','/api/chat/applications','/api/chat/interactions','/api/chat/messages','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','/api/cm/custom_fields','/api/actions','./api/action','/api/automations','./api/automation','./api/cannedAnswer','/api/dispositions','./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/sound','/api/tags','./api/tag','/api/contact_item_types','./api/contactItemType','/api/cm_contact_has_items','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','/api/templates','./api/trigger','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','/api/integrations/salesforce/accounts','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','./api/intDeskConfiguration','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskConfiguration','./api/intFreshdeskField','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','./api/network','./api/chatQueueReport'];(function(_0x1ef9db,_0x2cc630){var _0x430f72=function(_0x450242){while(--_0x450242){_0x1ef9db['push'](_0x1ef9db['shift']());}};_0x430f72(++_0x2cc630);}(_0x0546,0x16b));var _0x6054=function(_0x4147ff,_0x154530){_0x4147ff=_0x4147ff-0x0;var _0x1e71e6=_0x0546[_0x4147ff];return _0x1e71e6;};'use strict';var path=require(_0x6054('0x0'));var express=require(_0x6054('0x1'));var errors=require(_0x6054('0x2'));var config=require('./config/environment');var setupLoggers=require('./utils/client-side-logger')[_0x6054('0x3')];var clientSideLogs=require(_0x6054('0x4'));exports[_0x6054('0x5')]=function(_0x4c391b){return setupLoggers(_0x4c391b)[_0x6054('0x6')](function(){_0x4c391b[_0x6054('0x7')](_0x6054('0x8'),require('./api/user'));_0x4c391b['use'](_0x6054('0x9'),require(_0x6054('0xa')));_0x4c391b['use'](_0x6054('0xb'),require('./api/voiceContext'));_0x4c391b[_0x6054('0x7')](_0x6054('0xc'),require('./api/voiceExtension'));_0x4c391b[_0x6054('0x7')](_0x6054('0xd'),require('./api/voiceMusicOnHold'));_0x4c391b[_0x6054('0x7')](_0x6054('0xe'),require(_0x6054('0xf')));_0x4c391b[_0x6054('0x7')](_0x6054('0x10'),require(_0x6054('0x11')));_0x4c391b[_0x6054('0x7')](_0x6054('0x12'),require(_0x6054('0x13')));_0x4c391b['use'](_0x6054('0x14'),require(_0x6054('0x15')));_0x4c391b[_0x6054('0x7')](_0x6054('0x16'),require('./api/voiceMailMessage'));_0x4c391b[_0x6054('0x7')](_0x6054('0x17'),require(_0x6054('0x18')));_0x4c391b[_0x6054('0x7')](_0x6054('0x19'),require(_0x6054('0x1a')));_0x4c391b['use']('/api/voice/agents/reports',require(_0x6054('0x1b')));_0x4c391b[_0x6054('0x7')]('/api/voice/queues/reports',require(_0x6054('0x1c')));_0x4c391b[_0x6054('0x7')](_0x6054('0x1d'),require(_0x6054('0x1e')));_0x4c391b[_0x6054('0x7')](_0x6054('0x1f'),require(_0x6054('0x20')));_0x4c391b[_0x6054('0x7')](_0x6054('0x21'),require(_0x6054('0x22')));_0x4c391b[_0x6054('0x7')](_0x6054('0x23'),require('./api/mailServerOut'));_0x4c391b[_0x6054('0x7')](_0x6054('0x24'),require('./api/mailAccount'));_0x4c391b['use']('/api/mail/queues',require('./api/mailQueue'));_0x4c391b[_0x6054('0x7')](_0x6054('0x25'),require(_0x6054('0x26')));_0x4c391b[_0x6054('0x7')](_0x6054('0x27'),require(_0x6054('0x28')));_0x4c391b[_0x6054('0x7')](_0x6054('0x29'),require(_0x6054('0x2a')));_0x4c391b[_0x6054('0x7')]('/api/mail/applications',require(_0x6054('0x2b')));_0x4c391b[_0x6054('0x7')](_0x6054('0x2c'),require(_0x6054('0x2d')));_0x4c391b['use']('/api/dashboards',require('./api/dashboard'));_0x4c391b[_0x6054('0x7')]('/api/dashboards/items',require(_0x6054('0x2e')));_0x4c391b[_0x6054('0x7')]('/api/fax/accounts',require(_0x6054('0x2f')));_0x4c391b[_0x6054('0x7')](_0x6054('0x30'),require('./api/faxApplication'));_0x4c391b['use'](_0x6054('0x31'),require(_0x6054('0x32')));_0x4c391b[_0x6054('0x7')](_0x6054('0x33'),require('./api/faxMessage'));_0x4c391b['use'](_0x6054('0x34'),require(_0x6054('0x35')));_0x4c391b['use'](_0x6054('0x36'),require(_0x6054('0x37')));_0x4c391b[_0x6054('0x7')]('/api/sms/accounts',require(_0x6054('0x38')));_0x4c391b[_0x6054('0x7')](_0x6054('0x39'),require('./api/smsApplication'));_0x4c391b['use']('/api/sms/interactions',require(_0x6054('0x3a')));_0x4c391b[_0x6054('0x7')](_0x6054('0x3b'),require('./api/smsMessage'));_0x4c391b[_0x6054('0x7')](_0x6054('0x3c'),require(_0x6054('0x3d')));_0x4c391b[_0x6054('0x7')](_0x6054('0x3e'),require('./api/openchannelAccount'));_0x4c391b[_0x6054('0x7')](_0x6054('0x3f'),require(_0x6054('0x40')));_0x4c391b[_0x6054('0x7')](_0x6054('0x41'),require(_0x6054('0x42')));_0x4c391b[_0x6054('0x7')]('/api/openchannel/messages',require('./api/openchannelMessage'));_0x4c391b[_0x6054('0x7')]('/api/openchannel/queues',require(_0x6054('0x43')));_0x4c391b['use'](_0x6054('0x44'),require(_0x6054('0x45')));_0x4c391b[_0x6054('0x7')](_0x6054('0x46'),require('./api/openchannelQueueReport'));_0x4c391b[_0x6054('0x7')](_0x6054('0x47'),require('./api/chatApplication'));_0x4c391b[_0x6054('0x7')](_0x6054('0x48'),require('./api/chatInteraction'));_0x4c391b[_0x6054('0x7')](_0x6054('0x49'),require('./api/chatMessage'));_0x4c391b[_0x6054('0x7')](_0x6054('0x4a'),require(_0x6054('0x4b')));_0x4c391b[_0x6054('0x7')](_0x6054('0x4c'),require(_0x6054('0x4d')));_0x4c391b[_0x6054('0x7')](_0x6054('0x4e'),require(_0x6054('0x4f')));_0x4c391b['use'](_0x6054('0x50'),require('./api/chatProactiveAction'));_0x4c391b[_0x6054('0x7')](_0x6054('0x51'),require(_0x6054('0x52')));_0x4c391b['use'](_0x6054('0x53'),require(_0x6054('0x54')));_0x4c391b['use']('/api/cm/hopper',require(_0x6054('0x55')));_0x4c391b[_0x6054('0x7')](_0x6054('0x56'),require(_0x6054('0x57')));_0x4c391b[_0x6054('0x7')](_0x6054('0x58'),require(_0x6054('0x59')));_0x4c391b['use'](_0x6054('0x5a'),require('./api/cmHopperHistory'));_0x4c391b[_0x6054('0x7')](_0x6054('0x5b'),require('./api/cmCustomField'));_0x4c391b[_0x6054('0x7')](_0x6054('0x5c'),require(_0x6054('0x5d')));_0x4c391b[_0x6054('0x7')](_0x6054('0x5e'),require(_0x6054('0x5f')));_0x4c391b[_0x6054('0x7')]('/api/canned_answers',require(_0x6054('0x60')));_0x4c391b[_0x6054('0x7')](_0x6054('0x61'),require(_0x6054('0x62')));_0x4c391b[_0x6054('0x7')](_0x6054('0x63'),require(_0x6054('0x64')));_0x4c391b[_0x6054('0x7')](_0x6054('0x65'),require(_0x6054('0x66')));_0x4c391b['use'](_0x6054('0x67'),require(_0x6054('0x68')));_0x4c391b['use'](_0x6054('0x69'),require(_0x6054('0x6a')));_0x4c391b[_0x6054('0x7')](_0x6054('0x6b'),require(_0x6054('0x6c')));_0x4c391b[_0x6054('0x7')](_0x6054('0x6d'),require(_0x6054('0x6e')));_0x4c391b[_0x6054('0x7')](_0x6054('0x6f'),require(_0x6054('0x70')));_0x4c391b['use'](_0x6054('0x71'),require(_0x6054('0x72')));_0x4c391b['use'](_0x6054('0x73'),require(_0x6054('0x74')));_0x4c391b[_0x6054('0x7')](_0x6054('0x75'),require('./api/cmContactHasItem'));_0x4c391b['use'](_0x6054('0x76'),require(_0x6054('0x77')));_0x4c391b[_0x6054('0x7')](_0x6054('0x78'),require('./api/template'));_0x4c391b[_0x6054('0x7')]('/api/triggers',require(_0x6054('0x79')));_0x4c391b[_0x6054('0x7')]('/api/variables',require(_0x6054('0x7a')));_0x4c391b[_0x6054('0x7')](_0x6054('0x7b'),require(_0x6054('0x7c')));_0x4c391b[_0x6054('0x7')](_0x6054('0x7d'),require(_0x6054('0x7e')));_0x4c391b[_0x6054('0x7')](_0x6054('0x7f'),require('./api/analyticCustomReport'));_0x4c391b[_0x6054('0x7')](_0x6054('0x80'),require(_0x6054('0x81')));_0x4c391b[_0x6054('0x7')](_0x6054('0x82'),require(_0x6054('0x83')));_0x4c391b[_0x6054('0x7')](_0x6054('0x84'),require('./api/analyticMetric'));_0x4c391b[_0x6054('0x7')](_0x6054('0x85'),require(_0x6054('0x86')));_0x4c391b[_0x6054('0x7')](_0x6054('0x87'),require('./api/analyticTreeReport'));_0x4c391b[_0x6054('0x7')](_0x6054('0x88'),require('./api/intSalesforceAccount'));_0x4c391b['use'](_0x6054('0x89'),require(_0x6054('0x8a')));_0x4c391b['use'](_0x6054('0x8b'),require('./api/intSalesforceField'));_0x4c391b['use'](_0x6054('0x8c'),require(_0x6054('0x8d')));_0x4c391b['use']('/api/integrations/sugarcrm/configurations',require(_0x6054('0x8e')));_0x4c391b[_0x6054('0x7')](_0x6054('0x8f'),require(_0x6054('0x90')));_0x4c391b[_0x6054('0x7')](_0x6054('0x91'),require(_0x6054('0x92')));_0x4c391b[_0x6054('0x7')]('/api/integrations/desk/configurations',require(_0x6054('0x93')));_0x4c391b[_0x6054('0x7')]('/api/integrations/desk/fields',require('./api/intDeskField'));_0x4c391b[_0x6054('0x7')](_0x6054('0x94'),require(_0x6054('0x95')));_0x4c391b[_0x6054('0x7')](_0x6054('0x96'),require(_0x6054('0x97')));_0x4c391b[_0x6054('0x7')](_0x6054('0x98'),require('./api/intZohoField'));_0x4c391b['use'](_0x6054('0x99'),require(_0x6054('0x9a')));_0x4c391b[_0x6054('0x7')](_0x6054('0x9b'),require(_0x6054('0x9c')));_0x4c391b[_0x6054('0x7')](_0x6054('0x9d'),require(_0x6054('0x9e')));_0x4c391b[_0x6054('0x7')](_0x6054('0x9f'),require('./api/intFreshdeskAccount'));_0x4c391b[_0x6054('0x7')]('/api/integrations/freshdesk/configurations',require(_0x6054('0xa0')));_0x4c391b[_0x6054('0x7')]('/api/integrations/freshdesk/fields',require(_0x6054('0xa1')));_0x4c391b[_0x6054('0x7')]('/api/integrations/vtiger/accounts',require(_0x6054('0xa2')));_0x4c391b['use'](_0x6054('0xa3'),require(_0x6054('0xa4')));_0x4c391b['use'](_0x6054('0xa5'),require(_0x6054('0xa6')));_0x4c391b['use']('/api/integrations/servicenow/accounts',require(_0x6054('0xa7')));_0x4c391b[_0x6054('0x7')](_0x6054('0xa8'),require(_0x6054('0xa9')));_0x4c391b[_0x6054('0x7')](_0x6054('0xaa'),require(_0x6054('0xab')));_0x4c391b['use'](_0x6054('0xac'),require(_0x6054('0xad')));_0x4c391b[_0x6054('0x7')](_0x6054('0xae'),require(_0x6054('0xaf')));_0x4c391b[_0x6054('0x7')]('/api/integrations/dynamics365/fields',require(_0x6054('0xb0')));_0x4c391b['use'](_0x6054('0xb1'),require(_0x6054('0xb2')));_0x4c391b['use'](_0x6054('0xb3'),require('./api/intFreshsalesConfiguration'));_0x4c391b[_0x6054('0x7')](_0x6054('0xb4'),require(_0x6054('0xb5')));_0x4c391b[_0x6054('0x7')](_0x6054('0xb6'),require(_0x6054('0xb7')));_0x4c391b['use']('/api/chat/reports/queue',require(_0x6054('0xb8')));_0x4c391b[_0x6054('0x7')](_0x6054('0xb9'),require(_0x6054('0xba')));_0x4c391b['use']('/api/jscripty/answers/reports',require('./api/jscriptyAnswerReport'));_0x4c391b[_0x6054('0x7')]('/api/jscripty/questions/reports',require('./api/jscriptyQuestionReport'));_0x4c391b['use']('/api/jscripty/sessions/reports',require(_0x6054('0xbb')));_0x4c391b[_0x6054('0x7')]('/api/sms/reports/queue',require(_0x6054('0xbc')));_0x4c391b['use'](_0x6054('0xbd'),require('./api/squareReport'));_0x4c391b['use'](_0x6054('0xbe'),require('./api/squareReportDetail'));_0x4c391b[_0x6054('0x7')](_0x6054('0xbf'),require('./api/jscriptyProject'));_0x4c391b['use']('/api/settings',require(_0x6054('0xc0')));_0x4c391b[_0x6054('0x7')]('/api/square/odbc',require(_0x6054('0xc1')));_0x4c391b['use'](_0x6054('0xc2'),require('./api/squareProject'));_0x4c391b['use'](_0x6054('0xc3'),require(_0x6054('0xc4')));_0x4c391b[_0x6054('0x7')](_0x6054('0xc5'),require(_0x6054('0xc6')));_0x4c391b[_0x6054('0x7')](_0x6054('0xc7'),require(_0x6054('0xc8')));_0x4c391b['use'](_0x6054('0xc9'),require(_0x6054('0xca')));_0x4c391b[_0x6054('0x7')](_0x6054('0xcb'),require(_0x6054('0xcc')));_0x4c391b[_0x6054('0x7')]('/api/migrations',require('./api/migration'));_0x4c391b[_0x6054('0x7')](_0x6054('0xcd'),require(_0x6054('0xce')));_0x4c391b[_0x6054('0x7')](_0x6054('0xcf'),require(_0x6054('0xd0')));_0x4c391b[_0x6054('0x7')](_0x6054('0xd1'),require(_0x6054('0xd2')));_0x4c391b[_0x6054('0x7')](_0x6054('0xd3'),require(_0x6054('0xd4')));_0x4c391b[_0x6054('0x7')](_0x6054('0xd5'),require(_0x6054('0xd6')));_0x4c391b['use'](_0x6054('0xd7'),require(_0x6054('0xd8')));_0x4c391b['use']('/api/sms/reports/transfer',require(_0x6054('0xd9')));_0x4c391b[_0x6054('0x7')](_0x6054('0xda'),require(_0x6054('0xdb')));_0x4c391b[_0x6054('0x7')]('/api/voice/prefixes',require(_0x6054('0xdc')));_0x4c391b[_0x6054('0x7')](_0x6054('0xdd'),require(_0x6054('0xde')));_0x4c391b[_0x6054('0x7')](_0x6054('0xdf'),require('./api/userProfileSection'));_0x4c391b[_0x6054('0x7')](_0x6054('0xe0'),require(_0x6054('0xe1')));_0x4c391b[_0x6054('0x7')](_0x6054('0xe2'),require(_0x6054('0xe3')));_0x4c391b[_0x6054('0x7')](_0x6054('0xe4'),require(_0x6054('0xe5')));_0x4c391b[_0x6054('0x7')](_0x6054('0xe6'),require(_0x6054('0xe7')));_0x4c391b[_0x6054('0x7')](_0x6054('0xe8'),require('./api/whatsappInteraction'));_0x4c391b[_0x6054('0x7')]('/api/whatsapp/messages',require(_0x6054('0xe9')));_0x4c391b[_0x6054('0x7')](_0x6054('0xea'),require('./api/whatsappQueueReport'));_0x4c391b[_0x6054('0x7')](_0x6054('0xeb'),require(_0x6054('0xec')));_0x4c391b[_0x6054('0x7')]('/api/whatsapp/queues',require(_0x6054('0xed')));_0x4c391b[_0x6054('0x7')](_0x6054('0xee'),require(_0x6054('0xef')));_0x4c391b[_0x6054('0x7')](_0x6054('0xf0'),require(_0x6054('0xf1')));_0x4c391b[_0x6054('0x7')]('/api/user-settings',require(_0x6054('0xf2')));_0x4c391b[_0x6054('0x7')](_0x6054('0xf3'),require(_0x6054('0xf4')));_0x4c391b[_0x6054('0x7')](_0x6054('0xf5'),require(_0x6054('0xf6')));_0x4c391b[_0x6054('0x7')](_0x6054('0xf7'),require(_0x6054('0xf8')));_0x4c391b[_0x6054('0x7')]('/api/jira',require(_0x6054('0xf9')));_0x4c391b['use'](_0x6054('0xfa'),require(_0x6054('0xfb')));_0x4c391b[_0x6054('0x7')](_0x6054('0xfc'),require(_0x6054('0xfd')));_0x4c391b['use'](_0x6054('0xfe'),require(_0x6054('0xff')));_0x4c391b['use'](_0x6054('0x100'),require('./api/pm2'));_0x4c391b[_0x6054('0x7')](_0x6054('0x101'),require(_0x6054('0x102')));_0x4c391b[_0x6054('0x7')]('/api/logs',clientSideLogs);_0x4c391b['use'](_0x6054('0x103'),express[_0x6054('0x104')](path[_0x6054('0x105')](config[_0x6054('0x106')],_0x6054('0x103'))));_0x4c391b['use'](_0x6054('0x107'),express[_0x6054('0x104')](path[_0x6054('0x105')](config[_0x6054('0x106')],_0x6054('0x107'))));_0x4c391b['use']('/demo',express[_0x6054('0x104')](path[_0x6054('0x105')](config[_0x6054('0x106')],'/demo')));_0x4c391b['use'](_0x6054('0x108'),express['static'](path[_0x6054('0x105')](config[_0x6054('0x106')],_0x6054('0x109'),'3.0.0')));_0x4c391b[_0x6054('0x7')](_0x6054('0x10a'),express[_0x6054('0x104')](path[_0x6054('0x105')](config[_0x6054('0x106')],'/server/files/plugins')));_0x4c391b[_0x6054('0x10b')](_0x6054('0x10c'))[_0x6054('0x10d')](errors[0x194]);_0x4c391b[_0x6054('0x10b')]('/*')[_0x6054('0x10d')](function(_0x3a5e80,_0x4b77ca){_0x4b77ca[_0x6054('0x10e')](path[_0x6054('0x10f')](_0x4c391b['get'](_0x6054('0x110'))+_0x6054('0x111')));});return _0x4c391b;});};
\ No newline at end of file
index 2f9f730..27bb9ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c71=['../api/squareReport/squareReport.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','port','localhost','error','log','../config/triggers','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/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailQueue/mailQueue.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/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/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc'];(function(_0x43f881,_0xd6e5a2){var _0x365c14=function(_0x50d386){while(--_0x50d386){_0x43f881['push'](_0x43f881['shift']());}};_0x365c14(++_0xd6e5a2);}(_0x5c71,0x1e5));var _0x15c7=function(_0x464468,_0xd3cd98){_0x464468=_0x464468-0x0;var _0x39f45b=_0x5c71[_0x464468];return _0x39f45b;};'use strict';var jayson=require(_0x15c7('0x0'));var _=require(_0x15c7('0x1'));var config=require(_0x15c7('0x2'));exports[_0x15c7('0x3')]=function(){return new Promise(function(_0x291f88,_0x3918a4){var _0x15ac77={};_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x5')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x6')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x7')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x8')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x9')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0xa')));_0x15ac77=_['merge'](_0x15ac77,require(_0x15c7('0xb')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0xc')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require('../api/trunk/trunk.rpc'));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0xd')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0xe')));_0x15ac77=_['merge'](_0x15ac77,require(_0x15c7('0xf')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require('../api/mailAccount/mailAccount.rpc'));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x10')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require('../api/mailInteraction/mailInteraction.rpc'));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x11')));_0x15ac77=_['merge'](_0x15ac77,require(_0x15c7('0x12')));_0x15ac77=_['merge'](_0x15ac77,require(_0x15c7('0x13')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require('../api/faxAccount/faxAccount.rpc'));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x14')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x15')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require('../api/faxMessage/faxMessage.rpc'));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x16')));_0x15ac77=_['merge'](_0x15ac77,require(_0x15c7('0x17')));_0x15ac77=_['merge'](_0x15ac77,require(_0x15c7('0x18')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require('../api/smsInteraction/smsInteraction.rpc'));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require('../api/smsMessage/smsMessage.rpc'));_0x15ac77=_['merge'](_0x15ac77,require(_0x15c7('0x19')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x1a')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x1b')));_0x15ac77=_['merge'](_0x15ac77,require(_0x15c7('0x1c')));_0x15ac77=_['merge'](_0x15ac77,require(_0x15c7('0x1d')));_0x15ac77=_['merge'](_0x15ac77,require(_0x15c7('0x1e')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x1f')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x20')));_0x15ac77=_['merge'](_0x15ac77,require(_0x15c7('0x21')));_0x15ac77=_['merge'](_0x15ac77,require(_0x15c7('0x22')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x23')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require('../api/cmHopperBlack/cmHopperBlack.rpc'));_0x15ac77=_['merge'](_0x15ac77,require(_0x15c7('0x24')));_0x15ac77=_['merge'](_0x15ac77,require(_0x15c7('0x25')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x26')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x27')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x28')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require('../api/sound/sound.rpc'));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x29')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x2a')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x2b')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require('../api/variable/variable.rpc'));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x2c')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x2d')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x2e')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x2f')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x30')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require('../api/intFreshdeskAccount/intFreshdeskAccount.rpc'));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x31')));_0x15ac77=_['merge'](_0x15ac77,require('../api/intServicenowAccount/intServicenowAccount.rpc'));_0x15ac77=_['merge'](_0x15ac77,require(_0x15c7('0x32')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x33')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x34')));_0x15ac77=_['merge'](_0x15ac77,require(_0x15c7('0x35')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x36')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require('../api/squareReportDetail/squareReportDetail.rpc'));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x37')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x38')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x39')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x3a')));_0x15ac77=_['merge'](_0x15ac77,require(_0x15c7('0x3b')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x3c')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x3d')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x3e')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x3f')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x40')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x41')));_0x15ac77=_[_0x15c7('0x4')](_0x15ac77,require(_0x15c7('0x42')));_0x15ac77=_['merge'](_0x15ac77,require(_0x15c7('0x43')));var _0x441aa1=jayson[_0x15c7('0x44')](_0x15ac77)[_0x15c7('0x45')]();var _0x329a25=config[_0x15c7('0x46')][_0x15c7('0x47')]||config[_0x15c7('0x47')]+0x1;var _0x56f020=config[_0x15c7('0x46')]['ip']||_0x15c7('0x48');_0x441aa1['on'](_0x15c7('0x49'),function(_0x4b4ef0){return _0x3918a4(_0x4b4ef0);});_0x441aa1['listen'](_0x329a25,_0x56f020,function(){console[_0x15c7('0x4a')]('Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!',_0x56f020,_0x329a25);require(_0x15c7('0x4b'))['default']();return _0x291f88(_0x15c7('0x4c')+_0x56f020+':'+_0x329a25);});});};
\ No newline at end of file
+var _0x9256=['../api/mailQueue/mailQueue.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.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/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.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/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','http','rpc','port','error','log','../config/triggers','jayson/promise','lodash','../config/environment','listen','merge','../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/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailAccount/mailAccount.rpc'];(function(_0x5e52f5,_0x1e2674){var _0xfc3428=function(_0x4c1f46){while(--_0x4c1f46){_0x5e52f5['push'](_0x5e52f5['shift']());}};_0xfc3428(++_0x1e2674);}(_0x9256,0x128));var _0x6925=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9256[_0x3dd15e];return _0x231fd0;};'use strict';var jayson=require(_0x6925('0x0'));var _=require(_0x6925('0x1'));var config=require(_0x6925('0x2'));exports[_0x6925('0x3')]=function(){return new Promise(function(_0x2c3ed9,_0x121ae6){var _0x3757a0={};_0x3757a0=_['merge'](_0x3757a0,require('../api/user/user.rpc'));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require('../api/voiceExtension/voiceExtension.rpc'));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x5')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x6')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x7')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x8')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x9')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0xa')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0xb')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0xc')));_0x3757a0=_['merge'](_0x3757a0,require(_0x6925('0xd')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0xe')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require('../api/mailServerIn/mailServerIn.rpc'));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0xf')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x10')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x11')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x12')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x13')));_0x3757a0=_['merge'](_0x3757a0,require(_0x6925('0x14')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x15')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x16')));_0x3757a0=_['merge'](_0x3757a0,require(_0x6925('0x17')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x18')));_0x3757a0=_['merge'](_0x3757a0,require(_0x6925('0x19')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x1a')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x1b')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x1c')));_0x3757a0=_['merge'](_0x3757a0,require(_0x6925('0x1d')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x1e')));_0x3757a0=_['merge'](_0x3757a0,require(_0x6925('0x1f')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x20')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x21')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x22')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x23')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require('../api/chatInteraction/chatInteraction.rpc'));_0x3757a0=_['merge'](_0x3757a0,require(_0x6925('0x24')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x25')));_0x3757a0=_['merge'](_0x3757a0,require(_0x6925('0x26')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x27')));_0x3757a0=_['merge'](_0x3757a0,require('../api/cmHopperBlack/cmHopperBlack.rpc'));_0x3757a0=_['merge'](_0x3757a0,require(_0x6925('0x28')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x29')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require('../api/reportAgentPreview/reportAgentPreview.rpc'));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require('../api/interval/interval.rpc'));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x2a')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x2b')));_0x3757a0=_['merge'](_0x3757a0,require(_0x6925('0x2c')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x2d')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x2e')));_0x3757a0=_['merge'](_0x3757a0,require(_0x6925('0x2f')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x30')));_0x3757a0=_['merge'](_0x3757a0,require(_0x6925('0x31')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x32')));_0x3757a0=_['merge'](_0x3757a0,require(_0x6925('0x33')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x34')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x35')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x36')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x37')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x38')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x39')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x3a')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x3b')));_0x3757a0=_['merge'](_0x3757a0,require(_0x6925('0x3c')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x3d')));_0x3757a0=_['merge'](_0x3757a0,require('../api/squareOdbc/squareOdbc.rpc'));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x3e')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x3f')));_0x3757a0=_['merge'](_0x3757a0,require(_0x6925('0x40')));_0x3757a0=_['merge'](_0x3757a0,require(_0x6925('0x41')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x42')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x43')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x44')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x45')));_0x3757a0=_['merge'](_0x3757a0,require('../api/whatsappMessage/whatsappMessage.rpc'));_0x3757a0=_['merge'](_0x3757a0,require(_0x6925('0x46')));_0x3757a0=_[_0x6925('0x4')](_0x3757a0,require(_0x6925('0x47')));var _0xb63268=jayson['server'](_0x3757a0)[_0x6925('0x48')]();var _0x3aa4fd=config[_0x6925('0x49')][_0x6925('0x4a')]||config['port']+0x1;var _0x29cbe7=config[_0x6925('0x49')]['ip']||'localhost';_0xb63268['on'](_0x6925('0x4b'),function(_0x11cf41){return _0x121ae6(_0x11cf41);});_0xb63268[_0x6925('0x3')](_0x3aa4fd,_0x29cbe7,function(){console[_0x6925('0x4c')]('Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!',_0x29cbe7,_0x3aa4fd);require(_0x6925('0x4d'))['default']();return _0x2c3ed9('RPC\x20listening\x20on\x20'+_0x29cbe7+':'+_0x3aa4fd);});});};
\ No newline at end of file
index a509c7a..fd72897 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6144=['call','setEncoding','utf8','setTimeout','headers','ready','line','toLowerCase','hangup','emit','520-Invalid','search','520\x20End\x20of\x20proper','function','substring','no\x20code','indexOf','substr','startsWith','split','length','match','error','code','close','timeout','destroy','write','inherits','prototype','command','sync','answer','ANSWER','getData','beep','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','sendRequest','format','VERBOSE\x20\x22%s\x22','exec','isArray','join','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setPriority','HANGUP','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','replace','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','setExtension','GOTO\x20%s\x20%s\x20%s','getVariable','recordFile','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','exports','util','lodash','events','EventEmitter','./error'];(function(_0x31883d,_0x341e71){var _0x18965e=function(_0x5ea3dc){while(--_0x5ea3dc){_0x31883d['push'](_0x31883d['shift']());}};_0x18965e(++_0x341e71);}(_0x6144,0x99));var _0x4614=function(_0x524261,_0x102914){_0x524261=_0x524261-0x0;var _0x25295c=_0x6144[_0x524261];return _0x25295c;};'use strict';var util=require(_0x4614('0x0'));var _=require(_0x4614('0x1'));var EventEmitter=require(_0x4614('0x2'))[_0x4614('0x3')];var AGIReply=require('./reply');var AGIError=require(_0x4614('0x4'));function AGIChannel(_0x3b8b58){var _0x4249c0=this,_0x254bb6=new AGIReply(),_0x5ac7b6=![],_0xf5ca61={};EventEmitter[_0x4614('0x5')](_0x4249c0);_0x3b8b58[_0x4614('0x6')](_0x4614('0x7'));_0x3b8b58[_0x4614('0x8')](0x8*0x3c*0x3c*0x3e8);_0x254bb6['setEncoding'](_0x4614('0x7'));_0x254bb6['on'](_0x4614('0x9'),function(_0x4035f3){for(var _0x13b585 in _0x4035f3){_0x4249c0[_0x13b585]=_0x4035f3[_0x13b585];}_0x4249c0['emit'](_0x4614('0xa'));});_0x254bb6['on'](_0x4614('0xb'),function(_0x7df8c){if(_0x7df8c[_0x4614('0xc')]()==_0x4614('0xd')){_0x4249c0[_0x4614('0xe')](_0x4614('0xd'));return;}if(_0x7df8c['substring'](0x0,0xb)==_0x4614('0xf')){_0x5ac7b6=!![];}if(_0x5ac7b6){_0xf5ca61['rx']+=_0x7df8c+'\x0a';if(_0x7df8c[_0x4614('0x10')](_0x4614('0x11'))!=-0x1){_0x5ac7b6=![];}}else{_0xf5ca61['rx']=_0x7df8c;}if(_0x5ac7b6){return;}if(typeof _0xf5ca61['cb']==_0x4614('0x12')){var _0x4c8823=_0xf5ca61['rx'][_0x4614('0x13')](0x0,0x3),_0x47a467=null,_0x16b52d=null;_0x4c8823=parseInt(_0x4c8823);if(isNaN(_0x4c8823)){_0xf5ca61['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x4614('0x14')});return;}if(_0x4c8823!=0xc8){_0xf5ca61['cb'](null,{'code':_0x4c8823,'result':-0x1,'extra':'KO'});return;}_0x47a467=_0xf5ca61['rx']['substring'](0x4)['replace']('result=','');if(_0x47a467[_0x4614('0x15')]('\x20')!=-0x1){_0x47a467=_0x47a467[_0x4614('0x16')](0x0,_0x47a467['indexOf']('\x20'));}if(_[_0x4614('0x17')](_0x47a467,'-1')){_0x47a467=parseInt(_0x47a467);}_0x16b52d=_0xf5ca61['rx'][_0x4614('0x18')]('\x20');if(_0x16b52d[_0x4614('0x19')]==0x3){_0x16b52d=_0x16b52d[0x2]['substring'](0x1,_0x16b52d[0x2][_0x4614('0x19')]-0x1);}else if(_0x16b52d[_0x4614('0x19')]>0x3){var _0x1f30b0=/\((.+)\)/;var _0x3903e2=_0xf5ca61['rx'][_0x4614('0x1a')](_0x1f30b0);if(_0x3903e2){_0x16b52d=_0x3903e2[0x1];}else{_0x16b52d=null;}}else{_0x16b52d=null;}_0xf5ca61['cb'](null,{'code':_0x4c8823,'result':_0x47a467,'extra':_0x16b52d});}});_0x3b8b58['on'](_0x4614('0x1b'),function(_0x5d10fc){_0x4249c0[_0x4614('0xe')](_0x4614('0x1b'),new AGIError('E_AGI_SOCKET_ERROR',_0x5d10fc[_0x4614('0x1c')]));});_0x3b8b58['on'](_0x4614('0x1d'),function(){_0x4249c0[_0x4614('0xe')]('close',new AGIError('E_AGI_SOCKET_CLOSE'));});_0x3b8b58['on'](_0x4614('0x1e'),function(){_0x4249c0[_0x4614('0xe')](_0x4614('0x1e'),new AGIError('E_AGI_SOCKET_TIMEOUT'));_0x3b8b58[_0x4614('0x1f')]();});_0x3b8b58['pipe'](_0x254bb6);this['command']=function(_0xb5c79f,_0x3cc9a7){var _0xb5c79f=_0xb5c79f||'',_0x3cc9a7=typeof _0x3cc9a7==_0x4614('0x12')?_0x3cc9a7:new Function();_0xf5ca61={'tx':_0xb5c79f,'rx':'','cb':_0x3cc9a7};_0x3b8b58[_0x4614('0x20')](_0xb5c79f+'\x0a');},this[_0x4614('0x1d')]=function(){_0x3b8b58['destroy']();};}util[_0x4614('0x21')](AGIChannel,EventEmitter);AGIChannel[_0x4614('0x22')]['sendRequest']=function(_0x46f5c5){return this[_0x4614('0x23')][_0x4614('0x24')](this,_0x46f5c5);};AGIChannel['prototype'][_0x4614('0x25')]=function(){return this['sendRequest'](_0x4614('0x26'));};AGIChannel[_0x4614('0x22')][_0x4614('0x27')]=function(_0x5ecfa6,_0x5cf7eb,_0x122b50){_0x5ecfa6=_0x5ecfa6===undefined?_0x4614('0x28'):_0x5ecfa6;_0x5cf7eb=_0x5cf7eb===undefined?'5':_0x5cf7eb;_0x122b50=_0x122b50===undefined?'1':_0x122b50;return this['sendRequest'](util['format'](_0x4614('0x29'),_0x5ecfa6,_0x5cf7eb*0x3e8,_0x122b50));};AGIChannel[_0x4614('0x22')][_0x4614('0x2a')]=function(_0x59fd75){_0x59fd75=_0x59fd75||_0x4614('0x2b');return this[_0x4614('0x2c')](util[_0x4614('0x2d')](_0x4614('0x2e'),_0x59fd75));};AGIChannel[_0x4614('0x22')][_0x4614('0x2f')]=function(_0x439102,_0xce27a8){if(_[_0x4614('0x30')](_0xce27a8)){return this[_0x4614('0x2c')](util[_0x4614('0x2d')]('EXEC\x20%s\x20%s',_0x439102,_0xce27a8[_0x4614('0x31')](',')));}return this[_0x4614('0x2c')](util[_0x4614('0x2d')](_0x4614('0x32'),_0x439102,_0xce27a8));};AGIChannel['prototype'][_0x4614('0x33')]=function(_0x5bd68d){return this[_0x4614('0x2c')](util[_0x4614('0x2d')](_0x4614('0x34'),_0x5bd68d));};AGIChannel[_0x4614('0x22')]['setExtension']=function(_0x1a7bec){return this[_0x4614('0x2c')](util[_0x4614('0x2d')]('SET\x20EXTENSION\x20%s',_0x1a7bec));};AGIChannel['prototype'][_0x4614('0x35')]=function(_0x3e341a){return this['sendRequest'](util[_0x4614('0x2d')]('SET\x20PRIORITY\x20%s',_0x3e341a));};AGIChannel[_0x4614('0x22')][_0x4614('0xd')]=function(){return this[_0x4614('0x2c')](_0x4614('0x36'));};AGIChannel[_0x4614('0x22')]['setVariable']=function(_0x54c693,_0x2bfe09){var _0x4eaa16=_['isBoolean'](_0x2bfe09)||_[_0x4614('0x37')](_0x2bfe09)?_0x2bfe09[_0x4614('0x38')]():_0x2bfe09;return this['sendRequest'](util[_0x4614('0x2d')](_0x4614('0x39'),_0x54c693,_0x4eaa16?_0x4eaa16[_0x4614('0x38')]()[_0x4614('0x3a')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x4614('0x22')][_0x4614('0x3b')]=function(_0x318b28,_0x2bb1d0){return this[_0x4614('0x2c')](util[_0x4614('0x2d')](_0x4614('0x3c'),_0x318b28,_0x2bb1d0));};AGIChannel[_0x4614('0x22')][_0x4614('0x3d')]=function(_0x126e3f,_0x4bf878){return this[_0x4614('0x2c')](util[_0x4614('0x2d')](_0x4614('0x3e'),_0x126e3f,_0x4bf878));};AGIChannel[_0x4614('0x22')][_0x4614('0x3f')]=function(_0x5587f1,_0x176ec2){return this['sendRequest'](util[_0x4614('0x2d')](_0x4614('0x40'),_0x5587f1,_0x176ec2));};AGIChannel[_0x4614('0x22')][_0x4614('0x41')]=function(_0x29f4d6,_0x162ec5,_0x40008e){_0x162ec5=_0x162ec5||this['extension'];_0x40008e=_0x40008e||0x1;this[_0x4614('0x33')](_0x29f4d6);this[_0x4614('0x42')](_0x162ec5);this[_0x4614('0x35')](_0x40008e);return this['noop'](util[_0x4614('0x2d')](_0x4614('0x43'),_0x29f4d6,_0x162ec5,_0x40008e));};AGIChannel['prototype'][_0x4614('0x44')]=function(_0x3aafc3){return this[_0x4614('0x2c')](util['format']('GET\x20VARIABLE\x20\x22%s\x22',_0x3aafc3));};AGIChannel[_0x4614('0x22')][_0x4614('0x45')]=function(_0xe52908,_0x16d4ff,_0xae748b,_0x41df99,_0x4da280,_0x300aed){_0x16d4ff=_0x16d4ff||_0x4614('0x46');_0xae748b=_0xae748b||'';_0x41df99=_0x41df99===undefined?-0x1:_0x41df99==='-1'?-0x1:_0x41df99*0x3e8;_0x4da280=_0x4da280===undefined?'':'s='+_0x4da280;_0x300aed=_0x300aed?_0x4614('0x47'):'';return this[_0x4614('0x2c')](util[_0x4614('0x2d')](_0x4614('0x48'),_0xe52908,_0x16d4ff,_0xae748b,_0x41df99,_0x300aed,_0x4da280));};AGIChannel['prototype'][_0x4614('0x49')]=function(_0x476669,_0x2b25e2){_0x2b25e2=_0x2b25e2||'';return this[_0x4614('0x2c')](util[_0x4614('0x2d')](_0x4614('0x4a'),_0x476669,_0x2b25e2));};AGIChannel[_0x4614('0x22')][_0x4614('0x4b')]=function(_0x3997dd){return this['exec'](_0x4614('0x4c'),_0x3997dd);};AGIChannel['prototype'][_0x4614('0x4d')]=function(_0x6f5fce){return this[_0x4614('0x2f')]('WAIT',_0x6f5fce);};AGIChannel['prototype'][_0x4614('0x1b')]=function(_0x40f724,_0x16f4b2){this[_0x4614('0x2a')](util['format']('ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s',_0x40f724['id'],_0x40f724['label'],_0x16f4b2));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x4614('0x4e')]=AGIChannel;
\ No newline at end of file
+var _0xe24c=['EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isBoolean','isNumber','toString','replace','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','setPriority','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','AGI','wait','exec','WAIT','label','exports','util','lodash','events','EventEmitter','./reply','./error','call','setEncoding','utf8','setTimeout','headers','emit','line','toLowerCase','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','no\x20code','result=','indexOf','length','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','write','inherits','prototype','sendRequest','sync','answer','getData','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','isArray'];(function(_0x2ad008,_0x45c253){var _0x4538cf=function(_0xe143e4){while(--_0xe143e4){_0x2ad008['push'](_0x2ad008['shift']());}};_0x4538cf(++_0x45c253);}(_0xe24c,0x70));var _0xce24=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0xe24c[_0x13d07a];return _0x5ee0ee;};'use strict';var util=require(_0xce24('0x0'));var _=require(_0xce24('0x1'));var EventEmitter=require(_0xce24('0x2'))[_0xce24('0x3')];var AGIReply=require(_0xce24('0x4'));var AGIError=require(_0xce24('0x5'));function AGIChannel(_0x6cb41a){var _0x43867c=this,_0x410223=new AGIReply(),_0x36931e=![],_0x5d02ef={};EventEmitter[_0xce24('0x6')](_0x43867c);_0x6cb41a[_0xce24('0x7')](_0xce24('0x8'));_0x6cb41a[_0xce24('0x9')](0x8*0x3c*0x3c*0x3e8);_0x410223[_0xce24('0x7')]('utf8');_0x410223['on'](_0xce24('0xa'),function(_0x5d4315){for(var _0x2fac1a in _0x5d4315){_0x43867c[_0x2fac1a]=_0x5d4315[_0x2fac1a];}_0x43867c[_0xce24('0xb')]('ready');});_0x410223['on'](_0xce24('0xc'),function(_0x3dec1a){if(_0x3dec1a[_0xce24('0xd')]()=='hangup'){_0x43867c[_0xce24('0xb')](_0xce24('0xe'));return;}if(_0x3dec1a[_0xce24('0xf')](0x0,0xb)==_0xce24('0x10')){_0x36931e=!![];}if(_0x36931e){_0x5d02ef['rx']+=_0x3dec1a+'\x0a';if(_0x3dec1a[_0xce24('0x11')](_0xce24('0x12'))!=-0x1){_0x36931e=![];}}else{_0x5d02ef['rx']=_0x3dec1a;}if(_0x36931e){return;}if(typeof _0x5d02ef['cb']==_0xce24('0x13')){var _0x5e997c=_0x5d02ef['rx'][_0xce24('0xf')](0x0,0x3),_0x30dd54=null,_0x29c880=null;_0x5e997c=parseInt(_0x5e997c);if(isNaN(_0x5e997c)){_0x5d02ef['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xce24('0x14')});return;}if(_0x5e997c!=0xc8){_0x5d02ef['cb'](null,{'code':_0x5e997c,'result':-0x1,'extra':'KO'});return;}_0x30dd54=_0x5d02ef['rx'][_0xce24('0xf')](0x4)['replace'](_0xce24('0x15'),'');if(_0x30dd54[_0xce24('0x16')]('\x20')!=-0x1){_0x30dd54=_0x30dd54['substr'](0x0,_0x30dd54[_0xce24('0x16')]('\x20'));}if(_['startsWith'](_0x30dd54,'-1')){_0x30dd54=parseInt(_0x30dd54);}_0x29c880=_0x5d02ef['rx']['split']('\x20');if(_0x29c880[_0xce24('0x17')]==0x3){_0x29c880=_0x29c880[0x2][_0xce24('0xf')](0x1,_0x29c880[0x2][_0xce24('0x17')]-0x1);}else if(_0x29c880['length']>0x3){var _0x10ccfd=/\((.+)\)/;var _0x28679f=_0x5d02ef['rx'][_0xce24('0x18')](_0x10ccfd);if(_0x28679f){_0x29c880=_0x28679f[0x1];}else{_0x29c880=null;}}else{_0x29c880=null;}_0x5d02ef['cb'](null,{'code':_0x5e997c,'result':_0x30dd54,'extra':_0x29c880});}});_0x6cb41a['on']('error',function(_0x1fe5aa){_0x43867c['emit'](_0xce24('0x19'),new AGIError(_0xce24('0x1a'),_0x1fe5aa[_0xce24('0x1b')]));});_0x6cb41a['on'](_0xce24('0x1c'),function(){_0x43867c[_0xce24('0xb')](_0xce24('0x1c'),new AGIError(_0xce24('0x1d')));});_0x6cb41a['on'](_0xce24('0x1e'),function(){_0x43867c['emit'](_0xce24('0x1e'),new AGIError(_0xce24('0x1f')));_0x6cb41a[_0xce24('0x20')]();});_0x6cb41a[_0xce24('0x21')](_0x410223);this[_0xce24('0x22')]=function(_0x40d85e,_0x162a63){var _0x40d85e=_0x40d85e||'',_0x162a63=typeof _0x162a63==_0xce24('0x13')?_0x162a63:new Function();_0x5d02ef={'tx':_0x40d85e,'rx':'','cb':_0x162a63};_0x6cb41a[_0xce24('0x23')](_0x40d85e+'\x0a');},this[_0xce24('0x1c')]=function(){_0x6cb41a[_0xce24('0x20')]();};}util[_0xce24('0x24')](AGIChannel,EventEmitter);AGIChannel[_0xce24('0x25')][_0xce24('0x26')]=function(_0x5679d9){return this['command'][_0xce24('0x27')](this,_0x5679d9);};AGIChannel[_0xce24('0x25')][_0xce24('0x28')]=function(){return this[_0xce24('0x26')]('ANSWER');};AGIChannel[_0xce24('0x25')][_0xce24('0x29')]=function(_0x5a07b3,_0xe0d226,_0x577f74){_0x5a07b3=_0x5a07b3===undefined?_0xce24('0x2a'):_0x5a07b3;_0xe0d226=_0xe0d226===undefined?'5':_0xe0d226;_0x577f74=_0x577f74===undefined?'1':_0x577f74;return this[_0xce24('0x26')](util[_0xce24('0x2b')](_0xce24('0x2c'),_0x5a07b3,_0xe0d226*0x3e8,_0x577f74));};AGIChannel[_0xce24('0x25')][_0xce24('0x2d')]=function(_0x2e2ace){_0x2e2ace=_0x2e2ace||_0xce24('0x2e');return this['sendRequest'](util[_0xce24('0x2b')]('VERBOSE\x20\x22%s\x22',_0x2e2ace));};AGIChannel[_0xce24('0x25')]['exec']=function(_0x282680,_0x55436f){if(_[_0xce24('0x2f')](_0x55436f)){return this['sendRequest'](util[_0xce24('0x2b')](_0xce24('0x30'),_0x282680,_0x55436f['join'](',')));}return this[_0xce24('0x26')](util[_0xce24('0x2b')]('EXEC\x20%s\x20%s',_0x282680,_0x55436f));};AGIChannel[_0xce24('0x25')][_0xce24('0x31')]=function(_0x4260a1){return this[_0xce24('0x26')](util[_0xce24('0x2b')](_0xce24('0x32'),_0x4260a1));};AGIChannel['prototype'][_0xce24('0x33')]=function(_0x4e9a18){return this[_0xce24('0x26')](util['format'](_0xce24('0x34'),_0x4e9a18));};AGIChannel[_0xce24('0x25')]['setPriority']=function(_0x5544ac){return this[_0xce24('0x26')](util[_0xce24('0x2b')](_0xce24('0x35'),_0x5544ac));};AGIChannel['prototype'][_0xce24('0xe')]=function(){return this[_0xce24('0x26')](_0xce24('0x36'));};AGIChannel[_0xce24('0x25')][_0xce24('0x37')]=function(_0x51db84,_0x64e32f){var _0x13de57=_[_0xce24('0x38')](_0x64e32f)||_[_0xce24('0x39')](_0x64e32f)?_0x64e32f[_0xce24('0x3a')]():_0x64e32f;return this[_0xce24('0x26')](util[_0xce24('0x2b')]('SET\x20VARIABLE\x20%s\x20\x22%s\x22',_0x51db84,_0x13de57?_0x13de57[_0xce24('0x3a')]()[_0xce24('0x3b')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0xce24('0x3c')]=function(_0x4439fd,_0x50f41c){return this[_0xce24('0x26')](util[_0xce24('0x2b')](_0xce24('0x3d'),_0x4439fd,_0x50f41c));};AGIChannel[_0xce24('0x25')][_0xce24('0x3e')]=function(_0x1df630,_0x5e0244){return this['sendRequest'](util[_0xce24('0x2b')](_0xce24('0x3f'),_0x1df630,_0x5e0244));};AGIChannel[_0xce24('0x25')]['sayPhonetic']=function(_0x2c6b70,_0x3a0249){return this[_0xce24('0x26')](util[_0xce24('0x2b')](_0xce24('0x40'),_0x2c6b70,_0x3a0249));};AGIChannel['prototype'][_0xce24('0x41')]=function(_0x1fe8b9,_0x42356b,_0x149494){_0x42356b=_0x42356b||this[_0xce24('0x42')];_0x149494=_0x149494||0x1;this['setContext'](_0x1fe8b9);this[_0xce24('0x33')](_0x42356b);this[_0xce24('0x43')](_0x149494);return this[_0xce24('0x2d')](util[_0xce24('0x2b')](_0xce24('0x44'),_0x1fe8b9,_0x42356b,_0x149494));};AGIChannel[_0xce24('0x25')][_0xce24('0x45')]=function(_0x5c9b0b){return this[_0xce24('0x26')](util[_0xce24('0x2b')](_0xce24('0x46'),_0x5c9b0b));};AGIChannel['prototype'][_0xce24('0x47')]=function(_0x589bfe,_0x368d9a,_0x51ff4f,_0x5396de,_0x197ed5,_0x576ab2){_0x368d9a=_0x368d9a||'wav';_0x51ff4f=_0x51ff4f||'';_0x5396de=_0x5396de===undefined?-0x1:_0x5396de==='-1'?-0x1:_0x5396de*0x3e8;_0x197ed5=_0x197ed5===undefined?'':'s='+_0x197ed5;_0x576ab2=_0x576ab2?'BEEP':'';return this['sendRequest'](util[_0xce24('0x2b')](_0xce24('0x48'),_0x589bfe,_0x368d9a,_0x51ff4f,_0x5396de,_0x576ab2,_0x197ed5));};AGIChannel[_0xce24('0x25')][_0xce24('0x49')]=function(_0x4e7ae1,_0x1ed914){_0x1ed914=_0x1ed914||'';return this[_0xce24('0x26')](util[_0xce24('0x2b')]('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x4e7ae1,_0x1ed914));};AGIChannel[_0xce24('0x25')]['agi']=function(_0x2e5b6c){return this['exec'](_0xce24('0x4a'),_0x2e5b6c);};AGIChannel[_0xce24('0x25')][_0xce24('0x4b')]=function(_0x136039){return this[_0xce24('0x4c')](_0xce24('0x4d'),_0x136039);};AGIChannel['prototype'][_0xce24('0x19')]=function(_0x22cded,_0x41274f){this[_0xce24('0x2d')](util[_0xce24('0x2b')]('ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s',_0x22cded['id'],_0x22cded[_0xce24('0x4e')],_0x41274f));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xce24('0x4f')]=AGIChannel;
\ No newline at end of file
index 9aaa480..63c4cf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8588=['Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format','apply','message','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20closed.','Socket\x20timeout.'];(function(_0x62c958,_0x2bfdbc){var _0x57ec61=function(_0x5c0094){while(--_0x5c0094){_0x62c958['push'](_0x62c958['shift']());}};_0x57ec61(++_0x2bfdbc);}(_0x8588,0xf7));var _0x8858=function(_0x170bcd,_0x48ff09){_0x170bcd=_0x170bcd-0x0;var _0x434b49=_0x8588[_0x170bcd];return _0x434b49;};'use strict';var util=require(_0x8858('0x0'));var error={'E_AGI_UNDEFINED':_0x8858('0x1'),'E_AGI_ARGUMENT_PORT':_0x8858('0x2'),'E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':_0x8858('0x3'),'E_AGI_SERVER_MAXCONNECTION':_0x8858('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0x8858('0x5'),'E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':_0x8858('0x6'),'E_AGI_SOCKET_TIMEOUT':_0x8858('0x7'),'E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x8858('0x8'),'E_AGI_IVR_ENTRY':_0x8858('0x9')};function AGIError(_0x5f0e51){var _0x5f0e51=_0x5f0e51||null,_0x4e1486=_0x4e1486||[],_0x44a80f=0x1,_0x7f1b4c='';if(!error[_0x5f0e51]){_0x5f0e51=_0x8858('0xa');}_0x4e1486[_0x8858('0xb')](error[_0x5f0e51]);while(arguments[_0x44a80f]){_0x4e1486[_0x8858('0xb')](arguments[_0x44a80f]);_0x44a80f++;}_0x7f1b4c=util[_0x8858('0xc')][_0x8858('0xd')](util,_0x4e1486);this[_0x8858('0xe')]=_0x7f1b4c;this['name']=_0x5f0e51;}module['exports']=AGIError;
\ No newline at end of file
+var _0xd882=['util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format','name','exports'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xd882,0xa0));var _0x2d88=function(_0x270e46,_0x122174){_0x270e46=_0x270e46-0x0;var _0x18ca4e=_0xd882[_0x270e46];return _0x18ca4e;};'use strict';var util=require(_0x2d88('0x0'));var error={'E_AGI_UNDEFINED':_0x2d88('0x1'),'E_AGI_ARGUMENT_PORT':_0x2d88('0x2'),'E_AGI_SERVER_ERROR':_0x2d88('0x3'),'E_AGI_SERVER_CLOSE':_0x2d88('0x4'),'E_AGI_SERVER_MAXCONNECTION':_0x2d88('0x5'),'E_AGI_SERVER_VOICE_DISABLED':_0x2d88('0x6'),'E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':_0x2d88('0x7'),'E_AGI_SOCKET_TIMEOUT':_0x2d88('0x8'),'E_AGI_COMMAND_EMPTY':_0x2d88('0x9'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':_0x2d88('0xa')};function AGIError(_0x4b4853){var _0x4b4853=_0x4b4853||null,_0xdd3003=_0xdd3003||[],_0x18732e=0x1,_0x5e9b11='';if(!error[_0x4b4853]){_0x4b4853=_0x2d88('0xb');}_0xdd3003[_0x2d88('0xc')](error[_0x4b4853]);while(arguments[_0x18732e]){_0xdd3003[_0x2d88('0xc')](arguments[_0x18732e]);_0x18732e++;}_0x5e9b11=util[_0x2d88('0xd')]['apply'](util,_0xdd3003);this['message']=_0x5e9b11;this[_0x2d88('0xe')]=_0x4b4853;}module[_0x2d88('0xf')]=AGIError;
\ No newline at end of file
index 1d6cf52..21577fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x169f=['message','parse','projectUpdate','exports','lodash','events','EventEmitter','ioredis','../../config/environment','redis','localhost','subscribe','agi','emit','error','E_AGI_SERVER_ERROR'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x169f,0x144));var _0xf169=function(_0x2eed8b,_0x3ede08){_0x2eed8b=_0x2eed8b-0x0;var _0x40edb3=_0x169f[_0x2eed8b];return _0x40edb3;};'use strict';var _=require(_0xf169('0x0'));var EventEmitter=require(_0xf169('0x1'))[_0xf169('0x2')];var Redis=require(_0xf169('0x3'));var AGIError=require('./error');var config=require(_0xf169('0x4'));config[_0xf169('0x5')]=_['defaults'](config['redis'],{'host':_0xf169('0x6'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0xf169('0x5')]);sub[_0xf169('0x7')](_0xf169('0x8'),function(_0x36a9ca){if(_0x36a9ca)return eventEmitter[_0xf169('0x9')](_0xf169('0xa'),new AGIError(_0xf169('0xb'),_0x36a9ca));});sub['on'](_0xf169('0xc'),function(_0x50e9be,_0x5a0a32){if(_0x50e9be!==_0xf169('0x8'))return;try{var _0x429501=JSON[_0xf169('0xd')](_0x5a0a32);eventEmitter[_0xf169('0x9')](_0xf169('0xe'),_0x429501);}catch(_0xec37a3){eventEmitter[_0xf169('0x9')](_0xf169('0xa'),new AGIError(_0xf169('0xb'),_0xec37a3));}});module[_0xf169('0xf')]={'EventEmitter':eventEmitter};
\ No newline at end of file
+var _0x91e9=['./error','redis','defaults','localhost','subscribe','agi','emit','error','E_AGI_SERVER_ERROR','parse','projectUpdate','exports','lodash','EventEmitter','ioredis'];(function(_0x1ad295,_0x4d6f48){var _0x2ea33b=function(_0x12bae7){while(--_0x12bae7){_0x1ad295['push'](_0x1ad295['shift']());}};_0x2ea33b(++_0x4d6f48);}(_0x91e9,0x1bf));var _0x991e=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x91e9[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0x991e('0x0'));var EventEmitter=require('events')[_0x991e('0x1')];var Redis=require(_0x991e('0x2'));var AGIError=require(_0x991e('0x3'));var config=require('../../config/environment');config[_0x991e('0x4')]=_[_0x991e('0x5')](config[_0x991e('0x4')],{'host':_0x991e('0x6'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0x991e('0x4')]);sub[_0x991e('0x7')](_0x991e('0x8'),function(_0x54cd94){if(_0x54cd94)return eventEmitter[_0x991e('0x9')](_0x991e('0xa'),new AGIError(_0x991e('0xb'),_0x54cd94));});sub['on']('message',function(_0x4a7005,_0x175a63){if(_0x4a7005!==_0x991e('0x8'))return;try{var _0x4d9c79=JSON[_0x991e('0xc')](_0x175a63);eventEmitter[_0x991e('0x9')](_0x991e('0xd'),_0x4d9c79);}catch(_0xb1ff98){eventEmitter['emit'](_0x991e('0xa'),new AGIError('E_AGI_SERVER_ERROR',_0xb1ff98));}});module[_0x991e('0xe')]={'EventEmitter':eventEmitter};
\ No newline at end of file
index fff5101..3a20764 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36d8=['max\x20retry\x20reach','condition\x20not\x20found','exports','menu','getsecretdigits','vertices','edges','prototype','addVertex','addEdge','push','numberOfEdges','size','relations','getVertex','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','length','condition','agicommand','vswitch','default','target','default\x20on\x20switch\x20not\x20found'];(function(_0x4d8d34,_0x329802){var _0x2a97a8=function(_0x43d35d){while(--_0x43d35d){_0x4d8d34['push'](_0x4d8d34['shift']());}};_0x2a97a8(++_0x329802);}(_0x36d8,0x1bd));var _0x836d=function(_0x36923b,_0x4d1ed8){_0x36923b=_0x36923b-0x0;var _0x77c7c9=_0x36d8[_0x36923b];return _0x77c7c9;};'use strict';var _=require('lodash');var logger=require('../../../config/logger')('agi');var verticesWithRetry=[_0x836d('0x0'),'getdigits',_0x836d('0x1')];var Graph=function(){this[_0x836d('0x2')]={};this[_0x836d('0x3')]={};this['numberOfEdges']=0x0;};Graph[_0x836d('0x4')][_0x836d('0x5')]=function(_0x5eadd4){this[_0x836d('0x2')][_0x5eadd4['id']]=_0x5eadd4;this['edges'][_0x5eadd4['id']]=[];};Graph[_0x836d('0x4')][_0x836d('0x6')]=function(_0x81281a,_0xc743c1,_0x2bd2c6){this['edges'][_0x81281a][_0x836d('0x7')]({'target':_0xc743c1,'condition':_0x2bd2c6});this[_0x836d('0x8')]+=0x1;};Graph[_0x836d('0x4')][_0x836d('0x9')]=function(){return _[_0x836d('0x9')](this[_0x836d('0x2')]);};Graph['prototype'][_0x836d('0xa')]=function(){return this[_0x836d('0x8')];};Graph[_0x836d('0x4')][_0x836d('0xb')]=function(_0x420d06){return this[_0x836d('0x2')][_0x420d06];};Graph[_0x836d('0x4')][_0x836d('0xc')]=function(_0x530406,_0x3acbbd){if(!this[_0x836d('0x2')][_0x530406]){return logger[_0x836d('0xd')](_0x836d('0xe'));}var _0x365732=_0x3acbbd(this[_0x836d('0x2')][_0x530406]);if(!_0x365732){return logger[_0x836d('0xd')](_0x836d('0xf'));}if(this[_0x836d('0x3')][_0x530406][_0x836d('0x10')]===0x0){return logger['info']('no\x20edge/s\x20available');}for(var _0x37ac5d=0x0,_0x31e94d=[],_0x68286e=![];_0x37ac5d<this[_0x836d('0x3')][_0x530406]['length'];_0x37ac5d+=0x1){if(this[_0x836d('0x3')][_0x530406][_0x37ac5d][_0x836d('0x11')]){_0x31e94d=this[_0x836d('0x3')][_0x530406][_0x37ac5d][_0x836d('0x11')]['split'](',');for(var _0x5744a8=0x0;_0x5744a8<_0x31e94d['length'];_0x5744a8+=0x1){if(this[_0x836d('0x2')][_0x530406][_0x836d('0x12')]===_0x836d('0x13')&&_0x31e94d[_0x5744a8]==='-'){_0x68286e=this[_0x836d('0x3')][_0x530406][_0x37ac5d]['target'];logger[_0x836d('0xd')](_0x836d('0x14'),_0x31e94d[_0x5744a8],this[_0x836d('0x3')][_0x530406][_0x37ac5d][_0x836d('0x15')]);}else if(this[_0x836d('0x2')][_0x530406][_0x836d('0x12')]===_0x836d('0x0')&&_0x31e94d[_0x5744a8]==='i'){_0x68286e=this[_0x836d('0x3')][_0x530406][_0x37ac5d][_0x836d('0x15')];logger[_0x836d('0xd')]('invalid',_0x31e94d[_0x5744a8],this[_0x836d('0x3')][_0x530406][_0x37ac5d][_0x836d('0x15')]);}if(_0x31e94d[_0x5744a8]===_0x365732){return this[_0x836d('0xc')](this[_0x836d('0x3')][_0x530406][_0x37ac5d][_0x836d('0x15')],_0x3acbbd);}}}else{return this[_0x836d('0xc')](this[_0x836d('0x3')][_0x530406][_0x37ac5d][_0x836d('0x15')],_0x3acbbd);}}if(_0x31e94d[_0x836d('0x10')]){if(this[_0x836d('0x2')][_0x530406]['agicommand']==='vswitch'){if(_0x68286e){return this[_0x836d('0xc')](_0x68286e,_0x3acbbd);}return logger[_0x836d('0xd')](_0x836d('0x16'));}else if(_['includes'](verticesWithRetry,this[_0x836d('0x2')][_0x530406][_0x836d('0x12')])){if(_0x365732==='-'){return logger[_0x836d('0xd')](_0x836d('0x17'));}if(_0x68286e&&_0x365732!=='t'){return this['traverseBFS'](_0x68286e,_0x3acbbd);}return this[_0x836d('0xc')](_0x530406,_0x3acbbd);}return logger[_0x836d('0xd')](_0x836d('0x18'));}};module[_0x836d('0x19')]=Graph;
\ No newline at end of file
+var _0x32f5=['default','menu','vswitch','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','../../../config/logger','agi','getsecretdigits','vertices','numberOfEdges','prototype','addVertex','edges','size','traverseBFS','info','length','no\x20edge/s\x20available','condition','split','agicommand','target'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x32f5,0x8a));var _0x532f=function(_0x58366c,_0x24b12c){_0x58366c=_0x58366c-0x0;var _0x1854fe=_0x32f5[_0x58366c];return _0x1854fe;};'use strict';var _=require(_0x532f('0x0'));var logger=require(_0x532f('0x1'))(_0x532f('0x2'));var verticesWithRetry=['menu','getdigits',_0x532f('0x3')];var Graph=function(){this[_0x532f('0x4')]={};this['edges']={};this[_0x532f('0x5')]=0x0;};Graph[_0x532f('0x6')][_0x532f('0x7')]=function(_0x3a84d6){this[_0x532f('0x4')][_0x3a84d6['id']]=_0x3a84d6;this[_0x532f('0x8')][_0x3a84d6['id']]=[];};Graph[_0x532f('0x6')]['addEdge']=function(_0x530d23,_0x57807e,_0x599a45){this[_0x532f('0x8')][_0x530d23]['push']({'target':_0x57807e,'condition':_0x599a45});this[_0x532f('0x5')]+=0x1;};Graph[_0x532f('0x6')]['size']=function(){return _[_0x532f('0x9')](this[_0x532f('0x4')]);};Graph[_0x532f('0x6')]['relations']=function(){return this[_0x532f('0x5')];};Graph[_0x532f('0x6')]['getVertex']=function(_0x2f95dd){return this['vertices'][_0x2f95dd];};Graph[_0x532f('0x6')][_0x532f('0xa')]=function(_0x4ea566,_0x397e0b){if(!this[_0x532f('0x4')][_0x4ea566]){return logger[_0x532f('0xb')]('no\x20vertex\x20found');}var _0x15007f=_0x397e0b(this[_0x532f('0x4')][_0x4ea566]);if(!_0x15007f){return logger[_0x532f('0xb')]('stop\x20traverse');}if(this[_0x532f('0x8')][_0x4ea566][_0x532f('0xc')]===0x0){return logger['info'](_0x532f('0xd'));}for(var _0x5c82f9=0x0,_0x4698e4=[],_0x48693c=![];_0x5c82f9<this[_0x532f('0x8')][_0x4ea566][_0x532f('0xc')];_0x5c82f9+=0x1){if(this[_0x532f('0x8')][_0x4ea566][_0x5c82f9][_0x532f('0xe')]){_0x4698e4=this[_0x532f('0x8')][_0x4ea566][_0x5c82f9][_0x532f('0xe')][_0x532f('0xf')](',');for(var _0x154ab1=0x0;_0x154ab1<_0x4698e4[_0x532f('0xc')];_0x154ab1+=0x1){if(this[_0x532f('0x4')][_0x4ea566][_0x532f('0x10')]==='vswitch'&&_0x4698e4[_0x154ab1]==='-'){_0x48693c=this['edges'][_0x4ea566][_0x5c82f9][_0x532f('0x11')];logger[_0x532f('0xb')](_0x532f('0x12'),_0x4698e4[_0x154ab1],this[_0x532f('0x8')][_0x4ea566][_0x5c82f9][_0x532f('0x11')]);}else if(this['vertices'][_0x4ea566][_0x532f('0x10')]===_0x532f('0x13')&&_0x4698e4[_0x154ab1]==='i'){_0x48693c=this[_0x532f('0x8')][_0x4ea566][_0x5c82f9][_0x532f('0x11')];logger[_0x532f('0xb')]('invalid',_0x4698e4[_0x154ab1],this[_0x532f('0x8')][_0x4ea566][_0x5c82f9][_0x532f('0x11')]);}if(_0x4698e4[_0x154ab1]===_0x15007f){return this['traverseBFS'](this[_0x532f('0x8')][_0x4ea566][_0x5c82f9][_0x532f('0x11')],_0x397e0b);}}}else{return this[_0x532f('0xa')](this[_0x532f('0x8')][_0x4ea566][_0x5c82f9][_0x532f('0x11')],_0x397e0b);}}if(_0x4698e4[_0x532f('0xc')]){if(this[_0x532f('0x4')][_0x4ea566][_0x532f('0x10')]===_0x532f('0x14')){if(_0x48693c){return this[_0x532f('0xa')](_0x48693c,_0x397e0b);}return logger[_0x532f('0xb')](_0x532f('0x15'));}else if(_[_0x532f('0x16')](verticesWithRetry,this[_0x532f('0x4')][_0x4ea566][_0x532f('0x10')])){if(_0x15007f==='-'){return logger['info'](_0x532f('0x17'));}if(_0x48693c&&_0x15007f!=='t'){return this[_0x532f('0xa')](_0x48693c,_0x397e0b);}return this[_0x532f('0xa')](_0x4ea566,_0x397e0b);}return logger['info'](_0x532f('0x18'));}};module[_0x532f('0x19')]=Graph;
\ No newline at end of file
index c9518cf..9e9abc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf723=['stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','format','[%s]\x20%s','[ERROR]\x20%s','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','createSquareReport','then','catch','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','find','production','handleUnpublished','initialize','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','[LICENSE]','finally','./server','listening','connection','lodash','syncho','util','../../config/environment','agi','../../config/license/util','./rpc','./project','EventEmitter','defaults','127.0.0.1','nextTick','error','deleted','push'];(function(_0x57d5c1,_0x55a5ef){var _0x4347c1=function(_0x4bf418){while(--_0x4bf418){_0x57d5c1['push'](_0x57d5c1['shift']());}};_0x4347c1(++_0x55a5ef);}(_0xf723,0x195));var _0x3f72=function(_0x2714ec,_0x36daa4){_0x2714ec=_0x2714ec-0x0;var _0x2608e5=_0xf723[_0x2714ec];return _0x2608e5;};'use strict';var _=require(_0x3f72('0x0'));var syncho=require(_0x3f72('0x1'));var util=require(_0x3f72('0x2'));var config=require(_0x3f72('0x3'));var logger=require('../../config/logger')(_0x3f72('0x4'));var utilLicense=require(_0x3f72('0x5'));var rpc=require(_0x3f72('0x6'));var Project=require(_0x3f72('0x7'));var AGIEmitter=require('./events')[_0x3f72('0x8')];var projects=[];config['agi']=_[_0x3f72('0x9')](config['agi'],{'ip':_0x3f72('0xa'),'port':0x11dd});AGIEmitter['on']('projectUpdate',projectUpdateHandler);function connectionHandler(_0x2b1172){process[_0x3f72('0xb')](function(){syncho(function(){try{setChannelVariables(_0x2b1172);agiHandler(_0x2b1172);}catch(_0x37e3fd){logger[_0x3f72('0xc')](_0x37e3fd['stack']);}});});}function projectUpdateHandler(_0x3cb8d0){try{var _0x841620=_['findIndex'](projects,['id',_0x3cb8d0['id']]);if(_0x841620>-0x1){if(_0x3cb8d0[_0x3f72('0xd')]===!![]){projects['splice'](_0x841620,0x1);}else{projects[_0x841620]=_0x3cb8d0;}}else{projects[_0x3f72('0xe')](_0x3cb8d0);}}catch(_0x19297e){logger[_0x3f72('0xc')](_0x19297e[_0x3f72('0xf')]);}}function listeningHandler(){console[_0x3f72('0x10')](_0x3f72('0x11'),config[_0x3f72('0x4')][_0x3f72('0x12')]);logger[_0x3f72('0x13')](util['format'](_0x3f72('0x14'),config[_0x3f72('0x4')]['ip'],config[_0x3f72('0x4')][_0x3f72('0x12')]));}function errorHandler(_0x5b0111){if(_0x5b0111&&_0x5b0111[_0x3f72('0x15')]&&_0x5b0111[_0x3f72('0x16')]){logger[_0x3f72('0xc')](util[_0x3f72('0x17')](_0x3f72('0x18'),_0x5b0111[_0x3f72('0x15')],_0x5b0111[_0x3f72('0x16')]));}else{logger[_0x3f72('0xc')](util['format'](_0x3f72('0x19'),_0x5b0111['stack']));}}function closeHandler(){logger[_0x3f72('0x13')](util[_0x3f72('0x17')](_0x3f72('0x1a'),this[_0x3f72('0x1b')],this[_0x3f72('0x1c')],this[_0x3f72('0x1d')],this[_0x3f72('0x1e')],this[_0x3f72('0x1f')]));try{createSquareReport(this);}catch(_0x231ab6){logger[_0x3f72('0xc')](_0x231ab6['stack']);}}function timeoutHandler(){logger[_0x3f72('0x13')](util[_0x3f72('0x17')](_0x3f72('0x20'),this[_0x3f72('0x1b')],this[_0x3f72('0x1c')],this[_0x3f72('0x1d')],this['dnid'],this[_0x3f72('0x1f')]));}function hangupHandler(){logger[_0x3f72('0x13')](util[_0x3f72('0x17')](_0x3f72('0x21'),this['arg_1'],this[_0x3f72('0x1c')],this['callerid'],this[_0x3f72('0x1e')],this[_0x3f72('0x1f')]));this[_0x3f72('0x22')]=!![];}function createSquareReport(_0x2db94b,_0x2561f4){rpc[_0x3f72('0x23')](_0x2db94b)[_0x3f72('0x24')](function(_0xdaf96d){if(_0x2561f4){_0x2561f4(null,_0xdaf96d);}})[_0x3f72('0x25')](function(_0x2fd156){if(_0x2561f4){_0x2561f4(null,_0x2fd156);}});}function setChannelVariables(_0x4f363f){for(var _0x592056 in _0x4f363f){if(_0x4f363f['hasOwnProperty'](_0x592056)){if(_0x592056['indexOf']('agi_')===0x0){_0x4f363f[_0x592056['substring'](0x4)]=_0x4f363f[_0x592056];delete _0x4f363f[_0x592056];}}}}function agiHandler(_0x22b181){logger['debug'](_0x3f72('0x26'),JSON[_0x3f72('0x27')](_0x22b181,null,0x2));logger[_0x3f72('0x13')](util[_0x3f72('0x17')](_0x3f72('0x28'),_0x22b181[_0x3f72('0x1b')],_0x22b181[_0x3f72('0x1c')],_0x22b181[_0x3f72('0x1d')],_0x22b181[_0x3f72('0x1e')],_0x22b181[_0x3f72('0x1f')]));_0x22b181['on'](_0x3f72('0xc'),errorHandler);_0x22b181['on'](_0x3f72('0x29'),closeHandler);_0x22b181['on'](_0x3f72('0x2a'),timeoutHandler);_0x22b181[_0x3f72('0x22')]=![];_0x22b181['on'](_0x3f72('0x2b'),hangupHandler);var _0x45c8fe=_[_0x3f72('0x2c')](projects,['name',_0x22b181[_0x3f72('0x1b')]]);if(!_0x45c8fe)return Project['handleNotFound'](_0x22b181);if(!_0x45c8fe[_0x3f72('0x2d')])return Project[_0x3f72('0x2e')](_0x22b181);return Project[_0x3f72('0x2f')](_0x45c8fe,_0x22b181);}function main(){var _0x36d9cc;return utilLicense[_0x3f72('0x30')]()[_0x3f72('0x24')](function(_0x89787a){if(!_0x89787a)return;if(_0x89787a[_0x3f72('0x31')]){if(_0x89787a[_0x3f72('0x32')]&&_0x89787a[_0x3f72('0x32')]>0x0){logger[_0x3f72('0x13')](util[_0x3f72('0x17')](_0x3f72('0x33'),_0x89787a[_0x3f72('0x32')]));_0x36d9cc=_0x89787a['callysquare'];}else{logger[_0x3f72('0x13')](_0x3f72('0x34'));}}else{logger['info'](_0x3f72('0x35'));_0x36d9cc=-0x1;}})['then'](function(){return Project[_0x3f72('0x36')]();})[_0x3f72('0x24')](function(_0x3d63fd){projects=_0x3d63fd;return;})['catch'](function(_0x41b198){logger['error'](_0x3f72('0x37'),_0x41b198[_0x3f72('0xf')]);})[_0x3f72('0x38')](function(){var _0x422de6=require(_0x3f72('0x39'))(config[_0x3f72('0x4')]['port'],config[_0x3f72('0x4')]['ip'],_0x36d9cc);_0x422de6['on'](_0x3f72('0xc'),errorHandler);_0x422de6['on'](_0x3f72('0x3a'),listeningHandler);_0x422de6['on'](_0x3f72('0x3b'),connectionHandler);_0x422de6['on']('close',closeHandler);});}main();
\ No newline at end of file
+var _0x3e55=['catch','hasOwnProperty','indexOf','substring','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','find','handleNotFound','production','handleUnpublished','initialize','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','./server','listening','lodash','agi','../../config/license/util','./rpc','./project','./events','127.0.0.1','projectUpdate','nextTick','error','stack','findIndex','splice','push','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','format','[%s]\x20%s','[ERROR]\x20%s','info','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','then'];(function(_0x1e4543,_0x53081e){var _0x229f7e=function(_0x28290f){while(--_0x28290f){_0x1e4543['push'](_0x1e4543['shift']());}};_0x229f7e(++_0x53081e);}(_0x3e55,0x11f));var _0x53e5=function(_0x73b5ae,_0x53dbd9){_0x73b5ae=_0x73b5ae-0x0;var _0x2c4e6e=_0x3e55[_0x73b5ae];return _0x2c4e6e;};'use strict';var _=require(_0x53e5('0x0'));var syncho=require('syncho');var util=require('util');var config=require('../../config/environment');var logger=require('../../config/logger')(_0x53e5('0x1'));var utilLicense=require(_0x53e5('0x2'));var rpc=require(_0x53e5('0x3'));var Project=require(_0x53e5('0x4'));var AGIEmitter=require(_0x53e5('0x5'))['EventEmitter'];var projects=[];config[_0x53e5('0x1')]=_['defaults'](config[_0x53e5('0x1')],{'ip':_0x53e5('0x6'),'port':0x11dd});AGIEmitter['on'](_0x53e5('0x7'),projectUpdateHandler);function connectionHandler(_0x3ede84){process[_0x53e5('0x8')](function(){syncho(function(){try{setChannelVariables(_0x3ede84);agiHandler(_0x3ede84);}catch(_0x33c718){logger[_0x53e5('0x9')](_0x33c718[_0x53e5('0xa')]);}});});}function projectUpdateHandler(_0x191e34){try{var _0x28d9f1=_[_0x53e5('0xb')](projects,['id',_0x191e34['id']]);if(_0x28d9f1>-0x1){if(_0x191e34['deleted']===!![]){projects[_0x53e5('0xc')](_0x28d9f1,0x1);}else{projects[_0x28d9f1]=_0x191e34;}}else{projects[_0x53e5('0xd')](_0x191e34);}}catch(_0x1e00c4){logger[_0x53e5('0x9')](_0x1e00c4[_0x53e5('0xa')]);}}function listeningHandler(){console['log'](_0x53e5('0xe'),config[_0x53e5('0x1')][_0x53e5('0xf')]);logger['info'](util['format'](_0x53e5('0x10'),config[_0x53e5('0x1')]['ip'],config['agi'][_0x53e5('0xf')]));}function errorHandler(_0x21bb36){if(_0x21bb36&&_0x21bb36[_0x53e5('0x11')]&&_0x21bb36[_0x53e5('0x12')]){logger['error'](util[_0x53e5('0x13')](_0x53e5('0x14'),_0x21bb36[_0x53e5('0x11')],_0x21bb36[_0x53e5('0x12')]));}else{logger[_0x53e5('0x9')](util[_0x53e5('0x13')](_0x53e5('0x15'),_0x21bb36[_0x53e5('0xa')]));}}function closeHandler(){logger[_0x53e5('0x16')](util[_0x53e5('0x13')](_0x53e5('0x17'),this['arg_1'],this[_0x53e5('0x18')],this[_0x53e5('0x19')],this[_0x53e5('0x1a')],this[_0x53e5('0x1b')]));try{createSquareReport(this);}catch(_0x5c5394){logger['error'](_0x5c5394[_0x53e5('0xa')]);}}function timeoutHandler(){logger[_0x53e5('0x16')](util['format'](_0x53e5('0x1c'),this[_0x53e5('0x1d')],this[_0x53e5('0x18')],this[_0x53e5('0x19')],this[_0x53e5('0x1a')],this[_0x53e5('0x1b')]));}function hangupHandler(){logger[_0x53e5('0x16')](util['format']('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x53e5('0x1d')],this['calleridname'],this[_0x53e5('0x19')],this[_0x53e5('0x1a')],this['uniqueid']));this['evtHangup']=!![];}function createSquareReport(_0x47aad7,_0x4037e7){rpc['createSquareReport'](_0x47aad7)[_0x53e5('0x1e')](function(_0x363c32){if(_0x4037e7){_0x4037e7(null,_0x363c32);}})[_0x53e5('0x1f')](function(_0x264eda){if(_0x4037e7){_0x4037e7(null,_0x264eda);}});}function setChannelVariables(_0x53b0d8){for(var _0x558bbf in _0x53b0d8){if(_0x53b0d8[_0x53e5('0x20')](_0x558bbf)){if(_0x558bbf[_0x53e5('0x21')]('agi_')===0x0){_0x53b0d8[_0x558bbf[_0x53e5('0x22')](0x4)]=_0x53b0d8[_0x558bbf];delete _0x53b0d8[_0x558bbf];}}}}function agiHandler(_0x1b38b9){logger['debug']('variables',JSON[_0x53e5('0x23')](_0x1b38b9,null,0x2));logger[_0x53e5('0x16')](util['format'](_0x53e5('0x24'),_0x1b38b9[_0x53e5('0x1d')],_0x1b38b9[_0x53e5('0x18')],_0x1b38b9[_0x53e5('0x19')],_0x1b38b9[_0x53e5('0x1a')],_0x1b38b9[_0x53e5('0x1b')]));_0x1b38b9['on'](_0x53e5('0x9'),errorHandler);_0x1b38b9['on'](_0x53e5('0x25'),closeHandler);_0x1b38b9['on'](_0x53e5('0x26'),timeoutHandler);_0x1b38b9['evtHangup']=![];_0x1b38b9['on'](_0x53e5('0x27'),hangupHandler);var _0x533924=_[_0x53e5('0x28')](projects,[_0x53e5('0x11'),_0x1b38b9[_0x53e5('0x1d')]]);if(!_0x533924)return Project[_0x53e5('0x29')](_0x1b38b9);if(!_0x533924[_0x53e5('0x2a')])return Project[_0x53e5('0x2b')](_0x1b38b9);return Project[_0x53e5('0x2c')](_0x533924,_0x1b38b9);}function main(){var _0x3dd37d;return utilLicense['getLicense']()['then'](function(_0x198dd7){if(!_0x198dd7)return;if(_0x198dd7[_0x53e5('0x2d')]){if(_0x198dd7['callysquare']&&_0x198dd7[_0x53e5('0x2e')]>0x0){logger[_0x53e5('0x16')](util['format'](_0x53e5('0x2f'),_0x198dd7[_0x53e5('0x2e')]));_0x3dd37d=_0x198dd7[_0x53e5('0x2e')];}else{logger[_0x53e5('0x16')](_0x53e5('0x30'));}}else{logger[_0x53e5('0x16')](_0x53e5('0x31'));_0x3dd37d=-0x1;}})['then'](function(){return Project[_0x53e5('0x32')]();})['then'](function(_0x3e6343){projects=_0x3e6343;return;})[_0x53e5('0x1f')](function(_0x81f54f){logger[_0x53e5('0x9')]('[LICENSE]',_0x81f54f['stack']);})['finally'](function(){var _0x4aaa45=require(_0x53e5('0x33'))(config[_0x53e5('0x1')]['port'],config['agi']['ip'],_0x3dd37d);_0x4aaa45['on'](_0x53e5('0x9'),errorHandler);_0x4aaa45['on'](_0x53e5('0x34'),listeningHandler);_0x4aaa45['on']('connection',connectionHandler);_0x4aaa45['on'](_0x53e5('0x25'),closeHandler);});}main();
\ No newline at end of file
index a4053f9..5540f47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe251=['jayson/promise','client','http','then','error','result','catch','sendMailMessage','SendMail','bluebird'];(function(_0x2c774a,_0x352459){var _0x38e640=function(_0x589da8){while(--_0x589da8){_0x2c774a['push'](_0x2c774a['shift']());}};_0x38e640(++_0x352459);}(_0xe251,0x9f));var _0x1e25=function(_0xf4eae3,_0x438eba){_0xf4eae3=_0xf4eae3-0x0;var _0x441c2a=_0xe251[_0xf4eae3];return _0x441c2a;};'use strict';var BPromise=require(_0x1e25('0x0'));var jayson=require(_0x1e25('0x1'));var client=jayson[_0x1e25('0x2')][_0x1e25('0x3')]({'port':0x232b});function request(_0x563b24,_0x1d96ba){return new BPromise(function(_0x4a2b4d,_0x28d6f1){return client['request'](_0x563b24,_0x1d96ba)[_0x1e25('0x4')](function(_0x556554){if(_0x556554[_0x1e25('0x5')]){return _0x28d6f1(_0x556554[_0x1e25('0x5')]['message']);}else{return _0x4a2b4d(_0x556554[_0x1e25('0x6')]);}})[_0x1e25('0x7')](function(_0x41547c){return _0x28d6f1(_0x41547c);});});}exports[_0x1e25('0x8')]=function(_0x7ef9,_0x44d90e){return request(_0x1e25('0x9'),{'account':_0x7ef9,'message':_0x44d90e});};
\ No newline at end of file
+var _0x2f1b=['SendMail','bluebird','jayson/promise','then','error','message','result','sendMailMessage'];(function(_0x30d74b,_0x4e619f){var _0x5c13e5=function(_0x449d8){while(--_0x449d8){_0x30d74b['push'](_0x30d74b['shift']());}};_0x5c13e5(++_0x4e619f);}(_0x2f1b,0x149));var _0xb2f1=function(_0x179680,_0x4017e9){_0x179680=_0x179680-0x0;var _0x2e4368=_0x2f1b[_0x179680];return _0x2e4368;};'use strict';var BPromise=require(_0xb2f1('0x0'));var jayson=require(_0xb2f1('0x1'));var client=jayson['client']['http']({'port':0x232b});function request(_0x130384,_0x14d796){return new BPromise(function(_0x2f27d2,_0x2d0222){return client['request'](_0x130384,_0x14d796)[_0xb2f1('0x2')](function(_0x315667){if(_0x315667[_0xb2f1('0x3')]){return _0x2d0222(_0x315667['error'][_0xb2f1('0x4')]);}else{return _0x2f27d2(_0x315667[_0xb2f1('0x5')]);}})['catch'](function(_0x5ed864){return _0x2d0222(_0x5ed864);});});}exports[_0xb2f1('0x6')]=function(_0x5af3c0,_0x2e9893){return request(_0xb2f1('0x7'),{'account':_0x5af3c0,'message':_0x2e9893});};
\ No newline at end of file
index 2f333ee..de6b775 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9c8=['gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','evtHangup','isUndefined','result','error','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','calleridname','dnid','toString','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20found','close','Project\x20%s\x20not\x20published','exports','moment','xml2json','./rpc','./mailRpc','./graph','./vertices','getSquareProjects','catch','Unable\x20to\x20download\x20CallySquare\x20projects','agicommand','hasOwnProperty','retry','addVertex','omit','mxCell','isArray','source','addEdge','target','value','toJson','mxGraphModel','root','inspect','start','debug','joinAt','format','YYYY-MM-DD\x20HH:mm:ss','info','arg_1','callerid','uniqueid','traverseBFS','clear','vertex','stringify'];(function(_0x589fa3,_0x113d54){var _0x303b9b=function(_0x1c2ed2){while(--_0x1c2ed2){_0x589fa3['push'](_0x589fa3['shift']());}};_0x303b9b(++_0x113d54);}(_0xf9c8,0x92));var _0x8f9c=function(_0x5ad771,_0x34186f){_0x5ad771=_0x5ad771-0x0;var _0x5b5dce=_0xf9c8[_0x5ad771];return _0x5b5dce;};'use strict';var _=require('lodash');var moment=require(_0x8f9c('0x0'));var parser=require(_0x8f9c('0x1'));var util=require('util');var logger=require('../../config/logger')('agi');var rpc=require(_0x8f9c('0x2'));var mailRpc=require(_0x8f9c('0x3'));var Graph=require(_0x8f9c('0x4'));var Vertices=require(_0x8f9c('0x5'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0x8f9c('0x6')]()[_0x8f9c('0x7')](function(_0x5d17e4){logger['error'](_0x8f9c('0x8'),_0x5d17e4['stack']);return[];});}function addVertex(_0x30fbfd,_0x1b973f,_0x1452fc){_0x1b973f[_0x8f9c('0x9')]=_0x1452fc;if(_0x1b973f[_0x8f9c('0xa')](_0x8f9c('0xb'))){_0x1b973f['maxRetry']=parseInt(_0x1b973f['retry'],0xa);}_0x30fbfd[_0x8f9c('0xc')](_[_0x8f9c('0xd')](_0x1b973f,_0x8f9c('0xe')));}function initGraph(_0x1c27c2,_0x30d4d2){var _0x2447df=new Graph();for(var _0x2f3d23 in _0x1c27c2){if(_0x1c27c2[_0x8f9c('0xa')](_0x2f3d23)){if(_[_0x8f9c('0xf')](_0x1c27c2[_0x2f3d23])){for(var _0x333163=0x0;_0x333163<_0x1c27c2[_0x2f3d23]['length'];_0x333163+=0x1){addVertex(_0x2447df,_0x1c27c2[_0x2f3d23][_0x333163],_0x2f3d23);}}else{addVertex(_0x2447df,_0x1c27c2[_0x2f3d23],_0x2f3d23);}}}for(var _0x41424b=0x0;_0x41424b<_0x30d4d2['length'];_0x41424b+=0x1){if(_0x30d4d2[_0x41424b][_0x8f9c('0x10')]&&_0x30d4d2[_0x41424b]['target']){_0x2447df[_0x8f9c('0x11')](_0x30d4d2[_0x41424b][_0x8f9c('0x10')],_0x30d4d2[_0x41424b][_0x8f9c('0x12')],_0x30d4d2[_0x41424b][_0x8f9c('0x13')]);}}return _0x2447df;}function getRoot(_0x1c1eb1){return parser[_0x8f9c('0x14')](_0x1c1eb1,{'object':!![]})[_0x8f9c('0x15')][_0x8f9c('0x16')];}function inspect(_0x419a25){return util[_0x8f9c('0x17')](_0x419a25,{'showHidden':![],'depth':null});}function initialize(_0x10548d,_0x579caa){var _0x537eeb=getRoot(_0x10548d['production']);if(!_0x537eeb||!_0x537eeb[_0x8f9c('0x18')])return;var _0x2ad8ab,_0x51958f,_0x303196;logger[_0x8f9c('0x19')](_0x8f9c('0x16'),JSON['stringify'](_0x537eeb,null,0x2));_0x579caa[_0x8f9c('0x1a')]=moment()[_0x8f9c('0x1b')](_0x8f9c('0x1c'));_0x2ad8ab=initGraph(_['omit'](_0x537eeb,_0x8f9c('0xe')),_0x537eeb[_0x8f9c('0xe')]);_0x51958f=new Vertices(_0x579caa,rpc,mailRpc);logger[_0x8f9c('0x1d')](util['format']('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x579caa[_0x8f9c('0x1e')],_0x579caa['calleridname'],_0x579caa[_0x8f9c('0x1f')],_0x579caa['dnid'],_0x579caa[_0x8f9c('0x20')]));_0x2ad8ab[_0x8f9c('0x21')](_0x537eeb[_0x8f9c('0x18')]['id'],function(_0x11366b){try{_0x11366b=_0x51958f[_0x8f9c('0x22')](_0x11366b);logger['debug'](_0x8f9c('0x23'),JSON[_0x8f9c('0x24')](_0x11366b,null,0x2));if(_0x11366b['agicommand']===_0x8f9c('0x25')){logger[_0x8f9c('0x1d')](_0x8f9c('0x26'));_0x579caa[_0x8f9c('0x27')]=_0x11366b[_0x8f9c('0x27')]||_0x579caa['context'];_0x579caa['extension']=_0x11366b[_0x8f9c('0x28')];_0x579caa[_0x8f9c('0x29')]=_0x11366b[_0x8f9c('0x29')]?_0x11366b[_0x8f9c('0x29')]-0x1:0x1;return null;}else if(_0x11366b&&_0x51958f[_0x11366b['agicommand']]){_0x303196=_0x51958f[_0x11366b[_0x8f9c('0x9')]](_0x11366b);logger['info'](_0x8f9c('0x2a'),JSON[_0x8f9c('0x24')](_0x303196,null,0x2));if(_0x303196&&_0x303196['code']===AGI_CODE_SUCCESS&&_0x303196['result']!==AGI_RESULT_ERROR&&!_0x579caa[_0x8f9c('0x2b')]){logger['debug']('response',inspect(_0x303196));return _[_0x8f9c('0x2c')](_0x303196[_0x8f9c('0x2d')])?null:_0x303196[_0x8f9c('0x2d')]['toString']();}else{logger['error'](_0x8f9c('0x2a'),inspect(_0x303196));return null;}}else{logger[_0x8f9c('0x2e')](_0x8f9c('0x2f'));return null;}}catch(_0x3313aa){logger['error'](_0x3313aa[_0x8f9c('0x30')]);return null;}});if(_0x537eeb[_0x8f9c('0x31')]){logger[_0x8f9c('0x1d')](util['format'](_0x8f9c('0x32'),_0x579caa[_0x8f9c('0x1e')],_0x579caa[_0x8f9c('0x33')],_0x579caa['callerid'],_0x579caa[_0x8f9c('0x34')],_0x579caa[_0x8f9c('0x20')]));_0x2ad8ab[_0x8f9c('0x21')](_0x537eeb[_0x8f9c('0x31')]['id'],function(_0x1a2c0b){try{_0x1a2c0b=_0x51958f[_0x8f9c('0x22')](_0x1a2c0b);logger['debug'](_0x8f9c('0x23'),JSON[_0x8f9c('0x24')](_0x1a2c0b,null,0x2));if(_0x1a2c0b&&_0x51958f[_0x1a2c0b['agicommand']]){_0x303196=_0x51958f[_0x1a2c0b[_0x8f9c('0x9')]](_0x1a2c0b);if(_0x303196){logger[_0x8f9c('0x19')]('response',inspect(_0x303196));return _[_0x8f9c('0x2c')](_0x303196[_0x8f9c('0x2d')])?null:_0x303196[_0x8f9c('0x2d')][_0x8f9c('0x35')]();}else{logger[_0x8f9c('0x2e')]('response',inspect(_0x303196));return null;}}else{logger['error'](_0x8f9c('0x2f'));return null;}}catch(_0x20e926){logger[_0x8f9c('0x2e')](_0x20e926[_0x8f9c('0x30')]);return null;}});}logger[_0x8f9c('0x1d')](util[_0x8f9c('0x1b')](_0x8f9c('0x36'),_0x579caa[_0x8f9c('0x1e')],_0x579caa[_0x8f9c('0x33')],_0x579caa[_0x8f9c('0x1f')],_0x579caa[_0x8f9c('0x34')],_0x579caa[_0x8f9c('0x20')]));logger[_0x8f9c('0x1d')](util[_0x8f9c('0x1b')](_0x8f9c('0x37'),_0x579caa[_0x8f9c('0x27')],_0x579caa[_0x8f9c('0x28')],parseInt(_0x579caa[_0x8f9c('0x29')],0xa)+0x1));_0x579caa[_0x8f9c('0x38')](_0x579caa['context'],_0x579caa[_0x8f9c('0x28')],parseInt(_0x579caa[_0x8f9c('0x29')],0xa)+0x1);_0x579caa['close']();}function handleNotFound(_0x5dc6f4){logger[_0x8f9c('0x2e')](util['format'](_0x8f9c('0x39'),_0x5dc6f4[_0x8f9c('0x1e')]));_0x5dc6f4['continueAt'](_0x5dc6f4[_0x8f9c('0x27')],_0x5dc6f4[_0x8f9c('0x28')],parseInt(_0x5dc6f4[_0x8f9c('0x29')],0xa)+0x1);_0x5dc6f4[_0x8f9c('0x3a')]();}function handleUnpublished(_0x294bce){logger[_0x8f9c('0x2e')](util['format'](_0x8f9c('0x3b'),_0x294bce[_0x8f9c('0x1e')]));_0x294bce[_0x8f9c('0x38')](_0x294bce['context'],_0x294bce[_0x8f9c('0x28')],parseInt(_0x294bce['priority'],0xa)+0x1);_0x294bce[_0x8f9c('0x3a')]();}module[_0x8f9c('0x3c')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
+var _0x95b8=['root','production','start','debug','stringify','joinAt','YYYY-MM-DD\x20HH:mm:ss','info','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','traverseBFS','clear','vertex','agicommand','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','result','toString','finally','format','isUndefined','agicommand\x20not\x20found','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','continueAt','close','exports','moment','util','../../config/logger','./rpc','./mailRpc','./graph','./vertices','error','Unable\x20to\x20download\x20CallySquare\x20projects','stack','retry','maxRetry','addVertex','omit','mxCell','hasOwnProperty','isArray','length','source','target','addEdge','value','toJson','mxGraphModel'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x95b8,0x10a));var _0x895b=function(_0x4c103b,_0x3f745d){_0x4c103b=_0x4c103b-0x0;var _0x58af11=_0x95b8[_0x4c103b];return _0x58af11;};'use strict';var _=require('lodash');var moment=require(_0x895b('0x0'));var parser=require('xml2json');var util=require(_0x895b('0x1'));var logger=require(_0x895b('0x2'))('agi');var rpc=require(_0x895b('0x3'));var mailRpc=require(_0x895b('0x4'));var Graph=require(_0x895b('0x5'));var Vertices=require(_0x895b('0x6'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc['getSquareProjects']()['catch'](function(_0x3c379d){logger[_0x895b('0x7')](_0x895b('0x8'),_0x3c379d[_0x895b('0x9')]);return[];});}function addVertex(_0xd99658,_0x482173,_0x73f6c3){_0x482173['agicommand']=_0x73f6c3;if(_0x482173['hasOwnProperty'](_0x895b('0xa'))){_0x482173[_0x895b('0xb')]=parseInt(_0x482173[_0x895b('0xa')],0xa);}_0xd99658[_0x895b('0xc')](_[_0x895b('0xd')](_0x482173,_0x895b('0xe')));}function initGraph(_0x30fc03,_0x24d2c2){var _0x30d5ea=new Graph();for(var _0x9c388f in _0x30fc03){if(_0x30fc03[_0x895b('0xf')](_0x9c388f)){if(_[_0x895b('0x10')](_0x30fc03[_0x9c388f])){for(var _0x2b93aa=0x0;_0x2b93aa<_0x30fc03[_0x9c388f][_0x895b('0x11')];_0x2b93aa+=0x1){addVertex(_0x30d5ea,_0x30fc03[_0x9c388f][_0x2b93aa],_0x9c388f);}}else{addVertex(_0x30d5ea,_0x30fc03[_0x9c388f],_0x9c388f);}}}for(var _0x394bac=0x0;_0x394bac<_0x24d2c2[_0x895b('0x11')];_0x394bac+=0x1){if(_0x24d2c2[_0x394bac][_0x895b('0x12')]&&_0x24d2c2[_0x394bac][_0x895b('0x13')]){_0x30d5ea[_0x895b('0x14')](_0x24d2c2[_0x394bac][_0x895b('0x12')],_0x24d2c2[_0x394bac][_0x895b('0x13')],_0x24d2c2[_0x394bac][_0x895b('0x15')]);}}return _0x30d5ea;}function getRoot(_0x4360c3){return parser[_0x895b('0x16')](_0x4360c3,{'object':!![]})[_0x895b('0x17')][_0x895b('0x18')];}function inspect(_0x557246){return util['inspect'](_0x557246,{'showHidden':![],'depth':null});}function initialize(_0x59c84a,_0x2ca930){var _0x346e9a=getRoot(_0x59c84a[_0x895b('0x19')]);if(!_0x346e9a||!_0x346e9a[_0x895b('0x1a')])return;var _0xbdaaf7,_0x1ed6c9,_0x25a673;logger[_0x895b('0x1b')](_0x895b('0x18'),JSON[_0x895b('0x1c')](_0x346e9a,null,0x2));_0x2ca930[_0x895b('0x1d')]=moment()['format'](_0x895b('0x1e'));_0xbdaaf7=initGraph(_[_0x895b('0xd')](_0x346e9a,'mxCell'),_0x346e9a[_0x895b('0xe')]);_0x1ed6c9=new Vertices(_0x2ca930,rpc,mailRpc);logger[_0x895b('0x1f')](util['format'](_0x895b('0x20'),_0x2ca930[_0x895b('0x21')],_0x2ca930[_0x895b('0x22')],_0x2ca930[_0x895b('0x23')],_0x2ca930[_0x895b('0x24')],_0x2ca930[_0x895b('0x25')]));_0xbdaaf7[_0x895b('0x26')](_0x346e9a[_0x895b('0x1a')]['id'],function(_0x3fbee4){try{_0x3fbee4=_0x1ed6c9[_0x895b('0x27')](_0x3fbee4);logger['debug'](_0x895b('0x28'),JSON[_0x895b('0x1c')](_0x3fbee4,null,0x2));if(_0x3fbee4[_0x895b('0x29')]===_0x895b('0x2a')){logger['info'](_0x895b('0x2b'));_0x2ca930['context']=_0x3fbee4['context']||_0x2ca930[_0x895b('0x2c')];_0x2ca930['extension']=_0x3fbee4[_0x895b('0x2d')];_0x2ca930[_0x895b('0x2e')]=_0x3fbee4['priority']?_0x3fbee4['priority']-0x1:0x1;return null;}else if(_0x3fbee4&&_0x1ed6c9[_0x3fbee4[_0x895b('0x29')]]){_0x25a673=_0x1ed6c9[_0x3fbee4[_0x895b('0x29')]](_0x3fbee4);logger[_0x895b('0x1f')](_0x895b('0x2f'),JSON['stringify'](_0x25a673,null,0x2));if(_0x25a673&&_0x25a673['code']===AGI_CODE_SUCCESS&&_0x25a673['result']!==AGI_RESULT_ERROR&&!_0x2ca930['evtHangup']){logger[_0x895b('0x1b')](_0x895b('0x2f'),inspect(_0x25a673));return _['isUndefined'](_0x25a673[_0x895b('0x30')])?null:_0x25a673[_0x895b('0x30')][_0x895b('0x31')]();}else{logger[_0x895b('0x7')]('response',inspect(_0x25a673));return null;}}else{logger[_0x895b('0x7')]('agicommand\x20not\x20found');return null;}}catch(_0x1b4044){logger['error'](_0x1b4044[_0x895b('0x9')]);return null;}});if(_0x346e9a[_0x895b('0x32')]){logger[_0x895b('0x1f')](util[_0x895b('0x33')]('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x2ca930[_0x895b('0x21')],_0x2ca930[_0x895b('0x22')],_0x2ca930[_0x895b('0x23')],_0x2ca930['dnid'],_0x2ca930[_0x895b('0x25')]));_0xbdaaf7[_0x895b('0x26')](_0x346e9a['finally']['id'],function(_0x1d13ca){try{_0x1d13ca=_0x1ed6c9[_0x895b('0x27')](_0x1d13ca);logger['debug']('vertex',JSON['stringify'](_0x1d13ca,null,0x2));if(_0x1d13ca&&_0x1ed6c9[_0x1d13ca[_0x895b('0x29')]]){_0x25a673=_0x1ed6c9[_0x1d13ca[_0x895b('0x29')]](_0x1d13ca);if(_0x25a673){logger[_0x895b('0x1b')](_0x895b('0x2f'),inspect(_0x25a673));return _[_0x895b('0x34')](_0x25a673['result'])?null:_0x25a673[_0x895b('0x30')][_0x895b('0x31')]();}else{logger[_0x895b('0x7')]('response',inspect(_0x25a673));return null;}}else{logger[_0x895b('0x7')](_0x895b('0x35'));return null;}}catch(_0x161a84){logger[_0x895b('0x7')](_0x161a84[_0x895b('0x9')]);return null;}});}logger[_0x895b('0x1f')](util['format'](_0x895b('0x36'),_0x2ca930[_0x895b('0x21')],_0x2ca930[_0x895b('0x22')],_0x2ca930[_0x895b('0x23')],_0x2ca930['dnid'],_0x2ca930[_0x895b('0x25')]));logger['info'](util[_0x895b('0x33')]('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x2ca930[_0x895b('0x2c')],_0x2ca930[_0x895b('0x2d')],parseInt(_0x2ca930[_0x895b('0x2e')],0xa)+0x1));_0x2ca930[_0x895b('0x37')](_0x2ca930[_0x895b('0x2c')],_0x2ca930[_0x895b('0x2d')],parseInt(_0x2ca930['priority'],0xa)+0x1);_0x2ca930[_0x895b('0x38')]();}function handleNotFound(_0x43f733){logger[_0x895b('0x7')](util[_0x895b('0x33')]('Project\x20%s\x20not\x20found',_0x43f733['arg_1']));_0x43f733[_0x895b('0x37')](_0x43f733['context'],_0x43f733[_0x895b('0x2d')],parseInt(_0x43f733[_0x895b('0x2e')],0xa)+0x1);_0x43f733[_0x895b('0x38')]();}function handleUnpublished(_0xd3adb2){logger[_0x895b('0x7')](util[_0x895b('0x33')]('Project\x20%s\x20not\x20published',_0xd3adb2['arg_1']));_0xd3adb2['continueAt'](_0xd3adb2['context'],_0xd3adb2['extension'],parseInt(_0xd3adb2[_0x895b('0x2e')],0xa)+0x1);_0xd3adb2['close']();}module[_0x895b('0x39')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
index c637c87..e270d77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6e5=['substring','split','slice','trim','length','emit','headers','line','exports','util','stream','Transform','call','_localBuffer','_inBody','prototype','_transform','\x0d\x0a\x0d\x0a','toString','indexOf'];(function(_0x413741,_0x273935){var _0x18b564=function(_0x1dc369){while(--_0x1dc369){_0x413741['push'](_0x413741['shift']());}};_0x18b564(++_0x273935);}(_0xb6e5,0x81));var _0x5b6e=function(_0x1d8863,_0x4a7d3d){_0x1d8863=_0x1d8863-0x0;var _0x4e1075=_0xb6e5[_0x1d8863];return _0x4e1075;};'use strict';var util=require(_0x5b6e('0x0'));var Transform=require(_0x5b6e('0x1'))[_0x5b6e('0x2')];function AGIReply(_0x3fb834){Transform[_0x5b6e('0x3')](this,_0x3fb834);this[_0x5b6e('0x4')]='';this[_0x5b6e('0x5')]=![];}util['inherits'](AGIReply,Transform);AGIReply[_0x5b6e('0x6')][_0x5b6e('0x7')]=function(_0x404036,_0x5b504b,_0x2457cd){var _0x5b459c='\x0a',_0x232721=['\x0a\x0a',_0x5b6e('0x8')],_0x2d49fc=-0x1,_0x3b67da=-0x1,_0x2724ea='',_0x4466f5=0x0,_0x589a6a='',_0x234a8d='';this[_0x5b6e('0x4')]+=_0x404036[_0x5b6e('0x9')]();_0x589a6a=this[_0x5b6e('0x4')];if(!this[_0x5b6e('0x5')]){_0x4466f5=0x0;while(_0x232721[_0x4466f5]){while((_0x3b67da=_0x589a6a[_0x5b6e('0xa')](_0x232721[_0x4466f5]))!=-0x1){_0x2724ea=_0x232721[_0x4466f5];_0x234a8d=_0x589a6a[_0x5b6e('0xb')](0x0,_0x3b67da);_0x589a6a=_0x589a6a[_0x5b6e('0xb')](_0x3b67da+_0x2724ea['length']);var _0x399aa5=_0x234a8d[_0x5b6e('0xc')](_0x5b459c),_0x4dcbd2=0x0,_0x2f7f7a={},_0x5cfece='',_0x53d585='',_0x10435d=-0x1;while(_0x399aa5[_0x4dcbd2]){_0x10435d=_0x399aa5[_0x4dcbd2]['indexOf'](':');if(_0x10435d!=-0x1){_0x5cfece=_0x399aa5[_0x4dcbd2][_0x5b6e('0xd')](0x0,_0x10435d)[_0x5b6e('0xe')]();_0x53d585=_0x399aa5[_0x4dcbd2][_0x5b6e('0xd')](_0x10435d+0x1)[_0x5b6e('0xe')]();if(_0x5cfece[_0x5b6e('0xf')]>0x0){_0x2f7f7a[_0x5cfece]=_0x53d585;}}else{}_0x4dcbd2++;}this[_0x5b6e('0x10')](_0x5b6e('0x11'),_0x2f7f7a);this[_0x5b6e('0x5')]=!![];}_0x4466f5++;}this[_0x5b6e('0x4')]=_0x589a6a;}else{while((_0x2d49fc=_0x589a6a[_0x5b6e('0xa')](_0x5b459c))!=-0x1){_0x234a8d=_0x589a6a[_0x5b6e('0xb')](0x0,_0x2d49fc);this[_0x5b6e('0x10')](_0x5b6e('0x12'),_0x234a8d);_0x589a6a=_0x589a6a[_0x5b6e('0xb')](_0x2d49fc+_0x5b459c['length']);}this['_localBuffer']=_0x589a6a;}_0x2457cd();};module[_0x5b6e('0x13')]=AGIReply;
\ No newline at end of file
+var _0x54d5=['line','util','stream','Transform','call','_localBuffer','_inBody','inherits','prototype','_transform','\x0d\x0a\x0d\x0a','toString','indexOf','substring','split','slice','trim','length','emit'];(function(_0x2f3899,_0x35d421){var _0x1447d6=function(_0x2cbd0a){while(--_0x2cbd0a){_0x2f3899['push'](_0x2f3899['shift']());}};_0x1447d6(++_0x35d421);}(_0x54d5,0x1c9));var _0x554d=function(_0x553e9e,_0x18f96c){_0x553e9e=_0x553e9e-0x0;var _0x2ba633=_0x54d5[_0x553e9e];return _0x2ba633;};'use strict';var util=require(_0x554d('0x0'));var Transform=require(_0x554d('0x1'))[_0x554d('0x2')];function AGIReply(_0x9710b5){Transform[_0x554d('0x3')](this,_0x9710b5);this[_0x554d('0x4')]='';this[_0x554d('0x5')]=![];}util[_0x554d('0x6')](AGIReply,Transform);AGIReply[_0x554d('0x7')][_0x554d('0x8')]=function(_0x20ccd3,_0x45f8f7,_0x373e9a){var _0x3b02c1='\x0a',_0xbfb36a=['\x0a\x0a',_0x554d('0x9')],_0x10e5d7=-0x1,_0x2bf169=-0x1,_0x6287b7='',_0x86b107=0x0,_0x34cc1e='',_0xd142f9='';this[_0x554d('0x4')]+=_0x20ccd3[_0x554d('0xa')]();_0x34cc1e=this[_0x554d('0x4')];if(!this['_inBody']){_0x86b107=0x0;while(_0xbfb36a[_0x86b107]){while((_0x2bf169=_0x34cc1e[_0x554d('0xb')](_0xbfb36a[_0x86b107]))!=-0x1){_0x6287b7=_0xbfb36a[_0x86b107];_0xd142f9=_0x34cc1e[_0x554d('0xc')](0x0,_0x2bf169);_0x34cc1e=_0x34cc1e[_0x554d('0xc')](_0x2bf169+_0x6287b7['length']);var _0x44f612=_0xd142f9[_0x554d('0xd')](_0x3b02c1),_0xd1822e=0x0,_0x5c1633={},_0x42214a='',_0x15a285='',_0x5a37ca=-0x1;while(_0x44f612[_0xd1822e]){_0x5a37ca=_0x44f612[_0xd1822e][_0x554d('0xb')](':');if(_0x5a37ca!=-0x1){_0x42214a=_0x44f612[_0xd1822e]['slice'](0x0,_0x5a37ca)['trim']();_0x15a285=_0x44f612[_0xd1822e][_0x554d('0xe')](_0x5a37ca+0x1)[_0x554d('0xf')]();if(_0x42214a[_0x554d('0x10')]>0x0){_0x5c1633[_0x42214a]=_0x15a285;}}else{}_0xd1822e++;}this[_0x554d('0x11')]('headers',_0x5c1633);this[_0x554d('0x5')]=!![];}_0x86b107++;}this[_0x554d('0x4')]=_0x34cc1e;}else{while((_0x10e5d7=_0x34cc1e[_0x554d('0xb')](_0x3b02c1))!=-0x1){_0xd142f9=_0x34cc1e[_0x554d('0xc')](0x0,_0x10e5d7);this[_0x554d('0x11')](_0x554d('0x12'),_0xd142f9);_0x34cc1e=_0x34cc1e[_0x554d('0xc')](_0x10e5d7+_0x3b02c1[_0x554d('0x10')]);}this[_0x554d('0x4')]=_0x34cc1e;}_0x373e9a();};module['exports']=AGIReply;
\ No newline at end of file
index 00d1fc9..800e718 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f62=['catch','getSquareProject','getMailAccountById','MailServerOut','Smtp','getSquareProjectById','ShowSquareProject','name','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','getContactByPhone','phone','getTrunkById','ShowTrunk','getSoundById','ShowSound','save_name','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','CreateSquareReport','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','ListId','CreateCmContact','getPauseById','ShowPause','agentLogin','agentPause','PauseUser','agentUnpause','agentLogout','LogoutUser','moment','client','http','request','then','error','message','result'];(function(_0x1dcd2f,_0x36fc2b){var _0x2e6a8d=function(_0x4a01fa){while(--_0x4a01fa){_0x1dcd2f['push'](_0x1dcd2f['shift']());}};_0x2e6a8d(++_0x36fc2b);}(_0x9f62,0x154));var _0x29f6=function(_0x4d158b,_0x2940d4){_0x4d158b=_0x4d158b-0x0;var _0x48bdc9=_0x9f62[_0x4d158b];return _0x48bdc9;};'use strict';var _=require('lodash');var moment=require(_0x29f6('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x29f6('0x1')][_0x29f6('0x2')]({'port':0x2329});function request(_0x548050,_0x5618b7){return new Promise(function(_0x54d164,_0x258ddd){return client[_0x29f6('0x3')](_0x548050,_0x5618b7)[_0x29f6('0x4')](function(_0x1e71ac){if(_0x1e71ac['error']){return _0x258ddd(_0x1e71ac[_0x29f6('0x5')][_0x29f6('0x6')]);}else{return _0x54d164(_0x1e71ac[_0x29f6('0x7')]);}})[_0x29f6('0x8')](function(_0x416c6c){return _0x258ddd(_0x416c6c);});});}exports['getSquareProjects']=function(){return request('GetSquareProjects',{'options':{'raw':![],'attributes':['id','name','production']}});};exports[_0x29f6('0x9')]=function(_0x44db16){return request('ShowSquareProject',{'options':{'raw':![],'where':{'name':_0x44db16},'attributes':['production']}});};exports[_0x29f6('0xa')]=function(_0x442623){return request('ShowMailAccount',{'options':{'raw':![],'where':{'id':_0x442623},'include':[{'model':_0x29f6('0xb'),'as':_0x29f6('0xc'),'include':[{'model':'CloudProvider','as':'CloudProvider'}]}],'attributes':['id','name','email'],'smtp':!![]}});};exports[_0x29f6('0xd')]=function(_0x55cf4){return request(_0x29f6('0xe'),{'options':{'where':{'id':_0x55cf4},'attributes':[_0x29f6('0xf')]}});};exports[_0x29f6('0x10')]=function(_0x156c96){return request(_0x29f6('0x11'),{'options':{'where':{'id':_0x156c96},'attributes':[_0x29f6('0xf')]}});};exports[_0x29f6('0x12')]=function(_0x19331f){return request(_0x29f6('0x13'),{'options':{'where':{'id':_0x19331f},'attributes':[_0x29f6('0xf')]}});};exports[_0x29f6('0x14')]=function(_0x3a75d0){return request(_0x29f6('0x15'),{'options':{'where':{'id':_0x3a75d0},'attributes':[_0x29f6('0x16')]}});};exports[_0x29f6('0x17')]=function(_0x5bfda7){return request('ShowUser',{'options':{'where':{'id':_0x5bfda7},'attributes':[_0x29f6('0xf')]}});};exports[_0x29f6('0x18')]=function(_0xb31436){return request('GetContactByPhone',{'options':{'where':{'phone':_0xb31436[_0x29f6('0x19')]},'attributes':['id']}});};exports[_0x29f6('0x1a')]=function(_0x49252f){return request(_0x29f6('0x1b'),{'options':{'where':{'id':_0x49252f},'attributes':[_0x29f6('0xf')]}});};exports[_0x29f6('0x1c')]=function(_0x41b9f0){return request(_0x29f6('0x1d'),{'options':{'where':{'id':_0x41b9f0},'attributes':[_0x29f6('0x1e')]}});};exports['getIntervalById']=function(_0xfb8fd2){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0xfb8fd2},'include':[{'model':'Interval','as':_0x29f6('0x1f')}]}});};exports[_0x29f6('0x20')]=function(_0x39c6b3){return request(_0x29f6('0x21'),{'options':{'where':{'id':_0x39c6b3},'attributes':['id','name']}});};exports[_0x29f6('0x22')]=function(_0x49f67d){return request(_0x29f6('0x23'),{'body':_0x49f67d});};exports[_0x29f6('0x24')]=function(_0x4200cc){return request(_0x29f6('0x25'),{'body':_0x4200cc});};exports['createSquareReport']=function(_0x4290a2){return request(_0x29f6('0x26'),{'body':_['merge'](_0x4290a2,{'project_name':_0x4290a2[_0x29f6('0x27')],'prev_project_name':_0x4290a2[_0x29f6('0x28')]||'','is_subproject':_0x4290a2[_0x29f6('0x28')]?!![]:![],'leaveAt':moment()[_0x29f6('0x29')](_0x29f6('0x2a'))})});};exports[_0x29f6('0x2b')]=function(_0x23c630){return request('CreateSquareRecording',{'body':_0x23c630});};exports[_0x29f6('0x2c')]=function(_0x454a4a){return request(_0x29f6('0x2d'),{'body':_0x454a4a});};exports[_0x29f6('0x2e')]=function(_0xda0a63){return request(_0x29f6('0x2f'),{'options':{'raw':![],'where':{'phone':_0xda0a63[_0x29f6('0x19')],'ListId':_0xda0a63[_0x29f6('0x30')]}}})[_0x29f6('0x4')](function(_0x13a3a2){if(_0x13a3a2){return _0x13a3a2;}return request(_0x29f6('0x31'),{'body':_0xda0a63});});};exports[_0x29f6('0x32')]=function(_0x40c830){return request(_0x29f6('0x33'),{'options':{'where':{'id':_0x40c830},'attributes':[_0x29f6('0xf')]}});};exports[_0x29f6('0x34')]=function(_0x3a7249,_0x5492c2){return request('LoginUser',{'body':{'interface':_0x5492c2},'options':{'where':_0x3a7249}});};exports[_0x29f6('0x35')]=function(_0x489897,_0x341071,_0xc8d2c5){return request(_0x29f6('0x36'),{'body':{'type':_0x341071,'uniqueid':_0xc8d2c5},'options':{'where':_0x489897}});};exports[_0x29f6('0x37')]=function(_0x5e5d89){return request('UnpauseUser',{'body':{},'options':{'where':_0x5e5d89}});};exports[_0x29f6('0x38')]=function(_0xa6377c){return request(_0x29f6('0x39'),{'body':{},'options':{'where':_0xa6377c}});};
\ No newline at end of file
+var _0x6631=['jayson/promise','client','http','request','then','error','message','result','catch','getSquareProjects','GetSquareProjects','production','ShowMailAccount','MailServerOut','Smtp','CloudProvider','name','email','ShowSquareProject','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','getUserById','ShowUser','getContactByPhone','GetContactByPhone','phone','ShowTrunk','getSoundById','ShowSound','save_name','getIntervalById','Interval','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','merge','arg_1','arg_2','format','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','ListId','CreateCmContact','getPauseById','agentLogin','LoginUser','agentPause','PauseUser','agentUnpause','UnpauseUser','agentLogout','lodash','moment'];(function(_0x8c6dac,_0x3aa69d){var _0x17150c=function(_0x2bbdd8){while(--_0x2bbdd8){_0x8c6dac['push'](_0x8c6dac['shift']());}};_0x17150c(++_0x3aa69d);}(_0x6631,0x134));var _0x1663=function(_0x1e4cc4,_0x3293eb){_0x1e4cc4=_0x1e4cc4-0x0;var _0x5791af=_0x6631[_0x1e4cc4];return _0x5791af;};'use strict';var _=require(_0x1663('0x0'));var moment=require(_0x1663('0x1'));var jayson=require(_0x1663('0x2'));var client=jayson[_0x1663('0x3')][_0x1663('0x4')]({'port':0x2329});function request(_0x26971d,_0x5e5e43){return new Promise(function(_0x492d72,_0x1e2fcc){return client[_0x1663('0x5')](_0x26971d,_0x5e5e43)[_0x1663('0x6')](function(_0x338908){if(_0x338908[_0x1663('0x7')]){return _0x1e2fcc(_0x338908[_0x1663('0x7')][_0x1663('0x8')]);}else{return _0x492d72(_0x338908[_0x1663('0x9')]);}})[_0x1663('0xa')](function(_0x8adcee){return _0x1e2fcc(_0x8adcee);});});}exports[_0x1663('0xb')]=function(){return request(_0x1663('0xc'),{'options':{'raw':![],'attributes':['id','name',_0x1663('0xd')]}});};exports['getSquareProject']=function(_0x27ac53){return request('ShowSquareProject',{'options':{'raw':![],'where':{'name':_0x27ac53},'attributes':[_0x1663('0xd')]}});};exports['getMailAccountById']=function(_0x2a8053){return request(_0x1663('0xe'),{'options':{'raw':![],'where':{'id':_0x2a8053},'include':[{'model':_0x1663('0xf'),'as':_0x1663('0x10'),'include':[{'model':'CloudProvider','as':_0x1663('0x11')}]}],'attributes':['id',_0x1663('0x12'),_0x1663('0x13')],'smtp':!![]}});};exports['getSquareProjectById']=function(_0x4dc49c){return request(_0x1663('0x14'),{'options':{'where':{'id':_0x4dc49c},'attributes':[_0x1663('0x12')]}});};exports['getVoiceQueueById']=function(_0xc839b9){return request(_0x1663('0x15'),{'options':{'where':{'id':_0xc839b9},'attributes':[_0x1663('0x12')]}});};exports[_0x1663('0x16')]=function(_0x180f82){return request(_0x1663('0x17'),{'options':{'where':{'id':_0x180f82},'attributes':[_0x1663('0x12')]}});};exports[_0x1663('0x18')]=function(_0x4b3d58){return request('ShowSquareOdbc',{'options':{'where':{'id':_0x4b3d58},'attributes':['dsn']}});};exports[_0x1663('0x19')]=function(_0x5c3e55){return request(_0x1663('0x1a'),{'options':{'where':{'id':_0x5c3e55},'attributes':[_0x1663('0x12')]}});};exports[_0x1663('0x1b')]=function(_0xb9a911){return request(_0x1663('0x1c'),{'options':{'where':{'phone':_0xb9a911[_0x1663('0x1d')]},'attributes':['id']}});};exports['getTrunkById']=function(_0x4582df){return request(_0x1663('0x1e'),{'options':{'where':{'id':_0x4582df},'attributes':[_0x1663('0x12')]}});};exports[_0x1663('0x1f')]=function(_0x5b27b4){return request(_0x1663('0x20'),{'options':{'where':{'id':_0x5b27b4},'attributes':[_0x1663('0x21')]}});};exports[_0x1663('0x22')]=function(_0x55d05d){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x55d05d},'include':[{'model':_0x1663('0x23'),'as':'Intervals'}]}});};exports[_0x1663('0x24')]=function(_0x104095){return request(_0x1663('0x25'),{'options':{'where':{'id':_0x104095},'attributes':['id','name']}});};exports[_0x1663('0x26')]=function(_0xfdf8f0){return request(_0x1663('0x27'),{'body':_0xfdf8f0});};exports[_0x1663('0x28')]=function(_0x3bfc3b){return request(_0x1663('0x29'),{'body':_0x3bfc3b});};exports[_0x1663('0x2a')]=function(_0x3980d9){return request('CreateSquareReport',{'body':_[_0x1663('0x2b')](_0x3980d9,{'project_name':_0x3980d9[_0x1663('0x2c')],'prev_project_name':_0x3980d9[_0x1663('0x2d')]||'','is_subproject':_0x3980d9[_0x1663('0x2d')]?!![]:![],'leaveAt':moment()[_0x1663('0x2e')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports['createSquareRecording']=function(_0x470e0d){return request(_0x1663('0x2f'),{'body':_0x470e0d});};exports[_0x1663('0x30')]=function(_0xe7127e){return request(_0x1663('0x31'),{'body':_0xe7127e});};exports[_0x1663('0x32')]=function(_0x279809){return request(_0x1663('0x33'),{'options':{'raw':![],'where':{'phone':_0x279809['phone'],'ListId':_0x279809[_0x1663('0x34')]}}})[_0x1663('0x6')](function(_0x2809e3){if(_0x2809e3){return _0x2809e3;}return request(_0x1663('0x35'),{'body':_0x279809});});};exports[_0x1663('0x36')]=function(_0x7bf02){return request('ShowPause',{'options':{'where':{'id':_0x7bf02},'attributes':[_0x1663('0x12')]}});};exports[_0x1663('0x37')]=function(_0x2154d5,_0x5e2b78){return request(_0x1663('0x38'),{'body':{'interface':_0x5e2b78},'options':{'where':_0x2154d5}});};exports[_0x1663('0x39')]=function(_0x2b9624,_0x3a4f8d,_0x14e42b){return request(_0x1663('0x3a'),{'body':{'type':_0x3a4f8d,'uniqueid':_0x14e42b},'options':{'where':_0x2b9624}});};exports[_0x1663('0x3b')]=function(_0x18473e){return request(_0x1663('0x3c'),{'body':{},'options':{'where':_0x18473e}});};exports[_0x1663('0x3d')]=function(_0x4dd052){return request('LogoutUser',{'body':{},'options':{'where':_0x4dd052}});};
\ No newline at end of file
index 670ecef..a848bf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafca=['exports','./polly'];(function(_0x4e0aec,_0x34e066){var _0x316c66=function(_0x3c3409){while(--_0x3c3409){_0x4e0aec['push'](_0x4e0aec['shift']());}};_0x316c66(++_0x34e066);}(_0xafca,0x1ef));var _0xaafc=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xafca[_0x321bb2];return _0x9c12ed;};var polly=require(_0xaafc('0x0'));var lex=require('./lex');module[_0xaafc('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x1224=['./lex','exports','./polly'];(function(_0x2c0dc0,_0x19900d){var _0x4c0990=function(_0x530791){while(--_0x530791){_0x2c0dc0['push'](_0x2c0dc0['shift']());}};_0x4c0990(++_0x19900d);}(_0x1224,0x10d));var _0x4122=function(_0x4a45b4,_0x59804f){_0x4a45b4=_0x4a45b4-0x0;var _0x1a99c9=_0x1224[_0x4a45b4];return _0x1a99c9;};var polly=require(_0x4122('0x0'));var lex=require(_0x4122('0x1'));module[_0x4122('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
index 4234fcc..4bb7d34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41bb=['exports','./lib/api'];(function(_0x2d0286,_0x3c43e7){var _0x3f18af=function(_0x2600a4){while(--_0x2600a4){_0x2d0286['push'](_0x2d0286['shift']());}};_0x3f18af(++_0x3c43e7);}(_0x41bb,0xc5));var _0xb41b=function(_0x14c8c8,_0x5596bc){_0x14c8c8=_0x14c8c8-0x0;var _0x2b7299=_0x41bb[_0x14c8c8];return _0x2b7299;};'use strict';var lex=require(_0xb41b('0x0'));module[_0xb41b('0x1')]=function(_0x4ef2f1,_0x428431,_0x4d5578,_0x30ea75,_0x1c9d36,_0x148333){return lex(_0x4ef2f1,_0x428431,_0x4d5578,_0x30ea75,_0x1c9d36,_0x148333);};
\ No newline at end of file
+var _0xac4a=['exports','./lib/api'];(function(_0x2aafb9,_0x5ee5bd){var _0x377cbe=function(_0x1ef812){while(--_0x1ef812){_0x2aafb9['push'](_0x2aafb9['shift']());}};_0x377cbe(++_0x5ee5bd);}(_0xac4a,0x13f));var _0xaac4=function(_0x21ddf9,_0x8cfc98){_0x21ddf9=_0x21ddf9-0x0;var _0x10fcdc=_0xac4a[_0x21ddf9];return _0x10fcdc;};'use strict';var lex=require(_0xaac4('0x0'));module[_0xaac4('0x1')]=function(_0x2e2ad0,_0x132fc3,_0x38f4f4,_0x1dc251,_0x5aeb7d,_0x58626e){return lex(_0x2e2ad0,_0x132fc3,_0x38f4f4,_0x1dc251,_0x5aeb7d,_0x58626e);};
\ No newline at end of file
index c255475..8e447a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x21aa87,_0x1e9ad2){var _0x37deb5=function(_0x3a18c6){while(--_0x3a18c6){_0x21aa87['push'](_0x21aa87['shift']());}};_0x37deb5(++_0x1e9ad2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'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(_0x37bb7f,_0x551f79){var _0x19c71a=function(_0x31d914){while(--_0x31d914){_0x37bb7f['push'](_0x37bb7f['shift']());}};_0x19c71a(++_0x551f79);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'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 2862749..e285007 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6e5=['exports'];(function(_0x38a112,_0x1b9047){var _0x13dbe4=function(_0xb12333){while(--_0xb12333){_0x38a112['push'](_0x38a112['shift']());}};_0x13dbe4(++_0x1b9047);}(_0xe6e5,0xf2));var _0x5e6e=function(_0x39e84d,_0x11931d){_0x39e84d=_0x39e84d-0x0;var _0x1991bc=_0xe6e5[_0x39e84d];return _0x1991bc;};'use strict';var polly=require('./lib/api');module[_0x5e6e('0x0')]=function(_0x417b49,_0x171f61,_0x4de139,_0x8a343d,_0x22118a,_0x28cb3b,_0x2fdf1a){return polly(_0x417b49,_0x171f61,_0x4de139,_0x8a343d,_0x22118a,_0x28cb3b,_0x2fdf1a);};
\ No newline at end of file
+var _0xb1b4=['./lib/api'];(function(_0x274e0e,_0x2e7080){var _0x4c370f=function(_0x1fedd9){while(--_0x1fedd9){_0x274e0e['push'](_0x274e0e['shift']());}};_0x4c370f(++_0x2e7080);}(_0xb1b4,0x6f));var _0x4b1b=function(_0x1ca5a3,_0x40b024){_0x1ca5a3=_0x1ca5a3-0x0;var _0xc8acbf=_0xb1b4[_0x1ca5a3];return _0xc8acbf;};'use strict';var polly=require(_0x4b1b('0x0'));module['exports']=function(_0x105114,_0x20686e,_0x150716,_0x3337f0,_0x3bb2f0,_0x4acc6f,_0x1d696e){return polly(_0x105114,_0x20686e,_0x150716,_0x3337f0,_0x3bb2f0,_0x4acc6f,_0x1d696e);};
\ No newline at end of file
index 7a070d3..af31f2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x265b=['path','bluebird','randomstring','aws-sdk','synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','text','mp3'];(function(_0x4c42fe,_0x4a8d18){var _0x3ae639=function(_0x2a30a6){while(--_0x2a30a6){_0x4c42fe['push'](_0x4c42fe['shift']());}};_0x3ae639(++_0x4a8d18);}(_0x265b,0x1e1));var _0xb265=function(_0x5dbf93,_0x5957e9){_0x5dbf93=_0x5dbf93-0x0;var _0x2c69b0=_0x265b[_0x5dbf93];return _0x2c69b0;};'use strict';var fs=require('fs');var path=require(_0xb265('0x0'));var BPromise=require(_0xb265('0x1'));var rs=require(_0xb265('0x2'));var AWS=require(_0xb265('0x3'));function pollyResult(_0x3c74fa,_0x24c2fa,_0x3d4ce4){return new BPromise(function(_0xfe6e9,_0x8eede2){_0x3c74fa[_0xb265('0x4')](_0x24c2fa,function(_0x52f06a,_0x5c1cbc){if(_0x52f06a){_0x8eede2(_0x52f06a);}else if(_0x5c1cbc){if(_0x5c1cbc[_0xb265('0x5')]instanceof Buffer){fs[_0xb265('0x6')](_0x3d4ce4,_0x5c1cbc['AudioStream'],function(_0x12cd9f){if(_0x12cd9f){_0x8eede2(_0x12cd9f);}else{_0xfe6e9();}});}else{_0x8eede2(new Error(_0xb265('0x7')));}}else{_0x8eede2(new Error(_0xb265('0x8')));}});});}module[_0xb265('0x9')]=function(_0x349b4d,_0x3f6d87,_0xa3477c,_0xfdd684,_0x133d30,_0x2afa80,_0x67e18a){var _0x1e4a35=new AWS[(_0xb265('0xa'))]({'accessKeyId':_0x349b4d,'secretAccessKey':_0x3f6d87,'region':_0xa3477c});var _0x7295a6={'Text':_0x133d30,'TextType':_0x2afa80||_0xb265('0xb'),'OutputFormat':_0xb265('0xc'),'VoiceId':_0xfdd684};return pollyResult(_0x1e4a35,_0x7295a6,_0x67e18a);};
\ No newline at end of file
+var _0x6ee0=['path','bluebird','randomstring','aws-sdk','synthesizeSpeech','writeFile','AudioStream','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','mp3'];(function(_0x1f2f03,_0x3c6937){var _0x1ca131=function(_0x273b33){while(--_0x273b33){_0x1f2f03['push'](_0x1f2f03['shift']());}};_0x1ca131(++_0x3c6937);}(_0x6ee0,0x17c));var _0x06ee=function(_0x5c612f,_0x5f48b8){_0x5c612f=_0x5c612f-0x0;var _0x3cd035=_0x6ee0[_0x5c612f];return _0x3cd035;};'use strict';var fs=require('fs');var path=require(_0x06ee('0x0'));var BPromise=require(_0x06ee('0x1'));var rs=require(_0x06ee('0x2'));var AWS=require(_0x06ee('0x3'));function pollyResult(_0xceec3c,_0x233f3b,_0x5beba8){return new BPromise(function(_0x48c5af,_0x5e8e72){_0xceec3c[_0x06ee('0x4')](_0x233f3b,function(_0x528815,_0x1894b3){if(_0x528815){_0x5e8e72(_0x528815);}else if(_0x1894b3){if(_0x1894b3['AudioStream']instanceof Buffer){fs[_0x06ee('0x5')](_0x5beba8,_0x1894b3[_0x06ee('0x6')],function(_0x543f52){if(_0x543f52){_0x5e8e72(_0x543f52);}else{_0x48c5af();}});}else{_0x5e8e72(new Error('Invalid\x20data\x20response\x20from\x20aws\x20Polly!'));}}else{_0x5e8e72(new Error(_0x06ee('0x7')));}});});}module[_0x06ee('0x8')]=function(_0x6168b9,_0x2b2098,_0x33cff8,_0x43c69f,_0x5c365c,_0x4b76de,_0xc55258){var _0x32a36f=new AWS['Polly']({'accessKeyId':_0x6168b9,'secretAccessKey':_0x2b2098,'region':_0x33cff8});var _0xbfd133={'Text':_0x5c365c,'TextType':_0x4b76de||'text','OutputFormat':_0x06ee('0x9'),'VoiceId':_0x43c69f};return pollyResult(_0x32a36f,_0xbfd133,_0xc55258);};
\ No newline at end of file
index 570c69c..23860d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb80c=['./lib/api','exports'];(function(_0x12172f,_0x20b1f8){var _0x5d146e=function(_0x29ce3e){while(--_0x29ce3e){_0x12172f['push'](_0x12172f['shift']());}};_0x5d146e(++_0x20b1f8);}(_0xb80c,0x184));var _0xcb80=function(_0x1ab81a,_0x1f11cb){_0x1ab81a=_0x1ab81a-0x0;var _0x5512de=_0xb80c[_0x1ab81a];return _0x5512de;};'use strict';var asr=require(_0xcb80('0x0'));module[_0xcb80('0x1')]=function(_0x1e7bae,_0x1891b0,_0x32bac0,_0x50a95e){return asr(_0x1e7bae,_0x1891b0,_0x32bac0);};
\ No newline at end of file
+var _0xefa8=['exports','./lib/api'];(function(_0x578442,_0x240dd0){var _0x5a840c=function(_0x6dfe35){while(--_0x6dfe35){_0x578442['push'](_0x578442['shift']());}};_0x5a840c(++_0x240dd0);}(_0xefa8,0x119));var _0x8efa=function(_0x528546,_0x2e2edc){_0x528546=_0x528546-0x0;var _0x1d7c87=_0xefa8[_0x528546];return _0x1d7c87;};'use strict';var asr=require(_0x8efa('0x0'));module[_0x8efa('0x1')]=function(_0x3948cc,_0x2b0983,_0x4c674a,_0x542d5c){return asr(_0x3948cc,_0x2b0983,_0x4c674a);};
\ No newline at end of file
index 8067e8b..2e1a2e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41bb=['8000','url','bluebird','exports','string','length','filepath\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','POST','/v1/speech:recognize?key='];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0x41bb,0xc5));var _0xb41b=function(_0x377d47,_0x3d5e9a){_0x377d47=_0x377d47-0x0;var _0x289c2f=_0x41bb[_0x377d47];return _0x289c2f;};'use strict';var url=require(_0xb41b('0x0'));var BPromise=require(_0xb41b('0x1'));var fs=require('fs');var host='https://speech.googleapis.com';module[_0xb41b('0x2')]=function(_0x4d5578,_0x30ea75,_0x1c9d36){return new BPromise(function(_0x148333,_0x448c8e){var _0x4ee21b;if(typeof _0x4d5578!==_0xb41b('0x3')||_0x4d5578[_0xb41b('0x4')]===0x0){return _0x448c8e(_0xb41b('0x5'));}if(typeof _0x30ea75!=='string'||_0x30ea75['length']===0x0){return _0x448c8e('key\x20should\x20be\x20a\x20string');}if(typeof _0x1c9d36!==_0xb41b('0x6')&&(typeof _0x1c9d36!==_0xb41b('0x3')||_0x1c9d36['length']===0x0)){return _0x448c8e(_0xb41b('0x7'));}try{_0x4ee21b=fs[_0xb41b('0x8')](_0x4d5578)[_0xb41b('0x9')](_0xb41b('0xa'));}catch(_0x26d531){return _0x448c8e(_0x26d531);}return _0x148333({'method':_0xb41b('0xb'),'uri':host+_0xb41b('0xc')+_0x30ea75,'body':{'config':{'encoding':'LINEAR16','sampleRateHertz':_0xb41b('0xd'),'languageCode':_0x1c9d36},'audio':{'content':_0x4ee21b}},'json':!![]});});};
\ No newline at end of file
+var _0x0ba7=['8000','url','https://speech.googleapis.com','exports','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','toString','/v1/speech:recognize?key=','LINEAR16'];(function(_0x56ada0,_0x3df31a){var _0x389a31=function(_0x28366a){while(--_0x28366a){_0x56ada0['push'](_0x56ada0['shift']());}};_0x389a31(++_0x3df31a);}(_0x0ba7,0x16d));var _0x70ba=function(_0x19eaaf,_0x190839){_0x19eaaf=_0x19eaaf-0x0;var _0x37e0cd=_0x0ba7[_0x19eaaf];return _0x37e0cd;};'use strict';var url=require(_0x70ba('0x0'));var BPromise=require('bluebird');var fs=require('fs');var host=_0x70ba('0x1');module[_0x70ba('0x2')]=function(_0xadfc69,_0x42d93c,_0x5e5368){return new BPromise(function(_0x319ca9,_0x3e20ab){var _0x3cb2e3;if(typeof _0xadfc69!==_0x70ba('0x3')||_0xadfc69[_0x70ba('0x4')]===0x0){return _0x3e20ab(_0x70ba('0x5'));}if(typeof _0x42d93c!==_0x70ba('0x3')||_0x42d93c[_0x70ba('0x4')]===0x0){return _0x3e20ab(_0x70ba('0x6'));}if(typeof _0x5e5368!==_0x70ba('0x7')&&(typeof _0x5e5368!==_0x70ba('0x3')||_0x5e5368[_0x70ba('0x4')]===0x0)){return _0x3e20ab(_0x70ba('0x8'));}try{_0x3cb2e3=fs[_0x70ba('0x9')](_0xadfc69)[_0x70ba('0xa')]('base64');}catch(_0x38f104){return _0x3e20ab(_0x38f104);}return _0x319ca9({'method':'POST','uri':host+_0x70ba('0xb')+_0x42d93c,'body':{'config':{'encoding':_0x70ba('0xc'),'sampleRateHertz':_0x70ba('0xd'),'languageCode':_0x5e5368},'audio':{'content':_0x3cb2e3}},'json':!![]});});};
\ No newline at end of file
index 8143fb8..3ea8ba8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cef=['./asr','exports'];(function(_0x32a648,_0x5bfa3e){var _0x15b898=function(_0xc87c9){while(--_0xc87c9){_0x32a648['push'](_0x32a648['shift']());}};_0x15b898(++_0x5bfa3e);}(_0x7cef,0x174));var _0xf7ce=function(_0x1bb105,_0x59fb22){_0x1bb105=_0x1bb105-0x0;var _0x5866ad=_0x7cef[_0x1bb105];return _0x5866ad;};var asr=require(_0xf7ce('0x0'));module[_0xf7ce('0x1')]={'asr':asr};
\ No newline at end of file
+var _0xed96=['./asr','exports'];(function(_0x2b81be,_0x544bdf){var _0x8ed4a7=function(_0x4a7bf4){while(--_0x4a7bf4){_0x2b81be['push'](_0x2b81be['shift']());}};_0x8ed4a7(++_0x544bdf);}(_0xed96,0xf2));var _0x6ed9=function(_0x302f55,_0x31872f){_0x302f55=_0x302f55-0x0;var _0x55ca94=_0xed96[_0x302f55];return _0x55ca94;};var asr=require(_0x6ed9('0x0'));module[_0x6ed9('0x1')]={'asr':asr};
\ No newline at end of file
index 70b3f86..1d3e2e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x570a=['jQ1olc','null','generic','slice','parse\x20response\x20failed:\x0a','length','\x22\x20might\x20not\x20exist','.mp3','goggleTTS\x20path','googleASR','uri','map','alternatives','transcript','join','results','confidence','googleASR\x20confidence','catch','[%s]\x20%s:%s','message','textRequest','source','result','resolvedQuery','action','actionIncomplete','fulfillment','score','endConversation','metadata','isFallbackIntent','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','fulfillmentText','intent','name','isFallback','languageCode','responseId','tildeASR','asr','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','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','sestekNDA','nda','text','channelData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','md5','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','util','./aws','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','host','path','WHAT_EVER','get','error','request\x20to\x20','statusCode','statusMessage','finish','info','finish\x20download\x20file','unlink','download\x20error','end','protocol','\x20failed,\x20status\x20code\x20=\x20','data','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','then','777','readFileSync','toString','base64','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','text:synthesize','POST','audioContent','chmodSync','split','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','stringify'];(function(_0x1453ae,_0x36d15d){var _0x3cb783=function(_0x32354c){while(--_0x32354c){_0x1453ae['push'](_0x1453ae['shift']());}};_0x3cb783(++_0x36d15d);}(_0x570a,0xcc));var _0xa570=function(_0x2c2424,_0x6e3a4a){_0x2c2424=_0x2c2424-0x0;var _0x1e20eb=_0x570a[_0x2c2424];return _0x1e20eb;};'use strict';var apiai=require(_0xa570('0x0'));var BPromise=require(_0xa570('0x1'));var dialogflow=require(_0xa570('0x2'));var fs=require('fs');var http=require(_0xa570('0x3'));var https=require('https');var md5=require(_0xa570('0x4'));var path=require('path');var querystring=require(_0xa570('0x5'));var rp=require(_0xa570('0x6'));var rs=require(_0xa570('0x7'));var sox=require(_0xa570('0x8'));var tts=require(_0xa570('0x9'));var urlParse=require(_0xa570('0xa'))[_0xa570('0xb')];var util=require(_0xa570('0xc'));var aws=require(_0xa570('0xd'));var google=require('./google');var sestek=require('./sestek');var tilde=require('./tilde');var logger=require(_0xa570('0xe'))(_0xa570('0xf'));var ISPEECH_API=_0xa570('0x10');function downloadFile(_0xe25208,_0x1152d1){return new BPromise(function(_0x4360ed,_0x450b03){var _0x2a02dc=urlParse(_0xe25208);var _0x5122b8=_0x2a02dc['protocol']===_0xa570('0x11')?https:http;var _0x42c920={'host':_0x2a02dc[_0xa570('0x12')],'path':_0x2a02dc[_0xa570('0x13')],'headers':{'user-agent':_0xa570('0x14')}};_0x5122b8[_0xa570('0x15')](_0x42c920,function(_0x193802){if(_0x193802['statusCode']!==0xc8){logger[_0xa570('0x16')](_0xa570('0x17')+_0xe25208+'\x20failed,\x20status\x20code\x20=\x20'+_0x193802[_0xa570('0x18')]+'\x20('+_0x193802[_0xa570('0x19')]+')');_0x450b03(new Error('request\x20to\x20'+_0xe25208+'\x20failed,\x20status\x20code\x20=\x20'+_0x193802[_0xa570('0x18')]+'\x20('+_0x193802[_0xa570('0x19')]+')'));return;}var _0x343194=fs['createWriteStream'](_0x1152d1);_0x343194['on'](_0xa570('0x1a'),function(){logger[_0xa570('0x1b')](_0xa570('0x1c'));_0x343194['close'](_0x4360ed);});_0x343194['on']('error',function(_0x11c9cd){fs[_0xa570('0x1d')](_0x1152d1);logger[_0xa570('0x16')](_0xa570('0x1e'),_0x11c9cd);_0x450b03(_0x11c9cd);});_0x193802['pipe'](_0x343194);})['on'](_0xa570('0x16'),function(_0x1dc8cb){logger[_0xa570('0x16')](_0x1dc8cb);_0x450b03(_0x1dc8cb);})[_0xa570('0x1f')]();});}function uploadFile(_0x24794f){return new BPromise(function(_0x1e1cc9,_0x210185){var _0x319f2e=urlParse(_0x24794f);var _0x31dc15=_0x319f2e[_0xa570('0x20')]===_0xa570('0x11')?https:http;var _0x5f18ec={'host':_0x319f2e[_0xa570('0x12')],'path':_0x319f2e[_0xa570('0x13')],'headers':{'user-agent':'WHAT_EVER'}};_0x31dc15['get'](_0x5f18ec,function(_0x55c72f){if(_0x55c72f[_0xa570('0x18')]!==0xc8){_0x210185(new Error('request\x20to\x20'+_0x24794f+_0xa570('0x21')+_0x55c72f[_0xa570('0x18')]+'\x20('+_0x55c72f[_0xa570('0x19')]+')'));return;}var _0x217a6c='';_0x55c72f['on'](_0xa570('0x22'),function(_0x2a5279){_0x217a6c+=_0x2a5279;});_0x55c72f['on'](_0xa570('0x1f'),function(){_0x1e1cc9(_0x217a6c);});})['on'](_0xa570('0x16'),function(_0x2cc106){_0x210185(_0x2cc106);})[_0xa570('0x1f')]();});}function convertFile(_0x5d17d8,_0x131f97){return new BPromise(function(_0x5beb16,_0x12b896){var _0x29e1a8=sox[_0xa570('0x23')](_0x5d17d8,_0x131f97,{'sampleRate':0x1f40,'format':_0xa570('0x24'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x29e1a8['on'](_0xa570('0x16'),function(_0x24c038){logger[_0xa570('0x16')](_0xa570('0x25'),_0x24c038);_0x12b896(_0x24c038);});_0x29e1a8['on'](_0xa570('0x1f'),function(){logger[_0xa570('0x1b')](_0xa570('0x26'));_0x5beb16();});_0x29e1a8[_0xa570('0x27')]();});}function base64Decode(_0x5e5650,_0x3de4c3){var _0x4e3e13=path[_0xa570('0x28')](__dirname,_0xa570('0x29'),rs[_0xa570('0x2a')](0x4)+_0xa570('0x2b'));fs[_0xa570('0x2c')](_0x4e3e13,_0x5e5650,'base64');return convertFile(_0x4e3e13,_0x3de4c3)[_0xa570('0x2d')](function(){try{fs[_0xa570('0x1d')](_0x4e3e13);fs['chmodSync'](_0x3de4c3,_0xa570('0x2e'));}catch(_0x2b55a2){logger[_0xa570('0x16')](_0x2b55a2);}return _0x3de4c3['split']('.')[0x0];});}function base64Encode(_0x1bbe69){var _0x572d13=fs[_0xa570('0x2f')](_0x1bbe69);return new Buffer(_0x572d13)[_0xa570('0x30')](_0xa570('0x31'));}exports['googleCloudTTS']=function(_0x4563ce,_0x523b69,_0x31764d,_0xa7928b,_0x569b36,_0x4607c2){var _0x562709,_0x2cfc2a;var _0x559806=_0xa570('0x32');var _0xe8f66=_0xa570('0x33')+_0x4563ce;var _0x5f59e9={};if(_0x523b69===_0xa570('0x34')){_0x5f59e9['input']={'ssml':_0x31764d};}else{_0x5f59e9[_0xa570('0x35')]={'text':_0x31764d};};_0x5f59e9[_0xa570('0x36')]={'languageCode':_0xa7928b,'ssmlGender':_0x569b36};_0x5f59e9[_0xa570('0x37')]={'audioEncoding':'MP3','sampleRateHertz':0x1f40};var _0x4ac536={'url':_0x559806+_0xa570('0x38')+_0xe8f66,'method':_0xa570('0x39'),'json':!![],'body':_0x5f59e9};return rp(_0x4ac536)[_0xa570('0x2d')](function(_0x3db315){return new BPromise(function(_0x409b5f,_0x489ef0){_0x562709=path[_0xa570('0x28')](__dirname,_0xa570('0x29'),rs['generate'](0x4)+'.mp3');var _0x408733=Buffer['from'](_0x3db315[_0xa570('0x3a')],_0xa570('0x31'));return fs['writeFile'](_0x562709,_0x408733,function(_0x297696){_0x489ef0(_0x297696);},function(_0x5667c4){fs[_0xa570('0x3b')](_0x562709,_0xa570('0x2e'));_0x409b5f(_0x5667c4);});});})[_0xa570('0x2d')](function(_0x3a8816){_0x2cfc2a=path[_0xa570('0x28')](__dirname,_0xa570('0x29'),rs[_0xa570('0x2a')](0x4)+'.wav');return convertFile(_0x562709,_0x2cfc2a);})['then'](function(){try{fs[_0xa570('0x1d')](_0x562709);fs['chmodSync'](_0x2cfc2a,_0xa570('0x2e'));}catch(_0x28125b){logger['error'](_0x28125b);}logger[_0xa570('0x1b')]('googleCloudTTS\x20path',_0x2cfc2a[_0xa570('0x3c')]('.')[0x0]);return _0x2cfc2a[_0xa570('0x3c')]('.')[0x0];});};exports[_0xa570('0x3d')]=function(_0x441848,_0x589ccd){var _0x16025e=_0xa570('0x3e');var _0x1a66b8,_0x539cdd;var _0x280e3c;var _0x323e97={'encoding':_0xa570('0x3f'),'method':_0xa570('0x39'),'timeout':0x2710,'url':_0x16025e,'headers':{'Content-Type':_0xa570('0x40')},'body':'f.req='+encodeURIComponent(JSON[_0xa570('0x41')]([[[_0xa570('0x42'),JSON[_0xa570('0x41')]([_0x441848,_0x589ccd||'en',![],_0xa570('0x43')]),null,_0xa570('0x44')]]]))};return rp(_0x323e97)[_0xa570('0x2d')](function(_0x8c7bfe){try{_0x280e3c=eval(_0x8c7bfe[_0xa570('0x45')](0x5))[0x0][0x2];}catch(_0x1f0a05){throw new Error(_0xa570('0x46')+_0x8c7bfe['data']);}if(!_0x280e3c){if(_0x441848[_0xa570('0x47')]>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error('lang\x20\x22'+_0x589ccd+_0xa570('0x48'));}}try{_0x280e3c=eval(_0x280e3c)[0x0];}catch(_0x25ec39){throw new Error(_0xa570('0x46')+res[_0xa570('0x22')]);}const _0x5308d3=_0x280e3c;_0x1a66b8=path['resolve'](__dirname,_0xa570('0x29'),rs[_0xa570('0x2a')](0x4)+_0xa570('0x49'));fs[_0xa570('0x2c')](_0x1a66b8,_0x280e3c,{'encoding':_0xa570('0x31')});_0x539cdd=path['resolve'](__dirname,'tmp',rs[_0xa570('0x2a')](0x4)+_0xa570('0x2b'));return convertFile(_0x1a66b8,_0x539cdd);})[_0xa570('0x2d')](function(){try{fs[_0xa570('0x1d')](_0x1a66b8);fs[_0xa570('0x3b')](_0x539cdd,'777');}catch(_0x20ec10){logger[_0xa570('0x16')](_0x20ec10);}logger[_0xa570('0x1b')](_0xa570('0x4a'),_0x539cdd[_0xa570('0x3c')]('.')[0x0]);return _0x539cdd[_0xa570('0x3c')]('.')[0x0];});};exports[_0xa570('0x4b')]=function(_0x3197de,_0x2e9fac,_0x404d14){return google['asr'](_0x3197de,_0x2e9fac,_0x404d14)[_0xa570('0x2d')](function(_0x3ef871){logger['info'](_0x3ef871[_0xa570('0x4c')]);return rp(_0x3ef871);})[_0xa570('0x2d')](function(_0x4b364d){var _0x2d8189='';var _0x53fc6a=0x0;try{fs['unlink'](_0x3197de);}catch(_0x532d22){logger[_0xa570('0x16')](_0x532d22);}if(_0x4b364d&&_0x4b364d['results']){_0x2d8189=_0x4b364d['results'][_0xa570('0x4d')](function(_0x31700c){return _0x31700c&&_0x31700c[_0xa570('0x4e')][0x0]&&_0x31700c[_0xa570('0x4e')][0x0]['transcript']?_0x31700c[_0xa570('0x4e')][0x0][_0xa570('0x4f')]:'';})[_0xa570('0x50')]('\x0a');_0x53fc6a=_0x4b364d[_0xa570('0x51')][_0xa570('0x4d')](function(_0x5bd2bc){return _0x5bd2bc&&_0x5bd2bc[_0xa570('0x4e')][0x0]&&_0x5bd2bc[_0xa570('0x4e')][0x0][_0xa570('0x52')]?_0x5bd2bc[_0xa570('0x4e')][0x0][_0xa570('0x52')]:0x0;})[_0xa570('0x50')]('\x0a');}logger[_0xa570('0x1b')]('googleASR\x20transcription',_0x2d8189);logger['info'](_0xa570('0x53'),_0x53fc6a);return{'transcript':_0x2d8189,'confidence':_0x53fc6a};})[_0xa570('0x54')](function(_0x311cb6){logger[_0xa570('0x16')](_0xa570('0x55'),_0x311cb6[_0xa570('0x18')],_0x311cb6['name'],_0x311cb6[_0xa570('0x56')]);});};exports['googleDialogflow']=function(_0x26d690,_0x2b0184,_0x187254,_0x824818){var _0x31c608=apiai(_0x2b0184,{'language':_0x824818||'en'});return _0x31c608[_0xa570('0x57')](_0x187254,{'sessionId':md5(_0x26d690)})[_0xa570('0x2d')](function(_0x3a2ca0){logger['info'](JSON[_0xa570('0x41')](_0x3a2ca0));return{'source':_0x3a2ca0['result'][_0xa570('0x58')],'resolvedQuery':_0x3a2ca0[_0xa570('0x59')][_0xa570('0x5a')],'action':_0x3a2ca0['result'][_0xa570('0x5b')],'actionIncomplete':_0x3a2ca0[_0xa570('0x59')][_0xa570('0x5c')],'speech':_0x3a2ca0[_0xa570('0x59')][_0xa570('0x5d')]['speech'],'score':_0x3a2ca0[_0xa570('0x59')][_0xa570('0x5e')],'statusCode':_0x3a2ca0['status']['code'],'endConversation':_0x3a2ca0[_0xa570('0x59')]['metadata'][_0xa570('0x5f')]||![],'isFallbackIntent':_0x3a2ca0['result'][_0xa570('0x60')][_0xa570('0x61')]};});};exports['googleDialogflowV2']=function(_0x5df6db,_0x3db0f0,_0x3f96ae,_0x16586d,_0x1244cf,_0xfb8d21){var _0x409b1b=_0x16586d[_0xa570('0x62')](/\\n/g,'\x0a');var _0xcf5bc={'credentials':{'private_key':_0x409b1b,'client_email':_0x3f96ae}};var _0x20a915=new dialogflow[(_0xa570('0x63'))](_0xcf5bc);var _0x38226b=_0x20a915[_0xa570('0x64')](_0x3db0f0,md5(_0x5df6db));var _0x529eed={'session':_0x38226b,'queryInput':{'text':{'text':_0x1244cf,'languageCode':_0xfb8d21}}};return _0x20a915[_0xa570('0x65')](_0x529eed)[_0xa570('0x2d')](function(_0x9743ae){if(_0x9743ae&&_0x9743ae['length']){logger[_0xa570('0x1b')](_0xa570('0x66'),JSON[_0xa570('0x41')](_0x9743ae));var _0xc41f77=_0x9743ae[0x0];if(_0xc41f77){var _0x39da17={'action':_0xc41f77[_0xa570('0x67')][_0xa570('0x5b')],'allRequiredParamsPresent':_0xc41f77[_0xa570('0x67')][_0xa570('0x68')],'endConversation':_0xc41f77[_0xa570('0x67')][_0xa570('0x69')]&&_0xc41f77['queryResult']['diagnosticInfo'][_0xa570('0x6a')]?_0xc41f77[_0xa570('0x67')][_0xa570('0x69')]['fields'][_0xa570('0x6b')]['boolValue']:![],'fulfillmentText':_0xc41f77[_0xa570('0x67')][_0xa570('0x6c')],'intentName':_0xc41f77[_0xa570('0x67')][_0xa570('0x6d')][_0xa570('0x6e')],'intentDisplayName':_0xc41f77['queryResult'][_0xa570('0x6d')]['displayName'],'isFallbackIntent':_0xc41f77[_0xa570('0x67')][_0xa570('0x6d')][_0xa570('0x6f')],'languageCode':_0xc41f77[_0xa570('0x67')][_0xa570('0x70')],'queryText':_0xc41f77[_0xa570('0x67')]['queryText'],'responseId':_0xc41f77[_0xa570('0x71')],'score':_0xc41f77[_0xa570('0x67')]['intentDetectionConfidence'],'speech':_0xc41f77[_0xa570('0x67')][_0xa570('0x6c')],'providerResponse':JSON['stringify'](_0x9743ae)};return _0x39da17;}}});};exports[_0xa570('0x72')]=function(_0xbb4a97,_0x21d9f0,_0x3c86a5,_0x5aff2c){return tilde[_0xa570('0x73')](_0xbb4a97,_0x21d9f0,_0x3c86a5,_0x5aff2c)[_0xa570('0x2d')](function(_0x525f2e){try{fs[_0xa570('0x1d')](_0xbb4a97);}catch(_0x545b0d){logger['error'](_0x545b0d);}logger[_0xa570('0x1b')](_0xa570('0x74'),_0x525f2e[_0xa570('0x4f')]);logger['info'](_0xa570('0x75'),_0x525f2e[_0xa570('0x52')]);return _0x525f2e;});};exports[_0xa570('0x76')]=function(_0x36255d,_0x597002,_0x338a9e,_0x43a13a,_0x5d4edd,_0x3287a6){var _0x239681=path['resolve'](__dirname,_0xa570('0x29'),rs['generate'](0x4)+'.mp3');var _0x5957b0;return aws[_0xa570('0x77')](_0x36255d,_0x597002,_0x338a9e,_0x43a13a,_0x5d4edd,_0x3287a6,_0x239681)['then'](function(){_0x5957b0=path[_0xa570('0x28')](__dirname,'tmp',rs['generate'](0x4)+_0xa570('0x2b'));return convertFile(_0x239681,_0x5957b0);})[_0xa570('0x2d')](function(){try{fs[_0xa570('0x1d')](_0x239681);fs[_0xa570('0x3b')](_0x5957b0,_0xa570('0x2e'));}catch(_0x1f810a){logger[_0xa570('0x16')](_0x1f810a);}return _0x5957b0[_0xa570('0x3c')]('.')[0x0];});};exports[_0xa570('0x78')]=function(_0x4e4803,_0x4efd0a,_0x2d46cb,_0x4f4dc1,_0x7aefa1,_0x147f99){return aws[_0xa570('0x79')](_0x4e4803,_0x4efd0a,_0x2d46cb,_0x4f4dc1,_0x7aefa1,_0x147f99)[_0xa570('0x2d')](function(_0x24a920){logger['info'](JSON[_0xa570('0x41')](_0x24a920));return _0x24a920;});};exports['ispeechTTS']=function(_0x190062,_0x515f9a,_0x488d85,_0x59944b){var _0xe419a1=util[_0xa570('0x7a')](_0xa570('0x7b'),ISPEECH_API,_0x190062,encodeURIComponent(_0x515f9a),_0x488d85,_0x59944b);var _0x2ecb81=path[_0xa570('0x28')](__dirname,_0xa570('0x29'),rs[_0xa570('0x2a')](0x4)+_0xa570('0x49'));var _0x1c1519;return downloadFile(_0xe419a1,_0x2ecb81)[_0xa570('0x2d')](function(){_0x1c1519=path[_0xa570('0x28')](__dirname,_0xa570('0x29'),rs['generate'](0x4)+_0xa570('0x2b'));return convertFile(_0x2ecb81,_0x1c1519);})[_0xa570('0x2d')](function(){try{fs[_0xa570('0x1d')](_0x2ecb81);fs[_0xa570('0x3b')](_0x1c1519,_0xa570('0x2e'));}catch(_0xfe0f03){logger[_0xa570('0x16')](_0xfe0f03);}return _0x1c1519[_0xa570('0x3c')]('.')[0x0];});};exports[_0xa570('0x7c')]=function(_0x1b8e19,_0x1a42ed,_0x2f5cad,_0x3333a6){var _0x3e1543=util[_0xa570('0x7a')](_0xa570('0x7d'),ISPEECH_API,_0x1a42ed,_0x2f5cad,base64Encode(_0x1b8e19),_0x3333a6?util[_0xa570('0x7a')](_0xa570('0x7e'),encodeURIComponent(_0x3333a6)):'freeform=3');return uploadFile(_0x3e1543)[_0xa570('0x2d')](function(_0x1c31e1){return querystring['parse'](_0x1c31e1);});};exports[_0xa570('0x7f')]=function(_0x5e310f,_0x14a375){return sestek[_0xa570('0x80')](_0x5e310f,_0x14a375)['then'](function(_0x10b496){logger[_0xa570('0x1b')](JSON[_0xa570('0x41')](_0x10b496));var _0x1d1204={'speech':_0x10b496[_0xa570('0x81')],'action':_0x10b496[_0xa570('0x82')]?_0x10b496[_0xa570('0x82')]['CustomAction']:undefined,'actiondata':_0x10b496['channelData']?_0x10b496[_0xa570('0x82')]['CustomActionData']:undefined};if(_0x10b496[_0xa570('0x82')]&&_0x10b496['channelData'][_0xa570('0x83')]){return base64Decode(_0x10b496[_0xa570('0x82')][_0xa570('0x83')][_0xa570('0x84')],path[_0xa570('0x28')](__dirname,_0xa570('0x29'),rs['generate'](0x4)+_0xa570('0x2b')))[_0xa570('0x2d')](function(_0x19ced9){_0x1d1204[_0xa570('0x85')]=_0x19ced9;return _0x1d1204;});}return _0x1d1204;});};exports[_0xa570('0x86')]=function(){return __dirname;};
\ No newline at end of file
+var _0xd3f7=['googleASR\x20confidence','catch','[%s]\x20%s:%s','name','textRequest','result','source','action','actionIncomplete','fulfillment','speech','score','status','code','endConversation','metadata','isFallbackIntent','googleDialogflowV2','replace','detectIntent','Dialogflow\x20V2\x20response:','queryResult','diagnosticInfo','fields','end_conversation','boolValue','intent','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','fulfillmentText','tildeASR','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','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','freeform=3','sestekNDA','nda','text','channelData','CustomActionData','AudioFromTts','audiofile','dirName','bluebird','dialogflow','https','md5','path','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','util','./aws','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','host','WHAT_EVER','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','createWriteStream','finish','info','close','unlink','pipe','end','get','wav','error\x20convert','finish\x20to\x20convert','start','resolve','generate','.wav','writeFileSync','then','chmodSync','777','readFileSync','base64','googleCloudTTS','ssml','input','voice','MP3','text:synthesize','POST','from','audioContent','writeFile','tmp','googleCloudTTS\x20path','split','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','application/x-www-form-urlencoded','f.req=','stringify','null','generic','slice','parse\x20response\x20failed:\x0a','data','length','lang\x20\x22','.mp3','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','confidence','googleASR\x20transcription'];(function(_0x5305f2,_0x180334){var _0x59a8f7=function(_0x30b5d8){while(--_0x30b5d8){_0x5305f2['push'](_0x5305f2['shift']());}};_0x59a8f7(++_0x180334);}(_0xd3f7,0x1d5));var _0x7d3f=function(_0x30c92b,_0x154324){_0x30c92b=_0x30c92b-0x0;var _0x33837b=_0xd3f7[_0x30c92b];return _0x33837b;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0x7d3f('0x0'));var dialogflow=require(_0x7d3f('0x1'));var fs=require('fs');var http=require('http');var https=require(_0x7d3f('0x2'));var md5=require(_0x7d3f('0x3'));var path=require(_0x7d3f('0x4'));var querystring=require(_0x7d3f('0x5'));var rp=require(_0x7d3f('0x6'));var rs=require(_0x7d3f('0x7'));var sox=require(_0x7d3f('0x8'));var tts=require(_0x7d3f('0x9'));var urlParse=require(_0x7d3f('0xa'))[_0x7d3f('0xb')];var util=require(_0x7d3f('0xc'));var aws=require(_0x7d3f('0xd'));var google=require('./google');var sestek=require('./sestek');var tilde=require(_0x7d3f('0xe'));var logger=require(_0x7d3f('0xf'))(_0x7d3f('0x10'));var ISPEECH_API=_0x7d3f('0x11');function downloadFile(_0x5a259d,_0x500790){return new BPromise(function(_0x82c6c6,_0x21ba33){var _0x5a6529=urlParse(_0x5a259d);var _0x12205e=_0x5a6529[_0x7d3f('0x12')]==='https:'?https:http;var _0x1ca6e9={'host':_0x5a6529[_0x7d3f('0x13')],'path':_0x5a6529[_0x7d3f('0x4')],'headers':{'user-agent':_0x7d3f('0x14')}};_0x12205e['get'](_0x1ca6e9,function(_0x5ca152){if(_0x5ca152[_0x7d3f('0x15')]!==0xc8){logger[_0x7d3f('0x16')](_0x7d3f('0x17')+_0x5a259d+_0x7d3f('0x18')+_0x5ca152[_0x7d3f('0x15')]+'\x20('+_0x5ca152['statusMessage']+')');_0x21ba33(new Error('request\x20to\x20'+_0x5a259d+_0x7d3f('0x18')+_0x5ca152[_0x7d3f('0x15')]+'\x20('+_0x5ca152['statusMessage']+')'));return;}var _0x3894c1=fs[_0x7d3f('0x19')](_0x500790);_0x3894c1['on'](_0x7d3f('0x1a'),function(){logger[_0x7d3f('0x1b')]('finish\x20download\x20file');_0x3894c1[_0x7d3f('0x1c')](_0x82c6c6);});_0x3894c1['on'](_0x7d3f('0x16'),function(_0x1a274e){fs[_0x7d3f('0x1d')](_0x500790);logger[_0x7d3f('0x16')]('download\x20error',_0x1a274e);_0x21ba33(_0x1a274e);});_0x5ca152[_0x7d3f('0x1e')](_0x3894c1);})['on'](_0x7d3f('0x16'),function(_0xb8bfea){logger[_0x7d3f('0x16')](_0xb8bfea);_0x21ba33(_0xb8bfea);})[_0x7d3f('0x1f')]();});}function uploadFile(_0x29733e){return new BPromise(function(_0xbf3b31,_0x3ddca6){var _0x4aefb1=urlParse(_0x29733e);var _0x396823=_0x4aefb1[_0x7d3f('0x12')]==='https:'?https:http;var _0x5ada08={'host':_0x4aefb1['host'],'path':_0x4aefb1['path'],'headers':{'user-agent':_0x7d3f('0x14')}};_0x396823[_0x7d3f('0x20')](_0x5ada08,function(_0x867edb){if(_0x867edb['statusCode']!==0xc8){_0x3ddca6(new Error(_0x7d3f('0x17')+_0x29733e+'\x20failed,\x20status\x20code\x20=\x20'+_0x867edb[_0x7d3f('0x15')]+'\x20('+_0x867edb['statusMessage']+')'));return;}var _0x246223='';_0x867edb['on']('data',function(_0x5338c1){_0x246223+=_0x5338c1;});_0x867edb['on'](_0x7d3f('0x1f'),function(){_0xbf3b31(_0x246223);});})['on'](_0x7d3f('0x16'),function(_0x3ee5cd){_0x3ddca6(_0x3ee5cd);})[_0x7d3f('0x1f')]();});}function convertFile(_0x3d1d48,_0x6cadd3){return new BPromise(function(_0x2e5fa3,_0x2b0ce3){var _0x476864=sox['transcode'](_0x3d1d48,_0x6cadd3,{'sampleRate':0x1f40,'format':_0x7d3f('0x21'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x476864['on']('error',function(_0x114041){logger[_0x7d3f('0x16')](_0x7d3f('0x22'),_0x114041);_0x2b0ce3(_0x114041);});_0x476864['on'](_0x7d3f('0x1f'),function(){logger[_0x7d3f('0x1b')](_0x7d3f('0x23'));_0x2e5fa3();});_0x476864[_0x7d3f('0x24')]();});}function base64Decode(_0x7ea3a1,_0x5c3bdb){var _0x2caeab=path[_0x7d3f('0x25')](__dirname,'tmp',rs[_0x7d3f('0x26')](0x4)+_0x7d3f('0x27'));fs[_0x7d3f('0x28')](_0x2caeab,_0x7ea3a1,'base64');return convertFile(_0x2caeab,_0x5c3bdb)[_0x7d3f('0x29')](function(){try{fs[_0x7d3f('0x1d')](_0x2caeab);fs[_0x7d3f('0x2a')](_0x5c3bdb,_0x7d3f('0x2b'));}catch(_0x491e01){logger['error'](_0x491e01);}return _0x5c3bdb['split']('.')[0x0];});}function base64Encode(_0x88676){var _0x2b7ebe=fs[_0x7d3f('0x2c')](_0x88676);return new Buffer(_0x2b7ebe)['toString'](_0x7d3f('0x2d'));}exports[_0x7d3f('0x2e')]=function(_0x22893a,_0x4f0679,_0xb803c9,_0x542503,_0x7f24a3,_0x2fd2ac){var _0x2c7654,_0x8e2fdf;var _0x141b01='https://texttospeech.googleapis.com/v1/';var _0x5ef6ce='?key='+_0x22893a;var _0xbe98b1={};if(_0x4f0679===_0x7d3f('0x2f')){_0xbe98b1['input']={'ssml':_0xb803c9};}else{_0xbe98b1[_0x7d3f('0x30')]={'text':_0xb803c9};};_0xbe98b1[_0x7d3f('0x31')]={'languageCode':_0x542503,'ssmlGender':_0x7f24a3};_0xbe98b1['audioConfig']={'audioEncoding':_0x7d3f('0x32'),'sampleRateHertz':0x1f40};var _0x3e5014={'url':_0x141b01+_0x7d3f('0x33')+_0x5ef6ce,'method':_0x7d3f('0x34'),'json':!![],'body':_0xbe98b1};return rp(_0x3e5014)['then'](function(_0x39b467){return new BPromise(function(_0x515e89,_0x477b65){_0x2c7654=path['resolve'](__dirname,'tmp',rs[_0x7d3f('0x26')](0x4)+'.mp3');var _0x36b259=Buffer[_0x7d3f('0x35')](_0x39b467[_0x7d3f('0x36')],_0x7d3f('0x2d'));return fs[_0x7d3f('0x37')](_0x2c7654,_0x36b259,function(_0x222273){_0x477b65(_0x222273);},function(_0x2b12bf){fs[_0x7d3f('0x2a')](_0x2c7654,_0x7d3f('0x2b'));_0x515e89(_0x2b12bf);});});})[_0x7d3f('0x29')](function(_0x161092){_0x8e2fdf=path[_0x7d3f('0x25')](__dirname,_0x7d3f('0x38'),rs[_0x7d3f('0x26')](0x4)+_0x7d3f('0x27'));return convertFile(_0x2c7654,_0x8e2fdf);})[_0x7d3f('0x29')](function(){try{fs[_0x7d3f('0x1d')](_0x2c7654);fs[_0x7d3f('0x2a')](_0x8e2fdf,_0x7d3f('0x2b'));}catch(_0x223e70){logger[_0x7d3f('0x16')](_0x223e70);}logger[_0x7d3f('0x1b')](_0x7d3f('0x39'),_0x8e2fdf[_0x7d3f('0x3a')]('.')[0x0]);return _0x8e2fdf['split']('.')[0x0];});};exports[_0x7d3f('0x3b')]=function(_0x3c0291,_0x2c13f8){var _0x209967=_0x7d3f('0x3c');var _0x434bac,_0x25b961;var _0x2b7185;var _0x3a8e2c={'encoding':_0x7d3f('0x3d'),'method':_0x7d3f('0x34'),'timeout':0x2710,'url':_0x209967,'headers':{'Content-Type':_0x7d3f('0x3e')},'body':_0x7d3f('0x3f')+encodeURIComponent(JSON[_0x7d3f('0x40')]([[['jQ1olc',JSON[_0x7d3f('0x40')]([_0x3c0291,_0x2c13f8||'en',![],_0x7d3f('0x41')]),null,_0x7d3f('0x42')]]]))};return rp(_0x3a8e2c)['then'](function(_0xf5d9cf){try{_0x2b7185=eval(_0xf5d9cf[_0x7d3f('0x43')](0x5))[0x0][0x2];}catch(_0x1fb39a){throw new Error(_0x7d3f('0x44')+_0xf5d9cf[_0x7d3f('0x45')]);}if(!_0x2b7185){if(_0x3c0291[_0x7d3f('0x46')]>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x7d3f('0x47')+_0x2c13f8+'\x22\x20might\x20not\x20exist');}}try{_0x2b7185=eval(_0x2b7185)[0x0];}catch(_0x1f7503){throw new Error(_0x7d3f('0x44')+res[_0x7d3f('0x45')]);}const _0x24da5c=_0x2b7185;_0x434bac=path[_0x7d3f('0x25')](__dirname,_0x7d3f('0x38'),rs[_0x7d3f('0x26')](0x4)+_0x7d3f('0x48'));fs[_0x7d3f('0x28')](_0x434bac,_0x2b7185,{'encoding':_0x7d3f('0x2d')});_0x25b961=path[_0x7d3f('0x25')](__dirname,_0x7d3f('0x38'),rs[_0x7d3f('0x26')](0x4)+_0x7d3f('0x27'));return convertFile(_0x434bac,_0x25b961);})[_0x7d3f('0x29')](function(){try{fs[_0x7d3f('0x1d')](_0x434bac);fs['chmodSync'](_0x25b961,_0x7d3f('0x2b'));}catch(_0xac90be){logger['error'](_0xac90be);}logger[_0x7d3f('0x1b')](_0x7d3f('0x49'),_0x25b961[_0x7d3f('0x3a')]('.')[0x0]);return _0x25b961[_0x7d3f('0x3a')]('.')[0x0];});};exports[_0x7d3f('0x4a')]=function(_0x2311b4,_0x44a65e,_0x225865){return google[_0x7d3f('0x4b')](_0x2311b4,_0x44a65e,_0x225865)[_0x7d3f('0x29')](function(_0x495cdb){logger['info'](_0x495cdb[_0x7d3f('0x4c')]);return rp(_0x495cdb);})['then'](function(_0xf06594){var _0x50aa07='';var _0x148aec=0x0;try{fs[_0x7d3f('0x1d')](_0x2311b4);}catch(_0x523094){logger[_0x7d3f('0x16')](_0x523094);}if(_0xf06594&&_0xf06594[_0x7d3f('0x4d')]){_0x50aa07=_0xf06594['results'][_0x7d3f('0x4e')](function(_0x5a6517){return _0x5a6517&&_0x5a6517[_0x7d3f('0x4f')][0x0]&&_0x5a6517[_0x7d3f('0x4f')][0x0][_0x7d3f('0x50')]?_0x5a6517['alternatives'][0x0]['transcript']:'';})['join']('\x0a');_0x148aec=_0xf06594[_0x7d3f('0x4d')][_0x7d3f('0x4e')](function(_0xcc6a5b){return _0xcc6a5b&&_0xcc6a5b[_0x7d3f('0x4f')][0x0]&&_0xcc6a5b['alternatives'][0x0]['confidence']?_0xcc6a5b[_0x7d3f('0x4f')][0x0][_0x7d3f('0x51')]:0x0;})['join']('\x0a');}logger[_0x7d3f('0x1b')](_0x7d3f('0x52'),_0x50aa07);logger[_0x7d3f('0x1b')](_0x7d3f('0x53'),_0x148aec);return{'transcript':_0x50aa07,'confidence':_0x148aec};})[_0x7d3f('0x54')](function(_0x260db7){logger[_0x7d3f('0x16')](_0x7d3f('0x55'),_0x260db7[_0x7d3f('0x15')],_0x260db7[_0x7d3f('0x56')],_0x260db7['message']);});};exports['googleDialogflow']=function(_0x203a8a,_0x18715e,_0x39dc89,_0x4731f6){var _0x1c201b=apiai(_0x18715e,{'language':_0x4731f6||'en'});return _0x1c201b[_0x7d3f('0x57')](_0x39dc89,{'sessionId':md5(_0x203a8a)})[_0x7d3f('0x29')](function(_0x435faf){logger[_0x7d3f('0x1b')](JSON[_0x7d3f('0x40')](_0x435faf));return{'source':_0x435faf[_0x7d3f('0x58')][_0x7d3f('0x59')],'resolvedQuery':_0x435faf[_0x7d3f('0x58')]['resolvedQuery'],'action':_0x435faf[_0x7d3f('0x58')][_0x7d3f('0x5a')],'actionIncomplete':_0x435faf[_0x7d3f('0x58')][_0x7d3f('0x5b')],'speech':_0x435faf['result'][_0x7d3f('0x5c')][_0x7d3f('0x5d')],'score':_0x435faf[_0x7d3f('0x58')][_0x7d3f('0x5e')],'statusCode':_0x435faf[_0x7d3f('0x5f')][_0x7d3f('0x60')],'endConversation':_0x435faf['result']['metadata'][_0x7d3f('0x61')]||![],'isFallbackIntent':_0x435faf['result'][_0x7d3f('0x62')][_0x7d3f('0x63')]};});};exports[_0x7d3f('0x64')]=function(_0x4ffa03,_0x4b6df7,_0x199484,_0x28e524,_0x803a16,_0x54050c){var _0x1fc06e=_0x28e524[_0x7d3f('0x65')](/\\n/g,'\x0a');var _0x442135={'credentials':{'private_key':_0x1fc06e,'client_email':_0x199484}};var _0x6ba3b6=new dialogflow['SessionsClient'](_0x442135);var _0x35d562=_0x6ba3b6['sessionPath'](_0x4b6df7,md5(_0x4ffa03));var _0x1da3f2={'session':_0x35d562,'queryInput':{'text':{'text':_0x803a16,'languageCode':_0x54050c}}};return _0x6ba3b6[_0x7d3f('0x66')](_0x1da3f2)[_0x7d3f('0x29')](function(_0x10f22f){if(_0x10f22f&&_0x10f22f[_0x7d3f('0x46')]){logger['info'](_0x7d3f('0x67'),JSON[_0x7d3f('0x40')](_0x10f22f));var _0x1901b4=_0x10f22f[0x0];if(_0x1901b4){var _0x3cb75b={'action':_0x1901b4[_0x7d3f('0x68')]['action'],'allRequiredParamsPresent':_0x1901b4[_0x7d3f('0x68')]['allRequiredParamsPresent'],'endConversation':_0x1901b4['queryResult'][_0x7d3f('0x69')]&&_0x1901b4[_0x7d3f('0x68')][_0x7d3f('0x69')][_0x7d3f('0x6a')]?_0x1901b4[_0x7d3f('0x68')][_0x7d3f('0x69')][_0x7d3f('0x6a')][_0x7d3f('0x6b')][_0x7d3f('0x6c')]:![],'fulfillmentText':_0x1901b4['queryResult']['fulfillmentText'],'intentName':_0x1901b4[_0x7d3f('0x68')][_0x7d3f('0x6d')][_0x7d3f('0x56')],'intentDisplayName':_0x1901b4[_0x7d3f('0x68')][_0x7d3f('0x6d')][_0x7d3f('0x6e')],'isFallbackIntent':_0x1901b4['queryResult'][_0x7d3f('0x6d')][_0x7d3f('0x6f')],'languageCode':_0x1901b4['queryResult'][_0x7d3f('0x70')],'queryText':_0x1901b4[_0x7d3f('0x68')][_0x7d3f('0x71')],'responseId':_0x1901b4[_0x7d3f('0x72')],'score':_0x1901b4['queryResult'][_0x7d3f('0x73')],'speech':_0x1901b4[_0x7d3f('0x68')][_0x7d3f('0x74')],'providerResponse':JSON[_0x7d3f('0x40')](_0x10f22f)};return _0x3cb75b;}}});};exports[_0x7d3f('0x75')]=function(_0x4a054b,_0x1d010c,_0x3df424,_0x9fa7a9){return tilde[_0x7d3f('0x4b')](_0x4a054b,_0x1d010c,_0x3df424,_0x9fa7a9)[_0x7d3f('0x29')](function(_0x566014){try{fs['unlink'](_0x4a054b);}catch(_0x4a5950){logger[_0x7d3f('0x16')](_0x4a5950);}logger['info'](_0x7d3f('0x76'),_0x566014['transcript']);logger['info'](_0x7d3f('0x77'),_0x566014[_0x7d3f('0x51')]);return _0x566014;});};exports[_0x7d3f('0x78')]=function(_0x4d6bd7,_0x4d0473,_0x23adf5,_0x2177d0,_0x1eac73,_0x374196){var _0x4fe31e=path[_0x7d3f('0x25')](__dirname,_0x7d3f('0x38'),rs[_0x7d3f('0x26')](0x4)+_0x7d3f('0x48'));var _0x19a8b9;return aws[_0x7d3f('0x79')](_0x4d6bd7,_0x4d0473,_0x23adf5,_0x2177d0,_0x1eac73,_0x374196,_0x4fe31e)[_0x7d3f('0x29')](function(){_0x19a8b9=path[_0x7d3f('0x25')](__dirname,'tmp',rs[_0x7d3f('0x26')](0x4)+_0x7d3f('0x27'));return convertFile(_0x4fe31e,_0x19a8b9);})[_0x7d3f('0x29')](function(){try{fs[_0x7d3f('0x1d')](_0x4fe31e);fs['chmodSync'](_0x19a8b9,_0x7d3f('0x2b'));}catch(_0x15fc24){logger[_0x7d3f('0x16')](_0x15fc24);}return _0x19a8b9[_0x7d3f('0x3a')]('.')[0x0];});};exports[_0x7d3f('0x7a')]=function(_0x259cc6,_0x23715c,_0x3a4e6b,_0x14dd76,_0x2ed81f,_0xa53be){return aws[_0x7d3f('0x7b')](_0x259cc6,_0x23715c,_0x3a4e6b,_0x14dd76,_0x2ed81f,_0xa53be)[_0x7d3f('0x29')](function(_0x5a4bf8){logger[_0x7d3f('0x1b')](JSON['stringify'](_0x5a4bf8));return _0x5a4bf8;});};exports[_0x7d3f('0x7c')]=function(_0x5bec50,_0x14c136,_0x22980d,_0xe2fadf){var _0x3f69af=util[_0x7d3f('0x7d')](_0x7d3f('0x7e'),ISPEECH_API,_0x5bec50,encodeURIComponent(_0x14c136),_0x22980d,_0xe2fadf);var _0x735b9b=path[_0x7d3f('0x25')](__dirname,_0x7d3f('0x38'),rs[_0x7d3f('0x26')](0x4)+_0x7d3f('0x48'));var _0x372967;return downloadFile(_0x3f69af,_0x735b9b)['then'](function(){_0x372967=path['resolve'](__dirname,_0x7d3f('0x38'),rs['generate'](0x4)+'.wav');return convertFile(_0x735b9b,_0x372967);})[_0x7d3f('0x29')](function(){try{fs[_0x7d3f('0x1d')](_0x735b9b);fs[_0x7d3f('0x2a')](_0x372967,'777');}catch(_0x541039){logger['error'](_0x541039);}return _0x372967[_0x7d3f('0x3a')]('.')[0x0];});};exports['ispeechASR']=function(_0x364f28,_0x39a4fb,_0x4c5529,_0x7165d5){var _0x425068=util['format'](_0x7d3f('0x7f'),ISPEECH_API,_0x39a4fb,_0x4c5529,base64Encode(_0x364f28),_0x7165d5?util[_0x7d3f('0x7d')](_0x7d3f('0x80'),encodeURIComponent(_0x7165d5)):_0x7d3f('0x81'));return uploadFile(_0x425068)['then'](function(_0x1723b8){return querystring[_0x7d3f('0xb')](_0x1723b8);});};exports[_0x7d3f('0x82')]=function(_0x5b0848,_0x1d734c){return sestek[_0x7d3f('0x83')](_0x5b0848,_0x1d734c)[_0x7d3f('0x29')](function(_0x65cf64){logger[_0x7d3f('0x1b')](JSON[_0x7d3f('0x40')](_0x65cf64));var _0x4b5204={'speech':_0x65cf64[_0x7d3f('0x84')],'action':_0x65cf64[_0x7d3f('0x85')]?_0x65cf64[_0x7d3f('0x85')]['CustomAction']:undefined,'actiondata':_0x65cf64[_0x7d3f('0x85')]?_0x65cf64[_0x7d3f('0x85')][_0x7d3f('0x86')]:undefined};if(_0x65cf64[_0x7d3f('0x85')]&&_0x65cf64[_0x7d3f('0x85')]['AudioFromTts']){return base64Decode(_0x65cf64[_0x7d3f('0x85')][_0x7d3f('0x87')]['Data'],path[_0x7d3f('0x25')](__dirname,_0x7d3f('0x38'),rs[_0x7d3f('0x26')](0x4)+_0x7d3f('0x27')))[_0x7d3f('0x29')](function(_0x5e94a3){_0x4b5204[_0x7d3f('0x88')]=_0x5e94a3;return _0x4b5204;});}return _0x4b5204;});};exports[_0x7d3f('0x89')]=function(){return __dirname;};
\ No newline at end of file
index 49ad2e3..4faaed7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59cb=['./nda'];(function(_0x391394,_0x4c6b5f){var _0x4b0927=function(_0x5b40d9){while(--_0x5b40d9){_0x391394['push'](_0x391394['shift']());}};_0x4b0927(++_0x4c6b5f);}(_0x59cb,0x13d));var _0xb59c=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x59cb[_0x167cc1];return _0x10bc4b;};var nda=require(_0xb59c('0x0'));module['exports']={'nda':nda};
\ No newline at end of file
+var _0xa12e=['exports'];(function(_0x49c2ae,_0x46366a){var _0x2b68af=function(_0x3a5fa6){while(--_0x3a5fa6){_0x49c2ae['push'](_0x49c2ae['shift']());}};_0x2b68af(++_0x46366a);}(_0xa12e,0xa6));var _0xea12=function(_0x4df557,_0x27a29e){_0x4df557=_0x4df557-0x0;var _0x50c0df=_0xa12e[_0x4df557];return _0x50c0df;};var nda=require('./nda');module[_0xea12('0x0')]={'nda':nda};
\ No newline at end of file
index a4771ac..bccc651 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c0d=['text','Bearer\x20','access_token','project','channelData','ProjectName','body','AudioOutputSettings','audio/wav','custom_action','custom_action_data','CustomActionData','info','stringify','agi','exports','POST','resolve','ndauth_url','/token','username','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','callerid','calleridname'];(function(_0x26973e,_0x4d1d08){var _0x26893c=function(_0x55b60d){while(--_0x55b60d){_0x26973e['push'](_0x26973e['shift']());}};_0x26893c(++_0x4d1d08);}(_0x3c0d,0xf6));var _0xd3c0=function(_0x3e7d95,_0x8e2019){_0x3e7d95=_0x3e7d95-0x0;var _0x1acda0=_0x3c0d[_0x3e7d95];return _0x1acda0;};'use strict';var rp=require('request-promise');var url=require('url');var logger=require('../../../../../config/logger')(_0xd3c0('0x0'));module[_0xd3c0('0x1')]=function(_0x1e7789,_0xc520eb){var _0x3e0a87={'method':_0xd3c0('0x2'),'uri':url[_0xd3c0('0x3')](_0xc520eb[_0xd3c0('0x4')],_0xd3c0('0x5')),'form':{'grant_type':'password','username':_0xc520eb[_0xd3c0('0x6')],'password':_0xc520eb['password']},'json':!![]};return rp(_0x3e0a87)[_0xd3c0('0x7')](function(_0x10f804){var _0x2c37b8={'method':_0xd3c0('0x2'),'uri':url[_0xd3c0('0x3')](_0xc520eb[_0xd3c0('0x8')],_0xd3c0('0x9')),'body':{'type':_0xc520eb[_0xd3c0('0xa')]||_0xd3c0('0xb'),'channelId':_0xd3c0('0xc'),'conversation':{'id':_0x1e7789['uniqueid']},'from':{'id':_0x1e7789[_0xd3c0('0xd')],'name':_0x1e7789[_0xd3c0('0xe')]},'recipient':{'id':_0x1e7789['dnid'],'name':_0x1e7789['extension']},'text':_0xc520eb[_0xd3c0('0xf')],'channelData':{}},'headers':{'Authorization':_0xd3c0('0x10')+_0x10f804[_0xd3c0('0x11')]},'json':!![]};if(_0xc520eb[_0xd3c0('0x12')]){_0x2c37b8['body'][_0xd3c0('0x13')][_0xd3c0('0x14')]=_0xc520eb[_0xd3c0('0x12')];}if(_0xc520eb['ndagenerate_audio']=='1'){_0x2c37b8[_0xd3c0('0x15')][_0xd3c0('0x13')][_0xd3c0('0x16')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xd3c0('0x17')};}if(_0xc520eb[_0xd3c0('0x18')]){_0x2c37b8[_0xd3c0('0x15')]['channelData']['CustomAction']=_0xc520eb[_0xd3c0('0x18')];if(_0xc520eb[_0xd3c0('0x19')]){_0x2c37b8['body'][_0xd3c0('0x13')][_0xd3c0('0x1a')]=_0xc520eb[_0xd3c0('0x19')];}}logger[_0xd3c0('0x1b')](JSON[_0xd3c0('0x1c')](_0x2c37b8));return rp(_0x2c37b8);});};
\ No newline at end of file
+var _0x6b20=['AudioOutputSettings','custom_action','CustomAction','custom_action_data','CustomActionData','info','request-promise','url','agi','resolve','ndauth_url','/token','password','username','then','POST','/api/NaturalDialogAssistant/v1/Run','message','callerid','calleridname','extension','text','Bearer\x20','access_token','project','body','channelData','ProjectName','ndagenerate_audio'];(function(_0x26f1b2,_0x33d843){var _0x1624a4=function(_0x58dfb7){while(--_0x58dfb7){_0x26f1b2['push'](_0x26f1b2['shift']());}};_0x1624a4(++_0x33d843);}(_0x6b20,0xd1));var _0x06b2=function(_0x738cdd,_0x11afae){_0x738cdd=_0x738cdd-0x0;var _0x36e104=_0x6b20[_0x738cdd];return _0x36e104;};'use strict';var rp=require(_0x06b2('0x0'));var url=require(_0x06b2('0x1'));var logger=require('../../../../../config/logger')(_0x06b2('0x2'));module['exports']=function(_0x257191,_0xdcad44){var _0x353f6a={'method':'POST','uri':url[_0x06b2('0x3')](_0xdcad44[_0x06b2('0x4')],_0x06b2('0x5')),'form':{'grant_type':_0x06b2('0x6'),'username':_0xdcad44[_0x06b2('0x7')],'password':_0xdcad44[_0x06b2('0x6')]},'json':!![]};return rp(_0x353f6a)[_0x06b2('0x8')](function(_0x4e6d3b){var _0x21cd31={'method':_0x06b2('0x9'),'uri':url[_0x06b2('0x3')](_0xdcad44['ndassistant_url'],_0x06b2('0xa')),'body':{'type':_0xdcad44['ndaactivity_type']||_0x06b2('0xb'),'channelId':'Nda','conversation':{'id':_0x257191['uniqueid']},'from':{'id':_0x257191[_0x06b2('0xc')],'name':_0x257191[_0x06b2('0xd')]},'recipient':{'id':_0x257191['dnid'],'name':_0x257191[_0x06b2('0xe')]},'text':_0xdcad44[_0x06b2('0xf')],'channelData':{}},'headers':{'Authorization':_0x06b2('0x10')+_0x4e6d3b[_0x06b2('0x11')]},'json':!![]};if(_0xdcad44[_0x06b2('0x12')]){_0x21cd31[_0x06b2('0x13')][_0x06b2('0x14')][_0x06b2('0x15')]=_0xdcad44[_0x06b2('0x12')];}if(_0xdcad44[_0x06b2('0x16')]=='1'){_0x21cd31[_0x06b2('0x13')][_0x06b2('0x14')][_0x06b2('0x17')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':'audio/wav'};}if(_0xdcad44[_0x06b2('0x18')]){_0x21cd31[_0x06b2('0x13')][_0x06b2('0x14')][_0x06b2('0x19')]=_0xdcad44[_0x06b2('0x18')];if(_0xdcad44[_0x06b2('0x1a')]){_0x21cd31['body'][_0x06b2('0x14')][_0x06b2('0x1b')]=_0xdcad44['custom_action_data'];}}logger[_0x06b2('0x1c')](JSON['stringify'](_0x21cd31));return rp(_0x21cd31);});};
\ No newline at end of file
index 54a2166..cdf2496 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-'use strict';var asr=require('./lib/api');module['exports']=function(_0x299e56,_0x42f132,_0x456bfb,_0x2cc482){return asr(_0x299e56,_0x42f132,_0x456bfb,_0x2cc482);};
\ No newline at end of file
+var _0x1e2d=['./lib/api','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1e2d,0x1dc));var _0xd1e2=function(_0x3898e6,_0x43fc3c){_0x3898e6=_0x3898e6-0x0;var _0x1c5e50=_0x1e2d[_0x3898e6];return _0x1c5e50;};'use strict';var asr=require(_0xd1e2('0x0'));module[_0xd1e2('0x1')]=function(_0x5b18f8,_0x4c467e,_0x41ee9f,_0x54f145){return asr(_0x5b18f8,_0x4c467e,_0x41ee9f,_0x54f145);};
\ No newline at end of file
index 916e9e3..1c102d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e51=['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','hex','Open\x20Tilde\x20ASR\x20socket','send','createReadStream','data','close','error','Tilde\x20ASR\x20send\x20error','stringify','parse','result','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.','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','message','bluebird','lodash','moment','exports','info','Tilde\x20URI'];(function(_0x506172,_0xbc3a3){var _0x2723c0=function(_0x57c3d9){while(--_0x57c3d9){_0x506172['push'](_0x506172['shift']());}};_0x2723c0(++_0xbc3a3);}(_0x2e51,0x1db));var _0x12e5=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0x2e51[_0x49b207];return _0x2dc8fa;};'use strict';var BPromise=require(_0x12e5('0x0'));var _=require(_0x12e5('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x12e5('0x2'));var crypto=require('crypto');var logger=require('../../../../../../config/logger')('agi');module[_0x12e5('0x3')]=function(_0x121bb9,_0x3f2d3f,_0x5dbab1,_0x4805fe){return new BPromise(function(_0x550bf8,_0x1f0d68){logger[_0x12e5('0x4')](_0x12e5('0x5'),_0x4805fe||_0x12e5('0x6'));var _0x15755f=new WebSocket(_0x4805fe||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE',{'perMessageDeflate':![]});var _0x21d3d9='';var _0x19b5b8='0';var _0x3b48ea='1';var _0x3704a6=_0x12e5('0x7');function _0x11c0d3(_0x5334fd){var _0x2547e9=crypto[_0x12e5('0x8')]('sha1');_0x2547e9[_0x12e5('0x9')](_0x5334fd);return _0x2547e9['digest'](_0x12e5('0xa'));}function _0x5dee6d(){try{logger[_0x12e5('0x4')](_0x12e5('0xb'));var _0x236803=moment()['unix']();var _0x137863=_0x11c0d3(_0x236803+_0x3f2d3f+_0x5dbab1);_0x15755f[_0x12e5('0xc')](JSON['stringify']({'appID':_0x3f2d3f,'timestamp':_0x236803,'appKey':_0x137863}));var _0x5e7ad0=fs[_0x12e5('0xd')](_0x121bb9);_0x5e7ad0['on'](_0x12e5('0xe'),function(_0x512ec5){_0x15755f['send'](_0x512ec5);});_0x5e7ad0['on'](_0x12e5('0xf'),function(){_0x15755f['send']('EOS');});}catch(_0x119c5e){logger[_0x12e5('0x10')](_0x12e5('0x11'),JSON[_0x12e5('0x12')](_0x119c5e));_0x15755f['terminate']();}}function _0xfa6f10(_0x1ea447){try{if(_0x1ea447){var _0x2323ad=JSON[_0x12e5('0x13')](_0x1ea447);switch(_0x2323ad['status']){case 0x0:if(_0x2323ad['result']){if(_0x2323ad[_0x12e5('0x14')]['final']){logger['info'](_0x12e5('0x15'),JSON[_0x12e5('0x12')](_0x2323ad[_0x12e5('0x14')][_0x12e5('0x16')]));_0x21d3d9=_0x2323ad[_0x12e5('0x14')][_0x12e5('0x16')][0x0][_0x12e5('0x17')];_0x19b5b8=_0x2323ad[_0x12e5('0x14')]['hypotheses'][0x0][_0x12e5('0x18')];_0x3b48ea='0';_0x3704a6=_0x12e5('0x19');_0x15755f[_0x12e5('0x1a')]();}}break;case 0x1:logger['info'](_0x12e5('0x7'));_0x3b48ea='1';_0x3704a6='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger[_0x12e5('0x4')]('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x3b48ea='2';_0x3704a6=_0x12e5('0x1b');break;case 0x9:logger[_0x12e5('0x4')]('Not\x20available.\x20Max\x20load\x20limit\x20reached.');_0x3b48ea='9';_0x3704a6=_0x12e5('0x1c');break;case 0xa:logger[_0x12e5('0x4')](_0x12e5('0x1d'));_0x3b48ea='10';_0x3704a6='Authentication\x20failed.';break;case 0xb:logger[_0x12e5('0x4')](_0x12e5('0x1e'));_0x3b48ea='11';_0x3704a6=_0x12e5('0x1e');}}}catch(_0x2bfe3a){logger[_0x12e5('0x10')]('Tilde\x20ASR\x20parse\x20error',JSON['stringify'](_0x2bfe3a));_0x15755f[_0x12e5('0x1a')]();}}function _0xe920ea(){logger[_0x12e5('0x4')](_0x12e5('0x1f'));_0x550bf8({'transcript':_0x21d3d9,'confidence':_0x19b5b8,'status':_0x3b48ea,'status_message':_0x3704a6});}function _0x2dc516(_0x4cc5ad){logger[_0x12e5('0x10')](_0x12e5('0x20'));if(!_[_0x12e5('0x21')](_0x4cc5ad)){logger['error'](_[_0x12e5('0x22')](_0x4cc5ad)?JSON[_0x12e5('0x12')](_0x4cc5ad):_0x4cc5ad);}}_0x15755f['on'](_0x12e5('0x23'),_0x5dee6d);_0x15755f['on'](_0x12e5('0x24'),_0xfa6f10);_0x15755f['on'](_0x12e5('0xf'),_0xe920ea);_0x15755f['on'](_0x12e5('0x10'),_0x2dc516);});};
\ No newline at end of file
+var _0x5b71=['result','final','hypotheses','likelihood','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.','error','Tilde\x20ASR\x20parse\x20error','Error\x20Tilde\x20ASR\x20socket','isNil','message','bluebird','moment','crypto','agi','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','digest','hex','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','data','close','EOS','Tilde\x20ASR\x20send\x20error','terminate','parse','status'];(function(_0x4a8e28,_0x5cc400){var _0x37df67=function(_0x8c1943){while(--_0x8c1943){_0x4a8e28['push'](_0x4a8e28['shift']());}};_0x37df67(++_0x5cc400);}(_0x5b71,0x110));var _0x15b7=function(_0x25cf63,_0x4b0159){_0x25cf63=_0x25cf63-0x0;var _0x11d257=_0x5b71[_0x25cf63];return _0x11d257;};'use strict';var BPromise=require(_0x15b7('0x0'));var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x15b7('0x1'));var crypto=require(_0x15b7('0x2'));var logger=require('../../../../../../config/logger')(_0x15b7('0x3'));module['exports']=function(_0xc913c2,_0x1c89d0,_0x12cd49,_0x5104f1){return new BPromise(function(_0x573632,_0x260c4c){logger[_0x15b7('0x4')](_0x15b7('0x5'),_0x5104f1||_0x15b7('0x6'));var _0x18fd53=new WebSocket(_0x5104f1||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE',{'perMessageDeflate':![]});var _0x4c8065='';var _0x537c60='0';var _0x143ed7='1';var _0x2254bf=_0x15b7('0x7');function _0x578bbc(_0x82a283){var _0x1a0aa6=crypto[_0x15b7('0x8')](_0x15b7('0x9'));_0x1a0aa6[_0x15b7('0xa')](_0x82a283);return _0x1a0aa6[_0x15b7('0xb')](_0x15b7('0xc'));}function _0x1885db(){try{logger['info'](_0x15b7('0xd'));var _0x2cbca0=moment()[_0x15b7('0xe')]();var _0x2091d9=_0x578bbc(_0x2cbca0+_0x1c89d0+_0x12cd49);_0x18fd53[_0x15b7('0xf')](JSON[_0x15b7('0x10')]({'appID':_0x1c89d0,'timestamp':_0x2cbca0,'appKey':_0x2091d9}));var _0xeea74b=fs['createReadStream'](_0xc913c2);_0xeea74b['on'](_0x15b7('0x11'),function(_0x2189d3){_0x18fd53[_0x15b7('0xf')](_0x2189d3);});_0xeea74b['on'](_0x15b7('0x12'),function(){_0x18fd53[_0x15b7('0xf')](_0x15b7('0x13'));});}catch(_0x5a2161){logger['error'](_0x15b7('0x14'),JSON['stringify'](_0x5a2161));_0x18fd53[_0x15b7('0x15')]();}}function _0x6ab16(_0x113e44){try{if(_0x113e44){var _0x2a6ac6=JSON[_0x15b7('0x16')](_0x113e44);switch(_0x2a6ac6[_0x15b7('0x17')]){case 0x0:if(_0x2a6ac6[_0x15b7('0x18')]){if(_0x2a6ac6[_0x15b7('0x18')][_0x15b7('0x19')]){logger['info']('Tilde\x20ASR\x20hypoteses',JSON[_0x15b7('0x10')](_0x2a6ac6['result']['hypotheses']));_0x4c8065=_0x2a6ac6['result'][_0x15b7('0x1a')][0x0]['transcript'];_0x537c60=_0x2a6ac6[_0x15b7('0x18')]['hypotheses'][0x0][_0x15b7('0x1b')];_0x143ed7='0';_0x2254bf='Success.';_0x18fd53[_0x15b7('0x15')]();}}break;case 0x1:logger[_0x15b7('0x4')](_0x15b7('0x7'));_0x143ed7='1';_0x2254bf=_0x15b7('0x7');break;case 0x2:logger[_0x15b7('0x4')](_0x15b7('0x1c'));_0x143ed7='2';_0x2254bf='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0x15b7('0x4')](_0x15b7('0x1d'));_0x143ed7='9';_0x2254bf='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger['info'](_0x15b7('0x1e'));_0x143ed7='10';_0x2254bf=_0x15b7('0x1e');break;case 0xb:logger[_0x15b7('0x4')](_0x15b7('0x1f'));_0x143ed7='11';_0x2254bf='All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.';}}}catch(_0x2e18d2){logger[_0x15b7('0x20')](_0x15b7('0x21'),JSON[_0x15b7('0x10')](_0x2e18d2));_0x18fd53[_0x15b7('0x15')]();}}function _0x441cfc(){logger[_0x15b7('0x4')]('Close\x20Tilde\x20ASR\x20socket');_0x573632({'transcript':_0x4c8065,'confidence':_0x537c60,'status':_0x143ed7,'status_message':_0x2254bf});}function _0x15a581(_0x25aada){logger[_0x15b7('0x20')](_0x15b7('0x22'));if(!_[_0x15b7('0x23')](_0x25aada)){logger[_0x15b7('0x20')](_['isObject'](_0x25aada)?JSON[_0x15b7('0x10')](_0x25aada):_0x25aada);}}_0x18fd53['on']('open',_0x1885db);_0x18fd53['on'](_0x15b7('0x24'),_0x6ab16);_0x18fd53['on'](_0x15b7('0x12'),_0x441cfc);_0x18fd53['on']('error',_0x15a581);});};
\ No newline at end of file
index 554a9f1..8cafb93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6bf=['./asr','exports'];(function(_0x1e1b18,_0x5d471b){var _0x3da8f2=function(_0x51fe71){while(--_0x51fe71){_0x1e1b18['push'](_0x1e1b18['shift']());}};_0x3da8f2(++_0x5d471b);}(_0xa6bf,0x1aa));var _0xfa6b=function(_0x3a6bce,_0x1f0c4c){_0x3a6bce=_0x3a6bce-0x0;var _0x2fdd4a=_0xa6bf[_0x3a6bce];return _0x2fdd4a;};var asr=require(_0xfa6b('0x0'));module[_0xfa6b('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x693d=['./asr','exports'];(function(_0x4f669d,_0x2d9b83){var _0x3e31af=function(_0x2fec7c){while(--_0x2fec7c){_0x4f669d['push'](_0x4f669d['shift']());}};_0x3e31af(++_0x2d9b83);}(_0x693d,0x88));var _0xd693=function(_0x4db9c2,_0x35237e){_0x4db9c2=_0x4db9c2-0x0;var _0x1d26dd=_0x693d[_0x4db9c2];return _0x1d26dd;};var asr=require(_0xd693('0x0'));module[_0xd693('0x1')]={'asr':asr};
\ No newline at end of file
index 5a34861..e119ec8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0x9c44[_0x13e741];return _0x3f8bb3;};'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
+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(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x9c44[_0x4b055c];return _0x4b62bb;};'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 6d75e5e..e4acb12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71f4=['LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','no\x20database\x20selected','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','forEach','keys','%s_ROWS_COUNT','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20found','SIP/%s','opts','Executed\x20command\x20%s','DIAL','dialogflow','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','Dialogflow\x20Result\x20%s','speech','Dialogflow\x20is\x20unreachable','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','out','dialogflowV2','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','no\x20ndauth\x20url\x20configured','no\x20username\x20configured','password','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','sesteknda','Sestek\x20NDA\x20%s\x20file\x20created','audiofile','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','Enter\x20in\x20END\x20(%s)\x20block','end','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','trunk_name','no\x20trunk\x20selected','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','file_id','no\x20file\x20audio\x20selected','getData','response','maxdigit','test','mindigit','no\x20variable\x20found','hiddendigitsnum','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','streamFile','unlink','aws\x20Polly\x20is\x20unreachable','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','AWS_LEX_%s','toUpperCase','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','beep','NOBEEP','recordFile','intKey','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appsecret\x20configured','TILDE_ASR_%s','TildeASR\x20Result\x20%s','continueAt','priority','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','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]','variable\x20%s[key]\x20set','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','getPause','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','Executed\x20command\x20%s\x20%s','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','XMCS-QUEUE','toLowerCase','gosub','position','QUEUE','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','RECORDING_SAVENAME','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','inspect','%s_STATUS_CODE','200','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','variable\x20%s\x20set','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','sayPhonetic','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','Smtp','user','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','no\x20sms\x20account\x20found','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','set','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','yes','Skipped\x20Answer','subproject','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','host','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','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','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','exports','shelljs','odbc','randomstring','moment','mustache','../../config/logger','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getdigits','getsecretdigits','mailRpc','prototype','rpc','then','name','catch','getVoiceQueue','getVoiceQueueById','getSquareProject','getSquareProjectById','getSquareOdbc','getUser','getUserById','getTrunk','getSound','getSoundById','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','interval','map','Intervals','format','getQueryOdbc','open','info','ODBC\x20connection\x20successfully','query','close','error','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','channel','uniqueid','label','arg_1','callerid','createSquareRecording','calleridname','context','extension','file','createSquareMessage','createCmContact','isNil','random','lastName','phone','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPauseById','agentPause','agentUnpause','agentLogout','agent','agentLogin','internal','%s/%s@from-sip/n','shellCommand','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','googleTTS','google_tts_language','restAPI','url','method','timeout','number','PUT','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','headers','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','key','dialogflow_language','googleDialogflowV2','client_email','private_key','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','Amy','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','appsecret','clear','includes','agicommand','clone','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','hasOwnProperty','isPlainObject','isArray','isEmpty','saveRestApiResult','%s.%s','length','setVariable','split','replaceAll','getVariable','extra','getAndSetVariable','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','no\x20text\x20configured','MRCPSynth','result','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','agi','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','answer','Wait\x20%s\x20seconds\x20before\x20answer','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','delay','add','minutes','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','Executed\x20command\x20MRCPSynth\x20%s','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','exec','lumenvoxasr','LUMENVOX_ASR_TRANSCRIPT'];(function(_0x5eb79b,_0x26d422){var _0x3c7d3f=function(_0x131f7c){while(--_0x131f7c){_0x5eb79b['push'](_0x5eb79b['shift']());}};_0x3c7d3f(++_0x26d422);}(_0x71f4,0xf9));var _0x471f=function(_0xd21a94,_0x1777ca){_0xd21a94=_0xd21a94-0x0;var _0x3112f4=_0x71f4[_0xd21a94];return _0x3112f4;};'use strict';var fs=require('fs');var util=require('util');var _=require('lodash');var sh=require(_0x471f('0x0'));var odbc=require(_0x471f('0x1'))();var rs=require(_0x471f('0x2'));var moment=require(_0x471f('0x3'));var Mustache=require(_0x471f('0x4'));var rp=require('request-promise');var logger=require(_0x471f('0x5'))('agi');var config=require(_0x471f('0x6'));var shared=require('../../config/environment/shared');var scripts=require(_0x471f('0x7'));var FILES_PATH=_0x471f('0x8');var recursiveMapAttributes=[_0x471f('0x9'),_0x471f('0xa')];var verticesWithRetry=[_0x471f('0xb'),_0x471f('0xc'),_0x471f('0xd')];var AGIVertices=function(_0x3a4fa9,_0x3e59ed,_0x556733){this['channel']=_0x3a4fa9;this['rpc']=_0x3e59ed;this[_0x471f('0xe')]=_0x556733;};AGIVertices[_0x471f('0xf')]['getVariable']=function(_0x29e584,_0x137b84){this[_0x471f('0x10')]['getVariableById'](_0x29e584)[_0x471f('0x11')](function(_0x16662a){_0x137b84(null,_0x16662a?_0x16662a[_0x471f('0x12')]:![]);})[_0x471f('0x13')](function(_0xafc5e8){_0x137b84(_0xafc5e8);});};AGIVertices[_0x471f('0xf')][_0x471f('0x14')]=function(_0x1de7fa,_0x2bc122){this['rpc'][_0x471f('0x15')](_0x1de7fa)['then'](function(_0x17ba2b){_0x2bc122(null,_0x17ba2b?_0x17ba2b[_0x471f('0x12')]:![]);})[_0x471f('0x13')](function(_0x211780){_0x2bc122(_0x211780);});};AGIVertices[_0x471f('0xf')][_0x471f('0x16')]=function(_0x223923,_0x18287e){this['rpc'][_0x471f('0x17')](_0x223923)[_0x471f('0x11')](function(_0x4c3e47){_0x18287e(null,_0x4c3e47?_0x4c3e47[_0x471f('0x12')]:![]);})['catch'](function(_0x2bf4cc){_0x18287e(_0x2bf4cc);});};AGIVertices['prototype'][_0x471f('0x18')]=function(_0x73d6c5,_0x22859a){this[_0x471f('0x10')]['getSquareOdbcById'](_0x73d6c5)['then'](function(_0x1b2f67){_0x22859a(null,_0x1b2f67?_0x1b2f67['dsn']:![]);})[_0x471f('0x13')](function(_0x548670){_0x22859a(_0x548670);});};AGIVertices['prototype'][_0x471f('0x19')]=function(_0x2503f4,_0x5b3118){this[_0x471f('0x10')][_0x471f('0x1a')](_0x2503f4)[_0x471f('0x11')](function(_0x59e2d9){_0x5b3118(null,_0x59e2d9?_0x59e2d9[_0x471f('0x12')]:![]);})[_0x471f('0x13')](function(_0x234f12){_0x5b3118(_0x234f12);});};AGIVertices[_0x471f('0xf')][_0x471f('0x1b')]=function(_0x505ca3,_0x17837d){this[_0x471f('0x10')]['getTrunkById'](_0x505ca3)['then'](function(_0x3d1ee1){_0x17837d(null,_0x3d1ee1?_0x3d1ee1[_0x471f('0x12')]:![]);})[_0x471f('0x13')](function(_0x3d1a1c){_0x17837d(_0x3d1a1c);});};AGIVertices[_0x471f('0xf')][_0x471f('0x1c')]=function(_0x1ca57a,_0x2a5599){var _0x534135=this;this[_0x471f('0x10')][_0x471f('0x1d')](_0x1ca57a)['then'](function(_0x127a49){_0x2a5599(null,_0x127a49?_0x534135[_0x471f('0x1e')](_0x127a49[_0x471f('0x1f')]):![]);})[_0x471f('0x13')](function(_0x25a43c){_0x2a5599(_0x25a43c);});};AGIVertices['prototype'][_0x471f('0x20')]=function(_0x2b5aa6,_0x574289){this[_0x471f('0x10')][_0x471f('0x21')](_0x2b5aa6)[_0x471f('0x11')](function(_0x3ca331){_0x574289(null,_0x3ca331?_0x3ca331:![]);})[_0x471f('0x13')](function(_0x3b29e6){_0x574289(_0x3b29e6);});};AGIVertices[_0x471f('0xf')]['sendMailMessage']=function(_0x55bae1,_0x5c66d3,_0x5b8fd7){this[_0x471f('0xe')][_0x471f('0x22')](_0x55bae1,_0x5c66d3)['then'](function(){_0x5b8fd7(null);})[_0x471f('0x13')](function(_0x5adee7){_0x5b8fd7(_0x5adee7);});};AGIVertices[_0x471f('0xf')][_0x471f('0x23')]=function(_0x27fbd4,_0x41e26c){this[_0x471f('0x10')][_0x471f('0x24')](_0x27fbd4)['then'](function(_0x22b077){if(_0x22b077){if(_0x22b077['IntervalId']){_0x41e26c(null,[_0x22b077[_0x471f('0x25')]]);}else{_0x41e26c(null,_[_0x471f('0x26')](_0x22b077[_0x471f('0x27')],'interval'));}}else{_0x41e26c(null,![]);}})['catch'](function(_0x7f5bd){_0x41e26c(_0x7f5bd);});};AGIVertices[_0x471f('0xf')][_0x471f('0x1e')]=function(_0xa50b23){return util[_0x471f('0x28')]('%s/sounds/converted/%s',FILES_PATH,_0xa50b23);};AGIVertices['prototype'][_0x471f('0x29')]=function(_0x2aa80f,_0x255e86,_0x56d5d5){odbc[_0x471f('0x2a')](_0x2aa80f,function(_0x4abb1a){if(_0x4abb1a){logger['error']('Error\x20getting\x20ODBC\x20connection\x20%s',_0x4abb1a);_0x56d5d5(_0x4abb1a);}else{logger[_0x471f('0x2b')](_0x471f('0x2c'));odbc[_0x471f('0x2d')](_0x255e86,function(_0x471ed9,_0x3bfd46){if(_0x471ed9){logger['info']('Error\x20executing\x20query\x20%s',_0x255e86);_0x56d5d5(_0x471ed9);}else{logger[_0x471f('0x2b')]('Query\x20executed\x20correctly\x20%s',_0x255e86);odbc[_0x471f('0x2e')](function(_0x5807ae){if(_0x5807ae){logger[_0x471f('0x2f')](_0x471f('0x30'),_0x5807ae);}_0x56d5d5(null,_0x3bfd46);});}});}});};AGIVertices[_0x471f('0xf')][_0x471f('0x31')]=function(_0x13d762,_0x40ae1b){this[_0x471f('0x10')][_0x471f('0x32')](_0x13d762)[_0x471f('0x11')](function(_0x39c1a8){_0x40ae1b(null,_0x39c1a8?_0x39c1a8:![]);})['catch'](function(_0x4d189a){_0x40ae1b(_0x4d189a);});};AGIVertices[_0x471f('0xf')][_0x471f('0x33')]=function(_0x518654,_0x517237){this[_0x471f('0x10')][_0x471f('0x33')](_0x518654)[_0x471f('0x11')](function(_0x4e37b7){_0x517237(null,_0x4e37b7);})[_0x471f('0x13')](function(_0x59e1e5){_0x517237(_0x59e1e5);});};AGIVertices[_0x471f('0xf')][_0x471f('0x34')]=function(_0x588678,_0x2558ff,_0x363847){this[_0x471f('0x10')][_0x471f('0x34')]({'uniqueid':this[_0x471f('0x35')][_0x471f('0x36')],'node':_0x588678[_0x471f('0x37')],'application':_0x588678['agicommand'],'data':_0x2558ff||null,'project_name':this['channel'][_0x471f('0x38')],'callerid':this[_0x471f('0x35')][_0x471f('0x39')]})[_0x471f('0x11')](function(_0x4f85a0){if(_0x363847){_0x363847(null,_0x4f85a0);}})[_0x471f('0x13')](function(_0xca2da1){if(_0x363847){_0x363847(_0xca2da1);}});};AGIVertices[_0x471f('0xf')][_0x471f('0x3a')]=function(_0x564e65,_0xb121da,_0x32bbaf,_0x17d077){this[_0x471f('0x10')]['createSquareRecording']({'uniqueid':this['channel']['uniqueid'],'callerid':this[_0x471f('0x35')][_0x471f('0x39')],'calleridname':this[_0x471f('0x35')][_0x471f('0x3b')],'context':this['channel'][_0x471f('0x3c')],'extension':this[_0x471f('0x35')][_0x471f('0x3d')],'priority':this[_0x471f('0x35')]['priority'],'accountcode':this['channel']['accountcode'],'dnid':this[_0x471f('0x35')]['dnid'],'projectName':this[_0x471f('0x35')][_0x471f('0x38')],'saveName':_0xb121da,'filename':_0x564e65[_0x471f('0x3e')]||_0xb121da,'savePath':_0x32bbaf})[_0x471f('0x11')](function(_0x31000e){_0x17d077(null,_0x31000e);})[_0x471f('0x13')](function(_0x407663){_0x17d077(_0x407663);});};AGIVertices[_0x471f('0xf')][_0x471f('0x3f')]=function(_0x4329fc,_0x10c01b,_0x4a5577,_0x12d3fc,_0x37f20f){this[_0x471f('0x10')][_0x471f('0x3f')]({'uniqueid':this[_0x471f('0x35')][_0x471f('0x36')],'body':_0x4329fc,'direction':_0x10c01b,'providerName':_0x4a5577,'providerResponse':_0x12d3fc})[_0x471f('0x11')](function(_0x1dcffb){if(_0x37f20f){_0x37f20f(null,_0x1dcffb);}})[_0x471f('0x13')](function(_0x5438ed){if(_0x37f20f){_0x37f20f(_0x5438ed);}});};AGIVertices['prototype'][_0x471f('0x40')]=function(_0x54f94d,_0x1772ad){this[_0x471f('0x10')]['createCmContact']({'firstName':_['isEmpty'](_0x54f94d[_0x471f('0x12')])||_[_0x471f('0x41')](_0x54f94d[_0x471f('0x12')])?'callback_'+Math[_0x471f('0x42')]():_0x54f94d[_0x471f('0x12')],'lastName':_['isEmpty'](_0x54f94d['lastName'])||_['isNil'](_0x54f94d['lastName'])?null:_0x54f94d[_0x471f('0x43')],'phone':_0x54f94d[_0x471f('0x44')],'ListId':_0x54f94d[_0x471f('0x45')],'scheduledat':_0x54f94d[_0x471f('0x46')],'callbackUniqueid':this['channel'][_0x471f('0x36')],'tags':_0x471f('0x47'),'description':_0x471f('0x48')+_0x54f94d['scheduledAt'][_0x471f('0x49')](),'priority':_0x54f94d[_0x471f('0x4a')]})[_0x471f('0x11')](function(_0x1c3542){_0x1772ad(null,_0x1c3542);})[_0x471f('0x13')](function(_0x561df1){_0x1772ad(_0x561df1);});};AGIVertices['prototype']['getPause']=function(_0x4d9598,_0x2163a5){this[_0x471f('0x10')][_0x471f('0x4b')](_0x4d9598)[_0x471f('0x11')](function(_0x4b6fb3){_0x2163a5(null,_0x4b6fb3?_0x4b6fb3[_0x471f('0x12')]:![]);})[_0x471f('0x13')](function(_0x59f61e){_0x2163a5(_0x59f61e);});};AGIVertices['prototype'][_0x471f('0x4c')]=function(_0x1ff9d4,_0x3abd6b,_0x7297f0){var _0x4ef819={'role':'agent'};_0x4ef819[_0x1ff9d4]=this['channel'][_0x471f('0x39')];this[_0x471f('0x10')][_0x471f('0x4c')](_0x4ef819,_0x3abd6b,this[_0x471f('0x35')][_0x471f('0x36')])[_0x471f('0x11')](function(_0x2032a0){_0x7297f0(null,_[_0x471f('0x41')](_0x2032a0)?![]:!![]);})[_0x471f('0x13')](function(_0x333214){logger[_0x471f('0x2f')](_0x333214);_0x7297f0(null,![]);});};AGIVertices['prototype'][_0x471f('0x4d')]=function(_0x1d27f4,_0x412784){var _0x27bbf5={'role':'agent'};_0x27bbf5[_0x1d27f4]=this['channel'][_0x471f('0x39')];this[_0x471f('0x10')]['agentUnpause'](_0x27bbf5)['then'](function(_0x2bda10){_0x412784(null,_[_0x471f('0x41')](_0x2bda10)?![]:!![]);})['catch'](function(_0x2a3a5c){logger[_0x471f('0x2f')](_0x2a3a5c);_0x412784(null,![]);});};AGIVertices[_0x471f('0xf')][_0x471f('0x4e')]=function(_0x4d6880,_0x169d4a){var _0x734493={'role':_0x471f('0x4f')};_0x734493[_0x4d6880]=this[_0x471f('0x35')][_0x471f('0x39')];this['rpc'][_0x471f('0x4e')](_0x734493)['then'](function(_0x2fe181){_0x169d4a(null,_[_0x471f('0x41')](_0x2fe181)?![]:!![]);})[_0x471f('0x13')](function(_0x3e5fb3){logger['error'](_0x3e5fb3);_0x169d4a(null,![]);});};AGIVertices[_0x471f('0xf')][_0x471f('0x50')]=function(_0xd9464a,_0x2fc708){var _0x154024={'role':_0x471f('0x4f')};_0x154024[_0xd9464a]=this[_0x471f('0x35')][_0x471f('0x39')];var _0x1c1222=_0xd9464a!=_0x471f('0x51')?util[_0x471f('0x28')](_0x471f('0x52'),'LOCAL',this[_0x471f('0x35')][_0x471f('0x39')]):undefined;this[_0x471f('0x10')][_0x471f('0x50')](_0x154024,_0x1c1222)['then'](function(_0xf23ec2){_0x2fc708(null,_[_0x471f('0x41')](_0xf23ec2)?![]:!![]);})[_0x471f('0x13')](function(_0x104565){logger['error'](_0x104565);_0x2fc708(null,![]);});};AGIVertices[_0x471f('0xf')][_0x471f('0x53')]=function(_0x5ab036,_0x1f941d){sh['exec'](_['trim'](_0x5ab036),function(_0x53a71a,_0x25983f){var _0xd5020e=_0x25983f[_0x471f('0x54')](/(\r\n|\n|\r)/gm,'');_0x1f941d(null,_0xd5020e);});};AGIVertices[_0x471f('0xf')][_0x471f('0x55')]=function(_0x29d1b3,_0x4d64a7){scripts[_0x471f('0x55')](_0x29d1b3[_0x471f('0x56')],_0x29d1b3[_0x471f('0x57')]||_0x471f('0x58'),_0x29d1b3[_0x471f('0x58')],_0x29d1b3[_0x471f('0x59')]||_0x471f('0x5a'),_0x29d1b3[_0x471f('0x5b')]||'MALE',_0x29d1b3['audioEncoding']||'MP3')['then'](function(_0x21d53f){_0x4d64a7(null,_0x21d53f);})[_0x471f('0x13')](function(_0x410a0a){_0x4d64a7(_0x410a0a);});};AGIVertices['prototype']['googleTTS']=function(_0x77a2c8,_0x46b24d){scripts[_0x471f('0x5c')](_0x77a2c8[_0x471f('0x58')],_0x77a2c8[_0x471f('0x5d')]||'en',0x1)['then'](function(_0x21c310){_0x46b24d(null,_0x21c310);})['catch'](function(_0x3c9ecc){_0x46b24d(_0x3c9ecc);});};AGIVertices['prototype'][_0x471f('0x5e')]=function(_0x2005a6,_0x5152ed){var _0x36be03={'uri':_0x2005a6[_0x471f('0x5f')],'method':_0x2005a6[_0x471f('0x60')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x2005a6[_0x471f('0x61')])===_0x471f('0x62')&&parseInt(_0x2005a6['timeout'])>=0x1?parseInt(_0x2005a6[_0x471f('0x61')])*0x3e8:0x5*0x3e8};if(_['includes'](['POST',_0x471f('0x63')],_0x36be03[_0x471f('0x60')]['toUpperCase']())){try{_0x36be03[_0x471f('0x64')]=_0x2005a6['rawBody']?JSON[_0x471f('0x65')](_0x2005a6[_0x471f('0xa')]):{};}catch(_0x4a116c){logger[_0x471f('0x2f')](_0x471f('0x66'),_0x4a116c);}}try{_0x36be03['headers']=_0x2005a6[_0x471f('0x9')]?JSON['parse'](_0x2005a6[_0x471f('0x9')]):{};}catch(_0xb09ad7){logger[_0x471f('0x2f')](_0x471f('0x67'),_0xb09ad7);}if(_0x2005a6[_0x471f('0x68')]){try{var _0x56f37d=require(_0x2005a6[_0x471f('0x68')])[_0x471f('0x69')](this,_0x36be03);_0x36be03[_0x471f('0x6a')]=Mustache[_0x471f('0x6b')](_0x2005a6[_0x471f('0x5f')],_0x56f37d,{},['$$','$$']);if(_0x36be03[_0x471f('0x6c')]){_0x36be03[_0x471f('0x6c')]=JSON[_0x471f('0x65')](Mustache[_0x471f('0x6b')](JSON[_0x471f('0x6d')](_0x36be03[_0x471f('0x6c')]),_0x56f37d,{},['$$','$$']));}if(_0x36be03[_0x471f('0x64')]){_0x36be03['body']=JSON['parse'](Mustache[_0x471f('0x6b')](JSON[_0x471f('0x6d')](_0x36be03[_0x471f('0x64')]),_0x56f37d,{},['$$','$$']));}}catch(_0x5580e3){logger[_0x471f('0x2f')](_0x471f('0x6e'),_0x5580e3);}}rp(_0x36be03)[_0x471f('0x11')](function(_0x9756f0){var _0x521157={'statusCode':_0x9756f0[_0x471f('0x6f')]||0xc8,'statusMessage':_0x9756f0[_0x471f('0x70')]||'OK','headers':_0x9756f0[_0x471f('0x6c')]||{},'body':_0x9756f0[_0x471f('0x64')]||{}};_0x5152ed(null,_0x521157);})['catch'](function(_0x5d786a){var _0x48d173={'statusCode':_0x5d786a[_0x471f('0x6f')]||0x1f4,'statusMessage':_0x5d786a[_0x471f('0x71')]||_0x471f('0x72'),'headers':_0x5d786a[_0x471f('0x73')][_0x471f('0x6c')]||{},'body':_0x5d786a[_0x471f('0x73')][_0x471f('0x64')]||{}};_0x5152ed(null,_0x48d173);});};AGIVertices[_0x471f('0xf')]['googleDialogflow']=function(_0x1bed6f,_0x4b5abd){scripts['googleDialogflow'](this['channel'][_0x471f('0x36')],_0x1bed6f[_0x471f('0x74')],_0x1bed6f[_0x471f('0x58')],_0x1bed6f[_0x471f('0x75')]||'en')[_0x471f('0x11')](function(_0xdb0f7){_0x4b5abd(null,_0xdb0f7);})[_0x471f('0x13')](function(_0x17c433){_0x4b5abd(_0x17c433);});};AGIVertices['prototype'][_0x471f('0x76')]=function(_0x60d6c,_0x3d381b){scripts[_0x471f('0x76')](this['channel'][_0x471f('0x36')],_0x60d6c['dialogflowV2_project_id'],_0x60d6c[_0x471f('0x77')],_0x60d6c[_0x471f('0x78')],_0x60d6c[_0x471f('0x58')],_0x60d6c['dialogflowV2_language']||'en')[_0x471f('0x11')](function(_0x4bb471){_0x3d381b(null,_0x4bb471);})['catch'](function(_0x5bc315){_0x3d381b(_0x5bc315);});};AGIVertices[_0x471f('0xf')][_0x471f('0x79')]=function(_0x58c305,_0x2388d3){scripts[_0x471f('0x79')](this[_0x471f('0x35')],_0x58c305)[_0x471f('0x11')](function(_0x49424d){_0x2388d3(null,_0x49424d);})[_0x471f('0x13')](function(_0x1f1bd8){_0x2388d3(_0x1f1bd8);});};AGIVertices[_0x471f('0xf')][_0x471f('0x7a')]=function(_0x558951,_0x2f16f1){scripts[_0x471f('0x7a')](_0x558951[_0x471f('0x74')],_0x558951['text'],_0x558951[_0x471f('0x7b')]||_0x471f('0x5a'),_0x558951[_0x471f('0x7c')])['then'](function(_0x224573){_0x2f16f1(null,_0x224573);})[_0x471f('0x13')](function(_0x5c3f52){_0x2f16f1(_0x5c3f52);});};AGIVertices['prototype']['ispeechASR']=function(_0x3e19bb,_0x1ac6d8,_0x541f74){scripts[_0x471f('0x7d')](_0x1ac6d8,_0x3e19bb[_0x471f('0x74')],_0x3e19bb[_0x471f('0x7e')]||_0x471f('0x5a'),this[_0x471f('0x7f')](_0x3e19bb[_0x471f('0x80')])?_0x3e19bb['model']:undefined)['then'](function(_0x5c592c){_0x541f74(null,_0x5c592c);})[_0x471f('0x13')](function(_0x192cf3){_0x541f74(_0x192cf3);});};AGIVertices[_0x471f('0xf')][_0x471f('0x81')]=function(_0x104e51,_0x54ea84){scripts['awsPolly'](_0x104e51[_0x471f('0x82')],_0x104e51[_0x471f('0x83')],_0x104e51[_0x471f('0x84')],_0x104e51['aws_polly_voice']||_0x471f('0x85'),_0x104e51[_0x471f('0x58')],_0x104e51[_0x471f('0x86')]||'text')[_0x471f('0x11')](function(_0x208139){_0x54ea84(null,_0x208139);})['catch'](function(_0x425210){_0x54ea84(_0x425210);});};AGIVertices['prototype'][_0x471f('0x87')]=function(_0x28ec23,_0x181a31){scripts[_0x471f('0x87')](this[_0x471f('0x35')]['uniqueid'],_0x28ec23[_0x471f('0x82')],_0x28ec23['aws_secret_access_key'],_0x28ec23[_0x471f('0x88')],_0x28ec23[_0x471f('0x58')],_0x28ec23[_0x471f('0x89')])[_0x471f('0x11')](function(_0x42674a){_0x181a31(null,_0x42674a);})[_0x471f('0x13')](function(_0x136ad1){_0x181a31(_0x136ad1);});};AGIVertices['prototype']['googleASR']=function(_0x1ecd3f,_0x1901c2,_0xf8d6a3){scripts[_0x471f('0x8a')](_0x1901c2,_0x1ecd3f[_0x471f('0x74')],_0x1ecd3f[_0x471f('0x8b')]||_0x471f('0x5a'))[_0x471f('0x11')](function(_0x4e2de5){_0xf8d6a3(null,_0x4e2de5);})[_0x471f('0x13')](function(_0x3586d5){_0xf8d6a3(_0x3586d5);});};AGIVertices[_0x471f('0xf')]['tildeASR']=function(_0x5b9be3,_0x2fe7b2,_0x203ead){scripts[_0x471f('0x8c')](_0x2fe7b2,_0x5b9be3[_0x471f('0x8d')],_0x5b9be3[_0x471f('0x8e')],_0x5b9be3[_0x471f('0x6a')])['then'](function(_0x5e3691){_0x203ead(null,_0x5e3691);})[_0x471f('0x13')](function(_0xc95b1a){_0x203ead(_0xc95b1a);});};AGIVertices[_0x471f('0xf')][_0x471f('0x8f')]=function(_0x444c3e){var _0x43a89f=_[_0x471f('0x90')](verticesWithRetry,_0x444c3e[_0x471f('0x91')])?_0x444c3e:_[_0x471f('0x92')](_0x444c3e);for(var _0x3767c8 in _0x43a89f){if(_0x43a89f['hasOwnProperty'](_0x3767c8)){if(_0x43a89f[_0x3767c8]&&_[_0x471f('0x93')](_0x43a89f[_0x3767c8])){if(_[_0x471f('0x90')](recursiveMapAttributes,_0x3767c8)){_0x43a89f[_0x3767c8]=this[_0x471f('0x94')](_0x43a89f[_0x3767c8]);}else{_0x43a89f[_0x3767c8]=this[_0x471f('0x95')](_0x43a89f[_0x3767c8]);}}}}return _0x43a89f;};AGIVertices[_0x471f('0xf')][_0x471f('0x96')]=function(_0x2f4092){for(var _0x3bbb90 in _0x2f4092){if(_0x2f4092[_0x471f('0x97')](_0x3bbb90)){if(_[_0x471f('0x98')](_0x2f4092[_0x3bbb90])){this[_0x471f('0x96')](_0x2f4092[_0x3bbb90]);}else if(_[_0x471f('0x99')](_0x2f4092[_0x3bbb90])){for(var _0x37a155=0x0;_0x37a155<_0x2f4092[_0x3bbb90]['length'];_0x37a155++){this[_0x471f('0x96')](_0x2f4092[_0x3bbb90][_0x37a155]);}}else if(_[_0x471f('0x93')](_0x2f4092[_0x3bbb90])){_0x2f4092[_0x3bbb90]=this[_0x471f('0x95')](_0x2f4092[_0x3bbb90]);}}}};AGIVertices[_0x471f('0xf')]['saveRestApiResult']=function(_0x571075,_0x275566){for(var _0x1be249 in _0x571075){if(_0x571075[_0x471f('0x97')](_0x1be249)){if(_[_0x471f('0x98')](_0x571075[_0x1be249])){if(!_[_0x471f('0x9a')](_0x571075[_0x1be249])){this[_0x471f('0x9b')](_0x571075[_0x1be249],util[_0x471f('0x28')](_0x471f('0x9c'),_0x275566,_0x1be249));}}else if(_[_0x471f('0x99')](_0x571075[_0x1be249])){for(var _0x43e334=0x0;_0x43e334<_0x571075[_0x1be249][_0x471f('0x9d')];_0x43e334++){this['saveRestApiResult'](_0x571075[_0x1be249][_0x43e334],util[_0x471f('0x28')]('%s.%s',_0x275566,_0x1be249+'['+_0x43e334+']'));}}else{if(!_[_0x471f('0x41')](_0x571075[_0x1be249])){this[_0x471f('0x35')][_0x471f('0x9e')](util[_0x471f('0x28')](_0x471f('0x9c'),_0x275566,_0x1be249),_0x571075[_0x1be249]);}}}}};AGIVertices['prototype']['replaceObjectAllVariables']=function(_0x2a91df){try{var _0x29a011=JSON[_0x471f('0x65')](_0x2a91df);this['recursiveNodeIndex'](_0x29a011);return JSON[_0x471f('0x6d')](_0x29a011);}catch(_0x552d0f){return this[_0x471f('0x95')](_0x2a91df);}};AGIVertices[_0x471f('0xf')][_0x471f('0x95')]=function(_0xd4e07a){var _0x36d23c=_0xd4e07a[_0x471f('0x9f')]('{');for(var _0x377659=0x1;_0x377659<_0x36d23c[_0x471f('0x9d')];_0x377659+=0x1){var _0x2289e0=_0x36d23c[_0x377659][_0x471f('0x9f')]('}');if(_0x2289e0[_0x471f('0x9d')]>0x1){_0xd4e07a=_0xd4e07a[_0x471f('0xa0')]('{'+_0x2289e0[0x0]+'}',this[_0x471f('0x35')][_0x471f('0xa1')](_0x2289e0[0x0])[_0x471f('0xa2')]||_0x2289e0[0x0]);}}if(_0x36d23c[_0x471f('0x9d')]===0x1){return _0xd4e07a['toString']();}return this[_0x471f('0x95')](_0xd4e07a);};AGIVertices['prototype'][_0x471f('0xa3')]=function(_0x29dac9,_0x40fe4c){var _0x427c25=this['channel'][_0x471f('0xa1')](_0x29dac9);if(_0x427c25['result']===-0x1){return _0x427c25;}logger['info'](util['format'](_0x471f('0xa4'),_0x40fe4c,_0x427c25[_0x471f('0xa2')]));return this[_0x471f('0x35')][_0x471f('0x9e')](_0x40fe4c,_0x427c25[_0x471f('0xa2')]);};AGIVertices[_0x471f('0xf')][_0x471f('0x7f')]=function(_0x4df692){return _0x4df692&&_0x4df692!=='0'&&_0x4df692!=='-1'&&_0x4df692!=='';};AGIVertices[_0x471f('0xf')][_0x471f('0xa5')]=function(_0x8b424c){this['createSquareDetailsReport'][_0x471f('0x69')](this,_0x8b424c,'-');_0x8b424c['retry']=_0x8b424c[_0x471f('0xa5')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x471f('0xf')][_0x471f('0xa6')]=function(_0x4f38b0){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0xa7'),_0x4f38b0[_0x471f('0x37')]));if(!this[_0x471f('0x7f')](_0x4f38b0[_0x471f('0x58')])){return this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0xa9'));}var _0x4a4e3f='\x22'+_0x4f38b0[_0x471f('0x58')]+'\x22';if(this[_0x471f('0x7f')](_0x4f38b0['options'])){_0x4a4e3f+=','+_0x4f38b0[_0x471f('0x73')];}var _0x1a0a81=this[_0x471f('0x35')]['exec'](_0x471f('0xaa'),_0x4a4e3f);if(_0x1a0a81[_0x471f('0xab')]===-0x1){return _0x1a0a81;}return this[_0x471f('0x35')]['noop'](util[_0x471f('0x28')]('Executed\x20command\x20MRCPSynth\x20%s',_0x4a4e3f));};AGIVertices[_0x471f('0xf')][_0x471f('0xac')]=function(_0x158500){logger[_0x471f('0x2b')](util['format'](_0x471f('0xad'),_0x158500['label']));if(!this[_0x471f('0x7f')](_0x158500[_0x471f('0xae')])){return this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0xaf'));}var _0x147cea=_0x158500[_0x471f('0xae')];if(this['isConfigured'](_0x158500[_0x471f('0x73')])){_0x147cea+=','+_0x158500[_0x471f('0x73')];}var _0xf38489=this[_0x471f('0x35')]['exec'](_0x471f('0xb0'),_0x147cea);if(_0xf38489[_0x471f('0xab')]===-0x1){return _0xf38489;}var _0x5f119f=this[_0x471f('0xa3')](_0x471f('0xb1'),_0x471f('0xb2'));if(_0x5f119f[_0x471f('0xab')]===-0x1){return _0x5f119f;}var _0x3cee7a=this[_0x471f('0xa3')](_0x471f('0xb3'),_0x471f('0xb4'));if(_0x3cee7a['result']===-0x1){return _0x3cee7a;}var _0x4e2c81=this[_0x471f('0xa3')](_0x471f('0xb5'),_0x471f('0xb6'));if(_0x4e2c81['result']===-0x1){return _0x4e2c81;}return this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')]('Executed\x20command\x20MRCPRecog\x20%s',_0x147cea));};AGIVertices[_0x471f('0xf')][_0x471f('0xb7')]=function(_0x9e23c8){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0xb8'),_0x9e23c8[_0x471f('0x37')]));return this['channel'][_0x471f('0xb7')]([_0x9e23c8[_0x471f('0xb9')],_0x9e23c8[_0x471f('0xba')]]);};AGIVertices[_0x471f('0xf')][_0x471f('0xbb')]=function(_0x1c7c36){logger[_0x471f('0x2b')](util[_0x471f('0x28')]('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x1c7c36[_0x471f('0x37')]));if(this['isConfigured'](_0x1c7c36['timeout'])){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0xbc'),_0x1c7c36[_0x471f('0x61')]));var _0x25d097=this[_0x471f('0x35')]['wait'](_0x1c7c36[_0x471f('0x61')]);if(_0x25d097['result']===-0x1){return _0x25d097;}}return this[_0x471f('0x35')][_0x471f('0xbb')]();};AGIVertices[_0x471f('0xf')][_0x471f('0x47')]=function(_0x4c142d){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0xbd'),_0x4c142d['label']));if(!this[_0x471f('0x7f')](_0x4c142d[_0x471f('0x45')])){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x4c142d,_0x471f('0xbe'));}_0x4c142d['scheduledAt']=moment();if(this[_0x471f('0x7f')](_0x4c142d[_0x471f('0xbf')])){_0x4c142d[_0x471f('0x46')]=moment()[_0x471f('0xc0')](_0x4c142d[_0x471f('0xbf')],_0x471f('0xc1'));}if(!this[_0x471f('0x7f')](_0x4c142d[_0x471f('0x4a')])){_0x4c142d[_0x471f('0x4a')]=0x2;}this[_0x471f('0x40')]['sync'](this,_0x4c142d);return this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0xc2'),_0x4c142d[_0x471f('0x44')],_0x4c142d[_0x471f('0x45')],_0x4c142d[_0x471f('0x46')]));};AGIVertices['prototype'][_0x471f('0xc3')]=function(_0x1d0eff){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0xc4'),_0x1d0eff[_0x471f('0x37')]));var _0x539ae0=this[_0x471f('0x35')]['exec'](_0x1d0eff[_0x471f('0xc5')],_0x1d0eff[_0x471f('0x73')]);if(_0x539ae0[_0x471f('0xab')]===-0x1){return _0x539ae0;}return this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')]('Executed\x20command\x20%s\x20%s',_0x1d0eff[_0x471f('0xc5')],_0x1d0eff[_0x471f('0x73')]));};AGIVertices['prototype'][_0x471f('0xc6')]=function(_0x1a352f){logger['info'](util['format'](_0x471f('0xc7'),_0x1a352f[_0x471f('0x37')]));if(!this[_0x471f('0x7f')](_0x1a352f['text'])){return this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0xa9'));}var _0x1e89d7='\x22'+_0x1a352f[_0x471f('0x58')]+'\x22';if(this[_0x471f('0x7f')](_0x1a352f[_0x471f('0x73')])){_0x1e89d7+=','+_0x1a352f[_0x471f('0x73')];}var _0x2a07cc=this[_0x471f('0x35')]['exec'](_0x471f('0xaa'),_0x1e89d7);if(_0x2a07cc[_0x471f('0xab')]===-0x1){return _0x2a07cc;}return this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0xc8'),_0x1e89d7));};AGIVertices['prototype']['sestektts']=function(_0x3d31ff){logger[_0x471f('0x2b')](util['format'](_0x471f('0xc9'),_0x3d31ff[_0x471f('0x37')]));if(!this[_0x471f('0x7f')](_0x3d31ff[_0x471f('0x58')])){return this[_0x471f('0x35')][_0x471f('0xa8')]('no\x20text\x20configured');}var _0x503029='\x22'+_0x3d31ff[_0x471f('0x58')]+'\x22';if(this[_0x471f('0x7f')](_0x3d31ff[_0x471f('0x73')])){_0x503029+=','+_0x3d31ff['options'];}var _0x2809b8=this[_0x471f('0x35')][_0x471f('0xca')](_0x471f('0xaa'),_0x503029);if(_0x2809b8[_0x471f('0xab')]===-0x1){return _0x2809b8;}return this[_0x471f('0x35')][_0x471f('0xa8')](util['format'](_0x471f('0xc8'),_0x503029));};AGIVertices['prototype'][_0x471f('0xcb')]=function(_0x739092){logger[_0x471f('0x2b')](util[_0x471f('0x28')]('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x739092[_0x471f('0x37')]));if(!this[_0x471f('0x7f')](_0x739092[_0x471f('0xae')])){return this[_0x471f('0x35')][_0x471f('0xa8')]('no\x20grammar\x20configured');}var _0x29d128=_0x739092[_0x471f('0xae')];if(this['isConfigured'](_0x739092['options'])){_0x29d128+=','+_0x739092[_0x471f('0x73')];}var _0xa155cd=this[_0x471f('0x35')][_0x471f('0xca')]('MRCPRecog',_0x29d128);if(_0xa155cd[_0x471f('0xab')]===-0x1){return _0xa155cd;}var _0x3a9dfb=this['getAndSetVariable'](_0x471f('0xb1'),'LUMENVOX_ASR_CONFIDENCE');if(_0x3a9dfb[_0x471f('0xab')]===-0x1){return _0x3a9dfb;}var _0x5ec2f5=this[_0x471f('0xa3')](_0x471f('0xb3'),_0x471f('0xcc'));if(_0x5ec2f5[_0x471f('0xab')]===-0x1){return _0x5ec2f5;}var _0x521bd0=this[_0x471f('0xa3')](_0x471f('0xb5'),_0x471f('0xcd'));if(_0x521bd0['result']===-0x1){return _0x521bd0;}return this['channel'][_0x471f('0xa8')](util[_0x471f('0x28')]('Executed\x20command\x20MRCPRecog\x20%s',_0x29d128));};AGIVertices[_0x471f('0xf')][_0x471f('0xce')]=function(_0x40b7fb){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0xcf'),_0x40b7fb[_0x471f('0x37')]));if(!this[_0x471f('0x7f')](_0x40b7fb[_0x471f('0xae')])){return this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0xaf'));}var _0x2997df=_0x40b7fb[_0x471f('0xae')];if(this[_0x471f('0x7f')](_0x40b7fb[_0x471f('0x73')])){_0x2997df+=','+_0x40b7fb[_0x471f('0x73')];}var _0x15e999=this['channel']['exec']('MRCPRecog',_0x2997df);if(_0x15e999[_0x471f('0xab')]===-0x1){return _0x15e999;}var _0x576554=this['getAndSetVariable'](_0x471f('0xb1'),_0x471f('0xd0'));if(_0x576554[_0x471f('0xab')]===-0x1){return _0x576554;}var _0x14e738=this[_0x471f('0xa3')](_0x471f('0xb3'),'SESTEK_ASR_TRANSCRIPT');if(_0x14e738[_0x471f('0xab')]===-0x1){return _0x14e738;}var _0x4d0c3e=this['getAndSetVariable'](_0x471f('0xb5'),_0x471f('0xd1'));if(_0x4d0c3e[_0x471f('0xab')]===-0x1){return _0x4d0c3e;}return this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')]('Executed\x20command\x20MRCPRecog\x20%s',_0x2997df));};AGIVertices[_0x471f('0xf')][_0x471f('0xd2')]=function(_0x58381e){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0xd3'),_0x58381e[_0x471f('0x37')]));if(!this['isConfigured'](_0x58381e['odbc_id'])){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x58381e,_0x471f('0xd4'));}var _0xeabd3e=this[_0x471f('0x18')]['sync'](this,_0x58381e['odbc_id']);if(!_0xeabd3e){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x58381e,_0x471f('0xd5'));}if(!this[_0x471f('0x7f')](_0x58381e[_0x471f('0x2d')])){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x58381e,_0x471f('0xd6'));}var _0x1a2e92=_0x58381e['query'][_0x471f('0x54')](/(\r\n|\n|\r)/gm,'\x20');this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0xd7'),_0x1a2e92));var _0x25dc6f=this[_0x471f('0x29')]['sync'](this,_0xeabd3e,_0x1a2e92);this['createSquareDetailsReport']['sync'](this,_0x58381e,_0x1a2e92);if(!this['isConfigured'](_0x58381e[_0x471f('0xd8')])){return this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0xd9'));}var _0x229084=this[_0x471f('0xa1')][_0x471f('0x69')](this,_0x58381e[_0x471f('0xd8')]);if(!_0x229084){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x58381e,'no\x20variable\x20found');}var _0x347747=this;_0x25dc6f[_0x471f('0xda')](function(_0x4acee9,_0x1c2a04){Object[_0x471f('0xdb')](_0x4acee9)[_0x471f('0xda')](function(_0x2aec38){_0x347747[_0x471f('0x35')]['setVariable'](util[_0x471f('0x28')]('%s[%s][%s]',_0x229084,_0x1c2a04,_0x2aec38),_0x4acee9[_0x2aec38]);});});this['channel'][_0x471f('0x9e')](util[_0x471f('0x28')](_0x471f('0xdc'),_0x229084),_0x25dc6f['length']);return this['channel']['noop'](util[_0x471f('0x28')]('variable\x20%s\x20set',_0x229084));};AGIVertices[_0x471f('0xf')][_0x471f('0xdd')]=function(_0x41076c){logger[_0x471f('0xde')](util[_0x471f('0x28')](_0x471f('0xdf'),_0x41076c[_0x471f('0x37')]));if(!this[_0x471f('0x7f')](_0x41076c[_0x471f('0xe0')])){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x41076c,'no\x20user\x20selected');}var _0x524ef4=this[_0x471f('0x19')]['sync'](this,_0x41076c[_0x471f('0xe0')]);if(!_0x524ef4){return this['channel'][_0x471f('0x2f')](_0x41076c,_0x471f('0xe1'));}var _0x330b2b=this[_0x471f('0x35')]['exec']('DIAL',[util[_0x471f('0x28')](_0x471f('0xe2'),_0x524ef4),_0x41076c['timeout'],_0x41076c[_0x471f('0xe3')],_0x41076c[_0x471f('0x5f')]]);if(_0x330b2b[_0x471f('0xab')]===-0x1){return _0x330b2b;}return this['channel']['noop'](util[_0x471f('0x28')](_0x471f('0xe4'),_0x471f('0xe5')));};AGIVertices[_0x471f('0xf')][_0x471f('0xe6')]=function(_0x4d376f){logger[_0x471f('0x2b')](util[_0x471f('0x28')]('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x4d376f['label']));if(!this[_0x471f('0x7f')](_0x4d376f[_0x471f('0x74')])){return this[_0x471f('0x35')]['noop'](_0x471f('0xe7'));}if(!this[_0x471f('0x7f')](_0x4d376f[_0x471f('0x58')])){return this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0xa9'));}this[_0x471f('0x35')][_0x471f('0xe8')]=!![];this[_0x471f('0x34')](_0x4d376f);this[_0x471f('0x3f')](_0x4d376f['text'],'in','','');this[_0x471f('0x35')][_0x471f('0xa8')](util['format'](_0x471f('0xe9'),_0x4d376f['text']));var _0x347ceb=this['googleDialogflow'][_0x471f('0x69')](this,_0x4d376f);if(_0x347ceb){for(var _0x53f431 in _0x347ceb){if(_0x347ceb['hasOwnProperty'](_0x53f431)){this[_0x471f('0x35')][_0x471f('0x9e')](util[_0x471f('0x28')]('DIALOGFLOW_%s',_0x53f431['toUpperCase']()),_0x347ceb[_0x53f431]);}}this[_0x471f('0x3f')](_0x347ceb['speech'],'out',_0x471f('0xe6'),'');return this[_0x471f('0x35')]['noop'](util[_0x471f('0x28')](_0x471f('0xea'),_0x347ceb[_0x471f('0xeb')]));}return this['channel'][_0x471f('0x2f')](_0x4d376f,_0x471f('0xec'));};AGIVertices['prototype']['dialogflowV2']=function(_0x2f42a1){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0xed'),_0x2f42a1['label']));if(!this['isConfigured'](_0x2f42a1['dialogflowV2_project_id'])){return this['channel']['noop']('no\x20project_id\x20configured');}if(!this[_0x471f('0x7f')](_0x2f42a1[_0x471f('0x77')])){return this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0xee'));}if(!this[_0x471f('0x7f')](_0x2f42a1[_0x471f('0x78')])){return this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0xef'));}if(!this['isConfigured'](_0x2f42a1['dialogflowV2_language'])){return this['channel'][_0x471f('0xa8')](_0x471f('0xf0'));}if(!this[_0x471f('0x7f')](_0x2f42a1[_0x471f('0x58')])){return this[_0x471f('0x35')][_0x471f('0xa8')]('no\x20text\x20configured');}this['channel'][_0x471f('0xe8')]=!![];this[_0x471f('0x34')](_0x2f42a1);this[_0x471f('0x3f')](_0x2f42a1[_0x471f('0x58')],'in','','');this[_0x471f('0x35')][_0x471f('0xa8')](util['format'](_0x471f('0xf1'),_0x2f42a1[_0x471f('0x58')]));var _0x445d08=this[_0x471f('0x76')][_0x471f('0x69')](this,_0x2f42a1);if(_0x445d08){for(var _0x571339 in _0x445d08){if(_0x445d08[_0x471f('0x97')](_0x571339)){if(_0x571339!==_0x471f('0xf2')){this['channel'][_0x471f('0x9e')](util[_0x471f('0x28')]('DIALOGFLOW_%s',_0x571339['toUpperCase']()),_0x445d08[_0x571339]);}}}this['createSquareMessage'](_0x445d08[_0x471f('0xeb')],_0x471f('0xf3'),_0x471f('0xf4'),_0x445d08[_0x471f('0xf2')]);return this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0xf5'),_0x445d08[_0x471f('0xeb')]));}return this[_0x471f('0x35')][_0x471f('0x2f')](_0x2f42a1,_0x471f('0xf6'));};AGIVertices[_0x471f('0xf')]['sesteknda']=function(_0x42a1a3){logger[_0x471f('0x2b')](util['format'](_0x471f('0xf7'),_0x42a1a3[_0x471f('0x37')]));if(!this[_0x471f('0x7f')](_0x42a1a3['ndauth_url'])){return this['channel'][_0x471f('0xa8')](_0x471f('0xf8'));}if(!this['isConfigured'](_0x42a1a3['username'])){return this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0xf9'));}if(!this[_0x471f('0x7f')](_0x42a1a3[_0x471f('0xfa')])){return this[_0x471f('0x35')][_0x471f('0xa8')]('no\x20password\x20configured');}if(!this[_0x471f('0x7f')](_0x42a1a3['ndassistant_url'])){return this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0xa9'));}this[_0x471f('0x35')][_0x471f('0xe8')]=!![];this[_0x471f('0x34')](_0x42a1a3);this['createSquareMessage'](_0x42a1a3['text'],'in','','');this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0xfb'),_0x42a1a3[_0x471f('0x58')]));var _0x3e62fc=this['sestekNDA']['sync'](this,_0x42a1a3);if(_0x3e62fc){for(var _0x5f2481 in _0x3e62fc){if(_0x3e62fc[_0x471f('0x97')](_0x5f2481)){this[_0x471f('0x35')][_0x471f('0x9e')](util[_0x471f('0x28')](_0x471f('0xfc'),_0x5f2481['toUpperCase']()),_0x3e62fc[_0x5f2481]);}}this['createSquareMessage'](_0x3e62fc[_0x471f('0xeb')],'out',_0x471f('0xfd'),'');if(_0x3e62fc['audiofile']){this['channel'][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0xfe'),_0x3e62fc[_0x471f('0xff')]));var _0x59b513=this[_0x471f('0x35')]['streamFile'](_0x3e62fc[_0x471f('0xff')]);try{fs['unlink'](_0x3e62fc[_0x471f('0xff')]+_0x471f('0x100'));}catch(_0x204631){logger[_0x471f('0x2f')](_0x204631);}return _0x59b513;}else{return this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0x101'),_0x3e62fc[_0x471f('0xeb')]));}}return this[_0x471f('0x35')][_0x471f('0x2f')](_0x42a1a3,_0x471f('0x102'));};AGIVertices[_0x471f('0xf')]['end']=function(_0x463127){logger['info'](util[_0x471f('0x28')](_0x471f('0x103'),_0x463127[_0x471f('0x37')]));return this['channel'][_0x471f('0xa8')](_0x471f('0x104'));};AGIVertices[_0x471f('0xf')]['ext_dial']=function(_0x8511ee){logger['info'](util[_0x471f('0x28')](_0x471f('0x105'),_0x8511ee[_0x471f('0x37')]));var _0x262ea6='';if(_0x8511ee['trunk_id']){if(!this[_0x471f('0x7f')](_0x8511ee[_0x471f('0x106')])){return this['channel'][_0x471f('0x2f')](_0x8511ee,'no\x20trunk\x20selected');}else{var _0x344627=parseInt(_0x8511ee[_0x471f('0x106')],0xa);if(isNaN(_0x344627)){_0x262ea6=_0x8511ee[_0x471f('0x106')];}else{_0x262ea6=this[_0x471f('0x1b')][_0x471f('0x69')](this,_0x8511ee[_0x471f('0x106')]);if(!_0x262ea6){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x8511ee,'no\x20trunk\x20found');}}}}else if(_0x8511ee[_0x471f('0x107')]){_0x262ea6=_0x8511ee[_0x471f('0x107')];}else{return this[_0x471f('0x35')][_0x471f('0x2f')](_0x8511ee,_0x471f('0x108'));}var _0x5650b9=this['channel']['exec']('DIAL',[util[_0x471f('0x28')]('SIP/%s/%s',_0x262ea6,_0x8511ee[_0x471f('0x44')]),_0x8511ee['timeout'],_0x8511ee['opts'],_0x8511ee[_0x471f('0x5f')]]);if(_0x5650b9[_0x471f('0xab')]===-0x1){return _0x5650b9;}return this['channel'][_0x471f('0xa8')](util['format'](_0x471f('0xe4'),'DIAL'));};AGIVertices[_0x471f('0xf')][_0x471f('0x109')]=function(_0x253010){logger[_0x471f('0x2b')](util['format'](_0x471f('0x10a'),_0x253010[_0x471f('0x37')]));return this[_0x471f('0x35')]['noop'](_0x471f('0x109'));};AGIVertices['prototype'][_0x471f('0xc')]=function(_0x1af807){logger['info'](util['format'](_0x471f('0x10b'),_0x1af807[_0x471f('0x37')]));if(_0x1af807[_0x471f('0x10c')]===0x0){return this[_0x471f('0xa5')](_0x1af807);}_0x1af807[_0x471f('0x10c')]-=0x1;if(!this['isConfigured'](_0x1af807[_0x471f('0x10d')])){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x1af807,_0x471f('0x10e'));}var _0x566505=this[_0x471f('0x1c')]['sync'](this,_0x1af807[_0x471f('0x10d')]);if(!_0x566505){return this['channel'][_0x471f('0x2f')](_0x1af807,'no\x20file\x20audio\x20found');}if(!this[_0x471f('0x7f')](_0x1af807[_0x471f('0xd8')])){return this[_0x471f('0x35')]['error']('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x545750=this['channel'][_0x471f('0x10f')](_0x566505,_0x1af807[_0x471f('0x110')],_0x1af807[_0x471f('0x111')]);var _0x3ed2b9=_0x545750[_0x471f('0xab')]?_0x545750[_0x471f('0xab')][_0x471f('0x49')]():'';logger['info'](_0x471f('0x112'),JSON[_0x471f('0x6d')](_0x545750));if(_0x545750[_0x471f('0xab')]===-0x1){this['createSquareDetailsReport'][_0x471f('0x69')](this,_0x1af807,_0x3ed2b9);return _0x545750;}else if(_0x545750[_0x471f('0xa2')]===_0x471f('0x61')){_0x545750[_0x471f('0xab')]=_0x3ed2b9[_0x471f('0x9d')]>=parseInt(_0x1af807[_0x471f('0x113')])?'x':'i';}else{_0x545750['result']=_0x3ed2b9['length']>=parseInt(_0x1af807[_0x471f('0x113')])&&_0x3ed2b9[_0x471f('0x9d')]<=parseInt(_0x1af807['maxdigit'])?'x':'i';}var _0x95744d=this[_0x471f('0xa1')][_0x471f('0x69')](this,_0x1af807[_0x471f('0xd8')]);if(!_0x95744d){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x1af807,_0x471f('0x114'));}this[_0x471f('0x35')][_0x471f('0x9e')](_0x95744d,_0x3ed2b9);if(this[_0x471f('0x7f')](_0x1af807[_0x471f('0x115')])){var _0x1e4981=parseInt(_0x1af807[_0x471f('0x115')],0xa);var _0x2fb8da=rs[_0x471f('0x116')]({'charset':'*','length':_0x1e4981});var _0x453aea=_0x3ed2b9[_0x471f('0x9d')];if(_0x453aea>0x0){if(_0x453aea>_0x1e4981){this[_0x471f('0x34')][_0x471f('0x69')](this,_0x1af807,_0x1af807[_0x471f('0x117')]===_0x471f('0x118')?_0x2fb8da+_0x3ed2b9[_0x471f('0x119')](_0x1e4981):_0x3ed2b9[_0x471f('0x119')](0x0,_0x453aea-_0x1e4981)+_0x2fb8da);}else{this[_0x471f('0x34')][_0x471f('0x69')](this,_0x1af807,rs[_0x471f('0x116')]({'charset':'*','length':_0x453aea}));}}else{this[_0x471f('0x34')][_0x471f('0x69')](this,_0x1af807,'');}}else{this[_0x471f('0x34')][_0x471f('0x69')](this,_0x1af807,_0x3ed2b9);}return _0x545750;};AGIVertices[_0x471f('0xf')][_0x471f('0xd')]=function(_0x56d9c2){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x11a'),_0x56d9c2[_0x471f('0x37')]));return this[_0x471f('0xc')](_0x56d9c2);};AGIVertices[_0x471f('0xf')][_0x471f('0x11b')]=function(_0x1a8e69){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x11c'),_0x1a8e69['label']));this[_0x471f('0x34')]['sync'](this,_0x1a8e69,_0x1a8e69[_0x471f('0x11d')]);return this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')]('GOAL\x20%s',_0x1a8e69[_0x471f('0x11d')]));};AGIVertices[_0x471f('0xf')]['awspolly']=function(_0x38775f){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x11e'),_0x38775f[_0x471f('0x37')]));if(!this['isConfigured'](_0x38775f[_0x471f('0x82')])||!this[_0x471f('0x7f')](_0x38775f[_0x471f('0x83')])){return this[_0x471f('0x35')]['noop'](_0x471f('0x11f'));}if(!this[_0x471f('0x7f')](_0x38775f['text'])){return this[_0x471f('0x35')]['noop'](_0x471f('0xa9'));}this['channel']['noop'](util[_0x471f('0x28')](_0x471f('0x120'),_0x38775f[_0x471f('0x58')]));var _0x3f1300=this[_0x471f('0x81')][_0x471f('0x69')](this,_0x38775f);if(_0x3f1300){this[_0x471f('0x35')]['noop'](util[_0x471f('0x28')](_0x471f('0x121'),_0x3f1300));var _0x83d11e=this[_0x471f('0x35')][_0x471f('0x122')](_0x3f1300);try{fs[_0x471f('0x123')](_0x3f1300+_0x471f('0x100'));}catch(_0x3a33d3){logger[_0x471f('0x2f')](_0x3a33d3);}return _0x83d11e;}return this[_0x471f('0x35')]['error'](_0x38775f,_0x471f('0x124'));};AGIVertices['prototype']['awslex']=function(_0x121877){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x125'),_0x121877['label']));if(!this[_0x471f('0x7f')](_0x121877['aws_access_key_id'])||!this[_0x471f('0x7f')](_0x121877[_0x471f('0x83')])){return this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0x11f'));}if(!this[_0x471f('0x7f')](_0x121877[_0x471f('0x89')])){return this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0x126'));}if(!this[_0x471f('0x7f')](_0x121877[_0x471f('0x58')])){return this[_0x471f('0x35')]['noop']('no\x20text\x20configured');}this[_0x471f('0x35')][_0x471f('0xe8')]=!![];this[_0x471f('0x34')](_0x121877);this[_0x471f('0x3f')](_0x121877[_0x471f('0x58')],'in','','');this['channel'][_0x471f('0xa8')](util[_0x471f('0x28')]('Trying\x20Amazon\x20Lex:\x20%s',_0x121877[_0x471f('0x58')]));var _0x2e3593=this[_0x471f('0x87')]['sync'](this,_0x121877);if(_0x2e3593){for(var _0x475614 in _0x2e3593){if(_0x2e3593[_0x471f('0x97')](_0x475614)&&_['isString'](_0x2e3593[_0x475614])){this['channel']['setVariable'](util[_0x471f('0x28')](_0x471f('0x127'),_0x475614[_0x471f('0x128')]()),_0x2e3593[_0x475614]);}}if(_[_0x471f('0x41')](_0x2e3593[_0x471f('0x71')])){return this[_0x471f('0x35')]['noop'](_0x471f('0x129'));}else{this[_0x471f('0x3f')](_0x2e3593[_0x471f('0x71')],_0x471f('0xf3'),_0x471f('0x12a'),'');return this[_0x471f('0x35')][_0x471f('0xa8')](util['format'](_0x471f('0x12b'),_0x2e3593[_0x471f('0x71')]));}}return this['channel'][_0x471f('0x2f')](_0x121877,_0x471f('0x12c'));};AGIVertices[_0x471f('0xf')][_0x471f('0x12d')]=function(_0x332b4f){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x12e'),_0x332b4f[_0x471f('0x37')],_0x332b4f[_0x471f('0x61')]));if(!this[_0x471f('0x7f')](_0x332b4f['key'])){return this['channel']['noop'](_0x471f('0xe7'));}var _0x459ce6=_0x471f('0x12f');var _0x2fdf42=util[_0x471f('0x28')](_0x471f('0x130'),FILES_PATH,rs[_0x471f('0x116')](0x4));var _0x5ac87d=util[_0x471f('0x28')](_0x471f('0x9c'),_0x2fdf42,_0x459ce6);var _0x10f9bd=!![];if(_0x332b4f[_0x471f('0x131')]===_0x471f('0x132')){_0x10f9bd=![];}var _0x1bff16=this['channel'][_0x471f('0x133')](_0x2fdf42,_0x459ce6,_0x332b4f[_0x471f('0x134')],_0x332b4f[_0x471f('0x61')],undefined,_0x10f9bd);if(_0x1bff16[_0x471f('0xab')]!==-0x1){this['channel']['noop'](util[_0x471f('0x28')]('google\x20%s\x20file\x20created',_0x5ac87d));var _0x19b72d=this['googleASR'][_0x471f('0x69')](this,_0x332b4f,_0x5ac87d);if(_0x19b72d){for(var _0x91ee12 in _0x19b72d){if(_0x19b72d[_0x471f('0x97')](_0x91ee12)){this[_0x471f('0x35')][_0x471f('0x9e')](util[_0x471f('0x28')](_0x471f('0x135'),_0x91ee12[_0x471f('0x128')]()),_0x19b72d[_0x91ee12]);}}return this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0x136'),JSON[_0x471f('0x6d')](_0x19b72d)));}}return _0x1bff16;};AGIVertices[_0x471f('0xf')]['tildeasr']=function(_0x535013){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x137'),_0x535013[_0x471f('0x37')]));if(!this['isConfigured'](_0x535013[_0x471f('0x8d')])){return this[_0x471f('0x35')]['noop']('no\x20appid\x20configured');}if(!this[_0x471f('0x7f')](_0x535013[_0x471f('0x8e')])){return this[_0x471f('0x35')]['noop'](_0x471f('0x138'));}var _0x5d1af6=_0x471f('0x12f');var _0x3f10fe=util[_0x471f('0x28')](_0x471f('0x130'),FILES_PATH,rs[_0x471f('0x116')](0x4));var _0x1e7739=util[_0x471f('0x28')](_0x471f('0x9c'),_0x3f10fe,_0x5d1af6);var _0x3c0374=!![];if(_0x535013['beep']===_0x471f('0x132')){_0x3c0374=![];}var _0x48f1dc=this[_0x471f('0x35')][_0x471f('0x133')](_0x3f10fe,_0x5d1af6,_0x535013[_0x471f('0x134')],_0x535013['timeout'],undefined,_0x3c0374);if(_0x48f1dc[_0x471f('0xab')]!==-0x1){this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')]('tilde\x20%s\x20file\x20created',_0x1e7739));var _0x3523b9=this['tildeASR'][_0x471f('0x69')](this,_0x535013,_0x1e7739);if(_0x3523b9){for(var _0x199e8c in _0x3523b9){if(_0x3523b9[_0x471f('0x97')](_0x199e8c)){this[_0x471f('0x35')][_0x471f('0x9e')](util[_0x471f('0x28')](_0x471f('0x139'),_0x199e8c['toUpperCase']()),_0x3523b9[_0x199e8c]);}}return this[_0x471f('0x35')][_0x471f('0xa8')](util['format'](_0x471f('0x13a'),JSON[_0x471f('0x6d')](_0x3523b9)));}}return _0x48f1dc;};AGIVertices[_0x471f('0xf')]['gotoc']=function(_0x2fad99){logger[_0x471f('0x2b')](util['format']('Enter\x20in\x20GOTO\x20(%s)\x20block',_0x2fad99[_0x471f('0x37')]));return this['channel'][_0x471f('0x13b')](_0x2fad99['context'],_0x2fad99[_0x471f('0x3d')],_0x2fad99[_0x471f('0x13c')]);};AGIVertices[_0x471f('0xf')][_0x471f('0x13d')]=function(_0x4bc073){logger['info'](util['format'](_0x471f('0x13e'),_0x4bc073[_0x471f('0x37')]));if(!this[_0x471f('0x7f')](_0x4bc073[_0x471f('0x13f')])){return this[_0x471f('0x35')]['error'](_0x4bc073,_0x471f('0x140'));}try{var _0x5166c4=eval(_0x4bc073[_0x471f('0x13f')])?_0x471f('0x141'):_0x471f('0x142');this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')]('EVAL\x20CONDITION\x20%s\x20%s',_0x4bc073[_0x471f('0x13f')],_0x5166c4));return{'code':0xc8,'result':_0x5166c4};}catch(_0x23d737){return{'code':0xc8,'result':_0x471f('0x142')};}};AGIVertices[_0x471f('0xf')][_0x471f('0x143')]=function(_0x102dbd){logger[_0x471f('0x2b')](util['format'](_0x471f('0x144'),_0x102dbd[_0x471f('0x37')]));if(!this['isConfigured'](_0x102dbd[_0x471f('0x145')])){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x102dbd,_0x471f('0x146'));}var _0x20723d=this[_0x471f('0x23')][_0x471f('0x69')](this,_0x102dbd[_0x471f('0x145')]);if(!_0x20723d){return this[_0x471f('0x35')]['error'](_0x102dbd,'no\x20intervals\x20found');}for(var _0x1fc52e=0x0;_0x1fc52e<_0x20723d[_0x471f('0x9d')];_0x1fc52e+=0x1){var _0x38ca7e=this['channel']['getVariable'](util['format'](_0x471f('0x147'),_0x20723d[_0x1fc52e]));if(_0x38ca7e[_0x471f('0xab')]===-0x1){return _0x38ca7e;}logger[_0x471f('0x2b')](util[_0x471f('0x28')]('IFTIME\x20%s\x20%s',_0x20723d[_0x1fc52e],_0x38ca7e[_0x471f('0xa2')]));if(_0x38ca7e[_0x471f('0xa2')]===_0x471f('0x141')){logger['info'](util['format']('IFTIME\x20%s\x20%s',_0x20723d[_0x1fc52e],_0x471f('0x141')));this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')]('IFTIME\x20%s\x20%s',_0x20723d[_0x1fc52e],_0x471f('0x141')));return{'code':0xc8,'result':_0x471f('0x141')};}else{logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x148'),_0x20723d[_0x1fc52e],_0x471f('0x142')));this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0x148'),_0x20723d[_0x1fc52e],_0x471f('0x142')));}}return{'code':0xc8,'result':_0x471f('0x142')};};AGIVertices[_0x471f('0xf')][_0x471f('0x149')]=function(_0x19b7d6){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x14a'),_0x19b7d6[_0x471f('0x37')]));return this[_0x471f('0x35')]['hangup']();};AGIVertices[_0x471f('0xf')]['ispeechasr']=function(_0x63c6a3){logger[_0x471f('0x2b')](util[_0x471f('0x28')]('Enter\x20in\x20ISPEECHASR\x20(%s)\x20block',_0x63c6a3['label']));if(!this[_0x471f('0x7f')](_0x63c6a3[_0x471f('0x74')])){return this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0xe7'));}var _0x4ef275=_0x471f('0x12f');var _0x568c27=util[_0x471f('0x28')](_0x471f('0x130'),FILES_PATH,rs[_0x471f('0x116')](0x4));var _0x443cdc=util[_0x471f('0x28')](_0x471f('0x9c'),_0x568c27,_0x4ef275);var _0x4ba529=!![];if(_0x63c6a3['beep']==='NOBEEP'){_0x4ba529=![];}var _0x4837d2=this[_0x471f('0x35')][_0x471f('0x133')](_0x568c27,_0x4ef275,_0x63c6a3['intKey'],_0x63c6a3[_0x471f('0x61')],undefined,_0x4ba529);if(_0x4837d2['result']!==-0x1){this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0x14b'),_0x443cdc));var _0xf0a10=this[_0x471f('0x7d')][_0x471f('0x69')](this,_0x63c6a3,_0x443cdc);if(_0xf0a10){for(var _0x3d8bf6 in _0xf0a10){if(_0xf0a10['hasOwnProperty'](_0x3d8bf6)){this[_0x471f('0x35')]['setVariable'](util[_0x471f('0x28')]('ISPEECH_ASR_%s',_0x3d8bf6['toUpperCase']()),_0xf0a10[_0x3d8bf6]);}}return this[_0x471f('0x35')]['noop'](util[_0x471f('0x28')]('IspeechASR\x20Result\x20%s',JSON[_0x471f('0x6d')](_0xf0a10)));}}return _0x4837d2;};AGIVertices[_0x471f('0xf')]['ispeechtts']=function(_0x11e7c5){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x14c'),_0x11e7c5[_0x471f('0x37')]));if(!this[_0x471f('0x7f')](_0x11e7c5['key'])){return this[_0x471f('0x35')][_0x471f('0xa8')]('no\x20key\x20configured');}if(!this[_0x471f('0x7f')](_0x11e7c5[_0x471f('0x58')])){return this[_0x471f('0x35')]['noop']('no\x20text\x20configured');}this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0x14d'),_0x11e7c5[_0x471f('0x58')]));var _0x3f7e93=this[_0x471f('0x7a')][_0x471f('0x69')](this,_0x11e7c5);if(_0x3f7e93){this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0x14b'),_0x3f7e93));var _0x58c026=this[_0x471f('0x35')][_0x471f('0x122')](_0x3f7e93,_0x11e7c5[_0x471f('0x134')]);try{fs[_0x471f('0x123')](_0x3f7e93+'.wav');}catch(_0x495260){logger[_0x471f('0x2f')](_0x495260);}return _0x58c026;}return this['channel'][_0x471f('0x2f')](_0x11e7c5,_0x471f('0x14e'));};AGIVertices[_0x471f('0xf')][_0x471f('0x14f')]=function(_0x3f20c2){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x150'),_0x3f20c2[_0x471f('0x37')]));if(!this[_0x471f('0x7f')](_0x3f20c2[_0x471f('0x151')])){return this['channel']['error'](_0x3f20c2,_0x471f('0x152'));}logger['info'](util[_0x471f('0x28')](_0x471f('0x153'),this[_0x471f('0x35')]['callerid'],_0x3f20c2[_0x471f('0x151')]));var _0x25e438=this[_0x471f('0x50')]['sync'](this,_0x3f20c2[_0x471f('0x151')]);if(_0x25e438){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x154'),this[_0x471f('0x35')]['callerid'],_0x3f20c2[_0x471f('0x151')]));this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0x154'),this[_0x471f('0x35')]['callerid'],_0x3f20c2[_0x471f('0x151')]));return{'code':0xc8,'result':'success'};}else{logger[_0x471f('0x2b')](util['format']('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x471f('0x35')][_0x471f('0x39')],_0x3f20c2[_0x471f('0x151')]));this[_0x471f('0x35')][_0x471f('0xa8')](util['format'](_0x471f('0x155'),this[_0x471f('0x35')][_0x471f('0x39')],_0x3f20c2[_0x471f('0x151')]));return{'code':0xc8,'result':_0x471f('0x156')};}};AGIVertices[_0x471f('0xf')][_0x471f('0x157')]=function(_0x51a49c){logger[_0x471f('0x2b')](util['format'](_0x471f('0x158'),_0x51a49c['label']));if(!this[_0x471f('0x7f')](_0x51a49c[_0x471f('0x151')])){return this['channel']['error'](_0x51a49c,_0x471f('0x152'));}logger[_0x471f('0x2b')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x471f('0x35')][_0x471f('0x39')],_0x51a49c['findBy']));var _0x5c756b=this[_0x471f('0x4e')][_0x471f('0x69')](this,_0x51a49c[_0x471f('0x151')]);if(_0x5c756b){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x154'),this['channel']['callerid'],_0x51a49c[_0x471f('0x151')]));this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x471f('0x35')][_0x471f('0x39')],_0x51a49c['findBy']));return{'code':0xc8,'result':_0x471f('0x159')};}else{logger[_0x471f('0x2b')](util[_0x471f('0x28')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0x471f('0x39')],_0x51a49c[_0x471f('0x151')]));this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0x155'),this['channel'][_0x471f('0x39')],_0x51a49c['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x471f('0xf')][_0x471f('0x15a')]=function(_0x44afcd){logger[_0x471f('0x2b')](util['format']('Enter\x20in\x20MATH\x20(%s)\x20block',_0x44afcd['label']));if(!this[_0x471f('0x7f')](_0x44afcd[_0x471f('0x15b')])){return this[_0x471f('0x35')]['error'](_0x44afcd,_0x471f('0x15c'));}this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0x15d'),_0x44afcd[_0x471f('0x15b')]));var _0x32f3e5=eval(_0x44afcd[_0x471f('0x15b')]);if(!this[_0x471f('0x7f')](_0x44afcd[_0x471f('0xd8')])){return this[_0x471f('0x35')][_0x471f('0xa8')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x486077=this[_0x471f('0xa1')]['sync'](this,_0x44afcd[_0x471f('0xd8')]);if(!_0x486077){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x44afcd,_0x471f('0x114'));}if(_[_0x471f('0x99')](_0x32f3e5)){var _0x349be6=this;_0x32f3e5['forEach'](function(_0x131612,_0x5b5d00){_0x349be6[_0x471f('0x35')][_0x471f('0x9e')](util[_0x471f('0x28')](_0x471f('0x15e'),_0x486077,_0x5b5d00),_0x131612);});return this[_0x471f('0x35')][_0x471f('0xa8')](util['format'](_0x471f('0x15f'),_0x486077));}else{return this[_0x471f('0x35')]['setVariable'](_0x486077,_0x32f3e5);}};AGIVertices[_0x471f('0xf')][_0x471f('0xb')]=function(_0x1755c8){logger[_0x471f('0x2b')](util[_0x471f('0x28')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x1755c8[_0x471f('0x37')]));if(_0x1755c8[_0x471f('0x10c')]===0x0){return this[_0x471f('0xa5')](_0x1755c8);}_0x1755c8[_0x471f('0x10c')]-=0x1;if(!this[_0x471f('0x7f')](_0x1755c8[_0x471f('0x10d')])){return this['channel'][_0x471f('0x2f')](_0x1755c8,_0x471f('0x10e'));}var _0x5667c7=this[_0x471f('0x1c')][_0x471f('0x69')](this,_0x1755c8['file_id']);if(!_0x5667c7){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x1755c8,'no\x20file\x20audio\x20found');}var _0x52b58a=this[_0x471f('0x35')][_0x471f('0x10f')](_0x5667c7,_0x1755c8[_0x471f('0x110')],_0x1755c8['digit']);var _0x1da943=_0x52b58a[_0x471f('0xab')];if(_0x52b58a[_0x471f('0xab')]===-0x1){this[_0x471f('0x34')]['sync'](this,_0x1755c8,'-1');return _0x52b58a;}else if(_0x52b58a[_0x471f('0xa2')]===_0x471f('0x61')){_0x52b58a[_0x471f('0xab')]=_0x52b58a[_0x471f('0xab')]['length']>0x0?_0x52b58a[_0x471f('0xab')]:'t';}else if(_['isEmpty'](_0x52b58a['result'])){_0x52b58a[_0x471f('0xab')]='#';_0x1da943='#';}if(!this['isConfigured'](_0x1755c8['variable_id'])){this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0xd9'));}else{var _0x5947db=this[_0x471f('0xa1')][_0x471f('0x69')](this,_0x1755c8[_0x471f('0xd8')]);if(!_0x5947db){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x1755c8,_0x471f('0x114'));}this[_0x471f('0x35')][_0x471f('0x9e')](_0x5947db,_0x1da943);}this['createSquareDetailsReport'][_0x471f('0x69')](this,_0x1755c8,_0x1da943);return _0x52b58a;};AGIVertices[_0x471f('0xf')][_0x471f('0xa8')]=function(_0x41d478){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x160'),_0x41d478[_0x471f('0x37')]));return this[_0x471f('0x35')][_0x471f('0xa8')](_0x41d478[_0x471f('0x161')]||_0x41d478[_0x471f('0x37')]);};AGIVertices['prototype'][_0x471f('0x162')]=function(_0x388e1d){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x163'),_0x388e1d[_0x471f('0x37')]));if(!this[_0x471f('0x7f')](_0x388e1d['findBy'])){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x388e1d,'no\x20find\x20by\x20configured');}logger[_0x471f('0x2b')](util['format'](_0x471f('0x153'),this['channel'][_0x471f('0x39')],_0x388e1d['findBy']));var _0x359fe7=this[_0x471f('0x164')][_0x471f('0x69')](this,_0x388e1d[_0x471f('0x165')]);var _0x80c88=this[_0x471f('0x4c')][_0x471f('0x69')](this,_0x388e1d[_0x471f('0x151')],_0x359fe7);if(_0x80c88){logger['info'](util[_0x471f('0x28')](_0x471f('0x154'),this[_0x471f('0x35')][_0x471f('0x39')],_0x388e1d[_0x471f('0x151')]));this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x471f('0x35')][_0x471f('0x39')],_0x388e1d[_0x471f('0x151')]));return{'code':0xc8,'result':'success'};}else{logger[_0x471f('0x2b')](util['format'](_0x471f('0x155'),this[_0x471f('0x35')]['callerid'],_0x388e1d[_0x471f('0x151')]));this[_0x471f('0x35')][_0x471f('0xa8')](util['format'](_0x471f('0x154'),this[_0x471f('0x35')]['callerid'],_0x388e1d[_0x471f('0x151')]));return{'code':0xc8,'result':_0x471f('0x156')};}};AGIVertices[_0x471f('0xf')][_0x471f('0x166')]=function(_0x5cc18c){logger[_0x471f('0x2b')](util['format'](_0x471f('0x167'),_0x5cc18c[_0x471f('0x37')]));if(!this[_0x471f('0x7f')](_0x5cc18c['file_id'])){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x5cc18c,_0x471f('0x10e'));}var _0x3b992b=this[_0x471f('0x1c')][_0x471f('0x69')](this,_0x5cc18c[_0x471f('0x10d')]);if(!_0x3b992b){return this['channel']['error'](_0x5cc18c,'no\x20file\x20audio\x20found');}var _0x29f1d3=this[_0x471f('0x35')][_0x471f('0xca')](_0x471f('0x168'),[_0x3b992b,_0x5cc18c[_0x471f('0xe3')]]);if(_0x29f1d3['result']===-0x1){return _0x29f1d3;}return this[_0x471f('0x35')]['noop'](util[_0x471f('0x28')](_0x471f('0x169'),_0x471f('0x168'),_0x3b992b));};AGIVertices[_0x471f('0xf')][_0x471f('0x16a')]=function(_0x4a82de){logger[_0x471f('0x2b')](util['format'](_0x471f('0x16b'),_0x4a82de[_0x471f('0x37')]));if(!this[_0x471f('0x7f')](_0x4a82de[_0x471f('0x16c')])){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x4a82de,_0x471f('0x16d'));}var _0x10aef6='';var _0x11f1d3=parseInt(_0x4a82de[_0x471f('0x16c')],0xa);if(isNaN(_0x11f1d3)){_0x10aef6=_0x4a82de[_0x471f('0x16c')];}else{_0x10aef6=this[_0x471f('0x14')][_0x471f('0x69')](this,_0x4a82de[_0x471f('0x16c')]);if(!_0x10aef6){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x4a82de,_0x471f('0x16e'));}}var _0x179b43='';if(this[_0x471f('0x7f')](_0x4a82de[_0x471f('0x10d')])){var _0x542973=this[_0x471f('0x1c')][_0x471f('0x69')](this,_0x4a82de[_0x471f('0x10d')]);if(_0x542973){_0x179b43=_0x542973;}}this[_0x471f('0x34')]['sync'](this,_0x4a82de,_0x10aef6);if(_0x4a82de[_0x471f('0xe3')][_0x471f('0x16f')]('x')<0x0){_0x4a82de[_0x471f('0xe3')]+='x';}if(_0x4a82de[_0x471f('0xe3')][_0x471f('0x16f')]('X')<0x0){_0x4a82de[_0x471f('0xe3')]+='X';}this[_0x471f('0x35')]['setVariable'](_0x471f('0x170'),_0x10aef6?_0x10aef6[_0x471f('0x171')]():'');var _0x18f318=this[_0x471f('0x35')][_0x471f('0xca')]('QUEUE',[_0x10aef6,_0x4a82de[_0x471f('0xe3')],_0x4a82de[_0x471f('0x5f')],_0x179b43,_0x4a82de[_0x471f('0x61')],_0x4a82de[_0x471f('0xb7')],_0x4a82de['macro'],_0x4a82de[_0x471f('0x172')],'',_0x4a82de[_0x471f('0x173')]]);if(_0x18f318[_0x471f('0xab')]===-0x1){return _0x18f318;}return this[_0x471f('0x35')]['noop'](util[_0x471f('0x28')]('Executed\x20command\x20%s\x20%s',_0x471f('0x174'),_0x10aef6));};AGIVertices['prototype'][_0x471f('0x175')]=function(_0x2c2226){logger['info'](util[_0x471f('0x28')](_0x471f('0x176'),_0x2c2226['label']));var _0xefdeaa=_0x2c2226[_0x471f('0x177')]||_0x471f('0x12f');var _0x52fcb1=util[_0x471f('0x28')](_0x471f('0x178'),this[_0x471f('0x35')]['uniqueid'],rs[_0x471f('0x116')](0x5));var _0x2e5e8d=util[_0x471f('0x28')]('%s/recordings/%s.%s',FILES_PATH,_0x52fcb1,_0xefdeaa);var _0x9698c1=util['format'](_0x471f('0x130'),FILES_PATH,_0x52fcb1);this[_0x471f('0x3a')][_0x471f('0x69')](this,_0x2c2226,_0x52fcb1,_0x2e5e8d);this[_0x471f('0x35')][_0x471f('0x9e')](_0x471f('0x179'),_0x52fcb1);logger[_0x471f('0x2b')]('Recording\x20%s\x20%s\x20%s\x20%s',_0x9698c1,_0xefdeaa,_0x2c2226[_0x471f('0x17a')],_0x2c2226[_0x471f('0x61')]);return this['channel'][_0x471f('0x133')](_0x9698c1,_0xefdeaa,_0x2c2226[_0x471f('0x17a')],_0x2c2226[_0x471f('0x61')],undefined,!![]);};AGIVertices[_0x471f('0xf')][_0x471f('0x17b')]=function(_0x115ec7){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x17c'),_0x115ec7['label']));if(!this[_0x471f('0x7f')](_0x115ec7[_0x471f('0x5f')])){return this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0x17d'));}var _0x5c62e0=this[_0x471f('0x5e')][_0x471f('0x69')](this,_0x115ec7);logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x17e'),util[_0x471f('0x17f')](_0x5c62e0,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x115ec7['variable_id'])){return this['channel']['noop']('no\x20variable\x20selected\x20for\x20the\x20response');}var _0x28322e=this['getVariable'][_0x471f('0x69')](this,_0x115ec7[_0x471f('0xd8')]);if(!_0x28322e){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x115ec7,'no\x20variable\x20found');}this[_0x471f('0x35')]['setVariable'](util[_0x471f('0x28')](_0x471f('0x180'),_0x28322e),_0x5c62e0[_0x471f('0x6f')]?_0x5c62e0[_0x471f('0x6f')]:_0x471f('0x181'));this[_0x471f('0x35')][_0x471f('0x9e')](util[_0x471f('0x28')]('%s_STATUS_MESSAGE',_0x28322e),_0x5c62e0['statusMessage']?_0x5c62e0[_0x471f('0x70')]:'OK');if(_0x5c62e0[_0x471f('0x64')]){try{this[_0x471f('0x9b')](_0x5c62e0['body'],_0x28322e);}catch(_0x570270){logger[_0x471f('0x2f')](util[_0x471f('0x28')](_0x471f('0x182'),_0x28322e));}}return this[_0x471f('0x35')][_0x471f('0xa8')](util['format'](_0x471f('0x183'),_0x28322e));};AGIVertices[_0x471f('0xf')]['saydigits']=function(_0x594914){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x184'),_0x594914['label']));return this[_0x471f('0x35')][_0x471f('0x185')](_0x594914['digits']['replace'](/\s+/g,''),_0x594914[_0x471f('0x17a')]);};AGIVertices[_0x471f('0xf')][_0x471f('0x186')]=function(_0x23ba2d){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x187'),_0x23ba2d[_0x471f('0x37')]));return this['channel'][_0x471f('0x188')](_0x23ba2d[_0x471f('0x62')][_0x471f('0x54')](/\s+/g,''),_0x23ba2d['escape_digits']);};AGIVertices[_0x471f('0xf')]['sayphonetic']=function(_0x485fe3){logger[_0x471f('0x2b')](util[_0x471f('0x28')]('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x485fe3[_0x471f('0x37')]));return this[_0x471f('0x35')][_0x471f('0x189')](_0x485fe3['text'],_0x485fe3[_0x471f('0x17a')]);};AGIVertices[_0x471f('0xf')]['sendMail']=function(_0xe30336){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x18a'),_0xe30336['label']));if(!this[_0x471f('0x7f')](_0xe30336[_0x471f('0x18b')])){return this['channel'][_0x471f('0xa8')]('no\x20mail\x20account\x20configured');}var _0x43a9c6=this[_0x471f('0x20')]['sync'](this,_0xe30336[_0x471f('0x18b')]);if(!_0x43a9c6||!_0x43a9c6['Smtp']){return this[_0x471f('0x35')]['error'](_0xe30336,_0x471f('0x18c'));}var _0xb9827f={'from':util[_0x471f('0x28')](_0x471f('0x18d'),_0x43a9c6[_0x471f('0x12')],_0x43a9c6[_0x471f('0x18e')]||_0x43a9c6[_0x471f('0x18f')][_0x471f('0x190')]),'to':_0xe30336['to']||'','cc':_0xe30336['cc']||'','bcc':_0xe30336['bcc']||'','subject':_0xe30336[_0x471f('0x191')],'html':_0xe30336[_0x471f('0x58')],'text':_0xe30336[_0x471f('0x58')]};if(this[_0x471f('0x7f')](_0xe30336['template_id'])){}logger[_0x471f('0xde')](_0x471f('0x192'),JSON[_0x471f('0x6d')](_0xb9827f));this[_0x471f('0x34')][_0x471f('0x69')](this,_0xe30336,_0xe30336[_0x471f('0x18b')]);this[_0x471f('0x35')]['noop'](util[_0x471f('0x28')](_0x471f('0x193'),_0x43a9c6['name']));this[_0x471f('0x22')][_0x471f('0x69')](this,_0x43a9c6[_0x471f('0x194')],_0xb9827f);return this['channel'][_0x471f('0xa8')](_0x471f('0x195'));};AGIVertices[_0x471f('0xf')][_0x471f('0x196')]=function(_0x443d21){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x197'),_0x443d21[_0x471f('0x37')]));return this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0x198'));};AGIVertices[_0x471f('0xf')][_0x471f('0x199')]=function(_0x3ef2ad){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x19a'),_0x3ef2ad[_0x471f('0x37')]));if(!this['isConfigured'](_0x3ef2ad[_0x471f('0x19b')])){return this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0x19c'));}var _0x196694=this['getSmsAccount'][_0x471f('0x69')](this,_0x3ef2ad['sms_account_id']);if(!_0x196694){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x3ef2ad,_0x471f('0x19d'));}var _0x316d6d={'body':_0x3ef2ad['sms_text'],'phone':_0x3ef2ad['to']||'','SmsAccountId':_0x196694['id']};logger['debug'](_0x471f('0x19e'),JSON['stringify'](_0x316d6d));this[_0x471f('0x34')][_0x471f('0x69')](this,_0x3ef2ad,_0x3ef2ad[_0x471f('0x19b')]);this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0x19f'),_0x196694[_0x471f('0x12')]));this[_0x471f('0x33')][_0x471f('0x69')](this,_0x316d6d);return this[_0x471f('0x35')][_0x471f('0xa8')]('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0x471f('0xf')][_0x471f('0x1a0')]=function(_0x2d54d9){logger[_0x471f('0x2b')](util['format']('Enter\x20in\x20SET\x20(%s)\x20block',_0x2d54d9[_0x471f('0x37')]));if(!this[_0x471f('0x7f')](_0x2d54d9[_0x471f('0xd8')])){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x2d54d9,_0x471f('0x1a1'));}var _0x176129=this[_0x471f('0xa1')][_0x471f('0x69')](this,_0x2d54d9[_0x471f('0xd8')]);if(!_0x176129){return this['channel'][_0x471f('0x2f')](_0x2d54d9,'no\x20variable\x20found');}return this[_0x471f('0x35')][_0x471f('0x9e')](_0x176129,_0x2d54d9[_0x471f('0x1a2')]);};AGIVertices['prototype'][_0x471f('0x1a3')]=function(_0xc22759){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x1a4'),_0xc22759['label']));this[_0x471f('0x35')]['noop']('START\x20CALLY\x20SQUARE');if(_0xc22759[_0x471f('0xbb')]===_0x471f('0x1a5')){this[_0x471f('0x35')][_0x471f('0xa8')]('Answer');return this[_0x471f('0x35')][_0x471f('0xbb')]();}return this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0x1a6'));};AGIVertices[_0x471f('0xf')][_0x471f('0x1a7')]=function(_0x2e5dae){logger[_0x471f('0x2b')](util[_0x471f('0x28')]('Enter\x20in\x20SUBPROJECT\x20(%s)\x20block',_0x2e5dae['label']));if(!this[_0x471f('0x7f')](_0x2e5dae[_0x471f('0x1a8')])){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x2e5dae,_0x471f('0x1a9'));}var _0x259e30=this[_0x471f('0x16')][_0x471f('0x69')](this,_0x2e5dae[_0x471f('0x1a8')]);if(!this[_0x471f('0x7f')](_0x259e30)){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x2e5dae,util[_0x471f('0x28')](_0x471f('0x1aa'),_0x2e5dae[_0x471f('0x1a8')]));}if(_0x259e30===this[_0x471f('0x35')][_0x471f('0x38')]){return this['channel'][_0x471f('0x2f')](_0x2e5dae,_0x471f('0x1ab'));}this['createSquareDetailsReport'][_0x471f('0x69')](this,_0x2e5dae,_0x259e30);var _0x42135b=this[_0x471f('0x35')][_0x471f('0xca')](_0x471f('0x1ac'),util[_0x471f('0x28')](_0x471f('0x1ad'),config[_0x471f('0xb7')][_0x471f('0x1ae')]||_0x471f('0x1af'),_0x259e30,this[_0x471f('0x35')]['arg_1']));if(_0x42135b['result']===-0x1){return _0x42135b;}return this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')]('Executed\x20command\x20%s\x20%s','AGI',_0x259e30));};AGIVertices[_0x471f('0xf')][_0x471f('0x1b0')]=function(_0x192760){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x1b1'),_0x192760[_0x471f('0x37')]));var _0x395743=this[_0x471f('0x53')][_0x471f('0x69')](this,_0x192760['command']);this[_0x471f('0x34')][_0x471f('0x69')](this,_0x192760,_0x192760[_0x471f('0xb9')]);if(this[_0x471f('0x7f')](_0x192760['variable_id'])){var _0x3d59a4=this['getVariable']['sync'](this,_0x192760[_0x471f('0xd8')]);if(_0x3d59a4){this[_0x471f('0x35')][_0x471f('0x9e')](_0x3d59a4,_0x395743);return this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0x1b2'),_0x192760['command'],_0x3d59a4));}}return this['channel']['noop'](util['format'](_0x471f('0x1b3'),_0x192760[_0x471f('0xb9')]));};AGIVertices[_0x471f('0xf')][_0x471f('0x1b4')]=function(_0xb1f006){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x1b5'),_0xb1f006[_0x471f('0x37')]));_0xb1f006[_0x471f('0x58')]=_0xb1f006[_0x471f('0x58')][_0x471f('0x54')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0xb1f006['apiKey'])){return this[_0x471f('0x35')][_0x471f('0xa8')](_0x471f('0x1b6'));}if(!this[_0x471f('0x7f')](_0xb1f006['text'])){return this[_0x471f('0x35')][_0x471f('0xa8')]('no\x20text\x20configured');}this['channel'][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0x1b7'),_0xb1f006[_0x471f('0x58')]));var _0x5c035f=this[_0x471f('0x55')][_0x471f('0x69')](this,_0xb1f006);if(_0x5c035f){this[_0x471f('0x35')][_0x471f('0xa8')](util['format'](_0x471f('0x1b8'),_0x5c035f));var _0xd8fac3=this[_0x471f('0x35')]['streamFile'](_0x5c035f);try{fs['unlink'](_0x5c035f+_0x471f('0x100'));}catch(_0x2e6bf0){logger[_0x471f('0x2f')](_0x2e6bf0);}return _0xd8fac3;}return this[_0x471f('0x35')][_0x471f('0x2f')](_0xb1f006,_0x471f('0x1b9'));};AGIVertices[_0x471f('0xf')][_0x471f('0x1ba')]=function(_0x204b2c){logger['info'](util[_0x471f('0x28')]('Enter\x20in\x20GOOGLETTS\x20(%s)\x20block',_0x204b2c['label']));_0x204b2c['text']=_0x204b2c['text']['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x204b2c[_0x471f('0x58')])){return this[_0x471f('0x35')]['noop']('no\x20text\x20configured');}this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')]('Trying\x20Google\x20TTS\x20%s',_0x204b2c[_0x471f('0x58')]));var _0x529f38=this[_0x471f('0x5c')][_0x471f('0x69')](this,_0x204b2c);if(_0x529f38){this[_0x471f('0x35')]['noop'](util[_0x471f('0x28')](_0x471f('0x1bb'),_0x529f38));var _0x1cd7ac=this['channel'][_0x471f('0x122')](_0x529f38);try{fs[_0x471f('0x123')](_0x529f38+_0x471f('0x100'));}catch(_0x2809a0){logger[_0x471f('0x2f')](_0x2809a0);}return _0x1cd7ac;}return this[_0x471f('0x35')]['error'](_0x204b2c,_0x471f('0x1bc'));};AGIVertices['prototype'][_0x471f('0x1bd')]=function(_0x3ccb8e){logger['info'](util[_0x471f('0x28')](_0x471f('0x1be'),_0x3ccb8e[_0x471f('0x37')]));if(!this[_0x471f('0x7f')](_0x3ccb8e[_0x471f('0x151')])){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x3ccb8e,_0x471f('0x152'));}logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x153'),this['channel'][_0x471f('0x39')],_0x3ccb8e[_0x471f('0x151')]));var _0xc33f8a=this[_0x471f('0x4d')][_0x471f('0x69')](this,_0x3ccb8e[_0x471f('0x151')]);if(_0xc33f8a){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x154'),this[_0x471f('0x35')][_0x471f('0x39')],_0x3ccb8e[_0x471f('0x151')]));this[_0x471f('0x35')]['noop'](util[_0x471f('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x471f('0x39')],_0x3ccb8e[_0x471f('0x151')]));return{'code':0xc8,'result':'success'};}else{logger['info'](util[_0x471f('0x28')](_0x471f('0x155'),this[_0x471f('0x35')]['callerid'],_0x3ccb8e['findBy']));this[_0x471f('0x35')][_0x471f('0xa8')](util[_0x471f('0x28')](_0x471f('0x155'),this[_0x471f('0x35')]['callerid'],_0x3ccb8e['findBy']));return{'code':0xc8,'result':_0x471f('0x156')};}};AGIVertices[_0x471f('0xf')][_0x471f('0x1bf')]=function(_0x36b810){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x1c0'),_0x36b810[_0x471f('0x37')]));var _0x1a4f82=this[_0x471f('0x35')]['exec'](_0x471f('0x1c1'),[_0x36b810[_0x471f('0x1c2')],_0x36b810[_0x471f('0x73')]]);if(_0x1a4f82[_0x471f('0xab')]===-0x1){return _0x1a4f82;}return this['channel']['noop'](util[_0x471f('0x28')](_0x471f('0x169'),_0x471f('0x1c1'),_0x36b810[_0x471f('0x1c2')]));};AGIVertices['prototype'][_0x471f('0x1c3')]=function(_0x5e0521){logger[_0x471f('0x2b')](util[_0x471f('0x28')](_0x471f('0x1c4'),_0x5e0521[_0x471f('0x37')]));if(!this['isConfigured'](_0x5e0521['variable_id'])){return this[_0x471f('0x35')]['error'](_0x5e0521,_0x471f('0x1a1'));}var _0x1b55ac=this[_0x471f('0xa1')][_0x471f('0x69')](this,_0x5e0521[_0x471f('0xd8')]);if(!_0x1b55ac){return this[_0x471f('0x35')][_0x471f('0x2f')](_0x5e0521,'no\x20variable\x20found');}var _0x2161d1=this[_0x471f('0x35')]['getVariable'](_0x1b55ac);return{'code':0xc8,'result':_0x2161d1[_0x471f('0xa2')]?_0x2161d1[_0x471f('0xa2')]:'-'};};String['prototype']['replaceAll']=function(_0x36385d,_0x529ec5){return this[_0x471f('0x9f')](_0x36385d)['join'](_0x529ec5);};module[_0x471f('0x1c5')]=AGIVertices;
\ No newline at end of file
+var _0x80ed=['noop','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','MRCP_RECOG_CONFIDENCE','getAndSetVariable','RECOG_INPUT()','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','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','phone','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','MRCPSynth','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','RECOG_CONFIDENCE()','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','query:\x20%s','getQueryOdbc','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','keys','forEach','%s[%s][%s]','%s_ROWS_COUNT','Enter\x20in\x20DIAL\x20(%s)\x20block','no\x20user\x20selected','DIAL','opts','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','out','Dialogflow\x20Result\x20%s','speech','Dialogflow\x20is\x20unreachable','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','no\x20ndauth\x20url\x20configured','username','password','no\x20password\x20configured','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','audiofile','unlink','end','Enter\x20in\x20END\x20(%s)\x20block','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','getTrunk','no\x20trunk\x20found','trunk_name','SIP/%s/%s','finally','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','file_id','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','getData','response','test','mindigit','maxdigit','generate','hiddendigitspos','substr','goal','GOAL\x20%s','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','streamFile','.wav','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20Result\x20%s','googleasr','%s/recordings/%s','NOBEEP','recordFile','intKey','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','beep','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','true','false','gotoiftime','interval_id','no\x20interval\x20configured','getIntervals','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','getSound','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','getPause','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','getVoiceQueue','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','position','Enter\x20in\x20RECORD\x20(%s)\x20block','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','variable\x20%s\x20set','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20configured','Smtp','\x22%s\x22\x20<%s>','user','bcc','template_id','debug','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','sendSMS','sms_account_id','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','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','AGI','host','127.0.0.1','arg_1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','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','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','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','exports','util','shelljs','odbc','randomstring','mustache','request-promise','../../config/logger','agi','../../config/environment/shared','./scripts','/var/opt/motion2/server/files','rawBody','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','getVariable','getVariableById','then','name','catch','getVoiceQueueById','prototype','getSquareProject','getSquareProjectById','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervalById','IntervalId','interval','map','Intervals','format','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','query','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','getSmsAccount','createSmsMessage','createSquareDetailsReport','callerid','createSquareRecording','uniqueid','calleridname','context','extension','priority','accountcode','dnid','createSquareMessage','createCmContact','isEmpty','callback_','random','lastName','isNil','list_id','callback','Callback\x20scheduled\x20at\x20','scheduledAt','toString','agentPause','agent','agentUnpause','agentLogout','internal','%s/%s@from-sip/n','LOCAL','agentLogin','shellCommand','exec','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','MP3','googleTTS','google_tts_language','restAPI','url','timeout','number','POST','PUT','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','rawHeaders','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','appsecret','clear','includes','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','isPlainObject','recursiveNodeIndex','isArray','saveRestApiResult','%s.%s','length','setVariable','split','replaceAll','extra','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','label','no\x20text\x20configured'];(function(_0x4b0c1f,_0x10f72b){var _0x513520=function(_0x277035){while(--_0x277035){_0x4b0c1f['push'](_0x4b0c1f['shift']());}};_0x513520(++_0x10f72b);}(_0x80ed,0x11c));var _0xd80e=function(_0xc9782c,_0x4f7dfd){_0xc9782c=_0xc9782c-0x0;var _0x5ca62d=_0x80ed[_0xc9782c];return _0x5ca62d;};'use strict';var fs=require('fs');var util=require(_0xd80e('0x0'));var _=require('lodash');var sh=require(_0xd80e('0x1'));var odbc=require(_0xd80e('0x2'))();var rs=require(_0xd80e('0x3'));var moment=require('moment');var Mustache=require(_0xd80e('0x4'));var rp=require(_0xd80e('0x5'));var logger=require(_0xd80e('0x6'))(_0xd80e('0x7'));var config=require('../../config/environment');var shared=require(_0xd80e('0x8'));var scripts=require(_0xd80e('0x9'));var FILES_PATH=_0xd80e('0xa');var recursiveMapAttributes=['rawHeaders',_0xd80e('0xb')];var verticesWithRetry=[_0xd80e('0xc'),_0xd80e('0xd'),_0xd80e('0xe')];var AGIVertices=function(_0x46afc4,_0x298c29,_0x3063ff){this[_0xd80e('0xf')]=_0x46afc4;this[_0xd80e('0x10')]=_0x298c29;this[_0xd80e('0x11')]=_0x3063ff;};AGIVertices['prototype'][_0xd80e('0x12')]=function(_0x16dbb6,_0xa50f0f){this[_0xd80e('0x10')][_0xd80e('0x13')](_0x16dbb6)[_0xd80e('0x14')](function(_0x1a9024){_0xa50f0f(null,_0x1a9024?_0x1a9024[_0xd80e('0x15')]:![]);})[_0xd80e('0x16')](function(_0x4fb01c){_0xa50f0f(_0x4fb01c);});};AGIVertices['prototype']['getVoiceQueue']=function(_0x57fefb,_0x145766){this[_0xd80e('0x10')][_0xd80e('0x17')](_0x57fefb)[_0xd80e('0x14')](function(_0x449c60){_0x145766(null,_0x449c60?_0x449c60['name']:![]);})[_0xd80e('0x16')](function(_0x2c8c61){_0x145766(_0x2c8c61);});};AGIVertices[_0xd80e('0x18')][_0xd80e('0x19')]=function(_0x40a4d5,_0xc25d82){this[_0xd80e('0x10')][_0xd80e('0x1a')](_0x40a4d5)['then'](function(_0x21ceec){_0xc25d82(null,_0x21ceec?_0x21ceec[_0xd80e('0x15')]:![]);})[_0xd80e('0x16')](function(_0x34e239){_0xc25d82(_0x34e239);});};AGIVertices['prototype'][_0xd80e('0x1b')]=function(_0x175c67,_0xecfe74){this['rpc'][_0xd80e('0x1c')](_0x175c67)[_0xd80e('0x14')](function(_0x2765ea){_0xecfe74(null,_0x2765ea?_0x2765ea[_0xd80e('0x1d')]:![]);})[_0xd80e('0x16')](function(_0x5509d4){_0xecfe74(_0x5509d4);});};AGIVertices['prototype'][_0xd80e('0x1e')]=function(_0x3fa159,_0x3b39bf){this[_0xd80e('0x10')][_0xd80e('0x1f')](_0x3fa159)[_0xd80e('0x14')](function(_0x43152c){_0x3b39bf(null,_0x43152c?_0x43152c['name']:![]);})[_0xd80e('0x16')](function(_0x57d70){_0x3b39bf(_0x57d70);});};AGIVertices[_0xd80e('0x18')]['getTrunk']=function(_0x635ce0,_0x19c89c){this[_0xd80e('0x10')]['getTrunkById'](_0x635ce0)['then'](function(_0x5420e7){_0x19c89c(null,_0x5420e7?_0x5420e7[_0xd80e('0x15')]:![]);})['catch'](function(_0x9f9287){_0x19c89c(_0x9f9287);});};AGIVertices[_0xd80e('0x18')]['getSound']=function(_0x24bafb,_0xe1c04a){var _0x30d6fc=this;this[_0xd80e('0x10')]['getSoundById'](_0x24bafb)[_0xd80e('0x14')](function(_0x1ad3bc){_0xe1c04a(null,_0x1ad3bc?_0x30d6fc[_0xd80e('0x20')](_0x1ad3bc[_0xd80e('0x21')]):![]);})[_0xd80e('0x16')](function(_0x361946){_0xe1c04a(_0x361946);});};AGIVertices[_0xd80e('0x18')][_0xd80e('0x22')]=function(_0x5522dd,_0x54504e){this[_0xd80e('0x10')][_0xd80e('0x23')](_0x5522dd)[_0xd80e('0x14')](function(_0x32360c){_0x54504e(null,_0x32360c?_0x32360c:![]);})[_0xd80e('0x16')](function(_0x44b440){_0x54504e(_0x44b440);});};AGIVertices['prototype']['sendMailMessage']=function(_0x39c124,_0x2d6ae5,_0x380f4f){this[_0xd80e('0x11')][_0xd80e('0x24')](_0x39c124,_0x2d6ae5)[_0xd80e('0x14')](function(){_0x380f4f(null);})[_0xd80e('0x16')](function(_0x1a0dfe){_0x380f4f(_0x1a0dfe);});};AGIVertices['prototype']['getIntervals']=function(_0x2defac,_0x3d8c07){this[_0xd80e('0x10')][_0xd80e('0x25')](_0x2defac)[_0xd80e('0x14')](function(_0x271b23){if(_0x271b23){if(_0x271b23[_0xd80e('0x26')]){_0x3d8c07(null,[_0x271b23[_0xd80e('0x27')]]);}else{_0x3d8c07(null,_[_0xd80e('0x28')](_0x271b23[_0xd80e('0x29')],'interval'));}}else{_0x3d8c07(null,![]);}})[_0xd80e('0x16')](function(_0x490432){_0x3d8c07(_0x490432);});};AGIVertices[_0xd80e('0x18')][_0xd80e('0x20')]=function(_0x366b80){return util[_0xd80e('0x2a')]('%s/sounds/converted/%s',FILES_PATH,_0x366b80);};AGIVertices[_0xd80e('0x18')]['getQueryOdbc']=function(_0x3275fa,_0x4f15a9,_0xfb551a){odbc[_0xd80e('0x2b')](_0x3275fa,function(_0x4b7f32){if(_0x4b7f32){logger[_0xd80e('0x2c')](_0xd80e('0x2d'),_0x4b7f32);_0xfb551a(_0x4b7f32);}else{logger[_0xd80e('0x2e')]('ODBC\x20connection\x20successfully');odbc[_0xd80e('0x2f')](_0x4f15a9,function(_0x32db2f,_0x420298){if(_0x32db2f){logger[_0xd80e('0x2e')](_0xd80e('0x30'),_0x4f15a9);_0xfb551a(_0x32db2f);}else{logger[_0xd80e('0x2e')](_0xd80e('0x31'),_0x4f15a9);odbc[_0xd80e('0x32')](function(_0x408bd4){if(_0x408bd4){logger['error']('Error\x20closing\x20connection\x20to\x20odbc\x20%s',_0x408bd4);}_0xfb551a(null,_0x420298);});}});}});};AGIVertices['prototype'][_0xd80e('0x33')]=function(_0x3ff4b4,_0x55925e){this[_0xd80e('0x10')]['getSmsAccountById'](_0x3ff4b4)[_0xd80e('0x14')](function(_0x5ade19){_0x55925e(null,_0x5ade19?_0x5ade19:![]);})[_0xd80e('0x16')](function(_0xae1514){_0x55925e(_0xae1514);});};AGIVertices['prototype']['createSmsMessage']=function(_0x44a736,_0x5b8ec8){this[_0xd80e('0x10')][_0xd80e('0x34')](_0x44a736)[_0xd80e('0x14')](function(_0x19de99){_0x5b8ec8(null,_0x19de99);})[_0xd80e('0x16')](function(_0x439ba7){_0x5b8ec8(_0x439ba7);});};AGIVertices[_0xd80e('0x18')][_0xd80e('0x35')]=function(_0x1bbb36,_0x2e257e,_0x35862f){this[_0xd80e('0x10')][_0xd80e('0x35')]({'uniqueid':this[_0xd80e('0xf')]['uniqueid'],'node':_0x1bbb36['label'],'application':_0x1bbb36['agicommand'],'data':_0x2e257e||null,'project_name':this[_0xd80e('0xf')]['arg_1'],'callerid':this[_0xd80e('0xf')][_0xd80e('0x36')]})[_0xd80e('0x14')](function(_0x15a880){if(_0x35862f){_0x35862f(null,_0x15a880);}})[_0xd80e('0x16')](function(_0x7c394f){if(_0x35862f){_0x35862f(_0x7c394f);}});};AGIVertices['prototype']['createSquareRecording']=function(_0x4953ff,_0x2ea201,_0x4d6b4a,_0x25d537){this[_0xd80e('0x10')][_0xd80e('0x37')]({'uniqueid':this[_0xd80e('0xf')][_0xd80e('0x38')],'callerid':this['channel'][_0xd80e('0x36')],'calleridname':this[_0xd80e('0xf')][_0xd80e('0x39')],'context':this['channel'][_0xd80e('0x3a')],'extension':this[_0xd80e('0xf')][_0xd80e('0x3b')],'priority':this['channel'][_0xd80e('0x3c')],'accountcode':this[_0xd80e('0xf')][_0xd80e('0x3d')],'dnid':this[_0xd80e('0xf')][_0xd80e('0x3e')],'projectName':this[_0xd80e('0xf')]['arg_1'],'saveName':_0x2ea201,'filename':_0x4953ff['file']||_0x2ea201,'savePath':_0x4d6b4a})[_0xd80e('0x14')](function(_0x27134e){_0x25d537(null,_0x27134e);})[_0xd80e('0x16')](function(_0x5dec55){_0x25d537(_0x5dec55);});};AGIVertices['prototype'][_0xd80e('0x3f')]=function(_0xff0980,_0x183f78,_0x1c0da8,_0x1b996b,_0x56c086){this[_0xd80e('0x10')]['createSquareMessage']({'uniqueid':this[_0xd80e('0xf')][_0xd80e('0x38')],'body':_0xff0980,'direction':_0x183f78,'providerName':_0x1c0da8,'providerResponse':_0x1b996b})['then'](function(_0x29af86){if(_0x56c086){_0x56c086(null,_0x29af86);}})[_0xd80e('0x16')](function(_0x46e112){if(_0x56c086){_0x56c086(_0x46e112);}});};AGIVertices[_0xd80e('0x18')][_0xd80e('0x40')]=function(_0x470319,_0x18dbb0){this['rpc'][_0xd80e('0x40')]({'firstName':_[_0xd80e('0x41')](_0x470319[_0xd80e('0x15')])||_['isNil'](_0x470319['name'])?_0xd80e('0x42')+Math[_0xd80e('0x43')]():_0x470319[_0xd80e('0x15')],'lastName':_[_0xd80e('0x41')](_0x470319[_0xd80e('0x44')])||_[_0xd80e('0x45')](_0x470319[_0xd80e('0x44')])?null:_0x470319[_0xd80e('0x44')],'phone':_0x470319['phone'],'ListId':_0x470319[_0xd80e('0x46')],'scheduledat':_0x470319['scheduledAt'],'callbackUniqueid':this[_0xd80e('0xf')][_0xd80e('0x38')],'tags':_0xd80e('0x47'),'description':_0xd80e('0x48')+_0x470319[_0xd80e('0x49')][_0xd80e('0x4a')](),'priority':_0x470319['callback_priority']})[_0xd80e('0x14')](function(_0x4e7edd){_0x18dbb0(null,_0x4e7edd);})[_0xd80e('0x16')](function(_0x6e506){_0x18dbb0(_0x6e506);});};AGIVertices['prototype']['getPause']=function(_0x402c0f,_0x3ead70){this[_0xd80e('0x10')]['getPauseById'](_0x402c0f)['then'](function(_0x1ba0ed){_0x3ead70(null,_0x1ba0ed?_0x1ba0ed[_0xd80e('0x15')]:![]);})['catch'](function(_0x386918){_0x3ead70(_0x386918);});};AGIVertices[_0xd80e('0x18')][_0xd80e('0x4b')]=function(_0x539390,_0x41dda0,_0x589c0b){var _0x720eab={'role':_0xd80e('0x4c')};_0x720eab[_0x539390]=this[_0xd80e('0xf')][_0xd80e('0x36')];this['rpc'][_0xd80e('0x4b')](_0x720eab,_0x41dda0,this['channel'][_0xd80e('0x38')])['then'](function(_0x40264b){_0x589c0b(null,_[_0xd80e('0x45')](_0x40264b)?![]:!![]);})[_0xd80e('0x16')](function(_0x2ee78e){logger['error'](_0x2ee78e);_0x589c0b(null,![]);});};AGIVertices[_0xd80e('0x18')][_0xd80e('0x4d')]=function(_0x5d775f,_0x2ebfea){var _0x391e0c={'role':_0xd80e('0x4c')};_0x391e0c[_0x5d775f]=this[_0xd80e('0xf')]['callerid'];this[_0xd80e('0x10')][_0xd80e('0x4d')](_0x391e0c)['then'](function(_0x4c2417){_0x2ebfea(null,_[_0xd80e('0x45')](_0x4c2417)?![]:!![]);})[_0xd80e('0x16')](function(_0x4abc70){logger['error'](_0x4abc70);_0x2ebfea(null,![]);});};AGIVertices['prototype']['agentLogout']=function(_0x6edb7,_0x4f283c){var _0x3c8ad1={'role':_0xd80e('0x4c')};_0x3c8ad1[_0x6edb7]=this[_0xd80e('0xf')]['callerid'];this[_0xd80e('0x10')][_0xd80e('0x4e')](_0x3c8ad1)[_0xd80e('0x14')](function(_0x1a351b){_0x4f283c(null,_[_0xd80e('0x45')](_0x1a351b)?![]:!![]);})[_0xd80e('0x16')](function(_0x385453){logger[_0xd80e('0x2c')](_0x385453);_0x4f283c(null,![]);});};AGIVertices[_0xd80e('0x18')]['agentLogin']=function(_0x4dae5f,_0x154221){var _0x410ed6={'role':_0xd80e('0x4c')};_0x410ed6[_0x4dae5f]=this[_0xd80e('0xf')]['callerid'];var _0x59973b=_0x4dae5f!=_0xd80e('0x4f')?util[_0xd80e('0x2a')](_0xd80e('0x50'),_0xd80e('0x51'),this['channel'][_0xd80e('0x36')]):undefined;this[_0xd80e('0x10')][_0xd80e('0x52')](_0x410ed6,_0x59973b)[_0xd80e('0x14')](function(_0x53971e){_0x154221(null,_[_0xd80e('0x45')](_0x53971e)?![]:!![]);})[_0xd80e('0x16')](function(_0x3fb153){logger[_0xd80e('0x2c')](_0x3fb153);_0x154221(null,![]);});};AGIVertices[_0xd80e('0x18')][_0xd80e('0x53')]=function(_0x5cb11c,_0x3e3176){sh[_0xd80e('0x54')](_['trim'](_0x5cb11c),function(_0x44cf88,_0x3d44f8){var _0x2f6fc8=_0x3d44f8[_0xd80e('0x55')](/(\r\n|\n|\r)/gm,'');_0x3e3176(null,_0x2f6fc8);});};AGIVertices['prototype'][_0xd80e('0x56')]=function(_0x571951,_0x314fbb){scripts[_0xd80e('0x56')](_0x571951[_0xd80e('0x57')],_0x571951[_0xd80e('0x58')]||_0xd80e('0x59'),_0x571951['text'],_0x571951[_0xd80e('0x5a')]||_0xd80e('0x5b'),_0x571951[_0xd80e('0x5c')]||_0xd80e('0x5d'),_0x571951['audioEncoding']||_0xd80e('0x5e'))[_0xd80e('0x14')](function(_0x4a21d1){_0x314fbb(null,_0x4a21d1);})[_0xd80e('0x16')](function(_0x65cc3d){_0x314fbb(_0x65cc3d);});};AGIVertices[_0xd80e('0x18')][_0xd80e('0x5f')]=function(_0x3feb77,_0x8b2fc4){scripts['googleTTS'](_0x3feb77['text'],_0x3feb77[_0xd80e('0x60')]||'en',0x1)['then'](function(_0x58a38a){_0x8b2fc4(null,_0x58a38a);})[_0xd80e('0x16')](function(_0x1c830c){_0x8b2fc4(_0x1c830c);});};AGIVertices[_0xd80e('0x18')][_0xd80e('0x61')]=function(_0x257104,_0x19c13e){var _0x77012c={'uri':_0x257104[_0xd80e('0x62')],'method':_0x257104['method'],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x257104[_0xd80e('0x63')])===_0xd80e('0x64')&&parseInt(_0x257104[_0xd80e('0x63')])>=0x1?parseInt(_0x257104[_0xd80e('0x63')])*0x3e8:0x5*0x3e8};if(_['includes']([_0xd80e('0x65'),_0xd80e('0x66')],_0x77012c['method'][_0xd80e('0x67')]())){try{_0x77012c[_0xd80e('0x68')]=_0x257104['rawBody']?JSON[_0xd80e('0x69')](_0x257104[_0xd80e('0xb')]):{};}catch(_0x472dd3){logger[_0xd80e('0x2c')](_0xd80e('0x6a'),_0x472dd3);}}try{_0x77012c[_0xd80e('0x6b')]=_0x257104[_0xd80e('0x6c')]?JSON[_0xd80e('0x69')](_0x257104[_0xd80e('0x6c')]):{};}catch(_0x3d1a6c){logger['error'](_0xd80e('0x6d'),_0x3d1a6c);}if(_0x257104[_0xd80e('0x6e')]){try{var _0x57ff82=require(_0x257104[_0xd80e('0x6e')])[_0xd80e('0x6f')](this,_0x77012c);_0x77012c[_0xd80e('0x70')]=Mustache['render'](_0x257104[_0xd80e('0x62')],_0x57ff82,{},['$$','$$']);if(_0x77012c['headers']){_0x77012c[_0xd80e('0x6b')]=JSON[_0xd80e('0x69')](Mustache[_0xd80e('0x71')](JSON[_0xd80e('0x72')](_0x77012c[_0xd80e('0x6b')]),_0x57ff82,{},['$$','$$']));}if(_0x77012c['body']){_0x77012c[_0xd80e('0x68')]=JSON[_0xd80e('0x69')](Mustache[_0xd80e('0x71')](JSON[_0xd80e('0x72')](_0x77012c[_0xd80e('0x68')]),_0x57ff82,{},['$$','$$']));}}catch(_0x188971){logger[_0xd80e('0x2c')](_0xd80e('0x73'),_0x188971);}}rp(_0x77012c)[_0xd80e('0x14')](function(_0x28b7dc){var _0x30a3d0={'statusCode':_0x28b7dc[_0xd80e('0x74')]||0xc8,'statusMessage':_0x28b7dc[_0xd80e('0x75')]||'OK','headers':_0x28b7dc[_0xd80e('0x6b')]||{},'body':_0x28b7dc['body']||{}};_0x19c13e(null,_0x30a3d0);})[_0xd80e('0x16')](function(_0x56651f){var _0x50e03b={'statusCode':_0x56651f['statusCode']||0x1f4,'statusMessage':_0x56651f[_0xd80e('0x76')]||_0xd80e('0x77'),'headers':_0x56651f[_0xd80e('0x78')][_0xd80e('0x6b')]||{},'body':_0x56651f['options'][_0xd80e('0x68')]||{}};_0x19c13e(null,_0x50e03b);});};AGIVertices[_0xd80e('0x18')][_0xd80e('0x79')]=function(_0x586f5c,_0x4dc91f){scripts[_0xd80e('0x79')](this['channel'][_0xd80e('0x38')],_0x586f5c[_0xd80e('0x7a')],_0x586f5c[_0xd80e('0x59')],_0x586f5c[_0xd80e('0x7b')]||'en')[_0xd80e('0x14')](function(_0x32d445){_0x4dc91f(null,_0x32d445);})[_0xd80e('0x16')](function(_0x48aab5){_0x4dc91f(_0x48aab5);});};AGIVertices['prototype']['googleDialogflowV2']=function(_0x1d1561,_0x94b139){scripts[_0xd80e('0x7c')](this[_0xd80e('0xf')][_0xd80e('0x38')],_0x1d1561[_0xd80e('0x7d')],_0x1d1561[_0xd80e('0x7e')],_0x1d1561[_0xd80e('0x7f')],_0x1d1561[_0xd80e('0x59')],_0x1d1561[_0xd80e('0x80')]||'en')[_0xd80e('0x14')](function(_0x201f42){_0x94b139(null,_0x201f42);})[_0xd80e('0x16')](function(_0x4cecdb){_0x94b139(_0x4cecdb);});};AGIVertices[_0xd80e('0x18')][_0xd80e('0x81')]=function(_0x11ec11,_0x2e8124){scripts[_0xd80e('0x81')](this[_0xd80e('0xf')],_0x11ec11)[_0xd80e('0x14')](function(_0x4a26b5){_0x2e8124(null,_0x4a26b5);})[_0xd80e('0x16')](function(_0xa0dfd8){_0x2e8124(_0xa0dfd8);});};AGIVertices['prototype'][_0xd80e('0x82')]=function(_0x44656f,_0x3e36e4){scripts[_0xd80e('0x82')](_0x44656f['key'],_0x44656f['text'],_0x44656f['ispeech_tts_language']||_0xd80e('0x5b'),_0x44656f[_0xd80e('0x83')])['then'](function(_0xb5b831){_0x3e36e4(null,_0xb5b831);})[_0xd80e('0x16')](function(_0x26e40a){_0x3e36e4(_0x26e40a);});};AGIVertices['prototype'][_0xd80e('0x84')]=function(_0x5b8a23,_0x145c93,_0x247ebc){scripts['ispeechASR'](_0x145c93,_0x5b8a23[_0xd80e('0x7a')],_0x5b8a23[_0xd80e('0x85')]||_0xd80e('0x5b'),this[_0xd80e('0x86')](_0x5b8a23['model'])?_0x5b8a23[_0xd80e('0x87')]:undefined)['then'](function(_0x120907){_0x247ebc(null,_0x120907);})[_0xd80e('0x16')](function(_0x3b7a11){_0x247ebc(_0x3b7a11);});};AGIVertices[_0xd80e('0x18')][_0xd80e('0x88')]=function(_0x2539c3,_0x1782d2){scripts[_0xd80e('0x88')](_0x2539c3[_0xd80e('0x89')],_0x2539c3[_0xd80e('0x8a')],_0x2539c3[_0xd80e('0x8b')],_0x2539c3['aws_polly_voice']||'Amy',_0x2539c3['text'],_0x2539c3[_0xd80e('0x8c')]||_0xd80e('0x59'))[_0xd80e('0x14')](function(_0x1d571a){_0x1782d2(null,_0x1d571a);})[_0xd80e('0x16')](function(_0x28c4fd){_0x1782d2(_0x28c4fd);});};AGIVertices[_0xd80e('0x18')][_0xd80e('0x8d')]=function(_0x4c883d,_0x2c3009){scripts['awsLex'](this[_0xd80e('0xf')][_0xd80e('0x38')],_0x4c883d[_0xd80e('0x89')],_0x4c883d['aws_secret_access_key'],_0x4c883d[_0xd80e('0x8e')],_0x4c883d['text'],_0x4c883d[_0xd80e('0x8f')])['then'](function(_0x9257d6){_0x2c3009(null,_0x9257d6);})[_0xd80e('0x16')](function(_0x565da3){_0x2c3009(_0x565da3);});};AGIVertices['prototype'][_0xd80e('0x90')]=function(_0x232957,_0x2f0a6c,_0x216c63){scripts[_0xd80e('0x90')](_0x2f0a6c,_0x232957[_0xd80e('0x7a')],_0x232957[_0xd80e('0x91')]||'en-US')[_0xd80e('0x14')](function(_0x5c8d28){_0x216c63(null,_0x5c8d28);})[_0xd80e('0x16')](function(_0x2a9445){_0x216c63(_0x2a9445);});};AGIVertices[_0xd80e('0x18')][_0xd80e('0x92')]=function(_0x3bbfcd,_0x48e22b,_0x4af289){scripts[_0xd80e('0x92')](_0x48e22b,_0x3bbfcd[_0xd80e('0x93')],_0x3bbfcd[_0xd80e('0x94')],_0x3bbfcd[_0xd80e('0x70')])[_0xd80e('0x14')](function(_0x42f948){_0x4af289(null,_0x42f948);})[_0xd80e('0x16')](function(_0xcdafdb){_0x4af289(_0xcdafdb);});};AGIVertices[_0xd80e('0x18')][_0xd80e('0x95')]=function(_0x756f00){var _0x1a8f75=_[_0xd80e('0x96')](verticesWithRetry,_0x756f00['agicommand'])?_0x756f00:_[_0xd80e('0x97')](_0x756f00);for(var _0x54eaad in _0x1a8f75){if(_0x1a8f75[_0xd80e('0x98')](_0x54eaad)){if(_0x1a8f75[_0x54eaad]&&_[_0xd80e('0x99')](_0x1a8f75[_0x54eaad])){if(_[_0xd80e('0x96')](recursiveMapAttributes,_0x54eaad)){_0x1a8f75[_0x54eaad]=this[_0xd80e('0x9a')](_0x1a8f75[_0x54eaad]);}else{_0x1a8f75[_0x54eaad]=this[_0xd80e('0x9b')](_0x1a8f75[_0x54eaad]);}}}}return _0x1a8f75;};AGIVertices['prototype']['recursiveNodeIndex']=function(_0x243f9b){for(var _0x714845 in _0x243f9b){if(_0x243f9b['hasOwnProperty'](_0x714845)){if(_[_0xd80e('0x9c')](_0x243f9b[_0x714845])){this[_0xd80e('0x9d')](_0x243f9b[_0x714845]);}else if(_[_0xd80e('0x9e')](_0x243f9b[_0x714845])){for(var _0xb121f=0x0;_0xb121f<_0x243f9b[_0x714845]['length'];_0xb121f++){this[_0xd80e('0x9d')](_0x243f9b[_0x714845][_0xb121f]);}}else if(_[_0xd80e('0x99')](_0x243f9b[_0x714845])){_0x243f9b[_0x714845]=this[_0xd80e('0x9b')](_0x243f9b[_0x714845]);}}}};AGIVertices[_0xd80e('0x18')][_0xd80e('0x9f')]=function(_0xac3eff,_0x1b3a6e){for(var _0x3be383 in _0xac3eff){if(_0xac3eff['hasOwnProperty'](_0x3be383)){if(_['isPlainObject'](_0xac3eff[_0x3be383])){if(!_[_0xd80e('0x41')](_0xac3eff[_0x3be383])){this[_0xd80e('0x9f')](_0xac3eff[_0x3be383],util[_0xd80e('0x2a')](_0xd80e('0xa0'),_0x1b3a6e,_0x3be383));}}else if(_[_0xd80e('0x9e')](_0xac3eff[_0x3be383])){for(var _0x2c80ed=0x0;_0x2c80ed<_0xac3eff[_0x3be383][_0xd80e('0xa1')];_0x2c80ed++){this[_0xd80e('0x9f')](_0xac3eff[_0x3be383][_0x2c80ed],util[_0xd80e('0x2a')](_0xd80e('0xa0'),_0x1b3a6e,_0x3be383+'['+_0x2c80ed+']'));}}else{if(!_[_0xd80e('0x45')](_0xac3eff[_0x3be383])){this[_0xd80e('0xf')][_0xd80e('0xa2')](util[_0xd80e('0x2a')]('%s.%s',_0x1b3a6e,_0x3be383),_0xac3eff[_0x3be383]);}}}}};AGIVertices[_0xd80e('0x18')][_0xd80e('0x9a')]=function(_0x53a6f6){try{var _0x2f90b3=JSON[_0xd80e('0x69')](_0x53a6f6);this['recursiveNodeIndex'](_0x2f90b3);return JSON[_0xd80e('0x72')](_0x2f90b3);}catch(_0x51777f){return this[_0xd80e('0x9b')](_0x53a6f6);}};AGIVertices[_0xd80e('0x18')][_0xd80e('0x9b')]=function(_0x5300af){var _0x3b4143=_0x5300af[_0xd80e('0xa3')]('{');for(var _0x227ca2=0x1;_0x227ca2<_0x3b4143[_0xd80e('0xa1')];_0x227ca2+=0x1){var _0x598a2e=_0x3b4143[_0x227ca2][_0xd80e('0xa3')]('}');if(_0x598a2e[_0xd80e('0xa1')]>0x1){_0x5300af=_0x5300af[_0xd80e('0xa4')]('{'+_0x598a2e[0x0]+'}',this[_0xd80e('0xf')]['getVariable'](_0x598a2e[0x0])[_0xd80e('0xa5')]||_0x598a2e[0x0]);}}if(_0x3b4143[_0xd80e('0xa1')]===0x1){return _0x5300af[_0xd80e('0x4a')]();}return this[_0xd80e('0x9b')](_0x5300af);};AGIVertices[_0xd80e('0x18')]['getAndSetVariable']=function(_0x14d9a1,_0x2635e9){var _0x21baed=this['channel']['getVariable'](_0x14d9a1);if(_0x21baed[_0xd80e('0xa6')]===-0x1){return _0x21baed;}logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0xa7'),_0x2635e9,_0x21baed[_0xd80e('0xa5')]));return this[_0xd80e('0xf')]['setVariable'](_0x2635e9,_0x21baed[_0xd80e('0xa5')]);};AGIVertices[_0xd80e('0x18')][_0xd80e('0x86')]=function(_0x24c913){return _0x24c913&&_0x24c913!=='0'&&_0x24c913!=='-1'&&_0x24c913!=='';};AGIVertices[_0xd80e('0x18')][_0xd80e('0xa8')]=function(_0x5a477c){this[_0xd80e('0x35')][_0xd80e('0x6f')](this,_0x5a477c,'-');_0x5a477c['retry']=_0x5a477c['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices[_0xd80e('0x18')][_0xd80e('0xa9')]=function(_0x2a4a37){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0xaa'),_0x2a4a37[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0x2a4a37[_0xd80e('0x59')])){return this['channel']['noop'](_0xd80e('0xac'));}var _0x1387b7='\x22'+_0x2a4a37[_0xd80e('0x59')]+'\x22';if(this[_0xd80e('0x86')](_0x2a4a37['options'])){_0x1387b7+=','+_0x2a4a37[_0xd80e('0x78')];}var _0x2f52ad=this[_0xd80e('0xf')][_0xd80e('0x54')]('MRCPSynth',_0x1387b7);if(_0x2f52ad['result']===-0x1){return _0x2f52ad;}return this['channel'][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0xae'),_0x1387b7));};AGIVertices['prototype'][_0xd80e('0xaf')]=function(_0x14c303){logger['info'](util['format'](_0xd80e('0xb0'),_0x14c303[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0x14c303[_0xd80e('0xb1')])){return this['channel'][_0xd80e('0xad')](_0xd80e('0xb2'));}var _0x1c987f=_0x14c303[_0xd80e('0xb1')];if(this[_0xd80e('0x86')](_0x14c303[_0xd80e('0x78')])){_0x1c987f+=','+_0x14c303[_0xd80e('0x78')];}var _0xf62441=this['channel'][_0xd80e('0x54')](_0xd80e('0xb3'),_0x1c987f);if(_0xf62441[_0xd80e('0xa6')]===-0x1){return _0xf62441;}var _0x2377b0=this['getAndSetVariable']('RECOG_CONFIDENCE()',_0xd80e('0xb4'));if(_0x2377b0[_0xd80e('0xa6')]===-0x1){return _0x2377b0;}var _0x1ce838=this[_0xd80e('0xb5')](_0xd80e('0xb6'),'MRCP_RECOG_TRANSCRIPT');if(_0x1ce838[_0xd80e('0xa6')]===-0x1){return _0x1ce838;}var _0x4a4f7a=this[_0xd80e('0xb5')](_0xd80e('0xb7'),_0xd80e('0xb8'));if(_0x4a4f7a[_0xd80e('0xa6')]===-0x1){return _0x4a4f7a;}return this[_0xd80e('0xf')]['noop'](util[_0xd80e('0x2a')](_0xd80e('0xb9'),_0x1c987f));};AGIVertices[_0xd80e('0x18')][_0xd80e('0x7')]=function(_0x1edc39){logger[_0xd80e('0x2e')](util['format'](_0xd80e('0xba'),_0x1edc39['label']));return this[_0xd80e('0xf')]['agi']([_0x1edc39[_0xd80e('0xbb')],_0x1edc39[_0xd80e('0xbc')]]);};AGIVertices['prototype'][_0xd80e('0xbd')]=function(_0x44aa43){logger[_0xd80e('0x2e')](util['format'](_0xd80e('0xbe'),_0x44aa43[_0xd80e('0xab')]));if(this[_0xd80e('0x86')](_0x44aa43[_0xd80e('0x63')])){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0xbf'),_0x44aa43[_0xd80e('0x63')]));var _0x39540c=this[_0xd80e('0xf')][_0xd80e('0xc0')](_0x44aa43[_0xd80e('0x63')]);if(_0x39540c[_0xd80e('0xa6')]===-0x1){return _0x39540c;}}return this['channel'][_0xd80e('0xbd')]();};AGIVertices[_0xd80e('0x18')][_0xd80e('0x47')]=function(_0xcb7f94){logger['info'](util[_0xd80e('0x2a')](_0xd80e('0xc1'),_0xcb7f94[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0xcb7f94['list_id'])){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0xcb7f94,_0xd80e('0xc2'));}_0xcb7f94[_0xd80e('0x49')]=moment();if(this['isConfigured'](_0xcb7f94[_0xd80e('0xc3')])){_0xcb7f94[_0xd80e('0x49')]=moment()[_0xd80e('0xc4')](_0xcb7f94['delay'],_0xd80e('0xc5'));}if(!this['isConfigured'](_0xcb7f94[_0xd80e('0xc6')])){_0xcb7f94['callback_priority']=0x2;}this[_0xd80e('0x40')][_0xd80e('0x6f')](this,_0xcb7f94);return this[_0xd80e('0xf')][_0xd80e('0xad')](util['format'](_0xd80e('0xc7'),_0xcb7f94[_0xd80e('0xc8')],_0xcb7f94[_0xd80e('0x46')],_0xcb7f94[_0xd80e('0x49')]));};AGIVertices[_0xd80e('0x18')][_0xd80e('0xc9')]=function(_0xe5cb01){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0xca'),_0xe5cb01[_0xd80e('0xab')]));var _0x48c487=this[_0xd80e('0xf')][_0xd80e('0x54')](_0xe5cb01[_0xd80e('0xcb')],_0xe5cb01['options']);if(_0x48c487[_0xd80e('0xa6')]===-0x1){return _0x48c487;}return this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0xcc'),_0xe5cb01['application'],_0xe5cb01[_0xd80e('0x78')]));};AGIVertices['prototype'][_0xd80e('0xcd')]=function(_0x4136b7){logger[_0xd80e('0x2e')](util['format'](_0xd80e('0xce'),_0x4136b7['label']));if(!this[_0xd80e('0x86')](_0x4136b7[_0xd80e('0x59')])){return this[_0xd80e('0xf')][_0xd80e('0xad')](_0xd80e('0xac'));}var _0x130ccc='\x22'+_0x4136b7[_0xd80e('0x59')]+'\x22';if(this[_0xd80e('0x86')](_0x4136b7[_0xd80e('0x78')])){_0x130ccc+=','+_0x4136b7[_0xd80e('0x78')];}var _0x141f39=this[_0xd80e('0xf')]['exec'](_0xd80e('0xcf'),_0x130ccc);if(_0x141f39[_0xd80e('0xa6')]===-0x1){return _0x141f39;}return this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0xae'),_0x130ccc));};AGIVertices['prototype']['sestektts']=function(_0x30837b){logger['info'](util[_0xd80e('0x2a')](_0xd80e('0xd0'),_0x30837b[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0x30837b[_0xd80e('0x59')])){return this[_0xd80e('0xf')][_0xd80e('0xad')](_0xd80e('0xac'));}var _0x197e43='\x22'+_0x30837b[_0xd80e('0x59')]+'\x22';if(this['isConfigured'](_0x30837b['options'])){_0x197e43+=','+_0x30837b[_0xd80e('0x78')];}var _0x253deb=this['channel'][_0xd80e('0x54')](_0xd80e('0xcf'),_0x197e43);if(_0x253deb[_0xd80e('0xa6')]===-0x1){return _0x253deb;}return this['channel'][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0xae'),_0x197e43));};AGIVertices['prototype'][_0xd80e('0xd1')]=function(_0xae0dd7){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0xd2'),_0xae0dd7[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0xae0dd7[_0xd80e('0xb1')])){return this['channel'][_0xd80e('0xad')]('no\x20grammar\x20configured');}var _0xd6d7a4=_0xae0dd7['grammar'];if(this['isConfigured'](_0xae0dd7[_0xd80e('0x78')])){_0xd6d7a4+=','+_0xae0dd7[_0xd80e('0x78')];}var _0xe89513=this[_0xd80e('0xf')][_0xd80e('0x54')]('MRCPRecog',_0xd6d7a4);if(_0xe89513['result']===-0x1){return _0xe89513;}var _0x555e13=this[_0xd80e('0xb5')](_0xd80e('0xd3'),'LUMENVOX_ASR_CONFIDENCE');if(_0x555e13['result']===-0x1){return _0x555e13;}var _0x109c35=this[_0xd80e('0xb5')]('RECOG_INPUT()',_0xd80e('0xd4'));if(_0x109c35[_0xd80e('0xa6')]===-0x1){return _0x109c35;}var _0x6a7863=this['getAndSetVariable'](_0xd80e('0xb7'),_0xd80e('0xd5'));if(_0x6a7863[_0xd80e('0xa6')]===-0x1){return _0x6a7863;}return this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')]('Executed\x20command\x20MRCPRecog\x20%s',_0xd6d7a4));};AGIVertices[_0xd80e('0x18')]['sestekasr']=function(_0x334ad9){logger['info'](util[_0xd80e('0x2a')](_0xd80e('0xd6'),_0x334ad9['label']));if(!this['isConfigured'](_0x334ad9[_0xd80e('0xb1')])){return this[_0xd80e('0xf')][_0xd80e('0xad')](_0xd80e('0xb2'));}var _0x1c8e65=_0x334ad9[_0xd80e('0xb1')];if(this[_0xd80e('0x86')](_0x334ad9[_0xd80e('0x78')])){_0x1c8e65+=','+_0x334ad9[_0xd80e('0x78')];}var _0x2441dc=this['channel'][_0xd80e('0x54')]('MRCPRecog',_0x1c8e65);if(_0x2441dc['result']===-0x1){return _0x2441dc;}var _0x5ee76e=this[_0xd80e('0xb5')](_0xd80e('0xd3'),'SESTEK_ASR_CONFIDENCE');if(_0x5ee76e[_0xd80e('0xa6')]===-0x1){return _0x5ee76e;}var _0x2707f9=this[_0xd80e('0xb5')](_0xd80e('0xb6'),'SESTEK_ASR_TRANSCRIPT');if(_0x2707f9[_0xd80e('0xa6')]===-0x1){return _0x2707f9;}var _0xa53eaf=this['getAndSetVariable'](_0xd80e('0xb7'),_0xd80e('0xd7'));if(_0xa53eaf['result']===-0x1){return _0xa53eaf;}return this[_0xd80e('0xf')][_0xd80e('0xad')](util['format'](_0xd80e('0xb9'),_0x1c8e65));};AGIVertices[_0xd80e('0x18')][_0xd80e('0xd8')]=function(_0x434d69){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0xd9'),_0x434d69['label']));if(!this[_0xd80e('0x86')](_0x434d69[_0xd80e('0xda')])){return this[_0xd80e('0xf')]['error'](_0x434d69,_0xd80e('0xdb'));}var _0x6a7e37=this['getSquareOdbc'][_0xd80e('0x6f')](this,_0x434d69[_0xd80e('0xda')]);if(!_0x6a7e37){return this['channel']['error'](_0x434d69,_0xd80e('0xdc'));}if(!this[_0xd80e('0x86')](_0x434d69[_0xd80e('0x2f')])){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x434d69,'no\x20query\x20configured');}var _0x537b27=_0x434d69['query'][_0xd80e('0x55')](/(\r\n|\n|\r)/gm,'\x20');this[_0xd80e('0xf')][_0xd80e('0xad')](util['format'](_0xd80e('0xdd'),_0x537b27));var _0x4fde62=this[_0xd80e('0xde')][_0xd80e('0x6f')](this,_0x6a7e37,_0x537b27);this['createSquareDetailsReport'][_0xd80e('0x6f')](this,_0x434d69,_0x537b27);if(!this[_0xd80e('0x86')](_0x434d69[_0xd80e('0xdf')])){return this[_0xd80e('0xf')]['noop'](_0xd80e('0xe0'));}var _0xbfc5f4=this[_0xd80e('0x12')][_0xd80e('0x6f')](this,_0x434d69[_0xd80e('0xdf')]);if(!_0xbfc5f4){return this['channel'][_0xd80e('0x2c')](_0x434d69,_0xd80e('0xe1'));}var _0x2e044f=this;_0x4fde62['forEach'](function(_0x71cd25,_0x3b5671){Object[_0xd80e('0xe2')](_0x71cd25)[_0xd80e('0xe3')](function(_0x3673ee){_0x2e044f[_0xd80e('0xf')][_0xd80e('0xa2')](util[_0xd80e('0x2a')](_0xd80e('0xe4'),_0xbfc5f4,_0x3b5671,_0x3673ee),_0x71cd25[_0x3673ee]);});});this[_0xd80e('0xf')][_0xd80e('0xa2')](util[_0xd80e('0x2a')](_0xd80e('0xe5'),_0xbfc5f4),_0x4fde62[_0xd80e('0xa1')]);return this['channel']['noop'](util['format']('variable\x20%s\x20set',_0xbfc5f4));};AGIVertices['prototype']['dial']=function(_0x74fe83){logger['debug'](util[_0xd80e('0x2a')](_0xd80e('0xe6'),_0x74fe83[_0xd80e('0xab')]));if(!this['isConfigured'](_0x74fe83['sip_id'])){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x74fe83,_0xd80e('0xe7'));}var _0xbbece9=this[_0xd80e('0x1e')][_0xd80e('0x6f')](this,_0x74fe83['sip_id']);if(!_0xbbece9){return this['channel'][_0xd80e('0x2c')](_0x74fe83,'no\x20user\x20found');}var _0x2d2f40=this[_0xd80e('0xf')][_0xd80e('0x54')](_0xd80e('0xe8'),[util[_0xd80e('0x2a')]('SIP/%s',_0xbbece9),_0x74fe83[_0xd80e('0x63')],_0x74fe83[_0xd80e('0xe9')],_0x74fe83['url']]);if(_0x2d2f40[_0xd80e('0xa6')]===-0x1){return _0x2d2f40;}return this[_0xd80e('0xf')][_0xd80e('0xad')](util['format'](_0xd80e('0xea'),_0xd80e('0xe8')));};AGIVertices[_0xd80e('0x18')][_0xd80e('0xeb')]=function(_0x18200a){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0xec'),_0x18200a[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0x18200a[_0xd80e('0x7a')])){return this['channel'][_0xd80e('0xad')](_0xd80e('0xed'));}if(!this['isConfigured'](_0x18200a[_0xd80e('0x59')])){return this[_0xd80e('0xf')][_0xd80e('0xad')]('no\x20text\x20configured');}this['channel'][_0xd80e('0xee')]=!![];this[_0xd80e('0x35')](_0x18200a);this[_0xd80e('0x3f')](_0x18200a[_0xd80e('0x59')],'in','','');this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0xef'),_0x18200a['text']));var _0x43ec6d=this[_0xd80e('0x79')]['sync'](this,_0x18200a);if(_0x43ec6d){for(var _0xdb5b45 in _0x43ec6d){if(_0x43ec6d[_0xd80e('0x98')](_0xdb5b45)){this['channel']['setVariable'](util[_0xd80e('0x2a')](_0xd80e('0xf0'),_0xdb5b45[_0xd80e('0x67')]()),_0x43ec6d[_0xdb5b45]);}}this[_0xd80e('0x3f')](_0x43ec6d['speech'],_0xd80e('0xf1'),_0xd80e('0xeb'),'');return this[_0xd80e('0xf')]['noop'](util[_0xd80e('0x2a')](_0xd80e('0xf2'),_0x43ec6d[_0xd80e('0xf3')]));}return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x18200a,_0xd80e('0xf4'));};AGIVertices[_0xd80e('0x18')]['dialogflowV2']=function(_0x56e277){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0xf5'),_0x56e277[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0x56e277[_0xd80e('0x7d')])){return this[_0xd80e('0xf')][_0xd80e('0xad')](_0xd80e('0xf6'));}if(!this[_0xd80e('0x86')](_0x56e277['client_email'])){return this[_0xd80e('0xf')][_0xd80e('0xad')]('no\x20client_email\x20configured');}if(!this['isConfigured'](_0x56e277[_0xd80e('0x7f')])){return this[_0xd80e('0xf')][_0xd80e('0xad')]('no\x20private_key\x20configured');}if(!this['isConfigured'](_0x56e277[_0xd80e('0x80')])){return this['channel'][_0xd80e('0xad')](_0xd80e('0xf7'));}if(!this[_0xd80e('0x86')](_0x56e277[_0xd80e('0x59')])){return this[_0xd80e('0xf')][_0xd80e('0xad')](_0xd80e('0xac'));}this[_0xd80e('0xf')]['bot']=!![];this['createSquareDetailsReport'](_0x56e277);this[_0xd80e('0x3f')](_0x56e277[_0xd80e('0x59')],'in','','');this[_0xd80e('0xf')][_0xd80e('0xad')](util['format'](_0xd80e('0xf8'),_0x56e277[_0xd80e('0x59')]));var _0x18fbe4=this[_0xd80e('0x7c')][_0xd80e('0x6f')](this,_0x56e277);if(_0x18fbe4){for(var _0x130703 in _0x18fbe4){if(_0x18fbe4[_0xd80e('0x98')](_0x130703)){if(_0x130703!==_0xd80e('0xf9')){this[_0xd80e('0xf')][_0xd80e('0xa2')](util['format']('DIALOGFLOW_%s',_0x130703[_0xd80e('0x67')]()),_0x18fbe4[_0x130703]);}}}this[_0xd80e('0x3f')](_0x18fbe4[_0xd80e('0xf3')],_0xd80e('0xf1'),'dialogflowV2',_0x18fbe4['providerResponse']);return this['channel'][_0xd80e('0xad')](util['format'](_0xd80e('0xfa'),_0x18fbe4[_0xd80e('0xf3')]));}return this[_0xd80e('0xf')]['error'](_0x56e277,_0xd80e('0xfb'));};AGIVertices['prototype'][_0xd80e('0xfc')]=function(_0x575722){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0xfd'),_0x575722[_0xd80e('0xab')]));if(!this['isConfigured'](_0x575722['ndauth_url'])){return this['channel']['noop'](_0xd80e('0xfe'));}if(!this[_0xd80e('0x86')](_0x575722[_0xd80e('0xff')])){return this[_0xd80e('0xf')][_0xd80e('0xad')]('no\x20username\x20configured');}if(!this['isConfigured'](_0x575722[_0xd80e('0x100')])){return this[_0xd80e('0xf')]['noop'](_0xd80e('0x101'));}if(!this[_0xd80e('0x86')](_0x575722['ndassistant_url'])){return this[_0xd80e('0xf')][_0xd80e('0xad')](_0xd80e('0xac'));}this['channel'][_0xd80e('0xee')]=!![];this[_0xd80e('0x35')](_0x575722);this['createSquareMessage'](_0x575722[_0xd80e('0x59')],'in','','');this[_0xd80e('0xf')]['noop'](util[_0xd80e('0x2a')](_0xd80e('0x102'),_0x575722[_0xd80e('0x59')]));var _0x2c7167=this[_0xd80e('0x81')][_0xd80e('0x6f')](this,_0x575722);if(_0x2c7167){for(var _0x538b09 in _0x2c7167){if(_0x2c7167['hasOwnProperty'](_0x538b09)){this[_0xd80e('0xf')]['setVariable'](util[_0xd80e('0x2a')](_0xd80e('0x103'),_0x538b09[_0xd80e('0x67')]()),_0x2c7167[_0x538b09]);}}this[_0xd80e('0x3f')](_0x2c7167[_0xd80e('0xf3')],'out',_0xd80e('0xfc'),'');if(_0x2c7167[_0xd80e('0x104')]){this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')]('Sestek\x20NDA\x20%s\x20file\x20created',_0x2c7167[_0xd80e('0x104')]));var _0x120878=this[_0xd80e('0xf')]['streamFile'](_0x2c7167[_0xd80e('0x104')]);try{fs[_0xd80e('0x105')](_0x2c7167['audiofile']+'.wav');}catch(_0x247ac0){logger[_0xd80e('0x2c')](_0x247ac0);}return _0x120878;}else{return this['channel'][_0xd80e('0xad')](util['format']('SestekNDA\x20Result\x20%s',_0x2c7167[_0xd80e('0xf3')]));}}return this['channel']['error'](_0x575722,'SestekNDA\x20is\x20unreachable');};AGIVertices[_0xd80e('0x18')][_0xd80e('0x106')]=function(_0x1c12e4){logger[_0xd80e('0x2e')](util['format'](_0xd80e('0x107'),_0x1c12e4[_0xd80e('0xab')]));return this[_0xd80e('0xf')]['noop'](_0xd80e('0x106'));};AGIVertices[_0xd80e('0x18')]['ext_dial']=function(_0x38600d){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x108'),_0x38600d[_0xd80e('0xab')]));var _0x1b26b7='';if(_0x38600d[_0xd80e('0x109')]){if(!this['isConfigured'](_0x38600d[_0xd80e('0x109')])){return this['channel'][_0xd80e('0x2c')](_0x38600d,'no\x20trunk\x20selected');}else{var _0x5618a5=parseInt(_0x38600d[_0xd80e('0x109')],0xa);if(isNaN(_0x5618a5)){_0x1b26b7=_0x38600d['trunk_id'];}else{_0x1b26b7=this[_0xd80e('0x10a')][_0xd80e('0x6f')](this,_0x38600d[_0xd80e('0x109')]);if(!_0x1b26b7){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x38600d,_0xd80e('0x10b'));}}}}else if(_0x38600d[_0xd80e('0x10c')]){_0x1b26b7=_0x38600d['trunk_name'];}else{return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x38600d,'no\x20trunk\x20selected');}var _0x4ea888=this[_0xd80e('0xf')][_0xd80e('0x54')]('DIAL',[util[_0xd80e('0x2a')](_0xd80e('0x10d'),_0x1b26b7,_0x38600d[_0xd80e('0xc8')]),_0x38600d[_0xd80e('0x63')],_0x38600d[_0xd80e('0xe9')],_0x38600d[_0xd80e('0x62')]]);if(_0x4ea888[_0xd80e('0xa6')]===-0x1){return _0x4ea888;}return this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0xea'),_0xd80e('0xe8')));};AGIVertices[_0xd80e('0x18')][_0xd80e('0x10e')]=function(_0x224875){logger['info'](util[_0xd80e('0x2a')]('Enter\x20in\x20FINALLY\x20(%s)\x20block',_0x224875[_0xd80e('0xab')]));return this[_0xd80e('0xf')][_0xd80e('0xad')](_0xd80e('0x10e'));};AGIVertices['prototype'][_0xd80e('0xd')]=function(_0x57058b){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x10f'),_0x57058b[_0xd80e('0xab')]));if(_0x57058b[_0xd80e('0x110')]===0x0){return this[_0xd80e('0xa8')](_0x57058b);}_0x57058b[_0xd80e('0x110')]-=0x1;if(!this['isConfigured'](_0x57058b[_0xd80e('0x111')])){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x57058b,_0xd80e('0x112'));}var _0x179ba7=this['getSound'][_0xd80e('0x6f')](this,_0x57058b['file_id']);if(!_0x179ba7){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x57058b,_0xd80e('0x113'));}if(!this[_0xd80e('0x86')](_0x57058b[_0xd80e('0xdf')])){return this['channel']['error'](_0xd80e('0xe0'));}var _0x2d9c37=this[_0xd80e('0xf')][_0xd80e('0x114')](_0x179ba7,_0x57058b[_0xd80e('0x115')],_0x57058b['maxdigit']);var _0x51b4eb=_0x2d9c37[_0xd80e('0xa6')]?_0x2d9c37[_0xd80e('0xa6')]['toString']():'';logger['info'](_0xd80e('0x116'),JSON[_0xd80e('0x72')](_0x2d9c37));if(_0x2d9c37[_0xd80e('0xa6')]===-0x1){this['createSquareDetailsReport'][_0xd80e('0x6f')](this,_0x57058b,_0x51b4eb);return _0x2d9c37;}else if(_0x2d9c37['extra']===_0xd80e('0x63')){_0x2d9c37['result']=_0x51b4eb[_0xd80e('0xa1')]>=parseInt(_0x57058b['mindigit'])?'x':'i';}else{_0x2d9c37['result']=_0x51b4eb['length']>=parseInt(_0x57058b[_0xd80e('0x117')])&&_0x51b4eb['length']<=parseInt(_0x57058b[_0xd80e('0x118')])?'x':'i';}var _0x317887=this['getVariable'][_0xd80e('0x6f')](this,_0x57058b[_0xd80e('0xdf')]);if(!_0x317887){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x57058b,_0xd80e('0xe1'));}this[_0xd80e('0xf')][_0xd80e('0xa2')](_0x317887,_0x51b4eb);if(this[_0xd80e('0x86')](_0x57058b['hiddendigitsnum'])){var _0x3f7c50=parseInt(_0x57058b['hiddendigitsnum'],0xa);var _0x208080=rs[_0xd80e('0x119')]({'charset':'*','length':_0x3f7c50});var _0x1c432a=_0x51b4eb[_0xd80e('0xa1')];if(_0x1c432a>0x0){if(_0x1c432a>_0x3f7c50){this['createSquareDetailsReport']['sync'](this,_0x57058b,_0x57058b[_0xd80e('0x11a')]==='first'?_0x208080+_0x51b4eb[_0xd80e('0x11b')](_0x3f7c50):_0x51b4eb['substr'](0x0,_0x1c432a-_0x3f7c50)+_0x208080);}else{this['createSquareDetailsReport'][_0xd80e('0x6f')](this,_0x57058b,rs[_0xd80e('0x119')]({'charset':'*','length':_0x1c432a}));}}else{this['createSquareDetailsReport'][_0xd80e('0x6f')](this,_0x57058b,'');}}else{this[_0xd80e('0x35')]['sync'](this,_0x57058b,_0x51b4eb);}return _0x2d9c37;};AGIVertices[_0xd80e('0x18')][_0xd80e('0xe')]=function(_0x300bba){logger['info'](util[_0xd80e('0x2a')]('Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block',_0x300bba[_0xd80e('0xab')]));return this[_0xd80e('0xd')](_0x300bba);};AGIVertices[_0xd80e('0x18')][_0xd80e('0x11c')]=function(_0x33b5f7){logger['info'](util[_0xd80e('0x2a')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x33b5f7[_0xd80e('0xab')]));this[_0xd80e('0x35')][_0xd80e('0x6f')](this,_0x33b5f7,_0x33b5f7['goalname']);return this['channel'][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x11d'),_0x33b5f7['goalname']));};AGIVertices[_0xd80e('0x18')][_0xd80e('0x11e')]=function(_0xb127f7){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x11f'),_0xb127f7[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0xb127f7[_0xd80e('0x89')])||!this[_0xd80e('0x86')](_0xb127f7[_0xd80e('0x8a')])){return this[_0xd80e('0xf')]['noop'](_0xd80e('0x120'));}if(!this[_0xd80e('0x86')](_0xb127f7[_0xd80e('0x59')])){return this[_0xd80e('0xf')][_0xd80e('0xad')](_0xd80e('0xac'));}this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x121'),_0xb127f7[_0xd80e('0x59')]));var _0x124167=this[_0xd80e('0x88')][_0xd80e('0x6f')](this,_0xb127f7);if(_0x124167){this[_0xd80e('0xf')]['noop'](util[_0xd80e('0x2a')]('aws\x20Polly\x20%s\x20file\x20created',_0x124167));var _0x442539=this[_0xd80e('0xf')][_0xd80e('0x122')](_0x124167);try{fs[_0xd80e('0x105')](_0x124167+_0xd80e('0x123'));}catch(_0x4f7354){logger[_0xd80e('0x2c')](_0x4f7354);}return _0x442539;}return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0xb127f7,'aws\x20Polly\x20is\x20unreachable');};AGIVertices['prototype']['awslex']=function(_0x448f5d){logger['info'](util['format']('Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block',_0x448f5d[_0xd80e('0xab')]));if(!this['isConfigured'](_0x448f5d['aws_access_key_id'])||!this[_0xd80e('0x86')](_0x448f5d[_0xd80e('0x8a')])){return this[_0xd80e('0xf')][_0xd80e('0xad')](_0xd80e('0x120'));}if(!this[_0xd80e('0x86')](_0x448f5d[_0xd80e('0x8f')])){return this[_0xd80e('0xf')]['noop'](_0xd80e('0x124'));}if(!this[_0xd80e('0x86')](_0x448f5d[_0xd80e('0x59')])){return this[_0xd80e('0xf')][_0xd80e('0xad')](_0xd80e('0xac'));}this[_0xd80e('0xf')][_0xd80e('0xee')]=!![];this[_0xd80e('0x35')](_0x448f5d);this[_0xd80e('0x3f')](_0x448f5d[_0xd80e('0x59')],'in','','');this[_0xd80e('0xf')]['noop'](util[_0xd80e('0x2a')](_0xd80e('0x125'),_0x448f5d[_0xd80e('0x59')]));var _0x1ee103=this[_0xd80e('0x8d')][_0xd80e('0x6f')](this,_0x448f5d);if(_0x1ee103){for(var _0x39ae4b in _0x1ee103){if(_0x1ee103['hasOwnProperty'](_0x39ae4b)&&_[_0xd80e('0x99')](_0x1ee103[_0x39ae4b])){this['channel']['setVariable'](util[_0xd80e('0x2a')](_0xd80e('0x126'),_0x39ae4b[_0xd80e('0x67')]()),_0x1ee103[_0x39ae4b]);}}if(_[_0xd80e('0x45')](_0x1ee103[_0xd80e('0x76')])){return this[_0xd80e('0xf')][_0xd80e('0xad')]('Amazon\x20Lex\x20ready\x20for\x20fulfillment');}else{this[_0xd80e('0x3f')](_0x1ee103[_0xd80e('0x76')],'out','amazonlex','');return this['channel']['noop'](util['format'](_0xd80e('0x127'),_0x1ee103[_0xd80e('0x76')]));}}return this[_0xd80e('0xf')]['error'](_0x448f5d,'Amazon\x20Lex\x20is\x20unreachable');};AGIVertices[_0xd80e('0x18')][_0xd80e('0x128')]=function(_0x570701){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')]('Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s',_0x570701[_0xd80e('0xab')],_0x570701[_0xd80e('0x63')]));if(!this['isConfigured'](_0x570701['key'])){return this[_0xd80e('0xf')][_0xd80e('0xad')](_0xd80e('0xed'));}var _0x55238e='wav';var _0x47bab9=util[_0xd80e('0x2a')](_0xd80e('0x129'),FILES_PATH,rs['generate'](0x4));var _0x2c8ff9=util[_0xd80e('0x2a')](_0xd80e('0xa0'),_0x47bab9,_0x55238e);var _0x3ed66b=!![];if(_0x570701['beep']===_0xd80e('0x12a')){_0x3ed66b=![];}var _0x78d588=this[_0xd80e('0xf')][_0xd80e('0x12b')](_0x47bab9,_0x55238e,_0x570701[_0xd80e('0x12c')],_0x570701['timeout'],undefined,_0x3ed66b);if(_0x78d588[_0xd80e('0xa6')]!==-0x1){this[_0xd80e('0xf')][_0xd80e('0xad')](util['format']('google\x20%s\x20file\x20created',_0x2c8ff9));var _0x1eaea5=this[_0xd80e('0x90')][_0xd80e('0x6f')](this,_0x570701,_0x2c8ff9);if(_0x1eaea5){for(var _0x25df19 in _0x1eaea5){if(_0x1eaea5[_0xd80e('0x98')](_0x25df19)){this[_0xd80e('0xf')][_0xd80e('0xa2')](util[_0xd80e('0x2a')](_0xd80e('0x12d'),_0x25df19[_0xd80e('0x67')]()),_0x1eaea5[_0x25df19]);}}return this[_0xd80e('0xf')]['noop'](util[_0xd80e('0x2a')](_0xd80e('0x12e'),JSON[_0xd80e('0x72')](_0x1eaea5)));}}return _0x78d588;};AGIVertices[_0xd80e('0x18')][_0xd80e('0x12f')]=function(_0x5299a0){logger['info'](util[_0xd80e('0x2a')](_0xd80e('0x130'),_0x5299a0[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0x5299a0[_0xd80e('0x93')])){return this[_0xd80e('0xf')][_0xd80e('0xad')](_0xd80e('0x131'));}if(!this[_0xd80e('0x86')](_0x5299a0['appsecret'])){return this[_0xd80e('0xf')][_0xd80e('0xad')](_0xd80e('0x132'));}var _0x5494f8='wav';var _0xe90144=util[_0xd80e('0x2a')](_0xd80e('0x129'),FILES_PATH,rs[_0xd80e('0x119')](0x4));var _0x235c35=util[_0xd80e('0x2a')](_0xd80e('0xa0'),_0xe90144,_0x5494f8);var _0x4d8655=!![];if(_0x5299a0[_0xd80e('0x133')]===_0xd80e('0x12a')){_0x4d8655=![];}var _0x51897b=this[_0xd80e('0xf')][_0xd80e('0x12b')](_0xe90144,_0x5494f8,_0x5299a0[_0xd80e('0x12c')],_0x5299a0[_0xd80e('0x63')],undefined,_0x4d8655);if(_0x51897b[_0xd80e('0xa6')]!==-0x1){this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x134'),_0x235c35));var _0x5114bb=this['tildeASR'][_0xd80e('0x6f')](this,_0x5299a0,_0x235c35);if(_0x5114bb){for(var _0x1d13bf in _0x5114bb){if(_0x5114bb['hasOwnProperty'](_0x1d13bf)){this[_0xd80e('0xf')][_0xd80e('0xa2')](util[_0xd80e('0x2a')](_0xd80e('0x135'),_0x1d13bf[_0xd80e('0x67')]()),_0x5114bb[_0x1d13bf]);}}return this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x136'),JSON[_0xd80e('0x72')](_0x5114bb)));}}return _0x51897b;};AGIVertices[_0xd80e('0x18')][_0xd80e('0x137')]=function(_0x4177db){logger[_0xd80e('0x2e')](util['format'](_0xd80e('0x138'),_0x4177db[_0xd80e('0xab')]));return this[_0xd80e('0xf')]['continueAt'](_0x4177db[_0xd80e('0x3a')],_0x4177db[_0xd80e('0x3b')],_0x4177db[_0xd80e('0x3c')]);};AGIVertices[_0xd80e('0x18')][_0xd80e('0x139')]=function(_0x4afcd1){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x13a'),_0x4afcd1['label']));if(!this[_0xd80e('0x86')](_0x4afcd1[_0xd80e('0x13b')])){return this['channel'][_0xd80e('0x2c')](_0x4afcd1,'no\x20condition\x20configured');}try{var _0x21e59e=eval(_0x4afcd1[_0xd80e('0x13b')])?_0xd80e('0x13c'):_0xd80e('0x13d');this[_0xd80e('0xf')]['noop'](util[_0xd80e('0x2a')]('EVAL\x20CONDITION\x20%s\x20%s',_0x4afcd1[_0xd80e('0x13b')],_0x21e59e));return{'code':0xc8,'result':_0x21e59e};}catch(_0x3a55b1){return{'code':0xc8,'result':_0xd80e('0x13d')};}};AGIVertices[_0xd80e('0x18')][_0xd80e('0x13e')]=function(_0x3f7daf){logger[_0xd80e('0x2e')](util['format']('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x3f7daf[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0x3f7daf[_0xd80e('0x13f')])){return this[_0xd80e('0xf')]['error'](_0x3f7daf,_0xd80e('0x140'));}var _0x2206db=this[_0xd80e('0x141')][_0xd80e('0x6f')](this,_0x3f7daf[_0xd80e('0x13f')]);if(!_0x2206db){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x3f7daf,_0xd80e('0x142'));}for(var _0x272004=0x0;_0x272004<_0x2206db['length'];_0x272004+=0x1){var _0x21b15d=this['channel']['getVariable'](util[_0xd80e('0x2a')](_0xd80e('0x143'),_0x2206db[_0x272004]));if(_0x21b15d[_0xd80e('0xa6')]===-0x1){return _0x21b15d;}logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x144'),_0x2206db[_0x272004],_0x21b15d[_0xd80e('0xa5')]));if(_0x21b15d['extra']==='true'){logger['info'](util[_0xd80e('0x2a')](_0xd80e('0x144'),_0x2206db[_0x272004],_0xd80e('0x13c')));this['channel']['noop'](util[_0xd80e('0x2a')](_0xd80e('0x144'),_0x2206db[_0x272004],_0xd80e('0x13c')));return{'code':0xc8,'result':_0xd80e('0x13c')};}else{logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x144'),_0x2206db[_0x272004],_0xd80e('0x13d')));this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x144'),_0x2206db[_0x272004],_0xd80e('0x13d')));}}return{'code':0xc8,'result':_0xd80e('0x13d')};};AGIVertices[_0xd80e('0x18')][_0xd80e('0x145')]=function(_0x24190f){logger[_0xd80e('0x2e')](util['format'](_0xd80e('0x146'),_0x24190f[_0xd80e('0xab')]));return this[_0xd80e('0xf')][_0xd80e('0x145')]();};AGIVertices[_0xd80e('0x18')][_0xd80e('0x147')]=function(_0x2067c3){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x148'),_0x2067c3[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0x2067c3[_0xd80e('0x7a')])){return this['channel'][_0xd80e('0xad')]('no\x20key\x20configured');}var _0x2ba287='wav';var _0x1d3f98=util['format'](_0xd80e('0x129'),FILES_PATH,rs[_0xd80e('0x119')](0x4));var _0x52d1d3=util[_0xd80e('0x2a')]('%s.%s',_0x1d3f98,_0x2ba287);var _0x4b55cb=!![];if(_0x2067c3['beep']===_0xd80e('0x12a')){_0x4b55cb=![];}var _0x54b864=this[_0xd80e('0xf')][_0xd80e('0x12b')](_0x1d3f98,_0x2ba287,_0x2067c3[_0xd80e('0x12c')],_0x2067c3[_0xd80e('0x63')],undefined,_0x4b55cb);if(_0x54b864[_0xd80e('0xa6')]!==-0x1){this[_0xd80e('0xf')]['noop'](util['format'](_0xd80e('0x149'),_0x52d1d3));var _0x3549dc=this['ispeechASR'][_0xd80e('0x6f')](this,_0x2067c3,_0x52d1d3);if(_0x3549dc){for(var _0x140f65 in _0x3549dc){if(_0x3549dc[_0xd80e('0x98')](_0x140f65)){this['channel'][_0xd80e('0xa2')](util['format']('ISPEECH_ASR_%s',_0x140f65[_0xd80e('0x67')]()),_0x3549dc[_0x140f65]);}}return this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x14a'),JSON[_0xd80e('0x72')](_0x3549dc)));}}return _0x54b864;};AGIVertices[_0xd80e('0x18')][_0xd80e('0x14b')]=function(_0xfd1b6e){logger['info'](util[_0xd80e('0x2a')](_0xd80e('0x14c'),_0xfd1b6e[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0xfd1b6e[_0xd80e('0x7a')])){return this[_0xd80e('0xf')][_0xd80e('0xad')]('no\x20key\x20configured');}if(!this[_0xd80e('0x86')](_0xfd1b6e['text'])){return this['channel'][_0xd80e('0xad')](_0xd80e('0xac'));}this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x14d'),_0xfd1b6e[_0xd80e('0x59')]));var _0x133b27=this[_0xd80e('0x82')]['sync'](this,_0xfd1b6e);if(_0x133b27){this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')]('ispeech\x20%s\x20file\x20created',_0x133b27));var _0x1ebea1=this['channel'][_0xd80e('0x122')](_0x133b27,_0xfd1b6e[_0xd80e('0x12c')]);try{fs[_0xd80e('0x105')](_0x133b27+_0xd80e('0x123'));}catch(_0x5bc0d9){logger['error'](_0x5bc0d9);}return _0x1ebea1;}return this[_0xd80e('0xf')]['error'](_0xfd1b6e,'ispeech\x20TTS\x20is\x20unreachable');};AGIVertices['prototype'][_0xd80e('0x14e')]=function(_0x392eee){logger['info'](util[_0xd80e('0x2a')](_0xd80e('0x14f'),_0x392eee[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0x392eee[_0xd80e('0x150')])){return this['channel'][_0xd80e('0x2c')](_0x392eee,_0xd80e('0x151'));}logger[_0xd80e('0x2e')](util['format'](_0xd80e('0x152'),this[_0xd80e('0xf')][_0xd80e('0x36')],_0x392eee[_0xd80e('0x150')]));var _0x1fec38=this[_0xd80e('0x52')]['sync'](this,_0x392eee[_0xd80e('0x150')]);if(_0x1fec38){logger['info'](util[_0xd80e('0x2a')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0xd80e('0x36')],_0x392eee[_0xd80e('0x150')]));this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x153'),this[_0xd80e('0xf')]['callerid'],_0x392eee['findBy']));return{'code':0xc8,'result':_0xd80e('0x154')};}else{logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0xd80e('0x36')],_0x392eee[_0xd80e('0x150')]));this[_0xd80e('0xf')][_0xd80e('0xad')](util['format'](_0xd80e('0x155'),this['channel'][_0xd80e('0x36')],_0x392eee[_0xd80e('0x150')]));return{'code':0xc8,'result':_0xd80e('0x156')};}};AGIVertices[_0xd80e('0x18')][_0xd80e('0x157')]=function(_0x376381){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x158'),_0x376381['label']));if(!this[_0xd80e('0x86')](_0x376381[_0xd80e('0x150')])){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x376381,_0xd80e('0x151'));}logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x152'),this[_0xd80e('0xf')]['callerid'],_0x376381['findBy']));var _0x3c2130=this[_0xd80e('0x4e')][_0xd80e('0x6f')](this,_0x376381[_0xd80e('0x150')]);if(_0x3c2130){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x153'),this[_0xd80e('0xf')][_0xd80e('0x36')],_0x376381[_0xd80e('0x150')]));this['channel'][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x153'),this[_0xd80e('0xf')]['callerid'],_0x376381[_0xd80e('0x150')]));return{'code':0xc8,'result':_0xd80e('0x154')};}else{logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x155'),this['channel'][_0xd80e('0x36')],_0x376381[_0xd80e('0x150')]));this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x155'),this[_0xd80e('0xf')][_0xd80e('0x36')],_0x376381[_0xd80e('0x150')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xd80e('0x18')]['math']=function(_0x593271){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x159'),_0x593271[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0x593271[_0xd80e('0x15a')])){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x593271,_0xd80e('0x15b'));}this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x15c'),_0x593271['operation']));var _0x6d2532=eval(_0x593271[_0xd80e('0x15a')]);if(!this['isConfigured'](_0x593271[_0xd80e('0xdf')])){return this[_0xd80e('0xf')]['noop'](_0xd80e('0xe0'));}var _0x485131=this[_0xd80e('0x12')][_0xd80e('0x6f')](this,_0x593271[_0xd80e('0xdf')]);if(!_0x485131){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x593271,_0xd80e('0xe1'));}if(_[_0xd80e('0x9e')](_0x6d2532)){var _0x4899b3=this;_0x6d2532['forEach'](function(_0x3d868c,_0x1818ed){_0x4899b3[_0xd80e('0xf')][_0xd80e('0xa2')](util['format'](_0xd80e('0x15d'),_0x485131,_0x1818ed),_0x3d868c);});return this[_0xd80e('0xf')][_0xd80e('0xad')](util['format'](_0xd80e('0x15e'),_0x485131));}else{return this[_0xd80e('0xf')][_0xd80e('0xa2')](_0x485131,_0x6d2532);}};AGIVertices[_0xd80e('0x18')][_0xd80e('0xc')]=function(_0x34c852){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x34c852[_0xd80e('0xab')]));if(_0x34c852['retry']===0x0){return this['maxRetry'](_0x34c852);}_0x34c852['retry']-=0x1;if(!this[_0xd80e('0x86')](_0x34c852['file_id'])){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x34c852,_0xd80e('0x112'));}var _0x41ee3c=this[_0xd80e('0x15f')][_0xd80e('0x6f')](this,_0x34c852['file_id']);if(!_0x41ee3c){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x34c852,_0xd80e('0x113'));}var _0x1b5ca0=this[_0xd80e('0xf')][_0xd80e('0x114')](_0x41ee3c,_0x34c852[_0xd80e('0x115')],_0x34c852[_0xd80e('0x160')]);var _0x333296=_0x1b5ca0[_0xd80e('0xa6')];if(_0x1b5ca0[_0xd80e('0xa6')]===-0x1){this[_0xd80e('0x35')][_0xd80e('0x6f')](this,_0x34c852,'-1');return _0x1b5ca0;}else if(_0x1b5ca0[_0xd80e('0xa5')]===_0xd80e('0x63')){_0x1b5ca0[_0xd80e('0xa6')]=_0x1b5ca0[_0xd80e('0xa6')][_0xd80e('0xa1')]>0x0?_0x1b5ca0[_0xd80e('0xa6')]:'t';}else if(_['isEmpty'](_0x1b5ca0[_0xd80e('0xa6')])){_0x1b5ca0['result']='#';_0x333296='#';}if(!this['isConfigured'](_0x34c852[_0xd80e('0xdf')])){this[_0xd80e('0xf')]['noop'](_0xd80e('0xe0'));}else{var _0x35117c=this[_0xd80e('0x12')]['sync'](this,_0x34c852[_0xd80e('0xdf')]);if(!_0x35117c){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x34c852,_0xd80e('0xe1'));}this[_0xd80e('0xf')]['setVariable'](_0x35117c,_0x333296);}this['createSquareDetailsReport']['sync'](this,_0x34c852,_0x333296);return _0x1b5ca0;};AGIVertices[_0xd80e('0x18')][_0xd80e('0xad')]=function(_0x44595f){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x161'),_0x44595f[_0xd80e('0xab')]));return this[_0xd80e('0xf')][_0xd80e('0xad')](_0x44595f[_0xd80e('0x162')]||_0x44595f[_0xd80e('0xab')]);};AGIVertices[_0xd80e('0x18')][_0xd80e('0x163')]=function(_0x47a391){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x164'),_0x47a391['label']));if(!this[_0xd80e('0x86')](_0x47a391[_0xd80e('0x150')])){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x47a391,'no\x20find\x20by\x20configured');}logger[_0xd80e('0x2e')](util['format'](_0xd80e('0x152'),this[_0xd80e('0xf')][_0xd80e('0x36')],_0x47a391[_0xd80e('0x150')]));var _0x59e6b3=this[_0xd80e('0x165')][_0xd80e('0x6f')](this,_0x47a391[_0xd80e('0x166')]);var _0x4a42f3=this[_0xd80e('0x4b')]['sync'](this,_0x47a391[_0xd80e('0x150')],_0x59e6b3);if(_0x4a42f3){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x153'),this[_0xd80e('0xf')][_0xd80e('0x36')],_0x47a391['findBy']));this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x153'),this[_0xd80e('0xf')][_0xd80e('0x36')],_0x47a391['findBy']));return{'code':0xc8,'result':_0xd80e('0x154')};}else{logger['info'](util['format'](_0xd80e('0x155'),this['channel'][_0xd80e('0x36')],_0x47a391['findBy']));this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xd80e('0xf')][_0xd80e('0x36')],_0x47a391[_0xd80e('0x150')]));return{'code':0xc8,'result':_0xd80e('0x156')};}};AGIVertices[_0xd80e('0x18')][_0xd80e('0x167')]=function(_0x7d24c0){logger[_0xd80e('0x2e')](util['format'](_0xd80e('0x168'),_0x7d24c0[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0x7d24c0['file_id'])){return this['channel']['error'](_0x7d24c0,_0xd80e('0x112'));}var _0x29945e=this[_0xd80e('0x15f')]['sync'](this,_0x7d24c0[_0xd80e('0x111')]);if(!_0x29945e){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x7d24c0,_0xd80e('0x113'));}var _0xe5e085=this[_0xd80e('0xf')]['exec'](_0xd80e('0x169'),[_0x29945e,_0x7d24c0[_0xd80e('0xe9')]]);if(_0xe5e085[_0xd80e('0xa6')]===-0x1){return _0xe5e085;}return this[_0xd80e('0xf')][_0xd80e('0xad')](util['format'](_0xd80e('0xcc'),_0xd80e('0x169'),_0x29945e));};AGIVertices['prototype']['queue']=function(_0x37b83b){logger[_0xd80e('0x2e')](util['format'](_0xd80e('0x16a'),_0x37b83b[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0x37b83b[_0xd80e('0x16b')])){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x37b83b,_0xd80e('0x16c'));}var _0xd6c8dc='';var _0x4b96ac=parseInt(_0x37b83b[_0xd80e('0x16b')],0xa);if(isNaN(_0x4b96ac)){_0xd6c8dc=_0x37b83b[_0xd80e('0x16b')];}else{_0xd6c8dc=this[_0xd80e('0x16d')][_0xd80e('0x6f')](this,_0x37b83b[_0xd80e('0x16b')]);if(!_0xd6c8dc){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x37b83b,'no\x20queue\x20found');}}var _0xaef4e8='';if(this['isConfigured'](_0x37b83b[_0xd80e('0x111')])){var _0x59023f=this[_0xd80e('0x15f')][_0xd80e('0x6f')](this,_0x37b83b[_0xd80e('0x111')]);if(_0x59023f){_0xaef4e8=_0x59023f;}}this[_0xd80e('0x35')][_0xd80e('0x6f')](this,_0x37b83b,_0xd6c8dc);if(_0x37b83b[_0xd80e('0xe9')][_0xd80e('0x16e')]('x')<0x0){_0x37b83b[_0xd80e('0xe9')]+='x';}if(_0x37b83b[_0xd80e('0xe9')][_0xd80e('0x16e')]('X')<0x0){_0x37b83b['opts']+='X';}this['channel'][_0xd80e('0xa2')](_0xd80e('0x16f'),_0xd6c8dc?_0xd6c8dc[_0xd80e('0x170')]():'');var _0xab6f1=this[_0xd80e('0xf')]['exec'](_0xd80e('0x171'),[_0xd6c8dc,_0x37b83b[_0xd80e('0xe9')],_0x37b83b[_0xd80e('0x62')],_0xaef4e8,_0x37b83b[_0xd80e('0x63')],_0x37b83b[_0xd80e('0x7')],_0x37b83b[_0xd80e('0x172')],_0x37b83b['gosub'],'',_0x37b83b[_0xd80e('0x173')]]);if(_0xab6f1[_0xd80e('0xa6')]===-0x1){return _0xab6f1;}return this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0xcc'),_0xd80e('0x171'),_0xd6c8dc));};AGIVertices[_0xd80e('0x18')]['record']=function(_0x384e13){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x174'),_0x384e13['label']));var _0x20f42c=_0x384e13['recordingFormat']||'wav';var _0x54d6cf=util[_0xd80e('0x2a')](_0xd80e('0x175'),this['channel'][_0xd80e('0x38')],rs['generate'](0x5));var _0x12566e=util[_0xd80e('0x2a')](_0xd80e('0x176'),FILES_PATH,_0x54d6cf,_0x20f42c);var _0x151e06=util[_0xd80e('0x2a')](_0xd80e('0x129'),FILES_PATH,_0x54d6cf);this[_0xd80e('0x37')][_0xd80e('0x6f')](this,_0x384e13,_0x54d6cf,_0x12566e);this[_0xd80e('0xf')][_0xd80e('0xa2')](_0xd80e('0x177'),_0x54d6cf);logger[_0xd80e('0x2e')]('Recording\x20%s\x20%s\x20%s\x20%s',_0x151e06,_0x20f42c,_0x384e13['escape_digits'],_0x384e13[_0xd80e('0x63')]);return this['channel']['recordFile'](_0x151e06,_0x20f42c,_0x384e13[_0xd80e('0x178')],_0x384e13[_0xd80e('0x63')],undefined,!![]);};AGIVertices[_0xd80e('0x18')][_0xd80e('0x179')]=function(_0x5af4de){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x17a'),_0x5af4de[_0xd80e('0xab')]));if(!this['isConfigured'](_0x5af4de[_0xd80e('0x62')])){return this[_0xd80e('0xf')][_0xd80e('0xad')](_0xd80e('0x17b'));}var _0x1e7229=this['restAPI'][_0xd80e('0x6f')](this,_0x5af4de);logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x17c'),util[_0xd80e('0x17d')](_0x1e7229,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x5af4de['variable_id'])){return this[_0xd80e('0xf')][_0xd80e('0xad')](_0xd80e('0x17e'));}var _0xea8a1f=this[_0xd80e('0x12')][_0xd80e('0x6f')](this,_0x5af4de[_0xd80e('0xdf')]);if(!_0xea8a1f){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x5af4de,_0xd80e('0xe1'));}this[_0xd80e('0xf')][_0xd80e('0xa2')](util[_0xd80e('0x2a')](_0xd80e('0x17f'),_0xea8a1f),_0x1e7229[_0xd80e('0x74')]?_0x1e7229[_0xd80e('0x74')]:_0xd80e('0x180'));this[_0xd80e('0xf')][_0xd80e('0xa2')](util[_0xd80e('0x2a')]('%s_STATUS_MESSAGE',_0xea8a1f),_0x1e7229[_0xd80e('0x75')]?_0x1e7229['statusMessage']:'OK');if(_0x1e7229[_0xd80e('0x68')]){try{this[_0xd80e('0x9f')](_0x1e7229[_0xd80e('0x68')],_0xea8a1f);}catch(_0x5d7cef){logger[_0xd80e('0x2c')](util[_0xd80e('0x2a')](_0xd80e('0x181'),_0xea8a1f));}}return this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x182'),_0xea8a1f));};AGIVertices[_0xd80e('0x18')][_0xd80e('0x183')]=function(_0x307dac){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x184'),_0x307dac[_0xd80e('0xab')]));return this[_0xd80e('0xf')][_0xd80e('0x185')](_0x307dac[_0xd80e('0x186')][_0xd80e('0x55')](/\s+/g,''),_0x307dac['escape_digits']);};AGIVertices[_0xd80e('0x18')][_0xd80e('0x187')]=function(_0x46e352){logger[_0xd80e('0x2e')](util['format'](_0xd80e('0x188'),_0x46e352[_0xd80e('0xab')]));return this['channel']['sayNumber'](_0x46e352['number'][_0xd80e('0x55')](/\s+/g,''),_0x46e352['escape_digits']);};AGIVertices[_0xd80e('0x18')][_0xd80e('0x189')]=function(_0x1213bb){logger['info'](util[_0xd80e('0x2a')](_0xd80e('0x18a'),_0x1213bb['label']));return this[_0xd80e('0xf')]['sayPhonetic'](_0x1213bb[_0xd80e('0x59')],_0x1213bb[_0xd80e('0x178')]);};AGIVertices[_0xd80e('0x18')][_0xd80e('0x18b')]=function(_0x9dcab4){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x18c'),_0x9dcab4[_0xd80e('0xab')]));if(!this['isConfigured'](_0x9dcab4[_0xd80e('0x18d')])){return this[_0xd80e('0xf')]['noop'](_0xd80e('0x18e'));}var _0x16a3ea=this[_0xd80e('0x22')]['sync'](this,_0x9dcab4['account_id']);if(!_0x16a3ea||!_0x16a3ea[_0xd80e('0x18f')]){return this[_0xd80e('0xf')]['error'](_0x9dcab4,'no\x20mail\x20account\x20found');}var _0x65c65d={'from':util['format'](_0xd80e('0x190'),_0x16a3ea[_0xd80e('0x15')],_0x16a3ea['email']||_0x16a3ea['Smtp'][_0xd80e('0x191')]),'to':_0x9dcab4['to']||'','cc':_0x9dcab4['cc']||'','bcc':_0x9dcab4[_0xd80e('0x192')]||'','subject':_0x9dcab4['subject'],'html':_0x9dcab4[_0xd80e('0x59')],'text':_0x9dcab4['text']};if(this[_0xd80e('0x86')](_0x9dcab4[_0xd80e('0x193')])){}logger[_0xd80e('0x194')](_0xd80e('0x195'),JSON['stringify'](_0x65c65d));this[_0xd80e('0x35')][_0xd80e('0x6f')](this,_0x9dcab4,_0x9dcab4[_0xd80e('0x18d')]);this['channel'][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x196'),_0x16a3ea[_0xd80e('0x15')]));this[_0xd80e('0x24')][_0xd80e('0x6f')](this,_0x16a3ea[_0xd80e('0x197')],_0x65c65d);return this[_0xd80e('0xf')][_0xd80e('0xad')](_0xd80e('0x198'));};AGIVertices['prototype'][_0xd80e('0x199')]=function(_0x53a92a){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x19a'),_0x53a92a[_0xd80e('0xab')]));return this[_0xd80e('0xf')][_0xd80e('0xad')]('SENDFAX\x20block\x20not\x20implemented');};AGIVertices[_0xd80e('0x18')][_0xd80e('0x19b')]=function(_0x20fc28){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')]('Enter\x20in\x20SENDSMS\x20(%s)\x20block',_0x20fc28[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0x20fc28[_0xd80e('0x19c')])){return this[_0xd80e('0xf')][_0xd80e('0xad')](_0xd80e('0x19d'));}var _0x6b2d31=this[_0xd80e('0x33')][_0xd80e('0x6f')](this,_0x20fc28[_0xd80e('0x19c')]);if(!_0x6b2d31){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x20fc28,_0xd80e('0x19e'));}var _0x20d1cc={'body':_0x20fc28['sms_text'],'phone':_0x20fc28['to']||'','SmsAccountId':_0x6b2d31['id']};logger[_0xd80e('0x194')](_0xd80e('0x19f'),JSON['stringify'](_0x20d1cc));this[_0xd80e('0x35')][_0xd80e('0x6f')](this,_0x20fc28,_0x20fc28[_0xd80e('0x19c')]);this['channel'][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x1a0'),_0x6b2d31['name']));this[_0xd80e('0x34')][_0xd80e('0x6f')](this,_0x20d1cc);return this[_0xd80e('0xf')]['noop'](_0xd80e('0x1a1'));};AGIVertices[_0xd80e('0x18')][_0xd80e('0x1a2')]=function(_0x489672){logger['info'](util[_0xd80e('0x2a')]('Enter\x20in\x20SET\x20(%s)\x20block',_0x489672[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0x489672[_0xd80e('0xdf')])){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x489672,_0xd80e('0x1a3'));}var _0x34d6b6=this[_0xd80e('0x12')][_0xd80e('0x6f')](this,_0x489672['variable_id']);if(!_0x34d6b6){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x489672,_0xd80e('0xe1'));}return this['channel'][_0xd80e('0xa2')](_0x34d6b6,_0x489672[_0xd80e('0x1a4')]);};AGIVertices[_0xd80e('0x18')][_0xd80e('0x1a5')]=function(_0x16a8c2){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x1a6'),_0x16a8c2[_0xd80e('0xab')]));this['channel'][_0xd80e('0xad')](_0xd80e('0x1a7'));if(_0x16a8c2[_0xd80e('0xbd')]===_0xd80e('0x1a8')){this[_0xd80e('0xf')]['noop'](_0xd80e('0x1a9'));return this[_0xd80e('0xf')]['answer']();}return this['channel'][_0xd80e('0xad')](_0xd80e('0x1aa'));};AGIVertices[_0xd80e('0x18')][_0xd80e('0x1ab')]=function(_0x420418){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x1ac'),_0x420418['label']));if(!this[_0xd80e('0x86')](_0x420418[_0xd80e('0x1ad')])){return this['channel'][_0xd80e('0x2c')](_0x420418,_0xd80e('0x1ae'));}var _0x1f2977=this['getSquareProject']['sync'](this,_0x420418[_0xd80e('0x1ad')]);if(!this[_0xd80e('0x86')](_0x1f2977)){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x420418,util[_0xd80e('0x2a')]('no\x20subproject\x20found\x20with\x20id\x20%d',_0x420418[_0xd80e('0x1ad')]));}if(_0x1f2977===this[_0xd80e('0xf')]['arg_1']){return this['channel']['error'](_0x420418,'project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project');}this[_0xd80e('0x35')][_0xd80e('0x6f')](this,_0x420418,_0x1f2977);var _0x2c28ee=this[_0xd80e('0xf')][_0xd80e('0x54')](_0xd80e('0x1af'),util['format']('agi://%s/square,\x22%s\x22,\x22%s\x22',config[_0xd80e('0x7')][_0xd80e('0x1b0')]||_0xd80e('0x1b1'),_0x1f2977,this['channel'][_0xd80e('0x1b2')]));if(_0x2c28ee[_0xd80e('0xa6')]===-0x1){return _0x2c28ee;}return this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0xcc'),_0xd80e('0x1af'),_0x1f2977));};AGIVertices[_0xd80e('0x18')][_0xd80e('0x1b3')]=function(_0x3eb14a){logger['info'](util[_0xd80e('0x2a')](_0xd80e('0x1b4'),_0x3eb14a['label']));var _0x4bf9c5=this[_0xd80e('0x53')][_0xd80e('0x6f')](this,_0x3eb14a[_0xd80e('0xbb')]);this[_0xd80e('0x35')][_0xd80e('0x6f')](this,_0x3eb14a,_0x3eb14a[_0xd80e('0xbb')]);if(this[_0xd80e('0x86')](_0x3eb14a[_0xd80e('0xdf')])){var _0x536eb4=this[_0xd80e('0x12')][_0xd80e('0x6f')](this,_0x3eb14a['variable_id']);if(_0x536eb4){this[_0xd80e('0xf')]['setVariable'](_0x536eb4,_0x4bf9c5);return this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x1b5'),_0x3eb14a[_0xd80e('0xbb')],_0x536eb4));}}return this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x1b6'),_0x3eb14a[_0xd80e('0xbb')]));};AGIVertices[_0xd80e('0x18')][_0xd80e('0x1b7')]=function(_0x22888b){logger[_0xd80e('0x2e')](util['format'](_0xd80e('0x1b8'),_0x22888b[_0xd80e('0xab')]));_0x22888b[_0xd80e('0x59')]=_0x22888b[_0xd80e('0x59')][_0xd80e('0x55')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xd80e('0x86')](_0x22888b['apiKey'])){return this['channel'][_0xd80e('0xad')](_0xd80e('0x1b9'));}if(!this[_0xd80e('0x86')](_0x22888b['text'])){return this['channel'][_0xd80e('0xad')](_0xd80e('0xac'));}this[_0xd80e('0xf')]['noop'](util[_0xd80e('0x2a')]('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0x22888b['text']));var _0x50c419=this[_0xd80e('0x56')][_0xd80e('0x6f')](this,_0x22888b);if(_0x50c419){this[_0xd80e('0xf')]['noop'](util[_0xd80e('0x2a')]('Google\x20Cloud\x20TTS\x20%s\x20file\x20created',_0x50c419));var _0x4a9bdc=this[_0xd80e('0xf')][_0xd80e('0x122')](_0x50c419);try{fs['unlink'](_0x50c419+'.wav');}catch(_0x354346){logger[_0xd80e('0x2c')](_0x354346);}return _0x4a9bdc;}return this['channel'][_0xd80e('0x2c')](_0x22888b,_0xd80e('0x1ba'));};AGIVertices[_0xd80e('0x18')][_0xd80e('0x1bb')]=function(_0x358a41){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x1bc'),_0x358a41[_0xd80e('0xab')]));_0x358a41[_0xd80e('0x59')]=_0x358a41[_0xd80e('0x59')][_0xd80e('0x55')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xd80e('0x86')](_0x358a41[_0xd80e('0x59')])){return this[_0xd80e('0xf')][_0xd80e('0xad')]('no\x20text\x20configured');}this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x1bd'),_0x358a41[_0xd80e('0x59')]));var _0x52b4d3=this[_0xd80e('0x5f')][_0xd80e('0x6f')](this,_0x358a41);if(_0x52b4d3){this['channel'][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x1be'),_0x52b4d3));var _0x34c231=this[_0xd80e('0xf')][_0xd80e('0x122')](_0x52b4d3);try{fs[_0xd80e('0x105')](_0x52b4d3+_0xd80e('0x123'));}catch(_0x5c25e1){logger[_0xd80e('0x2c')](_0x5c25e1);}return _0x34c231;}return this['channel'][_0xd80e('0x2c')](_0x358a41,_0xd80e('0x1bf'));};AGIVertices[_0xd80e('0x18')][_0xd80e('0x1c0')]=function(_0x31fd5c){logger[_0xd80e('0x2e')](util['format'](_0xd80e('0x1c1'),_0x31fd5c['label']));if(!this[_0xd80e('0x86')](_0x31fd5c[_0xd80e('0x150')])){return this[_0xd80e('0xf')]['error'](_0x31fd5c,_0xd80e('0x151'));}logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x152'),this[_0xd80e('0xf')]['callerid'],_0x31fd5c[_0xd80e('0x150')]));var _0x33d3e7=this['agentUnpause'][_0xd80e('0x6f')](this,_0x31fd5c['findBy']);if(_0x33d3e7){logger['info'](util[_0xd80e('0x2a')](_0xd80e('0x153'),this[_0xd80e('0xf')][_0xd80e('0x36')],_0x31fd5c[_0xd80e('0x150')]));this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x153'),this['channel'][_0xd80e('0x36')],_0x31fd5c[_0xd80e('0x150')]));return{'code':0xc8,'result':_0xd80e('0x154')};}else{logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x155'),this[_0xd80e('0xf')][_0xd80e('0x36')],_0x31fd5c['findBy']));this[_0xd80e('0xf')][_0xd80e('0xad')](util[_0xd80e('0x2a')](_0xd80e('0x155'),this[_0xd80e('0xf')]['callerid'],_0x31fd5c['findBy']));return{'code':0xc8,'result':_0xd80e('0x156')};}};AGIVertices[_0xd80e('0x18')][_0xd80e('0x1c2')]=function(_0x270b6c){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x1c3'),_0x270b6c[_0xd80e('0xab')]));var _0x286983=this['channel']['exec'](_0xd80e('0x1c4'),[_0x270b6c['mailbox'],_0x270b6c[_0xd80e('0x78')]]);if(_0x286983[_0xd80e('0xa6')]===-0x1){return _0x286983;}return this[_0xd80e('0xf')]['noop'](util['format']('Executed\x20command\x20%s\x20%s',_0xd80e('0x1c4'),_0x270b6c[_0xd80e('0x1c5')]));};AGIVertices[_0xd80e('0x18')][_0xd80e('0x1c6')]=function(_0x1d7724){logger[_0xd80e('0x2e')](util[_0xd80e('0x2a')](_0xd80e('0x1c7'),_0x1d7724[_0xd80e('0xab')]));if(!this[_0xd80e('0x86')](_0x1d7724[_0xd80e('0xdf')])){return this[_0xd80e('0xf')][_0xd80e('0x2c')](_0x1d7724,'no\x20variable\x20selected');}var _0x31ca6f=this[_0xd80e('0x12')][_0xd80e('0x6f')](this,_0x1d7724[_0xd80e('0xdf')]);if(!_0x31ca6f){return this['channel'][_0xd80e('0x2c')](_0x1d7724,_0xd80e('0xe1'));}var _0x53b256=this[_0xd80e('0xf')][_0xd80e('0x12')](_0x31ca6f);return{'code':0xc8,'result':_0x53b256[_0xd80e('0xa5')]?_0x53b256['extra']:'-'};};String['prototype'][_0xd80e('0xa4')]=function(_0x5746d3,_0x452659){return this[_0xd80e('0xa3')](_0x5746d3)['join'](_0x452659);};module[_0xd80e('0x1c8')]=AGIVertices;
\ No newline at end of file
index 6c5364e..63d865a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03f3=['[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','../ami','../../../config/logger','voiceQueues','agents','timers','channels','agentconnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','queue','ACW','name','Action','QueuePause','then','voicePause','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','update','info','[%s][UPDATE][ACWTIME:%s]','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','mandatoryDisposition','interface','[ACW][syncAgentConnect]\x20%s','acw','[ACW][syncAgentConnectPreview]\x20%s','isUndefined'];(function(_0x5b6f68,_0x1b0424){var _0x4b464e=function(_0x571e39){while(--_0x571e39){_0x5b6f68['push'](_0x5b6f68['shift']());}};_0x4b464e(++_0x1b0424);}(_0x03f3,0x1c9));var _0x303f=function(_0x19561b,_0x2dccef){_0x19561b=_0x19561b-0x0;var _0x135586=_0x03f3[_0x19561b];return _0x135586;};'use strict';var util=require('util');var _=require(_0x303f('0x0'));var moment=require(_0x303f('0x1'));var ami=require(_0x303f('0x2'));var logger=require(_0x303f('0x3'))('acw');var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');function Acw(_0x2a21aa){this[_0x303f('0x4')]=_0x2a21aa[_0x303f('0x4')];this[_0x303f('0x5')]=_0x2a21aa[_0x303f('0x5')];this[_0x303f('0x6')]=_0x2a21aa[_0x303f('0x6')];this[_0x303f('0x7')]={};ami['on'](_0x303f('0x8'),this['syncAgentConnect'][_0x303f('0x9')](this));ami['on'](_0x303f('0xa'),this[_0x303f('0xb')][_0x303f('0x9')](this));ami['on'](_0x303f('0xc'),this[_0x303f('0xd')][_0x303f('0x9')](this));ami['on'](_0x303f('0xe'),this[_0x303f('0xf')][_0x303f('0x9')](this));ami['on'](_0x303f('0x10'),this[_0x303f('0x11')][_0x303f('0x9')](this));ami['on']('blindtransfer',this[_0x303f('0x12')][_0x303f('0x9')](this));ami['on'](_0x303f('0x13'),this[_0x303f('0x14')][_0x303f('0x9')](this));}function getDiff(_0x20bf87){var _0x373c24=moment()[_0x303f('0x15')](0x0);var _0x16a64e=moment(_0x20bf87)[_0x303f('0x15')](0x0);return _0x373c24[_0x303f('0x16')](_0x16a64e,_0x303f('0x17'));}Acw[_0x303f('0x18')][_0x303f('0x19')]=function(_0x433c1c){try{var _0x419502=this;var _0xff9ec4=this[_0x303f('0x7')][_0x433c1c]['interface'];var _0x4e51a0=this['channels'][_0x433c1c][_0x303f('0x1a')];var _0x5efed4=this[_0x303f('0x4')][_0x4e51a0];var _0x21cc2f=![];var _0x450291=_0x303f('0x1b');if(_0x5efed4['mandatoryDisposition']){if(_0x5efed4['mandatoryDispositionPause'][_0x303f('0x1c')]){_0x21cc2f=!![];_0x450291=_0x5efed4['mandatoryDispositionPause'][_0x303f('0x1c')];}}ami[_0x303f('0x1d')]({'action':_0x303f('0x1e'),'interface':_0xff9ec4,'paused':!![],'reason':_0x450291})[_0x303f('0x1f')](function(_0x54889d){if(_0x419502[_0x303f('0x5')][_0xff9ec4]){return RpcUser['getAgent'](_0x419502['agents'][_0xff9ec4]['id'])[_0x303f('0x1f')](function(_0x9f0804){if(_0x9f0804&&!_0x9f0804[_0x303f('0x20')]){logger['info'](_0x303f('0x21'),_0x433c1c,_0xff9ec4,_0x4e51a0);var _0x467830=_0x419502[_0x303f('0x7')][_0x433c1c][_0x303f('0x22')]&&_0x419502['channels'][_0x433c1c][_0x303f('0x23')]?_0x419502[_0x303f('0x7')][_0x433c1c][_0x303f('0x23')]:_0x433c1c;return RpcUser[_0x303f('0x24')](_0x419502['agents'][_0xff9ec4],_0x450291,_0x467830)[_0x303f('0x1f')](function(_0x227bdb){if(!_0x21cc2f){_0x419502[_0x303f('0x6')][_0xff9ec4]={};logger['info'](_0x303f('0x25'),_0x433c1c,_0x419502['voiceQueues'][_0x4e51a0][_0x303f('0x26')],_0xff9ec4,_0x4e51a0);_0x419502['timers'][_0xff9ec4][_0x303f('0x27')]=setTimeout(_0x419502[_0x303f('0x28')][_0x303f('0x9')](_0x419502,_0xff9ec4),_0x419502[_0x303f('0x4')][_0x4e51a0]['acwTimeout']*0x3e8);_0x419502['timers'][_0xff9ec4][_0x303f('0x29')]=moment()['format'](_0x303f('0x2a'));_0x419502[_0x303f('0x6')][_0xff9ec4][_0x303f('0x2b')]=_0x433c1c;_0x419502['timers'][_0xff9ec4]['queue']=_0x4e51a0;_0x419502[_0x303f('0x6')][_0xff9ec4][_0x303f('0x2c')]=function(){var _0x9f5041=getDiff(_0x419502[_0x303f('0x6')][_0xff9ec4][_0x303f('0x29')]);clearTimeout(_0x419502[_0x303f('0x6')][_0xff9ec4]['timer']);_0x419502[_0x303f('0x6')][_0xff9ec4][_0x303f('0x27')]=![];RpcVoiceAgentReport[_0x303f('0x2d')]({'acwtime':_0x9f5041},_0x419502[_0x303f('0x6')][_0xff9ec4][_0x303f('0x2b')],_0xff9ec4)[_0x303f('0x1f')](function(_0x41e4e3){logger[_0x303f('0x2e')](_0x303f('0x2f'),_0x433c1c,_0x9f5041,_0x41e4e3);})['catch'](function(_0xd437de){logger[_0x303f('0x30')](_0x303f('0x31'),_0x433c1c,_0xd437de);});delete _0x419502['timers'][_0xff9ec4];};}});}else{logger[_0x303f('0x2e')](_0x303f('0x32'),_0x433c1c,_0xff9ec4,_0x4e51a0);}});}})['catch'](function(_0x39ebfd){logger[_0x303f('0x30')](_0x303f('0x25'),_0x433c1c,_0x419502[_0x303f('0x4')][_0x4e51a0][_0x303f('0x26')],_0xff9ec4,_0x4e51a0);})[_0x303f('0x33')](function(){delete _0x419502[_0x303f('0x7')][_0x433c1c];});}catch(_0x345d14){logger[_0x303f('0x30')]('[ACW][START]\x20%s',_0x345d14[_0x303f('0x34')]);}};Acw['prototype'][_0x303f('0x28')]=function(_0x2925d1){try{var _0x379e40=this;if(_0x379e40[_0x303f('0x6')][_0x2925d1]){_0x379e40[_0x303f('0x6')][_0x2925d1][_0x303f('0x27')]=![];var _0x153143=_0x379e40[_0x303f('0x6')][_0x2925d1]['uniqueid'];var _0x69f488=_0x379e40['timers'][_0x2925d1]['queue'];var _0x3763e1=_0x379e40['voiceQueues'][_0x69f488][_0x303f('0x26')];logger[_0x303f('0x2e')](_0x303f('0x35'),_0x153143,_0x2925d1);RpcUser[_0x303f('0x36')](this[_0x303f('0x5')][_0x2925d1]);RpcVoiceAgentReport[_0x303f('0x2d')]({'acwtime':_0x3763e1,'agentacw':!![]},_0x153143,_0x2925d1)['then'](function(_0x29b1a8){logger['info'](_0x303f('0x2f'),_0x153143,_0x3763e1,_0x29b1a8);})['catch'](function(_0x1d40a4){logger[_0x303f('0x30')](_0x303f('0x31'),_0x153143,_0x1d40a4);});}else{logger[_0x303f('0x30')](_0x303f('0x37'),_0x2925d1);if(_0x379e40[_0x303f('0x6')]){logger[_0x303f('0x2e')](_0x303f('0x38'),JSON[_0x303f('0x39')](_0x379e40[_0x303f('0x6')]));}}}catch(_0x1ca881){logger[_0x303f('0x30')](_0x303f('0x3a'),_0x1ca881[_0x303f('0x34')]);}};Acw['prototype']['syncAgentConnect']=function(_0x1c9b26){try{if(this[_0x303f('0x4')][_0x1c9b26[_0x303f('0x1a')]]&&(this['voiceQueues'][_0x1c9b26[_0x303f('0x1a')]]['acw']||this['voiceQueues'][_0x1c9b26[_0x303f('0x1a')]][_0x303f('0x3b')])){if(this[_0x303f('0x5')][_0x1c9b26[_0x303f('0x3c')]]){this[_0x303f('0x7')][_0x1c9b26[_0x303f('0x2b')]]={'queue':_0x1c9b26[_0x303f('0x1a')],'interface':_0x1c9b26[_0x303f('0x3c')],'destlinkedid':_0x1c9b26[_0x303f('0x23')]};}}}catch(_0x184210){logger[_0x303f('0x30')](_0x303f('0x3d'),_0x184210['message']);}};Acw['prototype'][_0x303f('0x14')]=function(_0x2472a9){try{if(this['voiceQueues'][_0x2472a9[_0x303f('0x1a')]]&&(this[_0x303f('0x4')][_0x2472a9[_0x303f('0x1a')]][_0x303f('0x3e')]||this[_0x303f('0x4')][_0x2472a9['queue']][_0x303f('0x3b')])){if(this[_0x303f('0x5')][_0x2472a9['interface']]){this['channels'][_0x2472a9[_0x303f('0x2b')]]={'queue':_0x2472a9['queue'],'interface':_0x2472a9[_0x303f('0x3c')]};}}}catch(_0x21781a){logger[_0x303f('0x30')](_0x303f('0x3f'),_0x21781a[_0x303f('0x34')]);}};Acw[_0x303f('0x18')]['syncHangupRequest']=function(_0x3edcfa){try{if(this[_0x303f('0x7')][_0x3edcfa[_0x303f('0x2b')]]&&_[_0x303f('0x40')](this['channels'][_0x3edcfa['uniqueid']][_0x303f('0x22')])){logger[_0x303f('0x2e')](_0x303f('0x41'),_0x3edcfa[_0x303f('0x2b')]);this[_0x303f('0x19')](_0x3edcfa[_0x303f('0x2b')]);}else if(this['channels'][_0x3edcfa['linkedid']]&&_[_0x303f('0x40')](this[_0x303f('0x7')][_0x3edcfa[_0x303f('0x42')]][_0x303f('0x22')])){logger['info'](_0x303f('0x43'),_0x3edcfa[_0x303f('0x42')]);this[_0x303f('0x19')](_0x3edcfa[_0x303f('0x42')]);}}catch(_0x2f7eaa){logger[_0x303f('0x30')](_0x303f('0x44'),_0x2f7eaa[_0x303f('0x34')]);}};Acw[_0x303f('0x18')][_0x303f('0xd')]=function(_0x3c8cfa){try{if(this['channels'][_0x3c8cfa[_0x303f('0x2b')]]&&this[_0x303f('0x7')][_0x3c8cfa['uniqueid']]['attended']){logger[_0x303f('0x2e')](_0x303f('0x45'),_0x3c8cfa[_0x303f('0x2b')]);this[_0x303f('0x19')](_0x3c8cfa['uniqueid']);}else if(this[_0x303f('0x7')][_0x3c8cfa[_0x303f('0x42')]]&&this[_0x303f('0x7')][_0x3c8cfa['linkedid']][_0x303f('0x22')]){logger['info'](_0x303f('0x46'),_0x3c8cfa[_0x303f('0x42')]);this[_0x303f('0x19')](_0x3c8cfa[_0x303f('0x42')]);}}catch(_0xc6a82d){logger[_0x303f('0x30')](_0x303f('0x47'),_0xc6a82d[_0x303f('0x34')]);}};Acw[_0x303f('0x18')][_0x303f('0x11')]=function(_0x4d4e41){try{if(!_[_0x303f('0x48')](this['channels'][_0x4d4e41['transfereeuniqueid']])){this[_0x303f('0x19')](_0x4d4e41['transfereeuniqueid']);if(this[_0x303f('0x7')][_0x4d4e41['secondtransfereruniqueid']]){this['channels'][_0x4d4e41[_0x303f('0x49')]][_0x303f('0x22')]=!![];this['channels'][_0x4d4e41[_0x303f('0x4a')]]=this[_0x303f('0x7')][_0x4d4e41[_0x303f('0x49')]];delete this[_0x303f('0x7')][_0x4d4e41['secondtransfereruniqueid']];}}else if(!_[_0x303f('0x48')](this[_0x303f('0x7')][_0x4d4e41[_0x303f('0x4a')]])){this[_0x303f('0x19')](_0x4d4e41['transfertargetuniqueid']);if(this[_0x303f('0x7')][_0x4d4e41[_0x303f('0x4b')]]){this['channels'][_0x4d4e41['origtransfereruniqueid']][_0x303f('0x22')]=!![];this[_0x303f('0x7')][_0x4d4e41['transfereeuniqueid']]=this[_0x303f('0x7')][_0x4d4e41['origtransfereruniqueid']];delete this['channels'][_0x4d4e41[_0x303f('0x4b')]];}}}catch(_0x1a4e22){logger[_0x303f('0x30')](_0x303f('0x4c'),_0x1a4e22[_0x303f('0x34')]);}};Acw['prototype'][_0x303f('0x12')]=function(_0x175c4e){try{if(this['channels'][_0x175c4e['transfereruniqueid']]){logger[_0x303f('0x2e')](_0x303f('0x4d'),JSON[_0x303f('0x39')](_0x175c4e['transfereruniqueid']));this['startAcw'](_0x175c4e[_0x303f('0x4e')]);}else if(this[_0x303f('0x7')][_0x175c4e[_0x303f('0x4f')]]){logger[_0x303f('0x2e')](_0x303f('0x50'),JSON[_0x303f('0x39')](_0x175c4e[_0x303f('0x4f')]));this['startAcw'](_0x175c4e[_0x303f('0x4f')]);}}catch(_0x2e5ce0){logger[_0x303f('0x30')](_0x303f('0x51'),_0x2e5ce0[_0x303f('0x34')]);}};Acw[_0x303f('0x18')][_0x303f('0xf')]=function(_0x4f95e0){try{if(this[_0x303f('0x4')][_0x4f95e0[_0x303f('0x1a')]]&&this[_0x303f('0x4')][_0x4f95e0[_0x303f('0x1a')]][_0x303f('0x52')]===_0x303f('0x53')){if(this[_0x303f('0x5')][_0x4f95e0[_0x303f('0x3c')]]){logger[_0x303f('0x2e')](_0x303f('0x54'),_0x4f95e0[_0x303f('0x2b')],_0x4f95e0[_0x303f('0x3c')],_0x4f95e0[_0x303f('0x1a')]);return RpcUser['savePause'](this[_0x303f('0x5')][_0x4f95e0[_0x303f('0x3c')]],'Auto-Pause',_0x4f95e0[_0x303f('0x2b')]);}}}catch(_0x4513c0){logger[_0x303f('0x30')](_0x303f('0x55'),_0x4513c0[_0x303f('0x34')]);}};module[_0x303f('0x56')]=Acw;
\ No newline at end of file
+var _0x0485=['../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','seconds','prototype','startAcw','interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','Action','QueuePause','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','timer','stopAcw','acwTimeout','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','update','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][STOP]\x20%s','syncAgentConnectPreview','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUP:LINKEDID]','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','moment','../ami','../../../config/logger','acw'];(function(_0x1fd045,_0x5dd974){var _0x57d2d2=function(_0xbaee15){while(--_0xbaee15){_0x1fd045['push'](_0x1fd045['shift']());}};_0x57d2d2(++_0x5dd974);}(_0x0485,0xa8));var _0x5048=function(_0x152449,_0x49f41d){_0x152449=_0x152449-0x0;var _0x5b58b2=_0x0485[_0x152449];return _0x5b58b2;};'use strict';var util=require(_0x5048('0x0'));var _=require(_0x5048('0x1'));var moment=require(_0x5048('0x2'));var ami=require(_0x5048('0x3'));var logger=require(_0x5048('0x4'))(_0x5048('0x5'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x5048('0x6'));function Acw(_0x41ecd4){this[_0x5048('0x7')]=_0x41ecd4[_0x5048('0x7')];this[_0x5048('0x8')]=_0x41ecd4[_0x5048('0x8')];this['timers']=_0x41ecd4[_0x5048('0x9')];this[_0x5048('0xa')]={};ami['on'](_0x5048('0xb'),this[_0x5048('0xc')][_0x5048('0xd')](this));ami['on'](_0x5048('0xe'),this[_0x5048('0xf')][_0x5048('0xd')](this));ami['on'](_0x5048('0x10'),this[_0x5048('0x11')][_0x5048('0xd')](this));ami['on'](_0x5048('0x12'),this[_0x5048('0x13')][_0x5048('0xd')](this));ami['on'](_0x5048('0x14'),this[_0x5048('0x15')][_0x5048('0xd')](this));ami['on'](_0x5048('0x16'),this[_0x5048('0x17')][_0x5048('0xd')](this));ami['on'](_0x5048('0x18'),this['syncAgentConnectPreview'][_0x5048('0xd')](this));}function getDiff(_0x53da4a){var _0x19d267=moment()['milliseconds'](0x0);var _0x7a971e=moment(_0x53da4a)['milliseconds'](0x0);return _0x19d267['diff'](_0x7a971e,_0x5048('0x19'));}Acw[_0x5048('0x1a')][_0x5048('0x1b')]=function(_0x3dc037){try{var _0x48dfae=this;var _0x16e9e8=this[_0x5048('0xa')][_0x3dc037][_0x5048('0x1c')];var _0x563e50=this[_0x5048('0xa')][_0x3dc037][_0x5048('0x1d')];var _0x457a42=this[_0x5048('0x7')][_0x563e50];var _0x34a80f=![];var _0x30aa93=_0x5048('0x1e');if(_0x457a42[_0x5048('0x1f')]){if(_0x457a42[_0x5048('0x20')][_0x5048('0x21')]){_0x34a80f=!![];_0x30aa93=_0x457a42[_0x5048('0x20')][_0x5048('0x21')];}}ami[_0x5048('0x22')]({'action':_0x5048('0x23'),'interface':_0x16e9e8,'paused':!![],'reason':_0x30aa93})[_0x5048('0x24')](function(_0x9f7e55){if(_0x48dfae[_0x5048('0x8')][_0x16e9e8]){return RpcUser['getAgent'](_0x48dfae[_0x5048('0x8')][_0x16e9e8]['id'])[_0x5048('0x24')](function(_0x1a79e5){if(_0x1a79e5&&!_0x1a79e5[_0x5048('0x25')]){logger[_0x5048('0x26')](_0x5048('0x27'),_0x3dc037,_0x16e9e8,_0x563e50);var _0x478709=_0x48dfae[_0x5048('0xa')][_0x3dc037][_0x5048('0x28')]&&_0x48dfae[_0x5048('0xa')][_0x3dc037][_0x5048('0x29')]?_0x48dfae['channels'][_0x3dc037][_0x5048('0x29')]:_0x3dc037;return RpcUser[_0x5048('0x2a')](_0x48dfae[_0x5048('0x8')][_0x16e9e8],_0x30aa93,_0x478709)['then'](function(_0x590437){if(!_0x34a80f){_0x48dfae[_0x5048('0x9')][_0x16e9e8]={};logger[_0x5048('0x26')](_0x5048('0x2b'),_0x3dc037,_0x48dfae[_0x5048('0x7')][_0x563e50]['acwTimeout'],_0x16e9e8,_0x563e50);_0x48dfae[_0x5048('0x9')][_0x16e9e8][_0x5048('0x2c')]=setTimeout(_0x48dfae[_0x5048('0x2d')][_0x5048('0xd')](_0x48dfae,_0x16e9e8),_0x48dfae[_0x5048('0x7')][_0x563e50][_0x5048('0x2e')]*0x3e8);_0x48dfae[_0x5048('0x9')][_0x16e9e8][_0x5048('0x2f')]=moment()[_0x5048('0x30')](_0x5048('0x31'));_0x48dfae[_0x5048('0x9')][_0x16e9e8][_0x5048('0x32')]=_0x3dc037;_0x48dfae[_0x5048('0x9')][_0x16e9e8][_0x5048('0x1d')]=_0x563e50;_0x48dfae[_0x5048('0x9')][_0x16e9e8][_0x5048('0x33')]=function(){var _0x298b9d=getDiff(_0x48dfae[_0x5048('0x9')][_0x16e9e8][_0x5048('0x2f')]);clearTimeout(_0x48dfae['timers'][_0x16e9e8]['timer']);_0x48dfae[_0x5048('0x9')][_0x16e9e8][_0x5048('0x2c')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x298b9d},_0x48dfae[_0x5048('0x9')][_0x16e9e8][_0x5048('0x32')],_0x16e9e8)[_0x5048('0x24')](function(_0x30d5bc){logger['info'](_0x5048('0x34'),_0x3dc037,_0x298b9d,_0x30d5bc);})[_0x5048('0x35')](function(_0x338158){logger[_0x5048('0x36')](_0x5048('0x37'),_0x3dc037,_0x338158);});delete _0x48dfae[_0x5048('0x9')][_0x16e9e8];};}});}else{logger['info'](_0x5048('0x38'),_0x3dc037,_0x16e9e8,_0x563e50);}});}})['catch'](function(_0x1728c8){logger[_0x5048('0x36')](_0x5048('0x2b'),_0x3dc037,_0x48dfae[_0x5048('0x7')][_0x563e50][_0x5048('0x2e')],_0x16e9e8,_0x563e50);})['finally'](function(){delete _0x48dfae['channels'][_0x3dc037];});}catch(_0x1a997f){logger[_0x5048('0x36')](_0x5048('0x39'),_0x1a997f[_0x5048('0x3a')]);}};Acw[_0x5048('0x1a')][_0x5048('0x2d')]=function(_0x255a16){try{var _0x505ef8=this;if(_0x505ef8[_0x5048('0x9')][_0x255a16]){_0x505ef8[_0x5048('0x9')][_0x255a16][_0x5048('0x2c')]=![];var _0x2c20ab=_0x505ef8['timers'][_0x255a16][_0x5048('0x32')];var _0x40c2b5=_0x505ef8['timers'][_0x255a16]['queue'];var _0xa4bd7a=_0x505ef8['voiceQueues'][_0x40c2b5][_0x5048('0x2e')];logger[_0x5048('0x26')](_0x5048('0x3b'),_0x2c20ab,_0x255a16);RpcUser[_0x5048('0x3c')](this[_0x5048('0x8')][_0x255a16]);RpcVoiceAgentReport[_0x5048('0x3d')]({'acwtime':_0xa4bd7a,'agentacw':!![]},_0x2c20ab,_0x255a16)[_0x5048('0x24')](function(_0x20d8d5){logger[_0x5048('0x26')](_0x5048('0x34'),_0x2c20ab,_0xa4bd7a,_0x20d8d5);})[_0x5048('0x35')](function(_0x3a24a4){logger[_0x5048('0x36')]('[%s][UPDATE][ERRORS:%s]',_0x2c20ab,_0x3a24a4);});}else{logger[_0x5048('0x36')](_0x5048('0x3e'),_0x255a16);if(_0x505ef8[_0x5048('0x9')]){logger[_0x5048('0x26')]('[ACW][TIMERS]',JSON['stringify'](_0x505ef8[_0x5048('0x9')]));}}}catch(_0x3c61c1){logger[_0x5048('0x36')](_0x5048('0x3f'),_0x3c61c1['message']);}};Acw['prototype'][_0x5048('0xc')]=function(_0x1213c4){try{if(this['voiceQueues'][_0x1213c4[_0x5048('0x1d')]]&&(this[_0x5048('0x7')][_0x1213c4['queue']]['acw']||this[_0x5048('0x7')][_0x1213c4[_0x5048('0x1d')]][_0x5048('0x1f')])){if(this[_0x5048('0x8')][_0x1213c4[_0x5048('0x1c')]]){this[_0x5048('0xa')][_0x1213c4[_0x5048('0x32')]]={'queue':_0x1213c4[_0x5048('0x1d')],'interface':_0x1213c4[_0x5048('0x1c')],'destlinkedid':_0x1213c4[_0x5048('0x29')]};}}}catch(_0xa71c40){logger['error']('[ACW][syncAgentConnect]\x20%s',_0xa71c40[_0x5048('0x3a')]);}};Acw[_0x5048('0x1a')][_0x5048('0x40')]=function(_0x3ac986){try{if(this['voiceQueues'][_0x3ac986[_0x5048('0x1d')]]&&(this[_0x5048('0x7')][_0x3ac986['queue']][_0x5048('0x5')]||this[_0x5048('0x7')][_0x3ac986[_0x5048('0x1d')]][_0x5048('0x1f')])){if(this[_0x5048('0x8')][_0x3ac986[_0x5048('0x1c')]]){this['channels'][_0x3ac986['uniqueid']]={'queue':_0x3ac986[_0x5048('0x1d')],'interface':_0x3ac986['interface']};}}}catch(_0x302075){logger[_0x5048('0x36')](_0x5048('0x41'),_0x302075[_0x5048('0x3a')]);}};Acw[_0x5048('0x1a')][_0x5048('0xf')]=function(_0x15d094){try{if(this[_0x5048('0xa')][_0x15d094['uniqueid']]&&_[_0x5048('0x42')](this[_0x5048('0xa')][_0x15d094[_0x5048('0x32')]][_0x5048('0x28')])){logger[_0x5048('0x26')](_0x5048('0x43'),_0x15d094['uniqueid']);this[_0x5048('0x1b')](_0x15d094['uniqueid']);}else if(this[_0x5048('0xa')][_0x15d094[_0x5048('0x44')]]&&_[_0x5048('0x42')](this[_0x5048('0xa')][_0x15d094[_0x5048('0x44')]][_0x5048('0x28')])){logger[_0x5048('0x26')](_0x5048('0x45'),_0x15d094['linkedid']);this[_0x5048('0x1b')](_0x15d094['linkedid']);}}catch(_0x46b688){logger[_0x5048('0x36')]('[ACW][syncHangupRequest]\x20%s',_0x46b688[_0x5048('0x3a')]);}};Acw[_0x5048('0x1a')][_0x5048('0x11')]=function(_0x3a90f1){try{if(this[_0x5048('0xa')][_0x3a90f1['uniqueid']]&&this[_0x5048('0xa')][_0x3a90f1[_0x5048('0x32')]][_0x5048('0x28')]){logger[_0x5048('0x26')](_0x5048('0x46'),_0x3a90f1['uniqueid']);this[_0x5048('0x1b')](_0x3a90f1[_0x5048('0x32')]);}else if(this[_0x5048('0xa')][_0x3a90f1[_0x5048('0x44')]]&&this[_0x5048('0xa')][_0x3a90f1[_0x5048('0x44')]]['attended']){logger[_0x5048('0x26')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x3a90f1['linkedid']);this[_0x5048('0x1b')](_0x3a90f1[_0x5048('0x44')]);}}catch(_0x406eaf){logger[_0x5048('0x36')]('[ACW][syncHangup]\x20%s',_0x406eaf[_0x5048('0x3a')]);}};Acw[_0x5048('0x1a')][_0x5048('0x15')]=function(_0x52e850){try{if(!_[_0x5048('0x47')](this[_0x5048('0xa')][_0x52e850[_0x5048('0x48')]])){this[_0x5048('0x1b')](_0x52e850[_0x5048('0x48')]);if(this['channels'][_0x52e850[_0x5048('0x49')]]){this[_0x5048('0xa')][_0x52e850[_0x5048('0x49')]]['attended']=!![];this[_0x5048('0xa')][_0x52e850[_0x5048('0x4a')]]=this['channels'][_0x52e850[_0x5048('0x49')]];delete this[_0x5048('0xa')][_0x52e850[_0x5048('0x49')]];}}else if(!_['isNil'](this[_0x5048('0xa')][_0x52e850[_0x5048('0x4a')]])){this[_0x5048('0x1b')](_0x52e850[_0x5048('0x4a')]);if(this[_0x5048('0xa')][_0x52e850[_0x5048('0x4b')]]){this[_0x5048('0xa')][_0x52e850['origtransfereruniqueid']][_0x5048('0x28')]=!![];this[_0x5048('0xa')][_0x52e850[_0x5048('0x48')]]=this[_0x5048('0xa')][_0x52e850[_0x5048('0x4b')]];delete this[_0x5048('0xa')][_0x52e850[_0x5048('0x4b')]];}}}catch(_0xec74fb){logger[_0x5048('0x36')](_0x5048('0x4c'),_0xec74fb[_0x5048('0x3a')]);}};Acw['prototype'][_0x5048('0x17')]=function(_0xcd907c){try{if(this[_0x5048('0xa')][_0xcd907c[_0x5048('0x4d')]]){logger['info'](_0x5048('0x4e'),JSON[_0x5048('0x4f')](_0xcd907c[_0x5048('0x4d')]));this[_0x5048('0x1b')](_0xcd907c['transfereruniqueid']);}else if(this[_0x5048('0xa')][_0xcd907c[_0x5048('0x50')]]){logger['info'](_0x5048('0x51'),JSON[_0x5048('0x4f')](_0xcd907c[_0x5048('0x50')]));this[_0x5048('0x1b')](_0xcd907c[_0x5048('0x50')]);}}catch(_0x4c06be){logger[_0x5048('0x36')]('[ACW][syncBlindTransfer]\x20%s',_0x4c06be[_0x5048('0x3a')]);}};Acw['prototype']['syncAgentRingNoAnswer']=function(_0x2a27e6){try{if(this['voiceQueues'][_0x2a27e6[_0x5048('0x1d')]]&&this[_0x5048('0x7')][_0x2a27e6[_0x5048('0x1d')]][_0x5048('0x52')]===_0x5048('0x53')){if(this[_0x5048('0x8')][_0x2a27e6['interface']]){logger[_0x5048('0x26')](_0x5048('0x54'),_0x2a27e6['uniqueid'],_0x2a27e6[_0x5048('0x1c')],_0x2a27e6[_0x5048('0x1d')]);return RpcUser[_0x5048('0x2a')](this[_0x5048('0x8')][_0x2a27e6['interface']],'Auto-Pause',_0x2a27e6[_0x5048('0x32')]);}}}catch(_0x1c58b9){logger['error'](_0x5048('0x55'),_0x1c58b9[_0x5048('0x3a')]);}};module[_0x5048('0x56')]=Acw;
\ No newline at end of file
index fdff898..6726a62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['../../config/environment','asterisk','port','username','password','promisify','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','format','Action','sipshowregistry','actionDeviceStateList','devicestatelist','actionQueueSummary','actionCoreShowChannels','coreshowchannels','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','close','shutdown','info','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','then','actionSipPeerStatus','catch','[ami.js][fullybooted]','once','asterisk-manager','moment','lodash','../../config/logger','ami'];(function(_0x1ecb2b,_0x169b71){var _0x3e6e4f=function(_0x65fb01){while(--_0x65fb01){_0x1ecb2b['push'](_0x1ecb2b['shift']());}};_0x3e6e4f(++_0x169b71);}(_0x0b0e,0x187));var _0xe0b0=function(_0x4474c2,_0x59cf02){_0x4474c2=_0x4474c2-0x0;var _0x435fbb=_0x0b0e[_0x4474c2];return _0x435fbb;};'use strict';var Manager=require(_0xe0b0('0x0'));var BPromise=require('bluebird');var moment=require(_0xe0b0('0x1'));var util=require('util');var _=require(_0xe0b0('0x2'));var logger=require(_0xe0b0('0x3'))(_0xe0b0('0x4'));var config=require(_0xe0b0('0x5'));var ami=new Manager(config[_0xe0b0('0x6')][_0xe0b0('0x7')],config[_0xe0b0('0x6')]['ip'],config[_0xe0b0('0x6')][_0xe0b0('0x8')],config[_0xe0b0('0x6')][_0xe0b0('0x9')],!![]);ami['keepConnected']();ami['Action']=BPromise[_0xe0b0('0xa')](ami[_0xe0b0('0xb')]);function error(_0xc4a085){logger[_0xe0b0('0xc')](util['format'](_0xe0b0('0xd'),config[_0xe0b0('0x6')]['username'],config[_0xe0b0('0x6')]['ip'],config[_0xe0b0('0x6')]['port'],util[_0xe0b0('0xe')](_0xc4a085,![],null)));}function close(){logger[_0xe0b0('0xc')](util[_0xe0b0('0xf')]('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config[_0xe0b0('0x6')][_0xe0b0('0x8')],config[_0xe0b0('0x6')]['ip'],config[_0xe0b0('0x6')][_0xe0b0('0x7')]));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0xe0b0('0x10')]({'action':_0xe0b0('0x11')});};};ami[_0xe0b0('0x12')]=function(){return function(){return ami[_0xe0b0('0x10')]({'action':_0xe0b0('0x13')});};};ami['actionSipPeerStatus']=function(){return function(){return ami[_0xe0b0('0x10')]({'action':'sippeerstatus'});};};ami[_0xe0b0('0x14')]=function(){return function(){return ami[_0xe0b0('0x10')]({'action':'queuesummary'});};};ami[_0xe0b0('0x15')]=function(){return function(){return ami['Action']({'action':_0xe0b0('0x16')});};};function connect(_0x100204){logger['info'](util['format'](_0xe0b0('0x17'),config['asterisk']['username'],config['asterisk']['ip'],config[_0xe0b0('0x6')]['port']));ami['once'](_0xe0b0('0xc'),error);ami['once'](_0xe0b0('0x18'),close);}ami['on']('connect',connect);ami['on'](_0xe0b0('0x19'),function(_0x1cd7c4){logger[_0xe0b0('0x1a')](util[_0xe0b0('0xf')](_0xe0b0('0x1b'),config['asterisk']['username'],config[_0xe0b0('0x6')]['ip'],config['asterisk'][_0xe0b0('0x7')],util[_0xe0b0('0xe')](_0x1cd7c4,![],null)));});ami['on']('fullybooted',function(_0x170ad8){logger['info'](util[_0xe0b0('0xf')]('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0xe0b0('0x6')]['username'],config[_0xe0b0('0x6')]['ip'],config['asterisk'][_0xe0b0('0x7')]));return BPromise['resolve']()[_0xe0b0('0x1c')](ami['actionSipShowRegistry']())[_0xe0b0('0x1c')](ami[_0xe0b0('0x12')]())[_0xe0b0('0x1c')](ami[_0xe0b0('0x1d')]())[_0xe0b0('0x1c')](ami[_0xe0b0('0x14')]())['then'](ami[_0xe0b0('0x15')]())[_0xe0b0('0x1e')](function(_0x5b7a64){logger[_0xe0b0('0xc')](_0xe0b0('0x1f'),util[_0xe0b0('0xe')](_0x5b7a64,{'showHidden':![],'depth':null}));});});ami[_0xe0b0('0x20')](_0xe0b0('0xc'),error);ami[_0xe0b0('0x20')](_0xe0b0('0x18'),close);module['exports']=ami;
\ No newline at end of file
+var _0xb10b=['asterisk','port','password','Action','promisify','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','username','actionSipShowRegistry','sipshowregistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionCoreShowChannels','[ami.js][fullybooted]','asterisk-manager','moment','util','lodash','ami','../../config/environment'];(function(_0x521eba,_0x41bcc0){var _0x28ba68=function(_0xd3e31){while(--_0xd3e31){_0x521eba['push'](_0x521eba['shift']());}};_0x28ba68(++_0x41bcc0);}(_0xb10b,0x12a));var _0xbb10=function(_0x4551f6,_0x48151b){_0x4551f6=_0x4551f6-0x0;var _0x581dc2=_0xb10b[_0x4551f6];return _0x581dc2;};'use strict';var Manager=require(_0xbb10('0x0'));var BPromise=require('bluebird');var moment=require(_0xbb10('0x1'));var util=require(_0xbb10('0x2'));var _=require(_0xbb10('0x3'));var logger=require('../../config/logger')(_0xbb10('0x4'));var config=require(_0xbb10('0x5'));var ami=new Manager(config[_0xbb10('0x6')][_0xbb10('0x7')],config[_0xbb10('0x6')]['ip'],config[_0xbb10('0x6')]['username'],config[_0xbb10('0x6')][_0xbb10('0x8')],!![]);ami['keepConnected']();ami[_0xbb10('0x9')]=BPromise[_0xbb10('0xa')](ami[_0xbb10('0xb')]);function error(_0x1c3ee5){logger[_0xbb10('0xc')](util[_0xbb10('0xd')](_0xbb10('0xe'),config[_0xbb10('0x6')]['username'],config['asterisk']['ip'],config[_0xbb10('0x6')][_0xbb10('0x7')],util[_0xbb10('0xf')](_0x1c3ee5,![],null)));}function close(){logger['error'](util[_0xbb10('0xd')]('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config[_0xbb10('0x6')][_0xbb10('0x10')],config[_0xbb10('0x6')]['ip'],config[_0xbb10('0x6')][_0xbb10('0x7')]));}ami[_0xbb10('0x11')]=function(){return function(){return ami['Action']({'action':_0xbb10('0x12')});};};ami[_0xbb10('0x13')]=function(){return function(){return ami[_0xbb10('0x9')]({'action':_0xbb10('0x14')});};};ami[_0xbb10('0x15')]=function(){return function(){return ami[_0xbb10('0x9')]({'action':_0xbb10('0x16')});};};ami[_0xbb10('0x17')]=function(){return function(){return ami[_0xbb10('0x9')]({'action':_0xbb10('0x18')});};};ami['actionCoreShowChannels']=function(){return function(){return ami[_0xbb10('0x9')]({'action':_0xbb10('0x19')});};};function connect(_0x133ac2){logger[_0xbb10('0x1a')](util[_0xbb10('0xd')](_0xbb10('0x1b'),config[_0xbb10('0x6')][_0xbb10('0x10')],config[_0xbb10('0x6')]['ip'],config[_0xbb10('0x6')]['port']));ami[_0xbb10('0x1c')](_0xbb10('0xc'),error);ami[_0xbb10('0x1c')](_0xbb10('0x1d'),close);}ami['on'](_0xbb10('0x1e'),connect);ami['on'](_0xbb10('0x1f'),function(_0x4deb49){logger[_0xbb10('0x1a')](util[_0xbb10('0xd')]('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config['asterisk'][_0xbb10('0x10')],config[_0xbb10('0x6')]['ip'],config[_0xbb10('0x6')][_0xbb10('0x7')],util[_0xbb10('0xf')](_0x4deb49,![],null)));});ami['on'](_0xbb10('0x20'),function(_0x407cb4){logger[_0xbb10('0x1a')](util[_0xbb10('0xd')](_0xbb10('0x21'),config[_0xbb10('0x6')][_0xbb10('0x10')],config['asterisk']['ip'],config['asterisk']['port']));return BPromise[_0xbb10('0x22')]()[_0xbb10('0x23')](ami[_0xbb10('0x11')]())['then'](ami[_0xbb10('0x13')]())[_0xbb10('0x23')](ami[_0xbb10('0x15')]())[_0xbb10('0x23')](ami[_0xbb10('0x17')]())[_0xbb10('0x23')](ami[_0xbb10('0x24')]())['catch'](function(_0x3796c7){logger[_0xbb10('0xc')](_0xbb10('0x25'),util[_0xbb10('0xf')](_0x3796c7,{'showHidden':![],'depth':null}));});});ami[_0xbb10('0x1c')](_0xbb10('0xc'),error);ami['once'](_0xbb10('0x1d'),close);module['exports']=ami;
\ No newline at end of file
index 88ea9d9..36e47b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['bluebird','../../config/logger','ami','http','Request','rpc','memberReport','error','message','result','catch','jayson/promise'];(function(_0x42710e,_0x3bd811){var _0x43acbb=function(_0x3e718a){while(--_0x3e718a){_0x42710e['push'](_0x42710e['shift']());}};_0x43acbb(++_0x3bd811);}(_0xaa88,0x137));var _0x8aa8=function(_0x3ae2b2,_0x2d936f){_0x3ae2b2=_0x3ae2b2-0x0;var _0x1dbf00=_0xaa88[_0x3ae2b2];return _0x1dbf00;};'use strict';var jayson=require(_0x8aa8('0x0'));var BPromise=require(_0x8aa8('0x1'));var logger=require(_0x8aa8('0x2'))(_0x8aa8('0x3'));var client=jayson['client'][_0x8aa8('0x4')]({'port':0x2329});client[_0x8aa8('0x5')]=function(_0x43f7e4,_0x3b2c88){return new BPromise(function(_0x3e3b70,_0x350e8b){return client['request'](_0x43f7e4,_0x3b2c88)['then'](function(_0x460042){logger['debug'](_0x8aa8('0x6'),_0x8aa8('0x7'),_0x43f7e4,_0x3b2c88,_0x460042);if(_0x460042[_0x8aa8('0x8')]){logger[_0x8aa8('0x8')]('rpc',_0x8aa8('0x7'),_0x43f7e4,_0x460042[_0x8aa8('0x8')][_0x8aa8('0x9')],_0x3b2c88);return _0x350e8b(_0x460042['error'][_0x8aa8('0x9')]);}else{return _0x3e3b70(_0x460042[_0x8aa8('0xa')]);}})[_0x8aa8('0xb')](function(_0x33cc5c){logger['error'](_0x8aa8('0x6'),_0x8aa8('0x7'),_0x43f7e4,_0x33cc5c,_0x3b2c88);return _0x350e8b(_0x33cc5c);});});};module['exports']=client;
\ No newline at end of file
+var _0xf4eb=['rpc','error','message','result','exports','jayson/promise','http','request','then','debug','memberReport'];(function(_0x5e3139,_0x5bad26){var _0x3cdf31=function(_0x51647e){while(--_0x51647e){_0x5e3139['push'](_0x5e3139['shift']());}};_0x3cdf31(++_0x5bad26);}(_0xf4eb,0xec));var _0xbf4e=function(_0x3d9a29,_0x126584){_0x3d9a29=_0x3d9a29-0x0;var _0x59f805=_0xf4eb[_0x3d9a29];return _0x59f805;};'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
index f313e5e..d500c20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5713=['\x22%s\x22\x20<%s>','dialCutDigit','exports','lodash','moment','isNil','string','voiceQueue','name','Contact','phone','firstName','lastName','number','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','starttime','format','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x5713,0x15b));var _0x3571=function(_0x1e3169,_0x344500){_0x1e3169=_0x1e3169-0x0;var _0x909dd8=_0x5713[_0x1e3169];return _0x909dd8;};'use strict';var util=require('util');var _=require(_0x3571('0x0'));var moment=require(_0x3571('0x1'));function checkNameSurname(_0x56cbe8,_0x1b8b9e,_0x48d06a){var _0x22271f='';if(!_[_0x3571('0x2')](_0x1b8b9e)&&_0x3571('0x3')===typeof _0x1b8b9e){_0x22271f+=_0x1b8b9e;}if(!_[_0x3571('0x2')](_0x48d06a)&&'string'===typeof _0x48d06a){_0x22271f+='\x20'+_0x48d06a;}if(_0x22271f!==''){return _0x22271f;}return _0x56cbe8;}function Action(_0x384d72,_0x3caf2f,_0x1cf882){this[_0x3571('0x4')]=_0x384d72;this['uniqueid']=_0x1cf882||undefined;this[_0x3571('0x5')]=checkNameSurname(_0x3caf2f[_0x3571('0x6')][_0x3571('0x7')],_0x3caf2f[_0x3571('0x6')][_0x3571('0x8')],_0x3caf2f[_0x3571('0x6')][_0x3571('0x9')]);this[_0x3571('0xa')]=_0x3caf2f[_0x3571('0x7')];this[_0x3571('0xb')]=_0x384d72[_0x3571('0x5')];this[_0x3571('0xc')]=_0x3caf2f['active']||![];this[_0x3571('0xd')]=_0x384d72[_0x3571('0xd')];this[_0x3571('0xe')]=_0x384d72[_0x3571('0xe')]||0x3;this[_0x3571('0xf')]=_0x3caf2f[_0x3571('0xf')];this['countbusyretry']=_0x3caf2f[_0x3571('0x10')];this[_0x3571('0x11')]=_0x3caf2f[_0x3571('0x11')];this[_0x3571('0x12')]=_0x3caf2f['countnoanswerretry'];this[_0x3571('0x13')]=_0x3caf2f[_0x3571('0x13')];this['countdropretry']=_0x3caf2f[_0x3571('0x14')];this[_0x3571('0x15')]=_0x3caf2f[_0x3571('0x15')];this[_0x3571('0x16')]=_0x3caf2f[_0x3571('0x16')];this[_0x3571('0x17')]=_0x3caf2f[_0x3571('0x17')];this['ContactId']=_0x3caf2f[_0x3571('0x18')];this['ListId']=_0x3caf2f[_0x3571('0x19')];this['UserId']=_0x3caf2f['UserId'];this[_0x3571('0x1a')]=_0x3caf2f[_0x3571('0x1a')];this[_0x3571('0x1b')]=_0x3caf2f[_0x3571('0x1b')];this[_0x3571('0x1c')]=_0x3caf2f['id'];this[_0x3571('0x1d')]=_0x3caf2f[_0x3571('0x6')][_0x3571('0x8')]||'';this[_0x3571('0x1e')]=moment()[_0x3571('0x1f')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x3571('0x20')]=_0x3caf2f[_0x3571('0x20')];this[_0x3571('0x21')]=_0x3caf2f[_0x3571('0x21')];this[_0x3571('0x22')]=_0x3caf2f[_0x3571('0x22')];this[_0x3571('0x23')]=_0x3caf2f['recallme'];this[_0x3571('0x24')]='';this[_0x3571('0x25')]='';}Action[_0x3571('0x26')][_0x3571('0x27')]=function(){return util[_0x3571('0x1f')](_0x3571('0x28'),this[_0x3571('0x5')],this['voiceQueue'][_0x3571('0x29')]>0x0?this[_0x3571('0xa')]['substring'](this['voiceQueue']['dialCutDigit']):this['number']);};Action[_0x3571('0x26')]['getQueue']=function(){return this[_0x3571('0xb')];};module[_0x3571('0x2a')]=Action;
\ No newline at end of file
+var _0x758f=['uniqueid','name','Contact','phone','firstName','lastName','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','prototype','\x22%s\x22\x20<%s>','dialCutDigit','number','substring','getQueue','queue','util','isNil','string','voiceQueue'];(function(_0xb09d1b,_0x412994){var _0x43626b=function(_0x4ac66d){while(--_0x4ac66d){_0xb09d1b['push'](_0xb09d1b['shift']());}};_0x43626b(++_0x412994);}(_0x758f,0x191));var _0xf758=function(_0x26cd05,_0x1f7d74){_0x26cd05=_0x26cd05-0x0;var _0x3e13b9=_0x758f[_0x26cd05];return _0x3e13b9;};'use strict';var util=require(_0xf758('0x0'));var _=require('lodash');var moment=require('moment');function checkNameSurname(_0x4ffdac,_0x51df6a,_0x22023d){var _0x4ceba2='';if(!_[_0xf758('0x1')](_0x51df6a)&&_0xf758('0x2')===typeof _0x51df6a){_0x4ceba2+=_0x51df6a;}if(!_['isNil'](_0x22023d)&&_0xf758('0x2')===typeof _0x22023d){_0x4ceba2+='\x20'+_0x22023d;}if(_0x4ceba2!==''){return _0x4ceba2;}return _0x4ffdac;}function Action(_0x308661,_0x407efd,_0x37695e){this[_0xf758('0x3')]=_0x308661;this[_0xf758('0x4')]=_0x37695e||undefined;this[_0xf758('0x5')]=checkNameSurname(_0x407efd[_0xf758('0x6')][_0xf758('0x7')],_0x407efd[_0xf758('0x6')][_0xf758('0x8')],_0x407efd['Contact'][_0xf758('0x9')]);this['number']=_0x407efd[_0xf758('0x7')];this['queue']=_0x308661[_0xf758('0x5')];this['active']=_0x407efd[_0xf758('0xa')]||![];this['type']=_0x308661[_0xf758('0xb')];this['dialQueueTimeout']=_0x308661[_0xf758('0xc')]||0x3;this['scheduledat']=_0x407efd[_0xf758('0xd')];this['countbusyretry']=_0x407efd[_0xf758('0xe')];this[_0xf758('0xf')]=_0x407efd[_0xf758('0xf')];this[_0xf758('0x10')]=_0x407efd[_0xf758('0x10')];this[_0xf758('0x11')]=_0x407efd[_0xf758('0x11')];this[_0xf758('0x12')]=_0x407efd[_0xf758('0x12')];this[_0xf758('0x13')]=_0x407efd[_0xf758('0x13')];this[_0xf758('0x14')]=_0x407efd['countmachineretry'];this[_0xf758('0x15')]=_0x407efd[_0xf758('0x15')];this[_0xf758('0x16')]=_0x407efd[_0xf758('0x16')];this[_0xf758('0x17')]=_0x407efd[_0xf758('0x17')];this[_0xf758('0x18')]=_0x407efd[_0xf758('0x18')];this[_0xf758('0x19')]=_0x407efd['VoiceQueueId'];this[_0xf758('0x1a')]=_0x407efd[_0xf758('0x1a')];this[_0xf758('0x1b')]=_0x407efd['id'];this[_0xf758('0x1c')]=_0x407efd['Contact'][_0xf758('0x8')]||'';this[_0xf758('0x1d')]=moment()[_0xf758('0x1e')](_0xf758('0x1f'));this[_0xf758('0x20')]=_0x407efd[_0xf758('0x20')];this[_0xf758('0x21')]=_0x407efd['callbackuniqueid'];this[_0xf758('0x22')]=_0x407efd[_0xf758('0x22')];this[_0xf758('0x23')]=_0x407efd[_0xf758('0x23')];this[_0xf758('0x24')]='';this[_0xf758('0x25')]='';}Action[_0xf758('0x26')]['getCaller']=function(){return util[_0xf758('0x1e')](_0xf758('0x27'),this[_0xf758('0x5')],this['voiceQueue'][_0xf758('0x28')]>0x0?this[_0xf758('0x29')][_0xf758('0x2a')](this[_0xf758('0x3')]['dialCutDigit']):this[_0xf758('0x29')]);};Action[_0xf758('0x26')][_0xf758('0x2b')]=function(){return this[_0xf758('0x2c')];};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
new file mode 100644 (file)
index 0000000..6dd7075
--- /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 _0xd117=['countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','calleridname','name','calleridnum','starttime','endtime','responsetime','ringtime','talktime','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','seconds','uniqueid','scheduledat','type','outbound','queue','countbusyretry','countcongestionretry'];(function(_0x153e3c,_0x97db80){var _0x797072=function(_0x3eb116){while(--_0x3eb116){_0x153e3c['push'](_0x153e3c['shift']());}};_0x797072(++_0x97db80);}(_0xd117,0xd8));var _0x7d11=function(_0x26fc81,_0x57fc19){_0x26fc81=_0x26fc81-0x0;var _0x9feece=_0xd117[_0x26fc81];return _0x9feece;};'use strict';var util=require(_0x7d11('0x0'));var _=require(_0x7d11('0x1'));var moment=require(_0x7d11('0x2'));function getSeconds(_0x12a646,_0x57ebb6){var _0x25e0a5=moment(_0x12a646)[_0x7d11('0x3')](0x0);var _0x25ae91=moment(_0x57ebb6)['milliseconds'](0x0);return _0x25e0a5['diff'](_0x25ae91,_0x7d11('0x4'));}function AdditionalPhone(_0x14a201){this[_0x7d11('0x5')]=_0x14a201[_0x7d11('0x5')];this[_0x7d11('0x6')]=_0x14a201[_0x7d11('0x6')]||undefined;this[_0x7d11('0x7')]=_0x14a201[_0x7d11('0x7')];this['campaigntype']=_0x14a201[_0x7d11('0x7')]===_0x7d11('0x8')?_0x7d11('0x9'):_0x14a201['type'];this[_0x7d11('0xa')]=_0x14a201['countbusyretry'];this['countcongestionretry']=_0x14a201[_0x7d11('0xb')];this[_0x7d11('0xc')]=_0x14a201[_0x7d11('0xc')];this[_0x7d11('0xd')]=_0x14a201[_0x7d11('0xa')]+_0x14a201['countcongestionretry']+_0x14a201['countnoanswerretry']+_0x14a201[_0x7d11('0xe')]+_0x14a201[_0x7d11('0xf')]+_0x14a201['countabandonedretry']+_0x14a201[_0x7d11('0x10')]+_0x14a201[_0x7d11('0x11')];this['countnosuchnumberretry']=_0x14a201[_0x7d11('0xe')];this[_0x7d11('0xf')]=_0x14a201[_0x7d11('0xf')];this['countabandonedretry']=_0x14a201[_0x7d11('0x12')];this[_0x7d11('0x10')]=_0x14a201[_0x7d11('0x10')];this[_0x7d11('0x11')]=_0x14a201[_0x7d11('0x11')];this[_0x7d11('0x9')]=_0x14a201[_0x7d11('0x9')];this[_0x7d11('0x13')]=_0x14a201[_0x7d11('0x14')];this[_0x7d11('0x15')]=_0x14a201['number'];this[_0x7d11('0x16')]=_0x14a201['starttime'];this['responsetime']=_0x14a201['responsetime'];this[_0x7d11('0x17')]=_0x14a201[_0x7d11('0x18')];this[_0x7d11('0x19')]=getSeconds(_0x14a201[_0x7d11('0x18')],_0x14a201['starttime']);this['holdtime']=0x0;this[_0x7d11('0x1a')]=0x0;this[_0x7d11('0x1b')]=_0x14a201[_0x7d11('0x1b')];this[_0x7d11('0x1c')]=_0x14a201[_0x7d11('0x1c')];this['callbackat']=_0x14a201['callbackat'];this[_0x7d11('0x1d')]=_0x14a201[_0x7d11('0x1d')];this[_0x7d11('0x1e')]=_0x14a201['ContactId'];this[_0x7d11('0x1f')]=_0x14a201[_0x7d11('0x1f')];this[_0x7d11('0x20')]=_0x14a201[_0x7d11('0x20')];this[_0x7d11('0x21')]=_0x14a201[_0x7d11('0x21')];this[_0x7d11('0x22')]=_0x14a201['CampaignId'];this[_0x7d11('0x23')]=_0x14a201[_0x7d11('0x23')]||'';this['originatecalleridname']=_0x14a201[_0x7d11('0x24')]||'';}module[_0x7d11('0x25')]=History;
\ No newline at end of file
index 2cc89fb..ea714fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe46d=['YYYY-MM-DD\x20HH:mm:ss','ringtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','seconds','state','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','answertime','endtime','format'];(function(_0x2f0e78,_0x58d86f){var _0x10b2be=function(_0x2fa943){while(--_0x2fa943){_0x2f0e78['push'](_0x2f0e78['shift']());}};_0x10b2be(++_0x58d86f);}(_0xe46d,0x91));var _0xde46=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe46d[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xde46('0x0'));var _=require(_0xde46('0x1'));var moment=require(_0xde46('0x2'));function getSeconds(_0x318436,_0x48dc02){var _0x203d24=moment(_0x318436)[_0xde46('0x3')](0x0);var _0x2408ca=moment(_0x48dc02)[_0xde46('0x3')](0x0);return _0x203d24['diff'](_0x2408ca,_0xde46('0x4'));}function AgentComplete(_0x33375f,_0x4d0284){this[_0xde46('0x5')]=0x4;this[_0xde46('0x6')]=_0xde46('0x7');this['scheduledat']=_0x33375f[_0xde46('0x8')];this[_0xde46('0x9')]=_0x33375f['type'];this[_0xde46('0xa')]=_0x33375f[_0xde46('0x9')]===_0xde46('0xb')?_0xde46('0xc'):_0x33375f[_0xde46('0x9')];this[_0xde46('0xd')]=_0x33375f[_0xde46('0xd')];this[_0xde46('0xe')]=_0x33375f[_0xde46('0xe')];this['countnoanswerretry']=_0x33375f[_0xde46('0xf')];this[_0xde46('0x10')]=_0x33375f['countbusyretry']+_0x33375f[_0xde46('0xe')]+_0x33375f['countnoanswerretry']+_0x33375f[_0xde46('0x11')]+_0x33375f['countdropretry']+_0x33375f[_0xde46('0x12')]+_0x33375f[_0xde46('0x13')]+_0x33375f[_0xde46('0x14')];this[_0xde46('0x11')]=_0x33375f[_0xde46('0x11')];this[_0xde46('0x15')]=_0x33375f['countdropretry'];this[_0xde46('0x12')]=_0x33375f[_0xde46('0x12')];this['countmachineretry']=_0x33375f['countmachineretry'];this[_0xde46('0x14')]=_0x33375f[_0xde46('0x14')];this['uniqueid']=_0x4d0284[_0xde46('0x16')];this[_0xde46('0x17')]=_0x33375f[_0xde46('0x18')];this[_0xde46('0x19')]=_0x33375f['number'];this[_0xde46('0x1a')]=_0x33375f[_0xde46('0x1a')];this['responsetime']=_0x33375f[_0xde46('0x1b')];this[_0xde46('0x1c')]=_0x33375f[_0xde46('0x1c')];this[_0xde46('0x1d')]=moment()[_0xde46('0x1e')](_0xde46('0x1f'));this[_0xde46('0x20')]=getSeconds(_0x33375f[_0xde46('0x1b')],_0x33375f[_0xde46('0x1a')]);this['holdtime']=getSeconds(_0x33375f[_0xde46('0x1c')],_0x33375f[_0xde46('0x1b')]);this[_0xde46('0x21')]=getSeconds(this[_0xde46('0x1d')],_0x33375f[_0xde46('0x1c')]);this[_0xde46('0xc')]=_0x4d0284['queue'];this[_0xde46('0x22')]=_0x4d0284['membername'];this[_0xde46('0x23')]=_0x4d0284[_0xde46('0x23')];this[_0xde46('0x24')]=_0x33375f['callback'];this[_0xde46('0x25')]=_0x33375f[_0xde46('0x25')];this[_0xde46('0x26')]=_0x33375f['callbackat'];this['recallme']=_0x33375f['recallme'];this['ContactId']=_0x33375f[_0xde46('0x27')];this[_0xde46('0x28')]=_0x33375f[_0xde46('0x28')];this[_0xde46('0x29')]=_0x33375f[_0xde46('0x29')];this['VoiceQueueId']=_0x33375f['VoiceQueueId'];this['CampaignId']=_0x33375f['CampaignId'];this[_0xde46('0x2a')]=_0x33375f[_0xde46('0x2a')]||'';this[_0xde46('0x2b')]=_0x33375f[_0xde46('0x2b')]||'';}module['exports']=AgentComplete;
\ No newline at end of file
+var _0xc738=['countmachineretry','countagentrejectretry','uniqueid','name','starttime','responsetime','answertime','endtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','exports','util','lodash','moment','milliseconds','seconds','state','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xc738,0x135));var _0x8c73=function(_0x202c61,_0x3673e0){_0x202c61=_0x202c61-0x0;var _0x540691=_0xc738[_0x202c61];return _0x540691;};'use strict';var util=require(_0x8c73('0x0'));var _=require(_0x8c73('0x1'));var moment=require(_0x8c73('0x2'));function getSeconds(_0x20e730,_0x2202dc){var _0x20592a=moment(_0x20e730)[_0x8c73('0x3')](0x0);var _0x588883=moment(_0x2202dc)[_0x8c73('0x3')](0x0);return _0x20592a['diff'](_0x588883,_0x8c73('0x4'));}function AgentComplete(_0x18c98c,_0x2b606b){this[_0x8c73('0x5')]=0x4;this['statedesc']=_0x8c73('0x6');this[_0x8c73('0x7')]=_0x18c98c[_0x8c73('0x7')];this[_0x8c73('0x8')]=_0x18c98c[_0x8c73('0x8')];this[_0x8c73('0x9')]=_0x18c98c['type']===_0x8c73('0xa')?_0x8c73('0xb'):_0x18c98c['type'];this[_0x8c73('0xc')]=_0x18c98c[_0x8c73('0xc')];this['countcongestionretry']=_0x18c98c[_0x8c73('0xd')];this[_0x8c73('0xe')]=_0x18c98c[_0x8c73('0xe')];this[_0x8c73('0xf')]=_0x18c98c['countbusyretry']+_0x18c98c['countcongestionretry']+_0x18c98c[_0x8c73('0xe')]+_0x18c98c[_0x8c73('0x10')]+_0x18c98c[_0x8c73('0x11')]+_0x18c98c[_0x8c73('0x12')]+_0x18c98c[_0x8c73('0x13')]+_0x18c98c[_0x8c73('0x14')];this[_0x8c73('0x10')]=_0x18c98c[_0x8c73('0x10')];this[_0x8c73('0x11')]=_0x18c98c[_0x8c73('0x11')];this[_0x8c73('0x12')]=_0x18c98c['countabandonedretry'];this['countmachineretry']=_0x18c98c[_0x8c73('0x13')];this[_0x8c73('0x14')]=_0x18c98c[_0x8c73('0x14')];this[_0x8c73('0x15')]=_0x2b606b['uniqueid'];this['calleridname']=_0x18c98c[_0x8c73('0x16')];this['calleridnum']=_0x18c98c['number'];this[_0x8c73('0x17')]=_0x18c98c[_0x8c73('0x17')];this[_0x8c73('0x18')]=_0x18c98c[_0x8c73('0x18')];this[_0x8c73('0x19')]=_0x18c98c[_0x8c73('0x19')];this[_0x8c73('0x1a')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['ringtime']=getSeconds(_0x18c98c['responsetime'],_0x18c98c[_0x8c73('0x17')]);this['holdtime']=getSeconds(_0x18c98c[_0x8c73('0x19')],_0x18c98c[_0x8c73('0x18')]);this[_0x8c73('0x1b')]=getSeconds(this[_0x8c73('0x1a')],_0x18c98c[_0x8c73('0x19')]);this[_0x8c73('0xb')]=_0x2b606b[_0x8c73('0xb')];this[_0x8c73('0x1c')]=_0x2b606b[_0x8c73('0x1c')];this[_0x8c73('0x1d')]=_0x2b606b[_0x8c73('0x1d')];this[_0x8c73('0x1e')]=_0x18c98c[_0x8c73('0x1e')];this[_0x8c73('0x1f')]=_0x18c98c[_0x8c73('0x1f')];this[_0x8c73('0x20')]=_0x18c98c[_0x8c73('0x20')];this[_0x8c73('0x21')]=_0x18c98c[_0x8c73('0x21')];this[_0x8c73('0x22')]=_0x18c98c[_0x8c73('0x22')];this[_0x8c73('0x23')]=_0x18c98c[_0x8c73('0x23')];this[_0x8c73('0x24')]=_0x18c98c[_0x8c73('0x24')];this['VoiceQueueId']=_0x18c98c[_0x8c73('0x25')];this['CampaignId']=_0x18c98c[_0x8c73('0x26')];this[_0x8c73('0x27')]=_0x18c98c[_0x8c73('0x27')]||'';this['originatecalleridname']=_0x18c98c['originatecalleridname']||'';}module[_0x8c73('0x28')]=AgentComplete;
\ No newline at end of file
index 188c10f..e779a93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x826a=['calleridname','calleridnum','starttime','responsetime','endtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry'];(function(_0x1aa3fe,_0x27c5fa){var _0x163cee=function(_0x2a1505){while(--_0x2a1505){_0x1aa3fe['push'](_0x1aa3fe['shift']());}};_0x163cee(++_0x27c5fa);}(_0x826a,0x1aa));var _0xa826=function(_0x321e2f,_0x404ca9){_0x321e2f=_0x321e2f-0x0;var _0x450293=_0x826a[_0x321e2f];return _0x450293;};'use strict';var util=require('util');var _=require(_0xa826('0x0'));var moment=require('moment');function getSeconds(_0x204abf,_0x50c70e){var _0x376d53=moment(_0x204abf)[_0xa826('0x1')](0x0);var _0x2212a4=moment(_0x50c70e)[_0xa826('0x1')](0x0);return _0x376d53['diff'](_0x2212a4,_0xa826('0x2'));}function Final(_0x15f777){this[_0xa826('0x3')]=_0x15f777[_0xa826('0x3')];this[_0xa826('0x4')]=_0x15f777[_0xa826('0x4')];this[_0xa826('0x5')]=_0x15f777[_0xa826('0x5')];this[_0xa826('0x6')]=_0x15f777[_0xa826('0x5')]===_0xa826('0x7')?_0xa826('0x8'):_0x15f777[_0xa826('0x5')];this[_0xa826('0x9')]=_0x15f777[_0xa826('0x9')];this[_0xa826('0xa')]=_0x15f777['countcongestionretry'];this[_0xa826('0xb')]=_0x15f777['countnoanswerretry'];this[_0xa826('0xc')]=_0x15f777[_0xa826('0x9')]+_0x15f777[_0xa826('0xa')]+_0x15f777[_0xa826('0xb')]+_0x15f777[_0xa826('0xd')]+_0x15f777[_0xa826('0xe')]+_0x15f777[_0xa826('0xf')]+_0x15f777['countmachineretry']+_0x15f777[_0xa826('0x10')];this['countnosuchnumberretry']=_0x15f777[_0xa826('0xd')];this[_0xa826('0xe')]=_0x15f777['countdropretry'];this['countabandonedretry']=_0x15f777['countabandonedretry'];this[_0xa826('0x11')]=_0x15f777['countmachineretry'];this['countagentrejectretry']=_0x15f777[_0xa826('0x10')];this[_0xa826('0x8')]=_0x15f777[_0xa826('0x8')];this['calleridname']=_0x15f777[_0xa826('0x12')];this[_0xa826('0x13')]=_0x15f777[_0xa826('0x13')];this[_0xa826('0x14')]=_0x15f777[_0xa826('0x14')];this['responsetime']=_0x15f777[_0xa826('0x15')];this[_0xa826('0x16')]=_0x15f777[_0xa826('0x15')];this['ringtime']=_0x15f777['ringtime']||0x0;this[_0xa826('0x17')]=_0x15f777[_0xa826('0x17')]||0x0;this[_0xa826('0x18')]=_0x15f777[_0xa826('0x18')]||0x0;this[_0xa826('0x19')]=_0x15f777['callback'];this[_0xa826('0x1a')]=_0x15f777[_0xa826('0x1a')];this[_0xa826('0x1b')]=_0x15f777['callbackat'];this['recallme']=_0x15f777[_0xa826('0x1c')];this[_0xa826('0x1d')]=_0x15f777[_0xa826('0x1d')];this['ListId']=_0x15f777[_0xa826('0x1e')];this[_0xa826('0x1f')]=_0x15f777[_0xa826('0x1f')];this[_0xa826('0x20')]=_0x15f777[_0xa826('0x20')];this['CampaignId']=_0x15f777[_0xa826('0x21')];this['originatecalleridnum']=_0x15f777[_0xa826('0x22')]||'';this[_0xa826('0x23')]=_0x15f777['originatecalleridname']||'';}module[_0xa826('0x24')]=Final;
\ No newline at end of file
+var _0xae24=['countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','seconds','uniqueid','scheduledat','campaigntype','queue','type','countbusyretry'];(function(_0x267096,_0x549583){var _0x4c4847=function(_0x5a56f5){while(--_0x5a56f5){_0x267096['push'](_0x267096['shift']());}};_0x4c4847(++_0x549583);}(_0xae24,0x182));var _0x4ae2=function(_0x1ecdeb,_0x12deb4){_0x1ecdeb=_0x1ecdeb-0x0;var _0x1a63f8=_0xae24[_0x1ecdeb];return _0x1a63f8;};'use strict';var util=require(_0x4ae2('0x0'));var _=require('lodash');var moment=require(_0x4ae2('0x1'));function getSeconds(_0x4997b0,_0xf4c45d){var _0x1bf293=moment(_0x4997b0)['milliseconds'](0x0);var _0x5b6f4d=moment(_0xf4c45d)[_0x4ae2('0x2')](0x0);return _0x1bf293['diff'](_0x5b6f4d,_0x4ae2('0x3'));}function Final(_0xf26f45){this[_0x4ae2('0x4')]=_0xf26f45[_0x4ae2('0x4')];this[_0x4ae2('0x5')]=_0xf26f45[_0x4ae2('0x5')];this['type']=_0xf26f45['type'];this[_0x4ae2('0x6')]=_0xf26f45['type']==='outbound'?_0x4ae2('0x7'):_0xf26f45[_0x4ae2('0x8')];this['countbusyretry']=_0xf26f45[_0x4ae2('0x9')];this[_0x4ae2('0xa')]=_0xf26f45[_0x4ae2('0xa')];this[_0x4ae2('0xb')]=_0xf26f45['countnoanswerretry'];this[_0x4ae2('0xc')]=_0xf26f45[_0x4ae2('0x9')]+_0xf26f45[_0x4ae2('0xa')]+_0xf26f45['countnoanswerretry']+_0xf26f45[_0x4ae2('0xd')]+_0xf26f45[_0x4ae2('0xe')]+_0xf26f45[_0x4ae2('0xf')]+_0xf26f45[_0x4ae2('0x10')]+_0xf26f45[_0x4ae2('0x11')];this[_0x4ae2('0xd')]=_0xf26f45[_0x4ae2('0xd')];this[_0x4ae2('0xe')]=_0xf26f45[_0x4ae2('0xe')];this['countabandonedretry']=_0xf26f45['countabandonedretry'];this['countmachineretry']=_0xf26f45[_0x4ae2('0x10')];this[_0x4ae2('0x11')]=_0xf26f45['countagentrejectretry'];this[_0x4ae2('0x7')]=_0xf26f45[_0x4ae2('0x7')];this[_0x4ae2('0x12')]=_0xf26f45[_0x4ae2('0x12')];this[_0x4ae2('0x13')]=_0xf26f45[_0x4ae2('0x13')];this[_0x4ae2('0x14')]=_0xf26f45[_0x4ae2('0x14')];this[_0x4ae2('0x15')]=_0xf26f45[_0x4ae2('0x15')];this['endtime']=_0xf26f45['responsetime'];this[_0x4ae2('0x16')]=_0xf26f45[_0x4ae2('0x16')]||0x0;this['holdtime']=_0xf26f45[_0x4ae2('0x17')]||0x0;this[_0x4ae2('0x18')]=_0xf26f45[_0x4ae2('0x18')]||0x0;this[_0x4ae2('0x19')]=_0xf26f45[_0x4ae2('0x19')];this['callbackuniqueid']=_0xf26f45[_0x4ae2('0x1a')];this['callbackat']=_0xf26f45['callbackat'];this[_0x4ae2('0x1b')]=_0xf26f45[_0x4ae2('0x1b')];this[_0x4ae2('0x1c')]=_0xf26f45[_0x4ae2('0x1c')];this[_0x4ae2('0x1d')]=_0xf26f45['ListId'];this[_0x4ae2('0x1e')]=_0xf26f45['UserId'];this[_0x4ae2('0x1f')]=_0xf26f45[_0x4ae2('0x1f')];this[_0x4ae2('0x20')]=_0xf26f45['CampaignId'];this[_0x4ae2('0x21')]=_0xf26f45[_0x4ae2('0x21')]||'';this[_0x4ae2('0x22')]=_0xf26f45[_0x4ae2('0x22')]||'';}module[_0x4ae2('0x23')]=Final;
\ No newline at end of file
index c37d38a..dc3b19d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fcd=['countmachineretry','uniqueid','name','calleridnum','number','starttime','responsetime','endtime','format','holdtime','IVR','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','lodash','moment','milliseconds','diff','seconds','state','Answer','scheduledat','type','campaigntype','outbound','queue','countcongestionretry','countnoanswerretry','countglobal','countbusyretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry'];(function(_0x4ee461,_0x36191a){var _0x451a1e=function(_0x3eb998){while(--_0x3eb998){_0x4ee461['push'](_0x4ee461['shift']());}};_0x451a1e(++_0x36191a);}(_0x2fcd,0x64));var _0xd2fc=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x2fcd[_0x17d9e3];return _0x14192d;};'use strict';var util=require('util');var _=require(_0xd2fc('0x0'));var moment=require(_0xd2fc('0x1'));function getSeconds(_0x33db2c,_0x68d48e){var _0x4c014b=moment(_0x33db2c)[_0xd2fc('0x2')](0x0);var _0x38eabc=moment(_0x68d48e)[_0xd2fc('0x2')](0x0);return _0x4c014b[_0xd2fc('0x3')](_0x38eabc,_0xd2fc('0x4'));}function Hangup(_0x3d31bb,_0x491489){this[_0xd2fc('0x5')]=0x4;this['statedesc']=_0xd2fc('0x6');this['scheduledat']=_0x3d31bb[_0xd2fc('0x7')];this[_0xd2fc('0x8')]=_0x3d31bb[_0xd2fc('0x8')];this[_0xd2fc('0x9')]=_0x3d31bb['type']===_0xd2fc('0xa')?_0xd2fc('0xb'):_0x3d31bb[_0xd2fc('0x8')];this['countbusyretry']=_0x3d31bb['countbusyretry'];this['countcongestionretry']=_0x3d31bb[_0xd2fc('0xc')];this[_0xd2fc('0xd')]=_0x3d31bb[_0xd2fc('0xd')];this[_0xd2fc('0xe')]=_0x3d31bb[_0xd2fc('0xf')]+_0x3d31bb[_0xd2fc('0xc')]+_0x3d31bb[_0xd2fc('0xd')]+_0x3d31bb[_0xd2fc('0x10')]+_0x3d31bb[_0xd2fc('0x11')]+_0x3d31bb[_0xd2fc('0x12')]+_0x3d31bb['countmachineretry']+_0x3d31bb[_0xd2fc('0x13')];this[_0xd2fc('0x10')]=_0x3d31bb['countnosuchnumberretry'];this[_0xd2fc('0x11')]=_0x3d31bb['countdropretry'];this[_0xd2fc('0x12')]=_0x3d31bb[_0xd2fc('0x12')];this[_0xd2fc('0x14')]=_0x3d31bb['countmachineretry'];this[_0xd2fc('0x13')]=_0x3d31bb[_0xd2fc('0x13')];this[_0xd2fc('0x15')]=_0x491489['uniqueid'];this['calleridname']=_0x3d31bb[_0xd2fc('0x16')];this[_0xd2fc('0x17')]=_0x3d31bb[_0xd2fc('0x18')];this[_0xd2fc('0x19')]=_0x3d31bb[_0xd2fc('0x19')];this['responsetime']=_0x3d31bb[_0xd2fc('0x1a')];this[_0xd2fc('0x1b')]=moment()[_0xd2fc('0x1c')]('YYYY-MM-DD\x20HH:mm:ss');this['ringtime']=getSeconds(_0x3d31bb[_0xd2fc('0x1a')],_0x3d31bb[_0xd2fc('0x19')]);this[_0xd2fc('0x1d')]=0x0;this['talktime']=getSeconds(this[_0xd2fc('0x1b')],_0x3d31bb[_0xd2fc('0x1a')]);this['queue']=_0x3d31bb[_0xd2fc('0xb')];this['membername']=_0xd2fc('0x1e');this['reason']=_0x491489['cause-txt'];this[_0xd2fc('0x1f')]=_0x3d31bb[_0xd2fc('0x1f')];this[_0xd2fc('0x20')]=_0x3d31bb['callbackuniqueid'];this['callbackat']=_0x3d31bb[_0xd2fc('0x21')];this[_0xd2fc('0x22')]=_0x3d31bb[_0xd2fc('0x22')];this[_0xd2fc('0x23')]=_0x3d31bb[_0xd2fc('0x23')];this[_0xd2fc('0x24')]=_0x3d31bb[_0xd2fc('0x24')];this[_0xd2fc('0x25')]=_0x3d31bb['UserId'];this[_0xd2fc('0x26')]=_0x3d31bb[_0xd2fc('0x26')];this[_0xd2fc('0x27')]=_0x3d31bb[_0xd2fc('0x27')];}module['exports']=Hangup;
\ No newline at end of file
+var _0xf48d=['util','lodash','milliseconds','diff','seconds','statedesc','Answer','scheduledat','campaigntype','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime','ringtime','talktime','membername','IVR','reason','cause-txt','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports'];(function(_0x2d68c2,_0x18980d){var _0x437d9b=function(_0x470bab){while(--_0x470bab){_0x2d68c2['push'](_0x2d68c2['shift']());}};_0x437d9b(++_0x18980d);}(_0xf48d,0x108));var _0xdf48=function(_0x44d487,_0x13ba53){_0x44d487=_0x44d487-0x0;var _0x2a01ee=_0xf48d[_0x44d487];return _0x2a01ee;};'use strict';var util=require(_0xdf48('0x0'));var _=require(_0xdf48('0x1'));var moment=require('moment');function getSeconds(_0x904401,_0x76e47d){var _0xe3e178=moment(_0x904401)[_0xdf48('0x2')](0x0);var _0x3830df=moment(_0x76e47d)['milliseconds'](0x0);return _0xe3e178[_0xdf48('0x3')](_0x3830df,_0xdf48('0x4'));}function Hangup(_0x2a99b6,_0x223912){this['state']=0x4;this[_0xdf48('0x5')]=_0xdf48('0x6');this[_0xdf48('0x7')]=_0x2a99b6[_0xdf48('0x7')];this['type']=_0x2a99b6['type'];this[_0xdf48('0x8')]=_0x2a99b6[_0xdf48('0x9')]===_0xdf48('0xa')?_0xdf48('0xb'):_0x2a99b6[_0xdf48('0x9')];this['countbusyretry']=_0x2a99b6[_0xdf48('0xc')];this[_0xdf48('0xd')]=_0x2a99b6[_0xdf48('0xd')];this[_0xdf48('0xe')]=_0x2a99b6['countnoanswerretry'];this[_0xdf48('0xf')]=_0x2a99b6[_0xdf48('0xc')]+_0x2a99b6['countcongestionretry']+_0x2a99b6[_0xdf48('0xe')]+_0x2a99b6[_0xdf48('0x10')]+_0x2a99b6[_0xdf48('0x11')]+_0x2a99b6[_0xdf48('0x12')]+_0x2a99b6[_0xdf48('0x13')]+_0x2a99b6[_0xdf48('0x14')];this[_0xdf48('0x10')]=_0x2a99b6[_0xdf48('0x10')];this[_0xdf48('0x11')]=_0x2a99b6[_0xdf48('0x11')];this[_0xdf48('0x12')]=_0x2a99b6[_0xdf48('0x12')];this[_0xdf48('0x13')]=_0x2a99b6[_0xdf48('0x13')];this[_0xdf48('0x14')]=_0x2a99b6['countagentrejectretry'];this[_0xdf48('0x15')]=_0x223912[_0xdf48('0x15')];this[_0xdf48('0x16')]=_0x2a99b6[_0xdf48('0x17')];this[_0xdf48('0x18')]=_0x2a99b6[_0xdf48('0x19')];this[_0xdf48('0x1a')]=_0x2a99b6['starttime'];this[_0xdf48('0x1b')]=_0x2a99b6[_0xdf48('0x1b')];this[_0xdf48('0x1c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0xdf48('0x1d')]=getSeconds(_0x2a99b6['responsetime'],_0x2a99b6['starttime']);this['holdtime']=0x0;this[_0xdf48('0x1e')]=getSeconds(this['endtime'],_0x2a99b6[_0xdf48('0x1b')]);this[_0xdf48('0xb')]=_0x2a99b6[_0xdf48('0xb')];this[_0xdf48('0x1f')]=_0xdf48('0x20');this[_0xdf48('0x21')]=_0x223912[_0xdf48('0x22')];this['callback']=_0x2a99b6[_0xdf48('0x23')];this[_0xdf48('0x24')]=_0x2a99b6['callbackuniqueid'];this['callbackat']=_0x2a99b6['callbackat'];this['recallme']=_0x2a99b6[_0xdf48('0x25')];this[_0xdf48('0x26')]=_0x2a99b6[_0xdf48('0x26')];this[_0xdf48('0x27')]=_0x2a99b6['ListId'];this['UserId']=_0x2a99b6[_0xdf48('0x28')];this[_0xdf48('0x29')]=_0x2a99b6[_0xdf48('0x29')];this[_0xdf48('0x2a')]=_0x2a99b6[_0xdf48('0x2a')];}module[_0xdf48('0x2b')]=Hangup;
\ No newline at end of file
index 75ad105..d629ce8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5b3=['holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','diff','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','calleridname','name','calleridnum','number','starttime','responsetime','endtime','ringtime'];(function(_0x2454e4,_0x48edf7){var _0x37aa6e=function(_0x5e5790){while(--_0x5e5790){_0x2454e4['push'](_0x2454e4['shift']());}};_0x37aa6e(++_0x48edf7);}(_0xf5b3,0x13d));var _0x3f5b=function(_0x26a515,_0x286339){_0x26a515=_0x26a515-0x0;var _0x314682=_0xf5b3[_0x26a515];return _0x314682;};'use strict';var util=require(_0x3f5b('0x0'));var _=require(_0x3f5b('0x1'));var moment=require('moment');function getSeconds(_0x26c568,_0x57815e){var _0xbed651=moment(_0x26c568)['milliseconds'](0x0);var _0x28ec91=moment(_0x57815e)['milliseconds'](0x0);return _0xbed651[_0x3f5b('0x2')](_0x28ec91,'seconds');}function History(_0x4a21bb){this[_0x3f5b('0x3')]=_0x4a21bb[_0x3f5b('0x3')];this[_0x3f5b('0x4')]=_0x4a21bb[_0x3f5b('0x4')]||undefined;this[_0x3f5b('0x5')]=_0x4a21bb[_0x3f5b('0x5')];this[_0x3f5b('0x6')]=_0x4a21bb[_0x3f5b('0x5')]===_0x3f5b('0x7')?_0x3f5b('0x8'):_0x4a21bb[_0x3f5b('0x5')];this[_0x3f5b('0x9')]=_0x4a21bb[_0x3f5b('0x9')];this['countcongestionretry']=_0x4a21bb[_0x3f5b('0xa')];this[_0x3f5b('0xb')]=_0x4a21bb[_0x3f5b('0xb')];this['countglobal']=_0x4a21bb['countbusyretry']+_0x4a21bb[_0x3f5b('0xa')]+_0x4a21bb[_0x3f5b('0xb')]+_0x4a21bb['countnosuchnumberretry']+_0x4a21bb[_0x3f5b('0xc')]+_0x4a21bb[_0x3f5b('0xd')]+_0x4a21bb[_0x3f5b('0xe')]+_0x4a21bb[_0x3f5b('0xf')];this[_0x3f5b('0x10')]=_0x4a21bb[_0x3f5b('0x10')];this[_0x3f5b('0xc')]=_0x4a21bb[_0x3f5b('0xc')];this[_0x3f5b('0xd')]=_0x4a21bb[_0x3f5b('0xd')];this[_0x3f5b('0xe')]=_0x4a21bb['countmachineretry'];this[_0x3f5b('0xf')]=_0x4a21bb[_0x3f5b('0xf')];this['queue']=_0x4a21bb[_0x3f5b('0x8')];this[_0x3f5b('0x11')]=_0x4a21bb[_0x3f5b('0x12')];this[_0x3f5b('0x13')]=_0x4a21bb[_0x3f5b('0x14')];this[_0x3f5b('0x15')]=_0x4a21bb['starttime'];this[_0x3f5b('0x16')]=_0x4a21bb[_0x3f5b('0x16')];this[_0x3f5b('0x17')]=_0x4a21bb['responsetime'];this[_0x3f5b('0x18')]=getSeconds(_0x4a21bb[_0x3f5b('0x16')],_0x4a21bb['starttime']);this[_0x3f5b('0x19')]=0x0;this[_0x3f5b('0x1a')]=0x0;this[_0x3f5b('0x1b')]=_0x4a21bb['callback'];this['callbackuniqueid']=_0x4a21bb[_0x3f5b('0x1c')];this[_0x3f5b('0x1d')]=_0x4a21bb[_0x3f5b('0x1d')];this[_0x3f5b('0x1e')]=_0x4a21bb['recallme'];this[_0x3f5b('0x1f')]=_0x4a21bb[_0x3f5b('0x1f')];this['ListId']=_0x4a21bb[_0x3f5b('0x20')];this[_0x3f5b('0x21')]=_0x4a21bb[_0x3f5b('0x21')];this[_0x3f5b('0x22')]=_0x4a21bb[_0x3f5b('0x22')];this[_0x3f5b('0x23')]=_0x4a21bb[_0x3f5b('0x23')];this[_0x3f5b('0x24')]=_0x4a21bb[_0x3f5b('0x24')]||'';this[_0x3f5b('0x25')]=_0x4a21bb[_0x3f5b('0x25')]||'';}module['exports']=History;
\ No newline at end of file
+var _0xf2c6=['talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','countabandonedretry','calleridnum','number','responsetime','endtime','ringtime','starttime'];(function(_0x5d1d99,_0x10ca23){var _0x2957ec=function(_0x4f4ba){while(--_0x4f4ba){_0x5d1d99['push'](_0x5d1d99['shift']());}};_0x2957ec(++_0x10ca23);}(_0xf2c6,0x175));var _0x6f2c=function(_0x16629d,_0x492375){_0x16629d=_0x16629d-0x0;var _0x56ccee=_0xf2c6[_0x16629d];return _0x56ccee;};'use strict';var util=require('util');var _=require(_0x6f2c('0x0'));var moment=require('moment');function getSeconds(_0x2104b3,_0x2f28b9){var _0x5d06c2=moment(_0x2104b3)['milliseconds'](0x0);var _0x56a683=moment(_0x2f28b9)['milliseconds'](0x0);return _0x5d06c2[_0x6f2c('0x1')](_0x56a683,_0x6f2c('0x2'));}function History(_0x13fe47){this[_0x6f2c('0x3')]=_0x13fe47[_0x6f2c('0x3')];this[_0x6f2c('0x4')]=_0x13fe47[_0x6f2c('0x4')]||undefined;this['type']=_0x13fe47[_0x6f2c('0x5')];this[_0x6f2c('0x6')]=_0x13fe47[_0x6f2c('0x5')]===_0x6f2c('0x7')?_0x6f2c('0x8'):_0x13fe47[_0x6f2c('0x5')];this['countbusyretry']=_0x13fe47['countbusyretry'];this[_0x6f2c('0x9')]=_0x13fe47[_0x6f2c('0x9')];this[_0x6f2c('0xa')]=_0x13fe47[_0x6f2c('0xa')];this[_0x6f2c('0xb')]=_0x13fe47['countbusyretry']+_0x13fe47[_0x6f2c('0x9')]+_0x13fe47[_0x6f2c('0xa')]+_0x13fe47[_0x6f2c('0xc')]+_0x13fe47[_0x6f2c('0xd')]+_0x13fe47['countabandonedretry']+_0x13fe47[_0x6f2c('0xe')]+_0x13fe47[_0x6f2c('0xf')];this[_0x6f2c('0xc')]=_0x13fe47[_0x6f2c('0xc')];this[_0x6f2c('0xd')]=_0x13fe47['countdropretry'];this[_0x6f2c('0x10')]=_0x13fe47[_0x6f2c('0x10')];this[_0x6f2c('0xe')]=_0x13fe47[_0x6f2c('0xe')];this[_0x6f2c('0xf')]=_0x13fe47[_0x6f2c('0xf')];this[_0x6f2c('0x8')]=_0x13fe47['queue'];this['calleridname']=_0x13fe47['name'];this[_0x6f2c('0x11')]=_0x13fe47[_0x6f2c('0x12')];this['starttime']=_0x13fe47['starttime'];this[_0x6f2c('0x13')]=_0x13fe47[_0x6f2c('0x13')];this[_0x6f2c('0x14')]=_0x13fe47[_0x6f2c('0x13')];this[_0x6f2c('0x15')]=getSeconds(_0x13fe47[_0x6f2c('0x13')],_0x13fe47[_0x6f2c('0x16')]);this['holdtime']=0x0;this[_0x6f2c('0x17')]=0x0;this[_0x6f2c('0x18')]=_0x13fe47[_0x6f2c('0x18')];this[_0x6f2c('0x19')]=_0x13fe47[_0x6f2c('0x19')];this[_0x6f2c('0x1a')]=_0x13fe47['callbackat'];this[_0x6f2c('0x1b')]=_0x13fe47['recallme'];this['ContactId']=_0x13fe47[_0x6f2c('0x1c')];this[_0x6f2c('0x1d')]=_0x13fe47['ListId'];this[_0x6f2c('0x1e')]=_0x13fe47[_0x6f2c('0x1e')];this[_0x6f2c('0x1f')]=_0x13fe47['VoiceQueueId'];this[_0x6f2c('0x20')]=_0x13fe47[_0x6f2c('0x20')];this[_0x6f2c('0x21')]=_0x13fe47['originatecalleridnum']||'';this[_0x6f2c('0x22')]=_0x13fe47[_0x6f2c('0x22')]||'';}module[_0x6f2c('0x23')]=History;
\ No newline at end of file
index dcdc0cc..e2e6ba5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ae3=['AMD','emit','custom:amd','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','MACHINE','Machine','countmachineretry','buildObj','[syncAgentComplete][createHistory][0]','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','reason\x2019\x20machine....','add','dialMachineRetryFrequency','minutes','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countbusyretry','countcongestionretry','createStateFinal','[syncHangupIvr][createHistory]','[syncHangupIvr]','AnswerAGI','AGI','dialQueueProject','outboundUnknownCallsDay','cause-txt','Unknow','syncAgentComplete','reason','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete]','answertime','queueCallerAbandonCreateState','[syncAgentComplete][createHistory]','syncQueueCallerAbandon','YYYY-MM-DD\x20HH:mm:ss','droptime','responsetime','dialQueueTimeout','Drop','dropreason','TIMEOUT','dialDropRetryFrequency','callAdditionalPhoneAfterMin','additional','dialDropMaxRetry','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','dialAbandonedRetryFrequency','voiceQueue','dialAbandonedMaxRetry','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','actionid','roundrobin','locked','paused','stateinterface','push','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','[Catch][Preview][syncQueueStatusComplete]','_rr','unlockRR','Agent:\x20','[booked][RR][finaly]','contactAgent-idHopper:\x20','[booked][unlock]','[unlock][syncQueueStatusComplete]','[unlock3][syncQueueStatusComplete]','resetActiveCalls','isTrunkReachable','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','command','iftime\x20%s,%s','interval','timezones','content','indexOf','true','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','dialMethod','progressive','handlePower','dialPowerLevel','Queue','method\x20not\x20recognized','handleIvr','dialGlobalInterval','dialTimezone','[syncQueueSummary]','throttle','dialPreviewRecallmeReminder','online','handlePreviewRecallNotifications','map','checkPreviewRecallReminder','checkIsTrunkReachable','launchHandleIvr','[syncCampaigns]','\x5cw{0,','pow','random','match','object','originate','voiceQueue\x20is\x20undefine','phone','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','getCaller','xcally-motion-dialer','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDBETWEENWORDSSILENCE','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','Contact','tags','createdAt','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','SIP/%s/%s%s','trim','dialCutDigit','substring','from-sip','dialOriginateTimeout','outboundOriginateFailureCallsDay','[originateError]:\x20%s','OriginateError','[originate][error]','Error','getQueue','response','callProgressDetecting','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','[rescheduleContact][Drop]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','custom:agentnosuchnumber','nosuchnumber','dialNoSuchNumberRetryFrequency','dialNoSuchNumberMaxRetry','reason\x200\x20no\x20such\x20number....','NoAnswer','countglobal','custom:agentnoanswer','noanswer','reason\x203\x20ringing\x20no\x20answer','dialBusyRetryFrequency','reason\x205\x20busy','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','custom:agentreject','agentreject','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','Success','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','predictiveIntervalMaxThreshold','round','predictiveIntervalMinThreshold','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','dropRate','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','dialPredictiveInterval','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at',')\x20are\x20less\x20than\x20threshold\x20(','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','outboundQueuePauses','[CatchErlangB]','floor','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','checkContactBlack','queueStatusComplete:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','Queue:\x20','actionOriginate','scheduledat','dialRecallMeTimeout','Agent','voicePause','run','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose]','BLACKLIST','Blacklist','[Originate][historyBlacklist]','limitCalls','dialOrderByScheduledAt','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','[getContactCampaign2]','dialLimitQueue','not_inuse','[countReScheduled]\x20','ACTIVE','[getContactDialer2]','tryOriginatePredictive','[actionOriginatePredictive]\x20','--------\x20Drop\x20Rate\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','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','Umin\x20=\x20','exports','util','lodash','uuid','moment','md5','ioredis','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','syncQueueSummary','../ami','redis','defaults','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperAdditionalPhone','../rpc/voiceQueueRt','./action','./history','./final','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','prototype','enqueue','tail','finally','sequence','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','uniqueId','optionPredictive','startPredictive','startProgressive','queueBooked','queueBookedRR','syncAgentConnect','queuecallerabandon','originateresponse','syncOriginateResponse','bind','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','hangup','syncHangup','newexten','varset','syncVarSet','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','isUndefined','message','AGENTS_NOT_LOGGED','name','\x20NOT\x20Active','Interval','\x20INTERVAL_IS_NULL','Intervals','INTERVAL_IS_NULL','isEmpty','[ifTime][Action]','stringify','seconds','type','outbound','strategy','loggedIn','pTalking','sumDuration','sumHoldTime','talking','total','unmanaged','waiting','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundRejectCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','callerid','format','ivr','campaign:ivr:%s','campaign:save','info','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalTotalCalls','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','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\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','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','merge','milliseconds','diff','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','preview','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','inspect','error','stack','length','originated','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contacts','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','available','NOT_ACTIVE','debug','[syncQueueSummary]\x20Campaign\x20Queue:\x20','IS_DISACTIVED','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20disactive','state','statedesc','endtime','starttime','clearZombieChannels','[uniqueid]','[actions]','isNil','Action','status','channel','catch','updateOriginated','queue','[Dialer][checkChannel][ivr]','countReScheduled','resolve','checkIsBlackList','[checkIsBlackList]\x20','verifyAdditionalPhones','[verifyAdditionalPhone]\x20','then','swapAdditionalPhones','[swapAdditionalPhone]\x20','checkIsBlackListIvr','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','saveInDb','pick','ContactId','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','isSuccess','active','SIP/%s','reachable','unmonitored','uniqueid','variable','exten','dialAMDActive','value','HANGUP','HangupInAMD','membername'];(function(_0x12135f,_0x8a8f9f){var _0x5cc01f=function(_0x543fc2){while(--_0x543fc2){_0x12135f['push'](_0x12135f['shift']());}};_0x5cc01f(++_0x8a8f9f);}(_0x1ae3,0x139));var _0x31ae=function(_0x199475,_0x8be42a){_0x199475=_0x199475-0x0;var _0x17059f=_0x1ae3[_0x199475];return _0x17059f;};'use strict';var util=require(_0x31ae('0x0'));var _=require(_0x31ae('0x1'));var BPromise=require('bluebird');var uuid=require(_0x31ae('0x2'));var moment=require(_0x31ae('0x3'));var rr=require('rr');var md5=require(_0x31ae('0x4'));var Redis=require(_0x31ae('0x5'));var ut=require('../preview/util/util');var config=require(_0x31ae('0x6'));var logger=require(_0x31ae('0x7'))(_0x31ae('0x8'));var loggerBooked=require(_0x31ae('0x7'))(_0x31ae('0x9'));var loggerPredictive=require(_0x31ae('0x7'))(_0x31ae('0xa'));var loggerPredictiveCalls=require(_0x31ae('0x7'))(_0x31ae('0xb'));var loggerSyncQueueSummary=require(_0x31ae('0x7'))(_0x31ae('0xc'));var ami=require(_0x31ae('0xd'));config[_0x31ae('0xe')]=_[_0x31ae('0xf')](config[_0x31ae('0xe')],{'host':'localhost','port':0x18eb});var io=require(_0x31ae('0x10'))(new Redis(config[_0x31ae('0xe')]));var cmHopper=require(_0x31ae('0x11'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperFinal=require(_0x31ae('0x12'));var cmHopperAdditionalPhone=require(_0x31ae('0x13'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x31ae('0x14'));var RpcSetting=require('../rpc/setting');var Action=require(_0x31ae('0x15'));var History=require(_0x31ae('0x16'));var Final=require(_0x31ae('0x17'));var AgentComplete=require('./agentComplete');var QueueCallerAbandon=require(_0x31ae('0x18'));var Hangup=require(_0x31ae('0x19'));var ipAgi=process[_0x31ae('0x1a')][_0x31ae('0x1b')]||_0x31ae('0x1c');var strategy={'rrmemory':_0x31ae('0x1d'),'roundrobin':'roundrobin'};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0x31ae('0x1e')][_0x31ae('0x1f')]=function(_0x1ec358){this[_0x31ae('0x20')]=this[_0x31ae('0x20')]?this[_0x31ae('0x20')][_0x31ae('0x21')](_0x1ec358):_0x1ec358();};function Dialer(_0x379c51,_0x5aa824){this[_0x31ae('0x22')]=new Sequence();this['preview']=_0x5aa824;this[_0x31ae('0x23')]=_0x379c51[_0x31ae('0x23')];this[_0x31ae('0x24')]=_0x379c51[_0x31ae('0x24')];this[_0x31ae('0x25')]=_0x379c51[_0x31ae('0x25')];this[_0x31ae('0x26')]=_0x379c51[_0x31ae('0x26')];this[_0x31ae('0x27')]=config[_0x31ae('0x27')]||0x2;this[_0x31ae('0x28')]={};this[_0x31ae('0x29')]={};this['contactsId']={};this[_0x31ae('0x2a')]={};this[_0x31ae('0x2b')]={};this[_0x31ae('0x2c')]={};this[_0x31ae('0x2d')]={};this['ivrOriginated']={};this[_0x31ae('0x2e')]={};this[_0x31ae('0x2f')]={};ami['on']('agentconnect',this[_0x31ae('0x30')]['bind'](this));ami['on'](_0x31ae('0x31'),this['syncQueueCallerAbandon']['bind'](this));ami['on'](_0x31ae('0x32'),this[_0x31ae('0x33')][_0x31ae('0x34')](this));ami['on']('agentcomplete',this['syncAgentComplete']['bind'](this));ami['on'](_0x31ae('0x35'),this['syncQueueSummary'][_0x31ae('0x34')](this));ami['on'](_0x31ae('0x36'),this[_0x31ae('0x37')][_0x31ae('0x34')](this));ami['on'](_0x31ae('0x38'),this[_0x31ae('0x39')][_0x31ae('0x34')](this));ami['on'](_0x31ae('0x3a'),this['syncNewExten'][_0x31ae('0x34')](this));ami['on'](_0x31ae('0x3b'),this[_0x31ae('0x3c')][_0x31ae('0x34')](this));ami['on']('queuemember',this[_0x31ae('0x3d')][_0x31ae('0x34')](this));ami['on'](_0x31ae('0x3e'),this[_0x31ae('0x3f')][_0x31ae('0x34')](this));this[_0x31ae('0x40')]();this[_0x31ae('0x41')]();RpcSetting['getSettings']()['then'](function(_0xef2749){previewRecallmeReminderInterval=_0xef2749['previewRecallmeReminderInterval'];});}function isNotNull(_0x36baec){return _0x36baec!==null&&!_[_0x31ae('0x42')](_0x36baec);}function checkIsLoggedIn(_0x523e4e,_0x2008a5){return function(){if(_0x2008a5<=0x0){_0x523e4e[_0x31ae('0x43')]=_0x31ae('0x44');throw _0x523e4e[_0x31ae('0x45')]+'\x20AGENTS\x20NOT\x20LOGGED';}};}function isActive(_0x21466d){return _0x21466d;}function checkIsActive(_0x130ee9,_0x4d22cf){return function(){if(!isActive(_0x4d22cf)){_0x130ee9['message']='NOT_ACTIVE';throw _0x130ee9[_0x31ae('0x45')]+_0x31ae('0x46');}};}function checkInterval(_0x81bb53){return function(){if(!isNotNull(_0x81bb53[_0x31ae('0x47')])){_0x81bb53[_0x31ae('0x43')]='INTERVAL_IS_NULL';throw _0x81bb53[_0x31ae('0x45')]+_0x31ae('0x48');}if(!isNotNull(_0x81bb53[_0x31ae('0x47')][_0x31ae('0x49')])){_0x81bb53[_0x31ae('0x43')]=_0x31ae('0x4a');throw _0x81bb53[_0x31ae('0x45')]+_0x31ae('0x48');}if(!isNotNull(_[_0x31ae('0x4b')](_0x81bb53[_0x31ae('0x47')][_0x31ae('0x49')]))){_0x81bb53[_0x31ae('0x43')]='INTERVAL_IS_NULL';throw _0x81bb53[_0x31ae('0x45')]+_0x31ae('0x48');}};}function msgResponse(_0x4edd82,_0x4403bd,_0x457dac){return{'action':_0x4edd82,'response':_0x4403bd,'message':_0x457dac,'stack':_0x457dac};}function myreject(_0x4a26b7){return function(_0x35cf5e){return _0x4a26b7(msgResponse(_0x31ae('0x4c'),'Error',JSON[_0x31ae('0x4d')](_0x35cf5e)));};}function getSeconds(_0x505a38,_0x50c26d){var _0x18a6d4=moment(_0x505a38)['milliseconds'](0x0);var _0x322d7e=moment(_0x50c26d)['milliseconds'](0x0);return _0x18a6d4['diff'](_0x322d7e,_0x31ae('0x4e'));}function emit(_0x32e451,_0x380873,_0x133b3c){io['to'](_0x32e451)['emit'](_0x380873,_0x133b3c);}function emitVoiceQueueSummary(_0x46fb3b){if(_0x46fb3b[_0x31ae('0x4f')]===_0x31ae('0x50')){var _0xaa730f={'id':_0x46fb3b['id'],'name':_0x46fb3b[_0x31ae('0x45')],'strategy':_0x46fb3b[_0x31ae('0x51')],'answered':_0x46fb3b['answered'],'available':_0x46fb3b['available'],'loggedIn':_0x46fb3b[_0x31ae('0x52')],'pTalking':_0x46fb3b[_0x31ae('0x53')],'sumBillable':_0x46fb3b['sumBillable'],'sumDuration':_0x46fb3b[_0x31ae('0x54')],'sumHoldTime':_0x46fb3b[_0x31ae('0x55')]||0x0,'talking':_0x46fb3b[_0x31ae('0x56')],'total':_0x46fb3b[_0x31ae('0x57')],'type':_0x46fb3b[_0x31ae('0x4f')],'unmanaged':_0x46fb3b[_0x31ae('0x58')],'abandoned':_0x46fb3b['abandoned'],'waiting':_0x46fb3b[_0x31ae('0x59')],'loggedInDb':_0x46fb3b[_0x31ae('0x5a')],'dialActive':_0x46fb3b[_0x31ae('0x5b')],'dialMethod':_0x46fb3b['dialMethod'],'dialOriginateCallerIdName':_0x46fb3b[_0x31ae('0x5c')],'dialOriginateCallerIdNumber':_0x46fb3b[_0x31ae('0x5d')],'dialOriginateTimeout':_0x46fb3b['dialOriginateTimeout'],'dialPrefix':_0x46fb3b[_0x31ae('0x5e')],'outboundAnswerAgiCallsDay':_0x46fb3b[_0x31ae('0x5f')],'outboundAnswerCallsDay':_0x46fb3b[_0x31ae('0x60')],'outboundBlacklistCallsDay':_0x46fb3b['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x46fb3b[_0x31ae('0x61')],'outboundCongestionCallsDay':_0x46fb3b[_0x31ae('0x62')],'outboundDropCallsDayACS':_0x46fb3b[_0x31ae('0x63')],'outboundDropCallsDayCallersExit':_0x46fb3b['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x46fb3b[_0x31ae('0x64')],'outboundNoAnswerCallsDay':_0x46fb3b[_0x31ae('0x65')],'outboundNoSuchCallsDay':_0x46fb3b[_0x31ae('0x66')],'outboundOriginateFailureCallsDay':_0x46fb3b['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x46fb3b[_0x31ae('0x67')],'outboundRejectCallsDay':_0x46fb3b[_0x31ae('0x68')],'outboundUnknownCallsDay':_0x46fb3b['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x46fb3b[_0x31ae('0x69')],'predictiveIntervalAvgHoldtime':_0x46fb3b[_0x31ae('0x6a')],'predictiveIntervalAvgTalktime':_0x46fb3b[_0x31ae('0x6b')],'predictiveIntervalDroppedCallsCallersExit':_0x46fb3b[_0x31ae('0x6c')],'predictiveIntervalDroppedCallsTimeout':_0x46fb3b[_0x31ae('0x6d')],'predictiveIntervalErlangCalls':_0x46fb3b[_0x31ae('0x6e')],'predictiveIntervalErlangCallsDroppedCalls':_0x46fb3b[_0x31ae('0x6f')],'predictiveIntervalHitRate':_0x46fb3b[_0x31ae('0x70')],'predictiveIntervalMultiplicativeFactor':_0x46fb3b[_0x31ae('0x71')],'predictiveIntervalPauses':_0x46fb3b[_0x31ae('0x72')],'predictiveIntervalAvailable':_0x46fb3b[_0x31ae('0x73')],'predictiveIntervalTotalCalls':_0x46fb3b['predictiveIntervalTotalCalls'],'message':_0x46fb3b[_0x31ae('0x43')],'originated':_0x46fb3b['originated'],'erlangCalls':_0x46fb3b[_0x31ae('0x74')],'erlangCallToSecond':_0x46fb3b[_0x31ae('0x75')],'erlangAbandonmentRate':_0x46fb3b[_0x31ae('0x76')],'erlangBusyFactor':_0x46fb3b[_0x31ae('0x77')],'startPredictive':_0x46fb3b[_0x31ae('0x2c')],'startProgressive':_0x46fb3b[_0x31ae('0x2d')]};if(_0x46fb3b[_0x31ae('0x78')]){_0xaa730f[_0x31ae('0x78')]={'id':_0x46fb3b[_0x31ae('0x78')]['id'],'name':_0x46fb3b[_0x31ae('0x78')][_0x31ae('0x45')],'active':_0x46fb3b[_0x31ae('0x78')]['active'],'callerid':_0x46fb3b[_0x31ae('0x78')][_0x31ae('0x79')]};}if(_0x46fb3b[_0x31ae('0x47')]){_0xaa730f[_0x31ae('0x47')]={'id':_0x46fb3b[_0x31ae('0x47')]['id'],'name':_0x46fb3b[_0x31ae('0x47')][_0x31ae('0x45')]};}var _0x311232=md5(JSON[_0x31ae('0x4d')](_0xaa730f));if(_0x46fb3b[_0x31ae('0x4')]!==_0x311232){_0x46fb3b['md5']=_0x311232;emit(util[_0x31ae('0x7a')]('voice:queue:%s',_0xaa730f[_0x31ae('0x45')]),'voice_queue:save',_0xaa730f);}}}function emitCampaignSummary(_0x3a9d63){if(_0x3a9d63['type']===_0x31ae('0x7b')){emit(util[_0x31ae('0x7a')](_0x31ae('0x7c'),_0x3a9d63[_0x31ae('0x45')]),_0x31ae('0x7d'),_0x3a9d63);}}function checkGetDataPredictive(_0x11ec18){if(isNotNull(_0x11ec18)&&!_[_0x31ae('0x4b')](_0x11ec18)){loggerPredictive[_0x31ae('0x7e')]('-----\x20Stats\x20Predictive\x20---');loggerPredictive[_0x31ae('0x7e')](_0x31ae('0x7f'),_0x11ec18[_0x31ae('0x80')]);loggerPredictive[_0x31ae('0x7e')](_0x31ae('0x81'),_0x11ec18[_0x31ae('0x69')]);loggerPredictive[_0x31ae('0x7e')](_0x31ae('0x82'),_0x11ec18[_0x31ae('0x6d')]);loggerPredictive[_0x31ae('0x7e')]('Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x11ec18['predictiveIntervalDroppedCallsCallersExit']);loggerPredictive[_0x31ae('0x7e')](_0x31ae('0x83'),_0x11ec18[_0x31ae('0x6a')]);loggerPredictive['info'](_0x31ae('0x84'),_0x11ec18[_0x31ae('0x6b')]);loggerPredictive[_0x31ae('0x7e')](_0x31ae('0x85'));if(_0x11ec18[_0x31ae('0x80')]>0x0){if(!_[_0x31ae('0x42')](_0x11ec18[_0x31ae('0x6b')])&&_0x11ec18[_0x31ae('0x6b')]>0x0){return!![];}loggerPredictive['info']('Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive');if(!_['isUndefined'](_0x11ec18['predictiveIntervalAvgHoldtime'])&&_0x11ec18[_0x31ae('0x6a')]>0x0){return!![];}loggerPredictive['info'](_0x31ae('0x86'));}else{loggerPredictive[_0x31ae('0x7e')](_0x31ae('0x87'));}}else{loggerPredictive['info'](_0x31ae('0x88'));}return![];}function mergeDataErlangB(_0x171c79){return function(_0x3cb502){loggerPredictive[_0x31ae('0x7e')]('---------\x20ErlangB\x20---------');loggerPredictive['info'](_0x31ae('0x89'),_0x3cb502['erlangCalls']);loggerPredictive['info'](_0x31ae('0x8a'),_0x3cb502['erlangCallToSecond']);loggerPredictive[_0x31ae('0x7e')](_0x31ae('0x8b'),_0x3cb502[_0x31ae('0x76')]);loggerPredictive[_0x31ae('0x7e')](_0x31ae('0x8c'),_0x3cb502[_0x31ae('0x77')]);loggerPredictive[_0x31ae('0x7e')](_0x31ae('0x8b'),_0x3cb502['erlangAbandonmentRate']);loggerPredictive[_0x31ae('0x7e')](_0x31ae('0x85'));_[_0x31ae('0x8d')](_0x171c79,_0x3cb502);};}function getDiff(_0x44d01b){var _0x2e3027=moment()[_0x31ae('0x8e')](0x0);var _0x4a94fd=moment(_0x44d01b)[_0x31ae('0x8e')](0x0);return _0x2e3027[_0x31ae('0x8f')](_0x4a94fd,_0x31ae('0x4e'));}function ifInterval(_0x1cfec0,_0x18b204){if(_['isUndefined'](_0x18b204)){return![];}return getDiff(_0x18b204)<_0x1cfec0*0x3c;}function freeVariablesPredictive(_0x1ff6c7){if(isNotNull(_0x1ff6c7)){if(!_[_0x31ae('0x42')](_0x1ff6c7[_0x31ae('0x2d')])){_0x1ff6c7[_0x31ae('0x2d')]=undefined;loggerPredictive['info'](_0x1ff6c7['name'],_0x31ae('0x90'));}if(!_[_0x31ae('0x42')](_0x1ff6c7[_0x31ae('0x2c')])){_0x1ff6c7[_0x31ae('0x2c')]=undefined;loggerPredictive[_0x31ae('0x7e')](_0x1ff6c7[_0x31ae('0x45')],_0x31ae('0x91'));}if(!_[_0x31ae('0x42')](_0x1ff6c7[_0x31ae('0x92')])){clearInterval(_0x1ff6c7[_0x31ae('0x92')]);_0x1ff6c7['handlePredictive']=undefined;loggerPredictive[_0x31ae('0x7e')](_0x1ff6c7[_0x31ae('0x45')],_0x31ae('0x93'));}}}function erlangb(_0x1fc8cd,_0x92dc8a){if(_0x92dc8a===0x0){return 0x0;}var _0x531056=0x1;for(var _0x1bb632=0x1;_0x1bb632<=_0x92dc8a;_0x1bb632+=0x1){_0x531056=0x1+_0x531056*_0x1bb632/_0x1fc8cd;}return 0x1/_0x531056;}function isVoiceQueueOutbound(_0xfb6a46){return _0xfb6a46==='outbound';}function isNotPreview(_0x161c6c){return _0x161c6c!==_0x31ae('0x94');}function isCampaignIvr(_0x52bb88){return _0x52bb88==='ivr';}function getCallerId(_0x3a8b7c,_0x222797,_0x22b5fc){if(!_['isUndefined'](_0x22b5fc)&&typeof _0x22b5fc===_0x31ae('0x95')&&!_[_0x31ae('0x4b')](_0x22b5fc)){if(!_[_0x31ae('0x42')](_0x222797)&&typeof _0x222797===_0x31ae('0x95')&&!_[_0x31ae('0x4b')](_0x222797)){return util[_0x31ae('0x7a')](_0x31ae('0x96'),_0x222797,_0x22b5fc);}return util[_0x31ae('0x7a')]('\x22%s\x22\x20<%s>',_0x22b5fc,_0x22b5fc);}if(!_['isUndefined'](_0x3a8b7c)&&typeof _0x3a8b7c==='string'&&!_[_0x31ae('0x4b')](_0x3a8b7c)){return _0x3a8b7c;}return _0x31ae('0x97');}function loggerCatchQueueSummary(_0x1eafa1,_0x2648f4){return function(_0x3fbf09){freeVariablesPredictive(_0x2648f4);emitVoiceQueueSummary(_0x2648f4);emitCampaignSummary(_0x2648f4);loggerSyncQueueSummary['debug'](_0x1eafa1,util[_0x31ae('0x98')](_0x3fbf09,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x429546,_0x58805d){return function(_0x3ab8b4){loggerPredictive['error'](_0x58805d[_0x31ae('0x45')],_0x429546);loggerPredictive[_0x31ae('0x99')](_0x3ab8b4[_0x31ae('0x9a')]);freeVariablesPredictive(_0x58805d);};}function loggerCatch(_0x1d8f9f){return function(_0x7e7cb1){logger['error'](_0x1d8f9f,util[_0x31ae('0x98')](_0x7e7cb1,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0xe6a9c5){return _0xe6a9c5&&!_[_0x31ae('0x42')](_0xe6a9c5)&&_0xe6a9c5[_0x31ae('0x9b')]>0x0;}function decremetOriginate(_0x2b19d6){if(!_[_0x31ae('0x42')](_0x2b19d6)&&_0x2b19d6!==null){if(typeof _0x2b19d6[_0x31ae('0x9c')]!==_0x31ae('0x9d')){if(_0x2b19d6[_0x31ae('0x9c')]>0x0){_0x2b19d6[_0x31ae('0x9c')]-=0x1;}else{logger[_0x31ae('0x99')](_0x31ae('0x9e'));}}}else{logger[_0x31ae('0x99')]('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x1fb380,_0x200bd9,_0x2c7047){if(_0x200bd9>_0x2c7047){for(var _0x53be2a=0x0;_0x53be2a<_0x200bd9-_0x2c7047;_0x53be2a+=0x1){decremetOriginate(_0x1fb380);}}}function loggerGetContactDialer(_0x593375,_0x13ce4e,_0x1cb3e8){return function(_0x53af00){checkContactLowerLimitOriginate(_0x13ce4e,_0x1cb3e8,0x0);logger[_0x31ae('0x99')](_0x593375,util[_0x31ae('0x98')](_0x53af00,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x5a4ad5){return function(_0x4080f9){if(isNotNull(_0x4080f9)&&isNotNull(_0x4080f9[0x0])){if(_0x4080f9[0x0][_0x31ae('0x9f')]>0x0){_0x5a4ad5[_0x31ae('0x43')]=_0x31ae('0xa0');logger[_0x31ae('0x7e')](_0x31ae('0xa1')+_0x5a4ad5[_0x31ae('0x45')],_0x4080f9[0x0]['contactsRescheduled'],_0x31ae('0xa2'));}else{_0x5a4ad5[_0x31ae('0x43')]=_0x31ae('0xa3');logger['info'](_0x31ae('0xa4')+_0x5a4ad5[_0x31ae('0x45')]);}}};}function notSendMessagesQueue(_0x2d5a4b){if(_0x2d5a4b[_0x31ae('0xa5')]){freeVariablesPredictive(_0x2d5a4b);if(_0x2d5a4b[_0x31ae('0x9c')]===0x0&&_0x2d5a4b[_0x31ae('0x56')]===0x0&&_0x2d5a4b[_0x31ae('0x59')]===0x0&&(_0x2d5a4b['pTalking']||0x0)===0x0){_0x2d5a4b[_0x31ae('0xa5')]=![];_0x2d5a4b[_0x31ae('0xa6')]=0x0;_0x2d5a4b[_0x31ae('0x43')]=_0x31ae('0xa7');loggerSyncQueueSummary[_0x31ae('0xa8')](_0x31ae('0xa9'),_0x2d5a4b['name'],'is\x20not\x20active');}else{_0x2d5a4b[_0x31ae('0x43')]=_0x31ae('0xaa');loggerSyncQueueSummary[_0x31ae('0xa8')](_0x31ae('0xa9'),_0x2d5a4b[_0x31ae('0x45')],'is\x20disactive');}emitVoiceQueueSummary(_0x2d5a4b);}}function notSendMessagesCampaign(_0x22d231){if(_0x22d231[_0x31ae('0xa5')]){if(_0x22d231[_0x31ae('0x9c')]===0x0){_0x22d231[_0x31ae('0xa5')]=![];_0x22d231[_0x31ae('0x43')]=_0x31ae('0xa7');loggerSyncQueueSummary[_0x31ae('0xa8')](_0x31ae('0xab'),_0x22d231[_0x31ae('0x45')],'is\x20not\x20active');}else{_0x22d231[_0x31ae('0x43')]=_0x31ae('0xaa');loggerSyncQueueSummary[_0x31ae('0xa8')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x22d231[_0x31ae('0x45')],_0x31ae('0xac'));}emitCampaignSummary(_0x22d231);}}function createObjHistory(_0x462047,_0x18ab44,_0x1b3b01,_0x5c04f9,_0x379bdc){_0x462047['message']=_0x1b3b01;var _0x5aeef6=new Action(_0x462047,_0x18ab44);var _0x49e904=new History(_0x5aeef6);_0x49e904[_0x31ae('0xad')]=_0x5c04f9;_0x49e904[_0x31ae('0xae')]=_0x379bdc;_0x49e904[_0x31ae('0xaf')]=_0x5aeef6[_0x31ae('0xb0')];return _0x49e904;}Dialer[_0x31ae('0x1e')]['loopClearZombieChannels']=function(){var _0x51dea4=this;setInterval(function(){_0x51dea4[_0x31ae('0xb1')](_0x51dea4[_0x31ae('0x2a')],_0x31ae('0xb2'));_0x51dea4[_0x31ae('0xb1')](_0x51dea4[_0x31ae('0x29')],_0x31ae('0xb3'));},0x32c8);};Dialer[_0x31ae('0x1e')][_0x31ae('0xb1')]=function(_0x9b8b3e,_0x53e9b3){var _0x3135b2=this;for(var _0x59881d in _0x9b8b3e){if(typeof _0x9b8b3e[_0x59881d]!==_0x31ae('0x9d')){this['sequence'][_0x31ae('0x1f')](function(){if(!_[_0x31ae('0xb4')](_0x9b8b3e[_0x59881d])){return ami[_0x31ae('0xb5')]({'action':_0x31ae('0xb6'),'channel':_0x9b8b3e[_0x59881d][_0x31ae('0xb7')]})[_0x31ae('0xb8')](function(_0x232031){if(_0x232031[_0x31ae('0x43')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x9b8b3e[_0x59881d]&&_0x9b8b3e[_0x59881d][_0x31ae('0x4f')]!==_0x31ae('0x7b')){_0x3135b2[_0x31ae('0xb9')](_0x3135b2[_0x31ae('0x23')][_0x9b8b3e[_0x59881d]['queue']]);logger[_0x31ae('0x99')]('[Dialer][checkChannel]',_0x53e9b3,_0x59881d,_0x9b8b3e[_0x59881d][_0x31ae('0xba')]);delete _0x9b8b3e[_0x59881d];}if(_0x9b8b3e[_0x59881d]&&_0x9b8b3e[_0x59881d][_0x31ae('0x4f')]===_0x31ae('0x7b')){_0x3135b2[_0x31ae('0xb9')](_0x3135b2[_0x31ae('0x24')][_0x9b8b3e[_0x59881d][_0x31ae('0xba')]]);logger['error'](_0x31ae('0xbb'),_0x53e9b3,_0x59881d,_0x9b8b3e[_0x59881d][_0x31ae('0xba')]);delete _0x9b8b3e[_0x59881d];}},0x2328);}});}});}}};Dialer['prototype'][_0x31ae('0xbc')]=function(_0x375346){return BPromise[_0x31ae('0xbd')]()['then'](cmHopper[_0x31ae('0xbc')](_0x375346))[_0x31ae('0xb8')](loggerCatch('[countReScheduled]\x20'));};Dialer[_0x31ae('0x1e')][_0x31ae('0xbe')]=function(_0x52eebc){return BPromise[_0x31ae('0xbd')]()['then'](cmHopperBlack[_0x31ae('0xbe')](_0x52eebc))[_0x31ae('0xb8')](loggerCatch(_0x31ae('0xbf')));};Dialer[_0x31ae('0x1e')][_0x31ae('0xc0')]=function(_0xfa55eb,_0x25e935,_0x4138a5){return BPromise[_0x31ae('0xbd')]()['then'](cmHopperAdditionalPhone[_0x31ae('0xc0')](_0xfa55eb,_0x25e935,_0x4138a5))[_0x31ae('0xb8')](loggerCatch(_0x31ae('0xc1')));};Dialer['prototype']['swapAdditionalPhones']=function(_0x32409,_0x4cfe4b,_0xaa1ec9){return BPromise['resolve']()[_0x31ae('0xc2')](cmHopperAdditionalPhone[_0x31ae('0xc3')](_0x32409,_0x4cfe4b,_0xaa1ec9))[_0x31ae('0xb8')](loggerCatch(_0x31ae('0xc4')));};Dialer[_0x31ae('0x1e')][_0x31ae('0xc5')]=function(_0x55c769){return BPromise[_0x31ae('0xbd')]()[_0x31ae('0xc2')](cmHopperBlack[_0x31ae('0xc5')](_0x55c769))[_0x31ae('0xb8')](loggerCatch('[checkIsBlackListIvr]\x20'));};Dialer['prototype'][_0x31ae('0xc6')]=function(_0x9eef50){return BPromise['resolve']()[_0x31ae('0xc2')](cmHopperHistory[_0x31ae('0xc7')](_0x9eef50))[_0x31ae('0xb8')](loggerCatch(_0x31ae('0xc8')));};Dialer['prototype'][_0x31ae('0xc9')]=function(_0x579e7d){return BPromise[_0x31ae('0xbd')]()[_0x31ae('0xc2')](cmHopper[_0x31ae('0xc9')](_0x579e7d))['catch'](loggerCatch('[rescheduleContact]\x20'));};Dialer['prototype']['unlockContact']=function(_0x59ccea,_0x5a313e,_0x34d5c5){return BPromise[_0x31ae('0xbd')]()[_0x31ae('0xc2')](cmHopper[_0x31ae('0xca')](_0x59ccea,_0x5a313e,_0x34d5c5))[_0x31ae('0xb8')](loggerCatch(_0x31ae('0xcb')));};Dialer[_0x31ae('0x1e')][_0x31ae('0xcc')]=function(_0xd87046,_0x1d1b27,_0x479452,_0x28e098,_0x18eefe){return BPromise['resolve']()[_0x31ae('0xc2')](cmHopper[_0x31ae('0xcc')](_0xd87046,_0x1d1b27,_0x479452,_0x28e098))[_0x31ae('0xb8')](function(_0x50cc64){_0x18eefe[_0x31ae('0xcd')]-=_0x479452;_0x18eefe[_0x31ae('0xcd')]=_0x18eefe[_0x31ae('0xcd')]>0x0?_0x18eefe[_0x31ae('0xcd')]:0x0;loggerCatch(_0x31ae('0xce'))(_0x50cc64);});};Dialer['prototype'][_0x31ae('0xcf')]=function(_0x217bce,_0x11ad73,_0x99f93d,_0x2ef9da){return BPromise[_0x31ae('0xbd')]()['then'](cmHopper[_0x31ae('0xcf')](_0x217bce,_0x11ad73,_0x99f93d))[_0x31ae('0xb8')](function(_0x208231){_0x2ef9da[_0x31ae('0xcd')]-=_0x11ad73;_0x2ef9da['temp']=_0x2ef9da[_0x31ae('0xcd')]>0x0?_0x2ef9da[_0x31ae('0xcd')]:0x0;loggerCatch(_0x31ae('0xd0'))(_0x208231);});};Dialer[_0x31ae('0x1e')][_0x31ae('0xd1')]=function(_0x4d1737){return BPromise[_0x31ae('0xbd')]()[_0x31ae('0xc2')](voiceQueueRt['getVoiceQueueRtPauses'](_0x4d1737))[_0x31ae('0xb8')](loggerCatch(_0x31ae('0xd2')));};Dialer[_0x31ae('0x1e')][_0x31ae('0xd3')]=function(_0x38d275){return BPromise[_0x31ae('0xbd')]()[_0x31ae('0xc2')](cmHopper['moveContactManagedDialer'](_0x38d275))['catch'](loggerCatch(_0x31ae('0xd4')));};Dialer[_0x31ae('0x1e')][_0x31ae('0xd5')]=function(_0x21c5f8){return BPromise[_0x31ae('0xbd')]()['then'](cmHopperHistory[_0x31ae('0xd5')](_0x21c5f8))[_0x31ae('0xb8')](loggerCatch(_0x31ae('0xd6')));};Dialer[_0x31ae('0x1e')][_0x31ae('0xb9')]=function(_0xd10f17){if(!_[_0x31ae('0x42')](_0xd10f17)&&_0xd10f17!==null){if(typeof _0xd10f17[_0x31ae('0x9c')]!==_0x31ae('0x9d')){if(_0xd10f17[_0x31ae('0x9c')]>0x0){_0xd10f17[_0x31ae('0x9c')]-=0x1;}else{logger['error'](_0x31ae('0xd7'));}}}else{logger['error'](_0x31ae('0xd8'));}};Dialer['prototype'][_0x31ae('0xd9')]=function(_0x59fb44,_0x2fe963){var _0x434e37=this;return function(_0x687c61){_0x434e37[_0x31ae('0xb9')](_0x2fe963);logger['error'](_0x59fb44,util['inspect'](_0x687c61,{'showHidden':![],'depth':null}));};};Dialer['prototype'][_0x31ae('0xda')]=function(_0x501aa7,_0x554e81,_0x303be3){var _0x3f90f0={'state':0x19,'statedesc':'notFound'};this['updateOriginated'](_0x554e81);this[_0x31ae('0xdb')](_['merge'](_0x3f90f0,_[_0x31ae('0xdc')](_0x303be3,[_0x31ae('0xdd'),_0x31ae('0xde'),_0x31ae('0xdf'),_0x31ae('0xe0'),_0x31ae('0xe1')])),_0x31ae('0xe2'),'[emptyContact]');logger[_0x31ae('0x99')](_0x501aa7);};Dialer[_0x31ae('0x1e')][_0x31ae('0xe3')]=function(_0x55dc8f){return _0x55dc8f==='Success';};Dialer['prototype']['isTrunkReachable']=function(_0x2e31ca){return!_[_0x31ae('0x42')](_0x2e31ca)&&_0x2e31ca&&!_[_0x31ae('0x42')](_0x2e31ca[_0x31ae('0x45')])&&!_[_0x31ae('0x42')](_0x2e31ca['active'])&&_0x2e31ca[_0x31ae('0xe4')]&&(this[_0x31ae('0x26')][util[_0x31ae('0x7a')](_0x31ae('0xe5'),_0x2e31ca['name'])][_0x31ae('0xb6')]===_0x31ae('0xe6')||this[_0x31ae('0x26')][util[_0x31ae('0x7a')]('SIP/%s',_0x2e31ca[_0x31ae('0x45')])]['status']===_0x31ae('0xe7'));};Dialer[_0x31ae('0x1e')][_0x31ae('0xdb')]=function(_0x345b4a,_0x41d054,_0x19e265){this[_0x31ae('0xd5')](_0x345b4a)[_0x31ae('0xb8')](loggerCatch(_0x41d054));this[_0x31ae('0xd3')](_0x345b4a)['catch'](loggerCatch(_0x19e265));};Dialer[_0x31ae('0x1e')]['syncVarSet']=function(_0x2aa5f3){var _0x298ff4=this[_0x31ae('0x2a')][_0x2aa5f3[_0x31ae('0xe8')]];var _0x4fd393;if(!_[_0x31ae('0xb4')](_0x2aa5f3)&&!_[_0x31ae('0xb4')](_0x2aa5f3['variable'])&&!_[_0x31ae('0xb4')](_0x2aa5f3[_0x31ae('0xe9')]['amdstatus'])&&_0x2aa5f3[_0x31ae('0xea')]==='xcally-motion-dialer'&&_0x298ff4){if(_0x298ff4[_0x31ae('0x4f')]!==_0x31ae('0x7b')&&this[_0x31ae('0x23')][_0x298ff4[_0x31ae('0xba')]][_0x31ae('0xeb')]&&_0x2aa5f3[_0x31ae('0xec')]===_0x31ae('0xed')){delete this[_0x31ae('0x2a')][_0x2aa5f3[_0x31ae('0xe8')]];this[_0x31ae('0xb9')](this[_0x31ae('0x23')][_0x298ff4[_0x31ae('0xba')]]);this[_0x31ae('0x23')][_0x298ff4[_0x31ae('0xba')]][_0x31ae('0x60')]+=0x1;this[_0x31ae('0x23')][_0x298ff4[_0x31ae('0xba')]][_0x31ae('0x5f')]+=0x1;_0x4fd393=new Hangup(_0x298ff4,_0x2aa5f3);_0x4fd393[_0x31ae('0xad')]=0x12;_0x4fd393['statedesc']=_0x31ae('0xee');_0x4fd393[_0x31ae('0xef')]=_0x31ae('0xf0');ami[_0x31ae('0xf1')](_0x31ae('0xf2'),ut['buildObj'](_0x4fd393,_0x31ae('0xf3')));this[_0x31ae('0xdb')](_0x4fd393,_0x31ae('0xf4'),_0x31ae('0xf5'));}if(_0x298ff4[_0x31ae('0x4f')]!==_0x31ae('0x7b')&&this[_0x31ae('0x23')][_0x298ff4['queue']]['dialAMDActive']&&_0x2aa5f3[_0x31ae('0xec')]===_0x31ae('0xf6')){var _0x28ee79=this;return new BPromise(function(_0x5606b8,_0x29334e){delete _0x28ee79[_0x31ae('0x2a')][_0x2aa5f3[_0x31ae('0xe8')]];_0x28ee79['updateOriginated'](_0x28ee79['voiceQueues'][_0x298ff4[_0x31ae('0xba')]]);_0x28ee79[_0x31ae('0x23')][_0x298ff4[_0x31ae('0xba')]][_0x31ae('0x60')]+=0x1;_0x28ee79[_0x31ae('0x23')][_0x298ff4[_0x31ae('0xba')]][_0x31ae('0x5f')]+=0x1;var _0x518a7b=_0x28ee79[_0x31ae('0x23')][_0x298ff4[_0x31ae('0xba')]];var _0x55b458=new Hangup(_0x298ff4,_0x2aa5f3);_0x55b458[_0x31ae('0xad')]=0x13;_0x55b458[_0x31ae('0xae')]=_0x31ae('0xf7');_0x55b458[_0x31ae('0xef')]=_0x31ae('0xf0');_0x55b458[_0x31ae('0xf8')]+=0x1;_0x55b458['countglobal']+=0x1;_0x55b458[_0x31ae('0xf3')]=!![];ami[_0x31ae('0xf1')]('custom:amd',ut[_0x31ae('0xf9')](_0x55b458,_0x31ae('0xf3')));_0x28ee79[_0x31ae('0xd5')](_0x55b458)[_0x31ae('0xb8')](loggerCatch(_0x31ae('0xfa')));if(_0x55b458['countbusyretry']+_0x55b458['countcongestionretry']+_0x55b458[_0x31ae('0xfb')]+_0x55b458[_0x31ae('0xfc')]+_0x55b458[_0x31ae('0xfd')]+_0x55b458[_0x31ae('0xfe')]+_0x55b458['countmachineretry']+_0x55b458[_0x31ae('0xff')]>=_0x518a7b[_0x31ae('0x100')]){_0x28ee79[_0x31ae('0x101')](_0x55b458,_0x5606b8,_0x29334e,_0x31ae('0x102'));}else{if(_0x55b458['countmachineretry']>=_0x518a7b[_0x31ae('0x103')]){_0x28ee79['createStateFinal'](_0x55b458,_0x5606b8,_0x29334e,_0x31ae('0x104'));}else{_0x28ee79[_0x31ae('0xc9')]({'active':![],'countmachineretry':_0x55b458['countmachineretry'],'scheduledat':moment()[_0x31ae('0x105')](_0x518a7b[_0x31ae('0x106')],_0x31ae('0x107'))[_0x31ae('0x7a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x55b458[_0x31ae('0xdd')],'ListId':_0x55b458[_0x31ae('0xde')],'VoiceQueueId':_0x55b458[_0x31ae('0xe0')]||undefined,'CampaignId':_0x55b458[_0x31ae('0xe1')]||undefined})[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x108')));_0x5606b8({'reschedule':0x1});}}});}if(_0x298ff4[_0x31ae('0x4f')]==='ivr'&&this[_0x31ae('0x24')][_0x298ff4[_0x31ae('0xba')]][_0x31ae('0xeb')]&&_0x2aa5f3[_0x31ae('0xec')]===_0x31ae('0xed')){delete this[_0x31ae('0x2a')][_0x2aa5f3[_0x31ae('0xe8')]];this[_0x31ae('0xb9')](this['campaigns'][_0x298ff4[_0x31ae('0xba')]]);_0x4fd393=new Hangup(_0x298ff4,_0x2aa5f3);_0x4fd393[_0x31ae('0xad')]=0x12;_0x4fd393[_0x31ae('0xae')]=_0x31ae('0xee');_0x4fd393[_0x31ae('0xef')]=_0x31ae('0xf0');ami[_0x31ae('0xf1')](_0x31ae('0xf2'),ut[_0x31ae('0xf9')](_0x4fd393,_0x31ae('0xf3')));this[_0x31ae('0xdb')](_0x4fd393,_0x31ae('0x109'),_0x31ae('0x10a'));}if(_0x298ff4[_0x31ae('0x4f')]===_0x31ae('0x7b')&&this[_0x31ae('0x24')][_0x298ff4[_0x31ae('0xba')]][_0x31ae('0xeb')]&&_0x2aa5f3[_0x31ae('0xec')]==='MACHINE'){var _0x28ee79=this;return new BPromise(function(_0x53ed6a,_0x20aa46){delete _0x28ee79[_0x31ae('0x2a')][_0x2aa5f3['uniqueid']];_0x28ee79[_0x31ae('0xb9')](_0x28ee79[_0x31ae('0x24')][_0x298ff4[_0x31ae('0xba')]]);_0x28ee79['campaigns'][_0x298ff4[_0x31ae('0xba')]][_0x31ae('0x60')]+=0x1;_0x28ee79[_0x31ae('0x24')][_0x298ff4[_0x31ae('0xba')]][_0x31ae('0x5f')]+=0x1;var _0xfd8a8f=_0x28ee79[_0x31ae('0x24')][_0x298ff4[_0x31ae('0xba')]];var _0x380d66=new Hangup(_0x298ff4,_0x2aa5f3);_0x380d66[_0x31ae('0xad')]=0x13;_0x380d66[_0x31ae('0xae')]=_0x31ae('0xf7');_0x380d66['membername']=_0x31ae('0xf0');_0x380d66['countmachineretry']+=0x1;_0x380d66['countglobal']+=0x1;_0x380d66['amd']=!![];ami[_0x31ae('0xf1')](_0x31ae('0xf2'),ut[_0x31ae('0xf9')](_0x380d66,_0x31ae('0xf3')));_0x28ee79[_0x31ae('0xd5')](_0x380d66)[_0x31ae('0xb8')](loggerCatch(_0x31ae('0xfa')));if(_0x380d66[_0x31ae('0x10b')]+_0x380d66[_0x31ae('0x10c')]+_0x380d66[_0x31ae('0xfb')]+_0x380d66[_0x31ae('0xfc')]+_0x380d66[_0x31ae('0xfd')]+_0x380d66['countabandonedretry']+_0x380d66[_0x31ae('0xf8')]+_0x380d66['countagentrejectretry']>=_0xfd8a8f[_0x31ae('0x100')]){_0x28ee79['stateGlobal'](_0x380d66,_0x53ed6a,_0x20aa46,_0x31ae('0x102'));}else{if(_0x380d66[_0x31ae('0xf8')]>=_0xfd8a8f[_0x31ae('0x103')]){_0x28ee79[_0x31ae('0x10d')](_0x380d66,_0x53ed6a,_0x20aa46,_0x31ae('0x104'));}else{_0x28ee79[_0x31ae('0xc9')]({'active':![],'countmachineretry':_0x380d66[_0x31ae('0xf8')],'scheduledat':moment()[_0x31ae('0x105')](_0xfd8a8f['dialMachineRetryFrequency'],'minutes')[_0x31ae('0x7a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x380d66[_0x31ae('0xdd')],'ListId':_0x380d66[_0x31ae('0xde')],'VoiceQueueId':_0x380d66['VoiceQueueId']||undefined,'CampaignId':_0x380d66['CampaignId']||undefined})[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x108')));_0x53ed6a({'reschedule':0x1});}}});}}};Dialer[_0x31ae('0x1e')][_0x31ae('0x39')]=function(_0x568a43){var _0x526423=this[_0x31ae('0x2a')][_0x568a43[_0x31ae('0xe8')]];var _0x177116=this;var _0x8e40d1;if(_0x526423&&_0x526423['type']==='ivr'){delete this[_0x31ae('0x2a')][_0x568a43[_0x31ae('0xe8')]];this['updateOriginated'](this['campaigns'][_0x526423[_0x31ae('0xba')]]);this[_0x31ae('0x24')][_0x526423['queue']]['ivrAnswerCallsDay']+=0x1;_0x8e40d1=new Hangup(_0x526423,_0x568a43);this['createHistory'](_0x8e40d1)[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x10e')));this[_0x31ae('0xd3')](_0x8e40d1)[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x10f')));}if(_0x526423&&_0x526423['type']!==_0x31ae('0x7b')&&isNotNull(this['voiceQueues'][_0x526423[_0x31ae('0xba')]]['dialQueueProject'])){delete this[_0x31ae('0x2a')][_0x568a43[_0x31ae('0xe8')]];this[_0x31ae('0xb9')](this[_0x31ae('0x23')][_0x526423[_0x31ae('0xba')]]);this[_0x31ae('0x23')][_0x526423[_0x31ae('0xba')]]['outboundAnswerCallsDay']+=0x1;this[_0x31ae('0x23')][_0x526423['queue']][_0x31ae('0x5f')]+=0x1;_0x8e40d1=new Hangup(_0x526423,_0x568a43);_0x8e40d1['state']=0x10;_0x8e40d1[_0x31ae('0xae')]=_0x31ae('0x110');_0x8e40d1[_0x31ae('0xef')]=_0x31ae('0x111');this[_0x31ae('0xd5')](_0x8e40d1)[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x10e')));this[_0x31ae('0xd3')](_0x8e40d1)[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x10f')));}if(_0x526423&&_0x526423[_0x31ae('0x4f')]!=='ivr'&&!isNotNull(this[_0x31ae('0x23')][_0x526423[_0x31ae('0xba')]][_0x31ae('0x112')])){delete this[_0x31ae('0x2a')][_0x568a43['uniqueid']];this['updateOriginated'](this['voiceQueues'][_0x526423[_0x31ae('0xba')]]);this[_0x31ae('0x23')][_0x526423['queue']][_0x31ae('0x113')]+=0x1;_0x8e40d1=new Hangup(_0x526423,_0x568a43);_0x8e40d1[_0x31ae('0xad')]=0xc;_0x8e40d1[_0x31ae('0xae')]=_0x568a43[_0x31ae('0x114')];_0x8e40d1[_0x31ae('0xef')]=_0x31ae('0x115');this['createHistory'](_0x8e40d1)[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x10e')));this[_0x31ae('0xd3')](_0x8e40d1)['catch'](loggerCatch(_0x31ae('0x10f')));}};Dialer[_0x31ae('0x1e')][_0x31ae('0x116')]=function(_0xbffa7a){var _0x2a7239=this[_0x31ae('0x2a')][_0xbffa7a[_0x31ae('0xe8')]];var _0x3d3ab4=this;if(this[_0x31ae('0x23')][_0xbffa7a['queue']]){if(_0x2a7239&&_0x2a7239[_0x31ae('0x4f')]!==_0x31ae('0x7b')){delete this[_0x31ae('0x2a')][_0xbffa7a[_0x31ae('0xe8')]];this['voiceQueues'][_0xbffa7a['queue']][_0x31ae('0x60')]+=0x1;var _0x1cbcf8=new AgentComplete(_0x2a7239,_0xbffa7a);if(_0xbffa7a[_0x31ae('0x117')]==='agent'){_0x1cbcf8[_0x31ae('0x118')]=this[_0x31ae('0x23')][_0xbffa7a[_0x31ae('0xba')]][_0x31ae('0x119')]&&this[_0x31ae('0x23')][_0xbffa7a[_0x31ae('0xba')]][_0x31ae('0x11a')]?moment()[_0x31ae('0x7a')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;}this[_0x31ae('0xd5')](_0x1cbcf8)['catch'](loggerCatch('[syncAgentComplete][createHistory]'));this['moveContactManagedDialer'](_0x1cbcf8)[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x11b')));}}};Dialer['prototype'][_0x31ae('0x30')]=function(_0x38881d){if(this['voiceQueues'][_0x38881d['queue']]){if(this[_0x31ae('0x2a')][_0x38881d[_0x31ae('0xe8')]]&&this['uniqueId'][_0x38881d['uniqueid']]['type']!==_0x31ae('0x7b')){this[_0x31ae('0xb9')](this['voiceQueues'][_0x38881d[_0x31ae('0xba')]]);this['uniqueId'][_0x38881d[_0x31ae('0xe8')]][_0x31ae('0x11c')]=moment()[_0x31ae('0x7a')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0x31ae('0x1e')][_0x31ae('0x11d')]=function(_0x26cf87,_0x3a6ecf){this[_0x31ae('0xd5')](_0x26cf87)[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x11e')));if(_0x3a6ecf==0x0){this[_0x31ae('0xd3')](_0x26cf87)[_0x31ae('0xb8')](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));}};Dialer[_0x31ae('0x1e')][_0x31ae('0x11f')]=function(_0x127d83){var _0x2e79b3=this[_0x31ae('0x2a')][_0x127d83[_0x31ae('0xe8')]];var _0x13817a=this;var _0x330246=![];var _0x57f457;var _0x51e32c;if(this[_0x31ae('0x23')][_0x127d83['queue']]){if(_0x2e79b3&&_0x2e79b3['type']!==_0x31ae('0x7b')){delete this[_0x31ae('0x2a')][_0x127d83[_0x31ae('0xe8')]];this[_0x31ae('0xb9')](this[_0x31ae('0x23')][_0x127d83[_0x31ae('0xba')]]);_0x2e79b3['droptime']=moment()[_0x31ae('0x7a')](_0x31ae('0x120'));var _0xc5aa0=new QueueCallerAbandon(_0x2e79b3,_0x127d83);if(getSeconds(_0x2e79b3[_0x31ae('0x121')],_0x2e79b3[_0x31ae('0x122')])>=_0x2e79b3[_0x31ae('0x123')]){this[_0x31ae('0x23')][_0x127d83[_0x31ae('0xba')]][_0x31ae('0x6d')]+=0x1;this[_0x31ae('0x23')][_0x127d83[_0x31ae('0xba')]][_0x31ae('0x64')]+=0x1;this[_0x31ae('0x23')][_0x127d83[_0x31ae('0xba')]][_0x31ae('0x6f')]+=0x1;_0xc5aa0['state']=0xa;_0xc5aa0[_0x31ae('0xae')]=_0x31ae('0x124');_0xc5aa0[_0x31ae('0x125')]=_0x31ae('0x126');_0xc5aa0[_0x31ae('0x118')]=this[_0x31ae('0x23')][_0x127d83['queue']][_0x31ae('0x119')]?moment()[_0x31ae('0x7a')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;_0xc5aa0[_0x31ae('0xfd')]+=0x1;_0xc5aa0['countglobal']+=0x1;_0x57f457=this[_0x31ae('0x23')][_0x127d83[_0x31ae('0xba')]][_0x31ae('0x127')];_0x51e32c=this[_0x31ae('0x23')][_0x127d83[_0x31ae('0xba')]][_0x31ae('0x128')];_0x13817a[_0x31ae('0xc0')](_0xc5aa0,_0xc5aa0[_0x31ae('0xad')],_0x2e79b3['voiceQueue'])['then'](function(_0x2b33a2){_0x330246=_0x2b33a2[_0x31ae('0x129')]==0x1;if(_0xc5aa0[_0x31ae('0xfd')]>=_0x13817a[_0x31ae('0x23')][_0x127d83[_0x31ae('0xba')]][_0x31ae('0x12a')]){_0x13817a[_0x31ae('0x11d')](_0xc5aa0,_0x2b33a2[_0x31ae('0x129')]);}else{_0x13817a['rescheduleContact']({'active':![],'countdropretry':_0xc5aa0[_0x31ae('0xfd')],'scheduledat':moment()[_0x31ae('0x105')](_0x13817a[_0x31ae('0x23')][_0x127d83[_0x31ae('0xba')]][_0x31ae('0x127')],_0x31ae('0x107'))[_0x31ae('0x7a')](_0x31ae('0x120')),'ContactId':_0x2e79b3[_0x31ae('0xdd')],'ListId':_0x2e79b3['ListId'],'VoiceQueueId':_0x2e79b3[_0x31ae('0xe0')]||undefined,'CampaignId':_0x2e79b3[_0x31ae('0xe1')]||undefined})['catch'](loggerCatch('[rescheduleContact][Drop]'));var _0x3ecbed=new History(_0xc5aa0);_0x3ecbed['state']=0xa;_0x3ecbed['statedesc']=_0x31ae('0x124');_0x3ecbed[_0x31ae('0xb0')]=moment()[_0x31ae('0x7a')](_0x31ae('0x120'));_0x3ecbed[_0x31ae('0xaf')]=_0x3ecbed[_0x31ae('0xb0')];_0x3ecbed['calleridname']=_0xc5aa0[_0x31ae('0x12b')];_0x3ecbed[_0x31ae('0x12c')]=_0xc5aa0[_0x31ae('0x12c')];_0x13817a[_0x31ae('0xd5')](_0x3ecbed)[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x12d')));}})[_0x31ae('0xc2')](function(_0x3050e6){if(_0x330246)_0x13817a[_0x31ae('0xc3')](_0xc5aa0,_0x57f457,_0x51e32c)['then'](function(_0x318b82){return 0x1;});});}else{this[_0x31ae('0x23')][_0x127d83[_0x31ae('0xba')]][_0x31ae('0x6c')]+=0x1;this['voiceQueues'][_0x127d83[_0x31ae('0xba')]]['outboundDropCallsDayCallersExit']+=0x1;_0xc5aa0['state']=0xb;_0xc5aa0[_0x31ae('0xae')]=_0x31ae('0x12e');_0xc5aa0['dropreason']=_0x31ae('0x12f');_0xc5aa0['countabandonedretry']+=0x1;_0xc5aa0['countglobal']+=0x1;_0x57f457=this[_0x31ae('0x23')][_0x127d83[_0x31ae('0xba')]][_0x31ae('0x130')];_0x51e32c=this[_0x31ae('0x23')][_0x127d83[_0x31ae('0xba')]][_0x31ae('0x128')];_0x13817a['verifyAdditionalPhones'](_0xc5aa0,_0xc5aa0[_0x31ae('0xad')],_0x2e79b3[_0x31ae('0x131')])[_0x31ae('0xc2')](function(_0x16b594){if(_0xc5aa0[_0x31ae('0xfe')]>=_0x13817a[_0x31ae('0x23')][_0x127d83[_0x31ae('0xba')]][_0x31ae('0x132')]){_0x13817a[_0x31ae('0x11d')](_0xc5aa0,_0x16b594['additional']);}else{_0x13817a['rescheduleContact']({'active':![],'countabandonedretry':_0xc5aa0['countabandonedretry'],'scheduledat':moment()[_0x31ae('0x105')](_0x13817a[_0x31ae('0x23')][_0x127d83[_0x31ae('0xba')]][_0x31ae('0x130')],_0x31ae('0x107'))[_0x31ae('0x7a')](_0x31ae('0x120')),'ContactId':_0x2e79b3['ContactId'],'ListId':_0x2e79b3[_0x31ae('0xde')],'VoiceQueueId':_0x2e79b3[_0x31ae('0xe0')]||undefined,'CampaignId':_0x2e79b3[_0x31ae('0xe1')]||undefined})[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x133')));var _0x444ab7=new History(_0xc5aa0);_0x444ab7[_0x31ae('0xad')]=0xb;_0x444ab7['statedesc']=_0x31ae('0x12e');_0x444ab7[_0x31ae('0xb0')]=moment()[_0x31ae('0x7a')](_0x31ae('0x120'));_0x444ab7['endtime']=_0x444ab7['starttime'];_0x444ab7[_0x31ae('0x12b')]=_0xc5aa0[_0x31ae('0x12b')];_0x444ab7['calleridnum']=_0xc5aa0[_0x31ae('0x12c')];_0x13817a[_0x31ae('0xd5')](_0x444ab7)[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x134')));}})[_0x31ae('0xc2')](function(_0x11d45d){if(_0x330246)_0x13817a[_0x31ae('0xc3')](_0xc5aa0,_0x57f457,_0x51e32c)[_0x31ae('0xc2')](function(_0x2d42e3){return 0x1;});});}}}};Dialer[_0x31ae('0x1e')]['syncNewExten']=function(_0x2220bc){if(this['actions'][_0x2220bc[_0x31ae('0xe8')]]){this[_0x31ae('0x29')][_0x2220bc[_0x31ae('0xe8')]][_0x31ae('0xb7')]=_0x2220bc[_0x31ae('0xb7')];}if(this[_0x31ae('0x2a')][_0x2220bc[_0x31ae('0xe8')]]){this[_0x31ae('0x2a')][_0x2220bc['uniqueid']][_0x31ae('0xb7')]=_0x2220bc[_0x31ae('0xb7')];}};Dialer[_0x31ae('0x1e')]['syncQueueMember']=function(_0x1ac490){if(strategy[this['voiceQueues'][this[_0x31ae('0x29')][_0x1ac490[_0x31ae('0x135')]][_0x31ae('0xba')]][_0x31ae('0x51')]]===_0x31ae('0x136')){if(this['actions'][_0x1ac490[_0x31ae('0x135')]]&&_[_0x31ae('0xb4')](this[_0x31ae('0x29')][_0x1ac490[_0x31ae('0x135')]][_0x31ae('0x137')])&&_0x1ac490['status']==='1'&&_0x1ac490[_0x31ae('0x138')]==='0'){if(this[_0x31ae('0x25')][_0x1ac490[_0x31ae('0x139')]]){if(!this[_0x31ae('0x25')][_0x1ac490[_0x31ae('0x139')]][_0x31ae('0x137')]){this[_0x31ae('0x25')][_0x1ac490[_0x31ae('0x139')]][_0x31ae('0x137')]=!![];this[_0x31ae('0x29')][_0x1ac490['actionid']][_0x31ae('0x137')]=!![];this[_0x31ae('0x29')][_0x1ac490[_0x31ae('0x135')]][_0x31ae('0x139')]=_0x1ac490[_0x31ae('0x139')];}}}}else if((strategy[this[_0x31ae('0x23')][this[_0x31ae('0x29')][_0x1ac490[_0x31ae('0x135')]]['queue']][_0x31ae('0x51')]]||_0x31ae('0x1d'))===_0x31ae('0x1d')){if(this[_0x31ae('0x29')][_0x1ac490[_0x31ae('0x135')]]){if(this[_0x31ae('0x25')][_0x1ac490[_0x31ae('0x139')]]){this[_0x31ae('0x29')][_0x1ac490[_0x31ae('0x135')]][_0x31ae('0x139')]=_0x1ac490['stateinterface'];if(_[_0x31ae('0xb4')](this[_0x31ae('0x2e')][this['actions'][_0x1ac490[_0x31ae('0x135')]][_0x31ae('0xba')]])){this[_0x31ae('0x2e')][this[_0x31ae('0x29')][_0x1ac490[_0x31ae('0x135')]]['queue']]=[];}this[_0x31ae('0x2e')][this[_0x31ae('0x29')][_0x1ac490['actionid']]['queue']][_0x31ae('0x13a')](_[_0x31ae('0x8d')](_[_0x31ae('0xdc')](this[_0x31ae('0x29')][_0x1ac490['actionid']],[_0x31ae('0x13b'),_0x31ae('0x139')]),{'status':_0x1ac490[_0x31ae('0xb6')],'paused':_0x1ac490['paused']}));}}}};function unlockQueueStatus(_0x5e40ae,_0x202c33){setTimeout(function(){if(_[_0x31ae('0x42')](_0x5e40ae[_0x31ae('0x13c')])){loggerBooked['error'](_0x31ae('0x13d'),_0x202c33);}_0x5e40ae['queueStatusComplete']=!![];loggerBooked['info'](_0x31ae('0x13e'),_0x202c33,JSON['stringify'](_[_0x31ae('0xdc')](_0x5e40ae,[_0x31ae('0x45'),_0x31ae('0x13c')])));},0x1f3);}Dialer[_0x31ae('0x1e')][_0x31ae('0x3f')]=function(_0x4a8191){var _0xfa9250=this;var _0x544385=_0xfa9250[_0x31ae('0x23')][_0xfa9250[_0x31ae('0x29')][_0x4a8191['actionid']]['queue']];if(strategy[this['voiceQueues'][this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xba')]][_0x31ae('0x51')]]==='roundrobin'){if(this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]]&&this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0x139')]){this[_0x31ae('0x94')]['run'](this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0x13b')],this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0x139')])[_0x31ae('0xb8')](function(_0x4004c7){logger[_0x31ae('0x99')](_0x31ae('0x13f'),util['inspect'](_0x4004c7,{'showHidden':![],'depth':null}));})['finally'](function(){_0xfa9250[_0x31ae('0xb9')](_0xfa9250['voiceQueues'][_0xfa9250[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xba')]]);_0xfa9250[_0x31ae('0x25')][_0xfa9250[_0x31ae('0x29')][_0x4a8191['actionid']]['stateinterface']][_0x31ae('0x137')]=![];delete _0xfa9250[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]];unlockQueueStatus(_0x544385);});}else{this['updateOriginated'](this[_0x31ae('0x23')][this[_0x31ae('0x29')][_0x4a8191['actionid']]['queue']]);this[_0x31ae('0xc9')]({'active':![],'ContactId':this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xdd')],'ListId':this['actions'][_0x4a8191[_0x31ae('0x135')]]['ListId'],'VoiceQueueId':this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xe1')]||undefined})[_0x31ae('0xb8')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this['actions'][_0x4a8191[_0x31ae('0x135')]];unlockQueueStatus(_0x544385);}}else if((strategy[this[_0x31ae('0x23')][this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xba')]]['strategy']]||'rrmemory')==='rrmemory'){var _0x3a9bee;if(this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]]&&!_['isEmpty'](this['queueBooked'][this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xba')]])){if(this[_0x31ae('0x2f')][_0xfa9250[_0x31ae('0x29')][_0x4a8191['actionid']][_0x31ae('0xba')]]){this[_0x31ae('0x2f')][_0xfa9250[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]]['queue']]=this[_0x31ae('0x2f')][this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xba')]]?this[_0x31ae('0x2f')][this[_0x31ae('0x29')][_0x4a8191['actionid']]['queue']]:this[_0x31ae('0x2e')][this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xba')]]?this['queueBooked'][this[_0x31ae('0x29')][_0x4a8191['actionid']]['queue']][_0x31ae('0x140')]||0x0:0x0;}this[_0x31ae('0x2e')][this[_0x31ae('0x29')][_0x4a8191['actionid']][_0x31ae('0xba')]][_0x31ae('0x140')]=this['queueBookedRR'][this[_0x31ae('0x29')][_0x4a8191['actionid']][_0x31ae('0xba')]];for(var _0x4fe2b8=0x0;_0x4fe2b8<this['queueBooked'][this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xba')]][_0x31ae('0x9b')];_0x4fe2b8+=0x1){_0x3a9bee=rr(this[_0x31ae('0x2e')][this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xba')]]);this[_0x31ae('0x2f')][_0xfa9250[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xba')]]=this[_0x31ae('0x2e')][this[_0x31ae('0x29')][_0x4a8191['actionid']]['queue']][_0x31ae('0x140')];if(_0x3a9bee[_0x31ae('0xb6')]==='1'&&_0x3a9bee['paused']==='0'){break;}}if(!_['isNil'](_0x3a9bee)){this['agents'][_0x3a9bee[_0x31ae('0x139')]][_0x31ae('0x141')]=_[_0x31ae('0x42')](this[_0x31ae('0x25')][_0x3a9bee['stateinterface']][_0x31ae('0x141')])?!![]:this[_0x31ae('0x25')][_0x3a9bee[_0x31ae('0x139')]][_0x31ae('0x141')];}loggerBooked[_0x31ae('0x7e')]('[booked][RR]',_0x4a8191['actionid'],_0x31ae('0x142'),JSON[_0x31ae('0x4d')](_[_0x31ae('0xdc')](this['agents'][_0x3a9bee[_0x31ae('0x139')]],[_0x31ae('0x45'),_0x31ae('0x141')])),'contactAgent-idHopper:\x20',JSON['stringify'](_0x3a9bee[_0x31ae('0x13b')]));if(!_[_0x31ae('0xb4')](_0x3a9bee)&&_0x3a9bee[_0x31ae('0xb6')]==='1'&&_0x3a9bee[_0x31ae('0x138')]==='0'&&this[_0x31ae('0x25')][_0x3a9bee['stateinterface']]['unlockRR']){this[_0x31ae('0x25')][_0x3a9bee[_0x31ae('0x139')]]['unlockRR']=![];this['queueBooked'][_0xfa9250[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xba')]]=[];this[_0x31ae('0x94')]['run'](_0x3a9bee[_0x31ae('0x13b')],_0x3a9bee[_0x31ae('0x139')])['catch'](function(_0x345668){logger[_0x31ae('0x99')]('[Catch][Preview][syncQueueStatusComplete]',util['inspect'](_0x345668,{'showHidden':![],'depth':null}));})[_0x31ae('0x21')](function(){_0xfa9250['updateOriginated'](_0xfa9250[_0x31ae('0x23')][_0xfa9250[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xba')]]);setTimeout(function(){_0xfa9250['agents'][_0x3a9bee['stateinterface']][_0x31ae('0x141')]=!![];loggerBooked['info'](_0x31ae('0x143'),_0x4a8191[_0x31ae('0x135')],'Agent:\x20',JSON[_0x31ae('0x4d')](_[_0x31ae('0xdc')](_0xfa9250[_0x31ae('0x25')][_0x3a9bee['stateinterface']],['name',_0x31ae('0x141')])),_0x31ae('0x144'),JSON[_0x31ae('0x4d')](_0x3a9bee['idHopper']));},0xc7);delete _0xfa9250[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]];unlockQueueStatus(_0x544385,_0x4a8191[_0x31ae('0x135')]);});}else{loggerBooked['info'](_0x31ae('0x145'));this[_0x31ae('0xb9')](this[_0x31ae('0x23')][this[_0x31ae('0x29')][_0x4a8191['actionid']][_0x31ae('0xba')]]);this[_0x31ae('0xc9')]({'active':![],'ContactId':this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xdd')],'ListId':this['actions'][_0x4a8191[_0x31ae('0x135')]]['ListId'],'VoiceQueueId':this[_0x31ae('0x29')][_0x4a8191['actionid']][_0x31ae('0xe0')]||undefined,'CampaignId':this[_0x31ae('0x29')][_0x4a8191['actionid']][_0x31ae('0xe1')]||undefined})[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x146')));delete this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]];unlockQueueStatus(_0x544385);}}else{loggerBooked['info']('[booked][unlock2]');this[_0x31ae('0xb9')](this[_0x31ae('0x23')][this['actions'][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xba')]]);this[_0x31ae('0xc9')]({'active':![],'ContactId':this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]]['ContactId'],'ListId':this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xde')],'VoiceQueueId':this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xe1')]||undefined})['catch'](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]];unlockQueueStatus(_0x544385);}}else{loggerBooked['info']('[booked][unlock3]');this['updateOriginated'](this[_0x31ae('0x23')][this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xba')]]);this[_0x31ae('0xc9')]({'active':![],'ContactId':this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]][_0x31ae('0xdd')],'ListId':this[_0x31ae('0x29')][_0x4a8191['actionid']][_0x31ae('0xde')],'VoiceQueueId':this['actions'][_0x4a8191[_0x31ae('0x135')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]]['CampaignId']||undefined})['catch'](loggerCatch(_0x31ae('0x147')));delete this[_0x31ae('0x29')][_0x4a8191[_0x31ae('0x135')]];unlockQueueStatus(_0x544385);}};Dialer[_0x31ae('0x1e')][_0x31ae('0x40')]=function(){var _0x4c57cf=this;return BPromise[_0x31ae('0xbd')]()[_0x31ae('0xc2')](cmHopper[_0x31ae('0x148')]({}))['then'](function(){setInterval(function(){_0x4c57cf['syncCampaigns']();},0x3e8);});};Dialer[_0x31ae('0x1e')]['checkIsTrunkReachable']=function(_0x3751eb){var _0x228ef1=this;return function(){if(!_0x228ef1[_0x31ae('0x149')](_0x3751eb[_0x31ae('0x78')])){if(!_0x228ef1[_0x31ae('0x149')](_0x3751eb['TrunkBackup'])){_0x3751eb[_0x31ae('0x43')]=_0x31ae('0x14a');throw _0x3751eb[_0x31ae('0x45')]+_0x31ae('0x14b');}}};};Dialer[_0x31ae('0x1e')][_0x31ae('0x14c')]=function(_0x298ab5,_0x4b6e8b,_0x4235cf,_0x5e9dc4){var _0x3899d7=this;return function(){var _0x3fff25=!![];return _0x3899d7[_0x31ae('0x14d')](_0x298ab5,_0x4b6e8b,_0x4235cf,_0x5e9dc4,_0x3fff25);};};Dialer[_0x31ae('0x1e')][_0x31ae('0x14e')]=function(_0x2ce22b,_0x10c2d3,_0x158069,_0xdaf67c){var _0x13887a=this;return function(){var _0x2c6ed9=![];return _0x13887a[_0x31ae('0x14d')](_0x2ce22b['Intervals'],_0x10c2d3,_0x158069,_0xdaf67c,_0x2c6ed9);};};Dialer[_0x31ae('0x1e')][_0x31ae('0x14d')]=function(_0x2a9d23,_0x151204,_0x2f4175,_0x20995e,_0x14d9d6){var _0x24c84a=[];return new BPromise(function(_0x3e8413,_0x4ae356){if(!isNotNull(_0x2a9d23)){_0x20995e[_0x31ae('0x43')]=_0x31ae('0x4a');return _0x4ae356(msgResponse(_0x31ae('0x14d'),_0x31ae('0x14f'),_0x2f4175+_0x31ae('0x150')));}if(_[_0x31ae('0x4b')](_0x2a9d23)){_0x20995e[_0x31ae('0x43')]=_0x31ae('0x151');return _0x4ae356(msgResponse(_0x31ae('0x14d'),_0x31ae('0x14f'),_0x2f4175+_0x31ae('0x152')));}if(_0x151204&&_[_0x31ae('0x42')](config['timezones'][_0x151204])){_0x20995e[_0x31ae('0x43')]=_0x31ae('0x153');return _0x4ae356(msgResponse('ifTime',_0x31ae('0x14f'),_0x2f4175+_0x31ae('0x154')+_0x151204));}if(_[_0x31ae('0x155')](_0x2a9d23)){for(var _0x2f4c58=0x0;_0x2f4c58<_0x2a9d23['length'];_0x2f4c58+=0x1){_0x24c84a['push'](ami[_0x31ae('0xb5')]({'action':_0x31ae('0x156'),'command':util[_0x31ae('0x7a')](_0x31ae('0x157'),_0x2a9d23[_0x2f4c58][_0x31ae('0x158')],!_['isUndefined'](config[_0x31ae('0x159')][_0x151204])?_0x151204:'')})[_0x31ae('0xc2')](function(_0x10d8f5){return _0x10d8f5[_0x31ae('0x15a')][_0x31ae('0x15b')](_0x31ae('0x15c'))>=0x0;})[_0x31ae('0xb8')](myreject(_0x4ae356)));}}else{_0x24c84a[_0x31ae('0x13a')](ami[_0x31ae('0xb5')]({'action':_0x31ae('0x156'),'command':util[_0x31ae('0x7a')]('iftime\x20%s,%s',_0x2a9d23,!_[_0x31ae('0x42')](config['timezones'][_0x151204])?_0x151204:'')})[_0x31ae('0xc2')](function(_0x15f170){return _0x15f170[_0x31ae('0x15a')][_0x31ae('0x15b')](_0x31ae('0x15c'))>=0x0;})['catch'](myreject(_0x4ae356)));}BPromise[_0x31ae('0x15d')](_0x24c84a)['then'](function(_0x159304){var _0xb9d592=_[_0x31ae('0x15e')](_0x159304);if(_0xb9d592){return _0x3e8413(_0xb9d592);}else{_0x20995e[_0x31ae('0x43')]=_0x14d9d6?_0x31ae('0x15f'):_0x31ae('0x160');return _0x4ae356(msgResponse(_0x31ae('0x161'),'Failure',_0x31ae('0x162')+_0x14d9d6+'\x20'+_0x2f4175+_0x31ae('0x163')+util['inspect'](_0x2a9d23,{'showHidden':![],'depth':null})+_0x31ae('0x164')+_0x151204));}})[_0x31ae('0xb8')](function(_0x43980b){return _0x4ae356(msgResponse('ifTime',_0x31ae('0x14f'),JSON[_0x31ae('0x4d')](_0x43980b)));});});};Dialer['prototype'][_0x31ae('0x165')]=function(_0xf319e){var _0x198f88=this;return function(){switch(_0xf319e[_0x31ae('0x166')]){case _0x31ae('0x167'):freeVariablesPredictive(_0xf319e);_0x198f88[_0x31ae('0x168')](_0xf319e,0x1);break;case'power':freeVariablesPredictive(_0xf319e);_0x198f88['handlePower'](_0xf319e,_0xf319e[_0x31ae('0x169')]);break;case'predictive':_0x198f88[_0x31ae('0xa')](_0xf319e);break;case _0x31ae('0x9'):freeVariablesPredictive(_0xf319e);_0x198f88[_0x31ae('0x168')](_0xf319e,0x1);break;default:freeVariablesPredictive(_0xf319e);logger[_0x31ae('0x99')](_0x31ae('0x16a'),_0xf319e[_0x31ae('0x45')],_0x31ae('0x16b'));}};};Dialer[_0x31ae('0x1e')]['launchHandleIvr']=function(_0x172297){var _0x5d402b=this;return function(){_0x5d402b[_0x31ae('0x16c')](_0x172297);};};Dialer[_0x31ae('0x1e')]['syncQueueSummary']=function(_0x22ae4f){var _0x1fbee7=this;if(isNotPreview(_0x22ae4f[_0x31ae('0x166')])){if(isVoiceQueueOutbound(_0x22ae4f['type'])&&isActive(_0x22ae4f[_0x31ae('0x5b')])){_0x22ae4f[_0x31ae('0xa5')]=!![];BPromise[_0x31ae('0xbd')]()[_0x31ae('0xc2')](checkIsLoggedIn(_0x22ae4f,_0x22ae4f[_0x31ae('0x52')]))['then'](checkIsActive(_0x22ae4f,_0x22ae4f[_0x31ae('0x5b')]))['then'](checkInterval(_0x22ae4f))[_0x31ae('0xc2')](_0x1fbee7['checkIsTrunkReachable'](_0x22ae4f))[_0x31ae('0xc2')](_0x1fbee7[_0x31ae('0x14c')](_0x22ae4f[_0x31ae('0x16d')],_0x22ae4f[_0x31ae('0x16e')],_0x22ae4f[_0x31ae('0x45')],_0x22ae4f))['then'](_0x1fbee7['checkIfTimeIntervals'](_0x22ae4f[_0x31ae('0x47')],_0x22ae4f['dialTimezone'],_0x22ae4f[_0x31ae('0x45')],_0x22ae4f))[_0x31ae('0xc2')](_0x1fbee7[_0x31ae('0x165')](_0x22ae4f))[_0x31ae('0xb8')](loggerCatchQueueSummary(_0x31ae('0x16f'),_0x22ae4f));}else{notSendMessagesQueue(_0x22ae4f);}}else{freeVariablesPredictive(_0x22ae4f);}};Dialer['prototype'][_0x31ae('0x37')]=_[_0x31ae('0x170')](function(){var _0x24d92c=_['filter'](this[_0x31ae('0x23')],function(_0x348349){return _0x348349[_0x31ae('0x171')];});var _0x68c6d6=_['filter'](this['agents'],function(_0xf89099){return _0xf89099[_0x31ae('0x172')]&&_0xf89099[_0x31ae('0xb6')]===_0x31ae('0xe6');});if(_0x24d92c[_0x31ae('0x9b')]>0x0&&_0x68c6d6[_0x31ae('0x9b')]>0x0){return BPromise[_0x31ae('0xbd')]()[_0x31ae('0xc2')](cmHopper[_0x31ae('0x173')](_[_0x31ae('0x174')](_0x24d92c,'id'),previewRecallmeReminderInterval,_[_0x31ae('0x174')](_0x68c6d6,'id')))['then'](function(_0x201406){for(var _0x29723d=0x0;_0x29723d<_0x201406[_0x31ae('0x9b')];_0x29723d++){var _0x3dd5cc=_0x201406[_0x29723d]['Agent'][_0x31ae('0x45')];if(_0x3dd5cc)io['to'](util[_0x31ae('0x7a')]('user:%s',_0x3dd5cc))[_0x31ae('0xf1')]('user:dialPreviewRecallReminder',{'hopper':_0x201406[_0x29723d]});}})[_0x31ae('0xb8')](function(_0xab3bd3){logger[_0x31ae('0x99')](_0x31ae('0x175'),_0xab3bd3);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0x31ae('0x1e')]['syncCampaigns']=function(){var _0x451514=this;var _0x3fe927;for(var _0x1fa1a0 in this[_0x31ae('0x24')]){if(typeof this['campaigns'][_0x1fa1a0]!==_0x31ae('0x9d')){_0x3fe927=this['campaigns'][_0x1fa1a0];if(isCampaignIvr(_0x3fe927[_0x31ae('0x4f')])&&isActive(_0x3fe927[_0x31ae('0xe4')])){_0x3fe927[_0x31ae('0xa5')]=!![];BPromise['resolve']()[_0x31ae('0xc2')](checkIsActive(_0x3fe927,_0x3fe927[_0x31ae('0xe4')]))[_0x31ae('0xc2')](checkInterval(_0x3fe927))['then'](_0x451514[_0x31ae('0x176')](_0x3fe927))['then'](_0x451514[_0x31ae('0x14c')](_0x3fe927['dialGlobalInterval'],_0x3fe927[_0x31ae('0x16e')],_0x3fe927[_0x31ae('0x45')],_0x3fe927))[_0x31ae('0xc2')](_0x451514[_0x31ae('0x14e')](_0x3fe927['Interval'],_0x3fe927['dialTimezone'],_0x3fe927[_0x31ae('0x45')],_0x3fe927))['then'](_0x451514[_0x31ae('0x177')](_0x3fe927))[_0x31ae('0xb8')](loggerCatchQueueSummary(_0x31ae('0x178'),_0x3fe927));}else{notSendMessagesCampaign(_0x3fe927);}}}};function getCallerIdRandom(_0x2ae26f,_0x4c22a1){var _0x352b3a;var _0x2a47ba;var _0x41eb97;if(_0x4c22a1<=0x0){_0x4c22a1=0x1;}_0x352b3a=new RegExp(_0x31ae('0x179')+_0x4c22a1+'}$');_0x2a47ba=Math[_0x31ae('0x17a')](0xa,_0x4c22a1-0x1);_0x41eb97=Math['pow'](0xa,_0x4c22a1)-0x1;return util[_0x31ae('0x7a')]('%s',_['replace'](_0x2ae26f,_0x352b3a,_[_0x31ae('0x17b')](_0x2a47ba,_0x41eb97)));}function extractCalleridName(_0x5b4bda){var _0x4902a8=_0x5b4bda[_0x31ae('0x17c')](/"(.*?)"/);return _0x4902a8?_0x4902a8[0x1]:_0x5b4bda;}function extractCalleridNumber(_0x424368){var _0x2fe63c=_0x424368['match'](/<(.*?)>/);return _0x2fe63c?_0x2fe63c[0x1]:_0x424368;}Dialer['prototype']['actionOriginate']=function(_0x1b8bbc,_0x4864ac){var _0x19e1f5=this;var _0x466dc6=uuid['v4']();this[_0x31ae('0x29')][_0x466dc6]=new Action(_0x1b8bbc,_0x4864ac,_0x466dc6);return new BPromise(function(_0x535183,_0x504408){if(_['isUndefined'](_0x1b8bbc)&&typeof _0x1b8bbc!==_0x31ae('0x17d')){return _0x504408(msgResponse(_0x31ae('0x17e'),_0x31ae('0x14f'),_0x31ae('0x17f')));}if(_[_0x31ae('0x42')](_0x4864ac[_0x31ae('0x180')])||_0x4864ac[_0x31ae('0x180')]===null){return _0x504408(msgResponse(_0x31ae('0x17e'),_0x31ae('0x14f'),'contact\x20is\x20undefine'));}var _0x29e30a={'XMD-CALLERID':_0x19e1f5[_0x31ae('0x29')][_0x466dc6]['getCaller'](),'XMD-AGI':_0x1b8bbc[_0x31ae('0x112')]?util[_0x31ae('0x7a')](_0x31ae('0x181'),ipAgi,_0x1b8bbc[_0x31ae('0x112')]):_0x31ae('0x182'),'XMD-AGIAFTER':_0x1b8bbc[_0x31ae('0x119')]?util[_0x31ae('0x7a')](_0x31ae('0x181'),ipAgi,_0x1b8bbc[_0x31ae('0x119')]):_0x31ae('0x182'),'XMD-QUEUE':_0x1b8bbc[_0x31ae('0x4f')]==='outbound'?util[_0x31ae('0x7a')](_0x31ae('0x183'),_0x1b8bbc[_0x31ae('0x45')],_0x1b8bbc[_0x31ae('0x184')]||'',_0x1b8bbc[_0x31ae('0x11a')]?'c':'',_0x1b8bbc[_0x31ae('0x123')]||0x3):_0x31ae('0x182'),'XMD-CONTACTID':_0x4864ac[_0x31ae('0xdd')],'XMD-CDRTYPE':_0x31ae('0x8'),'CALLERID(all)':_0x19e1f5['actions'][_0x466dc6][_0x31ae('0x185')](),'XMD-AMD':_0x1b8bbc[_0x31ae('0xeb')]?'ACTIVE':_0x31ae('0x182'),'XMD-DESTINATION':_0x31ae('0x186')};if(_0x1b8bbc['dialAMDActive']){_0x29e30a[_0x31ae('0x187')]=_0x1b8bbc[_0x31ae('0x188')]||0x9c4;_0x29e30a[_0x31ae('0x189')]=_0x1b8bbc[_0x31ae('0x18a')]||0x5dc;_0x29e30a['XMD-AMDAFTERGREETINGSILENCE']=_0x1b8bbc['dialAMDAfterGreetingSilence']||0x320;_0x29e30a['XMD-AMDTOTALANALYSISTIME']=_0x1b8bbc['dialAMDTotalAnalysisTime']||0x1388;_0x29e30a['XMD-AMDMINWORDLENGTH']=_0x1b8bbc['dialAMDMinWordLength']||0x64;_0x29e30a[_0x31ae('0x18b')]=_0x1b8bbc['dialAMDBetweenWordsSilence']||0x32;_0x29e30a[_0x31ae('0x18c')]=_0x1b8bbc[_0x31ae('0x18d')]||0x3;_0x29e30a[_0x31ae('0x18e')]=_0x1b8bbc[_0x31ae('0x18f')]||0x100;_0x29e30a['XMD-AMDMAXIMUMWORDLENGTH']=_0x1b8bbc[_0x31ae('0x190')]||0x1388;}if(_0x1b8bbc[_0x31ae('0x4f')]==='outbound'){_0x29e30a[_0x31ae('0x191')]=_0x4864ac[_0x31ae('0xe0')];}else{_0x29e30a['XMD-CAMPAIGNID']=_0x4864ac[_0x31ae('0xe1')];}for(var _0x1768a1 in _0x4864ac[_0x31ae('0x192')]){if(typeof _0x4864ac['Contact'][_0x1768a1]!==_0x31ae('0x9d')){if(isNotNull(_0x4864ac[_0x31ae('0x192')][_0x1768a1])&&_0x1768a1!=='id'&&_0x1768a1!==_0x31ae('0x193')&&_0x1768a1!==_0x31ae('0x194')&&_0x1768a1!=='updatedAt'){_0x29e30a[util[_0x31ae('0x7a')]('%s%s',_0x31ae('0x195'),_[_0x31ae('0x196')](_0x1768a1))]=_0x4864ac[_0x31ae('0x192')][_0x1768a1];}}}var _0x3f7402=_0x19e1f5[_0x31ae('0x149')](_0x1b8bbc[_0x31ae('0x78')])?getCallerId(_0x1b8bbc[_0x31ae('0x78')]['callerid'],_0x1b8bbc['dialOriginateCallerIdName'],_0x1b8bbc[_0x31ae('0x197')]>0x0?getCallerIdRandom(_0x1b8bbc[_0x31ae('0x5d')],_0x1b8bbc[_0x31ae('0x197')]):_0x1b8bbc[_0x31ae('0x5d')]):getCallerId(_[_0x31ae('0xb4')](_0x1b8bbc['TrunkBackup'])?_0x1b8bbc[_0x31ae('0x78')][_0x31ae('0x79')]:_0x1b8bbc[_0x31ae('0x198')][_0x31ae('0x79')],_0x1b8bbc[_0x31ae('0x5c')],_0x1b8bbc[_0x31ae('0x197')]>0x0?getCallerIdRandom(_0x1b8bbc[_0x31ae('0x5d')],_0x1b8bbc[_0x31ae('0x197')]):_0x1b8bbc[_0x31ae('0x5d')]);if(_0x3f7402){_0x29e30a[_0x31ae('0x199')]=_0x19e1f5[_0x31ae('0x29')][_0x466dc6][_0x31ae('0x19a')]=extractCalleridName(_0x3f7402);_0x29e30a[_0x31ae('0x19b')]=_0x4864ac[_0x31ae('0x180')];}return ami['Action']({'actionid':_0x466dc6,'action':_0x31ae('0x17e'),'channel':_0x19e1f5['isTrunkReachable'](_0x1b8bbc[_0x31ae('0x78')])?util[_0x31ae('0x7a')](_0x31ae('0x19c'),_0x1b8bbc[_0x31ae('0x78')]['name'],isNotNull(_0x1b8bbc['dialPrefix'])?_0x1b8bbc[_0x31ae('0x5e')][_0x31ae('0x19d')]()||'':'',_0x1b8bbc[_0x31ae('0x19e')]>0x0?_0x4864ac[_0x31ae('0x180')]['substring'](_0x1b8bbc['dialCutDigit']):_0x4864ac[_0x31ae('0x180')]):util['format'](_0x31ae('0x19c'),_[_0x31ae('0xb4')](_0x1b8bbc[_0x31ae('0x198')])?_0x1b8bbc[_0x31ae('0x78')][_0x31ae('0x45')]:_0x1b8bbc[_0x31ae('0x198')]['name'],isNotNull(_0x1b8bbc[_0x31ae('0x5e')])?_0x1b8bbc[_0x31ae('0x5e')][_0x31ae('0x19d')]()||'':'',_0x1b8bbc['dialCutDigit']>0x0?_0x4864ac[_0x31ae('0x180')][_0x31ae('0x19f')](_0x1b8bbc['dialCutDigit']):_0x4864ac[_0x31ae('0x180')]),'callerid':_0x3f7402,'Exten':_0x31ae('0x186'),'Context':_0x31ae('0x1a0'),'Priority':'1','variable':_0x29e30a,'timeout':(_0x1b8bbc[_0x31ae('0x1a1')]||0x1e)*0x3e8,'async':!![],'channelid':_0x466dc6})[_0x31ae('0xc2')](function(_0x1658ac){return _0x535183(_0x1658ac);})['catch'](function(_0x37f754){_0x1b8bbc[_0x31ae('0x1a2')]+=0x1;var _0x24e3b2=new History(_0x19e1f5[_0x31ae('0x29')][_0x466dc6]);logger[_0x31ae('0x99')](util[_0x31ae('0x7a')](_0x31ae('0x1a3'),JSON[_0x31ae('0x4d')](_0x37f754)));_0x24e3b2['state']=0xe;_0x24e3b2[_0x31ae('0xae')]=_0x31ae('0x1a4');_0x24e3b2[_0x31ae('0xb0')]=moment()['format'](_0x31ae('0x120'));_0x24e3b2[_0x31ae('0xaf')]=_0x24e3b2[_0x31ae('0xb0')];_0x19e1f5[_0x31ae('0xd5')](_0x24e3b2)[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x1a5')));_0x19e1f5[_0x31ae('0xd3')](_0x24e3b2)[_0x31ae('0xb8')](loggerCatch('[originate][error]'))['finally'](function(){delete _0x19e1f5['actions'][_0x466dc6];return _0x504408(msgResponse(_0x31ae('0x17e'),_0x31ae('0x1a6'),'originate\x20action\x20Error'));});});});};Dialer[_0x31ae('0x1e')]['syncOriginateResponse']=function(_0x56397d){var _0x4b4066=this[_0x31ae('0x29')][_0x56397d[_0x31ae('0x135')]];if(_0x4b4066){delete this[_0x31ae('0x29')][_0x56397d[_0x31ae('0x135')]];_0x4b4066[_0x31ae('0x122')]=moment()[_0x31ae('0x7a')](_0x31ae('0x120'));var _0x49045d=_0x4b4066[_0x31ae('0x4f')]===_0x31ae('0x7b')?this[_0x31ae('0x24')][_0x4b4066[_0x31ae('0xba')]]:this[_0x31ae('0x23')][_0x4b4066[_0x31ae('0x1a7')]()];if(!this['isSuccess'](_0x56397d[_0x31ae('0x1a8')])){this[_0x31ae('0xb9')](_0x49045d);return this[_0x31ae('0x1a9')](_0x4b4066,_0x49045d,_0x56397d)[_0x31ae('0xb8')](loggerCatch('[callProgressDetecting]\x20'));}this['uniqueId'][_0x56397d[_0x31ae('0xe8')]]=_0x4b4066;}};Dialer[_0x31ae('0x1e')][_0x31ae('0x1aa')]=function(_0x140165,_0xc48560,_0x110bb0){var _0x115cd8=new History(_0xc48560);if(_0x115cd8['countbusyretry']+_0x115cd8[_0x31ae('0x10c')]+_0x115cd8[_0x31ae('0xfb')]+_0x115cd8['countnosuchnumberretry']+_0x115cd8[_0x31ae('0xfd')]+_0x115cd8[_0x31ae('0xfe')]+_0x115cd8['countmachineretry']+_0x115cd8[_0x31ae('0xff')]>=_0x110bb0['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x140165){case 0x3:if(_0x115cd8[_0x31ae('0xfb')]>=_0x110bb0[_0x31ae('0x1ab')]-0x1){return!![];}this[_0x31ae('0xc9')]({'active':![],'countnoanswerretry':_0x115cd8[_0x31ae('0xfb')]+=0x1,'scheduledat':moment()[_0x31ae('0x105')](_0x110bb0[_0x31ae('0x1ac')],_0x31ae('0x107'))[_0x31ae('0x7a')](_0x31ae('0x120')),'ContactId':_0x115cd8[_0x31ae('0xdd')],'ListId':_0x115cd8[_0x31ae('0xde')],'VoiceQueueId':_0x115cd8['VoiceQueueId']||undefined,'CampaignId':_0x115cd8[_0x31ae('0xe1')]||undefined})['catch'](loggerCatch(_0x31ae('0x1ad')));break;case 0x5:if(_0x115cd8[_0x31ae('0x10b')]>=_0x110bb0[_0x31ae('0x1ae')]-0x1){return!![];}this[_0x31ae('0xc9')]({'active':![],'countbusyretry':_0x115cd8[_0x31ae('0x10b')]+=0x1,'scheduledat':moment()[_0x31ae('0x105')](_0x110bb0['dialBusyRetryFrequency'],_0x31ae('0x107'))[_0x31ae('0x7a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x115cd8['ContactId'],'ListId':_0x115cd8['ListId'],'VoiceQueueId':_0x115cd8['VoiceQueueId']||undefined,'CampaignId':_0x115cd8[_0x31ae('0xe1')]||undefined})[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x1af')));break;case 0x8:if(_0x115cd8[_0x31ae('0x10c')]>=_0x110bb0[_0x31ae('0x1b0')]-0x1){return!![];}this[_0x31ae('0xc9')]({'active':![],'countcongestionretry':_0x115cd8[_0x31ae('0x10c')]+=0x1,'scheduledat':moment()[_0x31ae('0x105')](_0x110bb0['dialCongestionRetryFrequency'],_0x31ae('0x107'))[_0x31ae('0x7a')](_0x31ae('0x120')),'ContactId':_0x115cd8[_0x31ae('0xdd')],'ListId':_0x115cd8[_0x31ae('0xde')],'VoiceQueueId':_0x115cd8['VoiceQueueId']||undefined,'CampaignId':_0x115cd8[_0x31ae('0xe1')]||undefined})[_0x31ae('0xb8')](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x115cd8['countnosuchnumberretry']>=_0x110bb0['dialNoSuchNumberMaxRetry']-0x1){return!![];}else{this[_0x31ae('0xc9')]({'active':![],'countnosuchnumberretry':_0x115cd8['countnosuchnumberretry']+=0x1,'scheduledat':moment()[_0x31ae('0x105')](_0x110bb0['dialNoSuchNumberRetryFrequency'],_0x31ae('0x107'))[_0x31ae('0x7a')](_0x31ae('0x120')),'ContactId':_0x115cd8[_0x31ae('0xdd')],'ListId':_0x115cd8[_0x31ae('0xde')],'VoiceQueueId':_0x115cd8[_0x31ae('0xe0')]||undefined,'CampaignId':_0x115cd8['CampaignId']||undefined})[_0x31ae('0xb8')](loggerCatch('[rescheduleContact][NoSuchNumber]'));}break;case 0xa:if(_0x115cd8[_0x31ae('0xfd')]>=_0x110bb0[_0x31ae('0x12a')]-0x1){return!![];}this[_0x31ae('0xc9')]({'active':![],'countdropretry':_0x115cd8[_0x31ae('0xfd')]+=0x1,'scheduledat':moment()[_0x31ae('0x105')](_0x110bb0[_0x31ae('0x127')],_0x31ae('0x107'))[_0x31ae('0x7a')](_0x31ae('0x120')),'ContactId':_0x115cd8[_0x31ae('0xdd')],'ListId':_0x115cd8['ListId'],'VoiceQueueId':_0x115cd8[_0x31ae('0xe0')]||undefined,'CampaignId':_0x115cd8[_0x31ae('0xe1')]||undefined})[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x1b1')));break;case 0xb:if(_0x115cd8[_0x31ae('0xfe')]>=_0x110bb0[_0x31ae('0x132')]-0x1){return!![];}this[_0x31ae('0xc9')]({'active':![],'countabandonedretry':_0x115cd8[_0x31ae('0xfe')]+=0x1,'scheduledat':moment()[_0x31ae('0x105')](_0x110bb0['dialAbandonedRetryFrequency'],_0x31ae('0x107'))['format'](_0x31ae('0x120')),'ContactId':_0x115cd8[_0x31ae('0xdd')],'ListId':_0x115cd8[_0x31ae('0xde')],'VoiceQueueId':_0x115cd8[_0x31ae('0xe0')]||undefined,'CampaignId':_0x115cd8[_0x31ae('0xe1')]||undefined})[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x133')));break;case 0x13:if(_0x115cd8[_0x31ae('0xf8')]>=_0x110bb0['dialMachineMaxRetry']-0x1){return!![];}this[_0x31ae('0xc9')]({'active':![],'countmachineretry':_0x115cd8[_0x31ae('0xf8')]+=0x1,'scheduledat':moment()[_0x31ae('0x105')](_0x110bb0[_0x31ae('0x106')],'minutes')[_0x31ae('0x7a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x115cd8[_0x31ae('0xdd')],'ListId':_0x115cd8['ListId'],'VoiceQueueId':_0x115cd8[_0x31ae('0xe0')]||undefined,'CampaignId':_0x115cd8[_0x31ae('0xe1')]||undefined})[_0x31ae('0xb8')](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x115cd8[_0x31ae('0xff')]>=_0x110bb0[_0x31ae('0x1b2')]-0x1){return!![];}this[_0x31ae('0xc9')]({'active':![],'countagentrejectretry':_0x115cd8[_0x31ae('0xff')]+=0x1,'scheduledat':moment()[_0x31ae('0x105')](_0x110bb0[_0x31ae('0x1b3')],_0x31ae('0x107'))[_0x31ae('0x7a')](_0x31ae('0x120')),'ContactId':_0x115cd8[_0x31ae('0xdd')],'ListId':_0x115cd8[_0x31ae('0xde')],'VoiceQueueId':_0x115cd8['VoiceQueueId']||undefined,'CampaignId':_0x115cd8['CampaignId']||undefined})[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x1b4')));break;default:return!![];}};Dialer['prototype']['callProgressDetecting']=function(_0x568d40,_0x463820,_0x3392d){var _0x59f0e2=this;var _0xdefb99=new History(_0x568d40);var _0x4a1ed3=![];var _0x492aab;var _0x1c23e9;return new BPromise(function(_0x5b563a,_0x306c6e){if(_['isUndefined'](_0x463820)&&typeof _0x463820!=='object'){return _0x306c6e(msgResponse(_0x31ae('0x1b5'),_0x31ae('0x14f'),_0x31ae('0x1b6')));}if(_['isUndefined'](_0x3392d)&&typeof _0x3392d!==_0x31ae('0x17d')){return _0x306c6e(msgResponse(_0x31ae('0x1b5'),_0x31ae('0x14f'),_0x31ae('0x1b7')));}_0x59f0e2[_0x31ae('0xc0')](_0xdefb99,_0x3392d['reason'],_0x463820)[_0x31ae('0xc2')](function(_0x379ea6){if(_0x379ea6[_0x31ae('0x129')]==0x1)_0x4a1ed3=!![];switch(_0x3392d[_0x31ae('0x117')]){case'0':_0x463820[_0x31ae('0x66')]+=0x1;_0xdefb99[_0x31ae('0xad')]=0x0;_0xdefb99[_0x31ae('0xae')]='NoSuchNumber';_0xdefb99[_0x31ae('0xfc')]+=0x1;_0xdefb99['countglobal']+=0x1;ami[_0x31ae('0xf1')](_0x31ae('0x1b8'),ut[_0x31ae('0xf9')](_0x568d40,_0x31ae('0x1b9')));_0x492aab=_0x463820[_0x31ae('0x1ba')];_0x1c23e9=_0x463820[_0x31ae('0x128')];_0x59f0e2[_0x31ae('0xd5')](_0xdefb99)[_0x31ae('0xb8')](loggerCatch(_0x31ae('0xfa')));if(_0x59f0e2[_0x31ae('0x1aa')](0x0,_0x568d40,_0x463820)&&!_0x4a1ed3){if(_0xdefb99[_0x31ae('0xfc')]>=_0x463820[_0x31ae('0x1bb')]){_0x59f0e2[_0x31ae('0x10d')](_0xdefb99,_0x5b563a,_0x306c6e,_0x31ae('0x1bc'));}else{_0x59f0e2['stateGlobal'](_0xdefb99,_0x5b563a,_0x306c6e,_0x31ae('0x1bc'));}}break;case'3':_0x463820['outboundNoAnswerCallsDay']+=0x1;_0xdefb99['state']=0x3;_0xdefb99[_0x31ae('0xae')]=_0x31ae('0x1bd');_0xdefb99[_0x31ae('0xfb')]+=0x1;_0xdefb99[_0x31ae('0x1be')]+=0x1;ami[_0x31ae('0xf1')](_0x31ae('0x1bf'),ut[_0x31ae('0xf9')](_0x568d40,_0x31ae('0x1c0')));_0x492aab=_0x463820['dialNoAnswerRetryFrequency'];_0x1c23e9=_0x463820[_0x31ae('0x128')];_0x59f0e2[_0x31ae('0xd5')](_0xdefb99)['catch'](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0x59f0e2['checkRetriveMax'](0x3,_0x568d40,_0x463820)&&!_0x4a1ed3){if(_0xdefb99[_0x31ae('0xfb')]>=_0x463820['dialNoAnswerMaxRetry']){_0x59f0e2['createStateFinal'](_0xdefb99,_0x5b563a,_0x306c6e,_0x31ae('0x1c1'));}else{_0x59f0e2['stateGlobal'](_0xdefb99,_0x5b563a,_0x306c6e,_0x31ae('0x1c1'));}}break;case'5':_0x463820[_0x31ae('0x61')]+=0x1;_0xdefb99[_0x31ae('0xad')]=0x5;_0xdefb99[_0x31ae('0xae')]='Busy';_0xdefb99['countbusyretry']+=0x1;_0xdefb99[_0x31ae('0x1be')]+=0x1;ami[_0x31ae('0xf1')]('custom:agentbusy',ut[_0x31ae('0xf9')](_0x568d40,'busy'));_0x492aab=_0x463820[_0x31ae('0x1c2')];_0x1c23e9=_0x463820[_0x31ae('0x128')];_0x59f0e2[_0x31ae('0xd5')](_0xdefb99)['catch'](loggerCatch('[syncAgentComplete][createHistory][5]'));if(_0x59f0e2['checkRetriveMax'](0x5,_0x568d40,_0x463820)&&!_0x4a1ed3){if(_0xdefb99['countbusyretry']>=_0x463820['dialBusyMaxRetry']){_0x59f0e2[_0x31ae('0x10d')](_0xdefb99,_0x5b563a,_0x306c6e,_0x31ae('0x1c3'));}else{_0x59f0e2[_0x31ae('0x101')](_0xdefb99,_0x5b563a,_0x306c6e,_0x31ae('0x1c3'));}}break;case'8':_0x463820[_0x31ae('0x62')]+=0x1;_0xdefb99['state']=0x8;_0xdefb99['statedesc']=_0x31ae('0x1c4');_0xdefb99['countcongestionretry']+=0x1;_0xdefb99['countglobal']+=0x1;_0x492aab=_0x463820[_0x31ae('0x1c5')];_0x1c23e9=_0x463820['callAdditionalPhoneAfterMin'];ami[_0x31ae('0xf1')](_0x31ae('0x1c6'),ut[_0x31ae('0xf9')](_0x568d40,_0x31ae('0x1c7')));_0x59f0e2[_0x31ae('0xd5')](_0xdefb99)['catch'](loggerCatch(_0x31ae('0x1c8')));if(_0x59f0e2[_0x31ae('0x1aa')](0x8,_0x568d40,_0x463820)&&!_0x4a1ed3){if(_0xdefb99['countcongestionretry']>=_0x463820[_0x31ae('0x1b0')]){_0x59f0e2[_0x31ae('0x10d')](_0xdefb99,_0x5b563a,_0x306c6e,_0x31ae('0x1c9'));}else{_0x59f0e2[_0x31ae('0x101')](_0xdefb99,_0x5b563a,_0x306c6e,_0x31ae('0x1c9'));}}break;case'11':_0x463820[_0x31ae('0x1ca')]+=0x1;_0xdefb99[_0x31ae('0xad')]=0xb;_0xdefb99[_0x31ae('0xae')]=_0x31ae('0x12e');_0xdefb99['countabandonedretry']+=0x1;_0xdefb99[_0x31ae('0x1be')]+=0x1;_0x492aab=_0x463820[_0x31ae('0x130')];_0x1c23e9=_0x463820[_0x31ae('0x128')];_0x59f0e2[_0x31ae('0xd5')](_0xdefb99)['catch'](loggerCatch(_0x31ae('0x134')));if(_0x59f0e2[_0x31ae('0x1aa')](0xb,_0x568d40,_0x463820)&&!_0x4a1ed3){if(_0xdefb99['countabandonedretry']>=_0x463820[_0x31ae('0x132')]){_0x59f0e2[_0x31ae('0x10d')](_0xdefb99,_0x5b563a,_0x306c6e,_0x31ae('0x1cb'));}else{_0x59f0e2['stateGlobal'](_0xdefb99,_0x5b563a,_0x306c6e,_0x31ae('0x1cb'));}}break;case'20':_0x463820[_0x31ae('0x68')]+=0x1;_0xdefb99[_0x31ae('0xad')]=0x14;_0xdefb99[_0x31ae('0xae')]='AgentReject';_0xdefb99['countagentrejectretry']+=0x1;_0xdefb99[_0x31ae('0x1be')]+=0x1;_0x492aab=_0x463820['dialAgentRejectRetryFrequency'];_0x1c23e9=_0x463820[_0x31ae('0x128')];ami[_0x31ae('0xf1')](_0x31ae('0x1cc'),ut['buildObj'](_0x568d40,_0x31ae('0x1cd')));_0x59f0e2[_0x31ae('0xd5')](_0xdefb99)[_0x31ae('0xb8')](loggerCatch('[syncAgentComplete][createHistory][20]'));if(_0x59f0e2[_0x31ae('0x1aa')](0x14,_0x568d40,_0x463820)&&!_0x4a1ed3){if(_0xdefb99[_0x31ae('0xff')]>=_0x463820[_0x31ae('0x1b2')]){_0x59f0e2[_0x31ae('0x10d')](_0xdefb99,_0x5b563a,_0x306c6e,_0x31ae('0x1ce'));}else{_0x59f0e2[_0x31ae('0x101')](_0xdefb99,_0x5b563a,_0x306c6e,_0x31ae('0x1ce'));}}break;default:_0x463820[_0x31ae('0x113')]+=0x1;_0xdefb99[_0x31ae('0xad')]=0xc;_0xdefb99[_0x31ae('0xae')]=_0x3392d['reason'];_0x492aab=_0x463820[_0x31ae('0x1b3')];_0x1c23e9=_0x463820[_0x31ae('0x128')];_0x59f0e2['createHistory'](_0xdefb99)[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x1cf')));if(_0x59f0e2['checkRetriveMax'](_0x3392d[_0x31ae('0x117')],_0x568d40,_0x463820)&&!_0x4a1ed3){if(_0xdefb99[_0x31ae('0x10b')]+_0xdefb99['countcongestionretry']+_0xdefb99['countnoanswerretry']+_0xdefb99['countnosuchnumberretry']+_0xdefb99[_0x31ae('0xfd')]+_0xdefb99['countabandonedretry']+_0xdefb99['countmachineretry']+_0xdefb99['countagentrejectretry']>=_0x463820[_0x31ae('0x100')]){_0x59f0e2['stateGlobal'](_0xdefb99,_0x5b563a,_0x306c6e,_0x3392d['reason']);}else{_0x59f0e2[_0x31ae('0x10d')](_0xdefb99,_0x5b563a,_0x306c6e,_0x3392d[_0x31ae('0x117')]);}}}})[_0x31ae('0xc2')](function(_0x246746){if(_0x4a1ed3){_0x59f0e2['swapAdditionalPhones'](_0xdefb99,_0x492aab,_0x1c23e9)[_0x31ae('0xc2')](function(_0x7b7430){return _0x5b563a(0x1);});}});});};Dialer[_0x31ae('0x1e')][_0x31ae('0x101')]=function(_0x13a0aa,_0x4349df,_0x569d4e,_0x15c720){var _0x361684=new Final(_0x13a0aa);_0x361684['state']=0xf;_0x361684['statedesc']=_0x31ae('0x1d0');this['createStateFinal'](_0x361684,_0x4349df,_0x569d4e,_0x15c720);};Dialer[_0x31ae('0x1e')]['createStateFinal']=function(_0x21bc7b,_0x1dde86,_0x191b19,_0x4ed9ed){this[_0x31ae('0xd3')](_0x21bc7b)[_0x31ae('0xc2')](function(){return _0x1dde86(msgResponse('[callProgressDetecting]',_0x31ae('0x1d1'),_0x4ed9ed));})['catch'](function(){return _0x191b19(msgResponse('[moveContactManagedDialer][0]',_0x31ae('0x14f'),_0x31ae('0x1d2')));});};Dialer['prototype'][_0x31ae('0xa')]=function(_0x14a225){var _0x4e2ea2=_0x14a225[_0x31ae('0x1d3')]/0x64;var _0x5ada6e=_0x14a225[_0x31ae('0x64')]/(_0x14a225[_0x31ae('0x64')]+_0x14a225[_0x31ae('0x60')]);var _0x1eb4a2=Math['round'](_0x14a225['predictiveIntervalAvailable']*(_0x14a225[_0x31ae('0x1d4')]/0x64));var _0xb44a2f=Math[_0x31ae('0x1d5')](_0x14a225[_0x31ae('0x73')]*(_0x14a225[_0x31ae('0x1d6')]/0x64));var _0xb83cef=_0x14a225[_0x31ae('0xa6')]+_0x14a225[_0x31ae('0x56')];var _0x417490=Math['floor'](_0x14a225[_0x31ae('0x74')]*_0x14a225['erlangAbandonmentRate']*_0x14a225[_0x31ae('0x70')]*_0x14a225[_0x31ae('0x71')]);if(_[_0x31ae('0x42')](_0x14a225[_0x31ae('0x2d')])){if(!_['isUndefined'](_0x14a225[_0x31ae('0x2c')])){_0x14a225[_0x31ae('0x2c')]=undefined;loggerPredictive['error']('[startMethodPredictive][StartProgressive]',_0x31ae('0x1d7'));}if(!_[_0x31ae('0x42')](_0x14a225['handlePredictive'])){loggerPredictive[_0x31ae('0x99')]('[startMethodPredictive][StartProgressive]',_0x31ae('0x1d8'));clearInterval(_0x14a225[_0x31ae('0x92')]);_0x14a225[_0x31ae('0x92')]=undefined;}_0x14a225[_0x31ae('0x2d')]=moment()['format'](_0x31ae('0x120'));loggerPredictive[_0x31ae('0x7e')](_0x14a225[_0x31ae('0x45')],_0x31ae('0x1d9'),_0x14a225[_0x31ae('0x2d')]);this['handlePower'](_0x14a225,0x1);}else if(ifInterval(_0x14a225['dialPredictiveInterval'],_0x14a225[_0x31ae('0x2d')])){this[_0x31ae('0x168')](_0x14a225,0x1);loggerPredictiveCalls[_0x31ae('0x7e')](_0x31ae('0x1da'),_0x14a225[_0x31ae('0x2d')],_0x14a225[_0x31ae('0x45')]);_0x14a225[_0x31ae('0x74')]=0x0;_0x14a225[_0x31ae('0x6f')]=0x0;}else if(_0x4e2ea2<_0x5ada6e&&_0x14a225[_0x31ae('0x1db')]==='dropRate'){freeVariablesPredictive(_0x14a225);loggerPredictive[_0x31ae('0x7e')](_0x31ae('0x1dc'),_0x31ae('0x1dd'),_0x5ada6e,'startProgressive',_0x14a225[_0x31ae('0x45')]);}else if(_0x417490<_0x14a225[_0x31ae('0x6f')]&&_0x14a225[_0x31ae('0x1db')]===_0x31ae('0x1de')){freeVariablesPredictive(_0x14a225);loggerPredictive[_0x31ae('0x7e')]('[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]',_0x31ae('0x1df'),_0x417490,_0x31ae('0x1e0'),_0x14a225[_0x31ae('0x6f')],_0x31ae('0x2d'),_0x14a225[_0x31ae('0x45')]);}else if(!ifInterval(_0x14a225['dialPredictiveInterval'],_0x14a225[_0x31ae('0x2d')])&&_[_0x31ae('0x42')](_0x14a225['startPredictive'])&&!_[_0x31ae('0x42')](_0x14a225[_0x31ae('0x2d')])){_0x14a225['startPredictive']=moment()[_0x31ae('0x7a')](_0x31ae('0x120'));loggerPredictive[_0x31ae('0x7e')](_0x14a225[_0x31ae('0x45')],_0x31ae('0x1e1'),_0x14a225[_0x31ae('0x2c')]);this[_0x31ae('0xc6')](_0x14a225[_0x31ae('0x1e2')])[_0x31ae('0xc2')](this[_0x31ae('0x1e3')](_0x14a225))[_0x31ae('0xc2')](mergeDataErlangB(_0x14a225))['then'](this[_0x31ae('0x1e4')](_0x14a225))[_0x31ae('0xb8')](loggerCatchPredictive(_0x31ae('0x1e5'),_0x14a225));}else if(!ifInterval(_0x14a225['dialPredictiveInterval'],_0x14a225[_0x31ae('0x2c')])){_0x14a225[_0x31ae('0x6f')]=0x0;_0x14a225['startPredictive']=moment()['format'](_0x31ae('0x120'));loggerPredictive[_0x31ae('0x7e')](_0x14a225[_0x31ae('0x45')],_0x31ae('0x1e6'),_0x14a225[_0x31ae('0x2c')]);clearInterval(_0x14a225[_0x31ae('0x92')]);_0x14a225[_0x31ae('0x92')]=undefined;this[_0x31ae('0xc6')](_0x14a225['dialPredictiveInterval'])['then'](this[_0x31ae('0x1e3')](_0x14a225))[_0x31ae('0xc2')](mergeDataErlangB(_0x14a225))[_0x31ae('0xc2')](this[_0x31ae('0x1e4')](_0x14a225))[_0x31ae('0xb8')](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0x14a225));}else if(_0x14a225[_0x31ae('0x73')]&&_0xb83cef<_0x14a225[_0x31ae('0x73')]-_0xb44a2f){freeVariablesPredictive(_0x14a225);loggerPredictive[_0x31ae('0x7e')](_0x14a225[_0x31ae('0x45')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0xb83cef,_0x31ae('0x1e7'),_0x14a225[_0x31ae('0x73')],'-',_0xb44a2f,'=',_0x14a225[_0x31ae('0x73')]-_0xb44a2f,')');}else if(_0x14a225[_0x31ae('0x73')]&&_0xb83cef>_0x14a225['predictiveIntervalAvailable']+_0x1eb4a2){freeVariablesPredictive(_0x14a225);loggerPredictive['info'](_0x14a225[_0x31ae('0x45')],_0x31ae('0x1e8'),_0xb83cef,_0x31ae('0x1e9'),_0x14a225[_0x31ae('0x73')],'+',_0x1eb4a2,'=',_0x14a225[_0x31ae('0x73')]+_0x1eb4a2,')');}};Dialer[_0x31ae('0x1e')][_0x31ae('0x1e3')]=function(_0x31162c){var _0x276450=this;return function(_0x4dbbe8){return new BPromise(function(_0x49cc9a,_0x307a64){_[_0x31ae('0x8d')](_0x31162c,_0x4dbbe8[0x0]);if(checkGetDataPredictive(_0x4dbbe8[0x0])){var _0xa92a16=_0x31162c[_0x31ae('0x73')]=_0x31162c['talking']+_0x31162c[_0x31ae('0xa6')];var _0x318743=_0x31162c['dialPredictiveInterval']*0x3c;var _0x22b9b4=_0x4dbbe8[0x0][_0x31ae('0x6b')]+_0x4dbbe8[0x0][_0x31ae('0x6a')];var _0x260f00=(_0x4dbbe8[0x0][_0x31ae('0x69')]+_0x4dbbe8[0x0][_0x31ae('0x6d')]+_0x4dbbe8[0x0][_0x31ae('0x6c')])/_0x4dbbe8[0x0][_0x31ae('0x80')];_0x31162c[_0x31ae('0x70')]=_0x260f00>0x0?_0x260f00:0x1;switch(_0x31162c[_0x31ae('0x1db')]){case _0x31ae('0x1de'):var _0x5443f0=_0x31162c[_0x31ae('0x1d3')]/0x64;return _0x276450[_0x31ae('0x1ea')](_0xa92a16,_0x318743,_0x22b9b4,_0x260f00,_0x5443f0)[_0x31ae('0xc2')](function(_0x4828bf){return _0x49cc9a(_0x4828bf);});case _0x31ae('0x1eb'):var _0x2500bd=_0x31162c[_0x31ae('0x1d3')]/0x64;return _0x276450[_0x31ae('0x1ec')](_0xa92a16,_0x318743,_0x22b9b4,_0x260f00,_0x2500bd)['then'](function(_0x19c96a){return _0x49cc9a(_0x19c96a);});default:return _0x307a64(msgResponse(_0x31ae('0x1ed'),_0x31ae('0x14f'),_0x31ae('0x1ee')));}}else{return _0x307a64(msgResponse('[getDataPredictive]',_0x31ae('0x14f'),_0x31ae('0x1ef')));}});};};Dialer[_0x31ae('0x1e')]['getDataPredictiveOld']=function(_0x53169d){var _0xc944f8=this;return function(_0x30eddc){return new BPromise(function(_0x8a744e,_0x442272){_[_0x31ae('0x8d')](_0x53169d,_0x30eddc[0x0]);if(checkGetDataPredictive(_0x30eddc[0x0])){loggerPredictive['info'](JSON[_0x31ae('0x4d')](_0x30eddc[0x0]));if(_0x53169d[_0x31ae('0x1db')]===_0x31ae('0x1de')){return _0xc944f8[_0x31ae('0xd1')](_0x53169d['id'])[_0x31ae('0xc2')](function(_0x2ae69c){var _0x109cb3=_0x53169d[_0x31ae('0x52')]-_0x2ae69c[0x0][_0x31ae('0x1f0')];var _0x188624=_0x53169d[_0x31ae('0x1e2')]*0x3c;var _0x3e50ca=_0x30eddc[0x0][_0x31ae('0x6b')]+_0x30eddc[0x0][_0x31ae('0x6a')];var _0x5aaa9c=(_0x30eddc[0x0]['predictiveIntervalAnsweredCalls']+_0x30eddc[0x0][_0x31ae('0x6d')]+_0x30eddc[0x0][_0x31ae('0x6c')])/_0x30eddc[0x0][_0x31ae('0x80')];var _0x9642d2=_0x53169d[_0x31ae('0x1d3')]/0x64;_0x53169d[_0x31ae('0x72')]=_0x2ae69c[0x0][_0x31ae('0x1f0')]||0x0;_0x53169d['predictiveIntervalHitRate']=_0x5aaa9c>0x0?_0x5aaa9c:0x1;return _0xc944f8[_0x31ae('0x1ea')](_0x109cb3,_0x188624,_0x3e50ca,_0x5aaa9c,_0x9642d2);})[_0x31ae('0xc2')](function(_0x3da5af){return _0x8a744e(_0x3da5af);})[_0x31ae('0xb8')](function(_0x1315fc){return _0x442272(msgResponse(_0x31ae('0x1f1'),_0x31ae('0x14f'),JSON[_0x31ae('0x4d')](_0x1315fc)));});}if(_0x53169d[_0x31ae('0x1db')]==='agentBusyFactor'){return _0xc944f8[_0x31ae('0xd1')](_0x53169d['id'])['then'](function(_0x350df3){var _0x350301=_0x53169d[_0x31ae('0x52')]-_0x350df3[0x0][_0x31ae('0x1f0')];var _0x2696e5=_0x53169d[_0x31ae('0x1e2')]*0x3c;var _0x2a5d43=_0x30eddc[0x0]['predictiveIntervalAvgTalktime']+_0x30eddc[0x0][_0x31ae('0x6a')];var _0x48d515=(_0x30eddc[0x0]['predictiveIntervalAnsweredCalls']+_0x30eddc[0x0][_0x31ae('0x6d')]+_0x30eddc[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x30eddc[0x0][_0x31ae('0x80')];var _0x55c70d=_0x53169d['dialPredictiveOptimizationPercentage']/0x64;_0x53169d['predictiveIntervalPauses']=_0x350df3[0x0]['outboundQueuePauses']||0x0;_0x53169d[_0x31ae('0x70')]=_0x48d515>0x0?_0x48d515:0x1;return _0xc944f8[_0x31ae('0x1ec')](_0x350301,_0x2696e5,_0x2a5d43,_0x48d515,_0x55c70d);})[_0x31ae('0xc2')](function(_0x5b4384){return _0x8a744e(_0x5b4384);})[_0x31ae('0xb8')](function(_0x577286){return _0x442272(msgResponse(_0x31ae('0x1f1'),_0x31ae('0x14f'),JSON[_0x31ae('0x4d')](_0x577286)));});}}else{return _0x442272(msgResponse(_0x31ae('0x1ed'),_0x31ae('0x14f'),_0x31ae('0x1ef')));}});};};Dialer[_0x31ae('0x1e')][_0x31ae('0x1e4')]=function(_0x5d8118){var _0x5f5422=this;return function(){var _0x4ddfc6=0x0;var _0x1e8ed=Math[_0x31ae('0x1f2')](_0x5d8118[_0x31ae('0x75')]*0x3e8);if(_0x1e8ed>0x0){_0x1e8ed=_0x1e8ed<0x64?0x64:_0x1e8ed;loggerPredictive[_0x31ae('0x7e')](_0x5d8118[_0x31ae('0x45')],_0x31ae('0x1f3'),_0x1e8ed,_0x31ae('0x8e'));_0x5d8118[_0x31ae('0x92')]=setInterval(function(){_0x5f5422[_0x31ae('0x92')](_0x5d8118);loggerPredictiveCalls['info']('[handlePredictive]',_0x4ddfc6+=0x1);},_0x1e8ed);}else{loggerPredictive['info'](_0x5d8118[_0x31ae('0x45')],_0x31ae('0x1f4'));}};};Dialer[_0x31ae('0x1e')][_0x31ae('0x1f5')]=function(_0x393324,_0x519405){var _0x417c65=this;return function(_0x4682e9){if(_[_0x31ae('0x4b')](_0x4682e9)){if(_[_0x31ae('0xb4')](_0x519405[_0x31ae('0xdf')])||!_0x519405['recallme']){if(_0x393324[_0x31ae('0x166')]===_0x31ae('0x9')){_0x393324[_0x31ae('0x13c')]=_[_0x31ae('0x42')](_0x393324[_0x31ae('0x13c')])?!![]:_0x393324[_0x31ae('0x13c')];var _0x3acfb4=uuid['v4']();_0x417c65[_0x31ae('0x29')][_0x3acfb4]=new Action(_0x393324,_0x519405,_0x3acfb4);loggerBooked['info']('[booked][checkContactBlack]',_0x3acfb4,_0x31ae('0x1f6'),JSON[_0x31ae('0x4d')](_0x393324[_0x31ae('0x13c')]),'Queue:\x20',_0x393324[_0x31ae('0x45')]);if(_0x393324[_0x31ae('0x13c')]){_0x393324[_0x31ae('0x13c')]=![];_0x417c65['queueBooked'][_0x417c65[_0x31ae('0x29')][_0x3acfb4][_0x31ae('0xba')]]=[];ami[_0x31ae('0xb5')]({'actionid':_0x3acfb4,'action':_0x31ae('0x1f7'),'queue':_0x393324['name']})[_0x31ae('0xb8')](function(){_0x417c65['updateOriginated'](_0x393324);_0x417c65[_0x31ae('0xc9')]({'active':![],'ContactId':_0x417c65[_0x31ae('0x29')][_0x3acfb4]['ContactId'],'ListId':_0x417c65[_0x31ae('0x29')][_0x3acfb4][_0x31ae('0xde')],'VoiceQueueId':_0x417c65[_0x31ae('0x29')][_0x3acfb4][_0x31ae('0xe0')]||undefined,'CampaignId':_0x417c65[_0x31ae('0x29')][_0x3acfb4]['CampaignId']||undefined})[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x1f8')));delete _0x417c65['actions'][_0x3acfb4];});}else{loggerBooked[_0x31ae('0x7e')](_0x31ae('0x1f9'),JSON['stringify'](_0x393324[_0x31ae('0x13c')]),_0x31ae('0x1fa'),_0x393324[_0x31ae('0x45')]);_0x417c65[_0x31ae('0xb9')](_0x393324);_0x417c65[_0x31ae('0xc9')]({'active':![],'ContactId':_0x417c65['actions'][_0x3acfb4][_0x31ae('0xdd')],'ListId':_0x417c65[_0x31ae('0x29')][_0x3acfb4][_0x31ae('0xde')],'VoiceQueueId':_0x417c65[_0x31ae('0x29')][_0x3acfb4][_0x31ae('0xe0')]||undefined,'CampaignId':_0x417c65[_0x31ae('0x29')][_0x3acfb4]['CampaignId']||undefined})[_0x31ae('0xb8')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x417c65[_0x31ae('0x29')][_0x3acfb4];}}else{return _0x417c65[_0x31ae('0x1fb')](_0x393324,_0x519405);}}else{if(getDiff(_0x519405[_0x31ae('0x1fc')])<_0x393324[_0x31ae('0x1fd')]*0x3c){if(_0x519405['Agent']&&!_0x519405[_0x31ae('0x1fe')][_0x31ae('0x1ff')]){_0x417c65[_0x31ae('0x94')][_0x31ae('0x200')](_0x519405['id'])[_0x31ae('0x21')](function(){_0x417c65[_0x31ae('0xb9')](_0x393324);});}else{_0x417c65['unlockContact']({'active':![]},_0x519405['id'],0x1)[_0x31ae('0x21')](function(){_0x417c65['updateOriginated'](_0x393324);});}}else{_0x393324[_0x31ae('0x67')]+=0x1;_0x417c65['updateOriginated'](_0x393324);if(_0x393324['dialRecallInQueue']){_0x417c65['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x519405[_0x31ae('0xdd')],'ListId':_0x519405[_0x31ae('0xde')],'VoiceQueueId':_0x519405[_0x31ae('0xe0')]||undefined,'CampaignId':_0x519405['CampaignId']||undefined})[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x201')));_0x417c65['createHistory'](createObjHistory(_0x393324,_0x519405,_0x31ae('0x202'),0x17,_0x31ae('0x203')))[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x204')));}else{_0x417c65['saveInDb'](createObjHistory(_0x393324,_0x519405,_0x31ae('0x205'),0x16,_0x31ae('0x206')),'[Originate][HistoryRecallClose][historyCatch]',_0x31ae('0x207'));}}}}else{_0x393324['outboundBlacklistCallsDay']+=0x1;_0x417c65[_0x31ae('0xdb')](createObjHistory(_0x393324,_0x519405,_0x31ae('0x208'),0xd,_0x31ae('0x209')),_0x31ae('0x20a'),'[Originate][MoveBlacklist]');throw'inBlackList';}};};Dialer[_0x31ae('0x1e')][_0x31ae('0x16c')]=function(_0x4bf8e9){var _0x36a095=this;var _0x45fa33=_0x4bf8e9[_0x31ae('0x20b')]-_0x4bf8e9[_0x31ae('0x9c')]-_0x4bf8e9['temp'];emitCampaignSummary(_0x4bf8e9);if(_0x45fa33>0x0){if(_0x45fa33>this[_0x31ae('0x27')]){_0x45fa33=this[_0x31ae('0x27')];}_0x4bf8e9[_0x31ae('0xcd')]+=_0x45fa33;this['getContactDialerIvr'](_0x4bf8e9['id'],_0x45fa33,_0x4bf8e9[_0x31ae('0x20c')],_0x4bf8e9)[_0x31ae('0xc2')](function(_0x55f866){_0x4bf8e9[_0x31ae('0xcd')]-=_0x45fa33;_0x4bf8e9[_0x31ae('0xcd')]=_0x4bf8e9[_0x31ae('0xcd')]>0x0?_0x4bf8e9[_0x31ae('0xcd')]:0x0;if(!checkContactEmpty(_0x55f866)){_0x4bf8e9[_0x31ae('0x43')]='AVAILABLE_CONTACTS_FINISHED';logger[_0x31ae('0x7e')]('[getContactCampaign2][Empty]'+_0x4bf8e9['name']);}else{_0x4bf8e9[_0x31ae('0x9c')]+=_0x55f866[_0x31ae('0x9b')];_0x4bf8e9[_0x31ae('0x43')]=_0x31ae('0x20d');for(var _0x47a7d2=0x0;_0x47a7d2<_0x55f866[_0x31ae('0x9b')];_0x47a7d2+=0x1){_0x4bf8e9[_0x31ae('0x20e')]+=0x1;if(_[_0x31ae('0xb4')](_0x55f866[_0x47a7d2])||_[_0x31ae('0xb4')](_0x55f866[_0x47a7d2][_0x31ae('0x192')])||_[_0x31ae('0xb4')](_0x55f866[_0x47a7d2][_0x31ae('0x180')])){_0x36a095[_0x31ae('0xda')](_0x31ae('0x20f'),_0x4bf8e9,_0x55f866[_0x47a7d2]);}else{_0x36a095[_0x31ae('0xc5')](_[_0x31ae('0xdc')](_0x55f866[_0x47a7d2],['CampaignId',_0x31ae('0x210')]))[_0x31ae('0xc2')](_0x36a095[_0x31ae('0x1f5')](_0x4bf8e9,_0x55f866[_0x47a7d2]))[_0x31ae('0xb8')](_0x36a095[_0x31ae('0xd9')]('[actionOriginateIvr]\x20',_0x4bf8e9));}}}})[_0x31ae('0xb8')](loggerGetContactDialer(_0x31ae('0x211'),_0x4bf8e9,_0x45fa33));}};Dialer[_0x31ae('0x1e')][_0x31ae('0x168')]=function(_0x392ac8,_0xace413){var _0x1d9482=this;var _0x5040f5=[];var _0x4f1dad=_0xace413>=0x1?_0xace413:0x1;if(_0x392ac8['dialMethod']==='booked'){_0x4f1dad=0x1;}var _0x3b3664=Math[_0x31ae('0x1f2')](_0x392ac8[_0x31ae('0xa6')]*_0x4f1dad)-_0x392ac8[_0x31ae('0x9c')]-_0x392ac8['temp'];emitVoiceQueueSummary(_0x392ac8);if(_0x392ac8[_0x31ae('0x212')]>0x0){var _0x11ee08=_0x392ac8[_0x31ae('0x212')]-_0x392ac8[_0x31ae('0x9c')]-_0x392ac8[_0x31ae('0x56')]-_0x392ac8[_0x31ae('0xcd')]-_0x392ac8['pTalking'];if(_0x3b3664>_0x11ee08){_0x3b3664=_0x11ee08;}}if(_0x3b3664>0x0){if(_0x392ac8[_0x31ae('0x166')]===_0x31ae('0x9')){_0x3b3664=0x1;}if(_0x3b3664>this[_0x31ae('0x27')]){_0x3b3664=this['maxNumberOriginate'];}_0x392ac8[_0x31ae('0xcd')]+=_0x3b3664;for(var _0x4f311 in this[_0x31ae('0x25')]){if(typeof this[_0x31ae('0x25')][_0x4f311]!==_0x31ae('0x9d')){if(this[_0x31ae('0x25')][_0x4f311][_0x31ae('0xad')]===_0x31ae('0x213')&&this[_0x31ae('0x25')][_0x4f311][_0x31ae('0xb6')]===_0x31ae('0xe6')){_0x5040f5[_0x31ae('0x13a')](this[_0x31ae('0x25')][_0x4f311]['id']);}}}this[_0x31ae('0xcc')](_0x392ac8['id'],_0x5040f5,_0x3b3664,_0x392ac8['dialOrderByScheduledAt'],_0x392ac8)[_0x31ae('0xc2')](function(_0x42bec5){_0x392ac8[_0x31ae('0xcd')]-=_0x3b3664;_0x392ac8[_0x31ae('0xcd')]=_0x392ac8[_0x31ae('0xcd')]>0x0?_0x392ac8[_0x31ae('0xcd')]:0x0;if(!checkContactEmpty(_0x42bec5)){_0x1d9482['countReScheduled'](_0x392ac8)['then'](sendMessageReschedule(_0x392ac8))[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x214')));}else{_0x392ac8[_0x31ae('0x9c')]+=_0x42bec5[_0x31ae('0x9b')];_0x392ac8[_0x31ae('0x43')]=_0x392ac8[_0x31ae('0x166')]===_0x31ae('0x9')?_0x31ae('0x215'):'RUNNING';for(var _0x52f244=0x0;_0x52f244<_0x42bec5[_0x31ae('0x9b')];_0x52f244+=0x1){if(_[_0x31ae('0xb4')](_0x42bec5[_0x52f244])||_[_0x31ae('0xb4')](_0x42bec5[_0x52f244]['Contact'])||_[_0x31ae('0xb4')](_0x42bec5[_0x52f244][_0x31ae('0x180')])){_0x1d9482[_0x31ae('0xda')](_0x31ae('0x20f'),_0x392ac8,_0x42bec5[_0x52f244]);}else{_0x1d9482[_0x31ae('0xbe')](_['pick'](_0x42bec5[_0x52f244],[_0x31ae('0xe0'),'Contact.phone']))[_0x31ae('0xc2')](_0x1d9482['checkContactBlack'](_0x392ac8,_0x42bec5[_0x52f244]))[_0x31ae('0xb8')](_0x1d9482[_0x31ae('0xd9')](_0x31ae('0x20f'),_0x392ac8));}}}})[_0x31ae('0xb8')](loggerGetContactDialer(_0x31ae('0x216'),_0x392ac8,_0x3b3664));}};Dialer['prototype'][_0x31ae('0x92')]=function(_0x5e23d9){if(_0x5e23d9['dialLimitQueue']>0x0){var _0x14e16d=_0x5e23d9[_0x31ae('0x212')]-_0x5e23d9[_0x31ae('0x9c')]-_0x5e23d9['talking'];if(_0x14e16d>0x0){this[_0x31ae('0x217')](_0x5e23d9);}else{loggerPredictiveCalls[_0x31ae('0x7e')]('[handlePredictive][limitChannel]');}}else{this[_0x31ae('0x217')](_0x5e23d9);}};Dialer['prototype']['tryOriginatePredictive']=function(_0x424956){var _0xc43616=this;var _0x4bf4da=[];_0x424956['originated']+=0x1;for(var _0x1f477a in this[_0x31ae('0x25')]){if(typeof this[_0x31ae('0x25')][_0x1f477a]!==_0x31ae('0x9d')){if(this[_0x31ae('0x25')][_0x1f477a][_0x31ae('0xad')]===_0x31ae('0x213')&&this[_0x31ae('0x25')][_0x1f477a][_0x31ae('0xb6')]===_0x31ae('0xe6')){_0x4bf4da[_0x31ae('0x13a')](this[_0x31ae('0x25')][_0x1f477a]['id']);}}}this[_0x31ae('0xcc')](_0x424956['id'],_0x4bf4da,0x1,_0x424956[_0x31ae('0x20c')],_0x424956)[_0x31ae('0xc2')](function(_0x4515e6){if(!checkContactEmpty(_0x4515e6)){checkContactLowerLimitOriginate(_0x424956,0x1,0x0);_0xc43616[_0x31ae('0xbc')](_0x424956)[_0x31ae('0xc2')](sendMessageReschedule(_0x424956))[_0x31ae('0xb8')](loggerCatch(_0x31ae('0x214')));}else{_0x424956[_0x31ae('0x43')]=_0x31ae('0x20d');if(_[_0x31ae('0xb4')](_0x4515e6[0x0])||_[_0x31ae('0xb4')](_0x4515e6[0x0][_0x31ae('0x192')])||_[_0x31ae('0xb4')](_0x4515e6[0x0][_0x31ae('0x180')])){_0xc43616[_0x31ae('0xda')](_0x31ae('0x20f'),_0x424956,_0x4515e6[0x0]);}else{_0xc43616[_0x31ae('0xbe')](_[_0x31ae('0xdc')](_0x4515e6[0x0],[_0x31ae('0xe0'),'Contact.phone']))[_0x31ae('0xc2')](_0xc43616[_0x31ae('0x1f5')](_0x424956,_0x4515e6[0x0]))[_0x31ae('0xb8')](_0xc43616[_0x31ae('0xd9')](_0x31ae('0x218'),_0x424956));}}})['catch'](loggerGetContactDialer('[getContactDialerPredictive]',_0x424956,0x1));emitVoiceQueueSummary(_0x424956);};Dialer[_0x31ae('0x1e')][_0x31ae('0x1ea')]=function(_0x1c9729,_0x305c22,_0x397c8a,_0x402efd,_0x50fe42,_0x1b79d4){loggerPredictive[_0x31ae('0x7e')](_0x31ae('0x219'));loggerPredictive[_0x31ae('0x7e')]('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',_0x1c9729);loggerPredictive[_0x31ae('0x7e')](_0x31ae('0x21a'),_0x305c22);loggerPredictive[_0x31ae('0x7e')](_0x31ae('0x21b'),_0x397c8a);loggerPredictive['info'](_0x31ae('0x21c'),_0x402efd);loggerPredictive['info'](_0x31ae('0x21d'),_0x50fe42);loggerPredictive[_0x31ae('0x7e')]('---------------------------');return new BPromise(function(_0x8862b3,_0x2fe40f){if(_0x1c9729<=0x0||isNaN(_0x1c9729)){return _0x2fe40f(msgResponse('[abandonmentRate]',_0x31ae('0x1a6'),'m\x20=\x20'+_0x1c9729));}if(_0x397c8a<=0x0||isNaN(_0x397c8a)){return _0x2fe40f(msgResponse(_0x31ae('0x21e'),'Error','Ts\x20=\x20'+_0x397c8a));}if(_0x402efd<=0x0||isNaN(_0x402efd)){return _0x2fe40f(msgResponse(_0x31ae('0x21e'),_0x31ae('0x1a6'),'p\x20=\x20'+_0x402efd));}if(_0x305c22<=0x0||isNaN(_0x305c22)){return _0x2fe40f(msgResponse(_0x31ae('0x21e'),_0x31ae('0x1a6'),_0x31ae('0x21f')+_0x305c22));}if(_0x50fe42<=0x0||isNaN(_0x50fe42)){return _0x2fe40f(msgResponse(_0x31ae('0x21e'),'Error',_0x31ae('0x220')+_0x50fe42));}_0x1b79d4=_0x1b79d4||0x0;var _0x6368b5=0x1/_0x397c8a;var _0x2c7458=0x0;var _0x3ae38f=0x0;var _0x557923=0x0;var _0x3e782a=0x0;for(var _0x399885=0x0;_0x557923<_0x50fe42;_0x399885+=0x1){_0x3ae38f=_0x399885/_0x305c22;_0x2c7458=(_0x402efd*_0x3ae38f+_0x1b79d4)/_0x6368b5;_0x557923=erlangb(_0x2c7458,_0x1c9729);_0x3e782a=_0x2c7458/_0x1c9729*(0x1-erlangb(_0x2c7458,_0x1c9729));}return _0x8862b3({'erlangCalls':_0x399885,'erlangCallToSecond':_0x305c22/_0x399885,'erlangAbandonmentRate':_0x557923,'erlangBusyFactor':_0x3e782a});});};Dialer['prototype']['busyFactor']=function(_0x2d3894,_0x50ea96,_0x30532f,_0x3d342d,_0x1babb1,_0x2d05ec){loggerPredictive[_0x31ae('0x7e')](_0x31ae('0x221'));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',_0x2d3894);loggerPredictive[_0x31ae('0x7e')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x50ea96);loggerPredictive[_0x31ae('0x7e')](_0x31ae('0x21b'),_0x30532f);loggerPredictive['info'](_0x31ae('0x21c'),_0x3d342d);loggerPredictive[_0x31ae('0x7e')](_0x31ae('0x222'),_0x1babb1);loggerPredictive[_0x31ae('0x7e')](_0x31ae('0x85'));return new BPromise(function(_0x68b39,_0xae3d50){if(_0x2d3894<=0x0||isNaN(_0x2d3894)){return _0xae3d50(msgResponse(_0x31ae('0x223'),_0x31ae('0x1a6'),_0x31ae('0x224')+_0x2d3894));}if(_0x30532f<=0x0||isNaN(_0x30532f)){return _0xae3d50(msgResponse(_0x31ae('0x223'),_0x31ae('0x1a6'),_0x31ae('0x225')+_0x30532f));}if(_0x3d342d<=0x0||isNaN(_0x3d342d)){return _0xae3d50(msgResponse(_0x31ae('0x223'),_0x31ae('0x1a6'),_0x31ae('0x226')+_0x3d342d));}if(_0x50ea96<=0x0||isNaN(_0x50ea96)){return _0xae3d50(msgResponse(_0x31ae('0x223'),'Error',_0x31ae('0x21f')+_0x50ea96));}if(_0x1babb1<=0x0||isNaN(_0x1babb1)){return _0xae3d50(msgResponse(_0x31ae('0x223'),_0x31ae('0x1a6'),_0x31ae('0x227')+_0x1babb1));}_0x2d05ec=_0x2d05ec||0x0;var _0x1414f6=0x1/_0x30532f;var _0x57bbf0=0x0;var _0x243582=0x0;var _0x2f888d=0x0;var _0x1e5c4c=0x0;for(var _0x315fc9=0x0;_0x1e5c4c<_0x1babb1;_0x315fc9+=0x1){_0x243582=_0x315fc9/_0x50ea96;_0x57bbf0=(_0x3d342d*_0x243582+_0x2d05ec)/_0x1414f6;_0x2f888d=erlangb(_0x57bbf0,_0x2d3894);_0x1e5c4c=_0x57bbf0/_0x2d3894*(0x1-erlangb(_0x57bbf0,_0x2d3894));}return _0x68b39({'erlangCalls':_0x315fc9,'erlangCallToSecond':_0x50ea96/_0x315fc9,'erlangAbandonmentRate':_0x2f888d,'erlangBusyFactor':_0x1e5c4c});});};module[_0x31ae('0x228')]=Dialer;
\ No newline at end of file
+var _0x1ce8=['erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','active','callerid','stringify','format','voice_queue:save','campaign:ivr:%s','info','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','---------\x20ErlangB\x20---------','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','merge','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','ivr','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','AVAILABLE_CONTACTS_FINISHED','DEACTIVATED','sendMessageOneNotActive','endtime','starttime','clearZombieChannels','uniqueId','[uniqueid]','actions','sequence','isNil','Action','channel','No\x20such\x20channel','updateOriginated','voiceQueues','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','countReScheduled','resolve','catch','[countReScheduled]\x20','checkIsBlackList','verifyAdditionalPhones','swapAdditionalPhones','checkIsBlackListIvr','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','unlockContact','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','saveInDb','pick','ContactId','ListId','UserId','VoiceQueueId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','isTrunkReachable','status','reachable','SIP/%s','moveContactManagedDialer','variable','amdstatus','xcally-motion-dialer','dialAMDActive','value','HANGUP','uniqueid','state','statedesc','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','Machine','membername','countglobal','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countmachineretry','countagentrejectretry','dialGlobalMaxRetry','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','CampaignId','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','MACHINE','countnosuchnumberretry','stateGlobal','add','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','AnswerAGI','AGI','outboundUnknownCallsDay','cause-txt','Unknow','reason','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','answertime','queueCallerAbandonCreateState','droptime','responsetime','dialQueueTimeout','predictiveIntervalErlangCallsDroppedCalls','Drop','dropreason','TIMEOUT','countdropretry','dialDropRetryFrequency','callAdditionalPhoneAfterMin','voiceQueue','additional','dialDropMaxRetry','[rescheduleContact][Drop]','calleridnum','[syncAgentComplete][createHistory][10]','outboundDropCallsDayCallersExit','Abandoned','CALLEREXIT','countabandonedretry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','calleridname','syncQueueMember','actionid','locked','paused','stateinterface','queueBooked','push','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','run','idHopper','[unlock][syncQueueStatusComplete]','queueBookedRR','_rr','unlockRR','[booked][RR]','Agent:\x20','[Catch][Preview][syncQueueStatusComplete]','contactAgent-idHopper:\x20','[booked][unlock]','[booked][unlock2]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','resetActiveCalls','syncCampaigns','checkIsTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','ifTime','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','command','iftime\x20%s,%s','interval','content','indexOf','true','some','GLOBAL_INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','predictive','method\x20not\x20recognized','handlePreviewRecallNotifications','length','Agent','user:%s','user:dialPreviewRecallReminder','launchHandleIvr','handleIvr','checkIfTime','dialTimezone','checkIfTimeIntervals','[syncQueueSummary]','syncQueueSummaryComplete','throttle','filter','dialPreviewRecallmeReminder','map','dialGlobalInterval','\x5cw{0,','pow','random','match','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','outbound','dialQueueOptions','dialer','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','XMD-AMDMAXIMUMWORDLENGTH','XMD-VOICEQUEUEID','Contact','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','variables','SIP/%s/%s%s','trim','dialCutDigit','from-sip','[originateError]:\x20%s','[originate][error]','originate\x20action\x20Error','getQueue','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','evt\x20is\x20undefine','NoSuchNumber','custom:agentnosuchnumber','dialNoSuchNumberMaxRetry','reason\x200\x20no\x20such\x20number....','NoAnswer','buildNoAnswerEventPayload','custom:agentnoanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','busy','dialBusyRetryFrequency','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','outboundCongestionCallsDay','Congestion','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','outboundAbandonedCallsDay','[syncAgentComplete][createHistory][11]','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','custom:agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','floor','predictiveIntervalMultiplicativeFactor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','getDataPredictive','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','agentBusyFactor','busyFactor','[getDataPredictive]','loggedIn','outboundQueuePauses','predictiveIntervalPauses','[CatchErlangB]','check\x20failure','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','[unlockOriginate][syncQueueStatusComplete]','scheduledat','dialRecallMeTimeout','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','limitCalls','dialOrderByScheduledAt','RUNNING','ivrTotalCallsDays','Contact.phone','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','[actionOriginate]\x20','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','abandonmentRate','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','Amax:\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','----\x20Agent\x20Busy\x20Factor\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','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','p\x20=\x20','Umin\x20=\x20','exports','util','lodash','uuid','moment','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','booked','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/setting','./action','./history','./final','./queueCallerAbandon','env','XCALLY_IP_AGI','rrmemory','roundrobin','prototype','enqueue','tail','finally','preview','campaigns','agents','trunks','maxNumberOriginate','channels','contactsId','startProgressive','ivrOriginated','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','custom:queuesummary','syncQueueSummary','hangup','syncHangup','newexten','syncNewExten','syncVarSet','queuemember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','getSettings','then','previewRecallmeReminderInterval','isUndefined','message','AGENTS_NOT_LOGGED','name','NOT_ACTIVE','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','isEmpty','Error','milliseconds','diff','seconds','emit','type','strategy','answered','available','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','waiting','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundDropCallsDayACS','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond'];(function(_0x56acc4,_0x1accb4){var _0x4fc1eb=function(_0x339ae7){while(--_0x339ae7){_0x56acc4['push'](_0x56acc4['shift']());}};_0x4fc1eb(++_0x1accb4);}(_0x1ce8,0x1b2));var _0x81ce=function(_0x1d1f22,_0x5550b9){_0x1d1f22=_0x1d1f22-0x0;var _0x3eb6ec=_0x1ce8[_0x1d1f22];return _0x3eb6ec;};'use strict';var util=require(_0x81ce('0x0'));var _=require(_0x81ce('0x1'));var uuid=require(_0x81ce('0x2'));var moment=require(_0x81ce('0x3'));var rr=require('rr');var md5=require(_0x81ce('0x4'));var Redis=require(_0x81ce('0x5'));var ut=require(_0x81ce('0x6'));var config=require(_0x81ce('0x7'));var logger=require(_0x81ce('0x8'))('dialer');var loggerBooked=require('../../../config/logger')(_0x81ce('0x9'));var loggerPredictive=require(_0x81ce('0x8'))('predictive');var loggerPredictiveCalls=require(_0x81ce('0x8'))('predictiveCalls');var loggerSyncQueueSummary=require('../../../config/logger')('syncQueueSummary');var ami=require(_0x81ce('0xa'));config[_0x81ce('0xb')]=_[_0x81ce('0xc')](config[_0x81ce('0xb')],{'host':_0x81ce('0xd'),'port':0x18eb});var io=require(_0x81ce('0xe'))(new Redis(config[_0x81ce('0xb')]));var cmHopper=require(_0x81ce('0xf'));var cmHopperHistory=require(_0x81ce('0x10'));var cmHopperAdditionalPhone=require('../rpc/cmHopperAdditionalPhone');var cmHopperBlack=require(_0x81ce('0x11'));var voiceQueueRt=require('../rpc/voiceQueueRt');var RpcSetting=require(_0x81ce('0x12'));var Action=require(_0x81ce('0x13'));var History=require(_0x81ce('0x14'));var Final=require(_0x81ce('0x15'));var AgentComplete=require('./agentComplete');var QueueCallerAbandon=require(_0x81ce('0x16'));var Hangup=require('./hangup');var ipAgi=process[_0x81ce('0x17')][_0x81ce('0x18')]||'127.0.0.1';var strategy={'rrmemory':_0x81ce('0x19'),'roundrobin':_0x81ce('0x1a')};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0x81ce('0x1b')][_0x81ce('0x1c')]=function(_0x5c7fd1){this[_0x81ce('0x1d')]=this['tail']?this[_0x81ce('0x1d')][_0x81ce('0x1e')](_0x5c7fd1):_0x5c7fd1();};function Dialer(_0x339a00,_0x3265bc){this['sequence']=new Sequence();this[_0x81ce('0x1f')]=_0x3265bc;this['voiceQueues']=_0x339a00['voiceQueues'];this[_0x81ce('0x20')]=_0x339a00[_0x81ce('0x20')];this[_0x81ce('0x21')]=_0x339a00[_0x81ce('0x21')];this[_0x81ce('0x22')]=_0x339a00[_0x81ce('0x22')];this[_0x81ce('0x23')]=config[_0x81ce('0x23')]||0x2;this[_0x81ce('0x24')]={};this['actions']={};this[_0x81ce('0x25')]={};this['uniqueId']={};this['optionPredictive']={};this['startPredictive']={};this[_0x81ce('0x26')]={};this[_0x81ce('0x27')]={};this['queueBooked']={};this['queueBookedRR']={};ami['on']('agentconnect',this[_0x81ce('0x28')][_0x81ce('0x29')](this));ami['on'](_0x81ce('0x2a'),this[_0x81ce('0x2b')][_0x81ce('0x29')](this));ami['on'](_0x81ce('0x2c'),this[_0x81ce('0x2d')][_0x81ce('0x29')](this));ami['on'](_0x81ce('0x2e'),this['syncAgentComplete'][_0x81ce('0x29')](this));ami['on'](_0x81ce('0x2f'),this[_0x81ce('0x30')]['bind'](this));ami['on']('custom:queuesummarycomplete',this['syncQueueSummaryComplete'][_0x81ce('0x29')](this));ami['on'](_0x81ce('0x31'),this[_0x81ce('0x32')][_0x81ce('0x29')](this));ami['on'](_0x81ce('0x33'),this[_0x81ce('0x34')][_0x81ce('0x29')](this));ami['on']('varset',this[_0x81ce('0x35')][_0x81ce('0x29')](this));ami['on'](_0x81ce('0x36'),this['syncQueueMember'][_0x81ce('0x29')](this));ami['on'](_0x81ce('0x37'),this[_0x81ce('0x38')]['bind'](this));this[_0x81ce('0x39')]();this['loopClearZombieChannels']();RpcSetting[_0x81ce('0x3a')]()[_0x81ce('0x3b')](function(_0x6a6cc4){previewRecallmeReminderInterval=_0x6a6cc4[_0x81ce('0x3c')];});}function isNotNull(_0x5324e9){return _0x5324e9!==null&&!_[_0x81ce('0x3d')](_0x5324e9);}function checkIsLoggedIn(_0x4e37dc,_0x1934c3){return function(){if(_0x1934c3<=0x0){_0x4e37dc[_0x81ce('0x3e')]=_0x81ce('0x3f');throw _0x4e37dc[_0x81ce('0x40')]+'\x20AGENTS\x20NOT\x20LOGGED';}};}function isActive(_0x41aa12){return _0x41aa12;}function checkIsActive(_0x43a6af,_0xb8220b){return function(){if(!isActive(_0xb8220b)){_0x43a6af[_0x81ce('0x3e')]=_0x81ce('0x41');throw _0x43a6af[_0x81ce('0x40')]+'\x20NOT\x20Active';}};}function checkInterval(_0x321c7e){return function(){if(!isNotNull(_0x321c7e[_0x81ce('0x42')])){_0x321c7e[_0x81ce('0x3e')]=_0x81ce('0x43');throw _0x321c7e[_0x81ce('0x40')]+_0x81ce('0x44');}if(!isNotNull(_0x321c7e[_0x81ce('0x42')]['Intervals'])){_0x321c7e[_0x81ce('0x3e')]='INTERVAL_IS_NULL';throw _0x321c7e[_0x81ce('0x40')]+_0x81ce('0x44');}if(!isNotNull(_[_0x81ce('0x45')](_0x321c7e['Interval']['Intervals']))){_0x321c7e[_0x81ce('0x3e')]=_0x81ce('0x43');throw _0x321c7e[_0x81ce('0x40')]+_0x81ce('0x44');}};}function msgResponse(_0x4128f5,_0x555acf,_0x25ce7f){return{'action':_0x4128f5,'response':_0x555acf,'message':_0x25ce7f,'stack':_0x25ce7f};}function myreject(_0x596929){return function(_0x20caf0){return _0x596929(msgResponse('[ifTime][Action]',_0x81ce('0x46'),JSON['stringify'](_0x20caf0)));};}function getSeconds(_0x5d0ff3,_0x962064){var _0x142859=moment(_0x5d0ff3)[_0x81ce('0x47')](0x0);var _0x423a82=moment(_0x962064)['milliseconds'](0x0);return _0x142859[_0x81ce('0x48')](_0x423a82,_0x81ce('0x49'));}function emit(_0x49b7d4,_0x18a997,_0x164283){io['to'](_0x49b7d4)[_0x81ce('0x4a')](_0x18a997,_0x164283);}function emitVoiceQueueSummary(_0x24e3d2){if(_0x24e3d2[_0x81ce('0x4b')]==='outbound'){var _0x3fa761={'id':_0x24e3d2['id'],'name':_0x24e3d2[_0x81ce('0x40')],'strategy':_0x24e3d2[_0x81ce('0x4c')],'answered':_0x24e3d2[_0x81ce('0x4d')],'available':_0x24e3d2[_0x81ce('0x4e')],'loggedIn':_0x24e3d2['loggedIn'],'pTalking':_0x24e3d2[_0x81ce('0x4f')],'sumBillable':_0x24e3d2[_0x81ce('0x50')],'sumDuration':_0x24e3d2[_0x81ce('0x51')],'sumHoldTime':_0x24e3d2[_0x81ce('0x52')]||0x0,'talking':_0x24e3d2[_0x81ce('0x53')],'total':_0x24e3d2[_0x81ce('0x54')],'type':_0x24e3d2[_0x81ce('0x4b')],'unmanaged':_0x24e3d2[_0x81ce('0x55')],'abandoned':_0x24e3d2['abandoned'],'waiting':_0x24e3d2[_0x81ce('0x56')],'loggedInDb':_0x24e3d2['loggedInDb'],'dialActive':_0x24e3d2[_0x81ce('0x57')],'dialMethod':_0x24e3d2[_0x81ce('0x58')],'dialOriginateCallerIdName':_0x24e3d2[_0x81ce('0x59')],'dialOriginateCallerIdNumber':_0x24e3d2['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x24e3d2[_0x81ce('0x5a')],'dialPrefix':_0x24e3d2[_0x81ce('0x5b')],'outboundAnswerAgiCallsDay':_0x24e3d2[_0x81ce('0x5c')],'outboundAnswerCallsDay':_0x24e3d2[_0x81ce('0x5d')],'outboundBlacklistCallsDay':_0x24e3d2[_0x81ce('0x5e')],'outboundBusyCallsDay':_0x24e3d2[_0x81ce('0x5f')],'outboundCongestionCallsDay':_0x24e3d2['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x24e3d2[_0x81ce('0x60')],'outboundDropCallsDayCallersExit':_0x24e3d2['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x24e3d2[_0x81ce('0x61')],'outboundNoAnswerCallsDay':_0x24e3d2[_0x81ce('0x62')],'outboundNoSuchCallsDay':_0x24e3d2[_0x81ce('0x63')],'outboundOriginateFailureCallsDay':_0x24e3d2[_0x81ce('0x64')],'outboundReCallsDay':_0x24e3d2[_0x81ce('0x65')],'outboundRejectCallsDay':_0x24e3d2['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x24e3d2['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x24e3d2[_0x81ce('0x66')],'predictiveIntervalAvgHoldtime':_0x24e3d2[_0x81ce('0x67')],'predictiveIntervalAvgTalktime':_0x24e3d2[_0x81ce('0x68')],'predictiveIntervalDroppedCallsCallersExit':_0x24e3d2[_0x81ce('0x69')],'predictiveIntervalDroppedCallsTimeout':_0x24e3d2[_0x81ce('0x6a')],'predictiveIntervalErlangCalls':_0x24e3d2[_0x81ce('0x6b')],'predictiveIntervalErlangCallsDroppedCalls':_0x24e3d2['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x24e3d2[_0x81ce('0x6c')],'predictiveIntervalMultiplicativeFactor':_0x24e3d2['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x24e3d2['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x24e3d2[_0x81ce('0x6d')],'predictiveIntervalTotalCalls':_0x24e3d2[_0x81ce('0x6e')],'message':_0x24e3d2[_0x81ce('0x3e')],'originated':_0x24e3d2[_0x81ce('0x6f')],'erlangCalls':_0x24e3d2[_0x81ce('0x70')],'erlangCallToSecond':_0x24e3d2[_0x81ce('0x71')],'erlangAbandonmentRate':_0x24e3d2[_0x81ce('0x72')],'erlangBusyFactor':_0x24e3d2[_0x81ce('0x73')],'startPredictive':_0x24e3d2[_0x81ce('0x74')],'startProgressive':_0x24e3d2[_0x81ce('0x26')]};if(_0x24e3d2[_0x81ce('0x75')]){_0x3fa761[_0x81ce('0x75')]={'id':_0x24e3d2[_0x81ce('0x75')]['id'],'name':_0x24e3d2[_0x81ce('0x75')][_0x81ce('0x40')],'active':_0x24e3d2[_0x81ce('0x75')][_0x81ce('0x76')],'callerid':_0x24e3d2[_0x81ce('0x75')][_0x81ce('0x77')]};}if(_0x24e3d2['Interval']){_0x3fa761[_0x81ce('0x42')]={'id':_0x24e3d2['Interval']['id'],'name':_0x24e3d2[_0x81ce('0x42')][_0x81ce('0x40')]};}var _0x184761=md5(JSON[_0x81ce('0x78')](_0x3fa761));if(_0x24e3d2[_0x81ce('0x4')]!==_0x184761){_0x24e3d2['md5']=_0x184761;emit(util[_0x81ce('0x79')]('voice:queue:%s',_0x3fa761[_0x81ce('0x40')]),_0x81ce('0x7a'),_0x3fa761);}}}function emitCampaignSummary(_0x49b610){if(_0x49b610[_0x81ce('0x4b')]==='ivr'){emit(util['format'](_0x81ce('0x7b'),_0x49b610[_0x81ce('0x40')]),'campaign:save',_0x49b610);}}function checkGetDataPredictive(_0x4262b5){if(isNotNull(_0x4262b5)&&!_[_0x81ce('0x45')](_0x4262b5)){loggerPredictive[_0x81ce('0x7c')]('-----\x20Stats\x20Predictive\x20---');loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x7d'),_0x4262b5['predictiveIntervalTotalCalls']);loggerPredictive['info']('Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x4262b5[_0x81ce('0x66')]);loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x7e'),_0x4262b5[_0x81ce('0x6a')]);loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x7f'),_0x4262b5[_0x81ce('0x69')]);loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x80'),_0x4262b5[_0x81ce('0x67')]);loggerPredictive['info'](_0x81ce('0x81'),_0x4262b5[_0x81ce('0x68')]);loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x82'));if(_0x4262b5[_0x81ce('0x6e')]>0x0){if(!_[_0x81ce('0x3d')](_0x4262b5['predictiveIntervalAvgTalktime'])&&_0x4262b5[_0x81ce('0x68')]>0x0){return!![];}loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x83'));if(!_[_0x81ce('0x3d')](_0x4262b5[_0x81ce('0x67')])&&_0x4262b5['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x84'));}else{loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x85'));}}else{loggerPredictive[_0x81ce('0x7c')]('History\x20information\x20are\x20empty');}return![];}function mergeDataErlangB(_0x4a2642){return function(_0x554fa5){loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x86'));loggerPredictive[_0x81ce('0x7c')]('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x554fa5[_0x81ce('0x70')]);loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x87'),_0x554fa5['erlangCallToSecond']);loggerPredictive['info'](_0x81ce('0x88'),_0x554fa5[_0x81ce('0x72')]);loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x89'),_0x554fa5[_0x81ce('0x73')]);loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x88'),_0x554fa5[_0x81ce('0x72')]);loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x82'));_[_0x81ce('0x8a')](_0x4a2642,_0x554fa5);};}function getDiff(_0x45684d){var _0x37e213=moment()['milliseconds'](0x0);var _0x251b94=moment(_0x45684d)['milliseconds'](0x0);return _0x37e213['diff'](_0x251b94,_0x81ce('0x49'));}function ifInterval(_0x41d241,_0x1e5492){if(_[_0x81ce('0x3d')](_0x1e5492)){return![];}return getDiff(_0x1e5492)<_0x41d241*0x3c;}function freeVariablesPredictive(_0x153972){if(isNotNull(_0x153972)){if(!_['isUndefined'](_0x153972[_0x81ce('0x26')])){_0x153972[_0x81ce('0x26')]=undefined;loggerPredictive[_0x81ce('0x7c')](_0x153972[_0x81ce('0x40')],_0x81ce('0x8b'));}if(!_[_0x81ce('0x3d')](_0x153972[_0x81ce('0x74')])){_0x153972[_0x81ce('0x74')]=undefined;loggerPredictive[_0x81ce('0x7c')](_0x153972[_0x81ce('0x40')],_0x81ce('0x8c'));}if(!_['isUndefined'](_0x153972['handlePredictive'])){clearInterval(_0x153972[_0x81ce('0x8d')]);_0x153972[_0x81ce('0x8d')]=undefined;loggerPredictive[_0x81ce('0x7c')](_0x153972['name'],_0x81ce('0x8e'));}}}function erlangb(_0x4e7ba1,_0x3f2555){if(_0x3f2555===0x0){return 0x0;}var _0x4eb7f5=0x1;for(var _0x5d90a8=0x1;_0x5d90a8<=_0x3f2555;_0x5d90a8+=0x1){_0x4eb7f5=0x1+_0x4eb7f5*_0x5d90a8/_0x4e7ba1;}return 0x1/_0x4eb7f5;}function isVoiceQueueOutbound(_0x4debff){return _0x4debff==='outbound';}function isNotPreview(_0x165b7c){return _0x165b7c!==_0x81ce('0x1f');}function isCampaignIvr(_0x260615){return _0x260615===_0x81ce('0x8f');}function getCallerId(_0x9cc019,_0x4e476b,_0x41b73b){if(!_['isUndefined'](_0x41b73b)&&typeof _0x41b73b===_0x81ce('0x90')&&!_['isEmpty'](_0x41b73b)){if(!_[_0x81ce('0x3d')](_0x4e476b)&&typeof _0x4e476b===_0x81ce('0x90')&&!_[_0x81ce('0x45')](_0x4e476b)){return util['format'](_0x81ce('0x91'),_0x4e476b,_0x41b73b);}return util[_0x81ce('0x79')]('\x22%s\x22\x20<%s>',_0x41b73b,_0x41b73b);}if(!_[_0x81ce('0x3d')](_0x9cc019)&&typeof _0x9cc019===_0x81ce('0x90')&&!_[_0x81ce('0x45')](_0x9cc019)){return _0x9cc019;}return _0x81ce('0x92');}function loggerCatchQueueSummary(_0x1882fc,_0x5dc8bd){return function(_0x2c0925){freeVariablesPredictive(_0x5dc8bd);emitVoiceQueueSummary(_0x5dc8bd);emitCampaignSummary(_0x5dc8bd);loggerSyncQueueSummary[_0x81ce('0x93')](_0x1882fc,util['inspect'](_0x2c0925,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x2b69fa,_0x3eda37){return function(_0x838d9b){loggerPredictive[_0x81ce('0x93')](_0x3eda37[_0x81ce('0x40')],_0x2b69fa);loggerPredictive[_0x81ce('0x93')](_0x838d9b['stack']);freeVariablesPredictive(_0x3eda37);};}function loggerCatch(_0xe511e1){return function(_0x5a75f8){logger[_0x81ce('0x93')](_0xe511e1,util[_0x81ce('0x94')](_0x5a75f8,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x4e054e){return _0x4e054e&&!_[_0x81ce('0x3d')](_0x4e054e)&&_0x4e054e['length']>0x0;}function decremetOriginate(_0x2062fa){if(!_[_0x81ce('0x3d')](_0x2062fa)&&_0x2062fa!==null){if(typeof _0x2062fa['originated']!==_0x81ce('0x95')){if(_0x2062fa[_0x81ce('0x6f')]>0x0){_0x2062fa['originated']-=0x1;}else{logger[_0x81ce('0x93')](_0x81ce('0x96'));}}}else{logger['error']('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x57adb2,_0x36fa5c,_0x2b6fdf){if(_0x36fa5c>_0x2b6fdf){for(var _0xda57bf=0x0;_0xda57bf<_0x36fa5c-_0x2b6fdf;_0xda57bf+=0x1){decremetOriginate(_0x57adb2);}}}function loggerGetContactDialer(_0x2a5f92,_0x852c4d,_0x5f5c65){return function(_0x120932){checkContactLowerLimitOriginate(_0x852c4d,_0x5f5c65,0x0);logger['error'](_0x2a5f92,util['inspect'](_0x120932,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x42b71c){return function(_0x4029f7){if(isNotNull(_0x4029f7)&&isNotNull(_0x4029f7[0x0])){if(_0x4029f7[0x0][_0x81ce('0x97')]>0x0){_0x42b71c[_0x81ce('0x3e')]=_0x81ce('0x98');logger['info'](_0x81ce('0x99')+_0x42b71c['name'],_0x4029f7[0x0][_0x81ce('0x97')],'contacts');}else{_0x42b71c['message']=_0x81ce('0x9a');logger[_0x81ce('0x7c')]('[getContactDialer2][Empty]'+_0x42b71c[_0x81ce('0x40')]);}}};}function notSendMessagesQueue(_0x47432f){if(_0x47432f['sendMessageOneNotActive']){freeVariablesPredictive(_0x47432f);if(_0x47432f[_0x81ce('0x6f')]===0x0&&_0x47432f[_0x81ce('0x53')]===0x0&&_0x47432f[_0x81ce('0x56')]===0x0&&(_0x47432f['pTalking']||0x0)===0x0){_0x47432f['sendMessageOneNotActive']=![];_0x47432f[_0x81ce('0x4e')]=0x0;_0x47432f[_0x81ce('0x3e')]=_0x81ce('0x41');}else{_0x47432f['message']=_0x81ce('0x9b');}emitVoiceQueueSummary(_0x47432f);}}function notSendMessagesCampaign(_0x9bd941){if(_0x9bd941[_0x81ce('0x9c')]){if(_0x9bd941[_0x81ce('0x6f')]===0x0){_0x9bd941['sendMessageOneNotActive']=![];_0x9bd941[_0x81ce('0x3e')]=_0x81ce('0x41');}else{_0x9bd941[_0x81ce('0x3e')]='DEACTIVATED';}emitCampaignSummary(_0x9bd941);}}function createObjHistory(_0x385001,_0x48e5b9,_0x4431e3,_0x317579,_0x1d5773){_0x385001[_0x81ce('0x3e')]=_0x4431e3;var _0x57c81d=new Action(_0x385001,_0x48e5b9);var _0x217044=new History(_0x57c81d);_0x217044['state']=_0x317579;_0x217044['statedesc']=_0x1d5773;_0x217044[_0x81ce('0x9d')]=_0x57c81d[_0x81ce('0x9e')];return _0x217044;}Dialer[_0x81ce('0x1b')]['loopClearZombieChannels']=function(){var _0x6b25c7=this;setInterval(function(){_0x6b25c7[_0x81ce('0x9f')](_0x6b25c7[_0x81ce('0xa0')],_0x81ce('0xa1'));_0x6b25c7[_0x81ce('0x9f')](_0x6b25c7[_0x81ce('0xa2')],'[actions]');},0x32c8);};Dialer[_0x81ce('0x1b')]['clearZombieChannels']=function(_0x2fabaa,_0x1ac409){var _0x116f99=this;for(var _0x2e64d6 in _0x2fabaa){if(typeof _0x2fabaa[_0x2e64d6]!=='undefined'){this[_0x81ce('0xa3')][_0x81ce('0x1c')](function(){if(!_[_0x81ce('0xa4')](_0x2fabaa[_0x2e64d6])){return ami[_0x81ce('0xa5')]({'action':'status','channel':_0x2fabaa[_0x2e64d6][_0x81ce('0xa6')]})['catch'](function(_0x2dcc7a){if(_0x2dcc7a['message']===_0x81ce('0xa7')){setTimeout(function(){if(_0x2fabaa[_0x2e64d6]&&_0x2fabaa[_0x2e64d6][_0x81ce('0x4b')]!==_0x81ce('0x8f')){_0x116f99[_0x81ce('0xa8')](_0x116f99[_0x81ce('0xa9')][_0x2fabaa[_0x2e64d6][_0x81ce('0xaa')]]);logger[_0x81ce('0x93')](_0x81ce('0xab'),_0x1ac409,_0x2e64d6,_0x2fabaa[_0x2e64d6][_0x81ce('0xaa')]);delete _0x2fabaa[_0x2e64d6];}if(_0x2fabaa[_0x2e64d6]&&_0x2fabaa[_0x2e64d6][_0x81ce('0x4b')]===_0x81ce('0x8f')){_0x116f99[_0x81ce('0xa8')](_0x116f99[_0x81ce('0x20')][_0x2fabaa[_0x2e64d6][_0x81ce('0xaa')]]);logger[_0x81ce('0x93')](_0x81ce('0xac'),_0x1ac409,_0x2e64d6,_0x2fabaa[_0x2e64d6]['queue']);delete _0x2fabaa[_0x2e64d6];}},0x2328);}});}});}}};Dialer[_0x81ce('0x1b')][_0x81ce('0xad')]=function(_0x529b4b){return Promise[_0x81ce('0xae')]()[_0x81ce('0x3b')](cmHopper[_0x81ce('0xad')](_0x529b4b))[_0x81ce('0xaf')](loggerCatch(_0x81ce('0xb0')));};Dialer[_0x81ce('0x1b')][_0x81ce('0xb1')]=function(_0x5a7bb8){return Promise['resolve']()[_0x81ce('0x3b')](cmHopperBlack[_0x81ce('0xb1')](_0x5a7bb8))[_0x81ce('0xaf')](loggerCatch('[checkIsBlackList]\x20'));};Dialer[_0x81ce('0x1b')][_0x81ce('0xb2')]=function(_0x346bce,_0x2aad8b,_0x1e17be){return Promise[_0x81ce('0xae')]()[_0x81ce('0x3b')](cmHopperAdditionalPhone['verifyAdditionalPhones'](_0x346bce,_0x2aad8b,_0x1e17be))['catch'](loggerCatch('[verifyAdditionalPhone]\x20'));};Dialer[_0x81ce('0x1b')][_0x81ce('0xb3')]=function(_0x4fcf25,_0x360134,_0x53ce70){return Promise['resolve']()[_0x81ce('0x3b')](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x4fcf25,_0x360134,_0x53ce70))[_0x81ce('0xaf')](loggerCatch('[swapAdditionalPhone]\x20'));};Dialer['prototype'][_0x81ce('0xb4')]=function(_0x3c4f10){return Promise[_0x81ce('0xae')]()['then'](cmHopperBlack[_0x81ce('0xb4')](_0x3c4f10))[_0x81ce('0xaf')](loggerCatch('[checkIsBlackListIvr]\x20'));};Dialer[_0x81ce('0x1b')][_0x81ce('0xb5')]=function(_0x1b408d){return Promise[_0x81ce('0xae')]()[_0x81ce('0x3b')](cmHopperHistory[_0x81ce('0xb6')](_0x1b408d))[_0x81ce('0xaf')](loggerCatch(_0x81ce('0xb7')));};Dialer[_0x81ce('0x1b')][_0x81ce('0xb8')]=function(_0x5d8a77){return Promise[_0x81ce('0xae')]()[_0x81ce('0x3b')](cmHopper['rescheduleContact'](_0x5d8a77))[_0x81ce('0xaf')](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0x81ce('0x1b')]['unlockContact']=function(_0x1ba397,_0x29a428,_0x3153fd){return Promise['resolve']()[_0x81ce('0x3b')](cmHopper[_0x81ce('0xb9')](_0x1ba397,_0x29a428,_0x3153fd))['catch'](loggerCatch('[unlockContact]\x20'));};Dialer['prototype'][_0x81ce('0xba')]=function(_0x3c671b,_0x2ad48f,_0x8755cb,_0x4303dc,_0x169930){return Promise[_0x81ce('0xae')]()['then'](cmHopper[_0x81ce('0xba')](_0x3c671b,_0x2ad48f,_0x8755cb,_0x4303dc))[_0x81ce('0xaf')](function(_0xb41190){_0x169930['temp']-=_0x8755cb;_0x169930[_0x81ce('0xbb')]=_0x169930[_0x81ce('0xbb')]>0x0?_0x169930['temp']:0x0;loggerCatch(_0x81ce('0xbc'))(_0xb41190);});};Dialer[_0x81ce('0x1b')][_0x81ce('0xbd')]=function(_0x9af9de,_0x246ce5,_0x291f14,_0x23f229){return Promise[_0x81ce('0xae')]()['then'](cmHopper[_0x81ce('0xbd')](_0x9af9de,_0x246ce5,_0x291f14))['catch'](function(_0x3b3618){_0x23f229[_0x81ce('0xbb')]-=_0x246ce5;_0x23f229[_0x81ce('0xbb')]=_0x23f229[_0x81ce('0xbb')]>0x0?_0x23f229[_0x81ce('0xbb')]:0x0;loggerCatch('[getContactDialerIvr]\x20')(_0x3b3618);});};Dialer['prototype'][_0x81ce('0xbe')]=function(_0xb1009b){return Promise[_0x81ce('0xae')]()[_0x81ce('0x3b')](voiceQueueRt['getVoiceQueueRtPauses'](_0xb1009b))[_0x81ce('0xaf')](loggerCatch(_0x81ce('0xbf')));};Dialer[_0x81ce('0x1b')]['moveContactManagedDialer']=function(_0x1c1fca){return Promise[_0x81ce('0xae')]()[_0x81ce('0x3b')](cmHopper['moveContactManagedDialer'](_0x1c1fca))[_0x81ce('0xaf')](loggerCatch(_0x81ce('0xc0')));};Dialer[_0x81ce('0x1b')][_0x81ce('0xc1')]=function(_0x24a3d5){return Promise[_0x81ce('0xae')]()[_0x81ce('0x3b')](cmHopperHistory[_0x81ce('0xc1')](_0x24a3d5))[_0x81ce('0xaf')](loggerCatch(_0x81ce('0xc2')));};Dialer[_0x81ce('0x1b')]['updateOriginated']=function(_0x3de57c){if(!_[_0x81ce('0x3d')](_0x3de57c)&&_0x3de57c!==null){if(typeof _0x3de57c['originated']!==_0x81ce('0x95')){if(_0x3de57c['originated']>0x0){_0x3de57c['originated']-=0x1;}else{logger[_0x81ce('0x93')](_0x81ce('0xc3'));}}}else{logger[_0x81ce('0x93')](_0x81ce('0xc4'));}};Dialer['prototype'][_0x81ce('0xc5')]=function(_0x5e1f4b,_0x114639){var _0x59e67c=this;return function(_0xa5e969){_0x59e67c['updateOriginated'](_0x114639);logger['error'](_0x5e1f4b,util[_0x81ce('0x94')](_0xa5e969,{'showHidden':![],'depth':null}));};};Dialer[_0x81ce('0x1b')][_0x81ce('0xc6')]=function(_0x1bf039,_0x46ad2c,_0x43d871){var _0x311954={'state':0x19,'statedesc':_0x81ce('0xc7')};this[_0x81ce('0xa8')](_0x46ad2c);this[_0x81ce('0xc8')](_['merge'](_0x311954,_[_0x81ce('0xc9')](_0x43d871,[_0x81ce('0xca'),_0x81ce('0xcb'),_0x81ce('0xcc'),_0x81ce('0xcd'),'CampaignId'])),_0x81ce('0xce'),_0x81ce('0xcf'));logger[_0x81ce('0x93')](_0x1bf039);};Dialer[_0x81ce('0x1b')][_0x81ce('0xd0')]=function(_0x31a096){return _0x31a096===_0x81ce('0xd1');};Dialer['prototype'][_0x81ce('0xd2')]=function(_0x2d2385){return!_[_0x81ce('0x3d')](_0x2d2385)&&_0x2d2385&&!_[_0x81ce('0x3d')](_0x2d2385[_0x81ce('0x40')])&&!_['isUndefined'](_0x2d2385[_0x81ce('0x76')])&&_0x2d2385['active']&&(this[_0x81ce('0x22')][util[_0x81ce('0x79')]('SIP/%s',_0x2d2385[_0x81ce('0x40')])][_0x81ce('0xd3')]===_0x81ce('0xd4')||this[_0x81ce('0x22')][util[_0x81ce('0x79')](_0x81ce('0xd5'),_0x2d2385[_0x81ce('0x40')])][_0x81ce('0xd3')]==='unmonitored');};Dialer['prototype'][_0x81ce('0xc8')]=function(_0x5d1954,_0x4ab219,_0x5addf8){this[_0x81ce('0xc1')](_0x5d1954)[_0x81ce('0xaf')](loggerCatch(_0x4ab219));this[_0x81ce('0xd6')](_0x5d1954)[_0x81ce('0xaf')](loggerCatch(_0x5addf8));};Dialer[_0x81ce('0x1b')][_0x81ce('0x35')]=function(_0x3e540d){var _0x33970f=this;var _0x1635e3=this[_0x81ce('0xa0')][_0x3e540d['uniqueid']];var _0x27a4f8;if(!_['isNil'](_0x3e540d)&&!_[_0x81ce('0xa4')](_0x3e540d[_0x81ce('0xd7')])&&!_[_0x81ce('0xa4')](_0x3e540d[_0x81ce('0xd7')][_0x81ce('0xd8')])&&_0x3e540d['exten']===_0x81ce('0xd9')&&_0x1635e3){if(_0x1635e3[_0x81ce('0x4b')]!==_0x81ce('0x8f')&&this[_0x81ce('0xa9')][_0x1635e3[_0x81ce('0xaa')]][_0x81ce('0xda')]&&_0x3e540d[_0x81ce('0xdb')]===_0x81ce('0xdc')){delete this[_0x81ce('0xa0')][_0x3e540d[_0x81ce('0xdd')]];this['updateOriginated'](this[_0x81ce('0xa9')][_0x1635e3[_0x81ce('0xaa')]]);this[_0x81ce('0xa9')][_0x1635e3[_0x81ce('0xaa')]][_0x81ce('0x5d')]+=0x1;this[_0x81ce('0xa9')][_0x1635e3[_0x81ce('0xaa')]][_0x81ce('0x5c')]+=0x1;_0x27a4f8=new Hangup(_0x1635e3,_0x3e540d);_0x27a4f8[_0x81ce('0xde')]=0x12;_0x27a4f8[_0x81ce('0xdf')]='HangupInAMD';_0x27a4f8['membername']=_0x81ce('0xe0');ami['emit'](_0x81ce('0xe1'),ut[_0x81ce('0xe2')](_0x27a4f8,_0x81ce('0xe3')));this[_0x81ce('0xc8')](_0x27a4f8,_0x81ce('0xe4'),_0x81ce('0xe5'));}if(_0x1635e3['type']!==_0x81ce('0x8f')&&this[_0x81ce('0xa9')][_0x1635e3[_0x81ce('0xaa')]][_0x81ce('0xda')]&&_0x3e540d['value']==='MACHINE'){return new Promise(function(_0x284195,_0x216ec8){delete _0x33970f['uniqueId'][_0x3e540d['uniqueid']];_0x33970f[_0x81ce('0xa8')](_0x33970f[_0x81ce('0xa9')][_0x1635e3[_0x81ce('0xaa')]]);_0x33970f[_0x81ce('0xa9')][_0x1635e3[_0x81ce('0xaa')]]['outboundAnswerCallsDay']+=0x1;_0x33970f['voiceQueues'][_0x1635e3[_0x81ce('0xaa')]]['outboundAnswerAgiCallsDay']+=0x1;var _0x42de93=_0x33970f[_0x81ce('0xa9')][_0x1635e3[_0x81ce('0xaa')]];var _0x2e757a=new Hangup(_0x1635e3,_0x3e540d);_0x2e757a[_0x81ce('0xde')]=0x13;_0x2e757a['statedesc']=_0x81ce('0xe6');_0x2e757a[_0x81ce('0xe7')]=_0x81ce('0xe0');_0x2e757a['countmachineretry']+=0x1;_0x2e757a[_0x81ce('0xe8')]+=0x1;_0x2e757a[_0x81ce('0xe3')]=!![];ami[_0x81ce('0x4a')](_0x81ce('0xe1'),ut[_0x81ce('0xe2')](_0x2e757a,_0x81ce('0xe3')));_0x33970f['createHistory'](_0x2e757a)[_0x81ce('0xaf')](loggerCatch(_0x81ce('0xe9')));if(_0x2e757a[_0x81ce('0xea')]+_0x2e757a[_0x81ce('0xeb')]+_0x2e757a[_0x81ce('0xec')]+_0x2e757a['countnosuchnumberretry']+_0x2e757a['countdropretry']+_0x2e757a['countabandonedretry']+_0x2e757a[_0x81ce('0xed')]+_0x2e757a[_0x81ce('0xee')]>=_0x42de93[_0x81ce('0xef')]){_0x33970f['stateGlobal'](_0x2e757a,_0x284195,_0x216ec8,_0x81ce('0xf0'));}else{if(_0x2e757a['countmachineretry']>=_0x42de93[_0x81ce('0xf1')]){_0x33970f[_0x81ce('0xf2')](_0x2e757a,_0x284195,_0x216ec8,_0x81ce('0xf3'));}else{_0x33970f['rescheduleContact']({'active':![],'countmachineretry':_0x2e757a[_0x81ce('0xed')],'scheduledat':moment()['add'](_0x42de93[_0x81ce('0xf4')],_0x81ce('0xf5'))[_0x81ce('0x79')](_0x81ce('0xf6')),'ContactId':_0x2e757a[_0x81ce('0xca')],'ListId':_0x2e757a[_0x81ce('0xcb')],'VoiceQueueId':_0x2e757a['VoiceQueueId']||undefined,'CampaignId':_0x2e757a[_0x81ce('0xf7')]||undefined})[_0x81ce('0xaf')](loggerCatch(_0x81ce('0xf8')));_0x284195({'reschedule':0x1});}}});}if(_0x1635e3[_0x81ce('0x4b')]===_0x81ce('0x8f')&&this[_0x81ce('0x20')][_0x1635e3[_0x81ce('0xaa')]][_0x81ce('0xda')]&&_0x3e540d[_0x81ce('0xdb')]===_0x81ce('0xdc')){delete this[_0x81ce('0xa0')][_0x3e540d[_0x81ce('0xdd')]];this[_0x81ce('0xa8')](this[_0x81ce('0x20')][_0x1635e3[_0x81ce('0xaa')]]);_0x27a4f8=new Hangup(_0x1635e3,_0x3e540d);_0x27a4f8[_0x81ce('0xde')]=0x12;_0x27a4f8['statedesc']='HangupInAMD';_0x27a4f8[_0x81ce('0xe7')]=_0x81ce('0xe0');ami[_0x81ce('0x4a')](_0x81ce('0xe1'),ut[_0x81ce('0xe2')](_0x27a4f8,'amd'));this[_0x81ce('0xc8')](_0x27a4f8,_0x81ce('0xf9'),_0x81ce('0xfa'));}if(_0x1635e3[_0x81ce('0x4b')]===_0x81ce('0x8f')&&this[_0x81ce('0x20')][_0x1635e3[_0x81ce('0xaa')]][_0x81ce('0xda')]&&_0x3e540d[_0x81ce('0xdb')]===_0x81ce('0xfb')){return new Promise(function(_0x195880,_0x18b731){delete _0x33970f[_0x81ce('0xa0')][_0x3e540d[_0x81ce('0xdd')]];_0x33970f[_0x81ce('0xa8')](_0x33970f[_0x81ce('0x20')][_0x1635e3[_0x81ce('0xaa')]]);_0x33970f[_0x81ce('0x20')][_0x1635e3['queue']][_0x81ce('0x5d')]+=0x1;_0x33970f['campaigns'][_0x1635e3[_0x81ce('0xaa')]][_0x81ce('0x5c')]+=0x1;var _0x1c4173=_0x33970f[_0x81ce('0x20')][_0x1635e3[_0x81ce('0xaa')]];var _0x39eca3=new Hangup(_0x1635e3,_0x3e540d);_0x39eca3[_0x81ce('0xde')]=0x13;_0x39eca3[_0x81ce('0xdf')]='Machine';_0x39eca3[_0x81ce('0xe7')]='AMD';_0x39eca3[_0x81ce('0xed')]+=0x1;_0x39eca3['countglobal']+=0x1;_0x39eca3['amd']=!![];ami[_0x81ce('0x4a')]('custom:amd',ut['buildObj'](_0x39eca3,_0x81ce('0xe3')));_0x33970f[_0x81ce('0xc1')](_0x39eca3)[_0x81ce('0xaf')](loggerCatch(_0x81ce('0xe9')));if(_0x39eca3[_0x81ce('0xea')]+_0x39eca3[_0x81ce('0xeb')]+_0x39eca3[_0x81ce('0xec')]+_0x39eca3[_0x81ce('0xfc')]+_0x39eca3['countdropretry']+_0x39eca3['countabandonedretry']+_0x39eca3[_0x81ce('0xed')]+_0x39eca3['countagentrejectretry']>=_0x1c4173[_0x81ce('0xef')]){_0x33970f[_0x81ce('0xfd')](_0x39eca3,_0x195880,_0x18b731,_0x81ce('0xf0'));}else{if(_0x39eca3['countmachineretry']>=_0x1c4173[_0x81ce('0xf1')]){_0x33970f[_0x81ce('0xf2')](_0x39eca3,_0x195880,_0x18b731,_0x81ce('0xf3'));}else{_0x33970f[_0x81ce('0xb8')]({'active':![],'countmachineretry':_0x39eca3[_0x81ce('0xed')],'scheduledat':moment()[_0x81ce('0xfe')](_0x1c4173[_0x81ce('0xf4')],_0x81ce('0xf5'))[_0x81ce('0x79')](_0x81ce('0xf6')),'ContactId':_0x39eca3[_0x81ce('0xca')],'ListId':_0x39eca3[_0x81ce('0xcb')],'VoiceQueueId':_0x39eca3['VoiceQueueId']||undefined,'CampaignId':_0x39eca3['CampaignId']||undefined})[_0x81ce('0xaf')](loggerCatch(_0x81ce('0xf8')));_0x195880({'reschedule':0x1});}}});}}};Dialer['prototype']['syncHangup']=function(_0x5de4d3){var _0x2b585b=this[_0x81ce('0xa0')][_0x5de4d3[_0x81ce('0xdd')]];var _0x28f18d;if(_0x2b585b&&_0x2b585b[_0x81ce('0x4b')]===_0x81ce('0x8f')){delete this[_0x81ce('0xa0')][_0x5de4d3[_0x81ce('0xdd')]];this['updateOriginated'](this['campaigns'][_0x2b585b[_0x81ce('0xaa')]]);this[_0x81ce('0x20')][_0x2b585b[_0x81ce('0xaa')]][_0x81ce('0xff')]+=0x1;_0x28f18d=new Hangup(_0x2b585b,_0x5de4d3);this[_0x81ce('0xc1')](_0x28f18d)[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x100')));this['moveContactManagedDialer'](_0x28f18d)[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x101')));}if(_0x2b585b&&_0x2b585b['type']!==_0x81ce('0x8f')&&isNotNull(this[_0x81ce('0xa9')][_0x2b585b[_0x81ce('0xaa')]][_0x81ce('0x102')])){delete this[_0x81ce('0xa0')][_0x5de4d3[_0x81ce('0xdd')]];this[_0x81ce('0xa8')](this[_0x81ce('0xa9')][_0x2b585b['queue']]);this[_0x81ce('0xa9')][_0x2b585b[_0x81ce('0xaa')]][_0x81ce('0x5d')]+=0x1;this[_0x81ce('0xa9')][_0x2b585b[_0x81ce('0xaa')]][_0x81ce('0x5c')]+=0x1;_0x28f18d=new Hangup(_0x2b585b,_0x5de4d3);_0x28f18d[_0x81ce('0xde')]=0x10;_0x28f18d[_0x81ce('0xdf')]=_0x81ce('0x103');_0x28f18d['membername']=_0x81ce('0x104');this[_0x81ce('0xc1')](_0x28f18d)[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x100')));this[_0x81ce('0xd6')](_0x28f18d)[_0x81ce('0xaf')](loggerCatch('[syncHangupIvr]'));}if(_0x2b585b&&_0x2b585b['type']!==_0x81ce('0x8f')&&!isNotNull(this[_0x81ce('0xa9')][_0x2b585b[_0x81ce('0xaa')]]['dialQueueProject'])){delete this['uniqueId'][_0x5de4d3['uniqueid']];this[_0x81ce('0xa8')](this['voiceQueues'][_0x2b585b[_0x81ce('0xaa')]]);this[_0x81ce('0xa9')][_0x2b585b[_0x81ce('0xaa')]][_0x81ce('0x105')]+=0x1;_0x28f18d=new Hangup(_0x2b585b,_0x5de4d3);_0x28f18d['state']=0xc;_0x28f18d[_0x81ce('0xdf')]=_0x5de4d3[_0x81ce('0x106')];_0x28f18d[_0x81ce('0xe7')]=_0x81ce('0x107');this[_0x81ce('0xc1')](_0x28f18d)[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x100')));this[_0x81ce('0xd6')](_0x28f18d)['catch'](loggerCatch(_0x81ce('0x101')));}};Dialer[_0x81ce('0x1b')]['syncAgentComplete']=function(_0x11bf2a){var _0x3d68b3=this['uniqueId'][_0x11bf2a[_0x81ce('0xdd')]];if(this[_0x81ce('0xa9')][_0x11bf2a[_0x81ce('0xaa')]]){if(_0x3d68b3&&_0x3d68b3[_0x81ce('0x4b')]!==_0x81ce('0x8f')){delete this[_0x81ce('0xa0')][_0x11bf2a[_0x81ce('0xdd')]];this[_0x81ce('0xa9')][_0x11bf2a[_0x81ce('0xaa')]]['outboundAnswerCallsDay']+=0x1;var _0x4dca1e=new AgentComplete(_0x3d68b3,_0x11bf2a);if(_0x11bf2a[_0x81ce('0x108')]==='agent'){_0x4dca1e[_0x81ce('0x109')]=this[_0x81ce('0xa9')][_0x11bf2a[_0x81ce('0xaa')]][_0x81ce('0x10a')]&&this[_0x81ce('0xa9')][_0x11bf2a['queue']][_0x81ce('0x10b')]?moment()[_0x81ce('0x79')](_0x81ce('0xf6')):undefined;}this[_0x81ce('0xc1')](_0x4dca1e)[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x10c')));this[_0x81ce('0xd6')](_0x4dca1e)[_0x81ce('0xaf')](loggerCatch('[syncAgentComplete]'));}}};Dialer['prototype'][_0x81ce('0x28')]=function(_0x210c8b){if(this[_0x81ce('0xa9')][_0x210c8b[_0x81ce('0xaa')]]){if(this['uniqueId'][_0x210c8b[_0x81ce('0xdd')]]&&this[_0x81ce('0xa0')][_0x210c8b['uniqueid']][_0x81ce('0x4b')]!==_0x81ce('0x8f')){this[_0x81ce('0xa8')](this['voiceQueues'][_0x210c8b[_0x81ce('0xaa')]]);this[_0x81ce('0xa0')][_0x210c8b[_0x81ce('0xdd')]][_0x81ce('0x10d')]=moment()[_0x81ce('0x79')](_0x81ce('0xf6'));}}};Dialer[_0x81ce('0x1b')][_0x81ce('0x10e')]=function(_0x5e833b,_0x191cce){this['createHistory'](_0x5e833b)['catch'](loggerCatch(_0x81ce('0x10c')));if(_0x191cce==0x0){this[_0x81ce('0xd6')](_0x5e833b)[_0x81ce('0xaf')](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));}};Dialer[_0x81ce('0x1b')][_0x81ce('0x2b')]=function(_0x485d81){var _0x36c5d6=this[_0x81ce('0xa0')][_0x485d81[_0x81ce('0xdd')]];var _0x5d89b5=this;var _0x28d4c4=![];var _0x25672e;var _0x25e068;if(this['voiceQueues'][_0x485d81[_0x81ce('0xaa')]]){if(_0x36c5d6&&_0x36c5d6[_0x81ce('0x4b')]!=='ivr'){delete this[_0x81ce('0xa0')][_0x485d81[_0x81ce('0xdd')]];this[_0x81ce('0xa8')](this[_0x81ce('0xa9')][_0x485d81[_0x81ce('0xaa')]]);_0x36c5d6[_0x81ce('0x10f')]=moment()[_0x81ce('0x79')](_0x81ce('0xf6'));var _0x14de27=new QueueCallerAbandon(_0x36c5d6,_0x485d81);if(getSeconds(_0x36c5d6[_0x81ce('0x10f')],_0x36c5d6[_0x81ce('0x110')])>=_0x36c5d6[_0x81ce('0x111')]){this['voiceQueues'][_0x485d81[_0x81ce('0xaa')]][_0x81ce('0x6a')]+=0x1;this['voiceQueues'][_0x485d81[_0x81ce('0xaa')]][_0x81ce('0x61')]+=0x1;this[_0x81ce('0xa9')][_0x485d81['queue']][_0x81ce('0x112')]+=0x1;_0x14de27['state']=0xa;_0x14de27[_0x81ce('0xdf')]=_0x81ce('0x113');_0x14de27[_0x81ce('0x114')]=_0x81ce('0x115');_0x14de27[_0x81ce('0x109')]=this[_0x81ce('0xa9')][_0x485d81[_0x81ce('0xaa')]][_0x81ce('0x10a')]?moment()[_0x81ce('0x79')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;_0x14de27[_0x81ce('0x116')]+=0x1;_0x14de27[_0x81ce('0xe8')]+=0x1;_0x25672e=this[_0x81ce('0xa9')][_0x485d81['queue']][_0x81ce('0x117')];_0x25e068=this['voiceQueues'][_0x485d81['queue']][_0x81ce('0x118')];_0x5d89b5[_0x81ce('0xb2')](_0x14de27,_0x14de27[_0x81ce('0xde')],_0x36c5d6[_0x81ce('0x119')])[_0x81ce('0x3b')](function(_0x446061){_0x28d4c4=_0x446061[_0x81ce('0x11a')]==0x1;if(_0x14de27[_0x81ce('0x116')]>=_0x5d89b5[_0x81ce('0xa9')][_0x485d81[_0x81ce('0xaa')]][_0x81ce('0x11b')]){_0x5d89b5[_0x81ce('0x10e')](_0x14de27,_0x446061[_0x81ce('0x11a')]);}else{_0x5d89b5[_0x81ce('0xb8')]({'active':![],'countdropretry':_0x14de27[_0x81ce('0x116')],'scheduledat':moment()['add'](_0x5d89b5[_0x81ce('0xa9')][_0x485d81[_0x81ce('0xaa')]]['dialDropRetryFrequency'],_0x81ce('0xf5'))['format'](_0x81ce('0xf6')),'ContactId':_0x36c5d6[_0x81ce('0xca')],'ListId':_0x36c5d6['ListId'],'VoiceQueueId':_0x36c5d6[_0x81ce('0xcd')]||undefined,'CampaignId':_0x36c5d6['CampaignId']||undefined})['catch'](loggerCatch(_0x81ce('0x11c')));var _0x3384a6=new History(_0x14de27);_0x3384a6[_0x81ce('0xde')]=0xa;_0x3384a6[_0x81ce('0xdf')]='Drop';_0x3384a6[_0x81ce('0x9e')]=moment()[_0x81ce('0x79')](_0x81ce('0xf6'));_0x3384a6[_0x81ce('0x9d')]=_0x3384a6[_0x81ce('0x9e')];_0x3384a6['calleridname']=_0x14de27['calleridname'];_0x3384a6['calleridnum']=_0x14de27[_0x81ce('0x11d')];_0x5d89b5[_0x81ce('0xc1')](_0x3384a6)[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x11e')));}})['then'](function(){if(_0x28d4c4)_0x5d89b5['swapAdditionalPhones'](_0x14de27,_0x25672e,_0x25e068)[_0x81ce('0x3b')](function(){return 0x1;});});}else{this[_0x81ce('0xa9')][_0x485d81['queue']]['predictiveIntervalDroppedCallsCallersExit']+=0x1;this[_0x81ce('0xa9')][_0x485d81['queue']][_0x81ce('0x11f')]+=0x1;_0x14de27[_0x81ce('0xde')]=0xb;_0x14de27[_0x81ce('0xdf')]=_0x81ce('0x120');_0x14de27[_0x81ce('0x114')]=_0x81ce('0x121');_0x14de27[_0x81ce('0x122')]+=0x1;_0x14de27[_0x81ce('0xe8')]+=0x1;_0x25672e=this[_0x81ce('0xa9')][_0x485d81['queue']]['dialAbandonedRetryFrequency'];_0x25e068=this['voiceQueues'][_0x485d81[_0x81ce('0xaa')]]['callAdditionalPhoneAfterMin'];_0x5d89b5['verifyAdditionalPhones'](_0x14de27,_0x14de27[_0x81ce('0xde')],_0x36c5d6[_0x81ce('0x119')])['then'](function(_0x34df92){if(_0x14de27[_0x81ce('0x122')]>=_0x5d89b5['voiceQueues'][_0x485d81[_0x81ce('0xaa')]][_0x81ce('0x123')]){_0x5d89b5['queueCallerAbandonCreateState'](_0x14de27,_0x34df92[_0x81ce('0x11a')]);}else{_0x5d89b5[_0x81ce('0xb8')]({'active':![],'countabandonedretry':_0x14de27[_0x81ce('0x122')],'scheduledat':moment()[_0x81ce('0xfe')](_0x5d89b5[_0x81ce('0xa9')][_0x485d81[_0x81ce('0xaa')]][_0x81ce('0x124')],_0x81ce('0xf5'))['format'](_0x81ce('0xf6')),'ContactId':_0x36c5d6['ContactId'],'ListId':_0x36c5d6[_0x81ce('0xcb')],'VoiceQueueId':_0x36c5d6[_0x81ce('0xcd')]||undefined,'CampaignId':_0x36c5d6[_0x81ce('0xf7')]||undefined})[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x125')));var _0x1980c6=new History(_0x14de27);_0x1980c6[_0x81ce('0xde')]=0xb;_0x1980c6[_0x81ce('0xdf')]=_0x81ce('0x120');_0x1980c6['starttime']=moment()[_0x81ce('0x79')](_0x81ce('0xf6'));_0x1980c6[_0x81ce('0x9d')]=_0x1980c6['starttime'];_0x1980c6['calleridname']=_0x14de27[_0x81ce('0x126')];_0x1980c6[_0x81ce('0x11d')]=_0x14de27[_0x81ce('0x11d')];_0x5d89b5[_0x81ce('0xc1')](_0x1980c6)[_0x81ce('0xaf')](loggerCatch('[syncAgentComplete][createHistory][11]'));}})[_0x81ce('0x3b')](function(){if(_0x28d4c4)_0x5d89b5[_0x81ce('0xb3')](_0x14de27,_0x25672e,_0x25e068)[_0x81ce('0x3b')](function(){return 0x1;});});}}}};Dialer['prototype']['syncNewExten']=function(_0x2ee2d9){if(this['actions'][_0x2ee2d9[_0x81ce('0xdd')]]){this[_0x81ce('0xa2')][_0x2ee2d9[_0x81ce('0xdd')]][_0x81ce('0xa6')]=_0x2ee2d9['channel'];}if(this[_0x81ce('0xa0')][_0x2ee2d9['uniqueid']]){this[_0x81ce('0xa0')][_0x2ee2d9[_0x81ce('0xdd')]][_0x81ce('0xa6')]=_0x2ee2d9['channel'];}};Dialer['prototype'][_0x81ce('0x127')]=function(_0x2cf3e2){if(strategy[this[_0x81ce('0xa9')][this[_0x81ce('0xa2')][_0x2cf3e2['actionid']][_0x81ce('0xaa')]][_0x81ce('0x4c')]]===_0x81ce('0x1a')){if(this['actions'][_0x2cf3e2[_0x81ce('0x128')]]&&_['isNil'](this['actions'][_0x2cf3e2[_0x81ce('0x128')]][_0x81ce('0x129')])&&_0x2cf3e2['status']==='1'&&_0x2cf3e2[_0x81ce('0x12a')]==='0'){if(this[_0x81ce('0x21')][_0x2cf3e2['stateinterface']]){if(!this[_0x81ce('0x21')][_0x2cf3e2[_0x81ce('0x12b')]][_0x81ce('0x129')]){this[_0x81ce('0x21')][_0x2cf3e2[_0x81ce('0x12b')]][_0x81ce('0x129')]=!![];this[_0x81ce('0xa2')][_0x2cf3e2[_0x81ce('0x128')]][_0x81ce('0x129')]=!![];this['actions'][_0x2cf3e2[_0x81ce('0x128')]][_0x81ce('0x12b')]=_0x2cf3e2[_0x81ce('0x12b')];}}}}else if((strategy[this['voiceQueues'][this[_0x81ce('0xa2')][_0x2cf3e2[_0x81ce('0x128')]][_0x81ce('0xaa')]]['strategy']]||_0x81ce('0x19'))===_0x81ce('0x19')){if(this['actions'][_0x2cf3e2['actionid']]){if(this[_0x81ce('0x21')][_0x2cf3e2['stateinterface']]){this[_0x81ce('0xa2')][_0x2cf3e2[_0x81ce('0x128')]][_0x81ce('0x12b')]=_0x2cf3e2[_0x81ce('0x12b')];if(_[_0x81ce('0xa4')](this[_0x81ce('0x12c')][this[_0x81ce('0xa2')][_0x2cf3e2[_0x81ce('0x128')]]['queue']])){this[_0x81ce('0x12c')][this['actions'][_0x2cf3e2[_0x81ce('0x128')]]['queue']]=[];}this[_0x81ce('0x12c')][this[_0x81ce('0xa2')][_0x2cf3e2[_0x81ce('0x128')]][_0x81ce('0xaa')]][_0x81ce('0x12d')](_[_0x81ce('0x8a')](_[_0x81ce('0xc9')](this[_0x81ce('0xa2')][_0x2cf3e2[_0x81ce('0x128')]],['idHopper',_0x81ce('0x12b')]),{'status':_0x2cf3e2[_0x81ce('0xd3')],'paused':_0x2cf3e2[_0x81ce('0x12a')]}));}}}};function unlockQueueStatus(_0x413779,_0x429c26){setTimeout(function(){if(_[_0x81ce('0x3d')](_0x413779[_0x81ce('0x12e')])){loggerBooked[_0x81ce('0x93')](_0x81ce('0x12f'),_0x429c26);}_0x413779[_0x81ce('0x12e')]=!![];loggerBooked['info'](_0x81ce('0x130'),_0x429c26,JSON[_0x81ce('0x78')](_[_0x81ce('0xc9')](_0x413779,[_0x81ce('0x40'),'queueStatusComplete'])));},0x1f3);}Dialer['prototype'][_0x81ce('0x38')]=function(_0x4bf346){var _0x4996b0=this;var _0x44dff3=_0x4996b0['voiceQueues'][_0x4996b0[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xaa')]];if(strategy[this[_0x81ce('0xa9')][this['actions'][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xaa')]][_0x81ce('0x4c')]]===_0x81ce('0x1a')){if(this['actions'][_0x4bf346['actionid']]&&this['actions'][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0x12b')]){this[_0x81ce('0x1f')][_0x81ce('0x131')](this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0x132')],this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0x12b')])[_0x81ce('0xaf')](function(_0x4c7f44){logger['error']('[Catch][Preview][syncQueueStatusComplete]',util[_0x81ce('0x94')](_0x4c7f44,{'showHidden':![],'depth':null}));})['finally'](function(){_0x4996b0[_0x81ce('0xa8')](_0x4996b0[_0x81ce('0xa9')][_0x4996b0[_0x81ce('0xa2')][_0x4bf346['actionid']][_0x81ce('0xaa')]]);_0x4996b0['agents'][_0x4996b0[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0x12b')]][_0x81ce('0x129')]=![];delete _0x4996b0[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]];unlockQueueStatus(_0x44dff3);});}else{this['updateOriginated'](this[_0x81ce('0xa9')][this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xaa')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xca')],'ListId':this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]]['ListId'],'VoiceQueueId':this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xf7')]||undefined})[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x133')));delete this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]];unlockQueueStatus(_0x44dff3);}}else if((strategy[this[_0x81ce('0xa9')][this[_0x81ce('0xa2')][_0x4bf346['actionid']][_0x81ce('0xaa')]][_0x81ce('0x4c')]]||_0x81ce('0x19'))===_0x81ce('0x19')){var _0x2753ff;if(this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]]&&!_[_0x81ce('0x45')](this[_0x81ce('0x12c')][this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xaa')]])){if(this[_0x81ce('0x134')][_0x4996b0[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xaa')]]){this['queueBookedRR'][_0x4996b0['actions'][_0x4bf346[_0x81ce('0x128')]]['queue']]=this[_0x81ce('0x134')][this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xaa')]]?this[_0x81ce('0x134')][this[_0x81ce('0xa2')][_0x4bf346['actionid']][_0x81ce('0xaa')]]:this[_0x81ce('0x12c')][this[_0x81ce('0xa2')][_0x4bf346['actionid']][_0x81ce('0xaa')]]?this['queueBooked'][this[_0x81ce('0xa2')][_0x4bf346['actionid']][_0x81ce('0xaa')]][_0x81ce('0x135')]||0x0:0x0;}this[_0x81ce('0x12c')][this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]]['queue']][_0x81ce('0x135')]=this[_0x81ce('0x134')][this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xaa')]];for(var _0x53d7a9=0x0;_0x53d7a9<this['queueBooked'][this[_0x81ce('0xa2')][_0x4bf346['actionid']][_0x81ce('0xaa')]]['length'];_0x53d7a9+=0x1){_0x2753ff=rr(this['queueBooked'][this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]]['queue']]);this[_0x81ce('0x134')][_0x4996b0[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xaa')]]=this[_0x81ce('0x12c')][this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xaa')]][_0x81ce('0x135')];if(_0x2753ff['status']==='1'&&_0x2753ff[_0x81ce('0x12a')]==='0'){break;}}if(!_[_0x81ce('0xa4')](_0x2753ff)){this[_0x81ce('0x21')][_0x2753ff[_0x81ce('0x12b')]]['unlockRR']=_['isUndefined'](this[_0x81ce('0x21')][_0x2753ff[_0x81ce('0x12b')]][_0x81ce('0x136')])?!![]:this[_0x81ce('0x21')][_0x2753ff[_0x81ce('0x12b')]][_0x81ce('0x136')];}loggerBooked[_0x81ce('0x7c')](_0x81ce('0x137'),_0x4bf346[_0x81ce('0x128')],_0x81ce('0x138'),JSON[_0x81ce('0x78')](_[_0x81ce('0xc9')](this[_0x81ce('0x21')][_0x2753ff[_0x81ce('0x12b')]],['name',_0x81ce('0x136')])),'contactAgent-idHopper:\x20',JSON[_0x81ce('0x78')](_0x2753ff[_0x81ce('0x132')]));if(!_[_0x81ce('0xa4')](_0x2753ff)&&_0x2753ff[_0x81ce('0xd3')]==='1'&&_0x2753ff['paused']==='0'&&this[_0x81ce('0x21')][_0x2753ff[_0x81ce('0x12b')]][_0x81ce('0x136')]){this[_0x81ce('0x21')][_0x2753ff[_0x81ce('0x12b')]][_0x81ce('0x136')]=![];this['queueBooked'][_0x4996b0[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xaa')]]=[];this[_0x81ce('0x1f')][_0x81ce('0x131')](_0x2753ff['idHopper'],_0x2753ff[_0x81ce('0x12b')])[_0x81ce('0xaf')](function(_0xa58266){logger['error'](_0x81ce('0x139'),util[_0x81ce('0x94')](_0xa58266,{'showHidden':![],'depth':null}));})['finally'](function(){_0x4996b0[_0x81ce('0xa8')](_0x4996b0[_0x81ce('0xa9')][_0x4996b0['actions'][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xaa')]]);setTimeout(function(){_0x4996b0[_0x81ce('0x21')][_0x2753ff[_0x81ce('0x12b')]][_0x81ce('0x136')]=!![];loggerBooked['info']('[booked][RR][finaly]',_0x4bf346[_0x81ce('0x128')],_0x81ce('0x138'),JSON['stringify'](_[_0x81ce('0xc9')](_0x4996b0[_0x81ce('0x21')][_0x2753ff['stateinterface']],[_0x81ce('0x40'),_0x81ce('0x136')])),_0x81ce('0x13a'),JSON['stringify'](_0x2753ff[_0x81ce('0x132')]));},0xc7);delete _0x4996b0[_0x81ce('0xa2')][_0x4bf346['actionid']];unlockQueueStatus(_0x44dff3,_0x4bf346[_0x81ce('0x128')]);});}else{loggerBooked['info'](_0x81ce('0x13b'));this[_0x81ce('0xa8')](this[_0x81ce('0xa9')][this['actions'][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xaa')]]);this[_0x81ce('0xb8')]({'active':![],'ContactId':this['actions'][_0x4bf346[_0x81ce('0x128')]]['ContactId'],'ListId':this[_0x81ce('0xa2')][_0x4bf346['actionid']][_0x81ce('0xcb')],'VoiceQueueId':this['actions'][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xcd')]||undefined,'CampaignId':this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]]['CampaignId']||undefined})['catch'](loggerCatch(_0x81ce('0x133')));delete this['actions'][_0x4bf346[_0x81ce('0x128')]];unlockQueueStatus(_0x44dff3);}}else{loggerBooked[_0x81ce('0x7c')](_0x81ce('0x13c'));this['updateOriginated'](this['voiceQueues'][this['actions'][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xaa')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xca')],'ListId':this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]]['ListId'],'VoiceQueueId':this['actions'][_0x4bf346[_0x81ce('0x128')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xf7')]||undefined})[_0x81ce('0xaf')](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]];unlockQueueStatus(_0x44dff3);}}else{loggerBooked[_0x81ce('0x7c')](_0x81ce('0x13d'));this[_0x81ce('0xa8')](this[_0x81ce('0xa9')][this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xaa')]]);this[_0x81ce('0xb8')]({'active':![],'ContactId':this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xca')],'ListId':this[_0x81ce('0xa2')][_0x4bf346['actionid']][_0x81ce('0xcb')],'VoiceQueueId':this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xcd')]||undefined,'CampaignId':this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]][_0x81ce('0xf7')]||undefined})[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x13e')));delete this[_0x81ce('0xa2')][_0x4bf346[_0x81ce('0x128')]];unlockQueueStatus(_0x44dff3);}};Dialer['prototype'][_0x81ce('0x39')]=function(){var _0x2c1c79=this;return Promise[_0x81ce('0xae')]()['then'](cmHopper[_0x81ce('0x13f')]({}))['then'](function(){setInterval(function(){_0x2c1c79[_0x81ce('0x140')]();},0x3e8);});};Dialer['prototype'][_0x81ce('0x141')]=function(_0xad97a7){var _0x2f8636=this;return function(){if(!_0x2f8636[_0x81ce('0xd2')](_0xad97a7[_0x81ce('0x75')])){if(!_0x2f8636[_0x81ce('0xd2')](_0xad97a7[_0x81ce('0x142')])){_0xad97a7['message']=_0x81ce('0x143');throw _0xad97a7[_0x81ce('0x40')]+_0x81ce('0x144');}}};};Dialer[_0x81ce('0x1b')]['checkIfTime']=function(_0xf82608,_0x42eafe,_0x3accab,_0x2ebb5b){var _0x551575=this;return function(){var _0x1dc585=!![];return _0x551575[_0x81ce('0x145')](_0xf82608,_0x42eafe,_0x3accab,_0x2ebb5b,_0x1dc585);};};Dialer[_0x81ce('0x1b')]['checkIfTimeIntervals']=function(_0x14a5a3,_0x49822e,_0x5d2e6f,_0x2e2382){var _0x856be2=this;return function(){var _0x187681=![];return _0x856be2[_0x81ce('0x145')](_0x14a5a3['Intervals'],_0x49822e,_0x5d2e6f,_0x2e2382,_0x187681);};};Dialer[_0x81ce('0x1b')][_0x81ce('0x145')]=function(_0x14fc16,_0x1d0a6a,_0xb8136a,_0x178cdd,_0x4e273d){var _0x269e8=[];return new Promise(function(_0x4d0e8a,_0x2c6709){if(!isNotNull(_0x14fc16)){_0x178cdd[_0x81ce('0x3e')]='INTERVAL_IS_NULL';return _0x2c6709(msgResponse('ifTime',_0x81ce('0x146'),_0xb8136a+_0x81ce('0x147')));}if(_[_0x81ce('0x45')](_0x14fc16)){_0x178cdd['message']=_0x81ce('0x148');return _0x2c6709(msgResponse(_0x81ce('0x145'),_0x81ce('0x146'),_0xb8136a+_0x81ce('0x149')));}if(_0x1d0a6a&&_[_0x81ce('0x3d')](config[_0x81ce('0x14a')][_0x1d0a6a])){_0x178cdd[_0x81ce('0x3e')]=_0x81ce('0x14b');return _0x2c6709(msgResponse('ifTime','Failure',_0xb8136a+'\x20Timezone\x20unknow\x20'+_0x1d0a6a));}if(_['isArray'](_0x14fc16)){for(var _0x3720f7=0x0;_0x3720f7<_0x14fc16['length'];_0x3720f7+=0x1){_0x269e8[_0x81ce('0x12d')](ami[_0x81ce('0xa5')]({'action':_0x81ce('0x14c'),'command':util[_0x81ce('0x79')](_0x81ce('0x14d'),_0x14fc16[_0x3720f7][_0x81ce('0x14e')],!_['isUndefined'](config['timezones'][_0x1d0a6a])?_0x1d0a6a:'')})[_0x81ce('0x3b')](function(_0x412228){return _0x412228[_0x81ce('0x14f')][_0x81ce('0x150')](_0x81ce('0x151'))>=0x0;})[_0x81ce('0xaf')](myreject(_0x2c6709)));}}else{_0x269e8[_0x81ce('0x12d')](ami[_0x81ce('0xa5')]({'action':_0x81ce('0x14c'),'command':util[_0x81ce('0x79')](_0x81ce('0x14d'),_0x14fc16,!_[_0x81ce('0x3d')](config[_0x81ce('0x14a')][_0x1d0a6a])?_0x1d0a6a:'')})['then'](function(_0xec30ef){return _0xec30ef['content'][_0x81ce('0x150')]('true')>=0x0;})[_0x81ce('0xaf')](myreject(_0x2c6709)));}Promise['all'](_0x269e8)[_0x81ce('0x3b')](function(_0x1f4344){var _0x1312fb=_[_0x81ce('0x152')](_0x1f4344);if(_0x1312fb){return _0x4d0e8a(_0x1312fb);}else{_0x178cdd[_0x81ce('0x3e')]=_0x4e273d?_0x81ce('0x153'):'INTERVAL_IS_OVERTIME';return _0x2c6709(msgResponse(_0x81ce('0x154'),_0x81ce('0x146'),'Global:\x20'+_0x4e273d+'\x20'+_0xb8136a+_0x81ce('0x155')+util[_0x81ce('0x94')](_0x14fc16,{'showHidden':![],'depth':null})+_0x81ce('0x156')+_0x1d0a6a));}})[_0x81ce('0xaf')](function(_0x442b79){return _0x2c6709(msgResponse('ifTime',_0x81ce('0x146'),JSON[_0x81ce('0x78')](_0x442b79)));});});};Dialer[_0x81ce('0x1b')][_0x81ce('0x157')]=function(_0x384d32){var _0x1081ba=this;return function(){switch(_0x384d32['dialMethod']){case _0x81ce('0x158'):freeVariablesPredictive(_0x384d32);_0x1081ba[_0x81ce('0x159')](_0x384d32,0x1);break;case'power':freeVariablesPredictive(_0x384d32);_0x1081ba[_0x81ce('0x159')](_0x384d32,_0x384d32['dialPowerLevel']);break;case _0x81ce('0x15a'):_0x1081ba[_0x81ce('0x15a')](_0x384d32);break;case _0x81ce('0x9'):freeVariablesPredictive(_0x384d32);_0x1081ba[_0x81ce('0x159')](_0x384d32,0x1);break;default:freeVariablesPredictive(_0x384d32);logger['error']('Queue',_0x384d32[_0x81ce('0x40')],_0x81ce('0x15b'));}};};Dialer[_0x81ce('0x1b')]['checkPreviewRecallReminder']=function(_0x578a15){return Promise[_0x81ce('0xae')]()[_0x81ce('0x3b')](cmHopper[_0x81ce('0x15c')](_0x578a15['id'],previewRecallmeReminderInterval))[_0x81ce('0x3b')](function(_0x177676){for(var _0x4c60c4=0x0;_0x4c60c4<_0x177676[_0x81ce('0x15d')];_0x4c60c4++){var _0x137f5a=_0x177676[_0x4c60c4][_0x81ce('0x15e')][_0x81ce('0x40')];if(_0x137f5a)io['to'](util[_0x81ce('0x79')](_0x81ce('0x15f'),_0x137f5a))[_0x81ce('0x4a')](_0x81ce('0x160'),{'hopper':_0x177676[_0x4c60c4]});}})['catch'](function(){});};Dialer['prototype'][_0x81ce('0x161')]=function(_0x571361){var _0xaee4c0=this;return function(){_0xaee4c0[_0x81ce('0x162')](_0x571361);};};Dialer[_0x81ce('0x1b')][_0x81ce('0x30')]=function(_0x415bfb){var _0x29416c=this;if(isNotPreview(_0x415bfb[_0x81ce('0x58')])){if(isVoiceQueueOutbound(_0x415bfb[_0x81ce('0x4b')])&&isActive(_0x415bfb['dialActive'])){_0x415bfb['sendMessageOneNotActive']=!![];Promise['resolve']()[_0x81ce('0x3b')](checkIsLoggedIn(_0x415bfb,_0x415bfb['loggedIn']))[_0x81ce('0x3b')](checkIsActive(_0x415bfb,_0x415bfb[_0x81ce('0x57')]))[_0x81ce('0x3b')](checkInterval(_0x415bfb))[_0x81ce('0x3b')](_0x29416c['checkIsTrunkReachable'](_0x415bfb))[_0x81ce('0x3b')](_0x29416c[_0x81ce('0x163')](_0x415bfb['dialGlobalInterval'],_0x415bfb[_0x81ce('0x164')],_0x415bfb[_0x81ce('0x40')],_0x415bfb))[_0x81ce('0x3b')](_0x29416c[_0x81ce('0x165')](_0x415bfb[_0x81ce('0x42')],_0x415bfb[_0x81ce('0x164')],_0x415bfb[_0x81ce('0x40')],_0x415bfb))[_0x81ce('0x3b')](_0x29416c[_0x81ce('0x157')](_0x415bfb))[_0x81ce('0xaf')](loggerCatchQueueSummary(_0x81ce('0x166'),_0x415bfb));}else{notSendMessagesQueue(_0x415bfb);}}else{freeVariablesPredictive(_0x415bfb);}};Dialer[_0x81ce('0x1b')][_0x81ce('0x167')]=_[_0x81ce('0x168')](function(){var _0xb5028e=_[_0x81ce('0x169')](this[_0x81ce('0xa9')],function(_0x4275b9){return _0x4275b9[_0x81ce('0x16a')];});var _0x1ee97a=_['filter'](this[_0x81ce('0x21')],function(_0xf33ed0){return _0xf33ed0['online']&&_0xf33ed0['status']===_0x81ce('0xd4');});if(_0xb5028e['length']>0x0&&_0x1ee97a[_0x81ce('0x15d')]>0x0){return BPromise[_0x81ce('0xae')]()[_0x81ce('0x3b')](cmHopper[_0x81ce('0x15c')](_[_0x81ce('0x16b')](_0xb5028e,'id'),previewRecallmeReminderInterval,_[_0x81ce('0x16b')](_0x1ee97a,'id')))[_0x81ce('0x3b')](function(_0x19d608){for(var _0x14e0ea=0x0;_0x14e0ea<_0x19d608['length'];_0x14e0ea++){var _0x49fc79=_0x19d608[_0x14e0ea][_0x81ce('0x15e')]['name'];if(_0x49fc79)io['to'](util[_0x81ce('0x79')](_0x81ce('0x15f'),_0x49fc79))[_0x81ce('0x4a')](_0x81ce('0x160'),{'hopper':_0x19d608[_0x14e0ea]});}})['catch'](function(_0x24355c){logger['error']('checkPreviewRecallReminder',_0x24355c);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0x81ce('0x1b')][_0x81ce('0x140')]=function(){var _0x4166f7=this;var _0xe6e35f;for(var _0xa392ca in this[_0x81ce('0x20')]){if(typeof this[_0x81ce('0x20')][_0xa392ca]!==_0x81ce('0x95')){_0xe6e35f=this[_0x81ce('0x20')][_0xa392ca];if(isCampaignIvr(_0xe6e35f[_0x81ce('0x4b')])&&isActive(_0xe6e35f[_0x81ce('0x76')])){_0xe6e35f[_0x81ce('0x9c')]=!![];Promise['resolve']()['then'](checkIsActive(_0xe6e35f,_0xe6e35f[_0x81ce('0x76')]))['then'](checkInterval(_0xe6e35f))[_0x81ce('0x3b')](_0x4166f7[_0x81ce('0x141')](_0xe6e35f))['then'](_0x4166f7[_0x81ce('0x163')](_0xe6e35f[_0x81ce('0x16c')],_0xe6e35f['dialTimezone'],_0xe6e35f[_0x81ce('0x40')],_0xe6e35f))[_0x81ce('0x3b')](_0x4166f7[_0x81ce('0x165')](_0xe6e35f[_0x81ce('0x42')],_0xe6e35f[_0x81ce('0x164')],_0xe6e35f['name'],_0xe6e35f))[_0x81ce('0x3b')](_0x4166f7[_0x81ce('0x161')](_0xe6e35f))[_0x81ce('0xaf')](loggerCatchQueueSummary('[syncCampaigns]',_0xe6e35f));}else{notSendMessagesCampaign(_0xe6e35f);}}}};function getCallerIdRandom(_0x2b4d72,_0x18a940){var _0x30c53b;var _0x1cc745;var _0x1f81b8;if(_0x18a940<=0x0){_0x18a940=0x1;}_0x30c53b=new RegExp(_0x81ce('0x16d')+_0x18a940+'}$');_0x1cc745=Math[_0x81ce('0x16e')](0xa,_0x18a940-0x1);_0x1f81b8=Math[_0x81ce('0x16e')](0xa,_0x18a940)-0x1;return util[_0x81ce('0x79')]('%s',_['replace'](_0x2b4d72,_0x30c53b,_[_0x81ce('0x16f')](_0x1cc745,_0x1f81b8)));}function extractCalleridName(_0xecb654){var _0x6f2317=_0xecb654[_0x81ce('0x170')](/"(.*?)"/);return _0x6f2317?_0x6f2317[0x1]:_0xecb654;}Dialer[_0x81ce('0x1b')][_0x81ce('0x171')]=function(_0x32e03a,_0x1dab75){var _0x3ffc59=this;var _0x57f2df=uuid['v4']();this[_0x81ce('0xa2')][_0x57f2df]=new Action(_0x32e03a,_0x1dab75,_0x57f2df);return new Promise(function(_0x3ef6cc,_0xfe391f){if(_[_0x81ce('0x3d')](_0x32e03a)&&typeof _0x32e03a!==_0x81ce('0x172')){return _0xfe391f(msgResponse(_0x81ce('0x173'),'Failure',_0x81ce('0x174')));}if(_['isUndefined'](_0x1dab75[_0x81ce('0x175')])||_0x1dab75['phone']===null){return _0xfe391f(msgResponse('originate',_0x81ce('0x146'),_0x81ce('0x176')));}var _0x5b9108={'XMD-CALLERID':_0x3ffc59[_0x81ce('0xa2')][_0x57f2df][_0x81ce('0x177')](),'XMD-AGI':_0x32e03a[_0x81ce('0x102')]?util[_0x81ce('0x79')](_0x81ce('0x178'),ipAgi,_0x32e03a[_0x81ce('0x102')]):'NONE','XMD-AGIAFTER':_0x32e03a[_0x81ce('0x10a')]?util[_0x81ce('0x79')](_0x81ce('0x178'),ipAgi,_0x32e03a[_0x81ce('0x10a')]):_0x81ce('0x179'),'XMD-QUEUE':_0x32e03a['type']===_0x81ce('0x17a')?util[_0x81ce('0x79')]('\x22%s,%s%s,,,%s\x22',_0x32e03a[_0x81ce('0x40')],_0x32e03a[_0x81ce('0x17b')]||'',_0x32e03a[_0x81ce('0x10b')]?'c':'',_0x32e03a[_0x81ce('0x111')]||0x3):_0x81ce('0x179'),'XMD-CONTACTID':_0x1dab75['ContactId'],'XMD-CDRTYPE':_0x81ce('0x17c'),'CALLERID(all)':_0x3ffc59[_0x81ce('0xa2')][_0x57f2df][_0x81ce('0x177')](),'XMD-AMD':_0x32e03a[_0x81ce('0xda')]?_0x81ce('0x17d'):_0x81ce('0x179'),'XMD-DESTINATION':_0x81ce('0xd9')};if(_0x32e03a[_0x81ce('0xda')]){_0x5b9108[_0x81ce('0x17e')]=_0x32e03a[_0x81ce('0x17f')]||0x9c4;_0x5b9108[_0x81ce('0x180')]=_0x32e03a[_0x81ce('0x181')]||0x5dc;_0x5b9108[_0x81ce('0x182')]=_0x32e03a[_0x81ce('0x183')]||0x320;_0x5b9108[_0x81ce('0x184')]=_0x32e03a[_0x81ce('0x185')]||0x1388;_0x5b9108[_0x81ce('0x186')]=_0x32e03a[_0x81ce('0x187')]||0x64;_0x5b9108[_0x81ce('0x188')]=_0x32e03a['dialAMDBetweenWordsSilence']||0x32;_0x5b9108[_0x81ce('0x189')]=_0x32e03a[_0x81ce('0x18a')]||0x3;_0x5b9108[_0x81ce('0x18b')]=_0x32e03a['dialAMDSilenceThreshold']||0x100;_0x5b9108[_0x81ce('0x18c')]=_0x32e03a['dialAMDMaximumWordLength']||0x1388;}if(_0x32e03a[_0x81ce('0x4b')]===_0x81ce('0x17a')){_0x5b9108[_0x81ce('0x18d')]=_0x1dab75[_0x81ce('0xcd')];}else{_0x5b9108['XMD-CAMPAIGNID']=_0x1dab75[_0x81ce('0xf7')];}for(var _0x42bfe4 in _0x1dab75[_0x81ce('0x18e')]){if(typeof _0x1dab75[_0x81ce('0x18e')][_0x42bfe4]!==_0x81ce('0x95')){if(isNotNull(_0x1dab75[_0x81ce('0x18e')][_0x42bfe4])&&_0x42bfe4!=='id'&&_0x42bfe4!==_0x81ce('0x18f')&&_0x42bfe4!==_0x81ce('0x190')&&_0x42bfe4!==_0x81ce('0x191')){_0x5b9108[util[_0x81ce('0x79')](_0x81ce('0x192'),_0x81ce('0x193'),_[_0x81ce('0x194')](_0x42bfe4))]=_0x1dab75[_0x81ce('0x18e')][_0x42bfe4];}}}var _0x494793=_0x3ffc59['isTrunkReachable'](_0x32e03a[_0x81ce('0x75')])?getCallerId(_0x32e03a[_0x81ce('0x75')][_0x81ce('0x77')],_0x32e03a['dialOriginateCallerIdName'],_0x32e03a[_0x81ce('0x195')]>0x0?getCallerIdRandom(_0x32e03a[_0x81ce('0x196')],_0x32e03a[_0x81ce('0x195')]):_0x32e03a[_0x81ce('0x196')]):getCallerId(_['isNil'](_0x32e03a[_0x81ce('0x142')])?_0x32e03a['Trunk'][_0x81ce('0x77')]:_0x32e03a['TrunkBackup']['callerid'],_0x32e03a['dialOriginateCallerIdName'],_0x32e03a[_0x81ce('0x195')]>0x0?getCallerIdRandom(_0x32e03a[_0x81ce('0x196')],_0x32e03a[_0x81ce('0x195')]):_0x32e03a['dialOriginateCallerIdNumber']);if(_0x494793){_0x5b9108[_0x81ce('0x197')]=_0x3ffc59[_0x81ce('0xa2')][_0x57f2df][_0x81ce('0x198')]=extractCalleridName(_0x494793);_0x5b9108[_0x81ce('0x199')]=_0x1dab75['phone'];}_0x32e03a[_0x81ce('0x19a')]=_0x5b9108;return ami[_0x81ce('0xa5')]({'actionid':_0x57f2df,'action':_0x81ce('0x173'),'channel':_0x3ffc59[_0x81ce('0xd2')](_0x32e03a[_0x81ce('0x75')])?util['format'](_0x81ce('0x19b'),_0x32e03a[_0x81ce('0x75')][_0x81ce('0x40')],isNotNull(_0x32e03a['dialPrefix'])?_0x32e03a[_0x81ce('0x5b')][_0x81ce('0x19c')]()||'':'',_0x32e03a[_0x81ce('0x19d')]>0x0?_0x1dab75[_0x81ce('0x175')]['substring'](_0x32e03a[_0x81ce('0x19d')]):_0x1dab75[_0x81ce('0x175')]):util[_0x81ce('0x79')](_0x81ce('0x19b'),_[_0x81ce('0xa4')](_0x32e03a[_0x81ce('0x142')])?_0x32e03a[_0x81ce('0x75')][_0x81ce('0x40')]:_0x32e03a['TrunkBackup'][_0x81ce('0x40')],isNotNull(_0x32e03a['dialPrefix'])?_0x32e03a[_0x81ce('0x5b')][_0x81ce('0x19c')]()||'':'',_0x32e03a[_0x81ce('0x19d')]>0x0?_0x1dab75[_0x81ce('0x175')]['substring'](_0x32e03a[_0x81ce('0x19d')]):_0x1dab75[_0x81ce('0x175')]),'callerid':_0x494793,'Exten':_0x81ce('0xd9'),'Context':_0x81ce('0x19e'),'Priority':'1','variable':_0x5b9108,'timeout':(_0x32e03a['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x57f2df})['then'](function(_0x428833){return _0x3ef6cc(_0x428833);})[_0x81ce('0xaf')](function(_0x2e9f50){_0x32e03a[_0x81ce('0x64')]+=0x1;var _0x35c5ce=new History(_0x3ffc59[_0x81ce('0xa2')][_0x57f2df]);logger['error'](util[_0x81ce('0x79')](_0x81ce('0x19f'),JSON[_0x81ce('0x78')](_0x2e9f50)));_0x35c5ce[_0x81ce('0xde')]=0xe;_0x35c5ce[_0x81ce('0xdf')]='OriginateError';_0x35c5ce[_0x81ce('0x9e')]=moment()[_0x81ce('0x79')](_0x81ce('0xf6'));_0x35c5ce['endtime']=_0x35c5ce[_0x81ce('0x9e')];_0x3ffc59[_0x81ce('0xc1')](_0x35c5ce)[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x1a0')));_0x3ffc59[_0x81ce('0xd6')](_0x35c5ce)[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x1a0')))[_0x81ce('0x1e')](function(){delete _0x3ffc59[_0x81ce('0xa2')][_0x57f2df];return _0xfe391f(msgResponse(_0x81ce('0x173'),_0x81ce('0x46'),_0x81ce('0x1a1')));});});});};Dialer['prototype'][_0x81ce('0x2d')]=function(_0x1f77dd){var _0x37edbc=this[_0x81ce('0xa2')][_0x1f77dd[_0x81ce('0x128')]];if(_0x37edbc){delete this[_0x81ce('0xa2')][_0x1f77dd[_0x81ce('0x128')]];_0x37edbc['responsetime']=moment()['format'](_0x81ce('0xf6'));var _0x33e95c=_0x37edbc[_0x81ce('0x4b')]===_0x81ce('0x8f')?this[_0x81ce('0x20')][_0x37edbc[_0x81ce('0xaa')]]:this[_0x81ce('0xa9')][_0x37edbc[_0x81ce('0x1a2')]()];if(!this[_0x81ce('0xd0')](_0x1f77dd[_0x81ce('0x1a3')])){this['updateOriginated'](_0x33e95c);return this[_0x81ce('0x1a4')](_0x37edbc,_0x33e95c,_0x1f77dd)[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x1a5')));}this['uniqueId'][_0x1f77dd[_0x81ce('0xdd')]]=_0x37edbc;}};Dialer[_0x81ce('0x1b')][_0x81ce('0x1a6')]=function(_0x56902e,_0x43b442,_0x438c25){var _0x41464=new History(_0x43b442);if(_0x41464['countbusyretry']+_0x41464['countcongestionretry']+_0x41464[_0x81ce('0xec')]+_0x41464[_0x81ce('0xfc')]+_0x41464[_0x81ce('0x116')]+_0x41464[_0x81ce('0x122')]+_0x41464[_0x81ce('0xed')]+_0x41464['countagentrejectretry']>=_0x438c25['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x56902e){case 0x3:if(_0x41464['countnoanswerretry']>=_0x438c25['dialNoAnswerMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x41464['countnoanswerretry']+=0x1,'scheduledat':moment()['add'](_0x438c25[_0x81ce('0x1a7')],_0x81ce('0xf5'))['format'](_0x81ce('0xf6')),'ContactId':_0x41464[_0x81ce('0xca')],'ListId':_0x41464[_0x81ce('0xcb')],'VoiceQueueId':_0x41464[_0x81ce('0xcd')]||undefined,'CampaignId':_0x41464[_0x81ce('0xf7')]||undefined})[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x1a8')));break;case 0x5:if(_0x41464[_0x81ce('0xea')]>=_0x438c25[_0x81ce('0x1a9')]-0x1){return!![];}this[_0x81ce('0xb8')]({'active':![],'countbusyretry':_0x41464['countbusyretry']+=0x1,'scheduledat':moment()[_0x81ce('0xfe')](_0x438c25['dialBusyRetryFrequency'],_0x81ce('0xf5'))[_0x81ce('0x79')](_0x81ce('0xf6')),'ContactId':_0x41464[_0x81ce('0xca')],'ListId':_0x41464[_0x81ce('0xcb')],'VoiceQueueId':_0x41464['VoiceQueueId']||undefined,'CampaignId':_0x41464[_0x81ce('0xf7')]||undefined})[_0x81ce('0xaf')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x41464[_0x81ce('0xeb')]>=_0x438c25[_0x81ce('0x1aa')]-0x1){return!![];}this[_0x81ce('0xb8')]({'active':![],'countcongestionretry':_0x41464[_0x81ce('0xeb')]+=0x1,'scheduledat':moment()[_0x81ce('0xfe')](_0x438c25[_0x81ce('0x1ab')],_0x81ce('0xf5'))[_0x81ce('0x79')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x41464[_0x81ce('0xca')],'ListId':_0x41464[_0x81ce('0xcb')],'VoiceQueueId':_0x41464[_0x81ce('0xcd')]||undefined,'CampaignId':_0x41464[_0x81ce('0xf7')]||undefined})[_0x81ce('0xaf')](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x41464[_0x81ce('0xfc')]>=_0x438c25['dialNoSuchNumberMaxRetry']-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x41464[_0x81ce('0xfc')]+=0x1,'scheduledat':moment()[_0x81ce('0xfe')](_0x438c25[_0x81ce('0x1ac')],'minutes')[_0x81ce('0x79')](_0x81ce('0xf6')),'ContactId':_0x41464[_0x81ce('0xca')],'ListId':_0x41464[_0x81ce('0xcb')],'VoiceQueueId':_0x41464[_0x81ce('0xcd')]||undefined,'CampaignId':_0x41464[_0x81ce('0xf7')]||undefined})[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x1ad')));}break;case 0xa:if(_0x41464[_0x81ce('0x116')]>=_0x438c25[_0x81ce('0x11b')]-0x1){return!![];}this[_0x81ce('0xb8')]({'active':![],'countdropretry':_0x41464[_0x81ce('0x116')]+=0x1,'scheduledat':moment()[_0x81ce('0xfe')](_0x438c25['dialDropRetryFrequency'],_0x81ce('0xf5'))[_0x81ce('0x79')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x41464[_0x81ce('0xca')],'ListId':_0x41464[_0x81ce('0xcb')],'VoiceQueueId':_0x41464[_0x81ce('0xcd')]||undefined,'CampaignId':_0x41464['CampaignId']||undefined})[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x11c')));break;case 0xb:if(_0x41464[_0x81ce('0x122')]>=_0x438c25[_0x81ce('0x123')]-0x1){return!![];}this[_0x81ce('0xb8')]({'active':![],'countabandonedretry':_0x41464[_0x81ce('0x122')]+=0x1,'scheduledat':moment()[_0x81ce('0xfe')](_0x438c25[_0x81ce('0x124')],_0x81ce('0xf5'))['format'](_0x81ce('0xf6')),'ContactId':_0x41464['ContactId'],'ListId':_0x41464[_0x81ce('0xcb')],'VoiceQueueId':_0x41464[_0x81ce('0xcd')]||undefined,'CampaignId':_0x41464[_0x81ce('0xf7')]||undefined})[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x125')));break;case 0x13:if(_0x41464['countmachineretry']>=_0x438c25[_0x81ce('0xf1')]-0x1){return!![];}this[_0x81ce('0xb8')]({'active':![],'countmachineretry':_0x41464[_0x81ce('0xed')]+=0x1,'scheduledat':moment()[_0x81ce('0xfe')](_0x438c25[_0x81ce('0xf4')],_0x81ce('0xf5'))[_0x81ce('0x79')](_0x81ce('0xf6')),'ContactId':_0x41464[_0x81ce('0xca')],'ListId':_0x41464[_0x81ce('0xcb')],'VoiceQueueId':_0x41464[_0x81ce('0xcd')]||undefined,'CampaignId':_0x41464[_0x81ce('0xf7')]||undefined})['catch'](loggerCatch(_0x81ce('0xf8')));break;case 0x14:if(_0x41464[_0x81ce('0xee')]>=_0x438c25['dialAgentRejectMaxRetry']-0x1){return!![];}this[_0x81ce('0xb8')]({'active':![],'countagentrejectretry':_0x41464[_0x81ce('0xee')]+=0x1,'scheduledat':moment()['add'](_0x438c25[_0x81ce('0x1ae')],_0x81ce('0xf5'))[_0x81ce('0x79')](_0x81ce('0xf6')),'ContactId':_0x41464[_0x81ce('0xca')],'ListId':_0x41464['ListId'],'VoiceQueueId':_0x41464[_0x81ce('0xcd')]||undefined,'CampaignId':_0x41464[_0x81ce('0xf7')]||undefined})[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x1af')));break;default:return!![];}};Dialer[_0x81ce('0x1b')][_0x81ce('0x1a4')]=function(_0x27629d,_0x5c98e5,_0x10e02e){var _0x499749=this;var _0x256b45=new History(_0x27629d);var _0x25798e=![];var _0x2e7c41;var _0x31942a;return new Promise(function(_0x16f93f,_0x579f7a){if(_[_0x81ce('0x3d')](_0x5c98e5)&&typeof _0x5c98e5!==_0x81ce('0x172')){return _0x579f7a(msgResponse(_0x81ce('0x1b0'),'Failure','entity\x20is\x20undefine'));}if(_['isUndefined'](_0x10e02e)&&typeof _0x10e02e!==_0x81ce('0x172')){return _0x579f7a(msgResponse(_0x81ce('0x1b0'),'Failure',_0x81ce('0x1b1')));}_0x499749[_0x81ce('0xb2')](_0x256b45,_0x10e02e['reason'],_0x5c98e5)[_0x81ce('0x3b')](function(_0x19bd4d){if(_0x19bd4d['additional']==0x1)_0x25798e=!![];switch(_0x10e02e[_0x81ce('0x108')]){case'0':_0x5c98e5[_0x81ce('0x63')]+=0x1;_0x256b45[_0x81ce('0xde')]=0x0;_0x256b45['statedesc']=_0x81ce('0x1b2');_0x256b45[_0x81ce('0xfc')]+=0x1;_0x256b45[_0x81ce('0xe8')]+=0x1;ami['emit'](_0x81ce('0x1b3'),ut[_0x81ce('0xe2')](_0x27629d,'nosuchnumber'));_0x2e7c41=_0x5c98e5['dialNoSuchNumberRetryFrequency'];_0x31942a=_0x5c98e5[_0x81ce('0x118')];_0x499749[_0x81ce('0xc1')](_0x256b45)['catch'](loggerCatch(_0x81ce('0xe9')));if(_0x499749['checkRetriveMax'](0x0,_0x27629d,_0x5c98e5)&&!_0x25798e){if(_0x256b45[_0x81ce('0xfc')]>=_0x5c98e5[_0x81ce('0x1b4')]){_0x499749[_0x81ce('0xf2')](_0x256b45,_0x16f93f,_0x579f7a,_0x81ce('0x1b5'));}else{_0x499749[_0x81ce('0xfd')](_0x256b45,_0x16f93f,_0x579f7a,'reason\x200\x20no\x20such\x20number....');}}break;case'3':_0x5c98e5[_0x81ce('0x62')]+=0x1;_0x256b45[_0x81ce('0xde')]=0x3;_0x256b45[_0x81ce('0xdf')]=_0x81ce('0x1b6');_0x256b45[_0x81ce('0xec')]+=0x1;_0x256b45[_0x81ce('0xe8')]+=0x1;var _0x11b692=ut[_0x81ce('0x1b7')](_0x27629d,_0x5c98e5);ami[_0x81ce('0x4a')](_0x81ce('0x1b8'),_0x11b692);_0x2e7c41=_0x5c98e5['dialNoAnswerRetryFrequency'];_0x31942a=_0x5c98e5[_0x81ce('0x118')];_0x499749[_0x81ce('0xc1')](_0x256b45)[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x1b9')));if(_0x499749['checkRetriveMax'](0x3,_0x27629d,_0x5c98e5)&&!_0x25798e){if(_0x256b45[_0x81ce('0xec')]>=_0x5c98e5['dialNoAnswerMaxRetry']){_0x499749[_0x81ce('0xf2')](_0x256b45,_0x16f93f,_0x579f7a,_0x81ce('0x1ba'));}else{_0x499749['stateGlobal'](_0x256b45,_0x16f93f,_0x579f7a,_0x81ce('0x1ba'));}}break;case'5':_0x5c98e5['outboundBusyCallsDay']+=0x1;_0x256b45[_0x81ce('0xde')]=0x5;_0x256b45[_0x81ce('0xdf')]=_0x81ce('0x1bb');_0x256b45['countbusyretry']+=0x1;_0x256b45[_0x81ce('0xe8')]+=0x1;ami['emit'](_0x81ce('0x1bc'),ut['buildObj'](_0x27629d,_0x81ce('0x1bd')));_0x2e7c41=_0x5c98e5[_0x81ce('0x1be')];_0x31942a=_0x5c98e5['callAdditionalPhoneAfterMin'];_0x499749[_0x81ce('0xc1')](_0x256b45)[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x1bf')));if(_0x499749['checkRetriveMax'](0x5,_0x27629d,_0x5c98e5)&&!_0x25798e){if(_0x256b45[_0x81ce('0xea')]>=_0x5c98e5[_0x81ce('0x1a9')]){_0x499749[_0x81ce('0xf2')](_0x256b45,_0x16f93f,_0x579f7a,'reason\x205\x20busy');}else{_0x499749[_0x81ce('0xfd')](_0x256b45,_0x16f93f,_0x579f7a,_0x81ce('0x1c0'));}}break;case'8':_0x5c98e5[_0x81ce('0x1c1')]+=0x1;_0x256b45[_0x81ce('0xde')]=0x8;_0x256b45[_0x81ce('0xdf')]=_0x81ce('0x1c2');_0x256b45[_0x81ce('0xeb')]+=0x1;_0x256b45['countglobal']+=0x1;_0x2e7c41=_0x5c98e5[_0x81ce('0x1ab')];_0x31942a=_0x5c98e5[_0x81ce('0x118')];ami[_0x81ce('0x4a')](_0x81ce('0x1c3'),ut[_0x81ce('0xe2')](_0x27629d,_0x81ce('0x1c4')));_0x499749[_0x81ce('0xc1')](_0x256b45)[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x1c5')));if(_0x499749[_0x81ce('0x1a6')](0x8,_0x27629d,_0x5c98e5)&&!_0x25798e){if(_0x256b45[_0x81ce('0xeb')]>=_0x5c98e5['dialCongestionMaxRetry']){_0x499749[_0x81ce('0xf2')](_0x256b45,_0x16f93f,_0x579f7a,'reason\x208\x20congestion');}else{_0x499749['stateGlobal'](_0x256b45,_0x16f93f,_0x579f7a,'reason\x208\x20congestion');}}break;case'11':_0x5c98e5[_0x81ce('0x1c6')]+=0x1;_0x256b45['state']=0xb;_0x256b45[_0x81ce('0xdf')]='Abandoned';_0x256b45[_0x81ce('0x122')]+=0x1;_0x256b45['countglobal']+=0x1;_0x2e7c41=_0x5c98e5[_0x81ce('0x124')];_0x31942a=_0x5c98e5[_0x81ce('0x118')];_0x499749[_0x81ce('0xc1')](_0x256b45)[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x1c7')));if(_0x499749['checkRetriveMax'](0xb,_0x27629d,_0x5c98e5)&&!_0x25798e){if(_0x256b45[_0x81ce('0x122')]>=_0x5c98e5[_0x81ce('0x123')]){_0x499749[_0x81ce('0xf2')](_0x256b45,_0x16f93f,_0x579f7a,_0x81ce('0x1c8'));}else{_0x499749[_0x81ce('0xfd')](_0x256b45,_0x16f93f,_0x579f7a,'reason\x2011\x20abandoned');}}break;case'20':_0x5c98e5[_0x81ce('0x1c9')]+=0x1;_0x256b45[_0x81ce('0xde')]=0x14;_0x256b45[_0x81ce('0xdf')]=_0x81ce('0x1ca');_0x256b45[_0x81ce('0xee')]+=0x1;_0x256b45['countglobal']+=0x1;_0x2e7c41=_0x5c98e5[_0x81ce('0x1ae')];_0x31942a=_0x5c98e5[_0x81ce('0x118')];ami[_0x81ce('0x4a')](_0x81ce('0x1cb'),ut[_0x81ce('0xe2')](_0x27629d,'agentreject'));_0x499749[_0x81ce('0xc1')](_0x256b45)[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x1cc')));if(_0x499749['checkRetriveMax'](0x14,_0x27629d,_0x5c98e5)&&!_0x25798e){if(_0x256b45['countagentrejectretry']>=_0x5c98e5['dialAgentRejectMaxRetry']){_0x499749['createStateFinal'](_0x256b45,_0x16f93f,_0x579f7a,_0x81ce('0x1cd'));}else{_0x499749[_0x81ce('0xfd')](_0x256b45,_0x16f93f,_0x579f7a,'reason\x2020\x20agentreject');}}break;default:_0x5c98e5[_0x81ce('0x105')]+=0x1;_0x256b45[_0x81ce('0xde')]=0xc;_0x256b45[_0x81ce('0xdf')]=_0x10e02e[_0x81ce('0x108')];_0x2e7c41=_0x5c98e5[_0x81ce('0x1ae')];_0x31942a=_0x5c98e5[_0x81ce('0x118')];_0x499749[_0x81ce('0xc1')](_0x256b45)[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x1ce')));if(_0x499749[_0x81ce('0x1a6')](_0x10e02e['reason'],_0x27629d,_0x5c98e5)&&!_0x25798e){if(_0x256b45[_0x81ce('0xea')]+_0x256b45[_0x81ce('0xeb')]+_0x256b45[_0x81ce('0xec')]+_0x256b45[_0x81ce('0xfc')]+_0x256b45[_0x81ce('0x116')]+_0x256b45[_0x81ce('0x122')]+_0x256b45[_0x81ce('0xed')]+_0x256b45[_0x81ce('0xee')]>=_0x5c98e5[_0x81ce('0xef')]){_0x499749[_0x81ce('0xfd')](_0x256b45,_0x16f93f,_0x579f7a,_0x10e02e['reason']);}else{_0x499749[_0x81ce('0xf2')](_0x256b45,_0x16f93f,_0x579f7a,_0x10e02e[_0x81ce('0x108')]);}}}})[_0x81ce('0x3b')](function(){if(_0x25798e){_0x499749[_0x81ce('0xb3')](_0x256b45,_0x2e7c41,_0x31942a)[_0x81ce('0x3b')](function(){return _0x16f93f(0x1);});}});});};Dialer[_0x81ce('0x1b')][_0x81ce('0xfd')]=function(_0x1048df,_0x181dd7,_0x24f2ed,_0x3ca699){var _0x150034=new Final(_0x1048df);_0x150034['state']=0xf;_0x150034[_0x81ce('0xdf')]=_0x81ce('0x1cf');this[_0x81ce('0xf2')](_0x150034,_0x181dd7,_0x24f2ed,_0x3ca699);};Dialer[_0x81ce('0x1b')][_0x81ce('0xf2')]=function(_0x7166bf,_0x4042da,_0x59d53c,_0x55f203){this['moveContactManagedDialer'](_0x7166bf)['then'](function(){return _0x4042da(msgResponse(_0x81ce('0x1b0'),_0x81ce('0xd1'),_0x55f203));})[_0x81ce('0xaf')](function(){return _0x59d53c(msgResponse(_0x81ce('0x1d0'),'Failure','contact\x20not\x20moved'));});};Dialer[_0x81ce('0x1b')]['predictive']=function(_0x3722b1){var _0x24af68=_0x3722b1[_0x81ce('0x1d1')]/0x64;var _0x5b2803=_0x3722b1[_0x81ce('0x61')]/(_0x3722b1[_0x81ce('0x61')]+_0x3722b1[_0x81ce('0x5d')]);var _0xc53c55=Math[_0x81ce('0x1d2')](_0x3722b1[_0x81ce('0x6d')]*(_0x3722b1[_0x81ce('0x1d3')]/0x64));var _0x30e7ea=Math[_0x81ce('0x1d2')](_0x3722b1[_0x81ce('0x6d')]*(_0x3722b1[_0x81ce('0x1d4')]/0x64));var _0x2db91e=_0x3722b1['available']+_0x3722b1[_0x81ce('0x53')];var _0x56c1a2=Math[_0x81ce('0x1d5')](_0x3722b1[_0x81ce('0x70')]*_0x3722b1[_0x81ce('0x72')]*_0x3722b1[_0x81ce('0x6c')]*_0x3722b1[_0x81ce('0x1d6')]);if(_['isUndefined'](_0x3722b1['startProgressive'])){if(!_[_0x81ce('0x3d')](_0x3722b1[_0x81ce('0x74')])){_0x3722b1[_0x81ce('0x74')]=undefined;loggerPredictive[_0x81ce('0x93')](_0x81ce('0x1d7'),_0x81ce('0x1d8'));}if(!_['isUndefined'](_0x3722b1[_0x81ce('0x8d')])){loggerPredictive[_0x81ce('0x93')](_0x81ce('0x1d7'),_0x81ce('0x1d9'));clearInterval(_0x3722b1[_0x81ce('0x8d')]);_0x3722b1[_0x81ce('0x8d')]=undefined;}_0x3722b1['startProgressive']=moment()['format'](_0x81ce('0xf6'));loggerPredictive[_0x81ce('0x7c')](_0x3722b1[_0x81ce('0x40')],'collection\x20data\x20in\x20progressive\x20at',_0x3722b1[_0x81ce('0x26')]);this['handlePower'](_0x3722b1,0x1);}else if(ifInterval(_0x3722b1[_0x81ce('0x1da')],_0x3722b1[_0x81ce('0x26')])){this[_0x81ce('0x159')](_0x3722b1,0x1);loggerPredictiveCalls['info'](_0x81ce('0x1db'),_0x3722b1[_0x81ce('0x26')],_0x3722b1[_0x81ce('0x40')]);_0x3722b1[_0x81ce('0x70')]=0x0;_0x3722b1['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x24af68<_0x5b2803&&_0x3722b1[_0x81ce('0x1dc')]===_0x81ce('0x1dd')){freeVariablesPredictive(_0x3722b1);loggerPredictive['info'](_0x81ce('0x1de'),'Dropped\x20calls\x20day',_0x5b2803,_0x81ce('0x26'),_0x3722b1[_0x81ce('0x40')]);}else if(_0x56c1a2<_0x3722b1[_0x81ce('0x112')]&&_0x3722b1[_0x81ce('0x1dc')]===_0x81ce('0x1dd')){freeVariablesPredictive(_0x3722b1);loggerPredictive['info']('[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]',_0x81ce('0x1df'),_0x56c1a2,_0x81ce('0x1e0'),_0x3722b1['predictiveIntervalErlangCallsDroppedCalls'],'startProgressive',_0x3722b1[_0x81ce('0x40')]);}else if(!ifInterval(_0x3722b1[_0x81ce('0x1da')],_0x3722b1[_0x81ce('0x26')])&&_[_0x81ce('0x3d')](_0x3722b1[_0x81ce('0x74')])&&!_[_0x81ce('0x3d')](_0x3722b1[_0x81ce('0x26')])){_0x3722b1['startPredictive']=moment()[_0x81ce('0x79')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive['info'](_0x3722b1[_0x81ce('0x40')],_0x81ce('0x1e1'),_0x3722b1['startPredictive']);this[_0x81ce('0xb5')](_0x3722b1[_0x81ce('0x1da')])['then'](this['getDataPredictive'](_0x3722b1))[_0x81ce('0x3b')](mergeDataErlangB(_0x3722b1))[_0x81ce('0x3b')](this[_0x81ce('0x1e2')](_0x3722b1))['catch'](loggerCatchPredictive(_0x81ce('0x1e3'),_0x3722b1));}else if(!ifInterval(_0x3722b1[_0x81ce('0x1da')],_0x3722b1[_0x81ce('0x74')])){_0x3722b1[_0x81ce('0x112')]=0x0;_0x3722b1[_0x81ce('0x74')]=moment()['format'](_0x81ce('0xf6'));loggerPredictive['info'](_0x3722b1[_0x81ce('0x40')],_0x81ce('0x1e4'),_0x3722b1['startPredictive']);clearInterval(_0x3722b1['handlePredictive']);_0x3722b1['handlePredictive']=undefined;this[_0x81ce('0xb5')](_0x3722b1[_0x81ce('0x1da')])[_0x81ce('0x3b')](this[_0x81ce('0x1e5')](_0x3722b1))[_0x81ce('0x3b')](mergeDataErlangB(_0x3722b1))[_0x81ce('0x3b')](this[_0x81ce('0x1e2')](_0x3722b1))[_0x81ce('0xaf')](loggerCatchPredictive(_0x81ce('0x1e6'),_0x3722b1));}else if(_0x3722b1[_0x81ce('0x6d')]&&_0x2db91e<_0x3722b1['predictiveIntervalAvailable']-_0x30e7ea){freeVariablesPredictive(_0x3722b1);loggerPredictive[_0x81ce('0x7c')](_0x3722b1[_0x81ce('0x40')],_0x81ce('0x1e7'),_0x2db91e,_0x81ce('0x1e8'),_0x3722b1['predictiveIntervalAvailable'],'-',_0x30e7ea,'=',_0x3722b1[_0x81ce('0x6d')]-_0x30e7ea,')');}else if(_0x3722b1[_0x81ce('0x6d')]&&_0x2db91e>_0x3722b1['predictiveIntervalAvailable']+_0xc53c55){freeVariablesPredictive(_0x3722b1);loggerPredictive[_0x81ce('0x7c')](_0x3722b1[_0x81ce('0x40')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x2db91e,_0x81ce('0x1e9'),_0x3722b1['predictiveIntervalAvailable'],'+',_0xc53c55,'=',_0x3722b1[_0x81ce('0x6d')]+_0xc53c55,')');}};Dialer['prototype']['getDataPredictive']=function(_0x202ed8){var _0x1a49bb=this;return function(_0x16f249){return new Promise(function(_0x84f311,_0x501c62){_[_0x81ce('0x8a')](_0x202ed8,_0x16f249[0x0]);if(checkGetDataPredictive(_0x16f249[0x0])){var _0x1d7e35=_0x202ed8['predictiveIntervalAvailable']=_0x202ed8['talking']+_0x202ed8[_0x81ce('0x4e')];var _0x18de73=_0x202ed8[_0x81ce('0x1da')]*0x3c;var _0x353d74=_0x16f249[0x0][_0x81ce('0x68')]+_0x16f249[0x0][_0x81ce('0x67')];var _0x1916f9=(_0x16f249[0x0]['predictiveIntervalAnsweredCalls']+_0x16f249[0x0][_0x81ce('0x6a')]+_0x16f249[0x0][_0x81ce('0x69')])/_0x16f249[0x0][_0x81ce('0x6e')];_0x202ed8[_0x81ce('0x6c')]=_0x1916f9>0x0?_0x1916f9:0x1;switch(_0x202ed8['dialPredictiveOptimization']){case _0x81ce('0x1dd'):var _0x32d68e=_0x202ed8[_0x81ce('0x1d1')]/0x64;return _0x1a49bb['abandonmentRate'](_0x1d7e35,_0x18de73,_0x353d74,_0x1916f9,_0x32d68e)['then'](function(_0x1a3d5c){return _0x84f311(_0x1a3d5c);});case _0x81ce('0x1ea'):var _0x43198b=_0x202ed8[_0x81ce('0x1d1')]/0x64;return _0x1a49bb[_0x81ce('0x1eb')](_0x1d7e35,_0x18de73,_0x353d74,_0x1916f9,_0x43198b)[_0x81ce('0x3b')](function(_0x3c14ea){return _0x84f311(_0x3c14ea);});default:return _0x501c62(msgResponse(_0x81ce('0x1ec'),_0x81ce('0x146'),'Unknown\x20Predictive'));}}else{return _0x501c62(msgResponse('[getDataPredictive]',_0x81ce('0x146'),'check\x20failure'));}});};};Dialer['prototype']['getDataPredictiveOld']=function(_0x497aa9){var _0x54d15a=this;return function(_0x44f884){return new Promise(function(_0x411886,_0x3a8f58){_['merge'](_0x497aa9,_0x44f884[0x0]);if(checkGetDataPredictive(_0x44f884[0x0])){loggerPredictive[_0x81ce('0x7c')](JSON[_0x81ce('0x78')](_0x44f884[0x0]));if(_0x497aa9[_0x81ce('0x1dc')]===_0x81ce('0x1dd')){return _0x54d15a[_0x81ce('0xbe')](_0x497aa9['id'])['then'](function(_0x33f01d){var _0x82c487=_0x497aa9[_0x81ce('0x1ed')]-_0x33f01d[0x0][_0x81ce('0x1ee')];var _0x40e212=_0x497aa9[_0x81ce('0x1da')]*0x3c;var _0x261fcc=_0x44f884[0x0]['predictiveIntervalAvgTalktime']+_0x44f884[0x0][_0x81ce('0x67')];var _0x263b45=(_0x44f884[0x0]['predictiveIntervalAnsweredCalls']+_0x44f884[0x0][_0x81ce('0x6a')]+_0x44f884[0x0][_0x81ce('0x69')])/_0x44f884[0x0][_0x81ce('0x6e')];var _0xc2eedc=_0x497aa9[_0x81ce('0x1d1')]/0x64;_0x497aa9[_0x81ce('0x1ef')]=_0x33f01d[0x0][_0x81ce('0x1ee')]||0x0;_0x497aa9[_0x81ce('0x6c')]=_0x263b45>0x0?_0x263b45:0x1;return _0x54d15a['abandonmentRate'](_0x82c487,_0x40e212,_0x261fcc,_0x263b45,_0xc2eedc);})[_0x81ce('0x3b')](function(_0x579646){return _0x411886(_0x579646);})[_0x81ce('0xaf')](function(_0x574dd5){return _0x3a8f58(msgResponse(_0x81ce('0x1f0'),_0x81ce('0x146'),JSON[_0x81ce('0x78')](_0x574dd5)));});}if(_0x497aa9[_0x81ce('0x1dc')]===_0x81ce('0x1ea')){return _0x54d15a[_0x81ce('0xbe')](_0x497aa9['id'])['then'](function(_0xc8cb52){var _0x50c3b8=_0x497aa9[_0x81ce('0x1ed')]-_0xc8cb52[0x0]['outboundQueuePauses'];var _0x3180a6=_0x497aa9['dialPredictiveInterval']*0x3c;var _0x267ff0=_0x44f884[0x0]['predictiveIntervalAvgTalktime']+_0x44f884[0x0][_0x81ce('0x67')];var _0x5990a8=(_0x44f884[0x0][_0x81ce('0x66')]+_0x44f884[0x0][_0x81ce('0x6a')]+_0x44f884[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x44f884[0x0]['predictiveIntervalTotalCalls'];var _0x164e7c=_0x497aa9[_0x81ce('0x1d1')]/0x64;_0x497aa9[_0x81ce('0x1ef')]=_0xc8cb52[0x0][_0x81ce('0x1ee')]||0x0;_0x497aa9['predictiveIntervalHitRate']=_0x5990a8>0x0?_0x5990a8:0x1;return _0x54d15a[_0x81ce('0x1eb')](_0x50c3b8,_0x3180a6,_0x267ff0,_0x5990a8,_0x164e7c);})[_0x81ce('0x3b')](function(_0x20ed0f){return _0x411886(_0x20ed0f);})[_0x81ce('0xaf')](function(_0x495e07){return _0x3a8f58(msgResponse('[CatchErlangB]',_0x81ce('0x146'),JSON[_0x81ce('0x78')](_0x495e07)));});}}else{return _0x3a8f58(msgResponse(_0x81ce('0x1ec'),_0x81ce('0x146'),_0x81ce('0x1f1')));}});};};Dialer[_0x81ce('0x1b')][_0x81ce('0x1e2')]=function(_0x5c3c24){var _0x1e40d4=this;return function(){var _0x1709cf=0x0;var _0x275754=Math[_0x81ce('0x1d5')](_0x5c3c24[_0x81ce('0x71')]*0x3e8);if(_0x275754>0x0){_0x275754=_0x275754<0x64?0x64:_0x275754;loggerPredictive[_0x81ce('0x7c')](_0x5c3c24[_0x81ce('0x40')],'one\x20call\x20every:',_0x275754,_0x81ce('0x47'));_0x5c3c24['handlePredictive']=setInterval(function(){_0x1e40d4[_0x81ce('0x8d')](_0x5c3c24);loggerPredictiveCalls[_0x81ce('0x7c')](_0x81ce('0x1f2'),_0x1709cf+=0x1);},_0x275754);}else{loggerPredictive[_0x81ce('0x7c')](_0x5c3c24[_0x81ce('0x40')],_0x81ce('0x1f3'));}};};Dialer['prototype'][_0x81ce('0x1f4')]=function(_0x17b4fc,_0x21f165){var _0x3e9930=this;return function(_0x90f2ae){if(_[_0x81ce('0x45')](_0x90f2ae)){if(_[_0x81ce('0xa4')](_0x21f165[_0x81ce('0xcc')])||!_0x21f165[_0x81ce('0x1f5')]){if(_0x17b4fc[_0x81ce('0x58')]==='booked'){_0x17b4fc[_0x81ce('0x12e')]=_[_0x81ce('0x3d')](_0x17b4fc[_0x81ce('0x12e')])?!![]:_0x17b4fc[_0x81ce('0x12e')];var _0x11c3fb=uuid['v4']();_0x3e9930['actions'][_0x11c3fb]=new Action(_0x17b4fc,_0x21f165,_0x11c3fb);loggerBooked['info'](_0x81ce('0x1f6'),_0x11c3fb,_0x81ce('0x1f7'),JSON['stringify'](_0x17b4fc['queueStatusComplete']),_0x81ce('0x1f8'),_0x17b4fc[_0x81ce('0x40')]);if(_0x17b4fc[_0x81ce('0x12e')]){_0x17b4fc['queueStatusComplete']=![];_0x3e9930[_0x81ce('0x12c')][_0x3e9930[_0x81ce('0xa2')][_0x11c3fb][_0x81ce('0xaa')]]=[];ami[_0x81ce('0xa5')]({'actionid':_0x11c3fb,'action':'queuestatus','queue':_0x17b4fc[_0x81ce('0x40')]})['catch'](function(){_0x3e9930[_0x81ce('0xa8')](_0x17b4fc);_0x3e9930[_0x81ce('0xb8')]({'active':![],'ContactId':_0x3e9930['actions'][_0x11c3fb][_0x81ce('0xca')],'ListId':_0x3e9930[_0x81ce('0xa2')][_0x11c3fb][_0x81ce('0xcb')],'VoiceQueueId':_0x3e9930['actions'][_0x11c3fb]['VoiceQueueId']||undefined,'CampaignId':_0x3e9930['actions'][_0x11c3fb]['CampaignId']||undefined})[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x1f9')));delete _0x3e9930[_0x81ce('0xa2')][_0x11c3fb];});}else{loggerBooked[_0x81ce('0x7c')]('[booked][checkContactBlack][else]',JSON[_0x81ce('0x78')](_0x17b4fc[_0x81ce('0x12e')]),_0x81ce('0x1f8'),_0x17b4fc[_0x81ce('0x40')]);_0x3e9930['updateOriginated'](_0x17b4fc);_0x3e9930[_0x81ce('0xb8')]({'active':![],'ContactId':_0x3e9930[_0x81ce('0xa2')][_0x11c3fb][_0x81ce('0xca')],'ListId':_0x3e9930[_0x81ce('0xa2')][_0x11c3fb]['ListId'],'VoiceQueueId':_0x3e9930[_0x81ce('0xa2')][_0x11c3fb]['VoiceQueueId']||undefined,'CampaignId':_0x3e9930[_0x81ce('0xa2')][_0x11c3fb][_0x81ce('0xf7')]||undefined})[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x1f9')));delete _0x3e9930[_0x81ce('0xa2')][_0x11c3fb];}}else{return _0x3e9930[_0x81ce('0x171')](_0x17b4fc,_0x21f165);}}else{if(getDiff(_0x21f165[_0x81ce('0x1fa')])<_0x17b4fc[_0x81ce('0x1fb')]*0x3c){if(_0x21f165[_0x81ce('0x15e')]&&!_0x21f165[_0x81ce('0x15e')][_0x81ce('0x1fc')]){_0x3e9930[_0x81ce('0x1f')][_0x81ce('0x131')](_0x21f165['id'])['finally'](function(){_0x3e9930['updateOriginated'](_0x17b4fc);});}else{_0x3e9930[_0x81ce('0xb9')]({'active':![]},_0x21f165['id'],0x1)[_0x81ce('0x1e')](function(){_0x3e9930[_0x81ce('0xa8')](_0x17b4fc);});}}else{_0x17b4fc[_0x81ce('0x65')]+=0x1;_0x3e9930[_0x81ce('0xa8')](_0x17b4fc);if(_0x17b4fc[_0x81ce('0x1fd')]){_0x3e9930[_0x81ce('0xb8')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x21f165['ContactId'],'ListId':_0x21f165['ListId'],'VoiceQueueId':_0x21f165['VoiceQueueId']||undefined,'CampaignId':_0x21f165[_0x81ce('0xf7')]||undefined})[_0x81ce('0xaf')](loggerCatch(_0x81ce('0x1fe')));_0x3e9930[_0x81ce('0xc1')](createObjHistory(_0x17b4fc,_0x21f165,_0x81ce('0x1ff'),0x17,_0x81ce('0x200')))[_0x81ce('0xaf')](loggerCatch('[Originate][HistoryDialRecallInQueue][historyCatch]'));}else{_0x3e9930[_0x81ce('0xc8')](createObjHistory(_0x17b4fc,_0x21f165,_0x81ce('0x201'),0x16,_0x81ce('0x202')),_0x81ce('0x203'),'[Originate][HistoryRecallClose]');}}}}else{_0x17b4fc[_0x81ce('0x5e')]+=0x1;_0x3e9930[_0x81ce('0xc8')](createObjHistory(_0x17b4fc,_0x21f165,'BLACKLIST',0xd,_0x81ce('0x204')),_0x81ce('0x205'),_0x81ce('0x206'));throw _0x81ce('0x207');}};};Dialer['prototype']['handleIvr']=function(_0x4abe39){var _0x5f3032=this;var _0x4a9649=_0x4abe39[_0x81ce('0x208')]-_0x4abe39[_0x81ce('0x6f')]-_0x4abe39['temp'];emitCampaignSummary(_0x4abe39);if(_0x4a9649>0x0){if(_0x4a9649>this['maxNumberOriginate']){_0x4a9649=this[_0x81ce('0x23')];}_0x4abe39[_0x81ce('0xbb')]+=_0x4a9649;this[_0x81ce('0xbd')](_0x4abe39['id'],_0x4a9649,_0x4abe39[_0x81ce('0x209')],_0x4abe39)[_0x81ce('0x3b')](function(_0x67a0ce){_0x4abe39[_0x81ce('0xbb')]-=_0x4a9649;_0x4abe39[_0x81ce('0xbb')]=_0x4abe39[_0x81ce('0xbb')]>0x0?_0x4abe39[_0x81ce('0xbb')]:0x0;if(!checkContactEmpty(_0x67a0ce)){_0x4abe39[_0x81ce('0x3e')]=_0x81ce('0x9a');logger['info']('[getContactCampaign2][Empty]'+_0x4abe39['name']);}else{_0x4abe39['originated']+=_0x67a0ce['length'];_0x4abe39[_0x81ce('0x3e')]=_0x81ce('0x20a');for(var _0x1c3798=0x0;_0x1c3798<_0x67a0ce['length'];_0x1c3798+=0x1){_0x4abe39[_0x81ce('0x20b')]+=0x1;if(_[_0x81ce('0xa4')](_0x67a0ce[_0x1c3798])||_[_0x81ce('0xa4')](_0x67a0ce[_0x1c3798][_0x81ce('0x18e')])||_['isNil'](_0x67a0ce[_0x1c3798][_0x81ce('0x175')])){_0x5f3032[_0x81ce('0xc6')]('[actionOriginate]\x20',_0x4abe39,_0x67a0ce[_0x1c3798]);}else{_0x5f3032[_0x81ce('0xb4')](_[_0x81ce('0xc9')](_0x67a0ce[_0x1c3798],[_0x81ce('0xf7'),_0x81ce('0x20c')]))[_0x81ce('0x3b')](_0x5f3032['checkContactBlack'](_0x4abe39,_0x67a0ce[_0x1c3798]))[_0x81ce('0xaf')](_0x5f3032[_0x81ce('0xc5')](_0x81ce('0x20d'),_0x4abe39));}}}})[_0x81ce('0xaf')](loggerGetContactDialer(_0x81ce('0x20e'),_0x4abe39,_0x4a9649));}};Dialer[_0x81ce('0x1b')]['handlePower']=function(_0x553441,_0x70443e){var _0xd34397=this;var _0xe6c3b3=[];var _0x29fcfa=_0x70443e>=0x1?_0x70443e:0x1;if(_0x553441['dialMethod']===_0x81ce('0x9')){_0x29fcfa=0x1;}var _0x2b20fe=Math['floor'](_0x553441['available']*_0x29fcfa)-_0x553441['originated']-_0x553441[_0x81ce('0xbb')];emitVoiceQueueSummary(_0x553441);if(_0x553441['dialLimitQueue']>0x0){var _0x2713eb=_0x553441[_0x81ce('0x20f')]-_0x553441[_0x81ce('0x6f')]-_0x553441[_0x81ce('0x53')]-_0x553441[_0x81ce('0xbb')]-_0x553441['pTalking'];if(_0x2b20fe>_0x2713eb){_0x2b20fe=_0x2713eb;}}if(_0x2b20fe>0x0){if(_0x553441[_0x81ce('0x58')]==='booked'){_0x2b20fe=0x1;}if(_0x2b20fe>this[_0x81ce('0x23')]){_0x2b20fe=this['maxNumberOriginate'];}_0x553441[_0x81ce('0xbb')]+=_0x2b20fe;for(var _0x21aefc in this[_0x81ce('0x21')]){if(typeof this[_0x81ce('0x21')][_0x21aefc]!=='undefined'){if(this[_0x81ce('0x21')][_0x21aefc][_0x81ce('0xde')]===_0x81ce('0x210')&&this[_0x81ce('0x21')][_0x21aefc]['status']===_0x81ce('0xd4')){_0xe6c3b3[_0x81ce('0x12d')](this['agents'][_0x21aefc]['id']);}}}this[_0x81ce('0xba')](_0x553441['id'],_0xe6c3b3,_0x2b20fe,_0x553441[_0x81ce('0x209')],_0x553441)[_0x81ce('0x3b')](function(_0x248b42){_0x553441[_0x81ce('0xbb')]-=_0x2b20fe;_0x553441[_0x81ce('0xbb')]=_0x553441[_0x81ce('0xbb')]>0x0?_0x553441[_0x81ce('0xbb')]:0x0;if(!checkContactEmpty(_0x248b42)){_0xd34397[_0x81ce('0xad')](_0x553441)[_0x81ce('0x3b')](sendMessageReschedule(_0x553441))[_0x81ce('0xaf')](loggerCatch(_0x81ce('0xb0')));}else{_0x553441[_0x81ce('0x6f')]+=_0x248b42[_0x81ce('0x15d')];_0x553441['message']=_0x553441[_0x81ce('0x58')]===_0x81ce('0x9')?_0x81ce('0x17d'):_0x81ce('0x20a');for(var _0x57e723=0x0;_0x57e723<_0x248b42[_0x81ce('0x15d')];_0x57e723+=0x1){if(_[_0x81ce('0xa4')](_0x248b42[_0x57e723])||_[_0x81ce('0xa4')](_0x248b42[_0x57e723][_0x81ce('0x18e')])||_[_0x81ce('0xa4')](_0x248b42[_0x57e723][_0x81ce('0x175')])){_0xd34397['emptyContact'](_0x81ce('0x211'),_0x553441,_0x248b42[_0x57e723]);}else{_0xd34397[_0x81ce('0xb1')](_[_0x81ce('0xc9')](_0x248b42[_0x57e723],[_0x81ce('0xcd'),_0x81ce('0x20c')]))['then'](_0xd34397[_0x81ce('0x1f4')](_0x553441,_0x248b42[_0x57e723]))[_0x81ce('0xaf')](_0xd34397['loggerHandler'](_0x81ce('0x211'),_0x553441));}}}})[_0x81ce('0xaf')](loggerGetContactDialer('[getContactDialer2]',_0x553441,_0x2b20fe));}};Dialer[_0x81ce('0x1b')][_0x81ce('0x8d')]=function(_0x7f8b6e){if(_0x7f8b6e[_0x81ce('0x20f')]>0x0){var _0x1e508f=_0x7f8b6e[_0x81ce('0x20f')]-_0x7f8b6e[_0x81ce('0x6f')]-_0x7f8b6e['talking'];if(_0x1e508f>0x0){this[_0x81ce('0x212')](_0x7f8b6e);}else{loggerPredictiveCalls[_0x81ce('0x7c')](_0x81ce('0x213'));}}else{this[_0x81ce('0x212')](_0x7f8b6e);}};Dialer['prototype'][_0x81ce('0x212')]=function(_0x51dd0f){var _0x37936=this;var _0x1be6d3=[];_0x51dd0f[_0x81ce('0x6f')]+=0x1;for(var _0xcd5d3f in this[_0x81ce('0x21')]){if(typeof this[_0x81ce('0x21')][_0xcd5d3f]!==_0x81ce('0x95')){if(this['agents'][_0xcd5d3f]['state']===_0x81ce('0x210')&&this[_0x81ce('0x21')][_0xcd5d3f][_0x81ce('0xd3')]===_0x81ce('0xd4')){_0x1be6d3[_0x81ce('0x12d')](this['agents'][_0xcd5d3f]['id']);}}}this[_0x81ce('0xba')](_0x51dd0f['id'],_0x1be6d3,0x1,_0x51dd0f['dialOrderByScheduledAt'],_0x51dd0f)[_0x81ce('0x3b')](function(_0x26491a){if(!checkContactEmpty(_0x26491a)){checkContactLowerLimitOriginate(_0x51dd0f,0x1,0x0);_0x37936[_0x81ce('0xad')](_0x51dd0f)[_0x81ce('0x3b')](sendMessageReschedule(_0x51dd0f))[_0x81ce('0xaf')](loggerCatch(_0x81ce('0xb0')));}else{_0x51dd0f[_0x81ce('0x3e')]=_0x81ce('0x20a');if(_[_0x81ce('0xa4')](_0x26491a[0x0])||_[_0x81ce('0xa4')](_0x26491a[0x0][_0x81ce('0x18e')])||_['isNil'](_0x26491a[0x0][_0x81ce('0x175')])){_0x37936[_0x81ce('0xc6')](_0x81ce('0x211'),_0x51dd0f,_0x26491a[0x0]);}else{_0x37936[_0x81ce('0xb1')](_[_0x81ce('0xc9')](_0x26491a[0x0],['VoiceQueueId','Contact.phone']))['then'](_0x37936[_0x81ce('0x1f4')](_0x51dd0f,_0x26491a[0x0]))[_0x81ce('0xaf')](_0x37936[_0x81ce('0xc5')](_0x81ce('0x214'),_0x51dd0f));}}})[_0x81ce('0xaf')](loggerGetContactDialer(_0x81ce('0x215'),_0x51dd0f,0x1));emitVoiceQueueSummary(_0x51dd0f);};Dialer[_0x81ce('0x1b')][_0x81ce('0x216')]=function(_0x2a6048,_0x423fdd,_0xfe2728,_0x1989d2,_0xb32acd,_0x3c7644){loggerPredictive[_0x81ce('0x7c')]('--------\x20Drop\x20Rate\x20--------');loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x217'),_0x2a6048);loggerPredictive[_0x81ce('0x7c')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x423fdd);loggerPredictive[_0x81ce('0x7c')]('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',_0xfe2728);loggerPredictive['info']('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',_0x1989d2);loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x218'),_0xb32acd);loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x82'));return new Promise(function(_0x4ab72a,_0x3f2e07){if(_0x2a6048<=0x0||isNaN(_0x2a6048)){return _0x3f2e07(msgResponse(_0x81ce('0x219'),_0x81ce('0x46'),'m\x20=\x20'+_0x2a6048));}if(_0xfe2728<=0x0||isNaN(_0xfe2728)){return _0x3f2e07(msgResponse(_0x81ce('0x219'),_0x81ce('0x46'),_0x81ce('0x21a')+_0xfe2728));}if(_0x1989d2<=0x0||isNaN(_0x1989d2)){return _0x3f2e07(msgResponse('[abandonmentRate]',_0x81ce('0x46'),'p\x20=\x20'+_0x1989d2));}if(_0x423fdd<=0x0||isNaN(_0x423fdd)){return _0x3f2e07(msgResponse('[abandonmentRate]',_0x81ce('0x46'),'interval\x20=\x20'+_0x423fdd));}if(_0xb32acd<=0x0||isNaN(_0xb32acd)){return _0x3f2e07(msgResponse(_0x81ce('0x219'),_0x81ce('0x46'),'Amax\x20=\x20'+_0xb32acd));}_0x3c7644=_0x3c7644||0x0;var _0x1f3526=0x1/_0xfe2728;var _0x4fd459=0x0;var _0x2e847b=0x0;var _0x5343d9=0x0;var _0x399a48=0x0;for(var _0x367fda=0x0;_0x5343d9<_0xb32acd;_0x367fda+=0x1){_0x2e847b=_0x367fda/_0x423fdd;_0x4fd459=(_0x1989d2*_0x2e847b+_0x3c7644)/_0x1f3526;_0x5343d9=erlangb(_0x4fd459,_0x2a6048);_0x399a48=_0x4fd459/_0x2a6048*(0x1-erlangb(_0x4fd459,_0x2a6048));}return _0x4ab72a({'erlangCalls':_0x367fda,'erlangCallToSecond':_0x423fdd/_0x367fda,'erlangAbandonmentRate':_0x5343d9,'erlangBusyFactor':_0x399a48});});};Dialer['prototype']['busyFactor']=function(_0x153134,_0x2f36e7,_0x4100d9,_0x17abf6,_0x334310,_0x4753a3){loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x21b'));loggerPredictive[_0x81ce('0x7c')]('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',_0x153134);loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x21c'),_0x2f36e7);loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x21d'),_0x4100d9);loggerPredictive['info'](_0x81ce('0x21e'),_0x17abf6);loggerPredictive['info'](_0x81ce('0x21f'),_0x334310);loggerPredictive[_0x81ce('0x7c')](_0x81ce('0x82'));return new Promise(function(_0x4d1df7,_0x21ece3){if(_0x153134<=0x0||isNaN(_0x153134)){return _0x21ece3(msgResponse(_0x81ce('0x220'),_0x81ce('0x46'),'m\x20=\x20'+_0x153134));}if(_0x4100d9<=0x0||isNaN(_0x4100d9)){return _0x21ece3(msgResponse(_0x81ce('0x220'),_0x81ce('0x46'),_0x81ce('0x21a')+_0x4100d9));}if(_0x17abf6<=0x0||isNaN(_0x17abf6)){return _0x21ece3(msgResponse(_0x81ce('0x220'),_0x81ce('0x46'),_0x81ce('0x221')+_0x17abf6));}if(_0x2f36e7<=0x0||isNaN(_0x2f36e7)){return _0x21ece3(msgResponse(_0x81ce('0x220'),_0x81ce('0x46'),'interval\x20=\x20'+_0x2f36e7));}if(_0x334310<=0x0||isNaN(_0x334310)){return _0x21ece3(msgResponse(_0x81ce('0x220'),'Error',_0x81ce('0x222')+_0x334310));}_0x4753a3=_0x4753a3||0x0;var _0x4f3c5b=0x1/_0x4100d9;var _0x3265f4=0x0;var _0x1ce6e7=0x0;var _0xd43e1=0x0;var _0x3a31d0=0x0;for(var _0x362885=0x0;_0x3a31d0<_0x334310;_0x362885+=0x1){_0x1ce6e7=_0x362885/_0x2f36e7;_0x3265f4=(_0x17abf6*_0x1ce6e7+_0x4753a3)/_0x4f3c5b;_0xd43e1=erlangb(_0x3265f4,_0x153134);_0x3a31d0=_0x3265f4/_0x153134*(0x1-erlangb(_0x3265f4,_0x153134));}return _0x4d1df7({'erlangCalls':_0x362885,'erlangCallToSecond':_0x2f36e7/_0x362885,'erlangAbandonmentRate':_0xd43e1,'erlangBusyFactor':_0x3a31d0});});};module[_0x81ce('0x223')]=Dialer;
\ No newline at end of file
index ff090a9..93e560b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69ee=['moment','milliseconds','diff','seconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','droptime','endtime','ringtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','CampaignId','originatecalleridnum','exports','lodash'];(function(_0x3c8c58,_0x50464d){var _0x1fc5eb=function(_0x35ec63){while(--_0x35ec63){_0x3c8c58['push'](_0x3c8c58['shift']());}};_0x1fc5eb(++_0x50464d);}(_0x69ee,0x167));var _0xe69e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x69ee[_0x1ac595];return _0x455fff;};'use strict';var util=require('util');var _=require(_0xe69e('0x0'));var moment=require(_0xe69e('0x1'));function getSeconds(_0x4bf0bf,_0x136418){var _0x17ee7a=moment(_0x4bf0bf)[_0xe69e('0x2')](0x0);var _0x4adfde=moment(_0x136418)[_0xe69e('0x2')](0x0);return _0x17ee7a[_0xe69e('0x3')](_0x4adfde,_0xe69e('0x4'));}function QueueCallerAbandon(_0x33033f,_0x3f7994){this[_0xe69e('0x5')]=_0x33033f[_0xe69e('0x5')];this['type']=_0x33033f[_0xe69e('0x6')];this[_0xe69e('0x7')]=_0x33033f[_0xe69e('0x6')]===_0xe69e('0x8')?_0xe69e('0x9'):_0x33033f['type'];this[_0xe69e('0xa')]=_0x33033f[_0xe69e('0xa')];this[_0xe69e('0xb')]=_0x33033f[_0xe69e('0xb')];this[_0xe69e('0xc')]=_0x33033f[_0xe69e('0xc')];this[_0xe69e('0xd')]=_0x33033f[_0xe69e('0xa')]+_0x33033f[_0xe69e('0xb')]+_0x33033f[_0xe69e('0xc')]+_0x33033f[_0xe69e('0xe')]+_0x33033f[_0xe69e('0xf')]+_0x33033f[_0xe69e('0x10')]+_0x33033f[_0xe69e('0x11')]+_0x33033f[_0xe69e('0x12')];this[_0xe69e('0xe')]=_0x33033f[_0xe69e('0xe')];this[_0xe69e('0xf')]=_0x33033f['countdropretry'];this['countabandonedretry']=_0x33033f['countabandonedretry'];this[_0xe69e('0x11')]=_0x33033f[_0xe69e('0x11')];this[_0xe69e('0x12')]=_0x33033f[_0xe69e('0x12')];this['uniqueid']=_0x3f7994['uniqueid'];this[_0xe69e('0x13')]=_0x33033f['name'];this[_0xe69e('0x14')]=_0x33033f['number'];this['starttime']=_0x33033f[_0xe69e('0x15')];this[_0xe69e('0x16')]=_0x33033f[_0xe69e('0x16')];this[_0xe69e('0x17')]=_0x33033f[_0xe69e('0x17')];this[_0xe69e('0x18')]=this[_0xe69e('0x17')];this[_0xe69e('0x19')]=getSeconds(_0x33033f[_0xe69e('0x16')],_0x33033f['starttime']);this['holdtime']=getSeconds(this['droptime'],_0x33033f[_0xe69e('0x16')]);this[_0xe69e('0x1a')]=0x0;this['queue']=_0x3f7994['queue'];this[_0xe69e('0x1b')]=_0x3f7994[_0xe69e('0x1c')];this[_0xe69e('0x1d')]=_0x3f7994[_0xe69e('0x1d')];this['callback']=_0x33033f[_0xe69e('0x1e')];this[_0xe69e('0x1f')]=_0x33033f[_0xe69e('0x1f')];this[_0xe69e('0x20')]=_0x33033f[_0xe69e('0x20')];this[_0xe69e('0x21')]=_0x33033f[_0xe69e('0x21')];this['ContactId']=_0x33033f[_0xe69e('0x22')];this[_0xe69e('0x23')]=_0x33033f['ListId'];this[_0xe69e('0x24')]=_0x33033f[_0xe69e('0x24')];this['VoiceQueueId']=_0x33033f['VoiceQueueId'];this['CampaignId']=_0x33033f[_0xe69e('0x25')];this[_0xe69e('0x26')]=_0x33033f[_0xe69e('0x26')]||'';this['originatecalleridname']=_0x33033f['originatecalleridname']||'';}module[_0xe69e('0x27')]=QueueCallerAbandon;
\ No newline at end of file
+var _0x2b48=['countagentrejectretry','countdropretry','uniqueid','calleridname','calleridnum','number','starttime','responsetime','droptime','ringtime','holdtime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','milliseconds','diff','seconds','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry'];(function(_0x36d203,_0x3653f3){var _0x2f9e62=function(_0x461a77){while(--_0x461a77){_0x36d203['push'](_0x36d203['shift']());}};_0x2f9e62(++_0x3653f3);}(_0x2b48,0xe6));var _0x82b4=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x2b48[_0x59ee6f];return _0x4c0979;};'use strict';var util=require(_0x82b4('0x0'));var _=require(_0x82b4('0x1'));var moment=require('moment');function getSeconds(_0x16796e,_0xc1c7e){var _0x4b1c52=moment(_0x16796e)[_0x82b4('0x2')](0x0);var _0x2945d3=moment(_0xc1c7e)[_0x82b4('0x2')](0x0);return _0x4b1c52[_0x82b4('0x3')](_0x2945d3,_0x82b4('0x4'));}function QueueCallerAbandon(_0x4d2759,_0x4f6e6d){this[_0x82b4('0x5')]=_0x4d2759[_0x82b4('0x5')];this['type']=_0x4d2759[_0x82b4('0x6')];this[_0x82b4('0x7')]=_0x4d2759[_0x82b4('0x6')]===_0x82b4('0x8')?'queue':_0x4d2759['type'];this[_0x82b4('0x9')]=_0x4d2759[_0x82b4('0x9')];this[_0x82b4('0xa')]=_0x4d2759['countcongestionretry'];this[_0x82b4('0xb')]=_0x4d2759[_0x82b4('0xb')];this[_0x82b4('0xc')]=_0x4d2759[_0x82b4('0x9')]+_0x4d2759[_0x82b4('0xa')]+_0x4d2759[_0x82b4('0xb')]+_0x4d2759[_0x82b4('0xd')]+_0x4d2759['countdropretry']+_0x4d2759[_0x82b4('0xe')]+_0x4d2759[_0x82b4('0xf')]+_0x4d2759[_0x82b4('0x10')];this[_0x82b4('0xd')]=_0x4d2759[_0x82b4('0xd')];this['countdropretry']=_0x4d2759[_0x82b4('0x11')];this[_0x82b4('0xe')]=_0x4d2759[_0x82b4('0xe')];this[_0x82b4('0xf')]=_0x4d2759['countmachineretry'];this['countagentrejectretry']=_0x4d2759['countagentrejectretry'];this[_0x82b4('0x12')]=_0x4f6e6d[_0x82b4('0x12')];this[_0x82b4('0x13')]=_0x4d2759['name'];this[_0x82b4('0x14')]=_0x4d2759[_0x82b4('0x15')];this[_0x82b4('0x16')]=_0x4d2759[_0x82b4('0x16')];this[_0x82b4('0x17')]=_0x4d2759['responsetime'];this[_0x82b4('0x18')]=_0x4d2759[_0x82b4('0x18')];this['endtime']=this[_0x82b4('0x18')];this[_0x82b4('0x19')]=getSeconds(_0x4d2759['responsetime'],_0x4d2759[_0x82b4('0x16')]);this[_0x82b4('0x1a')]=getSeconds(this[_0x82b4('0x18')],_0x4d2759[_0x82b4('0x17')]);this['talktime']=0x0;this['queue']=_0x4f6e6d['queue'];this[_0x82b4('0x1b')]=_0x4f6e6d[_0x82b4('0x1c')];this[_0x82b4('0x1d')]=_0x4f6e6d[_0x82b4('0x1d')];this[_0x82b4('0x1e')]=_0x4d2759[_0x82b4('0x1e')];this[_0x82b4('0x1f')]=_0x4d2759['callbackuniqueid'];this['callbackat']=_0x4d2759[_0x82b4('0x20')];this[_0x82b4('0x21')]=_0x4d2759[_0x82b4('0x21')];this[_0x82b4('0x22')]=_0x4d2759['ContactId'];this['ListId']=_0x4d2759['ListId'];this[_0x82b4('0x23')]=_0x4d2759['UserId'];this[_0x82b4('0x24')]=_0x4d2759[_0x82b4('0x24')];this[_0x82b4('0x25')]=_0x4d2759[_0x82b4('0x25')];this[_0x82b4('0x26')]=_0x4d2759[_0x82b4('0x26')]||'';this[_0x82b4('0x27')]=_0x4d2759['originatecalleridname']||'';}module[_0x82b4('0x28')]=QueueCallerAbandon;
\ No newline at end of file
index 64a7f64..268bc30 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(_0x794558,_0x52b0ec){var _0x4ab609=function(_0x3d0fd3){while(--_0x3d0fd3){_0x794558['push'](_0x794558['shift']());}};_0x4ab609(++_0x52b0ec);}(_0xa9e0,0x123));var _0x0a9e=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xa9e0[_0x29b609];return _0x54c952;};'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(_0x5738f5,_0xa079a5){var _0x5f04dc=function(_0xef49ba){while(--_0xef49ba){_0x5738f5['push'](_0x5738f5['shift']());}};_0x5f04dc(++_0xa079a5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xa9e0[_0x521929];return _0x632436;};'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 5ab1ac8..b4fe31c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd311=['info','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc','operation','status','localstationid','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','application/pdf','then','catch','error','\x20notify\x20','\x20receiveFax\x20','stringify','merge','pick','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','[Fax][Message][Error][Updated]','logger','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][Updated]','[Fax][Message][NoUpdate2]','syncHangup','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','checkTrunk','Trunk','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','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','ext','isNil','active','SIP/%s','reachable','isTrunkReachable','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20is\x20not\x20active','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','bluebird','uuid','path','tiff2pdf','./util/gs','../../../config/logger','fax','../ami','./rpcDb','./channel','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','newchannel','syncNewchannel','bind','varset','newstate','syncNewState','newexten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','originateresponse','prototype','context','hasOwnProperty','exten','uniqueid','channel','name','actions'];(function(_0x1d0aee,_0x2c4454){var _0x34ee2c=function(_0x6e3b9d){while(--_0x6e3b9d){_0x1d0aee['push'](_0x1d0aee['shift']());}};_0x34ee2c(++_0x2c4454);}(_0xd311,0x143));var _0x1d31=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd311[_0x20a584];return _0x4b41a8;};'use strict';var util=require(_0x1d31('0x0'));var _=require(_0x1d31('0x1'));var BPromise=require(_0x1d31('0x2'));var uuid=require(_0x1d31('0x3'));var moment=require('moment');var path=require(_0x1d31('0x4'));var tiff2pdf=require(_0x1d31('0x5'));var gs=require(_0x1d31('0x6'));var logger=require(_0x1d31('0x7'))(_0x1d31('0x8'));var ami=require(_0x1d31('0x9'));var rpcDb=require(_0x1d31('0xa'));var Channel=require(_0x1d31('0xb'));var ut=require('./util/util');var Action=require(_0x1d31('0xc'));var faxAccount=require(_0x1d31('0xd'));var attachment=require(_0x1d31('0xe'));var faxMessage=require(_0x1d31('0xf'));function Fax(_0x3389db){this[_0x1d31('0x10')]={};this[_0x1d31('0x11')]=_0x3389db['faxAccounts'];this[_0x1d31('0x12')]=_0x3389db['trunks'];this['actions']={};ami['on'](_0x1d31('0x13'),this[_0x1d31('0x14')][_0x1d31('0x15')](this));ami['on'](_0x1d31('0x16'),this['syncVarSet']['bind'](this));ami['on'](_0x1d31('0x17'),this[_0x1d31('0x18')][_0x1d31('0x15')](this));ami['on'](_0x1d31('0x19'),this['syncNewExten']['bind'](this));ami['on'](_0x1d31('0x1a'),this[_0x1d31('0x1b')][_0x1d31('0x15')](this));ami['on'](_0x1d31('0x1c'),this[_0x1d31('0x1d')][_0x1d31('0x15')](this));ami['on'](_0x1d31('0x1e'),this['syncHangup']['bind'](this));ami['on'](_0x1d31('0x1f'),this['syncOriginateResponse'][_0x1d31('0x15')](this));}Fax[_0x1d31('0x20')][_0x1d31('0x14')]=function(_0x3744e3){if(_0x3744e3[_0x1d31('0x21')]==='from-voip-provider'){for(var _0x25d3cb in this[_0x1d31('0x11')]){if(this[_0x1d31('0x11')][_0x1d31('0x22')](_0x25d3cb)){if(_0x3744e3[_0x1d31('0x23')]===this[_0x1d31('0x11')][_0x25d3cb]['localstationid']){this[_0x1d31('0x10')][_0x3744e3[_0x1d31('0x24')]]={};this[_0x1d31('0x10')][_0x3744e3['uniqueid']][_0x1d31('0x25')]=_0x3744e3[_0x1d31('0x25')];this[_0x1d31('0x10')][_0x3744e3[_0x1d31('0x24')]]['id']=this['faxAccounts'][_0x25d3cb]['id'];this[_0x1d31('0x10')][_0x3744e3['uniqueid']][_0x1d31('0x26')]=this[_0x1d31('0x11')][_0x25d3cb][_0x1d31('0x26')];logger['info'](_0x3744e3[_0x1d31('0x24')],'\x20syncNewchannel\x20');}}}}if(this[_0x1d31('0x27')][_0x3744e3[_0x1d31('0x24')]]){this[_0x1d31('0x10')][_0x3744e3[_0x1d31('0x24')]]={};this[_0x1d31('0x10')][_0x3744e3['uniqueid']][_0x1d31('0x25')]=_0x3744e3[_0x1d31('0x25')];logger[_0x1d31('0x28')](_0x3744e3[_0x1d31('0x24')],_0x1d31('0x29'));}};Fax[_0x1d31('0x20')]['syncVarSet']=function(_0x39929c){if(this['channels'][_0x39929c['uniqueid']]){for(var _0x37e30f in _0x39929c[_0x1d31('0x2a')]){if(_0x39929c[_0x1d31('0x2a')][_0x1d31('0x22')](_0x37e30f)){this[_0x1d31('0x10')][_0x39929c[_0x1d31('0x24')]][_0x37e30f]=_0x39929c[_0x1d31('0x2b')];}}}};Fax[_0x1d31('0x20')][_0x1d31('0x18')]=function(_0x32be57){if(this[_0x1d31('0x10')][_0x32be57[_0x1d31('0x24')]]){this[_0x1d31('0x10')][_0x32be57[_0x1d31('0x24')]]['channelstate']=_0x32be57[_0x1d31('0x2c')];this[_0x1d31('0x10')][_0x32be57[_0x1d31('0x24')]][_0x1d31('0x2d')]=_0x32be57['channelstatedesc'];}};Fax[_0x1d31('0x20')]['syncNewExten']=function(_0x4de037){if(this[_0x1d31('0x10')][_0x4de037['uniqueid']]){for(var _0x3b4738 in _0x4de037[_0x1d31('0x2a')]){if(_0x4de037[_0x1d31('0x2a')][_0x1d31('0x22')](_0x3b4738)){this['channels'][_0x4de037['uniqueid']][_0x3b4738]=_0x4de037['value'];}}}};Fax[_0x1d31('0x20')]['syncFaxStatus']=function(_0x3cd432){if(this[_0x1d31('0x10')][_0x3cd432[_0x1d31('0x24')]]){this[_0x1d31('0x10')][_0x3cd432[_0x1d31('0x24')]][_0x1d31('0x2e')]=_0x3cd432[_0x1d31('0x2e')];this[_0x1d31('0x10')][_0x3cd432[_0x1d31('0x24')]]['status']=_0x3cd432[_0x1d31('0x2f')];this[_0x1d31('0x10')][_0x3cd432[_0x1d31('0x24')]][_0x1d31('0x30')]=_0x3cd432[_0x1d31('0x30')];this[_0x1d31('0x10')][_0x3cd432['uniqueid']][_0x1d31('0x31')]=_0x3cd432[_0x1d31('0x31')];logger['info'](_0x3cd432['uniqueid'],_0x1d31('0x32'));}};Fax['prototype'][_0x1d31('0x1d')]=function(_0x2523aa){var _0xbc0a89=this;if(this['channels'][_0x2523aa[_0x1d31('0x24')]]){var _0x37562a=this[_0x1d31('0x10')][_0x2523aa[_0x1d31('0x24')]]['id'];this[_0x1d31('0x10')][_0x2523aa[_0x1d31('0x24')]][_0x1d31('0x33')]=_0x2523aa[_0x1d31('0x33')];this['channels'][_0x2523aa[_0x1d31('0x24')]][_0x1d31('0x34')]=_0x2523aa[_0x1d31('0x34')];this['channels'][_0x2523aa['uniqueid']][_0x1d31('0x30')]=_0x2523aa[_0x1d31('0x30')];this[_0x1d31('0x10')][_0x2523aa[_0x1d31('0x24')]][_0x1d31('0x35')]=_0x2523aa[_0x1d31('0x35')];this[_0x1d31('0x10')][_0x2523aa['uniqueid']][_0x1d31('0x36')]=_0x2523aa[_0x1d31('0x36')];this[_0x1d31('0x10')][_0x2523aa[_0x1d31('0x24')]][_0x1d31('0x31')]=_0x2523aa[_0x1d31('0x31')];this[_0x1d31('0x10')][_0x2523aa['uniqueid']][_0x1d31('0x37')]=_0x2523aa[_0x1d31('0x37')];if(this[_0x1d31('0x10')][_0x2523aa[_0x1d31('0x24')]][_0x1d31('0x34')]>0x0){tiff2pdf(_0x2523aa[_0x1d31('0x31')],_0x1d31('0x38'),function(_0x40525a){logger[_0x1d31('0x28')](_0x2523aa[_0x1d31('0x24')],_0x1d31('0x39'),_0x40525a[_0x1d31('0x3a')]);attachment[_0x1d31('0x3b')]({'name':path['parse'](_0x2523aa['filename'])[_0x1d31('0x26')],'basename':path[_0x1d31('0x3c')](_0x2523aa['filename'])[_0x1d31('0x26')]+_0x1d31('0x3d'),'type':_0x1d31('0x3e')})[_0x1d31('0x3f')](function(_0x316926){faxAccount['notify'](_0x37562a,{'from':_0x2523aa[_0x1d31('0x37')],'mapKey':_0x1d31('0x8'),'body':path[_0x1d31('0x3c')](_0x2523aa[_0x1d31('0x31')])[_0x1d31('0x26')]+_0x1d31('0x3d'),'AttachmentId':_0x316926['id']})[_0x1d31('0x40')](function(_0x2c72cc){logger[_0x1d31('0x41')](_0x2523aa['uniqueid'],_0x1d31('0x42'),JSON['stringify'](_0x2c72cc));});})['catch'](function(_0x4d43b9){logger[_0x1d31('0x41')](_0x2523aa[_0x1d31('0x24')],_0x1d31('0x43'),JSON[_0x1d31('0x44')](_0x4d43b9));});});}logger[_0x1d31('0x28')](_0x2523aa['uniqueid'],_0x1d31('0x43'));}};Fax[_0x1d31('0x20')]['syncOriginateResponse']=function(_0x5b2a99){if(this[_0x1d31('0x27')][_0x5b2a99[_0x1d31('0x24')]]){_[_0x1d31('0x45')](this[_0x1d31('0x10')][_0x5b2a99[_0x1d31('0x24')]],_[_0x1d31('0x46')](_0x5b2a99,[_0x1d31('0x47'),_0x1d31('0x48')]));}};function updateStatus(_0x50c123){if(_0x50c123[_0x1d31('0x49')]){faxMessage[_0x1d31('0x4a')](_0x50c123['AttachmentId'],{'failMessage':_0x1d31('0x4b')})['then'](function(_0x5061bb){ut['logger'](_0x1d31('0x4c'),_0x5061bb);})[_0x1d31('0x40')](function(_0x43ddfc){ut[_0x1d31('0x4d')](_0x1d31('0x4e'),_0x43ddfc);});}else{ut[_0x1d31('0x4d')](_0x1d31('0x4f'));}}Fax[_0x1d31('0x20')][_0x1d31('0x50')]=function(_0x39e7e6,_0x32a8a9,_0x19fbb8){var _0x22d0c7=this;var _0xe63781={};if(_0x32a8a9){_0xe63781={'read':_0x32a8a9};}else{_0xe63781={'failMessage':_0x19fbb8};}if(this[_0x1d31('0x27')][_0x39e7e6][_0x1d31('0x49')]){faxMessage[_0x1d31('0x4a')](this[_0x1d31('0x27')][_0x39e7e6][_0x1d31('0x49')],_0xe63781)['then'](function(_0x36a065){ut[_0x1d31('0x4d')](_0x1d31('0x51'),_0x36a065);})['catch'](function(_0x44ac4f){ut['logger']('[Fax][Message][NoUpdate1]',_0x44ac4f);})['finally'](function(){delete _0x22d0c7[_0x1d31('0x10')][_0x39e7e6];delete _0x22d0c7[_0x1d31('0x27')][_0x39e7e6];});}else{ut[_0x1d31('0x4d')](_0x1d31('0x52'));delete this['channels'][_0x39e7e6];delete this[_0x1d31('0x27')][_0x39e7e6];}};Fax[_0x1d31('0x20')][_0x1d31('0x53')]=function(_0xb39655){var _0x41fb8a=this;if(this[_0x1d31('0x10')][_0xb39655[_0x1d31('0x24')]]){if(this[_0x1d31('0x27')][_0xb39655[_0x1d31('0x24')]]){this[_0x1d31('0x10')][_0xb39655['uniqueid']]['id']=this[_0x1d31('0x27')][_0xb39655[_0x1d31('0x24')]]['id'];this[_0x1d31('0x10')][_0xb39655[_0x1d31('0x24')]][_0x1d31('0x26')]=this[_0x1d31('0x27')][_0xb39655[_0x1d31('0x24')]][_0x1d31('0x26')];}logger['info'](_0xb39655['uniqueid'],this['actions'][_0xb39655[_0x1d31('0x24')]]?_0x1d31('0x54'):_0x1d31('0x55'),JSON[_0x1d31('0x44')](this[_0x1d31('0x10')][_0xb39655[_0x1d31('0x24')]]));if(this[_0x1d31('0x27')][_0xb39655[_0x1d31('0x24')]]){if(this[_0x1d31('0x10')][_0xb39655[_0x1d31('0x24')]][_0x1d31('0x56')]>0x0&&this['channels'][_0xb39655['uniqueid']][_0x1d31('0x1a')]==='SUCCESS'){this[_0x1d31('0x50')](_0xb39655[_0x1d31('0x24')],!![]);}else{this[_0x1d31('0x50')](_0xb39655[_0x1d31('0x24')],![],this[_0x1d31('0x10')][_0xb39655[_0x1d31('0x24')]][_0x1d31('0x57')]?_0x1d31('0x58')+this[_0x1d31('0x10')][_0xb39655[_0x1d31('0x24')]][_0x1d31('0x57')]:_0x1d31('0x59'));}}}};Fax[_0x1d31('0x20')]['send']=function(_0x424521){var _0x2a3474=this;return new BPromise(function(_0x2e7b27,_0x5e9f93){_0x2a3474[_0x1d31('0x5a')](_0x424521,_0x2a3474[_0x1d31('0x11')][_0x424521[_0x1d31('0x5b')]])[_0x1d31('0x3f')](function(_0x2f9086){ut['logger'](_0x1d31('0x5c'),_0x2f9086);_0x2e7b27(ut[_0x1d31('0x3a')](_0x1d31('0x5d')));})[_0x1d31('0x40')](function(_0xce0810){ut[_0x1d31('0x4d')](_0x1d31('0x5e'),_0xce0810);updateStatus(_0x424521);_0x5e9f93(ut[_0x1d31('0x3a')]('Fax\x20failed'));});});};Fax[_0x1d31('0x20')]['checkAfterSend']=function(_0x4ffaf7){var _0x234254=this;return new BPromise(function(_0x3956ba,_0x26db1f){var _0x19f3c8=_0x234254[_0x1d31('0x5f')](_0x234254[_0x1d31('0x11')][_0x4ffaf7['FaxAccountId']][_0x1d31('0x60')],_0x4ffaf7);if(_0x19f3c8['isValid']){_0x3956ba(ut[_0x1d31('0x3a')](_0x1d31('0x61')));}else{_0x26db1f(ut[_0x1d31('0x3a')](_0x19f3c8[_0x1d31('0x3a')]));}});};function originate(_0x2583f7,_0xb892c6,_0x273b25){return new BPromise(function(_0x4ca2dc,_0xfb4bbf){if(_0x273b25){var _0x1bc12b=util[_0x1d31('0x62')](_0x1d31('0x63'),path[_0x1d31('0x3c')](_0x2583f7[_0x1d31('0x4')])['name'],_0x2583f7['path']);gs[_0x1d31('0x64')](_0x1bc12b)[_0x1d31('0x3f')](function(){_0x2583f7[_0x1d31('0x4')]=util[_0x1d31('0x62')]('%s/%s.tif',path[_0x1d31('0x3c')](_0x2583f7[_0x1d31('0x4')])[_0x1d31('0x65')],path['parse'](_0x2583f7[_0x1d31('0x4')])['name']);_0xb892c6[_0x1d31('0x66')]=_0x2583f7[_0x1d31('0x4')];ut['logger'](_0x1d31('0x67'),'');ami[_0x1d31('0x68')](ut[_0x1d31('0x69')](_0x2583f7,_0xb892c6))[_0x1d31('0x3f')](function(_0x1561a8){_0x4ca2dc(_0x1561a8);})['catch'](function(_0x43ffa2){_0xfb4bbf(_0x43ffa2);});})[_0x1d31('0x40')](function(_0x566e80){_0xfb4bbf(_0x566e80);});}else{ami[_0x1d31('0x68')](ut['variablesAction'](_0x2583f7,_0xb892c6))[_0x1d31('0x3f')](function(_0x4f5d38){_0x4ca2dc(_0x4f5d38);})['catch'](function(_0x5413fd){_0xfb4bbf(_0x5413fd);});}});}Fax[_0x1d31('0x20')]['execOriginate']=function(_0x55c52d,_0x301178){var _0xa686e7=this;return new BPromise(function(_0x2c99fc,_0x5b1158){var _0x593038=uuid['v4']();var _0x1749ad=ut[_0x1d31('0x6a')](_0x55c52d,_0x301178);_0xa686e7[_0x1d31('0x27')][_0x593038]=new Action(_0x593038,_0x301178,_0x55c52d);var _0x4ad17e=_0xa686e7['actions'][_0x593038];if(path[_0x1d31('0x3c')](_0x55c52d['path'])[_0x1d31('0x6b')]===_0x1d31('0x3d')){originate(_0x4ad17e,_0x1749ad,!![])[_0x1d31('0x3f')](function(_0x36e0d4){_0x2c99fc(_0x36e0d4);})['catch'](function(_0x26ebf4){_0x5b1158(_0x26ebf4);});}else{originate(_0x4ad17e,_0x1749ad,![])['then'](function(_0x1b462e){_0x2c99fc(_0x1b462e);})[_0x1d31('0x40')](function(_0x491310){_0x5b1158(_0x491310);});}});};Fax[_0x1d31('0x20')]['isTrunkReachable']=function(_0x4cb0a5){return!_[_0x1d31('0x6c')](_0x4cb0a5)&&!_['isNil'](_0x4cb0a5[_0x1d31('0x26')])&&!_[_0x1d31('0x6c')](_0x4cb0a5[_0x1d31('0x6d')])&&_0x4cb0a5[_0x1d31('0x6d')]&&!_[_0x1d31('0x6c')](this['trunks'][util[_0x1d31('0x62')](_0x1d31('0x6e'),_0x4cb0a5[_0x1d31('0x26')])])&&!_['isNil'](this[_0x1d31('0x12')][util[_0x1d31('0x62')](_0x1d31('0x6e'),_0x4cb0a5[_0x1d31('0x26')])][_0x1d31('0x2f')])&&(this[_0x1d31('0x12')][util[_0x1d31('0x62')]('SIP/%s',_0x4cb0a5['name'])][_0x1d31('0x2f')]===_0x1d31('0x6f')||this[_0x1d31('0x12')][util[_0x1d31('0x62')](_0x1d31('0x6e'),_0x4cb0a5['name'])][_0x1d31('0x2f')]==='unmonitored');};Fax[_0x1d31('0x20')][_0x1d31('0x5f')]=function(_0x419cda,_0xea02d0){if(!this[_0x1d31('0x70')](_0x419cda)){ut[_0x1d31('0x4d')](_0x1d31('0x71'),_[_0x1d31('0x6c')](_0x419cda)?'':_0x419cda[_0x1d31('0x26')]+_0x1d31('0x72'));return{'isValid':![],'message':'Trunk\x20not\x20working\x20correctly'};}if(_['isNil'](_0xea02d0['fax'])){ut[_0x1d31('0x4d')](_0x1d31('0x73'),JSON[_0x1d31('0x44')](_0xea02d0));return{'isValid':![],'message':_0x1d31('0x74')};}if(_[_0x1d31('0x6c')](_0xea02d0['path'])){ut[_0x1d31('0x4d')](_0x1d31('0x75'),JSON[_0x1d31('0x44')](_0xea02d0));return{'isValid':![],'message':_0x1d31('0x76')};}return{'isValid':!![],'message':_0x1d31('0x77')};};module[_0x1d31('0x78')]=Fax;
\ No newline at end of file
+var _0xb9b4=['channel','name','\x20syncNewchannel\x20','prototype','variable','value','channelstatedesc','operation','status','filename','info','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','application/pdf','then','notify','catch','error','stringify','\x20receiveFax\x20','merge','pick','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','actions','[Fax][Message][NoUpdate1]','\x20hangup\x20sendFile\x20','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','FaxAccountId','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkTrunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','path','execute','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','execOriginate','ext','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','Empty\x20Fax','Is\x20Valid','exports','util','lodash','uuid','moment','tiff2pdf','./util/gs','../../../config/logger','fax','./rpcDb','./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','newchannel','syncNewchannel','bind','varset','syncVarSet','syncNewState','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid'];(function(_0x1dda39,_0x221826){var _0x269408=function(_0x545613){while(--_0x545613){_0x1dda39['push'](_0x1dda39['shift']());}};_0x269408(++_0x221826);}(_0xb9b4,0xbd));var _0x4b9b=function(_0x4f8c98,_0x5ca2fd){_0x4f8c98=_0x4f8c98-0x0;var _0x37e0e7=_0xb9b4[_0x4f8c98];return _0x37e0e7;};'use strict';var util=require(_0x4b9b('0x0'));var _=require(_0x4b9b('0x1'));var BPromise=require('bluebird');var uuid=require(_0x4b9b('0x2'));var moment=require(_0x4b9b('0x3'));var path=require('path');var tiff2pdf=require(_0x4b9b('0x4'));var gs=require(_0x4b9b('0x5'));var logger=require(_0x4b9b('0x6'))(_0x4b9b('0x7'));var ami=require('../ami');var rpcDb=require(_0x4b9b('0x8'));var Channel=require(_0x4b9b('0x9'));var ut=require(_0x4b9b('0xa'));var Action=require(_0x4b9b('0xb'));var faxAccount=require(_0x4b9b('0xc'));var attachment=require(_0x4b9b('0xd'));var faxMessage=require(_0x4b9b('0xe'));function Fax(_0x43e12b){this[_0x4b9b('0xf')]={};this['faxAccounts']=_0x43e12b[_0x4b9b('0x10')];this[_0x4b9b('0x11')]=_0x43e12b[_0x4b9b('0x11')];this['actions']={};ami['on'](_0x4b9b('0x12'),this[_0x4b9b('0x13')][_0x4b9b('0x14')](this));ami['on'](_0x4b9b('0x15'),this[_0x4b9b('0x16')]['bind'](this));ami['on']('newstate',this[_0x4b9b('0x17')]['bind'](this));ami['on']('newexten',this['syncNewExten'][_0x4b9b('0x14')](this));ami['on'](_0x4b9b('0x18'),this[_0x4b9b('0x19')][_0x4b9b('0x14')](this));ami['on'](_0x4b9b('0x1a'),this[_0x4b9b('0x1b')][_0x4b9b('0x14')](this));ami['on'](_0x4b9b('0x1c'),this[_0x4b9b('0x1d')][_0x4b9b('0x14')](this));ami['on'](_0x4b9b('0x1e'),this[_0x4b9b('0x1f')][_0x4b9b('0x14')](this));}Fax['prototype'][_0x4b9b('0x13')]=function(_0x33a09b){if(_0x33a09b['context']===_0x4b9b('0x20')){for(var _0x49f625 in this[_0x4b9b('0x10')]){if(this[_0x4b9b('0x10')][_0x4b9b('0x21')](_0x49f625)){if(_0x33a09b[_0x4b9b('0x22')]===this['faxAccounts'][_0x49f625][_0x4b9b('0x23')]){this[_0x4b9b('0xf')][_0x33a09b[_0x4b9b('0x24')]]={};this['channels'][_0x33a09b['uniqueid']][_0x4b9b('0x25')]=_0x33a09b[_0x4b9b('0x25')];this[_0x4b9b('0xf')][_0x33a09b[_0x4b9b('0x24')]]['id']=this[_0x4b9b('0x10')][_0x49f625]['id'];this[_0x4b9b('0xf')][_0x33a09b['uniqueid']][_0x4b9b('0x26')]=this[_0x4b9b('0x10')][_0x49f625][_0x4b9b('0x26')];logger['info'](_0x33a09b[_0x4b9b('0x24')],_0x4b9b('0x27'));}}}}if(this['actions'][_0x33a09b[_0x4b9b('0x24')]]){this[_0x4b9b('0xf')][_0x33a09b['uniqueid']]={};this['channels'][_0x33a09b[_0x4b9b('0x24')]]['channel']=_0x33a09b[_0x4b9b('0x25')];logger['info'](_0x33a09b[_0x4b9b('0x24')],_0x4b9b('0x27'));}};Fax[_0x4b9b('0x28')][_0x4b9b('0x16')]=function(_0x593a69){if(this[_0x4b9b('0xf')][_0x593a69[_0x4b9b('0x24')]]){for(var _0x543ea7 in _0x593a69[_0x4b9b('0x29')]){if(_0x593a69[_0x4b9b('0x29')][_0x4b9b('0x21')](_0x543ea7)){this[_0x4b9b('0xf')][_0x593a69['uniqueid']][_0x543ea7]=_0x593a69[_0x4b9b('0x2a')];}}}};Fax[_0x4b9b('0x28')][_0x4b9b('0x17')]=function(_0x2a5bab){if(this[_0x4b9b('0xf')][_0x2a5bab[_0x4b9b('0x24')]]){this['channels'][_0x2a5bab[_0x4b9b('0x24')]]['channelstate']=_0x2a5bab['channelstate'];this['channels'][_0x2a5bab[_0x4b9b('0x24')]][_0x4b9b('0x2b')]=_0x2a5bab[_0x4b9b('0x2b')];}};Fax[_0x4b9b('0x28')]['syncNewExten']=function(_0x1a44f0){if(this[_0x4b9b('0xf')][_0x1a44f0['uniqueid']]){for(var _0x2da51b in _0x1a44f0[_0x4b9b('0x29')]){if(_0x1a44f0['variable'][_0x4b9b('0x21')](_0x2da51b)){this[_0x4b9b('0xf')][_0x1a44f0['uniqueid']][_0x2da51b]=_0x1a44f0[_0x4b9b('0x2a')];}}}};Fax[_0x4b9b('0x28')]['syncFaxStatus']=function(_0x1156dc){if(this['channels'][_0x1156dc[_0x4b9b('0x24')]]){this[_0x4b9b('0xf')][_0x1156dc[_0x4b9b('0x24')]][_0x4b9b('0x2c')]=_0x1156dc[_0x4b9b('0x2c')];this[_0x4b9b('0xf')][_0x1156dc[_0x4b9b('0x24')]][_0x4b9b('0x2d')]=_0x1156dc['status'];this[_0x4b9b('0xf')][_0x1156dc['uniqueid']][_0x4b9b('0x23')]=_0x1156dc['localstationid'];this[_0x4b9b('0xf')][_0x1156dc[_0x4b9b('0x24')]][_0x4b9b('0x2e')]=_0x1156dc[_0x4b9b('0x2e')];logger[_0x4b9b('0x2f')](_0x1156dc[_0x4b9b('0x24')],_0x4b9b('0x30'));}};Fax['prototype'][_0x4b9b('0x1b')]=function(_0x27166b){var _0x12d88b=this;if(this[_0x4b9b('0xf')][_0x27166b[_0x4b9b('0x24')]]){var _0x42af3d=this[_0x4b9b('0xf')][_0x27166b[_0x4b9b('0x24')]]['id'];this['channels'][_0x27166b[_0x4b9b('0x24')]][_0x4b9b('0x31')]=_0x27166b[_0x4b9b('0x31')];this['channels'][_0x27166b[_0x4b9b('0x24')]]['pagestransferred']=_0x27166b[_0x4b9b('0x32')];this[_0x4b9b('0xf')][_0x27166b[_0x4b9b('0x24')]][_0x4b9b('0x23')]=_0x27166b[_0x4b9b('0x23')];this[_0x4b9b('0xf')][_0x27166b[_0x4b9b('0x24')]][_0x4b9b('0x33')]=_0x27166b[_0x4b9b('0x33')];this[_0x4b9b('0xf')][_0x27166b[_0x4b9b('0x24')]][_0x4b9b('0x34')]=_0x27166b[_0x4b9b('0x34')];this[_0x4b9b('0xf')][_0x27166b['uniqueid']][_0x4b9b('0x2e')]=_0x27166b['filename'];this[_0x4b9b('0xf')][_0x27166b[_0x4b9b('0x24')]][_0x4b9b('0x35')]=_0x27166b['calleridnum'];if(this[_0x4b9b('0xf')][_0x27166b[_0x4b9b('0x24')]][_0x4b9b('0x32')]>0x0){tiff2pdf(_0x27166b[_0x4b9b('0x2e')],_0x4b9b('0x36'),function(_0x56e03b){logger[_0x4b9b('0x2f')](_0x27166b['uniqueid'],_0x4b9b('0x37'),_0x56e03b[_0x4b9b('0x38')]);attachment[_0x4b9b('0x39')]({'name':path['parse'](_0x27166b[_0x4b9b('0x2e')])[_0x4b9b('0x26')],'basename':path[_0x4b9b('0x3a')](_0x27166b['filename'])['name']+_0x4b9b('0x3b'),'type':_0x4b9b('0x3c')})[_0x4b9b('0x3d')](function(_0x2b3b63){faxAccount[_0x4b9b('0x3e')](_0x42af3d,{'from':_0x27166b[_0x4b9b('0x35')],'mapKey':_0x4b9b('0x7'),'body':path[_0x4b9b('0x3a')](_0x27166b['filename'])[_0x4b9b('0x26')]+_0x4b9b('0x3b'),'AttachmentId':_0x2b3b63['id']})[_0x4b9b('0x3f')](function(_0x322a65){logger[_0x4b9b('0x40')](_0x27166b[_0x4b9b('0x24')],'\x20notify\x20',JSON[_0x4b9b('0x41')](_0x322a65));});})['catch'](function(_0x9b4a68){logger[_0x4b9b('0x40')](_0x27166b[_0x4b9b('0x24')],_0x4b9b('0x42'),JSON[_0x4b9b('0x41')](_0x9b4a68));});});}logger['info'](_0x27166b[_0x4b9b('0x24')],'\x20receiveFax\x20');}};Fax[_0x4b9b('0x28')][_0x4b9b('0x1f')]=function(_0x1a135d){if(this['actions'][_0x1a135d[_0x4b9b('0x24')]]){_[_0x4b9b('0x43')](this[_0x4b9b('0xf')][_0x1a135d[_0x4b9b('0x24')]],_[_0x4b9b('0x44')](_0x1a135d,['response',_0x4b9b('0x45')]));}};function updateStatus(_0x162f93){if(_0x162f93[_0x4b9b('0x46')]){faxMessage[_0x4b9b('0x47')](_0x162f93[_0x4b9b('0x46')],{'failMessage':_0x4b9b('0x48')})[_0x4b9b('0x3d')](function(_0x288bae){ut[_0x4b9b('0x49')]('[Fax][Message][Error][Updated]',_0x288bae);})[_0x4b9b('0x3f')](function(_0x2d4209){ut[_0x4b9b('0x49')](_0x4b9b('0x4a'),_0x2d4209);});}else{ut['logger'](_0x4b9b('0x4b'));}}Fax[_0x4b9b('0x28')][_0x4b9b('0x4c')]=function(_0x37ee3a,_0x30a33f,_0x551b19){var _0x36f476=this;var _0x34b28e={};if(_0x30a33f){_0x34b28e={'read':_0x30a33f};}else{_0x34b28e={'failMessage':_0x551b19};}if(this[_0x4b9b('0x4d')][_0x37ee3a]['AttachmentId']){faxMessage['update'](this[_0x4b9b('0x4d')][_0x37ee3a]['AttachmentId'],_0x34b28e)[_0x4b9b('0x3d')](function(_0x783a83){ut['logger']('[Fax][Message][Updated]',_0x783a83);})[_0x4b9b('0x3f')](function(_0x32c40c){ut[_0x4b9b('0x49')](_0x4b9b('0x4e'),_0x32c40c);})['finally'](function(){delete _0x36f476[_0x4b9b('0xf')][_0x37ee3a];delete _0x36f476[_0x4b9b('0x4d')][_0x37ee3a];});}else{ut[_0x4b9b('0x49')]('[Fax][Message][NoUpdate2]');delete this[_0x4b9b('0xf')][_0x37ee3a];delete this[_0x4b9b('0x4d')][_0x37ee3a];}};Fax[_0x4b9b('0x28')][_0x4b9b('0x1d')]=function(_0x3bfe4d){var _0x2d0af2=this;if(this[_0x4b9b('0xf')][_0x3bfe4d['uniqueid']]){if(this[_0x4b9b('0x4d')][_0x3bfe4d['uniqueid']]){this[_0x4b9b('0xf')][_0x3bfe4d[_0x4b9b('0x24')]]['id']=this[_0x4b9b('0x4d')][_0x3bfe4d[_0x4b9b('0x24')]]['id'];this['channels'][_0x3bfe4d[_0x4b9b('0x24')]]['name']=this[_0x4b9b('0x4d')][_0x3bfe4d[_0x4b9b('0x24')]]['name'];}logger['info'](_0x3bfe4d[_0x4b9b('0x24')],this[_0x4b9b('0x4d')][_0x3bfe4d[_0x4b9b('0x24')]]?_0x4b9b('0x4f'):'\x20hangup\x20faxRiceive\x20',JSON[_0x4b9b('0x41')](this[_0x4b9b('0xf')][_0x3bfe4d[_0x4b9b('0x24')]]));if(this[_0x4b9b('0x4d')][_0x3bfe4d['uniqueid']]){if(this[_0x4b9b('0xf')][_0x3bfe4d[_0x4b9b('0x24')]]['faxpages']>0x0&&this['channels'][_0x3bfe4d['uniqueid']][_0x4b9b('0x18')]==='SUCCESS'){this[_0x4b9b('0x4c')](_0x3bfe4d[_0x4b9b('0x24')],!![]);}else{this[_0x4b9b('0x4c')](_0x3bfe4d[_0x4b9b('0x24')],![],this[_0x4b9b('0xf')][_0x3bfe4d[_0x4b9b('0x24')]][_0x4b9b('0x50')]?_0x4b9b('0x51')+this[_0x4b9b('0xf')][_0x3bfe4d[_0x4b9b('0x24')]]['faxstatusstring']:_0x4b9b('0x52'));}}}};Fax['prototype']['send']=function(_0x503f5e){var _0x3596f3=this;return new BPromise(function(_0x305cf9,_0x3acbc7){_0x3596f3['execOriginate'](_0x503f5e,_0x3596f3['faxAccounts'][_0x503f5e[_0x4b9b('0x53')]])[_0x4b9b('0x3d')](function(_0x466998){ut[_0x4b9b('0x49')]('[Fax][execOriginate][success]',_0x466998);_0x305cf9(ut[_0x4b9b('0x38')](_0x4b9b('0x54')));})[_0x4b9b('0x3f')](function(_0x582348){ut[_0x4b9b('0x49')](_0x4b9b('0x55'),_0x582348);updateStatus(_0x503f5e);_0x3acbc7(ut['message'](_0x4b9b('0x56')));});});};Fax['prototype']['checkAfterSend']=function(_0x2f44d1){var _0x3be0a0=this;return new BPromise(function(_0x272bc8,_0x58cda1){var _0x2fdeae=_0x3be0a0[_0x4b9b('0x57')](_0x3be0a0[_0x4b9b('0x10')][_0x2f44d1[_0x4b9b('0x53')]]['Trunk'],_0x2f44d1);if(_0x2fdeae[_0x4b9b('0x58')]){_0x272bc8(ut[_0x4b9b('0x38')](_0x4b9b('0x59')));}else{_0x58cda1(ut[_0x4b9b('0x38')](_0x2fdeae[_0x4b9b('0x38')]));}});};function originate(_0x1c60d8,_0x54cbf7,_0x3c9d09){return new BPromise(function(_0x572a53,_0x166b32){if(_0x3c9d09){var _0x52bae8=util[_0x4b9b('0x5a')](_0x4b9b('0x5b'),path[_0x4b9b('0x3a')](_0x1c60d8[_0x4b9b('0x5c')])[_0x4b9b('0x26')],_0x1c60d8[_0x4b9b('0x5c')]);gs[_0x4b9b('0x5d')](_0x52bae8)[_0x4b9b('0x3d')](function(){_0x1c60d8[_0x4b9b('0x5c')]=util[_0x4b9b('0x5a')](_0x4b9b('0x5e'),path[_0x4b9b('0x3a')](_0x1c60d8[_0x4b9b('0x5c')])[_0x4b9b('0x5f')],path[_0x4b9b('0x3a')](_0x1c60d8[_0x4b9b('0x5c')])[_0x4b9b('0x26')]);_0x54cbf7[_0x4b9b('0x60')]=_0x1c60d8['path'];ut[_0x4b9b('0x49')](_0x4b9b('0x61'),'');ami[_0x4b9b('0x62')](ut['variablesAction'](_0x1c60d8,_0x54cbf7))[_0x4b9b('0x3d')](function(_0x6d05e){_0x572a53(_0x6d05e);})[_0x4b9b('0x3f')](function(_0x2b8053){_0x166b32(_0x2b8053);});})[_0x4b9b('0x3f')](function(_0x2742ed){_0x166b32(_0x2742ed);});}else{ami[_0x4b9b('0x62')](ut[_0x4b9b('0x63')](_0x1c60d8,_0x54cbf7))['then'](function(_0x3ab9a5){_0x572a53(_0x3ab9a5);})[_0x4b9b('0x3f')](function(_0x53309f){_0x166b32(_0x53309f);});}});}Fax[_0x4b9b('0x28')][_0x4b9b('0x64')]=function(_0x4532ac,_0x4b6005){var _0x478ad6=this;return new BPromise(function(_0x23a4f8,_0xfa115f){var _0x1e8435=uuid['v4']();var _0x2607df=ut['addVariables'](_0x4532ac,_0x4b6005);_0x478ad6[_0x4b9b('0x4d')][_0x1e8435]=new Action(_0x1e8435,_0x4b6005,_0x4532ac);var _0x32f5cb=_0x478ad6['actions'][_0x1e8435];if(path[_0x4b9b('0x3a')](_0x4532ac['path'])[_0x4b9b('0x65')]===_0x4b9b('0x3b')){originate(_0x32f5cb,_0x2607df,!![])[_0x4b9b('0x3d')](function(_0x436bf5){_0x23a4f8(_0x436bf5);})[_0x4b9b('0x3f')](function(_0x3157cf){_0xfa115f(_0x3157cf);});}else{originate(_0x32f5cb,_0x2607df,![])[_0x4b9b('0x3d')](function(_0x208f6a){_0x23a4f8(_0x208f6a);})['catch'](function(_0x45fdbb){_0xfa115f(_0x45fdbb);});}});};Fax['prototype']['isTrunkReachable']=function(_0xb1c970){return!_[_0x4b9b('0x66')](_0xb1c970)&&!_[_0x4b9b('0x66')](_0xb1c970[_0x4b9b('0x26')])&&!_[_0x4b9b('0x66')](_0xb1c970[_0x4b9b('0x67')])&&_0xb1c970[_0x4b9b('0x67')]&&!_[_0x4b9b('0x66')](this[_0x4b9b('0x11')][util[_0x4b9b('0x5a')](_0x4b9b('0x68'),_0xb1c970[_0x4b9b('0x26')])])&&!_['isNil'](this[_0x4b9b('0x11')][util['format'](_0x4b9b('0x68'),_0xb1c970[_0x4b9b('0x26')])][_0x4b9b('0x2d')])&&(this[_0x4b9b('0x11')][util[_0x4b9b('0x5a')](_0x4b9b('0x68'),_0xb1c970[_0x4b9b('0x26')])][_0x4b9b('0x2d')]===_0x4b9b('0x69')||this['trunks'][util['format']('SIP/%s',_0xb1c970[_0x4b9b('0x26')])][_0x4b9b('0x2d')]===_0x4b9b('0x6a'));};Fax[_0x4b9b('0x28')]['checkTrunk']=function(_0x3802be,_0x52e5a2){if(!this['isTrunkReachable'](_0x3802be)){ut[_0x4b9b('0x49')](_0x4b9b('0x6b'),_[_0x4b9b('0x66')](_0x3802be)?'':_0x3802be[_0x4b9b('0x26')]+_0x4b9b('0x6c'));return{'isValid':![],'message':_0x4b9b('0x6d')};}if(_[_0x4b9b('0x66')](_0x52e5a2['fax'])){ut['logger']('[Fax][checkTrunk][Empty\x20Fax]',JSON[_0x4b9b('0x41')](_0x52e5a2));return{'isValid':![],'message':_0x4b9b('0x6e')};}if(_[_0x4b9b('0x66')](_0x52e5a2[_0x4b9b('0x5c')])){ut[_0x4b9b('0x49')]('[Fax][checkTrunk][Empty\x20path]',JSON[_0x4b9b('0x41')](_0x52e5a2));return{'isValid':![],'message':'Empty\x20path'};}return{'isValid':!![],'message':_0x4b9b('0x6f')};};module[_0x4b9b('0x70')]=Fax;
\ No newline at end of file
index 0de6fb4..b3d408e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82da=['preview','lodash','../rpc/faxAccount','error','inspect','notify','resolve','catch','[Notify]\x20','bluebird','../../../config/logger'];(function(_0xb7b0e6,_0x23e3c6){var _0x4de7e3=function(_0x2c7be8){while(--_0x2c7be8){_0xb7b0e6['push'](_0xb7b0e6['shift']());}};_0x4de7e3(++_0x23e3c6);}(_0x82da,0x127));var _0xa82d=function(_0xdc37a1,_0x53ebb9){_0xdc37a1=_0xdc37a1-0x0;var _0x99b4fe=_0x82da[_0xdc37a1];return _0x99b4fe;};'use strict';var util=require('util');var BPromise=require(_0xa82d('0x0'));var logger=require(_0xa82d('0x1'))(_0xa82d('0x2'));var _=require(_0xa82d('0x3'));var faxAccount=require(_0xa82d('0x4'));function loggerCatch(_0x5ed491){return function(_0x13fa54){logger[_0xa82d('0x5')](_0x5ed491,util[_0xa82d('0x6')](_0x13fa54,{'showHidden':![],'depth':null}));};}exports[_0xa82d('0x7')]=function(_0x31ec76,_0x22d9a0){return BPromise[_0xa82d('0x8')]()['then'](faxAccount['notify'](_0x31ec76,_0x22d9a0))[_0xa82d('0x9')](loggerCatch(_0xa82d('0xa')));};
\ No newline at end of file
+var _0x0a1d=['then','notify','catch','[Notify]\x20','bluebird','../../../config/logger','preview','lodash','../rpc/faxAccount','error'];(function(_0x1a36a5,_0x746928){var _0x746243=function(_0x481966){while(--_0x481966){_0x1a36a5['push'](_0x1a36a5['shift']());}};_0x746243(++_0x746928);}(_0x0a1d,0x1da));var _0xd0a1=function(_0x4cc6ce,_0xc79dbd){_0x4cc6ce=_0x4cc6ce-0x0;var _0x522e9d=_0x0a1d[_0x4cc6ce];return _0x522e9d;};'use strict';var util=require('util');var BPromise=require(_0xd0a1('0x0'));var logger=require(_0xd0a1('0x1'))(_0xd0a1('0x2'));var _=require(_0xd0a1('0x3'));var faxAccount=require(_0xd0a1('0x4'));function loggerCatch(_0x1c5c64){return function(_0x26c079){logger[_0xd0a1('0x5')](_0x1c5c64,util['inspect'](_0x26c079,{'showHidden':![],'depth':null}));};}exports['notify']=function(_0x199c76,_0x4e2d04){return BPromise['resolve']()[_0xd0a1('0x6')](faxAccount[_0xd0a1('0x7')](_0x199c76,_0x4e2d04))[_0xd0a1('0x8')](loggerCatch(_0xd0a1('0x9')));};
\ No newline at end of file
index 6f59f86..f67ba38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca96=['child_process','exec','execute','info','Exec\x20gs','\x20Error\x20:','inspect','util','../../../../config/logger','bluebird'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xca96,0xe3));var _0x6ca9=function(_0x2da1d1,_0x2f44eb){_0x2da1d1=_0x2da1d1-0x0;var _0x3d534e=_0xca96[_0x2da1d1];return _0x3d534e;};'use strict';var util=require(_0x6ca9('0x0'));var logger=require(_0x6ca9('0x1'))('fax');var BPromise=require(_0x6ca9('0x2'));var exec=require(_0x6ca9('0x3'))[_0x6ca9('0x4')];exports[_0x6ca9('0x5')]=function(_0x27a265){return new BPromise(function(_0x2de899,_0x1defe5){exec(_0x27a265,function(_0x4d626c,_0x26829a,_0x281698){logger[_0x6ca9('0x6')](_0x6ca9('0x7'),_0x26829a);if(_0x4d626c){logger[_0x6ca9('0x6')](_0x6ca9('0x7'),_0x6ca9('0x8'),util[_0x6ca9('0x9')](_0x4d626c,{'showHidden':![],'depth':null}),_0x26829a,_0x281698);_0x1defe5(_0x4d626c);}_0x2de899(_0x26829a);});});};
\ No newline at end of file
+var _0x58ef=['execute','Exec\x20gs','info','inspect','util','../../../../config/logger','fax','bluebird','child_process','exec'];(function(_0x201b36,_0x96abad){var _0x1c986c=function(_0x2e4573){while(--_0x2e4573){_0x201b36['push'](_0x201b36['shift']());}};_0x1c986c(++_0x96abad);}(_0x58ef,0x72));var _0xf58e=function(_0x3a83a2,_0x525de1){_0x3a83a2=_0x3a83a2-0x0;var _0x36a4be=_0x58ef[_0x3a83a2];return _0x36a4be;};'use strict';var util=require(_0xf58e('0x0'));var logger=require(_0xf58e('0x1'))(_0xf58e('0x2'));var BPromise=require(_0xf58e('0x3'));var exec=require(_0xf58e('0x4'))[_0xf58e('0x5')];exports[_0xf58e('0x6')]=function(_0x26d397){return new BPromise(function(_0x21daf,_0x2782a2){exec(_0x26d397,function(_0x15cbb4,_0x4404be,_0xdda66c){logger['info'](_0xf58e('0x7'),_0x4404be);if(_0x15cbb4){logger[_0xf58e('0x8')](_0xf58e('0x7'),'\x20Error\x20:',util[_0xf58e('0x9')](_0x15cbb4,{'showHidden':![],'depth':null}),_0x4404be,_0xdda66c);_0x2782a2(_0x15cbb4);}_0x21daf(_0x4404be);});});};
\ No newline at end of file
index 2922dfe..1b786b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1218=['inspect','headerinfo','minrate','maxrate','\x22%s\x22','modem','gateway','faxdetect','localstationid','variablesAction','uniqueid','originate','from-sip','format','\x22%s\x22\x20<%s>','util','lodash','moment','../../../../config/logger','fax','logger','info'];(function(_0x544072,_0xc41ee1){var _0x590bf6=function(_0x41107f){while(--_0x41107f){_0x544072['push'](_0x544072['shift']());}};_0x590bf6(++_0xc41ee1);}(_0x1218,0xa9));var _0x8121=function(_0x1e692d,_0xc65246){_0x1e692d=_0x1e692d-0x0;var _0x4b09e0=_0x1218[_0x1e692d];return _0x4b09e0;};'use strict';var util=require(_0x8121('0x0'));var _=require(_0x8121('0x1'));var moment=require(_0x8121('0x2'));var logger=require(_0x8121('0x3'))(_0x8121('0x4'));exports['message']=function(_0x5689ba){return{'message':_0x5689ba};};exports[_0x8121('0x5')]=function(_0x5e0ba2,_0x2364c1){logger[_0x8121('0x6')](_0x5e0ba2,util[_0x8121('0x7')](_0x2364c1,{'showHidden':![],'depth':null}));};exports['addVariables']=function(_0x3b2dcd,_0xf0c55f){var _0x2205f1={'XMF-ECM':_0xf0c55f['ecm'],'XMF-HEADERINFO':_0xf0c55f[_0x8121('0x8')],'XMF-MINRATE':_0xf0c55f[_0x8121('0x9')],'XMF-MAXRATE':_0xf0c55f[_0x8121('0xa')],'XMF-MODEM':util['format'](_0x8121('0xb'),_0xf0c55f[_0x8121('0xc')]),'XMF-GATEWAY':_0xf0c55f[_0x8121('0xd')],'XMF-FAXDETECT':_0xf0c55f[_0x8121('0xe')],'XMF-T38TIMEOUT':_0xf0c55f['t38timeout'],'XMF-LOCALSTATIONID':_0xf0c55f[_0x8121('0xf')],'XMF-PATH':_0x3b2dcd['path']};return _0x2205f1;};exports[_0x8121('0x10')]=function(_0x43a387,_0x4ef580){return{'actionid':_0x43a387[_0x8121('0x11')],'action':_0x8121('0x12'),'channel':_0x43a387['channel'],'Exten':'xcally-motion-fax','Context':_0x8121('0x13'),'Priority':'1','callerid':util[_0x8121('0x14')](_0x8121('0x15'),_0x43a387[_0x8121('0x8')]?_0x43a387[_0x8121('0x8')]:'',_0x43a387[_0x8121('0xf')]),'variable':_0x4ef580,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x43a387[_0x8121('0x11')]};};
\ No newline at end of file
+var _0xef82=['moment','../../../../config/logger','fax','logger','info','addVariables','minrate','maxrate','gateway','faxdetect','t38timeout','localstationid','uniqueid','channel','from-sip','format','lodash'];(function(_0x8fba1a,_0x274189){var _0x2f5c2d=function(_0x5f46e4){while(--_0x5f46e4){_0x8fba1a['push'](_0x8fba1a['shift']());}};_0x2f5c2d(++_0x274189);}(_0xef82,0x65));var _0x2ef8=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xef82[_0x20a584];return _0x4b41a8;};'use strict';var util=require('util');var _=require(_0x2ef8('0x0'));var moment=require(_0x2ef8('0x1'));var logger=require(_0x2ef8('0x2'))(_0x2ef8('0x3'));exports['message']=function(_0x4d5e70){return{'message':_0x4d5e70};};exports[_0x2ef8('0x4')]=function(_0x39b016,_0x57e844){logger[_0x2ef8('0x5')](_0x39b016,util['inspect'](_0x57e844,{'showHidden':![],'depth':null}));};exports[_0x2ef8('0x6')]=function(_0x1c5de4,_0x22154e){var _0x28ec21={'XMF-ECM':_0x22154e['ecm'],'XMF-HEADERINFO':_0x22154e['headerinfo'],'XMF-MINRATE':_0x22154e[_0x2ef8('0x7')],'XMF-MAXRATE':_0x22154e[_0x2ef8('0x8')],'XMF-MODEM':util['format']('\x22%s\x22',_0x22154e['modem']),'XMF-GATEWAY':_0x22154e[_0x2ef8('0x9')],'XMF-FAXDETECT':_0x22154e[_0x2ef8('0xa')],'XMF-T38TIMEOUT':_0x22154e[_0x2ef8('0xb')],'XMF-LOCALSTATIONID':_0x22154e[_0x2ef8('0xc')],'XMF-PATH':_0x1c5de4['path']};return _0x28ec21;};exports['variablesAction']=function(_0x438af3,_0x126b40){return{'actionid':_0x438af3[_0x2ef8('0xd')],'action':'originate','channel':_0x438af3[_0x2ef8('0xe')],'Exten':'xcally-motion-fax','Context':_0x2ef8('0xf'),'Priority':'1','callerid':util[_0x2ef8('0x10')]('\x22%s\x22\x20<%s>',_0x438af3['headerinfo']?_0x438af3['headerinfo']:'',_0x438af3[_0x2ef8('0xc')]),'variable':_0x126b40,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x438af3[_0x2ef8('0xd')]};};
\ No newline at end of file
index 6587339..c505603 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8635=['initTrunks','initVoiceQueues','getTriggers','getTemplates','initTemplates','initZendeskAccounts','getSalesforceAccounts','getFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','error','inspect','listen','sync','[index.js][main]','util','moment','./realtime','./report','./acw','./trigger','./dialer','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/servicenow','../../config/logger','ami','get','hour','resolve','then','getAgents','initAgents','getTrunks'];(function(_0x5d66fc,_0x8b6532){var _0xeab119=function(_0x245c23){while(--_0x245c23){_0x5d66fc['push'](_0x5d66fc['shift']());}};_0xeab119(++_0x8b6532);}(_0x8635,0x18e));var _0x5863=function(_0x5bf420,_0x2d068d){_0x5bf420=_0x5bf420-0x0;var _0x1c5255=_0x8635[_0x5bf420];return _0x1c5255;};'use strict';var BPromise=require('bluebird');var util=require(_0x5863('0x0'));var moment=require(_0x5863('0x1'));var server=require('./server');var Realtime=require(_0x5863('0x2'));var Report=require(_0x5863('0x3'));var Acw=require(_0x5863('0x4'));var Trigger=require(_0x5863('0x5'));var Dialer=require(_0x5863('0x6'));var Preview=require(_0x5863('0x7'));var Fax=require(_0x5863('0x8'));var user=require(_0x5863('0x9'));var voiceQueue=require(_0x5863('0xa'));var voiceQueueReport=require(_0x5863('0xb'));var voiceCallReport=require(_0x5863('0xc'));var trunk=require(_0x5863('0xd'));var trigger=require(_0x5863('0xe'));var template=require(_0x5863('0xf'));var cmHopperHistory=require(_0x5863('0x10'));var campaign=require('./rpc/campaign');var voiceExtension=require(_0x5863('0x11'));var faxAccount=require(_0x5863('0x12'));var zendesk=require('./rpc/integrations/zendesk');var salesforce=require(_0x5863('0x13'));var sugarcrm=require(_0x5863('0x14'));var freshdesk=require(_0x5863('0x15'));var desk=require('./rpc/integrations/desk');var zoho=require(_0x5863('0x16'));var vtiger=require(_0x5863('0x17'));var freshsales=require('./rpc/integrations/freshsales');var servicenow=require(_0x5863('0x18'));var dynamics365=require('./rpc/integrations/dynamics365');var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require(_0x5863('0x19'))(_0x5863('0x1a'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x5863('0x1b')](_0x5863('0x1c'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0x5863('0x1c'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x5863('0x1d')]()[_0x5863('0x1e')](user[_0x5863('0x1f')]())[_0x5863('0x1e')](realtime[_0x5863('0x20')]())[_0x5863('0x1e')](user['getTelephones']())[_0x5863('0x1e')](realtime['initTelephones']())['then'](trunk[_0x5863('0x21')]())['then'](realtime[_0x5863('0x22')]())['then'](voiceQueue['getVoiceQueues']())[_0x5863('0x1e')](realtime[_0x5863('0x23')]())[_0x5863('0x1e')](trigger[_0x5863('0x24')]())[_0x5863('0x1e')](realtime['initTriggers']())[_0x5863('0x1e')](template[_0x5863('0x25')]())['then'](realtime[_0x5863('0x26')]())[_0x5863('0x1e')](zendesk['getZendeskAccounts']())['then'](realtime[_0x5863('0x27')]())[_0x5863('0x1e')](salesforce[_0x5863('0x28')]())[_0x5863('0x1e')](realtime['initSalesforceAccounts']())[_0x5863('0x1e')](sugarcrm['getSugarcrmAccounts']())[_0x5863('0x1e')](realtime['initSugarcrmAccounts']())[_0x5863('0x1e')](freshdesk[_0x5863('0x29')]())[_0x5863('0x1e')](realtime['initFreshdeskAccounts']())[_0x5863('0x1e')](desk[_0x5863('0x2a')]())[_0x5863('0x1e')](realtime[_0x5863('0x2b')]())[_0x5863('0x1e')](zoho[_0x5863('0x2c')]())['then'](realtime[_0x5863('0x2d')]())[_0x5863('0x1e')](vtiger[_0x5863('0x2e')]())[_0x5863('0x1e')](realtime[_0x5863('0x2f')]())[_0x5863('0x1e')](freshsales[_0x5863('0x30')]())['then'](realtime[_0x5863('0x31')]())[_0x5863('0x1e')](servicenow[_0x5863('0x32')]())[_0x5863('0x1e')](realtime[_0x5863('0x33')]())[_0x5863('0x1e')](dynamics365['getDynamics365Accounts']())[_0x5863('0x1e')](realtime[_0x5863('0x34')]())[_0x5863('0x1e')](campaign[_0x5863('0x35')]())[_0x5863('0x1e')](realtime[_0x5863('0x36')]())['then'](voiceExtension[_0x5863('0x37')]())[_0x5863('0x1e')](realtime[_0x5863('0x38')]())[_0x5863('0x1e')](faxAccount[_0x5863('0x39')]())[_0x5863('0x1e')](realtime[_0x5863('0x3a')]())['then'](function(){return realtime;});}function initParams(){return BPromise[_0x5863('0x1d')]()[_0x5863('0x1e')](voiceQueueReport['getVoiceQueueReports']())[_0x5863('0x1e')](realtime[_0x5863('0x3b')]())[_0x5863('0x1e')](cmHopperHistory[_0x5863('0x3c')]())[_0x5863('0x1e')](realtime[_0x5863('0x3d')]())['then'](cmHopperHistory[_0x5863('0x3e')]())[_0x5863('0x1e')](realtime[_0x5863('0x3f')]())[_0x5863('0x1e')](voiceCallReport[_0x5863('0x40')]())[_0x5863('0x1e')](realtime[_0x5863('0x41')]())[_0x5863('0x42')](function(_0x4d0966){logger[_0x5863('0x43')]('[index.js][initParams]',util[_0x5863('0x44')](_0x4d0966,{'showHidden':![],'depth':null}));});}function main(){return server[_0x5863('0x45')](realtime,preview,fax)[_0x5863('0x1e')](function(_0x52ac7e){return initRealtime();})[_0x5863('0x1e')](function(){return initParams();})[_0x5863('0x1e')](function(){report[_0x5863('0x46')]();setInterval(initRealtime,0x1388);})[_0x5863('0x42')](function(_0x59e5fb){logger[_0x5863('0x43')](_0x5863('0x47'),util[_0x5863('0x44')](_0x59e5fb,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0xbc50=['../../config/logger','ami','get','hour','resolve','getAgents','then','initAgents','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','getZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','catch','error','inspect','listen','sync','[index.js][main]','util','moment','./server','./realtime','./report','./trigger','./dialer','./preview','./fax','./rpc/user','./rpc/voiceCallReport','./rpc/trunk','./rpc/template','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/dynamics365'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xbc50,0x7c));var _0x0bc5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbc50[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require('bluebird');var util=require(_0x0bc5('0x0'));var moment=require(_0x0bc5('0x1'));var server=require(_0x0bc5('0x2'));var Realtime=require(_0x0bc5('0x3'));var Report=require(_0x0bc5('0x4'));var Acw=require('./acw');var Trigger=require(_0x0bc5('0x5'));var Dialer=require(_0x0bc5('0x6'));var Preview=require(_0x0bc5('0x7'));var Fax=require(_0x0bc5('0x8'));var user=require(_0x0bc5('0x9'));var voiceQueue=require('./rpc/voiceQueue');var voiceQueueReport=require('./rpc/voiceQueueReport');var voiceCallReport=require(_0x0bc5('0xa'));var trunk=require(_0x0bc5('0xb'));var trigger=require('./rpc/trigger');var template=require(_0x0bc5('0xc'));var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require(_0x0bc5('0xd'));var voiceExtension=require(_0x0bc5('0xe'));var faxAccount=require(_0x0bc5('0xf'));var zendesk=require(_0x0bc5('0x10'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x0bc5('0x11'));var freshdesk=require(_0x0bc5('0x12'));var desk=require(_0x0bc5('0x13'));var zoho=require(_0x0bc5('0x14'));var vtiger=require(_0x0bc5('0x15'));var freshsales=require(_0x0bc5('0x16'));var servicenow=require('./rpc/integrations/servicenow');var dynamics365=require(_0x0bc5('0x17'));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(_0x0bc5('0x18'))(_0x0bc5('0x19'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x0bc5('0x1a')](_0x0bc5('0x1b'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0x0bc5('0x1b'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0x0bc5('0x1c')]()['then'](user[_0x0bc5('0x1d')]())[_0x0bc5('0x1e')](realtime[_0x0bc5('0x1f')]())['then'](user[_0x0bc5('0x20')]())[_0x0bc5('0x1e')](realtime[_0x0bc5('0x21')]())[_0x0bc5('0x1e')](trunk[_0x0bc5('0x22')]())[_0x0bc5('0x1e')](realtime[_0x0bc5('0x23')]())[_0x0bc5('0x1e')](voiceQueue[_0x0bc5('0x24')]())['then'](realtime[_0x0bc5('0x25')]())[_0x0bc5('0x1e')](trigger[_0x0bc5('0x26')]())[_0x0bc5('0x1e')](realtime[_0x0bc5('0x27')]())[_0x0bc5('0x1e')](template[_0x0bc5('0x28')]())[_0x0bc5('0x1e')](realtime[_0x0bc5('0x29')]())[_0x0bc5('0x1e')](zendesk[_0x0bc5('0x2a')]())[_0x0bc5('0x1e')](realtime[_0x0bc5('0x2b')]())[_0x0bc5('0x1e')](salesforce['getSalesforceAccounts']())['then'](realtime['initSalesforceAccounts']())[_0x0bc5('0x1e')](sugarcrm[_0x0bc5('0x2c')]())[_0x0bc5('0x1e')](realtime[_0x0bc5('0x2d')]())[_0x0bc5('0x1e')](freshdesk[_0x0bc5('0x2e')]())[_0x0bc5('0x1e')](realtime[_0x0bc5('0x2f')]())[_0x0bc5('0x1e')](desk[_0x0bc5('0x30')]())[_0x0bc5('0x1e')](realtime['initDeskAccounts']())[_0x0bc5('0x1e')](zoho[_0x0bc5('0x31')]())[_0x0bc5('0x1e')](realtime['initZohoAccounts']())[_0x0bc5('0x1e')](vtiger[_0x0bc5('0x32')]())[_0x0bc5('0x1e')](realtime[_0x0bc5('0x33')]())[_0x0bc5('0x1e')](freshsales[_0x0bc5('0x34')]())[_0x0bc5('0x1e')](realtime[_0x0bc5('0x35')]())['then'](servicenow['getServicenowAccounts']())[_0x0bc5('0x1e')](realtime[_0x0bc5('0x36')]())['then'](dynamics365[_0x0bc5('0x37')]())[_0x0bc5('0x1e')](realtime[_0x0bc5('0x38')]())[_0x0bc5('0x1e')](campaign['getCampaigns']())[_0x0bc5('0x1e')](realtime[_0x0bc5('0x39')]())[_0x0bc5('0x1e')](voiceExtension[_0x0bc5('0x3a')]())[_0x0bc5('0x1e')](realtime[_0x0bc5('0x3b')]())['then'](faxAccount[_0x0bc5('0x3c')]())[_0x0bc5('0x1e')](realtime[_0x0bc5('0x3d')]())[_0x0bc5('0x1e')](function(){return realtime;});}function initParams(){return BPromise['resolve']()[_0x0bc5('0x1e')](voiceQueueReport[_0x0bc5('0x3e')]())[_0x0bc5('0x1e')](realtime[_0x0bc5('0x3f')]())[_0x0bc5('0x1e')](cmHopperHistory[_0x0bc5('0x40')]())[_0x0bc5('0x1e')](realtime['initVoiceQueueHopperHistory']())[_0x0bc5('0x1e')](cmHopperHistory[_0x0bc5('0x41')]())[_0x0bc5('0x1e')](realtime[_0x0bc5('0x42')]())[_0x0bc5('0x1e')](voiceCallReport[_0x0bc5('0x43')]())[_0x0bc5('0x1e')](realtime['initVoiceCallReports']())[_0x0bc5('0x44')](function(_0x5dc251){logger[_0x0bc5('0x45')]('[index.js][initParams]',util[_0x0bc5('0x46')](_0x5dc251,{'showHidden':![],'depth':null}));});}function main(){return server[_0x0bc5('0x47')](realtime,preview,fax)[_0x0bc5('0x1e')](function(_0x21beb1){return initRealtime();})['then'](function(){return initParams();})['then'](function(){report[_0x0bc5('0x48')]();setInterval(initRealtime,0x1388);})['catch'](function(_0x530fba){logger[_0x0bc5('0x45')](_0x0bc5('0x49'),util['inspect'](_0x530fba,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index 148cb49..70c3624 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['phone','mobile','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','onhold','prototype','updateStatusRealtime','state','toLowerCase','idle','inuse','talking','statePause','toNumber','interface','format','user:%s','user:save','emit','user:presence','exports','util','moment','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','email','accountcode','fullname','unknown','status'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xedd9,0xfc));var _0x9edd=function(_0x5cf21a,_0x8aff91){_0x5cf21a=_0x5cf21a-0x0;var _0x2e8647=_0xedd9[_0x5cf21a];return _0x2e8647;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var moment=require(_0x9edd('0x1'));var md5=require(_0x9edd('0x2'));var Redis=require(_0x9edd('0x3'));var config=require(_0x9edd('0x4'));config[_0x9edd('0x5')]=_[_0x9edd('0x6')](config[_0x9edd('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x9edd('0x7'))(new Redis(config[_0x9edd('0x5')]));function Agent(_0x268f9e){this['id']=_0x268f9e['id']||0x0;this[_0x9edd('0x8')]=_0x268f9e['name']||'';this[_0x9edd('0x9')]=_0x268f9e['email']||'';this[_0x9edd('0xa')]=_0x268f9e[_0x9edd('0xa')]||'';this[_0x9edd('0xb')]=_0x268f9e[_0x9edd('0xb')]||'';this['state']=_0x9edd('0xc');this['stateTime']=0x0;this[_0x9edd('0xd')]=_0x9edd('0xc');this['address']='';this[_0x9edd('0xe')]='';this[_0x9edd('0xf')]='';this['interface']='';this[_0x9edd('0x10')]=_0x268f9e[_0x9edd('0x10')]||![];this[_0x9edd('0x11')]=_0x9edd('0xc');this[_0x9edd('0x12')]=0x0;this[_0x9edd('0x13')]='';this[_0x9edd('0x14')]='';this[_0x9edd('0x15')]=![];this['local']=![];this[_0x9edd('0x2')]='';}Agent[_0x9edd('0x16')][_0x9edd('0x17')]=function(_0x4d9a7){var _0x13b6b6;if(_0x4d9a7&&_0x4d9a7[_0x9edd('0x18')]){_0x13b6b6=_0x4d9a7[_0x9edd('0x18')][_0x9edd('0x19')]();switch(_0x13b6b6){case'not_inuse':_0x13b6b6=_0x9edd('0x1a');break;case _0x9edd('0x1b'):_0x13b6b6=_0x9edd('0x1c');break;}}if(_0x13b6b6&&this['voiceStatus']!==_0x13b6b6||_0x4d9a7[_0x9edd('0x1d')]){this[_0x9edd('0x12')]=_[_0x9edd('0x1e')](moment()['format']('x'));}if(_0x13b6b6){this[_0x9edd('0x11')]=_0x13b6b6;}var _0x5d879c={'id':this['id'],'name':this[_0x9edd('0x8')],'email':this[_0x9edd('0x9')],'accountcode':this['accountcode'],'fullname':this['fullname'],'state':this[_0x9edd('0x18')],'stateTime':this['stateTime'],'status':this[_0x9edd('0xd')],'address':this['address'],'online':this['online'],'voiceStatus':this[_0x9edd('0x11')],'voiceStatusTime':this[_0x9edd('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this['voiceStatusQueue'],'interface':this[_0x9edd('0x1f')],'onhold':this[_0x9edd('0x15')]};var _0x477878=md5(JSON['stringify'](_0x5d879c));if(this[_0x9edd('0x2')]!==_0x477878){this[_0x9edd('0x2')]=_0x477878;io['to'](util[_0x9edd('0x20')](_0x9edd('0x21'),_0x5d879c[_0x9edd('0x8')]))['emit'](_0x9edd('0x22'),_0x5d879c);io[_0x9edd('0x23')](_0x9edd('0x24'),_0x5d879c);}};module[_0x9edd('0x25')]=Agent;
\ No newline at end of file
+var _0x70e0=['name','voiceStatusQueue','onhold','stringify','md5','user:%s','user:save','emit','user:presence','lodash','util','moment','../../../config/environment','redis','defaults','socket.io-emitter','email','accountcode','fullname','state','unknown','address','phone','mobile','interface','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','local','toLowerCase','not_inuse','idle','inuse','statePause','toNumber','format'];(function(_0xb2e95c,_0x534cc3){var _0x431123=function(_0x89953a){while(--_0x89953a){_0xb2e95c['push'](_0xb2e95c['shift']());}};_0x431123(++_0x534cc3);}(_0x70e0,0x17b));var _0x070e=function(_0x12d7ec,_0x4ce773){_0x12d7ec=_0x12d7ec-0x0;var _0xc680ec=_0x70e0[_0x12d7ec];return _0xc680ec;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var moment=require(_0x070e('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x070e('0x3'));config[_0x070e('0x4')]=_[_0x070e('0x5')](config[_0x070e('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x070e('0x6'))(new Redis(config['redis']));function Agent(_0x46fe68){this['id']=_0x46fe68['id']||0x0;this['name']=_0x46fe68['name']||'';this['email']=_0x46fe68[_0x070e('0x7')]||'';this[_0x070e('0x8')]=_0x46fe68[_0x070e('0x8')]||'';this[_0x070e('0x9')]=_0x46fe68[_0x070e('0x9')]||'';this[_0x070e('0xa')]=_0x070e('0xb');this['stateTime']=0x0;this['status']=_0x070e('0xb');this[_0x070e('0xc')]='';this[_0x070e('0xd')]='';this[_0x070e('0xe')]='';this[_0x070e('0xf')]='';this[_0x070e('0x10')]=_0x46fe68[_0x070e('0x10')]||![];this[_0x070e('0x11')]=_0x070e('0xb');this[_0x070e('0x12')]=0x0;this[_0x070e('0x13')]='';this['voiceStatusQueue']='';this['onhold']=![];this[_0x070e('0x14')]=![];this['md5']='';}Agent['prototype']['updateStatusRealtime']=function(_0x11d2ce){var _0x14c3fd;if(_0x11d2ce&&_0x11d2ce['state']){_0x14c3fd=_0x11d2ce['state'][_0x070e('0x15')]();switch(_0x14c3fd){case _0x070e('0x16'):_0x14c3fd=_0x070e('0x17');break;case _0x070e('0x18'):_0x14c3fd='talking';break;}}if(_0x14c3fd&&this['voiceStatus']!==_0x14c3fd||_0x11d2ce[_0x070e('0x19')]){this[_0x070e('0x12')]=_[_0x070e('0x1a')](moment()[_0x070e('0x1b')]('x'));}if(_0x14c3fd){this[_0x070e('0x11')]=_0x14c3fd;}var _0x5037eb={'id':this['id'],'name':this[_0x070e('0x1c')],'email':this[_0x070e('0x7')],'accountcode':this[_0x070e('0x8')],'fullname':this[_0x070e('0x9')],'state':this[_0x070e('0xa')],'stateTime':this['stateTime'],'status':this['status'],'address':this['address'],'online':this[_0x070e('0x10')],'voiceStatus':this[_0x070e('0x11')],'voiceStatusTime':this[_0x070e('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x070e('0x1d')],'interface':this['interface'],'onhold':this[_0x070e('0x1e')]};var _0x3f6985=md5(JSON[_0x070e('0x1f')](_0x5037eb));if(this[_0x070e('0x20')]!==_0x3f6985){this[_0x070e('0x20')]=_0x3f6985;io['to'](util[_0x070e('0x1b')](_0x070e('0x21'),_0x5037eb[_0x070e('0x1c')]))['emit'](_0x070e('0x22'),_0x5037eb);io[_0x070e('0x23')](_0x070e('0x24'),_0x5037eb);}};module['exports']=Agent;
\ No newline at end of file
index 3427773..baadaef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd60c=['Interval','SquareProject','dialQueueProject','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','temp','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk'];(function(_0x3929aa,_0x1179f3){var _0xa2d686=function(_0x5436e2){while(--_0x5436e2){_0x3929aa['push'](_0x3929aa['shift']());}};_0xa2d686(++_0x1179f3);}(_0xd60c,0xa6));var _0xcd60=function(_0x3b74c9,_0x14edae){_0x3b74c9=_0x3b74c9-0x0;var _0x2f4060=_0xd60c[_0x3b74c9];return _0x2f4060;};'use strict';function Campaign(_0xfa1e36){this['id']=_0xfa1e36['id']||0x0;this[_0xcd60('0x0')]=_0xfa1e36['name']||'';this[_0xcd60('0x1')]=_0xfa1e36[_0xcd60('0x1')]||_0xcd60('0x2');this[_0xcd60('0x3')]=0x0;this[_0xcd60('0x4')]=0x0;this['ivrAnswerCallsDay']=0x0;this[_0xcd60('0x5')]=0x0;this[_0xcd60('0x6')]='';this[_0xcd60('0x7')]=!![];this[_0xcd60('0x8')]=_0xfa1e36[_0xcd60('0x8')];this[_0xcd60('0x9')]=_0xfa1e36['limitCalls'];this[_0xcd60('0xa')]=_0xfa1e36[_0xcd60('0xa')]||null;this[_0xcd60('0xb')]=_0xfa1e36['dialGlobalInterval']?_0xfa1e36[_0xcd60('0xb')]:null;this[_0xcd60('0xc')]=_0xfa1e36['dialOriginateCallerIdName'];this[_0xcd60('0xd')]=_0xfa1e36[_0xcd60('0xd')];this[_0xcd60('0xe')]=_0xfa1e36[_0xcd60('0xe')]||0x1e;this[_0xcd60('0xf')]=_0xfa1e36[_0xcd60('0xf')];this[_0xcd60('0x10')]=_0xfa1e36[_0xcd60('0x10')];this[_0xcd60('0x11')]=_0xfa1e36['dialBusyMaxRetry'];this[_0xcd60('0x12')]=_0xfa1e36['dialBusyRetryFrequency'];this[_0xcd60('0x13')]=_0xfa1e36[_0xcd60('0x13')];this[_0xcd60('0x14')]=_0xfa1e36[_0xcd60('0x14')];this['dialGlobalMaxRetry']=_0xfa1e36['dialGlobalMaxRetry'];this['dialNoSuchNumberMaxRetry']=_0xfa1e36[_0xcd60('0x15')]||0x3;this[_0xcd60('0x16')]=_0xfa1e36['dialNoSuchNumberRetryFrequency']||0x96;this[_0xcd60('0x17')]=_0xfa1e36['dialDropMaxRetry']||0x3;this[_0xcd60('0x18')]=_0xfa1e36[_0xcd60('0x18')]||0x96;this[_0xcd60('0x19')]=_0xfa1e36[_0xcd60('0x19')]||0x3;this[_0xcd60('0x1a')]=_0xfa1e36[_0xcd60('0x1a')]||0x96;this[_0xcd60('0x1b')]=_0xfa1e36[_0xcd60('0x1b')]||0x3;this[_0xcd60('0x1c')]=_0xfa1e36[_0xcd60('0x1c')]||0x96;this[_0xcd60('0x1d')]=_0xfa1e36['dialAgentRejectMaxRetry']||0x3;this['dialAgentRejectRetryFrequency']=_0xfa1e36[_0xcd60('0x1e')]||0x96;this['dialOrderByScheduledAt']=_0xfa1e36[_0xcd60('0x1f')]||_0xcd60('0x20');this[_0xcd60('0x21')]=_0xfa1e36[_0xcd60('0x21')]||undefined;this[_0xcd60('0x22')]=_0xfa1e36[_0xcd60('0x22')]||undefined;this[_0xcd60('0x23')]=_0xfa1e36['dialCutDigit']||undefined;this[_0xcd60('0x24')]=_0xfa1e36['TrunkBackup']?_0xfa1e36[_0xcd60('0x24')]:undefined;this[_0xcd60('0x25')]=_0xfa1e36[_0xcd60('0x25')]?_0xfa1e36[_0xcd60('0x25')]:undefined;this[_0xcd60('0x26')]=_0xfa1e36[_0xcd60('0x26')]?_0xfa1e36[_0xcd60('0x26')]:undefined;this[_0xcd60('0x27')]=_0xfa1e36[_0xcd60('0x27')]?_0xfa1e36[_0xcd60('0x27')]:undefined;this[_0xcd60('0x28')]=_0xfa1e36[_0xcd60('0x27')]?_0xfa1e36[_0xcd60('0x27')]['name']:undefined;this['dialAMDActive']=_0xfa1e36['dialAMDActive']||![];this[_0xcd60('0x29')]=_0xfa1e36['dialAMDInitialSilence'];this[_0xcd60('0x2a')]=_0xfa1e36[_0xcd60('0x2a')];this[_0xcd60('0x2b')]=_0xfa1e36[_0xcd60('0x2b')];this['dialAMDTotalAnalysisTime']=_0xfa1e36[_0xcd60('0x2c')];this[_0xcd60('0x2d')]=_0xfa1e36[_0xcd60('0x2d')];this[_0xcd60('0x2e')]=_0xfa1e36[_0xcd60('0x2e')];this[_0xcd60('0x2f')]=_0xfa1e36['dialAMDMaximumNumberOfWords'];this['dialAMDSilenceThreshold']=_0xfa1e36[_0xcd60('0x30')];this['dialAMDMaximumWordLength']=_0xfa1e36[_0xcd60('0x31')];}module[_0xcd60('0x32')]=Campaign;
\ No newline at end of file
+var _0xe80b=['dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','originated','temp','ivrAnswerCallsDay','ivrTotalCallsDays','message','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject'];(function(_0x95942,_0x85da80){var _0x6d7f81=function(_0x510549){while(--_0x510549){_0x95942['push'](_0x95942['shift']());}};_0x6d7f81(++_0x85da80);}(_0xe80b,0x1ce));var _0xbe80=function(_0x180632,_0x3a229e){_0x180632=_0x180632-0x0;var _0x151961=_0xe80b[_0x180632];return _0x151961;};'use strict';function Campaign(_0x4b1cef){this['id']=_0x4b1cef['id']||0x0;this[_0xbe80('0x0')]=_0x4b1cef[_0xbe80('0x0')]||'';this['type']=_0x4b1cef[_0xbe80('0x1')]||'campaign';this[_0xbe80('0x2')]=0x0;this[_0xbe80('0x3')]=0x0;this[_0xbe80('0x4')]=0x0;this[_0xbe80('0x5')]=0x0;this[_0xbe80('0x6')]='';this['sendMessageOneNotActive']=!![];this[_0xbe80('0x7')]=_0x4b1cef[_0xbe80('0x7')];this[_0xbe80('0x8')]=_0x4b1cef[_0xbe80('0x8')];this[_0xbe80('0x9')]=_0x4b1cef[_0xbe80('0x9')]||null;this[_0xbe80('0xa')]=_0x4b1cef[_0xbe80('0xa')]?_0x4b1cef['dialGlobalInterval']:null;this[_0xbe80('0xb')]=_0x4b1cef[_0xbe80('0xb')];this['dialOriginateCallerIdNumber']=_0x4b1cef[_0xbe80('0xc')];this[_0xbe80('0xd')]=_0x4b1cef['dialOriginateTimeout']||0x1e;this['dialCongestionMaxRetry']=_0x4b1cef['dialCongestionMaxRetry'];this[_0xbe80('0xe')]=_0x4b1cef[_0xbe80('0xe')];this[_0xbe80('0xf')]=_0x4b1cef['dialBusyMaxRetry'];this[_0xbe80('0x10')]=_0x4b1cef['dialBusyRetryFrequency'];this[_0xbe80('0x11')]=_0x4b1cef[_0xbe80('0x11')];this[_0xbe80('0x12')]=_0x4b1cef[_0xbe80('0x12')];this[_0xbe80('0x13')]=_0x4b1cef['dialGlobalMaxRetry'];this[_0xbe80('0x14')]=_0x4b1cef[_0xbe80('0x14')]||0x3;this[_0xbe80('0x15')]=_0x4b1cef[_0xbe80('0x15')]||0x96;this['dialDropMaxRetry']=_0x4b1cef[_0xbe80('0x16')]||0x3;this[_0xbe80('0x17')]=_0x4b1cef[_0xbe80('0x17')]||0x96;this[_0xbe80('0x18')]=_0x4b1cef[_0xbe80('0x18')]||0x3;this['dialAbandonedRetryFrequency']=_0x4b1cef['dialAbandonedRetryFrequency']||0x96;this[_0xbe80('0x19')]=_0x4b1cef[_0xbe80('0x19')]||0x3;this[_0xbe80('0x1a')]=_0x4b1cef['dialMachineRetryFrequency']||0x96;this[_0xbe80('0x1b')]=_0x4b1cef[_0xbe80('0x1b')]||0x3;this[_0xbe80('0x1c')]=_0x4b1cef[_0xbe80('0x1c')]||0x96;this['dialOrderByScheduledAt']=_0x4b1cef[_0xbe80('0x1d')]||_0xbe80('0x1e');this['dialPrefix']=_0x4b1cef[_0xbe80('0x1f')]||undefined;this['dialRandomLastDigitCallerIdNumber']=_0x4b1cef[_0xbe80('0x20')]||undefined;this[_0xbe80('0x21')]=_0x4b1cef[_0xbe80('0x21')]||undefined;this[_0xbe80('0x22')]=_0x4b1cef['TrunkBackup']?_0x4b1cef[_0xbe80('0x22')]:undefined;this[_0xbe80('0x23')]=_0x4b1cef[_0xbe80('0x23')]?_0x4b1cef[_0xbe80('0x23')]:undefined;this['Interval']=_0x4b1cef[_0xbe80('0x24')]?_0x4b1cef[_0xbe80('0x24')]:undefined;this[_0xbe80('0x25')]=_0x4b1cef['SquareProject']?_0x4b1cef[_0xbe80('0x25')]:undefined;this[_0xbe80('0x26')]=_0x4b1cef['SquareProject']?_0x4b1cef[_0xbe80('0x25')]['name']:undefined;this[_0xbe80('0x27')]=_0x4b1cef['dialAMDActive']||![];this['dialAMDInitialSilence']=_0x4b1cef[_0xbe80('0x28')];this['dialAMDGreeting']=_0x4b1cef[_0xbe80('0x29')];this[_0xbe80('0x2a')]=_0x4b1cef[_0xbe80('0x2a')];this[_0xbe80('0x2b')]=_0x4b1cef[_0xbe80('0x2b')];this[_0xbe80('0x2c')]=_0x4b1cef[_0xbe80('0x2c')];this['dialAMDBetweenWordsSilence']=_0x4b1cef[_0xbe80('0x2d')];this[_0xbe80('0x2e')]=_0x4b1cef[_0xbe80('0x2e')];this[_0xbe80('0x2f')]=_0x4b1cef[_0xbe80('0x2f')];this[_0xbe80('0x30')]=_0x4b1cef[_0xbe80('0x30')];}module[_0xbe80('0x31')]=Campaign;
\ No newline at end of file
index 4c16fe0..9daf78b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3792=['unmanaged','abandoned','lastapplication','lastdata','duration','billableseconds','holdtime','type','tag','monitor','monitorFilename','queue','monitors','transfercalleridnum','transferType','mohtime','starttime','channel','calleridnum','calleridname','connectedlinenum','connectedlinename','context','uniqueid','linkedid','exten','answered','answertime','endtime'];(function(_0x3167f9,_0x157013){var _0x59bd90=function(_0x1bc818){while(--_0x1bc818){_0x3167f9['push'](_0x3167f9['shift']());}};_0x59bd90(++_0x157013);}(_0x3792,0xbe));var _0x2379=function(_0x5e56a4,_0x2d3a0a){_0x5e56a4=_0x5e56a4-0x0;var _0x33b107=_0x3792[_0x5e56a4];return _0x33b107;};'use strict';function Channel(){this[_0x2379('0x0')]=null;this[_0x2379('0x1')]='';this['destinationchannel']='';this[_0x2379('0x2')]=0x0;this[_0x2379('0x3')]='';this[_0x2379('0x4')]=undefined;this[_0x2379('0x5')]=undefined;this['accountcode']=0x0;this[_0x2379('0x6')]='';this[_0x2379('0x7')]=0x0;this[_0x2379('0x8')]=0x0;this[_0x2379('0x9')]=0x0;this[_0x2379('0xa')]=![];this[_0x2379('0xb')]=null;this[_0x2379('0xc')]=null;this[_0x2379('0xd')]=![];this[_0x2379('0xe')]=![];this[_0x2379('0xf')]='';this[_0x2379('0x10')]='';this[_0x2379('0x11')]=0x0;this[_0x2379('0x12')]=0x0;this[_0x2379('0x13')]=0x0;this[_0x2379('0x14')]=null;this[_0x2379('0x15')]=null;this['disposition']=null;this[_0x2379('0x16')]=![];this[_0x2379('0x17')]=null;this[_0x2379('0x18')]=null;this[_0x2379('0x19')]=[];this[_0x2379('0x1a')]=undefined;this['transferconnectedlinenum']=undefined;this[_0x2379('0x1b')]=undefined;this[_0x2379('0x1c')]=0x0;}module['exports']=Channel;
\ No newline at end of file
+var _0x8a2a=['exports','channel','destinationchannel','calleridnum','calleridname','connectedlinenum','accountcode','context','uniqueid','linkedid','exten','answered','answertime','endtime','abandoned','billableseconds','holdtime','type','disposition','monitor','monitorFilename','queue','monitors','transfercalleridnum','transferType','mohtime'];(function(_0x4259da,_0x122472){var _0x270a65=function(_0xa93119){while(--_0xa93119){_0x4259da['push'](_0x4259da['shift']());}};_0x270a65(++_0x122472);}(_0x8a2a,0x11f));var _0xa8a2=function(_0x4b6830,_0x2bf6fb){_0x4b6830=_0x4b6830-0x0;var _0x239e4a=_0x8a2a[_0x4b6830];return _0x239e4a;};'use strict';function Channel(){this['starttime']=null;this[_0xa8a2('0x0')]='';this[_0xa8a2('0x1')]='';this[_0xa8a2('0x2')]=0x0;this[_0xa8a2('0x3')]='';this[_0xa8a2('0x4')]=undefined;this['connectedlinename']=undefined;this[_0xa8a2('0x5')]=0x0;this[_0xa8a2('0x6')]='';this[_0xa8a2('0x7')]=0x0;this[_0xa8a2('0x8')]=0x0;this[_0xa8a2('0x9')]=0x0;this[_0xa8a2('0xa')]=![];this[_0xa8a2('0xb')]=null;this[_0xa8a2('0xc')]=null;this['unmanaged']=![];this[_0xa8a2('0xd')]=![];this['lastapplication']='';this['lastdata']='';this['duration']=0x0;this[_0xa8a2('0xe')]=0x0;this[_0xa8a2('0xf')]=0x0;this[_0xa8a2('0x10')]=null;this['tag']=null;this[_0xa8a2('0x11')]=null;this[_0xa8a2('0x12')]=![];this[_0xa8a2('0x13')]=null;this[_0xa8a2('0x14')]=null;this[_0xa8a2('0x15')]=[];this[_0xa8a2('0x16')]=undefined;this['transferconnectedlinenum']=undefined;this[_0xa8a2('0x17')]=undefined;this[_0xa8a2('0x18')]=0x0;}module[_0xa8a2('0x19')]=Channel;
\ No newline at end of file
index c0caa41..368a8d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbdd=['username','remoteUri','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','name'];(function(_0x46c76e,_0x18ab31){var _0xbc01db=function(_0xb84d05){while(--_0xb84d05){_0x46c76e['push'](_0x46c76e['shift']());}};_0xbc01db(++_0x18ab31);}(_0xcbdd,0xaf));var _0xdcbd=function(_0x2bfa66,_0x95911f){_0x2bfa66=_0x2bfa66-0x0;var _0xdea3db=_0xcbdd[_0x2bfa66];return _0xdea3db;};'use strict';function DeskAccount(_0x296519){this['id']=_0x296519['id']||0x0;this[_0xdcbd('0x0')]=_0x296519[_0xdcbd('0x0')]||'';this[_0xdcbd('0x1')]=_0x296519[_0xdcbd('0x1')]||'';this['remoteUri']=_0x296519[_0xdcbd('0x2')]||'';this['authType']=_0x296519['authType']||'';this[_0xdcbd('0x3')]=_0x296519[_0xdcbd('0x3')]||'';this['consumerKey']=_0x296519[_0xdcbd('0x4')]||'';this[_0xdcbd('0x5')]=_0x296519[_0xdcbd('0x5')]||'';this[_0xdcbd('0x6')]=_0x296519[_0xdcbd('0x6')]||'';this[_0xdcbd('0x7')]=_0x296519[_0xdcbd('0x7')]||'';this['type']=_0x296519[_0xdcbd('0x8')]||'';this['serverUrl']=_0x296519[_0xdcbd('0x9')]||'';this[_0xdcbd('0xa')]=_0x296519[_0xdcbd('0xa')]||{};}module['exports']=DeskAccount;
\ No newline at end of file
+var _0xc7d2=['consumerKey','consumerSecret','token','tokenSecret','serverUrl','Configurations','exports','name','username','remoteUri','authType','password'];(function(_0x556a99,_0x3d0574){var _0x45a65a=function(_0x12f83b){while(--_0x12f83b){_0x556a99['push'](_0x556a99['shift']());}};_0x45a65a(++_0x3d0574);}(_0xc7d2,0x1b7));var _0x2c7d=function(_0x33e982,_0x1d15b1){_0x33e982=_0x33e982-0x0;var _0x2d3668=_0xc7d2[_0x33e982];return _0x2d3668;};'use strict';function DeskAccount(_0x3f6fdd){this['id']=_0x3f6fdd['id']||0x0;this[_0x2c7d('0x0')]=_0x3f6fdd['name']||'';this[_0x2c7d('0x1')]=_0x3f6fdd[_0x2c7d('0x1')]||'';this['remoteUri']=_0x3f6fdd[_0x2c7d('0x2')]||'';this['authType']=_0x3f6fdd[_0x2c7d('0x3')]||'';this[_0x2c7d('0x4')]=_0x3f6fdd[_0x2c7d('0x4')]||'';this['consumerKey']=_0x3f6fdd[_0x2c7d('0x5')]||'';this[_0x2c7d('0x6')]=_0x3f6fdd['consumerSecret']||'';this[_0x2c7d('0x7')]=_0x3f6fdd[_0x2c7d('0x7')]||'';this[_0x2c7d('0x8')]=_0x3f6fdd[_0x2c7d('0x8')]||'';this['type']=_0x3f6fdd['type']||'';this[_0x2c7d('0x9')]=_0x3f6fdd['serverUrl']||'';this[_0x2c7d('0xa')]=_0x3f6fdd[_0x2c7d('0xa')]||{};}module[_0x2c7d('0xb')]=DeskAccount;
\ No newline at end of file
index 3271e07..6c45829 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd587=['password','tenantId','clientId','clientSecret','serverUrl','modernAuthentication','Configurations','exports','name','username'];(function(_0x6cecf4,_0x1af18a){var _0x11acc5=function(_0x29706a){while(--_0x29706a){_0x6cecf4['push'](_0x6cecf4['shift']());}};_0x11acc5(++_0x1af18a);}(_0xd587,0x1c0));var _0x7d58=function(_0x85207f,_0x5383a9){_0x85207f=_0x85207f-0x0;var _0x2b7f26=_0xd587[_0x85207f];return _0x2b7f26;};'use strict';function Dynamics365Account(_0x53b19d){this['id']=_0x53b19d['id']||0x0;this[_0x7d58('0x0')]=_0x53b19d[_0x7d58('0x0')]||'';this[_0x7d58('0x1')]=_0x53b19d[_0x7d58('0x1')]||'';this[_0x7d58('0x2')]=_0x53b19d['password']||'';this['remoteUri']=_0x53b19d['remoteUri']||'';this[_0x7d58('0x3')]=_0x53b19d[_0x7d58('0x3')]||'';this[_0x7d58('0x4')]=_0x53b19d[_0x7d58('0x4')]||'';this[_0x7d58('0x5')]=_0x53b19d['clientSecret']||{};this[_0x7d58('0x6')]=_0x53b19d[_0x7d58('0x6')]||'';this[_0x7d58('0x7')]=_0x53b19d[_0x7d58('0x7')]||![];this['Configurations']=_0x53b19d[_0x7d58('0x8')]||{};this['CloudProvider']=_0x53b19d['CloudProvider']||{};}module[_0x7d58('0x9')]=Dynamics365Account;
\ No newline at end of file
+var _0x11ee=['serverUrl','modernAuthentication','CloudProvider','name','username','password','remoteUri','tenantId','clientId','clientSecret'];(function(_0x26f051,_0x1c45cc){var _0x15ba13=function(_0x115d1c){while(--_0x115d1c){_0x26f051['push'](_0x26f051['shift']());}};_0x15ba13(++_0x1c45cc);}(_0x11ee,0x67));var _0xe11e=function(_0x204836,_0x34d172){_0x204836=_0x204836-0x0;var _0x335884=_0x11ee[_0x204836];return _0x335884;};'use strict';function Dynamics365Account(_0x4b6707){this['id']=_0x4b6707['id']||0x0;this[_0xe11e('0x0')]=_0x4b6707[_0xe11e('0x0')]||'';this[_0xe11e('0x1')]=_0x4b6707[_0xe11e('0x1')]||'';this[_0xe11e('0x2')]=_0x4b6707[_0xe11e('0x2')]||'';this[_0xe11e('0x3')]=_0x4b6707[_0xe11e('0x3')]||'';this[_0xe11e('0x4')]=_0x4b6707[_0xe11e('0x4')]||'';this['clientId']=_0x4b6707[_0xe11e('0x5')]||'';this[_0xe11e('0x6')]=_0x4b6707[_0xe11e('0x6')]||{};this[_0xe11e('0x7')]=_0x4b6707[_0xe11e('0x7')]||'';this['modernAuthentication']=_0x4b6707[_0xe11e('0x8')]||![];this['Configurations']=_0x4b6707['Configurations']||{};this[_0xe11e('0x9')]=_0x4b6707[_0xe11e('0x9')]||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
index d243e7d..552e9bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5286=['headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm'];(function(_0x21e57c,_0x2b0243){var _0x15eb36=function(_0x54b284){while(--_0x54b284){_0x21e57c['push'](_0x21e57c['shift']());}};_0x15eb36(++_0x2b0243);}(_0x5286,0x1ad));var _0x6528=function(_0x2d362c,_0x56178c){_0x2d362c=_0x2d362c-0x0;var _0x1113f8=_0x5286[_0x2d362c];return _0x1113f8;};'use strict';function FaxAccount(_0x49073d){this['id']=_0x49073d['id']||0x0;this[_0x6528('0x0')]=_0x49073d[_0x6528('0x0')]||'';this[_0x6528('0x1')]=_0x49073d[_0x6528('0x1')];this['ecm']=_0x49073d[_0x6528('0x2')];this[_0x6528('0x3')]=_0x49073d[_0x6528('0x3')];this[_0x6528('0x4')]=_0x49073d['localstationid'];this[_0x6528('0x5')]=_0x49073d[_0x6528('0x5')]||0x960;this[_0x6528('0x6')]=_0x49073d[_0x6528('0x6')]||0x3840;this[_0x6528('0x7')]=_0x49073d[_0x6528('0x7')]||_0x6528('0x8');this[_0x6528('0x9')]=_0x49073d[_0x6528('0x9')]||'no';this['faxdetect']=_0x49073d[_0x6528('0xa')]||'no';this[_0x6528('0xb')]=_0x49073d[_0x6528('0xb')]||0x1388;this[_0x6528('0xc')]=_0x49073d[_0x6528('0xc')]||_0x6528('0xd');this['Trunk']=_0x49073d[_0x6528('0xe')]?_0x49073d[_0x6528('0xe')]:undefined;this[_0x6528('0xf')]=_0x49073d[_0x6528('0xf')];this[_0x6528('0x10')]=_0x49073d[_0x6528('0x10')];}module[_0x6528('0x11')]=FaxAccount;
\ No newline at end of file
+var _0x6030=['localstationid','minrate','maxrate','modem','faxdetect','t38timeout','SIP','Trunk','ListId','key','exports','name','ecm','headerinfo'];(function(_0x43aee5,_0x11268b){var _0x76d1d0=function(_0x3faee6){while(--_0x3faee6){_0x43aee5['push'](_0x43aee5['shift']());}};_0x76d1d0(++_0x11268b);}(_0x6030,0x1d9));var _0x0603=function(_0xb3f06c,_0x1ed027){_0xb3f06c=_0xb3f06c-0x0;var _0x45d225=_0x6030[_0xb3f06c];return _0x45d225;};'use strict';function FaxAccount(_0x3dc41a){this['id']=_0x3dc41a['id']||0x0;this[_0x0603('0x0')]=_0x3dc41a[_0x0603('0x0')]||'';this['description']=_0x3dc41a['description'];this[_0x0603('0x1')]=_0x3dc41a[_0x0603('0x1')];this['headerinfo']=_0x3dc41a[_0x0603('0x2')];this[_0x0603('0x3')]=_0x3dc41a[_0x0603('0x3')];this[_0x0603('0x4')]=_0x3dc41a[_0x0603('0x4')]||0x960;this[_0x0603('0x5')]=_0x3dc41a[_0x0603('0x5')]||0x3840;this[_0x0603('0x6')]=_0x3dc41a[_0x0603('0x6')]||'v17,v27,v29';this['gateway']=_0x3dc41a['gateway']||'no';this['faxdetect']=_0x3dc41a[_0x0603('0x7')]||'no';this[_0x0603('0x8')]=_0x3dc41a['t38timeout']||0x1388;this['tech']=_0x3dc41a['tech']||_0x0603('0x9');this[_0x0603('0xa')]=_0x3dc41a[_0x0603('0xa')]?_0x3dc41a['Trunk']:undefined;this[_0x0603('0xb')]=_0x3dc41a[_0x0603('0xb')];this[_0x0603('0xc')]=_0x3dc41a[_0x0603('0xc')];}module[_0x0603('0xd')]=FaxAccount;
\ No newline at end of file
index 96e712e..1dfeb71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb382=['remoteUri','serverUrl','Configurations','exports','name','username','token'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xb382,0x1d9));var _0x2b38=function(_0xca162,_0x199a96){_0xca162=_0xca162-0x0;var _0x2e3fa1=_0xb382[_0xca162];return _0x2e3fa1;};'use strict';function FreshdeskAccount(_0x274b3b){this['id']=_0x274b3b['id']||0x0;this[_0x2b38('0x0')]=_0x274b3b[_0x2b38('0x0')]||'';this[_0x2b38('0x1')]=_0x274b3b['username']||'';this['apiKey']=_0x274b3b[_0x2b38('0x2')]||'';this[_0x2b38('0x3')]=_0x274b3b[_0x2b38('0x3')]||'';this['serverUrl']=_0x274b3b[_0x2b38('0x4')]||'';this['Configurations']=_0x274b3b[_0x2b38('0x5')]||{};}module[_0x2b38('0x6')]=FreshdeskAccount;
\ No newline at end of file
+var _0xd25b=['apiKey','token','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd25b,0xa6));var _0xbd25=function(_0x164f25,_0x2a408c){_0x164f25=_0x164f25-0x0;var _0x2a9bab=_0xd25b[_0x164f25];return _0x2a9bab;};'use strict';function FreshdeskAccount(_0x2e166f){this['id']=_0x2e166f['id']||0x0;this['name']=_0x2e166f[_0xbd25('0x0')]||'';this[_0xbd25('0x1')]=_0x2e166f['username']||'';this[_0xbd25('0x2')]=_0x2e166f[_0xbd25('0x3')]||'';this[_0xbd25('0x4')]=_0x2e166f['remoteUri']||'';this[_0xbd25('0x5')]=_0x2e166f[_0xbd25('0x5')]||'';this[_0xbd25('0x6')]=_0x2e166f[_0xbd25('0x6')]||{};}module[_0xbd25('0x7')]=FreshdeskAccount;
\ No newline at end of file
index 588790e..13fedd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x979e=['token','remoteUri','serverUrl','Configurations','exports','name','username','apiKey'];(function(_0x1b2ff7,_0x12a034){var _0x31656a=function(_0x1165a5){while(--_0x1165a5){_0x1b2ff7['push'](_0x1b2ff7['shift']());}};_0x31656a(++_0x12a034);}(_0x979e,0x195));var _0xe979=function(_0x533f8f,_0x3e50b3){_0x533f8f=_0x533f8f-0x0;var _0x43bd37=_0x979e[_0x533f8f];return _0x43bd37;};'use strict';function FreshsalesAccount(_0x27b5c3){this['id']=_0x27b5c3['id']||0x0;this[_0xe979('0x0')]=_0x27b5c3[_0xe979('0x0')]||'';this[_0xe979('0x1')]=_0x27b5c3['username']||'';this[_0xe979('0x2')]=_0x27b5c3[_0xe979('0x3')]||'';this[_0xe979('0x4')]=_0x27b5c3[_0xe979('0x4')]||'';this[_0xe979('0x5')]=_0x27b5c3['serverUrl']||'';this[_0xe979('0x6')]=_0x27b5c3['Configurations']||{};}module[_0xe979('0x7')]=FreshsalesAccount;
\ No newline at end of file
+var _0xd7c3=['token','remoteUri','serverUrl','name','username','apiKey'];(function(_0x45adb4,_0x2abb06){var _0x137296=function(_0x552ec9){while(--_0x552ec9){_0x45adb4['push'](_0x45adb4['shift']());}};_0x137296(++_0x2abb06);}(_0xd7c3,0x1c5));var _0x3d7c=function(_0x3074f4,_0x31145f){_0x3074f4=_0x3074f4-0x0;var _0x578473=_0xd7c3[_0x3074f4];return _0x578473;};'use strict';function FreshsalesAccount(_0x5c1e67){this['id']=_0x5c1e67['id']||0x0;this[_0x3d7c('0x0')]=_0x5c1e67[_0x3d7c('0x0')]||'';this[_0x3d7c('0x1')]=_0x5c1e67[_0x3d7c('0x1')]||'';this[_0x3d7c('0x2')]=_0x5c1e67[_0x3d7c('0x3')]||'';this[_0x3d7c('0x4')]=_0x5c1e67[_0x3d7c('0x4')]||'';this['serverUrl']=_0x5c1e67[_0x3d7c('0x5')]||'';this['Configurations']=_0x5c1e67['Configurations']||{};}module['exports']=FreshsalesAccount;
\ No newline at end of file
index e1783fb..a3ca28f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x487d=['priority','holdtime','motionChannel','voice','mohtime','variables','exports','type','inbound','uniqueid','queue','queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallerabandon','queuecallerabandonAt','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinename','accountcode','context','exten'];(function(_0x34620e,_0x582015){var _0x3d33cd=function(_0x19dc7f){while(--_0x19dc7f){_0x34620e['push'](_0x34620e['shift']());}};_0x3d33cd(++_0x582015);}(_0x487d,0x173));var _0xd487=function(_0x483657,_0x4c9172){_0x483657=_0x483657-0x0;var _0xe9877c=_0x487d[_0x483657];return _0xe9877c;};'use strict';function QueueReport(){this[_0xd487('0x0')]=_0xd487('0x1');this[_0xd487('0x2')]='';this['calleridnum']='';this['calleridname']='';this[_0xd487('0x3')]='';this[_0xd487('0x4')]=null;this[_0xd487('0x5')]=null;this[_0xd487('0x6')]=0x1;this[_0xd487('0x7')]=0x1;this[_0xd487('0x8')]=![];this[_0xd487('0x9')]=null;this['queuecallercomplete']=![];this[_0xd487('0xa')]=null;this[_0xd487('0xb')]=![];this[_0xd487('0xc')]=null;this[_0xd487('0xd')]=0x1;this[_0xd487('0xe')]='';this['connectedlinenum']='';this[_0xd487('0xf')]='';this[_0xd487('0x10')]='';this[_0xd487('0x11')]='';this[_0xd487('0x12')]='';this[_0xd487('0x13')]='';this[_0xd487('0x14')]=0x0;this['assigned']=![];this['lastAssignedTo']='';this[_0xd487('0x15')]=_0xd487('0x16');this[_0xd487('0x17')]=0x0;this[_0xd487('0x18')]={};}module[_0xd487('0x19')]=QueueReport;
\ No newline at end of file
+var _0xffac=['voice','mohtime','variables','type','calleridnum','queuecallerjoinAt','queuecallerleaveAt','position','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum','connectedlinename','accountcode','context','exten','priority','holdtime','assigned','motionChannel'];(function(_0x120761,_0x1838dc){var _0x17a331=function(_0x353050){while(--_0x353050){_0x120761['push'](_0x120761['shift']());}};_0x17a331(++_0x1838dc);}(_0xffac,0x183));var _0xcffa=function(_0x1ea552,_0x3eecb3){_0x1ea552=_0x1ea552-0x0;var _0x2b7894=_0xffac[_0x1ea552];return _0x2b7894;};'use strict';function QueueReport(){this[_0xcffa('0x0')]='inbound';this['uniqueid']='';this[_0xcffa('0x1')]='';this['calleridname']='';this['queue']='';this[_0xcffa('0x2')]=null;this[_0xcffa('0x3')]=null;this[_0xcffa('0x4')]=0x1;this['count']=0x1;this['queuecallerabandon']=![];this[_0xcffa('0x5')]=null;this[_0xcffa('0x6')]=![];this[_0xcffa('0x7')]=null;this[_0xcffa('0x8')]=![];this[_0xcffa('0x9')]=null;this[_0xcffa('0xa')]=0x1;this[_0xcffa('0xb')]='';this[_0xcffa('0xc')]='';this[_0xcffa('0xd')]='';this[_0xcffa('0xe')]='';this[_0xcffa('0xf')]='';this[_0xcffa('0x10')]='';this[_0xcffa('0x11')]='';this[_0xcffa('0x12')]=0x0;this[_0xcffa('0x13')]=![];this['lastAssignedTo']='';this[_0xcffa('0x14')]=_0xcffa('0x15');this[_0xcffa('0x16')]=0x0;this[_0xcffa('0x17')]={};}module['exports']=QueueReport;
\ No newline at end of file
index da65a22..084df2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3aa7=['clientId','clientSecret','securityToken','type','integrationTab','Configurations','exports','username','remoteUri','password'];(function(_0xc2f9c9,_0x4beb45){var _0x80e10f=function(_0x52177d){while(--_0x52177d){_0xc2f9c9['push'](_0xc2f9c9['shift']());}};_0x80e10f(++_0x4beb45);}(_0x3aa7,0xd9));var _0x73aa=function(_0x33eb02,_0x18ce8d){_0x33eb02=_0x33eb02-0x0;var _0x42220b=_0x3aa7[_0x33eb02];return _0x42220b;};'use strict';function SalesforceAccount(_0x49eb41){this['id']=_0x49eb41['id']||0x0;this['name']=_0x49eb41['name']||'';this[_0x73aa('0x0')]=_0x49eb41[_0x73aa('0x0')]||'';this[_0x73aa('0x1')]=_0x49eb41[_0x73aa('0x1')]||'';this[_0x73aa('0x2')]=_0x49eb41['password']||'';this[_0x73aa('0x3')]=_0x49eb41[_0x73aa('0x3')]||'';this[_0x73aa('0x4')]=_0x49eb41['clientSecret']||'';this[_0x73aa('0x5')]=_0x49eb41[_0x73aa('0x5')]||'';this[_0x73aa('0x6')]=_0x49eb41[_0x73aa('0x6')]||_0x73aa('0x7');this['serverUrl']=_0x49eb41['serverUrl']||'';this['Configurations']=_0x49eb41[_0x73aa('0x8')]||{};}module[_0x73aa('0x9')]=SalesforceAccount;
\ No newline at end of file
+var _0xb16a=['Configurations','exports','username','remoteUri','password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0xb16a,0x178));var _0xab16=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xb16a[_0x2b4411];return _0x8e41ef;};'use strict';function SalesforceAccount(_0xe2f0a2){this['id']=_0xe2f0a2['id']||0x0;this['name']=_0xe2f0a2['name']||'';this[_0xab16('0x0')]=_0xe2f0a2[_0xab16('0x0')]||'';this[_0xab16('0x1')]=_0xe2f0a2[_0xab16('0x1')]||'';this[_0xab16('0x2')]=_0xe2f0a2['password']||'';this[_0xab16('0x3')]=_0xe2f0a2['clientId']||'';this[_0xab16('0x4')]=_0xe2f0a2['clientSecret']||'';this[_0xab16('0x5')]=_0xe2f0a2[_0xab16('0x5')]||'';this[_0xab16('0x6')]=_0xe2f0a2[_0xab16('0x6')]||_0xab16('0x7');this[_0xab16('0x8')]=_0xe2f0a2[_0xab16('0x8')]||'';this[_0xab16('0x9')]=_0xe2f0a2[_0xab16('0x9')]||{};}module[_0xab16('0xa')]=SalesforceAccount;
\ No newline at end of file
index 685e83e..050d3ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52d4=['password','serverUrl','Configurations','name','username'];(function(_0x1ae4a9,_0x4c0ed9){var _0x54d0b0=function(_0x4fff20){while(--_0x4fff20){_0x1ae4a9['push'](_0x1ae4a9['shift']());}};_0x54d0b0(++_0x4c0ed9);}(_0x52d4,0xc1));var _0x452d=function(_0x3d8776,_0x5305dc){_0x3d8776=_0x3d8776-0x0;var _0x51d331=_0x52d4[_0x3d8776];return _0x51d331;};'use strict';function ServicenowAccount(_0x2a5a39){this['id']=_0x2a5a39['id']||0x0;this[_0x452d('0x0')]=_0x2a5a39[_0x452d('0x0')]||'';this[_0x452d('0x1')]=_0x2a5a39[_0x452d('0x1')]||'';this['password']=_0x2a5a39[_0x452d('0x2')]||'';this['remoteUri']=_0x2a5a39['remoteUri']||'';this[_0x452d('0x3')]=_0x2a5a39[_0x452d('0x3')]||'';this[_0x452d('0x4')]=_0x2a5a39['Configurations']||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
+var _0x3e3f=['serverUrl','Configurations','name','username','password','remoteUri'];(function(_0x4697fa,_0x21c841){var _0x390950=function(_0x3deb8a){while(--_0x3deb8a){_0x4697fa['push'](_0x4697fa['shift']());}};_0x390950(++_0x21c841);}(_0x3e3f,0x14c));var _0xf3e3=function(_0xd0bf48,_0x1bcaac){_0xd0bf48=_0xd0bf48-0x0;var _0x6042f1=_0x3e3f[_0xd0bf48];return _0x6042f1;};'use strict';function ServicenowAccount(_0x485eb2){this['id']=_0x485eb2['id']||0x0;this['name']=_0x485eb2[_0xf3e3('0x0')]||'';this[_0xf3e3('0x1')]=_0x485eb2[_0xf3e3('0x1')]||'';this['password']=_0x485eb2[_0xf3e3('0x2')]||'';this['remoteUri']=_0x485eb2[_0xf3e3('0x3')]||'';this['serverUrl']=_0x485eb2[_0xf3e3('0x4')]||'';this[_0xf3e3('0x5')]=_0x485eb2[_0xf3e3('0x5')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
index d8a0ff8..e6dc2b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaeff=['serverUrl','Configurations','exports','name','username','password','remoteUri'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xaeff,0xea));var _0xfaef=function(_0x2cf153,_0x252578){_0x2cf153=_0x2cf153-0x0;var _0x29e48b=_0xaeff[_0x2cf153];return _0x29e48b;};'use strict';function SugarcrmAccount(_0x735b4){this['id']=_0x735b4['id']||0x0;this[_0xfaef('0x0')]=_0x735b4[_0xfaef('0x0')]||'';this[_0xfaef('0x1')]=_0x735b4[_0xfaef('0x1')]||'';this[_0xfaef('0x2')]=_0x735b4[_0xfaef('0x2')]||'';this[_0xfaef('0x3')]=_0x735b4['remoteUri']||'';this[_0xfaef('0x4')]=_0x735b4['serverUrl']||'';this[_0xfaef('0x5')]=_0x735b4[_0xfaef('0x5')]||{};}module[_0xfaef('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0x1794=['username','password','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x53995f,_0x1b135c){var _0x1649a9=function(_0x4da99b){while(--_0x4da99b){_0x53995f['push'](_0x53995f['shift']());}};_0x1649a9(++_0x1b135c);}(_0x1794,0x180));var _0x4179=function(_0x165adb,_0x1e4659){_0x165adb=_0x165adb-0x0;var _0x19bf14=_0x1794[_0x165adb];return _0x19bf14;};'use strict';function SugarcrmAccount(_0xba12a5){this['id']=_0xba12a5['id']||0x0;this['name']=_0xba12a5[_0x4179('0x0')]||'';this[_0x4179('0x1')]=_0xba12a5[_0x4179('0x1')]||'';this[_0x4179('0x2')]=_0xba12a5[_0x4179('0x2')]||'';this[_0x4179('0x3')]=_0xba12a5[_0x4179('0x3')]||'';this['serverUrl']=_0xba12a5[_0x4179('0x4')]||'';this[_0x4179('0x5')]=_0xba12a5['Configurations']||{};}module[_0x4179('0x6')]=SugarcrmAccount;
\ No newline at end of file
index 8ee694e..7acd2c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb126=['state','unknown','status','address','name','accountcode'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0xb126,0xb2));var _0x6b12=function(_0x23e6e4,_0x51915b){_0x23e6e4=_0x23e6e4-0x0;var _0x3fc944=_0xb126[_0x23e6e4];return _0x3fc944;};'use strict';function Telephone(_0x32fd83){this['id']=_0x32fd83['id']||0x0;this['name']=_0x32fd83[_0x6b12('0x0')]||'';this[_0x6b12('0x1')]=_0x32fd83['accountcode']||'';this[_0x6b12('0x2')]=_0x6b12('0x3');this['stateTime']=0x0;this[_0x6b12('0x4')]='unknown';this[_0x6b12('0x5')]='';}module['exports']=Telephone;
\ No newline at end of file
+var _0x915a=['exports','name','accountcode','unknown','address'];(function(_0x15c1b8,_0x213c2d){var _0x57bcec=function(_0x335ee6){while(--_0x335ee6){_0x15c1b8['push'](_0x15c1b8['shift']());}};_0x57bcec(++_0x213c2d);}(_0x915a,0x1d2));var _0xa915=function(_0x66b8ce,_0x51046d){_0x66b8ce=_0x66b8ce-0x0;var _0x30767b=_0x915a[_0x66b8ce];return _0x30767b;};'use strict';function Telephone(_0x64e983){this['id']=_0x64e983['id']||0x0;this[_0xa915('0x0')]=_0x64e983[_0xa915('0x0')]||'';this[_0xa915('0x1')]=_0x64e983[_0xa915('0x1')]||'';this['state']=_0xa915('0x2');this['stateTime']=0x0;this['status']=_0xa915('0x2');this[_0xa915('0x3')]='';}module[_0xa915('0x4')]=Telephone;
\ No newline at end of file
index fbfafef..6c1b517 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['name','html'];(function(_0x2a7b0f,_0x435629){var _0x1a5f79=function(_0x38685d){while(--_0x38685d){_0x2a7b0f['push'](_0x2a7b0f['shift']());}};_0x1a5f79(++_0x435629);}(_0xb10b,0x12a));var _0xbb10=function(_0x3d4ef1,_0x5a957c){_0x3d4ef1=_0x3d4ef1-0x0;var _0x409423=_0xb10b[_0x3d4ef1];return _0x409423;};'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
+var _0xa9e0=['exports','name'];(function(_0x122812,_0x4479c6){var _0x5d4e60=function(_0x4481b2){while(--_0x4481b2){_0x122812['push'](_0x122812['shift']());}};_0x5d4e60(++_0x4479c6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0xa9e0[_0x4b7b62];return _0x2280df;};'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
index ef6499d..479a530 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['name','status','AllConditions','AnyConditions','Actions','exports'];(function(_0x1fa456,_0x24ad1d){var _0x357589=function(_0x2c265e){while(--_0x2c265e){_0x1fa456['push'](_0x1fa456['shift']());}};_0x357589(++_0x24ad1d);}(_0x757a,0xde));var _0xa757=function(_0x317079,_0x37a87b){_0x317079=_0x317079-0x0;var _0x4e7c72=_0x757a[_0x317079];return _0x4e7c72;};'use strict';function Trigger(_0x1acf7d){this['id']=_0x1acf7d['id']||0x0;this[_0xa757('0x0')]=_0x1acf7d[_0xa757('0x0')]||'';this['channel']=_0x1acf7d['channel']||'voice';this[_0xa757('0x1')]=_0x1acf7d[_0xa757('0x1')]||![];this[_0xa757('0x2')]=_0x1acf7d[_0xa757('0x2')]||[];this[_0xa757('0x3')]=_0x1acf7d[_0xa757('0x3')]||[];this['Actions']=_0x1acf7d[_0xa757('0x4')]||[];}module[_0xa757('0x5')]=Trigger;
\ No newline at end of file
+var _0x0b0e=['channel','voice','status','AllConditions','AnyConditions','Actions','exports','name'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0b0e,0x187));var _0xe0b0=function(_0x519c88,_0xb84103){_0x519c88=_0x519c88-0x0;var _0x4668d7=_0x0b0e[_0x519c88];return _0x4668d7;};'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
index 327c70e..f06a665 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54b4=['split','host','port','domainport','stateRegistry','registrationtime','address','defaultuser','exports','active','name','unknown','stateTime','registry','indexOf'];(function(_0x270cfb,_0xaf2f71){var _0x14a1a0=function(_0x461c8c){while(--_0x461c8c){_0x270cfb['push'](_0x270cfb['shift']());}};_0x14a1a0(++_0xaf2f71);}(_0x54b4,0x135));var _0x454b=function(_0x2c1ad8,_0x56b0bf){_0x2c1ad8=_0x2c1ad8-0x0;var _0x209c8c=_0x54b4[_0x2c1ad8];return _0x209c8c;};'use strict';function Trunk(_0x4a973){this['id']=_0x4a973['id']||0x0;this['active']=_0x4a973[_0x454b('0x0')]||![];this[_0x454b('0x1')]=_0x4a973['name']||'';this['state']=_0x454b('0x2');this[_0x454b('0x3')]=0x0;this['status']=_0x454b('0x2');this['registry']=_0x4a973['registry']&&_0x4a973[_0x454b('0x4')][_0x454b('0x5')](':')?_0x4a973[_0x454b('0x4')][_0x454b('0x6')](':')[0x0]:'';this[_0x454b('0x7')]='';this[_0x454b('0x8')]='';this['domain']='';this[_0x454b('0x9')]='';this['refresh']='';this[_0x454b('0xa')]=_0x454b('0x2');this[_0x454b('0xb')]='';this[_0x454b('0xc')]='';this['defaultuser']=_0x4a973[_0x454b('0xd')]||'';}module[_0x454b('0xe')]=Trunk;
\ No newline at end of file
+var _0x5dd4=['refresh','stateRegistry','address','defaultuser','exports','active','name','state','unknown','stateTime','status','registry','indexOf','split','host','port','domain','domainport'];(function(_0x19aa8e,_0x39b188){var _0x4b1fa3=function(_0x57c6ac){while(--_0x57c6ac){_0x19aa8e['push'](_0x19aa8e['shift']());}};_0x4b1fa3(++_0x39b188);}(_0x5dd4,0x101));var _0x45dd=function(_0x41ba1e,_0x269f47){_0x41ba1e=_0x41ba1e-0x0;var _0x40ea2d=_0x5dd4[_0x41ba1e];return _0x40ea2d;};'use strict';function Trunk(_0x51e899){this['id']=_0x51e899['id']||0x0;this[_0x45dd('0x0')]=_0x51e899['active']||![];this['name']=_0x51e899[_0x45dd('0x1')]||'';this[_0x45dd('0x2')]=_0x45dd('0x3');this[_0x45dd('0x4')]=0x0;this[_0x45dd('0x5')]=_0x45dd('0x3');this[_0x45dd('0x6')]=_0x51e899[_0x45dd('0x6')]&&_0x51e899[_0x45dd('0x6')][_0x45dd('0x7')](':')?_0x51e899[_0x45dd('0x6')][_0x45dd('0x8')](':')[0x0]:'';this[_0x45dd('0x9')]='';this[_0x45dd('0xa')]='';this[_0x45dd('0xb')]='';this[_0x45dd('0xc')]='';this[_0x45dd('0xd')]='';this[_0x45dd('0xe')]=_0x45dd('0x3');this['registrationtime']='';this[_0x45dd('0xf')]='';this[_0x45dd('0x10')]=_0x51e899['defaultuser']||'';}module[_0x45dd('0x11')]=Trunk;
\ No newline at end of file
index 838d4e3..f2a47ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a30=['exports','exten','recordingFormat','none','mandatoryDisposition'];(function(_0x37828b,_0x69a34c){var _0x36dcf3=function(_0x19895c){while(--_0x19895c){_0x37828b['push'](_0x37828b['shift']());}};_0x36dcf3(++_0x69a34c);}(_0x1a30,0xa1));var _0x01a3=function(_0x4202c7,_0xafbb0d){_0x4202c7=_0x4202c7-0x0;var _0x21ece9=_0x1a30[_0x4202c7];return _0x21ece9;};'use strict';function voiceExtension(_0x205e60){this['id']=_0x205e60['id']||0x0;this['exten']=_0x205e60[_0x01a3('0x0')]||'';this[_0x01a3('0x1')]=_0x205e60[_0x01a3('0x1')]||_0x01a3('0x2');this[_0x01a3('0x3')]=_0x205e60['mandatoryDisposition']||![];}module[_0x01a3('0x4')]=voiceExtension;
\ No newline at end of file
+var _0xb6fa=['mandatoryDisposition','exports','recordingFormat','none'];(function(_0x49043a,_0x25df78){var _0x247829=function(_0x301168){while(--_0x301168){_0x49043a['push'](_0x49043a['shift']());}};_0x247829(++_0x25df78);}(_0xb6fa,0x116));var _0xab6f=function(_0x2261ce,_0x9ed8b6){_0x2261ce=_0x2261ce-0x0;var _0x524640=_0xb6fa[_0x2261ce];return _0x524640;};'use strict';function voiceExtension(_0x570ecb){this['id']=_0x570ecb['id']||0x0;this['exten']=_0x570ecb['exten']||'';this['recordingFormat']=_0x570ecb[_0xab6f('0x0')]||_0xab6f('0x1');this[_0xab6f('0x2')]=_0x570ecb[_0xab6f('0x2')]||![];}module[_0xab6f('0x3')]=voiceExtension;
\ No newline at end of file
index 5c7ff70..0a65bb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbda=['not_inuse','inuse','busy','invalid','ringing','onhold','gsm','rrmemory','roundrobin','name','monitor_format','type','waiting','talking','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','available','acw','autopause','sendMessageOneNotActive','message','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','dialPrefix','Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports'];(function(_0x3717ec,_0x18e911){var _0x5b1f50=function(_0x19a422){while(--_0x19a422){_0x3717ec['push'](_0x3717ec['shift']());}};_0x5b1f50(++_0x18e911);}(_0xcbda,0x7c));var _0xacbd=function(_0x4a6860,_0xf2203c){_0x4a6860=_0x4a6860-0x0;var _0x359f99=_0xcbda[_0x4a6860];return _0x359f99;};'use strict';var statusDesc=['unknown',_0xacbd('0x0'),_0xacbd('0x1'),_0xacbd('0x2'),_0xacbd('0x3'),'unavailable',_0xacbd('0x4'),'ringinuse',_0xacbd('0x5')];var monitorFormat={'wav':'wav','wav49':'wav49','gsm':_0xacbd('0x6')};var strategy={'rrmemory':_0xacbd('0x7'),'roundrobin':_0xacbd('0x8')};function VoiceQueue(_0x38d9a9){this['id']=_0x38d9a9['id']||0x0;this[_0xacbd('0x9')]=_0x38d9a9['name']||'';this[_0xacbd('0xa')]=_0x38d9a9['monitor_format']||'';this[_0xacbd('0xb')]=_0x38d9a9['type']||'inbound';this[_0xacbd('0xc')]=0x0;this[_0xacbd('0xd')]=0x0;this[_0xacbd('0xe')]=0x0;this[_0xacbd('0xf')]=0x0;this[_0xacbd('0x10')]=0x0;this[_0xacbd('0x11')]=0x0;this[_0xacbd('0x12')]=0x0;this[_0xacbd('0x13')]=0x0;this[_0xacbd('0x14')]=0x0;this[_0xacbd('0x15')]=0x0;this[_0xacbd('0x16')]=0x0;this[_0xacbd('0x17')]=_0x38d9a9['acw']||![];this['acwTimeout']=_0x38d9a9['acwTimeout']||0xa;this[_0xacbd('0x18')]=_0x38d9a9[_0xacbd('0x18')]||'no';this[_0xacbd('0x19')]=!![];this[_0xacbd('0x1a')]='';this['originated']=0x0;this[_0xacbd('0x1b')]=0x0;this[_0xacbd('0x1c')]=_0x38d9a9['dialTimezone']||null;this[_0xacbd('0x1d')]=_0x38d9a9[_0xacbd('0x1d')]?_0x38d9a9['dialGlobalInterval']:null;this[_0xacbd('0x1e')]=_0x38d9a9[_0xacbd('0x1e')];this['dialMethod']=_0x38d9a9[_0xacbd('0x1f')]||_0xacbd('0x20');this[_0xacbd('0x21')]=_0x38d9a9[_0xacbd('0x21')]||0x0;this[_0xacbd('0x22')]=_0x38d9a9[_0xacbd('0x22')]||0x0;this[_0xacbd('0x23')]=_0x38d9a9[_0xacbd('0x23')]||0x1;this[_0xacbd('0x24')]=_0x38d9a9[_0xacbd('0x24')]||'dropRate';this[_0xacbd('0x25')]=_0x38d9a9[_0xacbd('0x25')]||0.03;this[_0xacbd('0x26')]=_0x38d9a9[_0xacbd('0x26')]||0x258;this[_0xacbd('0x27')]=_0x38d9a9[_0xacbd('0x27')]||_0xacbd('0x28');this[_0xacbd('0x29')]=_0x38d9a9['dialOriginateCallerIdNumber']||_0xacbd('0x28');this[_0xacbd('0x2a')]=_0x38d9a9[_0xacbd('0x2a')]||0x1e;this[_0xacbd('0x2b')]=_0x38d9a9[_0xacbd('0x2b')]||_0xacbd('0x2c');this[_0xacbd('0x2d')]=_0x38d9a9['dialQueueTimeout']||0x3;this[_0xacbd('0x2e')]=_0x38d9a9[_0xacbd('0x2e')]||undefined;this[_0xacbd('0x2f')]=_0x38d9a9[_0xacbd('0x2f')]||0x3;this[_0xacbd('0x30')]=_0x38d9a9[_0xacbd('0x30')]||0x96;this['dialBusyMaxRetry']=_0x38d9a9[_0xacbd('0x31')]||0x3;this[_0xacbd('0x32')]=_0x38d9a9[_0xacbd('0x32')]||0x96;this['dialNoAnswerMaxRetry']=_0x38d9a9[_0xacbd('0x33')]||0x3;this[_0xacbd('0x34')]=_0x38d9a9[_0xacbd('0x34')]||0x96;this[_0xacbd('0x35')]=_0x38d9a9['dialNoSuchNumberMaxRetry']||0x3;this[_0xacbd('0x36')]=_0x38d9a9['dialNoSuchNumberRetryFrequency']||0x96;this[_0xacbd('0x37')]=_0x38d9a9[_0xacbd('0x37')]||0x3;this[_0xacbd('0x38')]=_0x38d9a9['dialDropRetryFrequency']||0x96;this['dialAbandonedMaxRetry']=_0x38d9a9[_0xacbd('0x39')]||0x3;this['dialAbandonedRetryFrequency']=_0x38d9a9[_0xacbd('0x3a')]||0x96;this[_0xacbd('0x3b')]=_0x38d9a9[_0xacbd('0x3b')]||0x3;this[_0xacbd('0x3c')]=_0x38d9a9[_0xacbd('0x3c')]||0x96;this['dialAgentRejectMaxRetry']=_0x38d9a9[_0xacbd('0x3d')]||0x3;this[_0xacbd('0x3e')]=_0x38d9a9[_0xacbd('0x3e')]||0x96;this[_0xacbd('0x3f')]=_0x38d9a9[_0xacbd('0x3f')]||0x3;this[_0xacbd('0x40')]=_0x38d9a9['dialGlobalMaxRetry']||0x4;this[_0xacbd('0x41')]=_0x38d9a9[_0xacbd('0x41')]?_0x38d9a9[_0xacbd('0x41')]:undefined;this['TrunkBackup']=_0x38d9a9['TrunkBackup']?_0x38d9a9['TrunkBackup']:undefined;this[_0xacbd('0x42')]=_0x38d9a9['dialPrefix']||undefined;this[_0xacbd('0x43')]=_0x38d9a9[_0xacbd('0x43')]?_0x38d9a9['Interval']:undefined;this[_0xacbd('0x44')]=_0x38d9a9['dialOrderByScheduledAt']||'DESC';this[_0xacbd('0x45')]=_0x38d9a9[_0xacbd('0x45')]||undefined;this[_0xacbd('0x46')]=_0x38d9a9[_0xacbd('0x46')]||undefined;this[_0xacbd('0x47')]=strategy[_0x38d9a9[_0xacbd('0x47')]]||'rrmemory';this[_0xacbd('0x48')]=!![];this[_0xacbd('0x49')]=_0x38d9a9[_0xacbd('0x49')]||![];this[_0xacbd('0x4a')]=_0x38d9a9[_0xacbd('0x4a')];this[_0xacbd('0x4b')]=_0x38d9a9[_0xacbd('0x4b')];this[_0xacbd('0x4c')]=_0x38d9a9[_0xacbd('0x4c')];this[_0xacbd('0x4d')]=_0x38d9a9[_0xacbd('0x4d')];this[_0xacbd('0x4e')]=_0x38d9a9['dialAMDMinWordLength'];this[_0xacbd('0x4f')]=_0x38d9a9[_0xacbd('0x4f')];this['dialAMDMaximumNumberOfWords']=_0x38d9a9[_0xacbd('0x50')];this[_0xacbd('0x51')]=_0x38d9a9[_0xacbd('0x51')];this['dialAMDMaximumWordLength']=_0x38d9a9['dialAMDMaximumWordLength'];this[_0xacbd('0x52')]=0x0;this[_0xacbd('0x53')]=0x0;this[_0xacbd('0x54')]=_0x38d9a9[_0xacbd('0x54')];this[_0xacbd('0x55')]=0x0;this[_0xacbd('0x56')]=0x0;this[_0xacbd('0x57')]=0x0;this[_0xacbd('0x58')]=0x0;this['outboundCongestionCallsDay']=0x0;this[_0xacbd('0x59')]=0x0;this[_0xacbd('0x5a')]=0x0;this[_0xacbd('0x5b')]=0x0;this[_0xacbd('0x5c')]=0x0;this[_0xacbd('0x5d')]=0x0;this[_0xacbd('0x5e')]=0x0;this[_0xacbd('0x5f')]=0x0;this[_0xacbd('0x60')]=0x0;this[_0xacbd('0x61')]=0x0;this[_0xacbd('0x62')]=undefined;this[_0xacbd('0x63')]=undefined;this[_0xacbd('0x64')]=undefined;this[_0xacbd('0x65')]=1.05;this[_0xacbd('0x66')]=0x0;this[_0xacbd('0x67')]=0x0;this[_0xacbd('0x68')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this['predictiveIntervalAvgHoldtime']=0x0;this['predictiveIntervalAvgTalktime']=0x0;this[_0xacbd('0x69')]=0x0;this[_0xacbd('0x6a')]=0x0;this[_0xacbd('0x6b')]=_0x38d9a9[_0xacbd('0x6c')]||0x14;this[_0xacbd('0x6d')]=_0x38d9a9[_0xacbd('0x6c')]||0xa;this[_0xacbd('0x6e')]=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this['predictiveIntervalHitRate']=0x1;this['erlangCalls']=0x0;this[_0xacbd('0x6f')]=0x0;this[_0xacbd('0x70')]=0x0;this[_0xacbd('0x71')]=0x0;this[_0xacbd('0x72')]=_0x38d9a9[_0xacbd('0x72')]||0x1e;this[_0xacbd('0x73')]=_0x38d9a9[_0xacbd('0x73')]||![];this[_0xacbd('0x74')]=!!_0x38d9a9[_0xacbd('0x74')]||![];this[_0xacbd('0x75')]=!!_0x38d9a9[_0xacbd('0x75')]||![];this['dialQueueProject2']=_0x38d9a9[_0xacbd('0x76')]||undefined;this['dialAgiAfterHangupClient']=_0x38d9a9[_0xacbd('0x77')]||![];this[_0xacbd('0x78')]=_0x38d9a9[_0xacbd('0x78')]||![];this[_0xacbd('0xa')]=monitorFormat[_0x38d9a9[_0xacbd('0xa')]]?monitorFormat[_0x38d9a9[_0xacbd('0xa')]]:undefined;this[_0xacbd('0x79')]=_0x38d9a9[_0xacbd('0x79')]||![];this[_0xacbd('0x7a')]=_0x38d9a9[_0xacbd('0x7a')]?_0x38d9a9[_0xacbd('0x7a')]:undefined;}module[_0xacbd('0x7b')]=VoiceQueue;
\ No newline at end of file
+var _0x0882=['outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDispositionPause','exports','unknown','not_inuse','busy','invalid','unavailable','ringing','ringinuse','onhold','wav','wav49','gsm','rrmemory','roundrobin','monitor_format','type','inbound','waiting','talking','answered','sumDuration','sumHoldTime','sumBillable','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','temp','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit'];(function(_0x40911f,_0x357ded){var _0x245e7c=function(_0x573042){while(--_0x573042){_0x40911f['push'](_0x40911f['shift']());}};_0x245e7c(++_0x357ded);}(_0x0882,0x99));var _0x2088=function(_0x372515,_0xdd11f){_0x372515=_0x372515-0x0;var _0xa3bf4e=_0x0882[_0x372515];return _0xa3bf4e;};'use strict';var statusDesc=[_0x2088('0x0'),_0x2088('0x1'),'inuse',_0x2088('0x2'),_0x2088('0x3'),_0x2088('0x4'),_0x2088('0x5'),_0x2088('0x6'),_0x2088('0x7')];var monitorFormat={'wav':_0x2088('0x8'),'wav49':_0x2088('0x9'),'gsm':_0x2088('0xa')};var strategy={'rrmemory':_0x2088('0xb'),'roundrobin':_0x2088('0xc')};function VoiceQueue(_0x1a47af){this['id']=_0x1a47af['id']||0x0;this['name']=_0x1a47af['name']||'';this[_0x2088('0xd')]=_0x1a47af[_0x2088('0xd')]||'';this[_0x2088('0xe')]=_0x1a47af[_0x2088('0xe')]||_0x2088('0xf');this[_0x2088('0x10')]=0x0;this[_0x2088('0x11')]=0x0;this['total']=0x0;this[_0x2088('0x12')]=0x0;this[_0x2088('0x13')]=0x0;this[_0x2088('0x14')]=0x0;this[_0x2088('0x15')]=0x0;this['unmanaged']=0x0;this[_0x2088('0x16')]=0x0;this[_0x2088('0x17')]=0x0;this[_0x2088('0x18')]=0x0;this[_0x2088('0x19')]=_0x1a47af[_0x2088('0x19')]||![];this[_0x2088('0x1a')]=_0x1a47af[_0x2088('0x1a')]||0xa;this[_0x2088('0x1b')]=_0x1a47af['autopause']||'no';this[_0x2088('0x1c')]=!![];this[_0x2088('0x1d')]='';this[_0x2088('0x1e')]=0x0;this[_0x2088('0x1f')]=0x0;this['dialTimezone']=_0x1a47af['dialTimezone']||null;this['dialGlobalInterval']=_0x1a47af[_0x2088('0x20')]?_0x1a47af['dialGlobalInterval']:null;this[_0x2088('0x21')]=_0x1a47af[_0x2088('0x21')];this[_0x2088('0x22')]=_0x1a47af['dialMethod']||_0x2088('0x23');this['dialLimitChannel']=_0x1a47af['dialLimitChannel']||0x0;this['dialLimitQueue']=_0x1a47af[_0x2088('0x24')]||0x0;this[_0x2088('0x25')]=_0x1a47af['dialPowerLevel']||0x1;this[_0x2088('0x26')]=_0x1a47af[_0x2088('0x26')]||_0x2088('0x27');this[_0x2088('0x28')]=_0x1a47af['dialPredictiveOptimizationPercentage']||0.03;this[_0x2088('0x29')]=_0x1a47af['dialPredictiveInterval']||0x258;this[_0x2088('0x2a')]=_0x1a47af[_0x2088('0x2a')]||_0x2088('0x2b');this[_0x2088('0x2c')]=_0x1a47af[_0x2088('0x2c')]||_0x2088('0x2b');this[_0x2088('0x2d')]=_0x1a47af['dialOriginateTimeout']||0x1e;this['dialQueueOptions']=_0x1a47af[_0x2088('0x2e')]||'tTxX';this[_0x2088('0x2f')]=_0x1a47af[_0x2088('0x2f')]||0x3;this[_0x2088('0x30')]=_0x1a47af[_0x2088('0x30')]||undefined;this[_0x2088('0x31')]=_0x1a47af[_0x2088('0x31')]||0x3;this['dialCongestionRetryFrequency']=_0x1a47af[_0x2088('0x32')]||0x96;this['dialBusyMaxRetry']=_0x1a47af[_0x2088('0x33')]||0x3;this[_0x2088('0x34')]=_0x1a47af[_0x2088('0x34')]||0x96;this[_0x2088('0x35')]=_0x1a47af['dialNoAnswerMaxRetry']||0x3;this[_0x2088('0x36')]=_0x1a47af[_0x2088('0x36')]||0x96;this['dialNoSuchNumberMaxRetry']=_0x1a47af[_0x2088('0x37')]||0x3;this[_0x2088('0x38')]=_0x1a47af['dialNoSuchNumberRetryFrequency']||0x96;this[_0x2088('0x39')]=_0x1a47af[_0x2088('0x39')]||0x3;this[_0x2088('0x3a')]=_0x1a47af[_0x2088('0x3a')]||0x96;this['dialAbandonedMaxRetry']=_0x1a47af[_0x2088('0x3b')]||0x3;this[_0x2088('0x3c')]=_0x1a47af['dialAbandonedRetryFrequency']||0x96;this[_0x2088('0x3d')]=_0x1a47af['dialMachineMaxRetry']||0x3;this[_0x2088('0x3e')]=_0x1a47af['dialMachineRetryFrequency']||0x96;this[_0x2088('0x3f')]=_0x1a47af[_0x2088('0x3f')]||0x3;this[_0x2088('0x40')]=_0x1a47af[_0x2088('0x40')]||0x96;this[_0x2088('0x41')]=_0x1a47af[_0x2088('0x41')]||0x3;this[_0x2088('0x42')]=_0x1a47af[_0x2088('0x42')]||0x4;this['Trunk']=_0x1a47af[_0x2088('0x43')]?_0x1a47af['Trunk']:undefined;this[_0x2088('0x44')]=_0x1a47af[_0x2088('0x44')]?_0x1a47af['TrunkBackup']:undefined;this[_0x2088('0x45')]=_0x1a47af[_0x2088('0x45')]||undefined;this[_0x2088('0x46')]=_0x1a47af[_0x2088('0x46')]?_0x1a47af['Interval']:undefined;this[_0x2088('0x47')]=_0x1a47af[_0x2088('0x47')]||_0x2088('0x48');this[_0x2088('0x49')]=_0x1a47af[_0x2088('0x49')]||undefined;this[_0x2088('0x4a')]=_0x1a47af[_0x2088('0x4a')]||undefined;this[_0x2088('0x4b')]=strategy[_0x1a47af['strategy']]||_0x2088('0xb');this[_0x2088('0x4c')]=!![];this[_0x2088('0x4d')]=_0x1a47af[_0x2088('0x4d')]||![];this[_0x2088('0x4e')]=_0x1a47af[_0x2088('0x4e')];this[_0x2088('0x4f')]=_0x1a47af['dialAMDGreeting'];this[_0x2088('0x50')]=_0x1a47af[_0x2088('0x50')];this[_0x2088('0x51')]=_0x1a47af[_0x2088('0x51')];this[_0x2088('0x52')]=_0x1a47af['dialAMDMinWordLength'];this[_0x2088('0x53')]=_0x1a47af['dialAMDBetweenWordsSilence'];this[_0x2088('0x54')]=_0x1a47af[_0x2088('0x54')];this[_0x2088('0x55')]=_0x1a47af[_0x2088('0x55')];this[_0x2088('0x56')]=_0x1a47af[_0x2088('0x56')];this['outboundRejectCallsDay']=0x0;this[_0x2088('0x57')]=0x0;this[_0x2088('0x58')]=_0x1a47af[_0x2088('0x58')];this[_0x2088('0x59')]=0x0;this[_0x2088('0x5a')]=0x0;this[_0x2088('0x5b')]=0x0;this[_0x2088('0x5c')]=0x0;this['outboundCongestionCallsDay']=0x0;this['outboundNoSuchCallsDay']=0x0;this[_0x2088('0x5d')]=0x0;this[_0x2088('0x5e')]=0x0;this[_0x2088('0x5f')]=0x0;this[_0x2088('0x60')]=0x0;this[_0x2088('0x61')]=0x0;this[_0x2088('0x62')]=0x0;this[_0x2088('0x63')]=0x0;this['outboundAbandonedDay']=0x0;this[_0x2088('0x64')]=undefined;this[_0x2088('0x65')]=undefined;this[_0x2088('0x66')]=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0x2088('0x67')]=0x0;this[_0x2088('0x68')]=0x0;this[_0x2088('0x69')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0x2088('0x6a')]=0x0;this[_0x2088('0x6b')]=0x0;this[_0x2088('0x6c')]=0x0;this['predictiveIntervalAvailable']=0x0;this['predictiveIntervalMaxThreshold']=_0x1a47af[_0x2088('0x6d')]||0x14;this[_0x2088('0x6e')]=_0x1a47af[_0x2088('0x6d')]||0xa;this[_0x2088('0x6f')]=0x0;this[_0x2088('0x70')]=0x0;this[_0x2088('0x71')]=0x1;this['erlangCalls']=0x0;this[_0x2088('0x72')]=0x0;this[_0x2088('0x73')]=0x0;this[_0x2088('0x74')]=0x0;this[_0x2088('0x75')]=_0x1a47af[_0x2088('0x75')]||0x1e;this['dialRecallInQueue']=_0x1a47af['dialRecallInQueue']||![];this['dialPreviewAutoRecallMe']=!!_0x1a47af[_0x2088('0x76')]||![];this[_0x2088('0x77')]=!!_0x1a47af[_0x2088('0x77')]||![];this[_0x2088('0x78')]=_0x1a47af[_0x2088('0x78')]||undefined;this[_0x2088('0x79')]=_0x1a47af[_0x2088('0x79')]||![];this['dialAgiAfterHangupAgent']=_0x1a47af[_0x2088('0x7a')]||![];this['monitor_format']=monitorFormat[_0x1a47af['monitor_format']]?monitorFormat[_0x1a47af[_0x2088('0xd')]]:undefined;this['mandatoryDisposition']=_0x1a47af['mandatoryDisposition']||![];this[_0x2088('0x7b')]=_0x1a47af[_0x2088('0x7b')]?_0x1a47af[_0x2088('0x7b')]:undefined;}module[_0x2088('0x7c')]=VoiceQueue;
\ No newline at end of file
index 02c1a60..6aa8c0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf245=['name','username','accessKey','remoteUri','serverUrl','Configurations','exports'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0xf245,0x1ce));var _0x5f24=function(_0x56c70f,_0x4e4493){_0x56c70f=_0x56c70f-0x0;var _0x3812ed=_0xf245[_0x56c70f];return _0x3812ed;};'use strict';function VtigerAccount(_0x511c7d){this['id']=_0x511c7d['id']||0x0;this[_0x5f24('0x0')]=_0x511c7d[_0x5f24('0x0')]||'';this[_0x5f24('0x1')]=_0x511c7d['username']||'';this[_0x5f24('0x2')]=_0x511c7d[_0x5f24('0x2')]||'';this[_0x5f24('0x3')]=_0x511c7d[_0x5f24('0x3')]||'';this[_0x5f24('0x4')]=_0x511c7d[_0x5f24('0x4')]||'';this[_0x5f24('0x5')]=_0x511c7d[_0x5f24('0x5')]||{};}module[_0x5f24('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0xd36d=['username','accessKey','remoteUri','serverUrl','name'];(function(_0x23a355,_0x45ea35){var _0x420341=function(_0x4ad90c){while(--_0x4ad90c){_0x23a355['push'](_0x23a355['shift']());}};_0x420341(++_0x45ea35);}(_0xd36d,0x72));var _0xdd36=function(_0x3d437d,_0x4df6a5){_0x3d437d=_0x3d437d-0x0;var _0x4812df=_0xd36d[_0x3d437d];return _0x4812df;};'use strict';function VtigerAccount(_0x280880){this['id']=_0x280880['id']||0x0;this['name']=_0x280880[_0xdd36('0x0')]||'';this[_0xdd36('0x1')]=_0x280880[_0xdd36('0x1')]||'';this[_0xdd36('0x2')]=_0x280880[_0xdd36('0x2')]||'';this[_0xdd36('0x3')]=_0x280880[_0xdd36('0x3')]||'';this[_0xdd36('0x4')]=_0x280880[_0xdd36('0x4')]||'';this['Configurations']=_0x280880['Configurations']||{};}module['exports']=VtigerAccount;
\ No newline at end of file
index 0d88d35..f6ad686 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x584d=['remoteUri','authType','type','serverUrl','Configurations','exports','name','username','password','token'];(function(_0x379340,_0x46b98f){var _0x4a0a1f=function(_0x433d84){while(--_0x433d84){_0x379340['push'](_0x379340['shift']());}};_0x4a0a1f(++_0x46b98f);}(_0x584d,0xe2));var _0xd584=function(_0x4ac7fe,_0x5c7b08){_0x4ac7fe=_0x4ac7fe-0x0;var _0x1b09c5=_0x584d[_0x4ac7fe];return _0x1b09c5;};'use strict';function ZendeskAccount(_0x184ec2){this['id']=_0x184ec2['id']||0x0;this['name']=_0x184ec2[_0xd584('0x0')]||'';this[_0xd584('0x1')]=_0x184ec2[_0xd584('0x1')]||'';this['password']=_0x184ec2[_0xd584('0x2')]||'';this[_0xd584('0x3')]=_0x184ec2[_0xd584('0x3')]||'';this[_0xd584('0x4')]=_0x184ec2['remoteUri']||'';this[_0xd584('0x5')]=_0x184ec2[_0xd584('0x5')]||'';this['type']=_0x184ec2[_0xd584('0x6')]||'integrationTab';this[_0xd584('0x7')]=_0x184ec2[_0xd584('0x7')]||'';this[_0xd584('0x8')]=_0x184ec2[_0xd584('0x8')]||{};}module[_0xd584('0x9')]=ZendeskAccount;
\ No newline at end of file
+var _0x535a=['name','username','password','token','remoteUri','authType','integrationTab','serverUrl','Configurations','exports'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x535a,0x15e));var _0xa535=function(_0x18c09f,_0x3a536d){_0x18c09f=_0x18c09f-0x0;var _0x373a53=_0x535a[_0x18c09f];return _0x373a53;};'use strict';function ZendeskAccount(_0x57b33a){this['id']=_0x57b33a['id']||0x0;this[_0xa535('0x0')]=_0x57b33a['name']||'';this[_0xa535('0x1')]=_0x57b33a[_0xa535('0x1')]||'';this[_0xa535('0x2')]=_0x57b33a[_0xa535('0x2')]||'';this[_0xa535('0x3')]=_0x57b33a[_0xa535('0x3')]||'';this[_0xa535('0x4')]=_0x57b33a[_0xa535('0x4')]||'';this['authType']=_0x57b33a[_0xa535('0x5')]||'';this['type']=_0x57b33a['type']||_0xa535('0x6');this[_0xa535('0x7')]=_0x57b33a['serverUrl']||'';this[_0xa535('0x8')]=_0x57b33a[_0xa535('0x8')]||{};}module[_0xa535('0x9')]=ZendeskAccount;
\ No newline at end of file
index e938edd..0ff327c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9ba=['Configurations','exports','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xb9ba,0x19c));var _0xab9b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xb9ba[_0x122ef9];return _0x42fba0;};'use strict';function ZohoAccount(_0x51b48f){this['id']=_0x51b48f['id']||0x0;this['name']=_0x51b48f['name']||'';this[_0xab9b('0x0')]=_0x51b48f[_0xab9b('0x0')]||'';this[_0xab9b('0x1')]=_0x51b48f['host']||'';this[_0xab9b('0x2')]=_0x51b48f[_0xab9b('0x2')]||'';this[_0xab9b('0x3')]=_0x51b48f[_0xab9b('0x3')]||'';this['clientSecret']=_0x51b48f[_0xab9b('0x4')]||'';this[_0xab9b('0x5')]=_0x51b48f[_0xab9b('0x5')]||'';this[_0xab9b('0x6')]=_0x51b48f[_0xab9b('0x6')]||'';this[_0xab9b('0x7')]=_0x51b48f[_0xab9b('0x7')]||'';this['Configurations']=_0x51b48f[_0xab9b('0x8')]||{};}module[_0xab9b('0x9')]=ZohoAccount;
\ No newline at end of file
+var _0x1cd9=['clientSecret','serverUrl','code','refreshToken','Configurations','exports','name','description','host','zone','clientId'];(function(_0x3f7598,_0x212e37){var _0x51fb16=function(_0x4a5c0b){while(--_0x4a5c0b){_0x3f7598['push'](_0x3f7598['shift']());}};_0x51fb16(++_0x212e37);}(_0x1cd9,0x15b));var _0x91cd=function(_0x68670b,_0x2ff8eb){_0x68670b=_0x68670b-0x0;var _0x211c94=_0x1cd9[_0x68670b];return _0x211c94;};'use strict';function ZohoAccount(_0x16208b){this['id']=_0x16208b['id']||0x0;this[_0x91cd('0x0')]=_0x16208b['name']||'';this[_0x91cd('0x1')]=_0x16208b['description']||'';this[_0x91cd('0x2')]=_0x16208b[_0x91cd('0x2')]||'';this[_0x91cd('0x3')]=_0x16208b['zone']||'';this[_0x91cd('0x4')]=_0x16208b[_0x91cd('0x4')]||'';this[_0x91cd('0x5')]=_0x16208b[_0x91cd('0x5')]||'';this['serverUrl']=_0x16208b[_0x91cd('0x6')]||'';this[_0x91cd('0x7')]=_0x16208b[_0x91cd('0x7')]||'';this[_0x91cd('0x8')]=_0x16208b['refreshToken']||'';this[_0x91cd('0x9')]=_0x16208b[_0x91cd('0x9')]||{};}module[_0x91cd('0xa')]=ZohoAccount;
\ No newline at end of file
index d56b35f..b264224 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a37=['VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','number','exports','util','lodash','moment','isNil','string','uniqueid','type','campaigntype','queue','dialAnswer','membername','Agent','format','SIP/%s','calleridname','Contact','phone','firstName','lastName','active','calleridnum','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId'];(function(_0x1ad5d4,_0x554c2f){var _0x37d5d3=function(_0xef8583){while(--_0xef8583){_0x1ad5d4['push'](_0x1ad5d4['shift']());}};_0x37d5d3(++_0x554c2f);}(_0x1a37,0xb4));var _0x71a3=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0x1a37[_0x550d12];return _0x12103d;};'use strict';var util=require(_0x71a3('0x0'));var _=require(_0x71a3('0x1'));var moment=require(_0x71a3('0x2'));function checkNameSurname(_0x28e254,_0x353cf0,_0x20d8a7){var _0x348395='';if(!_[_0x71a3('0x3')](_0x353cf0)&&_0x71a3('0x4')===typeof _0x353cf0){_0x348395+=_0x353cf0;}if(!_[_0x71a3('0x3')](_0x20d8a7)&&'string'===typeof _0x20d8a7){_0x348395+='\x20'+_0x20d8a7;}if(_0x348395!==''){return _0x348395;}return _0x28e254;}function Action(_0x11e8a8,_0x4f6b7a,_0xd09f7,_0x45050a,_0x231ea7){this[_0x71a3('0x5')]=_0xd09f7||undefined;this['idContact']=_0x11e8a8['id'];this['queue']=_0x4f6b7a['name'];this['type']=_0x4f6b7a[_0x71a3('0x6')];this[_0x71a3('0x7')]=_0x71a3('0x8');this[_0x71a3('0x9')]=![];this[_0x71a3('0xa')]=_[_0x71a3('0x3')](_0x11e8a8[_0x71a3('0xb')])?undefined:_0x11e8a8[_0x71a3('0xb')]['name'];this['channelAgent']=this['membername']?util[_0x71a3('0xc')](_0x71a3('0xd'),this[_0x71a3('0xa')]):_0x45050a||undefined;this[_0x71a3('0xe')]=checkNameSurname(_0x11e8a8[_0x71a3('0xf')][_0x71a3('0x10')],_0x11e8a8[_0x71a3('0xf')][_0x71a3('0x11')],_0x11e8a8[_0x71a3('0xf')][_0x71a3('0x12')]);this[_0x71a3('0x13')]=_0x11e8a8['active']||![];this[_0x71a3('0x14')]=_0x11e8a8[_0x71a3('0x10')];this['scheduledat']=_0x11e8a8['scheduledat'];this[_0x71a3('0x15')]=_0x11e8a8[_0x71a3('0x15')]||0x0;this[_0x71a3('0x16')]=_0x11e8a8[_0x71a3('0x16')]||0x0;this[_0x71a3('0x17')]=_0x11e8a8[_0x71a3('0x17')]||0x0;this['countglobal']=(_0x11e8a8[_0x71a3('0x15')]||0x0)+(_0x11e8a8[_0x71a3('0x16')]||0x0)+(_0x11e8a8['countnoanswerretry']||0x0)+(_0x11e8a8['countnosuchnumberretry']||0x0)+(_0x11e8a8[_0x71a3('0x18')]||0x0)+(_0x11e8a8[_0x71a3('0x19')]||0x0)+(_0x11e8a8[_0x71a3('0x1a')]||0x0)+(_0x11e8a8[_0x71a3('0x1b')]||0x0);this[_0x71a3('0x1c')]=_0x11e8a8['countnosuchnumberretry']||0x0;this[_0x71a3('0x18')]=_0x11e8a8[_0x71a3('0x18')]||0x0;this[_0x71a3('0x19')]=_0x11e8a8[_0x71a3('0x19')]||0x0;this[_0x71a3('0x1a')]=_0x11e8a8['countmachineretry']||0x0;this[_0x71a3('0x1b')]=_0x11e8a8['countagentrejectretry']||0x0;this[_0x71a3('0x1d')]=_0x11e8a8[_0x71a3('0x1d')];this[_0x71a3('0x1e')]=_0x11e8a8[_0x71a3('0x1e')];this[_0x71a3('0x1f')]=_0x11e8a8[_0x71a3('0x1f')];this['recallme']=_0x11e8a8[_0x71a3('0x20')];this[_0x71a3('0x21')]=_0x11e8a8[_0x71a3('0x21')];this[_0x71a3('0x22')]=_0x11e8a8[_0x71a3('0x22')];this['UserId']=_[_0x71a3('0x3')](_0x11e8a8[_0x71a3('0xb')])?_0x11e8a8['UserId']:_0x11e8a8[_0x71a3('0xb')]['id'];this['VoiceQueueId']=_0x11e8a8[_0x71a3('0x23')];this[_0x71a3('0x24')]='';this[_0x71a3('0x25')]='';}Action[_0x71a3('0x26')][_0x71a3('0x27')]=function(){return util[_0x71a3('0xc')](_0x71a3('0x28'),this[_0x71a3('0xe')],this[_0x71a3('0x29')]);};module[_0x71a3('0x2a')]=Action;
\ No newline at end of file
+var _0x0120=['countmachineretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','calleridname','number','exports','util','lodash','moment','isNil','string','uniqueid','idContact','queue','name','type','campaigntype','dialAnswer','Agent','channelAgent','membername','format','firstName','lastName','active','calleridnum','phone','scheduledat','countcongestionretry','countnoanswerretry','countglobal','countbusyretry','countdropretry','countabandonedretry','countagentrejectretry','countnosuchnumberretry'];(function(_0x2ea4f0,_0x420118){var _0x5c5877=function(_0x16f450){while(--_0x16f450){_0x2ea4f0['push'](_0x2ea4f0['shift']());}};_0x5c5877(++_0x420118);}(_0x0120,0x6f));var _0x0012=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x0120[_0x31e29a];return _0x32d892;};'use strict';var util=require(_0x0012('0x0'));var _=require(_0x0012('0x1'));var moment=require(_0x0012('0x2'));function checkNameSurname(_0xb8d57c,_0x46fb2b,_0x23b9ae){var _0x214372='';if(!_[_0x0012('0x3')](_0x46fb2b)&&_0x0012('0x4')===typeof _0x46fb2b){_0x214372+=_0x46fb2b;}if(!_[_0x0012('0x3')](_0x23b9ae)&&_0x0012('0x4')===typeof _0x23b9ae){_0x214372+='\x20'+_0x23b9ae;}if(_0x214372!==''){return _0x214372;}return _0xb8d57c;}function Action(_0x3fcfbc,_0x4eaa5b,_0x4b396c,_0x59980a,_0x95d441){this[_0x0012('0x5')]=_0x4b396c||undefined;this[_0x0012('0x6')]=_0x3fcfbc['id'];this[_0x0012('0x7')]=_0x4eaa5b[_0x0012('0x8')];this['type']=_0x4eaa5b[_0x0012('0x9')];this[_0x0012('0xa')]=_0x0012('0x7');this[_0x0012('0xb')]=![];this['membername']=_[_0x0012('0x3')](_0x3fcfbc['Agent'])?undefined:_0x3fcfbc[_0x0012('0xc')][_0x0012('0x8')];this[_0x0012('0xd')]=this[_0x0012('0xe')]?util[_0x0012('0xf')]('SIP/%s',this[_0x0012('0xe')]):_0x59980a||undefined;this['calleridname']=checkNameSurname(_0x3fcfbc['Contact']['phone'],_0x3fcfbc['Contact'][_0x0012('0x10')],_0x3fcfbc['Contact'][_0x0012('0x11')]);this[_0x0012('0x12')]=_0x3fcfbc['active']||![];this[_0x0012('0x13')]=_0x3fcfbc[_0x0012('0x14')];this[_0x0012('0x15')]=_0x3fcfbc[_0x0012('0x15')];this['countbusyretry']=_0x3fcfbc['countbusyretry']||0x0;this[_0x0012('0x16')]=_0x3fcfbc[_0x0012('0x16')]||0x0;this[_0x0012('0x17')]=_0x3fcfbc[_0x0012('0x17')]||0x0;this[_0x0012('0x18')]=(_0x3fcfbc[_0x0012('0x19')]||0x0)+(_0x3fcfbc[_0x0012('0x16')]||0x0)+(_0x3fcfbc[_0x0012('0x17')]||0x0)+(_0x3fcfbc['countnosuchnumberretry']||0x0)+(_0x3fcfbc[_0x0012('0x1a')]||0x0)+(_0x3fcfbc[_0x0012('0x1b')]||0x0)+(_0x3fcfbc['countmachineretry']||0x0)+(_0x3fcfbc[_0x0012('0x1c')]||0x0);this[_0x0012('0x1d')]=_0x3fcfbc[_0x0012('0x1d')]||0x0;this[_0x0012('0x1a')]=_0x3fcfbc['countdropretry']||0x0;this['countabandonedretry']=_0x3fcfbc[_0x0012('0x1b')]||0x0;this[_0x0012('0x1e')]=_0x3fcfbc[_0x0012('0x1e')]||0x0;this[_0x0012('0x1c')]=_0x3fcfbc[_0x0012('0x1c')]||0x0;this[_0x0012('0x1f')]=_0x3fcfbc[_0x0012('0x1f')];this[_0x0012('0x20')]=_0x3fcfbc['callbackuniqueid'];this[_0x0012('0x21')]=_0x3fcfbc[_0x0012('0x21')];this['recallme']=_0x3fcfbc[_0x0012('0x22')];this[_0x0012('0x23')]=_0x3fcfbc[_0x0012('0x23')];this[_0x0012('0x24')]=_0x3fcfbc[_0x0012('0x24')];this['UserId']=_[_0x0012('0x3')](_0x3fcfbc[_0x0012('0xc')])?_0x3fcfbc[_0x0012('0x25')]:_0x3fcfbc[_0x0012('0xc')]['id'];this[_0x0012('0x26')]=_0x3fcfbc[_0x0012('0x26')];this[_0x0012('0x27')]='';this[_0x0012('0x28')]='';}Action[_0x0012('0x29')][_0x0012('0x2a')]=function(){return util[_0x0012('0xf')](_0x0012('0x2b'),this[_0x0012('0x2c')],this[_0x0012('0x2d')]);};module[_0x0012('0x2e')]=Action;
\ No newline at end of file
index bfbcffd..1cf946d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f4d=['abandoned','waiting','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalTotalCalls','message','erlangCallToSecond','erlangBusyFactor','startPredictive','Trunk','name','Interval','stringify','format','voice:queue:%s','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_presence:remove','originated','pTalking','paused','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20deactivated','syncCampaigns','hasOwnProperty','dialMethod','booked','clearZombieChannels','setMessage','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','[clearZombieChannels][talking]','Queue','queue','dialAnswer','pick','contactId','UserId','VoiceQueueId','ListId','Action','channel','catch','No\x20such\x20channel','decrementTalkink','[clearZombieChannel]','[Dialer][checkChannel][pTalking][Preview]','loggerError','[Dialer][checkChannel][Preview]','[action]','agentReadyId','then','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','run','logger2','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','dialRecallInQueue','createBody','createCustomerHistory','logCustomer','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','sendMessageOneNotActive','AGENTS_NOT_LOGGED','isActive','NOT_ACTIVE','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countglobal','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','dialNoSuchNumberRetryFrequency','callAdditionalPhoneAfterMin','totalGlobal','dialGlobalMaxRetry','cloneAction','Global','countnosuchnumberretry','dialNoSuchNumberMaxRetry','scheduledAt','activeContact','linkedid','incrementPreviewCounters','idContact','ANSWER','responsetime','answertime','[syncHangup][talking][increment]','uniqueid','pTalking:\x20','buildObj','connect','custom:agentConnectPreview','custom:agentcomplete','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','sumDuration','talktime','[syncHangup][talking][decrement]','\x20Queue','Busy','dialBusyRetryFrequency','custom:agentbusy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','rescheduleContact','countbusyretry','unlockAgent','swapAdditionalPhones','countnoanswerretry','NoAnswer','dialNoAnswerRetryFrequency','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','CONGESTION','countcongestionretry','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','CANCEL','outboundRejectCallsDay','countagentrejectretry','dialAgentRejectRetryFrequency','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','AgentReject','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','ABANDONED','outboundAbandonedCallsDay','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','outboundUnknownCallsDay','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','updateOriginated','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','originated:\x20','destlinkedid','callProgressDetectingAgent','object','isUndefined','reason','logAgent','[callProgressDetectingAgent][logNoSuch]','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','resolve','[verifyAdditionalPhone]\x20','checkInBlack','isNil','Contact','phone','Contact\x20is\x20undefined','lookAgent','execCall','[Preview][execCall][success]','\x20IdHopper:\x20','custom:agentcalled','called','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','Contact\x20in\x20black\x20List','active','status','reachable','SIP/%s','unmonitored','execRun','unlock','recallme','isValid','checkIsBlackList','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','validateContact','isEmpty','[Preview][validateContact][Empty\x20Contact]','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','trim','dialCutDigit','substring','getCallerId','callerid','getCallerIdRandom','originatecalleridname','extractCalleridName','originatecalleridnum','toLowerVariables','variablesAction','[originated][increment]','[originateFailure][logOriginateFailure]','actionid','logLookAgent','clone','isFailure','custom:agentringnoanswer','rejected','[syncHangup][talking]','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','transfer','unlockContact','[syncHangup][talking][transfer]','variables','syncVarSet','keys','variable','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','uuid','md5','ioredis','../../../config/environment','../../../config/logger','preview','actionPreview','../ami','../rpc/cmHopperAdditionalPhone','./action','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','syncOriginateResponse','hangup','syncHangupRequest','bind','dialend','syncDialEnd','newexten','syncNewExten','varset','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','strategy','answered','available','loggedIn','sumBillable','sumHoldTime','talking','total','unmanaged'];(function(_0x4c2f17,_0x5c6821){var _0x20919e=function(_0x31eef7){while(--_0x31eef7){_0x4c2f17['push'](_0x4c2f17['shift']());}};_0x20919e(++_0x5c6821);}(_0x0f4d,0x12c));var _0xd0f4=function(_0x56755e,_0x3e6c93){_0x56755e=_0x56755e-0x0;var _0x2170c6=_0x0f4d[_0x56755e];return _0x2170c6;};'use strict';var util=require('util');var _=require('lodash');var BPromise=require('bluebird');var uuid=require(_0xd0f4('0x0'));var moment=require('moment');var md5=require(_0xd0f4('0x1'));var Redis=require(_0xd0f4('0x2'));var config=require(_0xd0f4('0x3'));var logger=require(_0xd0f4('0x4'))(_0xd0f4('0x5'));var loggerAction=require(_0xd0f4('0x4'))(_0xd0f4('0x6'));var ami=require(_0xd0f4('0x7'));var rpcDb=require('./rpcDb');var cmHopperAdditionalPhone=require(_0xd0f4('0x8'));var Action=require(_0xd0f4('0x9'));var ut=require('./util/util');config[_0xd0f4('0xa')]=_[_0xd0f4('0xb')](config['redis'],{'host':_0xd0f4('0xc'),'port':0x18eb});var io=require(_0xd0f4('0xd'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0xd0f4('0xe')][_0xd0f4('0xf')]=function(_0x38b4ab){this['tail']=this['tail']?this[_0xd0f4('0x10')][_0xd0f4('0x11')](_0x38b4ab):_0x38b4ab();};function Preview(_0x288388){this[_0xd0f4('0x12')]=new Sequence();this[_0xd0f4('0x13')]=_0x288388[_0xd0f4('0x14')];this[_0xd0f4('0x15')]=_0x288388['trunks'];this[_0xd0f4('0x16')]={};this[_0xd0f4('0x17')]=_0x288388['agents'];this[_0xd0f4('0x18')]=0x0;ami['on']('originateresponse',this[_0xd0f4('0x19')]['bind'](this));ami['on'](_0xd0f4('0x1a'),this['syncHangup']['bind'](this));ami['on']('hanguprequest',this[_0xd0f4('0x1b')][_0xd0f4('0x1c')](this));ami['on'](_0xd0f4('0x1d'),this[_0xd0f4('0x1e')][_0xd0f4('0x1c')](this));ami['on'](_0xd0f4('0x1f'),this[_0xd0f4('0x20')][_0xd0f4('0x1c')](this));ami['on'](_0xd0f4('0x21'),this['syncVarSet'][_0xd0f4('0x1c')](this));ami['on'](_0xd0f4('0x22'),this[_0xd0f4('0x23')][_0xd0f4('0x1c')](this));ami['on']('blindtransfer',this[_0xd0f4('0x24')][_0xd0f4('0x1c')](this));this[_0xd0f4('0x25')](this[_0xd0f4('0x13')]);}function emit(_0x4e1689,_0x38b112,_0xda1d14){io['to'](_0x4e1689)[_0xd0f4('0x26')](_0x38b112,_0xda1d14);}function emitCampaignPreview(_0x1e799f){if(_0x1e799f[_0xd0f4('0x27')]===_0xd0f4('0x28')){var _0x25ee43={'id':_0x1e799f['id'],'name':_0x1e799f['name'],'strategy':_0x1e799f[_0xd0f4('0x29')],'answered':_0x1e799f[_0xd0f4('0x2a')],'available':_0x1e799f[_0xd0f4('0x2b')],'loggedIn':_0x1e799f[_0xd0f4('0x2c')],'pTalking':_0x1e799f['pTalking'],'sumBillable':_0x1e799f[_0xd0f4('0x2d')],'sumDuration':_0x1e799f['sumDuration'],'sumHoldTime':_0x1e799f[_0xd0f4('0x2e')]||0x0,'talking':_0x1e799f[_0xd0f4('0x2f')],'total':_0x1e799f[_0xd0f4('0x30')],'type':_0x1e799f['type'],'unmanaged':_0x1e799f[_0xd0f4('0x31')],'abandoned':_0x1e799f[_0xd0f4('0x32')],'waiting':_0x1e799f[_0xd0f4('0x33')],'loggedInDb':_0x1e799f[_0xd0f4('0x34')],'dialActive':_0x1e799f[_0xd0f4('0x35')],'dialMethod':_0x1e799f['dialMethod'],'dialOriginateCallerIdName':_0x1e799f[_0xd0f4('0x36')],'dialOriginateCallerIdNumber':_0x1e799f[_0xd0f4('0x37')],'dialOriginateTimeout':_0x1e799f[_0xd0f4('0x38')],'dialPrefix':_0x1e799f[_0xd0f4('0x39')],'outboundAnswerAgiCallsDay':_0x1e799f[_0xd0f4('0x3a')],'outboundAnswerCallsDay':_0x1e799f[_0xd0f4('0x3b')],'outboundBlacklistCallsDay':_0x1e799f[_0xd0f4('0x3c')],'outboundBusyCallsDay':_0x1e799f[_0xd0f4('0x3d')],'outboundCongestionCallsDay':_0x1e799f[_0xd0f4('0x3e')],'outboundDropCallsDayACS':_0x1e799f['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x1e799f[_0xd0f4('0x3f')],'outboundDropCallsDayTimeout':_0x1e799f[_0xd0f4('0x40')],'outboundNoAnswerCallsDay':_0x1e799f[_0xd0f4('0x41')],'outboundNoSuchCallsDay':_0x1e799f[_0xd0f4('0x42')],'outboundOriginateFailureCallsDay':_0x1e799f['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x1e799f[_0xd0f4('0x43')],'outboundRejectCallsDay':_0x1e799f['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x1e799f['outboundUnknownCallsDay'],'outboundAbandonedCallsDay':_0x1e799f['outboundAbandonedCallsDay'],'predictiveIntervalAnsweredCalls':_0x1e799f[_0xd0f4('0x44')],'predictiveIntervalAvgHoldtime':_0x1e799f[_0xd0f4('0x45')],'predictiveIntervalAvgTalktime':_0x1e799f[_0xd0f4('0x46')],'predictiveIntervalDroppedCallsCallersExit':_0x1e799f[_0xd0f4('0x47')],'predictiveIntervalDroppedCallsTimeout':_0x1e799f[_0xd0f4('0x48')],'predictiveIntervalErlangCalls':_0x1e799f[_0xd0f4('0x49')],'predictiveIntervalErlangCallsDroppedCalls':_0x1e799f[_0xd0f4('0x4a')],'predictiveIntervalHitRate':_0x1e799f[_0xd0f4('0x4b')],'predictiveIntervalMultiplicativeFactor':_0x1e799f['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x1e799f[_0xd0f4('0x4c')],'predictiveIntervalAvailable':_0x1e799f['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x1e799f[_0xd0f4('0x4d')],'message':_0x1e799f[_0xd0f4('0x4e')],'originated':_0x1e799f['originated'],'erlangCalls':_0x1e799f['erlangCalls'],'erlangCallToSecond':_0x1e799f[_0xd0f4('0x4f')],'erlangAbandonmentRate':_0x1e799f['erlangAbandonmentRate'],'erlangBusyFactor':_0x1e799f[_0xd0f4('0x50')],'startPredictive':_0x1e799f[_0xd0f4('0x51')],'startProgressive':_0x1e799f['startProgressive']};if(_0x1e799f[_0xd0f4('0x52')]){_0x25ee43[_0xd0f4('0x52')]={'id':_0x1e799f['Trunk']['id'],'name':_0x1e799f['Trunk'][_0xd0f4('0x53')],'active':_0x1e799f[_0xd0f4('0x52')]['active'],'callerid':_0x1e799f[_0xd0f4('0x52')]['callerid']};}if(_0x1e799f[_0xd0f4('0x54')]){_0x25ee43[_0xd0f4('0x54')]={'id':_0x1e799f['Interval']['id'],'name':_0x1e799f[_0xd0f4('0x54')][_0xd0f4('0x53')]};}var _0x40e383=md5(JSON[_0xd0f4('0x55')](_0x25ee43));if(_0x1e799f[_0xd0f4('0x1')]!==_0x40e383){_0x1e799f['md5']=_0x40e383;emit(util[_0xd0f4('0x56')](_0xd0f4('0x57'),_0x25ee43[_0xd0f4('0x53')]),_0xd0f4('0x58'),_0x25ee43);}}}function emitVoiceQueueChannelRemove(_0x4ccdf2){logger[_0xd0f4('0x59')](_0xd0f4('0x5a'),JSON[_0xd0f4('0x55')](_0x4ccdf2));emit(util[_0xd0f4('0x56')](_0xd0f4('0x57'),_0x4ccdf2[_0xd0f4('0x53')]),'voice_queue_channel:remove',_0x4ccdf2);io[_0xd0f4('0x26')](_0xd0f4('0x5b'),_0x4ccdf2);}function notSendMessagesQueue(_0x196ccc){if(_0x196ccc['sendMessageOneNotActive']){if(_0x196ccc[_0xd0f4('0x5c')]===0x0&&_0x196ccc[_0xd0f4('0x5d')]===0x0){_0x196ccc['sendMessageOneNotActive']=![];_0x196ccc[_0xd0f4('0x2b')]=0x0;_0x196ccc[_0xd0f4('0x5e')]=0x0;_0x196ccc['message']='NOT_ACTIVE';ut[_0xd0f4('0x5f')](_0xd0f4('0x60'),_0x196ccc[_0xd0f4('0x53')]+'\x20is\x20not\x20active');}else{_0x196ccc[_0xd0f4('0x4e')]='DEACTIVATED';ut[_0xd0f4('0x5f')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x196ccc[_0xd0f4('0x53')]+_0xd0f4('0x61'));}emitCampaignPreview(_0x196ccc);}}Preview[_0xd0f4('0xe')][_0xd0f4('0x25')]=function(){var _0x4f342b=this;setInterval(function(){_0x4f342b[_0xd0f4('0x62')]();},0x7cf);};Preview[_0xd0f4('0xe')][_0xd0f4('0x62')]=function(){var _0x4c8b9a=this['campaignsPreview'];this[_0xd0f4('0x18')]+=0x1;for(var _0x457e2d in _0x4c8b9a){if(_0x4c8b9a[_0xd0f4('0x63')](_0x457e2d)&&(_0x4c8b9a[_0x457e2d][_0xd0f4('0x64')]===_0xd0f4('0x5')||_0x4c8b9a[_0x457e2d][_0xd0f4('0x64')]===_0xd0f4('0x65'))&&_0x4c8b9a[_0x457e2d][_0xd0f4('0x27')]===_0xd0f4('0x28')){if(this[_0xd0f4('0x18')]>0x7){this[_0xd0f4('0x18')]=0x0;this[_0xd0f4('0x66')]();}}if(_0x4c8b9a['hasOwnProperty'](_0x457e2d)&&_0x4c8b9a[_0x457e2d][_0xd0f4('0x64')]===_0xd0f4('0x5')&&_0x4c8b9a[_0x457e2d]['type']===_0xd0f4('0x28')){if(_0x4c8b9a[_0x457e2d][_0xd0f4('0x35')]){this[_0xd0f4('0x67')](_0x4c8b9a[_0x457e2d]);if(_0x4c8b9a[_0x457e2d][_0xd0f4('0x68')])this[_0xd0f4('0x69')](_0x4c8b9a[_0x457e2d]);}else{notSendMessagesQueue(_0x4c8b9a[_0x457e2d]);}}}};Preview[_0xd0f4('0xe')][_0xd0f4('0x6a')]=function(_0x4ae7f6){var _0x199f98=this;this[_0xd0f4('0x12')][_0xd0f4('0xf')](function(){if(!_['isNil'](_0x199f98[_0xd0f4('0x16')][_0x4ae7f6])){loggerAction[_0xd0f4('0x59')](_0xd0f4('0x6b'),_0x4ae7f6,_0xd0f4('0x6c'),_0x199f98[_0xd0f4('0x16')][_0x4ae7f6][_0xd0f4('0x6d')],'originated:\x20',JSON['stringify'](_0x199f98[_0xd0f4('0x13')][_0x199f98[_0xd0f4('0x16')][_0x4ae7f6][_0xd0f4('0x6d')]][_0xd0f4('0x5c')]),'pTalking:\x20',JSON[_0xd0f4('0x55')](_0x199f98[_0xd0f4('0x13')][_0x199f98['actions'][_0x4ae7f6][_0xd0f4('0x6d')]][_0xd0f4('0x5d')]),JSON[_0xd0f4('0x55')](_0x199f98[_0xd0f4('0x16')][_0x4ae7f6][_0xd0f4('0x6e')]),JSON[_0xd0f4('0x55')](_[_0xd0f4('0x6f')](_0x199f98[_0xd0f4('0x16')][_0x4ae7f6],[_0xd0f4('0x70'),_0xd0f4('0x71'),_0xd0f4('0x72'),_0xd0f4('0x73')])));return ami[_0xd0f4('0x74')]({'action':'status','channel':_0x199f98[_0xd0f4('0x16')][_0x4ae7f6][_0xd0f4('0x75')]})[_0xd0f4('0x76')](function(_0x52fb3d){if(_0x52fb3d[_0xd0f4('0x4e')]===_0xd0f4('0x77')){setTimeout(function(){if(_0x199f98[_0xd0f4('0x16')][_0x4ae7f6]){ut['updateOriginated'](_0x199f98[_0xd0f4('0x13')][_0x199f98['actions'][_0x4ae7f6][_0xd0f4('0x6d')]],'[clearZombieChannel]');if(_0x199f98['actions'][_0x4ae7f6][_0xd0f4('0x6e')]===!![]){ut[_0xd0f4('0x78')](_0x199f98[_0xd0f4('0x13')][_0x199f98[_0xd0f4('0x16')][_0x4ae7f6][_0xd0f4('0x6d')]],_0xd0f4('0x79'));ut['loggerError'](_0xd0f4('0x7a')+_0x4ae7f6,_0x199f98[_0xd0f4('0x16')][_0x4ae7f6][_0xd0f4('0x6d')]);}ut[_0xd0f4('0x7b')](_0xd0f4('0x7c')+_0x4ae7f6,_0x199f98[_0xd0f4('0x16')][_0x4ae7f6]['queue']);delete _0x199f98[_0xd0f4('0x16')][_0x4ae7f6];}},0x2328);}});}});};Preview['prototype']['clearZombieChannels']=function(){var _0x40d43c=this;loggerAction[_0xd0f4('0x59')](_0xd0f4('0x7d'),_['size'](this[_0xd0f4('0x16')]));for(var _0x1506e0 in this[_0xd0f4('0x16')]){if(_0x40d43c[_0xd0f4('0x16')][_0xd0f4('0x63')](_0x1506e0)){_0x40d43c[_0xd0f4('0x6a')](_0x1506e0);}}};Preview[_0xd0f4('0xe')][_0xd0f4('0x69')]=function(_0x3137e7){var _0x3cb0aa=this;rpcDb['getContactRecallMe'](_0x3137e7['id'],ut[_0xd0f4('0x7e')](this[_0xd0f4('0x17')]))[_0xd0f4('0x7f')](function(_0x13180b){if(!_['isNil'](_0x13180b)){for(var _0xb83d39=0x0;_0xb83d39<_0x13180b[_0xd0f4('0x80')];_0xb83d39+=0x1){if(ut[_0xd0f4('0x81')](_0x13180b[_0xb83d39][_0xd0f4('0x82')])<_0x3137e7[_0xd0f4('0x83')]*0x3c){if(_0x13180b[_0xb83d39][_0xd0f4('0x84')]&&!_0x13180b[_0xb83d39]['Agent']['voicePause']){_0x3cb0aa[_0xd0f4('0x85')](_0x13180b[_0xb83d39]['id'])[_0xd0f4('0x7f')](ut[_0xd0f4('0x86')](_0xd0f4('0x87')))[_0xd0f4('0x76')](ut[_0xd0f4('0x86')]('[RecallMe]'));}else{rpcDb[_0xd0f4('0x88')](_0x13180b[_0xb83d39]['id']);}}else{var _0x344ef9=new Action(_0x13180b[_0xb83d39],_0x3137e7);_0x344ef9[_0xd0f4('0x89')]=moment()['format'](_0xd0f4('0x8a'));_0x3137e7[_0xd0f4('0x43')]+=0x1;ut['logCustomer'](_0x344ef9,0x17,'RecallInQueue');if(_0x3137e7[_0xd0f4('0x8b')]){rpcDb['rescheduleContactInQueue'](ut[_0xd0f4('0x8c')](_0x13180b[_0xb83d39]));rpcDb[_0xd0f4('0x8d')](_0x344ef9,'[HistoryDialRecallInQueue][historyCatch]');}else{ut[_0xd0f4('0x8e')](_0x344ef9,0x16,_0xd0f4('0x8f'));rpcDb['createCustomerHistory'](_0x344ef9,_0xd0f4('0x90'));rpcDb[_0xd0f4('0x91')](_0x344ef9,_0xd0f4('0x90'));}}}}})['catch'](ut['logger2'](_0xd0f4('0x92')));};Preview[_0xd0f4('0xe')]['setMessage']=function(_0x351461){_0x351461[_0xd0f4('0x93')]=!![];if(ut['IsNotLoggedIn'](_0x351461[_0xd0f4('0x2c')])){_0x351461[_0xd0f4('0x4e')]=_0xd0f4('0x94');}else if(!ut[_0xd0f4('0x95')](_0x351461[_0xd0f4('0x35')])){_0x351461['message']=_0xd0f4('0x96');}else if(!this['isTrunkReachable'](_0x351461[_0xd0f4('0x52')])){if(!this[_0xd0f4('0x97')](_0x351461[_0xd0f4('0x98')])){_0x351461[_0xd0f4('0x4e')]=_0xd0f4('0x99');}else{_0x351461['message']='ACTIVE';}}else{_0x351461['message']=_0xd0f4('0x9a');}emitCampaignPreview(_0x351461);};Preview[_0xd0f4('0xe')][_0xd0f4('0x9b')]=function(_0x2f6423,_0x2145ad,_0xf430bb){var _0x3d9370=this;var _0x43c886=this[_0xd0f4('0x16')][_0x2145ad];var _0x685d1b=this[_0xd0f4('0x13')][_0x43c886[_0xd0f4('0x6d')]];var _0x5c60fd;var _0x4ab2aa=![];var _0x3b7c6f=0x2;var _0x53b64b=0x3;if(_0x685d1b){switch(_0xf430bb){case'1':_0x685d1b[_0xd0f4('0x42')]+=0x1;_0x43c886['countnosuchnumberretry']+=0x1;_0x43c886[_0xd0f4('0x9c')]=ut['totalGlobal'](_0x43c886);ut[_0xd0f4('0x8e')](_0x43c886,0x0,_0xd0f4('0x9d'));ami[_0xd0f4('0x26')](_0xd0f4('0x9e'),ut['buildObj'](_0x43c886,_0xd0f4('0x9f')));rpcDb['createCustomerHistory'](_0x43c886,_0xd0f4('0xa0'));_0x3d9370[_0xd0f4('0xa1')](_0x43c886,'0',_0x685d1b)[_0xd0f4('0x7f')](function(_0x8d1444){_0x4ab2aa=_0x8d1444[_0xd0f4('0xa2')]==0x1;_0x3b7c6f=_0x685d1b[_0xd0f4('0xa3')];_0x53b64b=_0x685d1b[_0xd0f4('0xa4')];if(!_0x4ab2aa){if(ut[_0xd0f4('0xa5')](_0x43c886)>=_0x685d1b[_0xd0f4('0xa6')]){_0x5c60fd=ut[_0xd0f4('0xa7')](_0x43c886,0xf,_0xd0f4('0xa8'));rpcDb[_0xd0f4('0x91')](_0x5c60fd,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0x43c886[_0xd0f4('0xa9')]>=_0x685d1b[_0xd0f4('0xaa')]){rpcDb['createCustomerFinal'](_0x43c886,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{rpcDb['rescheduleContact'](ut[_0xd0f4('0xab')](_0x43c886,_0xd0f4('0xa9'),_0x685d1b[_0xd0f4('0xa3')]),_0x43c886['unlockAgent'],_0x43c886[_0xd0f4('0xac')]);}}delete this[_0xd0f4('0x16')][_0x2f6423[_0xd0f4('0xad')]];}else{_0x43c886[_0xd0f4('0xa9')]++;logger[_0xd0f4('0x59')]('actioncountonusuch',_0x43c886[_0xd0f4('0xa9')]);logger[_0xd0f4('0x59')]('id',_0x43c886['idContact']);_0x3d9370[_0xd0f4('0xae')]({'id':_0x43c886[_0xd0f4('0xaf')],'field':{'countnosuchnumberretry':_0x43c886['countnosuchnumberretry']}})['then'](function(){_0x3d9370['swapAdditionalPhones'](_0x43c886,_0x3b7c6f,_0x53b64b)[_0xd0f4('0x7f')](function(){});});}});break;case _0xd0f4('0xb0'):var _0xefae8c=moment()[_0xd0f4('0x56')](_0xd0f4('0x8a'));_0x43c886[_0xd0f4('0xb1')]=_0xefae8c;_0x43c886[_0xd0f4('0xb2')]=_0xefae8c;_0x43c886[_0xd0f4('0x6e')]=!![];_0x685d1b[_0xd0f4('0x5d')]+=0x1;logger[_0xd0f4('0x59')](_0xd0f4('0xb3'),_0x43c886[_0xd0f4('0xb4')],'\x20Queue',_0x685d1b[_0xd0f4('0x53')],_0xd0f4('0xb5'),_0x685d1b[_0xd0f4('0x5d')]);ami[_0xd0f4('0x26')]('custom:agentconnect',ut[_0xd0f4('0xb6')](_0x43c886,_0xd0f4('0xb7'),this[_0xd0f4('0x13')][_0x43c886[_0xd0f4('0x6d')]]));if(_0x685d1b['acw']){ami['emit'](_0xd0f4('0xb8'),ut['buildAcw'](_0x43c886));}break;case'16':ami[_0xd0f4('0x26')](_0xd0f4('0xb9'),ut[_0xd0f4('0xb6')](_0x43c886,'complete',this[_0xd0f4('0x13')][_0x43c886[_0xd0f4('0x6d')]]));emitVoiceQueueChannelRemove(ut[_0xd0f4('0xb6')](_0x43c886,_0xd0f4('0xba')));_0x685d1b[_0xd0f4('0x3b')]+=0x1;_0x685d1b[_0xd0f4('0x30')]+=0x1;_0x685d1b[_0xd0f4('0x2a')]+=0x1;ut[_0xd0f4('0x78')](_0x685d1b,_0xd0f4('0xbb'));_0x43c886[_0xd0f4('0x9c')]=ut[_0xd0f4('0xa5')](_0x43c886);ut[_0xd0f4('0x8e')](_0x43c886,0x4,_0xd0f4('0xbc'));rpcDb[_0xd0f4('0x8d')](_0x43c886,_0xd0f4('0xbd'));rpcDb[_0xd0f4('0x91')](_0x43c886,_0xd0f4('0xbe'));rpcDb[_0xd0f4('0xbf')](_0x43c886);_0x685d1b[_0xd0f4('0xc0')]+=_0x43c886[_0xd0f4('0xc1')];_0x685d1b[_0xd0f4('0x2d')]+=_0x43c886[_0xd0f4('0xc1')];logger[_0xd0f4('0x59')](_0xd0f4('0xc2'),_0x43c886[_0xd0f4('0xb4')],_0xd0f4('0xc3'),_0x685d1b[_0xd0f4('0x53')],'pTalking:\x20',_0x685d1b['pTalking']);delete this['actions'][_0x2f6423[_0xd0f4('0xad')]];break;case'BUSY':_0x685d1b[_0xd0f4('0x3d')]+=0x1;_0x43c886['countbusyretry']+=0x1;_0x43c886[_0xd0f4('0x9c')]=ut['totalGlobal'](_0x43c886);ut[_0xd0f4('0x8e')](_0x43c886,0x5,_0xd0f4('0xc4'));_0x3b7c6f=_0x685d1b[_0xd0f4('0xc5')];_0x53b64b=_0x685d1b[_0xd0f4('0xa4')];ami[_0xd0f4('0x26')](_0xd0f4('0xc6'),ut[_0xd0f4('0xb6')](_0x43c886,'busy'));rpcDb[_0xd0f4('0x8d')](_0x43c886,_0xd0f4('0xc7'));_0x3d9370[_0xd0f4('0xa1')](_0x43c886,'5',_0x685d1b)[_0xd0f4('0x7f')](function(_0x341871){_0x4ab2aa=_0x341871[_0xd0f4('0xa2')]==0x1;if(!_0x4ab2aa){if(ut[_0xd0f4('0xa5')](_0x43c886)>=_0x685d1b['dialGlobalMaxRetry']){_0x5c60fd=ut[_0xd0f4('0xa7')](_0x43c886,0xf,'Global');rpcDb['createCustomerFinal'](_0x5c60fd,_0xd0f4('0xc8'));}else{if(_0x43c886['countbusyretry']>=_0x685d1b[_0xd0f4('0xc9')]){rpcDb[_0xd0f4('0x91')](_0x43c886,_0xd0f4('0xc7'));}else{rpcDb[_0xd0f4('0xca')](ut[_0xd0f4('0xab')](_0x43c886,_0xd0f4('0xcb'),_0x685d1b[_0xd0f4('0xc5')]),_0x43c886[_0xd0f4('0xcc')],_0x43c886[_0xd0f4('0xac')]);}}}else{_0x43c886[_0xd0f4('0xcb')]++;_0x3d9370[_0xd0f4('0xae')]({'id':_0x43c886[_0xd0f4('0xaf')],'field':{'countbusyretry':_0x43c886[_0xd0f4('0xcb')]}})[_0xd0f4('0x7f')](function(){_0x3d9370[_0xd0f4('0xcd')](_0x43c886,_0x3b7c6f,_0x53b64b)['then'](function(){});});}});break;case'NOANSWER':_0x685d1b[_0xd0f4('0x41')]+=0x1;_0x43c886[_0xd0f4('0xce')]+=0x1;_0x43c886['countglobal']=ut[_0xd0f4('0xa5')](_0x43c886);ut[_0xd0f4('0x8e')](_0x43c886,0x3,_0xd0f4('0xcf'));_0x3b7c6f=_0x685d1b[_0xd0f4('0xd0')];_0x53b64b=_0x685d1b[_0xd0f4('0xa4')];ami[_0xd0f4('0x26')](_0xd0f4('0xd1'),ut[_0xd0f4('0xb6')](_0x43c886,_0xd0f4('0xd2')));rpcDb[_0xd0f4('0x8d')](_0x43c886,_0xd0f4('0xd3'));_0x3d9370[_0xd0f4('0xa1')](_0x43c886,'3',_0x685d1b)['then'](function(_0x3e3d05){_0x4ab2aa=_0x3e3d05[_0xd0f4('0xa2')]==0x1;if(!_0x4ab2aa){if(ut[_0xd0f4('0xa5')](_0x43c886)>=_0x685d1b[_0xd0f4('0xa6')]){_0x5c60fd=ut['cloneAction'](_0x43c886,0xf,'Global');rpcDb[_0xd0f4('0x91')](_0x5c60fd,_0xd0f4('0xd4'));}else{if(_0x43c886[_0xd0f4('0xce')]>=_0x685d1b[_0xd0f4('0xd5')]){rpcDb[_0xd0f4('0x91')](_0x43c886,'[callProgressDetectingCustomer][logNoAnswer]');}else{rpcDb[_0xd0f4('0xca')](ut[_0xd0f4('0xab')](_0x43c886,_0xd0f4('0xce'),_0x685d1b[_0xd0f4('0xd0')]),_0x43c886[_0xd0f4('0xcc')],_0x43c886[_0xd0f4('0xac')]);}}}else{_0x43c886[_0xd0f4('0xce')]++;_0x3d9370[_0xd0f4('0xae')]({'id':_0x43c886['idContact'],'field':{'countnoanswerretry':_0x43c886[_0xd0f4('0xce')]}})[_0xd0f4('0x7f')](function(){_0x3d9370[_0xd0f4('0xcd')](_0x43c886,_0x3b7c6f,_0x53b64b)[_0xd0f4('0x7f')](function(){});});}});break;case _0xd0f4('0xd6'):_0x685d1b[_0xd0f4('0x3e')]+=0x1;_0x43c886[_0xd0f4('0xd7')]+=0x1;_0x43c886[_0xd0f4('0x9c')]=ut[_0xd0f4('0xa5')](_0x43c886);ut[_0xd0f4('0x8e')](_0x43c886,0x8,_0xd0f4('0xd8'));_0x3b7c6f=_0x685d1b[_0xd0f4('0xd9')];_0x53b64b=_0x685d1b[_0xd0f4('0xa4')];ami[_0xd0f4('0x26')](_0xd0f4('0xda'),ut[_0xd0f4('0xb6')](_0x43c886,'congestion'));rpcDb[_0xd0f4('0x8d')](_0x43c886,_0xd0f4('0xdb'));_0x3d9370[_0xd0f4('0xa1')](_0x43c886,'8',_0x685d1b)[_0xd0f4('0x7f')](function(_0x2bb6ec){_0x4ab2aa=_0x2bb6ec[_0xd0f4('0xa2')]==0x1;if(!_0x4ab2aa){if(ut[_0xd0f4('0xa5')](_0x43c886)>=_0x685d1b[_0xd0f4('0xa6')]){_0x5c60fd=ut[_0xd0f4('0xa7')](_0x43c886,0xf,_0xd0f4('0xa8'));rpcDb['createCustomerFinal'](_0x5c60fd,_0xd0f4('0xdc'));}else{if(_0x43c886['countcongestionretry']>=_0x685d1b[_0xd0f4('0xdd')]){rpcDb[_0xd0f4('0x91')](_0x43c886,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb['rescheduleContact'](ut[_0xd0f4('0xab')](_0x43c886,'countcongestionretry',_0x685d1b[_0xd0f4('0xc5')]),_0x43c886[_0xd0f4('0xcc')],_0x43c886['activeContact']);}}}else{_0x43c886[_0xd0f4('0xd7')]++;_0x3d9370[_0xd0f4('0xae')]({'id':_0x43c886[_0xd0f4('0xaf')],'field':{'countcongestionretry':_0x43c886[_0xd0f4('0xd7')]}})[_0xd0f4('0x7f')](function(){_0x3d9370[_0xd0f4('0xcd')](_0x43c886,_0x3b7c6f,_0x53b64b)[_0xd0f4('0x7f')](function(){});});}});break;case _0xd0f4('0xde'):_0x685d1b[_0xd0f4('0xdf')]+=0x1;_0x43c886[_0xd0f4('0xe0')]+=0x1;_0x43c886[_0xd0f4('0x9c')]=ut['totalGlobal'](_0x43c886);ut[_0xd0f4('0x8e')](_0x43c886,0x14,'AgentReject');_0x3b7c6f=_0x685d1b[_0xd0f4('0xe1')];_0x53b64b=_0x685d1b['callAdditionalPhoneAfterMin'];ami['emit'](_0xd0f4('0xe2'),ut[_0xd0f4('0xb6')](_0x43c886,_0xd0f4('0xe3')));rpcDb[_0xd0f4('0x8d')](_0x43c886,_0xd0f4('0xe4'));_0x3d9370[_0xd0f4('0xa1')](_0x43c886,'20',_0x685d1b)['then'](function(_0x259838){_0x4ab2aa=_0x259838[_0xd0f4('0xa2')]==0x1;if(!_0x4ab2aa){if(ut[_0xd0f4('0xa5')](_0x43c886)>=_0x685d1b[_0xd0f4('0xa6')]){_0x5c60fd=ut[_0xd0f4('0xa7')](_0x43c886,0x14,_0xd0f4('0xe5'));rpcDb[_0xd0f4('0x91')](_0x5c60fd,_0xd0f4('0xe6'));}else{if(_0x43c886[_0xd0f4('0xe0')]>=_0x685d1b[_0xd0f4('0xe7')]){rpcDb[_0xd0f4('0x91')](_0x43c886,_0xd0f4('0xe6'));}else{rpcDb[_0xd0f4('0xca')](ut[_0xd0f4('0xab')](_0x43c886,_0xd0f4('0xe0'),_0x685d1b[_0xd0f4('0xe1')]),_0x43c886[_0xd0f4('0xcc')],_0x43c886['activeContact']);}}}else{_0x43c886[_0xd0f4('0xce')]++;_0x3d9370[_0xd0f4('0xae')]({'id':_0x43c886[_0xd0f4('0xaf')],'field':{'countnoanswerretry':_0x43c886[_0xd0f4('0xce')]}})[_0xd0f4('0x7f')](function(){_0x3d9370[_0xd0f4('0xcd')](_0x43c886,_0x3b7c6f,_0x53b64b)[_0xd0f4('0x7f')](function(){});});}});break;case _0xd0f4('0xe8'):_0x685d1b[_0xd0f4('0xe9')]+=0x1;_0x43c886[_0xd0f4('0xea')]+=0x1;_0x43c886['countglobal']=ut[_0xd0f4('0xa5')](_0x43c886);ut[_0xd0f4('0x8e')](_0x43c886,0xb,_0xd0f4('0xeb'));rpcDb[_0xd0f4('0x8d')](_0x43c886,'[callProgressDetectingCustomer][logAbandoned]');_0x3d9370['verifyAdditionalPhones'](_0x43c886,'11',_0x685d1b)['then'](function(_0x468b42){_0x4ab2aa=_0x468b42[_0xd0f4('0xa2')]==0x1;if(!_0x4ab2aa){if(ut[_0xd0f4('0xa5')](_0x43c886)>=_0x685d1b[_0xd0f4('0xa6')]){_0x5c60fd=ut[_0xd0f4('0xa7')](_0x43c886,0xf,'Global');rpcDb[_0xd0f4('0x91')](_0x5c60fd,_0xd0f4('0xec'));}else{if(_0x43c886[_0xd0f4('0xed')]>=_0x685d1b[_0xd0f4('0xee')]){rpcDb['createCustomerFinal'](_0x43c886,_0xd0f4('0xec'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x43c886,_0xd0f4('0xea'),_0x685d1b[_0xd0f4('0xef')]),_0x43c886[_0xd0f4('0xcc')],_0x43c886['activeContact']);}}}else{_0x43c886['countnoanswerretry']++;_0x3d9370[_0xd0f4('0xae')]({'id':_0x43c886[_0xd0f4('0xaf')],'field':{'countnoanswerretry':_0x43c886[_0xd0f4('0xce')]}})['then'](function(){_0x3d9370[_0xd0f4('0xcd')](_0x43c886,_0x3b7c6f,_0x53b64b)[_0xd0f4('0x7f')](function(){});});}});break;case'18':_0x685d1b[_0xd0f4('0xf0')]+=0x1;_0x43c886[_0xd0f4('0xf1')]+=0x1;_0x43c886['countglobal']=ut[_0xd0f4('0xa5')](_0x43c886);ut['logCustomer'](_0x43c886,0x12,_0x2f6423[_0xd0f4('0xf2')]||_0x2f6423[_0xd0f4('0xf3')]);ami[_0xd0f4('0x26')](_0xd0f4('0xf4'),ut['buildObj'](_0x43c886,_0xd0f4('0xf5')));rpcDb['createCustomerHistory'](_0x43c886,'[callProgressDetectingCustomer][hangupInAMD]');_0x3d9370['verifyAdditionalPhones'](_0x43c886,'18',_0x685d1b)[_0xd0f4('0x7f')](function(_0x516f96){_0x4ab2aa=_0x516f96[_0xd0f4('0xa2')]==0x1;if(!_0x4ab2aa){if(ut[_0xd0f4('0xa5')](_0x43c886)>=_0x685d1b[_0xd0f4('0xa6')]){_0x5c60fd=ut[_0xd0f4('0xa7')](_0x43c886,0x12,_0xd0f4('0xa8'));rpcDb['createCustomerFinal'](_0x5c60fd,_0xd0f4('0xf6'));}else{rpcDb[_0xd0f4('0x91')](_0x43c886,_0xd0f4('0xf6'));}}else{_0x43c886[_0xd0f4('0xce')]++;_0x3d9370[_0xd0f4('0xae')]({'id':_0x43c886[_0xd0f4('0xaf')],'field':{'countnoanswerretry':_0x43c886[_0xd0f4('0xce')]}})[_0xd0f4('0x7f')](function(){_0x3d9370[_0xd0f4('0xcd')](_0x43c886,_0x3b7c6f,_0x53b64b)['then'](function(){});});}});delete this['actions'][_0x2f6423[_0xd0f4('0xad')]];break;case'19':_0x685d1b[_0xd0f4('0xf0')]+=0x1;_0x43c886[_0xd0f4('0x9c')]=ut[_0xd0f4('0xa5')](_0x43c886);ut['logCustomer'](_0x43c886,0x13,_0x2f6423['cause-txt']||_0x2f6423[_0xd0f4('0xf3')]);ami['emit'](_0xd0f4('0xf4'),ut[_0xd0f4('0xb6')](_0x43c886,'amd'));rpcDb[_0xd0f4('0x8d')](_0x43c886,'[callProgressDetectingCustomer][machine]');_0x3d9370[_0xd0f4('0xa1')](_0x43c886,'18',_0x685d1b)['then'](function(_0x4fe0b9){_0x4ab2aa=_0x4fe0b9[_0xd0f4('0xa2')]==0x1;if(!_0x4ab2aa){if(ut[_0xd0f4('0xa5')](_0x43c886)>=_0x685d1b[_0xd0f4('0xa6')]){_0x5c60fd=ut[_0xd0f4('0xa7')](_0x43c886,0xf,_0xd0f4('0xa8'));rpcDb[_0xd0f4('0x91')](_0x5c60fd,_0xd0f4('0xf7'));}else{rpcDb[_0xd0f4('0x91')](_0x43c886,_0xd0f4('0xf7'));}}else{_0x43c886[_0xd0f4('0xce')]++;_0x3d9370[_0xd0f4('0xae')]({'id':_0x43c886['idContact'],'field':{'countnoanswerretry':_0x43c886['countnoanswerretry']}})[_0xd0f4('0x7f')](function(){_0x3d9370['swapAdditionalPhones'](_0x43c886,_0x3b7c6f,_0x53b64b)[_0xd0f4('0x7f')](function(){});});}});delete this[_0xd0f4('0x16')][_0x2f6423[_0xd0f4('0xad')]];break;default:if(_0x43c886[_0xd0f4('0x6e')]){ut[_0xd0f4('0x78')](_0x685d1b,'[default]');ut[_0xd0f4('0x7b')](_0xd0f4('0xf8')+_0x685d1b[_0xd0f4('0x53')],_0x2f6423);}_0x685d1b['outboundUnknownCallsDay']+=0x1;_0x43c886['countglobal']=ut[_0xd0f4('0xa5')](_0x43c886);ut[_0xd0f4('0x8e')](_0x43c886,0xc,_0x2f6423[_0xd0f4('0xf2')]||_0x2f6423['dialstatus']);_0x3b7c6f=_0x685d1b[_0xd0f4('0xe1')];_0x53b64b=_0x685d1b[_0xd0f4('0xa4')];rpcDb[_0xd0f4('0x8d')](_0x43c886,_0xd0f4('0xf9'));_0x3d9370[_0xd0f4('0xa1')](_0x43c886,'20',_0x685d1b)[_0xd0f4('0x7f')](function(_0x200859){_0x4ab2aa=_0x200859[_0xd0f4('0xa2')]==0x1;if(!_0x4ab2aa){if(ut['totalGlobal'](_0x43c886)>=_0x685d1b[_0xd0f4('0xa6')]){_0x5c60fd=ut['cloneAction'](_0x43c886,0xf,_0xd0f4('0xa8'));rpcDb[_0xd0f4('0x91')](_0x5c60fd,_0xd0f4('0xfa'));}else{rpcDb[_0xd0f4('0x91')](_0x43c886,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this[_0xd0f4('0x16')][_0x2f6423['linkedid']];}else{_0x3d9370[_0xd0f4('0xcd')](_0x43c886,_0x3b7c6f,_0x53b64b)[_0xd0f4('0x7f')](function(_0x3ecaea){});}});}if(!(_0x43c886[_0xd0f4('0x6e')]&&_0xf430bb==='16')){ut[_0xd0f4('0xfb')](_0x685d1b,_0xd0f4('0xfc'));logger[_0xd0f4('0x59')](_0xd0f4('0xfd'),_0x43c886['uniqueid'],_0xd0f4('0xc3'),_0x685d1b[_0xd0f4('0x53')],_0xd0f4('0xfe'),_0x685d1b[_0xd0f4('0x5c')]);}if(_0xf430bb!==_0xd0f4('0xb0')){delete this[_0xd0f4('0x16')][_0x2f6423[_0xd0f4('0xad')]];delete this[_0xd0f4('0x16')][_0x2f6423[_0xd0f4('0xff')]];}}};Preview[_0xd0f4('0xe')][_0xd0f4('0x100')]=function(_0x1b3bd7,_0x4c9fff,_0x14df47){if(_['isUndefined'](_0x4c9fff)&&_0xd0f4('0x101')!==typeof _0x4c9fff){return;}if(_[_0xd0f4('0x102')](_0x14df47)&&_0xd0f4('0x101')!==typeof _0x14df47){return;}switch(_0x14df47[_0xd0f4('0x103')]){case'0':ut[_0xd0f4('0x104')](_0x1b3bd7,0x0,_0xd0f4('0x9d'));rpcDb['createAgentHistory'](_0x1b3bd7,_0xd0f4('0x105'));break;case'3':ut['logAgent'](_0x1b3bd7,0x3,_0xd0f4('0xcf'));rpcDb[_0xd0f4('0x106')](_0x1b3bd7,_0xd0f4('0x107'));break;case'5':ut['logAgent'](_0x1b3bd7,0x5,'Busy');rpcDb[_0xd0f4('0x106')](_0x1b3bd7,_0xd0f4('0x108'));break;case'8':ut[_0xd0f4('0x104')](_0x1b3bd7,0x8,_0xd0f4('0xd8'));rpcDb[_0xd0f4('0x106')](_0x1b3bd7,_0xd0f4('0x109'));break;case'22':ut['logAgent'](_0x1b3bd7,0x16,_0xd0f4('0x10a'));rpcDb[_0xd0f4('0x106')](_0x1b3bd7,_0xd0f4('0x10b'));break;default:ut['logAgent'](_0x1b3bd7,0xc,_0x14df47[_0xd0f4('0x103')]);rpcDb[_0xd0f4('0x106')](_0x1b3bd7,'[callProgressDetectingAgent][logCongestion]');}ut[_0xd0f4('0xfb')](_0x4c9fff,_0xd0f4('0x10c'));logger[_0xd0f4('0x59')]('[originated][decrement][callProgressDetectingAgent]',_0x1b3bd7[_0xd0f4('0xb4')],'\x20Queue',_0x4c9fff[_0xd0f4('0x53')],_0xd0f4('0xfe'),_0x4c9fff[_0xd0f4('0x5c')]);delete this[_0xd0f4('0x16')][_0x1b3bd7[_0xd0f4('0xb4')]];};Preview[_0xd0f4('0xe')][_0xd0f4('0xa1')]=function(_0x2e2441,_0x5b1e32,_0x14866e){return BPromise[_0xd0f4('0x10d')]()[_0xd0f4('0x7f')](cmHopperAdditionalPhone[_0xd0f4('0xa1')](_0x2e2441,_0x5b1e32,_0x14866e))[_0xd0f4('0x76')](logger[_0xd0f4('0x59')](_0xd0f4('0x10e')));};Preview[_0xd0f4('0xe')]['swapAdditionalPhones']=function(_0x47e333,_0x5aba0b,_0x80889d){return BPromise['resolve']()[_0xd0f4('0x7f')](cmHopperAdditionalPhone[_0xd0f4('0xcd')](_0x47e333,_0x5aba0b,_0x80889d))[_0xd0f4('0x76')](logger[_0xd0f4('0x59')]('[swapAdditionalPhone]\x20'));};Preview[_0xd0f4('0xe')][_0xd0f4('0xae')]=function(_0x568c8b){return BPromise[_0xd0f4('0x10d')]()[_0xd0f4('0x7f')](cmHopperAdditionalPhone[_0xd0f4('0xae')](_0x568c8b))['catch'](logger[_0xd0f4('0x59')]('[incrementPreviewCounters]\x20'));};Preview[_0xd0f4('0xe')][_0xd0f4('0x10f')]=function(_0x4930b6,_0xa9a1ff,_0x510834,_0x17b14c,_0x520f6b){var _0x11f3cc=this;return new BPromise(function(_0x795d16,_0x485b5d){if(_[_0xd0f4('0x110')](_0xa9a1ff)||_[_0xd0f4('0x110')](_0xa9a1ff[_0xd0f4('0x111')])||_[_0xd0f4('0x110')](_0xa9a1ff[_0xd0f4('0x112')])||_[_0xd0f4('0x110')](_0xa9a1ff[_0xd0f4('0x72')])){_0x485b5d(ut[_0xd0f4('0x4e')](_0xd0f4('0x113'),_0x17b14c,_0x520f6b));return;}var _0x45f064=uuid['v4']();var _0x506ca6=_0x11f3cc[_0xd0f4('0x13')][_0xa9a1ff['Queue'][_0xd0f4('0x53')]];var _0x3486a5=_0x510834?_0x11f3cc[_0xd0f4('0x17')][_0x510834]['id']:undefined;_0x11f3cc[_0xd0f4('0x16')][_0x45f064]=new Action(_0xa9a1ff,_0x506ca6,_0x45f064,_0x510834,_0x3486a5);var _0x4ce0d6=_0x11f3cc[_0xd0f4('0x16')][_0x45f064];_0x4ce0d6[_0xd0f4('0xcc')]=_0x17b14c;_0x4ce0d6[_0xd0f4('0xac')]=_0x520f6b;_0x4ce0d6[_0xd0f4('0x114')]=_0x510834;if(_['isEmpty'](_0x4930b6)){_0x11f3cc[_0xd0f4('0x115')](_0x4ce0d6,_0x506ca6,_0xa9a1ff,_0x510834)[_0xd0f4('0x7f')](function(_0x5c3ce4){logger[_0xd0f4('0x59')](_0xd0f4('0x116'),'Queue:\x20'+_0x4ce0d6[_0xd0f4('0x6d')]+_0xd0f4('0x117')+_0x4ce0d6[_0xd0f4('0xaf')],JSON[_0xd0f4('0x55')](_0x5c3ce4));ami[_0xd0f4('0x26')](_0xd0f4('0x118'),ut[_0xd0f4('0xb6')](_0x4ce0d6,_0xd0f4('0x119'),_0x11f3cc[_0xd0f4('0x13')][_0x4ce0d6[_0xd0f4('0x6d')]]));_0x795d16(ut['message']('Calling'));})[_0xd0f4('0x76')](function(_0x36315a){ut[_0xd0f4('0x5f')](_0xd0f4('0x11a'),_0x36315a);_0x485b5d(ut[_0xd0f4('0x4e')](_0xd0f4('0x11b'),_0x17b14c,_0x520f6b));});}else{_0x506ca6[_0xd0f4('0x3c')]+=0x1;ut[_0xd0f4('0x11c')](_0x4ce0d6);rpcDb[_0xd0f4('0x11d')](_0x4ce0d6,'[Blacklist][error]');delete _0x11f3cc[_0xd0f4('0x16')][_0x45f064];_0x485b5d(ut['message'](_0xd0f4('0x11e'),_0x17b14c,_0x520f6b));}});};Preview['prototype'][_0xd0f4('0x97')]=function(_0x4f71b6){return!_['isNil'](_0x4f71b6)&&!_[_0xd0f4('0x110')](_0x4f71b6[_0xd0f4('0x53')])&&!_[_0xd0f4('0x110')](_0x4f71b6[_0xd0f4('0x11f')])&&_0x4f71b6['active']&&!_[_0xd0f4('0x110')](this[_0xd0f4('0x15')][util['format']('SIP/%s',_0x4f71b6[_0xd0f4('0x53')])])&&!_['isNil'](this[_0xd0f4('0x15')][util['format']('SIP/%s',_0x4f71b6[_0xd0f4('0x53')])][_0xd0f4('0x120')])&&(this[_0xd0f4('0x15')][util['format']('SIP/%s',_0x4f71b6['name'])]['status']===_0xd0f4('0x121')||this['trunks'][util[_0xd0f4('0x56')](_0xd0f4('0x122'),_0x4f71b6[_0xd0f4('0x53')])][_0xd0f4('0x120')]===_0xd0f4('0x123'));};Preview[_0xd0f4('0xe')][_0xd0f4('0x85')]=function(_0x253e1b,_0x22cb1f){var _0x13f920=this;return new BPromise(function(_0x2e1563,_0x37e161){_0x13f920[_0xd0f4('0x124')](_0x253e1b,_0x22cb1f)[_0xd0f4('0x7f')](function(_0x57efe0){_0x2e1563(_[_0xd0f4('0x6f')](_0x57efe0,[_0xd0f4('0x4e')]));})[_0xd0f4('0x76')](function(_0xffa419){if(_0xffa419[_0xd0f4('0x125')]){rpcDb['unlockContact'](_0x253e1b);}if(_0xffa419[_0xd0f4('0x11f')]){rpcDb[_0xd0f4('0x88')](_0x253e1b);}_0x37e161(_[_0xd0f4('0x6f')](_0xffa419,[_0xd0f4('0x4e')]));});});};Preview[_0xd0f4('0xe')][_0xd0f4('0x124')]=function(_0x3a7ffe,_0x114f86){var _0x4f5a9e=this;return new BPromise(function(_0x5348a6,_0x506b55){var _0x18094f,_0x5abedf;rpcDb['getContactPreview'](_0x3a7ffe)['then'](function(_0x5e0e26){if(!_[_0xd0f4('0x110')](_0x5e0e26[0x0])){_0x5abedf=_0x5e0e26[0x0]['recallme']?![]:!![];_0x18094f=_0x5e0e26[0x0][_0xd0f4('0x126')]?!![]:![];_0x18094f=_0x114f86?!![]:_0x18094f;}var _0x435601=_0x4f5a9e['validateContact'](_0x5e0e26);if(_0x435601[_0xd0f4('0x127')]){rpcDb[_0xd0f4('0x128')](_['pick'](_0x5e0e26[0x0],['VoiceQueueId',_0xd0f4('0x112')]))[_0xd0f4('0x7f')](function(_0x339eb2){_0x4f5a9e[_0xd0f4('0x10f')](_0x339eb2,_0x5e0e26[0x0],_0x114f86,_0x5abedf,_0x18094f)[_0xd0f4('0x7f')](function(_0x301b95){_0x5348a6(_0x301b95);})[_0xd0f4('0x76')](function(_0x4e0d03){_0x506b55(_0x4e0d03);});})['catch'](function(_0xb94930){ut[_0xd0f4('0x5f')](_0xd0f4('0x129'),_0xb94930);_0x506b55(ut[_0xd0f4('0x4e')](_0xd0f4('0x12a'),_0x5abedf,_0x18094f));});}else{_0x506b55(ut[_0xd0f4('0x4e')](_0x435601['message'],_0x5abedf,_0x18094f));}})[_0xd0f4('0x76')](function(_0x375ab6){ut[_0xd0f4('0x5f')](_0xd0f4('0x12b'),_0x375ab6);_0x506b55(ut[_0xd0f4('0x4e')](_0xd0f4('0x12a'),![],!![]));});});};Preview[_0xd0f4('0xe')][_0xd0f4('0x12c')]=function(_0x291bba){if(_[_0xd0f4('0x110')](_0x291bba)||_[_0xd0f4('0x12d')](_0x291bba)||!_[_0xd0f4('0x110')](_0x291bba[0x0]['Agent'])&&_['isNil'](_0x291bba[0x0]['Agent'][_0xd0f4('0x53')])){ut[_0xd0f4('0x5f')](_0xd0f4('0x12e'),_0x291bba);return{'isValid':![],'message':'Empty\x20Contact'};}var _0xf494dc=this['campaignsPreview'][_0x291bba[0x0][_0xd0f4('0x6c')][_0xd0f4('0x53')]];_0xf494dc['message']=_0xd0f4('0x9a');if(_[_0xd0f4('0x110')](_0xf494dc)){ut[_0xd0f4('0x5f')](_0xd0f4('0x12f'),_0xf494dc);return{'isValid':![],'message':_0xd0f4('0x130')};}if(!this[_0xd0f4('0x97')](_0xf494dc[_0xd0f4('0x52')])){ut[_0xd0f4('0x5f')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]',_0xd0f4('0x131')+_0xf494dc[_0xd0f4('0x53')]+_0xd0f4('0x132'));if(!this[_0xd0f4('0x97')](_0xf494dc['TrunkBackup'])){ut[_0xd0f4('0x5f')](_0xd0f4('0x133'),_0xf494dc['name']+'\x20Trunk\x20Backup\x20is\x20not\x20active');return{'isValid':![],'message':'Trunk\x20not\x20working\x20correctly'};}}if(!ut[_0xd0f4('0x95')](_0xf494dc[_0xd0f4('0x35')])){ut[_0xd0f4('0x5f')](_0xd0f4('0x134'),_0xf494dc['name']+'\x20Not\x20Active');return{'isValid':![],'message':_0xd0f4('0x131')+_0xf494dc[_0xd0f4('0x53')]+_0xd0f4('0x135')};}return{'isValid':!![],'message':_0xd0f4('0x136')};};Preview[_0xd0f4('0xe')][_0xd0f4('0x115')]=function(_0x1bef63,_0x4b3c0b,_0x5cc400,_0xa27ad5){var _0xe05aab=this;return new BPromise(function(_0x552c9d,_0x308666){var _0x25945c=_0x1bef63[_0xd0f4('0xb4')];var _0x485098=_0xe05aab[_0xd0f4('0x97')](_0x4b3c0b[_0xd0f4('0x52')])?util[_0xd0f4('0x56')](_0xd0f4('0x137'),_0x4b3c0b['Trunk'][_0xd0f4('0x53')],_['isNil'](_0x4b3c0b[_0xd0f4('0x39')])?'':_0x4b3c0b['dialPrefix'][_0xd0f4('0x138')]()||'',_0x4b3c0b[_0xd0f4('0x139')]>0x0?_0x5cc400[_0xd0f4('0x112')]['substring'](_0x4b3c0b[_0xd0f4('0x139')]):_0x5cc400[_0xd0f4('0x112')]):util['format']('SIP/%s/%s%s',_[_0xd0f4('0x110')](_0x4b3c0b['TrunkBackup'])?_0x4b3c0b[_0xd0f4('0x52')][_0xd0f4('0x53')]:_0x4b3c0b[_0xd0f4('0x98')][_0xd0f4('0x53')],_[_0xd0f4('0x110')](_0x4b3c0b[_0xd0f4('0x39')])?'':_0x4b3c0b['dialPrefix']['trim']()||'',_0x4b3c0b[_0xd0f4('0x139')]>0x0?_0x5cc400[_0xd0f4('0x112')][_0xd0f4('0x13a')](_0x4b3c0b[_0xd0f4('0x139')]):_0x5cc400[_0xd0f4('0x112')]);var _0x20cb6f=_0xe05aab['isTrunkReachable'](_0x4b3c0b[_0xd0f4('0x52')])?ut[_0xd0f4('0x13b')](_0x4b3c0b[_0xd0f4('0x52')][_0xd0f4('0x13c')],_0x4b3c0b[_0xd0f4('0x36')],_0x4b3c0b['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0xd0f4('0x13d')](_0x4b3c0b[_0xd0f4('0x37')],_0x4b3c0b['dialRandomLastDigitCallerIdNumber']):_0x4b3c0b[_0xd0f4('0x37')]):ut[_0xd0f4('0x13b')](_['isNil'](_0x4b3c0b[_0xd0f4('0x98')])?_0x4b3c0b[_0xd0f4('0x52')]['callerid']:_0x4b3c0b[_0xd0f4('0x98')]['callerid'],_0x4b3c0b[_0xd0f4('0x36')],_0x4b3c0b['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0xd0f4('0x13d')](_0x4b3c0b[_0xd0f4('0x37')],_0x4b3c0b['dialRandomLastDigitCallerIdNumber']):_0x4b3c0b['dialOriginateCallerIdNumber']);if(_0x20cb6f){_0x1bef63[_0xd0f4('0x13e')]=ut[_0xd0f4('0x13f')](_0x20cb6f);_0x1bef63[_0xd0f4('0x140')]=ut['extractCalleridNumber'](_0x20cb6f);}var _0x4da4ce=ut['addVariables'](_0x4b3c0b,_0x5cc400,_0x485098,_0x20cb6f,_0x25945c,_0x1bef63);_['merge'](_0x1bef63,ut[_0xd0f4('0x141')](_0x4da4ce));_0x1bef63[_0xd0f4('0x89')]=moment()[_0xd0f4('0x56')](_0xd0f4('0x8a'));ami[_0xd0f4('0x74')](ut[_0xd0f4('0x142')](_0x1bef63,_0x4b3c0b,_0x4da4ce,_0x1bef63['activeContact'],_0xa27ad5))[_0xd0f4('0x7f')](function(_0x31fa54){_0x4b3c0b[_0xd0f4('0x5c')]+=0x1;logger[_0xd0f4('0x59')](_0xd0f4('0x143'),_0x25945c,_0xd0f4('0xc3'),_0x4b3c0b['name'],_0xd0f4('0xfe'),_0x4b3c0b['originated']);_0x552c9d(_0x31fa54);})[_0xd0f4('0x76')](function(_0x1beda9){ut[_0xd0f4('0x104')](_0x1bef63,0xe,'OriginateError');rpcDb[_0xd0f4('0x106')](_0x1bef63,_0xd0f4('0x144'));_0x308666(_0x1beda9);});});};Preview['prototype'][_0xd0f4('0x20')]=function(_0x599643){if(this[_0xd0f4('0x16')][_0x599643[_0xd0f4('0xad')]]){this[_0xd0f4('0x16')][_0x599643[_0xd0f4('0xad')]][_0xd0f4('0x75')]=_0x599643[_0xd0f4('0x75')];}};Preview[_0xd0f4('0xe')][_0xd0f4('0x19')]=function(_0x52fe02){var _0x533a01=this;var _0x1a9b0b=this[_0xd0f4('0x16')][_0x52fe02[_0xd0f4('0x145')]];if(_0x1a9b0b){if(_0x1a9b0b[_0xd0f4('0x114')]&&this['agents'][_0x1a9b0b['lookAgent']]){ut[_0xd0f4('0x146')](_0x1a9b0b,this[_0xd0f4('0x17')][_0x1a9b0b['lookAgent']][_0xd0f4('0x53')],this[_0xd0f4('0x17')][_0x1a9b0b['lookAgent']]['id']);}var _0x4caa7e=_[_0xd0f4('0x147')](_0x1a9b0b);_0x4caa7e[_0xd0f4('0xb1')]=moment()[_0xd0f4('0x56')]('YYYY-MM-DD\x20HH:mm:ss');var _0x3573b1=_0x533a01[_0xd0f4('0x13')][_0x1a9b0b[_0xd0f4('0x6d')]];if(ut[_0xd0f4('0x148')](_0x52fe02['response'])){if(_0x1a9b0b[_0xd0f4('0xcc')]){rpcDb['unlockContact'](_0x1a9b0b[_0xd0f4('0xaf')]);}if(_0x1a9b0b[_0xd0f4('0xac')]){rpcDb[_0xd0f4('0x88')](_0x1a9b0b[_0xd0f4('0xaf')]);}ami['emit'](_0xd0f4('0x149'),ut[_0xd0f4('0xb6')](_0x1a9b0b,_0xd0f4('0x14a'),this['campaignsPreview'][_0x1a9b0b['queue']]));this[_0xd0f4('0x100')](_0x4caa7e,_0x3573b1,_0x52fe02);}else{_0x1a9b0b[_0xd0f4('0x89')]=moment()['format'](_0xd0f4('0x8a'));ut[_0xd0f4('0x104')](_0x4caa7e,0x4,'Answer');rpcDb['createAgentHistory'](_0x4caa7e,'[callProgressDetectingAgent][logAnswer]');}}};Preview['prototype']['syncHangup']=function(_0x31cb4e){var _0x1f8071=this;var _0x10b023=this['actions'][_0x31cb4e[_0xd0f4('0xad')]];var _0x4d81e0;if(_0x10b023){_0x4d81e0=this[_0xd0f4('0x13')][_0x10b023[_0xd0f4('0x6d')]];logger[_0xd0f4('0x59')](_0xd0f4('0x14b'),_0x31cb4e[_0xd0f4('0xad')],_0xd0f4('0xc3'),_0x4d81e0[_0xd0f4('0x53')],'pTalking:\x20',_0x4d81e0['pTalking']);}if(this[_0xd0f4('0x16')][_0x31cb4e[_0xd0f4('0xad')]]&&_0x31cb4e[_0xd0f4('0xad')]!==_0x31cb4e[_0xd0f4('0xb4')]){if(_0x31cb4e[_0xd0f4('0x14c')]==='16'&&this[_0xd0f4('0x16')][_0x31cb4e['linkedid']]['dialAnswer']){this[_0xd0f4('0x9b')](_0x31cb4e,_0x31cb4e[_0xd0f4('0xad')],_0x31cb4e[_0xd0f4('0x14c')]);}else if(this[_0xd0f4('0x16')][_0x31cb4e[_0xd0f4('0xad')]][_0xd0f4('0x6e')]){logger[_0xd0f4('0x59')](_0xd0f4('0x14d'),_0x31cb4e[_0xd0f4('0xad')],_0x31cb4e[_0xd0f4('0x14c')],_0xd0f4('0xc3'),_0x4d81e0[_0xd0f4('0x53')],_0xd0f4('0xb5'),_0x4d81e0[_0xd0f4('0x5d')]);this[_0xd0f4('0x9b')](_0x31cb4e,_0x31cb4e['linkedid'],_0x31cb4e[_0xd0f4('0x14c')]);}}else if(_0x10b023&&_['isNil'](_0x10b023[_0xd0f4('0x14e')])&&_0x4d81e0[_0xd0f4('0x14f')]&&_0x31cb4e[_0xd0f4('0xad')]===_0x31cb4e[_0xd0f4('0xb4')]&&_['isNil'](_0x31cb4e[_0xd0f4('0x103')])&&_0x31cb4e[_0xd0f4('0x14c')]==='16'&&_0x31cb4e['channelstate']==='6'&&_[_0xd0f4('0x102')](_0x10b023[_0xd0f4('0x150')])){if(_0x10b023['unlockAgent']){rpcDb[_0xd0f4('0x151')](_0x10b023[_0xd0f4('0xaf')]);}if(_0x10b023[_0xd0f4('0xac')]){rpcDb[_0xd0f4('0x88')](_0x10b023[_0xd0f4('0xaf')]);}_0x31cb4e[_0xd0f4('0x103')]='22';this[_0xd0f4('0x100')](_0x10b023,_0x4d81e0,_0x31cb4e);}else if(_0x10b023&&_0x10b023[_0xd0f4('0x150')]){if(_0x31cb4e[_0xd0f4('0x14c')]==='16'&&this[_0xd0f4('0x16')][_0x31cb4e[_0xd0f4('0xad')]][_0xd0f4('0x6e')]){logger[_0xd0f4('0x59')](_0xd0f4('0x152'),_0x31cb4e[_0xd0f4('0xad')],_0x31cb4e['cause'],'\x20Queue',_0x4d81e0['name'],'pTalking:\x20',_0x4d81e0[_0xd0f4('0x5d')]);this[_0xd0f4('0x9b')](_0x31cb4e,_0x31cb4e['linkedid'],_0x31cb4e[_0xd0f4('0x14c')]);}else if(this['actions'][_0x31cb4e['linkedid']][_0xd0f4('0x6e')]){logger[_0xd0f4('0x59')](_0xd0f4('0x14d'),_0x31cb4e['linkedid'],_0x31cb4e[_0xd0f4('0x14c')],'\x20Queue',_0x4d81e0[_0xd0f4('0x53')],_0xd0f4('0xb5'),_0x4d81e0[_0xd0f4('0x5d')]);this[_0xd0f4('0x9b')](_0x31cb4e,_0x31cb4e[_0xd0f4('0xad')],_0x31cb4e[_0xd0f4('0x14c')]);}}};Preview[_0xd0f4('0xe')][_0xd0f4('0x1e')]=function(_0x55f7bf){if(this['actions'][_0x55f7bf[_0xd0f4('0xff')]]&&_0x55f7bf[_0xd0f4('0xff')]!==_0x55f7bf['destuniqueid']){this[_0xd0f4('0x9b')](_0x55f7bf,_0x55f7bf['destlinkedid'],_0x55f7bf[_0xd0f4('0xf3')]);}};Preview[_0xd0f4('0xe')]['syncHangupRequest']=function(_0x15eac6){if(this[_0xd0f4('0x16')][_0x15eac6[_0xd0f4('0xad')]]&&_0x15eac6[_0xd0f4('0xad')]!==_0x15eac6['uniqueid']&&!this[_0xd0f4('0x16')][_0x15eac6[_0xd0f4('0xad')]][_0xd0f4('0x6e')]){if(_0x15eac6[_0xd0f4('0x14c')]==='1'){this['callProgressDetectingCustomer'](_0x15eac6,_0x15eac6[_0xd0f4('0xad')],_0x15eac6[_0xd0f4('0x14c')]);}}};Preview[_0xd0f4('0xe')]['addVariable']=function(_0x3a7a24,_0x272df6,_0x484f01){if(this[_0xd0f4('0x16')][_0x3a7a24]){if(_[_0xd0f4('0x110')](this[_0xd0f4('0x16')][_0x3a7a24][_0xd0f4('0x153')])){this[_0xd0f4('0x16')][_0x3a7a24]['variables']={};}this['actions'][_0x3a7a24]['variables'][_0x272df6]=_0x484f01;}};Preview[_0xd0f4('0xe')][_0xd0f4('0x154')]=function(_0x42b9aa){try{if(!_['isNil'](_0x42b9aa)){if(ut['filterKey'](_[_0xd0f4('0x155')](_0x42b9aa[_0xd0f4('0x156')])[0x0])){this['addVariable'](_0x42b9aa['uniqueid'],_[_0xd0f4('0x155')](_0x42b9aa[_0xd0f4('0x156')])[0x0],_0x42b9aa[_0xd0f4('0x157')]);}}}catch(_0x48aec0){logger[_0xd0f4('0x158')](_0xd0f4('0x159'),util[_0xd0f4('0x15a')](_0x48aec0,{'showHidden':![],'depth':null}));}};Preview[_0xd0f4('0xe')]['syncAttendedTransfer']=function(_0x120c5b){if(_0x120c5b){if(this[_0xd0f4('0x16')][_0x120c5b['transfertargetlinkedid']]){this[_0xd0f4('0x16')][_0x120c5b[_0xd0f4('0x15b')]]['transfer']=!![];}}};Preview['prototype'][_0xd0f4('0x24')]=function(_0x5efffc){if(_0x5efffc){if(this['actions'][_0x5efffc['transfererlinkedid']]){this['actions'][_0x5efffc[_0xd0f4('0x15c')]][_0xd0f4('0x150')]=!![];}}};module[_0xd0f4('0x15d')]=Preview;
\ No newline at end of file
+var _0xc881=['dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','unlockAgent','activeContact','linkedid','actioncountonusuch','idContact','incrementPreviewCounters','swapAdditionalPhones','YYYY-MM-DD\x20HH:mm:ss','answertime','[syncHangup][talking][increment]','uniqueid','\x20Queue','connect','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','[16]','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','BUSY','countbusyretry','Busy','dialBusyRetryFrequency','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','NOANSWER','countnoanswerretry','dialNoAnswerRetryFrequency','[callProgressDetectingCustomer][logNoAnswer]','cloneAction','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','outboundCongestionCallsDay','Congestion','dialCongestionRetryFrequency','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','countcongestionretry','CANCEL','countagentrejectretry','dialAgentRejectRetryFrequency','custom:agentreject','[syncHangupRequest][logAgentReject]','AgentReject','dialAgentRejectMaxRetry','[callProgressDetectingCustomer][logAgentReject]','ABANDONED','countabandonedretry','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','dialAbandonedRetryFrequency','outboundUnknownCallsDay','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','ANSWER','destlinkedid','callProgressDetectingAgent','object','isUndefined','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','AnswerAGI','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','resolve','[verifyAdditionalPhone]\x20','[swapAdditionalPhone]\x20','[incrementPreviewCounters]\x20','checkInBlack','Contact','phone','isEmpty','execCall','[Preview][execCall][success]','Queue:\x20','called','[Preview][execCall][failure]','Call\x20failed','outboundBlacklistCallsDay','createHistory','Contact\x20in\x20black\x20List','SIP/%s','reachable','run','pick','unlockContact','execRun','getContactPreview','recallme','validateContact','checkIsBlackList','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','ACTIVE','Empty\x20Campaign','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','SIP/%s/%s%s','trim','dialCutDigit','substring','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','callerid','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','toLowerVariables','variables','Action','variablesAction','originated:\x20','OriginateError','[originateFailure][logOriginateFailure]','syncNewExten','actionid','lookAgent','logLookAgent','clone','responsetime','isFailure','response','custom:agentringnoanswer','rejected','Answer','[callProgressDetectingAgent][logAnswer]','cause','transfer','destuniqueid','addVariable','filterKey','variable','keys','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','uuid','moment','ioredis','../../../config/environment','../../../config/logger','preview','actionPreview','../ami','./rpcDb','../rpc/cmHopperAdditionalPhone','./action','defaults','redis','localhost','socket.io-emitter','prototype','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','originateresponse','syncOriginateResponse','hangup','bind','hanguprequest','syncHangupRequest','dialend','syncDialEnd','newexten','varset','syncVarSet','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','strategy','answered','loggedIn','pTalking','sumBillable','sumHoldTime','talking','total','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCallToSecond','Trunk','active','Interval','name','stringify','md5','format','voice:queue:%s','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','paused','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','DEACTIVATED','\x20is\x20deactivated','syncCampaigns','clockClearZombieChannels','booked','clearZombieChannels','hasOwnProperty','setMessage','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','isNil','[clearZombieChannels][talking]','Queue','queue','pTalking:\x20','dialAnswer','VoiceQueueId','ListId','status','channel','catch','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','getContactRecallMe','agentReadyId','then','length','scheduledat','dialRecallMeTimeout','Agent','[RecallMe]','logger2','disableContact','starttime','dialRecallInQueue','rescheduleContactInQueue','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','logCustomer','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','isActive','isTrunkReachable','TrunkBackup','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Global','[callProgressDetectingCustomer][logNoSuchGlobal]'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0xc881,0xac));var _0x1c88=function(_0x7ec937,_0xbe3b08){_0x7ec937=_0x7ec937-0x0;var _0x150040=_0xc881[_0x7ec937];return _0x150040;};'use strict';var util=require(_0x1c88('0x0'));var _=require(_0x1c88('0x1'));var uuid=require(_0x1c88('0x2'));var moment=require(_0x1c88('0x3'));var md5=require('md5');var Redis=require(_0x1c88('0x4'));var config=require(_0x1c88('0x5'));var logger=require(_0x1c88('0x6'))(_0x1c88('0x7'));var loggerAction=require('../../../config/logger')(_0x1c88('0x8'));var ami=require(_0x1c88('0x9'));var rpcDb=require(_0x1c88('0xa'));var cmHopperAdditionalPhone=require(_0x1c88('0xb'));var Action=require(_0x1c88('0xc'));var ut=require('./util/util');config['redis']=_[_0x1c88('0xd')](config[_0x1c88('0xe')],{'host':_0x1c88('0xf'),'port':0x18eb});var io=require(_0x1c88('0x10'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0x1c88('0x11')]['enqueue']=function(_0x39b6c9){this[_0x1c88('0x12')]=this[_0x1c88('0x12')]?this[_0x1c88('0x12')][_0x1c88('0x13')](_0x39b6c9):_0x39b6c9();};function Preview(_0x2a6981){this[_0x1c88('0x14')]=new Sequence();this[_0x1c88('0x15')]=_0x2a6981[_0x1c88('0x16')];this[_0x1c88('0x17')]=_0x2a6981['trunks'];this[_0x1c88('0x18')]={};this[_0x1c88('0x19')]=_0x2a6981[_0x1c88('0x19')];this['clockClearZombieChannels']=0x0;ami['on'](_0x1c88('0x1a'),this[_0x1c88('0x1b')]['bind'](this));ami['on'](_0x1c88('0x1c'),this['syncHangup'][_0x1c88('0x1d')](this));ami['on'](_0x1c88('0x1e'),this[_0x1c88('0x1f')][_0x1c88('0x1d')](this));ami['on'](_0x1c88('0x20'),this[_0x1c88('0x21')][_0x1c88('0x1d')](this));ami['on'](_0x1c88('0x22'),this['syncNewExten']['bind'](this));ami['on'](_0x1c88('0x23'),this[_0x1c88('0x24')][_0x1c88('0x1d')](this));ami['on'](_0x1c88('0x25'),this[_0x1c88('0x26')][_0x1c88('0x1d')](this));ami['on']('blindtransfer',this[_0x1c88('0x27')][_0x1c88('0x1d')](this));this[_0x1c88('0x28')](this[_0x1c88('0x15')]);}function emit(_0x3da25a,_0x14dce8,_0x58025e){io['to'](_0x3da25a)[_0x1c88('0x29')](_0x14dce8,_0x58025e);}function emitCampaignPreview(_0xd6a7d){if(_0xd6a7d[_0x1c88('0x2a')]===_0x1c88('0x2b')){var _0x2de525={'id':_0xd6a7d['id'],'name':_0xd6a7d['name'],'strategy':_0xd6a7d[_0x1c88('0x2c')],'answered':_0xd6a7d[_0x1c88('0x2d')],'available':_0xd6a7d['available'],'loggedIn':_0xd6a7d[_0x1c88('0x2e')],'pTalking':_0xd6a7d[_0x1c88('0x2f')],'sumBillable':_0xd6a7d[_0x1c88('0x30')],'sumDuration':_0xd6a7d['sumDuration'],'sumHoldTime':_0xd6a7d[_0x1c88('0x31')]||0x0,'talking':_0xd6a7d[_0x1c88('0x32')],'total':_0xd6a7d[_0x1c88('0x33')],'type':_0xd6a7d['type'],'unmanaged':_0xd6a7d['unmanaged'],'abandoned':_0xd6a7d[_0x1c88('0x34')],'waiting':_0xd6a7d[_0x1c88('0x35')],'loggedInDb':_0xd6a7d[_0x1c88('0x36')],'dialActive':_0xd6a7d[_0x1c88('0x37')],'dialMethod':_0xd6a7d[_0x1c88('0x38')],'dialOriginateCallerIdName':_0xd6a7d[_0x1c88('0x39')],'dialOriginateCallerIdNumber':_0xd6a7d[_0x1c88('0x3a')],'dialOriginateTimeout':_0xd6a7d[_0x1c88('0x3b')],'dialPrefix':_0xd6a7d[_0x1c88('0x3c')],'outboundAnswerAgiCallsDay':_0xd6a7d[_0x1c88('0x3d')],'outboundAnswerCallsDay':_0xd6a7d[_0x1c88('0x3e')],'outboundBlacklistCallsDay':_0xd6a7d['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0xd6a7d[_0x1c88('0x3f')],'outboundCongestionCallsDay':_0xd6a7d['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0xd6a7d[_0x1c88('0x40')],'outboundDropCallsDayCallersExit':_0xd6a7d[_0x1c88('0x41')],'outboundDropCallsDayTimeout':_0xd6a7d[_0x1c88('0x42')],'outboundNoAnswerCallsDay':_0xd6a7d[_0x1c88('0x43')],'outboundNoSuchCallsDay':_0xd6a7d[_0x1c88('0x44')],'outboundOriginateFailureCallsDay':_0xd6a7d['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0xd6a7d[_0x1c88('0x45')],'outboundRejectCallsDay':_0xd6a7d[_0x1c88('0x46')],'outboundUnknownCallsDay':_0xd6a7d['outboundUnknownCallsDay'],'outboundAbandonedCallsDay':_0xd6a7d[_0x1c88('0x47')],'predictiveIntervalAnsweredCalls':_0xd6a7d[_0x1c88('0x48')],'predictiveIntervalAvgHoldtime':_0xd6a7d[_0x1c88('0x49')],'predictiveIntervalAvgTalktime':_0xd6a7d['predictiveIntervalAvgTalktime'],'predictiveIntervalDroppedCallsCallersExit':_0xd6a7d[_0x1c88('0x4a')],'predictiveIntervalDroppedCallsTimeout':_0xd6a7d[_0x1c88('0x4b')],'predictiveIntervalErlangCalls':_0xd6a7d[_0x1c88('0x4c')],'predictiveIntervalErlangCallsDroppedCalls':_0xd6a7d[_0x1c88('0x4d')],'predictiveIntervalHitRate':_0xd6a7d['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0xd6a7d[_0x1c88('0x4e')],'predictiveIntervalPauses':_0xd6a7d[_0x1c88('0x4f')],'predictiveIntervalAvailable':_0xd6a7d[_0x1c88('0x50')],'predictiveIntervalTotalCalls':_0xd6a7d[_0x1c88('0x51')],'message':_0xd6a7d[_0x1c88('0x52')],'originated':_0xd6a7d[_0x1c88('0x53')],'erlangCalls':_0xd6a7d['erlangCalls'],'erlangCallToSecond':_0xd6a7d[_0x1c88('0x54')],'erlangAbandonmentRate':_0xd6a7d['erlangAbandonmentRate'],'erlangBusyFactor':_0xd6a7d['erlangBusyFactor'],'startPredictive':_0xd6a7d['startPredictive'],'startProgressive':_0xd6a7d['startProgressive']};if(_0xd6a7d[_0x1c88('0x55')]){_0x2de525[_0x1c88('0x55')]={'id':_0xd6a7d[_0x1c88('0x55')]['id'],'name':_0xd6a7d['Trunk']['name'],'active':_0xd6a7d[_0x1c88('0x55')][_0x1c88('0x56')],'callerid':_0xd6a7d[_0x1c88('0x55')]['callerid']};}if(_0xd6a7d[_0x1c88('0x57')]){_0x2de525[_0x1c88('0x57')]={'id':_0xd6a7d[_0x1c88('0x57')]['id'],'name':_0xd6a7d[_0x1c88('0x57')][_0x1c88('0x58')]};}var _0x19ad06=md5(JSON[_0x1c88('0x59')](_0x2de525));if(_0xd6a7d[_0x1c88('0x5a')]!==_0x19ad06){_0xd6a7d[_0x1c88('0x5a')]=_0x19ad06;emit(util[_0x1c88('0x5b')](_0x1c88('0x5c'),_0x2de525['name']),_0x1c88('0x5d'),_0x2de525);}}}function emitVoiceQueueChannelRemove(_0x33c767){logger[_0x1c88('0x5e')](_0x1c88('0x5f'),JSON[_0x1c88('0x59')](_0x33c767));emit(util[_0x1c88('0x5b')](_0x1c88('0x5c'),_0x33c767[_0x1c88('0x58')]),_0x1c88('0x60'),_0x33c767);io[_0x1c88('0x29')](_0x1c88('0x61'),_0x33c767);}function notSendMessagesQueue(_0x3ff3f2){if(_0x3ff3f2[_0x1c88('0x62')]){if(_0x3ff3f2['originated']===0x0&&_0x3ff3f2[_0x1c88('0x2f')]===0x0){_0x3ff3f2[_0x1c88('0x62')]=![];_0x3ff3f2['available']=0x0;_0x3ff3f2[_0x1c88('0x63')]=0x0;_0x3ff3f2[_0x1c88('0x52')]=_0x1c88('0x64');ut[_0x1c88('0x65')](_0x1c88('0x66'),_0x3ff3f2[_0x1c88('0x58')]+_0x1c88('0x67'));}else{_0x3ff3f2[_0x1c88('0x52')]=_0x1c88('0x68');ut[_0x1c88('0x65')](_0x1c88('0x66'),_0x3ff3f2[_0x1c88('0x58')]+_0x1c88('0x69'));}emitCampaignPreview(_0x3ff3f2);}}Preview['prototype'][_0x1c88('0x28')]=function(){var _0xa8fcd3=this;setInterval(function(){_0xa8fcd3[_0x1c88('0x6a')]();},0x7cf);};Preview[_0x1c88('0x11')][_0x1c88('0x6a')]=function(){var _0x3279e1=this[_0x1c88('0x15')];this[_0x1c88('0x6b')]+=0x1;for(var _0xe845f3 in _0x3279e1){if(_0x3279e1['hasOwnProperty'](_0xe845f3)&&(_0x3279e1[_0xe845f3][_0x1c88('0x38')]===_0x1c88('0x7')||_0x3279e1[_0xe845f3][_0x1c88('0x38')]===_0x1c88('0x6c'))&&_0x3279e1[_0xe845f3][_0x1c88('0x2a')]==='outbound'){if(this[_0x1c88('0x6b')]>0x7){this[_0x1c88('0x6b')]=0x0;this[_0x1c88('0x6d')]();}}if(_0x3279e1[_0x1c88('0x6e')](_0xe845f3)&&_0x3279e1[_0xe845f3]['dialMethod']===_0x1c88('0x7')&&_0x3279e1[_0xe845f3]['type']===_0x1c88('0x2b')){if(_0x3279e1[_0xe845f3]['dialActive']){this[_0x1c88('0x6f')](_0x3279e1[_0xe845f3]);if(_0x3279e1[_0xe845f3][_0x1c88('0x70')])this[_0x1c88('0x71')](_0x3279e1[_0xe845f3]);}else{notSendMessagesQueue(_0x3279e1[_0xe845f3]);}}}};Preview[_0x1c88('0x11')][_0x1c88('0x72')]=function(_0x2ad4d4){var _0x1435a2=this;this[_0x1c88('0x14')]['enqueue'](function(){if(!_[_0x1c88('0x73')](_0x1435a2[_0x1c88('0x18')][_0x2ad4d4])){loggerAction[_0x1c88('0x5e')](_0x1c88('0x74'),_0x2ad4d4,_0x1c88('0x75'),_0x1435a2['actions'][_0x2ad4d4][_0x1c88('0x76')],'originated:\x20',JSON[_0x1c88('0x59')](_0x1435a2[_0x1c88('0x15')][_0x1435a2[_0x1c88('0x18')][_0x2ad4d4][_0x1c88('0x76')]]['originated']),_0x1c88('0x77'),JSON[_0x1c88('0x59')](_0x1435a2[_0x1c88('0x15')][_0x1435a2[_0x1c88('0x18')][_0x2ad4d4][_0x1c88('0x76')]]['pTalking']),JSON[_0x1c88('0x59')](_0x1435a2[_0x1c88('0x18')][_0x2ad4d4][_0x1c88('0x78')]),JSON[_0x1c88('0x59')](_['pick'](_0x1435a2['actions'][_0x2ad4d4],['contactId','UserId',_0x1c88('0x79'),_0x1c88('0x7a')])));return ami['Action']({'action':_0x1c88('0x7b'),'channel':_0x1435a2[_0x1c88('0x18')][_0x2ad4d4][_0x1c88('0x7c')]})[_0x1c88('0x7d')](function(_0x8485ec){if(_0x8485ec[_0x1c88('0x52')]===_0x1c88('0x7e')){setTimeout(function(){if(_0x1435a2[_0x1c88('0x18')][_0x2ad4d4]){ut[_0x1c88('0x7f')](_0x1435a2[_0x1c88('0x15')][_0x1435a2[_0x1c88('0x18')][_0x2ad4d4][_0x1c88('0x76')]],_0x1c88('0x80'));if(_0x1435a2['actions'][_0x2ad4d4][_0x1c88('0x78')]===!![]){ut[_0x1c88('0x81')](_0x1435a2['campaignsPreview'][_0x1435a2['actions'][_0x2ad4d4][_0x1c88('0x76')]],_0x1c88('0x80'));ut[_0x1c88('0x82')](_0x1c88('0x83')+_0x2ad4d4,_0x1435a2[_0x1c88('0x18')][_0x2ad4d4][_0x1c88('0x76')]);}ut['loggerError'](_0x1c88('0x84')+_0x2ad4d4,_0x1435a2[_0x1c88('0x18')][_0x2ad4d4][_0x1c88('0x76')]);delete _0x1435a2[_0x1c88('0x18')][_0x2ad4d4];}},0x2328);}});}});};Preview['prototype'][_0x1c88('0x6d')]=function(){var _0x1498f6=this;loggerAction['info'](_0x1c88('0x85'),_['size'](this['actions']));for(var _0x5d3298 in this['actions']){if(_0x1498f6['actions'][_0x1c88('0x6e')](_0x5d3298)){_0x1498f6['clearZombieChannel'](_0x5d3298);}}};Preview[_0x1c88('0x11')][_0x1c88('0x71')]=function(_0x5d126e){var _0xd68d3f=this;rpcDb[_0x1c88('0x86')](_0x5d126e['id'],ut[_0x1c88('0x87')](this[_0x1c88('0x19')]))[_0x1c88('0x88')](function(_0x2ebd51){if(!_[_0x1c88('0x73')](_0x2ebd51)){for(var _0x3ea32c=0x0;_0x3ea32c<_0x2ebd51[_0x1c88('0x89')];_0x3ea32c+=0x1){if(ut['getDiff'](_0x2ebd51[_0x3ea32c][_0x1c88('0x8a')])<_0x5d126e[_0x1c88('0x8b')]*0x3c){if(_0x2ebd51[_0x3ea32c]['Agent']&&!_0x2ebd51[_0x3ea32c][_0x1c88('0x8c')]['voicePause']){_0xd68d3f['run'](_0x2ebd51[_0x3ea32c]['id'])[_0x1c88('0x88')](ut['logger2'](_0x1c88('0x8d')))['catch'](ut[_0x1c88('0x8e')](_0x1c88('0x8d')));}else{rpcDb[_0x1c88('0x8f')](_0x2ebd51[_0x3ea32c]['id']);}}else{var _0x95d41f=new Action(_0x2ebd51[_0x3ea32c],_0x5d126e);_0x95d41f[_0x1c88('0x90')]=moment()[_0x1c88('0x5b')]('YYYY-MM-DD\x20HH:mm:ss');_0x5d126e[_0x1c88('0x45')]+=0x1;ut['logCustomer'](_0x95d41f,0x17,'RecallInQueue');if(_0x5d126e[_0x1c88('0x91')]){rpcDb[_0x1c88('0x92')](ut['createBody'](_0x2ebd51[_0x3ea32c]));rpcDb[_0x1c88('0x93')](_0x95d41f,_0x1c88('0x94'));}else{ut[_0x1c88('0x95')](_0x95d41f,0x16,_0x1c88('0x96'));rpcDb[_0x1c88('0x93')](_0x95d41f,_0x1c88('0x97'));rpcDb[_0x1c88('0x98')](_0x95d41f,'[HistoryRecallClose]');}}}}})[_0x1c88('0x7d')](ut['logger2'](_0x1c88('0x99')));};Preview[_0x1c88('0x11')][_0x1c88('0x6f')]=function(_0x1106c0){_0x1106c0[_0x1c88('0x62')]=!![];if(ut[_0x1c88('0x9a')](_0x1106c0[_0x1c88('0x2e')])){_0x1106c0['message']=_0x1c88('0x9b');}else if(!ut[_0x1c88('0x9c')](_0x1106c0[_0x1c88('0x37')])){_0x1106c0[_0x1c88('0x52')]=_0x1c88('0x64');}else if(!this[_0x1c88('0x9d')](_0x1106c0[_0x1c88('0x55')])){if(!this[_0x1c88('0x9d')](_0x1106c0[_0x1c88('0x9e')])){_0x1106c0['message']='TRUNK_IS_NOT_REACHABLE';}else{_0x1106c0['message']='ACTIVE';}}else{_0x1106c0['message']='ACTIVE';}emitCampaignPreview(_0x1106c0);};Preview[_0x1c88('0x11')][_0x1c88('0x9f')]=function(_0x2bbbf0,_0x488bdd,_0x4b86ae){var _0x582f79=this;var _0x1936e4=this[_0x1c88('0x18')][_0x488bdd];var _0x1b30a8=this[_0x1c88('0x15')][_0x1936e4[_0x1c88('0x76')]];var _0x4263dc;var _0x4df578=![];var _0x209209=0x2;var _0x2152e7=0x3;if(_0x1b30a8){switch(_0x4b86ae){case'1':_0x1b30a8[_0x1c88('0x44')]+=0x1;_0x1936e4[_0x1c88('0xa0')]+=0x1;_0x1936e4[_0x1c88('0xa1')]=ut[_0x1c88('0xa2')](_0x1936e4);ut['logCustomer'](_0x1936e4,0x0,_0x1c88('0xa3'));ami[_0x1c88('0x29')](_0x1c88('0xa4'),ut[_0x1c88('0xa5')](_0x1936e4,_0x1c88('0xa6')));rpcDb[_0x1c88('0x93')](_0x1936e4,_0x1c88('0xa7'));_0x582f79[_0x1c88('0xa8')](_0x1936e4,'0',_0x1b30a8)[_0x1c88('0x88')](function(_0x359f89){_0x4df578=_0x359f89[_0x1c88('0xa9')]==0x1;_0x209209=_0x1b30a8['dialNoSuchNumberRetryFrequency'];_0x2152e7=_0x1b30a8[_0x1c88('0xaa')];if(!_0x4df578){if(ut['totalGlobal'](_0x1936e4)>=_0x1b30a8[_0x1c88('0xab')]){_0x4263dc=ut['cloneAction'](_0x1936e4,0xf,_0x1c88('0xac'));rpcDb[_0x1c88('0x98')](_0x4263dc,_0x1c88('0xad'));}else{if(_0x1936e4[_0x1c88('0xa0')]>=_0x1b30a8[_0x1c88('0xae')]){rpcDb[_0x1c88('0x98')](_0x1936e4,_0x1c88('0xad'));}else{rpcDb[_0x1c88('0xaf')](ut[_0x1c88('0xb0')](_0x1936e4,'countnosuchnumberretry',_0x1b30a8[_0x1c88('0xb1')]),_0x1936e4[_0x1c88('0xb2')],_0x1936e4[_0x1c88('0xb3')]);}}delete this['actions'][_0x2bbbf0[_0x1c88('0xb4')]];}else{_0x1936e4['countnosuchnumberretry']++;logger['info'](_0x1c88('0xb5'),_0x1936e4[_0x1c88('0xa0')]);logger[_0x1c88('0x5e')]('id',_0x1936e4[_0x1c88('0xb6')]);_0x582f79[_0x1c88('0xb7')]({'id':_0x1936e4[_0x1c88('0xb6')],'field':{'countnosuchnumberretry':_0x1936e4['countnosuchnumberretry']}})['then'](function(){_0x582f79[_0x1c88('0xb8')](_0x1936e4,_0x209209,_0x2152e7)['then'](function(){});});}});break;case'ANSWER':var _0x471993=moment()[_0x1c88('0x5b')](_0x1c88('0xb9'));_0x1936e4['responsetime']=_0x471993;_0x1936e4[_0x1c88('0xba')]=_0x471993;_0x1936e4[_0x1c88('0x78')]=!![];_0x1b30a8[_0x1c88('0x2f')]+=0x1;logger[_0x1c88('0x5e')](_0x1c88('0xbb'),_0x1936e4[_0x1c88('0xbc')],_0x1c88('0xbd'),_0x1b30a8[_0x1c88('0x58')],_0x1c88('0x77'),_0x1b30a8['pTalking']);ami[_0x1c88('0x29')]('custom:agentconnect',ut[_0x1c88('0xa5')](_0x1936e4,_0x1c88('0xbe'),this[_0x1c88('0x15')][_0x1936e4['queue']]));if(_0x1b30a8['acw']){ami['emit'](_0x1c88('0xbf'),ut[_0x1c88('0xc0')](_0x1936e4));}break;case'16':ami[_0x1c88('0x29')](_0x1c88('0xc1'),ut[_0x1c88('0xa5')](_0x1936e4,_0x1c88('0xc2'),this[_0x1c88('0x15')][_0x1936e4[_0x1c88('0x76')]]));emitVoiceQueueChannelRemove(ut[_0x1c88('0xa5')](_0x1936e4,_0x1c88('0xc2')));_0x1b30a8['outboundAnswerCallsDay']+=0x1;_0x1b30a8[_0x1c88('0x33')]+=0x1;_0x1b30a8[_0x1c88('0x2d')]+=0x1;ut[_0x1c88('0x81')](_0x1b30a8,_0x1c88('0xc3'));_0x1936e4[_0x1c88('0xa1')]=ut[_0x1c88('0xa2')](_0x1936e4);ut['logCustomer'](_0x1936e4,0x4,'Answer');rpcDb[_0x1c88('0x93')](_0x1936e4,_0x1c88('0xc4'));rpcDb[_0x1c88('0x98')](_0x1936e4,_0x1c88('0xc5'));rpcDb[_0x1c88('0xc6')](_0x1936e4);_0x1b30a8['sumDuration']+=_0x1936e4[_0x1c88('0xc7')];_0x1b30a8[_0x1c88('0x30')]+=_0x1936e4['talktime'];logger[_0x1c88('0x5e')](_0x1c88('0xc8'),_0x1936e4[_0x1c88('0xbc')],_0x1c88('0xbd'),_0x1b30a8['name'],'pTalking:\x20',_0x1b30a8[_0x1c88('0x2f')]);delete this[_0x1c88('0x18')][_0x2bbbf0[_0x1c88('0xb4')]];break;case _0x1c88('0xc9'):_0x1b30a8[_0x1c88('0x3f')]+=0x1;_0x1936e4[_0x1c88('0xca')]+=0x1;_0x1936e4[_0x1c88('0xa1')]=ut[_0x1c88('0xa2')](_0x1936e4);ut[_0x1c88('0x95')](_0x1936e4,0x5,_0x1c88('0xcb'));_0x209209=_0x1b30a8[_0x1c88('0xcc')];_0x2152e7=_0x1b30a8[_0x1c88('0xaa')];ami[_0x1c88('0x29')](_0x1c88('0xcd'),ut[_0x1c88('0xa5')](_0x1936e4,_0x1c88('0xce')));rpcDb[_0x1c88('0x93')](_0x1936e4,_0x1c88('0xcf'));_0x582f79['verifyAdditionalPhones'](_0x1936e4,'5',_0x1b30a8)[_0x1c88('0x88')](function(_0x19af1e){_0x4df578=_0x19af1e[_0x1c88('0xa9')]==0x1;if(!_0x4df578){if(ut[_0x1c88('0xa2')](_0x1936e4)>=_0x1b30a8[_0x1c88('0xab')]){_0x4263dc=ut['cloneAction'](_0x1936e4,0xf,_0x1c88('0xac'));rpcDb[_0x1c88('0x98')](_0x4263dc,_0x1c88('0xd0'));}else{if(_0x1936e4['countbusyretry']>=_0x1b30a8['dialBusyMaxRetry']){rpcDb[_0x1c88('0x98')](_0x1936e4,'[callProgressDetectingCustomer][logBusy]');}else{rpcDb[_0x1c88('0xaf')](ut[_0x1c88('0xb0')](_0x1936e4,_0x1c88('0xca'),_0x1b30a8[_0x1c88('0xcc')]),_0x1936e4['unlockAgent'],_0x1936e4[_0x1c88('0xb3')]);}}}else{_0x1936e4['countbusyretry']++;_0x582f79['incrementPreviewCounters']({'id':_0x1936e4[_0x1c88('0xb6')],'field':{'countbusyretry':_0x1936e4['countbusyretry']}})[_0x1c88('0x88')](function(){_0x582f79['swapAdditionalPhones'](_0x1936e4,_0x209209,_0x2152e7)['then'](function(){});});}});break;case _0x1c88('0xd1'):_0x1b30a8['outboundNoAnswerCallsDay']+=0x1;_0x1936e4[_0x1c88('0xd2')]+=0x1;_0x1936e4[_0x1c88('0xa1')]=ut[_0x1c88('0xa2')](_0x1936e4);ut['logCustomer'](_0x1936e4,0x3,'NoAnswer');_0x209209=_0x1b30a8[_0x1c88('0xd3')];_0x2152e7=_0x1b30a8['callAdditionalPhoneAfterMin'];var _0xd947d6=ut['buildNoAnswerEventPayload'](_0x1936e4,_0x1b30a8);ami[_0x1c88('0x29')]('custom:agentnoanswer',_0xd947d6);rpcDb[_0x1c88('0x93')](_0x1936e4,_0x1c88('0xd4'));_0x582f79['verifyAdditionalPhones'](_0x1936e4,'3',_0x1b30a8)[_0x1c88('0x88')](function(_0x2e87cd){_0x4df578=_0x2e87cd[_0x1c88('0xa9')]==0x1;if(!_0x4df578){if(ut[_0x1c88('0xa2')](_0x1936e4)>=_0x1b30a8[_0x1c88('0xab')]){_0x4263dc=ut[_0x1c88('0xd5')](_0x1936e4,0xf,_0x1c88('0xac'));rpcDb[_0x1c88('0x98')](_0x4263dc,_0x1c88('0xd6'));}else{if(_0x1936e4[_0x1c88('0xd2')]>=_0x1b30a8[_0x1c88('0xd7')]){rpcDb[_0x1c88('0x98')](_0x1936e4,'[callProgressDetectingCustomer][logNoAnswer]');}else{rpcDb[_0x1c88('0xaf')](ut[_0x1c88('0xb0')](_0x1936e4,_0x1c88('0xd2'),_0x1b30a8[_0x1c88('0xd3')]),_0x1936e4[_0x1c88('0xb2')],_0x1936e4[_0x1c88('0xb3')]);}}}else{_0x1936e4[_0x1c88('0xd2')]++;_0x582f79[_0x1c88('0xb7')]({'id':_0x1936e4[_0x1c88('0xb6')],'field':{'countnoanswerretry':_0x1936e4[_0x1c88('0xd2')]}})[_0x1c88('0x88')](function(){_0x582f79[_0x1c88('0xb8')](_0x1936e4,_0x209209,_0x2152e7)[_0x1c88('0x88')](function(){});});}});break;case'CONGESTION':_0x1b30a8[_0x1c88('0xd8')]+=0x1;_0x1936e4['countcongestionretry']+=0x1;_0x1936e4[_0x1c88('0xa1')]=ut[_0x1c88('0xa2')](_0x1936e4);ut[_0x1c88('0x95')](_0x1936e4,0x8,_0x1c88('0xd9'));_0x209209=_0x1b30a8[_0x1c88('0xda')];_0x2152e7=_0x1b30a8['callAdditionalPhoneAfterMin'];ami['emit']('custom:agentcongestion',ut[_0x1c88('0xa5')](_0x1936e4,_0x1c88('0xdb')));rpcDb[_0x1c88('0x93')](_0x1936e4,_0x1c88('0xdc'));_0x582f79['verifyAdditionalPhones'](_0x1936e4,'8',_0x1b30a8)[_0x1c88('0x88')](function(_0x37dc98){_0x4df578=_0x37dc98[_0x1c88('0xa9')]==0x1;if(!_0x4df578){if(ut['totalGlobal'](_0x1936e4)>=_0x1b30a8['dialGlobalMaxRetry']){_0x4263dc=ut[_0x1c88('0xd5')](_0x1936e4,0xf,_0x1c88('0xac'));rpcDb['createCustomerFinal'](_0x4263dc,_0x1c88('0xdd'));}else{if(_0x1936e4['countcongestionretry']>=_0x1b30a8[_0x1c88('0xde')]){rpcDb['createCustomerFinal'](_0x1936e4,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb[_0x1c88('0xaf')](ut[_0x1c88('0xb0')](_0x1936e4,_0x1c88('0xdf'),_0x1b30a8['dialBusyRetryFrequency']),_0x1936e4[_0x1c88('0xb2')],_0x1936e4[_0x1c88('0xb3')]);}}}else{_0x1936e4[_0x1c88('0xdf')]++;_0x582f79['incrementPreviewCounters']({'id':_0x1936e4[_0x1c88('0xb6')],'field':{'countcongestionretry':_0x1936e4[_0x1c88('0xdf')]}})[_0x1c88('0x88')](function(){_0x582f79[_0x1c88('0xb8')](_0x1936e4,_0x209209,_0x2152e7)[_0x1c88('0x88')](function(){});});}});break;case _0x1c88('0xe0'):_0x1b30a8[_0x1c88('0x46')]+=0x1;_0x1936e4[_0x1c88('0xe1')]+=0x1;_0x1936e4[_0x1c88('0xa1')]=ut['totalGlobal'](_0x1936e4);ut[_0x1c88('0x95')](_0x1936e4,0x14,'AgentReject');_0x209209=_0x1b30a8[_0x1c88('0xe2')];_0x2152e7=_0x1b30a8[_0x1c88('0xaa')];ami['emit'](_0x1c88('0xe3'),ut[_0x1c88('0xa5')](_0x1936e4,'agentreject'));rpcDb['createCustomerHistory'](_0x1936e4,_0x1c88('0xe4'));_0x582f79['verifyAdditionalPhones'](_0x1936e4,'20',_0x1b30a8)[_0x1c88('0x88')](function(_0x48a504){_0x4df578=_0x48a504[_0x1c88('0xa9')]==0x1;if(!_0x4df578){if(ut[_0x1c88('0xa2')](_0x1936e4)>=_0x1b30a8[_0x1c88('0xab')]){_0x4263dc=ut[_0x1c88('0xd5')](_0x1936e4,0x14,_0x1c88('0xe5'));rpcDb[_0x1c88('0x98')](_0x4263dc,'[callProgressDetectingCustomer][logAgentReject]');}else{if(_0x1936e4[_0x1c88('0xe1')]>=_0x1b30a8[_0x1c88('0xe6')]){rpcDb[_0x1c88('0x98')](_0x1936e4,_0x1c88('0xe7'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x1936e4,'countagentrejectretry',_0x1b30a8[_0x1c88('0xe2')]),_0x1936e4[_0x1c88('0xb2')],_0x1936e4[_0x1c88('0xb3')]);}}}else{_0x1936e4[_0x1c88('0xd2')]++;_0x582f79[_0x1c88('0xb7')]({'id':_0x1936e4[_0x1c88('0xb6')],'field':{'countnoanswerretry':_0x1936e4['countnoanswerretry']}})['then'](function(){_0x582f79[_0x1c88('0xb8')](_0x1936e4,_0x209209,_0x2152e7)[_0x1c88('0x88')](function(){});});}});break;case _0x1c88('0xe8'):_0x1b30a8[_0x1c88('0x47')]+=0x1;_0x1936e4[_0x1c88('0xe9')]+=0x1;_0x1936e4[_0x1c88('0xa1')]=ut[_0x1c88('0xa2')](_0x1936e4);ut[_0x1c88('0x95')](_0x1936e4,0xb,'Abandoned');rpcDb[_0x1c88('0x93')](_0x1936e4,_0x1c88('0xea'));_0x582f79[_0x1c88('0xa8')](_0x1936e4,'11',_0x1b30a8)[_0x1c88('0x88')](function(_0x31ba8d){_0x4df578=_0x31ba8d[_0x1c88('0xa9')]==0x1;if(!_0x4df578){if(ut[_0x1c88('0xa2')](_0x1936e4)>=_0x1b30a8[_0x1c88('0xab')]){_0x4263dc=ut[_0x1c88('0xd5')](_0x1936e4,0xf,_0x1c88('0xac'));rpcDb['createCustomerFinal'](_0x4263dc,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0x1936e4[_0x1c88('0xeb')]>=_0x1b30a8[_0x1c88('0xec')]){rpcDb[_0x1c88('0x98')](_0x1936e4,_0x1c88('0xea'));}else{rpcDb[_0x1c88('0xaf')](ut[_0x1c88('0xb0')](_0x1936e4,_0x1c88('0xe9'),_0x1b30a8[_0x1c88('0xed')]),_0x1936e4[_0x1c88('0xb2')],_0x1936e4[_0x1c88('0xb3')]);}}}else{_0x1936e4[_0x1c88('0xd2')]++;_0x582f79[_0x1c88('0xb7')]({'id':_0x1936e4[_0x1c88('0xb6')],'field':{'countnoanswerretry':_0x1936e4[_0x1c88('0xd2')]}})[_0x1c88('0x88')](function(){_0x582f79[_0x1c88('0xb8')](_0x1936e4,_0x209209,_0x2152e7)[_0x1c88('0x88')](function(){});});}});break;case'18':_0x1b30a8[_0x1c88('0xee')]+=0x1;_0x1936e4['countmachineretry']+=0x1;_0x1936e4[_0x1c88('0xa1')]=ut[_0x1c88('0xa2')](_0x1936e4);ut[_0x1c88('0x95')](_0x1936e4,0x12,_0x2bbbf0[_0x1c88('0xef')]||_0x2bbbf0[_0x1c88('0xf0')]);ami[_0x1c88('0x29')](_0x1c88('0xf1'),ut['buildObj'](_0x1936e4,_0x1c88('0xf2')));rpcDb[_0x1c88('0x93')](_0x1936e4,'[callProgressDetectingCustomer][hangupInAMD]');_0x582f79[_0x1c88('0xa8')](_0x1936e4,'18',_0x1b30a8)[_0x1c88('0x88')](function(_0x10ffe2){_0x4df578=_0x10ffe2[_0x1c88('0xa9')]==0x1;if(!_0x4df578){if(ut[_0x1c88('0xa2')](_0x1936e4)>=_0x1b30a8[_0x1c88('0xab')]){_0x4263dc=ut[_0x1c88('0xd5')](_0x1936e4,0x12,_0x1c88('0xac'));rpcDb[_0x1c88('0x98')](_0x4263dc,_0x1c88('0xf3'));}else{rpcDb[_0x1c88('0x98')](_0x1936e4,_0x1c88('0xf3'));}}else{_0x1936e4[_0x1c88('0xd2')]++;_0x582f79['incrementPreviewCounters']({'id':_0x1936e4[_0x1c88('0xb6')],'field':{'countnoanswerretry':_0x1936e4['countnoanswerretry']}})['then'](function(){_0x582f79['swapAdditionalPhones'](_0x1936e4,_0x209209,_0x2152e7)[_0x1c88('0x88')](function(){});});}});delete this[_0x1c88('0x18')][_0x2bbbf0[_0x1c88('0xb4')]];break;case'19':_0x1b30a8[_0x1c88('0xee')]+=0x1;_0x1936e4[_0x1c88('0xa1')]=ut[_0x1c88('0xa2')](_0x1936e4);ut[_0x1c88('0x95')](_0x1936e4,0x13,_0x2bbbf0['cause-txt']||_0x2bbbf0[_0x1c88('0xf0')]);ami[_0x1c88('0x29')](_0x1c88('0xf1'),ut['buildObj'](_0x1936e4,_0x1c88('0xf2')));rpcDb['createCustomerHistory'](_0x1936e4,_0x1c88('0xf4'));_0x582f79[_0x1c88('0xa8')](_0x1936e4,'18',_0x1b30a8)[_0x1c88('0x88')](function(_0x57ddf1){_0x4df578=_0x57ddf1[_0x1c88('0xa9')]==0x1;if(!_0x4df578){if(ut[_0x1c88('0xa2')](_0x1936e4)>=_0x1b30a8[_0x1c88('0xab')]){_0x4263dc=ut['cloneAction'](_0x1936e4,0xf,_0x1c88('0xac'));rpcDb[_0x1c88('0x98')](_0x4263dc,_0x1c88('0xf4'));}else{rpcDb['createCustomerFinal'](_0x1936e4,_0x1c88('0xf4'));}}else{_0x1936e4[_0x1c88('0xd2')]++;_0x582f79['incrementPreviewCounters']({'id':_0x1936e4['idContact'],'field':{'countnoanswerretry':_0x1936e4[_0x1c88('0xd2')]}})[_0x1c88('0x88')](function(){_0x582f79['swapAdditionalPhones'](_0x1936e4,_0x209209,_0x2152e7)[_0x1c88('0x88')](function(){});});}});delete this[_0x1c88('0x18')][_0x2bbbf0[_0x1c88('0xb4')]];break;default:if(_0x1936e4[_0x1c88('0x78')]){ut['decrementTalkink'](_0x1b30a8,'[default]');ut[_0x1c88('0x82')]('[Dialer][decrementTalkink][no\x20Hangup][Preview]'+_0x1b30a8[_0x1c88('0x58')],_0x2bbbf0);}_0x1b30a8[_0x1c88('0xee')]+=0x1;_0x1936e4[_0x1c88('0xa1')]=ut['totalGlobal'](_0x1936e4);ut[_0x1c88('0x95')](_0x1936e4,0xc,_0x2bbbf0['cause-txt']||_0x2bbbf0[_0x1c88('0xf0')]);_0x209209=_0x1b30a8['dialAgentRejectRetryFrequency'];_0x2152e7=_0x1b30a8[_0x1c88('0xaa')];rpcDb['createCustomerHistory'](_0x1936e4,'[callProgressDetectingCustomer][logUnknown]');_0x582f79['verifyAdditionalPhones'](_0x1936e4,'20',_0x1b30a8)[_0x1c88('0x88')](function(_0xc46c80){_0x4df578=_0xc46c80[_0x1c88('0xa9')]==0x1;if(!_0x4df578){if(ut[_0x1c88('0xa2')](_0x1936e4)>=_0x1b30a8[_0x1c88('0xab')]){_0x4263dc=ut[_0x1c88('0xd5')](_0x1936e4,0xf,_0x1c88('0xac'));rpcDb[_0x1c88('0x98')](_0x4263dc,_0x1c88('0xf5'));}else{rpcDb['createCustomerFinal'](_0x1936e4,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this[_0x1c88('0x18')][_0x2bbbf0[_0x1c88('0xb4')]];}else{_0x582f79[_0x1c88('0xb8')](_0x1936e4,_0x209209,_0x2152e7)[_0x1c88('0x88')](function(){});}});}if(!(_0x1936e4[_0x1c88('0x78')]&&_0x4b86ae==='16')){ut[_0x1c88('0x7f')](_0x1b30a8,_0x1c88('0xf6'));logger['info'](_0x1c88('0xf7'),_0x1936e4[_0x1c88('0xbc')],_0x1c88('0xbd'),_0x1b30a8[_0x1c88('0x58')],'originated:\x20',_0x1b30a8[_0x1c88('0x53')]);}if(_0x4b86ae!==_0x1c88('0xf8')){delete this[_0x1c88('0x18')][_0x2bbbf0[_0x1c88('0xb4')]];delete this[_0x1c88('0x18')][_0x2bbbf0[_0x1c88('0xf9')]];}}};Preview[_0x1c88('0x11')][_0x1c88('0xfa')]=function(_0x5ca838,_0x4b25f9,_0xb0a411){if(_['isUndefined'](_0x4b25f9)&&_0x1c88('0xfb')!==typeof _0x4b25f9){return;}if(_[_0x1c88('0xfc')](_0xb0a411)&&_0x1c88('0xfb')!==typeof _0xb0a411){return;}switch(_0xb0a411[_0x1c88('0xfd')]){case'0':ut[_0x1c88('0xfe')](_0x5ca838,0x0,_0x1c88('0xa3'));rpcDb[_0x1c88('0xff')](_0x5ca838,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut[_0x1c88('0xfe')](_0x5ca838,0x3,'NoAnswer');rpcDb['createAgentHistory'](_0x5ca838,_0x1c88('0x100'));break;case'5':ut[_0x1c88('0xfe')](_0x5ca838,0x5,_0x1c88('0xcb'));rpcDb[_0x1c88('0xff')](_0x5ca838,_0x1c88('0x101'));break;case'8':ut['logAgent'](_0x5ca838,0x8,_0x1c88('0xd9'));rpcDb[_0x1c88('0xff')](_0x5ca838,'[callProgressDetectingAgent][logCongestion]');break;case'22':ut[_0x1c88('0xfe')](_0x5ca838,0x16,_0x1c88('0x102'));rpcDb[_0x1c88('0xff')](_0x5ca838,'[callProgressDetectingAgent][logAnswerAGI]');break;default:ut[_0x1c88('0xfe')](_0x5ca838,0xc,_0xb0a411['reason']);rpcDb[_0x1c88('0xff')](_0x5ca838,'[callProgressDetectingAgent][logCongestion]');}ut[_0x1c88('0x7f')](_0x4b25f9,_0x1c88('0x103'));logger[_0x1c88('0x5e')](_0x1c88('0x104'),_0x5ca838['uniqueid'],_0x1c88('0xbd'),_0x4b25f9[_0x1c88('0x58')],'originated:\x20',_0x4b25f9[_0x1c88('0x53')]);delete this[_0x1c88('0x18')][_0x5ca838['uniqueid']];};Preview['prototype']['verifyAdditionalPhones']=function(_0x1787d1,_0x13ce83,_0x1a9528){return Promise[_0x1c88('0x105')]()[_0x1c88('0x88')](cmHopperAdditionalPhone['verifyAdditionalPhones'](_0x1787d1,_0x13ce83,_0x1a9528))['catch'](logger[_0x1c88('0x5e')](_0x1c88('0x106')));};Preview[_0x1c88('0x11')]['swapAdditionalPhones']=function(_0x3c074e,_0x3bea09,_0x35bd89){return Promise['resolve']()[_0x1c88('0x88')](cmHopperAdditionalPhone[_0x1c88('0xb8')](_0x3c074e,_0x3bea09,_0x35bd89))[_0x1c88('0x7d')](logger[_0x1c88('0x5e')](_0x1c88('0x107')));};Preview[_0x1c88('0x11')][_0x1c88('0xb7')]=function(_0x2d35ae){return Promise[_0x1c88('0x105')]()[_0x1c88('0x88')](cmHopperAdditionalPhone[_0x1c88('0xb7')](_0x2d35ae))[_0x1c88('0x7d')](logger[_0x1c88('0x5e')](_0x1c88('0x108')));};Preview[_0x1c88('0x11')][_0x1c88('0x109')]=function(_0x294e88,_0x51081e,_0x428d76,_0x2566ab,_0xecdda5){var _0x1d161e=this;return new Promise(function(_0x24fb23,_0x586915){if(_[_0x1c88('0x73')](_0x51081e)||_[_0x1c88('0x73')](_0x51081e[_0x1c88('0x10a')])||_[_0x1c88('0x73')](_0x51081e[_0x1c88('0x10b')])||_[_0x1c88('0x73')](_0x51081e['VoiceQueueId'])){_0x586915(ut[_0x1c88('0x52')]('Contact\x20is\x20undefined',_0x2566ab,_0xecdda5));return;}var _0x29f5c2=uuid['v4']();var _0x3a860b=_0x1d161e[_0x1c88('0x15')][_0x51081e['Queue'][_0x1c88('0x58')]];var _0x119b58=_0x428d76?_0x1d161e[_0x1c88('0x19')][_0x428d76]['id']:undefined;_0x1d161e[_0x1c88('0x18')][_0x29f5c2]=new Action(_0x51081e,_0x3a860b,_0x29f5c2,_0x428d76,_0x119b58);var _0x115589=_0x1d161e[_0x1c88('0x18')][_0x29f5c2];_0x115589['unlockAgent']=_0x2566ab;_0x115589['activeContact']=_0xecdda5;_0x115589['lookAgent']=_0x428d76;if(_[_0x1c88('0x10c')](_0x294e88)){_0x1d161e[_0x1c88('0x10d')](_0x115589,_0x3a860b,_0x51081e,_0x428d76)[_0x1c88('0x88')](function(_0x35ff61){logger['info'](_0x1c88('0x10e'),_0x1c88('0x10f')+_0x115589['queue']+'\x20IdHopper:\x20'+_0x115589[_0x1c88('0xb6')],JSON['stringify'](_0x35ff61));ami['emit']('custom:agentcalled',ut[_0x1c88('0xa5')](_0x115589,_0x1c88('0x110'),_0x1d161e[_0x1c88('0x15')][_0x115589[_0x1c88('0x76')]]));_0x24fb23(ut[_0x1c88('0x52')]('Calling'));})[_0x1c88('0x7d')](function(_0x20970a){ut['logger'](_0x1c88('0x111'),_0x20970a);_0x586915(ut['message'](_0x1c88('0x112'),_0x2566ab,_0xecdda5));});}else{_0x3a860b[_0x1c88('0x113')]+=0x1;ut['logBlacklist'](_0x115589);rpcDb[_0x1c88('0x114')](_0x115589,'[Blacklist][error]');delete _0x1d161e['actions'][_0x29f5c2];_0x586915(ut[_0x1c88('0x52')](_0x1c88('0x115'),_0x2566ab,_0xecdda5));}});};Preview[_0x1c88('0x11')]['isTrunkReachable']=function(_0x1d7b4d){return!_[_0x1c88('0x73')](_0x1d7b4d)&&!_[_0x1c88('0x73')](_0x1d7b4d[_0x1c88('0x58')])&&!_[_0x1c88('0x73')](_0x1d7b4d[_0x1c88('0x56')])&&_0x1d7b4d['active']&&!_[_0x1c88('0x73')](this[_0x1c88('0x17')][util['format'](_0x1c88('0x116'),_0x1d7b4d[_0x1c88('0x58')])])&&!_[_0x1c88('0x73')](this[_0x1c88('0x17')][util[_0x1c88('0x5b')]('SIP/%s',_0x1d7b4d[_0x1c88('0x58')])]['status'])&&(this[_0x1c88('0x17')][util['format'](_0x1c88('0x116'),_0x1d7b4d[_0x1c88('0x58')])][_0x1c88('0x7b')]===_0x1c88('0x117')||this[_0x1c88('0x17')][util['format']('SIP/%s',_0x1d7b4d[_0x1c88('0x58')])][_0x1c88('0x7b')]==='unmonitored');};Preview['prototype'][_0x1c88('0x118')]=function(_0x3d19f1,_0x27eee9){var _0x413458=this;return new Promise(function(_0x427a17,_0x19d3e9){_0x413458['execRun'](_0x3d19f1,_0x27eee9)[_0x1c88('0x88')](function(_0x5d2983){_0x427a17(_[_0x1c88('0x119')](_0x5d2983,[_0x1c88('0x52')]));})[_0x1c88('0x7d')](function(_0x35fca6){if(_0x35fca6['unlock']){rpcDb[_0x1c88('0x11a')](_0x3d19f1);}if(_0x35fca6['active']){rpcDb[_0x1c88('0x8f')](_0x3d19f1);}_0x19d3e9(_[_0x1c88('0x119')](_0x35fca6,[_0x1c88('0x52')]));});});};Preview[_0x1c88('0x11')][_0x1c88('0x11b')]=function(_0x124fcb,_0x11d09c){var _0x3f1c29=this;return new Promise(function(_0x56882b,_0x2783ec){var _0x40b3b3,_0x4da2bc;rpcDb[_0x1c88('0x11c')](_0x124fcb)['then'](function(_0x1fbdfc){if(!_['isNil'](_0x1fbdfc[0x0])){_0x4da2bc=_0x1fbdfc[0x0][_0x1c88('0x11d')]?![]:!![];_0x40b3b3=_0x1fbdfc[0x0][_0x1c88('0x11d')]?!![]:![];_0x40b3b3=_0x11d09c?!![]:_0x40b3b3;}var _0x11555c=_0x3f1c29[_0x1c88('0x11e')](_0x1fbdfc);if(_0x11555c['isValid']){rpcDb[_0x1c88('0x11f')](_[_0x1c88('0x119')](_0x1fbdfc[0x0],[_0x1c88('0x79'),_0x1c88('0x10b')]))[_0x1c88('0x88')](function(_0x1ae0fe){_0x3f1c29[_0x1c88('0x109')](_0x1ae0fe,_0x1fbdfc[0x0],_0x11d09c,_0x4da2bc,_0x40b3b3)[_0x1c88('0x88')](function(_0x86904b){_0x56882b(_0x86904b);})[_0x1c88('0x7d')](function(_0x33d24c){_0x2783ec(_0x33d24c);});})[_0x1c88('0x7d')](function(_0x3f483e){ut[_0x1c88('0x65')](_0x1c88('0x120'),_0x3f483e);_0x2783ec(ut[_0x1c88('0x52')](_0x1c88('0x121'),_0x4da2bc,_0x40b3b3));});}else{_0x2783ec(ut[_0x1c88('0x52')](_0x11555c[_0x1c88('0x52')],_0x4da2bc,_0x40b3b3));}})[_0x1c88('0x7d')](function(_0x93db24){ut[_0x1c88('0x65')](_0x1c88('0x122'),_0x93db24);_0x2783ec(ut[_0x1c88('0x52')](_0x1c88('0x121'),![],!![]));});});};Preview[_0x1c88('0x11')][_0x1c88('0x11e')]=function(_0x270393){if(_[_0x1c88('0x73')](_0x270393)||_[_0x1c88('0x10c')](_0x270393)||!_[_0x1c88('0x73')](_0x270393[0x0][_0x1c88('0x8c')])&&_['isNil'](_0x270393[0x0][_0x1c88('0x8c')][_0x1c88('0x58')])){ut[_0x1c88('0x65')]('[Preview][validateContact][Empty\x20Contact]',_0x270393);return{'isValid':![],'message':'Empty\x20Contact'};}var _0x2e9767=this[_0x1c88('0x15')][_0x270393[0x0][_0x1c88('0x75')][_0x1c88('0x58')]];_0x2e9767[_0x1c88('0x52')]=_0x1c88('0x123');if(_[_0x1c88('0x73')](_0x2e9767)){ut['logger']('[Preview][validateContact][Empty\x20Campaign]',_0x2e9767);return{'isValid':![],'message':_0x1c88('0x124')};}if(!this[_0x1c88('0x9d')](_0x2e9767[_0x1c88('0x55')])){ut[_0x1c88('0x65')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]',_0x1c88('0x125')+_0x2e9767['name']+_0x1c88('0x126'));if(!this[_0x1c88('0x9d')](_0x2e9767[_0x1c88('0x9e')])){ut[_0x1c88('0x65')](_0x1c88('0x127'),_0x2e9767['name']+_0x1c88('0x128'));return{'isValid':![],'message':_0x1c88('0x129')};}}if(!ut[_0x1c88('0x9c')](_0x2e9767[_0x1c88('0x37')])){ut[_0x1c88('0x65')](_0x1c88('0x12a'),_0x2e9767['name']+_0x1c88('0x12b'));return{'isValid':![],'message':_0x1c88('0x125')+_0x2e9767[_0x1c88('0x58')]+_0x1c88('0x12b')};}return{'isValid':!![],'message':'Is\x20Valid'};};Preview[_0x1c88('0x11')][_0x1c88('0x10d')]=function(_0x3a2eae,_0x3b602c,_0x18c2a6,_0x29161e){var _0x1eea83=this;return new Promise(function(_0x1f2bb9,_0x4cb748){var _0x34cd84=_0x3a2eae['uniqueid'];var _0xb809ef=_0x1eea83['isTrunkReachable'](_0x3b602c['Trunk'])?util[_0x1c88('0x5b')](_0x1c88('0x12c'),_0x3b602c[_0x1c88('0x55')][_0x1c88('0x58')],_[_0x1c88('0x73')](_0x3b602c[_0x1c88('0x3c')])?'':_0x3b602c[_0x1c88('0x3c')][_0x1c88('0x12d')]()||'',_0x3b602c[_0x1c88('0x12e')]>0x0?_0x18c2a6[_0x1c88('0x10b')][_0x1c88('0x12f')](_0x3b602c['dialCutDigit']):_0x18c2a6[_0x1c88('0x10b')]):util['format'](_0x1c88('0x12c'),_[_0x1c88('0x73')](_0x3b602c['TrunkBackup'])?_0x3b602c[_0x1c88('0x55')][_0x1c88('0x58')]:_0x3b602c[_0x1c88('0x9e')][_0x1c88('0x58')],_['isNil'](_0x3b602c[_0x1c88('0x3c')])?'':_0x3b602c[_0x1c88('0x3c')][_0x1c88('0x12d')]()||'',_0x3b602c[_0x1c88('0x12e')]>0x0?_0x18c2a6[_0x1c88('0x10b')]['substring'](_0x3b602c[_0x1c88('0x12e')]):_0x18c2a6['phone']);var _0x2ba565=_0x1eea83[_0x1c88('0x9d')](_0x3b602c[_0x1c88('0x55')])?ut[_0x1c88('0x130')](_0x3b602c[_0x1c88('0x55')]['callerid'],_0x3b602c[_0x1c88('0x39')],_0x3b602c[_0x1c88('0x131')]>0x0?ut[_0x1c88('0x132')](_0x3b602c['dialOriginateCallerIdNumber'],_0x3b602c[_0x1c88('0x131')]):_0x3b602c[_0x1c88('0x3a')]):ut[_0x1c88('0x130')](_['isNil'](_0x3b602c[_0x1c88('0x9e')])?_0x3b602c[_0x1c88('0x55')][_0x1c88('0x133')]:_0x3b602c[_0x1c88('0x9e')][_0x1c88('0x133')],_0x3b602c[_0x1c88('0x39')],_0x3b602c[_0x1c88('0x131')]>0x0?ut[_0x1c88('0x132')](_0x3b602c[_0x1c88('0x3a')],_0x3b602c[_0x1c88('0x131')]):_0x3b602c[_0x1c88('0x3a')]);if(_0x2ba565){_0x3a2eae[_0x1c88('0x134')]=ut[_0x1c88('0x135')](_0x2ba565);_0x3a2eae[_0x1c88('0x136')]=ut[_0x1c88('0x137')](_0x2ba565);}var _0x3abc10=ut[_0x1c88('0x138')](_0x3b602c,_0x18c2a6,_0xb809ef,_0x2ba565,_0x34cd84,_0x3a2eae);_[_0x1c88('0x139')](_0x3a2eae,ut[_0x1c88('0x13a')](_0x3abc10));_0x3a2eae[_0x1c88('0x90')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x3b602c[_0x1c88('0x13b')]=_0x3abc10;ami[_0x1c88('0x13c')](ut[_0x1c88('0x13d')](_0x3a2eae,_0x3b602c,_0x3abc10,_0x3a2eae[_0x1c88('0xb3')],_0x29161e))['then'](function(_0x3c125a){_0x3b602c[_0x1c88('0x53')]+=0x1;logger[_0x1c88('0x5e')]('[originated][increment]',_0x34cd84,_0x1c88('0xbd'),_0x3b602c[_0x1c88('0x58')],_0x1c88('0x13e'),_0x3b602c[_0x1c88('0x53')]);_0x1f2bb9(_0x3c125a);})['catch'](function(_0x1c6254){ut['logAgent'](_0x3a2eae,0xe,_0x1c88('0x13f'));rpcDb[_0x1c88('0xff')](_0x3a2eae,_0x1c88('0x140'));_0x4cb748(_0x1c6254);});});};Preview['prototype'][_0x1c88('0x141')]=function(_0x1d7fe5){if(this[_0x1c88('0x18')][_0x1d7fe5['linkedid']]){this['actions'][_0x1d7fe5[_0x1c88('0xb4')]][_0x1c88('0x7c')]=_0x1d7fe5[_0x1c88('0x7c')];}};Preview[_0x1c88('0x11')]['syncOriginateResponse']=function(_0x1e79d4){var _0xa0bf1f=this;var _0x1325af=this['actions'][_0x1e79d4[_0x1c88('0x142')]];if(_0x1325af){if(_0x1325af[_0x1c88('0x143')]&&this[_0x1c88('0x19')][_0x1325af['lookAgent']]){ut[_0x1c88('0x144')](_0x1325af,this[_0x1c88('0x19')][_0x1325af[_0x1c88('0x143')]][_0x1c88('0x58')],this[_0x1c88('0x19')][_0x1325af['lookAgent']]['id']);}var _0xd9769f=_[_0x1c88('0x145')](_0x1325af);_0xd9769f[_0x1c88('0x146')]=moment()[_0x1c88('0x5b')]('YYYY-MM-DD\x20HH:mm:ss');var _0x2d80d2=_0xa0bf1f['campaignsPreview'][_0x1325af[_0x1c88('0x76')]];if(ut[_0x1c88('0x147')](_0x1e79d4[_0x1c88('0x148')])){if(_0x1325af[_0x1c88('0xb2')]){rpcDb[_0x1c88('0x11a')](_0x1325af[_0x1c88('0xb6')]);}if(_0x1325af[_0x1c88('0xb3')]){rpcDb[_0x1c88('0x8f')](_0x1325af[_0x1c88('0xb6')]);}ami['emit'](_0x1c88('0x149'),ut['buildObj'](_0x1325af,_0x1c88('0x14a'),this[_0x1c88('0x15')][_0x1325af[_0x1c88('0x76')]]));this['callProgressDetectingAgent'](_0xd9769f,_0x2d80d2,_0x1e79d4);}else{_0x1325af['starttime']=moment()[_0x1c88('0x5b')](_0x1c88('0xb9'));ut[_0x1c88('0xfe')](_0xd9769f,0x4,_0x1c88('0x14b'));rpcDb[_0x1c88('0xff')](_0xd9769f,_0x1c88('0x14c'));}}};Preview[_0x1c88('0x11')]['syncHangup']=function(_0x5a0cf4){var _0x425e85=this['actions'][_0x5a0cf4[_0x1c88('0xb4')]];var _0x1d59a1;if(_0x425e85){_0x1d59a1=this[_0x1c88('0x15')][_0x425e85[_0x1c88('0x76')]];logger['info']('[syncHangup][talking]',_0x5a0cf4[_0x1c88('0xb4')],_0x1c88('0xbd'),_0x1d59a1[_0x1c88('0x58')],'pTalking:\x20',_0x1d59a1[_0x1c88('0x2f')]);}if(this[_0x1c88('0x18')][_0x5a0cf4['linkedid']]&&_0x5a0cf4[_0x1c88('0xb4')]!==_0x5a0cf4[_0x1c88('0xbc')]){if(_0x5a0cf4[_0x1c88('0x14d')]==='16'&&this['actions'][_0x5a0cf4[_0x1c88('0xb4')]]['dialAnswer']){this['callProgressDetectingCustomer'](_0x5a0cf4,_0x5a0cf4[_0x1c88('0xb4')],_0x5a0cf4['cause']);}else if(this[_0x1c88('0x18')][_0x5a0cf4[_0x1c88('0xb4')]][_0x1c88('0x78')]){logger[_0x1c88('0x5e')]('[syncHangup][talking][cause]',_0x5a0cf4[_0x1c88('0xb4')],_0x5a0cf4[_0x1c88('0x14d')],'\x20Queue',_0x1d59a1[_0x1c88('0x58')],_0x1c88('0x77'),_0x1d59a1[_0x1c88('0x2f')]);this[_0x1c88('0x9f')](_0x5a0cf4,_0x5a0cf4['linkedid'],_0x5a0cf4[_0x1c88('0x14d')]);}}else if(_0x425e85&&_[_0x1c88('0x73')](_0x425e85['statedesc'])&&_0x1d59a1['dialQueueProject']&&_0x5a0cf4[_0x1c88('0xb4')]===_0x5a0cf4[_0x1c88('0xbc')]&&_[_0x1c88('0x73')](_0x5a0cf4[_0x1c88('0xfd')])&&_0x5a0cf4['cause']==='16'&&_0x5a0cf4['channelstate']==='6'&&_[_0x1c88('0xfc')](_0x425e85[_0x1c88('0x14e')])){if(_0x425e85['unlockAgent']){rpcDb[_0x1c88('0x11a')](_0x425e85[_0x1c88('0xb6')]);}if(_0x425e85[_0x1c88('0xb3')]){rpcDb[_0x1c88('0x8f')](_0x425e85[_0x1c88('0xb6')]);}_0x5a0cf4[_0x1c88('0xfd')]='22';this[_0x1c88('0xfa')](_0x425e85,_0x1d59a1,_0x5a0cf4);}else if(_0x425e85&&_0x425e85[_0x1c88('0x14e')]){if(_0x5a0cf4[_0x1c88('0x14d')]==='16'&&this['actions'][_0x5a0cf4[_0x1c88('0xb4')]]['dialAnswer']){logger[_0x1c88('0x5e')]('[syncHangup][talking][transfer]',_0x5a0cf4['linkedid'],_0x5a0cf4[_0x1c88('0x14d')],_0x1c88('0xbd'),_0x1d59a1[_0x1c88('0x58')],_0x1c88('0x77'),_0x1d59a1[_0x1c88('0x2f')]);this[_0x1c88('0x9f')](_0x5a0cf4,_0x5a0cf4[_0x1c88('0xb4')],_0x5a0cf4[_0x1c88('0x14d')]);}else if(this[_0x1c88('0x18')][_0x5a0cf4['linkedid']][_0x1c88('0x78')]){logger['info']('[syncHangup][talking][cause]',_0x5a0cf4['linkedid'],_0x5a0cf4[_0x1c88('0x14d')],_0x1c88('0xbd'),_0x1d59a1[_0x1c88('0x58')],_0x1c88('0x77'),_0x1d59a1[_0x1c88('0x2f')]);this['callProgressDetectingCustomer'](_0x5a0cf4,_0x5a0cf4[_0x1c88('0xb4')],_0x5a0cf4['cause']);}}};Preview[_0x1c88('0x11')][_0x1c88('0x21')]=function(_0x14d461){if(this['actions'][_0x14d461['destlinkedid']]&&_0x14d461['destlinkedid']!==_0x14d461[_0x1c88('0x14f')]){this[_0x1c88('0x9f')](_0x14d461,_0x14d461['destlinkedid'],_0x14d461[_0x1c88('0xf0')]);}};Preview[_0x1c88('0x11')][_0x1c88('0x1f')]=function(_0x11acd2){if(this[_0x1c88('0x18')][_0x11acd2[_0x1c88('0xb4')]]&&_0x11acd2[_0x1c88('0xb4')]!==_0x11acd2[_0x1c88('0xbc')]&&!this[_0x1c88('0x18')][_0x11acd2['linkedid']][_0x1c88('0x78')]){if(_0x11acd2['cause']==='1'){this['callProgressDetectingCustomer'](_0x11acd2,_0x11acd2[_0x1c88('0xb4')],_0x11acd2['cause']);}}};Preview[_0x1c88('0x11')][_0x1c88('0x150')]=function(_0x791ad0,_0x11755f,_0x1996ba){if(this['actions'][_0x791ad0]){if(_['isNil'](this[_0x1c88('0x18')][_0x791ad0][_0x1c88('0x13b')])){this['actions'][_0x791ad0]['variables']={};}this[_0x1c88('0x18')][_0x791ad0]['variables'][_0x11755f]=_0x1996ba;}};Preview[_0x1c88('0x11')][_0x1c88('0x24')]=function(_0x416022){try{if(!_[_0x1c88('0x73')](_0x416022)){if(ut[_0x1c88('0x151')](_['keys'](_0x416022[_0x1c88('0x152')])[0x0])){this['addVariable'](_0x416022[_0x1c88('0xbc')],_[_0x1c88('0x153')](_0x416022[_0x1c88('0x152')])[0x0],_0x416022['value']);}}}catch(_0xd4976b){logger[_0x1c88('0x154')](_0x1c88('0x155'),util[_0x1c88('0x156')](_0xd4976b,{'showHidden':![],'depth':null}));}};Preview[_0x1c88('0x11')]['syncAttendedTransfer']=function(_0x43e370){if(_0x43e370){if(this['actions'][_0x43e370['transfertargetlinkedid']]){this[_0x1c88('0x18')][_0x43e370[_0x1c88('0x157')]][_0x1c88('0x14e')]=!![];}}};Preview[_0x1c88('0x11')][_0x1c88('0x27')]=function(_0x35c92f){if(_0x35c92f){if(this[_0x1c88('0x18')][_0x35c92f[_0x1c88('0x158')]]){this[_0x1c88('0x18')][_0x35c92f[_0x1c88('0x158')]][_0x1c88('0x14e')]=!![];}}};module[_0x1c88('0x159')]=Preview;
\ No newline at end of file
index 09f2b4b..c8f48db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ecc=['../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','then','[createHistory]\x20','createHistory','catch','moveContactManagedDialer','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerHistory','rescheduleContact','UserId','[rescheduleContact]\x20','countReScheduled','unlockContact','[activeContact]\x20','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','queuecallercomplete','endtime','membername','context','from-sip','exten','xcally-motion-preview','assigned','lastAssignedTo','COMPLETED','getContactRecallMe','rescheduleContactInQueue','util','preview','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/voiceQueueRt'];(function(_0x35a975,_0x267a20){var _0xe12942=function(_0x29e9da){while(--_0x29e9da){_0x35a975['push'](_0x35a975['shift']());}};_0xe12942(++_0x267a20);}(_0x7ecc,0x143));var _0xc7ec=function(_0x458260,_0x318645){_0x458260=_0x458260-0x0;var _0x1b0eb7=_0x7ecc[_0x458260];return _0x1b0eb7;};'use strict';var util=require(_0xc7ec('0x0'));var BPromise=require('bluebird');var logger=require('../../../config/logger')(_0xc7ec('0x1'));var _=require(_0xc7ec('0x2'));var cmHopper=require(_0xc7ec('0x3'));var cmHopperFinal=require(_0xc7ec('0x4'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0xc7ec('0x5'));var agentReportPreview=require(_0xc7ec('0x6'));var voiceQueueReport=require(_0xc7ec('0x7'));function loggerCatch(_0x19606b){return function(_0x45315e){logger[_0xc7ec('0x8')](_0x19606b,util[_0xc7ec('0x9')](_0x45315e,{'showHidden':![],'depth':null}));};}function create(_0x24911b){return BPromise[_0xc7ec('0xa')]()[_0xc7ec('0xb')](cmHopperHistory['createHistory'](_0x24911b))['catch'](loggerCatch(_0xc7ec('0xc')));}function createAgent(_0x37558b){return BPromise[_0xc7ec('0xa')]()[_0xc7ec('0xb')](agentReportPreview[_0xc7ec('0xd')](_0x37558b))[_0xc7ec('0xe')](loggerCatch(_0xc7ec('0xc')));}function moveContact(_0x4410d6){return BPromise[_0xc7ec('0xa')]()[_0xc7ec('0xb')](cmHopper[_0xc7ec('0xf')](_0x4410d6,!![]))[_0xc7ec('0xe')](loggerCatch('[moveContactManagedDialer]\x20'));}exports['checkIsBlackList']=function(_0x12e64a){return BPromise[_0xc7ec('0xa')]()[_0xc7ec('0xb')](cmHopperBlack[_0xc7ec('0x10')](_0x12e64a))['catch'](loggerCatch(_0xc7ec('0x11')));};exports[_0xc7ec('0x12')]=function(_0xe1165e){return BPromise[_0xc7ec('0xa')]()[_0xc7ec('0xb')](cmHopper[_0xc7ec('0x12')](_0xe1165e))['catch'](loggerCatch(_0xc7ec('0x13')));};exports[_0xc7ec('0xd')]=function(_0x554407,_0x142987){create(_0x554407)[_0xc7ec('0xe')](loggerCatch(_0x142987));moveContact(_0x554407)[_0xc7ec('0xe')](loggerCatch(_0x142987));};exports[_0xc7ec('0x14')]=function(_0x36a439,_0x3830f4){createAgent(_0x36a439)[_0xc7ec('0xe')](loggerCatch(_0x3830f4));};exports[_0xc7ec('0x15')]=function(_0x431aaa,_0x226268){create(_0x431aaa)[_0xc7ec('0xe')](loggerCatch(_0x226268));};exports['createCustomerFinal']=function(_0x5ebba0,_0x1511ec){moveContact(_0x5ebba0)[_0xc7ec('0xe')](loggerCatch(_0x1511ec));};exports[_0xc7ec('0x16')]=function(_0x30ff69,_0x3aa1ef,_0x2e9ead){if(_0x3aa1ef){_0x30ff69[_0xc7ec('0x17')]=null;}if(_0x2e9ead){_0x30ff69['active']=![];}return BPromise[_0xc7ec('0xa')]()['then'](cmHopper[_0xc7ec('0x16')](_0x30ff69))[_0xc7ec('0xe')](loggerCatch(_0xc7ec('0x18')));};exports['countReScheduled']=function(_0x303647){return BPromise[_0xc7ec('0xa')]()['then'](cmHopper[_0xc7ec('0x19')](_0x303647))['catch'](loggerCatch('[countReScheduled]\x20'));};exports[_0xc7ec('0x1a')]=function(_0x28f2ec){return BPromise[_0xc7ec('0xa')]()['then'](cmHopper[_0xc7ec('0x1a')]({'UserId':null},_0x28f2ec,0x1))[_0xc7ec('0xe')](loggerCatch('[unlockContact]\x20'));};exports['disableContact']=function(_0x4c5551){return BPromise['resolve']()['then'](cmHopper[_0xc7ec('0x1a')]({'active':![]},_0x4c5551,0x1))[_0xc7ec('0xe')](loggerCatch(_0xc7ec('0x1b')));};exports['crateCustomerReportQueue']=function(_0x5378d0){var _0x4e11d3={};_0x4e11d3['type']=_0x5378d0[_0xc7ec('0x1c')];_0x4e11d3[_0xc7ec('0x1d')]=_0x5378d0[_0xc7ec('0x1d')];_0x4e11d3[_0xc7ec('0x1e')]=_0x5378d0['calleridnum'];_0x4e11d3[_0xc7ec('0x1f')]=_0x5378d0[_0xc7ec('0x1f')];_0x4e11d3[_0xc7ec('0x20')]=_0x5378d0[_0xc7ec('0x20')];_0x4e11d3[_0xc7ec('0x21')]=_0x5378d0['answertime'];_0x4e11d3[_0xc7ec('0x22')]=_0x5378d0['answertime'];_0x4e11d3[_0xc7ec('0x23')]=0x1;_0x4e11d3['queuecallercompleteAt']=_0x5378d0[_0xc7ec('0x24')];_0x4e11d3['connectedlinename']=_0x5378d0[_0xc7ec('0x25')];_0x4e11d3[_0xc7ec('0x26')]=_0xc7ec('0x27');_0x4e11d3[_0xc7ec('0x28')]=_0xc7ec('0x29');_0x4e11d3['holdtime']=0x0;_0x4e11d3[_0xc7ec('0x2a')]=0x1;_0x4e11d3[_0xc7ec('0x2b')]=_0x5378d0[_0xc7ec('0x25')];_0x4e11d3['queuecallerexitreason']=_0xc7ec('0x2c');return BPromise['resolve']()[_0xc7ec('0xb')](voiceQueueReport['create'](_0x4e11d3))[_0xc7ec('0xe')](loggerCatch('[voiceQueueReport]\x20'));};exports['getContactRecallMe']=function(_0x255019,_0x4e8ee5){return BPromise[_0xc7ec('0xa')]()['then'](cmHopper[_0xc7ec('0x2d')](_0x255019,_0x4e8ee5))['catch'](loggerCatch('[GetContactRecallMe]\x20'));};exports[_0xc7ec('0x2e')]=function(_0x2106d6){return BPromise[_0xc7ec('0xa')]()[_0xc7ec('0xb')](cmHopper[_0xc7ec('0x16')](_0x2106d6,!![],!![]))[_0xc7ec('0xe')](loggerCatch('[rescheduleContactInQueue]\x20'));};
\ No newline at end of file
+var _0x3633=['../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','inspect','resolve','createHistory','catch','then','[createHistory]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerFinal','active','rescheduleContact','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','endtime','connectedlinename','membername','context','from-sip','exten','holdtime','lastAssignedTo','create','[voiceQueueReport]\x20','getContactRecallMe','[rescheduleContactInQueue]\x20','util','../../../config/logger','preview','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack'];(function(_0x1ee9a1,_0x5f1434){var _0x21270f=function(_0x303251){while(--_0x303251){_0x1ee9a1['push'](_0x1ee9a1['shift']());}};_0x21270f(++_0x5f1434);}(_0x3633,0x95));var _0x3363=function(_0x478f00,_0x1325cf){_0x478f00=_0x478f00-0x0;var _0x5466e6=_0x3633[_0x478f00];return _0x5466e6;};'use strict';var util=require(_0x3363('0x0'));var BPromise=require('bluebird');var logger=require(_0x3363('0x1'))(_0x3363('0x2'));var _=require('lodash');var cmHopper=require(_0x3363('0x3'));var cmHopperFinal=require(_0x3363('0x4'));var cmHopperHistory=require(_0x3363('0x5'));var cmHopperBlack=require(_0x3363('0x6'));var voiceQueueRt=require(_0x3363('0x7'));var agentReportPreview=require(_0x3363('0x8'));var voiceQueueReport=require(_0x3363('0x9'));function loggerCatch(_0x4ae60b){return function(_0x525f65){logger['error'](_0x4ae60b,util[_0x3363('0xa')](_0x525f65,{'showHidden':![],'depth':null}));};}function create(_0xdfa0fb){return BPromise[_0x3363('0xb')]()['then'](cmHopperHistory[_0x3363('0xc')](_0xdfa0fb))[_0x3363('0xd')](loggerCatch('[createHistory]\x20'));}function createAgent(_0x33763f){return BPromise['resolve']()[_0x3363('0xe')](agentReportPreview[_0x3363('0xc')](_0x33763f))['catch'](loggerCatch(_0x3363('0xf')));}function moveContact(_0x14be8a){return BPromise[_0x3363('0xb')]()['then'](cmHopper[_0x3363('0x10')](_0x14be8a,!![]))['catch'](loggerCatch(_0x3363('0x11')));}exports[_0x3363('0x12')]=function(_0x196a7b){return BPromise[_0x3363('0xb')]()[_0x3363('0xe')](cmHopperBlack[_0x3363('0x12')](_0x196a7b))[_0x3363('0xd')](loggerCatch(_0x3363('0x13')));};exports[_0x3363('0x14')]=function(_0xfab6dc){return BPromise['resolve']()[_0x3363('0xe')](cmHopper['getContactPreview'](_0xfab6dc))['catch'](loggerCatch(_0x3363('0x15')));};exports[_0x3363('0xc')]=function(_0x511e85,_0x5c95cc){create(_0x511e85)[_0x3363('0xd')](loggerCatch(_0x5c95cc));moveContact(_0x511e85)[_0x3363('0xd')](loggerCatch(_0x5c95cc));};exports[_0x3363('0x16')]=function(_0x317440,_0x50595c){createAgent(_0x317440)['catch'](loggerCatch(_0x50595c));};exports['createCustomerHistory']=function(_0x4036ed,_0x151a88){create(_0x4036ed)['catch'](loggerCatch(_0x151a88));};exports[_0x3363('0x17')]=function(_0x4bebfc,_0x3916ed){moveContact(_0x4bebfc)[_0x3363('0xd')](loggerCatch(_0x3916ed));};exports['rescheduleContact']=function(_0x55a6fb,_0x264ab7,_0x2c22e0){if(_0x264ab7){_0x55a6fb['UserId']=null;}if(_0x2c22e0){_0x55a6fb[_0x3363('0x18')]=![];}return BPromise['resolve']()[_0x3363('0xe')](cmHopper[_0x3363('0x19')](_0x55a6fb))[_0x3363('0xd')](loggerCatch(_0x3363('0x1a')));};exports[_0x3363('0x1b')]=function(_0x2eed98){return BPromise['resolve']()[_0x3363('0xe')](cmHopper['countReScheduled'](_0x2eed98))['catch'](loggerCatch(_0x3363('0x1c')));};exports[_0x3363('0x1d')]=function(_0x288006){return BPromise[_0x3363('0xb')]()[_0x3363('0xe')](cmHopper['unlockContact']({'UserId':null},_0x288006,0x1))[_0x3363('0xd')](loggerCatch('[unlockContact]\x20'));};exports['disableContact']=function(_0x52def8){return BPromise[_0x3363('0xb')]()[_0x3363('0xe')](cmHopper['unlockContact']({'active':![]},_0x52def8,0x1))[_0x3363('0xd')](loggerCatch(_0x3363('0x1e')));};exports[_0x3363('0x1f')]=function(_0x4ed427){var _0x3c7f82={};_0x3c7f82['type']=_0x4ed427[_0x3363('0x20')];_0x3c7f82[_0x3363('0x21')]=_0x4ed427[_0x3363('0x21')];_0x3c7f82[_0x3363('0x22')]=_0x4ed427[_0x3363('0x22')];_0x3c7f82[_0x3363('0x23')]=_0x4ed427['calleridname'];_0x3c7f82['queue']=_0x4ed427[_0x3363('0x24')];_0x3c7f82[_0x3363('0x25')]=_0x4ed427[_0x3363('0x26')];_0x3c7f82[_0x3363('0x27')]=_0x4ed427[_0x3363('0x26')];_0x3c7f82['queuecallercomplete']=0x1;_0x3c7f82['queuecallercompleteAt']=_0x4ed427[_0x3363('0x28')];_0x3c7f82[_0x3363('0x29')]=_0x4ed427[_0x3363('0x2a')];_0x3c7f82[_0x3363('0x2b')]=_0x3363('0x2c');_0x3c7f82[_0x3363('0x2d')]='xcally-motion-preview';_0x3c7f82[_0x3363('0x2e')]=0x0;_0x3c7f82['assigned']=0x1;_0x3c7f82[_0x3363('0x2f')]=_0x4ed427[_0x3363('0x2a')];_0x3c7f82['queuecallerexitreason']='COMPLETED';return BPromise[_0x3363('0xb')]()[_0x3363('0xe')](voiceQueueReport[_0x3363('0x30')](_0x3c7f82))['catch'](loggerCatch(_0x3363('0x31')));};exports[_0x3363('0x32')]=function(_0x435717,_0x119179){return BPromise[_0x3363('0xb')]()[_0x3363('0xe')](cmHopper[_0x3363('0x32')](_0x435717,_0x119179))[_0x3363('0xd')](loggerCatch('[GetContactRecallMe]\x20'));};exports['rescheduleContactInQueue']=function(_0x4049da){return BPromise[_0x3363('0xb')]()[_0x3363('0xe')](cmHopper[_0x3363('0x19')](_0x4049da,!![],!![]))[_0x3363('0xd')](loggerCatch(_0x3363('0x33')));};
\ No newline at end of file
index 03450df..ca8cb91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x600b=['\x5cw{0,','pow','extractCalleridName','match','extractCalleridNumber','util','lodash','../../../../config/logger','preview','env','XCALLY_IP_AGI','milliseconds','diff','seconds','error','inspect','logger','info','getCallerId','isUndefined','isEmpty','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','addVariables','Queue','name','format','calleridname','ContactId','dialer','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','xcally-motion-preview','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','isNil','tags','updatedAt','%s%s','XMD-','toLowerVariables','toLower','updateOriginated','originated','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','Blacklist','starttime','responsetime','endtime','ringtime','logLookAgent','membername','UserId','talktime','answertime','isFailure','Failure','BOOKED','originate','channelAgent','calleridnum','from-sip','timeout','uniqueid','totalGlobal','countbusyretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','statedesc','scheduledAt','active','minutes','ListId','VoiceQueueId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','IsNotLoggedIn','buildObj','lastevent','queue','mandatoryDisposition','buildAcw','interface','agentReadyId','not_inuse','status','reachable','getDiff','CampaignId','filterKey','idContact','campaigntype','dialAnswer','scheduledat','countcongestionretry','countglobal','callback','callbackuniqueid','callbackat','sipcallid','xmd-voicequeueid','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialchannel','xmd-contactid','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqoslossbridged','rtpaudioqosrttbridged','bridgepeer','bridgepvtcallid','getCallerIdRandom'];(function(_0x131866,_0x8d5af2){var _0x1f3924=function(_0x171c2e){while(--_0x171c2e){_0x131866['push'](_0x131866['shift']());}};_0x1f3924(++_0x8d5af2);}(_0x600b,0x1a3));var _0xb600=function(_0x5ac84c,_0x287781){_0x5ac84c=_0x5ac84c-0x0;var _0x3c53d2=_0x600b[_0x5ac84c];return _0x3c53d2;};'use strict';var util=require(_0xb600('0x0'));var _=require(_0xb600('0x1'));var moment=require('moment');var logger=require(_0xb600('0x2'))(_0xb600('0x3'));var ipAgi=process[_0xb600('0x4')][_0xb600('0x5')]||'127.0.0.1';function getSeconds(_0x3a311a,_0x33e799){var _0x40a98a=moment(_0x3a311a)[_0xb600('0x6')](0x0);var _0x2ddbe3=moment(_0x33e799)[_0xb600('0x6')](0x0);return _0x40a98a[_0xb600('0x7')](_0x2ddbe3,_0xb600('0x8'));}exports['loggerCatch']=function(_0x2f8a91){return function(_0x2d4458){logger[_0xb600('0x9')](_0x2f8a91,util[_0xb600('0xa')](_0x2d4458,{'showHidden':![],'depth':null}));};};exports[_0xb600('0xb')]=function(_0x575049,_0x2a2331){logger[_0xb600('0xc')](_0x575049,util['inspect'](_0x2a2331,{'showHidden':![],'depth':null}));};exports['loggerError']=function(_0x366744,_0x1dbf87){logger[_0xb600('0x9')](_0x366744,util[_0xb600('0xa')](_0x1dbf87,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x765533){return function(_0x591bd3){logger[_0xb600('0xc')](_0x765533,util[_0xb600('0xa')](_0x591bd3,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x158b8a,_0x34e511,_0x1851af){return{'message':_0x158b8a,'unlock':_0x34e511,'active':_0x1851af};};exports[_0xb600('0xd')]=function(_0x4820f3,_0x287618,_0x5c00c8){if(!_[_0xb600('0xe')](_0x5c00c8)&&'string'===typeof _0x5c00c8&&!_[_0xb600('0xf')](_0x5c00c8)){if(!_[_0xb600('0xe')](_0x287618)&&_0xb600('0x10')===typeof _0x287618&&!_[_0xb600('0xf')](_0x287618)){return util['format'](_0xb600('0x11'),_0x287618,_0x5c00c8);}return util['format'](_0xb600('0x11'),_0x5c00c8,_0x5c00c8);}if(!_[_0xb600('0xe')](_0x4820f3)&&_0xb600('0x10')===typeof _0x4820f3&&!_['isEmpty'](_0x4820f3)){return _0x4820f3;}return _0xb600('0x12');};exports['isActive']=function(_0x36acde){if(_['isNil'](_0x36acde)){return![];}return _0x36acde;};exports[_0xb600('0x13')]=function(_0x270b91,_0x498509,_0x5d4a5e,_0x4d2c60,_0x23330f,_0x513d1c){var _0x19891f={'XMD-QUEUE':_0x498509[_0xb600('0x14')]?_0x498509['Queue'][_0xb600('0x15')]:'','XMD-CALLERID':_0x4d2c60,'XMD-CALLERID-PREVIEW':_0x513d1c?util[_0xb600('0x16')](_0xb600('0x11'),_0x513d1c[_0xb600('0x17')],_0x513d1c['calleridnum']):_0x4d2c60,'XMD-DIALID':_0x23330f,'XMD-CONTACTID':_0x498509[_0xb600('0x18')],'XMD-CDRTYPE':_0xb600('0x19'),'CALLERID(all)':_0x4d2c60,'XMD-VOICEQUEUEID':_0x498509['VoiceQueueId'],'XMD-DIALCHANNEL':_0x5d4a5e,'XMD-DIALTIMEOUT':_0x270b91['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util[_0xb600('0x16')](_0xb600('0x1a'),_0x270b91[_0xb600('0x1b')]?'g':'',_[_0xb600('0xf')](_0x270b91[_0xb600('0x1c')])?'':_0xb600('0x1d')),'XMD-DIALURL':_0x270b91[_0xb600('0x1e')]||'','XMD-AGI':_0x270b91[_0xb600('0x1f')]?util[_0xb600('0x16')](_0xb600('0x20'),ipAgi,_0x270b91[_0xb600('0x1f')]):_0xb600('0x21'),'XMD-AGIAFTER':_0x270b91[_0xb600('0x1b')]?util[_0xb600('0x16')](_0xb600('0x20'),ipAgi,_0x270b91[_0xb600('0x1b')]):_0xb600('0x21'),'XMD-ORIGINATECALLERIDNUM':_0x513d1c?_0x513d1c[_0xb600('0x22')]:'','XMD-ORIGINATECALLERIDNAME':_0x513d1c?_0x513d1c['originatecalleridname']:'','XMD-DESTINATION':_0xb600('0x23'),'SIPADDHEADER':'Call-Type:\x20PREVIEW'};if(!_[_0xb600('0xf')](_0x270b91[_0xb600('0x1c')])){_0x19891f[util[_0xb600('0x16')]('%s',_0xb600('0x24'))]=_0x270b91[_0xb600('0x1c')];_0x19891f[util[_0xb600('0x16')]('%s',_0xb600('0x25'))]=_0x23330f;}if(_0x498509&&_0x498509[_0xb600('0x26')]){for(var _0x5f3edf in _0x498509['Contact']){if(_0x498509['Contact'][_0xb600('0x27')](_0x5f3edf)){if(!_[_0xb600('0x28')](_0x498509[_0xb600('0x26')][_0x5f3edf])&&_0x5f3edf!=='id'&&_0x5f3edf!==_0xb600('0x29')&&_0x5f3edf!=='createdAt'&&_0x5f3edf!==_0xb600('0x2a')){_0x19891f[util[_0xb600('0x16')](_0xb600('0x2b'),_0xb600('0x2c'),_['toUpper'](_0x5f3edf))]=_0x498509[_0xb600('0x26')][_0x5f3edf];}}}}return _0x19891f;};exports[_0xb600('0x2d')]=function(_0x7c3c96){var _0x194648={};for(var _0x3a361d in _0x7c3c96){if(_0x7c3c96[_0xb600('0x27')](_0x3a361d)){_0x194648[util[_0xb600('0x16')]('%s',_[_0xb600('0x2e')](_0x3a361d))]=_0x7c3c96[_0x3a361d];}}return{'variables':_0x194648};};exports[_0xb600('0x2f')]=function(_0x16d37f,_0x4af439){if(!_['isNil'](_0x16d37f)){if(_0x16d37f[_0xb600('0x27')]('originated')){if(_0x16d37f[_0xb600('0x30')]>0x0){_0x16d37f[_0xb600('0x30')]-=0x1;}else{logger[_0xb600('0x9')]('[updateOriginated]\x20object\x20originated\x20is\x20negative',_0x4af439);}}}else{logger[_0xb600('0x9')](_0xb600('0x31'),_0x4af439);}};exports[_0xb600('0x32')]=function(_0x52c073){var _0x38e400=moment()['format'](_0xb600('0x33'));_0x52c073[_0xb600('0x34')]=0xd;_0x52c073['statedesc']=_0xb600('0x35');_0x52c073[_0xb600('0x36')]=_0x38e400;_0x52c073[_0xb600('0x37')]=_0x38e400;_0x52c073[_0xb600('0x38')]=_0x38e400;};exports['logAgent']=function(_0x3d2821,_0x1f3e6f,_0x34bfbe){var _0x3407fd=moment()[_0xb600('0x16')](_0xb600('0x33'));_0x3d2821[_0xb600('0x34')]=_0x1f3e6f;_0x3d2821['statedesc']=_0x34bfbe;_0x3d2821['responsetime']=_0x3407fd;_0x3d2821[_0xb600('0x39')]=getSeconds(_0x3d2821[_0xb600('0x37')],_0x3d2821['starttime']);};exports[_0xb600('0x3a')]=function(_0x24a20c,_0x29fd27,_0x3c7c2b){_0x24a20c[_0xb600('0x3b')]=_0x29fd27;_0x24a20c[_0xb600('0x3c')]=_0x3c7c2b;};exports['logCustomer']=function(_0x2299ae,_0x9c1893,_0x5745cd){var _0x1aa0b5=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x2299ae['state']=_0x9c1893;_0x2299ae['statedesc']=_0x5745cd;_0x2299ae[_0xb600('0x37')]=_0x2299ae[_0xb600('0x37')]?_0x2299ae[_0xb600('0x37')]:_0x1aa0b5;_0x2299ae[_0xb600('0x38')]=_0x2299ae[_0xb600('0x38')]?_0x2299ae['endtime']:_0x1aa0b5;_0x2299ae[_0xb600('0x39')]=getSeconds(_0x2299ae['responsetime']||0x0,_0x2299ae['starttime']||0x0);_0x2299ae[_0xb600('0x3d')]=_0x2299ae[_0xb600('0x3e')]?getSeconds(_0x2299ae[_0xb600('0x38')],_0x2299ae[_0xb600('0x3e')]):0x0;};exports[_0xb600('0x3f')]=function(_0x4d708c){return _0x4d708c===_0xb600('0x40');};exports['variablesAction']=function(_0x2e959d,_0x53f6c0,_0xcac99b,_0x271f1a,_0x24365f){var _0x46ef4c=_0x271f1a?'RECALL':_0x2e959d[_0xb600('0x17')];_0x46ef4c=_0x24365f?_0xb600('0x41'):_0x46ef4c;return{'actionid':_0x2e959d['uniqueid'],'action':_0xb600('0x42'),'channel':_0x2e959d[_0xb600('0x43')],'callerid':util[_0xb600('0x16')](_0xb600('0x11'),_0x46ef4c,_0x2e959d[_0xb600('0x44')]),'Exten':'xcally-motion-preview','Context':_0xb600('0x45'),'Priority':'1','variable':_0xcac99b,'timeout':(_0x53f6c0[_0xb600('0x46')]||0x1e)*0x3e8,'async':!![],'channelid':_0x2e959d[_0xb600('0x47')]};};exports[_0xb600('0x48')]=function(_0x4a5af6){return _0x4a5af6[_0xb600('0x49')]+_0x4a5af6['countcongestionretry']+_0x4a5af6[_0xb600('0x4a')]+_0x4a5af6[_0xb600('0x4b')]+_0x4a5af6[_0xb600('0x4c')];};exports[_0xb600('0x4d')]=function(_0xcb10da){var _0xfa610a=_['clone'](_0xcb10da);_0xfa610a[_0xb600('0x34')]=0xf;_0xfa610a[_0xb600('0x4e')]='Global';return _0xfa610a;};exports[_0xb600('0x4f')]=function(_0x348083,_0x10777a,_0x59b954){var _0x2b073f={};_0x2b073f[_0x10777a]=_0x348083[_0x10777a];_0x2b073f[_0xb600('0x50')]=![];_0x2b073f['scheduledat']=moment()['add'](_0x59b954,_0xb600('0x51'))[_0xb600('0x16')](_0xb600('0x33'));_0x2b073f['ContactId']=_0x348083[_0xb600('0x18')];_0x2b073f['ListId']=_0x348083[_0xb600('0x52')];_0x2b073f[_0xb600('0x53')]=_0x348083[_0xb600('0x53')]||undefined;return _0x2b073f;};exports[_0xb600('0x54')]=function(_0x3aa2ed,_0x52b251){if(!_[_0xb600('0x28')](_0x3aa2ed)){if(_0x3aa2ed[_0xb600('0x55')]>0x0){_0x3aa2ed[_0xb600('0x55')]-=0x1;}else{logger[_0xb600('0x9')](_0x52b251,_0xb600('0x56'));}}else{logger['error'](_0x52b251,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports[_0xb600('0x57')]=function(_0x516dd1){if(_0x516dd1<=0x0){return!![];}return![];};exports[_0xb600('0x58')]=function(_0x141906,_0x59b7a4,_0x570166){_0x141906[_0xb600('0x59')]=_0x59b7a4;_0x141906[_0xb600('0x15')]=_0x141906[_0xb600('0x5a')];_0x141906['interface']=_0x141906[_0xb600('0x43')];_0x141906['motionChannel']='voice';if(_0x570166){_0x141906[_0xb600('0x5b')]=_0x570166[_0xb600('0x5b')];}return _0x141906;};exports[_0xb600('0x5c')]=function(_0x463c9c){var _0x1726ef={};_0x1726ef[_0xb600('0x5a')]=_0x463c9c['queue'];_0x1726ef[_0xb600('0x5d')]=_0x463c9c[_0xb600('0x43')];_0x1726ef['uniqueid']=_0x463c9c[_0xb600('0x47')];return _0x1726ef;};exports[_0xb600('0x5e')]=function(_0x33da0e){var _0x5cef42=[];for(var _0x400333 in _0x33da0e){if(_0x33da0e['hasOwnProperty'](_0x400333)){if(!_[_0xb600('0x28')](_0x33da0e[_0x400333])&&_0x33da0e[_0x400333][_0xb600('0x34')]===_0xb600('0x5f')&&_0x33da0e[_0x400333][_0xb600('0x60')]===_0xb600('0x61')){_0x5cef42['push'](_0x33da0e[_0x400333]['id']);}}}return _0x5cef42;};exports[_0xb600('0x62')]=function(_0x5c0cdd){var _0x199857=moment()['milliseconds'](0x0);var _0x135e72=moment(_0x5c0cdd)[_0xb600('0x6')](0x0);return _0x199857[_0xb600('0x7')](_0x135e72,_0xb600('0x8'));};exports['createBody']=function(_0x5a91b6){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x5a91b6[_0xb600('0x18')],'ListId':_0x5a91b6['ListId'],'VoiceQueueId':_0x5a91b6[_0xb600('0x53')]||undefined,'CampaignId':_0x5a91b6[_0xb600('0x63')]||undefined};};exports[_0xb600('0x64')]=function(_0x9ead91){if(_0x9ead91===_0xb600('0x47')||_0x9ead91===_0xb600('0x65')||_0x9ead91===_0xb600('0x5a')||_0x9ead91==='type'||_0x9ead91===_0xb600('0x66')||_0x9ead91===_0xb600('0x67')||_0x9ead91===_0xb600('0x3b')||_0x9ead91==='channelAgent'||_0x9ead91===_0xb600('0x17')||_0x9ead91===_0xb600('0x50')||_0x9ead91===_0xb600('0x44')||_0x9ead91===_0xb600('0x68')||_0x9ead91===_0xb600('0x49')||_0x9ead91===_0xb600('0x69')||_0x9ead91==='countnoanswerretry'||_0x9ead91===_0xb600('0x6a')||_0x9ead91===_0xb600('0x6b')||_0x9ead91===_0xb600('0x6c')||_0x9ead91===_0xb600('0x6d')||_0x9ead91==='recallme'||_0x9ead91===_0xb600('0x18')||_0x9ead91==='ListId'||_0x9ead91===_0xb600('0x3c')||_0x9ead91===_0xb600('0x53')||_0x9ead91===_0xb600('0x6e')||_0x9ead91===_0xb600('0x6f')||_0x9ead91==='xmd-queue'||_0x9ead91===_0xb600('0x70')||_0x9ead91===_0xb600('0x71')||_0x9ead91===_0xb600('0x72')||_0x9ead91===_0xb600('0x73')||_0x9ead91===_0xb600('0x74')||_0x9ead91==='xmd-dialid'||_0x9ead91===_0xb600('0x75')||_0x9ead91===_0xb600('0x76')||_0x9ead91==='xmd-cdrtype'||_0x9ead91===_0xb600('0x77')||_0x9ead91===_0xb600('0x78')||_0x9ead91===_0xb600('0x79')||_0x9ead91===_0xb600('0x7a')||_0x9ead91===_0xb600('0x7b')||_0x9ead91===_0xb600('0x7c')||_0x9ead91===_0xb600('0x7d')||_0x9ead91===_0xb600('0x7e')||_0x9ead91==='rtpaudioqoslossbridged'||_0x9ead91===_0xb600('0x7f')||_0x9ead91==='rtpaudioqosrttbridged'||_0x9ead91===_0xb600('0x7a')||_0x9ead91===_0xb600('0x7b')||_0x9ead91===_0xb600('0x7c')||_0x9ead91===_0xb600('0x7d')||_0x9ead91===_0xb600('0x7e')||_0x9ead91===_0xb600('0x80')||_0x9ead91==='rtpaudioqosrtt'||_0x9ead91===_0xb600('0x81')||_0x9ead91===_0xb600('0x82')||_0x9ead91===_0xb600('0x83')||_0x9ead91===_0xb600('0x34')||_0x9ead91===_0xb600('0x4e')){return![];}return!![];};exports[_0xb600('0x84')]=function(_0x1499a5,_0x19a9e8){var _0x916fcd,_0x4e589d,_0x439ffc;if(_0x19a9e8<=0x0){_0x19a9e8=0x1;}_0x916fcd=new RegExp(_0xb600('0x85')+_0x19a9e8+'}$');_0x4e589d=Math['pow'](0xa,_0x19a9e8-0x1);_0x439ffc=Math[_0xb600('0x86')](0xa,_0x19a9e8)-0x1;return util[_0xb600('0x16')]('%s',_['replace'](_0x1499a5,_0x916fcd,_['random'](_0x4e589d,_0x439ffc)));};exports[_0xb600('0x87')]=function(_0x272d29){var _0x101b83=_0x272d29[_0xb600('0x88')](/"(.*?)"/);return _0x101b83?_0x101b83[0x1]:_0x272d29;};exports[_0xb600('0x89')]=function(_0x52fe55){var _0x47a423=_0x52fe55[_0xb600('0x88')](/<(.*?)>/);return _0x47a423?_0x47a423[0x1]:_0x52fe55;};
\ No newline at end of file
+var _0xc98f=['toUpper','toLowerVariables','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','responsetime','endtime','logAgent','logLookAgent','logCustomer','ringtime','starttime','talktime','answertime','Failure','variablesAction','BOOKED','uniqueid','originate','xcally-motion-preview','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','clone','scheduledAt','scheduledat','minutes','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','queue','interface','channelAgent','motionChannel','mandatoryDisposition','agentReadyId','not_inuse','status','reachable','push','filterKey','type','campaigntype','dialAnswer','active','countglobal','callback','callbackuniqueid','recallme','UserId','sipcallid','xmd-voicequeueid','xmd-queue','xmd-listid','xmd-dialurl','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqos','rtpaudioqosloss','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridName','match','extractCalleridNumber','variables','keys','toLowerCase','buildNoAnswerEventPayload','util','lodash','moment','../../../../config/logger','preview','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','error','logger','inspect','logger2','info','getCallerId','isUndefined','string','isEmpty','\x22%s\x22\x20<%s>','isActive','isNil','Queue','name','calleridname','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','format','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','\x22agi://%s/square,%s\x22','dialQueueProject','NONE','originatecalleridnum','originatecalleridname','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','tags','createdAt','updatedAt','%s%s','XMD-'];(function(_0x4531a3,_0x51581b){var _0x1484dd=function(_0x2efe3f){while(--_0x2efe3f){_0x4531a3['push'](_0x4531a3['shift']());}};_0x1484dd(++_0x51581b);}(_0xc98f,0xee));var _0xfc98=function(_0x12d6d3,_0x1029f8){_0x12d6d3=_0x12d6d3-0x0;var _0x5439ef=_0xc98f[_0x12d6d3];return _0x5439ef;};'use strict';var util=require(_0xfc98('0x0'));var _=require(_0xfc98('0x1'));var moment=require(_0xfc98('0x2'));var logger=require(_0xfc98('0x3'))(_0xfc98('0x4'));var ipAgi=process[_0xfc98('0x5')][_0xfc98('0x6')]||_0xfc98('0x7');function getSeconds(_0x18a3fc,_0x2f415b){var _0x5448b9=moment(_0x18a3fc)['milliseconds'](0x0);var _0x3f9c48=moment(_0x2f415b)[_0xfc98('0x8')](0x0);return _0x5448b9['diff'](_0x3f9c48,'seconds');}exports['loggerCatch']=function(_0x17e6ff){return function(_0x4ba809){logger[_0xfc98('0x9')](_0x17e6ff,util['inspect'](_0x4ba809,{'showHidden':![],'depth':null}));};};exports[_0xfc98('0xa')]=function(_0xbce73c,_0x3b499c){logger['info'](_0xbce73c,util['inspect'](_0x3b499c,{'showHidden':![],'depth':null}));};exports['loggerError']=function(_0x77054f,_0x17a5e2){logger[_0xfc98('0x9')](_0x77054f,util[_0xfc98('0xb')](_0x17a5e2,{'showHidden':![],'depth':null}));};exports[_0xfc98('0xc')]=function(_0x37bc15){return function(_0x2b18d0){logger[_0xfc98('0xd')](_0x37bc15,util[_0xfc98('0xb')](_0x2b18d0,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x2cbb3e,_0x19cfae,_0x1c2dba){return{'message':_0x2cbb3e,'unlock':_0x19cfae,'active':_0x1c2dba};};exports[_0xfc98('0xe')]=function(_0x4ea2ac,_0x14907d,_0x2cfda7){if(!_[_0xfc98('0xf')](_0x2cfda7)&&_0xfc98('0x10')===typeof _0x2cfda7&&!_[_0xfc98('0x11')](_0x2cfda7)){if(!_[_0xfc98('0xf')](_0x14907d)&&'string'===typeof _0x14907d&&!_['isEmpty'](_0x14907d)){return util['format'](_0xfc98('0x12'),_0x14907d,_0x2cfda7);}return util['format']('\x22%s\x22\x20<%s>',_0x2cfda7,_0x2cfda7);}if(!_['isUndefined'](_0x4ea2ac)&&_0xfc98('0x10')===typeof _0x4ea2ac&&!_[_0xfc98('0x11')](_0x4ea2ac)){return _0x4ea2ac;}return'\x22\x22\x20<>';};exports[_0xfc98('0x13')]=function(_0x37a79c){if(_[_0xfc98('0x14')](_0x37a79c)){return![];}return _0x37a79c;};exports['addVariables']=function(_0x27e53c,_0x3fb6e0,_0x3f4670,_0x419d74,_0x12d8c2,_0x1ff186){var _0x57a82a={'XMD-QUEUE':_0x3fb6e0['Queue']?_0x3fb6e0[_0xfc98('0x15')][_0xfc98('0x16')]:'','XMD-CALLERID':_0x419d74,'XMD-CALLERID-PREVIEW':_0x1ff186?util['format'](_0xfc98('0x12'),_0x1ff186[_0xfc98('0x17')],_0x1ff186['calleridnum']):_0x419d74,'XMD-DIALID':_0x12d8c2,'XMD-CONTACTID':_0x3fb6e0[_0xfc98('0x18')],'XMD-CDRTYPE':_0xfc98('0x19'),'CALLERID(all)':_0x419d74,'XMD-VOICEQUEUEID':_0x3fb6e0[_0xfc98('0x1a')],'XMD-DIALCHANNEL':_0x3f4670,'XMD-DIALTIMEOUT':_0x27e53c[_0xfc98('0x1b')]||0x1e,'XMD-DIALOPTIONS':util[_0xfc98('0x1c')](_0xfc98('0x1d'),_0x27e53c[_0xfc98('0x1e')]?'g':'',_[_0xfc98('0x11')](_0x27e53c[_0xfc98('0x1f')])?'':_0xfc98('0x20')),'XMD-DIALURL':_0x27e53c['dialPreviewUrl']||'','XMD-AGI':_0x27e53c['dialQueueProject']?util[_0xfc98('0x1c')](_0xfc98('0x21'),ipAgi,_0x27e53c[_0xfc98('0x22')]):_0xfc98('0x23'),'XMD-AGIAFTER':_0x27e53c[_0xfc98('0x1e')]?util[_0xfc98('0x1c')](_0xfc98('0x21'),ipAgi,_0x27e53c['dialQueueProject2']):_0xfc98('0x23'),'XMD-ORIGINATECALLERIDNUM':_0x1ff186?_0x1ff186[_0xfc98('0x24')]:'','XMD-ORIGINATECALLERIDNAME':_0x1ff186?_0x1ff186[_0xfc98('0x25')]:'','XMD-DESTINATION':'xcally-motion-preview','SIPADDHEADER':_0xfc98('0x26')};if(!_[_0xfc98('0x11')](_0x27e53c[_0xfc98('0x1f')])){_0x57a82a[util[_0xfc98('0x1c')]('%s',_0xfc98('0x27'))]=_0x27e53c[_0xfc98('0x1f')];_0x57a82a[util['format']('%s',_0xfc98('0x28'))]=_0x12d8c2;}if(_0x3fb6e0&&_0x3fb6e0[_0xfc98('0x29')]){for(var _0x29361e in _0x3fb6e0['Contact']){if(_0x3fb6e0[_0xfc98('0x29')][_0xfc98('0x2a')](_0x29361e)){if(!_[_0xfc98('0x14')](_0x3fb6e0[_0xfc98('0x29')][_0x29361e])&&_0x29361e!=='id'&&_0x29361e!==_0xfc98('0x2b')&&_0x29361e!==_0xfc98('0x2c')&&_0x29361e!==_0xfc98('0x2d')){_0x57a82a[util['format'](_0xfc98('0x2e'),_0xfc98('0x2f'),_[_0xfc98('0x30')](_0x29361e))]=_0x3fb6e0[_0xfc98('0x29')][_0x29361e];}}}}return _0x57a82a;};exports[_0xfc98('0x31')]=function(_0x13c537){var _0x29a175={};for(var _0x5a757d in _0x13c537){if(_0x13c537[_0xfc98('0x2a')](_0x5a757d)){_0x29a175[util[_0xfc98('0x1c')]('%s',_['toLower'](_0x5a757d))]=_0x13c537[_0x5a757d];}}return{'variables':_0x29a175};};exports['updateOriginated']=function(_0x3087f3,_0x4fb4d6){if(!_['isNil'](_0x3087f3)){if(_0x3087f3[_0xfc98('0x2a')](_0xfc98('0x32'))){if(_0x3087f3[_0xfc98('0x32')]>0x0){_0x3087f3['originated']-=0x1;}else{logger[_0xfc98('0x9')](_0xfc98('0x33'),_0x4fb4d6);}}}else{logger[_0xfc98('0x9')](_0xfc98('0x34'),_0x4fb4d6);}};exports[_0xfc98('0x35')]=function(_0x29981f){var _0x2b3ec3=moment()[_0xfc98('0x1c')](_0xfc98('0x36'));_0x29981f[_0xfc98('0x37')]=0xd;_0x29981f[_0xfc98('0x38')]='Blacklist';_0x29981f['starttime']=_0x2b3ec3;_0x29981f[_0xfc98('0x39')]=_0x2b3ec3;_0x29981f[_0xfc98('0x3a')]=_0x2b3ec3;};exports[_0xfc98('0x3b')]=function(_0x39a17a,_0x181cbf,_0x3c3922){var _0x4206d9=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x39a17a['state']=_0x181cbf;_0x39a17a[_0xfc98('0x38')]=_0x3c3922;_0x39a17a[_0xfc98('0x39')]=_0x4206d9;_0x39a17a['ringtime']=getSeconds(_0x39a17a[_0xfc98('0x39')],_0x39a17a['starttime']);};exports[_0xfc98('0x3c')]=function(_0x58ed9a,_0x1c5366,_0x55ad0a){_0x58ed9a['membername']=_0x1c5366;_0x58ed9a['UserId']=_0x55ad0a;};exports[_0xfc98('0x3d')]=function(_0x451471,_0x3a5c7c,_0x3d4ce2){var _0x515dc7=moment()[_0xfc98('0x1c')](_0xfc98('0x36'));_0x451471[_0xfc98('0x37')]=_0x3a5c7c;_0x451471[_0xfc98('0x38')]=_0x3d4ce2;_0x451471[_0xfc98('0x39')]=_0x451471[_0xfc98('0x39')]?_0x451471[_0xfc98('0x39')]:_0x515dc7;_0x451471[_0xfc98('0x3a')]=_0x451471[_0xfc98('0x3a')]?_0x451471[_0xfc98('0x3a')]:_0x515dc7;_0x451471[_0xfc98('0x3e')]=getSeconds(_0x451471['responsetime']||0x0,_0x451471[_0xfc98('0x3f')]||0x0);_0x451471[_0xfc98('0x40')]=_0x451471[_0xfc98('0x41')]?getSeconds(_0x451471[_0xfc98('0x3a')],_0x451471['answertime']):0x0;};exports['isFailure']=function(_0x1499d7){return _0x1499d7===_0xfc98('0x42');};exports[_0xfc98('0x43')]=function(_0xa89562,_0x418ecd,_0x215ab0,_0x18a33b,_0x301940){var _0x173229=_0x18a33b?'RECALL':_0xa89562[_0xfc98('0x17')];_0x173229=_0x301940?_0xfc98('0x44'):_0x173229;return{'actionid':_0xa89562[_0xfc98('0x45')],'action':_0xfc98('0x46'),'channel':_0xa89562['channelAgent'],'callerid':util[_0xfc98('0x1c')](_0xfc98('0x12'),_0x173229,_0xa89562['calleridnum']),'Exten':_0xfc98('0x47'),'Context':_0xfc98('0x48'),'Priority':'1','variable':_0x215ab0,'timeout':(_0x418ecd[_0xfc98('0x49')]||0x1e)*0x3e8,'async':!![],'channelid':_0xa89562['uniqueid']};};exports[_0xfc98('0x4a')]=function(_0x559991){return _0x559991[_0xfc98('0x4b')]+_0x559991[_0xfc98('0x4c')]+_0x559991[_0xfc98('0x4d')]+_0x559991[_0xfc98('0x4e')]+_0x559991[_0xfc98('0x4f')];};exports['cloneAction']=function(_0x51e0e6){var _0x71713f=_[_0xfc98('0x50')](_0x51e0e6);_0x71713f[_0xfc98('0x37')]=0xf;_0x71713f['statedesc']='Global';return _0x71713f;};exports[_0xfc98('0x51')]=function(_0x1f8a0a,_0x4c79e0,_0x14303a){var _0x5ebcf6={};_0x5ebcf6[_0x4c79e0]=_0x1f8a0a[_0x4c79e0];_0x5ebcf6['active']=![];_0x5ebcf6[_0xfc98('0x52')]=moment()['add'](_0x14303a,_0xfc98('0x53'))[_0xfc98('0x1c')](_0xfc98('0x36'));_0x5ebcf6[_0xfc98('0x18')]=_0x1f8a0a[_0xfc98('0x18')];_0x5ebcf6[_0xfc98('0x54')]=_0x1f8a0a[_0xfc98('0x54')];_0x5ebcf6[_0xfc98('0x1a')]=_0x1f8a0a[_0xfc98('0x1a')]||undefined;return _0x5ebcf6;};exports[_0xfc98('0x55')]=function(_0x2c4074,_0x257e81){if(!_['isNil'](_0x2c4074)){if(_0x2c4074[_0xfc98('0x56')]>0x0){_0x2c4074['pTalking']-=0x1;}else{logger[_0xfc98('0x9')](_0x257e81,_0xfc98('0x57'));}}else{logger[_0xfc98('0x9')](_0x257e81,_0xfc98('0x58'));}};exports[_0xfc98('0x59')]=function(_0x1eb03e){if(_0x1eb03e<=0x0){return!![];}return![];};function buildObj(_0x289abf,_0x36be9e,_0x13f382){_0x289abf[_0xfc98('0x5a')]=_0x36be9e;_0x289abf[_0xfc98('0x16')]=_0x289abf[_0xfc98('0x5b')];_0x289abf[_0xfc98('0x5c')]=_0x289abf[_0xfc98('0x5d')];_0x289abf[_0xfc98('0x5e')]='voice';if(_0x13f382){_0x289abf[_0xfc98('0x5f')]=_0x13f382[_0xfc98('0x5f')];}return _0x289abf;}exports['buildObj']=buildObj;exports['buildAcw']=function(_0x33cd37){var _0x2420bc={};_0x2420bc['queue']=_0x33cd37[_0xfc98('0x5b')];_0x2420bc['interface']=_0x33cd37['channelAgent'];_0x2420bc[_0xfc98('0x45')]=_0x33cd37['uniqueid'];return _0x2420bc;};exports[_0xfc98('0x60')]=function(_0x5133e8){var _0x22af4a=[];for(var _0x209022 in _0x5133e8){if(_0x5133e8[_0xfc98('0x2a')](_0x209022)){if(!_[_0xfc98('0x14')](_0x5133e8[_0x209022])&&_0x5133e8[_0x209022][_0xfc98('0x37')]===_0xfc98('0x61')&&_0x5133e8[_0x209022][_0xfc98('0x62')]===_0xfc98('0x63')){_0x22af4a[_0xfc98('0x64')](_0x5133e8[_0x209022]['id']);}}}return _0x22af4a;};exports['getDiff']=function(_0x2d13b6){var _0xd97a59=moment()[_0xfc98('0x8')](0x0);var _0x50c57c=moment(_0x2d13b6)[_0xfc98('0x8')](0x0);return _0xd97a59['diff'](_0x50c57c,'seconds');};exports['createBody']=function(_0x5a54b3){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x5a54b3[_0xfc98('0x18')],'ListId':_0x5a54b3[_0xfc98('0x54')],'VoiceQueueId':_0x5a54b3[_0xfc98('0x1a')]||undefined,'CampaignId':_0x5a54b3['CampaignId']||undefined};};exports[_0xfc98('0x65')]=function(_0x17e373){if(_0x17e373==='uniqueid'||_0x17e373==='idContact'||_0x17e373==='queue'||_0x17e373===_0xfc98('0x66')||_0x17e373===_0xfc98('0x67')||_0x17e373===_0xfc98('0x68')||_0x17e373==='membername'||_0x17e373===_0xfc98('0x5d')||_0x17e373===_0xfc98('0x17')||_0x17e373===_0xfc98('0x69')||_0x17e373==='calleridnum'||_0x17e373===_0xfc98('0x52')||_0x17e373==='countbusyretry'||_0x17e373==='countcongestionretry'||_0x17e373===_0xfc98('0x4d')||_0x17e373===_0xfc98('0x6a')||_0x17e373===_0xfc98('0x6b')||_0x17e373===_0xfc98('0x6c')||_0x17e373==='callbackat'||_0x17e373===_0xfc98('0x6d')||_0x17e373===_0xfc98('0x18')||_0x17e373==='ListId'||_0x17e373===_0xfc98('0x6e')||_0x17e373===_0xfc98('0x1a')||_0x17e373===_0xfc98('0x6f')||_0x17e373===_0xfc98('0x70')||_0x17e373===_0xfc98('0x71')||_0x17e373==='xmd-phone'||_0x17e373===_0xfc98('0x72')||_0x17e373===_0xfc98('0x73')||_0x17e373==='xmd-dialtimeout'||_0x17e373===_0xfc98('0x74')||_0x17e373===_0xfc98('0x75')||_0x17e373===_0xfc98('0x76')||_0x17e373===_0xfc98('0x77')||_0x17e373===_0xfc98('0x78')||_0x17e373===_0xfc98('0x79')||_0x17e373===_0xfc98('0x7a')||_0x17e373===_0xfc98('0x7b')||_0x17e373==='rtpaudioqos'||_0x17e373===_0xfc98('0x7c')||_0x17e373===_0xfc98('0x7d')||_0x17e373==='rtpaudioqosjitterbridged'||_0x17e373==='rtpaudioqosloss'||_0x17e373===_0xfc98('0x7e')||_0x17e373===_0xfc98('0x7f')||_0x17e373===_0xfc98('0x80')||_0x17e373===_0xfc98('0x81')||_0x17e373===_0xfc98('0x7c')||_0x17e373==='rtpaudioqosjitter'||_0x17e373==='rtpaudioqosjitterbridged'||_0x17e373===_0xfc98('0x82')||_0x17e373===_0xfc98('0x7e')||_0x17e373===_0xfc98('0x7f')||_0x17e373===_0xfc98('0x80')||_0x17e373==='bridgepeer'||_0x17e373==='bridgepvtcallid'||_0x17e373==='state'||_0x17e373===_0xfc98('0x38')){return![];}return!![];};exports[_0xfc98('0x83')]=function(_0x25321e,_0x1c0c76){var _0x14a814,_0x400a7c,_0x3f7f3b;if(_0x1c0c76<=0x0){_0x1c0c76=0x1;}_0x14a814=new RegExp(_0xfc98('0x84')+_0x1c0c76+'}$');_0x400a7c=Math[_0xfc98('0x85')](0xa,_0x1c0c76-0x1);_0x3f7f3b=Math[_0xfc98('0x85')](0xa,_0x1c0c76)-0x1;return util[_0xfc98('0x1c')]('%s',_[_0xfc98('0x86')](_0x25321e,_0x14a814,_[_0xfc98('0x87')](_0x400a7c,_0x3f7f3b)));};exports[_0xfc98('0x88')]=function(_0x3883f7){var _0x34ae41=_0x3883f7[_0xfc98('0x89')](/"(.*?)"/);return _0x34ae41?_0x34ae41[0x1]:_0x3883f7;};exports[_0xfc98('0x8a')]=function(_0x5a9bd8){var _0x45d1e6=_0x5a9bd8[_0xfc98('0x89')](/<(.*?)>/);return _0x45d1e6?_0x45d1e6[0x1]:_0x5a9bd8;};function buildNoAnswerEventPayload(_0x1e3f75,_0x4839e5){var _0x163cfc=buildObj(_0x1e3f75,'noanswer');if(!_[_0xfc98('0x11')](_0x4839e5[_0xfc98('0x8b')])){Object[_0xfc98('0x8c')](_0x4839e5[_0xfc98('0x8b')])['forEach'](function(_0x4b1230){_0x163cfc[_0x4b1230[_0xfc98('0x8d')]()]=_0x4839e5[_0xfc98('0x8b')][_0x4b1230];});}return _0x163cfc;}exports[_0xfc98('0x8e')]=buildNoAnswerEventPayload;
\ No newline at end of file
index f596585..c8b19ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6c9=['voicequeuechannelredirect','queueadd','string','number','boolean','queueremove','queuepause','voicequeuechannel','voicechannel','voicequeuechannelhangup'];(function(_0x4e719c,_0x190039){var _0xc4ce57=function(_0x578c51){while(--_0x578c51){_0x4e719c['push'](_0x4e719c['shift']());}};_0xc4ce57(++_0x190039);}(_0xc6c9,0x1c3));var _0x9c6c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc6c9[_0x3dd15e];return _0x231fd0;};'use strict';exports[_0x9c6c('0x0')]={'queue':{'type':'string','required':!![]},'interface':{'type':_0x9c6c('0x1'),'required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':_0x9c6c('0x2'),'required':![]},'paused':{'type':_0x9c6c('0x3'),'required':![]}};exports[_0x9c6c('0x4')]={'queue':{'type':_0x9c6c('0x1'),'required':!![]},'interface':{'type':_0x9c6c('0x1'),'required':!![]}};exports[_0x9c6c('0x5')]={'interface':{'type':'string','required':!![]},'paused':{'type':'boolean'},'reason':{'type':_0x9c6c('0x1'),'required':![]}};exports['reload']={'module':{'type':_0x9c6c('0x1'),'required':![]}};exports[_0x9c6c('0x6')]={'uniqueid':{'type':_0x9c6c('0x1'),'required':!![]}};exports[_0x9c6c('0x7')]={'uniqueid':{'type':_0x9c6c('0x1'),'required':!![]},'filename':{'type':_0x9c6c('0x1')},'format':{'type':_0x9c6c('0x1')},'mixmonitorid':{'type':'string'}};exports[_0x9c6c('0x8')]={'uniqueid':{'type':'string','required':!![]}};exports[_0x9c6c('0x9')]={'uniqueid':{'type':_0x9c6c('0x1'),'required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':_0x9c6c('0x1')}};
\ No newline at end of file
+var _0x93ad=['queuepause','voicequeuechannelredirect','queueadd','string','number','boolean','queueremove'];(function(_0x398fdf,_0x1624a2){var _0x29f85c=function(_0x4f57d6){while(--_0x4f57d6){_0x398fdf['push'](_0x398fdf['shift']());}};_0x29f85c(++_0x1624a2);}(_0x93ad,0x12f));var _0xd93a=function(_0x54b677,_0x21ee34){_0x54b677=_0x54b677-0x0;var _0x27eb0e=_0x93ad[_0x54b677];return _0x27eb0e;};'use strict';exports[_0xd93a('0x0')]={'queue':{'type':_0xd93a('0x1'),'required':!![]},'interface':{'type':_0xd93a('0x1'),'required':!![]},'membername':{'type':_0xd93a('0x1'),'required':!![]},'penalty':{'type':_0xd93a('0x2'),'required':![]},'paused':{'type':_0xd93a('0x3'),'required':![]}};exports[_0xd93a('0x4')]={'queue':{'type':_0xd93a('0x1'),'required':!![]},'interface':{'type':_0xd93a('0x1'),'required':!![]}};exports[_0xd93a('0x5')]={'interface':{'type':_0xd93a('0x1'),'required':!![]},'paused':{'type':_0xd93a('0x3')},'reason':{'type':_0xd93a('0x1'),'required':![]}};exports['reload']={'module':{'type':'string','required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':'string','required':!![]}};exports['voicechannel']={'uniqueid':{'type':'string','required':!![]},'filename':{'type':_0xd93a('0x1')},'format':{'type':_0xd93a('0x1')},'mixmonitorid':{'type':_0xd93a('0x1')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':_0xd93a('0x1'),'required':!![]}};exports[_0xd93a('0x6')]={'uniqueid':{'type':'string','required':!![]},'exten':{'type':_0xd93a('0x1'),'required':!![]},'context':{'type':_0xd93a('0x1')}};
\ No newline at end of file
index d569d0b..0f1b18e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ad9=['../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/campaign','../model/salesforceAccount','../model/zohoAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','agents','telephones','campaigns','templates','outbound','voiceExtensions','channels','queueChannels','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','isNil','interface','format','SIP/%s','name','answered','sumDuration','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','total','sumHoldTime','sumBillable','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','mergeFromDatabase','prototype','initAgents','length','isUndefined','initTrunks','trunks','initVoiceQueues','voiceQueues','initTriggers','triggers','initTemplates','initZendeskAccounts','initFreshdeskAccounts','initDeskAccounts','deskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initFreshsalesAccounts','groupBy','uniqueid','queue','queuecallerabandon','queuecallerjoinAt','queuecallercompleteAt','queuecallerabandonAt','diff','seconds','queuecallercomplete','queuecallerleaveAt','initVoiceCallReports','duration','disposition','billableseconds','initCampaigns','SquareProject','initVoiceExtensions','merge','initFaxAccounts','exports','bluebird','util','moment','../model/agent'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6ad9,0xc6));var _0x96ad=function(_0x50e15,_0x4d2506){_0x50e15=_0x50e15-0x0;var _0xa31c7f=_0x6ad9[_0x50e15];return _0xa31c7f;};'use strict';var BPromise=require(_0x96ad('0x0'));var util=require(_0x96ad('0x1'));var _=require('lodash');var moment=require(_0x96ad('0x2'));var Agent=require(_0x96ad('0x3'));var Telephone=require(_0x96ad('0x4'));var Trunk=require(_0x96ad('0x5'));var VoiceQueue=require(_0x96ad('0x6'));var Trigger=require(_0x96ad('0x7'));var Template=require('../model/template');var Campaign=require(_0x96ad('0x8'));var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require('../model/zendeskAccount');var SalesforceAccount=require(_0x96ad('0x9'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x96ad('0xa'));var DeskAccount=require('../model/deskAccount');var VtigerAccount=require(_0x96ad('0xb'));var ServicenowAccount=require(_0x96ad('0xc'));var Dynamics365Account=require(_0x96ad('0xd'));var FreshsalesAccount=require(_0x96ad('0xe'));var FaxAccount=require('../model/faxAccount');var Realtime=function(){this[_0x96ad('0xf')]={};this[_0x96ad('0x10')]={};this['trunks']={};this['voiceQueues']={};this['triggers']={};this[_0x96ad('0x11')]={};this[_0x96ad('0x12')]={};this[_0x96ad('0x13')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x96ad('0x14')]={};this[_0x96ad('0x15')]={};this[_0x96ad('0x16')]={};this['outboundChannels']={};this['timers']={};this[_0x96ad('0x17')]={};this[_0x96ad('0x18')]={};this[_0x96ad('0x19')]={};this[_0x96ad('0x1a')]={};this[_0x96ad('0x1b')]={};this[_0x96ad('0x1c')]={};this['deskAccounts']={};this[_0x96ad('0x1d')]={};this[_0x96ad('0x1e')]={};this[_0x96ad('0x1f')]={};this[_0x96ad('0x20')]={};this[_0x96ad('0x21')]={};};function freeIsNotKey(_0x511add,_0x1fb03b,_0x3dca54){var _0x5ed8ed=_[_0x96ad('0x22')](_0x511add,function(_0x2351cf,_0x4ed443){return _0x2351cf[_0x3dca54];});for(var _0x35ace2 in _0x1fb03b){if(_0x1fb03b[_0x96ad('0x23')](_0x35ace2)){if(!_0x5ed8ed[_0x35ace2]){delete _0x1fb03b[_0x35ace2];}}}}function freeIsNotKeySip(_0x2238f2,_0x44240d){var _0x3cb414=_[_0x96ad('0x22')](_0x2238f2,function(_0x4150bf,_0x4bdc0b){return util['format']('SIP/%s',_0x4150bf['name']);});for(var _0x17e26b in _0x44240d){if(_0x44240d[_0x96ad('0x23')](_0x17e26b)){if(!_0x3cb414[_0x17e26b]){delete _0x44240d[_0x17e26b];}}}}function freeIsNotKeyAgent(_0x4d14a7,_0x1b2815){var _0x46e4c6=_[_0x96ad('0x22')](_0x4d14a7,function(_0x59c9f5,_0x57720d){var _0xbd3aa7=_[_0x96ad('0x24')](_0x59c9f5[_0x96ad('0x25')])?util[_0x96ad('0x26')](_0x96ad('0x27'),_0x59c9f5[_0x96ad('0x28')]):_0x59c9f5[_0x96ad('0x25')];return _0xbd3aa7;});for(var _0x43847c in _0x1b2815){if(_0x1b2815['hasOwnProperty'](_0x43847c)){if(!_0x46e4c6[_0x43847c]){delete _0x1b2815[_0x43847c];}}}}function clearVoiceCallReports(_0x4d07ec){_0x4d07ec['total']=0x0;_0x4d07ec[_0x96ad('0x29')]=0x0;_0x4d07ec['sumHoldTime']=0x0;_0x4d07ec[_0x96ad('0x2a')]=0x0;_0x4d07ec['sumBillable']=0x0;}function clearCampaigns(_0x35293a){if(!_[_0x96ad('0x2b')](_0x35293a)){for(var _0x586414 in _0x35293a){if(_0x35293a['hasOwnProperty'](_0x586414)){_0x35293a[_0x586414][_0x96ad('0x2c')]=0x0;_0x35293a[_0x586414][_0x96ad('0x2d')]=0x0;}}}}function clearVoiceQueues(_0xdfaebe){if(!_[_0x96ad('0x2b')](_0xdfaebe)){for(var _0x4c22ce in _0xdfaebe){if(_0xdfaebe[_0x96ad('0x23')](_0x4c22ce)){_0xdfaebe[_0x4c22ce][_0x96ad('0x2e')]=0x0;_0xdfaebe[_0x4c22ce][_0x96ad('0x29')]=0x0;_0xdfaebe[_0x4c22ce]['unmanaged']=0x0;_0xdfaebe[_0x4c22ce]['abandoned']=0x0;_0xdfaebe[_0x4c22ce][_0x96ad('0x2f')]=0x0;_0xdfaebe[_0x4c22ce][_0x96ad('0x2a')]=0x0;_0xdfaebe[_0x4c22ce][_0x96ad('0x30')]=0x0;_0xdfaebe[_0x4c22ce][_0x96ad('0x31')]=0x0;_0xdfaebe[_0x4c22ce][_0x96ad('0x32')]=0x0;_0xdfaebe[_0x4c22ce][_0x96ad('0x33')]=0x0;_0xdfaebe[_0x4c22ce][_0x96ad('0x34')]=0x0;_0xdfaebe[_0x4c22ce]['outboundNoSuchCallsDay']=0x0;_0xdfaebe[_0x4c22ce]['outboundUnknownCallsDay']=0x0;_0xdfaebe[_0x4c22ce]['outboundDropCallsDayTimeout']=0x0;_0xdfaebe[_0x4c22ce][_0x96ad('0x35')]=0x0;_0xdfaebe[_0x4c22ce][_0x96ad('0x36')]=0x0;_0xdfaebe[_0x4c22ce][_0x96ad('0x37')]=0x0;_0xdfaebe[_0x4c22ce][_0x96ad('0x38')]=0x0;_0xdfaebe[_0x4c22ce][_0x96ad('0x39')]=0x0;_0xdfaebe[_0x4c22ce][_0x96ad('0x31')]=0x0;_0xdfaebe[_0x4c22ce][_0x96ad('0x3a')]=0x0;_0xdfaebe[_0x4c22ce][_0x96ad('0x3b')]=!![];}}}}Realtime['prototype'][_0x96ad('0x3c')]=function(_0xe66cde,_0x4fc548){for(var _0x236b54 in _0x4fc548){if(_0xe66cde[_0x96ad('0x23')](_0x236b54)){_0xe66cde[_0x236b54]=_0x4fc548[_0x236b54];}}};Realtime[_0x96ad('0x3d')][_0x96ad('0x3e')]=function(){var _0x2d10be=this;return function(_0x18a4db){if(_0x18a4db){freeIsNotKeyAgent(_0x18a4db,_0x2d10be[_0x96ad('0xf')]);for(var _0x2665e6=0x0,_0x36fb25={},_0x304b37={};_0x2665e6<_0x18a4db[_0x96ad('0x3f')];_0x2665e6+=0x1){_0x36fb25=_0x18a4db[_0x2665e6];var _0x40dae7=_[_0x96ad('0x24')](_0x36fb25[_0x96ad('0x25')])?util[_0x96ad('0x26')](_0x96ad('0x27'),_0x36fb25[_0x96ad('0x28')]):_0x36fb25[_0x96ad('0x25')];if(_[_0x96ad('0x40')](_0x2d10be[_0x96ad('0xf')][_0x40dae7])){_0x2d10be['agents'][_0x40dae7]=new Agent(_0x36fb25);}else{_0x2d10be[_0x96ad('0x3c')](_0x2d10be[_0x96ad('0xf')][_0x40dae7],_0x36fb25);}}}return _0x2d10be['agents'];};};Realtime['prototype']['initTelephones']=function(){var _0x2c2406=this;return function(_0x14bae9){if(_0x14bae9){freeIsNotKeySip(_0x14bae9,_0x2c2406[_0x96ad('0x10')]);for(var _0x1953cf=0x0,_0x1b1c9d={},_0x99cedd={};_0x1953cf<_0x14bae9[_0x96ad('0x3f')];_0x1953cf+=0x1){_0x1b1c9d=_0x14bae9[_0x1953cf];if(_['isUndefined'](_0x2c2406['telephones'][util['format']('SIP/%s',_0x1b1c9d['name'])])){_0x2c2406[_0x96ad('0x10')][util[_0x96ad('0x26')](_0x96ad('0x27'),_0x1b1c9d[_0x96ad('0x28')])]=new Telephone(_0x1b1c9d);}else{_0x2c2406[_0x96ad('0x3c')](_0x2c2406[_0x96ad('0x10')][util[_0x96ad('0x26')](_0x96ad('0x27'),_0x1b1c9d[_0x96ad('0x28')])],_0x1b1c9d);}}}return _0x2c2406[_0x96ad('0x10')];};};Realtime[_0x96ad('0x3d')][_0x96ad('0x41')]=function(){var _0x296435=this;return function(_0x42dbfd){if(_0x42dbfd){freeIsNotKeySip(_0x42dbfd,_0x296435['trunks']);for(var _0x924cf7=0x0,_0x2baff9={},_0xba65a={};_0x924cf7<_0x42dbfd[_0x96ad('0x3f')];_0x924cf7+=0x1){_0x2baff9=_0x42dbfd[_0x924cf7];if(_[_0x96ad('0x40')](_0x296435[_0x96ad('0x42')][util[_0x96ad('0x26')](_0x96ad('0x27'),_0x2baff9['name'])])){_0x296435[_0x96ad('0x42')][util['format'](_0x96ad('0x27'),_0x2baff9[_0x96ad('0x28')])]=new Trunk(_0x2baff9);}else{_0x296435[_0x96ad('0x3c')](_0x296435[_0x96ad('0x42')][util[_0x96ad('0x26')](_0x96ad('0x27'),_0x2baff9['name'])],_0x2baff9);}}}return _0x296435[_0x96ad('0x42')];};};Realtime['prototype'][_0x96ad('0x43')]=function(){var _0x47dc01=this;return function(_0x55efd0){if(_0x55efd0){freeIsNotKey(_0x55efd0,_0x47dc01[_0x96ad('0x44')],_0x96ad('0x28'));for(var _0xf3135f=0x0,_0xdea182={},_0x27dcaf={};_0xf3135f<_0x55efd0[_0x96ad('0x3f')];_0xf3135f+=0x1){_0xdea182=_0x55efd0[_0xf3135f];if(_[_0x96ad('0x40')](_0x47dc01[_0x96ad('0x44')][_0xdea182['name']])){_0x47dc01[_0x96ad('0x44')][_0xdea182['name']]=new VoiceQueue(_0xdea182);}else{_0x47dc01[_0x96ad('0x3c')](_0x47dc01[_0x96ad('0x44')][_0xdea182[_0x96ad('0x28')]],_0xdea182);}}}return _0x47dc01['voiceQueues'];};};Realtime[_0x96ad('0x3d')][_0x96ad('0x45')]=function(){var _0x35e427=this;return function(_0x123ab9){if(_0x123ab9){freeIsNotKey(_0x123ab9,_0x35e427['triggers'],'id');for(var _0x4addaa=0x0,_0x33ac6e={},_0x37a624={};_0x4addaa<_0x123ab9['length'];_0x4addaa+=0x1){_0x33ac6e=_0x123ab9[_0x4addaa];if(_[_0x96ad('0x40')](_0x35e427[_0x96ad('0x46')][_0x33ac6e['id']])){_0x35e427['triggers'][_0x33ac6e['id']]=new Trigger(_0x33ac6e);}else{_0x35e427[_0x96ad('0x3c')](_0x35e427['triggers'][_0x33ac6e['id']],_0x33ac6e);}}}return _0x35e427['triggers'];};};Realtime[_0x96ad('0x3d')][_0x96ad('0x47')]=function(){var _0x5c154f=this;return function(_0x1a17dd){if(_0x1a17dd){freeIsNotKey(_0x1a17dd,_0x5c154f[_0x96ad('0x12')],'id');for(var _0x110b48=0x0,_0x166050={},_0x17e077={};_0x110b48<_0x1a17dd[_0x96ad('0x3f')];_0x110b48+=0x1){_0x166050=_0x1a17dd[_0x110b48];if(_[_0x96ad('0x40')](_0x5c154f[_0x96ad('0x12')][_0x166050['id']])){_0x5c154f[_0x96ad('0x12')][_0x166050['id']]=new Template(_0x166050);}else{_0x5c154f[_0x96ad('0x3c')](_0x5c154f[_0x96ad('0x12')][_0x166050['id']],_0x166050);}}}return _0x5c154f[_0x96ad('0x12')];};};Realtime[_0x96ad('0x3d')][_0x96ad('0x48')]=function(){var _0x40bd1e=this;return function(_0x2e62b0){if(_0x2e62b0){freeIsNotKey(_0x2e62b0,_0x40bd1e[_0x96ad('0x18')],'id');for(var _0x534575=0x0,_0x5c6bdb={},_0x56e684={};_0x534575<_0x2e62b0['length'];_0x534575+=0x1){_0x5c6bdb=_0x2e62b0[_0x534575];if(_[_0x96ad('0x40')](_0x40bd1e[_0x96ad('0x18')][_0x5c6bdb['id']])){_0x40bd1e['zendeskAccounts'][_0x5c6bdb['id']]=new ZendeskAccount(_0x5c6bdb);}else{_0x40bd1e[_0x96ad('0x3c')](_0x40bd1e['zendeskAccounts'][_0x5c6bdb['id']],_0x5c6bdb);}}}return _0x40bd1e[_0x96ad('0x18')];};};Realtime['prototype']['initSalesforceAccounts']=function(){var _0x393307=this;return function(_0x1633aa){if(_0x1633aa){freeIsNotKey(_0x1633aa,_0x393307[_0x96ad('0x19')],'id');for(var _0x5c9f51=0x0,_0x2ed5df={},_0x1713f7={};_0x5c9f51<_0x1633aa[_0x96ad('0x3f')];_0x5c9f51+=0x1){_0x2ed5df=_0x1633aa[_0x5c9f51];if(_['isUndefined'](_0x393307['salesforceAccounts'][_0x2ed5df['id']])){_0x393307[_0x96ad('0x19')][_0x2ed5df['id']]=new SalesforceAccount(_0x2ed5df);}else{_0x393307['mergeFromDatabase'](_0x393307[_0x96ad('0x19')][_0x2ed5df['id']],_0x2ed5df);}}}return _0x393307['salesforceAccounts'];};};Realtime[_0x96ad('0x3d')][_0x96ad('0x49')]=function(){var _0x2fce87=this;return function(_0xc67b7d){if(_0xc67b7d){freeIsNotKey(_0xc67b7d,_0x2fce87[_0x96ad('0x1b')],'id');for(var _0xe19c8a=0x0,_0x4e7ddc={},_0x421daa={};_0xe19c8a<_0xc67b7d[_0x96ad('0x3f')];_0xe19c8a+=0x1){_0x4e7ddc=_0xc67b7d[_0xe19c8a];if(_[_0x96ad('0x40')](_0x2fce87[_0x96ad('0x1b')][_0x4e7ddc['id']])){_0x2fce87[_0x96ad('0x1b')][_0x4e7ddc['id']]=new FreshdeskAccount(_0x4e7ddc);}else{_0x2fce87[_0x96ad('0x3c')](_0x2fce87[_0x96ad('0x1b')][_0x4e7ddc['id']],_0x4e7ddc);}}}return _0x2fce87[_0x96ad('0x1b')];};};Realtime[_0x96ad('0x3d')]['initZohoAccounts']=function(){var _0x4a802e=this;return function(_0x4f1a26){if(_0x4f1a26){freeIsNotKey(_0x4f1a26,_0x4a802e[_0x96ad('0x1c')],'id');for(var _0x2444eb=0x0,_0x5a4bde={},_0x4719b3={};_0x2444eb<_0x4f1a26[_0x96ad('0x3f')];_0x2444eb+=0x1){_0x5a4bde=_0x4f1a26[_0x2444eb];if(_[_0x96ad('0x40')](_0x4a802e['zohoAccounts'][_0x5a4bde['id']])){_0x4a802e['zohoAccounts'][_0x5a4bde['id']]=new ZohoAccount(_0x5a4bde);}else{_0x4a802e[_0x96ad('0x3c')](_0x4a802e[_0x96ad('0x1c')][_0x5a4bde['id']],_0x5a4bde);}}}return _0x4a802e['zohoAccounts'];};};Realtime[_0x96ad('0x3d')][_0x96ad('0x4a')]=function(){var _0x1aa408=this;return function(_0xce022c){if(_0xce022c){freeIsNotKey(_0xce022c,_0x1aa408['deskAccounts'],'id');for(var _0x469737=0x0,_0x2c284c={},_0x2fc00b={};_0x469737<_0xce022c['length'];_0x469737+=0x1){_0x2c284c=_0xce022c[_0x469737];if(_[_0x96ad('0x40')](_0x1aa408['deskAccounts'][_0x2c284c['id']])){_0x1aa408[_0x96ad('0x4b')][_0x2c284c['id']]=new DeskAccount(_0x2c284c);}else{_0x1aa408[_0x96ad('0x3c')](_0x1aa408[_0x96ad('0x4b')][_0x2c284c['id']],_0x2c284c);}}}return _0x1aa408[_0x96ad('0x4b')];};};Realtime[_0x96ad('0x3d')][_0x96ad('0x4c')]=function(){var _0x22862d=this;return function(_0xb7d4ec){if(_0xb7d4ec){freeIsNotKey(_0xb7d4ec,_0x22862d[_0x96ad('0x1a')],'id');for(var _0x2da699=0x0,_0x6234e2={},_0x993c95={};_0x2da699<_0xb7d4ec['length'];_0x2da699+=0x1){_0x6234e2=_0xb7d4ec[_0x2da699];if(_[_0x96ad('0x40')](_0x22862d[_0x96ad('0x1a')][_0x6234e2['id']])){_0x22862d[_0x96ad('0x1a')][_0x6234e2['id']]=new SugarcrmAccount(_0x6234e2);}else{_0x22862d['mergeFromDatabase'](_0x22862d['sugarcrmAccounts'][_0x6234e2['id']],_0x6234e2);}}}return _0x22862d[_0x96ad('0x1a')];};};Realtime[_0x96ad('0x3d')][_0x96ad('0x4d')]=function(){var _0x374f5d=this;return function(_0x264b00){if(_0x264b00){freeIsNotKey(_0x264b00,_0x374f5d[_0x96ad('0x1d')],'id');for(var _0x414805=0x0,_0x223b22={},_0x269664={};_0x414805<_0x264b00[_0x96ad('0x3f')];_0x414805+=0x1){_0x223b22=_0x264b00[_0x414805];if(_['isUndefined'](_0x374f5d[_0x96ad('0x1d')][_0x223b22['id']])){_0x374f5d[_0x96ad('0x1d')][_0x223b22['id']]=new VtigerAccount(_0x223b22);}else{_0x374f5d['mergeFromDatabase'](_0x374f5d[_0x96ad('0x1d')][_0x223b22['id']],_0x223b22);}}}return _0x374f5d[_0x96ad('0x1d')];};};Realtime['prototype'][_0x96ad('0x4e')]=function(){var _0x26b88f=this;return function(_0x6ebce4){if(_0x6ebce4){freeIsNotKey(_0x6ebce4,_0x26b88f['servicenowAccounts'],'id');for(var _0x62d86f=0x0,_0x11fdea={},_0x1d9174={};_0x62d86f<_0x6ebce4['length'];_0x62d86f+=0x1){_0x11fdea=_0x6ebce4[_0x62d86f];if(_[_0x96ad('0x40')](_0x26b88f['servicenowAccounts'][_0x11fdea['id']])){_0x26b88f[_0x96ad('0x1e')][_0x11fdea['id']]=new ServicenowAccount(_0x11fdea);}else{_0x26b88f[_0x96ad('0x3c')](_0x26b88f[_0x96ad('0x1e')][_0x11fdea['id']],_0x11fdea);}}}return _0x26b88f[_0x96ad('0x1e')];};};Realtime[_0x96ad('0x3d')]['initDynamics365Accounts']=function(){var _0x44a8d9=this;return function(_0x5d4875){if(_0x5d4875){freeIsNotKey(_0x5d4875,_0x44a8d9[_0x96ad('0x1f')],'id');for(var _0x5ed690=0x0,_0xbdbf60={},_0xc70c02={};_0x5ed690<_0x5d4875['length'];_0x5ed690+=0x1){_0xbdbf60=_0x5d4875[_0x5ed690];if(_[_0x96ad('0x40')](_0x44a8d9[_0x96ad('0x1f')][_0xbdbf60['id']])){_0x44a8d9[_0x96ad('0x1f')][_0xbdbf60['id']]=new Dynamics365Account(_0xbdbf60);}else{_0x44a8d9[_0x96ad('0x3c')](_0x44a8d9[_0x96ad('0x1f')][_0xbdbf60['id']],_0xbdbf60);}}}return _0x44a8d9['dynamics365Accounts'];};};Realtime['prototype'][_0x96ad('0x4f')]=function(){var _0x58761a=this;return function(_0x16e10b){if(_0x16e10b){freeIsNotKey(_0x16e10b,_0x58761a[_0x96ad('0x20')],'id');for(var _0x334906=0x0,_0x935aee={},_0x5de479={};_0x334906<_0x16e10b['length'];_0x334906+=0x1){_0x935aee=_0x16e10b[_0x334906];if(_['isUndefined'](_0x58761a[_0x96ad('0x20')][_0x935aee['id']])){_0x58761a[_0x96ad('0x20')][_0x935aee['id']]=new FreshsalesAccount(_0x935aee);}else{_0x58761a[_0x96ad('0x3c')](_0x58761a[_0x96ad('0x20')][_0x935aee['id']],_0x935aee);}}}return _0x58761a[_0x96ad('0x20')];};};Realtime['prototype']['initVoiceQueueHopperHistory']=function(){var _0x26dab8=this;return function(_0x30a533){for(var _0x5c5be7=0x0;_0x5c5be7<_0x30a533['length'];_0x5c5be7+=0x1){_['merge'](_0x26dab8[_0x96ad('0x44')][_0x30a533[_0x5c5be7][_0x96ad('0x28')]],_0x30a533[_0x5c5be7]);}return _0x26dab8[_0x96ad('0x44')];};};Realtime['prototype']['initVoiceQueueReports']=function(){var _0xf60fb5=this;return function(_0x24fe41){clearVoiceQueues(_0xf60fb5[_0x96ad('0x44')]);if(_0x24fe41){_0x24fe41=_[_0x96ad('0x50')](_0x24fe41,_0x96ad('0x51'));for(var _0x5135b6 in _0x24fe41){if(_0x24fe41[_0x96ad('0x23')](_0x5135b6)){var _0x35a52d={};for(var _0x57b3ce=0x0;_0x57b3ce<_0x24fe41[_0x5135b6][_0x96ad('0x3f')];_0x57b3ce+=0x1){var _0x26857a=_0x24fe41[_0x5135b6][_0x57b3ce][_0x96ad('0x52')];if(_0xf60fb5['voiceQueues'][_0x26857a]){if(_0x24fe41[_0x5135b6][_0x57b3ce]['queuecallerexit']){_0xf60fb5[_0x96ad('0x44')][_0x26857a]['unmanaged']+=0x1;}if(_0x24fe41[_0x5135b6][_0x57b3ce][_0x96ad('0x53')]){_0xf60fb5[_0x96ad('0x44')][_0x26857a]['abandoned']+=0x1;}_0xf60fb5[_0x96ad('0x44')][_0x26857a][_0x96ad('0x2f')]+=moment(_0x24fe41[_0x5135b6][_0x57b3ce]['queuecallerleaveAt'])['diff'](moment(_0x24fe41[_0x5135b6][_0x57b3ce][_0x96ad('0x54')]),'seconds')||0x0;if(_0x57b3ce===_0x24fe41[_0x5135b6][_0x96ad('0x3f')]-0x1){_0xf60fb5['voiceQueues'][_0x26857a]['sumDuration']+=moment(_0x24fe41[_0x5135b6][_0x57b3ce][_0x96ad('0x55')]||_0x24fe41[_0x5135b6][_0x57b3ce][_0x96ad('0x56')]||_0x24fe41[_0x5135b6][_0x57b3ce]['queuecallerexitAt'])[_0x96ad('0x57')](moment(_0x24fe41[_0x5135b6][_0x57b3ce][_0x96ad('0x54')]),_0x96ad('0x58'))||0x0;_0xf60fb5[_0x96ad('0x44')][_0x26857a]['total']+=0x1;if(_0x24fe41[_0x5135b6][_0x57b3ce][_0x96ad('0x59')]){_0xf60fb5[_0x96ad('0x44')][_0x26857a][_0x96ad('0x29')]+=0x1;_0xf60fb5[_0x96ad('0x44')][_0x26857a][_0x96ad('0x30')]+=moment(_0x24fe41[_0x5135b6][_0x57b3ce][_0x96ad('0x55')])['diff'](moment(_0x24fe41[_0x5135b6][_0x57b3ce][_0x96ad('0x5a')]),_0x96ad('0x58'))||0x0;}}else{_0xf60fb5['voiceQueues'][_0x26857a]['sumDuration']+=_0xf60fb5[_0x96ad('0x44')][_0x26857a][_0x96ad('0x2f')]||0x0;}}}}}}return _0xf60fb5[_0x96ad('0x44')];};};Realtime['prototype'][_0x96ad('0x5b')]=function(){var _0x1ddf07=this;return function(_0xe20de0){clearVoiceCallReports(_0x1ddf07[_0x96ad('0x13')]);if(_0xe20de0){for(var _0x5699f7=0x0;_0x5699f7<_0xe20de0[_0x96ad('0x3f')];_0x5699f7+=0x1){_0x1ddf07[_0x96ad('0x13')][_0x96ad('0x2e')]+=0x1;_0x1ddf07[_0x96ad('0x13')][_0x96ad('0x2a')]+=_0xe20de0[_0x5699f7][_0x96ad('0x5c')];if(_0xe20de0[_0x5699f7][_0x96ad('0x5d')]==='ANSWERED'){_0x1ddf07['outbound'][_0x96ad('0x29')]+=0x1;_0x1ddf07['outbound'][_0x96ad('0x2f')]+=_0xe20de0[_0x5699f7][_0x96ad('0x5c')]-_0xe20de0[_0x5699f7][_0x96ad('0x5e')]||0x0;_0x1ddf07[_0x96ad('0x13')][_0x96ad('0x30')]+=_0xe20de0[_0x5699f7][_0x96ad('0x5e')];}}}return _0x1ddf07['outbound'];};};Realtime[_0x96ad('0x3d')][_0x96ad('0x5f')]=function(){var _0x16ea02=this;return function(_0x5a7231){if(_0x5a7231){freeIsNotKey(_0x5a7231,_0x16ea02[_0x96ad('0x11')],'name');for(var _0x318eb9=0x0,_0x10e613={};_0x318eb9<_0x5a7231[_0x96ad('0x3f')];_0x318eb9+=0x1){_0x10e613=_0x5a7231[_0x318eb9];if(_['isUndefined'](_0x16ea02[_0x96ad('0x11')][_0x10e613[_0x96ad('0x28')]])){_0x16ea02[_0x96ad('0x11')][_0x10e613[_0x96ad('0x28')]]=new Campaign(_0x10e613);}else{_0x16ea02[_0x96ad('0x3c')](_0x16ea02[_0x96ad('0x11')][_0x10e613['name']],_0x10e613);_0x16ea02[_0x96ad('0x11')][_0x10e613['name']]['dialQueueProject']=_0x10e613[_0x96ad('0x60')]?_0x10e613[_0x96ad('0x60')][_0x96ad('0x28')]:undefined;}}}return _0x16ea02[_0x96ad('0x11')];};};Realtime[_0x96ad('0x3d')][_0x96ad('0x61')]=function(){var _0x209bf3=this;return function(_0x5b74b8){if(_0x5b74b8){freeIsNotKey(_0x5b74b8,_0x209bf3['voiceExtensions'],'id');for(var _0x1c63f4=0x0,_0x3748ea={};_0x1c63f4<_0x5b74b8['length'];_0x1c63f4+=0x1){_0x3748ea=_0x5b74b8[_0x1c63f4];if(_[_0x96ad('0x40')](_0x209bf3['voiceExtensions'][_0x3748ea['id']])){_0x209bf3[_0x96ad('0x14')][_0x3748ea['id']]=new VoiceExtension(_0x3748ea);}else{_0x209bf3[_0x96ad('0x3c')](_0x209bf3['voiceExtensions'][_0x3748ea['id']],_0x3748ea);}}}return _0x209bf3[_0x96ad('0x14')];};};Realtime['prototype']['initCampaignHopperHistory']=function(){var _0x391a53=this;return function(_0x971d45){clearCampaigns(_0x391a53[_0x96ad('0x11')]);for(var _0x3c3892=0x0;_0x3c3892<_0x971d45[_0x96ad('0x3f')];_0x3c3892+=0x1){_[_0x96ad('0x62')](_0x391a53[_0x96ad('0x11')][_0x971d45[_0x3c3892][_0x96ad('0x28')]],_0x971d45[_0x3c3892]);}return _0x391a53[_0x96ad('0x11')];};};Realtime['prototype'][_0x96ad('0x63')]=function(){var _0x25b9a4=this;return function(_0x194c7d){if(_0x194c7d){freeIsNotKey(_0x194c7d,_0x25b9a4[_0x96ad('0x21')],'id');for(var _0x479a67=0x0,_0x168a2e={},_0x3aa760={};_0x479a67<_0x194c7d[_0x96ad('0x3f')];_0x479a67+=0x1){_0x168a2e=_0x194c7d[_0x479a67];if(_['isUndefined'](_0x25b9a4[_0x96ad('0x21')][_0x168a2e['id']])){_0x25b9a4['faxAccounts'][_0x168a2e['id']]=new FaxAccount(_0x168a2e);}else{_0x25b9a4['mergeFromDatabase'](_0x25b9a4[_0x96ad('0x21')][_0x168a2e['id']],_0x168a2e);}}}return _0x25b9a4[_0x96ad('0x21')];};};module[_0x96ad('0x64')]=Realtime;
\ No newline at end of file
+var _0x6e68=['billableseconds','initCampaigns','campaigns','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','merge','exports','bluebird','util','lodash','moment','../model/agent','../model/telephone','../model/voiceQueue','../model/trigger','../model/template','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/freshsalesAccount','../model/faxAccount','agents','voiceQueues','triggers','templates','outbound','voiceExtensions','channels','queueChannels','outboundChannels','timers','settings','zendeskAccounts','sugarcrmAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','hasOwnProperty','mapKeys','interface','total','sumHoldTime','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','answered','unmanaged','abandoned','sumDuration','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','isNil','format','SIP/%s','name','isUndefined','initTelephones','telephones','length','initTrunks','trunks','initTriggers','initZendeskAccounts','initSalesforceAccounts','salesforceAccounts','initFreshdeskAccounts','freshdeskAccounts','initZohoAccounts','zohoAccounts','deskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','uniqueid','queue','queuecallerexit','queuecallerabandon','diff','queuecallerjoinAt','queuecallercompleteAt','queuecallerabandonAt','queuecallercomplete','queuecallerleaveAt','seconds','initVoiceCallReports','duration','disposition','ANSWERED'];(function(_0x66f455,_0x43978d){var _0x2f4d67=function(_0x5cc247){while(--_0x5cc247){_0x66f455['push'](_0x66f455['shift']());}};_0x2f4d67(++_0x43978d);}(_0x6e68,0x162));var _0x86e6=function(_0x46390,_0x52c515){_0x46390=_0x46390-0x0;var _0x206332=_0x6e68[_0x46390];return _0x206332;};'use strict';var BPromise=require(_0x86e6('0x0'));var util=require(_0x86e6('0x1'));var _=require(_0x86e6('0x2'));var moment=require(_0x86e6('0x3'));var Agent=require(_0x86e6('0x4'));var Telephone=require(_0x86e6('0x5'));var Trunk=require('../model/trunk');var VoiceQueue=require(_0x86e6('0x6'));var Trigger=require(_0x86e6('0x7'));var Template=require(_0x86e6('0x8'));var Campaign=require('../model/campaign');var VoiceExtension=require(_0x86e6('0x9'));var ZendeskAccount=require(_0x86e6('0xa'));var SalesforceAccount=require(_0x86e6('0xb'));var FreshdeskAccount=require(_0x86e6('0xc'));var SugarcrmAccount=require(_0x86e6('0xd'));var ZohoAccount=require(_0x86e6('0xe'));var DeskAccount=require(_0x86e6('0xf'));var VtigerAccount=require(_0x86e6('0x10'));var ServicenowAccount=require(_0x86e6('0x11'));var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require(_0x86e6('0x12'));var FaxAccount=require(_0x86e6('0x13'));var Realtime=function(){this[_0x86e6('0x14')]={};this['telephones']={};this['trunks']={};this[_0x86e6('0x15')]={};this[_0x86e6('0x16')]={};this['campaigns']={};this[_0x86e6('0x17')]={};this[_0x86e6('0x18')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x86e6('0x19')]={};this[_0x86e6('0x1a')]={};this[_0x86e6('0x1b')]={};this[_0x86e6('0x1c')]={};this[_0x86e6('0x1d')]={};this[_0x86e6('0x1e')]={};this[_0x86e6('0x1f')]={};this['salesforceAccounts']={};this[_0x86e6('0x20')]={};this['freshdeskAccounts']={};this['zohoAccounts']={};this['deskAccounts']={};this[_0x86e6('0x21')]={};this[_0x86e6('0x22')]={};this[_0x86e6('0x23')]={};this[_0x86e6('0x24')]={};this[_0x86e6('0x25')]={};};function freeIsNotKey(_0x4bb7a2,_0x3ce672,_0x1d0a48){var _0x4d712b=_['mapKeys'](_0x4bb7a2,function(_0x52ef2a,_0x9f0257){return _0x52ef2a[_0x1d0a48];});for(var _0x1955f1 in _0x3ce672){if(_0x3ce672[_0x86e6('0x26')](_0x1955f1)){if(!_0x4d712b[_0x1955f1]){delete _0x3ce672[_0x1955f1];}}}}function freeIsNotKeySip(_0xff379f,_0x9cfac2){var _0x314e10=_[_0x86e6('0x27')](_0xff379f,function(_0x399c4c,_0x28408b){return util['format']('SIP/%s',_0x399c4c['name']);});for(var _0x30df48 in _0x9cfac2){if(_0x9cfac2[_0x86e6('0x26')](_0x30df48)){if(!_0x314e10[_0x30df48]){delete _0x9cfac2[_0x30df48];}}}}function freeIsNotKeyAgent(_0x2ccb37,_0x42a9ab){var _0x385402=_['mapKeys'](_0x2ccb37,function(_0x3d4a9b,_0x5d433d){var _0x4cc418=_['isNil'](_0x3d4a9b[_0x86e6('0x28')])?util['format']('SIP/%s',_0x3d4a9b['name']):_0x3d4a9b[_0x86e6('0x28')];return _0x4cc418;});for(var _0x488e0b in _0x42a9ab){if(_0x42a9ab[_0x86e6('0x26')](_0x488e0b)){if(!_0x385402[_0x488e0b]){delete _0x42a9ab[_0x488e0b];}}}}function clearVoiceCallReports(_0xfa6a5){_0xfa6a5[_0x86e6('0x29')]=0x0;_0xfa6a5['answered']=0x0;_0xfa6a5[_0x86e6('0x2a')]=0x0;_0xfa6a5['sumDuration']=0x0;_0xfa6a5[_0x86e6('0x2b')]=0x0;}function clearCampaigns(_0x421d23){if(!_[_0x86e6('0x2c')](_0x421d23)){for(var _0x1e4922 in _0x421d23){if(_0x421d23[_0x86e6('0x26')](_0x1e4922)){_0x421d23[_0x1e4922][_0x86e6('0x2d')]=0x0;_0x421d23[_0x1e4922][_0x86e6('0x2e')]=0x0;}}}}function clearVoiceQueues(_0x286e8a){if(!_[_0x86e6('0x2c')](_0x286e8a)){for(var _0x14a75b in _0x286e8a){if(_0x286e8a[_0x86e6('0x26')](_0x14a75b)){_0x286e8a[_0x14a75b][_0x86e6('0x29')]=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x2f')]=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x30')]=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x31')]=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x2a')]=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x32')]=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x2b')]=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x33')]=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x34')]=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x35')]=0x0;_0x286e8a[_0x14a75b]['outboundCongestionCallsDay']=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x36')]=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x37')]=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x38')]=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x39')]=0x0;_0x286e8a[_0x14a75b]['outboundBlacklistCallsDay']=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x3a')]=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x3b')]=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x3c')]=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x33')]=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x3d')]=0x0;_0x286e8a[_0x14a75b][_0x86e6('0x3e')]=!![];}}}}Realtime[_0x86e6('0x3f')][_0x86e6('0x40')]=function(_0x34071a,_0x439633){for(var _0x192069 in _0x439633){if(_0x34071a['hasOwnProperty'](_0x192069)){_0x34071a[_0x192069]=_0x439633[_0x192069];}}};Realtime[_0x86e6('0x3f')][_0x86e6('0x41')]=function(){var _0x3c5a6e=this;return function(_0x12924b){if(_0x12924b){freeIsNotKeyAgent(_0x12924b,_0x3c5a6e['agents']);for(var _0x297737=0x0,_0x1865a9={},_0x4e513b={};_0x297737<_0x12924b['length'];_0x297737+=0x1){_0x1865a9=_0x12924b[_0x297737];var _0x11f892=_[_0x86e6('0x42')](_0x1865a9[_0x86e6('0x28')])?util[_0x86e6('0x43')](_0x86e6('0x44'),_0x1865a9[_0x86e6('0x45')]):_0x1865a9[_0x86e6('0x28')];if(_[_0x86e6('0x46')](_0x3c5a6e[_0x86e6('0x14')][_0x11f892])){_0x3c5a6e['agents'][_0x11f892]=new Agent(_0x1865a9);}else{_0x3c5a6e['mergeFromDatabase'](_0x3c5a6e[_0x86e6('0x14')][_0x11f892],_0x1865a9);}}}return _0x3c5a6e[_0x86e6('0x14')];};};Realtime[_0x86e6('0x3f')][_0x86e6('0x47')]=function(){var _0x2e48c3=this;return function(_0x2fa6df){if(_0x2fa6df){freeIsNotKeySip(_0x2fa6df,_0x2e48c3[_0x86e6('0x48')]);for(var _0x39a506=0x0,_0x2d25ea={},_0x3bb577={};_0x39a506<_0x2fa6df[_0x86e6('0x49')];_0x39a506+=0x1){_0x2d25ea=_0x2fa6df[_0x39a506];if(_[_0x86e6('0x46')](_0x2e48c3[_0x86e6('0x48')][util[_0x86e6('0x43')](_0x86e6('0x44'),_0x2d25ea[_0x86e6('0x45')])])){_0x2e48c3[_0x86e6('0x48')][util[_0x86e6('0x43')](_0x86e6('0x44'),_0x2d25ea[_0x86e6('0x45')])]=new Telephone(_0x2d25ea);}else{_0x2e48c3[_0x86e6('0x40')](_0x2e48c3['telephones'][util[_0x86e6('0x43')](_0x86e6('0x44'),_0x2d25ea[_0x86e6('0x45')])],_0x2d25ea);}}}return _0x2e48c3[_0x86e6('0x48')];};};Realtime[_0x86e6('0x3f')][_0x86e6('0x4a')]=function(){var _0x3aebd9=this;return function(_0x46fdab){if(_0x46fdab){freeIsNotKeySip(_0x46fdab,_0x3aebd9[_0x86e6('0x4b')]);for(var _0x2943a7=0x0,_0x3f9924={},_0x358933={};_0x2943a7<_0x46fdab['length'];_0x2943a7+=0x1){_0x3f9924=_0x46fdab[_0x2943a7];if(_[_0x86e6('0x46')](_0x3aebd9[_0x86e6('0x4b')][util[_0x86e6('0x43')](_0x86e6('0x44'),_0x3f9924[_0x86e6('0x45')])])){_0x3aebd9[_0x86e6('0x4b')][util['format'](_0x86e6('0x44'),_0x3f9924['name'])]=new Trunk(_0x3f9924);}else{_0x3aebd9[_0x86e6('0x40')](_0x3aebd9[_0x86e6('0x4b')][util[_0x86e6('0x43')](_0x86e6('0x44'),_0x3f9924[_0x86e6('0x45')])],_0x3f9924);}}}return _0x3aebd9[_0x86e6('0x4b')];};};Realtime[_0x86e6('0x3f')]['initVoiceQueues']=function(){var _0x2e8532=this;return function(_0x485427){if(_0x485427){freeIsNotKey(_0x485427,_0x2e8532[_0x86e6('0x15')],_0x86e6('0x45'));for(var _0x179392=0x0,_0x5693ff={},_0x2bede3={};_0x179392<_0x485427[_0x86e6('0x49')];_0x179392+=0x1){_0x5693ff=_0x485427[_0x179392];if(_[_0x86e6('0x46')](_0x2e8532[_0x86e6('0x15')][_0x5693ff[_0x86e6('0x45')]])){_0x2e8532[_0x86e6('0x15')][_0x5693ff[_0x86e6('0x45')]]=new VoiceQueue(_0x5693ff);}else{_0x2e8532[_0x86e6('0x40')](_0x2e8532['voiceQueues'][_0x5693ff[_0x86e6('0x45')]],_0x5693ff);}}}return _0x2e8532[_0x86e6('0x15')];};};Realtime[_0x86e6('0x3f')][_0x86e6('0x4c')]=function(){var _0x3ed601=this;return function(_0x448c71){if(_0x448c71){freeIsNotKey(_0x448c71,_0x3ed601[_0x86e6('0x16')],'id');for(var _0x4a3be5=0x0,_0x306df0={},_0x339903={};_0x4a3be5<_0x448c71[_0x86e6('0x49')];_0x4a3be5+=0x1){_0x306df0=_0x448c71[_0x4a3be5];if(_[_0x86e6('0x46')](_0x3ed601[_0x86e6('0x16')][_0x306df0['id']])){_0x3ed601[_0x86e6('0x16')][_0x306df0['id']]=new Trigger(_0x306df0);}else{_0x3ed601[_0x86e6('0x40')](_0x3ed601[_0x86e6('0x16')][_0x306df0['id']],_0x306df0);}}}return _0x3ed601[_0x86e6('0x16')];};};Realtime[_0x86e6('0x3f')]['initTemplates']=function(){var _0x4f5e07=this;return function(_0x212cfd){if(_0x212cfd){freeIsNotKey(_0x212cfd,_0x4f5e07[_0x86e6('0x17')],'id');for(var _0x544c66=0x0,_0x597361={},_0x5bad0b={};_0x544c66<_0x212cfd[_0x86e6('0x49')];_0x544c66+=0x1){_0x597361=_0x212cfd[_0x544c66];if(_[_0x86e6('0x46')](_0x4f5e07[_0x86e6('0x17')][_0x597361['id']])){_0x4f5e07['templates'][_0x597361['id']]=new Template(_0x597361);}else{_0x4f5e07[_0x86e6('0x40')](_0x4f5e07[_0x86e6('0x17')][_0x597361['id']],_0x597361);}}}return _0x4f5e07[_0x86e6('0x17')];};};Realtime[_0x86e6('0x3f')][_0x86e6('0x4d')]=function(){var _0x354eac=this;return function(_0x1ee7d4){if(_0x1ee7d4){freeIsNotKey(_0x1ee7d4,_0x354eac[_0x86e6('0x1f')],'id');for(var _0x203a8f=0x0,_0x27ac1e={},_0x58da86={};_0x203a8f<_0x1ee7d4[_0x86e6('0x49')];_0x203a8f+=0x1){_0x27ac1e=_0x1ee7d4[_0x203a8f];if(_[_0x86e6('0x46')](_0x354eac[_0x86e6('0x1f')][_0x27ac1e['id']])){_0x354eac['zendeskAccounts'][_0x27ac1e['id']]=new ZendeskAccount(_0x27ac1e);}else{_0x354eac[_0x86e6('0x40')](_0x354eac['zendeskAccounts'][_0x27ac1e['id']],_0x27ac1e);}}}return _0x354eac[_0x86e6('0x1f')];};};Realtime[_0x86e6('0x3f')][_0x86e6('0x4e')]=function(){var _0xb5c505=this;return function(_0x161ec6){if(_0x161ec6){freeIsNotKey(_0x161ec6,_0xb5c505[_0x86e6('0x4f')],'id');for(var _0x4ce283=0x0,_0x3b11f9={},_0x251dd1={};_0x4ce283<_0x161ec6[_0x86e6('0x49')];_0x4ce283+=0x1){_0x3b11f9=_0x161ec6[_0x4ce283];if(_[_0x86e6('0x46')](_0xb5c505[_0x86e6('0x4f')][_0x3b11f9['id']])){_0xb5c505[_0x86e6('0x4f')][_0x3b11f9['id']]=new SalesforceAccount(_0x3b11f9);}else{_0xb5c505[_0x86e6('0x40')](_0xb5c505[_0x86e6('0x4f')][_0x3b11f9['id']],_0x3b11f9);}}}return _0xb5c505[_0x86e6('0x4f')];};};Realtime[_0x86e6('0x3f')][_0x86e6('0x50')]=function(){var _0x339d9e=this;return function(_0x56cbdb){if(_0x56cbdb){freeIsNotKey(_0x56cbdb,_0x339d9e[_0x86e6('0x51')],'id');for(var _0x5f5a2e=0x0,_0x401591={},_0x17911c={};_0x5f5a2e<_0x56cbdb[_0x86e6('0x49')];_0x5f5a2e+=0x1){_0x401591=_0x56cbdb[_0x5f5a2e];if(_[_0x86e6('0x46')](_0x339d9e[_0x86e6('0x51')][_0x401591['id']])){_0x339d9e[_0x86e6('0x51')][_0x401591['id']]=new FreshdeskAccount(_0x401591);}else{_0x339d9e[_0x86e6('0x40')](_0x339d9e['freshdeskAccounts'][_0x401591['id']],_0x401591);}}}return _0x339d9e[_0x86e6('0x51')];};};Realtime['prototype'][_0x86e6('0x52')]=function(){var _0x30d15a=this;return function(_0x1f68be){if(_0x1f68be){freeIsNotKey(_0x1f68be,_0x30d15a['zohoAccounts'],'id');for(var _0x962c3c=0x0,_0x305518={},_0x279e38={};_0x962c3c<_0x1f68be['length'];_0x962c3c+=0x1){_0x305518=_0x1f68be[_0x962c3c];if(_['isUndefined'](_0x30d15a['zohoAccounts'][_0x305518['id']])){_0x30d15a[_0x86e6('0x53')][_0x305518['id']]=new ZohoAccount(_0x305518);}else{_0x30d15a['mergeFromDatabase'](_0x30d15a['zohoAccounts'][_0x305518['id']],_0x305518);}}}return _0x30d15a[_0x86e6('0x53')];};};Realtime[_0x86e6('0x3f')]['initDeskAccounts']=function(){var _0xaf2fc1=this;return function(_0x25b500){if(_0x25b500){freeIsNotKey(_0x25b500,_0xaf2fc1[_0x86e6('0x54')],'id');for(var _0x3ca713=0x0,_0xef716b={},_0xac9c2f={};_0x3ca713<_0x25b500[_0x86e6('0x49')];_0x3ca713+=0x1){_0xef716b=_0x25b500[_0x3ca713];if(_[_0x86e6('0x46')](_0xaf2fc1[_0x86e6('0x54')][_0xef716b['id']])){_0xaf2fc1[_0x86e6('0x54')][_0xef716b['id']]=new DeskAccount(_0xef716b);}else{_0xaf2fc1[_0x86e6('0x40')](_0xaf2fc1[_0x86e6('0x54')][_0xef716b['id']],_0xef716b);}}}return _0xaf2fc1[_0x86e6('0x54')];};};Realtime[_0x86e6('0x3f')][_0x86e6('0x55')]=function(){var _0x199e74=this;return function(_0x6f82f4){if(_0x6f82f4){freeIsNotKey(_0x6f82f4,_0x199e74['sugarcrmAccounts'],'id');for(var _0x284b52=0x0,_0x52fc50={},_0x25565c={};_0x284b52<_0x6f82f4[_0x86e6('0x49')];_0x284b52+=0x1){_0x52fc50=_0x6f82f4[_0x284b52];if(_[_0x86e6('0x46')](_0x199e74[_0x86e6('0x20')][_0x52fc50['id']])){_0x199e74[_0x86e6('0x20')][_0x52fc50['id']]=new SugarcrmAccount(_0x52fc50);}else{_0x199e74[_0x86e6('0x40')](_0x199e74[_0x86e6('0x20')][_0x52fc50['id']],_0x52fc50);}}}return _0x199e74[_0x86e6('0x20')];};};Realtime[_0x86e6('0x3f')][_0x86e6('0x56')]=function(){var _0x5eca15=this;return function(_0x30df77){if(_0x30df77){freeIsNotKey(_0x30df77,_0x5eca15[_0x86e6('0x21')],'id');for(var _0x508e1d=0x0,_0x1680c4={},_0x218a93={};_0x508e1d<_0x30df77[_0x86e6('0x49')];_0x508e1d+=0x1){_0x1680c4=_0x30df77[_0x508e1d];if(_[_0x86e6('0x46')](_0x5eca15[_0x86e6('0x21')][_0x1680c4['id']])){_0x5eca15[_0x86e6('0x21')][_0x1680c4['id']]=new VtigerAccount(_0x1680c4);}else{_0x5eca15[_0x86e6('0x40')](_0x5eca15[_0x86e6('0x21')][_0x1680c4['id']],_0x1680c4);}}}return _0x5eca15[_0x86e6('0x21')];};};Realtime[_0x86e6('0x3f')][_0x86e6('0x57')]=function(){var _0x41126d=this;return function(_0x48cf0b){if(_0x48cf0b){freeIsNotKey(_0x48cf0b,_0x41126d['servicenowAccounts'],'id');for(var _0x4ada38=0x0,_0x288fd6={},_0x1e49bd={};_0x4ada38<_0x48cf0b['length'];_0x4ada38+=0x1){_0x288fd6=_0x48cf0b[_0x4ada38];if(_[_0x86e6('0x46')](_0x41126d[_0x86e6('0x22')][_0x288fd6['id']])){_0x41126d[_0x86e6('0x22')][_0x288fd6['id']]=new ServicenowAccount(_0x288fd6);}else{_0x41126d[_0x86e6('0x40')](_0x41126d[_0x86e6('0x22')][_0x288fd6['id']],_0x288fd6);}}}return _0x41126d[_0x86e6('0x22')];};};Realtime['prototype'][_0x86e6('0x58')]=function(){var _0x506da7=this;return function(_0x1b7209){if(_0x1b7209){freeIsNotKey(_0x1b7209,_0x506da7[_0x86e6('0x23')],'id');for(var _0xe77466=0x0,_0x2ec82f={},_0x399515={};_0xe77466<_0x1b7209['length'];_0xe77466+=0x1){_0x2ec82f=_0x1b7209[_0xe77466];if(_[_0x86e6('0x46')](_0x506da7[_0x86e6('0x23')][_0x2ec82f['id']])){_0x506da7[_0x86e6('0x23')][_0x2ec82f['id']]=new Dynamics365Account(_0x2ec82f);}else{_0x506da7[_0x86e6('0x40')](_0x506da7[_0x86e6('0x23')][_0x2ec82f['id']],_0x2ec82f);}}}return _0x506da7[_0x86e6('0x23')];};};Realtime[_0x86e6('0x3f')][_0x86e6('0x59')]=function(){var _0x3fb94a=this;return function(_0x2d56a6){if(_0x2d56a6){freeIsNotKey(_0x2d56a6,_0x3fb94a[_0x86e6('0x24')],'id');for(var _0x6bcdcd=0x0,_0x45a0a4={},_0x56d808={};_0x6bcdcd<_0x2d56a6[_0x86e6('0x49')];_0x6bcdcd+=0x1){_0x45a0a4=_0x2d56a6[_0x6bcdcd];if(_[_0x86e6('0x46')](_0x3fb94a[_0x86e6('0x24')][_0x45a0a4['id']])){_0x3fb94a[_0x86e6('0x24')][_0x45a0a4['id']]=new FreshsalesAccount(_0x45a0a4);}else{_0x3fb94a[_0x86e6('0x40')](_0x3fb94a[_0x86e6('0x24')][_0x45a0a4['id']],_0x45a0a4);}}}return _0x3fb94a[_0x86e6('0x24')];};};Realtime[_0x86e6('0x3f')][_0x86e6('0x5a')]=function(){var _0x4dc926=this;return function(_0x5e97fa){for(var _0x2451d0=0x0;_0x2451d0<_0x5e97fa['length'];_0x2451d0+=0x1){_['merge'](_0x4dc926['voiceQueues'][_0x5e97fa[_0x2451d0][_0x86e6('0x45')]],_0x5e97fa[_0x2451d0]);}return _0x4dc926[_0x86e6('0x15')];};};Realtime['prototype']['initVoiceQueueReports']=function(){var _0x36ed23=this;return function(_0xe26a5a){clearVoiceQueues(_0x36ed23['voiceQueues']);if(_0xe26a5a){_0xe26a5a=_['groupBy'](_0xe26a5a,_0x86e6('0x5b'));for(var _0x40bef9 in _0xe26a5a){if(_0xe26a5a[_0x86e6('0x26')](_0x40bef9)){var _0x63df13={};for(var _0x48e316=0x0;_0x48e316<_0xe26a5a[_0x40bef9][_0x86e6('0x49')];_0x48e316+=0x1){var _0x174942=_0xe26a5a[_0x40bef9][_0x48e316][_0x86e6('0x5c')];if(_0x36ed23[_0x86e6('0x15')][_0x174942]){if(_0xe26a5a[_0x40bef9][_0x48e316][_0x86e6('0x5d')]){_0x36ed23[_0x86e6('0x15')][_0x174942][_0x86e6('0x30')]+=0x1;}if(_0xe26a5a[_0x40bef9][_0x48e316][_0x86e6('0x5e')]){_0x36ed23[_0x86e6('0x15')][_0x174942][_0x86e6('0x31')]+=0x1;}_0x36ed23[_0x86e6('0x15')][_0x174942][_0x86e6('0x2a')]+=moment(_0xe26a5a[_0x40bef9][_0x48e316]['queuecallerleaveAt'])[_0x86e6('0x5f')](moment(_0xe26a5a[_0x40bef9][_0x48e316][_0x86e6('0x60')]),'seconds')||0x0;if(_0x48e316===_0xe26a5a[_0x40bef9][_0x86e6('0x49')]-0x1){_0x36ed23['voiceQueues'][_0x174942][_0x86e6('0x32')]+=moment(_0xe26a5a[_0x40bef9][_0x48e316][_0x86e6('0x61')]||_0xe26a5a[_0x40bef9][_0x48e316][_0x86e6('0x62')]||_0xe26a5a[_0x40bef9][_0x48e316]['queuecallerexitAt'])[_0x86e6('0x5f')](moment(_0xe26a5a[_0x40bef9][_0x48e316][_0x86e6('0x60')]),'seconds')||0x0;_0x36ed23[_0x86e6('0x15')][_0x174942][_0x86e6('0x29')]+=0x1;if(_0xe26a5a[_0x40bef9][_0x48e316][_0x86e6('0x63')]){_0x36ed23[_0x86e6('0x15')][_0x174942][_0x86e6('0x2f')]+=0x1;_0x36ed23[_0x86e6('0x15')][_0x174942][_0x86e6('0x2b')]+=moment(_0xe26a5a[_0x40bef9][_0x48e316][_0x86e6('0x61')])[_0x86e6('0x5f')](moment(_0xe26a5a[_0x40bef9][_0x48e316][_0x86e6('0x64')]),_0x86e6('0x65'))||0x0;}}else{_0x36ed23[_0x86e6('0x15')][_0x174942]['sumDuration']+=_0x36ed23['voiceQueues'][_0x174942][_0x86e6('0x2a')]||0x0;}}}}}}return _0x36ed23[_0x86e6('0x15')];};};Realtime[_0x86e6('0x3f')][_0x86e6('0x66')]=function(){var _0x44f66e=this;return function(_0x46e6f1){clearVoiceCallReports(_0x44f66e['outbound']);if(_0x46e6f1){for(var _0x1fe910=0x0;_0x1fe910<_0x46e6f1[_0x86e6('0x49')];_0x1fe910+=0x1){_0x44f66e[_0x86e6('0x18')][_0x86e6('0x29')]+=0x1;_0x44f66e['outbound'][_0x86e6('0x32')]+=_0x46e6f1[_0x1fe910][_0x86e6('0x67')];if(_0x46e6f1[_0x1fe910][_0x86e6('0x68')]===_0x86e6('0x69')){_0x44f66e['outbound'][_0x86e6('0x2f')]+=0x1;_0x44f66e[_0x86e6('0x18')][_0x86e6('0x2a')]+=_0x46e6f1[_0x1fe910][_0x86e6('0x67')]-_0x46e6f1[_0x1fe910]['billableseconds']||0x0;_0x44f66e[_0x86e6('0x18')][_0x86e6('0x2b')]+=_0x46e6f1[_0x1fe910][_0x86e6('0x6a')];}}}return _0x44f66e['outbound'];};};Realtime[_0x86e6('0x3f')][_0x86e6('0x6b')]=function(){var _0x4b2755=this;return function(_0x13cf14){if(_0x13cf14){freeIsNotKey(_0x13cf14,_0x4b2755[_0x86e6('0x6c')],_0x86e6('0x45'));for(var _0x89d17=0x0,_0x5cc315={};_0x89d17<_0x13cf14['length'];_0x89d17+=0x1){_0x5cc315=_0x13cf14[_0x89d17];if(_['isUndefined'](_0x4b2755[_0x86e6('0x6c')][_0x5cc315[_0x86e6('0x45')]])){_0x4b2755['campaigns'][_0x5cc315[_0x86e6('0x45')]]=new Campaign(_0x5cc315);}else{_0x4b2755[_0x86e6('0x40')](_0x4b2755[_0x86e6('0x6c')][_0x5cc315[_0x86e6('0x45')]],_0x5cc315);_0x4b2755[_0x86e6('0x6c')][_0x5cc315[_0x86e6('0x45')]][_0x86e6('0x6d')]=_0x5cc315[_0x86e6('0x6e')]?_0x5cc315[_0x86e6('0x6e')][_0x86e6('0x45')]:undefined;}}}return _0x4b2755[_0x86e6('0x6c')];};};Realtime[_0x86e6('0x3f')][_0x86e6('0x6f')]=function(){var _0xd28a64=this;return function(_0x1e7103){if(_0x1e7103){freeIsNotKey(_0x1e7103,_0xd28a64[_0x86e6('0x19')],'id');for(var _0x3e8b94=0x0,_0x441a93={};_0x3e8b94<_0x1e7103[_0x86e6('0x49')];_0x3e8b94+=0x1){_0x441a93=_0x1e7103[_0x3e8b94];if(_['isUndefined'](_0xd28a64[_0x86e6('0x19')][_0x441a93['id']])){_0xd28a64[_0x86e6('0x19')][_0x441a93['id']]=new VoiceExtension(_0x441a93);}else{_0xd28a64[_0x86e6('0x40')](_0xd28a64['voiceExtensions'][_0x441a93['id']],_0x441a93);}}}return _0xd28a64['voiceExtensions'];};};Realtime[_0x86e6('0x3f')][_0x86e6('0x70')]=function(){var _0x278de0=this;return function(_0x3ee3c8){clearCampaigns(_0x278de0[_0x86e6('0x6c')]);for(var _0x5a1030=0x0;_0x5a1030<_0x3ee3c8['length'];_0x5a1030+=0x1){_[_0x86e6('0x71')](_0x278de0[_0x86e6('0x6c')][_0x3ee3c8[_0x5a1030][_0x86e6('0x45')]],_0x3ee3c8[_0x5a1030]);}return _0x278de0[_0x86e6('0x6c')];};};Realtime[_0x86e6('0x3f')]['initFaxAccounts']=function(){var _0x15155f=this;return function(_0x3af328){if(_0x3af328){freeIsNotKey(_0x3af328,_0x15155f['faxAccounts'],'id');for(var _0x246c08=0x0,_0x1664e5={},_0x16fb5c={};_0x246c08<_0x3af328[_0x86e6('0x49')];_0x246c08+=0x1){_0x1664e5=_0x3af328[_0x246c08];if(_[_0x86e6('0x46')](_0x15155f['faxAccounts'][_0x1664e5['id']])){_0x15155f[_0x86e6('0x25')][_0x1664e5['id']]=new FaxAccount(_0x1664e5);}else{_0x15155f[_0x86e6('0x40')](_0x15155f['faxAccounts'][_0x1664e5['id']],_0x1664e5);}}}return _0x15155f[_0x86e6('0x25')];};};module[_0x86e6('0x72')]=Realtime;
\ No newline at end of file
index de7b369..f29747c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c15=['blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','find','accountcode','name','isNil','format','SIP/%s','length','lastAssignedTo','interface','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','match','keys','getCallType','split','getAgentByInternal','calleridnum','outbound','internal','destination','exten','type','dialer','lastapplication','lastdata','queue','from-voip-provider','context','from-sip','xcally-motion-preview','calleridpreview','originatecalleridnum','channel','callerid','disposition','ANSWERED','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','UserId','membername','monitor','monitors','monitorFilename','filename','createdAt','xcally-motion-dialer','voiceAgentReport','forEach','voiceDialReport','startsWith','Local','substring','indexOf','mobile','transfererlinkedid','exports','lodash','moment','util','../../../config/environment','../rpc/voiceCallReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','realtime','agents','telephones','prototype','sync','xdr','disabled','bind','voiceCallReport','custom:voiceAgentReport','custom:voiceDialReport'];(function(_0x3d8c25,_0x2bdcea){var _0xfd0121=function(_0x2da596){while(--_0x2da596){_0x3d8c25['push'](_0x3d8c25['shift']());}};_0xfd0121(++_0x2bdcea);}(_0x1c15,0x1be));var _0x51c1=function(_0x129216,_0x5c208d){_0x129216=_0x129216-0x0;var _0x2a0306=_0x1c15[_0x129216];return _0x2a0306;};'use strict';var _=require(_0x51c1('0x0'));var moment=require(_0x51c1('0x1'));var util=require(_0x51c1('0x2'));var config=require(_0x51c1('0x3'));var ami=require('../ami');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0x51c1('0x4'));var RpcVoiceDialReport=require('../rpc/voiceDialReport');var RpcMemberReport=require(_0x51c1('0x5'));var RpcVoiceQueueReport=require(_0x51c1('0x6'));var RpcVoiceRecording=require(_0x51c1('0x7'));var RpcVoiceTransferReport=require(_0x51c1('0x8'));var VoiceQueueReport=require(_0x51c1('0x9'));var VoiceCallReport=require(_0x51c1('0xa'));var VoiceAgentReport=require(_0x51c1('0xb'));var VoiceDialReport=require(_0x51c1('0xc'));var UserReport=require('./userReport');function Report(_0x2ebe49){this[_0x51c1('0xd')]=_0x2ebe49;this[_0x51c1('0xe')]=_0x2ebe49[_0x51c1('0xe')];this[_0x51c1('0xf')]=_0x2ebe49['telephones'];}Report[_0x51c1('0x10')][_0x51c1('0x11')]=function(_0x1075b6){var _0x55a77e=new VoiceQueueReport(this[_0x51c1('0xd')]);var _0x1bfa0b=new VoiceAgentReport(this[_0x51c1('0xd')]);var _0x2214f9=new VoiceDialReport(this[_0x51c1('0xd')]);var _0x41011=new VoiceCallReport(this['realtime']);var _0x5c2527=new UserReport(this[_0x51c1('0xd')]);if(config[_0x51c1('0x12')]&&config[_0x51c1('0x12')][_0x51c1('0x13')]){ami['on']('custom:voiceQueueReport',this['voiceQueueReport'][_0x51c1('0x14')](this));ami['on']('custom:voiceCallReport',this[_0x51c1('0x15')][_0x51c1('0x14')](this));ami['on'](_0x51c1('0x16'),this['voiceAgentReport'][_0x51c1('0x14')](this));ami['on'](_0x51c1('0x17'),this['voiceDialReport']['bind'](this));ami['on'](_0x51c1('0x18'),this[_0x51c1('0x19')][_0x51c1('0x14')](this));ami['on'](_0x51c1('0x1a'),this[_0x51c1('0x1b')][_0x51c1('0x14')](this));}};Report['prototype'][_0x51c1('0x1c')]=function(_0x53877e){var _0x41ca98;_0x41ca98=_[_0x51c1('0x1d')](this[_0x51c1('0xe')],function(_0x1b2cb7){return _0x1b2cb7[_0x51c1('0x1e')]==_0x53877e||_0x1b2cb7[_0x51c1('0x1f')]==_0x53877e;});if(_[_0x51c1('0x20')](_0x41ca98)){var _0x1bc2af=_[_0x51c1('0x1d')](this[_0x51c1('0xf')],function(_0x520c8d){return _0x520c8d['accountcode']==_0x53877e||_0x520c8d[_0x51c1('0x1f')]==_0x53877e;});if(_0x1bc2af){_0x41ca98=_[_0x51c1('0x1d')](this[_0x51c1('0xe')],function(_0x1a520d){return _0x1a520d['interface']==util[_0x51c1('0x21')](_0x51c1('0x22'),_0x1bc2af[_0x51c1('0x1f')]);});}}return _0x41ca98;};Report[_0x51c1('0x10')]['voiceQueueReport']=function(_0x1a2010){for(var _0x596338=0x0;_0x596338<_0x1a2010[_0x51c1('0x23')];_0x596338+=0x1){var _0xe1bcc4=this[_0x51c1('0x1c')](_0x1a2010[_0x596338]['connectedlinenum']);if(_0xe1bcc4){_0x1a2010[_0x596338][_0x51c1('0x1e')]=_0xe1bcc4[_0x51c1('0x1e')];_0x1a2010[_0x596338]['assigned']=!![];_0x1a2010[_0x596338][_0x51c1('0x24')]=_0xe1bcc4['name'];_0x1a2010[_0x596338][_0x51c1('0x25')]=_['isNil'](_0xe1bcc4[_0x51c1('0x25')])?util[_0x51c1('0x21')]('SIP/%s',_0xe1bcc4[_0x51c1('0x1f')]):_0xe1bcc4[_0x51c1('0x25')];if(_0x1a2010[_0x596338][_0x51c1('0x26')]){_0x1a2010[_0x596338][_0x51c1('0x27')]=moment()['format'](_0x51c1('0x28'));}if(_0x1a2010[_0x596338][_0x51c1('0x29')]){_0x1a2010[_0x596338][_0x51c1('0x2a')]=moment()[_0x51c1('0x21')]('YYYY-MM-DD\x20HH:mm:ss');}RpcMemberReport['voiceQueueReport'](_0x1a2010[_0x596338]);}RpcVoiceQueueReport[_0x51c1('0x2b')](_0x1a2010[_0x596338]);}};function extractCalleridNumber(_0x42767b){var _0x172907=_0x42767b[_0x51c1('0x2c')](/<(.*?)>/);return _0x172907?_0x172907[0x1]:_0x42767b;}Report[_0x51c1('0x10')]['getAgentByInternal']=function(_0x1cc22c){for(var _0x58b48=0x0;_0x58b48<Object[_0x51c1('0x2d')](this[_0x51c1('0xe')])[_0x51c1('0x23')];_0x58b48++){var _0x91f591=Object[_0x51c1('0x2d')](this[_0x51c1('0xe')])[_0x58b48];var _0x1f374c=this[_0x51c1('0xe')][_0x91f591];if(_0x1f374c[_0x51c1('0x1e')]===Number(_0x1cc22c))return _0x1f374c;}return null;};Report[_0x51c1('0x10')][_0x51c1('0x2e')]=function(_0x4e52c2){var _0x26183a=_0x4e52c2['channel'][_0x51c1('0x2f')]('-')[0x0];var _0x2b8baa=this[_0x51c1('0xe')][_0x26183a];if(!_0x2b8baa)_0x2b8baa=this[_0x51c1('0x30')](_0x4e52c2[_0x51c1('0x31')]);return!_0x2b8baa?_0x51c1('0x32'):_0x51c1('0x33');};Report['prototype']['voiceCallReport']=function(_0x9cd044){_0x9cd044['destination']=_0x9cd044[_0x51c1('0x34')]||_0x9cd044[_0x51c1('0x35')];if(_0x9cd044[_0x51c1('0x36')]==_0x51c1('0x37')){_0x9cd044[_0x51c1('0x38')]='queue';_0x9cd044[_0x51c1('0x39')]=_0x9cd044[_0x51c1('0x3a')];if(_0x9cd044['context']==_0x51c1('0x3b')){_0x9cd044['accountcode']='';_0x9cd044[_0x51c1('0x34')]=extractCalleridNumber(_0x9cd044['callerid']);}else if(_0x9cd044[_0x51c1('0x3c')]==_0x51c1('0x3d')){if(_0x9cd044['destination']==_0x51c1('0x3e')){_0x9cd044[_0x51c1('0x34')]=extractCalleridNumber(_0x9cd044[_0x51c1('0x3f')]);_0x9cd044['calleridnum']=_0x9cd044[_0x51c1('0x40')];_0x9cd044['destinationchannel']=[_0x9cd044[_0x51c1('0x41')],_0x9cd044[_0x51c1('0x41')]=_0x9cd044['destinationchannel']][0x0];_0x9cd044[_0x51c1('0x42')]=_0x9cd044[_0x51c1('0x3f')];}else{_0x9cd044['destination']=_0x9cd044[_0x51c1('0x31')];_0x9cd044[_0x51c1('0x31')]=_0x9cd044[_0x51c1('0x40')];if(_0x9cd044[_0x51c1('0x43')]==_0x51c1('0x44')){_0x9cd044[_0x51c1('0x1e')]=_0x9cd044[_0x51c1('0x45')];}else{_0x9cd044['accountcode']='';}}}}else{_0x9cd044[_0x51c1('0x42')]=util[_0x51c1('0x21')](_0x51c1('0x46'),_0x9cd044[_0x51c1('0x47')],_0x9cd044[_0x51c1('0x31')]);}if(RpcVoiceTransferReport[_0x51c1('0x48')][_0x9cd044[_0x51c1('0x49')]]){var _0x1c2d69=RpcVoiceTransferReport[_0x51c1('0x48')][_0x9cd044[_0x51c1('0x49')]];_0x1c2d69[_0x51c1('0x4a')]=_0x9cd044[_0x51c1('0x4b')];RpcVoiceTransferReport[_0x51c1('0x19')](_0x1c2d69);delete RpcVoiceTransferReport['transfers'][_0x9cd044['linkedid']];}if(_['isNil'](_0x9cd044[_0x51c1('0x36')])){_0x9cd044['type']=this[_0x51c1('0x2e')](_0x9cd044);}if(_[_0x51c1('0x20')](_0x9cd044[_0x51c1('0x4c')])){var _0x1ea704=_0x9cd044['channel']['split']('-')[0x0];var _0x575126=this[_0x51c1('0xe')][_0x1ea704];if(!_0x575126)_0x575126=this[_0x51c1('0x30')](_0x9cd044[_0x51c1('0x1e')]);if(_0x575126){_0x9cd044[_0x51c1('0x4c')]=_0x575126['id'];_0x9cd044[_0x51c1('0x4d')]=_0x575126[_0x51c1('0x1f')];}}RpcVoiceCallReport['create'](_0x9cd044);if(_0x9cd044[_0x51c1('0x4e')]){for(var _0xb866a7=0x0;_0xb866a7<_0x9cd044[_0x51c1('0x4f')][_0x51c1('0x23')];_0xb866a7+=0x1){_0x9cd044[_0x51c1('0x50')]=_0x9cd044[_0x51c1('0x4f')][_0xb866a7][_0x51c1('0x51')];_0x9cd044[_0x51c1('0x52')]=_0x9cd044[_0x51c1('0x4f')][_0xb866a7][_0x51c1('0x52')];if(_0x9cd044['exten']==_0x51c1('0x3e')){_0x9cd044[_0x51c1('0x31')]=_0x9cd044[_0x51c1('0x45')];_0x9cd044[_0x51c1('0x47')]=_0x9cd044['connectedlinename'];_0x9cd044[_0x51c1('0x45')]=_0x9cd044['accountcode'];_0x9cd044['connectedlinename']=_0x9cd044[_0x51c1('0x4d')];_0x9cd044[_0x51c1('0x35')]=_0x9cd044[_0x51c1('0x40')];}else if(_0x9cd044[_0x51c1('0x35')]==_0x51c1('0x53')){_0x9cd044[_0x51c1('0x31')]=_0x9cd044['destination'];_0x9cd044[_0x51c1('0x35')]=_0x9cd044['originatecalleridnum'];}RpcVoiceRecording['create'](_0x9cd044);}}};Report[_0x51c1('0x10')][_0x51c1('0x54')]=function(_0x45f285){if(_['isArray'](_0x45f285)){_0x45f285[_0x51c1('0x55')](function(_0x2b0c9a){RpcVoiceAgentReport['create'](_0x2b0c9a);});}else{RpcVoiceAgentReport[_0x51c1('0x2b')](_0x45f285);}};Report[_0x51c1('0x10')][_0x51c1('0x56')]=function(_0x2951a6){RpcVoiceDialReport[_0x51c1('0x2b')](_0x2951a6);var _0x57a0ed;var _0x1aae62;var _0x166a93=_0x2951a6[_0x51c1('0x41')];if(_[_0x51c1('0x57')](_0x166a93,_0x51c1('0x58'))){_0x1aae62=_0x166a93[_0x51c1('0x59')](_0x166a93['indexOf']('/')+0x1,_0x166a93[_0x51c1('0x5a')]('@'));_0x57a0ed=_[_0x51c1('0x1d')](this['agents'],function(_0xad5949){return _0xad5949[_0x51c1('0x5b')]==_0x1aae62||_0xad5949['phone']==_0x1aae62||_0xad5949[_0x51c1('0x1e')]==_0x1aae62;});}else{_0x1aae62=_0x166a93[_0x51c1('0x59')](_0x166a93['indexOf']('/')+0x1,_0x166a93['lastIndexOf']('-'));_0x57a0ed=this['findAgent'](_0x1aae62);}if(_0x57a0ed){_0x2951a6[_0x51c1('0x25')]=_['isNil'](_0x57a0ed[_0x51c1('0x25')])?util[_0x51c1('0x21')](_0x51c1('0x22'),_0x57a0ed[_0x51c1('0x1f')]):_0x57a0ed[_0x51c1('0x25')];_0x2951a6[_0x51c1('0x4d')]=_0x57a0ed[_0x51c1('0x1f')];_0x2951a6[_0x51c1('0x1e')]=_0x57a0ed[_0x51c1('0x1e')];RpcMemberReport['voiceDialReport'](_0x2951a6);}};Report['prototype']['blindTransfer']=function(_0x4fecfb){RpcVoiceTransferReport[_0x51c1('0x48')][_0x4fecfb[_0x51c1('0x5c')]]=_0x4fecfb;};Report['prototype'][_0x51c1('0x1b')]=function(_0x4d9021){RpcVoiceTransferReport[_0x51c1('0x1b')](_0x4d9021);};module[_0x51c1('0x5d')]=Report;
\ No newline at end of file
+var _0x1cfb=['membername','monitor','monitorFilename','monitors','filename','createdAt','calleridname','connectedlinename','xcally-motion-dialer','isArray','forEach','voiceDialReport','startsWith','Local','substring','indexOf','mobile','phone','lastIndexOf','transfererlinkedid','moment','util','../../../config/environment','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','prototype','sync','xdr','custom:voiceQueueReport','voiceQueueReport','custom:voiceCallReport','voiceCallReport','voiceAgentReport','custom:voiceDialReport','bind','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','find','accountcode','name','isNil','interface','format','SIP/%s','length','connectedlinenum','assigned','lastAssignedTo','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitAt','create','match','getAgentByInternal','keys','getCallType','channel','calleridnum','internal','destination','exten','type','dialer','lastapplication','queue','context','from-sip','xcally-motion-preview','calleridpreview','originatecalleridnum','destinationchannel','callerid','disposition','\x22%s\x22\x20<%s>','transfers','linkedid','transfereelinkedid','uniqueid','split','UserId'];(function(_0x301e1f,_0x91b879){var _0x2b3063=function(_0x5880ea){while(--_0x5880ea){_0x301e1f['push'](_0x301e1f['shift']());}};_0x2b3063(++_0x91b879);}(_0x1cfb,0x18c));var _0xb1cf=function(_0x736a72,_0x574f49){_0x736a72=_0x736a72-0x0;var _0x3741ad=_0x1cfb[_0x736a72];return _0x3741ad;};'use strict';var _=require('lodash');var moment=require(_0xb1cf('0x0'));var util=require(_0xb1cf('0x1'));var config=require(_0xb1cf('0x2'));var ami=require('../ami');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0xb1cf('0x3'));var RpcVoiceDialReport=require(_0xb1cf('0x4'));var RpcMemberReport=require('../rpc/memberReport');var RpcVoiceQueueReport=require(_0xb1cf('0x5'));var RpcVoiceRecording=require(_0xb1cf('0x6'));var RpcVoiceTransferReport=require(_0xb1cf('0x7'));var VoiceQueueReport=require(_0xb1cf('0x8'));var VoiceCallReport=require('./voiceCallReport');var VoiceAgentReport=require(_0xb1cf('0x9'));var VoiceDialReport=require(_0xb1cf('0xa'));var UserReport=require(_0xb1cf('0xb'));function Report(_0x444324){this[_0xb1cf('0xc')]=_0x444324;this[_0xb1cf('0xd')]=_0x444324[_0xb1cf('0xd')];this[_0xb1cf('0xe')]=_0x444324[_0xb1cf('0xe')];}Report[_0xb1cf('0xf')][_0xb1cf('0x10')]=function(_0x446c33){var _0x3adc5d=new VoiceQueueReport(this[_0xb1cf('0xc')]);var _0x452152=new VoiceAgentReport(this['realtime']);var _0x18bb14=new VoiceDialReport(this[_0xb1cf('0xc')]);var _0x32ae1a=new VoiceCallReport(this[_0xb1cf('0xc')]);var _0xc2fd74=new UserReport(this['realtime']);if(config['xdr']&&config[_0xb1cf('0x11')]['disabled']){ami['on'](_0xb1cf('0x12'),this[_0xb1cf('0x13')]['bind'](this));ami['on'](_0xb1cf('0x14'),this[_0xb1cf('0x15')]['bind'](this));ami['on']('custom:voiceAgentReport',this[_0xb1cf('0x16')]['bind'](this));ami['on'](_0xb1cf('0x17'),this['voiceDialReport'][_0xb1cf('0x18')](this));ami['on'](_0xb1cf('0x19'),this[_0xb1cf('0x1a')][_0xb1cf('0x18')](this));ami['on'](_0xb1cf('0x1b'),this[_0xb1cf('0x1c')]['bind'](this));}};Report[_0xb1cf('0xf')][_0xb1cf('0x1d')]=function(_0x49f776){var _0x200a8f;_0x200a8f=_[_0xb1cf('0x1e')](this[_0xb1cf('0xd')],function(_0x286fa7){return _0x286fa7[_0xb1cf('0x1f')]==_0x49f776||_0x286fa7[_0xb1cf('0x20')]==_0x49f776;});if(_[_0xb1cf('0x21')](_0x200a8f)){var _0x2f17cd=_['find'](this[_0xb1cf('0xe')],function(_0x4328b7){return _0x4328b7[_0xb1cf('0x1f')]==_0x49f776||_0x4328b7[_0xb1cf('0x20')]==_0x49f776;});if(_0x2f17cd){_0x200a8f=_[_0xb1cf('0x1e')](this[_0xb1cf('0xd')],function(_0x5b43a6){return _0x5b43a6[_0xb1cf('0x22')]==util[_0xb1cf('0x23')](_0xb1cf('0x24'),_0x2f17cd[_0xb1cf('0x20')]);});}}return _0x200a8f;};Report[_0xb1cf('0xf')]['voiceQueueReport']=function(_0x3dbf3a){for(var _0x3efbf2=0x0;_0x3efbf2<_0x3dbf3a[_0xb1cf('0x25')];_0x3efbf2+=0x1){var _0x1a9cb1=this[_0xb1cf('0x1d')](_0x3dbf3a[_0x3efbf2][_0xb1cf('0x26')]);if(_0x1a9cb1){_0x3dbf3a[_0x3efbf2]['accountcode']=_0x1a9cb1[_0xb1cf('0x1f')];_0x3dbf3a[_0x3efbf2][_0xb1cf('0x27')]=!![];_0x3dbf3a[_0x3efbf2][_0xb1cf('0x28')]=_0x1a9cb1[_0xb1cf('0x20')];_0x3dbf3a[_0x3efbf2]['interface']=_['isNil'](_0x1a9cb1[_0xb1cf('0x22')])?util[_0xb1cf('0x23')](_0xb1cf('0x24'),_0x1a9cb1[_0xb1cf('0x20')]):_0x1a9cb1[_0xb1cf('0x22')];if(_0x3dbf3a[_0x3efbf2][_0xb1cf('0x29')]){_0x3dbf3a[_0x3efbf2][_0xb1cf('0x2a')]=moment()['format'](_0xb1cf('0x2b'));}if(_0x3dbf3a[_0x3efbf2]['queuecallerexit']){_0x3dbf3a[_0x3efbf2][_0xb1cf('0x2c')]=moment()[_0xb1cf('0x23')](_0xb1cf('0x2b'));}RpcMemberReport[_0xb1cf('0x13')](_0x3dbf3a[_0x3efbf2]);}RpcVoiceQueueReport[_0xb1cf('0x2d')](_0x3dbf3a[_0x3efbf2]);}};function extractCalleridNumber(_0x545525){var _0x376d98=_0x545525[_0xb1cf('0x2e')](/<(.*?)>/);return _0x376d98?_0x376d98[0x1]:_0x545525;}Report['prototype'][_0xb1cf('0x2f')]=function(_0x341b57){for(var _0x32ea60=0x0;_0x32ea60<Object[_0xb1cf('0x30')](this[_0xb1cf('0xd')])[_0xb1cf('0x25')];_0x32ea60++){var _0xe8aa08=Object[_0xb1cf('0x30')](this[_0xb1cf('0xd')])[_0x32ea60];var _0x2678d1=this[_0xb1cf('0xd')][_0xe8aa08];if(_0x2678d1['accountcode']===Number(_0x341b57))return _0x2678d1;}return null;};Report[_0xb1cf('0xf')][_0xb1cf('0x31')]=function(_0xcdf837){var _0x570fc8=_0xcdf837[_0xb1cf('0x32')]['split']('-')[0x0];var _0x39edc0=this[_0xb1cf('0xd')][_0x570fc8];if(!_0x39edc0)_0x39edc0=this[_0xb1cf('0x2f')](_0xcdf837[_0xb1cf('0x33')]);return!_0x39edc0?'outbound':_0xb1cf('0x34');};Report['prototype'][_0xb1cf('0x15')]=function(_0x30a43c){_0x30a43c[_0xb1cf('0x35')]=_0x30a43c[_0xb1cf('0x35')]||_0x30a43c[_0xb1cf('0x36')];if(_0x30a43c[_0xb1cf('0x37')]==_0xb1cf('0x38')){_0x30a43c[_0xb1cf('0x39')]=_0xb1cf('0x3a');_0x30a43c['lastdata']=_0x30a43c[_0xb1cf('0x3a')];if(_0x30a43c[_0xb1cf('0x3b')]=='from-voip-provider'){_0x30a43c[_0xb1cf('0x1f')]='';_0x30a43c[_0xb1cf('0x35')]=extractCalleridNumber(_0x30a43c['callerid']);}else if(_0x30a43c[_0xb1cf('0x3b')]==_0xb1cf('0x3c')){if(_0x30a43c[_0xb1cf('0x35')]==_0xb1cf('0x3d')){_0x30a43c[_0xb1cf('0x35')]=extractCalleridNumber(_0x30a43c[_0xb1cf('0x3e')]);_0x30a43c[_0xb1cf('0x33')]=_0x30a43c[_0xb1cf('0x3f')];_0x30a43c[_0xb1cf('0x40')]=[_0x30a43c[_0xb1cf('0x32')],_0x30a43c['channel']=_0x30a43c[_0xb1cf('0x40')]][0x0];_0x30a43c[_0xb1cf('0x41')]=_0x30a43c[_0xb1cf('0x3e')];}else{_0x30a43c[_0xb1cf('0x35')]=_0x30a43c['calleridnum'];_0x30a43c[_0xb1cf('0x33')]=_0x30a43c[_0xb1cf('0x3f')];if(_0x30a43c[_0xb1cf('0x42')]=='ANSWERED'){_0x30a43c[_0xb1cf('0x1f')]=_0x30a43c[_0xb1cf('0x26')];}else{_0x30a43c[_0xb1cf('0x1f')]='';}}}}else{_0x30a43c[_0xb1cf('0x41')]=util[_0xb1cf('0x23')](_0xb1cf('0x43'),_0x30a43c['calleridname'],_0x30a43c['calleridnum']);}if(RpcVoiceTransferReport[_0xb1cf('0x44')][_0x30a43c[_0xb1cf('0x45')]]){var _0x33ce91=RpcVoiceTransferReport[_0xb1cf('0x44')][_0x30a43c[_0xb1cf('0x45')]];_0x33ce91[_0xb1cf('0x46')]=_0x30a43c[_0xb1cf('0x47')];RpcVoiceTransferReport[_0xb1cf('0x1a')](_0x33ce91);delete RpcVoiceTransferReport[_0xb1cf('0x44')][_0x30a43c[_0xb1cf('0x45')]];}if(_[_0xb1cf('0x21')](_0x30a43c[_0xb1cf('0x37')])){_0x30a43c['type']=this[_0xb1cf('0x31')](_0x30a43c);}if(_['isNil'](_0x30a43c['UserId'])){var _0x4cd3ae=_0x30a43c[_0xb1cf('0x32')][_0xb1cf('0x48')]('-')[0x0];var _0x5e93dc=this['agents'][_0x4cd3ae];if(!_0x5e93dc)_0x5e93dc=this[_0xb1cf('0x2f')](_0x30a43c[_0xb1cf('0x1f')]);if(_0x5e93dc){_0x30a43c[_0xb1cf('0x49')]=_0x5e93dc['id'];_0x30a43c[_0xb1cf('0x4a')]=_0x5e93dc[_0xb1cf('0x20')];}}RpcVoiceCallReport[_0xb1cf('0x2d')](_0x30a43c);if(_0x30a43c[_0xb1cf('0x4b')]){for(var _0x31ce1f=0x0;_0x31ce1f<_0x30a43c['monitors'][_0xb1cf('0x25')];_0x31ce1f+=0x1){_0x30a43c[_0xb1cf('0x4c')]=_0x30a43c[_0xb1cf('0x4d')][_0x31ce1f][_0xb1cf('0x4e')];_0x30a43c[_0xb1cf('0x4f')]=_0x30a43c['monitors'][_0x31ce1f][_0xb1cf('0x4f')];if(_0x30a43c[_0xb1cf('0x36')]==_0xb1cf('0x3d')){_0x30a43c[_0xb1cf('0x33')]=_0x30a43c[_0xb1cf('0x26')];_0x30a43c[_0xb1cf('0x50')]=_0x30a43c[_0xb1cf('0x51')];_0x30a43c[_0xb1cf('0x26')]=_0x30a43c['accountcode'];_0x30a43c[_0xb1cf('0x51')]=_0x30a43c[_0xb1cf('0x4a')];_0x30a43c['exten']=_0x30a43c[_0xb1cf('0x3f')];}else if(_0x30a43c[_0xb1cf('0x36')]==_0xb1cf('0x52')){_0x30a43c[_0xb1cf('0x33')]=_0x30a43c[_0xb1cf('0x35')];_0x30a43c[_0xb1cf('0x36')]=_0x30a43c[_0xb1cf('0x3f')];}RpcVoiceRecording['create'](_0x30a43c);}}};Report[_0xb1cf('0xf')][_0xb1cf('0x16')]=function(_0x272798){if(_[_0xb1cf('0x53')](_0x272798)){_0x272798[_0xb1cf('0x54')](function(_0x4b067c){RpcVoiceAgentReport['create'](_0x4b067c);});}else{RpcVoiceAgentReport['create'](_0x272798);}};Report[_0xb1cf('0xf')][_0xb1cf('0x55')]=function(_0x433e7c){RpcVoiceDialReport['create'](_0x433e7c);var _0x3f8ff3;var _0x4c9062;var _0x1aa303=_0x433e7c[_0xb1cf('0x32')];if(_[_0xb1cf('0x56')](_0x1aa303,_0xb1cf('0x57'))){_0x4c9062=_0x1aa303[_0xb1cf('0x58')](_0x1aa303[_0xb1cf('0x59')]('/')+0x1,_0x1aa303['indexOf']('@'));_0x3f8ff3=_[_0xb1cf('0x1e')](this['agents'],function(_0x4cf6da){return _0x4cf6da[_0xb1cf('0x5a')]==_0x4c9062||_0x4cf6da[_0xb1cf('0x5b')]==_0x4c9062||_0x4cf6da[_0xb1cf('0x1f')]==_0x4c9062;});}else{_0x4c9062=_0x1aa303[_0xb1cf('0x58')](_0x1aa303[_0xb1cf('0x59')]('/')+0x1,_0x1aa303[_0xb1cf('0x5c')]('-'));_0x3f8ff3=this[_0xb1cf('0x1d')](_0x4c9062);}if(_0x3f8ff3){_0x433e7c[_0xb1cf('0x22')]=_[_0xb1cf('0x21')](_0x3f8ff3[_0xb1cf('0x22')])?util[_0xb1cf('0x23')](_0xb1cf('0x24'),_0x3f8ff3[_0xb1cf('0x20')]):_0x3f8ff3[_0xb1cf('0x22')];_0x433e7c[_0xb1cf('0x4a')]=_0x3f8ff3[_0xb1cf('0x20')];_0x433e7c['accountcode']=_0x3f8ff3[_0xb1cf('0x1f')];RpcMemberReport[_0xb1cf('0x55')](_0x433e7c);}};Report[_0xb1cf('0xf')][_0xb1cf('0x1a')]=function(_0x1bd2fa){RpcVoiceTransferReport[_0xb1cf('0x44')][_0x1bd2fa[_0xb1cf('0x5d')]]=_0x1bd2fa;};Report[_0xb1cf('0xf')][_0xb1cf('0x1c')]=function(_0x2d34cb){RpcVoiceTransferReport['attendedTransfer'](_0x2d34cb);};module['exports']=Report;
\ No newline at end of file
index 6bec1ea..ec533a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8884=['telephone:save','trunk:%s','startsWith','Local','substring','indexOf','find','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','peer','address','[userReport][peerstatus]','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','exports','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','catch','error','[userReport][sipshowregistry]','inspect','then','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','stateRegistry','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','local','toLowerCase','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0x8884,0x187));var _0x4888=function(_0x5624d5,_0x1b2105){_0x5624d5=_0x5624d5-0x0;var _0x3a5906=_0x8884[_0x5624d5];return _0x3a5906;};'use strict';var _=require('lodash');var moment=require('moment');var util=require(_0x4888('0x0'));var Redis=require(_0x4888('0x1'));var BPromise=require(_0x4888('0x2'));var config=require(_0x4888('0x3'));var logger=require(_0x4888('0x4'))(_0x4888('0x5'));var ami=require('../ami');config[_0x4888('0x6')]=_[_0x4888('0x7')](config[_0x4888('0x6')],{'host':_0x4888('0x8'),'port':0x18eb});var io=require(_0x4888('0x9'))(new Redis(config[_0x4888('0x6')]));function UserReport(_0x5def84){this[_0x4888('0xa')]=_0x5def84[_0x4888('0xa')];this['agents']=_0x5def84[_0x4888('0xb')];this[_0x4888('0xc')]=_0x5def84[_0x4888('0xc')];ami['on'](_0x4888('0xd'),this[_0x4888('0xe')][_0x4888('0xf')](this));ami['on'](_0x4888('0x10'),this[_0x4888('0xe')][_0x4888('0xf')](this));ami['on'](_0x4888('0x11'),this[_0x4888('0x12')][_0x4888('0xf')](this));ami['on'](_0x4888('0x13'),this[_0x4888('0x14')][_0x4888('0xf')](this));return this[_0x4888('0x15')]();}function showSipRegistrations(){Promise[_0x4888('0x16')]()['then'](ami['actionSipShowRegistry']())[_0x4888('0x17')](function(_0x24b738){logger[_0x4888('0x18')](_0x4888('0x19'),util[_0x4888('0x1a')](_0x24b738,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x4888('0x16')]()[_0x4888('0x1b')](ami[_0x4888('0x1c')]())[_0x4888('0x17')](function(_0x4cca5f){logger[_0x4888('0x18')](_0x4888('0x1d'),util['inspect'](_0x4cca5f,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x4888('0x1b')](ami[_0x4888('0x1e')]())[_0x4888('0x17')](function(_0x2f32a5){logger[_0x4888('0x18')]('[userReport][sippeerstatus]',util[_0x4888('0x1a')](_0x2f32a5,{'showHidden':![],'depth':null}));});}UserReport['prototype'][_0x4888('0x15')]=function(){setInterval(function(){BPromise[_0x4888('0x16')]()[_0x4888('0x1b')](showSipRegistrations())[_0x4888('0x1b')](listDeviceStates())[_0x4888('0x1b')](showPeersStatus());},0x32c8);};UserReport[_0x4888('0x1f')][_0x4888('0x20')]=function(_0x512cb7){return _0x512cb7!==null&&!_[_0x4888('0x21')](_0x512cb7);};UserReport[_0x4888('0x1f')][_0x4888('0x22')]=function(_0x490f4d,_0x242aad,_0x1e516b){io['to'](_0x490f4d)['emit'](_0x242aad,_0x1e516b);};UserReport[_0x4888('0x1f')][_0x4888('0xe')]=function(_0xdaf213){try{if(this[_0x4888('0x20')](_0xdaf213)){logger[_0x4888('0x23')](_0x4888('0x24'),_0xdaf213[_0x4888('0x25')],_0xdaf213[_0x4888('0x26')]);logger[_0x4888('0x27')](_0x4888('0x28'),util[_0x4888('0x1a')](_0xdaf213,{'showHidden':![],'depth':null}));var _0x49bedd=_['find'](this[_0x4888('0xa')],{'defaultuser':_0xdaf213[_0x4888('0x25')]});if(_0x49bedd){_0xdaf213[_0x4888('0x29')]=_0xdaf213[_0x4888('0x26')];_['merge'](_0x49bedd,_[_0x4888('0x2a')](_0xdaf213,[_0x4888('0x2b'),_0x4888('0x2c'),_0x4888('0x25'),_0x4888('0x26')]));logger[_0x4888('0x27')](_0x4888('0x2d'),util[_0x4888('0x1a')](_0x49bedd,{'showHidden':![],'depth':null}));this['emit'](util[_0x4888('0x2e')]('trunk:%s',_0x49bedd[_0x4888('0x2f')]),_0x4888('0x30'),_0x49bedd);}}}catch(_0x5d2f5e){logger['error'](_0x4888('0x28'),util[_0x4888('0x1a')](_0x5d2f5e,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x4888('0x12')]=function(_0x22c155){try{if(this['isNotNull'](_0x22c155)){logger[_0x4888('0x23')](_0x4888('0x31'),_0x22c155[_0x4888('0x32')],_0x22c155[_0x4888('0x26')]);logger[_0x4888('0x27')](_0x4888('0x33'),util[_0x4888('0x1a')](_0x22c155,{'showHidden':![],'depth':null}));if(this[_0x4888('0xb')][_0x22c155[_0x4888('0x32')]]){if(!this[_0x4888('0xb')][_0x22c155[_0x4888('0x32')]][_0x4888('0x34')]||_0x22c155[_0x4888('0x26')][_0x4888('0x35')]()=='inuse'){this[_0x4888('0xb')][_0x22c155[_0x4888('0x32')]][_0x4888('0x34')]=![];if(this[_0x4888('0xb')][_0x22c155['device']][_0x4888('0x26')]!==_0x22c155[_0x4888('0x26')][_0x4888('0x35')]()){this[_0x4888('0xb')][_0x22c155[_0x4888('0x32')]][_0x4888('0x36')]=_[_0x4888('0x37')](moment()[_0x4888('0x2e')]('x'));}this[_0x4888('0xb')][_0x22c155[_0x4888('0x32')]][_0x4888('0x26')]=_0x22c155[_0x4888('0x26')][_0x4888('0x35')]();this['agents'][_0x22c155[_0x4888('0x32')]][_0x4888('0x38')](_0x22c155);}}else if(this['telephones'][_0x22c155[_0x4888('0x32')]]){if(this['telephones'][_0x22c155[_0x4888('0x32')]][_0x4888('0x26')]!==_0x22c155[_0x4888('0x26')][_0x4888('0x35')]()){this[_0x4888('0xc')][_0x22c155['device']][_0x4888('0x36')]=_[_0x4888('0x37')](moment()['format']('x'));}this[_0x4888('0xc')][_0x22c155['device']][_0x4888('0x26')]=_0x22c155[_0x4888('0x26')][_0x4888('0x35')]();logger[_0x4888('0x27')](_0x4888('0x39'),util[_0x4888('0x1a')](this[_0x4888('0xc')][_0x22c155[_0x4888('0x32')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x4888('0x2e')](_0x4888('0x3a'),this['telephones'][_0x22c155[_0x4888('0x32')]]['name']),_0x4888('0x3b'),this[_0x4888('0xc')][_0x22c155[_0x4888('0x32')]]);}else if(this['trunks'][_0x22c155[_0x4888('0x32')]]){if(this[_0x4888('0xa')][_0x22c155[_0x4888('0x32')]][_0x4888('0x26')]!==_0x22c155[_0x4888('0x26')][_0x4888('0x35')]()){this[_0x4888('0xa')][_0x22c155['device']][_0x4888('0x36')]=_['toNumber'](moment()['format']('x'));}this[_0x4888('0xa')][_0x22c155[_0x4888('0x32')]]['state']=_0x22c155[_0x4888('0x26')][_0x4888('0x35')]();logger[_0x4888('0x27')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0x4888('0x1a')](this[_0x4888('0xa')][_0x22c155[_0x4888('0x32')]],{'showHidden':![],'depth':null}));this[_0x4888('0x22')](util[_0x4888('0x2e')](_0x4888('0x3c'),this['trunks'][_0x22c155[_0x4888('0x32')]][_0x4888('0x2f')]),_0x4888('0x30'),this[_0x4888('0xa')][_0x22c155[_0x4888('0x32')]]);}else if(_[_0x4888('0x3d')](_0x22c155[_0x4888('0x32')],_0x4888('0x3e'))){var _0x29b174=_0x22c155['device'];var _0x10f3a4=_0x29b174[_0x4888('0x3f')](_0x29b174[_0x4888('0x40')]('/')+0x1,_0x29b174[_0x4888('0x40')]('@'));var _0x5462fd=_[_0x4888('0x41')](this['agents'],function(_0x46d1de){return _0x46d1de['mobile']==_0x10f3a4||_0x46d1de['phone']==_0x10f3a4||_0x46d1de[_0x4888('0x42')]==_0x10f3a4;});if(_0x5462fd){if(_0x5462fd[_0x4888('0x26')]!==_0x22c155[_0x4888('0x26')][_0x4888('0x35')]()){_0x5462fd[_0x4888('0x36')]=_[_0x4888('0x37')](moment()['format']('x'));}_0x5462fd[_0x4888('0x26')]=_0x22c155[_0x4888('0x26')][_0x4888('0x35')]();_0x5462fd[_0x4888('0x34')]=!![];_0x5462fd[_0x4888('0x38')](_0x22c155);}}}}catch(_0x186afb){logger[_0x4888('0x18')](_0x4888('0x33'),util[_0x4888('0x1a')](_0x186afb,{'showHidden':![],'depth':null}));}};UserReport[_0x4888('0x1f')][_0x4888('0x14')]=function(_0x312914){try{if(this[_0x4888('0x20')](_0x312914)&&this[_0x4888('0x20')](_0x312914[_0x4888('0x13')])){logger[_0x4888('0x23')](_0x4888('0x43'),_0x312914[_0x4888('0x44')],_0x312914[_0x4888('0x45')],_0x312914[_0x4888('0x13')]);logger[_0x4888('0x27')](_0x4888('0x46'),util['inspect'](_0x312914,{'showHidden':![],'depth':null}));if(this[_0x4888('0xb')][_0x312914[_0x4888('0x44')]]){if(!this[_0x4888('0xb')][_0x312914[_0x4888('0x44')]][_0x4888('0x34')]||_0x312914[_0x4888('0x13')][_0x4888('0x35')]()==_0x4888('0x47')){this[_0x4888('0xb')][_0x312914['peer']]['local']=![];this[_0x4888('0xb')][_0x312914[_0x4888('0x44')]][_0x4888('0x48')]=_0x312914[_0x4888('0x13')][_0x4888('0x35')]();this[_0x4888('0xb')][_0x312914[_0x4888('0x44')]]['address']=_0x312914[_0x4888('0x45')];this[_0x4888('0xb')][_0x312914[_0x4888('0x44')]][_0x4888('0x38')](_0x312914);}}else if(this[_0x4888('0xc')][_0x312914[_0x4888('0x44')]]){this[_0x4888('0xc')][_0x312914[_0x4888('0x44')]][_0x4888('0x48')]=_0x312914[_0x4888('0x13')][_0x4888('0x35')]();this[_0x4888('0xc')][_0x312914[_0x4888('0x44')]][_0x4888('0x45')]=_0x312914[_0x4888('0x45')];logger['debug'](_0x4888('0x49'),util[_0x4888('0x1a')](this[_0x4888('0xc')][_0x312914[_0x4888('0x44')]],{'showHidden':![],'depth':null}));this[_0x4888('0x22')](util[_0x4888('0x2e')](_0x4888('0x3a'),this[_0x4888('0xc')][_0x312914['peer']]['name']),_0x4888('0x3b'),this[_0x4888('0xc')][_0x312914[_0x4888('0x44')]]);}else if(this['trunks'][_0x312914[_0x4888('0x44')]]){this[_0x4888('0xa')][_0x312914['peer']][_0x4888('0x48')]=_0x312914[_0x4888('0x13')][_0x4888('0x35')]();this[_0x4888('0xa')][_0x312914[_0x4888('0x44')]]['address']=_0x312914[_0x4888('0x45')];logger[_0x4888('0x27')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0x4888('0x1a')](this['trunks'][_0x312914['peer']],{'showHidden':![],'depth':null}));this[_0x4888('0x22')](util['format'](_0x4888('0x3c'),this[_0x4888('0xa')][_0x312914[_0x4888('0x44')]][_0x4888('0x2f')]),_0x4888('0x30'),this['trunks'][_0x312914['peer']]);}}}catch(_0xd71b92){logger['error']('[userReport][peerstatus]',util[_0x4888('0x1a')](_0xd71b92,{'showHidden':![],'depth':null}));}};module[_0x4888('0x4a')]=UserReport;
\ No newline at end of file
+var _0x677c=['catch','error','[userReport][sipshowregistry]','inspect','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','syncRealtimeShow','isUndefined','emit','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','stateRegistry','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','[userReport][registry]','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','toLowerCase','inuse','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','substring','indexOf','find','mobile','accountcode','local','peer','address','registered','status','telephone:save','[userReport][peerstatus]','lodash','moment','util','bluebird','../../../config/environment','../../../config/logger','defaults','localhost','socket.io-emitter','redis','trunks','agents','telephones','registryentry','bind','syncRegistry','syncDeviceState','peerstatus','syncPeerStatus','resolve','then','actionSipShowRegistry'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x677c,0x10e));var _0xc677=function(_0x2dc758,_0x3ba6cc){_0x2dc758=_0x2dc758-0x0;var _0x15e091=_0x677c[_0x2dc758];return _0x15e091;};'use strict';var _=require(_0xc677('0x0'));var moment=require(_0xc677('0x1'));var util=require(_0xc677('0x2'));var Redis=require('ioredis');var BPromise=require(_0xc677('0x3'));var config=require(_0xc677('0x4'));var logger=require(_0xc677('0x5'))('ami');var ami=require('../ami');config['redis']=_[_0xc677('0x6')](config['redis'],{'host':_0xc677('0x7'),'port':0x18eb});var io=require(_0xc677('0x8'))(new Redis(config[_0xc677('0x9')]));function UserReport(_0x835867){this['trunks']=_0x835867[_0xc677('0xa')];this[_0xc677('0xb')]=_0x835867['agents'];this['telephones']=_0x835867[_0xc677('0xc')];ami['on'](_0xc677('0xd'),this['syncRegistry'][_0xc677('0xe')](this));ami['on']('registry',this[_0xc677('0xf')][_0xc677('0xe')](this));ami['on']('devicestatechange',this[_0xc677('0x10')][_0xc677('0xe')](this));ami['on'](_0xc677('0x11'),this[_0xc677('0x12')][_0xc677('0xe')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0xc677('0x13')]()[_0xc677('0x14')](ami[_0xc677('0x15')]())[_0xc677('0x16')](function(_0xc6677f){logger[_0xc677('0x17')](_0xc677('0x18'),util[_0xc677('0x19')](_0xc6677f,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise['resolve']()[_0xc677('0x14')](ami['actionDeviceStateList']())[_0xc677('0x16')](function(_0x892119){logger[_0xc677('0x17')](_0xc677('0x1a'),util['inspect'](_0x892119,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xc677('0x13')]()[_0xc677('0x14')](ami[_0xc677('0x1b')]())[_0xc677('0x16')](function(_0x2cbb0a){logger[_0xc677('0x17')](_0xc677('0x1c'),util[_0xc677('0x19')](_0x2cbb0a,{'showHidden':![],'depth':null}));});}UserReport[_0xc677('0x1d')][_0xc677('0x1e')]=function(){setInterval(function(){BPromise[_0xc677('0x13')]()[_0xc677('0x14')](showSipRegistrations())[_0xc677('0x14')](listDeviceStates())[_0xc677('0x14')](showPeersStatus());},0x32c8);};UserReport[_0xc677('0x1d')]['isNotNull']=function(_0x421a9c){return _0x421a9c!==null&&!_[_0xc677('0x1f')](_0x421a9c);};UserReport[_0xc677('0x1d')][_0xc677('0x20')]=function(_0xfe3ad9,_0x2f42bc,_0x156293){io['to'](_0xfe3ad9)[_0xc677('0x20')](_0x2f42bc,_0x156293);};UserReport[_0xc677('0x1d')]['syncRegistry']=function(_0x3dc290){try{if(this[_0xc677('0x21')](_0x3dc290)){logger[_0xc677('0x22')](_0xc677('0x23'),_0x3dc290[_0xc677('0x24')],_0x3dc290[_0xc677('0x25')]);logger[_0xc677('0x26')]('[userReport][registry]',util['inspect'](_0x3dc290,{'showHidden':![],'depth':null}));var _0x5706ca=_['find'](this['trunks'],{'defaultuser':_0x3dc290['username']});if(_0x5706ca){_0x3dc290[_0xc677('0x27')]=_0x3dc290[_0xc677('0x25')];_[_0xc677('0x28')](_0x5706ca,_[_0xc677('0x29')](_0x3dc290,[_0xc677('0x2a'),_0xc677('0x2b'),_0xc677('0x24'),_0xc677('0x25')]));logger[_0xc677('0x26')](_0xc677('0x2c'),util[_0xc677('0x19')](_0x5706ca,{'showHidden':![],'depth':null}));this[_0xc677('0x20')](util[_0xc677('0x2d')](_0xc677('0x2e'),_0x5706ca[_0xc677('0x2f')]),'trunk:save',_0x5706ca);}}}catch(_0x14a396){logger[_0xc677('0x17')](_0xc677('0x30'),util[_0xc677('0x19')](_0x14a396,{'showHidden':![],'depth':null}));}};UserReport[_0xc677('0x1d')][_0xc677('0x10')]=function(_0xbfb248){try{if(this[_0xc677('0x21')](_0xbfb248)){logger[_0xc677('0x22')](_0xc677('0x31'),_0xbfb248[_0xc677('0x32')],_0xbfb248['state']);logger['debug'](_0xc677('0x33'),util['inspect'](_0xbfb248,{'showHidden':![],'depth':null}));if(this[_0xc677('0xb')][_0xbfb248['device']]){if(!this[_0xc677('0xb')][_0xbfb248[_0xc677('0x32')]]['local']||_0xbfb248[_0xc677('0x25')][_0xc677('0x34')]()==_0xc677('0x35')){this[_0xc677('0xb')][_0xbfb248[_0xc677('0x32')]]['local']=![];if(this[_0xc677('0xb')][_0xbfb248[_0xc677('0x32')]]['state']!==_0xbfb248[_0xc677('0x25')][_0xc677('0x34')]()){this[_0xc677('0xb')][_0xbfb248[_0xc677('0x32')]][_0xc677('0x36')]=_[_0xc677('0x37')](moment()[_0xc677('0x2d')]('x'));}this[_0xc677('0xb')][_0xbfb248[_0xc677('0x32')]][_0xc677('0x25')]=_0xbfb248[_0xc677('0x25')][_0xc677('0x34')]();this['agents'][_0xbfb248['device']][_0xc677('0x38')](_0xbfb248);}}else if(this[_0xc677('0xc')][_0xbfb248[_0xc677('0x32')]]){if(this[_0xc677('0xc')][_0xbfb248['device']][_0xc677('0x25')]!==_0xbfb248[_0xc677('0x25')][_0xc677('0x34')]()){this[_0xc677('0xc')][_0xbfb248[_0xc677('0x32')]]['stateTime']=_[_0xc677('0x37')](moment()[_0xc677('0x2d')]('x'));}this[_0xc677('0xc')][_0xbfb248['device']]['state']=_0xbfb248['state'][_0xc677('0x34')]();logger[_0xc677('0x26')](_0xc677('0x39'),util[_0xc677('0x19')](this[_0xc677('0xc')][_0xbfb248['device']],{'showHidden':![],'depth':null}));this[_0xc677('0x20')](util[_0xc677('0x2d')](_0xc677('0x3a'),this[_0xc677('0xc')][_0xbfb248[_0xc677('0x32')]][_0xc677('0x2f')]),'telephone:save',this[_0xc677('0xc')][_0xbfb248[_0xc677('0x32')]]);}else if(this[_0xc677('0xa')][_0xbfb248[_0xc677('0x32')]]){if(this[_0xc677('0xa')][_0xbfb248[_0xc677('0x32')]][_0xc677('0x25')]!==_0xbfb248[_0xc677('0x25')][_0xc677('0x34')]()){this['trunks'][_0xbfb248[_0xc677('0x32')]][_0xc677('0x36')]=_['toNumber'](moment()[_0xc677('0x2d')]('x'));}this['trunks'][_0xbfb248[_0xc677('0x32')]][_0xc677('0x25')]=_0xbfb248[_0xc677('0x25')][_0xc677('0x34')]();logger[_0xc677('0x26')](_0xc677('0x3b'),util['inspect'](this[_0xc677('0xa')][_0xbfb248[_0xc677('0x32')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xc677('0x2d')]('trunk:%s',this[_0xc677('0xa')][_0xbfb248[_0xc677('0x32')]]['name']),_0xc677('0x3c'),this[_0xc677('0xa')][_0xbfb248['device']]);}else if(_['startsWith'](_0xbfb248[_0xc677('0x32')],'Local')){var _0x645304=_0xbfb248[_0xc677('0x32')];var _0x1b8d81=_0x645304[_0xc677('0x3d')](_0x645304[_0xc677('0x3e')]('/')+0x1,_0x645304['indexOf']('@'));var _0x2e8864=_[_0xc677('0x3f')](this['agents'],function(_0x2219f0){return _0x2219f0[_0xc677('0x40')]==_0x1b8d81||_0x2219f0['phone']==_0x1b8d81||_0x2219f0[_0xc677('0x41')]==_0x1b8d81;});if(_0x2e8864){if(_0x2e8864[_0xc677('0x25')]!==_0xbfb248[_0xc677('0x25')][_0xc677('0x34')]()){_0x2e8864['stateTime']=_[_0xc677('0x37')](moment()[_0xc677('0x2d')]('x'));}_0x2e8864[_0xc677('0x25')]=_0xbfb248[_0xc677('0x25')][_0xc677('0x34')]();_0x2e8864[_0xc677('0x42')]=!![];_0x2e8864[_0xc677('0x38')](_0xbfb248);}}}}catch(_0x48b4bc){logger['error'](_0xc677('0x33'),util[_0xc677('0x19')](_0x48b4bc,{'showHidden':![],'depth':null}));}};UserReport[_0xc677('0x1d')]['syncPeerStatus']=function(_0x13a429){try{if(this['isNotNull'](_0x13a429)&&this[_0xc677('0x21')](_0x13a429[_0xc677('0x11')])){logger['info']('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x13a429[_0xc677('0x43')],_0x13a429[_0xc677('0x44')],_0x13a429['peerstatus']);logger[_0xc677('0x26')]('[userReport][peerstatus]',util[_0xc677('0x19')](_0x13a429,{'showHidden':![],'depth':null}));if(this[_0xc677('0xb')][_0x13a429['peer']]){if(!this[_0xc677('0xb')][_0x13a429['peer']][_0xc677('0x42')]||_0x13a429[_0xc677('0x11')][_0xc677('0x34')]()==_0xc677('0x45')){this[_0xc677('0xb')][_0x13a429[_0xc677('0x43')]]['local']=![];this[_0xc677('0xb')][_0x13a429[_0xc677('0x43')]][_0xc677('0x46')]=_0x13a429[_0xc677('0x11')][_0xc677('0x34')]();this[_0xc677('0xb')][_0x13a429[_0xc677('0x43')]][_0xc677('0x44')]=_0x13a429[_0xc677('0x44')];this[_0xc677('0xb')][_0x13a429[_0xc677('0x43')]][_0xc677('0x38')](_0x13a429);}}else if(this['telephones'][_0x13a429[_0xc677('0x43')]]){this[_0xc677('0xc')][_0x13a429[_0xc677('0x43')]][_0xc677('0x46')]=_0x13a429['peerstatus'][_0xc677('0x34')]();this[_0xc677('0xc')][_0x13a429['peer']][_0xc677('0x44')]=_0x13a429[_0xc677('0x44')];logger['debug']('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0xc677('0x19')](this[_0xc677('0xc')][_0x13a429[_0xc677('0x43')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xc677('0x3a'),this['telephones'][_0x13a429[_0xc677('0x43')]][_0xc677('0x2f')]),_0xc677('0x47'),this[_0xc677('0xc')][_0x13a429[_0xc677('0x43')]]);}else if(this['trunks'][_0x13a429['peer']]){this[_0xc677('0xa')][_0x13a429[_0xc677('0x43')]][_0xc677('0x46')]=_0x13a429['peerstatus'][_0xc677('0x34')]();this[_0xc677('0xa')][_0x13a429[_0xc677('0x43')]][_0xc677('0x44')]=_0x13a429[_0xc677('0x44')];logger[_0xc677('0x26')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0xc677('0x19')](this[_0xc677('0xa')][_0x13a429[_0xc677('0x43')]],{'showHidden':![],'depth':null}));this[_0xc677('0x20')](util['format'](_0xc677('0x2e'),this[_0xc677('0xa')][_0x13a429[_0xc677('0x43')]][_0xc677('0x2f')]),'trunk:save',this[_0xc677('0xa')][_0x13a429[_0xc677('0x43')]]);}}}catch(_0x259471){logger['error'](_0xc677('0x48'),util[_0xc677('0x19')](_0x259471,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;
\ No newline at end of file
index e15500a..1b07e10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6f2=['error','[%s][voiceAgentReport][agentcalled]','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','info','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','user:agentconnect','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','answered_elsewhere','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','[%s][voiceAgentReport][agentconnect]','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','reason','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','syncAgentComplete','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','agent','talktime','acw','acwtime','acwTimeout','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','[%s][voiceAgentReport][hangup]','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','substring','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','lodash','moment','util','ioredis','../../../config/logger','redis','defaults','localhost','socket.io-emitter','channels','voiceChannels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','agentconnect','syncAgentConnect','agentringnoanswer','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','varset','syncVarSet','hangup','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','prototype','emit','isNotNull','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','isUndefined','format','YYYY-MM-DD\x20HH:mm:ss','called','queue','type','inbound','voice','merge','omit','event','privilege','custom:agentcalled','interface','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','inspect','user:%s','user:called'];(function(_0x14fc67,_0x2ea1fe){var _0x3cb64b=function(_0x3a32bd){while(--_0x3a32bd){_0x14fc67['push'](_0x14fc67['shift']());}};_0x3cb64b(++_0x2ea1fe);}(_0xf6f2,0x65));var _0x2f6f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf6f2[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2f6f('0x0'));var moment=require(_0x2f6f('0x1'));var util=require(_0x2f6f('0x2'));var Redis=require(_0x2f6f('0x3'));var config=require('../../../config/environment');var logger=require(_0x2f6f('0x4'))('ami');var ami=require('../ami');config[_0x2f6f('0x5')]=_[_0x2f6f('0x6')](config[_0x2f6f('0x5')],{'host':_0x2f6f('0x7'),'port':0x18eb});var io=require(_0x2f6f('0x8'))(new Redis(config['redis']));function VoiceAgentReport(_0x3e1fc0){this[_0x2f6f('0x9')]={};this[_0x2f6f('0xa')]=_0x3e1fc0['channels'];this[_0x2f6f('0xb')]=_0x3e1fc0[_0x2f6f('0xb')];this[_0x2f6f('0xc')]=_0x3e1fc0[_0x2f6f('0xc')];this[_0x2f6f('0xd')]={};ami['on'](_0x2f6f('0xe'),this[_0x2f6f('0xf')][_0x2f6f('0x10')](this));ami['on'](_0x2f6f('0x11'),this[_0x2f6f('0x12')][_0x2f6f('0x10')](this));ami['on'](_0x2f6f('0x13'),this[_0x2f6f('0x14')][_0x2f6f('0x10')](this));ami['on'](_0x2f6f('0x15'),this[_0x2f6f('0x16')][_0x2f6f('0x10')](this));ami['on'](_0x2f6f('0x17'),this['syncAgentComplete'][_0x2f6f('0x10')](this));ami['on'](_0x2f6f('0x18'),this[_0x2f6f('0x19')][_0x2f6f('0x10')](this));ami['on'](_0x2f6f('0x1a'),this['syncHangup'][_0x2f6f('0x10')](this));ami['on'](_0x2f6f('0x1b'),this[_0x2f6f('0x1c')][_0x2f6f('0x10')](this));ami['on'](_0x2f6f('0x1d'),this[_0x2f6f('0x1e')][_0x2f6f('0x10')](this));ami['on'](_0x2f6f('0x1f'),this['syncAttendedTransfer'][_0x2f6f('0x10')](this));ami['on']('blindtransfer',this['syncBlindTransfer'][_0x2f6f('0x10')](this));}VoiceAgentReport[_0x2f6f('0x20')][_0x2f6f('0x21')]=function(_0x1902a8,_0x50782d,_0x3c71be){io['to'](_0x1902a8)[_0x2f6f('0x21')](_0x50782d,_0x3c71be);};VoiceAgentReport[_0x2f6f('0x20')][_0x2f6f('0x22')]=function(_0x430d43){return _0x430d43!==null&&!_['isUndefined'](_0x430d43);};VoiceAgentReport[_0x2f6f('0x20')]['syncAgentCalled']=function(_0x4576b4){try{if(this[_0x2f6f('0x22')](_0x4576b4)){logger['info'](_0x2f6f('0x23'),_0x4576b4[_0x2f6f('0x24')],_0x4576b4[_0x2f6f('0x25')],_0x4576b4[_0x2f6f('0x26')]);logger[_0x2f6f('0x27')](_0x2f6f('0x28'),_0x4576b4['uniqueid'],util['inspect'](_0x4576b4,{'showHidden':![],'depth':null}));if(_[_0x2f6f('0x29')](this[_0x2f6f('0x9')][_0x4576b4[_0x2f6f('0x24')]])){this[_0x2f6f('0x9')][_0x4576b4[_0x2f6f('0x24')]]={};}if(_['isUndefined'](this[_0x2f6f('0x9')][_0x4576b4[_0x2f6f('0x24')]][_0x4576b4[_0x2f6f('0x26')]])){this['channels'][_0x4576b4[_0x2f6f('0x24')]][_0x4576b4['destuniqueid']]={'agentcalledAt':moment()[_0x2f6f('0x2a')](_0x2f6f('0x2b')),'lastevent':_0x2f6f('0x2c'),'mandatoryDisposition':this[_0x2f6f('0xb')][_0x4576b4[_0x2f6f('0x2d')]]?this[_0x2f6f('0xb')][_0x4576b4[_0x2f6f('0x2d')]]['mandatoryDisposition']||![]:![],'type':this[_0x2f6f('0xb')][_0x4576b4['queue']]?this[_0x2f6f('0xb')][_0x4576b4[_0x2f6f('0x2d')]][_0x2f6f('0x2e')]||_0x2f6f('0x2f'):'inbound','variables':this[_0x2f6f('0xd')][_0x4576b4['uniqueid']],'motionChannel':_0x2f6f('0x30')};}_[_0x2f6f('0x31')](this[_0x2f6f('0x9')][_0x4576b4[_0x2f6f('0x24')]][_0x4576b4[_0x2f6f('0x26')]],_[_0x2f6f('0x32')](_0x4576b4,[_0x2f6f('0x33'),_0x2f6f('0x34')]));logger['debug']('[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:',_0x4576b4[_0x2f6f('0x24')],util['inspect'](this[_0x2f6f('0x9')][_0x4576b4['uniqueid']][_0x4576b4[_0x2f6f('0x26')]],{'showHidden':![],'depth':null}));ami[_0x2f6f('0x21')](_0x2f6f('0x35'),this[_0x2f6f('0x9')][_0x4576b4[_0x2f6f('0x24')]][_0x4576b4[_0x2f6f('0x26')]]);var _0x5dc71b={'id':this[_0x2f6f('0xc')][_0x4576b4[_0x2f6f('0x36')]]['id'],'calleridnum':this[_0x2f6f('0x9')][_0x4576b4[_0x2f6f('0x24')]][_0x4576b4[_0x2f6f('0x26')]][_0x2f6f('0x37')],'queue':this[_0x2f6f('0x9')][_0x4576b4[_0x2f6f('0x24')]][_0x4576b4[_0x2f6f('0x26')]]['queue'],'variables':this[_0x2f6f('0x9')][_0x4576b4[_0x2f6f('0x24')]][_0x4576b4[_0x2f6f('0x26')]][_0x2f6f('0xd')]};logger['debug'](_0x2f6f('0x38'),_0x4576b4[_0x2f6f('0x24')],util[_0x2f6f('0x39')](_0x5dc71b,{'showHidden':![],'depth':null}));this['emit'](util[_0x2f6f('0x2a')](_0x2f6f('0x3a'),_0x4576b4[_0x2f6f('0x25')]),_0x2f6f('0x3b'),_0x5dc71b);}}catch(_0x390564){logger[_0x2f6f('0x3c')](_0x2f6f('0x3d'),_0x4576b4[_0x2f6f('0x24')],util['inspect'](_0x390564,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2f6f('0x20')][_0x2f6f('0x12')]=function(_0x32cde4){try{if(this['isNotNull'](_0x32cde4)){if(this['channels'][_0x32cde4[_0x2f6f('0x24')]]){logger['debug'](_0x2f6f('0x3e'),_0x32cde4['uniqueid'],util[_0x2f6f('0x39')](_0x32cde4,{'showHidden':![],'depth':null}));for(var _0x2783d3 in this[_0x2f6f('0x9')][_0x32cde4['uniqueid']]){if(this[_0x2f6f('0x9')][_0x32cde4[_0x2f6f('0x24')]][_0x2f6f('0x3f')](_0x2783d3)){if(_0x32cde4['destuniqueid']===_0x2783d3){logger[_0x2f6f('0x40')](_0x2f6f('0x41'),_0x32cde4[_0x2f6f('0x24')],_0x32cde4[_0x2f6f('0x25')],_0x32cde4['destuniqueid']);this[_0x2f6f('0x9')][_0x32cde4[_0x2f6f('0x24')]][_0x2783d3][_0x2f6f('0x42')]=moment()['format'](_0x2f6f('0x2b'));this['channels'][_0x32cde4[_0x2f6f('0x24')]][_0x2783d3][_0x2f6f('0x43')]=_0x32cde4['connectedlinename'];this[_0x2f6f('0x9')][_0x32cde4[_0x2f6f('0x24')]][_0x2783d3]['connectedlinenum']=_0x32cde4['connectedlinenum'];this['channels'][_0x32cde4['uniqueid']][_0x2783d3][_0x2f6f('0x44')]=_0x32cde4[_0x2f6f('0x44')];this[_0x2f6f('0x9')][_0x32cde4['uniqueid']][_0x2783d3][_0x2f6f('0x45')]=_0x32cde4[_0x2f6f('0x45')];this[_0x2f6f('0x9')][_0x32cde4[_0x2f6f('0x24')]][_0x2783d3]['holdtime']=_0x32cde4[_0x2f6f('0x46')];this[_0x2f6f('0x9')][_0x32cde4[_0x2f6f('0x24')]][_0x2783d3][_0x2f6f('0x47')]=_0x2f6f('0x48');if(this[_0x2f6f('0xa')][this['channels'][_0x32cde4[_0x2f6f('0x24')]][_0x2783d3][_0x2f6f('0x24')]]){var _0x4fc8df=this[_0x2f6f('0xa')][this[_0x2f6f('0x9')][_0x32cde4[_0x2f6f('0x24')]][_0x2783d3][_0x2f6f('0x24')]][_0x2f6f('0x49')];this[_0x2f6f('0x9')][_0x32cde4[_0x2f6f('0x24')]][_0x2783d3][_0x2f6f('0x49')]=_0x4fc8df;_0x32cde4[_0x2f6f('0x49')]=_0x4fc8df;}_['merge'](this[_0x2f6f('0xc')][_0x32cde4['interface']],_[_0x2f6f('0x4a')](_0x32cde4,['queue',_0x2f6f('0x4b'),_0x2f6f('0x49')]));logger[_0x2f6f('0x27')](_0x2f6f('0x4c'),_0x32cde4['uniqueid'],util['inspect'](this['channels'][_0x32cde4[_0x2f6f('0x24')]][_0x32cde4[_0x2f6f('0x26')]],{'showHidden':![],'depth':null}));ami[_0x2f6f('0x21')](_0x2f6f('0x4d'),this['channels'][_0x32cde4[_0x2f6f('0x24')]][_0x32cde4[_0x2f6f('0x26')]]);logger[_0x2f6f('0x27')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:',_0x32cde4[_0x2f6f('0x24')],util[_0x2f6f('0x39')](this[_0x2f6f('0x9')][_0x32cde4[_0x2f6f('0x24')]][_0x32cde4[_0x2f6f('0x26')]],{'showHidden':![],'depth':null}));this[_0x2f6f('0x21')](util[_0x2f6f('0x2a')](_0x2f6f('0x3a'),_0x32cde4[_0x2f6f('0x25')]),_0x2f6f('0x4e'),this['channels'][_0x32cde4[_0x2f6f('0x24')]][_0x32cde4[_0x2f6f('0x26')]]);}else if(!this['channels'][_0x32cde4[_0x2f6f('0x24')]][_0x2783d3]['agentringnoanswer']&&!this[_0x2f6f('0x9')][_0x32cde4[_0x2f6f('0x24')]][_0x2783d3][_0x2f6f('0x17')]){logger[_0x2f6f('0x40')]('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x32cde4[_0x2f6f('0x24')],this[_0x2f6f('0x9')][_0x32cde4[_0x2f6f('0x24')]][_0x2783d3][_0x2f6f('0x25')],_0x2783d3);this[_0x2f6f('0x9')][_0x32cde4['uniqueid']][_0x2783d3][_0x2f6f('0x13')]=!![];this[_0x2f6f('0x9')][_0x32cde4[_0x2f6f('0x24')]][_0x2783d3][_0x2f6f('0x4f')]=moment()[_0x2f6f('0x2a')](_0x2f6f('0x2b'));this[_0x2f6f('0x9')][_0x32cde4[_0x2f6f('0x24')]][_0x2783d3][_0x2f6f('0x50')]=_0x32cde4[_0x2f6f('0x26')];this[_0x2f6f('0x9')][_0x32cde4[_0x2f6f('0x24')]][_0x2783d3][_0x2f6f('0x51')]=_0x32cde4['membername'];this['channels'][_0x32cde4['uniqueid']][_0x2783d3][_0x2f6f('0x47')]=_0x2f6f('0x52');this[_0x2f6f('0x9')][_0x32cde4[_0x2f6f('0x24')]][_0x2783d3]['reason']=_0x2f6f('0x52');logger[_0x2f6f('0x27')](_0x2f6f('0x53'),_0x32cde4[_0x2f6f('0x24')],util[_0x2f6f('0x39')](this['channels'][_0x32cde4[_0x2f6f('0x24')]][_0x2783d3],{'showHidden':![],'depth':null}));ami[_0x2f6f('0x21')]('custom:agentansweredelsewhere',this[_0x2f6f('0x9')][_0x32cde4[_0x2f6f('0x24')]][_0x2783d3]);}}}}}}catch(_0x355b57){logger[_0x2f6f('0x3c')](_0x2f6f('0x54'),_0x32cde4[_0x2f6f('0x24')],util[_0x2f6f('0x39')](_0x355b57,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x2f6f('0x14')]=function(_0x45b349){try{if(this[_0x2f6f('0x22')](_0x45b349)){logger['debug']('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x45b349[_0x2f6f('0x24')],util[_0x2f6f('0x39')](_0x45b349,{'showHidden':![],'depth':null}));if(this[_0x2f6f('0x9')][_0x45b349[_0x2f6f('0x24')]]&&this[_0x2f6f('0x9')][_0x45b349[_0x2f6f('0x24')]][_0x45b349[_0x2f6f('0x26')]]){logger[_0x2f6f('0x40')](_0x2f6f('0x55'),_0x45b349['uniqueid'],_0x45b349['membername'],_0x45b349[_0x2f6f('0x26')]);this[_0x2f6f('0x9')][_0x45b349[_0x2f6f('0x24')]][_0x45b349[_0x2f6f('0x26')]]['agentringnoanswer']=!![];this[_0x2f6f('0x9')][_0x45b349[_0x2f6f('0x24')]][_0x45b349[_0x2f6f('0x26')]][_0x2f6f('0x4f')]=moment()[_0x2f6f('0x2a')](_0x2f6f('0x2b'));this['channels'][_0x45b349[_0x2f6f('0x24')]][_0x45b349[_0x2f6f('0x26')]][_0x2f6f('0x47')]=_0x2f6f('0x56');this['channels'][_0x45b349[_0x2f6f('0x24')]][_0x45b349['destuniqueid']][_0x2f6f('0x57')]='rejected';logger[_0x2f6f('0x27')](_0x2f6f('0x58'),_0x45b349[_0x2f6f('0x24')],util[_0x2f6f('0x39')](this[_0x2f6f('0x9')][_0x45b349[_0x2f6f('0x24')]][_0x45b349[_0x2f6f('0x26')]],{'showHidden':![],'depth':null}));ami[_0x2f6f('0x21')]('custom:agentringnoanswer',this[_0x2f6f('0x9')][_0x45b349[_0x2f6f('0x24')]][_0x45b349[_0x2f6f('0x26')]]);}}}catch(_0x532b6d){logger['error'](_0x2f6f('0x59'),_0x45b349[_0x2f6f('0x24')],util['inspect'](_0x532b6d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2f6f('0x20')][_0x2f6f('0x16')]=function(_0x47a8d6){try{if(this[_0x2f6f('0x22')](_0x47a8d6)){logger[_0x2f6f('0x27')]('[%s][voiceAgentReport][queuecallerabandon]\x20event:',_0x47a8d6['uniqueid'],util[_0x2f6f('0x39')](_0x47a8d6,{'showHidden':![],'depth':null}));if(this[_0x2f6f('0x9')][_0x47a8d6[_0x2f6f('0x24')]]){for(var _0x11cf4b in this['channels'][_0x47a8d6[_0x2f6f('0x24')]]){if(this[_0x2f6f('0x9')][_0x47a8d6[_0x2f6f('0x24')]]['hasOwnProperty'](_0x11cf4b)&&!this[_0x2f6f('0x9')][_0x47a8d6[_0x2f6f('0x24')]][_0x11cf4b][_0x2f6f('0x13')]&&!this['channels'][_0x47a8d6[_0x2f6f('0x24')]][_0x11cf4b]['agentcomplete']){logger['info'](_0x2f6f('0x5a'),_0x47a8d6[_0x2f6f('0x24')],this['channels'][_0x47a8d6[_0x2f6f('0x24')]][_0x11cf4b][_0x2f6f('0x25')],_0x11cf4b);this[_0x2f6f('0x9')][_0x47a8d6['uniqueid']][_0x11cf4b][_0x2f6f('0x13')]=!![];this[_0x2f6f('0x9')][_0x47a8d6[_0x2f6f('0x24')]][_0x11cf4b][_0x2f6f('0x4f')]=moment()[_0x2f6f('0x2a')](_0x2f6f('0x2b'));this['channels'][_0x47a8d6[_0x2f6f('0x24')]][_0x11cf4b]['lastevent']=_0x2f6f('0x5b');this[_0x2f6f('0x9')][_0x47a8d6[_0x2f6f('0x24')]][_0x11cf4b][_0x2f6f('0x57')]=_0x2f6f('0x5b');logger[_0x2f6f('0x27')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x47a8d6[_0x2f6f('0x24')],util[_0x2f6f('0x39')](this['channels'][_0x47a8d6[_0x2f6f('0x24')]][_0x11cf4b],{'showHidden':![],'depth':null}));ami[_0x2f6f('0x21')](_0x2f6f('0x5c'),this[_0x2f6f('0x9')][_0x47a8d6[_0x2f6f('0x24')]][_0x11cf4b]);}}}}}catch(_0x1701f7){logger[_0x2f6f('0x3c')](_0x2f6f('0x5d'),_0x47a8d6[_0x2f6f('0x24')],util['inspect'](_0x1701f7,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x2f6f('0x5e')]=function(_0x1cc31c){try{if(this[_0x2f6f('0x22')](_0x1cc31c)){logger[_0x2f6f('0x27')](_0x2f6f('0x5f'),_0x1cc31c[_0x2f6f('0x24')],util[_0x2f6f('0x39')](_0x1cc31c,{'showHidden':![],'depth':null}));if(this[_0x2f6f('0x9')][_0x1cc31c['uniqueid']]){for(var _0x41331d in this[_0x2f6f('0x9')][_0x1cc31c[_0x2f6f('0x24')]]){if(this[_0x2f6f('0x9')][_0x1cc31c[_0x2f6f('0x24')]][_0x2f6f('0x3f')](_0x41331d)){if(this['channels'][_0x1cc31c[_0x2f6f('0x24')]][_0x41331d][_0x2f6f('0x42')]&&!this[_0x2f6f('0x9')][_0x1cc31c['uniqueid']][_0x41331d][_0x2f6f('0x17')]){logger[_0x2f6f('0x40')](_0x2f6f('0x60'),_0x1cc31c[_0x2f6f('0x24')],this[_0x2f6f('0x9')][_0x1cc31c[_0x2f6f('0x24')]][_0x41331d][_0x2f6f('0x25')],_0x41331d);this[_0x2f6f('0x9')][_0x1cc31c[_0x2f6f('0x24')]][_0x41331d][_0x2f6f('0x17')]=!![];this[_0x2f6f('0x9')][_0x1cc31c[_0x2f6f('0x24')]][_0x41331d][_0x2f6f('0x61')]=moment()[_0x2f6f('0x2a')](_0x2f6f('0x2b'));this[_0x2f6f('0x9')][_0x1cc31c[_0x2f6f('0x24')]][_0x41331d][_0x2f6f('0x47')]=_0x2f6f('0x62');this[_0x2f6f('0x9')][_0x1cc31c[_0x2f6f('0x24')]][_0x41331d][_0x2f6f('0x57')]=_0x1cc31c['reason']==_0x2f6f('0x63')?_0x2f6f('0x64'):_0x1cc31c[_0x2f6f('0x57')];this[_0x2f6f('0x9')][_0x1cc31c['uniqueid']][_0x41331d][_0x2f6f('0x65')]=_0x1cc31c['talktime'];if(this[_0x2f6f('0xb')][_0x1cc31c[_0x2f6f('0x2d')]]&&this['voiceQueues'][_0x1cc31c[_0x2f6f('0x2d')]][_0x2f6f('0x66')]){this[_0x2f6f('0x9')][_0x1cc31c[_0x2f6f('0x24')]][_0x41331d][_0x2f6f('0x67')]=this[_0x2f6f('0xb')][_0x1cc31c[_0x2f6f('0x2d')]][_0x2f6f('0x68')];this[_0x2f6f('0x9')][_0x1cc31c[_0x2f6f('0x24')]][_0x41331d][_0x2f6f('0x69')]=!![];}this['agents'][_0x1cc31c['interface']]=_['omit'](this[_0x2f6f('0xc')][_0x1cc31c[_0x2f6f('0x36')]],[_0x2f6f('0x2d'),'destconnectedlinenum']);logger[_0x2f6f('0x27')](_0x2f6f('0x6a'),_0x1cc31c[_0x2f6f('0x24')],util[_0x2f6f('0x39')](this[_0x2f6f('0x9')][_0x1cc31c[_0x2f6f('0x24')]][_0x41331d],{'showHidden':![],'depth':null}));ami['emit'](_0x2f6f('0x6b'),this['channels'][_0x1cc31c[_0x2f6f('0x24')]][_0x41331d]);logger[_0x2f6f('0x27')](_0x2f6f('0x6c'),_0x1cc31c['uniqueid'],util[_0x2f6f('0x39')]({'id':this[_0x2f6f('0xc')][_0x1cc31c[_0x2f6f('0x36')]]['id'],'destaccountcode':_0x1cc31c[_0x2f6f('0x6d')]},{'showHidden':![],'depth':null}));this[_0x2f6f('0x21')](util['format'](_0x2f6f('0x3a'),_0x1cc31c['membername']),_0x2f6f('0x6e'),{'id':this['agents'][_0x1cc31c[_0x2f6f('0x36')]]['id'],'destaccountcode':_0x1cc31c[_0x2f6f('0x6d')]});}}}}}}catch(_0x268cbb){logger[_0x2f6f('0x3c')](_0x2f6f('0x6f'),_0x1cc31c[_0x2f6f('0x24')],util[_0x2f6f('0x39')](_0x268cbb,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x2f6f('0x19')]=function(_0x24a11f){try{if(this[_0x2f6f('0x22')](_0x24a11f)){logger[_0x2f6f('0x27')](_0x2f6f('0x70'),_0x24a11f[_0x2f6f('0x24')],util[_0x2f6f('0x39')](_0x24a11f,{'showHidden':![],'depth':null}));this[_0x2f6f('0x71')](_0x24a11f[_0x2f6f('0x24')],_[_0x2f6f('0x72')](_0x24a11f[_0x2f6f('0x73')])[0x0],_0x24a11f[_0x2f6f('0x74')]);if(this[_0x2f6f('0x9')][_0x24a11f[_0x2f6f('0x24')]]){for(var _0x13bc75 in this['channels'][_0x24a11f[_0x2f6f('0x24')]]){if(this[_0x2f6f('0x9')][_0x24a11f['uniqueid']][_0x2f6f('0x3f')](_0x13bc75)){logger[_0x2f6f('0x40')](_0x2f6f('0x75'),_0x24a11f[_0x2f6f('0x24')],_0x13bc75,_[_0x2f6f('0x72')](_0x24a11f[_0x2f6f('0x73')])[0x0],_0x24a11f[_0x2f6f('0x74')]);if(_[_0x2f6f('0x29')](this[_0x2f6f('0x9')][_0x24a11f[_0x2f6f('0x24')]][_0x13bc75][_0x2f6f('0xd')])){this[_0x2f6f('0x9')][_0x24a11f[_0x2f6f('0x24')]][_0x13bc75][_0x2f6f('0xd')]={};}this[_0x2f6f('0x9')][_0x24a11f[_0x2f6f('0x24')]][_0x13bc75]['variables']=this['variables'][_0x24a11f[_0x2f6f('0x24')]];}}}}}catch(_0x5565d1){logger[_0x2f6f('0x3c')](_0x2f6f('0x76'),_0x24a11f[_0x2f6f('0x24')],util[_0x2f6f('0x39')](_0x5565d1,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2f6f('0x20')][_0x2f6f('0x71')]=function(_0x432fdc,_0x4b89c5,_0x431c7c){var _0x2f835c=[_0x2f6f('0x77'),'rtpaudioqosbridged',_0x2f6f('0x78'),_0x2f6f('0x79'),_0x2f6f('0x7a'),_0x2f6f('0x7b'),_0x2f6f('0x7c'),_0x2f6f('0x7d'),_0x2f6f('0x7e'),_0x2f6f('0x7f'),_0x2f6f('0x80'),'bridgepvtcallid',_0x2f6f('0x81'),_0x2f6f('0x82'),'memberinterface',_0x2f6f('0x83'),_0x2f6f('0x25'),_0x2f6f('0x84'),_0x2f6f('0x85')];if(!_[_0x2f6f('0x86')](_0x4b89c5)&&!_[_0x2f6f('0x87')](_0x2f835c,_0x4b89c5)){if(_[_0x2f6f('0x29')](this['variables'][_0x432fdc])){this['variables'][_0x432fdc]={};}this[_0x2f6f('0xd')][_0x432fdc][_0x4b89c5]=_0x431c7c;}};VoiceAgentReport['prototype']['syncHangup']=function(_0x5bce2b){try{if(this[_0x2f6f('0x22')](_0x5bce2b)){logger['debug'](_0x2f6f('0x88'),_0x5bce2b[_0x2f6f('0x24')],util['inspect'](_0x5bce2b,{'showHidden':![],'depth':null}));if(this[_0x2f6f('0x9')][_0x5bce2b[_0x2f6f('0x24')]]){for(var _0x502d8f in this['channels'][_0x5bce2b[_0x2f6f('0x24')]]){if(this[_0x2f6f('0x9')][_0x5bce2b['uniqueid']][_0x2f6f('0x3f')](_0x502d8f)){if(this[_0x2f6f('0x9')][_0x5bce2b[_0x2f6f('0x24')]][_0x502d8f][_0x2f6f('0x57')]=='transfer'&&this[_0x2f6f('0x9')][_0x5bce2b[_0x2f6f('0x24')]][_0x502d8f][_0x2f6f('0x17')]){logger[_0x2f6f('0x40')](_0x2f6f('0x89'),_0x5bce2b[_0x2f6f('0x24')],_0x502d8f);this['channels'][_0x5bce2b['uniqueid']][_0x502d8f]['agentcompleteAt']=moment()[_0x2f6f('0x2a')](_0x2f6f('0x2b'));}}}logger[_0x2f6f('0x27')](_0x2f6f('0x8a'),_0x5bce2b[_0x2f6f('0x24')],util[_0x2f6f('0x39')](_[_0x2f6f('0x8b')](this[_0x2f6f('0x9')][_0x5bce2b[_0x2f6f('0x24')]]),{'showHidden':![],'depth':null}));ami[_0x2f6f('0x21')]('custom:voiceAgentReport',_[_0x2f6f('0x8b')](this[_0x2f6f('0x9')][_0x5bce2b[_0x2f6f('0x24')]]));delete this[_0x2f6f('0x9')][_0x5bce2b['uniqueid']];}if(this[_0x2f6f('0xd')][_0x5bce2b[_0x2f6f('0x24')]]){delete this['variables'][_0x5bce2b[_0x2f6f('0x24')]];}}}catch(_0x27a83e){logger[_0x2f6f('0x3c')](_0x2f6f('0x8c'),_0x5bce2b[_0x2f6f('0x24')],util['inspect'](_0x27a83e,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2f6f('0x20')]['syncAttendedTransfer']=function(_0x4bfcf7){try{if(this[_0x2f6f('0x22')](_0x4bfcf7)){logger[_0x2f6f('0x27')](_0x2f6f('0x8d'),_0x4bfcf7['uniqueid'],util[_0x2f6f('0x39')](_0x4bfcf7,{'showHidden':![],'depth':null}));if(this[_0x2f6f('0x9')][_0x4bfcf7[_0x2f6f('0x8e')]]){for(var _0x198aa9 in this[_0x2f6f('0x9')][_0x4bfcf7[_0x2f6f('0x8e')]]){if(this[_0x2f6f('0x9')][_0x4bfcf7['transfereeuniqueid']][_0x2f6f('0x3f')](_0x198aa9)){if(_0x4bfcf7[_0x2f6f('0x8f')]===_0x198aa9){logger[_0x2f6f('0x40')]('[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x4bfcf7[_0x2f6f('0x24')],this['channels'][_0x4bfcf7[_0x2f6f('0x8e')]][_0x198aa9]['membername'],_0x198aa9);var _0x17efb7=moment();this[_0x2f6f('0x9')][_0x4bfcf7[_0x2f6f('0x8e')]][_0x198aa9]['agentcomplete']=!![];this[_0x2f6f('0x9')][_0x4bfcf7[_0x2f6f('0x8e')]][_0x198aa9]['agentcompleteAt']=moment()['format'](_0x2f6f('0x2b'));this[_0x2f6f('0x9')][_0x4bfcf7[_0x2f6f('0x8e')]][_0x198aa9]['lastevent']=_0x2f6f('0x62');this[_0x2f6f('0x9')][_0x4bfcf7['transfereeuniqueid']][_0x198aa9][_0x2f6f('0x57')]='transfer';this[_0x2f6f('0x9')][_0x4bfcf7[_0x2f6f('0x8e')]][_0x198aa9][_0x2f6f('0x65')]=_0x17efb7[_0x2f6f('0x90')](this['channels'][_0x4bfcf7['transfereeuniqueid']][_0x198aa9][_0x2f6f('0x42')],_0x2f6f('0x91'));}}}}if(this[_0x2f6f('0x9')][_0x4bfcf7[_0x2f6f('0x92')]]){var _0x2a30a0=this['channels'][_0x4bfcf7[_0x2f6f('0x92')]];this[_0x2f6f('0x9')][_0x4bfcf7[_0x2f6f('0x92')]]=this[_0x2f6f('0x9')][_0x4bfcf7[_0x2f6f('0x8e')]];this[_0x2f6f('0x9')][_0x4bfcf7[_0x2f6f('0x8e')]]=_0x2a30a0;}}}catch(_0x534bf9){logger[_0x2f6f('0x3c')](_0x2f6f('0x93'),_0x4bfcf7[_0x2f6f('0x24')],util[_0x2f6f('0x39')](_0x534bf9,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2f6f('0x20')]['syncBlindTransfer']=function(_0x833bd1){try{if(this[_0x2f6f('0x22')](_0x833bd1)){logger['debug'](_0x2f6f('0x94'),_0x833bd1[_0x2f6f('0x24')],util[_0x2f6f('0x39')](_0x833bd1,{'showHidden':![],'depth':null}));if(this[_0x2f6f('0x9')][_0x833bd1[_0x2f6f('0x8e')]]){for(var _0x159b31 in this['channels'][_0x833bd1[_0x2f6f('0x8e')]]){if(this[_0x2f6f('0x9')][_0x833bd1[_0x2f6f('0x8e')]][_0x2f6f('0x3f')](_0x159b31)){if(_0x833bd1['transfereruniqueid']===_0x159b31){logger[_0x2f6f('0x40')](_0x2f6f('0x95'),_0x833bd1[_0x2f6f('0x24')],this[_0x2f6f('0x9')][_0x833bd1['transfereeuniqueid']][_0x159b31][_0x2f6f('0x25')],_0x159b31);var _0x54f799=moment();this[_0x2f6f('0x9')][_0x833bd1['transfereeuniqueid']][_0x159b31][_0x2f6f('0x17')]=!![];this[_0x2f6f('0x9')][_0x833bd1[_0x2f6f('0x8e')]][_0x159b31]['agentcompleteAt']=_0x54f799;this['channels'][_0x833bd1[_0x2f6f('0x8e')]][_0x159b31][_0x2f6f('0x47')]=_0x2f6f('0x62');this[_0x2f6f('0x9')][_0x833bd1[_0x2f6f('0x8e')]][_0x159b31][_0x2f6f('0x57')]=_0x2f6f('0x63');this[_0x2f6f('0x9')][_0x833bd1[_0x2f6f('0x8e')]][_0x159b31][_0x2f6f('0x65')]=_0x54f799[_0x2f6f('0x90')](this['channels'][_0x833bd1[_0x2f6f('0x8e')]][_0x159b31][_0x2f6f('0x42')],_0x2f6f('0x91'));}}}}}}catch(_0x574ed0){logger[_0x2f6f('0x3c')](_0x2f6f('0x96'),_0x833bd1[_0x2f6f('0x24')],util[_0x2f6f('0x39')](_0x574ed0,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2f6f('0x20')]['syncMusicOnHoldStart']=function(_0x3297a4){var _0x2566be='';try{if(this[_0x2f6f('0x22')](_0x3297a4)){logger[_0x2f6f('0x27')](_0x2f6f('0x97'),_0x3297a4['uniqueid'],util[_0x2f6f('0x39')](_0x3297a4,{'showHidden':![],'depth':null}));if(_0x3297a4['channel']){_0x2566be=_0x3297a4[_0x2f6f('0x98')]['substring'](0x0,_0x3297a4[_0x2f6f('0x98')][_0x2f6f('0x99')]('-'));if(this[_0x2f6f('0xc')][_0x2566be]){logger[_0x2f6f('0x40')](_0x2f6f('0x9a'),_0x3297a4[_0x2f6f('0x24')],_0x2566be);this[_0x2f6f('0xc')][_0x2566be][_0x2f6f('0x9b')]=!![];}}}}catch(_0x4fc0d1){logger['error'](_0x2f6f('0x9c'),_0x3297a4[_0x2f6f('0x24')],util['inspect'](_0x4fc0d1,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2f6f('0x20')][_0x2f6f('0x1e')]=function(_0x2c6910){var _0x422522='';try{if(this[_0x2f6f('0x22')](_0x2c6910)){logger[_0x2f6f('0x27')](_0x2f6f('0x9d'),_0x2c6910['uniqueid'],util['inspect'](_0x2c6910,{'showHidden':![],'depth':null}));if(_0x2c6910[_0x2f6f('0x98')]){_0x422522=_0x2c6910[_0x2f6f('0x98')][_0x2f6f('0x9e')](0x0,_0x2c6910['channel'][_0x2f6f('0x99')]('-'));if(this[_0x2f6f('0xc')][_0x422522]){logger[_0x2f6f('0x40')](_0x2f6f('0x9f'),_0x2c6910[_0x2f6f('0x24')],_0x422522);this[_0x2f6f('0xc')][_0x422522][_0x2f6f('0x9b')]=![];}}}}catch(_0x14d2bc){logger[_0x2f6f('0x3c')](_0x2f6f('0xa0'),_0x2c6910[_0x2f6f('0x24')],util[_0x2f6f('0x39')](_0x14d2bc,{'showHidden':![],'depth':null}));}};module['exports']=VoiceAgentReport;
\ No newline at end of file
+var _0x5e39=['syncHangup','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','prototype','emit','isUndefined','isNotNull','info','uniqueid','membername','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','destuniqueid','format','queue','type','inbound','voice','merge','omit','event','privilege','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','calleridnum','debug','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:called','error','[%s][voiceAgentReport][agentcalled]','syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','agentringnoanswer','agentcomplete','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','YYYY-MM-DD\x20HH:mm:ss','answeredelsewheremembername','answered_elsewhere','reason','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentconnect]','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%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:','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','transfer','agent','talktime','acwtime','acwTimeout','agentacw','interface','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','user:%s','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','value','keys','variable','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','custom:voiceAgentReport','values','[%s][voiceAgentReport][hangup]','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','diff','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','substring','lastIndexOf','onhold','[%s][voiceAgentReport][musiconholdstop]','exports','moment','ioredis','../../../config/environment','ami','../ami','defaults','localhost','redis','channels','voiceChannels','voiceQueues','agents','variables','syncAgentCalled','bind','agentconnect','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','syncAgentComplete','varset','hangup'];(function(_0x2ff6be,_0x3f4984){var _0x44e2dd=function(_0x5d978e){while(--_0x5d978e){_0x2ff6be['push'](_0x2ff6be['shift']());}};_0x44e2dd(++_0x3f4984);}(_0x5e39,0x128));var _0x95e3=function(_0x18d922,_0x2d8e31){_0x18d922=_0x18d922-0x0;var _0x433d32=_0x5e39[_0x18d922];return _0x433d32;};'use strict';var _=require('lodash');var moment=require(_0x95e3('0x0'));var util=require('util');var Redis=require(_0x95e3('0x1'));var config=require(_0x95e3('0x2'));var logger=require('../../../config/logger')(_0x95e3('0x3'));var ami=require(_0x95e3('0x4'));config['redis']=_[_0x95e3('0x5')](config['redis'],{'host':_0x95e3('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x95e3('0x7')]));function VoiceAgentReport(_0x2a91d9){this[_0x95e3('0x8')]={};this[_0x95e3('0x9')]=_0x2a91d9['channels'];this[_0x95e3('0xa')]=_0x2a91d9[_0x95e3('0xa')];this[_0x95e3('0xb')]=_0x2a91d9['agents'];this[_0x95e3('0xc')]={};ami['on']('agentcalled',this[_0x95e3('0xd')][_0x95e3('0xe')](this));ami['on'](_0x95e3('0xf'),this['syncAgentConnect'][_0x95e3('0xe')](this));ami['on']('agentringnoanswer',this[_0x95e3('0x10')][_0x95e3('0xe')](this));ami['on'](_0x95e3('0x11'),this[_0x95e3('0x12')][_0x95e3('0xe')](this));ami['on']('agentcomplete',this[_0x95e3('0x13')][_0x95e3('0xe')](this));ami['on'](_0x95e3('0x14'),this['syncVarSet'][_0x95e3('0xe')](this));ami['on'](_0x95e3('0x15'),this[_0x95e3('0x16')]['bind'](this));ami['on']('musiconholdstart',this[_0x95e3('0x17')][_0x95e3('0xe')](this));ami['on'](_0x95e3('0x18'),this[_0x95e3('0x19')]['bind'](this));ami['on'](_0x95e3('0x1a'),this[_0x95e3('0x1b')][_0x95e3('0xe')](this));ami['on'](_0x95e3('0x1c'),this[_0x95e3('0x1d')][_0x95e3('0xe')](this));}VoiceAgentReport[_0x95e3('0x1e')]['emit']=function(_0x56b09b,_0x5d6cd3,_0x4af871){io['to'](_0x56b09b)[_0x95e3('0x1f')](_0x5d6cd3,_0x4af871);};VoiceAgentReport[_0x95e3('0x1e')]['isNotNull']=function(_0xdfee6a){return _0xdfee6a!==null&&!_[_0x95e3('0x20')](_0xdfee6a);};VoiceAgentReport['prototype'][_0x95e3('0xd')]=function(_0x4b1841){try{if(this[_0x95e3('0x21')](_0x4b1841)){logger[_0x95e3('0x22')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x4b1841[_0x95e3('0x23')],_0x4b1841[_0x95e3('0x24')],_0x4b1841['destuniqueid']);logger['debug'](_0x95e3('0x25'),_0x4b1841[_0x95e3('0x23')],util[_0x95e3('0x26')](_0x4b1841,{'showHidden':![],'depth':null}));if(_[_0x95e3('0x20')](this[_0x95e3('0x8')][_0x4b1841[_0x95e3('0x23')]])){this[_0x95e3('0x8')][_0x4b1841[_0x95e3('0x23')]]={};}if(_[_0x95e3('0x20')](this['channels'][_0x4b1841[_0x95e3('0x23')]][_0x4b1841[_0x95e3('0x27')]])){this[_0x95e3('0x8')][_0x4b1841[_0x95e3('0x23')]][_0x4b1841[_0x95e3('0x27')]]={'agentcalledAt':moment()[_0x95e3('0x28')]('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':'called','mandatoryDisposition':this[_0x95e3('0xa')][_0x4b1841[_0x95e3('0x29')]]?this[_0x95e3('0xa')][_0x4b1841['queue']]['mandatoryDisposition']||![]:![],'type':this[_0x95e3('0xa')][_0x4b1841[_0x95e3('0x29')]]?this[_0x95e3('0xa')][_0x4b1841[_0x95e3('0x29')]][_0x95e3('0x2a')]||'inbound':_0x95e3('0x2b'),'variables':this[_0x95e3('0xc')][_0x4b1841[_0x95e3('0x23')]],'motionChannel':_0x95e3('0x2c')};}_[_0x95e3('0x2d')](this[_0x95e3('0x8')][_0x4b1841[_0x95e3('0x23')]][_0x4b1841[_0x95e3('0x27')]],_[_0x95e3('0x2e')](_0x4b1841,[_0x95e3('0x2f'),_0x95e3('0x30')]));logger['debug'](_0x95e3('0x31'),_0x4b1841[_0x95e3('0x23')],util['inspect'](this['channels'][_0x4b1841[_0x95e3('0x23')]][_0x4b1841[_0x95e3('0x27')]],{'showHidden':![],'depth':null}));ami[_0x95e3('0x1f')](_0x95e3('0x32'),this[_0x95e3('0x8')][_0x4b1841[_0x95e3('0x23')]][_0x4b1841['destuniqueid']]);var _0x288643={'id':this[_0x95e3('0xb')][_0x4b1841['interface']]['id'],'calleridnum':this[_0x95e3('0x8')][_0x4b1841['uniqueid']][_0x4b1841['destuniqueid']][_0x95e3('0x33')],'queue':this[_0x95e3('0x8')][_0x4b1841['uniqueid']][_0x4b1841[_0x95e3('0x27')]]['queue'],'variables':this[_0x95e3('0x8')][_0x4b1841[_0x95e3('0x23')]][_0x4b1841[_0x95e3('0x27')]][_0x95e3('0xc')]};logger[_0x95e3('0x34')](_0x95e3('0x35'),_0x4b1841[_0x95e3('0x23')],util[_0x95e3('0x26')](_0x288643,{'showHidden':![],'depth':null}));this[_0x95e3('0x1f')](util['format']('user:%s',_0x4b1841[_0x95e3('0x24')]),_0x95e3('0x36'),_0x288643);}}catch(_0x49282b){logger[_0x95e3('0x37')](_0x95e3('0x38'),_0x4b1841[_0x95e3('0x23')],util['inspect'](_0x49282b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x95e3('0x1e')][_0x95e3('0x39')]=function(_0x3a1f6b){try{if(this[_0x95e3('0x21')](_0x3a1f6b)){if(this[_0x95e3('0x8')][_0x3a1f6b[_0x95e3('0x23')]]){logger['debug'](_0x95e3('0x3a'),_0x3a1f6b['uniqueid'],util[_0x95e3('0x26')](_0x3a1f6b,{'showHidden':![],'depth':null}));for(var _0x20670 in this[_0x95e3('0x8')][_0x3a1f6b[_0x95e3('0x23')]]){if(this['channels'][_0x3a1f6b[_0x95e3('0x23')]][_0x95e3('0x3b')](_0x20670)){if(_0x3a1f6b[_0x95e3('0x27')]===_0x20670){logger[_0x95e3('0x22')](_0x95e3('0x3c'),_0x3a1f6b[_0x95e3('0x23')],_0x3a1f6b[_0x95e3('0x24')],_0x3a1f6b[_0x95e3('0x27')]);this[_0x95e3('0x8')][_0x3a1f6b[_0x95e3('0x23')]][_0x20670][_0x95e3('0x3d')]=moment()[_0x95e3('0x28')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x95e3('0x8')][_0x3a1f6b[_0x95e3('0x23')]][_0x20670]['connectedlinename']=_0x3a1f6b['connectedlinename'];this['channels'][_0x3a1f6b[_0x95e3('0x23')]][_0x20670][_0x95e3('0x3e')]=_0x3a1f6b['connectedlinenum'];this[_0x95e3('0x8')][_0x3a1f6b[_0x95e3('0x23')]][_0x20670][_0x95e3('0x3f')]=_0x3a1f6b[_0x95e3('0x3f')];this[_0x95e3('0x8')][_0x3a1f6b[_0x95e3('0x23')]][_0x20670][_0x95e3('0x40')]=_0x3a1f6b[_0x95e3('0x40')];this[_0x95e3('0x8')][_0x3a1f6b[_0x95e3('0x23')]][_0x20670][_0x95e3('0x41')]=_0x3a1f6b['holdtime'];this[_0x95e3('0x8')][_0x3a1f6b[_0x95e3('0x23')]][_0x20670][_0x95e3('0x42')]=_0x95e3('0x43');if(this['voiceChannels'][this['channels'][_0x3a1f6b[_0x95e3('0x23')]][_0x20670][_0x95e3('0x23')]]){var _0x93c852=this[_0x95e3('0x9')][this[_0x95e3('0x8')][_0x3a1f6b['uniqueid']][_0x20670][_0x95e3('0x23')]][_0x95e3('0x44')];this[_0x95e3('0x8')][_0x3a1f6b['uniqueid']][_0x20670][_0x95e3('0x44')]=_0x93c852;_0x3a1f6b[_0x95e3('0x44')]=_0x93c852;}_[_0x95e3('0x2d')](this['agents'][_0x3a1f6b['interface']],_[_0x95e3('0x45')](_0x3a1f6b,[_0x95e3('0x29'),_0x95e3('0x46'),_0x95e3('0x44')]));logger[_0x95e3('0x34')](_0x95e3('0x47'),_0x3a1f6b[_0x95e3('0x23')],util[_0x95e3('0x26')](this[_0x95e3('0x8')][_0x3a1f6b[_0x95e3('0x23')]][_0x3a1f6b[_0x95e3('0x27')]],{'showHidden':![],'depth':null}));ami['emit'](_0x95e3('0x48'),this[_0x95e3('0x8')][_0x3a1f6b['uniqueid']][_0x3a1f6b['destuniqueid']]);logger[_0x95e3('0x34')](_0x95e3('0x49'),_0x3a1f6b['uniqueid'],util[_0x95e3('0x26')](this[_0x95e3('0x8')][_0x3a1f6b[_0x95e3('0x23')]][_0x3a1f6b[_0x95e3('0x27')]],{'showHidden':![],'depth':null}));this['emit'](util['format']('user:%s',_0x3a1f6b['membername']),'user:agentconnect',this[_0x95e3('0x8')][_0x3a1f6b[_0x95e3('0x23')]][_0x3a1f6b[_0x95e3('0x27')]]);}else if(!this['channels'][_0x3a1f6b[_0x95e3('0x23')]][_0x20670][_0x95e3('0x4a')]&&!this[_0x95e3('0x8')][_0x3a1f6b['uniqueid']][_0x20670][_0x95e3('0x4b')]){logger[_0x95e3('0x22')](_0x95e3('0x4c'),_0x3a1f6b[_0x95e3('0x23')],this[_0x95e3('0x8')][_0x3a1f6b[_0x95e3('0x23')]][_0x20670][_0x95e3('0x24')],_0x20670);this[_0x95e3('0x8')][_0x3a1f6b[_0x95e3('0x23')]][_0x20670][_0x95e3('0x4a')]=!![];this[_0x95e3('0x8')][_0x3a1f6b[_0x95e3('0x23')]][_0x20670][_0x95e3('0x4d')]=moment()['format'](_0x95e3('0x4e'));this[_0x95e3('0x8')][_0x3a1f6b['uniqueid']][_0x20670]['answeredelsewheredestinationuniqueid']=_0x3a1f6b[_0x95e3('0x27')];this[_0x95e3('0x8')][_0x3a1f6b[_0x95e3('0x23')]][_0x20670][_0x95e3('0x4f')]=_0x3a1f6b['membername'];this[_0x95e3('0x8')][_0x3a1f6b[_0x95e3('0x23')]][_0x20670][_0x95e3('0x42')]=_0x95e3('0x50');this[_0x95e3('0x8')][_0x3a1f6b['uniqueid']][_0x20670][_0x95e3('0x51')]=_0x95e3('0x50');logger[_0x95e3('0x34')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x3a1f6b[_0x95e3('0x23')],util[_0x95e3('0x26')](this[_0x95e3('0x8')][_0x3a1f6b[_0x95e3('0x23')]][_0x20670],{'showHidden':![],'depth':null}));ami['emit'](_0x95e3('0x52'),this[_0x95e3('0x8')][_0x3a1f6b[_0x95e3('0x23')]][_0x20670]);}}}}}}catch(_0x4abf65){logger[_0x95e3('0x37')](_0x95e3('0x53'),_0x3a1f6b[_0x95e3('0x23')],util[_0x95e3('0x26')](_0x4abf65,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x95e3('0x1e')][_0x95e3('0x10')]=function(_0x2bd58e){try{if(this[_0x95e3('0x21')](_0x2bd58e)){logger['debug'](_0x95e3('0x54'),_0x2bd58e['uniqueid'],util[_0x95e3('0x26')](_0x2bd58e,{'showHidden':![],'depth':null}));if(this['channels'][_0x2bd58e['uniqueid']]&&this[_0x95e3('0x8')][_0x2bd58e['uniqueid']][_0x2bd58e[_0x95e3('0x27')]]){logger[_0x95e3('0x22')](_0x95e3('0x55'),_0x2bd58e['uniqueid'],_0x2bd58e[_0x95e3('0x24')],_0x2bd58e[_0x95e3('0x27')]);this['channels'][_0x2bd58e[_0x95e3('0x23')]][_0x2bd58e['destuniqueid']][_0x95e3('0x4a')]=!![];this[_0x95e3('0x8')][_0x2bd58e['uniqueid']][_0x2bd58e[_0x95e3('0x27')]][_0x95e3('0x4d')]=moment()[_0x95e3('0x28')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x95e3('0x8')][_0x2bd58e[_0x95e3('0x23')]][_0x2bd58e['destuniqueid']][_0x95e3('0x42')]=_0x95e3('0x56');this[_0x95e3('0x8')][_0x2bd58e[_0x95e3('0x23')]][_0x2bd58e[_0x95e3('0x27')]]['reason']='rejected';logger['debug'](_0x95e3('0x57'),_0x2bd58e[_0x95e3('0x23')],util[_0x95e3('0x26')](this[_0x95e3('0x8')][_0x2bd58e['uniqueid']][_0x2bd58e['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0x95e3('0x1f')](_0x95e3('0x58'),this[_0x95e3('0x8')][_0x2bd58e[_0x95e3('0x23')]][_0x2bd58e['destuniqueid']]);}}}catch(_0x5ee38a){logger[_0x95e3('0x37')](_0x95e3('0x59'),_0x2bd58e['uniqueid'],util['inspect'](_0x5ee38a,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x95e3('0x1e')]['syncQueueCallerAbandon']=function(_0x18f1e6){try{if(this[_0x95e3('0x21')](_0x18f1e6)){logger['debug'](_0x95e3('0x5a'),_0x18f1e6[_0x95e3('0x23')],util[_0x95e3('0x26')](_0x18f1e6,{'showHidden':![],'depth':null}));if(this[_0x95e3('0x8')][_0x18f1e6[_0x95e3('0x23')]]){for(var _0x4c567c in this['channels'][_0x18f1e6[_0x95e3('0x23')]]){if(this[_0x95e3('0x8')][_0x18f1e6[_0x95e3('0x23')]][_0x95e3('0x3b')](_0x4c567c)&&!this[_0x95e3('0x8')][_0x18f1e6[_0x95e3('0x23')]][_0x4c567c][_0x95e3('0x4a')]&&!this[_0x95e3('0x8')][_0x18f1e6[_0x95e3('0x23')]][_0x4c567c][_0x95e3('0x4b')]){logger[_0x95e3('0x22')](_0x95e3('0x5b'),_0x18f1e6['uniqueid'],this[_0x95e3('0x8')][_0x18f1e6[_0x95e3('0x23')]][_0x4c567c][_0x95e3('0x24')],_0x4c567c);this[_0x95e3('0x8')][_0x18f1e6['uniqueid']][_0x4c567c][_0x95e3('0x4a')]=!![];this[_0x95e3('0x8')][_0x18f1e6[_0x95e3('0x23')]][_0x4c567c][_0x95e3('0x4d')]=moment()[_0x95e3('0x28')](_0x95e3('0x4e'));this['channels'][_0x18f1e6[_0x95e3('0x23')]][_0x4c567c][_0x95e3('0x42')]='abandoned';this[_0x95e3('0x8')][_0x18f1e6[_0x95e3('0x23')]][_0x4c567c][_0x95e3('0x51')]=_0x95e3('0x5c');logger[_0x95e3('0x34')](_0x95e3('0x5d'),_0x18f1e6['uniqueid'],util['inspect'](this['channels'][_0x18f1e6[_0x95e3('0x23')]][_0x4c567c],{'showHidden':![],'depth':null}));ami[_0x95e3('0x1f')](_0x95e3('0x5e'),this['channels'][_0x18f1e6[_0x95e3('0x23')]][_0x4c567c]);}}}}}catch(_0x5df568){logger[_0x95e3('0x37')](_0x95e3('0x5f'),_0x18f1e6[_0x95e3('0x23')],util[_0x95e3('0x26')](_0x5df568,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncAgentComplete']=function(_0x2475e3){try{if(this[_0x95e3('0x21')](_0x2475e3)){logger[_0x95e3('0x34')](_0x95e3('0x60'),_0x2475e3[_0x95e3('0x23')],util[_0x95e3('0x26')](_0x2475e3,{'showHidden':![],'depth':null}));if(this[_0x95e3('0x8')][_0x2475e3[_0x95e3('0x23')]]){for(var _0x1443bd in this[_0x95e3('0x8')][_0x2475e3[_0x95e3('0x23')]]){if(this['channels'][_0x2475e3[_0x95e3('0x23')]][_0x95e3('0x3b')](_0x1443bd)){if(this[_0x95e3('0x8')][_0x2475e3[_0x95e3('0x23')]][_0x1443bd][_0x95e3('0x3d')]&&!this[_0x95e3('0x8')][_0x2475e3['uniqueid']][_0x1443bd]['agentcomplete']){logger[_0x95e3('0x22')](_0x95e3('0x61'),_0x2475e3['uniqueid'],this[_0x95e3('0x8')][_0x2475e3[_0x95e3('0x23')]][_0x1443bd][_0x95e3('0x24')],_0x1443bd);this[_0x95e3('0x8')][_0x2475e3[_0x95e3('0x23')]][_0x1443bd][_0x95e3('0x4b')]=!![];this[_0x95e3('0x8')][_0x2475e3[_0x95e3('0x23')]][_0x1443bd][_0x95e3('0x62')]=moment()[_0x95e3('0x28')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x95e3('0x8')][_0x2475e3[_0x95e3('0x23')]][_0x1443bd][_0x95e3('0x42')]=_0x95e3('0x63');this[_0x95e3('0x8')][_0x2475e3[_0x95e3('0x23')]][_0x1443bd][_0x95e3('0x51')]=_0x2475e3[_0x95e3('0x51')]==_0x95e3('0x64')?_0x95e3('0x65'):_0x2475e3[_0x95e3('0x51')];this['channels'][_0x2475e3[_0x95e3('0x23')]][_0x1443bd][_0x95e3('0x66')]=_0x2475e3[_0x95e3('0x66')];if(this[_0x95e3('0xa')][_0x2475e3[_0x95e3('0x29')]]&&this[_0x95e3('0xa')][_0x2475e3['queue']]['acw']){this[_0x95e3('0x8')][_0x2475e3[_0x95e3('0x23')]][_0x1443bd][_0x95e3('0x67')]=this[_0x95e3('0xa')][_0x2475e3[_0x95e3('0x29')]][_0x95e3('0x68')];this[_0x95e3('0x8')][_0x2475e3['uniqueid']][_0x1443bd][_0x95e3('0x69')]=!![];}this[_0x95e3('0xb')][_0x2475e3[_0x95e3('0x6a')]]=_[_0x95e3('0x2e')](this[_0x95e3('0xb')][_0x2475e3[_0x95e3('0x6a')]],['queue',_0x95e3('0x46')]);logger[_0x95e3('0x34')](_0x95e3('0x6b'),_0x2475e3['uniqueid'],util['inspect'](this[_0x95e3('0x8')][_0x2475e3[_0x95e3('0x23')]][_0x1443bd],{'showHidden':![],'depth':null}));ami['emit']('custom:agentcomplete',this[_0x95e3('0x8')][_0x2475e3['uniqueid']][_0x1443bd]);logger['debug'](_0x95e3('0x6c'),_0x2475e3[_0x95e3('0x23')],util[_0x95e3('0x26')]({'id':this['agents'][_0x2475e3['interface']]['id'],'destaccountcode':_0x2475e3['destaccountcode']},{'showHidden':![],'depth':null}));this[_0x95e3('0x1f')](util[_0x95e3('0x28')](_0x95e3('0x6d'),_0x2475e3[_0x95e3('0x24')]),_0x95e3('0x6e'),{'id':this[_0x95e3('0xb')][_0x2475e3[_0x95e3('0x6a')]]['id'],'destaccountcode':_0x2475e3['destaccountcode']});}}}}}}catch(_0x48a4d1){logger[_0x95e3('0x37')](_0x95e3('0x6f'),_0x2475e3['uniqueid'],util[_0x95e3('0x26')](_0x48a4d1,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncVarSet']=function(_0x2d18ec){try{if(this[_0x95e3('0x21')](_0x2d18ec)){logger[_0x95e3('0x34')](_0x95e3('0x70'),_0x2d18ec[_0x95e3('0x23')],util[_0x95e3('0x26')](_0x2d18ec,{'showHidden':![],'depth':null}));this[_0x95e3('0x71')](_0x2d18ec[_0x95e3('0x23')],_['keys'](_0x2d18ec['variable'])[0x0],_0x2d18ec[_0x95e3('0x72')]);if(this['channels'][_0x2d18ec[_0x95e3('0x23')]]){for(var _0x38f5d1 in this[_0x95e3('0x8')][_0x2d18ec[_0x95e3('0x23')]]){if(this[_0x95e3('0x8')][_0x2d18ec[_0x95e3('0x23')]][_0x95e3('0x3b')](_0x38f5d1)){logger['info']('[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s',_0x2d18ec[_0x95e3('0x23')],_0x38f5d1,_[_0x95e3('0x73')](_0x2d18ec[_0x95e3('0x74')])[0x0],_0x2d18ec[_0x95e3('0x72')]);if(_[_0x95e3('0x20')](this[_0x95e3('0x8')][_0x2d18ec[_0x95e3('0x23')]][_0x38f5d1][_0x95e3('0xc')])){this[_0x95e3('0x8')][_0x2d18ec[_0x95e3('0x23')]][_0x38f5d1]['variables']={};}this['channels'][_0x2d18ec[_0x95e3('0x23')]][_0x38f5d1][_0x95e3('0xc')]=this[_0x95e3('0xc')][_0x2d18ec[_0x95e3('0x23')]];}}}}}catch(_0x830dc8){logger[_0x95e3('0x37')](_0x95e3('0x75'),_0x2d18ec['uniqueid'],util['inspect'](_0x830dc8,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x95e3('0x1e')][_0x95e3('0x71')]=function(_0x4c5e34,_0x5282ac,_0x241455){var _0x23356a=[_0x95e3('0x76'),'rtpaudioqosbridged',_0x95e3('0x77'),_0x95e3('0x78'),_0x95e3('0x79'),_0x95e3('0x7a'),'rtpaudioqosrtt','rtpaudioqosrttbridged',_0x95e3('0x7b'),_0x95e3('0x7c'),_0x95e3('0x7d'),_0x95e3('0x7e'),_0x95e3('0x7f'),_0x95e3('0x80'),_0x95e3('0x81'),_0x95e3('0x82'),_0x95e3('0x24'),_0x95e3('0x83'),_0x95e3('0x84')];if(!_[_0x95e3('0x85')](_0x5282ac)&&!_[_0x95e3('0x86')](_0x23356a,_0x5282ac)){if(_[_0x95e3('0x20')](this[_0x95e3('0xc')][_0x4c5e34])){this['variables'][_0x4c5e34]={};}this[_0x95e3('0xc')][_0x4c5e34][_0x5282ac]=_0x241455;}};VoiceAgentReport[_0x95e3('0x1e')][_0x95e3('0x16')]=function(_0x4e970e){try{if(this[_0x95e3('0x21')](_0x4e970e)){logger[_0x95e3('0x34')]('[%s][voiceAgentReport][hangup]\x20event:',_0x4e970e['uniqueid'],util[_0x95e3('0x26')](_0x4e970e,{'showHidden':![],'depth':null}));if(this['channels'][_0x4e970e['uniqueid']]){for(var _0x5d767a in this[_0x95e3('0x8')][_0x4e970e[_0x95e3('0x23')]]){if(this[_0x95e3('0x8')][_0x4e970e['uniqueid']]['hasOwnProperty'](_0x5d767a)){if(this[_0x95e3('0x8')][_0x4e970e[_0x95e3('0x23')]][_0x5d767a][_0x95e3('0x51')]==_0x95e3('0x64')&&this['channels'][_0x4e970e[_0x95e3('0x23')]][_0x5d767a][_0x95e3('0x4b')]){logger[_0x95e3('0x22')](_0x95e3('0x87'),_0x4e970e[_0x95e3('0x23')],_0x5d767a);this[_0x95e3('0x8')][_0x4e970e[_0x95e3('0x23')]][_0x5d767a][_0x95e3('0x62')]=moment()['format'](_0x95e3('0x4e'));}}}logger['debug']('[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:',_0x4e970e[_0x95e3('0x23')],util[_0x95e3('0x26')](_['values'](this[_0x95e3('0x8')][_0x4e970e[_0x95e3('0x23')]]),{'showHidden':![],'depth':null}));ami[_0x95e3('0x1f')](_0x95e3('0x88'),_[_0x95e3('0x89')](this[_0x95e3('0x8')][_0x4e970e['uniqueid']]));delete this[_0x95e3('0x8')][_0x4e970e[_0x95e3('0x23')]];}if(this[_0x95e3('0xc')][_0x4e970e[_0x95e3('0x23')]]){delete this['variables'][_0x4e970e[_0x95e3('0x23')]];}}}catch(_0x18ad37){logger['error'](_0x95e3('0x8a'),_0x4e970e[_0x95e3('0x23')],util['inspect'](_0x18ad37,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x95e3('0x1e')][_0x95e3('0x1b')]=function(_0x2eee49){try{if(this['isNotNull'](_0x2eee49)){logger[_0x95e3('0x34')](_0x95e3('0x8b'),_0x2eee49['uniqueid'],util[_0x95e3('0x26')](_0x2eee49,{'showHidden':![],'depth':null}));if(this[_0x95e3('0x8')][_0x2eee49[_0x95e3('0x8c')]]){for(var _0x2514ee in this['channels'][_0x2eee49[_0x95e3('0x8c')]]){if(this[_0x95e3('0x8')][_0x2eee49['transfereeuniqueid']][_0x95e3('0x3b')](_0x2514ee)){if(_0x2eee49[_0x95e3('0x8d')]===_0x2514ee){logger['info'](_0x95e3('0x8e'),_0x2eee49[_0x95e3('0x23')],this['channels'][_0x2eee49[_0x95e3('0x8c')]][_0x2514ee]['membername'],_0x2514ee);var _0x9ee2b8=moment();this[_0x95e3('0x8')][_0x2eee49['transfereeuniqueid']][_0x2514ee]['agentcomplete']=!![];this[_0x95e3('0x8')][_0x2eee49[_0x95e3('0x8c')]][_0x2514ee][_0x95e3('0x62')]=moment()[_0x95e3('0x28')](_0x95e3('0x4e'));this[_0x95e3('0x8')][_0x2eee49[_0x95e3('0x8c')]][_0x2514ee]['lastevent']=_0x95e3('0x63');this['channels'][_0x2eee49[_0x95e3('0x8c')]][_0x2514ee][_0x95e3('0x51')]=_0x95e3('0x64');this[_0x95e3('0x8')][_0x2eee49['transfereeuniqueid']][_0x2514ee][_0x95e3('0x66')]=_0x9ee2b8['diff'](this[_0x95e3('0x8')][_0x2eee49[_0x95e3('0x8c')]][_0x2514ee][_0x95e3('0x3d')],_0x95e3('0x8f'));}}}}if(this[_0x95e3('0x8')][_0x2eee49['secondtransfereruniqueid']]){var _0x2a5e97=this['channels'][_0x2eee49[_0x95e3('0x90')]];this[_0x95e3('0x8')][_0x2eee49[_0x95e3('0x90')]]=this[_0x95e3('0x8')][_0x2eee49['transfereeuniqueid']];this[_0x95e3('0x8')][_0x2eee49['transfereeuniqueid']]=_0x2a5e97;}}}catch(_0x54f2a6){logger[_0x95e3('0x37')](_0x95e3('0x91'),_0x2eee49[_0x95e3('0x23')],util[_0x95e3('0x26')](_0x54f2a6,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x95e3('0x1d')]=function(_0x21467c){try{if(this[_0x95e3('0x21')](_0x21467c)){logger[_0x95e3('0x34')](_0x95e3('0x92'),_0x21467c[_0x95e3('0x23')],util[_0x95e3('0x26')](_0x21467c,{'showHidden':![],'depth':null}));if(this[_0x95e3('0x8')][_0x21467c[_0x95e3('0x8c')]]){for(var _0x28ecc1 in this[_0x95e3('0x8')][_0x21467c['transfereeuniqueid']]){if(this[_0x95e3('0x8')][_0x21467c[_0x95e3('0x8c')]][_0x95e3('0x3b')](_0x28ecc1)){if(_0x21467c[_0x95e3('0x93')]===_0x28ecc1){logger['info']('[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x21467c[_0x95e3('0x23')],this['channels'][_0x21467c['transfereeuniqueid']][_0x28ecc1][_0x95e3('0x24')],_0x28ecc1);var _0x2a831f=moment();this['channels'][_0x21467c[_0x95e3('0x8c')]][_0x28ecc1][_0x95e3('0x4b')]=!![];this[_0x95e3('0x8')][_0x21467c[_0x95e3('0x8c')]][_0x28ecc1][_0x95e3('0x62')]=_0x2a831f;this['channels'][_0x21467c[_0x95e3('0x8c')]][_0x28ecc1][_0x95e3('0x42')]=_0x95e3('0x63');this['channels'][_0x21467c[_0x95e3('0x8c')]][_0x28ecc1][_0x95e3('0x51')]=_0x95e3('0x64');this[_0x95e3('0x8')][_0x21467c['transfereeuniqueid']][_0x28ecc1][_0x95e3('0x66')]=_0x2a831f[_0x95e3('0x94')](this['channels'][_0x21467c['transfereeuniqueid']][_0x28ecc1]['agentconnectAt'],_0x95e3('0x8f'));}}}}}}catch(_0x2af9f8){logger[_0x95e3('0x37')](_0x95e3('0x95'),_0x21467c[_0x95e3('0x23')],util['inspect'](_0x2af9f8,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x95e3('0x1e')][_0x95e3('0x17')]=function(_0x3c47a6){var _0x1e6b54='';try{if(this[_0x95e3('0x21')](_0x3c47a6)){logger['debug'](_0x95e3('0x96'),_0x3c47a6[_0x95e3('0x23')],util[_0x95e3('0x26')](_0x3c47a6,{'showHidden':![],'depth':null}));if(_0x3c47a6[_0x95e3('0x97')]){_0x1e6b54=_0x3c47a6[_0x95e3('0x97')]['substring'](0x0,_0x3c47a6[_0x95e3('0x97')]['lastIndexOf']('-'));if(this[_0x95e3('0xb')][_0x1e6b54]){logger[_0x95e3('0x22')]('[%s][voiceAgentReport][musiconholdstart]\x20interface:%s',_0x3c47a6[_0x95e3('0x23')],_0x1e6b54);this[_0x95e3('0xb')][_0x1e6b54]['onhold']=!![];}}}}catch(_0x338687){logger[_0x95e3('0x37')](_0x95e3('0x98'),_0x3c47a6['uniqueid'],util[_0x95e3('0x26')](_0x338687,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x95e3('0x1e')][_0x95e3('0x19')]=function(_0x3b3cf1){var _0x15cd66='';try{if(this[_0x95e3('0x21')](_0x3b3cf1)){logger[_0x95e3('0x34')](_0x95e3('0x99'),_0x3b3cf1[_0x95e3('0x23')],util[_0x95e3('0x26')](_0x3b3cf1,{'showHidden':![],'depth':null}));if(_0x3b3cf1['channel']){_0x15cd66=_0x3b3cf1[_0x95e3('0x97')][_0x95e3('0x9a')](0x0,_0x3b3cf1[_0x95e3('0x97')][_0x95e3('0x9b')]('-'));if(this[_0x95e3('0xb')][_0x15cd66]){logger[_0x95e3('0x22')]('[%s][voiceAgentReport][musiconholdstop]\x20interface:%s',_0x3b3cf1['uniqueid'],_0x15cd66);this[_0x95e3('0xb')][_0x15cd66][_0x95e3('0x9c')]=![];}}}}catch(_0x38fd61){logger['error'](_0x95e3('0x9d'),_0x3b3cf1['uniqueid'],util[_0x95e3('0x26')](_0x38fd61,{'showHidden':![],'depth':null}));}};module[_0x95e3('0x9e')]=VoiceAgentReport;
\ No newline at end of file
index ed3af76..61644d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','routeid','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','BlindTransfer','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','moment','path','../../../config/environment','../../../config/logger','ami','../ami','../model/channel','../rpc/setting','set','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED','defaults','redis','localhost','socket.io-emitter','channels','agents','syncNewExten','bind','newexten','newchannel','syncNewChannel','newstate','syncNewState','syncVarSet','hangup','syncHangup','newcallerid','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','prototype','isNotNull','isUndefined','emit','syncNewCallerId','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','linkedid','pick','keys','context','from-sip','channel','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','format','user:%s','split','name','user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','inspect','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','channelstate','debug','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newchannel]','application','toLowerCase','applicationdata','appdata','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','includes','lastapplication','cdr(','match','type','queue','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answertime','diff','connectedlinename','destinationchannel','disposition','UserId','membername','answered','holdtime','toNumber','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','monitor','.wav49','.WAV','monitorFilename','find','monitors','isNil','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','sipcalluniqueid','mixmonitor_filename','sipcalllinkedid','[%s][voiceCallReport][hangup]\x20event:','blindTransfers','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','resolve','isEmpty','then','stopRecordingOnTransfer','Action','StopMixMonitor','catch','event','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum'];(function(_0x57ec59,_0x46a994){var _0x10c6d2=function(_0x32c9ac){while(--_0x32c9ac){_0x57ec59['push'](_0x57ec59['shift']());}};_0x10c6d2(++_0x46a994);}(_0x9bde,0xe1));var _0xe9bd=function(_0x932e07,_0x5d64bf){_0x932e07=_0x932e07-0x0;var _0x48c741=_0x9bde[_0x932e07];return _0x48c741;};'use strict';var _=require('lodash');var moment=require(_0xe9bd('0x0'));var util=require('util');var path=require(_0xe9bd('0x1'));var Redis=require('ioredis');var config=require(_0xe9bd('0x2'));var logger=require(_0xe9bd('0x3'))(_0xe9bd('0x4'));var ami=require(_0xe9bd('0x5'));var Channel=require(_0xe9bd('0x6'));var RpcSetting=require(_0xe9bd('0x7'));var applications=[_0xe9bd('0x8'),'queue',_0xe9bd('0x9'),_0xe9bd('0xa'),_0xe9bd('0xb'),_0xe9bd('0xc')];var dispositions=[_0xe9bd('0xd'),_0xe9bd('0xe'),_0xe9bd('0xe'),_0xe9bd('0xd'),_0xe9bd('0xd'),_0xe9bd('0xd'),'ANSWERED','BUSY',_0xe9bd('0xe'),_0xe9bd('0xe'),_0xe9bd('0xe')];config['redis']=_[_0xe9bd('0xf')](config[_0xe9bd('0x10')],{'host':_0xe9bd('0x11'),'port':0x18eb});var io=require(_0xe9bd('0x12'))(new Redis(config['redis']));function VoiceCallReport(_0x2c1d98){this['channels']=_0x2c1d98[_0xe9bd('0x13')];this[_0xe9bd('0x14')]=_0x2c1d98[_0xe9bd('0x14')];this['blindTransfers']={};ami['on']('coreshowchannel',this[_0xe9bd('0x15')][_0xe9bd('0x16')](this));ami['on'](_0xe9bd('0x17'),this[_0xe9bd('0x15')][_0xe9bd('0x16')](this));ami['on'](_0xe9bd('0x18'),this[_0xe9bd('0x19')]['bind'](this));ami['on'](_0xe9bd('0x1a'),this[_0xe9bd('0x1b')][_0xe9bd('0x16')](this));ami['on']('varset',this[_0xe9bd('0x1c')][_0xe9bd('0x16')](this));ami['on'](_0xe9bd('0x1d'),this[_0xe9bd('0x1e')]['bind'](this));ami['on'](_0xe9bd('0x1f'),this['syncNewCallerId'][_0xe9bd('0x16')](this));ami['on']('attendedtransfer',this[_0xe9bd('0x20')][_0xe9bd('0x16')](this));ami['on'](_0xe9bd('0x21'),this[_0xe9bd('0x22')][_0xe9bd('0x16')](this));ami['on'](_0xe9bd('0x23'),this[_0xe9bd('0x24')]['bind'](this));ami['on'](_0xe9bd('0x25'),this[_0xe9bd('0x26')]['bind'](this));try{logger[_0xe9bd('0x27')]('[voiceCallReport][coreshowchannels]\x20started');ami[_0xe9bd('0x28')]();}catch(_0x1b9cc9){logger[_0xe9bd('0x29')](_0xe9bd('0x2a'),util['inspect'](_0x1b9cc9,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xe9bd('0x2b')][_0xe9bd('0x2c')]=function(_0x2c9a57){return _0x2c9a57!==null&&!_[_0xe9bd('0x2d')](_0x2c9a57);};VoiceCallReport[_0xe9bd('0x2b')][_0xe9bd('0x2e')]=function(_0x399f3c,_0x43ea90,_0x1ae889){io['to'](_0x399f3c)['emit'](_0x43ea90,_0x1ae889);};VoiceCallReport[_0xe9bd('0x2b')][_0xe9bd('0x2f')]=function(_0x5ba1d6){try{if(this[_0xe9bd('0x2c')](_0x5ba1d6)){logger[_0xe9bd('0x27')](_0xe9bd('0x30'),_0x5ba1d6[_0xe9bd('0x31')],_0x5ba1d6[_0xe9bd('0x32')],_0x5ba1d6[_0xe9bd('0x33')]);logger['debug']('[%s][voiceCallReport][newcallerid]\x20event:',_0x5ba1d6[_0xe9bd('0x31')],util['inspect'](_0x5ba1d6,{'showHidden':![],'depth':null}));if(_0x5ba1d6[_0xe9bd('0x31')]===_0x5ba1d6[_0xe9bd('0x34')]){if(!_[_0xe9bd('0x2d')](this[_0xe9bd('0x13')][_0x5ba1d6[_0xe9bd('0x31')]])){_['merge'](this['channels'][_0x5ba1d6[_0xe9bd('0x31')]],_[_0xe9bd('0x35')](_0x5ba1d6,_[_0xe9bd('0x36')](this[_0xe9bd('0x13')][_0x5ba1d6[_0xe9bd('0x31')]])));}}if(_0x5ba1d6[_0xe9bd('0x37')]===_0xe9bd('0x38')){if(this[_0xe9bd('0x14')][_0x5ba1d6[_0xe9bd('0x39')]['split']('-')[0x0]]){if(_0x5ba1d6[_0xe9bd('0x3a')]==_0xe9bd('0x3b')){this[_0xe9bd('0x14')][_0x5ba1d6['channel']['split']('-')[0x0]][_0xe9bd('0x3c')]=_0x5ba1d6[_0xe9bd('0x3d')];this[_0xe9bd('0x2e')](util[_0xe9bd('0x3e')](_0xe9bd('0x3f'),this[_0xe9bd('0x14')][_0x5ba1d6[_0xe9bd('0x39')][_0xe9bd('0x40')]('-')[0x0]][_0xe9bd('0x41')]),_0xe9bd('0x42'),{'destaccountcode':this[_0xe9bd('0x14')][_0x5ba1d6[_0xe9bd('0x39')][_0xe9bd('0x40')]('-')[0x0]][_0xe9bd('0x43')],'destconnectedlinenum':_0x5ba1d6[_0xe9bd('0x3d')]});}}}}}catch(_0x8ff624){logger[_0xe9bd('0x29')](_0xe9bd('0x44'),_0x5ba1d6['uniqueid'],util[_0xe9bd('0x45')](_0x8ff624,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe9bd('0x2b')]['syncNewChannel']=function(_0x404a7d){try{if(this[_0xe9bd('0x2c')](_0x404a7d)){logger['debug']('[%s][voiceCallReport][newchannel]\x20event:',_0x404a7d[_0xe9bd('0x31')],util[_0xe9bd('0x45')](_0x404a7d,{'showHidden':![],'depth':null}));if(this['channels'][_0x404a7d[_0xe9bd('0x31')]])return;if(_0x404a7d[_0xe9bd('0x39')]===_0xe9bd('0x46'))return;if(_0x404a7d['uniqueid']!==_0x404a7d[_0xe9bd('0x34')]&&!this['blindTransfers'][_0x404a7d[_0xe9bd('0x34')]])return;logger[_0xe9bd('0x27')](_0xe9bd('0x47'),_0x404a7d[_0xe9bd('0x31')],_0x404a7d['context'],_0x404a7d[_0xe9bd('0x3a')]);this[_0xe9bd('0x13')][_0x404a7d[_0xe9bd('0x31')]]=new Channel();this[_0xe9bd('0x13')][_0x404a7d[_0xe9bd('0x31')]][_0xe9bd('0x48')]=moment()[_0xe9bd('0x3e')](_0xe9bd('0x49'));this[_0xe9bd('0x13')][_0x404a7d[_0xe9bd('0x31')]]['disposition']=dispositions[_['toNumber'](_0x404a7d[_0xe9bd('0x4a')])];_['merge'](this[_0xe9bd('0x13')][_0x404a7d[_0xe9bd('0x31')]],_[_0xe9bd('0x35')](_0x404a7d,_['keys'](this[_0xe9bd('0x13')][_0x404a7d[_0xe9bd('0x31')]])));if(_0x404a7d[_0xe9bd('0x37')]==='from-sip'){if(this[_0xe9bd('0x14')][_0x404a7d[_0xe9bd('0x39')][_0xe9bd('0x40')]('-')[0x0]]){if(_[_0xe9bd('0x2d')](this[_0xe9bd('0x14')][_0x404a7d[_0xe9bd('0x39')][_0xe9bd('0x40')]('-')[0x0]][_0xe9bd('0x3c')])){this[_0xe9bd('0x14')][_0x404a7d[_0xe9bd('0x39')][_0xe9bd('0x40')]('-')[0x0]][_0xe9bd('0x3c')]=_0x404a7d[_0xe9bd('0x3a')];logger[_0xe9bd('0x4b')](_0xe9bd('0x4c'),_0x404a7d['uniqueid'],util['inspect']({'id':this[_0xe9bd('0x14')][_0x404a7d[_0xe9bd('0x39')][_0xe9bd('0x40')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x404a7d['channel'][_0xe9bd('0x40')]('-')[0x0]][_0xe9bd('0x43')],'destconnectedlinenum':_0x404a7d[_0xe9bd('0x3a')]},{'showHidden':![],'depth':null}));this[_0xe9bd('0x2e')](util[_0xe9bd('0x3e')](_0xe9bd('0x3f'),this[_0xe9bd('0x14')][_0x404a7d['channel'][_0xe9bd('0x40')]('-')[0x0]]['name']),_0xe9bd('0x42'),{'id':this[_0xe9bd('0x14')][_0x404a7d[_0xe9bd('0x39')][_0xe9bd('0x40')]('-')[0x0]]['id'],'destaccountcode':this[_0xe9bd('0x14')][_0x404a7d['channel'][_0xe9bd('0x40')]('-')[0x0]][_0xe9bd('0x43')],'destconnectedlinenum':_0x404a7d[_0xe9bd('0x3a')]});}}}}}catch(_0x58dc3b){logger[_0xe9bd('0x29')](_0xe9bd('0x4d'),_0x404a7d[_0xe9bd('0x31')],util['inspect'](_0x58dc3b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe9bd('0x2b')][_0xe9bd('0x15')]=function(_0x2e634d){try{if(this[_0xe9bd('0x2c')](_0x2e634d)){logger[_0xe9bd('0x4b')]('[%s][voiceCallReport][newexten]\x20event:',_0x2e634d[_0xe9bd('0x31')],util['inspect'](_0x2e634d,{'showHidden':![],'depth':null}));if(_0x2e634d[_0xe9bd('0x39')]===_0xe9bd('0x46')||_0x2e634d[_0xe9bd('0x3a')]==='h')return;if(_0x2e634d[_0xe9bd('0x31')]===_0x2e634d[_0xe9bd('0x34')]||this['blindTransfers'][_0x2e634d[_0xe9bd('0x34')]]){_0x2e634d['application']=_0x2e634d[_0xe9bd('0x4e')][_0xe9bd('0x4f')]();_0x2e634d['applicationdata']=_0x2e634d['appdata']||_0x2e634d[_0xe9bd('0x50')];if(_0x2e634d['appdata']&&!_0x2e634d[_0xe9bd('0x51')]['startsWith'](_0xe9bd('0x52'))&&_0x2e634d[_0xe9bd('0x4e')]!=='queue'){_0x2e634d[_0xe9bd('0x50')]=_0x2e634d['applicationdata'][_0xe9bd('0x4f')]();}logger[_0xe9bd('0x27')](_0xe9bd('0x53'),_0x2e634d['uniqueid'],_0x2e634d[_0xe9bd('0x4e')],_0x2e634d[_0xe9bd('0x50')]);if(_[_0xe9bd('0x2d')](this[_0xe9bd('0x13')][_0x2e634d['uniqueid']])){this['channels'][_0x2e634d[_0xe9bd('0x31')]]=new Channel();this['channels'][_0x2e634d[_0xe9bd('0x31')]][_0xe9bd('0x48')]=_0x2e634d[_0xe9bd('0x54')]?moment()[_0xe9bd('0x55')](moment[_0xe9bd('0x54')](_0x2e634d[_0xe9bd('0x54')])[_0xe9bd('0x56')](),_0xe9bd('0x56'))[_0xe9bd('0x3e')](_0xe9bd('0x49')):moment()[_0xe9bd('0x3e')](_0xe9bd('0x49'));this['channels'][_0x2e634d['uniqueid']]['disposition']=_0xe9bd('0xd');}_['merge'](this[_0xe9bd('0x13')][_0x2e634d[_0xe9bd('0x31')]],_[_0xe9bd('0x35')](_0x2e634d,_[_0xe9bd('0x36')](this[_0xe9bd('0x13')][_0x2e634d[_0xe9bd('0x31')]])));if(_[_0xe9bd('0x57')](applications,_0x2e634d[_0xe9bd('0x4e')])){this[_0xe9bd('0x13')][_0x2e634d['uniqueid']][_0xe9bd('0x58')]=_0x2e634d[_0xe9bd('0x4e')];this[_0xe9bd('0x13')][_0x2e634d[_0xe9bd('0x31')]]['lastdata']=_0x2e634d[_0xe9bd('0x50')];if(_0x2e634d[_0xe9bd('0x4e')]===_0xe9bd('0x8')&&_['startsWith'](_0x2e634d[_0xe9bd('0x50')][_0xe9bd('0x4f')](),_0xe9bd('0x59'))){var _0xfe82f7=_0x2e634d['applicationdata']['split']('=');var _0x3e0de9=_0xfe82f7[0x0][_0xe9bd('0x4f')]()[_0xe9bd('0x5a')](/cdr\((.*)\)/);if(_0x3e0de9){if(_0x3e0de9[0x1]===_0xe9bd('0x5b')&&!_['isNil'](this['channels'][_0x2e634d[_0xe9bd('0x31')]][_0x3e0de9[0x1]]))return;this[_0xe9bd('0x13')][_0x2e634d[_0xe9bd('0x31')]][_0x3e0de9[0x1]]=_0xfe82f7[0x1];}}else if(_0x2e634d[_0xe9bd('0x4e')]===_0xe9bd('0x5c')){this[_0xe9bd('0x13')][_0x2e634d['uniqueid']][_0xe9bd('0x5c')]=_0x2e634d['applicationdata'][_0xe9bd('0x40')](',')[0x0];}}}}}catch(_0x28dd03){logger[_0xe9bd('0x29')](_0xe9bd('0x5d'),_0x2e634d['uniqueid'],util[_0xe9bd('0x45')](_0x28dd03,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe9bd('0x2b')][_0xe9bd('0x1b')]=function(_0x4f35c4){try{if(this[_0xe9bd('0x2c')](_0x4f35c4)){logger[_0xe9bd('0x27')](_0xe9bd('0x5e'),_0x4f35c4[_0xe9bd('0x31')],_0x4f35c4[_0xe9bd('0x34')],_0x4f35c4[_0xe9bd('0x32')],_0x4f35c4[_0xe9bd('0x33')]);logger[_0xe9bd('0x4b')](_0xe9bd('0x5f'),_0x4f35c4[_0xe9bd('0x31')],util[_0xe9bd('0x45')](_0x4f35c4,{'showHidden':![],'depth':null}));if(_0x4f35c4[_0xe9bd('0x4a')]!=='6')return;if(_0x4f35c4['uniqueid']!==_0x4f35c4[_0xe9bd('0x34')]){var _0x9d0603=moment();if(this['channels'][_0x4f35c4[_0xe9bd('0x34')]]){if(!this[_0xe9bd('0x13')][_0x4f35c4['linkedid']]['answered']){this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x34')]]['answered']=!![];this['channels'][_0x4f35c4['linkedid']][_0xe9bd('0x60')]=_0x9d0603['format']('YYYY-MM-DD\x20HH:mm:ss');if(this['channels'][_0x4f35c4['linkedid']][_0xe9bd('0x48')]){this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x34')]]['holdtime']=_0x9d0603[_0xe9bd('0x61')](this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x34')]][_0xe9bd('0x48')],'seconds');}}this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x34')]][_0xe9bd('0x34')]=_0x4f35c4['uniqueid'];if(_0x4f35c4['calleridnum']!==_0xe9bd('0x3b')){this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x34')]][_0xe9bd('0x3d')]=_0x4f35c4[_0xe9bd('0x33')];}this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x34')]][_0xe9bd('0x62')]=_0x4f35c4['calleridname'];this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x34')]][_0xe9bd('0x63')]=_0x4f35c4[_0xe9bd('0x39')];this[_0xe9bd('0x13')][_0x4f35c4['linkedid']][_0xe9bd('0x64')]=dispositions[_['toNumber'](_0x4f35c4['channelstate'])];if(this[_0xe9bd('0x14')][_0x4f35c4[_0xe9bd('0x39')]['split']('-')[0x0]]){this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x34')]][_0xe9bd('0x65')]=this[_0xe9bd('0x14')][_0x4f35c4['channel'][_0xe9bd('0x40')]('-')[0x0]]['id'];this[_0xe9bd('0x13')][_0x4f35c4['linkedid']][_0xe9bd('0x66')]=this[_0xe9bd('0x14')][_0x4f35c4[_0xe9bd('0x39')][_0xe9bd('0x40')]('-')[0x0]][_0xe9bd('0x41')];}}if(this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x31')]]){if(!this['channels'][_0x4f35c4[_0xe9bd('0x31')]][_0xe9bd('0x67')]){this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x31')]][_0xe9bd('0x67')]=!![];this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x31')]][_0xe9bd('0x60')]=_0x9d0603[_0xe9bd('0x3e')]('YYYY-MM-DD\x20HH:mm:ss');if(this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x31')]][_0xe9bd('0x48')]){this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x31')]][_0xe9bd('0x68')]=_0x9d0603[_0xe9bd('0x61')](this['channels'][_0x4f35c4[_0xe9bd('0x31')]][_0xe9bd('0x48')],'seconds');}}if(_0x4f35c4[_0xe9bd('0x33')]!==_0xe9bd('0x3b')){this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x31')]][_0xe9bd('0x3d')]=_0x4f35c4[_0xe9bd('0x33')];}this[_0xe9bd('0x13')][_0x4f35c4['uniqueid']]['connectedlinename']=_0x4f35c4[_0xe9bd('0x32')];this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x31')]][_0xe9bd('0x63')]=_0x4f35c4[_0xe9bd('0x39')];this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x31')]]['disposition']=dispositions[_[_0xe9bd('0x69')](_0x4f35c4[_0xe9bd('0x4a')])];}}else{if(this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x31')]]){if(this[_0xe9bd('0x14')][_0x4f35c4[_0xe9bd('0x39')][_0xe9bd('0x40')]('-')[0x0]]){this['channels'][_0x4f35c4['uniqueid']]['UserId']=this[_0xe9bd('0x14')][_0x4f35c4['channel']['split']('-')[0x0]]['id'];this['channels'][_0x4f35c4[_0xe9bd('0x31')]][_0xe9bd('0x66')]=this[_0xe9bd('0x14')][_0x4f35c4[_0xe9bd('0x39')][_0xe9bd('0x40')]('-')[0x0]][_0xe9bd('0x41')];}}}if(_0x4f35c4[_0xe9bd('0x37')]===_0xe9bd('0x38')){if(this[_0xe9bd('0x14')][_0x4f35c4['channel'][_0xe9bd('0x40')]('-')[0x0]]){this['agents'][_0x4f35c4[_0xe9bd('0x39')][_0xe9bd('0x40')]('-')[0x0]][_0xe9bd('0x3c')]=_0x4f35c4[_0xe9bd('0x3a')];var _0x416938,_0x5d8c24;if(this['channels'][_0x4f35c4['uniqueid']]){_0x416938=this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x31')]]['routealias'];_0x5d8c24=this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x31')]][_0xe9bd('0x5c')];}else if(this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x34')]]){_0x416938=this['channels'][_0x4f35c4[_0xe9bd('0x34')]][_0xe9bd('0x6a')];_0x5d8c24=this[_0xe9bd('0x13')][_0x4f35c4[_0xe9bd('0x34')]][_0xe9bd('0x5c')];}logger[_0xe9bd('0x4b')](_0xe9bd('0x6b'),_0x4f35c4[_0xe9bd('0x31')],util[_0xe9bd('0x45')]({'id':this[_0xe9bd('0x14')][_0x4f35c4['channel']['split']('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x4f35c4['channel'][_0xe9bd('0x40')]('-')[0x0]][_0xe9bd('0x43')],'destconnectedlinenum':_0x4f35c4[_0xe9bd('0x3a')],'routealias':_0x416938,'queue':_0x5d8c24||undefined},{'showHidden':![],'depth':null}));this['emit'](util[_0xe9bd('0x3e')](_0xe9bd('0x3f'),this['agents'][_0x4f35c4['channel'][_0xe9bd('0x40')]('-')[0x0]][_0xe9bd('0x41')]),_0xe9bd('0x42'),{'id':this[_0xe9bd('0x14')][_0x4f35c4[_0xe9bd('0x39')]['split']('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this['agents'][_0x4f35c4['channel'][_0xe9bd('0x40')]('-')[0x0]][_0xe9bd('0x43')],'destconnectedlinenum':_0x4f35c4[_0xe9bd('0x3a')],'routealias':_0x416938,'queue':_0x5d8c24||undefined});}}}}catch(_0x140678){logger[_0xe9bd('0x29')](_0xe9bd('0x6c'),_0x4f35c4[_0xe9bd('0x31')],util[_0xe9bd('0x45')](_0x140678,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe9bd('0x2b')][_0xe9bd('0x6d')]=function(_0x59a31e,_0xb1203d){try{if(this['channels'][_0x59a31e]){logger[_0xe9bd('0x27')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x59a31e,_0xb1203d);this['channels'][_0x59a31e][_0xe9bd('0x6e')]=!![];if(_['endsWith'](_0xb1203d,_0xe9bd('0x6f'))){_0xb1203d=_0xb1203d['replace'](_0xe9bd('0x6f'),_0xe9bd('0x70'));}this[_0xe9bd('0x13')][_0x59a31e][_0xe9bd('0x71')]=_0xb1203d;var _0x3f1e3a=_[_0xe9bd('0x72')](this['channels'][_0x59a31e][_0xe9bd('0x73')],{'filename':_0xb1203d});if(_[_0xe9bd('0x74')](_0x3f1e3a)){this['channels'][_0x59a31e][_0xe9bd('0x73')][_0xe9bd('0x75')]({'filename':_0xb1203d,'createdAt':moment()[_0xe9bd('0x3e')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':'','status':_0xe9bd('0x76')});}}}catch(_0x440495){logger[_0xe9bd('0x29')](_0xe9bd('0x77'),_0x59a31e,util[_0xe9bd('0x45')](_0x440495,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xe9bd('0x1c')]=function(_0x157b8e){try{if(this['isNotNull'](_0x157b8e)){logger[_0xe9bd('0x4b')](_0xe9bd('0x78'),_0x157b8e[_0xe9bd('0x31')],util[_0xe9bd('0x45')](_0x157b8e,{'showHidden':![],'depth':null}));if(this['channels'][_0x157b8e[_0xe9bd('0x31')]]&&_0x157b8e[_0xe9bd('0x39')]!=_0xe9bd('0x46')){if(this[_0xe9bd('0x2c')](_0x157b8e[_0xe9bd('0x79')])){if(this[_0xe9bd('0x2c')](_0x157b8e[_0xe9bd('0x79')]['mixmonitor_filename'])){logger[_0xe9bd('0x27')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x157b8e[_0xe9bd('0x31')],_0x157b8e[_0xe9bd('0x7a')]);this[_0xe9bd('0x6d')](_0x157b8e['uniqueid'],_0x157b8e[_0xe9bd('0x7a')]);}else if(this['isNotNull'](_0x157b8e[_0xe9bd('0x79')][_0xe9bd('0x7b')])){logger[_0xe9bd('0x27')](_0xe9bd('0x7c'),_0x157b8e[_0xe9bd('0x31')],_0x157b8e[_0xe9bd('0x7a')]);this[_0xe9bd('0x13')][_0x157b8e[_0xe9bd('0x31')]][_0xe9bd('0x33')]=_0x157b8e[_0xe9bd('0x7a')];}else if(this[_0xe9bd('0x2c')](_0x157b8e['variable'][_0xe9bd('0x7d')])){logger[_0xe9bd('0x27')](_0xe9bd('0x7e'),_0x157b8e['uniqueid'],_0x157b8e[_0xe9bd('0x7a')]);this[_0xe9bd('0x13')][_0x157b8e['uniqueid']]['callerid']=_0x157b8e['value'];}else if(this['isNotNull'](_0x157b8e[_0xe9bd('0x79')][_0xe9bd('0x7f')])){logger[_0xe9bd('0x27')]('[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x157b8e[_0xe9bd('0x31')],_0x157b8e[_0xe9bd('0x7a')]);this['channels'][_0x157b8e[_0xe9bd('0x31')]][_0xe9bd('0x5b')]=_0x157b8e[_0xe9bd('0x7a')];}else if(this[_0xe9bd('0x2c')](_0x157b8e[_0xe9bd('0x79')]['xmd-queue'])){logger[_0xe9bd('0x27')](_0xe9bd('0x80'),_0x157b8e['uniqueid'],_0x157b8e['value']['split'](',')[0x0]);this['channels'][_0x157b8e[_0xe9bd('0x31')]][_0xe9bd('0x5c')]=_0x157b8e[_0xe9bd('0x7a')][_0xe9bd('0x40')](',')[0x0];}else if(this['isNotNull'](_0x157b8e['variable'][_0xe9bd('0x81')])){logger[_0xe9bd('0x27')](_0xe9bd('0x82'),_0x157b8e['uniqueid'],_0x157b8e[_0xe9bd('0x7a')]);this[_0xe9bd('0x13')][_0x157b8e['uniqueid']]['originatecalleridnum']=_0x157b8e[_0xe9bd('0x7a')];}else if(this[_0xe9bd('0x2c')](_0x157b8e[_0xe9bd('0x79')][_0xe9bd('0x83')])){logger[_0xe9bd('0x27')](_0xe9bd('0x84'),_0x157b8e[_0xe9bd('0x31')],_0x157b8e[_0xe9bd('0x7a')]);this[_0xe9bd('0x13')][_0x157b8e['uniqueid']][_0xe9bd('0x85')]=_0x157b8e[_0xe9bd('0x7a')];}else if(this[_0xe9bd('0x2c')](_0x157b8e[_0xe9bd('0x79')][_0xe9bd('0x86')])){logger[_0xe9bd('0x27')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s',_0x157b8e[_0xe9bd('0x31')],_0x157b8e['value']);this[_0xe9bd('0x13')][_0x157b8e['uniqueid']][_0xe9bd('0x87')]=_0x157b8e[_0xe9bd('0x7a')];}else if(this['isNotNull'](_0x157b8e[_0xe9bd('0x79')][_0xe9bd('0x88')])){logger['info'](_0xe9bd('0x89'),_0x157b8e[_0xe9bd('0x31')],_0x157b8e[_0xe9bd('0x7a')]);this[_0xe9bd('0x13')][_0x157b8e['uniqueid']][_0xe9bd('0x5c')]=_0x157b8e[_0xe9bd('0x7a')];}else if(this['isNotNull'](_0x157b8e[_0xe9bd('0x79')][_0xe9bd('0x8a')])){logger[_0xe9bd('0x27')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x157b8e[_0xe9bd('0x31')],_0x157b8e[_0xe9bd('0x7a')]);this[_0xe9bd('0x13')][_0x157b8e[_0xe9bd('0x31')]][_0xe9bd('0x8b')]=_0x157b8e[_0xe9bd('0x7a')];}}}else if(this[_0xe9bd('0x2c')](_0x157b8e['variable'][_0xe9bd('0x8c')])){if(_0x157b8e[_0xe9bd('0x7a')]){var _0x176c7a=path['parse'](_0x157b8e[_0xe9bd('0x7a')])['name'];logger['info']('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x176c7a,_0x157b8e[_0xe9bd('0x7a')]);this['syncMixMonitorFilename'](_0x176c7a,_0x157b8e['value']);}}else if(this[_0xe9bd('0x13')][_0x157b8e[_0xe9bd('0x34')]]){if(this['isNotNull'](_0x157b8e[_0xe9bd('0x79')])){if(this[_0xe9bd('0x2c')](_0x157b8e['variable']['sipcallid'])){logger[_0xe9bd('0x27')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x157b8e['linkedid'],_0x157b8e[_0xe9bd('0x7a')]);this[_0xe9bd('0x13')][_0x157b8e[_0xe9bd('0x34')]][_0xe9bd('0x8d')]=_0x157b8e[_0xe9bd('0x7a')];}}}}}catch(_0xb21467){logger[_0xe9bd('0x29')]('[%s][voiceCallReport][varset]',_0x157b8e[_0xe9bd('0x31')],util['inspect'](_0xb21467,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xe9bd('0x1e')]=function(_0x3c9825){try{if(this[_0xe9bd('0x2c')](_0x3c9825)){logger[_0xe9bd('0x4b')](_0xe9bd('0x8e'),_0x3c9825['uniqueid'],util[_0xe9bd('0x45')](_0x3c9825,{'showHidden':![],'depth':null}));if(this[_0xe9bd('0x8f')][_0x3c9825[_0xe9bd('0x34')]]){if(this[_0xe9bd('0x13')][this[_0xe9bd('0x8f')][_0x3c9825[_0xe9bd('0x34')]]['linkedid']]){this[_0xe9bd('0x13')][this[_0xe9bd('0x8f')][_0x3c9825[_0xe9bd('0x34')]][_0xe9bd('0x34')]][_0xe9bd('0x31')]=_0x3c9825[_0xe9bd('0x31')];this['channels'][this[_0xe9bd('0x8f')][_0x3c9825[_0xe9bd('0x34')]]['linkedid']][_0xe9bd('0x67')]=this[_0xe9bd('0x13')][_0x3c9825[_0xe9bd('0x31')]][_0xe9bd('0x67')];this['channels'][this[_0xe9bd('0x8f')][_0x3c9825[_0xe9bd('0x34')]][_0xe9bd('0x34')]][_0xe9bd('0x60')]=this[_0xe9bd('0x13')][_0x3c9825[_0xe9bd('0x31')]][_0xe9bd('0x60')];this[_0xe9bd('0x13')][this[_0xe9bd('0x8f')][_0x3c9825['linkedid']][_0xe9bd('0x34')]][_0xe9bd('0x63')]=this[_0xe9bd('0x13')][this[_0xe9bd('0x8f')][_0x3c9825[_0xe9bd('0x34')]][_0xe9bd('0x34')]][_0xe9bd('0x39')];this['channels'][this[_0xe9bd('0x8f')][_0x3c9825['linkedid']][_0xe9bd('0x34')]][_0xe9bd('0x64')]=this[_0xe9bd('0x13')][_0x3c9825[_0xe9bd('0x31')]][_0xe9bd('0x64')];this[_0xe9bd('0x13')][_0x3c9825['uniqueid']]=this[_0xe9bd('0x13')][this[_0xe9bd('0x8f')][_0x3c9825[_0xe9bd('0x34')]]['linkedid']];delete this[_0xe9bd('0x13')][this[_0xe9bd('0x8f')][_0x3c9825[_0xe9bd('0x34')]][_0xe9bd('0x34')]];}else if(this[_0xe9bd('0x13')][this[_0xe9bd('0x8f')][_0x3c9825[_0xe9bd('0x34')]][_0xe9bd('0x31')]]){this[_0xe9bd('0x13')][this[_0xe9bd('0x8f')][_0x3c9825['linkedid']][_0xe9bd('0x31')]][_0xe9bd('0x31')]=[this[_0xe9bd('0x13')][this['blindTransfers'][_0x3c9825[_0xe9bd('0x34')]][_0xe9bd('0x31')]][_0xe9bd('0x34')],this['channels'][this['blindTransfers'][_0x3c9825[_0xe9bd('0x34')]][_0xe9bd('0x31')]][_0xe9bd('0x34')]=this[_0xe9bd('0x13')][this[_0xe9bd('0x8f')][_0x3c9825[_0xe9bd('0x34')]][_0xe9bd('0x31')]]['uniqueid']][0x0];this[_0xe9bd('0x13')][this[_0xe9bd('0x8f')][_0x3c9825['linkedid']][_0xe9bd('0x31')]][_0xe9bd('0x67')]=this[_0xe9bd('0x13')][_0x3c9825[_0xe9bd('0x31')]][_0xe9bd('0x67')];this[_0xe9bd('0x13')][this[_0xe9bd('0x8f')][_0x3c9825[_0xe9bd('0x34')]][_0xe9bd('0x31')]][_0xe9bd('0x60')]=this[_0xe9bd('0x13')][_0x3c9825[_0xe9bd('0x31')]][_0xe9bd('0x60')];this[_0xe9bd('0x13')][this[_0xe9bd('0x8f')][_0x3c9825['linkedid']][_0xe9bd('0x31')]][_0xe9bd('0x63')]=this[_0xe9bd('0x13')][this[_0xe9bd('0x8f')][_0x3c9825[_0xe9bd('0x34')]]['uniqueid']][_0xe9bd('0x39')];this[_0xe9bd('0x13')][this[_0xe9bd('0x8f')][_0x3c9825[_0xe9bd('0x34')]][_0xe9bd('0x31')]][_0xe9bd('0x64')]=this[_0xe9bd('0x13')][_0x3c9825[_0xe9bd('0x31')]][_0xe9bd('0x64')];this[_0xe9bd('0x13')][_0x3c9825[_0xe9bd('0x31')]]=this[_0xe9bd('0x13')][this[_0xe9bd('0x8f')][_0x3c9825['linkedid']][_0xe9bd('0x31')]];delete this[_0xe9bd('0x13')][this[_0xe9bd('0x8f')][_0x3c9825[_0xe9bd('0x34')]][_0xe9bd('0x31')]];}}if(this[_0xe9bd('0x13')][_0x3c9825[_0xe9bd('0x31')]]){logger[_0xe9bd('0x27')](_0xe9bd('0x90'),_0x3c9825[_0xe9bd('0x31')],_0x3c9825[_0xe9bd('0x91')]);var _0x2abe2a=moment();this['channels'][_0x3c9825[_0xe9bd('0x31')]][_0xe9bd('0x92')]=_0x2abe2a[_0xe9bd('0x3e')](_0xe9bd('0x49'));this[_0xe9bd('0x13')][_0x3c9825['uniqueid']][_0xe9bd('0x54')]=_0x2abe2a[_0xe9bd('0x61')](this[_0xe9bd('0x13')][_0x3c9825['uniqueid']][_0xe9bd('0x48')],_0xe9bd('0x56'));if(this['channels'][_0x3c9825['uniqueid']]['answered']){this[_0xe9bd('0x13')][_0x3c9825[_0xe9bd('0x31')]]['billableseconds']=_0x2abe2a[_0xe9bd('0x61')](this[_0xe9bd('0x13')][_0x3c9825[_0xe9bd('0x31')]]['answertime'],_0xe9bd('0x56'));this[_0xe9bd('0x13')][_0x3c9825[_0xe9bd('0x31')]][_0xe9bd('0x68')]=this['channels'][_0x3c9825[_0xe9bd('0x31')]][_0xe9bd('0x54')]-this['channels'][_0x3c9825[_0xe9bd('0x31')]][_0xe9bd('0x93')];}if(_0x3c9825[_0xe9bd('0x37')]===_0xe9bd('0x38')){if(this['agents'][_0x3c9825['channel']['split']('-')[0x0]]){this[_0xe9bd('0x14')][_0x3c9825['channel'][_0xe9bd('0x40')]('-')[0x0]]=_[_0xe9bd('0x94')](this[_0xe9bd('0x14')][_0x3c9825[_0xe9bd('0x39')][_0xe9bd('0x40')]('-')[0x0]],[_0xe9bd('0x3c')]);logger['debug'](_0xe9bd('0x95'),_0x3c9825[_0xe9bd('0x31')],util[_0xe9bd('0x45')]({'id':this[_0xe9bd('0x14')][_0x3c9825[_0xe9bd('0x39')][_0xe9bd('0x40')]('-')[0x0]]['id'],'destaccountcode':this[_0xe9bd('0x14')][_0x3c9825['channel'][_0xe9bd('0x40')]('-')[0x0]][_0xe9bd('0x43')]},{'showHidden':![],'depth':null}));this[_0xe9bd('0x2e')](util[_0xe9bd('0x3e')]('user:%s',this[_0xe9bd('0x14')][_0x3c9825[_0xe9bd('0x39')][_0xe9bd('0x40')]('-')[0x0]][_0xe9bd('0x41')]),_0xe9bd('0x96'),{'id':this[_0xe9bd('0x14')][_0x3c9825[_0xe9bd('0x39')][_0xe9bd('0x40')]('-')[0x0]]['id'],'destaccountcode':this[_0xe9bd('0x14')][_0x3c9825[_0xe9bd('0x39')][_0xe9bd('0x40')]('-')[0x0]][_0xe9bd('0x43')]});for(var _0x11a03d=0x0;_0x11a03d<Object['keys'](this[_0xe9bd('0x14')])[_0xe9bd('0x97')];_0x11a03d++){var _0x571328=Object[_0xe9bd('0x36')](this[_0xe9bd('0x14')])[_0x11a03d];var _0x106e0e=this['agents'][_0x571328];if(_0x106e0e[_0xe9bd('0x43')]===Number(_0x3c9825[_0xe9bd('0x3d')])){this[_0xe9bd('0x2e')](util[_0xe9bd('0x3e')]('user:%s',_0x106e0e[_0xe9bd('0x41')]),_0xe9bd('0x96'),{'id':_0x106e0e['id'],'destaccountcode':_0x106e0e[_0xe9bd('0x43')],'transfer':this[_0xe9bd('0x13')][_0x3c9825[_0xe9bd('0x31')]][_0xe9bd('0x98')]});break;}}}}var _0x58f73d=this;Promise[_0xe9bd('0x99')]()['then'](function(){var _0x4af2eb=_0x58f73d[_0xe9bd('0x13')][_0x3c9825['uniqueid']];if(typeof _0x4af2eb[_0xe9bd('0x98')]==='undefined')return;if(_[_0xe9bd('0x9a')](_0x4af2eb[_0xe9bd('0x73')]))return;return RpcSetting['getSettings']()[_0xe9bd('0x9b')](function(_0x1feb09){if(!_0x1feb09[_0xe9bd('0x9c')])return;return Promise[_0xe9bd('0x99')]()[_0xe9bd('0x9b')](function(){return ami[_0xe9bd('0x9d')]({'action':_0xe9bd('0x9e'),'channel':_0x4af2eb['channel']})[_0xe9bd('0x9f')](function(){});})[_0xe9bd('0x9b')](function(){return ami[_0xe9bd('0x9d')]({'action':_0xe9bd('0x9e'),'channel':_0x4af2eb[_0xe9bd('0x63')]})[_0xe9bd('0x9f')](function(){})['finally'](function(){var _0xb82cb2=_0x58f73d[_0xe9bd('0x14')][_0x4af2eb[_0xe9bd('0x63')][_0xe9bd('0x40')]('-')[0x0]];if(!_0xb82cb2)return;io[_0xe9bd('0x2e')]('webbar:stopmonitors',{'agentId':_0xb82cb2['id'],'uniqueid':_0x4af2eb['uniqueid']});});});});})['then'](function(){if(_0x3c9825[_0xe9bd('0xa0')]==='BlindTransfer'){_0x58f73d[_0xe9bd('0x8f')][_0x3c9825[_0xe9bd('0x31')]]=_0x3c9825;}else{if(_0x58f73d['channels'][_0x3c9825[_0xe9bd('0x31')]][_0xe9bd('0x5b')]===_0xe9bd('0xa1')&&_0x58f73d[_0xe9bd('0x8f')][_0x3c9825[_0xe9bd('0x31')]]){_0x58f73d[_0xe9bd('0x13')][_0x3c9825[_0xe9bd('0x31')]]['uniqueid']=[_0x58f73d['channels'][_0x3c9825[_0xe9bd('0x31')]]['linkedid'],_0x58f73d['channels'][_0x3c9825[_0xe9bd('0x31')]][_0xe9bd('0x34')]=_0x58f73d[_0xe9bd('0x13')][_0x3c9825[_0xe9bd('0x31')]][_0xe9bd('0x31')]][0x0];delete _0x58f73d[_0xe9bd('0x8f')][_0x3c9825[_0xe9bd('0x31')]];}}logger[_0xe9bd('0x4b')](_0xe9bd('0xa2'),_0x3c9825[_0xe9bd('0x31')],util[_0xe9bd('0x45')](_0x58f73d['channels'][_0x3c9825[_0xe9bd('0x31')]],{'showHidden':![],'depth':null}));ami['emit'](_0xe9bd('0xa3'),_0x58f73d[_0xe9bd('0x13')][_0x3c9825[_0xe9bd('0x31')]]);delete _0x58f73d[_0xe9bd('0x13')][_0x3c9825['uniqueid']];});}}}catch(_0x22ca72){logger[_0xe9bd('0x29')](_0xe9bd('0xa4'),_0x3c9825['uniqueid'],util['inspect'](_0x22ca72,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe9bd('0x2b')][_0xe9bd('0x20')]=function(_0x6e1fd3){try{if(this[_0xe9bd('0x2c')](_0x6e1fd3)){logger[_0xe9bd('0x27')](_0xe9bd('0xa5'),_0x6e1fd3['uniqueid'],_0x6e1fd3[_0xe9bd('0xa6')],_0x6e1fd3[_0xe9bd('0xa7')]);logger[_0xe9bd('0x4b')](_0xe9bd('0xa8'),_0x6e1fd3['uniqueid'],util[_0xe9bd('0x45')](_0x6e1fd3,{'showHidden':![],'depth':null}));var _0xddd7aa;if(this[_0xe9bd('0x13')][_0x6e1fd3['transfereeuniqueid']]){this[_0xe9bd('0x13')][_0x6e1fd3[_0xe9bd('0xa9')]][_0xe9bd('0xaa')]=_0x6e1fd3[_0xe9bd('0xa6')];this[_0xe9bd('0x13')][_0x6e1fd3[_0xe9bd('0xa9')]][_0xe9bd('0xab')]=_0x6e1fd3['transfertargetcalleridnum'];if(this['channels'][_0x6e1fd3[_0xe9bd('0xac')]]){_0xddd7aa=this[_0xe9bd('0x13')][_0x6e1fd3[_0xe9bd('0xac')]];this['channels'][_0x6e1fd3['secondtransfereruniqueid']]=this[_0xe9bd('0x13')][_0x6e1fd3[_0xe9bd('0xa9')]];this[_0xe9bd('0x13')][_0x6e1fd3['transfereeuniqueid']]=_0xddd7aa;}this[_0xe9bd('0x13')][_0x6e1fd3['secondtransfereruniqueid']][_0xe9bd('0x98')]=_0xe9bd('0xad');}else if(this[_0xe9bd('0x13')][_0x6e1fd3[_0xe9bd('0xae')]]){this[_0xe9bd('0x13')][_0x6e1fd3[_0xe9bd('0xae')]][_0xe9bd('0xaa')]=_0x6e1fd3[_0xe9bd('0xa6')];this[_0xe9bd('0x13')][_0x6e1fd3['transfertargetuniqueid']]['transferconnectedlinenum']=_0x6e1fd3[_0xe9bd('0xa7')];if(this[_0xe9bd('0x13')][_0x6e1fd3[_0xe9bd('0xaf')]]){_0xddd7aa=this[_0xe9bd('0x13')][_0x6e1fd3[_0xe9bd('0xaf')]];this[_0xe9bd('0x13')][_0x6e1fd3[_0xe9bd('0xaf')]]=this[_0xe9bd('0x13')][_0x6e1fd3['transfertargetuniqueid']];this[_0xe9bd('0x13')][_0x6e1fd3[_0xe9bd('0xae')]]=_0xddd7aa;}this['channels'][_0x6e1fd3[_0xe9bd('0xae')]]['transferType']=_0xe9bd('0xad');}if((this[_0xe9bd('0x13')][_0x6e1fd3[_0xe9bd('0xaf')]]||this['channels'][_0x6e1fd3[_0xe9bd('0xb0')]])&&this[_0xe9bd('0x13')][_0x6e1fd3['secondtransfereruniqueid']]){var _0x10d9ed=_[_0xe9bd('0xb1')]([this[_0xe9bd('0x13')][_0x6e1fd3[_0xe9bd('0xaf')]],this[_0xe9bd('0x13')][_0x6e1fd3['origtransfererlinkedid']],this[_0xe9bd('0x13')][_0x6e1fd3[_0xe9bd('0xac')]]],function(_0x993518){return _0x993518&&_0x993518[_0xe9bd('0x5b')]===_0xe9bd('0xa1')&&_0x993518[_0xe9bd('0xb2')];});if(_0x10d9ed){if(this['channels'][_0x6e1fd3[_0xe9bd('0xaf')]])this['channels'][_0x6e1fd3[_0xe9bd('0xaf')]]['transferType']=_0xe9bd('0xad');if(this[_0xe9bd('0x13')][_0x6e1fd3['origtransfererlinkedid']])this[_0xe9bd('0x13')][_0x6e1fd3[_0xe9bd('0xb0')]]['transferType']=_0xe9bd('0xad');this['channels'][_0x6e1fd3['secondtransfereruniqueid']]['transferType']=_0xe9bd('0xad');}}}}catch(_0x51550e){logger['error']('[%s][voiceCallReport][attendedtransfer]',_0x6e1fd3[_0xe9bd('0x31')],util['inspect'](_0x51550e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe9bd('0x2b')][_0xe9bd('0x22')]=function(_0x535249){try{if(this[_0xe9bd('0x2c')](_0x535249)){logger[_0xe9bd('0x27')](_0xe9bd('0xb3'),_0x535249[_0xe9bd('0x31')],_0x535249[_0xe9bd('0xb4')],_0x535249[_0xe9bd('0xb5')]);logger[_0xe9bd('0x4b')](_0xe9bd('0xb6'),_0x535249[_0xe9bd('0x31')],util[_0xe9bd('0x45')](_0x535249,{'showHidden':![],'depth':null}));if(this[_0xe9bd('0x13')][_0x535249[_0xe9bd('0xa9')]]){this[_0xe9bd('0x13')][_0x535249['transfereeuniqueid']][_0xe9bd('0xaa')]=_0x535249[_0xe9bd('0xb4')];this[_0xe9bd('0x13')][_0x535249[_0xe9bd('0xa9')]][_0xe9bd('0xab')]=_0x535249['extension'];this[_0xe9bd('0x13')][_0x535249[_0xe9bd('0xa9')]][_0xe9bd('0x98')]=_0xe9bd('0xb7');this[_0xe9bd('0x1e')]({'event':_0xe9bd('0xb8'),'uniqueid':_0x535249[_0xe9bd('0xa9')],'linkedid':_0x535249['transfereruniqueid'],'context':_0x535249[_0xe9bd('0x37')],'channel':_0x535249[_0xe9bd('0xb9')]});}else{this['channels'][_0x535249[_0xe9bd('0xba')]][_0xe9bd('0x98')]=_0xe9bd('0xb7');this[_0xe9bd('0x1e')]({'event':_0xe9bd('0xb8'),'uniqueid':_0x535249[_0xe9bd('0xba')],'linkedid':_0x535249[_0xe9bd('0xa9')],'context':_0x535249[_0xe9bd('0x37')],'channel':_0x535249['transfererchannel']});}}}catch(_0x3e445d){logger[_0xe9bd('0x29')](_0xe9bd('0xbb'),_0x535249['uniqueid'],util[_0xe9bd('0x45')](_0x3e445d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xe9bd('0x2b')]['syncMusicOnHoldStart']=function(_0x48dc13){try{if(this[_0xe9bd('0x2c')](_0x48dc13)){logger['debug'](_0xe9bd('0xbc'),_0x48dc13[_0xe9bd('0x31')],util[_0xe9bd('0x45')](_0x48dc13,{'showHidden':![],'depth':null}));if(this[_0xe9bd('0x13')][_0x48dc13[_0xe9bd('0x31')]]){if(!_[_0xe9bd('0x74')](this[_0xe9bd('0x13')][_0x48dc13[_0xe9bd('0x31')]]['answertime'])){this[_0xe9bd('0x13')][_0x48dc13[_0xe9bd('0x31')]][_0xe9bd('0xbd')]=moment()[_0xe9bd('0x3e')](_0xe9bd('0x49'));logger[_0xe9bd('0x27')]('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x48dc13[_0xe9bd('0x31')],this[_0xe9bd('0x13')][_0x48dc13[_0xe9bd('0x31')]][_0xe9bd('0xbd')]);}}}}catch(_0x458fe0){logger[_0xe9bd('0x29')](_0xe9bd('0xbe'),_0x48dc13[_0xe9bd('0x31')],util['inspect'](_0x458fe0,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xe9bd('0x26')]=function(_0x203a9b){try{if(this[_0xe9bd('0x2c')](_0x203a9b)){logger[_0xe9bd('0x4b')](_0xe9bd('0xbf'),_0x203a9b[_0xe9bd('0x31')],util[_0xe9bd('0x45')](_0x203a9b,{'showHidden':![],'depth':null}));if(this[_0xe9bd('0x13')][_0x203a9b[_0xe9bd('0x31')]]){if(!_[_0xe9bd('0x74')](this['channels'][_0x203a9b[_0xe9bd('0x31')]][_0xe9bd('0xbd')])){this[_0xe9bd('0x13')][_0x203a9b[_0xe9bd('0x31')]][_0xe9bd('0xc0')]+=moment()[_0xe9bd('0xc1')](0x0)[_0xe9bd('0x61')](this['channels'][_0x203a9b[_0xe9bd('0x31')]][_0xe9bd('0xbd')],_0xe9bd('0x56'));logger[_0xe9bd('0x27')](_0xe9bd('0xc2'),_0x203a9b['uniqueid'],this[_0xe9bd('0x13')][_0x203a9b[_0xe9bd('0x31')]][_0xe9bd('0xc0')]);delete this[_0xe9bd('0x13')][_0x203a9b[_0xe9bd('0x31')]]['mohstarttime'];}}}}catch(_0x302497){logger['error'](_0xe9bd('0xc3'),_0x203a9b[_0xe9bd('0x31')],util[_0xe9bd('0x45')](_0x302497,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
+var _0x303a=['transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','routeid','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','transfereruniqueid','transfererchannel','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]','syncMusicOnHoldStop','[%s][voiceCallReport][musiconholdstop]\x20event:','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','mohtime','[%s][voiceCallReport][musiconholdstop]','exports','lodash','util','path','ioredis','../../../config/environment','ami','../ami','../model/channel','../rpc/setting','set','queue','agi','dial','playback','FAILED','NO\x20ANSWER','BUSY','redis','defaults','localhost','channels','agents','blindTransfers','coreshowchannel','syncNewExten','bind','newexten','newchannel','syncNewChannel','newstate','syncNewState','syncVarSet','hangup','syncNewCallerId','attendedtransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','info','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','isUndefined','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','linkedid','merge','pick','keys','channel','split','exten','destconnectedlinenum','format','user:%s','name','connectedlinenum','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','context','starttime','disposition','toNumber','from-sip','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','accountcode','[%s][voiceCallReport][newchannel]','application','appdata','applicationdata','startsWith','toLowerCase','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','subtract','duration','seconds','YYYY-MM-DD\x20HH:mm:ss','lastdata','cdr(','match','type','calleridname','[%s][voiceCallReport][newstate]\x20event:','channelstate','answered','holdtime','diff','xcally-motion-preview','destinationchannel','UserId','membername','answertime','connectedlinename','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','.wav49','replace','.WAV','monitorFilename','find','monitors','isNil','rec','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','value','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','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','sipcalluniqueid','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','sipcalllinkedid','[%s][voiceCallReport][varset]','syncHangup','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','billableseconds','omit','user:agentcomplete','transferType','resolve','then','undefined','isEmpty','getSettings','StopMixMonitor','catch','Action','finally','BlindTransfer','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','syncAttendedTransfer','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','origtransferercalleridnum','transferconnectedlinenum','transfertargetcalleridnum','secondtransfereruniqueid','ATTENDED'];(function(_0x3b672c,_0x27ad85){var _0x33efa6=function(_0x2ec83f){while(--_0x2ec83f){_0x3b672c['push'](_0x3b672c['shift']());}};_0x33efa6(++_0x27ad85);}(_0x303a,0x1a0));var _0xa303=function(_0x2baca1,_0x2f3557){_0x2baca1=_0x2baca1-0x0;var _0x9aa62a=_0x303a[_0x2baca1];return _0x9aa62a;};'use strict';var _=require(_0xa303('0x0'));var moment=require('moment');var util=require(_0xa303('0x1'));var path=require(_0xa303('0x2'));var Redis=require(_0xa303('0x3'));var config=require(_0xa303('0x4'));var logger=require('../../../config/logger')(_0xa303('0x5'));var ami=require(_0xa303('0x6'));var Channel=require(_0xa303('0x7'));var RpcSetting=require(_0xa303('0x8'));var applications=[_0xa303('0x9'),_0xa303('0xa'),_0xa303('0xb'),_0xa303('0xc'),_0xa303('0xd'),'voicemail'];var dispositions=['NO\x20ANSWER','FAILED',_0xa303('0xe'),_0xa303('0xf'),'NO\x20ANSWER',_0xa303('0xf'),'ANSWERED',_0xa303('0x10'),'FAILED',_0xa303('0xe'),_0xa303('0xe')];config[_0xa303('0x11')]=_[_0xa303('0x12')](config['redis'],{'host':_0xa303('0x13'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa303('0x11')]));function VoiceCallReport(_0x43a054){this[_0xa303('0x14')]=_0x43a054['channels'];this[_0xa303('0x15')]=_0x43a054[_0xa303('0x15')];this[_0xa303('0x16')]={};ami['on'](_0xa303('0x17'),this[_0xa303('0x18')][_0xa303('0x19')](this));ami['on'](_0xa303('0x1a'),this[_0xa303('0x18')]['bind'](this));ami['on'](_0xa303('0x1b'),this[_0xa303('0x1c')][_0xa303('0x19')](this));ami['on'](_0xa303('0x1d'),this[_0xa303('0x1e')][_0xa303('0x19')](this));ami['on']('varset',this[_0xa303('0x1f')]['bind'](this));ami['on'](_0xa303('0x20'),this['syncHangup'][_0xa303('0x19')](this));ami['on']('newcallerid',this[_0xa303('0x21')][_0xa303('0x19')](this));ami['on'](_0xa303('0x22'),this['syncAttendedTransfer'][_0xa303('0x19')](this));ami['on'](_0xa303('0x23'),this[_0xa303('0x24')]['bind'](this));ami['on'](_0xa303('0x25'),this[_0xa303('0x26')][_0xa303('0x19')](this));ami['on'](_0xa303('0x27'),this['syncMusicOnHoldStop'][_0xa303('0x19')](this));try{logger[_0xa303('0x28')]('[voiceCallReport][coreshowchannels]\x20started');ami[_0xa303('0x29')]();}catch(_0x27c1d7){logger[_0xa303('0x2a')](_0xa303('0x2b'),util[_0xa303('0x2c')](_0x27c1d7,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xa303('0x2d')][_0xa303('0x2e')]=function(_0x5d9dee){return _0x5d9dee!==null&&!_[_0xa303('0x2f')](_0x5d9dee);};VoiceCallReport['prototype']['emit']=function(_0x4dad5b,_0x58922f,_0x5da2d2){io['to'](_0x4dad5b)[_0xa303('0x30')](_0x58922f,_0x5da2d2);};VoiceCallReport[_0xa303('0x2d')][_0xa303('0x21')]=function(_0xbb93f0){try{if(this[_0xa303('0x2e')](_0xbb93f0)){logger['info'](_0xa303('0x31'),_0xbb93f0[_0xa303('0x32')],_0xbb93f0['calleridname'],_0xbb93f0[_0xa303('0x33')]);logger[_0xa303('0x34')](_0xa303('0x35'),_0xbb93f0[_0xa303('0x32')],util[_0xa303('0x2c')](_0xbb93f0,{'showHidden':![],'depth':null}));if(_0xbb93f0[_0xa303('0x32')]===_0xbb93f0[_0xa303('0x36')]){if(!_[_0xa303('0x2f')](this[_0xa303('0x14')][_0xbb93f0[_0xa303('0x32')]])){_[_0xa303('0x37')](this[_0xa303('0x14')][_0xbb93f0[_0xa303('0x32')]],_[_0xa303('0x38')](_0xbb93f0,_[_0xa303('0x39')](this[_0xa303('0x14')][_0xbb93f0[_0xa303('0x32')]])));}}if(_0xbb93f0['context']==='from-sip'){if(this[_0xa303('0x15')][_0xbb93f0[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]]){if(_0xbb93f0[_0xa303('0x3c')]=='xcally-motion-preview'){this[_0xa303('0x15')][_0xbb93f0[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]][_0xa303('0x3d')]=_0xbb93f0['connectedlinenum'];this[_0xa303('0x30')](util[_0xa303('0x3e')](_0xa303('0x3f'),this['agents'][_0xbb93f0[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]][_0xa303('0x40')]),'user:agentconnect',{'destaccountcode':this[_0xa303('0x15')][_0xbb93f0[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0xbb93f0[_0xa303('0x41')]});}}}}}catch(_0x25ae45){logger[_0xa303('0x2a')](_0xa303('0x42'),_0xbb93f0['uniqueid'],util[_0xa303('0x2c')](_0x25ae45,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa303('0x2d')][_0xa303('0x1c')]=function(_0x26ffab){try{if(this['isNotNull'](_0x26ffab)){logger[_0xa303('0x34')](_0xa303('0x43'),_0x26ffab[_0xa303('0x32')],util[_0xa303('0x2c')](_0x26ffab,{'showHidden':![],'depth':null}));if(this[_0xa303('0x14')][_0x26ffab['uniqueid']])return;if(_0x26ffab['channel']===_0xa303('0x44'))return;if(_0x26ffab[_0xa303('0x32')]!==_0x26ffab[_0xa303('0x36')]&&!this['blindTransfers'][_0x26ffab['linkedid']])return;logger[_0xa303('0x28')](_0xa303('0x45'),_0x26ffab[_0xa303('0x32')],_0x26ffab[_0xa303('0x46')],_0x26ffab['exten']);this['channels'][_0x26ffab[_0xa303('0x32')]]=new Channel();this[_0xa303('0x14')][_0x26ffab[_0xa303('0x32')]][_0xa303('0x47')]=moment()[_0xa303('0x3e')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xa303('0x14')][_0x26ffab[_0xa303('0x32')]][_0xa303('0x48')]=dispositions[_[_0xa303('0x49')](_0x26ffab['channelstate'])];_['merge'](this['channels'][_0x26ffab[_0xa303('0x32')]],_[_0xa303('0x38')](_0x26ffab,_[_0xa303('0x39')](this[_0xa303('0x14')][_0x26ffab[_0xa303('0x32')]])));if(_0x26ffab[_0xa303('0x46')]===_0xa303('0x4a')){if(this[_0xa303('0x15')][_0x26ffab[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]]){if(_[_0xa303('0x2f')](this['agents'][_0x26ffab['channel'][_0xa303('0x3b')]('-')[0x0]]['destconnectedlinenum'])){this[_0xa303('0x15')][_0x26ffab['channel'][_0xa303('0x3b')]('-')[0x0]][_0xa303('0x3d')]=_0x26ffab[_0xa303('0x3c')];logger[_0xa303('0x34')](_0xa303('0x4b'),_0x26ffab[_0xa303('0x32')],util[_0xa303('0x2c')]({'id':this[_0xa303('0x15')][_0x26ffab[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]]['id'],'destaccountcode':this[_0xa303('0x15')][_0x26ffab[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x26ffab[_0xa303('0x3c')]},{'showHidden':![],'depth':null}));this['emit'](util[_0xa303('0x3e')](_0xa303('0x3f'),this[_0xa303('0x15')][_0x26ffab['channel']['split']('-')[0x0]][_0xa303('0x40')]),_0xa303('0x4c'),{'id':this[_0xa303('0x15')][_0x26ffab[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]]['id'],'destaccountcode':this[_0xa303('0x15')][_0x26ffab[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]][_0xa303('0x4d')],'destconnectedlinenum':_0x26ffab[_0xa303('0x3c')]});}}}}}catch(_0x4f7300){logger[_0xa303('0x2a')](_0xa303('0x4e'),_0x26ffab['uniqueid'],util[_0xa303('0x2c')](_0x4f7300,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xa303('0x18')]=function(_0x2c0bbb){try{if(this[_0xa303('0x2e')](_0x2c0bbb)){logger[_0xa303('0x34')]('[%s][voiceCallReport][newexten]\x20event:',_0x2c0bbb[_0xa303('0x32')],util[_0xa303('0x2c')](_0x2c0bbb,{'showHidden':![],'depth':null}));if(_0x2c0bbb[_0xa303('0x3a')]===_0xa303('0x44')||_0x2c0bbb[_0xa303('0x3c')]==='h')return;if(_0x2c0bbb[_0xa303('0x32')]===_0x2c0bbb['linkedid']||this[_0xa303('0x16')][_0x2c0bbb[_0xa303('0x36')]]){_0x2c0bbb[_0xa303('0x4f')]=_0x2c0bbb[_0xa303('0x4f')]['toLowerCase']();_0x2c0bbb['applicationdata']=_0x2c0bbb[_0xa303('0x50')]||_0x2c0bbb[_0xa303('0x51')];if(_0x2c0bbb[_0xa303('0x50')]&&!_0x2c0bbb['appdata'][_0xa303('0x52')]('CDR(routeAlias)')&&_0x2c0bbb['application']!=='queue'){_0x2c0bbb['applicationdata']=_0x2c0bbb[_0xa303('0x51')][_0xa303('0x53')]();}logger['info'](_0xa303('0x54'),_0x2c0bbb[_0xa303('0x32')],_0x2c0bbb[_0xa303('0x4f')],_0x2c0bbb[_0xa303('0x51')]);if(_[_0xa303('0x2f')](this['channels'][_0x2c0bbb[_0xa303('0x32')]])){this[_0xa303('0x14')][_0x2c0bbb[_0xa303('0x32')]]=new Channel();this[_0xa303('0x14')][_0x2c0bbb[_0xa303('0x32')]]['starttime']=_0x2c0bbb['duration']?moment()[_0xa303('0x55')](moment[_0xa303('0x56')](_0x2c0bbb[_0xa303('0x56')])[_0xa303('0x57')](),_0xa303('0x57'))[_0xa303('0x3e')](_0xa303('0x58')):moment()[_0xa303('0x3e')](_0xa303('0x58'));this['channels'][_0x2c0bbb[_0xa303('0x32')]][_0xa303('0x48')]=_0xa303('0xf');}_[_0xa303('0x37')](this['channels'][_0x2c0bbb['uniqueid']],_[_0xa303('0x38')](_0x2c0bbb,_['keys'](this[_0xa303('0x14')][_0x2c0bbb[_0xa303('0x32')]])));if(_['includes'](applications,_0x2c0bbb['application'])){this[_0xa303('0x14')][_0x2c0bbb[_0xa303('0x32')]]['lastapplication']=_0x2c0bbb['application'];this['channels'][_0x2c0bbb[_0xa303('0x32')]][_0xa303('0x59')]=_0x2c0bbb[_0xa303('0x51')];if(_0x2c0bbb[_0xa303('0x4f')]===_0xa303('0x9')&&_[_0xa303('0x52')](_0x2c0bbb[_0xa303('0x51')][_0xa303('0x53')](),_0xa303('0x5a'))){var _0x50fb49=_0x2c0bbb[_0xa303('0x51')][_0xa303('0x3b')]('=');var _0x318c16=_0x50fb49[0x0][_0xa303('0x53')]()[_0xa303('0x5b')](/cdr\((.*)\)/);if(_0x318c16){if(_0x318c16[0x1]===_0xa303('0x5c')&&!_['isNil'](this[_0xa303('0x14')][_0x2c0bbb['uniqueid']][_0x318c16[0x1]]))return;this['channels'][_0x2c0bbb[_0xa303('0x32')]][_0x318c16[0x1]]=_0x50fb49[0x1];}}else if(_0x2c0bbb[_0xa303('0x4f')]==='queue'){this[_0xa303('0x14')][_0x2c0bbb[_0xa303('0x32')]][_0xa303('0xa')]=_0x2c0bbb[_0xa303('0x51')][_0xa303('0x3b')](',')[0x0];}}}}}catch(_0x5499be){logger['error']('[%s][voiceCallReport][newexten]',_0x2c0bbb[_0xa303('0x32')],util[_0xa303('0x2c')](_0x5499be,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa303('0x2d')]['syncNewState']=function(_0x5901d9){try{if(this[_0xa303('0x2e')](_0x5901d9)){logger['info']('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x5901d9['uniqueid'],_0x5901d9['linkedid'],_0x5901d9[_0xa303('0x5d')],_0x5901d9[_0xa303('0x33')]);logger[_0xa303('0x34')](_0xa303('0x5e'),_0x5901d9[_0xa303('0x32')],util[_0xa303('0x2c')](_0x5901d9,{'showHidden':![],'depth':null}));if(_0x5901d9[_0xa303('0x5f')]!=='6')return;if(_0x5901d9[_0xa303('0x32')]!==_0x5901d9['linkedid']){var _0x358936=moment();if(this[_0xa303('0x14')][_0x5901d9[_0xa303('0x36')]]){if(!this[_0xa303('0x14')][_0x5901d9[_0xa303('0x36')]][_0xa303('0x60')]){this['channels'][_0x5901d9[_0xa303('0x36')]]['answered']=!![];this['channels'][_0x5901d9[_0xa303('0x36')]]['answertime']=_0x358936['format']('YYYY-MM-DD\x20HH:mm:ss');if(this['channels'][_0x5901d9['linkedid']][_0xa303('0x47')]){this[_0xa303('0x14')][_0x5901d9[_0xa303('0x36')]][_0xa303('0x61')]=_0x358936[_0xa303('0x62')](this['channels'][_0x5901d9[_0xa303('0x36')]][_0xa303('0x47')],'seconds');}}this['channels'][_0x5901d9[_0xa303('0x36')]][_0xa303('0x36')]=_0x5901d9[_0xa303('0x32')];if(_0x5901d9['calleridnum']!==_0xa303('0x63')){this[_0xa303('0x14')][_0x5901d9[_0xa303('0x36')]][_0xa303('0x41')]=_0x5901d9[_0xa303('0x33')];}this[_0xa303('0x14')][_0x5901d9[_0xa303('0x36')]]['connectedlinename']=_0x5901d9[_0xa303('0x5d')];this[_0xa303('0x14')][_0x5901d9[_0xa303('0x36')]][_0xa303('0x64')]=_0x5901d9['channel'];this[_0xa303('0x14')][_0x5901d9[_0xa303('0x36')]]['disposition']=dispositions[_[_0xa303('0x49')](_0x5901d9[_0xa303('0x5f')])];if(this[_0xa303('0x15')][_0x5901d9['channel'][_0xa303('0x3b')]('-')[0x0]]){this['channels'][_0x5901d9[_0xa303('0x36')]][_0xa303('0x65')]=this[_0xa303('0x15')][_0x5901d9[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]]['id'];this[_0xa303('0x14')][_0x5901d9[_0xa303('0x36')]][_0xa303('0x66')]=this[_0xa303('0x15')][_0x5901d9[_0xa303('0x3a')]['split']('-')[0x0]]['name'];}}if(this['channels'][_0x5901d9[_0xa303('0x32')]]){if(!this['channels'][_0x5901d9[_0xa303('0x32')]][_0xa303('0x60')]){this[_0xa303('0x14')][_0x5901d9[_0xa303('0x32')]][_0xa303('0x60')]=!![];this[_0xa303('0x14')][_0x5901d9[_0xa303('0x32')]][_0xa303('0x67')]=_0x358936[_0xa303('0x3e')](_0xa303('0x58'));if(this[_0xa303('0x14')][_0x5901d9[_0xa303('0x32')]][_0xa303('0x47')]){this[_0xa303('0x14')][_0x5901d9[_0xa303('0x32')]][_0xa303('0x61')]=_0x358936[_0xa303('0x62')](this[_0xa303('0x14')][_0x5901d9['uniqueid']][_0xa303('0x47')],_0xa303('0x57'));}}if(_0x5901d9['calleridnum']!==_0xa303('0x63')){this[_0xa303('0x14')][_0x5901d9[_0xa303('0x32')]][_0xa303('0x41')]=_0x5901d9['calleridnum'];}this[_0xa303('0x14')][_0x5901d9['uniqueid']][_0xa303('0x68')]=_0x5901d9['calleridname'];this[_0xa303('0x14')][_0x5901d9['uniqueid']][_0xa303('0x64')]=_0x5901d9['channel'];this['channels'][_0x5901d9[_0xa303('0x32')]]['disposition']=dispositions[_[_0xa303('0x49')](_0x5901d9[_0xa303('0x5f')])];}}else{if(this[_0xa303('0x14')][_0x5901d9[_0xa303('0x32')]]){if(this[_0xa303('0x15')][_0x5901d9[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]]){this[_0xa303('0x14')][_0x5901d9['uniqueid']]['UserId']=this[_0xa303('0x15')][_0x5901d9[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]]['id'];this[_0xa303('0x14')][_0x5901d9[_0xa303('0x32')]][_0xa303('0x66')]=this[_0xa303('0x15')][_0x5901d9[_0xa303('0x3a')]['split']('-')[0x0]]['name'];}}}if(_0x5901d9[_0xa303('0x46')]===_0xa303('0x4a')){if(this[_0xa303('0x15')][_0x5901d9[_0xa303('0x3a')]['split']('-')[0x0]]){this['agents'][_0x5901d9[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]][_0xa303('0x3d')]=_0x5901d9['exten'];var _0x5ba105,_0x54d116;if(this[_0xa303('0x14')][_0x5901d9[_0xa303('0x32')]]){_0x5ba105=this[_0xa303('0x14')][_0x5901d9[_0xa303('0x32')]][_0xa303('0x69')];_0x54d116=this[_0xa303('0x14')][_0x5901d9['uniqueid']][_0xa303('0xa')];}else if(this[_0xa303('0x14')][_0x5901d9[_0xa303('0x36')]]){_0x5ba105=this['channels'][_0x5901d9[_0xa303('0x36')]]['routealias'];_0x54d116=this[_0xa303('0x14')][_0x5901d9[_0xa303('0x36')]][_0xa303('0xa')];}logger[_0xa303('0x34')](_0xa303('0x6a'),_0x5901d9[_0xa303('0x32')],util[_0xa303('0x2c')]({'id':this[_0xa303('0x15')][_0x5901d9[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]]['id'],'destaccountcode':this[_0xa303('0x15')][_0x5901d9[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]][_0xa303('0x4d')],'destconnectedlinenum':_0x5901d9[_0xa303('0x3c')],'routealias':_0x5ba105,'queue':_0x54d116||undefined},{'showHidden':![],'depth':null}));this[_0xa303('0x30')](util[_0xa303('0x3e')]('user:%s',this[_0xa303('0x15')][_0x5901d9[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]]['name']),_0xa303('0x4c'),{'id':this['agents'][_0x5901d9[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0xa303('0x15')][_0x5901d9['channel']['split']('-')[0x0]][_0xa303('0x4d')],'destconnectedlinenum':_0x5901d9['exten'],'routealias':_0x5ba105,'queue':_0x54d116||undefined});}}}}catch(_0x29d5e1){logger[_0xa303('0x2a')](_0xa303('0x6b'),_0x5901d9[_0xa303('0x32')],util[_0xa303('0x2c')](_0x29d5e1,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa303('0x2d')][_0xa303('0x6c')]=function(_0x4db66d,_0x13207a){try{if(this[_0xa303('0x14')][_0x4db66d]){logger['info'](_0xa303('0x6d'),_0x4db66d,_0x13207a);this[_0xa303('0x14')][_0x4db66d][_0xa303('0x6e')]=!![];if(_['endsWith'](_0x13207a,_0xa303('0x6f'))){_0x13207a=_0x13207a[_0xa303('0x70')](_0xa303('0x6f'),_0xa303('0x71'));}this['channels'][_0x4db66d][_0xa303('0x72')]=_0x13207a;var _0xbdaedc=_[_0xa303('0x73')](this[_0xa303('0x14')][_0x4db66d][_0xa303('0x74')],{'filename':_0x13207a});if(_[_0xa303('0x75')](_0xbdaedc)){this[_0xa303('0x14')][_0x4db66d][_0xa303('0x74')]['push']({'filename':_0x13207a,'createdAt':moment()[_0xa303('0x3e')](_0xa303('0x58')),'mixmonitorid':'','status':_0xa303('0x76')});}}}catch(_0x1d8530){logger[_0xa303('0x2a')]('[%s][voiceCallReport][mixMonitorFilename]',_0x4db66d,util['inspect'](_0x1d8530,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa303('0x2d')]['syncVarSet']=function(_0x1aaa16){try{if(this[_0xa303('0x2e')](_0x1aaa16)){logger[_0xa303('0x34')](_0xa303('0x77'),_0x1aaa16[_0xa303('0x32')],util[_0xa303('0x2c')](_0x1aaa16,{'showHidden':![],'depth':null}));if(this[_0xa303('0x14')][_0x1aaa16[_0xa303('0x32')]]&&_0x1aaa16[_0xa303('0x3a')]!=_0xa303('0x44')){if(this['isNotNull'](_0x1aaa16['variable'])){if(this[_0xa303('0x2e')](_0x1aaa16[_0xa303('0x78')][_0xa303('0x79')])){logger[_0xa303('0x28')]('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x1aaa16['uniqueid'],_0x1aaa16['value']);this[_0xa303('0x6c')](_0x1aaa16[_0xa303('0x32')],_0x1aaa16[_0xa303('0x7a')]);}else if(this[_0xa303('0x2e')](_0x1aaa16[_0xa303('0x78')]['xmd-phone'])){logger['info'](_0xa303('0x7b'),_0x1aaa16[_0xa303('0x32')],_0x1aaa16[_0xa303('0x7a')]);this[_0xa303('0x14')][_0x1aaa16[_0xa303('0x32')]]['calleridnum']=_0x1aaa16[_0xa303('0x7a')];}else if(this[_0xa303('0x2e')](_0x1aaa16['variable'][_0xa303('0x7c')])){logger[_0xa303('0x28')](_0xa303('0x7d'),_0x1aaa16[_0xa303('0x32')],_0x1aaa16[_0xa303('0x7a')]);this[_0xa303('0x14')][_0x1aaa16[_0xa303('0x32')]][_0xa303('0x7e')]=_0x1aaa16['value'];}else if(this[_0xa303('0x2e')](_0x1aaa16['variable']['xmd-cdrtype'])){logger[_0xa303('0x28')](_0xa303('0x7f'),_0x1aaa16[_0xa303('0x32')],_0x1aaa16[_0xa303('0x7a')]);this[_0xa303('0x14')][_0x1aaa16[_0xa303('0x32')]][_0xa303('0x5c')]=_0x1aaa16['value'];}else if(this[_0xa303('0x2e')](_0x1aaa16[_0xa303('0x78')][_0xa303('0x80')])){logger[_0xa303('0x28')](_0xa303('0x81'),_0x1aaa16[_0xa303('0x32')],_0x1aaa16[_0xa303('0x7a')][_0xa303('0x3b')](',')[0x0]);this[_0xa303('0x14')][_0x1aaa16[_0xa303('0x32')]][_0xa303('0xa')]=_0x1aaa16[_0xa303('0x7a')][_0xa303('0x3b')](',')[0x0];}else if(this[_0xa303('0x2e')](_0x1aaa16['variable'][_0xa303('0x82')])){logger[_0xa303('0x28')](_0xa303('0x83'),_0x1aaa16['uniqueid'],_0x1aaa16['value']);this['channels'][_0x1aaa16['uniqueid']]['originatecalleridnum']=_0x1aaa16[_0xa303('0x7a')];}else if(this[_0xa303('0x2e')](_0x1aaa16[_0xa303('0x78')][_0xa303('0x84')])){logger[_0xa303('0x28')](_0xa303('0x85'),_0x1aaa16[_0xa303('0x32')],_0x1aaa16['value']);this['channels'][_0x1aaa16['uniqueid']]['destination']=_0x1aaa16[_0xa303('0x7a')];}else if(this[_0xa303('0x2e')](_0x1aaa16['variable'][_0xa303('0x86')])){logger[_0xa303('0x28')](_0xa303('0x87'),_0x1aaa16[_0xa303('0x32')],_0x1aaa16['value']);this['channels'][_0x1aaa16[_0xa303('0x32')]][_0xa303('0x88')]=_0x1aaa16[_0xa303('0x7a')];}else if(this[_0xa303('0x2e')](_0x1aaa16[_0xa303('0x78')][_0xa303('0x89')])){logger[_0xa303('0x28')](_0xa303('0x8a'),_0x1aaa16[_0xa303('0x32')],_0x1aaa16[_0xa303('0x7a')]);this[_0xa303('0x14')][_0x1aaa16['uniqueid']][_0xa303('0xa')]=_0x1aaa16[_0xa303('0x7a')];}else if(this[_0xa303('0x2e')](_0x1aaa16[_0xa303('0x78')][_0xa303('0x8b')])){logger[_0xa303('0x28')](_0xa303('0x8c'),_0x1aaa16[_0xa303('0x32')],_0x1aaa16[_0xa303('0x7a')]);this[_0xa303('0x14')][_0x1aaa16[_0xa303('0x32')]][_0xa303('0x8d')]=_0x1aaa16[_0xa303('0x7a')];}}}else if(this['isNotNull'](_0x1aaa16[_0xa303('0x78')][_0xa303('0x79')])){if(_0x1aaa16['value']){var _0x2e2b8e=path['parse'](_0x1aaa16[_0xa303('0x7a')])['name'];logger[_0xa303('0x28')](_0xa303('0x8e'),_0x2e2b8e,_0x1aaa16['value']);this['syncMixMonitorFilename'](_0x2e2b8e,_0x1aaa16[_0xa303('0x7a')]);}}else if(this[_0xa303('0x14')][_0x1aaa16[_0xa303('0x36')]]){if(this[_0xa303('0x2e')](_0x1aaa16['variable'])){if(this['isNotNull'](_0x1aaa16[_0xa303('0x78')][_0xa303('0x8b')])){logger[_0xa303('0x28')](_0xa303('0x8c'),_0x1aaa16[_0xa303('0x36')],_0x1aaa16[_0xa303('0x7a')]);this[_0xa303('0x14')][_0x1aaa16[_0xa303('0x36')]][_0xa303('0x8f')]=_0x1aaa16[_0xa303('0x7a')];}}}}}catch(_0x429724){logger[_0xa303('0x2a')](_0xa303('0x90'),_0x1aaa16[_0xa303('0x32')],util[_0xa303('0x2c')](_0x429724,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa303('0x2d')][_0xa303('0x91')]=function(_0x2be97c){try{if(this[_0xa303('0x2e')](_0x2be97c)){logger['debug'](_0xa303('0x92'),_0x2be97c[_0xa303('0x32')],util['inspect'](_0x2be97c,{'showHidden':![],'depth':null}));if(this['blindTransfers'][_0x2be97c['linkedid']]){if(this[_0xa303('0x14')][this[_0xa303('0x16')][_0x2be97c[_0xa303('0x36')]][_0xa303('0x36')]]){this[_0xa303('0x14')][this['blindTransfers'][_0x2be97c['linkedid']][_0xa303('0x36')]][_0xa303('0x32')]=_0x2be97c['uniqueid'];this[_0xa303('0x14')][this[_0xa303('0x16')][_0x2be97c[_0xa303('0x36')]][_0xa303('0x36')]]['answered']=this['channels'][_0x2be97c[_0xa303('0x32')]][_0xa303('0x60')];this[_0xa303('0x14')][this[_0xa303('0x16')][_0x2be97c['linkedid']]['linkedid']]['answertime']=this[_0xa303('0x14')][_0x2be97c[_0xa303('0x32')]][_0xa303('0x67')];this[_0xa303('0x14')][this[_0xa303('0x16')][_0x2be97c[_0xa303('0x36')]][_0xa303('0x36')]]['destinationchannel']=this[_0xa303('0x14')][this['blindTransfers'][_0x2be97c['linkedid']][_0xa303('0x36')]][_0xa303('0x3a')];this[_0xa303('0x14')][this[_0xa303('0x16')][_0x2be97c[_0xa303('0x36')]]['linkedid']][_0xa303('0x48')]=this[_0xa303('0x14')][_0x2be97c[_0xa303('0x32')]][_0xa303('0x48')];this[_0xa303('0x14')][_0x2be97c[_0xa303('0x32')]]=this['channels'][this[_0xa303('0x16')][_0x2be97c[_0xa303('0x36')]][_0xa303('0x36')]];delete this[_0xa303('0x14')][this[_0xa303('0x16')][_0x2be97c[_0xa303('0x36')]][_0xa303('0x36')]];}else if(this[_0xa303('0x14')][this[_0xa303('0x16')][_0x2be97c[_0xa303('0x36')]][_0xa303('0x32')]]){this['channels'][this[_0xa303('0x16')][_0x2be97c[_0xa303('0x36')]][_0xa303('0x32')]]['uniqueid']=[this[_0xa303('0x14')][this['blindTransfers'][_0x2be97c[_0xa303('0x36')]][_0xa303('0x32')]]['linkedid'],this[_0xa303('0x14')][this[_0xa303('0x16')][_0x2be97c[_0xa303('0x36')]][_0xa303('0x32')]][_0xa303('0x36')]=this['channels'][this[_0xa303('0x16')][_0x2be97c[_0xa303('0x36')]]['uniqueid']]['uniqueid']][0x0];this[_0xa303('0x14')][this['blindTransfers'][_0x2be97c[_0xa303('0x36')]][_0xa303('0x32')]]['answered']=this[_0xa303('0x14')][_0x2be97c[_0xa303('0x32')]][_0xa303('0x60')];this['channels'][this[_0xa303('0x16')][_0x2be97c[_0xa303('0x36')]][_0xa303('0x32')]]['answertime']=this[_0xa303('0x14')][_0x2be97c[_0xa303('0x32')]][_0xa303('0x67')];this[_0xa303('0x14')][this['blindTransfers'][_0x2be97c[_0xa303('0x36')]][_0xa303('0x32')]]['destinationchannel']=this[_0xa303('0x14')][this[_0xa303('0x16')][_0x2be97c['linkedid']][_0xa303('0x32')]][_0xa303('0x3a')];this['channels'][this[_0xa303('0x16')][_0x2be97c[_0xa303('0x36')]][_0xa303('0x32')]]['disposition']=this['channels'][_0x2be97c[_0xa303('0x32')]][_0xa303('0x48')];this['channels'][_0x2be97c[_0xa303('0x32')]]=this[_0xa303('0x14')][this[_0xa303('0x16')][_0x2be97c[_0xa303('0x36')]][_0xa303('0x32')]];delete this['channels'][this[_0xa303('0x16')][_0x2be97c[_0xa303('0x36')]][_0xa303('0x32')]];}}if(this[_0xa303('0x14')][_0x2be97c[_0xa303('0x32')]]){logger[_0xa303('0x28')](_0xa303('0x93'),_0x2be97c['uniqueid'],_0x2be97c[_0xa303('0x94')]);var _0x2f2bc1=moment();this[_0xa303('0x14')][_0x2be97c['uniqueid']]['endtime']=_0x2f2bc1[_0xa303('0x3e')](_0xa303('0x58'));this[_0xa303('0x14')][_0x2be97c[_0xa303('0x32')]][_0xa303('0x56')]=_0x2f2bc1['diff'](this['channels'][_0x2be97c['uniqueid']][_0xa303('0x47')],_0xa303('0x57'));if(this['channels'][_0x2be97c[_0xa303('0x32')]][_0xa303('0x60')]){this[_0xa303('0x14')][_0x2be97c['uniqueid']][_0xa303('0x95')]=_0x2f2bc1[_0xa303('0x62')](this[_0xa303('0x14')][_0x2be97c[_0xa303('0x32')]]['answertime'],_0xa303('0x57'));this[_0xa303('0x14')][_0x2be97c[_0xa303('0x32')]][_0xa303('0x61')]=this[_0xa303('0x14')][_0x2be97c[_0xa303('0x32')]][_0xa303('0x56')]-this['channels'][_0x2be97c[_0xa303('0x32')]][_0xa303('0x95')];}if(_0x2be97c[_0xa303('0x46')]===_0xa303('0x4a')){if(this[_0xa303('0x15')][_0x2be97c[_0xa303('0x3a')]['split']('-')[0x0]]){this['agents'][_0x2be97c[_0xa303('0x3a')]['split']('-')[0x0]]=_[_0xa303('0x96')](this['agents'][_0x2be97c[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]],[_0xa303('0x3d')]);logger['debug']('[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:',_0x2be97c['uniqueid'],util[_0xa303('0x2c')]({'id':this[_0xa303('0x15')][_0x2be97c[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]]['id'],'destaccountcode':this[_0xa303('0x15')][_0x2be97c[_0xa303('0x3a')]['split']('-')[0x0]][_0xa303('0x4d')]},{'showHidden':![],'depth':null}));this['emit'](util[_0xa303('0x3e')]('user:%s',this[_0xa303('0x15')][_0x2be97c[_0xa303('0x3a')]['split']('-')[0x0]][_0xa303('0x40')]),_0xa303('0x97'),{'id':this[_0xa303('0x15')][_0x2be97c['channel'][_0xa303('0x3b')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x2be97c[_0xa303('0x3a')][_0xa303('0x3b')]('-')[0x0]][_0xa303('0x4d')]});for(var _0x52ecbd=0x0;_0x52ecbd<Object[_0xa303('0x39')](this[_0xa303('0x15')])['length'];_0x52ecbd++){var _0x3ca88b=Object[_0xa303('0x39')](this[_0xa303('0x15')])[_0x52ecbd];var _0x584e51=this['agents'][_0x3ca88b];if(_0x584e51[_0xa303('0x4d')]===Number(_0x2be97c[_0xa303('0x41')])){this['emit'](util[_0xa303('0x3e')]('user:%s',_0x584e51[_0xa303('0x40')]),'user:agentcomplete',{'id':_0x584e51['id'],'destaccountcode':_0x584e51[_0xa303('0x4d')],'transfer':this[_0xa303('0x14')][_0x2be97c[_0xa303('0x32')]][_0xa303('0x98')]});break;}}}}var _0x17a4fc=this;Promise[_0xa303('0x99')]()[_0xa303('0x9a')](function(){var _0x19a3da=_0x17a4fc[_0xa303('0x14')][_0x2be97c[_0xa303('0x32')]];if(typeof _0x19a3da['transferType']===_0xa303('0x9b'))return;if(_[_0xa303('0x9c')](_0x19a3da[_0xa303('0x74')]))return;return RpcSetting[_0xa303('0x9d')]()[_0xa303('0x9a')](function(_0x3efbce){if(!_0x3efbce['stopRecordingOnTransfer'])return;return Promise[_0xa303('0x99')]()['then'](function(){return ami['Action']({'action':_0xa303('0x9e'),'channel':_0x19a3da['channel']})[_0xa303('0x9f')](function(){});})['then'](function(){return ami[_0xa303('0xa0')]({'action':'StopMixMonitor','channel':_0x19a3da[_0xa303('0x64')]})[_0xa303('0x9f')](function(){})[_0xa303('0xa1')](function(){var _0x4ce783=_0x17a4fc[_0xa303('0x15')][_0x19a3da[_0xa303('0x64')]['split']('-')[0x0]];if(!_0x4ce783)return;io[_0xa303('0x30')]('webbar:stopmonitors',{'agentId':_0x4ce783['id'],'uniqueid':_0x19a3da[_0xa303('0x32')]});});});});})[_0xa303('0x9a')](function(){if(_0x2be97c['event']===_0xa303('0xa2')){_0x17a4fc[_0xa303('0x16')][_0x2be97c[_0xa303('0x32')]]=_0x2be97c;}else{if(_0x17a4fc[_0xa303('0x14')][_0x2be97c[_0xa303('0x32')]][_0xa303('0x5c')]==='outbound'&&_0x17a4fc['blindTransfers'][_0x2be97c[_0xa303('0x32')]]){_0x17a4fc['channels'][_0x2be97c[_0xa303('0x32')]][_0xa303('0x32')]=[_0x17a4fc[_0xa303('0x14')][_0x2be97c[_0xa303('0x32')]][_0xa303('0x36')],_0x17a4fc[_0xa303('0x14')][_0x2be97c['uniqueid']][_0xa303('0x36')]=_0x17a4fc[_0xa303('0x14')][_0x2be97c[_0xa303('0x32')]][_0xa303('0x32')]][0x0];delete _0x17a4fc[_0xa303('0x16')][_0x2be97c[_0xa303('0x32')]];}}logger[_0xa303('0x34')](_0xa303('0xa3'),_0x2be97c['uniqueid'],util['inspect'](_0x17a4fc[_0xa303('0x14')][_0x2be97c['uniqueid']],{'showHidden':![],'depth':null}));ami['emit'](_0xa303('0xa4'),_0x17a4fc[_0xa303('0x14')][_0x2be97c['uniqueid']]);delete _0x17a4fc[_0xa303('0x14')][_0x2be97c[_0xa303('0x32')]];});}}}catch(_0x1195b0){logger['error']('[%s][voiceCallReport][hangup]',_0x2be97c[_0xa303('0x32')],util[_0xa303('0x2c')](_0x1195b0,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xa303('0xa5')]=function(_0x23f656){try{if(this[_0xa303('0x2e')](_0x23f656)){logger[_0xa303('0x28')](_0xa303('0xa6'),_0x23f656[_0xa303('0x32')],_0x23f656['origtransferercalleridnum'],_0x23f656['transfertargetcalleridnum']);logger['debug'](_0xa303('0xa7'),_0x23f656[_0xa303('0x32')],util[_0xa303('0x2c')](_0x23f656,{'showHidden':![],'depth':null}));var _0x4b67b0;if(this['channels'][_0x23f656[_0xa303('0xa8')]]){this[_0xa303('0x14')][_0x23f656[_0xa303('0xa8')]][_0xa303('0xa9')]=_0x23f656[_0xa303('0xaa')];this['channels'][_0x23f656[_0xa303('0xa8')]][_0xa303('0xab')]=_0x23f656[_0xa303('0xac')];if(this[_0xa303('0x14')][_0x23f656['secondtransfereruniqueid']]){_0x4b67b0=this[_0xa303('0x14')][_0x23f656[_0xa303('0xad')]];this[_0xa303('0x14')][_0x23f656[_0xa303('0xad')]]=this[_0xa303('0x14')][_0x23f656['transfereeuniqueid']];this[_0xa303('0x14')][_0x23f656[_0xa303('0xa8')]]=_0x4b67b0;}this[_0xa303('0x14')][_0x23f656[_0xa303('0xad')]]['transferType']=_0xa303('0xae');}else if(this['channels'][_0x23f656['transfertargetuniqueid']]){this[_0xa303('0x14')][_0x23f656[_0xa303('0xaf')]][_0xa303('0xa9')]=_0x23f656[_0xa303('0xaa')];this[_0xa303('0x14')][_0x23f656['transfertargetuniqueid']][_0xa303('0xab')]=_0x23f656[_0xa303('0xac')];if(this[_0xa303('0x14')][_0x23f656[_0xa303('0xb0')]]){_0x4b67b0=this[_0xa303('0x14')][_0x23f656[_0xa303('0xb0')]];this['channels'][_0x23f656['origtransfereruniqueid']]=this['channels'][_0x23f656[_0xa303('0xaf')]];this[_0xa303('0x14')][_0x23f656[_0xa303('0xaf')]]=_0x4b67b0;}this[_0xa303('0x14')][_0x23f656[_0xa303('0xaf')]][_0xa303('0x98')]=_0xa303('0xae');}if((this[_0xa303('0x14')][_0x23f656['origtransfereruniqueid']]||this[_0xa303('0x14')][_0x23f656[_0xa303('0xb1')]])&&this[_0xa303('0x14')][_0x23f656[_0xa303('0xad')]]){var _0x5a079b=_[_0xa303('0xb2')]([this[_0xa303('0x14')][_0x23f656[_0xa303('0xb0')]],this[_0xa303('0x14')][_0x23f656['origtransfererlinkedid']],this[_0xa303('0x14')][_0x23f656['secondtransfereruniqueid']]],function(_0x54f311){return _0x54f311&&_0x54f311[_0xa303('0x5c')]==='outbound'&&_0x54f311[_0xa303('0xb3')];});if(_0x5a079b){if(this['channels'][_0x23f656['origtransfereruniqueid']])this['channels'][_0x23f656[_0xa303('0xb0')]]['transferType']=_0xa303('0xae');if(this[_0xa303('0x14')][_0x23f656['origtransfererlinkedid']])this[_0xa303('0x14')][_0x23f656[_0xa303('0xb1')]][_0xa303('0x98')]=_0xa303('0xae');this['channels'][_0x23f656[_0xa303('0xad')]][_0xa303('0x98')]=_0xa303('0xae');}}}}catch(_0x5c9009){logger['error'](_0xa303('0xb4'),_0x23f656[_0xa303('0x32')],util['inspect'](_0x5c9009,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xa303('0x24')]=function(_0x329cca){try{if(this[_0xa303('0x2e')](_0x329cca)){logger[_0xa303('0x28')](_0xa303('0xb5'),_0x329cca['uniqueid'],_0x329cca['transfereecalleridnum'],_0x329cca[_0xa303('0xb6')]);logger[_0xa303('0x34')](_0xa303('0xb7'),_0x329cca['uniqueid'],util['inspect'](_0x329cca,{'showHidden':![],'depth':null}));if(this['channels'][_0x329cca[_0xa303('0xa8')]]){this[_0xa303('0x14')][_0x329cca['transfereeuniqueid']][_0xa303('0xa9')]=_0x329cca['transfereecalleridnum'];this[_0xa303('0x14')][_0x329cca['transfereeuniqueid']][_0xa303('0xab')]=_0x329cca[_0xa303('0xb6')];this[_0xa303('0x14')][_0x329cca['transfereeuniqueid']][_0xa303('0x98')]=_0xa303('0xb8');this[_0xa303('0x91')]({'event':'BlindTransfer','uniqueid':_0x329cca['transfereeuniqueid'],'linkedid':_0x329cca[_0xa303('0xb9')],'context':_0x329cca['context'],'channel':_0x329cca[_0xa303('0xba')]});}else{this[_0xa303('0x14')][_0x329cca[_0xa303('0xb9')]][_0xa303('0x98')]=_0xa303('0xb8');this['syncHangup']({'event':_0xa303('0xa2'),'uniqueid':_0x329cca[_0xa303('0xb9')],'linkedid':_0x329cca['transfereeuniqueid'],'context':_0x329cca[_0xa303('0x46')],'channel':_0x329cca[_0xa303('0xba')]});}}}catch(_0x5bbfa5){logger[_0xa303('0x2a')](_0xa303('0xbb'),_0x329cca[_0xa303('0x32')],util[_0xa303('0x2c')](_0x5bbfa5,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa303('0x2d')][_0xa303('0x26')]=function(_0x566ea3){try{if(this[_0xa303('0x2e')](_0x566ea3)){logger['debug'](_0xa303('0xbc'),_0x566ea3[_0xa303('0x32')],util[_0xa303('0x2c')](_0x566ea3,{'showHidden':![],'depth':null}));if(this[_0xa303('0x14')][_0x566ea3[_0xa303('0x32')]]){if(!_[_0xa303('0x75')](this[_0xa303('0x14')][_0x566ea3[_0xa303('0x32')]][_0xa303('0x67')])){this[_0xa303('0x14')][_0x566ea3['uniqueid']][_0xa303('0xbd')]=moment()[_0xa303('0x3e')](_0xa303('0x58'));logger[_0xa303('0x28')]('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x566ea3[_0xa303('0x32')],this['channels'][_0x566ea3[_0xa303('0x32')]][_0xa303('0xbd')]);}}}}catch(_0x18efd3){logger['error'](_0xa303('0xbe'),_0x566ea3[_0xa303('0x32')],util[_0xa303('0x2c')](_0x18efd3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xa303('0x2d')][_0xa303('0xbf')]=function(_0x38d18b){try{if(this[_0xa303('0x2e')](_0x38d18b)){logger[_0xa303('0x34')](_0xa303('0xc0'),_0x38d18b[_0xa303('0x32')],util[_0xa303('0x2c')](_0x38d18b,{'showHidden':![],'depth':null}));if(this[_0xa303('0x14')][_0x38d18b[_0xa303('0x32')]]){if(!_['isNil'](this[_0xa303('0x14')][_0x38d18b['uniqueid']][_0xa303('0xbd')])){this[_0xa303('0x14')][_0x38d18b[_0xa303('0x32')]]['mohtime']+=moment()['milliseconds'](0x0)[_0xa303('0x62')](this[_0xa303('0x14')][_0x38d18b['uniqueid']][_0xa303('0xbd')],_0xa303('0x57'));logger[_0xa303('0x28')](_0xa303('0xc1'),_0x38d18b[_0xa303('0x32')],this[_0xa303('0x14')][_0x38d18b['uniqueid']][_0xa303('0xc2')]);delete this[_0xa303('0x14')][_0x38d18b[_0xa303('0x32')]][_0xa303('0xbd')];}}}}catch(_0x1813d1){logger[_0xa303('0x2a')](_0xa303('0xc3'),_0x38d18b[_0xa303('0x32')],util[_0xa303('0x2c')](_0x1813d1,{'showHidden':![],'depth':null}));}};module[_0xa303('0xc4')]=VoiceCallReport;
\ No newline at end of file
index 65c73db..845c5b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','set','applicationdata','appdata','toLowerCase','startsWith','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','match','exports','lodash','moment','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin','dialend','syncDialEnd','bind','varset','syncVarSet','hangup','syncHangup','isNotNull','prototype','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','event','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','inspect','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','lastevent','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','isUndefined','value','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipuri','bridgepeer','bridgepvtcallid','memberdynamic','memberinterface','memberpenalty','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','diff','starttime','seconds','complete','total','holdtime','billableseconds','sumHoldTime','sumBillable','duration','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','linkedid'];(function(_0x15bc81,_0x4d4f77){var _0x59440e=function(_0x1b60f2){while(--_0x1b60f2){_0x15bc81['push'](_0x15bc81['shift']());}};_0x59440e(++_0x4d4f77);}(_0x5fab,0x177));var _0xb5fa=function(_0x2f9eeb,_0x53b0b6){_0x2f9eeb=_0x2f9eeb-0x0;var _0xcf83bc=_0x5fab[_0x2f9eeb];return _0xcf83bc;};'use strict';var _=require(_0xb5fa('0x0'));var moment=require(_0xb5fa('0x1'));var util=require('util');var Redis=require(_0xb5fa('0x2'));var config=require(_0xb5fa('0x3'));var logger=require(_0xb5fa('0x4'))(_0xb5fa('0x5'));var ami=require(_0xb5fa('0x6'));config[_0xb5fa('0x7')]=_[_0xb5fa('0x8')](config[_0xb5fa('0x7')],{'host':_0xb5fa('0x9'),'port':0x18eb});var io=require(_0xb5fa('0xa'))(new Redis(config['redis']));function VoiceDialReport(_0x5d70f6){this[_0xb5fa('0xb')]=_0x5d70f6[_0xb5fa('0xc')];this[_0xb5fa('0xd')]=_0x5d70f6['outbound'];this[_0xb5fa('0xe')]={};this[_0xb5fa('0xf')]={};ami['on'](_0xb5fa('0x10'),this['syncDialBegin']['bind'](this));ami['on'](_0xb5fa('0x11'),this[_0xb5fa('0x12')][_0xb5fa('0x13')](this));ami['on'](_0xb5fa('0x14'),this[_0xb5fa('0x15')][_0xb5fa('0x13')](this));ami['on'](_0xb5fa('0x16'),this[_0xb5fa('0x17')][_0xb5fa('0x13')](this));}VoiceDialReport['prototype'][_0xb5fa('0x18')]=function(_0x3dad4d){return _0x3dad4d!==null&&!_['isUndefined'](_0x3dad4d);};VoiceDialReport[_0xb5fa('0x19')]['emit']=function(_0x265992,_0x3fc372,_0x40c914){io['to'](_0x265992)[_0xb5fa('0x1a')](_0x3fc372,_0x40c914);};VoiceDialReport[_0xb5fa('0x19')]['syncDialBegin']=function(_0x567f31){try{if(this[_0xb5fa('0x18')](_0x567f31)){logger[_0xb5fa('0x1b')](_0xb5fa('0x1c'),_0x567f31[_0xb5fa('0x1d')],util['inspect'](_0x567f31,{'showHidden':![],'depth':null}));if(this['channels'][_0x567f31[_0xb5fa('0x1d')]]){_[_0xb5fa('0x1e')](this[_0xb5fa('0xb')][_0x567f31[_0xb5fa('0x1d')]],{'starttime':moment()[_0xb5fa('0x1f')](_0xb5fa('0x20')),'lastevent':_0xb5fa('0x21'),'interface':_0x567f31[_0xb5fa('0x22')][_0xb5fa('0x23')](0x0,_0x567f31[_0xb5fa('0x22')][_0xb5fa('0x24')]('-')),'membername':_0x567f31[_0xb5fa('0x22')]['substring'](_0x567f31[_0xb5fa('0x22')]['lastIndexOf']('/')+0x1,_0x567f31[_0xb5fa('0x22')]['lastIndexOf']('-'))},_[_0xb5fa('0x25')](_0x567f31,[_0xb5fa('0x26'),'privilege']));logger[_0xb5fa('0x27')](_0xb5fa('0x28'),_0x567f31[_0xb5fa('0x1d')],this['channels'][_0x567f31[_0xb5fa('0x1d')]][_0xb5fa('0x29')],this[_0xb5fa('0xb')][_0x567f31['uniqueid']][_0xb5fa('0x2a')]);logger['debug'](_0xb5fa('0x2b'),_0x567f31[_0xb5fa('0x1d')],util[_0xb5fa('0x2c')](this[_0xb5fa('0xb')][_0x567f31[_0xb5fa('0x1d')]],{'showHidden':![],'depth':null}));if(this[_0xb5fa('0xe')][_0x567f31[_0xb5fa('0x1d')]])_[_0xb5fa('0x1e')](this['channels'][_0x567f31['uniqueid']],this['applications'][_0x567f31['uniqueid']]);this[_0xb5fa('0x1a')](_0xb5fa('0x2d'),_0xb5fa('0x2e'),this[_0xb5fa('0xb')][_0x567f31[_0xb5fa('0x1d')]]);logger[_0xb5fa('0x1b')](_0xb5fa('0x2f'),_0x567f31[_0xb5fa('0x1d')],util[_0xb5fa('0x2c')](this[_0xb5fa('0xb')][_0x567f31[_0xb5fa('0x1d')]],{'showHidden':![],'depth':null}));ami[_0xb5fa('0x1a')](_0xb5fa('0x30'),this[_0xb5fa('0xb')][_0x567f31[_0xb5fa('0x1d')]]);}}}catch(_0x116773){logger[_0xb5fa('0x31')](_0xb5fa('0x32'),_0x567f31[_0xb5fa('0x1d')],util[_0xb5fa('0x2c')](_0x116773,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb5fa('0x19')][_0xb5fa('0x12')]=function(_0x10fb43){try{if(this[_0xb5fa('0x18')](_0x10fb43)){logger['debug'](_0xb5fa('0x33'),_0x10fb43['uniqueid'],util['inspect'](_0x10fb43,{'showHidden':![],'depth':null}));if(this['channels'][_0x10fb43[_0xb5fa('0x1d')]]){this['channels'][_0x10fb43[_0xb5fa('0x1d')]]['dialstatus']=_0x10fb43['dialstatus'];if(_0x10fb43[_0xb5fa('0x34')]===_0xb5fa('0x35')){this['channels'][_0x10fb43['uniqueid']][_0xb5fa('0x36')]=_0x10fb43[_0xb5fa('0x36')];this[_0xb5fa('0xb')][_0x10fb43['uniqueid']][_0xb5fa('0x37')]=_0x10fb43[_0xb5fa('0x37')];this['channels'][_0x10fb43[_0xb5fa('0x1d')]][_0xb5fa('0x38')]=moment()[_0xb5fa('0x1f')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xb5fa('0xb')][_0x10fb43[_0xb5fa('0x1d')]][_0xb5fa('0x39')]='connect';logger[_0xb5fa('0x27')](_0xb5fa('0x3a'),_0x10fb43[_0xb5fa('0x1d')],_0x10fb43[_0xb5fa('0x22')]['substring'](_0x10fb43['channel']['lastIndexOf']('/')+0x1,_0x10fb43['channel']['lastIndexOf']('-')));logger['debug'](_0xb5fa('0x3b'),_0x10fb43['uniqueid'],util[_0xb5fa('0x2c')](this[_0xb5fa('0xb')][_0x10fb43[_0xb5fa('0x1d')]],{'showHidden':![],'depth':null}));ami[_0xb5fa('0x1a')](_0xb5fa('0x3c'),this[_0xb5fa('0xb')][_0x10fb43['uniqueid']]);}logger['debug']('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0x10fb43[_0xb5fa('0x1d')],util['inspect'](this[_0xb5fa('0xb')][_0x10fb43['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0xb5fa('0x2d'),_0xb5fa('0x2e'),this[_0xb5fa('0xb')][_0x10fb43[_0xb5fa('0x1d')]]);}}}catch(_0x5bc93f){logger[_0xb5fa('0x31')](_0xb5fa('0x3d'),_0x10fb43[_0xb5fa('0x1d')],util[_0xb5fa('0x2c')](_0x5bc93f,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb5fa('0x19')]['syncVarSet']=function(_0x284bbb){try{if(this['isNotNull'](_0x284bbb)){logger[_0xb5fa('0x1b')](_0xb5fa('0x3e'),_0x284bbb[_0xb5fa('0x1d')],util[_0xb5fa('0x2c')](_0x284bbb,{'showHidden':![],'depth':null}));this[_0xb5fa('0x3f')](_0x284bbb[_0xb5fa('0x1d')],_[_0xb5fa('0x40')](_0x284bbb[_0xb5fa('0x41')])[0x0],_0x284bbb['value']);if(this[_0xb5fa('0x18')](_0x284bbb[_0xb5fa('0x41')])&&this['isNotNull'](_0x284bbb[_0xb5fa('0x41')]['outboundrouteid'])){if(_[_0xb5fa('0x42')](this[_0xb5fa('0xb')][_0x284bbb['uniqueid']])){this['channels'][_0x284bbb[_0xb5fa('0x1d')]]={'routeId':_0x284bbb[_0xb5fa('0x43')],'variables':this[_0xb5fa('0xf')][_0x284bbb[_0xb5fa('0x1d')]],'motionChannel':_0xb5fa('0x44')};logger[_0xb5fa('0x27')](_0xb5fa('0x45'),_0x284bbb[_0xb5fa('0x1d')],_0x284bbb['variable'][_0xb5fa('0x46')],_[_0xb5fa('0x40')](_0x284bbb['variable'])[0x0],_0x284bbb[_0xb5fa('0x43')]);logger[_0xb5fa('0x1b')](_0xb5fa('0x47'),_0x284bbb[_0xb5fa('0x1d')],util[_0xb5fa('0x2c')](this[_0xb5fa('0xb')][_0x284bbb[_0xb5fa('0x1d')]],{'showHidden':![],'depth':null}));this[_0xb5fa('0x1a')](_0xb5fa('0x2d'),_0xb5fa('0x2e'),this[_0xb5fa('0xb')][_0x284bbb[_0xb5fa('0x1d')]]);}}}}catch(_0x6ae261){logger[_0xb5fa('0x31')](_0xb5fa('0x48'),_0x284bbb[_0xb5fa('0x1d')],util['inspect'](_0x6ae261,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0xb5fa('0x3f')]=function(_0x55268f,_0x14fbb0,_0x1049d9){var _0x5404f6=[_0xb5fa('0x49'),_0xb5fa('0x4a'),_0xb5fa('0x4b'),_0xb5fa('0x4c'),_0xb5fa('0x4d'),_0xb5fa('0x4e'),'rtpaudioqosrtt',_0xb5fa('0x4f'),'sipcallid',_0xb5fa('0x50'),_0xb5fa('0x51'),_0xb5fa('0x52'),'membercalls',_0xb5fa('0x53'),_0xb5fa('0x54'),'memberlastcall','membername',_0xb5fa('0x55'),_0xb5fa('0x56')];if(!_[_0xb5fa('0x57')](_0x14fbb0)&&!_[_0xb5fa('0x58')](_0x5404f6,_0x14fbb0)){if(_[_0xb5fa('0x42')](this[_0xb5fa('0xf')][_0x55268f])){this[_0xb5fa('0xf')][_0x55268f]={};}this[_0xb5fa('0xf')][_0x55268f][_0x14fbb0]=_0x1049d9;}};VoiceDialReport[_0xb5fa('0x19')][_0xb5fa('0x17')]=function(_0x25de19){try{if(this[_0xb5fa('0x18')](_0x25de19)){logger[_0xb5fa('0x1b')](_0xb5fa('0x59'),_0x25de19[_0xb5fa('0x1d')],util[_0xb5fa('0x2c')](_0x25de19,{'showHidden':![],'depth':null}));if(this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x1d')]]){logger['info'](_0xb5fa('0x5a'),_0x25de19[_0xb5fa('0x1d')],_0x25de19[_0xb5fa('0x5b')]);this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x1d')]][_0xb5fa('0x5c')]=moment()[_0xb5fa('0x1f')](_0xb5fa('0x20'));this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x1d')]]['duration']=moment(this['channels'][_0x25de19[_0xb5fa('0x1d')]][_0xb5fa('0x5c')])[_0xb5fa('0x5d')](this['channels'][_0x25de19[_0xb5fa('0x1d')]][_0xb5fa('0x5e')],_0xb5fa('0x5f'));this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x1d')]][_0xb5fa('0x39')]=_0xb5fa('0x60');this['outbound'][_0xb5fa('0x61')]+=0x1;if(this[_0xb5fa('0xb')][_0x25de19['uniqueid']][_0xb5fa('0x38')]){this[_0xb5fa('0xd')]['answered']+=0x1;this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x1d')]][_0xb5fa('0x62')]=moment(this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x1d')]][_0xb5fa('0x38')])[_0xb5fa('0x5d')](this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x1d')]][_0xb5fa('0x5e')],_0xb5fa('0x5f'));this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x1d')]][_0xb5fa('0x63')]=moment(this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x1d')]][_0xb5fa('0x5c')])[_0xb5fa('0x5d')](this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x1d')]][_0xb5fa('0x38')],_0xb5fa('0x5f'));this['outbound'][_0xb5fa('0x64')]+=this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x1d')]]['holdtime']||0x0;this[_0xb5fa('0xd')][_0xb5fa('0x65')]+=this['channels'][_0x25de19[_0xb5fa('0x1d')]][_0xb5fa('0x63')];}this[_0xb5fa('0xd')]['sumDuration']+=this['channels'][_0x25de19[_0xb5fa('0x1d')]][_0xb5fa('0x66')];logger[_0xb5fa('0x1b')]('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x25de19[_0xb5fa('0x1d')],util[_0xb5fa('0x2c')](this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x1d')]],{'showHidden':![],'depth':null}));ami['emit']('custom:voiceDialReport',this['channels'][_0x25de19[_0xb5fa('0x1d')]]);logger[_0xb5fa('0x1b')](_0xb5fa('0x67'),_0x25de19['uniqueid'],util[_0xb5fa('0x2c')](this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x1d')]],{'showHidden':![],'depth':null}));ami[_0xb5fa('0x1a')](_0xb5fa('0x68'),this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x1d')]]);logger[_0xb5fa('0x1b')](_0xb5fa('0x69'),_0x25de19[_0xb5fa('0x1d')],util[_0xb5fa('0x2c')](this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x1d')]],{'showHidden':![],'depth':null}));this[_0xb5fa('0x1a')](_0xb5fa('0x2d'),'voice_outbound:save',this[_0xb5fa('0xd')]);logger['info'](_0xb5fa('0x6a'),JSON[_0xb5fa('0x6b')](this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x1d')]]));logger[_0xb5fa('0x1b')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:',_0x25de19[_0xb5fa('0x1d')],util['inspect'](this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x1d')]],{'showHidden':![],'depth':null}));this[_0xb5fa('0x1a')](_0xb5fa('0x2d'),'voice_outbound_channel:remove',this['channels'][_0x25de19['uniqueid']]);delete this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x1d')]];}else if(this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x6c')]]){this[_0xb5fa('0xb')][_0x25de19[_0xb5fa('0x6c')]]['uniqueid']=this[_0xb5fa('0xb')][_0x25de19['linkedid']]['destuniqueid'];}if(this[_0xb5fa('0xf')][_0x25de19['uniqueid']]){delete this['variables'][_0x25de19['uniqueid']];}}}catch(_0x193e63){logger['error'](_0xb5fa('0x6d'),_0x25de19[_0xb5fa('0x1d')],util[_0xb5fa('0x2c')](_0x193e63,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['syncNewExten']=function(_0xb1fcac){try{if(this[_0xb5fa('0x18')](_0xb1fcac)){logger['debug'](_0xb5fa('0x6e'),_0xb1fcac[_0xb5fa('0x1d')],util[_0xb5fa('0x2c')](_0xb1fcac,{'showHidden':![],'depth':null}));if(_0xb1fcac[_0xb5fa('0x6f')]['toLowerCase']()===_0xb5fa('0x70')){_0xb1fcac[_0xb5fa('0x71')]=(_0xb1fcac[_0xb5fa('0x72')]||_0xb1fcac[_0xb5fa('0x71')])[_0xb5fa('0x73')]();if(_[_0xb5fa('0x74')](_0xb1fcac[_0xb5fa('0x71')],'cdr(')){if(_[_0xb5fa('0x42')](this['applications'][_0xb1fcac[_0xb5fa('0x1d')]]))this[_0xb5fa('0xe')][_0xb1fcac['uniqueid']]={};logger[_0xb5fa('0x27')](_0xb5fa('0x75'),_0xb1fcac[_0xb5fa('0x1d')],_0xb1fcac[_0xb5fa('0x6f')],_0xb1fcac[_0xb5fa('0x71')]);var _0x8ce5b8=_0xb1fcac[_0xb5fa('0x71')][_0xb5fa('0x76')]('=');var _0x4b1135=_0x8ce5b8[0x0][_0xb5fa('0x77')](/cdr\((.*)\)/);if(_0x4b1135)this[_0xb5fa('0xe')][_0xb1fcac[_0xb5fa('0x1d')]][_0x4b1135[0x1]]=_0x8ce5b8[0x1];}}}}catch(_0x20ffa1){logger['error']('[%s][voiceDialReport][newexten]',_0xb1fcac['uniqueid'],util['inspect'](_0x20ffa1,{'showHidden':![],'depth':null}));}};module[_0xb5fa('0x78')]=VoiceDialReport;
\ No newline at end of file
+var _0x5d58=['addVariable','variable','value','outboundrouteid','isUndefined','variables','voice','keys','[%s][voiceDialReport][varset]','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','endtime','duration','starttime','complete','total','answertime','answered','seconds','diff','sumHoldTime','holdtime','billableseconds','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','appdata','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','match','[%s][voiceDialReport][newexten]','exports','../../../config/logger','ami','redis','defaults','localhost','socket.io-emitter','outboundChannels','outbound','applications','dialbegin','syncDialBegin','bind','varset','syncVarSet','hangup','syncHangup','prototype','emit','isNotNull','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','channels','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','privilege','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','error','[%s][voiceDialReport][dialbegin]','dialstatus','connectedlinenum','connectedlinename','lastevent','connect','info','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x5d58,0x187));var _0x85d5=function(_0x1fac81,_0x5038ab){_0x1fac81=_0x1fac81-0x0;var _0x2ed4b7=_0x5d58[_0x1fac81];return _0x2ed4b7;};'use strict';var _=require('lodash');var moment=require('moment');var util=require('util');var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0x85d5('0x0'))(_0x85d5('0x1'));var ami=require('../ami');config[_0x85d5('0x2')]=_[_0x85d5('0x3')](config['redis'],{'host':_0x85d5('0x4'),'port':0x18eb});var io=require(_0x85d5('0x5'))(new Redis(config[_0x85d5('0x2')]));function VoiceDialReport(_0x46e7b4){this['channels']=_0x46e7b4[_0x85d5('0x6')];this[_0x85d5('0x7')]=_0x46e7b4['outbound'];this[_0x85d5('0x8')]={};this['variables']={};ami['on'](_0x85d5('0x9'),this[_0x85d5('0xa')][_0x85d5('0xb')](this));ami['on']('dialend',this['syncDialEnd']['bind'](this));ami['on'](_0x85d5('0xc'),this[_0x85d5('0xd')][_0x85d5('0xb')](this));ami['on'](_0x85d5('0xe'),this[_0x85d5('0xf')][_0x85d5('0xb')](this));}VoiceDialReport[_0x85d5('0x10')]['isNotNull']=function(_0x4bbf2a){return _0x4bbf2a!==null&&!_['isUndefined'](_0x4bbf2a);};VoiceDialReport[_0x85d5('0x10')][_0x85d5('0x11')]=function(_0x339d4f,_0x1704f0,_0x18a20c){io['to'](_0x339d4f)[_0x85d5('0x11')](_0x1704f0,_0x18a20c);};VoiceDialReport[_0x85d5('0x10')]['syncDialBegin']=function(_0x18e977){try{if(this[_0x85d5('0x12')](_0x18e977)){logger[_0x85d5('0x13')](_0x85d5('0x14'),_0x18e977[_0x85d5('0x15')],util[_0x85d5('0x16')](_0x18e977,{'showHidden':![],'depth':null}));if(this[_0x85d5('0x17')][_0x18e977[_0x85d5('0x15')]]){_[_0x85d5('0x18')](this[_0x85d5('0x17')][_0x18e977[_0x85d5('0x15')]],{'starttime':moment()[_0x85d5('0x19')](_0x85d5('0x1a')),'lastevent':_0x85d5('0x1b'),'interface':_0x18e977[_0x85d5('0x1c')][_0x85d5('0x1d')](0x0,_0x18e977[_0x85d5('0x1c')][_0x85d5('0x1e')]('-')),'membername':_0x18e977['channel'][_0x85d5('0x1d')](_0x18e977[_0x85d5('0x1c')]['lastIndexOf']('/')+0x1,_0x18e977[_0x85d5('0x1c')][_0x85d5('0x1e')]('-'))},_['omit'](_0x18e977,['event',_0x85d5('0x1f')]));logger['info'](_0x85d5('0x20'),_0x18e977['uniqueid'],this[_0x85d5('0x17')][_0x18e977[_0x85d5('0x15')]]['membername'],this['channels'][_0x18e977['uniqueid']]['interface']);logger[_0x85d5('0x13')](_0x85d5('0x21'),_0x18e977[_0x85d5('0x15')],util[_0x85d5('0x16')](this[_0x85d5('0x17')][_0x18e977[_0x85d5('0x15')]],{'showHidden':![],'depth':null}));if(this['applications'][_0x18e977[_0x85d5('0x15')]])_['merge'](this[_0x85d5('0x17')][_0x18e977[_0x85d5('0x15')]],this[_0x85d5('0x8')][_0x18e977['uniqueid']]);this[_0x85d5('0x11')](_0x85d5('0x22'),_0x85d5('0x23'),this[_0x85d5('0x17')][_0x18e977[_0x85d5('0x15')]]);logger['debug'](_0x85d5('0x24'),_0x18e977[_0x85d5('0x15')],util[_0x85d5('0x16')](this[_0x85d5('0x17')][_0x18e977[_0x85d5('0x15')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialbegin',this[_0x85d5('0x17')][_0x18e977[_0x85d5('0x15')]]);}}}catch(_0x2d1157){logger[_0x85d5('0x25')](_0x85d5('0x26'),_0x18e977['uniqueid'],util[_0x85d5('0x16')](_0x2d1157,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x85d5('0x10')]['syncDialEnd']=function(_0x4ea24e){try{if(this[_0x85d5('0x12')](_0x4ea24e)){logger[_0x85d5('0x13')]('[%s][voiceDialReport][dialend]\x20event:',_0x4ea24e[_0x85d5('0x15')],util['inspect'](_0x4ea24e,{'showHidden':![],'depth':null}));if(this[_0x85d5('0x17')][_0x4ea24e[_0x85d5('0x15')]]){this['channels'][_0x4ea24e[_0x85d5('0x15')]][_0x85d5('0x27')]=_0x4ea24e[_0x85d5('0x27')];if(_0x4ea24e[_0x85d5('0x27')]==='ANSWER'){this['channels'][_0x4ea24e[_0x85d5('0x15')]][_0x85d5('0x28')]=_0x4ea24e[_0x85d5('0x28')];this[_0x85d5('0x17')][_0x4ea24e[_0x85d5('0x15')]][_0x85d5('0x29')]=_0x4ea24e[_0x85d5('0x29')];this[_0x85d5('0x17')][_0x4ea24e[_0x85d5('0x15')]]['answertime']=moment()['format'](_0x85d5('0x1a'));this[_0x85d5('0x17')][_0x4ea24e[_0x85d5('0x15')]][_0x85d5('0x2a')]=_0x85d5('0x2b');logger[_0x85d5('0x2c')](_0x85d5('0x2d'),_0x4ea24e[_0x85d5('0x15')],_0x4ea24e['channel'][_0x85d5('0x1d')](_0x4ea24e[_0x85d5('0x1c')][_0x85d5('0x1e')]('/')+0x1,_0x4ea24e[_0x85d5('0x1c')]['lastIndexOf']('-')));logger[_0x85d5('0x13')](_0x85d5('0x2e'),_0x4ea24e[_0x85d5('0x15')],util[_0x85d5('0x16')](this['channels'][_0x4ea24e[_0x85d5('0x15')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialconnect',this[_0x85d5('0x17')][_0x4ea24e['uniqueid']]);}logger[_0x85d5('0x13')]('[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:',_0x4ea24e['uniqueid'],util[_0x85d5('0x16')](this[_0x85d5('0x17')][_0x4ea24e[_0x85d5('0x15')]],{'showHidden':![],'depth':null}));this[_0x85d5('0x11')](_0x85d5('0x22'),'voice_outbound_channel:save',this['channels'][_0x4ea24e[_0x85d5('0x15')]]);}}}catch(_0x173717){logger[_0x85d5('0x25')](_0x85d5('0x2f'),_0x4ea24e[_0x85d5('0x15')],util[_0x85d5('0x16')](_0x173717,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['syncVarSet']=function(_0x55cf7b){try{if(this['isNotNull'](_0x55cf7b)){logger[_0x85d5('0x13')](_0x85d5('0x30'),_0x55cf7b[_0x85d5('0x15')],util[_0x85d5('0x16')](_0x55cf7b,{'showHidden':![],'depth':null}));this[_0x85d5('0x31')](_0x55cf7b['uniqueid'],_['keys'](_0x55cf7b[_0x85d5('0x32')])[0x0],_0x55cf7b[_0x85d5('0x33')]);if(this[_0x85d5('0x12')](_0x55cf7b[_0x85d5('0x32')])&&this[_0x85d5('0x12')](_0x55cf7b[_0x85d5('0x32')][_0x85d5('0x34')])){if(_[_0x85d5('0x35')](this[_0x85d5('0x17')][_0x55cf7b[_0x85d5('0x15')]])){this[_0x85d5('0x17')][_0x55cf7b[_0x85d5('0x15')]]={'routeId':_0x55cf7b[_0x85d5('0x33')],'variables':this[_0x85d5('0x36')][_0x55cf7b[_0x85d5('0x15')]],'motionChannel':_0x85d5('0x37')};logger[_0x85d5('0x2c')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x55cf7b['uniqueid'],_0x55cf7b[_0x85d5('0x32')][_0x85d5('0x34')],_[_0x85d5('0x38')](_0x55cf7b[_0x85d5('0x32')])[0x0],_0x55cf7b[_0x85d5('0x33')]);logger[_0x85d5('0x13')]('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x55cf7b[_0x85d5('0x15')],util['inspect'](this['channels'][_0x55cf7b[_0x85d5('0x15')]],{'showHidden':![],'depth':null}));this[_0x85d5('0x11')](_0x85d5('0x22'),_0x85d5('0x23'),this[_0x85d5('0x17')][_0x55cf7b['uniqueid']]);}}}}catch(_0x26adc5){logger['error'](_0x85d5('0x39'),_0x55cf7b[_0x85d5('0x15')],util[_0x85d5('0x16')](_0x26adc5,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['addVariable']=function(_0x4de88b,_0x13bbfa,_0x925f98){var _0x2d4fe4=['rtpaudioqos','rtpaudioqosbridged',_0x85d5('0x3a'),_0x85d5('0x3b'),_0x85d5('0x3c'),_0x85d5('0x3d'),'rtpaudioqosrtt',_0x85d5('0x3e'),_0x85d5('0x3f'),_0x85d5('0x40'),_0x85d5('0x41'),_0x85d5('0x42'),_0x85d5('0x43'),_0x85d5('0x44'),_0x85d5('0x45'),_0x85d5('0x46'),_0x85d5('0x47'),_0x85d5('0x48'),_0x85d5('0x49')];if(!_[_0x85d5('0x4a')](_0x13bbfa)&&!_[_0x85d5('0x4b')](_0x2d4fe4,_0x13bbfa)){if(_[_0x85d5('0x35')](this['variables'][_0x4de88b])){this[_0x85d5('0x36')][_0x4de88b]={};}this[_0x85d5('0x36')][_0x4de88b][_0x13bbfa]=_0x925f98;}};VoiceDialReport[_0x85d5('0x10')][_0x85d5('0xf')]=function(_0x548b37){try{if(this[_0x85d5('0x12')](_0x548b37)){logger['debug'](_0x85d5('0x4c'),_0x548b37[_0x85d5('0x15')],util[_0x85d5('0x16')](_0x548b37,{'showHidden':![],'depth':null}));if(this[_0x85d5('0x17')][_0x548b37['uniqueid']]){logger[_0x85d5('0x2c')]('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x548b37['uniqueid'],_0x548b37['cause-txt']);this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x4d')]=moment()[_0x85d5('0x19')](_0x85d5('0x1a'));this['channels'][_0x548b37['uniqueid']][_0x85d5('0x4e')]=moment(this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x4d')])['diff'](this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x4f')],'seconds');this['channels'][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x2a')]=_0x85d5('0x50');this['outbound'][_0x85d5('0x51')]+=0x1;if(this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x52')]){this['outbound'][_0x85d5('0x53')]+=0x1;this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]]['holdtime']=moment(this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x52')])['diff'](this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]]['starttime'],_0x85d5('0x54'));this['channels'][_0x548b37[_0x85d5('0x15')]]['billableseconds']=moment(this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x4d')])[_0x85d5('0x55')](this['channels'][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x52')],_0x85d5('0x54'));this[_0x85d5('0x7')][_0x85d5('0x56')]+=this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x57')]||0x0;this['outbound']['sumBillable']+=this[_0x85d5('0x17')][_0x548b37['uniqueid']][_0x85d5('0x58')];}this[_0x85d5('0x7')]['sumDuration']+=this['channels'][_0x548b37[_0x85d5('0x15')]][_0x85d5('0x4e')];logger[_0x85d5('0x13')]('[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:',_0x548b37[_0x85d5('0x15')],util[_0x85d5('0x16')](this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]],{'showHidden':![],'depth':null}));ami['emit']('custom:voiceDialReport',this[_0x85d5('0x17')][_0x548b37['uniqueid']]);logger['debug'](_0x85d5('0x59'),_0x548b37[_0x85d5('0x15')],util[_0x85d5('0x16')](this['channels'][_0x548b37['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x85d5('0x11')](_0x85d5('0x5a'),this[_0x85d5('0x17')][_0x548b37['uniqueid']]);logger[_0x85d5('0x13')](_0x85d5('0x5b'),_0x548b37[_0x85d5('0x15')],util[_0x85d5('0x16')](this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]],{'showHidden':![],'depth':null}));this[_0x85d5('0x11')](_0x85d5('0x22'),'voice_outbound:save',this['outbound']);logger[_0x85d5('0x2c')](_0x85d5('0x5c'),JSON[_0x85d5('0x5d')](this['channels'][_0x548b37[_0x85d5('0x15')]]));logger[_0x85d5('0x13')]('[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:',_0x548b37[_0x85d5('0x15')],util[_0x85d5('0x16')](this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]],{'showHidden':![],'depth':null}));this[_0x85d5('0x11')]('voice:outbound',_0x85d5('0x5e'),this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]]);delete this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x15')]];}else if(this['channels'][_0x548b37[_0x85d5('0x5f')]]){this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x5f')]][_0x85d5('0x15')]=this[_0x85d5('0x17')][_0x548b37[_0x85d5('0x5f')]][_0x85d5('0x60')];}if(this[_0x85d5('0x36')][_0x548b37[_0x85d5('0x15')]]){delete this[_0x85d5('0x36')][_0x548b37['uniqueid']];}}}catch(_0x4181be){logger[_0x85d5('0x25')](_0x85d5('0x61'),_0x548b37[_0x85d5('0x15')],util[_0x85d5('0x16')](_0x4181be,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x85d5('0x10')]['syncNewExten']=function(_0x3da8b0){try{if(this['isNotNull'](_0x3da8b0)){logger['debug'](_0x85d5('0x62'),_0x3da8b0[_0x85d5('0x15')],util[_0x85d5('0x16')](_0x3da8b0,{'showHidden':![],'depth':null}));if(_0x3da8b0[_0x85d5('0x63')][_0x85d5('0x64')]()===_0x85d5('0x65')){_0x3da8b0[_0x85d5('0x66')]=(_0x3da8b0[_0x85d5('0x67')]||_0x3da8b0[_0x85d5('0x66')])['toLowerCase']();if(_[_0x85d5('0x68')](_0x3da8b0[_0x85d5('0x66')],_0x85d5('0x69'))){if(_[_0x85d5('0x35')](this[_0x85d5('0x8')][_0x3da8b0[_0x85d5('0x15')]]))this[_0x85d5('0x8')][_0x3da8b0[_0x85d5('0x15')]]={};logger[_0x85d5('0x2c')](_0x85d5('0x6a'),_0x3da8b0[_0x85d5('0x15')],_0x3da8b0[_0x85d5('0x63')],_0x3da8b0[_0x85d5('0x66')]);var _0x4440de=_0x3da8b0[_0x85d5('0x66')]['split']('=');var _0x52243a=_0x4440de[0x0][_0x85d5('0x6b')](/cdr\((.*)\)/);if(_0x52243a)this['applications'][_0x3da8b0[_0x85d5('0x15')]][_0x52243a[0x1]]=_0x4440de[0x1];}}}}catch(_0xa18a5e){logger[_0x85d5('0x25')](_0x85d5('0x6c'),_0x3da8b0[_0x85d5('0x15')],util[_0x85d5('0x16')](_0xa18a5e,{'showHidden':![],'depth':null}));}};module[_0x85d5('0x6d')]=VoiceDialReport;
\ No newline at end of file
index 5419289..ded8cd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd37c=['queueStatusComplete','isNil','channels','Action','status','channel','message','No\x20such\x20channel','[%s][voiceQueueReport][checkChannel]','inspect','error','[%s][voiceQueueReport][checkQueueReport]','clearQueueReport','prototype','clearqueuereport','emit','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','queuecallerexitreason','ATTENDEDTRANSFER','format','voice_queue_channel:remove','emitVoiceQueueSummary','type','inbound','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','abandoned','Trunk','active','callerid','Interval','stringify','md5','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isUndefined','queues','catch','flagQueueSummary','isNotNull','queue','[voiceQueueReport][queuesummary]\x20event:','countBy','callers','toNumber','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','syncQueueSummaryComplete','[voiceQueueReport][queuesummarycomplete]\x20event:','custom:queuesummarycomplete','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','info','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','push','queuecallerjoin','[%s][voiceQueueReport][queuecallerabandon]','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','ABANDONED','lastAssignedTo','emitVoiceQueueChannelRemove','syncQueueCallerLeave','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','emitVoiceQueueChannelSave','queuecallerleave','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','last','assigned','membername','queuecallerexit','queuecallerexitAt','transfer','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','local/','linkedid','add','seconds','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','reason','toUpperCase','addVariable','variable','value','queuestatus','CONTINUE','TIMEOUT','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosrtt','sipcallid','memberdynamic','memberinterface','memberlastcall','memberrealtime','includes','handleHangup','length','unmanaged','diff','milliseconds','total','answered','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','[%s][voiceQueueReport][hangup]','cause-txt','cause','transferid','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDED','switch','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceQueueReport][musiconholdstop]','mohtime','syncNewExten','application','set','applicationdata','appdata','CDR(routeAlias)','toLowerCase','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','[%s][voiceQueueReport][newexten]','exports','lodash','moment','ioredis','../../../config/environment','ami','../ami','../model/queueReport','redis','localhost','socket.io-emitter','enqueue','tail','sequence','queueReports','agents','queueChannels','voiceQueues','campaigns','variables','queuesummary','syncQueueSummary','bind','queuesummarycomplete','syncQueueCallerJoin','queuecallerabandon','agentcomplete','syncAgentComplete','agentconnect','syncAgentConnect','varset','hangup','syncHangup','fullybooted','syncFullyBooted','musiconholdstart','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','talking','waiting'];(function(_0x3c2341,_0x21e6e5){var _0x1435cb=function(_0x32b53f){while(--_0x32b53f){_0x3c2341['push'](_0x3c2341['shift']());}};_0x1435cb(++_0x21e6e5);}(_0xd37c,0x1ab));var _0xcd37=function(_0x29ce11,_0x331746){_0x29ce11=_0x29ce11-0x0;var _0x170adc=_0xd37c[_0x29ce11];return _0x170adc;};'use strict';var _=require(_0xcd37('0x0'));var moment=require(_0xcd37('0x1'));var util=require('util');var md5=require('md5');var Redis=require(_0xcd37('0x2'));var config=require(_0xcd37('0x3'));var logger=require('../../../config/logger')(_0xcd37('0x4'));var ami=require(_0xcd37('0x5'));var QueueReport=require(_0xcd37('0x6'));config[_0xcd37('0x7')]=_['defaults'](config[_0xcd37('0x7')],{'host':_0xcd37('0x8'),'port':0x18eb});var io=require(_0xcd37('0x9'))(new Redis(config[_0xcd37('0x7')]));var Sequence=function(){};Sequence['prototype'][_0xcd37('0xa')]=function(_0x21665d){this['tail']=this['tail']?this[_0xcd37('0xb')]['finally'](_0x21665d):_0x21665d();};function VoiceQueueReport(_0xa2fe8e){this[_0xcd37('0xc')]=new Sequence();this[_0xcd37('0xd')]={};this['agents']=_0xa2fe8e[_0xcd37('0xe')];this['channels']=_0xa2fe8e[_0xcd37('0xf')];this[_0xcd37('0x10')]=_0xa2fe8e[_0xcd37('0x10')];this['flagQueueSummary']=!![];this['campaigns']=_0xa2fe8e[_0xcd37('0x11')];this[_0xcd37('0x12')]={};ami['on'](_0xcd37('0x13'),this[_0xcd37('0x14')][_0xcd37('0x15')](this));ami['on'](_0xcd37('0x16'),this['syncQueueSummaryComplete'][_0xcd37('0x15')](this));ami['on']('queuecallerjoin',this[_0xcd37('0x17')][_0xcd37('0x15')](this));ami['on'](_0xcd37('0x18'),this['syncQueueCallerAbandon'][_0xcd37('0x15')](this));ami['on']('queuecallerleave',this['syncQueueCallerLeave'][_0xcd37('0x15')](this));ami['on'](_0xcd37('0x19'),this[_0xcd37('0x1a')][_0xcd37('0x15')](this));ami['on'](_0xcd37('0x1b'),this[_0xcd37('0x1c')]['bind'](this));ami['on'](_0xcd37('0x1d'),this['syncVarSet'][_0xcd37('0x15')](this));ami['on'](_0xcd37('0x1e'),this[_0xcd37('0x1f')][_0xcd37('0x15')](this));ami['on'](_0xcd37('0x20'),this[_0xcd37('0x21')][_0xcd37('0x15')](this));ami['on'](_0xcd37('0x22'),this['syncMusicOnHoldStart']['bind'](this));ami['on']('musiconholdstop',this[_0xcd37('0x23')][_0xcd37('0x15')](this));ami['on'](_0xcd37('0x24'),this[_0xcd37('0x25')][_0xcd37('0x15')](this));ami['on'](_0xcd37('0x26'),this[_0xcd37('0x27')]['bind'](this));this[_0xcd37('0x28')]();this[_0xcd37('0x29')]();}function clearChannels(_0x490e77){if(!_[_0xcd37('0x2a')](_0x490e77)){for(var _0x5be849 in _0x490e77){if(_0x490e77[_0xcd37('0x2b')](_0x5be849)){delete _0x490e77[_0x5be849];}}}}function clearCampaigns(_0x220fe3){if(!_[_0xcd37('0x2a')](_0x220fe3)){for(var _0x10b98e in _0x220fe3){if(_0x220fe3[_0xcd37('0x2b')](_0x10b98e)){_0x220fe3[_0x10b98e][_0xcd37('0x2c')]=0x0;}}}}function clearVoiceQueues(_0x375663){if(!_[_0xcd37('0x2a')](_0x375663)){for(var _0x3efdfa in _0x375663){if(_0x375663['hasOwnProperty'](_0x3efdfa)){_0x375663[_0x3efdfa]['originated']=0x0;_0x375663[_0x3efdfa][_0xcd37('0x2d')]=0x0;_0x375663[_0x3efdfa]['pTalking']=0x0;_0x375663[_0x3efdfa][_0xcd37('0x2e')]=0x0;_0x375663[_0x3efdfa][_0xcd37('0x2f')]=!![];}}}}function clearAgentBooked(_0x2892dd){if(!_['isEmpty'](_0x2892dd)){for(var _0x4527b9 in _0x2892dd){if(_0x2892dd[_0xcd37('0x2b')](_0x4527b9)){_0x2892dd[_0x4527b9]['unlockRR']=!![];}}}}VoiceQueueReport['prototype']['clearZombieChannels']=function(){var _0x5d4d36=this;for(var _0x211cf0 in this['channels']){if(this['channels'][_0xcd37('0x2b')](_0x211cf0)&&!this['channels'][_0x211cf0]['switch']){this['sequence'][_0xcd37('0xa')](function(){if(!_[_0xcd37('0x30')](_0x5d4d36[_0xcd37('0x31')][_0x211cf0])){return ami[_0xcd37('0x32')]({'action':_0xcd37('0x33'),'channel':_0x5d4d36[_0xcd37('0x31')][_0x211cf0][_0xcd37('0x34')]})['catch'](function(_0x53ad65){if(_0x53ad65[_0xcd37('0x35')]===_0xcd37('0x36')){setTimeout(function(){if(_0x5d4d36['channels'][_0x211cf0]){delete _0x5d4d36[_0xcd37('0x31')][_0x211cf0];logger['error'](_0xcd37('0x37'),_0x211cf0,util[_0xcd37('0x38')](_0x53ad65,{'showHidden':![],'depth':null}));}if(_0x5d4d36[_0xcd37('0xd')][_0x211cf0]){delete _0x5d4d36['queueReports'][_0x211cf0];logger[_0xcd37('0x39')](_0xcd37('0x3a'),_0x211cf0,util[_0xcd37('0x38')](_0x53ad65,{'showHidden':![],'depth':null}));}if(_0x5d4d36[_0xcd37('0x12')][_0x211cf0]){delete _0x5d4d36['variables'][_0x211cf0];logger[_0xcd37('0x39')]('[%s][voiceQueueReport][checkVariables]',_0x211cf0,util['inspect'](_0x53ad65,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0xcd37('0x21')]=function(){logger[_0xcd37('0x39')]('[FullyBooted]\x20clear\x20realtime');clearChannels(this[_0xcd37('0x31')]);this[_0xcd37('0x3b')](this['queueReports']);clearAgentBooked(this[_0xcd37('0xe')]);clearVoiceQueues(this[_0xcd37('0x10')]);clearCampaigns(this[_0xcd37('0x11')]);};VoiceQueueReport[_0xcd37('0x3c')][_0xcd37('0x3b')]=function(_0x221bb8){var _0x4c7dad=this;if(!_[_0xcd37('0x2a')](_0x221bb8)){for(var _0x255c23 in _0x221bb8){if(_0x221bb8[_0xcd37('0x2b')](_0x255c23)){_0x4c7dad['emitVoiceQueueChannelRemove'](_0x221bb8[_0x255c23],_0xcd37('0x3d'));delete _0x221bb8[_0x255c23];}}}};VoiceQueueReport[_0xcd37('0x3c')][_0xcd37('0x3e')]=function(_0x35c163,_0xed0594,_0x20b5f1){io['to'](_0x35c163)[_0xcd37('0x3e')](_0xed0594,_0x20b5f1);};VoiceQueueReport[_0xcd37('0x3c')]['emitVoiceQueueChannelSave']=function(_0x15ef3d,_0x1dd2f9){logger[_0xcd37('0x3f')](_0xcd37('0x40')+_0x1dd2f9+_0xcd37('0x41'),_0x15ef3d[_0xcd37('0x42')],util['inspect'](_0x15ef3d,{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xcd37('0x43'),_0x15ef3d[_0xcd37('0x44')]),_0xcd37('0x45'),_0x15ef3d);io[_0xcd37('0x3e')](_0xcd37('0x46'),_0x15ef3d);};VoiceQueueReport['prototype']['emitVoiceQueueChannelRemove']=function(_0x1ada38,_0x3ca868){logger['debug']('[%s][voiceQueueReport]['+_0x3ca868+_0xcd37('0x47'),_0x1ada38[_0xcd37('0x42')],util[_0xcd37('0x38')](_0x1ada38,{'showHidden':![],'depth':null}));if(_0x1ada38[_0xcd37('0x48')]===_0xcd37('0x49'))return;this[_0xcd37('0x3e')](util[_0xcd37('0x4a')](_0xcd37('0x43'),_0x1ada38[_0xcd37('0x44')]),_0xcd37('0x4b'),_0x1ada38);io[_0xcd37('0x3e')]('voice_queue_presence:remove',_0x1ada38);};VoiceQueueReport[_0xcd37('0x3c')][_0xcd37('0x4c')]=function(_0x2eea64,_0x3277e4){if(_0x2eea64[_0xcd37('0x4d')]===_0xcd37('0x4e')){var _0x4d19f1={'id':_0x2eea64['id'],'name':_0x2eea64[_0xcd37('0x44')],'strategy':_0x2eea64['strategy'],'answered':_0x2eea64['answered'],'available':_0x2eea64[_0xcd37('0x4f')],'loggedIn':_0x2eea64[_0xcd37('0x50')],'pTalking':_0x2eea64[_0xcd37('0x51')],'sumBillable':_0x2eea64[_0xcd37('0x52')],'sumDuration':_0x2eea64[_0xcd37('0x53')],'sumHoldTime':_0x2eea64[_0xcd37('0x54')]||0x0,'talking':_0x2eea64[_0xcd37('0x2d')],'total':_0x2eea64['total'],'type':_0x2eea64[_0xcd37('0x4d')],'unmanaged':_0x2eea64['unmanaged'],'abandoned':_0x2eea64[_0xcd37('0x55')],'waiting':_0x2eea64[_0xcd37('0x2e')]};if(_0x2eea64[_0xcd37('0x56')]){_0x4d19f1['Trunk']={'id':_0x2eea64['Trunk']['id'],'name':_0x2eea64[_0xcd37('0x56')]['name'],'active':_0x2eea64[_0xcd37('0x56')][_0xcd37('0x57')],'callerid':_0x2eea64[_0xcd37('0x56')][_0xcd37('0x58')]};}if(_0x2eea64[_0xcd37('0x59')]){_0x4d19f1['Interval']={'id':_0x2eea64[_0xcd37('0x59')]['id'],'name':_0x2eea64['Interval'][_0xcd37('0x44')]};}var _0x43582c=md5(JSON[_0xcd37('0x5a')](_0x4d19f1));if(_0x2eea64['md5']!==_0x43582c){_0x2eea64[_0xcd37('0x5b')]=_0x43582c;logger[_0xcd37('0x3f')](_0xcd37('0x5c')+_0x3277e4+_0xcd37('0x5d'),util[_0xcd37('0x38')](_0x4d19f1,{'showHidden':![],'depth':null}));this[_0xcd37('0x3e')](util[_0xcd37('0x4a')]('voice:queue:%s',_0x4d19f1[_0xcd37('0x44')]),_0xcd37('0x5e'),_0x4d19f1);}}};VoiceQueueReport['prototype']['isNotNull']=function(_0x2506f6){return _0x2506f6!==null&&!_[_0xcd37('0x5f')](_0x2506f6);};VoiceQueueReport[_0xcd37('0x3c')][_0xcd37('0x29')]=function(){var _0x16ba9d=this;setInterval(function(){_0x16ba9d['clearZombieChannels']();ami[_0xcd37('0x32')]({'action':_0xcd37('0x60')})[_0xcd37('0x61')](function(_0x4ae116){logger['error']('[voiceQueueReport][queues]',util[_0xcd37('0x38')](_0x4ae116,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0xcd37('0x3c')]['loopQueueSummary']=function(){var _0x171aa2=this;setInterval(function(){if(_0x171aa2[_0xcd37('0x62')]){return ami['Action']({'action':'queuesummary'})['then'](function(){_0x171aa2[_0xcd37('0x62')]=![];})[_0xcd37('0x61')](function(_0x506921){logger[_0xcd37('0x39')]('[voiceQueueReport][queuesummary]',util[_0xcd37('0x38')](_0x506921,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0xcd37('0x3c')]['syncQueueSummary']=function(_0x35943a){try{if(this[_0xcd37('0x63')](_0x35943a)&&this['isNotNull'](_0x35943a[_0xcd37('0x64')])){logger['debug'](_0xcd37('0x65'),util[_0xcd37('0x38')](_0x35943a,{'showHidden':![],'depth':null}));if(this[_0xcd37('0x10')][_0x35943a['queue']]){logger['info']('[voiceQueueReport][queuesummary]\x20name:%s',_0x35943a[_0xcd37('0x64')]);var _0x19ccf2=_[_0xcd37('0x66')](this['channels'],_0xcd37('0x64'))[_0x35943a[_0xcd37('0x64')]]||0x0;var _0x21fa1d=_0x19ccf2-_0x35943a[_0xcd37('0x67')];if(this[_0xcd37('0x10')][_0x35943a[_0xcd37('0x64')]][_0xcd37('0x2e')]!==_['toNumber'](_0x35943a[_0xcd37('0x67')])||this[_0xcd37('0x10')][_0x35943a['queue']][_0xcd37('0x50')]!==_[_0xcd37('0x68')](_0x35943a[_0xcd37('0x69')])||this[_0xcd37('0x10')][_0x35943a[_0xcd37('0x64')]]['available']!==_[_0xcd37('0x68')](_0x35943a[_0xcd37('0x4f')])||this[_0xcd37('0x10')][_0x35943a[_0xcd37('0x64')]][_0xcd37('0x2d')]!==_0x21fa1d){this[_0xcd37('0x10')][_0x35943a[_0xcd37('0x64')]][_0xcd37('0x2e')]=_[_0xcd37('0x68')](_0x35943a[_0xcd37('0x67')]);this['voiceQueues'][_0x35943a[_0xcd37('0x64')]][_0xcd37('0x50')]=_[_0xcd37('0x68')](_0x35943a[_0xcd37('0x69')]);this[_0xcd37('0x10')][_0x35943a[_0xcd37('0x64')]]['available']=_['toNumber'](_0x35943a[_0xcd37('0x4f')]);this[_0xcd37('0x10')][_0x35943a['queue']][_0xcd37('0x2d')]=_0x21fa1d>0x0?_0x21fa1d:0x0;this[_0xcd37('0x10')][_0x35943a[_0xcd37('0x64')]][_0xcd37('0x2d')]=this[_0xcd37('0x10')][_0x35943a[_0xcd37('0x64')]][_0xcd37('0x2d')]>_[_0xcd37('0x68')](_0x35943a[_0xcd37('0x69')])?_[_0xcd37('0x68')](_0x35943a[_0xcd37('0x69')]):this[_0xcd37('0x10')][_0x35943a['queue']]['talking'];this[_0xcd37('0x4c')](this[_0xcd37('0x10')][_0x35943a['queue']],_0xcd37('0x13'));}logger[_0xcd37('0x3f')](_0xcd37('0x6a'),util[_0xcd37('0x38')](this[_0xcd37('0x10')][_0x35943a[_0xcd37('0x64')]],{'showHidden':![],'depth':null}));ami['emit']('custom:queuesummary',this[_0xcd37('0x10')][_0x35943a['queue']]);}}}catch(_0x2f1698){logger[_0xcd37('0x39')]('[voiceQueueReport][queuesummary]',util[_0xcd37('0x38')](_0x2f1698,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xcd37('0x3c')][_0xcd37('0x6b')]=function(_0x154ebd){logger[_0xcd37('0x3f')](_0xcd37('0x6c'),util[_0xcd37('0x38')](_0x154ebd,{'showHidden':![],'depth':null}));ami[_0xcd37('0x3e')](_0xcd37('0x6d'),{});this[_0xcd37('0x62')]=!![];};VoiceQueueReport[_0xcd37('0x3c')][_0xcd37('0x17')]=function(_0x3676c8){try{if(this['isNotNull'](_0x3676c8)){logger[_0xcd37('0x3f')](_0xcd37('0x6e'),_0x3676c8[_0xcd37('0x42')],util[_0xcd37('0x38')](_0x3676c8,{'showHidden':![],'depth':null}));if(_[_0xcd37('0x5f')](this['queueReports'][_0x3676c8[_0xcd37('0x42')]]))this[_0xcd37('0xd')][_0x3676c8['uniqueid']]=[];if(_[_0xcd37('0x5f')](this[_0xcd37('0x31')][_0x3676c8[_0xcd37('0x42')]]))this[_0xcd37('0x31')][_0x3676c8[_0xcd37('0x42')]]={};var _0x4dc61c=new QueueReport();_0x4dc61c[_0xcd37('0x44')]=_0x3676c8['queue'];_0x4dc61c[_0xcd37('0x4d')]=this[_0xcd37('0x10')][_0x4dc61c[_0xcd37('0x44')]]&&this[_0xcd37('0x10')][_0x4dc61c['name']][_0xcd37('0x4d')]?this[_0xcd37('0x10')][_0x4dc61c['name']][_0xcd37('0x4d')]||_0xcd37('0x4e'):'inbound';_0x4dc61c[_0xcd37('0x64')]=_0x3676c8[_0xcd37('0x64')];_0x4dc61c[_0xcd37('0x6f')]=moment()[_0xcd37('0x4a')](_0xcd37('0x70'));_0x4dc61c[_0xcd37('0x71')]=_0x3676c8['position'];_0x4dc61c['count']=_0x3676c8[_0xcd37('0x72')];_0x4dc61c['uniqueid']=_0x3676c8[_0xcd37('0x42')];_0x4dc61c[_0xcd37('0x73')]=this[_0xcd37('0x31')][_0x3676c8[_0xcd37('0x42')]][_0xcd37('0x73')];logger[_0xcd37('0x74')](_0xcd37('0x75'),_0x4dc61c[_0xcd37('0x44')],_0x4dc61c[_0xcd37('0x4d')]);_[_0xcd37('0x76')](_0x4dc61c,_[_0xcd37('0x77')](_0x3676c8,_[_0xcd37('0x78')](_0x4dc61c)));this[_0xcd37('0xd')][_0x3676c8[_0xcd37('0x42')]][_0xcd37('0x79')](_0x4dc61c);this[_0xcd37('0x31')][_0x3676c8[_0xcd37('0x42')]]=_0x4dc61c;this['emitVoiceQueueChannelSave'](_0x4dc61c,_0xcd37('0x7a'));}}catch(_0x6d4a07){logger['error'](_0xcd37('0x6e'),_0x3676c8[_0xcd37('0x42')],util[_0xcd37('0x38')](_0x6d4a07,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xcd37('0x3c')]['syncQueueCallerAbandon']=function(_0x38c112){try{if(this[_0xcd37('0x63')](_0x38c112)){logger[_0xcd37('0x3f')](_0xcd37('0x7b'),_0x38c112['uniqueid'],util[_0xcd37('0x38')](_0x38c112,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x38c112['uniqueid']]){var _0x5cc76b=_['last'](this[_0xcd37('0xd')][_0x38c112[_0xcd37('0x42')]]);_0x5cc76b[_0xcd37('0x7c')]=![];_0x5cc76b[_0xcd37('0x7d')]=null;_0x5cc76b[_0xcd37('0x7e')]=_0x38c112[_0xcd37('0x7e')];_0x5cc76b[_0xcd37('0x7f')]=_0x38c112[_0xcd37('0x7f')];_0x5cc76b[_0xcd37('0x18')]=!![];_0x5cc76b[_0xcd37('0x80')]=moment()[_0xcd37('0x4a')](_0xcd37('0x70'));_0x5cc76b[_0xcd37('0x48')]=_0xcd37('0x81');_0x5cc76b[_0xcd37('0x82')]=null;logger[_0xcd37('0x74')]('[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s',_0x5cc76b[_0xcd37('0x44')],_0x5cc76b[_0xcd37('0x4d')]);this[_0xcd37('0x31')][_0x38c112[_0xcd37('0x42')]]=_0x5cc76b;this[_0xcd37('0x83')](_0x5cc76b,_0xcd37('0x18'));}}}catch(_0x985f12){logger['error'](_0xcd37('0x7b'),_0x38c112[_0xcd37('0x42')],util['inspect'](_0x985f12,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xcd37('0x3c')][_0xcd37('0x84')]=function(_0x3b07c0){try{if(this[_0xcd37('0x63')](_0x3b07c0)){logger[_0xcd37('0x3f')](_0xcd37('0x85'),_0x3b07c0[_0xcd37('0x42')],util['inspect'](_0x3b07c0,{'showHidden':![],'depth':null}));if(this[_0xcd37('0xd')][_0x3b07c0[_0xcd37('0x42')]]){var _0x55f8f1=_['last'](this[_0xcd37('0xd')][_0x3b07c0[_0xcd37('0x42')]]);_0x55f8f1[_0xcd37('0x86')]=moment()[_0xcd37('0x4a')](_0xcd37('0x70'));_0x55f8f1[_0xcd37('0x87')]=_0x3b07c0[_0xcd37('0x87')];_0x55f8f1[_0xcd37('0x88')]=_0x3b07c0['connectedlinename'];logger[_0xcd37('0x74')](_0xcd37('0x89'),_0x55f8f1[_0xcd37('0x44')],_0x55f8f1['type'],_0x3b07c0[_0xcd37('0x87')],_0x3b07c0['connectedlinename']);this['channels'][_0x3b07c0[_0xcd37('0x42')]]=_0x55f8f1;this[_0xcd37('0x8a')](_0x55f8f1,_0xcd37('0x8b'));}}}catch(_0x5dc04d){logger[_0xcd37('0x39')](_0xcd37('0x85'),_0x3b07c0[_0xcd37('0x42')],util[_0xcd37('0x38')](_0x5dc04d,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncAgentConnect']=function(_0x58ef23){try{if(this['isNotNull'](_0x58ef23)){logger[_0xcd37('0x3f')](_0xcd37('0x8c'),_0x58ef23[_0xcd37('0x42')],util[_0xcd37('0x38')](_0x58ef23,{'showHidden':![],'depth':null}));if(this[_0xcd37('0xd')][_0x58ef23[_0xcd37('0x42')]]){var _0x1473ce=_['last'](this[_0xcd37('0xd')][_0x58ef23[_0xcd37('0x42')]]);_0x1473ce['queuecallercomplete']=!![];_0x1473ce[_0xcd37('0x48')]=_0xcd37('0x8d');logger[_0xcd37('0x74')]('[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT',_0x1473ce[_0xcd37('0x44')],_0x1473ce[_0xcd37('0x4d')]);}}}catch(_0x1edbac){logger[_0xcd37('0x39')]('[%s][voiceQueueReport][agentconnect]',_0x58ef23[_0xcd37('0x42')],util[_0xcd37('0x38')](_0x1edbac,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xcd37('0x1a')]=function(_0x3d346c){try{if(this[_0xcd37('0x63')](_0x3d346c)){logger['debug'](_0xcd37('0x8e'),_0x3d346c[_0xcd37('0x42')],util[_0xcd37('0x38')](_0x3d346c,{'showHidden':![],'depth':null}));if(this[_0xcd37('0xd')][_0x3d346c['uniqueid']]){var _0x16b2c4=_[_0xcd37('0x8f')](this[_0xcd37('0xd')][_0x3d346c[_0xcd37('0x42')]]);_0x16b2c4['queuecallerabandon']=![];_0x16b2c4[_0xcd37('0x80')]=null;_0x16b2c4[_0xcd37('0x90')]=!![];_0x16b2c4[_0xcd37('0x82')]=_0x3d346c[_0xcd37('0x91')];_0x16b2c4[_0xcd37('0x7e')]=_0x3d346c[_0xcd37('0x7e')];_0x16b2c4[_0xcd37('0x7c')]=!![];_0x16b2c4[_0xcd37('0x92')]=![];_0x16b2c4[_0xcd37('0x93')]=null;if(!_0x16b2c4[_0xcd37('0x94')]){if(_0x3d346c['reason']==_0xcd37('0x94')){_0x16b2c4[_0xcd37('0x48')]=_0xcd37('0x95');logger[_0xcd37('0x74')](_0xcd37('0x96'),_0x16b2c4['name'],_0x16b2c4[_0xcd37('0x4d')]);}else{if(_[_0xcd37('0x97')](_0x3d346c[_0xcd37('0x34')]['toLowerCase'](),_0xcd37('0x98'))){if(this[_0xcd37('0xd')][_0x3d346c[_0xcd37('0x99')]]){var _0x191da2=_['last'](this[_0xcd37('0xd')][_0x3d346c[_0xcd37('0x99')]]);_0x191da2[_0xcd37('0x7c')]=![];_0x191da2[_0xcd37('0x92')]=!![];_0x191da2['queuecallerexitAt']=moment(_0x16b2c4[_0xcd37('0x6f')])[_0xcd37('0x9a')](_0x3d346c[_0xcd37('0x7e')],_0xcd37('0x9b'))[_0xcd37('0x4a')](_0xcd37('0x70'));_0x191da2[_0xcd37('0x48')]=_0xcd37('0x9c');_0x191da2[_0xcd37('0x94')]=!![];_0x191da2[_0xcd37('0x9d')]=_0xcd37('0x9e');_0x191da2[_0xcd37('0x9f')]=_0x3d346c[_0xcd37('0xa0')];_0x191da2[_0xcd37('0xa1')]=_0x3d346c[_0xcd37('0x42')];logger[_0xcd37('0x74')](_0xcd37('0xa2'),_0x191da2[_0xcd37('0x44')],_0x191da2['type']);var _0x553165=this[_0xcd37('0xd')][_0x3d346c[_0xcd37('0x99')]];this[_0xcd37('0xd')][_0x3d346c['linkedid']]=this['queueReports'][_0x3d346c[_0xcd37('0x42')]];this[_0xcd37('0xd')][_0x3d346c[_0xcd37('0x42')]]=_0x553165;}}else{_0x16b2c4['queuecallerexitreason']=_0xcd37('0xa3')+_0x3d346c[_0xcd37('0xa4')][_0xcd37('0xa5')]();logger['info']('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0x16b2c4[_0xcd37('0x44')],_0x16b2c4[_0xcd37('0x4d')],_0x16b2c4[_0xcd37('0x48')]);}}}this[_0xcd37('0x31')][_0x3d346c['uniqueid']]=_0x16b2c4;this[_0xcd37('0x83')](_0x16b2c4,_0xcd37('0x19'));}}}catch(_0x193d25){logger[_0xcd37('0x39')](_0xcd37('0x8e'),_0x3d346c['uniqueid'],util[_0xcd37('0x38')](_0x193d25,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xcd37('0x3c')]['syncVarSet']=function(_0x5af805){try{if(this[_0xcd37('0x63')](_0x5af805)){logger[_0xcd37('0x3f')]('[%s][voiceQueueReport][varset]',_0x5af805[_0xcd37('0x42')],util[_0xcd37('0x38')](_0x5af805,{'showHidden':![],'depth':null}));this[_0xcd37('0xa6')](_0x5af805['uniqueid'],_[_0xcd37('0x78')](_0x5af805[_0xcd37('0xa7')])[0x0],_0x5af805[_0xcd37('0xa8')]);if(this[_0xcd37('0xd')][_0x5af805[_0xcd37('0x42')]]){var _0x29a58e=_[_0xcd37('0x8f')](this['queueReports'][_0x5af805[_0xcd37('0x42')]]);if(_0x29a58e){if(this['isNotNull'](_0x5af805[_0xcd37('0xa7')])&&this[_0xcd37('0x63')](_0x5af805[_0xcd37('0xa7')][_0xcd37('0xa9')])){switch(_0x5af805['value']){case _0xcd37('0xaa'):_0x29a58e[_0xcd37('0x92')]=![];_0x29a58e[_0xcd37('0x93')]=null;break;case _0xcd37('0xab'):_0x29a58e[_0xcd37('0xac')]=_0xcd37('0xad');_0x29a58e[_0xcd37('0x92')]=!![];_0x29a58e[_0xcd37('0x93')]=moment()[_0xcd37('0x4a')](_0xcd37('0x70'));_0x29a58e[_0xcd37('0x86')]=moment()[_0xcd37('0x4a')](_0xcd37('0x70'));logger[_0xcd37('0x3f')](_0xcd37('0xae'),_0x5af805[_0xcd37('0x42')],util[_0xcd37('0x38')](_0x29a58e,{'showHidden':![],'depth':null}));ami[_0xcd37('0x3e')](_0xcd37('0xaf'),_0x29a58e);break;default:_0x29a58e['queuecallerexit']=!![];_0x29a58e[_0xcd37('0x93')]=moment()['format'](_0xcd37('0x70'));_0x29a58e[_0xcd37('0x86')]=moment()['format'](_0xcd37('0x70'));}_0x29a58e['queuecallerabandon']=![];_0x29a58e['queuecallerabandonAt']=null;_0x29a58e[_0xcd37('0x48')]=_0x5af805[_0xcd37('0xa8')];this[_0xcd37('0x31')][_0x5af805[_0xcd37('0x42')]]=_0x29a58e;this[_0xcd37('0x83')](_0x29a58e,_0xcd37('0x1d'));}else if(this[_0xcd37('0x63')](_0x5af805[_0xcd37('0xa7')])&&this[_0xcd37('0x63')](_0x5af805[_0xcd37('0xa7')][_0xcd37('0xb0')])){if(!_0x29a58e[_0xcd37('0x18')]){_0x29a58e[_0xcd37('0x92')]=!![];_0x29a58e[_0xcd37('0x93')]=moment()['format'](_0xcd37('0x70'));_0x29a58e[_0xcd37('0x48')]=_0xcd37('0xb1');_0x29a58e[_0xcd37('0x86')]=moment()[_0xcd37('0x4a')](_0xcd37('0x70'));this[_0xcd37('0x31')][_0x5af805[_0xcd37('0x42')]]=_0x29a58e;}}logger[_0xcd37('0x74')](_0xcd37('0xb2'),_0x5af805[_0xcd37('0x42')],_0x29a58e['name'],_0x29a58e[_0xcd37('0x4d')],_[_0xcd37('0x78')](_0x5af805['variable'])[0x0],_0x5af805[_0xcd37('0xa8')]);_0x29a58e[_0xcd37('0x12')]=this[_0xcd37('0x12')][_0x5af805[_0xcd37('0x42')]];}}}}catch(_0x4ad5be){logger[_0xcd37('0x39')]('[%s][voiceQueueReport][varset]',_0x5af805[_0xcd37('0x42')],util[_0xcd37('0x38')](_0x4ad5be,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xcd37('0x3c')][_0xcd37('0xa6')]=function(_0x4a58ca,_0x4f33db,_0x2ac03b){var _0xc43a60=[_0xcd37('0xb3'),'rtpaudioqosbridged',_0xcd37('0xb4'),'rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged',_0xcd37('0xb5'),'rtpaudioqosrttbridged',_0xcd37('0xb6'),'sipuri','bridgepeer','bridgepvtcallid','membercalls',_0xcd37('0xb7'),_0xcd37('0xb8'),_0xcd37('0xb9'),_0xcd37('0x91'),'memberpenalty',_0xcd37('0xba')];if(!_[_0xcd37('0x30')](_0x4f33db)&&!_[_0xcd37('0xbb')](_0xc43a60,_0x4f33db)){if(_[_0xcd37('0x5f')](this[_0xcd37('0x12')][_0x4a58ca])){this[_0xcd37('0x12')][_0x4a58ca]={};}this[_0xcd37('0x12')][_0x4a58ca][_0x4f33db]=_0x2ac03b;}};VoiceQueueReport[_0xcd37('0x3c')][_0xcd37('0xbc')]=function(_0x391b7a,_0x5d4de7,_0x310ba7){var _0x56fd46={};for(var _0x538124=0x0;_0x538124<this[_0xcd37('0xd')][_0x391b7a][_0xcd37('0xbd')];_0x538124+=0x1){_0x56fd46=this[_0xcd37('0xd')][_0x391b7a][_0x538124];if(this[_0xcd37('0x10')][_0x56fd46[_0xcd37('0x64')]]){if(_0x56fd46[_0xcd37('0x92')]&&_0x56fd46[_0xcd37('0x94')]!=!![]){this[_0xcd37('0x10')][_0x56fd46[_0xcd37('0x64')]][_0xcd37('0xbe')]+=0x1;}if(_0x56fd46[_0xcd37('0x18')]){this['voiceQueues'][_0x56fd46[_0xcd37('0x64')]]['abandoned']+=0x1;}this[_0xcd37('0x10')][_0x56fd46[_0xcd37('0x64')]]['sumHoldTime']+=moment(_0x56fd46['queuecallerleaveAt'])[_0xcd37('0xbf')](_0x56fd46[_0xcd37('0x6f')],'seconds')||0x0;if(_0x538124===this[_0xcd37('0xd')][_0x391b7a][_0xcd37('0xbd')]-0x1){this['voiceQueues'][_0x56fd46[_0xcd37('0x64')]][_0xcd37('0x53')]+=moment()[_0xcd37('0xc0')](0x0)['diff'](_0x56fd46[_0xcd37('0x6f')],_0xcd37('0x9b'));this[_0xcd37('0x10')][_0x56fd46[_0xcd37('0x64')]][_0xcd37('0xc1')]+=0x1;if(_0x56fd46[_0xcd37('0x7c')]){this[_0xcd37('0x10')][_0x56fd46[_0xcd37('0x64')]][_0xcd37('0xc2')]+=0x1;this[_0xcd37('0x10')][_0x56fd46[_0xcd37('0x64')]]['sumBillable']+=moment()[_0xcd37('0xc0')](0x0)[_0xcd37('0xbf')](_0x56fd46[_0xcd37('0x86')],_0xcd37('0x9b'));_0x56fd46[_0xcd37('0x7d')]=moment()[_0xcd37('0x4a')](_0xcd37('0x70'));_0x56fd46[_0xcd37('0x92')]=![];_0x56fd46[_0xcd37('0x93')]=null;}if(_0x56fd46[_0xcd37('0x92')]&&_0x56fd46[_0xcd37('0x94')]!=!![]){_0x56fd46[_0xcd37('0xac')]=_0xcd37('0xbe');logger['debug']('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:',_0x391b7a,util['inspect'](_0x56fd46,{'showHidden':![],'depth':null}));ami['emit'](_0xcd37('0xc3'),_0x56fd46);}if(_0x56fd46[_0xcd37('0x18')]){_0x56fd46['lastevent']=_0xcd37('0x55');logger[_0xcd37('0x3f')](_0xcd37('0xc4'),_0x391b7a,util['inspect'](_0x56fd46,{'showHidden':![],'depth':null}));ami[_0xcd37('0x3e')](_0xcd37('0xc5'),_0x56fd46);}}else{this[_0xcd37('0x10')][_0x56fd46[_0xcd37('0x64')]]['sumDuration']+=this[_0xcd37('0x10')][_0x56fd46['queue']][_0xcd37('0x54')];}logger[_0xcd37('0x74')](_0xcd37('0xc6'),_0x391b7a,_0x56fd46[_0xcd37('0x44')],_0x56fd46[_0xcd37('0x4d')],_0x5d4de7);if(_0x310ba7&&_0x56fd46[_0xcd37('0x48')]===_0xcd37('0x49')){_0x56fd46[_0xcd37('0x48')]='COMPLETEDBYAGENT';}this['channels'][_0x391b7a]=_0x56fd46;this[_0xcd37('0x83')](_0x56fd46,_0xcd37('0x1e'));this[_0xcd37('0x4c')](this[_0xcd37('0x10')][_0x56fd46['queue']],_0xcd37('0x1e'));}}logger[_0xcd37('0x3f')]('[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:',_0x391b7a,util[_0xcd37('0x38')](this['queueReports'][_0x391b7a],{'showHidden':![],'depth':null}));ami[_0xcd37('0x3e')]('custom:voiceQueueReport',this[_0xcd37('0xd')][_0x391b7a]);if(_0x56fd46[_0xcd37('0x48')]===_0xcd37('0x49'))return;delete this['queueReports'][_0x391b7a];delete this[_0xcd37('0x31')][_0x391b7a];if(this[_0xcd37('0x12')][_0x391b7a]){delete this[_0xcd37('0x12')][_0x391b7a];}};VoiceQueueReport['prototype'][_0xcd37('0x1f')]=function(_0x5c57ee){try{if(this['isNotNull'](_0x5c57ee)){logger[_0xcd37('0x3f')](_0xcd37('0xc7'),_0x5c57ee[_0xcd37('0x42')],util[_0xcd37('0x38')](_0x5c57ee,{'showHidden':![],'depth':null}));if(this[_0xcd37('0xd')][_0x5c57ee[_0xcd37('0x42')]]){return this[_0xcd37('0xbc')](_0x5c57ee[_0xcd37('0x42')],_0x5c57ee[_0xcd37('0xc8')]);}if(this[_0xcd37('0xd')][_0x5c57ee[_0xcd37('0x99')]]){if(_0x5c57ee[_0xcd37('0xc9')]==='21'){return;}return this['handleHangup'](_0x5c57ee['linkedid'],_0x5c57ee[_0xcd37('0xc8')],!![]);}var _0x4b70f6=Object[_0xcd37('0x78')](this[_0xcd37('0xd')]);for(var _0x20c3c6=0x0;_0x20c3c6<_0x4b70f6['length'];_0x20c3c6++){var _0x1b0531=_[_0xcd37('0x8f')](this[_0xcd37('0xd')][_0x4b70f6[_0x20c3c6]]);if(_0x1b0531&&_0x1b0531[_0xcd37('0xca')]===_0x5c57ee[_0xcd37('0x42')]){return this['handleHangup'](_0x1b0531[_0xcd37('0x42')],_0x5c57ee[_0xcd37('0xc8')],!![]);}}}}catch(_0x437eae){logger[_0xcd37('0x39')]('[%s][voiceQueueReport][hangup]',_0x5c57ee['uniqueid'],util[_0xcd37('0x38')](_0x437eae,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xcd37('0x3c')][_0xcd37('0x25')]=function(_0xb67158){try{if(this[_0xcd37('0x63')](_0xb67158)){logger[_0xcd37('0x3f')](_0xcd37('0xcb'),_0xb67158[_0xcd37('0x42')],util[_0xcd37('0x38')](_0xb67158,{'showHidden':![],'depth':null}));var _0x4ed86c;var _0x27a40b;var _0x5853ef;if(this[_0xcd37('0xd')][_0xb67158['transfereeuniqueid']]){_0x4ed86c=_[_0xcd37('0x8f')](this[_0xcd37('0xd')][_0xb67158[_0xcd37('0xcc')]]);_0x4ed86c[_0xcd37('0x9f')]=_0xb67158[_0xcd37('0xcd')];_0x4ed86c[_0xcd37('0xa1')]=_0xb67158[_0xcd37('0xce')];_0x4ed86c[_0xcd37('0x48')]=_0xcd37('0x49');_0x4ed86c['transfer']=!![];_0x4ed86c[_0xcd37('0x9d')]=_0xcd37('0xcf');if(this[_0xcd37('0xd')][_0xb67158['secondtransfereruniqueid']]){_0x5853ef=this[_0xcd37('0xd')][_0xb67158['secondtransfereruniqueid']];this['queueReports'][_0xb67158[_0xcd37('0xce')]]=this[_0xcd37('0xd')][_0xb67158['transfereeuniqueid']];this[_0xcd37('0xd')][_0xb67158[_0xcd37('0xcc')]]=_0x5853ef;_0x27a40b=_[_0xcd37('0x8f')](this['queueReports'][_0xb67158[_0xcd37('0xcc')]]);_0x27a40b[_0xcd37('0xd0')]=!![];}logger[_0xcd37('0x74')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0xb67158['uniqueid'],_0x4ed86c['name'],_0x4ed86c[_0xcd37('0x4d')],_0x4ed86c[_0xcd37('0x9f')],_0x4ed86c[_0xcd37('0xa1')]);}else if(this[_0xcd37('0xd')][_0xb67158[_0xcd37('0xd1')]]){_0x4ed86c=_[_0xcd37('0x8f')](this[_0xcd37('0xd')][_0xb67158[_0xcd37('0xd1')]]);_0x4ed86c[_0xcd37('0x9f')]=_0xb67158[_0xcd37('0xd2')];_0x4ed86c[_0xcd37('0xa1')]=_0xb67158['origtransfereruniqueid'];_0x4ed86c['queuecallerexitreason']=_0xcd37('0x49');_0x4ed86c['transfer']=!![];_0x4ed86c[_0xcd37('0x9d')]=_0xcd37('0xcf');if(this[_0xcd37('0xd')][_0xb67158[_0xcd37('0xd3')]]){_0x5853ef=this['queueReports'][_0xb67158[_0xcd37('0xd3')]];this[_0xcd37('0xd')][_0xb67158['origtransfereruniqueid']]=this['queueReports'][_0xb67158[_0xcd37('0xd1')]];this[_0xcd37('0xd')][_0xb67158['transfertargetuniqueid']]=_0x5853ef;_0x27a40b=_[_0xcd37('0x8f')](this[_0xcd37('0xd')][_0xb67158[_0xcd37('0xd1')]]);_0x27a40b['switch']=!![];}logger[_0xcd37('0x74')](_0xcd37('0xd4'),_0xb67158[_0xcd37('0x42')],_0x4ed86c[_0xcd37('0x44')],_0x4ed86c['type'],_0x4ed86c[_0xcd37('0x9f')],_0x4ed86c['transferuniqueid']);}else if(this[_0xcd37('0xd')][_0xb67158['origtransfereruniqueid']]){_0x4ed86c=_[_0xcd37('0x8f')](this[_0xcd37('0xd')][_0xb67158[_0xcd37('0xd3')]]);_0x4ed86c[_0xcd37('0x9f')]=_0xb67158[_0xcd37('0xd2')];_0x4ed86c[_0xcd37('0xa1')]=_0xb67158['origtransfereruniqueid'];_0x4ed86c[_0xcd37('0x48')]=_0xcd37('0x49');_0x4ed86c[_0xcd37('0x94')]=!![];_0x4ed86c[_0xcd37('0x9d')]=_0xcd37('0xcf');_0x4ed86c[_0xcd37('0xd0')]=!![];_0x4ed86c[_0xcd37('0xca')]=_0xb67158[_0xcd37('0xcc')];}else if(this[_0xcd37('0xd')][_0xb67158[_0xcd37('0xce')]]){_0x4ed86c=_[_0xcd37('0x8f')](this[_0xcd37('0xd')][_0xb67158['secondtransfereruniqueid']]);_0x4ed86c[_0xcd37('0x9f')]=_0xb67158[_0xcd37('0xcd')];_0x4ed86c[_0xcd37('0xa1')]=_0xb67158[_0xcd37('0xce')];_0x4ed86c[_0xcd37('0x48')]=_0xcd37('0x49');_0x4ed86c[_0xcd37('0x94')]=!![];_0x4ed86c[_0xcd37('0x9d')]=_0xcd37('0xcf');_0x4ed86c[_0xcd37('0xd0')]=!![];_0x4ed86c[_0xcd37('0xca')]=_0xb67158[_0xcd37('0xd1')];}}}catch(_0xf1e2){logger[_0xcd37('0x39')](_0xcd37('0xcb'),_0xb67158['uniqueid'],util['inspect'](_0xf1e2,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xcd37('0x27')]=function(_0x3b2032){try{if(this[_0xcd37('0x63')](_0x3b2032)){logger[_0xcd37('0x3f')](_0xcd37('0xd5'),_0x3b2032['uniqueid'],util[_0xcd37('0x38')](_0x3b2032,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x3b2032['transfereeuniqueid']]){var _0x2a5b6b=_[_0xcd37('0x8f')](this[_0xcd37('0xd')][_0x3b2032[_0xcd37('0xcc')]]);_0x2a5b6b[_0xcd37('0x48')]=_0xcd37('0xd6');_0x2a5b6b[_0xcd37('0x94')]=!![];_0x2a5b6b[_0xcd37('0x9d')]=_0xcd37('0xd7');_0x2a5b6b[_0xcd37('0x9f')]=_0x3b2032[_0xcd37('0xd8')];_0x2a5b6b[_0xcd37('0xa1')]=_0x3b2032['transfereeuniqueid'];logger[_0xcd37('0x74')](_0xcd37('0xd9'),_0x3b2032[_0xcd37('0x42')],_0x2a5b6b[_0xcd37('0x44')],_0x2a5b6b[_0xcd37('0x4d')],_0x2a5b6b[_0xcd37('0x9f')],_0x2a5b6b[_0xcd37('0xa1')]);this['syncHangup']({'event':_0xcd37('0xda'),'uniqueid':_0x3b2032[_0xcd37('0xcc')],'context':_0x3b2032[_0xcd37('0xdb')],'channel':_0x3b2032[_0xcd37('0xdc')]});}}}catch(_0x19f716){logger['error'](_0xcd37('0xd5'),_0x3b2032['uniqueid'],util[_0xcd37('0x38')](_0x19f716,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xcd37('0x3c')]['syncMusicOnHoldStart']=function(_0x1526ea){try{if(this[_0xcd37('0x63')](_0x1526ea)){logger[_0xcd37('0x3f')](_0xcd37('0xdd'),_0x1526ea['uniqueid'],util['inspect'](_0x1526ea,{'showHidden':![],'depth':null}));if(this[_0xcd37('0xd')][_0x1526ea[_0xcd37('0x42')]]){var _0x37b6dc=_[_0xcd37('0x8f')](this[_0xcd37('0xd')][_0x1526ea[_0xcd37('0x42')]]);if(!_[_0xcd37('0x30')](_0x37b6dc[_0xcd37('0x86')])){_0x37b6dc['mohstarttime']=moment()['format'](_0xcd37('0x70'));logger['info'](_0xcd37('0xde'),_0x1526ea[_0xcd37('0x42')],_0x37b6dc[_0xcd37('0xdf')]);}}}}catch(_0x3940b3){logger[_0xcd37('0x39')](_0xcd37('0xdd'),_0x1526ea[_0xcd37('0x42')],util[_0xcd37('0x38')](_0x3940b3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xcd37('0x3c')]['syncMusicOnHoldStop']=function(_0x50582a){try{if(this['isNotNull'](_0x50582a)){logger[_0xcd37('0x3f')](_0xcd37('0xe0'),_0x50582a['uniqueid'],util[_0xcd37('0x38')](_0x50582a,{'showHidden':![],'depth':null}));if(this[_0xcd37('0xd')][_0x50582a[_0xcd37('0x42')]]){var _0x12d287=_[_0xcd37('0x8f')](this[_0xcd37('0xd')][_0x50582a[_0xcd37('0x42')]]);if(!_['isNil'](_0x12d287[_0xcd37('0xdf')])){_0x12d287[_0xcd37('0xe1')]+=moment()[_0xcd37('0xc0')](0x0)[_0xcd37('0xbf')](_0x12d287['mohstarttime'],_0xcd37('0x9b'));logger[_0xcd37('0x74')]('[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s',_0x50582a[_0xcd37('0x42')],_0x12d287['mohtime']);delete _0x12d287['mohstarttime'];}}}}catch(_0x335129){logger['error'](_0xcd37('0xe0'),_0x50582a[_0xcd37('0x42')],util[_0xcd37('0x38')](_0x335129,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xcd37('0x3c')][_0xcd37('0xe2')]=function(_0x336eca){try{if(this[_0xcd37('0x63')](_0x336eca)){logger[_0xcd37('0x3f')]('[%s][voiceQueueReport][newexten]\x20event:',_0x336eca[_0xcd37('0x42')],util[_0xcd37('0x38')](_0x336eca,{'showHidden':![],'depth':null}));if(_0x336eca[_0xcd37('0xe3')]['toLowerCase']()===_0xcd37('0xe4')){_0x336eca[_0xcd37('0xe5')]=_0x336eca[_0xcd37('0xe6')]&&_0x336eca[_0xcd37('0xe6')][_0xcd37('0x97')](_0xcd37('0xe7'))?_0x336eca[_0xcd37('0xe6')]:(_0x336eca[_0xcd37('0xe6')]||_0x336eca[_0xcd37('0xe5')])[_0xcd37('0xe8')]();if(_['startsWith'](_0x336eca[_0xcd37('0xe5')][_0xcd37('0xe8')](),_0xcd37('0xe9'))){logger[_0xcd37('0x74')](_0xcd37('0xea'),_0x336eca['uniqueid'],_0x336eca[_0xcd37('0xe3')],_0x336eca[_0xcd37('0xe5')]);if(_['isUndefined'](this['channels'][_0x336eca[_0xcd37('0x42')]]))this[_0xcd37('0x31')][_0x336eca[_0xcd37('0x42')]]={};var _0x1ca87b=_0x336eca[_0xcd37('0xe5')]['split']('=');var _0x467ced=_0x1ca87b[0x0][_0xcd37('0xe8')]()['match'](/cdr\((.*)\)/);if(_0x467ced)this[_0xcd37('0x31')][_0x336eca['uniqueid']][_0x467ced[0x1]]=_0x1ca87b[0x1];}}}}catch(_0x4f1fb4){logger['error'](_0xcd37('0xeb'),_0x336eca[_0xcd37('0x42')],util[_0xcd37('0x38')](_0x4f1fb4,{'showHidden':![],'depth':null}));}};module[_0xcd37('0xec')]=VoiceQueueReport;
\ No newline at end of file
+var _0xcfa1=['campaigns','variables','queuesummary','syncQueueSummary','bind','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','agentcomplete','syncAgentComplete','agentconnect','syncAgentConnect','varset','syncVarSet','hangup','syncHangup','fullybooted','syncFullyBooted','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','talking','pTalking','waiting','queueStatusComplete','channels','switch','Action','status','channel','catch','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','name','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','ATTENDEDTRANSFER','format','voice:queue:%s','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','inbound','answered','available','loggedIn','sumBillable','sumDuration','total','abandoned','Trunk','Interval','stringify',']\x20sending\x20voice_queue:save\x20event:','isNotNull','clearZombieChannels','[voiceQueueReport][queues]','then','[voiceQueueReport][queuesummary]\x20event:','queue','info','[voiceQueueReport][queuesummary]\x20name:%s','countBy','toNumber','loggedin','custom:queuesummary','[voiceQueueReport][queuesummary]','syncQueueSummaryComplete','[voiceQueueReport][queuesummarycomplete]\x20event:','custom:queuesummarycomplete','isUndefined','type','queuecallerjoinAt','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','push','[%s][voiceQueueReport][queuecallerjoin]','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','queuecallercompleteAt','holdtime','queuecallerabandonAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitreason','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','syncQueueCallerLeave','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','assigned','queuecallerexit','queuecallerexitAt','transfer','reason','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','local/','linkedid','seconds','FORWARD','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','[%s][voiceQueueReport][varset]','keys','variable','value','queuestatus','CONTINUE','TIMEOUT','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipuri','bridgepeer','bridgepvtcallid','memberdynamic','memberinterface','memberlastcall','memberpenalty','isNil','includes','[%s][voiceQueueReport][hangup]','length','unmanaged','sumHoldTime','diff','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','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','transferexten','secondtransfererexten','secondtransfereruniqueid','transfertype','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfereruniqueid','origtransfererexten','syncBlindTransfer','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceQueueReport][musiconholdstop]','mohtime','syncNewExten','application','set','applicationdata','appdata','split','exports','moment','md5','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','prototype','enqueue','tail','sequence','queueReports','agents','queueChannels','voiceQueues','flagQueueSummary'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0xcfa1,0x1bc));var _0x1cfa=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcfa1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var moment=require(_0x1cfa('0x0'));var util=require('util');var md5=require(_0x1cfa('0x1'));var Redis=require(_0x1cfa('0x2'));var config=require(_0x1cfa('0x3'));var logger=require(_0x1cfa('0x4'))(_0x1cfa('0x5'));var ami=require(_0x1cfa('0x6'));var QueueReport=require('../model/queueReport');config[_0x1cfa('0x7')]=_[_0x1cfa('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var Sequence=function(){};Sequence[_0x1cfa('0x9')][_0x1cfa('0xa')]=function(_0x12f701){this[_0x1cfa('0xb')]=this['tail']?this[_0x1cfa('0xb')]['finally'](_0x12f701):_0x12f701();};function VoiceQueueReport(_0x569e54){this[_0x1cfa('0xc')]=new Sequence();this[_0x1cfa('0xd')]={};this[_0x1cfa('0xe')]=_0x569e54[_0x1cfa('0xe')];this['channels']=_0x569e54[_0x1cfa('0xf')];this[_0x1cfa('0x10')]=_0x569e54[_0x1cfa('0x10')];this[_0x1cfa('0x11')]=!![];this[_0x1cfa('0x12')]=_0x569e54[_0x1cfa('0x12')];this[_0x1cfa('0x13')]={};ami['on'](_0x1cfa('0x14'),this[_0x1cfa('0x15')][_0x1cfa('0x16')](this));ami['on']('queuesummarycomplete',this['syncQueueSummaryComplete'][_0x1cfa('0x16')](this));ami['on'](_0x1cfa('0x17'),this[_0x1cfa('0x18')]['bind'](this));ami['on'](_0x1cfa('0x19'),this[_0x1cfa('0x1a')][_0x1cfa('0x16')](this));ami['on'](_0x1cfa('0x1b'),this['syncQueueCallerLeave']['bind'](this));ami['on'](_0x1cfa('0x1c'),this[_0x1cfa('0x1d')][_0x1cfa('0x16')](this));ami['on'](_0x1cfa('0x1e'),this[_0x1cfa('0x1f')][_0x1cfa('0x16')](this));ami['on'](_0x1cfa('0x20'),this[_0x1cfa('0x21')][_0x1cfa('0x16')](this));ami['on'](_0x1cfa('0x22'),this[_0x1cfa('0x23')][_0x1cfa('0x16')](this));ami['on'](_0x1cfa('0x24'),this[_0x1cfa('0x25')][_0x1cfa('0x16')](this));ami['on']('musiconholdstart',this[_0x1cfa('0x26')]['bind'](this));ami['on'](_0x1cfa('0x27'),this[_0x1cfa('0x28')][_0x1cfa('0x16')](this));ami['on'](_0x1cfa('0x29'),this[_0x1cfa('0x2a')][_0x1cfa('0x16')](this));ami['on']('blindtransfer',this['syncBlindTransfer'][_0x1cfa('0x16')](this));this[_0x1cfa('0x2b')]();this[_0x1cfa('0x2c')]();}function clearChannels(_0x2eb18b){if(!_[_0x1cfa('0x2d')](_0x2eb18b)){for(var _0x567fcf in _0x2eb18b){if(_0x2eb18b[_0x1cfa('0x2e')](_0x567fcf)){delete _0x2eb18b[_0x567fcf];}}}}function clearCampaigns(_0x120445){if(!_[_0x1cfa('0x2d')](_0x120445)){for(var _0x4f430d in _0x120445){if(_0x120445[_0x1cfa('0x2e')](_0x4f430d)){_0x120445[_0x4f430d][_0x1cfa('0x2f')]=0x0;}}}}function clearVoiceQueues(_0x34d468){if(!_[_0x1cfa('0x2d')](_0x34d468)){for(var _0x1de215 in _0x34d468){if(_0x34d468[_0x1cfa('0x2e')](_0x1de215)){_0x34d468[_0x1de215][_0x1cfa('0x2f')]=0x0;_0x34d468[_0x1de215][_0x1cfa('0x30')]=0x0;_0x34d468[_0x1de215][_0x1cfa('0x31')]=0x0;_0x34d468[_0x1de215][_0x1cfa('0x32')]=0x0;_0x34d468[_0x1de215][_0x1cfa('0x33')]=!![];}}}}function clearAgentBooked(_0x2e6bd9){if(!_[_0x1cfa('0x2d')](_0x2e6bd9)){for(var _0x2314fd in _0x2e6bd9){if(_0x2e6bd9[_0x1cfa('0x2e')](_0x2314fd)){_0x2e6bd9[_0x2314fd]['unlockRR']=!![];}}}}VoiceQueueReport[_0x1cfa('0x9')]['clearZombieChannels']=function(){var _0x21e036=this;for(var _0x285dba in this[_0x1cfa('0x34')]){if(this[_0x1cfa('0x34')][_0x1cfa('0x2e')](_0x285dba)&&!this['channels'][_0x285dba][_0x1cfa('0x35')]){this[_0x1cfa('0xc')][_0x1cfa('0xa')](function(){if(!_['isNil'](_0x21e036[_0x1cfa('0x34')][_0x285dba])){return ami[_0x1cfa('0x36')]({'action':_0x1cfa('0x37'),'channel':_0x21e036[_0x1cfa('0x34')][_0x285dba][_0x1cfa('0x38')]})[_0x1cfa('0x39')](function(_0x2232c4){if(_0x2232c4['message']===_0x1cfa('0x3a')){setTimeout(function(){if(_0x21e036[_0x1cfa('0x34')][_0x285dba]){delete _0x21e036['channels'][_0x285dba];logger[_0x1cfa('0x3b')](_0x1cfa('0x3c'),_0x285dba,util['inspect'](_0x2232c4,{'showHidden':![],'depth':null}));}if(_0x21e036[_0x1cfa('0xd')][_0x285dba]){delete _0x21e036['queueReports'][_0x285dba];logger[_0x1cfa('0x3b')]('[%s][voiceQueueReport][checkQueueReport]',_0x285dba,util[_0x1cfa('0x3d')](_0x2232c4,{'showHidden':![],'depth':null}));}if(_0x21e036[_0x1cfa('0x13')][_0x285dba]){delete _0x21e036['variables'][_0x285dba];logger[_0x1cfa('0x3b')](_0x1cfa('0x3e'),_0x285dba,util['inspect'](_0x2232c4,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x25')]=function(){logger['error'](_0x1cfa('0x3f'));clearChannels(this[_0x1cfa('0x34')]);this['clearQueueReport'](this[_0x1cfa('0xd')]);clearAgentBooked(this[_0x1cfa('0xe')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0x1cfa('0x12')]);};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x40')]=function(_0x59a5c1){var _0x4d0b9b=this;if(!_[_0x1cfa('0x2d')](_0x59a5c1)){for(var _0x47c2b4 in _0x59a5c1){if(_0x59a5c1['hasOwnProperty'](_0x47c2b4)){_0x4d0b9b[_0x1cfa('0x41')](_0x59a5c1[_0x47c2b4],_0x1cfa('0x42'));delete _0x59a5c1[_0x47c2b4];}}}};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x43')]=function(_0x2df647,_0x24245c,_0x2b7ed5){io['to'](_0x2df647)[_0x1cfa('0x43')](_0x24245c,_0x2b7ed5);};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x44')]=function(_0x5bec34,_0x6d657f){logger[_0x1cfa('0x45')](_0x1cfa('0x46')+_0x6d657f+_0x1cfa('0x47'),_0x5bec34[_0x1cfa('0x48')],util[_0x1cfa('0x3d')](_0x5bec34,{'showHidden':![],'depth':null}));this[_0x1cfa('0x43')](util['format']('voice:queue:%s',_0x5bec34[_0x1cfa('0x49')]),'voice_queue_channel:save',_0x5bec34);io[_0x1cfa('0x43')](_0x1cfa('0x4a'),_0x5bec34);};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x41')]=function(_0x2d0db4,_0x709d99){logger[_0x1cfa('0x45')](_0x1cfa('0x46')+_0x709d99+_0x1cfa('0x4b'),_0x2d0db4[_0x1cfa('0x48')],util['inspect'](_0x2d0db4,{'showHidden':![],'depth':null}));if(_0x2d0db4['queuecallerexitreason']===_0x1cfa('0x4c'))return;this['emit'](util[_0x1cfa('0x4d')](_0x1cfa('0x4e'),_0x2d0db4[_0x1cfa('0x49')]),_0x1cfa('0x4f'),_0x2d0db4);io[_0x1cfa('0x43')](_0x1cfa('0x50'),_0x2d0db4);};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x51')]=function(_0x382281,_0x92a409){if(_0x382281['type']===_0x1cfa('0x52')){var _0x362c7e={'id':_0x382281['id'],'name':_0x382281['name'],'strategy':_0x382281['strategy'],'answered':_0x382281[_0x1cfa('0x53')],'available':_0x382281[_0x1cfa('0x54')],'loggedIn':_0x382281[_0x1cfa('0x55')],'pTalking':_0x382281[_0x1cfa('0x31')],'sumBillable':_0x382281[_0x1cfa('0x56')],'sumDuration':_0x382281[_0x1cfa('0x57')],'sumHoldTime':_0x382281['sumHoldTime']||0x0,'talking':_0x382281['talking'],'total':_0x382281[_0x1cfa('0x58')],'type':_0x382281['type'],'unmanaged':_0x382281['unmanaged'],'abandoned':_0x382281[_0x1cfa('0x59')],'waiting':_0x382281[_0x1cfa('0x32')]};if(_0x382281['Trunk']){_0x362c7e['Trunk']={'id':_0x382281[_0x1cfa('0x5a')]['id'],'name':_0x382281[_0x1cfa('0x5a')]['name'],'active':_0x382281['Trunk']['active'],'callerid':_0x382281['Trunk']['callerid']};}if(_0x382281['Interval']){_0x362c7e[_0x1cfa('0x5b')]={'id':_0x382281[_0x1cfa('0x5b')]['id'],'name':_0x382281[_0x1cfa('0x5b')][_0x1cfa('0x49')]};}var _0x15cfba=md5(JSON[_0x1cfa('0x5c')](_0x362c7e));if(_0x382281[_0x1cfa('0x1')]!==_0x15cfba){_0x382281[_0x1cfa('0x1')]=_0x15cfba;logger[_0x1cfa('0x45')]('[voiceQueueReport]['+_0x92a409+_0x1cfa('0x5d'),util['inspect'](_0x362c7e,{'showHidden':![],'depth':null}));this['emit'](util[_0x1cfa('0x4d')](_0x1cfa('0x4e'),_0x362c7e['name']),'voice_queue:save',_0x362c7e);}}};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x5e')]=function(_0xff2319){return _0xff2319!==null&&!_['isUndefined'](_0xff2319);};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x2c')]=function(){var _0x2c7368=this;setInterval(function(){_0x2c7368[_0x1cfa('0x5f')]();ami[_0x1cfa('0x36')]({'action':'queues'})[_0x1cfa('0x39')](function(_0x59dcac){logger[_0x1cfa('0x3b')](_0x1cfa('0x60'),util[_0x1cfa('0x3d')](_0x59dcac,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x2b')]=function(){var _0x590e8f=this;setInterval(function(){if(_0x590e8f[_0x1cfa('0x11')]){return ami[_0x1cfa('0x36')]({'action':_0x1cfa('0x14')})[_0x1cfa('0x61')](function(){_0x590e8f['flagQueueSummary']=![];})[_0x1cfa('0x39')](function(_0x49f174){logger[_0x1cfa('0x3b')]('[voiceQueueReport][queuesummary]',util[_0x1cfa('0x3d')](_0x49f174,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x15')]=function(_0x597b9f){try{if(this['isNotNull'](_0x597b9f)&&this[_0x1cfa('0x5e')](_0x597b9f['queue'])){logger[_0x1cfa('0x45')](_0x1cfa('0x62'),util[_0x1cfa('0x3d')](_0x597b9f,{'showHidden':![],'depth':null}));if(this[_0x1cfa('0x10')][_0x597b9f[_0x1cfa('0x63')]]){logger[_0x1cfa('0x64')](_0x1cfa('0x65'),_0x597b9f[_0x1cfa('0x63')]);var _0x30e639=_[_0x1cfa('0x66')](this[_0x1cfa('0x34')],_0x1cfa('0x63'))[_0x597b9f['queue']]||0x0;var _0x157ad1=_0x30e639-_0x597b9f['callers'];if(this[_0x1cfa('0x10')][_0x597b9f['queue']]['waiting']!==_[_0x1cfa('0x67')](_0x597b9f['callers'])||this[_0x1cfa('0x10')][_0x597b9f[_0x1cfa('0x63')]][_0x1cfa('0x55')]!==_['toNumber'](_0x597b9f[_0x1cfa('0x68')])||this[_0x1cfa('0x10')][_0x597b9f[_0x1cfa('0x63')]]['available']!==_[_0x1cfa('0x67')](_0x597b9f[_0x1cfa('0x54')])||this[_0x1cfa('0x10')][_0x597b9f[_0x1cfa('0x63')]][_0x1cfa('0x30')]!==_0x157ad1){this[_0x1cfa('0x10')][_0x597b9f[_0x1cfa('0x63')]]['waiting']=_[_0x1cfa('0x67')](_0x597b9f['callers']);this[_0x1cfa('0x10')][_0x597b9f[_0x1cfa('0x63')]][_0x1cfa('0x55')]=_['toNumber'](_0x597b9f[_0x1cfa('0x68')]);this[_0x1cfa('0x10')][_0x597b9f['queue']][_0x1cfa('0x54')]=_[_0x1cfa('0x67')](_0x597b9f[_0x1cfa('0x54')]);this[_0x1cfa('0x10')][_0x597b9f[_0x1cfa('0x63')]][_0x1cfa('0x30')]=_0x157ad1>0x0?_0x157ad1:0x0;this[_0x1cfa('0x10')][_0x597b9f[_0x1cfa('0x63')]][_0x1cfa('0x30')]=this[_0x1cfa('0x10')][_0x597b9f[_0x1cfa('0x63')]]['talking']>_[_0x1cfa('0x67')](_0x597b9f[_0x1cfa('0x68')])?_[_0x1cfa('0x67')](_0x597b9f[_0x1cfa('0x68')]):this['voiceQueues'][_0x597b9f['queue']][_0x1cfa('0x30')];this[_0x1cfa('0x51')](this[_0x1cfa('0x10')][_0x597b9f[_0x1cfa('0x63')]],_0x1cfa('0x14'));}logger[_0x1cfa('0x45')]('[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:',util[_0x1cfa('0x3d')](this[_0x1cfa('0x10')][_0x597b9f['queue']],{'showHidden':![],'depth':null}));ami[_0x1cfa('0x43')](_0x1cfa('0x69'),this[_0x1cfa('0x10')][_0x597b9f[_0x1cfa('0x63')]]);}}}catch(_0x5b8b92){logger[_0x1cfa('0x3b')](_0x1cfa('0x6a'),util[_0x1cfa('0x3d')](_0x5b8b92,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x6b')]=function(_0x378b1d){logger[_0x1cfa('0x45')](_0x1cfa('0x6c'),util[_0x1cfa('0x3d')](_0x378b1d,{'showHidden':![],'depth':null}));ami[_0x1cfa('0x43')](_0x1cfa('0x6d'),{});this['flagQueueSummary']=!![];};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x18')]=function(_0x1d27fd){try{if(this[_0x1cfa('0x5e')](_0x1d27fd)){logger['debug']('[%s][voiceQueueReport][queuecallerjoin]',_0x1d27fd[_0x1cfa('0x48')],util[_0x1cfa('0x3d')](_0x1d27fd,{'showHidden':![],'depth':null}));if(_[_0x1cfa('0x6e')](this[_0x1cfa('0xd')][_0x1d27fd['uniqueid']]))this[_0x1cfa('0xd')][_0x1d27fd[_0x1cfa('0x48')]]=[];if(_[_0x1cfa('0x6e')](this[_0x1cfa('0x34')][_0x1d27fd[_0x1cfa('0x48')]]))this[_0x1cfa('0x34')][_0x1d27fd[_0x1cfa('0x48')]]={};var _0x4cde3a=new QueueReport();_0x4cde3a['name']=_0x1d27fd[_0x1cfa('0x63')];_0x4cde3a[_0x1cfa('0x6f')]=this['voiceQueues'][_0x4cde3a['name']]&&this[_0x1cfa('0x10')][_0x4cde3a[_0x1cfa('0x49')]][_0x1cfa('0x6f')]?this[_0x1cfa('0x10')][_0x4cde3a[_0x1cfa('0x49')]][_0x1cfa('0x6f')]||_0x1cfa('0x52'):'inbound';_0x4cde3a[_0x1cfa('0x63')]=_0x1d27fd[_0x1cfa('0x63')];_0x4cde3a[_0x1cfa('0x70')]=moment()[_0x1cfa('0x4d')]('YYYY-MM-DD\x20HH:mm:ss');_0x4cde3a[_0x1cfa('0x71')]=_0x1d27fd[_0x1cfa('0x71')];_0x4cde3a[_0x1cfa('0x72')]=_0x1d27fd[_0x1cfa('0x72')];_0x4cde3a[_0x1cfa('0x48')]=_0x1d27fd['uniqueid'];_0x4cde3a[_0x1cfa('0x73')]=this[_0x1cfa('0x34')][_0x1d27fd[_0x1cfa('0x48')]][_0x1cfa('0x73')];logger['info'](_0x1cfa('0x74'),_0x4cde3a[_0x1cfa('0x49')],_0x4cde3a[_0x1cfa('0x6f')]);_['merge'](_0x4cde3a,_['pick'](_0x1d27fd,_['keys'](_0x4cde3a)));this[_0x1cfa('0xd')][_0x1d27fd['uniqueid']][_0x1cfa('0x75')](_0x4cde3a);this[_0x1cfa('0x34')][_0x1d27fd[_0x1cfa('0x48')]]=_0x4cde3a;this[_0x1cfa('0x44')](_0x4cde3a,'queuecallerjoin');}}catch(_0x2e10ff){logger['error'](_0x1cfa('0x76'),_0x1d27fd[_0x1cfa('0x48')],util[_0x1cfa('0x3d')](_0x2e10ff,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x1a')]=function(_0x156095){try{if(this[_0x1cfa('0x5e')](_0x156095)){logger[_0x1cfa('0x45')](_0x1cfa('0x77'),_0x156095[_0x1cfa('0x48')],util[_0x1cfa('0x3d')](_0x156095,{'showHidden':![],'depth':null}));if(this[_0x1cfa('0xd')][_0x156095[_0x1cfa('0x48')]]){var _0x6df3b=_[_0x1cfa('0x78')](this[_0x1cfa('0xd')][_0x156095[_0x1cfa('0x48')]]);_0x6df3b[_0x1cfa('0x79')]=![];_0x6df3b[_0x1cfa('0x7a')]=null;_0x6df3b[_0x1cfa('0x7b')]=_0x156095[_0x1cfa('0x7b')];_0x6df3b['originalposition']=_0x156095['originalposition'];_0x6df3b[_0x1cfa('0x19')]=!![];_0x6df3b[_0x1cfa('0x7c')]=moment()['format'](_0x1cfa('0x7d'));_0x6df3b[_0x1cfa('0x7e')]=_0x1cfa('0x7f');_0x6df3b[_0x1cfa('0x80')]=null;logger['info'](_0x1cfa('0x81'),_0x6df3b['name'],_0x6df3b[_0x1cfa('0x6f')]);this[_0x1cfa('0x34')][_0x156095[_0x1cfa('0x48')]]=_0x6df3b;this[_0x1cfa('0x41')](_0x6df3b,_0x1cfa('0x19'));}}}catch(_0x5b53ea){logger[_0x1cfa('0x3b')](_0x1cfa('0x77'),_0x156095[_0x1cfa('0x48')],util[_0x1cfa('0x3d')](_0x5b53ea,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x82')]=function(_0xeaf7b5){try{if(this['isNotNull'](_0xeaf7b5)){logger[_0x1cfa('0x45')](_0x1cfa('0x83'),_0xeaf7b5[_0x1cfa('0x48')],util[_0x1cfa('0x3d')](_0xeaf7b5,{'showHidden':![],'depth':null}));if(this[_0x1cfa('0xd')][_0xeaf7b5[_0x1cfa('0x48')]]){var _0xcd5b06=_[_0x1cfa('0x78')](this['queueReports'][_0xeaf7b5[_0x1cfa('0x48')]]);_0xcd5b06[_0x1cfa('0x84')]=moment()[_0x1cfa('0x4d')](_0x1cfa('0x7d'));_0xcd5b06[_0x1cfa('0x85')]=_0xeaf7b5[_0x1cfa('0x85')];_0xcd5b06['connectedlinename']=_0xeaf7b5[_0x1cfa('0x86')];logger[_0x1cfa('0x64')](_0x1cfa('0x87'),_0xcd5b06[_0x1cfa('0x49')],_0xcd5b06[_0x1cfa('0x6f')],_0xeaf7b5[_0x1cfa('0x85')],_0xeaf7b5[_0x1cfa('0x86')]);this[_0x1cfa('0x34')][_0xeaf7b5[_0x1cfa('0x48')]]=_0xcd5b06;this[_0x1cfa('0x44')](_0xcd5b06,_0x1cfa('0x1b'));}}}catch(_0x299c2e){logger['error'](_0x1cfa('0x83'),_0xeaf7b5['uniqueid'],util['inspect'](_0x299c2e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x1f')]=function(_0x5d0d71){try{if(this[_0x1cfa('0x5e')](_0x5d0d71)){logger['debug'](_0x1cfa('0x88'),_0x5d0d71[_0x1cfa('0x48')],util['inspect'](_0x5d0d71,{'showHidden':![],'depth':null}));if(this[_0x1cfa('0xd')][_0x5d0d71[_0x1cfa('0x48')]]){var _0x4f634a=_[_0x1cfa('0x78')](this[_0x1cfa('0xd')][_0x5d0d71[_0x1cfa('0x48')]]);_0x4f634a['queuecallercomplete']=!![];_0x4f634a[_0x1cfa('0x7e')]=_0x1cfa('0x89');logger[_0x1cfa('0x64')]('[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT',_0x4f634a['name'],_0x4f634a[_0x1cfa('0x6f')]);}}}catch(_0x4b6e3f){logger[_0x1cfa('0x3b')]('[%s][voiceQueueReport][agentconnect]',_0x5d0d71[_0x1cfa('0x48')],util[_0x1cfa('0x3d')](_0x4b6e3f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x1d')]=function(_0x1f1d34){try{if(this['isNotNull'](_0x1f1d34)){logger[_0x1cfa('0x45')](_0x1cfa('0x8a'),_0x1f1d34[_0x1cfa('0x48')],util[_0x1cfa('0x3d')](_0x1f1d34,{'showHidden':![],'depth':null}));if(this[_0x1cfa('0xd')][_0x1f1d34['uniqueid']]){var _0x37de88=_['last'](this[_0x1cfa('0xd')][_0x1f1d34[_0x1cfa('0x48')]]);_0x37de88['queuecallerabandon']=![];_0x37de88[_0x1cfa('0x7c')]=null;_0x37de88[_0x1cfa('0x8b')]=!![];_0x37de88[_0x1cfa('0x80')]=_0x1f1d34['membername'];_0x37de88[_0x1cfa('0x7b')]=_0x1f1d34[_0x1cfa('0x7b')];_0x37de88[_0x1cfa('0x79')]=!![];_0x37de88[_0x1cfa('0x8c')]=![];_0x37de88[_0x1cfa('0x8d')]=null;if(!_0x37de88[_0x1cfa('0x8e')]){if(_0x1f1d34[_0x1cfa('0x8f')]==_0x1cfa('0x8e')){_0x37de88[_0x1cfa('0x7e')]='COMPLETED';logger[_0x1cfa('0x64')](_0x1cfa('0x90'),_0x37de88[_0x1cfa('0x49')],_0x37de88[_0x1cfa('0x6f')]);}else{if(_[_0x1cfa('0x91')](_0x1f1d34['channel'][_0x1cfa('0x92')](),_0x1cfa('0x93'))){if(this['queueReports'][_0x1f1d34[_0x1cfa('0x94')]]){var _0x1dfa9f=_[_0x1cfa('0x78')](this[_0x1cfa('0xd')][_0x1f1d34[_0x1cfa('0x94')]]);_0x1dfa9f[_0x1cfa('0x79')]=![];_0x1dfa9f[_0x1cfa('0x8c')]=!![];_0x1dfa9f[_0x1cfa('0x8d')]=moment(_0x37de88[_0x1cfa('0x70')])['add'](_0x1f1d34[_0x1cfa('0x7b')],_0x1cfa('0x95'))['format'](_0x1cfa('0x7d'));_0x1dfa9f[_0x1cfa('0x7e')]='FORWARDTRANSFER';_0x1dfa9f[_0x1cfa('0x8e')]=!![];_0x1dfa9f['transfertype']=_0x1cfa('0x96');_0x1dfa9f['transferexten']=_0x1f1d34[_0x1cfa('0x97')];_0x1dfa9f[_0x1cfa('0x98')]=_0x1f1d34[_0x1cfa('0x48')];logger[_0x1cfa('0x64')](_0x1cfa('0x99'),_0x1dfa9f[_0x1cfa('0x49')],_0x1dfa9f[_0x1cfa('0x6f')]);var _0x4f6258=this[_0x1cfa('0xd')][_0x1f1d34[_0x1cfa('0x94')]];this[_0x1cfa('0xd')][_0x1f1d34[_0x1cfa('0x94')]]=this[_0x1cfa('0xd')][_0x1f1d34[_0x1cfa('0x48')]];this['queueReports'][_0x1f1d34['uniqueid']]=_0x4f6258;}}else{_0x37de88[_0x1cfa('0x7e')]=_0x1cfa('0x9a')+_0x1f1d34[_0x1cfa('0x8f')]['toUpperCase']();logger[_0x1cfa('0x64')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0x37de88[_0x1cfa('0x49')],_0x37de88[_0x1cfa('0x6f')],_0x37de88[_0x1cfa('0x7e')]);}}}this[_0x1cfa('0x34')][_0x1f1d34[_0x1cfa('0x48')]]=_0x37de88;this[_0x1cfa('0x41')](_0x37de88,_0x1cfa('0x1c'));}}}catch(_0x5b8711){logger[_0x1cfa('0x3b')](_0x1cfa('0x8a'),_0x1f1d34[_0x1cfa('0x48')],util['inspect'](_0x5b8711,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x21')]=function(_0x512727){try{if(this['isNotNull'](_0x512727)){logger[_0x1cfa('0x45')](_0x1cfa('0x9b'),_0x512727['uniqueid'],util[_0x1cfa('0x3d')](_0x512727,{'showHidden':![],'depth':null}));this['addVariable'](_0x512727[_0x1cfa('0x48')],_[_0x1cfa('0x9c')](_0x512727[_0x1cfa('0x9d')])[0x0],_0x512727[_0x1cfa('0x9e')]);if(this[_0x1cfa('0xd')][_0x512727[_0x1cfa('0x48')]]){var _0x599c3f=_[_0x1cfa('0x78')](this[_0x1cfa('0xd')][_0x512727[_0x1cfa('0x48')]]);if(_0x599c3f){if(this['isNotNull'](_0x512727[_0x1cfa('0x9d')])&&this[_0x1cfa('0x5e')](_0x512727['variable'][_0x1cfa('0x9f')])){switch(_0x512727[_0x1cfa('0x9e')]){case _0x1cfa('0xa0'):_0x599c3f[_0x1cfa('0x8c')]=![];_0x599c3f['queuecallerexitAt']=null;break;case _0x1cfa('0xa1'):_0x599c3f[_0x1cfa('0xa2')]=_0x1cfa('0xa3');_0x599c3f[_0x1cfa('0x8c')]=!![];_0x599c3f[_0x1cfa('0x8d')]=moment()[_0x1cfa('0x4d')](_0x1cfa('0x7d'));_0x599c3f[_0x1cfa('0x84')]=moment()[_0x1cfa('0x4d')](_0x1cfa('0x7d'));logger[_0x1cfa('0x45')](_0x1cfa('0xa4'),_0x512727[_0x1cfa('0x48')],util[_0x1cfa('0x3d')](_0x599c3f,{'showHidden':![],'depth':null}));ami[_0x1cfa('0x43')](_0x1cfa('0xa5'),_0x599c3f);break;default:_0x599c3f[_0x1cfa('0x8c')]=!![];_0x599c3f[_0x1cfa('0x8d')]=moment()[_0x1cfa('0x4d')](_0x1cfa('0x7d'));_0x599c3f[_0x1cfa('0x84')]=moment()[_0x1cfa('0x4d')](_0x1cfa('0x7d'));}_0x599c3f[_0x1cfa('0x19')]=![];_0x599c3f[_0x1cfa('0x7c')]=null;_0x599c3f[_0x1cfa('0x7e')]=_0x512727[_0x1cfa('0x9e')];this['channels'][_0x512727[_0x1cfa('0x48')]]=_0x599c3f;this[_0x1cfa('0x41')](_0x599c3f,_0x1cfa('0x20'));}else if(this[_0x1cfa('0x5e')](_0x512727[_0x1cfa('0x9d')])&&this['isNotNull'](_0x512727[_0x1cfa('0x9d')][_0x1cfa('0xa6')])){if(!_0x599c3f[_0x1cfa('0x19')]){_0x599c3f[_0x1cfa('0x8c')]=!![];_0x599c3f[_0x1cfa('0x8d')]=moment()[_0x1cfa('0x4d')](_0x1cfa('0x7d'));_0x599c3f[_0x1cfa('0x7e')]=_0x1cfa('0xa7');_0x599c3f['queuecallerleaveAt']=moment()['format'](_0x1cfa('0x7d'));this['channels'][_0x512727['uniqueid']]=_0x599c3f;}}logger[_0x1cfa('0x64')](_0x1cfa('0xa8'),_0x512727[_0x1cfa('0x48')],_0x599c3f[_0x1cfa('0x49')],_0x599c3f[_0x1cfa('0x6f')],_[_0x1cfa('0x9c')](_0x512727[_0x1cfa('0x9d')])[0x0],_0x512727[_0x1cfa('0x9e')]);_0x599c3f[_0x1cfa('0x13')]=this[_0x1cfa('0x13')][_0x512727[_0x1cfa('0x48')]];}}}}catch(_0x2845ba){logger[_0x1cfa('0x3b')](_0x1cfa('0x9b'),_0x512727[_0x1cfa('0x48')],util[_0x1cfa('0x3d')](_0x2845ba,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0xa9')]=function(_0x543647,_0x51d307,_0x9c40d2){var _0x94fd36=[_0x1cfa('0xaa'),_0x1cfa('0xab'),_0x1cfa('0xac'),_0x1cfa('0xad'),_0x1cfa('0xae'),_0x1cfa('0xaf'),_0x1cfa('0xb0'),_0x1cfa('0xb1'),'sipcallid',_0x1cfa('0xb2'),_0x1cfa('0xb3'),_0x1cfa('0xb4'),'membercalls',_0x1cfa('0xb5'),_0x1cfa('0xb6'),_0x1cfa('0xb7'),'membername',_0x1cfa('0xb8'),'memberrealtime'];if(!_[_0x1cfa('0xb9')](_0x51d307)&&!_[_0x1cfa('0xba')](_0x94fd36,_0x51d307)){if(_[_0x1cfa('0x6e')](this[_0x1cfa('0x13')][_0x543647])){this[_0x1cfa('0x13')][_0x543647]={};}this[_0x1cfa('0x13')][_0x543647][_0x51d307]=_0x9c40d2;}};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x23')]=function(_0x130f7f){try{if(this[_0x1cfa('0x5e')](_0x130f7f)){logger[_0x1cfa('0x45')](_0x1cfa('0xbb'),_0x130f7f[_0x1cfa('0x48')],util[_0x1cfa('0x3d')](_0x130f7f,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x130f7f[_0x1cfa('0x48')]]){for(var _0xa424=0x0,_0x1ea43d={};_0xa424<this['queueReports'][_0x130f7f[_0x1cfa('0x48')]][_0x1cfa('0xbc')];_0xa424+=0x1){_0x1ea43d=this[_0x1cfa('0xd')][_0x130f7f[_0x1cfa('0x48')]][_0xa424];if(this[_0x1cfa('0x10')][_0x1ea43d['queue']]){if(_0x1ea43d[_0x1cfa('0x8c')]&&_0x1ea43d[_0x1cfa('0x8e')]!=!![]){this['voiceQueues'][_0x1ea43d['queue']][_0x1cfa('0xbd')]+=0x1;}if(_0x1ea43d[_0x1cfa('0x19')]){this[_0x1cfa('0x10')][_0x1ea43d[_0x1cfa('0x63')]][_0x1cfa('0x59')]+=0x1;}this['voiceQueues'][_0x1ea43d[_0x1cfa('0x63')]][_0x1cfa('0xbe')]+=moment(_0x1ea43d['queuecallerleaveAt'])[_0x1cfa('0xbf')](_0x1ea43d['queuecallerjoinAt'],_0x1cfa('0x95'))||0x0;if(_0xa424===this[_0x1cfa('0xd')][_0x130f7f[_0x1cfa('0x48')]][_0x1cfa('0xbc')]-0x1){this[_0x1cfa('0x10')][_0x1ea43d[_0x1cfa('0x63')]][_0x1cfa('0x57')]+=moment()['milliseconds'](0x0)['diff'](_0x1ea43d[_0x1cfa('0x70')],_0x1cfa('0x95'));this[_0x1cfa('0x10')][_0x1ea43d['queue']][_0x1cfa('0x58')]+=0x1;if(_0x1ea43d['queuecallercomplete']){this[_0x1cfa('0x10')][_0x1ea43d['queue']]['answered']+=0x1;this[_0x1cfa('0x10')][_0x1ea43d['queue']][_0x1cfa('0x56')]+=moment()[_0x1cfa('0xc0')](0x0)[_0x1cfa('0xbf')](_0x1ea43d[_0x1cfa('0x84')],_0x1cfa('0x95'));_0x1ea43d['queuecallercompleteAt']=moment()['format'](_0x1cfa('0x7d'));_0x1ea43d[_0x1cfa('0x8c')]=![];_0x1ea43d[_0x1cfa('0x8d')]=null;}if(_0x1ea43d[_0x1cfa('0x8c')]&&_0x1ea43d[_0x1cfa('0x8e')]!=!![]){_0x1ea43d[_0x1cfa('0xa2')]=_0x1cfa('0xbd');logger['debug'](_0x1cfa('0xc1'),_0x130f7f[_0x1cfa('0x48')],util['inspect'](_0x1ea43d,{'showHidden':![],'depth':null}));ami[_0x1cfa('0x43')](_0x1cfa('0xc2'),_0x1ea43d);}if(_0x1ea43d[_0x1cfa('0x19')]){_0x1ea43d[_0x1cfa('0xa2')]=_0x1cfa('0x59');logger['debug'](_0x1cfa('0xc3'),_0x130f7f['uniqueid'],util[_0x1cfa('0x3d')](_0x1ea43d,{'showHidden':![],'depth':null}));ami[_0x1cfa('0x43')](_0x1cfa('0xc4'),_0x1ea43d);}}else{this[_0x1cfa('0x10')][_0x1ea43d['queue']][_0x1cfa('0x57')]+=this[_0x1cfa('0x10')][_0x1ea43d[_0x1cfa('0x63')]]['sumHoldTime'];}logger[_0x1cfa('0x64')](_0x1cfa('0xc5'),_0x130f7f[_0x1cfa('0x48')],_0x1ea43d[_0x1cfa('0x49')],_0x1ea43d[_0x1cfa('0x6f')],_0x130f7f[_0x1cfa('0xc6')]);this[_0x1cfa('0x34')][_0x130f7f['uniqueid']]=_0x1ea43d;this[_0x1cfa('0x41')](_0x1ea43d,_0x1cfa('0x22'));this[_0x1cfa('0x51')](this[_0x1cfa('0x10')][_0x1ea43d[_0x1cfa('0x63')]],_0x1cfa('0x22'));}}logger['debug'](_0x1cfa('0xc7'),_0x130f7f[_0x1cfa('0x48')],util[_0x1cfa('0x3d')](this[_0x1cfa('0xd')][_0x130f7f[_0x1cfa('0x48')]],{'showHidden':![],'depth':null}));ami[_0x1cfa('0x43')](_0x1cfa('0xc8'),this[_0x1cfa('0xd')][_0x130f7f[_0x1cfa('0x48')]]);if(_0x1ea43d[_0x1cfa('0x7e')]===_0x1cfa('0x4c'))return;delete this['queueReports'][_0x130f7f[_0x1cfa('0x48')]];delete this[_0x1cfa('0x34')][_0x130f7f[_0x1cfa('0x48')]];}if(this['variables'][_0x130f7f[_0x1cfa('0x48')]]){delete this[_0x1cfa('0x13')][_0x130f7f[_0x1cfa('0x48')]];}}}catch(_0x361dfc){logger[_0x1cfa('0x3b')](_0x1cfa('0xbb'),_0x130f7f[_0x1cfa('0x48')],util[_0x1cfa('0x3d')](_0x361dfc,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x2a')]=function(_0x50acaf){try{if(this['isNotNull'](_0x50acaf)){logger[_0x1cfa('0x45')](_0x1cfa('0xc9'),_0x50acaf['uniqueid'],util[_0x1cfa('0x3d')](_0x50acaf,{'showHidden':![],'depth':null}));var _0x150ef3;var _0x5da873;var _0x1fd098;if(this[_0x1cfa('0xd')][_0x50acaf[_0x1cfa('0xca')]]){_0x150ef3=_[_0x1cfa('0x78')](this[_0x1cfa('0xd')][_0x50acaf[_0x1cfa('0xca')]]);_0x150ef3[_0x1cfa('0xcb')]=_0x50acaf[_0x1cfa('0xcc')];_0x150ef3[_0x1cfa('0x98')]=_0x50acaf[_0x1cfa('0xcd')];_0x150ef3[_0x1cfa('0x7e')]=_0x1cfa('0x4c');_0x150ef3['transfer']=!![];_0x150ef3[_0x1cfa('0xce')]=_0x1cfa('0xcf');if(this[_0x1cfa('0xd')][_0x50acaf[_0x1cfa('0xcd')]]){_0x1fd098=this[_0x1cfa('0xd')][_0x50acaf[_0x1cfa('0xcd')]];this[_0x1cfa('0xd')][_0x50acaf[_0x1cfa('0xcd')]]=this[_0x1cfa('0xd')][_0x50acaf['transfereeuniqueid']];this[_0x1cfa('0xd')][_0x50acaf['transfereeuniqueid']]=_0x1fd098;_0x5da873=_[_0x1cfa('0x78')](this['queueReports'][_0x50acaf[_0x1cfa('0xca')]]);_0x5da873['switch']=!![];}logger[_0x1cfa('0x64')](_0x1cfa('0xd0'),_0x50acaf[_0x1cfa('0x48')],_0x150ef3[_0x1cfa('0x49')],_0x150ef3[_0x1cfa('0x6f')],_0x150ef3[_0x1cfa('0xcb')],_0x150ef3[_0x1cfa('0x98')]);}else if(this[_0x1cfa('0xd')][_0x50acaf['transfertargetuniqueid']]){_0x150ef3=_[_0x1cfa('0x78')](this[_0x1cfa('0xd')][_0x50acaf[_0x1cfa('0xd1')]]);_0x150ef3[_0x1cfa('0xcb')]=_0x50acaf['origtransfererexten'];_0x150ef3[_0x1cfa('0x98')]=_0x50acaf['origtransfereruniqueid'];_0x150ef3[_0x1cfa('0x7e')]=_0x1cfa('0x4c');_0x150ef3[_0x1cfa('0x8e')]=!![];_0x150ef3[_0x1cfa('0xce')]=_0x1cfa('0xcf');if(this[_0x1cfa('0xd')][_0x50acaf[_0x1cfa('0xd2')]]){_0x1fd098=this[_0x1cfa('0xd')][_0x50acaf[_0x1cfa('0xd2')]];this['queueReports'][_0x50acaf[_0x1cfa('0xd2')]]=this[_0x1cfa('0xd')][_0x50acaf[_0x1cfa('0xd1')]];this[_0x1cfa('0xd')][_0x50acaf['transfertargetuniqueid']]=_0x1fd098;_0x5da873=_[_0x1cfa('0x78')](this[_0x1cfa('0xd')][_0x50acaf['transfertargetuniqueid']]);_0x5da873[_0x1cfa('0x35')]=!![];}logger['info']('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x50acaf['uniqueid'],_0x150ef3[_0x1cfa('0x49')],_0x150ef3[_0x1cfa('0x6f')],_0x150ef3['transferexten'],_0x150ef3[_0x1cfa('0x98')]);}else if(this['queueReports'][_0x50acaf['origtransfereruniqueid']]){_0x150ef3=_[_0x1cfa('0x78')](this[_0x1cfa('0xd')][_0x50acaf[_0x1cfa('0xd2')]]);_0x150ef3[_0x1cfa('0xcb')]=_0x50acaf[_0x1cfa('0xd3')];_0x150ef3[_0x1cfa('0x98')]=_0x50acaf['origtransfereruniqueid'];_0x150ef3[_0x1cfa('0x7e')]='ATTENDEDTRANSFER';_0x150ef3[_0x1cfa('0x8e')]=!![];_0x150ef3[_0x1cfa('0xce')]='ATTENDED';}else if(this[_0x1cfa('0xd')][_0x50acaf[_0x1cfa('0xcd')]]){_0x150ef3=_[_0x1cfa('0x78')](this['queueReports'][_0x50acaf[_0x1cfa('0xcd')]]);_0x150ef3[_0x1cfa('0xcb')]=_0x50acaf['secondtransfererexten'];_0x150ef3['transferuniqueid']=_0x50acaf[_0x1cfa('0xcd')];_0x150ef3[_0x1cfa('0x7e')]=_0x1cfa('0x4c');_0x150ef3[_0x1cfa('0x8e')]=!![];_0x150ef3[_0x1cfa('0xce')]=_0x1cfa('0xcf');}}}catch(_0x15bacd){logger[_0x1cfa('0x3b')](_0x1cfa('0xc9'),_0x50acaf[_0x1cfa('0x48')],util['inspect'](_0x15bacd,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0xd4')]=function(_0x9efe16){try{if(this[_0x1cfa('0x5e')](_0x9efe16)){logger[_0x1cfa('0x45')](_0x1cfa('0xd5'),_0x9efe16[_0x1cfa('0x48')],util[_0x1cfa('0x3d')](_0x9efe16,{'showHidden':![],'depth':null}));if(this[_0x1cfa('0xd')][_0x9efe16['transfereeuniqueid']]){var _0x133f14=_[_0x1cfa('0x78')](this[_0x1cfa('0xd')][_0x9efe16['transfereeuniqueid']]);_0x133f14[_0x1cfa('0x7e')]=_0x1cfa('0xd6');_0x133f14[_0x1cfa('0x8e')]=!![];_0x133f14[_0x1cfa('0xce')]='BLIND';_0x133f14[_0x1cfa('0xcb')]=_0x9efe16[_0x1cfa('0xd7')];_0x133f14['transferuniqueid']=_0x9efe16[_0x1cfa('0xca')];logger[_0x1cfa('0x64')](_0x1cfa('0xd8'),_0x9efe16[_0x1cfa('0x48')],_0x133f14[_0x1cfa('0x49')],_0x133f14[_0x1cfa('0x6f')],_0x133f14['transferexten'],_0x133f14['transferuniqueid']);this[_0x1cfa('0x23')]({'event':_0x1cfa('0xd9'),'uniqueid':_0x9efe16[_0x1cfa('0xca')],'context':_0x9efe16[_0x1cfa('0xda')],'channel':_0x9efe16['transfererchannel']});}}}catch(_0x25c7ba){logger['error'](_0x1cfa('0xd5'),_0x9efe16['uniqueid'],util['inspect'](_0x25c7ba,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1cfa('0x9')]['syncMusicOnHoldStart']=function(_0x3bbca3){try{if(this[_0x1cfa('0x5e')](_0x3bbca3)){logger[_0x1cfa('0x45')](_0x1cfa('0xdb'),_0x3bbca3[_0x1cfa('0x48')],util[_0x1cfa('0x3d')](_0x3bbca3,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x3bbca3[_0x1cfa('0x48')]]){var _0x35b6e0=_['last'](this['queueReports'][_0x3bbca3[_0x1cfa('0x48')]]);if(!_[_0x1cfa('0xb9')](_0x35b6e0[_0x1cfa('0x84')])){_0x35b6e0['mohstarttime']=moment()[_0x1cfa('0x4d')](_0x1cfa('0x7d'));logger[_0x1cfa('0x64')](_0x1cfa('0xdc'),_0x3bbca3['uniqueid'],_0x35b6e0[_0x1cfa('0xdd')]);}}}}catch(_0x18d0db){logger[_0x1cfa('0x3b')]('[%s][voiceQueueReport][musiconholdstart]',_0x3bbca3[_0x1cfa('0x48')],util[_0x1cfa('0x3d')](_0x18d0db,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0x28')]=function(_0xde169){try{if(this['isNotNull'](_0xde169)){logger['debug'](_0x1cfa('0xde'),_0xde169[_0x1cfa('0x48')],util[_0x1cfa('0x3d')](_0xde169,{'showHidden':![],'depth':null}));if(this[_0x1cfa('0xd')][_0xde169[_0x1cfa('0x48')]]){var _0x5e78a0=_[_0x1cfa('0x78')](this['queueReports'][_0xde169[_0x1cfa('0x48')]]);if(!_[_0x1cfa('0xb9')](_0x5e78a0[_0x1cfa('0xdd')])){_0x5e78a0[_0x1cfa('0xdf')]+=moment()[_0x1cfa('0xc0')](0x0)[_0x1cfa('0xbf')](_0x5e78a0[_0x1cfa('0xdd')],_0x1cfa('0x95'));logger[_0x1cfa('0x64')]('[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s',_0xde169[_0x1cfa('0x48')],_0x5e78a0[_0x1cfa('0xdf')]);delete _0x5e78a0[_0x1cfa('0xdd')];}}}}catch(_0x4f3274){logger[_0x1cfa('0x3b')]('[%s][voiceQueueReport][musiconholdstop]',_0xde169[_0x1cfa('0x48')],util['inspect'](_0x4f3274,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x1cfa('0x9')][_0x1cfa('0xe0')]=function(_0x707d01){try{if(this[_0x1cfa('0x5e')](_0x707d01)){logger['debug']('[%s][voiceQueueReport][newexten]\x20event:',_0x707d01['uniqueid'],util['inspect'](_0x707d01,{'showHidden':![],'depth':null}));if(_0x707d01[_0x1cfa('0xe1')][_0x1cfa('0x92')]()===_0x1cfa('0xe2')){_0x707d01[_0x1cfa('0xe3')]=_0x707d01['appdata']&&_0x707d01[_0x1cfa('0xe4')][_0x1cfa('0x91')]('CDR(routeAlias)')?_0x707d01[_0x1cfa('0xe4')]:(_0x707d01[_0x1cfa('0xe4')]||_0x707d01[_0x1cfa('0xe3')])['toLowerCase']();if(_['startsWith'](_0x707d01['applicationdata'][_0x1cfa('0x92')](),'cdr(')){logger['info']('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x707d01[_0x1cfa('0x48')],_0x707d01[_0x1cfa('0xe1')],_0x707d01['applicationdata']);if(_[_0x1cfa('0x6e')](this[_0x1cfa('0x34')][_0x707d01[_0x1cfa('0x48')]]))this[_0x1cfa('0x34')][_0x707d01[_0x1cfa('0x48')]]={};var _0x22c05d=_0x707d01[_0x1cfa('0xe3')][_0x1cfa('0xe5')]('=');var _0x29e7e4=_0x22c05d[0x0][_0x1cfa('0x92')]()['match'](/cdr\((.*)\)/);if(_0x29e7e4)this[_0x1cfa('0x34')][_0x707d01[_0x1cfa('0x48')]][_0x29e7e4[0x1]]=_0x22c05d[0x1];}}}}catch(_0x5af639){logger[_0x1cfa('0x3b')]('[%s][voiceQueueReport][newexten]',_0x707d01[_0x1cfa('0x48')],util[_0x1cfa('0x3d')](_0x5af639,{'showHidden':![],'depth':null}));}};module[_0x1cfa('0xe6')]=VoiceQueueReport;
\ No newline at end of file
index 8a9ca22..f82af4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x177b=['../client','createHistory','campaign','queue','Request','CreateReportAgentPreview'];(function(_0x208258,_0x17f413){var _0x3f774c=function(_0x164f1c){while(--_0x164f1c){_0x208258['push'](_0x208258['shift']());}};_0x3f774c(++_0x17f413);}(_0x177b,0xe4));var _0xb177=function(_0xbb36a0,_0x1cb1e4){_0xbb36a0=_0xbb36a0-0x0;var _0x306db2=_0x177b[_0xbb36a0];return _0x306db2;};'use strict';var client=require(_0xb177('0x0'));exports[_0xb177('0x1')]=function(_0x299fe0){return function(){_0x299fe0[_0xb177('0x2')]=_0x299fe0[_0xb177('0x3')];return client[_0xb177('0x4')](_0xb177('0x5'),{'body':_0x299fe0,'log':_0xb177('0x5')});};};
\ No newline at end of file
+var _0xa2a2=['CreateReportAgentPreview','createHistory','Request'];(function(_0x330bb0,_0x4f695f){var _0x442278=function(_0x52d830){while(--_0x52d830){_0x330bb0['push'](_0x330bb0['shift']());}};_0x442278(++_0x4f695f);}(_0xa2a2,0x103));var _0x2a2a=function(_0x2a7d96,_0x1afec0){_0x2a7d96=_0x2a7d96-0x0;var _0x28c156=_0xa2a2[_0x2a7d96];return _0x28c156;};'use strict';var client=require('../client');exports[_0x2a2a('0x0')]=function(_0x37f089){return function(){_0x37f089['campaign']=_0x37f089['queue'];return client[_0x2a2a('0x1')]('CreateReportAgentPreview',{'body':_0x37f089,'log':_0x2a2a('0x2')});};};
\ No newline at end of file
index 05699f6..ce5b2de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7615=['Request','CreateAttachment','../client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7615,0xec));var _0x5761=function(_0x4e6ae6,_0x49dba6){_0x4e6ae6=_0x4e6ae6-0x0;var _0x23c108=_0x7615[_0x4e6ae6];return _0x23c108;};'use strict';var client=require(_0x5761('0x0'));exports['create']=function(_0x4bb9b5){return client[_0x5761('0x1')]('CreateAttachment',{'body':_0x4bb9b5,'log':_0x5761('0x2')});};
\ No newline at end of file
+var _0x41fa=['CreateAttachment','../client','create','Request'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0x41fa,0x1f1));var _0xa41f=function(_0x2f4c1c,_0x5a3dd4){_0x2f4c1c=_0x2f4c1c-0x0;var _0x25e0f2=_0x41fa[_0x2f4c1c];return _0x25e0f2;};'use strict';var client=require(_0xa41f('0x0'));exports[_0xa41f('0x1')]=function(_0x65db07){return client[_0xa41f('0x2')](_0xa41f('0x3'),{'body':_0x65db07,'log':_0xa41f('0x3')});};
\ No newline at end of file
index e9d48f4..d3a91a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','callerid','active','Interval','Intervals','interval','SquareProject','../client','getCampaigns','Request','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyMaxRetry'];(function(_0x2bb0e4,_0x4276fc){var _0x5cd914=function(_0x3eb183){while(--_0x3eb183){_0x2bb0e4['push'](_0x2bb0e4['shift']());}};_0x5cd914(++_0x4276fc);}(_0x7a54,0x106));var _0x47a5=function(_0x19f052,_0x318300){_0x19f052=_0x19f052-0x0;var _0x51e1ac=_0x7a54[_0x19f052];return _0x51e1ac;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(){return function(){return client[_0x47a5('0x2')]('GetCampaign',{'options':{'raw':![],'attributes':['id',_0x47a5('0x3'),_0x47a5('0x4'),'active',_0x47a5('0x5'),_0x47a5('0x6'),_0x47a5('0x7'),_0x47a5('0x8'),_0x47a5('0x9'),'dialCongestionRetryFrequency',_0x47a5('0xa'),'dialBusyRetryFrequency',_0x47a5('0xb'),_0x47a5('0xc'),'dialGlobalMaxRetry',_0x47a5('0xd'),'dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency',_0x47a5('0xe'),_0x47a5('0xf'),'dialMachineMaxRetry',_0x47a5('0x10'),'dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency',_0x47a5('0x11'),_0x47a5('0x12'),_0x47a5('0x13'),_0x47a5('0x14'),_0x47a5('0x15'),_0x47a5('0x16'),_0x47a5('0x17'),'dialAMDMinWordLength',_0x47a5('0x18'),_0x47a5('0x19'),_0x47a5('0x1a'),_0x47a5('0x1b'),_0x47a5('0x1c'),_0x47a5('0x1d'),_0x47a5('0x1e'),_0x47a5('0x1f')],'include':[{'model':'Trunk','as':_0x47a5('0x20'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x21'),_0x47a5('0x22')]},{'model':_0x47a5('0x20'),'as':'TrunkBackup','attributes':['id','name',_0x47a5('0x21'),'active']},{'model':'Interval','as':_0x47a5('0x23'),'attributes':['id',_0x47a5('0x3')],'include':[{'model':_0x47a5('0x23'),'as':_0x47a5('0x24'),'attributes':['id',_0x47a5('0x3'),_0x47a5('0x25')]}]},{'model':_0x47a5('0x26'),'as':_0x47a5('0x26'),'attributes':['id',_0x47a5('0x3')]}]},'log':'getCampaign'});};};
\ No newline at end of file
+var _0xc4aa=['Trunk','active','TrunkBackup','callerid','Interval','Intervals','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','name','type','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit'];(function(_0xc1a7d3,_0x6ac180){var _0x576e8d=function(_0x46d9cb){while(--_0x46d9cb){_0xc1a7d3['push'](_0xc1a7d3['shift']());}};_0x576e8d(++_0x6ac180);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0xc4aa[_0x209941];return _0x1e8729;};'use strict';var client=require(_0xac4a('0x0'));exports[_0xac4a('0x1')]=function(){return function(){return client[_0xac4a('0x2')](_0xac4a('0x3'),{'options':{'raw':![],'attributes':['id',_0xac4a('0x4'),_0xac4a('0x5'),'active','limitCalls','dialOriginateCallerIdName',_0xac4a('0x6'),_0xac4a('0x7'),_0xac4a('0x8'),_0xac4a('0x9'),_0xac4a('0xa'),_0xac4a('0xb'),_0xac4a('0xc'),_0xac4a('0xd'),'dialGlobalMaxRetry','dialNoSuchNumberMaxRetry',_0xac4a('0xe'),_0xac4a('0xf'),_0xac4a('0x10'),'dialAbandonedMaxRetry',_0xac4a('0x11'),_0xac4a('0x12'),_0xac4a('0x13'),'dialAgentRejectMaxRetry',_0xac4a('0x14'),'dialTimezone',_0xac4a('0x15'),'dialAMDActive',_0xac4a('0x16'),_0xac4a('0x17'),_0xac4a('0x18'),'dialAMDTotalAnalysisTime',_0xac4a('0x19'),_0xac4a('0x1a'),_0xac4a('0x1b'),_0xac4a('0x1c'),_0xac4a('0x1d'),_0xac4a('0x1e'),_0xac4a('0x1f'),_0xac4a('0x20'),_0xac4a('0x21')],'include':[{'model':_0xac4a('0x22'),'as':_0xac4a('0x22'),'attributes':['id',_0xac4a('0x4'),'callerid',_0xac4a('0x23')]},{'model':_0xac4a('0x22'),'as':_0xac4a('0x24'),'attributes':['id',_0xac4a('0x4'),_0xac4a('0x25'),_0xac4a('0x23')]},{'model':_0xac4a('0x26'),'as':_0xac4a('0x26'),'attributes':['id','name'],'include':[{'model':'Interval','as':_0xac4a('0x27'),'attributes':['id',_0xac4a('0x4'),_0xac4a('0x28')]}]},{'model':'SquareProject','as':_0xac4a('0x29'),'attributes':['id',_0xac4a('0x4')]}]},'log':_0xac4a('0x2a')});};};
\ No newline at end of file
index 5eecdfc..fdf9292 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1efe=['GetCmContact','createContact','Request','CreateCmContact'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x1efe,0x18d));var _0xe1ef=function(_0x288f5e,_0x205edd){_0x288f5e=_0x288f5e-0x0;var _0x476cc9=_0x1efe[_0x288f5e];return _0x476cc9;};'use strict';var client=require('../client');exports[_0xe1ef('0x0')]=function(_0x4be8a4){return function(){return client[_0xe1ef('0x1')](_0xe1ef('0x2'),{'body':_0x4be8a4,'log':_0xe1ef('0x2')});};};exports['getContacts']=function(_0x7358f4){return function(){return client['Request'](_0xe1ef('0x3'),{'options':_0x7358f4,'log':_0xe1ef('0x3')});};};
\ No newline at end of file
+var _0x460d=['createContact','CreateCmContact','Request','GetCmContact','../client'];(function(_0x2f1762,_0xab43df){var _0x8ab21=function(_0xf6c1f5){while(--_0xf6c1f5){_0x2f1762['push'](_0x2f1762['shift']());}};_0x8ab21(++_0xab43df);}(_0x460d,0x1cb));var _0xd460=function(_0x256422,_0x367394){_0x256422=_0x256422-0x0;var _0x55dddc=_0x460d[_0x256422];return _0x55dddc;};'use strict';var client=require(_0xd460('0x0'));exports[_0xd460('0x1')]=function(_0x5623d){return function(){return client['Request'](_0xd460('0x2'),{'body':_0x5623d,'log':_0xd460('0x2')});};};exports['getContacts']=function(_0x26273c){return function(){return client[_0xd460('0x3')](_0xd460('0x4'),{'options':_0x26273c,'log':'GetCmContact'});};};
\ No newline at end of file
index f8e1d64..7f01e9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e78=['format','rescheduleContact','ContactId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','priority','scheduledat','ASC','getContactDialerIvr','GetContactDialer','YYYY-MM-DD\x20HH:mm:ss','DESC','GetContactDialerIvr','moveContactManagedDialer','queue','ListId','countReScheduled','getContactPreview','Agent','name','VoiceQueue','Queue','unlockContact','getContactRecallMe','GetContactRecallMe','User','voicePause','db.CmHopper.UserId','resetActiveCalls','ResetActiveCalls','handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','../client','moment','getContacts','Request','GetCmHopper','CmContact','Contact','getCmHopper','UpdateCmHopper'];(function(_0x4323be,_0x4127a9){var _0x51e495=function(_0x12208c){while(--_0x12208c){_0x4323be['push'](_0x4323be['shift']());}};_0x51e495(++_0x4127a9);}(_0x7e78,0xa7));var _0x87e7=function(_0x1bcc0f,_0xc514cd){_0x1bcc0f=_0x1bcc0f-0x0;var _0x41dce1=_0x7e78[_0x1bcc0f];return _0x41dce1;};'use strict';var client=require(_0x87e7('0x0'));var moment=require(_0x87e7('0x1'));exports[_0x87e7('0x2')]=function(_0xa8dc3,_0x26c999){return function(){return client[_0x87e7('0x3')](_0x87e7('0x4'),{'options':{'where':{'VoiceQueueId':_0xa8dc3},'include':[{'model':_0x87e7('0x5'),'as':_0x87e7('0x6')}],'limit':_0x26c999,'raw':![]},'log':_0x87e7('0x7')});};};exports['updateContacts']=function(_0x2e9819,_0x200861,_0x545d43){return function(){return client[_0x87e7('0x3')](_0x87e7('0x8'),{'body':_0x2e9819,'options':{'where':{'VoiceQueueId':_0x200861,'scheduledat':{'$lte':moment()[_0x87e7('0x9')]('YYYY-MM-DD\x20HH:mm:ss')}},'limit':_0x545d43},'log':_0x87e7('0x8')});};};exports[_0x87e7('0xa')]=function(_0x51591e){return function(){return client['Request'](_0x87e7('0x8'),{'body':_0x51591e,'options':{'where':{'ContactId':_0x51591e[_0x87e7('0xb')],'ListId':_0x51591e['ListId'],'VoiceQueueId':_0x51591e[_0x87e7('0xc')],'CampaignId':_0x51591e[_0x87e7('0xd')]}},'log':_0x87e7('0xa')});};};exports[_0x87e7('0xe')]=function(_0xa20e80,_0x1446b0,_0x2f499e){return function(){return client[_0x87e7('0x3')](_0x87e7('0xf'),{'options':{'where':{'VoiceQueueId':_0xa20e80,'ListId':_0x1446b0,'ContactId':_0x2f499e}},'log':_0x87e7('0xf')});};};exports[_0x87e7('0x10')]=function(_0x50f1b6,_0x24c1ba,_0x2db8c1,_0xc5b33b){return function(){return client[_0x87e7('0x3')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x50f1b6,'active':![],'scheduledat':{'$lte':moment()[_0x87e7('0x9')]('YYYY-MM-DD\x20HH:mm:ss')},'$or':[{'UserId':null},{'UserId':{'$in':_0x24c1ba}}]},'order':[[_0x87e7('0x11'),'DESC'],[_0x87e7('0x12'),_0xc5b33b],['id',_0x87e7('0x13')]],'raw':!![],'limit':_0x2db8c1},'log':'GetContactDialer'});};};exports[_0x87e7('0x14')]=function(_0x37ce9e,_0x56125f,_0x329ebd){return function(){return client[_0x87e7('0x3')](_0x87e7('0x15'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x37ce9e,'active':![],'scheduledat':{'$lte':moment()[_0x87e7('0x9')](_0x87e7('0x16'))}},'include':[{'model':_0x87e7('0x5'),'as':'Contact'}],'order':[[_0x87e7('0x11'),_0x87e7('0x17')],[_0x87e7('0x12'),_0x329ebd],['id',_0x87e7('0x13')]],'raw':!![],'limit':_0x56125f},'log':_0x87e7('0x18')});};};exports[_0x87e7('0x19')]=function(_0x8bc803,_0x58c856){return function(){_0x8bc803['campaign']=_0x8bc803[_0x87e7('0x1a')];return client[_0x87e7('0x3')]('MoveContactManagedDialer',{'body':_0x8bc803,'options':{'where':{'ContactId':_0x8bc803['ContactId'],'ListId':_0x8bc803[_0x87e7('0x1b')],'VoiceQueueId':_0x8bc803['VoiceQueueId'],'CampaignId':_0x8bc803[_0x87e7('0xd')],'active':_0x58c856?undefined:!![]}},'log':'MoveContactManagedDialer'});};};exports[_0x87e7('0x1c')]=function(_0x2e5681){return function(){return client[_0x87e7('0x3')]('CountReScheduled',{'options':{'where':{'VoiceQueueId':_0x2e5681['id']?_0x2e5681['id']||null:null}},'log':_0x87e7('0x1c')});};};exports[_0x87e7('0x1d')]=function(_0x324f7b){return function(){return client[_0x87e7('0x3')]('GetCmHopperPreview',{'options':{'where':{'id':_0x324f7b},'include':[{'model':'CmContact','as':'Contact'},{'model':'User','as':_0x87e7('0x1e'),'attributes':['id',_0x87e7('0x1f')]},{'model':_0x87e7('0x20'),'as':_0x87e7('0x21'),'attributes':['id',_0x87e7('0x1f')]}],'raw':!![]},'log':_0x87e7('0x7')});};};exports[_0x87e7('0x22')]=function(_0x58f8cc,_0x3e8ea8,_0x3fa65b){return function(){return client[_0x87e7('0x3')](_0x87e7('0x8'),{'body':_0x58f8cc,'options':{'where':{'id':_0x3e8ea8},'limit':_0x3fa65b},'log':_0x87e7('0x8')});};};exports[_0x87e7('0x23')]=function(_0xa703e,_0x1b3c7f){return function(){return client[_0x87e7('0x3')](_0x87e7('0x24'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0xa703e,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x87e7('0x9')]('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x1b3c7f}},'order':[['priority',_0x87e7('0x17')],[_0x87e7('0x12'),_0x87e7('0x17')],['id',_0x87e7('0x13')]],'include':[{'model':_0x87e7('0x5'),'as':_0x87e7('0x6')},{'model':_0x87e7('0x25'),'as':'Agent','attributes':['id',_0x87e7('0x1f'),_0x87e7('0x26')]}],'group':_0x87e7('0x27'),'raw':!![]},'log':_0x87e7('0x15')});};};exports[_0x87e7('0x28')]=function(_0x32b838){return function(){return client[_0x87e7('0x3')](_0x87e7('0x29'),{'body':_0x32b838,'options':{},'log':_0x87e7('0x29')});};};exports[_0x87e7('0x2a')]=function(_0x33f068,_0x3f3949,_0x2b440c){return function(){return client[_0x87e7('0x3')](_0x87e7('0x2b'),{'body':{'where':{'voiceQueueIds':_0x33f068,'interval':_0x3f3949,'availableAgentsIds':_0x2b440c}},'log':_0x87e7('0x2a')});};};
\ No newline at end of file
+var _0x8fc6=['Contact','DESC','GetContactDialerIvr','moveContactManagedDialer','campaign','queue','countReScheduled','CountReScheduled','GetCmHopperPreview','User','VoiceQueue','Queue','name','unlockContact','getContactRecallMe','GetContactRecallMe','voicePause','db.CmHopper.UserId','resetActiveCalls','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','../client','moment','getContacts','GetCmHopper','CmContact','getCmHopper','updateContacts','Request','UpdateCmHopper','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','DestroyCmHopper','getContactDialer','GetContactDialer','format','priority','scheduledat','ASC','getContactDialerIvr'];(function(_0x4c7935,_0x4a53fb){var _0x30651d=function(_0x12f35f){while(--_0x12f35f){_0x4c7935['push'](_0x4c7935['shift']());}};_0x30651d(++_0x4a53fb);}(_0x8fc6,0x149));var _0x68fc=function(_0x1c1566,_0x36b365){_0x1c1566=_0x1c1566-0x0;var _0x461fae=_0x8fc6[_0x1c1566];return _0x461fae;};'use strict';var client=require(_0x68fc('0x0'));var moment=require(_0x68fc('0x1'));exports[_0x68fc('0x2')]=function(_0x1c296a,_0x5950f6){return function(){return client['Request'](_0x68fc('0x3'),{'options':{'where':{'VoiceQueueId':_0x1c296a},'include':[{'model':_0x68fc('0x4'),'as':'Contact'}],'limit':_0x5950f6,'raw':![]},'log':_0x68fc('0x5')});};};exports[_0x68fc('0x6')]=function(_0x338bda,_0x5d3b1f,_0x5afa51){return function(){return client[_0x68fc('0x7')](_0x68fc('0x8'),{'body':_0x338bda,'options':{'where':{'VoiceQueueId':_0x5d3b1f,'scheduledat':{'$lte':moment()['format'](_0x68fc('0x9'))}},'limit':_0x5afa51},'log':_0x68fc('0x8')});};};exports[_0x68fc('0xa')]=function(_0x21e149){return function(){return client[_0x68fc('0x7')](_0x68fc('0x8'),{'body':_0x21e149,'options':{'where':{'ContactId':_0x21e149[_0x68fc('0xb')],'ListId':_0x21e149[_0x68fc('0xc')],'VoiceQueueId':_0x21e149[_0x68fc('0xd')],'CampaignId':_0x21e149[_0x68fc('0xe')]}},'log':_0x68fc('0xa')});};};exports['destroyContact']=function(_0x34efcc,_0x37e7af,_0x24c3af){return function(){return client[_0x68fc('0x7')](_0x68fc('0xf'),{'options':{'where':{'VoiceQueueId':_0x34efcc,'ListId':_0x37e7af,'ContactId':_0x24c3af}},'log':_0x68fc('0xf')});};};exports[_0x68fc('0x10')]=function(_0x416114,_0x6eb0a,_0x5b5aba,_0x33cdf4){return function(){return client[_0x68fc('0x7')](_0x68fc('0x11'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x416114,'active':![],'scheduledat':{'$lte':moment()[_0x68fc('0x12')](_0x68fc('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x6eb0a}}]},'order':[[_0x68fc('0x13'),'DESC'],[_0x68fc('0x14'),_0x33cdf4],['id',_0x68fc('0x15')]],'raw':!![],'limit':_0x5b5aba},'log':_0x68fc('0x11')});};};exports[_0x68fc('0x16')]=function(_0x42d192,_0x359e7b,_0x3f455f){return function(){return client[_0x68fc('0x7')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x42d192,'active':![],'scheduledat':{'$lte':moment()[_0x68fc('0x12')](_0x68fc('0x9'))}},'include':[{'model':'CmContact','as':_0x68fc('0x17')}],'order':[['priority',_0x68fc('0x18')],[_0x68fc('0x14'),_0x3f455f],['id','ASC']],'raw':!![],'limit':_0x359e7b},'log':_0x68fc('0x19')});};};exports[_0x68fc('0x1a')]=function(_0x3dbf66,_0x11852d){return function(){_0x3dbf66[_0x68fc('0x1b')]=_0x3dbf66[_0x68fc('0x1c')];return client[_0x68fc('0x7')]('MoveContactManagedDialer',{'body':_0x3dbf66,'options':{'where':{'ContactId':_0x3dbf66[_0x68fc('0xb')],'ListId':_0x3dbf66['ListId'],'VoiceQueueId':_0x3dbf66[_0x68fc('0xd')],'CampaignId':_0x3dbf66[_0x68fc('0xe')],'active':_0x11852d?undefined:!![]}},'log':'MoveContactManagedDialer'});};};exports[_0x68fc('0x1d')]=function(_0x4dbc38){return function(){return client[_0x68fc('0x7')](_0x68fc('0x1e'),{'options':{'where':{'VoiceQueueId':_0x4dbc38['id']?_0x4dbc38['id']||null:null}},'log':_0x68fc('0x1d')});};};exports['getContactPreview']=function(_0x1b13a2){return function(){return client[_0x68fc('0x7')](_0x68fc('0x1f'),{'options':{'where':{'id':_0x1b13a2},'include':[{'model':_0x68fc('0x4'),'as':_0x68fc('0x17')},{'model':_0x68fc('0x20'),'as':'Agent','attributes':['id','name']},{'model':_0x68fc('0x21'),'as':_0x68fc('0x22'),'attributes':['id',_0x68fc('0x23')]}],'raw':!![]},'log':_0x68fc('0x5')});};};exports[_0x68fc('0x24')]=function(_0x360b46,_0x319824,_0x2e7d24){return function(){return client[_0x68fc('0x7')](_0x68fc('0x8'),{'body':_0x360b46,'options':{'where':{'id':_0x319824},'limit':_0x2e7d24},'log':_0x68fc('0x8')});};};exports[_0x68fc('0x25')]=function(_0x14c1ac,_0x59dda7){return function(){return client[_0x68fc('0x7')](_0x68fc('0x26'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x14c1ac,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x68fc('0x12')](_0x68fc('0x9'))},'UserId':{'$in':_0x59dda7}},'order':[['priority',_0x68fc('0x18')],['scheduledat',_0x68fc('0x18')],['id','ASC']],'include':[{'model':'CmContact','as':'Contact'},{'model':_0x68fc('0x20'),'as':'Agent','attributes':['id',_0x68fc('0x23'),_0x68fc('0x27')]}],'group':_0x68fc('0x28'),'raw':!![]},'log':_0x68fc('0x11')});};};exports[_0x68fc('0x29')]=function(_0x306c18){return function(){return client[_0x68fc('0x7')](_0x68fc('0x2a'),{'body':_0x306c18,'options':{},'log':'ResetActiveCalls'});};};exports['handlePreviewRecallNotifications']=function(_0x3986f7,_0x51b383,_0xf60de0){return function(){return client[_0x68fc('0x7')](_0x68fc('0x2b'),{'body':{'where':{'voiceQueueIds':_0x3986f7,'interval':_0x51b383,'availableAgentsIds':_0xf60de0}},'log':'handlePreviewRecallNotifications'});};};
\ No newline at end of file
index dd51e7f..ba5b73f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x697e=['IncrementPreviewCounters','moment','verifyAdditionalPhones','Request','VerifyAdditionalPhones','swapAdditionalPhones','SwapAdditionalPhones','incrementPreviewCounters'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0x697e,0x139));var _0xe697=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x697e[_0x321bb2];return _0x9c12ed;};'use strict';var client=require('../client');var moment=require(_0xe697('0x0'));exports[_0xe697('0x1')]=function(_0x3312a3,_0x438d62,_0x73abbb){return function(){return client[_0xe697('0x2')](_0xe697('0x3'),{'body':_0x3312a3,'reason':_0x438d62,'entity':_0x73abbb,'log':'VerifyAdditionalPhones'});};};exports[_0xe697('0x4')]=function(_0x268620,_0x425464,_0x41862a){return function(){return client['Request'](_0xe697('0x5'),{'body':_0x268620,'duration':_0x425464,'waitTime':_0x41862a,'log':'SwapAdditionalPhones'});};};exports[_0xe697('0x6')]=function(_0xd72126){return function(){return client['Request']('IncrementPreviewCounters',{'body':_0xd72126,'log':_0xe697('0x7')});};};
\ No newline at end of file
+var _0xd3fa=['../client','moment','verifyAdditionalPhones','Request','VerifyAdditionalPhones','SwapAdditionalPhones','incrementPreviewCounters','IncrementPreviewCounters'];(function(_0x2cb04c,_0x5b1379){var _0x5059a9=function(_0x1a2ca7){while(--_0x1a2ca7){_0x2cb04c['push'](_0x2cb04c['shift']());}};_0x5059a9(++_0x5b1379);}(_0xd3fa,0x138));var _0xad3f=function(_0x4cbb68,_0x4aa931){_0x4cbb68=_0x4cbb68-0x0;var _0x4ddf30=_0xd3fa[_0x4cbb68];return _0x4ddf30;};'use strict';var client=require(_0xad3f('0x0'));var moment=require(_0xad3f('0x1'));exports[_0xad3f('0x2')]=function(_0x34d179,_0x10253b,_0x383b11){return function(){return client[_0xad3f('0x3')]('VerifyAdditionalPhones',{'body':_0x34d179,'reason':_0x10253b,'entity':_0x383b11,'log':_0xad3f('0x4')});};};exports['swapAdditionalPhones']=function(_0x313229,_0x21c8e1,_0x5fbfb8){return function(){return client[_0xad3f('0x3')]('SwapAdditionalPhones',{'body':_0x313229,'duration':_0x21c8e1,'waitTime':_0x5fbfb8,'log':_0xad3f('0x5')});};};exports[_0xad3f('0x6')]=function(_0x55ad4d){return function(){return client['Request'](_0xad3f('0x7'),{'body':_0x55ad4d,'log':_0xad3f('0x7')});};};
\ No newline at end of file
index a204e87..cc2ae6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ada=['checkIsBlackList','Request','GetCmHopperBlack','phone','checkIsBlackListIvr','CampaignId','GetCmHopperBlackIvr','../client'];(function(_0x5bcfe9,_0xb03c9c){var _0x4f2ac9=function(_0x553da8){while(--_0x553da8){_0x5bcfe9['push'](_0x5bcfe9['shift']());}};_0x4f2ac9(++_0xb03c9c);}(_0x5ada,0x137));var _0xa5ad=function(_0x5eaa8a,_0x396d27){_0x5eaa8a=_0x5eaa8a-0x0;var _0x558bc8=_0x5ada[_0x5eaa8a];return _0x558bc8;};'use strict';var client=require(_0xa5ad('0x0'));exports[_0xa5ad('0x1')]=function(_0x1076ae){return function(){return client[_0xa5ad('0x2')](_0xa5ad('0x3'),{'options':{'where':{'VoiceQueueId':_0x1076ae['VoiceQueueId'],'phone':_0x1076ae[_0xa5ad('0x4')]},'raw':![]},'log':_0xa5ad('0x3')});};};exports[_0xa5ad('0x5')]=function(_0x5c5ddb){return function(){return client[_0xa5ad('0x2')](_0xa5ad('0x3'),{'options':{'where':{'CampaignId':_0x5c5ddb[_0xa5ad('0x6')],'phone':_0x5c5ddb[_0xa5ad('0x4')]},'raw':![]},'log':_0xa5ad('0x7')});};};
\ No newline at end of file
+var _0xb56a=['GetCmHopperBlack','VoiceQueueId','phone','CampaignId','../client','checkIsBlackList'];(function(_0x42c6f1,_0x338d7b){var _0x3c7398=function(_0x151494){while(--_0x151494){_0x42c6f1['push'](_0x42c6f1['shift']());}};_0x3c7398(++_0x338d7b);}(_0xb56a,0x18a));var _0xab56=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0xb56a[_0x2070da];return _0x4f9fe1;};'use strict';var client=require(_0xab56('0x0'));exports[_0xab56('0x1')]=function(_0x4b86de){return function(){return client['Request'](_0xab56('0x2'),{'options':{'where':{'VoiceQueueId':_0x4b86de[_0xab56('0x3')],'phone':_0x4b86de[_0xab56('0x4')]},'raw':![]},'log':_0xab56('0x2')});};};exports['checkIsBlackListIvr']=function(_0x4e7de6){return function(){return client['Request'](_0xab56('0x2'),{'options':{'where':{'CampaignId':_0x4e7de6[_0xab56('0x5')],'phone':_0x4e7de6[_0xab56('0x4')]},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
index 5f5d5df..67dc2f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5918=['campaign','Request','CreateCmHopperFinal','../client','createContact'];(function(_0x259089,_0x286f85){var _0x505de2=function(_0x28c909){while(--_0x28c909){_0x259089['push'](_0x259089['shift']());}};_0x505de2(++_0x286f85);}(_0x5918,0x1c0));var _0x8591=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x5918[_0x321bb2];return _0x9c12ed;};'use strict';var client=require(_0x8591('0x0'));exports[_0x8591('0x1')]=function(_0x75b679){return function(){_0x75b679[_0x8591('0x2')]=_0x75b679['queue'];return client[_0x8591('0x3')](_0x8591('0x4'),{'body':_0x75b679,'log':_0x8591('0x4')});};};
\ No newline at end of file
+var _0x6b88=['Request','CreateCmHopperFinal','createContact','campaign','queue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6b88,0xa7));var _0x86b8=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0x6b88[_0x37c22c];return _0x119d79;};'use strict';var client=require('../client');exports[_0x86b8('0x0')]=function(_0x795a8){return function(){_0x795a8[_0x86b8('0x1')]=_0x795a8[_0x86b8('0x2')];return client[_0x86b8('0x3')](_0x86b8('0x4'),{'body':_0x795a8,'log':_0x86b8('0x4')});};};
\ No newline at end of file
index 5eb2aff..31e7330 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14cc=['GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','endOf','getCampaignHopperHistory','createHistory','campaign','queue','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x22f3ef,_0x508a28){var _0x503074=function(_0x47a7e1){while(--_0x47a7e1){_0x22f3ef['push'](_0x22f3ef['shift']());}};_0x503074(++_0x508a28);}(_0x14cc,0x115));var _0xc14c=function(_0x13ce0c,_0x3f2a0d){_0x13ce0c=_0x13ce0c-0x0;var _0x4388fb=_0x14cc[_0x13ce0c];return _0x4388fb;};'use strict';var client=require('../client');var moment=require('moment');exports[_0xc14c('0x0')]=function(_0xbfcdaf){return function(){_0xbfcdaf[_0xc14c('0x1')]=_0xbfcdaf[_0xc14c('0x2')];return client[_0xc14c('0x3')](_0xc14c('0x4'),{'body':_0xbfcdaf,'log':_0xc14c('0x4')});};};exports[_0xc14c('0x5')]=function(_0x37e3a5){return function(){return client[_0xc14c('0x3')](_0xc14c('0x6'),{'options':{'where':{'endtime':{'$between':[moment()[_0xc14c('0x7')](_0x37e3a5,_0xc14c('0x8'))[_0xc14c('0x9')](_0xc14c('0xa')),moment()[_0xc14c('0x9')](_0xc14c('0xa'))]}},'raw':![]},'log':_0xc14c('0xb')});};};exports[_0xc14c('0xc')]=function(_0x119617){return function(){return client[_0xc14c('0x3')](_0xc14c('0xd'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xc14c('0xe')](_0xc14c('0xf'))[_0xc14c('0x9')](_0xc14c('0xa')),moment()[_0xc14c('0x10')](_0xc14c('0xf'))['format']('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0xc14c('0x2')},'raw':![]},'log':_0xc14c('0xd')});};};exports[_0xc14c('0x11')]=function(_0x25441d){return function(){return client[_0xc14c('0x3')]('GetCampaignHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0xc14c('0xe')]('day')['format'](_0xc14c('0xa')),moment()[_0xc14c('0x10')](_0xc14c('0xf'))[_0xc14c('0x9')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':'ivr'},'raw':![]},'log':'GetCampaignHopperHistory'});};};
\ No newline at end of file
+var _0x468d=['CreateCmHopperHistory','AvgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','endOf','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','../client','moment','campaign','queue','Request'];(function(_0x3e0dc4,_0x13971b){var _0x586111=function(_0x123c53){while(--_0x123c53){_0x3e0dc4['push'](_0x3e0dc4['shift']());}};_0x586111(++_0x13971b);}(_0x468d,0x1d6));var _0xd468=function(_0x10159a,_0x2d87de){_0x10159a=_0x10159a-0x0;var _0x537597=_0x468d[_0x10159a];return _0x537597;};'use strict';var client=require(_0xd468('0x0'));var moment=require(_0xd468('0x1'));exports['createHistory']=function(_0x49b881){return function(){_0x49b881[_0xd468('0x2')]=_0x49b881[_0xd468('0x3')];return client[_0xd468('0x4')](_0xd468('0x5'),{'body':_0x49b881,'log':_0xd468('0x5')});};};exports['avgHandleTime']=function(_0x2a9fcb){return function(){return client[_0xd468('0x4')](_0xd468('0x6'),{'options':{'where':{'endtime':{'$between':[moment()[_0xd468('0x7')](_0x2a9fcb,_0xd468('0x8'))[_0xd468('0x9')](_0xd468('0xa')),moment()[_0xd468('0x9')](_0xd468('0xa'))]}},'raw':![]},'log':'GetCmHopperHistory'});};};exports[_0xd468('0xb')]=function(_0x48b74b){return function(){return client[_0xd468('0x4')](_0xd468('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xd468('0xd')](_0xd468('0xe'))[_0xd468('0x9')](_0xd468('0xa')),moment()[_0xd468('0xf')](_0xd468('0xe'))['format'](_0xd468('0xa'))]},'campaigntype':_0xd468('0x3')},'raw':![]},'log':_0xd468('0xc')});};};exports[_0xd468('0x10')]=function(_0x2e74c6){return function(){return client['Request'](_0xd468('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0xd468('0xe'))[_0xd468('0x9')](_0xd468('0xa')),moment()[_0xd468('0xf')]('day')[_0xd468('0x9')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0xd468('0x12')},'raw':![]},'log':_0xd468('0x11')});};};
\ No newline at end of file
index 0b605b7..91a52f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6302=['gateway','faxdetect','t38timeout','tech','TrunkId','ListId','Trunk','active','notify','NotifyFaxAccount','getFaxAccounts','Request','GetFaxAccount','name','headerinfo','maxrate','modem'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x6302,0x109));var _0x2630=function(_0x209699,_0x18e361){_0x209699=_0x209699-0x0;var _0x51b8fe=_0x6302[_0x209699];return _0x51b8fe;};'use strict';var client=require('../client');exports[_0x2630('0x0')]=function(){return function(){return client[_0x2630('0x1')](_0x2630('0x2'),{'options':{'raw':![],'attributes':['id',_0x2630('0x3'),'description','ecm',_0x2630('0x4'),'localstationid','minrate',_0x2630('0x5'),_0x2630('0x6'),_0x2630('0x7'),_0x2630('0x8'),_0x2630('0x9'),_0x2630('0xa'),_0x2630('0xb'),_0x2630('0xc'),'key'],'include':[{'model':'Trunk','as':_0x2630('0xd'),'attributes':['id',_0x2630('0x3'),'callerid',_0x2630('0xe')]}]},'log':'getFaxAccount'});};};exports[_0x2630('0xf')]=function(_0x569a0c,_0x2b1c23){return client[_0x2630('0x1')](_0x2630('0x10'),{'account':{'id':_0x569a0c},'body':_0x2b1c23,'log':_0x2630('0x10')});};
\ No newline at end of file
+var _0x4b17=['NotifyFaxAccount','../client','Request','name','description','headerinfo','maxrate','modem','gateway','faxdetect','t38timeout','tech','TrunkId','key','Trunk','callerid','getFaxAccount','notify'];(function(_0x1f0724,_0x3a58bf){var _0x253ffb=function(_0x3b4c72){while(--_0x3b4c72){_0x1f0724['push'](_0x1f0724['shift']());}};_0x253ffb(++_0x3a58bf);}(_0x4b17,0x10f));var _0x74b1=function(_0x265aa2,_0x220072){_0x265aa2=_0x265aa2-0x0;var _0x447a3a=_0x4b17[_0x265aa2];return _0x447a3a;};'use strict';var client=require(_0x74b1('0x0'));exports['getFaxAccounts']=function(){return function(){return client[_0x74b1('0x1')]('GetFaxAccount',{'options':{'raw':![],'attributes':['id',_0x74b1('0x2'),_0x74b1('0x3'),'ecm',_0x74b1('0x4'),'localstationid','minrate',_0x74b1('0x5'),_0x74b1('0x6'),_0x74b1('0x7'),_0x74b1('0x8'),_0x74b1('0x9'),_0x74b1('0xa'),_0x74b1('0xb'),'ListId',_0x74b1('0xc')],'include':[{'model':_0x74b1('0xd'),'as':_0x74b1('0xd'),'attributes':['id',_0x74b1('0x2'),_0x74b1('0xe'),'active']}]},'log':_0x74b1('0xf')});};};exports[_0x74b1('0x10')]=function(_0x57f3ad,_0x1214d1){return client[_0x74b1('0x1')](_0x74b1('0x11'),{'account':{'id':_0x57f3ad},'body':_0x1214d1,'log':_0x74b1('0x11')});};
\ No newline at end of file
index 6009dab..7b1fd68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1ef=['Request','UpdateFaxMessage','../client','update'];(function(_0x131d32,_0x5c662a){var _0x456aba=function(_0x416bec){while(--_0x416bec){_0x131d32['push'](_0x131d32['shift']());}};_0x456aba(++_0x5c662a);}(_0xf1ef,0x166));var _0xff1e=function(_0x1d93d2,_0x2298d4){_0x1d93d2=_0x1d93d2-0x0;var _0x8769f9=_0xf1ef[_0x1d93d2];return _0x8769f9;};'use strict';var client=require(_0xff1e('0x0'));exports[_0xff1e('0x1')]=function(_0x2da2ca,_0x14d585){return client[_0xff1e('0x2')](_0xff1e('0x3'),{'body':_0x14d585,'options':{'where':{'AttachmentId':_0x2da2ca}},'log':_0xff1e('0x3')});};
\ No newline at end of file
+var _0x64ca=['../client','update','Request','UpdateFaxMessage'];(function(_0x36c22b,_0x31ceab){var _0x1de11b=function(_0x2fe269){while(--_0x2fe269){_0x36c22b['push'](_0x36c22b['shift']());}};_0x1de11b(++_0x31ceab);}(_0x64ca,0xcc));var _0xa64c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x64ca[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0xa64c('0x0'));exports[_0xa64c('0x1')]=function(_0x222c69,_0x5d5927){return client[_0xa64c('0x2')](_0xa64c('0x3'),{'body':_0x5d5927,'options':{'where':{'AttachmentId':_0x222c69}},'log':_0xa64c('0x3')});};
\ No newline at end of file
index 3709652..bfccaa6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeeaa=['Descriptions','key','keyType','Fields','nameField','customField','../../client','getDeskAccounts','Request','GetDeskAccount','name','username','password','remoteUri','authType','type','serverUrl','DeskConfiguration','Configurations','DeskField','Subjects','content','variableName','Variable'];(function(_0x4d237c,_0x445600){var _0x44f5b4=function(_0x54a342){while(--_0x54a342){_0x4d237c['push'](_0x4d237c['shift']());}};_0x44f5b4(++_0x445600);}(_0xeeaa,0x66));var _0xaeea=function(_0x127f13,_0x212907){_0x127f13=_0x127f13-0x0;var _0x4eb412=_0xeeaa[_0x127f13];return _0x4eb412;};'use strict';var client=require(_0xaeea('0x0'));exports[_0xaeea('0x1')]=function(){return function(_0x5faec){return client[_0xaeea('0x2')](_0xaeea('0x3'),{'options':{'raw':![],'attributes':['id',_0xaeea('0x4'),'description',_0xaeea('0x5'),_0xaeea('0x6'),_0xaeea('0x7'),_0xaeea('0x8'),_0xaeea('0x9'),_0xaeea('0xa')],'include':[{'model':_0xaeea('0xb'),'as':_0xaeea('0xc'),'attributes':['id',_0xaeea('0x4')],'include':[{'model':_0xaeea('0xd'),'as':_0xaeea('0xe'),'attributes':['id',_0xaeea('0x9'),_0xaeea('0xf'),_0xaeea('0x10')],'include':[{'model':_0xaeea('0x11'),'as':'Variable','attributes':['id',_0xaeea('0x4')]}]},{'model':'DeskField','as':_0xaeea('0x12'),'attributes':['id',_0xaeea('0x9'),_0xaeea('0xf'),_0xaeea('0x13'),_0xaeea('0x14'),'keyContent','variableName'],'include':[{'model':_0xaeea('0x11'),'as':_0xaeea('0x11'),'attributes':['id',_0xaeea('0x4')]}]},{'model':_0xaeea('0xd'),'as':_0xaeea('0x15'),'attributes':['id',_0xaeea('0x9'),'content','idField',_0xaeea('0x16'),_0xaeea('0x17'),_0xaeea('0x10')],'include':[{'model':_0xaeea('0x11'),'as':_0xaeea('0x11'),'attributes':['id',_0xaeea('0x4')]}]},{'model':'Tag','as':'Tags','attributes':['id','name']}]}]},'log':_0xaeea('0x3')});};};
\ No newline at end of file
+var _0x332a=['getDeskAccounts','GetDeskAccount','name','description','username','password','authType','type','DeskConfiguration','DeskField','Subjects','variableName','Variable','Descriptions','content','key','keyType','keyContent','Fields','idField','nameField','customField','Tag','Tags','../../client'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x332a,0x1f3));var _0xa332=function(_0x1af322,_0x16d095){_0x1af322=_0x1af322-0x0;var _0x28ac48=_0x332a[_0x1af322];return _0x28ac48;};'use strict';var client=require(_0xa332('0x0'));exports[_0xa332('0x1')]=function(){return function(_0x491b3b){return client['Request'](_0xa332('0x2'),{'options':{'raw':![],'attributes':['id',_0xa332('0x3'),_0xa332('0x4'),_0xa332('0x5'),_0xa332('0x6'),'remoteUri',_0xa332('0x7'),_0xa332('0x8'),'serverUrl'],'include':[{'model':_0xa332('0x9'),'as':'Configurations','attributes':['id',_0xa332('0x3')],'include':[{'model':_0xa332('0xa'),'as':_0xa332('0xb'),'attributes':['id',_0xa332('0x8'),'content',_0xa332('0xc')],'include':[{'model':_0xa332('0xd'),'as':_0xa332('0xd'),'attributes':['id',_0xa332('0x3')]}]},{'model':'DeskField','as':_0xa332('0xe'),'attributes':['id',_0xa332('0x8'),_0xa332('0xf'),_0xa332('0x10'),_0xa332('0x11'),_0xa332('0x12'),_0xa332('0xc')],'include':[{'model':_0xa332('0xd'),'as':_0xa332('0xd'),'attributes':['id',_0xa332('0x3')]}]},{'model':_0xa332('0xa'),'as':_0xa332('0x13'),'attributes':['id',_0xa332('0x8'),_0xa332('0xf'),_0xa332('0x14'),_0xa332('0x15'),_0xa332('0x16'),_0xa332('0xc')],'include':[{'model':_0xa332('0xd'),'as':_0xa332('0xd'),'attributes':['id',_0xa332('0x3')]}]},{'model':_0xa332('0x17'),'as':_0xa332('0x18'),'attributes':['id',_0xa332('0x3')]}]}]},'log':_0xa332('0x2')});};};
\ No newline at end of file
index 01b6c34..3d96350 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b9e=['remoteUri','tenantId','clientId','clientSecret','Configurations','moduleCreate','Dynamics365Field','type','content','variableName','Variable','Descriptions','keyContent','Fields','idField','nameField','customField','CloudProvider','data2','data5','data7','GetDynamics365Account','../../client','getDynamics365Accounts','name','username'];(function(_0x50d23b,_0x170ef9){var _0xb2a733=function(_0x11b08b){while(--_0x11b08b){_0x50d23b['push'](_0x50d23b['shift']());}};_0xb2a733(++_0x170ef9);}(_0x9b9e,0xb2));var _0xe9b9=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x9b9e[_0x46698a];return _0x356db0;};'use strict';var client=require(_0xe9b9('0x0'));exports[_0xe9b9('0x1')]=function(){return function(_0x108308){return client['Request']('GetDynamics365Account',{'options':{'raw':![],'attributes':['id',_0xe9b9('0x2'),_0xe9b9('0x3'),'password',_0xe9b9('0x4'),_0xe9b9('0x5'),_0xe9b9('0x6'),_0xe9b9('0x7'),'serverUrl','description','modernAuthentication'],'include':[{'model':'Dynamics365Configuration','as':_0xe9b9('0x8'),'attributes':['id',_0xe9b9('0x2'),'ticketType',_0xe9b9('0x9'),'additionalSearchContact'],'include':[{'model':_0xe9b9('0xa'),'as':'Subjects','attributes':['id',_0xe9b9('0xb'),_0xe9b9('0xc'),_0xe9b9('0xd')],'include':[{'model':_0xe9b9('0xe'),'as':_0xe9b9('0xe'),'attributes':['id',_0xe9b9('0x2')]}]},{'model':'Dynamics365Field','as':_0xe9b9('0xf'),'attributes':['id',_0xe9b9('0xb'),_0xe9b9('0xc'),'key','keyType',_0xe9b9('0x10'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xe9b9('0x2')]}]},{'model':_0xe9b9('0xa'),'as':_0xe9b9('0x11'),'attributes':['id',_0xe9b9('0xb'),'content',_0xe9b9('0x12'),_0xe9b9('0x13'),_0xe9b9('0x14'),_0xe9b9('0xd')],'include':[{'model':_0xe9b9('0xe'),'as':_0xe9b9('0xe'),'attributes':['id',_0xe9b9('0x2')]}]}]},{'model':_0xe9b9('0x15'),'as':_0xe9b9('0x15'),'attributes':['id',_0xe9b9('0x16'),_0xe9b9('0x17'),_0xe9b9('0x18')]}]},'log':_0xe9b9('0x19')});};};
\ No newline at end of file
+var _0x0809=['customField','CloudProvider','data2','data5','GetDynamics365Account','../../client','getDynamics365Accounts','Request','name','password','remoteUri','serverUrl','description','modernAuthentication','Dynamics365Configuration','Configurations','ticketType','moduleCreate','additionalSearchContact','Dynamics365Field','Subjects','type','content','Variable','Descriptions','key','keyContent','variableName','Fields','idField','nameField'];(function(_0x1a26a9,_0x58df2d){var _0x4df7c0=function(_0x5da5ab){while(--_0x5da5ab){_0x1a26a9['push'](_0x1a26a9['shift']());}};_0x4df7c0(++_0x58df2d);}(_0x0809,0x179));var _0x9080=function(_0x3122a7,_0x2a1fd2){_0x3122a7=_0x3122a7-0x0;var _0x5daaa6=_0x0809[_0x3122a7];return _0x5daaa6;};'use strict';var client=require(_0x9080('0x0'));exports[_0x9080('0x1')]=function(){return function(_0x4a2247){return client[_0x9080('0x2')]('GetDynamics365Account',{'options':{'raw':![],'attributes':['id',_0x9080('0x3'),'username',_0x9080('0x4'),_0x9080('0x5'),'tenantId','clientId','clientSecret',_0x9080('0x6'),_0x9080('0x7'),_0x9080('0x8')],'include':[{'model':_0x9080('0x9'),'as':_0x9080('0xa'),'attributes':['id',_0x9080('0x3'),_0x9080('0xb'),_0x9080('0xc'),_0x9080('0xd')],'include':[{'model':_0x9080('0xe'),'as':_0x9080('0xf'),'attributes':['id',_0x9080('0x10'),_0x9080('0x11'),'variableName'],'include':[{'model':'Variable','as':_0x9080('0x12'),'attributes':['id','name']}]},{'model':_0x9080('0xe'),'as':_0x9080('0x13'),'attributes':['id',_0x9080('0x10'),_0x9080('0x11'),_0x9080('0x14'),'keyType',_0x9080('0x15'),_0x9080('0x16')],'include':[{'model':_0x9080('0x12'),'as':_0x9080('0x12'),'attributes':['id',_0x9080('0x3')]}]},{'model':_0x9080('0xe'),'as':_0x9080('0x17'),'attributes':['id',_0x9080('0x10'),'content',_0x9080('0x18'),_0x9080('0x19'),_0x9080('0x1a'),_0x9080('0x16')],'include':[{'model':_0x9080('0x12'),'as':_0x9080('0x12'),'attributes':['id',_0x9080('0x3')]}]}]},{'model':_0x9080('0x1b'),'as':_0x9080('0x1b'),'attributes':['id',_0x9080('0x1c'),_0x9080('0x1d'),'data7']}]},'log':_0x9080('0x1e')});};};
\ No newline at end of file
index 301a9c4..024bf31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9348=['FreshdeskConfiguration','Configurations','name','Tag','Subjects','type','content','FreshdeskField','key','keyType','keyContent','variableName','Variable','Fields','idField','nameField','../../client','getFreshdeskAccounts','Request','GetFreshdeskAccount','username','apiKey','serverUrl'];(function(_0x5b17c1,_0xf29345){var _0x20a39a=function(_0x2b5836){while(--_0x2b5836){_0x5b17c1['push'](_0x5b17c1['shift']());}};_0x20a39a(++_0xf29345);}(_0x9348,0x10d));var _0x8934=function(_0x161ec6,_0x580285){_0x161ec6=_0x161ec6-0x0;var _0x477176=_0x9348[_0x161ec6];return _0x477176;};'use strict';var client=require(_0x8934('0x0'));exports[_0x8934('0x1')]=function(){return function(_0x472223){return client[_0x8934('0x2')](_0x8934('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x8934('0x4'),_0x8934('0x5'),'remoteUri',_0x8934('0x6')],'include':[{'model':_0x8934('0x7'),'as':_0x8934('0x8'),'attributes':['id',_0x8934('0x9')],'include':[{'model':_0x8934('0xa'),'attributes':['id',_0x8934('0x9')]},{'model':'FreshdeskField','as':_0x8934('0xb'),'attributes':['id',_0x8934('0xc'),_0x8934('0xd'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':_0x8934('0xe'),'as':'Descriptions','attributes':['id',_0x8934('0xc'),_0x8934('0xd'),_0x8934('0xf'),_0x8934('0x10'),_0x8934('0x11'),_0x8934('0x12')],'include':[{'model':_0x8934('0x13'),'as':_0x8934('0x13'),'attributes':['id','name']}]},{'model':_0x8934('0xe'),'as':_0x8934('0x14'),'attributes':['id',_0x8934('0xc'),_0x8934('0xd'),_0x8934('0x15'),_0x8934('0x16'),'customField',_0x8934('0x12')],'include':[{'model':_0x8934('0x13'),'as':_0x8934('0x13'),'attributes':['id',_0x8934('0x9')]}]}]}]},'log':_0x8934('0x3')});};};
\ No newline at end of file
+var _0x7d98=['../../client','Request','GetFreshdeskAccount','name','apiKey','remoteUri','FreshdeskConfiguration','FreshdeskField','Subjects','content','variableName','Variable','Descriptions','type','key','keyType','keyContent','Fields','idField','nameField','customField'];(function(_0x2a3e5f,_0x24c745){var _0xfdbebc=function(_0x1c1bd2){while(--_0x1c1bd2){_0x2a3e5f['push'](_0x2a3e5f['shift']());}};_0xfdbebc(++_0x24c745);}(_0x7d98,0xe7));var _0x87d9=function(_0x50a0c2,_0x4befab){_0x50a0c2=_0x50a0c2-0x0;var _0x5ebadd=_0x7d98[_0x50a0c2];return _0x5ebadd;};'use strict';var client=require(_0x87d9('0x0'));exports['getFreshdeskAccounts']=function(){return function(_0x450298){return client[_0x87d9('0x1')](_0x87d9('0x2'),{'options':{'raw':![],'attributes':['id',_0x87d9('0x3'),'username',_0x87d9('0x4'),_0x87d9('0x5'),'serverUrl'],'include':[{'model':_0x87d9('0x6'),'as':'Configurations','attributes':['id','name'],'include':[{'model':'Tag','attributes':['id',_0x87d9('0x3')]},{'model':_0x87d9('0x7'),'as':_0x87d9('0x8'),'attributes':['id','type',_0x87d9('0x9'),_0x87d9('0xa')],'include':[{'model':_0x87d9('0xb'),'as':'Variable','attributes':['id',_0x87d9('0x3')]}]},{'model':_0x87d9('0x7'),'as':_0x87d9('0xc'),'attributes':['id',_0x87d9('0xd'),_0x87d9('0x9'),_0x87d9('0xe'),_0x87d9('0xf'),_0x87d9('0x10'),_0x87d9('0xa')],'include':[{'model':_0x87d9('0xb'),'as':_0x87d9('0xb'),'attributes':['id',_0x87d9('0x3')]}]},{'model':_0x87d9('0x7'),'as':_0x87d9('0x11'),'attributes':['id',_0x87d9('0xd'),_0x87d9('0x9'),_0x87d9('0x12'),_0x87d9('0x13'),_0x87d9('0x14'),_0x87d9('0xa')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x87d9('0x3')]}]}]}]},'log':_0x87d9('0x2')});};};
\ No newline at end of file
index 9483e63..65a2975 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e24=['getFreshsalesAccounts','Request','GetFreshsalesAccount','username','apiKey','serverUrl','FreshsalesConfiguration','Configurations','name','FreshsalesField','Subjects','type','variableName','Variable','content','keyType','GetFreshsalesccount','../../client'];(function(_0x3b76f7,_0x566c53){var _0x43984e=function(_0x164f77){while(--_0x164f77){_0x3b76f7['push'](_0x3b76f7['shift']());}};_0x43984e(++_0x566c53);}(_0x3e24,0x167));var _0x43e2=function(_0x2d8bec,_0x25b304){_0x2d8bec=_0x2d8bec-0x0;var _0x3cc608=_0x3e24[_0x2d8bec];return _0x3cc608;};'use strict';var client=require(_0x43e2('0x0'));exports[_0x43e2('0x1')]=function(){return function(_0x760b07){return client[_0x43e2('0x2')](_0x43e2('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x43e2('0x4'),_0x43e2('0x5'),'remoteUri',_0x43e2('0x6')],'include':[{'model':_0x43e2('0x7'),'as':_0x43e2('0x8'),'attributes':['id',_0x43e2('0x9')],'include':[{'model':_0x43e2('0xa'),'as':_0x43e2('0xb'),'attributes':['id',_0x43e2('0xc'),'content',_0x43e2('0xd')],'include':[{'model':_0x43e2('0xe'),'as':'Variable','attributes':['id',_0x43e2('0x9')]}]},{'model':_0x43e2('0xa'),'as':'Descriptions','attributes':['id',_0x43e2('0xc'),_0x43e2('0xf'),'key',_0x43e2('0x10'),'keyContent','variableName'],'include':[{'model':'Variable','as':_0x43e2('0xe'),'attributes':['id',_0x43e2('0x9')]}]}]}]},'log':_0x43e2('0x11')});};};
\ No newline at end of file
+var _0xc492=['variableName','Variable','Descriptions','keyContent','GetFreshsalesccount','../../client','getFreshsalesAccounts','name','remoteUri','serverUrl','Configurations','FreshsalesField','Subjects','content'];(function(_0x42f009,_0x5e27b1){var _0x22a1e0=function(_0x297993){while(--_0x297993){_0x42f009['push'](_0x42f009['shift']());}};_0x22a1e0(++_0x5e27b1);}(_0xc492,0xd7));var _0x2c49=function(_0x2f115d,_0x29103e){_0x2f115d=_0x2f115d-0x0;var _0x5e4eb7=_0xc492[_0x2f115d];return _0x5e4eb7;};'use strict';var client=require(_0x2c49('0x0'));exports[_0x2c49('0x1')]=function(){return function(_0x221799){return client['Request']('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id',_0x2c49('0x2'),'username','apiKey',_0x2c49('0x3'),_0x2c49('0x4')],'include':[{'model':'FreshsalesConfiguration','as':_0x2c49('0x5'),'attributes':['id','name'],'include':[{'model':_0x2c49('0x6'),'as':_0x2c49('0x7'),'attributes':['id','type',_0x2c49('0x8'),_0x2c49('0x9')],'include':[{'model':_0x2c49('0xa'),'as':_0x2c49('0xa'),'attributes':['id',_0x2c49('0x2')]}]},{'model':'FreshsalesField','as':_0x2c49('0xb'),'attributes':['id','type','content','key','keyType',_0x2c49('0xc'),'variableName'],'include':[{'model':_0x2c49('0xa'),'as':_0x2c49('0xa'),'attributes':['id','name']}]}]}]},'log':_0x2c49('0xd')});};};
\ No newline at end of file
index 2ada3ab..d76b82f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1ef=['Descriptions','GetSalesforceAccount','../../client','Request','name','password','remoteUri','clientSecret','serverUrl','Configurations','moduleSearch','ticketType','leadId','additionalSearchAccount','additionalSearchLead','Subjects','Variable','SalesforceField'];(function(_0x351dd4,_0x3646f2){var _0x2fd99b=function(_0x4a172d){while(--_0x4a172d){_0x351dd4['push'](_0x351dd4['shift']());}};_0x2fd99b(++_0x3646f2);}(_0xb1ef,0x146));var _0xfb1e=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xb1ef[_0x321bb2];return _0x9c12ed;};'use strict';var client=require(_0xfb1e('0x0'));exports['getSalesforceAccounts']=function(){return function(_0x53a58c){return client[_0xfb1e('0x1')]('GetSalesforceAccount',{'options':{'raw':![],'attributes':['id',_0xfb1e('0x2'),'username',_0xfb1e('0x3'),_0xfb1e('0x4'),'clientId',_0xfb1e('0x5'),'securityToken',_0xfb1e('0x6'),'type'],'include':[{'model':'SalesforceConfiguration','as':_0xfb1e('0x7'),'attributes':['id',_0xfb1e('0x2'),_0xfb1e('0x8'),'moduleCreate',_0xfb1e('0x9'),_0xfb1e('0xa'),_0xfb1e('0xb'),'additionalSearchContact',_0xfb1e('0xc')],'include':[{'model':'SalesforceField','as':_0xfb1e('0xd'),'include':[{'model':_0xfb1e('0xe'),'as':'Variable','attributes':['id',_0xfb1e('0x2')]}]},{'model':_0xfb1e('0xf'),'as':_0xfb1e('0x10'),'include':[{'model':_0xfb1e('0xe'),'as':_0xfb1e('0xe'),'attributes':['id',_0xfb1e('0x2')]}]},{'model':_0xfb1e('0xf'),'as':'Fields','include':[{'model':_0xfb1e('0xe'),'as':_0xfb1e('0xe'),'attributes':['id',_0xfb1e('0x2')]}]}]}]},'log':_0xfb1e('0x11')});};};
\ No newline at end of file
+var _0x8374=['type','Configurations','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead','SalesforceField','Subjects','Variable','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','name','username','password','remoteUri','clientId','clientSecret','securityToken','serverUrl'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0x8374,0x174));var _0x4837=function(_0x4923c1,_0x17118c){_0x4923c1=_0x4923c1-0x0;var _0x5de54e=_0x8374[_0x4923c1];return _0x5de54e;};'use strict';var client=require(_0x4837('0x0'));exports[_0x4837('0x1')]=function(){return function(_0x1c7bfd){return client[_0x4837('0x2')](_0x4837('0x3'),{'options':{'raw':![],'attributes':['id',_0x4837('0x4'),_0x4837('0x5'),_0x4837('0x6'),_0x4837('0x7'),_0x4837('0x8'),_0x4837('0x9'),_0x4837('0xa'),_0x4837('0xb'),_0x4837('0xc')],'include':[{'model':'SalesforceConfiguration','as':_0x4837('0xd'),'attributes':['id','name',_0x4837('0xe'),_0x4837('0xf'),_0x4837('0x10'),_0x4837('0x11'),_0x4837('0x12'),_0x4837('0x13'),_0x4837('0x14')],'include':[{'model':_0x4837('0x15'),'as':_0x4837('0x16'),'include':[{'model':_0x4837('0x17'),'as':'Variable','attributes':['id','name']}]},{'model':_0x4837('0x15'),'as':'Descriptions','include':[{'model':_0x4837('0x17'),'as':_0x4837('0x17'),'attributes':['id','name']}]},{'model':'SalesforceField','as':'Fields','include':[{'model':_0x4837('0x17'),'as':_0x4837('0x17'),'attributes':['id',_0x4837('0x4')]}]}]}]},'log':_0x4837('0x3')});};};
\ No newline at end of file
index d2c06a5..8c6cda5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['idField','nameField','customField','GetServicenowkAccount','../../client','getServicenowAccounts','GetServicenowAccount','name','description','username','password','email','remoteUri','serverUrl','ServicenowConfiguration','Configurations','type','content','variableName','Variable','ServicenowField','Descriptions','key','keyContent','Fields'];(function(_0x6aa32f,_0x3820f7){var _0x52bfee=function(_0x49814f){while(--_0x49814f){_0x6aa32f['push'](_0x6aa32f['shift']());}};_0x52bfee(++_0x3820f7);}(_0xf494,0x1c6));var _0x4f49=function(_0x30bd4f,_0x5cfadf){_0x30bd4f=_0x30bd4f-0x0;var _0x1b8ab6=_0xf494[_0x30bd4f];return _0x1b8ab6;};'use strict';var client=require(_0x4f49('0x0'));exports[_0x4f49('0x1')]=function(){return function(_0x3063f3){return client['Request'](_0x4f49('0x2'),{'options':{'raw':![],'attributes':['id',_0x4f49('0x3'),_0x4f49('0x4'),_0x4f49('0x5'),_0x4f49('0x6'),_0x4f49('0x7'),_0x4f49('0x8'),_0x4f49('0x9')],'include':[{'model':_0x4f49('0xa'),'as':_0x4f49('0xb'),'attributes':['id',_0x4f49('0x3')],'include':[{'model':'ServicenowField','as':'Subjects','attributes':['id',_0x4f49('0xc'),_0x4f49('0xd'),_0x4f49('0xe')],'include':[{'model':_0x4f49('0xf'),'as':_0x4f49('0xf'),'attributes':['id',_0x4f49('0x3')]}]},{'model':_0x4f49('0x10'),'as':_0x4f49('0x11'),'attributes':['id','type',_0x4f49('0xd'),_0x4f49('0x12'),'keyType',_0x4f49('0x13'),'variableName'],'include':[{'model':'Variable','as':_0x4f49('0xf'),'attributes':['id',_0x4f49('0x3')]}]},{'model':'ServicenowField','as':_0x4f49('0x14'),'attributes':['id',_0x4f49('0xc'),_0x4f49('0xd'),_0x4f49('0x15'),_0x4f49('0x16'),_0x4f49('0x17'),_0x4f49('0xe')],'include':[{'model':'Variable','as':_0x4f49('0xf'),'attributes':['id',_0x4f49('0x3')]}]}]}]},'log':_0x4f49('0x18')});};};
\ No newline at end of file
+var _0xadb5=['keyContent','Fields','nameField','customField','GetServicenowkAccount','getServicenowAccounts','Request','GetServicenowAccount','name','username','password','email','serverUrl','ServicenowConfiguration','Configurations','ServicenowField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType'];(function(_0xbe506a,_0x4ded0a){var _0x67d984=function(_0x35eef3){while(--_0x35eef3){_0xbe506a['push'](_0xbe506a['shift']());}};_0x67d984(++_0x4ded0a);}(_0xadb5,0xad));var _0x5adb=function(_0x2853c7,_0x132dc4){_0x2853c7=_0x2853c7-0x0;var _0xb30381=_0xadb5[_0x2853c7];return _0xb30381;};'use strict';var client=require('../../client');exports[_0x5adb('0x0')]=function(){return function(_0x49fc17){return client[_0x5adb('0x1')](_0x5adb('0x2'),{'options':{'raw':![],'attributes':['id',_0x5adb('0x3'),'description',_0x5adb('0x4'),_0x5adb('0x5'),_0x5adb('0x6'),'remoteUri',_0x5adb('0x7')],'include':[{'model':_0x5adb('0x8'),'as':_0x5adb('0x9'),'attributes':['id',_0x5adb('0x3')],'include':[{'model':_0x5adb('0xa'),'as':_0x5adb('0xb'),'attributes':['id',_0x5adb('0xc'),_0x5adb('0xd'),_0x5adb('0xe')],'include':[{'model':_0x5adb('0xf'),'as':_0x5adb('0xf'),'attributes':['id',_0x5adb('0x3')]}]},{'model':_0x5adb('0xa'),'as':_0x5adb('0x10'),'attributes':['id','type','content',_0x5adb('0x11'),_0x5adb('0x12'),_0x5adb('0x13'),'variableName'],'include':[{'model':_0x5adb('0xf'),'as':'Variable','attributes':['id',_0x5adb('0x3')]}]},{'model':'ServicenowField','as':_0x5adb('0x14'),'attributes':['id',_0x5adb('0xc'),_0x5adb('0xd'),'idField',_0x5adb('0x15'),_0x5adb('0x16'),_0x5adb('0xe')],'include':[{'model':'Variable','as':_0x5adb('0xf'),'attributes':['id','name']}]}]}]},'log':_0x5adb('0x17')});};};
\ No newline at end of file
index 38e8679..1d8f8fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f66=['nameField','customField','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username','password','serverUrl','Configurations','type','content','variableName','Variable','key','keyType','Fields','idField'];(function(_0x2239e6,_0x247752){var _0x4e4892=function(_0x4bb897){while(--_0x4bb897){_0x2239e6['push'](_0x2239e6['shift']());}};_0x4e4892(++_0x247752);}(_0x5f66,0x1a0));var _0x65f6=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x5f66[_0x173441];return _0x2423a8;};'use strict';var client=require('../../client');exports[_0x65f6('0x0')]=function(){return function(_0x4a3887){return client[_0x65f6('0x1')](_0x65f6('0x2'),{'options':{'raw':![],'attributes':['id',_0x65f6('0x3'),_0x65f6('0x4'),_0x65f6('0x5'),'remoteUri',_0x65f6('0x6')],'include':[{'model':'SugarcrmConfiguration','as':_0x65f6('0x7'),'attributes':['id',_0x65f6('0x3')],'include':[{'model':'SugarcrmField','as':'Subjects','attributes':['id',_0x65f6('0x8'),_0x65f6('0x9'),_0x65f6('0xa')],'include':[{'model':_0x65f6('0xb'),'as':_0x65f6('0xb'),'attributes':['id',_0x65f6('0x3')]}]},{'model':'SugarcrmField','as':'Descriptions','attributes':['id',_0x65f6('0x8'),_0x65f6('0x9'),_0x65f6('0xc'),_0x65f6('0xd'),'keyContent',_0x65f6('0xa')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x65f6('0x3')]}]},{'model':'SugarcrmField','as':_0x65f6('0xe'),'attributes':['id','type',_0x65f6('0x9'),_0x65f6('0xf'),_0x65f6('0x10'),_0x65f6('0x11'),_0x65f6('0xa')],'include':[{'model':_0x65f6('0xb'),'as':_0x65f6('0xb'),'attributes':['id',_0x65f6('0x3')]}]}]}]},'log':_0x65f6('0x2')});};};
\ No newline at end of file
+var _0x0295=['remoteUri','serverUrl','SugarcrmConfiguration','Configurations','name','SugarcrmField','Subjects','Variable','Descriptions','content','key','keyType','variableName','Fields','customField','GetSugarcrmAccount','../../client','Request','username','password'];(function(_0x361200,_0x2d4c51){var _0x9c6edf=function(_0x411418){while(--_0x411418){_0x361200['push'](_0x361200['shift']());}};_0x9c6edf(++_0x2d4c51);}(_0x0295,0x1f0));var _0x5029=function(_0x4b775b,_0x2aadc6){_0x4b775b=_0x4b775b-0x0;var _0xf84d39=_0x0295[_0x4b775b];return _0xf84d39;};'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
index 6f6e7b7..84c7ab7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcc1=['description','username','accessKey','remoteUri','VtigerConfiguration','Configurations','VtigerField','Subjects','type','variableName','Variable','name','Descriptions','content','key','keyType','Fields','idField','nameField','customField','../../client','Request','GetVtigerAccount'];(function(_0x480408,_0x403a40){var _0x52d4e6=function(_0x380a0a){while(--_0x380a0a){_0x480408['push'](_0x480408['shift']());}};_0x52d4e6(++_0x403a40);}(_0xfcc1,0x70));var _0x1fcc=function(_0x3c3195,_0x595377){_0x3c3195=_0x3c3195-0x0;var _0x2ee24e=_0xfcc1[_0x3c3195];return _0x2ee24e;};'use strict';var client=require(_0x1fcc('0x0'));exports['getVtigerAccounts']=function(){return function(_0x5ece33){return client[_0x1fcc('0x1')](_0x1fcc('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x1fcc('0x3'),_0x1fcc('0x4'),_0x1fcc('0x5'),_0x1fcc('0x6'),'serverUrl'],'include':[{'model':_0x1fcc('0x7'),'as':_0x1fcc('0x8'),'attributes':['id','name'],'include':[{'model':_0x1fcc('0x9'),'as':_0x1fcc('0xa'),'attributes':['id',_0x1fcc('0xb'),'content',_0x1fcc('0xc')],'include':[{'model':_0x1fcc('0xd'),'as':_0x1fcc('0xd'),'attributes':['id',_0x1fcc('0xe')]}]},{'model':_0x1fcc('0x9'),'as':_0x1fcc('0xf'),'attributes':['id',_0x1fcc('0xb'),_0x1fcc('0x10'),_0x1fcc('0x11'),_0x1fcc('0x12'),'keyContent',_0x1fcc('0xc')],'include':[{'model':'Variable','as':_0x1fcc('0xd'),'attributes':['id','name']}]},{'model':'VtigerField','as':_0x1fcc('0x13'),'attributes':['id',_0x1fcc('0xb'),_0x1fcc('0x10'),_0x1fcc('0x14'),_0x1fcc('0x15'),_0x1fcc('0x16'),_0x1fcc('0xc')],'include':[{'model':_0x1fcc('0xd'),'as':_0x1fcc('0xd'),'attributes':['id',_0x1fcc('0xe')]}]}]}]},'log':_0x1fcc('0x2')});};};
\ No newline at end of file
+var _0xea0d=['GetVtigerAccount','../../client','Request','name','description','accessKey','remoteUri','serverUrl','Configurations','type','variableName','Variable','VtigerField','Descriptions','key','keyType','keyContent','Fields','content','nameField','customField'];(function(_0x2b8656,_0x27e061){var _0x1de4e8=function(_0x455743){while(--_0x455743){_0x2b8656['push'](_0x2b8656['shift']());}};_0x1de4e8(++_0x27e061);}(_0xea0d,0x166));var _0xdea0=function(_0x75ce5b,_0x3b582f){_0x75ce5b=_0x75ce5b-0x0;var _0x22195e=_0xea0d[_0x75ce5b];return _0x22195e;};'use strict';var client=require(_0xdea0('0x0'));exports['getVtigerAccounts']=function(){return function(_0x4d71bd){return client[_0xdea0('0x1')]('GetVtigerAccount',{'options':{'raw':![],'attributes':['id',_0xdea0('0x2'),_0xdea0('0x3'),'username',_0xdea0('0x4'),_0xdea0('0x5'),_0xdea0('0x6')],'include':[{'model':'VtigerConfiguration','as':_0xdea0('0x7'),'attributes':['id',_0xdea0('0x2')],'include':[{'model':'VtigerField','as':'Subjects','attributes':['id',_0xdea0('0x8'),'content',_0xdea0('0x9')],'include':[{'model':_0xdea0('0xa'),'as':'Variable','attributes':['id',_0xdea0('0x2')]}]},{'model':_0xdea0('0xb'),'as':_0xdea0('0xc'),'attributes':['id',_0xdea0('0x8'),'content',_0xdea0('0xd'),_0xdea0('0xe'),_0xdea0('0xf'),'variableName'],'include':[{'model':_0xdea0('0xa'),'as':'Variable','attributes':['id','name']}]},{'model':_0xdea0('0xb'),'as':_0xdea0('0x10'),'attributes':['id',_0xdea0('0x8'),_0xdea0('0x11'),'idField',_0xdea0('0x12'),_0xdea0('0x13'),_0xdea0('0x9')],'include':[{'model':'Variable','as':_0xdea0('0xa'),'attributes':['id','name']}]}]}]},'log':_0xdea0('0x14')});};};
\ No newline at end of file
index d5188fa..ecf1499 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1045=['type','key','keyType','keyContent','Fields','nameField','customField','../../client','Request','GetZendeskAccount','password','remoteUri','authType','serverUrl','ZendeskConfiguration','Configurations','name','Tag','Subjects','content','variableName','Variable','ZendeskField','Descriptions'];(function(_0x503ea7,_0x464973){var _0xda2326=function(_0x20dbdf){while(--_0x20dbdf){_0x503ea7['push'](_0x503ea7['shift']());}};_0xda2326(++_0x464973);}(_0x1045,0xaf));var _0x5104=function(_0x55cfe2,_0x4f8de7){_0x55cfe2=_0x55cfe2-0x0;var _0x20c1c7=_0x1045[_0x55cfe2];return _0x20c1c7;};'use strict';var client=require(_0x5104('0x0'));exports['getZendeskAccounts']=function(){return function(_0x49fb8a){return client[_0x5104('0x1')](_0x5104('0x2'),{'options':{'raw':![],'attributes':['id','name','username',_0x5104('0x3'),'token',_0x5104('0x4'),_0x5104('0x5'),_0x5104('0x6'),'type'],'include':[{'model':_0x5104('0x7'),'as':_0x5104('0x8'),'attributes':['id',_0x5104('0x9')],'include':[{'model':_0x5104('0xa'),'attributes':['id',_0x5104('0x9')]},{'model':'ZendeskField','as':_0x5104('0xb'),'attributes':['id','type',_0x5104('0xc'),_0x5104('0xd')],'include':[{'model':_0x5104('0xe'),'as':_0x5104('0xe'),'attributes':['id',_0x5104('0x9')]}]},{'model':_0x5104('0xf'),'as':_0x5104('0x10'),'attributes':['id',_0x5104('0x11'),'content',_0x5104('0x12'),_0x5104('0x13'),_0x5104('0x14'),_0x5104('0xd')],'include':[{'model':_0x5104('0xe'),'as':_0x5104('0xe'),'attributes':['id','name']}]},{'model':_0x5104('0xf'),'as':_0x5104('0x15'),'attributes':['id',_0x5104('0x11'),_0x5104('0xc'),'idField',_0x5104('0x16'),_0x5104('0x17'),_0x5104('0xd')],'include':[{'model':_0x5104('0xe'),'as':'Variable','attributes':['id',_0x5104('0x9')]}]}]}]},'log':_0x5104('0x2')});};};
\ No newline at end of file
+var _0x7fb6=['getZendeskAccounts','Request','name','username','password','token','remoteUri','authType','serverUrl','ZendeskConfiguration','Configurations','ZendeskField','type','Variable','Descriptions','content','key','keyType','keyContent','variableName','idField','customField','GetZendeskAccount','../../client'];(function(_0x4236b4,_0x4c3781){var _0x435e3d=function(_0x479b71){while(--_0x479b71){_0x4236b4['push'](_0x4236b4['shift']());}};_0x435e3d(++_0x4c3781);}(_0x7fb6,0x14f));var _0x67fb=function(_0x10c46c,_0x4f730b){_0x10c46c=_0x10c46c-0x0;var _0x48adc1=_0x7fb6[_0x10c46c];return _0x48adc1;};'use strict';var client=require(_0x67fb('0x0'));exports[_0x67fb('0x1')]=function(){return function(_0x21e65b){return client[_0x67fb('0x2')]('GetZendeskAccount',{'options':{'raw':![],'attributes':['id',_0x67fb('0x3'),_0x67fb('0x4'),_0x67fb('0x5'),_0x67fb('0x6'),_0x67fb('0x7'),_0x67fb('0x8'),_0x67fb('0x9'),'type'],'include':[{'model':_0x67fb('0xa'),'as':_0x67fb('0xb'),'attributes':['id',_0x67fb('0x3')],'include':[{'model':'Tag','attributes':['id',_0x67fb('0x3')]},{'model':_0x67fb('0xc'),'as':'Subjects','attributes':['id',_0x67fb('0xd'),'content','variableName'],'include':[{'model':_0x67fb('0xe'),'as':_0x67fb('0xe'),'attributes':['id',_0x67fb('0x3')]}]},{'model':'ZendeskField','as':_0x67fb('0xf'),'attributes':['id',_0x67fb('0xd'),_0x67fb('0x10'),_0x67fb('0x11'),_0x67fb('0x12'),_0x67fb('0x13'),_0x67fb('0x14')],'include':[{'model':_0x67fb('0xe'),'as':_0x67fb('0xe'),'attributes':['id',_0x67fb('0x3')]}]},{'model':_0x67fb('0xc'),'as':'Fields','attributes':['id',_0x67fb('0xd'),_0x67fb('0x10'),_0x67fb('0x15'),'nameField',_0x67fb('0x16'),_0x67fb('0x14')],'include':[{'model':_0x67fb('0xe'),'as':_0x67fb('0xe'),'attributes':['id',_0x67fb('0x3')]}]}]}]},'log':_0x67fb('0x17')});};};
\ No newline at end of file
index d82abb3..aedc51d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x168d=['customField','Request','GetZohoAccount','description','zone','clientId','serverUrl','refreshToken','ZohoConfiguration','Configurations','name','moduleSearch','Subjects','type','content','variableName','Variable','ZohoField','Descriptions','keyType','keyContent','Fields'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0x168d,0x11f));var _0xd168=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0x168d[_0x8c43de];return _0xa6591b;};'use strict';var client=require('../../client');exports['getZohoAccounts']=function(){return function(_0x43a979){return client[_0xd168('0x0')](_0xd168('0x1'),{'options':{'raw':![],'attributes':['id','name',_0xd168('0x2'),'host',_0xd168('0x3'),_0xd168('0x4'),'clientSecret',_0xd168('0x5'),'code',_0xd168('0x6')],'include':[{'model':_0xd168('0x7'),'as':_0xd168('0x8'),'attributes':['id',_0xd168('0x9'),'moduleCreate',_0xd168('0xa'),_0xd168('0x2')],'include':[{'model':'ZohoField','as':_0xd168('0xb'),'attributes':['id',_0xd168('0xc'),_0xd168('0xd'),_0xd168('0xe')],'include':[{'model':_0xd168('0xf'),'as':_0xd168('0xf'),'attributes':['id','name']}]},{'model':_0xd168('0x10'),'as':_0xd168('0x11'),'attributes':['id',_0xd168('0xc'),_0xd168('0xd'),'key',_0xd168('0x12'),_0xd168('0x13'),_0xd168('0xe')],'include':[{'model':_0xd168('0xf'),'as':_0xd168('0xf'),'attributes':['id',_0xd168('0x9')]}]},{'model':'ZohoField','as':_0xd168('0x14'),'attributes':['id','type',_0xd168('0xd'),'idField','nameField',_0xd168('0x15'),'variableName'],'include':[{'model':_0xd168('0xf'),'as':_0xd168('0xf'),'attributes':['id','name']}]}]}]},'log':_0xd168('0x1')});};};
\ No newline at end of file
+var _0xf8c9=['customField','../../client','getZohoAccounts','Request','GetZohoAccount','name','description','clientId','clientSecret','serverUrl','code','refreshToken','ZohoConfiguration','moduleCreate','moduleSearch','ZohoField','type','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','idField','nameField'];(function(_0x3c778b,_0x5296a8){var _0x1c0c4e=function(_0xfc4654){while(--_0xfc4654){_0x3c778b['push'](_0x3c778b['shift']());}};_0x1c0c4e(++_0x5296a8);}(_0xf8c9,0x69));var _0x9f8c=function(_0x55e52a,_0x3c7ca4){_0x55e52a=_0x55e52a-0x0;var _0x68d7cb=_0xf8c9[_0x55e52a];return _0x68d7cb;};'use strict';var client=require(_0x9f8c('0x0'));exports[_0x9f8c('0x1')]=function(){return function(_0x3036d9){return client[_0x9f8c('0x2')](_0x9f8c('0x3'),{'options':{'raw':![],'attributes':['id',_0x9f8c('0x4'),_0x9f8c('0x5'),'host','zone',_0x9f8c('0x6'),_0x9f8c('0x7'),_0x9f8c('0x8'),_0x9f8c('0x9'),_0x9f8c('0xa')],'include':[{'model':_0x9f8c('0xb'),'as':'Configurations','attributes':['id',_0x9f8c('0x4'),_0x9f8c('0xc'),_0x9f8c('0xd'),'description'],'include':[{'model':_0x9f8c('0xe'),'as':'Subjects','attributes':['id',_0x9f8c('0xf'),_0x9f8c('0x10'),_0x9f8c('0x11')],'include':[{'model':_0x9f8c('0x12'),'as':_0x9f8c('0x12'),'attributes':['id',_0x9f8c('0x4')]}]},{'model':_0x9f8c('0xe'),'as':_0x9f8c('0x13'),'attributes':['id','type','content','key',_0x9f8c('0x14'),_0x9f8c('0x15'),_0x9f8c('0x11')],'include':[{'model':'Variable','as':_0x9f8c('0x12'),'attributes':['id',_0x9f8c('0x4')]}]},{'model':_0x9f8c('0xe'),'as':_0x9f8c('0x16'),'attributes':['id',_0x9f8c('0xf'),_0x9f8c('0x10'),_0x9f8c('0x17'),_0x9f8c('0x18'),_0x9f8c('0x19'),_0x9f8c('0x11')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x9f8c('0x4')]}]}]}]},'log':'GetZohoAccount'});};};
\ No newline at end of file
index 5e7227b..b3f30e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02e0=['agent','accountcode','CreateMemberReport','membername','TALKING','starttime','endtime','seconds','outbound','dialstring','toNumber','moment','util','../client','voiceQueueReport','queuecallerexitAt','Request','voice','lastAssignedTo','format','interface','queuecallerleaveAt','diff','inbound','calleridnum','exten','queue'];(function(_0x14dd6d,_0x361b29){var _0x3ec9be=function(_0x495733){while(--_0x495733){_0x14dd6d['push'](_0x14dd6d['shift']());}};_0x3ec9be(++_0x361b29);}(_0x02e0,0x119));var _0x002e=function(_0x34ab98,_0x4b400c){_0x34ab98=_0x34ab98-0x0;var _0x254b64=_0x02e0[_0x34ab98];return _0x254b64;};'use strict';var moment=require(_0x002e('0x0'));var _=require('lodash');var util=require(_0x002e('0x1'));var client=require(_0x002e('0x2'));exports[_0x002e('0x3')]=function(_0x47bfb2){var _0x36151f=_0x47bfb2['queuecallercompleteAt']||_0x47bfb2[_0x002e('0x4')];return client[_0x002e('0x5')]('CreateMemberReport',{'body':{'channel':_0x002e('0x6'),'membername':_0x47bfb2[_0x002e('0x7')],'interface':_['isNil'](_0x47bfb2['interface'])?util[_0x002e('0x8')]('SIP/%s',_0x47bfb2['lastAssignedTo']):_0x47bfb2[_0x002e('0x9')],'type':'TALKING','enterAt':_0x47bfb2[_0x002e('0xa')],'exitAt':_0x36151f,'duration':moment(_0x36151f)[_0x002e('0xb')](_0x47bfb2[_0x002e('0xa')],'seconds'),'data1':_0x002e('0xc'),'data2':_0x47bfb2[_0x002e('0xd')],'data3':_0x47bfb2[_0x002e('0xe')],'data4':null,'data5':_0x47bfb2[_0x002e('0xf')],'role':_0x002e('0x10'),'internal':_0x47bfb2[_0x002e('0x11')]?_['toNumber'](_0x47bfb2[_0x002e('0x11')]):undefined,'uniqueid':_0x47bfb2['uniqueid']},'log':_0x002e('0x12')});};exports['voiceDialReport']=function(_0x5928b1){return client[_0x002e('0x5')](_0x002e('0x12'),{'body':{'channel':'voice','membername':_0x5928b1[_0x002e('0x13')],'interface':_0x5928b1[_0x002e('0x9')],'type':_0x002e('0x14'),'enterAt':_0x5928b1[_0x002e('0x15')],'exitAt':_0x5928b1[_0x002e('0x16')],'duration':moment(_0x5928b1[_0x002e('0x16')])[_0x002e('0xb')](_0x5928b1['starttime'],'seconds')>=0x0?moment(_0x5928b1[_0x002e('0x16')])['diff'](_0x5928b1[_0x002e('0x15')],_0x002e('0x17')):null,'data1':_0x002e('0x18'),'data2':_0x5928b1[_0x002e('0x11')],'data3':_0x5928b1[_0x002e('0xe')],'data4':_0x5928b1[_0x002e('0x19')]||null,'role':'agent','internal':_0x5928b1['accountcode']?_[_0x002e('0x1a')](_0x5928b1[_0x002e('0x11')]):undefined,'uniqueid':_0x5928b1['uniqueid']},'log':'CreateMemberReport'});};
\ No newline at end of file
+var _0x5adf=['CreateMemberReport','lastAssignedTo','interface','format','TALKING','queuecallerleaveAt','inbound','calleridnum','exten','queue','agent','accountcode','toNumber','uniqueid','voiceDialReport','voice','starttime','endtime','diff','seconds','outbound','dialstring','moment','lodash','util','../client','voiceQueueReport','queuecallerexitAt','Request'];(function(_0x36ccc6,_0x3db033){var _0x1c4bd4=function(_0x3dbbe2){while(--_0x3dbbe2){_0x36ccc6['push'](_0x36ccc6['shift']());}};_0x1c4bd4(++_0x3db033);}(_0x5adf,0xa7));var _0xf5ad=function(_0x29cad2,_0x4a7728){_0x29cad2=_0x29cad2-0x0;var _0x510baf=_0x5adf[_0x29cad2];return _0x510baf;};'use strict';var moment=require(_0xf5ad('0x0'));var _=require(_0xf5ad('0x1'));var util=require(_0xf5ad('0x2'));var client=require(_0xf5ad('0x3'));exports[_0xf5ad('0x4')]=function(_0x4ed63e){var _0xfdea3=_0x4ed63e['queuecallercompleteAt']||_0x4ed63e[_0xf5ad('0x5')];return client[_0xf5ad('0x6')](_0xf5ad('0x7'),{'body':{'channel':'voice','membername':_0x4ed63e[_0xf5ad('0x8')],'interface':_['isNil'](_0x4ed63e[_0xf5ad('0x9')])?util[_0xf5ad('0xa')]('SIP/%s',_0x4ed63e[_0xf5ad('0x8')]):_0x4ed63e['interface'],'type':_0xf5ad('0xb'),'enterAt':_0x4ed63e[_0xf5ad('0xc')],'exitAt':_0xfdea3,'duration':moment(_0xfdea3)['diff'](_0x4ed63e['queuecallerleaveAt'],'seconds'),'data1':_0xf5ad('0xd'),'data2':_0x4ed63e[_0xf5ad('0xe')],'data3':_0x4ed63e[_0xf5ad('0xf')],'data4':null,'data5':_0x4ed63e[_0xf5ad('0x10')],'role':_0xf5ad('0x11'),'internal':_0x4ed63e[_0xf5ad('0x12')]?_[_0xf5ad('0x13')](_0x4ed63e[_0xf5ad('0x12')]):undefined,'uniqueid':_0x4ed63e[_0xf5ad('0x14')]},'log':_0xf5ad('0x7')});};exports[_0xf5ad('0x15')]=function(_0x4b73e5){return client[_0xf5ad('0x6')](_0xf5ad('0x7'),{'body':{'channel':_0xf5ad('0x16'),'membername':_0x4b73e5['membername'],'interface':_0x4b73e5['interface'],'type':_0xf5ad('0xb'),'enterAt':_0x4b73e5[_0xf5ad('0x17')],'exitAt':_0x4b73e5[_0xf5ad('0x18')],'duration':moment(_0x4b73e5['endtime'])[_0xf5ad('0x19')](_0x4b73e5['starttime'],'seconds')>=0x0?moment(_0x4b73e5[_0xf5ad('0x18')])[_0xf5ad('0x19')](_0x4b73e5['starttime'],_0xf5ad('0x1a')):null,'data1':_0xf5ad('0x1b'),'data2':_0x4b73e5[_0xf5ad('0x12')],'data3':_0x4b73e5[_0xf5ad('0xf')],'data4':_0x4b73e5[_0xf5ad('0x1c')]||null,'role':_0xf5ad('0x11'),'internal':_0x4b73e5[_0xf5ad('0x12')]?_[_0xf5ad('0x13')](_0x4b73e5[_0xf5ad('0x12')]):undefined,'uniqueid':_0x4b73e5['uniqueid']},'log':_0xf5ad('0x7')});};
\ No newline at end of file
index d83aa75..e71e708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf269=['getSettings','Request','stopRecordingOnTransfer','previewRecallmeReminderInterval','GetSettings'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0xf269,0xd2));var _0x9f26=function(_0x5108bf,_0x1e9b2a){_0x5108bf=_0x5108bf-0x0;var _0x343c7e=_0xf269[_0x5108bf];return _0x343c7e;};'use strict';var client=require('../client');exports[_0x9f26('0x0')]=function(){return client[_0x9f26('0x1')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x9f26('0x2'),_0x9f26('0x3')]},'log':_0x9f26('0x4')});};
\ No newline at end of file
+var _0x1a05=['stopRecordingOnTransfer','previewRecallmeReminderInterval','GetSettings','../client','getSettings','ShowSetting'];(function(_0x5cb9fb,_0x2d5c2d){var _0x414c1f=function(_0x513845){while(--_0x513845){_0x5cb9fb['push'](_0x5cb9fb['shift']());}};_0x414c1f(++_0x2d5c2d);}(_0x1a05,0x153));var _0x51a0=function(_0x305f81,_0x2ce3ee){_0x305f81=_0x305f81-0x0;var _0x1ef64a=_0x1a05[_0x305f81];return _0x1ef64a;};'use strict';var client=require(_0x51a0('0x0'));exports[_0x51a0('0x1')]=function(){return client['Request'](_0x51a0('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x51a0('0x3'),_0x51a0('0x4')]},'log':_0x51a0('0x5')});};
\ No newline at end of file
index 0be6ded..4e8e925 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17c1=['GetTemplate','name','html','../client','getTemplates'];(function(_0x76ced3,_0x8abc01){var _0x4fea70=function(_0x519c04){while(--_0x519c04){_0x76ced3['push'](_0x76ced3['shift']());}};_0x4fea70(++_0x8abc01);}(_0x17c1,0x184));var _0x117c=function(_0x2f65d7,_0x3e0fbd){_0x2f65d7=_0x2f65d7-0x0;var _0x2f4063=_0x17c1[_0x2f65d7];return _0x2f4063;};'use strict';var client=require(_0x117c('0x0'));exports[_0x117c('0x1')]=function(_0x5aadfa){return function(_0x3bbaed){return client['Request'](_0x117c('0x2'),{'options':{'raw':!![],'attributes':['id',_0x117c('0x3'),_0x117c('0x4')]},'log':_0x117c('0x2')});};};
\ No newline at end of file
+var _0x07aa=['Request','name','GetTemplate','../client','getTemplates'];(function(_0x567842,_0x302841){var _0xfe2a85=function(_0x48bf13){while(--_0x48bf13){_0x567842['push'](_0x567842['shift']());}};_0xfe2a85(++_0x302841);}(_0x07aa,0xb7));var _0xa07a=function(_0x426140,_0xf9440){_0x426140=_0x426140-0x0;var _0x58d58f=_0x07aa[_0x426140];return _0x58d58f;};'use strict';var client=require(_0xa07a('0x0'));exports[_0xa07a('0x1')]=function(_0x2d2310){return function(_0x24f20b){return client[_0xa07a('0x2')]('GetTemplate',{'options':{'raw':!![],'attributes':['id',_0xa07a('0x3'),'html']},'log':_0xa07a('0x4')});};};
\ No newline at end of file
index cc2905c..bfc697c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa766=['Action','Actions','action','data1','data3','data4','data5','getTriggers','Request','GetTrigger','name','channel','Condition','field','operator','value','AnyConditions'];(function(_0x1fe99a,_0x1fb4ed){var _0x335527=function(_0x46ead6){while(--_0x46ead6){_0x1fe99a['push'](_0x1fe99a['shift']());}};_0x335527(++_0x1fb4ed);}(_0xa766,0x1b0));var _0x6a76=function(_0x19ad15,_0x33e0ef){_0x19ad15=_0x19ad15-0x0;var _0x3eacb0=_0xa766[_0x19ad15];return _0x3eacb0;};'use strict';var client=require('../client');exports[_0x6a76('0x0')]=function(_0x2f79fb){return function(_0x51dff4){return client[_0x6a76('0x1')](_0x6a76('0x2'),{'options':{'raw':![],'attributes':['id',_0x6a76('0x3'),_0x6a76('0x4'),'status'],'include':[{'model':_0x6a76('0x5'),'as':'AllConditions','attributes':['id',_0x6a76('0x6'),_0x6a76('0x7'),_0x6a76('0x8')]},{'model':_0x6a76('0x5'),'as':_0x6a76('0x9'),'attributes':['id','field',_0x6a76('0x7'),_0x6a76('0x8')]},{'model':_0x6a76('0xa'),'as':_0x6a76('0xb'),'attributes':['id',_0x6a76('0xc'),_0x6a76('0xd'),'data2',_0x6a76('0xe'),_0x6a76('0xf'),_0x6a76('0x10'),'data6','data7']}]},'log':_0x6a76('0x2')});};};
\ No newline at end of file
+var _0x1624=['Request','GetTrigger','name','Condition','AllConditions','operator','AnyConditions','field','Action','Actions','data2','data3','data4','data5','data7'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x1624,0x1ef));var _0x4162=function(_0x84446b,_0xafc6a4){_0x84446b=_0x84446b-0x0;var _0x13462c=_0x1624[_0x84446b];return _0x13462c;};'use strict';var client=require('../client');exports['getTriggers']=function(_0x1ee3e0){return function(_0x53c38a){return client[_0x4162('0x0')](_0x4162('0x1'),{'options':{'raw':![],'attributes':['id',_0x4162('0x2'),'channel','status'],'include':[{'model':_0x4162('0x3'),'as':_0x4162('0x4'),'attributes':['id','field',_0x4162('0x5'),'value']},{'model':_0x4162('0x3'),'as':_0x4162('0x6'),'attributes':['id',_0x4162('0x7'),_0x4162('0x5'),'value']},{'model':_0x4162('0x8'),'as':_0x4162('0x9'),'attributes':['id','action','data1',_0x4162('0xa'),_0x4162('0xb'),_0x4162('0xc'),_0x4162('0xd'),'data6',_0x4162('0xe')]}]},'log':_0x4162('0x1')});};};
\ No newline at end of file
index 097e3f4..14d0070 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ff3=['Request','GetTrunk','name','registry','defaultuser','getTrunks'];(function(_0x3f8f2e,_0x595be3){var _0xdf079f=function(_0x224def){while(--_0x224def){_0x3f8f2e['push'](_0x3f8f2e['shift']());}};_0xdf079f(++_0x595be3);}(_0x8ff3,0x1bb));var _0x38ff=function(_0x1177d5,_0x22b649){_0x1177d5=_0x1177d5-0x0;var _0xc3ddc2=_0x8ff3[_0x1177d5];return _0xc3ddc2;};'use strict';var client=require('../client');exports[_0x38ff('0x0')]=function(_0x5812dd){return function(_0x35e5fd){return client[_0x38ff('0x1')](_0x38ff('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x38ff('0x3'),_0x38ff('0x4'),_0x38ff('0x5')]},'log':_0x38ff('0x2')});};};
\ No newline at end of file
+var _0x2cc1=['registry','../client','getTrunks','Request','GetTrunk','name'];(function(_0x4492af,_0x47e25d){var _0x216729=function(_0x4964c8){while(--_0x4964c8){_0x4492af['push'](_0x4492af['shift']());}};_0x216729(++_0x47e25d);}(_0x2cc1,0x1bd));var _0x12cc=function(_0x4f95c5,_0x3d47c8){_0x4f95c5=_0x4f95c5-0x0;var _0x192ec2=_0x2cc1[_0x4f95c5];return _0x192ec2;};'use strict';var client=require(_0x12cc('0x0'));exports[_0x12cc('0x1')]=function(_0x4387a4){return function(_0x3b815b){return client[_0x12cc('0x2')](_0x12cc('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x12cc('0x4'),_0x12cc('0x5'),'defaultuser']},'log':'GetTrunk'});};};
\ No newline at end of file
index 7fe088c..9f707ec 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(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xe706,0xa3));var _0x6e70=function(_0x446789,_0x40aa74){_0x446789=_0x446789-0x0;var _0x534e45=_0xe706[_0x446789];return _0x534e45;};'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 _0xedd9=['mobile','getTelephones','internal','PauseUser','savePause','saveUnpause','UnpauseUser','ShowUser','interface','getAgent','getAgents','Request','GetUser','agent','name','email','accountcode','fullname','lastLoginAt','pauseType','lastPauseAt','voicePause'];(function(_0x525209,_0x18a5f6){var _0x443fab=function(_0x454845){while(--_0x454845){_0x525209['push'](_0x525209['shift']());}};_0x443fab(++_0x18a5f6);}(_0xedd9,0xfc));var _0x9edd=function(_0x271c16,_0x1396f7){_0x271c16=_0x271c16-0x0;var _0x2bdcf5=_0xedd9[_0x271c16];return _0x2bdcf5;};'use strict';var client=require('../client');exports[_0x9edd('0x0')]=function(){return function(){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'options':{'raw':![],'where':{'role':_0x9edd('0x3')},'attributes':['id',_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6'),_0x9edd('0x7'),'online',_0x9edd('0x8'),_0x9edd('0x9'),_0x9edd('0xa'),_0x9edd('0xb'),'phone',_0x9edd('0xc'),'interface']},'log':_0x9edd('0x0')});};};exports[_0x9edd('0xd')]=function(){return function(){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x9edd('0x4'),'accountcode',_0x9edd('0xe')]},'log':_0x9edd('0xd')});};};exports['savePause']=function(_0xbf9da6,_0x13dc4f,_0x5b6c00){return client[_0x9edd('0x1')](_0x9edd('0xf'),{'body':{'type':_0x13dc4f,'uniqueid':_0x5b6c00},'options':{'where':{'id':_0xbf9da6['id']}},'log':_0x9edd('0x10')});};exports[_0x9edd('0x11')]=function(_0x287ddd){return client[_0x9edd('0x1')](_0x9edd('0x12'),{'body':{},'options':{'where':{'id':_0x287ddd['id']}},'log':_0x9edd('0x10')});};exports['getAgent']=function(_0x176bfa){return client[_0x9edd('0x1')](_0x9edd('0x13'),{'options':{'raw':![],'where':{'role':_0x9edd('0x3'),'id':_0x176bfa},'attributes':['id',_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6'),_0x9edd('0x7'),'online',_0x9edd('0x8'),_0x9edd('0x9'),_0x9edd('0xa'),'voicePause',_0x9edd('0x14')]},'log':_0x9edd('0x15')});};
\ No newline at end of file
index fd61d8e..947a41f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc438=['update','../client','Request','CreateVoiceAgentReport'];(function(_0x456852,_0x39b320){var _0x25b8cb=function(_0x1eff44){while(--_0x1eff44){_0x456852['push'](_0x456852['shift']());}};_0x25b8cb(++_0x39b320);}(_0xc438,0x199));var _0x8c43=function(_0x21bac0,_0x21c121){_0x21bac0=_0x21bac0-0x0;var _0x415bf0=_0xc438[_0x21bac0];return _0x415bf0;};'use strict';var client=require(_0x8c43('0x0'));exports['create']=function(_0x4284ed){return client[_0x8c43('0x1')](_0x8c43('0x2'),{'body':_0x4284ed,'log':_0x8c43('0x2')});};exports[_0x8c43('0x3')]=function(_0x162472,_0x357774,_0x38d4b8){return client[_0x8c43('0x1')]('UpdateVoiceAgentReport',{'body':_0x162472,'options':{'where':{'uniqueid':_0x357774,'interface':_0x38d4b8,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
+var _0xdbbc=['CreateVoiceAgentReport','update','UpdateVoiceAgentReport','create','Request'];(function(_0x31dc14,_0x47225b){var _0x2a6b63=function(_0x1fd61e){while(--_0x1fd61e){_0x31dc14['push'](_0x31dc14['shift']());}};_0x2a6b63(++_0x47225b);}(_0xdbbc,0x189));var _0xcdbb=function(_0x4a6b92,_0x53929c){_0x4a6b92=_0x4a6b92-0x0;var _0x303f17=_0xdbbc[_0x4a6b92];return _0x303f17;};'use strict';var client=require('../client');exports[_0xcdbb('0x0')]=function(_0x2ae3ce){return client[_0xcdbb('0x1')](_0xcdbb('0x2'),{'body':_0x2ae3ce,'log':'CreateVoiceAgentReport'});};exports[_0xcdbb('0x3')]=function(_0x31ce1d,_0x3079e0,_0x36fe33){return client[_0xcdbb('0x1')]('UpdateVoiceAgentReport',{'body':_0x31ce1d,'options':{'where':{'uniqueid':_0x3079e0,'interface':_0x36fe33,'agentcomplete':!![]}},'log':_0xcdbb('0x4')});};
\ No newline at end of file
index b3811c0..dce9a58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c28=['outbound','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','duration','billableseconds','GetVoiceCallReports','util','lodash','create','Request','CreateVoiceCallReport','calleridnum','context','callerid','DOCUMENTATION','GetVoiceCallReport'];(function(_0x1cc1a4,_0x5116e9){var _0x238bad=function(_0x49bf53){while(--_0x49bf53){_0x1cc1a4['push'](_0x1cc1a4['shift']());}};_0x238bad(++_0x5116e9);}(_0x5c28,0x172));var _0x85c2=function(_0xa5bd7f,_0x17c58a){_0xa5bd7f=_0xa5bd7f-0x0;var _0x52c9f7=_0x5c28[_0xa5bd7f];return _0x52c9f7;};'use strict';var moment=require('moment');var util=require(_0x85c2('0x0'));var _=require(_0x85c2('0x1'));var client=require('../client');exports[_0x85c2('0x2')]=function(_0x12a911){return client[_0x85c2('0x3')](_0x85c2('0x4'),{'body':_['merge'](_0x12a911,{'source':_0x12a911[_0x85c2('0x5')],'destinationcontext':_0x12a911[_0x85c2('0x6')],'callerid':_0x12a911[_0x85c2('0x7')],'amaflags':_0x85c2('0x8')}),'log':'CreateVoiceCallReport'});};exports['getVoiceCallReports']=function(){return function(){return client[_0x85c2('0x3')](_0x85c2('0x9'),{'options':{'where':{'type':[_0x85c2('0xa')],'createdAt':{'$between':[moment()[_0x85c2('0xb')](_0x85c2('0xc'))[_0x85c2('0xd')](_0x85c2('0xe')),moment()[_0x85c2('0xf')]('day')[_0x85c2('0xd')]('YYYY-MM-DD\x20HH:mm:ss')]}},'attributes':[_0x85c2('0x10'),'disposition',_0x85c2('0x11'),_0x85c2('0x12')]},'log':_0x85c2('0x13')});};};
\ No newline at end of file
+var _0x11ad=['disposition','billableseconds','GetVoiceCallReports','moment','util','lodash','../client','create','CreateVoiceCallReport','merge','calleridnum','getVoiceCallReports','GetVoiceCallReport','outbound','day','format','endOf','YYYY-MM-DD\x20HH:mm:ss','type'];(function(_0x17abe0,_0x45ac2c){var _0x45f260=function(_0x1971f7){while(--_0x1971f7){_0x17abe0['push'](_0x17abe0['shift']());}};_0x45f260(++_0x45ac2c);}(_0x11ad,0x9b));var _0xd11a=function(_0x22452f,_0x17175e){_0x22452f=_0x22452f-0x0;var _0x3657dd=_0x11ad[_0x22452f];return _0x3657dd;};'use strict';var moment=require(_0xd11a('0x0'));var util=require(_0xd11a('0x1'));var _=require(_0xd11a('0x2'));var client=require(_0xd11a('0x3'));exports[_0xd11a('0x4')]=function(_0x3ae28d){return client['Request'](_0xd11a('0x5'),{'body':_[_0xd11a('0x6')](_0x3ae28d,{'source':_0x3ae28d[_0xd11a('0x7')],'destinationcontext':_0x3ae28d['context'],'callerid':_0x3ae28d['callerid'],'amaflags':'DOCUMENTATION'}),'log':_0xd11a('0x5')});};exports[_0xd11a('0x8')]=function(){return function(){return client['Request'](_0xd11a('0x9'),{'options':{'where':{'type':[_0xd11a('0xa')],'createdAt':{'$between':[moment()['startOf'](_0xd11a('0xb'))[_0xd11a('0xc')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xd11a('0xd')](_0xd11a('0xb'))[_0xd11a('0xc')](_0xd11a('0xe'))]}},'attributes':[_0xd11a('0xf'),_0xd11a('0x10'),'duration',_0xd11a('0x11')]},'log':_0xd11a('0x12')});};};
\ No newline at end of file
index 58bc231..173b893 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7079=['Request','create'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x7079,0x173));var _0x9707=function(_0x89eb9f,_0x2a5a92){_0x89eb9f=_0x89eb9f-0x0;var _0x3826b7=_0x7079[_0x89eb9f];return _0x3826b7;};'use strict';var client=require('../client');exports[_0x9707('0x0')]=function(_0xe82eba){return client[_0x9707('0x1')]('CreateVoiceDialReport',{'body':_0xe82eba,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
+var _0xd0a9=['Request','../client'];(function(_0x34a8ab,_0x3ebcad){var _0xe03b38=function(_0x158ecc){while(--_0x158ecc){_0x34a8ab['push'](_0x34a8ab['shift']());}};_0xe03b38(++_0x3ebcad);}(_0xd0a9,0x73));var _0x9d0a=function(_0xbf8ebe,_0x3b69a5){_0xbf8ebe=_0xbf8ebe-0x0;var _0x1e25e8=_0xd0a9[_0xbf8ebe];return _0x1e25e8;};'use strict';var client=require(_0x9d0a('0x0'));exports['create']=function(_0x2a016d){return client[_0x9d0a('0x1')]('CreateVoiceDialReport',{'body':_0x2a016d,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
index 2231024..ed48769 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c76=['Request','exten','recordingFormat','../client','getVoiceExtensions'];(function(_0x2ae4c6,_0x49ae7a){var _0x5271f9=function(_0x322b4d){while(--_0x322b4d){_0x2ae4c6['push'](_0x2ae4c6['shift']());}};_0x5271f9(++_0x49ae7a);}(_0x6c76,0x184));var _0x66c7=function(_0x5c3a3f,_0x3adaf8){_0x5c3a3f=_0x5c3a3f-0x0;var _0x1f6105=_0x6c76[_0x5c3a3f];return _0x1f6105;};'use strict';var client=require(_0x66c7('0x0'));exports[_0x66c7('0x1')]=function(){return function(){return client[_0x66c7('0x2')]('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id',_0x66c7('0x3'),_0x66c7('0x4')],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
+var _0x9d02=['../client','Request','exten','getVoiceExtensions'];(function(_0x3b53b0,_0x23dc58){var _0x4eddc6=function(_0x46254f){while(--_0x46254f){_0x3b53b0['push'](_0x3b53b0['shift']());}};_0x4eddc6(++_0x23dc58);}(_0x9d02,0x118));var _0x29d0=function(_0x54fdf2,_0x484e04){_0x54fdf2=_0x54fdf2-0x0;var _0x1f556f=_0x9d02[_0x54fdf2];return _0x1f556f;};'use strict';var client=require(_0x29d0('0x0'));exports['getVoiceExtensions']=function(){return function(){return client[_0x29d0('0x1')]('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id',_0x29d0('0x2'),'recordingFormat'],'where':{'VoiceExtensionId':null}},'log':_0x29d0('0x3')});};};
\ No newline at end of file
index 7b1ea54..0efc203 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x198b=['dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','timeout','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewRecallmeReminder','callAdditionalPhoneAfterMin','Trunk','active','Pause','mandatoryDispositionPause','callerid','Interval','interval','../client','GetVoiceQueue','name','acw','acwTimeout','monitor_format','type','dialActive'];(function(_0x50f07d,_0xe5491f){var _0x230e62=function(_0x4d0b55){while(--_0x4d0b55){_0x50f07d['push'](_0x50f07d['shift']());}};_0x230e62(++_0xe5491f);}(_0x198b,0x12e));var _0xb198=function(_0x567837,_0x1adc1b){_0x567837=_0x567837-0x0;var _0xbba44f=_0x198b[_0x567837];return _0xbba44f;};'use strict';var client=require(_0xb198('0x0'));exports['getVoiceQueues']=function(){return function(){return client['Request'](_0xb198('0x1'),{'options':{'raw':![],'attributes':['id',_0xb198('0x2'),_0xb198('0x3'),_0xb198('0x4'),'autopause',_0xb198('0x5'),_0xb198('0x6'),_0xb198('0x7'),_0xb198('0x8'),_0xb198('0x9'),_0xb198('0xa'),_0xb198('0xb'),'dialPredictiveOptimization',_0xb198('0xc'),_0xb198('0xd'),'dialOriginateCallerIdName',_0xb198('0xe'),_0xb198('0xf'),_0xb198('0x10'),_0xb198('0x11'),_0xb198('0x12'),_0xb198('0x13'),'dialCongestionRetryFrequency',_0xb198('0x14'),_0xb198('0x15'),_0xb198('0x16'),_0xb198('0x17'),_0xb198('0x18'),_0xb198('0x19'),'dialGlobalInterval',_0xb198('0x1a'),_0xb198('0x1b'),_0xb198('0x1c'),_0xb198('0x1d'),_0xb198('0x1e'),_0xb198('0x1f'),_0xb198('0x20'),_0xb198('0x21'),_0xb198('0x22'),'dialAMDMaximumNumberOfWords',_0xb198('0x23'),'dialAMDMaximumWordLength',_0xb198('0x24'),_0xb198('0x25'),_0xb198('0x26'),_0xb198('0x27'),_0xb198('0x28'),_0xb198('0x29'),_0xb198('0x2a'),'monitor_format',_0xb198('0x2b'),_0xb198('0x2c'),_0xb198('0x2d'),_0xb198('0x2e'),_0xb198('0x2f'),'dialDropMaxRetry','dialDropRetryFrequency',_0xb198('0x30'),_0xb198('0x31'),'dialMachineMaxRetry',_0xb198('0x32'),'dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition',_0xb198('0x33'),_0xb198('0x34'),'dialPreviewAutoRecallMe',_0xb198('0x35'),_0xb198('0x36')],'include':[{'model':_0xb198('0x37'),'as':_0xb198('0x37'),'attributes':['id',_0xb198('0x2'),'callerid',_0xb198('0x38')]},{'model':_0xb198('0x39'),'as':_0xb198('0x3a'),'attributes':['id',_0xb198('0x2')]},{'model':'Trunk','as':'TrunkBackup','attributes':['id','name',_0xb198('0x3b'),_0xb198('0x38')]},{'model':_0xb198('0x3c'),'as':'Interval','attributes':['id',_0xb198('0x2')],'include':[{'model':_0xb198('0x3c'),'as':'Intervals','attributes':['id','name',_0xb198('0x3d')]}]}]},'log':'getVoiceQueues'});};};
\ No newline at end of file
+var _0x5fab=['Request','GetVoiceQueue','acw','acwTimeout','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialCheckDuplicateType','dialAMDActive','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewRecallmeReminder','Trunk','name','callerid','active','Pause','mandatoryDispositionPause','Interval','Intervals','interval','../client','getVoiceQueues'];(function(_0x417760,_0x195ded){var _0xddd663=function(_0x27c8fc){while(--_0x27c8fc){_0x417760['push'](_0x417760['shift']());}};_0xddd663(++_0x195ded);}(_0x5fab,0x172));var _0xb5fa=function(_0x149225,_0x5869e2){_0x149225=_0x149225-0x0;var _0x21e6ac=_0x5fab[_0x149225];return _0x21e6ac;};'use strict';var client=require(_0xb5fa('0x0'));exports[_0xb5fa('0x1')]=function(){return function(){return client[_0xb5fa('0x2')](_0xb5fa('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xb5fa('0x4'),_0xb5fa('0x5'),'autopause',_0xb5fa('0x6'),_0xb5fa('0x7'),_0xb5fa('0x8'),_0xb5fa('0x9'),_0xb5fa('0xa'),_0xb5fa('0xb'),_0xb5fa('0xc'),_0xb5fa('0xd'),'dialPredictiveOptimizationPercentage',_0xb5fa('0xe'),_0xb5fa('0xf'),_0xb5fa('0x10'),_0xb5fa('0x11'),_0xb5fa('0x12'),_0xb5fa('0x13'),'dialQueueProject','dialCongestionMaxRetry',_0xb5fa('0x14'),_0xb5fa('0x15'),_0xb5fa('0x16'),_0xb5fa('0x17'),_0xb5fa('0x18'),_0xb5fa('0x19'),_0xb5fa('0x1a'),_0xb5fa('0x1b'),'dialPrefix',_0xb5fa('0x1c'),_0xb5fa('0x1d'),'dialAMDInitialSilence',_0xb5fa('0x1e'),_0xb5fa('0x1f'),_0xb5fa('0x20'),'dialAMDMinWordLength',_0xb5fa('0x21'),_0xb5fa('0x22'),_0xb5fa('0x23'),'dialAMDMaximumWordLength','timeout',_0xb5fa('0x24'),_0xb5fa('0x25'),_0xb5fa('0x26'),_0xb5fa('0x27'),'dialAgiAfterHangupClient','dialQueueProject2',_0xb5fa('0x6'),_0xb5fa('0x28'),_0xb5fa('0x29'),_0xb5fa('0x2a'),'dialNoSuchNumberMaxRetry',_0xb5fa('0x2b'),'dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry',_0xb5fa('0x2c'),_0xb5fa('0x2d'),_0xb5fa('0x2e'),_0xb5fa('0x2f'),_0xb5fa('0x30'),_0xb5fa('0x31'),_0xb5fa('0x32'),_0xb5fa('0x33'),'dialPreviewAutoRecallMe',_0xb5fa('0x34'),'callAdditionalPhoneAfterMin'],'include':[{'model':_0xb5fa('0x35'),'as':_0xb5fa('0x35'),'attributes':['id',_0xb5fa('0x36'),_0xb5fa('0x37'),_0xb5fa('0x38')]},{'model':_0xb5fa('0x39'),'as':_0xb5fa('0x3a'),'attributes':['id',_0xb5fa('0x36')]},{'model':_0xb5fa('0x35'),'as':'TrunkBackup','attributes':['id','name',_0xb5fa('0x37'),'active']},{'model':'Interval','as':_0xb5fa('0x3b'),'attributes':['id',_0xb5fa('0x36')],'include':[{'model':_0xb5fa('0x3b'),'as':_0xb5fa('0x3c'),'attributes':['id',_0xb5fa('0x36'),_0xb5fa('0x3d')]}]}]},'log':_0xb5fa('0x1')});};};
\ No newline at end of file
index 3f82002..b7c6bc3 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(_0x48d06f,_0x1c5f9e){var _0x53b7cd=function(_0x3c6e6c){while(--_0x3c6e6c){_0x48d06f['push'](_0x48d06f['shift']());}};_0x53b7cd(++_0x1c5f9e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xa9e0[_0x2b4411];return _0x8e41ef;};'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(_0x5e6434,_0x52ab7b){var _0x111321=function(_0x4ce4c3){while(--_0x4ce4c3){_0x5e6434['push'](_0x5e6434['shift']());}};_0x111321(++_0x52ab7b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0xa9e0[_0x5c351c];return _0x26f3b3;};'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 f8ac886..dbf0fe1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x033c=['Request','GetVoiceQueueRtPauses','../client','getVoiceQueueRtPauses'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x033c,0xf2));var _0xc033=function(_0x275297,_0x3523f7){_0x275297=_0x275297-0x0;var _0x488dab=_0x033c[_0x275297];return _0x488dab;};'use strict';var client=require(_0xc033('0x0'));exports[_0xc033('0x1')]=function(_0x1216d3){return function(){return client[_0xc033('0x2')](_0xc033('0x3'),{'options':{'where':{'VoiceQueueId':_0x1216d3,'paused':!![]},'raw':!![]},'log':'getVoiceQueueRtPauses'});};};
\ No newline at end of file
+var _0x9e78=['GetVoiceQueueRtPauses','getVoiceQueueRtPauses','../client'];(function(_0x3ec412,_0x4e05a2){var _0x48a1d1=function(_0x39acc7){while(--_0x39acc7){_0x3ec412['push'](_0x3ec412['shift']());}};_0x48a1d1(++_0x4e05a2);}(_0x9e78,0x92));var _0x89e7=function(_0x5eaa0b,_0x433b2f){_0x5eaa0b=_0x5eaa0b-0x0;var _0x28b295=_0x9e78[_0x5eaa0b];return _0x28b295;};'use strict';var client=require(_0x89e7('0x0'));exports['getVoiceQueueRtPauses']=function(_0x2c1b8d){return function(){return client['Request'](_0x89e7('0x1'),{'options':{'where':{'VoiceQueueId':_0x2c1b8d,'paused':!![]},'raw':!![]},'log':_0x89e7('0x2')});};};
\ No newline at end of file
index d140ac6..53fd25e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x4965df,_0x38f5f4){var _0x9cdbc4=function(_0x3e6196){while(--_0x3e6196){_0x4965df['push'](_0x4965df['shift']());}};_0x9cdbc4(++_0x38f5f4);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
+var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x864fda,_0x3f8352){var _0x5df6aa=function(_0x2335f5){while(--_0x2335f5){_0x864fda['push'](_0x864fda['shift']());}};_0x5df6aa(++_0x3f8352);}(_0x7a54,0x106));var _0x47a5=function(_0x447574,_0x231456){_0x447574=_0x447574-0x0;var _0xf958b6=_0x7a54[_0x447574];return _0xf958b6;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
index 4cd4a6f..c479d6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5788=['transfers','blindTransfer','Request','CreateVoiceTransferReport','result','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transferercontext','transfererexten','transfererlinkedid','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeaccountcode','transfereecontext','transfereelinkedid','isexternal','context','extension','attendedTransfer','origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','../client'];(function(_0x303862,_0x20b5ab){var _0xe6f228=function(_0x41fc5a){while(--_0x41fc5a){_0x303862['push'](_0x303862['shift']());}};_0xe6f228(++_0x20b5ab);}(_0x5788,0x77));var _0x8578=function(_0x2b9df8,_0x475b7a){_0x2b9df8=_0x2b9df8-0x0;var _0x50f545=_0x5788[_0x2b9df8];return _0x50f545;};'use strict';var client=require(_0x8578('0x0'));exports[_0x8578('0x1')]={};exports[_0x8578('0x2')]=function(_0x56abee){return client[_0x8578('0x3')](_0x8578('0x4'),{'body':{'result':_0x56abee[_0x8578('0x5')],'transfererchannel':_0x56abee['transfererchannel'],'transferercalleridnum':_0x56abee[_0x8578('0x6')],'transferercalleridname':_0x56abee[_0x8578('0x7')],'transfererconnectedlinenum':_0x56abee[_0x8578('0x8')],'transfererconnectedlinename':_0x56abee[_0x8578('0x9')],'transfereraccountcode':_0x56abee['transfereraccountcode'],'transferercontext':_0x56abee[_0x8578('0xa')],'transfererexten':_0x56abee[_0x8578('0xb')],'transfererlinkedid':_0x56abee[_0x8578('0xc')],'transfereechannel':_0x56abee['transfereechannel'],'transfereecalleridnum':_0x56abee[_0x8578('0xd')],'transfereecalleridname':_0x56abee[_0x8578('0xe')],'transfereeconnectedlinenum':_0x56abee[_0x8578('0xf')],'transfereeconnectedlinename':_0x56abee['transfereeconnectedlinename'],'transfereeaccountcode':_0x56abee[_0x8578('0x10')],'transfereecontext':_0x56abee[_0x8578('0x11')],'transfereeexten':_0x56abee['transfereeexten'],'transfereelinkedid':_0x56abee[_0x8578('0x12')],'isexternal':_0x56abee[_0x8578('0x13')],'context':_0x56abee[_0x8578('0x14')],'extension':_0x56abee[_0x8578('0x15')],'type':'blind'},'log':'CreateVoiceTransferReport'});};exports[_0x8578('0x16')]=function(_0x56c5de){return client[_0x8578('0x3')](_0x8578('0x4'),{'body':{'result':_0x56c5de[_0x8578('0x5')],'transfererchannel':_0x56c5de[_0x8578('0x17')],'transferercalleridnum':_0x56c5de['origtransferercalleridnum'],'transferercalleridname':_0x56c5de[_0x8578('0x18')],'transfererconnectedlinenum':_0x56c5de[_0x8578('0x19')],'transfererconnectedlinename':_0x56c5de[_0x8578('0x1a')],'transfereraccountcode':_0x56c5de[_0x8578('0x1b')],'transferercontext':_0x56c5de['secondtransferercontext'],'transfererexten':_0x56c5de[_0x8578('0x1c')],'transfererlinkedid':_0x56c5de[_0x8578('0x1d')],'transfereechannel':_0x56c5de[_0x8578('0x1e')],'transfereecalleridnum':_0x56c5de[_0x8578('0x1f')],'transfereecalleridname':_0x56c5de['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x56c5de[_0x8578('0x20')],'transfereeconnectedlinename':_0x56c5de[_0x8578('0x21')],'transfereeaccountcode':_0x56c5de['transfertargetaccountcode'],'transfereecontext':_0x56c5de[_0x8578('0x22')],'transfereeexten':_0x56c5de[_0x8578('0x23')],'transfereelinkedid':_0x56c5de[_0x8578('0x24')],'isexternal':_0x56c5de[_0x8578('0x13')],'context':_0x56c5de[_0x8578('0x25')],'extension':_0x56c5de[_0x8578('0x26')],'type':_0x8578('0x27')},'log':'CreateVoiceTransferReport'});};
\ No newline at end of file
+var _0xb819=['extension','blind','Request','origtransfererchannel','origtransferercalleridnum','secondtransfererconnectedlinename','origtransfereraccountcode','origtransfererlinkedid','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','origtransferercontext','attended','../client','transfers','blindTransfer','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererexten','transfererlinkedid','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeexten','transfereelinkedid','isexternal','context'];(function(_0x43a37c,_0x25a567){var _0x5d1d40=function(_0x3ec673){while(--_0x3ec673){_0x43a37c['push'](_0x43a37c['shift']());}};_0x5d1d40(++_0x25a567);}(_0xb819,0x114));var _0x9b81=function(_0x5acf4f,_0x221b61){_0x5acf4f=_0x5acf4f-0x0;var _0x147a53=_0xb819[_0x5acf4f];return _0x147a53;};'use strict';var client=require(_0x9b81('0x0'));exports[_0x9b81('0x1')]={};exports[_0x9b81('0x2')]=function(_0x382a4b){return client['Request'](_0x9b81('0x3'),{'body':{'result':_0x382a4b[_0x9b81('0x4')],'transfererchannel':_0x382a4b[_0x9b81('0x5')],'transferercalleridnum':_0x382a4b[_0x9b81('0x6')],'transferercalleridname':_0x382a4b[_0x9b81('0x7')],'transfererconnectedlinenum':_0x382a4b[_0x9b81('0x8')],'transfererconnectedlinename':_0x382a4b[_0x9b81('0x9')],'transfereraccountcode':_0x382a4b[_0x9b81('0xa')],'transferercontext':_0x382a4b[_0x9b81('0xb')],'transfererexten':_0x382a4b[_0x9b81('0xc')],'transfererlinkedid':_0x382a4b[_0x9b81('0xd')],'transfereechannel':_0x382a4b['transfereechannel'],'transfereecalleridnum':_0x382a4b['transfereecalleridnum'],'transfereecalleridname':_0x382a4b['transfereecalleridname'],'transfereeconnectedlinenum':_0x382a4b[_0x9b81('0xe')],'transfereeconnectedlinename':_0x382a4b[_0x9b81('0xf')],'transfereeaccountcode':_0x382a4b['transfereeaccountcode'],'transfereecontext':_0x382a4b['transfereecontext'],'transfereeexten':_0x382a4b[_0x9b81('0x10')],'transfereelinkedid':_0x382a4b[_0x9b81('0x11')],'isexternal':_0x382a4b[_0x9b81('0x12')],'context':_0x382a4b[_0x9b81('0x13')],'extension':_0x382a4b[_0x9b81('0x14')],'type':_0x9b81('0x15')},'log':_0x9b81('0x3')});};exports['attendedTransfer']=function(_0x3e993b){return client[_0x9b81('0x16')](_0x9b81('0x3'),{'body':{'result':_0x3e993b[_0x9b81('0x4')],'transfererchannel':_0x3e993b[_0x9b81('0x17')],'transferercalleridnum':_0x3e993b[_0x9b81('0x18')],'transferercalleridname':_0x3e993b['origtransferercalleridname'],'transfererconnectedlinenum':_0x3e993b['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x3e993b[_0x9b81('0x19')],'transfereraccountcode':_0x3e993b[_0x9b81('0x1a')],'transferercontext':_0x3e993b['secondtransferercontext'],'transfererexten':_0x3e993b['secondtransfererexten'],'transfererlinkedid':_0x3e993b[_0x9b81('0x1b')],'transfereechannel':_0x3e993b['transfertargetchannel'],'transfereecalleridnum':_0x3e993b[_0x9b81('0x1c')],'transfereecalleridname':_0x3e993b[_0x9b81('0x1d')],'transfereeconnectedlinenum':_0x3e993b[_0x9b81('0x1e')],'transfereeconnectedlinename':_0x3e993b[_0x9b81('0x1f')],'transfereeaccountcode':_0x3e993b[_0x9b81('0x20')],'transfereecontext':_0x3e993b[_0x9b81('0x21')],'transfereeexten':_0x3e993b[_0x9b81('0x22')],'transfereelinkedid':_0x3e993b['transfertargetlinkedid'],'isexternal':_0x3e993b[_0x9b81('0x12')],'context':_0x3e993b[_0x9b81('0x23')],'extension':_0x3e993b['origtransfererexten'],'type':_0x9b81('0x24')},'log':_0x9b81('0x3')});};
\ No newline at end of file
index 2390255..b6b2aff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d04=['callerid','Interval','push','length','find','omit','undefined','values','channels','voicechannel','%s.%s','filename','uniqueid','channel','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','status','MixMonitor\x20Success','catch','Channel\x20doesn\x27t\x20exist','resolve','StopMixMonitor','destinationchannel','stop','StopMixMonitor\x20Success','queueChannels','map','voicequeuechannelhangup','Hangup','voicequeuechannelredirect','Redirect','context','telephones','outboundChannels','campaigns','event','Event\x20name\x20mandatory','custom:','faxAccounts','send','checkAfterSend','server','127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','validate','bluebird','moment','../../../config/environment','../properties','listen','format','%s/%s','timers','timer','updateAcw','agents','updateStatusRealtime','pause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','keys','Reload','Action','then','message','command','action','Command','content','voiceQueues','strategy','answered','available','loggedIn','pTalking','sumBillable','sumDuration','talking','total','type','loggedInDb','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','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','name','active'];(function(_0x3f0bc6,_0x520c91){var _0x51767f=function(_0x1e235d){while(--_0x1e235d){_0x3f0bc6['push'](_0x3f0bc6['shift']());}};_0x51767f(++_0x520c91);}(_0x3d04,0xbe));var _0x43d0=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x3d04[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x43d0('0x0'));var util=require(_0x43d0('0x1'));var jayson=require(_0x43d0('0x2'));var schema=require(_0x43d0('0x3'));var BPromise=require(_0x43d0('0x4'));var moment=require(_0x43d0('0x5'));var config=require(_0x43d0('0x6'));var properties=require(_0x43d0('0x7'));var ami=require('../ami');exports[_0x43d0('0x8')]=function(_0x1a75d4,_0x746f5e,_0x617bf){return new BPromise(function(_0x5e284f,_0x484271){var _0x50919e={'QueuePause':function(_0x5efb95){return new Promise(function(_0x457550,_0x3344d3){var _0x331421=util[_0x43d0('0x9')](_0x43d0('0xa'),'SIP',_0x5efb95['name']);if(_0x1a75d4[_0x43d0('0xb')]&&_0x1a75d4['timers'][_0x331421]&&_0x1a75d4['timers'][_0x331421][_0x43d0('0xc')]){_0x1a75d4[_0x43d0('0xb')][_0x331421][_0x43d0('0xd')]();}if(_0x1a75d4[_0x43d0('0xe')][_0x331421]){_0x1a75d4['agents'][_0x331421][_0x43d0('0xf')]({'statePause':_0x5efb95[_0x43d0('0x10')]?!![]:![]});}_0x457550({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x29773b){var _0x3bee8c=this;return new Promise(function(_0x1b4f09,_0x5ed340){if(ami[_0x43d0('0x11')]()==![]){return _0x5ed340(_0x3bee8c[_0x43d0('0x12')](0x1f4,[config[_0x43d0('0x13')]['ip'],config['asterisk'][_0x43d0('0x14')],_0x43d0('0x15')][_0x43d0('0x16')]('\x20')));}_0x29773b=_[_0x43d0('0x17')](_0x29773b,_[_0x43d0('0x18')](properties['module']));_0x29773b['action']=_0x43d0('0x19');return ami[_0x43d0('0x1a')](_0x29773b)[_0x43d0('0x1b')](function(_0x56a27b){_0x1b4f09({'code':0xc8,'message':_0x56a27b[_0x43d0('0x1c')]});})['catch'](function(_0x2c9d06){_0x5ed340(_0x3bee8c[_0x43d0('0x12')](0x1f5,_0x2c9d06[_0x43d0('0x1c')]));});});},'Command':function(_0x4f709a){var _0x3d7dcc=this;return new Promise(function(_0xe494eb,_0x4d9146){if(ami[_0x43d0('0x11')]()==![]){return _0x4d9146(_0x3d7dcc[_0x43d0('0x12')](0x1f4,[config[_0x43d0('0x13')]['ip'],config[_0x43d0('0x13')][_0x43d0('0x14')],_0x43d0('0x15')][_0x43d0('0x16')]('\x20')));}_0x4f709a=_[_0x43d0('0x17')](_0x4f709a,_0x43d0('0x1d'));_0x4f709a[_0x43d0('0x1e')]=_0x43d0('0x1f');return ami[_0x43d0('0x1a')](_0x4f709a)[_0x43d0('0x1b')](function(_0xbc72e6){_0xe494eb({'code':0xc8,'message':_0xbc72e6[_0x43d0('0x20')]});})['catch'](function(_0x2c7b24){_0x4d9146(_0x3d7dcc[_0x43d0('0x12')](0x1f5,_0x2c7b24['message']));});});},'VoiceQueues':function(_0x1fe708){return new Promise(function(_0x5456ab,_0x29c111){var _0x44497b=[];for(var _0x5dd310 in _0x1a75d4[_0x43d0('0x21')]){if(_0x1a75d4[_0x43d0('0x21')]['hasOwnProperty'](_0x5dd310)){var _0x12df30=_0x1a75d4[_0x43d0('0x21')][_0x5dd310];var _0x22ae3c={'id':_0x12df30['id'],'name':_0x12df30['name'],'strategy':_0x12df30[_0x43d0('0x22')],'answered':_0x12df30[_0x43d0('0x23')],'available':_0x12df30[_0x43d0('0x24')],'loggedIn':_0x12df30[_0x43d0('0x25')],'pTalking':_0x12df30[_0x43d0('0x26')],'sumBillable':_0x12df30[_0x43d0('0x27')],'sumDuration':_0x12df30[_0x43d0('0x28')],'sumHoldTime':_0x12df30['sumHoldTime']||0x0,'talking':_0x12df30[_0x43d0('0x29')],'total':_0x12df30[_0x43d0('0x2a')],'type':_0x12df30[_0x43d0('0x2b')],'unmanaged':_0x12df30['unmanaged'],'abandoned':_0x12df30['abandoned'],'waiting':_0x12df30['waiting'],'loggedInDb':_0x12df30[_0x43d0('0x2c')]};if(_0x12df30[_0x43d0('0x2b')]===_0x43d0('0x2d')){_0x22ae3c[_0x43d0('0x2e')]=_0x12df30[_0x43d0('0x2e')];_0x22ae3c[_0x43d0('0x2f')]=_0x12df30['dialMethod'];_0x22ae3c[_0x43d0('0x30')]=_0x12df30[_0x43d0('0x30')];_0x22ae3c[_0x43d0('0x31')]=_0x12df30[_0x43d0('0x31')];_0x22ae3c[_0x43d0('0x32')]=_0x12df30[_0x43d0('0x32')];_0x22ae3c[_0x43d0('0x33')]=_0x12df30[_0x43d0('0x33')];_0x22ae3c[_0x43d0('0x34')]=_0x12df30[_0x43d0('0x34')];_0x22ae3c[_0x43d0('0x35')]=_0x12df30['outboundAnswerAgiCallsDay'];_0x22ae3c[_0x43d0('0x36')]=_0x12df30[_0x43d0('0x36')];_0x22ae3c[_0x43d0('0x37')]=_0x12df30[_0x43d0('0x37')];_0x22ae3c['outboundBusyCallsDay']=_0x12df30[_0x43d0('0x38')];_0x22ae3c['outboundCongestionCallsDay']=_0x12df30[_0x43d0('0x39')];_0x22ae3c[_0x43d0('0x3a')]=_0x12df30['outboundDropCallsDayACS'];_0x22ae3c[_0x43d0('0x3b')]=_0x12df30[_0x43d0('0x3b')];_0x22ae3c[_0x43d0('0x3c')]=_0x12df30[_0x43d0('0x3c')];_0x22ae3c[_0x43d0('0x3d')]=_0x12df30[_0x43d0('0x3d')];_0x22ae3c[_0x43d0('0x3e')]=_0x12df30[_0x43d0('0x3e')];_0x22ae3c[_0x43d0('0x3f')]=_0x12df30[_0x43d0('0x3f')];_0x22ae3c[_0x43d0('0x40')]=_0x12df30['outboundReCallsDay'];_0x22ae3c[_0x43d0('0x41')]=_0x12df30[_0x43d0('0x41')];_0x22ae3c[_0x43d0('0x42')]=_0x12df30[_0x43d0('0x42')];_0x22ae3c[_0x43d0('0x43')]=_0x12df30[_0x43d0('0x43')];_0x22ae3c[_0x43d0('0x44')]=_0x12df30[_0x43d0('0x44')];_0x22ae3c[_0x43d0('0x45')]=_0x12df30[_0x43d0('0x45')];_0x22ae3c[_0x43d0('0x46')]=_0x12df30[_0x43d0('0x46')];_0x22ae3c[_0x43d0('0x47')]=_0x12df30[_0x43d0('0x47')];_0x22ae3c['predictiveIntervalErlangCalls']=_0x12df30[_0x43d0('0x48')];_0x22ae3c[_0x43d0('0x49')]=_0x12df30[_0x43d0('0x49')];_0x22ae3c[_0x43d0('0x4a')]=_0x12df30[_0x43d0('0x4a')];_0x22ae3c[_0x43d0('0x4b')]=_0x12df30[_0x43d0('0x4b')];_0x22ae3c[_0x43d0('0x4c')]=_0x12df30['predictiveIntervalPauses'];_0x22ae3c['predictiveIntervalAvailable']=_0x12df30[_0x43d0('0x4d')];_0x22ae3c['predictiveIntervalTotalCalls']=_0x12df30['predictiveIntervalTotalCalls'];_0x22ae3c[_0x43d0('0x1c')]=_0x12df30['message'];_0x22ae3c[_0x43d0('0x4e')]=_0x12df30['originated'];_0x22ae3c[_0x43d0('0x4f')]=_0x12df30['erlangCalls'];_0x22ae3c[_0x43d0('0x50')]=_0x12df30[_0x43d0('0x50')];_0x22ae3c[_0x43d0('0x51')]=_0x12df30['erlangAbandonmentRate'];_0x22ae3c[_0x43d0('0x52')]=_0x12df30['erlangBusyFactor'];_0x22ae3c[_0x43d0('0x53')]=_0x12df30['startPredictive'];_0x22ae3c['startProgressive']=_0x12df30[_0x43d0('0x54')];}if(_0x12df30[_0x43d0('0x55')]){_0x22ae3c['Trunk']={'id':_0x12df30[_0x43d0('0x55')]['id'],'name':_0x12df30[_0x43d0('0x55')][_0x43d0('0x56')],'active':_0x12df30[_0x43d0('0x55')][_0x43d0('0x57')],'callerid':_0x12df30['Trunk'][_0x43d0('0x58')]};}if(_0x12df30[_0x43d0('0x59')]){_0x22ae3c[_0x43d0('0x59')]={'id':_0x12df30[_0x43d0('0x59')]['id'],'name':_0x12df30['Interval'][_0x43d0('0x56')]};}_0x44497b[_0x43d0('0x5a')](_0x22ae3c);}}_0x5456ab({'count':_0x44497b[_0x43d0('0x5b')],'rows':_0x44497b});});},'UpdateVoiceQueue':function(_0x17396f){return new Promise(function(_0x5e9000,_0x52d26a){var _0x1b8b2a=_[_0x43d0('0x5c')](_0x1a75d4['voiceQueues'],{'id':parseInt(_0x17396f['id'])});var _0x19baae=_[_0x43d0('0x5d')](_0x17396f,['id']);if(_0x1b8b2a){for(var _0x3931f8 in _0x19baae){if(typeof _0x19baae[_0x3931f8]!=='undefined'&&typeof _0x1b8b2a[_0x3931f8]!==_0x43d0('0x5e')){_0x1b8b2a[_0x3931f8]=_0x19baae[_0x3931f8];}}_0x5e9000(_0x1b8b2a);}else{_0x52d26a();}});},'VoiceChannels':function(_0x5ad7df){return new Promise(function(_0x19362e,_0x58d8e7){var _0x1f55e9=_[_0x43d0('0x5f')](_0x1a75d4[_0x43d0('0x60')]);_0x19362e({'count':_0x1f55e9[_0x43d0('0x5b')],'rows':_0x1f55e9});});},'VoiceChannelMixMonitor':function(_0x46723a){var _0x4d8b86=this;return new Promise(function(_0x11f997,_0x4bb2a0){if(ami[_0x43d0('0x11')]()==![]){return _0x4bb2a0(_0x4d8b86[_0x43d0('0x12')](0x1f4,[config[_0x43d0('0x13')]['ip'],config[_0x43d0('0x13')][_0x43d0('0x14')],_0x43d0('0x15')][_0x43d0('0x16')]('\x20')));}var _0x36c9d0=schema(properties[_0x43d0('0x61')])[_0x43d0('0x3')](_0x46723a);if(_0x36c9d0[_0x43d0('0x5b')]>0x0){return _0x4bb2a0(_0x4d8b86[_0x43d0('0x12')](0x1f4,_['map'](_0x36c9d0,_0x43d0('0x1c'))[_0x43d0('0x16')](',\x20')));}var _0x1503bc=_['find'](_0x1a75d4[_0x43d0('0x60')],{'uniqueid':_0x46723a['uniqueid']});if(_0x1503bc&&_0x1503bc['channel']){var _0x2477ec=util[_0x43d0('0x9')](_0x43d0('0x62'),_0x46723a[_0x43d0('0x63')]||_0x46723a[_0x43d0('0x64')],_0x46723a['format']||'wav');return ami[_0x43d0('0x1a')]({'action':'MixMonitor','channel':_0x1503bc[_0x43d0('0x65')],'file':_0x2477ec,'options':_0x43d0('0x66')})['then'](function(_0x53d6c0){var _0x57fbb1=_[_0x43d0('0x5c')](_0x1503bc[_0x43d0('0x67')],{'filename':_0x43d0('0x68')+_0x2477ec[_0x43d0('0x69')]()});if(_[_0x43d0('0x6a')](_0x57fbb1)){_0x1503bc[_0x43d0('0x67')][_0x43d0('0x5a')]({'filename':_0x43d0('0x68')+_0x2477ec[_0x43d0('0x69')](),'createdAt':moment()['format'](_0x43d0('0x6b')),'mixmonitorid':_0x53d6c0[_0x43d0('0x6c')],'status':_0x43d0('0x6d')});}else{_0x57fbb1[_0x43d0('0x6c')]=_0x53d6c0[_0x43d0('0x6c')];_0x57fbb1[_0x43d0('0x6e')]=_0x43d0('0x6d');}_0x11f997({'code':0xc8,'message':[_0x46723a[_0x43d0('0x64')],_0x43d0('0x6f'),_0x53d6c0[_0x43d0('0x6c')]]['join']('\x20'),'mixmonitorid':_0x53d6c0['mixmonitorid']});})[_0x43d0('0x70')](function(_0x12e3c0){_0x4bb2a0(_0x4d8b86[_0x43d0('0x12')](0x1f5,[_0x46723a[_0x43d0('0x64')],_0x12e3c0[_0x43d0('0x1c')][_0x43d0('0x69')]()][_0x43d0('0x16')]('\x20')));});}else{return _0x4bb2a0(_0x4d8b86[_0x43d0('0x12')](0x1f5,_0x43d0('0x71')));}});},'VoiceChannelStopMixMonitor':function(_0x1b0a11){var _0xe4f09d=this;return new Promise(function(_0x3c4dcb,_0x155ea8){if(ami[_0x43d0('0x11')]()==![]){return _0x155ea8(_0xe4f09d[_0x43d0('0x12')](0x1f4,[config['asterisk']['ip'],config['asterisk']['username'],_0x43d0('0x15')][_0x43d0('0x16')]('\x20')));}var _0x14884e=schema(properties['voicechannel'])['validate'](_0x1b0a11);if(_0x14884e['length']>0x0){return _0x155ea8(_0xe4f09d[_0x43d0('0x12')](0x1f4,_['map'](_0x14884e,_0x43d0('0x1c'))[_0x43d0('0x16')](',\x20')));}var _0x44696d=_['find'](_0x1a75d4[_0x43d0('0x60')],{'uniqueid':_0x1b0a11[_0x43d0('0x64')]});if(_0x44696d){return BPromise[_0x43d0('0x72')]()[_0x43d0('0x1b')](function(){if(_0x44696d[_0x43d0('0x65')]){return ami[_0x43d0('0x1a')]({'action':_0x43d0('0x73'),'channel':_0x44696d[_0x43d0('0x65')],'mixmonitorid':_0x1b0a11[_0x43d0('0x6c')]})[_0x43d0('0x70')](function(_0x5c4b95){});}})[_0x43d0('0x1b')](function(){if(_0x44696d[_0x43d0('0x74')]){return ami[_0x43d0('0x1a')]({'action':_0x43d0('0x73'),'channel':_0x44696d[_0x43d0('0x74')],'mixmonitorid':_0x1b0a11[_0x43d0('0x6c')]})['catch'](function(_0x3951e4){});}})[_0x43d0('0x1b')](function(_0x2290eb){var _0x11d4a6=_[_0x43d0('0x5c')](_0x44696d[_0x43d0('0x67')],{'mixmonitorid':_0x1b0a11['mixmonitorid']});if(_0x11d4a6){_0x11d4a6[_0x43d0('0x6e')]=_0x43d0('0x75');}})[_0x43d0('0x1b')](function(){var _0x19b6ff=util['format'](_0x43d0('0x62'),_0x1b0a11[_0x43d0('0x63')]||_0x1b0a11[_0x43d0('0x64')],_0x1b0a11['format']||'wav');var _0x3ca7a5=_[_0x43d0('0x5c')](_0x44696d['monitors'],{'filename':'/var/spool/asterisk/monitor/'+_0x19b6ff[_0x43d0('0x69')]()});if(_0x3ca7a5){_0x3ca7a5[_0x43d0('0x6e')]=_0x43d0('0x75');}})[_0x43d0('0x1b')](function(){_0x3c4dcb({'code':0xc8,'message':[_0x1b0a11[_0x43d0('0x64')],_0x43d0('0x76')][_0x43d0('0x16')]('\x20')});})[_0x43d0('0x70')](function(_0x554919){_0x155ea8(_0xe4f09d[_0x43d0('0x12')](0x1f5,[_0x1b0a11[_0x43d0('0x64')],_0x554919['message']['toLowerCase']()]['join']('\x20')));});}else{return _0x155ea8(_0xe4f09d[_0x43d0('0x12')](0x1f5,_0x43d0('0x71')));}});},'VoiceQueuesChannels':function(_0x1f3cda){return new Promise(function(_0x505946,_0x9b5f0d){var _0x39cd52=_['values'](_0x1a75d4[_0x43d0('0x77')]);_0x505946({'count':_0x39cd52[_0x43d0('0x5b')],'rows':_0x39cd52});});},'VoiceQueuesChannel':function(_0x519e2c){var _0x3ed718=this;return new Promise(function(_0x4e5c9f,_0xc383a7){var _0xa43542=schema(properties['voicequeuechannel'])['validate'](_0x519e2c);if(_0xa43542[_0x43d0('0x5b')]>0x0){return _0xc383a7(_0x3ed718[_0x43d0('0x12')](0x1f4,_[_0x43d0('0x78')](_0xa43542,'message')['join'](',\x20')));}var _0x441d46=_[_0x43d0('0x5c')](_0x1a75d4['queueChannels'],{'uniqueid':_0x519e2c[_0x43d0('0x64')]});if(_0x441d46){_0x4e5c9f(_0x441d46);}else{return _0xc383a7(_0x3ed718['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelHangup':function(_0x27a2c7){var _0x1d657a=this;return new Promise(function(_0xb03b17,_0x2b7cf1){if(ami[_0x43d0('0x11')]()==![]){return _0x2b7cf1(_0x1d657a[_0x43d0('0x12')](0x1f4,[config[_0x43d0('0x13')]['ip'],config[_0x43d0('0x13')][_0x43d0('0x14')],_0x43d0('0x15')][_0x43d0('0x16')]('\x20')));}var _0x5b97bc=schema(properties[_0x43d0('0x79')])['validate'](_0x27a2c7);if(_0x5b97bc['length']>0x0){return _0x2b7cf1(_0x1d657a[_0x43d0('0x12')](0x1f4,_[_0x43d0('0x78')](_0x5b97bc,'message')[_0x43d0('0x16')](',\x20')));}var _0x18afba=_[_0x43d0('0x5c')](_0x1a75d4[_0x43d0('0x77')],{'uniqueid':_0x27a2c7[_0x43d0('0x64')]});if(_0x18afba&&_0x18afba[_0x43d0('0x65')]){return ami[_0x43d0('0x1a')]({'action':_0x43d0('0x7a'),'channel':_0x18afba[_0x43d0('0x65')]})[_0x43d0('0x1b')](function(_0x81485b){_0xb03b17({'code':0xc8,'message':[_0x27a2c7[_0x43d0('0x64')],_0x81485b[_0x43d0('0x1c')][_0x43d0('0x69')]()][_0x43d0('0x16')]('\x20')});})['catch'](function(_0x1afbd5){_0x2b7cf1(_0x1d657a[_0x43d0('0x12')](0x1f5,[_0x27a2c7[_0x43d0('0x64')],_0x1afbd5[_0x43d0('0x1c')][_0x43d0('0x69')]()][_0x43d0('0x16')]('\x20')));});}else{return _0x2b7cf1(_0x1d657a['error'](0x1f5,_0x43d0('0x71')));}});},'VoiceQueuesChannelRedirect':function(_0x5bf51d){var _0x3c747f=this;return new Promise(function(_0x948a6a,_0x1a809c){if(ami[_0x43d0('0x11')]()==![]){return _0x1a809c(_0x3c747f[_0x43d0('0x12')](0x1f4,[config[_0x43d0('0x13')]['ip'],config[_0x43d0('0x13')]['username'],'ami\x20disconnected'][_0x43d0('0x16')]('\x20')));}var _0x1fe4f8=schema(properties[_0x43d0('0x7b')])[_0x43d0('0x3')](_0x5bf51d);if(_0x1fe4f8[_0x43d0('0x5b')]>0x0){return _0x1a809c(_0x3c747f[_0x43d0('0x12')](0x1f4,_['map'](_0x1fe4f8,'message')[_0x43d0('0x16')](',\x20')));}var _0x5c6b0b=_[_0x43d0('0x5c')](_0x1a75d4[_0x43d0('0x77')],{'uniqueid':_0x5bf51d[_0x43d0('0x64')]});if(_0x5c6b0b&&_0x5c6b0b[_0x43d0('0x65')]){return ami[_0x43d0('0x1a')]({'action':_0x43d0('0x7c'),'channel':_0x5c6b0b[_0x43d0('0x65')],'exten':_0x5bf51d['exten'],'context':_0x5bf51d[_0x43d0('0x7d')]||_0x5c6b0b[_0x43d0('0x7d')],'priority':0x1})[_0x43d0('0x1b')](function(_0x10ea32){_0x948a6a({'code':0xc8,'message':[_0x5bf51d[_0x43d0('0x64')],_0x10ea32[_0x43d0('0x1c')][_0x43d0('0x69')]()][_0x43d0('0x16')]('\x20')});})[_0x43d0('0x70')](function(_0x365d32){_0x1a809c(_0x3c747f[_0x43d0('0x12')](0x1f5,[_0x5bf51d[_0x43d0('0x64')],_0x365d32[_0x43d0('0x1c')][_0x43d0('0x69')]()]['join']('\x20')));});}else{return _0x1a809c(_0x3c747f['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x83096c){return new Promise(function(_0x4387ab,_0x3cc0fa){var _0x3779e5=_['values'](_0x1a75d4[_0x43d0('0xe')]);_0x4387ab({'count':_0x3779e5['length'],'rows':_0x3779e5});});},'Telephones':function(_0x24924a){return new Promise(function(_0x28f523,_0x754cd4){var _0xd2039f=_[_0x43d0('0x5f')](_0x1a75d4[_0x43d0('0x7e')]);_0x28f523({'count':_0xd2039f[_0x43d0('0x5b')],'rows':_0xd2039f});});},'Trunks':function(_0x531ba2){return new Promise(function(_0x36e5c0,_0x162fb0){var _0x4645d3=_[_0x43d0('0x5f')](_0x1a75d4['trunks']);_0x36e5c0({'count':_0x4645d3[_0x43d0('0x5b')],'rows':_0x4645d3});});},'OutboundChannels':function(_0x4cf9fb){return new Promise(function(_0x26bf14,_0x525f7b){var _0x3a5421=_[_0x43d0('0x5f')](_0x1a75d4[_0x43d0('0x7f')]);_0x26bf14({'count':_0x3a5421['length'],'rows':_0x3a5421});});},'Outbound':function(_0x1fd03d){return new Promise(function(_0x3e1e3e,_0x3ff45c){_0x3e1e3e(_0x1a75d4[_0x43d0('0x2d')]);});},'Campaigns':function(_0x52919f){return new Promise(function(_0x3c19f7,_0x1ba6c2){var _0x1f607e=_[_0x43d0('0x5f')](_0x1a75d4[_0x43d0('0x80')]);_0x3c19f7({'count':_0x1f607e[_0x43d0('0x5b')],'rows':_0x1f607e});});},'VoiceQueuesPreview':function(_0x3aad81){var _0x44d85e=this;return new Promise(function(_0x49216b,_0x35793a){_0x746f5e['run'](_0x3aad81['id'])[_0x43d0('0x1b')](function(_0x39de5f){_0x49216b({'code':0xc8,'message':_0x39de5f['message']});})[_0x43d0('0x70')](function(_0x43c85c){_0x35793a(_0x44d85e[_0x43d0('0x12')](0x1f4,_0x43c85c[_0x43d0('0x1c')]));});});},'EventManager':function(_0x1303d7){var _0x591118=this;return new Promise(function(_0x93a97a,_0x56cac9){if(!_0x1303d7[_0x43d0('0x81')]){return _0x56cac9(_0x591118['error'](0x1f4,_0x43d0('0x82')));}ami['emit'](_0x43d0('0x83')+_0x1303d7['event'],_0x1303d7['message']);_0x93a97a({'code':0xc8,'message':_0x1303d7});});},'FaxAccounts':function(_0x259ad8){return new Promise(function(_0x4511fb,_0x41e993){var _0xa016ad=_[_0x43d0('0x5f')](_0x1a75d4[_0x43d0('0x84')]);_0x4511fb({'count':_0xa016ad[_0x43d0('0x5b')],'rows':_0xa016ad});});},'SendFax':function(_0xebf7f9){var _0x23b5dc=this;return new Promise(function(_0x35581e,_0x2e1208){_0x617bf[_0x43d0('0x85')](_0xebf7f9)[_0x43d0('0x1b')](function(_0x5aa2bb){_0x35581e({'code':0xc8,'message':_0x5aa2bb[_0x43d0('0x1c')]});})[_0x43d0('0x70')](function(_0x269f05){_0x2e1208(_0x23b5dc[_0x43d0('0x12')](0x1f4,_0x269f05[_0x43d0('0x1c')]));});});},'CheckAfterSend':function(_0x53ff2b){var _0x44e2a9=this;return new Promise(function(_0x348065,_0x3259af){_0x617bf[_0x43d0('0x86')](_0x53ff2b)[_0x43d0('0x1b')](function(_0x3c4537){_0x348065({'code':0xc8,'message':_0x3c4537['message']});})[_0x43d0('0x70')](function(_0x27def6){_0x3259af(_0x44e2a9[_0x43d0('0x12')](0x1f4,_0x27def6['message']));});});}};var _0x17f76f=jayson[_0x43d0('0x87')](_0x50919e)['http']();_0x17f76f['on']('error',function(_0x10c838){return _0x484271(_0x10c838);});_0x17f76f[_0x43d0('0x8')](0x232a,_0x43d0('0x88'),function(){console[_0x43d0('0x89')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x5e284f(_0x43d0('0x8a')+0x232a);});});};
\ No newline at end of file
+var _0xce68=['error','asterisk','username','ami\x20disconnected','join','pick','keys','module','action','Reload','Action','catch','isConnected','command','Command','voiceQueues','hasOwnProperty','strategy','answered','available','loggedIn','pTalking','sumHoldTime','talking','total','unmanaged','abandoned','waiting','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','find','omit','undefined','values','length','voicechannel','uniqueid','channel','filename','format','MixMonitor','ai(mixmonitorid)','then','monitors','/var/spool/asterisk/monitor/','isNil','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','Channel\x20doesn\x27t\x20exist','channels','resolve','StopMixMonitor','destinationchannel','stop','%s.%s','queueChannels','voicequeuechannel','map','voicequeuechannelhangup','Hangup','voicequeuechannelredirect','Redirect','exten','context','telephones','outboundChannels','campaigns','run','event','Event\x20name\x20mandatory','emit','custom:','checkAfterSend','server','http','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','jayson/promise','validate','bluebird','moment','../../../config/environment','../ami','listen','%s/%s','SIP','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','QueuePause'];(function(_0x1203f,_0x554bbc){var _0x365f0a=function(_0x3531d0){while(--_0x3531d0){_0x1203f['push'](_0x1203f['shift']());}};_0x365f0a(++_0x554bbc);}(_0xce68,0x10c));var _0x8ce6=function(_0x972779,_0x43e3ec){_0x972779=_0x972779-0x0;var _0x40bbc3=_0xce68[_0x972779];return _0x40bbc3;};'use strict';var _=require(_0x8ce6('0x0'));var util=require('util');var jayson=require(_0x8ce6('0x1'));var schema=require(_0x8ce6('0x2'));var BPromise=require(_0x8ce6('0x3'));var moment=require(_0x8ce6('0x4'));var config=require(_0x8ce6('0x5'));var properties=require('../properties');var ami=require(_0x8ce6('0x6'));exports[_0x8ce6('0x7')]=function(_0x39301d,_0x5cd417,_0x116e0a){return new BPromise(function(_0x10b3ca,_0x4fed90){var _0x4e5471={'QueuePause':function(_0x34b134){return new Promise(function(_0x357fbb,_0x17811e){var _0x258d09=util['format'](_0x8ce6('0x8'),_0x8ce6('0x9'),_0x34b134[_0x8ce6('0xa')]);if(_0x39301d[_0x8ce6('0xb')]&&_0x39301d[_0x8ce6('0xb')][_0x258d09]&&_0x39301d[_0x8ce6('0xb')][_0x258d09][_0x8ce6('0xc')]){_0x39301d[_0x8ce6('0xb')][_0x258d09][_0x8ce6('0xd')]();}if(_0x39301d[_0x8ce6('0xe')][_0x258d09]){_0x39301d[_0x8ce6('0xe')][_0x258d09][_0x8ce6('0xf')]({'statePause':_0x34b134[_0x8ce6('0x10')]?!![]:![]});}_0x357fbb({'code':0xc8,'message':_0x8ce6('0x11')});});},'Reload':function(_0x1e8b85){var _0x3db848=this;return new Promise(function(_0x38252e,_0x1d7aaf){if(ami['isConnected']()==![]){return _0x1d7aaf(_0x3db848[_0x8ce6('0x12')](0x1f4,[config['asterisk']['ip'],config[_0x8ce6('0x13')][_0x8ce6('0x14')],_0x8ce6('0x15')][_0x8ce6('0x16')]('\x20')));}_0x1e8b85=_[_0x8ce6('0x17')](_0x1e8b85,_[_0x8ce6('0x18')](properties[_0x8ce6('0x19')]));_0x1e8b85[_0x8ce6('0x1a')]=_0x8ce6('0x1b');return ami[_0x8ce6('0x1c')](_0x1e8b85)['then'](function(_0x4474d0){_0x38252e({'code':0xc8,'message':_0x4474d0['message']});})[_0x8ce6('0x1d')](function(_0x175a74){_0x1d7aaf(_0x3db848[_0x8ce6('0x12')](0x1f5,_0x175a74['message']));});});},'Command':function(_0x4ffe5e){var _0x30e233=this;return new Promise(function(_0x2bf89c,_0x4eb0df){if(ami[_0x8ce6('0x1e')]()==![]){return _0x4eb0df(_0x30e233[_0x8ce6('0x12')](0x1f4,[config[_0x8ce6('0x13')]['ip'],config[_0x8ce6('0x13')][_0x8ce6('0x14')],_0x8ce6('0x15')][_0x8ce6('0x16')]('\x20')));}_0x4ffe5e=_[_0x8ce6('0x17')](_0x4ffe5e,_0x8ce6('0x1f'));_0x4ffe5e[_0x8ce6('0x1a')]=_0x8ce6('0x20');return ami[_0x8ce6('0x1c')](_0x4ffe5e)['then'](function(_0x462c8b){_0x2bf89c({'code':0xc8,'message':_0x462c8b['content']});})[_0x8ce6('0x1d')](function(_0x28c639){_0x4eb0df(_0x30e233[_0x8ce6('0x12')](0x1f5,_0x28c639['message']));});});},'VoiceQueues':function(_0x4862b0){return new Promise(function(_0x5d72b0,_0x5c2b61){var _0x3a8325=[];for(var _0x1e95cb in _0x39301d[_0x8ce6('0x21')]){if(_0x39301d[_0x8ce6('0x21')][_0x8ce6('0x22')](_0x1e95cb)){var _0xadc624=_0x39301d['voiceQueues'][_0x1e95cb];var _0x5656ab={'id':_0xadc624['id'],'name':_0xadc624[_0x8ce6('0xa')],'strategy':_0xadc624[_0x8ce6('0x23')],'answered':_0xadc624[_0x8ce6('0x24')],'available':_0xadc624[_0x8ce6('0x25')],'loggedIn':_0xadc624[_0x8ce6('0x26')],'pTalking':_0xadc624[_0x8ce6('0x27')],'sumBillable':_0xadc624['sumBillable'],'sumDuration':_0xadc624['sumDuration'],'sumHoldTime':_0xadc624[_0x8ce6('0x28')]||0x0,'talking':_0xadc624[_0x8ce6('0x29')],'total':_0xadc624[_0x8ce6('0x2a')],'type':_0xadc624['type'],'unmanaged':_0xadc624[_0x8ce6('0x2b')],'abandoned':_0xadc624[_0x8ce6('0x2c')],'waiting':_0xadc624[_0x8ce6('0x2d')],'loggedInDb':_0xadc624[_0x8ce6('0x2e')]};if(_0xadc624['type']===_0x8ce6('0x2f')){_0x5656ab[_0x8ce6('0x30')]=_0xadc624['dialActive'];_0x5656ab['dialMethod']=_0xadc624[_0x8ce6('0x31')];_0x5656ab[_0x8ce6('0x32')]=_0xadc624[_0x8ce6('0x32')];_0x5656ab[_0x8ce6('0x33')]=_0xadc624[_0x8ce6('0x33')];_0x5656ab[_0x8ce6('0x34')]=_0xadc624[_0x8ce6('0x34')];_0x5656ab[_0x8ce6('0x35')]=_0xadc624[_0x8ce6('0x35')];_0x5656ab[_0x8ce6('0x36')]=_0xadc624[_0x8ce6('0x36')];_0x5656ab[_0x8ce6('0x37')]=_0xadc624[_0x8ce6('0x37')];_0x5656ab[_0x8ce6('0x38')]=_0xadc624[_0x8ce6('0x38')];_0x5656ab[_0x8ce6('0x39')]=_0xadc624[_0x8ce6('0x39')];_0x5656ab[_0x8ce6('0x3a')]=_0xadc624[_0x8ce6('0x3a')];_0x5656ab['outboundCongestionCallsDay']=_0xadc624[_0x8ce6('0x3b')];_0x5656ab[_0x8ce6('0x3c')]=_0xadc624[_0x8ce6('0x3c')];_0x5656ab[_0x8ce6('0x3d')]=_0xadc624[_0x8ce6('0x3d')];_0x5656ab['outboundDropCallsDayTimeout']=_0xadc624['outboundDropCallsDayTimeout'];_0x5656ab[_0x8ce6('0x3e')]=_0xadc624[_0x8ce6('0x3e')];_0x5656ab['outboundNoSuchCallsDay']=_0xadc624['outboundNoSuchCallsDay'];_0x5656ab[_0x8ce6('0x3f')]=_0xadc624[_0x8ce6('0x3f')];_0x5656ab[_0x8ce6('0x40')]=_0xadc624[_0x8ce6('0x40')];_0x5656ab[_0x8ce6('0x41')]=_0xadc624[_0x8ce6('0x41')];_0x5656ab['outboundUnknownCallsDay']=_0xadc624[_0x8ce6('0x42')];_0x5656ab['predictiveIntervalAnsweredCalls']=_0xadc624[_0x8ce6('0x43')];_0x5656ab['predictiveIntervalAvgHoldtime']=_0xadc624[_0x8ce6('0x44')];_0x5656ab[_0x8ce6('0x45')]=_0xadc624[_0x8ce6('0x45')];_0x5656ab[_0x8ce6('0x46')]=_0xadc624['predictiveIntervalDroppedCallsCallersExit'];_0x5656ab[_0x8ce6('0x47')]=_0xadc624['predictiveIntervalDroppedCallsTimeout'];_0x5656ab[_0x8ce6('0x48')]=_0xadc624['predictiveIntervalErlangCalls'];_0x5656ab[_0x8ce6('0x49')]=_0xadc624[_0x8ce6('0x49')];_0x5656ab[_0x8ce6('0x4a')]=_0xadc624['predictiveIntervalHitRate'];_0x5656ab[_0x8ce6('0x4b')]=_0xadc624[_0x8ce6('0x4b')];_0x5656ab[_0x8ce6('0x4c')]=_0xadc624[_0x8ce6('0x4c')];_0x5656ab[_0x8ce6('0x4d')]=_0xadc624[_0x8ce6('0x4d')];_0x5656ab['predictiveIntervalTotalCalls']=_0xadc624[_0x8ce6('0x4e')];_0x5656ab[_0x8ce6('0x4f')]=_0xadc624[_0x8ce6('0x4f')];_0x5656ab['originated']=_0xadc624[_0x8ce6('0x50')];_0x5656ab[_0x8ce6('0x51')]=_0xadc624[_0x8ce6('0x51')];_0x5656ab[_0x8ce6('0x52')]=_0xadc624[_0x8ce6('0x52')];_0x5656ab[_0x8ce6('0x53')]=_0xadc624[_0x8ce6('0x53')];_0x5656ab[_0x8ce6('0x54')]=_0xadc624[_0x8ce6('0x54')];_0x5656ab[_0x8ce6('0x55')]=_0xadc624[_0x8ce6('0x55')];_0x5656ab[_0x8ce6('0x56')]=_0xadc624[_0x8ce6('0x56')];}if(_0xadc624[_0x8ce6('0x57')]){_0x5656ab[_0x8ce6('0x57')]={'id':_0xadc624['Trunk']['id'],'name':_0xadc624[_0x8ce6('0x57')][_0x8ce6('0xa')],'active':_0xadc624[_0x8ce6('0x57')][_0x8ce6('0x58')],'callerid':_0xadc624[_0x8ce6('0x57')][_0x8ce6('0x59')]};}if(_0xadc624[_0x8ce6('0x5a')]){_0x5656ab[_0x8ce6('0x5a')]={'id':_0xadc624[_0x8ce6('0x5a')]['id'],'name':_0xadc624[_0x8ce6('0x5a')][_0x8ce6('0xa')]};}_0x3a8325[_0x8ce6('0x5b')](_0x5656ab);}}_0x5d72b0({'count':_0x3a8325['length'],'rows':_0x3a8325});});},'UpdateVoiceQueue':function(_0x1d18a6){return new Promise(function(_0x29b020,_0x16ba59){var _0x28d685=_[_0x8ce6('0x5c')](_0x39301d[_0x8ce6('0x21')],{'id':parseInt(_0x1d18a6['id'])});var _0x58d54f=_[_0x8ce6('0x5d')](_0x1d18a6,['id']);if(_0x28d685){for(var _0x3137bb in _0x58d54f){if(typeof _0x58d54f[_0x3137bb]!==_0x8ce6('0x5e')&&typeof _0x28d685[_0x3137bb]!==_0x8ce6('0x5e')){_0x28d685[_0x3137bb]=_0x58d54f[_0x3137bb];}}_0x29b020(_0x28d685);}else{_0x16ba59();}});},'VoiceChannels':function(_0x563641){return new Promise(function(_0x212d18,_0x527133){var _0x106c9a=_[_0x8ce6('0x5f')](_0x39301d['channels']);_0x212d18({'count':_0x106c9a[_0x8ce6('0x60')],'rows':_0x106c9a});});},'VoiceChannelMixMonitor':function(_0x102fae){var _0x3c70a9=this;return new Promise(function(_0x154d01,_0xe74d6a){if(ami['isConnected']()==![]){return _0xe74d6a(_0x3c70a9[_0x8ce6('0x12')](0x1f4,[config[_0x8ce6('0x13')]['ip'],config['asterisk'][_0x8ce6('0x14')],'ami\x20disconnected']['join']('\x20')));}var _0x5b3551=schema(properties[_0x8ce6('0x61')])[_0x8ce6('0x2')](_0x102fae);if(_0x5b3551['length']>0x0){return _0xe74d6a(_0x3c70a9['error'](0x1f4,_['map'](_0x5b3551,_0x8ce6('0x4f'))[_0x8ce6('0x16')](',\x20')));}var _0xf81694=_[_0x8ce6('0x5c')](_0x39301d['channels'],{'uniqueid':_0x102fae[_0x8ce6('0x62')]});if(_0xf81694&&_0xf81694[_0x8ce6('0x63')]){var _0x25e894=util['format']('%s.%s',_0x102fae[_0x8ce6('0x64')]||_0x102fae[_0x8ce6('0x62')],_0x102fae[_0x8ce6('0x65')]||'wav');return ami[_0x8ce6('0x1c')]({'action':_0x8ce6('0x66'),'channel':_0xf81694[_0x8ce6('0x63')],'file':_0x25e894,'options':_0x8ce6('0x67')})[_0x8ce6('0x68')](function(_0x4e5ed7){var _0x3dc9e4=_[_0x8ce6('0x5c')](_0xf81694[_0x8ce6('0x69')],{'filename':_0x8ce6('0x6a')+_0x25e894['toLowerCase']()});if(_[_0x8ce6('0x6b')](_0x3dc9e4)){_0xf81694[_0x8ce6('0x69')][_0x8ce6('0x5b')]({'filename':_0x8ce6('0x6a')+_0x25e894[_0x8ce6('0x6c')](),'createdAt':moment()[_0x8ce6('0x65')](_0x8ce6('0x6d')),'mixmonitorid':_0x4e5ed7[_0x8ce6('0x6e')],'status':_0x8ce6('0x6f')});}else{_0x3dc9e4[_0x8ce6('0x6e')]=_0x4e5ed7['mixmonitorid'];_0x3dc9e4['status']=_0x8ce6('0x6f');}_0x154d01({'code':0xc8,'message':[_0x102fae[_0x8ce6('0x62')],'MixMonitor\x20Success',_0x4e5ed7[_0x8ce6('0x6e')]]['join']('\x20'),'mixmonitorid':_0x4e5ed7[_0x8ce6('0x6e')]});})[_0x8ce6('0x1d')](function(_0x1ef538){_0xe74d6a(_0x3c70a9['error'](0x1f5,[_0x102fae[_0x8ce6('0x62')],_0x1ef538[_0x8ce6('0x4f')][_0x8ce6('0x6c')]()][_0x8ce6('0x16')]('\x20')));});}else{return _0xe74d6a(_0x3c70a9[_0x8ce6('0x12')](0x1f5,_0x8ce6('0x70')));}});},'VoiceChannelStopMixMonitor':function(_0x1e5383){var _0xaa5624=this;return new Promise(function(_0x2f78f7,_0x3a86d0){if(ami['isConnected']()==![]){return _0x3a86d0(_0xaa5624[_0x8ce6('0x12')](0x1f4,[config[_0x8ce6('0x13')]['ip'],config[_0x8ce6('0x13')]['username'],_0x8ce6('0x15')][_0x8ce6('0x16')]('\x20')));}var _0x2a26c0=schema(properties[_0x8ce6('0x61')])[_0x8ce6('0x2')](_0x1e5383);if(_0x2a26c0['length']>0x0){return _0x3a86d0(_0xaa5624['error'](0x1f4,_['map'](_0x2a26c0,'message')[_0x8ce6('0x16')](',\x20')));}var _0x5e45d6=_[_0x8ce6('0x5c')](_0x39301d[_0x8ce6('0x71')],{'uniqueid':_0x1e5383[_0x8ce6('0x62')]});if(_0x5e45d6){return BPromise[_0x8ce6('0x72')]()['then'](function(){if(_0x5e45d6[_0x8ce6('0x63')]){return ami[_0x8ce6('0x1c')]({'action':_0x8ce6('0x73'),'channel':_0x5e45d6[_0x8ce6('0x63')],'mixmonitorid':_0x1e5383[_0x8ce6('0x6e')]})['catch'](function(_0x218fee){});}})['then'](function(){if(_0x5e45d6[_0x8ce6('0x74')]){return ami['Action']({'action':'StopMixMonitor','channel':_0x5e45d6[_0x8ce6('0x74')],'mixmonitorid':_0x1e5383['mixmonitorid']})[_0x8ce6('0x1d')](function(_0x4485be){});}})[_0x8ce6('0x68')](function(_0x370a8c){var _0x6a8ee9=_['find'](_0x5e45d6[_0x8ce6('0x69')],{'mixmonitorid':_0x1e5383[_0x8ce6('0x6e')]});if(_0x6a8ee9){_0x6a8ee9['status']=_0x8ce6('0x75');}})[_0x8ce6('0x68')](function(){var _0x3eb715=util['format'](_0x8ce6('0x76'),_0x1e5383[_0x8ce6('0x64')]||_0x1e5383[_0x8ce6('0x62')],_0x1e5383[_0x8ce6('0x65')]||'wav');var _0x1db316=_['find'](_0x5e45d6[_0x8ce6('0x69')],{'filename':_0x8ce6('0x6a')+_0x3eb715[_0x8ce6('0x6c')]()});if(_0x1db316){_0x1db316['status']=_0x8ce6('0x75');}})[_0x8ce6('0x68')](function(){_0x2f78f7({'code':0xc8,'message':[_0x1e5383[_0x8ce6('0x62')],'StopMixMonitor\x20Success'][_0x8ce6('0x16')]('\x20')});})[_0x8ce6('0x1d')](function(_0x21d38a){_0x3a86d0(_0xaa5624[_0x8ce6('0x12')](0x1f5,[_0x1e5383[_0x8ce6('0x62')],_0x21d38a[_0x8ce6('0x4f')][_0x8ce6('0x6c')]()][_0x8ce6('0x16')]('\x20')));});}else{return _0x3a86d0(_0xaa5624[_0x8ce6('0x12')](0x1f5,_0x8ce6('0x70')));}});},'VoiceQueuesChannels':function(_0x216dc3){return new Promise(function(_0x7314e5,_0xdb5554){var _0x55d7cd=_['values'](_0x39301d[_0x8ce6('0x77')]);_0x7314e5({'count':_0x55d7cd['length'],'rows':_0x55d7cd});});},'VoiceQueuesChannel':function(_0x46de33){var _0x1b2dbb=this;return new Promise(function(_0x393177,_0x239d38){var _0x3b4e8b=schema(properties[_0x8ce6('0x78')])[_0x8ce6('0x2')](_0x46de33);if(_0x3b4e8b['length']>0x0){return _0x239d38(_0x1b2dbb[_0x8ce6('0x12')](0x1f4,_[_0x8ce6('0x79')](_0x3b4e8b,_0x8ce6('0x4f'))[_0x8ce6('0x16')](',\x20')));}var _0x3eda12=_['find'](_0x39301d[_0x8ce6('0x77')],{'uniqueid':_0x46de33[_0x8ce6('0x62')]});if(_0x3eda12){_0x393177(_0x3eda12);}else{return _0x239d38(_0x1b2dbb[_0x8ce6('0x12')](0x1f5,_0x8ce6('0x70')));}});},'VoiceQueuesChannelHangup':function(_0x11241e){var _0xb2b3c2=this;return new Promise(function(_0x39f31d,_0x47d17f){if(ami[_0x8ce6('0x1e')]()==![]){return _0x47d17f(_0xb2b3c2['error'](0x1f4,[config['asterisk']['ip'],config[_0x8ce6('0x13')][_0x8ce6('0x14')],_0x8ce6('0x15')]['join']('\x20')));}var _0x319588=schema(properties[_0x8ce6('0x7a')])[_0x8ce6('0x2')](_0x11241e);if(_0x319588[_0x8ce6('0x60')]>0x0){return _0x47d17f(_0xb2b3c2[_0x8ce6('0x12')](0x1f4,_['map'](_0x319588,_0x8ce6('0x4f'))[_0x8ce6('0x16')](',\x20')));}var _0x31de73=_['find'](_0x39301d[_0x8ce6('0x77')],{'uniqueid':_0x11241e['uniqueid']});if(_0x31de73&&_0x31de73['channel']){return ami[_0x8ce6('0x1c')]({'action':_0x8ce6('0x7b'),'channel':_0x31de73[_0x8ce6('0x63')]})['then'](function(_0xebe36d){_0x39f31d({'code':0xc8,'message':[_0x11241e[_0x8ce6('0x62')],_0xebe36d[_0x8ce6('0x4f')][_0x8ce6('0x6c')]()][_0x8ce6('0x16')]('\x20')});})['catch'](function(_0x39b33d){_0x47d17f(_0xb2b3c2[_0x8ce6('0x12')](0x1f5,[_0x11241e[_0x8ce6('0x62')],_0x39b33d[_0x8ce6('0x4f')][_0x8ce6('0x6c')]()][_0x8ce6('0x16')]('\x20')));});}else{return _0x47d17f(_0xb2b3c2[_0x8ce6('0x12')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x267e30){var _0x20f27=this;return new Promise(function(_0x5382b6,_0x178bb1){if(ami[_0x8ce6('0x1e')]()==![]){return _0x178bb1(_0x20f27[_0x8ce6('0x12')](0x1f4,[config['asterisk']['ip'],config['asterisk'][_0x8ce6('0x14')],_0x8ce6('0x15')][_0x8ce6('0x16')]('\x20')));}var _0x22bfd3=schema(properties[_0x8ce6('0x7c')])[_0x8ce6('0x2')](_0x267e30);if(_0x22bfd3[_0x8ce6('0x60')]>0x0){return _0x178bb1(_0x20f27[_0x8ce6('0x12')](0x1f4,_['map'](_0x22bfd3,_0x8ce6('0x4f'))[_0x8ce6('0x16')](',\x20')));}var _0xfc059b=_[_0x8ce6('0x5c')](_0x39301d[_0x8ce6('0x77')],{'uniqueid':_0x267e30[_0x8ce6('0x62')]});if(_0xfc059b&&_0xfc059b[_0x8ce6('0x63')]){return ami[_0x8ce6('0x1c')]({'action':_0x8ce6('0x7d'),'channel':_0xfc059b[_0x8ce6('0x63')],'exten':_0x267e30[_0x8ce6('0x7e')],'context':_0x267e30[_0x8ce6('0x7f')]||_0xfc059b[_0x8ce6('0x7f')],'priority':0x1})[_0x8ce6('0x68')](function(_0x458f09){_0x5382b6({'code':0xc8,'message':[_0x267e30[_0x8ce6('0x62')],_0x458f09[_0x8ce6('0x4f')][_0x8ce6('0x6c')]()][_0x8ce6('0x16')]('\x20')});})[_0x8ce6('0x1d')](function(_0x1d3843){_0x178bb1(_0x20f27[_0x8ce6('0x12')](0x1f5,[_0x267e30[_0x8ce6('0x62')],_0x1d3843[_0x8ce6('0x4f')]['toLowerCase']()]['join']('\x20')));});}else{return _0x178bb1(_0x20f27[_0x8ce6('0x12')](0x1f5,_0x8ce6('0x70')));}});},'Agents':function(_0xc07c3){return new Promise(function(_0x2429f2,_0x4bf699){var _0x13e61a=_[_0x8ce6('0x5f')](_0x39301d[_0x8ce6('0xe')]);_0x2429f2({'count':_0x13e61a[_0x8ce6('0x60')],'rows':_0x13e61a});});},'Telephones':function(_0x23fc30){return new Promise(function(_0x26a28e,_0x1213aa){var _0x1bdc7f=_['values'](_0x39301d[_0x8ce6('0x80')]);_0x26a28e({'count':_0x1bdc7f[_0x8ce6('0x60')],'rows':_0x1bdc7f});});},'Trunks':function(_0x156390){return new Promise(function(_0x6d3475,_0x36339c){var _0x15c5e1=_[_0x8ce6('0x5f')](_0x39301d['trunks']);_0x6d3475({'count':_0x15c5e1[_0x8ce6('0x60')],'rows':_0x15c5e1});});},'OutboundChannels':function(_0x5e31b4){return new Promise(function(_0xc25857,_0x19d8a8){var _0x1587c7=_[_0x8ce6('0x5f')](_0x39301d[_0x8ce6('0x81')]);_0xc25857({'count':_0x1587c7[_0x8ce6('0x60')],'rows':_0x1587c7});});},'Outbound':function(_0x3616bc){return new Promise(function(_0x444d6b,_0x31bfc4){_0x444d6b(_0x39301d[_0x8ce6('0x2f')]);});},'Campaigns':function(_0x285c3d){return new Promise(function(_0x2172af,_0x12a792){var _0x212a7a=_[_0x8ce6('0x5f')](_0x39301d[_0x8ce6('0x82')]);_0x2172af({'count':_0x212a7a['length'],'rows':_0x212a7a});});},'VoiceQueuesPreview':function(_0x3454b9){var _0x2a6fb=this;return new Promise(function(_0x598830,_0x211cfc){_0x5cd417[_0x8ce6('0x83')](_0x3454b9['id'])[_0x8ce6('0x68')](function(_0x59b718){_0x598830({'code':0xc8,'message':_0x59b718[_0x8ce6('0x4f')]});})['catch'](function(_0x54d62c){_0x211cfc(_0x2a6fb['error'](0x1f4,_0x54d62c[_0x8ce6('0x4f')]));});});},'EventManager':function(_0x4c5a19){var _0x2eb897=this;return new Promise(function(_0x3c6352,_0x425649){if(!_0x4c5a19[_0x8ce6('0x84')]){return _0x425649(_0x2eb897['error'](0x1f4,_0x8ce6('0x85')));}ami[_0x8ce6('0x86')](_0x8ce6('0x87')+_0x4c5a19['event'],_0x4c5a19[_0x8ce6('0x4f')]);_0x3c6352({'code':0xc8,'message':_0x4c5a19});});},'FaxAccounts':function(_0x470dd9){return new Promise(function(_0x2817bd,_0x3e4f27){var _0x5b20db=_[_0x8ce6('0x5f')](_0x39301d['faxAccounts']);_0x2817bd({'count':_0x5b20db[_0x8ce6('0x60')],'rows':_0x5b20db});});},'SendFax':function(_0x59a21d){var _0xda8278=this;return new Promise(function(_0x50cf5b,_0x46b34a){_0x116e0a['send'](_0x59a21d)[_0x8ce6('0x68')](function(_0x27ba25){_0x50cf5b({'code':0xc8,'message':_0x27ba25[_0x8ce6('0x4f')]});})[_0x8ce6('0x1d')](function(_0x529af4){_0x46b34a(_0xda8278['error'](0x1f4,_0x529af4['message']));});});},'CheckAfterSend':function(_0x29927a){var _0x3dec6a=this;return new Promise(function(_0x41bb74,_0x26530e){_0x116e0a[_0x8ce6('0x88')](_0x29927a)[_0x8ce6('0x68')](function(_0x52ba74){_0x41bb74({'code':0xc8,'message':_0x52ba74[_0x8ce6('0x4f')]});})[_0x8ce6('0x1d')](function(_0xe3d0c3){_0x26530e(_0x3dec6a[_0x8ce6('0x12')](0x1f4,_0xe3d0c3[_0x8ce6('0x4f')]));});});}};var _0x2e4ae1=jayson[_0x8ce6('0x89')](_0x4e5471)[_0x8ce6('0x8a')]();_0x2e4ae1['on'](_0x8ce6('0x12'),function(_0x286648){return _0x4fed90(_0x286648);});_0x2e4ae1['listen'](0x232a,_0x8ce6('0x8b'),function(){console[_0x8ce6('0x8c')](_0x8ce6('0x8d'),0x232a);return _0x10b3ca(_0x8ce6('0x8e')+0x232a);});});};
\ No newline at end of file
index 5ede933..190189b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbea2=['[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','Unknown','format','user:%s','trigger:%s','action','merge','length','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost','socket.io-emitter','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','split','phone','map','destcalleridnum','calleridnum','routeId','firstName','lastName','mobile','updatedAt','resolve','then','isEmpty','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','calleridname','<unknown>','destcalleridname','createContact','push'];(function(_0x3cef2a,_0x48bc9d){var _0x4a303b=function(_0x4a270e){while(--_0x4a270e){_0x3cef2a['push'](_0x3cef2a['shift']());}};_0x4a303b(++_0x48bc9d);}(_0xbea2,0x153));var _0x2bea=function(_0x474900,_0x282939){_0x474900=_0x474900-0x0;var _0x268580=_0xbea2[_0x474900];return _0x268580;};'use strict';var _=require('lodash');var BPromise=require('bluebird');var Redis=require(_0x2bea('0x0'));var util=require(_0x2bea('0x1'));var config=require(_0x2bea('0x2'));var logger=require(_0x2bea('0x3'))(_0x2bea('0x4'));var cmContactRpc=require(_0x2bea('0x5'));config[_0x2bea('0x6')]=_[_0x2bea('0x7')](config['redis'],{'host':_0x2bea('0x8'),'port':0x18eb});var io=require(_0x2bea('0x9'))(new Redis(config[_0x2bea('0x6')]));function emit(_0x3df28c,_0x3633d8,_0x5273bb,_0x5988df,_0x276258){logger[_0x2bea('0xa')](_0x2bea('0xb'),_0x3df28c,_0x3633d8['id'],_0x5273bb,_0x5988df,JSON[_0x2bea('0xc')](_0x276258));io['to'](_0x5273bb)[_0x2bea('0xd')](_0x5988df,_0x276258);}exports[_0x2bea('0xe')]=function(_0x3bfb93,_0x246e5f,_0x3a6b68,_0x431173){var _0x372520,_0x2e15a6;var _0x485cb3={};var _0x55ef4a;var _0x13d664=Number(_0x3a6b68[_0x2bea('0xf')]);var _0x470bfa=_0x3a6b68[_0x2bea('0x10')]?Boolean(Number(_0x3a6b68['data2'])):![];var _0x22ba0b;var _0x3a1205=![];if(!_[_0x2bea('0x11')](_0x3a6b68['data5'])){if(_0x3a6b68[_0x2bea('0x12')]=='1')_0x3a1205=!![];}if(!_0x3a1205){if(_0x431173[_0x2bea('0x13')]){_0x485cb3['id']=_0x431173[_0x2bea('0x13')];}}if(!_0x485cb3['id']){_0x485cb3[_0x2bea('0x14')]=_0x13d664;_0x22ba0b=_0x3a6b68[_0x2bea('0x15')]&&_0x3a6b68[_0x2bea('0x15')]!=='0'?_0x3a6b68[_0x2bea('0x15')][_0x2bea('0x16')](','):[_0x2bea('0x17')];_0x485cb3['$or']=_[_0x2bea('0x18')](_0x22ba0b,function(_0x3cbc11){var _0x2f0087={};_0x2f0087[_0x3cbc11]=_0x431173['routeId']?_0x431173[_0x2bea('0x19')]:_0x431173[_0x2bea('0x1a')];return _0x2f0087;});_0x55ef4a=_0x431173[_0x2bea('0x1b')]?_0x431173[_0x2bea('0x19')]:_0x431173['calleridnum'];}var _0x1e0afa=['id',_0x2bea('0x1c'),_0x2bea('0x1d'),_0x2bea('0x17'),_0x2bea('0x1e'),'fax','ListId','createdAt','scheduledAt',_0x2bea('0x1f')];var _0x235df1=_['union'](_0x1e0afa,_0x22ba0b);BPromise[_0x2bea('0x20')]()[_0x2bea('0x21')](cmContactRpc['getContacts']({'attributes':_0x235df1,'where':_0x485cb3,'phone':_0x55ef4a}))[_0x2bea('0x21')](function(_0x5a5e2f){_0x2e15a6=_0x5a5e2f;if(!_[_0x2bea('0x22')](_0x2e15a6)){if(_0x2e15a6['length']===0x1){_0x372520=_0x2e15a6[0x0];logger[_0x2bea('0xa')](_0x2bea('0x23'),_0x431173[_0x2bea('0x24')],_0x246e5f['id'],_0x372520['id']);}else{logger[_0x2bea('0xa')]('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0x431173[_0x2bea('0x24')],_0x246e5f['id'],_[_0x2bea('0x18')](_0x2e15a6,'id')[_0x2bea('0x25')](','));}return;}else{logger['info'](_0x2bea('0x26'),_0x431173[_0x2bea('0x24')],_0x246e5f['id']);var _0x52807c={'ListId':_0x13d664};var _0x2851ad=_0x3a6b68[_0x2bea('0x27')]&&_0x3a6b68['data4']!=='0'?_0x3a6b68[_0x2bea('0x27')]:'phone';if(_0x470bfa){logger['info'](_0x2bea('0x28'),_0x431173[_0x2bea('0x24')],_0x246e5f['id']);_0x52807c[_0x2851ad]=_[_0x2bea('0x11')](_0x431173[_0x2bea('0x1b')])?_0x431173[_0x2bea('0x1a')]:_0x431173[_0x2bea('0x19')];if(_[_0x2bea('0x11')](_0x431173[_0x2bea('0x1b')])){_0x52807c[_0x2bea('0x1c')]=_0x431173[_0x2bea('0x29')]&&_0x431173['calleridname']!==_0x2bea('0x2a')?_0x431173[_0x2bea('0x29')]:'Unknown';}else{_0x52807c[_0x2bea('0x1c')]=_0x431173[_0x2bea('0x2b')]&&_0x431173[_0x2bea('0x2b')]!==_0x2bea('0x2a')?_0x431173['destcalleridname']:'Unknown';}return BPromise[_0x2bea('0x20')]()[_0x2bea('0x21')](cmContactRpc[_0x2bea('0x2c')](_0x52807c))[_0x2bea('0x21')](function(_0x38424c){_0x372520=_0x38424c;_0x2e15a6[_0x2bea('0x2d')](_0x38424c);if(_0x372520){logger[_0x2bea('0xa')](_0x2bea('0x2e'),_0x431173[_0x2bea('0x24')],_0x246e5f['id'],_0x372520['id']);}return;});}else{logger[_0x2bea('0xa')](_0x2bea('0x2f'),_0x431173[_0x2bea('0x24')],_0x246e5f['id']);_0x52807c[_0x2851ad]=_[_0x2bea('0x11')](_0x431173['routeId'])?_0x431173[_0x2bea('0x1a')]:_0x431173[_0x2bea('0x19')];if(_[_0x2bea('0x11')](_0x431173[_0x2bea('0x1b')])){_0x52807c[_0x2bea('0x1c')]=_0x431173[_0x2bea('0x29')]&&_0x431173[_0x2bea('0x29')]!==_0x2bea('0x2a')?_0x431173['calleridname']:'Unknown';}else{_0x52807c[_0x2bea('0x1c')]=_0x431173['destcalleridname']&&_0x431173[_0x2bea('0x2b')]!==_0x2bea('0x2a')?_0x431173[_0x2bea('0x2b')]:_0x2bea('0x30');}_0x372520=_0x52807c;_0x2e15a6['push'](_0x52807c);return;}}})[_0x2bea('0x21')](function(){if(_0x3bfb93){emit(_0x431173['uniqueid'],_0x246e5f,util[_0x2bea('0x31')](_0x2bea('0x32'),_0x3bfb93['name']),util[_0x2bea('0x31')](_0x2bea('0x33'),_0x3a6b68[_0x2bea('0x34')]['toLowerCase']()),{'evt':_[_0x2bea('0x35')](_0x431173,{'autoCreate':_0x470bfa}),'contact':_0x372520===undefined?{}:_0x372520,'contacts':_0x2e15a6[_0x2bea('0x36')]===0x0?undefined:_0x2e15a6});}});};
\ No newline at end of file
+var _0x72a1=['lastName','scheduledAt','updatedAt','union','getContacts','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','<unknown>','calleridname','Unknown','destcalleridname','resolve','then','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','format','name','trigger:%s','action','toLowerCase','merge','ioredis','../../../../config/environment','trigger','../../rpc/cmContact','redis','defaults','localhost','socket.io-emitter','info','[CM][%s][%s]','emit','data1','data2','isNil','data5','xmd-contactid','ListId','data3','split','phone','$or','map','destcalleridnum','calleridnum','routeId','firstName'];(function(_0x199e02,_0x314b4d){var _0x44150f=function(_0x2f93ba){while(--_0x2f93ba){_0x199e02['push'](_0x199e02['shift']());}};_0x44150f(++_0x314b4d);}(_0x72a1,0x159));var _0x172a=function(_0x5be805,_0x472ca3){_0x5be805=_0x5be805-0x0;var _0x86f52f=_0x72a1[_0x5be805];return _0x86f52f;};'use strict';var _=require('lodash');var BPromise=require('bluebird');var Redis=require(_0x172a('0x0'));var util=require('util');var config=require(_0x172a('0x1'));var logger=require('../../../../config/logger')(_0x172a('0x2'));var cmContactRpc=require(_0x172a('0x3'));config[_0x172a('0x4')]=_[_0x172a('0x5')](config[_0x172a('0x4')],{'host':_0x172a('0x6'),'port':0x18eb});var io=require(_0x172a('0x7'))(new Redis(config['redis']));function emit(_0x14e670,_0x4d9a64,_0x26ac85,_0x5c54e3,_0x40b43e){logger[_0x172a('0x8')](_0x172a('0x9'),_0x14e670,_0x4d9a64['id'],_0x26ac85,_0x5c54e3,JSON['stringify'](_0x40b43e));io['to'](_0x26ac85)[_0x172a('0xa')](_0x5c54e3,_0x40b43e);}exports['exec']=function(_0x1473f0,_0x73f511,_0x44ee9d,_0x576d94){var _0x40dccf,_0x49b964;var _0x219da2={};var _0x440df0;var _0x59eeef=Number(_0x44ee9d[_0x172a('0xb')]);var _0x1aee84=_0x44ee9d['data2']?Boolean(Number(_0x44ee9d[_0x172a('0xc')])):![];var _0x5601f6;var _0x5acff3=![];if(!_[_0x172a('0xd')](_0x44ee9d[_0x172a('0xe')])){if(_0x44ee9d[_0x172a('0xe')]=='1')_0x5acff3=!![];}if(!_0x5acff3){if(_0x576d94[_0x172a('0xf')]){_0x219da2['id']=_0x576d94[_0x172a('0xf')];}}if(!_0x219da2['id']){_0x219da2[_0x172a('0x10')]=_0x59eeef;_0x5601f6=_0x44ee9d[_0x172a('0x11')]&&_0x44ee9d[_0x172a('0x11')]!=='0'?_0x44ee9d[_0x172a('0x11')][_0x172a('0x12')](','):[_0x172a('0x13')];_0x219da2[_0x172a('0x14')]=_[_0x172a('0x15')](_0x5601f6,function(_0x57f068){var _0x3d0c7e={};_0x3d0c7e[_0x57f068]=_0x576d94['routeId']?_0x576d94[_0x172a('0x16')]:_0x576d94[_0x172a('0x17')];return _0x3d0c7e;});_0x440df0=_0x576d94[_0x172a('0x18')]?_0x576d94[_0x172a('0x16')]:_0x576d94[_0x172a('0x17')];}var _0x52aea4=['id',_0x172a('0x19'),_0x172a('0x1a'),'phone','mobile','fax',_0x172a('0x10'),'createdAt',_0x172a('0x1b'),_0x172a('0x1c')];var _0x145f67=_[_0x172a('0x1d')](_0x52aea4,_0x5601f6);BPromise['resolve']()['then'](cmContactRpc[_0x172a('0x1e')]({'attributes':_0x145f67,'where':_0x219da2,'phone':_0x440df0}))['then'](function(_0x101b7b){_0x49b964=_0x101b7b;if(!_['isEmpty'](_0x49b964)){if(_0x49b964[_0x172a('0x1f')]===0x1){_0x40dccf=_0x49b964[0x0];logger[_0x172a('0x8')](_0x172a('0x20'),_0x576d94[_0x172a('0x21')],_0x73f511['id'],_0x40dccf['id']);}else{logger['info'](_0x172a('0x22'),_0x576d94[_0x172a('0x21')],_0x73f511['id'],_[_0x172a('0x15')](_0x49b964,'id')['join'](','));}return;}else{logger[_0x172a('0x8')](_0x172a('0x23'),_0x576d94[_0x172a('0x21')],_0x73f511['id']);var _0x5eb7ad={'ListId':_0x59eeef};var _0x43f807=_0x44ee9d['data4']&&_0x44ee9d[_0x172a('0x24')]!=='0'?_0x44ee9d[_0x172a('0x24')]:_0x172a('0x13');if(_0x1aee84){logger[_0x172a('0x8')](_0x172a('0x25'),_0x576d94[_0x172a('0x21')],_0x73f511['id']);_0x5eb7ad[_0x43f807]=_[_0x172a('0xd')](_0x576d94['routeId'])?_0x576d94[_0x172a('0x17')]:_0x576d94[_0x172a('0x16')];if(_[_0x172a('0xd')](_0x576d94[_0x172a('0x18')])){_0x5eb7ad[_0x172a('0x19')]=_0x576d94['calleridname']&&_0x576d94['calleridname']!==_0x172a('0x26')?_0x576d94[_0x172a('0x27')]:_0x172a('0x28');}else{_0x5eb7ad[_0x172a('0x19')]=_0x576d94[_0x172a('0x29')]&&_0x576d94[_0x172a('0x29')]!=='<unknown>'?_0x576d94['destcalleridname']:'Unknown';}return BPromise[_0x172a('0x2a')]()['then'](cmContactRpc['createContact'](_0x5eb7ad))[_0x172a('0x2b')](function(_0x21ef2c){_0x40dccf=_0x21ef2c;_0x49b964[_0x172a('0x2c')](_0x21ef2c);if(_0x40dccf){logger[_0x172a('0x8')](_0x172a('0x2d'),_0x576d94[_0x172a('0x21')],_0x73f511['id'],_0x40dccf['id']);}return;});}else{logger[_0x172a('0x8')](_0x172a('0x2e'),_0x576d94[_0x172a('0x21')],_0x73f511['id']);_0x5eb7ad[_0x43f807]=_[_0x172a('0xd')](_0x576d94[_0x172a('0x18')])?_0x576d94[_0x172a('0x17')]:_0x576d94[_0x172a('0x16')];if(_[_0x172a('0xd')](_0x576d94[_0x172a('0x18')])){_0x5eb7ad[_0x172a('0x19')]=_0x576d94[_0x172a('0x27')]&&_0x576d94[_0x172a('0x27')]!=='<unknown>'?_0x576d94['calleridname']:_0x172a('0x28');}else{_0x5eb7ad['firstName']=_0x576d94[_0x172a('0x29')]&&_0x576d94[_0x172a('0x29')]!==_0x172a('0x26')?_0x576d94[_0x172a('0x29')]:_0x172a('0x28');}_0x40dccf=_0x5eb7ad;_0x49b964[_0x172a('0x2c')](_0x5eb7ad);return;}}})['then'](function(){if(_0x1473f0){emit(_0x576d94[_0x172a('0x21')],_0x73f511,util[_0x172a('0x2f')]('user:%s',_0x1473f0[_0x172a('0x30')]),util[_0x172a('0x2f')](_0x172a('0x31'),_0x44ee9d[_0x172a('0x32')][_0x172a('0x33')]()),{'evt':_[_0x172a('0x34')](_0x576d94,{'autoCreate':_0x1aee84}),'contact':_0x40dccf===undefined?{}:_0x40dccf,'contacts':_0x49b964['length']===0x0?undefined:_0x49b964});}});};
\ No newline at end of file
index b4ebccc..3a55438 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27af=['format','user:%s','name','trigger:%s:%s','toLowerCase','jscripty','trigger:%s','exec','integration','routeId','urlforward','script','buildUri','parse','search','replace','checkTrigger','channel','every','AllConditions','checkConditions','AnyConditions','account','chat','ChatWebsiteId','value','upperFirst','AccountId','operator','interaction','event','queue','membername','lastevent','mailSubstatus','null','substatus','offlineMessage','created','exports','util','lodash','url','ioredis','./urlforward','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','bind','syncCustomEvent','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:rejectmessage','prototype','info','stringify','emit','undefined','motionChannel','voice','checkTriggers','interface','hasOwnProperty','merge','length','Actions','action','contactmanager','motionbar','browser','data1','TemplateId','data2','html','render','template\x20not\x20found','uri','isNil','data3','data4','location','windowWidth','800','data5','windowHeight','data6','600','winApplication','winArguments'];(function(_0x42bc91,_0x41f40a){var _0x3f5507=function(_0x20cfaf){while(--_0x20cfaf){_0x42bc91['push'](_0x42bc91['shift']());}};_0x3f5507(++_0x41f40a);}(_0x27af,0x199));var _0xf27a=function(_0x5ef67b,_0x1ebffd){_0x5ef67b=_0x5ef67b-0x0;var _0x1a0a18=_0x27af[_0x5ef67b];return _0x1a0a18;};'use strict';var util=require(_0xf27a('0x0'));var _=require(_0xf27a('0x1'));var url=require(_0xf27a('0x2'));var Mustache=require('mustache');var Redis=require(_0xf27a('0x3'));var urlforward=require(_0xf27a('0x4'));var integration=require('./integration');var cmContact=require('./cmContact');var script=require(_0xf27a('0x5'));var config=require(_0xf27a('0x6'));var logger=require(_0xf27a('0x7'))(_0xf27a('0x8'));var ami=require(_0xf27a('0x9'));config[_0xf27a('0xa')]=_[_0xf27a('0xb')](config[_0xf27a('0xa')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf27a('0xa')]));var operators={'equals':function(_0x292044,_0x32df9a){return _0x292044==_0x32df9a;},'not_equals':function(_0x33fee4,_0x4fb3fd){return _0x33fee4!=_0x4fb3fd;}};var barAndWebActions=['popup',_0xf27a('0x2'),_0xf27a('0xc')];function Trigger(_0x475ec8){this[_0xf27a('0xd')]=_0x475ec8[_0xf27a('0xd')];this[_0xf27a('0xe')]=_0x475ec8[_0xf27a('0xe')];this[_0xf27a('0xf')]=_0x475ec8[_0xf27a('0xf')];this[_0xf27a('0x10')]=_0x475ec8[_0xf27a('0x10')];this[_0xf27a('0x11')]=_0x475ec8['voiceExtensions'];this[_0xf27a('0x12')]=_0x475ec8['zendeskAccounts'];this[_0xf27a('0x13')]=_0x475ec8[_0xf27a('0x13')];this['salesforceAccounts']=_0x475ec8[_0xf27a('0x14')];this[_0xf27a('0x15')]=_0x475ec8['sugarcrmAccounts'];this['zohoAccounts']=_0x475ec8[_0xf27a('0x16')];this['deskAccounts']=_0x475ec8[_0xf27a('0x17')];this['vtigerAccounts']=_0x475ec8['vtigerAccounts'];this[_0xf27a('0x18')]=_0x475ec8['servicenowAccounts'];this[_0xf27a('0x19')]=_0x475ec8[_0xf27a('0x19')];this['freshsalesAccounts']=_0x475ec8[_0xf27a('0x1a')];this[_0xf27a('0x1b')]={'zendesk':this[_0xf27a('0x12')],'salesforce':this['salesforceAccounts'],'freshdesk':this['freshdeskAccounts'],'sugarcrm':this[_0xf27a('0x15')],'zoho':this[_0xf27a('0x16')],'desk':this['deskAccounts'],'vtiger':this['vtigerAccounts'],'dynamics365':this[_0xf27a('0x19')],'freshsales':this[_0xf27a('0x1a')],'servicenow':this[_0xf27a('0x18')]};ami['on']('custom:agentcalled',this['syncCustomEvent'][_0xf27a('0x1c')](this));ami['on']('custom:agentconnect',this[_0xf27a('0x1d')][_0xf27a('0x1c')](this));ami['on']('custom:agentringnoanswer',this[_0xf27a('0x1d')][_0xf27a('0x1c')](this));ami['on'](_0xf27a('0x1e'),this[_0xf27a('0x1d')][_0xf27a('0x1c')](this));ami['on'](_0xf27a('0x1f'),this[_0xf27a('0x1d')]['bind'](this));ami['on'](_0xf27a('0x20'),this[_0xf27a('0x1d')][_0xf27a('0x1c')](this));ami['on'](_0xf27a('0x21'),this[_0xf27a('0x1d')]['bind'](this));ami['on'](_0xf27a('0x22'),this['syncCustomEvent']['bind'](this));ami['on']('custom:agentreject',this['syncCustomEvent'][_0xf27a('0x1c')](this));ami['on'](_0xf27a('0x23'),this[_0xf27a('0x1d')][_0xf27a('0x1c')](this));ami['on'](_0xf27a('0x24'),this['syncCustomEvent']['bind'](this));ami['on'](_0xf27a('0x25'),this[_0xf27a('0x1d')]['bind'](this));ami['on'](_0xf27a('0x26'),this[_0xf27a('0x27')][_0xf27a('0x1c')](this));ami['on'](_0xf27a('0x28'),this[_0xf27a('0x27')][_0xf27a('0x1c')](this));ami['on']('custom:dialend',this['syncAgentDial'][_0xf27a('0x1c')](this));ami['on'](_0xf27a('0x29'),this[_0xf27a('0x1d')][_0xf27a('0x1c')](this));ami['on'](_0xf27a('0x2a'),this['syncCustomEvent'][_0xf27a('0x1c')](this));ami['on'](_0xf27a('0x2b'),this['syncCustomEvent']['bind'](this));ami['on'](_0xf27a('0x2c'),this[_0xf27a('0x1d')]['bind'](this));ami['on'](_0xf27a('0x2d'),this[_0xf27a('0x1d')]['bind'](this));ami['on']('custom:acceptmessage',this[_0xf27a('0x1d')][_0xf27a('0x1c')](this));ami['on'](_0xf27a('0x2e'),this[_0xf27a('0x1d')]['bind'](this));ami['on']('custom:offlineMessage',this[_0xf27a('0x1d')]['bind'](this));}Trigger[_0xf27a('0x2f')]['emit']=function(_0xc0ed69,_0x1a6ca4,_0x1a393a){logger[_0xf27a('0x30')](_0xc0ed69,_0x1a6ca4,JSON[_0xf27a('0x31')](_0x1a393a));io['to'](_0xc0ed69)[_0xf27a('0x32')](_0x1a6ca4,_0x1a393a);};Trigger[_0xf27a('0x2f')][_0xf27a('0x1d')]=function(_0x429b70){var _0x481d42=_['clone'](_0x429b70);if(typeof _0x481d42['motionChannel']===_0xf27a('0x33')){_0x481d42[_0xf27a('0x34')]=_0xf27a('0x35');}this[_0xf27a('0x36')](_0x481d42);};Trigger[_0xf27a('0x2f')][_0xf27a('0x27')]=function(_0x2062c2){if(this[_0xf27a('0xe')][_0x2062c2[_0xf27a('0x37')]]){this[_0xf27a('0x1d')](_0x2062c2);}};Trigger[_0xf27a('0x2f')][_0xf27a('0x36')]=function(_0x3feedc){var _0x52534f;for(var _0x1d76a1 in this['triggers']){if(this['triggers'][_0xf27a('0x38')](_0x1d76a1)){if(this[_0xf27a('0xd')][_0x1d76a1]['status']){_0x52534f=this['checkTrigger'](this[_0xf27a('0xd')][_0x1d76a1],_0x3feedc);if(_0x52534f){_[_0xf27a('0x39')](_0x3feedc,_0x3feedc['variables']);for(var _0xcb7ce8=0x0,_0x42f50e,_0x2a0d09,_0x5f2eb1;_0xcb7ce8<this[_0xf27a('0xd')][_0x1d76a1]['Actions'][_0xf27a('0x3a')];_0xcb7ce8+=0x1){_0x42f50e=this[_0xf27a('0xd')][_0x1d76a1][_0xf27a('0x3b')][_0xcb7ce8];if(this[_0xf27a('0xe')][_0x3feedc['interface']]){switch(_0x42f50e[_0xf27a('0x3c')]['toLowerCase']()){case _0xf27a('0x3d'):break;case _0xf27a('0x3e'):case _0xf27a('0x3f'):var _0x363df8={};switch(barAndWebActions[_0x42f50e[_0xf27a('0x40')]]){case'popup':_0x363df8[_0xf27a('0x41')]=_0x42f50e[_0xf27a('0x42')];_0x363df8[_0xf27a('0x43')]=this[_0xf27a('0x10')][_0x42f50e['data2']]?Mustache[_0xf27a('0x44')](this[_0xf27a('0x10')][_0x42f50e[_0xf27a('0x42')]]['html'],_0x3feedc):_0xf27a('0x45');break;case'url':_0x363df8[_0xf27a('0x46')]=this['buildUri'](_0x42f50e[_0xf27a('0x42')],_0x3feedc,_[_0xf27a('0x47')](_0x42f50e[_0xf27a('0x48')])?!![]:parseInt(_0x42f50e[_0xf27a('0x48')],0xa));if(_['isNil'](_0x42f50e[_0xf27a('0x49')])){_0x363df8[_0xf27a('0x4a')]='0';}else{_0x363df8['uriLocation']=_0x42f50e[_0xf27a('0x49')];_0x363df8[_0xf27a('0x4b')]=_['isNil'](_0x42f50e['data5'])?_0xf27a('0x4c'):_0x42f50e[_0xf27a('0x4d')];_0x363df8[_0xf27a('0x4e')]=_[_0xf27a('0x47')](_0x42f50e[_0xf27a('0x4f')])?_0xf27a('0x50'):_0x42f50e[_0xf27a('0x4f')];}break;case _0xf27a('0xc'):_0x363df8[_0xf27a('0x51')]=_0x42f50e[_0xf27a('0x42')]?Mustache['render'](_0x42f50e[_0xf27a('0x42')],_0x3feedc):'';_0x363df8[_0xf27a('0x52')]=_0x42f50e['data3']?Mustache[_0xf27a('0x44')](_0x42f50e[_0xf27a('0x48')],_0x3feedc):'';break;}this[_0xf27a('0x32')](util[_0xf27a('0x53')](_0xf27a('0x54'),this['agents'][_0x3feedc['interface']][_0xf27a('0x55')]),util[_0xf27a('0x53')](_0xf27a('0x56'),_0x42f50e['action'][_0xf27a('0x57')](),barAndWebActions[_0x42f50e[_0xf27a('0x40')]]),_[_0xf27a('0x39')](_0x363df8,_0x3feedc));break;case _0xf27a('0x58'):this[_0xf27a('0x32')](util[_0xf27a('0x53')](_0xf27a('0x54'),this[_0xf27a('0xe')][_0x3feedc[_0xf27a('0x37')]][_0xf27a('0x55')]),util['format']('trigger:%s',_0x42f50e[_0xf27a('0x3c')][_0xf27a('0x57')]()),_['merge']({'ProjectId':parseInt(_0x42f50e[_0xf27a('0x40')],0xa)},_0x3feedc));break;default:this[_0xf27a('0x32')](util[_0xf27a('0x53')]('user:%s',this['agents'][_0x3feedc[_0xf27a('0x37')]][_0xf27a('0x55')]),util[_0xf27a('0x53')](_0xf27a('0x59'),_0x42f50e[_0xf27a('0x3c')]['toLowerCase']()),_['merge']({},_0x42f50e,_0x3feedc));}}switch(_0x42f50e[_0xf27a('0x3c')][_0xf27a('0x57')]()){case _0xf27a('0x3d'):cmContact[_0xf27a('0x5a')](this[_0xf27a('0xe')][_0x3feedc[_0xf27a('0x37')]],this['triggers'][_0x1d76a1],_0x42f50e,_0x3feedc);break;case _0xf27a('0x5b'):integration['exec'](_0x42f50e,_0x3feedc,this[_0xf27a('0x1b')],this['agents'][_0x3feedc[_0xf27a('0x37')]],this[_0xf27a('0xf')][_0x3feedc['queue']],this['voiceExtensions'][_0x3feedc[_0xf27a('0x5c')]]);break;case _0xf27a('0x5d'):urlforward['exec'](_0x42f50e,_0x3feedc);break;case _0xf27a('0x5e'):script[_0xf27a('0x5a')](_0x42f50e,_0x3feedc);break;}}}}}}};Trigger[_0xf27a('0x2f')][_0xf27a('0x5f')]=function(_0xb83409,_0x3983d8,_0xa885f8){var _0x179a8a=url[_0xf27a('0x60')](Mustache[_0xf27a('0x44')](_0xb83409,_0x3983d8),!![]);if(_0xa885f8){_[_0xf27a('0x39')](_0x179a8a['query'],_0x3983d8);}delete _0x179a8a[_0xf27a('0x61')];var _0x661a71=url[_0xf27a('0x53')](_0x179a8a);_0x661a71=_0x661a71[_0xf27a('0x62')](/\/\?/g,'?');return _0x661a71;};Trigger[_0xf27a('0x2f')][_0xf27a('0x63')]=function(_0x4b4251,_0x16d02a){var _0x3ca568=!![];var _0x347429=!![];var _0x4a8367=![];if(_0x4b4251[_0xf27a('0x64')]===_0x16d02a[_0xf27a('0x34')]){_0x4a8367=!![];}if(_0x4b4251['AllConditions'][_0xf27a('0x3a')]){_0x3ca568=_[_0xf27a('0x65')](_0x4b4251[_0xf27a('0x66')],this[_0xf27a('0x67')](_0x16d02a,_0x4b4251['channel']));}if(_0x4b4251[_0xf27a('0x68')]['length']){_0x347429=_['some'](_0x4b4251[_0xf27a('0x68')],this['checkConditions'](_0x16d02a,_0x4b4251[_0xf27a('0x64')]));}return _0x4a8367&&_0x3ca568&&_0x347429;};Trigger[_0xf27a('0x2f')][_0xf27a('0x67')]=function(_0x34654a,_0x4ea6de){return function(_0x4976b5){switch(_0x4976b5['field']){case _0xf27a('0x69'):if(_0x34654a[_0xf27a('0x64')]===_0x4ea6de){if(_0x4ea6de===_0xf27a('0x6a')){return _0x34654a[_0xf27a('0x6b')]?operators[_0x4976b5['operator']](Number(_0x4976b5[_0xf27a('0x6c')]),_0x34654a[_0xf27a('0x6b')]):![];}else{return _0x34654a[_[_0xf27a('0x6d')](_0x4ea6de)+_0xf27a('0x6e')]?operators[_0x4976b5[_0xf27a('0x6f')]](Number(_0x4976b5[_0xf27a('0x6c')]),_0x34654a[_[_0xf27a('0x6d')](_0x4ea6de)+'AccountId']):![];}}break;case _0xf27a('0x70'):case'message':if(_0x34654a['channel']===_0x4ea6de){return _0x34654a['event']?operators[_0x4976b5[_0xf27a('0x6f')]](_0x4976b5[_0xf27a('0x6c')],_0x34654a[_0xf27a('0x71')]):![];}break;case _0xf27a('0x72'):return _0x34654a[_0xf27a('0x72')]?operators[_0x4976b5['operator']](_0x4976b5[_0xf27a('0x6c')],_0x34654a[_0xf27a('0x72')]):![];case'agent':return _0x34654a[_0xf27a('0x73')]?operators[_0x4976b5[_0xf27a('0x6f')]](_0x4976b5[_0xf27a('0x6c')],_0x34654a[_0xf27a('0x73')]):![];case _0xf27a('0x74'):return _0x34654a[_0xf27a('0x74')]?operators[_0x4976b5['operator']](_0x4976b5['value'],_0x34654a['lastevent']):![];case _0xf27a('0x5c'):return _0x34654a[_0xf27a('0x5c')]?operators[_0x4976b5[_0xf27a('0x6f')]](_0x4976b5[_0xf27a('0x6c')],_0x34654a[_0xf27a('0x5c')]):![];case _0xf27a('0x75'):if(_0x4976b5['value']===_0xf27a('0x76'))_0x4976b5[_0xf27a('0x6c')]=null;return typeof _0x34654a[_0xf27a('0x77')]!==_0xf27a('0x33')?operators[_0x4976b5[_0xf27a('0x6f')]](_0x4976b5[_0xf27a('0x6c')],_0x34654a[_0xf27a('0x77')]):![];case _0xf27a('0x78'):if(_0x34654a['channel']===_0x4ea6de){return _0x4976b5[_0xf27a('0x6c')]===_0xf27a('0x79')&&_0x4976b5[_0xf27a('0x6f')]==='equals'?!![]:![];}break;}return![];};};module[_0xf27a('0x7a')]=Trigger;
\ No newline at end of file
+var _0x52fd=['popup','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','syncCustomEvent','bind','custom:agentconnect','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:amd','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','emit','info','prototype','motionChannel','checkTriggers','interface','hasOwnProperty','checkTrigger','variables','Actions','length','action','toLowerCase','motionbar','data1','data2','render','template\x20not\x20found','uri','buildUri','isNil','data3','data4','location','uriLocation','windowWidth','data5','windowHeight','data6','winApplication','winArguments','format','name','trigger:%s:%s','merge','user:%s','trigger:%s','exec','integration','queue','routeId','urlforward','script','query','search','replace','channel','every','AllConditions','checkConditions','AnyConditions','field','account','chat','ChatWebsiteId','operator','value','upperFirst','interaction','message','event','membername','lastevent','mailSubstatus','null','substatus','undefined','offlineMessage','created','equals','exports','lodash','url','ioredis','./urlforward','./integration','./cmContact','../../../config/environment','../../../config/logger','../ami','redis','defaults','localhost','socket.io-emitter'];(function(_0xb375bc,_0x11ca55){var _0x2545ab=function(_0x19bf1b){while(--_0x19bf1b){_0xb375bc['push'](_0xb375bc['shift']());}};_0x2545ab(++_0x11ca55);}(_0x52fd,0x1df));var _0xd52f=function(_0x45bf86,_0x75586e){_0x45bf86=_0x45bf86-0x0;var _0x1f02b7=_0x52fd[_0x45bf86];return _0x1f02b7;};'use strict';var util=require('util');var _=require(_0xd52f('0x0'));var url=require(_0xd52f('0x1'));var Mustache=require('mustache');var Redis=require(_0xd52f('0x2'));var urlforward=require(_0xd52f('0x3'));var integration=require(_0xd52f('0x4'));var cmContact=require(_0xd52f('0x5'));var script=require('./script');var config=require(_0xd52f('0x6'));var logger=require(_0xd52f('0x7'))('trigger');var ami=require(_0xd52f('0x8'));config[_0xd52f('0x9')]=_[_0xd52f('0xa')](config[_0xd52f('0x9')],{'host':_0xd52f('0xb'),'port':0x18eb});var io=require(_0xd52f('0xc'))(new Redis(config[_0xd52f('0x9')]));var operators={'equals':function(_0x34e06f,_0x1b8d99){return _0x34e06f==_0x1b8d99;},'not_equals':function(_0x1205e8,_0x635af9){return _0x1205e8!=_0x635af9;}};var barAndWebActions=[_0xd52f('0xd'),_0xd52f('0x1'),_0xd52f('0xe')];function Trigger(_0x19b802){this[_0xd52f('0xf')]=_0x19b802[_0xd52f('0xf')];this[_0xd52f('0x10')]=_0x19b802[_0xd52f('0x10')];this[_0xd52f('0x11')]=_0x19b802['voiceQueues'];this['templates']=_0x19b802[_0xd52f('0x12')];this['voiceExtensions']=_0x19b802[_0xd52f('0x13')];this['zendeskAccounts']=_0x19b802[_0xd52f('0x14')];this[_0xd52f('0x15')]=_0x19b802['freshdeskAccounts'];this[_0xd52f('0x16')]=_0x19b802[_0xd52f('0x16')];this[_0xd52f('0x17')]=_0x19b802[_0xd52f('0x17')];this[_0xd52f('0x18')]=_0x19b802[_0xd52f('0x18')];this[_0xd52f('0x19')]=_0x19b802[_0xd52f('0x19')];this[_0xd52f('0x1a')]=_0x19b802[_0xd52f('0x1a')];this[_0xd52f('0x1b')]=_0x19b802[_0xd52f('0x1b')];this[_0xd52f('0x1c')]=_0x19b802[_0xd52f('0x1c')];this[_0xd52f('0x1d')]=_0x19b802['freshsalesAccounts'];this[_0xd52f('0x1e')]={'zendesk':this[_0xd52f('0x14')],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0xd52f('0x15')],'sugarcrm':this[_0xd52f('0x17')],'zoho':this['zohoAccounts'],'desk':this[_0xd52f('0x19')],'vtiger':this[_0xd52f('0x1a')],'dynamics365':this['dynamics365Accounts'],'freshsales':this[_0xd52f('0x1d')],'servicenow':this[_0xd52f('0x1b')]};ami['on'](_0xd52f('0x1f'),this[_0xd52f('0x20')][_0xd52f('0x21')](this));ami['on'](_0xd52f('0x22'),this['syncCustomEvent'][_0xd52f('0x21')](this));ami['on'](_0xd52f('0x23'),this[_0xd52f('0x20')]['bind'](this));ami['on'](_0xd52f('0x24'),this['syncCustomEvent'][_0xd52f('0x21')](this));ami['on'](_0xd52f('0x25'),this[_0xd52f('0x20')][_0xd52f('0x21')](this));ami['on'](_0xd52f('0x26'),this['syncCustomEvent'][_0xd52f('0x21')](this));ami['on'](_0xd52f('0x27'),this[_0xd52f('0x20')][_0xd52f('0x21')](this));ami['on'](_0xd52f('0x28'),this[_0xd52f('0x20')][_0xd52f('0x21')](this));ami['on']('custom:agentreject',this[_0xd52f('0x20')][_0xd52f('0x21')](this));ami['on'](_0xd52f('0x29'),this[_0xd52f('0x20')]['bind'](this));ami['on']('custom:queuecallerabandon',this['syncCustomEvent'][_0xd52f('0x21')](this));ami['on'](_0xd52f('0x2a'),this[_0xd52f('0x20')][_0xd52f('0x21')](this));ami['on'](_0xd52f('0x2b'),this['syncAgentDial'][_0xd52f('0x21')](this));ami['on']('custom:dialconnect',this[_0xd52f('0x2c')][_0xd52f('0x21')](this));ami['on'](_0xd52f('0x2d'),this[_0xd52f('0x2c')][_0xd52f('0x21')](this));ami['on'](_0xd52f('0x2e'),this['syncCustomEvent']['bind'](this));ami['on'](_0xd52f('0x2f'),this[_0xd52f('0x20')][_0xd52f('0x21')](this));ami['on']('custom:substatus',this[_0xd52f('0x20')][_0xd52f('0x21')](this));ami['on']('custom:incomingmessage',this['syncCustomEvent'][_0xd52f('0x21')](this));ami['on'](_0xd52f('0x30'),this[_0xd52f('0x20')][_0xd52f('0x21')](this));ami['on'](_0xd52f('0x31'),this['syncCustomEvent']['bind'](this));ami['on'](_0xd52f('0x32'),this[_0xd52f('0x20')]['bind'](this));ami['on'](_0xd52f('0x33'),this[_0xd52f('0x20')][_0xd52f('0x21')](this));}Trigger['prototype'][_0xd52f('0x34')]=function(_0x2d5cc0,_0x50d68e,_0x403891){logger[_0xd52f('0x35')](_0x2d5cc0,_0x50d68e,JSON['stringify'](_0x403891));io['to'](_0x2d5cc0)[_0xd52f('0x34')](_0x50d68e,_0x403891);};Trigger[_0xd52f('0x36')][_0xd52f('0x20')]=function(_0x4740ac){var _0x257eb3=_['clone'](_0x4740ac);if(typeof _0x257eb3[_0xd52f('0x37')]==='undefined'){_0x257eb3[_0xd52f('0x37')]='voice';}this[_0xd52f('0x38')](_0x257eb3);};Trigger[_0xd52f('0x36')][_0xd52f('0x2c')]=function(_0x39fe90){if(this[_0xd52f('0x10')][_0x39fe90[_0xd52f('0x39')]]){this[_0xd52f('0x20')](_0x39fe90);}};Trigger[_0xd52f('0x36')][_0xd52f('0x38')]=function(_0x3cb458){var _0x154ab6;for(var _0x249090 in this[_0xd52f('0xf')]){if(this[_0xd52f('0xf')][_0xd52f('0x3a')](_0x249090)){if(this[_0xd52f('0xf')][_0x249090]['status']){_0x154ab6=this[_0xd52f('0x3b')](this[_0xd52f('0xf')][_0x249090],_0x3cb458);if(_0x154ab6){_['merge'](_0x3cb458,_0x3cb458[_0xd52f('0x3c')]);for(var _0xc026f=0x0,_0x2db0ed,_0x3b2d18,_0x29446c;_0xc026f<this['triggers'][_0x249090][_0xd52f('0x3d')][_0xd52f('0x3e')];_0xc026f+=0x1){_0x2db0ed=this[_0xd52f('0xf')][_0x249090][_0xd52f('0x3d')][_0xc026f];if(this['agents'][_0x3cb458[_0xd52f('0x39')]]){switch(_0x2db0ed[_0xd52f('0x3f')][_0xd52f('0x40')]()){case'contactmanager':break;case _0xd52f('0x41'):case'browser':var _0x414427={};switch(barAndWebActions[_0x2db0ed[_0xd52f('0x42')]]){case _0xd52f('0xd'):_0x414427['TemplateId']=_0x2db0ed[_0xd52f('0x43')];_0x414427['html']=this[_0xd52f('0x12')][_0x2db0ed['data2']]?Mustache[_0xd52f('0x44')](this[_0xd52f('0x12')][_0x2db0ed[_0xd52f('0x43')]]['html'],_0x3cb458):_0xd52f('0x45');break;case _0xd52f('0x1'):_0x414427[_0xd52f('0x46')]=this[_0xd52f('0x47')](_0x2db0ed[_0xd52f('0x43')],_0x3cb458,_[_0xd52f('0x48')](_0x2db0ed['data3'])?!![]:parseInt(_0x2db0ed[_0xd52f('0x49')],0xa));if(_['isNil'](_0x2db0ed[_0xd52f('0x4a')])){_0x414427[_0xd52f('0x4b')]='0';}else{_0x414427[_0xd52f('0x4c')]=_0x2db0ed[_0xd52f('0x4a')];_0x414427[_0xd52f('0x4d')]=_[_0xd52f('0x48')](_0x2db0ed[_0xd52f('0x4e')])?'800':_0x2db0ed['data5'];_0x414427[_0xd52f('0x4f')]=_[_0xd52f('0x48')](_0x2db0ed['data6'])?'600':_0x2db0ed[_0xd52f('0x50')];}break;case _0xd52f('0xe'):_0x414427[_0xd52f('0x51')]=_0x2db0ed[_0xd52f('0x43')]?Mustache['render'](_0x2db0ed[_0xd52f('0x43')],_0x3cb458):'';_0x414427[_0xd52f('0x52')]=_0x2db0ed[_0xd52f('0x49')]?Mustache[_0xd52f('0x44')](_0x2db0ed[_0xd52f('0x49')],_0x3cb458):'';break;}this[_0xd52f('0x34')](util[_0xd52f('0x53')]('user:%s',this['agents'][_0x3cb458[_0xd52f('0x39')]][_0xd52f('0x54')]),util[_0xd52f('0x53')](_0xd52f('0x55'),_0x2db0ed[_0xd52f('0x3f')][_0xd52f('0x40')](),barAndWebActions[_0x2db0ed[_0xd52f('0x42')]]),_[_0xd52f('0x56')](_0x414427,_0x3cb458));break;case'jscripty':this[_0xd52f('0x34')](util[_0xd52f('0x53')](_0xd52f('0x57'),this['agents'][_0x3cb458[_0xd52f('0x39')]][_0xd52f('0x54')]),util[_0xd52f('0x53')](_0xd52f('0x58'),_0x2db0ed['action']['toLowerCase']()),_[_0xd52f('0x56')]({'ProjectId':parseInt(_0x2db0ed[_0xd52f('0x42')],0xa)},_0x3cb458));break;default:this['emit'](util['format'](_0xd52f('0x57'),this[_0xd52f('0x10')][_0x3cb458[_0xd52f('0x39')]]['name']),util['format'](_0xd52f('0x58'),_0x2db0ed[_0xd52f('0x3f')][_0xd52f('0x40')]()),_[_0xd52f('0x56')]({},_0x2db0ed,_0x3cb458));}}switch(_0x2db0ed[_0xd52f('0x3f')]['toLowerCase']()){case'contactmanager':cmContact[_0xd52f('0x59')](this['agents'][_0x3cb458['interface']],this[_0xd52f('0xf')][_0x249090],_0x2db0ed,_0x3cb458);break;case _0xd52f('0x5a'):integration['exec'](_0x2db0ed,_0x3cb458,this[_0xd52f('0x1e')],this[_0xd52f('0x10')][_0x3cb458[_0xd52f('0x39')]],this[_0xd52f('0x11')][_0x3cb458[_0xd52f('0x5b')]],this[_0xd52f('0x13')][_0x3cb458[_0xd52f('0x5c')]]);break;case _0xd52f('0x5d'):urlforward[_0xd52f('0x59')](_0x2db0ed,_0x3cb458);break;case _0xd52f('0x5e'):script[_0xd52f('0x59')](_0x2db0ed,_0x3cb458);break;}}}}}}};Trigger[_0xd52f('0x36')][_0xd52f('0x47')]=function(_0x266736,_0x66ea39,_0x4b390f){var _0x403c31=url['parse'](Mustache['render'](_0x266736,_0x66ea39),!![]);if(_0x4b390f){_[_0xd52f('0x56')](_0x403c31[_0xd52f('0x5f')],_0x66ea39);}delete _0x403c31[_0xd52f('0x60')];var _0x3761fb=url['format'](_0x403c31);_0x3761fb=_0x3761fb[_0xd52f('0x61')](/\/\?/g,'?');return _0x3761fb;};Trigger[_0xd52f('0x36')][_0xd52f('0x3b')]=function(_0xf529de,_0x4055d9){var _0x3d6682=!![];var _0x417fec=!![];var _0x12611e=![];if(_0xf529de[_0xd52f('0x62')]===_0x4055d9[_0xd52f('0x37')]){_0x12611e=!![];}if(_0xf529de['AllConditions']['length']){_0x3d6682=_[_0xd52f('0x63')](_0xf529de[_0xd52f('0x64')],this[_0xd52f('0x65')](_0x4055d9,_0xf529de[_0xd52f('0x62')]));}if(_0xf529de['AnyConditions'][_0xd52f('0x3e')]){_0x417fec=_['some'](_0xf529de[_0xd52f('0x66')],this[_0xd52f('0x65')](_0x4055d9,_0xf529de[_0xd52f('0x62')]));}return _0x12611e&&_0x3d6682&&_0x417fec;};Trigger['prototype'][_0xd52f('0x65')]=function(_0x594cd8,_0x5314d0){return function(_0x9f1f38){switch(_0x9f1f38[_0xd52f('0x67')]){case _0xd52f('0x68'):if(_0x594cd8[_0xd52f('0x62')]===_0x5314d0){if(_0x5314d0===_0xd52f('0x69')){return _0x594cd8[_0xd52f('0x6a')]?operators[_0x9f1f38[_0xd52f('0x6b')]](Number(_0x9f1f38[_0xd52f('0x6c')]),_0x594cd8[_0xd52f('0x6a')]):![];}else{return _0x594cd8[_[_0xd52f('0x6d')](_0x5314d0)+'AccountId']?operators[_0x9f1f38[_0xd52f('0x6b')]](Number(_0x9f1f38[_0xd52f('0x6c')]),_0x594cd8[_['upperFirst'](_0x5314d0)+'AccountId']):![];}}break;case _0xd52f('0x6e'):case _0xd52f('0x6f'):if(_0x594cd8[_0xd52f('0x62')]===_0x5314d0){return _0x594cd8[_0xd52f('0x70')]?operators[_0x9f1f38['operator']](_0x9f1f38['value'],_0x594cd8['event']):![];}break;case _0xd52f('0x5b'):return _0x594cd8['queue']?operators[_0x9f1f38['operator']](_0x9f1f38[_0xd52f('0x6c')],_0x594cd8[_0xd52f('0x5b')]):![];case'agent':return _0x594cd8[_0xd52f('0x71')]?operators[_0x9f1f38[_0xd52f('0x6b')]](_0x9f1f38['value'],_0x594cd8['membername']):![];case _0xd52f('0x72'):return _0x594cd8['lastevent']?operators[_0x9f1f38[_0xd52f('0x6b')]](_0x9f1f38[_0xd52f('0x6c')],_0x594cd8[_0xd52f('0x72')]):![];case _0xd52f('0x5c'):return _0x594cd8[_0xd52f('0x5c')]?operators[_0x9f1f38[_0xd52f('0x6b')]](_0x9f1f38[_0xd52f('0x6c')],_0x594cd8[_0xd52f('0x5c')]):![];case _0xd52f('0x73'):if(_0x9f1f38['value']===_0xd52f('0x74'))_0x9f1f38[_0xd52f('0x6c')]=null;return typeof _0x594cd8[_0xd52f('0x75')]!==_0xd52f('0x76')?operators[_0x9f1f38[_0xd52f('0x6b')]](_0x9f1f38[_0xd52f('0x6c')],_0x594cd8[_0xd52f('0x75')]):![];case _0xd52f('0x77'):if(_0x594cd8[_0xd52f('0x62')]===_0x5314d0){return _0x9f1f38[_0xd52f('0x6c')]===_0xd52f('0x78')&&_0x9f1f38[_0xd52f('0x6b')]===_0xd52f('0x79')?!![]:![];}break;}return![];};};module[_0xd52f('0x7a')]=Trigger;
\ No newline at end of file
index 17f3623..4348320 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['catch','stringify','unmanaged','lastevent','toUpperCase','lodash','util','ioredis','./util','../../../../config/environment','../../../../config/logger','desk','redis','defaults','localhost','validateEmail','info','Getting\x20agent\x20with\x20email','%s/users','then','total_entries','_embedded','entries','Agent\x20found!','format','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','remoteUri','debug','[HTTP]','GET','authType','basic','password','%s/token:%s','Basic\x20%s','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','work','map','length','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','custom_fields','toString','variable','variableName','customVariable','Variable','name','priority','Creating\x20new\x20ticket...','getString','Subjects','xCALLY','concat','Descriptions','user','Fields','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','integrationTab','%s/agent/tickets/%s'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0x326f,0xd1));var _0xf326=function(_0x5e1b86,_0x5b4d2d){_0x5e1b86=_0x5e1b86-0x0;var _0x3b9a70=_0x326f[_0x5e1b86];return _0x3b9a70;};'use strict';var _=require(_0xf326('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0xf326('0x1'));var Redis=require(_0xf326('0x2'));var intUtil=require(_0xf326('0x3'));var config=require(_0xf326('0x4'));var logger=require(_0xf326('0x5'))(_0xf326('0x6'));config[_0xf326('0x7')]=_[_0xf326('0x8')](config[_0xf326('0x7')],{'host':_0xf326('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xf326('0x7')]));function emit(_0x3851eb,_0x165f95,_0x1e7b8a){io['to'](_0x3851eb)['emit'](_0x165f95,_0x1e7b8a);}var headers={'Content-Type':'application/json','Accept':'application/json'};function getUser(_0x3bacf2,_0x1fc80e){if(intUtil[_0xf326('0xa')](_0x1fc80e)===!![]){logger[_0xf326('0xb')](_0xf326('0xc'),_0x1fc80e);return request({'uri':util['format'](_0xf326('0xd'),_0x3bacf2['remoteUri'])})[_0xf326('0xe')](function(_0x4aaf3a){if(_0x4aaf3a[_0xf326('0xf')]){return _['find'](_0x4aaf3a[_0xf326('0x10')][_0xf326('0x11')],{'email':_0x1fc80e});}})['then'](function(_0x342fe5){if(_0x342fe5){logger[_0xf326('0xb')](_0xf326('0x12'));return _0x342fe5;}else{logger[_0xf326('0xb')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xf326('0x13')]('%s/users/me',_0x3bacf2['remoteUri'])});}});}else{logger[_0xf326('0xb')](_0xf326('0x14'));return request({'uri':util[_0xf326('0x13')](_0xf326('0x15'),_0x3bacf2[_0xf326('0x16')])});}}function request(_0x287a2a){logger[_0xf326('0x17')](_0xf326('0x18'),JSON['stringify'](_0x287a2a));return rp(_[_0xf326('0x8')](_0x287a2a,{'method':_0xf326('0x19'),'headers':headers,'json':!![]}));}function getAuth(_0x18bee3){var _0x31ffb9;if(_0x18bee3[_0xf326('0x1a')]===_0xf326('0x1b')){_0x31ffb9=util['format']('%s:%s',_0x18bee3['username'],_0x18bee3[_0xf326('0x1c')]);}else if(_0x18bee3[_0xf326('0x1a')]==='token'){_0x31ffb9=util['format'](_0xf326('0x1d'),_0x18bee3['username'],_0x18bee3['token']);}return util[_0xf326('0x13')](_0xf326('0x1e'),new Buffer(_0x31ffb9)['toString']('base64'));}function getEndUser(_0x19b8ba,_0xb1efcf,_0x5f21a2){logger[_0xf326('0xb')](_0xf326('0x1f'),_0x5f21a2);return request({'uri':util[_0xf326('0x13')](_0xf326('0x20'),_0x19b8ba[_0xf326('0x16')]),'qs':{'phone':_0x5f21a2}})[_0xf326('0xe')](function(_0x5ce532){if(_0x5ce532['total_entries']){logger['info'](_0xf326('0x21'));return _0x5ce532[_0xf326('0x10')][_0xf326('0x11')][0x0];}else{logger[_0xf326('0xb')](_0xf326('0x22'));return request({'uri':util[_0xf326('0x13')]('%s/customers',_0x19b8ba[_0xf326('0x16')]),'method':_0xf326('0x23'),'body':{'first_name':_0xb1efcf,'title':_0xb1efcf,'phone_numbers':[{'type':_0xf326('0x24'),'value':_0x5f21a2}]}});}});}function getTags(_0x581531,_0x1617d2){var _0x55ad0f=[];if(_0x581531&&_0x581531['length']>0x0){_0x55ad0f=_[_0xf326('0x25')](_0x581531,_0x1617d2);}return _0x55ad0f;}function getCustomFields(_0x1ae23a,_0x2fa28e){var _0x5dbe63=[];var _0xc115d9={'custom_fields':{}};if(_0x1ae23a[_0xf326('0x26')]>0x0){_['forEach'](_0x1ae23a,function(_0x225776){if(_[_0xf326('0x27')]([_0xf326('0x28'),_0xf326('0x29')],_0x225776[_0xf326('0x2a')])&&_0x225776[_0xf326('0x2b')]&&!_0x225776[_0xf326('0x2c')]){_0xc115d9[_0x225776[_0xf326('0x2b')][_0xf326('0x2d')]()]=_0x225776[_0xf326('0x2e')]['toString']();}else if(_[_0xf326('0x27')]([_0xf326('0x28'),_0xf326('0x29')],_0x225776['type'])&&_0x225776[_0xf326('0x2f')]&&_0x225776[_0xf326('0x2c')]){_0xc115d9[_0xf326('0x30')][_0x225776['idField']]=_0x225776['content'][_0xf326('0x31')]();}else if(_0x225776[_0xf326('0x2a')]===_0xf326('0x32')&&_0x225776[_0xf326('0x33')]&&_0x225776[_0xf326('0x2f')]&&_0x225776[_0xf326('0x2c')]){_0x2fa28e[_0x225776[_0xf326('0x33')]]&&(_0xc115d9[_0xf326('0x30')][_0x225776['idField']]=_0x2fa28e[_0x225776[_0xf326('0x33')]][_0xf326('0x31')]());}else if(_0x225776['type']===_0xf326('0x34')&&_0x225776['Variable']&&_0x225776[_0xf326('0x35')]['name']&&_0x225776['idField']&&_0x225776[_0xf326('0x2c')]){_0x2fa28e[_0x225776['Variable'][_0xf326('0x36')]['toLowerCase']()]&&(_0xc115d9[_0xf326('0x30')][_0x225776[_0xf326('0x2f')]]=_0x2fa28e[_0x225776[_0xf326('0x35')]['name'][_0xf326('0x2d')]()][_0xf326('0x31')]());}});}if(_0xc115d9['priority']){_0xc115d9[_0xf326('0x37')]=Number(_0xc115d9[_0xf326('0x37')]);}return _0xc115d9;}function getTicket(_0x40fa7a,_0xaf65e0,_0x51076c,_0x2c4416,_0xb1ef35){logger[_0xf326('0xb')](_0xf326('0x38'));var _0x1d88ed=_['merge']({'subject':intUtil[_0xf326('0x39')](_0x2c4416[_0xf326('0x3a')],_0xb1ef35,'\x20'),'type':'phone','status':'new','labels':[_0xf326('0x3b'),'Motion','CTI'][_0xf326('0x3c')](getTags(_0x2c4416['Tags'],_0xf326('0x36'))),'description':intUtil[_0xf326('0x39')](_0x2c4416[_0xf326('0x3d')],_0xb1ef35,'\x0a'),'_links':{'assigned_user':{'href':util[_0xf326('0x13')]('/api/v2/users/%d',_0xaf65e0['id']),'class':_0xf326('0x3e')}},'message':{'direction':'in','body':intUtil[_0xf326('0x39')](_0x2c4416[_0xf326('0x3d')],_0xb1ef35,'\x0a')}},getCustomFields(_0x2c4416[_0xf326('0x3f')],_0xb1ef35));return request({'uri':util[_0xf326('0x13')](_0xf326('0x40'),_0x40fa7a[_0xf326('0x16')],_0x51076c['id']),'method':_0xf326('0x23'),'body':_0x1d88ed});}exports[_0xf326('0x41')]=function(_0x1227d3,_0x361776,_0x2bab13,_0x50d63f,_0x1b6126,_0x1637dc){var _0x2ed1a7,_0x270288;_0x1637dc[_0xf326('0x16')]=intUtil[_0xf326('0x42')](_0x1637dc['remoteUri']);_0x1637dc[_0xf326('0x43')]=intUtil[_0xf326('0x42')](_0x1637dc['serverUrl']);if(_0x1b6126&&_0x1b6126[_0xf326('0x44')]){logger[_0xf326('0xb')](_0xf326('0x45'),_0xf326('0x46'));_0x361776[_0xf326('0x47')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1637dc[_0xf326('0x43')],_0x361776[_0xf326('0x48')],md5(_0x361776['uniqueid']));}else{_0x361776['recordingURL']='';}headers[_0xf326('0x49')]=getAuth(_0x1637dc);return getUser(_0x1637dc,_0x50d63f[_0xf326('0x4a')])[_0xf326('0xe')](function(_0x5b3705){_0x2ed1a7=_0x5b3705;logger[_0xf326('0xb')](_0xf326('0x4b'),_0x2ed1a7['id']);return getEndUser(_0x1637dc,_0x361776[_0xf326('0x4c')],_0x361776[_0xf326('0x4d')]);})[_0xf326('0xe')](function(_0x2d9bba){_0x270288=_0x2d9bba;logger[_0xf326('0xb')](_0xf326('0x4e'),_0x270288['id']);return getTicket(_0x1637dc,_0x2ed1a7,_0x270288,_0x2bab13,_0x361776);})[_0xf326('0xe')](function(_0x27ced1){if(_0x27ced1){logger[_0xf326('0xb')](_0xf326('0x4f'));logger[_0xf326('0xb')](_0xf326('0x50'),_0x27ced1['id']);switch(_0x1637dc[_0xf326('0x2a')]){case'integrationTab':logger[_0xf326('0xb')](_0xf326('0x45'),_0xf326('0x51'));emit(util[_0xf326('0x13')]('user:%s',_0x50d63f[_0xf326('0x36')]),_0xf326('0x52'),{'recordId':_0x27ced1['id']});break;case _0xf326('0x53'):logger[_0xf326('0xb')]('[QUEUE]',_0xf326('0x54'));emit(util[_0xf326('0x13')](_0xf326('0x55'),_0x50d63f[_0xf326('0x36')]),_0xf326('0x56'),{'uri':util['format']('https://xcally.desk.com/web/agent/case/%d',_0x27ced1['id'])});break;default:logger[_0xf326('0x57')](_0xf326('0x45'),_0xf326('0x58'));}}})['catch'](function(_0x102fba){console[_0xf326('0x57')](_0x102fba);logger[_0xf326('0x57')]('[QUEUE]',JSON['stringify'](_0x102fba));});};exports[_0xf326('0x59')]=function(_0x5b4832,_0x1cf58f,_0x554277,_0x458e5f,_0x7ee57,_0x28c959,_0x25e091){var _0x212594,_0x35d3c8;_0x28c959[_0xf326('0x16')]=intUtil['stripTrailingSlash'](_0x28c959[_0xf326('0x16')]);_0x28c959[_0xf326('0x43')]=intUtil[_0xf326('0x42')](_0x28c959['serverUrl']);if(_0x25e091&&_0x25e091[_0xf326('0x5a')]&&_0x25e091[_0xf326('0x5a')]!==_0xf326('0x5b')){logger[_0xf326('0xb')](_0xf326('0x5c'),'Recording\x20is\x20enabled!');_0x1cf58f[_0xf326('0x47')]=util[_0xf326('0x13')](_0xf326('0x5d'),_0x28c959[_0xf326('0x43')],_0x1cf58f['uniqueid'],md5(_0x1cf58f[_0xf326('0x48')]));}headers[_0xf326('0x49')]=getAuth(_0x28c959);return getUser(_0x28c959,_0x458e5f[_0xf326('0x4a')])[_0xf326('0xe')](function(_0x4d3b9e){_0x212594=_0x4d3b9e;logger['info'](_0xf326('0x4b'),_0x212594['id']);return getEndUser(_0x28c959,_0x1cf58f[_0xf326('0x5e')],_0x1cf58f['destcalleridnum']);})[_0xf326('0xe')](function(_0x29de71){_0x35d3c8=_0x29de71;logger[_0xf326('0xb')](_0xf326('0x4e'),_0x35d3c8['id']);return getTicket(_0x28c959,_0x212594,_0x35d3c8,_0x554277,_0x1cf58f);})['then'](function(_0xb1c18c){if(_0xb1c18c){logger['info']('Ticket\x20created!');logger[_0xf326('0xb')]('The\x20Ticket\x20ID\x20is:',_0xb1c18c['id']);switch(_0x28c959[_0xf326('0x2a')]){case _0xf326('0x5f'):logger[_0xf326('0xb')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent...');emit(util[_0xf326('0x13')](_0xf326('0x55'),_0x458e5f[_0xf326('0x36')]),'trigger:desk:display',{'recordId':_0xb1c18c['id']});break;case _0xf326('0x53'):logger['info'](_0xf326('0x45'),_0xf326('0x54'));emit(util[_0xf326('0x13')](_0xf326('0x55'),_0x458e5f[_0xf326('0x36')]),_0xf326('0x56'),{'uri':util[_0xf326('0x13')](_0xf326('0x60'),_0x28c959[_0xf326('0x16')],_0xb1c18c['id'])});break;default:logger[_0xf326('0x57')](_0xf326('0x5c'),_0xf326('0x58'));}}})[_0xf326('0x61')](function(_0x4ca1b8){logger[_0xf326('0x57')]('[OUTBOUND]',JSON[_0xf326('0x62')](_0x4ca1b8));});};exports[_0xf326('0x63')]=function(_0x5e858d,_0x2b770c,_0x5283da,_0x3255b2,_0xd55246,_0x28f3cb){var _0x2d45c9,_0x31b6dd;_0x28f3cb['remoteUri']=intUtil['stripTrailingSlash'](_0x28f3cb[_0xf326('0x16')]);_0x28f3cb[_0xf326('0x43')]=intUtil[_0xf326('0x42')](_0x28f3cb[_0xf326('0x43')]);if(_0xd55246&&_0xd55246[_0xf326('0x44')]){logger['info']('['+_0x2b770c[_0xf326('0x64')][_0xf326('0x65')]()+']','Recording\x20is\x20enabled!');_0x2b770c['recordingURL']=util['format'](_0xf326('0x5d'),_0x28f3cb[_0xf326('0x43')],_0x2b770c[_0xf326('0x48')],md5(_0x2b770c[_0xf326('0x48')]));}else{_0x2b770c[_0xf326('0x47')]='';}headers[_0xf326('0x49')]=getAuth(_0x28f3cb);return getUser(_0x28f3cb)[_0xf326('0xe')](function(_0x4b9013){_0x2d45c9=_0x4b9013;logger[_0xf326('0xb')](_0xf326('0x4b'),_0x2d45c9['id']);return getEndUser(_0x28f3cb,_0x2b770c[_0xf326('0x4c')],_0x2b770c[_0xf326('0x4d')]);})['then'](function(_0x3717fe){_0x31b6dd=_0x3717fe;logger['info']('The\x20Enduser\x20ID\x20is:',_0x31b6dd['id']);return getTicket(_0x28f3cb,_0x2d45c9,_0x31b6dd,_0x5283da,_0x2b770c);})[_0xf326('0xe')](function(_0x540fa0){if(_0x540fa0){logger[_0xf326('0xb')](_0xf326('0x4f'));logger[_0xf326('0xb')](_0xf326('0x50'),_0x540fa0['id']);}})[_0xf326('0x61')](function(_0x541491){logger['error']('['+_0x2b770c['lastevent'][_0xf326('0x65')]()+']',JSON[_0xf326('0x62')](_0x541491));});};
\ 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(_0x36d25e,_0x332128){var _0x1130c0=function(_0x2e6c4e){while(--_0x2e6c4e){_0x36d25e['push'](_0x36d25e['shift']());}};_0x1130c0(++_0x332128);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'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 f59c593..1f788b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bfe=['username','password','clientSecret','then','access_token','catch','toUpperCase',']\x20Wrong\x20credentials!','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','info','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','message','outbound','destcalleridnum','calleridnum','/systemusers(','body','headers','odata-entityid','lastIndexOf','enduserId','toLowerCase','telephone1','&$filter=','\x20eq\x20\x27','replace','%2b','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','includes','string','type','nameField','customField','idField','substring','indexOf','content','incidents','assign','Subjects','Descriptions','Fields','ticketType','phonecall','callDirection','queue','phonecalls','getString','/contacts(','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','emit','trigger:browser:url','stripTrailingSlash','data7','serverUrl','%s/api/data/v9.0/','tenantId','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...','error',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','./util','md5','ioredis','dynamics365','../../../../config/environment','redis','localhost','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','data2','resolve','data5','POST'];(function(_0x4c9cb5,_0xcf85d4){var _0x20310b=function(_0x16b471){while(--_0x16b471){_0x4c9cb5['push'](_0x4c9cb5['shift']());}};_0x20310b(++_0xcf85d4);}(_0x2bfe,0x133));var _0xe2bf=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x2bfe[_0x278e3c];return _0x3e2d9b;};'use strict';var _=require(_0xe2bf('0x0'));var rp=require(_0xe2bf('0x1'));var util=require('util');var intUtil=require(_0xe2bf('0x2'));var md5=require(_0xe2bf('0x3'));var Redis=require(_0xe2bf('0x4'));var logger=require('../../../../config/logger')(_0xe2bf('0x5'));var config=require(_0xe2bf('0x6'));config[_0xe2bf('0x7')]=_['defaults'](config[_0xe2bf('0x7')],{'host':_0xe2bf('0x8'),'port':0x18eb});var io=require(_0xe2bf('0x9'))(new Redis(config[_0xe2bf('0x7')]));function getAuthToken(_0x53aff9,_0xb46660,_0x19df52){if(_0x53aff9[_0xe2bf('0xa')]){_0x53aff9[_0xe2bf('0xb')]=_0x53aff9[_0xe2bf('0xc')]['data7'];_0x53aff9['tenantId']=_0x53aff9['CloudProvider'][_0xe2bf('0xd')];return Promise[_0xe2bf('0xe')](_0x53aff9[_0xe2bf('0xc')][_0xe2bf('0xf')]);}var _0x41581e={'method':_0xe2bf('0x10'),'uri':_0xb46660,'form':{'client_id':_0x53aff9['clientId'],'resource':_0x53aff9['remoteUri'],'username':_0x53aff9[_0xe2bf('0x11')],'password':_0x53aff9[_0xe2bf('0x12')],'grant_type':_0xe2bf('0x12'),'client_secret':_0x53aff9[_0xe2bf('0x13')]},'json':!![]};return rp(_0x41581e)[_0xe2bf('0x14')](function(_0x3a1045){return _0x3a1045[_0xe2bf('0x15')];})[_0xe2bf('0x16')](function(_0x588f16){logger['error']('['+[_0x19df52[_0xe2bf('0x17')]()]+_0xe2bf('0x18'));return _0x588f16['message'];});}function getUser(_0x490553,_0x229f89,_0x3da900,_0x1088da,_0x51cef8,_0x1bbb1d){return new Promise(function(_0x22e3ca,_0x540e9d){return getAuthToken(_0x229f89,_0x1088da,_0x1bbb1d)[_0xe2bf('0x14')](function(_0x1ad79b){var _0x583b8c={'method':_0xe2bf('0x19'),'uri':_0x51cef8+_0xe2bf('0x1a'),'headers':{'Authorization':_0xe2bf('0x1b')+_0x1ad79b,'OData-Version':_0xe2bf('0x1c')},'json':!![]};return rp(_0x583b8c);})['then'](function(_0x239154){var _0x388efb=_0x239154['value'];var _0x5f4857=![];var _0xbe26ec=null;if(!_['isNil'](_0x3da900)){if(intUtil[_0xe2bf('0x1d')](_0x3da900[_0xe2bf('0x1e')])){_0x490553[_0xe2bf('0x1f')]=_0x3da900[_0xe2bf('0x1e')];for(_0xbe26ec=0x0;_0xbe26ec<_0x388efb[_0xe2bf('0x20')];_0xbe26ec++){if(_0x388efb[_0xbe26ec][_0xe2bf('0x21')]===_0x3da900[_0xe2bf('0x1e')]&&!_0x388efb[_0xbe26ec][_0xe2bf('0x22')]){_0x5f4857=!![];logger[_0xe2bf('0x23')]('['+[_0x1bbb1d[_0xe2bf('0x17')]()]+']\x20Agent\x20found\x20'+_0x388efb[_0xbe26ec][_0xe2bf('0x24')]+'!');_0x490553['userId']=_0x388efb[_0xbe26ec]['systemuserid'];}}}}if(!_0x5f4857){logger['info']('['+[_0x1bbb1d['toUpperCase']()]+_0xe2bf('0x25'));_0x490553[_0xe2bf('0x1f')]=_0x229f89[_0xe2bf('0x11')];for(_0xbe26ec=0x0;_0xbe26ec<_0x388efb['length'];_0xbe26ec++){if(_0x388efb[_0xbe26ec][_0xe2bf('0x21')]===_0x229f89[_0xe2bf('0x11')]){_0x490553[_0xe2bf('0x26')]=_0x388efb[_0xbe26ec][_0xe2bf('0x24')];}}}_0x22e3ca(_0x490553);})[_0xe2bf('0x16')](function(_0x56af8e){_0x540e9d(_0x56af8e[_0xe2bf('0x27')]);});});}function createEndUser(_0x362ab3,_0x4f20a4,_0x4cd658,_0xfa17aa,_0x1cc34f,_0x1f2295,_0x5ef523){return new Promise(function(_0x1aa65f,_0x1b50ca){return getAuthToken(_0x4f20a4,_0x4cd658,_0x1f2295)[_0xe2bf('0x14')](function(_0x21a0d3){var _0x1441da=_0x1f2295['toLowerCase']()===_0xe2bf('0x28')?_0x1cc34f[_0xe2bf('0x29')]:_0x1cc34f[_0xe2bf('0x2a')];var _0x22f09a={'method':_0xe2bf('0x10'),'uri':_0xfa17aa+'contacts','body':{'fullname':_0x1441da,'firstname':_0x1441da,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xe2bf('0x2b')+_0x362ab3[_0xe2bf('0x26')]+')'},'headers':{'Authorization':_0xe2bf('0x1b')+_0x21a0d3,'OData-Version':_0xe2bf('0x1c')},'json':!![],'resolveWithFullResponse':!![]};_0x22f09a[_0xe2bf('0x2c')][_0x5ef523]=_0x1441da;return rp(_0x22f09a);})[_0xe2bf('0x14')](function(_0x100a76){var _0x257e8b=_0x100a76[_0xe2bf('0x2d')][_0xe2bf('0x2e')];var _0x41d905=_0x257e8b['substring'](_0x257e8b[_0xe2bf('0x2f')]('(')+0x1,_0x257e8b[_0xe2bf('0x2f')](')'));_0x362ab3[_0xe2bf('0x30')]=_0x41d905;_0x1aa65f(_0x362ab3);})[_0xe2bf('0x16')](function(_0x4b3aca){_0x1b50ca(_0x4b3aca['message']);});});}function getEndUser(_0x49e7c1,_0x4f85f9,_0x52f331,_0xd1613a,_0x2dd41a,_0xa1bac,_0x52bbdb,_0x5e93c0){var _0x3f3896=_0xa1bac[_0xe2bf('0x31')]()===_0xe2bf('0x28')?_0x2dd41a[_0xe2bf('0x29')]:_0x2dd41a[_0xe2bf('0x2a')];return getAuthToken(_0x4f85f9,_0x52f331,_0xa1bac)[_0xe2bf('0x14')](function(_0x1c409){_0x5e93c0=_0x5e93c0?_0x5e93c0:_0xe2bf('0x32');var _0x1c8e0f={'method':_0xe2bf('0x19'),'uri':_0xd1613a+'contacts?$select='+_0x5e93c0+_0xe2bf('0x33')+_0x5e93c0+_0xe2bf('0x34')+_0x3f3896[_0xe2bf('0x35')]('+',_0xe2bf('0x36'))+'\x27','headers':{'Authorization':_0xe2bf('0x1b')+_0x1c409,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x1c8e0f);})[_0xe2bf('0x14')](function(_0x5dc513){var _0x233f50=![];if(!_0x5dc513)return _0x233f50;var _0x331bcb=_0x5dc513['value'];for(var _0x339889=0x0;_0x339889<_0x331bcb[_0xe2bf('0x20')];_0x339889++){if(_0x331bcb[_0x339889][_0x5e93c0]===_0x3f3896){_0x233f50=!![];_0x49e7c1[_0xe2bf('0x30')]=_0x331bcb[_0x339889][_0xe2bf('0x37')];}}return _0x233f50;})[_0xe2bf('0x14')](function(_0x256ee0){if(_0x256ee0)return _0x49e7c1;if(_0x52bbdb===_0xe2bf('0x38')){logger['info']('['+[_0xa1bac[_0xe2bf('0x17')]()]+_0xe2bf('0x39'));return _0x49e7c1;}return createEndUser(_0x49e7c1,_0x4f85f9,_0x52f331,_0xd1613a,_0x2dd41a,_0xa1bac,_0x5e93c0)[_0xe2bf('0x14')](function(_0x1304b6){logger['info']('['+[_0xa1bac[_0xe2bf('0x17')]()]+_0xe2bf('0x3a'),_0x1304b6['enduserId']);return _0x1304b6;});});}function getCustomFields(_0x1252f8,_0x5b33bd,_0xfb5fc5){var _0x5641ec={};if(_0x1252f8['length']>0x0){_['forEach'](_0x1252f8,function(_0x314b45){if(_[_0xe2bf('0x3b')]([_0xe2bf('0x3c'),'picklist'],_0x314b45[_0xe2bf('0x3d')])&&_0x314b45[_0xe2bf('0x3e')]&&!_0x314b45[_0xe2bf('0x3f')]){var _0x59333d=_0x314b45[_0xe2bf('0x40')][_0xe2bf('0x31')]();var _0x4c4c4c=_0x59333d[_0xe2bf('0x41')](0x0,_0x59333d[_0xe2bf('0x42')]('_'));var _0x21b731=_0x59333d[_0xe2bf('0x41')](_0x59333d['indexOf']('_')+0x1);if(_0x4c4c4c===_0xfb5fc5){_0x5641ec[_0x21b731]=_0x314b45[_0xe2bf('0x43')];}}});}return _0x5641ec;}function getTicket(_0x44d36b,_0x18446e,_0x369ead,_0x2b5701,_0x50705a,_0x271512,_0x5917a9){return new Promise(function(_0x105d72,_0x3388c1){var _0xfb9b14;return getAuthToken(_0x18446e,_0x369ead,_0x5917a9)[_0xe2bf('0x14')](function(_0x5340fd){if(_0x271512['ticketType']==='incident'){_0xfb9b14={'method':_0xe2bf('0x10'),'uri':_0x2b5701+_0xe2bf('0x44'),'body':Object[_0xe2bf('0x45')]({},{'title':intUtil['getString'](_0x271512[_0xe2bf('0x46')],_0x50705a,'\x20'),'description':intUtil['getString'](_0x271512[_0xe2bf('0x47')],_0x50705a,'\x0a'),'customerid_contact@odata.bind':_0x44d36b[_0xe2bf('0x30')]?'/contacts('+_0x44d36b[_0xe2bf('0x30')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x44d36b[_0xe2bf('0x26')]+')','caseorigincode':'1'},getCustomFields(_0x271512[_0xe2bf('0x48')],_0x50705a,_0x271512['ticketType'])),'headers':{'Authorization':_0xe2bf('0x1b')+_0x5340fd,'OData-Version':_0xe2bf('0x1c')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x271512[_0xe2bf('0x49')]===_0xe2bf('0x4a')){var _0x17e27d=_0x44d36b[_0xe2bf('0x30')]?[{'partyid_systemuser@odata.bind':_0xe2bf('0x2b')+_0x44d36b[_0xe2bf('0x26')]+')','participationtypemask':_0x44d36b[_0xe2bf('0x4b')]===_0xe2bf('0x4c')?0x2:0x1},{'partyid_contact@odata.bind':'/contacts('+_0x44d36b['enduserId']+')','participationtypemask':_0x44d36b[_0xe2bf('0x4b')]==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xe2bf('0x2b')+_0x44d36b[_0xe2bf('0x26')]+')','participationtypemask':_0x44d36b[_0xe2bf('0x4b')]===_0xe2bf('0x4c')?0x2:0x1}];_0xfb9b14={'method':_0xe2bf('0x10'),'uri':_0x2b5701+_0xe2bf('0x4d'),'body':Object[_0xe2bf('0x45')]({},{'subject':intUtil[_0xe2bf('0x4e')](_0x271512[_0xe2bf('0x46')],_0x50705a,'\x20'),'phonenumber':String(_0x50705a[_0xe2bf('0x2a')]),'description':intUtil[_0xe2bf('0x4e')](_0x271512['Descriptions'],_0x50705a,'\x0a'),'regardingobjectid_contact@odata.bind':_0x44d36b[_0xe2bf('0x30')]?_0xe2bf('0x4f')+_0x44d36b[_0xe2bf('0x30')]+')':undefined,'ownerid@odata.bind':_0xe2bf('0x2b')+_0x44d36b[_0xe2bf('0x26')]+')','directioncode':_0x44d36b[_0xe2bf('0x4b')]===_0xe2bf('0x4c')?![]:!![],'phonecall_activity_parties':_0x17e27d},getCustomFields(_0x271512[_0xe2bf('0x48')],_0x50705a,_0x271512[_0xe2bf('0x49')])),'headers':{'Authorization':_0xe2bf('0x1b')+_0x5340fd,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0xfb9b14);})[_0xe2bf('0x14')](function(_0x40d090){var _0x4ed358=_0x40d090[_0xe2bf('0x2d')][_0xe2bf('0x2e')];var _0x2a1bf8=_0x4ed358['substring'](_0x4ed358['lastIndexOf']('(')+0x1,_0x4ed358[_0xe2bf('0x2f')](')'));_0x44d36b[_0xe2bf('0x50')]=_0x2a1bf8;_0x105d72(_0x44d36b);})[_0xe2bf('0x16')](function(_0x5f3a61){_0x3388c1(_0x5f3a61[_0xe2bf('0x27')]);});});}function emit(_0x260164,_0x47feba,_0x150892,_0x136266){var _0x1cc5e0={'uri':util[_0xe2bf('0x51')](_0xe2bf('0x52'),_0x260164,_0x150892,_0x136266)};io['to'](util['format']('user:%s',_0x47feba))[_0xe2bf('0x53')](_0xe2bf('0x54'),_0x1cc5e0);}exports['cs']=function(_0x56f399,_0xbb72fa,_0x4e8ae0,_0x29f97f,_0x8ca085,_0x315046,_0x1d4ecf,_0x1e0752){var _0x4c327f={};_0x315046[_0xe2bf('0xb')]=_0x315046[_0xe2bf('0xa')]?intUtil[_0xe2bf('0x55')](_0x315046[_0xe2bf('0xc')][_0xe2bf('0x56')]):intUtil[_0xe2bf('0x55')](_0x315046[_0xe2bf('0xb')]);_0x315046[_0xe2bf('0x57')]=intUtil['stripTrailingSlash'](_0x315046['serverUrl']);_0x4c327f[_0xe2bf('0x4b')]=_0x1e0752===_0xe2bf('0x4c')||_0x1e0752==='unmanaged'?_0xe2bf('0x4c'):_0xe2bf('0x28');var _0x5b998e=_0x315046[_0xe2bf('0xa')]?util[_0xe2bf('0x51')](_0xe2bf('0x58'),_0x315046[_0xe2bf('0xc')][_0xe2bf('0x56')]):util[_0xe2bf('0x51')](_0xe2bf('0x58'),_0x315046[_0xe2bf('0xb')]);var _0x1ab38f=util[_0xe2bf('0x51')]('https://login.microsoftonline.com/%s/oauth2/token',_0x315046[_0xe2bf('0x59')]);var _0x24e86a=util[_0xe2bf('0x51')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x315046[_0xe2bf('0x57')],_0xbb72fa[_0xe2bf('0x5a')],md5(_0xbb72fa[_0xe2bf('0x5a')]));if(_0x8ca085&&_0x8ca085['monitor_format']){logger[_0xe2bf('0x23')](_0xe2bf('0x5b'),_0xe2bf('0x5c'));_0xbb72fa[_0xe2bf('0x5d')]=_0x24e86a;}else if(_0x1d4ecf&&_0x1d4ecf['recordingFormat']&&_0x1d4ecf[_0xe2bf('0x5e')]!==_0xe2bf('0x5f')){logger[_0xe2bf('0x23')](_0xe2bf('0x60'),_0xe2bf('0x5c'));_0xbb72fa[_0xe2bf('0x5d')]=_0x24e86a;}else{_0xbb72fa[_0xe2bf('0x5d')]='';}return getUser(_0x4c327f,_0x315046,_0x29f97f,_0x1ab38f,_0x5b998e,_0x1e0752)['then'](function(_0x1610b8){logger['info']('['+_0x1e0752[_0xe2bf('0x17')]()+_0xe2bf('0x61'),_0x1610b8[_0xe2bf('0x26')]);logger['info']('['+_0x1e0752[_0xe2bf('0x17')]()+_0xe2bf('0x62'),_0x1610b8['userEmail']);return getEndUser(_0x1610b8,_0x315046,_0x1ab38f,_0x5b998e,_0xbb72fa,_0x1e0752,_0x4e8ae0['moduleCreate'],_0x4e8ae0[_0xe2bf('0x63')]);})[_0xe2bf('0x14')](function(_0x27a8d6){logger[_0xe2bf('0x23')]('['+_0x1e0752[_0xe2bf('0x17')]()+_0xe2bf('0x64'),_0x27a8d6[_0xe2bf('0x30')]);logger[_0xe2bf('0x23')]('['+_0x1e0752[_0xe2bf('0x17')]()+_0xe2bf('0x65'),_0xbb72fa['calleridnum']);return getTicket(_0x27a8d6,_0x315046,_0x1ab38f,_0x5b998e,_0xbb72fa,_0x4e8ae0,_0x1e0752);})[_0xe2bf('0x14')](function(_0x312a40){logger[_0xe2bf('0x23')](util[_0xe2bf('0x51')]('['+_0x1e0752[_0xe2bf('0x17')]()+_0xe2bf('0x66'),_0x4e8ae0[_0xe2bf('0x49')],_0x312a40['ticketId']));logger[_0xe2bf('0x23')](util['format']('['+_0x1e0752[_0xe2bf('0x17')]()+_0xe2bf('0x67'),_0x1e0752));if(_0x1e0752!==_0xe2bf('0x68')){logger[_0xe2bf('0x23')]('['+_0x1e0752['toUpperCase']()+']',_0xe2bf('0x69'));emit(_0x315046[_0xe2bf('0xb')],_0x29f97f['name'],_0x4e8ae0[_0xe2bf('0x49')],_0x312a40['ticketId']);}})['catch'](function(_0x48c487){logger[_0xe2bf('0x6a')]('['+_0x1e0752[_0xe2bf('0x17')]()+_0xe2bf('0x6b'),_0x48c487['message']);});};
\ No newline at end of file
+var _0xf15e=['recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20email\x20is:','moduleCreate',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:','ticketId','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','error',']\x20Error\x20running\x20Dynamics365\x20integration','request-promise','util','./util','ioredis','dynamics365','../../../../config/environment','defaults','localhost','socket.io-emitter','redis','remoteUri','CloudProvider','data7','data2','resolve','POST','clientId','username','password','clientSecret','then','access_token','catch','toUpperCase',']\x20Wrong\x20credentials!','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId','message','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','body','headers','odata-entityid','enduserId','telephone1','contacts?$select=','&$filter=','\x20eq\x20\x27','contactid',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','string','picklist','type','nameField','idField','substring','indexOf','content','incident','incidents','assign','getString','Descriptions','/contacts(','Fields','ticketType','phonecall','callDirection','queue','phonecalls','Subjects','lastIndexOf','format','emit','trigger:browser:url','modernAuthentication','stripTrailingSlash','serverUrl','%s/api/data/v9.0/','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!'];(function(_0x3b8f2e,_0x5a99a8){var _0x1433d5=function(_0x5e0353){while(--_0x5e0353){_0x3b8f2e['push'](_0x3b8f2e['shift']());}};_0x1433d5(++_0x5a99a8);}(_0xf15e,0x152));var _0xef15=function(_0x25def2,_0x2d565e){_0x25def2=_0x25def2-0x0;var _0x3dc400=_0xf15e[_0x25def2];return _0x3dc400;};'use strict';var _=require('lodash');var rp=require(_0xef15('0x0'));var util=require(_0xef15('0x1'));var intUtil=require(_0xef15('0x2'));var md5=require('md5');var Redis=require(_0xef15('0x3'));var logger=require('../../../../config/logger')(_0xef15('0x4'));var config=require(_0xef15('0x5'));config['redis']=_[_0xef15('0x6')](config['redis'],{'host':_0xef15('0x7'),'port':0x18eb});var io=require(_0xef15('0x8'))(new Redis(config[_0xef15('0x9')]));function getAuthToken(_0x4eaed3,_0x246fb0,_0x4b1508){if(_0x4eaed3['modernAuthentication']){_0x4eaed3[_0xef15('0xa')]=_0x4eaed3[_0xef15('0xb')][_0xef15('0xc')];_0x4eaed3['tenantId']=_0x4eaed3[_0xef15('0xb')][_0xef15('0xd')];return Promise[_0xef15('0xe')](_0x4eaed3[_0xef15('0xb')]['data5']);}var _0x5a179c={'method':_0xef15('0xf'),'uri':_0x246fb0,'form':{'client_id':_0x4eaed3[_0xef15('0x10')],'resource':_0x4eaed3[_0xef15('0xa')],'username':_0x4eaed3[_0xef15('0x11')],'password':_0x4eaed3['password'],'grant_type':_0xef15('0x12'),'client_secret':_0x4eaed3[_0xef15('0x13')]},'json':!![]};return rp(_0x5a179c)[_0xef15('0x14')](function(_0x53f3f2){return _0x53f3f2[_0xef15('0x15')];})[_0xef15('0x16')](function(_0x3aff1d){logger['error']('['+[_0x4b1508[_0xef15('0x17')]()]+_0xef15('0x18'));return _0x3aff1d['message'];});}function getUser(_0x5ee63d,_0x19d867,_0x26aa73,_0x9c2f35,_0x2225b4,_0x46e06f){return new Promise(function(_0x39a776,_0x322ef9){return getAuthToken(_0x19d867,_0x9c2f35,_0x46e06f)['then'](function(_0x2cecaf){var _0x1d5d01={'method':'GET','uri':_0x2225b4+_0xef15('0x19'),'headers':{'Authorization':_0xef15('0x1a')+_0x2cecaf,'OData-Version':_0xef15('0x1b')},'json':!![]};return rp(_0x1d5d01);})[_0xef15('0x14')](function(_0x26b028){var _0x5857f7=_0x26b028[_0xef15('0x1c')];var _0x1272ca=![];var _0x206609=null;if(!_['isNil'](_0x26aa73)){if(intUtil[_0xef15('0x1d')](_0x26aa73[_0xef15('0x1e')])){_0x5ee63d[_0xef15('0x1f')]=_0x26aa73[_0xef15('0x1e')];for(_0x206609=0x0;_0x206609<_0x5857f7[_0xef15('0x20')];_0x206609++){if(_0x5857f7[_0x206609][_0xef15('0x21')]===_0x26aa73[_0xef15('0x1e')]&&!_0x5857f7[_0x206609][_0xef15('0x22')]){_0x1272ca=!![];logger[_0xef15('0x23')]('['+[_0x46e06f[_0xef15('0x17')]()]+_0xef15('0x24')+_0x5857f7[_0x206609][_0xef15('0x25')]+'!');_0x5ee63d[_0xef15('0x26')]=_0x5857f7[_0x206609][_0xef15('0x25')];}}}}if(!_0x1272ca){logger[_0xef15('0x23')]('['+[_0x46e06f[_0xef15('0x17')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x5ee63d[_0xef15('0x1f')]=_0x19d867['username'];for(_0x206609=0x0;_0x206609<_0x5857f7[_0xef15('0x20')];_0x206609++){if(_0x5857f7[_0x206609]['internalemailaddress']===_0x19d867[_0xef15('0x11')]){_0x5ee63d[_0xef15('0x26')]=_0x5857f7[_0x206609][_0xef15('0x25')];}}}_0x39a776(_0x5ee63d);})[_0xef15('0x16')](function(_0x3fc121){_0x322ef9(_0x3fc121[_0xef15('0x27')]);});});}function createEndUser(_0x217889,_0x3520a7,_0x218859,_0x34521b,_0x2c0bb5,_0x3fbcec,_0x49fd7b){return new Promise(function(_0x11dc89,_0x3ed8fb){return getAuthToken(_0x3520a7,_0x218859,_0x3fbcec)[_0xef15('0x14')](function(_0x565f95){var _0x40e8d6=_0x3fbcec[_0xef15('0x28')]()===_0xef15('0x29')?_0x2c0bb5[_0xef15('0x2a')]:_0x2c0bb5[_0xef15('0x2b')];var _0x4d37c8={'method':_0xef15('0xf'),'uri':_0x34521b+_0xef15('0x2c'),'body':{'fullname':_0x40e8d6,'firstname':_0x40e8d6,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xef15('0x2d')+_0x217889[_0xef15('0x26')]+')'},'headers':{'Authorization':_0xef15('0x1a')+_0x565f95,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};_0x4d37c8[_0xef15('0x2e')][_0x49fd7b]=_0x40e8d6;return rp(_0x4d37c8);})['then'](function(_0x12f053){var _0x10f55a=_0x12f053[_0xef15('0x2f')][_0xef15('0x30')];var _0x35723d=_0x10f55a['substring'](_0x10f55a['lastIndexOf']('(')+0x1,_0x10f55a['lastIndexOf'](')'));_0x217889[_0xef15('0x31')]=_0x35723d;_0x11dc89(_0x217889);})[_0xef15('0x16')](function(_0x199b1d){_0x3ed8fb(_0x199b1d['message']);});});}function getEndUser(_0x4c6737,_0x19f32c,_0x49a038,_0x31badf,_0x52db2a,_0x320195,_0x326658,_0x38ffdc){var _0x3b333f=_0x320195[_0xef15('0x28')]()===_0xef15('0x29')?_0x52db2a['destcalleridnum']:_0x52db2a[_0xef15('0x2b')];return getAuthToken(_0x19f32c,_0x49a038,_0x320195)[_0xef15('0x14')](function(_0x4b63da){_0x38ffdc=_0x38ffdc?_0x38ffdc:_0xef15('0x32');var _0x30d962={'method':'GET','uri':_0x31badf+_0xef15('0x33')+_0x38ffdc+_0xef15('0x34')+_0x38ffdc+_0xef15('0x35')+_0x3b333f['replace']('+','%2b')+'\x27','headers':{'Authorization':_0xef15('0x1a')+_0x4b63da,'If-None-Match':null,'OData-Version':_0xef15('0x1b')},'json':!![]};return rp(_0x30d962);})[_0xef15('0x14')](function(_0x267330){var _0x46abe7=![];if(!_0x267330)return _0x46abe7;var _0x2cce9d=_0x267330[_0xef15('0x1c')];for(var _0x4f2fa0=0x0;_0x4f2fa0<_0x2cce9d['length'];_0x4f2fa0++){if(_0x2cce9d[_0x4f2fa0][_0x38ffdc]===_0x3b333f){_0x46abe7=!![];_0x4c6737[_0xef15('0x31')]=_0x2cce9d[_0x4f2fa0][_0xef15('0x36')];}}return _0x46abe7;})[_0xef15('0x14')](function(_0x5d3b29){if(_0x5d3b29)return _0x4c6737;if(_0x326658==='nothing'){logger[_0xef15('0x23')]('['+[_0x320195[_0xef15('0x17')]()]+_0xef15('0x37'));return _0x4c6737;}return createEndUser(_0x4c6737,_0x19f32c,_0x49a038,_0x31badf,_0x52db2a,_0x320195,_0x38ffdc)[_0xef15('0x14')](function(_0x43365f){logger[_0xef15('0x23')]('['+[_0x320195[_0xef15('0x17')]()]+_0xef15('0x38'),_0x43365f[_0xef15('0x31')]);return _0x43365f;});});}function getCustomFields(_0x289ad7,_0x193cd1,_0x3fbe02){var _0x11f886={};if(_0x289ad7[_0xef15('0x20')]>0x0){_[_0xef15('0x39')](_0x289ad7,function(_0xf4150f){if(_[_0xef15('0x3a')]([_0xef15('0x3b'),_0xef15('0x3c')],_0xf4150f[_0xef15('0x3d')])&&_0xf4150f[_0xef15('0x3e')]&&!_0xf4150f['customField']){var _0x245817=_0xf4150f[_0xef15('0x3f')][_0xef15('0x28')]();var _0x5d9e0e=_0x245817[_0xef15('0x40')](0x0,_0x245817[_0xef15('0x41')]('_'));var _0x49a9ee=_0x245817[_0xef15('0x40')](_0x245817['indexOf']('_')+0x1);if(_0x5d9e0e===_0x3fbe02){_0x11f886[_0x49a9ee]=_0xf4150f[_0xef15('0x42')];}}});}return _0x11f886;}function getTicket(_0x5961ae,_0x56b6a7,_0x163f6b,_0x3c8e48,_0x565d21,_0x5b5150,_0x1e9517){return new Promise(function(_0x1a1c08,_0x44af50){var _0x4095c3;return getAuthToken(_0x56b6a7,_0x163f6b,_0x1e9517)[_0xef15('0x14')](function(_0x5ead0b){if(_0x5b5150['ticketType']===_0xef15('0x43')){_0x4095c3={'method':_0xef15('0xf'),'uri':_0x3c8e48+_0xef15('0x44'),'body':Object[_0xef15('0x45')]({},{'title':intUtil['getString'](_0x5b5150['Subjects'],_0x565d21,'\x20'),'description':intUtil[_0xef15('0x46')](_0x5b5150[_0xef15('0x47')],_0x565d21,'\x0a'),'customerid_contact@odata.bind':_0x5961ae[_0xef15('0x31')]?_0xef15('0x48')+_0x5961ae['enduserId']+')':undefined,'ownerid@odata.bind':_0xef15('0x2d')+_0x5961ae[_0xef15('0x26')]+')','caseorigincode':'1'},getCustomFields(_0x5b5150[_0xef15('0x49')],_0x565d21,_0x5b5150[_0xef15('0x4a')])),'headers':{'Authorization':_0xef15('0x1a')+_0x5ead0b,'OData-Version':_0xef15('0x1b')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x5b5150[_0xef15('0x4a')]===_0xef15('0x4b')){var _0x4d87db=_0x5961ae[_0xef15('0x31')]?[{'partyid_systemuser@odata.bind':'/systemusers('+_0x5961ae['userId']+')','participationtypemask':_0x5961ae[_0xef15('0x4c')]===_0xef15('0x4d')?0x2:0x1},{'partyid_contact@odata.bind':_0xef15('0x48')+_0x5961ae[_0xef15('0x31')]+')','participationtypemask':_0x5961ae[_0xef15('0x4c')]===_0xef15('0x4d')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0xef15('0x2d')+_0x5961ae['userId']+')','participationtypemask':_0x5961ae['callDirection']==='queue'?0x2:0x1}];_0x4095c3={'method':'POST','uri':_0x3c8e48+_0xef15('0x4e'),'body':Object[_0xef15('0x45')]({},{'subject':intUtil[_0xef15('0x46')](_0x5b5150[_0xef15('0x4f')],_0x565d21,'\x20'),'phonenumber':String(_0x565d21[_0xef15('0x2b')]),'description':intUtil[_0xef15('0x46')](_0x5b5150[_0xef15('0x47')],_0x565d21,'\x0a'),'regardingobjectid_contact@odata.bind':_0x5961ae[_0xef15('0x31')]?_0xef15('0x48')+_0x5961ae['enduserId']+')':undefined,'ownerid@odata.bind':_0xef15('0x2d')+_0x5961ae[_0xef15('0x26')]+')','directioncode':_0x5961ae[_0xef15('0x4c')]===_0xef15('0x4d')?![]:!![],'phonecall_activity_parties':_0x4d87db},getCustomFields(_0x5b5150[_0xef15('0x49')],_0x565d21,_0x5b5150[_0xef15('0x4a')])),'headers':{'Authorization':'Bearer\x20'+_0x5ead0b,'OData-Version':_0xef15('0x1b')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x4095c3);})[_0xef15('0x14')](function(_0x154fb1){var _0x37cadb=_0x154fb1['headers']['odata-entityid'];var _0x16127b=_0x37cadb[_0xef15('0x40')](_0x37cadb[_0xef15('0x50')]('(')+0x1,_0x37cadb[_0xef15('0x50')](')'));_0x5961ae['ticketId']=_0x16127b;_0x1a1c08(_0x5961ae);})[_0xef15('0x16')](function(_0x67dc3){_0x44af50(_0x67dc3[_0xef15('0x27')]);});});}function emit(_0x56b838,_0xe725b,_0x3eb2ea,_0x4aa99a){var _0x550726={'uri':util[_0xef15('0x51')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x56b838,_0x3eb2ea,_0x4aa99a)};io['to'](util[_0xef15('0x51')]('user:%s',_0xe725b))[_0xef15('0x52')](_0xef15('0x53'),_0x550726);}exports['cs']=function(_0x26863d,_0x14cb2b,_0x2b369c,_0x445f90,_0xab8ccd,_0x25a34f,_0x5ef072,_0x41acdb){var _0x3fb985={};_0x25a34f['remoteUri']=_0x25a34f[_0xef15('0x54')]?intUtil['stripTrailingSlash'](_0x25a34f[_0xef15('0xb')][_0xef15('0xc')]):intUtil[_0xef15('0x55')](_0x25a34f[_0xef15('0xa')]);_0x25a34f[_0xef15('0x56')]=intUtil[_0xef15('0x55')](_0x25a34f[_0xef15('0x56')]);_0x3fb985[_0xef15('0x4c')]=_0x41acdb===_0xef15('0x4d')||_0x41acdb==='unmanaged'?_0xef15('0x4d'):'outbound';var _0x1cd176=_0x25a34f[_0xef15('0x54')]?util[_0xef15('0x51')](_0xef15('0x57'),_0x25a34f['CloudProvider']['data7']):util[_0xef15('0x51')](_0xef15('0x57'),_0x25a34f[_0xef15('0xa')]);var _0x43d296=util[_0xef15('0x51')]('https://login.microsoftonline.com/%s/oauth2/token',_0x25a34f[_0xef15('0x58')]);var _0x9d6ade=util[_0xef15('0x51')](_0xef15('0x59'),_0x25a34f[_0xef15('0x56')],_0x14cb2b[_0xef15('0x5a')],md5(_0x14cb2b[_0xef15('0x5a')]));if(_0xab8ccd&&_0xab8ccd[_0xef15('0x5b')]){logger[_0xef15('0x23')](_0xef15('0x5c'),_0xef15('0x5d'));_0x14cb2b['recordingURL']=_0x9d6ade;}else if(_0x5ef072&&_0x5ef072[_0xef15('0x5e')]&&_0x5ef072[_0xef15('0x5e')]!==_0xef15('0x5f')){logger[_0xef15('0x23')](_0xef15('0x60'),'Recording\x20is\x20enabled!');_0x14cb2b[_0xef15('0x61')]=_0x9d6ade;}else{_0x14cb2b[_0xef15('0x61')]='';}return getUser(_0x3fb985,_0x25a34f,_0x445f90,_0x43d296,_0x1cd176,_0x41acdb)[_0xef15('0x14')](function(_0x373629){logger['info']('['+_0x41acdb[_0xef15('0x17')]()+']\x20The\x20User\x20ID\x20is:',_0x373629[_0xef15('0x26')]);logger[_0xef15('0x23')]('['+_0x41acdb[_0xef15('0x17')]()+_0xef15('0x62'),_0x373629['userEmail']);return getEndUser(_0x373629,_0x25a34f,_0x43d296,_0x1cd176,_0x14cb2b,_0x41acdb,_0x2b369c[_0xef15('0x63')],_0x2b369c['additionalSearchContact']);})[_0xef15('0x14')](function(_0x1ca747){logger['info']('['+_0x41acdb[_0xef15('0x17')]()+_0xef15('0x64'),_0x1ca747['enduserId']);logger[_0xef15('0x23')]('['+_0x41acdb[_0xef15('0x17')]()+_0xef15('0x65'),_0x14cb2b[_0xef15('0x2b')]);return getTicket(_0x1ca747,_0x25a34f,_0x43d296,_0x1cd176,_0x14cb2b,_0x2b369c,_0x41acdb);})[_0xef15('0x14')](function(_0xe549a2){logger[_0xef15('0x23')](util[_0xef15('0x51')]('['+_0x41acdb[_0xef15('0x17')]()+']\x20The\x20%s\x20ID\x20is:\x20%s',_0x2b369c[_0xef15('0x4a')],_0xe549a2[_0xef15('0x66')]));logger['info'](util[_0xef15('0x51')]('['+_0x41acdb[_0xef15('0x17')]()+']\x20Call\x20direction:\x20%s',_0x41acdb));if(_0x41acdb!==_0xef15('0x67')){logger['info']('['+_0x41acdb[_0xef15('0x17')]()+']',_0xef15('0x68'));emit(_0x25a34f[_0xef15('0xa')],_0x445f90[_0xef15('0x69')],_0x2b369c[_0xef15('0x4a')],_0xe549a2[_0xef15('0x66')]);}})['catch'](function(_0x297da8){logger[_0xef15('0x6a')]('['+_0x41acdb[_0xef15('0x17')]()+_0xef15('0x6b'),_0x297da8[_0xef15('0x27')]);});};
\ No newline at end of file
index b542b68..fee873c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1af7=['merge','format','Caller\x20-\x20%s','calleridname','getString','Subjects','Descriptions','<br>','name','mapValues','custom_fields','%s/api/v2/tickets','remoteUri','POST','Ticket\x20created!','validateEmail','%s/api/v2/agents','then','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','apiKey','toString','base64','debug','[HTTP]','stringify','GET','map','string','picklist','nameField','customField','content','idField','variable','variableName','type','Variable','toLowerCase','push','queue','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','error','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','unmanaged','lastevent','toUpperCase','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...'];(function(_0x11c624,_0x2241f6){var _0x53d9f2=function(_0x40158){while(--_0x40158){_0x11c624['push'](_0x11c624['shift']());}};_0x53d9f2(++_0x2241f6);}(_0x1af7,0xaa));var _0x71af=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x1af7[_0x5d6456];return _0x4d66c1;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require('md5');var util=require('util');var Redis=require(_0x71af('0x0'));var intUtil=require(_0x71af('0x1'));var config=require(_0x71af('0x2'));var logger=require(_0x71af('0x3'))(_0x71af('0x4'));config[_0x71af('0x5')]=_[_0x71af('0x6')](config[_0x71af('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x71af('0x7'))(new Redis(config['redis']));var headers={'Content-Type':_0x71af('0x8'),'Accept':_0x71af('0x8')};function emit(_0x4054ad,_0x6f2555,_0x58e55b){io['to'](_0x4054ad)[_0x71af('0x9')](_0x6f2555,_0x58e55b);}function getTicket(_0x36ee05,_0x40a14f,_0x3018b8,_0x5f2bf7,_0xbbb69b){logger[_0x71af('0xa')](_0x71af('0xb'));var _0x39b2a8=_[_0x71af('0xc')]({'responder_id':_0x40a14f['id'],'requester_id':_0x3018b8['id'],'name':util[_0x71af('0xd')](_0x71af('0xe'),_0xbbb69b[_0x71af('0xf')]),'phone':_0xbbb69b['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x71af('0x10')](_0x5f2bf7[_0x71af('0x11')],_0xbbb69b,'\x20'),'description':intUtil[_0x71af('0x10')](_0x5f2bf7[_0x71af('0x12')],_0xbbb69b,_0x71af('0x13')),'tags':getTags(_0x5f2bf7['Tags'],_0x71af('0x14'))},getCustomFields(_0x5f2bf7['Fields'],_0xbbb69b));_0x39b2a8['custom_fields']=_[_0x71af('0x15')](_['keyBy'](_0x39b2a8[_0x71af('0x16')],'id'),'value');return request({'uri':util['format'](_0x71af('0x17'),_0x36ee05[_0x71af('0x18')]),'method':_0x71af('0x19'),'body':_0x39b2a8})['then'](function(_0x2088dd){logger[_0x71af('0xa')](_0x71af('0x1a'));return _0x2088dd;});}function getUser(_0x11323a,_0x42e3de){if(intUtil[_0x71af('0x1b')](_0x42e3de)){return request({'uri':util[_0x71af('0xd')](_0x71af('0x1c'),_0x11323a['remoteUri']),'qs':{'email':_0x42e3de}})[_0x71af('0x1d')](function(_0x513bdb){if(_0x513bdb[_0x71af('0x1e')]){logger[_0x71af('0xa')](_0x71af('0x1f'));return _[_0x71af('0x20')](_0x513bdb,function(_0x364bac){return _0x364bac[_0x71af('0x21')][_0x71af('0x22')]===_0x42e3de;});}else{logger[_0x71af('0xa')](_0x71af('0x23'));return request({'uri':util['format']('%s/api/v2/agents/me',_0x11323a[_0x71af('0x18')])})[_0x71af('0x1d')](function(_0x583b28){logger['info'](_0x71af('0x24'));return _0x583b28;});}});}else{logger[_0x71af('0xa')](_0x71af('0x25'));return request({'uri':util[_0x71af('0xd')]('%s/api/v2/agents/me',_0x11323a[_0x71af('0x18')])})[_0x71af('0x1d')](function(_0x15e356){logger[_0x71af('0xa')](_0x71af('0x24'));return _0x15e356;});}}function getEndUser(_0x41f63d,_0x53642d,_0x2844f8){logger[_0x71af('0xa')](_0x71af('0x26'),_0x2844f8);return request({'uri':util[_0x71af('0xd')]('%s/api/v2/contacts',_0x41f63d['remoteUri']),'qs':{'phone':_0x2844f8}})['then'](function(_0x354d13){if(_0x354d13[_0x71af('0x1e')]){logger[_0x71af('0xa')](_0x71af('0x27'));return _[_0x71af('0x20')](_0x354d13,{'phone':_0x2844f8});}else{logger[_0x71af('0xa')](_0x71af('0x28'));return request({'uri':util[_0x71af('0xd')](_0x71af('0x29'),_0x41f63d[_0x71af('0x18')]),'method':_0x71af('0x19'),'body':{'name':_0x53642d,'phone':_0x2844f8}})[_0x71af('0x1d')](function(_0x468f6d){logger[_0x71af('0xa')](_0x71af('0x2a'));return _0x468f6d;});}});}function getAuth(_0x540624){return util[_0x71af('0xd')]('Basic\x20%s',new Buffer(_0x540624[_0x71af('0x2b')]+':X')[_0x71af('0x2c')](_0x71af('0x2d')));}function request(_0x30c78c){logger[_0x71af('0x2e')](_0x71af('0x2f'),JSON[_0x71af('0x30')](_0x30c78c));return rp(_[_0x71af('0x6')](_0x30c78c,{'method':_0x71af('0x31'),'headers':headers,'json':!![]}));}function getTags(_0x199d16,_0x2077d1){var _0xaf2927=[];if(_0x199d16&&_0x199d16[_0x71af('0x1e')]>0x0){_0xaf2927=_[_0x71af('0x32')](_0x199d16,_0x2077d1);}return _0xaf2927;}function getCustomFields(_0x193d6b,_0x697e94){var _0x4b0ec0=[];var _0xe57d60={'custom_fields':[]};if(_0x193d6b[_0x71af('0x1e')]>0x0){_['forEach'](_0x193d6b,function(_0x374ac4){if(_['includes']([_0x71af('0x33'),_0x71af('0x34')],_0x374ac4['type'])&&_0x374ac4[_0x71af('0x35')]&&!_0x374ac4[_0x71af('0x36')]){_0xe57d60[_0x374ac4[_0x71af('0x35')]['toLowerCase']()]=_0x374ac4[_0x71af('0x37')][_0x71af('0x2c')]();}else if(_['includes']([_0x71af('0x33'),_0x71af('0x34')],_0x374ac4['type'])&&_0x374ac4[_0x71af('0x38')]&&_0x374ac4[_0x71af('0x36')]){_0xe57d60['custom_fields']['push']({'id':_0x374ac4[_0x71af('0x38')],'value':_0x374ac4[_0x71af('0x37')]['toString']()});}else if(_0x374ac4['type']===_0x71af('0x39')&&_0x374ac4[_0x71af('0x3a')]&&_0x374ac4[_0x71af('0x38')]&&_0x374ac4['customField']){_0x697e94[_0x374ac4[_0x71af('0x3a')]]&&_0xe57d60[_0x71af('0x16')]['push']({'id':_0x374ac4[_0x71af('0x38')],'value':_0x697e94[_0x374ac4[_0x71af('0x3a')]]['toString']()});}else if(_0x374ac4[_0x71af('0x3b')]==='customVariable'&&_0x374ac4[_0x71af('0x3c')]&&_0x374ac4[_0x71af('0x3c')][_0x71af('0x14')]&&_0x374ac4[_0x71af('0x38')]&&_0x374ac4[_0x71af('0x36')]){_0x697e94[_0x374ac4['Variable'][_0x71af('0x14')][_0x71af('0x3d')]()]&&_0xe57d60['custom_fields'][_0x71af('0x3e')]({'id':_0x374ac4[_0x71af('0x38')],'value':_0x697e94[_0x374ac4[_0x71af('0x3c')]['name']['toLowerCase']()][_0x71af('0x2c')]()});}});}return _0xe57d60;}exports[_0x71af('0x3f')]=function(_0x1d5aea,_0x3c8ca0,_0x287c49,_0x5d555d,_0x1ba050,_0xca4982){var _0x51b170,_0x397b92;_0xca4982[_0x71af('0x18')]=intUtil['stripTrailingSlash'](_0xca4982['remoteUri']);_0xca4982[_0x71af('0x40')]=intUtil['stripTrailingSlash'](_0xca4982[_0x71af('0x40')]);if(_0x1ba050&&_0x1ba050[_0x71af('0x41')]){logger[_0x71af('0xa')](_0x71af('0x42'),_0x71af('0x43'));_0x3c8ca0['recordingURL']=util[_0x71af('0xd')](_0x71af('0x44'),_0xca4982[_0x71af('0x40')],_0x3c8ca0['uniqueid'],md5(_0x3c8ca0[_0x71af('0x45')]));}else{_0x3c8ca0[_0x71af('0x46')]='';}headers[_0x71af('0x47')]=getAuth(_0xca4982);return getUser(_0xca4982,_0x5d555d[_0x71af('0x22')])[_0x71af('0x1d')](function(_0x41396b){_0x51b170=_0x41396b;logger[_0x71af('0xa')](_0x71af('0x48'),_0x51b170['id']);return getEndUser(_0xca4982,_0x3c8ca0[_0x71af('0xf')],_0x3c8ca0[_0x71af('0x49')]);})['then'](function(_0x55eede){_0x397b92=_0x55eede;logger[_0x71af('0xa')](_0x71af('0x4a'),_0x397b92['id']);return getTicket(_0xca4982,_0x51b170,_0x397b92,_0x287c49,_0x3c8ca0);})[_0x71af('0x1d')](function(_0x694940){if(_0x694940&&_0x694940['id']){logger[_0x71af('0xa')](_0x71af('0x1a'));logger[_0x71af('0xa')]('The\x20Ticket\x20ID\x20is:',_0x694940['id']);logger[_0x71af('0xa')](_0x71af('0x42'),_0x71af('0x4b'));emit(util['format'](_0x71af('0x4c'),_0x5d555d['name']),_0x71af('0x4d'),{'uri':util['format'](_0x71af('0x4e'),_0xca4982[_0x71af('0x18')],_0x694940['id'])});}})['catch'](function(_0x531772){logger[_0x71af('0x4f')]('[QUEUE]',JSON['stringify'](_0x531772));});};exports[_0x71af('0x50')]=function(_0xf7e7f4,_0x20635a,_0x2ec252,_0x4ded68,_0xfb8fab,_0x48024f,_0xfd776c){var _0x47c628,_0x23b2a0;_0x48024f[_0x71af('0x18')]=intUtil[_0x71af('0x51')](_0x48024f[_0x71af('0x18')]);_0x48024f['serverUrl']=intUtil[_0x71af('0x51')](_0x48024f[_0x71af('0x40')]);if(_0xfd776c&&_0xfd776c[_0x71af('0x52')]&&_0xfd776c[_0x71af('0x52')]!==_0x71af('0x53')){logger['info'](_0x71af('0x54'),_0x71af('0x43'));_0x20635a[_0x71af('0x46')]=util[_0x71af('0xd')](_0x71af('0x44'),_0x48024f[_0x71af('0x40')],_0x20635a['uniqueid'],md5(_0x20635a['uniqueid']));}headers[_0x71af('0x47')]=getAuth(_0x48024f);return getUser(_0x48024f,_0x4ded68[_0x71af('0x22')])[_0x71af('0x1d')](function(_0x16824c){_0x47c628=_0x16824c;logger['info'](_0x71af('0x48'),_0x47c628['id']);return getEndUser(_0x48024f,_0x20635a[_0x71af('0x55')],_0x20635a[_0x71af('0x56')]);})['then'](function(_0x529734){_0x23b2a0=_0x529734;logger[_0x71af('0xa')](_0x71af('0x4a'),_0x23b2a0['id']);return getTicket(_0x48024f,_0x47c628,_0x23b2a0,_0x2ec252,_0x20635a);})[_0x71af('0x1d')](function(_0x23161a){if(_0x23161a&&_0x23161a['id']){logger[_0x71af('0xa')]('Ticket\x20created!');logger[_0x71af('0xa')](_0x71af('0x57'),_0x23161a['id']);logger[_0x71af('0xa')](_0x71af('0x54'),_0x71af('0x4b'));emit(util[_0x71af('0xd')](_0x71af('0x4c'),_0x4ded68[_0x71af('0x14')]),_0x71af('0x4d'),{'uri':util['format']('%s/helpdesk/tickets/%d',_0x48024f[_0x71af('0x18')],_0x23161a['id'])});}})['catch'](function(_0x486abf){logger[_0x71af('0x4f')]('[OUTBOUND]',JSON[_0x71af('0x30')](_0x486abf));});};exports[_0x71af('0x58')]=function(_0x11b46b,_0xb2da34,_0x3b4545,_0x31893a,_0x42d106,_0x4914bf){var _0x4ee3e7,_0x441744;_0x4914bf[_0x71af('0x18')]=intUtil[_0x71af('0x51')](_0x4914bf[_0x71af('0x18')]);_0x4914bf[_0x71af('0x40')]=intUtil[_0x71af('0x51')](_0x4914bf[_0x71af('0x40')]);if(_0x42d106&&_0x42d106['monitor_format']){logger[_0x71af('0xa')]('['+_0xb2da34[_0x71af('0x59')]['toUpperCase']()+']',_0x71af('0x43'));_0xb2da34[_0x71af('0x46')]=util[_0x71af('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4914bf['serverUrl'],_0xb2da34['uniqueid'],md5(_0xb2da34[_0x71af('0x45')]));}else{_0xb2da34['recordingURL']='';}headers['Authorization']=getAuth(_0x4914bf);return getUser(_0x4914bf,'')[_0x71af('0x1d')](function(_0xbf6695){_0x4ee3e7=_0xbf6695;logger[_0x71af('0xa')](_0x71af('0x48'),_0x4ee3e7['id']);return getEndUser(_0x4914bf,_0xb2da34[_0x71af('0xf')],_0xb2da34[_0x71af('0x49')]);})[_0x71af('0x1d')](function(_0x41a0c4){_0x441744=_0x41a0c4;logger[_0x71af('0xa')](_0x71af('0x4a'),_0x441744['id']);return getTicket(_0x4914bf,_0x4ee3e7,_0x441744,_0x3b4545,_0xb2da34);})['then'](function(_0x1b5123){if(_0x1b5123){logger['info']('Ticket\x20created!');logger['info'](_0x71af('0x57'),_0x1b5123['id']);}})['catch'](function(_0x3062db){logger[_0x71af('0x4f')]('['+_0xb2da34['lastevent'][_0x71af('0x5a')]()+']',JSON[_0x71af('0x30')](_0x3062db));});};
\ No newline at end of file
+var _0x5a88=['find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','POST','Basic\x20%s','toString','base64','debug','stringify','GET','includes','string','picklist','type','nameField','customField','content','idField','push','variable','variableName','customVariable','Variable','name','toLowerCase','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','lastevent','toUpperCase','lodash','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','merge','format','calleridname','calleridnum','getString','Descriptions','Tags','Fields','mapValues','keyBy','custom_fields','value','%s/api/v2/tickets','then','info','Ticket\x20created!','validateEmail','remoteUri','Agent\x20found!'];(function(_0x2cfba7,_0x195937){var _0x5f5829=function(_0x595809){while(--_0x595809){_0x2cfba7['push'](_0x2cfba7['shift']());}};_0x5f5829(++_0x195937);}(_0x5a88,0x149));var _0x85a8=function(_0x53a0cc,_0xf33182){_0x53a0cc=_0x53a0cc-0x0;var _0x4dcd4a=_0x5a88[_0x53a0cc];return _0x4dcd4a;};'use strict';var _=require(_0x85a8('0x0'));var rp=require('request-promise');var md5=require(_0x85a8('0x1'));var util=require('util');var Redis=require(_0x85a8('0x2'));var intUtil=require(_0x85a8('0x3'));var config=require(_0x85a8('0x4'));var logger=require(_0x85a8('0x5'))(_0x85a8('0x6'));config[_0x85a8('0x7')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x85a8('0x8'))(new Redis(config[_0x85a8('0x7')]));var headers={'Content-Type':'application/json','Accept':_0x85a8('0x9')};function emit(_0x20e8c8,_0x5ef165,_0x176426){io['to'](_0x20e8c8)[_0x85a8('0xa')](_0x5ef165,_0x176426);}function getTicket(_0x569468,_0x1abcd4,_0x18c320,_0x4ad388,_0x14bdf4){logger['info'](_0x85a8('0xb'));var _0x15a167=_[_0x85a8('0xc')]({'responder_id':_0x1abcd4['id'],'requester_id':_0x18c320['id'],'name':util[_0x85a8('0xd')]('Caller\x20-\x20%s',_0x14bdf4[_0x85a8('0xe')]),'phone':_0x14bdf4[_0x85a8('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x85a8('0x10')](_0x4ad388['Subjects'],_0x14bdf4,'\x20'),'description':intUtil[_0x85a8('0x10')](_0x4ad388[_0x85a8('0x11')],_0x14bdf4,'<br>'),'tags':getTags(_0x4ad388[_0x85a8('0x12')],'name')},getCustomFields(_0x4ad388[_0x85a8('0x13')],_0x14bdf4));_0x15a167['custom_fields']=_[_0x85a8('0x14')](_[_0x85a8('0x15')](_0x15a167[_0x85a8('0x16')],'id'),_0x85a8('0x17'));return request({'uri':util[_0x85a8('0xd')](_0x85a8('0x18'),_0x569468['remoteUri']),'method':'POST','body':_0x15a167})[_0x85a8('0x19')](function(_0x54ca4b){logger[_0x85a8('0x1a')](_0x85a8('0x1b'));return _0x54ca4b;});}function getUser(_0x15ff7b,_0x5c7e6b){if(intUtil[_0x85a8('0x1c')](_0x5c7e6b)){return request({'uri':util[_0x85a8('0xd')]('%s/api/v2/agents',_0x15ff7b[_0x85a8('0x1d')]),'qs':{'email':_0x5c7e6b}})[_0x85a8('0x19')](function(_0x4e53a4){if(_0x4e53a4['length']){logger[_0x85a8('0x1a')](_0x85a8('0x1e'));return _[_0x85a8('0x1f')](_0x4e53a4,function(_0x3c1a36){return _0x3c1a36[_0x85a8('0x20')][_0x85a8('0x21')]===_0x5c7e6b;});}else{logger['info'](_0x85a8('0x22'));return request({'uri':util[_0x85a8('0xd')](_0x85a8('0x23'),_0x15ff7b['remoteUri'])})[_0x85a8('0x19')](function(_0x4893f3){logger[_0x85a8('0x1a')](_0x85a8('0x24'));return _0x4893f3;});}});}else{logger['info'](_0x85a8('0x25'));return request({'uri':util[_0x85a8('0xd')](_0x85a8('0x23'),_0x15ff7b[_0x85a8('0x1d')])})[_0x85a8('0x19')](function(_0x55021b){logger['info'](_0x85a8('0x24'));return _0x55021b;});}}function getEndUser(_0x2e556b,_0x2a5346,_0x451e26){logger['info'](_0x85a8('0x26'),_0x451e26);return request({'uri':util[_0x85a8('0xd')]('%s/api/v2/contacts',_0x2e556b[_0x85a8('0x1d')]),'qs':{'phone':_0x451e26}})[_0x85a8('0x19')](function(_0x50319f){if(_0x50319f[_0x85a8('0x27')]){logger[_0x85a8('0x1a')](_0x85a8('0x28'));return _[_0x85a8('0x1f')](_0x50319f,{'phone':_0x451e26});}else{logger[_0x85a8('0x1a')](_0x85a8('0x29'));return request({'uri':util[_0x85a8('0xd')](_0x85a8('0x2a'),_0x2e556b[_0x85a8('0x1d')]),'method':_0x85a8('0x2b'),'body':{'name':_0x2a5346,'phone':_0x451e26}})[_0x85a8('0x19')](function(_0x7e4272){logger[_0x85a8('0x1a')]('Enduser\x20created.');return _0x7e4272;});}});}function getAuth(_0x1757af){return util[_0x85a8('0xd')](_0x85a8('0x2c'),new Buffer(_0x1757af['apiKey']+':X')[_0x85a8('0x2d')](_0x85a8('0x2e')));}function request(_0x30cac6){logger[_0x85a8('0x2f')]('[HTTP]',JSON[_0x85a8('0x30')](_0x30cac6));return rp(_['defaults'](_0x30cac6,{'method':_0x85a8('0x31'),'headers':headers,'json':!![]}));}function getTags(_0xba9606,_0x28505c){var _0x3a51ee=[];if(_0xba9606&&_0xba9606[_0x85a8('0x27')]>0x0){_0x3a51ee=_['map'](_0xba9606,_0x28505c);}return _0x3a51ee;}function getCustomFields(_0x22e21d,_0x5c92f7){var _0x34d066=[];var _0x4dee61={'custom_fields':[]};if(_0x22e21d['length']>0x0){_['forEach'](_0x22e21d,function(_0x308c93){if(_[_0x85a8('0x32')]([_0x85a8('0x33'),_0x85a8('0x34')],_0x308c93[_0x85a8('0x35')])&&_0x308c93[_0x85a8('0x36')]&&!_0x308c93[_0x85a8('0x37')]){_0x4dee61[_0x308c93['nameField']['toLowerCase']()]=_0x308c93[_0x85a8('0x38')][_0x85a8('0x2d')]();}else if(_[_0x85a8('0x32')](['string',_0x85a8('0x34')],_0x308c93[_0x85a8('0x35')])&&_0x308c93[_0x85a8('0x39')]&&_0x308c93['customField']){_0x4dee61[_0x85a8('0x16')][_0x85a8('0x3a')]({'id':_0x308c93[_0x85a8('0x39')],'value':_0x308c93[_0x85a8('0x38')]['toString']()});}else if(_0x308c93[_0x85a8('0x35')]===_0x85a8('0x3b')&&_0x308c93[_0x85a8('0x3c')]&&_0x308c93[_0x85a8('0x39')]&&_0x308c93[_0x85a8('0x37')]){_0x5c92f7[_0x308c93[_0x85a8('0x3c')]]&&_0x4dee61[_0x85a8('0x16')]['push']({'id':_0x308c93[_0x85a8('0x39')],'value':_0x5c92f7[_0x308c93[_0x85a8('0x3c')]][_0x85a8('0x2d')]()});}else if(_0x308c93[_0x85a8('0x35')]===_0x85a8('0x3d')&&_0x308c93[_0x85a8('0x3e')]&&_0x308c93['Variable'][_0x85a8('0x3f')]&&_0x308c93[_0x85a8('0x39')]&&_0x308c93[_0x85a8('0x37')]){_0x5c92f7[_0x308c93['Variable']['name']['toLowerCase']()]&&_0x4dee61[_0x85a8('0x16')][_0x85a8('0x3a')]({'id':_0x308c93['idField'],'value':_0x5c92f7[_0x308c93[_0x85a8('0x3e')]['name'][_0x85a8('0x40')]()][_0x85a8('0x2d')]()});}});}return _0x4dee61;}exports['queue']=function(_0x57dcbe,_0x37ab9d,_0x55fd22,_0x5acba5,_0x130145,_0x1d232a){var _0x158c8e,_0x225e39;_0x1d232a['remoteUri']=intUtil[_0x85a8('0x41')](_0x1d232a[_0x85a8('0x1d')]);_0x1d232a[_0x85a8('0x42')]=intUtil[_0x85a8('0x41')](_0x1d232a['serverUrl']);if(_0x130145&&_0x130145[_0x85a8('0x43')]){logger['info'](_0x85a8('0x44'),'Recording\x20is\x20enabled!');_0x37ab9d[_0x85a8('0x45')]=util[_0x85a8('0xd')](_0x85a8('0x46'),_0x1d232a[_0x85a8('0x42')],_0x37ab9d[_0x85a8('0x47')],md5(_0x37ab9d[_0x85a8('0x47')]));}else{_0x37ab9d[_0x85a8('0x45')]='';}headers[_0x85a8('0x48')]=getAuth(_0x1d232a);return getUser(_0x1d232a,_0x5acba5[_0x85a8('0x21')])[_0x85a8('0x19')](function(_0x5dba48){_0x158c8e=_0x5dba48;logger[_0x85a8('0x1a')](_0x85a8('0x49'),_0x158c8e['id']);return getEndUser(_0x1d232a,_0x37ab9d[_0x85a8('0xe')],_0x37ab9d[_0x85a8('0xf')]);})[_0x85a8('0x19')](function(_0x5f5106){_0x225e39=_0x5f5106;logger['info'](_0x85a8('0x4a'),_0x225e39['id']);return getTicket(_0x1d232a,_0x158c8e,_0x225e39,_0x55fd22,_0x37ab9d);})[_0x85a8('0x19')](function(_0x491390){if(_0x491390&&_0x491390['id']){logger[_0x85a8('0x1a')](_0x85a8('0x1b'));logger['info'](_0x85a8('0x4b'),_0x491390['id']);logger[_0x85a8('0x1a')](_0x85a8('0x44'),_0x85a8('0x4c'));emit(util['format'](_0x85a8('0x4d'),_0x5acba5['name']),_0x85a8('0x4e'),{'uri':util[_0x85a8('0xd')](_0x85a8('0x4f'),_0x1d232a[_0x85a8('0x1d')],_0x491390['id'])});}})[_0x85a8('0x50')](function(_0x1f8b28){logger[_0x85a8('0x51')]('[QUEUE]',JSON['stringify'](_0x1f8b28));});};exports['outbound']=function(_0x26ccb4,_0x1deb63,_0x94ba2e,_0x289a89,_0x3b0612,_0x575093,_0x450bfa){var _0x57141b,_0x44da8a;_0x575093[_0x85a8('0x1d')]=intUtil[_0x85a8('0x41')](_0x575093[_0x85a8('0x1d')]);_0x575093['serverUrl']=intUtil[_0x85a8('0x41')](_0x575093['serverUrl']);if(_0x450bfa&&_0x450bfa[_0x85a8('0x52')]&&_0x450bfa[_0x85a8('0x52')]!==_0x85a8('0x53')){logger[_0x85a8('0x1a')](_0x85a8('0x54'),_0x85a8('0x55'));_0x1deb63['recordingURL']=util['format'](_0x85a8('0x46'),_0x575093[_0x85a8('0x42')],_0x1deb63[_0x85a8('0x47')],md5(_0x1deb63[_0x85a8('0x47')]));}headers['Authorization']=getAuth(_0x575093);return getUser(_0x575093,_0x289a89[_0x85a8('0x21')])[_0x85a8('0x19')](function(_0x28d33c){_0x57141b=_0x28d33c;logger[_0x85a8('0x1a')](_0x85a8('0x49'),_0x57141b['id']);return getEndUser(_0x575093,_0x1deb63[_0x85a8('0x56')],_0x1deb63[_0x85a8('0x57')]);})[_0x85a8('0x19')](function(_0x3c3b8f){_0x44da8a=_0x3c3b8f;logger[_0x85a8('0x1a')]('The\x20Enduser\x20ID\x20is:',_0x44da8a['id']);return getTicket(_0x575093,_0x57141b,_0x44da8a,_0x94ba2e,_0x1deb63);})['then'](function(_0x4a8ee7){if(_0x4a8ee7&&_0x4a8ee7['id']){logger[_0x85a8('0x1a')]('Ticket\x20created!');logger[_0x85a8('0x1a')](_0x85a8('0x4b'),_0x4a8ee7['id']);logger[_0x85a8('0x1a')](_0x85a8('0x54'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x289a89[_0x85a8('0x3f')]),_0x85a8('0x4e'),{'uri':util[_0x85a8('0xd')](_0x85a8('0x4f'),_0x575093[_0x85a8('0x1d')],_0x4a8ee7['id'])});}})['catch'](function(_0x2f0221){logger[_0x85a8('0x51')](_0x85a8('0x54'),JSON['stringify'](_0x2f0221));});};exports['unmanaged']=function(_0x21f9e0,_0x35b469,_0x58d052,_0x4416a6,_0x11f496,_0x10c407){var _0x27214d,_0x5a268f;_0x10c407['remoteUri']=intUtil[_0x85a8('0x41')](_0x10c407[_0x85a8('0x1d')]);_0x10c407[_0x85a8('0x42')]=intUtil[_0x85a8('0x41')](_0x10c407[_0x85a8('0x42')]);if(_0x11f496&&_0x11f496[_0x85a8('0x43')]){logger[_0x85a8('0x1a')]('['+_0x35b469[_0x85a8('0x58')]['toUpperCase']()+']',_0x85a8('0x55'));_0x35b469['recordingURL']=util[_0x85a8('0xd')](_0x85a8('0x46'),_0x10c407[_0x85a8('0x42')],_0x35b469[_0x85a8('0x47')],md5(_0x35b469[_0x85a8('0x47')]));}else{_0x35b469['recordingURL']='';}headers[_0x85a8('0x48')]=getAuth(_0x10c407);return getUser(_0x10c407,'')[_0x85a8('0x19')](function(_0x59c482){_0x27214d=_0x59c482;logger['info']('The\x20User\x20ID\x20is:',_0x27214d['id']);return getEndUser(_0x10c407,_0x35b469[_0x85a8('0xe')],_0x35b469[_0x85a8('0xf')]);})[_0x85a8('0x19')](function(_0x36d508){_0x5a268f=_0x36d508;logger[_0x85a8('0x1a')]('The\x20Enduser\x20ID\x20is:',_0x5a268f['id']);return getTicket(_0x10c407,_0x27214d,_0x5a268f,_0x58d052,_0x35b469);})[_0x85a8('0x19')](function(_0x52d554){if(_0x52d554){logger['info'](_0x85a8('0x1b'));logger[_0x85a8('0x1a')]('The\x20Ticket\x20ID\x20is:',_0x52d554['id']);}})['catch'](function(_0x40aaf2){logger[_0x85a8('0x51')]('['+_0x35b469[_0x85a8('0x58')][_0x85a8('0x59')]()+']',JSON['stringify'](_0x40aaf2));});};
\ No newline at end of file
index 8ab90d1..c86d63c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f15=['task','Task\x20created:','/contacts/','user:%s','trigger:browser:url','remoteUri','stripTrailingSlash','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','unmanaged','queue','email','serverUrl','uniqueid','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','md5','util','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','info','Getting\x20admin\x20information','then','length','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','headers','Getting\x20user\x20list','users','agentEmail','Getting\x20user\x20with\x20email','userId','User\x20found:','Admin\x20selected','userEmail','adminEmail','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','Contact\x20found\x20mobile_number:','Contact\x20found\x20work_number:','endUserId','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','getString','Subjects','Descriptions','Contact','add','ticketId'];(function(_0x380df2,_0x281a15){var _0x47f4df=function(_0x132241){while(--_0x132241){_0x380df2['push'](_0x380df2['shift']());}};_0x47f4df(++_0x281a15);}(_0x7f15,0x176));var _0x57f1=function(_0x1aed8d,_0x5c9019){_0x1aed8d=_0x1aed8d-0x0;var _0x5a5171=_0x7f15[_0x1aed8d];return _0x5a5171;};'use strict';var _=require(_0x57f1('0x0'));var rp=require('request-promise');var md5=require(_0x57f1('0x1'));var util=require(_0x57f1('0x2'));var moment=require('moment');var Promise=require(_0x57f1('0x3'));var Redis=require(_0x57f1('0x4'));var intUtil=require(_0x57f1('0x5'));var config=require(_0x57f1('0x6'));var logger=require(_0x57f1('0x7'))(_0x57f1('0x8'));config[_0x57f1('0x9')]=_[_0x57f1('0xa')](config[_0x57f1('0x9')],{'host':_0x57f1('0xb'),'port':0x18eb});var io=require(_0x57f1('0xc'))(new Redis(config['redis']));function getAdminId(_0x18104b,_0x103d18,_0x3733d5,_0x3f0484){return new Promise(function(_0x5a111c,_0x41c9e7){var _0xf07123=![];var _0x203917={'method':_0x57f1('0xd'),'uri':_0x3f0484+_0x57f1('0xe'),'json':!![]};_0x203917['headers']=_0x3733d5;logger[_0x57f1('0xf')](_0x57f1('0x10'));return rp(_0x203917)[_0x57f1('0x11')](function(_0x29adc2){if(_0x29adc2){var _0x5eae1c=_0x29adc2['users'];var _0x55cff1=null;for(_0x55cff1=0x0;_0x55cff1<_0x5eae1c[_0x57f1('0x12')];_0x55cff1++){if(_0x5eae1c[_0x55cff1]['email']===_0x18104b['adminEmail']){_0x18104b[_0x57f1('0x13')]=_0x5eae1c[_0x55cff1]['id'];_0xf07123=!![];}}if(_0xf07123){logger[_0x57f1('0xf')](_0x57f1('0x14'),_0x18104b[_0x57f1('0x13')]);_0x5a111c(_0x18104b);}else{_0x41c9e7({'statusCode':0x194,'message':_0x57f1('0x15')});}}else{_0x41c9e7({'statusCode':0x194,'message':_0x57f1('0x15')});}})[_0x57f1('0x16')](function(_0x184635){logger[_0x57f1('0x17')]('['+[_0x103d18[_0x57f1('0x18')]()]+']',_0x184635[_0x57f1('0x19')]);_0x41c9e7(_0x184635);});});}function getUser(_0x5b6458,_0x54a5f2,_0x3d66d8){return function(_0xf59e77){return new Promise(function(_0x1070a7,_0xa83c60){var _0x3dd058={'method':'GET','uri':_0x3d66d8+_0x57f1('0xe'),'json':!![]};_0x3dd058[_0x57f1('0x1a')]=_0x54a5f2;logger[_0x57f1('0xf')](_0x57f1('0x1b'));return rp(_0x3dd058)[_0x57f1('0x11')](function(_0x5def4a){if(_0x5def4a){var _0x41bec7=_0x5def4a[_0x57f1('0x1c')];var _0x22244a=![];var _0x53f0d8=null;if(_0xf59e77[_0x57f1('0x1d')]!==null){logger[_0x57f1('0xf')](_0x57f1('0x1e'),_0xf59e77[_0x57f1('0x1d')]);_0xf59e77['userEmail']=_0xf59e77[_0x57f1('0x1d')];for(_0x53f0d8=0x0;_0x53f0d8<_0x41bec7[_0x57f1('0x12')];_0x53f0d8++){if(_0x41bec7[_0x53f0d8]['email']===_0xf59e77[_0x57f1('0x1d')]){_0x22244a=!![];_0xf59e77[_0x57f1('0x1f')]=_0x41bec7[_0x53f0d8]['id'];logger['info'](_0x57f1('0x20'),_0xf59e77['userId']);}}}if(!_0x22244a){logger['info'](_0x57f1('0x21'));_0xf59e77[_0x57f1('0x22')]=_0xf59e77[_0x57f1('0x23')];_0xf59e77['userId']=_0xf59e77[_0x57f1('0x13')];_0x22244a=!![];}if(_0x22244a){_0x1070a7(_0xf59e77);}else{_0xa83c60({'statusCode':0x194,'message':_0x57f1('0x15')});}}else{_0xa83c60({'statusCode':0x194,'message':_0x57f1('0x15')});}})[_0x57f1('0x16')](function(_0x5df225){logger['error']('['+[_0x5b6458[_0x57f1('0x18')]()]+']',_0x5df225[_0x57f1('0x19')]);_0xa83c60(_0x5df225);});});};}function searchContact(_0x1d7a65,_0x3d766c,_0xdabaee,_0x4871a8){return new Promise(function(_0x13aed6,_0x42cb6c){var _0xfeaffd={'method':_0x57f1('0xd'),'headers':_0x3d766c,'uri':_0x1d7a65+_0x57f1('0x24')+_0x4871a8+_0x57f1('0x25')+_0xdabaee+_0x57f1('0x26'),'json':!![]};rp(_0xfeaffd)[_0x57f1('0x11')](function(_0x4055cb){var _0x4325a3=_[_0x57f1('0x27')](_0x4055cb[_0x57f1('0x28')][_0x57f1('0x28')],[_0xdabaee,_0x4871a8]);_0x13aed6(_0x4325a3);})[_0x57f1('0x16')](function(_0x2afaee){_0x42cb6c(_0x2afaee);});});}function getEndUser(_0x3cce04,_0x203387,_0xd79c44){return function(_0x2ad9aa){return new Promise(function(_0x1e48f2,_0x4d8e86){logger[_0x57f1('0xf')](util[_0x57f1('0x29')](_0x57f1('0x2a'),_0x2ad9aa[_0x57f1('0x2b')]));searchContact(_0xd79c44,_0x203387,_0x57f1('0x2c'),_0x2ad9aa[_0x57f1('0x2b')])[_0x57f1('0x11')](function(_0x546907){if(_0x546907){_0x2ad9aa['endUserId']=_0x546907['id'];logger[_0x57f1('0xf')](_0x57f1('0x2d'),_0x2ad9aa['endUserId']);return _0x1e48f2(_0x2ad9aa);}searchContact(_0xd79c44,_0x203387,'work_number',_0x2ad9aa[_0x57f1('0x2b')])[_0x57f1('0x11')](function(_0x4316d3){if(_0x4316d3){_0x2ad9aa['endUserId']=_0x4316d3['id'];logger['info'](_0x57f1('0x2e'),_0x2ad9aa[_0x57f1('0x2f')]);return _0x1e48f2(_0x2ad9aa);}createEndUser(_0x2ad9aa,_0x3cce04,_0x203387,_0xd79c44)['then'](function(_0x3c5402){logger[_0x57f1('0xf')](_0x57f1('0x30'),_0x3c5402['endUserId']);return _0x1e48f2(_0x3c5402);});});})['catch'](function(_0x5b376a){_0x4d8e86(_0x5b376a);});});};}function createEndUser(_0x7802a5,_0x4cd349,_0x1a828b,_0xba3b7c){return new Promise(function(_0x5c9cc8,_0x15da68){var _0x239cd2=moment();var _0x2ea31d={'method':_0x57f1('0x31'),'uri':_0xba3b7c+_0x57f1('0x32'),'body':{'contact':{'last_name':_0x7802a5['contactNumber'],'work_number':_0x7802a5[_0x57f1('0x2b')],'mobile_number':_0x7802a5[_0x57f1('0x2b')],'owner_id':_0x7802a5['userId'],'created_at':_0x239cd2['format'](_0x57f1('0x33'))}},'json':!![]};_0x2ea31d[_0x57f1('0x1a')]=_0x1a828b;logger[_0x57f1('0xf')](_0x57f1('0x34'));return rp(_0x2ea31d)[_0x57f1('0x11')](function(_0x2a6609){_0x7802a5[_0x57f1('0x2f')]=_0x2a6609[_0x57f1('0x35')]['id'];_0x5c9cc8(_0x7802a5);})[_0x57f1('0x16')](function(_0x4a77c8){logger[_0x57f1('0x17')]('['+[_0x4cd349[_0x57f1('0x18')]()]+']',_0x4a77c8[_0x57f1('0x19')]);_0x15da68(_0x4a77c8[_0x57f1('0x19')]);});});}function getTicket(_0xc0610c,_0x267c2d,_0x1a3fd8,_0x58c117,_0xe6a4df){return function(_0x17aee0){logger['info'](_0x57f1('0x36'));return new Promise(function(_0x3d8e89,_0x4a6b28){var _0x1def1c=moment();var _0x48fca1={'method':_0x57f1('0x31'),'uri':_0x1a3fd8+'/api/tasks','body':{'title':intUtil[_0x57f1('0x37')](_0x58c117[_0x57f1('0x38')],_0xe6a4df,'\x20'),'description':intUtil[_0x57f1('0x37')](_0x58c117[_0x57f1('0x39')],_0xe6a4df,'\x0a'),'owner_id':_0x17aee0[_0x57f1('0x1f')],'creater_id':_0x17aee0[_0x57f1('0x13')],'targetable_id':_0x17aee0['endUserId'],'targetable_type':_0x57f1('0x3a'),'created_at':_0x1def1c[_0x57f1('0x29')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x1def1c[_0x57f1('0x3b')](0x1e,'m')[_0x57f1('0x29')]('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x48fca1[_0x57f1('0x1a')]=_0x267c2d;return rp(_0x48fca1)[_0x57f1('0x11')](function(_0x48f824){_0x17aee0[_0x57f1('0x3c')]=_0x48f824[_0x57f1('0x3d')]['id'];logger[_0x57f1('0xf')](_0x57f1('0x3e'),_0x17aee0[_0x57f1('0x3c')]);_0x3d8e89(_0x17aee0);})[_0x57f1('0x16')](function(_0x4ccb0c){logger[_0x57f1('0x17')]('['+[_0xc0610c[_0x57f1('0x18')]()]+']',_0x4ccb0c[_0x57f1('0x19')]);_0x4a6b28(_0x4ccb0c[_0x57f1('0x19')]);});});};}function emit(_0x19a494,_0x2fa60a,_0x5d2a1e){var _0x5b8968={'uri':_0x19a494+_0x57f1('0x3f')+_0x5d2a1e};io['to'](util['format'](_0x57f1('0x40'),_0x2fa60a))['emit'](_0x57f1('0x41'),_0x5b8968);}exports['cs']=function(_0x5c1b9,_0x29736b,_0x2c67a9,_0xd22545,_0x23e7fe,_0x112d91,_0x478f83,_0x590b5a){var _0x2d6c50={};var _0x25b16e={'Authorization':'Token\x20token='+_0x112d91['apiKey']};_0x112d91[_0x57f1('0x42')]=intUtil[_0x57f1('0x43')](_0x112d91[_0x57f1('0x42')]);_0x112d91['serverUrl']=intUtil['stripTrailingSlash'](_0x112d91['serverUrl']);var _0x599189=_0x112d91[_0x57f1('0x42')];_0x2d6c50[_0x57f1('0x23')]=_0x112d91['username'];_0x2d6c50['contactNumber']=_0x590b5a[_0x57f1('0x44')]()===_0x57f1('0x45')?_0x29736b[_0x57f1('0x46')]:_0x29736b[_0x57f1('0x47')];_0x2d6c50[_0x57f1('0x48')]=_0x590b5a==='queue'||_0x590b5a===_0x57f1('0x49')?_0x57f1('0x4a'):'outbound';if(_0xd22545){_0x2d6c50[_0x57f1('0x1d')]=_0xd22545[_0x57f1('0x4b')];}var _0x380e94=util[_0x57f1('0x29')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x112d91[_0x57f1('0x4c')],_0x29736b[_0x57f1('0x4d')],md5(_0x29736b[_0x57f1('0x4d')]));if(_0x23e7fe&&_0x23e7fe['monitor_format']){logger['info']('[QUEUE]',_0x57f1('0x4e'));_0x29736b['recordingURL']=_0x380e94;}else if(_0x478f83&&_0x478f83[_0x57f1('0x4f')]&&_0x478f83[_0x57f1('0x4f')]!==_0x57f1('0x50')){logger[_0x57f1('0xf')](_0x57f1('0x51'),'Recording\x20is\x20enabled!');_0x29736b['recordingURL']=_0x380e94;}else{_0x29736b['recordingURL']='';}return getAdminId(_0x2d6c50,_0x590b5a,_0x25b16e,_0x599189)[_0x57f1('0x11')](getUser(_0x590b5a,_0x25b16e,_0x599189))[_0x57f1('0x11')](getEndUser(_0x590b5a,_0x25b16e,_0x599189))['then'](getTicket(_0x590b5a,_0x25b16e,_0x599189,_0x2c67a9,_0x29736b))[_0x57f1('0x11')](function(_0x4df42b){logger[_0x57f1('0xf')](util[_0x57f1('0x29')](_0x57f1('0x52'),_0x4df42b[_0x57f1('0x3c')]));if(_0x590b5a!==_0x57f1('0x49')){logger['info']('['+[_0x590b5a[_0x57f1('0x18')]()]+']',_0x57f1('0x53'));emit(_0x599189,_0xd22545[_0x57f1('0x54')],_0x4df42b[_0x57f1('0x2f')]);}})['catch'](function(_0x2b0963){logger[_0x57f1('0x17')]('['+[_0x590b5a[_0x57f1('0x18')]()]+_0x57f1('0x55'),util[_0x57f1('0x56')](_0x2b0963,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x84fe=['message','headers','Getting\x20user\x20with\x20email','agentEmail','userEmail','userId','/api/lookup?q=','&f=','&entities=contact','then','find','contacts','contactNumber','endUserId','Contact\x20found\x20mobile_number:','Contact\x20created:','POST','/api/contacts','format','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','getString','Subjects','Contact','add','task','ticketId','/contacts/','emit','Token\x20token=','remoteUri','stripTrailingSlash','serverUrl','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','util','moment','bluebird','ioredis','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','GET','/api/selector/owners','info','Getting\x20admin\x20information','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase'];(function(_0x2e377b,_0x4fe369){var _0x2f57f3=function(_0x4e6706){while(--_0x4e6706){_0x2e377b['push'](_0x2e377b['shift']());}};_0x2f57f3(++_0x4fe369);}(_0x84fe,0x17c));var _0xe84f=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x84fe[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xe84f('0x0'));var rp=require(_0xe84f('0x1'));var md5=require('md5');var util=require(_0xe84f('0x2'));var moment=require(_0xe84f('0x3'));var Promise=require(_0xe84f('0x4'));var Redis=require(_0xe84f('0x5'));var intUtil=require('./util');var config=require(_0xe84f('0x6'));var logger=require(_0xe84f('0x7'))(_0xe84f('0x8'));config[_0xe84f('0x9')]=_[_0xe84f('0xa')](config[_0xe84f('0x9')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe84f('0x9')]));function getAdminId(_0x33050d,_0x1d8810,_0x4d58ab,_0x2f087c){return new Promise(function(_0x10fd8c,_0x261484){var _0x5079d9=![];var _0x3a66f1={'method':_0xe84f('0xb'),'uri':_0x2f087c+_0xe84f('0xc'),'json':!![]};_0x3a66f1['headers']=_0x4d58ab;logger[_0xe84f('0xd')](_0xe84f('0xe'));return rp(_0x3a66f1)['then'](function(_0x5dc149){if(_0x5dc149){var _0x2aac83=_0x5dc149[_0xe84f('0xf')];var _0x4c9ba7=null;for(_0x4c9ba7=0x0;_0x4c9ba7<_0x2aac83[_0xe84f('0x10')];_0x4c9ba7++){if(_0x2aac83[_0x4c9ba7][_0xe84f('0x11')]===_0x33050d[_0xe84f('0x12')]){_0x33050d[_0xe84f('0x13')]=_0x2aac83[_0x4c9ba7]['id'];_0x5079d9=!![];}}if(_0x5079d9){logger[_0xe84f('0xd')](_0xe84f('0x14'),_0x33050d[_0xe84f('0x13')]);_0x10fd8c(_0x33050d);}else{_0x261484({'statusCode':0x194,'message':_0xe84f('0x15')});}}else{_0x261484({'statusCode':0x194,'message':_0xe84f('0x15')});}})[_0xe84f('0x16')](function(_0xb8bad9){logger[_0xe84f('0x17')]('['+[_0x1d8810[_0xe84f('0x18')]()]+']',_0xb8bad9[_0xe84f('0x19')]);_0x261484(_0xb8bad9);});});}function getUser(_0x38b4ad,_0x495cf7,_0x4ea335){return function(_0x179b12){return new Promise(function(_0x21937e,_0x6d43){var _0x573b0a={'method':'GET','uri':_0x4ea335+_0xe84f('0xc'),'json':!![]};_0x573b0a[_0xe84f('0x1a')]=_0x495cf7;logger[_0xe84f('0xd')]('Getting\x20user\x20list');return rp(_0x573b0a)['then'](function(_0x14ba78){if(_0x14ba78){var _0x4c5ed5=_0x14ba78['users'];var _0x5e5292=![];var _0x1d3043=null;if(_0x179b12['agentEmail']!==null){logger[_0xe84f('0xd')](_0xe84f('0x1b'),_0x179b12[_0xe84f('0x1c')]);_0x179b12[_0xe84f('0x1d')]=_0x179b12['agentEmail'];for(_0x1d3043=0x0;_0x1d3043<_0x4c5ed5['length'];_0x1d3043++){if(_0x4c5ed5[_0x1d3043][_0xe84f('0x11')]===_0x179b12[_0xe84f('0x1c')]){_0x5e5292=!![];_0x179b12['userId']=_0x4c5ed5[_0x1d3043]['id'];logger['info']('User\x20found:',_0x179b12['userId']);}}}if(!_0x5e5292){logger[_0xe84f('0xd')]('Admin\x20selected');_0x179b12[_0xe84f('0x1d')]=_0x179b12[_0xe84f('0x12')];_0x179b12[_0xe84f('0x1e')]=_0x179b12['adminId'];_0x5e5292=!![];}if(_0x5e5292){_0x21937e(_0x179b12);}else{_0x6d43({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x6d43({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0xc652a){logger[_0xe84f('0x17')]('['+[_0x38b4ad[_0xe84f('0x18')]()]+']',_0xc652a['message']);_0x6d43(_0xc652a);});});};}function searchContact(_0x2a0902,_0x258e26,_0x1fd696,_0x1bb917){return new Promise(function(_0x2e701a,_0x4efc56){var _0x2c5302={'method':_0xe84f('0xb'),'headers':_0x258e26,'uri':_0x2a0902+_0xe84f('0x1f')+_0x1bb917+_0xe84f('0x20')+_0x1fd696+_0xe84f('0x21'),'json':!![]};rp(_0x2c5302)[_0xe84f('0x22')](function(_0x101c09){var _0x1c46f3=_[_0xe84f('0x23')](_0x101c09[_0xe84f('0x24')][_0xe84f('0x24')],[_0x1fd696,_0x1bb917]);_0x2e701a(_0x1c46f3);})[_0xe84f('0x16')](function(_0x2921be){_0x4efc56(_0x2921be);});});}function getEndUser(_0x39935c,_0x1efe93,_0x1c5742){return function(_0x44d065){return new Promise(function(_0x4258a3,_0x10cce9){logger[_0xe84f('0xd')](util['format']('Searching\x20contact\x20with\x20phone\x20%s',_0x44d065[_0xe84f('0x25')]));searchContact(_0x1c5742,_0x1efe93,'mobile_number',_0x44d065[_0xe84f('0x25')])[_0xe84f('0x22')](function(_0x1ecec0){if(_0x1ecec0){_0x44d065[_0xe84f('0x26')]=_0x1ecec0['id'];logger['info'](_0xe84f('0x27'),_0x44d065[_0xe84f('0x26')]);return _0x4258a3(_0x44d065);}searchContact(_0x1c5742,_0x1efe93,'work_number',_0x44d065[_0xe84f('0x25')])['then'](function(_0x4331e3){if(_0x4331e3){_0x44d065['endUserId']=_0x4331e3['id'];logger['info']('Contact\x20found\x20work_number:',_0x44d065[_0xe84f('0x26')]);return _0x4258a3(_0x44d065);}createEndUser(_0x44d065,_0x39935c,_0x1efe93,_0x1c5742)[_0xe84f('0x22')](function(_0x36918e){logger[_0xe84f('0xd')](_0xe84f('0x28'),_0x36918e[_0xe84f('0x26')]);return _0x4258a3(_0x36918e);});});})[_0xe84f('0x16')](function(_0x267dc0){_0x10cce9(_0x267dc0);});});};}function createEndUser(_0x374e6b,_0x3b138f,_0x37b5c0,_0x4da852){return new Promise(function(_0x103728,_0x669aad){var _0x2b3aae=moment();var _0x19b2f4={'method':_0xe84f('0x29'),'uri':_0x4da852+_0xe84f('0x2a'),'body':{'contact':{'last_name':_0x374e6b[_0xe84f('0x25')],'work_number':_0x374e6b[_0xe84f('0x25')],'mobile_number':_0x374e6b['contactNumber'],'owner_id':_0x374e6b[_0xe84f('0x1e')],'created_at':_0x2b3aae[_0xe84f('0x2b')](_0xe84f('0x2c'))}},'json':!![]};_0x19b2f4[_0xe84f('0x1a')]=_0x37b5c0;logger['info'](_0xe84f('0x2d'));return rp(_0x19b2f4)[_0xe84f('0x22')](function(_0x4f5190){_0x374e6b['endUserId']=_0x4f5190[_0xe84f('0x2e')]['id'];_0x103728(_0x374e6b);})[_0xe84f('0x16')](function(_0x5e5693){logger[_0xe84f('0x17')]('['+[_0x3b138f['toUpperCase']()]+']',_0x5e5693[_0xe84f('0x19')]);_0x669aad(_0x5e5693['message']);});});}function getTicket(_0xea8229,_0xafc5b3,_0x3120fd,_0x36c732,_0x5205f3){return function(_0x16371d){logger[_0xe84f('0xd')](_0xe84f('0x2f'));return new Promise(function(_0x18f431,_0x3c7db7){var _0xd32a5d=moment();var _0x2346d9={'method':_0xe84f('0x29'),'uri':_0x3120fd+_0xe84f('0x30'),'body':{'title':intUtil[_0xe84f('0x31')](_0x36c732[_0xe84f('0x32')],_0x5205f3,'\x20'),'description':intUtil[_0xe84f('0x31')](_0x36c732['Descriptions'],_0x5205f3,'\x0a'),'owner_id':_0x16371d['userId'],'creater_id':_0x16371d[_0xe84f('0x13')],'targetable_id':_0x16371d['endUserId'],'targetable_type':_0xe84f('0x33'),'created_at':_0xd32a5d['format'](_0xe84f('0x2c')),'due_date':_0xd32a5d[_0xe84f('0x34')](0x1e,'m')[_0xe84f('0x2b')](_0xe84f('0x2c'))},'json':!![]};_0x2346d9[_0xe84f('0x1a')]=_0xafc5b3;return rp(_0x2346d9)['then'](function(_0x26d8a7){_0x16371d['ticketId']=_0x26d8a7[_0xe84f('0x35')]['id'];logger[_0xe84f('0xd')]('Task\x20created:',_0x16371d[_0xe84f('0x36')]);_0x18f431(_0x16371d);})[_0xe84f('0x16')](function(_0x43c0bb){logger[_0xe84f('0x17')]('['+[_0xea8229[_0xe84f('0x18')]()]+']',_0x43c0bb[_0xe84f('0x19')]);_0x3c7db7(_0x43c0bb[_0xe84f('0x19')]);});});};}function emit(_0x227f76,_0x59b3ec,_0x26a8f9){var _0x3bf188={'uri':_0x227f76+_0xe84f('0x37')+_0x26a8f9};io['to'](util[_0xe84f('0x2b')]('user:%s',_0x59b3ec))[_0xe84f('0x38')]('trigger:browser:url',_0x3bf188);}exports['cs']=function(_0xe78f72,_0x4e532b,_0x58c538,_0x3527db,_0x4b8c03,_0x2ce38a,_0xc9cd83,_0x25b2be){var _0x533faf={};var _0x8c46b6={'Authorization':_0xe84f('0x39')+_0x2ce38a['apiKey']};_0x2ce38a[_0xe84f('0x3a')]=intUtil[_0xe84f('0x3b')](_0x2ce38a[_0xe84f('0x3a')]);_0x2ce38a[_0xe84f('0x3c')]=intUtil[_0xe84f('0x3b')](_0x2ce38a[_0xe84f('0x3c')]);var _0x451caa=_0x2ce38a[_0xe84f('0x3a')];_0x533faf[_0xe84f('0x12')]=_0x2ce38a['username'];_0x533faf[_0xe84f('0x25')]=_0x25b2be[_0xe84f('0x3d')]()===_0xe84f('0x3e')?_0x4e532b[_0xe84f('0x3f')]:_0x4e532b[_0xe84f('0x40')];_0x533faf[_0xe84f('0x41')]=_0x25b2be==='queue'||_0x25b2be==='unmanaged'?_0xe84f('0x42'):_0xe84f('0x3e');if(_0x3527db){_0x533faf['agentEmail']=_0x3527db[_0xe84f('0x11')];}var _0x274e59=util['format'](_0xe84f('0x43'),_0x2ce38a[_0xe84f('0x3c')],_0x4e532b[_0xe84f('0x44')],md5(_0x4e532b[_0xe84f('0x44')]));if(_0x4b8c03&&_0x4b8c03[_0xe84f('0x45')]){logger[_0xe84f('0xd')]('[QUEUE]',_0xe84f('0x46'));_0x4e532b[_0xe84f('0x47')]=_0x274e59;}else if(_0xc9cd83&&_0xc9cd83[_0xe84f('0x48')]&&_0xc9cd83[_0xe84f('0x48')]!==_0xe84f('0x49')){logger[_0xe84f('0xd')](_0xe84f('0x4a'),_0xe84f('0x46'));_0x4e532b[_0xe84f('0x47')]=_0x274e59;}else{_0x4e532b[_0xe84f('0x47')]='';}return getAdminId(_0x533faf,_0x25b2be,_0x8c46b6,_0x451caa)[_0xe84f('0x22')](getUser(_0x25b2be,_0x8c46b6,_0x451caa))[_0xe84f('0x22')](getEndUser(_0x25b2be,_0x8c46b6,_0x451caa))[_0xe84f('0x22')](getTicket(_0x25b2be,_0x8c46b6,_0x451caa,_0x58c538,_0x4e532b))['then'](function(_0x1a565e){logger[_0xe84f('0xd')](util['format'](_0xe84f('0x4b'),_0x1a565e[_0xe84f('0x36')]));if(_0x25b2be!==_0xe84f('0x4c')){logger[_0xe84f('0xd')]('['+[_0x25b2be[_0xe84f('0x18')]()]+']',_0xe84f('0x4d'));emit(_0x451caa,_0x3527db[_0xe84f('0x4e')],_0x1a565e[_0xe84f('0x26')]);}})['catch'](function(_0xc5a048){logger[_0xe84f('0x17')]('['+[_0x25b2be[_0xe84f('0x18')]()]+_0xe84f('0x4f'),util[_0xe84f('0x50')](_0xc5a048,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index fdd861b..1a791a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2a3=['dynamics365','unknown\x20integration','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','data3','../../../../config/logger','%s\x20account\x20#%s\x20not\x20found','lodash','./zendesk','./salesforce','./sugarcrm','./zoho','./desk','./vtiger','./dynamics365','./freshsales','zendesk','salesforce','sugarcrm','freshdesk','zoho','desk','servicenow','exec','includes','data1','toLowerCase','data2','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','vtiger','freshsales'];(function(_0x3e5086,_0x48f4a2){var _0xfeb102=function(_0x5a945f){while(--_0x5a945f){_0x3e5086['push'](_0x3e5086['shift']());}};_0xfeb102(++_0x48f4a2);}(_0xf2a3,0xc7));var _0x3f2a=function(_0xe47217,_0x3a35db){_0xe47217=_0xe47217-0x0;var _0x3dc84c=_0xf2a3[_0xe47217];return _0x3dc84c;};'use strict';var _=require(_0x3f2a('0x0'));var util=require('util');var zendesk=require(_0x3f2a('0x1'));var salesforce=require(_0x3f2a('0x2'));var sugarcrm=require(_0x3f2a('0x3'));var freshdesk=require('./freshdesk');var zoho=require(_0x3f2a('0x4'));var desk=require(_0x3f2a('0x5'));var vtiger=require(_0x3f2a('0x6'));var servicenow=require('./servicenow');var dynamics365=require(_0x3f2a('0x7'));var freshsales=require(_0x3f2a('0x8'));var integrations=[_0x3f2a('0x9'),_0x3f2a('0xa'),_0x3f2a('0xb'),_0x3f2a('0xc'),_0x3f2a('0xd'),_0x3f2a('0xe'),'vtiger','dynamics365','freshsales',_0x3f2a('0xf')];exports[_0x3f2a('0x10')]=function(_0x319f10,_0x159860,_0x98a173,_0xcdb360,_0x24e761,_0x22a82d){if(_0x98a173){if(_[_0x3f2a('0x11')](integrations,_0x319f10['data1']['toLowerCase']())){try{var _0x460bd0=null;var _0x2fa32d='';var _0x17e63b=_0x98a173[_0x319f10[_0x3f2a('0x12')][_0x3f2a('0x13')]()];if(_0x17e63b){var _0x36096b=_0x17e63b[_0x319f10[_0x3f2a('0x14')]];if(_0x36096b){var _0x2a7fb7=_['find'](_0x36096b['Configurations'],{'id':parseInt(_0x319f10['data3'],0xa)});if(_0x2a7fb7){if(_0xcdb360){if(_0x24e761&&_0x159860[_0x3f2a('0x15')]){_0x2fa32d=_0x3f2a('0x15');}else if(_0x159860[_0x3f2a('0x16')]){_0x2fa32d=_0x3f2a('0x17');}else{console[_0x3f2a('0x18')](_0x3f2a('0x19'),_0x159860);}}else{_0x2fa32d=_0x3f2a('0x1a');}switch(_0x319f10['data1'][_0x3f2a('0x13')]()){case _0x3f2a('0x9'):zendesk[_0x2fa32d](_0x319f10,_0x159860,_0x2a7fb7,_0xcdb360,_0x24e761,_0x36096b,_0x22a82d);break;case _0x3f2a('0xa'):salesforce[_0x2fa32d](_0x319f10,_0x159860,_0x2a7fb7,_0xcdb360,_0x24e761,_0x36096b,_0x22a82d);break;case'sugarcrm':sugarcrm[_0x2fa32d](_0x319f10,_0x159860,_0x2a7fb7,_0xcdb360,_0x24e761,_0x36096b,_0x22a82d);break;case _0x3f2a('0xc'):freshdesk[_0x2fa32d](_0x319f10,_0x159860,_0x2a7fb7,_0xcdb360,_0x24e761,_0x36096b,_0x22a82d);break;case'zoho':zoho[_0x2fa32d](_0x319f10,_0x159860,_0x2a7fb7,_0xcdb360,_0x24e761,_0x36096b,_0x22a82d);break;case'desk':desk[_0x2fa32d](_0x319f10,_0x159860,_0x2a7fb7,_0xcdb360,_0x24e761,_0x36096b,_0x22a82d);break;case _0x3f2a('0x1b'):vtiger[_0x2fa32d](_0x319f10,_0x159860,_0x2a7fb7,_0xcdb360,_0x24e761,_0x36096b,_0x22a82d);break;case _0x3f2a('0x1c'):freshsales['cs'](_0x319f10,_0x159860,_0x2a7fb7,_0xcdb360,_0x24e761,_0x36096b,_0x22a82d,_0x2fa32d);break;case _0x3f2a('0xf'):servicenow['cs'](_0x319f10,_0x159860,_0x2a7fb7,_0xcdb360,_0x24e761,_0x36096b,_0x22a82d,_0x2fa32d);break;case _0x3f2a('0x1d'):dynamics365['cs'](_0x319f10,_0x159860,_0x2a7fb7,_0xcdb360,_0x24e761,_0x36096b,_0x22a82d,_0x2fa32d);break;default:console['log'](_0x3f2a('0x1e'));}}else{_0x460bd0=require('../../../../config/logger')(_0x319f10[_0x3f2a('0x12')][_0x3f2a('0x13')]());_0x460bd0[_0x3f2a('0x1f')](_0x3f2a('0x20'),util[_0x3f2a('0x21')](_0x3f2a('0x22'),_0x319f10['data1'][_0x3f2a('0x13')](),_0x319f10[_0x3f2a('0x23')]));}}else{_0x460bd0=require(_0x3f2a('0x24'))(_0x319f10['data1'][_0x3f2a('0x13')]());_0x460bd0[_0x3f2a('0x1f')](_0x3f2a('0x20'),util[_0x3f2a('0x21')](_0x3f2a('0x25'),_0x319f10['data1'][_0x3f2a('0x13')](),_0x319f10[_0x3f2a('0x14')]));}}else{}}catch(_0x425f2a){console['error'](_0x425f2a);}}}};
\ No newline at end of file
+var _0xd49c=['%s\x20account\x20#%s\x20not\x20found','lodash','util','./salesforce','./sugarcrm','./zoho','./vtiger','./servicenow','./dynamics365','./freshsales','zendesk','salesforce','sugarcrm','zoho','vtiger','includes','data1','toLowerCase','data2','find','queue','routeId','outbound','EVENT\x20UNKNOWN','unmanaged','freshdesk','desk','freshsales','servicenow','dynamics365','../../../../config/logger','error','[EXEC]','%s\x20configuration\x20#%s\x20not\x20found','data3','format'];(function(_0x30cae7,_0x1116cc){var _0x38b11b=function(_0x276c2f){while(--_0x276c2f){_0x30cae7['push'](_0x30cae7['shift']());}};_0x38b11b(++_0x1116cc);}(_0xd49c,0x145));var _0xcd49=function(_0x45cb48,_0x49df0c){_0x45cb48=_0x45cb48-0x0;var _0x560d84=_0xd49c[_0x45cb48];return _0x560d84;};'use strict';var _=require(_0xcd49('0x0'));var util=require(_0xcd49('0x1'));var zendesk=require('./zendesk');var salesforce=require(_0xcd49('0x2'));var sugarcrm=require(_0xcd49('0x3'));var freshdesk=require('./freshdesk');var zoho=require(_0xcd49('0x4'));var desk=require('./desk');var vtiger=require(_0xcd49('0x5'));var servicenow=require(_0xcd49('0x6'));var dynamics365=require(_0xcd49('0x7'));var freshsales=require(_0xcd49('0x8'));var integrations=[_0xcd49('0x9'),_0xcd49('0xa'),_0xcd49('0xb'),'freshdesk',_0xcd49('0xc'),'desk',_0xcd49('0xd'),'dynamics365','freshsales','servicenow'];exports['exec']=function(_0x4f779d,_0x36b5de,_0x406ee3,_0x5425f2,_0x5cb64c,_0x1cb951){if(_0x406ee3){if(_[_0xcd49('0xe')](integrations,_0x4f779d['data1']['toLowerCase']())){try{var _0x4db19b=null;var _0x5550b3='';var _0x269eb0=_0x406ee3[_0x4f779d[_0xcd49('0xf')][_0xcd49('0x10')]()];if(_0x269eb0){var _0x2a1200=_0x269eb0[_0x4f779d[_0xcd49('0x11')]];if(_0x2a1200){var _0x52cba0=_[_0xcd49('0x12')](_0x2a1200['Configurations'],{'id':parseInt(_0x4f779d['data3'],0xa)});if(_0x52cba0){if(_0x5425f2){if(_0x5cb64c&&_0x36b5de[_0xcd49('0x13')]){_0x5550b3=_0xcd49('0x13');}else if(_0x36b5de[_0xcd49('0x14')]){_0x5550b3=_0xcd49('0x15');}else{console['log'](_0xcd49('0x16'),_0x36b5de);}}else{_0x5550b3=_0xcd49('0x17');}switch(_0x4f779d[_0xcd49('0xf')][_0xcd49('0x10')]()){case _0xcd49('0x9'):zendesk[_0x5550b3](_0x4f779d,_0x36b5de,_0x52cba0,_0x5425f2,_0x5cb64c,_0x2a1200,_0x1cb951);break;case _0xcd49('0xa'):salesforce[_0x5550b3](_0x4f779d,_0x36b5de,_0x52cba0,_0x5425f2,_0x5cb64c,_0x2a1200,_0x1cb951);break;case _0xcd49('0xb'):sugarcrm[_0x5550b3](_0x4f779d,_0x36b5de,_0x52cba0,_0x5425f2,_0x5cb64c,_0x2a1200,_0x1cb951);break;case _0xcd49('0x18'):freshdesk[_0x5550b3](_0x4f779d,_0x36b5de,_0x52cba0,_0x5425f2,_0x5cb64c,_0x2a1200,_0x1cb951);break;case _0xcd49('0xc'):zoho[_0x5550b3](_0x4f779d,_0x36b5de,_0x52cba0,_0x5425f2,_0x5cb64c,_0x2a1200,_0x1cb951);break;case _0xcd49('0x19'):desk[_0x5550b3](_0x4f779d,_0x36b5de,_0x52cba0,_0x5425f2,_0x5cb64c,_0x2a1200,_0x1cb951);break;case'vtiger':vtiger[_0x5550b3](_0x4f779d,_0x36b5de,_0x52cba0,_0x5425f2,_0x5cb64c,_0x2a1200,_0x1cb951);break;case _0xcd49('0x1a'):freshsales['cs'](_0x4f779d,_0x36b5de,_0x52cba0,_0x5425f2,_0x5cb64c,_0x2a1200,_0x1cb951,_0x5550b3);break;case _0xcd49('0x1b'):servicenow['cs'](_0x4f779d,_0x36b5de,_0x52cba0,_0x5425f2,_0x5cb64c,_0x2a1200,_0x1cb951,_0x5550b3);break;case _0xcd49('0x1c'):dynamics365['cs'](_0x4f779d,_0x36b5de,_0x52cba0,_0x5425f2,_0x5cb64c,_0x2a1200,_0x1cb951,_0x5550b3);break;default:console['log']('unknown\x20integration');}}else{_0x4db19b=require(_0xcd49('0x1d'))(_0x4f779d[_0xcd49('0xf')][_0xcd49('0x10')]());_0x4db19b[_0xcd49('0x1e')](_0xcd49('0x1f'),util['format'](_0xcd49('0x20'),_0x4f779d[_0xcd49('0xf')][_0xcd49('0x10')](),_0x4f779d[_0xcd49('0x21')]));}}else{_0x4db19b=require('../../../../config/logger')(_0x4f779d[_0xcd49('0xf')]['toLowerCase']());_0x4db19b[_0xcd49('0x1e')](_0xcd49('0x1f'),util[_0xcd49('0x22')](_0xcd49('0x23'),_0x4f779d[_0xcd49('0xf')][_0xcd49('0x10')](),_0x4f779d[_0xcd49('0x11')]));}}else{}}catch(_0x4e6f7d){console[_0xcd49('0x1e')](_0x4e6f7d);}}}};
\ No newline at end of file
index 842b130..83f36bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae57=['none','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','newTab','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','lastevent','toUpperCase','isNil','Fields',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','catch','lodash','request-promise','moment','bluebird','md5','jsforce','util','ioredis','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','emit','getString','Subjects','Descriptions','ticketType','Task','utc','IsReminderSet','IsRecurrence','endUserType','contact','lead','account','WhatId','Case','ContactId','AccountId','leadId','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','validateEmail','User','find','execute','then','length','Email','info','Agent\x20%s\x20found.','resolve','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','display_name','user_id','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','$or','Contact','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','Account','first','Name','Phone','type','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','moduleCreate','<unknown>','format','Caller\x20-\x20%s','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','forEach','includes','string','picklist','idField','content','variableName','customVariable','Variable','name','toLowerCase','toString','password','concat','securityToken','Connection','remoteUri','clientSecret','login','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','calleridnum','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','user:%s','trigger:salesforce:display','trigger:browser:url','%s/%s/e','error','outbound','recordingFormat'];(function(_0x5c5358,_0x5338a0){var _0x1996be=function(_0x29c89c){while(--_0x29c89c){_0x5c5358['push'](_0x5c5358['shift']());}};_0x1996be(++_0x5338a0);}(_0xae57,0x91));var _0x7ae5=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xae57[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x7ae5('0x0'));var rp=require(_0x7ae5('0x1'));var moment=require(_0x7ae5('0x2'));var BPromise=require(_0x7ae5('0x3'));var md5=require(_0x7ae5('0x4'));var jsforce=require(_0x7ae5('0x5'));var util=require(_0x7ae5('0x6'));var Redis=require(_0x7ae5('0x7'));var intUtil=require('./util');var config=require(_0x7ae5('0x8'));var logger=require(_0x7ae5('0x9'))(_0x7ae5('0xa'));config[_0x7ae5('0xb')]=_[_0x7ae5('0xc')](config['redis'],{'host':_0x7ae5('0xd'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x7ae5('0xb')]));function emit(_0x205555,_0x343744,_0x4d8cdf){io['to'](_0x205555)[_0x7ae5('0xe')](_0x343744,_0x4d8cdf);}function getTicket(_0x4d82da,_0x590513,_0x5d35e7,_0x54ac99,_0x408ca9,_0x23944f,_0xb444fc,_0x2d2d7b){var _0x71d7ea=Object['assign']({},{'OwnerId':_0x590513['id'],'Subject':intUtil[_0x7ae5('0xf')](_0x54ac99[_0x7ae5('0x10')],_0x408ca9,'\x20'),'Description':intUtil[_0x7ae5('0xf')](_0x54ac99[_0x7ae5('0x11')],_0x408ca9,'\x0a')},getCustomFields(_0x23944f,_0x408ca9));if(_0x5d35e7){if(_0x54ac99[_0x7ae5('0x12')]===_0x7ae5('0x13')){_0x71d7ea['ActivityDate']=moment[_0x7ae5('0x14')]();_0x71d7ea[_0x7ae5('0x15')]=![];_0x71d7ea[_0x7ae5('0x16')]=![];if(_0x5d35e7[_0x7ae5('0x17')]===_0x7ae5('0x18')||_0x5d35e7[_0x7ae5('0x17')]===_0x7ae5('0x19')){_0x71d7ea['WhoId']=_0x5d35e7['id'];}else if(_0x5d35e7[_0x7ae5('0x17')]===_0x7ae5('0x1a')){_0x71d7ea[_0x7ae5('0x1b')]=_0x5d35e7['id'];}}else if(_0x54ac99['ticketType']===_0x7ae5('0x1c')){if(_0x5d35e7[_0x7ae5('0x17')]===_0x7ae5('0x18')){_0x71d7ea[_0x7ae5('0x1d')]=_0x5d35e7['id'];}else if(_0x5d35e7[_0x7ae5('0x17')]===_0x7ae5('0x1a')){_0x71d7ea[_0x7ae5('0x1e')]=_0x5d35e7['id'];}else if(_0x5d35e7['endUserType']==='lead'&&_0x54ac99[_0x7ae5('0x1f')]){_0x71d7ea[_0x54ac99['leadId']]=_0x5d35e7['id'];}else{logger['info'](_0x7ae5('0x20'));}}}return _0xb444fc[_0x7ae5('0x21')](_0x54ac99[_0x7ae5('0x12')])[_0x7ae5('0x22')](_0x71d7ea);}function getUser(_0x158cd0,_0x3e4143,_0x4c050c){if(!_['isNil'](_0x3e4143)&&intUtil[_0x7ae5('0x23')](_0x3e4143)){var _0x55955a={'Email':_0x3e4143};var _0xbcee14={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x4c050c[_0x7ae5('0x21')](_0x7ae5('0x24'))[_0x7ae5('0x25')](_0x55955a,_0xbcee14)[_0x7ae5('0x26')]()[_0x7ae5('0x27')](function(_0x568c7c){if(_0x568c7c[_0x7ae5('0x28')]){var _0x1e0645=_[_0x7ae5('0x25')](_0x568c7c,function(_0x4ce00d){return _0x4ce00d[_0x7ae5('0x29')]===_0x3e4143;});if(_0x1e0645){logger[_0x7ae5('0x2a')](_0x7ae5('0x2b'),_0x3e4143);return BPromise[_0x7ae5('0x2c')]({'id':_0x1e0645['Id'],'name':_0x1e0645['Name']});}}else{logger[_0x7ae5('0x2a')](_0x7ae5('0x2d'),_0x3e4143);return _0x4c050c[_0x7ae5('0x2e')]()[_0x7ae5('0x27')](function(_0x1b29a8){return BPromise[_0x7ae5('0x2c')]({'id':_0x1b29a8['user_id'],'name':_0x1b29a8[_0x7ae5('0x2f')]});});}});}else{logger[_0x7ae5('0x2a')](_0x7ae5('0x2d'),_0x3e4143);return _0x4c050c[_0x7ae5('0x2e')]()[_0x7ae5('0x27')](function(_0x537b36){return BPromise[_0x7ae5('0x2c')]({'id':_0x537b36[_0x7ae5('0x30')],'name':_0x537b36[_0x7ae5('0x2f')]});});}}function getEndUser(_0x2ea633,_0xd82ba3,_0x89ec03,_0x57c2ae,_0x288c56){var _0x2664e6={'$or':{'Phone':_0x57c2ae}};var _0x4d68d7={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x7ae5('0x2c')]()[_0x7ae5('0x27')](function(){logger[_0x7ae5('0x2a')](_0x7ae5('0x31'),_0x57c2ae,_0xd82ba3['moduleSearch']);switch(_0xd82ba3[_0x7ae5('0x32')]){case _0x7ae5('0x33'):var _0x14a941=_[_0x7ae5('0x34')](_0x2664e6);if(_0xd82ba3[_0x7ae5('0x35')]){var _0x85e566={};_0x85e566[_0xd82ba3[_0x7ae5('0x35')]]=_0x57c2ae;_[_0x7ae5('0x36')](_0x14a941[_0x7ae5('0x37')],_0x85e566);}return _0x288c56['sobject'](_0x7ae5('0x38'))[_0x7ae5('0x25')](_0x14a941,_0x4d68d7)['execute']()[_0x7ae5('0x27')](function(_0x3fac3d){if(_0x3fac3d&&_0x3fac3d['length']){return _0x3fac3d;}else{var _0x391474=_[_0x7ae5('0x34')](_0x2664e6);if(_0xd82ba3[_0x7ae5('0x39')]){var _0x125914={};_0x125914[_0xd82ba3[_0x7ae5('0x39')]]=_0x57c2ae;_[_0x7ae5('0x36')](_0x391474[_0x7ae5('0x37')],_0x125914);}return _0x288c56[_0x7ae5('0x21')](_0x7ae5('0x3a'))[_0x7ae5('0x25')](_0x391474,_0x4d68d7);}});case _0x7ae5('0x3b'):var _0x19ea98=_[_0x7ae5('0x34')](_0x2664e6);if(_0xd82ba3[_0x7ae5('0x3c')]){var _0x85e566={};_0x85e566[_0xd82ba3[_0x7ae5('0x3c')]]=_0x57c2ae;_['merge'](_0x19ea98[_0x7ae5('0x37')],_0x85e566);}return _0x288c56[_0x7ae5('0x21')](_0x7ae5('0x3d'))[_0x7ae5('0x25')](_0x19ea98,_0x4d68d7)['execute']()[_0x7ae5('0x27')](function(_0x582546){if(_0x582546&&_0x582546[_0x7ae5('0x28')]){return _0x582546;}else{var _0x122d1b=_['cloneDeep'](_0x2664e6);if(_0xd82ba3['additionalSearchContact']){var _0x3bfdb0={};_0x3bfdb0[_0xd82ba3['additionalSearchContact']]=_0x57c2ae;_[_0x7ae5('0x36')](_0x122d1b[_0x7ae5('0x37')],_0x3bfdb0);}return _0x288c56[_0x7ae5('0x21')]('Contact')[_0x7ae5('0x25')](_0x122d1b,_0x4d68d7)[_0x7ae5('0x27')](function(_0x407ae1){if(_0x407ae1&&_0x407ae1[_0x7ae5('0x28')]){return _0x407ae1;}else{var _0x3f6fb0=_[_0x7ae5('0x34')](_0x2664e6);if(_0xd82ba3['additionalSearchLead']){var _0x31bade={};_0x31bade[_0xd82ba3[_0x7ae5('0x39')]]=_0x57c2ae;_[_0x7ae5('0x36')](_0x3f6fb0['$or'],_0x31bade);}return _0x288c56[_0x7ae5('0x21')](_0x7ae5('0x3a'))['find'](_0x3f6fb0,_0x4d68d7);}});}});case'contact':var _0x14a941=_[_0x7ae5('0x34')](_0x2664e6);if(_0xd82ba3['additionalSearchContact']){var _0x85e566={};_0x85e566[_0xd82ba3[_0x7ae5('0x35')]]=_0x57c2ae;_[_0x7ae5('0x36')](_0x14a941['$or'],_0x85e566);}return _0x288c56['sobject'](_0x7ae5('0x38'))[_0x7ae5('0x25')](_0x14a941,_0x4d68d7)['execute']();case _0x7ae5('0x19'):var _0x1cf531=_[_0x7ae5('0x34')](_0x2664e6);if(_0xd82ba3[_0x7ae5('0x39')]){var _0x85e566={};_0x85e566[_0xd82ba3[_0x7ae5('0x39')]]=_0x57c2ae;_[_0x7ae5('0x36')](_0x1cf531[_0x7ae5('0x37')],_0x85e566);}return _0x288c56[_0x7ae5('0x21')](_0x7ae5('0x3a'))[_0x7ae5('0x25')](_0x1cf531,_0x4d68d7);case _0x7ae5('0x1a'):var _0x19ea98=_[_0x7ae5('0x34')](_0x2664e6);if(_0xd82ba3['additionalSearchAccount']){var _0x85e566={};_0x85e566[_0xd82ba3[_0x7ae5('0x3c')]]=_0x57c2ae;_['merge'](_0x19ea98[_0x7ae5('0x37')],_0x85e566);}return _0x288c56[_0x7ae5('0x21')](_0x7ae5('0x3d'))[_0x7ae5('0x25')](_0x19ea98,_0x4d68d7);default:return null;}})[_0x7ae5('0x27')](function(_0x201905){if(_0x201905&&_0x201905[_0x7ae5('0x28')]){var _0x177360=_[_0x7ae5('0x3e')](_0x201905);if(_0x177360){return BPromise[_0x7ae5('0x2c')]({'id':_0x177360['Id'],'name':_0x177360[_0x7ae5('0x3f')],'phone':_0x177360[_0x7ae5('0x40')],'endUserType':_0x177360['attributes'][_0x7ae5('0x41')]['toLowerCase']()});}}})[_0x7ae5('0x27')](function(_0x499817){if(_0x499817){logger['info'](_0x7ae5('0x42'),_0x499817[_0x7ae5('0x17')],_0x57c2ae);return BPromise[_0x7ae5('0x2c')](_0x499817);}else{logger[_0x7ae5('0x2a')]('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0x57c2ae);var _0x2f128e={'Phone':_0x57c2ae};if(_0xd82ba3[_0x7ae5('0x43')]){if(_0xd82ba3['moduleCreate']==='contact'){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x57c2ae,_0xd82ba3[_0x7ae5('0x43')]);_0x2f128e['LastName']=_0x89ec03!==_0x7ae5('0x44')?_0x89ec03:util[_0x7ae5('0x45')](_0x7ae5('0x46'),_0x57c2ae);}else if(_0xd82ba3[_0x7ae5('0x43')]===_0x7ae5('0x19')){logger[_0x7ae5('0x2a')](_0x7ae5('0x47'),_0x57c2ae,_0xd82ba3[_0x7ae5('0x43')]);_0x2f128e[_0x7ae5('0x48')]=_0x89ec03!==_0x7ae5('0x44')?_0x89ec03:util['format'](_0x7ae5('0x46'),_0x57c2ae);_0x2f128e['Company']='No\x20Company';}else if(_0xd82ba3['moduleCreate']===_0x7ae5('0x1a')){logger[_0x7ae5('0x2a')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x57c2ae,_0xd82ba3['moduleCreate']);_0x2f128e[_0x7ae5('0x3f')]=_0x89ec03!=='<unknown>'?_0x89ec03:util[_0x7ae5('0x45')]('Caller\x20-\x20%s',_0x57c2ae);}else{return null;}}return _0x288c56[_0x7ae5('0x21')](_['upperFirst'](_0xd82ba3[_0x7ae5('0x43')]))[_0x7ae5('0x22')](_0x2f128e)[_0x7ae5('0x27')](function(_0x5c9605){return BPromise[_0x7ae5('0x2c')]({'id':_0x5c9605['id'],'endUserType':_0xd82ba3[_0x7ae5('0x43')]});});}});}function getCustomFields(_0x33d87d,_0x5409f1){var _0x289313={};if(_0x33d87d['length']>0x0){_[_0x7ae5('0x49')](_0x33d87d,function(_0x454dcf){if(_[_0x7ae5('0x4a')]([_0x7ae5('0x4b'),_0x7ae5('0x4c')],_0x454dcf[_0x7ae5('0x41')])&&_0x454dcf[_0x7ae5('0x4d')]){_0x289313[_0x454dcf['idField']]=_0x454dcf[_0x7ae5('0x4e')]['toString']();}else if(_0x454dcf[_0x7ae5('0x41')]==='variable'&&_0x454dcf[_0x7ae5('0x4f')]&&_0x454dcf[_0x7ae5('0x4d')]){_0x5409f1[_0x454dcf[_0x7ae5('0x4f')]]&&(_0x289313[_0x454dcf[_0x7ae5('0x4d')]]=_0x5409f1[_0x454dcf[_0x7ae5('0x4f')]]['toString']());}else if(_0x454dcf['type']===_0x7ae5('0x50')&&_0x454dcf['Variable']&&_0x454dcf[_0x7ae5('0x51')][_0x7ae5('0x52')]&&_0x454dcf['idField']){_0x5409f1[_0x454dcf[_0x7ae5('0x51')][_0x7ae5('0x52')][_0x7ae5('0x53')]()]&&(_0x289313[_0x454dcf[_0x7ae5('0x4d')]]=_0x5409f1[_0x454dcf[_0x7ae5('0x51')][_0x7ae5('0x52')]['toLowerCase']()][_0x7ae5('0x54')]());}});}return _0x289313;}function getConnection(_0x170ab5){var _0x5e1201=_0x170ab5[_0x7ae5('0x55')][_0x7ae5('0x56')](_0x170ab5[_0x7ae5('0x57')]);var _0x3b76d2=new jsforce[(_0x7ae5('0x58'))]({'oauth2':{'loginUrl':_0x170ab5[_0x7ae5('0x59')]||'https://login.salesforce.com','clientId':_0x170ab5['clientId'],'clientSecret':_0x170ab5[_0x7ae5('0x5a')]}});return _0x3b76d2[_0x7ae5('0x5b')](_0x170ab5['username'],_0x5e1201)[_0x7ae5('0x27')](function(){logger['info'](_0x7ae5('0x5c'));return _0x3b76d2;});}exports[_0x7ae5('0x5d')]=function(_0x3b4c32,_0x3bbd9b,_0x535fcf,_0x54bc67,_0x149210,_0x2b4e38){var _0x331ea3,_0x12980d,_0x59a3dc,_0x2fcaf2;_0x2b4e38[_0x7ae5('0x5e')]=intUtil[_0x7ae5('0x5f')](_0x2b4e38[_0x7ae5('0x5e')]);_0x2b4e38[_0x7ae5('0x59')]=intUtil[_0x7ae5('0x5f')](_0x2b4e38['remoteUri']);if(_0x149210&&_0x149210[_0x7ae5('0x60')]){logger[_0x7ae5('0x2a')](_0x7ae5('0x61'),_0x7ae5('0x62'));_0x3bbd9b[_0x7ae5('0x63')]=util['format'](_0x7ae5('0x64'),_0x2b4e38['serverUrl'],_0x3bbd9b[_0x7ae5('0x65')],md5(_0x3bbd9b[_0x7ae5('0x65')]));}else{_0x3bbd9b[_0x7ae5('0x63')]='';}return getConnection(_0x2b4e38)[_0x7ae5('0x27')](function(_0x1f66a7){_0x2fcaf2=_0x1f66a7;return getUser(_0x2b4e38,_0x54bc67[_0x7ae5('0x66')],_0x2fcaf2);})[_0x7ae5('0x27')](function(_0x4664fe){_0x331ea3=_0x4664fe;return getEndUser(_0x2b4e38,_0x535fcf,_0x3bbd9b[_0x7ae5('0x67')],_0x3bbd9b[_0x7ae5('0x68')],_0x2fcaf2);})[_0x7ae5('0x27')](function(_0x1c88cf){_0x12980d=_0x1c88cf;return getTicket(_0x2b4e38,_0x331ea3,_0x12980d,_0x535fcf,_0x3bbd9b,_0x535fcf['Fields'],_0x2fcaf2,'queue');})['then'](function(_0x1919cc){_0x59a3dc=_0x1919cc;logger[_0x7ae5('0x2a')](_0x7ae5('0x69'),_0x59a3dc['id']);logger[_0x7ae5('0x2a')](_0x7ae5('0x6a'),_0x59a3dc['id'],_0x54bc67[_0x7ae5('0x52')],_0x2b4e38[_0x7ae5('0x41')]);switch(_0x2b4e38[_0x7ae5('0x41')]){case _0x7ae5('0x6b'):emit(util[_0x7ae5('0x45')](_0x7ae5('0x6c'),_0x54bc67[_0x7ae5('0x52')]),_0x7ae5('0x6d'),{'recordId':_0x59a3dc['id']});break;case'newTab':emit(util[_0x7ae5('0x45')](_0x7ae5('0x6c'),_0x54bc67[_0x7ae5('0x52')]),_0x7ae5('0x6e'),{'uri':util[_0x7ae5('0x45')](_0x7ae5('0x6f'),_0x2fcaf2['instanceUrl'],_0x59a3dc['id'])});break;default:logger[_0x7ae5('0x70')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})['catch'](function(_0x554491){logger[_0x7ae5('0x70')](_0x7ae5('0x61'),_0x554491);});};exports[_0x7ae5('0x71')]=function(_0x5a4b7,_0x2f431f,_0x2d9c2d,_0x48d95f,_0x2eb238,_0x377743,_0x149133){var _0x35f4e5,_0x361246,_0x305ef1,_0x2578ea;_0x377743[_0x7ae5('0x5e')]=intUtil[_0x7ae5('0x5f')](_0x377743[_0x7ae5('0x5e')]);_0x377743[_0x7ae5('0x59')]=intUtil['stripTrailingSlash'](_0x377743[_0x7ae5('0x59')]);if(_0x149133&&_0x149133[_0x7ae5('0x72')]&&_0x149133[_0x7ae5('0x72')]!==_0x7ae5('0x73')){logger[_0x7ae5('0x2a')]('[OUTBOUND]',_0x7ae5('0x62'));_0x2f431f[_0x7ae5('0x63')]=util[_0x7ae5('0x45')](_0x7ae5('0x64'),_0x377743[_0x7ae5('0x5e')],_0x2f431f[_0x7ae5('0x65')],md5(_0x2f431f[_0x7ae5('0x65')]));}return getConnection(_0x377743)[_0x7ae5('0x27')](function(_0xd9582){_0x2578ea=_0xd9582;return getUser(_0x377743,_0x48d95f[_0x7ae5('0x66')],_0x2578ea);})[_0x7ae5('0x27')](function(_0x5308a7){_0x35f4e5=_0x5308a7;return getEndUser(_0x377743,_0x2d9c2d,_0x2f431f[_0x7ae5('0x74')],_0x2f431f[_0x7ae5('0x75')],_0x2578ea);})[_0x7ae5('0x27')](function(_0x5db228){_0x361246=_0x5db228;return getTicket(_0x377743,_0x35f4e5,_0x361246,_0x2d9c2d,_0x2f431f,_0x2d9c2d['Fields'],_0x2578ea,_0x7ae5('0x71'));})[_0x7ae5('0x27')](function(_0x178c94){_0x305ef1=_0x178c94;logger[_0x7ae5('0x2a')](_0x7ae5('0x76'),_0x305ef1['id']);logger['info'](_0x7ae5('0x77'),_0x305ef1['id'],_0x48d95f[_0x7ae5('0x52')],_0x377743[_0x7ae5('0x41')]);switch(_0x377743[_0x7ae5('0x41')]){case _0x7ae5('0x6b'):emit(util[_0x7ae5('0x45')]('user:%s',_0x48d95f[_0x7ae5('0x52')]),_0x7ae5('0x6d'),{'recordId':_0x305ef1['id']});break;case _0x7ae5('0x78'):emit(util[_0x7ae5('0x45')](_0x7ae5('0x6c'),_0x48d95f[_0x7ae5('0x52')]),_0x7ae5('0x6e'),{'uri':util[_0x7ae5('0x45')](_0x7ae5('0x6f'),_0x2578ea['instanceUrl'],_0x305ef1['id'])});break;default:logger[_0x7ae5('0x70')]('[OUTBOUND]',_0x7ae5('0x79'));}})['catch'](function(_0x3e6299){logger[_0x7ae5('0x70')]('[OUTBOUND]',_0x3e6299);});};exports[_0x7ae5('0x7a')]=function(_0xc4f803,_0xb3c563,_0x44e9c0,_0x313817,_0x2956fa,_0x3de7d4){var _0x528f1d,_0x171e67,_0x3ef3f4,_0x24d2d8;_0x3de7d4['serverUrl']=intUtil[_0x7ae5('0x5f')](_0x3de7d4[_0x7ae5('0x5e')]);_0x3de7d4['remoteUri']=intUtil['stripTrailingSlash'](_0x3de7d4[_0x7ae5('0x59')]);if(_0x2956fa&&_0x2956fa['monitor_format']){logger['info']('['+_0xb3c563[_0x7ae5('0x7b')][_0x7ae5('0x7c')]()+']',_0x7ae5('0x62'));_0xb3c563[_0x7ae5('0x63')]=util[_0x7ae5('0x45')](_0x7ae5('0x64'),_0x3de7d4[_0x7ae5('0x5e')],_0xb3c563[_0x7ae5('0x65')],md5(_0xb3c563[_0x7ae5('0x65')]));}else{_0xb3c563['recordingURL']='';}return getConnection(_0x3de7d4)[_0x7ae5('0x27')](function(_0x18add2){_0x24d2d8=_0x18add2;if(!_[_0x7ae5('0x7d')](_0x313817)){return getUser(_0x3de7d4,_0x313817[_0x7ae5('0x52')],_0x24d2d8);}else{return getUser(_0x3de7d4,null,_0x24d2d8);}})[_0x7ae5('0x27')](function(_0x563623){_0x528f1d=_0x563623;return getEndUser(_0x3de7d4,_0x44e9c0,_0xb3c563[_0x7ae5('0x67')],_0xb3c563[_0x7ae5('0x68')],_0x24d2d8);})['then'](function(_0x2378dd){_0x171e67=_0x2378dd;return getTicket(_0x3de7d4,_0x528f1d,_0x171e67,_0x44e9c0,_0xb3c563,_0x44e9c0[_0x7ae5('0x7e')],_0x24d2d8);})[_0x7ae5('0x27')](function(_0x1b15a8){_0x3ef3f4=_0x1b15a8;logger[_0x7ae5('0x2a')]('['+_0xb3c563[_0x7ae5('0x7b')]['toUpperCase']()+_0x7ae5('0x7f'),_0x3ef3f4['id']);logger[_0x7ae5('0x2a')]('['+_0xb3c563[_0x7ae5('0x7b')][_0x7ae5('0x7c')]()+_0x7ae5('0x80'),_0x3de7d4[_0x7ae5('0x41')]);})[_0x7ae5('0x81')](function(_0x19bd68){logger[_0x7ae5('0x70')]('['+_0xb3c563[_0x7ae5('0x7b')][_0x7ae5('0x7c')]()+']',_0x19bd68);});};
\ No newline at end of file
+var _0xd07e=['[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','user:%s','trigger:salesforce:display','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','lastevent','toUpperCase','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',']\x20Ticket\x20%s\x20created.','lodash','request-promise','md5','jsforce','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','socket.io-emitter','emit','assign','getString','Descriptions','ticketType','Task','ActivityDate','utc','IsReminderSet','IsRecurrence','contact','endUserType','lead','WhoId','account','WhatId','Case','ContactId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','User','find','execute','then','length','Email','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','moduleSearch','additionalSearchContact','merge','Contact','additionalSearchLead','$or','Lead','account_contact_lead','cloneDeep','additionalSearchAccount','Account','first','Phone','attributes','type','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','Company','No\x20Company','includes','string','picklist','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','password','concat','securityToken','Connection','remoteUri','clientId','login','username','Connection\x20established.','queue','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','uniqueid','recordingURL','email','calleridname','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created'];(function(_0x1b5aea,_0x3f04b7){var _0x15cfc6=function(_0x204e92){while(--_0x204e92){_0x1b5aea['push'](_0x1b5aea['shift']());}};_0x15cfc6(++_0x3f04b7);}(_0xd07e,0x1a9));var _0xed07=function(_0x2bb197,_0x5bda99){_0x2bb197=_0x2bb197-0x0;var _0x152608=_0xd07e[_0x2bb197];return _0x152608;};'use strict';var _=require(_0xed07('0x0'));var rp=require(_0xed07('0x1'));var moment=require('moment');var BPromise=require('bluebird');var md5=require(_0xed07('0x2'));var jsforce=require(_0xed07('0x3'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xed07('0x4'));var config=require(_0xed07('0x5'));var logger=require(_0xed07('0x6'))(_0xed07('0x7'));config[_0xed07('0x8')]=_[_0xed07('0x9')](config['redis'],{'host':_0xed07('0xa'),'port':0x18eb});var io=require(_0xed07('0xb'))(new Redis(config[_0xed07('0x8')]));function emit(_0x5ed45c,_0x1fa663,_0x238c39){io['to'](_0x5ed45c)[_0xed07('0xc')](_0x1fa663,_0x238c39);}function getTicket(_0x54ab90,_0x3a4ff3,_0x557286,_0xc0cdf1,_0x2e23b2,_0x4ce9e6,_0x14aceb,_0x408ff7){var _0x13899c=Object[_0xed07('0xd')]({},{'OwnerId':_0x3a4ff3['id'],'Subject':intUtil[_0xed07('0xe')](_0xc0cdf1['Subjects'],_0x2e23b2,'\x20'),'Description':intUtil[_0xed07('0xe')](_0xc0cdf1[_0xed07('0xf')],_0x2e23b2,'\x0a')},getCustomFields(_0x4ce9e6,_0x2e23b2));if(_0x557286){if(_0xc0cdf1[_0xed07('0x10')]===_0xed07('0x11')){_0x13899c[_0xed07('0x12')]=moment[_0xed07('0x13')]();_0x13899c[_0xed07('0x14')]=![];_0x13899c[_0xed07('0x15')]=![];if(_0x557286['endUserType']===_0xed07('0x16')||_0x557286[_0xed07('0x17')]===_0xed07('0x18')){_0x13899c[_0xed07('0x19')]=_0x557286['id'];}else if(_0x557286[_0xed07('0x17')]===_0xed07('0x1a')){_0x13899c[_0xed07('0x1b')]=_0x557286['id'];}}else if(_0xc0cdf1[_0xed07('0x10')]===_0xed07('0x1c')){if(_0x557286[_0xed07('0x17')]===_0xed07('0x16')){_0x13899c[_0xed07('0x1d')]=_0x557286['id'];}else if(_0x557286[_0xed07('0x17')]==='account'){_0x13899c[_0xed07('0x1e')]=_0x557286['id'];}else if(_0x557286[_0xed07('0x17')]===_0xed07('0x18')&&_0xc0cdf1[_0xed07('0x1f')]){_0x13899c[_0xc0cdf1[_0xed07('0x1f')]]=_0x557286['id'];}else{logger[_0xed07('0x20')](_0xed07('0x21'));}}}return _0x14aceb[_0xed07('0x22')](_0xc0cdf1[_0xed07('0x10')])[_0xed07('0x23')](_0x13899c);}function getUser(_0x2104ce,_0x3d7dd3,_0x45fe5a){if(!_[_0xed07('0x24')](_0x3d7dd3)&&intUtil['validateEmail'](_0x3d7dd3)){var _0x11c630={'Email':_0x3d7dd3};var _0x1ebd77={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x45fe5a[_0xed07('0x22')](_0xed07('0x25'))[_0xed07('0x26')](_0x11c630,_0x1ebd77)[_0xed07('0x27')]()[_0xed07('0x28')](function(_0x426aa0){if(_0x426aa0[_0xed07('0x29')]){var _0x4a67d2=_['find'](_0x426aa0,function(_0x2d4c34){return _0x2d4c34[_0xed07('0x2a')]===_0x3d7dd3;});if(_0x4a67d2){logger[_0xed07('0x20')]('Agent\x20%s\x20found.',_0x3d7dd3);return BPromise[_0xed07('0x2b')]({'id':_0x4a67d2['Id'],'name':_0x4a67d2[_0xed07('0x2c')]});}}else{logger[_0xed07('0x20')](_0xed07('0x2d'),_0x3d7dd3);return _0x45fe5a[_0xed07('0x2e')]()['then'](function(_0x589524){return BPromise[_0xed07('0x2b')]({'id':_0x589524[_0xed07('0x2f')],'name':_0x589524[_0xed07('0x30')]});});}});}else{logger[_0xed07('0x20')](_0xed07('0x2d'),_0x3d7dd3);return _0x45fe5a[_0xed07('0x2e')]()[_0xed07('0x28')](function(_0x3b5883){return BPromise[_0xed07('0x2b')]({'id':_0x3b5883[_0xed07('0x2f')],'name':_0x3b5883[_0xed07('0x30')]});});}}function getEndUser(_0x26d50f,_0x930131,_0x230d59,_0x513bfc,_0x5af548){var _0x3f0a46={'$or':{'Phone':_0x513bfc}};var _0x24a8f9={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0xed07('0x2b')]()[_0xed07('0x28')](function(){logger['info']('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x513bfc,_0x930131[_0xed07('0x31')]);switch(_0x930131[_0xed07('0x31')]){case'contact_lead':var _0x5e715e=_['cloneDeep'](_0x3f0a46);if(_0x930131[_0xed07('0x32')]){var _0x457312={};_0x457312[_0x930131['additionalSearchContact']]=_0x513bfc;_[_0xed07('0x33')](_0x5e715e['$or'],_0x457312);}return _0x5af548[_0xed07('0x22')](_0xed07('0x34'))[_0xed07('0x26')](_0x5e715e,_0x24a8f9)[_0xed07('0x27')]()[_0xed07('0x28')](function(_0x1501d4){if(_0x1501d4&&_0x1501d4[_0xed07('0x29')]){return _0x1501d4;}else{var _0x25b17a=_['cloneDeep'](_0x3f0a46);if(_0x930131[_0xed07('0x35')]){var _0xc9e92a={};_0xc9e92a[_0x930131[_0xed07('0x35')]]=_0x513bfc;_[_0xed07('0x33')](_0x25b17a[_0xed07('0x36')],_0xc9e92a);}return _0x5af548[_0xed07('0x22')](_0xed07('0x37'))[_0xed07('0x26')](_0x25b17a,_0x24a8f9);}});case _0xed07('0x38'):var _0xe58302=_[_0xed07('0x39')](_0x3f0a46);if(_0x930131['additionalSearchAccount']){var _0x457312={};_0x457312[_0x930131[_0xed07('0x3a')]]=_0x513bfc;_['merge'](_0xe58302['$or'],_0x457312);}return _0x5af548[_0xed07('0x22')](_0xed07('0x3b'))[_0xed07('0x26')](_0xe58302,_0x24a8f9)[_0xed07('0x27')]()['then'](function(_0x19939c){if(_0x19939c&&_0x19939c[_0xed07('0x29')]){return _0x19939c;}else{var _0x1c2707=_['cloneDeep'](_0x3f0a46);if(_0x930131[_0xed07('0x32')]){var _0xc5d80b={};_0xc5d80b[_0x930131['additionalSearchContact']]=_0x513bfc;_[_0xed07('0x33')](_0x1c2707[_0xed07('0x36')],_0xc5d80b);}return _0x5af548['sobject']('Contact')[_0xed07('0x26')](_0x1c2707,_0x24a8f9)[_0xed07('0x28')](function(_0x1f2324){if(_0x1f2324&&_0x1f2324[_0xed07('0x29')]){return _0x1f2324;}else{var _0x391ea9=_[_0xed07('0x39')](_0x3f0a46);if(_0x930131[_0xed07('0x35')]){var _0x153798={};_0x153798[_0x930131[_0xed07('0x35')]]=_0x513bfc;_[_0xed07('0x33')](_0x391ea9[_0xed07('0x36')],_0x153798);}return _0x5af548[_0xed07('0x22')](_0xed07('0x37'))['find'](_0x391ea9,_0x24a8f9);}});}});case _0xed07('0x16'):var _0x5e715e=_['cloneDeep'](_0x3f0a46);if(_0x930131[_0xed07('0x32')]){var _0x457312={};_0x457312[_0x930131['additionalSearchContact']]=_0x513bfc;_[_0xed07('0x33')](_0x5e715e[_0xed07('0x36')],_0x457312);}return _0x5af548['sobject']('Contact')[_0xed07('0x26')](_0x5e715e,_0x24a8f9)[_0xed07('0x27')]();case'lead':var _0x11b9b0=_['cloneDeep'](_0x3f0a46);if(_0x930131['additionalSearchLead']){var _0x457312={};_0x457312[_0x930131[_0xed07('0x35')]]=_0x513bfc;_[_0xed07('0x33')](_0x11b9b0['$or'],_0x457312);}return _0x5af548['sobject'](_0xed07('0x37'))[_0xed07('0x26')](_0x11b9b0,_0x24a8f9);case'account':var _0xe58302=_[_0xed07('0x39')](_0x3f0a46);if(_0x930131[_0xed07('0x3a')]){var _0x457312={};_0x457312[_0x930131[_0xed07('0x3a')]]=_0x513bfc;_['merge'](_0xe58302[_0xed07('0x36')],_0x457312);}return _0x5af548[_0xed07('0x22')]('Account')[_0xed07('0x26')](_0xe58302,_0x24a8f9);default:return null;}})[_0xed07('0x28')](function(_0x1b08b3){if(_0x1b08b3&&_0x1b08b3['length']){var _0x504633=_[_0xed07('0x3c')](_0x1b08b3);if(_0x504633){return BPromise[_0xed07('0x2b')]({'id':_0x504633['Id'],'name':_0x504633['Name'],'phone':_0x504633[_0xed07('0x3d')],'endUserType':_0x504633[_0xed07('0x3e')][_0xed07('0x3f')]['toLowerCase']()});}}})[_0xed07('0x28')](function(_0x2ec059){if(_0x2ec059){logger[_0xed07('0x20')](_0xed07('0x40'),_0x2ec059[_0xed07('0x17')],_0x513bfc);return BPromise[_0xed07('0x2b')](_0x2ec059);}else{logger[_0xed07('0x20')](_0xed07('0x41'),_0x513bfc);var _0x3ab1a6={'Phone':_0x513bfc};if(_0x930131[_0xed07('0x42')]){if(_0x930131[_0xed07('0x42')]==='contact'){logger[_0xed07('0x20')](_0xed07('0x43'),_0x513bfc,_0x930131['moduleCreate']);_0x3ab1a6['LastName']=_0x230d59!==_0xed07('0x44')?_0x230d59:util[_0xed07('0x45')](_0xed07('0x46'),_0x513bfc);}else if(_0x930131[_0xed07('0x42')]===_0xed07('0x18')){logger['info'](_0xed07('0x43'),_0x513bfc,_0x930131[_0xed07('0x42')]);_0x3ab1a6[_0xed07('0x47')]=_0x230d59!==_0xed07('0x44')?_0x230d59:util[_0xed07('0x45')]('Caller\x20-\x20%s',_0x513bfc);_0x3ab1a6[_0xed07('0x48')]=_0xed07('0x49');}else if(_0x930131[_0xed07('0x42')]===_0xed07('0x1a')){logger[_0xed07('0x20')](_0xed07('0x43'),_0x513bfc,_0x930131[_0xed07('0x42')]);_0x3ab1a6[_0xed07('0x2c')]=_0x230d59!==_0xed07('0x44')?_0x230d59:util[_0xed07('0x45')](_0xed07('0x46'),_0x513bfc);}else{return null;}}return _0x5af548[_0xed07('0x22')](_['upperFirst'](_0x930131[_0xed07('0x42')]))[_0xed07('0x23')](_0x3ab1a6)[_0xed07('0x28')](function(_0x55b34c){return BPromise[_0xed07('0x2b')]({'id':_0x55b34c['id'],'endUserType':_0x930131[_0xed07('0x42')]});});}});}function getCustomFields(_0x1ac5a5,_0x2b3a46){var _0x445d1f={};if(_0x1ac5a5[_0xed07('0x29')]>0x0){_['forEach'](_0x1ac5a5,function(_0x4f2928){if(_[_0xed07('0x4a')]([_0xed07('0x4b'),_0xed07('0x4c')],_0x4f2928[_0xed07('0x3f')])&&_0x4f2928['idField']){_0x445d1f[_0x4f2928[_0xed07('0x4d')]]=_0x4f2928[_0xed07('0x4e')][_0xed07('0x4f')]();}else if(_0x4f2928[_0xed07('0x3f')]===_0xed07('0x50')&&_0x4f2928[_0xed07('0x51')]&&_0x4f2928[_0xed07('0x4d')]){_0x2b3a46[_0x4f2928[_0xed07('0x51')]]&&(_0x445d1f[_0x4f2928[_0xed07('0x4d')]]=_0x2b3a46[_0x4f2928['variableName']]['toString']());}else if(_0x4f2928[_0xed07('0x3f')]===_0xed07('0x52')&&_0x4f2928[_0xed07('0x53')]&&_0x4f2928['Variable'][_0xed07('0x54')]&&_0x4f2928['idField']){_0x2b3a46[_0x4f2928[_0xed07('0x53')][_0xed07('0x54')][_0xed07('0x55')]()]&&(_0x445d1f[_0x4f2928[_0xed07('0x4d')]]=_0x2b3a46[_0x4f2928['Variable']['name'][_0xed07('0x55')]()]['toString']());}});}return _0x445d1f;}function getConnection(_0x5bde92){var _0x6ea6f1=_0x5bde92[_0xed07('0x56')][_0xed07('0x57')](_0x5bde92[_0xed07('0x58')]);var _0x51745d=new jsforce[(_0xed07('0x59'))]({'oauth2':{'loginUrl':_0x5bde92[_0xed07('0x5a')]||'https://login.salesforce.com','clientId':_0x5bde92[_0xed07('0x5b')],'clientSecret':_0x5bde92['clientSecret']}});return _0x51745d[_0xed07('0x5c')](_0x5bde92[_0xed07('0x5d')],_0x6ea6f1)[_0xed07('0x28')](function(){logger[_0xed07('0x20')](_0xed07('0x5e'));return _0x51745d;});}exports[_0xed07('0x5f')]=function(_0x970fbf,_0x599324,_0x54451a,_0x217647,_0x32881d,_0x585b30){var _0xf26944,_0x350e71,_0x3d6864,_0x3f20eb;_0x585b30[_0xed07('0x60')]=intUtil['stripTrailingSlash'](_0x585b30['serverUrl']);_0x585b30[_0xed07('0x5a')]=intUtil['stripTrailingSlash'](_0x585b30[_0xed07('0x5a')]);if(_0x32881d&&_0x32881d[_0xed07('0x61')]){logger[_0xed07('0x20')](_0xed07('0x62'),_0xed07('0x63'));_0x599324['recordingURL']=util[_0xed07('0x45')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x585b30[_0xed07('0x60')],_0x599324[_0xed07('0x64')],md5(_0x599324[_0xed07('0x64')]));}else{_0x599324[_0xed07('0x65')]='';}return getConnection(_0x585b30)[_0xed07('0x28')](function(_0x39edb8){_0x3f20eb=_0x39edb8;return getUser(_0x585b30,_0x217647[_0xed07('0x66')],_0x3f20eb);})[_0xed07('0x28')](function(_0x295741){_0xf26944=_0x295741;return getEndUser(_0x585b30,_0x54451a,_0x599324[_0xed07('0x67')],_0x599324[_0xed07('0x68')],_0x3f20eb);})[_0xed07('0x28')](function(_0x17a0f8){_0x350e71=_0x17a0f8;return getTicket(_0x585b30,_0xf26944,_0x350e71,_0x54451a,_0x599324,_0x54451a[_0xed07('0x69')],_0x3f20eb,_0xed07('0x5f'));})[_0xed07('0x28')](function(_0x441f28){_0x3d6864=_0x441f28;logger[_0xed07('0x20')](_0xed07('0x6a'),_0x3d6864['id']);logger[_0xed07('0x20')](_0xed07('0x6b'),_0x3d6864['id'],_0x217647[_0xed07('0x54')],_0x585b30[_0xed07('0x3f')]);switch(_0x585b30[_0xed07('0x3f')]){case'integrationTab':emit(util[_0xed07('0x45')](_0xed07('0x6c'),_0x217647['name']),_0xed07('0x6d'),{'recordId':_0x3d6864['id']});break;case _0xed07('0x6e'):emit(util[_0xed07('0x45')](_0xed07('0x6c'),_0x217647['name']),_0xed07('0x6f'),{'uri':util[_0xed07('0x45')](_0xed07('0x70'),_0x3f20eb[_0xed07('0x71')],_0x3d6864['id'])});break;default:logger[_0xed07('0x72')](_0xed07('0x73'));}})[_0xed07('0x74')](function(_0x13b9e2){logger[_0xed07('0x72')]('[QUEUE]',_0x13b9e2);});};exports[_0xed07('0x75')]=function(_0x85a04,_0x3f7778,_0x5b130a,_0x59116a,_0x534a61,_0x147836,_0x4bf8b9){var _0x57b951,_0x7d662b,_0x40b2a9,_0x28262f;_0x147836['serverUrl']=intUtil[_0xed07('0x76')](_0x147836[_0xed07('0x60')]);_0x147836[_0xed07('0x5a')]=intUtil[_0xed07('0x76')](_0x147836[_0xed07('0x5a')]);if(_0x4bf8b9&&_0x4bf8b9[_0xed07('0x77')]&&_0x4bf8b9['recordingFormat']!==_0xed07('0x78')){logger[_0xed07('0x20')](_0xed07('0x79'),_0xed07('0x63'));_0x3f7778[_0xed07('0x65')]=util[_0xed07('0x45')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x147836[_0xed07('0x60')],_0x3f7778[_0xed07('0x64')],md5(_0x3f7778[_0xed07('0x64')]));}return getConnection(_0x147836)[_0xed07('0x28')](function(_0x2b9d05){_0x28262f=_0x2b9d05;return getUser(_0x147836,_0x59116a['email'],_0x28262f);})[_0xed07('0x28')](function(_0x31c22c){_0x57b951=_0x31c22c;return getEndUser(_0x147836,_0x5b130a,_0x3f7778[_0xed07('0x7a')],_0x3f7778[_0xed07('0x7b')],_0x28262f);})[_0xed07('0x28')](function(_0x89df15){_0x7d662b=_0x89df15;return getTicket(_0x147836,_0x57b951,_0x7d662b,_0x5b130a,_0x3f7778,_0x5b130a[_0xed07('0x69')],_0x28262f,_0xed07('0x75'));})[_0xed07('0x28')](function(_0x39ccdb){_0x40b2a9=_0x39ccdb;logger[_0xed07('0x20')](_0xed07('0x7c'),_0x40b2a9['id']);logger[_0xed07('0x20')](_0xed07('0x7d'),_0x40b2a9['id'],_0x59116a[_0xed07('0x54')],_0x147836[_0xed07('0x3f')]);switch(_0x147836['type']){case _0xed07('0x7e'):emit(util['format']('user:%s',_0x59116a['name']),_0xed07('0x6d'),{'recordId':_0x40b2a9['id']});break;case _0xed07('0x6e'):emit(util['format'](_0xed07('0x6c'),_0x59116a[_0xed07('0x54')]),'trigger:browser:url',{'uri':util[_0xed07('0x45')]('%s/%s/e',_0x28262f['instanceUrl'],_0x40b2a9['id'])});break;default:logger[_0xed07('0x72')](_0xed07('0x79'),_0xed07('0x7f'));}})['catch'](function(_0x4acc87){logger[_0xed07('0x72')](_0xed07('0x79'),_0x4acc87);});};exports[_0xed07('0x80')]=function(_0x4e599f,_0x43d32d,_0x4187f3,_0x2adb6b,_0x3865af,_0x41de3d){var _0x53524b,_0x527588,_0x5c8201,_0xe0eca9;_0x41de3d[_0xed07('0x60')]=intUtil['stripTrailingSlash'](_0x41de3d[_0xed07('0x60')]);_0x41de3d[_0xed07('0x5a')]=intUtil[_0xed07('0x76')](_0x41de3d[_0xed07('0x5a')]);if(_0x3865af&&_0x3865af['monitor_format']){logger[_0xed07('0x20')]('['+_0x43d32d[_0xed07('0x81')][_0xed07('0x82')]()+']','Recording\x20is\x20enabled!');_0x43d32d[_0xed07('0x65')]=util['format'](_0xed07('0x83'),_0x41de3d[_0xed07('0x60')],_0x43d32d['uniqueid'],md5(_0x43d32d['uniqueid']));}else{_0x43d32d[_0xed07('0x65')]='';}return getConnection(_0x41de3d)[_0xed07('0x28')](function(_0x7b329c){_0xe0eca9=_0x7b329c;if(!_['isNil'](_0x2adb6b)){return getUser(_0x41de3d,_0x2adb6b['name'],_0xe0eca9);}else{return getUser(_0x41de3d,null,_0xe0eca9);}})[_0xed07('0x28')](function(_0x15e9ea){_0x53524b=_0x15e9ea;return getEndUser(_0x41de3d,_0x4187f3,_0x43d32d[_0xed07('0x67')],_0x43d32d[_0xed07('0x68')],_0xe0eca9);})['then'](function(_0x146a5e){_0x527588=_0x146a5e;return getTicket(_0x41de3d,_0x53524b,_0x527588,_0x4187f3,_0x43d32d,_0x4187f3['Fields'],_0xe0eca9);})[_0xed07('0x28')](function(_0x38f33f){_0x5c8201=_0x38f33f;logger[_0xed07('0x20')]('['+_0x43d32d[_0xed07('0x81')]['toUpperCase']()+_0xed07('0x84'),_0x5c8201['id']);logger[_0xed07('0x20')]('['+_0x43d32d[_0xed07('0x81')]['toUpperCase']()+']\x20Integration\x20account\x20type\x20%s.',_0x41de3d[_0xed07('0x3f')]);})[_0xed07('0x74')](function(_0x415cc3){logger[_0xed07('0x72')]('['+_0x43d32d[_0xed07('0x81')][_0xed07('0x82')]()+']',_0x415cc3);});};
\ No newline at end of file
index 662aced..1db97c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8d0=['unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','util','md5','./util','../../../../config/environment','../../../../config/logger','defaults','redis','localhost','GET','sys_user?sysparm_query=user_name%3Dadmin','result','length','adminId','sys_id','info','error','toUpperCase','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20entity','active','userId','adminEmail','],\x20createEndUser\x20input\x20crm','endUserNumber','user','true','then','],\x20EndUser\x20schema','catch','],\x20getEndUser\x20input\x20crm','endUserId','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','string','picklist','type','customField','nameField','content','toString','includes','idField','toLowerCase','Variable','name',']\x20getTicket\x20input\x20crm','POST','incident','assign','Subjects','Descriptions',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','Incident\x20-\x20','push',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_target%3Dincident','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','trigger:browser:url','username','password','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','email','outbound','calleridnum'];(function(_0x5746bf,_0x423ee){var _0x10032a=function(_0x2cd2be){while(--_0x2cd2be){_0x5746bf['push'](_0x5746bf['shift']());}};_0x10032a(++_0x423ee);}(_0xd8d0,0x79));var _0x0d8d=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xd8d0[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x0d8d('0x0'));var Promise=require(_0x0d8d('0x1'));var rp=require(_0x0d8d('0x2'));var util=require(_0x0d8d('0x3'));var md5=require(_0x0d8d('0x4'));var Redis=require('ioredis');var intUtil=require(_0x0d8d('0x5'));var config=require(_0x0d8d('0x6'));var logger=require(_0x0d8d('0x7'))('servicenow');config['redis']=_[_0x0d8d('0x8')](config[_0x0d8d('0x9')],{'host':_0x0d8d('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0d8d('0x9')]));function getAdminUser(_0x2a978d,_0x5a495d,_0xd3d4b4,_0x106768,_0x3f1acd,_0x5177f7){return new Promise(function(_0x13cc12,_0x3f6866){var _0x41e6f8={'method':_0x0d8d('0xb'),'uri':_0x106768+_0x0d8d('0xc')+'&'+_0x3f1acd+'&'+_0x5177f7,'auth':_0x5a495d,'json':!![]};return rp(_0x41e6f8)['then'](function(_0x3bc44e){if(_0x3bc44e[_0x0d8d('0xd')][_0x0d8d('0xe')]>0x0){_0xd3d4b4[_0x0d8d('0xf')]=_0x3bc44e[_0x0d8d('0xd')][0x0][_0x0d8d('0x10')];}logger[_0x0d8d('0x11')]('['+[_0x2a978d['toUpperCase']()]+'],\x20getAdminUser\x20crm',_0xd3d4b4);_0x13cc12(_0xd3d4b4);})['catch'](function(_0x125506){logger[_0x0d8d('0x12')]('['+[_0x2a978d[_0x0d8d('0x13')]()]+']',_0x125506[_0x0d8d('0x14')]);_0x3f6866(_0x125506[_0x0d8d('0x14')]);});});}function getUser(_0xc793c3,_0x2eefc9,_0x49abd7,_0x5a9d47,_0x13a38d){return function(_0x31ccfe){logger[_0x0d8d('0x11')]('['+[_0xc793c3[_0x0d8d('0x13')]()]+_0x0d8d('0x15'),_0x31ccfe);return new Promise(function(_0x5d6de3,_0x1fb7b5){if(intUtil[_0x0d8d('0x16')](_0x31ccfe[_0x0d8d('0x17')])){var _0x86da8e={'method':_0x0d8d('0xb'),'uri':_0x49abd7+_0x0d8d('0x18')+_0x31ccfe[_0x0d8d('0x17')]+'&'+_0x5a9d47+'&'+_0x13a38d,'auth':_0x2eefc9,'json':!![]};logger[_0x0d8d('0x11')]('['+[_0xc793c3[_0x0d8d('0x13')]()]+'],\x20getUser\x20rp\x20obj',_0x86da8e);return rp(_0x86da8e)['then'](function(_0x536848){logger['info']('['+[_0xc793c3[_0x0d8d('0x13')]()]+_0x0d8d('0x19'),_0x536848);if(_0x536848['result'][_0x0d8d('0xe')]>0x0&&String(_0x536848[_0x0d8d('0xd')][0x0][_0x0d8d('0x1a')])==='true'){_0x31ccfe[_0x0d8d('0x1b')]=_0x536848['result'][0x0][_0x0d8d('0x10')];}else{_0x31ccfe['userId']=_0x31ccfe[_0x0d8d('0xf')];_0x31ccfe['userEmail']=_0x31ccfe[_0x0d8d('0x1c')];}logger[_0x0d8d('0x11')]('['+[_0xc793c3[_0x0d8d('0x13')]()]+'],\x20getUser\x20crm',_0x31ccfe);_0x5d6de3(_0x31ccfe);})['catch'](function(_0x1cc3eb){logger['error']('['+[_0xc793c3[_0x0d8d('0x13')]()]+']',_0x1cc3eb[_0x0d8d('0x14')]);_0x1fb7b5(_0x1cc3eb[_0x0d8d('0x14')]);});}else{logger['info']('['+[_0xc793c3[_0x0d8d('0x13')]()]+']\x20using\x20admin\x20profile');_0x31ccfe['userId']=_0x31ccfe[_0x0d8d('0xf')];_0x31ccfe['userEmail']=_0x31ccfe[_0x0d8d('0x1c')];_0x5d6de3(_0x31ccfe);}});};}function createEndUser(_0x197b51,_0x215849,_0x29d7b5,_0x2a767d,_0x3e9f1b){logger[_0x0d8d('0x11')]('['+[_0x197b51['toUpperCase']()]+_0x0d8d('0x1d'),_0x29d7b5);return new Promise(function(_0x1f8d7a,_0x32b9bf){var _0x1e7daa={'method':'POST','uri':_0x2a767d+'sys_user?'+_0x3e9f1b,'body':{'user_name':_0x29d7b5[_0x0d8d('0x1e')],'roles':_0x0d8d('0x1f'),'first_name':_0x29d7b5[_0x0d8d('0x1e')],'active':_0x0d8d('0x20'),'date_format':'System','phone':_0x29d7b5['endUserNumber']},'auth':_0x215849,'json':!![]};return rp(_0x1e7daa)[_0x0d8d('0x21')](function(_0x50de3f){logger[_0x0d8d('0x11')]('['+[_0x197b51[_0x0d8d('0x13')]()]+_0x0d8d('0x22'),_0x50de3f[_0x0d8d('0xd')]);_0x29d7b5['endUserId']=_0x50de3f[_0x0d8d('0xd')][_0x0d8d('0x10')];_0x1f8d7a(_0x29d7b5);})[_0x0d8d('0x23')](function(_0xa9c631){logger[_0x0d8d('0x12')]('['+[_0x197b51[_0x0d8d('0x13')]()]+']',_0xa9c631[_0x0d8d('0x14')]);_0x32b9bf(_0xa9c631[_0x0d8d('0x14')]);});});}function getEndUser(_0x2c8c8c,_0x1f3057,_0x46e34b,_0x2c9885,_0x39641e){return function(_0x4fef9a){logger[_0x0d8d('0x11')]('['+[_0x2c8c8c['toUpperCase']()]+_0x0d8d('0x24'),_0x4fef9a);return new Promise(function(_0x39c0fd,_0x2ccd13){var _0x22c81e={'method':_0x0d8d('0xb'),'uri':_0x46e34b+'sys_user?sysparm_query=phone%3D'+_0x4fef9a['endUserNumber']+'&'+_0x2c9885+'&'+_0x39641e,'auth':_0x1f3057,'json':!![]};return rp(_0x22c81e)[_0x0d8d('0x21')](function(_0x89ceb3){if(_0x89ceb3[_0x0d8d('0xd')][_0x0d8d('0xe')]>0x0){_0x4fef9a[_0x0d8d('0x25')]=_0x89ceb3[_0x0d8d('0xd')][0x0][_0x0d8d('0x10')];logger[_0x0d8d('0x11')]('['+[_0x2c8c8c[_0x0d8d('0x13')]()]+_0x0d8d('0x26'),_0x4fef9a);_0x39c0fd(_0x4fef9a);}else{return createEndUser(_0x2c8c8c,_0x1f3057,_0x4fef9a,_0x46e34b,_0x2c9885)[_0x0d8d('0x21')](function(_0x57be1c){logger[_0x0d8d('0x11')]('['+[_0x2c8c8c['toUpperCase']()]+_0x0d8d('0x27'),_0x57be1c);_0x39c0fd(_0x57be1c);});}})['catch'](function(_0x472f4a){logger['error']('['+[_0x2c8c8c[_0x0d8d('0x13')]()]+']',_0x472f4a[_0x0d8d('0x14')]);_0x2ccd13(_0x472f4a[_0x0d8d('0x14')]);});});};}function getCustomFields(_0x50083d,_0x4540e6){var _0x5eb465={};if(_0x50083d[_0x0d8d('0xe')]>0x0){_[_0x0d8d('0x28')](_0x50083d,function(_0x505943){if(_['includes']([_0x0d8d('0x29'),_0x0d8d('0x2a')],_0x505943[_0x0d8d('0x2b')])&&_0x505943['nameField']&&!_0x505943[_0x0d8d('0x2c')]){_0x5eb465[_0x505943[_0x0d8d('0x2d')]['toLowerCase']()]=_0x505943[_0x0d8d('0x2e')][_0x0d8d('0x2f')]();}else if(_[_0x0d8d('0x30')](['string',_0x0d8d('0x2a')],_0x505943[_0x0d8d('0x2b')])&&_0x505943['idField']&&_0x505943[_0x0d8d('0x2c')]){_0x5eb465[_0x505943[_0x0d8d('0x31')][_0x0d8d('0x32')]()]=_0x505943[_0x0d8d('0x2e')]['toString']();}else if(_0x505943[_0x0d8d('0x2b')]==='variable'&&_0x505943['variableName']&&_0x505943[_0x0d8d('0x31')]&&_0x505943[_0x0d8d('0x2c')]){_0x5eb465[_0x505943['idField'][_0x0d8d('0x32')]()]=_0x4540e6[_0x505943['variableName']]['toString']();}else if(_0x505943[_0x0d8d('0x2b')]==='customVariable'&&_0x505943[_0x0d8d('0x33')]&&_0x505943[_0x0d8d('0x33')][_0x0d8d('0x34')]&&_0x505943[_0x0d8d('0x31')]&&_0x505943[_0x0d8d('0x2c')]){_0x5eb465[_0x505943[_0x0d8d('0x31')][_0x0d8d('0x32')]()]=_0x4540e6[_0x505943[_0x0d8d('0x33')][_0x0d8d('0x34')][_0x0d8d('0x32')]()][_0x0d8d('0x2f')]();}});}return _0x5eb465;}function getTicket(_0x3569fc,_0x32c88d,_0x4e6ed4,_0xc0283,_0x3554e4,_0x51f241){return function(_0xbddff){logger['info']('['+[_0x3569fc[_0x0d8d('0x13')]()]+_0x0d8d('0x35'),_0xbddff);return new Promise(function(_0x49f77e,_0xf824f3){var _0x3cae35=_0x3569fc[_0x0d8d('0x32')]()==='outbound'?_0xbddff[_0x0d8d('0x1b')]:_0xbddff[_0x0d8d('0x25')];var _0x3834e8={'method':_0x0d8d('0x36'),'uri':_0x4e6ed4+_0x0d8d('0x37')+'?'+_0x51f241,'body':Object[_0x0d8d('0x38')]({},{'active':_0x0d8d('0x20'),'caller_id':_0x3cae35,'assigned_to':_0xbddff[_0x0d8d('0x1b')],'short_description':intUtil['getString'](_0xc0283[_0x0d8d('0x39')],_0x3554e4,'\x20'),'description':intUtil['getString'](_0xc0283[_0x0d8d('0x3a')],_0x3554e4,'\x0a')},getCustomFields(_0xc0283['Fields'],_0x3554e4)),'auth':_0x32c88d,'json':!![]};return rp(_0x3834e8)[_0x0d8d('0x21')](function(_0xc967c){logger['info']('['+[_0x3569fc['toUpperCase']()]+_0x0d8d('0x3b'),_0xc967c[_0x0d8d('0xd')]);_0xbddff[_0x0d8d('0x3c')]=_0xc967c[_0x0d8d('0xd')][_0x0d8d('0x10')];_0xbddff[_0x0d8d('0x3d')]=_0xc967c[_0x0d8d('0xd')][_0x0d8d('0x3e')];logger[_0x0d8d('0x11')]('['+[_0x3569fc['toUpperCase']()]+_0x0d8d('0x3f'),_0xbddff);_0x49f77e(_0xbddff);})[_0x0d8d('0x23')](function(_0x4fca34){logger[_0x0d8d('0x12')]('['+[_0x3569fc[_0x0d8d('0x13')]()]+']',_0x4fca34[_0x0d8d('0x14')]);_0xf824f3(_0x4fca34[_0x0d8d('0x14')]);});});};}function createRemoteTag(_0x54b5c3,_0x219dc4,_0x4d1734,_0x5ad708){return new Promise(function(_0x25c3da,_0x284a26){var _0x5986cc={'method':_0x0d8d('0x36'),'uri':_0x4d1734+_0x0d8d('0x40')+'?'+_0x5ad708,'body':{'short_description':_0x54b5c3,'global':!![],'active':!![],'name':_0x54b5c3},'auth':_0x219dc4,'json':!![]};return rp(_0x5986cc)[_0x0d8d('0x21')](function(_0x2591b0){var _0x35a32d=_0x2591b0[_0x0d8d('0xd')]['sys_id'];_0x25c3da(_0x35a32d);});});}function getRemoteTag(_0x10d02d,_0x3c0e61,_0x1c5034,_0x33b4df,_0x477fcb){return new Promise(function(_0x4bcb1b,_0x57a7af){var _0x36963b={'method':'GET','uri':_0x1c5034+_0x0d8d('0x40')+_0x0d8d('0x41')+_0x10d02d+'&'+_0x33b4df,'auth':_0x3c0e61,'json':!![]};return rp(_0x36963b)[_0x0d8d('0x21')](function(_0x1ef5d2){if(_0x1ef5d2['result']['length']>0x0){var _0x160ba5=_0x1ef5d2['result'][0x0]['sys_id'];_0x4bcb1b(_0x160ba5);}else{return createRemoteTag(_0x10d02d,_0x3c0e61,_0x1c5034,_0x33b4df)[_0x0d8d('0x21')](function(_0x43ccb3){_0x4bcb1b(_0x43ccb3);});}});});}function assignTagToIncident(_0x22f42f,_0x16c817,_0xf7893d,_0x4c1e1f,_0x32cd2c){return new Promise(function(_0xb2480,_0x56531a){var _0x566c44={'method':'POST','uri':_0xf7893d+_0x0d8d('0x42')+'?'+_0x32cd2c,'body':{'label':_0x22f42f,'table':'incident','id_type':_0x0d8d('0x43'),'table_key':_0x4c1e1f['ticketId'],'title':_0x0d8d('0x44')+_0x4c1e1f[_0x0d8d('0x3d')],'id_display':_0x4c1e1f[_0x0d8d('0x3d')]},'auth':_0x16c817,'json':!![]};return rp(_0x566c44)['then'](function(_0x3b10fe){_0xb2480();})[_0x0d8d('0x23')](function(){_0xb2480();});});}function manageTags(_0x393da4,_0x22aa19,_0x1466c9,_0x2ac1c2,_0x595630,_0x5ead0a,_0xf593d7){return new Promise(function(_0x1b695a,_0xd62630){var _0x1bea12=[];_0x22aa19[_0x0d8d('0x28')](function(_0x400c03){_0x1bea12[_0x0d8d('0x45')](getRemoteTag(_0x400c03,_0x1466c9,_0x2ac1c2,_0x5ead0a,_0xf593d7));});return Promise['all'](_0x1bea12)['then'](function(_0x4721fe){if(_0x4721fe[_0x0d8d('0xe')]){logger[_0x0d8d('0x11')]('['+[_0x393da4[_0x0d8d('0x13')]()]+_0x0d8d('0x46'),_0x4721fe);var _0x53a26e=[];_0x4721fe['forEach'](function(_0x2b8bb0){_0x53a26e[_0x0d8d('0x45')](assignTagToIncident(_0x2b8bb0,_0x1466c9,_0x2ac1c2,_0x595630,_0x5ead0a));});return Promise['all'](_0x53a26e)['then'](function(){_0x1b695a();})['catch'](function(){_0x1b695a();});}else{_0x1b695a();}});});}function getTags(_0x5f283c,_0x489461,_0x34dafb,_0x4c361f,_0x5ef1ca,_0x351808){return function(_0x685891){return new Promise(function(_0x339b7a,_0xb2ad3){var _0x30f32c=[];var _0x47799d=_0x4c361f[_0x0d8d('0x47')];if(_0x47799d&&_0x47799d[_0x0d8d('0xe')]>0x0){_0x30f32c=_[_0x0d8d('0x48')](_0x47799d,'name');}if(_0x30f32c[_0x0d8d('0xe')]>0x0){return manageTags(_0x5f283c,_0x30f32c,_0x489461,_0x34dafb,_0x685891,_0x5ef1ca,_0x351808)[_0x0d8d('0x21')](function(){_0x339b7a(_0x685891);});}else{_0x339b7a(_0x685891);}});};}function emit(_0x46d3ce,_0x3dc57a,_0x46d887){var _0x5579c2=_0x0d8d('0x49')+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+_0x0d8d('0x4a')+_0x0d8d('0x4b');var _0x14b312={'uri':_0x46d3ce+_0x0d8d('0x4c')+_0x46d887+_0x5579c2};io['to'](util[_0x0d8d('0x4d')](_0x0d8d('0x4e'),_0x3dc57a))['emit'](_0x0d8d('0x4f'),_0x14b312);}exports['cs']=function(_0x13118d,_0x1950f6,_0x739e7,_0x37598e,_0x4c690e,_0x35ce59,_0x5b8b0f,_0x3ec3ce){var _0x3ec056={};var _0x477338={'user':_0x35ce59[_0x0d8d('0x50')],'pass':_0x35ce59[_0x0d8d('0x51')]};var _0x560d61='sysparm_limit=1';var _0x3462da='sysparm_display_value=true';_0x35ce59[_0x0d8d('0x52')]=intUtil[_0x0d8d('0x53')](_0x35ce59['remoteUri']);_0x35ce59['serverUrl']=intUtil[_0x0d8d('0x53')](_0x35ce59[_0x0d8d('0x54')]);var _0x5c9ba2=util[_0x0d8d('0x4d')](_0x0d8d('0x55'),_0x35ce59[_0x0d8d('0x52')]);_0x3ec056[_0x0d8d('0x17')]=!_['isNil'](_0x37598e)?_0x37598e[_0x0d8d('0x56')]:null;_0x3ec056[_0x0d8d('0x1c')]=_0x35ce59['email'];_0x3ec056[_0x0d8d('0x1e')]=_0x3ec3ce[_0x0d8d('0x32')]()===_0x0d8d('0x57')?_0x1950f6['destcalleridnum']:_0x1950f6[_0x0d8d('0x58')];_0x3ec056['callDirection']=_0x3ec3ce==='queue'||_0x3ec3ce===_0x0d8d('0x59')?_0x0d8d('0x5a'):_0x0d8d('0x57');var _0x45dc82=util['format'](_0x0d8d('0x5b'),_0x35ce59[_0x0d8d('0x54')],_0x1950f6[_0x0d8d('0x5c')],md5(_0x1950f6['uniqueid']));if(_0x4c690e&&_0x4c690e[_0x0d8d('0x5d')]){logger[_0x0d8d('0x11')](_0x0d8d('0x5e'),_0x0d8d('0x5f'));_0x1950f6['recordingURL']=_0x45dc82;}else if(_0x5b8b0f&&_0x5b8b0f[_0x0d8d('0x60')]&&_0x5b8b0f[_0x0d8d('0x60')]!==_0x0d8d('0x61')){logger[_0x0d8d('0x11')](_0x0d8d('0x62'),_0x0d8d('0x5f'));_0x1950f6['recordingURL']=_0x45dc82;}else{_0x1950f6[_0x0d8d('0x63')]='';}return getAdminUser(_0x3ec3ce,_0x477338,_0x3ec056,_0x5c9ba2,_0x3462da,_0x560d61)[_0x0d8d('0x21')](getUser(_0x3ec3ce,_0x477338,_0x5c9ba2,_0x3462da,_0x560d61))[_0x0d8d('0x21')](getEndUser(_0x3ec3ce,_0x477338,_0x5c9ba2,_0x3462da,_0x560d61))[_0x0d8d('0x21')](getTicket(_0x3ec3ce,_0x477338,_0x5c9ba2,_0x739e7,_0x1950f6,_0x3462da))[_0x0d8d('0x21')](function(_0x484b23){logger['info'](util['format'](_0x0d8d('0x64'),_0x484b23[_0x0d8d('0x3c')]));logger[_0x0d8d('0x11')](util[_0x0d8d('0x4d')](_0x0d8d('0x65'),_0x3ec3ce));if(_0x3ec3ce!==_0x0d8d('0x59')){logger[_0x0d8d('0x11')]('['+[_0x3ec3ce['toUpperCase']()]+']',_0x0d8d('0x66'));emit(_0x35ce59[_0x0d8d('0x52')],_0x37598e[_0x0d8d('0x34')],_0x484b23[_0x0d8d('0x3c')]);}})['catch'](function(_0x321d18){logger[_0x0d8d('0x12')]('['+[_0x3ec3ce['toUpperCase']()]+_0x0d8d('0x67'),util[_0x0d8d('0x68')](_0x321d18,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x1b05=['calleridnum','queue','unmanaged','uniqueid','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','./util','../../../../config/environment','defaults','redis','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','info','catch','toUpperCase','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','active','true','userId',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','POST','user','endUserNumber','],\x20EndUser\x20schema','endUserId','error','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','forEach','includes','string','picklist','nameField','customField','toLowerCase','content','type','idField','variable','variableName','customVariable','name','toString',']\x20getTicket\x20input\x20crm','outbound','incident','assign','getString','Subjects','Descriptions',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','?sysparm_query=name%3D','label_entry','Incident','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','map','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%255EORDERBYDESCnumber','format','user:%s','emit','username','password','sysparm_limit=1','sysparm_display_value=true','stripTrailingSlash','remoteUri','%s/api/now/table/','isNil','email','adminEmail'];(function(_0x235446,_0x40ff49){var _0x13aae1=function(_0x156b79){while(--_0x156b79){_0x235446['push'](_0x235446['shift']());}};_0x13aae1(++_0x40ff49);}(_0x1b05,0x72));var _0x51b0=function(_0x42f3b6,_0x3a7092){_0x42f3b6=_0x42f3b6-0x0;var _0x493a37=_0x1b05[_0x42f3b6];return _0x493a37;};'use strict';var _=require(_0x51b0('0x0'));var Promise=require(_0x51b0('0x1'));var rp=require('request-promise');var util=require('util');var md5=require('md5');var Redis=require('ioredis');var intUtil=require(_0x51b0('0x2'));var config=require(_0x51b0('0x3'));var logger=require('../../../../config/logger')('servicenow');config['redis']=_[_0x51b0('0x4')](config[_0x51b0('0x5')],{'host':_0x51b0('0x6'),'port':0x18eb});var io=require(_0x51b0('0x7'))(new Redis(config['redis']));function getAdminUser(_0x45ba2d,_0x2298f2,_0x3ffe83,_0x4b0967,_0x41f103,_0x53b194){return new Promise(function(_0x1f95ad,_0x5d796e){var _0x1f74d5={'method':_0x51b0('0x8'),'uri':_0x4b0967+_0x51b0('0x9')+'&'+_0x41f103+'&'+_0x53b194,'auth':_0x2298f2,'json':!![]};return rp(_0x1f74d5)[_0x51b0('0xa')](function(_0x4a1dc0){if(_0x4a1dc0[_0x51b0('0xb')][_0x51b0('0xc')]>0x0){_0x3ffe83[_0x51b0('0xd')]=_0x4a1dc0['result'][0x0][_0x51b0('0xe')];}logger[_0x51b0('0xf')]('['+[_0x45ba2d['toUpperCase']()]+'],\x20getAdminUser\x20crm',_0x3ffe83);_0x1f95ad(_0x3ffe83);})[_0x51b0('0x10')](function(_0x568241){logger['error']('['+[_0x45ba2d[_0x51b0('0x11')]()]+']',_0x568241[_0x51b0('0x12')]);_0x5d796e(_0x568241[_0x51b0('0x12')]);});});}function getUser(_0x40d970,_0x136b13,_0x28ae5d,_0x55318d,_0x399060){return function(_0x9f876b){logger[_0x51b0('0xf')]('['+[_0x40d970[_0x51b0('0x11')]()]+_0x51b0('0x13'),_0x9f876b);return new Promise(function(_0x6a0444,_0x39418e){if(intUtil[_0x51b0('0x14')](_0x9f876b[_0x51b0('0x15')])){var _0x1c48be={'method':_0x51b0('0x8'),'uri':_0x28ae5d+_0x51b0('0x16')+_0x9f876b[_0x51b0('0x15')]+'&'+_0x55318d+'&'+_0x399060,'auth':_0x136b13,'json':!![]};logger[_0x51b0('0xf')]('['+[_0x40d970[_0x51b0('0x11')]()]+'],\x20getUser\x20rp\x20obj',_0x1c48be);return rp(_0x1c48be)[_0x51b0('0xa')](function(_0x51bdf6){logger[_0x51b0('0xf')]('['+[_0x40d970[_0x51b0('0x11')]()]+'],\x20getUser\x20entity',_0x51bdf6);if(_0x51bdf6[_0x51b0('0xb')][_0x51b0('0xc')]>0x0&&String(_0x51bdf6['result'][0x0][_0x51b0('0x17')])===_0x51b0('0x18')){_0x9f876b[_0x51b0('0x19')]=_0x51bdf6['result'][0x0][_0x51b0('0xe')];}else{_0x9f876b['userId']=_0x9f876b[_0x51b0('0xd')];_0x9f876b[_0x51b0('0x15')]=_0x9f876b['adminEmail'];}logger[_0x51b0('0xf')]('['+[_0x40d970[_0x51b0('0x11')]()]+'],\x20getUser\x20crm',_0x9f876b);_0x6a0444(_0x9f876b);})[_0x51b0('0x10')](function(_0x13e21){logger['error']('['+[_0x40d970[_0x51b0('0x11')]()]+']',_0x13e21[_0x51b0('0x12')]);_0x39418e(_0x13e21['message']);});}else{logger['info']('['+[_0x40d970['toUpperCase']()]+_0x51b0('0x1a'));_0x9f876b[_0x51b0('0x19')]=_0x9f876b[_0x51b0('0xd')];_0x9f876b[_0x51b0('0x15')]=_0x9f876b['adminEmail'];_0x6a0444(_0x9f876b);}});};}function createEndUser(_0x26508d,_0x1bccd3,_0x111ece,_0x4997de,_0x2e023b){logger[_0x51b0('0xf')]('['+[_0x26508d[_0x51b0('0x11')]()]+_0x51b0('0x1b'),_0x111ece);return new Promise(function(_0x5366d9,_0x269de4){var _0x25150a={'method':_0x51b0('0x1c'),'uri':_0x4997de+'sys_user?'+_0x2e023b,'body':{'user_name':_0x111ece['endUserNumber'],'roles':_0x51b0('0x1d'),'first_name':_0x111ece['endUserNumber'],'active':_0x51b0('0x18'),'date_format':'System','phone':_0x111ece[_0x51b0('0x1e')]},'auth':_0x1bccd3,'json':!![]};return rp(_0x25150a)[_0x51b0('0xa')](function(_0x20330a){logger[_0x51b0('0xf')]('['+[_0x26508d[_0x51b0('0x11')]()]+_0x51b0('0x1f'),_0x20330a[_0x51b0('0xb')]);_0x111ece[_0x51b0('0x20')]=_0x20330a[_0x51b0('0xb')]['sys_id'];_0x5366d9(_0x111ece);})[_0x51b0('0x10')](function(_0x49d747){logger[_0x51b0('0x21')]('['+[_0x26508d[_0x51b0('0x11')]()]+']',_0x49d747[_0x51b0('0x12')]);_0x269de4(_0x49d747[_0x51b0('0x12')]);});});}function getEndUser(_0x317bed,_0x448827,_0x10db1b,_0x59a715,_0x179dab){return function(_0x118f35){logger[_0x51b0('0xf')]('['+[_0x317bed[_0x51b0('0x11')]()]+'],\x20getEndUser\x20input\x20crm',_0x118f35);return new Promise(function(_0x44cc18,_0x5d9073){var _0x22760c={'method':_0x51b0('0x8'),'uri':_0x10db1b+_0x51b0('0x22')+_0x118f35[_0x51b0('0x1e')]+'&'+_0x59a715+'&'+_0x179dab,'auth':_0x448827,'json':!![]};return rp(_0x22760c)['then'](function(_0x5fb8cf){if(_0x5fb8cf[_0x51b0('0xb')][_0x51b0('0xc')]>0x0){_0x118f35['endUserId']=_0x5fb8cf[_0x51b0('0xb')][0x0][_0x51b0('0xe')];logger['info']('['+[_0x317bed[_0x51b0('0x11')]()]+_0x51b0('0x23'),_0x118f35);_0x44cc18(_0x118f35);}else{return createEndUser(_0x317bed,_0x448827,_0x118f35,_0x10db1b,_0x59a715)[_0x51b0('0xa')](function(_0x5b22c9){logger['info']('['+[_0x317bed[_0x51b0('0x11')]()]+'],\x20createEndUser\x20crm',_0x5b22c9);_0x44cc18(_0x5b22c9);});}})[_0x51b0('0x10')](function(_0x43c24e){logger[_0x51b0('0x21')]('['+[_0x317bed['toUpperCase']()]+']',_0x43c24e['message']);_0x5d9073(_0x43c24e[_0x51b0('0x12')]);});});};}function getCustomFields(_0x9e4df8,_0x41ef0c){var _0x32bdc9={};if(_0x9e4df8[_0x51b0('0xc')]>0x0){_[_0x51b0('0x24')](_0x9e4df8,function(_0x25da55){if(_[_0x51b0('0x25')]([_0x51b0('0x26'),_0x51b0('0x27')],_0x25da55['type'])&&_0x25da55[_0x51b0('0x28')]&&!_0x25da55[_0x51b0('0x29')]){_0x32bdc9[_0x25da55[_0x51b0('0x28')][_0x51b0('0x2a')]()]=_0x25da55[_0x51b0('0x2b')]['toString']();}else if(_[_0x51b0('0x25')]([_0x51b0('0x26'),_0x51b0('0x27')],_0x25da55[_0x51b0('0x2c')])&&_0x25da55[_0x51b0('0x2d')]&&_0x25da55[_0x51b0('0x29')]){_0x32bdc9[_0x25da55['idField'][_0x51b0('0x2a')]()]=_0x25da55['content']['toString']();}else if(_0x25da55['type']===_0x51b0('0x2e')&&_0x25da55['variableName']&&_0x25da55[_0x51b0('0x2d')]&&_0x25da55[_0x51b0('0x29')]){_0x32bdc9[_0x25da55[_0x51b0('0x2d')][_0x51b0('0x2a')]()]=_0x41ef0c[_0x25da55[_0x51b0('0x2f')]]['toString']();}else if(_0x25da55['type']===_0x51b0('0x30')&&_0x25da55['Variable']&&_0x25da55['Variable']['name']&&_0x25da55[_0x51b0('0x2d')]&&_0x25da55[_0x51b0('0x29')]){_0x32bdc9[_0x25da55[_0x51b0('0x2d')][_0x51b0('0x2a')]()]=_0x41ef0c[_0x25da55['Variable'][_0x51b0('0x31')][_0x51b0('0x2a')]()][_0x51b0('0x32')]();}});}return _0x32bdc9;}function getTicket(_0x2c5225,_0x4916da,_0x342d34,_0x4f2ea3,_0x30d31b,_0x561907){return function(_0x638499){logger[_0x51b0('0xf')]('['+[_0x2c5225[_0x51b0('0x11')]()]+_0x51b0('0x33'),_0x638499);return new Promise(function(_0x4f103b,_0x589f0c){var _0x485386=_0x2c5225[_0x51b0('0x2a')]()===_0x51b0('0x34')?_0x638499[_0x51b0('0x19')]:_0x638499[_0x51b0('0x20')];var _0x4fe74b={'method':_0x51b0('0x1c'),'uri':_0x342d34+_0x51b0('0x35')+'?'+_0x561907,'body':Object[_0x51b0('0x36')]({},{'active':'true','caller_id':_0x485386,'assigned_to':_0x638499[_0x51b0('0x19')],'short_description':intUtil[_0x51b0('0x37')](_0x4f2ea3[_0x51b0('0x38')],_0x30d31b,'\x20'),'description':intUtil[_0x51b0('0x37')](_0x4f2ea3[_0x51b0('0x39')],_0x30d31b,'\x0a')},getCustomFields(_0x4f2ea3['Fields'],_0x30d31b)),'auth':_0x4916da,'json':!![]};return rp(_0x4fe74b)[_0x51b0('0xa')](function(_0x52c43e){logger[_0x51b0('0xf')]('['+[_0x2c5225[_0x51b0('0x11')]()]+_0x51b0('0x3a'),_0x52c43e[_0x51b0('0xb')]);_0x638499[_0x51b0('0x3b')]=_0x52c43e[_0x51b0('0xb')][_0x51b0('0xe')];_0x638499[_0x51b0('0x3c')]=_0x52c43e['result'][_0x51b0('0x3d')];logger['info']('['+[_0x2c5225['toUpperCase']()]+_0x51b0('0x3e'),_0x638499);_0x4f103b(_0x638499);})[_0x51b0('0x10')](function(_0x40a4b9){logger[_0x51b0('0x21')]('['+[_0x2c5225[_0x51b0('0x11')]()]+']',_0x40a4b9[_0x51b0('0x12')]);_0x589f0c(_0x40a4b9[_0x51b0('0x12')]);});});};}function createRemoteTag(_0x58f669,_0x41660d,_0x25e9a0,_0x3c8fa3){return new Promise(function(_0x5e623c,_0x3b5ee5){var _0x2ed090={'method':_0x51b0('0x1c'),'uri':_0x25e9a0+'label'+'?'+_0x3c8fa3,'body':{'short_description':_0x58f669,'global':!![],'active':!![],'name':_0x58f669},'auth':_0x41660d,'json':!![]};return rp(_0x2ed090)['then'](function(_0x2bd8a5){var _0x8b3089=_0x2bd8a5['result'][_0x51b0('0xe')];_0x5e623c(_0x8b3089);});});}function getRemoteTag(_0x18aa8d,_0x1d949f,_0x61256f,_0x2b7d60,_0x1a0965){return new Promise(function(_0x42e08d,_0xdff8fd){var _0x19165b={'method':_0x51b0('0x8'),'uri':_0x61256f+'label'+_0x51b0('0x3f')+_0x18aa8d+'&'+_0x2b7d60,'auth':_0x1d949f,'json':!![]};return rp(_0x19165b)[_0x51b0('0xa')](function(_0x3b6db2){if(_0x3b6db2[_0x51b0('0xb')][_0x51b0('0xc')]>0x0){var _0x6af8c1=_0x3b6db2[_0x51b0('0xb')][0x0][_0x51b0('0xe')];_0x42e08d(_0x6af8c1);}else{return createRemoteTag(_0x18aa8d,_0x1d949f,_0x61256f,_0x2b7d60)['then'](function(_0x216207){_0x42e08d(_0x216207);});}});});}function assignTagToIncident(_0x391f1a,_0x3ec126,_0x124569,_0x3683f2,_0x2ddfd7){return new Promise(function(_0x463c58,_0x2cc4c9){var _0x10a463={'method':_0x51b0('0x1c'),'uri':_0x124569+_0x51b0('0x40')+'?'+_0x2ddfd7,'body':{'label':_0x391f1a,'table':_0x51b0('0x35'),'id_type':_0x51b0('0x41'),'table_key':_0x3683f2['ticketId'],'title':_0x51b0('0x42')+_0x3683f2[_0x51b0('0x3c')],'id_display':_0x3683f2['ticketNumber']},'auth':_0x3ec126,'json':!![]};return rp(_0x10a463)[_0x51b0('0xa')](function(_0xbc13e5){_0x463c58();})[_0x51b0('0x10')](function(){_0x463c58();});});}function manageTags(_0xd86b30,_0x389580,_0x55cb86,_0x2876e6,_0x4a3dc3,_0x3c8943,_0x53ecbb){return new Promise(function(_0x511040,_0x272fd8){var _0x13400d=[];_0x389580[_0x51b0('0x24')](function(_0x53e30a){_0x13400d[_0x51b0('0x43')](getRemoteTag(_0x53e30a,_0x55cb86,_0x2876e6,_0x3c8943,_0x53ecbb));});return Promise[_0x51b0('0x44')](_0x13400d)['then'](function(_0x28e0c3){if(_0x28e0c3['length']){logger[_0x51b0('0xf')]('['+[_0xd86b30['toUpperCase']()]+_0x51b0('0x45'),_0x28e0c3);var _0x206ee8=[];_0x28e0c3[_0x51b0('0x24')](function(_0x5c8a2a){_0x206ee8[_0x51b0('0x43')](assignTagToIncident(_0x5c8a2a,_0x55cb86,_0x2876e6,_0x4a3dc3,_0x3c8943));});return Promise[_0x51b0('0x44')](_0x206ee8)[_0x51b0('0xa')](function(){_0x511040();})[_0x51b0('0x10')](function(){_0x511040();});}else{_0x511040();}});});}function getTags(_0x282880,_0x4c7a1b,_0x1fe2e3,_0x2b3ff3,_0x18c799,_0x346aad){return function(_0x2d4338){return new Promise(function(_0x18965f,_0x57d55b){var _0x27536c=[];var _0x1502f0=_0x2b3ff3['Tags'];if(_0x1502f0&&_0x1502f0['length']>0x0){_0x27536c=_[_0x51b0('0x46')](_0x1502f0,_0x51b0('0x31'));}if(_0x27536c[_0x51b0('0xc')]>0x0){return manageTags(_0x282880,_0x27536c,_0x4c7a1b,_0x1fe2e3,_0x2d4338,_0x18c799,_0x346aad)[_0x51b0('0xa')](function(){_0x18965f(_0x2d4338);});}else{_0x18965f(_0x2d4338);}});};}function emit(_0x3a7f11,_0x1c1bfe,_0x2f4492){var _0x298fe2='%26sysparm_record_target%3Dincident'+_0x51b0('0x47')+'%26sysparm_record_list%3Dactive%253Dtrue'+_0x51b0('0x48');var _0x26c0c4={'uri':_0x3a7f11+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x2f4492+_0x298fe2};io['to'](util[_0x51b0('0x49')](_0x51b0('0x4a'),_0x1c1bfe))[_0x51b0('0x4b')]('trigger:browser:url',_0x26c0c4);}exports['cs']=function(_0x35b7b9,_0x526ead,_0x2791e1,_0x2e45b7,_0x5f56c7,_0x51d24d,_0x18685b,_0x1b0bed){var _0x4772d={};var _0x455475={'user':_0x51d24d[_0x51b0('0x4c')],'pass':_0x51d24d[_0x51b0('0x4d')]};var _0x5a7551=_0x51b0('0x4e');var _0x4b469a=_0x51b0('0x4f');_0x51d24d['remoteUri']=intUtil[_0x51b0('0x50')](_0x51d24d[_0x51b0('0x51')]);_0x51d24d['serverUrl']=intUtil[_0x51b0('0x50')](_0x51d24d['serverUrl']);var _0x34f056=util[_0x51b0('0x49')](_0x51b0('0x52'),_0x51d24d[_0x51b0('0x51')]);_0x4772d[_0x51b0('0x15')]=!_[_0x51b0('0x53')](_0x2e45b7)?_0x2e45b7[_0x51b0('0x54')]:null;_0x4772d[_0x51b0('0x55')]=_0x51d24d[_0x51b0('0x54')];_0x4772d['endUserNumber']=_0x1b0bed['toLowerCase']()==='outbound'?_0x526ead['destcalleridnum']:_0x526ead[_0x51b0('0x56')];_0x4772d['callDirection']=_0x1b0bed===_0x51b0('0x57')||_0x1b0bed===_0x51b0('0x58')?_0x51b0('0x57'):_0x51b0('0x34');var _0x38a213=util[_0x51b0('0x49')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x51d24d['serverUrl'],_0x526ead[_0x51b0('0x59')],md5(_0x526ead['uniqueid']));if(_0x5f56c7&&_0x5f56c7['monitor_format']){logger[_0x51b0('0xf')]('[QUEUE]',_0x51b0('0x5a'));_0x526ead[_0x51b0('0x5b')]=_0x38a213;}else if(_0x18685b&&_0x18685b['recordingFormat']&&_0x18685b[_0x51b0('0x5c')]!==_0x51b0('0x5d')){logger[_0x51b0('0xf')](_0x51b0('0x5e'),_0x51b0('0x5a'));_0x526ead[_0x51b0('0x5b')]=_0x38a213;}else{_0x526ead['recordingURL']='';}return getAdminUser(_0x1b0bed,_0x455475,_0x4772d,_0x34f056,_0x4b469a,_0x5a7551)[_0x51b0('0xa')](getUser(_0x1b0bed,_0x455475,_0x34f056,_0x4b469a,_0x5a7551))['then'](getEndUser(_0x1b0bed,_0x455475,_0x34f056,_0x4b469a,_0x5a7551))['then'](getTicket(_0x1b0bed,_0x455475,_0x34f056,_0x2791e1,_0x526ead,_0x4b469a))[_0x51b0('0xa')](function(_0x5519c1){logger[_0x51b0('0xf')](util['format'](_0x51b0('0x5f'),_0x5519c1[_0x51b0('0x3b')]));logger['info'](util['format'](_0x51b0('0x60'),_0x1b0bed));if(_0x1b0bed!=='unmanaged'){logger['info']('['+[_0x1b0bed[_0x51b0('0x11')]()]+']',_0x51b0('0x61'));emit(_0x51d24d[_0x51b0('0x51')],_0x2e45b7[_0x51b0('0x31')],_0x5519c1[_0x51b0('0x3b')]);}})[_0x51b0('0x10')](function(_0xe274a9){logger[_0x51b0('0x21')]('['+[_0x1b0bed['toUpperCase']()]+_0x51b0('0x62'),util[_0x51b0('0x63')](_0xe274a9,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index e5b69e0..2100c14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb13=['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...','user:%s','trigger:browser:url','catch','outbound','recordingFormat','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','Outbound','The\x20Ticket\x20ID\x20is:','version','[OUTBOUND]','error','unmanaged','lastevent','toUpperCase','isNil','lodash','request-promise','bluebird','md5','util','ioredis','../../../../config/environment','../../../../config/logger','redis','defaults','POST','info','Creating\x20new\x20ticket...','name','Subjects','assigned_user_id','created_by','description','Descriptions','date_start','slice','duration_hours','duration_minutes','parent_id','parent_type','direction','forEach','variableName','push','idField','set_entry','JSON','stringify','format','Basic\x20%s','base64','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','length','find','entry_list','value','Agent\x20found!','resolve','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Contacts','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Enduser\x20created.','debug','type','customField','nameField','toLowerCase','content','toString','custom_fields','variable','customVariable','Variable','login','username','password','xCALLY\x20Motion\x20integration','sessionID','set_relationship','Calls','queue','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Inbound','users','contacts'];(function(_0x22dea2,_0x36d4b7){var _0x4fcdbd=function(_0x1c69dc){while(--_0x1c69dc){_0x22dea2['push'](_0x22dea2['shift']());}};_0x4fcdbd(++_0x36d4b7);}(_0xeb13,0x1e9));var _0x3eb1=function(_0x375325,_0x57a850){_0x375325=_0x375325-0x0;var _0x228f57=_0xeb13[_0x375325];return _0x228f57;};'use strict';var _=require(_0x3eb1('0x0'));var rp=require(_0x3eb1('0x1'));var BPromise=require(_0x3eb1('0x2'));var md5=require(_0x3eb1('0x3'));var util=require(_0x3eb1('0x4'));var Redis=require(_0x3eb1('0x5'));var intUtil=require('./util');var config=require(_0x3eb1('0x6'));var logger=require(_0x3eb1('0x7'))('sugarcrm');config[_0x3eb1('0x8')]=_[_0x3eb1('0x9')](config[_0x3eb1('0x8')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x3eb1('0x8')]));var def={'method':_0x3eb1('0xa'),'json':!![]};function emit(_0x333895,_0x2cc856,_0x326be1){io['to'](_0x333895)['emit'](_0x2cc856,_0x326be1);}function getTicket(_0x3b6107,_0x3df1df,_0x5273b4,_0x14ae8d,_0xcb570b,_0x1f65b6,_0x2da15f,_0x2d4f22){logger[_0x3eb1('0xb')](_0x3eb1('0xc'));var _0x2ac52f=new Date();var _0x572097=[{'name':_0x3eb1('0xd'),'value':intUtil['getString'](_0x14ae8d[_0x3eb1('0xe')],_0xcb570b,'\x20')},{'name':_0x3eb1('0xf'),'value':_0x3df1df['id']},{'name':_0x3eb1('0x10'),'value':_0x3df1df['id']},{'name':_0x3eb1('0x11'),'value':intUtil['getString'](_0x14ae8d[_0x3eb1('0x12')],_0xcb570b,'\x0a')},{'name':_0x3eb1('0x13'),'value':_0x2ac52f['toISOString']()[_0x3eb1('0x14')](0x0,0x13)['replace']('T','\x20')},{'name':_0x3eb1('0x15'),'value':'0'},{'name':_0x3eb1('0x16'),'value':'15'},{'name':_0x3eb1('0x17'),'value':_0x5273b4['id']},{'name':_0x3eb1('0x18'),'value':'Contacts'},{'name':'parent_name','value':_0x5273b4['name']},{'name':_0x3eb1('0x19'),'value':_0x2d4f22}];if(_0x1f65b6['length']){_[_0x3eb1('0x1a')](_0x1f65b6,function(_0x3ff2ed){if(_0xcb570b[_0x3ff2ed[_0x3eb1('0x1b')]]){_0x572097[_0x3eb1('0x1c')]({'name':_0x3ff2ed[_0x3eb1('0x1d')],'value':_0xcb570b[_0x3ff2ed[_0x3eb1('0x1b')]]});}});}return request({'form':{'method':_0x3eb1('0x1e'),'input_type':_0x3eb1('0x1f'),'response_type':_0x3eb1('0x1f'),'rest_data':JSON[_0x3eb1('0x20')]({'session':_0x2da15f['id'],'module_name':'Calls','name_value_list':_0x572097})}});}function getAuth(_0x49a81e){return util[_0x3eb1('0x21')](_0x3eb1('0x22'),new Buffer(_0x49a81e['apiKey']+':X')['toString'](_0x3eb1('0x23')));}function getServerInfo(_0xe08385){return request({'form':{'method':'get_server_info','input_type':'JSON','response_type':_0x3eb1('0x1f'),'rest_data':JSON[_0x3eb1('0x20')]({'session':_0xe08385['id']})}});}function getUser(_0xc0c606,_0x12420d,_0x266907){if(!_['isNil'](_0x12420d)){logger[_0x3eb1('0xb')](_0x3eb1('0x24'),_0x12420d);return request({'form':{'method':_0x3eb1('0x25'),'input_type':_0x3eb1('0x1f'),'response_type':'JSON','rest_data':JSON[_0x3eb1('0x20')]({'session':_0x266907['id'],'module_name':_0x3eb1('0x26'),'query':util[_0x3eb1('0x21')](_0x3eb1('0x27'),_0x12420d),'order_by':'','offset':'0','select_fields':['id',_0x3eb1('0xd'),_0x3eb1('0x28')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x3eb1('0x29')](function(_0x54ff3c){if(_0x54ff3c['entry_list'][_0x3eb1('0x2a')]){var _0xa58e7e=_[_0x3eb1('0x2b')](_0x54ff3c[_0x3eb1('0x2c')],function(_0x23b303){return _0x23b303['name_value_list'][_0x3eb1('0x28')][_0x3eb1('0x2d')]===_0x12420d;});if(_0xa58e7e){logger[_0x3eb1('0xb')](_0x3eb1('0x2e'));return BPromise[_0x3eb1('0x2f')]({'id':_0xa58e7e[_0x3eb1('0x30')]['id'][_0x3eb1('0x2d')],'name':_0xa58e7e[_0x3eb1('0x30')][_0x3eb1('0xd')]['value']});}}logger[_0x3eb1('0xb')](_0x3eb1('0x31'));return BPromise['resolve']({'id':_0x266907[_0x3eb1('0x30')][_0x3eb1('0x32')][_0x3eb1('0x2d')],'name':_0x266907[_0x3eb1('0x30')][_0x3eb1('0x28')][_0x3eb1('0x2d')]});});}else{logger[_0x3eb1('0xb')](_0x3eb1('0x33'));return BPromise[_0x3eb1('0x2f')]({'id':_0x266907[_0x3eb1('0x30')][_0x3eb1('0x32')][_0x3eb1('0x2d')],'name':_0x266907[_0x3eb1('0x30')][_0x3eb1('0x28')][_0x3eb1('0x2d')]});}}function getEndUser(_0x5d7b30,_0x82bada,_0x127911,_0x21a213){logger[_0x3eb1('0xb')]('Searching\x20enduser\x20with\x20phone',_0x127911);return request({'form':{'method':_0x3eb1('0x25'),'input_type':_0x3eb1('0x1f'),'response_type':_0x3eb1('0x1f'),'rest_data':JSON[_0x3eb1('0x20')]({'session':_0x21a213['id'],'module_name':_0x3eb1('0x34'),'query':util['format'](_0x3eb1('0x35'),_0x127911),'order_by':'','offset':'0','select_fields':['id',_0x3eb1('0xd'),'phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0xb008ba){if(_0xb008ba[_0x3eb1('0x2c')][_0x3eb1('0x2a')]){var _0x40a678=_[_0x3eb1('0x2b')](_0xb008ba[_0x3eb1('0x2c')],function(_0x164eea){return _0x164eea[_0x3eb1('0x30')][_0x3eb1('0x36')][_0x3eb1('0x2d')]===_0x127911;});if(_0x40a678){logger[_0x3eb1('0xb')]('Enduser\x20found!');return BPromise['resolve']({'id':_0x40a678[_0x3eb1('0x30')]['id']['value'],'name':_0x40a678[_0x3eb1('0x30')][_0x3eb1('0xd')][_0x3eb1('0x2d')],'phone':_0x40a678[_0x3eb1('0x30')][_0x3eb1('0x36')][_0x3eb1('0x2d')]});}}else{logger['info'](_0x3eb1('0x37'));return request({'form':{'method':'set_entry','input_type':_0x3eb1('0x1f'),'response_type':_0x3eb1('0x1f'),'rest_data':JSON[_0x3eb1('0x20')]({'session':_0x21a213['id'],'module_name':_0x3eb1('0x34'),'name_value_list':[{'name':_0x3eb1('0x38'),'value':_0x82bada!==_0x3eb1('0x39')?_0x82bada:util[_0x3eb1('0x21')]('Caller\x20-\x20%s',_0x127911)},{'name':'phone_home','value':_0x127911}]})}})['then'](function(_0x5ed6f3){logger[_0x3eb1('0xb')](_0x3eb1('0x3a'));return BPromise['resolve']({'id':_0x5ed6f3['id'],'name':_0x5ed6f3['entry_list'][_0x3eb1('0x38')]['value'],'phone':_0x5ed6f3[_0x3eb1('0x2c')][_0x3eb1('0x36')]['value']});});}});}function request(_0x16c18b){logger[_0x3eb1('0x3b')]('[HTTP]',JSON[_0x3eb1('0x20')](_0x16c18b));return rp(_['merge'](def,_0x16c18b));}function getTags(_0x3811e2,_0x4d7c78){var _0xefdbd1=[];if(_0x3811e2&&_0x3811e2[_0x3eb1('0x2a')]>0x0){_0xefdbd1=_['map'](_0x3811e2,_0x4d7c78);}return _0xefdbd1;}function getCustomFields(_0x36352c,_0x184843){var _0x3a3d6e=[];var _0x204ba1={'custom_fields':[]};if(_0x36352c[_0x3eb1('0x2a')]>0x0){_[_0x3eb1('0x1a')](_0x36352c,function(_0x44494d){if(_0x44494d[_0x3eb1('0x3c')]==='string'&&_0x44494d['nameField']&&!_0x44494d[_0x3eb1('0x3d')]){_0x204ba1[_0x44494d[_0x3eb1('0x3e')][_0x3eb1('0x3f')]()]=_0x44494d[_0x3eb1('0x40')][_0x3eb1('0x41')]();}else if(_0x44494d[_0x3eb1('0x3c')]==='string'&&_0x44494d[_0x3eb1('0x1d')]&&_0x44494d['customField']){_0x204ba1[_0x3eb1('0x42')]['push']({'id':_0x44494d[_0x3eb1('0x1d')],'value':_0x44494d[_0x3eb1('0x40')]['toString']()});}else if(_0x44494d[_0x3eb1('0x3c')]===_0x3eb1('0x43')&&_0x44494d['variableName']&&_0x44494d[_0x3eb1('0x1d')]&&_0x44494d['customField']){_0x184843[_0x44494d[_0x3eb1('0x1b')]]&&_0x204ba1['custom_fields'][_0x3eb1('0x1c')]({'id':_0x44494d[_0x3eb1('0x1d')],'value':_0x184843[_0x44494d[_0x3eb1('0x1b')]][_0x3eb1('0x41')]()});}else if(_0x44494d[_0x3eb1('0x3c')]===_0x3eb1('0x44')&&_0x44494d[_0x3eb1('0x45')]&&_0x44494d[_0x3eb1('0x45')][_0x3eb1('0xd')]&&_0x44494d[_0x3eb1('0x1d')]&&_0x44494d[_0x3eb1('0x3d')]){_0x184843[_0x44494d[_0x3eb1('0x45')][_0x3eb1('0xd')][_0x3eb1('0x3f')]()]&&_0x204ba1['custom_fields'][_0x3eb1('0x1c')]({'id':_0x44494d['idField'],'value':_0x184843[_0x44494d[_0x3eb1('0x45')][_0x3eb1('0xd')][_0x3eb1('0x3f')]()]['toString']()});}});}return _0x204ba1;}function getConnection(_0x37de90){return request({'method':_0x3eb1('0xa'),'form':{'method':_0x3eb1('0x46'),'input_type':'JSON','response_type':_0x3eb1('0x1f'),'rest_data':JSON[_0x3eb1('0x20')]({'user_auth':{'user_name':_0x37de90[_0x3eb1('0x47')],'password':_0x37de90[_0x3eb1('0x48')],'encryption':'PLAIN'},'application':_0x3eb1('0x49')})}})[_0x3eb1('0x29')](function(_0x384cc9){var _0x597466=_0x384cc9;if(_0x597466['id']){def[_0x3eb1('0x4a')]=_0x597466['id'];return BPromise[_0x3eb1('0x2f')](_0x597466);}else{throw new Error(util[_0x3eb1('0x21')]('Account\x20%d\x20is\x20not\x20valid',_0x37de90['id']));}});}function setRelationship(_0x59ba95,_0x27d262,_0x1dfa05,_0x241757){return request({'form':{'method':_0x3eb1('0x4b'),'input_type':'JSON','response_type':_0x3eb1('0x1f'),'rest_data':JSON[_0x3eb1('0x20')]({'session':_0x59ba95['id'],'module_name':_0x3eb1('0x4c'),'module_id':_0x1dfa05['id'],'link_field_name':_0x241757,'related_ids':[_0x27d262['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x3eb1('0x4d')]=function(_0x5c0cf9,_0x4a0745,_0x1732a9,_0x54eb73,_0x456fb5,_0x4a83c4){var _0x7368fe,_0x22dca8,_0x52280b,_0x3b246e;_0x4a83c4[_0x3eb1('0x4e')]=intUtil[_0x3eb1('0x4f')](_0x4a83c4[_0x3eb1('0x4e')]);_0x4a83c4[_0x3eb1('0x50')]=intUtil[_0x3eb1('0x4f')](_0x4a83c4[_0x3eb1('0x50')]);def[_0x3eb1('0x51')]=util['format'](_0x3eb1('0x52'),_0x4a83c4[_0x3eb1('0x4e')]);if(_0x456fb5&&_0x456fb5[_0x3eb1('0x53')]){logger['info'](_0x3eb1('0x54'),_0x3eb1('0x55'));_0x4a0745[_0x3eb1('0x56')]=util[_0x3eb1('0x21')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a83c4['serverUrl'],_0x4a0745[_0x3eb1('0x57')],md5(_0x4a0745[_0x3eb1('0x57')]));}else{_0x4a0745[_0x3eb1('0x56')]='';}return getConnection(_0x4a83c4)[_0x3eb1('0x29')](function(_0x142b2f){_0x3b246e=_0x142b2f;return getUser(_0x4a83c4,_0x54eb73['name'],_0x3b246e);})[_0x3eb1('0x29')](function(_0x44be35){_0x7368fe=_0x44be35;logger['info'](_0x3eb1('0x58'),_0x7368fe['id']);return getEndUser(_0x4a83c4,_0x4a0745[_0x3eb1('0x59')],_0x4a0745[_0x3eb1('0x5a')],_0x3b246e);})[_0x3eb1('0x29')](function(_0x3e2c6d){_0x22dca8=_0x3e2c6d;logger[_0x3eb1('0xb')](_0x3eb1('0x5b'),_0x22dca8['id']);return getTicket(_0x4a83c4,_0x7368fe,_0x22dca8,_0x1732a9,_0x4a0745,_0x1732a9[_0x3eb1('0x5c')],_0x3b246e,_0x3eb1('0x5d'));})[_0x3eb1('0x29')](function(_0x2c85cd){_0x52280b=_0x2c85cd;logger[_0x3eb1('0xb')]('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x52280b['id']);return setRelationship(_0x3b246e,_0x7368fe,_0x52280b,_0x3eb1('0x5e'));})['then'](function(){return setRelationship(_0x3b246e,_0x22dca8,_0x52280b,_0x3eb1('0x5f'));})[_0x3eb1('0x29')](function(){return getServerInfo(_0x3b246e);})[_0x3eb1('0x29')](function(_0xae0535){var _0x137c8b=parseInt(_0xae0535['version'][_0x3eb1('0x60')](0x0));var _0x33e140=util[_0x3eb1('0x21')](_0x3eb1('0x61'),_0x4a83c4['remoteUri'],_0x52280b['id']);if(_0x137c8b>0x6){_0x33e140=util[_0x3eb1('0x21')](_0x3eb1('0x62'),_0x4a83c4['remoteUri'],_0x52280b['id']);}logger['info'](_0x3eb1('0x54'),_0x3eb1('0x63'));emit(util[_0x3eb1('0x21')](_0x3eb1('0x64'),_0x54eb73[_0x3eb1('0xd')]),_0x3eb1('0x65'),{'uri':_0x33e140});})[_0x3eb1('0x66')](function(_0x2963ab){logger['error'](_0x3eb1('0x54'),JSON['stringify'](_0x2963ab));});};exports[_0x3eb1('0x67')]=function(_0x38ae11,_0x56d89a,_0x430b90,_0x33bf23,_0x1bd4b4,_0x2ceca0,_0x6b310c){var _0x586ffd,_0x1f2178,_0x2a965d,_0x357fb1;_0x2ceca0[_0x3eb1('0x4e')]=intUtil[_0x3eb1('0x4f')](_0x2ceca0['remoteUri']);_0x2ceca0[_0x3eb1('0x50')]=intUtil['stripTrailingSlash'](_0x2ceca0['serverUrl']);def[_0x3eb1('0x51')]=util[_0x3eb1('0x21')](_0x3eb1('0x52'),_0x2ceca0[_0x3eb1('0x4e')]);if(_0x6b310c&&_0x6b310c[_0x3eb1('0x68')]&&_0x6b310c[_0x3eb1('0x68')]!=='none'){logger[_0x3eb1('0xb')]('[OUTBOUND]',_0x3eb1('0x55'));_0x56d89a[_0x3eb1('0x56')]=util[_0x3eb1('0x21')](_0x3eb1('0x69'),_0x2ceca0['serverUrl'],_0x56d89a[_0x3eb1('0x57')],md5(_0x56d89a[_0x3eb1('0x57')]));}return getConnection(_0x2ceca0)['then'](function(_0x2b2ff5){_0x357fb1=_0x2b2ff5;return getUser(_0x2ceca0,_0x33bf23[_0x3eb1('0xd')],_0x357fb1);})[_0x3eb1('0x29')](function(_0x10e3d2){_0x586ffd=_0x10e3d2;logger[_0x3eb1('0xb')](_0x3eb1('0x58'),_0x586ffd['id']);return getEndUser(_0x2ceca0,_0x56d89a[_0x3eb1('0x6a')],_0x56d89a[_0x3eb1('0x6b')],_0x357fb1);})[_0x3eb1('0x29')](function(_0x5abd3c){_0x1f2178=_0x5abd3c;logger[_0x3eb1('0xb')](_0x3eb1('0x5b'),_0x1f2178['id']);return getTicket(_0x2ceca0,_0x586ffd,_0x1f2178,_0x430b90,_0x56d89a,_0x430b90['Fields'],_0x357fb1,_0x3eb1('0x6c'));})[_0x3eb1('0x29')](function(_0x3015ed){_0x2a965d=_0x3015ed;logger[_0x3eb1('0xb')]('Ticket\x20created!');logger['info'](_0x3eb1('0x6d'),_0x2a965d['id']);return setRelationship(_0x357fb1,_0x586ffd,_0x2a965d,_0x3eb1('0x5e'));})[_0x3eb1('0x29')](function(){return setRelationship(_0x357fb1,_0x1f2178,_0x2a965d,_0x3eb1('0x5f'));})[_0x3eb1('0x29')](function(){return getServerInfo(_0x357fb1);})[_0x3eb1('0x29')](function(_0x1d0cb0){var _0x4b86ed=parseInt(_0x1d0cb0[_0x3eb1('0x6e')][_0x3eb1('0x60')](0x0));var _0x1525ae=util[_0x3eb1('0x21')](_0x3eb1('0x61'),_0x2ceca0['remoteUri'],_0x2a965d['id']);if(_0x4b86ed>0x6){_0x1525ae=util[_0x3eb1('0x21')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x2ceca0[_0x3eb1('0x4e')],_0x2a965d['id']);}logger[_0x3eb1('0xb')](_0x3eb1('0x6f'),_0x3eb1('0x63'));emit(util[_0x3eb1('0x21')](_0x3eb1('0x64'),_0x33bf23[_0x3eb1('0xd')]),'trigger:browser:url',{'uri':_0x1525ae});})['catch'](function(_0x5ed2a6){logger[_0x3eb1('0x70')](_0x3eb1('0x6f'),JSON[_0x3eb1('0x20')](_0x5ed2a6));});};exports[_0x3eb1('0x71')]=function(_0x472f67,_0x2b63b3,_0x26e5f6,_0x380bd5,_0x30cd02,_0xf8e27b){var _0x254469,_0x3608d1,_0x409bc7,_0x3dc2f;_0xf8e27b[_0x3eb1('0x4e')]=intUtil[_0x3eb1('0x4f')](_0xf8e27b[_0x3eb1('0x4e')]);_0xf8e27b[_0x3eb1('0x50')]=intUtil[_0x3eb1('0x4f')](_0xf8e27b['serverUrl']);def[_0x3eb1('0x51')]=util['format'](_0x3eb1('0x52'),_0xf8e27b[_0x3eb1('0x4e')]);if(_0x30cd02&&_0x30cd02[_0x3eb1('0x53')]){logger['info']('['+_0x2b63b3[_0x3eb1('0x72')][_0x3eb1('0x73')]()+']','Recording\x20is\x20enabled!');_0x2b63b3[_0x3eb1('0x56')]=util[_0x3eb1('0x21')](_0x3eb1('0x69'),_0xf8e27b[_0x3eb1('0x50')],_0x2b63b3['uniqueid'],md5(_0x2b63b3[_0x3eb1('0x57')]));}else{_0x2b63b3[_0x3eb1('0x56')]='';}return getConnection(_0xf8e27b)[_0x3eb1('0x29')](function(_0xc075b7){_0x3dc2f=_0xc075b7;if(!_[_0x3eb1('0x74')](_0x380bd5)){return getUser(_0xf8e27b,_0x380bd5[_0x3eb1('0xd')],_0x3dc2f);}else{return getUser(_0xf8e27b,null,_0x3dc2f);}})[_0x3eb1('0x29')](function(_0x361a9f){_0x254469=_0x361a9f;logger['info'](_0x3eb1('0x58'),_0x254469['id']);return getEndUser(_0xf8e27b,_0x2b63b3['calleridname'],_0x2b63b3[_0x3eb1('0x5a')],_0x3dc2f);})['then'](function(_0x596372){_0x3608d1=_0x596372;logger[_0x3eb1('0xb')](_0x3eb1('0x5b'),_0x3608d1['id']);return getTicket(_0xf8e27b,_0x254469,_0x3608d1,_0x26e5f6,_0x2b63b3,_0x26e5f6[_0x3eb1('0x5c')],_0x3dc2f,_0x3eb1('0x5d'));})[_0x3eb1('0x29')](function(_0x2daa7f){_0x409bc7=_0x2daa7f;logger[_0x3eb1('0xb')]('Ticket\x20created!');logger['info'](_0x3eb1('0x6d'),_0x409bc7['id']);return setRelationship(_0x3dc2f,_0x254469,_0x409bc7,'users');})[_0x3eb1('0x29')](function(){return setRelationship(_0x3dc2f,_0x3608d1,_0x409bc7,'contacts');})[_0x3eb1('0x29')](function(){return getServerInfo(_0x3dc2f);})[_0x3eb1('0x66')](function(_0x3be52a){logger['error']('['+_0x2b63b3[_0x3eb1('0x72')][_0x3eb1('0x73')]()+']',JSON[_0x3eb1('0x20')](_0x3be52a));});};
\ No newline at end of file
+var _0xe4df=['Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','catch','[OUTBOUND]','unmanaged','lastevent','toUpperCase','Recording\x20is\x20enabled!','calleridnum','Inbound','request-promise','bluebird','util','ioredis','./util','../../../../config/logger','sugarcrm','redis','defaults','localhost','POST','Creating\x20new\x20ticket...','name','getString','Subjects','assigned_user_id','description','Descriptions','slice','replace','duration_hours','parent_type','Contacts','parent_name','direction','length','variableName','push','idField','set_entry','JSON','stringify','Calls','format','toString','base64','isNil','info','Getting\x20agent\x20with\x20name','get_entry_list','Employees','user_name','then','value','Agent\x20found!','resolve','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','entry_list','find','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','map','forEach','type','string','nameField','customField','toLowerCase','content','custom_fields','variable','customVariable','Variable','username','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','stripTrailingSlash','serverUrl','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','recordingURL','The\x20User\x20ID\x20is:','calleridname','Ticket\x20created!','users','contacts','version','trigger:browser:url','error','uri','recordingFormat','none','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Fields','The\x20Ticket\x20ID\x20is:','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'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0xe4df,0xf6));var _0xfe4d=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xe4df[_0x1facfa];return _0x9ec701;};'use strict';var _=require('lodash');var rp=require(_0xfe4d('0x0'));var BPromise=require(_0xfe4d('0x1'));var md5=require('md5');var util=require(_0xfe4d('0x2'));var Redis=require(_0xfe4d('0x3'));var intUtil=require(_0xfe4d('0x4'));var config=require('../../../../config/environment');var logger=require(_0xfe4d('0x5'))(_0xfe4d('0x6'));config[_0xfe4d('0x7')]=_[_0xfe4d('0x8')](config[_0xfe4d('0x7')],{'host':_0xfe4d('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var def={'method':_0xfe4d('0xa'),'json':!![]};function emit(_0x333cb6,_0x308421,_0x1c9e0c){io['to'](_0x333cb6)['emit'](_0x308421,_0x1c9e0c);}function getTicket(_0x1db454,_0x4fadbd,_0x5c7823,_0x3b79f5,_0x443fb9,_0x31fbde,_0xa0885b,_0x20372e){logger['info'](_0xfe4d('0xb'));var _0x7579dd=new Date();var _0xc4eb6f=[{'name':_0xfe4d('0xc'),'value':intUtil[_0xfe4d('0xd')](_0x3b79f5[_0xfe4d('0xe')],_0x443fb9,'\x20')},{'name':_0xfe4d('0xf'),'value':_0x4fadbd['id']},{'name':'created_by','value':_0x4fadbd['id']},{'name':_0xfe4d('0x10'),'value':intUtil[_0xfe4d('0xd')](_0x3b79f5[_0xfe4d('0x11')],_0x443fb9,'\x0a')},{'name':'date_start','value':_0x7579dd['toISOString']()[_0xfe4d('0x12')](0x0,0x13)[_0xfe4d('0x13')]('T','\x20')},{'name':_0xfe4d('0x14'),'value':'0'},{'name':'duration_minutes','value':'15'},{'name':'parent_id','value':_0x5c7823['id']},{'name':_0xfe4d('0x15'),'value':_0xfe4d('0x16')},{'name':_0xfe4d('0x17'),'value':_0x5c7823[_0xfe4d('0xc')]},{'name':_0xfe4d('0x18'),'value':_0x20372e}];if(_0x31fbde[_0xfe4d('0x19')]){_['forEach'](_0x31fbde,function(_0x1ab3bc){if(_0x443fb9[_0x1ab3bc[_0xfe4d('0x1a')]]){_0xc4eb6f[_0xfe4d('0x1b')]({'name':_0x1ab3bc[_0xfe4d('0x1c')],'value':_0x443fb9[_0x1ab3bc[_0xfe4d('0x1a')]]});}});}return request({'form':{'method':_0xfe4d('0x1d'),'input_type':'JSON','response_type':_0xfe4d('0x1e'),'rest_data':JSON[_0xfe4d('0x1f')]({'session':_0xa0885b['id'],'module_name':_0xfe4d('0x20'),'name_value_list':_0xc4eb6f})}});}function getAuth(_0x308d42){return util[_0xfe4d('0x21')]('Basic\x20%s',new Buffer(_0x308d42['apiKey']+':X')[_0xfe4d('0x22')](_0xfe4d('0x23')));}function getServerInfo(_0x10152e){return request({'form':{'method':'get_server_info','input_type':_0xfe4d('0x1e'),'response_type':'JSON','rest_data':JSON[_0xfe4d('0x1f')]({'session':_0x10152e['id']})}});}function getUser(_0x1b3e4c,_0x2c90f5,_0x301184){if(!_[_0xfe4d('0x24')](_0x2c90f5)){logger[_0xfe4d('0x25')](_0xfe4d('0x26'),_0x2c90f5);return request({'form':{'method':_0xfe4d('0x27'),'input_type':_0xfe4d('0x1e'),'response_type':_0xfe4d('0x1e'),'rest_data':JSON[_0xfe4d('0x1f')]({'session':_0x301184['id'],'module_name':_0xfe4d('0x28'),'query':util['format']('INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200',_0x2c90f5),'order_by':'','offset':'0','select_fields':['id',_0xfe4d('0xc'),_0xfe4d('0x29')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xfe4d('0x2a')](function(_0x57a506){if(_0x57a506['entry_list'][_0xfe4d('0x19')]){var _0x3e567a=_['find'](_0x57a506['entry_list'],function(_0x3abad0){return _0x3abad0['name_value_list'][_0xfe4d('0x29')][_0xfe4d('0x2b')]===_0x2c90f5;});if(_0x3e567a){logger['info'](_0xfe4d('0x2c'));return BPromise[_0xfe4d('0x2d')]({'id':_0x3e567a[_0xfe4d('0x2e')]['id'][_0xfe4d('0x2b')],'name':_0x3e567a[_0xfe4d('0x2e')]['name']['value']});}}logger[_0xfe4d('0x25')](_0xfe4d('0x2f'));return BPromise[_0xfe4d('0x2d')]({'id':_0x301184[_0xfe4d('0x2e')][_0xfe4d('0x30')][_0xfe4d('0x2b')],'name':_0x301184[_0xfe4d('0x2e')]['user_name'][_0xfe4d('0x2b')]});});}else{logger[_0xfe4d('0x25')](_0xfe4d('0x31'));return BPromise[_0xfe4d('0x2d')]({'id':_0x301184[_0xfe4d('0x2e')][_0xfe4d('0x30')][_0xfe4d('0x2b')],'name':_0x301184['name_value_list'][_0xfe4d('0x29')][_0xfe4d('0x2b')]});}}function getEndUser(_0x415f0d,_0x5e1ce7,_0x18e2d1,_0x2bcc03){logger[_0xfe4d('0x25')](_0xfe4d('0x32'),_0x18e2d1);return request({'form':{'method':_0xfe4d('0x27'),'input_type':_0xfe4d('0x1e'),'response_type':'JSON','rest_data':JSON[_0xfe4d('0x1f')]({'session':_0x2bcc03['id'],'module_name':_0xfe4d('0x16'),'query':util['format'](_0xfe4d('0x33'),_0x18e2d1),'order_by':'','offset':'0','select_fields':['id','name',_0xfe4d('0x34')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xfe4d('0x2a')](function(_0x37d316){if(_0x37d316[_0xfe4d('0x35')]['length']){var _0x22554c=_[_0xfe4d('0x36')](_0x37d316[_0xfe4d('0x35')],function(_0xa868c6){return _0xa868c6[_0xfe4d('0x2e')][_0xfe4d('0x34')][_0xfe4d('0x2b')]===_0x18e2d1;});if(_0x22554c){logger[_0xfe4d('0x25')](_0xfe4d('0x37'));return BPromise[_0xfe4d('0x2d')]({'id':_0x22554c[_0xfe4d('0x2e')]['id'][_0xfe4d('0x2b')],'name':_0x22554c['name_value_list'][_0xfe4d('0xc')]['value'],'phone':_0x22554c['name_value_list'][_0xfe4d('0x34')][_0xfe4d('0x2b')]});}}else{logger[_0xfe4d('0x25')](_0xfe4d('0x38'));return request({'form':{'method':'set_entry','input_type':_0xfe4d('0x1e'),'response_type':'JSON','rest_data':JSON[_0xfe4d('0x1f')]({'session':_0x2bcc03['id'],'module_name':_0xfe4d('0x16'),'name_value_list':[{'name':'first_name','value':_0x5e1ce7!==_0xfe4d('0x39')?_0x5e1ce7:util[_0xfe4d('0x21')](_0xfe4d('0x3a'),_0x18e2d1)},{'name':'phone_home','value':_0x18e2d1}]})}})[_0xfe4d('0x2a')](function(_0x4f8724){logger['info'](_0xfe4d('0x3b'));return BPromise[_0xfe4d('0x2d')]({'id':_0x4f8724['id'],'name':_0x4f8724['entry_list']['first_name'][_0xfe4d('0x2b')],'phone':_0x4f8724[_0xfe4d('0x35')]['phone_home'][_0xfe4d('0x2b')]});});}});}function request(_0x1a7aeb){logger[_0xfe4d('0x3c')](_0xfe4d('0x3d'),JSON[_0xfe4d('0x1f')](_0x1a7aeb));return rp(_['merge'](def,_0x1a7aeb));}function getTags(_0x44350c,_0x425c96){var _0x3b1473=[];if(_0x44350c&&_0x44350c['length']>0x0){_0x3b1473=_[_0xfe4d('0x3e')](_0x44350c,_0x425c96);}return _0x3b1473;}function getCustomFields(_0x114dd2,_0x370c13){var _0x308bcd=[];var _0x1b79ed={'custom_fields':[]};if(_0x114dd2[_0xfe4d('0x19')]>0x0){_[_0xfe4d('0x3f')](_0x114dd2,function(_0x25fa1d){if(_0x25fa1d[_0xfe4d('0x40')]===_0xfe4d('0x41')&&_0x25fa1d[_0xfe4d('0x42')]&&!_0x25fa1d[_0xfe4d('0x43')]){_0x1b79ed[_0x25fa1d[_0xfe4d('0x42')][_0xfe4d('0x44')]()]=_0x25fa1d[_0xfe4d('0x45')][_0xfe4d('0x22')]();}else if(_0x25fa1d['type']==='string'&&_0x25fa1d[_0xfe4d('0x1c')]&&_0x25fa1d[_0xfe4d('0x43')]){_0x1b79ed[_0xfe4d('0x46')]['push']({'id':_0x25fa1d[_0xfe4d('0x1c')],'value':_0x25fa1d[_0xfe4d('0x45')]['toString']()});}else if(_0x25fa1d[_0xfe4d('0x40')]===_0xfe4d('0x47')&&_0x25fa1d[_0xfe4d('0x1a')]&&_0x25fa1d['idField']&&_0x25fa1d[_0xfe4d('0x43')]){_0x370c13[_0x25fa1d[_0xfe4d('0x1a')]]&&_0x1b79ed[_0xfe4d('0x46')][_0xfe4d('0x1b')]({'id':_0x25fa1d['idField'],'value':_0x370c13[_0x25fa1d['variableName']][_0xfe4d('0x22')]()});}else if(_0x25fa1d['type']===_0xfe4d('0x48')&&_0x25fa1d[_0xfe4d('0x49')]&&_0x25fa1d[_0xfe4d('0x49')][_0xfe4d('0xc')]&&_0x25fa1d[_0xfe4d('0x1c')]&&_0x25fa1d['customField']){_0x370c13[_0x25fa1d['Variable'][_0xfe4d('0xc')][_0xfe4d('0x44')]()]&&_0x1b79ed['custom_fields'][_0xfe4d('0x1b')]({'id':_0x25fa1d[_0xfe4d('0x1c')],'value':_0x370c13[_0x25fa1d[_0xfe4d('0x49')][_0xfe4d('0xc')][_0xfe4d('0x44')]()]['toString']()});}});}return _0x1b79ed;}function getConnection(_0x3cda1b){return request({'method':_0xfe4d('0xa'),'form':{'method':'login','input_type':_0xfe4d('0x1e'),'response_type':_0xfe4d('0x1e'),'rest_data':JSON[_0xfe4d('0x1f')]({'user_auth':{'user_name':_0x3cda1b[_0xfe4d('0x4a')],'password':_0x3cda1b['password'],'encryption':'PLAIN'},'application':_0xfe4d('0x4b')})}})[_0xfe4d('0x2a')](function(_0x40b1ed){var _0x433ac7=_0x40b1ed;if(_0x433ac7['id']){def[_0xfe4d('0x4c')]=_0x433ac7['id'];return BPromise['resolve'](_0x433ac7);}else{throw new Error(util[_0xfe4d('0x21')](_0xfe4d('0x4d'),_0x3cda1b['id']));}});}function setRelationship(_0x462bfd,_0x2dc0a2,_0x581338,_0x4d2285){return request({'form':{'method':_0xfe4d('0x4e'),'input_type':_0xfe4d('0x1e'),'response_type':_0xfe4d('0x1e'),'rest_data':JSON[_0xfe4d('0x1f')]({'session':_0x462bfd['id'],'module_name':_0xfe4d('0x20'),'module_id':_0x581338['id'],'link_field_name':_0x4d2285,'related_ids':[_0x2dc0a2['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xfe4d('0x4f')]=function(_0x56f199,_0x362c2e,_0x3e6e04,_0xb98d3a,_0x5c2df3,_0x18f00c){var _0x3d40a7,_0x4d269c,_0x1e379d,_0x574395;_0x18f00c[_0xfe4d('0x50')]=intUtil[_0xfe4d('0x51')](_0x18f00c['remoteUri']);_0x18f00c[_0xfe4d('0x52')]=intUtil['stripTrailingSlash'](_0x18f00c['serverUrl']);def['uri']=util[_0xfe4d('0x21')](_0xfe4d('0x53'),_0x18f00c[_0xfe4d('0x50')]);if(_0x5c2df3&&_0x5c2df3[_0xfe4d('0x54')]){logger['info'](_0xfe4d('0x55'),'Recording\x20is\x20enabled!');_0x362c2e[_0xfe4d('0x56')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x18f00c['serverUrl'],_0x362c2e['uniqueid'],md5(_0x362c2e['uniqueid']));}else{_0x362c2e[_0xfe4d('0x56')]='';}return getConnection(_0x18f00c)[_0xfe4d('0x2a')](function(_0x59d68b){_0x574395=_0x59d68b;return getUser(_0x18f00c,_0xb98d3a[_0xfe4d('0xc')],_0x574395);})[_0xfe4d('0x2a')](function(_0x2033a0){_0x3d40a7=_0x2033a0;logger[_0xfe4d('0x25')](_0xfe4d('0x57'),_0x3d40a7['id']);return getEndUser(_0x18f00c,_0x362c2e[_0xfe4d('0x58')],_0x362c2e['calleridnum'],_0x574395);})[_0xfe4d('0x2a')](function(_0x54c5aa){_0x4d269c=_0x54c5aa;logger[_0xfe4d('0x25')]('The\x20Enduser\x20ID\x20is:',_0x4d269c['id']);return getTicket(_0x18f00c,_0x3d40a7,_0x4d269c,_0x3e6e04,_0x362c2e,_0x3e6e04['Fields'],_0x574395,'Inbound');})['then'](function(_0x53d185){_0x1e379d=_0x53d185;logger[_0xfe4d('0x25')](_0xfe4d('0x59'));logger[_0xfe4d('0x25')]('The\x20Ticket\x20ID\x20is:',_0x1e379d['id']);return setRelationship(_0x574395,_0x3d40a7,_0x1e379d,_0xfe4d('0x5a'));})[_0xfe4d('0x2a')](function(){return setRelationship(_0x574395,_0x4d269c,_0x1e379d,_0xfe4d('0x5b'));})[_0xfe4d('0x2a')](function(){return getServerInfo(_0x574395);})['then'](function(_0x22051b){var _0x55a8ae=parseInt(_0x22051b[_0xfe4d('0x5c')]['charAt'](0x0));var _0x24ad44=util[_0xfe4d('0x21')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x18f00c[_0xfe4d('0x50')],_0x1e379d['id']);if(_0x55a8ae>0x6){_0x24ad44=util['format']('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x18f00c[_0xfe4d('0x50')],_0x1e379d['id']);}logger['info'](_0xfe4d('0x55'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0xb98d3a['name']),_0xfe4d('0x5d'),{'uri':_0x24ad44});})['catch'](function(_0x147e98){logger[_0xfe4d('0x5e')](_0xfe4d('0x55'),JSON[_0xfe4d('0x1f')](_0x147e98));});};exports['outbound']=function(_0x256fed,_0x44be5a,_0x58c63e,_0x3261d2,_0x4a78b8,_0x152be8,_0x1b048d){var _0x49cf2a,_0x583559,_0xf22bee,_0x557e16;_0x152be8[_0xfe4d('0x50')]=intUtil[_0xfe4d('0x51')](_0x152be8[_0xfe4d('0x50')]);_0x152be8[_0xfe4d('0x52')]=intUtil[_0xfe4d('0x51')](_0x152be8[_0xfe4d('0x52')]);def[_0xfe4d('0x5f')]=util['format'](_0xfe4d('0x53'),_0x152be8[_0xfe4d('0x50')]);if(_0x1b048d&&_0x1b048d[_0xfe4d('0x60')]&&_0x1b048d[_0xfe4d('0x60')]!==_0xfe4d('0x61')){logger[_0xfe4d('0x25')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x44be5a[_0xfe4d('0x56')]=util[_0xfe4d('0x21')](_0xfe4d('0x62'),_0x152be8[_0xfe4d('0x52')],_0x44be5a[_0xfe4d('0x63')],md5(_0x44be5a[_0xfe4d('0x63')]));}return getConnection(_0x152be8)[_0xfe4d('0x2a')](function(_0x3b3515){_0x557e16=_0x3b3515;return getUser(_0x152be8,_0x3261d2[_0xfe4d('0xc')],_0x557e16);})[_0xfe4d('0x2a')](function(_0x7abe92){_0x49cf2a=_0x7abe92;logger[_0xfe4d('0x25')](_0xfe4d('0x57'),_0x49cf2a['id']);return getEndUser(_0x152be8,_0x44be5a[_0xfe4d('0x64')],_0x44be5a[_0xfe4d('0x65')],_0x557e16);})[_0xfe4d('0x2a')](function(_0x4e6cbd){_0x583559=_0x4e6cbd;logger[_0xfe4d('0x25')](_0xfe4d('0x66'),_0x583559['id']);return getTicket(_0x152be8,_0x49cf2a,_0x583559,_0x58c63e,_0x44be5a,_0x58c63e[_0xfe4d('0x67')],_0x557e16,'Outbound');})['then'](function(_0x7ee17b){_0xf22bee=_0x7ee17b;logger[_0xfe4d('0x25')]('Ticket\x20created!');logger[_0xfe4d('0x25')](_0xfe4d('0x68'),_0xf22bee['id']);return setRelationship(_0x557e16,_0x49cf2a,_0xf22bee,_0xfe4d('0x5a'));})[_0xfe4d('0x2a')](function(){return setRelationship(_0x557e16,_0x583559,_0xf22bee,_0xfe4d('0x5b'));})[_0xfe4d('0x2a')](function(){return getServerInfo(_0x557e16);})[_0xfe4d('0x2a')](function(_0x3b924d){var _0x4764a7=parseInt(_0x3b924d[_0xfe4d('0x5c')][_0xfe4d('0x69')](0x0));var _0x351101=util['format'](_0xfe4d('0x6a'),_0x152be8[_0xfe4d('0x50')],_0xf22bee['id']);if(_0x4764a7>0x6){_0x351101=util[_0xfe4d('0x21')](_0xfe4d('0x6b'),_0x152be8[_0xfe4d('0x50')],_0xf22bee['id']);}logger[_0xfe4d('0x25')]('[OUTBOUND]',_0xfe4d('0x6c'));emit(util[_0xfe4d('0x21')](_0xfe4d('0x6d'),_0x3261d2[_0xfe4d('0xc')]),_0xfe4d('0x5d'),{'uri':_0x351101});})[_0xfe4d('0x6e')](function(_0x15f339){logger[_0xfe4d('0x5e')](_0xfe4d('0x6f'),JSON[_0xfe4d('0x1f')](_0x15f339));});};exports[_0xfe4d('0x70')]=function(_0x1a05ce,_0x2a0b5d,_0x459aef,_0x495474,_0x1a7430,_0x10a60a){var _0x4d4005,_0x2abb57,_0x3ebc9d,_0x1f1f4c;_0x10a60a[_0xfe4d('0x50')]=intUtil['stripTrailingSlash'](_0x10a60a['remoteUri']);_0x10a60a['serverUrl']=intUtil[_0xfe4d('0x51')](_0x10a60a[_0xfe4d('0x52')]);def[_0xfe4d('0x5f')]=util[_0xfe4d('0x21')]('%s/service/v4_1/rest.php',_0x10a60a['remoteUri']);if(_0x1a7430&&_0x1a7430[_0xfe4d('0x54')]){logger[_0xfe4d('0x25')]('['+_0x2a0b5d[_0xfe4d('0x71')][_0xfe4d('0x72')]()+']',_0xfe4d('0x73'));_0x2a0b5d[_0xfe4d('0x56')]=util[_0xfe4d('0x21')](_0xfe4d('0x62'),_0x10a60a[_0xfe4d('0x52')],_0x2a0b5d[_0xfe4d('0x63')],md5(_0x2a0b5d[_0xfe4d('0x63')]));}else{_0x2a0b5d[_0xfe4d('0x56')]='';}return getConnection(_0x10a60a)['then'](function(_0x1d4e1f){_0x1f1f4c=_0x1d4e1f;if(!_[_0xfe4d('0x24')](_0x495474)){return getUser(_0x10a60a,_0x495474['name'],_0x1f1f4c);}else{return getUser(_0x10a60a,null,_0x1f1f4c);}})[_0xfe4d('0x2a')](function(_0x3e28a1){_0x4d4005=_0x3e28a1;logger[_0xfe4d('0x25')](_0xfe4d('0x57'),_0x4d4005['id']);return getEndUser(_0x10a60a,_0x2a0b5d[_0xfe4d('0x58')],_0x2a0b5d[_0xfe4d('0x74')],_0x1f1f4c);})['then'](function(_0x78966d){_0x2abb57=_0x78966d;logger[_0xfe4d('0x25')](_0xfe4d('0x66'),_0x2abb57['id']);return getTicket(_0x10a60a,_0x4d4005,_0x2abb57,_0x459aef,_0x2a0b5d,_0x459aef[_0xfe4d('0x67')],_0x1f1f4c,_0xfe4d('0x75'));})[_0xfe4d('0x2a')](function(_0x569387){_0x3ebc9d=_0x569387;logger[_0xfe4d('0x25')]('Ticket\x20created!');logger[_0xfe4d('0x25')](_0xfe4d('0x68'),_0x3ebc9d['id']);return setRelationship(_0x1f1f4c,_0x4d4005,_0x3ebc9d,_0xfe4d('0x5a'));})[_0xfe4d('0x2a')](function(){return setRelationship(_0x1f1f4c,_0x2abb57,_0x3ebc9d,'contacts');})[_0xfe4d('0x2a')](function(){return getServerInfo(_0x1f1f4c);})[_0xfe4d('0x6e')](function(_0x2b1ce6){logger[_0xfe4d('0x5e')]('['+_0x2a0b5d[_0xfe4d('0x71')][_0xfe4d('0x72')]()+']',JSON[_0xfe4d('0x1f')](_0x2b1ce6));});};
\ No newline at end of file
index a81b5a2..6601938 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c5f=['toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','key','%s:\x20%s','keyContent','format','stripTrailingSlash','slice','substring','lastIndexOf','validateEmail','isNil','test','util','getString','length','sortBy','type','string','push','variable','variableName'];(function(_0x41a8ac,_0x2b697a){var _0xc0f825=function(_0x4bf6b7){while(--_0x4bf6b7){_0x41a8ac['push'](_0x41a8ac['shift']());}};_0xc0f825(++_0x2b697a);}(_0x8c5f,0x99));var _0xf8c5=function(_0x4cf228,_0x1dd1e0){_0x4cf228=_0x4cf228-0x0;var _0x29cbcb=_0x8c5f[_0x4cf228];return _0x29cbcb;};'use strict';var _=require('lodash');var util=require(_0xf8c5('0x0'));exports[_0xf8c5('0x1')]=function(_0xfe69f5,_0x4f1f6e,_0x16faf0){var _0x9b2528=[];if(_0xfe69f5[_0xf8c5('0x2')]>0x0){var _0x2c7502=_[_0xf8c5('0x3')](_0xfe69f5,['id']);for(var _0xaf7c9d=0x0;_0xaf7c9d<_0x2c7502[_0xf8c5('0x2')];_0xaf7c9d++){var _0x1547ad=_0x2c7502[_0xaf7c9d];if(_0x1547ad[_0xf8c5('0x4')]===_0xf8c5('0x5')){_0x9b2528[_0xf8c5('0x6')](_0x1547ad['content']);}else if(_0x1547ad[_0xf8c5('0x4')]===_0xf8c5('0x7')&&_0x1547ad[_0xf8c5('0x8')]){_0x4f1f6e[_0x1547ad['variableName']]&&_0x9b2528[_0xf8c5('0x6')](_0x4f1f6e[_0x1547ad[_0xf8c5('0x8')]][_0xf8c5('0x9')]());}else if(_0x1547ad['type']===_0xf8c5('0xa')&&_0x1547ad['Variable']&&_0x1547ad[_0xf8c5('0xb')][_0xf8c5('0xc')]){_0x4f1f6e[_0x1547ad[_0xf8c5('0xb')][_0xf8c5('0xc')]['toLowerCase']()]&&_0x9b2528['push'](_0x4f1f6e[_0x1547ad[_0xf8c5('0xb')][_0xf8c5('0xc')][_0xf8c5('0xd')]()][_0xf8c5('0x9')]());}else if(_0x1547ad['type']===_0xf8c5('0xe')){if(_0x1547ad[_0xf8c5('0xf')]==='string'&&_0x1547ad[_0xf8c5('0x10')]){_0x9b2528[_0xf8c5('0x6')](util['format'](_0xf8c5('0x11'),_0x1547ad[_0xf8c5('0x10')],_0x1547ad[_0xf8c5('0x12')]));}else if(_0x1547ad[_0xf8c5('0xf')]==='variable'&&_0x1547ad[_0xf8c5('0x8')]&&_0x1547ad['key']){_0x4f1f6e[_0x1547ad['variableName']]&&_0x9b2528[_0xf8c5('0x6')](util[_0xf8c5('0x13')](_0xf8c5('0x11'),_0x1547ad[_0xf8c5('0x10')],_0x4f1f6e[_0x1547ad['variableName']]));}else if(_0x1547ad[_0xf8c5('0xf')]===_0xf8c5('0xa')&&_0x1547ad['Variable']&&_0x1547ad[_0xf8c5('0xb')][_0xf8c5('0xc')]&&_0x1547ad[_0xf8c5('0x10')]){_0x4f1f6e[_0x1547ad[_0xf8c5('0xb')][_0xf8c5('0xc')][_0xf8c5('0xd')]()]&&_0x9b2528['push'](util[_0xf8c5('0x13')](_0xf8c5('0x11'),_0x1547ad[_0xf8c5('0x10')],_0x4f1f6e[_0x1547ad[_0xf8c5('0xb')][_0xf8c5('0xc')][_0xf8c5('0xd')]()]));}}}}return _0x9b2528['join'](_0x16faf0);};exports[_0xf8c5('0x14')]=function(_0xe175cd){var _0x284843=_0xe175cd[_0xf8c5('0x15')](-0x1);if(_0x284843==='/'){_0xe175cd=_0xe175cd[_0xf8c5('0x16')](0x0,_0xe175cd[_0xf8c5('0x17')](_0x284843));}return _0xe175cd;};exports[_0xf8c5('0x18')]=function(_0x4ae399){if(!_[_0xf8c5('0x19')](_0x4ae399)&&_0x4ae399!==''){var _0x6190a1=/^(([^<>()\[\]\\.,;:\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 _0x6190a1[_0xf8c5('0x1a')](String(_0x4ae399)['toLowerCase']());}else{return![];}};
\ No newline at end of file
+var _0xf76c=['%s:\x20%s','variable','format','join','substring','lastIndexOf','validateEmail','isNil','test','util','getString','sortBy','type','string','push','content','variableName','toString','customVariable','Variable','name','toLowerCase','keyType','key'];(function(_0x1afeb1,_0x4ef5e7){var _0x397155=function(_0x1c040b){while(--_0x1c040b){_0x1afeb1['push'](_0x1afeb1['shift']());}};_0x397155(++_0x4ef5e7);}(_0xf76c,0xe1));var _0xcf76=function(_0x48ede8,_0x58d2e4){_0x48ede8=_0x48ede8-0x0;var _0xc2aea5=_0xf76c[_0x48ede8];return _0xc2aea5;};'use strict';var _=require('lodash');var util=require(_0xcf76('0x0'));exports[_0xcf76('0x1')]=function(_0x44274f,_0x382f72,_0x5d0a68){var _0x10e353=[];if(_0x44274f['length']>0x0){var _0x5e5416=_[_0xcf76('0x2')](_0x44274f,['id']);for(var _0x17967f=0x0;_0x17967f<_0x5e5416['length'];_0x17967f++){var _0x89dea9=_0x5e5416[_0x17967f];if(_0x89dea9[_0xcf76('0x3')]===_0xcf76('0x4')){_0x10e353[_0xcf76('0x5')](_0x89dea9[_0xcf76('0x6')]);}else if(_0x89dea9['type']==='variable'&&_0x89dea9[_0xcf76('0x7')]){_0x382f72[_0x89dea9[_0xcf76('0x7')]]&&_0x10e353[_0xcf76('0x5')](_0x382f72[_0x89dea9['variableName']][_0xcf76('0x8')]());}else if(_0x89dea9[_0xcf76('0x3')]===_0xcf76('0x9')&&_0x89dea9[_0xcf76('0xa')]&&_0x89dea9[_0xcf76('0xa')][_0xcf76('0xb')]){_0x382f72[_0x89dea9[_0xcf76('0xa')][_0xcf76('0xb')]['toLowerCase']()]&&_0x10e353[_0xcf76('0x5')](_0x382f72[_0x89dea9[_0xcf76('0xa')][_0xcf76('0xb')][_0xcf76('0xc')]()][_0xcf76('0x8')]());}else if(_0x89dea9[_0xcf76('0x3')]==='keyValue'){if(_0x89dea9[_0xcf76('0xd')]===_0xcf76('0x4')&&_0x89dea9[_0xcf76('0xe')]){_0x10e353[_0xcf76('0x5')](util['format'](_0xcf76('0xf'),_0x89dea9['key'],_0x89dea9['keyContent']));}else if(_0x89dea9[_0xcf76('0xd')]===_0xcf76('0x10')&&_0x89dea9[_0xcf76('0x7')]&&_0x89dea9[_0xcf76('0xe')]){_0x382f72[_0x89dea9[_0xcf76('0x7')]]&&_0x10e353[_0xcf76('0x5')](util[_0xcf76('0x11')](_0xcf76('0xf'),_0x89dea9['key'],_0x382f72[_0x89dea9['variableName']]));}else if(_0x89dea9[_0xcf76('0xd')]==='customVariable'&&_0x89dea9[_0xcf76('0xa')]&&_0x89dea9[_0xcf76('0xa')][_0xcf76('0xb')]&&_0x89dea9[_0xcf76('0xe')]){_0x382f72[_0x89dea9[_0xcf76('0xa')]['name'][_0xcf76('0xc')]()]&&_0x10e353[_0xcf76('0x5')](util[_0xcf76('0x11')](_0xcf76('0xf'),_0x89dea9[_0xcf76('0xe')],_0x382f72[_0x89dea9[_0xcf76('0xa')]['name'][_0xcf76('0xc')]()]));}}}}return _0x10e353[_0xcf76('0x12')](_0x5d0a68);};exports['stripTrailingSlash']=function(_0x546766){var _0x5ee05b=_0x546766['slice'](-0x1);if(_0x5ee05b==='/'){_0x546766=_0x546766[_0xcf76('0x13')](0x0,_0x546766[_0xcf76('0x14')](_0x5ee05b));}return _0x546766;};exports[_0xcf76('0x15')]=function(_0x55ee66){if(!_[_0xcf76('0x16')](_0x55ee66)&&_0x55ee66!==''){var _0x277fd6=/^(([^<>()\[\]\\.,;:\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 _0x277fd6[_0xcf76('0x17')](String(_0x55ee66)[_0xcf76('0xc')]());}else{return![];}};
\ No newline at end of file
index 48863db..50487f6 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(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'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 _0x9c44=['stringify','validateEmail','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','length','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','getUser','admin','Searching\x20end\x20user\x20with\x20phone','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','login','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','stripTrailingSlash','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','recordingURL','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','The\x20Ticket\x20ID\x20is:','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridnum','lastevent','bluebird','md5','util','ioredis','./util','../../../../config/environment','redis','localhost','socket.io-emitter','emit','forEach','string','picklist','idField','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','getString','Subjects','POST','remoteUri','create','username','sessionName','then','resolve','result','format','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s'];(function(_0x26dbd9,_0x5e425f){var _0x236501=function(_0x599fc0){while(--_0x599fc0){_0x26dbd9['push'](_0x26dbd9['shift']());}};_0x236501(++_0x5e425f);}(_0x9c44,0x178));var _0x49c4=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x9c44[_0x4b369d];return _0x571a98;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var util=require(_0x49c4('0x2'));var Redis=require(_0x49c4('0x3'));var intUtil=require(_0x49c4('0x4'));var config=require(_0x49c4('0x5'));var logger=require('../../../../config/logger')('vTiger');config[_0x49c4('0x6')]=_['defaults'](config[_0x49c4('0x6')],{'host':_0x49c4('0x7'),'port':0x18eb});var io=require(_0x49c4('0x8'))(new Redis(config[_0x49c4('0x6')]));function emit(_0x436234,_0x511d53,_0x11c586){io['to'](_0x436234)[_0x49c4('0x9')](_0x511d53,_0x11c586);}function getCustomFields(_0x1d13fb,_0x4487ca){var _0x4c7d3a={};if(_0x1d13fb['length']>0x0){_[_0x49c4('0xa')](_0x1d13fb,function(_0x313e73){if(_['includes']([_0x49c4('0xb'),_0x49c4('0xc')],_0x313e73['type'])&&_0x313e73['idField']){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x313e73[_0x49c4('0xe')]['toString']();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x10')&&_0x313e73['variableName']&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x11')]]){_0x4c7d3a[_0x313e73[_0x49c4('0xd')]]=_0x4487ca[_0x313e73[_0x49c4('0x11')]][_0x49c4('0x12')]();}else if(_0x313e73[_0x49c4('0xf')]===_0x49c4('0x13')&&_0x313e73[_0x49c4('0x14')]&&_0x313e73['Variable'][_0x49c4('0x15')]&&_0x313e73[_0x49c4('0xd')]&&_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')][_0x49c4('0x16')]()]){_0x4c7d3a[_0x313e73['idField']]=_0x4487ca[_0x313e73[_0x49c4('0x14')][_0x49c4('0x15')]['toLowerCase']()]['toString']();}});}return _0x4c7d3a;}function createTicket(_0x3c782d,_0x2f82d5,_0x3addb2,_0x59f29b,_0x24856d,_0x50b151,_0x2cbd50){logger[_0x49c4('0x17')](_0x49c4('0x18'));var _0x291526=_[_0x49c4('0x19')]({'parent_id':'','assigned_user_id':_0x2f82d5['id'],'ticketpriorities':_0x49c4('0x1a'),'ticketstatus':_0x49c4('0x1b'),'ticket_title':intUtil[_0x49c4('0x1c')](_0x59f29b[_0x49c4('0x1d')],_0x24856d,'\x20'),'description':intUtil['getString'](_0x59f29b['Descriptions'],_0x24856d,'\x0a'),'contact_id':_0x3addb2['id']},getCustomFields(_0x50b151,_0x24856d));var _0x57f502={'method':_0x49c4('0x1e'),'uri':util['format']('%s/webservice.php',_0x3c782d[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x20'),'username':_0x3c782d[_0x49c4('0x21')],'sessionName':_0x2cbd50[_0x49c4('0x22')],'elementType':'HelpDesk','element':JSON['stringify'](_0x291526)},'json':!![]};return request(_0x57f502)[_0x49c4('0x23')](function(_0x9cb797){if(_0x9cb797['success']){return BPromise[_0x49c4('0x24')]({'id':_0x9cb797[_0x49c4('0x25')]['id']});}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x27'),JSON['stringify'](_0x9cb797['error'])));}})[_0x49c4('0x28')](function(_0x53c199){var _0x3800b7=_0x53c199[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'createTicket',_0x3800b7,JSON[_0x49c4('0x2c')](_0x53c199));});}function getUser(_0x2b2793,_0x46e04d,_0x4f28a2){if(intUtil[_0x49c4('0x2d')](_0x46e04d)){logger[_0x49c4('0x17')](_0x49c4('0x2e'),_0x46e04d);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2b2793[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x2b2793['username'],'sessionName':_0x4f28a2['sessionName'],'query':util[_0x49c4('0x26')](_0x49c4('0x31'),_0x46e04d)},'json':!![]})[_0x49c4('0x23')](function(_0x27e467){if(_0x27e467[_0x49c4('0x32')]&&_0x27e467['result'][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x34'));return BPromise[_0x49c4('0x24')]({'id':_0x27e467['result'][0x0]['id'],'email':_0x27e467['result'][0x0][_0x49c4('0x35')],'name':_0x27e467[_0x49c4('0x25')][0x0][_0x49c4('0x36')]+'\x20'+_0x27e467[_0x49c4('0x25')][_0x49c4('0x37')]});}else{logger['info'](_0x49c4('0x38'));return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2[_0x49c4('0x39')],'email':_0x2b2793['username'],'name':'admin'});}})[_0x49c4('0x28')](function(_0x1991e9){var _0x3bec0a=_0x1991e9[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x3a'),_0x3bec0a,JSON[_0x49c4('0x2c')](_0x1991e9));});}else{logger[_0x49c4('0x17')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x49c4('0x24')]({'id':_0x4f28a2['userId'],'email':_0x2b2793[_0x49c4('0x21')],'name':_0x49c4('0x3b')})[_0x49c4('0x28')](function(_0x1c2830){var _0x4ed4f8=_0x1c2830[_0x49c4('0x29')]||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),'getUser',_0x4ed4f8,JSON[_0x49c4('0x2c')](_0x1c2830));});}}function getEndUser(_0x21d8c7,_0x178987,_0x5e5366,_0x1ba7a0){logger[_0x49c4('0x17')](_0x49c4('0x3c'),_0x5e5366);return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7[_0x49c4('0x1f')]),'qs':{'operation':'query','username':_0x21d8c7[_0x49c4('0x21')],'sessionName':_0x1ba7a0[_0x49c4('0x22')],'query':util[_0x49c4('0x26')](_0x49c4('0x3d'),_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366,_0x5e5366)},'json':!![]})[_0x49c4('0x23')](function(_0x29dd5d){if(_0x29dd5d[_0x49c4('0x32')]&&_0x29dd5d[_0x49c4('0x25')][_0x49c4('0x33')]){logger[_0x49c4('0x17')](_0x49c4('0x3e'));return BPromise[_0x49c4('0x24')]({'id':_0x29dd5d[_0x49c4('0x25')][0x0]['id'],'name':_0x29dd5d['result'][0x0][_0x49c4('0x3f')]+'\x20'+_0x29dd5d['result'][0x0][_0x49c4('0x40')],'phone':_0x5e5366});}else{logger[_0x49c4('0x17')](_0x49c4('0x41'));return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x21d8c7['remoteUri']),'form':{'operation':'create','sessionName':_0x1ba7a0[_0x49c4('0x22')],'elementType':_0x49c4('0x42'),'element':JSON[_0x49c4('0x2c')]({'lastname':_0x178987,'phone':_0x5e5366,'assigned_user_id':'\x20'})},'json':!![]})[_0x49c4('0x23')](function(_0x490823){logger[_0x49c4('0x17')](_0x49c4('0x43'));return BPromise[_0x49c4('0x24')]({'id':_0x490823[_0x49c4('0x25')]['id'],'name':_0x490823[_0x49c4('0x25')][_0x49c4('0x40')],'phone':_0x490823[_0x49c4('0x25')][_0x49c4('0x44')]});})[_0x49c4('0x28')](function(_0x5640d3){var _0x2ad771=_0x5640d3['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x45'),_0x2ad771,JSON[_0x49c4('0x2c')](_0x5640d3));});}});}function getConnection(_0x2d93d8){var _0x5b296d=_0x2d93d8[_0x49c4('0x21')];var _0x15b674=_0x2d93d8[_0x49c4('0x46')];return request({'method':_0x49c4('0x2f'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'qs':{'operation':'getchallenge','username':_0x5b296d},'json':!![]})[_0x49c4('0x23')](function(_0x5cfff9){if(_0x5cfff9[_0x49c4('0x32')]){return request({'method':_0x49c4('0x1e'),'uri':util[_0x49c4('0x26')](_0x49c4('0x30'),_0x2d93d8[_0x49c4('0x1f')]),'form':{'operation':_0x49c4('0x47'),'username':_0x5b296d,'accessKey':md5(_0x5cfff9[_0x49c4('0x25')]['token']+_0x15b674)},'json':!![]});}})[_0x49c4('0x23')](function(_0x3feaf0){if(_0x3feaf0['success']){return BPromise[_0x49c4('0x24')](_0x3feaf0[_0x49c4('0x25')]);}else{throw new Error(util[_0x49c4('0x26')](_0x49c4('0x48'),_0x2d93d8['id']));}})['catch'](function(_0x5d8bf0){var _0x144fd2=_0x5d8bf0['statusCode']||0x1f4;logger[_0x49c4('0x2a')](_0x49c4('0x2b'),_0x49c4('0x49'),_0x144fd2,JSON[_0x49c4('0x2c')](_0x5d8bf0));});}function request(_0x240c20){logger[_0x49c4('0x17')](_0x49c4('0x4a'),JSON['stringify'](_0x240c20));return rp(_0x240c20);}exports[_0x49c4('0x4b')]=function(_0x1550ce,_0x3936d3,_0x3d944c,_0x17ef75,_0x2644c0,_0x156748){var _0x25d174,_0x1e0b4f,_0x1856be,_0x5b822f;_0x156748['remoteUri']=intUtil[_0x49c4('0x4c')](_0x156748[_0x49c4('0x1f')]);if(_0x2644c0&&_0x2644c0['monitor_format']){logger['info'](_0x49c4('0x4d'),'Recording\x20is\x20enabled!');_0x3936d3['recordingURL']=util[_0x49c4('0x26')](_0x49c4('0x4e'),_0x156748[_0x49c4('0x4f')],_0x3936d3[_0x49c4('0x50')],md5(_0x3936d3[_0x49c4('0x50')]));}else{_0x3936d3[_0x49c4('0x51')]='';}return getConnection(_0x156748)[_0x49c4('0x23')](function(_0x50798e){_0x5b822f=_0x50798e;return getUser(_0x156748,_0x17ef75[_0x49c4('0x52')],_0x5b822f);})[_0x49c4('0x23')](function(_0x207572){_0x25d174=_0x207572;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x25d174['id']);return getEndUser(_0x156748,_0x3936d3[_0x49c4('0x54')],_0x3936d3['calleridnum'],_0x5b822f);})['then'](function(_0x1ef0c1){_0x1e0b4f=_0x1ef0c1;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0x1e0b4f['id']);return createTicket(_0x156748,_0x25d174,_0x1e0b4f,_0x3d944c,_0x3936d3,_0x3d944c[_0x49c4('0x56')],_0x5b822f);})[_0x49c4('0x23')](function(_0x6b2592){_0x1856be=_0x6b2592;logger[_0x49c4('0x17')]('Ticket\x20created!');logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x1856be['id']);var _0x4ba4eb=util[_0x49c4('0x26')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x156748[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x1856be['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x4d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x17ef75[_0x49c4('0x15')]),'trigger:browser:url',{'uri':_0x4ba4eb});})[_0x49c4('0x28')](function(_0x27b9c2){logger['error'](_0x49c4('0x4d'),JSON[_0x49c4('0x2c')](_0x27b9c2));});};exports['outbound']=function(_0x39c455,_0x42e0e6,_0x4f50bf,_0x4dc54d,_0x589484,_0x513879,_0xc43386){var _0x54947d,_0xb20a5d,_0x32f344,_0x515240;_0x513879[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x513879['remoteUri']);_0x513879[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x513879[_0x49c4('0x4f')]);if(_0xc43386&&_0xc43386[_0x49c4('0x5b')]&&_0xc43386['recordingFormat']!==_0x49c4('0x5c')){logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x5e'));_0x42e0e6['recordingURL']=util[_0x49c4('0x26')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x513879['serverUrl'],_0x42e0e6['uniqueid'],md5(_0x42e0e6['uniqueid']));}return getConnection(_0x513879)[_0x49c4('0x23')](function(_0x32eaef){_0x515240=_0x32eaef;return getUser(_0x513879,_0x4dc54d[_0x49c4('0x52')],_0x515240);})[_0x49c4('0x23')](function(_0x5b056e){_0x54947d=_0x5b056e;logger['info'](_0x49c4('0x53'),_0x54947d['id']);return getEndUser(_0x513879,_0x42e0e6[_0x49c4('0x5f')],_0x42e0e6[_0x49c4('0x60')],_0x515240);})[_0x49c4('0x23')](function(_0x102c15){_0xb20a5d=_0x102c15;logger[_0x49c4('0x17')](_0x49c4('0x55'),_0xb20a5d['id']);return createTicket(_0x513879,_0x54947d,_0xb20a5d,_0x4f50bf,_0x42e0e6,_0x4f50bf[_0x49c4('0x56')],_0x515240);})['then'](function(_0x2276db){_0x32f344=_0x2276db;logger['info'](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x32f344['id']);var _0x1ea1b4=util[_0x49c4('0x26')](_0x49c4('0x62'),_0x513879[_0x49c4('0x1f')],_[_0x49c4('0x58')](_0x32f344['id'],'x')[0x1]);logger[_0x49c4('0x17')](_0x49c4('0x5d'),_0x49c4('0x59'));emit(util[_0x49c4('0x26')](_0x49c4('0x5a'),_0x4dc54d[_0x49c4('0x15')]),_0x49c4('0x63'),{'uri':_0x1ea1b4});})[_0x49c4('0x28')](function(_0x371e49){logger[_0x49c4('0x2a')]('[OUTBOUND]',JSON['stringify'](_0x371e49));});};exports[_0x49c4('0x64')]=function(_0x16b3e8,_0x4af680,_0x1a15f3,_0x38ad50,_0x2939fd,_0x16e7b1){var _0x4d6aaa,_0x5a14a5,_0x4a85d4,_0x2e90d8;_0x16e7b1[_0x49c4('0x1f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x1f')]);_0x16e7b1[_0x49c4('0x4f')]=intUtil[_0x49c4('0x4c')](_0x16e7b1[_0x49c4('0x4f')]);if(_0x2939fd&&_0x2939fd[_0x49c4('0x65')]){logger[_0x49c4('0x17')]('['+_0x4af680['lastevent'][_0x49c4('0x66')]()+']',_0x49c4('0x5e'));_0x4af680[_0x49c4('0x51')]=util['format'](_0x49c4('0x4e'),_0x16e7b1[_0x49c4('0x4f')],_0x4af680[_0x49c4('0x50')],md5(_0x4af680[_0x49c4('0x50')]));}else{_0x4af680[_0x49c4('0x51')]='';}return getConnection(_0x16e7b1)[_0x49c4('0x23')](function(_0x35fa39){_0x2e90d8=_0x35fa39;return getUser(_0x16e7b1,'',_0x2e90d8);})[_0x49c4('0x23')](function(_0x4ba198){_0x4d6aaa=_0x4ba198;logger[_0x49c4('0x17')](_0x49c4('0x53'),_0x4d6aaa['id']);return getEndUser(_0x16e7b1,_0x4af680[_0x49c4('0x54')],_0x4af680[_0x49c4('0x67')],_0x2e90d8);})[_0x49c4('0x23')](function(_0x4a204d){_0x5a14a5=_0x4a204d;logger['info'](_0x49c4('0x55'),_0x5a14a5['id']);return createTicket(_0x16e7b1,_0x4d6aaa,_0x5a14a5,_0x1a15f3,_0x4af680,_0x1a15f3['Fields'],_0x2e90d8);})[_0x49c4('0x23')](function(_0x558880){_0x4a85d4=_0x558880;logger[_0x49c4('0x17')](_0x49c4('0x61'));logger[_0x49c4('0x17')](_0x49c4('0x57'),_0x4a85d4['id']);})['catch'](function(_0x123060){logger[_0x49c4('0x2a')]('['+_0x4af680[_0x49c4('0x68')][_0x49c4('0x66')]()+']',JSON[_0x49c4('0x2c')](_0x123060));});};
\ No newline at end of file
index aa7835b..a596f9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5958=['outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','replace','/api/v2','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','toUpperCase','Recording\x20is\x20enabled!','lastevent','\x20Error\x20running\x20Zendesk\x20integration','request-promise','util','ioredis','./util','zendesk','redis','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Descriptions','then','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','find','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','type:user\x20role:end-user\x20phone:%s','results','length','filter','end-user','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','%s/token:%s','username','token','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','GET','map','forEach','includes','picklist','type','nameField','toLowerCase','content','string','idField','customField','push','variableName','custom_fields','customVariable','Variable','queue','stripTrailingSlash','monitor_format','[QUEUE]','recordingURL','serverUrl','uniqueid','Authorization','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','%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','error','Zendesk\x20account\x20type\x20not\x20recognized','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect'];(function(_0x506853,_0x37bd48){var _0x262c3c=function(_0x547a8f){while(--_0x547a8f){_0x506853['push'](_0x506853['shift']());}};_0x262c3c(++_0x37bd48);}(_0x5958,0xee));var _0x8595=function(_0xf51c06,_0x388e5b){_0xf51c06=_0xf51c06-0x0;var _0x1d5420=_0x5958[_0xf51c06];return _0x1d5420;};'use strict';var _=require('lodash');var rp=require(_0x8595('0x0'));var md5=require('md5');var util=require(_0x8595('0x1'));var Redis=require(_0x8595('0x2'));var intUtil=require(_0x8595('0x3'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x8595('0x4'));config['redis']=_['defaults'](config[_0x8595('0x5')],{'host':_0x8595('0x6'),'port':0x18eb});var io=require(_0x8595('0x7'))(new Redis(config[_0x8595('0x5')]));function emit(_0x289d13,_0x12f1e7,_0x366d87){io['to'](_0x289d13)[_0x8595('0x8')](_0x12f1e7,_0x366d87);}var headers={'Content-Type':_0x8595('0x9'),'Accept':'application/json'};function getTicket(_0x44bf1b,_0x5a3479,_0x3f0c29,_0xe30525,_0x476cb0){logger[_0x8595('0xa')](_0x8595('0xb'));return request({'uri':util[_0x8595('0xc')](_0x8595('0xd'),_0x44bf1b[_0x8595('0xe')]),'method':_0x8595('0xf'),'body':{'ticket':_[_0x8595('0x10')]({'requester_id':_0x3f0c29['id'],'submitter_id':_0x5a3479?_0x5a3479['id']:undefined,'assignee_id':_0x5a3479?_0x5a3479['id']:undefined,'tags':getTags(_0xe30525[_0x8595('0x11')],_0x8595('0x12')),'subject':intUtil[_0x8595('0x13')](_0xe30525['Subjects'],_0x476cb0,'\x20'),'description':intUtil[_0x8595('0x13')](_0xe30525[_0x8595('0x14')],_0x476cb0,'\x0a'),'comment':{'public':![],'body':intUtil[_0x8595('0x13')](_0xe30525[_0x8595('0x14')],_0x476cb0,'\x0a')}},getCustomFields(_0xe30525['Fields'],_0x476cb0))}})[_0x8595('0x15')](function(_0x1ddf6d){logger[_0x8595('0xa')](_0x8595('0x16'));return _0x1ddf6d['ticket'];});}function getUser(_0x34223e,_0x4e077e){if(intUtil[_0x8595('0x17')](_0x4e077e)){logger[_0x8595('0xa')](_0x8595('0x18'),_0x4e077e);return request({'uri':util[_0x8595('0xc')](_0x8595('0x19'),_0x34223e['remoteUri']),'qs':{'query':util[_0x8595('0xc')](_0x8595('0x1a'),_0x4e077e)}})[_0x8595('0x15')](function(_0x1024e9){if(_0x1024e9[_0x8595('0x1b')]){logger[_0x8595('0xa')]('Agent\x20found!');return _[_0x8595('0x1c')](_0x1024e9['results'],{'email':_0x4e077e,'role':'agent'});}else{logger[_0x8595('0xa')](_0x8595('0x1d'));return request({'uri':util[_0x8595('0xc')](_0x8595('0x1e'),_0x34223e[_0x8595('0xe')])})[_0x8595('0x15')](function(_0x5d9d7a){logger['info'](_0x8595('0x1f'));return _0x5d9d7a[_0x8595('0x20')];});}});}else{logger[_0x8595('0xa')](_0x8595('0x1d'));return request({'uri':util[_0x8595('0xc')]('%s/users/me.json',_0x34223e['remoteUri'])})['then'](function(_0x1781e6){logger[_0x8595('0xa')](_0x8595('0x1f'));return _0x1781e6['user'];});}}function getEndUser(_0x39ca7d,_0x4dff61,_0x504275){logger['info']('Searching\x20enduser\x20with\x20phone',_0x504275);return request({'uri':util['format'](_0x8595('0x19'),_0x39ca7d[_0x8595('0xe')]),'qs':{'query':util[_0x8595('0xc')](_0x8595('0x21'),_0x504275)}})[_0x8595('0x15')](function(_0x563908){var _0x44e22c;if(_0x563908[_0x8595('0x22')][_0x8595('0x23')]){_0x563908[_0x8595('0x22')]=_[_0x8595('0x24')](_0x563908[_0x8595('0x22')],{'suspended':![],'role':_0x8595('0x25')});if(_0x563908['results'][_0x8595('0x23')]){_0x44e22c=_['first'](_0x563908[_0x8595('0x22')]);}}if(_0x44e22c){logger['info'](_0x8595('0x26'));return _0x44e22c;}else{logger[_0x8595('0xa')](_0x8595('0x27'));return request({'uri':util[_0x8595('0xc')]('%s/users.json',_0x39ca7d[_0x8595('0xe')]),'method':_0x8595('0xf'),'body':{'user':{'role':_0x8595('0x25'),'name':util['format'](_0x8595('0x28'),_0x4dff61||_0x504275),'phone':_0x504275}}})[_0x8595('0x15')](function(_0x1e2902){logger[_0x8595('0xa')](_0x8595('0x29'));return _0x1e2902['user'];});}});}function getAuth(_0x598c58){var _0x29888c;if(_0x598c58[_0x8595('0x2a')]===_0x8595('0x2b')){_0x29888c=util[_0x8595('0xc')](_0x8595('0x2c'),_0x598c58['username'],_0x598c58[_0x8595('0x2b')]);}else if(_0x598c58['authType']==='token'){_0x29888c=util[_0x8595('0xc')](_0x8595('0x2d'),_0x598c58[_0x8595('0x2e')],_0x598c58[_0x8595('0x2f')]);}return util[_0x8595('0xc')](_0x8595('0x30'),new Buffer(_0x29888c)[_0x8595('0x31')](_0x8595('0x32')));}function request(_0x133d6c){logger[_0x8595('0x33')](_0x8595('0x34'),JSON[_0x8595('0x35')](_0x133d6c));return rp(_['defaults'](_0x133d6c,{'method':_0x8595('0x36'),'headers':headers,'json':!![]}));}function getTags(_0x53310c,_0x56973f){var _0x40972c=[];if(_0x53310c&&_0x53310c['length']>0x0){_0x40972c=_[_0x8595('0x37')](_0x53310c,_0x56973f);}return _0x40972c;}function getCustomFields(_0x22eae0,_0x72166){var _0x343411=[];var _0x40d2b8={'custom_fields':[]};if(_0x22eae0[_0x8595('0x23')]>0x0){_[_0x8595('0x38')](_0x22eae0,function(_0x3c4e1f){if(_[_0x8595('0x39')](['string',_0x8595('0x3a')],_0x3c4e1f[_0x8595('0x3b')])&&_0x3c4e1f[_0x8595('0x3c')]&&!_0x3c4e1f['customField']){_0x40d2b8[_0x3c4e1f['nameField'][_0x8595('0x3d')]()]=_0x3c4e1f[_0x8595('0x3e')][_0x8595('0x31')]();}else if(_[_0x8595('0x39')]([_0x8595('0x3f'),_0x8595('0x3a')],_0x3c4e1f[_0x8595('0x3b')])&&_0x3c4e1f[_0x8595('0x40')]&&_0x3c4e1f[_0x8595('0x41')]){_0x40d2b8['custom_fields'][_0x8595('0x42')]({'id':_0x3c4e1f['idField'],'value':_0x3c4e1f['content']['toString']()});}else if(_0x3c4e1f['type']==='variable'&&_0x3c4e1f[_0x8595('0x43')]&&_0x3c4e1f[_0x8595('0x40')]&&_0x3c4e1f[_0x8595('0x41')]){_0x72166[_0x3c4e1f['variableName']]&&_0x40d2b8[_0x8595('0x44')][_0x8595('0x42')]({'id':_0x3c4e1f[_0x8595('0x40')],'value':_0x72166[_0x3c4e1f[_0x8595('0x43')]][_0x8595('0x31')]()});}else if(_0x3c4e1f[_0x8595('0x3b')]===_0x8595('0x45')&&_0x3c4e1f['Variable']&&_0x3c4e1f['Variable']['name']&&_0x3c4e1f[_0x8595('0x40')]&&_0x3c4e1f[_0x8595('0x41')]){_0x72166[_0x3c4e1f[_0x8595('0x46')][_0x8595('0x12')][_0x8595('0x3d')]()]&&_0x40d2b8[_0x8595('0x44')][_0x8595('0x42')]({'id':_0x3c4e1f[_0x8595('0x40')],'value':_0x72166[_0x3c4e1f[_0x8595('0x46')][_0x8595('0x12')][_0x8595('0x3d')]()][_0x8595('0x31')]()});}});}return _0x40d2b8;}exports[_0x8595('0x47')]=function(_0x27436c,_0x1f4c02,_0x431670,_0x52462d,_0x335b18,_0x5b256d){var _0x4ac3f3,_0x6eaa98;_0x5b256d[_0x8595('0xe')]=intUtil[_0x8595('0x48')](_0x5b256d['remoteUri']);_0x5b256d['serverUrl']=intUtil['stripTrailingSlash'](_0x5b256d['serverUrl']);if(_0x335b18&&_0x335b18[_0x8595('0x49')]){logger[_0x8595('0xa')](_0x8595('0x4a'),'Recording\x20is\x20enabled!');_0x1f4c02[_0x8595('0x4b')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5b256d[_0x8595('0x4c')],_0x1f4c02[_0x8595('0x4d')],md5(_0x1f4c02[_0x8595('0x4d')]));}else{_0x1f4c02[_0x8595('0x4b')]='';}headers[_0x8595('0x4e')]=getAuth(_0x5b256d);return getUser(_0x5b256d,_0x52462d['email'])[_0x8595('0x15')](function(_0x5a6246){_0x4ac3f3=_0x5a6246;logger[_0x8595('0xa')](_0x8595('0x4f'),_0x4ac3f3['id']);return getEndUser(_0x5b256d,_0x1f4c02[_0x8595('0x50')],_0x1f4c02[_0x8595('0x51')]);})['then'](function(_0x201f4f){_0x6eaa98=_0x201f4f;logger['info'](_0x8595('0x52'),_0x6eaa98['id']);return getTicket(_0x5b256d,_0x4ac3f3,_0x6eaa98,_0x431670,_0x1f4c02);})[_0x8595('0x15')](function(_0x3369c9){if(_0x3369c9){logger[_0x8595('0xa')](_0x8595('0x53'),_0x3369c9['id']);switch(_0x5b256d[_0x8595('0x3b')]){case _0x8595('0x54'):logger['info'](_0x8595('0x4a'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0x8595('0xc')](_0x8595('0x55'),_0x5b256d[_0x8595('0xe')],_0x4ac3f3['id'],_0x3369c9['id']),'method':_0x8595('0xf')});case _0x8595('0x56'):logger['info']('[QUEUE]',_0x8595('0x57'));emit(util['format'](_0x8595('0x58'),_0x52462d['name']),_0x8595('0x59'),{'uri':util['format'](_0x8595('0x5a'),_0x5b256d[_0x8595('0xe')]['replace']('/api/v2',''),_0x3369c9['id'])});break;default:logger[_0x8595('0x5b')](_0x8595('0x4a'),_0x8595('0x5c'));}}})['catch'](function(_0x2bb91a){logger['error'](_0x8595('0x5d'),util[_0x8595('0x5e')](_0x2bb91a,{'showHidden':!![],'depth':null}));});};exports[_0x8595('0x5f')]=function(_0x3a91b0,_0x2f6864,_0x205859,_0x389249,_0x5d40b5,_0x27554c,_0x20a56a){var _0x5ba49e,_0x16e723;_0x27554c[_0x8595('0xe')]=intUtil['stripTrailingSlash'](_0x27554c[_0x8595('0xe')]);_0x27554c[_0x8595('0x4c')]=intUtil[_0x8595('0x48')](_0x27554c['serverUrl']);if(_0x20a56a&&_0x20a56a['recordingFormat']&&_0x20a56a[_0x8595('0x60')]!==_0x8595('0x61')){logger[_0x8595('0xa')](_0x8595('0x62'),'Recording\x20is\x20enabled!');_0x2f6864[_0x8595('0x4b')]=util[_0x8595('0xc')](_0x8595('0x63'),_0x27554c[_0x8595('0x4c')],_0x2f6864[_0x8595('0x4d')],md5(_0x2f6864[_0x8595('0x4d')]));}headers[_0x8595('0x4e')]=getAuth(_0x27554c);return getUser(_0x27554c,_0x389249['email'])[_0x8595('0x15')](function(_0x4adfd2){_0x5ba49e=_0x4adfd2;logger[_0x8595('0xa')]('The\x20User\x20ID\x20is:',_0x5ba49e['id']);return getEndUser(_0x27554c,_0x2f6864[_0x8595('0x64')],_0x2f6864[_0x8595('0x65')]);})[_0x8595('0x15')](function(_0x5186ad){_0x16e723=_0x5186ad;logger['info'](_0x8595('0x52'),_0x16e723['id']);return getTicket(_0x27554c,_0x5ba49e,_0x16e723,_0x205859,_0x2f6864);})[_0x8595('0x15')](function(_0x59bdfd){if(_0x59bdfd){logger[_0x8595('0xa')]('The\x20Ticket\x20ID\x20is:',_0x59bdfd['id']);switch(_0x27554c[_0x8595('0x3b')]){case _0x8595('0x54'):logger[_0x8595('0xa')](_0x8595('0x62'),_0x8595('0x66'));return request({'uri':util['format'](_0x8595('0x55'),_0x27554c[_0x8595('0xe')],_0x5ba49e['id'],_0x59bdfd['id']),'method':_0x8595('0xf')});case _0x8595('0x56'):logger['info']('[OUTBOUND]',_0x8595('0x57'));emit(util[_0x8595('0xc')](_0x8595('0x58'),_0x389249[_0x8595('0x12')]),'trigger:browser:url',{'uri':util[_0x8595('0xc')](_0x8595('0x5a'),_0x27554c[_0x8595('0xe')][_0x8595('0x67')](_0x8595('0x68'),''),_0x59bdfd['id'])});break;default:logger['error'](_0x8595('0x62'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})['catch'](function(_0x299442){logger[_0x8595('0x5b')](_0x8595('0x69'),util[_0x8595('0x5e')](_0x299442,{'showHidden':!![],'depth':null}));});};exports[_0x8595('0x6a')]=function(_0x231850,_0x1589c0,_0x40f90f,_0x1aa6dd,_0x52dbcc,_0x488040){var _0x5e0df9,_0x2b4054;_0x488040[_0x8595('0xe')]=intUtil['stripTrailingSlash'](_0x488040[_0x8595('0xe')]);_0x488040['serverUrl']=intUtil['stripTrailingSlash'](_0x488040[_0x8595('0x4c')]);if(_0x52dbcc&&_0x52dbcc[_0x8595('0x49')]){logger[_0x8595('0xa')]('['+_0x1589c0['lastevent'][_0x8595('0x6b')]()+']',_0x8595('0x6c'));_0x1589c0[_0x8595('0x4b')]=util[_0x8595('0xc')](_0x8595('0x63'),_0x488040['serverUrl'],_0x1589c0[_0x8595('0x4d')],md5(_0x1589c0['uniqueid']));}else{_0x1589c0[_0x8595('0x4b')]='';}headers[_0x8595('0x4e')]=getAuth(_0x488040);return getUser(_0x488040)[_0x8595('0x15')](function(_0x3e24ef){_0x5e0df9=_0x3e24ef;logger[_0x8595('0xa')](_0x8595('0x4f'),_0x5e0df9['id']);return getEndUser(_0x488040,_0x1589c0[_0x8595('0x50')],_0x1589c0[_0x8595('0x51')]);})['then'](function(_0x30059a){_0x2b4054=_0x30059a;logger[_0x8595('0xa')]('The\x20Enduser\x20ID\x20is:',_0x2b4054['id']);return getTicket(_0x488040,_0x5e0df9,_0x2b4054,_0x40f90f,_0x1589c0);})[_0x8595('0x15')](function(_0x19eb48){if(_0x19eb48){logger[_0x8595('0xa')](_0x8595('0x53'),_0x19eb48['id']);}})['catch'](function(_0x4f271a){logger[_0x8595('0x5b')]('['+_0x1589c0[_0x8595('0x6d')][_0x8595('0x6b')]()+']'+_0x8595('0x6e'),util[_0x8595('0x5e')](_0x4f271a,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xaf3c=['variableName','push','Variable','name','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','user:%s','trigger:browser:url','%s/agent/tickets/%s','replace','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','/api/v2','lastevent','calleridname','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','defaults','redis','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','merge','Tags','getString','Subjects','Descriptions','Ticket\x20created!','validateEmail','%s/search.json','then','count','Agent\x20found!','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','user','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','length','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','POST','Caller\x20-\x20%s','Enduser\x20created.','authType','%s:%s','password','token','username','Basic\x20%s','toString','base64','[HTTP]','stringify','GET','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','custom_fields','variable'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xaf3c,0x108));var _0xcaf3=function(_0x3dcb6d,_0x21236a){_0x3dcb6d=_0x3dcb6d-0x0;var _0x34dc22=_0xaf3c[_0x3dcb6d];return _0x34dc22;};'use strict';var _=require('lodash');var rp=require(_0xcaf3('0x0'));var md5=require(_0xcaf3('0x1'));var util=require(_0xcaf3('0x2'));var Redis=require(_0xcaf3('0x3'));var intUtil=require(_0xcaf3('0x4'));var config=require(_0xcaf3('0x5'));var logger=require(_0xcaf3('0x6'))(_0xcaf3('0x7'));config['redis']=_[_0xcaf3('0x8')](config[_0xcaf3('0x9')],{'host':_0xcaf3('0xa'),'port':0x18eb});var io=require(_0xcaf3('0xb'))(new Redis(config[_0xcaf3('0x9')]));function emit(_0x2e56de,_0x5647c5,_0x5beb61){io['to'](_0x2e56de)[_0xcaf3('0xc')](_0x5647c5,_0x5beb61);}var headers={'Content-Type':_0xcaf3('0xd'),'Accept':_0xcaf3('0xd')};function getTicket(_0x15fcc4,_0x3ef4ff,_0x2e1d2b,_0x5bdb97,_0x29181e){logger[_0xcaf3('0xe')](_0xcaf3('0xf'));return request({'uri':util[_0xcaf3('0x10')](_0xcaf3('0x11'),_0x15fcc4[_0xcaf3('0x12')]),'method':'POST','body':{'ticket':_[_0xcaf3('0x13')]({'requester_id':_0x2e1d2b['id'],'submitter_id':_0x3ef4ff?_0x3ef4ff['id']:undefined,'assignee_id':_0x3ef4ff?_0x3ef4ff['id']:undefined,'tags':getTags(_0x5bdb97[_0xcaf3('0x14')],'name'),'subject':intUtil[_0xcaf3('0x15')](_0x5bdb97[_0xcaf3('0x16')],_0x29181e,'\x20'),'description':intUtil[_0xcaf3('0x15')](_0x5bdb97['Descriptions'],_0x29181e,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x5bdb97[_0xcaf3('0x17')],_0x29181e,'\x0a')}},getCustomFields(_0x5bdb97['Fields'],_0x29181e))}})['then'](function(_0x2b7c95){logger[_0xcaf3('0xe')](_0xcaf3('0x18'));return _0x2b7c95['ticket'];});}function getUser(_0x35d979,_0x3cf725){if(intUtil[_0xcaf3('0x19')](_0x3cf725)){logger[_0xcaf3('0xe')]('Getting\x20agent\x20with\x20email',_0x3cf725);return request({'uri':util[_0xcaf3('0x10')](_0xcaf3('0x1a'),_0x35d979[_0xcaf3('0x12')]),'qs':{'query':util['format']('type:user\x20role:agent\x20email:%s',_0x3cf725)}})[_0xcaf3('0x1b')](function(_0xd5189a){if(_0xd5189a[_0xcaf3('0x1c')]){logger[_0xcaf3('0xe')](_0xcaf3('0x1d'));return _[_0xcaf3('0x1e')](_0xd5189a[_0xcaf3('0x1f')],{'email':_0x3cf725,'role':_0xcaf3('0x20')});}else{logger[_0xcaf3('0xe')](_0xcaf3('0x21'));return request({'uri':util['format'](_0xcaf3('0x22'),_0x35d979[_0xcaf3('0x12')])})[_0xcaf3('0x1b')](function(_0x5e583b){logger[_0xcaf3('0xe')]('Admin\x20account\x20selected.');return _0x5e583b[_0xcaf3('0x23')];});}});}else{logger[_0xcaf3('0xe')](_0xcaf3('0x21'));return request({'uri':util[_0xcaf3('0x10')](_0xcaf3('0x22'),_0x35d979[_0xcaf3('0x12')])})[_0xcaf3('0x1b')](function(_0x59c90d){logger[_0xcaf3('0xe')](_0xcaf3('0x24'));return _0x59c90d[_0xcaf3('0x23')];});}}function getEndUser(_0x3317e4,_0x25bdb7,_0x50df38){logger[_0xcaf3('0xe')](_0xcaf3('0x25'),_0x50df38);return request({'uri':util[_0xcaf3('0x10')](_0xcaf3('0x1a'),_0x3317e4[_0xcaf3('0x12')]),'qs':{'query':util['format'](_0xcaf3('0x26'),_0x50df38)}})[_0xcaf3('0x1b')](function(_0x37094d){var _0x55b5d2;if(_0x37094d[_0xcaf3('0x1f')][_0xcaf3('0x27')]){_0x37094d[_0xcaf3('0x1f')]=_[_0xcaf3('0x28')](_0x37094d['results'],{'suspended':![],'role':_0xcaf3('0x29')});if(_0x37094d[_0xcaf3('0x1f')]['length']){_0x55b5d2=_[_0xcaf3('0x2a')](_0x37094d[_0xcaf3('0x1f')]);}}if(_0x55b5d2){logger[_0xcaf3('0xe')](_0xcaf3('0x2b'));return _0x55b5d2;}else{logger[_0xcaf3('0xe')](_0xcaf3('0x2c'));return request({'uri':util[_0xcaf3('0x10')](_0xcaf3('0x2d'),_0x3317e4[_0xcaf3('0x12')]),'method':_0xcaf3('0x2e'),'body':{'user':{'role':_0xcaf3('0x29'),'name':util['format'](_0xcaf3('0x2f'),_0x25bdb7||_0x50df38),'phone':_0x50df38}}})[_0xcaf3('0x1b')](function(_0x51d7e8){logger[_0xcaf3('0xe')](_0xcaf3('0x30'));return _0x51d7e8['user'];});}});}function getAuth(_0x5574a7){var _0x4ad6f1;if(_0x5574a7[_0xcaf3('0x31')]==='password'){_0x4ad6f1=util[_0xcaf3('0x10')](_0xcaf3('0x32'),_0x5574a7['username'],_0x5574a7[_0xcaf3('0x33')]);}else if(_0x5574a7['authType']===_0xcaf3('0x34')){_0x4ad6f1=util['format']('%s/token:%s',_0x5574a7[_0xcaf3('0x35')],_0x5574a7[_0xcaf3('0x34')]);}return util[_0xcaf3('0x10')](_0xcaf3('0x36'),new Buffer(_0x4ad6f1)[_0xcaf3('0x37')](_0xcaf3('0x38')));}function request(_0x2ce282){logger['debug'](_0xcaf3('0x39'),JSON[_0xcaf3('0x3a')](_0x2ce282));return rp(_[_0xcaf3('0x8')](_0x2ce282,{'method':_0xcaf3('0x3b'),'headers':headers,'json':!![]}));}function getTags(_0x44b30b,_0x34c592){var _0x1392fa=[];if(_0x44b30b&&_0x44b30b[_0xcaf3('0x27')]>0x0){_0x1392fa=_['map'](_0x44b30b,_0x34c592);}return _0x1392fa;}function getCustomFields(_0x19a469,_0x418be3){var _0x4e636d=[];var _0x38a754={'custom_fields':[]};if(_0x19a469[_0xcaf3('0x27')]>0x0){_[_0xcaf3('0x3c')](_0x19a469,function(_0x2c7e09){if(_[_0xcaf3('0x3d')]([_0xcaf3('0x3e'),_0xcaf3('0x3f')],_0x2c7e09[_0xcaf3('0x40')])&&_0x2c7e09[_0xcaf3('0x41')]&&!_0x2c7e09[_0xcaf3('0x42')]){_0x38a754[_0x2c7e09[_0xcaf3('0x41')][_0xcaf3('0x43')]()]=_0x2c7e09[_0xcaf3('0x44')][_0xcaf3('0x37')]();}else if(_['includes'](['string',_0xcaf3('0x3f')],_0x2c7e09[_0xcaf3('0x40')])&&_0x2c7e09[_0xcaf3('0x45')]&&_0x2c7e09[_0xcaf3('0x42')]){_0x38a754[_0xcaf3('0x46')]['push']({'id':_0x2c7e09['idField'],'value':_0x2c7e09['content']['toString']()});}else if(_0x2c7e09[_0xcaf3('0x40')]===_0xcaf3('0x47')&&_0x2c7e09[_0xcaf3('0x48')]&&_0x2c7e09[_0xcaf3('0x45')]&&_0x2c7e09['customField']){_0x418be3[_0x2c7e09[_0xcaf3('0x48')]]&&_0x38a754['custom_fields'][_0xcaf3('0x49')]({'id':_0x2c7e09[_0xcaf3('0x45')],'value':_0x418be3[_0x2c7e09[_0xcaf3('0x48')]][_0xcaf3('0x37')]()});}else if(_0x2c7e09[_0xcaf3('0x40')]==='customVariable'&&_0x2c7e09[_0xcaf3('0x4a')]&&_0x2c7e09[_0xcaf3('0x4a')][_0xcaf3('0x4b')]&&_0x2c7e09[_0xcaf3('0x45')]&&_0x2c7e09[_0xcaf3('0x42')]){_0x418be3[_0x2c7e09[_0xcaf3('0x4a')][_0xcaf3('0x4b')]['toLowerCase']()]&&_0x38a754['custom_fields'][_0xcaf3('0x49')]({'id':_0x2c7e09[_0xcaf3('0x45')],'value':_0x418be3[_0x2c7e09[_0xcaf3('0x4a')]['name']['toLowerCase']()][_0xcaf3('0x37')]()});}});}return _0x38a754;}exports['queue']=function(_0x3bac8e,_0x4078c4,_0x5b18ae,_0x3ad8fd,_0x28daca,_0x54db7f){var _0x170818,_0x4f2cac;_0x54db7f[_0xcaf3('0x12')]=intUtil[_0xcaf3('0x4c')](_0x54db7f[_0xcaf3('0x12')]);_0x54db7f[_0xcaf3('0x4d')]=intUtil[_0xcaf3('0x4c')](_0x54db7f[_0xcaf3('0x4d')]);if(_0x28daca&&_0x28daca[_0xcaf3('0x4e')]){logger[_0xcaf3('0xe')](_0xcaf3('0x4f'),_0xcaf3('0x50'));_0x4078c4[_0xcaf3('0x51')]=util[_0xcaf3('0x10')](_0xcaf3('0x52'),_0x54db7f[_0xcaf3('0x4d')],_0x4078c4['uniqueid'],md5(_0x4078c4[_0xcaf3('0x53')]));}else{_0x4078c4['recordingURL']='';}headers[_0xcaf3('0x54')]=getAuth(_0x54db7f);return getUser(_0x54db7f,_0x3ad8fd[_0xcaf3('0x55')])[_0xcaf3('0x1b')](function(_0x2d079e){_0x170818=_0x2d079e;logger[_0xcaf3('0xe')](_0xcaf3('0x56'),_0x170818['id']);return getEndUser(_0x54db7f,_0x4078c4['calleridname'],_0x4078c4[_0xcaf3('0x57')]);})[_0xcaf3('0x1b')](function(_0xa92ee7){_0x4f2cac=_0xa92ee7;logger[_0xcaf3('0xe')]('The\x20Enduser\x20ID\x20is:',_0x4f2cac['id']);return getTicket(_0x54db7f,_0x170818,_0x4f2cac,_0x5b18ae,_0x4078c4);})['then'](function(_0x3ae2f9){if(_0x3ae2f9){logger[_0xcaf3('0xe')]('The\x20Ticket\x20ID\x20is:',_0x3ae2f9['id']);switch(_0x54db7f[_0xcaf3('0x40')]){case'integrationTab':logger[_0xcaf3('0xe')]('[QUEUE]',_0xcaf3('0x58'));return request({'uri':util['format'](_0xcaf3('0x59'),_0x54db7f['remoteUri'],_0x170818['id'],_0x3ae2f9['id']),'method':_0xcaf3('0x2e')});case _0xcaf3('0x5a'):logger[_0xcaf3('0xe')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xcaf3('0x10')](_0xcaf3('0x5b'),_0x3ad8fd[_0xcaf3('0x4b')]),_0xcaf3('0x5c'),{'uri':util['format'](_0xcaf3('0x5d'),_0x54db7f[_0xcaf3('0x12')][_0xcaf3('0x5e')]('/api/v2',''),_0x3ae2f9['id'])});break;default:logger[_0xcaf3('0x5f')](_0xcaf3('0x4f'),_0xcaf3('0x60'));}}})[_0xcaf3('0x61')](function(_0x567f00){logger['error'](_0xcaf3('0x62'),util[_0xcaf3('0x63')](_0x567f00,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x2cc6d1,_0x516ef7,_0x5c0992,_0x583648,_0x10e83b,_0x54472f,_0x4c6ddd){var _0x390daf,_0x95e844;_0x54472f['remoteUri']=intUtil[_0xcaf3('0x4c')](_0x54472f[_0xcaf3('0x12')]);_0x54472f[_0xcaf3('0x4d')]=intUtil[_0xcaf3('0x4c')](_0x54472f['serverUrl']);if(_0x4c6ddd&&_0x4c6ddd[_0xcaf3('0x64')]&&_0x4c6ddd[_0xcaf3('0x64')]!=='none'){logger[_0xcaf3('0xe')](_0xcaf3('0x65'),_0xcaf3('0x50'));_0x516ef7[_0xcaf3('0x51')]=util[_0xcaf3('0x10')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x54472f[_0xcaf3('0x4d')],_0x516ef7['uniqueid'],md5(_0x516ef7[_0xcaf3('0x53')]));}headers['Authorization']=getAuth(_0x54472f);return getUser(_0x54472f,_0x583648[_0xcaf3('0x55')])[_0xcaf3('0x1b')](function(_0x3bba1d){_0x390daf=_0x3bba1d;logger[_0xcaf3('0xe')]('The\x20User\x20ID\x20is:',_0x390daf['id']);return getEndUser(_0x54472f,_0x516ef7[_0xcaf3('0x66')],_0x516ef7[_0xcaf3('0x67')]);})[_0xcaf3('0x1b')](function(_0x4d31bb){_0x95e844=_0x4d31bb;logger[_0xcaf3('0xe')](_0xcaf3('0x68'),_0x95e844['id']);return getTicket(_0x54472f,_0x390daf,_0x95e844,_0x5c0992,_0x516ef7);})[_0xcaf3('0x1b')](function(_0x34d647){if(_0x34d647){logger[_0xcaf3('0xe')](_0xcaf3('0x69'),_0x34d647['id']);switch(_0x54472f[_0xcaf3('0x40')]){case _0xcaf3('0x6a'):logger['info'](_0xcaf3('0x65'),_0xcaf3('0x58'));return request({'uri':util[_0xcaf3('0x10')](_0xcaf3('0x59'),_0x54472f[_0xcaf3('0x12')],_0x390daf['id'],_0x34d647['id']),'method':_0xcaf3('0x2e')});case _0xcaf3('0x5a'):logger[_0xcaf3('0xe')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xcaf3('0x10')](_0xcaf3('0x5b'),_0x583648[_0xcaf3('0x4b')]),_0xcaf3('0x5c'),{'uri':util[_0xcaf3('0x10')](_0xcaf3('0x5d'),_0x54472f[_0xcaf3('0x12')]['replace'](_0xcaf3('0x6b'),''),_0x34d647['id'])});break;default:logger['error'](_0xcaf3('0x65'),_0xcaf3('0x60'));}}})[_0xcaf3('0x61')](function(_0x4c7d98){logger[_0xcaf3('0x5f')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x4c7d98,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x19ebc2,_0x3fbfaf,_0x4da6cb,_0x14912f,_0x575f4f,_0x2cb33d){var _0x232e36,_0x56fb81;_0x2cb33d[_0xcaf3('0x12')]=intUtil['stripTrailingSlash'](_0x2cb33d[_0xcaf3('0x12')]);_0x2cb33d[_0xcaf3('0x4d')]=intUtil[_0xcaf3('0x4c')](_0x2cb33d[_0xcaf3('0x4d')]);if(_0x575f4f&&_0x575f4f[_0xcaf3('0x4e')]){logger[_0xcaf3('0xe')]('['+_0x3fbfaf[_0xcaf3('0x6c')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x3fbfaf[_0xcaf3('0x51')]=util['format'](_0xcaf3('0x52'),_0x2cb33d['serverUrl'],_0x3fbfaf[_0xcaf3('0x53')],md5(_0x3fbfaf[_0xcaf3('0x53')]));}else{_0x3fbfaf[_0xcaf3('0x51')]='';}headers[_0xcaf3('0x54')]=getAuth(_0x2cb33d);return getUser(_0x2cb33d)['then'](function(_0x361411){_0x232e36=_0x361411;logger[_0xcaf3('0xe')](_0xcaf3('0x56'),_0x232e36['id']);return getEndUser(_0x2cb33d,_0x3fbfaf[_0xcaf3('0x6d')],_0x3fbfaf['calleridnum']);})[_0xcaf3('0x1b')](function(_0x1d55d8){_0x56fb81=_0x1d55d8;logger[_0xcaf3('0xe')](_0xcaf3('0x68'),_0x56fb81['id']);return getTicket(_0x2cb33d,_0x232e36,_0x56fb81,_0x4da6cb,_0x3fbfaf);})[_0xcaf3('0x1b')](function(_0x3b9941){if(_0x3b9941){logger['info'](_0xcaf3('0x69'),_0x3b9941['id']);}})[_0xcaf3('0x61')](function(_0x5af70d){logger[_0xcaf3('0x5f')]('['+_0x3fbfaf[_0xcaf3('0x6c')][_0xcaf3('0x6e')]()+']'+_0xcaf3('0x6f'),util[_0xcaf3('0x63')](_0x5af70d,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 38c4d9f..b125645 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4c3=['called','Called','complete','connect','Call_Result','Answered','Rejected','abandoned','Timeout','Call_Start_Time','outbound','YYYY-MM-DDTHH:mm:ss','Call_Type','Inbound','merge','Fields','/crm/v2/Calls','Call\x20created!','details','err','queue','host','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','uniqueid','/downloads?type=uniqueid&token=','recordingURL','zoho.eu','com','calleridname','calleridnum','[QUEUE]','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','[OUTBOUND]','/api/voice/recordings/','destcalleridname','destcalleridnum','Outbound','The\x20Call\x20ID\x20is:','user:%s','trigger:browser:url','https://crm.','unmanaged','toUpperCase','The\x20User\x20ID\x20is:','request-promise','util','moment','bluebird','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','debug','[HTTP]','stringify','length','forEach','includes','type','idField','content','toString','variable','variableName','Variable','name','toLowerCase','indexOf','split','isNil','access_token','expires_in','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','refreshToken','clientId','clientSecret','then','add','Failing\x20creating\x20the\x20access_token','stack','info','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','users','email','Agent\x20found!','Using\x20the\x20admin\x20account!','findIndex','profile','Administrator','error','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','catch','data','enduserType','/crm/v2/','startCase','moduleCreate','role','first_name','Zoho-oauthtoken\x20','code','SUCCESS','Error:\x20','log','CREATE\x20ERROR','moduleSearch','contact_lead','uri','https://www.zohoapis.','/crm/v2/Contacts/search?criteria=((Phone:equals:','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','Contacts','lead','Creating\x20new\x20call...','Owner','last_name','getString','Subjects','Descriptions','Full_Name','First_Name','Last_Name','$se_module','talktime','utc','answertime','endtime','Call_Duration','diff','starttime','mm:ss','lastevent'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xe4c3,0xcb));var _0x3e4c=function(_0x3c1314,_0x3ca8cb){_0x3c1314=_0x3c1314-0x0;var _0x13ad3a=_0xe4c3[_0x3c1314];return _0x13ad3a;};'use strict';var _=require('lodash');var rp=require(_0x3e4c('0x0'));var md5=require('md5');var util=require(_0x3e4c('0x1'));var intUtil=require('./util');var moment=require(_0x3e4c('0x2'));var Redis=require('ioredis');var BPromise=require(_0x3e4c('0x3'));var config=require(_0x3e4c('0x4'));var logger=require(_0x3e4c('0x5'))('zoho');config[_0x3e4c('0x6')]=_[_0x3e4c('0x7')](config[_0x3e4c('0x6')],{'host':_0x3e4c('0x8'),'port':0x18eb});var io=require(_0x3e4c('0x9'))(new Redis(config['redis']));function emit(_0xdad902,_0x597219,_0x2209b9){io['to'](_0xdad902)[_0x3e4c('0xa')](_0x597219,_0x2209b9);}function request(_0xd62ec8){logger[_0x3e4c('0xb')](_0x3e4c('0xc'),JSON[_0x3e4c('0xd')](_0xd62ec8));return rp(_0xd62ec8);}function getCustomFields(_0x1a1eb6,_0x4c45cc){var _0x3f1634={};if(_0x1a1eb6[_0x3e4c('0xe')]>0x0){_[_0x3e4c('0xf')](_0x1a1eb6,function(_0x3a51b3){if(_[_0x3e4c('0x10')](['string','picklist'],_0x3a51b3[_0x3e4c('0x11')])&&_0x3a51b3[_0x3e4c('0x12')]){_0x3f1634[_0x3a51b3[_0x3e4c('0x12')]]=_0x3a51b3[_0x3e4c('0x13')][_0x3e4c('0x14')]();}else if(_0x3a51b3[_0x3e4c('0x11')]===_0x3e4c('0x15')&&_0x3a51b3['variableName']&&_0x3a51b3[_0x3e4c('0x12')]&&_0x4c45cc[_0x3a51b3[_0x3e4c('0x16')]]){_0x3f1634[_0x3a51b3['idField']]=_0x4c45cc[_0x3a51b3[_0x3e4c('0x16')]][_0x3e4c('0x14')]();}else if(_0x3a51b3[_0x3e4c('0x11')]==='customVariable'&&_0x3a51b3[_0x3e4c('0x17')]&&_0x3a51b3[_0x3e4c('0x17')][_0x3e4c('0x18')]&&_0x3a51b3[_0x3e4c('0x12')]&&_0x4c45cc[_0x3a51b3['Variable'][_0x3e4c('0x18')][_0x3e4c('0x19')]()]){_0x3f1634[_0x3a51b3[_0x3e4c('0x12')]]=_0x4c45cc[_0x3a51b3[_0x3e4c('0x17')][_0x3e4c('0x18')][_0x3e4c('0x19')]()][_0x3e4c('0x14')]();}});}return _0x3f1634;}function getName(_0x4906f6){if(_0x4906f6[_0x3e4c('0x1a')]('\x20')>0x0){var _0x306955=_0x4906f6[_0x3e4c('0x1b')](/ (.+)/);if(_0x306955[0x1]){return _0x306955;}}return[_0x4906f6,_0x4906f6];}var accountsTokens={};function getAccessToken(_0x38c540){return new Promise(function(_0x1137b0,_0x52dd02){if(!_[_0x3e4c('0x1c')](accountsTokens[_0x38c540['id']])&&!_[_0x3e4c('0x1c')](accountsTokens[_0x38c540['id']][_0x3e4c('0x1d')])){if(moment()['isBefore'](accountsTokens[_0x38c540['id']][_0x3e4c('0x1e')])){_0x1137b0(accountsTokens[_0x38c540['id']][_0x3e4c('0x1d')]);}}var _0x25b156;switch(_0x38c540['zone']){case'US':_0x25b156=_0x3e4c('0x1f');break;case'AU':_0x25b156=_0x3e4c('0x20');break;case'EU':_0x25b156=_0x3e4c('0x21');break;case'IN':_0x25b156=_0x3e4c('0x22');break;case'CN':_0x25b156=_0x3e4c('0x23');break;default:_0x25b156='https://accounts.zoho.eu';break;}var _0x279721={'method':_0x3e4c('0x24'),'uri':_0x25b156+'/oauth/v2/token','qs':{'refresh_token':_0x38c540[_0x3e4c('0x25')],'client_id':_0x38c540[_0x3e4c('0x26')],'client_secret':_0x38c540[_0x3e4c('0x27')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x279721)[_0x3e4c('0x28')](function(_0x3af384){accountsTokens[_0x38c540['id']]={'access_token':_0x3af384[_0x3e4c('0x1d')],'expires_in':moment()[_0x3e4c('0x29')](_0x3af384[_0x3e4c('0x1e')],'seconds')};_0x1137b0(_0x3af384[_0x3e4c('0x1d')]);})['catch'](function(_0x11dbd9){logger['error'](_0x3e4c('0x2a'),_0x11dbd9[_0x3e4c('0x2b')]);_0x52dd02(_0x11dbd9);});});}function getUser(_0x2ca790,_0x439f6a,_0x22c297,_0x1ac693){logger[_0x3e4c('0x2c')]('Search\x20user');return request({'method':_0x3e4c('0x2d'),'uri':util[_0x3e4c('0x2e')](_0x3e4c('0x2f'),_0x439f6a),'qs':{'type':_0x3e4c('0x30')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x2ca790},'json':!![]})['then'](function(_0x59ad95){if(_0x59ad95[_0x3e4c('0x31')]){var _0x533027=-0x1;if(_['isArrayLikeObject'](_0x59ad95[_0x3e4c('0x31')])){if(!_[_0x3e4c('0x1c')](_0x1ac693)){_0x533027=_['findIndex'](_0x59ad95[_0x3e4c('0x31')],function(_0x5facd1){return _0x5facd1[_0x3e4c('0x32')]===_0x1ac693;});}if(_0x533027>=0x0){logger[_0x3e4c('0x2c')](_0x3e4c('0x33'));}else{logger['info'](_0x3e4c('0x34'));_0x533027=_[_0x3e4c('0x35')](_0x59ad95[_0x3e4c('0x31')],function(_0x5aa83d){return _0x5aa83d[_0x3e4c('0x36')][_0x3e4c('0x18')]===_0x3e4c('0x37');});}return _0x59ad95[_0x3e4c('0x31')][_0x533027];}else{if(_0x59ad95['user'][_0x3e4c('0x36')][_0x3e4c('0x18')]===_0x3e4c('0x37')){logger[_0x3e4c('0x2c')](_0x3e4c('0x34'));user=_0x59ad95['user'];return user;}else{logger[_0x3e4c('0x38')](_0x3e4c('0x39'),JSON[_0x3e4c('0xd')](_0x59ad95));throw new Error(_0x3e4c('0x3a')+JSON[_0x3e4c('0xd')](_0x59ad95));}}}else{logger[_0x3e4c('0x38')]('The\x20failing\x20result\x20is',JSON[_0x3e4c('0xd')](_0x59ad95));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0x3e4c('0xd')](_0x59ad95));}})[_0x3e4c('0x3b')](function(_0x524276){console['error'](_0x524276);});}function getZohoUser(_0x425dd7,_0x20c9f4){return new BPromise(function(_0x494f2c,_0x47da36){request(_0x425dd7)['then'](function(_0x47c8ab){var _0x53bd58=null;if(_0x47c8ab){_0x53bd58=_0x47c8ab[_0x3e4c('0x3c')][0x0];_0x53bd58[_0x3e4c('0x3d')]=_0x20c9f4;}_0x494f2c(_0x53bd58);})[_0x3e4c('0x3b')](function(_0x15ffb9){_0x47da36(_0x15ffb9);});});}function createEndUser(_0x28d320,_0x4f99ba,_0x3979d2,_0x54012b,_0x4edb6d,_0x2a0f15){var _0x3979d2=getName(_0x3979d2);return request({'method':_0x3e4c('0x24'),'uri':'https://www.zohoapis.'+_0x4f99ba+_0x3e4c('0x3e')+_[_0x3e4c('0x3f')](_0x2a0f15[_0x3e4c('0x40')])+'s','body':{'data':[{'Last_Name':_0x3979d2[0x1],'First_Name':_0x3979d2[0x0],'Phone':_0x54012b,'Owner':{'name':!_[_0x3e4c('0x1c')](_0x4edb6d[_0x3e4c('0x41')][_0x3e4c('0x18')])?_0x4edb6d[_0x3e4c('0x41')][_0x3e4c('0x18')]:!_['isNil'](_0x4edb6d[_0x3e4c('0x42')])?_0x4edb6d[_0x3e4c('0x42')]+'\x20'+_0x4edb6d['last_name']:_0x4edb6d['last_name'],'id':_0x4edb6d['id']}}]},'headers':{'Authorization':_0x3e4c('0x43')+_0x28d320},'json':!![]})[_0x3e4c('0x28')](function(_0x1b6ea0){if(_0x1b6ea0&&_0x1b6ea0[_0x3e4c('0x3c')][0x0][_0x3e4c('0x44')]===_0x3e4c('0x45')){var _0x1c429e=_0x1b6ea0[_0x3e4c('0x3c')][0x0]['details'];_0x1c429e[_0x3e4c('0x3d')]=_[_0x3e4c('0x3f')](_0x2a0f15[_0x3e4c('0x40')])+'s';return _0x1c429e;}logger['error'](_0x3e4c('0x39'),JSON['stringify'](data));throw new Error(_0x3e4c('0x46')+JSON[_0x3e4c('0xd')](data));})[_0x3e4c('0x3b')](function(_0x3ca775){console[_0x3e4c('0x47')](_0x3e4c('0x48'),_0x3ca775);});}function getEndUser(_0x56fc61,_0x24be01,_0x389a0e,_0x2fe238,_0x18d8e3,_0x2501ea,_0x103fdf){var _0x2d658e={'method':_0x3e4c('0x2d'),'uri':'','headers':{'Authorization':_0x3e4c('0x43')+_0x56fc61},'json':!![]};switch(_0x103fdf[_0x3e4c('0x49')]){case _0x3e4c('0x4a'):_0x2d658e[_0x3e4c('0x4b')]=_0x3e4c('0x4c')+_0x24be01+_0x3e4c('0x4d')+_0x18d8e3+'))';return getZohoUser(_0x2d658e,'Contacts')[_0x3e4c('0x28')](function(_0x4bd9f5){if(_0x4bd9f5)return _0x4bd9f5;_0x2d658e[_0x3e4c('0x4b')]='https://www.zohoapis.'+_0x24be01+_0x3e4c('0x4e')+_0x18d8e3+'))';return getZohoUser(_0x2d658e,_0x3e4c('0x4f'))['then'](function(_0x1f20e7){if(_0x1f20e7)return _0x1f20e7;if(_0x103fdf['moduleCreate']!=_0x3e4c('0x50')){return createEndUser(_0x56fc61,_0x24be01,_0x2fe238,_0x18d8e3,_0x2501ea,_0x103fdf);}else{return{};}});});break;case _0x3e4c('0x51'):_0x2d658e['uri']='https://www.zohoapis.'+_0x24be01+_0x3e4c('0x4d')+_0x18d8e3+'))';return getZohoUser(_0x2d658e,_0x3e4c('0x52'))[_0x3e4c('0x28')](function(_0x117733){if(_0x117733)return _0x117733;if(_0x103fdf[_0x3e4c('0x40')]!=_0x3e4c('0x50')){return createEndUser(_0x56fc61,_0x24be01,_0x2fe238,_0x18d8e3,_0x2501ea,_0x103fdf);}else{return{};}});break;case _0x3e4c('0x53'):_0x2d658e[_0x3e4c('0x4b')]=_0x3e4c('0x4c')+_0x24be01+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x18d8e3+'))';return getZohoUser(_0x2d658e,_0x3e4c('0x4f'))[_0x3e4c('0x28')](function(_0x45de37){if(_0x45de37)return _0x45de37;if(_0x103fdf[_0x3e4c('0x40')]!=_0x3e4c('0x50')){return createEndUser(_0x56fc61,_0x24be01,_0x2fe238,_0x18d8e3,_0x2501ea,_0x103fdf);}else{return{};}});break;}}function getCall(_0x44efb8,_0x5e7576,_0x439960,_0x3a1535,_0x4f94c5,_0x19f2b2,_0x1516f7,_0x2dc42b){logger[_0x3e4c('0x2c')](_0x3e4c('0x54'));var _0x53b62a={};_0x53b62a[_0x3e4c('0x55')]={'name':!_['isNil'](_0x3a1535['role'][_0x3e4c('0x18')])&&!_[_0x3e4c('0x1c')](_0x3a1535[_0x3e4c('0x36')][_0x3e4c('0x18')])&&_0x3a1535['profile']['name']==='administrator'?_0x3a1535['role'][_0x3e4c('0x18')]:!_[_0x3e4c('0x1c')](_0x3a1535['first_name'])?_0x3a1535[_0x3e4c('0x42')]+'\x20'+_0x3a1535[_0x3e4c('0x56')]:_0x3a1535['last_name'],'id':_0x3a1535['id']};_0x53b62a['Subject']=intUtil[_0x3e4c('0x57')](_0x19f2b2[_0x3e4c('0x58')],_0x1516f7,'\x20');_0x53b62a['Description']=intUtil[_0x3e4c('0x57')](_0x19f2b2[_0x3e4c('0x59')],_0x1516f7,'\x0a');if(_0x4f94c5[_0x3e4c('0x3d')]===_0x3e4c('0x52')){_0x53b62a['Who_Id']={'name':!_[_0x3e4c('0x1c')](_0x4f94c5[_0x3e4c('0x5a')])?_0x4f94c5['Full_Name']:!_[_0x3e4c('0x1c')](_0x4f94c5[_0x3e4c('0x5b')])?_0x4f94c5['First_Name']+'\x20'+_0x4f94c5[_0x3e4c('0x5c')]:_0x4f94c5[_0x3e4c('0x5c')],'id':_0x4f94c5['id']};}if(_0x4f94c5['enduserType']==='Leads'){_0x53b62a['What_Id']={'name':!_['isNil'](_0x4f94c5[_0x3e4c('0x5a')])?_0x4f94c5['Full_Name']:!_[_0x3e4c('0x1c')](_0x4f94c5[_0x3e4c('0x5b')])?_0x4f94c5[_0x3e4c('0x5b')]+'\x20'+_0x4f94c5['Last_Name']:_0x4f94c5['Last_Name'],'id':_0x4f94c5['id']};_0x53b62a[_0x3e4c('0x5d')]=_[_0x3e4c('0x3f')](_0x4f94c5[_0x3e4c('0x3d')]);}if(_0x1516f7[_0x3e4c('0x5e')]){_0x53b62a['Call_Duration']=moment[_0x3e4c('0x5f')](parseInt(_0x1516f7[_0x3e4c('0x5e')])*0x3e8)[_0x3e4c('0x2e')]('mm:ss');}else if(_0x1516f7[_0x3e4c('0x60')]&&_0x1516f7[_0x3e4c('0x61')]){_0x53b62a[_0x3e4c('0x62')]=moment[_0x3e4c('0x5f')](moment(_0x1516f7[_0x3e4c('0x61')],'YYYY-MM-DDTHH:mm:ss')[_0x3e4c('0x63')](moment(_0x1516f7[_0x3e4c('0x64')],'YYYY-MM-DDTHH:mm:ss')))['format'](_0x3e4c('0x65'));}switch(_0x1516f7[_0x3e4c('0x66')]){case _0x3e4c('0x67'):_0x53b62a['Call_Result']=_0x3e4c('0x68');break;case _0x3e4c('0x69'):case _0x3e4c('0x6a'):_0x53b62a[_0x3e4c('0x6b')]=_0x3e4c('0x6c');break;case'rejected':_0x53b62a[_0x3e4c('0x6b')]=_0x3e4c('0x6d');break;case _0x3e4c('0x6e'):_0x53b62a[_0x3e4c('0x6b')]='Abandoned';break;case'timeout':_0x53b62a[_0x3e4c('0x6b')]=_0x3e4c('0x6f');default:}_0x53b62a[_0x3e4c('0x70')]=(_0x2dc42b===_0x3e4c('0x71')?moment(_0x1516f7['starttime'])[_0x3e4c('0x2e')](_0x3e4c('0x72')):moment(_0x1516f7['agentcalledAt'])[_0x3e4c('0x2e')](_0x3e4c('0x72')))||moment()[_0x3e4c('0x2e')](_0x3e4c('0x72'));_0x53b62a[_0x3e4c('0x73')]=_0x2dc42b||_0x3e4c('0x74');_0x53b62a=_[_0x3e4c('0x75')](_0x53b62a,getCustomFields(_0x19f2b2[_0x3e4c('0x76')],_0x1516f7));return request({'method':_0x3e4c('0x24'),'uri':_0x3e4c('0x4c')+_0x5e7576+_0x3e4c('0x77'),'headers':{'Authorization':_0x3e4c('0x43')+_0x44efb8},'body':{'data':[_0x53b62a]},'json':!![]})[_0x3e4c('0x28')](function(_0x407e64){if(_0x407e64&&_0x407e64[_0x3e4c('0x3c')][0x0]['code']===_0x3e4c('0x45')){logger[_0x3e4c('0x2c')](_0x3e4c('0x78'));return{'id':_0x407e64[_0x3e4c('0x3c')][0x0][_0x3e4c('0x79')]['id']};}})['catch'](function(_0x345a2c){logger['info'](_0x3e4c('0x7a'),_0x345a2c[_0x3e4c('0x2b')]);console[_0x3e4c('0x47')](_0x3e4c('0x7a'),_0x345a2c);});}exports[_0x3e4c('0x7b')]=function(_0x45ccc3,_0x1e01f5,_0xd705e5,_0x23dcd5,_0x27cdab,_0x5d14f5){var _0x4718e1,_0x4e433a,_0x46504e;_0x5d14f5[_0x3e4c('0x7c')]=intUtil[_0x3e4c('0x7d')](_0x5d14f5[_0x3e4c('0x7c')]);_0x5d14f5[_0x3e4c('0x7e')]=intUtil['stripTrailingSlash'](_0x5d14f5[_0x3e4c('0x7e')]);if(_0x27cdab&&_0x27cdab[_0x3e4c('0x7f')]){logger['info']('[QUEUE]',_0x3e4c('0x80'));_0x1e01f5['recordingURL']=_0x5d14f5[_0x3e4c('0x7e')]+'/api/voice/recordings/'+_0x1e01f5[_0x3e4c('0x81')]+_0x3e4c('0x82')+md5(_0x1e01f5[_0x3e4c('0x81')]);}else{_0x1e01f5[_0x3e4c('0x83')]='';}var _0x5833ab=_0x5d14f5[_0x3e4c('0x7c')]===_0x3e4c('0x84')?'eu':_0x3e4c('0x85');return getAccessToken(_0x5d14f5)[_0x3e4c('0x28')](function(_0xe3c5e3){_0x46504e=_0xe3c5e3;return getUser(_0x46504e,_0x5833ab,_0x5d14f5,_0x23dcd5[_0x3e4c('0x32')]);})[_0x3e4c('0x28')](function(_0x2f5ac7){_0x4718e1=_0x2f5ac7;logger['info']('The\x20User\x20ID\x20is:',_0x4718e1['id']);return getEndUser(_0x46504e,_0x5833ab,_0x5d14f5,_0x1e01f5[_0x3e4c('0x86')],_0x1e01f5[_0x3e4c('0x87')],_0x4718e1,_0xd705e5);})[_0x3e4c('0x28')](function(_0x365025){_0x4e433a=_0x365025;return getCall(_0x46504e,_0x5833ab,_0x5d14f5,_0x4718e1,_0x4e433a,_0xd705e5,_0x1e01f5,_0x3e4c('0x74'));})['then'](function(_0x37f6b9){if(_0x37f6b9){logger[_0x3e4c('0x2c')]('The\x20Call\x20ID\x20is:',_0x37f6b9['id']);logger['info'](_0x3e4c('0x88'),_0x3e4c('0x89'));emit(util[_0x3e4c('0x2e')]('user:%s',_0x23dcd5[_0x3e4c('0x18')]),'trigger:browser:url',{'uri':'https://crm.'+_0x5d14f5[_0x3e4c('0x7c')]+_0x3e4c('0x8a')+_0x37f6b9['id']});}})[_0x3e4c('0x3b')](function(_0x23554a){logger[_0x3e4c('0x38')](_0x3e4c('0x88'),JSON[_0x3e4c('0xd')](_0x23554a));});};exports[_0x3e4c('0x71')]=function(_0x5a8526,_0x2eba98,_0x408337,_0x197bee,_0x5eb9c0,_0x3931db,_0x12be1a){var _0xeb3d47,_0x1603c3,_0x18fa2a;_0x3931db[_0x3e4c('0x7c')]=intUtil[_0x3e4c('0x7d')](_0x3931db[_0x3e4c('0x7c')]);_0x3931db[_0x3e4c('0x7e')]=intUtil[_0x3e4c('0x7d')](_0x3931db['serverUrl']);if(_0x12be1a&&_0x12be1a['recordingFormat']&&_0x12be1a[_0x3e4c('0x8b')]!==_0x3e4c('0x8c')){logger[_0x3e4c('0x2c')](_0x3e4c('0x8d'),'Recording\x20is\x20enabled!');_0x2eba98[_0x3e4c('0x83')]=_0x3931db['serverUrl']+_0x3e4c('0x8e')+_0x2eba98['uniqueid']+_0x3e4c('0x82')+md5(_0x2eba98['uniqueid']);}var _0x2e6d1c=_0x3931db[_0x3e4c('0x7c')]===_0x3e4c('0x84')?'eu':'com';return getAccessToken(_0x3931db)[_0x3e4c('0x28')](function(_0x4c49cb){_0x18fa2a=_0x4c49cb;return getUser(_0x18fa2a,_0x2e6d1c,_0x3931db,_0x197bee[_0x3e4c('0x32')]);})[_0x3e4c('0x28')](function(_0x13d659){_0xeb3d47=_0x13d659;logger['info']('The\x20User\x20ID\x20is:',_0xeb3d47['id']);return getEndUser(_0x18fa2a,_0x2e6d1c,_0x3931db,_0x2eba98[_0x3e4c('0x8f')],_0x2eba98[_0x3e4c('0x90')],_0xeb3d47,_0x408337);})[_0x3e4c('0x28')](function(_0x3c1d6f){_0x1603c3=_0x3c1d6f;return getCall(_0x18fa2a,_0x2e6d1c,_0x3931db,_0xeb3d47,_0x1603c3,_0x408337,_0x2eba98,_0x3e4c('0x91'));})[_0x3e4c('0x28')](function(_0x63f989){if(_0x63f989){logger[_0x3e4c('0x2c')](_0x3e4c('0x92'),_0x63f989['id']);logger[_0x3e4c('0x2c')](_0x3e4c('0x8d'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x3e4c('0x2e')](_0x3e4c('0x93'),_0x197bee['name']),_0x3e4c('0x94'),{'uri':_0x3e4c('0x95')+_0x3931db['host']+_0x3e4c('0x8a')+_0x63f989['id']});}})['catch'](function(_0x3468ad){logger['error'](_0x3e4c('0x8d'),JSON[_0x3e4c('0xd')](_0x3468ad));});};exports[_0x3e4c('0x96')]=function(_0x4be457,_0x5ecf42,_0xdb8f71,_0x40c4b0,_0x47bb5f,_0x2c6bbc){var _0x39e249,_0x2639a3,_0x556d15;_0x2c6bbc[_0x3e4c('0x7c')]=intUtil[_0x3e4c('0x7d')](_0x2c6bbc['host']);_0x2c6bbc['serverUrl']=intUtil[_0x3e4c('0x7d')](_0x2c6bbc[_0x3e4c('0x7e')]);if(_0x47bb5f&&_0x47bb5f[_0x3e4c('0x7f')]){logger[_0x3e4c('0x2c')]('['+_0x5ecf42[_0x3e4c('0x66')][_0x3e4c('0x97')]()+']',_0x3e4c('0x80'));_0x5ecf42['recordingURL']=_0x2c6bbc[_0x3e4c('0x7e')]+_0x3e4c('0x8e')+_0x5ecf42[_0x3e4c('0x81')]+_0x3e4c('0x82')+md5(_0x5ecf42[_0x3e4c('0x81')]);}else{_0x5ecf42[_0x3e4c('0x83')]='';}var _0x3ebc74=_0x2c6bbc[_0x3e4c('0x7c')]===_0x3e4c('0x84')?'eu':_0x3e4c('0x85');return getAccessToken(_0x2c6bbc)[_0x3e4c('0x28')](function(_0x350e19){_0x556d15=_0x350e19;return getUser(_0x556d15,_0x3ebc74,_0x2c6bbc);})['then'](function(_0x5308b2){_0x39e249=_0x5308b2;logger[_0x3e4c('0x2c')](_0x3e4c('0x98'),_0x39e249['id']);return getEndUser(_0x556d15,_0x3ebc74,_0x2c6bbc,_0x5ecf42['calleridname'],_0x5ecf42['calleridnum'],_0x39e249,_0xdb8f71);})[_0x3e4c('0x28')](function(_0x5377f3){_0x2639a3=_0x5377f3;return getCall(_0x556d15,_0x3ebc74,_0x2c6bbc,_0x39e249,_0x2639a3,_0xdb8f71,_0x5ecf42,_0x3e4c('0x74'));})['then'](function(_0x10149a){if(_0x10149a){logger[_0x3e4c('0x2c')](_0x3e4c('0x92'),_0x10149a['id']);}})[_0x3e4c('0x3b')](function(_0x59c56a){logger[_0x3e4c('0x38')]('['+_0x5ecf42[_0x3e4c('0x66')][_0x3e4c('0x97')]()+']',JSON[_0x3e4c('0xd')](_0x59c56a));});};
\ No newline at end of file
+var _0xd19f=['lastevent','called','Call_Result','Called','complete','connect','Answered','Rejected','abandoned','Timeout','Call_Start_Time','Inbound','merge','Fields','/crm/v2/Calls','SUCCESS','details','err','queue','host','serverUrl','monitor_format','[QUEUE]','recordingURL','/api/voice/recordings/','uniqueid','The\x20User\x20ID\x20is:','calleridname','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','https://crm.','/crm/EntityInfo.do?module=Calls&id=','stripTrailingSlash','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','/downloads?type=uniqueid&token=','com','destcalleridname','destcalleridnum','Outbound','trigger:browser:url','toUpperCase','zoho.eu','calleridnum','lodash','request-promise','md5','util','./util','moment','bluebird','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','debug','[HTTP]','stringify','forEach','includes','string','type','idField','content','toString','variable','variableName','Variable','name','toLowerCase','isNil','access_token','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','POST','refreshToken','refresh_token','then','add','catch','error','stack','info','Search\x20user','GET','ActiveUsers','users','isArrayLikeObject','findIndex','email','Using\x20the\x20admin\x20account!','profile','Administrator','user','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','The\x20failing\x20result\x20is','enduserType','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','data','Error:\x20','log','Zoho-oauthtoken\x20','moduleSearch','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','Leads','nothing','lead','Creating\x20new\x20call...','Owner','administrator','getString','Subjects','Description','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','utc','talktime','format','answertime','Call_Duration','endtime','YYYY-MM-DDTHH:mm:ss','diff','starttime','mm:ss'];(function(_0x36d5e4,_0x41eb9a){var _0x2a70bb=function(_0x2f6488){while(--_0x2f6488){_0x36d5e4['push'](_0x36d5e4['shift']());}};_0x2a70bb(++_0x41eb9a);}(_0xd19f,0x1e4));var _0xfd19=function(_0x193e28,_0x3dac1d){_0x193e28=_0x193e28-0x0;var _0x20ef59=_0xd19f[_0x193e28];return _0x20ef59;};'use strict';var _=require(_0xfd19('0x0'));var rp=require(_0xfd19('0x1'));var md5=require(_0xfd19('0x2'));var util=require(_0xfd19('0x3'));var intUtil=require(_0xfd19('0x4'));var moment=require(_0xfd19('0x5'));var Redis=require('ioredis');var BPromise=require(_0xfd19('0x6'));var config=require(_0xfd19('0x7'));var logger=require(_0xfd19('0x8'))('zoho');config[_0xfd19('0x9')]=_[_0xfd19('0xa')](config[_0xfd19('0x9')],{'host':_0xfd19('0xb'),'port':0x18eb});var io=require(_0xfd19('0xc'))(new Redis(config['redis']));function emit(_0x25eaf6,_0x3a4a4c,_0x56378d){io['to'](_0x25eaf6)[_0xfd19('0xd')](_0x3a4a4c,_0x56378d);}function request(_0x41c116){logger[_0xfd19('0xe')](_0xfd19('0xf'),JSON[_0xfd19('0x10')](_0x41c116));return rp(_0x41c116);}function getCustomFields(_0x1fd208,_0x1c5dbb){var _0x15c6ac={};if(_0x1fd208['length']>0x0){_[_0xfd19('0x11')](_0x1fd208,function(_0x31e78e){if(_[_0xfd19('0x12')]([_0xfd19('0x13'),'picklist'],_0x31e78e[_0xfd19('0x14')])&&_0x31e78e['idField']){_0x15c6ac[_0x31e78e[_0xfd19('0x15')]]=_0x31e78e[_0xfd19('0x16')][_0xfd19('0x17')]();}else if(_0x31e78e['type']===_0xfd19('0x18')&&_0x31e78e['variableName']&&_0x31e78e[_0xfd19('0x15')]&&_0x1c5dbb[_0x31e78e[_0xfd19('0x19')]]){_0x15c6ac[_0x31e78e[_0xfd19('0x15')]]=_0x1c5dbb[_0x31e78e[_0xfd19('0x19')]]['toString']();}else if(_0x31e78e['type']==='customVariable'&&_0x31e78e[_0xfd19('0x1a')]&&_0x31e78e['Variable'][_0xfd19('0x1b')]&&_0x31e78e[_0xfd19('0x15')]&&_0x1c5dbb[_0x31e78e[_0xfd19('0x1a')][_0xfd19('0x1b')][_0xfd19('0x1c')]()]){_0x15c6ac[_0x31e78e[_0xfd19('0x15')]]=_0x1c5dbb[_0x31e78e[_0xfd19('0x1a')]['name']['toLowerCase']()][_0xfd19('0x17')]();}});}return _0x15c6ac;}function getName(_0x247fc0){if(_0x247fc0['indexOf']('\x20')>0x0){var _0x533fd6=_0x247fc0['split'](/ (.+)/);if(_0x533fd6[0x1]){return _0x533fd6;}}return[_0x247fc0,_0x247fc0];}var accountsTokens={};function getAccessToken(_0x54e703){return new Promise(function(_0x5084bc,_0x2fa95b){if(!_[_0xfd19('0x1d')](accountsTokens[_0x54e703['id']])&&!_['isNil'](accountsTokens[_0x54e703['id']][_0xfd19('0x1e')])){if(moment()['isBefore'](accountsTokens[_0x54e703['id']][_0xfd19('0x1f')])){_0x5084bc(accountsTokens[_0x54e703['id']][_0xfd19('0x1e')]);}}var _0x310c34;switch(_0x54e703[_0xfd19('0x20')]){case'US':_0x310c34=_0xfd19('0x21');break;case'AU':_0x310c34=_0xfd19('0x22');break;case'EU':_0x310c34=_0xfd19('0x23');break;case'IN':_0x310c34='https://accounts.zoho.in';break;case'CN':_0x310c34='https://accounts.zoho.com.cn';break;default:_0x310c34=_0xfd19('0x23');break;}var _0x24bc8e={'method':_0xfd19('0x24'),'uri':_0x310c34+'/oauth/v2/token','qs':{'refresh_token':_0x54e703[_0xfd19('0x25')],'client_id':_0x54e703['clientId'],'client_secret':_0x54e703['clientSecret'],'grant_type':_0xfd19('0x26')},'json':!![]};return rp(_0x24bc8e)[_0xfd19('0x27')](function(_0x435e39){accountsTokens[_0x54e703['id']]={'access_token':_0x435e39[_0xfd19('0x1e')],'expires_in':moment()[_0xfd19('0x28')](_0x435e39[_0xfd19('0x1f')],'seconds')};_0x5084bc(_0x435e39[_0xfd19('0x1e')]);})[_0xfd19('0x29')](function(_0x1c5568){logger[_0xfd19('0x2a')]('Failing\x20creating\x20the\x20access_token',_0x1c5568[_0xfd19('0x2b')]);_0x2fa95b(_0x1c5568);});});}function getUser(_0x4b260c,_0x188f92,_0x14b8ab,_0x246a3b){logger[_0xfd19('0x2c')](_0xfd19('0x2d'));return request({'method':_0xfd19('0x2e'),'uri':util['format']('https://www.zohoapis.%s/crm/v2/users',_0x188f92),'qs':{'type':_0xfd19('0x2f')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x4b260c},'json':!![]})[_0xfd19('0x27')](function(_0x191d7c){if(_0x191d7c[_0xfd19('0x30')]){var _0x23560d=-0x1;if(_[_0xfd19('0x31')](_0x191d7c[_0xfd19('0x30')])){if(!_[_0xfd19('0x1d')](_0x246a3b)){_0x23560d=_[_0xfd19('0x32')](_0x191d7c[_0xfd19('0x30')],function(_0x35146d){return _0x35146d[_0xfd19('0x33')]===_0x246a3b;});}if(_0x23560d>=0x0){logger[_0xfd19('0x2c')]('Agent\x20found!');}else{logger[_0xfd19('0x2c')](_0xfd19('0x34'));_0x23560d=_[_0xfd19('0x32')](_0x191d7c[_0xfd19('0x30')],function(_0x17c01b){return _0x17c01b[_0xfd19('0x35')][_0xfd19('0x1b')]===_0xfd19('0x36');});}return _0x191d7c['users'][_0x23560d];}else{if(_0x191d7c[_0xfd19('0x37')][_0xfd19('0x35')][_0xfd19('0x1b')]===_0xfd19('0x36')){logger['info'](_0xfd19('0x34'));user=_0x191d7c[_0xfd19('0x37')];return user;}else{logger['error']('The\x20failing\x20result\x20is',JSON['stringify'](_0x191d7c));throw new Error(_0xfd19('0x38')+JSON['stringify'](_0x191d7c));}}}else{logger[_0xfd19('0x2a')](_0xfd19('0x39'),JSON[_0xfd19('0x10')](_0x191d7c));throw new Error(_0xfd19('0x38')+JSON[_0xfd19('0x10')](_0x191d7c));}})['catch'](function(_0x3c122c){console[_0xfd19('0x2a')](_0x3c122c);});}function getZohoUser(_0x26fc29,_0x288f25){return new BPromise(function(_0x4173d6,_0x2e30ef){request(_0x26fc29)[_0xfd19('0x27')](function(_0x2ab053){var _0x26b371=null;if(_0x2ab053){_0x26b371=_0x2ab053['data'][0x0];_0x26b371[_0xfd19('0x3a')]=_0x288f25;}_0x4173d6(_0x26b371);})['catch'](function(_0x3c076e){_0x2e30ef(_0x3c076e);});});}function createEndUser(_0x2a14dc,_0x4df213,_0x1d4845,_0x7c1779,_0x479248,_0x2a0ecf){var _0x1d4845=getName(_0x1d4845);return request({'method':'POST','uri':_0xfd19('0x3b')+_0x4df213+_0xfd19('0x3c')+_[_0xfd19('0x3d')](_0x2a0ecf[_0xfd19('0x3e')])+'s','body':{'data':[{'Last_Name':_0x1d4845[0x1],'First_Name':_0x1d4845[0x0],'Phone':_0x7c1779,'Owner':{'name':!_[_0xfd19('0x1d')](_0x479248[_0xfd19('0x3f')]['name'])?_0x479248[_0xfd19('0x3f')][_0xfd19('0x1b')]:!_[_0xfd19('0x1d')](_0x479248[_0xfd19('0x40')])?_0x479248[_0xfd19('0x40')]+'\x20'+_0x479248[_0xfd19('0x41')]:_0x479248['last_name'],'id':_0x479248['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x2a14dc},'json':!![]})[_0xfd19('0x27')](function(_0x397ca4){if(_0x397ca4&&_0x397ca4[_0xfd19('0x42')][0x0]['code']==='SUCCESS'){var _0x1ab976=_0x397ca4[_0xfd19('0x42')][0x0]['details'];_0x1ab976[_0xfd19('0x3a')]=_[_0xfd19('0x3d')](_0x2a0ecf[_0xfd19('0x3e')])+'s';return _0x1ab976;}logger[_0xfd19('0x2a')](_0xfd19('0x39'),JSON[_0xfd19('0x10')](data));throw new Error(_0xfd19('0x43')+JSON[_0xfd19('0x10')](data));})[_0xfd19('0x29')](function(_0x5f1d85){console[_0xfd19('0x44')]('CREATE\x20ERROR',_0x5f1d85);});}function getEndUser(_0x5e86fc,_0x19403b,_0x1696d8,_0xcd4750,_0x810910,_0x30fc70,_0x2fe624){var _0x59994b={'method':_0xfd19('0x2e'),'uri':'','headers':{'Authorization':_0xfd19('0x45')+_0x5e86fc},'json':!![]};switch(_0x2fe624[_0xfd19('0x46')]){case'contact_lead':_0x59994b[_0xfd19('0x47')]=_0xfd19('0x3b')+_0x19403b+_0xfd19('0x48')+_0x810910+'))';return getZohoUser(_0x59994b,_0xfd19('0x49'))[_0xfd19('0x27')](function(_0x57069d){if(_0x57069d)return _0x57069d;_0x59994b[_0xfd19('0x47')]=_0xfd19('0x3b')+_0x19403b+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x810910+'))';return getZohoUser(_0x59994b,_0xfd19('0x4a'))[_0xfd19('0x27')](function(_0xee7132){if(_0xee7132)return _0xee7132;if(_0x2fe624['moduleCreate']!=_0xfd19('0x4b')){return createEndUser(_0x5e86fc,_0x19403b,_0xcd4750,_0x810910,_0x30fc70,_0x2fe624);}else{return{};}});});break;case'contact':_0x59994b[_0xfd19('0x47')]=_0xfd19('0x3b')+_0x19403b+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x810910+'))';return getZohoUser(_0x59994b,'Contacts')[_0xfd19('0x27')](function(_0x5c1420){if(_0x5c1420)return _0x5c1420;if(_0x2fe624[_0xfd19('0x3e')]!=_0xfd19('0x4b')){return createEndUser(_0x5e86fc,_0x19403b,_0xcd4750,_0x810910,_0x30fc70,_0x2fe624);}else{return{};}});break;case _0xfd19('0x4c'):_0x59994b['uri']=_0xfd19('0x3b')+_0x19403b+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x810910+'))';return getZohoUser(_0x59994b,_0xfd19('0x4a'))[_0xfd19('0x27')](function(_0x52ca36){if(_0x52ca36)return _0x52ca36;if(_0x2fe624[_0xfd19('0x3e')]!=_0xfd19('0x4b')){return createEndUser(_0x5e86fc,_0x19403b,_0xcd4750,_0x810910,_0x30fc70,_0x2fe624);}else{return{};}});break;}}function getCall(_0x34b47d,_0x3ccf8d,_0x149fee,_0x1ba037,_0x1ffba1,_0x5bf6c3,_0xa873cc,_0xaa19c3){logger['info'](_0xfd19('0x4d'));var _0x548f4e={};_0x548f4e[_0xfd19('0x4e')]={'name':!_[_0xfd19('0x1d')](_0x1ba037['role']['name'])&&!_[_0xfd19('0x1d')](_0x1ba037[_0xfd19('0x35')]['name'])&&_0x1ba037['profile'][_0xfd19('0x1b')]===_0xfd19('0x4f')?_0x1ba037[_0xfd19('0x3f')]['name']:!_[_0xfd19('0x1d')](_0x1ba037[_0xfd19('0x40')])?_0x1ba037[_0xfd19('0x40')]+'\x20'+_0x1ba037[_0xfd19('0x41')]:_0x1ba037[_0xfd19('0x41')],'id':_0x1ba037['id']};_0x548f4e['Subject']=intUtil[_0xfd19('0x50')](_0x5bf6c3[_0xfd19('0x51')],_0xa873cc,'\x20');_0x548f4e[_0xfd19('0x52')]=intUtil[_0xfd19('0x50')](_0x5bf6c3[_0xfd19('0x53')],_0xa873cc,'\x0a');if(_0x1ffba1[_0xfd19('0x3a')]===_0xfd19('0x49')){_0x548f4e[_0xfd19('0x54')]={'name':!_['isNil'](_0x1ffba1[_0xfd19('0x55')])?_0x1ffba1[_0xfd19('0x55')]:!_[_0xfd19('0x1d')](_0x1ffba1['First_Name'])?_0x1ffba1[_0xfd19('0x56')]+'\x20'+_0x1ffba1[_0xfd19('0x57')]:_0x1ffba1[_0xfd19('0x57')],'id':_0x1ffba1['id']};}if(_0x1ffba1[_0xfd19('0x3a')]===_0xfd19('0x4a')){_0x548f4e[_0xfd19('0x58')]={'name':!_[_0xfd19('0x1d')](_0x1ffba1[_0xfd19('0x55')])?_0x1ffba1[_0xfd19('0x55')]:!_[_0xfd19('0x1d')](_0x1ffba1[_0xfd19('0x56')])?_0x1ffba1[_0xfd19('0x56')]+'\x20'+_0x1ffba1[_0xfd19('0x57')]:_0x1ffba1[_0xfd19('0x57')],'id':_0x1ffba1['id']};_0x548f4e[_0xfd19('0x59')]=_[_0xfd19('0x3d')](_0x1ffba1[_0xfd19('0x3a')]);}if(_0xa873cc['talktime']){_0x548f4e['Call_Duration']=moment[_0xfd19('0x5a')](parseInt(_0xa873cc[_0xfd19('0x5b')])*0x3e8)[_0xfd19('0x5c')]('mm:ss');}else if(_0xa873cc[_0xfd19('0x5d')]&&_0xa873cc['endtime']){_0x548f4e[_0xfd19('0x5e')]=moment[_0xfd19('0x5a')](moment(_0xa873cc[_0xfd19('0x5f')],_0xfd19('0x60'))[_0xfd19('0x61')](moment(_0xa873cc[_0xfd19('0x62')],_0xfd19('0x60'))))[_0xfd19('0x5c')](_0xfd19('0x63'));}switch(_0xa873cc[_0xfd19('0x64')]){case _0xfd19('0x65'):_0x548f4e[_0xfd19('0x66')]=_0xfd19('0x67');break;case _0xfd19('0x68'):case _0xfd19('0x69'):_0x548f4e[_0xfd19('0x66')]=_0xfd19('0x6a');break;case'rejected':_0x548f4e[_0xfd19('0x66')]=_0xfd19('0x6b');break;case _0xfd19('0x6c'):_0x548f4e[_0xfd19('0x66')]='Abandoned';break;case'timeout':_0x548f4e[_0xfd19('0x66')]=_0xfd19('0x6d');default:}_0x548f4e[_0xfd19('0x6e')]=(_0xaa19c3==='outbound'?moment(_0xa873cc[_0xfd19('0x62')])[_0xfd19('0x5c')](_0xfd19('0x60')):moment(_0xa873cc['agentcalledAt'])[_0xfd19('0x5c')]('YYYY-MM-DDTHH:mm:ss'))||moment()[_0xfd19('0x5c')](_0xfd19('0x60'));_0x548f4e['Call_Type']=_0xaa19c3||_0xfd19('0x6f');_0x548f4e=_[_0xfd19('0x70')](_0x548f4e,getCustomFields(_0x5bf6c3[_0xfd19('0x71')],_0xa873cc));return request({'method':_0xfd19('0x24'),'uri':_0xfd19('0x3b')+_0x3ccf8d+_0xfd19('0x72'),'headers':{'Authorization':_0xfd19('0x45')+_0x34b47d},'body':{'data':[_0x548f4e]},'json':!![]})['then'](function(_0x620cd0){if(_0x620cd0&&_0x620cd0[_0xfd19('0x42')][0x0]['code']===_0xfd19('0x73')){logger[_0xfd19('0x2c')]('Call\x20created!');return{'id':_0x620cd0[_0xfd19('0x42')][0x0][_0xfd19('0x74')]['id']};}})[_0xfd19('0x29')](function(_0x481e27){logger[_0xfd19('0x2c')](_0xfd19('0x75'),_0x481e27['stack']);console[_0xfd19('0x44')](_0xfd19('0x75'),_0x481e27);});}exports[_0xfd19('0x76')]=function(_0x4a3311,_0x4bc6d7,_0x4a2e0c,_0x4ebfa0,_0x4ab144,_0xd9c31e){var _0x546773,_0x337afd,_0x4bfaf1;_0xd9c31e[_0xfd19('0x77')]=intUtil['stripTrailingSlash'](_0xd9c31e[_0xfd19('0x77')]);_0xd9c31e[_0xfd19('0x78')]=intUtil['stripTrailingSlash'](_0xd9c31e['serverUrl']);if(_0x4ab144&&_0x4ab144[_0xfd19('0x79')]){logger['info'](_0xfd19('0x7a'),'Recording\x20is\x20enabled!');_0x4bc6d7[_0xfd19('0x7b')]=_0xd9c31e['serverUrl']+_0xfd19('0x7c')+_0x4bc6d7[_0xfd19('0x7d')]+'/downloads?type=uniqueid&token='+md5(_0x4bc6d7[_0xfd19('0x7d')]);}else{_0x4bc6d7[_0xfd19('0x7b')]='';}var _0x5e4d5d=_0xd9c31e[_0xfd19('0x77')]==='zoho.eu'?'eu':'com';return getAccessToken(_0xd9c31e)[_0xfd19('0x27')](function(_0x46f625){_0x4bfaf1=_0x46f625;return getUser(_0x4bfaf1,_0x5e4d5d,_0xd9c31e,_0x4ebfa0[_0xfd19('0x33')]);})[_0xfd19('0x27')](function(_0x26a212){_0x546773=_0x26a212;logger[_0xfd19('0x2c')](_0xfd19('0x7e'),_0x546773['id']);return getEndUser(_0x4bfaf1,_0x5e4d5d,_0xd9c31e,_0x4bc6d7[_0xfd19('0x7f')],_0x4bc6d7['calleridnum'],_0x546773,_0x4a2e0c);})[_0xfd19('0x27')](function(_0x3c664f){_0x337afd=_0x3c664f;return getCall(_0x4bfaf1,_0x5e4d5d,_0xd9c31e,_0x546773,_0x337afd,_0x4a2e0c,_0x4bc6d7,_0xfd19('0x6f'));})['then'](function(_0x264186){if(_0x264186){logger[_0xfd19('0x2c')](_0xfd19('0x80'),_0x264186['id']);logger[_0xfd19('0x2c')]('[QUEUE]',_0xfd19('0x81'));emit(util[_0xfd19('0x5c')](_0xfd19('0x82'),_0x4ebfa0['name']),'trigger:browser:url',{'uri':_0xfd19('0x83')+_0xd9c31e[_0xfd19('0x77')]+_0xfd19('0x84')+_0x264186['id']});}})[_0xfd19('0x29')](function(_0x11c83e){logger['error'](_0xfd19('0x7a'),JSON[_0xfd19('0x10')](_0x11c83e));});};exports['outbound']=function(_0x478920,_0x2c6c39,_0x28d438,_0x56ade0,_0x3e670c,_0x494029,_0x110490){var _0x341c6b,_0x1eb744,_0x3b3a87;_0x494029[_0xfd19('0x77')]=intUtil[_0xfd19('0x85')](_0x494029[_0xfd19('0x77')]);_0x494029[_0xfd19('0x78')]=intUtil['stripTrailingSlash'](_0x494029[_0xfd19('0x78')]);if(_0x110490&&_0x110490[_0xfd19('0x86')]&&_0x110490[_0xfd19('0x86')]!=='none'){logger['info'](_0xfd19('0x87'),_0xfd19('0x88'));_0x2c6c39[_0xfd19('0x7b')]=_0x494029['serverUrl']+_0xfd19('0x7c')+_0x2c6c39[_0xfd19('0x7d')]+_0xfd19('0x89')+md5(_0x2c6c39[_0xfd19('0x7d')]);}var _0x457674=_0x494029['host']==='zoho.eu'?'eu':_0xfd19('0x8a');return getAccessToken(_0x494029)[_0xfd19('0x27')](function(_0x56e83c){_0x3b3a87=_0x56e83c;return getUser(_0x3b3a87,_0x457674,_0x494029,_0x56ade0[_0xfd19('0x33')]);})['then'](function(_0x246a20){_0x341c6b=_0x246a20;logger[_0xfd19('0x2c')]('The\x20User\x20ID\x20is:',_0x341c6b['id']);return getEndUser(_0x3b3a87,_0x457674,_0x494029,_0x2c6c39[_0xfd19('0x8b')],_0x2c6c39[_0xfd19('0x8c')],_0x341c6b,_0x28d438);})[_0xfd19('0x27')](function(_0x36b7d3){_0x1eb744=_0x36b7d3;return getCall(_0x3b3a87,_0x457674,_0x494029,_0x341c6b,_0x1eb744,_0x28d438,_0x2c6c39,_0xfd19('0x8d'));})[_0xfd19('0x27')](function(_0x5b3037){if(_0x5b3037){logger['info'](_0xfd19('0x80'),_0x5b3037['id']);logger[_0xfd19('0x2c')](_0xfd19('0x87'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0xfd19('0x82'),_0x56ade0['name']),_0xfd19('0x8e'),{'uri':'https://crm.'+_0x494029[_0xfd19('0x77')]+_0xfd19('0x84')+_0x5b3037['id']});}})['catch'](function(_0x5c81e1){logger[_0xfd19('0x2a')](_0xfd19('0x87'),JSON['stringify'](_0x5c81e1));});};exports['unmanaged']=function(_0x5387af,_0x200480,_0x90d534,_0x116b31,_0x386fac,_0x6f9d33){var _0xf6d21d,_0x4e27dd,_0x5eb2ca;_0x6f9d33[_0xfd19('0x77')]=intUtil[_0xfd19('0x85')](_0x6f9d33['host']);_0x6f9d33[_0xfd19('0x78')]=intUtil[_0xfd19('0x85')](_0x6f9d33[_0xfd19('0x78')]);if(_0x386fac&&_0x386fac[_0xfd19('0x79')]){logger[_0xfd19('0x2c')]('['+_0x200480[_0xfd19('0x64')][_0xfd19('0x8f')]()+']',_0xfd19('0x88'));_0x200480[_0xfd19('0x7b')]=_0x6f9d33[_0xfd19('0x78')]+'/api/voice/recordings/'+_0x200480[_0xfd19('0x7d')]+_0xfd19('0x89')+md5(_0x200480['uniqueid']);}else{_0x200480[_0xfd19('0x7b')]='';}var _0x39ccce=_0x6f9d33[_0xfd19('0x77')]===_0xfd19('0x90')?'eu':'com';return getAccessToken(_0x6f9d33)['then'](function(_0x311ae4){_0x5eb2ca=_0x311ae4;return getUser(_0x5eb2ca,_0x39ccce,_0x6f9d33);})[_0xfd19('0x27')](function(_0x3ad85d){_0xf6d21d=_0x3ad85d;logger[_0xfd19('0x2c')](_0xfd19('0x7e'),_0xf6d21d['id']);return getEndUser(_0x5eb2ca,_0x39ccce,_0x6f9d33,_0x200480['calleridname'],_0x200480[_0xfd19('0x91')],_0xf6d21d,_0x90d534);})['then'](function(_0x4ed933){_0x4e27dd=_0x4ed933;return getCall(_0x5eb2ca,_0x39ccce,_0x6f9d33,_0xf6d21d,_0x4e27dd,_0x90d534,_0x200480,_0xfd19('0x6f'));})[_0xfd19('0x27')](function(_0x1982f6){if(_0x1982f6){logger['info'](_0xfd19('0x80'),_0x1982f6['id']);}})[_0xfd19('0x29')](function(_0x3e209b){logger[_0xfd19('0x2a')]('['+_0x200480['lastevent']['toUpperCase']()+']',JSON['stringify'](_0x3e209b));});};
\ No newline at end of file
index f531715..e1d0252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd517=['mustache','../../../../config/logger','trigger','exec','data2','data3','render','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','shelljs'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xd517,0x1a1));var _0x7d51=function(_0x2136d5,_0x4b0479){_0x2136d5=_0x2136d5-0x0;var _0x3bee2e=_0xd517[_0x2136d5];return _0x3bee2e;};'use strict';var util=require('util');var sh=require(_0x7d51('0x0'));var Mustache=require(_0x7d51('0x1'));var logger=require(_0x7d51('0x2'))(_0x7d51('0x3'));exports[_0x7d51('0x4')]=function(_0x2f89e6,_0x4a0752){var _0x3c6b19=_0x2f89e6['data2']?_0x2f89e6[_0x7d51('0x5')]:'Script';var _0x7d249f=_0x2f89e6[_0x7d51('0x6')]?Mustache[_0x7d51('0x7')](_0x2f89e6['data3'],_0x4a0752):_0x4a0752;sh['exec'](_0x7d249f,function(_0x755e87,_0x245fe7,_0x292ac8){if(_0x755e87!==0x0){logger['error'](util[_0x7d51('0x8')](_0x7d51('0x9'),_0x3c6b19,_0x7d249f,_0x755e87,_0x292ac8));}else{logger['info'](util[_0x7d51('0x8')](_0x7d51('0xa'),_0x3c6b19,_0x7d249f,_0x245fe7));}});};
\ No newline at end of file
+var _0x1382=['Script','data3','render','exec','error','format','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','mustache','../../../../config/logger','trigger','data2'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1382,0xc2));var _0x2138=function(_0x4698d5,_0x550284){_0x4698d5=_0x4698d5-0x0;var _0x5d0f36=_0x1382[_0x4698d5];return _0x5d0f36;};'use strict';var util=require('util');var sh=require('shelljs');var Mustache=require(_0x2138('0x0'));var logger=require(_0x2138('0x1'))(_0x2138('0x2'));exports['exec']=function(_0x2aba58,_0x5c65e4){var _0x366a00=_0x2aba58[_0x2138('0x3')]?_0x2aba58[_0x2138('0x3')]:_0x2138('0x4');var _0x18ae9c=_0x2aba58[_0x2138('0x5')]?Mustache[_0x2138('0x6')](_0x2aba58[_0x2138('0x5')],_0x5c65e4):_0x5c65e4;sh[_0x2138('0x7')](_0x18ae9c,function(_0x7596bb,_0x181bde,_0x14a2fa){if(_0x7596bb!==0x0){logger[_0x2138('0x8')](util['format']('%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s',_0x366a00,_0x18ae9c,_0x7596bb,_0x14a2fa));}else{logger['info'](util[_0x2138('0x9')](_0x2138('0xa'),_0x366a00,_0x18ae9c,_0x181bde));}});};
\ No newline at end of file
index 92332bb..92ad479 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa35a=['PUT','data7','body','stack','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then','isNil',',\x20request\x20body:\x20','object','statusCode','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','request-promise','../../../../config/logger','trigger','data1','data2','data5','number','headers','data6','parse','render','error','toUpperCase','DELETE'];(function(_0x518056,_0x4c6132){var _0x60543e=function(_0xf50422){while(--_0xf50422){_0x518056['push'](_0x518056['shift']());}};_0x60543e(++_0x4c6132);}(_0xa35a,0x1d2));var _0xaa35=function(_0x307d86,_0x9264f2){_0x307d86=_0x307d86-0x0;var _0x361745=_0xa35a[_0x307d86];return _0x361745;};'use strict';var rp=require(_0xaa35('0x0'));var util=require('util');var _=require('lodash');var Mustache=require('mustache');var logger=require(_0xaa35('0x1'))(_0xaa35('0x2'));exports['exec']=function(_0x15178c,_0xf3e79c){var _0xfd2055,_0x2b4366;var _0x3b303c={'method':_0x15178c[_0xaa35('0x3')]['toUpperCase'](),'uri':Mustache['render'](_0x15178c[_0xaa35('0x4')],_0xf3e79c),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x15178c[_0xaa35('0x5')])===_0xaa35('0x6')&&parseInt(_0x15178c[_0xaa35('0x5')])>=0x1&&parseInt(_0x15178c[_0xaa35('0x5')])<=0xa?parseInt(_0x15178c[_0xaa35('0x5')])*0x3e8:0x5*0x3e8};try{_0x3b303c[_0xaa35('0x7')]=_0x15178c[_0xaa35('0x8')]?JSON[_0xaa35('0x9')](Mustache[_0xaa35('0xa')](_0x15178c[_0xaa35('0x8')],_0xf3e79c)):{};}catch(_0x50efa9){logger[_0xaa35('0xb')](_0x50efa9['stack']);}switch(_0x15178c[_0xaa35('0x3')][_0xaa35('0xc')]()){case'GET':case _0xaa35('0xd'):_0xfd2055=null;_0x3b303c['qs']=_0xf3e79c;break;case'POST':case _0xaa35('0xe'):if(_0x15178c['data7']){try{_0xfd2055=JSON[_0xaa35('0x9')](Mustache[_0xaa35('0xa')](_0x15178c[_0xaa35('0xf')],_0xf3e79c));_0x3b303c[_0xaa35('0x10')]=_0xfd2055;}catch(_0x5b0436){logger[_0xaa35('0xb')](_0x5b0436[_0xaa35('0x11')]);logger['error'](_0xaa35('0x12'));}}else{_0xfd2055=_0xf3e79c;_0x3b303c[_0xaa35('0x10')]=_0xfd2055;}break;}logger[_0xaa35('0x13')](util[_0xaa35('0x14')](_0xaa35('0x15'),_0x15178c['data1'],_0x15178c[_0xaa35('0x4')],JSON[_0xaa35('0x16')](_0x3b303c)));rp(_0x3b303c)[_0xaa35('0x17')](function(_0x3034fd){_0xfd2055=!_[_0xaa35('0x18')](_0xfd2055)?_0xaa35('0x19')+_0xfd2055:'';_0x2b4366=typeof _0x3034fd[_0xaa35('0x10')]===_0xaa35('0x1a')?JSON[_0xaa35('0x16')](_0x3034fd[_0xaa35('0x10')]):_0x3034fd['body'];logger[_0xaa35('0x13')](util[_0xaa35('0x14')]('%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s',_0x15178c[_0xaa35('0x3')],_0x15178c[_0xaa35('0x4')],_0x3034fd[_0xaa35('0x1b')],_0x2b4366));})[_0xaa35('0x1c')](function(_0x45a29d){logger[_0xaa35('0xb')](util['format'](_0xaa35('0x1d'),_0x15178c[_0xaa35('0x3')],_0x15178c[_0xaa35('0x4')],_0x45a29d[_0xaa35('0x1b')],_0x45a29d['name'],_0x45a29d['message']));});};
\ No newline at end of file
+var _0x58d2=['../../../../config/logger','trigger','exec','data1','toUpperCase','render','data2','number','data5','headers','data6','parse','stack','GET','DELETE','PUT','data7','error','body','info','format','then','isNil',',\x20request\x20body:\x20','object','stringify','%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','request-promise','util','lodash','mustache'];(function(_0x1573ea,_0x434f02){var _0x51c0e2=function(_0x5c9b28){while(--_0x5c9b28){_0x1573ea['push'](_0x1573ea['shift']());}};_0x51c0e2(++_0x434f02);}(_0x58d2,0x11c));var _0x258d=function(_0x33a5ec,_0x10c014){_0x33a5ec=_0x33a5ec-0x0;var _0x38f89c=_0x58d2[_0x33a5ec];return _0x38f89c;};'use strict';var rp=require(_0x258d('0x0'));var util=require(_0x258d('0x1'));var _=require(_0x258d('0x2'));var Mustache=require(_0x258d('0x3'));var logger=require(_0x258d('0x4'))(_0x258d('0x5'));exports[_0x258d('0x6')]=function(_0x262321,_0x26186d){var _0x49b6a7,_0x500814;var _0x4da3f1={'method':_0x262321[_0x258d('0x7')][_0x258d('0x8')](),'uri':Mustache[_0x258d('0x9')](_0x262321[_0x258d('0xa')],_0x26186d),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x262321['data5'])===_0x258d('0xb')&&parseInt(_0x262321[_0x258d('0xc')])>=0x1&&parseInt(_0x262321[_0x258d('0xc')])<=0xa?parseInt(_0x262321[_0x258d('0xc')])*0x3e8:0x5*0x3e8};try{_0x4da3f1[_0x258d('0xd')]=_0x262321[_0x258d('0xe')]?JSON[_0x258d('0xf')](Mustache[_0x258d('0x9')](_0x262321['data6'],_0x26186d)):{};}catch(_0x3ef874){logger['error'](_0x3ef874[_0x258d('0x10')]);}switch(_0x262321[_0x258d('0x7')][_0x258d('0x8')]()){case _0x258d('0x11'):case _0x258d('0x12'):_0x49b6a7=null;_0x4da3f1['qs']=_0x26186d;break;case'POST':case _0x258d('0x13'):if(_0x262321[_0x258d('0x14')]){try{_0x49b6a7=JSON[_0x258d('0xf')](Mustache['render'](_0x262321[_0x258d('0x14')],_0x26186d));_0x4da3f1['body']=_0x49b6a7;}catch(_0x55932a){logger[_0x258d('0x15')](_0x55932a['stack']);logger[_0x258d('0x15')]('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x49b6a7=_0x26186d;_0x4da3f1[_0x258d('0x16')]=_0x49b6a7;}break;}logger[_0x258d('0x17')](util[_0x258d('0x18')]('%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s',_0x262321[_0x258d('0x7')],_0x262321[_0x258d('0xa')],JSON['stringify'](_0x4da3f1)));rp(_0x4da3f1)[_0x258d('0x19')](function(_0x295552){_0x49b6a7=!_[_0x258d('0x1a')](_0x49b6a7)?_0x258d('0x1b')+_0x49b6a7:'';_0x500814=typeof _0x295552[_0x258d('0x16')]===_0x258d('0x1c')?JSON[_0x258d('0x1d')](_0x295552['body']):_0x295552['body'];logger[_0x258d('0x17')](util[_0x258d('0x18')](_0x258d('0x1e'),_0x262321['data1'],_0x262321[_0x258d('0xa')],_0x295552[_0x258d('0x1f')],_0x500814));})[_0x258d('0x20')](function(_0xc9dbf2){logger['error'](util['format'](_0x258d('0x21'),_0x262321['data1'],_0x262321[_0x258d('0xa')],_0xc9dbf2[_0x258d('0x1f')],_0xc9dbf2[_0x258d('0x22')],_0xc9dbf2[_0x258d('0x23')]));});};
\ No newline at end of file
index 2dc293e..5fbab57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa315=['http','Request','error','rpc','message','result','catch','exports','bluebird','../../config/logger','routing'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xa315,0x76));var _0x5a31=function(_0x60df74,_0x458e29){_0x60df74=_0x60df74-0x0;var _0x5ee872=_0xa315[_0x60df74];return _0x5ee872;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x5a31('0x0'));var logger=require(_0x5a31('0x1'))(_0x5a31('0x2'));var client=jayson['client'][_0x5a31('0x3')]({'port':0x2329});client[_0x5a31('0x4')]=function(_0x464280,_0x107eba){return new BPromise(function(_0x1226d2,_0x5ec4fb){return client['request'](_0x464280,_0x107eba)['then'](function(_0x1f4007){logger['debug']('rpc','routing',_0x464280,_0x107eba,_0x1f4007);if(_0x1f4007[_0x5a31('0x5')]){logger[_0x5a31('0x5')](_0x5a31('0x6'),_0x5a31('0x2'),_0x464280,_0x1f4007[_0x5a31('0x5')][_0x5a31('0x7')],_0x107eba);return _0x5ec4fb(_0x1f4007[_0x5a31('0x5')][_0x5a31('0x7')]);}else{return _0x1226d2(_0x1f4007[_0x5a31('0x8')]);}})[_0x5a31('0x9')](function(_0x5a5f3f){logger[_0x5a31('0x5')](_0x5a31('0x6'),_0x5a31('0x2'),_0x464280,_0x5a5f3f,_0x107eba);return _0x5ec4fb(_0x5a5f3f);});});};module[_0x5a31('0xa')]=client;
\ No newline at end of file
+var _0x9219=['http','request','then','error','rpc','result','catch','exports','jayson/promise','bluebird','routing'];(function(_0x93c171,_0x2b3a4c){var _0x4970d9=function(_0x347849){while(--_0x347849){_0x93c171['push'](_0x93c171['shift']());}};_0x4970d9(++_0x2b3a4c);}(_0x9219,0xfa));var _0x9921=function(_0x37bdb9,_0x65710a){_0x37bdb9=_0x37bdb9-0x0;var _0xa13546=_0x9219[_0x37bdb9];return _0xa13546;};'use strict';var jayson=require(_0x9921('0x0'));var BPromise=require(_0x9921('0x1'));var logger=require('../../config/logger')(_0x9921('0x2'));var client=jayson['client'][_0x9921('0x3')]({'port':0x2329});client['Request']=function(_0x3208c4,_0xda9de6){return new BPromise(function(_0x3ceac3,_0x1aa77f){return client[_0x9921('0x4')](_0x3208c4,_0xda9de6)[_0x9921('0x5')](function(_0x256821){logger['debug']('rpc','routing',_0x3208c4,_0xda9de6,_0x256821);if(_0x256821[_0x9921('0x6')]){logger['error'](_0x9921('0x7'),_0x9921('0x2'),_0x3208c4,_0x256821[_0x9921('0x6')]['message'],_0xda9de6);return _0x1aa77f(_0x256821[_0x9921('0x6')]['message']);}else{return _0x3ceac3(_0x256821[_0x9921('0x8')]);}})[_0x9921('0x9')](function(_0x187af0){logger[_0x9921('0x6')](_0x9921('0x7'),_0x9921('0x2'),_0x3208c4,_0x187af0,_0xda9de6);return _0x1aa77f(_0x187af0);});});};module[_0x9921('0xa')]=client;
\ No newline at end of file
index 7339e3c..684cf46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1095=['Email\x20service\x20initialization','./server','./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','../../config/logger','email','then','mailAccounts','getSettings','loginMailFrequency','error'];(function(_0x291308,_0x2dc8e7){var _0x38fef8=function(_0x528594){while(--_0x528594){_0x291308['push'](_0x291308['shift']());}};_0x38fef8(++_0x2dc8e7);}(_0x1095,0x194));var _0x5109=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0x1095[_0xa1e3e3];return _0xc980e9;};'use strict';var server=require(_0x5109('0x0'));var Realtime=require(_0x5109('0x1'));var EmailChannel=require(_0x5109('0x2'));var mailAccount=require(_0x5109('0x3'));var setting=require(_0x5109('0x4'));var logger=require(_0x5109('0x5'))(_0x5109('0x6'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise['resolve']()['then'](mailAccount['getMailAccounts']())[_0x5109('0x7')](realtime['initMailAccounts']())[_0x5109('0x7')](function(){email['refresh'](realtime[_0x5109('0x8')]);return realtime;});}function main(){return server['listen'](realtime,email)[_0x5109('0x7')](function(){return initRealtime();})[_0x5109('0x7')](function(){return setting[_0x5109('0x9')]();})[_0x5109('0x7')](function(_0x338401){return setInterval(initRealtime,_0x338401[_0x5109('0xa')]*0x3e8);})['catch'](function(_0xeba039){logger[_0x5109('0xb')](_0x5109('0xc'),_0xeba039);});}main();
\ No newline at end of file
+var _0xc368=['email','then','getMailAccounts','initMailAccounts','refresh','mailAccounts','listen','getSettings','loginMailFrequency','catch','error','Email\x20service\x20initialization','./realtime','./rpc/mailAccount','./rpc/setting','../../config/logger'];(function(_0x5e02e4,_0x253a7f){var _0x83e136=function(_0x48b4c7){while(--_0x48b4c7){_0x5e02e4['push'](_0x5e02e4['shift']());}};_0x83e136(++_0x253a7f);}(_0xc368,0x10c));var _0x8c36=function(_0x5d1fc3,_0x5efc1b){_0x5d1fc3=_0x5d1fc3-0x0;var _0x4a2b9e=_0xc368[_0x5d1fc3];return _0x4a2b9e;};'use strict';var server=require('./server');var Realtime=require(_0x8c36('0x0'));var EmailChannel=require('./lib/email');var mailAccount=require(_0x8c36('0x1'));var setting=require(_0x8c36('0x2'));var logger=require(_0x8c36('0x3'))(_0x8c36('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise['resolve']()[_0x8c36('0x5')](mailAccount[_0x8c36('0x6')]())['then'](realtime[_0x8c36('0x7')]())[_0x8c36('0x5')](function(){email[_0x8c36('0x8')](realtime[_0x8c36('0x9')]);return realtime;});}function main(){return server[_0x8c36('0xa')](realtime,email)[_0x8c36('0x5')](function(){return initRealtime();})['then'](function(){return setting[_0x8c36('0xb')]();})[_0x8c36('0x5')](function(_0x3dfd11){return setInterval(initRealtime,_0x3dfd11[_0x8c36('0xc')]*0x3e8);})[_0x8c36('0xd')](function(_0x2fe705){logger[_0x8c36('0xe')](_0x8c36('0xf'),_0x2fe705);});}main();
\ No newline at end of file
index a48b6da..7142454 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42ff=['Smtp','lastSync','verify','verified','exports','moment','bluebird','../../../config/environment','../../../config/logger','email','redis','defaults','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','name','key','Imap','status','messageStatus','stringify','md5','emit','mailAccount:update','refresh','hasOwnProperty','service','provider','box','handleImapEmail','bind','end','handleImapError','isNil','disabled','handleImapBox','connected','total','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','error','Mail\x20not\x20accepted\x20from\x20routing\x20%s','sendMail','send','verifySmtp'];(function(_0x1558ab,_0x39d1de){var _0x53b64a=function(_0x4771ed){while(--_0x4771ed){_0x1558ab['push'](_0x1558ab['shift']());}};_0x53b64a(++_0x39d1de);}(_0x42ff,0xb3));var _0xf42f=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0x42ff[_0x36eaaa];return _0x461349;};'use strict';var _=require('lodash');var moment=require(_0xf42f('0x0'));var BPromise=require(_0xf42f('0x1'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0xf42f('0x2'));var logger=require(_0xf42f('0x3'))(_0xf42f('0x4'));config[_0xf42f('0x5')]=_[_0xf42f('0x6')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xf42f('0x7'))(new Redis(config[_0xf42f('0x5')]));var EmailImap=require(_0xf42f('0x8'));var EmailSmtp=require(_0xf42f('0x9'));var mailAccount=require(_0xf42f('0xa'));var md5Accounts={};function EmailChannel(_0x1e7a46){logger[_0xf42f('0xb')](_0xf42f('0xc'));this[_0xf42f('0xd')]=_0x1e7a46[_0xf42f('0xd')];this[_0xf42f('0xe')]={};this[_0xf42f('0xf')]=new EmailSmtp();}EmailChannel[_0xf42f('0x10')]['emit']=function(_0x3a55e9){var _0x5a1abf=this[_0xf42f('0xd')][_0x3a55e9];var _0x3ad0f5={'id':_0x5a1abf['id'],'name':_0x5a1abf[_0xf42f('0x11')],'key':_0x5a1abf[_0xf42f('0x12')],'active':_0x5a1abf['active'],'Imap':{'status':_0x5a1abf[_0xf42f('0x13')][_0xf42f('0x14')],'messageStatus':_0x5a1abf['Imap'][_0xf42f('0x15')],'total':_0x5a1abf[_0xf42f('0x13')]['total']}};if(_['isNil'](md5Accounts[_0x3a55e9])){md5Accounts[_0x3a55e9]={};}var _0x28ca51=md5(JSON[_0xf42f('0x16')](_0x3ad0f5));if(md5Accounts[_0x3a55e9][_0xf42f('0x17')]!==_0x28ca51){md5Accounts[_0x3a55e9][_0xf42f('0x17')]=_0x28ca51;io[_0xf42f('0x18')](_0xf42f('0x19'),_0x3ad0f5);}};EmailChannel['prototype'][_0xf42f('0x1a')]=function(_0x51d35d){for(var _0x4d6e68 in _0x51d35d){if(_0x51d35d[_0xf42f('0x1b')](_0x4d6e68)){if(_0x51d35d[_0x4d6e68]['Imap']&&_0x51d35d[_0x4d6e68]['active']){var _0x517314=_0x51d35d[_0x4d6e68][_0xf42f('0x13')];if(!_0x517314[_0xf42f('0x1c')]&&_0x51d35d[_0x4d6e68][_0xf42f('0x1d')]!=='custom')_0x517314[_0xf42f('0x1c')]=_0x51d35d[_0x4d6e68][_0xf42f('0x1d')];if(!this['imapAccounts'][_0xf42f('0x1b')](_0x517314['id'])){this['imapAccounts'][_0x517314['id']]=new EmailImap(_0x517314,_0x51d35d[_0x4d6e68]['email']);this[_0xf42f('0xe')][_0x517314['id']]['on'](_0xf42f('0x1e'),this['handleImapBox']['bind'](this,_0x4d6e68));this['imapAccounts'][_0x517314['id']]['on'](_0xf42f('0x4'),this[_0xf42f('0x1f')][_0xf42f('0x20')](this,_0x4d6e68));this[_0xf42f('0xe')][_0x517314['id']]['on'](_0xf42f('0x21'),this['handleImapEnd']['bind'](this,_0x4d6e68));this['imapAccounts'][_0x517314['id']]['on']('error',this[_0xf42f('0x22')][_0xf42f('0x20')](this,_0x4d6e68));}}else{if(_[_0xf42f('0x23')](this[_0xf42f('0xd')][_0x4d6e68][_0xf42f('0x13')])){this[_0xf42f('0xd')][_0x4d6e68][_0xf42f('0x13')]={};}this['mailAccounts'][_0x4d6e68][_0xf42f('0x13')]['status']=_0xf42f('0x24');this['mailAccounts'][_0x4d6e68][_0xf42f('0x13')][_0xf42f('0x15')]='';this[_0xf42f('0x18')](_0x4d6e68);}}}};EmailChannel[_0xf42f('0x10')][_0xf42f('0x25')]=function(_0x5cb688,_0x45c45f){if(this[_0xf42f('0xd')][_0x5cb688]){this[_0xf42f('0xd')][_0x5cb688][_0xf42f('0x13')][_0xf42f('0x14')]=_0xf42f('0x26');this[_0xf42f('0xd')][_0x5cb688][_0xf42f('0x13')][_0xf42f('0x15')]=_0x45c45f[_0xf42f('0x11')];if(_0x45c45f['messages']){this[_0xf42f('0xd')][_0x5cb688]['Imap'][_0xf42f('0x27')]=_0x45c45f['messages'][_0xf42f('0x27')];}return this[_0xf42f('0x18')](_0x5cb688);}};EmailChannel['prototype']['handleImapEmail']=function(_0x40b5d3,_0x3914ac){logger[_0xf42f('0xb')](_0xf42f('0x28'),_0x3914ac[_0xf42f('0x29')],_0x3914ac[_0xf42f('0x2a')],_0x3914ac[_0xf42f('0x2b')],_0x40b5d3);if(this[_0xf42f('0xd')][_0x40b5d3]){return mailAccount[_0xf42f('0x2c')](_0x40b5d3,_0x3914ac)[_0xf42f('0x2d')](function(_0x50244f){if(_0x50244f){logger[_0xf42f('0xb')](_0xf42f('0x2e'));}})[_0xf42f('0x2f')](function(_0x2e135b){logger[_0xf42f('0x30')](_0xf42f('0x31'),JSON['stringify'](_0x2e135b));});}};EmailChannel['prototype']['handleImapEnd']=function(_0xc472f3){if(this['mailAccounts'][_0xc472f3]&&this[_0xf42f('0xd')][_0xc472f3][_0xf42f('0x13')]){if(this[_0xf42f('0xe')][this[_0xf42f('0xd')][_0xc472f3][_0xf42f('0x13')]['id']]){delete this[_0xf42f('0xe')][this[_0xf42f('0xd')][_0xc472f3][_0xf42f('0x13')]['id']];}this[_0xf42f('0xd')][_0xc472f3][_0xf42f('0x13')]['lastSync']=moment();this[_0xf42f('0x18')](_0xc472f3);}};EmailChannel['prototype'][_0xf42f('0x22')]=function(_0x2ba990,_0x5b02d0){if(this['mailAccounts'][_0x2ba990]){this['mailAccounts'][_0x2ba990][_0xf42f('0x13')]['status']=_0xf42f('0x30');this[_0xf42f('0xd')][_0x2ba990][_0xf42f('0x13')]['messageStatus']=_0x5b02d0;return this[_0xf42f('0x18')](_0x2ba990);}};EmailChannel[_0xf42f('0x10')][_0xf42f('0x32')]=function(_0x34d8af,_0x45b8a7){return this[_0xf42f('0xf')][_0xf42f('0x33')](_0x34d8af,_0x45b8a7);};EmailChannel[_0xf42f('0x10')][_0xf42f('0x34')]=function(_0x4cbe9a){var _0x32a5bf=this;if(this['mailAccounts'][_0x4cbe9a['id']]){if(_[_0xf42f('0x23')](this[_0xf42f('0xd')][_0x4cbe9a['id']][_0xf42f('0x35')])){this[_0xf42f('0xd')][_0x4cbe9a['id']]['Smtp']={};}this['mailAccounts'][_0x4cbe9a['id']]['Smtp'][_0xf42f('0x36')]=moment();return new BPromise(function(_0x4bf5d9,_0x11b000){return _0x32a5bf[_0xf42f('0xf')][_0xf42f('0x37')](_0x4cbe9a)[_0xf42f('0x2d')](function(_0x1b90fe){_0x32a5bf[_0xf42f('0xd')][_0x4cbe9a['id']]['Smtp']['status']=_0xf42f('0x38');_0x32a5bf[_0xf42f('0xd')][_0x4cbe9a['id']][_0xf42f('0x35')]['messageStatus']='';_0x32a5bf[_0xf42f('0x18')](_0x4cbe9a['id']);_0x4bf5d9(_0x1b90fe);})['catch'](function(_0x9c1442){_0x32a5bf['mailAccounts'][_0x4cbe9a['id']][_0xf42f('0x35')][_0xf42f('0x14')]=_0xf42f('0x30');_0x32a5bf[_0xf42f('0xd')][_0x4cbe9a['id']][_0xf42f('0x35')][_0xf42f('0x15')]=_0x9c1442;_0x32a5bf[_0xf42f('0x18')](_0x4cbe9a['id']);_0x11b000(_0x9c1442);});});}return this['smtp'][_0xf42f('0x37')](_0x4cbe9a);};module[_0xf42f('0x39')]=EmailChannel;
\ No newline at end of file
+var _0xa47c=['smtp','send','verifySmtp','Smtp','then','verified','verify','exports','lodash','moment','md5','ioredis','../../../config/environment','../../../config/logger','email','redis','localhost','socket.io-emitter','./imap','./smtp','mailAccounts','imapAccounts','prototype','emit','name','key','active','status','Imap','messageStatus','stringify','hasOwnProperty','service','provider','custom','handleImapBox','bind','end','handleImapEnd','error','handleImapError','isNil','total','messages','handleImapEmail','firstName','lastName','notify','info','Mail\x20accepted\x20from\x20routing','catch','lastSync','sendMail'];(function(_0x39c734,_0x2f3e06){var _0xb2a2f9=function(_0x502f3f){while(--_0x502f3f){_0x39c734['push'](_0x39c734['shift']());}};_0xb2a2f9(++_0x2f3e06);}(_0xa47c,0x111));var _0xca47=function(_0x8840d8,_0x497122){_0x8840d8=_0x8840d8-0x0;var _0x1dc101=_0xa47c[_0x8840d8];return _0x1dc101;};'use strict';var _=require(_0xca47('0x0'));var moment=require(_0xca47('0x1'));var BPromise=require('bluebird');var md5=require(_0xca47('0x2'));var Redis=require(_0xca47('0x3'));var config=require(_0xca47('0x4'));var logger=require(_0xca47('0x5'))(_0xca47('0x6'));config[_0xca47('0x7')]=_['defaults'](config[_0xca47('0x7')],{'host':_0xca47('0x8'),'port':0x18eb});var io=require(_0xca47('0x9'))(new Redis(config['redis']));var EmailImap=require(_0xca47('0xa'));var EmailSmtp=require(_0xca47('0xb'));var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0x54c321){logger['info']('start\x20email\x20channel');this[_0xca47('0xc')]=_0x54c321[_0xca47('0xc')];this[_0xca47('0xd')]={};this['smtp']=new EmailSmtp();}EmailChannel[_0xca47('0xe')][_0xca47('0xf')]=function(_0x1c0504){var _0x1d2301=this['mailAccounts'][_0x1c0504];var _0x298696={'id':_0x1d2301['id'],'name':_0x1d2301[_0xca47('0x10')],'key':_0x1d2301[_0xca47('0x11')],'active':_0x1d2301[_0xca47('0x12')],'Imap':{'status':_0x1d2301['Imap'][_0xca47('0x13')],'messageStatus':_0x1d2301[_0xca47('0x14')][_0xca47('0x15')],'total':_0x1d2301['Imap']['total']}};if(_['isNil'](md5Accounts[_0x1c0504])){md5Accounts[_0x1c0504]={};}var _0x5cf638=md5(JSON[_0xca47('0x16')](_0x298696));if(md5Accounts[_0x1c0504]['md5']!==_0x5cf638){md5Accounts[_0x1c0504][_0xca47('0x2')]=_0x5cf638;io[_0xca47('0xf')]('mailAccount:update',_0x298696);}};EmailChannel[_0xca47('0xe')]['refresh']=function(_0x49853d){for(var _0x3bea7c in _0x49853d){if(_0x49853d[_0xca47('0x17')](_0x3bea7c)){if(_0x49853d[_0x3bea7c][_0xca47('0x14')]&&_0x49853d[_0x3bea7c]['active']){var _0x3d9baa=_0x49853d[_0x3bea7c][_0xca47('0x14')];if(!_0x3d9baa[_0xca47('0x18')]&&_0x49853d[_0x3bea7c][_0xca47('0x19')]!==_0xca47('0x1a'))_0x3d9baa[_0xca47('0x18')]=_0x49853d[_0x3bea7c][_0xca47('0x19')];if(!this['imapAccounts'][_0xca47('0x17')](_0x3d9baa['id'])){this[_0xca47('0xd')][_0x3d9baa['id']]=new EmailImap(_0x3d9baa,_0x49853d[_0x3bea7c][_0xca47('0x6')]);this[_0xca47('0xd')][_0x3d9baa['id']]['on']('box',this[_0xca47('0x1b')][_0xca47('0x1c')](this,_0x3bea7c));this['imapAccounts'][_0x3d9baa['id']]['on'](_0xca47('0x6'),this['handleImapEmail'][_0xca47('0x1c')](this,_0x3bea7c));this[_0xca47('0xd')][_0x3d9baa['id']]['on'](_0xca47('0x1d'),this[_0xca47('0x1e')][_0xca47('0x1c')](this,_0x3bea7c));this[_0xca47('0xd')][_0x3d9baa['id']]['on'](_0xca47('0x1f'),this[_0xca47('0x20')][_0xca47('0x1c')](this,_0x3bea7c));}}else{if(_[_0xca47('0x21')](this[_0xca47('0xc')][_0x3bea7c][_0xca47('0x14')])){this['mailAccounts'][_0x3bea7c][_0xca47('0x14')]={};}this[_0xca47('0xc')][_0x3bea7c]['Imap']['status']='disabled';this['mailAccounts'][_0x3bea7c][_0xca47('0x14')][_0xca47('0x15')]='';this[_0xca47('0xf')](_0x3bea7c);}}}};EmailChannel['prototype']['handleImapBox']=function(_0x51c00b,_0xf3b5e3){if(this['mailAccounts'][_0x51c00b]){this['mailAccounts'][_0x51c00b][_0xca47('0x14')]['status']='connected';this['mailAccounts'][_0x51c00b][_0xca47('0x14')][_0xca47('0x15')]=_0xf3b5e3[_0xca47('0x10')];if(_0xf3b5e3['messages']){this['mailAccounts'][_0x51c00b]['Imap'][_0xca47('0x22')]=_0xf3b5e3[_0xca47('0x23')][_0xca47('0x22')];}return this[_0xca47('0xf')](_0x51c00b);}};EmailChannel['prototype'][_0xca47('0x24')]=function(_0xd897ef,_0x560283){logger['info']('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x560283[_0xca47('0x25')],_0x560283[_0xca47('0x26')],_0x560283['from'],_0xd897ef);if(this[_0xca47('0xc')][_0xd897ef]){return mailAccount[_0xca47('0x27')](_0xd897ef,_0x560283)['then'](function(_0x3ab230){if(_0x3ab230){logger[_0xca47('0x28')](_0xca47('0x29'));}})[_0xca47('0x2a')](function(_0xc94567){logger[_0xca47('0x1f')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0xca47('0x16')](_0xc94567));});}};EmailChannel[_0xca47('0xe')]['handleImapEnd']=function(_0x5a3755){if(this[_0xca47('0xc')][_0x5a3755]&&this['mailAccounts'][_0x5a3755][_0xca47('0x14')]){if(this[_0xca47('0xd')][this[_0xca47('0xc')][_0x5a3755]['Imap']['id']]){delete this[_0xca47('0xd')][this[_0xca47('0xc')][_0x5a3755]['Imap']['id']];}this[_0xca47('0xc')][_0x5a3755][_0xca47('0x14')][_0xca47('0x2b')]=moment();this['emit'](_0x5a3755);}};EmailChannel[_0xca47('0xe')][_0xca47('0x20')]=function(_0x45cb3c,_0x33e9f7){if(this[_0xca47('0xc')][_0x45cb3c]){this[_0xca47('0xc')][_0x45cb3c][_0xca47('0x14')][_0xca47('0x13')]='error';this[_0xca47('0xc')][_0x45cb3c]['Imap']['messageStatus']=_0x33e9f7;return this[_0xca47('0xf')](_0x45cb3c);}};EmailChannel[_0xca47('0xe')][_0xca47('0x2c')]=function(_0x3e957a,_0x10ee1d){return this[_0xca47('0x2d')][_0xca47('0x2e')](_0x3e957a,_0x10ee1d);};EmailChannel[_0xca47('0xe')][_0xca47('0x2f')]=function(_0x21644d){var _0x29b6cb=this;if(this[_0xca47('0xc')][_0x21644d['id']]){if(_[_0xca47('0x21')](this[_0xca47('0xc')][_0x21644d['id']][_0xca47('0x30')])){this[_0xca47('0xc')][_0x21644d['id']]['Smtp']={};}this[_0xca47('0xc')][_0x21644d['id']]['Smtp']['lastSync']=moment();return new BPromise(function(_0x171727,_0xc13759){return _0x29b6cb[_0xca47('0x2d')]['verify'](_0x21644d)[_0xca47('0x31')](function(_0x6f1f12){_0x29b6cb[_0xca47('0xc')][_0x21644d['id']][_0xca47('0x30')][_0xca47('0x13')]=_0xca47('0x32');_0x29b6cb['mailAccounts'][_0x21644d['id']]['Smtp'][_0xca47('0x15')]='';_0x29b6cb[_0xca47('0xf')](_0x21644d['id']);_0x171727(_0x6f1f12);})[_0xca47('0x2a')](function(_0x5f2f7d){_0x29b6cb['mailAccounts'][_0x21644d['id']][_0xca47('0x30')][_0xca47('0x13')]=_0xca47('0x1f');_0x29b6cb[_0xca47('0xc')][_0x21644d['id']][_0xca47('0x30')][_0xca47('0x15')]=_0x5f2f7d;_0x29b6cb['emit'](_0x21644d['id']);_0xc13759(_0x5f2f7d);});});}return this['smtp'][_0xca47('0x33')](_0x21644d);};module[_0xca47('0x34')]=EmailChannel;
\ No newline at end of file
index 51e3a17..789f756 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf55=['UNSEEN','handleReadUnseen','length','message','handleFetchMessage','handleFetchError','handleFetchEnd','closeBox','handleMessageBody','attributes','handleMessageEnd','handleSimpleParser','parser','textCode','hasOwnProperty','lodash','util','mailparser','simpleParser','Iconv','events','EventEmitter','../../../config/logger','email','mailbox','INBOX','account','getAccount','imap','once','bind','end','error','handleError','connect','inherits','prototype','connTimeout','authTimeout','service','user','modernAuthentication','xoauth2','generateXOAuth2Token','CloudProvider','data5','password','host','port','tls','autotls','handleReady','openBox','handleOpenBox','emit','box','readUnseen','handleCloseBox'];(function(_0xad57ee,_0x2823a6){var _0x3eaea9=function(_0x185650){while(--_0x185650){_0xad57ee['push'](_0xad57ee['shift']());}};_0x3eaea9(++_0x2823a6);}(_0xdf55,0x83));var _0x5df5=function(_0xe5b3e1,_0x57a645){_0xe5b3e1=_0xe5b3e1-0x0;var _0x121dad=_0xdf55[_0xe5b3e1];return _0x121dad;};'use strict';var _=require(_0x5df5('0x0'));var util=require(_0x5df5('0x1'));var Imap=require('imap');var simpleParser=require(_0x5df5('0x2'))[_0x5df5('0x3')];var Iconv=require('iconv')[_0x5df5('0x4')];var EventEmitter=require(_0x5df5('0x5'))[_0x5df5('0x6')];var utils=require('./utils');var logger=require(_0x5df5('0x7'))(_0x5df5('0x8'));function EmailImap(_0x27ec86,_0x476e21){this[_0x5df5('0x9')]=_0x5df5('0xa');this[_0x5df5('0xb')]=this[_0x5df5('0xc')](_0x27ec86,_0x476e21);this['imap']=new Imap(this[_0x5df5('0xb')]);this[_0x5df5('0xd')][_0x5df5('0xe')]('ready',this['handleReady'][_0x5df5('0xf')](this));this['imap'][_0x5df5('0xe')](_0x5df5('0x10'),this['handleEnd']['bind'](this));this[_0x5df5('0xd')]['on'](_0x5df5('0x11'),this[_0x5df5('0x12')][_0x5df5('0xf')](this));this[_0x5df5('0xd')][_0x5df5('0x13')]();}util[_0x5df5('0x14')](EmailImap,EventEmitter);EmailImap[_0x5df5('0x15')][_0x5df5('0xc')]=function(_0x956317,_0x555d3f){var _0x30fd32={'connTimeout':_0x956317['connTimeout']?_0x956317[_0x5df5('0x16')]*0x3e8:0x2710,'authTimeout':_0x956317[_0x5df5('0x17')]?_0x956317[_0x5df5('0x17')]*0x3e8:0x1388};if(_0x956317[_0x5df5('0x18')]){_0x30fd32[_0x5df5('0x19')]=_0x956317['user'];_0x30fd32[_0x5df5('0x8')]=_0x555d3f||_0x956317[_0x5df5('0x19')]||'anonymous@xcally.com';if(_0x956317[_0x5df5('0x1a')]){_0x30fd32[_0x5df5('0x1b')]=utils[_0x5df5('0x1c')](_0x956317[_0x5df5('0x1d')][_0x5df5('0x1e')],_0x956317['user']);}else{_0x30fd32['password']=_0x956317[_0x5df5('0x1f')];}}else{if(_0x956317['authentication']){_0x30fd32[_0x5df5('0x19')]=_0x956317[_0x5df5('0x19')];_0x30fd32[_0x5df5('0x1f')]=_0x956317[_0x5df5('0x1f')];}}_0x30fd32[_0x5df5('0x20')]=_0x956317['host'];_0x30fd32[_0x5df5('0x21')]=_0x956317[_0x5df5('0x21')]||0x3e1;if(_0x956317[_0x5df5('0x22')]){_0x30fd32[_0x5df5('0x22')]=!![];}else{_0x30fd32[_0x5df5('0x22')]=![];_0x30fd32[_0x5df5('0x23')]='required';}return _0x30fd32;};EmailImap[_0x5df5('0x15')][_0x5df5('0x24')]=function(){this[_0x5df5('0xd')][_0x5df5('0x25')](this['mailbox'],![],this[_0x5df5('0x26')][_0x5df5('0xf')](this));};EmailImap[_0x5df5('0x15')]['handleOpenBox']=function(_0x52206d,_0x532923){if(_0x52206d){this[_0x5df5('0x12')](_0x52206d,!![]);}else{this[_0x5df5('0x27')](_0x5df5('0x28'),_0x532923);this[_0x5df5('0x29')]();}};EmailImap[_0x5df5('0x15')][_0x5df5('0x2a')]=function(_0x210d20){if(_0x210d20){this[_0x5df5('0x12')](_0x210d20,!![]);}else{this['imap'][_0x5df5('0x10')]();}};EmailImap['prototype'][_0x5df5('0x29')]=function(){this[_0x5df5('0xd')]['search']([_0x5df5('0x2b')],this['handleReadUnseen'][_0x5df5('0xf')](this));};EmailImap['prototype'][_0x5df5('0x2c')]=function(_0x4afe36,_0x309506){if(_0x4afe36){this['handleError'](_0x4afe36,!![]);}else{if(_0x309506[_0x5df5('0x2d')]){try{var _0x47bebb=this[_0x5df5('0xd')]['fetch'](_0x309506,{'bodies':'','markSeen':!![]});_0x47bebb['on'](_0x5df5('0x2e'),this[_0x5df5('0x2f')][_0x5df5('0xf')](this));_0x47bebb[_0x5df5('0xe')](_0x5df5('0x11'),this[_0x5df5('0x30')][_0x5df5('0xf')](this));_0x47bebb['once']('end',this[_0x5df5('0x31')][_0x5df5('0xf')](this));}catch(_0x3bbd2b){logger[_0x5df5('0x11')](_0x3bbd2b);}}else{this[_0x5df5('0xd')][_0x5df5('0x32')](!![],this['handleCloseBox'][_0x5df5('0xf')](this));}}};EmailImap[_0x5df5('0x15')][_0x5df5('0x2f')]=function(_0x3a6b75){_0x3a6b75['on']('body',this[_0x5df5('0x33')]['bind'](this));_0x3a6b75[_0x5df5('0xe')](_0x5df5('0x34'),this['handleMessageAttributes'][_0x5df5('0xf')](this));_0x3a6b75['once'](_0x5df5('0x10'),this[_0x5df5('0x35')][_0x5df5('0xf')](this));};EmailImap[_0x5df5('0x15')]['handleMessageBody']=function(_0x1d8e49){simpleParser(_0x1d8e49,{'Iconv':Iconv},this[_0x5df5('0x36')][_0x5df5('0xf')](this));};EmailImap[_0x5df5('0x15')]['handleMessageAttributes']=function(){};EmailImap[_0x5df5('0x15')][_0x5df5('0x35')]=function(){};EmailImap[_0x5df5('0x15')][_0x5df5('0x36')]=function(_0x46c501,_0x47f34f){if(_0x46c501){logger[_0x5df5('0x11')](_0x46c501);}else{var _0x560422=this;utils[_0x5df5('0x37')](this[_0x5df5('0xb')],_0x47f34f,function(_0x593f6a){_0x560422[_0x5df5('0x27')](_0x5df5('0x8'),_0x593f6a);});}};EmailImap['prototype'][_0x5df5('0x31')]=function(){this[_0x5df5('0xd')][_0x5df5('0x32')](!![],this[_0x5df5('0x2a')][_0x5df5('0xf')](this));};EmailImap[_0x5df5('0x15')][_0x5df5('0x30')]=function(_0x306218){this['handleError'](_0x306218);this['imap'][_0x5df5('0x32')](!![],this['handleCloseBox'][_0x5df5('0xf')](this));};EmailImap[_0x5df5('0x15')]['handleEnd']=function(){this[_0x5df5('0x27')](_0x5df5('0x10'));};EmailImap[_0x5df5('0x15')][_0x5df5('0x12')]=function(_0x2cb16f,_0x278e99){logger[_0x5df5('0x11')](_0x5df5('0x12'),this['account'][_0x5df5('0x8')],JSON['stringify'](_0x2cb16f));var _0xb7dc25='';if(_0x2cb16f){if(_0x2cb16f[_0x5df5('0x38')]){_0xb7dc25=_0x2cb16f[_0x5df5('0x38')];}else{for(var _0x34a8ed in _0x2cb16f){if(_0x2cb16f[_0x5df5('0x39')](_0x34a8ed)){_0xb7dc25+=_['upperFirst'](_0x34a8ed)+':\x20'+_0x2cb16f[_0x34a8ed]+'\x0a';}}}}if(_0x278e99){this[_0x5df5('0xd')][_0x5df5('0x10')]();}else{this[_0x5df5('0x27')]('error',_0xb7dc25);this[_0x5df5('0x27')](_0x5df5('0x10'));}};module['exports']=EmailImap;
\ No newline at end of file
+var _0xdec3=['body','handleMessageBody','attributes','end','handleMessageEnd','handleSimpleParser','handleMessageAttributes','parser','handleFetchError','textCode','hasOwnProperty','upperFirst','exports','lodash','imap','mailparser','simpleParser','Iconv','events','EventEmitter','./utils','email','mailbox','INBOX','account','getAccount','ready','once','handleEnd','bind','error','handleError','connect','inherits','connTimeout','authTimeout','user','anonymous@xcally.com','modernAuthentication','generateXOAuth2Token','CloudProvider','data5','password','authentication','host','port','tls','handleReady','openBox','handleOpenBox','prototype','emit','box','handleCloseBox','readUnseen','search','UNSEEN','length','fetch','handleFetchMessage','handleFetchEnd','closeBox'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xdec3,0x89));var _0x3dec=function(_0x449aa4,_0x394570){_0x449aa4=_0x449aa4-0x0;var _0x7f5619=_0xdec3[_0x449aa4];return _0x7f5619;};'use strict';var _=require(_0x3dec('0x0'));var util=require('util');var Imap=require(_0x3dec('0x1'));var simpleParser=require(_0x3dec('0x2'))[_0x3dec('0x3')];var Iconv=require('iconv')[_0x3dec('0x4')];var EventEmitter=require(_0x3dec('0x5'))[_0x3dec('0x6')];var utils=require(_0x3dec('0x7'));var logger=require('../../../config/logger')(_0x3dec('0x8'));function EmailImap(_0x2894eb,_0x347c06){this[_0x3dec('0x9')]=_0x3dec('0xa');this[_0x3dec('0xb')]=this[_0x3dec('0xc')](_0x2894eb,_0x347c06);this['imap']=new Imap(this[_0x3dec('0xb')]);this[_0x3dec('0x1')]['once'](_0x3dec('0xd'),this['handleReady']['bind'](this));this[_0x3dec('0x1')][_0x3dec('0xe')]('end',this[_0x3dec('0xf')][_0x3dec('0x10')](this));this['imap']['on'](_0x3dec('0x11'),this[_0x3dec('0x12')][_0x3dec('0x10')](this));this[_0x3dec('0x1')][_0x3dec('0x13')]();}util[_0x3dec('0x14')](EmailImap,EventEmitter);EmailImap['prototype']['getAccount']=function(_0x3d4759,_0x4ce098){var _0x41ab02={'connTimeout':_0x3d4759[_0x3dec('0x15')]?_0x3d4759['connTimeout']*0x3e8:0x2710,'authTimeout':_0x3d4759['authTimeout']?_0x3d4759[_0x3dec('0x16')]*0x3e8:0x1388};if(_0x3d4759['service']){_0x41ab02[_0x3dec('0x17')]=_0x3d4759['user'];_0x41ab02[_0x3dec('0x8')]=_0x4ce098||_0x3d4759['user']||_0x3dec('0x18');if(_0x3d4759[_0x3dec('0x19')]){_0x41ab02['xoauth2']=utils[_0x3dec('0x1a')](_0x3d4759[_0x3dec('0x1b')][_0x3dec('0x1c')],_0x3d4759[_0x3dec('0x17')]);}else{_0x41ab02[_0x3dec('0x1d')]=_0x3d4759[_0x3dec('0x1d')];}}else{if(_0x3d4759[_0x3dec('0x1e')]){_0x41ab02[_0x3dec('0x17')]=_0x3d4759[_0x3dec('0x17')];_0x41ab02[_0x3dec('0x1d')]=_0x3d4759[_0x3dec('0x1d')];}}_0x41ab02[_0x3dec('0x1f')]=_0x3d4759[_0x3dec('0x1f')];_0x41ab02[_0x3dec('0x20')]=_0x3d4759[_0x3dec('0x20')]||0x3e1;if(_0x3d4759[_0x3dec('0x21')]){_0x41ab02[_0x3dec('0x21')]=!![];}else{_0x41ab02['tls']=![];_0x41ab02['autotls']='required';}return _0x41ab02;};EmailImap['prototype'][_0x3dec('0x22')]=function(){this[_0x3dec('0x1')][_0x3dec('0x23')](this[_0x3dec('0x9')],![],this[_0x3dec('0x24')][_0x3dec('0x10')](this));};EmailImap[_0x3dec('0x25')][_0x3dec('0x24')]=function(_0x3dfb16,_0x559b91){if(_0x3dfb16){this[_0x3dec('0x12')](_0x3dfb16,!![]);}else{this[_0x3dec('0x26')](_0x3dec('0x27'),_0x559b91);this['readUnseen']();}};EmailImap[_0x3dec('0x25')][_0x3dec('0x28')]=function(_0x598ccc){if(_0x598ccc){this[_0x3dec('0x12')](_0x598ccc,!![]);}else{this[_0x3dec('0x1')]['end']();}};EmailImap[_0x3dec('0x25')][_0x3dec('0x29')]=function(){this[_0x3dec('0x1')][_0x3dec('0x2a')]([_0x3dec('0x2b')],this['handleReadUnseen'][_0x3dec('0x10')](this));};EmailImap['prototype']['handleReadUnseen']=function(_0x1b1e2e,_0x5d22ab){if(_0x1b1e2e){this['handleError'](_0x1b1e2e,!![]);}else{if(_0x5d22ab[_0x3dec('0x2c')]){try{var _0x3c8d47=this[_0x3dec('0x1')][_0x3dec('0x2d')](_0x5d22ab,{'bodies':'','markSeen':!![]});_0x3c8d47['on']('message',this[_0x3dec('0x2e')][_0x3dec('0x10')](this));_0x3c8d47[_0x3dec('0xe')](_0x3dec('0x11'),this['handleFetchError'][_0x3dec('0x10')](this));_0x3c8d47['once']('end',this[_0x3dec('0x2f')][_0x3dec('0x10')](this));}catch(_0x1edac7){logger[_0x3dec('0x11')](_0x1edac7);}}else{this[_0x3dec('0x1')][_0x3dec('0x30')](!![],this['handleCloseBox']['bind'](this));}}};EmailImap[_0x3dec('0x25')]['handleFetchMessage']=function(_0x13e647){_0x13e647['on'](_0x3dec('0x31'),this[_0x3dec('0x32')][_0x3dec('0x10')](this));_0x13e647['once'](_0x3dec('0x33'),this['handleMessageAttributes'][_0x3dec('0x10')](this));_0x13e647[_0x3dec('0xe')](_0x3dec('0x34'),this[_0x3dec('0x35')]['bind'](this));};EmailImap['prototype'][_0x3dec('0x32')]=function(_0x3d2e25){simpleParser(_0x3d2e25,{'Iconv':Iconv},this[_0x3dec('0x36')][_0x3dec('0x10')](this));};EmailImap[_0x3dec('0x25')][_0x3dec('0x37')]=function(){};EmailImap[_0x3dec('0x25')][_0x3dec('0x35')]=function(){};EmailImap['prototype']['handleSimpleParser']=function(_0x29fc74,_0x447f34){if(_0x29fc74){logger[_0x3dec('0x11')](_0x29fc74);}else{var _0x17183c=this;utils[_0x3dec('0x38')](this['account'],_0x447f34,function(_0x3ae162){_0x17183c[_0x3dec('0x26')]('email',_0x3ae162);});}};EmailImap[_0x3dec('0x25')][_0x3dec('0x2f')]=function(){this[_0x3dec('0x1')]['closeBox'](!![],this[_0x3dec('0x28')][_0x3dec('0x10')](this));};EmailImap[_0x3dec('0x25')][_0x3dec('0x39')]=function(_0x9683d){this['handleError'](_0x9683d);this[_0x3dec('0x1')][_0x3dec('0x30')](!![],this[_0x3dec('0x28')][_0x3dec('0x10')](this));};EmailImap[_0x3dec('0x25')][_0x3dec('0xf')]=function(){this['emit'](_0x3dec('0x34'));};EmailImap[_0x3dec('0x25')][_0x3dec('0x12')]=function(_0x27c4f3,_0x16c7c3){logger[_0x3dec('0x11')]('handleError',this[_0x3dec('0xb')][_0x3dec('0x8')],JSON['stringify'](_0x27c4f3));var _0x4bde6d='';if(_0x27c4f3){if(_0x27c4f3[_0x3dec('0x3a')]){_0x4bde6d=_0x27c4f3['textCode'];}else{for(var _0x425686 in _0x27c4f3){if(_0x27c4f3[_0x3dec('0x3b')](_0x425686)){_0x4bde6d+=_[_0x3dec('0x3c')](_0x425686)+':\x20'+_0x27c4f3[_0x425686]+'\x0a';}}}}if(_0x16c7c3){this[_0x3dec('0x1')]['end']();}else{this[_0x3dec('0x26')]('error',_0x4bde6d);this['emit'](_0x3dec('0x34'));}};module[_0x3dec('0x3d')]=EmailImap;
\ No newline at end of file
index 6d74ce7..e93dac6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8a3=['verify','Not\x20verifired','exports','nodemailer-plugin-inline-base64','send','createTransport','use'];(function(_0x233fc7,_0x22ea00){var _0x2188d0=function(_0x199521){while(--_0x199521){_0x233fc7['push'](_0x233fc7['shift']());}};_0x2188d0(++_0x22ea00);}(_0xf8a3,0xd5));var _0x3f8a=function(_0x371bd9,_0x407598){_0x371bd9=_0x371bd9-0x0;var _0x57aff4=_0xf8a3[_0x371bd9];return _0x57aff4;};'use strict';var nodemailer=require('nodemailer');var inlineBase64=require(_0x3f8a('0x0'));function EmailSmtp(){}EmailSmtp['prototype'][_0x3f8a('0x1')]=function(_0x118d17,_0x1e5893){return new Promise(function(_0x396249,_0x27440b){var _0x3ea3e4=nodemailer[_0x3f8a('0x2')](_0x118d17);_0x3ea3e4[_0x3f8a('0x3')]('compile',inlineBase64());_0x3ea3e4['sendMail'](_0x1e5893,function(_0x24aad3,_0x315f50){if(_0x24aad3){_0x27440b(_0x24aad3['toString']());}else{_0x396249(_0x315f50);}});});};EmailSmtp['prototype'][_0x3f8a('0x4')]=function(_0x40116a){return new Promise(function(_0x3163be,_0x444bea){var _0x353785=nodemailer['createTransport'](_0x40116a);_0x353785[_0x3f8a('0x4')](function(_0x9bf991,_0xc7f40){if(_0x9bf991){_0x444bea(_0x9bf991['toString']());}else{if(_0xc7f40){_0x3163be(_0xc7f40);}else{_0x444bea(_0x3f8a('0x5'));}}});});};module[_0x3f8a('0x6')]=EmailSmtp;
\ No newline at end of file
+var _0xb872=['verify','exports','nodemailer','prototype','createTransport','use','compile','sendMail','toString'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xb872,0x1e8));var _0x2b87=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb872[_0x3dd15e];return _0x231fd0;};'use strict';var nodemailer=require(_0x2b87('0x0'));var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0x2b87('0x1')]['send']=function(_0x281d9a,_0x1bb4f9){return new Promise(function(_0x1e623c,_0x5930e7){var _0x172878=nodemailer[_0x2b87('0x2')](_0x281d9a);_0x172878[_0x2b87('0x3')](_0x2b87('0x4'),inlineBase64());_0x172878[_0x2b87('0x5')](_0x1bb4f9,function(_0xaac45a,_0x5747ba){if(_0xaac45a){_0x5930e7(_0xaac45a[_0x2b87('0x6')]());}else{_0x1e623c(_0x5747ba);}});});};EmailSmtp['prototype'][_0x2b87('0x7')]=function(_0xf47075){return new Promise(function(_0x22238d,_0x246dcb){var _0x389353=nodemailer['createTransport'](_0xf47075);_0x389353[_0x2b87('0x7')](function(_0x2266f0,_0x2f3422){if(_0x2266f0){_0x246dcb(_0x2266f0[_0x2b87('0x6')]());}else{if(_0x2f3422){_0x22238d(_0x2f3422);}else{_0x246dcb('Not\x20verifired');}}});});};module[_0x2b87('0x8')]=EmailSmtp;
\ No newline at end of file
index 91cb88c..39146c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91fb=['<p>Empty\x20message</p>','Attachments','Title','generateXOAuth2Token','user=','auth=Bearer\x20','utf-8','toString','base64','lodash','moment','randomstring','path','util','../../../config/logger','email','../../../config/environment','address','anonymous','generate','@xcally.com','head','value','name','substring','indexOf','slice','join','Anonymous','split','pop','length','isEmpty','html','test','replace','<img','attachments','forEach','push','filename','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','originCc','includes','bcc','attach','type','attachment','attachment-','format','now','server/files/attachments/','writeFileSync','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','from','messageId','inReplyTo','filter','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','BodyHTML'];(function(_0x5bd6d9,_0x51aa71){var _0x32dab4=function(_0x240993){while(--_0x240993){_0x5bd6d9['push'](_0x5bd6d9['shift']());}};_0x32dab4(++_0x51aa71);}(_0x91fb,0xed));var _0xb91f=function(_0x1c5142,_0x30ea72){_0x1c5142=_0x1c5142-0x0;var _0x1268cb=_0x91fb[_0x1c5142];return _0x1268cb;};'use strict';var _=require(_0xb91f('0x0'));var moment=require(_0xb91f('0x1'));var random=require(_0xb91f('0x2'));var fs=require('fs');var path=require(_0xb91f('0x3'));var util=require(_0xb91f('0x4'));var tnef=require('node-tnef');var logger=require(_0xb91f('0x5'))(_0xb91f('0x6'));var config=require(_0xb91f('0x7'));function getAddress(_0x34aec7){var _0x3c7766=_['head'](_0x34aec7['value']);return _0x3c7766&&_0x3c7766[_0xb91f('0x8')]?_0x3c7766['address']:_0xb91f('0x9')+random[_0xb91f('0xa')](0x6)+_0xb91f('0xb');}function getFirstName(_0x38928a){var _0x194162=_[_0xb91f('0xc')](_0x38928a[_0xb91f('0xd')]);if(_0x194162&&_0x194162[_0xb91f('0xe')]){if(_0x194162[_0xb91f('0xe')]==_0x194162['address']){return _0x194162['name'][_0xb91f('0xf')](0x0,_0x194162[_0xb91f('0xe')][_0xb91f('0x10')]('@'));}var _0x480a32=_0x194162['name']['split'](/\s+/);return _0x480a32['length']>0x1?_0x480a32[_0xb91f('0x11')](0x0,-0x1)[_0xb91f('0x12')]('\x20'):_0x194162[_0xb91f('0xe')];}return _0xb91f('0x13');}function getLastName(_0x37d0ae){var _0x294da7=_[_0xb91f('0xc')](_0x37d0ae[_0xb91f('0xd')]);if(_0x294da7&&_0x294da7['name']){var _0xbb4ae2=_0x294da7[_0xb91f('0xe')][_0xb91f('0x14')](/\s+/);return _0xbb4ae2['length']>0x1?_0xbb4ae2[_0xb91f('0x15')]():'';}return'';}function getMails(_0x27e992,_0x46b32b){var _0x18769c='';for(var _0x5ab1c4=0x0;_0x5ab1c4<_0x46b32b[_0xb91f('0xd')][_0xb91f('0x16')];_0x5ab1c4+=0x1){if(_0x46b32b[_0xb91f('0xd')][_0x5ab1c4][_0xb91f('0x8')]!==_0x27e992){if(!_[_0xb91f('0x17')](_0x18769c)){_0x18769c+=',';}_0x18769c+=_0x46b32b[_0xb91f('0xd')][_0x5ab1c4][_0xb91f('0xe')]||_0x46b32b[_0xb91f('0xd')][_0x5ab1c4][_0xb91f('0x8')]||'';_0x18769c+='\x20<';_0x18769c+=_0x46b32b[_0xb91f('0xd')][_0x5ab1c4][_0xb91f('0x8')]?_0x46b32b[_0xb91f('0xd')][_0x5ab1c4]['address']:_0xb91f('0x9')+random[_0xb91f('0xa')](0x6)+_0xb91f('0xb');_0x18769c+='>';}}return _0x18769c;}function parseEmail(_0x3c4314,_0xadb5ab,_0x28c0da){if(_0xadb5ab[_0xb91f('0x18')]){var _0x3b39c8=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x3b39c8[_0xb91f('0x19')](_0xadb5ab[_0xb91f('0x18')])){_0xadb5ab[_0xb91f('0x18')]=_0xadb5ab['html'][_0xb91f('0x1a')](_0x3b39c8,'');}if(_0xadb5ab[_0xb91f('0x18')]['includes'](_0xb91f('0x1b'))){var _0x20a7d1=[];_0xadb5ab[_0xb91f('0x1c')][_0xb91f('0x1d')](_0x1c7773=>{_0x20a7d1[_0xb91f('0x1e')](_0x1c7773[_0xb91f('0x1f')]);});var _0x4cda6b=/<img.*? _SRC(.*?)[^>]+>/g;var _0x4e51dd=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x307c97=_0xadb5ab[_0xb91f('0x18')][_0xb91f('0x1a')](_0x4e51dd,'_SRC');var _0x45bcd5=_0x307c97[_0xb91f('0x1a')](_0x4cda6b,'_IMG');for(let _0x19683f=0x0;_0x19683f<_0x20a7d1[_0xb91f('0x16')];_0x19683f++){var _0x1aa7a4=_0x45bcd5['replace'](_0xb91f('0x20'),_0xb91f('0x21')+_0x20a7d1[_0x19683f]+_0xb91f('0x22'));_0x45bcd5=_0x1aa7a4;}_0xadb5ab[_0xb91f('0x18')]=_0x45bcd5;}_0x28c0da[_0xb91f('0x23')]=_0xadb5ab[_0xb91f('0x18')];}else{_0x28c0da[_0xb91f('0x23')]=_0xadb5ab[_0xb91f('0x24')];}if(_0x28c0da[_0xb91f('0x23')]){_0x28c0da[_0xb91f('0x23')]=_0x28c0da[_0xb91f('0x23')][_0xb91f('0x1a')](/<a\s+/gi,_0xb91f('0x25'));}if(_0xadb5ab['to']){_0x28c0da[_0xb91f('0x26')][_0xb91f('0x27')]=getMails(null,_0xadb5ab['to']);var _0xf12fa1=getMails(_0x3c4314[_0xb91f('0x6')],_0xadb5ab['to']);if(!_[_0xb91f('0x17')](_0xf12fa1)){_0x28c0da[_0xb91f('0x26')]['cc']+=_0xf12fa1;}}if(_0xadb5ab['cc']){_0x28c0da[_0xb91f('0x26')][_0xb91f('0x28')]=getMails(null,_0xadb5ab['cc']);var _0x45a91b=getMails(_0x3c4314['email'],_0xadb5ab['cc']);if(!_[_0xb91f('0x17')](_0x45a91b)){if(!_[_0xb91f('0x17')](_0x28c0da[_0xb91f('0x26')]['cc'])){_0x28c0da[_0xb91f('0x26')]['cc']+=',';}_0x28c0da[_0xb91f('0x26')]['cc']+=_0x45a91b;}}if(!_[_0xb91f('0x29')](_0x28c0da[_0xb91f('0x26')][_0xb91f('0x27')],_0x3c4314[_0xb91f('0x6')])&&!_[_0xb91f('0x29')](_0x28c0da[_0xb91f('0x26')][_0xb91f('0x28')],_0x3c4314[_0xb91f('0x6')])){_0x28c0da[_0xb91f('0x26')][_0xb91f('0x2a')]=_0x3c4314[_0xb91f('0x6')];}if(_0xadb5ab['attachments']&&_0xadb5ab[_0xb91f('0x1c')][_0xb91f('0x16')]){_0x28c0da[_0xb91f('0x26')][_0xb91f('0x2b')]=_0xadb5ab[_0xb91f('0x1c')][_0xb91f('0x16')];for(var _0x4508fb=0x0,_0x4a582e,_0x374961,_0x2d336c;_0x4508fb<_0xadb5ab[_0xb91f('0x1c')][_0xb91f('0x16')];_0x4508fb+=0x1){if(_0xadb5ab[_0xb91f('0x1c')][_0x4508fb][_0xb91f('0x2c')]===_0xb91f('0x2d')){_0x2d336c=_0xadb5ab[_0xb91f('0x1c')][_0x4508fb][_0xb91f('0x1f')]||_0xb91f('0x2e')+_0x4508fb;_0x4a582e=util[_0xb91f('0x2f')]('%s-%s',Date[_0xb91f('0x30')](),_0x2d336c);_0x374961=path['join'](config['root'],_0xb91f('0x31'),_0x4a582e);fs[_0xb91f('0x32')](_0x374961,_0xadb5ab['attachments'][_0x4508fb][_0xb91f('0x33')]);_0x28c0da[_0xb91f('0x26')][_0xb91f('0x1c')]['push']({'name':_0x2d336c,'basename':_0x4a582e,'type':_0xadb5ab[_0xb91f('0x1c')][_0x4508fb][_0xb91f('0x34')],'filepath':_0x374961});}}}if(_0xadb5ab[_0xb91f('0x35')]&&_0xadb5ab[_0xb91f('0x35')][_0xb91f('0x16')]>0x0){var _0x5ed46c=[_0xb91f('0x36'),_0xb91f('0x37'),_0xb91f('0x38')];for(var _0x3d4372=0x0;_0x3d4372<_0xadb5ab['headerLines'][_0xb91f('0x16')];_0x3d4372++){var _0x22b94a=_[_0xb91f('0x10')](_0x5ed46c,_0xadb5ab[_0xb91f('0x35')][_0x3d4372][_0xb91f('0x39')]);if(_0x22b94a>=0x0){_0x28c0da['isAutoreply']=!![];}}}return _0x28c0da;}exports['parser']=function(_0x4bb9ab,_0x588b58,_0x56d78c){var _0xe8c01e={'from':getAddress(_0x588b58[_0xb91f('0x3a')]),'firstName':getFirstName(_0x588b58['from']),'lastName':getLastName(_0x588b58['from']),'mapKey':_0xb91f('0x6'),'message':{'from':getMails(_0x4bb9ab[_0xb91f('0x6')],_0x588b58[_0xb91f('0x3a')]),'to':_0x4bb9ab[_0xb91f('0x6')],'cc':'','subject':_0x588b58['subject']||'','messageId':_0x588b58[_0xb91f('0x3b')],'inReplyTo':_0x588b58[_0xb91f('0x3c')],'sentAt':moment(_0x588b58['date'])[_0xb91f('0x2f')]('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x588b58['html']&&!_0x588b58[_0xb91f('0x24')]){var _0x1ec931=_[_0xb91f('0x3d')](_0x588b58[_0xb91f('0x1c')],{'contentType':_0xb91f('0x3e')});if(_0x1ec931[_0xb91f('0x16')]){logger[_0xb91f('0x3f')](util[_0xb91f('0x2f')](_0xb91f('0x40'),_0x588b58[_0xb91f('0x3b')]));tnef[_0xb91f('0x41')](_['first'](_0x1ec931)['content'],function(_0x47db8d,_0x19a725){if(_0x19a725){_0x588b58[_0xb91f('0x18')]=_0x19a725[_0xb91f('0x42')]||_0xb91f('0x43');if(_0x19a725[_0xb91f('0x44')]){for(var _0x3aa71b=0x0;_0x3aa71b<_0x19a725[_0xb91f('0x44')][_0xb91f('0x16')];_0x3aa71b++){var _0x18c320=_0x19a725['Attachments'][_0x3aa71b];_0xe8c01e[_0xb91f('0x26')][_0xb91f('0x1c')]['push']({'filename':_0x18c320[_0xb91f('0x45')],'content':Buffer[_0xb91f('0x3a')](_0x18c320['Data'])});}}}_0x56d78c(parseEmail(_0x4bb9ab,_0x588b58,_0xe8c01e));});}else{_0x588b58['html']='<p>Empty\x20message</p>';_0x56d78c(parseEmail(_0x4bb9ab,_0x588b58,_0xe8c01e));}}else{_0x56d78c(parseEmail(_0x4bb9ab,_0x588b58,_0xe8c01e));}};exports[_0xb91f('0x46')]=function(_0x234eeb,_0x3ce23f){var _0x40e67a=[_0xb91f('0x47')+(_0x3ce23f||''),_0xb91f('0x48')+_0x234eeb,'',''];return Buffer[_0xb91f('0x3a')](_0x40e67a[_0xb91f('0x12')]('\ 1'),_0xb91f('0x49'))[_0xb91f('0x4a')](_0xb91f('0x4b'));};
\ No newline at end of file
+var _0x64c8=['generate','name','slice','Anonymous','split','length','anonymous','@xcally.com','html','test','replace','includes','<img','attachments','forEach','push','filename','_SRC','_IMG','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','isEmpty','originCc','bcc','attach','attachment','%s-%s','root','server/files/attachments/','writeFileSync','content','headerLines','indexOf','line','isAutoreply','from','messageId','inReplyTo','date','format','filter','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','Attachments','Title','generateXOAuth2Token','user=','auth=Bearer\x20','join','utf-8','toString','base64','lodash','moment','path','util','email','../../../config/environment','head','value','address'];(function(_0x32f011,_0x3c4b35){var _0x2ac6c8=function(_0x11efd4){while(--_0x11efd4){_0x32f011['push'](_0x32f011['shift']());}};_0x2ac6c8(++_0x3c4b35);}(_0x64c8,0xc6));var _0x864c=function(_0x274e43,_0x278e99){_0x274e43=_0x274e43-0x0;var _0x21c084=_0x64c8[_0x274e43];return _0x21c084;};'use strict';var _=require(_0x864c('0x0'));var moment=require(_0x864c('0x1'));var random=require('randomstring');var fs=require('fs');var path=require(_0x864c('0x2'));var util=require(_0x864c('0x3'));var tnef=require('node-tnef');var logger=require('../../../config/logger')(_0x864c('0x4'));var config=require(_0x864c('0x5'));function getAddress(_0x4852e4){var _0x4f0cc8=_[_0x864c('0x6')](_0x4852e4[_0x864c('0x7')]);return _0x4f0cc8&&_0x4f0cc8['address']?_0x4f0cc8[_0x864c('0x8')]:'anonymous'+random[_0x864c('0x9')](0x6)+'@xcally.com';}function getFirstName(_0x3814b5){var _0x7e7a22=_[_0x864c('0x6')](_0x3814b5[_0x864c('0x7')]);if(_0x7e7a22&&_0x7e7a22['name']){if(_0x7e7a22['name']==_0x7e7a22[_0x864c('0x8')]){return _0x7e7a22[_0x864c('0xa')]['substring'](0x0,_0x7e7a22[_0x864c('0xa')]['indexOf']('@'));}var _0x5f4204=_0x7e7a22[_0x864c('0xa')]['split'](/\s+/);return _0x5f4204['length']>0x1?_0x5f4204[_0x864c('0xb')](0x0,-0x1)['join']('\x20'):_0x7e7a22['name'];}return _0x864c('0xc');}function getLastName(_0x18a0c1){var _0x2d1a0d=_[_0x864c('0x6')](_0x18a0c1[_0x864c('0x7')]);if(_0x2d1a0d&&_0x2d1a0d[_0x864c('0xa')]){var _0x1e4538=_0x2d1a0d['name'][_0x864c('0xd')](/\s+/);return _0x1e4538['length']>0x1?_0x1e4538['pop']():'';}return'';}function getMails(_0x5cf93b,_0xe1c270){var _0x5474ec='';for(var _0x2de7e6=0x0;_0x2de7e6<_0xe1c270[_0x864c('0x7')][_0x864c('0xe')];_0x2de7e6+=0x1){if(_0xe1c270[_0x864c('0x7')][_0x2de7e6]['address']!==_0x5cf93b){if(!_['isEmpty'](_0x5474ec)){_0x5474ec+=',';}_0x5474ec+=_0xe1c270[_0x864c('0x7')][_0x2de7e6]['name']||_0xe1c270[_0x864c('0x7')][_0x2de7e6][_0x864c('0x8')]||'';_0x5474ec+='\x20<';_0x5474ec+=_0xe1c270[_0x864c('0x7')][_0x2de7e6][_0x864c('0x8')]?_0xe1c270[_0x864c('0x7')][_0x2de7e6][_0x864c('0x8')]:_0x864c('0xf')+random[_0x864c('0x9')](0x6)+_0x864c('0x10');_0x5474ec+='>';}}return _0x5474ec;}function parseEmail(_0x2dfcbe,_0x27d00c,_0x2dadac){if(_0x27d00c[_0x864c('0x11')]){var _0x1f9879=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x1f9879[_0x864c('0x12')](_0x27d00c[_0x864c('0x11')])){_0x27d00c[_0x864c('0x11')]=_0x27d00c[_0x864c('0x11')][_0x864c('0x13')](_0x1f9879,'');}if(_0x27d00c[_0x864c('0x11')][_0x864c('0x14')](_0x864c('0x15'))){var _0x24bb0c=[];_0x27d00c[_0x864c('0x16')][_0x864c('0x17')](_0x564af6=>{_0x24bb0c[_0x864c('0x18')](_0x564af6[_0x864c('0x19')]);});var _0x3d50ac=/<img.*? _SRC(.*?)[^>]+>/g;var _0x7855dc=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x29492c=_0x27d00c[_0x864c('0x11')][_0x864c('0x13')](_0x7855dc,_0x864c('0x1a'));var _0x263914=_0x29492c[_0x864c('0x13')](_0x3d50ac,_0x864c('0x1b'));for(let _0x4f8c90=0x0;_0x4f8c90<_0x24bb0c['length'];_0x4f8c90++){var _0x33d509=_0x263914['replace']('_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20'+_0x24bb0c[_0x4f8c90]+_0x864c('0x1c'));_0x263914=_0x33d509;}_0x27d00c[_0x864c('0x11')]=_0x263914;}_0x2dadac['body']=_0x27d00c['html'];}else{_0x2dadac[_0x864c('0x1d')]=_0x27d00c[_0x864c('0x1e')];}if(_0x2dadac[_0x864c('0x1d')]){_0x2dadac[_0x864c('0x1d')]=_0x2dadac[_0x864c('0x1d')][_0x864c('0x13')](/<a\s+/gi,_0x864c('0x1f'));}if(_0x27d00c['to']){_0x2dadac[_0x864c('0x20')][_0x864c('0x21')]=getMails(null,_0x27d00c['to']);var _0x3029e5=getMails(_0x2dfcbe['email'],_0x27d00c['to']);if(!_[_0x864c('0x22')](_0x3029e5)){_0x2dadac[_0x864c('0x20')]['cc']+=_0x3029e5;}}if(_0x27d00c['cc']){_0x2dadac['message'][_0x864c('0x23')]=getMails(null,_0x27d00c['cc']);var _0x157afe=getMails(_0x2dfcbe[_0x864c('0x4')],_0x27d00c['cc']);if(!_[_0x864c('0x22')](_0x157afe)){if(!_['isEmpty'](_0x2dadac[_0x864c('0x20')]['cc'])){_0x2dadac[_0x864c('0x20')]['cc']+=',';}_0x2dadac['message']['cc']+=_0x157afe;}}if(!_['includes'](_0x2dadac[_0x864c('0x20')]['originTo'],_0x2dfcbe[_0x864c('0x4')])&&!_[_0x864c('0x14')](_0x2dadac[_0x864c('0x20')][_0x864c('0x23')],_0x2dfcbe[_0x864c('0x4')])){_0x2dadac[_0x864c('0x20')][_0x864c('0x24')]=_0x2dfcbe[_0x864c('0x4')];}if(_0x27d00c[_0x864c('0x16')]&&_0x27d00c[_0x864c('0x16')][_0x864c('0xe')]){_0x2dadac[_0x864c('0x20')][_0x864c('0x25')]=_0x27d00c[_0x864c('0x16')][_0x864c('0xe')];for(var _0x2a184d=0x0,_0x1a6583,_0x3885f8,_0x274788;_0x2a184d<_0x27d00c[_0x864c('0x16')][_0x864c('0xe')];_0x2a184d+=0x1){if(_0x27d00c[_0x864c('0x16')][_0x2a184d]['type']===_0x864c('0x26')){_0x274788=_0x27d00c[_0x864c('0x16')][_0x2a184d][_0x864c('0x19')]||'attachment-'+_0x2a184d;_0x1a6583=util['format'](_0x864c('0x27'),Date['now'](),_0x274788);_0x3885f8=path['join'](config[_0x864c('0x28')],_0x864c('0x29'),_0x1a6583);fs[_0x864c('0x2a')](_0x3885f8,_0x27d00c[_0x864c('0x16')][_0x2a184d][_0x864c('0x2b')]);_0x2dadac['message'][_0x864c('0x16')][_0x864c('0x18')]({'name':_0x274788,'basename':_0x1a6583,'type':_0x27d00c[_0x864c('0x16')][_0x2a184d]['contentType'],'filepath':_0x3885f8});}}}if(_0x27d00c[_0x864c('0x2c')]&&_0x27d00c[_0x864c('0x2c')][_0x864c('0xe')]>0x0){var _0x3fecb4=['Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply'];for(var _0x20af38=0x0;_0x20af38<_0x27d00c[_0x864c('0x2c')][_0x864c('0xe')];_0x20af38++){var _0x2e9a8a=_[_0x864c('0x2d')](_0x3fecb4,_0x27d00c['headerLines'][_0x20af38][_0x864c('0x2e')]);if(_0x2e9a8a>=0x0){_0x2dadac[_0x864c('0x2f')]=!![];}}}return _0x2dadac;}exports['parser']=function(_0x40c82d,_0x19031a,_0x51611f){var _0xb623b9={'from':getAddress(_0x19031a[_0x864c('0x30')]),'firstName':getFirstName(_0x19031a['from']),'lastName':getLastName(_0x19031a[_0x864c('0x30')]),'mapKey':_0x864c('0x4'),'message':{'from':getMails(_0x40c82d[_0x864c('0x4')],_0x19031a[_0x864c('0x30')]),'to':_0x40c82d[_0x864c('0x4')],'cc':'','subject':_0x19031a['subject']||'','messageId':_0x19031a[_0x864c('0x31')],'inReplyTo':_0x19031a[_0x864c('0x32')],'sentAt':moment(_0x19031a[_0x864c('0x33')])[_0x864c('0x34')]('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x19031a[_0x864c('0x11')]&&!_0x19031a[_0x864c('0x1e')]){var _0x48d5e8=_[_0x864c('0x35')](_0x19031a['attachments'],{'contentType':_0x864c('0x36')});if(_0x48d5e8['length']){logger[_0x864c('0x37')](util[_0x864c('0x34')](_0x864c('0x38'),_0x19031a[_0x864c('0x31')]));tnef[_0x864c('0x39')](_[_0x864c('0x3a')](_0x48d5e8)[_0x864c('0x2b')],function(_0x2eee2a,_0x4d4f36){if(_0x4d4f36){_0x19031a['html']=_0x4d4f36[_0x864c('0x3b')]||'<p>Empty\x20message</p>';if(_0x4d4f36[_0x864c('0x3c')]){for(var _0x4ecbce=0x0;_0x4ecbce<_0x4d4f36[_0x864c('0x3c')][_0x864c('0xe')];_0x4ecbce++){var _0x3a14d8=_0x4d4f36[_0x864c('0x3c')][_0x4ecbce];_0xb623b9[_0x864c('0x20')][_0x864c('0x16')]['push']({'filename':_0x3a14d8[_0x864c('0x3d')],'content':Buffer[_0x864c('0x30')](_0x3a14d8['Data'])});}}}_0x51611f(parseEmail(_0x40c82d,_0x19031a,_0xb623b9));});}else{_0x19031a[_0x864c('0x11')]='<p>Empty\x20message</p>';_0x51611f(parseEmail(_0x40c82d,_0x19031a,_0xb623b9));}}else{_0x51611f(parseEmail(_0x40c82d,_0x19031a,_0xb623b9));}};exports[_0x864c('0x3e')]=function(_0x1dc89f,_0x3b5e5a){var _0x14a85c=[_0x864c('0x3f')+(_0x3b5e5a||''),_0x864c('0x40')+_0x1dc89f,'',''];return Buffer[_0x864c('0x30')](_0x14a85c[_0x864c('0x41')]('\ 1'),_0x864c('0x42'))[_0x864c('0x43')](_0x864c('0x44'));};
\ No newline at end of file
index 87e55f7..4f3887b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d8c=['Imap','Smtp','name','Service','key','SERV','active'];(function(_0x1f4d0f,_0x596b2f){var _0x4e0a9e=function(_0x2a49f7){while(--_0x2a49f7){_0x1f4d0f['push'](_0x1f4d0f['shift']());}};_0x4e0a9e(++_0x596b2f);}(_0x1d8c,0xf7));var _0xc1d8=function(_0x3363b3,_0x2ee474){_0x3363b3=_0x3363b3-0x0;var _0x3b2496=_0x1d8c[_0x3363b3];return _0x3b2496;};'use strict';var _=require('lodash');function MailAccount(_0x2ec342){this['id']=_0x2ec342['id']||0x0;this[_0xc1d8('0x0')]=_0x2ec342[_0xc1d8('0x0')]||_0xc1d8('0x1');this[_0xc1d8('0x2')]=_0x2ec342[_0xc1d8('0x2')]||_0xc1d8('0x3');this[_0xc1d8('0x4')]=_0x2ec342[_0xc1d8('0x4')]||![];this[_0xc1d8('0x5')]=_0x2ec342[_0xc1d8('0x5')]||[];this[_0xc1d8('0x6')]=_0x2ec342['Smtp']||[];}module['exports']=MailAccount;
\ No newline at end of file
+var _0x8bb2=['exports','lodash','name','Service','key','SERV','active','Imap','Smtp'];(function(_0x4443ed,_0x2b6d4a){var _0x271ac6=function(_0x5d7b8b){while(--_0x5d7b8b){_0x4443ed['push'](_0x4443ed['shift']());}};_0x271ac6(++_0x2b6d4a);}(_0x8bb2,0x157));var _0x28bb=function(_0x36f243,_0x188505){_0x36f243=_0x36f243-0x0;var _0x426436=_0x8bb2[_0x36f243];return _0x426436;};'use strict';var _=require(_0x28bb('0x0'));function MailAccount(_0x383df9){this['id']=_0x383df9['id']||0x0;this['name']=_0x383df9[_0x28bb('0x1')]||_0x28bb('0x2');this[_0x28bb('0x3')]=_0x383df9[_0x28bb('0x3')]||_0x28bb('0x4');this['active']=_0x383df9[_0x28bb('0x5')]||![];this[_0x28bb('0x6')]=_0x383df9[_0x28bb('0x6')]||[];this[_0x28bb('0x7')]=_0x383df9[_0x28bb('0x7')]||[];}module[_0x28bb('0x8')]=MailAccount;
\ No newline at end of file
index 6fbdc41..af2afe8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d11=['hasOwnProperty','mergeFromDatabase','prototype','initMailAccounts','length','isUndefined','exports','lodash','../model/mailAccount','mailAccounts'];(function(_0x31f1ee,_0x3d7189){var _0x139243=function(_0x4fa1d8){while(--_0x4fa1d8){_0x31f1ee['push'](_0x31f1ee['shift']());}};_0x139243(++_0x3d7189);}(_0x8d11,0x9d));var _0x18d1=function(_0x55c1f0,_0x4f574f){_0x55c1f0=_0x55c1f0-0x0;var _0x1530fa=_0x8d11[_0x55c1f0];return _0x1530fa;};'use strict';var _=require(_0x18d1('0x0'));var MailAccount=require(_0x18d1('0x1'));var Realtime=function(){this[_0x18d1('0x2')]={};};function freeIsNotKey(_0x649757,_0x24962f,_0x191fc5){var _0x9080ff=_['mapKeys'](_0x649757,function(_0x12e47a,_0x4e525e){return _0x12e47a[_0x191fc5];});for(var _0xa2af1e in _0x24962f){if(_0x24962f[_0x18d1('0x3')](_0xa2af1e)){if(!_0x9080ff[_0xa2af1e]){delete _0x24962f[_0xa2af1e];}}}}Realtime['prototype'][_0x18d1('0x4')]=function(_0x1da65f,_0x2c7f24){for(var _0x36b6ec in _0x2c7f24){if(_0x1da65f[_0x18d1('0x3')](_0x36b6ec)){_0x1da65f[_0x36b6ec]=_0x2c7f24[_0x36b6ec];}}};Realtime[_0x18d1('0x5')][_0x18d1('0x6')]=function(){var _0x5920cf=this;return function(_0x37ef12){if(_0x37ef12){freeIsNotKey(_0x37ef12,_0x5920cf[_0x18d1('0x2')],'id');for(var _0x45b425=0x0,_0x1f2e07={},_0x488f22={};_0x45b425<_0x37ef12[_0x18d1('0x7')];_0x45b425+=0x1){_0x1f2e07=_0x37ef12[_0x45b425];if(_[_0x18d1('0x8')](_0x5920cf['mailAccounts'][_0x1f2e07['id']])){_0x5920cf['mailAccounts'][_0x1f2e07['id']]=new MailAccount(_0x1f2e07);}else{_['merge'](_0x5920cf[_0x18d1('0x2')][_0x1f2e07['id']],_0x1f2e07);}}}return _0x5920cf['mailAccounts'];};};module[_0x18d1('0x9')]=Realtime;
\ No newline at end of file
+var _0x4425=['isUndefined','mailAccounts','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initMailAccounts','length'];(function(_0x3635ce,_0x33a6f9){var _0x97ecd0=function(_0x123d98){while(--_0x123d98){_0x3635ce['push'](_0x3635ce['shift']());}};_0x97ecd0(++_0x33a6f9);}(_0x4425,0xf1));var _0x5442=function(_0x1c6cfa,_0x5c5cdd){_0x1c6cfa=_0x1c6cfa-0x0;var _0x179565=_0x4425[_0x1c6cfa];return _0x179565;};'use strict';var _=require('lodash');var MailAccount=require('../model/mailAccount');var Realtime=function(){this[_0x5442('0x0')]={};};function freeIsNotKey(_0x87e95a,_0x457f4c,_0x414eef){var _0x53fd1f=_[_0x5442('0x1')](_0x87e95a,function(_0x55a308,_0x285d4a){return _0x55a308[_0x414eef];});for(var _0x523b9f in _0x457f4c){if(_0x457f4c[_0x5442('0x2')](_0x523b9f)){if(!_0x53fd1f[_0x523b9f]){delete _0x457f4c[_0x523b9f];}}}}Realtime[_0x5442('0x3')][_0x5442('0x4')]=function(_0x290874,_0xcb690a){for(var _0x4c8b1f in _0xcb690a){if(_0x290874[_0x5442('0x2')](_0x4c8b1f)){_0x290874[_0x4c8b1f]=_0xcb690a[_0x4c8b1f];}}};Realtime['prototype'][_0x5442('0x5')]=function(){var _0x4bb0f9=this;return function(_0x162dfa){if(_0x162dfa){freeIsNotKey(_0x162dfa,_0x4bb0f9['mailAccounts'],'id');for(var _0x2e9f44=0x0,_0x17a296={},_0x165d85={};_0x2e9f44<_0x162dfa[_0x5442('0x6')];_0x2e9f44+=0x1){_0x17a296=_0x162dfa[_0x2e9f44];if(_[_0x5442('0x7')](_0x4bb0f9[_0x5442('0x0')][_0x17a296['id']])){_0x4bb0f9[_0x5442('0x0')][_0x17a296['id']]=new MailAccount(_0x17a296);}else{_['merge'](_0x4bb0f9[_0x5442('0x0')][_0x17a296['id']],_0x17a296);}}}return _0x4bb0f9[_0x5442('0x0')];};};module['exports']=Realtime;
\ No newline at end of file
index c8100cb..ee961cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4380=['data5','NotifyMailAccount','../client','Request','GetMailAccount','name','service','email','active','key','ListId','TemplateId','MailServerIn','Imap','CloudProvider','type','MailServerOut','Smtp'];(function(_0x4608c5,_0x510aed){var _0x13a42e=function(_0x337fc5){while(--_0x337fc5){_0x4608c5['push'](_0x4608c5['shift']());}};_0x13a42e(++_0x510aed);}(_0x4380,0xb6));var _0x0438=function(_0x4b1c5f,_0x38f924){_0x4b1c5f=_0x4b1c5f-0x0;var _0x5d0fcd=_0x4380[_0x4b1c5f];return _0x5d0fcd;};'use strict';var client=require(_0x0438('0x0'));exports['getMailAccounts']=function(){return function(){return client[_0x0438('0x1')](_0x0438('0x2'),{'options':{'attributes':['id',_0x0438('0x3'),'provider',_0x0438('0x4'),_0x0438('0x5'),_0x0438('0x6'),_0x0438('0x7'),_0x0438('0x8'),_0x0438('0x9')],'raw':![],'include':[{'model':_0x0438('0xa'),'as':_0x0438('0xb'),'include':[{'model':_0x0438('0xc'),'attributes':['id','name','service',_0x0438('0xd'),'data5'],'as':_0x0438('0xc')}]},{'model':_0x0438('0xe'),'as':_0x0438('0xf'),'include':[{'model':_0x0438('0xc'),'attributes':['id',_0x0438('0x3'),'service','type',_0x0438('0x10')],'as':_0x0438('0xc')}]}]},'log':'getMailAccount'});};};exports['notify']=function(_0x2187a2,_0x339dce){return client['Request'](_0x0438('0x11'),{'account':{'id':_0x2187a2},'body':_0x339dce,'log':_0x0438('0x11')});};
\ No newline at end of file
+var _0xd641=['GetMailAccount','provider','service','active','key','ListId','TemplateId','MailServerIn','Imap','CloudProvider','type','data5','MailServerOut','Smtp','name','getMailAccount','NotifyMailAccount','../client','getMailAccounts','Request'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd641,0xd9));var _0x1d64=function(_0x1f2ca7,_0x4dac70){_0x1f2ca7=_0x1f2ca7-0x0;var _0x17cd5c=_0xd641[_0x1f2ca7];return _0x17cd5c;};'use strict';var client=require(_0x1d64('0x0'));exports[_0x1d64('0x1')]=function(){return function(){return client[_0x1d64('0x2')](_0x1d64('0x3'),{'options':{'attributes':['id','name',_0x1d64('0x4'),_0x1d64('0x5'),'email',_0x1d64('0x6'),_0x1d64('0x7'),_0x1d64('0x8'),_0x1d64('0x9')],'raw':![],'include':[{'model':_0x1d64('0xa'),'as':_0x1d64('0xb'),'include':[{'model':_0x1d64('0xc'),'attributes':['id','name',_0x1d64('0x5'),_0x1d64('0xd'),_0x1d64('0xe')],'as':'CloudProvider'}]},{'model':_0x1d64('0xf'),'as':_0x1d64('0x10'),'include':[{'model':_0x1d64('0xc'),'attributes':['id',_0x1d64('0x11'),_0x1d64('0x5'),_0x1d64('0xd'),_0x1d64('0xe')],'as':'CloudProvider'}]}]},'log':_0x1d64('0x12')});};};exports['notify']=function(_0x49bd1c,_0x61d170){return client['Request']('NotifyMailAccount',{'account':{'id':_0x49bd1c},'body':_0x61d170,'log':_0x1d64('0x13')});};
\ No newline at end of file
index 0f30984..34e6972 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbb8=['Request','ShowSetting','loginMailFrequency','GetSettings','../client','getSettings'];(function(_0x49953e,_0x2f4ee1){var _0x1e43a6=function(_0x548344){while(--_0x548344){_0x49953e['push'](_0x49953e['shift']());}};_0x1e43a6(++_0x2f4ee1);}(_0xbbb8,0x82));var _0x8bbb=function(_0x375cc5,_0x535786){_0x375cc5=_0x375cc5-0x0;var _0x252980=_0xbbb8[_0x375cc5];return _0x252980;};'use strict';var client=require(_0x8bbb('0x0'));exports[_0x8bbb('0x1')]=function(){return client[_0x8bbb('0x2')](_0x8bbb('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x8bbb('0x4')]},'log':_0x8bbb('0x5')});};
\ No newline at end of file
+var _0x42c1=['GetSettings','../client','ShowSetting','loginMailFrequency'];(function(_0x14eb00,_0x313591){var _0x29c0c4=function(_0x15b59e){while(--_0x15b59e){_0x14eb00['push'](_0x14eb00['shift']());}};_0x29c0c4(++_0x313591);}(_0x42c1,0x1f1));var _0x142c=function(_0x40434e,_0x16ecb3){_0x40434e=_0x40434e-0x0;var _0x1f4dc0=_0x42c1[_0x40434e];return _0x1f4dc0;};'use strict';var client=require(_0x142c('0x0'));exports['getSettings']=function(){return client['Request'](_0x142c('0x1'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x142c('0x2')]},'log':_0x142c('0x3')});};
\ No newline at end of file
index 57eab4c..20b4939 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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0xa9e0[_0x32d457];return _0x338386;};'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 5c139e8..7e8050e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd94=['socket.io','websocket','polling','redis','defaults','localhost','adapter','socket.io-redis','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','http','express','sticky-session','ioredis','createServer','timeout','listen','port'];(function(_0x1b25a6,_0x971139){var _0x4abe3c=function(_0x34367d){while(--_0x34367d){_0x1b25a6['push'](_0x1b25a6['shift']());}};_0x4abe3c(++_0x971139);}(_0xbd94,0xd9));var _0x4bd9=function(_0x38537f,_0x252124){_0x38537f=_0x38537f-0x0;var _0x141e23=_0xbd94[_0x38537f];return _0x141e23;};'use strict';var _=require('lodash');var http=require(_0x4bd9('0x0'));var express=require(_0x4bd9('0x1'));var sticky=require(_0x4bd9('0x2'));var Redis=require(_0x4bd9('0x3'));var config=require('../../config/environment');var app=express();var server=http[_0x4bd9('0x4')](app);server[_0x4bd9('0x5')]=0xdbba0;if(sticky[_0x4bd9('0x6')](server,config[_0x4bd9('0x7')])){var socketio=require(_0x4bd9('0x8'))(server,{'transports':[_0x4bd9('0x9'),_0x4bd9('0xa')]});config[_0x4bd9('0xb')]=_[_0x4bd9('0xc')](config['redis'],{'host':_0x4bd9('0xd'),'port':0x18eb});socketio[_0x4bd9('0xe')](require(_0x4bd9('0xf'))({'pubClient':new Redis(config[_0x4bd9('0xb')]),'subClient':new Redis(config[_0x4bd9('0xb')])}));require(_0x4bd9('0x10'))[_0x4bd9('0x11')]();require(_0x4bd9('0x12'))['default'](socketio);require(_0x4bd9('0x13'))['default'](app);require(_0x4bd9('0x14'))[_0x4bd9('0x11')](app);}else{server['once'](_0x4bd9('0x15'),function(){console[_0x4bd9('0x16')](_0x4bd9('0x17'),config[_0x4bd9('0x7')]);});}exports=module[_0x4bd9('0x18')]=app;
\ No newline at end of file
+var _0xf1be=['websocket','polling','redis','defaults','localhost','adapter','socket.io-redis','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','once','log','exports','lodash','express','sticky-session','ioredis','../../config/environment','createServer','listen','port','socket.io'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xf1be,0xe7));var _0xef1b=function(_0x77e9f,_0x11abc0){_0x77e9f=_0x77e9f-0x0;var _0x25100d=_0xf1be[_0x77e9f];return _0x25100d;};'use strict';var _=require(_0xef1b('0x0'));var http=require('http');var express=require(_0xef1b('0x1'));var sticky=require(_0xef1b('0x2'));var Redis=require(_0xef1b('0x3'));var config=require(_0xef1b('0x4'));var app=express();var server=http[_0xef1b('0x5')](app);server['timeout']=0xdbba0;if(sticky[_0xef1b('0x6')](server,config[_0xef1b('0x7')])){var socketio=require(_0xef1b('0x8'))(server,{'transports':[_0xef1b('0x9'),_0xef1b('0xa')]});config[_0xef1b('0xb')]=_[_0xef1b('0xc')](config['redis'],{'host':_0xef1b('0xd'),'port':0x18eb});socketio[_0xef1b('0xe')](require(_0xef1b('0xf'))({'pubClient':new Redis(config[_0xef1b('0xb')]),'subClient':new Redis(config[_0xef1b('0xb')])}));require(_0xef1b('0x10'))[_0xef1b('0x11')]();require(_0xef1b('0x12'))[_0xef1b('0x11')](socketio);require(_0xef1b('0x13'))[_0xef1b('0x11')](app);require(_0xef1b('0x14'))['default'](app);}else{server[_0xef1b('0x15')]('listening',function(){console[_0xef1b('0x16')]('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0xef1b('0x7')]);});}exports=module[_0xef1b('0x17')]=app;
\ No newline at end of file
index 0d0b58d..297e59b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e1f=['bluebird','routing','client','http','Request','request','then','debug','rpc','error','message','result','exports','jayson/promise'];(function(_0x14a3f5,_0x4f3504){var _0x1d1426=function(_0xc1c1b6){while(--_0xc1c1b6){_0x14a3f5['push'](_0x14a3f5['shift']());}};_0x1d1426(++_0x4f3504);}(_0x9e1f,0x125));var _0xf9e1=function(_0x44d7e7,_0x1a0d37){_0x44d7e7=_0x44d7e7-0x0;var _0x353799=_0x9e1f[_0x44d7e7];return _0x353799;};'use strict';var jayson=require(_0xf9e1('0x0'));var BPromise=require(_0xf9e1('0x1'));var logger=require('../../config/logger')(_0xf9e1('0x2'));var client=jayson[_0xf9e1('0x3')][_0xf9e1('0x4')]({'port':0x2329});client[_0xf9e1('0x5')]=function(_0x3ec3af,_0x2be659){return new BPromise(function(_0x5b4259,_0x4fa984){return client[_0xf9e1('0x6')](_0x3ec3af,_0x2be659)[_0xf9e1('0x7')](function(_0x58571d){logger[_0xf9e1('0x8')](_0xf9e1('0x9'),_0xf9e1('0x2'),_0x3ec3af,_0x2be659,_0x58571d);if(_0x58571d['error']){logger['error']('rpc',_0xf9e1('0x2'),_0x3ec3af,_0x58571d[_0xf9e1('0xa')][_0xf9e1('0xb')],_0x2be659);return _0x4fa984(_0x58571d[_0xf9e1('0xa')][_0xf9e1('0xb')]);}else{return _0x5b4259(_0x58571d[_0xf9e1('0xc')]);}})['catch'](function(_0x3a474b){logger['error'](_0xf9e1('0x9'),_0xf9e1('0x2'),_0x3ec3af,_0x3a474b,_0x2be659);return _0x4fa984(_0x3a474b);});});};module[_0xf9e1('0xd')]=client;
\ No newline at end of file
+var _0x323a=['message','result','catch','exports','jayson/promise','bluebird','../../config/logger','client','http','request','then','rpc','routing','error'];(function(_0x313dce,_0x4caec6){var _0x43c9b7=function(_0x25f261){while(--_0x25f261){_0x313dce['push'](_0x313dce['shift']());}};_0x43c9b7(++_0x4caec6);}(_0x323a,0x17e));var _0xa323=function(_0x2d2919,_0x572aec){_0x2d2919=_0x2d2919-0x0;var _0x49cd11=_0x323a[_0x2d2919];return _0x49cd11;};'use strict';var jayson=require(_0xa323('0x0'));var BPromise=require(_0xa323('0x1'));var logger=require(_0xa323('0x2'))('routing');var client=jayson[_0xa323('0x3')][_0xa323('0x4')]({'port':0x2329});client['Request']=function(_0x2fa0ac,_0x41d62a){return new BPromise(function(_0x1115ea,_0x4b0a7f){return client[_0xa323('0x5')](_0x2fa0ac,_0x41d62a)[_0xa323('0x6')](function(_0x397ab9){logger['debug'](_0xa323('0x7'),_0xa323('0x8'),_0x2fa0ac,_0x41d62a,_0x397ab9);if(_0x397ab9['error']){logger['error']('rpc',_0xa323('0x8'),_0x2fa0ac,_0x397ab9[_0xa323('0x9')][_0xa323('0xa')],_0x41d62a);return _0x4b0a7f(_0x397ab9['error'][_0xa323('0xa')]);}else{return _0x1115ea(_0x397ab9[_0xa323('0xb')]);}})[_0xa323('0xc')](function(_0x5c2ea2){logger[_0xa323('0x9')](_0xa323('0x7'),'routing',_0x2fa0ac,_0x5c2ea2,_0x41d62a);return _0x4b0a7f(_0x5c2ea2);});});};module[_0xa323('0xd')]=client;
\ No newline at end of file
index 86794a6..4df076f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03e6=['getAgents','then','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initWhatsappQueues','listen','catch','bluebird','./server','./realtime','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/faxQueue'];(function(_0x409deb,_0x2b731){var _0x15a4f7=function(_0x556510){while(--_0x556510){_0x409deb['push'](_0x409deb['shift']());}};_0x15a4f7(++_0x2b731);}(_0x03e6,0x1c4));var _0x603e=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x03e6[_0x4b369d];return _0x571a98;};'use strict';var BPromise=require(_0x603e('0x0'));var server=require(_0x603e('0x1'));var Realtime=require(_0x603e('0x2'));var user=require('./rpc/user');var interval=require(_0x603e('0x3'));var openchannelQueue=require(_0x603e('0x4'));var chatQueue=require(_0x603e('0x5'));var smsQueue=require(_0x603e('0x6'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0x603e('0x7'));var whatsappQueue=require('./rpc/whatsappQueue');var realtime=new Realtime();function initRealtime(){return BPromise['resolve']()['then'](user[_0x603e('0x8')]())['then'](realtime['initAgents']())[_0x603e('0x9')](interval[_0x603e('0xa')]())[_0x603e('0x9')](realtime[_0x603e('0xb')]())[_0x603e('0x9')](openchannelQueue[_0x603e('0xc')]())[_0x603e('0x9')](realtime[_0x603e('0xd')]())[_0x603e('0x9')](chatQueue[_0x603e('0xe')]())[_0x603e('0x9')](realtime[_0x603e('0xf')]())['then'](smsQueue['getSmsQueues']())[_0x603e('0x9')](realtime[_0x603e('0x10')]())[_0x603e('0x9')](mailQueue[_0x603e('0x11')]())[_0x603e('0x9')](realtime[_0x603e('0x12')]())[_0x603e('0x9')](faxQueue[_0x603e('0x13')]())[_0x603e('0x9')](realtime['initFaxQueues']())[_0x603e('0x9')](whatsappQueue['getWhatsappQueues']())[_0x603e('0x9')](realtime[_0x603e('0x14')]())[_0x603e('0x9')](function(){return realtime;});}function main(){return server[_0x603e('0x15')](realtime)[_0x603e('0x9')](function(_0x5eeba8){return initRealtime();})[_0x603e('0x9')](function(_0x3949b3){return setInterval(initRealtime,0x1388);})[_0x603e('0x16')](function(_0x327be2){console['log'](_0x327be2);});}main();
\ No newline at end of file
+var _0x9767=['getAgents','initAgents','getIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','getMailQueues','getFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','log','bluebird','./server','./realtime','./rpc/user','./rpc/openchannelQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/whatsappQueue','resolve','then'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x9767,0x166));var _0x7976=function(_0x5b628a,_0x3da33c){_0x5b628a=_0x5b628a-0x0;var _0x10d10f=_0x9767[_0x5b628a];return _0x10d10f;};'use strict';var BPromise=require(_0x7976('0x0'));var server=require(_0x7976('0x1'));var Realtime=require(_0x7976('0x2'));var user=require(_0x7976('0x3'));var interval=require('./rpc/interval');var openchannelQueue=require(_0x7976('0x4'));var chatQueue=require('./rpc/chatQueue');var smsQueue=require(_0x7976('0x5'));var mailQueue=require(_0x7976('0x6'));var faxQueue=require('./rpc/faxQueue');var whatsappQueue=require(_0x7976('0x7'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x7976('0x8')]()[_0x7976('0x9')](user[_0x7976('0xa')]())['then'](realtime[_0x7976('0xb')]())[_0x7976('0x9')](interval[_0x7976('0xc')]())[_0x7976('0x9')](realtime['initIntervals']())[_0x7976('0x9')](openchannelQueue[_0x7976('0xd')]())[_0x7976('0x9')](realtime[_0x7976('0xe')]())[_0x7976('0x9')](chatQueue[_0x7976('0xf')]())['then'](realtime['initChatQueues']())['then'](smsQueue['getSmsQueues']())[_0x7976('0x9')](realtime['initSmsQueues']())[_0x7976('0x9')](mailQueue[_0x7976('0x10')]())[_0x7976('0x9')](realtime['initMailQueues']())[_0x7976('0x9')](faxQueue[_0x7976('0x11')]())['then'](realtime['initFaxQueues']())[_0x7976('0x9')](whatsappQueue[_0x7976('0x12')]())['then'](realtime[_0x7976('0x13')]())[_0x7976('0x9')](function(){return realtime;});}function main(){return server[_0x7976('0x14')](realtime)[_0x7976('0x9')](function(_0x2042a3){return initRealtime();})['then'](function(_0x3e5030){return setInterval(initRealtime,0x1388);})[_0x7976('0x15')](function(_0x1355e3){console[_0x7976('0x16')](_0x1355e3);});}main();
\ No newline at end of file
index 410b8c4..5fea250 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(_0x4c74c9,_0x479774){var _0x10a36f=function(_0x5c2730){while(--_0x5c2730){_0x4c74c9['push'](_0x4c74c9['shift']());}};_0x10a36f(++_0x479774);}(_0x5fc3,0xa8));var _0x35fc=function(_0x592d48,_0x23f1ba){_0x592d48=_0x592d48-0x0;var _0x5d789e=_0x5fc3[_0x592d48];return _0x5d789e;};'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 _0x814b=['init','parse','map','object','lodash','util','events','EventEmitter','isNil','register','ignoreFactChanges','inherits','prototype','rules','isArray','concat','isObject','push','sync','filter','activeRules','orderBy','asc','execute','result','clone','name','ruleRef','call','next','isEqual','nextTick','restart','length','condition','matchPath','noop','findRules','matches','turn','prioritize','priority','toJSON','toString','consequence','fromJSON'];(function(_0x3ef0d0,_0x4b6e6c){var _0x4dcaeb=function(_0x559753){while(--_0x559753){_0x3ef0d0['push'](_0x3ef0d0['shift']());}};_0x4dcaeb(++_0x4b6e6c);}(_0x814b,0x1a2));var _0xb814=function(_0x554292,_0x82948a){_0x554292=_0x554292-0x0;var _0x3dd555=_0x814b[_0x554292];return _0x3dd555;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var EventEmitter=require(_0xb814('0x2'))[_0xb814('0x3')];function RuleEngine(_0xfbb64b,_0x477725){this['init']();if(!_[_0xb814('0x4')](_0xfbb64b)){this[_0xb814('0x5')](_0xfbb64b);}if(_0x477725){this[_0xb814('0x6')]=_0x477725[_0xb814('0x6')];}return this;}util[_0xb814('0x7')](RuleEngine,EventEmitter);RuleEngine[_0xb814('0x8')]['init']=function(_0x3b0829){this[_0xb814('0x9')]=[];this['activeRules']=[];};RuleEngine[_0xb814('0x8')][_0xb814('0x5')]=function(_0x186d5a){if(Array[_0xb814('0xa')](_0x186d5a)){this[_0xb814('0x9')]=this[_0xb814('0x9')][_0xb814('0xb')](_0x186d5a);}else if(_0x186d5a!==null&&_[_0xb814('0xc')](_0x186d5a)){this[_0xb814('0x9')][_0xb814('0xd')](_0x186d5a);}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0xe')]=function(){this['activeRules']=this[_0xb814('0x9')][_0xb814('0xf')](function(_0x35b10d){if(_[_0xb814('0x4')](_0x35b10d['on'])){_0x35b10d['on']=!![];}if(_0x35b10d['on']===!![]){return _0x35b10d;}});this[_0xb814('0x10')]=_[_0xb814('0x11')](this[_0xb814('0x10')],['p'],[_0xb814('0x12')]);};RuleEngine[_0xb814('0x8')][_0xb814('0x13')]=function(_0x3f4881,_0x44fb96){var _0x17f5bd=![];_0x3f4881[_0xb814('0x14')]=!![];var _0x303aca=_[_0xb814('0x15')](_0x3f4881);var _0x45e0d0=_[_0xb814('0x15')](_0x3f4881);var _0x125ce2=this[_0xb814('0x10')];var _0x7a21ef=[];var _0x48c9df=this[_0xb814('0x6')];(function FnRuleLoop(_0x55ba16){var _0x270598={'rules':function(){return _0x125ce2;},'rule':function(){return _0x125ce2[_0x55ba16];},'when':function(_0xfac75b){if(_0xfac75b){var _0x4c3007=_0x125ce2[_0x55ba16]['consequence'];_0x4c3007['ruleRef']=_0x125ce2[_0x55ba16]['id']||_0x125ce2[_0x55ba16][_0xb814('0x16')]||'index_'+_0x55ba16;process['nextTick'](function(){_0x7a21ef[_0xb814('0xd')](_0x4c3007[_0xb814('0x17')]);_0x4c3007[_0xb814('0x18')](_0x303aca,_0x270598);});}else{process['nextTick'](function(){_0x270598[_0xb814('0x19')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x17f5bd=!![];return FnRuleLoop(0x0);},'next':function(_0x531032){if(!_0x48c9df&&!_[_0xb814('0x1a')](_0x45e0d0,_0x303aca)){_0x45e0d0=_[_0xb814('0x15')](_0x303aca);process[_0xb814('0x1b')](function(){_0x270598[_0xb814('0x1c')]();});}else{process[_0xb814('0x1b')](function(){if(_[_0xb814('0x4')](_0x531032)){return FnRuleLoop(_0x55ba16+0x1);}else{return FnRuleLoop(_0x531032);}});}}};if(_0x55ba16<_0x125ce2[_0xb814('0x1d')]&&_0x17f5bd===![]){var _0x594470=_0x125ce2[_0x55ba16][_0xb814('0x1e')];_0x594470['call'](_0x303aca,_0x270598);}else{process[_0xb814('0x1b')](function(){_0x303aca[_0xb814('0x1f')]=_0x7a21ef;return _0x44fb96?_0x44fb96(_0x303aca):_[_0xb814('0x20')]();});}}(0x0));};RuleEngine[_0xb814('0x8')][_0xb814('0x21')]=function(_0xb9e57d){if(_[_0xb814('0x4')](_0xb9e57d)){return this['rules'];}else{var _0x392222=_[_0xb814('0x22')](_0xb9e57d);return _[_0xb814('0xf')](this[_0xb814('0x9')],_0x392222);}};RuleEngine[_0xb814('0x8')][_0xb814('0x23')]=function(_0x3f0150,_0x1e4e89){var _0x5a6291=_0x3f0150==='on'||_0x3f0150==='ON'?!![]:![];var _0x271aa8=this[_0xb814('0x21')](_0x1e4e89);for(var _0x52ed64=0x0,_0x9008b2=_0x271aa8[_0xb814('0x1d')];_0x52ed64<_0x9008b2;_0x52ed64+=0x1){_0x271aa8[_0x52ed64]['on']=_0x5a6291;}this[_0xb814('0xe')]();};RuleEngine['prototype'][_0xb814('0x24')]=function(_0x2051d0,_0x58c3ca){_0x2051d0=parseInt(_0x2051d0,0xa);var _0x338a28=this['findRules'](_0x58c3ca);for(var _0x6efe9a=0x0,_0x5f3e9b=_0x338a28['length'];_0x6efe9a<_0x5f3e9b;_0x6efe9a+=0x1){_0x338a28[_0x6efe9a][_0xb814('0x25')]=_0x2051d0;}this['sync']();};RuleEngine[_0xb814('0x8')][_0xb814('0x26')]=function(){var _0x2b91bd=this['rules'];if(_0x2b91bd instanceof Array){_0x2b91bd=_0x2b91bd['map'](function(_0x26d3a9){_0x26d3a9[_0xb814('0x1e')]=_0x26d3a9['condition'][_0xb814('0x27')]();_0x26d3a9[_0xb814('0x28')]=_0x26d3a9[_0xb814('0x28')][_0xb814('0x27')]();return _0x26d3a9;});}else if(!_[_0xb814('0x4')](_0x2b91bd)){_0x2b91bd[_0xb814('0x1e')]=_0x2b91bd[_0xb814('0x1e')]['toString']();_0x2b91bd[_0xb814('0x28')]=_0x2b91bd[_0xb814('0x28')][_0xb814('0x27')]();}return _0x2b91bd;};RuleEngine[_0xb814('0x8')][_0xb814('0x29')]=function(_0x4ff31a){this[_0xb814('0x2a')]();if(_['isString'](_0x4ff31a)){_0x4ff31a=JSON[_0xb814('0x2b')](_0x4ff31a);}if(_0x4ff31a instanceof Array){_0x4ff31a=_0x4ff31a[_0xb814('0x2c')](function(_0xe0f509){_0xe0f509['condition']=eval('('+_0xe0f509[_0xb814('0x1e')]+')');_0xe0f509[_0xb814('0x28')]=eval('('+_0xe0f509['consequence']+')');return _0xe0f509;});}else if(_0x4ff31a!==null&&typeof _0x4ff31a==_0xb814('0x2d')){_0x4ff31a[_0xb814('0x1e')]=eval('('+_0x4ff31a[_0xb814('0x1e')]+')');_0x4ff31a[_0xb814('0x28')]=eval('('+_0x4ff31a[_0xb814('0x28')]+')');}this[_0xb814('0x5')](_0x4ff31a);};module['exports']=RuleEngine;
\ No newline at end of file
index 714a80f..c3ef07a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0002=['client','http','error','message','sendMailMessage','bluebird'];(function(_0x4d3342,_0x1115a0){var _0x49e95c=function(_0x13b459){while(--_0x13b459){_0x4d3342['push'](_0x4d3342['shift']());}};_0x49e95c(++_0x1115a0);}(_0x0002,0x155));var _0x2000=function(_0x13f739,_0x5069b3){_0x13f739=_0x13f739-0x0;var _0x24617d=_0x0002[_0x13f739];return _0x24617d;};'use strict';var BPromise=require(_0x2000('0x0'));var jayson=require('jayson/promise');var client=jayson[_0x2000('0x1')][_0x2000('0x2')]({'port':0x232b});function request(_0x5d1736,_0x176c87){return new BPromise(function(_0x28a242,_0x23c996){return client['request'](_0x5d1736,_0x176c87)['then'](function(_0x27283b){if(_0x27283b[_0x2000('0x3')]){return _0x23c996(_0x27283b[_0x2000('0x3')][_0x2000('0x4')]);}else{return _0x28a242(_0x27283b['result']);}})['catch'](function(_0x499fb5){return _0x23c996(_0x499fb5);});});}exports[_0x2000('0x5')]=function(_0x9ce918,_0x15b1e2){return request('SendMail',{'account':_0x9ce918,'message':_0x15b1e2});};
\ No newline at end of file
+var _0x5b77=['client','http','then','error','message','result','sendMailMessage','bluebird','jayson/promise'];(function(_0x5b7e94,_0x4ad8ce){var _0x3cbad9=function(_0x382bd1){while(--_0x382bd1){_0x5b7e94['push'](_0x5b7e94['shift']());}};_0x3cbad9(++_0x4ad8ce);}(_0x5b77,0x1c0));var _0x75b7=function(_0x358b4f,_0x4eb440){_0x358b4f=_0x358b4f-0x0;var _0x3874b1=_0x5b77[_0x358b4f];return _0x3874b1;};'use strict';var BPromise=require(_0x75b7('0x0'));var jayson=require(_0x75b7('0x1'));var client=jayson[_0x75b7('0x2')][_0x75b7('0x3')]({'port':0x232b});function request(_0x2355ae,_0x4635a0){return new BPromise(function(_0x578f78,_0x167eb3){return client['request'](_0x2355ae,_0x4635a0)[_0x75b7('0x4')](function(_0x4cade1){if(_0x4cade1[_0x75b7('0x5')]){return _0x167eb3(_0x4cade1[_0x75b7('0x5')][_0x75b7('0x6')]);}else{return _0x578f78(_0x4cade1[_0x75b7('0x7')]);}})['catch'](function(_0xaadcef){return _0x167eb3(_0xaadcef);});});}exports[_0x75b7('0x8')]=function(_0x1fd630,_0x3d5cfa){return request('SendMail',{'account':_0x1fd630,'message':_0x3d5cfa});};
\ No newline at end of file
index e1de4a8..ddfc463 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a82=['whatsappCurrentCapacity','emit','user:save','exports','moment','../../../config/environment','defaults','localhost','socket.io-emitter','redis','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','md5','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','chat','openchannel','sms','whatsapp','length','Status','StatusTime','toNumber','format','mailStatusTime','mailCapacity','faxCurrentCapacity'];(function(_0x434f8b,_0x55e1e1){var _0x45d95b=function(_0x45ded7){while(--_0x45ded7){_0x434f8b['push'](_0x434f8b['shift']());}};_0x45d95b(++_0x55e1e1);}(_0x8a82,0x16c));var _0x28a8=function(_0x3ad456,_0x4c120b){_0x3ad456=_0x3ad456-0x0;var _0x1d5903=_0x8a82[_0x3ad456];return _0x1d5903;};'use strict';var _=require('lodash');var moment=require(_0x28a8('0x0'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x28a8('0x1'));config['redis']=_[_0x28a8('0x2')](config['redis'],{'host':_0x28a8('0x3'),'port':0x18eb});var io=require(_0x28a8('0x4'))(new Redis(config[_0x28a8('0x5')]));function Agent(_0xdd4ff0){this['id']=_0xdd4ff0['id']||0x0;this[_0x28a8('0x6')]=_0xdd4ff0[_0x28a8('0x6')]||'';this[_0x28a8('0x7')]=_0xdd4ff0[_0x28a8('0x7')]||!![];this[_0x28a8('0x8')]=_0xdd4ff0['voicePause']||![];this['chatPause']=_0xdd4ff0[_0x28a8('0x9')]||![];this[_0x28a8('0xa')]=_0xdd4ff0[_0x28a8('0xa')]||![];this[_0x28a8('0xb')]=_0xdd4ff0[_0x28a8('0xb')]||![];this[_0x28a8('0xc')]=_0xdd4ff0[_0x28a8('0xc')]||![];this['openchannelPause']=_0xdd4ff0[_0x28a8('0xd')]||![];this[_0x28a8('0xe')]=_0x28a8('0xf');this[_0x28a8('0x10')]=0x0;this[_0x28a8('0x11')]=_0xdd4ff0[_0x28a8('0x11')]||0x0;this[_0x28a8('0x12')]=0x0;this['mailStatus']='unknown';this['mailStatusTime']=0x0;this['mailCapacity']=_0xdd4ff0['mailCapacity']||0x0;this[_0x28a8('0x13')]=0x0;this[_0x28a8('0x14')]=_0x28a8('0xf');this[_0x28a8('0x15')]=0x0;this[_0x28a8('0x16')]=_0xdd4ff0['faxCapacity']||0x0;this['faxCurrentCapacity']=0x0;this[_0x28a8('0x17')]=_0x28a8('0xf');this[_0x28a8('0x18')]=0x0;this[_0x28a8('0x19')]=_0xdd4ff0[_0x28a8('0x19')]||0x0;this[_0x28a8('0x1a')]=0x0;this[_0x28a8('0x1b')]=_0x28a8('0xf');this[_0x28a8('0x1c')]=0x0;this['whatsappCapacity']=_0xdd4ff0[_0x28a8('0x1d')]||0x0;this['whatsappCurrentCapacity']=0x0;this[_0x28a8('0x1e')]='unknown';this[_0x28a8('0x1f')]=0x0;this[_0x28a8('0x20')]=_0xdd4ff0['openchannelCapacity']||0x0;this[_0x28a8('0x21')]=0x0;this[_0x28a8('0x22')]=![];this[_0x28a8('0x23')]=undefined;this[_0x28a8('0x24')]='';this[_0x28a8('0x25')]();}Agent[_0x28a8('0x26')][_0x28a8('0x27')]=function(_0x473f61){if(this[_0x473f61+_0x28a8('0x28')]>0x0){if(this[_0x473f61+_0x28a8('0x29')]>0x0&&this[_0x473f61+'CurrentCapacity']>=this[_0x473f61+_0x28a8('0x29')]){return _0x28a8('0x2a');}else{return _0x28a8('0x2b');}}else{return'idle';}};Agent[_0x28a8('0x26')][_0x28a8('0x25')]=function(){var _0xeba4db=['mail',_0x28a8('0x2c'),_0x28a8('0x2d'),'fax',_0x28a8('0x2e'),_0x28a8('0x2f')];for(var _0x55111c=0x0;_0x55111c<_0xeba4db[_0x28a8('0x30')];_0x55111c+=0x1){var _0x58045d=this[_0x28a8('0x27')](_0xeba4db[_0x55111c]);if(this[_0xeba4db[_0x55111c]+_0x28a8('0x31')]!==_0x58045d){this[_0xeba4db[_0x55111c]+_0x28a8('0x32')]=_[_0x28a8('0x33')](moment()[_0x28a8('0x34')]('x'));}this[_0xeba4db[_0x55111c]+'Status']=_0x58045d;}var _0x22b0c3={'id':this['id'],'name':this['name'],'online':this['online'],'voicePause':this[_0x28a8('0x8')],'chatPause':this[_0x28a8('0x9')],'mailPause':this[_0x28a8('0xa')],'smsPause':this['smsPause'],'faxPause':this[_0x28a8('0xb')],'openchannelPause':this[_0x28a8('0xd')],'chatStatus':this[_0x28a8('0xe')],'chatStatusTime':this[_0x28a8('0x10')],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this[_0x28a8('0x12')],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0x28a8('0x35')],'mailCapacity':this[_0x28a8('0x36')],'mailCurrentCapacity':this[_0x28a8('0x13')],'faxStatus':this[_0x28a8('0x14')],'faxStatusTime':this[_0x28a8('0x15')],'faxCapacity':this['faxCapacity'],'faxCurrentCapacity':this[_0x28a8('0x37')],'smsStatus':this[_0x28a8('0x17')],'smsStatusTime':this[_0x28a8('0x18')],'smsCapacity':this[_0x28a8('0x19')],'smsCurrentCapacity':this[_0x28a8('0x1a')],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this['whatsappStatusTime'],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this[_0x28a8('0x38')],'openchannelStatus':this[_0x28a8('0x1e')],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this[_0x28a8('0x20')],'openchannelCurrentCapacity':this[_0x28a8('0x21')],'busy':this[_0x28a8('0x22')],'busyQueue':this[_0x28a8('0x23')]};var _0x52fe03=md5(JSON['stringify'](_0x22b0c3));if(this[_0x28a8('0x24')]!==_0x52fe03){this[_0x28a8('0x24')]=_0x52fe03;io[_0x28a8('0x39')](_0x28a8('0x3a'),_0x22b0c3);}};module[_0x28a8('0x3b')]=Agent;
\ No newline at end of file
+var _0xc5bd=['faxCapacity','faxCurrentCapacity','smsStatus','smsCapacity','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','prototype','getChannelStatus','CurrentCapacity','Capacity','working','idle','updateRealtime','mail','openchannel','fax','length','Status','toNumber','format','name','chatStatus','mailCurrentCapacity','faxStatus','smsStatusTime','smsCurrentCapacity','whatsappStatus','busyQueue','user:save','exports','lodash','moment','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','online','chatPause','mailPause','faxPause','smsPause','openchannelPause','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','faxStatusTime'];(function(_0x2d7d1f,_0xb2294d){var _0x539127=function(_0x1aa4fb){while(--_0x1aa4fb){_0x2d7d1f['push'](_0x2d7d1f['shift']());}};_0x539127(++_0xb2294d);}(_0xc5bd,0x9a));var _0xdc5b=function(_0x47998d,_0x3f8318){_0x47998d=_0x47998d-0x0;var _0xe7b000=_0xc5bd[_0x47998d];return _0xe7b000;};'use strict';var _=require(_0xdc5b('0x0'));var moment=require(_0xdc5b('0x1'));var md5=require(_0xdc5b('0x2'));var Redis=require(_0xdc5b('0x3'));var config=require(_0xdc5b('0x4'));config[_0xdc5b('0x5')]=_[_0xdc5b('0x6')](config[_0xdc5b('0x5')],{'host':_0xdc5b('0x7'),'port':0x18eb});var io=require(_0xdc5b('0x8'))(new Redis(config['redis']));function Agent(_0x234963){this['id']=_0x234963['id']||0x0;this['name']=_0x234963['name']||'';this[_0xdc5b('0x9')]=_0x234963[_0xdc5b('0x9')]||!![];this['voicePause']=_0x234963['voicePause']||![];this[_0xdc5b('0xa')]=_0x234963[_0xdc5b('0xa')]||![];this[_0xdc5b('0xb')]=_0x234963[_0xdc5b('0xb')]||![];this[_0xdc5b('0xc')]=_0x234963['faxPause']||![];this[_0xdc5b('0xd')]=_0x234963[_0xdc5b('0xd')]||![];this['openchannelPause']=_0x234963[_0xdc5b('0xe')]||![];this['chatStatus']=_0xdc5b('0xf');this[_0xdc5b('0x10')]=0x0;this[_0xdc5b('0x11')]=_0x234963['chatCapacity']||0x0;this[_0xdc5b('0x12')]=0x0;this[_0xdc5b('0x13')]=_0xdc5b('0xf');this[_0xdc5b('0x14')]=0x0;this['mailCapacity']=_0x234963[_0xdc5b('0x15')]||0x0;this['mailCurrentCapacity']=0x0;this['faxStatus']=_0xdc5b('0xf');this[_0xdc5b('0x16')]=0x0;this['faxCapacity']=_0x234963[_0xdc5b('0x17')]||0x0;this[_0xdc5b('0x18')]=0x0;this[_0xdc5b('0x19')]=_0xdc5b('0xf');this['smsStatusTime']=0x0;this[_0xdc5b('0x1a')]=_0x234963['smsCapacity']||0x0;this['smsCurrentCapacity']=0x0;this['whatsappStatus']='unknown';this[_0xdc5b('0x1b')]=0x0;this[_0xdc5b('0x1c')]=_0x234963['whatsappCapacity']||0x0;this[_0xdc5b('0x1d')]=0x0;this[_0xdc5b('0x1e')]=_0xdc5b('0xf');this[_0xdc5b('0x1f')]=0x0;this[_0xdc5b('0x20')]=_0x234963[_0xdc5b('0x20')]||0x0;this[_0xdc5b('0x21')]=0x0;this[_0xdc5b('0x22')]=![];this['busyQueue']=undefined;this[_0xdc5b('0x2')]='';this['updateRealtime']();}Agent[_0xdc5b('0x23')][_0xdc5b('0x24')]=function(_0x46493a){if(this[_0x46493a+_0xdc5b('0x25')]>0x0){if(this[_0x46493a+_0xdc5b('0x26')]>0x0&&this[_0x46493a+_0xdc5b('0x25')]>=this[_0x46493a+_0xdc5b('0x26')]){return'maxcapacity';}else{return _0xdc5b('0x27');}}else{return _0xdc5b('0x28');}};Agent[_0xdc5b('0x23')][_0xdc5b('0x29')]=function(){var _0x624189=[_0xdc5b('0x2a'),'chat',_0xdc5b('0x2b'),_0xdc5b('0x2c'),'sms','whatsapp'];for(var _0x46418c=0x0;_0x46418c<_0x624189[_0xdc5b('0x2d')];_0x46418c+=0x1){var _0x415257=this['getChannelStatus'](_0x624189[_0x46418c]);if(this[_0x624189[_0x46418c]+_0xdc5b('0x2e')]!==_0x415257){this[_0x624189[_0x46418c]+'StatusTime']=_[_0xdc5b('0x2f')](moment()[_0xdc5b('0x30')]('x'));}this[_0x624189[_0x46418c]+_0xdc5b('0x2e')]=_0x415257;}var _0xa717db={'id':this['id'],'name':this[_0xdc5b('0x31')],'online':this[_0xdc5b('0x9')],'voicePause':this['voicePause'],'chatPause':this[_0xdc5b('0xa')],'mailPause':this['mailPause'],'smsPause':this['smsPause'],'faxPause':this['faxPause'],'openchannelPause':this['openchannelPause'],'chatStatus':this[_0xdc5b('0x32')],'chatStatusTime':this[_0xdc5b('0x10')],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this[_0xdc5b('0x13')],'mailStatusTime':this[_0xdc5b('0x14')],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this[_0xdc5b('0x33')],'faxStatus':this[_0xdc5b('0x34')],'faxStatusTime':this[_0xdc5b('0x16')],'faxCapacity':this[_0xdc5b('0x17')],'faxCurrentCapacity':this[_0xdc5b('0x18')],'smsStatus':this[_0xdc5b('0x19')],'smsStatusTime':this[_0xdc5b('0x35')],'smsCapacity':this[_0xdc5b('0x1a')],'smsCurrentCapacity':this[_0xdc5b('0x36')],'whatsappStatus':this[_0xdc5b('0x37')],'whatsappStatusTime':this['whatsappStatusTime'],'whatsappCapacity':this[_0xdc5b('0x1c')],'whatsappCurrentCapacity':this[_0xdc5b('0x1d')],'openchannelStatus':this[_0xdc5b('0x1e')],'openchannelStatusTime':this[_0xdc5b('0x1f')],'openchannelCapacity':this[_0xdc5b('0x20')],'openchannelCurrentCapacity':this[_0xdc5b('0x21')],'busy':this[_0xdc5b('0x22')],'busyQueue':this[_0xdc5b('0x38')]};var _0x16d7f0=md5(JSON['stringify'](_0xa717db));if(this[_0xdc5b('0x2')]!==_0x16d7f0){this[_0xdc5b('0x2')]=_0x16d7f0;io['emit'](_0xdc5b('0x39'),_0xa717db);}};module[_0xdc5b('0x3a')]=Agent;
\ No newline at end of file
index e33919c..2cc0aed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc6=['prototype','updateRouting','mapAgentsId','_rr','map','Agents','updateRealtime','loggedIn','paused','online','chatPause','available','waiting','stringify','format','chat:queue:%s','emit','chat_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall'];(function(_0x2ffa07,_0x1c45da){var _0x1b446c=function(_0x11afdc){while(--_0x11afdc){_0x2ffa07['push'](_0x2ffa07['shift']());}};_0x1b446c(++_0x1c45da);}(_0x5fc6,0x12a));var _0x65fc=function(_0x43f27c,_0x1479bf){_0x43f27c=_0x43f27c-0x0;var _0x12cd7d=_0x5fc6[_0x43f27c];return _0x12cd7d;};'use strict';var _=require(_0x65fc('0x0'));var md5=require(_0x65fc('0x1'));var util=require(_0x65fc('0x2'));var Redis=require(_0x65fc('0x3'));var config=require(_0x65fc('0x4'));config[_0x65fc('0x5')]=_[_0x65fc('0x6')](config[_0x65fc('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x65fc('0x7'))(new Redis(config[_0x65fc('0x5')]));function ChatQueue(_0x1054cd){this['id']=_0x1054cd['id']||0x0;this[_0x65fc('0x8')]=_0x1054cd[_0x65fc('0x8')]||'';this[_0x65fc('0x9')]=_0x1054cd['timeout']||0xa;this[_0x65fc('0xa')]=_0x1054cd[_0x65fc('0xa')]||_0x65fc('0xb');this['Agents']=_0x1054cd['Agents'];this['mapAgentsId']={};this['waiting']=0x0;this[_0x65fc('0x1')]='';this['updateRouting']();this['updateRealtime']();}ChatQueue[_0x65fc('0xc')][_0x65fc('0xd')]=function(){var _0x4f8412=this[_0x65fc('0xe')][_0x65fc('0xf')];this[_0x65fc('0xe')]=_[_0x65fc('0x10')](this[_0x65fc('0x11')],'id');this['mapAgentsId'][_0x65fc('0xf')]=_0x4f8412;};ChatQueue['prototype'][_0x65fc('0x12')]=function(){this[_0x65fc('0x13')]=0x0;this[_0x65fc('0x14')]=0x0;for(var _0x3687f5=0x0;_0x3687f5<this[_0x65fc('0x11')]['length'];_0x3687f5+=0x1){if(this['Agents'][_0x3687f5][_0x65fc('0x15')]){this[_0x65fc('0x13')]+=0x1;}if(this['Agents'][_0x3687f5][_0x65fc('0x16')]){this[_0x65fc('0x14')]+=0x1;}}this[_0x65fc('0x17')]=this[_0x65fc('0x13')]-this[_0x65fc('0x14')];this[_0x65fc('0x17')]=this[_0x65fc('0x17')]>=0x0?this[_0x65fc('0x17')]:0x0;var _0x3715fa={'id':this['id'],'available':this['available'],'loggedIn':this[_0x65fc('0x13')],'name':this[_0x65fc('0x8')],'paused':this[_0x65fc('0x14')],'waiting':this[_0x65fc('0x18')]};var _0x12bab4=md5(JSON[_0x65fc('0x19')](_0x3715fa));if(this[_0x65fc('0x1')]!==_0x12bab4){this[_0x65fc('0x1')]=_0x12bab4;io['to'](util[_0x65fc('0x1a')](_0x65fc('0x1b'),_0x3715fa[_0x65fc('0x8')]))[_0x65fc('0x1c')](_0x65fc('0x1d'),_0x3715fa);}};module[_0x65fc('0x1e')]=ChatQueue;
\ No newline at end of file
+var _0xc89f=['strategy','beepall','Agents','mapAgentsId','updateRouting','prototype','_rr','map','updateRealtime','loggedIn','paused','length','online','chatPause','available','waiting','stringify','format','chat:queue:%s','emit','exports','md5','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout'];(function(_0xa2cadc,_0x39d0f3){var _0x4722a1=function(_0x4d943f){while(--_0x4d943f){_0xa2cadc['push'](_0xa2cadc['shift']());}};_0x4722a1(++_0x39d0f3);}(_0xc89f,0xe0));var _0xfc89=function(_0x523739,_0x58eb15){_0x523739=_0x523739-0x0;var _0x38075e=_0xc89f[_0x523739];return _0x38075e;};'use strict';var _=require('lodash');var md5=require(_0xfc89('0x0'));var util=require('util');var Redis=require(_0xfc89('0x1'));var config=require(_0xfc89('0x2'));config[_0xfc89('0x3')]=_['defaults'](config[_0xfc89('0x3')],{'host':_0xfc89('0x4'),'port':0x18eb});var io=require(_0xfc89('0x5'))(new Redis(config[_0xfc89('0x3')]));function ChatQueue(_0x1a5a1f){this['id']=_0x1a5a1f['id']||0x0;this[_0xfc89('0x6')]=_0x1a5a1f[_0xfc89('0x6')]||'';this[_0xfc89('0x7')]=_0x1a5a1f[_0xfc89('0x7')]||0xa;this[_0xfc89('0x8')]=_0x1a5a1f[_0xfc89('0x8')]||_0xfc89('0x9');this[_0xfc89('0xa')]=_0x1a5a1f[_0xfc89('0xa')];this[_0xfc89('0xb')]={};this['waiting']=0x0;this[_0xfc89('0x0')]='';this[_0xfc89('0xc')]();this['updateRealtime']();}ChatQueue[_0xfc89('0xd')][_0xfc89('0xc')]=function(){var _0x34f19d=this[_0xfc89('0xb')][_0xfc89('0xe')];this[_0xfc89('0xb')]=_[_0xfc89('0xf')](this[_0xfc89('0xa')],'id');this['mapAgentsId'][_0xfc89('0xe')]=_0x34f19d;};ChatQueue['prototype'][_0xfc89('0x10')]=function(){this[_0xfc89('0x11')]=0x0;this[_0xfc89('0x12')]=0x0;for(var _0x3e9312=0x0;_0x3e9312<this[_0xfc89('0xa')][_0xfc89('0x13')];_0x3e9312+=0x1){if(this['Agents'][_0x3e9312][_0xfc89('0x14')]){this['loggedIn']+=0x1;}if(this[_0xfc89('0xa')][_0x3e9312][_0xfc89('0x15')]){this[_0xfc89('0x12')]+=0x1;}}this['available']=this[_0xfc89('0x11')]-this[_0xfc89('0x12')];this[_0xfc89('0x16')]=this[_0xfc89('0x16')]>=0x0?this[_0xfc89('0x16')]:0x0;var _0x3a6acf={'id':this['id'],'available':this[_0xfc89('0x16')],'loggedIn':this['loggedIn'],'name':this[_0xfc89('0x6')],'paused':this[_0xfc89('0x12')],'waiting':this[_0xfc89('0x17')]};var _0x493e18=md5(JSON[_0xfc89('0x18')](_0x3a6acf));if(this[_0xfc89('0x0')]!==_0x493e18){this['md5']=_0x493e18;io['to'](util[_0xfc89('0x19')](_0xfc89('0x1a'),_0x3a6acf[_0xfc89('0x6')]))[_0xfc89('0x1b')]('chat_queue:save',_0x3a6acf);}};module[_0xfc89('0x1c')]=ChatQueue;
\ No newline at end of file
index 6119cd7..9421096 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcff=['loggedIn','length','faxPause','paused','available','stringify','format','fax:queue:%s','emit','fax_queue:save','exports','md5','util','../../../config/environment','redis','defaults','localhost','name','strategy','beepall','mapAgentsId','waiting','updateRouting','_rr','map','Agents','prototype','updateRealtime'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbcff,0x97));var _0xfbcf=function(_0x191829,_0x32bb1d){_0x191829=_0x191829-0x0;var _0x333476=_0xbcff[_0x191829];return _0x333476;};'use strict';var _=require('lodash');var md5=require(_0xfbcf('0x0'));var util=require(_0xfbcf('0x1'));var Redis=require('ioredis');var config=require(_0xfbcf('0x2'));config[_0xfbcf('0x3')]=_[_0xfbcf('0x4')](config['redis'],{'host':_0xfbcf('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function FaxQueue(_0x15de25){this['id']=_0x15de25['id']||0x0;this[_0xfbcf('0x6')]=_0x15de25['name']||'';this['timeout']=_0x15de25['timeout']||0xa;this[_0xfbcf('0x7')]=_0x15de25[_0xfbcf('0x7')]||_0xfbcf('0x8');this['Agents']=_0x15de25['Agents'];this[_0xfbcf('0x9')]={};this[_0xfbcf('0xa')]=0x0;this[_0xfbcf('0x0')]='';this[_0xfbcf('0xb')]();this['updateRealtime']();}FaxQueue['prototype']['updateRouting']=function(){var _0x557370=this[_0xfbcf('0x9')][_0xfbcf('0xc')];this['mapAgentsId']=_[_0xfbcf('0xd')](this[_0xfbcf('0xe')],'id');this[_0xfbcf('0x9')][_0xfbcf('0xc')]=_0x557370;};FaxQueue[_0xfbcf('0xf')][_0xfbcf('0x10')]=function(){this[_0xfbcf('0x11')]=0x0;this['paused']=0x0;for(var _0x792c6f=0x0;_0x792c6f<this[_0xfbcf('0xe')][_0xfbcf('0x12')];_0x792c6f+=0x1){if(this[_0xfbcf('0xe')][_0x792c6f]['online']){this['loggedIn']+=0x1;}if(this[_0xfbcf('0xe')][_0x792c6f][_0xfbcf('0x13')]){this[_0xfbcf('0x14')]+=0x1;}}this[_0xfbcf('0x15')]=this[_0xfbcf('0x11')]-this['paused'];this['available']=this[_0xfbcf('0x15')]>=0x0?this[_0xfbcf('0x15')]:0x0;var _0x22f20b={'id':this['id'],'available':this[_0xfbcf('0x15')],'loggedIn':this[_0xfbcf('0x11')],'name':this[_0xfbcf('0x6')],'paused':this[_0xfbcf('0x14')],'waiting':this[_0xfbcf('0xa')]};var _0x1fe1bf=md5(JSON[_0xfbcf('0x16')](_0x22f20b));if(this[_0xfbcf('0x0')]!==_0x1fe1bf){this['md5']=_0x1fe1bf;io['to'](util[_0xfbcf('0x17')](_0xfbcf('0x18'),_0x22f20b[_0xfbcf('0x6')]))[_0xfbcf('0x19')](_0xfbcf('0x1a'),_0x22f20b);}};module[_0xfbcf('0x1b')]=FaxQueue;
\ No newline at end of file
+var _0x0db6=['fax_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','map','loggedIn','paused','length','online','faxPause','available','stringify','fax:queue:%s','emit'];(function(_0x279732,_0x2c13af){var _0x576ce2=function(_0x2e54e6){while(--_0x2e54e6){_0x279732['push'](_0x279732['shift']());}};_0x576ce2(++_0x2c13af);}(_0x0db6,0xd3));var _0x60db=function(_0x3c5735,_0x1f4f53){_0x3c5735=_0x3c5735-0x0;var _0x2cd61d=_0x0db6[_0x3c5735];return _0x2cd61d;};'use strict';var _=require(_0x60db('0x0'));var md5=require(_0x60db('0x1'));var util=require(_0x60db('0x2'));var Redis=require(_0x60db('0x3'));var config=require(_0x60db('0x4'));config[_0x60db('0x5')]=_[_0x60db('0x6')](config[_0x60db('0x5')],{'host':_0x60db('0x7'),'port':0x18eb});var io=require(_0x60db('0x8'))(new Redis(config[_0x60db('0x5')]));function FaxQueue(_0x80d35d){this['id']=_0x80d35d['id']||0x0;this[_0x60db('0x9')]=_0x80d35d[_0x60db('0x9')]||'';this[_0x60db('0xa')]=_0x80d35d[_0x60db('0xa')]||0xa;this[_0x60db('0xb')]=_0x80d35d[_0x60db('0xb')]||'beepall';this['Agents']=_0x80d35d[_0x60db('0xc')];this[_0x60db('0xd')]={};this[_0x60db('0xe')]=0x0;this[_0x60db('0x1')]='';this['updateRouting']();this[_0x60db('0xf')]();}FaxQueue[_0x60db('0x10')][_0x60db('0x11')]=function(){var _0x31ba5f=this[_0x60db('0xd')][_0x60db('0x12')];this[_0x60db('0xd')]=_[_0x60db('0x13')](this['Agents'],'id');this[_0x60db('0xd')][_0x60db('0x12')]=_0x31ba5f;};FaxQueue['prototype'][_0x60db('0xf')]=function(){this[_0x60db('0x14')]=0x0;this[_0x60db('0x15')]=0x0;for(var _0x5a395c=0x0;_0x5a395c<this[_0x60db('0xc')][_0x60db('0x16')];_0x5a395c+=0x1){if(this['Agents'][_0x5a395c][_0x60db('0x17')]){this[_0x60db('0x14')]+=0x1;}if(this['Agents'][_0x5a395c][_0x60db('0x18')]){this[_0x60db('0x15')]+=0x1;}}this['available']=this[_0x60db('0x14')]-this[_0x60db('0x15')];this[_0x60db('0x19')]=this[_0x60db('0x19')]>=0x0?this['available']:0x0;var _0x4192a6={'id':this['id'],'available':this[_0x60db('0x19')],'loggedIn':this[_0x60db('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x60db('0xe')]};var _0x3bdfab=md5(JSON[_0x60db('0x1a')](_0x4192a6));if(this[_0x60db('0x1')]!==_0x3bdfab){this['md5']=_0x3bdfab;io['to'](util['format'](_0x60db('0x1b'),_0x4192a6[_0x60db('0x9')]))[_0x60db('0x1c')](_0x60db('0x1d'),_0x4192a6);}};module['exports']=FaxQueue;
\ No newline at end of file
index 94ec935..c9e2a64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbae5=['name','Intervals','exports'];(function(_0xc0639e,_0x5da31c){var _0x16e5bb=function(_0x2ac8b1){while(--_0x2ac8b1){_0xc0639e['push'](_0xc0639e['shift']());}};_0x16e5bb(++_0x5da31c);}(_0xbae5,0x11a));var _0x5bae=function(_0x50cf37,_0x6d1a12){_0x50cf37=_0x50cf37-0x0;var _0x2cb903=_0xbae5[_0x50cf37];return _0x2cb903;};'use strict';function Interval(_0x1d5c3a){this['id']=_0x1d5c3a['id']||0x0;this[_0x5bae('0x0')]=_0x1d5c3a[_0x5bae('0x0')]||'';this[_0x5bae('0x1')]=_0x1d5c3a[_0x5bae('0x1')]||{};}module[_0x5bae('0x2')]=Interval;
\ No newline at end of file
+var _0x2696=['name','Intervals','exports'];(function(_0x145bc2,_0x21b4bb){var _0x6295d6=function(_0x2f0c7a){while(--_0x2f0c7a){_0x145bc2['push'](_0x145bc2['shift']());}};_0x6295d6(++_0x21b4bb);}(_0x2696,0x120));var _0x6269=function(_0x591022,_0x3a7989){_0x591022=_0x591022-0x0;var _0x16cb0c=_0x2696[_0x591022];return _0x16cb0c;};'use strict';function Interval(_0x2c543a){this['id']=_0x2c543a['id']||0x0;this[_0x6269('0x0')]=_0x2c543a['name']||'';this[_0x6269('0x1')]=_0x2c543a[_0x6269('0x1')]||{};}module[_0x6269('0x2')]=Interval;
\ No newline at end of file
index 403a57d..fda13ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39bb=['name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','updateRouting','map','loggedIn','paused','online','available','stringify','format','mail:queue:%s','emit','mail_queue:save','lodash','md5','util','ioredis','redis','defaults','socket.io-emitter'];(function(_0x360fc7,_0x5cd3e7){var _0x42f8ee=function(_0x4944bc){while(--_0x4944bc){_0x360fc7['push'](_0x360fc7['shift']());}};_0x42f8ee(++_0x5cd3e7);}(_0x39bb,0x1b3));var _0xb39b=function(_0x4ed4d2,_0x47acf7){_0x4ed4d2=_0x4ed4d2-0x0;var _0x15ae2e=_0x39bb[_0x4ed4d2];return _0x15ae2e;};'use strict';var _=require(_0xb39b('0x0'));var md5=require(_0xb39b('0x1'));var util=require(_0xb39b('0x2'));var Redis=require(_0xb39b('0x3'));var config=require('../../../config/environment');config[_0xb39b('0x4')]=_[_0xb39b('0x5')](config[_0xb39b('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0xb39b('0x6'))(new Redis(config[_0xb39b('0x4')]));function MailQueue(_0x11669f){this['id']=_0x11669f['id']||0x0;this[_0xb39b('0x7')]=_0x11669f[_0xb39b('0x7')]||'';this[_0xb39b('0x8')]=_0x11669f[_0xb39b('0x8')]||0xa;this[_0xb39b('0x9')]=_0x11669f['strategy']||_0xb39b('0xa');this[_0xb39b('0xb')]=_0x11669f[_0xb39b('0xb')];this[_0xb39b('0xc')]={};this[_0xb39b('0xd')]=0x0;this[_0xb39b('0x1')]='';this['updateRouting']();this[_0xb39b('0xe')]();}MailQueue['prototype'][_0xb39b('0xf')]=function(){var _0x3e074b=this[_0xb39b('0xc')]['_rr'];this[_0xb39b('0xc')]=_[_0xb39b('0x10')](this[_0xb39b('0xb')],'id');this[_0xb39b('0xc')]['_rr']=_0x3e074b;};MailQueue['prototype'][_0xb39b('0xe')]=function(){this[_0xb39b('0x11')]=0x0;this[_0xb39b('0x12')]=0x0;for(var _0xb2555f=0x0;_0xb2555f<this[_0xb39b('0xb')]['length'];_0xb2555f+=0x1){if(this[_0xb39b('0xb')][_0xb2555f][_0xb39b('0x13')]){this[_0xb39b('0x11')]+=0x1;}if(this[_0xb39b('0xb')][_0xb2555f]['mailPause']){this['paused']+=0x1;}}this['available']=this['loggedIn']-this[_0xb39b('0x12')];this[_0xb39b('0x14')]=this[_0xb39b('0x14')]>=0x0?this['available']:0x0;var _0xd7d948={'id':this['id'],'available':this[_0xb39b('0x14')],'loggedIn':this[_0xb39b('0x11')],'name':this[_0xb39b('0x7')],'paused':this['paused'],'waiting':this[_0xb39b('0xd')]};var _0x331d68=md5(JSON[_0xb39b('0x15')](_0xd7d948));if(this[_0xb39b('0x1')]!==_0x331d68){this[_0xb39b('0x1')]=_0x331d68;io['to'](util[_0xb39b('0x16')](_0xb39b('0x17'),_0xd7d948['name']))[_0xb39b('0x18')](_0xb39b('0x19'),_0xd7d948);}};module['exports']=MailQueue;
\ No newline at end of file
+var _0xd2bc=['loggedIn','paused','length','online','mailPause','available','stringify','format','mail:queue:%s','emit','mail_queue:save','exports','md5','util','ioredis','../../../config/environment','defaults','redis','localhost','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr'];(function(_0x52e716,_0x48170f){var _0x1fdc6b=function(_0x2d3738){while(--_0x2d3738){_0x52e716['push'](_0x52e716['shift']());}};_0x1fdc6b(++_0x48170f);}(_0xd2bc,0x111));var _0xcd2b=function(_0x2fa93a,_0xf57adf){_0x2fa93a=_0x2fa93a-0x0;var _0x4c9ea8=_0xd2bc[_0x2fa93a];return _0x4c9ea8;};'use strict';var _=require('lodash');var md5=require(_0xcd2b('0x0'));var util=require(_0xcd2b('0x1'));var Redis=require(_0xcd2b('0x2'));var config=require(_0xcd2b('0x3'));config['redis']=_[_0xcd2b('0x4')](config[_0xcd2b('0x5')],{'host':_0xcd2b('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xcd2b('0x5')]));function MailQueue(_0x4bd974){this['id']=_0x4bd974['id']||0x0;this[_0xcd2b('0x7')]=_0x4bd974[_0xcd2b('0x7')]||'';this[_0xcd2b('0x8')]=_0x4bd974[_0xcd2b('0x8')]||0xa;this[_0xcd2b('0x9')]=_0x4bd974[_0xcd2b('0x9')]||'beepall';this[_0xcd2b('0xa')]=_0x4bd974[_0xcd2b('0xa')];this[_0xcd2b('0xb')]={};this[_0xcd2b('0xc')]=0x0;this['md5']='';this[_0xcd2b('0xd')]();this[_0xcd2b('0xe')]();}MailQueue[_0xcd2b('0xf')][_0xcd2b('0xd')]=function(){var _0x3c1f16=this[_0xcd2b('0xb')][_0xcd2b('0x10')];this[_0xcd2b('0xb')]=_['map'](this['Agents'],'id');this[_0xcd2b('0xb')][_0xcd2b('0x10')]=_0x3c1f16;};MailQueue[_0xcd2b('0xf')][_0xcd2b('0xe')]=function(){this[_0xcd2b('0x11')]=0x0;this[_0xcd2b('0x12')]=0x0;for(var _0x4377f7=0x0;_0x4377f7<this[_0xcd2b('0xa')][_0xcd2b('0x13')];_0x4377f7+=0x1){if(this[_0xcd2b('0xa')][_0x4377f7][_0xcd2b('0x14')]){this[_0xcd2b('0x11')]+=0x1;}if(this['Agents'][_0x4377f7][_0xcd2b('0x15')]){this['paused']+=0x1;}}this['available']=this[_0xcd2b('0x11')]-this[_0xcd2b('0x12')];this[_0xcd2b('0x16')]=this[_0xcd2b('0x16')]>=0x0?this[_0xcd2b('0x16')]:0x0;var _0x184392={'id':this['id'],'available':this[_0xcd2b('0x16')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this[_0xcd2b('0x12')],'waiting':this[_0xcd2b('0xc')]};var _0x44b88f=md5(JSON[_0xcd2b('0x17')](_0x184392));if(this[_0xcd2b('0x0')]!==_0x44b88f){this['md5']=_0x44b88f;io['to'](util[_0xcd2b('0x18')](_0xcd2b('0x19'),_0x184392[_0xcd2b('0x7')]))[_0xcd2b('0x1a')](_0xcd2b('0x1b'),_0x184392);}};module[_0xcd2b('0x1c')]=MailQueue;
\ No newline at end of file
index efa0ca1..5844269 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','_rr','prototype','updateRealtime','paused','loggedIn','openchannelPause','available','stringify','format','openchannel:queue:%s','emit','md5','ioredis'];(function(_0x19bf5f,_0x1ca6b9){var _0x237efa=function(_0x18f2a3){while(--_0x18f2a3){_0x19bf5f['push'](_0x19bf5f['shift']());}};_0x237efa(++_0x1ca6b9);}(_0xadb5,0xad));var _0x5adb=function(_0x140d12,_0xe99e72){_0x140d12=_0x140d12-0x0;var _0x55f161=_0xadb5[_0x140d12];return _0x55f161;};'use strict';var _=require('lodash');var md5=require(_0x5adb('0x0'));var util=require('util');var Redis=require(_0x5adb('0x1'));var config=require(_0x5adb('0x2'));config[_0x5adb('0x3')]=_['defaults'](config[_0x5adb('0x3')],{'host':_0x5adb('0x4'),'port':0x18eb});var io=require(_0x5adb('0x5'))(new Redis(config['redis']));function OpenchannelQueue(_0x35a5d3){this['id']=_0x35a5d3['id']||0x0;this[_0x5adb('0x6')]=_0x35a5d3[_0x5adb('0x6')]||'';this[_0x5adb('0x7')]=_0x35a5d3[_0x5adb('0x7')]||0xa;this[_0x5adb('0x8')]=_0x35a5d3[_0x5adb('0x8')]||_0x5adb('0x9');this[_0x5adb('0xa')]=_0x35a5d3[_0x5adb('0xa')];this[_0x5adb('0xb')]={};this[_0x5adb('0xc')]=0x0;this[_0x5adb('0x0')]='';this[_0x5adb('0xd')]();this['updateRealtime']();}OpenchannelQueue['prototype'][_0x5adb('0xd')]=function(){var _0x1ea238=this[_0x5adb('0xb')]['_rr'];this[_0x5adb('0xb')]=_['map'](this[_0x5adb('0xa')],'id');this['mapAgentsId'][_0x5adb('0xe')]=_0x1ea238;};OpenchannelQueue[_0x5adb('0xf')][_0x5adb('0x10')]=function(){this['loggedIn']=0x0;this[_0x5adb('0x11')]=0x0;for(var _0x34af2c=0x0;_0x34af2c<this[_0x5adb('0xa')]['length'];_0x34af2c+=0x1){if(this[_0x5adb('0xa')][_0x34af2c]['online']){this[_0x5adb('0x12')]+=0x1;}if(this[_0x5adb('0xa')][_0x34af2c][_0x5adb('0x13')]){this[_0x5adb('0x11')]+=0x1;}}this[_0x5adb('0x14')]=this[_0x5adb('0x12')]-this[_0x5adb('0x11')];this[_0x5adb('0x14')]=this[_0x5adb('0x14')]>=0x0?this['available']:0x0;var _0x3fff62={'id':this['id'],'available':this['available'],'loggedIn':this[_0x5adb('0x12')],'name':this['name'],'paused':this[_0x5adb('0x11')],'waiting':this['waiting']};var _0x5e218c=md5(JSON[_0x5adb('0x15')](_0x3fff62));if(this[_0x5adb('0x0')]!==_0x5e218c){this[_0x5adb('0x0')]=_0x5e218c;io['to'](util[_0x5adb('0x16')](_0x5adb('0x17'),_0x3fff62['name']))[_0x5adb('0x18')]('openchannel_queue:save',_0x3fff62);}};module['exports']=OpenchannelQueue;
\ No newline at end of file
+var _0x814b=['prototype','map','_rr','loggedIn','paused','length','online','openchannelPause','available','format','openchannel_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime'];(function(_0x47db31,_0x1b859e){var _0x4474ee=function(_0x3d14cb){while(--_0x3d14cb){_0x47db31['push'](_0x47db31['shift']());}};_0x4474ee(++_0x1b859e);}(_0x814b,0x1a2));var _0xb814=function(_0x54b458,_0x4da21b){_0x54b458=_0x54b458-0x0;var _0x18d704=_0x814b[_0x54b458];return _0x18d704;};'use strict';var _=require(_0xb814('0x0'));var md5=require(_0xb814('0x1'));var util=require(_0xb814('0x2'));var Redis=require(_0xb814('0x3'));var config=require(_0xb814('0x4'));config[_0xb814('0x5')]=_['defaults'](config[_0xb814('0x5')],{'host':_0xb814('0x6'),'port':0x18eb});var io=require(_0xb814('0x7'))(new Redis(config[_0xb814('0x5')]));function OpenchannelQueue(_0x44931c){this['id']=_0x44931c['id']||0x0;this[_0xb814('0x8')]=_0x44931c['name']||'';this[_0xb814('0x9')]=_0x44931c[_0xb814('0x9')]||0xa;this['strategy']=_0x44931c[_0xb814('0xa')]||_0xb814('0xb');this[_0xb814('0xc')]=_0x44931c[_0xb814('0xc')];this[_0xb814('0xd')]={};this[_0xb814('0xe')]=0x0;this[_0xb814('0x1')]='';this[_0xb814('0xf')]();this[_0xb814('0x10')]();}OpenchannelQueue[_0xb814('0x11')][_0xb814('0xf')]=function(){var _0x4b5f14=this[_0xb814('0xd')]['_rr'];this[_0xb814('0xd')]=_[_0xb814('0x12')](this[_0xb814('0xc')],'id');this[_0xb814('0xd')][_0xb814('0x13')]=_0x4b5f14;};OpenchannelQueue[_0xb814('0x11')][_0xb814('0x10')]=function(){this[_0xb814('0x14')]=0x0;this[_0xb814('0x15')]=0x0;for(var _0x2ab627=0x0;_0x2ab627<this[_0xb814('0xc')][_0xb814('0x16')];_0x2ab627+=0x1){if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x17')]){this[_0xb814('0x14')]+=0x1;}if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x18')]){this[_0xb814('0x15')]+=0x1;}}this[_0xb814('0x19')]=this[_0xb814('0x14')]-this[_0xb814('0x15')];this['available']=this[_0xb814('0x19')]>=0x0?this['available']:0x0;var _0x270598={'id':this['id'],'available':this[_0xb814('0x19')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this['paused'],'waiting':this[_0xb814('0xe')]};var _0x4d5276=md5(JSON['stringify'](_0x270598));if(this[_0xb814('0x1')]!==_0x4d5276){this[_0xb814('0x1')]=_0x4d5276;io['to'](util[_0xb814('0x1a')]('openchannel:queue:%s',_0x270598[_0xb814('0x8')]))['emit'](_0xb814('0x1b'),_0x270598);}};module[_0xb814('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index d585fae..c25ee6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97a2=['md5','updateRouting','_rr','map','prototype','updateRealtime','loggedIn','online','smsPause','available','paused','stringify','format','sms:queue:%s','emit','sms_queue:save','exports','lodash','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting'];(function(_0x344b95,_0x1552a4){var _0xa163b4=function(_0x3896c6){while(--_0x3896c6){_0x344b95['push'](_0x344b95['shift']());}};_0xa163b4(++_0x1552a4);}(_0x97a2,0x1b1));var _0x297a=function(_0x109cd,_0x11072c){_0x109cd=_0x109cd-0x0;var _0x88e0fc=_0x97a2[_0x109cd];return _0x88e0fc;};'use strict';var _=require(_0x297a('0x0'));var md5=require('md5');var util=require(_0x297a('0x1'));var Redis=require(_0x297a('0x2'));var config=require(_0x297a('0x3'));config[_0x297a('0x4')]=_[_0x297a('0x5')](config[_0x297a('0x4')],{'host':_0x297a('0x6'),'port':0x18eb});var io=require(_0x297a('0x7'))(new Redis(config['redis']));function SmsQueue(_0x19816c){this['id']=_0x19816c['id']||0x0;this[_0x297a('0x8')]=_0x19816c[_0x297a('0x8')]||'';this[_0x297a('0x9')]=_0x19816c[_0x297a('0x9')]||0xa;this[_0x297a('0xa')]=_0x19816c['strategy']||_0x297a('0xb');this[_0x297a('0xc')]=_0x19816c[_0x297a('0xc')];this[_0x297a('0xd')]={};this[_0x297a('0xe')]=0x0;this[_0x297a('0xf')]='';this['updateRouting']();this['updateRealtime']();}SmsQueue['prototype'][_0x297a('0x10')]=function(){var _0x3b0b3c=this[_0x297a('0xd')][_0x297a('0x11')];this['mapAgentsId']=_[_0x297a('0x12')](this[_0x297a('0xc')],'id');this[_0x297a('0xd')][_0x297a('0x11')]=_0x3b0b3c;};SmsQueue[_0x297a('0x13')][_0x297a('0x14')]=function(){this[_0x297a('0x15')]=0x0;this['paused']=0x0;for(var _0x4d826d=0x0;_0x4d826d<this[_0x297a('0xc')]['length'];_0x4d826d+=0x1){if(this[_0x297a('0xc')][_0x4d826d][_0x297a('0x16')]){this['loggedIn']+=0x1;}if(this[_0x297a('0xc')][_0x4d826d][_0x297a('0x17')]){this['paused']+=0x1;}}this[_0x297a('0x18')]=this[_0x297a('0x15')]-this[_0x297a('0x19')];this['available']=this[_0x297a('0x18')]>=0x0?this[_0x297a('0x18')]:0x0;var _0x29c6d6={'id':this['id'],'available':this['available'],'loggedIn':this[_0x297a('0x15')],'name':this[_0x297a('0x8')],'paused':this['paused'],'waiting':this[_0x297a('0xe')]};var _0x43be0b=md5(JSON[_0x297a('0x1a')](_0x29c6d6));if(this[_0x297a('0xf')]!==_0x43be0b){this[_0x297a('0xf')]=_0x43be0b;io['to'](util[_0x297a('0x1b')](_0x297a('0x1c'),_0x29c6d6[_0x297a('0x8')]))[_0x297a('0x1d')](_0x297a('0x1e'),_0x29c6d6);}};module[_0x297a('0x1f')]=SmsQueue;
\ No newline at end of file
+var _0x7bae=['Agents','waiting','md5','updateRouting','updateRealtime','prototype','mapAgentsId','_rr','map','loggedIn','paused','length','online','available','stringify','format','emit','exports','util','ioredis','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall'];(function(_0x31fc57,_0x33471f){var _0x169ab4=function(_0x1cdb0a){while(--_0x1cdb0a){_0x31fc57['push'](_0x31fc57['shift']());}};_0x169ab4(++_0x33471f);}(_0x7bae,0x13b));var _0xe7ba=function(_0x6cf19c,_0x2f3f02){_0x6cf19c=_0x6cf19c-0x0;var _0xce14f3=_0x7bae[_0x6cf19c];return _0xce14f3;};'use strict';var _=require('lodash');var md5=require('md5');var util=require(_0xe7ba('0x0'));var Redis=require(_0xe7ba('0x1'));var config=require('../../../config/environment');config[_0xe7ba('0x2')]=_['defaults'](config[_0xe7ba('0x2')],{'host':_0xe7ba('0x3'),'port':0x18eb});var io=require(_0xe7ba('0x4'))(new Redis(config[_0xe7ba('0x2')]));function SmsQueue(_0x398a6a){this['id']=_0x398a6a['id']||0x0;this[_0xe7ba('0x5')]=_0x398a6a[_0xe7ba('0x5')]||'';this[_0xe7ba('0x6')]=_0x398a6a[_0xe7ba('0x6')]||0xa;this[_0xe7ba('0x7')]=_0x398a6a[_0xe7ba('0x7')]||_0xe7ba('0x8');this[_0xe7ba('0x9')]=_0x398a6a[_0xe7ba('0x9')];this['mapAgentsId']={};this[_0xe7ba('0xa')]=0x0;this[_0xe7ba('0xb')]='';this[_0xe7ba('0xc')]();this[_0xe7ba('0xd')]();}SmsQueue[_0xe7ba('0xe')][_0xe7ba('0xc')]=function(){var _0x99a86f=this[_0xe7ba('0xf')][_0xe7ba('0x10')];this['mapAgentsId']=_[_0xe7ba('0x11')](this['Agents'],'id');this[_0xe7ba('0xf')][_0xe7ba('0x10')]=_0x99a86f;};SmsQueue[_0xe7ba('0xe')][_0xe7ba('0xd')]=function(){this[_0xe7ba('0x12')]=0x0;this[_0xe7ba('0x13')]=0x0;for(var _0x561dbb=0x0;_0x561dbb<this['Agents'][_0xe7ba('0x14')];_0x561dbb+=0x1){if(this[_0xe7ba('0x9')][_0x561dbb][_0xe7ba('0x15')]){this['loggedIn']+=0x1;}if(this[_0xe7ba('0x9')][_0x561dbb]['smsPause']){this['paused']+=0x1;}}this['available']=this[_0xe7ba('0x12')]-this['paused'];this[_0xe7ba('0x16')]=this['available']>=0x0?this['available']:0x0;var _0x5a82b5={'id':this['id'],'available':this[_0xe7ba('0x16')],'loggedIn':this[_0xe7ba('0x12')],'name':this[_0xe7ba('0x5')],'paused':this[_0xe7ba('0x13')],'waiting':this[_0xe7ba('0xa')]};var _0x58550c=md5(JSON[_0xe7ba('0x17')](_0x5a82b5));if(this[_0xe7ba('0xb')]!==_0x58550c){this[_0xe7ba('0xb')]=_0x58550c;io['to'](util[_0xe7ba('0x18')]('sms:queue:%s',_0x5a82b5[_0xe7ba('0x5')]))[_0xe7ba('0x19')]('sms_queue:save',_0x5a82b5);}};module[_0xe7ba('0x1a')]=SmsQueue;
\ No newline at end of file
index 60abea6..c75fbba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d35=['waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','online','available','stringify','format','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','Agents','mapAgentsId'];(function(_0x43f0fc,_0x321f11){var _0x66c4ca=function(_0x37aa6f){while(--_0x37aa6f){_0x43f0fc['push'](_0x43f0fc['shift']());}};_0x66c4ca(++_0x321f11);}(_0x3d35,0x1d1));var _0x53d3=function(_0x2dcc9f,_0x25c5ff){_0x2dcc9f=_0x2dcc9f-0x0;var _0x168b82=_0x3d35[_0x2dcc9f];return _0x168b82;};'use strict';var _=require('lodash');var md5=require(_0x53d3('0x0'));var util=require(_0x53d3('0x1'));var Redis=require(_0x53d3('0x2'));var config=require(_0x53d3('0x3'));config[_0x53d3('0x4')]=_[_0x53d3('0x5')](config[_0x53d3('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x53d3('0x6'))(new Redis(config['redis']));function WhatsappQueue(_0x5b60e9){this['id']=_0x5b60e9['id']||0x0;this[_0x53d3('0x7')]=_0x5b60e9['name']||'';this['timeout']=_0x5b60e9[_0x53d3('0x8')]||0xa;this['strategy']=_0x5b60e9['strategy']||'beepall';this[_0x53d3('0x9')]=_0x5b60e9[_0x53d3('0x9')];this[_0x53d3('0xa')]={};this[_0x53d3('0xb')]=0x0;this[_0x53d3('0x0')]='';this[_0x53d3('0xc')]();this[_0x53d3('0xd')]();}WhatsappQueue[_0x53d3('0xe')][_0x53d3('0xc')]=function(){var _0x204ef4=this[_0x53d3('0xa')][_0x53d3('0xf')];this[_0x53d3('0xa')]=_[_0x53d3('0x10')](this['Agents'],'id');this['mapAgentsId']['_rr']=_0x204ef4;};WhatsappQueue[_0x53d3('0xe')]['updateRealtime']=function(){this[_0x53d3('0x11')]=0x0;this[_0x53d3('0x12')]=0x0;for(var _0x3dc0fa=0x0;_0x3dc0fa<this[_0x53d3('0x9')][_0x53d3('0x13')];_0x3dc0fa+=0x1){if(this[_0x53d3('0x9')][_0x3dc0fa][_0x53d3('0x14')]){this[_0x53d3('0x11')]+=0x1;}if(this[_0x53d3('0x9')][_0x3dc0fa]['whatsappPause']){this['paused']+=0x1;}}this[_0x53d3('0x15')]=this[_0x53d3('0x11')]-this[_0x53d3('0x12')];this[_0x53d3('0x15')]=this['available']>=0x0?this['available']:0x0;var _0x2fde4e={'id':this['id'],'available':this[_0x53d3('0x15')],'loggedIn':this[_0x53d3('0x11')],'name':this[_0x53d3('0x7')],'paused':this['paused'],'waiting':this[_0x53d3('0xb')]};var _0x6d3303=md5(JSON[_0x53d3('0x16')](_0x2fde4e));if(this[_0x53d3('0x0')]!==_0x6d3303){this[_0x53d3('0x0')]=_0x6d3303;io['to'](util[_0x53d3('0x17')](_0x53d3('0x18'),_0x2fde4e[_0x53d3('0x7')]))[_0x53d3('0x19')](_0x53d3('0x1a'),_0x2fde4e);}};module[_0x53d3('0x1b')]=WhatsappQueue;
\ No newline at end of file
+var _0x16e5=['../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','prototype','_rr','map','updateRealtime','loggedIn','paused','length','online','whatsappPause','available','format','emit','exports','lodash','md5','ioredis'];(function(_0x34beef,_0x1251fa){var _0x109fba=function(_0x19a45d){while(--_0x19a45d){_0x34beef['push'](_0x34beef['shift']());}};_0x109fba(++_0x1251fa);}(_0x16e5,0xd5));var _0x516e=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0x16e5[_0x4d8ed9];return _0x1e2140;};'use strict';var _=require(_0x516e('0x0'));var md5=require(_0x516e('0x1'));var util=require('util');var Redis=require(_0x516e('0x2'));var config=require(_0x516e('0x3'));config[_0x516e('0x4')]=_[_0x516e('0x5')](config[_0x516e('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x516e('0x6'))(new Redis(config[_0x516e('0x4')]));function WhatsappQueue(_0x1d51eb){this['id']=_0x1d51eb['id']||0x0;this['name']=_0x1d51eb[_0x516e('0x7')]||'';this[_0x516e('0x8')]=_0x1d51eb[_0x516e('0x8')]||0xa;this[_0x516e('0x9')]=_0x1d51eb['strategy']||'beepall';this[_0x516e('0xa')]=_0x1d51eb['Agents'];this[_0x516e('0xb')]={};this[_0x516e('0xc')]=0x0;this[_0x516e('0x1')]='';this[_0x516e('0xd')]();this['updateRealtime']();}WhatsappQueue[_0x516e('0xe')][_0x516e('0xd')]=function(){var _0x181976=this[_0x516e('0xb')][_0x516e('0xf')];this['mapAgentsId']=_[_0x516e('0x10')](this[_0x516e('0xa')],'id');this[_0x516e('0xb')][_0x516e('0xf')]=_0x181976;};WhatsappQueue[_0x516e('0xe')][_0x516e('0x11')]=function(){this[_0x516e('0x12')]=0x0;this[_0x516e('0x13')]=0x0;for(var _0x1cd6c7=0x0;_0x1cd6c7<this[_0x516e('0xa')][_0x516e('0x14')];_0x1cd6c7+=0x1){if(this[_0x516e('0xa')][_0x1cd6c7][_0x516e('0x15')]){this[_0x516e('0x12')]+=0x1;}if(this[_0x516e('0xa')][_0x1cd6c7][_0x516e('0x16')]){this[_0x516e('0x13')]+=0x1;}}this[_0x516e('0x17')]=this[_0x516e('0x12')]-this[_0x516e('0x13')];this[_0x516e('0x17')]=this['available']>=0x0?this[_0x516e('0x17')]:0x0;var _0x572ba9={'id':this['id'],'available':this[_0x516e('0x17')],'loggedIn':this[_0x516e('0x12')],'name':this[_0x516e('0x7')],'paused':this['paused'],'waiting':this[_0x516e('0xc')]};var _0x1684b7=md5(JSON['stringify'](_0x572ba9));if(this[_0x516e('0x1')]!==_0x1684b7){this[_0x516e('0x1')]=_0x1684b7;io['to'](util[_0x516e('0x18')]('whatsapp:queue:%s',_0x572ba9[_0x516e('0x7')]))[_0x516e('0x19')]('whatsapp_queue:save',_0x572ba9);}};module[_0x516e('0x1a')]=WhatsappQueue;
\ No newline at end of file
index 2eb3b55..98061b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initIntervals','length','initOpenchannelQueues','updateRealtime','initChatQueues','chatQueues','initSmsQueues','updateRouting','initMailQueues','initFaxQueues','initWhatsappQueues','exports','bluebird','lodash','moment','../model/agent','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','smsQueues','mailQueues'];(function(_0x203e82,_0x4c1269){var _0xf842e8=function(_0x19b7db){while(--_0x19b7db){_0x203e82['push'](_0x203e82['shift']());}};_0xf842e8(++_0x4c1269);}(_0xb10b,0x12a));var _0xbb10=function(_0xd03fff,_0x1c14ce){_0xd03fff=_0xd03fff-0x0;var _0x1ac5f8=_0xb10b[_0xd03fff];return _0x1ac5f8;};'use strict';var BPromise=require(_0xbb10('0x0'));var util=require('util');var _=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var Agent=require(_0xbb10('0x3'));var Interval=require('../model/interval');var OpenchannelQueue=require(_0xbb10('0x4'));var ChatQueue=require(_0xbb10('0x5'));var SmsQueue=require(_0xbb10('0x6'));var MailQueue=require(_0xbb10('0x7'));var FaxQueue=require(_0xbb10('0x8'));var WhatsappQueue=require(_0xbb10('0x9'));var Realtime=function(){this['agents']={};this[_0xbb10('0xa')]={};this[_0xbb10('0xb')]={};this['chatQueues']={};this[_0xbb10('0xc')]={};this[_0xbb10('0xd')]={};this[_0xbb10('0xe')]={};this[_0xbb10('0xf')]={};this[_0xbb10('0x10')]={};this[_0xbb10('0x11')]={};this[_0xbb10('0x12')]={};this[_0xbb10('0x13')]={};this['faxQueuesWaitingInteractions']={};this['whatsappQueuesWaitingInteractions']={};};function freeIsNotKey(_0x20bd61,_0x118a74,_0xce64f3){var _0x5e136d=_[_0xbb10('0x14')](_0x20bd61,function(_0x5be7e0,_0x44fb19){return _0x5be7e0[_0xce64f3];});for(var _0x916a32 in _0x118a74){if(_0x118a74[_0xbb10('0x15')](_0x916a32)){if(!_0x5e136d[_0x916a32]){delete _0x118a74[_0x916a32];}}}}Realtime[_0xbb10('0x16')][_0xbb10('0x17')]=function(_0x147230,_0x58a612){for(var _0x26e021 in _0x58a612){if(_0x147230[_0xbb10('0x15')](_0x26e021)){_0x147230[_0x26e021]=_0x58a612[_0x26e021];}}};Realtime[_0xbb10('0x16')][_0xbb10('0x18')]=function(){var _0x3df17b=this;return function(_0x2f2ebf){if(_0x2f2ebf){freeIsNotKey(_0x2f2ebf,_0x3df17b[_0xbb10('0x19')],'id');for(var _0x36b5e8=0x0,_0x3e26f4={},_0x2b184e={};_0x36b5e8<_0x2f2ebf['length'];_0x36b5e8+=0x1){_0x3e26f4=_0x2f2ebf[_0x36b5e8];if(_[_0xbb10('0x1a')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']])){_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']]=new Agent(_0x3e26f4);}else{_0x3df17b[_0xbb10('0x17')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']],_0x3e26f4);}}}return _0x3df17b[_0xbb10('0x19')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x1b')]=function(){var _0xbf2906=this;return function(_0xe1c665){if(_0xe1c665){freeIsNotKey(_0xe1c665,_0xbf2906['intervals'],'id');for(var _0x5ff0cf=0x0,_0x19f48d={},_0x388fab={};_0x5ff0cf<_0xe1c665[_0xbb10('0x1c')];_0x5ff0cf+=0x1){_0x19f48d=_0xe1c665[_0x5ff0cf];if(_[_0xbb10('0x1a')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']])){_0xbf2906['intervals'][_0x19f48d['id']]=new Interval(_0x19f48d);}else{_0xbf2906[_0xbb10('0x17')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']],_0x19f48d);}}}return _0xbf2906['intervals'];};};Realtime['prototype'][_0xbb10('0x1d')]=function(){var _0x311abe=this;return function(_0x2e911d){if(_0x2e911d){freeIsNotKey(_0x2e911d,_0x311abe[_0xbb10('0xb')],'id');for(var _0x445761=0x0,_0x1824b7={},_0x407cb4={};_0x445761<_0x2e911d[_0xbb10('0x1c')];_0x445761+=0x1){_0x1824b7=_0x2e911d[_0x445761];if(_[_0xbb10('0x1a')](_0x311abe[_0xbb10('0xb')][_0x1824b7['id']])){_0x311abe[_0xbb10('0xb')][_0x1824b7['id']]=new OpenchannelQueue(_0x1824b7);}else{_0x311abe[_0xbb10('0x17')](_0x311abe['openchannelQueues'][_0x1824b7['id']],_0x1824b7);}_0x311abe['openchannelQueues'][_0x1824b7['id']]['updateRouting']();_0x311abe[_0xbb10('0xb')][_0x1824b7['id']][_0xbb10('0x1e')]();}}return _0x311abe[_0xbb10('0xb')];};};Realtime['prototype'][_0xbb10('0x1f')]=function(){var _0x24d586=this;return function(_0x6ed43b){if(_0x6ed43b){freeIsNotKey(_0x6ed43b,_0x24d586[_0xbb10('0x20')],'id');for(var _0x1acce9=0x0,_0x20d946={},_0x2a0e8b={};_0x1acce9<_0x6ed43b['length'];_0x1acce9+=0x1){_0x20d946=_0x6ed43b[_0x1acce9];if(_[_0xbb10('0x1a')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']])){_0x24d586[_0xbb10('0x20')][_0x20d946['id']]=new ChatQueue(_0x20d946);}else{_0x24d586[_0xbb10('0x17')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']],_0x20d946);}_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRouting']();_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRealtime']();}}return _0x24d586[_0xbb10('0x20')];};};Realtime['prototype'][_0xbb10('0x21')]=function(){var _0x1dcc9c=this;return function(_0x1b59f9){if(_0x1b59f9){freeIsNotKey(_0x1b59f9,_0x1dcc9c['smsQueues'],'id');for(var _0x518d47=0x0,_0x4c3744={},_0x34f65e={};_0x518d47<_0x1b59f9['length'];_0x518d47+=0x1){_0x4c3744=_0x1b59f9[_0x518d47];if(_[_0xbb10('0x1a')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']])){_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']]=new SmsQueue(_0x4c3744);}else{_0x1dcc9c[_0xbb10('0x17')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']],_0x4c3744);}_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']][_0xbb10('0x22')]();_0x1dcc9c['smsQueues'][_0x4c3744['id']][_0xbb10('0x1e')]();}}return _0x1dcc9c[_0xbb10('0xc')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x23')]=function(){var _0xfb2c5e=this;return function(_0x9de708){if(_0x9de708){freeIsNotKey(_0x9de708,_0xfb2c5e[_0xbb10('0xd')],'id');for(var _0x10202c=0x0,_0x3c8d7d={},_0x56943c={};_0x10202c<_0x9de708[_0xbb10('0x1c')];_0x10202c+=0x1){_0x3c8d7d=_0x9de708[_0x10202c];if(_[_0xbb10('0x1a')](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']])){_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']]=new MailQueue(_0x3c8d7d);}else{_0xfb2c5e['mergeFromDatabase'](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']],_0x3c8d7d);}_0xfb2c5e['mailQueues'][_0x3c8d7d['id']]['updateRouting']();_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']][_0xbb10('0x1e')]();}}return _0xfb2c5e[_0xbb10('0xd')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x24')]=function(){var _0x29d11a=this;return function(_0x547062){if(_0x547062){freeIsNotKey(_0x547062,_0x29d11a[_0xbb10('0xe')],'id');for(var _0x25d72f=0x0,_0x52de31={},_0x5e3fbd={};_0x25d72f<_0x547062['length'];_0x25d72f+=0x1){_0x52de31=_0x547062[_0x25d72f];if(_[_0xbb10('0x1a')](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']])){_0x29d11a[_0xbb10('0xe')][_0x52de31['id']]=new FaxQueue(_0x52de31);}else{_0x29d11a['mergeFromDatabase'](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']],_0x52de31);}_0x29d11a[_0xbb10('0xe')][_0x52de31['id']][_0xbb10('0x22')]();_0x29d11a['faxQueues'][_0x52de31['id']][_0xbb10('0x1e')]();}}return _0x29d11a[_0xbb10('0xe')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x25')]=function(){var _0x4f1cdd=this;return function(_0xd238e9){if(_0xd238e9){freeIsNotKey(_0xd238e9,_0x4f1cdd[_0xbb10('0xf')],'id');for(var _0x5835fd=0x0,_0xe2040f={},_0x2e3214={};_0x5835fd<_0xd238e9[_0xbb10('0x1c')];_0x5835fd+=0x1){_0xe2040f=_0xd238e9[_0x5835fd];if(_[_0xbb10('0x1a')](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']])){_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]=new WhatsappQueue(_0xe2040f);}else{_0x4f1cdd['mergeFromDatabase'](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']],_0xe2040f);}_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']][_0xbb10('0x22')]();_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]['updateRealtime']();}}return _0x4f1cdd[_0xbb10('0xf')];};};module[_0xbb10('0x26')]=Realtime;
\ No newline at end of file
+var _0xb10b=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initIntervals','length','initOpenchannelQueues','updateRealtime','initChatQueues','chatQueues','initSmsQueues','updateRouting','initMailQueues','initFaxQueues','initWhatsappQueues','exports','bluebird','lodash','moment','../model/agent','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','smsQueues','mailQueues'];(function(_0x48d533,_0x46dc27){var _0x5be9d4=function(_0x1bb26c){while(--_0x1bb26c){_0x48d533['push'](_0x48d533['shift']());}};_0x5be9d4(++_0x46dc27);}(_0xb10b,0x12a));var _0xbb10=function(_0x3e9903,_0x3ec512){_0x3e9903=_0x3e9903-0x0;var _0xcab758=_0xb10b[_0x3e9903];return _0xcab758;};'use strict';var BPromise=require(_0xbb10('0x0'));var util=require('util');var _=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var Agent=require(_0xbb10('0x3'));var Interval=require('../model/interval');var OpenchannelQueue=require(_0xbb10('0x4'));var ChatQueue=require(_0xbb10('0x5'));var SmsQueue=require(_0xbb10('0x6'));var MailQueue=require(_0xbb10('0x7'));var FaxQueue=require(_0xbb10('0x8'));var WhatsappQueue=require(_0xbb10('0x9'));var Realtime=function(){this['agents']={};this[_0xbb10('0xa')]={};this[_0xbb10('0xb')]={};this['chatQueues']={};this[_0xbb10('0xc')]={};this[_0xbb10('0xd')]={};this[_0xbb10('0xe')]={};this[_0xbb10('0xf')]={};this[_0xbb10('0x10')]={};this[_0xbb10('0x11')]={};this[_0xbb10('0x12')]={};this[_0xbb10('0x13')]={};this['faxQueuesWaitingInteractions']={};this['whatsappQueuesWaitingInteractions']={};};function freeIsNotKey(_0x20bd61,_0x118a74,_0xce64f3){var _0x5e136d=_[_0xbb10('0x14')](_0x20bd61,function(_0x5be7e0,_0x44fb19){return _0x5be7e0[_0xce64f3];});for(var _0x916a32 in _0x118a74){if(_0x118a74[_0xbb10('0x15')](_0x916a32)){if(!_0x5e136d[_0x916a32]){delete _0x118a74[_0x916a32];}}}}Realtime[_0xbb10('0x16')][_0xbb10('0x17')]=function(_0x147230,_0x58a612){for(var _0x26e021 in _0x58a612){if(_0x147230[_0xbb10('0x15')](_0x26e021)){_0x147230[_0x26e021]=_0x58a612[_0x26e021];}}};Realtime[_0xbb10('0x16')][_0xbb10('0x18')]=function(){var _0x3df17b=this;return function(_0x2f2ebf){if(_0x2f2ebf){freeIsNotKey(_0x2f2ebf,_0x3df17b[_0xbb10('0x19')],'id');for(var _0x36b5e8=0x0,_0x3e26f4={},_0x2b184e={};_0x36b5e8<_0x2f2ebf['length'];_0x36b5e8+=0x1){_0x3e26f4=_0x2f2ebf[_0x36b5e8];if(_[_0xbb10('0x1a')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']])){_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']]=new Agent(_0x3e26f4);}else{_0x3df17b[_0xbb10('0x17')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']],_0x3e26f4);}}}return _0x3df17b[_0xbb10('0x19')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x1b')]=function(){var _0xbf2906=this;return function(_0xe1c665){if(_0xe1c665){freeIsNotKey(_0xe1c665,_0xbf2906['intervals'],'id');for(var _0x5ff0cf=0x0,_0x19f48d={},_0x388fab={};_0x5ff0cf<_0xe1c665[_0xbb10('0x1c')];_0x5ff0cf+=0x1){_0x19f48d=_0xe1c665[_0x5ff0cf];if(_[_0xbb10('0x1a')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']])){_0xbf2906['intervals'][_0x19f48d['id']]=new Interval(_0x19f48d);}else{_0xbf2906[_0xbb10('0x17')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']],_0x19f48d);}}}return _0xbf2906['intervals'];};};Realtime['prototype'][_0xbb10('0x1d')]=function(){var _0x311abe=this;return function(_0x2e911d){if(_0x2e911d){freeIsNotKey(_0x2e911d,_0x311abe[_0xbb10('0xb')],'id');for(var _0x445761=0x0,_0x1824b7={},_0x407cb4={};_0x445761<_0x2e911d[_0xbb10('0x1c')];_0x445761+=0x1){_0x1824b7=_0x2e911d[_0x445761];if(_[_0xbb10('0x1a')](_0x311abe[_0xbb10('0xb')][_0x1824b7['id']])){_0x311abe[_0xbb10('0xb')][_0x1824b7['id']]=new OpenchannelQueue(_0x1824b7);}else{_0x311abe[_0xbb10('0x17')](_0x311abe['openchannelQueues'][_0x1824b7['id']],_0x1824b7);}_0x311abe['openchannelQueues'][_0x1824b7['id']]['updateRouting']();_0x311abe[_0xbb10('0xb')][_0x1824b7['id']][_0xbb10('0x1e')]();}}return _0x311abe[_0xbb10('0xb')];};};Realtime['prototype'][_0xbb10('0x1f')]=function(){var _0x24d586=this;return function(_0x6ed43b){if(_0x6ed43b){freeIsNotKey(_0x6ed43b,_0x24d586[_0xbb10('0x20')],'id');for(var _0x1acce9=0x0,_0x20d946={},_0x2a0e8b={};_0x1acce9<_0x6ed43b['length'];_0x1acce9+=0x1){_0x20d946=_0x6ed43b[_0x1acce9];if(_[_0xbb10('0x1a')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']])){_0x24d586[_0xbb10('0x20')][_0x20d946['id']]=new ChatQueue(_0x20d946);}else{_0x24d586[_0xbb10('0x17')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']],_0x20d946);}_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRouting']();_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRealtime']();}}return _0x24d586[_0xbb10('0x20')];};};Realtime['prototype'][_0xbb10('0x21')]=function(){var _0x1dcc9c=this;return function(_0x1b59f9){if(_0x1b59f9){freeIsNotKey(_0x1b59f9,_0x1dcc9c['smsQueues'],'id');for(var _0x518d47=0x0,_0x4c3744={},_0x34f65e={};_0x518d47<_0x1b59f9['length'];_0x518d47+=0x1){_0x4c3744=_0x1b59f9[_0x518d47];if(_[_0xbb10('0x1a')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']])){_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']]=new SmsQueue(_0x4c3744);}else{_0x1dcc9c[_0xbb10('0x17')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']],_0x4c3744);}_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']][_0xbb10('0x22')]();_0x1dcc9c['smsQueues'][_0x4c3744['id']][_0xbb10('0x1e')]();}}return _0x1dcc9c[_0xbb10('0xc')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x23')]=function(){var _0xfb2c5e=this;return function(_0x9de708){if(_0x9de708){freeIsNotKey(_0x9de708,_0xfb2c5e[_0xbb10('0xd')],'id');for(var _0x10202c=0x0,_0x3c8d7d={},_0x56943c={};_0x10202c<_0x9de708[_0xbb10('0x1c')];_0x10202c+=0x1){_0x3c8d7d=_0x9de708[_0x10202c];if(_[_0xbb10('0x1a')](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']])){_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']]=new MailQueue(_0x3c8d7d);}else{_0xfb2c5e['mergeFromDatabase'](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']],_0x3c8d7d);}_0xfb2c5e['mailQueues'][_0x3c8d7d['id']]['updateRouting']();_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']][_0xbb10('0x1e')]();}}return _0xfb2c5e[_0xbb10('0xd')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x24')]=function(){var _0x29d11a=this;return function(_0x547062){if(_0x547062){freeIsNotKey(_0x547062,_0x29d11a[_0xbb10('0xe')],'id');for(var _0x25d72f=0x0,_0x52de31={},_0x5e3fbd={};_0x25d72f<_0x547062['length'];_0x25d72f+=0x1){_0x52de31=_0x547062[_0x25d72f];if(_[_0xbb10('0x1a')](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']])){_0x29d11a[_0xbb10('0xe')][_0x52de31['id']]=new FaxQueue(_0x52de31);}else{_0x29d11a['mergeFromDatabase'](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']],_0x52de31);}_0x29d11a[_0xbb10('0xe')][_0x52de31['id']][_0xbb10('0x22')]();_0x29d11a['faxQueues'][_0x52de31['id']][_0xbb10('0x1e')]();}}return _0x29d11a[_0xbb10('0xe')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x25')]=function(){var _0x4f1cdd=this;return function(_0xd238e9){if(_0xd238e9){freeIsNotKey(_0xd238e9,_0x4f1cdd[_0xbb10('0xf')],'id');for(var _0x5835fd=0x0,_0xe2040f={},_0x2e3214={};_0x5835fd<_0xd238e9[_0xbb10('0x1c')];_0x5835fd+=0x1){_0xe2040f=_0xd238e9[_0x5835fd];if(_[_0xbb10('0x1a')](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']])){_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]=new WhatsappQueue(_0xe2040f);}else{_0x4f1cdd['mergeFromDatabase'](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']],_0xe2040f);}_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']][_0xbb10('0x22')]();_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]['updateRealtime']();}}return _0x4f1cdd[_0xbb10('0xf')];};};module[_0xbb10('0x26')]=Realtime;
\ No newline at end of file
index 74fec05..163c189 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc49c=['update','Request','UpdateChatInteraction','updateChatInteraction','addTags'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xc49c,0x195));var _0xcc49=function(_0x2cc594,_0x5364b8){_0x2cc594=_0x2cc594-0x0;var _0x1e671d=_0xc49c[_0x2cc594];return _0x1e671d;};'use strict';var client=require('../client');exports[_0xcc49('0x0')]=function(_0xa722aa,_0x19fb17){return client[_0xcc49('0x1')](_0xcc49('0x2'),{'body':_0x19fb17,'options':{'where':{'id':_0xa722aa}},'log':_0xcc49('0x3')});};exports[_0xcc49('0x4')]=function(_0x1d6082,_0x185c88){return client[_0xcc49('0x1')]('AddTagsToChatInteraction',{'body':_0x185c88,'options':{'where':{'id':_0x1d6082}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0x2602=['Request','UpdateChatInteraction','updateChatInteraction','AddTagsToChatInteraction','addTagsToChatInteraction','../client'];(function(_0x30121e,_0x240c86){var _0x4ba328=function(_0x2601c1){while(--_0x2601c1){_0x30121e['push'](_0x30121e['shift']());}};_0x4ba328(++_0x240c86);}(_0x2602,0xcb));var _0x2260=function(_0xac437,_0xd0d4d9){_0xac437=_0xac437-0x0;var _0xbc9657=_0x2602[_0xac437];return _0xbc9657;};'use strict';var client=require(_0x2260('0x0'));exports['update']=function(_0x2e2236,_0x521408){return client[_0x2260('0x1')](_0x2260('0x2'),{'body':_0x521408,'options':{'where':{'id':_0x2e2236}},'log':_0x2260('0x3')});};exports['addTags']=function(_0x438f6a,_0x5e2acc){return client[_0x2260('0x1')](_0x2260('0x4'),{'body':_0x5e2acc,'options':{'where':{'id':_0x438f6a}},'log':_0x2260('0x5')});};
\ No newline at end of file
index 2ac44cc..11f957e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedab=['CreateChatMessage','createChatMessage','create','Request'];(function(_0x3c0dcc,_0x18c419){var _0x1a224c=function(_0x238ae7){while(--_0x238ae7){_0x3c0dcc['push'](_0x3c0dcc['shift']());}};_0x1a224c(++_0x18c419);}(_0xedab,0x1c6));var _0xbeda=function(_0x256b72,_0x340985){_0x256b72=_0x256b72-0x0;var _0x2183e3=_0xedab[_0x256b72];return _0x2183e3;};'use strict';var client=require('../client');exports[_0xbeda('0x0')]=function(_0x2dfa15){return client[_0xbeda('0x1')](_0xbeda('0x2'),{'body':_0x2dfa15,'log':_0xbeda('0x3')});};
\ No newline at end of file
+var _0xe449=['createChatMessage','../client','CreateChatMessage'];(function(_0x285800,_0x26765e){var _0x4b809e=function(_0x12c58b){while(--_0x12c58b){_0x285800['push'](_0x285800['shift']());}};_0x4b809e(++_0x26765e);}(_0xe449,0x8b));var _0x9e44=function(_0x15f64a,_0x2f772f){_0x15f64a=_0x15f64a-0x0;var _0xee0f65=_0xe449[_0x15f64a];return _0xee0f65;};'use strict';var client=require(_0x9e44('0x0'));exports['create']=function(_0x37d167){return client['Request'](_0x9e44('0x1'),{'body':_0x37d167,'log':_0x9e44('0x2')});};
\ No newline at end of file
index 8d2d8cc..b1f8df3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a8f=['Request','GetChatQueue','name','timeout','strategy','chatPause','getChatQueues','../client'];(function(_0x67c1cb,_0x6415a3){var _0x58f0d4=function(_0x4d96f8){while(--_0x4d96f8){_0x67c1cb['push'](_0x67c1cb['shift']());}};_0x58f0d4(++_0x6415a3);}(_0x1a8f,0x87));var _0xf1a8=function(_0x30c1d6,_0x4de4ba){_0x30c1d6=_0x30c1d6-0x0;var _0x34433a=_0x1a8f[_0x30c1d6];return _0x34433a;};'use strict';var client=require(_0xf1a8('0x0'));exports['getChatQueues']=function(){return function(){return client[_0xf1a8('0x1')](_0xf1a8('0x2'),{'options':{'raw':![],'attributes':['id',_0xf1a8('0x3'),_0xf1a8('0x4'),_0xf1a8('0x5')],'include':[{'model':'User','as':'Agents','attributes':['id','name','online',_0xf1a8('0x6')]}]},'log':_0xf1a8('0x7')});};};
\ No newline at end of file
+var _0xe49a=['Request','GetChatQueue','name','timeout','strategy','User','online','chatPause','getChatQueues'];(function(_0x117b15,_0x83a5ff){var _0x2b8ba9=function(_0x545281){while(--_0x545281){_0x117b15['push'](_0x117b15['shift']());}};_0x2b8ba9(++_0x83a5ff);}(_0xe49a,0xd7));var _0xae49=function(_0x3d86fb,_0x51313f){_0x3d86fb=_0x3d86fb-0x0;var _0x3b2019=_0xe49a[_0x3d86fb];return _0x3b2019;};'use strict';var client=require('../client');exports[_0xae49('0x0')]=function(){return function(){return client[_0xae49('0x1')](_0xae49('0x2'),{'options':{'raw':![],'attributes':['id',_0xae49('0x3'),_0xae49('0x4'),_0xae49('0x5')],'include':[{'model':_0xae49('0x6'),'as':'Agents','attributes':['id',_0xae49('0x3'),_0xae49('0x7'),_0xae49('0x8')]}]},'log':'getChatQueues'});};};
\ No newline at end of file
index 4289070..b66d9f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba6c=['Request','CreateChatQueueReport','update','DESC','UpdateChatQueueReport','../client'];(function(_0x582274,_0x2cbd9c){var _0x8f14d3=function(_0x1cfe08){while(--_0x1cfe08){_0x582274['push'](_0x582274['shift']());}};_0x8f14d3(++_0x2cbd9c);}(_0xba6c,0x113));var _0xcba6=function(_0x4e9274,_0x49576e){_0x4e9274=_0x4e9274-0x0;var _0x8b474c=_0xba6c[_0x4e9274];return _0x8b474c;};'use strict';var client=require(_0xcba6('0x0'));exports['create']=function(_0x253b30){return client[_0xcba6('0x1')](_0xcba6('0x2'),{'body':_0x253b30,'log':_0xcba6('0x2')});};exports[_0xcba6('0x3')]=function(_0x3e9fb9,_0x2b34a3){return client['Request']('UpdateChatQueueReport',{'body':_0x2b34a3,'options':{'where':{'uniqueid':_0x3e9fb9},'order':[['id',_0xcba6('0x4')]],'limit':0x1},'log':_0xcba6('0x5')});};
\ No newline at end of file
+var _0x0c6d=['update','UpdateChatQueueReport','create','Request','CreateChatQueueReport'];(function(_0x48f7cf,_0x4baa04){var _0xc201c0=function(_0x23ff34){while(--_0x23ff34){_0x48f7cf['push'](_0x48f7cf['shift']());}};_0xc201c0(++_0x4baa04);}(_0x0c6d,0xf7));var _0xd0c6=function(_0xa882fb,_0x36796b){_0xa882fb=_0xa882fb-0x0;var _0x595165=_0x0c6d[_0xa882fb];return _0x595165;};'use strict';var client=require('../client');exports[_0xd0c6('0x0')]=function(_0x92af03){return client[_0xd0c6('0x1')](_0xd0c6('0x2'),{'body':_0x92af03,'log':_0xd0c6('0x2')});};exports[_0xd0c6('0x3')]=function(_0x5790fc,_0x434cdd){return client['Request']('UpdateChatQueueReport',{'body':_0x434cdd,'options':{'where':{'uniqueid':_0x5790fc},'order':[['id','DESC']],'limit':0x1},'log':_0xd0c6('0x4')});};
\ No newline at end of file
index 4acccde..bf73567 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x7a54,0x106));var _0x47a5=function(_0x186c68,_0x196cf1){_0x186c68=_0x186c68-0x0;var _0x3bc4ee=_0x7a54[_0x186c68];return _0x3bc4ee;};'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 _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x1876b2,_0x5d0225){var _0x9fb1e0=function(_0x29b099){while(--_0x29b099){_0x1876b2['push'](_0x1876b2['shift']());}};_0x9fb1e0(++_0x5d0225);}(_0x7a54,0x106));var _0x47a5=function(_0x22af4c,_0x319f6d){_0x22af4c=_0x22af4c-0x0;var _0x5a5435=_0x7a54[_0x22af4c];return _0x5a5435;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateFaxInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
index 9eb1982..f151b1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1505=['CreateFaxMessage','createFaxMessage'];(function(_0x24d843,_0x254c58){var _0x3189f5=function(_0x47b172){while(--_0x47b172){_0x24d843['push'](_0x24d843['shift']());}};_0x3189f5(++_0x254c58);}(_0x1505,0x1f4));var _0x5150=function(_0x36962e,_0x882530){_0x36962e=_0x36962e-0x0;var _0xba5d7f=_0x1505[_0x36962e];return _0xba5d7f;};'use strict';var client=require('../client');exports['create']=function(_0x29f199){return client['Request'](_0x5150('0x0'),{'body':_0x29f199,'log':_0x5150('0x1')});};
\ No newline at end of file
+var _0xb736=['createFaxMessage','../client','create','CreateFaxMessage'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb736,0xe9));var _0x6b73=function(_0x56544b,_0x1dc566){_0x56544b=_0x56544b-0x0;var _0x5d86ee=_0xb736[_0x56544b];return _0x5d86ee;};'use strict';var client=require(_0x6b73('0x0'));exports[_0x6b73('0x1')]=function(_0x3c61c3){return client['Request'](_0x6b73('0x2'),{'body':_0x3c61c3,'log':_0x6b73('0x3')});};
\ No newline at end of file
index 32876fb..e816f3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ec4=['User','Agents','online','faxPause','getFaxQueues','../client','GetFaxQueue','name','timeout'];(function(_0x4f3c2a,_0x375d10){var _0x52d210=function(_0x4b85b9){while(--_0x4b85b9){_0x4f3c2a['push'](_0x4f3c2a['shift']());}};_0x52d210(++_0x375d10);}(_0x6ec4,0x7a));var _0x46ec=function(_0x2373f5,_0x55fbde){_0x2373f5=_0x2373f5-0x0;var _0x31cf35=_0x6ec4[_0x2373f5];return _0x31cf35;};'use strict';var client=require(_0x46ec('0x0'));exports['getFaxQueues']=function(){return function(){return client['Request'](_0x46ec('0x1'),{'options':{'raw':![],'attributes':['id',_0x46ec('0x2'),_0x46ec('0x3'),'strategy'],'include':[{'model':_0x46ec('0x4'),'as':_0x46ec('0x5'),'attributes':['id',_0x46ec('0x2'),_0x46ec('0x6'),_0x46ec('0x7')]}]},'log':_0x46ec('0x8')});};};
\ No newline at end of file
+var _0xe30b=['strategy','User','Agents','getFaxQueues','Request','GetFaxQueue','timeout'];(function(_0x47c6b9,_0x210b3c){var _0x34f34d=function(_0x47c336){while(--_0x47c336){_0x47c6b9['push'](_0x47c6b9['shift']());}};_0x34f34d(++_0x210b3c);}(_0xe30b,0x1ed));var _0xbe30=function(_0x4b03c9,_0x17ce03){_0x4b03c9=_0x4b03c9-0x0;var _0x161ba2=_0xe30b[_0x4b03c9];return _0x161ba2;};'use strict';var client=require('../client');exports[_0xbe30('0x0')]=function(){return function(){return client[_0xbe30('0x1')](_0xbe30('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xbe30('0x3'),_0xbe30('0x4')],'include':[{'model':_0xbe30('0x5'),'as':_0xbe30('0x6'),'attributes':['id','name','online','faxPause']}]},'log':_0xbe30('0x0')});};};
\ No newline at end of file
index 3feed71..68b0e4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85ee=['UpdateFaxQueueReport','DESC','../client','create','Request','CreateFaxQueueReport','update'];(function(_0x5341f0,_0x188f89){var _0x3751d9=function(_0x484365){while(--_0x484365){_0x5341f0['push'](_0x5341f0['shift']());}};_0x3751d9(++_0x188f89);}(_0x85ee,0x1d7));var _0xe85e=function(_0x324fc8,_0x48e43e){_0x324fc8=_0x324fc8-0x0;var _0x37cf86=_0x85ee[_0x324fc8];return _0x37cf86;};'use strict';var client=require(_0xe85e('0x0'));exports[_0xe85e('0x1')]=function(_0x3f4fa1){return client[_0xe85e('0x2')](_0xe85e('0x3'),{'body':_0x3f4fa1,'log':_0xe85e('0x3')});};exports[_0xe85e('0x4')]=function(_0x117d3f,_0x5c8b7c){return client['Request'](_0xe85e('0x5'),{'body':_0x5c8b7c,'options':{'where':{'uniqueid':_0x117d3f},'order':[['id',_0xe85e('0x6')]],'limit':0x1},'log':_0xe85e('0x5')});};
\ No newline at end of file
+var _0xa9ee=['UpdateFaxQueueReport','DESC','../client','create','Request','CreateFaxQueueReport'];(function(_0x11acac,_0x37d55f){var _0x1daa7e=function(_0x31d253){while(--_0x31d253){_0x11acac['push'](_0x11acac['shift']());}};_0x1daa7e(++_0x37d55f);}(_0xa9ee,0x11c));var _0xea9e=function(_0x2053a5,_0x4388e5){_0x2053a5=_0x2053a5-0x0;var _0x465bce=_0xa9ee[_0x2053a5];return _0x465bce;};'use strict';var client=require(_0xea9e('0x0'));exports[_0xea9e('0x1')]=function(_0x367817){return client[_0xea9e('0x2')](_0xea9e('0x3'),{'body':_0x367817,'log':_0xea9e('0x3')});};exports['update']=function(_0x5576fc,_0x349178){return client[_0xea9e('0x2')](_0xea9e('0x4'),{'body':_0x349178,'options':{'where':{'uniqueid':_0x5576fc},'order':[['id',_0xea9e('0x5')]],'limit':0x1},'log':_0xea9e('0x4')});};
\ No newline at end of file
index d3ccb13..33d19a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bc5=['Interval','interval','getIntervals','../client','Request','GetInterval','name'];(function(_0x29a5d4,_0x324d9d){var _0x4e8af1=function(_0x3892c7){while(--_0x3892c7){_0x29a5d4['push'](_0x29a5d4['shift']());}};_0x4e8af1(++_0x324d9d);}(_0x1bc5,0x1df));var _0x51bc=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x1bc5[_0x6c993a];return _0x27f547;};'use strict';var client=require(_0x51bc('0x0'));exports['getIntervals']=function(){return function(){return client[_0x51bc('0x1')](_0x51bc('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x51bc('0x3')],'include':[{'model':_0x51bc('0x4'),'as':'Intervals','attributes':['id',_0x51bc('0x3'),_0x51bc('0x5')]}]},'log':_0x51bc('0x6')});};};
\ No newline at end of file
+var _0xf189=['../client','getIntervals','Request','GetInterval','name','Intervals','interval'];(function(_0x173dcd,_0x330d00){var _0x57536d=function(_0x4855fc){while(--_0x4855fc){_0x173dcd['push'](_0x173dcd['shift']());}};_0x57536d(++_0x330d00);}(_0xf189,0x1f1));var _0x9f18=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xf189[_0xa464c9];return _0x3d73c4;};'use strict';var client=require(_0x9f18('0x0'));exports[_0x9f18('0x1')]=function(){return function(){return client[_0x9f18('0x2')](_0x9f18('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0x9f18('0x4')],'include':[{'model':'Interval','as':_0x9f18('0x5'),'attributes':['id','name',_0x9f18('0x6')]}]},'log':_0x9f18('0x1')});};};
\ No newline at end of file
index 935e621..5c88a62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x955f=['update','Request','updateMailInteraction','AddTagsToMailInteraction','addTagsToChatInteraction','../client'];(function(_0x304320,_0x232a69){var _0xe607da=function(_0x2eb451){while(--_0x2eb451){_0x304320['push'](_0x304320['shift']());}};_0xe607da(++_0x232a69);}(_0x955f,0x1eb));var _0xf955=function(_0x296501,_0x542f8){_0x296501=_0x296501-0x0;var _0x17f39=_0x955f[_0x296501];return _0x17f39;};'use strict';var client=require(_0xf955('0x0'));exports[_0xf955('0x1')]=function(_0x438668,_0x382225){return client[_0xf955('0x2')]('UpdateMailInteraction',{'body':_0x382225,'options':{'where':{'id':_0x438668}},'log':_0xf955('0x3')});};exports['addTags']=function(_0x5d0c95,_0x1db0dd){return client['Request'](_0xf955('0x4'),{'body':_0x1db0dd,'options':{'where':{'id':_0x5d0c95}},'log':_0xf955('0x5')});};
\ No newline at end of file
+var _0xd824=['Request','UpdateMailInteraction','updateMailInteraction','addTags','addTagsToChatInteraction','../client','update'];(function(_0x231dda,_0x5b04cc){var _0x3f88cb=function(_0x16eb77){while(--_0x16eb77){_0x231dda['push'](_0x231dda['shift']());}};_0x3f88cb(++_0x5b04cc);}(_0xd824,0xc2));var _0x4d82=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xd824[_0x19950b];return _0x3c6b41;};'use strict';var client=require(_0x4d82('0x0'));exports[_0x4d82('0x1')]=function(_0x572eea,_0x53fe9a){return client[_0x4d82('0x2')](_0x4d82('0x3'),{'body':_0x53fe9a,'options':{'where':{'id':_0x572eea}},'log':_0x4d82('0x4')});};exports[_0x4d82('0x5')]=function(_0x287fbf,_0x1c8ad9){return client['Request']('AddTagsToMailInteraction',{'body':_0x1c8ad9,'options':{'where':{'id':_0x287fbf}},'log':_0x4d82('0x6')});};
\ No newline at end of file
index 33ce3b7..4c77c0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74f6=['create','Request','CreateMailMessage','createMailMessage','../client'];(function(_0xdc0041,_0x43c54d){var _0x401873=function(_0x128d7b){while(--_0x128d7b){_0xdc0041['push'](_0xdc0041['shift']());}};_0x401873(++_0x43c54d);}(_0x74f6,0x1da));var _0x674f=function(_0x5dad69,_0x2808d8){_0x5dad69=_0x5dad69-0x0;var _0x33fa66=_0x74f6[_0x5dad69];return _0x33fa66;};'use strict';var client=require(_0x674f('0x0'));exports[_0x674f('0x1')]=function(_0x2c46ab){return client[_0x674f('0x2')](_0x674f('0x3'),{'body':_0x2c46ab,'log':_0x674f('0x4')});};
\ No newline at end of file
+var _0x0adc=['create','Request'];(function(_0x387777,_0x356171){var _0x3f84c0=function(_0x4d4423){while(--_0x4d4423){_0x387777['push'](_0x387777['shift']());}};_0x3f84c0(++_0x356171);}(_0x0adc,0x82));var _0xc0ad=function(_0x45bc3c,_0x42f779){_0x45bc3c=_0x45bc3c-0x0;var _0x58a1e2=_0x0adc[_0x45bc3c];return _0x58a1e2;};'use strict';var client=require('../client');exports[_0xc0ad('0x0')]=function(_0x101ce6){return client[_0xc0ad('0x1')]('CreateMailMessage',{'body':_0x101ce6,'log':'createMailMessage'});};
\ No newline at end of file
index 59543ef..9da4ded 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8172=['User','Agents','online','../client','getMailQueues','GetMailQueue','name','timeout','strategy'];(function(_0x2e85f4,_0x40db96){var _0x2dbb01=function(_0x19334a){while(--_0x19334a){_0x2e85f4['push'](_0x2e85f4['shift']());}};_0x2dbb01(++_0x40db96);}(_0x8172,0x147));var _0x2817=function(_0x37007a,_0x3b8ebf){_0x37007a=_0x37007a-0x0;var _0x3da05e=_0x8172[_0x37007a];return _0x3da05e;};'use strict';var client=require(_0x2817('0x0'));exports[_0x2817('0x1')]=function(){return function(){return client['Request'](_0x2817('0x2'),{'options':{'raw':![],'attributes':['id',_0x2817('0x3'),_0x2817('0x4'),_0x2817('0x5')],'include':[{'model':_0x2817('0x6'),'as':_0x2817('0x7'),'attributes':['id',_0x2817('0x3'),_0x2817('0x8'),'mailPause']}]},'log':_0x2817('0x1')});};};
\ No newline at end of file
+var _0xcbb1=['timeout','strategy','User','online','getMailQueues','name'];(function(_0x2c20ab,_0x3d0e4f){var _0x1df030=function(_0x17f035){while(--_0x17f035){_0x2c20ab['push'](_0x2c20ab['shift']());}};_0x1df030(++_0x3d0e4f);}(_0xcbb1,0x1d2));var _0x1cbb=function(_0x40eb4e,_0x4e6147){_0x40eb4e=_0x40eb4e-0x0;var _0x3f4715=_0xcbb1[_0x40eb4e];return _0x3f4715;};'use strict';var client=require('../client');exports[_0x1cbb('0x0')]=function(){return function(){return client['Request']('GetMailQueue',{'options':{'raw':![],'attributes':['id',_0x1cbb('0x1'),_0x1cbb('0x2'),_0x1cbb('0x3')],'include':[{'model':_0x1cbb('0x4'),'as':'Agents','attributes':['id',_0x1cbb('0x1'),_0x1cbb('0x5'),'mailPause']}]},'log':'getMailQueues'});};};
\ No newline at end of file
index 379bf06..39db963 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6537=['UpdateMailQueueReport','DESC','CreateMailQueueReport','Request'];(function(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0x6537,0x1ee));var _0x7653=function(_0x19ec2a,_0x1a9b14){_0x19ec2a=_0x19ec2a-0x0;var _0x18459c=_0x6537[_0x19ec2a];return _0x18459c;};'use strict';var client=require('../client');exports['create']=function(_0x19476b){return client['Request'](_0x7653('0x0'),{'body':_0x19476b,'log':_0x7653('0x0')});};exports['update']=function(_0x4a86df,_0x4161c3){return client[_0x7653('0x1')](_0x7653('0x2'),{'body':_0x4161c3,'options':{'where':{'uniqueid':_0x4a86df},'order':[['id',_0x7653('0x3')]],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
+var _0x1f52=['DESC','UpdateMailQueueReport','../client','create','Request','CreateMailQueueReport'];(function(_0x48842a,_0x15580e){var _0x2af681=function(_0x9b3e00){while(--_0x9b3e00){_0x48842a['push'](_0x48842a['shift']());}};_0x2af681(++_0x15580e);}(_0x1f52,0x74));var _0x21f5=function(_0x4275d2,_0x408b4c){_0x4275d2=_0x4275d2-0x0;var _0x1f2384=_0x1f52[_0x4275d2];return _0x1f2384;};'use strict';var client=require(_0x21f5('0x0'));exports[_0x21f5('0x1')]=function(_0x5e36c2){return client[_0x21f5('0x2')](_0x21f5('0x3'),{'body':_0x5e36c2,'log':_0x21f5('0x3')});};exports['update']=function(_0x1b7ef3,_0x536b62){return client['Request']('UpdateMailQueueReport',{'body':_0x536b62,'options':{'where':{'uniqueid':_0x1b7ef3},'order':[['id',_0x21f5('0x4')]],'limit':0x1},'log':_0x21f5('0x5')});};
\ No newline at end of file
index fea24aa..2f234bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a93=['UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update','Request'];(function(_0x32f7d7,_0x54231b){var _0x133d09=function(_0x41a7ab){while(--_0x41a7ab){_0x32f7d7['push'](_0x32f7d7['shift']());}};_0x133d09(++_0x54231b);}(_0x7a93,0x9d));var _0x37a9=function(_0x3f89f7,_0x1a2267){_0x3f89f7=_0x3f89f7-0x0;var _0x412198=_0x7a93[_0x3f89f7];return _0x412198;};'use strict';var client=require(_0x37a9('0x0'));exports[_0x37a9('0x1')]=function(_0x28cd4a,_0x4155d4){return client[_0x37a9('0x2')](_0x37a9('0x3'),{'body':_0x4155d4,'options':{'where':{'id':_0x28cd4a}},'log':_0x37a9('0x4')});};exports[_0x37a9('0x5')]=function(_0x5659d0,_0x40c8ee){return client['Request'](_0x37a9('0x6'),{'body':_0x40c8ee,'options':{'where':{'id':_0x5659d0}},'log':_0x37a9('0x7')});};
\ No newline at end of file
+var _0x32ba=['AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','update','Request','addTags'];(function(_0x43120a,_0x26e4b7){var _0x44895f=function(_0x2f4e6e){while(--_0x2f4e6e){_0x43120a['push'](_0x43120a['shift']());}};_0x44895f(++_0x26e4b7);}(_0x32ba,0x140));var _0xa32b=function(_0x4394b6,_0x12357f){_0x4394b6=_0x4394b6-0x0;var _0x360244=_0x32ba[_0x4394b6];return _0x360244;};'use strict';var client=require(_0xa32b('0x0'));exports[_0xa32b('0x1')]=function(_0x1daaa5,_0x452d59){return client[_0xa32b('0x2')]('UpdateOpenchannelInteraction',{'body':_0x452d59,'options':{'where':{'id':_0x1daaa5}},'log':'updateOpenchannelInteraction'});};exports[_0xa32b('0x3')]=function(_0x54e603,_0x4c2f2e){return client[_0xa32b('0x2')](_0xa32b('0x4'),{'body':_0x4c2f2e,'options':{'where':{'id':_0x54e603}},'log':_0xa32b('0x5')});};
\ No newline at end of file
index 07ec565..c25d0a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x414e=['create','Request','CreateOpenchannelMessage','createOpenchannelMessage','../client'];(function(_0x132957,_0x4302ec){var _0x24d8a2=function(_0x33f23f){while(--_0x33f23f){_0x132957['push'](_0x132957['shift']());}};_0x24d8a2(++_0x4302ec);}(_0x414e,0xd6));var _0xe414=function(_0x52991d,_0x429d72){_0x52991d=_0x52991d-0x0;var _0x5b9004=_0x414e[_0x52991d];return _0x5b9004;};'use strict';var client=require(_0xe414('0x0'));exports[_0xe414('0x1')]=function(_0x204fce){return client[_0xe414('0x2')](_0xe414('0x3'),{'body':_0x204fce,'log':_0xe414('0x4')});};
\ No newline at end of file
+var _0xfbdd=['CreateOpenchannelMessage','createOpenchannelMessage','../client','create','Request'];(function(_0x323875,_0x5e59de){var _0x1df23a=function(_0x666362){while(--_0x666362){_0x323875['push'](_0x323875['shift']());}};_0x1df23a(++_0x5e59de);}(_0xfbdd,0xc5));var _0xdfbd=function(_0x27b842,_0x50f7b8){_0x27b842=_0x27b842-0x0;var _0x1e5f42=_0xfbdd[_0x27b842];return _0x1e5f42;};'use strict';var client=require(_0xdfbd('0x0'));exports[_0xdfbd('0x1')]=function(_0x3022f9){return client[_0xdfbd('0x2')](_0xdfbd('0x3'),{'body':_0x3022f9,'log':_0xdfbd('0x4')});};
\ No newline at end of file
index a679521..e5c012e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7914=['Agents','online','openchannelPause','../client','getOpenchannelQueues','GetOpenchannelQueue','name','timeout','strategy','User'];(function(_0x4aecc7,_0x3ce24d){var _0x585b9d=function(_0x20e637){while(--_0x20e637){_0x4aecc7['push'](_0x4aecc7['shift']());}};_0x585b9d(++_0x3ce24d);}(_0x7914,0x107));var _0x4791=function(_0x367905,_0x11d631){_0x367905=_0x367905-0x0;var _0x1aef42=_0x7914[_0x367905];return _0x1aef42;};'use strict';var client=require(_0x4791('0x0'));exports[_0x4791('0x1')]=function(){return function(){return client['Request'](_0x4791('0x2'),{'options':{'raw':![],'attributes':['id',_0x4791('0x3'),_0x4791('0x4'),_0x4791('0x5')],'include':[{'model':_0x4791('0x6'),'as':_0x4791('0x7'),'attributes':['id',_0x4791('0x3'),_0x4791('0x8'),_0x4791('0x9')]}]},'log':_0x4791('0x1')});};};
\ No newline at end of file
+var _0x9d79=['online','../client','getOpenchannelQueues','Request','GetOpenchannelQueue','name','strategy','Agents'];(function(_0x4d45c1,_0x2beda1){var _0x244478=function(_0x11304c){while(--_0x11304c){_0x4d45c1['push'](_0x4d45c1['shift']());}};_0x244478(++_0x2beda1);}(_0x9d79,0xa1));var _0x99d7=function(_0x1a0cf1,_0x543c0c){_0x1a0cf1=_0x1a0cf1-0x0;var _0x5ba344=_0x9d79[_0x1a0cf1];return _0x5ba344;};'use strict';var client=require(_0x99d7('0x0'));exports[_0x99d7('0x1')]=function(){return function(){return client[_0x99d7('0x2')](_0x99d7('0x3'),{'options':{'raw':![],'attributes':['id',_0x99d7('0x4'),'timeout',_0x99d7('0x5')],'include':[{'model':'User','as':_0x99d7('0x6'),'attributes':['id',_0x99d7('0x4'),_0x99d7('0x7'),'openchannelPause']}]},'log':'getOpenchannelQueues'});};};
\ No newline at end of file
index a971885..2c3ba17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc48a=['CreateOpenchannelQueueReport','update','DESC','UpdateOpenchannelQueueReport','create','Request'];(function(_0xc0da73,_0x5bfc48){var _0x1e2f0=function(_0x41b7ad){while(--_0x41b7ad){_0xc0da73['push'](_0xc0da73['shift']());}};_0x1e2f0(++_0x5bfc48);}(_0xc48a,0x1ea));var _0xac48=function(_0x1ecefa,_0x3f5f89){_0x1ecefa=_0x1ecefa-0x0;var _0x507daa=_0xc48a[_0x1ecefa];return _0x507daa;};'use strict';var client=require('../client');exports[_0xac48('0x0')]=function(_0x317316){return client[_0xac48('0x1')](_0xac48('0x2'),{'body':_0x317316,'log':_0xac48('0x2')});};exports[_0xac48('0x3')]=function(_0x4484a2,_0x3568b4){return client['Request']('UpdateOpenchannelQueueReport',{'body':_0x3568b4,'options':{'where':{'uniqueid':_0x4484a2},'order':[['id',_0xac48('0x4')]],'limit':0x1},'log':_0xac48('0x5')});};
\ No newline at end of file
+var _0x5d40=['Request','CreateOpenchannelQueueReport','update','DESC','../client','create'];(function(_0x5de1b6,_0x4fb33d){var _0x3bc1a6=function(_0x15df12){while(--_0x15df12){_0x5de1b6['push'](_0x5de1b6['shift']());}};_0x3bc1a6(++_0x4fb33d);}(_0x5d40,0x1a2));var _0x05d4=function(_0x1e64cc,_0x2f5976){_0x1e64cc=_0x1e64cc-0x0;var _0x2c4ecb=_0x5d40[_0x1e64cc];return _0x2c4ecb;};'use strict';var client=require(_0x05d4('0x0'));exports[_0x05d4('0x1')]=function(_0x573e8a){return client[_0x05d4('0x2')]('CreateOpenchannelQueueReport',{'body':_0x573e8a,'log':_0x05d4('0x3')});};exports[_0x05d4('0x4')]=function(_0x51cbee,_0x382ae4){return client['Request']('UpdateOpenchannelQueueReport',{'body':_0x382ae4,'options':{'where':{'uniqueid':_0x51cbee},'order':[['id',_0x05d4('0x5')]],'limit':0x1},'log':'UpdateOpenchannelQueueReport'});};
\ No newline at end of file
index 3074a12..056516d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb717=['UpdateSmsInteraction','updateSmsInteraction','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','Request'];(function(_0x33210,_0x3a4d1f){var _0xa49ccd=function(_0x496079){while(--_0x496079){_0x33210['push'](_0x33210['shift']());}};_0xa49ccd(++_0x3a4d1f);}(_0xb717,0x1b4));var _0x7b71=function(_0x30d285,_0x73b0f4){_0x30d285=_0x30d285-0x0;var _0x5d5fed=_0xb717[_0x30d285];return _0x5d5fed;};'use strict';var client=require(_0x7b71('0x0'));exports['update']=function(_0x161237,_0x4966bf){return client[_0x7b71('0x1')](_0x7b71('0x2'),{'body':_0x4966bf,'options':{'where':{'id':_0x161237}},'log':_0x7b71('0x3')});};exports['addTags']=function(_0x238319,_0x2e583f){return client[_0x7b71('0x1')](_0x7b71('0x4'),{'body':_0x2e583f,'options':{'where':{'id':_0x238319}},'log':_0x7b71('0x5')});};
\ No newline at end of file
+var _0x2fed=['Request','updateSmsInteraction','addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update'];(function(_0x6a86df,_0x54ffeb){var _0x22c60e=function(_0x2abb02){while(--_0x2abb02){_0x6a86df['push'](_0x6a86df['shift']());}};_0x22c60e(++_0x54ffeb);}(_0x2fed,0x7c));var _0xd2fe=function(_0x53256c,_0x102fa5){_0x53256c=_0x53256c-0x0;var _0x583fea=_0x2fed[_0x53256c];return _0x583fea;};'use strict';var client=require(_0xd2fe('0x0'));exports[_0xd2fe('0x1')]=function(_0x35bf53,_0x1f0e53){return client[_0xd2fe('0x2')]('UpdateSmsInteraction',{'body':_0x1f0e53,'options':{'where':{'id':_0x35bf53}},'log':_0xd2fe('0x3')});};exports[_0xd2fe('0x4')]=function(_0x48707a,_0x58f3f8){return client[_0xd2fe('0x2')](_0xd2fe('0x5'),{'body':_0x58f3f8,'options':{'where':{'id':_0x48707a}},'log':_0xd2fe('0x6')});};
\ No newline at end of file
index 1bf4196..057bf44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd14=['createSmsMessage','../client','create','Request','CreateSmsMessage'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xdd14,0x164));var _0x4dd1=function(_0x73992f,_0x1a697a){_0x73992f=_0x73992f-0x0;var _0x1d1a26=_0xdd14[_0x73992f];return _0x1d1a26;};'use strict';var client=require(_0x4dd1('0x0'));exports[_0x4dd1('0x1')]=function(_0x4995f7){return client[_0x4dd1('0x2')](_0x4dd1('0x3'),{'body':_0x4995f7,'log':_0x4dd1('0x4')});};
\ No newline at end of file
+var _0x4399=['create','CreateSmsMessage','createSmsMessage','../client'];(function(_0x32c336,_0x5704f0){var _0x11e4ae=function(_0x21e834){while(--_0x21e834){_0x32c336['push'](_0x32c336['shift']());}};_0x11e4ae(++_0x5704f0);}(_0x4399,0x7f));var _0x9439=function(_0x435498,_0x2ac547){_0x435498=_0x435498-0x0;var _0x1e2e3f=_0x4399[_0x435498];return _0x1e2e3f;};'use strict';var client=require(_0x9439('0x0'));exports[_0x9439('0x1')]=function(_0x3424ae){return client['Request'](_0x9439('0x2'),{'body':_0x3424ae,'log':_0x9439('0x3')});};
\ No newline at end of file
index af13f08..bef52d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['timeout','strategy','User','Agents','name','../client','getSmsQueues'];(function(_0x368519,_0x6bd67d){var _0x398e4e=function(_0x345e50){while(--_0x345e50){_0x368519['push'](_0x368519['shift']());}};_0x398e4e(++_0x6bd67d);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var client=require(_0x0d8b('0x0'));exports[_0x0d8b('0x1')]=function(){return function(){return client['Request']('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x0d8b('0x2'),_0x0d8b('0x3')],'include':[{'model':_0x0d8b('0x4'),'as':_0x0d8b('0x5'),'attributes':['id',_0x0d8b('0x6'),'online','smsPause']}]},'log':_0x0d8b('0x1')});};};
\ No newline at end of file
+var _0xa9e0=['name','online','smsPause','../client','getSmsQueues','Request','timeout','User','Agents'];(function(_0x133331,_0x30c1ed){var _0x569378=function(_0x4be37e){while(--_0x4be37e){_0x133331['push'](_0x133331['shift']());}};_0x569378(++_0x30c1ed);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa9e0[_0x3c2a69];return _0x596bc8;};'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
index cc28f0b..3cb2fbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['create','CreateSmsQueueReport','update','UpdateSmsQueueReport','../client'];(function(_0xc1773,_0x393c9c){var _0x1fbcf0=function(_0x2eb29a){while(--_0x2eb29a){_0xc1773['push'](_0xc1773['shift']());}};_0x1fbcf0(++_0x393c9c);}(_0x70e0,0x17b));var _0x070e=function(_0x5d9f1e,_0x1fa029){_0x5d9f1e=_0x5d9f1e-0x0;var _0x5a406a=_0x70e0[_0x5d9f1e];return _0x5a406a;};'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
+var _0xedd9=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x57f8c0,_0x136cf6){var _0x117f08=function(_0x426cd4){while(--_0x426cd4){_0x57f8c0['push'](_0x57f8c0['shift']());}};_0x117f08(++_0x136cf6);}(_0xedd9,0xfc));var _0x9edd=function(_0x7f4de8,_0x3da2a4){_0x7f4de8=_0x7f4de8-0x0;var _0x1f2914=_0xedd9[_0x7f4de8];return _0x1f2914;};'use strict';var client=require('../client');exports[_0x9edd('0x0')]=function(_0x2d7989){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'body':_0x2d7989,'log':_0x9edd('0x2')});};exports[_0x9edd('0x3')]=function(_0x3e6d3a,_0x36b53f){return client['Request'](_0x9edd('0x4'),{'body':_0x36b53f,'options':{'where':{'uniqueid':_0x3e6d3a},'order':[['id',_0x9edd('0x5')]],'limit':0x1},'log':_0x9edd('0x4')});};
\ No newline at end of file
index 23fa84d..67e2f56 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(_0x19be62,_0x1f0ed4){var _0x26d6a7=function(_0x77ef){while(--_0x77ef){_0x19be62['push'](_0x19be62['shift']());}};_0x26d6a7(++_0x1f0ed4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'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(_0x5612bd,_0x449e96){var _0x3e9337=function(_0x30dd9d){while(--_0x30dd9d){_0x5612bd['push'](_0x5612bd['shift']());}};_0x3e9337(++_0x449e96);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'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 007cafc..69999d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9fb=['UpdateWhatsappInteraction','updateWhatsappInteraction','AddTagsToWhatsappInteraction','../client','update','Request'];(function(_0x526b73,_0xc84409){var _0x3e1995=function(_0x2e4d64){while(--_0x2e4d64){_0x526b73['push'](_0x526b73['shift']());}};_0x3e1995(++_0xc84409);}(_0xd9fb,0x189));var _0xbd9f=function(_0x342700,_0x569f75){_0x342700=_0x342700-0x0;var _0x53406f=_0xd9fb[_0x342700];return _0x53406f;};'use strict';var client=require(_0xbd9f('0x0'));exports[_0xbd9f('0x1')]=function(_0x288314,_0x1eeb46){return client[_0xbd9f('0x2')](_0xbd9f('0x3'),{'body':_0x1eeb46,'options':{'where':{'id':_0x288314}},'log':_0xbd9f('0x4')});};exports['addTags']=function(_0x2d4213,_0xf146bc){return client['Request'](_0xbd9f('0x5'),{'body':_0xf146bc,'options':{'where':{'id':_0x2d4213}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
+var _0x2f2e=['updateWhatsappInteraction','addTags','update','Request'];(function(_0x291514,_0x20cfbf){var _0xdeb4bd=function(_0x1e1e49){while(--_0x1e1e49){_0x291514['push'](_0x291514['shift']());}};_0xdeb4bd(++_0x20cfbf);}(_0x2f2e,0x146));var _0xe2f2=function(_0x210718,_0x247b55){_0x210718=_0x210718-0x0;var _0x541bfc=_0x2f2e[_0x210718];return _0x541bfc;};'use strict';var client=require('../client');exports[_0xe2f2('0x0')]=function(_0x11dffe,_0x5774d3){return client[_0xe2f2('0x1')]('UpdateWhatsappInteraction',{'body':_0x5774d3,'options':{'where':{'id':_0x11dffe}},'log':_0xe2f2('0x2')});};exports[_0xe2f2('0x3')]=function(_0x2da048,_0x14543c){return client['Request']('AddTagsToWhatsappInteraction',{'body':_0x14543c,'options':{'where':{'id':_0x2da048}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
index f49eb04..e00d4c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaa0=['../client','create','Request'];(function(_0x1db251,_0xf0443d){var _0x56685a=function(_0x6ec6b7){while(--_0x6ec6b7){_0x1db251['push'](_0x1db251['shift']());}};_0x56685a(++_0xf0443d);}(_0xeaa0,0x102));var _0x0eaa=function(_0x8cfd08,_0x656b39){_0x8cfd08=_0x8cfd08-0x0;var _0x1c6452=_0xeaa0[_0x8cfd08];return _0x1c6452;};'use strict';var client=require(_0x0eaa('0x0'));exports[_0x0eaa('0x1')]=function(_0x492644){return client[_0x0eaa('0x2')]('CreateWhatsappMessage',{'body':_0x492644,'log':'createWhatsappMessage'});};
\ No newline at end of file
+var _0x0cfb=['../client','create','Request','CreateWhatsappMessage','createWhatsappMessage'];(function(_0x48920a,_0x1caad7){var _0x271586=function(_0x51b5c4){while(--_0x51b5c4){_0x48920a['push'](_0x48920a['shift']());}};_0x271586(++_0x1caad7);}(_0x0cfb,0x1a9));var _0xb0cf=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x0cfb[_0x1ac595];return _0x455fff;};'use strict';var client=require(_0xb0cf('0x0'));exports[_0xb0cf('0x1')]=function(_0x21b81b){return client[_0xb0cf('0x2')](_0xb0cf('0x3'),{'body':_0x21b81b,'log':_0xb0cf('0x4')});};
\ No newline at end of file
index feae005..23e0847 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9dd=['getWhatsappQueues','Request','GetWhatsappQueue','name','strategy','User','Agents','online','whatsappPause'];(function(_0x5047c7,_0x33e481){var _0xb9b684=function(_0x1b1349){while(--_0x1b1349){_0x5047c7['push'](_0x5047c7['shift']());}};_0xb9b684(++_0x33e481);}(_0xc9dd,0x6c));var _0xdc9d=function(_0x5cf810,_0x197ce7){_0x5cf810=_0x5cf810-0x0;var _0x16d0b9=_0xc9dd[_0x5cf810];return _0x16d0b9;};'use strict';var client=require('../client');exports[_0xdc9d('0x0')]=function(){return function(){return client[_0xdc9d('0x1')](_0xdc9d('0x2'),{'options':{'raw':![],'attributes':['id',_0xdc9d('0x3'),'timeout',_0xdc9d('0x4')],'include':[{'model':_0xdc9d('0x5'),'as':_0xdc9d('0x6'),'attributes':['id',_0xdc9d('0x3'),_0xdc9d('0x7'),_0xdc9d('0x8')]}]},'log':_0xdc9d('0x0')});};};
\ No newline at end of file
+var _0x0b30=['getWhatsappQueues','GetWhatsappQueue','name','timeout','strategy','Agents','online','whatsappPause','../client'];(function(_0x534c8f,_0x500079){var _0x5a57f5=function(_0x38ec0a){while(--_0x38ec0a){_0x534c8f['push'](_0x534c8f['shift']());}};_0x5a57f5(++_0x500079);}(_0x0b30,0x19d));var _0x00b3=function(_0x55e241,_0x121ba9){_0x55e241=_0x55e241-0x0;var _0x740322=_0x0b30[_0x55e241];return _0x740322;};'use strict';var client=require(_0x00b3('0x0'));exports[_0x00b3('0x1')]=function(){return function(){return client['Request'](_0x00b3('0x2'),{'options':{'raw':![],'attributes':['id',_0x00b3('0x3'),_0x00b3('0x4'),_0x00b3('0x5')],'include':[{'model':'User','as':_0x00b3('0x6'),'attributes':['id','name',_0x00b3('0x7'),_0x00b3('0x8')]}]},'log':_0x00b3('0x1')});};};
\ No newline at end of file
index 92568e5..0536612 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x333d=['../client','Request','CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport','DESC'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x333d,0x84));var _0xd333=function(_0x5b077b,_0x50b707){_0x5b077b=_0x5b077b-0x0;var _0x16faf7=_0x333d[_0x5b077b];return _0x16faf7;};'use strict';var client=require(_0xd333('0x0'));exports['create']=function(_0x6df05e){return client[_0xd333('0x1')](_0xd333('0x2'),{'body':_0x6df05e,'log':_0xd333('0x2')});};exports[_0xd333('0x3')]=function(_0x40b986,_0x50b591){return client[_0xd333('0x1')](_0xd333('0x4'),{'body':_0x50b591,'options':{'where':{'uniqueid':_0x40b986},'order':[['id',_0xd333('0x5')]],'limit':0x1},'log':_0xd333('0x4')});};
\ No newline at end of file
+var _0xdd7a=['Request','UpdateWhatsappQueueReport','../client','CreateWhatsappQueueReport'];(function(_0x2ba217,_0x105032){var _0x5af4d9=function(_0x33ca16){while(--_0x33ca16){_0x2ba217['push'](_0x2ba217['shift']());}};_0x5af4d9(++_0x105032);}(_0xdd7a,0x11a));var _0xadd7=function(_0x5a1fd9,_0x5f51fa){_0x5a1fd9=_0x5a1fd9-0x0;var _0x359be9=_0xdd7a[_0x5a1fd9];return _0x359be9;};'use strict';var client=require(_0xadd7('0x0'));exports['create']=function(_0x154c22){return client['Request'](_0xadd7('0x1'),{'body':_0x154c22,'log':_0xadd7('0x1')});};exports['update']=function(_0x4eacd9,_0x3073b4){return client[_0xadd7('0x2')](_0xadd7('0x3'),{'body':_0x3073b4,'options':{'where':{'uniqueid':_0x4eacd9},'order':[['id','DESC']],'limit':0x1},'log':_0xadd7('0x3')});};
\ No newline at end of file
index 7a98efe..49abf6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a99=['message','join','find','agents','timeout','atimeout','channel','START:%s','rules','end','info','[%s][AGENT]\x20ROUTING\x20STOPPED','close','stop','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','seq-queue','../../../../config/logger','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','length','error','[%s][AGENT]\x20%s'];(function(_0x4d8310,_0x5df4fc){var _0xf9d244=function(_0x3e4600){while(--_0x3e4600){_0x4d8310['push'](_0x4d8310['shift']());}};_0xf9d244(++_0x5df4fc);}(_0x6a99,0x148));var _0x96a9=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6a99[_0x20a584];return _0x4b41a8;};'use strict';var schema=require(_0x96a9('0x0'));var _=require(_0x96a9('0x1'));var util=require('util');var seqqueue=require(_0x96a9('0x2'));var logger=require(_0x96a9('0x3'))('routing');var strategy=require('./strategy');var queue=schema({'name':{'type':_0x96a9('0x4'),'required':!![],'message':_0x96a9('0x5')},'timeout':{'type':'number','message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x265052,_0x5a2ef4,_0xa8aa2){return logger['info'](util[_0x96a9('0x6')](_0x96a9('0x7'),_0x265052,_0x5a2ef4[_0x96a9('0x8')],_0xa8aa2));}function handleFindAgent(_0x4e0caf){return function(_0x1b2b1e){return _0x1b2b1e['name']['toLowerCase']()===_0x4e0caf['toLowerCase']();};}exports['consequence']=function(_0x1d856f,_0xf0fbc1,_0x16f995,_0x4e7ba9){return function(_0x26c207){try{var _0x49485f={'name':_0xf0fbc1[0x0],'timeout':_0xf0fbc1[0x1]};var _0x5a8ab6=queue[_0x96a9('0x0')](_0x49485f,{'typecast':!![]});if(_0x5a8ab6[_0x96a9('0x9')]){logger[_0x96a9('0xa')](_0x96a9('0xb'),_0x1d856f,_['map'](_0x5a8ab6,_0x96a9('0xc'))[_0x96a9('0xd')](',\x20'));_0x26c207['stop']();}else{var _0x201b2d=_[_0x96a9('0xe')](_0x16f995[_0x96a9('0xf')],handleFindAgent(_0x49485f['name']));if(_0x201b2d){var _0x4db3d3=(_0x49485f[_0x96a9('0x10')]||0xa)*0x3e8;var _0x4a5208,_0x590f80;var _0x31709e=seqqueue['createQueue'](_0x4db3d3);_0x31709e['id']=_0x1d856f;_0x31709e[_0x96a9('0x11')]=_0x4db3d3;_0x31709e[_0x96a9('0x12')]=_0x4e7ba9[_0x96a9('0x12')];writeLog(_0x1d856f,_0x201b2d,util[_0x96a9('0x6')](_0x96a9('0x13'),_0x4db3d3));_0x16f995[_0x96a9('0x14')][_0x1d856f]['on'](_0x96a9('0x15'),function(){logger[_0x96a9('0x16')](_0x96a9('0x17'),_0x1d856f);clearTimeout(_0x590f80);_0x590f80=undefined;_0x31709e[_0x96a9('0x18')]();if(_0x16f995['rules'][_0x1d856f]){delete _0x16f995[_0x96a9('0x14')][_0x1d856f];}_0x26c207[_0x96a9('0x19')]();});_0x16f995['rules'][_0x1d856f]['on'](_0x96a9('0x1a'),function(){if(_0x16f995['rules'][_0x1d856f]){delete _0x16f995[_0x96a9('0x14')][_0x1d856f];}});_0x590f80=setTimeout(function(){logger[_0x96a9('0x16')](_0x96a9('0x1b'),_0x1d856f);clearTimeout(_0x590f80);_0x31709e[_0x96a9('0x18')]();_0x26c207[_0x96a9('0x1c')]();},_0x4db3d3);strategy[_0x96a9('0x1d')](_0x31709e,_0x201b2d,_0x16f995,_0x4e7ba9);}else{logger[_0x96a9('0xa')](_0x96a9('0x1e'),_0x1d856f,_0x49485f['name']);_0x26c207[_0x96a9('0x19')]();}}}catch(_0x51aa4b){console[_0x96a9('0x1f')](_0x51aa4b);logger[_0x96a9('0xa')](_0x96a9('0x20'),_0x1d856f,_0x51aa4b[_0x96a9('0x21')]);_0x26c207[_0x96a9('0x19')]();}};};
\ No newline at end of file
+var _0xa1f5=['createQueue','atimeout','channel','START:%s','rules','end','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','stop','[%s][QUEUE]\x20%s','stack','validate','seq-queue','../../../../config/logger','routing','./strategy','string','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','[%s][AGENT]\x20%s','map','message','join','find','agents'];(function(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0xa1f5,0x111));var _0x5a1f=function(_0x423933,_0x432a18){_0x423933=_0x423933-0x0;var _0x4b37a0=_0xa1f5[_0x423933];return _0x4b37a0;};'use strict';var schema=require(_0x5a1f('0x0'));var _=require('lodash');var util=require('util');var seqqueue=require(_0x5a1f('0x1'));var logger=require(_0x5a1f('0x2'))(_0x5a1f('0x3'));var strategy=require(_0x5a1f('0x4'));var queue=schema({'name':{'type':_0x5a1f('0x5'),'required':!![],'message':_0x5a1f('0x6')},'timeout':{'type':_0x5a1f('0x7'),'message':_0x5a1f('0x8')}});function writeLog(_0x4c9a3b,_0x1916ba,_0x3f38e9){return logger[_0x5a1f('0x9')](util[_0x5a1f('0xa')](_0x5a1f('0xb'),_0x4c9a3b,_0x1916ba[_0x5a1f('0xc')],_0x3f38e9));}function handleFindAgent(_0x56aeba){return function(_0x552c71){return _0x552c71['name'][_0x5a1f('0xd')]()===_0x56aeba[_0x5a1f('0xd')]();};}exports[_0x5a1f('0xe')]=function(_0x93834a,_0x372431,_0x8738a4,_0x4cd0c9){return function(_0x3f5384){try{var _0x42ecb0={'name':_0x372431[0x0],'timeout':_0x372431[0x1]};var _0xc49a7=queue[_0x5a1f('0x0')](_0x42ecb0,{'typecast':!![]});if(_0xc49a7[_0x5a1f('0xf')]){logger[_0x5a1f('0x10')](_0x5a1f('0x11'),_0x93834a,_[_0x5a1f('0x12')](_0xc49a7,_0x5a1f('0x13'))[_0x5a1f('0x14')](',\x20'));_0x3f5384['stop']();}else{var _0x48e8e5=_[_0x5a1f('0x15')](_0x8738a4[_0x5a1f('0x16')],handleFindAgent(_0x42ecb0[_0x5a1f('0xc')]));if(_0x48e8e5){var _0x1bac53=(_0x42ecb0['timeout']||0xa)*0x3e8;var _0x436228,_0x3b21d1;var _0x83f707=seqqueue[_0x5a1f('0x17')](_0x1bac53);_0x83f707['id']=_0x93834a;_0x83f707[_0x5a1f('0x18')]=_0x1bac53;_0x83f707[_0x5a1f('0x19')]=_0x4cd0c9[_0x5a1f('0x19')];writeLog(_0x93834a,_0x48e8e5,util[_0x5a1f('0xa')](_0x5a1f('0x1a'),_0x1bac53));_0x8738a4[_0x5a1f('0x1b')][_0x93834a]['on'](_0x5a1f('0x1c'),function(){logger[_0x5a1f('0x9')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x93834a);clearTimeout(_0x3b21d1);_0x3b21d1=undefined;_0x83f707['close']();if(_0x8738a4['rules'][_0x93834a]){delete _0x8738a4['rules'][_0x93834a];}_0x3f5384['stop']();});_0x8738a4['rules'][_0x93834a]['on'](_0x5a1f('0x1d'),function(){if(_0x8738a4[_0x5a1f('0x1b')][_0x93834a]){delete _0x8738a4[_0x5a1f('0x1b')][_0x93834a];}});_0x3b21d1=setTimeout(function(){logger[_0x5a1f('0x9')](_0x5a1f('0x1e'),_0x93834a);clearTimeout(_0x3b21d1);_0x83f707['close']();_0x3f5384[_0x5a1f('0x1f')]();},_0x1bac53);strategy[_0x5a1f('0x20')](_0x83f707,_0x48e8e5,_0x8738a4,_0x4cd0c9);}else{logger['error'](_0x5a1f('0x21'),_0x93834a,_0x42ecb0[_0x5a1f('0xc')]);_0x3f5384[_0x5a1f('0x22')]();}}}catch(_0x1e832b){console['log'](_0x1e832b);logger['error'](_0x5a1f('0x23'),_0x93834a,_0x1e832b[_0x5a1f('0x24')]);_0x3f5384[_0x5a1f('0x22')]();}};};
\ No newline at end of file
index f4df8d6..953b51f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4647=['format','YYYY-MM-DD\x20HH:mm:ss','out','sms','whatsapp','phone','channel','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','getMustacheRender','Message','then','error','stringify','finally','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','$LATEST','message','toString','postText','amazonlex','dialogState','Failed','moment','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next'];(function(_0x2c91e0,_0x108872){var _0x3ab9b6=function(_0x58f6fb){while(--_0x58f6fb){_0x2c91e0['push'](_0x2c91e0['shift']());}};_0x3ab9b6(++_0x108872);}(_0x4647,0x11f));var _0x7464=function(_0x256c35,_0x41e7ec){_0x256c35=_0x256c35-0x0;var _0x2654ad=_0x4647[_0x256c35];return _0x2654ad;};'use strict';var _=require('lodash');var moment=require(_0x7464('0x0'));var AWS=require(_0x7464('0x1'));var utils=require(_0x7464('0x2'));var logger=require(_0x7464('0x3'))(_0x7464('0x4'));var rpc={'chatMessage':require(_0x7464('0x5')),'openchannelMessage':require(_0x7464('0x6')),'mailMessage':require(_0x7464('0x7')),'smsMessage':require(_0x7464('0x8')),'faxMessage':require(_0x7464('0x9')),'whatsappMessage':require(_0x7464('0xa'))};exports[_0x7464('0xb')]=function(_0x3aa42f,_0x52b923){return function(_0x26123f){try{if(!_[_0x7464('0xc')](this[_0x7464('0xd')][_0x7464('0xe')])){logger[_0x7464('0xf')](_0x7464('0x10'),_0x3aa42f,_0x7464('0x11'));return _0x26123f[_0x7464('0x12')]();}var _0x524ea5={'ContactId':this['contact']['id'],'sentAt':moment()[_0x7464('0x13')](_0x7464('0x14')),'direction':_0x7464('0x15')};if(this['channel']===_0x7464('0x16')||this['channel']===_0x7464('0x17')){_0x524ea5['phone']=this[_0x7464('0xd')][_0x7464('0x18')];}var _0x2e9772=this[_0x7464('0x19')];if(_0x2e9772===_0x7464('0x1a')){_0x524ea5[_0x7464('0x1b')]=this[_0x7464('0x1c')]['id'];}else{_0x524ea5[_[_0x7464('0x1d')](_0x2e9772)+_0x7464('0x1e')]=this[_0x7464('0x1c')]['id'];}_0x524ea5[_[_0x7464('0x1d')](_0x2e9772)+_0x7464('0x1f')]=this[_0x7464('0xd')]['id'];if(this[_0x7464('0xd')][_0x7464('0x20')]){var _0x4fd721=_0x52b923[0x4];if(!_[_0x7464('0x21')](_0x4fd721)){_0x524ea5[_0x7464('0x22')]=utils[_0x7464('0x23')](_0x4fd721,this);return rpc[_0x2e9772+_0x7464('0x24')]['create'](_0x524ea5)[_0x7464('0x25')](function(_0x3fcb1a){logger[_0x7464('0xf')](_0x7464('0x10'),_0x3aa42f,_0x524ea5[_0x7464('0x22')]);})['catch'](function(_0xcc836a){logger[_0x7464('0x26')](_0x7464('0x10'),_0x3aa42f,JSON[_0x7464('0x27')](_0xcc836a));})[_0x7464('0x28')](function(){logger['info']('[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x3aa42f);_0x26123f[_0x7464('0x29')]();});}else{logger[_0x7464('0xf')](_0x7464('0x2a'),_0x3aa42f);_0x26123f[_0x7464('0x29')]();}}else{var _0x3dce4a=this;var _0x5a165b=new AWS[(_0x7464('0x2b'))]({'accessKeyId':_0x52b923[0x0],'secretAccessKey':_0x52b923[0x1],'region':_0x52b923[0x2]});var _0x5008e3={'botAlias':_0x7464('0x2c'),'botName':_0x52b923[0x3],'inputText':this[_0x7464('0x2d')][_0x7464('0x22')],'userId':this[_0x7464('0x19')]+':'+this[_0x7464('0xd')]['id'][_0x7464('0x2e')]()};_0x5a165b[_0x7464('0x2f')](_0x5008e3,function(_0x587085,_0x40a2e8){if(_0x587085){logger['error'](_0x7464('0x10'),_0x3aa42f,_0x587085[_0x7464('0x2d')]);_0x26123f['next']();}else if(_0x40a2e8&&_0x40a2e8[_0x7464('0x2d')]){_0x3dce4a[_0x7464('0x22')][_0x7464('0x30')]=_0x40a2e8;_0x524ea5[_0x7464('0x22')]=_0x40a2e8[_0x7464('0x2d')];_0x524ea5['providerName']='amazonlex';_0x524ea5['providerResponse']=JSON[_0x7464('0x27')](_0x40a2e8);return rpc[_0x2e9772+'Message']['create'](_0x524ea5)[_0x7464('0x25')](function(_0x58159f){logger[_0x7464('0xf')]('[%s][AMAZONLEX]\x20%s',_0x3aa42f,_0x524ea5['body']);if(_0x40a2e8[_0x7464('0x31')]==_0x7464('0x32')){_0x26123f['next']();}else{_0x26123f['stop']();}})['catch'](function(_0x33ed94){logger[_0x7464('0x26')](_0x7464('0x10'),_0x3aa42f,JSON[_0x7464('0x27')](_0x33ed94));_0x26123f[_0x7464('0x12')]();});}else{_0x26123f[_0x7464('0x12')]();}});}}catch(_0xd93bb5){logger[_0x7464('0x26')](_0x7464('0x10'),_0x3aa42f,JSON['stringify'](_0xd93bb5));_0x26123f[_0x7464('0x29')]();}};};
\ No newline at end of file
+var _0xe0ae=['next','amazonlex','providerName','Message','then','dialogState','lodash','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','interaction','UserId','info','[%s][AMAZONLEX]\x20%s','contact','out','channel','whatsapp','phone','ChatWebsiteId','account','upperFirst','AccountId','created','create','body','catch','error','stringify','finally','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','$LATEST','message','toString','postText'];(function(_0x3668ef,_0x143f7d){var _0x342ac7=function(_0x551df7){while(--_0x551df7){_0x3668ef['push'](_0x3668ef['shift']());}};_0x342ac7(++_0x143f7d);}(_0xe0ae,0x15e));var _0xee0a=function(_0x2afb44,_0x249a57){_0x2afb44=_0x2afb44-0x0;var _0x15ccc2=_0xe0ae[_0x2afb44];return _0x15ccc2;};'use strict';var _=require(_0xee0a('0x0'));var moment=require('moment');var AWS=require(_0xee0a('0x1'));var utils=require(_0xee0a('0x2'));var logger=require(_0xee0a('0x3'))(_0xee0a('0x4'));var rpc={'chatMessage':require(_0xee0a('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xee0a('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xee0a('0x7')),'whatsappMessage':require(_0xee0a('0x8'))};exports[_0xee0a('0x9')]=function(_0x3108d4,_0x2c1e82){return function(_0x49b88c){try{if(!_['isNil'](this[_0xee0a('0xa')][_0xee0a('0xb')])){logger[_0xee0a('0xc')](_0xee0a('0xd'),_0x3108d4,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x49b88c['next']();}var _0x45af14={'ContactId':this[_0xee0a('0xe')]['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xee0a('0xf')};if(this[_0xee0a('0x10')]==='sms'||this[_0xee0a('0x10')]===_0xee0a('0x11')){_0x45af14[_0xee0a('0x12')]=this[_0xee0a('0xa')]['phone'];}var _0x5c925d=this[_0xee0a('0x10')];if(_0x5c925d==='chat'){_0x45af14[_0xee0a('0x13')]=this[_0xee0a('0x14')]['id'];}else{_0x45af14[_[_0xee0a('0x15')](_0x5c925d)+_0xee0a('0x16')]=this[_0xee0a('0x14')]['id'];}_0x45af14[_[_0xee0a('0x15')](_0x5c925d)+'InteractionId']=this[_0xee0a('0xa')]['id'];if(this[_0xee0a('0xa')][_0xee0a('0x17')]){var _0x1bdbcc=_0x2c1e82[0x4];if(!_['isEmpty'](_0x1bdbcc)){_0x45af14['body']=utils['getMustacheRender'](_0x1bdbcc,this);return rpc[_0x5c925d+'Message'][_0xee0a('0x18')](_0x45af14)['then'](function(_0x402860){logger[_0xee0a('0xc')]('[%s][AMAZONLEX]\x20%s',_0x3108d4,_0x45af14[_0xee0a('0x19')]);})[_0xee0a('0x1a')](function(_0x216a0a){logger[_0xee0a('0x1b')](_0xee0a('0xd'),_0x3108d4,JSON[_0xee0a('0x1c')](_0x216a0a));})[_0xee0a('0x1d')](function(){logger[_0xee0a('0xc')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x3108d4);_0x49b88c[_0xee0a('0x1e')]();});}else{logger['info'](_0xee0a('0x1f'),_0x3108d4);_0x49b88c[_0xee0a('0x1e')]();}}else{var _0x486907=this;var _0x48bc72=new AWS[(_0xee0a('0x20'))]({'accessKeyId':_0x2c1e82[0x0],'secretAccessKey':_0x2c1e82[0x1],'region':_0x2c1e82[0x2]});var _0x2530ac={'botAlias':_0xee0a('0x21'),'botName':_0x2c1e82[0x3],'inputText':this[_0xee0a('0x22')][_0xee0a('0x19')],'userId':this['channel']+':'+this[_0xee0a('0xa')]['id'][_0xee0a('0x23')]()};_0x48bc72[_0xee0a('0x24')](_0x2530ac,function(_0x59cf07,_0x51899e){if(_0x59cf07){logger[_0xee0a('0x1b')](_0xee0a('0xd'),_0x3108d4,_0x59cf07[_0xee0a('0x22')]);_0x49b88c[_0xee0a('0x25')]();}else if(_0x51899e&&_0x51899e[_0xee0a('0x22')]){_0x486907[_0xee0a('0x19')][_0xee0a('0x26')]=_0x51899e;_0x45af14[_0xee0a('0x19')]=_0x51899e['message'];_0x45af14[_0xee0a('0x27')]=_0xee0a('0x26');_0x45af14['providerResponse']=JSON[_0xee0a('0x1c')](_0x51899e);return rpc[_0x5c925d+_0xee0a('0x28')][_0xee0a('0x18')](_0x45af14)[_0xee0a('0x29')](function(_0x2c38dd){logger[_0xee0a('0xc')](_0xee0a('0xd'),_0x3108d4,_0x45af14[_0xee0a('0x19')]);if(_0x51899e[_0xee0a('0x2a')]=='Failed'){_0x49b88c[_0xee0a('0x25')]();}else{_0x49b88c[_0xee0a('0x1e')]();}})[_0xee0a('0x1a')](function(_0x183b78){logger[_0xee0a('0x1b')](_0xee0a('0xd'),_0x3108d4,JSON[_0xee0a('0x1c')](_0x183b78));_0x49b88c[_0xee0a('0x25')]();});}else{_0x49b88c[_0xee0a('0x25')]();}});}}catch(_0x542fee){logger['error'](_0xee0a('0xd'),_0x3108d4,JSON[_0xee0a('0x1c')](_0x542fee));_0x49b88c['stop']();}};};
\ No newline at end of file
index 7177ee2..59dd54e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e69=['stop','lodash','./utils','../../../../config/logger','routing','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','channel','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','interaction','created','Autoreply\x20already\x20sent','autoreplyExecuted','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','getMustacheRender','message','from','phone','read','subject','startsWith','Re:','chat','ChatWebsiteId','upperFirst','account','Message','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','</div>','auto-replied','All','auto_reply','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','resolve','Interaction','update','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','error','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','create','finally'];(function(_0x2c35d8,_0x52d8d6){var _0x22bd79=function(_0x31b1d8){while(--_0x31b1d8){_0x2c35d8['push'](_0x2c35d8['shift']());}};_0x22bd79(++_0x52d8d6);}(_0x5e69,0x85));var _0x95e6=function(_0x2f5dad,_0x4313ad){_0x2f5dad=_0x2f5dad-0x0;var _0x38e02d=_0x5e69[_0x2f5dad];return _0x38e02d;};'use strict';var _=require(_0x95e6('0x0'));var moment=require('moment');var utils=require(_0x95e6('0x1'));var logger=require(_0x95e6('0x2'))(_0x95e6('0x3'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x95e6('0x4')),'smsMessage':require(_0x95e6('0x5')),'faxMessage':require(_0x95e6('0x6')),'whatsappMessage':require(_0x95e6('0x7')),'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x95e6('0x8')),'mailInteraction':require(_0x95e6('0x9')),'smsInteraction':require(_0x95e6('0xa')),'faxInteraction':require(_0x95e6('0xb')),'whatsappInteraction':require(_0x95e6('0xc'))};var mailRpc=require(_0x95e6('0xd'));exports['consequence']=function(_0xaa2a62,_0x640ed9,_0x46837d,_0x4ceb0a){return function(_0x3f5f16){try{var _0x50c930=this[_0x95e6('0xe')];if(_0x50c930===_0x95e6('0xf')&&_0x4ceb0a[_0x95e6('0x10')][_0x95e6('0x11')]){logger[_0x95e6('0x12')](_0x95e6('0x13'),_0xaa2a62,_0x95e6('0x14'));return _0x3f5f16[_0x95e6('0x15')]();}if(_0x640ed9[0x0]==='1'&&(_['isNil'](this[_0x95e6('0x16')][_0x95e6('0x17')])||!this[_0x95e6('0x16')]['created'])){logger['info'](_0x95e6('0x13'),_0xaa2a62,_0x95e6('0x18'));return _0x3f5f16[_0x95e6('0x15')]();}if(_0x640ed9[0x0]==='2'&&this['interaction'][_0x95e6('0x19')]){logger[_0x95e6('0x12')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0xaa2a62,'One\x20Time\x20already\x20sent');return _0x3f5f16[_0x95e6('0x15')]();}var _0x429c47={'ContactId':this[_0x95e6('0x1a')]['id'],'sentAt':moment()[_0x95e6('0x1b')](_0x95e6('0x1c')),'direction':_0x95e6('0x1d')};if(this[_0x95e6('0xe')]===_0x95e6('0xf')){_0x429c47[_0x95e6('0x10')]=utils['getMustacheRender'](_0x640ed9[0x2],this);}else{_0x429c47[_0x95e6('0x10')]=utils[_0x95e6('0x1e')](_0x640ed9[0x1],this);}if(this[_0x95e6('0x1f')]){_0x429c47['to']=this[_0x95e6('0x1f')][_0x95e6('0x20')]||'';if(this[_0x95e6('0xe')]===_0x95e6('0xf')&&_0x640ed9[0x1]==='1'){_0x429c47['cc']=this[_0x95e6('0x1f')]['cc']||'';}_0x429c47['from']=this[_0x95e6('0x1f')]['to']||'';_0x429c47[_0x95e6('0x21')]=this['message'][_0x95e6('0x21')]||'';_0x429c47[_0x95e6('0x22')]=!![];if(this[_0x95e6('0x1f')][_0x95e6('0x23')]){_0x429c47[_0x95e6('0x23')]='';_0x429c47['subject']+=_[_0x95e6('0x24')](this[_0x95e6('0x1f')][_0x95e6('0x23')],_0x95e6('0x25'))?'':'Re:\x20';_0x429c47[_0x95e6('0x23')]+=this['message']['subject'];}}if(this[_0x95e6('0xe')]===_0x95e6('0x26')){_0x429c47[_0x95e6('0x27')]=this['account']['id'];}else{_0x429c47[_[_0x95e6('0x28')](this[_0x95e6('0xe')])+'AccountId']=this[_0x95e6('0x29')]['id'];}_0x429c47[_[_0x95e6('0x28')](this[_0x95e6('0xe')])+'InteractionId']=this[_0x95e6('0x16')]['id'];var _0x98e8a=this['interaction'];if(rpc[this[_0x95e6('0xe')]+_0x95e6('0x2a')]){if(this[_0x95e6('0xe')]===_0x95e6('0xf')){_0x429c47['inReplyTo']=this[_0x95e6('0x1f')][_0x95e6('0x2b')];_0x429c47[_0x95e6('0x2c')]=_0x95e6('0x2d')+_[_0x95e6('0x2e')](_0x429c47['body'],'<div\x20id=\x22xm-mail-content\x22','<div')+_0x95e6('0x2f');_0x429c47['headers']={'Auto-Submitted':_0x95e6('0x30'),'X-Auto-Response-Suppress':_0x95e6('0x31'),'Precedence':_0x95e6('0x32')};return mailRpc[_0x95e6('0x33')](this['account']['smtpOptions'],_0x429c47)[_0x95e6('0x34')](function(_0xb7d502){logger[_0x95e6('0x12')](_0x95e6('0x35'),_0xaa2a62);_0x429c47[_0x95e6('0x2b')]=_0xb7d502[_0x95e6('0x1f')][_0x95e6('0x2b')];return rpc[_0x50c930+_0x95e6('0x2a')]['create'](_0x429c47);})[_0x95e6('0x34')](function(_0x5eba90){logger[_0x95e6('0x12')]('[%s][AUTOREPLY]\x20%s',_0xaa2a62,JSON[_0x95e6('0x36')](_0x5eba90));})[_0x95e6('0x37')](function(_0x13a3ff){logger['error'](_0x95e6('0x38'),_0xaa2a62,JSON['stringify'](_0x13a3ff));})['finally'](function(){Promise[_0x95e6('0x39')]()[_0x95e6('0x34')](function(){if(_0x640ed9[0x0]!=='2'||_0x98e8a[_0x95e6('0x19')])return;return rpc[_0x50c930+_0x95e6('0x3a')][_0x95e6('0x3b')](_0x98e8a['id'],{'autoreplyExecuted':!![]})[_0x95e6('0x34')](function(_0x59df75){logger[_0x95e6('0x12')](_0x95e6('0x3c'),_0xaa2a62,JSON[_0x95e6('0x36')](_0x59df75));})['catch'](function(_0x5a5a0f){logger[_0x95e6('0x3d')](_0x95e6('0x3e'),_0xaa2a62,JSON['stringify'](_0x5a5a0f));});})['then'](function(){_0x3f5f16[_0x95e6('0x15')]();});});}else{return rpc[this[_0x95e6('0xe')]+'Message'][_0x95e6('0x3f')](_0x429c47)[_0x95e6('0x34')](function(){logger[_0x95e6('0x12')](_0x95e6('0x13'),_0xaa2a62,_0x429c47[_0x95e6('0x10')]);})[_0x95e6('0x37')](function(_0x4ffa2a){logger[_0x95e6('0x3d')](_0x95e6('0x13'),_0xaa2a62,JSON[_0x95e6('0x36')](_0x4ffa2a));})[_0x95e6('0x40')](function(){Promise[_0x95e6('0x39')]()[_0x95e6('0x34')](function(){if(_0x640ed9[0x0]!=='2'||_0x98e8a[_0x95e6('0x19')])return;return rpc[_0x50c930+_0x95e6('0x3a')][_0x95e6('0x3b')](_0x98e8a['id'],{'autoreplyExecuted':!![]})[_0x95e6('0x34')](function(_0x3de056){logger[_0x95e6('0x12')](_0x95e6('0x3c'),_0xaa2a62,JSON[_0x95e6('0x36')](_0x3de056));})[_0x95e6('0x37')](function(_0x251437){logger[_0x95e6('0x3d')](_0x95e6('0x3e'),_0xaa2a62,JSON[_0x95e6('0x36')](_0x251437));});})[_0x95e6('0x34')](function(){_0x3f5f16[_0x95e6('0x15')]();});});}}}catch(_0x4ef3d5){logger[_0x95e6('0x3d')](_0x95e6('0x13'),_0xaa2a62,JSON[_0x95e6('0x36')](_0x4ef3d5));_0x3f5f16[_0x95e6('0x41')]();}};};
\ No newline at end of file
+var _0xbc07=['isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','created','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','getMustacheRender','message','from','phone','read','subject','Re:','Re:\x20','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','Message','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','All','auto_reply','smtpOptions','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','stringify','catch','finally','resolve','update','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','create','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','channel','mail','body'];(function(_0x2e9ded,_0x235e2b){var _0xc88a61=function(_0x1baa4b){while(--_0x1baa4b){_0x2e9ded['push'](_0x2e9ded['shift']());}};_0xc88a61(++_0x235e2b);}(_0xbc07,0x105));var _0x7bc0=function(_0x33ce8e,_0x18b4d2){_0x33ce8e=_0x33ce8e-0x0;var _0x3c59ee=_0xbc07[_0x33ce8e];return _0x3c59ee;};'use strict';var _=require(_0x7bc0('0x0'));var moment=require('moment');var utils=require(_0x7bc0('0x1'));var logger=require(_0x7bc0('0x2'))(_0x7bc0('0x3'));var rpc={'chatMessage':require(_0x7bc0('0x4')),'openchannelMessage':require(_0x7bc0('0x5')),'mailMessage':require(_0x7bc0('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x7bc0('0x7')),'whatsappMessage':require(_0x7bc0('0x8')),'chatInteraction':require(_0x7bc0('0x9')),'openchannelInteraction':require(_0x7bc0('0xa')),'mailInteraction':require(_0x7bc0('0xb')),'smsInteraction':require(_0x7bc0('0xc')),'faxInteraction':require(_0x7bc0('0xd')),'whatsappInteraction':require(_0x7bc0('0xe'))};var mailRpc=require('../../mailRpc');exports[_0x7bc0('0xf')]=function(_0x5168d7,_0x60e8a3,_0x9c07cc,_0x1b1d07){return function(_0xc6653e){try{var _0x2772cc=this[_0x7bc0('0x10')];if(_0x2772cc===_0x7bc0('0x11')&&_0x1b1d07[_0x7bc0('0x12')][_0x7bc0('0x13')]){logger[_0x7bc0('0x14')](_0x7bc0('0x15'),_0x5168d7,_0x7bc0('0x16'));return _0xc6653e[_0x7bc0('0x17')]();}if(_0x60e8a3[0x0]==='1'&&(_[_0x7bc0('0x18')](this[_0x7bc0('0x19')][_0x7bc0('0x1a')])||!this['interaction'][_0x7bc0('0x1a')])){logger[_0x7bc0('0x14')](_0x7bc0('0x15'),_0x5168d7,_0x7bc0('0x1b'));return _0xc6653e[_0x7bc0('0x17')]();}if(_0x60e8a3[0x0]==='2'&&this[_0x7bc0('0x19')][_0x7bc0('0x1c')]){logger[_0x7bc0('0x14')](_0x7bc0('0x1d'),_0x5168d7,_0x7bc0('0x1e'));return _0xc6653e['next']();}var _0x13f3e3={'ContactId':this[_0x7bc0('0x1f')]['id'],'sentAt':moment()[_0x7bc0('0x20')](_0x7bc0('0x21')),'direction':_0x7bc0('0x22')};if(this[_0x7bc0('0x10')]===_0x7bc0('0x11')){_0x13f3e3[_0x7bc0('0x12')]=utils[_0x7bc0('0x23')](_0x60e8a3[0x2],this);}else{_0x13f3e3[_0x7bc0('0x12')]=utils[_0x7bc0('0x23')](_0x60e8a3[0x1],this);}if(this[_0x7bc0('0x24')]){_0x13f3e3['to']=this['message']['from']||'';if(this[_0x7bc0('0x10')]===_0x7bc0('0x11')&&_0x60e8a3[0x1]==='1'){_0x13f3e3['cc']=this[_0x7bc0('0x24')]['cc']||'';}_0x13f3e3[_0x7bc0('0x25')]=this[_0x7bc0('0x24')]['to']||'';_0x13f3e3[_0x7bc0('0x26')]=this['message']['phone']||'';_0x13f3e3[_0x7bc0('0x27')]=!![];if(this[_0x7bc0('0x24')][_0x7bc0('0x28')]){_0x13f3e3[_0x7bc0('0x28')]='';_0x13f3e3[_0x7bc0('0x28')]+=_['startsWith'](this['message'][_0x7bc0('0x28')],_0x7bc0('0x29'))?'':_0x7bc0('0x2a');_0x13f3e3[_0x7bc0('0x28')]+=this['message'][_0x7bc0('0x28')];}}if(this[_0x7bc0('0x10')]===_0x7bc0('0x2b')){_0x13f3e3[_0x7bc0('0x2c')]=this[_0x7bc0('0x2d')]['id'];}else{_0x13f3e3[_[_0x7bc0('0x2e')](this[_0x7bc0('0x10')])+_0x7bc0('0x2f')]=this[_0x7bc0('0x2d')]['id'];}_0x13f3e3[_[_0x7bc0('0x2e')](this['channel'])+_0x7bc0('0x30')]=this[_0x7bc0('0x19')]['id'];var _0x559791=this[_0x7bc0('0x19')];if(rpc[this[_0x7bc0('0x10')]+_0x7bc0('0x31')]){if(this[_0x7bc0('0x10')]===_0x7bc0('0x11')){_0x13f3e3['inReplyTo']=this[_0x7bc0('0x24')][_0x7bc0('0x32')];_0x13f3e3[_0x7bc0('0x33')]=_0x7bc0('0x34')+_[_0x7bc0('0x35')](_0x13f3e3[_0x7bc0('0x12')],_0x7bc0('0x36'),_0x7bc0('0x37'))+_0x7bc0('0x38');_0x13f3e3['headers']={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0x7bc0('0x39'),'Precedence':_0x7bc0('0x3a')};return mailRpc['sendMailMessage'](this['account'][_0x7bc0('0x3b')],_0x13f3e3)[_0x7bc0('0x3c')](function(_0x282bc2){logger['info'](_0x7bc0('0x3d'),_0x5168d7);_0x13f3e3[_0x7bc0('0x32')]=_0x282bc2['message'][_0x7bc0('0x32')];return rpc[_0x2772cc+_0x7bc0('0x31')]['create'](_0x13f3e3);})[_0x7bc0('0x3c')](function(_0x4b71ea){logger['info'](_0x7bc0('0x15'),_0x5168d7,JSON[_0x7bc0('0x3e')](_0x4b71ea));})[_0x7bc0('0x3f')](function(_0x3bb265){logger['error']('[RPC][%s][AUTOREPLY]\x20%s',_0x5168d7,JSON[_0x7bc0('0x3e')](_0x3bb265));})[_0x7bc0('0x40')](function(){Promise[_0x7bc0('0x41')]()[_0x7bc0('0x3c')](function(){if(_0x60e8a3[0x0]!=='2'||_0x559791[_0x7bc0('0x1c')])return;return rpc[_0x2772cc+'Interaction'][_0x7bc0('0x42')](_0x559791['id'],{'autoreplyExecuted':!![]})[_0x7bc0('0x3c')](function(_0x1e1911){logger[_0x7bc0('0x14')](_0x7bc0('0x1d'),_0x5168d7,JSON[_0x7bc0('0x3e')](_0x1e1911));})[_0x7bc0('0x3f')](function(_0x36e8c2){logger['error'](_0x7bc0('0x43'),_0x5168d7,JSON[_0x7bc0('0x3e')](_0x36e8c2));});})[_0x7bc0('0x3c')](function(){_0xc6653e[_0x7bc0('0x17')]();});});}else{return rpc[this[_0x7bc0('0x10')]+_0x7bc0('0x31')][_0x7bc0('0x44')](_0x13f3e3)[_0x7bc0('0x3c')](function(){logger[_0x7bc0('0x14')](_0x7bc0('0x15'),_0x5168d7,_0x13f3e3[_0x7bc0('0x12')]);})[_0x7bc0('0x3f')](function(_0x405dac){logger['error']('[%s][AUTOREPLY]\x20%s',_0x5168d7,JSON['stringify'](_0x405dac));})['finally'](function(){Promise[_0x7bc0('0x41')]()[_0x7bc0('0x3c')](function(){if(_0x60e8a3[0x0]!=='2'||_0x559791[_0x7bc0('0x1c')])return;return rpc[_0x2772cc+'Interaction'][_0x7bc0('0x42')](_0x559791['id'],{'autoreplyExecuted':!![]})['then'](function(_0x5d0879){logger[_0x7bc0('0x14')](_0x7bc0('0x1d'),_0x5168d7,JSON[_0x7bc0('0x3e')](_0x5d0879));})[_0x7bc0('0x3f')](function(_0x79ad15){logger['error'](_0x7bc0('0x43'),_0x5168d7,JSON[_0x7bc0('0x3e')](_0x79ad15));});})[_0x7bc0('0x3c')](function(){_0xc6653e['next']();});});}}}catch(_0x526bbd){logger['error'](_0x7bc0('0x15'),_0x5168d7,JSON[_0x7bc0('0x3e')](_0x526bbd));_0xc6653e[_0x7bc0('0x45')]();}};};
\ No newline at end of file
index a80e6ef..51ad875 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a2c=['../../rpc/whatsappInteraction','[%s][CLOSE]\x20reason\x20%s','YYYY-MM-DD\x20HH:mm:ss','channel','Interaction','update','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','[%s][CLOSE]\x20%s','stringify','finally','stop','error','moment','../../../../config/logger','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction'];(function(_0x1436d8,_0x5135aa){var _0x252c31=function(_0x51599c){while(--_0x51599c){_0x1436d8['push'](_0x1436d8['shift']());}};_0x252c31(++_0x5135aa);}(_0x3a2c,0x1dd));var _0xc3a2=function(_0x5c30eb,_0x57caff){_0x5c30eb=_0x5c30eb-0x0;var _0xa12b83=_0x3a2c[_0x5c30eb];return _0xa12b83;};'use strict';var moment=require(_0xc3a2('0x0'));var logger=require(_0xc3a2('0x1'))(_0xc3a2('0x2'));var rpc={'chatInteraction':require(_0xc3a2('0x3')),'openchannelInteraction':require(_0xc3a2('0x4')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0xc3a2('0x5')),'faxInteraction':require(_0xc3a2('0x6')),'whatsappInteraction':require(_0xc3a2('0x7'))};exports['consequence']=function(_0x3ad554,_0x27a3fd,_0x55157e,_0x1e7879){return function(_0x14bd47){try{logger['info'](_0xc3a2('0x8'),_0x3ad554,_0x27a3fd[0x0]);var _0x328666={'closed':0x1,'closedAt':moment()['format'](_0xc3a2('0x9')),'closeReason':'system','disposition':_0x27a3fd[0x0]};if(rpc[_0x1e7879[_0xc3a2('0xa')]+_0xc3a2('0xb')]){rpc[_0x1e7879[_0xc3a2('0xa')]+_0xc3a2('0xb')][_0xc3a2('0xc')](_0x1e7879[_0xc3a2('0xd')]['id'],_0x328666)[_0xc3a2('0xe')](function(_0x1019cc){logger['info'](_0xc3a2('0xf'),_0x3ad554,_0x1e7879[_0xc3a2('0xd')]['id']);})[_0xc3a2('0x10')](function(_0x5f4208){logger['error'](_0xc3a2('0x11'),_0x3ad554,JSON[_0xc3a2('0x12')](_0x5f4208));})[_0xc3a2('0x13')](function(){_0x14bd47[_0xc3a2('0x14')]();});}}catch(_0x744391){logger[_0xc3a2('0x15')](_0xc3a2('0x11'),_0x3ad554,JSON[_0xc3a2('0x12')](_0x744391));_0x14bd47[_0xc3a2('0x14')]();}};};
\ No newline at end of file
+var _0x5b9c=['stop','moment','../../../../config/logger','routing','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','info','format','system','channel','Interaction','update','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','error','[%s][CLOSE]\x20%s','finally'];(function(_0xf2628e,_0x521bf7){var _0x13863a=function(_0x2b04ab){while(--_0x2b04ab){_0xf2628e['push'](_0xf2628e['shift']());}};_0x13863a(++_0x521bf7);}(_0x5b9c,0x112));var _0xc5b9=function(_0x2f9589,_0x1732d3){_0x2f9589=_0x2f9589-0x0;var _0x3e16b1=_0x5b9c[_0x2f9589];return _0x3e16b1;};'use strict';var moment=require(_0xc5b9('0x0'));var logger=require(_0xc5b9('0x1'))(_0xc5b9('0x2'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xc5b9('0x3')),'smsInteraction':require(_0xc5b9('0x4')),'mailInteraction':require(_0xc5b9('0x5')),'faxInteraction':require(_0xc5b9('0x6')),'whatsappInteraction':require(_0xc5b9('0x7'))};exports['consequence']=function(_0x3bbea0,_0x1999a,_0x2acb31,_0x7f8686){return function(_0x2de752){try{logger[_0xc5b9('0x8')]('[%s][CLOSE]\x20reason\x20%s',_0x3bbea0,_0x1999a[0x0]);var _0x52ec15={'closed':0x1,'closedAt':moment()[_0xc5b9('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':_0xc5b9('0xa'),'disposition':_0x1999a[0x0]};if(rpc[_0x7f8686[_0xc5b9('0xb')]+_0xc5b9('0xc')]){rpc[_0x7f8686[_0xc5b9('0xb')]+_0xc5b9('0xc')][_0xc5b9('0xd')](_0x7f8686[_0xc5b9('0xe')]['id'],_0x52ec15)[_0xc5b9('0xf')](function(_0x983b8a){logger[_0xc5b9('0x8')](_0xc5b9('0x10'),_0x3bbea0,_0x7f8686[_0xc5b9('0xe')]['id']);})['catch'](function(_0x566e35){logger[_0xc5b9('0x11')](_0xc5b9('0x12'),_0x3bbea0,JSON['stringify'](_0x566e35));})[_0xc5b9('0x13')](function(){_0x2de752[_0xc5b9('0x14')]();});}}catch(_0x2c0610){logger['error'](_0xc5b9('0x12'),_0x3bbea0,JSON['stringify'](_0x2c0610));_0x2de752[_0xc5b9('0x14')]();}};};
\ No newline at end of file
index f3cf01c..9db5eb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4dc=['[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','fulfillment','speech','providerName','dialogflow','result','metadata','endConversation','next','catch','lodash','moment','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','isNil','interaction','UserId','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','upperFirst','account','InteractionId','created','body','getMustacheRender','Message','create','then','info','error','stringify','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop'];(function(_0x3b832d,_0x264b1c){var _0x1d4c58=function(_0x5ba14b){while(--_0x5ba14b){_0x3b832d['push'](_0x3b832d['shift']());}};_0x1d4c58(++_0x264b1c);}(_0xa4dc,0x16a));var _0xca4d=function(_0x42bdad,_0x12836c){_0x42bdad=_0x42bdad-0x0;var _0x122626=_0xa4dc[_0x42bdad];return _0x122626;};'use strict';var _=require(_0xca4d('0x0'));var moment=require(_0xca4d('0x1'));var apiai=require('apiai-promise');var md5=require('md5');var utils=require(_0xca4d('0x2'));var logger=require(_0xca4d('0x3'))(_0xca4d('0x4'));var rpc={'chatMessage':require(_0xca4d('0x5')),'openchannelMessage':require(_0xca4d('0x6')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xca4d('0x7')),'faxMessage':require(_0xca4d('0x8')),'whatsappMessage':require(_0xca4d('0x9'))};exports['consequence']=function(_0x299f58,_0x5e3284){return function(_0x35b21a){try{if(!_[_0xca4d('0xa')](this[_0xca4d('0xb')][_0xca4d('0xc')])){logger['info'](_0xca4d('0xd'),_0x299f58,_0xca4d('0xe'));return _0x35b21a['next']();}var _0x2374c9={'ContactId':this['contact']['id'],'sentAt':moment()[_0xca4d('0xf')](_0xca4d('0x10')),'direction':_0xca4d('0x11')};if(this[_0xca4d('0x12')]===_0xca4d('0x13')||this[_0xca4d('0x12')]===_0xca4d('0x14')){_0x2374c9[_0xca4d('0x15')]=this['interaction'][_0xca4d('0x15')];}var _0x50c8d8=this[_0xca4d('0x12')];if(_0x50c8d8===_0xca4d('0x16')){_0x2374c9[_0xca4d('0x17')]=this['account']['id'];}else{_0x2374c9[_[_0xca4d('0x18')](_0x50c8d8)+'AccountId']=this[_0xca4d('0x19')]['id'];}_0x2374c9[_[_0xca4d('0x18')](_0x50c8d8)+_0xca4d('0x1a')]=this[_0xca4d('0xb')]['id'];if(this[_0xca4d('0xb')][_0xca4d('0x1b')]){var _0x341c54=_0x5e3284[0x2];if(!_['isEmpty'](_0x341c54)){_0x2374c9[_0xca4d('0x1c')]=utils[_0xca4d('0x1d')](_0x341c54,this);return rpc[_0x50c8d8+_0xca4d('0x1e')][_0xca4d('0x1f')](_0x2374c9)[_0xca4d('0x20')](function(_0x395319){logger[_0xca4d('0x21')](_0xca4d('0xd'),_0x299f58,_0x2374c9[_0xca4d('0x1c')]);})['catch'](function(_0x4a4e71){logger[_0xca4d('0x22')]('[%s][DIALOGFLOW]\x20%s',_0x299f58,JSON[_0xca4d('0x23')](_0x4a4e71));})['finally'](function(){logger[_0xca4d('0x21')](_0xca4d('0x24'),_0x299f58);_0x35b21a[_0xca4d('0x25')]();});}else{logger[_0xca4d('0x21')](_0xca4d('0x26'),_0x299f58);_0x35b21a['stop']();}}else{var _0x58e346=this;var _0xe29bfc=apiai(_0x5e3284[0x0],{'language':_0x5e3284[0x1]||'en'});return _0xe29bfc[_0xca4d('0x27')](this[_0xca4d('0x28')][_0xca4d('0x1c')],{'sessionId':md5(this['interaction']['id'])})[_0xca4d('0x20')](function(_0x4d7f1a){_0x58e346[_0xca4d('0x1c')]['dialogflow']=_0x4d7f1a;_0x2374c9[_0xca4d('0x1c')]=_0x4d7f1a['result'][_0xca4d('0x29')][_0xca4d('0x2a')];_0x2374c9[_0xca4d('0x2b')]=_0xca4d('0x2c');_0x2374c9['providerResponse']=JSON[_0xca4d('0x23')](_0x4d7f1a);return rpc[_0x50c8d8+_0xca4d('0x1e')][_0xca4d('0x1f')](_0x2374c9)[_0xca4d('0x20')](function(_0x2e9ad4){logger[_0xca4d('0x21')](_0xca4d('0xd'),_0x299f58,_0x2374c9[_0xca4d('0x1c')]);if(_0x4d7f1a[_0xca4d('0x2d')][_0xca4d('0x2e')][_0xca4d('0x2f')]){_0x35b21a[_0xca4d('0x30')]();}else{_0x35b21a['stop']();}})['catch'](function(_0xcc6dd5){logger[_0xca4d('0x22')]('[%s][DIALOGFLOW]\x20%s',_0x299f58,JSON[_0xca4d('0x23')](_0xcc6dd5));_0x35b21a['next']();});})[_0xca4d('0x31')](function(_0x46eed6){logger['error'](_0xca4d('0xd'),_0x299f58,_0x46eed6[_0xca4d('0x28')]);_0x35b21a[_0xca4d('0x30')]();});}}catch(_0x10549c){logger['error'](_0xca4d('0xd'),_0x299f58,JSON[_0xca4d('0x23')](_0x10549c));_0x35b21a[_0xca4d('0x25')]();}};};
\ No newline at end of file
+var _0x236d=['chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','Message','create','catch','error','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','dialogflow','body','result','speech','providerName','providerResponse','then','metadata','endConversation','message','lodash','moment','md5','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','info','[%s][DIALOGFLOW]\x20%s','next','contact','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone'];(function(_0xb1e756,_0x245e6c){var _0x314550=function(_0x5c8c88){while(--_0x5c8c88){_0xb1e756['push'](_0xb1e756['shift']());}};_0x314550(++_0x245e6c);}(_0x236d,0x7e));var _0xd236=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x236d[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xd236('0x0'));var moment=require(_0xd236('0x1'));var apiai=require('apiai-promise');var md5=require(_0xd236('0x2'));var utils=require('./utils');var logger=require(_0xd236('0x3'))(_0xd236('0x4'));var rpc={'chatMessage':require(_0xd236('0x5')),'openchannelMessage':require(_0xd236('0x6')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xd236('0x7')),'whatsappMessage':require(_0xd236('0x8'))};exports[_0xd236('0x9')]=function(_0x1aedc6,_0x58c59e){return function(_0x54ac9c){try{if(!_[_0xd236('0xa')](this[_0xd236('0xb')]['UserId'])){logger[_0xd236('0xc')](_0xd236('0xd'),_0x1aedc6,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x54ac9c[_0xd236('0xe')]();}var _0x29ba1d={'ContactId':this[_0xd236('0xf')]['id'],'sentAt':moment()['format'](_0xd236('0x10')),'direction':_0xd236('0x11')};if(this[_0xd236('0x12')]==='sms'||this[_0xd236('0x12')]===_0xd236('0x13')){_0x29ba1d[_0xd236('0x14')]=this[_0xd236('0xb')][_0xd236('0x14')];}var _0x224469=this[_0xd236('0x12')];if(_0x224469===_0xd236('0x15')){_0x29ba1d[_0xd236('0x16')]=this[_0xd236('0x17')]['id'];}else{_0x29ba1d[_[_0xd236('0x18')](_0x224469)+_0xd236('0x19')]=this[_0xd236('0x17')]['id'];}_0x29ba1d[_[_0xd236('0x18')](_0x224469)+_0xd236('0x1a')]=this[_0xd236('0xb')]['id'];if(this[_0xd236('0xb')][_0xd236('0x1b')]){var _0x24ce6e=_0x58c59e[0x2];if(!_[_0xd236('0x1c')](_0x24ce6e)){_0x29ba1d['body']=utils['getMustacheRender'](_0x24ce6e,this);return rpc[_0x224469+_0xd236('0x1d')][_0xd236('0x1e')](_0x29ba1d)['then'](function(_0x11c6ec){logger[_0xd236('0xc')](_0xd236('0xd'),_0x1aedc6,_0x29ba1d['body']);})[_0xd236('0x1f')](function(_0x1b6aaa){logger[_0xd236('0x20')]('[%s][DIALOGFLOW]\x20%s',_0x1aedc6,JSON[_0xd236('0x21')](_0x1b6aaa));})[_0xd236('0x22')](function(){logger[_0xd236('0xc')](_0xd236('0x23'),_0x1aedc6);_0x54ac9c[_0xd236('0x24')]();});}else{logger['info'](_0xd236('0x25'),_0x1aedc6);_0x54ac9c[_0xd236('0x24')]();}}else{var _0x1e4ddb=this;var _0x3d1e4e=apiai(_0x58c59e[0x0],{'language':_0x58c59e[0x1]||'en'});return _0x3d1e4e[_0xd236('0x26')](this['message']['body'],{'sessionId':md5(this[_0xd236('0xb')]['id'])})['then'](function(_0x22924d){_0x1e4ddb['body'][_0xd236('0x27')]=_0x22924d;_0x29ba1d[_0xd236('0x28')]=_0x22924d[_0xd236('0x29')]['fulfillment'][_0xd236('0x2a')];_0x29ba1d[_0xd236('0x2b')]=_0xd236('0x27');_0x29ba1d[_0xd236('0x2c')]=JSON[_0xd236('0x21')](_0x22924d);return rpc[_0x224469+_0xd236('0x1d')][_0xd236('0x1e')](_0x29ba1d)[_0xd236('0x2d')](function(_0x2cbb03){logger[_0xd236('0xc')](_0xd236('0xd'),_0x1aedc6,_0x29ba1d[_0xd236('0x28')]);if(_0x22924d[_0xd236('0x29')][_0xd236('0x2e')][_0xd236('0x2f')]){_0x54ac9c[_0xd236('0xe')]();}else{_0x54ac9c[_0xd236('0x24')]();}})[_0xd236('0x1f')](function(_0x463fc8){logger[_0xd236('0x20')](_0xd236('0xd'),_0x1aedc6,JSON[_0xd236('0x21')](_0x463fc8));_0x54ac9c[_0xd236('0xe')]();});})[_0xd236('0x1f')](function(_0xdd34a4){logger[_0xd236('0x20')](_0xd236('0xd'),_0x1aedc6,_0xdd34a4[_0xd236('0x30')]);_0x54ac9c[_0xd236('0xe')]();});}}catch(_0x52a556){logger[_0xd236('0x20')]('[%s][DIALOGFLOW]\x20%s',_0x1aedc6,JSON[_0xd236('0x21')](_0x52a556));_0x54ac9c[_0xd236('0x24')]();}};};
\ No newline at end of file
index 0ae8640..05a893a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc98d=['AccountId','account','InteractionId','created','isEmpty','Message','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','detectIntent','then','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','action','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','name','DIALOGFLOWV2_INTENTDISPLAYNAME','DIALOGFLOWV2_ISFALLBACKINTENT','intent','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','providerName','fulfillmentText','push','next','message','lodash','dialogflow','md5','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','clone','body','create','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','consequence','isNil','interaction','UserId','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','upperFirst'];(function(_0x1ea46d,_0x2170b5){var _0x132db5=function(_0xf12c){while(--_0xf12c){_0x1ea46d['push'](_0x1ea46d['shift']());}};_0x132db5(++_0x2170b5);}(_0xc98d,0xbe));var _0xdc98=function(_0xdbd4f7,_0x4e3bdd){_0xdbd4f7=_0xdbd4f7-0x0;var _0x5c3f9d=_0xc98d[_0xdbd4f7];return _0x5c3f9d;};'use strict';var _=require(_0xdc98('0x0'));var dialogflow=require(_0xdc98('0x1'));var md5=require(_0xdc98('0x2'));var moment=require(_0xdc98('0x3'));var Promise=require(_0xdc98('0x4'));var logger=require(_0xdc98('0x5'))(_0xdc98('0x6'));var utils=require(_0xdc98('0x7'));var rpc={'chatMessage':require(_0xdc98('0x8')),'openchannelMessage':require(_0xdc98('0x9')),'mailMessage':require(_0xdc98('0xa')),'smsMessage':require(_0xdc98('0xb')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xdc98('0xc'))};function createMessage(_0x3b2bbe,_0x51912b,_0x37d4d1,_0x1825ca){return new Promise(function(_0xf3b43c,_0x56e17e){var _0x4dccfb=_[_0xdc98('0xd')](_0x37d4d1);_0x4dccfb[_0xdc98('0xe')]=_0x1825ca;return rpc[_0x51912b+'Message'][_0xdc98('0xf')](_0x4dccfb)['then'](function(){logger[_0xdc98('0x10')](_0xdc98('0x11'),_0x3b2bbe,_0x4dccfb[_0xdc98('0xe')]);_0xf3b43c();})[_0xdc98('0x12')](function(_0x1d8654){logger[_0xdc98('0x13')]('[%s][DIALOGFLOWV2]\x20%s',_0x3b2bbe,JSON[_0xdc98('0x14')](_0x1d8654));_0x56e17e(_0x1d8654);});});}exports[_0xdc98('0x15')]=function(_0x4d43ac,_0x537d6f){return function(_0x513fbd){try{if(!_[_0xdc98('0x16')](this[_0xdc98('0x17')][_0xdc98('0x18')])){logger[_0xdc98('0x10')](_0xdc98('0x11'),_0x4d43ac,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x513fbd['next']();}var _0x5aaa63={'ContactId':this['contact']['id'],'sentAt':moment()[_0xdc98('0x19')](_0xdc98('0x1a')),'direction':_0xdc98('0x1b')};if(this[_0xdc98('0x1c')]===_0xdc98('0x1d')||this['channel']===_0xdc98('0x1e')){_0x5aaa63['phone']=this[_0xdc98('0x17')][_0xdc98('0x1f')];}var _0x19d3a6=this['channel'];if(_0x19d3a6===_0xdc98('0x20')){_0x5aaa63[_0xdc98('0x21')]=this['account']['id'];}else{_0x5aaa63[_[_0xdc98('0x22')](_0x19d3a6)+_0xdc98('0x23')]=this[_0xdc98('0x24')]['id'];}_0x5aaa63[_[_0xdc98('0x22')](_0x19d3a6)+_0xdc98('0x25')]=this[_0xdc98('0x17')]['id'];if(this[_0xdc98('0x17')][_0xdc98('0x26')]){var _0x58154b=_0x537d6f[0x4];if(!_[_0xdc98('0x27')](_0x58154b)){_0x5aaa63[_0xdc98('0xe')]=utils['getMustacheRender'](_0x58154b,this);return rpc[_0x19d3a6+_0xdc98('0x28')][_0xdc98('0xf')](_0x5aaa63)['then'](function(_0x387e04){logger[_0xdc98('0x10')](_0xdc98('0x11'),_0x4d43ac,_0x5aaa63[_0xdc98('0xe')]);})[_0xdc98('0x12')](function(_0x221b5b){logger['error'](_0xdc98('0x11'),_0x4d43ac,JSON[_0xdc98('0x14')](_0x221b5b));})['finally'](function(){logger[_0xdc98('0x10')](_0xdc98('0x29'),_0x4d43ac);_0x513fbd[_0xdc98('0x2a')]();});}else{logger[_0xdc98('0x10')](_0xdc98('0x2b'),_0x4d43ac);_0x513fbd[_0xdc98('0x2a')]();}}else{var _0x14d6a3=this;var _0xa7e961=_0x537d6f[0x2][_0xdc98('0x2c')](/\\n/g,'\x0a');var _0xe03e0={'credentials':{'private_key':_0xa7e961,'client_email':_0x537d6f[0x1]}};var _0x472342=new dialogflow[(_0xdc98('0x2d'))](_0xe03e0);var _0x300f4f=_0x472342[_0xdc98('0x2e')](_0x537d6f[0x0],md5(_0x14d6a3[_0xdc98('0x17')]['id']));var _0x1113c7={'session':_0x300f4f,'queryInput':{'text':{'text':_0x14d6a3['message']['body'],'languageCode':_0x537d6f[0x3]||'en'}}};return _0x472342[_0xdc98('0x2f')](_0x1113c7)[_0xdc98('0x30')](function(_0x4d0d0e){if(_0x4d0d0e&&_0x4d0d0e[_0xdc98('0x31')]){_0x14d6a3[_0xdc98('0xe')][_0xdc98('0x32')]=_0x4d0d0e;var _0x1617e5=_0x4d0d0e[0x0];var _0x234c45=_0x1617e5[_0xdc98('0x33')]['diagnosticInfo']&&_0x1617e5[_0xdc98('0x33')][_0xdc98('0x34')][_0xdc98('0x35')]?_0x1617e5[_0xdc98('0x33')][_0xdc98('0x34')][_0xdc98('0x35')][_0xdc98('0x36')][_0xdc98('0x37')]:![];_0x14d6a3[_0xdc98('0xe')]['DIALOGFLOWV2_ACTION']=_0x1617e5[_0xdc98('0x33')][_0xdc98('0x38')];_0x14d6a3[_0xdc98('0xe')]['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT']=_0x1617e5[_0xdc98('0x33')][_0xdc98('0x39')];_0x14d6a3[_0xdc98('0xe')][_0xdc98('0x3a')]=_0x1617e5[_0xdc98('0x33')][_0xdc98('0x34')]&&_0x1617e5[_0xdc98('0x33')][_0xdc98('0x34')][_0xdc98('0x35')]?_0x1617e5[_0xdc98('0x33')][_0xdc98('0x34')][_0xdc98('0x35')][_0xdc98('0x36')]['boolValue']:![];_0x14d6a3[_0xdc98('0xe')][_0xdc98('0x3b')]=_0x1617e5['queryResult']['intent'][_0xdc98('0x3c')];_0x14d6a3[_0xdc98('0xe')][_0xdc98('0x3d')]=_0x1617e5[_0xdc98('0x33')]['intent']['displayName'];_0x14d6a3[_0xdc98('0xe')][_0xdc98('0x3e')]=_0x1617e5[_0xdc98('0x33')][_0xdc98('0x3f')][_0xdc98('0x40')];_0x14d6a3[_0xdc98('0xe')][_0xdc98('0x41')]=_0x1617e5['queryResult'][_0xdc98('0x42')];_0x14d6a3[_0xdc98('0xe')][_0xdc98('0x43')]=_0x1617e5['queryResult'][_0xdc98('0x44')];_0x14d6a3[_0xdc98('0xe')][_0xdc98('0x45')]=_0x1617e5[_0xdc98('0x33')]['intentDetectionConfidence'];_0x5aaa63[_0xdc98('0x46')]='dialogflowV2';_0x5aaa63['providerResponse']=JSON[_0xdc98('0x14')](_0x4d0d0e);var _0x4e666e=[];for(var _0x22cbd4=0x0;_0x22cbd4<_0x4d0d0e[_0xdc98('0x31')];_0x22cbd4++){var _0x389fdf=_0x4d0d0e[_0x22cbd4];if(_0x389fdf&&_0x389fdf[_0xdc98('0x33')]&&_0x389fdf[_0xdc98('0x33')][_0xdc98('0x47')]){_0x4e666e[_0xdc98('0x48')](createMessage(_0x4d43ac,_0x19d3a6,_0x5aaa63,_0x389fdf[_0xdc98('0x33')][_0xdc98('0x47')]));}}return Promise['all'](_0x4e666e)[_0xdc98('0x30')](function(){if(_0x234c45){_0x513fbd['next']();}else{_0x513fbd[_0xdc98('0x2a')]();}})[_0xdc98('0x12')](function(_0x503136){logger[_0xdc98('0x13')](_0xdc98('0x11'),_0x4d43ac,JSON[_0xdc98('0x14')](_0x503136));_0x513fbd[_0xdc98('0x49')]();});}})['catch'](function(_0x23194b){logger['error'](_0xdc98('0x11'),_0x4d43ac,_0x23194b[_0xdc98('0x4a')]);_0x513fbd[_0xdc98('0x49')]();});}}catch(_0x3cc27e){logger[_0xdc98('0x13')]('[%s][DIALOGFLOWV2]\x20%s',_0x4d43ac,JSON[_0xdc98('0x14')](_0x3cc27e));_0x513fbd[_0xdc98('0x2a')]();}};};
\ No newline at end of file
+var _0xf518=['moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','Message','create','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','consequence','isNil','interaction','UserId','info','next','contact','YYYY-MM-DD\x20HH:mm:ss','out','sms','channel','whatsapp','phone','ChatWebsiteId','account','upperFirst','AccountId','created','isEmpty','getMustacheRender','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','message','length','queryResult','diagnosticInfo','fields','end_conversation','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','boolValue','DIALOGFLOWV2_INTENTNAME','DIALOGFLOWV2_INTENTDISPLAYNAME','DIALOGFLOWV2_ISFALLBACKINTENT','intent','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','dialogflowV2','providerResponse','fulfillmentText','push','all','then','dialogflow'];(function(_0x2b974d,_0x401910){var _0x20cf67=function(_0x46d24b){while(--_0x46d24b){_0x2b974d['push'](_0x2b974d['shift']());}};_0x20cf67(++_0x401910);}(_0xf518,0xd4));var _0x8f51=function(_0x532d78,_0x25b6a8){_0x532d78=_0x532d78-0x0;var _0x5990c4=_0xf518[_0x532d78];return _0x5990c4;};'use strict';var _=require('lodash');var dialogflow=require(_0x8f51('0x0'));var md5=require('md5');var moment=require(_0x8f51('0x1'));var Promise=require(_0x8f51('0x2'));var logger=require(_0x8f51('0x3'))(_0x8f51('0x4'));var utils=require(_0x8f51('0x5'));var rpc={'chatMessage':require(_0x8f51('0x6')),'openchannelMessage':require(_0x8f51('0x7')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x8f51('0x8')),'faxMessage':require(_0x8f51('0x9')),'whatsappMessage':require(_0x8f51('0xa'))};function createMessage(_0x3bd4e0,_0x49cfd9,_0x5ad58c,_0x373c3f){return new Promise(function(_0xe4617,_0x2d1b26){var _0x40050f=_[_0x8f51('0xb')](_0x5ad58c);_0x40050f[_0x8f51('0xc')]=_0x373c3f;return rpc[_0x49cfd9+_0x8f51('0xd')][_0x8f51('0xe')](_0x40050f)['then'](function(){logger['info'](_0x8f51('0xf'),_0x3bd4e0,_0x40050f['body']);_0xe4617();})[_0x8f51('0x10')](function(_0x441324){logger[_0x8f51('0x11')](_0x8f51('0xf'),_0x3bd4e0,JSON[_0x8f51('0x12')](_0x441324));_0x2d1b26(_0x441324);});});}exports[_0x8f51('0x13')]=function(_0x3db835,_0x27ae94){return function(_0x2df5cf){try{if(!_[_0x8f51('0x14')](this[_0x8f51('0x15')][_0x8f51('0x16')])){logger[_0x8f51('0x17')](_0x8f51('0xf'),_0x3db835,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x2df5cf[_0x8f51('0x18')]();}var _0x11f1bd={'ContactId':this[_0x8f51('0x19')]['id'],'sentAt':moment()['format'](_0x8f51('0x1a')),'direction':_0x8f51('0x1b')};if(this['channel']===_0x8f51('0x1c')||this[_0x8f51('0x1d')]===_0x8f51('0x1e')){_0x11f1bd[_0x8f51('0x1f')]=this['interaction'][_0x8f51('0x1f')];}var _0x33e9b0=this['channel'];if(_0x33e9b0==='chat'){_0x11f1bd[_0x8f51('0x20')]=this[_0x8f51('0x21')]['id'];}else{_0x11f1bd[_[_0x8f51('0x22')](_0x33e9b0)+_0x8f51('0x23')]=this[_0x8f51('0x21')]['id'];}_0x11f1bd[_[_0x8f51('0x22')](_0x33e9b0)+'InteractionId']=this[_0x8f51('0x15')]['id'];if(this[_0x8f51('0x15')][_0x8f51('0x24')]){var _0x12f11a=_0x27ae94[0x4];if(!_[_0x8f51('0x25')](_0x12f11a)){_0x11f1bd[_0x8f51('0xc')]=utils[_0x8f51('0x26')](_0x12f11a,this);return rpc[_0x33e9b0+_0x8f51('0xd')][_0x8f51('0xe')](_0x11f1bd)['then'](function(_0x341ed0){logger['info'](_0x8f51('0xf'),_0x3db835,_0x11f1bd['body']);})[_0x8f51('0x10')](function(_0x4d46db){logger[_0x8f51('0x11')](_0x8f51('0xf'),_0x3db835,JSON[_0x8f51('0x12')](_0x4d46db));})[_0x8f51('0x27')](function(){logger[_0x8f51('0x17')](_0x8f51('0x28'),_0x3db835);_0x2df5cf[_0x8f51('0x29')]();});}else{logger[_0x8f51('0x17')](_0x8f51('0x2a'),_0x3db835);_0x2df5cf[_0x8f51('0x29')]();}}else{var _0x3dbd76=this;var _0x1be2d6=_0x27ae94[0x2][_0x8f51('0x2b')](/\\n/g,'\x0a');var _0x44b1a={'credentials':{'private_key':_0x1be2d6,'client_email':_0x27ae94[0x1]}};var _0x47db03=new dialogflow['SessionsClient'](_0x44b1a);var _0x38c680=_0x47db03['sessionPath'](_0x27ae94[0x0],md5(_0x3dbd76[_0x8f51('0x15')]['id']));var _0x237976={'session':_0x38c680,'queryInput':{'text':{'text':_0x3dbd76[_0x8f51('0x2c')]['body'],'languageCode':_0x27ae94[0x3]||'en'}}};return _0x47db03['detectIntent'](_0x237976)['then'](function(_0x42bc0a){if(_0x42bc0a&&_0x42bc0a[_0x8f51('0x2d')]){_0x3dbd76[_0x8f51('0xc')]['dialogflowV2']=_0x42bc0a;var _0x54a6f9=_0x42bc0a[0x0];var _0x6f1f4e=_0x54a6f9[_0x8f51('0x2e')][_0x8f51('0x2f')]&&_0x54a6f9['queryResult'][_0x8f51('0x2f')][_0x8f51('0x30')]?_0x54a6f9[_0x8f51('0x2e')][_0x8f51('0x2f')][_0x8f51('0x30')][_0x8f51('0x31')]['boolValue']:![];_0x3dbd76[_0x8f51('0xc')]['DIALOGFLOWV2_ACTION']=_0x54a6f9[_0x8f51('0x2e')]['action'];_0x3dbd76[_0x8f51('0xc')][_0x8f51('0x32')]=_0x54a6f9['queryResult'][_0x8f51('0x33')];_0x3dbd76['body'][_0x8f51('0x34')]=_0x54a6f9[_0x8f51('0x2e')][_0x8f51('0x2f')]&&_0x54a6f9[_0x8f51('0x2e')][_0x8f51('0x2f')][_0x8f51('0x30')]?_0x54a6f9['queryResult']['diagnosticInfo'][_0x8f51('0x30')][_0x8f51('0x31')][_0x8f51('0x35')]:![];_0x3dbd76[_0x8f51('0xc')][_0x8f51('0x36')]=_0x54a6f9[_0x8f51('0x2e')]['intent']['name'];_0x3dbd76[_0x8f51('0xc')][_0x8f51('0x37')]=_0x54a6f9[_0x8f51('0x2e')]['intent']['displayName'];_0x3dbd76['body'][_0x8f51('0x38')]=_0x54a6f9['queryResult'][_0x8f51('0x39')][_0x8f51('0x3a')];_0x3dbd76[_0x8f51('0xc')][_0x8f51('0x3b')]=_0x54a6f9[_0x8f51('0x2e')][_0x8f51('0x3c')];_0x3dbd76[_0x8f51('0xc')]['DIALOGFLOWV2_QUERYTEXT']=_0x54a6f9['queryResult'][_0x8f51('0x3d')];_0x3dbd76[_0x8f51('0xc')][_0x8f51('0x3e')]=_0x54a6f9[_0x8f51('0x2e')][_0x8f51('0x3f')];_0x11f1bd[_0x8f51('0x40')]=_0x8f51('0x41');_0x11f1bd[_0x8f51('0x42')]=JSON[_0x8f51('0x12')](_0x42bc0a);var _0x13ef8a=[];for(var _0xde0bc8=0x0;_0xde0bc8<_0x42bc0a[_0x8f51('0x2d')];_0xde0bc8++){var _0x5b457f=_0x42bc0a[_0xde0bc8];if(_0x5b457f&&_0x5b457f[_0x8f51('0x2e')]&&_0x5b457f[_0x8f51('0x2e')][_0x8f51('0x43')]){_0x13ef8a[_0x8f51('0x44')](createMessage(_0x3db835,_0x33e9b0,_0x11f1bd,_0x5b457f[_0x8f51('0x2e')]['fulfillmentText']));}}return Promise[_0x8f51('0x45')](_0x13ef8a)[_0x8f51('0x46')](function(){if(_0x6f1f4e){_0x2df5cf[_0x8f51('0x18')]();}else{_0x2df5cf[_0x8f51('0x29')]();}})[_0x8f51('0x10')](function(_0x171a2d){logger[_0x8f51('0x11')](_0x8f51('0xf'),_0x3db835,JSON[_0x8f51('0x12')](_0x171a2d));_0x2df5cf[_0x8f51('0x18')]();});}})[_0x8f51('0x10')](function(_0x4cc9c1){logger['error'](_0x8f51('0xf'),_0x3db835,_0x4cc9c1['message']);_0x2df5cf['next']();});}}catch(_0x11a0ea){logger[_0x8f51('0x11')](_0x8f51('0xf'),_0x3db835,JSON['stringify'](_0x11a0ea));_0x2df5cf[_0x8f51('0x29')]();}};};
\ No newline at end of file
index 745efc3..3213f31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7d0=['message','join','stop','condition','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','findIndex','rules','next','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','stringify','validate','lodash','html-to-text','routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','priority\x20true\x20is\x20a\x20number','number','priority\x20false\x20is\x20a\x20number','fromString','getMustacheRender','length','error','[%s][GOTOIF]\x20%s','map'];(function(_0x237c0d,_0x43907e){var _0x419886=function(_0xf65ce8){while(--_0xf65ce8){_0x237c0d['push'](_0x237c0d['shift']());}};_0x419886(++_0x43907e);}(_0xc7d0,0x186));var _0x0c7d=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xc7d0[_0x122ef9];return _0x42fba0;};'use strict';var schema=require(_0x0c7d('0x0'));var _=require(_0x0c7d('0x1'));var htmlToText=require(_0x0c7d('0x2'));var utils=require('./utils');var logger=require('../../../../config/logger')(_0x0c7d('0x3'));var gotoif=schema({'condition':{'type':_0x0c7d('0x4'),'required':!![],'message':_0x0c7d('0x5')},'priorityTrue':{'type':'number','message':_0x0c7d('0x6')},'priorityFalse':{'type':_0x0c7d('0x7'),'message':_0x0c7d('0x8')}});exports['consequence']=function(_0x5d4a95,_0xfa50f1){return function(_0x34e375){try{var _0x540688={'condition':htmlToText[_0x0c7d('0x9')](utils[_0x0c7d('0xa')](_0xfa50f1[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0xfa50f1[0x1],'priorityFalse':_0xfa50f1[0x2]};var _0x4e62a6=gotoif[_0x0c7d('0x0')](_0x540688,{'typecast':!![]});if(_0x4e62a6[_0x0c7d('0xb')]){logger[_0x0c7d('0xc')](_0x0c7d('0xd'),_0x5d4a95,_[_0x0c7d('0xe')](_0x4e62a6,_0x0c7d('0xf'))[_0x0c7d('0x10')](',\x20'));_0x34e375[_0x0c7d('0x11')]();}else{try{var _0x4cd806=eval('('+_0x540688[_0x0c7d('0x12')]+')');var _0x34d7ad=_0x4cd806?_0x540688['priorityTrue']:_0x540688[_0x0c7d('0x13')];logger[_0x0c7d('0x14')](_0x0c7d('0x15'),_0x5d4a95,_0x540688[_0x0c7d('0x12')],_0x4cd806,_0x34d7ad||'next');if(_0x34d7ad){var _0xdda30d=_[_0x0c7d('0x16')](_0x34e375[_0x0c7d('0x17')](),{'p':_0x34d7ad});if(_0xdda30d>=0x0){logger[_0x0c7d('0x14')]('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x5d4a95,_0x34d7ad||_0x0c7d('0x18'),_0xdda30d);_0x34e375[_0x0c7d('0x18')](_0xdda30d);}else{logger['info'](_0x0c7d('0x19'),_0x5d4a95,_0x34d7ad||_0x0c7d('0x18'));_0x34e375[_0x0c7d('0x11')]();}}else{_0x34e375[_0x0c7d('0x18')]();}}catch(_0xc2d06a){logger[_0x0c7d('0xc')]('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x5d4a95,_0xc2d06a['message']);_0x34e375['stop']();}}}catch(_0x2ba0d2){logger['error'](_0x0c7d('0xd'),_0x5d4a95,JSON[_0x0c7d('0x1a')](_0x2ba0d2));_0x34e375[_0x0c7d('0x11')]();}};};
\ No newline at end of file
+var _0x4853=['length','error','[%s][GOTOIF]\x20%s','map','message','join','priorityTrue','priorityFalse','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','condition','next','rules','info','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','stop','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','validate','html-to-text','../../../../config/logger','routing','string','priority\x20false\x20is\x20a\x20number','fromString'];(function(_0x573c7b,_0xb87efd){var _0x333d8b=function(_0xfd4e9c){while(--_0xfd4e9c){_0x573c7b['push'](_0x573c7b['shift']());}};_0x333d8b(++_0xb87efd);}(_0x4853,0xd1));var _0x3485=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x4853[_0xa464c9];return _0x3d73c4;};'use strict';var schema=require(_0x3485('0x0'));var _=require('lodash');var htmlToText=require(_0x3485('0x1'));var utils=require('./utils');var logger=require(_0x3485('0x2'))(_0x3485('0x3'));var gotoif=schema({'condition':{'type':_0x3485('0x4'),'required':!![],'message':'condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'priorityTrue':{'type':'number','message':'priority\x20true\x20is\x20a\x20number'},'priorityFalse':{'type':'number','message':_0x3485('0x5')}});exports['consequence']=function(_0x5c017d,_0x4d6ba7){return function(_0xe76c64){try{var _0x43a038={'condition':htmlToText[_0x3485('0x6')](utils['getMustacheRender'](_0x4d6ba7[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x4d6ba7[0x1],'priorityFalse':_0x4d6ba7[0x2]};var _0x27f825=gotoif['validate'](_0x43a038,{'typecast':!![]});if(_0x27f825[_0x3485('0x7')]){logger[_0x3485('0x8')](_0x3485('0x9'),_0x5c017d,_[_0x3485('0xa')](_0x27f825,_0x3485('0xb'))[_0x3485('0xc')](',\x20'));_0xe76c64['stop']();}else{try{var _0x577302=eval('('+_0x43a038['condition']+')');var _0x1ac356=_0x577302?_0x43a038[_0x3485('0xd')]:_0x43a038[_0x3485('0xe')];logger['info'](_0x3485('0xf'),_0x5c017d,_0x43a038[_0x3485('0x10')],_0x577302,_0x1ac356||_0x3485('0x11'));if(_0x1ac356){var _0x2d43ad=_['findIndex'](_0xe76c64[_0x3485('0x12')](),{'p':_0x1ac356});if(_0x2d43ad>=0x0){logger[_0x3485('0x13')](_0x3485('0x14'),_0x5c017d,_0x1ac356||'next',_0x2d43ad);_0xe76c64[_0x3485('0x11')](_0x2d43ad);}else{logger[_0x3485('0x13')]('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x5c017d,_0x1ac356||'next');_0xe76c64[_0x3485('0x15')]();}}else{_0xe76c64['next']();}}catch(_0x55a00e){logger[_0x3485('0x8')](_0x3485('0x16'),_0x5c017d,_0x55a00e[_0x3485('0xb')]);_0xe76c64[_0x3485('0x15')]();}}}catch(_0x2afb0e){logger['error']('[%s][GOTOIF]\x20%s',_0x5c017d,JSON[_0x3485('0x17')](_0x2afb0e));_0xe76c64[_0x3485('0x15')]();}};};
\ No newline at end of file
index 090a688..805df8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28bd=['findIndex','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stop','stringify','validate','../../../../config/logger','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','error','[%s][GOTOP]\x20%s','map','message','join','info','[%s][GOTOP]\x20priority\x20%s','priority'];(function(_0x30c95b,_0x5beb11){var _0xc5810c=function(_0x3b8809){while(--_0x3b8809){_0x30c95b['push'](_0x30c95b['shift']());}};_0xc5810c(++_0x5beb11);}(_0x28bd,0x1a8));var _0xd28b=function(_0x190dde,_0x5bb90f){_0x190dde=_0x190dde-0x0;var _0x2a3638=_0x28bd[_0x190dde];return _0x2a3638;};'use strict';var schema=require(_0xd28b('0x0'));var _=require('lodash');var logger=require(_0xd28b('0x1'))(_0xd28b('0x2'));var gotop=schema({'priority':{'type':_0xd28b('0x3'),'required':!![],'message':_0xd28b('0x4')}});exports['consequence']=function(_0x2e3e68,_0xec9bd){return function(_0x3b9fd8){try{var _0x2fd1cc={'priority':_0xec9bd[0x0]};var _0x2397eb=gotop[_0xd28b('0x0')](_0x2fd1cc,{'typecast':!![]});if(_0x2397eb['length']){logger[_0xd28b('0x5')](_0xd28b('0x6'),_0x2e3e68,_[_0xd28b('0x7')](_0x2397eb,_0xd28b('0x8'))[_0xd28b('0x9')](',\x20'));_0x3b9fd8['stop']();}else{logger[_0xd28b('0xa')](_0xd28b('0xb'),_0x2e3e68,_0x2fd1cc[_0xd28b('0xc')]);if(_0x2fd1cc[_0xd28b('0xc')]){var _0x51033a=_[_0xd28b('0xd')](_0x3b9fd8['rules'](),{'p':_0x2fd1cc['priority']});if(_0x51033a>=0x0){logger[_0xd28b('0xa')](_0xd28b('0xe'),_0x2e3e68,_0x2fd1cc['priority']||_0xd28b('0xf'),_0x51033a);_0x3b9fd8[_0xd28b('0xf')](_0x51033a);}else{logger[_0xd28b('0xa')](_0xd28b('0x10'),_0x2e3e68,_0x2fd1cc['priority']||_0xd28b('0xf'));_0x3b9fd8[_0xd28b('0x11')]();}}else{_0x3b9fd8[_0xd28b('0xf')]();}}}catch(_0x38b447){logger['error'](_0xd28b('0x6'),_0x2e3e68,JSON[_0xd28b('0x12')](_0x38b447));_0x3b9fd8[_0xd28b('0x11')]();}};};
\ No newline at end of file
+var _0xaedc=['[%s][GOTOP]\x20%s','map','message','join','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','validate','lodash','../../../../config/logger','consequence','length','error'];(function(_0x3eb2ec,_0x3a0c1a){var _0x111921=function(_0x3f20c5){while(--_0x3f20c5){_0x3eb2ec['push'](_0x3eb2ec['shift']());}};_0x111921(++_0x3a0c1a);}(_0xaedc,0xcb));var _0xcaed=function(_0x28cf0e,_0x4c7ae5){_0x28cf0e=_0x28cf0e-0x0;var _0x43991f=_0xaedc[_0x28cf0e];return _0x43991f;};'use strict';var schema=require(_0xcaed('0x0'));var _=require(_0xcaed('0x1'));var logger=require(_0xcaed('0x2'))('routing');var gotop=schema({'priority':{'type':'number','required':!![],'message':'priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'}});exports[_0xcaed('0x3')]=function(_0x2667da,_0x2f0b){return function(_0x7e1b38){try{var _0x232bd1={'priority':_0x2f0b[0x0]};var _0x5154cd=gotop[_0xcaed('0x0')](_0x232bd1,{'typecast':!![]});if(_0x5154cd[_0xcaed('0x4')]){logger[_0xcaed('0x5')](_0xcaed('0x6'),_0x2667da,_[_0xcaed('0x7')](_0x5154cd,_0xcaed('0x8'))[_0xcaed('0x9')](',\x20'));_0x7e1b38[_0xcaed('0xa')]();}else{logger[_0xcaed('0xb')](_0xcaed('0xc'),_0x2667da,_0x232bd1[_0xcaed('0xd')]);if(_0x232bd1[_0xcaed('0xd')]){var _0x31f5c4=_[_0xcaed('0xe')](_0x7e1b38['rules'](),{'p':_0x232bd1['priority']});if(_0x31f5c4>=0x0){logger['info'](_0xcaed('0xf'),_0x2667da,_0x232bd1[_0xcaed('0xd')]||_0xcaed('0x10'),_0x31f5c4);_0x7e1b38[_0xcaed('0x10')](_0x31f5c4);}else{logger[_0xcaed('0xb')](_0xcaed('0x11'),_0x2667da,_0x232bd1[_0xcaed('0xd')]||_0xcaed('0x10'));_0x7e1b38['stop']();}}else{_0x7e1b38[_0xcaed('0x10')]();}}}catch(_0x9ae0b){logger[_0xcaed('0x5')]('[%s][GOTOP]\x20%s',_0x2667da,JSON[_0xcaed('0x12')](_0x9ae0b));_0x7e1b38[_0xcaed('0xa')]();}};};
\ No newline at end of file
index 1d48d10..091156b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbde6=['consequence','getMustacheRender','contact','channel','chat','ChatWebsiteId','account','AccountId','upperFirst','InteractionId','interaction','Message','then','[%s][MESSAGE]\x20%s','body','error','stringify','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage'];(function(_0xa10f,_0x167c42){var _0x200a64=function(_0x273673){while(--_0x273673){_0xa10f['push'](_0xa10f['shift']());}};_0x200a64(++_0x167c42);}(_0xbde6,0xae));var _0x6bde=function(_0xdb2392,_0x54fc7c){_0xdb2392=_0xdb2392-0x0;var _0x7476c7=_0xbde6[_0xdb2392];return _0x7476c7;};'use strict';var _=require(_0x6bde('0x0'));var utils=require(_0x6bde('0x1'));var logger=require(_0x6bde('0x2'))(_0x6bde('0x3'));var rpc={'chatMessage':require(_0x6bde('0x4')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x6bde('0x5')),'faxMessage':require(_0x6bde('0x6')),'whatsappMessage':require(_0x6bde('0x7'))};exports[_0x6bde('0x8')]=function(_0x4dae4f,_0x2c8b96){return function(_0x30ef67){try{var _0x35f040={'body':utils[_0x6bde('0x9')](_0x2c8b96[0x0],this),'ContactId':this[_0x6bde('0xa')]['id']};if(this[_0x6bde('0xb')]===_0x6bde('0xc')){_0x35f040[_0x6bde('0xd')]=this[_0x6bde('0xe')]['id'];}else{_0x35f040[_['upperFirst'](this[_0x6bde('0xb')])+_0x6bde('0xf')]=this[_0x6bde('0xe')]['id'];}_0x35f040[_[_0x6bde('0x10')](this['channel'])+_0x6bde('0x11')]=this[_0x6bde('0x12')]['id'];if(rpc[this[_0x6bde('0xb')]+_0x6bde('0x13')]){return rpc[this[_0x6bde('0xb')]+_0x6bde('0x13')]['create'](_0x35f040)[_0x6bde('0x14')](function(_0x34cad8){logger['info'](_0x6bde('0x15'),_0x4dae4f,_0x35f040[_0x6bde('0x16')]);_0x30ef67['next']();})['catch'](function(_0x537c2f){logger[_0x6bde('0x17')]('[%s][MESSAGE]\x20%s',_0x4dae4f,JSON[_0x6bde('0x18')](_0x537c2f));_0x30ef67[_0x6bde('0x19')]();});}}catch(_0x492fac){logger[_0x6bde('0x17')]('[%s][MESSAGE]\x20%s',_0x4dae4f,JSON[_0x6bde('0x18')](_0x492fac));_0x30ef67[_0x6bde('0x19')]();}};};
\ No newline at end of file
+var _0xb5c6=['../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','channel','chat','ChatWebsiteId','account','upperFirst','InteractionId','interaction','Message','info','body','next','catch','error','[%s][MESSAGE]\x20%s','stringify','./utils'];(function(_0x193fc6,_0x5e0f10){var _0x81628f=function(_0x440b2f){while(--_0x440b2f){_0x193fc6['push'](_0x193fc6['shift']());}};_0x81628f(++_0x5e0f10);}(_0xb5c6,0xe5));var _0x6b5c=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xb5c6[_0x501510];return _0x1e6ee5;};'use strict';var _=require('lodash');var utils=require(_0x6b5c('0x0'));var logger=require(_0x6b5c('0x1'))(_0x6b5c('0x2'));var rpc={'chatMessage':require(_0x6b5c('0x3')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x6b5c('0x4'))};exports[_0x6b5c('0x5')]=function(_0x51c068,_0x36904a){return function(_0x34daed){try{var _0x4c93ca={'body':utils[_0x6b5c('0x6')](_0x36904a[0x0],this),'ContactId':this[_0x6b5c('0x7')]['id']};if(this[_0x6b5c('0x8')]===_0x6b5c('0x9')){_0x4c93ca[_0x6b5c('0xa')]=this[_0x6b5c('0xb')]['id'];}else{_0x4c93ca[_[_0x6b5c('0xc')](this[_0x6b5c('0x8')])+'AccountId']=this[_0x6b5c('0xb')]['id'];}_0x4c93ca[_['upperFirst'](this[_0x6b5c('0x8')])+_0x6b5c('0xd')]=this[_0x6b5c('0xe')]['id'];if(rpc[this[_0x6b5c('0x8')]+_0x6b5c('0xf')]){return rpc[this[_0x6b5c('0x8')]+_0x6b5c('0xf')]['create'](_0x4c93ca)['then'](function(_0x106f0a){logger[_0x6b5c('0x10')]('[%s][MESSAGE]\x20%s',_0x51c068,_0x4c93ca[_0x6b5c('0x11')]);_0x34daed[_0x6b5c('0x12')]();})[_0x6b5c('0x13')](function(_0x18e91f){logger[_0x6b5c('0x14')](_0x6b5c('0x15'),_0x51c068,JSON[_0x6b5c('0x16')](_0x18e91f));_0x34daed['stop']();});}}catch(_0xee6d65){logger['error'](_0x6b5c('0x15'),_0x51c068,JSON[_0x6b5c('0x16')](_0xee6d65));_0x34daed['stop']();}};};
\ No newline at end of file
index a95e65c..f1c3160 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3433=['info','[%s][NOOP]\x20%s','getMustacheRender','next','stringify','./utils','routing'];(function(_0x5e6c35,_0x1e3ecf){var _0x30cee9=function(_0x21f335){while(--_0x21f335){_0x5e6c35['push'](_0x5e6c35['shift']());}};_0x30cee9(++_0x1e3ecf);}(_0x3433,0x1be));var _0x3343=function(_0x2892da,_0x191a40){_0x2892da=_0x2892da-0x0;var _0x28cff2=_0x3433[_0x2892da];return _0x28cff2;};'use strict';var utils=require(_0x3343('0x0'));var logger=require('../../../../config/logger')(_0x3343('0x1'));exports['consequence']=function(_0x1ab65a,_0x1127eb){return function(_0x5380ff){try{logger[_0x3343('0x2')](_0x3343('0x3'),_0x1ab65a,utils[_0x3343('0x4')](_0x1127eb[0x0],this));_0x5380ff[_0x3343('0x5')]();}catch(_0x1a9552){logger['error']('[%s][NOOP]\x20%s',_0x1ab65a,JSON[_0x3343('0x6')](_0x1a9552));_0x5380ff['stop']();}};};
\ No newline at end of file
+var _0xe22f=['getMustacheRender','error','stringify','./utils','../../../../config/logger','routing','consequence','info','[%s][NOOP]\x20%s'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0xe22f,0x1e0));var _0xfe22=function(_0x2d59d5,_0xac0502){_0x2d59d5=_0x2d59d5-0x0;var _0x56accb=_0xe22f[_0x2d59d5];return _0x56accb;};'use strict';var utils=require(_0xfe22('0x0'));var logger=require(_0xfe22('0x1'))(_0xfe22('0x2'));exports[_0xfe22('0x3')]=function(_0x376424,_0x30ebc5){return function(_0x291c22){try{logger[_0xfe22('0x4')](_0xfe22('0x5'),_0x376424,utils[_0xfe22('0x6')](_0x30ebc5[0x0],this));_0x291c22['next']();}catch(_0x3c2521){logger[_0xfe22('0x7')](_0xfe22('0x5'),_0x376424,JSON[_0xfe22('0x8')](_0x3c2521));_0x291c22['stop']();}};};
\ No newline at end of file
index a70aa27..93e8d82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0cfa=['channel','QueueId','InteractionId','interaction','upperFirst','MessageId','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','error','info','message','update','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','join','find','Queues','createQueue','atimeout','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','rules','stop','complete','[%s][QUEUE]\x20APPLICATION\x20END','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','validate','lodash','util','seq-queue','moment','ioredis','../../../../config/logger','./strategy','redis','defaults','localhost','socket.io-emitter','queue_id','account','queue','from','joinAt','clone','pick','format','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','save','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','string','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list'];(function(_0x30760d,_0x51ed94){var _0xfb049e=function(_0x324420){while(--_0x324420){_0x30760d['push'](_0x30760d['shift']());}};_0xfb049e(++_0x51ed94);}(_0x0cfa,0x73));var _0xa0cf=function(_0x58ecec,_0x5520bc){_0x58ecec=_0x58ecec-0x0;var _0xc7e901=_0x0cfa[_0x58ecec];return _0xc7e901;};'use strict';var schema=require(_0xa0cf('0x0'));var _=require(_0xa0cf('0x1'));var util=require(_0xa0cf('0x2'));var seqqueue=require(_0xa0cf('0x3'));var moment=require(_0xa0cf('0x4'));var Redis=require(_0xa0cf('0x5'));var config=require('../../../../config/environment');var logger=require(_0xa0cf('0x6'))('routing');var strategy=require(_0xa0cf('0x7'));config[_0xa0cf('0x8')]=_[_0xa0cf('0x9')](config[_0xa0cf('0x8')],{'host':_0xa0cf('0xa'),'port':0x18eb});var io=require(_0xa0cf('0xb'))(new Redis(config[_0xa0cf('0x8')]));var attributes=['id',_0xa0cf('0xc'),_0xa0cf('0xd'),_0xa0cf('0xe'),_0xa0cf('0xf'),_0xa0cf('0x10')];function emit(_0x1ba1b7,_0x369815,_0xdab099){io['to'](_0x1ba1b7)['emit'](_0x369815,_0xdab099);}function emitChannelQueueInteraction(_0x21c01f,_0x2b2424,_0x514c6c,_0x444138,_0x434795,_0x37510,_0x1cdca3,_0x42eee2){var _0x1d0a69=_[_0xa0cf('0x11')](_0x514c6c);_0x1d0a69[_0xa0cf('0xc')]=_0x42eee2;_0x1d0a69[_0xa0cf('0xe')]=_0x2b2424;_0x1d0a69[_0xa0cf('0xd')]=_0x444138;_0x1d0a69['id']=_0x434795;if(_0x37510){_0x1cdca3[util['format']('%sQueuesWaitingInteractions',_0x21c01f)][_0x434795]=_[_0xa0cf('0x12')](_0x1d0a69,attributes);}else{delete _0x1cdca3[util[_0xa0cf('0x13')](_0xa0cf('0x14'),_0x21c01f)][_0x434795];}emit(util[_0xa0cf('0x13')](_0xa0cf('0x15'),_0x21c01f,_0x2b2424),util[_0xa0cf('0x13')](_0xa0cf('0x16'),_0x21c01f,_0x37510?_0xa0cf('0x17'):'remove'),_[_0xa0cf('0x12')](_0x1d0a69,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require(_0xa0cf('0x18')),'smsQueueReport':require(_0xa0cf('0x19')),'faxQueueReport':require(_0xa0cf('0x1a')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':_0xa0cf('0x1b'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xa0cf('0x1c'),'message':_0xa0cf('0x1d')}});function startRouting(_0xfdce8b,_0xdcfbe3,_0x213a6a,_0x1837b3){if(_0xfdce8b&&_0xdcfbe3&&_0x213a6a){_0xdcfbe3[_0xa0cf('0x1e')]+=0x1;var _0x3fa556={'uniqueid':_0xfdce8b,'from':_0x213a6a['body']?_0x213a6a[_0xa0cf('0x1f')]['from']:'','joinAt':moment()[_0xa0cf('0x13')](_0xa0cf('0x20')),'ContactId':_0x213a6a[_0xa0cf('0x21')]?_0x213a6a[_0xa0cf('0x21')]['id']:null,'ListId':_0x213a6a[_0xa0cf('0x22')]?_0x213a6a[_0xa0cf('0x22')]['id']:null};_0x3fa556[_['upperFirst'](_0x213a6a[_0xa0cf('0x23')])+_0xa0cf('0x24')]=_0xdcfbe3['id']||null;_0x3fa556[_['upperFirst'](_0x213a6a[_0xa0cf('0x23')])+_0xa0cf('0x25')]=_0x213a6a[_0xa0cf('0x26')]?_0x213a6a[_0xa0cf('0x26')]['id']:null;_0x3fa556[_[_0xa0cf('0x27')](_0x213a6a['channel'])+_0xa0cf('0x28')]=_0x213a6a['message']?_0x213a6a['message']['id']:null;_0x3fa556[_[_0xa0cf('0x27')](_0x213a6a[_0xa0cf('0x23')])+(_0x213a6a[_0xa0cf('0x23')]!=='chat'?'AccountId':'WebsiteId')]=_0x213a6a[_0xa0cf('0xd')]?_0x213a6a[_0xa0cf('0xd')]['id']:null;logger['info'](util[_0xa0cf('0x13')](_0xa0cf('0x29'),_0xfdce8b,_0xdcfbe3['name']));emitChannelQueueInteraction(_0x213a6a['channel'],_0xdcfbe3[_0xa0cf('0x2a')],_0x3fa556,_0x213a6a['account'][_0xa0cf('0x2a')],_0x213a6a['message']['id'],!![],_0x1837b3,_0xdcfbe3['id']);if(rpc[_0x213a6a['channel']+_0xa0cf('0x2b')]){return rpc[_0x213a6a[_0xa0cf('0x23')]+_0xa0cf('0x2b')][_0xa0cf('0x2c')](_0x3fa556)[_0xa0cf('0x2d')](function(_0x3cfde8){logger[_0xa0cf('0x2e')]('create\x20queue\x20report');});}}}function stopRouting(_0x291ab0,_0x49b23b,_0x40764f,_0x9b8f78){if(_0x291ab0&&_0x49b23b){_0x49b23b['waiting']-=0x1;var _0x109dd7={'leaveAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()[_0xa0cf('0x13')](_0xa0cf('0x20')),'reason':'accepted'};logger[_0xa0cf('0x2f')](util[_0xa0cf('0x13')]('[%s][STOP:QUEUE][NAME:%s]',_0x291ab0,_0x49b23b['name']));emitChannelQueueInteraction(_0x40764f[_0xa0cf('0x23')],_0x49b23b[_0xa0cf('0x2a')],_0x40764f[_0xa0cf('0x1f')],_0x40764f[_0xa0cf('0xd')]['name'],_0x40764f[_0xa0cf('0x30')]['id'],![],_0x9b8f78,_0x49b23b['id']);if(rpc[_0x40764f[_0xa0cf('0x23')]+'QueueReport']){return rpc[_0x40764f['channel']+_0xa0cf('0x2b')][_0xa0cf('0x31')](_0x291ab0,_0x109dd7)[_0xa0cf('0x2d')](function(_0xb35cd0){logger[_0xa0cf('0x2e')](_0xa0cf('0x32'));});}}}function endRouting(_0x41c28e,_0x2763c0,_0x3917c5,_0x125939){if(_0x41c28e&&_0x2763c0){_0x2763c0[_0xa0cf('0x1e')]-=0x1;var _0x58c111={'leaveAt':moment()[_0xa0cf('0x13')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0xa0cf('0x13')](_0xa0cf('0x20')),'reason':_0xa0cf('0x33')};logger[_0xa0cf('0x2f')](util[_0xa0cf('0x13')](_0xa0cf('0x34'),_0x41c28e,_0x2763c0[_0xa0cf('0x2a')]));emitChannelQueueInteraction(_0x3917c5[_0xa0cf('0x23')],_0x2763c0[_0xa0cf('0x2a')],_0x3917c5['body'],_0x3917c5['account'][_0xa0cf('0x2a')],_0x3917c5['message']['id'],![],_0x125939);if(rpc[_0x3917c5[_0xa0cf('0x23')]+'QueueReport']){return rpc[_0x3917c5['channel']+'QueueReport'][_0xa0cf('0x31')](_0x41c28e,_0x58c111)[_0xa0cf('0x2d')](function(_0x4e422f){logger[_0xa0cf('0x2e')]('update\x20queue\x20report');});}}}function handleFindQueue(_0x5cfbd9){return function(_0x191251){return _0x191251['name'][_0xa0cf('0x35')]()===_0x5cfbd9[_0xa0cf('0x35')]();};}exports[_0xa0cf('0x36')]=function(_0x17ffcf,_0x1c862f,_0x4c4380,_0x2cb354){return function(_0x9acc4b){try{var _0x4751b9={'name':_0x1c862f[0x0],'timeout':_0x1c862f[0x1]};var _0x237f51=queue[_0xa0cf('0x0')](_0x4751b9,{'typecast':!![]});if(_0x237f51[_0xa0cf('0x37')]){logger[_0xa0cf('0x2e')](_0xa0cf('0x38'),_0x17ffcf,_['map'](_0x237f51,_0xa0cf('0x30'))[_0xa0cf('0x39')](',\x20'));_0x9acc4b['stop']();}else{var _0x5c2af8=_[_0xa0cf('0x3a')](_0x4c4380[_0x2cb354[_0xa0cf('0x23')]+_0xa0cf('0x3b')],handleFindQueue(_0x4751b9['name']));if(_0x5c2af8){startRouting(_0x17ffcf,_0x5c2af8,_0x2cb354,_0x4c4380);var _0x46b9e2=(_0x5c2af8[_0xa0cf('0x33')]||0xa)*0x3e8;var _0x25ebc8=(_0x4751b9[_0xa0cf('0x33')]||0x14)*0x3e8;var _0x238e88,_0x3603f4;if(_0x46b9e2>_0x25ebc8){_0x25ebc8=_0x46b9e2;}var _0xed74eb=seqqueue[_0xa0cf('0x3c')](_0x46b9e2);_0xed74eb['id']=_0x17ffcf;_0xed74eb[_0xa0cf('0x3d')]=_0x46b9e2;_0xed74eb['qtimeout']=_0x25ebc8;_0xed74eb[_0xa0cf('0x23')]=_0x2cb354[_0xa0cf('0x23')];_0x4c4380['rules'][_0x17ffcf]['on'](_0xa0cf('0x3e'),function(){logger[_0xa0cf('0x2f')](_0xa0cf('0x3f'),_0x17ffcf);stopRouting(_0x17ffcf,_0x5c2af8,_0x2cb354,_0x4c4380);clearTimeout(_0x238e88);_0x238e88=undefined;_0xed74eb[_0xa0cf('0x40')](!![]);if(_0x4c4380[_0xa0cf('0x41')][_0x17ffcf]){delete _0x4c4380[_0xa0cf('0x41')][_0x17ffcf];}_0x9acc4b[_0xa0cf('0x42')]();});_0x4c4380[_0xa0cf('0x41')][_0x17ffcf]['on'](_0xa0cf('0x43'),function(){if(_0x4c4380[_0xa0cf('0x41')][_0x17ffcf]){delete _0x4c4380['rules'][_0x17ffcf];}});_0x238e88=setTimeout(function(){logger[_0xa0cf('0x2f')](_0xa0cf('0x44'),_0x17ffcf);endRouting(_0x17ffcf,_0x5c2af8,_0x2cb354,_0x4c4380);clearTimeout(_0x238e88);_0xed74eb[_0xa0cf('0x40')](!![]);_0x9acc4b['next']();},_0x25ebc8);switch(_0x5c2af8[_0xa0cf('0x45')]){case _0xa0cf('0x46'):strategy[_0xa0cf('0x46')](_0xed74eb,_0x5c2af8,_0x4c4380,_0x2cb354);break;default:strategy[_0xa0cf('0x47')](_0xed74eb,_0x5c2af8,_0x4c4380,_0x2cb354);}}else{logger['error'](_0xa0cf('0x48'),_0x17ffcf,_0x4751b9[_0xa0cf('0x2a')]);_0x9acc4b[_0xa0cf('0x42')]();}}}catch(_0x36fd69){console[_0xa0cf('0x49')](_0x36fd69);logger[_0xa0cf('0x2e')](_0xa0cf('0x38'),_0x17ffcf,_0x36fd69[_0xa0cf('0x4a')]);_0x9acc4b['stop']();}};};
\ No newline at end of file
+var _0xa69a=['consequence','validate','length','[%s][QUEUE]\x20%s','map','join','stop','timeout','createQueue','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','stack','lodash','../../../../config/environment','routing','./strategy','redis','defaults','localhost','socket.io-emitter','queue_id','account','queue','joinAt','format','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','pick','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','waiting','body','from','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','QueueId','interaction','MessageId','message','AccountId','WebsiteId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','error','create\x20queue\x20report','[%s][STOP:QUEUE][NAME:%s]','update\x20queue\x20report','[%s][END:QUEUE][NAME:%s]','update','toLowerCase'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0xa69a,0x1de));var _0xaa69=function(_0x33adbe,_0x2fcc61){_0x33adbe=_0x33adbe-0x0;var _0x1f8a60=_0xa69a[_0x33adbe];return _0x1f8a60;};'use strict';var schema=require('validate');var _=require(_0xaa69('0x0'));var util=require('util');var seqqueue=require('seq-queue');var moment=require('moment');var Redis=require('ioredis');var config=require(_0xaa69('0x1'));var logger=require('../../../../config/logger')(_0xaa69('0x2'));var strategy=require(_0xaa69('0x3'));config[_0xaa69('0x4')]=_[_0xaa69('0x5')](config[_0xaa69('0x4')],{'host':_0xaa69('0x6'),'port':0x18eb});var io=require(_0xaa69('0x7'))(new Redis(config[_0xaa69('0x4')]));var attributes=['id',_0xaa69('0x8'),_0xaa69('0x9'),_0xaa69('0xa'),'from',_0xaa69('0xb')];function emit(_0x7951bf,_0x3092c3,_0x5e9ba3){io['to'](_0x7951bf)['emit'](_0x3092c3,_0x5e9ba3);}function emitChannelQueueInteraction(_0x24f1ab,_0x3ce55a,_0x53b7f7,_0x5f4752,_0x4a883a,_0x3ac569,_0x1ed5c7,_0x205d72){var _0x2933bc=_['clone'](_0x53b7f7);_0x2933bc[_0xaa69('0x8')]=_0x205d72;_0x2933bc[_0xaa69('0xa')]=_0x3ce55a;_0x2933bc[_0xaa69('0x9')]=_0x5f4752;_0x2933bc['id']=_0x4a883a;if(_0x3ac569){_0x1ed5c7[util[_0xaa69('0xc')](_0xaa69('0xd'),_0x24f1ab)][_0x4a883a]=_['pick'](_0x2933bc,attributes);}else{delete _0x1ed5c7[util[_0xaa69('0xc')](_0xaa69('0xd'),_0x24f1ab)][_0x4a883a];}emit(util[_0xaa69('0xc')](_0xaa69('0xe'),_0x24f1ab,_0x3ce55a),util['format'](_0xaa69('0xf'),_0x24f1ab,_0x3ac569?_0xaa69('0x10'):_0xaa69('0x11')),_[_0xaa69('0x12')](_0x2933bc,attributes));}var rpc={'openchannelQueueReport':require(_0xaa69('0x13')),'mailQueueReport':require(_0xaa69('0x14')),'chatQueueReport':require(_0xaa69('0x15')),'smsQueueReport':require(_0xaa69('0x16')),'faxQueueReport':require(_0xaa69('0x17')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':_0xaa69('0x18'),'required':!![],'message':_0xaa69('0x19')},'timeout':{'type':_0xaa69('0x1a'),'message':'timeout\x20is\x20a\x20number'}});function startRouting(_0x304ff2,_0x3b8f77,_0x2ed7e4,_0xdabf58){if(_0x304ff2&&_0x3b8f77&&_0x2ed7e4){_0x3b8f77[_0xaa69('0x1b')]+=0x1;var _0x73489b={'uniqueid':_0x304ff2,'from':_0x2ed7e4[_0xaa69('0x1c')]?_0x2ed7e4['body'][_0xaa69('0x1d')]:'','joinAt':moment()[_0xaa69('0xc')](_0xaa69('0x1e')),'ContactId':_0x2ed7e4['contact']?_0x2ed7e4[_0xaa69('0x1f')]['id']:null,'ListId':_0x2ed7e4[_0xaa69('0x20')]?_0x2ed7e4[_0xaa69('0x20')]['id']:null};_0x73489b[_[_0xaa69('0x21')](_0x2ed7e4[_0xaa69('0x22')])+_0xaa69('0x23')]=_0x3b8f77['id']||null;_0x73489b[_['upperFirst'](_0x2ed7e4[_0xaa69('0x22')])+'InteractionId']=_0x2ed7e4['interaction']?_0x2ed7e4[_0xaa69('0x24')]['id']:null;_0x73489b[_[_0xaa69('0x21')](_0x2ed7e4[_0xaa69('0x22')])+_0xaa69('0x25')]=_0x2ed7e4[_0xaa69('0x26')]?_0x2ed7e4[_0xaa69('0x26')]['id']:null;_0x73489b[_[_0xaa69('0x21')](_0x2ed7e4['channel'])+(_0x2ed7e4[_0xaa69('0x22')]!=='chat'?_0xaa69('0x27'):_0xaa69('0x28'))]=_0x2ed7e4[_0xaa69('0x9')]?_0x2ed7e4[_0xaa69('0x9')]['id']:null;logger[_0xaa69('0x29')](util[_0xaa69('0xc')](_0xaa69('0x2a'),_0x304ff2,_0x3b8f77[_0xaa69('0x2b')]));emitChannelQueueInteraction(_0x2ed7e4[_0xaa69('0x22')],_0x3b8f77[_0xaa69('0x2b')],_0x73489b,_0x2ed7e4[_0xaa69('0x9')]['name'],_0x2ed7e4[_0xaa69('0x26')]['id'],!![],_0xdabf58,_0x3b8f77['id']);if(rpc[_0x2ed7e4[_0xaa69('0x22')]+_0xaa69('0x2c')]){return rpc[_0x2ed7e4[_0xaa69('0x22')]+_0xaa69('0x2c')][_0xaa69('0x2d')](_0x73489b)[_0xaa69('0x2e')](function(_0x1d1881){logger[_0xaa69('0x2f')](_0xaa69('0x30'));});}}}function stopRouting(_0x4423be,_0x884250,_0x325f2a,_0x39dcdd){if(_0x4423be&&_0x884250){_0x884250[_0xaa69('0x1b')]-=0x1;var _0x187c77={'leaveAt':moment()[_0xaa69('0xc')](_0xaa69('0x1e')),'acceptAt':moment()[_0xaa69('0xc')](_0xaa69('0x1e')),'reason':'accepted'};logger[_0xaa69('0x29')](util[_0xaa69('0xc')](_0xaa69('0x31'),_0x4423be,_0x884250['name']));emitChannelQueueInteraction(_0x325f2a[_0xaa69('0x22')],_0x884250[_0xaa69('0x2b')],_0x325f2a[_0xaa69('0x1c')],_0x325f2a[_0xaa69('0x9')][_0xaa69('0x2b')],_0x325f2a[_0xaa69('0x26')]['id'],![],_0x39dcdd,_0x884250['id']);if(rpc[_0x325f2a[_0xaa69('0x22')]+_0xaa69('0x2c')]){return rpc[_0x325f2a[_0xaa69('0x22')]+_0xaa69('0x2c')]['update'](_0x4423be,_0x187c77)['catch'](function(_0x551664){logger[_0xaa69('0x2f')](_0xaa69('0x32'));});}}}function endRouting(_0x5ace82,_0x31326f,_0xe378e2,_0x301472){if(_0x5ace82&&_0x31326f){_0x31326f[_0xaa69('0x1b')]-=0x1;var _0x5075ef={'leaveAt':moment()[_0xaa69('0xc')](_0xaa69('0x1e')),'exitAt':moment()[_0xaa69('0xc')](_0xaa69('0x1e')),'reason':'timeout'};logger['info'](util['format'](_0xaa69('0x33'),_0x5ace82,_0x31326f[_0xaa69('0x2b')]));emitChannelQueueInteraction(_0xe378e2[_0xaa69('0x22')],_0x31326f[_0xaa69('0x2b')],_0xe378e2[_0xaa69('0x1c')],_0xe378e2[_0xaa69('0x9')]['name'],_0xe378e2[_0xaa69('0x26')]['id'],![],_0x301472);if(rpc[_0xe378e2[_0xaa69('0x22')]+_0xaa69('0x2c')]){return rpc[_0xe378e2[_0xaa69('0x22')]+_0xaa69('0x2c')][_0xaa69('0x34')](_0x5ace82,_0x5075ef)[_0xaa69('0x2e')](function(_0x1fe340){logger[_0xaa69('0x2f')](_0xaa69('0x32'));});}}}function handleFindQueue(_0x3f04b3){return function(_0x8c77fd){return _0x8c77fd['name'][_0xaa69('0x35')]()===_0x3f04b3[_0xaa69('0x35')]();};}exports[_0xaa69('0x36')]=function(_0x25a1a4,_0x2af9c2,_0x303337,_0x166b8e){return function(_0x40adae){try{var _0xcd4efc={'name':_0x2af9c2[0x0],'timeout':_0x2af9c2[0x1]};var _0xe21fa7=queue[_0xaa69('0x37')](_0xcd4efc,{'typecast':!![]});if(_0xe21fa7[_0xaa69('0x38')]){logger[_0xaa69('0x2f')](_0xaa69('0x39'),_0x25a1a4,_[_0xaa69('0x3a')](_0xe21fa7,'message')[_0xaa69('0x3b')](',\x20'));_0x40adae[_0xaa69('0x3c')]();}else{var _0x28da69=_['find'](_0x303337[_0x166b8e['channel']+'Queues'],handleFindQueue(_0xcd4efc[_0xaa69('0x2b')]));if(_0x28da69){startRouting(_0x25a1a4,_0x28da69,_0x166b8e,_0x303337);var _0x1216d2=(_0x28da69[_0xaa69('0x3d')]||0xa)*0x3e8;var _0x35b899=(_0xcd4efc[_0xaa69('0x3d')]||0x14)*0x3e8;var _0x4e7814,_0x2be5f1;if(_0x1216d2>_0x35b899){_0x35b899=_0x1216d2;}var _0x504159=seqqueue[_0xaa69('0x3e')](_0x1216d2);_0x504159['id']=_0x25a1a4;_0x504159[_0xaa69('0x3f')]=_0x1216d2;_0x504159[_0xaa69('0x40')]=_0x35b899;_0x504159['channel']=_0x166b8e[_0xaa69('0x22')];_0x303337[_0xaa69('0x41')][_0x25a1a4]['on'](_0xaa69('0x42'),function(){logger['info'](_0xaa69('0x43'),_0x25a1a4);stopRouting(_0x25a1a4,_0x28da69,_0x166b8e,_0x303337);clearTimeout(_0x4e7814);_0x4e7814=undefined;_0x504159[_0xaa69('0x44')](!![]);if(_0x303337[_0xaa69('0x41')][_0x25a1a4]){delete _0x303337[_0xaa69('0x41')][_0x25a1a4];}_0x40adae[_0xaa69('0x3c')]();});_0x303337[_0xaa69('0x41')][_0x25a1a4]['on']('complete',function(){if(_0x303337[_0xaa69('0x41')][_0x25a1a4]){delete _0x303337[_0xaa69('0x41')][_0x25a1a4];}});_0x4e7814=setTimeout(function(){logger[_0xaa69('0x29')](_0xaa69('0x45'),_0x25a1a4);endRouting(_0x25a1a4,_0x28da69,_0x166b8e,_0x303337);clearTimeout(_0x4e7814);_0x504159[_0xaa69('0x44')](!![]);_0x40adae[_0xaa69('0x46')]();},_0x35b899);switch(_0x28da69[_0xaa69('0x47')]){case _0xaa69('0x48'):strategy[_0xaa69('0x48')](_0x504159,_0x28da69,_0x303337,_0x166b8e);break;default:strategy[_0xaa69('0x49')](_0x504159,_0x28da69,_0x303337,_0x166b8e);}}else{logger[_0xaa69('0x2f')](_0xaa69('0x4a'),_0x25a1a4,_0xcd4efc[_0xaa69('0x2b')]);_0x40adae['stop']();}}}catch(_0x1a5df5){console['log'](_0x1a5df5);logger[_0xaa69('0x2f')](_0xaa69('0x39'),_0x25a1a4,_0x1a5df5[_0xaa69('0x4b')]);_0x40adae[_0xaa69('0x3c')]();}};};
\ No newline at end of file
index caed4ba..785472f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3ec=['busy','busyQueue','showNotification','writeLog',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','STOP','uuid','./util','routing','notificationId','squeue','agent','push','bind','handleTimeout','timeout','drained','prototype','handleRun','handleDrained','debug','[%s][AGENT]\x20try\x20with\x20%s','isNil','realtime','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable'];(function(_0x533f9e,_0x288a33){var _0xeacd3a=function(_0x101884){while(--_0x101884){_0x533f9e['push'](_0x533f9e['shift']());}};_0xeacd3a(++_0x288a33);}(_0xa3ec,0x1e9));var _0xca3e=function(_0x394dc2,_0x5e33f1){_0x394dc2=_0x394dc2-0x0;var _0x2067d9=_0xa3ec[_0x394dc2];return _0x2067d9;};'use strict';var _=require('lodash');var uuid=require(_0xca3e('0x0'));var util=require(_0xca3e('0x1'));var logger=require('../../../../../config/logger')(_0xca3e('0x2'));var Agent=function(_0x402dcc,_0xeb4087,_0x4ed8d2,_0x1049d4){this[_0xca3e('0x3')]=uuid['v4']();this[_0xca3e('0x4')]=_0x402dcc;this[_0xca3e('0x5')]=_0xeb4087;this['realtime']=_0x4ed8d2;this[_0xca3e('0x2')]=_0x1049d4;this['squeue'][_0xca3e('0x6')](this['handleRun'][_0xca3e('0x7')](this),this[_0xca3e('0x8')][_0xca3e('0x7')](this));this[_0xca3e('0x4')]['on'](_0xca3e('0x9'),this['handleTimeout'][_0xca3e('0x7')](this));this['squeue']['on'](_0xca3e('0xa'),this['handleDrained']['bind'](this));};Agent[_0xca3e('0xb')]['push']=function(){this['squeue'][_0xca3e('0x6')](this[_0xca3e('0xc')][_0xca3e('0x7')](this),this[_0xca3e('0x8')][_0xca3e('0x7')](this));};Agent[_0xca3e('0xb')][_0xca3e('0xd')]=function(){this[_0xca3e('0x8')](!![]);};Agent[_0xca3e('0xb')]['handleRun']=function(){logger[_0xca3e('0xe')](_0xca3e('0xf'),this[_0xca3e('0x4')]['id'],this['agent']['id']);if(_[_0xca3e('0x10')](this[_0xca3e('0x11')][_0xca3e('0x12')][this[_0xca3e('0x5')]['id']])){logger['debug'](_0xca3e('0x13'),this[_0xca3e('0x4')]['id'],this[_0xca3e('0x5')]['id']);setTimeout(this[_0xca3e('0x6')]['bind'](this),0x3e8);}else{if(this[_0xca3e('0x2')]['forcedOwnership']||util[_0xca3e('0x14')](this[_0xca3e('0x4')]['id'],this[_0xca3e('0x11')][_0xca3e('0x12')][this[_0xca3e('0x5')]['id']],this[_0xca3e('0x4')]['channel'],![])){this[_0xca3e('0x11')][_0xca3e('0x12')][this[_0xca3e('0x5')]['id']][_0xca3e('0x15')]=!![];this['realtime'][_0xca3e('0x12')][this['agent']['id']][_0xca3e('0x16')]=undefined;util[_0xca3e('0x17')](this[_0xca3e('0x3')],this[_0xca3e('0x4')]['id'],this['realtime'][_0xca3e('0x12')][this[_0xca3e('0x5')]['id']],null,this[_0xca3e('0x2')]);util[_0xca3e('0x18')](this['squeue']['id'],this[_0xca3e('0x11')][_0xca3e('0x12')][this[_0xca3e('0x5')]['id']],'RINGING'+(this[_0xca3e('0x2')]['forcedOwnership']?_0xca3e('0x19'):''));}else{logger[_0xca3e('0xe')](_0xca3e('0x1a'),this[_0xca3e('0x4')]['id'],this[_0xca3e('0x5')]['id']);setTimeout(this['push'][_0xca3e('0x7')](this),0x3e8);}}};Agent[_0xca3e('0xb')][_0xca3e('0x8')]=function(_0x3fc8b4){if(_['isNil'](this[_0xca3e('0x11')][_0xca3e('0x12')][this['agent']['id']])){return logger[_0xca3e('0xe')](_0xca3e('0x13'),this[_0xca3e('0x4')]['id'],this[_0xca3e('0x5')]['id']);}else{logger[_0xca3e('0xe')](_0xca3e('0x1b'),this[_0xca3e('0x4')]['id'],this['agent']['id']);util[_0xca3e('0x1c')](this['notificationId'],this[_0xca3e('0x4')]['id'],this[_0xca3e('0x11')][_0xca3e('0x12')][this['agent']['id']],null,this[_0xca3e('0x2')]);this['realtime'][_0xca3e('0x12')][this[_0xca3e('0x5')]['id']][_0xca3e('0x15')]=![];this[_0xca3e('0x11')][_0xca3e('0x12')][this['agent']['id']][_0xca3e('0x16')]=undefined;util[_0xca3e('0x18')](this[_0xca3e('0x4')]['id'],this[_0xca3e('0x11')]['agents'][this['agent']['id']],_0x3fc8b4?_0xca3e('0x1d'):'TIMEOUT');}if(!_0x3fc8b4){setTimeout(this['push']['bind'](this),0x3e8);}};function agent(_0x2e616d,_0x2c08e0,_0x1b6493,_0x6b44c2){return new Agent(_0x2e616d,_0x2c08e0,_0x1b6493,_0x6b44c2);}module['exports']=agent;
\ No newline at end of file
+var _0x7bf0=['./util','../../../../../config/logger','routing','notificationId','agent','realtime','squeue','bind','handleTimeout','timeout','drained','handleDrained','prototype','handleRun','info','[%s][AGENT]\x20try\x20with\x20%s','isNil','forcedOwnership','isAgentAvailable','agents','channel','busy','busyQueue','showNotification','RINGING','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','push','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','STOP','exports','lodash'];(function(_0x2eddb1,_0x5b8f97){var _0x444e5c=function(_0x2ac8c7){while(--_0x2ac8c7){_0x2eddb1['push'](_0x2eddb1['shift']());}};_0x444e5c(++_0x5b8f97);}(_0x7bf0,0xc5));var _0x07bf=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x7bf0[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0x07bf('0x0'));var uuid=require('uuid');var util=require(_0x07bf('0x1'));var logger=require(_0x07bf('0x2'))(_0x07bf('0x3'));var Agent=function(_0x533257,_0x1386cf,_0x22bef2,_0xadcd2f){this[_0x07bf('0x4')]=uuid['v4']();this['squeue']=_0x533257;this[_0x07bf('0x5')]=_0x1386cf;this[_0x07bf('0x6')]=_0x22bef2;this['routing']=_0xadcd2f;this[_0x07bf('0x7')]['push'](this['handleRun'][_0x07bf('0x8')](this),this[_0x07bf('0x9')]['bind'](this));this[_0x07bf('0x7')]['on'](_0x07bf('0xa'),this[_0x07bf('0x9')][_0x07bf('0x8')](this));this[_0x07bf('0x7')]['on'](_0x07bf('0xb'),this[_0x07bf('0xc')]['bind'](this));};Agent[_0x07bf('0xd')]['push']=function(){this[_0x07bf('0x7')]['push'](this[_0x07bf('0xe')][_0x07bf('0x8')](this),this['handleTimeout'][_0x07bf('0x8')](this));};Agent[_0x07bf('0xd')][_0x07bf('0xc')]=function(){this['handleTimeout'](!![]);};Agent[_0x07bf('0xd')][_0x07bf('0xe')]=function(_0x50b514){logger[_0x07bf('0xf')](_0x07bf('0x10'),this[_0x07bf('0x7')]['id'],this[_0x07bf('0x5')]['id']);if(_[_0x07bf('0x11')](this[_0x07bf('0x6')]['agents'][this['agent']['id']])){logger['info']('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x07bf('0x7')]['id'],this[_0x07bf('0x5')]['id']);setTimeout(this['push'][_0x07bf('0x8')](this),0x3e8);}else{if(this['routing'][_0x07bf('0x12')]||util[_0x07bf('0x13')](this[_0x07bf('0x7')]['id'],this[_0x07bf('0x6')][_0x07bf('0x14')][this[_0x07bf('0x5')]['id']],this[_0x07bf('0x7')][_0x07bf('0x15')],![])){this[_0x07bf('0x6')][_0x07bf('0x14')][this['agent']['id']][_0x07bf('0x16')]=!![];this[_0x07bf('0x6')]['agents'][this[_0x07bf('0x5')]['id']][_0x07bf('0x17')]=undefined;util[_0x07bf('0x18')](this['notificationId'],this[_0x07bf('0x7')]['id'],this['realtime'][_0x07bf('0x14')][this[_0x07bf('0x5')]['id']],null,this[_0x07bf('0x3')]);util['writeLog'](this['squeue']['id'],this['realtime']['agents'][this['agent']['id']],_0x07bf('0x19')+(this[_0x07bf('0x3')]['forcedOwnership']?':FORCED':''));}else{logger[_0x07bf('0xf')](_0x07bf('0x1a'),this['squeue']['id'],this[_0x07bf('0x5')]['id']);setTimeout(this[_0x07bf('0x1b')]['bind'](this),0x3e8);}}};Agent[_0x07bf('0xd')][_0x07bf('0x9')]=function(_0x48ea84){if(_[_0x07bf('0x11')](this[_0x07bf('0x6')][_0x07bf('0x14')][this[_0x07bf('0x5')]['id']])){return logger[_0x07bf('0xf')](_0x07bf('0x1c'),this['squeue']['id'],this[_0x07bf('0x5')]['id']);}else{logger[_0x07bf('0xf')](_0x07bf('0x1d'),this[_0x07bf('0x7')]['id'],this[_0x07bf('0x5')]['id']);util[_0x07bf('0x1e')](this[_0x07bf('0x4')],this[_0x07bf('0x7')]['id'],this[_0x07bf('0x6')][_0x07bf('0x14')][this['agent']['id']],null,this[_0x07bf('0x3')]);this[_0x07bf('0x6')][_0x07bf('0x14')][this['agent']['id']][_0x07bf('0x16')]=![];this['realtime'][_0x07bf('0x14')][this[_0x07bf('0x5')]['id']]['busyQueue']=undefined;util['writeLog'](this[_0x07bf('0x7')]['id'],this[_0x07bf('0x6')]['agents'][this[_0x07bf('0x5')]['id']],_0x48ea84?_0x07bf('0x1f'):'TIMEOUT');}if(!_0x48ea84){setTimeout(this['push'][_0x07bf('0x8')](this),0x3e8);}};function agent(_0x367974,_0x4d1f32,_0x5145b7,_0x129b17){return new Agent(_0x367974,_0x4d1f32,_0x5145b7,_0x129b17);}module[_0x07bf('0x20')]=agent;
\ No newline at end of file
index ed4b88b..ff1edde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07c3=['realtime','push','handleRun','bind','handleTimeout','timeout','drained','handleDrained','prototype','isNil','Agents','length','debug','agents','channel','writeLog','busy','busyQueue','name','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue'];(function(_0x3fa2fa,_0x290a7c){var _0x5cbcab=function(_0x3003b7){while(--_0x3003b7){_0x3fa2fa['push'](_0x3fa2fa['shift']());}};_0x5cbcab(++_0x290a7c);}(_0x07c3,0x1bf));var _0x307c=function(_0x4b13ce,_0x339cb0){_0x4b13ce=_0x4b13ce-0x0;var _0x427d4b=_0x07c3[_0x4b13ce];return _0x427d4b;};'use strict';var _=require(_0x307c('0x0'));var uuid=require(_0x307c('0x1'));var util=require(_0x307c('0x2'));var logger=require(_0x307c('0x3'))(_0x307c('0x4'));var Beepall=function(_0x8b0b1c,_0x3b8f6e,_0x186b09,_0x52cf54){this[_0x307c('0x5')]=uuid['v4']();this[_0x307c('0x6')]=_0x8b0b1c;this[_0x307c('0x7')]=_0x3b8f6e;this[_0x307c('0x8')]=_0x186b09;this[_0x307c('0x4')]=_0x52cf54;this[_0x307c('0x6')][_0x307c('0x9')](this[_0x307c('0xa')][_0x307c('0xb')](this),this[_0x307c('0xc')][_0x307c('0xb')](this));this[_0x307c('0x6')]['on'](_0x307c('0xd'),this[_0x307c('0xc')][_0x307c('0xb')](this));this['squeue']['on'](_0x307c('0xe'),this[_0x307c('0xf')][_0x307c('0xb')](this));};Beepall[_0x307c('0x10')]['push']=function(){this['squeue'][_0x307c('0x9')](this['handleRun'][_0x307c('0xb')](this),this[_0x307c('0xc')]['bind'](this));};Beepall[_0x307c('0x10')][_0x307c('0xf')]=function(){this[_0x307c('0xc')](!![]);};Beepall[_0x307c('0x10')][_0x307c('0xa')]=function(){var _0x2ea8c3=!![];if(!_[_0x307c('0x11')](this[_0x307c('0x7')])&&!_[_0x307c('0x11')](this[_0x307c('0x7')][_0x307c('0x12')])&&this[_0x307c('0x7')]['Agents'][_0x307c('0x13')]>0x0){for(var _0x364441=0x0,_0x1aca09;_0x364441<this[_0x307c('0x7')][_0x307c('0x12')][_0x307c('0x13')];_0x364441+=0x1){_0x1aca09=this[_0x307c('0x7')][_0x307c('0x12')][_0x364441]['id'];if(_[_0x307c('0x11')](this['realtime']['agents'][_0x1aca09])){logger[_0x307c('0x14')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x307c('0x6')]['id'],_0x1aca09);}else{if(util['isAgentAvailable'](this['squeue']['id'],this[_0x307c('0x8')][_0x307c('0x15')][_0x1aca09],this['squeue'][_0x307c('0x16')],!![])){_0x2ea8c3=![];util[_0x307c('0x17')](this['squeue']['id'],this[_0x307c('0x8')][_0x307c('0x15')][_0x1aca09],'RINGING');this[_0x307c('0x8')][_0x307c('0x15')][_0x1aca09][_0x307c('0x18')]=!![];this[_0x307c('0x8')][_0x307c('0x15')][_0x1aca09][_0x307c('0x19')]=this[_0x307c('0x7')][_0x307c('0x1a')];util[_0x307c('0x1b')](this[_0x307c('0x5')],this['squeue']['id'],this[_0x307c('0x8')]['agents'][_0x1aca09],this['queue'],this[_0x307c('0x4')]);}}}if(_0x2ea8c3){logger[_0x307c('0x14')](_0x307c('0x1c'),this[_0x307c('0x6')]['id']);setTimeout(this[_0x307c('0x9')][_0x307c('0xb')](this),0x3e8);}}else{logger['debug'](_0x307c('0x1d'),this[_0x307c('0x6')]['id']);setTimeout(this[_0x307c('0x9')]['bind'](this),0x3e8);}};Beepall[_0x307c('0x10')][_0x307c('0xc')]=function(_0xcb6ae6){if(!_[_0x307c('0x11')](this[_0x307c('0x7')])&&!_[_0x307c('0x11')](this['queue'][_0x307c('0x12')])){for(var _0x1e448e=0x0,_0x27dba3;_0x1e448e<this[_0x307c('0x7')][_0x307c('0x12')][_0x307c('0x13')];_0x1e448e+=0x1){_0x27dba3=this[_0x307c('0x7')][_0x307c('0x12')][_0x1e448e]['id'];if(_[_0x307c('0x11')](this['realtime'][_0x307c('0x15')][_0x27dba3])){logger[_0x307c('0x14')](_0x307c('0x1e'),this[_0x307c('0x6')]['id'],_0x27dba3);}else{util[_0x307c('0x1f')](this[_0x307c('0x5')],this[_0x307c('0x6')]['id'],this[_0x307c('0x8')][_0x307c('0x15')][_0x27dba3],this[_0x307c('0x7')],this[_0x307c('0x4')]);util['writeLog'](this[_0x307c('0x6')]['id'],this[_0x307c('0x8')]['agents'][_0x27dba3],_0xcb6ae6?_0x307c('0x20'):_0x307c('0x21'));this['realtime'][_0x307c('0x15')][_0x27dba3]['busy']=![];this[_0x307c('0x8')][_0x307c('0x15')][_0x27dba3][_0x307c('0x19')]=undefined;}}}if(!_0xcb6ae6){setTimeout(this[_0x307c('0x9')][_0x307c('0xb')](this),0x3e8);}};function beepall(_0x20447b,_0x345562,_0x4a9adb,_0x267df0){return new Beepall(_0x20447b,_0x345562,_0x4a9adb,_0x267df0);}module[_0x307c('0x22')]=beepall;
\ No newline at end of file
+var _0x9f7a=['./util','../../../../../config/logger','notificationId','squeue','routing','bind','timeout','handleDrained','prototype','push','handleRun','handleTimeout','isNil','queue','Agents','length','realtime','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','agents','busyQueue','name','hideNotification','busy','lodash','uuid'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x9f7a,0xf1));var _0xa9f7=function(_0x45b034,_0x3a57dd){_0x45b034=_0x45b034-0x0;var _0x509cb0=_0x9f7a[_0x45b034];return _0x509cb0;};'use strict';var _=require(_0xa9f7('0x0'));var uuid=require(_0xa9f7('0x1'));var util=require(_0xa9f7('0x2'));var logger=require(_0xa9f7('0x3'))('routing');var Beepall=function(_0x302d71,_0x4c0346,_0x4d188f,_0x59823f){this[_0xa9f7('0x4')]=uuid['v4']();this[_0xa9f7('0x5')]=_0x302d71;this['queue']=_0x4c0346;this['realtime']=_0x4d188f;this[_0xa9f7('0x6')]=_0x59823f;this['squeue']['push'](this['handleRun'][_0xa9f7('0x7')](this),this['handleTimeout'][_0xa9f7('0x7')](this));this[_0xa9f7('0x5')]['on'](_0xa9f7('0x8'),this['handleTimeout'][_0xa9f7('0x7')](this));this[_0xa9f7('0x5')]['on']('drained',this[_0xa9f7('0x9')][_0xa9f7('0x7')](this));};Beepall[_0xa9f7('0xa')][_0xa9f7('0xb')]=function(){this[_0xa9f7('0x5')][_0xa9f7('0xb')](this[_0xa9f7('0xc')]['bind'](this),this[_0xa9f7('0xd')]['bind'](this));};Beepall[_0xa9f7('0xa')][_0xa9f7('0x9')]=function(_0x163416){this['handleTimeout'](!![]);};Beepall['prototype'][_0xa9f7('0xc')]=function(_0x4855d0){var _0x51083c=!![];if(!_[_0xa9f7('0xe')](this[_0xa9f7('0xf')])&&!_[_0xa9f7('0xe')](this['queue'][_0xa9f7('0x10')])&&this[_0xa9f7('0xf')][_0xa9f7('0x10')]['length']>0x0){for(var _0x310009=0x0,_0x1a1a13;_0x310009<this[_0xa9f7('0xf')][_0xa9f7('0x10')][_0xa9f7('0x11')];_0x310009+=0x1){_0x1a1a13=this[_0xa9f7('0xf')][_0xa9f7('0x10')][_0x310009]['id'];if(_[_0xa9f7('0xe')](this[_0xa9f7('0x12')]['agents'][_0x1a1a13])){logger[_0xa9f7('0x13')](_0xa9f7('0x14'),this[_0xa9f7('0x5')]['id'],_0x1a1a13);}else{if(util[_0xa9f7('0x15')](this[_0xa9f7('0x5')]['id'],this['realtime']['agents'][_0x1a1a13],this['squeue']['channel'],!![])){_0x51083c=![];util['writeLog'](this[_0xa9f7('0x5')]['id'],this['realtime'][_0xa9f7('0x16')][_0x1a1a13],'RINGING');this['realtime'][_0xa9f7('0x16')][_0x1a1a13]['busy']=!![];this['realtime']['agents'][_0x1a1a13][_0xa9f7('0x17')]=this[_0xa9f7('0xf')][_0xa9f7('0x18')];util['showNotification'](this[_0xa9f7('0x4')],this[_0xa9f7('0x5')]['id'],this[_0xa9f7('0x12')]['agents'][_0x1a1a13],this[_0xa9f7('0xf')],this['routing']);}}}if(_0x51083c){logger[_0xa9f7('0x13')]('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this[_0xa9f7('0x5')]['id']);setTimeout(this[_0xa9f7('0xb')][_0xa9f7('0x7')](this),0x3e8);}}else{logger[_0xa9f7('0x13')]('[%s][QUEUE]\x20EMPTY',this[_0xa9f7('0x5')]['id']);setTimeout(this[_0xa9f7('0xb')][_0xa9f7('0x7')](this),0x3e8);}};Beepall[_0xa9f7('0xa')][_0xa9f7('0xd')]=function(_0x471c3c){if(!_[_0xa9f7('0xe')](this[_0xa9f7('0xf')])&&!_['isNil'](this['queue']['Agents'])){for(var _0x224f2e=0x0,_0x1b04d5;_0x224f2e<this['queue'][_0xa9f7('0x10')]['length'];_0x224f2e+=0x1){_0x1b04d5=this['queue']['Agents'][_0x224f2e]['id'];if(_[_0xa9f7('0xe')](this['realtime'][_0xa9f7('0x16')][_0x1b04d5])){logger[_0xa9f7('0x13')](_0xa9f7('0x14'),this[_0xa9f7('0x5')]['id'],_0x1b04d5);}else{util[_0xa9f7('0x19')](this['notificationId'],this[_0xa9f7('0x5')]['id'],this[_0xa9f7('0x12')]['agents'][_0x1b04d5],this[_0xa9f7('0xf')],this[_0xa9f7('0x6')]);util['writeLog'](this[_0xa9f7('0x5')]['id'],this[_0xa9f7('0x12')][_0xa9f7('0x16')][_0x1b04d5],_0x471c3c?'STOP':'TIMEOUT');this[_0xa9f7('0x12')][_0xa9f7('0x16')][_0x1b04d5][_0xa9f7('0x1a')]=![];this[_0xa9f7('0x12')][_0xa9f7('0x16')][_0x1b04d5]['busyQueue']=undefined;}}}if(!_0x471c3c){setTimeout(this[_0xa9f7('0xb')][_0xa9f7('0x7')](this),0x3e8);}};function beepall(_0x3be76e,_0x5c9bef,_0x563619,_0xeffbb4){return new Beepall(_0x3be76e,_0x5c9bef,_0x563619,_0xeffbb4);}module['exports']=beepall;
\ No newline at end of file
index 29d3148..20c5527 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe70a=['./beepall'];(function(_0x4b4ea2,_0x5a3bf6){var _0x5794b8=function(_0x313da){while(--_0x313da){_0x4b4ea2['push'](_0x4b4ea2['shift']());}};_0x5794b8(++_0x5a3bf6);}(_0xe70a,0x139));var _0xae70=function(_0x5815db,_0x5d8e84){_0x5815db=_0x5815db-0x0;var _0x581e49=_0xe70a[_0x5815db];return _0x581e49;};'use strict';module['exports']={'rrmemory':require('./rrmemory'),'beepall':require(_0xae70('0x0')),'agent':require('./agent')};
\ No newline at end of file
+var _0xcf03=['./agent','exports','./rrmemory','./beepall'];(function(_0x42ce94,_0x6f1c97){var _0x6b09fc=function(_0xaaaded){while(--_0xaaaded){_0x42ce94['push'](_0x42ce94['shift']());}};_0x6b09fc(++_0x6f1c97);}(_0xcf03,0x7d));var _0x3cf0=function(_0x315030,_0x2f215f){_0x315030=_0x315030-0x0;var _0xae6c5a=_0xcf03[_0x315030];return _0xae6c5a;};'use strict';module[_0x3cf0('0x0')]={'rrmemory':require(_0x3cf0('0x1')),'beepall':require(_0x3cf0('0x2')),'agent':require(_0x3cf0('0x3'))};
\ No newline at end of file
index 073282c..ec1b681 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97b2=['isAgentAvailable','realtime','agents','agentId','debug','[%s][QUEUE]\x20available\x20again\x20%s','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','busy','notificationId','writeLog','RINGING','intervals','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','squeue','queue','push','bind','handleTimeout','module','timeout','drained','handleDrained','prototype','handleRun','handleCheckReject'];(function(_0x4552ea,_0x5c6323){var _0x45499a=function(_0x174340){while(--_0x174340){_0x4552ea['push'](_0x4552ea['shift']());}};_0x45499a(++_0x5c6323);}(_0x97b2,0x1b7));var _0x297b=function(_0x4bf96c,_0x4d24fd){_0x4bf96c=_0x4bf96c-0x0;var _0x281d09=_0x97b2[_0x4bf96c];return _0x281d09;};'use strict';var rr=require('rr');var _=require(_0x297b('0x0'));var uuid=require(_0x297b('0x1'));var util=require(_0x297b('0x2'));var logger=require(_0x297b('0x3'))(_0x297b('0x4'));var RRMemory=function(_0x114388,_0x4b8d0d,_0x37cce2,_0x171e3f){this['notificationId']=uuid['v4']();this[_0x297b('0x5')]=_0x114388;this[_0x297b('0x6')]=_0x4b8d0d;this['realtime']=_0x37cce2;this['routing']=_0x171e3f;this['intervals']={};this[_0x297b('0x5')][_0x297b('0x7')](this['handleRun'][_0x297b('0x8')](this),this[_0x297b('0x9')]['bind'](this),this[_0x297b('0xa')]);this['squeue']['on'](_0x297b('0xb'),this['handleTimeout'][_0x297b('0x8')](this));this[_0x297b('0x5')]['on'](_0x297b('0xc'),this[_0x297b('0xd')][_0x297b('0x8')](this));};RRMemory[_0x297b('0xe')][_0x297b('0x7')]=function(){this[_0x297b('0x5')][_0x297b('0x7')](this[_0x297b('0xf')][_0x297b('0x8')](this),this[_0x297b('0x9')][_0x297b('0x8')](this));};RRMemory[_0x297b('0xe')][_0x297b('0xd')]=function(){this['handleTimeout'](!![]);};RRMemory[_0x297b('0xe')][_0x297b('0x10')]=function(_0x5c2dad){if(util[_0x297b('0x11')](this[_0x297b('0x5')]['id'],this[_0x297b('0x12')][_0x297b('0x13')][this[_0x297b('0x14')]],this[_0x297b('0x5')]['channel'],!![])){logger[_0x297b('0x15')](_0x297b('0x16'),this[_0x297b('0x5')]['id'],this['agentId']);clearInterval(this['intervals'][this[_0x297b('0x14')]]);_0x5c2dad['done']();setTimeout(this[_0x297b('0x7')][_0x297b('0x8')](this),0x3e8);}};RRMemory[_0x297b('0xe')][_0x297b('0xf')]=function(_0x40ed57){this['agentId']=rr(this[_0x297b('0x6')][_0x297b('0x17')]);logger['debug'](_0x297b('0x18'),this[_0x297b('0x5')]['id'],this[_0x297b('0x14')]);if(_[_0x297b('0x19')](this[_0x297b('0x12')][_0x297b('0x13')][this[_0x297b('0x14')]])){logger['debug'](_0x297b('0x1a'),this[_0x297b('0x5')]['id'],this[_0x297b('0x14')]);_0x40ed57['done']();setTimeout(this[_0x297b('0x7')][_0x297b('0x8')](this),0x3e8);}else{if(util[_0x297b('0x11')](this[_0x297b('0x5')]['id'],this[_0x297b('0x12')]['agents'][this['agentId']],this[_0x297b('0x5')][_0x297b('0x1b')],!![])){this[_0x297b('0x12')][_0x297b('0x13')][this[_0x297b('0x14')]][_0x297b('0x1c')]=!![];this[_0x297b('0x12')]['agents'][this['agentId']]['busyQueue']=this[_0x297b('0x6')]['name'];util['showNotification'](this[_0x297b('0x1d')],this[_0x297b('0x5')]['id'],this[_0x297b('0x12')][_0x297b('0x13')][this[_0x297b('0x14')]],this[_0x297b('0x6')],this['routing']);util[_0x297b('0x1e')](this['squeue']['id'],this[_0x297b('0x12')][_0x297b('0x13')][this[_0x297b('0x14')]],_0x297b('0x1f'));this[_0x297b('0x20')][this[_0x297b('0x14')]]=setInterval(this[_0x297b('0x10')][_0x297b('0x8')](this,_0x40ed57),0x3e8);}else{logger[_0x297b('0x15')](_0x297b('0x21'),this[_0x297b('0x5')]['id'],this[_0x297b('0x14')]);_0x40ed57['done']();setTimeout(this['push'][_0x297b('0x8')](this),0x3e8);}}};RRMemory[_0x297b('0xe')][_0x297b('0x9')]=function(_0x2f0b43){logger['debug'](_0x297b('0x22'),this['squeue']['id'],this['agentId']);if(_[_0x297b('0x19')](this[_0x297b('0x12')][_0x297b('0x13')][this[_0x297b('0x14')]])){logger['debug'](_0x297b('0x1a'),this['squeue']['id'],this[_0x297b('0x14')]);}else{clearInterval(this[_0x297b('0x20')][this['agentId']]);util[_0x297b('0x23')](this[_0x297b('0x1d')],this['squeue']['id'],this['realtime'][_0x297b('0x13')][this[_0x297b('0x14')]],this[_0x297b('0x6')],this['routing']);util[_0x297b('0x1e')](this['squeue']['id'],this[_0x297b('0x12')]['agents'][this[_0x297b('0x14')]],_0x297b('0x24'));this[_0x297b('0x12')][_0x297b('0x13')][this[_0x297b('0x14')]]['busy']=![];this[_0x297b('0x12')][_0x297b('0x13')][this[_0x297b('0x14')]]['busyQueue']=undefined;}if(!_0x2f0b43){setTimeout(this[_0x297b('0x7')][_0x297b('0x8')](this),0x3e8);}};function rrmemory(_0x3fea16,_0x3f25cb,_0x4df141,_0x32ce4c){return new RRMemory(_0x3fea16,_0x3f25cb,_0x4df141,_0x32ce4c);}module[_0x297b('0x25')]=rrmemory;
\ No newline at end of file
+var _0x5798=['routing','notificationId','queue','realtime','intervals','push','handleTimeout','squeue','timeout','bind','drained','handleDrained','prototype','handleRun','handleCheckReject','agentId','channel','info','done','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','busy','busyQueue','name','showNotification','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','writeLog','exports','lodash','uuid','../../../../../config/logger'];(function(_0x2d83c3,_0x564ad7){var _0x6832f3=function(_0x56c02d){while(--_0x56c02d){_0x2d83c3['push'](_0x2d83c3['shift']());}};_0x6832f3(++_0x564ad7);}(_0x5798,0x69));var _0x8579=function(_0x43a6cd,_0x503d1a){_0x43a6cd=_0x43a6cd-0x0;var _0x5acb36=_0x5798[_0x43a6cd];return _0x5acb36;};'use strict';var rr=require('rr');var _=require(_0x8579('0x0'));var uuid=require(_0x8579('0x1'));var util=require('./util');var logger=require(_0x8579('0x2'))(_0x8579('0x3'));var RRMemory=function(_0x2207ac,_0x3b08dc,_0x3b696a,_0x34427a){this[_0x8579('0x4')]=uuid['v4']();this['squeue']=_0x2207ac;this[_0x8579('0x5')]=_0x3b08dc;this[_0x8579('0x6')]=_0x3b696a;this[_0x8579('0x3')]=_0x34427a;this[_0x8579('0x7')]={};this['squeue'][_0x8579('0x8')](this['handleRun']['bind'](this),this[_0x8579('0x9')]['bind'](this),this['module']);this[_0x8579('0xa')]['on'](_0x8579('0xb'),this[_0x8579('0x9')][_0x8579('0xc')](this));this[_0x8579('0xa')]['on'](_0x8579('0xd'),this[_0x8579('0xe')][_0x8579('0xc')](this));};RRMemory[_0x8579('0xf')][_0x8579('0x8')]=function(){this[_0x8579('0xa')]['push'](this[_0x8579('0x10')][_0x8579('0xc')](this),this['handleTimeout'][_0x8579('0xc')](this));};RRMemory['prototype'][_0x8579('0xe')]=function(_0x2a1d2a){this[_0x8579('0x9')](!![]);};RRMemory[_0x8579('0xf')][_0x8579('0x11')]=function(_0x39c7f4){if(util['isAgentAvailable'](this[_0x8579('0xa')]['id'],this['realtime']['agents'][this[_0x8579('0x12')]],this[_0x8579('0xa')][_0x8579('0x13')],!![])){logger[_0x8579('0x14')]('[%s][QUEUE]\x20available\x20again\x20%s',this[_0x8579('0xa')]['id'],this[_0x8579('0x12')]);clearInterval(this[_0x8579('0x7')][this[_0x8579('0x12')]]);_0x39c7f4[_0x8579('0x15')]();setTimeout(this[_0x8579('0x8')][_0x8579('0xc')](this),0x3e8);}};RRMemory[_0x8579('0xf')][_0x8579('0x10')]=function(_0x8fa1c2){this[_0x8579('0x12')]=rr(this['queue'][_0x8579('0x16')]);logger['info'](_0x8579('0x17'),this[_0x8579('0xa')]['id'],this[_0x8579('0x12')]);if(_[_0x8579('0x18')](this[_0x8579('0x6')][_0x8579('0x19')][this[_0x8579('0x12')]])){logger[_0x8579('0x14')](_0x8579('0x1a'),this[_0x8579('0xa')]['id'],this[_0x8579('0x12')]);_0x8fa1c2[_0x8579('0x15')]();setTimeout(this[_0x8579('0x8')]['bind'](this),0x3e8);}else{if(util['isAgentAvailable'](this[_0x8579('0xa')]['id'],this['realtime'][_0x8579('0x19')][this[_0x8579('0x12')]],this[_0x8579('0xa')]['channel'],!![])){this['realtime'][_0x8579('0x19')][this[_0x8579('0x12')]][_0x8579('0x1b')]=!![];this['realtime'][_0x8579('0x19')][this[_0x8579('0x12')]][_0x8579('0x1c')]=this['queue'][_0x8579('0x1d')];util[_0x8579('0x1e')](this[_0x8579('0x4')],this['squeue']['id'],this['realtime']['agents'][this['agentId']],this['queue'],this[_0x8579('0x3')]);util['writeLog'](this[_0x8579('0xa')]['id'],this['realtime'][_0x8579('0x19')][this['agentId']],_0x8579('0x1f'));this[_0x8579('0x7')][this[_0x8579('0x12')]]=setInterval(this[_0x8579('0x11')][_0x8579('0xc')](this,_0x8fa1c2),0x3e8);}else{logger['info'](_0x8579('0x20'),this['squeue']['id'],this['agentId']);_0x8fa1c2[_0x8579('0x15')]();setTimeout(this[_0x8579('0x8')][_0x8579('0xc')](this),0x3e8);}}};RRMemory[_0x8579('0xf')][_0x8579('0x9')]=function(_0x1b1052){logger[_0x8579('0x14')](_0x8579('0x21'),this[_0x8579('0xa')]['id'],this['agentId']);if(_[_0x8579('0x18')](this[_0x8579('0x6')][_0x8579('0x19')][this[_0x8579('0x12')]])){logger[_0x8579('0x14')](_0x8579('0x1a'),this[_0x8579('0xa')]['id'],this[_0x8579('0x12')]);}else{clearInterval(this[_0x8579('0x7')][this[_0x8579('0x12')]]);util['hideNotification'](this[_0x8579('0x4')],this['squeue']['id'],this['realtime'][_0x8579('0x19')][this['agentId']],this[_0x8579('0x5')],this['routing']);util[_0x8579('0x22')](this[_0x8579('0xa')]['id'],this[_0x8579('0x6')][_0x8579('0x19')][this[_0x8579('0x12')]],'TIMEOUT');this[_0x8579('0x6')][_0x8579('0x19')][this[_0x8579('0x12')]][_0x8579('0x1b')]=![];this[_0x8579('0x6')][_0x8579('0x19')][this[_0x8579('0x12')]]['busyQueue']=undefined;}if(!_0x1b1052){setTimeout(this[_0x8579('0x8')][_0x8579('0xc')](this),0x3e8);}};function rrmemory(_0x773d9a,_0x5a6a90,_0x27751c,_0x5fcf61){return new RRMemory(_0x773d9a,_0x5a6a90,_0x27751c,_0x5fcf61);}module[_0x8579('0x23')]=rrmemory;
\ No newline at end of file
index 5b0a343..ca0fe98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4c7=['message','notification:%s','save','remove','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','online','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','writeLog','lodash','util','../utils','ioredis','../../../../../config/environment','routing','redis','defaults','localhost','format','user:%s','name','emit','user:save','split','\x20interaction','notificationSound','account','notificationShake','body','queue','msg','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s'];(function(_0x1ca9e9,_0x1c4391){var _0x309f3c=function(_0x5ab318){while(--_0x5ab318){_0x1ca9e9['push'](_0x1ca9e9['shift']());}};_0x309f3c(++_0x1c4391);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x386299,_0x356556){_0x386299=_0x386299-0x0;var _0x290c37=_0xb4c7[_0x386299];return _0x290c37;};'use strict';var _=require(_0x7b4c('0x0'));var util=require(_0x7b4c('0x1'));var utils=require(_0x7b4c('0x2'));var Redis=require(_0x7b4c('0x3'));var config=require(_0x7b4c('0x4'));var logger=require('../../../../../config/logger')(_0x7b4c('0x5'));config[_0x7b4c('0x6')]=_[_0x7b4c('0x7')](config[_0x7b4c('0x6')],{'host':_0x7b4c('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x7b4c('0x6')]));function sendNotification(_0x10e197,_0x2dd5c7,_0x4bf85d,_0x2d7b7e,_0x21687f,_0x570daa){io['to'](util[_0x7b4c('0x9')](_0x7b4c('0xa'),_0x2d7b7e[_0x7b4c('0xb')]))[_0x7b4c('0xc')](_0x7b4c('0xd'),_0x2d7b7e);var _0x93d013=_0x570daa||{};var _0x1a996f=_0x4bf85d[_0x7b4c('0xe')]('.');var _0xa9814e={'uniqueid':_0x2dd5c7,'channel':_0x1a996f[0x0],'id':_0x1a996f[0x1],'title':_0x1a996f[0x0]+_0x7b4c('0xf'),'interactionId':_0x1a996f[0x2],'queue':_0x21687f?_0x21687f['name']:null,'sound':_0x93d013['account'][_0x7b4c('0x10')],'shake':_0x93d013[_0x7b4c('0x11')][_0x7b4c('0x12')]};try{if(!_0x93d013[_0x7b4c('0x13')]){_0x93d013[_0x7b4c('0x13')]={};}if(_0x21687f){_0x93d013[_0x7b4c('0x13')][_0x7b4c('0x14')]=_0x21687f;}else if(_0x93d013[_0x7b4c('0x13')][_0x7b4c('0x14')]){delete _0x93d013[_0x7b4c('0x13')]['queue'];}_0xa9814e[_0x7b4c('0x15')]=utils[_0x7b4c('0x16')](_0x93d013[_0x7b4c('0x11')][_0x7b4c('0x17')],_0x93d013);}catch(_0xa0a812){_0xa9814e[_0x7b4c('0x15')]=_0x7b4c('0x18');logger[_0x7b4c('0x19')](util['format'](_0x7b4c('0x1a'),_0x2dd5c7,_0xa0a812[_0x7b4c('0x1b')]));}io['to'](util[_0x7b4c('0x9')](_0x7b4c('0xa'),_0x2d7b7e['name']))[_0x7b4c('0xc')](util[_0x7b4c('0x9')](_0x7b4c('0x1c'),_0x10e197?_0x7b4c('0x1d'):_0x7b4c('0x1e')),_0xa9814e);}function writeLog(_0x1363b4,_0x237110,_0x445281){return logger[_0x7b4c('0x1f')](util['format'](_0x7b4c('0x20'),_0x1363b4,_0x237110[_0x7b4c('0xb')],_0x445281));}exports[_0x7b4c('0x21')]=function(_0xabeffb,_0x148a79,_0x168ac9,_0x176704){if(_0x148a79[_0x7b4c('0x22')]){writeLog(_0xabeffb,_0x148a79,_0x7b4c('0x23'));return![];}if(!_0x148a79[_0x7b4c('0x24')]){writeLog(_0xabeffb,_0x148a79,'OFFLINE');return![];}if(_0x148a79[_0x168ac9+_0x7b4c('0x25')]){writeLog(_0xabeffb,_0x148a79,_0x7b4c('0x26'));return![];}if(_0x176704&&_0x148a79[_0x7b4c('0x27')](_0x168ac9+_0x7b4c('0x28'))&&_0x148a79[_0x7b4c('0x27')](_0x168ac9+_0x7b4c('0x29'))){if(_0x148a79[_0x168ac9+_0x7b4c('0x28')]>0x0&&_0x148a79[_0x168ac9+_0x7b4c('0x29')]>=_0x148a79[_0x168ac9+_0x7b4c('0x28')]){writeLog(_0xabeffb,_0x148a79,_0x168ac9[_0x7b4c('0x2a')]()+_0x7b4c('0x2b'));return![];}}return!![];};exports[_0x7b4c('0x2c')]=function(_0x316e5f,_0x501f75,_0x27f361,_0x3ab614,_0x1fe0f5){return sendNotification(!![],_0x316e5f,_0x501f75,_0x27f361,_0x3ab614,_0x1fe0f5);};exports[_0x7b4c('0x2d')]=function(_0x207c2f,_0x4ce02c,_0x1de2b1,_0x2552f9,_0x3e4a46){return sendNotification(![],_0x207c2f,_0x4ce02c,_0x1de2b1,_0x2552f9,_0x3e4a46);};exports[_0x7b4c('0x2e')]=writeLog;
\ No newline at end of file
+var _0x5334=['error','format','message','save','remove','info','isAgentAvailable','busy','OFFLINE','Pause','PAUSE','Capacity','hasOwnProperty','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','writeLog','lodash','util','../utils','mustache','ioredis','../../../../../config/logger','redis','defaults','emit','user:%s','name','user:save','\x20interaction','account','notificationShake','body','queue','getMustacheRender','notificationTemplate','msg'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x5334,0x84));var _0x4533=function(_0x1914c5,_0xaaf505){_0x1914c5=_0x1914c5-0x0;var _0x5453db=_0x5334[_0x1914c5];return _0x5453db;};'use strict';var _=require(_0x4533('0x0'));var util=require(_0x4533('0x1'));var utils=require(_0x4533('0x2'));var Mustache=require(_0x4533('0x3'));var Redis=require(_0x4533('0x4'));var config=require('../../../../../config/environment');var logger=require(_0x4533('0x5'))('routing');config[_0x4533('0x6')]=_[_0x4533('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x4533('0x6')]));function emit(_0x4dea06,_0x4d89e7,_0x487906){io['to'](_0x4dea06)[_0x4533('0x8')](_0x4d89e7,_0x487906);}function sendNotification(_0x42f94b,_0x300877,_0x2489b6,_0x31018b,_0x21b22f,_0xd417){io['to'](util['format'](_0x4533('0x9'),_0x31018b[_0x4533('0xa')]))[_0x4533('0x8')](_0x4533('0xb'),_0x31018b);var _0x5465bf=_0xd417||{};var _0x7b2420=_0x2489b6['split']('.');var _0xc63e3={'uniqueid':_0x300877,'channel':_0x7b2420[0x0],'id':_0x7b2420[0x1],'title':_0x7b2420[0x0]+_0x4533('0xc'),'interactionId':_0x7b2420[0x2],'queue':_0x21b22f?_0x21b22f[_0x4533('0xa')]:null,'sound':_0x5465bf[_0x4533('0xd')]['notificationSound'],'shake':_0x5465bf[_0x4533('0xd')][_0x4533('0xe')]};try{if(!_0x5465bf[_0x4533('0xf')]){_0x5465bf[_0x4533('0xf')]={};}if(_0x21b22f){_0x5465bf['body'][_0x4533('0x10')]=_0x21b22f;}else if(_0x5465bf['body']['queue']){delete _0x5465bf[_0x4533('0xf')][_0x4533('0x10')];}_0xc63e3['msg']=utils[_0x4533('0x11')](_0x5465bf[_0x4533('0xd')][_0x4533('0x12')],_0x5465bf);}catch(_0x551b0d){_0xc63e3[_0x4533('0x13')]='I\x20can\x27t\x20render\x20your\x20template';logger[_0x4533('0x14')](util[_0x4533('0x15')]('[%s][QUEUE]\x20%s',_0x300877,_0x551b0d[_0x4533('0x16')]));}io['to'](util['format']('user:%s',_0x31018b[_0x4533('0xa')]))[_0x4533('0x8')](util['format']('notification:%s',_0x42f94b?_0x4533('0x17'):_0x4533('0x18')),_0xc63e3);}function writeLog(_0x3467ba,_0x1b08fa,_0x6766eb){return logger[_0x4533('0x19')](util[_0x4533('0x15')]('[%s][QUEUE][AGENT:%s][STATUS:%s]',_0x3467ba,_0x1b08fa[_0x4533('0xa')],_0x6766eb));}exports[_0x4533('0x1a')]=function(_0x2901f1,_0x4aa438,_0x513011,_0x138fd9){if(_0x4aa438[_0x4533('0x1b')]){writeLog(_0x2901f1,_0x4aa438,'BUSY');return![];}if(!_0x4aa438['online']){writeLog(_0x2901f1,_0x4aa438,_0x4533('0x1c'));return![];}if(_0x4aa438[_0x513011+_0x4533('0x1d')]){writeLog(_0x2901f1,_0x4aa438,_0x4533('0x1e'));return![];}if(_0x138fd9&&_0x4aa438['hasOwnProperty'](_0x513011+_0x4533('0x1f'))&&_0x4aa438[_0x4533('0x20')](_0x513011+_0x4533('0x21'))){if(_0x4aa438[_0x513011+_0x4533('0x1f')]>0x0&&_0x4aa438[_0x513011+_0x4533('0x21')]>=_0x4aa438[_0x513011+_0x4533('0x1f')]){writeLog(_0x2901f1,_0x4aa438,_0x513011[_0x4533('0x22')]()+_0x4533('0x23'));return![];}}return!![];};exports[_0x4533('0x24')]=function(_0x5f16bb,_0x5c1e24,_0xa2e602,_0x5aaf2d,_0x3fd76a){return sendNotification(!![],_0x5f16bb,_0x5c1e24,_0xa2e602,_0x5aaf2d,_0x3fd76a);};exports['hideNotification']=function(_0x159fea,_0x42ba2d,_0x38706b,_0x4300c1,_0x252a44){return sendNotification(![],_0x159fea,_0x42ba2d,_0x38706b,_0x4300c1,_0x252a44);};exports[_0x4533('0x25')]=writeLog;
\ No newline at end of file
index 0a27a4e..c935262 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ede=['[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','info','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','isObject','./utils','routing','string','consequence','validate','length','error','[%s][SYSTEM]\x20%s','map','message','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x6ede,0x83));var _0xe6ed=function(_0x386187,_0x1ad2ac){_0x386187=_0x386187-0x0;var _0x4abeaa=_0x6ede[_0x386187];return _0x4abeaa;};'use strict';var schema=require('validate');var sh=require('shelljs');var _=require('lodash');var utils=require(_0xe6ed('0x0'));var logger=require('../../../../config/logger')(_0xe6ed('0x1'));var system=schema({'command':{'type':_0xe6ed('0x2'),'required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0xe6ed('0x3')]=function(_0x5b14d4,_0x3f8f3b){return function(_0xd89726){try{var _0x591319={'command':_0x3f8f3b[0x0]};var _0x270b40=system[_0xe6ed('0x4')](_0x591319,{'typecast':!![]});if(_0x270b40[_0xe6ed('0x5')]){logger[_0xe6ed('0x6')](_0xe6ed('0x7'),_0x5b14d4,_[_0xe6ed('0x8')](_0x270b40,_0xe6ed('0x9'))['join'](',\x20'));logger['info'](_0xe6ed('0xa'),_0x5b14d4);_0xd89726[_0xe6ed('0xb')]();}else{var _0x4b89df=this;var _0x239c42=utils[_0xe6ed('0xc')](_0x3f8f3b[0x0],this);logger['info'](_0xe6ed('0xd'),_0x5b14d4,_0x239c42);sh[_0xe6ed('0xe')](_[_0xe6ed('0xf')](_0x239c42),function(_0x2d2253,_0x4abbfb){logger[_0xe6ed('0x10')]('[%s][SYSTEM]\x20result\x20code:\x20%s',_0x5b14d4,_0x2d2253);if(_0x2d2253==0x0){var _0x5a4bb8=_0x4abbfb[_0xe6ed('0x11')](/(\r\n|\n|\r)/gm,'');if(_[_0xe6ed('0x12')](_0x3f8f3b[0x1])||_[_0xe6ed('0x13')](_0x3f8f3b[0x1])){logger[_0xe6ed('0x10')](_0xe6ed('0x14'),_0x5b14d4);_0x4b89df[_0xe6ed('0x15')][_0x3f8f3b[0x1]]=_0x5a4bb8;}else{logger[_0xe6ed('0x10')](_0xe6ed('0x16'),_0x5b14d4,_0x3f8f3b[0x1],_0x5a4bb8);_0x4b89df[_0xe6ed('0x15')][_0x3f8f3b[0x1]]=_0x5a4bb8;}}_0xd89726[_0xe6ed('0xb')]();});}}catch(_0x4117de){logger['error'](_0xe6ed('0x7'),_0x5b14d4,_[_0xe6ed('0x17')](_0x4117de)?JSON['stringify'](_0x4117de):_0x4117de);logger[_0xe6ed('0x10')](_0xe6ed('0xa'),_0x5b14d4);_0xd89726[_0xe6ed('0xb')]();}};};
\ No newline at end of file
+var _0x5c7f=['isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','error','isObject','stringify','validate','shelljs','lodash','./utils','../../../../config/logger','routing','string','consequence','[%s][SYSTEM]\x20%s','map','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','[%s][SYSTEM]\x20commnad:\x20%s','[%s][SYSTEM]\x20result\x20code:\x20%s','replace'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x5c7f,0x67));var _0xf5c7=function(_0x411017,_0x4a8117){_0x411017=_0x411017-0x0;var _0x2adeea=_0x5c7f[_0x411017];return _0x2adeea;};'use strict';var schema=require(_0xf5c7('0x0'));var sh=require(_0xf5c7('0x1'));var _=require(_0xf5c7('0x2'));var utils=require(_0xf5c7('0x3'));var logger=require(_0xf5c7('0x4'))(_0xf5c7('0x5'));var system=schema({'command':{'type':_0xf5c7('0x6'),'required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0xf5c7('0x7')]=function(_0x33cb95,_0x46da25){return function(_0x476e7d){try{var _0x1a7194={'command':_0x46da25[0x0]};var _0x50c58f=system[_0xf5c7('0x0')](_0x1a7194,{'typecast':!![]});if(_0x50c58f['length']){logger['error'](_0xf5c7('0x8'),_0x33cb95,_[_0xf5c7('0x9')](_0x50c58f,_0xf5c7('0xa'))[_0xf5c7('0xb')](',\x20'));logger[_0xf5c7('0xc')](_0xf5c7('0xd'),_0x33cb95);_0x476e7d['next']();}else{var _0x44cdaa=this;var _0x1f89dc=utils['getMustacheRender'](_0x46da25[0x0],this);logger[_0xf5c7('0xc')](_0xf5c7('0xe'),_0x33cb95,_0x1f89dc);sh['exec'](_['trim'](_0x1f89dc),function(_0x7579d1,_0x34314a){logger[_0xf5c7('0xc')](_0xf5c7('0xf'),_0x33cb95,_0x7579d1);if(_0x7579d1==0x0){var _0x1e377a=_0x34314a[_0xf5c7('0x10')](/(\r\n|\n|\r)/gm,'');if(_[_0xf5c7('0x11')](_0x46da25[0x1])||_[_0xf5c7('0x12')](_0x46da25[0x1])){logger[_0xf5c7('0xc')](_0xf5c7('0x13'),_0x33cb95);_0x44cdaa[_0xf5c7('0x14')][_0x46da25[0x1]]=_0x1e377a;}else{logger['info']('[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s',_0x33cb95,_0x46da25[0x1],_0x1e377a);_0x44cdaa['body'][_0x46da25[0x1]]=_0x1e377a;}}_0x476e7d['next']();});}}catch(_0x41d1dc){logger[_0xf5c7('0x15')](_0xf5c7('0x8'),_0x33cb95,_[_0xf5c7('0x16')](_0x41d1dc)?JSON[_0xf5c7('0x17')](_0x41d1dc):_0x41d1dc);logger['info'](_0xf5c7('0xd'),_0x33cb95);_0x476e7d['next']();}};};
\ No newline at end of file
index d8b1add..4f381cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7a6=['interaction','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','error','[%s][TAG]\x20%s','stringify','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','finally','isObject','validate','lodash','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','message','join','info','next','channel','Interaction','addTags'];(function(_0x5b801d,_0x5d0519){var _0x207a4a=function(_0x36abdf){while(--_0x36abdf){_0x5b801d['push'](_0x5b801d['shift']());}};_0x207a4a(++_0x5d0519);}(_0xf7a6,0x13d));var _0x6f7a=function(_0x4ae6ef,_0xc2af80){_0x4ae6ef=_0x4ae6ef-0x0;var _0x3cbb4e=_0xf7a6[_0x4ae6ef];return _0x3cbb4e;};'use strict';var schema=require(_0x6f7a('0x0'));var _=require(_0x6f7a('0x1'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x6f7a('0x2')),'smsInteraction':require(_0x6f7a('0x3')),'mailInteraction':require(_0x6f7a('0x4')),'faxInteraction':require(_0x6f7a('0x5')),'whatsappInteraction':require(_0x6f7a('0x6'))};var logger=require(_0x6f7a('0x7'))(_0x6f7a('0x8'));var tag=schema({'tag':{'type':_0x6f7a('0x9'),'required':!![],'message':_0x6f7a('0xa')}});exports[_0x6f7a('0xb')]=function(_0xd30a13,_0x244916,_0x3c4ef3,_0x33509c){return function(_0xacaed6){try{var _0x91fc66={'tag':_0x244916[0x0]};var _0x14f5ce=tag['validate'](_0x91fc66,{'typecast':!![]});if(_0x14f5ce['length']){logger['error']('[%s][TAG]\x20%s',_0xd30a13,_['map'](_0x14f5ce,_0x6f7a('0xc'))[_0x6f7a('0xd')](',\x20'));logger[_0x6f7a('0xe')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0xd30a13);_0xacaed6[_0x6f7a('0xf')]();}else{var _0x3670bb={'ids':[_0x244916[0x0]]};if(rpc[_0x33509c[_0x6f7a('0x10')]+_0x6f7a('0x11')]){rpc[_0x33509c[_0x6f7a('0x10')]+_0x6f7a('0x11')][_0x6f7a('0x12')](_0x33509c[_0x6f7a('0x13')]['id'],_0x3670bb)['then'](function(_0x4d8fc0){logger[_0x6f7a('0xe')](_0x6f7a('0x14'),_0xd30a13,_0x244916[0x1],_0x33509c['channel'],_0x33509c[_0x6f7a('0x13')]['id']);})[_0x6f7a('0x15')](function(_0x10341f){logger[_0x6f7a('0x16')](_0x6f7a('0x17'),_0xd30a13,JSON[_0x6f7a('0x18')](_0x10341f));logger[_0x6f7a('0xe')](_0x6f7a('0x19'),_0xd30a13);})[_0x6f7a('0x1a')](function(){_0xacaed6[_0x6f7a('0xf')]();});}}}catch(_0xa49bb1){logger['error'](_0x6f7a('0x17'),_0xd30a13,_[_0x6f7a('0x1b')](_0xa49bb1)?JSON['stringify'](_0xa49bb1):_0xa49bb1);logger[_0x6f7a('0xe')](_0x6f7a('0x19'),_0xd30a13);_0xacaed6[_0x6f7a('0xf')]();}};};
\ No newline at end of file
+var _0xab89=['next','Interaction','channel','addTags','then','interaction','stringify','info','lodash','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][TAG]\x20%s','map','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0xab89,0xfa));var _0x9ab8=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0xab89[_0x2dadb9];return _0x2f0097;};'use strict';var schema=require('validate');var _=require(_0x9ab8('0x0'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x9ab8('0x1')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0x9ab8('0x2')),'faxInteraction':require(_0x9ab8('0x3')),'whatsappInteraction':require(_0x9ab8('0x4'))};var logger=require(_0x9ab8('0x5'))(_0x9ab8('0x6'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0x9ab8('0x7')}});exports[_0x9ab8('0x8')]=function(_0x351bf4,_0x41c688,_0x135eab,_0x29bcfb){return function(_0x240d64){try{var _0x294d08={'tag':_0x41c688[0x0]};var _0x42d88a=tag['validate'](_0x294d08,{'typecast':!![]});if(_0x42d88a[_0x9ab8('0x9')]){logger[_0x9ab8('0xa')](_0x9ab8('0xb'),_0x351bf4,_[_0x9ab8('0xc')](_0x42d88a,'message')['join'](',\x20'));logger['info'](_0x9ab8('0xd'),_0x351bf4);_0x240d64[_0x9ab8('0xe')]();}else{var _0x4265d7={'ids':[_0x41c688[0x0]]};if(rpc[_0x29bcfb['channel']+_0x9ab8('0xf')]){rpc[_0x29bcfb[_0x9ab8('0x10')]+_0x9ab8('0xf')][_0x9ab8('0x11')](_0x29bcfb['interaction']['id'],_0x4265d7)[_0x9ab8('0x12')](function(_0x4a50e5){logger['info']('[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s',_0x351bf4,_0x41c688[0x1],_0x29bcfb[_0x9ab8('0x10')],_0x29bcfb[_0x9ab8('0x13')]['id']);})['catch'](function(_0x3bf413){logger['error'](_0x9ab8('0xb'),_0x351bf4,JSON[_0x9ab8('0x14')](_0x3bf413));logger[_0x9ab8('0x15')](_0x9ab8('0xd'),_0x351bf4);})['finally'](function(){_0x240d64[_0x9ab8('0xe')]();});}}}catch(_0x5eef85){logger['error'](_0x9ab8('0xb'),_0x351bf4,_['isObject'](_0x5eef85)?JSON[_0x9ab8('0x14')](_0x5eef85):_0x5eef85);logger['info']('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x351bf4);_0x240d64[_0x9ab8('0xe')]();}};};
\ No newline at end of file
index f00c105..c66abe4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b0f=['routing','consequence','replace','\x20-\x20','includes','push','urlOnAnswer','urlOnRing','?params=','title','jsonrpc','2.0','method','login','params','stringify','utf8','application/json-rpc','parse','result','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&serviceId=','&sessionId=','&data=','then','info','catch','[%s][TVOX]\x20%s','stop','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','next','request-promise','../../../../config/logger'];(function(_0xf761b4,_0x48fb33){var _0x57a717=function(_0x1655e7){while(--_0x1655e7){_0xf761b4['push'](_0xf761b4['shift']());}};_0x57a717(++_0x48fb33);}(_0x7b0f,0x1e8));var _0xf7b0=function(_0x310e82,_0x5dad20){_0x310e82=_0x310e82-0x0;var _0x40aba8=_0x7b0f[_0x310e82];return _0x40aba8;};'use strict';var rp=require(_0xf7b0('0x0'));var logger=require(_0xf7b0('0x1'))(_0xf7b0('0x2'));var _=require('lodash');var arr=[];exports[_0xf7b0('0x3')]=function(_0x1e8fdf,_0x5e6d71){return function(_0x4c25b6){var _0x51791b=_0x5e6d71[0xa];var _0xa61908=_0x5e6d71[0xb];var _0x42409f=_0x5e6d71[0xc];var _0x2b5ec7=_0x5e6d71[0xd];var _0x498499=_0x5e6d71[0xe];var _0x179b33=_0x5e6d71[0xf][_0xf7b0('0x4')](/\n/g,_0xf7b0('0x5'));var _0x1379b5=_0x5e6d71[0x10][_0xf7b0('0x4')](/\n/g,'\x20');if(!arr[_0xf7b0('0x6')](_0xa61908)){arr[_0xf7b0('0x7')](_0xa61908);var _0x2eb5e4=_0x5e6d71[0x3];var _0x26c63c=_0x5e6d71[0x4];var _0x3e5f27=_0x5e6d71[0x1];var _0x3423b4=_0x5e6d71[0x0];var _0x37fbeb={};_0x37fbeb[_0xf7b0('0x8')]=_0x5e6d71[0x8]+'?params='+_0x42409f+'|'+_0x51791b+'|'+_0x2b5ec7+'|'+_0xa61908+'|'+_0x498499;_0x37fbeb[_0xf7b0('0x9')]=_0x5e6d71[0x7]+_0xf7b0('0xa')+_0x42409f+'|'+_0x51791b+'|'+_0x2b5ec7+'|'+_0xa61908+'|'+_0x498499+'|'+_0x179b33+'|'+_0x1379b5;_0x37fbeb[_0xf7b0('0xb')]=_0x5e6d71[0x9];var _0x462861={};_0x462861[_0xf7b0('0xc')]=_0xf7b0('0xd');_0x462861[_0xf7b0('0xe')]=_0xf7b0('0xf');var _0x5e3400=[];_0x5e3400[_0xf7b0('0x7')](_0x5e6d71[0x2]);_0x5e3400['push'](_0x5e6d71[0x5]);_0x5e3400[_0xf7b0('0x7')](_0x5e6d71[0x6]);_0x462861[_0xf7b0('0x10')]=_0x5e3400;_0x462861['id']=0x1;var _0x231961=JSON[_0xf7b0('0x11')](_0x462861);var _0x487180={'encoding':_0xf7b0('0x12'),'method':'POST','timeout':0x2710,'url':_0x2eb5e4,'headers':{'Content-Type':_0xf7b0('0x13')},'body':_0x231961};return rp(_0x487180)['then'](function(_0x6a91f3){const _0x140886=JSON[_0xf7b0('0x14')](_0x6a91f3);if(!_0x140886[_0xf7b0('0x15')][_0xf7b0('0x16')]){throw new Error(_0xf7b0('0x17'));}var _0x19222c=_0xa61908;var _0x2f17bd=_0xf7b0('0x18')+_0x3e5f27+_0xf7b0('0x19')+_0x3423b4+_0xf7b0('0x1a')+_0x19222c+_0xf7b0('0x1b')+JSON[_0xf7b0('0x11')](_0x37fbeb);var _0x5913b=_0x26c63c+'?'+_0x2f17bd;return rp(_0x5913b);})[_0xf7b0('0x1c')](function(_0x4add6a){logger[_0xf7b0('0x1d')]('[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s',_0x1e8fdf,_0x4add6a);_0x4c25b6['stop']();})[_0xf7b0('0x1e')](function(_0x5b2c48){logger['error'](_0xf7b0('0x1f'),_0x1e8fdf,_['isObject'](_0x5b2c48)?JSON[_0xf7b0('0x11')](_0x5b2c48):_0x5b2c48);_0x4c25b6[_0xf7b0('0x20')]();});}else{logger['info'](_0xf7b0('0x21'),_0x1e8fdf);_0x4c25b6[_0xf7b0('0x22')]();}};};
\ No newline at end of file
+var _0xe385=['logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&serviceId=','&sessionId=','&data=','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','catch','[%s][TVOX]\x20%s','isObject','request-promise','../../../../config/logger','routing','lodash','replace','includes','?params=','urlOnRing','jsonrpc','2.0','method','login','push','params','stringify','utf8','application/json-rpc','then','parse'];(function(_0x344a2c,_0x34c875){var _0x59aef4=function(_0x26eca6){while(--_0x26eca6){_0x344a2c['push'](_0x344a2c['shift']());}};_0x59aef4(++_0x34c875);}(_0xe385,0x19f));var _0x5e38=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xe385[_0x3b380d];return _0x54502b;};'use strict';var rp=require(_0x5e38('0x0'));var logger=require(_0x5e38('0x1'))(_0x5e38('0x2'));var _=require(_0x5e38('0x3'));var arr=[];exports['consequence']=function(_0x158131,_0x41be30){return function(_0x4e70c6){var _0x34afca=_0x41be30[0xa];var _0x21a85c=_0x41be30[0xb];var _0x2df248=_0x41be30[0xc];var _0x1861f9=_0x41be30[0xd];var _0x599fc0=_0x41be30[0xe];var _0x2a3db5=_0x41be30[0xf][_0x5e38('0x4')](/\n/g,'\x20-\x20');var _0x391982=_0x41be30[0x10]['replace'](/\n/g,'\x20');if(!arr[_0x5e38('0x5')](_0x21a85c)){arr['push'](_0x21a85c);var _0x5201b2=_0x41be30[0x3];var _0x49cc72=_0x41be30[0x4];var _0xf1d75a=_0x41be30[0x1];var _0x196008=_0x41be30[0x0];var _0x1bd060={};_0x1bd060['urlOnAnswer']=_0x41be30[0x8]+_0x5e38('0x6')+_0x2df248+'|'+_0x34afca+'|'+_0x1861f9+'|'+_0x21a85c+'|'+_0x599fc0;_0x1bd060[_0x5e38('0x7')]=_0x41be30[0x7]+_0x5e38('0x6')+_0x2df248+'|'+_0x34afca+'|'+_0x1861f9+'|'+_0x21a85c+'|'+_0x599fc0+'|'+_0x2a3db5+'|'+_0x391982;_0x1bd060['title']=_0x41be30[0x9];var _0xd5a5dd={};_0xd5a5dd[_0x5e38('0x8')]=_0x5e38('0x9');_0xd5a5dd[_0x5e38('0xa')]=_0x5e38('0xb');var _0xe0fe6f=[];_0xe0fe6f[_0x5e38('0xc')](_0x41be30[0x2]);_0xe0fe6f[_0x5e38('0xc')](_0x41be30[0x5]);_0xe0fe6f[_0x5e38('0xc')](_0x41be30[0x6]);_0xd5a5dd[_0x5e38('0xd')]=_0xe0fe6f;_0xd5a5dd['id']=0x1;var _0x1f40b8=JSON[_0x5e38('0xe')](_0xd5a5dd);var _0x126330={'encoding':_0x5e38('0xf'),'method':'POST','timeout':0x2710,'url':_0x5201b2,'headers':{'Content-Type':_0x5e38('0x10')},'body':_0x1f40b8};return rp(_0x126330)[_0x5e38('0x11')](function(_0x3a880a){const _0x1865e9=JSON[_0x5e38('0x12')](_0x3a880a);if(!_0x1865e9['result'][_0x5e38('0x13')]){throw new Error(_0x5e38('0x14'));}var _0x40cd9b=_0x21a85c;var _0x5e75bd=_0x5e38('0x15')+_0xf1d75a+_0x5e38('0x16')+_0x196008+_0x5e38('0x17')+_0x40cd9b+_0x5e38('0x18')+JSON['stringify'](_0x1bd060);var _0x55eb0=_0x49cc72+'?'+_0x5e75bd;return rp(_0x55eb0);})[_0x5e38('0x11')](function(_0x2dce87){logger[_0x5e38('0x19')](_0x5e38('0x1a'),_0x158131,_0x2dce87);_0x4e70c6[_0x5e38('0x1b')]();})[_0x5e38('0x1c')](function(_0x9dd448){logger['error'](_0x5e38('0x1d'),_0x158131,_[_0x5e38('0x1e')](_0x9dd448)?JSON['stringify'](_0x9dd448):_0x9dd448);_0x4e70c6[_0x5e38('0x1b')]();});}else{logger[_0x5e38('0x19')]('[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next',_0x158131);_0x4e70c6['next']();}};};
\ No newline at end of file
index edeb19f..4710ffb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x4638ae,_0x5e8b07){var _0x354a42=function(_0x5783e3){while(--_0x5783e3){_0x4638ae['push'](_0x4638ae['shift']());}};_0x354a42(++_0x5e8b07);}(_0xe706,0xa3));var _0x6e70=function(_0x1aed80,_0x3ca6f6){_0x1aed80=_0x1aed80-0x0;var _0x43961e=_0xe706[_0x1aed80];return _0x43961e;};'use strict';var Mustache=require(_0x6e70('0x0'));var _=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'getMustacheRender':function(_0x5e8446,_0x2cae77){return Mustache[_0x6e70('0x3')](_0x5e8446,_[_0x6e70('0x4')](_0x2cae77[_0x6e70('0x5')],{'contact':_0x2cae77[_0x6e70('0x6')],'message':_0x2cae77[_0x6e70('0x7')],'account':_0x2cae77[_0x6e70('0x8')],'interaction':_0x2cae77[_0x6e70('0x9')],'list':_0x2cae77[_0x6e70('0xa')]}))||'';}};
\ No newline at end of file
+var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x2d4f21,_0x390ce1){var _0x2954d9=function(_0x4cf2bd){while(--_0x4cf2bd){_0x2d4f21['push'](_0x2d4f21['shift']());}};_0x2954d9(++_0x390ce1);}(_0xe706,0xa3));var _0x6e70=function(_0x2f1a6e,_0x3082cb){_0x2f1a6e=_0x2f1a6e-0x0;var _0x5865e5=_0xe706[_0x2f1a6e];return _0x5865e5;};'use strict';var Mustache=require(_0x6e70('0x0'));var _=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'getMustacheRender':function(_0x5e8446,_0x2cae77){return Mustache[_0x6e70('0x3')](_0x5e8446,_[_0x6e70('0x4')](_0x2cae77[_0x6e70('0x5')],{'contact':_0x2cae77[_0x6e70('0x6')],'message':_0x2cae77[_0x6e70('0x7')],'account':_0x2cae77[_0x6e70('0x8')],'interaction':_0x2cae77[_0x6e70('0x9')],'list':_0x2cae77[_0x6e70('0xa')]}))||'';}};
\ No newline at end of file
index 8eb17ce..7813148 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c5d=['whatsappQueuesWaitingInteractions','server','http','stringify','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','jayson/promise','uuid','./applications/utils','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/faxQueueReport','format','%s.%s.%s','IntervalId','isNil','Intervals','map','interval','listen','rules','channel','message','interaction','applications','isArray','length','existsSync','join','app','.js','autoreply','appdata','split','mail','push','slice','dialogflow','dialogflowv2','amazonlex','tvox','getMustacheRender','account','notificationTemplate','ContactId','body','./interval','condition','intervals','./applications/','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','emit','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','busyQueue','hasOwnProperty','capacity','CurrentCapacity','agent\x20not\x20found','values','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','faxQueuesWaitingInteractions'];(function(_0x30db72,_0x1d63fb){var _0x25999f=function(_0x14e0b1){while(--_0x14e0b1){_0x30db72['push'](_0x30db72['shift']());}};_0x25999f(++_0x1d63fb);}(_0x0c5d,0x6c));var _0xd0c5=function(_0x845aab,_0x3f9449){_0x845aab=_0x845aab-0x0;var _0x5ca64e=_0x0c5d[_0x845aab];return _0x5ca64e;};'use strict';var _=require(_0xd0c5('0x0'));var util=require(_0xd0c5('0x1'));var path=require('path');var fs=require('fs');var jayson=require(_0xd0c5('0x2'));var BPromise=require('bluebird');var uuid=require(_0xd0c5('0x3'));var utils=require(_0xd0c5('0x4'));var config=require(_0xd0c5('0x5'));var logger=require(_0xd0c5('0x6'))(_0xd0c5('0x7'));var rpc={'openchannelQueueReport':require(_0xd0c5('0x8')),'mailQueueReport':require(_0xd0c5('0x9')),'chatQueueReport':require(_0xd0c5('0xa')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require(_0xd0c5('0xb')),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require('../lib/rule-engine');function getId(_0x365e04,_0x4be307,_0x567113){return util[_0xd0c5('0xc')](_0xd0c5('0xd'),_0x365e04,_0x4be307||0x0,_0x567113||0x0);}function getIntervals(_0x50ed33,_0x33a77b){var _0x3d53ab=[];if(!_['isNil'](_0x33a77b[_0xd0c5('0xe')])&&!_[_0xd0c5('0xf')](_0x50ed33[_0x33a77b[_0xd0c5('0xe')]])&&!_[_0xd0c5('0xf')](_0x50ed33[_0x33a77b[_0xd0c5('0xe')]][_0xd0c5('0x10')])){_0x3d53ab=_[_0xd0c5('0x11')](_0x50ed33[_0x33a77b[_0xd0c5('0xe')]][_0xd0c5('0x10')],_0xd0c5('0x12'));}else if(!_[_0xd0c5('0xf')](_0x33a77b[_0xd0c5('0x12')])){_0x3d53ab=[_0x33a77b['interval']];}return _0x3d53ab;}exports[_0xd0c5('0x13')]=function(_0x1c1cc8){_0x1c1cc8[_0xd0c5('0x14')]={};return new BPromise(function(_0x408e02,_0x553c38){var _0x280e22={'Start':function(_0x23d941){var _0x242615=this;return new Promise(function(_0x639e72,_0x556487){if(_0x23d941){try{var _0x2be13d=[];var _0x5809ba=getId(_0x23d941[_0xd0c5('0x15')],_0x23d941['message']?_0x23d941[_0xd0c5('0x16')]['id']:0x0,_0x23d941[_0xd0c5('0x17')]?_0x23d941[_0xd0c5('0x17')]['id']:0x0);if(_0x23d941[_0xd0c5('0x18')]&&_[_0xd0c5('0x19')](_0x23d941[_0xd0c5('0x18')])&&_0x23d941[_0xd0c5('0x18')][_0xd0c5('0x1a')]){for(var _0x4e302a=0x0;_0x4e302a<_0x23d941[_0xd0c5('0x18')][_0xd0c5('0x1a')];_0x4e302a+=0x1){var _0x54c2c5=_0x23d941[_0xd0c5('0x18')][_0x4e302a];if(fs[_0xd0c5('0x1b')](path[_0xd0c5('0x1c')](__dirname,_0xd0c5('0x18'),_0x54c2c5[_0xd0c5('0x1d')]+_0xd0c5('0x1e')))){var _0x331849=[];switch(_0x54c2c5['app']['toLowerCase']()){case _0xd0c5('0x1f'):var _0x2b756a=_0x54c2c5[_0xd0c5('0x20')][_0xd0c5('0x21')](',');if(_0x23d941['channel']===_0xd0c5('0x22')){_0x331849['push'](_0x2b756a[0x0]);_0x331849['push'](_0x2b756a[0x1]);_0x331849[_0xd0c5('0x23')](_0x2b756a[_0xd0c5('0x24')](0x2,_0x2b756a[_0xd0c5('0x1a')])[_0xd0c5('0x1c')](','));}else{_0x331849[_0xd0c5('0x23')](_0x2b756a[0x0]);_0x331849[_0xd0c5('0x23')](_0x2b756a[_0xd0c5('0x24')](0x1,_0x2b756a[_0xd0c5('0x1a')])[_0xd0c5('0x1c')](','));}break;case _0xd0c5('0x25'):var _0x34c2f4=_0x54c2c5[_0xd0c5('0x20')][_0xd0c5('0x21')](',');_0x331849[_0xd0c5('0x23')](_0x34c2f4[0x0]);_0x331849[_0xd0c5('0x23')](_0x34c2f4[0x1]);_0x331849[_0xd0c5('0x23')](_0x34c2f4[_0xd0c5('0x24')](0x2,_0x34c2f4['length'])[_0xd0c5('0x1c')](','));break;case _0xd0c5('0x26'):var _0x16298d=_0x54c2c5[_0xd0c5('0x20')][_0xd0c5('0x21')](',');_0x331849[_0xd0c5('0x23')](_0x16298d[0x0]);_0x331849[_0xd0c5('0x23')](_0x16298d[0x1]);_0x331849['push'](_0x16298d[0x2]);_0x331849[_0xd0c5('0x23')](_0x16298d[0x3]);_0x331849['push'](_0x16298d[_0xd0c5('0x24')](0x4,_0x16298d[_0xd0c5('0x1a')])[_0xd0c5('0x1c')](','));break;case _0xd0c5('0x27'):var _0x2ff67a=_0x54c2c5[_0xd0c5('0x20')][_0xd0c5('0x21')](',');_0x331849['push'](_0x2ff67a[0x0]);_0x331849['push'](_0x2ff67a[0x1]);_0x331849[_0xd0c5('0x23')](_0x2ff67a[0x2]);_0x331849['push'](_0x2ff67a[0x3]);_0x331849[_0xd0c5('0x23')](_0x2ff67a[_0xd0c5('0x24')](0x4,_0x2ff67a[_0xd0c5('0x1a')])[_0xd0c5('0x1c')](','));break;case'message':_0x331849[_0xd0c5('0x23')](_0x54c2c5[_0xd0c5('0x20')]);break;case'tag':_0x331849[_0xd0c5('0x23')](_0x54c2c5['TagId']);_0x331849[_0xd0c5('0x23')](_0x54c2c5[_0xd0c5('0x20')]);break;case _0xd0c5('0x28'):var _0x511f5c=utils[_0xd0c5('0x29')](_0x23d941[_0xd0c5('0x2a')][_0xd0c5('0x2b')],_0x23d941);var _0x3650b8=_0x54c2c5[_0xd0c5('0x20')][_0xd0c5('0x21')](',');_0x331849[_0xd0c5('0x23')](_0x3650b8[0x0]);_0x331849[_0xd0c5('0x23')](_0x3650b8[0x1]);_0x331849[_0xd0c5('0x23')](_0x3650b8[0x2]);_0x331849[_0xd0c5('0x23')](_0x3650b8[0x3]);_0x331849[_0xd0c5('0x23')](_0x3650b8[0x4]);_0x331849[_0xd0c5('0x23')](_0x3650b8[0x5]);_0x331849[_0xd0c5('0x23')](_0x3650b8[0x6]);_0x331849['push'](_0x3650b8[0x7]);_0x331849['push'](_0x3650b8[0x8]);_0x331849[_0xd0c5('0x23')](_0x3650b8[0x9]);_0x331849['push'](_0x3650b8[0xa]);_0x331849[_0xd0c5('0x23')](_0x23d941[_0xd0c5('0x17')]['id']);_0x331849['push'](_0x23d941[_0xd0c5('0x16')]['id']);_0x331849[_0xd0c5('0x23')](_0x54c2c5['ChatWebsiteId']);_0x331849[_0xd0c5('0x23')](_0x23d941[_0xd0c5('0x17')][_0xd0c5('0x2c')]);_0x331849[_0xd0c5('0x23')](_0x23d941[_0xd0c5('0x2d')][_0xd0c5('0x2d')]);_0x331849[_0xd0c5('0x23')](_0x511f5c);break;default:_0x331849=_[_0xd0c5('0xf')](_0x54c2c5[_0xd0c5('0x20')])?[]:_0x54c2c5[_0xd0c5('0x20')][_0xd0c5('0x21')](',');}var _0x3dc24a={'id':util[_0xd0c5('0xc')]('%s:%s:%s',_0x5809ba,_0x54c2c5['id'],_0x54c2c5[_0xd0c5('0x1d')]),'condition':require(_0xd0c5('0x2e'))[_0xd0c5('0x2f')](_0x5809ba,getIntervals(_0x1c1cc8[_0xd0c5('0x30')],_0x54c2c5),_0x1c1cc8),'consequence':require(_0xd0c5('0x31')+_0x54c2c5['app'])['consequence'](_0x5809ba,_0x331849,_0x1c1cc8,_0x23d941),'p':_0x54c2c5[_0xd0c5('0x32')]||0x0};logger[_0xd0c5('0x33')](_0xd0c5('0x34'),_0x3dc24a['id'],_0xd0c5('0x35'),getIntervals(_0x1c1cc8['intervals'],_0x54c2c5)[_0xd0c5('0x1c')](_0xd0c5('0x36')));_0x2be13d[_0xd0c5('0x23')](_0x3dc24a);}else{logger[_0xd0c5('0x37')](_0xd0c5('0x38'),path[_0xd0c5('0x1c')](__dirname,_0xd0c5('0x18'),_0x54c2c5['app']+_0xd0c5('0x1e')));}}_0x1c1cc8[_0xd0c5('0x14')][_0x5809ba]=new RuleEngine(_0x2be13d);_0x1c1cc8['rules'][_0x5809ba][_0xd0c5('0x39')](_0x23d941,function(_0x2634f3){logger[_0xd0c5('0x33')]('Applications\x20executed',JSON['stringify'](_0x2634f3['matchPath']));if(_0x1c1cc8['rules'][_0x5809ba]){_0x1c1cc8[_0xd0c5('0x14')][_0x5809ba]['emit'](_0xd0c5('0x3a'));}});return _0x639e72({'code':0xc8,'message':_0x23d941});}else{logger['info'](_0xd0c5('0x3b'));return _0x639e72({'code':0xc8,'message':_0x23d941});}}catch(_0x5a1857){logger[_0xd0c5('0x37')](_0x5a1857[_0xd0c5('0x3c')]);return _0x556487(_0x242615[_0xd0c5('0x37')](0x1f4,_0x5a1857));}}return _0x556487(_0xd0c5('0x3d'));});},'AcceptMessage':function(_0x129801){var _0x560d35=this;return new Promise(function(_0x16cc18,_0x472977){if(_0x129801[_0xd0c5('0x3e')]&&_0x129801[_0xd0c5('0x3e')]['id']){if(_0x1c1cc8[_0xd0c5('0x3f')][_0x129801[_0xd0c5('0x3e')]['id']]){_0x1c1cc8['agents'][_0x129801[_0xd0c5('0x3e')]['id']][_0xd0c5('0x40')]=![];_0x1c1cc8[_0xd0c5('0x3f')][_0x129801[_0xd0c5('0x3e')]['id']]['busyQueue']=undefined;}}if(_0x129801[_0xd0c5('0x16')]&&_0x129801[_0xd0c5('0x16')]['id']){try{var _0x11c601=getId(_0x129801[_0xd0c5('0x15')],_0x129801[_0xd0c5('0x16')]?_0x129801[_0xd0c5('0x16')]['id']:0x0,_0x129801[_0xd0c5('0x17')]?_0x129801[_0xd0c5('0x17')]['id']:0x0);if(_0x1c1cc8[_0xd0c5('0x14')][_0x11c601]){_0x1c1cc8[_0xd0c5('0x14')][_0x11c601][_0xd0c5('0x41')](_0xd0c5('0x42'));if(rpc[_0x129801['channel']+'QueueReport']){rpc[_0x129801[_0xd0c5('0x15')]+_0xd0c5('0x43')][_0xd0c5('0x44')](_0x11c601,{'UserId':_0x129801[_0xd0c5('0x16')][_0xd0c5('0x45')]})[_0xd0c5('0x46')](function(_0x5bf9bb){logger[_0xd0c5('0x37')](_0xd0c5('0x47'));});}}return _0x16cc18({'code':0xc8,'message':_0x129801});}catch(_0x1f7d24){logger[_0xd0c5('0x37')](_0x1f7d24[_0xd0c5('0x3c')]);return _0x472977(_0x560d35[_0xd0c5('0x37')](0x1f4,_0x1f7d24));}}logger[_0xd0c5('0x37')](_0xd0c5('0x48'));return _0x472977(_0x560d35[_0xd0c5('0x37')](0x1f4,_0xd0c5('0x48')));});},'RejectMessage':function(_0x25f7cb){var _0xbe0c47=this;return new Promise(function(_0x2ed0d4,_0x59cecb){if(_0x25f7cb[_0xd0c5('0x3e')]&&_0x25f7cb[_0xd0c5('0x3e')]['id']){try{if(_0x1c1cc8['agents'][_0x25f7cb[_0xd0c5('0x3e')]['id']]){_0x1c1cc8['agents'][_0x25f7cb['agent']['id']][_0xd0c5('0x40')]=![];_0x1c1cc8[_0xd0c5('0x3f')][_0x25f7cb[_0xd0c5('0x3e')]['id']][_0xd0c5('0x49')]=undefined;}return _0x2ed0d4({'code':0xc8,'message':_0x25f7cb});}catch(_0x4243ad){logger[_0xd0c5('0x37')](_0x4243ad[_0xd0c5('0x3c')]);return _0x59cecb(_0xbe0c47[_0xd0c5('0x37')](0x1f4,_0x4243ad));}}logger[_0xd0c5('0x37')](_0xd0c5('0x48'));return _0x59cecb(_0xbe0c47[_0xd0c5('0x37')](0x1f4,_0xd0c5('0x48')));});},'AbandonInteraction':function(_0x35e7c5){var _0x176fe0=this;return new Promise(function(_0x1859c5,_0x225baa){if(_0x35e7c5[_0xd0c5('0x15')]&&_0x35e7c5['interaction']&&_0x35e7c5['interaction']['id']){try{var _0x13c8ce=getId(_0x35e7c5[_0xd0c5('0x15')],_0x35e7c5['message']?_0x35e7c5['message']['id']:0x0,_0x35e7c5[_0xd0c5('0x17')]?_0x35e7c5[_0xd0c5('0x17')]['id']:0x0);if(_0x1c1cc8[_0xd0c5('0x14')][_0x13c8ce]){_0x1c1cc8[_0xd0c5('0x14')][_0x13c8ce][_0xd0c5('0x41')](_0xd0c5('0x42'));}return _0x1859c5({'code':0xc8,'message':_0x35e7c5});}catch(_0x19db83){logger[_0xd0c5('0x37')](_0x19db83[_0xd0c5('0x3c')]);return _0x225baa(_0x176fe0['error'](0x1f4,_0x19db83));}}logger[_0xd0c5('0x37')](_0xd0c5('0x48'));return _0x225baa(_0x176fe0['error'](0x1f4,_0xd0c5('0x48')));});},'AgentCapacity':function(_0x4c7df0){var _0x44b555=this;return new Promise(function(_0x525681,_0x2e8b0d){if(_0x1c1cc8['agents'][_0xd0c5('0x4a')](_0x4c7df0['id'])){for(var _0x339710 in _0x4c7df0[_0xd0c5('0x4b')]){if(_0x4c7df0[_0xd0c5('0x4b')][_0xd0c5('0x4a')](_0x339710)){if(_0x1c1cc8[_0xd0c5('0x3f')][_0x4c7df0['id']][_0xd0c5('0x4a')](_0x339710+_0xd0c5('0x4c'))){_0x1c1cc8[_0xd0c5('0x3f')][_0x4c7df0['id']][_0x339710+_0xd0c5('0x4c')]=parseInt(_0x4c7df0[_0xd0c5('0x4b')][_0x339710],0xa);}}}_0x1c1cc8[_0xd0c5('0x3f')][_0x4c7df0['id']]['updateRealtime']();return _0x525681({'code':0xc8,'message':_0x1c1cc8[_0xd0c5('0x3f')][_0x4c7df0['id']]});}else{return _0x2e8b0d(_0x44b555['error'](0x1f4,_0xd0c5('0x4d')));}});},'Agents':function(_0x37e731){return new Promise(function(_0x5afeba,_0x35287f){var _0x3d0a99=_[_0xd0c5('0x4e')](_0x1c1cc8[_0xd0c5('0x3f')]);_0x5afeba({'count':_0x3d0a99[_0xd0c5('0x1a')],'rows':_0x3d0a99});});},'ChatQueues':function(_0x3df55b){return new Promise(function(_0x513136,_0x1ce1cd){var _0x269a24=[];for(var _0x12f8ad in _0x1c1cc8[_0xd0c5('0x4f')]){if(_0x1c1cc8['chatQueues'][_0xd0c5('0x4a')](_0x12f8ad)){var _0x229405=_0x1c1cc8[_0xd0c5('0x4f')][_0x12f8ad];var _0x10aa2a={'id':_0x229405['id'],'available':_0x229405[_0xd0c5('0x50')],'loggedIn':_0x229405[_0xd0c5('0x51')],'name':_0x229405[_0xd0c5('0x52')],'paused':_0x229405[_0xd0c5('0x53')],'waiting':_0x229405[_0xd0c5('0x54')]};_0x269a24[_0xd0c5('0x23')](_0x10aa2a);}}_0x513136({'count':_0x269a24['length'],'rows':_0x269a24});});},'MailQueues':function(_0x1d9423){return new Promise(function(_0x3ec3de,_0x3b27d7){var _0x427461=[];for(var _0x383e7c in _0x1c1cc8[_0xd0c5('0x55')]){if(_0x1c1cc8['mailQueues'][_0xd0c5('0x4a')](_0x383e7c)){var _0x490c93=_0x1c1cc8[_0xd0c5('0x55')][_0x383e7c];var _0x32dc65={'id':_0x490c93['id'],'available':_0x490c93[_0xd0c5('0x50')],'loggedIn':_0x490c93[_0xd0c5('0x51')],'name':_0x490c93[_0xd0c5('0x52')],'paused':_0x490c93['paused'],'waiting':_0x490c93['waiting']};_0x427461[_0xd0c5('0x23')](_0x32dc65);}}_0x3ec3de({'count':_0x427461[_0xd0c5('0x1a')],'rows':_0x427461});});},'OpenchannelQueues':function(_0xfcc4e6){return new Promise(function(_0x3b3e9d,_0x380b07){var _0x313a4c=[];for(var _0x7d38d7 in _0x1c1cc8[_0xd0c5('0x56')]){if(_0x1c1cc8[_0xd0c5('0x56')][_0xd0c5('0x4a')](_0x7d38d7)){var _0x3509d4=_0x1c1cc8[_0xd0c5('0x56')][_0x7d38d7];var _0xc4e75d={'id':_0x3509d4['id'],'available':_0x3509d4[_0xd0c5('0x50')],'loggedIn':_0x3509d4[_0xd0c5('0x51')],'name':_0x3509d4[_0xd0c5('0x52')],'paused':_0x3509d4[_0xd0c5('0x53')],'waiting':_0x3509d4['waiting']};_0x313a4c[_0xd0c5('0x23')](_0xc4e75d);}}_0x3b3e9d({'count':_0x313a4c['length'],'rows':_0x313a4c});});},'SmsQueues':function(_0x32c09f){return new Promise(function(_0x39525a,_0x4e15ab){var _0x24f21b=[];for(var _0x3d4785 in _0x1c1cc8[_0xd0c5('0x57')]){if(_0x1c1cc8[_0xd0c5('0x57')][_0xd0c5('0x4a')](_0x3d4785)){var _0x7feb7=_0x1c1cc8[_0xd0c5('0x57')][_0x3d4785];var _0x4454e2={'id':_0x7feb7['id'],'available':_0x7feb7[_0xd0c5('0x50')],'loggedIn':_0x7feb7['loggedIn'],'name':_0x7feb7['name'],'paused':_0x7feb7[_0xd0c5('0x53')],'waiting':_0x7feb7['waiting']};_0x24f21b['push'](_0x4454e2);}}_0x39525a({'count':_0x24f21b[_0xd0c5('0x1a')],'rows':_0x24f21b});});},'FaxQueues':function(_0x3b8514){return new Promise(function(_0xb24e34,_0xdf44b4){var _0x3b64ae=[];for(var _0x51910f in _0x1c1cc8['faxQueues']){if(_0x1c1cc8[_0xd0c5('0x58')][_0xd0c5('0x4a')](_0x51910f)){var _0xe413e9=_0x1c1cc8[_0xd0c5('0x58')][_0x51910f];var _0x1eeb74={'id':_0xe413e9['id'],'available':_0xe413e9[_0xd0c5('0x50')],'loggedIn':_0xe413e9[_0xd0c5('0x51')],'name':_0xe413e9['name'],'paused':_0xe413e9[_0xd0c5('0x53')],'waiting':_0xe413e9[_0xd0c5('0x54')]};_0x3b64ae[_0xd0c5('0x23')](_0x1eeb74);}}_0xb24e34({'count':_0x3b64ae[_0xd0c5('0x1a')],'rows':_0x3b64ae});});},'WhatsappQueues':function(_0x554ddf){return new Promise(function(_0x403987,_0x5cf467){var _0x43efc9=[];for(var _0x419a13 in _0x1c1cc8[_0xd0c5('0x59')]){if(_0x1c1cc8[_0xd0c5('0x59')][_0xd0c5('0x4a')](_0x419a13)){var _0x4c997f=_0x1c1cc8[_0xd0c5('0x59')][_0x419a13];var _0x2b3201={'id':_0x4c997f['id'],'available':_0x4c997f[_0xd0c5('0x50')],'loggedIn':_0x4c997f[_0xd0c5('0x51')],'name':_0x4c997f[_0xd0c5('0x52')],'paused':_0x4c997f[_0xd0c5('0x53')],'waiting':_0x4c997f['waiting']};_0x43efc9[_0xd0c5('0x23')](_0x2b3201);}}_0x403987({'count':_0x43efc9['length'],'rows':_0x43efc9});});},'ChatQueuesWaitingInteractions':function(_0x2fcba3){return new Promise(function(_0x1d02b1,_0x464989){var _0x97b101=_[_0xd0c5('0x4e')](_0x1c1cc8[_0xd0c5('0x5a')]);_0x1d02b1({'count':_0x97b101[_0xd0c5('0x1a')],'rows':_0x97b101});});},'MailQueuesWaitingInteractions':function(_0x1d6ffe){return new Promise(function(_0x4b31f6,_0x3aaa55){var _0x58012e=_[_0xd0c5('0x4e')](_0x1c1cc8[_0xd0c5('0x5b')]);_0x4b31f6({'count':_0x58012e[_0xd0c5('0x1a')],'rows':_0x58012e});});},'OpenchannelQueuesWaitingInteractions':function(_0xeaedfe){return new Promise(function(_0xeaacb2,_0x14568a){var _0x1ada98=_[_0xd0c5('0x4e')](_0x1c1cc8[_0xd0c5('0x5c')]);_0xeaacb2({'count':_0x1ada98['length'],'rows':_0x1ada98});});},'SmsQueuesWaitingInteractions':function(_0x325458){return new Promise(function(_0x28ea50,_0x15d596){var _0xd3c843=_[_0xd0c5('0x4e')](_0x1c1cc8['smsQueuesWaitingInteractions']);_0x28ea50({'count':_0xd3c843[_0xd0c5('0x1a')],'rows':_0xd3c843});});},'FaxQueuesWaitingInteractions':function(_0xa63a09){return new Promise(function(_0x53ad30,_0x3d66e3){var _0x2ef5e8=_[_0xd0c5('0x4e')](_0x1c1cc8[_0xd0c5('0x5d')]);_0x53ad30({'count':_0x2ef5e8[_0xd0c5('0x1a')],'rows':_0x2ef5e8});});},'WhatsappQueuesWaitingInteractions':function(_0x23b5ca){return new Promise(function(_0xb4efc5,_0x463f3d){var _0x416a91=_[_0xd0c5('0x4e')](_0x1c1cc8[_0xd0c5('0x5e')]);_0xb4efc5({'count':_0x416a91[_0xd0c5('0x1a')],'rows':_0x416a91});});}};var _0x56c491=jayson[_0xd0c5('0x5f')](_0x280e22)[_0xd0c5('0x60')]();_0x56c491['on'](_0xd0c5('0x37'),function(_0x118493){logger[_0xd0c5('0x37')](JSON[_0xd0c5('0x61')](_0x118493));return _0x553c38(_0x118493);});_0x56c491[_0xd0c5('0x13')](0x232c,_0xd0c5('0x62'),function(){console[_0xd0c5('0x63')](_0xd0c5('0x64'),0x232c);return _0x408e02('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
+var _0x6599=['message','interaction','applications','isArray','length','existsSync','join','app','.js','toLowerCase','appdata','split','mail','push','slice','dialogflow','amazonlex','tag','TagId','tvox','getMustacheRender','account','notificationTemplate','ContactId','body','format','./interval','condition','./applications/','consequence','priority','info','Push\x20new\x20rule','on\x20interval','intervals','\x20|\x20','error','execute','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','stack','agent','agents','busy','busyQueue','end','QueueReport','update','UserId','catch','message\x20is\x20empty','hasOwnProperty','CurrentCapacity','agent\x20not\x20found','chatQueues','mailQueues','available','loggedIn','paused','openchannelQueues','name','waiting','smsQueues','faxQueues','whatsappQueues','values','chatQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','util','path','jayson/promise','bluebird','uuid','../../../config/environment','routing','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../lib/rule-engine','%s.%s.%s','isNil','IntervalId','Intervals','map','interval','listen','rules','channel'];(function(_0x1ec655,_0x88f253){var _0x4bbea5=function(_0x2ac98a){while(--_0x2ac98a){_0x1ec655['push'](_0x1ec655['shift']());}};_0x4bbea5(++_0x88f253);}(_0x6599,0xb0));var _0x9659=function(_0x5c619e,_0x1bccdf){_0x5c619e=_0x5c619e-0x0;var _0x445cf8=_0x6599[_0x5c619e];return _0x445cf8;};'use strict';var _=require('lodash');var util=require(_0x9659('0x0'));var path=require(_0x9659('0x1'));var fs=require('fs');var jayson=require(_0x9659('0x2'));var BPromise=require(_0x9659('0x3'));var uuid=require(_0x9659('0x4'));var utils=require('./applications/utils');var config=require(_0x9659('0x5'));var logger=require('../../../config/logger')(_0x9659('0x6'));var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x9659('0x7')),'chatQueueReport':require(_0x9659('0x8')),'smsQueueReport':require(_0x9659('0x9')),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require(_0x9659('0xa'));function getId(_0x14cb81,_0x4d0a52,_0xdf6dea){return util['format'](_0x9659('0xb'),_0x14cb81,_0x4d0a52||0x0,_0xdf6dea||0x0);}function getIntervals(_0x194d48,_0x58552a){var _0x147cac=[];if(!_[_0x9659('0xc')](_0x58552a[_0x9659('0xd')])&&!_['isNil'](_0x194d48[_0x58552a[_0x9659('0xd')]])&&!_['isNil'](_0x194d48[_0x58552a[_0x9659('0xd')]][_0x9659('0xe')])){_0x147cac=_[_0x9659('0xf')](_0x194d48[_0x58552a['IntervalId']][_0x9659('0xe')],_0x9659('0x10'));}else if(!_[_0x9659('0xc')](_0x58552a[_0x9659('0x10')])){_0x147cac=[_0x58552a[_0x9659('0x10')]];}return _0x147cac;}exports[_0x9659('0x11')]=function(_0x805d8c){_0x805d8c[_0x9659('0x12')]={};return new BPromise(function(_0x2a5d78,_0x103825){var _0x323c10={'Start':function(_0x122fe4){var _0x23e514=this;return new Promise(function(_0x23098d,_0x575f53){if(_0x122fe4){try{var _0x281df8=[];var _0xd1ab56=getId(_0x122fe4[_0x9659('0x13')],_0x122fe4[_0x9659('0x14')]?_0x122fe4[_0x9659('0x14')]['id']:0x0,_0x122fe4[_0x9659('0x15')]?_0x122fe4[_0x9659('0x15')]['id']:0x0);if(_0x122fe4[_0x9659('0x16')]&&_[_0x9659('0x17')](_0x122fe4['applications'])&&_0x122fe4[_0x9659('0x16')][_0x9659('0x18')]){for(var _0x110904=0x0;_0x110904<_0x122fe4['applications'][_0x9659('0x18')];_0x110904+=0x1){var _0x52b880=_0x122fe4[_0x9659('0x16')][_0x110904];if(fs[_0x9659('0x19')](path[_0x9659('0x1a')](__dirname,_0x9659('0x16'),_0x52b880[_0x9659('0x1b')]+_0x9659('0x1c')))){var _0x5d4eb5=[];switch(_0x52b880[_0x9659('0x1b')][_0x9659('0x1d')]()){case'autoreply':var _0x3eb261=_0x52b880[_0x9659('0x1e')][_0x9659('0x1f')](',');if(_0x122fe4['channel']===_0x9659('0x20')){_0x5d4eb5[_0x9659('0x21')](_0x3eb261[0x0]);_0x5d4eb5[_0x9659('0x21')](_0x3eb261[0x1]);_0x5d4eb5[_0x9659('0x21')](_0x3eb261[_0x9659('0x22')](0x2,_0x3eb261['length'])[_0x9659('0x1a')](','));}else{_0x5d4eb5[_0x9659('0x21')](_0x3eb261[0x0]);_0x5d4eb5[_0x9659('0x21')](_0x3eb261[_0x9659('0x22')](0x1,_0x3eb261['length'])[_0x9659('0x1a')](','));}break;case _0x9659('0x23'):var _0x46ca50=_0x52b880[_0x9659('0x1e')]['split'](',');_0x5d4eb5[_0x9659('0x21')](_0x46ca50[0x0]);_0x5d4eb5['push'](_0x46ca50[0x1]);_0x5d4eb5[_0x9659('0x21')](_0x46ca50['slice'](0x2,_0x46ca50[_0x9659('0x18')])['join'](','));break;case'dialogflowv2':var _0x21999d=_0x52b880[_0x9659('0x1e')]['split'](',');_0x5d4eb5[_0x9659('0x21')](_0x21999d[0x0]);_0x5d4eb5['push'](_0x21999d[0x1]);_0x5d4eb5[_0x9659('0x21')](_0x21999d[0x2]);_0x5d4eb5[_0x9659('0x21')](_0x21999d[0x3]);_0x5d4eb5[_0x9659('0x21')](_0x21999d[_0x9659('0x22')](0x4,_0x21999d[_0x9659('0x18')])[_0x9659('0x1a')](','));break;case _0x9659('0x24'):var _0x4ed74c=_0x52b880[_0x9659('0x1e')][_0x9659('0x1f')](',');_0x5d4eb5[_0x9659('0x21')](_0x4ed74c[0x0]);_0x5d4eb5['push'](_0x4ed74c[0x1]);_0x5d4eb5[_0x9659('0x21')](_0x4ed74c[0x2]);_0x5d4eb5[_0x9659('0x21')](_0x4ed74c[0x3]);_0x5d4eb5['push'](_0x4ed74c[_0x9659('0x22')](0x4,_0x4ed74c[_0x9659('0x18')])['join'](','));break;case _0x9659('0x14'):_0x5d4eb5[_0x9659('0x21')](_0x52b880['appdata']);break;case _0x9659('0x25'):_0x5d4eb5[_0x9659('0x21')](_0x52b880[_0x9659('0x26')]);_0x5d4eb5[_0x9659('0x21')](_0x52b880[_0x9659('0x1e')]);break;case _0x9659('0x27'):var _0x1d84dd=utils[_0x9659('0x28')](_0x122fe4[_0x9659('0x29')][_0x9659('0x2a')],_0x122fe4);var _0x25c138=_0x52b880[_0x9659('0x1e')][_0x9659('0x1f')](',');_0x5d4eb5[_0x9659('0x21')](_0x25c138[0x0]);_0x5d4eb5[_0x9659('0x21')](_0x25c138[0x1]);_0x5d4eb5['push'](_0x25c138[0x2]);_0x5d4eb5[_0x9659('0x21')](_0x25c138[0x3]);_0x5d4eb5[_0x9659('0x21')](_0x25c138[0x4]);_0x5d4eb5['push'](_0x25c138[0x5]);_0x5d4eb5[_0x9659('0x21')](_0x25c138[0x6]);_0x5d4eb5[_0x9659('0x21')](_0x25c138[0x7]);_0x5d4eb5[_0x9659('0x21')](_0x25c138[0x8]);_0x5d4eb5[_0x9659('0x21')](_0x25c138[0x9]);_0x5d4eb5[_0x9659('0x21')](_0x25c138[0xa]);_0x5d4eb5[_0x9659('0x21')](_0x122fe4[_0x9659('0x15')]['id']);_0x5d4eb5[_0x9659('0x21')](_0x122fe4[_0x9659('0x14')]['id']);_0x5d4eb5[_0x9659('0x21')](_0x52b880['ChatWebsiteId']);_0x5d4eb5[_0x9659('0x21')](_0x122fe4[_0x9659('0x15')][_0x9659('0x2b')]);_0x5d4eb5[_0x9659('0x21')](_0x122fe4[_0x9659('0x2c')][_0x9659('0x2c')]);_0x5d4eb5[_0x9659('0x21')](_0x1d84dd);break;default:_0x5d4eb5=_[_0x9659('0xc')](_0x52b880[_0x9659('0x1e')])?[]:_0x52b880[_0x9659('0x1e')][_0x9659('0x1f')](',');}var _0x8b0139={'id':util[_0x9659('0x2d')]('%s:%s:%s',_0xd1ab56,_0x52b880['id'],_0x52b880[_0x9659('0x1b')]),'condition':require(_0x9659('0x2e'))[_0x9659('0x2f')](_0xd1ab56,getIntervals(_0x805d8c['intervals'],_0x52b880),_0x805d8c),'consequence':require(_0x9659('0x30')+_0x52b880[_0x9659('0x1b')])[_0x9659('0x31')](_0xd1ab56,_0x5d4eb5,_0x805d8c,_0x122fe4),'p':_0x52b880[_0x9659('0x32')]||0x0};logger[_0x9659('0x33')](_0x9659('0x34'),_0x8b0139['id'],_0x9659('0x35'),getIntervals(_0x805d8c[_0x9659('0x36')],_0x52b880)['join'](_0x9659('0x37')));_0x281df8[_0x9659('0x21')](_0x8b0139);}else{logger[_0x9659('0x38')]('Please\x20create\x20a\x20new\x20file\x20under',path[_0x9659('0x1a')](__dirname,_0x9659('0x16'),_0x52b880[_0x9659('0x1b')]+_0x9659('0x1c')));}}_0x805d8c[_0x9659('0x12')][_0xd1ab56]=new RuleEngine(_0x281df8);_0x805d8c[_0x9659('0x12')][_0xd1ab56][_0x9659('0x39')](_0x122fe4,function(_0x316de6){logger[_0x9659('0x33')]('Applications\x20executed',JSON[_0x9659('0x3a')](_0x316de6[_0x9659('0x3b')]));if(_0x805d8c[_0x9659('0x12')][_0xd1ab56]){_0x805d8c[_0x9659('0x12')][_0xd1ab56][_0x9659('0x3c')](_0x9659('0x3d'));}});return _0x23098d({'code':0xc8,'message':_0x122fe4});}else{logger[_0x9659('0x33')](_0x9659('0x3e'));return _0x23098d({'code':0xc8,'message':_0x122fe4});}}catch(_0x57971f){logger[_0x9659('0x38')](_0x57971f[_0x9659('0x3f')]);return _0x575f53(_0x23e514['error'](0x1f4,_0x57971f));}}return _0x575f53('routing\x20is\x20empty');});},'AcceptMessage':function(_0x27ed64){var _0xa2822b=this;return new Promise(function(_0x55304f,_0x569343){if(_0x27ed64['agent']&&_0x27ed64[_0x9659('0x40')]['id']){if(_0x805d8c[_0x9659('0x41')][_0x27ed64[_0x9659('0x40')]['id']]){_0x805d8c['agents'][_0x27ed64['agent']['id']][_0x9659('0x42')]=![];_0x805d8c[_0x9659('0x41')][_0x27ed64[_0x9659('0x40')]['id']][_0x9659('0x43')]=undefined;}}if(_0x27ed64['message']&&_0x27ed64[_0x9659('0x14')]['id']){try{var _0x3fd131=getId(_0x27ed64[_0x9659('0x13')],_0x27ed64['message']?_0x27ed64[_0x9659('0x14')]['id']:0x0,_0x27ed64[_0x9659('0x15')]?_0x27ed64[_0x9659('0x15')]['id']:0x0);if(_0x805d8c[_0x9659('0x12')][_0x3fd131]){_0x805d8c[_0x9659('0x12')][_0x3fd131][_0x9659('0x3c')](_0x9659('0x44'));if(rpc[_0x27ed64['channel']+_0x9659('0x45')]){rpc[_0x27ed64[_0x9659('0x13')]+_0x9659('0x45')][_0x9659('0x46')](_0x3fd131,{'UserId':_0x27ed64[_0x9659('0x14')][_0x9659('0x47')]})[_0x9659('0x48')](function(_0x3e93b9){logger[_0x9659('0x38')]('error\x20update\x20queue\x20report');});}}return _0x55304f({'code':0xc8,'message':_0x27ed64});}catch(_0x160549){logger[_0x9659('0x38')](_0x160549['stack']);return _0x569343(_0xa2822b[_0x9659('0x38')](0x1f4,_0x160549));}}logger[_0x9659('0x38')](_0x9659('0x49'));return _0x569343(_0xa2822b[_0x9659('0x38')](0x1f4,_0x9659('0x49')));});},'RejectMessage':function(_0x2fd5a4){var _0x182107=this;return new Promise(function(_0x35c8c9,_0x2d8803){if(_0x2fd5a4['agent']&&_0x2fd5a4[_0x9659('0x40')]['id']){try{if(_0x805d8c[_0x9659('0x41')][_0x2fd5a4[_0x9659('0x40')]['id']]){_0x805d8c[_0x9659('0x41')][_0x2fd5a4[_0x9659('0x40')]['id']][_0x9659('0x42')]=![];_0x805d8c['agents'][_0x2fd5a4[_0x9659('0x40')]['id']][_0x9659('0x43')]=undefined;}return _0x35c8c9({'code':0xc8,'message':_0x2fd5a4});}catch(_0x1eb83f){logger[_0x9659('0x38')](_0x1eb83f[_0x9659('0x3f')]);return _0x2d8803(_0x182107[_0x9659('0x38')](0x1f4,_0x1eb83f));}}logger[_0x9659('0x38')](_0x9659('0x49'));return _0x2d8803(_0x182107[_0x9659('0x38')](0x1f4,_0x9659('0x49')));});},'AbandonInteraction':function(_0x2465f9){var _0xdca12e=this;return new Promise(function(_0x5a3e31,_0x2e36ff){if(_0x2465f9[_0x9659('0x13')]&&_0x2465f9[_0x9659('0x15')]&&_0x2465f9[_0x9659('0x15')]['id']){try{var _0x1394d0=getId(_0x2465f9['channel'],_0x2465f9[_0x9659('0x14')]?_0x2465f9[_0x9659('0x14')]['id']:0x0,_0x2465f9['interaction']?_0x2465f9[_0x9659('0x15')]['id']:0x0);if(_0x805d8c[_0x9659('0x12')][_0x1394d0]){_0x805d8c[_0x9659('0x12')][_0x1394d0]['emit'](_0x9659('0x44'));}return _0x5a3e31({'code':0xc8,'message':_0x2465f9});}catch(_0x33633d){logger[_0x9659('0x38')](_0x33633d['stack']);return _0x2e36ff(_0xdca12e[_0x9659('0x38')](0x1f4,_0x33633d));}}logger['error'](_0x9659('0x49'));return _0x2e36ff(_0xdca12e[_0x9659('0x38')](0x1f4,_0x9659('0x49')));});},'AgentCapacity':function(_0x2a0565){var _0x4e0f61=this;return new Promise(function(_0xa275ec,_0x343ab5){if(_0x805d8c[_0x9659('0x41')]['hasOwnProperty'](_0x2a0565['id'])){for(var _0x568ee4 in _0x2a0565['capacity']){if(_0x2a0565['capacity']['hasOwnProperty'](_0x568ee4)){if(_0x805d8c['agents'][_0x2a0565['id']][_0x9659('0x4a')](_0x568ee4+'CurrentCapacity')){_0x805d8c[_0x9659('0x41')][_0x2a0565['id']][_0x568ee4+_0x9659('0x4b')]=parseInt(_0x2a0565['capacity'][_0x568ee4],0xa);}}}_0x805d8c[_0x9659('0x41')][_0x2a0565['id']]['updateRealtime']();return _0xa275ec({'code':0xc8,'message':_0x805d8c[_0x9659('0x41')][_0x2a0565['id']]});}else{return _0x343ab5(_0x4e0f61['error'](0x1f4,_0x9659('0x4c')));}});},'Agents':function(_0x2da536){return new Promise(function(_0x40ea32,_0x33837b){var _0x567f92=_['values'](_0x805d8c['agents']);_0x40ea32({'count':_0x567f92[_0x9659('0x18')],'rows':_0x567f92});});},'ChatQueues':function(_0x4473d2){return new Promise(function(_0x32cc04,_0xf2f8a8){var _0x43fd2e=[];for(var _0x265ce1 in _0x805d8c['chatQueues']){if(_0x805d8c[_0x9659('0x4d')]['hasOwnProperty'](_0x265ce1)){var _0x50a0ad=_0x805d8c[_0x9659('0x4d')][_0x265ce1];var _0x210e55={'id':_0x50a0ad['id'],'available':_0x50a0ad['available'],'loggedIn':_0x50a0ad['loggedIn'],'name':_0x50a0ad['name'],'paused':_0x50a0ad['paused'],'waiting':_0x50a0ad['waiting']};_0x43fd2e[_0x9659('0x21')](_0x210e55);}}_0x32cc04({'count':_0x43fd2e[_0x9659('0x18')],'rows':_0x43fd2e});});},'MailQueues':function(_0x2b21b7){return new Promise(function(_0x4fd7ce,_0x193846){var _0x2e7f9c=[];for(var _0x36016e in _0x805d8c['mailQueues']){if(_0x805d8c[_0x9659('0x4e')]['hasOwnProperty'](_0x36016e)){var _0x1ff51a=_0x805d8c[_0x9659('0x4e')][_0x36016e];var _0x2cffc4={'id':_0x1ff51a['id'],'available':_0x1ff51a[_0x9659('0x4f')],'loggedIn':_0x1ff51a[_0x9659('0x50')],'name':_0x1ff51a['name'],'paused':_0x1ff51a[_0x9659('0x51')],'waiting':_0x1ff51a['waiting']};_0x2e7f9c[_0x9659('0x21')](_0x2cffc4);}}_0x4fd7ce({'count':_0x2e7f9c[_0x9659('0x18')],'rows':_0x2e7f9c});});},'OpenchannelQueues':function(_0x474d6b){return new Promise(function(_0x5e9bcc,_0x46343f){var _0xe0dbd6=[];for(var _0x1f361e in _0x805d8c['openchannelQueues']){if(_0x805d8c[_0x9659('0x52')]['hasOwnProperty'](_0x1f361e)){var _0x2d2912=_0x805d8c[_0x9659('0x52')][_0x1f361e];var _0x164d1c={'id':_0x2d2912['id'],'available':_0x2d2912[_0x9659('0x4f')],'loggedIn':_0x2d2912[_0x9659('0x50')],'name':_0x2d2912[_0x9659('0x53')],'paused':_0x2d2912[_0x9659('0x51')],'waiting':_0x2d2912[_0x9659('0x54')]};_0xe0dbd6[_0x9659('0x21')](_0x164d1c);}}_0x5e9bcc({'count':_0xe0dbd6['length'],'rows':_0xe0dbd6});});},'SmsQueues':function(_0x3070ef){return new Promise(function(_0x188fee,_0x2b5366){var _0xe0f36b=[];for(var _0xa35508 in _0x805d8c[_0x9659('0x55')]){if(_0x805d8c[_0x9659('0x55')][_0x9659('0x4a')](_0xa35508)){var _0xcdbbc8=_0x805d8c[_0x9659('0x55')][_0xa35508];var _0x1a76e0={'id':_0xcdbbc8['id'],'available':_0xcdbbc8['available'],'loggedIn':_0xcdbbc8[_0x9659('0x50')],'name':_0xcdbbc8[_0x9659('0x53')],'paused':_0xcdbbc8['paused'],'waiting':_0xcdbbc8['waiting']};_0xe0f36b[_0x9659('0x21')](_0x1a76e0);}}_0x188fee({'count':_0xe0f36b[_0x9659('0x18')],'rows':_0xe0f36b});});},'FaxQueues':function(_0x12df23){return new Promise(function(_0x5dde2d,_0xa7df2b){var _0x2341fb=[];for(var _0x2f352f in _0x805d8c[_0x9659('0x56')]){if(_0x805d8c['faxQueues'][_0x9659('0x4a')](_0x2f352f)){var _0x1b0879=_0x805d8c[_0x9659('0x56')][_0x2f352f];var _0x39e326={'id':_0x1b0879['id'],'available':_0x1b0879[_0x9659('0x4f')],'loggedIn':_0x1b0879['loggedIn'],'name':_0x1b0879['name'],'paused':_0x1b0879['paused'],'waiting':_0x1b0879[_0x9659('0x54')]};_0x2341fb['push'](_0x39e326);}}_0x5dde2d({'count':_0x2341fb[_0x9659('0x18')],'rows':_0x2341fb});});},'WhatsappQueues':function(_0x4958cf){return new Promise(function(_0x1c85fa,_0x3270a0){var _0x679c1=[];for(var _0x170fcb in _0x805d8c[_0x9659('0x57')]){if(_0x805d8c[_0x9659('0x57')]['hasOwnProperty'](_0x170fcb)){var _0x4d8f7f=_0x805d8c[_0x9659('0x57')][_0x170fcb];var _0x5379b5={'id':_0x4d8f7f['id'],'available':_0x4d8f7f['available'],'loggedIn':_0x4d8f7f[_0x9659('0x50')],'name':_0x4d8f7f[_0x9659('0x53')],'paused':_0x4d8f7f['paused'],'waiting':_0x4d8f7f['waiting']};_0x679c1[_0x9659('0x21')](_0x5379b5);}}_0x1c85fa({'count':_0x679c1[_0x9659('0x18')],'rows':_0x679c1});});},'ChatQueuesWaitingInteractions':function(_0x407f7a){return new Promise(function(_0x26b11e,_0x4dc0cf){var _0x5a0dd8=_[_0x9659('0x58')](_0x805d8c[_0x9659('0x59')]);_0x26b11e({'count':_0x5a0dd8[_0x9659('0x18')],'rows':_0x5a0dd8});});},'MailQueuesWaitingInteractions':function(_0x3c6c4d){return new Promise(function(_0xc318,_0x236af2){var _0x15bf11=_[_0x9659('0x58')](_0x805d8c['mailQueuesWaitingInteractions']);_0xc318({'count':_0x15bf11[_0x9659('0x18')],'rows':_0x15bf11});});},'OpenchannelQueuesWaitingInteractions':function(_0x5e2474){return new Promise(function(_0x25831a,_0x561701){var _0x668a1c=_['values'](_0x805d8c[_0x9659('0x5a')]);_0x25831a({'count':_0x668a1c['length'],'rows':_0x668a1c});});},'SmsQueuesWaitingInteractions':function(_0x55f3ec){return new Promise(function(_0x518c24,_0x3c8056){var _0x2cfaa5=_[_0x9659('0x58')](_0x805d8c[_0x9659('0x5b')]);_0x518c24({'count':_0x2cfaa5[_0x9659('0x18')],'rows':_0x2cfaa5});});},'FaxQueuesWaitingInteractions':function(_0x4b98ba){return new Promise(function(_0x18cf07,_0xba8d8c){var _0x495857=_[_0x9659('0x58')](_0x805d8c[_0x9659('0x5c')]);_0x18cf07({'count':_0x495857[_0x9659('0x18')],'rows':_0x495857});});},'WhatsappQueuesWaitingInteractions':function(_0x397ba3){return new Promise(function(_0x4d6dd8,_0x57604c){var _0xe75846=_[_0x9659('0x58')](_0x805d8c[_0x9659('0x5d')]);_0x4d6dd8({'count':_0xe75846[_0x9659('0x18')],'rows':_0xe75846});});}};var _0x2be4c6=jayson['server'](_0x323c10)['http']();_0x2be4c6['on'](_0x9659('0x38'),function(_0x8d9d9f){logger['error'](JSON[_0x9659('0x3a')](_0x8d9d9f));return _0x103825(_0x8d9d9f);});_0x2be4c6[_0x9659('0x11')](0x232c,_0x9659('0x5e'),function(){console[_0x9659('0x5f')](_0x9659('0x60'),0x232c);return _0x2a5d78(_0x9659('0x61')+0x232c);});});};
\ No newline at end of file
index f52fd10..2edba92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb188=['routing','client','http','request','then','error','message','result','catch','condition','rules','[%s][INTERVAL]\x20ROUTING\x20STOPPED','length','push','Command','format','iftime\x20%s','indexOf','[%s][INTERVAL]\x20%s','all','some','info','[%s][INTERVAL]\x20%s\x20%s','join','log','\x20|\x20','stop','util','bluebird','jayson/promise','lodash','../../../config/logger'];(function(_0x36fd79,_0x5c2f22){var _0x1347c1=function(_0x59fb86){while(--_0x59fb86){_0x36fd79['push'](_0x36fd79['shift']());}};_0x1347c1(++_0x5c2f22);}(_0xb188,0xdb));var _0x8b18=function(_0x44ba7,_0xd2295f){_0x44ba7=_0x44ba7-0x0;var _0x17d140=_0xb188[_0x44ba7];return _0x17d140;};'use strict';var util=require(_0x8b18('0x0'));var BPromise=require(_0x8b18('0x1'));var jayson=require(_0x8b18('0x2'));var _=require(_0x8b18('0x3'));var logger=require(_0x8b18('0x4'))(_0x8b18('0x5'));var client=jayson[_0x8b18('0x6')][_0x8b18('0x7')]({'port':0x232a});function request(_0x8b818c,_0x1fadd4){return new BPromise(function(_0x3be549,_0x3166e5){return client[_0x8b18('0x8')](_0x8b818c,_0x1fadd4)[_0x8b18('0x9')](function(_0x523f93){if(_0x523f93['error']){return _0x3166e5(_0x523f93[_0x8b18('0xa')][_0x8b18('0xb')]);}else{return _0x3be549(_0x523f93[_0x8b18('0xc')]);}})[_0x8b18('0xd')](function(_0x5d7e9c){return _0x3166e5(_0x5d7e9c);});});}exports[_0x8b18('0xe')]=function(_0xe8ea19,_0x2dff42,_0x189d1b){return function(_0x1d3d4f){if(_0x189d1b[_0x8b18('0xf')]&&!_0x189d1b[_0x8b18('0xf')][_0xe8ea19]){logger['info'](_0x8b18('0x10'),_0xe8ea19);return _0x1d3d4f['stop']();}var _0x12fe57=[];for(var _0xd13d6c=0x0;_0xd13d6c<_0x2dff42[_0x8b18('0x11')];_0xd13d6c+=0x1){_0x12fe57[_0x8b18('0x12')](request(_0x8b18('0x13'),{'command':util[_0x8b18('0x14')](_0x8b18('0x15'),_0x2dff42[_0xd13d6c])})[_0x8b18('0x9')](function(_0x2d2c05){return _0x2d2c05&&_0x2d2c05[_0x8b18('0xb')]&&_0x2d2c05[_0x8b18('0xb')][_0x8b18('0x16')]('true')>=0x0?!![]:![];})[_0x8b18('0xd')](function(_0x423736){logger[_0x8b18('0xa')](_0x8b18('0x17'),_0xe8ea19,_0x2dff42[_0xd13d6c]);}));}BPromise[_0x8b18('0x18')](_0x12fe57)[_0x8b18('0x9')](function(_0x927d7a){var _0x3cc2c6=_[_0x8b18('0x19')](_0x927d7a);logger[_0x8b18('0x1a')](_0x8b18('0x1b'),_0xe8ea19,_0x2dff42[_0x8b18('0x1c')]('\x20|\x20'),_0x3cc2c6);_0x1d3d4f['when'](_0x3cc2c6);})[_0x8b18('0xd')](function(_0x362b05){console[_0x8b18('0x1d')](_0x362b05);logger[_0x8b18('0xa')](_0x8b18('0x1b'),_0xe8ea19,_0x2dff42[_0x8b18('0x1c')](_0x8b18('0x1e')),_0x362b05['stack']);_0x1d3d4f[_0x8b18('0x1f')]();});};};
\ No newline at end of file
+var _0x6c9e=['error','message','result','catch','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','format','iftime\x20%s','indexOf','true','all','some','join','\x20|\x20','log','util','lodash','../../../config/logger','routing','then'];(function(_0x16ea87,_0x378d8b){var _0x6e7b1c=function(_0x26306e){while(--_0x26306e){_0x16ea87['push'](_0x16ea87['shift']());}};_0x6e7b1c(++_0x378d8b);}(_0x6c9e,0x133));var _0xe6c9=function(_0x459963,_0x21e804){_0x459963=_0x459963-0x0;var _0x2c3556=_0x6c9e[_0x459963];return _0x2c3556;};'use strict';var util=require(_0xe6c9('0x0'));var BPromise=require('bluebird');var jayson=require('jayson/promise');var _=require(_0xe6c9('0x1'));var logger=require(_0xe6c9('0x2'))(_0xe6c9('0x3'));var client=jayson['client']['http']({'port':0x232a});function request(_0x29dcf9,_0x25dc8e){return new BPromise(function(_0x3fe8c3,_0x40ce8e){return client['request'](_0x29dcf9,_0x25dc8e)[_0xe6c9('0x4')](function(_0x18cb78){if(_0x18cb78[_0xe6c9('0x5')]){return _0x40ce8e(_0x18cb78['error'][_0xe6c9('0x6')]);}else{return _0x3fe8c3(_0x18cb78[_0xe6c9('0x7')]);}})[_0xe6c9('0x8')](function(_0x19fcae){return _0x40ce8e(_0x19fcae);});});}exports['condition']=function(_0x299ba4,_0xe0b72b,_0x302a62){return function(_0x312ff5){if(_0x302a62[_0xe6c9('0x9')]&&!_0x302a62[_0xe6c9('0x9')][_0x299ba4]){logger[_0xe6c9('0xa')](_0xe6c9('0xb'),_0x299ba4);return _0x312ff5[_0xe6c9('0xc')]();}var _0x594c4a=[];for(var _0x27bc81=0x0;_0x27bc81<_0xe0b72b[_0xe6c9('0xd')];_0x27bc81+=0x1){_0x594c4a[_0xe6c9('0xe')](request('Command',{'command':util[_0xe6c9('0xf')](_0xe6c9('0x10'),_0xe0b72b[_0x27bc81])})[_0xe6c9('0x4')](function(_0x49b2fc){return _0x49b2fc&&_0x49b2fc['message']&&_0x49b2fc[_0xe6c9('0x6')][_0xe6c9('0x11')](_0xe6c9('0x12'))>=0x0?!![]:![];})['catch'](function(_0x4c5217){logger['error']('[%s][INTERVAL]\x20%s',_0x299ba4,_0xe0b72b[_0x27bc81]);}));}BPromise[_0xe6c9('0x13')](_0x594c4a)['then'](function(_0x3bd842){var _0x58cfa4=_[_0xe6c9('0x14')](_0x3bd842);logger[_0xe6c9('0xa')]('[%s][INTERVAL]\x20%s\x20%s',_0x299ba4,_0xe0b72b[_0xe6c9('0x15')](_0xe6c9('0x16')),_0x58cfa4);_0x312ff5['when'](_0x58cfa4);})[_0xe6c9('0x8')](function(_0x17b4f8){console[_0xe6c9('0x17')](_0x17b4f8);logger[_0xe6c9('0x5')]('[%s][INTERVAL]\x20%s\x20%s',_0x299ba4,_0xe0b72b[_0xe6c9('0x15')](_0xe6c9('0x16')),_0x17b4f8['stack']);_0x312ff5[_0xe6c9('0xc')]();});};};
\ No newline at end of file
index 8290703..a7e5dfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['ringtime','talktime','push','[%s][agents][agentringnoanswer]','queuecallerabandon','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','holdtime','connect','forIn','answered_elsewhere','answeredelsewheredestinationuniqueid','isNil','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','complete','blindtransfer','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfereruniqueid','blind','transferexten','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','transfer','transfertype','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridnum','calleridname','secondtransfererlinkedid','transfertargetuniqueid','agentcalledAt','hangup','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','agent','util','./utils','format','uniqueid','channel','membername','interface','lastevent','queue','getVoiceQueueByName','then','type','agentacw','agentcomplete','acw','acwtime','acwTimeout','request','CreateVoiceAgentReport','destuniqueid','debug','called','connectedlinenum','connectedlinename','info','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','[%s][agents][agentcalled]','agentringnoanswer','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','now','timeout','reason'];(function(_0x226fcc,_0x912dc3){var _0x27181b=function(_0x52763e){while(--_0x52763e){_0x226fcc['push'](_0x226fcc['shift']());}};_0x27181b(++_0x912dc3);}(_0xda3f,0xec));var _0xfda3=function(_0x56b0e0,_0x183e46){_0x56b0e0=_0x56b0e0-0x0;var _0x1cccbe=_0xda3f[_0x56b0e0];return _0x1cccbe;};'use strict';var _=require('lodash');var util=require(_0xfda3('0x0'));var utils=require(_0xfda3('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x534697,_0x5299b0){utils['info'](util[_0xfda3('0x2')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x534697[_0xfda3('0x3')],_0x534697[_0xfda3('0x4')],_0x534697['queue'],_0x534697[_0xfda3('0x5')],_0x534697[_0xfda3('0x6')],_0x534697['calleridnum'],_0x534697['connectedlinenum'],_0x534697[_0xfda3('0x7')]));if(_0x534697[_0xfda3('0x8')]){utils[_0xfda3('0x9')](_0x534697[_0xfda3('0x8')])[_0xfda3('0xa')](function(_0x20e790){if(_0x20e790){_0x534697[_0xfda3('0xb')]=_0x20e790[_0xfda3('0xb')];_0x534697[_0xfda3('0xc')]=_0x534697[_0xfda3('0xd')]?_0x20e790[_0xfda3('0xe')]:![];_0x534697[_0xfda3('0xf')]=_0x534697['agentacw']?_0x20e790[_0xfda3('0x10')]:0x0;}utils[_0xfda3('0x11')](_0xfda3('0x12'),_0x534697);});}else{utils[_0xfda3('0x11')](_0xfda3('0x12'),_0x534697);}if(_0x5299b0){delete transfers[_0x534697['uniqueid']];}else{delete agents[_0x534697[_0xfda3('0x13')]];}}exports['agentcalled']=function(_0x3fd031){try{utils[_0xfda3('0x14')](util['format']('[%s][agents][agentcalled]',_0x3fd031['uniqueid']),_0x3fd031);agents[_0x3fd031[_0xfda3('0x13')]]=_0x3fd031;agents[_0x3fd031[_0xfda3('0x13')]]['agentcalledAt']=utils['now']();agents[_0x3fd031['destuniqueid']][_0xfda3('0x7')]=_0xfda3('0x15');agents[_0x3fd031[_0xfda3('0x13')]][_0xfda3('0x16')]=null;agents[_0x3fd031[_0xfda3('0x13')]][_0xfda3('0x17')]=null;utils[_0xfda3('0x18')](util[_0xfda3('0x2')](_0xfda3('0x19'),_0x3fd031[_0xfda3('0x3')],agents[_0x3fd031['destuniqueid']][_0xfda3('0x5')],_0x3fd031[_0xfda3('0x13')]));}catch(_0x12d568){utils[_0xfda3('0x1a')](util['format'](_0xfda3('0x1b'),_0x3fd031[_0xfda3('0x3')]),_0x12d568);}};exports[_0xfda3('0x1c')]=function(_0x51e731){try{if(!_['isNil'](agents[_0x51e731[_0xfda3('0x13')]])){utils[_0xfda3('0x14')](util[_0xfda3('0x2')]('[%s][agents][agentringnoanswer]',_0x51e731[_0xfda3('0x3')]),_0x51e731);utils[_0xfda3('0x18')](util[_0xfda3('0x2')](_0xfda3('0x1d'),_0x51e731[_0xfda3('0x3')],agents[_0x51e731[_0xfda3('0x13')]][_0xfda3('0x5')],_0x51e731[_0xfda3('0x13')]));agents[_0x51e731[_0xfda3('0x13')]]['agentringnoanswer']=!![];agents[_0x51e731[_0xfda3('0x13')]][_0xfda3('0x1e')]=utils[_0xfda3('0x1f')]();agents[_0x51e731['destuniqueid']][_0xfda3('0x7')]=_0xfda3('0x20');agents[_0x51e731[_0xfda3('0x13')]][_0xfda3('0x21')]=_0xfda3('0x20');agents[_0x51e731[_0xfda3('0x13')]]['holdtime']=_0x51e731[_0xfda3('0x22')]?parseInt(_0x51e731[_0xfda3('0x22')])/0x3e8:0x0;agents[_0x51e731[_0xfda3('0x13')]][_0xfda3('0x23')]=0x0;unanswered[_0xfda3('0x24')](_0x51e731['destuniqueid']);}}catch(_0x3c1549){utils[_0xfda3('0x1a')](util[_0xfda3('0x2')](_0xfda3('0x25'),_0x51e731[_0xfda3('0x3')]),_0x3c1549);}};exports[_0xfda3('0x26')]=function(_0x26e544){try{_['forIn'](agents,function(_0x56ca3a,_0x3aef3c){if(_0x56ca3a['uniqueid']==_0x26e544['uniqueid']&&!_[_0xfda3('0x27')](unanswered,_0x56ca3a[_0xfda3('0x13')])){utils[_0xfda3('0x14')](util[_0xfda3('0x2')](_0xfda3('0x28'),_0x26e544[_0xfda3('0x3')]),_0x26e544);utils[_0xfda3('0x18')](util[_0xfda3('0x2')](_0xfda3('0x29'),_0x26e544['uniqueid'],_0x56ca3a[_0xfda3('0x5')],_0x56ca3a[_0xfda3('0x13')]));_0x56ca3a[_0xfda3('0x1c')]=!![];_0x56ca3a[_0xfda3('0x1e')]=utils[_0xfda3('0x1f')]();_0x56ca3a[_0xfda3('0x7')]=_0xfda3('0x2a');_0x56ca3a[_0xfda3('0x21')]=_0xfda3('0x2a');_0x56ca3a['holdtime']=_0x26e544['holdtime'];_0x56ca3a[_0xfda3('0x23')]=0x0;writeDB(_0x56ca3a);}});}catch(_0x17cccb){utils['error'](util[_0xfda3('0x2')](_0xfda3('0x28'),_0x26e544[_0xfda3('0x3')]),_0x17cccb);}};exports['agentconnect']=function(_0x1d92a9){try{if(agents[_0x1d92a9[_0xfda3('0x13')]]){utils[_0xfda3('0x14')](util[_0xfda3('0x2')](_0xfda3('0x2b'),_0x1d92a9['uniqueid']),_0x1d92a9);utils[_0xfda3('0x18')](util[_0xfda3('0x2')](_0xfda3('0x2c'),_0x1d92a9['uniqueid'],agents[_0x1d92a9[_0xfda3('0x13')]]['membername'],_0x1d92a9[_0xfda3('0x13')]));agents[_0x1d92a9[_0xfda3('0x13')]][_0xfda3('0x2d')]=utils[_0xfda3('0x1f')]();agents[_0x1d92a9[_0xfda3('0x13')]][_0xfda3('0x16')]=_0x1d92a9[_0xfda3('0x16')];agents[_0x1d92a9[_0xfda3('0x13')]]['connectedlinename']=_0x1d92a9[_0xfda3('0x17')];agents[_0x1d92a9[_0xfda3('0x13')]][_0xfda3('0x2e')]=_0x1d92a9[_0xfda3('0x22')];agents[_0x1d92a9['destuniqueid']][_0xfda3('0x7')]=_0xfda3('0x2f');_[_0xfda3('0x30')](agents,function(_0x5bad90,_0x5ac61e){if(_0x5bad90[_0xfda3('0x13')]!=_0x1d92a9[_0xfda3('0x13')]&&_0x5bad90[_0xfda3('0x3')]==_0x1d92a9[_0xfda3('0x3')]){_0x5bad90[_0xfda3('0x23')]=0x0;_0x5bad90[_0xfda3('0x2e')]=_0x1d92a9[_0xfda3('0x22')];_0x5bad90[_0xfda3('0x1c')]=!![];_0x5bad90[_0xfda3('0x1e')]=utils[_0xfda3('0x1f')]();_0x5bad90['lastevent']=_0xfda3('0x31');_0x5bad90[_0xfda3('0x21')]='answered_elsewhere';_0x5bad90[_0xfda3('0x32')]=_0x1d92a9['destuniqueid'];_0x5bad90['answeredelsewheremembername']=_0x1d92a9['membername'];writeDB(_0x5bad90);}});}}catch(_0x2208bc){utils[_0xfda3('0x1a')](util[_0xfda3('0x2')](_0xfda3('0x2b'),_0x1d92a9['uniqueid']),_0x2208bc);}};exports[_0xfda3('0xd')]=function(_0x25b9a6){try{if(!_[_0xfda3('0x33')](agents[_0x25b9a6[_0xfda3('0x13')]])){utils['debug'](util[_0xfda3('0x2')](_0xfda3('0x34'),_0x25b9a6[_0xfda3('0x3')]),_0x25b9a6);utils['info'](util['format'](_0xfda3('0x35'),_0x25b9a6[_0xfda3('0x3')],agents[_0x25b9a6[_0xfda3('0x13')]][_0xfda3('0x5')],_0x25b9a6[_0xfda3('0x13')]));agents[_0x25b9a6[_0xfda3('0x13')]][_0xfda3('0xd')]=!![];agents[_0x25b9a6[_0xfda3('0x13')]][_0xfda3('0x36')]=utils[_0xfda3('0x1f')]();agents[_0x25b9a6[_0xfda3('0x13')]][_0xfda3('0x23')]=utils[_0xfda3('0x37')](agents[_0x25b9a6[_0xfda3('0x13')]]['agentcompleteAt'],agents[_0x25b9a6['destuniqueid']][_0xfda3('0x2d')]);agents[_0x25b9a6[_0xfda3('0x13')]][_0xfda3('0x21')]=_0x25b9a6[_0xfda3('0x21')];agents[_0x25b9a6[_0xfda3('0x13')]][_0xfda3('0x7')]=_0xfda3('0x38');writeDB(agents[_0x25b9a6[_0xfda3('0x13')]]);}}catch(_0x1372ee){utils[_0xfda3('0x1a')](util['format'](_0xfda3('0x34'),_0x25b9a6[_0xfda3('0x3')]),_0x1372ee);}};exports[_0xfda3('0x39')]=function(_0x36aa3a){try{if(!_[_0xfda3('0x33')](agents[_0x36aa3a['transfereruniqueid']])){utils[_0xfda3('0x14')](util[_0xfda3('0x2')](_0xfda3('0x3a'),_0x36aa3a['uniqueid']),_0x36aa3a);utils[_0xfda3('0x18')](util[_0xfda3('0x2')](_0xfda3('0x3b'),_0x36aa3a['uniqueid'],agents[_0x36aa3a[_0xfda3('0x3c')]][_0xfda3('0x5')],agents[_0x36aa3a[_0xfda3('0x3c')]][_0xfda3('0x3')]));agents[_0x36aa3a[_0xfda3('0x3c')]]['transfer']=!![];agents[_0x36aa3a[_0xfda3('0x3c')]]['transfertype']=_0xfda3('0x3d');agents[_0x36aa3a['transfereruniqueid']][_0xfda3('0x3e')]=_0x36aa3a[_0xfda3('0x3f')];agents[_0x36aa3a[_0xfda3('0x3c')]][_0xfda3('0x40')]=agents[_0x36aa3a['transfereruniqueid']][_0xfda3('0x3')];}}catch(_0x3b430d){utils[_0xfda3('0x1a')](util[_0xfda3('0x2')](_0xfda3('0x3a'),_0x36aa3a[_0xfda3('0x3')]),_0x3b430d);}};exports[_0xfda3('0x41')]=function(_0x54fba2){try{utils['debug'](util[_0xfda3('0x2')](_0xfda3('0x42'),_0x54fba2[_0xfda3('0x43')]),_0x54fba2);if(_0x54fba2['origtransfereruniqueid']==_0x54fba2['origtransfererlinkedid']){if(!_[_0xfda3('0x33')](agents[_0x54fba2[_0xfda3('0x44')]])){utils[_0xfda3('0x18')](util[_0xfda3('0x2')](_0xfda3('0x45'),_0x54fba2['origtransfereruniqueid'],agents[_0x54fba2[_0xfda3('0x44')]][_0xfda3('0x5')]));agents[_0x54fba2[_0xfda3('0x44')]][_0xfda3('0x46')]=!![];agents[_0x54fba2[_0xfda3('0x44')]][_0xfda3('0x47')]=_0xfda3('0x48');agents[_0x54fba2[_0xfda3('0x44')]][_0xfda3('0x3e')]=_0x54fba2[_0xfda3('0x49')];agents[_0x54fba2[_0xfda3('0x44')]][_0xfda3('0x40')]=_0x54fba2['origtransfereruniqueid'];}if(_0x54fba2[_0xfda3('0x4a')]&&agents[_0x54fba2[_0xfda3('0x4a')]]){agents[_0x54fba2[_0xfda3('0x4a')]][_0xfda3('0x4b')]=0x1;transfers[_0x54fba2[_0xfda3('0x4a')]]=_[_0xfda3('0x4c')](agents[_0x54fba2[_0xfda3('0x4a')]]);transfers[_0x54fba2['transfereeuniqueid']]['calleridnum']=agents[_0x54fba2[_0xfda3('0x44')]][_0xfda3('0x4d')];transfers[_0x54fba2['transfereeuniqueid']][_0xfda3('0x4e')]=agents[_0x54fba2[_0xfda3('0x44')]][_0xfda3('0x4e')];transfers[_0x54fba2[_0xfda3('0x4a')]]['agentcalledAt']=utils['now']();transfers[_0x54fba2[_0xfda3('0x4a')]][_0xfda3('0x2d')]=utils[_0xfda3('0x1f')]();transfers[_0x54fba2['transfereeuniqueid']][_0xfda3('0x2e')]=0x0;transfers[_0x54fba2['transfereeuniqueid']][_0xfda3('0x4b')]=0x2;}}else if(_0x54fba2[_0xfda3('0x44')]==_0x54fba2[_0xfda3('0x4f')]){if(!_[_0xfda3('0x33')](agents[_0x54fba2[_0xfda3('0x43')]])){utils[_0xfda3('0x18')](util['format'](_0xfda3('0x45'),_0x54fba2[_0xfda3('0x43')],agents[_0x54fba2[_0xfda3('0x43')]][_0xfda3('0x5')]));agents[_0x54fba2[_0xfda3('0x43')]]['transfer']=!![];agents[_0x54fba2['origtransfereruniqueid']][_0xfda3('0x47')]=_0xfda3('0x48');agents[_0x54fba2['origtransfereruniqueid']]['transferexten']=_0x54fba2['secondtransfererexten'];agents[_0x54fba2[_0xfda3('0x43')]][_0xfda3('0x40')]=_0x54fba2['secondtransfereruniqueid'];}if(_0x54fba2[_0xfda3('0x50')]&&agents[_0x54fba2[_0xfda3('0x50')]]){agents[_0x54fba2[_0xfda3('0x50')]][_0xfda3('0x4b')]=0x1;transfers[_0x54fba2['transfertargetuniqueid']]=_[_0xfda3('0x4c')](agents[_0x54fba2[_0xfda3('0x50')]]);transfers[_0x54fba2[_0xfda3('0x50')]][_0xfda3('0x4d')]=agents[_0x54fba2[_0xfda3('0x43')]][_0xfda3('0x4d')];transfers[_0x54fba2['transfertargetuniqueid']]['calleridname']=agents[_0x54fba2[_0xfda3('0x43')]]['calleridname'];transfers[_0x54fba2[_0xfda3('0x50')]][_0xfda3('0x51')]=utils[_0xfda3('0x1f')]();transfers[_0x54fba2[_0xfda3('0x50')]][_0xfda3('0x2d')]=utils[_0xfda3('0x1f')]();transfers[_0x54fba2[_0xfda3('0x50')]][_0xfda3('0x2e')]=0x0;transfers[_0x54fba2[_0xfda3('0x50')]][_0xfda3('0x4b')]=0x2;}}}catch(_0x4aa383){utils[_0xfda3('0x1a')](util['format']('[%s][agents][attendedtransfer]',_0x54fba2[_0xfda3('0x43')]),_0x4aa383);}};exports[_0xfda3('0x52')]=function(_0x531874){try{utils[_0xfda3('0x14')](util[_0xfda3('0x2')](_0xfda3('0x53'),_0x531874['uniqueid']),_0x531874);if(agents[_0x531874[_0xfda3('0x3')]]&&agents[_0x531874[_0xfda3('0x3')]][_0xfda3('0x21')]===_0xfda3('0x20')){if(_0x531874[_0xfda3('0x54')]==='21'){agents[_0x531874['uniqueid']]['reason']='rejected';agents[_0x531874[_0xfda3('0x3')]][_0xfda3('0x7')]=_0xfda3('0x55');}utils[_0xfda3('0x18')](util[_0xfda3('0x2')](_0xfda3('0x56'),_0x531874['uniqueid'],agents[_0x531874[_0xfda3('0x3')]][_0xfda3('0x5')],agents[_0x531874[_0xfda3('0x3')]][_0xfda3('0x21')],agents[_0x531874['uniqueid']][_0xfda3('0x7')]));writeDB(agents[_0x531874['uniqueid']]);var _0x311645=unanswered[_0xfda3('0x57')](_0x531874[_0xfda3('0x3')]);if(_0x311645>-0x1){unanswered[_0xfda3('0x58')](_0x311645,0x1);}}if(transfers[_0x531874[_0xfda3('0x3')]]){transfers[_0x531874[_0xfda3('0x3')]][_0xfda3('0xd')]=!![];transfers[_0x531874['uniqueid']][_0xfda3('0x36')]=utils[_0xfda3('0x1f')]();transfers[_0x531874[_0xfda3('0x3')]][_0xfda3('0x23')]=utils[_0xfda3('0x37')](transfers[_0x531874[_0xfda3('0x3')]]['agentcompleteAt'],transfers[_0x531874[_0xfda3('0x3')]][_0xfda3('0x2d')]);transfers[_0x531874[_0xfda3('0x3')]][_0xfda3('0x21')]=_0xfda3('0x59');transfers[_0x531874['uniqueid']][_0xfda3('0x7')]=_0xfda3('0x38');utils[_0xfda3('0x18')](util[_0xfda3('0x2')](_0xfda3('0x56'),_0x531874[_0xfda3('0x3')],transfers[_0x531874[_0xfda3('0x3')]][_0xfda3('0x5')],transfers[_0x531874[_0xfda3('0x3')]][_0xfda3('0x21')],transfers[_0x531874['uniqueid']][_0xfda3('0x7')]));writeDB(transfers[_0x531874[_0xfda3('0x3')]],!![]);}if(agents[_0x531874[_0xfda3('0x3')]]&&agents[_0x531874[_0xfda3('0x3')]][_0xfda3('0x2d')]){agents[_0x531874['uniqueid']]['agentcomplete']=!![];agents[_0x531874[_0xfda3('0x3')]][_0xfda3('0x36')]=utils[_0xfda3('0x1f')]();agents[_0x531874[_0xfda3('0x3')]][_0xfda3('0x23')]=utils[_0xfda3('0x37')](agents[_0x531874[_0xfda3('0x3')]][_0xfda3('0x36')],agents[_0x531874[_0xfda3('0x3')]][_0xfda3('0x2d')]);agents[_0x531874[_0xfda3('0x3')]]['reason']=agents[_0x531874[_0xfda3('0x3')]]['transfer']?'transfer':'agent';agents[_0x531874[_0xfda3('0x3')]]['lastevent']=_0xfda3('0x38');utils[_0xfda3('0x18')](util['format'](_0xfda3('0x56'),_0x531874[_0xfda3('0x3')],agents[_0x531874['uniqueid']][_0xfda3('0x5')],agents[_0x531874['uniqueid']][_0xfda3('0x21')],agents[_0x531874[_0xfda3('0x3')]]['lastevent']));writeDB(agents[_0x531874[_0xfda3('0x3')]]);}}catch(_0x2122e3){utils[_0xfda3('0x1a')](util[_0xfda3('0x2')](_0xfda3('0x53'),_0x531874['uniqueid']),_0x2122e3);}};
\ No newline at end of file
+var _0x351d=['[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','agentringnoanswer','isNil','debug','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','reason','ringtime','push','error','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','holdtime','talktime','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinenum','connectedlinename','connect','forIn','answered_elsewhere','answeredelsewheredestinationuniqueid','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','blindtransfer','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfereruniqueid','transfer','transfertype','extension','transferuniqueid','[%s][agents][blindtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','ATTENDED','transferexten','secondtransfererexten','transfertargetuniqueid','[%s][agents][attendedtransfer]','hangup','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','diffTime','agent','complete','lodash','./utils','format','uniqueid','channel','membername','interface','calleridnum','lastevent','queue','then','type','agentcomplete','acw','agentacw','acwTimeout','CreateVoiceAgentReport','destuniqueid','agentcalled','[%s][agents][agentcalled]','agentcalledAt','now','called','info'];(function(_0x6c69c2,_0xaaffbc){var _0x13e423=function(_0x5647e4){while(--_0x5647e4){_0x6c69c2['push'](_0x6c69c2['shift']());}};_0x13e423(++_0xaaffbc);}(_0x351d,0x90));var _0xd351=function(_0xb5b60e,_0x37393e){_0xb5b60e=_0xb5b60e-0x0;var _0x424259=_0x351d[_0xb5b60e];return _0x424259;};'use strict';var _=require(_0xd351('0x0'));var util=require('util');var utils=require(_0xd351('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x2aa5fd,_0x340931){utils['info'](util[_0xd351('0x2')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x2aa5fd[_0xd351('0x3')],_0x2aa5fd[_0xd351('0x4')],_0x2aa5fd['queue'],_0x2aa5fd[_0xd351('0x5')],_0x2aa5fd[_0xd351('0x6')],_0x2aa5fd[_0xd351('0x7')],_0x2aa5fd['connectedlinenum'],_0x2aa5fd[_0xd351('0x8')]));if(_0x2aa5fd[_0xd351('0x9')]){utils['getVoiceQueueByName'](_0x2aa5fd[_0xd351('0x9')])[_0xd351('0xa')](function(_0x51c5f4){if(_0x51c5f4){_0x2aa5fd['type']=_0x51c5f4[_0xd351('0xb')];_0x2aa5fd['agentacw']=_0x2aa5fd[_0xd351('0xc')]?_0x51c5f4[_0xd351('0xd')]:![];_0x2aa5fd['acwtime']=_0x2aa5fd[_0xd351('0xe')]?_0x51c5f4[_0xd351('0xf')]:0x0;}utils['request'](_0xd351('0x10'),_0x2aa5fd);});}else{utils['request']('CreateVoiceAgentReport',_0x2aa5fd);}if(_0x340931){delete transfers[_0x2aa5fd[_0xd351('0x3')]];}else{delete agents[_0x2aa5fd[_0xd351('0x11')]];}}exports[_0xd351('0x12')]=function(_0x1eb2a9){try{utils['debug'](util[_0xd351('0x2')](_0xd351('0x13'),_0x1eb2a9['uniqueid']),_0x1eb2a9);agents[_0x1eb2a9[_0xd351('0x11')]]=_0x1eb2a9;agents[_0x1eb2a9[_0xd351('0x11')]][_0xd351('0x14')]=utils[_0xd351('0x15')]();agents[_0x1eb2a9[_0xd351('0x11')]]['lastevent']=_0xd351('0x16');agents[_0x1eb2a9['destuniqueid']]['connectedlinenum']=null;agents[_0x1eb2a9[_0xd351('0x11')]]['connectedlinename']=null;utils[_0xd351('0x17')](util[_0xd351('0x2')](_0xd351('0x18'),_0x1eb2a9['uniqueid'],agents[_0x1eb2a9[_0xd351('0x11')]][_0xd351('0x5')],_0x1eb2a9[_0xd351('0x11')]));}catch(_0x12b5aa){utils['error'](util[_0xd351('0x2')]('[%s][agents][agentcalled]',_0x1eb2a9['uniqueid']),_0x12b5aa);}};exports[_0xd351('0x19')]=function(_0x4a427b){try{if(!_[_0xd351('0x1a')](agents[_0x4a427b[_0xd351('0x11')]])){utils[_0xd351('0x1b')](util[_0xd351('0x2')](_0xd351('0x1c'),_0x4a427b['uniqueid']),_0x4a427b);utils[_0xd351('0x17')](util[_0xd351('0x2')](_0xd351('0x1d'),_0x4a427b['uniqueid'],agents[_0x4a427b[_0xd351('0x11')]][_0xd351('0x5')],_0x4a427b[_0xd351('0x11')]));agents[_0x4a427b['destuniqueid']][_0xd351('0x19')]=!![];agents[_0x4a427b[_0xd351('0x11')]][_0xd351('0x1e')]=utils[_0xd351('0x15')]();agents[_0x4a427b['destuniqueid']][_0xd351('0x8')]='timeout';agents[_0x4a427b[_0xd351('0x11')]][_0xd351('0x1f')]='timeout';agents[_0x4a427b[_0xd351('0x11')]]['holdtime']=_0x4a427b['ringtime']?parseInt(_0x4a427b[_0xd351('0x20')])/0x3e8:0x0;agents[_0x4a427b['destuniqueid']]['talktime']=0x0;unanswered[_0xd351('0x21')](_0x4a427b['destuniqueid']);}}catch(_0x38471c){utils[_0xd351('0x22')](util[_0xd351('0x2')]('[%s][agents][agentringnoanswer]',_0x4a427b[_0xd351('0x3')]),_0x38471c);}};exports['queuecallerabandon']=function(_0x1c826b){try{_['forIn'](agents,function(_0x5f07b1,_0xeb4da9){if(_0x5f07b1[_0xd351('0x3')]==_0x1c826b[_0xd351('0x3')]&&!_[_0xd351('0x23')](unanswered,_0x5f07b1['destuniqueid'])){utils[_0xd351('0x1b')](util[_0xd351('0x2')](_0xd351('0x24'),_0x1c826b[_0xd351('0x3')]),_0x1c826b);utils[_0xd351('0x17')](util[_0xd351('0x2')](_0xd351('0x25'),_0x1c826b[_0xd351('0x3')],_0x5f07b1[_0xd351('0x5')],_0x5f07b1['destuniqueid']));_0x5f07b1[_0xd351('0x19')]=!![];_0x5f07b1[_0xd351('0x1e')]=utils[_0xd351('0x15')]();_0x5f07b1[_0xd351('0x8')]='abandoned';_0x5f07b1[_0xd351('0x1f')]=_0xd351('0x26');_0x5f07b1[_0xd351('0x27')]=_0x1c826b[_0xd351('0x27')];_0x5f07b1[_0xd351('0x28')]=0x0;writeDB(_0x5f07b1);}});}catch(_0x37fbb8){utils[_0xd351('0x22')](util[_0xd351('0x2')](_0xd351('0x24'),_0x1c826b['uniqueid']),_0x37fbb8);}};exports['agentconnect']=function(_0x1fae11){try{if(agents[_0x1fae11[_0xd351('0x11')]]){utils[_0xd351('0x1b')](util[_0xd351('0x2')](_0xd351('0x29'),_0x1fae11[_0xd351('0x3')]),_0x1fae11);utils['info'](util['format'](_0xd351('0x2a'),_0x1fae11['uniqueid'],agents[_0x1fae11[_0xd351('0x11')]][_0xd351('0x5')],_0x1fae11[_0xd351('0x11')]));agents[_0x1fae11[_0xd351('0x11')]][_0xd351('0x2b')]=utils[_0xd351('0x15')]();agents[_0x1fae11[_0xd351('0x11')]][_0xd351('0x2c')]=_0x1fae11[_0xd351('0x2c')];agents[_0x1fae11[_0xd351('0x11')]][_0xd351('0x2d')]=_0x1fae11['connectedlinename'];agents[_0x1fae11[_0xd351('0x11')]]['holdtime']=_0x1fae11[_0xd351('0x20')];agents[_0x1fae11[_0xd351('0x11')]][_0xd351('0x8')]=_0xd351('0x2e');_[_0xd351('0x2f')](agents,function(_0x3db72a,_0x545bfc){if(_0x3db72a[_0xd351('0x11')]!=_0x1fae11[_0xd351('0x11')]&&_0x3db72a['uniqueid']==_0x1fae11[_0xd351('0x3')]){_0x3db72a[_0xd351('0x28')]=0x0;_0x3db72a[_0xd351('0x27')]=_0x1fae11[_0xd351('0x20')];_0x3db72a[_0xd351('0x19')]=!![];_0x3db72a['agentringnoanswerAt']=utils['now']();_0x3db72a[_0xd351('0x8')]=_0xd351('0x30');_0x3db72a['reason']='answered_elsewhere';_0x3db72a[_0xd351('0x31')]=_0x1fae11[_0xd351('0x11')];_0x3db72a['answeredelsewheremembername']=_0x1fae11['membername'];writeDB(_0x3db72a);}});}}catch(_0x46af23){utils[_0xd351('0x22')](util[_0xd351('0x2')](_0xd351('0x29'),_0x1fae11[_0xd351('0x3')]),_0x46af23);}};exports[_0xd351('0xc')]=function(_0x6192c3){try{if(!_[_0xd351('0x1a')](agents[_0x6192c3[_0xd351('0x11')]])){utils['debug'](util['format'](_0xd351('0x32'),_0x6192c3[_0xd351('0x3')]),_0x6192c3);utils[_0xd351('0x17')](util[_0xd351('0x2')](_0xd351('0x33'),_0x6192c3[_0xd351('0x3')],agents[_0x6192c3[_0xd351('0x11')]][_0xd351('0x5')],_0x6192c3[_0xd351('0x11')]));agents[_0x6192c3[_0xd351('0x11')]][_0xd351('0xc')]=!![];agents[_0x6192c3[_0xd351('0x11')]][_0xd351('0x34')]=utils[_0xd351('0x15')]();agents[_0x6192c3[_0xd351('0x11')]][_0xd351('0x28')]=utils['diffTime'](agents[_0x6192c3[_0xd351('0x11')]][_0xd351('0x34')],agents[_0x6192c3[_0xd351('0x11')]]['agentconnectAt']);agents[_0x6192c3[_0xd351('0x11')]][_0xd351('0x1f')]=_0x6192c3[_0xd351('0x1f')];agents[_0x6192c3[_0xd351('0x11')]][_0xd351('0x8')]='complete';writeDB(agents[_0x6192c3[_0xd351('0x11')]]);}}catch(_0x575ea0){utils[_0xd351('0x22')](util[_0xd351('0x2')]('[%s][agents][agentcomplete]',_0x6192c3['uniqueid']),_0x575ea0);}};exports[_0xd351('0x35')]=function(_0x444206){try{if(!_[_0xd351('0x1a')](agents[_0x444206['transfereruniqueid']])){utils[_0xd351('0x1b')](util[_0xd351('0x2')]('[%s][agents][blindtransfer]',_0x444206[_0xd351('0x3')]),_0x444206);utils['info'](util[_0xd351('0x2')](_0xd351('0x36'),_0x444206['uniqueid'],agents[_0x444206['transfereruniqueid']][_0xd351('0x5')],agents[_0x444206['transfereruniqueid']][_0xd351('0x3')]));agents[_0x444206[_0xd351('0x37')]][_0xd351('0x38')]=!![];agents[_0x444206['transfereruniqueid']][_0xd351('0x39')]='blind';agents[_0x444206['transfereruniqueid']]['transferexten']=_0x444206[_0xd351('0x3a')];agents[_0x444206[_0xd351('0x37')]][_0xd351('0x3b')]=agents[_0x444206['transfereruniqueid']]['uniqueid'];}}catch(_0x1748f0){utils[_0xd351('0x22')](util['format'](_0xd351('0x3c'),_0x444206[_0xd351('0x3')]),_0x1748f0);}};exports['attendedtransfer']=function(_0x24ee0f){try{utils['debug'](util[_0xd351('0x2')]('[%s][agents][attendedtransfer]',_0x24ee0f[_0xd351('0x3d')]),_0x24ee0f);if(_0x24ee0f[_0xd351('0x3d')]==_0x24ee0f[_0xd351('0x3e')]){if(!_[_0xd351('0x1a')](agents[_0x24ee0f[_0xd351('0x3f')]])){utils[_0xd351('0x17')](util[_0xd351('0x2')]('[%s][agents][attendedtransfer]\x20agent:%s',_0x24ee0f['origtransfereruniqueid'],agents[_0x24ee0f[_0xd351('0x3f')]][_0xd351('0x5')]));agents[_0x24ee0f['secondtransfereruniqueid']][_0xd351('0x38')]=!![];agents[_0x24ee0f[_0xd351('0x3f')]][_0xd351('0x39')]='ATTENDED';agents[_0x24ee0f[_0xd351('0x3f')]]['transferexten']=_0x24ee0f['origtransfererexten'];agents[_0x24ee0f[_0xd351('0x3f')]][_0xd351('0x3b')]=_0x24ee0f['origtransfereruniqueid'];}if(_0x24ee0f[_0xd351('0x40')]&&agents[_0x24ee0f[_0xd351('0x40')]]){agents[_0x24ee0f[_0xd351('0x40')]][_0xd351('0x41')]=0x1;transfers[_0x24ee0f[_0xd351('0x40')]]=_[_0xd351('0x42')](agents[_0x24ee0f['transfereeuniqueid']]);transfers[_0x24ee0f[_0xd351('0x40')]][_0xd351('0x7')]=agents[_0x24ee0f[_0xd351('0x3f')]][_0xd351('0x7')];transfers[_0x24ee0f[_0xd351('0x40')]][_0xd351('0x43')]=agents[_0x24ee0f[_0xd351('0x3f')]]['calleridname'];transfers[_0x24ee0f[_0xd351('0x40')]]['agentcalledAt']=utils[_0xd351('0x15')]();transfers[_0x24ee0f[_0xd351('0x40')]][_0xd351('0x2b')]=utils[_0xd351('0x15')]();transfers[_0x24ee0f[_0xd351('0x40')]]['holdtime']=0x0;transfers[_0x24ee0f[_0xd351('0x40')]]['agententerreason']=0x2;}}else if(_0x24ee0f[_0xd351('0x3f')]==_0x24ee0f[_0xd351('0x44')]){if(!_[_0xd351('0x1a')](agents[_0x24ee0f[_0xd351('0x3d')]])){utils[_0xd351('0x17')](util['format']('[%s][agents][attendedtransfer]\x20agent:%s',_0x24ee0f[_0xd351('0x3d')],agents[_0x24ee0f[_0xd351('0x3d')]]['membername']));agents[_0x24ee0f[_0xd351('0x3d')]][_0xd351('0x38')]=!![];agents[_0x24ee0f[_0xd351('0x3d')]]['transfertype']=_0xd351('0x45');agents[_0x24ee0f[_0xd351('0x3d')]][_0xd351('0x46')]=_0x24ee0f[_0xd351('0x47')];agents[_0x24ee0f['origtransfereruniqueid']]['transferuniqueid']=_0x24ee0f[_0xd351('0x3f')];}if(_0x24ee0f[_0xd351('0x48')]&&agents[_0x24ee0f[_0xd351('0x48')]]){agents[_0x24ee0f[_0xd351('0x48')]][_0xd351('0x41')]=0x1;transfers[_0x24ee0f[_0xd351('0x48')]]=_[_0xd351('0x42')](agents[_0x24ee0f['transfertargetuniqueid']]);transfers[_0x24ee0f[_0xd351('0x48')]]['calleridnum']=agents[_0x24ee0f['origtransfereruniqueid']][_0xd351('0x7')];transfers[_0x24ee0f[_0xd351('0x48')]]['calleridname']=agents[_0x24ee0f[_0xd351('0x3d')]]['calleridname'];transfers[_0x24ee0f['transfertargetuniqueid']]['agentcalledAt']=utils[_0xd351('0x15')]();transfers[_0x24ee0f[_0xd351('0x48')]][_0xd351('0x2b')]=utils['now']();transfers[_0x24ee0f[_0xd351('0x48')]][_0xd351('0x27')]=0x0;transfers[_0x24ee0f[_0xd351('0x48')]][_0xd351('0x41')]=0x2;}}}catch(_0x2375db){utils[_0xd351('0x22')](util[_0xd351('0x2')](_0xd351('0x49'),_0x24ee0f[_0xd351('0x3d')]),_0x2375db);}};exports[_0xd351('0x4a')]=function(_0x18c261){try{utils['debug'](util[_0xd351('0x2')](_0xd351('0x4b'),_0x18c261[_0xd351('0x3')]),_0x18c261);if(agents[_0x18c261[_0xd351('0x3')]]&&agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x1f')]==='timeout'){if(_0x18c261[_0xd351('0x4c')]==='21'){agents[_0x18c261[_0xd351('0x3')]]['reason']='rejected';agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x8')]=_0xd351('0x4d');}utils[_0xd351('0x17')](util[_0xd351('0x2')](_0xd351('0x4e'),_0x18c261[_0xd351('0x3')],agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x5')],agents[_0x18c261['uniqueid']][_0xd351('0x1f')],agents[_0x18c261[_0xd351('0x3')]]['lastevent']));writeDB(agents[_0x18c261[_0xd351('0x3')]]);var _0x58eed5=unanswered[_0xd351('0x4f')](_0x18c261['uniqueid']);if(_0x58eed5>-0x1){unanswered[_0xd351('0x50')](_0x58eed5,0x1);}}if(transfers[_0x18c261[_0xd351('0x3')]]){transfers[_0x18c261[_0xd351('0x3')]][_0xd351('0xc')]=!![];transfers[_0x18c261[_0xd351('0x3')]][_0xd351('0x34')]=utils[_0xd351('0x15')]();transfers[_0x18c261['uniqueid']][_0xd351('0x28')]=utils[_0xd351('0x51')](transfers[_0x18c261[_0xd351('0x3')]][_0xd351('0x34')],transfers[_0x18c261[_0xd351('0x3')]]['agentconnectAt']);transfers[_0x18c261[_0xd351('0x3')]][_0xd351('0x1f')]=_0xd351('0x52');transfers[_0x18c261['uniqueid']][_0xd351('0x8')]=_0xd351('0x53');utils[_0xd351('0x17')](util[_0xd351('0x2')](_0xd351('0x4e'),_0x18c261[_0xd351('0x3')],transfers[_0x18c261[_0xd351('0x3')]][_0xd351('0x5')],transfers[_0x18c261[_0xd351('0x3')]]['reason'],transfers[_0x18c261[_0xd351('0x3')]][_0xd351('0x8')]));writeDB(transfers[_0x18c261['uniqueid']],!![]);}if(agents[_0x18c261[_0xd351('0x3')]]&&agents[_0x18c261['uniqueid']]['agentconnectAt']){agents[_0x18c261['uniqueid']][_0xd351('0xc')]=!![];agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x34')]=utils['now']();agents[_0x18c261[_0xd351('0x3')]]['talktime']=utils[_0xd351('0x51')](agents[_0x18c261['uniqueid']][_0xd351('0x34')],agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x2b')]);agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x1f')]=agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x38')]?_0xd351('0x38'):_0xd351('0x52');agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x8')]=_0xd351('0x53');utils['info'](util[_0xd351('0x2')](_0xd351('0x4e'),_0x18c261[_0xd351('0x3')],agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x5')],agents[_0x18c261['uniqueid']][_0xd351('0x1f')],agents[_0x18c261[_0xd351('0x3')]][_0xd351('0x8')]));writeDB(agents[_0x18c261[_0xd351('0x3')]]);}}catch(_0x4a4b25){utils[_0xd351('0x22')](util[_0xd351('0x2')]('[%s][agents][hangup]',_0x18c261[_0xd351('0x3')]),_0x4a4b25);}};
\ No newline at end of file
index 699c453..6a982b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63d4=['starttime','localtwolinkedid','origtransfereruniqueid','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','[%s][calls][attendedtransfer]','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstop','[%s][calls][musiconholdstop]','musiconholdstartAt','mohtime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','variable','xmd-callerid-preview','xmd-queue','[%s][calls][varset]\x20variable:%s\x20value:%s','xmcs-queue','lastapplication','Queue','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','routeid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','sipcallid','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr','substring','lastIndexOf','hangup','noop','gotoif','lodash','util','./utils','NO\x20ANSWER','FAILED','ANSWERED','BUSY','blinds','uniqueid','transfereeuniqueid','info','queue','membername','interface','calleridnum','connectedlinenum','lastevent','accountcode','then','request','CreateVoiceCallReport','recording','newchannel','debug','format','[%s][calls][newchannel]','linkedid','channel','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','now','DOCUMENTATION','[%s][calls][newstate]','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','isNil','transfer','destinationchannel','answertime','disposition','toNumber','error','[%s][calls][hangup]','callerid','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','endtime','duration','diffTime'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0x63d4,0x117));var _0x463d=function(_0x5b3590,_0x3c1dd6){_0x5b3590=_0x5b3590-0x0;var _0x536bf1=_0x63d4[_0x5b3590];return _0x536bf1;};'use strict';var _=require(_0x463d('0x0'));var util=require(_0x463d('0x1'));var utils=require(_0x463d('0x2'));var transfers=require('./transfers.controller');var dispositions=[_0x463d('0x3'),_0x463d('0x4'),_0x463d('0x4'),_0x463d('0x3'),_0x463d('0x3'),'NO\x20ANSWER',_0x463d('0x5'),_0x463d('0x6'),'FAILED',_0x463d('0x4'),_0x463d('0x4')];var channels={};function writeDB(_0x2635aa){var _0x41dc01;if(transfers[_0x463d('0x7')][_0x2635aa['uniqueid']]){_0x41dc01=_0x2635aa[_0x463d('0x8')];_0x2635aa['uniqueid']=transfers[_0x463d('0x7')][_0x2635aa[_0x463d('0x8')]][_0x463d('0x9')];}utils[_0x463d('0xa')](util['format']('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x2635aa[_0x463d('0x8')],_0x2635aa['channel'],_0x2635aa[_0x463d('0xb')],_0x2635aa[_0x463d('0xc')],_0x2635aa[_0x463d('0xd')],_0x2635aa[_0x463d('0xe')],_0x2635aa[_0x463d('0xf')],_0x2635aa[_0x463d('0x10')]));if(_0x2635aa[_0x463d('0x11')]){utils['getUserByInternal'](_0x2635aa[_0x463d('0x11')])[_0x463d('0x12')](function(_0x436dba){if(_0x436dba){_0x2635aa['UserId']=_0x436dba['id'];}utils[_0x463d('0x13')](_0x463d('0x14'),_0x2635aa);});}else{utils[_0x463d('0x13')](_0x463d('0x14'),_0x2635aa);}if(channels[_0x2635aa[_0x463d('0x8')]]){delete channels[_0x2635aa[_0x463d('0x8')]];}else if(_0x41dc01&&channels[_0x41dc01]){if(!transfers['blinds'][_0x41dc01][_0x463d('0x15')])delete transfers['blinds'][_0x41dc01];delete channels[_0x41dc01];}}exports[_0x463d('0x16')]=function(_0x40cdb5){try{utils[_0x463d('0x17')](util[_0x463d('0x18')](_0x463d('0x19'),_0x40cdb5[_0x463d('0x8')]),_0x40cdb5);if(_0x40cdb5['uniqueid']==_0x40cdb5[_0x463d('0x1a')]&&_0x40cdb5[_0x463d('0x1b')]!=_0x463d('0x1c')){utils[_0x463d('0xa')](util[_0x463d('0x18')](_0x463d('0x1d'),_0x40cdb5[_0x463d('0x8')],_0x40cdb5[_0x463d('0x1e')],_0x40cdb5[_0x463d('0x1f')]));channels[_0x40cdb5[_0x463d('0x8')]]={'uniqueid':_0x40cdb5[_0x463d('0x8')],'accountcode':_0x40cdb5[_0x463d('0x11')],'source':_0x40cdb5[_0x463d('0xe')],'destination':_0x40cdb5[_0x463d('0x1f')],'destinationcontext':_0x40cdb5[_0x463d('0x1e')],'channel':_0x40cdb5['channel'],'starttime':utils[_0x463d('0x20')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':'NO\x20ANSWER','amaflags':_0x463d('0x21')};}}catch(_0x1a2756){utils['error'](util['format'](_0x463d('0x19'),_0x40cdb5[_0x463d('0x8')]),_0x1a2756);}};exports['newstate']=function(_0x2efdb4){try{utils['debug'](util[_0x463d('0x18')](_0x463d('0x22'),_0x2efdb4[_0x463d('0x8')]),_0x2efdb4);if(!_['isNil'](channels[_0x2efdb4[_0x463d('0x8')]])&&_0x2efdb4[_0x463d('0x23')]==0x6){utils[_0x463d('0xa')](util[_0x463d('0x18')](_0x463d('0x24'),_0x2efdb4[_0x463d('0x8')],_0x2efdb4[_0x463d('0x1e')],_0x2efdb4['channel']));if(_['isNil'](channels[_0x2efdb4[_0x463d('0x8')]]['systemanswertime'])){channels[_0x2efdb4[_0x463d('0x8')]][_0x463d('0x25')]=utils[_0x463d('0x20')]();}}else if(!_[_0x463d('0x26')](channels[_0x2efdb4['linkedid']])&&_0x2efdb4[_0x463d('0x23')]==0x6&&_0x2efdb4[_0x463d('0x1e')]!=_0x463d('0x27')){utils[_0x463d('0xa')](util[_0x463d('0x18')]('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x2efdb4[_0x463d('0x8')],_0x2efdb4[_0x463d('0x1a')],_0x2efdb4['context'],_0x2efdb4[_0x463d('0x1b')]));channels[_0x2efdb4['linkedid']][_0x463d('0x11')]=_0x2efdb4[_0x463d('0x11')];channels[_0x2efdb4[_0x463d('0x1a')]][_0x463d('0x28')]=_0x2efdb4[_0x463d('0x1b')];if(_['isNil'](channels[_0x2efdb4[_0x463d('0x1a')]][_0x463d('0x29')])){channels[_0x2efdb4[_0x463d('0x1a')]][_0x463d('0x29')]=utils[_0x463d('0x20')]();}channels[_0x2efdb4[_0x463d('0x1a')]][_0x463d('0x2a')]=dispositions[_[_0x463d('0x2b')](_0x2efdb4[_0x463d('0x23')])]||_0x463d('0x5');}}catch(_0x118b08){utils[_0x463d('0x2c')](util[_0x463d('0x18')](_0x463d('0x22'),_0x2efdb4[_0x463d('0x8')]),_0x118b08);}};exports['hangup']=function(_0x153fab){try{if(!_[_0x463d('0x26')](channels[_0x153fab[_0x463d('0x8')]])){utils[_0x463d('0x17')](util[_0x463d('0x18')](_0x463d('0x2d'),_0x153fab[_0x463d('0x8')]),_0x153fab);if(_[_0x463d('0x26')](channels[_0x153fab[_0x463d('0x8')]][_0x463d('0x2e')])){channels[_0x153fab[_0x463d('0x8')]]['callerid']=_0x153fab['calleridname']+'\x20<'+_0x153fab[_0x463d('0xe')]+'>';}utils[_0x463d('0xa')](util['format'](_0x463d('0x2f'),_0x153fab['uniqueid'],channels[_0x153fab['uniqueid']][_0x463d('0x2e')],_0x153fab['cause-txt']));channels[_0x153fab[_0x463d('0x8')]][_0x463d('0x30')]=utils['now']();channels[_0x153fab[_0x463d('0x8')]][_0x463d('0x31')]=utils[_0x463d('0x32')](channels[_0x153fab[_0x463d('0x8')]][_0x463d('0x30')],channels[_0x153fab[_0x463d('0x8')]][_0x463d('0x33')]);channels[_0x153fab['uniqueid']]['billableseconds']=channels[_0x153fab[_0x463d('0x8')]][_0x463d('0x29')]?utils[_0x463d('0x32')](channels[_0x153fab['uniqueid']]['endtime'],channels[_0x153fab[_0x463d('0x8')]]['answertime']):0x0;writeDB(channels[_0x153fab[_0x463d('0x8')]]);}}catch(_0x42263b){utils[_0x463d('0x2c')](util[_0x463d('0x18')](_0x463d('0x2d'),_0x153fab[_0x463d('0x8')]),_0x42263b);}};exports['attendedtransfer']=function(_0x12ac2a){try{if(!_['isNil'](channels[_0x12ac2a[_0x463d('0x34')]])){utils[_0x463d('0x17')](util['format']('[%s][calls][attendedtransfer]',_0x12ac2a[_0x463d('0x35')]),_0x12ac2a);if(channels[_0x12ac2a[_0x463d('0x34')]]['channel']==_0x12ac2a['transfereechannel']){utils[_0x463d('0xa')](util['format'](_0x463d('0x36'),_0x12ac2a[_0x463d('0x35')],_0x12ac2a[_0x463d('0x34')],_0x12ac2a[_0x463d('0x37')]));channels[_0x12ac2a[_0x463d('0x34')]]['destinationchannel']=_0x12ac2a[_0x463d('0x37')];channels[_0x12ac2a[_0x463d('0x34')]][_0x463d('0x38')]=_0x463d('0x39');}else if(channels[_0x12ac2a[_0x463d('0x34')]][_0x463d('0x1b')]=_0x12ac2a[_0x463d('0x3a')]){utils[_0x463d('0xa')](util['format'](_0x463d('0x36'),_0x12ac2a['origtransfereruniqueid'],_0x12ac2a['localtwolinkedid'],_0x12ac2a['origtransfererchannel']));channels[_0x12ac2a['localtwolinkedid']][_0x463d('0x28')]=_0x12ac2a[_0x463d('0x3b')];channels[_0x12ac2a[_0x463d('0x34')]][_0x463d('0x38')]=_0x463d('0x39');}}}catch(_0x100f68){utils[_0x463d('0x2c')](util['format'](_0x463d('0x3c'),_0x12ac2a['origtransfereruniqueid']),_0x100f68);}};exports[_0x463d('0x3d')]=function(_0x1ffbfe){try{if(!_[_0x463d('0x26')](channels[_0x1ffbfe[_0x463d('0x8')]])){utils[_0x463d('0x17')](util[_0x463d('0x18')](_0x463d('0x3e'),_0x1ffbfe[_0x463d('0x8')]),_0x1ffbfe);channels[_0x1ffbfe[_0x463d('0x8')]]['musiconholdstartAt']=utils[_0x463d('0x20')]();utils[_0x463d('0xa')](util[_0x463d('0x18')]('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x1ffbfe['uniqueid'],channels[_0x1ffbfe[_0x463d('0x8')]]['musiconholdstartAt']));}}catch(_0x929d8){utils[_0x463d('0x2c')](util[_0x463d('0x18')]('[%s][calls][musiconholdstart]',_0x1ffbfe[_0x463d('0x8')]),_0x929d8);}};exports[_0x463d('0x3f')]=function(_0x4abb94){try{if(!_['isNil'](channels[_0x4abb94[_0x463d('0x8')]])){utils[_0x463d('0x17')](util[_0x463d('0x18')](_0x463d('0x40'),_0x4abb94[_0x463d('0x8')]),_0x4abb94);if(!_[_0x463d('0x26')](channels[_0x4abb94[_0x463d('0x8')]][_0x463d('0x41')])){channels[_0x4abb94[_0x463d('0x8')]][_0x463d('0x42')]+=utils['diffTime'](utils['now'](),channels[_0x4abb94[_0x463d('0x8')]]['musiconholdstartAt']);utils['info'](util['format'](_0x463d('0x43'),_0x4abb94[_0x463d('0x8')],channels[_0x4abb94[_0x463d('0x8')]]['mohtime']));delete channels[_0x4abb94[_0x463d('0x8')]][_0x463d('0x41')];}}}catch(_0x48b92a){utils[_0x463d('0x2c')](util[_0x463d('0x18')]('[%s][calls][musiconholdstop]',_0x4abb94[_0x463d('0x8')]),_0x48b92a);}};exports[_0x463d('0x44')]=function(_0x115599){try{if(!_['isNil'](channels[_0x115599['uniqueid']])){utils[_0x463d('0x17')](util[_0x463d('0x18')](_0x463d('0x45'),_0x115599[_0x463d('0x8')]),_0x115599);if(!_[_0x463d('0x26')](_0x115599['variable'][_0x463d('0x46')])){utils[_0x463d('0xa')](util[_0x463d('0x18')](_0x463d('0x47'),_0x115599[_0x463d('0x8')],_0x115599[_0x463d('0x48')]));channels[_0x115599['uniqueid']][_0x463d('0x49')]=_0x115599['value'];}if(!_[_0x463d('0x26')](_0x115599['variable'][_0x463d('0x4a')])){utils['info'](util['format'](_0x463d('0x4b'),_0x115599[_0x463d('0x8')],_0x115599['value']));channels[_0x115599[_0x463d('0x8')]][_0x463d('0x4c')]=_0x115599[_0x463d('0x48')];channels[_0x115599['uniqueid']][_0x463d('0x2e')]='\x22'+_0x115599['value']+_0x463d('0x4d')+_0x115599['value']+'>';}if(!_[_0x463d('0x26')](_0x115599[_0x463d('0x4e')][_0x463d('0x4f')])||!_['isNil'](_0x115599['variable']['xmd-callerid'])){utils['info'](util['format']('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x115599[_0x463d('0x8')],!_['isNil'](_0x115599[_0x463d('0x4e')][_0x463d('0x4f')])?_0x463d('0x4f'):'xmd-callerid',_0x115599[_0x463d('0x48')]));channels[_0x115599[_0x463d('0x8')]][_0x463d('0x2e')]=_0x115599[_0x463d('0x48')];}if(!_[_0x463d('0x26')](_0x115599[_0x463d('0x4e')][_0x463d('0x50')])||!_[_0x463d('0x26')](_0x115599['variable']['xmcs-queue'])){utils[_0x463d('0xa')](util[_0x463d('0x18')](_0x463d('0x51'),_0x115599['uniqueid'],!_[_0x463d('0x26')](_0x115599[_0x463d('0x4e')]['xmd-queue'])?_0x463d('0x50'):_0x463d('0x52'),_0x115599['value']));channels[_0x115599[_0x463d('0x8')]][_0x463d('0x53')]=_0x463d('0x54');channels[_0x115599[_0x463d('0x8')]][_0x463d('0x55')]=_0x115599[_0x463d('0x48')];channels[_0x115599[_0x463d('0x8')]][_0x463d('0xb')]=!![];}if(!_[_0x463d('0x26')](_0x115599[_0x463d('0x4e')][_0x463d('0x56')])){utils[_0x463d('0xa')](util[_0x463d('0x18')](_0x463d('0x57'),_0x115599['uniqueid'],_0x115599[_0x463d('0x48')]));channels[_0x115599[_0x463d('0x8')]][_0x463d('0x58')]=_0x115599['value'];}if(!_[_0x463d('0x26')](_0x115599[_0x463d('0x4e')][_0x463d('0x59')])){utils['info'](util[_0x463d('0x18')](_0x463d('0x5a'),_0x115599[_0x463d('0x8')],_0x115599['value']));channels[_0x115599[_0x463d('0x8')]][_0x463d('0x5b')]=_0x115599['value'];}if(!_['isNil'](_0x115599['variable'][_0x463d('0x5c')])){utils['info'](util['format']('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0x115599[_0x463d('0x8')],_0x115599[_0x463d('0x48')]));channels[_0x115599['uniqueid']][_0x463d('0x5d')]=_0x115599[_0x463d('0x48')];}if(!_['isNil'](_0x115599[_0x463d('0x4e')]['sipcallid'])){utils['info'](util[_0x463d('0x18')](_0x463d('0x5e'),_0x115599['uniqueid'],_0x115599['value']));channels[_0x115599['uniqueid']][_0x463d('0x5f')]=_0x115599['value'];}}}catch(_0x2e19b3){utils[_0x463d('0x2c')](util[_0x463d('0x18')](_0x463d('0x45'),_0x115599[_0x463d('0x8')]),_0x2e19b3);}};exports[_0x463d('0x60')]=function(_0x4f439b){try{if(!_[_0x463d('0x26')](channels[_0x4f439b['uniqueid']])){utils[_0x463d('0x17')](util['format'](_0x463d('0x61'),_0x4f439b[_0x463d('0x8')]),_0x4f439b);utils['info'](util[_0x463d('0x18')](_0x463d('0x62'),_0x4f439b[_0x463d('0x8')],_0x4f439b[_0x463d('0x63')],_0x4f439b[_0x463d('0x64')]));if(_0x4f439b['application'][_0x463d('0x65')]()==_0x463d('0x66')&&_[_0x463d('0x67')](_0x4f439b[_0x463d('0x64')]['toLowerCase'](),_0x463d('0x68'))){var _0x2cd216=_0x4f439b[_0x463d('0x64')]['split']('=');var _0x30d8aa=_0x2cd216[0x0][_0x463d('0x69')](_0x2cd216[0x0][_0x463d('0x6a')]('(')+0x1,_0x2cd216[0x0][_0x463d('0x6a')](')'));var _0x22585b=_0x2cd216[0x1];channels[_0x4f439b['uniqueid']][_0x30d8aa]=_0x22585b;}if(!_['includes']([_0x463d('0x6b'),_0x463d('0x6c'),'execif',_0x463d('0x66'),_0x463d('0x6d')],_0x4f439b['application'][_0x463d('0x65')]())){channels[_0x4f439b[_0x463d('0x8')]]['lastapplication']=_0x4f439b[_0x463d('0x63')];channels[_0x4f439b[_0x463d('0x8')]][_0x463d('0x55')]=_0x4f439b[_0x463d('0x64')];}}}catch(_0x52bf5e){utils['error'](util['format'](_0x463d('0x61'),_0x4f439b['uniqueid']),_0x52bf5e);}};
\ No newline at end of file
+var _0x422b=['musiconholdstartAt','musiconholdstop','mohtime','varset','[%s][calls][varset]','xmd-originatecalleridnum','value','source','variable','xmd-phone','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%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','substring','lastIndexOf','includes','execif','gotoif','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','BUSY','uniqueid','blinds','transfereeuniqueid','info','format','channel','queue','membername','calleridnum','connectedlinenum','accountcode','getUserByInternal','UserId','request','CreateVoiceCallReport','recording','debug','[%s][calls][newchannel]','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','now','DOCUMENTATION','error','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','linkedid','answertime','disposition','toNumber','callerid','calleridname','cause-txt','endtime','duration','diffTime','starttime','billableseconds','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','destinationchannel','secondtransfererchannel','userfield','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfererchannel','_attended','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s'];(function(_0x1f2c93,_0x51b59b){var _0x465e96=function(_0x25f3a2){while(--_0x25f3a2){_0x1f2c93['push'](_0x1f2c93['shift']());}};_0x465e96(++_0x51b59b);}(_0x422b,0x92));var _0xb422=function(_0x2eb271,_0x5e618d){_0x2eb271=_0x2eb271-0x0;var _0x3653bf=_0x422b[_0x2eb271];return _0x3653bf;};'use strict';var _=require(_0xb422('0x0'));var util=require(_0xb422('0x1'));var utils=require(_0xb422('0x2'));var transfers=require(_0xb422('0x3'));var dispositions=[_0xb422('0x4'),'FAILED',_0xb422('0x5'),_0xb422('0x4'),_0xb422('0x4'),_0xb422('0x4'),_0xb422('0x6'),_0xb422('0x7'),_0xb422('0x5'),_0xb422('0x5'),_0xb422('0x5')];var channels={};function writeDB(_0x98ccd5){var _0x46b6bc;if(transfers['blinds'][_0x98ccd5[_0xb422('0x8')]]){_0x46b6bc=_0x98ccd5[_0xb422('0x8')];_0x98ccd5[_0xb422('0x8')]=transfers[_0xb422('0x9')][_0x98ccd5[_0xb422('0x8')]][_0xb422('0xa')];}utils[_0xb422('0xb')](util[_0xb422('0xc')]('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x98ccd5[_0xb422('0x8')],_0x98ccd5[_0xb422('0xd')],_0x98ccd5[_0xb422('0xe')],_0x98ccd5[_0xb422('0xf')],_0x98ccd5['interface'],_0x98ccd5[_0xb422('0x10')],_0x98ccd5[_0xb422('0x11')],_0x98ccd5['lastevent']));if(_0x98ccd5[_0xb422('0x12')]){utils[_0xb422('0x13')](_0x98ccd5[_0xb422('0x12')])['then'](function(_0x3b89be){if(_0x3b89be){_0x98ccd5[_0xb422('0x14')]=_0x3b89be['id'];}utils[_0xb422('0x15')](_0xb422('0x16'),_0x98ccd5);});}else{utils[_0xb422('0x15')](_0xb422('0x16'),_0x98ccd5);}if(channels[_0x98ccd5['uniqueid']]){delete channels[_0x98ccd5[_0xb422('0x8')]];}else if(_0x46b6bc&&channels[_0x46b6bc]){if(!transfers[_0xb422('0x9')][_0x46b6bc][_0xb422('0x17')])delete transfers[_0xb422('0x9')][_0x46b6bc];delete channels[_0x46b6bc];}}exports['newchannel']=function(_0x2bfc6d){try{utils[_0xb422('0x18')](util['format'](_0xb422('0x19'),_0x2bfc6d[_0xb422('0x8')]),_0x2bfc6d);if(_0x2bfc6d[_0xb422('0x8')]==_0x2bfc6d['linkedid']&&_0x2bfc6d[_0xb422('0xd')]!='OutgoingSpoolFailed'){utils['info'](util['format'](_0xb422('0x1a'),_0x2bfc6d[_0xb422('0x8')],_0x2bfc6d[_0xb422('0x1b')],_0x2bfc6d['exten']));channels[_0x2bfc6d[_0xb422('0x8')]]={'uniqueid':_0x2bfc6d[_0xb422('0x8')],'accountcode':_0x2bfc6d[_0xb422('0x12')],'source':_0x2bfc6d[_0xb422('0x10')],'destination':_0x2bfc6d[_0xb422('0x1c')],'destinationcontext':_0x2bfc6d[_0xb422('0x1b')],'channel':_0x2bfc6d[_0xb422('0xd')],'starttime':utils[_0xb422('0x1d')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xb422('0x4'),'amaflags':_0xb422('0x1e')};}}catch(_0x4b3dee){utils[_0xb422('0x1f')](util[_0xb422('0xc')](_0xb422('0x19'),_0x2bfc6d[_0xb422('0x8')]),_0x4b3dee);}};exports['newstate']=function(_0x52c3ac){try{utils['debug'](util[_0xb422('0xc')](_0xb422('0x20'),_0x52c3ac[_0xb422('0x8')]),_0x52c3ac);if(!_[_0xb422('0x21')](channels[_0x52c3ac[_0xb422('0x8')]])&&_0x52c3ac[_0xb422('0x22')]==0x6){utils[_0xb422('0xb')](util[_0xb422('0xc')](_0xb422('0x23'),_0x52c3ac[_0xb422('0x8')],_0x52c3ac[_0xb422('0x1b')],_0x52c3ac['channel']));if(_[_0xb422('0x21')](channels[_0x52c3ac[_0xb422('0x8')]]['systemanswertime'])){channels[_0x52c3ac[_0xb422('0x8')]][_0xb422('0x24')]=utils[_0xb422('0x1d')]();}}else if(!_[_0xb422('0x21')](channels[_0x52c3ac[_0xb422('0x25')]])&&_0x52c3ac[_0xb422('0x22')]==0x6&&_0x52c3ac[_0xb422('0x1b')]!='transfer'){utils[_0xb422('0xb')](util['format']('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x52c3ac[_0xb422('0x8')],_0x52c3ac[_0xb422('0x25')],_0x52c3ac[_0xb422('0x1b')],_0x52c3ac[_0xb422('0xd')]));channels[_0x52c3ac['linkedid']][_0xb422('0x12')]=_0x52c3ac[_0xb422('0x12')];channels[_0x52c3ac['linkedid']]['destinationchannel']=_0x52c3ac[_0xb422('0xd')];if(_[_0xb422('0x21')](channels[_0x52c3ac[_0xb422('0x25')]][_0xb422('0x26')])){channels[_0x52c3ac[_0xb422('0x25')]][_0xb422('0x26')]=utils[_0xb422('0x1d')]();}channels[_0x52c3ac[_0xb422('0x25')]][_0xb422('0x27')]=dispositions[_[_0xb422('0x28')](_0x52c3ac['channelstate'])]||'ANSWERED';}}catch(_0x1b63b8){utils[_0xb422('0x1f')](util[_0xb422('0xc')]('[%s][calls][newstate]',_0x52c3ac[_0xb422('0x8')]),_0x1b63b8);}};exports['hangup']=function(_0x1591eb){try{if(!_[_0xb422('0x21')](channels[_0x1591eb[_0xb422('0x8')]])){utils[_0xb422('0x18')](util['format']('[%s][calls][hangup]',_0x1591eb[_0xb422('0x8')]),_0x1591eb);if(_[_0xb422('0x21')](channels[_0x1591eb['uniqueid']][_0xb422('0x29')])){channels[_0x1591eb['uniqueid']]['callerid']=_0x1591eb[_0xb422('0x2a')]+'\x20<'+_0x1591eb[_0xb422('0x10')]+'>';}utils['info'](util[_0xb422('0xc')]('[%s][calls][hangup]\x20callerid:%s\x20reason:%s',_0x1591eb[_0xb422('0x8')],channels[_0x1591eb['uniqueid']][_0xb422('0x29')],_0x1591eb[_0xb422('0x2b')]));channels[_0x1591eb['uniqueid']][_0xb422('0x2c')]=utils[_0xb422('0x1d')]();channels[_0x1591eb[_0xb422('0x8')]][_0xb422('0x2d')]=utils[_0xb422('0x2e')](channels[_0x1591eb[_0xb422('0x8')]]['endtime'],channels[_0x1591eb['uniqueid']][_0xb422('0x2f')]);channels[_0x1591eb[_0xb422('0x8')]][_0xb422('0x30')]=channels[_0x1591eb[_0xb422('0x8')]]['answertime']?utils[_0xb422('0x2e')](channels[_0x1591eb['uniqueid']][_0xb422('0x2c')],channels[_0x1591eb['uniqueid']][_0xb422('0x26')]):0x0;writeDB(channels[_0x1591eb['uniqueid']]);}}catch(_0x1b05d7){utils[_0xb422('0x1f')](util[_0xb422('0xc')]('[%s][calls][hangup]',_0x1591eb[_0xb422('0x8')]),_0x1b05d7);}};exports[_0xb422('0x31')]=function(_0x35c066){try{if(!_[_0xb422('0x21')](channels[_0x35c066[_0xb422('0x32')]])){utils['debug'](util[_0xb422('0xc')](_0xb422('0x33'),_0x35c066[_0xb422('0x34')]),_0x35c066);if(channels[_0x35c066['localtwolinkedid']][_0xb422('0xd')]==_0x35c066[_0xb422('0x35')]){utils[_0xb422('0xb')](util[_0xb422('0xc')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x35c066[_0xb422('0x34')],_0x35c066[_0xb422('0x32')],_0x35c066['secondtransfererchannel']));channels[_0x35c066['localtwolinkedid']][_0xb422('0x36')]=_0x35c066[_0xb422('0x37')];channels[_0x35c066[_0xb422('0x32')]][_0xb422('0x38')]='_attended';}else if(channels[_0x35c066['localtwolinkedid']][_0xb422('0xd')]=_0x35c066['transfertargetchannel']){utils[_0xb422('0xb')](util[_0xb422('0xc')](_0xb422('0x39'),_0x35c066['origtransfereruniqueid'],_0x35c066[_0xb422('0x32')],_0x35c066[_0xb422('0x3a')]));channels[_0x35c066[_0xb422('0x32')]][_0xb422('0x36')]=_0x35c066[_0xb422('0x3a')];channels[_0x35c066[_0xb422('0x32')]][_0xb422('0x38')]=_0xb422('0x3b');}}}catch(_0x136ba5){utils['error'](util[_0xb422('0xc')](_0xb422('0x33'),_0x35c066['origtransfereruniqueid']),_0x136ba5);}};exports['musiconholdstart']=function(_0x59f2cb){try{if(!_[_0xb422('0x21')](channels[_0x59f2cb[_0xb422('0x8')]])){utils[_0xb422('0x18')](util[_0xb422('0xc')](_0xb422('0x3c'),_0x59f2cb['uniqueid']),_0x59f2cb);channels[_0x59f2cb['uniqueid']]['musiconholdstartAt']=utils['now']();utils[_0xb422('0xb')](util[_0xb422('0xc')](_0xb422('0x3d'),_0x59f2cb['uniqueid'],channels[_0x59f2cb['uniqueid']][_0xb422('0x3e')]));}}catch(_0x39294b){utils[_0xb422('0x1f')](util[_0xb422('0xc')](_0xb422('0x3c'),_0x59f2cb['uniqueid']),_0x39294b);}};exports[_0xb422('0x3f')]=function(_0x38350d){try{if(!_[_0xb422('0x21')](channels[_0x38350d[_0xb422('0x8')]])){utils[_0xb422('0x18')](util['format']('[%s][calls][musiconholdstop]',_0x38350d[_0xb422('0x8')]),_0x38350d);if(!_[_0xb422('0x21')](channels[_0x38350d['uniqueid']][_0xb422('0x3e')])){channels[_0x38350d[_0xb422('0x8')]]['mohtime']+=utils[_0xb422('0x2e')](utils[_0xb422('0x1d')](),channels[_0x38350d[_0xb422('0x8')]]['musiconholdstartAt']);utils[_0xb422('0xb')](util[_0xb422('0xc')]('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x38350d[_0xb422('0x8')],channels[_0x38350d['uniqueid']][_0xb422('0x40')]));delete channels[_0x38350d['uniqueid']]['musiconholdstartAt'];}}}catch(_0x59770f){utils[_0xb422('0x1f')](util[_0xb422('0xc')]('[%s][calls][musiconholdstop]',_0x38350d['uniqueid']),_0x59770f);}};exports[_0xb422('0x41')]=function(_0x3a6821){try{if(!_[_0xb422('0x21')](channels[_0x3a6821[_0xb422('0x8')]])){utils[_0xb422('0x18')](util[_0xb422('0xc')](_0xb422('0x42'),_0x3a6821['uniqueid']),_0x3a6821);if(!_[_0xb422('0x21')](_0x3a6821['variable'][_0xb422('0x43')])){utils[_0xb422('0xb')](util[_0xb422('0xc')]('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x3a6821[_0xb422('0x8')],_0x3a6821[_0xb422('0x44')]));channels[_0x3a6821[_0xb422('0x8')]][_0xb422('0x45')]=_0x3a6821[_0xb422('0x44')];}if(!_[_0xb422('0x21')](_0x3a6821[_0xb422('0x46')][_0xb422('0x47')])){utils[_0xb422('0xb')](util['format']('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x3a6821[_0xb422('0x8')],_0x3a6821['value']));channels[_0x3a6821[_0xb422('0x8')]][_0xb422('0x48')]=_0x3a6821[_0xb422('0x44')];channels[_0x3a6821[_0xb422('0x8')]]['callerid']='\x22'+_0x3a6821[_0xb422('0x44')]+_0xb422('0x49')+_0x3a6821[_0xb422('0x44')]+'>';}if(!_[_0xb422('0x21')](_0x3a6821['variable'][_0xb422('0x4a')])||!_[_0xb422('0x21')](_0x3a6821[_0xb422('0x46')][_0xb422('0x4b')])){utils[_0xb422('0xb')](util['format'](_0xb422('0x4c'),_0x3a6821['uniqueid'],!_['isNil'](_0x3a6821[_0xb422('0x46')][_0xb422('0x4a')])?_0xb422('0x4a'):_0xb422('0x4b'),_0x3a6821[_0xb422('0x44')]));channels[_0x3a6821['uniqueid']][_0xb422('0x29')]=_0x3a6821[_0xb422('0x44')];}if(!_['isNil'](_0x3a6821[_0xb422('0x46')][_0xb422('0x4d')])||!_[_0xb422('0x21')](_0x3a6821[_0xb422('0x46')][_0xb422('0x4e')])){utils[_0xb422('0xb')](util[_0xb422('0xc')](_0xb422('0x4c'),_0x3a6821[_0xb422('0x8')],!_[_0xb422('0x21')](_0x3a6821[_0xb422('0x46')][_0xb422('0x4d')])?_0xb422('0x4d'):_0xb422('0x4e'),_0x3a6821[_0xb422('0x44')]));channels[_0x3a6821['uniqueid']][_0xb422('0x4f')]=_0xb422('0x50');channels[_0x3a6821[_0xb422('0x8')]][_0xb422('0x51')]=_0x3a6821[_0xb422('0x44')];channels[_0x3a6821[_0xb422('0x8')]]['queue']=!![];}if(!_['isNil'](_0x3a6821['variable']['xmd-contactid'])){utils[_0xb422('0xb')](util['format']('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x3a6821['uniqueid'],_0x3a6821[_0xb422('0x44')]));channels[_0x3a6821[_0xb422('0x8')]][_0xb422('0x52')]=_0x3a6821['value'];}if(!_['isNil'](_0x3a6821[_0xb422('0x46')][_0xb422('0x53')])){utils[_0xb422('0xb')](util[_0xb422('0xc')](_0xb422('0x54'),_0x3a6821[_0xb422('0x8')],_0x3a6821[_0xb422('0x44')]));channels[_0x3a6821[_0xb422('0x8')]][_0xb422('0x55')]=_0x3a6821[_0xb422('0x44')];}if(!_[_0xb422('0x21')](_0x3a6821['variable'][_0xb422('0x56')])){utils[_0xb422('0xb')](util[_0xb422('0xc')](_0xb422('0x57'),_0x3a6821[_0xb422('0x8')],_0x3a6821[_0xb422('0x44')]));channels[_0x3a6821[_0xb422('0x8')]]['routeid']=_0x3a6821['value'];}if(!_[_0xb422('0x21')](_0x3a6821[_0xb422('0x46')][_0xb422('0x58')])){utils[_0xb422('0xb')](util[_0xb422('0xc')](_0xb422('0x59'),_0x3a6821['uniqueid'],_0x3a6821[_0xb422('0x44')]));channels[_0x3a6821[_0xb422('0x8')]][_0xb422('0x58')]=_0x3a6821['value'];}}}catch(_0x24f2a1){utils['error'](util[_0xb422('0xc')](_0xb422('0x42'),_0x3a6821[_0xb422('0x8')]),_0x24f2a1);}};exports['newexten']=function(_0x3eb151){try{if(!_[_0xb422('0x21')](channels[_0x3eb151[_0xb422('0x8')]])){utils[_0xb422('0x18')](util['format'](_0xb422('0x5a'),_0x3eb151['uniqueid']),_0x3eb151);utils[_0xb422('0xb')](util[_0xb422('0xc')](_0xb422('0x5b'),_0x3eb151[_0xb422('0x8')],_0x3eb151[_0xb422('0x5c')],_0x3eb151[_0xb422('0x5d')]));if(_0x3eb151[_0xb422('0x5c')][_0xb422('0x5e')]()==_0xb422('0x5f')&&_[_0xb422('0x60')](_0x3eb151[_0xb422('0x5d')]['toLowerCase'](),_0xb422('0x61'))){var _0x399e02=_0x3eb151[_0xb422('0x5d')][_0xb422('0x62')]('=');var _0x11b0ab=_0x399e02[0x0][_0xb422('0x63')](_0x399e02[0x0][_0xb422('0x64')]('(')+0x1,_0x399e02[0x0][_0xb422('0x64')](')'));var _0x981e16=_0x399e02[0x1];channels[_0x3eb151[_0xb422('0x8')]][_0x11b0ab]=_0x981e16;}if(!_[_0xb422('0x65')](['hangup','noop',_0xb422('0x66'),_0xb422('0x5f'),_0xb422('0x67')],_0x3eb151[_0xb422('0x5c')]['toLowerCase']())){channels[_0x3eb151[_0xb422('0x8')]][_0xb422('0x4f')]=_0x3eb151['application'];channels[_0x3eb151[_0xb422('0x8')]][_0xb422('0x51')]=_0x3eb151[_0xb422('0x5d')];}}}catch(_0x1e2b13){utils[_0xb422('0x1f')](util[_0xb422('0xc')](_0xb422('0x5a'),_0x3eb151[_0xb422('0x8')]),_0x1e2b13);}};
\ No newline at end of file
index e5cfc84..142c628 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0991=['fullybooted','[core]\x20fullybooted','error','close','./utils','connect','info','[core]\x20connected','[core]\x20shutdown'];(function(_0x5a1998,_0x4c4d0c){var _0x461e3a=function(_0x27bad1){while(--_0x27bad1){_0x5a1998['push'](_0x5a1998['shift']());}};_0x461e3a(++_0x4c4d0c);}(_0x0991,0x16c));var _0x1099=function(_0x1d0041,_0x1a6f9a){_0x1d0041=_0x1d0041-0x0;var _0x5b5a43=_0x0991[_0x1d0041];return _0x5b5a43;};'use strict';var utils=require(_0x1099('0x0'));exports[_0x1099('0x1')]=function(){utils[_0x1099('0x2')](_0x1099('0x3'));};exports['shutdown']=function(){utils[_0x1099('0x2')](_0x1099('0x4'));};exports[_0x1099('0x5')]=function(){utils[_0x1099('0x2')](_0x1099('0x6'));};exports[_0x1099('0x7')]=function(_0x552fa0){utils[_0x1099('0x7')]('[core]\x20error',_0x552fa0);};exports[_0x1099('0x8')]=function(){utils[_0x1099('0x2')]('[core]\x20close');};exports['managerevent']=function(_0x694b4e){};
\ No newline at end of file
+var _0x0d79=['close','[core]\x20close','./utils','connect','info','[core]\x20connected','shutdown','fullybooted','[core]\x20fullybooted','error','[core]\x20error'];(function(_0x4147ff,_0x154530){var _0x1e71e6=function(_0x21f992){while(--_0x21f992){_0x4147ff['push'](_0x4147ff['shift']());}};_0x1e71e6(++_0x154530);}(_0x0d79,0x14c));var _0x90d7=function(_0x3557d0,_0x39f204){_0x3557d0=_0x3557d0-0x0;var _0x38d56c=_0x0d79[_0x3557d0];return _0x38d56c;};'use strict';var utils=require(_0x90d7('0x0'));exports[_0x90d7('0x1')]=function(){utils[_0x90d7('0x2')](_0x90d7('0x3'));};exports[_0x90d7('0x4')]=function(){utils[_0x90d7('0x2')]('[core]\x20shutdown');};exports[_0x90d7('0x5')]=function(){utils[_0x90d7('0x2')](_0x90d7('0x6'));};exports[_0x90d7('0x7')]=function(_0x5dfad1){utils[_0x90d7('0x7')](_0x90d7('0x8'),_0x5dfad1);};exports[_0x90d7('0x9')]=function(){utils[_0x90d7('0x2')](_0x90d7('0xa'));};exports['managerevent']=function(_0x2a697b){};
\ No newline at end of file
index 88cdfee..6235b16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6542=['error','varset','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','isNil','[%s][dials][dialbegin]','assign','starttime','now','lastevent','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','ANSWER','answertime','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','cause-txt','complete','duration','diffTime','holdtime','endtime','billableseconds','util','./utils','format','uniqueid','channel','calleridnum','connectedlinenum','dialstatus','CreateVoiceDialReport','debug','[%s][dials][newexten]','info','application','toLowerCase','set','appdata','cdr(routeid)','split'];(function(_0x30aa4a,_0x487518){var _0x139d8a=function(_0x2a9b5d){while(--_0x2a9b5d){_0x30aa4a['push'](_0x30aa4a['shift']());}};_0x139d8a(++_0x487518);}(_0x6542,0xae));var _0x2654=function(_0x386b93,_0x1e260c){_0x386b93=_0x386b93-0x0;var _0x2f9f92=_0x6542[_0x386b93];return _0x2f9f92;};'use strict';var _=require('lodash');var util=require(_0x2654('0x0'));var utils=require(_0x2654('0x1'));var dials={};function writeDB(_0x563971){utils['info'](util[_0x2654('0x2')]('[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s',_0x563971[_0x2654('0x3')],_0x563971[_0x2654('0x4')],_0x563971['dialstring'],_0x563971[_0x2654('0x5')],_0x563971[_0x2654('0x6')],_0x563971[_0x2654('0x7')]));utils['request'](_0x2654('0x8'),_0x563971);delete dials[_0x563971[_0x2654('0x3')]];}exports['newexten']=function(_0x95f88c){try{utils[_0x2654('0x9')](util[_0x2654('0x2')](_0x2654('0xa'),_0x95f88c[_0x2654('0x3')]),_0x95f88c);utils[_0x2654('0xb')](util[_0x2654('0x2')]('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0x95f88c['uniqueid'],_0x95f88c[_0x2654('0xc')],_0x95f88c['appdata']));if(_0x95f88c[_0x2654('0xc')][_0x2654('0xd')]()==_0x2654('0xe')&&_['startsWith'](_0x95f88c[_0x2654('0xf')][_0x2654('0xd')](),_0x2654('0x10'))){var _0x35104f=_0x95f88c[_0x2654('0xf')][_0x2654('0x11')]('=');dials[_0x95f88c['uniqueid']]={'routeId':_0x35104f[0x1]};}}catch(_0x1f2c64){utils[_0x2654('0x12')](util[_0x2654('0x2')](_0x2654('0xa'),_0x95f88c[_0x2654('0x3')]),_0x1f2c64);}};exports[_0x2654('0x13')]=function(_0x3178a5){try{utils['debug'](util[_0x2654('0x2')]('[%s][dials][varset]',_0x3178a5[_0x2654('0x3')]),_0x3178a5);if(!_['isNil'](_0x3178a5[_0x2654('0x14')][_0x2654('0x15')])){utils[_0x2654('0xb')](util[_0x2654('0x2')](_0x2654('0x16'),_0x3178a5[_0x2654('0x3')],_0x3178a5[_0x2654('0x17')]));dials[_0x3178a5[_0x2654('0x3')]]={'routeId':_0x3178a5[_0x2654('0x17')]};}}catch(_0x392e04){utils[_0x2654('0x12')](util[_0x2654('0x2')]('[%s][dials][varset]',_0x3178a5[_0x2654('0x3')]),_0x392e04);}};exports[_0x2654('0x18')]=function(_0x5b76f3){try{if(!_[_0x2654('0x19')](dials[_0x5b76f3[_0x2654('0x3')]])){utils['debug'](util[_0x2654('0x2')](_0x2654('0x1a'),_0x5b76f3[_0x2654('0x3')]),_0x5b76f3);dials[_0x5b76f3['uniqueid']]=_[_0x2654('0x1b')](dials[_0x5b76f3[_0x2654('0x3')]],_0x5b76f3);dials[_0x5b76f3['uniqueid']][_0x2654('0x1c')]=utils[_0x2654('0x1d')]();dials[_0x5b76f3[_0x2654('0x3')]][_0x2654('0x1e')]='called';utils['info'](util[_0x2654('0x2')](_0x2654('0x1f'),_0x5b76f3[_0x2654('0x3')],dials[_0x5b76f3[_0x2654('0x3')]][_0x2654('0x1c')]));}}catch(_0x39e72a){utils[_0x2654('0x12')](util['format'](_0x2654('0x1a'),_0x5b76f3[_0x2654('0x3')]),_0x39e72a);}};exports[_0x2654('0x20')]=function(_0xbacbf9){try{if(!_['isNil'](dials[_0xbacbf9[_0x2654('0x3')]])){utils[_0x2654('0x9')](util[_0x2654('0x2')](_0x2654('0x21'),_0xbacbf9[_0x2654('0x3')]),_0xbacbf9);dials[_0xbacbf9[_0x2654('0x3')]][_0x2654('0x7')]=_0xbacbf9[_0x2654('0x7')];if(_0xbacbf9[_0x2654('0x7')]==_0x2654('0x22')){dials[_0xbacbf9['uniqueid']]=_[_0x2654('0x1b')](dials[_0xbacbf9[_0x2654('0x3')]],_0xbacbf9);dials[_0xbacbf9[_0x2654('0x3')]][_0x2654('0x23')]=utils[_0x2654('0x1d')]();dials[_0xbacbf9[_0x2654('0x3')]][_0x2654('0x1e')]=_0x2654('0x24');utils[_0x2654('0xb')](util[_0x2654('0x2')](_0x2654('0x25'),_0xbacbf9[_0x2654('0x3')],_0xbacbf9['dialstatus'],dials[_0xbacbf9[_0x2654('0x3')]][_0x2654('0x23')]));}else{utils[_0x2654('0xb')](util[_0x2654('0x2')](_0x2654('0x26'),_0xbacbf9[_0x2654('0x3')],_0xbacbf9[_0x2654('0x7')]));}}}catch(_0x4d7906){utils[_0x2654('0x12')](util[_0x2654('0x2')](_0x2654('0x21'),_0xbacbf9['uniqueid']),_0x4d7906);}};exports[_0x2654('0x27')]=function(_0x3e2310){try{if(!_['isNil'](dials[_0x3e2310['uniqueid']])){utils[_0x2654('0x9')](util['format'](_0x2654('0x28'),_0x3e2310[_0x2654('0x3')]),_0x3e2310);utils[_0x2654('0xb')](util[_0x2654('0x2')]('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x3e2310[_0x2654('0x3')],_0x3e2310['calleridnum'],_0x3e2310['calleridname'],_0x3e2310[_0x2654('0x29')]));dials[_0x3e2310[_0x2654('0x3')]]=_[_0x2654('0x1b')](dials[_0x3e2310[_0x2654('0x3')]],{'endtime':utils[_0x2654('0x1d')](),'lastevent':_0x2654('0x2a')});dials[_0x3e2310[_0x2654('0x3')]][_0x2654('0x2b')]=utils[_0x2654('0x2c')](dials[_0x3e2310['uniqueid']]['endtime'],dials[_0x3e2310[_0x2654('0x3')]][_0x2654('0x1c')]);dials[_0x3e2310['uniqueid']][_0x2654('0x2d')]=utils[_0x2654('0x2c')](dials[_0x3e2310['uniqueid']][_0x2654('0x23')]||dials[_0x3e2310['uniqueid']][_0x2654('0x2e')],dials[_0x3e2310[_0x2654('0x3')]]['starttime']);dials[_0x3e2310[_0x2654('0x3')]][_0x2654('0x2f')]=dials[_0x3e2310[_0x2654('0x3')]][_0x2654('0x23')]?utils[_0x2654('0x2c')](dials[_0x3e2310['uniqueid']][_0x2654('0x2e')],dials[_0x3e2310['uniqueid']][_0x2654('0x23')]):0x0;writeDB(dials[_0x3e2310['uniqueid']]);}}catch(_0x38447a){utils[_0x2654('0x12')](util[_0x2654('0x2')](_0x2654('0x28'),_0x3e2310[_0x2654('0x3')]),_0x38447a);}};
\ No newline at end of file
+var _0x7fa2=['calleridnum','connectedlinenum','dialstatus','CreateVoiceDialReport','newexten','format','[%s][dials][newexten]','application','appdata','set','toLowerCase','split','varset','debug','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','[%s][dials][varset]','dialbegin','[%s][dials][dialbegin]','assign','starttime','called','error','dialend','answertime','now','lastevent','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','diffTime','endtime','holdtime','lodash','util','./utils','info','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring'];(function(_0x588c7f,_0xf77c0f){var _0x3b8959=function(_0x50dfc2){while(--_0x50dfc2){_0x588c7f['push'](_0x588c7f['shift']());}};_0x3b8959(++_0xf77c0f);}(_0x7fa2,0x1f2));var _0x27fa=function(_0x29a539,_0x10a434){_0x29a539=_0x29a539-0x0;var _0x137682=_0x7fa2[_0x29a539];return _0x137682;};'use strict';var _=require(_0x27fa('0x0'));var util=require(_0x27fa('0x1'));var utils=require(_0x27fa('0x2'));var dials={};function writeDB(_0x4dd546){utils[_0x27fa('0x3')](util['format'](_0x27fa('0x4'),_0x4dd546[_0x27fa('0x5')],_0x4dd546[_0x27fa('0x6')],_0x4dd546[_0x27fa('0x7')],_0x4dd546[_0x27fa('0x8')],_0x4dd546[_0x27fa('0x9')],_0x4dd546[_0x27fa('0xa')]));utils['request'](_0x27fa('0xb'),_0x4dd546);delete dials[_0x4dd546['uniqueid']];}exports[_0x27fa('0xc')]=function(_0xf03c10){try{utils['debug'](util[_0x27fa('0xd')](_0x27fa('0xe'),_0xf03c10[_0x27fa('0x5')]),_0xf03c10);utils['info'](util['format']('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0xf03c10[_0x27fa('0x5')],_0xf03c10[_0x27fa('0xf')],_0xf03c10[_0x27fa('0x10')]));if(_0xf03c10[_0x27fa('0xf')]['toLowerCase']()==_0x27fa('0x11')&&_['startsWith'](_0xf03c10[_0x27fa('0x10')][_0x27fa('0x12')](),'cdr(routeid)')){var _0x4381b=_0xf03c10['appdata'][_0x27fa('0x13')]('=');dials[_0xf03c10[_0x27fa('0x5')]]={'routeId':_0x4381b[0x1]};}}catch(_0x470654){utils['error'](util['format'](_0x27fa('0xe'),_0xf03c10['uniqueid']),_0x470654);}};exports[_0x27fa('0x14')]=function(_0xd6b7fd){try{utils[_0x27fa('0x15')](util[_0x27fa('0xd')]('[%s][dials][varset]',_0xd6b7fd[_0x27fa('0x5')]),_0xd6b7fd);if(!_['isNil'](_0xd6b7fd['variable'][_0x27fa('0x16')])){utils[_0x27fa('0x3')](util[_0x27fa('0xd')](_0x27fa('0x17'),_0xd6b7fd['uniqueid'],_0xd6b7fd[_0x27fa('0x18')]));dials[_0xd6b7fd[_0x27fa('0x5')]]={'routeId':_0xd6b7fd[_0x27fa('0x18')]};}}catch(_0x129884){utils['error'](util[_0x27fa('0xd')](_0x27fa('0x19'),_0xd6b7fd[_0x27fa('0x5')]),_0x129884);}};exports[_0x27fa('0x1a')]=function(_0x1ae8db){try{if(!_['isNil'](dials[_0x1ae8db[_0x27fa('0x5')]])){utils['debug'](util['format'](_0x27fa('0x1b'),_0x1ae8db[_0x27fa('0x5')]),_0x1ae8db);dials[_0x1ae8db['uniqueid']]=_[_0x27fa('0x1c')](dials[_0x1ae8db[_0x27fa('0x5')]],_0x1ae8db);dials[_0x1ae8db[_0x27fa('0x5')]][_0x27fa('0x1d')]=utils['now']();dials[_0x1ae8db['uniqueid']]['lastevent']=_0x27fa('0x1e');utils[_0x27fa('0x3')](util['format']('[%s][dials][hangup]\x20starttime:%s\x20lastevent:called',_0x1ae8db[_0x27fa('0x5')],dials[_0x1ae8db[_0x27fa('0x5')]]['starttime']));}}catch(_0x520b50){utils[_0x27fa('0x1f')](util[_0x27fa('0xd')](_0x27fa('0x1b'),_0x1ae8db[_0x27fa('0x5')]),_0x520b50);}};exports[_0x27fa('0x20')]=function(_0x208dc2){try{if(!_['isNil'](dials[_0x208dc2[_0x27fa('0x5')]])){utils[_0x27fa('0x15')](util[_0x27fa('0xd')]('[%s][dials][dialend]',_0x208dc2[_0x27fa('0x5')]),_0x208dc2);dials[_0x208dc2[_0x27fa('0x5')]][_0x27fa('0xa')]=_0x208dc2[_0x27fa('0xa')];if(_0x208dc2[_0x27fa('0xa')]=='ANSWER'){dials[_0x208dc2[_0x27fa('0x5')]]=_[_0x27fa('0x1c')](dials[_0x208dc2[_0x27fa('0x5')]],_0x208dc2);dials[_0x208dc2[_0x27fa('0x5')]][_0x27fa('0x21')]=utils[_0x27fa('0x22')]();dials[_0x208dc2[_0x27fa('0x5')]][_0x27fa('0x23')]=_0x27fa('0x24');utils[_0x27fa('0x3')](util[_0x27fa('0xd')](_0x27fa('0x25'),_0x208dc2[_0x27fa('0x5')],_0x208dc2['dialstatus'],dials[_0x208dc2[_0x27fa('0x5')]][_0x27fa('0x21')]));}else{utils[_0x27fa('0x3')](util[_0x27fa('0xd')]('[%s][dials][dialend]\x20dialstatus:%s',_0x208dc2[_0x27fa('0x5')],_0x208dc2[_0x27fa('0xa')]));}}}catch(_0x96a415){utils[_0x27fa('0x1f')](util[_0x27fa('0xd')](_0x27fa('0x26'),_0x208dc2[_0x27fa('0x5')]),_0x96a415);}};exports['hangup']=function(_0x185f52){try{if(!_['isNil'](dials[_0x185f52['uniqueid']])){utils[_0x27fa('0x15')](util[_0x27fa('0xd')](_0x27fa('0x27'),_0x185f52[_0x27fa('0x5')]),_0x185f52);utils[_0x27fa('0x3')](util[_0x27fa('0xd')](_0x27fa('0x28'),_0x185f52[_0x27fa('0x5')],_0x185f52[_0x27fa('0x8')],_0x185f52[_0x27fa('0x29')],_0x185f52[_0x27fa('0x2a')]));dials[_0x185f52[_0x27fa('0x5')]]=_['assign'](dials[_0x185f52[_0x27fa('0x5')]],{'endtime':utils[_0x27fa('0x22')](),'lastevent':'complete'});dials[_0x185f52['uniqueid']]['duration']=utils[_0x27fa('0x2b')](dials[_0x185f52[_0x27fa('0x5')]][_0x27fa('0x2c')],dials[_0x185f52[_0x27fa('0x5')]][_0x27fa('0x1d')]);dials[_0x185f52[_0x27fa('0x5')]][_0x27fa('0x2d')]=utils[_0x27fa('0x2b')](dials[_0x185f52[_0x27fa('0x5')]][_0x27fa('0x21')]||dials[_0x185f52[_0x27fa('0x5')]][_0x27fa('0x2c')],dials[_0x185f52['uniqueid']][_0x27fa('0x1d')]);dials[_0x185f52[_0x27fa('0x5')]]['billableseconds']=dials[_0x185f52['uniqueid']][_0x27fa('0x21')]?utils[_0x27fa('0x2b')](dials[_0x185f52[_0x27fa('0x5')]][_0x27fa('0x2c')],dials[_0x185f52[_0x27fa('0x5')]]['answertime']):0x0;writeDB(dials[_0x185f52[_0x27fa('0x5')]]);}}catch(_0x2b2536){utils[_0x27fa('0x1f')](util['format'](_0x27fa('0x27'),_0x185f52[_0x27fa('0x5')]),_0x2b2536);}};
\ No newline at end of file
index c628559..a169a4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf758=['newexten','[%s][index][newchannel]','newchannel','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','xdr','disabled','env','production','local','asterisk','port','username','password','keepConnected','info','XDR\x20DISABLED','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./queues.controller','./recordings.controller','./members.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','format','[%s][index][devicestatechange]','device','agentcalled','[%s][index][agentcalled]','uniqueid','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','[%s][index][musiconholdstop]','musiconholdstop','newstate','[%s][index][newstate]','[%s][index][hangup]','hangup','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','origtransfereruniqueid','[%s][index][attendedtransfer]','[%s][index][varset]','varset','[%s][index][newexten]'];(function(_0x260894,_0x1b9c9c){var _0x39fa58=function(_0x137625){while(--_0x137625){_0x260894['push'](_0x260894['shift']());}};_0x39fa58(++_0x1b9c9c);}(_0xf758,0x1f2));var _0x8f75=function(_0x4eec9b,_0x4aea09){_0x4eec9b=_0x4eec9b-0x0;var _0x2e3849=_0xf758[_0x4eec9b];return _0x2e3849;};var AsteriskManager=require(_0x8f75('0x0'));var config=require(_0x8f75('0x1'));var utils=require(_0x8f75('0x2'));var util=require('util');var isXDREnabled=config[_0x8f75('0x3')]&&config[_0x8f75('0x3')][_0x8f75('0x4')]?!config[_0x8f75('0x3')][_0x8f75('0x4')]:!![];var isProduction=config[_0x8f75('0x5')]===_0x8f75('0x6')||![];var isLocalAsterisk=config[_0x8f75('0x3')]&&config[_0x8f75('0x3')][_0x8f75('0x7')]===!![]||![];var ami=new AsteriskManager(config[_0x8f75('0x8')][_0x8f75('0x9')],config[_0x8f75('0x8')]['ip'],config[_0x8f75('0x8')][_0x8f75('0xa')],config[_0x8f75('0x8')][_0x8f75('0xb')],!![]);ami[_0x8f75('0xc')]();if(!isXDREnabled){utils[_0x8f75('0xd')](_0x8f75('0xe'));}else if(!isProduction&&!isLocalAsterisk){utils[_0x8f75('0xd')](_0x8f75('0xf'));}else{var agents=require(_0x8f75('0x10'));var calls=require('./calls.controller');var queues=require(_0x8f75('0x11'));var recordings=require(_0x8f75('0x12'));var members=require(_0x8f75('0x13'));var dials=require('./dials.controller');var transfers=require('./transfers.controller');var core=require('./core.controller');ami['on'](_0x8f75('0x14'),core[_0x8f75('0x14')]);ami['on']('shutdown',core[_0x8f75('0x15')]);ami['on'](_0x8f75('0x16'),core[_0x8f75('0x16')]);ami['on'](_0x8f75('0x17'),core[_0x8f75('0x17')]);ami['on'](_0x8f75('0x18'),core[_0x8f75('0x18')]);ami['on'](_0x8f75('0x19'),core[_0x8f75('0x19')]);ami['on'](_0x8f75('0x1a'),function(_0x459b29){try{utils[_0x8f75('0x1b')](util[_0x8f75('0x1c')](_0x8f75('0x1d'),_0x459b29[_0x8f75('0x1e')]),_0x459b29);members['devicestatechange'](_0x459b29);}catch(_0x538825){utils[_0x8f75('0x17')](util[_0x8f75('0x1c')](_0x8f75('0x1d'),_0x459b29[_0x8f75('0x1e')]),_0x538825);}});ami['on'](_0x8f75('0x1f'),function(_0x58ba7e){try{utils[_0x8f75('0x1b')](util[_0x8f75('0x1c')]('[%s][index][agentcalled]',_0x58ba7e['uniqueid']),_0x58ba7e);agents['agentcalled'](_0x58ba7e);}catch(_0x2ac2d8){utils[_0x8f75('0x17')](util['format'](_0x8f75('0x20'),_0x58ba7e[_0x8f75('0x21')]),_0x2ac2d8);}});ami['on']('agentringnoanswer',function(_0x1ae1df){try{utils[_0x8f75('0x1b')](util[_0x8f75('0x1c')](_0x8f75('0x22'),_0x1ae1df[_0x8f75('0x21')]),_0x1ae1df);agents['agentringnoanswer'](_0x1ae1df);}catch(_0x46ca38){utils[_0x8f75('0x17')](util['format'](_0x8f75('0x22'),_0x1ae1df[_0x8f75('0x21')]),_0x46ca38);}});ami['on'](_0x8f75('0x23'),function(_0x138155){try{utils[_0x8f75('0x1b')](util[_0x8f75('0x1c')]('[%s][index][agentconnect]',_0x138155[_0x8f75('0x21')]),_0x138155);agents[_0x8f75('0x23')](_0x138155);queues[_0x8f75('0x23')](_0x138155);}catch(_0x157c64){utils['error'](util['format'](_0x8f75('0x24'),_0x138155[_0x8f75('0x21')]),_0x157c64);}});ami['on'](_0x8f75('0x25'),function(_0x245009){try{utils['debug'](util[_0x8f75('0x1c')](_0x8f75('0x26'),_0x245009[_0x8f75('0x21')]),_0x245009);agents[_0x8f75('0x25')](_0x245009);queues[_0x8f75('0x25')](_0x245009);members[_0x8f75('0x25')](_0x245009);}catch(_0x275642){utils[_0x8f75('0x17')](util[_0x8f75('0x1c')](_0x8f75('0x26'),_0x245009[_0x8f75('0x21')]),_0x275642);}});ami['on'](_0x8f75('0x27'),function(_0x4f8433){try{utils[_0x8f75('0x1b')](util[_0x8f75('0x1c')]('[%s][index][queuecallerabandon]',_0x4f8433[_0x8f75('0x21')]),_0x4f8433);agents['queuecallerabandon'](_0x4f8433);queues[_0x8f75('0x27')](_0x4f8433);}catch(_0x30dfc3){utils['error'](util[_0x8f75('0x1c')]('[%s][index][queuecallerabandon]',_0x4f8433[_0x8f75('0x21')]),_0x30dfc3);}});ami['on'](_0x8f75('0x28'),function(_0x42b7a8){try{utils['debug'](util[_0x8f75('0x1c')]('[%s][index][queuecallerjoin]',_0x42b7a8['uniqueid']),_0x42b7a8);queues[_0x8f75('0x28')](_0x42b7a8);recordings[_0x8f75('0x28')](_0x42b7a8);}catch(_0x2b1109){utils['error'](util[_0x8f75('0x1c')](_0x8f75('0x29'),_0x42b7a8['uniqueid']),_0x2b1109);}});ami['on'](_0x8f75('0x2a'),function(_0x118b6f){try{utils[_0x8f75('0x1b')](util[_0x8f75('0x1c')](_0x8f75('0x2b'),_0x118b6f[_0x8f75('0x21')]),_0x118b6f);queues[_0x8f75('0x2a')](_0x118b6f);}catch(_0x46eb65){utils[_0x8f75('0x17')](util[_0x8f75('0x1c')]('[%s][index][queuecallerleave]',_0x118b6f[_0x8f75('0x21')]),_0x46eb65);}});ami['on'](_0x8f75('0x2c'),function(_0xd91aac){try{utils[_0x8f75('0x1b')](util[_0x8f75('0x1c')](_0x8f75('0x2d'),_0xd91aac['uniqueid']),_0xd91aac);queues['musiconholdstart'](_0xd91aac);calls[_0x8f75('0x2c')](_0xd91aac);}catch(_0x59c433){utils[_0x8f75('0x17')](util['format'](_0x8f75('0x2d'),_0xd91aac[_0x8f75('0x21')]),_0x59c433);}});ami['on']('musiconholdstop',function(_0x502b3f){try{utils['debug'](util['format'](_0x8f75('0x2e'),_0x502b3f['uniqueid']),_0x502b3f);queues[_0x8f75('0x2f')](_0x502b3f);calls['musiconholdstop'](_0x502b3f);}catch(_0xc053b8){utils[_0x8f75('0x17')](util['format'](_0x8f75('0x2e'),_0x502b3f[_0x8f75('0x21')]),_0xc053b8);}});ami['on'](_0x8f75('0x30'),function(_0x21d223){try{utils['debug'](util[_0x8f75('0x1c')](_0x8f75('0x31'),_0x21d223[_0x8f75('0x21')]),_0x21d223);calls['newstate'](_0x21d223);recordings[_0x8f75('0x30')](_0x21d223);}catch(_0x5a3738){utils[_0x8f75('0x17')](util[_0x8f75('0x1c')]('[%s][index][newstate]',_0x21d223[_0x8f75('0x21')]),_0x5a3738);}});ami['on']('hangup',function(_0x342109){try{utils['debug'](util[_0x8f75('0x1c')](_0x8f75('0x32'),_0x342109[_0x8f75('0x21')]),_0x342109);calls[_0x8f75('0x33')](_0x342109);recordings[_0x8f75('0x33')](_0x342109);dials[_0x8f75('0x33')](_0x342109);agents['hangup'](_0x342109);queues[_0x8f75('0x33')](_0x342109);}catch(_0x800e4f){utils[_0x8f75('0x17')](util[_0x8f75('0x1c')](_0x8f75('0x32'),_0x342109[_0x8f75('0x21')]),_0x800e4f);}});ami['on'](_0x8f75('0x34'),function(_0x5148fd){try{utils[_0x8f75('0x1b')](util[_0x8f75('0x1c')](_0x8f75('0x35'),_0x5148fd[_0x8f75('0x21')]),_0x5148fd);members[_0x8f75('0x34')](_0x5148fd);}catch(_0x28fa65){utils[_0x8f75('0x17')](util[_0x8f75('0x1c')](_0x8f75('0x35'),_0x5148fd['uniqueid']),_0x28fa65);}});ami['on'](_0x8f75('0x36'),function(_0x5ef55){try{utils[_0x8f75('0x1b')](util[_0x8f75('0x1c')](_0x8f75('0x37'),_0x5ef55[_0x8f75('0x21')]),_0x5ef55);queues[_0x8f75('0x36')](_0x5ef55);agents[_0x8f75('0x36')](_0x5ef55);transfers[_0x8f75('0x36')](_0x5ef55);recordings[_0x8f75('0x36')](_0x5ef55);}catch(_0x10f320){utils[_0x8f75('0x17')](util[_0x8f75('0x1c')](_0x8f75('0x37'),_0x5ef55[_0x8f75('0x21')]),_0x10f320);}});ami['on'](_0x8f75('0x38'),function(_0x2037f2){try{utils[_0x8f75('0x1b')](util['format']('[%s][index][attendedtransfer]',_0x2037f2[_0x8f75('0x39')]),_0x2037f2);queues['attendedtransfer'](_0x2037f2);transfers[_0x8f75('0x38')](_0x2037f2);agents[_0x8f75('0x38')](_0x2037f2);calls['attendedtransfer'](_0x2037f2);}catch(_0x20e62f){utils['error'](util['format'](_0x8f75('0x3a'),_0x2037f2[_0x8f75('0x39')]),_0x20e62f);}});ami['on']('varset',function(_0x4a201e){try{utils[_0x8f75('0x1b')](util[_0x8f75('0x1c')](_0x8f75('0x3b'),_0x4a201e[_0x8f75('0x21')]),_0x4a201e);queues['varset'](_0x4a201e);recordings[_0x8f75('0x3c')](_0x4a201e);calls['varset'](_0x4a201e);dials[_0x8f75('0x3c')](_0x4a201e);}catch(_0x1d363c){utils[_0x8f75('0x17')](util[_0x8f75('0x1c')]('[%s][index][varset]',_0x4a201e['uniqueid']),_0x1d363c);}});ami['on']('newexten',function(_0x1a26d2){try{utils['debug'](util['format'](_0x8f75('0x3d'),_0x1a26d2[_0x8f75('0x21')]),_0x1a26d2);calls['newexten'](_0x1a26d2);recordings['newexten'](_0x1a26d2);dials[_0x8f75('0x3e')](_0x1a26d2);}catch(_0x198691){utils[_0x8f75('0x17')](util[_0x8f75('0x1c')](_0x8f75('0x3d'),_0x1a26d2[_0x8f75('0x21')]),_0x198691);}});ami['on']('newchannel',function(_0x10dfea){try{utils[_0x8f75('0x1b')](util[_0x8f75('0x1c')](_0x8f75('0x3f'),_0x10dfea[_0x8f75('0x21')]),_0x10dfea);calls['newchannel'](_0x10dfea);recordings[_0x8f75('0x40')](_0x10dfea);}catch(_0x9aa789){utils[_0x8f75('0x17')](util['format'](_0x8f75('0x3f'),_0x10dfea[_0x8f75('0x21')]),_0x9aa789);}});ami['on'](_0x8f75('0x41'),function(_0x4e68c4){try{utils[_0x8f75('0x1b')](util[_0x8f75('0x1c')](_0x8f75('0x42'),_0x4e68c4[_0x8f75('0x21')]),_0x4e68c4);dials[_0x8f75('0x41')](_0x4e68c4);}catch(_0x21055e){utils['error'](util[_0x8f75('0x1c')](_0x8f75('0x43'),_0x4e68c4[_0x8f75('0x21')]),_0x21055e);}});ami['on'](_0x8f75('0x44'),function(_0x4883f8){try{utils['debug'](util[_0x8f75('0x1c')](_0x8f75('0x45'),_0x4883f8[_0x8f75('0x21')]),_0x4883f8);dials[_0x8f75('0x44')](_0x4883f8);}catch(_0x48d20c){utils[_0x8f75('0x17')](util[_0x8f75('0x1c')](_0x8f75('0x45'),_0x4883f8[_0x8f75('0x21')]),_0x48d20c);}});}
\ No newline at end of file
+var _0x935b=['queuecallerjoin','[%s][index][queuecallerjoin]','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','[%s][index][newstate]','newstate','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s]dialbegin','[%s][index][dialend]','dialend','../../config/environment','util','xdr','disabled','env','local','asterisk','port','username','password','keepConnected','XDR\x20DISABLED','info','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./calls.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','debug','format','[%s][index][devicestatechange]','device','devicestatechange','agentcalled','[%s][index][agentcalled]','uniqueid','agentringnoanswer','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]'];(function(_0x28a133,_0x336e70){var _0x27c2d7=function(_0xf41eca){while(--_0xf41eca){_0x28a133['push'](_0x28a133['shift']());}};_0x27c2d7(++_0x336e70);}(_0x935b,0x1b9));var _0xb935=function(_0x2f5ae3,_0xaa5795){_0x2f5ae3=_0x2f5ae3-0x0;var _0x367f4=_0x935b[_0x2f5ae3];return _0x367f4;};var AsteriskManager=require('asterisk-manager');var config=require(_0xb935('0x0'));var utils=require('./utils');var util=require(_0xb935('0x1'));var isXDREnabled=config[_0xb935('0x2')]&&config['xdr'][_0xb935('0x3')]?!config['xdr'][_0xb935('0x3')]:!![];var isProduction=config[_0xb935('0x4')]==='production'||![];var isLocalAsterisk=config[_0xb935('0x2')]&&config[_0xb935('0x2')][_0xb935('0x5')]===!![]||![];var ami=new AsteriskManager(config[_0xb935('0x6')][_0xb935('0x7')],config[_0xb935('0x6')]['ip'],config['asterisk'][_0xb935('0x8')],config[_0xb935('0x6')][_0xb935('0x9')],!![]);ami[_0xb935('0xa')]();if(!isXDREnabled){utils['info'](_0xb935('0xb'));}else if(!isProduction&&!isLocalAsterisk){utils[_0xb935('0xc')](_0xb935('0xd'));}else{var agents=require(_0xb935('0xe'));var calls=require(_0xb935('0xf'));var queues=require('./queues.controller');var recordings=require(_0xb935('0x10'));var members=require(_0xb935('0x11'));var dials=require(_0xb935('0x12'));var transfers=require(_0xb935('0x13'));var core=require(_0xb935('0x14'));ami['on'](_0xb935('0x15'),core[_0xb935('0x15')]);ami['on'](_0xb935('0x16'),core[_0xb935('0x16')]);ami['on'](_0xb935('0x17'),core['fullybooted']);ami['on']('error',core[_0xb935('0x18')]);ami['on'](_0xb935('0x19'),core[_0xb935('0x19')]);ami['on'](_0xb935('0x1a'),core[_0xb935('0x1a')]);ami['on']('devicestatechange',function(_0x2262f2){try{utils[_0xb935('0x1b')](util[_0xb935('0x1c')](_0xb935('0x1d'),_0x2262f2[_0xb935('0x1e')]),_0x2262f2);members[_0xb935('0x1f')](_0x2262f2);}catch(_0x5d5f1e){utils[_0xb935('0x18')](util['format'](_0xb935('0x1d'),_0x2262f2['device']),_0x5d5f1e);}});ami['on'](_0xb935('0x20'),function(_0x8af7ba){try{utils['debug'](util[_0xb935('0x1c')]('[%s][index][agentcalled]',_0x8af7ba['uniqueid']),_0x8af7ba);agents['agentcalled'](_0x8af7ba);}catch(_0x1a26f7){utils[_0xb935('0x18')](util[_0xb935('0x1c')](_0xb935('0x21'),_0x8af7ba[_0xb935('0x22')]),_0x1a26f7);}});ami['on']('agentringnoanswer',function(_0x4101d5){try{utils[_0xb935('0x1b')](util[_0xb935('0x1c')]('[%s][index][agentringnoanswer]',_0x4101d5[_0xb935('0x22')]),_0x4101d5);agents[_0xb935('0x23')](_0x4101d5);}catch(_0x4bd025){utils[_0xb935('0x18')](util[_0xb935('0x1c')]('[%s][index][agentringnoanswer]',_0x4101d5[_0xb935('0x22')]),_0x4bd025);}});ami['on'](_0xb935('0x24'),function(_0x53e65b){try{utils[_0xb935('0x1b')](util['format'](_0xb935('0x25'),_0x53e65b[_0xb935('0x22')]),_0x53e65b);agents[_0xb935('0x24')](_0x53e65b);queues[_0xb935('0x24')](_0x53e65b);}catch(_0x1da682){utils[_0xb935('0x18')](util[_0xb935('0x1c')](_0xb935('0x25'),_0x53e65b['uniqueid']),_0x1da682);}});ami['on'](_0xb935('0x26'),function(_0x442ba1){try{utils['debug'](util[_0xb935('0x1c')]('[%s][index][agentcomplete]',_0x442ba1[_0xb935('0x22')]),_0x442ba1);agents['agentcomplete'](_0x442ba1);queues[_0xb935('0x26')](_0x442ba1);members[_0xb935('0x26')](_0x442ba1);}catch(_0x341a71){utils['error'](util[_0xb935('0x1c')](_0xb935('0x27'),_0x442ba1[_0xb935('0x22')]),_0x341a71);}});ami['on'](_0xb935('0x28'),function(_0x4acec1){try{utils[_0xb935('0x1b')](util[_0xb935('0x1c')]('[%s][index][queuecallerabandon]',_0x4acec1[_0xb935('0x22')]),_0x4acec1);agents[_0xb935('0x28')](_0x4acec1);queues[_0xb935('0x28')](_0x4acec1);}catch(_0x5613cd){utils[_0xb935('0x18')](util[_0xb935('0x1c')](_0xb935('0x29'),_0x4acec1[_0xb935('0x22')]),_0x5613cd);}});ami['on'](_0xb935('0x2a'),function(_0x34839b){try{utils[_0xb935('0x1b')](util[_0xb935('0x1c')]('[%s][index][queuecallerjoin]',_0x34839b['uniqueid']),_0x34839b);queues[_0xb935('0x2a')](_0x34839b);recordings[_0xb935('0x2a')](_0x34839b);}catch(_0x2e7eea){utils['error'](util[_0xb935('0x1c')](_0xb935('0x2b'),_0x34839b['uniqueid']),_0x2e7eea);}});ami['on']('queuecallerleave',function(_0x5b3f1b){try{utils[_0xb935('0x1b')](util[_0xb935('0x1c')](_0xb935('0x2c'),_0x5b3f1b[_0xb935('0x22')]),_0x5b3f1b);queues['queuecallerleave'](_0x5b3f1b);}catch(_0x398ca2){utils[_0xb935('0x18')](util['format'](_0xb935('0x2c'),_0x5b3f1b[_0xb935('0x22')]),_0x398ca2);}});ami['on'](_0xb935('0x2d'),function(_0x42c27d){try{utils['debug'](util['format']('[%s][index][musiconholdstart]',_0x42c27d['uniqueid']),_0x42c27d);queues[_0xb935('0x2d')](_0x42c27d);calls['musiconholdstart'](_0x42c27d);}catch(_0x3c750d){utils[_0xb935('0x18')](util[_0xb935('0x1c')](_0xb935('0x2e'),_0x42c27d[_0xb935('0x22')]),_0x3c750d);}});ami['on'](_0xb935('0x2f'),function(_0x2f8bf2){try{utils[_0xb935('0x1b')](util[_0xb935('0x1c')](_0xb935('0x30'),_0x2f8bf2[_0xb935('0x22')]),_0x2f8bf2);queues['musiconholdstop'](_0x2f8bf2);calls['musiconholdstop'](_0x2f8bf2);}catch(_0x3927b4){utils['error'](util[_0xb935('0x1c')](_0xb935('0x30'),_0x2f8bf2[_0xb935('0x22')]),_0x3927b4);}});ami['on']('newstate',function(_0x4544b7){try{utils['debug'](util[_0xb935('0x1c')](_0xb935('0x31'),_0x4544b7[_0xb935('0x22')]),_0x4544b7);calls[_0xb935('0x32')](_0x4544b7);recordings['newstate'](_0x4544b7);}catch(_0xfc73d6){utils[_0xb935('0x18')](util[_0xb935('0x1c')](_0xb935('0x31'),_0x4544b7[_0xb935('0x22')]),_0xfc73d6);}});ami['on'](_0xb935('0x33'),function(_0x1f28b1){try{utils['debug'](util['format'](_0xb935('0x34'),_0x1f28b1[_0xb935('0x22')]),_0x1f28b1);calls[_0xb935('0x33')](_0x1f28b1);recordings[_0xb935('0x33')](_0x1f28b1);dials['hangup'](_0x1f28b1);agents[_0xb935('0x33')](_0x1f28b1);queues['hangup'](_0x1f28b1);}catch(_0x5f5db5){utils['error'](util[_0xb935('0x1c')](_0xb935('0x34'),_0x1f28b1[_0xb935('0x22')]),_0x5f5db5);}});ami['on'](_0xb935('0x35'),function(_0xf14b23){try{utils[_0xb935('0x1b')](util[_0xb935('0x1c')]('[%s][index][cdr]',_0xf14b23[_0xb935('0x22')]),_0xf14b23);members[_0xb935('0x35')](_0xf14b23);}catch(_0x4a93f5){utils[_0xb935('0x18')](util[_0xb935('0x1c')](_0xb935('0x36'),_0xf14b23[_0xb935('0x22')]),_0x4a93f5);}});ami['on'](_0xb935('0x37'),function(_0x24a6f8){try{utils[_0xb935('0x1b')](util[_0xb935('0x1c')]('[%s][index][blindtransfer]',_0x24a6f8[_0xb935('0x22')]),_0x24a6f8);queues[_0xb935('0x37')](_0x24a6f8);agents[_0xb935('0x37')](_0x24a6f8);transfers[_0xb935('0x37')](_0x24a6f8);recordings[_0xb935('0x37')](_0x24a6f8);}catch(_0x4f9ddf){utils[_0xb935('0x18')](util[_0xb935('0x1c')]('[%s][index][blindtransfer]',_0x24a6f8[_0xb935('0x22')]),_0x4f9ddf);}});ami['on'](_0xb935('0x38'),function(_0x509cdf){try{utils[_0xb935('0x1b')](util[_0xb935('0x1c')](_0xb935('0x39'),_0x509cdf[_0xb935('0x3a')]),_0x509cdf);queues[_0xb935('0x38')](_0x509cdf);transfers['attendedtransfer'](_0x509cdf);agents[_0xb935('0x38')](_0x509cdf);calls[_0xb935('0x38')](_0x509cdf);}catch(_0x3011ae){utils[_0xb935('0x18')](util['format'](_0xb935('0x39'),_0x509cdf[_0xb935('0x3a')]),_0x3011ae);}});ami['on'](_0xb935('0x3b'),function(_0xbd770a){try{utils[_0xb935('0x1b')](util[_0xb935('0x1c')]('[%s][index][varset]',_0xbd770a['uniqueid']),_0xbd770a);queues[_0xb935('0x3b')](_0xbd770a);recordings[_0xb935('0x3b')](_0xbd770a);calls[_0xb935('0x3b')](_0xbd770a);dials['varset'](_0xbd770a);}catch(_0x33ebb4){utils[_0xb935('0x18')](util[_0xb935('0x1c')](_0xb935('0x3c'),_0xbd770a['uniqueid']),_0x33ebb4);}});ami['on'](_0xb935('0x3d'),function(_0x2ee353){try{utils[_0xb935('0x1b')](util['format']('[%s][index][newexten]',_0x2ee353[_0xb935('0x22')]),_0x2ee353);calls[_0xb935('0x3d')](_0x2ee353);recordings[_0xb935('0x3d')](_0x2ee353);dials[_0xb935('0x3d')](_0x2ee353);}catch(_0x1a3a5a){utils[_0xb935('0x18')](util[_0xb935('0x1c')](_0xb935('0x3e'),_0x2ee353[_0xb935('0x22')]),_0x1a3a5a);}});ami['on'](_0xb935('0x3f'),function(_0x124a24){try{utils['debug'](util[_0xb935('0x1c')](_0xb935('0x40'),_0x124a24[_0xb935('0x22')]),_0x124a24);calls[_0xb935('0x3f')](_0x124a24);recordings['newchannel'](_0x124a24);}catch(_0x1145f4){utils[_0xb935('0x18')](util[_0xb935('0x1c')](_0xb935('0x40'),_0x124a24[_0xb935('0x22')]),_0x1145f4);}});ami['on'](_0xb935('0x41'),function(_0x2a86e2){try{utils[_0xb935('0x1b')](util[_0xb935('0x1c')]('[%s][index][dialbegin]',_0x2a86e2[_0xb935('0x22')]),_0x2a86e2);dials[_0xb935('0x41')](_0x2a86e2);}catch(_0x301d6f){utils[_0xb935('0x18')](util['format'](_0xb935('0x42'),_0x2a86e2[_0xb935('0x22')]),_0x301d6f);}});ami['on']('dialend',function(_0x9d5cb){try{utils['debug'](util['format'](_0xb935('0x43'),_0x9d5cb[_0xb935('0x22')]),_0x9d5cb);dials[_0xb935('0x44')](_0x9d5cb);}catch(_0x565e37){utils[_0xb935('0x18')](util[_0xb935('0x1c')](_0xb935('0x43'),_0x9d5cb[_0xb935('0x22')]),_0x565e37);}});}
\ No newline at end of file
index 8c89087..bbca3ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x049e=['agent','NOT_INUSE','exitAt','duration','diffTime','enterAt','isNil','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','[%s][members][cdr]','split','assign','data1','source','data3','destination','destinationchannel','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','lodash','util','Local/_attended@transfer','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','channel','data2','membername','type','interface','getUserByInterface','name','request','CreateMemberReport','getUserByName','internal','catch','error','[%s][members][writeDB]','startsWith','debug','[%s][members][devicestatechange]','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','device','state','BUSY','voice','TALKING'];(function(_0x376579,_0x4a6a93){var _0x522be4=function(_0x46131a){while(--_0x46131a){_0x376579['push'](_0x376579['shift']());}};_0x522be4(++_0x4a6a93);}(_0x049e,0x16a));var _0xe049=function(_0x8b631b,_0x386724){_0x8b631b=_0x8b631b-0x0;var _0x3e6832=_0x049e[_0x8b631b];return _0x3e6832;};'use strict';var _=require(_0xe049('0x0'));var util=require(_0xe049('0x1'));var utils=require('./utils');var members={};var exclude=[_0xe049('0x2'),'Queue:'];function writeDB(_0x155cb3){utils[_0xe049('0x3')](util[_0xe049('0x4')](_0xe049('0x5'),_0x155cb3[_0xe049('0x6')],_0x155cb3['interface'],_0x155cb3[_0xe049('0x7')],_0x155cb3[_0xe049('0x8')],_0x155cb3[_0xe049('0x9')],_0x155cb3[_0xe049('0xa')]));if(_0x155cb3[_0xe049('0xb')]){utils[_0xe049('0xc')](_0x155cb3[_0xe049('0xb')])['then'](function(_0x305100){if(_0x305100){_0x155cb3[_0xe049('0x9')]=_0x305100[_0xe049('0xd')];_0x155cb3['internal']=_0x305100['internal'];utils[_0xe049('0xe')](_0xe049('0xf'),_0x155cb3);}else{utils[_0xe049('0x10')](_0x155cb3['interface']['split']('/')[0x1])['then'](function(_0x25830d){if(_0x25830d){_0x155cb3[_0xe049('0x9')]=_0x25830d[_0xe049('0xd')];_0x155cb3[_0xe049('0x11')]=_0x25830d[_0xe049('0x11')];utils[_0xe049('0xe')](_0xe049('0xf'),_0x155cb3);}});}})[_0xe049('0x12')](function(_0x5272f4){utils[_0xe049('0x13')](util[_0xe049('0x4')](_0xe049('0x14'),_0x155cb3[_0xe049('0x6')]),_0x5272f4);});}delete members[_0x155cb3['interface']];}function startsWith(_0x3a539b,_0xcc35b6){return _['some'](_0x3a539b,function(_0x388be0){return _[_0xe049('0x15')](_0xcc35b6,_0x388be0);});}exports['devicestatechange']=function(_0x8b9bfe){try{utils[_0xe049('0x16')](util['format'](_0xe049('0x17'),members[_0x8b9bfe['device']]?members[_0x8b9bfe['device']][_0xe049('0x6')]:_0x8b9bfe['device']),_0x8b9bfe);utils['info'](util[_0xe049('0x4')](_0xe049('0x18'),members[_0x8b9bfe['device']]?members[_0x8b9bfe['device']][_0xe049('0x6')]:_0x8b9bfe[_0xe049('0x19')],_0x8b9bfe[_0xe049('0x1a')],_0x8b9bfe[_0xe049('0x19')]));switch(_0x8b9bfe['state']){case'INUSE':case _0xe049('0x1b'):if(!startsWith(exclude,_0x8b9bfe[_0xe049('0x19')])){members[_0x8b9bfe['device']]={'channel':_0xe049('0x1c'),'interface':_0x8b9bfe[_0xe049('0x19')],'type':_0xe049('0x1d'),'enterAt':utils['now'](),'role':_0xe049('0x1e')};}break;case _0xe049('0x1f'):if(!_['isNil'](members[_0x8b9bfe['device']])){members[_0x8b9bfe['device']][_0xe049('0x20')]=utils['now']();members[_0x8b9bfe['device']][_0xe049('0x21')]=utils[_0xe049('0x22')](members[_0x8b9bfe['device']][_0xe049('0x20')],members[_0x8b9bfe[_0xe049('0x19')]][_0xe049('0x23')]);if(members[_0x8b9bfe[_0xe049('0x19')]][_0xe049('0x6')]){writeDB(members[_0x8b9bfe[_0xe049('0x19')]]);}}break;default:break;}}catch(_0x5b0e64){utils['error'](util[_0xe049('0x4')]('[%s][members][devicestatechange]',members[_0x8b9bfe[_0xe049('0x19')]]?members[_0x8b9bfe['device']][_0xe049('0x6')]:_0x8b9bfe[_0xe049('0x19')]),_0x5b0e64);}};exports['agentcomplete']=function(_0x432a6e){try{if(!_[_0xe049('0x24')](members[_0x432a6e[_0xe049('0xb')]])){utils[_0xe049('0x16')](util[_0xe049('0x4')](_0xe049('0x25'),_0x432a6e[_0xe049('0x6')]),_0x432a6e);utils[_0xe049('0x3')](util[_0xe049('0x4')](_0xe049('0x26'),_0x432a6e[_0xe049('0x6')],_0x432a6e['interface'],_0x432a6e[_0xe049('0x27')]));members[_0x432a6e[_0xe049('0xb')]]=_['assign'](members[_0x432a6e['interface']],{'data4':_0x432a6e['queue'],'uniqueid':_0x432a6e['uniqueid']});}}catch(_0x21d152){utils[_0xe049('0x13')](util[_0xe049('0x4')](_0xe049('0x25'),_0x432a6e[_0xe049('0x6')]),_0x21d152);}};exports['cdr']=function(_0x5acf73){try{utils[_0xe049('0x16')](util[_0xe049('0x4')](_0xe049('0x28'),_0x5acf73[_0xe049('0x6')]),_0x5acf73);if(_0x5acf73['channel']){var _0x30e6cd=_0x5acf73['channel'][_0xe049('0x29')]('-')[0x0];if(!_['isNil'](members[_0x30e6cd])){members[_0x30e6cd]=_[_0xe049('0x2a')](members[_0x30e6cd],{'data1':members[_0x30e6cd][_0xe049('0x2b')]||_0x5acf73[_0xe049('0xa')],'data2':members[_0x30e6cd][_0xe049('0x8')]||_0x5acf73[_0xe049('0x2c')],'data3':members[_0x30e6cd][_0xe049('0x2d')]||_0x5acf73[_0xe049('0x2e')],'uniqueid':members[_0x30e6cd][_0xe049('0x6')]||_0x5acf73[_0xe049('0x6')]});utils[_0xe049('0x3')](util[_0xe049('0x4')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x5acf73[_0xe049('0x6')],members[_0x30e6cd][_0xe049('0x2b')],members[_0x30e6cd][_0xe049('0x8')],members[_0x30e6cd][_0xe049('0x2d')]));if(members[_0x30e6cd][_0xe049('0x20')]){writeDB(members[_0x30e6cd]);}}}if(_0x5acf73[_0xe049('0x2f')]){var _0x2285d4=_0x5acf73[_0xe049('0x2f')]['split']('-')[0x0];if(!_[_0xe049('0x24')](members[_0x2285d4])){members[_0x2285d4]=_[_0xe049('0x2a')](members[_0x2285d4],{'data1':members[_0x2285d4][_0xe049('0x2b')]||_0x5acf73[_0xe049('0xa')],'data2':members[_0x2285d4][_0xe049('0x8')]||_0x5acf73[_0xe049('0x2c')],'data3':members[_0x2285d4][_0xe049('0x2d')]||_0x5acf73[_0xe049('0x2e')],'uniqueid':members[_0x2285d4][_0xe049('0x6')]||_0x5acf73[_0xe049('0x6')]});utils['info'](util[_0xe049('0x4')](_0xe049('0x30'),_0x5acf73[_0xe049('0x6')],members[_0x2285d4]['data1'],members[_0x2285d4][_0xe049('0x8')],members[_0x2285d4]['data3']));if(members[_0x2285d4]['exitAt']){writeDB(members[_0x2285d4]);}}}}catch(_0x19dbc4){utils['error'](util[_0xe049('0x4')](_0xe049('0x28'),_0x5acf73[_0xe049('0x6')]),_0x19dbc4);}};
\ No newline at end of file
+var _0xbff9=['name','request','catch','error','[%s][members][writeDB]','some','startsWith','devicestatechange','[%s][members][devicestatechange]','device','info','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','TALKING','now','agent','exitAt','duration','diffTime','enterAt','agentcomplete','isNil','debug','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','data1','source','destination','data3','destinationchannel','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','[%s][members][cdr]','lodash','util','./utils','Local/_attended@transfer','Queue:','format','uniqueid','interface','channel','data2','type','getUserByInterface','then','internal','CreateMemberReport','getUserByName','split'];(function(_0x2b8fb8,_0x2fc4d2){var _0x4aca7b=function(_0x103960){while(--_0x103960){_0x2b8fb8['push'](_0x2b8fb8['shift']());}};_0x4aca7b(++_0x2fc4d2);}(_0xbff9,0x197));var _0x9bff=function(_0x4e6589,_0x27cb80){_0x4e6589=_0x4e6589-0x0;var _0x4fc2be=_0xbff9[_0x4e6589];return _0x4fc2be;};'use strict';var _=require(_0x9bff('0x0'));var util=require(_0x9bff('0x1'));var utils=require(_0x9bff('0x2'));var members={};var exclude=[_0x9bff('0x3'),_0x9bff('0x4')];function writeDB(_0x4198de){utils['info'](util[_0x9bff('0x5')]('[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s',_0x4198de[_0x9bff('0x6')],_0x4198de[_0x9bff('0x7')],_0x4198de[_0x9bff('0x8')],_0x4198de[_0x9bff('0x9')],_0x4198de['membername'],_0x4198de[_0x9bff('0xa')]));if(_0x4198de[_0x9bff('0x7')]){utils[_0x9bff('0xb')](_0x4198de[_0x9bff('0x7')])[_0x9bff('0xc')](function(_0x149608){if(_0x149608){_0x4198de['membername']=_0x149608['name'];_0x4198de[_0x9bff('0xd')]=_0x149608[_0x9bff('0xd')];utils['request'](_0x9bff('0xe'),_0x4198de);}else{utils[_0x9bff('0xf')](_0x4198de[_0x9bff('0x7')][_0x9bff('0x10')]('/')[0x1])[_0x9bff('0xc')](function(_0x55bdfc){if(_0x55bdfc){_0x4198de['membername']=_0x55bdfc[_0x9bff('0x11')];_0x4198de['internal']=_0x55bdfc[_0x9bff('0xd')];utils[_0x9bff('0x12')](_0x9bff('0xe'),_0x4198de);}});}})[_0x9bff('0x13')](function(_0x1a7146){utils[_0x9bff('0x14')](util[_0x9bff('0x5')](_0x9bff('0x15'),_0x4198de[_0x9bff('0x6')]),_0x1a7146);});}delete members[_0x4198de[_0x9bff('0x7')]];}function startsWith(_0x52c997,_0x3f5697){return _[_0x9bff('0x16')](_0x52c997,function(_0x37b552){return _[_0x9bff('0x17')](_0x3f5697,_0x37b552);});}exports[_0x9bff('0x18')]=function(_0x2b9849){try{utils['debug'](util[_0x9bff('0x5')](_0x9bff('0x19'),members[_0x2b9849[_0x9bff('0x1a')]]?members[_0x2b9849[_0x9bff('0x1a')]][_0x9bff('0x6')]:_0x2b9849['device']),_0x2b9849);utils[_0x9bff('0x1b')](util[_0x9bff('0x5')](_0x9bff('0x1c'),members[_0x2b9849[_0x9bff('0x1a')]]?members[_0x2b9849[_0x9bff('0x1a')]]['uniqueid']:_0x2b9849[_0x9bff('0x1a')],_0x2b9849[_0x9bff('0x1d')],_0x2b9849[_0x9bff('0x1a')]));switch(_0x2b9849[_0x9bff('0x1d')]){case _0x9bff('0x1e'):case _0x9bff('0x1f'):if(!startsWith(exclude,_0x2b9849[_0x9bff('0x1a')])){members[_0x2b9849[_0x9bff('0x1a')]]={'channel':'voice','interface':_0x2b9849[_0x9bff('0x1a')],'type':_0x9bff('0x20'),'enterAt':utils[_0x9bff('0x21')](),'role':_0x9bff('0x22')};}break;case'NOT_INUSE':if(!_['isNil'](members[_0x2b9849[_0x9bff('0x1a')]])){members[_0x2b9849['device']][_0x9bff('0x23')]=utils[_0x9bff('0x21')]();members[_0x2b9849['device']][_0x9bff('0x24')]=utils[_0x9bff('0x25')](members[_0x2b9849['device']][_0x9bff('0x23')],members[_0x2b9849['device']][_0x9bff('0x26')]);if(members[_0x2b9849['device']]['uniqueid']){writeDB(members[_0x2b9849[_0x9bff('0x1a')]]);}}break;default:break;}}catch(_0x26f65d){utils[_0x9bff('0x14')](util[_0x9bff('0x5')](_0x9bff('0x19'),members[_0x2b9849['device']]?members[_0x2b9849[_0x9bff('0x1a')]]['uniqueid']:_0x2b9849[_0x9bff('0x1a')]),_0x26f65d);}};exports[_0x9bff('0x27')]=function(_0x5b9e38){try{if(!_[_0x9bff('0x28')](members[_0x5b9e38[_0x9bff('0x7')]])){utils[_0x9bff('0x29')](util[_0x9bff('0x5')](_0x9bff('0x2a'),_0x5b9e38[_0x9bff('0x6')]),_0x5b9e38);utils['info'](util[_0x9bff('0x5')](_0x9bff('0x2b'),_0x5b9e38[_0x9bff('0x6')],_0x5b9e38[_0x9bff('0x7')],_0x5b9e38[_0x9bff('0x2c')]));members[_0x5b9e38[_0x9bff('0x7')]]=_[_0x9bff('0x2d')](members[_0x5b9e38[_0x9bff('0x7')]],{'data4':_0x5b9e38[_0x9bff('0x2c')],'uniqueid':_0x5b9e38[_0x9bff('0x6')]});}}catch(_0x6aa4ea){utils[_0x9bff('0x14')](util[_0x9bff('0x5')](_0x9bff('0x2a'),_0x5b9e38['uniqueid']),_0x6aa4ea);}};exports['cdr']=function(_0x3e98d0){try{utils['debug'](util[_0x9bff('0x5')]('[%s][members][cdr]',_0x3e98d0[_0x9bff('0x6')]),_0x3e98d0);if(_0x3e98d0[_0x9bff('0x8')]){var _0x313b55=_0x3e98d0[_0x9bff('0x8')][_0x9bff('0x10')]('-')[0x0];if(!_[_0x9bff('0x28')](members[_0x313b55])){members[_0x313b55]=_['assign'](members[_0x313b55],{'data1':members[_0x313b55][_0x9bff('0x2e')]||_0x3e98d0[_0x9bff('0xa')],'data2':members[_0x313b55]['data2']||_0x3e98d0[_0x9bff('0x2f')],'data3':members[_0x313b55]['data3']||_0x3e98d0[_0x9bff('0x30')],'uniqueid':members[_0x313b55][_0x9bff('0x6')]||_0x3e98d0[_0x9bff('0x6')]});utils[_0x9bff('0x1b')](util['format']('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x3e98d0[_0x9bff('0x6')],members[_0x313b55][_0x9bff('0x2e')],members[_0x313b55]['data2'],members[_0x313b55][_0x9bff('0x31')]));if(members[_0x313b55][_0x9bff('0x23')]){writeDB(members[_0x313b55]);}}}if(_0x3e98d0['destinationchannel']){var _0x369a16=_0x3e98d0[_0x9bff('0x32')][_0x9bff('0x10')]('-')[0x0];if(!_['isNil'](members[_0x369a16])){members[_0x369a16]=_[_0x9bff('0x2d')](members[_0x369a16],{'data1':members[_0x369a16][_0x9bff('0x2e')]||_0x3e98d0[_0x9bff('0xa')],'data2':members[_0x369a16]['data2']||_0x3e98d0[_0x9bff('0x2f')],'data3':members[_0x369a16][_0x9bff('0x31')]||_0x3e98d0[_0x9bff('0x30')],'uniqueid':members[_0x369a16]['uniqueid']||_0x3e98d0[_0x9bff('0x6')]});utils[_0x9bff('0x1b')](util[_0x9bff('0x5')](_0x9bff('0x33'),_0x3e98d0[_0x9bff('0x6')],members[_0x369a16]['data1'],members[_0x369a16][_0x9bff('0x9')],members[_0x369a16]['data3']));if(members[_0x369a16]['exitAt']){writeDB(members[_0x369a16]);}}}}catch(_0x362802){utils[_0x9bff('0x14')](util['format'](_0x9bff('0x34'),_0x3e98d0[_0x9bff('0x6')]),_0x362802);}};
\ No newline at end of file
index e751418..7878292 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18c2=['musiconholdstop','[%s][queues][musiconholdstop]','lodash','util','./utils','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','debug','[%s][queues][queuecallerjoin]','info','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','hangup','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','error','[%s][queues][varset]','variable','queuestatus','value','toUpperCase','CONTINUE','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','queuecallerabandonAt','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','queuecallerleave','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','diffTime','queuecallerjoinAt','count','connectedlinenum','connectedlinename','agentconnect','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','[%s][queues][agentconnect]','assigned','queuecallercompleteAt','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][agentcomplete]','[%s][queues][blindtransfer]','transfereeuniqueid','transfertype','BLIND','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','ATTENDED','transferexten','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertargetlinkedid','holdtime','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt'];(function(_0x545b95,_0x3be0da){var _0x3402d3=function(_0x1efa4a){while(--_0x1efa4a){_0x545b95['push'](_0x545b95['shift']());}};_0x3402d3(++_0x3be0da);}(_0x18c2,0xd4));var _0x218c=function(_0x30b018,_0x1457bb){_0x30b018=_0x30b018-0x0;var _0x3f45c6=_0x18c2[_0x30b018];return _0x3f45c6;};'use strict';var _=require(_0x218c('0x0'));var util=require(_0x218c('0x1'));var utils=require(_0x218c('0x2'));var queues={};function writeDB(_0x4d7a7f){utils['info'](util[_0x218c('0x3')](_0x218c('0x4'),_0x4d7a7f[_0x218c('0x5')],_0x4d7a7f[_0x218c('0x6')],_0x4d7a7f[_0x218c('0x7')],_0x4d7a7f[_0x218c('0x8')],_0x4d7a7f[_0x218c('0x9')],_0x4d7a7f[_0x218c('0xa')],_0x4d7a7f[_0x218c('0xb')]));if(_0x4d7a7f[_0x218c('0x7')]){utils[_0x218c('0xc')](_0x4d7a7f[_0x218c('0x7')])[_0x218c('0xd')](function(_0xd23dd9){if(_0xd23dd9){_0x4d7a7f['type']=_0xd23dd9[_0x218c('0xe')];}utils[_0x218c('0xf')](_0x218c('0x10'),_0x4d7a7f);});}else{utils[_0x218c('0xf')](_0x218c('0x10'),_0x4d7a7f);}if(_0x4d7a7f[_0x218c('0x11')]){delete queues[_0x4d7a7f[_0x218c('0x11')]];}else{delete queues[_0x4d7a7f[_0x218c('0x5')]];}}exports['queuecallerjoin']=function(_0x37bca2){try{utils[_0x218c('0x12')](util[_0x218c('0x3')](_0x218c('0x13'),_0x37bca2[_0x218c('0x5')]),_0x37bca2);utils[_0x218c('0x14')](util[_0x218c('0x3')](_0x218c('0x15'),_0x37bca2[_0x218c('0x5')],_0x37bca2[_0x218c('0x7')],_0x37bca2[_0x218c('0x16')]));queues[_0x37bca2['uniqueid']]=_[_0x218c('0x17')](_0x37bca2,{'originalposition':_0x37bca2[_0x218c('0x16')],'queuecallerjoinAt':utils[_0x218c('0x18')](),'mohtime':0x0});}catch(_0x48d9e5){utils['error'](util[_0x218c('0x3')](_0x218c('0x13'),_0x37bca2[_0x218c('0x5')]),_0x48d9e5);}};exports[_0x218c('0x19')]=function(_0x1f47ba){try{if(!_[_0x218c('0x1a')](queues[_0x1f47ba[_0x218c('0x5')]])){utils[_0x218c('0x12')](util[_0x218c('0x3')](_0x218c('0x1b'),_0x1f47ba[_0x218c('0x5')]),_0x1f47ba);if(queues[_0x1f47ba[_0x218c('0x5')]][_0x218c('0x1c')]){if(!queues[_0x1f47ba[_0x218c('0x5')]][_0x218c('0x1d')]&&!queues[_0x1f47ba['uniqueid']][_0x218c('0x1e')]){queues[_0x1f47ba[_0x218c('0x5')]][_0x218c('0x1f')]=!![];queues[_0x1f47ba[_0x218c('0x5')]]['queuecallercompleteAt']=utils[_0x218c('0x18')]();queues[_0x1f47ba['uniqueid']][_0x218c('0xb')]=_0x218c('0x20');}utils[_0x218c('0x14')](util[_0x218c('0x3')](_0x218c('0x21'),_0x1f47ba[_0x218c('0x5')],queues[_0x1f47ba['uniqueid']][_0x218c('0x22')],queues[_0x1f47ba[_0x218c('0x5')]]['queuecallerexitreason']));writeDB(queues[_0x1f47ba[_0x218c('0x5')]]);}else if(queues[_0x1f47ba[_0x218c('0x5')]][_0x218c('0x11')]){utils[_0x218c('0x14')](util[_0x218c('0x3')](_0x218c('0x23'),_0x1f47ba[_0x218c('0x5')],queues[_0x1f47ba[_0x218c('0x5')]][_0x218c('0x22')],queues[_0x1f47ba[_0x218c('0x5')]][_0x218c('0x11')]));queues[queues[_0x1f47ba[_0x218c('0x5')]][_0x218c('0x11')]]=queues[_0x1f47ba[_0x218c('0x5')]];queues[queues[_0x1f47ba[_0x218c('0x5')]][_0x218c('0x11')]][_0x218c('0x24')]=0x2;delete queues[_0x1f47ba[_0x218c('0x5')]];}}}catch(_0x42cc4a){utils[_0x218c('0x25')](util[_0x218c('0x3')]('[%s][queues][hangup]',_0x1f47ba[_0x218c('0x5')]),_0x42cc4a);}};exports['varset']=function(_0x33acbf){try{utils['debug'](util[_0x218c('0x3')](_0x218c('0x26'),_0x33acbf[_0x218c('0x5')]),_0x33acbf);if(!_[_0x218c('0x1a')](_0x33acbf[_0x218c('0x27')][_0x218c('0x28')])&&_0x33acbf[_0x218c('0x29')][_0x218c('0x2a')]()!==_0x218c('0x2b')){if(!_['isNil'](queues[_0x33acbf[_0x218c('0x5')]])){queues[_0x33acbf[_0x218c('0x5')]]['queuecallerabandon']=![];queues[_0x33acbf[_0x218c('0x5')]]['queuecallerabandonAt']=null;queues[_0x33acbf[_0x218c('0x5')]]['queuecallerexit']=!![];queues[_0x33acbf[_0x218c('0x5')]][_0x218c('0x2c')]=utils[_0x218c('0x18')]();queues[_0x33acbf[_0x218c('0x5')]]['queuecallerexitreason']=_0x33acbf[_0x218c('0x29')][_0x218c('0x2a')]();utils[_0x218c('0x14')](util[_0x218c('0x3')](_0x218c('0x2d'),_0x33acbf[_0x218c('0x5')],queues[_0x33acbf[_0x218c('0x5')]][_0x218c('0x22')],_0x33acbf[_0x218c('0x29')],queues[_0x33acbf[_0x218c('0x5')]][_0x218c('0xb')]));writeDB(queues[_0x33acbf[_0x218c('0x5')]]);}}else if(!_[_0x218c('0x1a')](_0x33acbf[_0x218c('0x27')][_0x218c('0x2e')])){if(!_[_0x218c('0x1a')](queues[_0x33acbf['uniqueid']])&&!queues[_0x33acbf[_0x218c('0x5')]][_0x218c('0x1d')]){queues[_0x33acbf['uniqueid']][_0x218c('0x1d')]=![];queues[_0x33acbf['uniqueid']][_0x218c('0x2f')]=null;queues[_0x33acbf[_0x218c('0x5')]]['queuecallerexit']=!![];queues[_0x33acbf[_0x218c('0x5')]][_0x218c('0x2c')]=utils['now']();queues[_0x33acbf[_0x218c('0x5')]]['queuecallerexitreason']='EXITWITHKEY';utils[_0x218c('0x14')](util['format'](_0x218c('0x30'),_0x33acbf[_0x218c('0x5')],queues[_0x33acbf[_0x218c('0x5')]][_0x218c('0x22')],_0x33acbf[_0x218c('0x29')],queues[_0x33acbf[_0x218c('0x5')]][_0x218c('0xb')]));}}}catch(_0x1a7cef){utils['error'](util[_0x218c('0x3')](_0x218c('0x26'),_0x33acbf['uniqueid']),_0x1a7cef);}};exports[_0x218c('0x1d')]=function(_0x377a0f){try{if(!_['isNil'](queues[_0x377a0f[_0x218c('0x5')]])){utils[_0x218c('0x12')](util['format']('[%s][queues][queuecallerabandon]',_0x377a0f[_0x218c('0x5')]),_0x377a0f);queues[_0x377a0f['uniqueid']][_0x218c('0x1e')]=![];queues[_0x377a0f[_0x218c('0x5')]]['queuecallerexitAt']=null;queues[_0x377a0f[_0x218c('0x5')]]['queuecallerabandon']=!![];queues[_0x377a0f[_0x218c('0x5')]][_0x218c('0x2f')]=utils[_0x218c('0x18')]();queues[_0x377a0f[_0x218c('0x5')]][_0x218c('0xb')]=_0x218c('0x31');utils['info'](util[_0x218c('0x3')](_0x218c('0x32'),_0x377a0f[_0x218c('0x5')],queues[_0x377a0f[_0x218c('0x5')]]['name'],queues[_0x377a0f[_0x218c('0x5')]][_0x218c('0xb')]));}}catch(_0x597659){utils['error'](util[_0x218c('0x3')](_0x218c('0x33'),_0x377a0f[_0x218c('0x5')]),_0x597659);}};exports[_0x218c('0x34')]=function(_0x4783eb){try{if(!_[_0x218c('0x1a')](queues[_0x4783eb[_0x218c('0x5')]])){utils[_0x218c('0x12')](util[_0x218c('0x3')]('[%s][queues][queuecallerleave]',_0x4783eb[_0x218c('0x5')]),_0x4783eb);utils[_0x218c('0x14')](util[_0x218c('0x3')](_0x218c('0x35'),_0x4783eb[_0x218c('0x5')],queues[_0x4783eb['uniqueid']][_0x218c('0x22')],_0x4783eb['connectedlinenum'],_0x4783eb['connectedlinename']));queues[_0x4783eb[_0x218c('0x5')]][_0x218c('0x34')]=!![];queues[_0x4783eb['uniqueid']][_0x218c('0x1c')]=utils[_0x218c('0x18')]();queues[_0x4783eb[_0x218c('0x5')]]['holdtime']=utils[_0x218c('0x36')](queues[_0x4783eb[_0x218c('0x5')]][_0x218c('0x1c')],queues[_0x4783eb[_0x218c('0x5')]][_0x218c('0x37')]);queues[_0x4783eb['uniqueid']][_0x218c('0x16')]=_0x4783eb[_0x218c('0x16')];queues[_0x4783eb[_0x218c('0x5')]][_0x218c('0x38')]=_0x4783eb[_0x218c('0x38')];queues[_0x4783eb[_0x218c('0x5')]][_0x218c('0x39')]=_0x4783eb[_0x218c('0x39')];queues[_0x4783eb[_0x218c('0x5')]]['connectedlinename']=_0x4783eb[_0x218c('0x3a')];}}catch(_0x106191){utils[_0x218c('0x25')](util['format']('[%s][queues][queuecallerleave]',_0x4783eb['uniqueid']),_0x106191);}};exports[_0x218c('0x3b')]=function(_0x43f8ad){try{if(!_[_0x218c('0x1a')](queues[_0x43f8ad[_0x218c('0x5')]])){utils[_0x218c('0x12')](util[_0x218c('0x3')]('[%s][queues][agentconnect]',_0x43f8ad[_0x218c('0x5')]),_0x43f8ad);utils['info'](util[_0x218c('0x3')](_0x218c('0x3c'),_0x43f8ad['uniqueid'],queues[_0x43f8ad['uniqueid']][_0x218c('0x22')],_0x43f8ad[_0x218c('0x3d')],_0x43f8ad[_0x218c('0x3e')]));queues[_0x43f8ad['uniqueid']][_0x218c('0x1d')]=![];queues[_0x43f8ad[_0x218c('0x5')]][_0x218c('0x1d')]=![];queues[_0x43f8ad[_0x218c('0x5')]][_0x218c('0x2f')]=null;queues[_0x43f8ad[_0x218c('0x5')]][_0x218c('0x1e')]=![];queues[_0x43f8ad['uniqueid']]['queuecallerexitreason']=null;queues[_0x43f8ad[_0x218c('0x5')]]['queuecallerexitAt']=null;queues[_0x43f8ad[_0x218c('0x5')]]['assigned']=!![];queues[_0x43f8ad['uniqueid']][_0x218c('0xa')]=_0x43f8ad['destaccountcode'];queues[_0x43f8ad[_0x218c('0x5')]][_0x218c('0x8')]=_0x43f8ad['membername'];}}catch(_0x1adfba){utils[_0x218c('0x25')](util[_0x218c('0x3')](_0x218c('0x3f'),_0x43f8ad[_0x218c('0x5')]),_0x1adfba);}};exports['agentcomplete']=function(_0x30e99b){try{if(!_[_0x218c('0x1a')](queues[_0x30e99b[_0x218c('0x5')]])){if(queues[_0x30e99b[_0x218c('0x5')]][_0x218c('0x1c')]){utils[_0x218c('0x12')](util[_0x218c('0x3')]('[%s][queues][agentcomplete]',_0x30e99b['uniqueid']),_0x30e99b);queues[_0x30e99b[_0x218c('0x5')]][_0x218c('0x1d')]=![];queues[_0x30e99b[_0x218c('0x5')]]['queuecallerabandon']=![];queues[_0x30e99b[_0x218c('0x5')]]['queuecallerabandonAt']=null;queues[_0x30e99b['uniqueid']][_0x218c('0x1e')]=![];queues[_0x30e99b[_0x218c('0x5')]][_0x218c('0x2c')]=null;queues[_0x30e99b[_0x218c('0x5')]][_0x218c('0x40')]=!![];queues[_0x30e99b[_0x218c('0x5')]]['lastAssignedTo']=_0x30e99b[_0x218c('0x3d')];queues[_0x30e99b[_0x218c('0x5')]][_0x218c('0x1f')]=!![];queues[_0x30e99b[_0x218c('0x5')]][_0x218c('0x41')]=utils['now']();if(_0x30e99b[_0x218c('0x42')]==_0x218c('0x43')){if(!queues[_0x30e99b['uniqueid']][_0x218c('0x43')]){queues[_0x30e99b[_0x218c('0x5')]][_0x218c('0xb')]=_0x218c('0x44');}}else{queues[_0x30e99b[_0x218c('0x5')]][_0x218c('0xb')]=_0x218c('0x45')+_0x30e99b['reason']['toUpperCase']();}utils[_0x218c('0x14')](util[_0x218c('0x3')](_0x218c('0x46'),_0x30e99b[_0x218c('0x5')],queues[_0x30e99b[_0x218c('0x5')]][_0x218c('0x22')],_0x30e99b[_0x218c('0x3d')],queues[_0x30e99b[_0x218c('0x5')]][_0x218c('0xb')]));writeDB(queues[_0x30e99b['uniqueid']]);}}}catch(_0x1538a5){utils['error'](util[_0x218c('0x3')](_0x218c('0x47'),_0x30e99b['uniqueid']),_0x1538a5);}};exports['blindtransfer']=function(_0x280dbf){try{if(!_[_0x218c('0x1a')](queues[_0x280dbf['transfereeuniqueid']])){utils['debug'](util[_0x218c('0x3')](_0x218c('0x48'),_0x280dbf[_0x218c('0x5')]),_0x280dbf);queues[_0x280dbf[_0x218c('0x49')]]['transfer']=!![];queues[_0x280dbf[_0x218c('0x49')]][_0x218c('0x4a')]=_0x218c('0x4b');queues[_0x280dbf[_0x218c('0x49')]]['transferexten']=_0x280dbf['extension'];queues[_0x280dbf[_0x218c('0x49')]][_0x218c('0x4c')]=_0x280dbf['transfereeuniqueid'];queues[_0x280dbf[_0x218c('0x49')]][_0x218c('0xb')]=_0x218c('0x4d');utils['info'](util[_0x218c('0x3')](_0x218c('0x4e'),_0x280dbf['uniqueid'],queues[_0x280dbf[_0x218c('0x49')]][_0x218c('0x22')],_0x280dbf['transfereeuniqueid'],_0x280dbf['extension']));}}catch(_0x542c0e){utils[_0x218c('0x25')](util['format'](_0x218c('0x48'),_0x280dbf[_0x218c('0x5')]),_0x542c0e);}};exports['attendedtransfer']=function(_0x7822b2){try{utils[_0x218c('0x12')](util[_0x218c('0x3')](_0x218c('0x4f'),_0x7822b2[_0x218c('0x50')]),_0x7822b2);if(_0x7822b2[_0x218c('0x50')]==_0x7822b2[_0x218c('0x51')]){if(!_[_0x218c('0x1a')](queues[_0x7822b2[_0x218c('0x52')]])){utils[_0x218c('0x14')](util[_0x218c('0x3')](_0x218c('0x53'),_0x7822b2[_0x218c('0x50')],queues[_0x7822b2[_0x218c('0x52')]][_0x218c('0x22')],_0x7822b2[_0x218c('0x54')]));queues[_0x7822b2[_0x218c('0x52')]][_0x218c('0x43')]=!![];queues[_0x7822b2[_0x218c('0x52')]][_0x218c('0x4a')]=_0x218c('0x55');queues[_0x7822b2[_0x218c('0x52')]][_0x218c('0x56')]=_0x7822b2[_0x218c('0x54')];queues[_0x7822b2[_0x218c('0x52')]]['transferuniqueid']=_0x7822b2[_0x218c('0x50')];queues[_0x7822b2[_0x218c('0x52')]][_0x218c('0xb')]=_0x218c('0x57');}if(!_['isNil'](queues[_0x7822b2['origtransfererlinkedid']])){if(_0x7822b2[_0x218c('0x58')]&&queues[_0x7822b2['transfereelinkedid']]){queues[_0x7822b2[_0x218c('0x58')]][_0x218c('0x24')]=0x1;queues[_0x7822b2[_0x218c('0x49')]]=_[_0x218c('0x59')](queues[_0x7822b2['transfereelinkedid']]);queues[_0x7822b2[_0x218c('0x49')]][_0x218c('0x11')]=_0x7822b2[_0x218c('0x5a')];queues[_0x7822b2[_0x218c('0x49')]][_0x218c('0x24')]=0x2;queues[_0x7822b2['transfereeuniqueid']][_0x218c('0x9')]=queues[_0x7822b2[_0x218c('0x52')]][_0x218c('0x9')];queues[_0x7822b2['transfereeuniqueid']]['calleridname']=queues[_0x7822b2[_0x218c('0x52')]][_0x218c('0x5b')];queues[_0x7822b2[_0x218c('0x49')]]['queuecallerjoinAt']=utils[_0x218c('0x18')]();queues[_0x7822b2[_0x218c('0x49')]][_0x218c('0x1c')]=utils[_0x218c('0x18')]();queues[_0x7822b2[_0x218c('0x49')]]['holdtime']=0x0;queues[_0x7822b2['transfereeuniqueid']][_0x218c('0x5c')]=0x0;utils[_0x218c('0x14')](util[_0x218c('0x3')](_0x218c('0x5d'),_0x7822b2[_0x218c('0x50')],queues[_0x7822b2[_0x218c('0x49')]][_0x218c('0x22')],queues[_0x7822b2[_0x218c('0x49')]][_0x218c('0x9')],queues[_0x7822b2['transfereeuniqueid']][_0x218c('0x5b')]));}else{utils[_0x218c('0x14')](util[_0x218c('0x3')](_0x218c('0x5e'),_0x7822b2['origtransfereruniqueid'],queues[_0x7822b2[_0x218c('0x51')]]['name'],_0x7822b2[_0x218c('0x52')]));queues[_0x7822b2['origtransfererlinkedid']]['transfereduniqueid']=_0x7822b2[_0x218c('0x52')];}}}else if(_0x7822b2[_0x218c('0x5f')]==_0x7822b2[_0x218c('0x52')]){if(!_['isNil'](queues[_0x7822b2['origtransfererlinkedid']])){utils[_0x218c('0x14')](util[_0x218c('0x3')](_0x218c('0x60'),_0x7822b2[_0x218c('0x50')],queues[_0x7822b2['origtransfererlinkedid']]['name'],_0x7822b2[_0x218c('0x5f')],_0x7822b2[_0x218c('0x61')]));queues[_0x7822b2[_0x218c('0x51')]][_0x218c('0x43')]=!![];queues[_0x7822b2[_0x218c('0x51')]]['transfertype']=_0x218c('0x55');queues[_0x7822b2['origtransfererlinkedid']][_0x218c('0x56')]=_0x7822b2['secondtransfererexten'];queues[_0x7822b2[_0x218c('0x51')]][_0x218c('0x4c')]=_0x7822b2[_0x218c('0x5f')];queues[_0x7822b2['origtransfererlinkedid']][_0x218c('0xb')]=_0x218c('0x57');}if(!_[_0x218c('0x1a')](queues[_0x7822b2[_0x218c('0x52')]])){if(_0x7822b2[_0x218c('0x62')]&&queues[_0x7822b2[_0x218c('0x62')]]){queues[_0x7822b2[_0x218c('0x62')]][_0x218c('0x24')]=0x1;queues[_0x7822b2['transfertargetuniqueid']]=_[_0x218c('0x59')](queues[_0x7822b2[_0x218c('0x62')]]);queues[_0x7822b2[_0x218c('0x5a')]][_0x218c('0x11')]=_0x7822b2[_0x218c('0x5a')];queues[_0x7822b2[_0x218c('0x5a')]][_0x218c('0x24')]=0x2;queues[_0x7822b2[_0x218c('0x5a')]][_0x218c('0x9')]=queues[_0x7822b2[_0x218c('0x51')]][_0x218c('0x9')];queues[_0x7822b2[_0x218c('0x5a')]]['calleridname']=queues[_0x7822b2[_0x218c('0x51')]][_0x218c('0x5b')];queues[_0x7822b2[_0x218c('0x5a')]][_0x218c('0x37')]=utils[_0x218c('0x18')]();queues[_0x7822b2[_0x218c('0x5a')]][_0x218c('0x1c')]=utils[_0x218c('0x18')]();queues[_0x7822b2['transfertargetuniqueid']][_0x218c('0x63')]=0x0;queues[_0x7822b2[_0x218c('0x5a')]]['mohtime']=0x0;utils['info'](util[_0x218c('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s',_0x7822b2[_0x218c('0x50')],queues[_0x7822b2[_0x218c('0x5a')]][_0x218c('0x22')],queues[_0x7822b2[_0x218c('0x5a')]][_0x218c('0x11')],queues[_0x7822b2[_0x218c('0x5a')]][_0x218c('0x9')],queues[_0x7822b2[_0x218c('0x5a')]][_0x218c('0x5b')]));}else{utils[_0x218c('0x14')](util[_0x218c('0x3')](_0x218c('0x5e'),_0x7822b2[_0x218c('0x50')],queues[_0x7822b2[_0x218c('0x52')]][_0x218c('0x22')],_0x7822b2[_0x218c('0x51')]));queues[_0x7822b2['secondtransfererlinkedid']]['transfereduniqueid']=_0x7822b2[_0x218c('0x51')];}}}}catch(_0x365724){utils['error'](util[_0x218c('0x3')](_0x218c('0x4f'),_0x7822b2['origtransfereruniqueid']),_0x365724);}};exports[_0x218c('0x64')]=function(_0x561114){try{if(!_['isNil'](queues[_0x561114[_0x218c('0x5')]])){utils[_0x218c('0x12')](util['format'](_0x218c('0x65'),_0x561114['uniqueid']),_0x561114);queues[_0x561114[_0x218c('0x5')]][_0x218c('0x66')]=utils['now']();utils[_0x218c('0x14')](util['format']('[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s',_0x561114[_0x218c('0x5')],queues[_0x561114[_0x218c('0x5')]][_0x218c('0x22')],queues[_0x561114[_0x218c('0x5')]][_0x218c('0x66')]));}}catch(_0x4025bf){utils[_0x218c('0x25')](util['format']('[%s][queues][musiconholdstart]',_0x561114[_0x218c('0x5')]),_0x4025bf);}};exports[_0x218c('0x67')]=function(_0x2e6113){try{if(!_[_0x218c('0x1a')](queues[_0x2e6113[_0x218c('0x5')]])){if(!_['isNil'](queues[_0x2e6113[_0x218c('0x5')]]['musiconholdstartAt'])){utils[_0x218c('0x12')](util[_0x218c('0x3')](_0x218c('0x68'),_0x2e6113[_0x218c('0x5')]),_0x2e6113);queues[_0x2e6113[_0x218c('0x5')]][_0x218c('0x5c')]+=utils[_0x218c('0x36')](utils[_0x218c('0x18')](),queues[_0x2e6113[_0x218c('0x5')]][_0x218c('0x66')]);utils[_0x218c('0x14')](util[_0x218c('0x3')]('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x2e6113[_0x218c('0x5')],queues[_0x2e6113[_0x218c('0x5')]][_0x218c('0x22')],queues[_0x2e6113[_0x218c('0x5')]]['mohtime']));delete queues[_0x2e6113[_0x218c('0x5')]]['musiconholdstartAt'];}}}catch(_0x5513a5){utils[_0x218c('0x25')](util[_0x218c('0x3')](_0x218c('0x68'),_0x2e6113[_0x218c('0x5')]),_0x5513a5);}};
\ No newline at end of file
+var _0x1e2c=['ABANDONED','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','holdtime','queuecallerjoinAt','count','agentconnect','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','lastAssignedTo','[%s][queues][agentconnect]','agentcomplete','assigned','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][agentcomplete]','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferexten','extension','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','ATTENDED','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertargetlinkedid','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstop]','mohtime','diffTime','lodash','util','./utils','info','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','queue','calleridnum','accountcode','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','uniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','assign','position','now','error','hangup','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallercomplete','queuecallercompleteAt','queuecallerexitreason','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','transfereduniqueid','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','varset','[%s][queues][varset]','variable','queuestatus','CONTINUE','isNil','queuecallerabandonAt','queuecallerexit','queuecallerexitAt','value','toUpperCase','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]'];(function(_0x46be86,_0x491f52){var _0x2962c8=function(_0x56acd6){while(--_0x56acd6){_0x46be86['push'](_0x46be86['shift']());}};_0x2962c8(++_0x491f52);}(_0x1e2c,0x114));var _0xc1e2=function(_0x2d2fda,_0xca1db7){_0x2d2fda=_0x2d2fda-0x0;var _0x55ee82=_0x1e2c[_0x2d2fda];return _0x55ee82;};'use strict';var _=require(_0xc1e2('0x0'));var util=require(_0xc1e2('0x1'));var utils=require(_0xc1e2('0x2'));var queues={};function writeDB(_0x46bbc8){utils[_0xc1e2('0x3')](util[_0xc1e2('0x4')](_0xc1e2('0x5'),_0x46bbc8['uniqueid'],_0x46bbc8['channel'],_0x46bbc8[_0xc1e2('0x6')],_0x46bbc8['lastAssignedTo'],_0x46bbc8[_0xc1e2('0x7')],_0x46bbc8[_0xc1e2('0x8')],_0x46bbc8['queuecallerexitreason']));if(_0x46bbc8[_0xc1e2('0x6')]){utils[_0xc1e2('0x9')](_0x46bbc8['queue'])[_0xc1e2('0xa')](function(_0x1c417d){if(_0x1c417d){_0x46bbc8['type']=_0x1c417d[_0xc1e2('0xb')];}utils[_0xc1e2('0xc')](_0xc1e2('0xd'),_0x46bbc8);});}else{utils['request'](_0xc1e2('0xd'),_0x46bbc8);}if(_0x46bbc8['transfereduniqueid']){delete queues[_0x46bbc8['transfereduniqueid']];}else{delete queues[_0x46bbc8[_0xc1e2('0xe')]];}}exports[_0xc1e2('0xf')]=function(_0x1eb1c3){try{utils[_0xc1e2('0x10')](util[_0xc1e2('0x4')](_0xc1e2('0x11'),_0x1eb1c3[_0xc1e2('0xe')]),_0x1eb1c3);utils[_0xc1e2('0x3')](util[_0xc1e2('0x4')](_0xc1e2('0x12'),_0x1eb1c3[_0xc1e2('0xe')],_0x1eb1c3[_0xc1e2('0x6')],_0x1eb1c3['position']));queues[_0x1eb1c3[_0xc1e2('0xe')]]=_[_0xc1e2('0x13')](_0x1eb1c3,{'originalposition':_0x1eb1c3[_0xc1e2('0x14')],'queuecallerjoinAt':utils[_0xc1e2('0x15')](),'mohtime':0x0});}catch(_0x18ba21){utils[_0xc1e2('0x16')](util[_0xc1e2('0x4')]('[%s][queues][queuecallerjoin]',_0x1eb1c3[_0xc1e2('0xe')]),_0x18ba21);}};exports[_0xc1e2('0x17')]=function(_0x7e7dca){try{if(!_['isNil'](queues[_0x7e7dca[_0xc1e2('0xe')]])){utils[_0xc1e2('0x10')](util[_0xc1e2('0x4')](_0xc1e2('0x18'),_0x7e7dca[_0xc1e2('0xe')]),_0x7e7dca);if(queues[_0x7e7dca['uniqueid']][_0xc1e2('0x19')]){if(!queues[_0x7e7dca[_0xc1e2('0xe')]][_0xc1e2('0x1a')]&&!queues[_0x7e7dca[_0xc1e2('0xe')]]['queuecallerexit']){queues[_0x7e7dca[_0xc1e2('0xe')]][_0xc1e2('0x1b')]=!![];queues[_0x7e7dca[_0xc1e2('0xe')]][_0xc1e2('0x1c')]=utils[_0xc1e2('0x15')]();queues[_0x7e7dca[_0xc1e2('0xe')]][_0xc1e2('0x1d')]='COMPLETEDBYAGENT';}utils[_0xc1e2('0x3')](util[_0xc1e2('0x4')](_0xc1e2('0x1e'),_0x7e7dca['uniqueid'],queues[_0x7e7dca[_0xc1e2('0xe')]][_0xc1e2('0x1f')],queues[_0x7e7dca['uniqueid']][_0xc1e2('0x1d')]));writeDB(queues[_0x7e7dca[_0xc1e2('0xe')]]);}else if(queues[_0x7e7dca[_0xc1e2('0xe')]][_0xc1e2('0x20')]){utils['info'](util[_0xc1e2('0x4')](_0xc1e2('0x21'),_0x7e7dca[_0xc1e2('0xe')],queues[_0x7e7dca[_0xc1e2('0xe')]][_0xc1e2('0x1f')],queues[_0x7e7dca['uniqueid']]['transfereduniqueid']));queues[queues[_0x7e7dca[_0xc1e2('0xe')]][_0xc1e2('0x20')]]=queues[_0x7e7dca[_0xc1e2('0xe')]];queues[queues[_0x7e7dca[_0xc1e2('0xe')]][_0xc1e2('0x20')]][_0xc1e2('0x22')]=0x2;delete queues[_0x7e7dca['uniqueid']];}}}catch(_0x2de489){utils[_0xc1e2('0x16')](util[_0xc1e2('0x4')](_0xc1e2('0x18'),_0x7e7dca['uniqueid']),_0x2de489);}};exports[_0xc1e2('0x23')]=function(_0xe6b550){try{utils[_0xc1e2('0x10')](util[_0xc1e2('0x4')](_0xc1e2('0x24'),_0xe6b550[_0xc1e2('0xe')]),_0xe6b550);if(!_['isNil'](_0xe6b550[_0xc1e2('0x25')][_0xc1e2('0x26')])&&_0xe6b550['value']['toUpperCase']()!==_0xc1e2('0x27')){if(!_[_0xc1e2('0x28')](queues[_0xe6b550[_0xc1e2('0xe')]])){queues[_0xe6b550['uniqueid']]['queuecallerabandon']=![];queues[_0xe6b550['uniqueid']][_0xc1e2('0x29')]=null;queues[_0xe6b550['uniqueid']][_0xc1e2('0x2a')]=!![];queues[_0xe6b550[_0xc1e2('0xe')]][_0xc1e2('0x2b')]=utils['now']();queues[_0xe6b550['uniqueid']]['queuecallerexitreason']=_0xe6b550[_0xc1e2('0x2c')][_0xc1e2('0x2d')]();utils[_0xc1e2('0x3')](util[_0xc1e2('0x4')](_0xc1e2('0x2e'),_0xe6b550['uniqueid'],queues[_0xe6b550[_0xc1e2('0xe')]][_0xc1e2('0x1f')],_0xe6b550[_0xc1e2('0x2c')],queues[_0xe6b550[_0xc1e2('0xe')]][_0xc1e2('0x1d')]));writeDB(queues[_0xe6b550[_0xc1e2('0xe')]]);}}else if(!_[_0xc1e2('0x28')](_0xe6b550[_0xc1e2('0x25')][_0xc1e2('0x2f')])){if(!_[_0xc1e2('0x28')](queues[_0xe6b550[_0xc1e2('0xe')]])&&!queues[_0xe6b550[_0xc1e2('0xe')]]['queuecallerabandon']){queues[_0xe6b550[_0xc1e2('0xe')]]['queuecallerabandon']=![];queues[_0xe6b550[_0xc1e2('0xe')]][_0xc1e2('0x29')]=null;queues[_0xe6b550[_0xc1e2('0xe')]][_0xc1e2('0x2a')]=!![];queues[_0xe6b550['uniqueid']][_0xc1e2('0x2b')]=utils[_0xc1e2('0x15')]();queues[_0xe6b550[_0xc1e2('0xe')]][_0xc1e2('0x1d')]=_0xc1e2('0x30');utils[_0xc1e2('0x3')](util[_0xc1e2('0x4')](_0xc1e2('0x31'),_0xe6b550[_0xc1e2('0xe')],queues[_0xe6b550['uniqueid']][_0xc1e2('0x1f')],_0xe6b550[_0xc1e2('0x2c')],queues[_0xe6b550[_0xc1e2('0xe')]][_0xc1e2('0x1d')]));}}}catch(_0x3fd1f5){utils[_0xc1e2('0x16')](util[_0xc1e2('0x4')]('[%s][queues][varset]',_0xe6b550[_0xc1e2('0xe')]),_0x3fd1f5);}};exports[_0xc1e2('0x1a')]=function(_0x59a173){try{if(!_[_0xc1e2('0x28')](queues[_0x59a173[_0xc1e2('0xe')]])){utils[_0xc1e2('0x10')](util['format'](_0xc1e2('0x32'),_0x59a173[_0xc1e2('0xe')]),_0x59a173);queues[_0x59a173[_0xc1e2('0xe')]][_0xc1e2('0x2a')]=![];queues[_0x59a173[_0xc1e2('0xe')]][_0xc1e2('0x2b')]=null;queues[_0x59a173[_0xc1e2('0xe')]][_0xc1e2('0x1a')]=!![];queues[_0x59a173[_0xc1e2('0xe')]][_0xc1e2('0x29')]=utils[_0xc1e2('0x15')]();queues[_0x59a173['uniqueid']][_0xc1e2('0x1d')]=_0xc1e2('0x33');utils[_0xc1e2('0x3')](util[_0xc1e2('0x4')]('[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s',_0x59a173[_0xc1e2('0xe')],queues[_0x59a173[_0xc1e2('0xe')]][_0xc1e2('0x1f')],queues[_0x59a173[_0xc1e2('0xe')]][_0xc1e2('0x1d')]));}}catch(_0x4e77f7){utils[_0xc1e2('0x16')](util[_0xc1e2('0x4')]('[%s][queues][queuecallerabandon]',_0x59a173[_0xc1e2('0xe')]),_0x4e77f7);}};exports[_0xc1e2('0x34')]=function(_0x57110b){try{if(!_['isNil'](queues[_0x57110b[_0xc1e2('0xe')]])){utils[_0xc1e2('0x10')](util[_0xc1e2('0x4')](_0xc1e2('0x35'),_0x57110b['uniqueid']),_0x57110b);utils[_0xc1e2('0x3')](util[_0xc1e2('0x4')](_0xc1e2('0x36'),_0x57110b['uniqueid'],queues[_0x57110b[_0xc1e2('0xe')]]['name'],_0x57110b[_0xc1e2('0x37')],_0x57110b[_0xc1e2('0x38')]));queues[_0x57110b['uniqueid']][_0xc1e2('0x34')]=!![];queues[_0x57110b[_0xc1e2('0xe')]][_0xc1e2('0x19')]=utils[_0xc1e2('0x15')]();queues[_0x57110b[_0xc1e2('0xe')]][_0xc1e2('0x39')]=utils['diffTime'](queues[_0x57110b[_0xc1e2('0xe')]][_0xc1e2('0x19')],queues[_0x57110b[_0xc1e2('0xe')]][_0xc1e2('0x3a')]);queues[_0x57110b['uniqueid']]['position']=_0x57110b[_0xc1e2('0x14')];queues[_0x57110b['uniqueid']][_0xc1e2('0x3b')]=_0x57110b[_0xc1e2('0x3b')];queues[_0x57110b['uniqueid']][_0xc1e2('0x37')]=_0x57110b[_0xc1e2('0x37')];queues[_0x57110b[_0xc1e2('0xe')]]['connectedlinename']=_0x57110b[_0xc1e2('0x38')];}}catch(_0x3e864e){utils[_0xc1e2('0x16')](util[_0xc1e2('0x4')]('[%s][queues][queuecallerleave]',_0x57110b[_0xc1e2('0xe')]),_0x3e864e);}};exports[_0xc1e2('0x3c')]=function(_0x13c721){try{if(!_[_0xc1e2('0x28')](queues[_0x13c721['uniqueid']])){utils[_0xc1e2('0x10')](util[_0xc1e2('0x4')]('[%s][queues][agentconnect]',_0x13c721[_0xc1e2('0xe')]),_0x13c721);utils['info'](util['format'](_0xc1e2('0x3d'),_0x13c721[_0xc1e2('0xe')],queues[_0x13c721[_0xc1e2('0xe')]][_0xc1e2('0x1f')],_0x13c721[_0xc1e2('0x3e')],_0x13c721[_0xc1e2('0x3f')]));queues[_0x13c721[_0xc1e2('0xe')]][_0xc1e2('0x1a')]=![];queues[_0x13c721['uniqueid']][_0xc1e2('0x1a')]=![];queues[_0x13c721[_0xc1e2('0xe')]]['queuecallerabandonAt']=null;queues[_0x13c721[_0xc1e2('0xe')]][_0xc1e2('0x2a')]=![];queues[_0x13c721[_0xc1e2('0xe')]]['queuecallerexitreason']=null;queues[_0x13c721[_0xc1e2('0xe')]]['queuecallerexitAt']=null;queues[_0x13c721[_0xc1e2('0xe')]]['assigned']=!![];queues[_0x13c721['uniqueid']]['accountcode']=_0x13c721[_0xc1e2('0x3f')];queues[_0x13c721[_0xc1e2('0xe')]][_0xc1e2('0x40')]=_0x13c721[_0xc1e2('0x3e')];}}catch(_0x24a38f){utils['error'](util['format'](_0xc1e2('0x41'),_0x13c721[_0xc1e2('0xe')]),_0x24a38f);}};exports[_0xc1e2('0x42')]=function(_0x1e57f5){try{if(!_[_0xc1e2('0x28')](queues[_0x1e57f5[_0xc1e2('0xe')]])){if(queues[_0x1e57f5[_0xc1e2('0xe')]]['queuecallerleaveAt']){utils[_0xc1e2('0x10')](util['format']('[%s][queues][agentcomplete]',_0x1e57f5[_0xc1e2('0xe')]),_0x1e57f5);queues[_0x1e57f5[_0xc1e2('0xe')]][_0xc1e2('0x1a')]=![];queues[_0x1e57f5[_0xc1e2('0xe')]][_0xc1e2('0x1a')]=![];queues[_0x1e57f5[_0xc1e2('0xe')]]['queuecallerabandonAt']=null;queues[_0x1e57f5['uniqueid']]['queuecallerexit']=![];queues[_0x1e57f5['uniqueid']]['queuecallerexitAt']=null;queues[_0x1e57f5[_0xc1e2('0xe')]][_0xc1e2('0x43')]=!![];queues[_0x1e57f5[_0xc1e2('0xe')]][_0xc1e2('0x40')]=_0x1e57f5['membername'];queues[_0x1e57f5[_0xc1e2('0xe')]]['queuecallercomplete']=!![];queues[_0x1e57f5[_0xc1e2('0xe')]][_0xc1e2('0x1c')]=utils[_0xc1e2('0x15')]();if(_0x1e57f5[_0xc1e2('0x44')]==_0xc1e2('0x45')){if(!queues[_0x1e57f5['uniqueid']][_0xc1e2('0x45')]){queues[_0x1e57f5[_0xc1e2('0xe')]][_0xc1e2('0x1d')]=_0xc1e2('0x46');}}else{queues[_0x1e57f5[_0xc1e2('0xe')]][_0xc1e2('0x1d')]=_0xc1e2('0x47')+_0x1e57f5[_0xc1e2('0x44')][_0xc1e2('0x2d')]();}utils[_0xc1e2('0x3')](util[_0xc1e2('0x4')](_0xc1e2('0x48'),_0x1e57f5[_0xc1e2('0xe')],queues[_0x1e57f5['uniqueid']][_0xc1e2('0x1f')],_0x1e57f5['membername'],queues[_0x1e57f5[_0xc1e2('0xe')]][_0xc1e2('0x1d')]));writeDB(queues[_0x1e57f5[_0xc1e2('0xe')]]);}}}catch(_0x275cf2){utils['error'](util[_0xc1e2('0x4')](_0xc1e2('0x49'),_0x1e57f5[_0xc1e2('0xe')]),_0x275cf2);}};exports[_0xc1e2('0x4a')]=function(_0x39cf40){try{if(!_[_0xc1e2('0x28')](queues[_0x39cf40[_0xc1e2('0x4b')]])){utils[_0xc1e2('0x10')](util[_0xc1e2('0x4')](_0xc1e2('0x4c'),_0x39cf40['uniqueid']),_0x39cf40);queues[_0x39cf40[_0xc1e2('0x4b')]][_0xc1e2('0x45')]=!![];queues[_0x39cf40[_0xc1e2('0x4b')]][_0xc1e2('0x4d')]=_0xc1e2('0x4e');queues[_0x39cf40[_0xc1e2('0x4b')]][_0xc1e2('0x4f')]=_0x39cf40[_0xc1e2('0x50')];queues[_0x39cf40[_0xc1e2('0x4b')]][_0xc1e2('0x51')]=_0x39cf40[_0xc1e2('0x4b')];queues[_0x39cf40['transfereeuniqueid']][_0xc1e2('0x1d')]=_0xc1e2('0x52');utils[_0xc1e2('0x3')](util[_0xc1e2('0x4')](_0xc1e2('0x53'),_0x39cf40[_0xc1e2('0xe')],queues[_0x39cf40[_0xc1e2('0x4b')]][_0xc1e2('0x1f')],_0x39cf40[_0xc1e2('0x4b')],_0x39cf40[_0xc1e2('0x50')]));}}catch(_0x588543){utils[_0xc1e2('0x16')](util['format'](_0xc1e2('0x4c'),_0x39cf40[_0xc1e2('0xe')]),_0x588543);}};exports[_0xc1e2('0x54')]=function(_0x54222c){try{utils[_0xc1e2('0x10')](util['format']('[%s][queues][attendedtransfer]',_0x54222c[_0xc1e2('0x55')]),_0x54222c);if(_0x54222c[_0xc1e2('0x55')]==_0x54222c[_0xc1e2('0x56')]){if(!_[_0xc1e2('0x28')](queues[_0x54222c[_0xc1e2('0x57')]])){utils[_0xc1e2('0x3')](util[_0xc1e2('0x4')](_0xc1e2('0x58'),_0x54222c['origtransfereruniqueid'],queues[_0x54222c[_0xc1e2('0x57')]][_0xc1e2('0x1f')],_0x54222c[_0xc1e2('0x59')]));queues[_0x54222c[_0xc1e2('0x57')]][_0xc1e2('0x45')]=!![];queues[_0x54222c[_0xc1e2('0x57')]][_0xc1e2('0x4d')]=_0xc1e2('0x5a');queues[_0x54222c[_0xc1e2('0x57')]]['transferexten']=_0x54222c[_0xc1e2('0x59')];queues[_0x54222c[_0xc1e2('0x57')]][_0xc1e2('0x51')]=_0x54222c[_0xc1e2('0x55')];queues[_0x54222c['secondtransfererlinkedid']][_0xc1e2('0x1d')]=_0xc1e2('0x5b');}if(!_[_0xc1e2('0x28')](queues[_0x54222c[_0xc1e2('0x56')]])){if(_0x54222c[_0xc1e2('0x5c')]&&queues[_0x54222c[_0xc1e2('0x5c')]]){queues[_0x54222c['transfereelinkedid']][_0xc1e2('0x22')]=0x1;queues[_0x54222c['transfereeuniqueid']]=_[_0xc1e2('0x5d')](queues[_0x54222c[_0xc1e2('0x5c')]]);queues[_0x54222c[_0xc1e2('0x4b')]]['transfereduniqueid']=_0x54222c[_0xc1e2('0x5e')];queues[_0x54222c[_0xc1e2('0x4b')]][_0xc1e2('0x22')]=0x2;queues[_0x54222c[_0xc1e2('0x4b')]][_0xc1e2('0x7')]=queues[_0x54222c[_0xc1e2('0x57')]][_0xc1e2('0x7')];queues[_0x54222c[_0xc1e2('0x4b')]][_0xc1e2('0x5f')]=queues[_0x54222c[_0xc1e2('0x57')]][_0xc1e2('0x5f')];queues[_0x54222c[_0xc1e2('0x4b')]]['queuecallerjoinAt']=utils[_0xc1e2('0x15')]();queues[_0x54222c[_0xc1e2('0x4b')]]['queuecallerleaveAt']=utils[_0xc1e2('0x15')]();queues[_0x54222c['transfereeuniqueid']]['holdtime']=0x0;queues[_0x54222c[_0xc1e2('0x4b')]]['mohtime']=0x0;utils[_0xc1e2('0x3')](util['format'](_0xc1e2('0x60'),_0x54222c[_0xc1e2('0x55')],queues[_0x54222c[_0xc1e2('0x4b')]][_0xc1e2('0x1f')],queues[_0x54222c[_0xc1e2('0x4b')]][_0xc1e2('0x7')],queues[_0x54222c[_0xc1e2('0x4b')]]['calleridname']));}else{utils[_0xc1e2('0x3')](util['format'](_0xc1e2('0x61'),_0x54222c[_0xc1e2('0x55')],queues[_0x54222c[_0xc1e2('0x56')]]['name'],_0x54222c[_0xc1e2('0x57')]));queues[_0x54222c[_0xc1e2('0x56')]][_0xc1e2('0x20')]=_0x54222c[_0xc1e2('0x57')];}}}else if(_0x54222c[_0xc1e2('0x62')]==_0x54222c['secondtransfererlinkedid']){if(!_['isNil'](queues[_0x54222c[_0xc1e2('0x56')]])){utils[_0xc1e2('0x3')](util['format'](_0xc1e2('0x63'),_0x54222c['origtransfereruniqueid'],queues[_0x54222c[_0xc1e2('0x56')]][_0xc1e2('0x1f')],_0x54222c[_0xc1e2('0x62')],_0x54222c[_0xc1e2('0x64')]));queues[_0x54222c[_0xc1e2('0x56')]]['transfer']=!![];queues[_0x54222c[_0xc1e2('0x56')]][_0xc1e2('0x4d')]=_0xc1e2('0x5a');queues[_0x54222c[_0xc1e2('0x56')]][_0xc1e2('0x4f')]=_0x54222c[_0xc1e2('0x64')];queues[_0x54222c[_0xc1e2('0x56')]][_0xc1e2('0x51')]=_0x54222c['secondtransfereruniqueid'];queues[_0x54222c['origtransfererlinkedid']][_0xc1e2('0x1d')]=_0xc1e2('0x5b');}if(!_[_0xc1e2('0x28')](queues[_0x54222c[_0xc1e2('0x57')]])){if(_0x54222c[_0xc1e2('0x65')]&&queues[_0x54222c['transfertargetlinkedid']]){queues[_0x54222c[_0xc1e2('0x65')]]['queuecallerenterreason']=0x1;queues[_0x54222c[_0xc1e2('0x5e')]]=_[_0xc1e2('0x5d')](queues[_0x54222c[_0xc1e2('0x65')]]);queues[_0x54222c['transfertargetuniqueid']][_0xc1e2('0x20')]=_0x54222c['transfertargetuniqueid'];queues[_0x54222c[_0xc1e2('0x5e')]]['queuecallerenterreason']=0x2;queues[_0x54222c['transfertargetuniqueid']]['calleridnum']=queues[_0x54222c[_0xc1e2('0x56')]]['calleridnum'];queues[_0x54222c[_0xc1e2('0x5e')]][_0xc1e2('0x5f')]=queues[_0x54222c[_0xc1e2('0x56')]][_0xc1e2('0x5f')];queues[_0x54222c[_0xc1e2('0x5e')]][_0xc1e2('0x3a')]=utils[_0xc1e2('0x15')]();queues[_0x54222c[_0xc1e2('0x5e')]][_0xc1e2('0x19')]=utils[_0xc1e2('0x15')]();queues[_0x54222c[_0xc1e2('0x5e')]][_0xc1e2('0x39')]=0x0;queues[_0x54222c[_0xc1e2('0x5e')]]['mohtime']=0x0;utils['info'](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s',_0x54222c['origtransfereruniqueid'],queues[_0x54222c[_0xc1e2('0x5e')]][_0xc1e2('0x1f')],queues[_0x54222c[_0xc1e2('0x5e')]]['transfereduniqueid'],queues[_0x54222c['transfertargetuniqueid']]['calleridnum'],queues[_0x54222c[_0xc1e2('0x5e')]]['calleridname']));}else{utils[_0xc1e2('0x3')](util[_0xc1e2('0x4')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x54222c['origtransfereruniqueid'],queues[_0x54222c[_0xc1e2('0x57')]][_0xc1e2('0x1f')],_0x54222c[_0xc1e2('0x56')]));queues[_0x54222c[_0xc1e2('0x57')]][_0xc1e2('0x20')]=_0x54222c[_0xc1e2('0x56')];}}}}catch(_0x31f1c5){utils['error'](util[_0xc1e2('0x4')]('[%s][queues][attendedtransfer]',_0x54222c[_0xc1e2('0x55')]),_0x31f1c5);}};exports[_0xc1e2('0x66')]=function(_0x4f2c84){try{if(!_[_0xc1e2('0x28')](queues[_0x4f2c84[_0xc1e2('0xe')]])){utils['debug'](util['format'](_0xc1e2('0x67'),_0x4f2c84[_0xc1e2('0xe')]),_0x4f2c84);queues[_0x4f2c84[_0xc1e2('0xe')]][_0xc1e2('0x68')]=utils[_0xc1e2('0x15')]();utils[_0xc1e2('0x3')](util[_0xc1e2('0x4')](_0xc1e2('0x69'),_0x4f2c84[_0xc1e2('0xe')],queues[_0x4f2c84[_0xc1e2('0xe')]][_0xc1e2('0x1f')],queues[_0x4f2c84[_0xc1e2('0xe')]][_0xc1e2('0x68')]));}}catch(_0x35e5f1){utils[_0xc1e2('0x16')](util[_0xc1e2('0x4')]('[%s][queues][musiconholdstart]',_0x4f2c84[_0xc1e2('0xe')]),_0x35e5f1);}};exports['musiconholdstop']=function(_0x106673){try{if(!_[_0xc1e2('0x28')](queues[_0x106673[_0xc1e2('0xe')]])){if(!_[_0xc1e2('0x28')](queues[_0x106673[_0xc1e2('0xe')]][_0xc1e2('0x68')])){utils[_0xc1e2('0x10')](util[_0xc1e2('0x4')](_0xc1e2('0x6a'),_0x106673[_0xc1e2('0xe')]),_0x106673);queues[_0x106673[_0xc1e2('0xe')]][_0xc1e2('0x6b')]+=utils[_0xc1e2('0x6c')](utils[_0xc1e2('0x15')](),queues[_0x106673[_0xc1e2('0xe')]]['musiconholdstartAt']);utils['info'](util[_0xc1e2('0x4')]('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x106673[_0xc1e2('0xe')],queues[_0x106673[_0xc1e2('0xe')]]['name'],queues[_0x106673[_0xc1e2('0xe')]][_0xc1e2('0x6b')]));delete queues[_0x106673['uniqueid']][_0xc1e2('0x68')];}}}catch(_0x257747){utils[_0xc1e2('0x16')](util[_0xc1e2('0x4')](_0xc1e2('0x6a'),_0x106673[_0xc1e2('0xe')]),_0x257747);}};
\ No newline at end of file
index aaf7860..49b1f40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6153=['debug','[%s][recordings][newstate]','channelstate','isNil','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','[%s][recordings][varset]','variable','endsWith','value','.wav49','.WAV','find','monitors','push','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','cause-txt','calleridname','connectedlinenum','connectedlinename','type','outbound','forEach','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','set','startsWith','cdr','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','queue','blindtransfer','[%s][recordings][blindtransfer]','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transfereecalleridnum','transfereecalleridname','transfereruniqueid','util','./utils','./transfers.controller','info','format','[%s][recordings][writeDB]','blinds','uniqueid','transfereeuniqueid','getUserByInternal','accountcode','then','membername','UserId','request','CreateVoiceRecording','newchannel','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error'];(function(_0x15b8f9,_0x428bdc){var _0x3483e5=function(_0x2582b9){while(--_0x2582b9){_0x15b8f9['push'](_0x15b8f9['shift']());}};_0x3483e5(++_0x428bdc);}(_0x6153,0xf4));var _0x3615=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x6153[_0x19950b];return _0x3c6b41;};'use strict';var _=require('lodash');var util=require(_0x3615('0x0'));var utils=require(_0x3615('0x1'));var transfers=require(_0x3615('0x2'));var recordings={};function writeDB(_0x33bd42){var _0x468b17;utils[_0x3615('0x3')](util[_0x3615('0x4')](_0x3615('0x5'),_0x33bd42['uniqueid']));if(transfers[_0x3615('0x6')][_0x33bd42[_0x3615('0x7')]]){_0x468b17=_0x33bd42[_0x3615('0x7')];_0x33bd42[_0x3615('0x7')]=transfers[_0x3615('0x6')][_0x33bd42[_0x3615('0x7')]][_0x3615('0x8')];}if(_0x33bd42['accountcode']){utils[_0x3615('0x9')](_0x33bd42[_0x3615('0xa')])[_0x3615('0xb')](function(_0x25282c){if(_0x25282c){_0x33bd42[_0x3615('0xc')]=_0x25282c['name'];_0x33bd42[_0x3615('0xd')]=_0x25282c['id'];}utils[_0x3615('0xe')](_0x3615('0xf'),_0x33bd42);});}else{utils['request'](_0x3615('0xf'),_0x33bd42);}if(_0x468b17)delete transfers['blinds'][_0x468b17];}exports[_0x3615('0x10')]=function(_0x37cb2e){try{utils['debug'](util['format'](_0x3615('0x11'),_0x37cb2e['uniqueid']),_0x37cb2e);if(_0x37cb2e[_0x3615('0x7')]==_0x37cb2e[_0x3615('0x12')]){utils['info'](util['format'](_0x3615('0x13'),_0x37cb2e['uniqueid'],_0x37cb2e[_0x3615('0x14')],_0x37cb2e['exten']));recordings[_0x37cb2e['uniqueid']]={'uniqueid':_0x37cb2e['uniqueid'],'accountcode':_0x37cb2e[_0x3615('0xa')],'exten':_0x37cb2e[_0x3615('0x15')],'context':_0x37cb2e[_0x3615('0x14')],'channel':_0x37cb2e[_0x3615('0x16')],'monitors':[]};}}catch(_0x58a0d2){utils[_0x3615('0x17')](util[_0x3615('0x4')](_0x3615('0x11'),_0x37cb2e[_0x3615('0x7')]),_0x58a0d2);}};exports['newstate']=function(_0x43c82c){try{utils[_0x3615('0x18')](util[_0x3615('0x4')](_0x3615('0x19'),_0x43c82c[_0x3615('0x7')]),_0x43c82c);if(!_['isNil'](recordings[_0x43c82c[_0x3615('0x7')]])&&_0x43c82c[_0x3615('0x1a')]==0x6){utils[_0x3615('0x3')](util[_0x3615('0x4')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x43c82c[_0x3615('0x7')],_0x43c82c['context'],_0x43c82c[_0x3615('0x16')]));}else if(!_[_0x3615('0x1b')](recordings[_0x43c82c[_0x3615('0x12')]])&&_0x43c82c[_0x3615('0x1a')]==0x6&&_0x43c82c[_0x3615('0x14')]!='transfer'){utils[_0x3615('0x3')](util['format'](_0x3615('0x1c'),_0x43c82c[_0x3615('0x7')],_0x43c82c[_0x3615('0x12')],_0x43c82c['context'],_0x43c82c['channel']));recordings[_0x43c82c[_0x3615('0x12')]][_0x3615('0xa')]=_0x43c82c['accountcode'];}}catch(_0x284aaa){utils[_0x3615('0x17')](util[_0x3615('0x4')](_0x3615('0x19'),_0x43c82c[_0x3615('0x7')]),_0x284aaa);}};exports[_0x3615('0x1d')]=function(_0x15ff1a){try{if(!_[_0x3615('0x1b')](_0x15ff1a['variable'])&&!_[_0x3615('0x1b')](_0x15ff1a['variable']['mixmonitor_filename'])){utils['debug'](util['format'](_0x3615('0x1e'),_0x15ff1a[_0x3615('0x7')]),_0x15ff1a);utils[_0x3615('0x3')](util[_0x3615('0x4')]('[%s][recordings][varset]\x20variable:%s\x20value:%s',_0x15ff1a[_0x3615('0x7')],_0x15ff1a[_0x3615('0x1f')],_0x15ff1a['value']));if(_[_0x3615('0x20')](_0x15ff1a[_0x3615('0x21')],_0x3615('0x22'))){_0x15ff1a[_0x3615('0x21')]=_0x15ff1a['value']['replace'](_0x3615('0x22'),_0x3615('0x23'));}if(recordings[_0x15ff1a['linkedid']]){var _0xc72779=_[_0x3615('0x24')](recordings[_0x15ff1a[_0x3615('0x12')]][_0x3615('0x25')],{'value':_0x15ff1a[_0x3615('0x21')]});if(_[_0x3615('0x1b')](_0xc72779)){recordings[_0x15ff1a[_0x3615('0x12')]]['monitors'][_0x3615('0x26')]({'value':_0x15ff1a[_0x3615('0x21')]});}}}}catch(_0x332fe3){utils[_0x3615('0x17')](util[_0x3615('0x4')](_0x3615('0x1e'),_0x15ff1a[_0x3615('0x7')]),_0x332fe3);}};exports['hangup']=function(_0xa7fae0){try{if(!_[_0x3615('0x1b')](recordings[_0xa7fae0[_0x3615('0x7')]])){utils[_0x3615('0x18')](util[_0x3615('0x4')](_0x3615('0x27'),_0xa7fae0['uniqueid']),_0xa7fae0);utils[_0x3615('0x3')](util[_0x3615('0x4')](_0x3615('0x28'),_0xa7fae0['uniqueid'],_0xa7fae0['calleridnum'],_0xa7fae0['calleridname'],_0xa7fae0[_0x3615('0x29')]));recordings[_0xa7fae0['uniqueid']]['calleridnum']=_0xa7fae0['calleridnum'];recordings[_0xa7fae0[_0x3615('0x7')]][_0x3615('0x2a')]=_0xa7fae0[_0x3615('0x2a')];recordings[_0xa7fae0[_0x3615('0x7')]][_0x3615('0x2b')]=_0xa7fae0[_0x3615('0x2b')];recordings[_0xa7fae0['uniqueid']][_0x3615('0x2c')]=_0xa7fae0[_0x3615('0x2c')];if(recordings[_0xa7fae0[_0x3615('0x7')]][_0x3615('0x2d')]==_0x3615('0x2e')&&recordings[_0xa7fae0[_0x3615('0x7')]][_0x3615('0xa')]){recordings[_0xa7fae0['uniqueid']][_0x3615('0x2b')]=recordings[_0xa7fae0['uniqueid']][_0x3615('0xa')];recordings[_0xa7fae0[_0x3615('0x7')]][_0x3615('0x2c')]='';}recordings[_0xa7fae0[_0x3615('0x7')]][_0x3615('0x25')][_0x3615('0x2f')](function(_0x275092){var _0x3ac8df=_['clone'](recordings[_0xa7fae0['uniqueid']]);_0x3ac8df[_0x3615('0x21')]=_0x275092['value'];writeDB(_0x3ac8df);});delete recordings[_0xa7fae0[_0x3615('0x7')]];}}catch(_0x47659d){utils[_0x3615('0x17')](util[_0x3615('0x4')](_0x3615('0x27'),_0xa7fae0[_0x3615('0x7')]),_0x47659d);}};exports[_0x3615('0x30')]=function(_0x3e7e36){try{if(!_['isNil'](recordings[_0x3e7e36[_0x3615('0x7')]])){utils['debug'](util[_0x3615('0x4')](_0x3615('0x31'),_0x3e7e36[_0x3615('0x7')]),_0x3e7e36);utils[_0x3615('0x3')](util[_0x3615('0x4')](_0x3615('0x32'),_0x3e7e36[_0x3615('0x7')],_0x3e7e36[_0x3615('0x33')],_0x3e7e36['appdata']));if(_0x3e7e36['application'][_0x3615('0x34')]()==_0x3615('0x35')&&_[_0x3615('0x36')](_0x3e7e36['appdata'][_0x3615('0x34')](),_0x3615('0x37'))){var _0x1ad394=_0x3e7e36['appdata']['split']('=');var _0x5b46fc=_0x1ad394[0x0][_0x3615('0x38')](_0x1ad394[0x0][_0x3615('0x39')]('(')+0x1,_0x1ad394[0x0][_0x3615('0x39')](')'));var _0x7fafe4=_0x1ad394[0x1];recordings[_0x3e7e36[_0x3615('0x7')]][_0x5b46fc]=_0x7fafe4;}}}catch(_0x453835){utils['error'](util[_0x3615('0x4')](_0x3615('0x31'),_0x3e7e36[_0x3615('0x7')]),_0x453835);}};exports[_0x3615('0x3a')]=function(_0x5da9f8){try{if(!_[_0x3615('0x1b')](recordings[_0x5da9f8[_0x3615('0x7')]])){utils[_0x3615('0x18')](util[_0x3615('0x4')](_0x3615('0x3b'),_0x5da9f8['uniqueid']),_0x5da9f8);utils['info'](util[_0x3615('0x4')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x5da9f8[_0x3615('0x7')],_0x5da9f8[_0x3615('0x3c')]));recordings[_0x5da9f8['uniqueid']][_0x3615('0x3c')]=_0x5da9f8[_0x3615('0x3c')];}}catch(_0x3c2f3d){utils[_0x3615('0x17')](util['format']('[%s][recordings][queuecallerjoin]',_0x5da9f8[_0x3615('0x7')]),_0x3c2f3d);}};exports[_0x3615('0x3d')]=function(_0x52d551){try{utils[_0x3615('0x18')](util[_0x3615('0x4')](_0x3615('0x3e'),_0x52d551[_0x3615('0x7')]),_0x52d551);utils[_0x3615('0x3')](util[_0x3615('0x4')](_0x3615('0x3f'),_0x52d551[_0x3615('0x7')],_0x52d551['transferercalleridnum'],_0x52d551['transferercalleridname'],_0x52d551[_0x3615('0x40')],_0x52d551[_0x3615('0x41')]));if(recordings[_0x52d551[_0x3615('0x42')]]&&transfers[_0x3615('0x6')][_0x52d551[_0x3615('0x42')]]){transfers['blinds'][_0x52d551[_0x3615('0x42')]]['recording']=!![];}}catch(_0x438a71){utils[_0x3615('0x17')](util[_0x3615('0x4')](_0x3615('0x3e'),_0x52d551[_0x3615('0x7')]),_0x438a71);}};
\ No newline at end of file
+var _0x5d7c=['channel','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','variable','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','.WAV','push','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','connectedlinenum','connectedlinename','type','outbound','monitors','forEach','clone','newexten','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr','split','lastIndexOf','[%s][recordings][newexten]','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','[%s][recordings][blindtransfer]','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transfereecalleridnum','transfereecalleridname','transfereruniqueid','recording','util','./transfers.controller','info','[%s][recordings][writeDB]','blinds','uniqueid','transfereeuniqueid','getUserByInternal','then','name','UserId','CreateVoiceRecording','newchannel','[%s][recordings][newchannel]','linkedid','format','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','accountcode','error','newstate','debug','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s'];(function(_0x211632,_0x378e2e){var _0x5a1da1=function(_0x44aff2){while(--_0x44aff2){_0x211632['push'](_0x211632['shift']());}};_0x5a1da1(++_0x378e2e);}(_0x5d7c,0x105));var _0xc5d7=function(_0x1aedef,_0x30c67c){_0x1aedef=_0x1aedef-0x0;var _0x4941b2=_0x5d7c[_0x1aedef];return _0x4941b2;};'use strict';var _=require('lodash');var util=require(_0xc5d7('0x0'));var utils=require('./utils');var transfers=require(_0xc5d7('0x1'));var recordings={};function writeDB(_0x13eb9e){var _0x2d2b90;utils[_0xc5d7('0x2')](util['format'](_0xc5d7('0x3'),_0x13eb9e['uniqueid']));if(transfers[_0xc5d7('0x4')][_0x13eb9e[_0xc5d7('0x5')]]){_0x2d2b90=_0x13eb9e[_0xc5d7('0x5')];_0x13eb9e[_0xc5d7('0x5')]=transfers['blinds'][_0x13eb9e[_0xc5d7('0x5')]][_0xc5d7('0x6')];}if(_0x13eb9e['accountcode']){utils[_0xc5d7('0x7')](_0x13eb9e['accountcode'])[_0xc5d7('0x8')](function(_0x2a30c9){if(_0x2a30c9){_0x13eb9e['membername']=_0x2a30c9[_0xc5d7('0x9')];_0x13eb9e[_0xc5d7('0xa')]=_0x2a30c9['id'];}utils['request'](_0xc5d7('0xb'),_0x13eb9e);});}else{utils['request'](_0xc5d7('0xb'),_0x13eb9e);}if(_0x2d2b90)delete transfers[_0xc5d7('0x4')][_0x2d2b90];}exports[_0xc5d7('0xc')]=function(_0x15c239){try{utils['debug'](util['format'](_0xc5d7('0xd'),_0x15c239[_0xc5d7('0x5')]),_0x15c239);if(_0x15c239['uniqueid']==_0x15c239[_0xc5d7('0xe')]){utils[_0xc5d7('0x2')](util[_0xc5d7('0xf')](_0xc5d7('0x10'),_0x15c239['uniqueid'],_0x15c239[_0xc5d7('0x11')],_0x15c239[_0xc5d7('0x12')]));recordings[_0x15c239[_0xc5d7('0x5')]]={'uniqueid':_0x15c239['uniqueid'],'accountcode':_0x15c239[_0xc5d7('0x13')],'exten':_0x15c239['exten'],'context':_0x15c239['context'],'channel':_0x15c239['channel'],'monitors':[]};}}catch(_0x5ddea3){utils[_0xc5d7('0x14')](util[_0xc5d7('0xf')](_0xc5d7('0xd'),_0x15c239[_0xc5d7('0x5')]),_0x5ddea3);}};exports[_0xc5d7('0x15')]=function(_0xd32da5){try{utils[_0xc5d7('0x16')](util[_0xc5d7('0xf')](_0xc5d7('0x17'),_0xd32da5['uniqueid']),_0xd32da5);if(!_[_0xc5d7('0x18')](recordings[_0xd32da5[_0xc5d7('0x5')]])&&_0xd32da5[_0xc5d7('0x19')]==0x6){utils['info'](util['format'](_0xc5d7('0x1a'),_0xd32da5[_0xc5d7('0x5')],_0xd32da5['context'],_0xd32da5[_0xc5d7('0x1b')]));}else if(!_['isNil'](recordings[_0xd32da5[_0xc5d7('0xe')]])&&_0xd32da5['channelstate']==0x6&&_0xd32da5[_0xc5d7('0x11')]!=_0xc5d7('0x1c')){utils[_0xc5d7('0x2')](util['format'](_0xc5d7('0x1d'),_0xd32da5[_0xc5d7('0x5')],_0xd32da5[_0xc5d7('0xe')],_0xd32da5[_0xc5d7('0x11')],_0xd32da5[_0xc5d7('0x1b')]));recordings[_0xd32da5[_0xc5d7('0xe')]][_0xc5d7('0x13')]=_0xd32da5[_0xc5d7('0x13')];}}catch(_0x43a387){utils[_0xc5d7('0x14')](util[_0xc5d7('0xf')](_0xc5d7('0x17'),_0xd32da5[_0xc5d7('0x5')]),_0x43a387);}};exports['varset']=function(_0x2fbea0){try{if(!_[_0xc5d7('0x18')](_0x2fbea0[_0xc5d7('0x1e')])&&!_['isNil'](_0x2fbea0[_0xc5d7('0x1e')]['mixmonitor_filename'])){utils['debug'](util[_0xc5d7('0xf')](_0xc5d7('0x1f'),_0x2fbea0[_0xc5d7('0x5')]),_0x2fbea0);utils['info'](util[_0xc5d7('0xf')](_0xc5d7('0x20'),_0x2fbea0[_0xc5d7('0x5')],_0x2fbea0['variable'],_0x2fbea0[_0xc5d7('0x21')]));if(_[_0xc5d7('0x22')](_0x2fbea0[_0xc5d7('0x21')],_0xc5d7('0x23'))){_0x2fbea0[_0xc5d7('0x21')]=_0x2fbea0[_0xc5d7('0x21')][_0xc5d7('0x24')](_0xc5d7('0x23'),_0xc5d7('0x25'));}if(recordings[_0x2fbea0['linkedid']]){var _0x825081=_['find'](recordings[_0x2fbea0[_0xc5d7('0xe')]]['monitors'],{'value':_0x2fbea0[_0xc5d7('0x21')]});if(_[_0xc5d7('0x18')](_0x825081)){recordings[_0x2fbea0['linkedid']]['monitors'][_0xc5d7('0x26')]({'value':_0x2fbea0[_0xc5d7('0x21')]});}}}}catch(_0x5cc00f){utils[_0xc5d7('0x14')](util['format'](_0xc5d7('0x1f'),_0x2fbea0[_0xc5d7('0x5')]),_0x5cc00f);}};exports[_0xc5d7('0x27')]=function(_0x920694){try{if(!_['isNil'](recordings[_0x920694[_0xc5d7('0x5')]])){utils[_0xc5d7('0x16')](util[_0xc5d7('0xf')](_0xc5d7('0x28'),_0x920694[_0xc5d7('0x5')]),_0x920694);utils[_0xc5d7('0x2')](util['format'](_0xc5d7('0x29'),_0x920694['uniqueid'],_0x920694[_0xc5d7('0x2a')],_0x920694['calleridname'],_0x920694['cause-txt']));recordings[_0x920694[_0xc5d7('0x5')]][_0xc5d7('0x2a')]=_0x920694[_0xc5d7('0x2a')];recordings[_0x920694[_0xc5d7('0x5')]][_0xc5d7('0x2b')]=_0x920694[_0xc5d7('0x2b')];recordings[_0x920694['uniqueid']][_0xc5d7('0x2c')]=_0x920694[_0xc5d7('0x2c')];recordings[_0x920694['uniqueid']][_0xc5d7('0x2d')]=_0x920694['connectedlinename'];if(recordings[_0x920694[_0xc5d7('0x5')]][_0xc5d7('0x2e')]==_0xc5d7('0x2f')&&recordings[_0x920694[_0xc5d7('0x5')]][_0xc5d7('0x13')]){recordings[_0x920694[_0xc5d7('0x5')]][_0xc5d7('0x2c')]=recordings[_0x920694[_0xc5d7('0x5')]][_0xc5d7('0x13')];recordings[_0x920694[_0xc5d7('0x5')]][_0xc5d7('0x2d')]='';}recordings[_0x920694[_0xc5d7('0x5')]][_0xc5d7('0x30')][_0xc5d7('0x31')](function(_0x3682e6){var _0x2b9e6b=_[_0xc5d7('0x32')](recordings[_0x920694['uniqueid']]);_0x2b9e6b[_0xc5d7('0x21')]=_0x3682e6[_0xc5d7('0x21')];writeDB(_0x2b9e6b);});delete recordings[_0x920694[_0xc5d7('0x5')]];}}catch(_0xb74f73){utils['error'](util['format']('[%s][recordings][hangup]',_0x920694[_0xc5d7('0x5')]),_0xb74f73);}};exports[_0xc5d7('0x33')]=function(_0x10a637){try{if(!_[_0xc5d7('0x18')](recordings[_0x10a637[_0xc5d7('0x5')]])){utils['debug'](util[_0xc5d7('0xf')]('[%s][recordings][newexten]',_0x10a637['uniqueid']),_0x10a637);utils[_0xc5d7('0x2')](util[_0xc5d7('0xf')](_0xc5d7('0x34'),_0x10a637['uniqueid'],_0x10a637[_0xc5d7('0x35')],_0x10a637[_0xc5d7('0x36')]));if(_0x10a637['application'][_0xc5d7('0x37')]()==_0xc5d7('0x38')&&_[_0xc5d7('0x39')](_0x10a637[_0xc5d7('0x36')][_0xc5d7('0x37')](),_0xc5d7('0x3a'))){var _0x4ab3d8=_0x10a637[_0xc5d7('0x36')][_0xc5d7('0x3b')]('=');var _0x53a6b6=_0x4ab3d8[0x0]['substring'](_0x4ab3d8[0x0][_0xc5d7('0x3c')]('(')+0x1,_0x4ab3d8[0x0][_0xc5d7('0x3c')](')'));var _0x19cf9e=_0x4ab3d8[0x1];recordings[_0x10a637[_0xc5d7('0x5')]][_0x53a6b6]=_0x19cf9e;}}}catch(_0x3d4147){utils[_0xc5d7('0x14')](util[_0xc5d7('0xf')](_0xc5d7('0x3d'),_0x10a637[_0xc5d7('0x5')]),_0x3d4147);}};exports['queuecallerjoin']=function(_0x166923){try{if(!_[_0xc5d7('0x18')](recordings[_0x166923[_0xc5d7('0x5')]])){utils[_0xc5d7('0x16')](util[_0xc5d7('0xf')](_0xc5d7('0x3e'),_0x166923[_0xc5d7('0x5')]),_0x166923);utils['info'](util[_0xc5d7('0xf')](_0xc5d7('0x3f'),_0x166923[_0xc5d7('0x5')],_0x166923['queue']));recordings[_0x166923[_0xc5d7('0x5')]][_0xc5d7('0x40')]=_0x166923[_0xc5d7('0x40')];}}catch(_0x35b495){utils[_0xc5d7('0x14')](util[_0xc5d7('0xf')](_0xc5d7('0x3e'),_0x166923[_0xc5d7('0x5')]),_0x35b495);}};exports['blindtransfer']=function(_0x339281){try{utils[_0xc5d7('0x16')](util[_0xc5d7('0xf')](_0xc5d7('0x41'),_0x339281['uniqueid']),_0x339281);utils['info'](util[_0xc5d7('0xf')](_0xc5d7('0x42'),_0x339281[_0xc5d7('0x5')],_0x339281[_0xc5d7('0x43')],_0x339281['transferercalleridname'],_0x339281[_0xc5d7('0x44')],_0x339281[_0xc5d7('0x45')]));if(recordings[_0x339281[_0xc5d7('0x46')]]&&transfers[_0xc5d7('0x4')][_0x339281['transfereruniqueid']]){transfers[_0xc5d7('0x4')][_0x339281[_0xc5d7('0x46')]][_0xc5d7('0x47')]=!![];}}catch(_0x5c8990){utils[_0xc5d7('0x14')](util['format']('[%s][recordings][blindtransfer]',_0x339281[_0xc5d7('0x5')]),_0x5c8990);}};
\ No newline at end of file
index 8b76fa0..a9456bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f83=['origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfertargetchannel','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','util','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','attended','origtransfereruniqueid','uniqueid','type','request','CreateVoiceTransferReport','blinds','blindtransfer','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','error','attendedtransfer','debug','[%s][transfers][attendedtransfer]','origtransferercalleridnum','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten'];(function(_0x16cf22,_0x504218){var _0x113c09=function(_0x34df3f){while(--_0x34df3f){_0x16cf22['push'](_0x16cf22['shift']());}};_0x113c09(++_0x504218);}(_0x4f83,0x1ed));var _0x34f8=function(_0x39fd9b,_0x3a19ce){_0x39fd9b=_0x39fd9b-0x0;var _0x2c8143=_0x4f83[_0x39fd9b];return _0x2c8143;};'use strict';var _=require('lodash');var util=require(_0x34f8('0x0'));var utils=require(_0x34f8('0x1'));function writeDB(_0x34fbcf){utils[_0x34f8('0x2')](util[_0x34f8('0x3')](_0x34f8('0x4'),_0x34fbcf['type']===_0x34f8('0x5')?_0x34fbcf[_0x34f8('0x6')]:_0x34fbcf[_0x34f8('0x7')],_0x34fbcf[_0x34f8('0x8')]));utils[_0x34f8('0x9')](_0x34f8('0xa'),_0x34fbcf);}exports[_0x34f8('0xb')]={};exports[_0x34f8('0xc')]=function(_0xa2fa77){try{utils['debug'](util[_0x34f8('0x3')](_0x34f8('0xd'),_0xa2fa77['uniqueid']),_0xa2fa77);utils['info'](util[_0x34f8('0x3')](_0x34f8('0xe'),_0xa2fa77[_0x34f8('0x7')],_0xa2fa77[_0x34f8('0xf')],_0xa2fa77['transferercalleridname'],_0xa2fa77[_0x34f8('0x10')],_0xa2fa77[_0x34f8('0x11')]));_0xa2fa77['type']=_0x34f8('0x12');exports[_0x34f8('0xb')][_0xa2fa77[_0x34f8('0x13')]]=_0xa2fa77;writeDB(_0xa2fa77);}catch(_0x48f0f1){utils[_0x34f8('0x14')](util['format'](_0x34f8('0xd'),_0xa2fa77[_0x34f8('0x7')]),_0x48f0f1);}};exports[_0x34f8('0x15')]=function(_0x2d7e43){try{utils[_0x34f8('0x16')](util['format'](_0x34f8('0x17'),_0x2d7e43[_0x34f8('0x6')]),_0x2d7e43);utils[_0x34f8('0x2')](util['format']('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x2d7e43[_0x34f8('0x6')],_0x2d7e43[_0x34f8('0x18')],_0x2d7e43['origtransferercalleridname'],_0x2d7e43[_0x34f8('0x19')],_0x2d7e43[_0x34f8('0x1a')]));_0x2d7e43=_[_0x34f8('0x1b')](_0x2d7e43,{'transfererchannel':_0x2d7e43[_0x34f8('0x1c')],'transferercalleridnum':_0x2d7e43[_0x34f8('0x18')],'transferercalleridname':_0x2d7e43[_0x34f8('0x1d')],'transfererconnectedlinenum':_0x2d7e43[_0x34f8('0x1e')],'transfererconnectedlinename':_0x2d7e43[_0x34f8('0x1f')],'transfereraccountcode':_0x2d7e43[_0x34f8('0x20')],'transferercontext':_0x2d7e43[_0x34f8('0x21')],'transfererexten':_0x2d7e43[_0x34f8('0x22')],'transfererlinkedid':_0x2d7e43[_0x34f8('0x23')],'context':_0x2d7e43[_0x34f8('0x24')],'extension':_0x2d7e43[_0x34f8('0x25')],'type':_0x34f8('0x5')});if(_[_0x34f8('0x26')](_0x2d7e43['transfereechannel'])){_0x2d7e43=_[_0x34f8('0x1b')](_0x2d7e43,{'transfereechannel':_0x2d7e43[_0x34f8('0x27')],'transfereecalleridnum':_0x2d7e43[_0x34f8('0x19')],'transfereecalleridname':_0x2d7e43[_0x34f8('0x1a')],'transfereeconnectedlinenum':_0x2d7e43['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x2d7e43[_0x34f8('0x28')],'transfereeaccountcode':_0x2d7e43[_0x34f8('0x29')],'transfereecontext':_0x2d7e43[_0x34f8('0x2a')],'transfereeexten':_0x2d7e43[_0x34f8('0x2b')],'transfereelinkedid':_0x2d7e43['transfertargetlinkedid']});}writeDB(_0x2d7e43);}catch(_0x4bc3a5){utils[_0x34f8('0x14')](util[_0x34f8('0x3')]('[%s][transfers][attendedtransfer]',_0x2d7e43[_0x34f8('0x6')]),_0x4bc3a5);}};
\ No newline at end of file
+var _0x1446=['blindtransfer','info','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','error','[%s][transfers][blindtransfer]','attendedtransfer','debug','[%s][transfers][attendedtransfer]','origtransfereruniqueid','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridname','transfertargetcalleridnum','assign','origtransfererchannel','origtransferercalleridnum','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransfererexten','isNil','transfereechannel','transfertargetchannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','lodash','util','./utils','format','[%s][transfers][writeDB]\x20type:%s','type','attended','uniqueid','request','blinds'];(function(_0x2b4b3b,_0x2ff66c){var _0x4101a9=function(_0x2ca91c){while(--_0x2ca91c){_0x2b4b3b['push'](_0x2b4b3b['shift']());}};_0x4101a9(++_0x2ff66c);}(_0x1446,0x104));var _0x6144=function(_0x1618aa,_0x52dfbc){_0x1618aa=_0x1618aa-0x0;var _0x31fa40=_0x1446[_0x1618aa];return _0x31fa40;};'use strict';var _=require(_0x6144('0x0'));var util=require(_0x6144('0x1'));var utils=require(_0x6144('0x2'));function writeDB(_0xef7b5f){utils['info'](util[_0x6144('0x3')](_0x6144('0x4'),_0xef7b5f[_0x6144('0x5')]===_0x6144('0x6')?_0xef7b5f['origtransfereruniqueid']:_0xef7b5f[_0x6144('0x7')],_0xef7b5f[_0x6144('0x5')]));utils[_0x6144('0x8')]('CreateVoiceTransferReport',_0xef7b5f);}exports[_0x6144('0x9')]={};exports[_0x6144('0xa')]=function(_0x32c912){try{utils['debug'](util[_0x6144('0x3')]('[%s][transfers][blindtransfer]',_0x32c912[_0x6144('0x7')]),_0x32c912);utils[_0x6144('0xb')](util[_0x6144('0x3')](_0x6144('0xc'),_0x32c912[_0x6144('0x7')],_0x32c912['transferercalleridnum'],_0x32c912[_0x6144('0xd')],_0x32c912[_0x6144('0xe')],_0x32c912[_0x6144('0xf')]));_0x32c912['type']=_0x6144('0x10');exports[_0x6144('0x9')][_0x32c912[_0x6144('0x11')]]=_0x32c912;writeDB(_0x32c912);}catch(_0x5e021a){utils[_0x6144('0x12')](util[_0x6144('0x3')](_0x6144('0x13'),_0x32c912['uniqueid']),_0x5e021a);}};exports[_0x6144('0x14')]=function(_0x1078e0){try{utils[_0x6144('0x15')](util[_0x6144('0x3')](_0x6144('0x16'),_0x1078e0[_0x6144('0x17')]),_0x1078e0);utils['info'](util[_0x6144('0x3')](_0x6144('0x18'),_0x1078e0[_0x6144('0x17')],_0x1078e0['origtransferercalleridnum'],_0x1078e0[_0x6144('0x19')],_0x1078e0[_0x6144('0x1a')],_0x1078e0['transfertargetcalleridname']));_0x1078e0=_[_0x6144('0x1b')](_0x1078e0,{'transfererchannel':_0x1078e0[_0x6144('0x1c')],'transferercalleridnum':_0x1078e0[_0x6144('0x1d')],'transferercalleridname':_0x1078e0[_0x6144('0x19')],'transfererconnectedlinenum':_0x1078e0[_0x6144('0x1e')],'transfererconnectedlinename':_0x1078e0[_0x6144('0x1f')],'transfereraccountcode':_0x1078e0['origtransfereraccountcode'],'transferercontext':_0x1078e0[_0x6144('0x20')],'transfererexten':_0x1078e0[_0x6144('0x21')],'transfererlinkedid':_0x1078e0[_0x6144('0x22')],'context':_0x1078e0['origtransferercontext'],'extension':_0x1078e0[_0x6144('0x23')],'type':'attended'});if(_[_0x6144('0x24')](_0x1078e0[_0x6144('0x25')])){_0x1078e0=_[_0x6144('0x1b')](_0x1078e0,{'transfereechannel':_0x1078e0[_0x6144('0x26')],'transfereecalleridnum':_0x1078e0[_0x6144('0x1a')],'transfereecalleridname':_0x1078e0[_0x6144('0x27')],'transfereeconnectedlinenum':_0x1078e0[_0x6144('0x28')],'transfereeconnectedlinename':_0x1078e0[_0x6144('0x29')],'transfereeaccountcode':_0x1078e0[_0x6144('0x2a')],'transfereecontext':_0x1078e0[_0x6144('0x2b')],'transfereeexten':_0x1078e0[_0x6144('0x2c')],'transfereelinkedid':_0x1078e0['transfertargetlinkedid']});}writeDB(_0x1078e0);}catch(_0xa91e4a){utils[_0x6144('0x12')](util[_0x6144('0x3')](_0x6144('0x16'),_0x1078e0[_0x6144('0x17')]),_0xa91e4a);}};
\ No newline at end of file
index 3abfdf3..83fd420 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb912=['request','then','[utils][request]\x20name:%s','catch','GetUser','internal','name','interface','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','add','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','diffTime','diff','sumTime','isAfter','isBefore','bluebird','jayson/promise','util','http','info','inspect','debug','error'];(function(_0x5425f3,_0xd5fcab){var _0x1752b1=function(_0xb36004){while(--_0xb36004){_0x5425f3['push'](_0x5425f3['shift']());}};_0x1752b1(++_0xd5fcab);}(_0xb912,0xb8));var _0x2b91=function(_0x4362d0,_0x2cf37d){_0x4362d0=_0x4362d0-0x0;var _0x3bebdb=_0xb912[_0x4362d0];return _0x3bebdb;};'use strict';var BPromise=require(_0x2b91('0x0'));var jayson=require(_0x2b91('0x1'));var moment=require('moment');var util=require(_0x2b91('0x2'));var client=jayson['client'][_0x2b91('0x3')]({'port':0x2329});var logger=require('../../config/logger')('xdr');exports[_0x2b91('0x4')]=function(_0x22b81a,_0x5de01e){logger[_0x2b91('0x4')](_0x22b81a,_0x5de01e?util[_0x2b91('0x5')](_0x5de01e,{'showHidden':![],'depth':null}):'');};exports[_0x2b91('0x6')]=function(_0x3d5747,_0x56d4e2){logger['debug'](_0x3d5747,_0x56d4e2?util[_0x2b91('0x5')](_0x56d4e2,{'showHidden':![],'depth':null}):'');};exports[_0x2b91('0x7')]=function(_0x3fccba,_0x5b2fe7){logger[_0x2b91('0x7')](_0x3fccba,_0x5b2fe7?util[_0x2b91('0x5')](_0x5b2fe7,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0x576334,_0x86e870){return client[_0x2b91('0x8')](_0x576334,{'body':_0x86e870})[_0x2b91('0x9')](function(_0x1513cd){logger[_0x2b91('0x6')](_0x2b91('0xa'),_0x576334,_0x1513cd?util['inspect'](_0x1513cd,{'showHidden':![],'depth':null}):'');})[_0x2b91('0xb')](function(_0xf346b4){logger[_0x2b91('0x7')](_0x2b91('0xa'),_0x576334,_0xf346b4?util[_0x2b91('0x5')](_0xf346b4,{'showHidden':![],'depth':null}):'');});};function getUser(_0x52b445){return client[_0x2b91('0x8')](_0x2b91('0xc'),{'options':{'raw':!![],'attributes':['id',_0x2b91('0xd'),_0x2b91('0xe'),_0x2b91('0xf')],'where':_0x52b445,'limit':0x1}})['then'](function(_0x3f5853){logger[_0x2b91('0x6')](_0x2b91('0x10'),JSON[_0x2b91('0x11')](_0x52b445),_0x3f5853?util['inspect'](_0x3f5853,{'showHidden':![],'depth':null}):'');return _0x3f5853[_0x2b91('0x12')][_0x2b91('0x13')]?_0x3f5853[_0x2b91('0x12')][0x0]:null;});}exports[_0x2b91('0x14')]=function(_0x8843ba){return new BPromise(function(_0x2202e0,_0xdf57e2){if(_0x8843ba){return getUser({'internal':_0x8843ba})[_0x2b91('0x9')](function(_0x215a5d){logger[_0x2b91('0x4')](_0x2b91('0x15'),_0x8843ba,_0x215a5d?_0x2b91('0x16'):_0x2b91('0x17'));return _0x2202e0(_0x215a5d);})[_0x2b91('0xb')](function(_0x508de7){logger[_0x2b91('0x7')]('[utils][getUserByInternal]',_0x508de7?util['inspect'](_0x508de7,{'showHidden':![],'depth':null}):'');return _0x2202e0(null);});}return _0x2202e0(null);});};exports[_0x2b91('0x18')]=function(_0x37e6dc){return new BPromise(function(_0x2d72ec,_0xb5f270){if(_0x37e6dc){return getUser({'interface':_0x37e6dc})[_0x2b91('0x9')](function(_0x27d192){logger[_0x2b91('0x4')](_0x2b91('0x19'),_0x37e6dc,_0x27d192?_0x2b91('0x16'):_0x2b91('0x17'));return _0x2d72ec(_0x27d192);})['catch'](function(_0x2dc53f){logger[_0x2b91('0x7')](_0x2b91('0x1a'),_0x2dc53f?util[_0x2b91('0x5')](_0x2dc53f,{'showHidden':![],'depth':null}):'');return _0x2d72ec(null);});}return _0x2d72ec(null);});};exports[_0x2b91('0x1b')]=function(_0x201f92){return new BPromise(function(_0x1508f7,_0x3c8706){if(_0x201f92){return getUser({'name':_0x201f92})[_0x2b91('0x9')](function(_0x1a0d68){logger[_0x2b91('0x4')](_0x2b91('0x1c'),_0x201f92,_0x1a0d68?_0x2b91('0x16'):_0x2b91('0x17'));return _0x1508f7(_0x1a0d68);})[_0x2b91('0xb')](function(_0x38a735){logger[_0x2b91('0x7')](_0x2b91('0x1d'),_0x38a735?util[_0x2b91('0x5')](_0x38a735,{'showHidden':![],'depth':null}):'');return _0x1508f7(null);});}return _0x1508f7(null);});};exports[_0x2b91('0x1e')]=function(_0x2fc8f8){return new BPromise(function(_0x3ab28b,_0x548572){if(_0x2fc8f8){return client[_0x2b91('0x8')](_0x2b91('0x1f'),{'options':{'raw':!![],'attributes':['id',_0x2b91('0xe'),'type',_0x2b91('0x20'),_0x2b91('0x21')],'where':{'name':_0x2fc8f8},'limit':0x1}})[_0x2b91('0x9')](function(_0x2d7234){logger[_0x2b91('0x6')](_0x2b91('0x22'),_0x2fc8f8,_0x2d7234?util[_0x2b91('0x5')](_0x2d7234,{'showHidden':![],'depth':null}):'');logger['info'](_0x2b91('0x23'),_0x2fc8f8,_0x2d7234?_0x2b91('0x16'):_0x2b91('0x17'));return _0x3ab28b(_0x2d7234[_0x2b91('0x12')]['length']?_0x2d7234['result'][0x0]:null);})[_0x2b91('0xb')](function(_0x16696b){logger[_0x2b91('0x7')](_0x2b91('0x24'),_0x16696b?util[_0x2b91('0x5')](_0x16696b,{'showHidden':![],'depth':null}):'');return _0x3ab28b(null);});}return _0x3ab28b(null);});};exports['addTime']=function(_0x2515c4,_0x56e937){return moment(_0x2515c4)[_0x2b91('0x25')](_0x56e937,_0x2b91('0x26'))[_0x2b91('0x27')](_0x2b91('0x28'));};exports[_0x2b91('0x29')]=function(_0x5b2529,_0x412124){return moment(_0x5b2529)[_0x2b91('0x2a')](_0x412124,_0x2b91('0x26'))[_0x2b91('0x27')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x2b91('0x2b')]=function(_0x5732de,_0x46212b){return moment(_0x5732de)[_0x2b91('0x2c')](moment(_0x46212b),_0x2b91('0x26'));};exports[_0x2b91('0x2d')]=function(_0x552e09,_0x369896){return parseInt(_0x552e09,0xa)+parseInt(_0x369896,0xa);};exports['now']=function(){return moment()['format'](_0x2b91('0x28'));};exports[_0x2b91('0x2e')]=function(_0x4b502d,_0x51a96f){if(_0x51a96f){return moment(_0x4b502d)[_0x2b91('0x2e')](_0x51a96f);}return!![];};exports[_0x2b91('0x2f')]=function(_0x562f16,_0x3b6787){if(_0x3b6787){return moment(_0x562f16)[_0x2b91('0x2f')](_0x3b6787);}else if(_0x562f16){return!![];}return![];};
\ No newline at end of file
+var _0x2838=['subtractTime','subtract','format','diffTime','sumTime','isAfter','isBefore','moment','util','http','xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','catch','GetUser','name','stringify','result','[utils][getUserByInternal]','[utils][getUserByInterface]\x20interface:%s\x20%s','found','notfound','[utils][getUserByInterface]','[utils][getUserByName]\x20name:%s\x20%s','getVoiceQueueByName','GetVoiceQueue','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s\x20%s','length','[utils][getVoiceQueueByName]','addTime','seconds','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x4b9e48,_0x3e80f9){var _0x26fdc4=function(_0x41c163){while(--_0x41c163){_0x4b9e48['push'](_0x4b9e48['shift']());}};_0x26fdc4(++_0x3e80f9);}(_0x2838,0x1bf));var _0x8283=function(_0x19cbac,_0x4a7597){_0x19cbac=_0x19cbac-0x0;var _0x180da3=_0x2838[_0x19cbac];return _0x180da3;};'use strict';var BPromise=require('bluebird');var jayson=require('jayson/promise');var moment=require(_0x8283('0x0'));var util=require(_0x8283('0x1'));var client=jayson['client'][_0x8283('0x2')]({'port':0x2329});var logger=require('../../config/logger')(_0x8283('0x3'));exports[_0x8283('0x4')]=function(_0x63ba49,_0x3f9461){logger['info'](_0x63ba49,_0x3f9461?util[_0x8283('0x5')](_0x3f9461,{'showHidden':![],'depth':null}):'');};exports[_0x8283('0x6')]=function(_0x51695e,_0x45ef67){logger['debug'](_0x51695e,_0x45ef67?util['inspect'](_0x45ef67,{'showHidden':![],'depth':null}):'');};exports[_0x8283('0x7')]=function(_0x345776,_0x3925be){logger[_0x8283('0x7')](_0x345776,_0x3925be?util['inspect'](_0x3925be,{'showHidden':![],'depth':null}):'');};exports[_0x8283('0x8')]=function(_0x5e088d,_0x187d00){return client[_0x8283('0x8')](_0x5e088d,{'body':_0x187d00})[_0x8283('0x9')](function(_0x35a13c){logger[_0x8283('0x6')](_0x8283('0xa'),_0x5e088d,_0x35a13c?util[_0x8283('0x5')](_0x35a13c,{'showHidden':![],'depth':null}):'');})[_0x8283('0xb')](function(_0xf2c3b3){logger[_0x8283('0x7')](_0x8283('0xa'),_0x5e088d,_0xf2c3b3?util['inspect'](_0xf2c3b3,{'showHidden':![],'depth':null}):'');});};function getUser(_0x51e1a5){return client[_0x8283('0x8')](_0x8283('0xc'),{'options':{'raw':!![],'attributes':['id','internal',_0x8283('0xd'),'interface'],'where':_0x51e1a5,'limit':0x1}})['then'](function(_0x288d50){logger[_0x8283('0x6')]('[utils][getUser]\x20where:%s',JSON[_0x8283('0xe')](_0x51e1a5),_0x288d50?util['inspect'](_0x288d50,{'showHidden':![],'depth':null}):'');return _0x288d50[_0x8283('0xf')]['length']?_0x288d50['result'][0x0]:null;});}exports['getUserByInternal']=function(_0x1f05b2){return new BPromise(function(_0x50f207,_0x264550){if(_0x1f05b2){return getUser({'internal':_0x1f05b2})[_0x8283('0x9')](function(_0x5f179d){logger['info']('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x1f05b2,_0x5f179d?'found':'notfound');return _0x50f207(_0x5f179d);})[_0x8283('0xb')](function(_0x10255e){logger[_0x8283('0x7')](_0x8283('0x10'),_0x10255e?util[_0x8283('0x5')](_0x10255e,{'showHidden':![],'depth':null}):'');return _0x50f207(null);});}return _0x50f207(null);});};exports['getUserByInterface']=function(_0x43315d){return new BPromise(function(_0x366943,_0x5b9c55){if(_0x43315d){return getUser({'interface':_0x43315d})['then'](function(_0x56c5e1){logger[_0x8283('0x4')](_0x8283('0x11'),_0x43315d,_0x56c5e1?_0x8283('0x12'):_0x8283('0x13'));return _0x366943(_0x56c5e1);})[_0x8283('0xb')](function(_0x34b80f){logger[_0x8283('0x7')](_0x8283('0x14'),_0x34b80f?util['inspect'](_0x34b80f,{'showHidden':![],'depth':null}):'');return _0x366943(null);});}return _0x366943(null);});};exports['getUserByName']=function(_0x3c15c2){return new BPromise(function(_0x5ec209,_0x168b3f){if(_0x3c15c2){return getUser({'name':_0x3c15c2})[_0x8283('0x9')](function(_0x1cc2a3){logger[_0x8283('0x4')](_0x8283('0x15'),_0x3c15c2,_0x1cc2a3?_0x8283('0x12'):_0x8283('0x13'));return _0x5ec209(_0x1cc2a3);})[_0x8283('0xb')](function(_0xaf8efa){logger[_0x8283('0x7')]('[utils][getUserByName]',_0xaf8efa?util[_0x8283('0x5')](_0xaf8efa,{'showHidden':![],'depth':null}):'');return _0x5ec209(null);});}return _0x5ec209(null);});};exports[_0x8283('0x16')]=function(_0x13b7be){return new BPromise(function(_0x2334e6,_0x51ea96){if(_0x13b7be){return client[_0x8283('0x8')](_0x8283('0x17'),{'options':{'raw':!![],'attributes':['id',_0x8283('0xd'),_0x8283('0x18'),_0x8283('0x19'),_0x8283('0x1a')],'where':{'name':_0x13b7be},'limit':0x1}})['then'](function(_0x1112db){logger[_0x8283('0x6')]('[utils][getVoiceQueueByName]\x20name:%s',_0x13b7be,_0x1112db?util['inspect'](_0x1112db,{'showHidden':![],'depth':null}):'');logger[_0x8283('0x4')](_0x8283('0x1b'),_0x13b7be,_0x1112db?_0x8283('0x12'):_0x8283('0x13'));return _0x2334e6(_0x1112db[_0x8283('0xf')][_0x8283('0x1c')]?_0x1112db['result'][0x0]:null);})[_0x8283('0xb')](function(_0x1a401b){logger['error'](_0x8283('0x1d'),_0x1a401b?util['inspect'](_0x1a401b,{'showHidden':![],'depth':null}):'');return _0x2334e6(null);});}return _0x2334e6(null);});};exports[_0x8283('0x1e')]=function(_0x3494be,_0x5baecc){return moment(_0x3494be)['add'](_0x5baecc,_0x8283('0x1f'))['format'](_0x8283('0x20'));};exports[_0x8283('0x21')]=function(_0x1819c7,_0x25181c){return moment(_0x1819c7)[_0x8283('0x22')](_0x25181c,_0x8283('0x1f'))[_0x8283('0x23')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x8283('0x24')]=function(_0x13710b,_0x463aaa){return moment(_0x13710b)['diff'](moment(_0x463aaa),_0x8283('0x1f'));};exports[_0x8283('0x25')]=function(_0x812138,_0x4716b0){return parseInt(_0x812138,0xa)+parseInt(_0x4716b0,0xa);};exports['now']=function(){return moment()['format'](_0x8283('0x20'));};exports[_0x8283('0x26')]=function(_0x1a54f1,_0x25f342){if(_0x25f342){return moment(_0x1a54f1)[_0x8283('0x26')](_0x25f342);}return!![];};exports[_0x8283('0x27')]=function(_0x349d88,_0x40af6f){if(_0x40af6f){return moment(_0x349d88)['isBefore'](_0x40af6f);}else if(_0x349d88){return!![];}return![];};
\ No newline at end of file
index b9a7cd9..53b31d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbeed=['url','statusCode','responseTime','inspect','use','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','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)','remoteAddress','other','agent_name','setupLoggers','fs-extra','lodash','express-winston','path','./loggers','./safe-template','safeTemplate','./mask-sensitive-data','maskSensitiveData','join','/var','log','role','name','client','catch','then','user','no-user','data','timestamp','auth','set','client-side-logger','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','format','method','headers','x-forwarded-for','connection'];(function(_0x596439,_0x21b380){var _0x11f5cf=function(_0x5bd4cc){while(--_0x5bd4cc){_0x596439['push'](_0x596439['shift']());}};_0x11f5cf(++_0x21b380);}(_0xbeed,0xc5));var _0xdbee=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xbeed[_0x2dafbe];return _0x58a45a;};var fs=require(_0xdbee('0x0'));var _=require(_0xdbee('0x1'));var ewinston=require(_0xdbee('0x2'));var path=require(_0xdbee('0x3'));var util=require('util');var fileLogger=require(_0xdbee('0x4'))['fileLogger'];var safeTemplate=require(_0xdbee('0x5'))[_0xdbee('0x6')];var maskSensitiveData=require(_0xdbee('0x7'))[_0xdbee('0x8')];function ClientSideLogger(){function _0x196e56(_0x1455e2){var _0x3f4b0a=path[_0xdbee('0x9')](_0xdbee('0xa'),_0xdbee('0xb'),'xcally');var _0x2dc0c5=path[_0xdbee('0x9')]('client',_0x1455e2[_0xdbee('0xc')]+'-'+_0x1455e2[_0xdbee('0xd')]);return fs['ensureDir'](path[_0xdbee('0x9')](_0x3f4b0a,_0x2dc0c5))['then'](function(){var _0xe3219e=fileLogger(_0xdbee('0xe'),path[_0xdbee('0x9')](_0x3f4b0a,_0x2dc0c5));return _0xe3219e;})[_0xdbee('0xf')](function(_0x2a6333){throw _0x2a6333;});}this[_0xdbee('0xb')]=function(_0xb982f5,_0x43c659,_0xea9f42,_0x5dd537){return _0x196e56(_0xb982f5['user'])[_0xdbee('0x10')](function(_0x341d51){var _0x197bb6=_0x341d51[_0x43c659];return _0x197bb6;})['then'](function(_0x184dd7){var _0x33b8d1=_0xb982f5[_0xdbee('0x11')]?_0xb982f5[_0xdbee('0x11')]['id']:_0xdbee('0x12');var _0x9968e0=_0x5dd537[_0xdbee('0x13')];var _0x2ea8c0=_0x5dd537[_0xdbee('0x14')];var _0x33d0e0=new Date(Number(_0x2ea8c0));return _0x184dd7(_0x33b8d1,_0x33d0e0,_0xea9f42,_0x9968e0);})[_0xdbee('0xf')](function(_0x2068b4){fileLogger('client')['error'](_0x2068b4);});};}function setupLoggers(_0x66f2bb){return new Promise(function(_0x260604){var _0x2b6aa7=new ClientSideLogger();var _0xf6692b=fileLogger('api');var _0x4cc356=fileLogger(_0xdbee('0x15'));_0x66f2bb[_0xdbee('0x16')](_0xdbee('0x17'),_0x2b6aa7);_0x66f2bb['use'](ewinston[_0xdbee('0x18')]({'winstonInstance':_0xf6692b,'meta':![],'statusLevels':!![],'msg':function(_0x366006,_0x50c30e){var _0x1deb5a=_0xdbee('0x19');if(!_[_0xdbee('0x1a')](_0x366006[_0xdbee('0x1b')])){_0x1deb5a+='\x20body=%s';var _0x6b956c=_0x366006[_0xdbee('0x1b')];maskSensitiveData(_0x6b956c);}return safeTemplate(util[_0xdbee('0x1c')](_0x1deb5a,_0x366006[_0xdbee('0x1d')],_0x366006[_0xdbee('0x1e')][_0xdbee('0x1f')]?_0x366006[_0xdbee('0x1e')][_0xdbee('0x1f')]:_0x366006[_0xdbee('0x20')]['remoteAddress']||_0x366006['ip'],_0x366006[_0xdbee('0x21')],_0x50c30e[_0xdbee('0x22')],_0x50c30e[_0xdbee('0x23')],_0x366006['user']?_0x366006[_0xdbee('0x11')]['id']:null,_0x366006[_0xdbee('0x11')]?_0x366006['user'][_0xdbee('0xd')]:null,_0x366006[_0xdbee('0x11')]?_0x366006[_0xdbee('0x11')][_0xdbee('0xc')]:null,_0x6b956c?util[_0xdbee('0x24')](_0x6b956c,![],null):''));}}));_0x66f2bb[_0xdbee('0x25')](ewinston['logger']({'winstonInstance':_0x4cc356,'meta':![],'statusLevels':!![],'msg':function(_0x382c56,_0x4b95ce){var _0x2b6d78=_0xdbee('0x26');if(_0x382c56[_0xdbee('0x1b')]&&_0x382c56[_0xdbee('0x1b')][_0xdbee('0x27')]&&_0x382c56[_0xdbee('0x1b')][_0xdbee('0x28')]){_0x2b6d78=_0xdbee('0x29');}return util[_0xdbee('0x1c')](_0x2b6d78,_0x382c56['method'],_0x382c56[_0xdbee('0x1e')][_0xdbee('0x1f')]?_0x382c56[_0xdbee('0x1e')][_0xdbee('0x1f')]:_0x382c56[_0xdbee('0x20')][_0xdbee('0x2a')]||_0x382c56['ip'],_0x382c56['url'],_0x4b95ce['statusCode'],_0x4b95ce[_0xdbee('0x23')],_0x382c56['user']?_0x382c56[_0xdbee('0x11')]['id']:null,_0x382c56[_0xdbee('0x11')]?_0x382c56['user'][_0xdbee('0xd')]:null,_0x382c56[_0xdbee('0x11')]?_0x382c56[_0xdbee('0x11')]['role']:null,_0x382c56['body']&&_0x382c56[_0xdbee('0x1b')]['device']?_0x382c56[_0xdbee('0x1b')][_0xdbee('0x27')]:_0xdbee('0x2b'),_0x382c56[_0xdbee('0x1b')]&&_0x382c56['body'][_0xdbee('0x28')]?_0x382c56[_0xdbee('0x1b')][_0xdbee('0x28')]:'',_0x382c56[_0xdbee('0x1b')]&&_0x382c56[_0xdbee('0x1b')][_0xdbee('0x2c')]?_0x382c56['body'][_0xdbee('0x2c')]:'');},'ignoreRoute':function(_0x154996){var _0x5cd209=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x5cd209['test'](_0x154996[_0xdbee('0x21')]);}}));return _0x260604();});}exports[_0xdbee('0x2d')]=setupLoggers;
\ No newline at end of file
+var _0x7954=['use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','\x20body=%s','headers','x-forwarded-for','connection','remoteAddress','url','statusCode','responseTime','user','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)','format','method','other','agent_name','test','fs-extra','lodash','express-winston','path','util','fileLogger','./safe-template','./mask-sensitive-data','maskSensitiveData','join','/var','client','role','name','then','catch','log','no-user','error','api','auth','client-side-logger'];(function(_0x17c1d8,_0x283c65){var _0x56cef1=function(_0x48f177){while(--_0x48f177){_0x17c1d8['push'](_0x17c1d8['shift']());}};_0x56cef1(++_0x283c65);}(_0x7954,0x11e));var _0x4795=function(_0x1b4bca,_0x47468e){_0x1b4bca=_0x1b4bca-0x0;var _0x36b4c=_0x7954[_0x1b4bca];return _0x36b4c;};var fs=require(_0x4795('0x0'));var _=require(_0x4795('0x1'));var ewinston=require(_0x4795('0x2'));var path=require(_0x4795('0x3'));var util=require(_0x4795('0x4'));var fileLogger=require('./loggers')[_0x4795('0x5')];var safeTemplate=require(_0x4795('0x6'))['safeTemplate'];var maskSensitiveData=require(_0x4795('0x7'))[_0x4795('0x8')];function ClientSideLogger(){function _0x50cab6(_0x3f67a6){var _0x48c8ce=path[_0x4795('0x9')](_0x4795('0xa'),'log','xcally');var _0x33f2bd=path[_0x4795('0x9')](_0x4795('0xb'),_0x3f67a6[_0x4795('0xc')]+'-'+_0x3f67a6[_0x4795('0xd')]);return fs['ensureDir'](path[_0x4795('0x9')](_0x48c8ce,_0x33f2bd))[_0x4795('0xe')](function(){var _0x41f476=fileLogger('client',path[_0x4795('0x9')](_0x48c8ce,_0x33f2bd));return _0x41f476;})[_0x4795('0xf')](function(_0x3d33a4){throw _0x3d33a4;});}this[_0x4795('0x10')]=function(_0x516484,_0x367681,_0x2de08d,_0x22dc0b){return _0x50cab6(_0x516484['user'])['then'](function(_0x44733a){var _0xfedb=_0x44733a[_0x367681];return _0xfedb;})[_0x4795('0xe')](function(_0x4da955){var _0x28c43e=_0x516484['user']?_0x516484['user']['id']:_0x4795('0x11');var _0x49646b=_0x22dc0b['data'];var _0x1a4209=_0x22dc0b['timestamp'];var _0x5bbbad=new Date(Number(_0x1a4209));return _0x4da955(_0x28c43e,_0x5bbbad,_0x2de08d,_0x49646b);})[_0x4795('0xf')](function(_0x40118c){fileLogger(_0x4795('0xb'))[_0x4795('0x12')](_0x40118c);});};}function setupLoggers(_0xf6c4bd){return new Promise(function(_0x2784d7){var _0x333817=new ClientSideLogger();var _0x545c5f=fileLogger(_0x4795('0x13'));var _0x231f8f=fileLogger(_0x4795('0x14'));_0xf6c4bd['set'](_0x4795('0x15'),_0x333817);_0xf6c4bd[_0x4795('0x16')](ewinston[_0x4795('0x17')]({'winstonInstance':_0x545c5f,'meta':![],'statusLevels':!![],'msg':function(_0x529649,_0x401de4){var _0x522764=_0x4795('0x18');if(!_[_0x4795('0x19')](_0x529649[_0x4795('0x1a')])){_0x522764+=_0x4795('0x1b');var _0x1ae49f=_0x529649[_0x4795('0x1a')];maskSensitiveData(_0x1ae49f);}return safeTemplate(util['format'](_0x522764,_0x529649['method'],_0x529649[_0x4795('0x1c')][_0x4795('0x1d')]?_0x529649[_0x4795('0x1c')][_0x4795('0x1d')]:_0x529649[_0x4795('0x1e')][_0x4795('0x1f')]||_0x529649['ip'],_0x529649[_0x4795('0x20')],_0x401de4[_0x4795('0x21')],_0x401de4[_0x4795('0x22')],_0x529649[_0x4795('0x23')]?_0x529649[_0x4795('0x23')]['id']:null,_0x529649[_0x4795('0x23')]?_0x529649[_0x4795('0x23')][_0x4795('0xd')]:null,_0x529649[_0x4795('0x23')]?_0x529649['user'][_0x4795('0xc')]:null,_0x1ae49f?util['inspect'](_0x1ae49f,![],null):''));}}));_0xf6c4bd[_0x4795('0x16')](ewinston[_0x4795('0x17')]({'winstonInstance':_0x231f8f,'meta':![],'statusLevels':!![],'msg':function(_0x977982,_0x274c09){var _0x15f7a7='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x977982[_0x4795('0x1a')]&&_0x977982[_0x4795('0x1a')][_0x4795('0x24')]&&_0x977982['body'][_0x4795('0x25')]){_0x15f7a7=_0x4795('0x26');}return util[_0x4795('0x27')](_0x15f7a7,_0x977982[_0x4795('0x28')],_0x977982[_0x4795('0x1c')][_0x4795('0x1d')]?_0x977982['headers'][_0x4795('0x1d')]:_0x977982['connection'][_0x4795('0x1f')]||_0x977982['ip'],_0x977982['url'],_0x274c09[_0x4795('0x21')],_0x274c09[_0x4795('0x22')],_0x977982[_0x4795('0x23')]?_0x977982['user']['id']:null,_0x977982[_0x4795('0x23')]?_0x977982[_0x4795('0x23')][_0x4795('0xd')]:null,_0x977982[_0x4795('0x23')]?_0x977982[_0x4795('0x23')]['role']:null,_0x977982[_0x4795('0x1a')]&&_0x977982[_0x4795('0x1a')][_0x4795('0x24')]?_0x977982[_0x4795('0x1a')][_0x4795('0x24')]:_0x4795('0x29'),_0x977982[_0x4795('0x1a')]&&_0x977982[_0x4795('0x1a')][_0x4795('0x25')]?_0x977982[_0x4795('0x1a')][_0x4795('0x25')]:'',_0x977982[_0x4795('0x1a')]&&_0x977982[_0x4795('0x1a')][_0x4795('0x2a')]?_0x977982['body']['agent_name']:'');},'ignoreRoute':function(_0x1f82fd){var _0x24b208=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x24b208[_0x4795('0x2b')](_0x1f82fd[_0x4795('0x20')]);}}));return _0x2784d7();});}exports['setupLoggers']=setupLoggers;
\ No newline at end of file
index a335abe..2911546 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb054=['message','{{{','replace','}}}','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','meta','stringify','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','transports','Console','warn','Logger','File','error','%s-%s','consoleLogger','fileLogger','winston','debugLevel','info','redBG\x20white','red','bold\x20yellow','bold\x20white','bold\x20green','bold\x20magenta','bold\x20blue','addColors','/var/log/xcally','join','format','%s-%s.log'];(function(_0x38ff3f,_0x24a3dc){var _0x44013b=function(_0x2c4b01){while(--_0x2c4b01){_0x38ff3f['push'](_0x38ff3f['shift']());}};_0x44013b(++_0x24a3dc);}(_0xb054,0x189));var _0x4b05=function(_0x2a5f37,_0x34adf4){_0x2a5f37=_0x2a5f37-0x0;var _0x37789a=_0xb054[_0x2a5f37];return _0x37789a;};'use strict';var path=require('path');var util=require('util');var moment=require('moment');var winston=require(_0x4b05('0x0'));var config=require('../config/environment');var debugLevel=config[_0x4b05('0x1')]?config[_0x4b05('0x1')]['toLowerCase']():_0x4b05('0x2');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':_0x4b05('0x3'),'error':_0x4b05('0x4'),'warn':_0x4b05('0x5'),'info':'white','print':_0x4b05('0x6'),'success':_0x4b05('0x7'),'http':'gray','verbose':_0x4b05('0x8'),'debug':_0x4b05('0x9'),'silly':'bold\x20cyan'};winston[_0x4b05('0xa')](XC_LOG_COLORS);function getLogFileName(_0x489f1d,_0x3075e5,_0x42e3a8){var _0x304b0e=_0x489f1d||_0x4b05('0xb');return path[_0x4b05('0xc')](_0x304b0e,util[_0x4b05('0xd')](_0x4b05('0xe'),_0x3075e5,_0x42e3a8));}function formatter(_0x1d8210,_0x51990a){_0x51990a['message']=_0x51990a[_0x4b05('0xf')]['replace'](/@@{/g,_0x4b05('0x10'))[_0x4b05('0x11')](/}@@/g,_0x4b05('0x12'))[_0x4b05('0x11')](/@{/g,'{{')[_0x4b05('0x11')](/}@/g,'}}');return util[_0x4b05('0xd')]('[%s]\x20[%s]\x20%s\x20-\x20%s',moment()['format'](_0x4b05('0x13')),_0x51990a[_0x4b05('0x14')][_0x4b05('0x15')](),_0x1d8210,_0x51990a[_0x4b05('0xf')]);}function fileFormat(_0x1169a7,_0x24cb52){_0x24cb52[_0x4b05('0xf')]=_0x24cb52[_0x4b05('0xf')]['replace'](/@@{/g,'{{{')[_0x4b05('0x11')](/}@@/g,'}}}')[_0x4b05('0x11')](/@{/g,'{{')[_0x4b05('0x11')](/}@/g,'}}');var _0x141cf4=_0x24cb52[_0x4b05('0x16')]&&Object['keys'](_0x24cb52[_0x4b05('0x16')])['length']?'\x0a\x09'+JSON[_0x4b05('0x17')](_0x24cb52[_0x4b05('0x16')]):'';return util[_0x4b05('0xd')](_0x4b05('0x18'),moment()[_0x4b05('0xd')](_0x4b05('0x13')),_0x24cb52['level'][_0x4b05('0x15')](),_0x1169a7,_0x24cb52['message'],_0x141cf4);}function consoleLogger(){var _0x592a28=new winston['Logger']({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x4b05('0x19'))][(_0x4b05('0x1a'))]({'level':_0x4b05('0x1b'),'json':![],'formatter':function(_0x59968f){return formatter('',_0x59968f);}})]});return _0x592a28;}function fileLogger(_0x38746e,_0x4cad1f){var _0x1feb8f=new winston[(_0x4b05('0x1c'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x4b05('0x19'))][(_0x4b05('0x1d'))]({'name':util[_0x4b05('0xd')]('%s-%s',_0x38746e,_0x4b05('0x1e')),'filename':getLogFileName(_0x4cad1f,_0x38746e,'error'),'level':_0x4b05('0x1e'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x2e8408){return fileFormat(_0x38746e,_0x2e8408);}}),new winston[(_0x4b05('0x19'))][(_0x4b05('0x1d'))]({'name':util[_0x4b05('0xd')](_0x4b05('0x1f'),_0x38746e,debugLevel),'filename':getLogFileName(_0x4cad1f,_0x38746e,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x40b068){return fileFormat(_0x38746e,_0x40b068);}}),new winston[(_0x4b05('0x19'))][(_0x4b05('0x1a'))]({'level':_0x4b05('0x1b'),'json':![],'formatter':function(_0x6e5c7a){return fileFormat(_0x38746e,_0x6e5c7a);}})]});return _0x1feb8f;}exports[_0x4b05('0x20')]=consoleLogger;exports[_0x4b05('0x21')]=fileLogger;
\ No newline at end of file
+var _0x82eb=['consoleLogger','util','moment','../config/environment','debugLevel','info','redBG\x20white','red','bold\x20yellow','white','gray','bold\x20magenta','bold\x20blue','bold\x20cyan','addColors','/var/log/xcally','format','%s-%s.log','message','replace','{{{','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','toUpperCase','}}}','meta','length','stringify','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','level','Logger','transports','Console','warn','File','%s-%s','error'];(function(_0x3bbb8c,_0xc2f21c){var _0x522a94=function(_0x2216fb){while(--_0x2216fb){_0x3bbb8c['push'](_0x3bbb8c['shift']());}};_0x522a94(++_0xc2f21c);}(_0x82eb,0x1e2));var _0xb82e=function(_0x412f32,_0x205e7d){_0x412f32=_0x412f32-0x0;var _0x25a46b=_0x82eb[_0x412f32];return _0x25a46b;};'use strict';var path=require('path');var util=require(_0xb82e('0x0'));var moment=require(_0xb82e('0x1'));var winston=require('winston');var config=require(_0xb82e('0x2'));var debugLevel=config[_0xb82e('0x3')]?config['debugLevel']['toLowerCase']():_0xb82e('0x4');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':_0xb82e('0x5'),'error':_0xb82e('0x6'),'warn':_0xb82e('0x7'),'info':_0xb82e('0x8'),'print':'bold\x20white','success':'bold\x20green','http':_0xb82e('0x9'),'verbose':_0xb82e('0xa'),'debug':_0xb82e('0xb'),'silly':_0xb82e('0xc')};winston[_0xb82e('0xd')](XC_LOG_COLORS);function getLogFileName(_0x388dba,_0x435906,_0x35f570){var _0x3fe964=_0x388dba||_0xb82e('0xe');return path['join'](_0x3fe964,util[_0xb82e('0xf')](_0xb82e('0x10'),_0x435906,_0x35f570));}function formatter(_0x3e15a2,_0x3c905a){_0x3c905a[_0xb82e('0x11')]=_0x3c905a[_0xb82e('0x11')][_0xb82e('0x12')](/@@{/g,_0xb82e('0x13'))[_0xb82e('0x12')](/}@@/g,'}}}')[_0xb82e('0x12')](/@{/g,'{{')[_0xb82e('0x12')](/}@/g,'}}');return util[_0xb82e('0xf')](_0xb82e('0x14'),moment()['format'](_0xb82e('0x15')),_0x3c905a['level'][_0xb82e('0x16')](),_0x3e15a2,_0x3c905a[_0xb82e('0x11')]);}function fileFormat(_0x138fa2,_0x2d123a){_0x2d123a[_0xb82e('0x11')]=_0x2d123a[_0xb82e('0x11')]['replace'](/@@{/g,_0xb82e('0x13'))[_0xb82e('0x12')](/}@@/g,_0xb82e('0x17'))[_0xb82e('0x12')](/@{/g,'{{')[_0xb82e('0x12')](/}@/g,'}}');var _0xeda11b=_0x2d123a[_0xb82e('0x18')]&&Object['keys'](_0x2d123a[_0xb82e('0x18')])[_0xb82e('0x19')]?'\x0a\x09'+JSON[_0xb82e('0x1a')](_0x2d123a[_0xb82e('0x18')]):'';return util['format'](_0xb82e('0x1b'),moment()[_0xb82e('0xf')](_0xb82e('0x15')),_0x2d123a[_0xb82e('0x1c')][_0xb82e('0x16')](),_0x138fa2,_0x2d123a[_0xb82e('0x11')],_0xeda11b);}function consoleLogger(){var _0x154596=new winston[(_0xb82e('0x1d'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xb82e('0x1e'))][(_0xb82e('0x1f'))]({'level':_0xb82e('0x20'),'json':![],'formatter':function(_0x106fe9){return formatter('',_0x106fe9);}})]});return _0x154596;}function fileLogger(_0x598432,_0x561a7e){var _0x58924a=new winston[(_0xb82e('0x1d'))]({'levels':XC_LOG_LEVELS,'transports':[new winston['transports'][(_0xb82e('0x21'))]({'name':util[_0xb82e('0xf')](_0xb82e('0x22'),_0x598432,_0xb82e('0x23')),'filename':getLogFileName(_0x561a7e,_0x598432,'error'),'level':_0xb82e('0x23'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x1f7fb1){return fileFormat(_0x598432,_0x1f7fb1);}}),new winston['transports'][(_0xb82e('0x21'))]({'name':util[_0xb82e('0xf')]('%s-%s',_0x598432,debugLevel),'filename':getLogFileName(_0x561a7e,_0x598432,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x4664a5){return fileFormat(_0x598432,_0x4664a5);}}),new winston[(_0xb82e('0x1e'))][(_0xb82e('0x1f'))]({'level':_0xb82e('0x20'),'json':![],'formatter':function(_0x3c8416){return fileFormat(_0x598432,_0x3c8416);}})]});return _0x58924a;}exports[_0xb82e('0x24')]=consoleLogger;exports['fileLogger']=fileLogger;
\ No newline at end of file
index e35186c..a0c9d46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['email','securityToken','code','accessKey','tenantId','token','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','calleridname','calleridnum','exten','vidaooApiKey','privateKey','secretaccesskey','user','pass','dsn','registry','oldPassword','length','isPlainObject','@@{','replace','}@@','includes','exports','maskSensitiveData','lodash','username','password','newPassword','apiKey','firstName','street','phone','fax'];(function(_0x1d6d2a,_0x24362e){var _0x399eb7=function(_0x10b6e0){while(--_0x10b6e0){_0x1d6d2a['push'](_0x1d6d2a['shift']());}};_0x399eb7(++_0x24362e);}(_0x2ef3,0xba));var _0x32ef=function(_0x10c974,_0x2d5af5){_0x10c974=_0x10c974-0x0;var _0x42bd1f=_0x2ef3[_0x10c974];return _0x42bd1f;};var _=require(_0x32ef('0x0'));var sensitiveFields=[_0x32ef('0x1'),_0x32ef('0x2'),_0x32ef('0x3'),_0x32ef('0x4'),_0x32ef('0x5'),'lastName',_0x32ef('0x6'),_0x32ef('0x7'),'mobile',_0x32ef('0x8'),_0x32ef('0x9'),'clientId','clientSecret',_0x32ef('0xa'),_0x32ef('0xb'),_0x32ef('0xc'),_0x32ef('0xd'),_0x32ef('0xe'),_0x32ef('0xf'),_0x32ef('0x10'),_0x32ef('0x11'),_0x32ef('0x12'),_0x32ef('0x13'),'consumerSecret','membername',_0x32ef('0x14'),_0x32ef('0x15'),_0x32ef('0x16'),_0x32ef('0x17'),'clientEmail',_0x32ef('0x18'),'accesskeyid',_0x32ef('0x19'),'key',_0x32ef('0x1a'),_0x32ef('0x1b'),'accountSid','localstationid',_0x32ef('0x1c'),'secret',_0x32ef('0x1d'),_0x32ef('0x1e')];function maskSensitiveData(_0x93d492){const _0x54c7f5=/(?!^)[\s\S](?!$)/g;if(_['isPlainObject'](_0x93d492)){for(const _0x55bf0b in _0x93d492){if(_['isArray'](_0x93d492[_0x55bf0b])){for(let _0x13db1a=0x0;_0x13db1a<_0x93d492[_0x55bf0b][_0x32ef('0x1f')];_0x13db1a++){maskSensitiveData(_0x93d492[_0x55bf0b][_0x13db1a]);}}else if(_[_0x32ef('0x20')](_0x93d492[_0x55bf0b])){maskSensitiveData(_0x93d492[_0x55bf0b]);}else if(_['isString'](_0x93d492[_0x55bf0b])){_0x93d492[_0x55bf0b]=_0x93d492[_0x55bf0b]['replace'](/{{{/g,_0x32ef('0x21'))[_0x32ef('0x22')](/}}}/g,_0x32ef('0x23'))['replace'](/{{/g,'@{')[_0x32ef('0x22')](/}}/g,'}@');if(_[_0x32ef('0x24')](sensitiveFields,_0x55bf0b)){_0x93d492[_0x55bf0b]=_0x93d492[_0x55bf0b]['replace'](_0x54c7f5,'*');}}}}}module[_0x32ef('0x25')][_0x32ef('0x26')]=maskSensitiveData;
\ No newline at end of file
+var _0xdb28=['registry','oldPassword','isPlainObject','length','isString','replace','@@{','}@@','exports','maskSensitiveData','lodash','username','password','newPassword','firstName','lastName','street','phone','mobile','email','clientId','code','accessKey','tenantId','token','channelSecret','accessToken','accessTokenSecret','consumerKey','consumerSecret','membername','calleridnum','exten','clientEmail','privateKey','accesskeyid','secretaccesskey','key','accountSid','localstationid','dsn','secret'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xdb28,0x106));var _0x8db2=function(_0x1393c3,_0x5ac09e){_0x1393c3=_0x1393c3-0x0;var _0x4212e7=_0xdb28[_0x1393c3];return _0x4212e7;};var _=require(_0x8db2('0x0'));var sensitiveFields=[_0x8db2('0x1'),_0x8db2('0x2'),_0x8db2('0x3'),'apiKey',_0x8db2('0x4'),_0x8db2('0x5'),_0x8db2('0x6'),_0x8db2('0x7'),_0x8db2('0x8'),'fax',_0x8db2('0x9'),_0x8db2('0xa'),'clientSecret','securityToken',_0x8db2('0xb'),_0x8db2('0xc'),_0x8db2('0xd'),_0x8db2('0xe'),_0x8db2('0xf'),_0x8db2('0x10'),_0x8db2('0x11'),'authToken',_0x8db2('0x12'),_0x8db2('0x13'),_0x8db2('0x14'),'calleridname',_0x8db2('0x15'),_0x8db2('0x16'),'vidaooApiKey',_0x8db2('0x17'),_0x8db2('0x18'),_0x8db2('0x19'),_0x8db2('0x1a'),_0x8db2('0x1b'),'user','pass',_0x8db2('0x1c'),_0x8db2('0x1d'),_0x8db2('0x1e'),_0x8db2('0x1f'),_0x8db2('0x20'),_0x8db2('0x21')];function maskSensitiveData(_0x2f177a){const _0x3c96a7=/(?!^)[\s\S](?!$)/g;if(_[_0x8db2('0x22')](_0x2f177a)){for(const _0x16c8c2 in _0x2f177a){if(_['isArray'](_0x2f177a[_0x16c8c2])){for(let _0x13b0f5=0x0;_0x13b0f5<_0x2f177a[_0x16c8c2][_0x8db2('0x23')];_0x13b0f5++){maskSensitiveData(_0x2f177a[_0x16c8c2][_0x13b0f5]);}}else if(_['isPlainObject'](_0x2f177a[_0x16c8c2])){maskSensitiveData(_0x2f177a[_0x16c8c2]);}else if(_[_0x8db2('0x24')](_0x2f177a[_0x16c8c2])){_0x2f177a[_0x16c8c2]=_0x2f177a[_0x16c8c2][_0x8db2('0x25')](/{{{/g,_0x8db2('0x26'))[_0x8db2('0x25')](/}}}/g,_0x8db2('0x27'))[_0x8db2('0x25')](/{{/g,'@{')['replace'](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x16c8c2)){_0x2f177a[_0x16c8c2]=_0x2f177a[_0x16c8c2][_0x8db2('0x25')](_0x3c96a7,'*');}}}}}module[_0x8db2('0x28')][_0x8db2('0x29')]=maskSensitiveData;
\ No newline at end of file
index e416255..6c03bfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e9=['string','map','isPlainObject','keys','reduce','exports','lodash','{\x20{\x20','\x20}\x20}'];(function(_0x7d91f6,_0x59bc67){var _0x3b9b29=function(_0x4886c2){while(--_0x4886c2){_0x7d91f6['push'](_0x7d91f6['shift']());}};_0x3b9b29(++_0x59bc67);}(_0x93e9,0xcc));var _0x993e=function(_0x44a2e6,_0x294394){_0x44a2e6=_0x44a2e6-0x0;var _0x2cbd04=_0x93e9[_0x44a2e6];return _0x2cbd04;};var _=require(_0x993e('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0xcf3bfd){return _0xcf3bfd==='{{'?_0x993e('0x1'):_0x993e('0x2');}function safeTemplate(_0x43b7b0){var _0x2a63eb=_0x43b7b0;if(typeof _0x43b7b0===_0x993e('0x3')){_0x2a63eb=_0x43b7b0['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array['isArray'](_0x43b7b0)){_0x2a63eb=_0x43b7b0[_0x993e('0x4')](function(_0x255045){return safeTemplate(_0x255045);});}else if(_[_0x993e('0x5')](_0x43b7b0)){_0x2a63eb=Object[_0x993e('0x6')](_0x43b7b0)[_0x993e('0x7')](function(_0x2366d9,_0x12ac94){_0x2366d9[_0x12ac94]=safeTemplate(_0x43b7b0[_0x12ac94]);return _0x2366d9;},{});}return _0x2a63eb;}module[_0x993e('0x8')]['safeTemplate']=safeTemplate;
\ No newline at end of file
+var _0xef0f=['lodash','{\x20{\x20','\x20}\x20}','string','replace','isArray','isPlainObject','keys','reduce','safeTemplate'];(function(_0x415903,_0x10a986){var _0x2ba565=function(_0x4e7abf){while(--_0x4e7abf){_0x415903['push'](_0x415903['shift']());}};_0x2ba565(++_0x10a986);}(_0xef0f,0x168));var _0xfef0=function(_0x296e51,_0x2e0b71){_0x296e51=_0x296e51-0x0;var _0x1e28f3=_0xef0f[_0x296e51];return _0x1e28f3;};var _=require(_0xfef0('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x581303){return _0x581303==='{{'?_0xfef0('0x1'):_0xfef0('0x2');}function safeTemplate(_0x19f865){var _0x4d29e5=_0x19f865;if(typeof _0x19f865===_0xfef0('0x3')){_0x4d29e5=_0x19f865[_0xfef0('0x4')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0xfef0('0x5')](_0x19f865)){_0x4d29e5=_0x19f865['map'](function(_0x2a6fcf){return safeTemplate(_0x2a6fcf);});}else if(_[_0xfef0('0x6')](_0x19f865)){_0x4d29e5=Object[_0xfef0('0x7')](_0x19f865)[_0xfef0('0x8')](function(_0xad43e,_0x11dfd7){_0xad43e[_0x11dfd7]=safeTemplate(_0x19f865[_0x11dfd7]);return _0xad43e;},{});}return _0x4d29e5;}module['exports'][_0xfef0('0x9')]=safeTemplate;
\ No newline at end of file